diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..cd72efb10 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.o +applet/ +*~ +*.orig +*.rej +*.bak +*.DS_Store +*.idea diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..8a378c787 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,160 @@ +--- +language: c + +before_install: + - pwd + - wget https://bootstrap.pypa.io/get-pip.py + - wget https://bintray.com/artifact/download/olikraus/u8glib/u8glib_arduino_v1.17.zip +install: + - sudo python get-pip.py + - sudo pip install ino + # add ppa for newer version of Arduino than available in ubuntu 12.04 + - sudo add-apt-repository ppa:michael-gruz/elektronik -y + - sudo apt-get update -q + - sudo apt-get install arduino +before_script: + # add U8glib, LiquidCrystal_I2C & LiquidTWI2 libraries + - sudo unzip u8glib_arduino_v1.17.zip -d /usr/share/arduino/libraries/ + - cd /usr/share/arduino/libraries/ + - sudo git clone https://github.com/kiyoshigawa/LiquidCrystal_I2C.git + - ls -la + - ls -la LiquidCrystal_I2C/ + - sudo git clone https://github.com/lincomatic/LiquidTWI2.git + # remove Robot_Control library to stop compile error! + - sudo rm -rf /usr/share/arduino/libraries/Robot_Control + # change back to home directory for compiling + - cd $TRAVIS_BUILD_DIR + # ino needs files in src directory + - ln -s Marlin src + # remove Marlin.pde as it confuses ino after it finds Marlin.ino + - rm Marlin/Marlin.pde +script: + # build default config + - ino build -m mega2560 + # backup configuration.h + - cp Marlin/Configuration.h Marlin/Configuration.h.backup + - cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup + # change extruder numbers from 1 to 2 + # commented out for the moment fails build but compiles fine in Arduino + #- sed -i 's/#define EXTRUDERS 1/#define EXTRUDERS 2/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 + # change extruder numbers from 2 to 3, needs to be a board with 3 extruders defined in pins.h + #- sed -i 's/#define MOTHERBOARD BOARD_ULTIMAKER/#define MOTHERBOARD BOARD_AZTEEG_X3_PRO/g' Marlin/Configuration.h + #- sed -i 's/#define EXTRUDERS 2/#define EXTRUDERS 3/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 + # enable PIDTEMPBED + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define PIDTEMPBED/#define PIDTEMPBED/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # enable THERMAL RUNAWAY PROTECTION for extruders & bed + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_PERIOD/#define THERMAL_RUNAWAY_PROTECTION_PERIOD/g' Marlin/Configuration.h + - sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS/#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS/g' Marlin/Configuration.h + - sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD/#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD/g' Marlin/Configuration.h + - sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS/#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # enable AUTO_BED_LEVELING + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define ENABLE_AUTO_BED_LEVELING/#define ENABLE_AUTO_BED_LEVELING/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # enable EEPROM_SETTINGS & EEPROM_CHITCHAT + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define EEPROM_SETTINGS/#define EEPROM_SETTINGS/g' Marlin/Configuration.h + - sed -i 's/\/\/#define EEPROM_CHITCHAT/#define EEPROM_CHITCHAT/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + ### LCDS ### + # ULTIMAKERCONTROLLER + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define ULTIMAKERCONTROLLER/#define ULTIMAKERCONTROLLER/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # MAKRPANEL + # Needs to use melzi and sanguino hardware + #- cp Marlin/Configuration.h.backup Marlin/Configuration.h + #- sed -i 's/\/\/#define MAKRPANEL/#define MAKRPANEL/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 + # REPRAP_DISCOUNT_SMART_CONTROLLER + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define REPRAP_DISCOUNT_SMART_CONTROLLER/#define REPRAP_DISCOUNT_SMART_CONTROLLER/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # G3D_PANE + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define G3D_PANEL/#define G3D_PANEL/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER/#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # REPRAPWORLD_KEYPAD + # Cant find configuration details to get it to compile + #- cp Marlin/Configuration.h.backup Marlin/Configuration.h + #- sed -i 's/\/\/#define ULTRA_LCD/#define ULTRA_LCD/g' Marlin/Configuration.h + #- sed -i 's/\/\/#define REPRAPWORLD_KEYPAD/#define REPRAPWORLD_KEYPAD/g' Marlin/Configuration.h + #- sed -i 's/\/\/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 + # RA_CONTROL_PANEL + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define RA_CONTROL_PANEL/#define RA_CONTROL_PANEL/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + ### I2C PANELS ### + # LCD_I2C_SAINSMART_YWROBOT + # Failing at the moment needs different library + #- cp Marlin/Configuration.h.backup Marlin/Configuration.h + #- sed -i 's/\/\/#define LCD_I2C_SAINSMART_YWROBOT/#define LCD_I2C_SAINSMART_YWROBOT/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 + # LCD_I2C_PANELOLU2 + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define LCD_I2C_PANELOLU2/#define LCD_I2C_PANELOLU2/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # LCD_I2C_VIKI + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define LCD_I2C_VIKI/#define LCD_I2C_VIKI/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # Enable filament sensor + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define FILAMENT_SENSOR/#define FILAMENT_SENSOR/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # Enable filament sensor with LCD display + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define ULTIMAKERCONTROLLER/#define ULTIMAKERCONTROLLER/g' Marlin/Configuration.h + - sed -i 's/\/\/#define FILAMENT_SENSOR/#define FILAMENT_SENSOR/g' Marlin/Configuration.h + - sed -i 's/\/\/#define FILAMENT_LCD_DISPLAY/#define FILAMENT_LCD_DISPLAY/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + ######## Example Configurations ############## + # Delta Config + - cp Marlin/example_configurations/delta/Configuration* Marlin/ + - rm -rf .build/ + - ino build -m mega2560 + # Makibox Config need to check board type for Teensy++ 2.0 + #- cp Marlin/example_configurations/makibox/Configuration* Marlin/ + #- rm -rf .build/ + #- ino build -m mega2560 + # SCARA Config + - cp Marlin/example_configurations/SCARA/Configuration* Marlin/ + - rm -rf .build/ + - ino build -m mega2560 + # tvrrug Config need to check board type for sanguino atmega644p + #- cp Marlin/example_configurations/tvrrug/Round2/Configuration* Marlin/ + #- rm -rf .build/ + #- ino build -m mega2560 + ######## Board Types ############# + - sed -i 's/#define MOTHERBOARD BOARD_RAMPS_13_EFB/#define MOTHERBOARD BOARD_DUEMILANOVE_328P/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m atmega328 \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/boards.txt b/ArduinoAddons/Arduino_0.xx/Gen6/boards.txt new file mode 100644 index 000000000..327d8d1c7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/boards.txt @@ -0,0 +1,35 @@ +############################################################## + +Generation_Series.name=Gen6 & Gen6 Deluxe +Generation_Series.upload.protocol=stk500 +Generation_Series.upload.maximum_size=63488 +Generation_Series.upload.speed=38400 +Generation_Series.bootloader.low_fuses=0xFF +Generation_Series.bootloader.high_fuses=0xDC +Generation_Series.bootloader.extended_fuses=0xFD +Generation_Series.bootloader.path=atmega644p +Generation_Series.bootloader.file=ATmegaBOOT_644P.hex +Generation_Series.bootloader.unlock_bits=0x3F +Generation_Series.bootloader.lock_bits=0x0F +Generation_Series.build.mcu=atmega644p +Generation_Series.build.f_cpu=16000000L +Generation_Series.build.core=arduino + + +############################################################## + + +Sanguinololu.name=Sanguinololu 1.2 and above +Sanguinololu.upload.protocol=stk500 +Sanguinololu.upload.maximum_size=63488 +Sanguinololu.upload.speed=38400 +Sanguinololu.bootloader.low_fuses=0xFF +Sanguinololu.bootloader.high_fuses=0xDC +Sanguinololu.bootloader.extended_fuses=0xFD +Sanguinololu.bootloader.path=atmega644p +Sanguinololu.bootloader.file=ATmegaBOOT_644P.hex +Sanguinololu.bootloader.unlock_bits=0x3F +Sanguinololu.bootloader.lock_bits=0x0F +Sanguinololu.build.mcu=atmega644p +Sanguinololu.build.f_cpu=16000000L +Sanguinololu.build.core=arduino diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/bootloaders/atmega644p/ATmegaBOOT.c b/ArduinoAddons/Arduino_0.xx/Gen6/bootloaders/atmega644p/ATmegaBOOT.c new file mode 100644 index 000000000..3b56dfd22 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/bootloaders/atmega644p/ATmegaBOOT.c @@ -0,0 +1,713 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega644 and ATmega644P */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* 20090131: Added 324P support from Alex Leone */ +/* Marius Kintel */ +/* 20080915: applied ADABoot mods for Sanguino 644P */ +/* Brian Riley */ +/* 20080711: hacked for Sanguino by Zach Smith */ +/* and Justin Day */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +#ifdef ADABOOT + #define NUM_LED_FLASHES 3 + #define ADABOOT_VER 1 +#endif + + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20080711: hack by Zach Hoeken */ +#define BAUD_RATE 38400 + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( +#if defined(__AVR_ATmega644P__) +#define SIG2 0x96 +#define SIG3 0x0A +#elif defined(__AVR_ATmega644__) +#define SIG2 0x96 +#define SIG3 0x09 +#elif defined(__AVR_ATmega324P__) +#define SIG2 0x95 +#define SIG3 0x08 +#endif +#define PAGE_SIZE 0x080U //128 words +#define PAGE_SIZE_BYTES 0x100U //256 bytes + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union +{ + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union +{ + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct +{ + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; + +uint8_t error_count = 0; +uint8_t sreg; + +void (*app_start)(void) = 0x0000; + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + uint16_t i; + + asm volatile("nop\n\t"); + +#ifdef ADABOOT // BBR/LF 10/8/2007 & 9/13/2008 + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if it's a not an external reset... + app_start(); // skip bootloader +#endif + + + //initialize our serial port. + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1< 0x85) + getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') + { + ch2 = getch(); + if(ch2 == 0x80) + byte_response(HW_VER); // Hardware version + else if(ch2==0x81) + byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) + byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) + byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else + byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') + { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') + { + getNch(5); + nothing_response(); + } + + + /* Enter programming mode */ + else if(ch=='P') + { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') + { + nothing_response(); +#ifdef ADABOOT + // autoreset via watchdog (sneaky!) BBR/LF 9/13/2008 + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') + { + nothing_response(); + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') + { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') + { + getNch(4); + byte_response(0x00); + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') + { + length.byte[1] = getch(); + length.byte[0] = getch(); + + flags.eeprom = 0; + if (getch() == 'E') + flags.eeprom = 1; + + for (i=0; i byte location + address.word = address.word << 1; + + //Even up an odd number of bytes + if ((length.byte[0] & 0x01)) + length.word++; + + // HACKME: EEPE used to be EEWE + //Wait for previous EEPROM writes to complete + //while(bit_is_set(EECR,EEPE)); + while(EECR & (1< byte location + } + + // Command terminator + if (getch() == ' ') + { + putch(0x14); + for (w=0; w= 'a') + ah = ah - 'a' + 0x0a; + else if(ah >= '0') + ah -= '0'; + if(al >= 'a') + al = al - 'a' + 0x0a; + else if(al >= '0') + al -= '0'; + + return (ah << 4) + al; +} + + +void puthex(char ch) +{ + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) + ah = ah - 0x0a + 'a'; + else + ah += '0'; + + al = (ch & 0x0f); + if(al >= 0x0a) + al = al - 0x0a + 'a'; + else + al += '0'; + + putch(ah); + putch(al); +} + + +void putch(char ch) +{ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +} + + + + +char getch(void) +{ + uint32_t count = 0; + +#ifdef ADABOOT + LED_PORT &= ~_BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + while(!(UCSR0A & _BV(RXC0))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + +#ifdef ADABOOT + LED_PORT |= _BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + return UDR0; +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/bootloaders/atmega644p/README.txt b/ArduinoAddons/Arduino_0.xx/Gen6/bootloaders/atmega644p/README.txt new file mode 100644 index 000000000..828600785 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/bootloaders/atmega644p/README.txt @@ -0,0 +1,3 @@ +Note: This bootloader support ATmega644, ATmega644P and ATmega324P. +To build, set PROGRAM and MCU_TARGET in the Makefile according to your target device. + diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Arduino.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Arduino.h new file mode 100644 index 000000000..90ee91873 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Arduino.h @@ -0,0 +1 @@ + #include "WProgram.h" diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/HardwareSerial.cpp b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/HardwareSerial.cpp new file mode 100644 index 000000000..bf7cb69d4 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,202 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include "wiring.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which rx_buffer_head is the index of the +// location to which to write the next incoming character and rx_buffer_tail +// is the index of the location from which to read. +#define RX_BUFFER_SIZE 128 + +struct ring_buffer +{ + unsigned char buffer[RX_BUFFER_SIZE]; + int head; + int tail; +}; + +ring_buffer rx_buffer = { { 0 }, 0, 0 }; + +inline void store_char(unsigned char c, ring_buffer *rx_buffer) +{ + int i = (unsigned int)(rx_buffer->head + 1) & (RX_BUFFER_SIZE -1); + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != rx_buffer->tail) { + rx_buffer->buffer[rx_buffer->head] = c; + rx_buffer->head = i; + } +} + +// fixed by Mark Sproul this is on the 644/644p +//SIGNAL(SIG_USART_RECV) +SIGNAL(USART0_RX_vect) +{ + unsigned char c = UDR0; + store_char(c, &rx_buffer); +} + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udre = udre; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); +} + +void HardwareSerial::end() +{ + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) & (RX_BUFFER_SIZE-1); +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) & (RX_BUFFER_SIZE-1); + return c; + } +} + +void HardwareSerial::flush() +{ + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // were full, not empty. + _rx_buffer->head = _rx_buffer->tail; +} + +// +// Drakelive 2012-09-04 +// +#if ARDUINO >= 100 + size_t HardwareSerial::write(uint8_t c) + { + while (!((*_ucsra) & (1 << _udre))) + ; + + *_udr = c; + } +#else + void HardwareSerial::write(uint8_t c) + { + while (!((*_ucsra) & (1 << _udre))) + ; + + *_udr = c; + } +#endif + +// Drakelive 2012-09-04 + +// Preinstantiate Objects ////////////////////////////////////////////////////// +HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0); + +#endif // whole file + diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/HardwareSerial.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/HardwareSerial.h new file mode 100644 index 000000000..89ebc7ae1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/HardwareSerial.h @@ -0,0 +1,87 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udre; + uint8_t _u2x; + public: + HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x); + void begin(long); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + + // + // Drakelive 2012-09-04 + // + #if ARDUINO >= 100 + virtual size_t write(uint8_t); + #else + virtual void write(uint8_t); + #endif + + // Drakelive 2012-09-04 + + using Print::write; // pull in write(str) and write(buf, size) from Print +}; + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "usb_api.h" +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Print.cpp b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Print.cpp new file mode 100644 index 000000000..4ee556dd8 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Print.cpp @@ -0,0 +1,220 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "wiring.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +void Print::write(const char *str) +{ + while (*str) + write(*str++); +} + +/* default implementation: may be overridden */ +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) + write(*buffer++); +} + +void Print::print(const String &s) +{ + for (int i = 0; i < s.length(); i++) { + write(s[i]); + } +} + +void Print::print(const char str[]) +{ + write(str); +} + +void Print::print(char c, int base) +{ + print((long) c, base); +} + +void Print::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Print::print(int n, int base) +{ + print((long) n, base); +} + +void Print::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Print::print(long n, int base) +{ + if (base == 0) { + write(n); + } else if (base == 10) { + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); + } else { + printNumber(n, base); + } +} + +void Print::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Print::print(double n, int digits) +{ + printFloat(n, digits); +} + +void Print::println(void) +{ + print('\r'); + print('\n'); +} + +void Print::println(const String &s) +{ + print(s); + println(); +} + +void Print::println(const char c[]) +{ + print(c); + println(); +} + +void Print::println(char c, int base) +{ + print(c, base); + println(); +} + +void Print::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Print::println(int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(double n, int digits) +{ + print(n, digits); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void Print::printNumber(unsigned long n, uint8_t base) +{ + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); +} + +void Print::printFloat(double number, uint8_t digits) +{ + // Handle negative numbers + if (number < 0.0) + { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Print.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Print.h new file mode 100644 index 000000000..3f9cb967a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Print.h @@ -0,0 +1,77 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#include "WString.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Print +{ + private: + void printNumber(unsigned long, uint8_t); + void printFloat(double, uint8_t); + public: + + // + // Drakelive 2012-09-04 + // + #if ARDUINO >= 100 + virtual size_t write(uint8_t) = 0; + #else + virtual void write(uint8_t) = 0; + #endif + + // Drakelive 2012-09-04 + + virtual void write(const char *str); + virtual void write(const uint8_t *buffer, size_t size); + + void print(const String &); + void print(const char[]); + void print(char, int = BYTE); + void print(unsigned char, int = BYTE); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + + void println(const String &s); + void println(const char[]); + void println(char, int = BYTE); + void println(unsigned char, int = BYTE); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); +}; + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Stream.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Stream.h new file mode 100644 index 000000000..93d8275dc --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Stream.h @@ -0,0 +1,35 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Stream_h +#define Stream_h + +#include +#include "Print.h" + +class Stream : public Print +{ + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; +}; + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Tone.cpp b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Tone.cpp new file mode 100644 index 000000000..c3910e7a6 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/Tone.cpp @@ -0,0 +1,601 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +*************************************************/ + +#include +#include +#include "wiring.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +// MLS: This does not make sense, the 3 options are the same +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WCharacter.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WConstants.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WConstants.h new file mode 100644 index 000000000..3e19ac44a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WConstants.h @@ -0,0 +1 @@ +#include "wiring.h" diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WInterrupts.c b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WInterrupts.c new file mode 100644 index 000000000..3b3e0c9ec --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WInterrupts.c @@ -0,0 +1,249 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include + +#include "WConstants.h" +#include "wiring_private.h" + +volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 3: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; + case 4: + EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20); + EIMSK |= (1 << INT2); + break; + case 5: + EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30); + EIMSK |= (1 << INT3); + break; + case 0: + EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40); + EIMSK |= (1 << INT4); + break; + case 1: + EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50); + EIMSK |= (1 << INT5); + break; + case 6: + EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60); + EIMSK |= (1 << INT6); + break; + case 7: + EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70); + EIMSK |= (1 << INT7); + break; +#else + case 0: + #if defined(EICRA) && defined(ISC00) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GICR |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GIMSK |= (1 << INT0); + #else + #error attachInterrupt not finished for this CPU (case 0) + #endif + break; + + case 1: + #if defined(EICRA) && defined(ISC10) && defined(ISC11) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(ISC11) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GICR |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(GIMSK) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GIMSK |= (1 << INT1); + #else + #warning attachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + } +} + +void detachInterrupt(uint8_t interruptNum) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + // Disable the interrupt. (We can't assume that interruptNum is equal + // to the number of the EIMSK bit to clear, as this isn't true on the + // ATmega8. There, INT0 is 6 and INT1 is 7.) + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EIMSK &= ~(1 << INT0); + break; + case 3: + EIMSK &= ~(1 << INT1); + break; + case 4: + EIMSK &= ~(1 << INT2); + break; + case 5: + EIMSK &= ~(1 << INT3); + break; + case 0: + EIMSK &= ~(1 << INT4); + break; + case 1: + EIMSK &= ~(1 << INT5); + break; + case 6: + EIMSK &= ~(1 << INT6); + break; + case 7: + EIMSK &= ~(1 << INT7); + break; +#else + case 0: + #if defined(EIMSK) && defined(INT0) + EIMSK &= ~(1 << INT0); + #elif defined(GICR) && defined(ISC00) + GICR &= ~(1 << INT0); // atmega32 + #elif defined(GIMSK) && defined(INT0) + GIMSK &= ~(1 << INT0); + #else + #error detachInterrupt not finished for this cpu + #endif + break; + + case 1: + #if defined(EIMSK) && defined(INT1) + EIMSK &= ~(1 << INT1); + #elif defined(GICR) && defined(INT1) + GICR &= ~(1 << INT1); // atmega32 + #elif defined(GIMSK) && defined(INT1) + GIMSK &= ~(1 << INT1); + #else + #warning detachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + + intFunc[interruptNum] = 0; + } +} + +/* +void attachInterruptTwi(void (*userFunc)(void) ) { + twiIntFunc = userFunc; +} +*/ + +#if defined(EICRA) && defined(EICRB) + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_3]) + intFunc[EXTERNAL_INT_3](); +} + +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_4]) + intFunc[EXTERNAL_INT_4](); +} + +SIGNAL(INT3_vect) { + if(intFunc[EXTERNAL_INT_5]) + intFunc[EXTERNAL_INT_5](); +} + +SIGNAL(INT4_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT5_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +SIGNAL(INT6_vect) { + if(intFunc[EXTERNAL_INT_6]) + intFunc[EXTERNAL_INT_6](); +} + +SIGNAL(INT7_vect) { + if(intFunc[EXTERNAL_INT_7]) + intFunc[EXTERNAL_INT_7](); +} + +#else + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +#endif + +/* +SIGNAL(SIG_2WIRE_SERIAL) { + if(twiIntFunc) + twiIntFunc(); +} +*/ + diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WMath.cpp b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WMath.cpp new file mode 100644 index 000000000..2120c4cc1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WMath.cpp @@ -0,0 +1,60 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.org.co + Copyright (c) 2004-06 Hernando Barragan + Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +extern "C" { + #include "stdlib.h" +} + +void randomSeed(unsigned int seed) +{ + if (seed != 0) { + srandom(seed); + } +} + +long random(long howbig) +{ + if (howbig == 0) { + return 0; + } + return random() % howbig; +} + +long random(long howsmall, long howbig) +{ + if (howsmall >= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WProgram.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WProgram.h new file mode 100644 index 000000000..f73e760bb --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WProgram.h @@ -0,0 +1,63 @@ +#ifndef WProgram_h +#define WProgram_h + +#include +#include +#include + +#include + +#include "wiring.h" + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const static uint8_t A0 = 54; +const static uint8_t A1 = 55; +const static uint8_t A2 = 56; +const static uint8_t A3 = 57; +const static uint8_t A4 = 58; +const static uint8_t A5 = 59; +const static uint8_t A6 = 60; +const static uint8_t A7 = 61; +const static uint8_t A8 = 62; +const static uint8_t A9 = 63; +const static uint8_t A10 = 64; +const static uint8_t A11 = 65; +const static uint8_t A12 = 66; +const static uint8_t A13 = 67; +const static uint8_t A14 = 68; +const static uint8_t A15 = 69; +#else +const static uint8_t A0 = 14; +const static uint8_t A1 = 15; +const static uint8_t A2 = 16; +const static uint8_t A3 = 17; +const static uint8_t A4 = 18; +const static uint8_t A5 = 19; +const static uint8_t A6 = 20; +const static uint8_t A7 = 21; +#endif + +#endif + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WString.cpp b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WString.cpp new file mode 100644 index 000000000..db5a441dc --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WString.cpp @@ -0,0 +1,443 @@ +/* + WString.cpp - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include +#include "WProgram.h" +#include "WString.h" + + +String::String( const char *value ) +{ + if ( value == NULL ) + value = ""; + getBuffer( _length = strlen( value ) ); + if ( _buffer != NULL ) + strcpy( _buffer, value ); +} + +String::String( const String &value ) +{ + getBuffer( _length = value._length ); + if ( _buffer != NULL ) + strcpy( _buffer, value._buffer ); +} + +String::String( const char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL ) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const unsigned char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const int value, const int base ) +{ + char buf[33]; + itoa((signed long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned int value, const int base ) +{ + char buf[33]; + ultoa((unsigned long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const long value, const int base ) +{ + char buf[33]; + ltoa(value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned long value, const int base ) +{ + char buf[33]; + ultoa(value, buf, 10); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +char String::charAt( unsigned int loc ) const +{ + return operator[]( loc ); +} + +void String::setCharAt( unsigned int loc, const char aChar ) +{ + if(_buffer == NULL) return; + if(_length > loc) { + _buffer[loc] = aChar; + } +} + +int String::compareTo( const String &s2 ) const +{ + return strcmp( _buffer, s2._buffer ); +} + +const String & String::concat( const String &s2 ) +{ + return (*this) += s2; +} + +const String & String::operator=( const String &rhs ) +{ + if ( this == &rhs ) + return *this; + + if ( rhs._length > _length ) + { + free(_buffer); + getBuffer( rhs._length ); + } + + if ( _buffer != NULL ) { + _length = rhs._length; + strcpy( _buffer, rhs._buffer ); + } + return *this; +} + +//const String & String::operator+=( const char aChar ) +//{ +// if ( _length == _capacity ) +// doubleBuffer(); +// +// _buffer[ _length++ ] = aChar; +// _buffer[ _length ] = '\0'; +// return *this; +//} + +const String & String::operator+=( const String &other ) +{ + _length += other._length; + if ( _length > _capacity ) + { + char *temp = (char *)realloc(_buffer, _length + 1); + if ( temp != NULL ) { + _buffer = temp; + _capacity = _length; + } else { + _length -= other._length; + return *this; + } + } + strcat( _buffer, other._buffer ); + return *this; +} + + +int String::operator==( const String &rhs ) const +{ + return ( _length == rhs._length && strcmp( _buffer, rhs._buffer ) == 0 ); +} + +int String::operator!=( const String &rhs ) const +{ + return ( _length != rhs.length() || strcmp( _buffer, rhs._buffer ) != 0 ); +} + +int String::operator<( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) < 0; +} + +int String::operator>( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) > 0; +} + +int String::operator<=( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) <= 0; +} + +int String::operator>=( const String & rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) >= 0; +} + +char & String::operator[]( unsigned int index ) +{ + static char dummy_writable_char; + if (index >= _length || !_buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return _buffer[ index ]; +} + +char String::operator[]( unsigned int index ) const +{ + // need to check for valid index, to do later + return _buffer[ index ]; +} + +boolean String::endsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return strcmp( &_buffer[ _length - s2._length], s2._buffer ) == 0; +} + +boolean String::equals( const String &s2 ) const +{ + return ( _length == s2._length && strcmp( _buffer,s2._buffer ) == 0 ); +} + +boolean String::equalsIgnoreCase( const String &s2 ) const +{ + if ( this == &s2 ) + return true; //1; + else if ( _length != s2._length ) + return false; //0; + + return strcmp(toLowerCase()._buffer, s2.toLowerCase()._buffer) == 0; +} + +String String::replace( char findChar, char replaceChar ) +{ + if ( _buffer == NULL ) return *this; + String theReturn = _buffer; + char* temp = theReturn._buffer; + while( (temp = strchr( temp, findChar )) != 0 ) + *temp = replaceChar; + + return theReturn; +} + +String String::replace( const String& match, const String& replace ) +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer, newString; + + int loc; + while ( (loc = temp.indexOf( match )) != -1 ) + { + newString += temp.substring( 0, loc ); + newString += replace; + temp = temp.substring( loc + match._length ); + } + newString += temp; + return newString; +} + +int String::indexOf( char temp ) const +{ + return indexOf( temp, 0 ); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char* temp = strchr( &_buffer[fromIndex], ch ); + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::indexOf( const String &s2 ) const +{ + return indexOf( s2, 0 ); +} + +int String::indexOf( const String &s2, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char *theFind = strstr( &_buffer[ fromIndex ], s2._buffer ); + + if ( theFind == NULL ) + return -1; + + return theFind - _buffer; // pointer subtraction +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf( theChar, _length - 1 ); +} + +int String::lastIndexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + char tempchar = _buffer[fromIndex + 1]; + _buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( _buffer, ch ); + _buffer[fromIndex + 1] = tempchar; + + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::lastIndexOf( const String &s2 ) const +{ + return lastIndexOf( s2, _length - s2._length ); +} + +int String::lastIndexOf( const String &s2, unsigned int fromIndex ) const +{ + // check for empty strings + if ( s2._length == 0 || s2._length - 1 > fromIndex || fromIndex >= _length ) + return -1; + + // matching first character + char temp = s2[ 0 ]; + + for ( int i = fromIndex; i >= 0; i-- ) + { + if ( _buffer[ i ] == temp && (*this).substring( i, i + s2._length ).equals( s2 ) ) + return i; + } + return -1; +} + +boolean String::startsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return startsWith( s2, 0 ); +} + +boolean String::startsWith( const String &s2, unsigned int offset ) const +{ + if ( offset > _length - s2._length ) + return 0; + + return strncmp( &_buffer[offset], s2._buffer, s2._length ) == 0; +} + +String String::substring( unsigned int left ) const +{ + return substring( left, _length ); +} + +String String::substring( unsigned int left, unsigned int right ) const +{ + if ( left > right ) + { + int temp = right; + right = left; + left = temp; + } + + if ( right > _length ) + { + right = _length; + } + + char temp = _buffer[ right ]; // save the replaced character + _buffer[ right ] = '\0'; + String outPut = ( _buffer + left ); // pointer arithmetic + _buffer[ right ] = temp; //restore character + return outPut; +} + +String String::toLowerCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)tolower( temp._buffer[ i ] ); + return temp; +} + +String String::toUpperCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)toupper( temp._buffer[ i ] ); + return temp; +} + +String String::trim() const +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer; + unsigned int i,j; + + for ( i = 0; i < _length; i++ ) + { + if ( !isspace(_buffer[i]) ) + break; + } + + for ( j = temp._length - 1; j > i; j-- ) + { + if ( !isspace(_buffer[j]) ) + break; + } + + return temp.substring( i, j + 1); +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy((char *)buf, _buffer, len); + buf[len] = 0; +} + +void String::toCharArray(char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy(buf, _buffer, len); + buf[len] = 0; +} + + +long String::toInt() { + return atol(_buffer); +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WString.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WString.h new file mode 100644 index 000000000..cadddb947 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/WString.h @@ -0,0 +1,112 @@ +/* + WString.h - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_h +#define String_h + +//#include "WProgram.h" +#include +#include +#include + +class String +{ + public: + // constructors + String( const char *value = "" ); + String( const String &value ); + String( const char ); + String( const unsigned char ); + String( const int, const int base=10); + String( const unsigned int, const int base=10 ); + String( const long, const int base=10 ); + String( const unsigned long, const int base=10 ); + ~String() { free(_buffer); _length = _capacity = 0;} //added _length = _capacity = 0; + + // operators + const String & operator = ( const String &rhs ); + const String & operator +=( const String &rhs ); + //const String & operator +=( const char ); + int operator ==( const String &rhs ) const; + int operator !=( const String &rhs ) const; + int operator < ( const String &rhs ) const; + int operator > ( const String &rhs ) const; + int operator <=( const String &rhs ) const; + int operator >=( const String &rhs ) const; + char operator []( unsigned int index ) const; + char& operator []( unsigned int index ); + //operator const char *() const { return _buffer; } + + // general methods + char charAt( unsigned int index ) const; + int compareTo( const String &anotherString ) const; + unsigned char endsWith( const String &suffix ) const; + unsigned char equals( const String &anObject ) const; + unsigned char equalsIgnoreCase( const String &anotherString ) const; + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + const unsigned int length( ) const { return _length; } + void setCharAt(unsigned int index, const char ch); + unsigned char startsWith( const String &prefix ) const; + unsigned char startsWith( const String &prefix, unsigned int toffset ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + String toLowerCase( ) const; + String toUpperCase( ) const; + String trim( ) const; + void getBytes(unsigned char *buf, unsigned int bufsize); + void toCharArray(char *buf, unsigned int bufsize); + long toInt( ); + const String& concat( const String &str ); + String replace( char oldChar, char newChar ); + String replace( const String& match, const String& replace ); + friend String operator + ( String lhs, const String &rhs ); + + protected: + char *_buffer; // the actual char array + unsigned int _capacity; // the array length minus one (for the '\0') + unsigned int _length; // the String length (not counting the '\0') + + void getBuffer(unsigned int maxStrLen); + + private: + +}; + +// allocate buffer space +inline void String::getBuffer(unsigned int maxStrLen) +{ + _capacity = maxStrLen; + _buffer = (char *) malloc(_capacity + 1); + if (_buffer == NULL) _length = _capacity = 0; +} + +inline String operator+( String lhs, const String &rhs ) +{ + return lhs += rhs; +} + + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/binary.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/main.cpp b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/main.cpp new file mode 100644 index 000000000..cc6e81d90 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/main.cpp @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/pins_arduino.c b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/pins_arduino.c new file mode 100644 index 000000000..d5fa6fea3 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/pins_arduino.c @@ -0,0 +1,200 @@ +/* + pins_arduino.c - pin definitions for the Arduino board + Part of Arduino / Wiring Lite + + Copyright (c) 2005 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: pins_arduino.c 254 2007-04-20 23:17:38Z mellis $ +*/ + +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +// On the Sanguino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA644P / SANGUINO +// +// +---\/---+ +// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31) +// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30) +// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) +// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) +// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) +// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) +// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) +// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) +// RST 9| |32 AREF +// VCC 10| |31 GND +// GND 11| |30 AVCC +// XTAL2 12| |29 PC7 (D 23) +// XTAL1 13| |28 PC6 (D 22) +// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI +// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO +// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS +// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK +// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA +// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL +// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM +// +--------+ +// + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint8_t PROGMEM port_to_mode_PGM[] = +{ + NOT_A_PORT, + (uint8_t) (uint16_t) &DDRA, + (uint8_t) (uint16_t) &DDRB, + (uint8_t) (uint16_t) &DDRC, + (uint8_t) (uint16_t) &DDRD, +}; + +const uint8_t PROGMEM port_to_output_PGM[] = +{ + NOT_A_PORT, + (uint8_t) (uint16_t) &PORTA, + (uint8_t) (uint16_t) &PORTB, + (uint8_t) (uint16_t) &PORTC, + (uint8_t) (uint16_t) &PORTD, +}; + +const uint8_t PROGMEM port_to_input_PGM[] = +{ + NOT_A_PORT, + (uint8_t) (uint16_t) &PINA, + (uint8_t) (uint16_t) &PINB, + (uint8_t) (uint16_t) &PINC, + (uint8_t) (uint16_t) &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = +{ + PB, /* 0 */ + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PD, /* 8 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PC, /* 16 */ + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PA, /* 24 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA /* 31 */ +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = +{ + _BV(0), /* 0, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 16, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(7), /* 24, port A */ + _BV(6), + _BV(5), + _BV(4), + _BV(3), + _BV(2), + _BV(1), + _BV(0) +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = +{ + NOT_ON_TIMER, /* 0 - PB0 */ + NOT_ON_TIMER, /* 1 - PB1 */ + NOT_ON_TIMER, /* 2 - PB2 */ + TIMER0A, /* 3 - PB3 */ + TIMER0B, /* 4 - PB4 */ + NOT_ON_TIMER, /* 5 - PB5 */ + NOT_ON_TIMER, /* 6 - PB6 */ + NOT_ON_TIMER, /* 7 - PB7 */ + NOT_ON_TIMER, /* 8 - PD0 */ + NOT_ON_TIMER, /* 9 - PD1 */ + NOT_ON_TIMER, /* 10 - PD2 */ + NOT_ON_TIMER, /* 11 - PD3 */ + TIMER1B, /* 12 - PD4 */ + TIMER1A, /* 13 - PD5 */ + TIMER2B, /* 14 - PD6 */ + TIMER2A, /* 15 - PD7 */ + NOT_ON_TIMER, /* 16 - PC0 */ + NOT_ON_TIMER, /* 17 - PC1 */ + NOT_ON_TIMER, /* 18 - PC2 */ + NOT_ON_TIMER, /* 19 - PC3 */ + NOT_ON_TIMER, /* 20 - PC4 */ + NOT_ON_TIMER, /* 21 - PC5 */ + NOT_ON_TIMER, /* 22 - PC6 */ + NOT_ON_TIMER, /* 23 - PC7 */ + NOT_ON_TIMER, /* 24 - PA0 */ + NOT_ON_TIMER, /* 25 - PA1 */ + NOT_ON_TIMER, /* 26 - PA2 */ + NOT_ON_TIMER, /* 27 - PA3 */ + NOT_ON_TIMER, /* 28 - PA4 */ + NOT_ON_TIMER, /* 29 - PA5 */ + NOT_ON_TIMER, /* 30 - PA6 */ + NOT_ON_TIMER /* 31 - PA7 */ +}; diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/pins_arduino.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/pins_arduino.h new file mode 100644 index 000000000..fd7ee5c8c --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/pins_arduino.h @@ -0,0 +1,65 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +extern const uint8_t PROGMEM port_to_mode_PGM[]; +extern const uint8_t PROGMEM port_to_input_PGM[]; +extern const uint8_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( (uint16_t) pgm_read_byte( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( (uint16_t) pgm_read_byte( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( (uint16_t) pgm_read_byte( port_to_mode_PGM + (P))) ) + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring.c b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring.c new file mode 100644 index 000000000..b90d07e59 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring.c @@ -0,0 +1,289 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +SIGNAL(TIMER0_OVF_vect) +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); + +#if F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + + TCCR1B = 0; + + // set timer 1 prescale factor to 64 +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + sbi(TCCR1B, CS11); + sbi(TCCR1B, CS10); +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); + sbi(TCCR1, CS10); +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring.h new file mode 100644 index 000000000..0a9367805 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring.h @@ -0,0 +1,136 @@ +/* + wiring.h - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#ifndef Wiring_h +#define Wiring_h + +#include +#include +#include +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( ((a) * 1000L) / (F_CPU / 1000L) ) +#define microsecondsToClockCycles(a) ( ((a) * (F_CPU / 1000L)) / 1000L ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_analog.c b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_analog.c new file mode 100644 index 000000000..d248f4ce8 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_analog.c @@ -0,0 +1,259 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: + // connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_digital.c b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_digital.c new file mode 100644 index 000000000..0949da42d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_digital.c @@ -0,0 +1,166 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +//static inline void turnOffPWM(uint8_t timer) +static void turnOffPWM(uint8_t timer) +{ + switch (timer) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + if (val == LOW) { + uint8_t oldSREG = SREG; + cli(); + *out &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *out |= bit; + SREG = oldSREG; + } +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_private.h b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_private.h new file mode 100644 index 000000000..7449c76ac --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_private.h @@ -0,0 +1,68 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h +#include +#include +#include +#include +#include +#include + +#include "wiring.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_pulse.c b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_pulse.c new file mode 100644 index 000000000..0d968865d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_shift.c b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_shift.c new file mode 100644 index 000000000..cfe786758 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen6/cores/arduino/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/boards.txt b/ArduinoAddons/Arduino_0.xx/Gen7/boards.txt new file mode 100644 index 000000000..d6fbaeeb9 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/boards.txt @@ -0,0 +1,101 @@ +############################################################## + +Gen7-644-16.name=Gen7 with ATmega644 and 16 MHz +Gen7-644-16.upload.protocol=stk500v2 +Gen7-644-16.upload.maximum_size=63488 +Gen7-644-16.upload.speed=115200 +Gen7-644-16.bootloader.low_fuses=0xF7 +Gen7-644-16.bootloader.high_fuses=0xD4 +Gen7-644-16.bootloader.extended_fuses=0xFD +Gen7-644-16.bootloader.path=Gen7 +Gen7-644-16.bootloader.file=bootloader-644-16MHz.hex +Gen7-644-16.bootloader.unlock_bits=0x3F +Gen7-644-16.bootloader.lock_bits=0x0F +Gen7-644-16.build.mcu=atmega644 +Gen7-644-16.build.f_cpu=16000000L +Gen7-644-16.build.core=arduino + +############################################################## + +Gen7-644-20.name=Gen7 with ATmega644 and 20 MHz +Gen7-644-20.upload.protocol=stk500v2 +Gen7-644-20.upload.maximum_size=63488 +Gen7-644-20.upload.speed=115200 +Gen7-644-20.bootloader.low_fuses=0xF7 +Gen7-644-20.bootloader.high_fuses=0xD4 +Gen7-644-20.bootloader.extended_fuses=0xFD +Gen7-644-20.bootloader.path=Gen7 +Gen7-644-20.bootloader.file=bootloader-644-20MHz.hex +Gen7-644-20.bootloader.unlock_bits=0x3F +Gen7-644-20.bootloader.lock_bits=0x0F +Gen7-644-20.build.mcu=atmega644 +Gen7-644-20.build.f_cpu=20000000L +Gen7-644-20.build.core=arduino + +############################################################## + +Gen7-644P-16.name=Gen7 with ATmega644P and 16 MHz +Gen7-644P-16.upload.protocol=stk500v2 +Gen7-644P-16.upload.maximum_size=63488 +Gen7-644P-16.upload.speed=115200 +Gen7-644P-16.bootloader.low_fuses=0xF7 +Gen7-644P-16.bootloader.high_fuses=0xD4 +Gen7-644P-16.bootloader.extended_fuses=0xFD +Gen7-644P-16.bootloader.path=Gen7 +Gen7-644P-16.bootloader.file=bootloader-644P-16MHz.hex +Gen7-644P-16.bootloader.unlock_bits=0x3F +Gen7-644P-16.bootloader.lock_bits=0x0F +Gen7-644P-16.build.mcu=atmega644p +Gen7-644P-16.build.f_cpu=16000000L +Gen7-644P-16.build.core=arduino + +############################################################## + +Gen7-644P-20.name=Gen7 with ATmega644P and 20 MHz +Gen7-644P-20.upload.protocol=stk500v2 +Gen7-644P-20.upload.maximum_size=63488 +Gen7-644P-20.upload.speed=115200 +Gen7-644P-20.bootloader.low_fuses=0xF7 +Gen7-644P-20.bootloader.high_fuses=0xD4 +Gen7-644P-20.bootloader.extended_fuses=0xFD +Gen7-644P-20.bootloader.path=Gen7 +Gen7-644P-20.bootloader.file=bootloader-644P-20MHz.hex +Gen7-644P-20.bootloader.unlock_bits=0x3F +Gen7-644P-20.bootloader.lock_bits=0x0F +Gen7-644P-20.build.mcu=atmega644p +Gen7-644P-20.build.f_cpu=20000000L +Gen7-644P-20.build.core=arduino + +############################################################## + +Gen7-1284p-16.name=Gen7 with ATmega1284 and 16 MHz +Gen7-1284p-16.upload.protocol=stk500v2 +Gen7-1284p-16.upload.maximum_size=129024 +Gen7-1284p-16.upload.speed=115200 +Gen7-1284p-16.bootloader.low_fuses=0xF7 +Gen7-1284p-16.bootloader.high_fuses=0xD4 +Gen7-1284p-16.bootloader.extended_fuses=0xFD +Gen7-1284p-16.bootloader.path=Gen7 +Gen7-1284p-16.bootloader.file=bootloader-1284P-16MHz.hex +Gen7-1284p-16.bootloader.unlock_bits=0x3F +Gen7-1284p-16.bootloader.lock_bits=0x2F +Gen7-1284p-16.build.mcu=atmega1284p +Gen7-1284p-16.build.f_cpu=16000000L +Gen7-1284p-16.build.core=arduino + +############################################################## + +Gen7-1284p-20.name=Gen7 with ATmega1284 and 20 MHz +Gen7-1284p-20.upload.protocol=stk500v2 +Gen7-1284p-20.upload.maximum_size=129024 +Gen7-1284p-20.upload.speed=115200 +Gen7-1284p-20.bootloader.low_fuses=0xF7 +Gen7-1284p-20.bootloader.high_fuses=0xD4 +Gen7-1284p-20.bootloader.extended_fuses=0xFD +Gen7-1284p-20.bootloader.path=Gen7 +Gen7-1284p-20.bootloader.file=bootloader-1284P-16MHz.hex +Gen7-1284p-20.bootloader.unlock_bits=0x3F +Gen7-1284p-20.bootloader.lock_bits=0x2F +Gen7-1284p-20.build.mcu=atmega1284p +Gen7-1284p-20.build.f_cpu=20000000L +Gen7-1284p-20.build.core=arduino diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-1284P-16MHz.hex b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-1284P-16MHz.hex new file mode 100644 index 000000000..93df372ca --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-1284P-16MHz.hex @@ -0,0 +1,113 @@ +:020000021000EC +:10F8000011241FBE8FEF90E49EBF8DBF01C32F92C6 +:10F810003F924F925F926F927F928F929F92AF92A0 +:10F82000BF92CF92DF92EF92FF920F931F93DF93DD +:10F83000CF93CDB7DEB7C252D1400FB6F894DEBF3A +:10F840000FBECDBF44245524DD24C25EDE4F188296 +:10F85000CE51D1408824992454013AC20E9428FFF5 +:10F86000282F133059F1143028F4113081F0123060 +:10F8700000F507C0153081F1153030F1163071F701 +:10F880003DC08B3159F711E05BE1D52EE7CF8130D8 +:10F8900041F0C25EDE4F3881CE51D140831709F06E +:10F8A00019C2D226C25EDE4F2883CE51D14012E06B +:10F8B000D5CFF82EEE24D82613E0D0CF90E0E82A5A +:10F8C000F92AD22614E0CACF8E3009F003C2D82616 +:10F8D00015E044245524C2CFE1E0F0E0EC0FFD1F19 +:10F8E000E40DF51D80830894411C511CD8264E144C +:10F8F0005F0409F0B3CF720116E0B0CF8D1509F0A7 +:10F90000E9C1EAC1CC2447C08D81803311F090E079 +:10F910000AC08F81882311F49EE105C0813011F067 +:10F9200095E001C097E91A821B828D818C838E81BC +:10F930008D839E831F8247E0E42EF12C88C11A82BA +:10F9400068E06B8383E58C8394E59D83EBE4EE8331 +:10F9500085E38F8380E3888789878FE58A8782E3C1 +:10F960008B873BE0E32EF12C72C18A81813941F013 +:10F97000823941F0803911F48FE005C080E003C086 +:10F9800082E001C08AE01A828B8323E0E22EF12C10 +:10F990005EC1CC24C3941A8292E0E92EF12C58C1A6 +:10F9A0008D81882311F48EE128C0813011F085E02B +:10F9B00024C087E922C01A8229E0E1E0F0E0209328 +:10F9C000570084911BC08B81803589F48C818830ED +:10F9D00039F439E0E2E0F0E03093570084910DC053 +:10F9E00069E0E0E0F0E060935700849106C099E0A0 +:10F9F000E3E0F0E09093570084911A828B831C829D +:10FA000084E0E82EF12C23C18A8190E0A0E0B0E0F0 +:10FA1000B82EAA24992488248B8190E0A0E0B0E03D +:10FA2000DC0199278827882A992AAA2ABB2A8D814E +:10FA300090E0A0E0B0E0882A992AAA2ABB2A8C810B +:10FA400090E0A0E0B0E0BA2FA92F982F8827882A4D +:10FA5000992AAA2ABB2A88C0EA81C05EDE4FE883C1 +:10FA6000C052D140C15EDE4F1882CF51D1408B8150 +:10FA7000A82FB0E0C15EDE4F28813981CF51D1403F +:10FA8000A22BB32B933109F042C075016401CC0C59 +:10FA9000DD1CEE1CFF1C33E0F601E0925B003093AE +:10FAA0005700E89507B600FCFDCF8E01055F1F4F9C +:10FAB000F801808161810E5F1F4FA5019401220F23 +:10FAC000331F441F551F362E222490E0822993298C +:10FAD00061E00C01F90140935B0060935700E895E9 +:10FAE00011240894811C911CA11CB11C129701F7D0 +:10FAF00085E0F601E0925B0080935700E89507B639 +:10FB000000FCFDCF81E180935700E8952DC0FE01F8 +:10FB10003B9620E030E040E050E011977D0100E0AE +:10FB200010E00894E11CF11C011D111D6081F99980 +:10FB3000FECF1FBAC901880D991D92BD81BD60BD60 +:10FB40000FB6F894FA9AF99A0FBE2F5F3F4F4F4FB6 +:10FB50005F4F2E153F054007510711F03196E6CF54 +:10FB6000820E931EA41EB51E1A826EC09A81CE5DAF +:10FB7000DE4F9883C252D140CF5DDE4F1882C15212 +:10FB8000D1408B81C82EDD24CF5DDE4FE881F98125 +:10FB9000C152D140CE2ADF2A1A8289818431E1F410 +:10FBA0009601BE016D5F7F4FD501C401880F991F7B +:10FBB000AA1FBB1FABBFFC0187919691FB018083FD +:10FBC00091836E5F7F4F0894811C911CA11CB11C16 +:10FBD0002250304049F72EC0BE016D5F7F4F20E0BC +:10FBE00030E040E050E00894C108D108760100E020 +:10FBF00010E00894C11CD11C0894E11CF11C011DEB +:10FC0000111DF999FECFC901880D991D92BD81BDC5 +:10FC1000F89A80B5FB018193BF012F5F3F4F4F4F93 +:10FC20005F4F2E153F054007510759F7820E931E6F +:10FC3000A41EB51E23E0E22EF12CEC0CFD1CFB01F2 +:10FC4000108205C080EC8A8392E0E92EF12CCC244E +:10FC50008BE10E94C7FEC25EDE4F8881CE51D1404B +:10FC60000E94C7FE8F2D0E94C7FE8E2D0E94C7FEE8 +:10FC70008EE00E94C7FE85E1D82EC25EDE4FF8817D +:10FC8000CE51D140DF26DE24DF243E010894611CE2 +:10FC9000711C0AC0F30111913F01812F0E94C7FE20 +:10FCA000D1260894E108F108E114F10499F78D2DAB +:10FCB0000E94C7FECC2009F044C0C25EDE4FF8812E +:10FCC000CE51D140FF5FC25EDE4FF883CE51D140AE +:10FCD000EE24FF2410E0C2CD9981933109F4BCCE0B +:10FCE0009431B0F4933009F440CE943038F491302C +:10FCF00009F425CE923009F0A5CF04CE903109F455 +:10FD000001CE913109F445CE963009F09BCF7CCEDF +:10FD1000983109F458CE993150F4953109F49CCEBC +:10FD2000953108F423CF963109F08CCF1FCF9B314A +:10FD300009F436CE9D3109F4E7CD9A3109F082CF2E +:10FD40003ACECE5DDE4F0FB6F894DEBF0FBECDBF0C +:10FD5000CF91DF911F910F91FF90EF90DF90CF90A7 +:10FD6000BF90AF909F908F907F906F905F904F90DB +:10FD70003F902F9008958091C00087FFFCCF089599 +:10FD80008091C00087FFFCCF8091C6000895982F16 +:10FD90008091C00085FFFCCF9093C60008959B0121 +:10FDA000AC0197FF11C08091C00082608093C000B9 +:10FDB00050954095309521953F4F4F4F5F4F60E0F4 +:10FDC00074E284EF90E009C08091C0008D7F809341 +:10FDD000C00060E072E18AE790E00E9447FF2C5F7C +:10FDE0003F4F4F4F5F4F83E0569547953795279587 +:10FDF0008A95D1F7215030403093C5002093C4003C +:10FE0000089518B817B81F921F921F920895FFCF38 +:10FE100084B714BE90E083709070892B39F418B8C1 +:10FE200017B81F921F921F920895FFCF88E1809309 +:10FE3000C10060E07EE38EEF9FEF0E94CFFE0E9444 +:10FE400007FC18B817B81F921F921F920895FFCF92 +:10FE500020E030E040E050E013C02F5F3F4F4F4FB5 +:10FE60005F4F21308AE6380788E1480780E058076D +:10FE700039F418B817B81F921F921F920895FFCF38 +:10FE80008091C00087FFE9CF0E94C0FE0895A1E2E3 +:10FE90001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F04 +:10FEA000FF1FA217B307E407F50720F0A21BB30B4F +:10FEB000E40BF50B661F771F881F991F1A9469F7CB +:10FEC00060957095809590959B01AC01BD01CF0127 +:02FED000089593 +:040000031000F800F1 +:00000001FF diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644-16MHz.hex b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644-16MHz.hex new file mode 100644 index 000000000..58098693d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644-16MHz.hex @@ -0,0 +1,75 @@ +:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A +:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010 +:10F8200088E08093C40088E18093C100EE24FF2427 +:10F8300020E0552400E010E039E0432E9BE0292E23 +:10F84000312C2C0E3D1ECFC14150504060407040C5 +:10F8500011F43FE206C08091C00087FFF5CF3091E0 +:10F86000C600933021F1943028F4913099F0923011 +:10F87000C8F407C0953049F1953000F19630D1F5C4 +:10F8800035C03B3119F491E02BE134C03F3291F5A2 +:10F890003983BBC1313011F0351559F52327532E6B +:10F8A00092E028C0B32FA0E0232793E023C0832F4A +:10F8B00090E0A82BB92B232794E01CC03E30C9F45C +:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3 +:10F8D000FD1FEE0DFF1D30830894E11CF11C232752 +:10F8E000EA16FB0639F4D70196E004C0321709F492 +:10F8F0008CC190E044E755E962E470E0ACCF90E061 +:10F9000044C08D81803311F090E00AC08F8188233C +:10F9100011F49EE105C0813011F099E001C096E933 +:10F920001A821B828D818C838E818D839E831F82A0 +:10F9300047E050E0F4C01A8288E08B8381E48C8336 +:10F9400086E58D8382E58E8389E48F8383E58887CE +:10F9500080E589878FE58A8782E38B874BE050E0DB +:10F96000DEC08A81813941F0823941F0803911F459 +:10F970008FE005C080E003C082E001C08AE01A8207 +:10F980008B8343E050E0CBC091E01A8242E050E02C +:10F99000C7C08D81882311F48EE124C0813011F01D +:10F9A00089E020C086E91EC01A82E1E0F0E04092C2 +:10F9B0005700849118C08B81803579F48C81883010 +:10F9C00031F4E2E0F0E04092570084910BC0E0E0B7 +:10F9D000F0E040925700849105C0E3E0F0E04092EF +:10F9E000570084911A828B831C8244E050E097C0B8 +:10F9F000BC80AA248D81082F10E00A291B29000F42 +:10FA0000111F1A828AC09A8088248B81682F70E027 +:10FA100068297929933109F033C0F7EF0F3F1F07A9 +:10FA200010F0A8013FC023E0F80120935700E895AB +:10FA300007B600FCFDCFA801D1018C9111962C9145 +:10FA400011971296D22ECC2490E08C299D2921E08A +:10FA5000FA010C0120935700E89511244E5F5F4F87 +:10FA60006250704051F725E0F80120935700E89567 +:10FA700007B600FCFDCF81E180935700E89512C0E6 +:10FA8000A801FB01D10141BD52BD4F5F5F4F8D9178 +:10FA900080BDFA9AF99AF999FECF3197A1F7A8019A +:10FAA000460F571F1A828A0138C07A8066248B81DC +:10FAB000A82FB0E0A629B7291A828981843191F450 +:10FAC000BD019E012D5F3F4FF80185919491F90191 +:10FAD000808391832E5F3F4F0E5F1F4F62507040B7 +:10FAE00099F713C0A801BD019E012D5F3F4F41BD95 +:10FAF00052BD4F5F5F4FF89A80B5F90181939F0126 +:10FB000061507040A1F70A0F1B1FAD014D5F5F4FA1 +:10FB1000F901108204C080EC8A8342E050E090E05A +:10FB2000FBE1F093C6008091C00086FFFCCF80917E +:10FB3000C00080648093C0005092C6008091C000D5 +:10FB400086FFFCCF8091C00080648093C000652F49 +:10FB50005093C6008091C00086FFFCCF8091C0000A +:10FB600080648093C000342F4093C6008091C00011 +:10FB700086FFFCCF8091C00080648093C0008EE03F +:10FB80008093C6008091C00086FFFCCF8091C000AA +:10FB900080648093C00025E1252523272627FE01C8 +:10FBA000319610C030813093C6008091C00086FF2E +:10FBB000FCCF31968091C00080648093C0002327E1 +:10FBC000415050404115510569F72093C60080917E +:10FBD000C00086FFFCCF8091C00080648093C0008D +:10FBE000992349F4539444E755E962E470E090E0C6 +:10FBF000A0E0B0E030CE5A9881E180935700E895BC +:10FC000011241F921F920895FFCF9981933109F417 +:10FC1000FACE9431C8F4963009F4EACE973050F415 +:10FC2000923009F46CCE933009F49BCE913009F0F8 +:10FC300072CF81CE913109F4A7CE923108F0E1CE96 +:10FC4000903109F068CF5BCE983109F4B4CE993188 +:10FC500050F4953109F4D7CE953108F426CF96317A +:10FC600009F059CF22CF9B3109F493CE9C3120F477 +:10FC70009A3109F050CF98CE9D3109F442CE9F328F +:06FC800009F049CFB8CFE6 +:040000030000F80001 +:00000001FF diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644-20MHz.hex b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644-20MHz.hex new file mode 100644 index 000000000..d216c65f9 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644-20MHz.hex @@ -0,0 +1,75 @@ +:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A +:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010 +:10F820008AE08093C40088E18093C100EE24FF2425 +:10F8300020E0552400E010E039E0432E9BE0292E23 +:10F84000312C2C0E3D1ECFC14150504060407040C5 +:10F8500011F43FE206C08091C00087FFF5CF3091E0 +:10F86000C600933021F1943028F4913099F0923011 +:10F87000C8F407C0953049F1953000F19630D1F5C4 +:10F8800035C03B3119F491E02BE134C03F3291F5A2 +:10F890003983BBC1313011F0351559F52327532E6B +:10F8A00092E028C0B32FA0E0232793E023C0832F4A +:10F8B00090E0A82BB92B232794E01CC03E30C9F45C +:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3 +:10F8D000FD1FEE0DFF1D30830894E11CF11C232752 +:10F8E000EA16FB0639F4D70196E004C0321709F492 +:10F8F0008CC190E041ED5AE363E570E0ACCF90E05D +:10F9000044C08D81803311F090E00AC08F8188233C +:10F9100011F49EE105C0813011F099E001C096E933 +:10F920001A821B828D818C838E818D839E831F82A0 +:10F9300047E050E0F4C01A8288E08B8381E48C8336 +:10F9400086E58D8382E58E8389E48F8383E58887CE +:10F9500080E589878FE58A8782E38B874BE050E0DB +:10F96000DEC08A81813941F0823941F0803911F459 +:10F970008FE005C080E003C082E001C08AE01A8207 +:10F980008B8343E050E0CBC091E01A8242E050E02C +:10F99000C7C08D81882311F48EE124C0813011F01D +:10F9A00089E020C086E91EC01A82E1E0F0E04092C2 +:10F9B0005700849118C08B81803579F48C81883010 +:10F9C00031F4E2E0F0E04092570084910BC0E0E0B7 +:10F9D000F0E040925700849105C0E3E0F0E04092EF +:10F9E000570084911A828B831C8244E050E097C0B8 +:10F9F000BC80AA248D81082F10E00A291B29000F42 +:10FA0000111F1A828AC09A8088248B81682F70E027 +:10FA100068297929933109F033C0F7EF0F3F1F07A9 +:10FA200010F0A8013FC023E0F80120935700E895AB +:10FA300007B600FCFDCFA801D1018C9111962C9145 +:10FA400011971296D22ECC2490E08C299D2921E08A +:10FA5000FA010C0120935700E89511244E5F5F4F87 +:10FA60006250704051F725E0F80120935700E89567 +:10FA700007B600FCFDCF81E180935700E89512C0E6 +:10FA8000A801FB01D10141BD52BD4F5F5F4F8D9178 +:10FA900080BDFA9AF99AF999FECF3197A1F7A8019A +:10FAA000460F571F1A828A0138C07A8066248B81DC +:10FAB000A82FB0E0A629B7291A828981843191F450 +:10FAC000BD019E012D5F3F4FF80185919491F90191 +:10FAD000808391832E5F3F4F0E5F1F4F62507040B7 +:10FAE00099F713C0A801BD019E012D5F3F4F41BD95 +:10FAF00052BD4F5F5F4FF89A80B5F90181939F0126 +:10FB000061507040A1F70A0F1B1FAD014D5F5F4FA1 +:10FB1000F901108204C080EC8A8342E050E090E05A +:10FB2000FBE1F093C6008091C00086FFFCCF80917E +:10FB3000C00080648093C0005092C6008091C000D5 +:10FB400086FFFCCF8091C00080648093C000652F49 +:10FB50005093C6008091C00086FFFCCF8091C0000A +:10FB600080648093C000342F4093C6008091C00011 +:10FB700086FFFCCF8091C00080648093C0008EE03F +:10FB80008093C6008091C00086FFFCCF8091C000AA +:10FB900080648093C00025E1252523272627FE01C8 +:10FBA000319610C030813093C6008091C00086FF2E +:10FBB000FCCF31968091C00080648093C0002327E1 +:10FBC000415050404115510569F72093C60080917E +:10FBD000C00086FFFCCF8091C00080648093C0008D +:10FBE000992349F4539441ED5AE363E570E090E0C2 +:10FBF000A0E0B0E030CE5A9881E180935700E895BC +:10FC000011241F921F920895FFCF9981933109F417 +:10FC1000FACE9431C8F4963009F4EACE973050F415 +:10FC2000923009F46CCE933009F49BCE913009F0F8 +:10FC300072CF81CE913109F4A7CE923108F0E1CE96 +:10FC4000903109F068CF5BCE983109F4B4CE993188 +:10FC500050F4953109F4D7CE953108F426CF96317A +:10FC600009F059CF22CF9B3109F493CE9C3120F477 +:10FC70009A3109F050CF98CE9D3109F442CE9F328F +:06FC800009F049CFB8CFE6 +:040000030000F80001 +:00000001FF diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644P-16MHz.hex b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644P-16MHz.hex new file mode 100644 index 000000000..a9105a221 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644P-16MHz.hex @@ -0,0 +1,75 @@ +:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A +:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010 +:10F8200088E08093C40088E18093C100EE24FF2427 +:10F8300020E0552400E010E039E0432E93E0292E2B +:10F84000312C2C0E3D1ECDC14150504060407040C7 +:10F8500011F43FE206C08091C00087FFF5CF3091E0 +:10F86000C600933021F1943028F4913099F0923011 +:10F87000C8F407C0953049F1953000F19630D1F5C4 +:10F8800035C03B3119F491E02BE134C03F3291F5A2 +:10F890003983B9C1313011F0351559F52327532E6D +:10F8A00092E028C0B32FA0E0232793E023C0832F4A +:10F8B00090E0A82BB92B232794E01CC03E30C9F45C +:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3 +:10F8D000FD1FEE0DFF1D30830894E11CF11C232752 +:10F8E000EA16FB0639F4D70196E004C0321709F492 +:10F8F0008AC190E044E755E962E470E0ACCF90E063 +:10F9000044C08D81803311F090E00AC08F8188233C +:10F9100011F49EE105C0813011F09AE001C096E932 +:10F920001A821B828D818C838E818D839E831F82A0 +:10F9300047E050E0F2C01A8288E08B8381E48C8338 +:10F9400086E58D8382E58E8389E48F8383E58887CE +:10F9500080E589878FE58A8782E38B874BE050E0DB +:10F96000DCC08A81813941F0823941F0803911F45B +:10F970008FE005C080E003C082E001C08AE01A8207 +:10F980008B8343E050E0C9C091E01A8242E050E02E +:10F99000C5C08D81882311F48EE124C0813011F01F +:10F9A0008AE020C086E91EC01A82E1E0F0E04092C1 +:10F9B0005700849118C08B81803579F48C81883010 +:10F9C00031F4E2E0F0E04092570084910BC0E0E0B7 +:10F9D000F0E040925700849105C0E3E0F0E04092EF +:10F9E000570084911A828B831C8244E050E095C0BA +:10F9F000BC80AA248D81082F10E00A291B29000F42 +:10FA0000111F1A8288C09A8088248B81682F70E029 +:10FA100068297929933109F034C0F7EF0F3F1F07A8 +:10FA200010F0A80141C023E0F80120935700E895A9 +:10FA300007B600FCFDCFA801DE011B968C91119644 +:10FA40002C9111971296D22ECC2490E08C299D29CE +:10FA500021E0FA010C0120935700E89511244E5F34 +:10FA60005F4F6250704051F725E0F8012093570036 +:10FA7000E89507B600FCFDCF81E180935700E8953B +:10FA800013C0A801FB01DE011B9641BD52BD4F5FB3 +:10FA90005F4F8D9180BDFA9AF99AF999FECF31970F +:10FAA000A1F7A801460F571F1A828A0134C07A8035 +:10FAB00066248B81A82FB0E0A629B7291A828981F4 +:10FAC000843181F4BD019101F80185919491F9018E +:10FAD000808391832E5F3F4F0E5F1F4F62507040B7 +:10FAE00099F711C0A801BD01910141BD52BD4F5F01 +:10FAF0005F4FF89A80B5F90181939F016150704082 +:10FB0000A1F70A0F1B1FAD014D5F5F4FF901108276 +:10FB100004C080EC8A8342E050E090E0FBE1F09387 +:10FB2000C6008091C00086FFFCCF8091C000806439 +:10FB30008093C0005092C6008091C00086FFFCCF29 +:10FB40008091C00080648093C000652F5093C600F0 +:10FB50008091C00086FFFCCF8091C00080648093BC +:10FB6000C000342F4093C6008091C00086FFFCCFB8 +:10FB70008091C00080648093C0008EE08093C600B6 +:10FB80008091C00086FFFCCF8091C000806480938C +:10FB9000C00025E1252523272627FE01319610C028 +:10FBA00030813093C6008091C00086FFFCCF319633 +:10FBB0008091C00080648093C00023274150504052 +:10FBC0004115510569F72093C6008091C00086FF5A +:10FBD000FCCF8091C00080648093C000992349F4D9 +:10FBE000539444E755E962E470E090E0A0E0B0E0AF +:10FBF00032CE5A9881E180935700E89511241F92E4 +:10FC00001F920895FFCF9981933109F4FCCE94316E +:10FC1000C8F4963009F4ECCE973050F4923009F4E1 +:10FC20006ECE933009F49DCE913009F072CF83CE21 +:10FC3000913109F4A9CE923108F0E3CE903109F068 +:10FC400068CF5DCE983109F4B6CE993150F4953134 +:10FC500009F4D9CE953108F42ACF963109F059CF5D +:10FC600026CF9B3109F495CE9C3120F49A3109F0CE +:10FC700050CF9ACE9D3109F444CE9F3209F049CF3E +:02FC8000B8CFFB +:040000030000F80001 +:00000001FF diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644P-20MHz.hex b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644P-20MHz.hex new file mode 100644 index 000000000..4ee0c6b1f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/bootloaders/Gen7/bootloader-644P-20MHz.hex @@ -0,0 +1,75 @@ +:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A +:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010 +:10F820008AE08093C40088E18093C100EE24FF2425 +:10F8300020E0552400E010E039E0432E93E0292E2B +:10F84000312C2C0E3D1ECDC14150504060407040C7 +:10F8500011F43FE206C08091C00087FFF5CF3091E0 +:10F86000C600933021F1943028F4913099F0923011 +:10F87000C8F407C0953049F1953000F19630D1F5C4 +:10F8800035C03B3119F491E02BE134C03F3291F5A2 +:10F890003983B9C1313011F0351559F52327532E6D +:10F8A00092E028C0B32FA0E0232793E023C0832F4A +:10F8B00090E0A82BB92B232794E01CC03E30C9F45C +:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3 +:10F8D000FD1FEE0DFF1D30830894E11CF11C232752 +:10F8E000EA16FB0639F4D70196E004C0321709F492 +:10F8F0008AC190E041ED5AE363E570E0ACCF90E05F +:10F9000044C08D81803311F090E00AC08F8188233C +:10F9100011F49EE105C0813011F09AE001C096E932 +:10F920001A821B828D818C838E818D839E831F82A0 +:10F9300047E050E0F2C01A8288E08B8381E48C8338 +:10F9400086E58D8382E58E8389E48F8383E58887CE +:10F9500080E589878FE58A8782E38B874BE050E0DB +:10F96000DCC08A81813941F0823941F0803911F45B +:10F970008FE005C080E003C082E001C08AE01A8207 +:10F980008B8343E050E0C9C091E01A8242E050E02E +:10F99000C5C08D81882311F48EE124C0813011F01F +:10F9A0008AE020C086E91EC01A82E1E0F0E04092C1 +:10F9B0005700849118C08B81803579F48C81883010 +:10F9C00031F4E2E0F0E04092570084910BC0E0E0B7 +:10F9D000F0E040925700849105C0E3E0F0E04092EF +:10F9E000570084911A828B831C8244E050E095C0BA +:10F9F000BC80AA248D81082F10E00A291B29000F42 +:10FA0000111F1A8288C09A8088248B81682F70E029 +:10FA100068297929933109F034C0F7EF0F3F1F07A8 +:10FA200010F0A80141C023E0F80120935700E895A9 +:10FA300007B600FCFDCFA801DE011B968C91119644 +:10FA40002C9111971296D22ECC2490E08C299D29CE +:10FA500021E0FA010C0120935700E89511244E5F34 +:10FA60005F4F6250704051F725E0F8012093570036 +:10FA7000E89507B600FCFDCF81E180935700E8953B +:10FA800013C0A801FB01DE011B9641BD52BD4F5FB3 +:10FA90005F4F8D9180BDFA9AF99AF999FECF31970F +:10FAA000A1F7A801460F571F1A828A0134C07A8035 +:10FAB00066248B81A82FB0E0A629B7291A828981F4 +:10FAC000843181F4BD019101F80185919491F9018E +:10FAD000808391832E5F3F4F0E5F1F4F62507040B7 +:10FAE00099F711C0A801BD01910141BD52BD4F5F01 +:10FAF0005F4FF89A80B5F90181939F016150704082 +:10FB0000A1F70A0F1B1FAD014D5F5F4FF901108276 +:10FB100004C080EC8A8342E050E090E0FBE1F09387 +:10FB2000C6008091C00086FFFCCF8091C000806439 +:10FB30008093C0005092C6008091C00086FFFCCF29 +:10FB40008091C00080648093C000652F5093C600F0 +:10FB50008091C00086FFFCCF8091C00080648093BC +:10FB6000C000342F4093C6008091C00086FFFCCFB8 +:10FB70008091C00080648093C0008EE08093C600B6 +:10FB80008091C00086FFFCCF8091C000806480938C +:10FB9000C00025E1252523272627FE01319610C028 +:10FBA00030813093C6008091C00086FFFCCF319633 +:10FBB0008091C00080648093C00023274150504052 +:10FBC0004115510569F72093C6008091C00086FF5A +:10FBD000FCCF8091C00080648093C000992349F4D9 +:10FBE000539441ED5AE363E570E090E0A0E0B0E0AB +:10FBF00032CE5A9881E180935700E89511241F92E4 +:10FC00001F920895FFCF9981933109F4FCCE94316E +:10FC1000C8F4963009F4ECCE973050F4923009F4E1 +:10FC20006ECE933009F49DCE913009F072CF83CE21 +:10FC3000913109F4A9CE923108F0E3CE903109F068 +:10FC400068CF5DCE983109F4B6CE993150F4953134 +:10FC500009F4D9CE953108F42ACF963109F059CF5D +:10FC600026CF9B3109F495CE9C3120F49A3109F0CE +:10FC700050CF9ACE9D3109F444CE9F3209F049CF3E +:02FC8000B8CFFB +:040000030000F80001 +:00000001FF diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/HardwareSerial.cpp b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/HardwareSerial.cpp new file mode 100644 index 000000000..8b1fcc601 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,239 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis +*/ + +#include +#include +#include +#include "wiring.h" +#include "wiring_private.h" + +#include "HardwareSerial.h" + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which rx_buffer_head is the index of the +// location to which to write the next incoming character and rx_buffer_tail +// is the index of the location from which to read. +#define RX_BUFFER_SIZE 128 + +struct ring_buffer { + unsigned char buffer[RX_BUFFER_SIZE]; + int head; + int tail; +}; + +ring_buffer rx_buffer = { { 0 }, 0, 0 }; + +#ifdef UDR1 +ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; +#endif + +#ifdef UDR2 +ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; +#endif +#ifdef UDR3 +ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *rx_buffer) +{ + int i = (rx_buffer->head + 1) % RX_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != rx_buffer->tail) { + rx_buffer->buffer[rx_buffer->head] = c; + rx_buffer->head = i; + } +} + +ISR(USART0_RX_vect) +{ + unsigned char c = UDR0; + store_char(c, &rx_buffer); +} + +#ifdef UDR1 +ISR(USART1_RX_vect) +{ + unsigned char c = UDR1; + store_char(c, &rx_buffer1); +} + +#ifdef UDR2 +ISR(USART2_RX_vect) +{ + unsigned char c = UDR2; + store_char(c, &rx_buffer2); +} + +#ifdef UDR2 +ISR(USART3_RX_vect) +{ + unsigned char c = UDR3; + store_char(c, &rx_buffer3); +} +#endif +#endif + +#else + +#if defined(__AVR_ATmega8__) +SIGNAL(SIG_UART_RECV) +#else +SIGNAL(USART_RX_vect) +#endif +{ +#if defined(__AVR_ATmega8__) + unsigned char c = UDR; +#else + unsigned char c = UDR0; +#endif + store_char(c, &rx_buffer); +} + +#endif + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udre = udre; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(long baud) +{ + uint16_t baud_setting; + bool use_u2x; + + // U2X mode is needed for baud rates higher than (CPU Hz / 16) + if (baud > F_CPU / 16) { + use_u2x = true; + } else { + // figure out if U2X mode would allow for a better connection + + // calculate the percent difference between the baud-rate specified and + // the real baud rate for both U2X and non-U2X mode (0-255 error percent) + uint8_t nonu2x_baud_error = abs((int)(255-((F_CPU/(16*(((F_CPU/8/baud-1)/2)+1))*255)/baud))); + uint8_t u2x_baud_error = abs((int)(255-((F_CPU/(8*(((F_CPU/4/baud-1)/2)+1))*255)/baud))); + + // prefer non-U2X mode because it handles clock skew better + use_u2x = (nonu2x_baud_error > u2x_baud_error); + } + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); +} + +void HardwareSerial::end() +{ + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); +} + +uint8_t HardwareSerial::available(void) +{ + return (RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_BUFFER_SIZE; +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (_rx_buffer->tail + 1) % RX_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // were full, not empty. + _rx_buffer->head = _rx_buffer->tail; +} + +void HardwareSerial::write(uint8_t c) +{ + while (!((*_ucsra) & (1 << _udre))) + ; + + *_udr = c; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(__AVR_ATmega8__) +HardwareSerial Serial(&rx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRE, U2X); +#else +HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0); +#endif + +#ifdef UDR1 +HardwareSerial Serial1(&rx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRE1, U2X1); +#endif + +#ifdef UDR2 +HardwareSerial Serial2(&rx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRE2, U2X2); +#endif +#ifdef UDR3 +HardwareSerial Serial3(&rx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRE3, U2X3); +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/HardwareSerial.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/HardwareSerial.h new file mode 100644 index 000000000..f609f73d3 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/HardwareSerial.h @@ -0,0 +1,69 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Print.h" + +struct ring_buffer; + +class HardwareSerial : public Print +{ + private: + ring_buffer *_rx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udre; + uint8_t _u2x; + public: + HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x); + void begin(long); + void end(); + uint8_t available(void); + int read(void); + void flush(void); + virtual void write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print +}; + +extern HardwareSerial Serial; + +#if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1280__) +extern HardwareSerial Serial1; +#endif + +#if defined(__AVR_ATmega1280__) +extern HardwareSerial Serial2; +extern HardwareSerial Serial3; +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Makefile b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Makefile new file mode 100644 index 000000000..571687db9 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Makefile @@ -0,0 +1,243 @@ +# Arduino 0011 Makefile +# Arduino adaptation by mellis, eighthave, oli.keller +# +# This makefile allows you to build sketches from the command line +# without the Arduino environment (or Java). +# +# Detailed instructions for using the makefile: +# +# 1. Copy this file into the folder with your sketch. There should be a +# file with the same name as the folder and with the extension .pde +# (e.g. foo.pde in the foo/ folder). +# +# 2. Modify the line containg "INSTALL_DIR" to point to the directory that +# contains the Arduino installation (for example, under Mac OS X, this +# might be /Applications/arduino-0012). +# +# 3. Modify the line containing "PORT" to refer to the filename +# representing the USB or serial connection to your Arduino board +# (e.g. PORT = /dev/tty.USB0). If the exact name of this file +# changes, you can use * as a wildcard (e.g. PORT = /dev/tty.usb*). +# +# 4. Set the line containing "MCU" to match your board's processor. +# Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth +# or Diecimila have the atmega168. If you're using a LilyPad Arduino, +# change F_CPU to 8000000. +# +# 5. At the command line, change to the directory containing your +# program's file and the makefile. +# +# 6. Type "make" and press enter to compile/verify your program. +# +# 7. Type "make upload", reset your Arduino board, and press enter to +# upload your program to the Arduino board. +# +# $Id$ + +TARGET = $(notdir $(CURDIR)) +INSTALL_DIR = /Users/dmellis/Source/arduino/trunk/build/macosx/build/work +PORT = /dev/tty.usb* +UPLOAD_RATE = 19200 +AVRDUDE_PROGRAMMER = stk500v1 +MCU = atmega168 +F_CPU = 16000000 + +############################################################################ +# Below here nothing should be changed... + +ARDUINO = $(INSTALL_DIR)/hardware/cores/arduino +AVR_TOOLS_PATH = $(INSTALL_DIR)/hardware/tools/avr/bin +SRC = $(ARDUINO)/pins_arduino.c $(ARDUINO)/wiring.c \ +$(ARDUINO)/wiring_analog.c $(ARDUINO)/wiring_digital.c \ +$(ARDUINO)/wiring_pulse.c $(ARDUINO)/wiring_serial.c \ +$(ARDUINO)/wiring_shift.c $(ARDUINO)/WInterrupts.c +CXXSRC = $(ARDUINO)/HardwareSerial.cpp $(ARDUINO)/WMath.cpp +FORMAT = ihex + + +# Name of this Makefile (used for "make depend"). +MAKEFILE = Makefile + +# Debugging format. +# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2. +# AVR (extended) COFF requires stabs, plus an avr-objcopy run. +DEBUG = stabs + +OPT = s + +# Place -D or -U options here +CDEFS = -DF_CPU=$(F_CPU) +CXXDEFS = -DF_CPU=$(F_CPU) + +# Place -I options here +CINCS = -I$(ARDUINO) +CXXINCS = -I$(ARDUINO) + +# Compiler flag to set the C Standard level. +# c89 - "ANSI" C +# gnu89 - c89 plus GCC extensions +# c99 - ISO C99 standard (not yet fully implemented) +# gnu99 - c99 plus GCC extensions +CSTANDARD = -std=gnu99 +CDEBUG = -g$(DEBUG) +CWARN = -Wall -Wstrict-prototypes +CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums +#CEXTRA = -Wa,-adhlns=$(<:.c=.lst) + +CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA) +CXXFLAGS = $(CDEFS) $(CINCS) -O$(OPT) +#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs +LDFLAGS = -lm + + +# Programming support using avrdude. Settings and variables. +AVRDUDE_PORT = $(PORT) +AVRDUDE_WRITE_FLASH = -U flash:w:applet/$(TARGET).hex +AVRDUDE_FLAGS = -V -F -C $(INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf \ +-p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \ +-b $(UPLOAD_RATE) + +# Program settings +CC = $(AVR_TOOLS_PATH)/avr-gcc +CXX = $(AVR_TOOLS_PATH)/avr-g++ +OBJCOPY = $(AVR_TOOLS_PATH)/avr-objcopy +OBJDUMP = $(AVR_TOOLS_PATH)/avr-objdump +AR = $(AVR_TOOLS_PATH)/avr-ar +SIZE = $(AVR_TOOLS_PATH)/avr-size +NM = $(AVR_TOOLS_PATH)/avr-nm +AVRDUDE = $(AVR_TOOLS_PATH)/avrdude +REMOVE = rm -f +MV = mv -f + +# Define all object files. +OBJ = $(SRC:.c=.o) $(CXXSRC:.cpp=.o) $(ASRC:.S=.o) + +# Define all listing files. +LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst) + +# Combine all necessary flags and optional flags. +# Add target processor to flags. +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) +ALL_CXXFLAGS = -mmcu=$(MCU) -I. $(CXXFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) + + +# Default target. +all: applet_files build sizeafter + +build: elf hex + +applet_files: $(TARGET).pde + # Here is the "preprocessing". + # It creates a .cpp file based with the same name as the .pde file. + # On top of the new .cpp file comes the WProgram.h header. + # At the end there is a generic main() function attached. + # Then the .cpp file will be compiled. Errors during compile will + # refer to this new, automatically generated, file. + # Not the original .pde file you actually edit... + test -d applet || mkdir applet + echo '#include "WProgram.h"' > applet/$(TARGET).cpp + cat $(TARGET).pde >> applet/$(TARGET).cpp + cat $(ARDUINO)/main.cxx >> applet/$(TARGET).cpp + +elf: applet/$(TARGET).elf +hex: applet/$(TARGET).hex +eep: applet/$(TARGET).eep +lss: applet/$(TARGET).lss +sym: applet/$(TARGET).sym + +# Program the device. +upload: applet/$(TARGET).hex + $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) + + + # Display size of file. +HEXSIZE = $(SIZE) --target=$(FORMAT) applet/$(TARGET).hex +ELFSIZE = $(SIZE) applet/$(TARGET).elf +sizebefore: + @if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi + +sizeafter: + @if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(HEXSIZE); echo; fi + + +# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. +COFFCONVERT=$(OBJCOPY) --debugging \ +--change-section-address .data-0x800000 \ +--change-section-address .bss-0x800000 \ +--change-section-address .noinit-0x800000 \ +--change-section-address .eeprom-0x810000 + + +coff: applet/$(TARGET).elf + $(COFFCONVERT) -O coff-avr applet/$(TARGET).elf $(TARGET).cof + + +extcoff: $(TARGET).elf + $(COFFCONVERT) -O coff-ext-avr applet/$(TARGET).elf $(TARGET).cof + + +.SUFFIXES: .elf .hex .eep .lss .sym + +.elf.hex: + $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ + +.elf.eep: + -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ + --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ + +# Create extended listing file from ELF output file. +.elf.lss: + $(OBJDUMP) -h -S $< > $@ + +# Create a symbol table from ELF output file. +.elf.sym: + $(NM) -n $< > $@ + + # Link: create ELF output file from library. +applet/$(TARGET).elf: $(TARGET).pde applet/core.a + $(CC) $(ALL_CFLAGS) -o $@ applet/$(TARGET).cpp -L. applet/core.a $(LDFLAGS) + +applet/core.a: $(OBJ) + @for i in $(OBJ); do echo $(AR) rcs applet/core.a $$i; $(AR) rcs applet/core.a $$i; done + + + +# Compile: create object files from C++ source files. +.cpp.o: + $(CXX) -c $(ALL_CXXFLAGS) $< -o $@ + +# Compile: create object files from C source files. +.c.o: + $(CC) -c $(ALL_CFLAGS) $< -o $@ + + +# Compile: create assembler files from C source files. +.c.s: + $(CC) -S $(ALL_CFLAGS) $< -o $@ + + +# Assemble: create object files from assembler source files. +.S.o: + $(CC) -c $(ALL_ASFLAGS) $< -o $@ + + + +# Target: clean project. +clean: + $(REMOVE) applet/$(TARGET).hex applet/$(TARGET).eep applet/$(TARGET).cof applet/$(TARGET).elf \ + applet/$(TARGET).map applet/$(TARGET).sym applet/$(TARGET).lss applet/core.a \ + $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d) + +depend: + if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \ + then \ + sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \ + $(MAKEFILE).$$$$ && \ + $(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \ + fi + echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \ + >> $(MAKEFILE); \ + $(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE) + +.PHONY: all build elf hex eep lss sym program coff extcoff clean depend applet_files sizebefore sizeafter diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Print.cpp b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Print.cpp new file mode 100644 index 000000000..d4833da7c --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Print.cpp @@ -0,0 +1,203 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "wiring.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +void Print::print(uint8_t b) +{ + this->write(b); +} + +void Print::print(char c) +{ + print((byte) c); +} + +void Print::print(const char c[]) +{ + while (*c) + print(*c++); +} + +void Print::print(int n) +{ + print((long) n); +} + +void Print::print(unsigned int n) +{ + print((unsigned long) n); +} + +void Print::print(long n) +{ + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); +} + +void Print::print(unsigned long n) +{ + printNumber(n, 10); +} + +void Print::print(long n, int base) +{ + if (base == 0) + print((char) n); + else if (base == 10) + print(n); + else + printNumber(n, base); +} + +void Print::print(double n) +{ + printFloat(n, 2); +} + +void Print::println(void) +{ + print('\r'); + print('\n'); +} + +void Print::println(char c) +{ + print(c); + println(); +} + +void Print::println(const char c[]) +{ + print(c); + println(); +} + +void Print::println(uint8_t b) +{ + print(b); + println(); +} + +void Print::println(int n) +{ + print(n); + println(); +} + +void Print::println(unsigned int n) +{ + print(n); + println(); +} + +void Print::println(long n) +{ + print(n); + println(); +} + +void Print::println(unsigned long n) +{ + print(n); + println(); +} + +void Print::println(long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(double n) +{ + print(n); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void Print::printNumber(unsigned long n, uint8_t base) +{ + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); +} + +void Print::printFloat(double number, uint8_t digits) +{ + // Handle negative numbers + if (number < 0.0) + { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Print.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Print.h new file mode 100644 index 000000000..c95a0dc09 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Print.h @@ -0,0 +1,59 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Print +{ + private: + void printNumber(unsigned long, uint8_t); + void printFloat(double, uint8_t); + public: + virtual void write(uint8_t); + void print(char); + void print(const char[]); + void print(uint8_t); + void print(int); + void print(unsigned int); + void print(long); + void print(unsigned long); + void print(long, int); + void print(double); + void println(void); + void println(char); + void println(const char[]); + void println(uint8_t); + void println(int); + void println(unsigned int); + void println(long); + void println(unsigned long); + void println(long, int); + void println(double); +}; + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Tone.cpp b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Tone.cpp new file mode 100644 index 000000000..827fe49ef --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/Tone.cpp @@ -0,0 +1,515 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions + +*************************************************/ + +#include +#include +#include +#include + +#if defined(__AVR_ATmega8__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(__AVR_ATmega1280__) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +#if defined(__AVR_ATmega1280__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { +#if !defined(__AVR_ATmega8__) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; +#endif + + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + +#if defined(__AVR_ATmega1280__) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + bitWrite(TCCR4B, WGM42, 1); + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; +#endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if !defined(__AVR_ATmega8__) + if (_timer == 0) + TCCR0B = prescalarbits; + else +#endif + TCCR2B = prescalarbits; + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#if defined(__AVR_ATmega1280__) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if !defined(__AVR_ATmega8__) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); + break; + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; + +#if defined(__AVR_ATmega1280__) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + switch (_timer) + { +#if defined(__AVR_ATmega8__) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; + case 2: + bitWrite(TIMSK2, OCIE2A, 0); + break; + +#else + case 0: + TIMSK0 = 0; + break; + case 1: + TIMSK1 = 0; + break; + case 2: + TIMSK2 = 0; + break; +#endif + +#if defined(__AVR_ATmega1280__) + case 3: + TIMSK3 = 0; + break; + case 4: + TIMSK4 = 0; + break; + case 5: + TIMSK5 = 0; + break; +#endif + } + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + TIMSK0 = 0; // disable the interrupt + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + TIMSK1 = 0; // disable the interrupt + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + TIMSK2 = 0; // disable the interrupt + *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + TIMSK3 = 0; // disable the interrupt + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + TIMSK4 = 0; // disable the interrupt + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + TIMSK5 = 0; // disable the interrupt + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WCharacter.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WConstants.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WConstants.h new file mode 100644 index 000000000..3e19ac44a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WConstants.h @@ -0,0 +1 @@ +#include "wiring.h" diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WInterrupts.c b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WInterrupts.c new file mode 100644 index 000000000..6f3f0b130 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WInterrupts.c @@ -0,0 +1,87 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis +*/ + +#include +#include +#include +#include +#include + +#include "WConstants.h" +#include "wiring_private.h" + +volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) +{ + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) + { + intFunc[interruptNum] = userFunc; + + //clear the config for the change settings + EICRA &= ~(B00000011 << (interruptNum * 2)); + + //set our mode. + EICRA |= (mode << (interruptNum * 2)); + + // Enable the interrupt. + EIMSK |= (1 << interruptNum); + } +} + +void detachInterrupt(uint8_t interruptNum) +{ + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) + { + // Disable the interrupt. + EIMSK &= ~(1 << interruptNum); + + intFunc[interruptNum] = 0; + } +} + +ISR(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +ISR(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +ISR(INT2_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +/* +SIGNAL(SIG_2WIRE_SERIAL) { + if(twiIntFunc) + twiIntFunc(); +} +*/ + diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WMath.cpp b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WMath.cpp new file mode 100644 index 000000000..7a230f542 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WMath.cpp @@ -0,0 +1,60 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.org.co + Copyright (c) 2004-06 Hernando Barragan + Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +extern "C" { + #include "stdlib.h" +} + +void randomSeed(unsigned int seed) +{ + if (seed != 0){ + srandom(seed); + } +} + +long random(long howbig) +{ + if (howbig == 0) { + return 0; + } + return random() % howbig; +} + +long random(long howsmall, long howbig) +{ + if (howsmall >= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WProgram.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WProgram.h new file mode 100644 index 000000000..2c7ed16d8 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WProgram.h @@ -0,0 +1,34 @@ +#ifndef WProgram_h +#define WProgram_h + +#include +#include +#include + +#include + +#include "wiring.h" + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WString.cpp b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WString.cpp new file mode 100644 index 000000000..db5a441dc --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WString.cpp @@ -0,0 +1,443 @@ +/* + WString.cpp - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include +#include "WProgram.h" +#include "WString.h" + + +String::String( const char *value ) +{ + if ( value == NULL ) + value = ""; + getBuffer( _length = strlen( value ) ); + if ( _buffer != NULL ) + strcpy( _buffer, value ); +} + +String::String( const String &value ) +{ + getBuffer( _length = value._length ); + if ( _buffer != NULL ) + strcpy( _buffer, value._buffer ); +} + +String::String( const char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL ) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const unsigned char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const int value, const int base ) +{ + char buf[33]; + itoa((signed long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned int value, const int base ) +{ + char buf[33]; + ultoa((unsigned long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const long value, const int base ) +{ + char buf[33]; + ltoa(value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned long value, const int base ) +{ + char buf[33]; + ultoa(value, buf, 10); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +char String::charAt( unsigned int loc ) const +{ + return operator[]( loc ); +} + +void String::setCharAt( unsigned int loc, const char aChar ) +{ + if(_buffer == NULL) return; + if(_length > loc) { + _buffer[loc] = aChar; + } +} + +int String::compareTo( const String &s2 ) const +{ + return strcmp( _buffer, s2._buffer ); +} + +const String & String::concat( const String &s2 ) +{ + return (*this) += s2; +} + +const String & String::operator=( const String &rhs ) +{ + if ( this == &rhs ) + return *this; + + if ( rhs._length > _length ) + { + free(_buffer); + getBuffer( rhs._length ); + } + + if ( _buffer != NULL ) { + _length = rhs._length; + strcpy( _buffer, rhs._buffer ); + } + return *this; +} + +//const String & String::operator+=( const char aChar ) +//{ +// if ( _length == _capacity ) +// doubleBuffer(); +// +// _buffer[ _length++ ] = aChar; +// _buffer[ _length ] = '\0'; +// return *this; +//} + +const String & String::operator+=( const String &other ) +{ + _length += other._length; + if ( _length > _capacity ) + { + char *temp = (char *)realloc(_buffer, _length + 1); + if ( temp != NULL ) { + _buffer = temp; + _capacity = _length; + } else { + _length -= other._length; + return *this; + } + } + strcat( _buffer, other._buffer ); + return *this; +} + + +int String::operator==( const String &rhs ) const +{ + return ( _length == rhs._length && strcmp( _buffer, rhs._buffer ) == 0 ); +} + +int String::operator!=( const String &rhs ) const +{ + return ( _length != rhs.length() || strcmp( _buffer, rhs._buffer ) != 0 ); +} + +int String::operator<( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) < 0; +} + +int String::operator>( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) > 0; +} + +int String::operator<=( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) <= 0; +} + +int String::operator>=( const String & rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) >= 0; +} + +char & String::operator[]( unsigned int index ) +{ + static char dummy_writable_char; + if (index >= _length || !_buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return _buffer[ index ]; +} + +char String::operator[]( unsigned int index ) const +{ + // need to check for valid index, to do later + return _buffer[ index ]; +} + +boolean String::endsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return strcmp( &_buffer[ _length - s2._length], s2._buffer ) == 0; +} + +boolean String::equals( const String &s2 ) const +{ + return ( _length == s2._length && strcmp( _buffer,s2._buffer ) == 0 ); +} + +boolean String::equalsIgnoreCase( const String &s2 ) const +{ + if ( this == &s2 ) + return true; //1; + else if ( _length != s2._length ) + return false; //0; + + return strcmp(toLowerCase()._buffer, s2.toLowerCase()._buffer) == 0; +} + +String String::replace( char findChar, char replaceChar ) +{ + if ( _buffer == NULL ) return *this; + String theReturn = _buffer; + char* temp = theReturn._buffer; + while( (temp = strchr( temp, findChar )) != 0 ) + *temp = replaceChar; + + return theReturn; +} + +String String::replace( const String& match, const String& replace ) +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer, newString; + + int loc; + while ( (loc = temp.indexOf( match )) != -1 ) + { + newString += temp.substring( 0, loc ); + newString += replace; + temp = temp.substring( loc + match._length ); + } + newString += temp; + return newString; +} + +int String::indexOf( char temp ) const +{ + return indexOf( temp, 0 ); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char* temp = strchr( &_buffer[fromIndex], ch ); + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::indexOf( const String &s2 ) const +{ + return indexOf( s2, 0 ); +} + +int String::indexOf( const String &s2, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char *theFind = strstr( &_buffer[ fromIndex ], s2._buffer ); + + if ( theFind == NULL ) + return -1; + + return theFind - _buffer; // pointer subtraction +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf( theChar, _length - 1 ); +} + +int String::lastIndexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + char tempchar = _buffer[fromIndex + 1]; + _buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( _buffer, ch ); + _buffer[fromIndex + 1] = tempchar; + + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::lastIndexOf( const String &s2 ) const +{ + return lastIndexOf( s2, _length - s2._length ); +} + +int String::lastIndexOf( const String &s2, unsigned int fromIndex ) const +{ + // check for empty strings + if ( s2._length == 0 || s2._length - 1 > fromIndex || fromIndex >= _length ) + return -1; + + // matching first character + char temp = s2[ 0 ]; + + for ( int i = fromIndex; i >= 0; i-- ) + { + if ( _buffer[ i ] == temp && (*this).substring( i, i + s2._length ).equals( s2 ) ) + return i; + } + return -1; +} + +boolean String::startsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return startsWith( s2, 0 ); +} + +boolean String::startsWith( const String &s2, unsigned int offset ) const +{ + if ( offset > _length - s2._length ) + return 0; + + return strncmp( &_buffer[offset], s2._buffer, s2._length ) == 0; +} + +String String::substring( unsigned int left ) const +{ + return substring( left, _length ); +} + +String String::substring( unsigned int left, unsigned int right ) const +{ + if ( left > right ) + { + int temp = right; + right = left; + left = temp; + } + + if ( right > _length ) + { + right = _length; + } + + char temp = _buffer[ right ]; // save the replaced character + _buffer[ right ] = '\0'; + String outPut = ( _buffer + left ); // pointer arithmetic + _buffer[ right ] = temp; //restore character + return outPut; +} + +String String::toLowerCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)tolower( temp._buffer[ i ] ); + return temp; +} + +String String::toUpperCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)toupper( temp._buffer[ i ] ); + return temp; +} + +String String::trim() const +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer; + unsigned int i,j; + + for ( i = 0; i < _length; i++ ) + { + if ( !isspace(_buffer[i]) ) + break; + } + + for ( j = temp._length - 1; j > i; j-- ) + { + if ( !isspace(_buffer[j]) ) + break; + } + + return temp.substring( i, j + 1); +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy((char *)buf, _buffer, len); + buf[len] = 0; +} + +void String::toCharArray(char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy(buf, _buffer, len); + buf[len] = 0; +} + + +long String::toInt() { + return atol(_buffer); +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WString.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WString.h new file mode 100644 index 000000000..cadddb947 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/WString.h @@ -0,0 +1,112 @@ +/* + WString.h - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_h +#define String_h + +//#include "WProgram.h" +#include +#include +#include + +class String +{ + public: + // constructors + String( const char *value = "" ); + String( const String &value ); + String( const char ); + String( const unsigned char ); + String( const int, const int base=10); + String( const unsigned int, const int base=10 ); + String( const long, const int base=10 ); + String( const unsigned long, const int base=10 ); + ~String() { free(_buffer); _length = _capacity = 0;} //added _length = _capacity = 0; + + // operators + const String & operator = ( const String &rhs ); + const String & operator +=( const String &rhs ); + //const String & operator +=( const char ); + int operator ==( const String &rhs ) const; + int operator !=( const String &rhs ) const; + int operator < ( const String &rhs ) const; + int operator > ( const String &rhs ) const; + int operator <=( const String &rhs ) const; + int operator >=( const String &rhs ) const; + char operator []( unsigned int index ) const; + char& operator []( unsigned int index ); + //operator const char *() const { return _buffer; } + + // general methods + char charAt( unsigned int index ) const; + int compareTo( const String &anotherString ) const; + unsigned char endsWith( const String &suffix ) const; + unsigned char equals( const String &anObject ) const; + unsigned char equalsIgnoreCase( const String &anotherString ) const; + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + const unsigned int length( ) const { return _length; } + void setCharAt(unsigned int index, const char ch); + unsigned char startsWith( const String &prefix ) const; + unsigned char startsWith( const String &prefix, unsigned int toffset ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + String toLowerCase( ) const; + String toUpperCase( ) const; + String trim( ) const; + void getBytes(unsigned char *buf, unsigned int bufsize); + void toCharArray(char *buf, unsigned int bufsize); + long toInt( ); + const String& concat( const String &str ); + String replace( char oldChar, char newChar ); + String replace( const String& match, const String& replace ); + friend String operator + ( String lhs, const String &rhs ); + + protected: + char *_buffer; // the actual char array + unsigned int _capacity; // the array length minus one (for the '\0') + unsigned int _length; // the String length (not counting the '\0') + + void getBuffer(unsigned int maxStrLen); + + private: + +}; + +// allocate buffer space +inline void String::getBuffer(unsigned int maxStrLen) +{ + _capacity = maxStrLen; + _buffer = (char *) malloc(_capacity + 1); + if (_buffer == NULL) _length = _capacity = 0; +} + +inline String operator+( String lhs, const String &rhs ) +{ + return lhs += rhs; +} + + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/binary.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/main.cpp b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/main.cpp new file mode 100644 index 000000000..cc6e81d90 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/main.cpp @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/main.cxx b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/main.cxx new file mode 100644 index 000000000..52351e4c9 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/main.cxx @@ -0,0 +1,12 @@ +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/pins_arduino.c b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/pins_arduino.c new file mode 100644 index 000000000..c67ab73fb --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/pins_arduino.c @@ -0,0 +1,200 @@ +/* + pins_arduino.c - pin definitions for the Arduino board + Part of Arduino / Wiring Lite + + Copyright (c) 2005 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: pins_arduino.c 254 2007-04-20 23:17:38Z mellis $ +*/ + +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +// On the Sanguino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA644P / SANGUINO +// +// +---\/---+ +// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31) +// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30) +// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) +// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) +// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) +// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) +// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) +// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) +// RST 9| |32 AREF +// VCC 10| |31 GND +// GND 11| |30 AVCC +// XTAL2 12| |29 PC7 (D 23) +// XTAL1 13| |28 PC6 (D 22) +// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI +// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO +// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS +// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK +// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA +// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL +// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM +// +--------+ +// + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint8_t PROGMEM port_to_mode_PGM[] = +{ + NOT_A_PORT, + (uint8_t) &DDRA, + (uint8_t) &DDRB, + (uint8_t) &DDRC, + (uint8_t) &DDRD, +}; + +const uint8_t PROGMEM port_to_output_PGM[] = +{ + NOT_A_PORT, + (uint8_t) &PORTA, + (uint8_t) &PORTB, + (uint8_t) &PORTC, + (uint8_t) &PORTD, +}; + +const uint8_t PROGMEM port_to_input_PGM[] = +{ + NOT_A_PORT, + (uint8_t) &PINA, + (uint8_t) &PINB, + (uint8_t) &PINC, + (uint8_t) &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = +{ + PB, /* 0 */ + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PD, /* 8 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PC, /* 16 */ + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PA, /* 24 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA /* 31 */ +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = +{ + _BV(0), /* 0, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 16, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(7), /* 24, port A */ + _BV(6), + _BV(5), + _BV(4), + _BV(3), + _BV(2), + _BV(1), + _BV(0) +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = +{ + NOT_ON_TIMER, /* 0 - PB0 */ + NOT_ON_TIMER, /* 1 - PB1 */ + NOT_ON_TIMER, /* 2 - PB2 */ + TIMER0A, /* 3 - PB3 */ + TIMER0B, /* 4 - PB4 */ + NOT_ON_TIMER, /* 5 - PB5 */ + NOT_ON_TIMER, /* 6 - PB6 */ + NOT_ON_TIMER, /* 7 - PB7 */ + NOT_ON_TIMER, /* 8 - PD0 */ + NOT_ON_TIMER, /* 9 - PD1 */ + NOT_ON_TIMER, /* 10 - PD2 */ + NOT_ON_TIMER, /* 11 - PD3 */ + TIMER1B, /* 12 - PD4 */ + TIMER1A, /* 13 - PD5 */ + TIMER2B, /* 14 - PD6 */ + TIMER2A, /* 15 - PD7 */ + NOT_ON_TIMER, /* 16 - PC0 */ + NOT_ON_TIMER, /* 17 - PC1 */ + NOT_ON_TIMER, /* 18 - PC2 */ + NOT_ON_TIMER, /* 19 - PC3 */ + NOT_ON_TIMER, /* 20 - PC4 */ + NOT_ON_TIMER, /* 21 - PC5 */ + NOT_ON_TIMER, /* 22 - PC6 */ + NOT_ON_TIMER, /* 23 - PC7 */ + NOT_ON_TIMER, /* 24 - PA0 */ + NOT_ON_TIMER, /* 25 - PA1 */ + NOT_ON_TIMER, /* 26 - PA2 */ + NOT_ON_TIMER, /* 27 - PA3 */ + NOT_ON_TIMER, /* 28 - PA4 */ + NOT_ON_TIMER, /* 29 - PA5 */ + NOT_ON_TIMER, /* 30 - PA6 */ + NOT_ON_TIMER /* 31 - PA7 */ +}; diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/pins_arduino.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/pins_arduino.h new file mode 100644 index 000000000..e0b7add86 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/pins_arduino.h @@ -0,0 +1,65 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +extern const uint8_t PROGMEM port_to_mode_PGM[]; +extern const uint8_t PROGMEM port_to_input_PGM[]; +extern const uint8_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_byte( port_to_mode_PGM + (P))) ) + +#endif diff --git a/Marlin/wiring.c b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring.c similarity index 88% rename from Marlin/wiring.c rename to ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring.c index adee6cbe4..1a102ae0f 100644 --- a/Marlin/wiring.c +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring.c @@ -24,12 +24,19 @@ #include "wiring_private.h" +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_clock_cycles = 0; volatile unsigned long timer0_millis = 0; SIGNAL(TIMER0_OVF_vect) { + timer0_overflow_count++; // timer 0 prescale factor is 64 and the timer overflows at 256 - timer0_millis++; + timer0_clock_cycles += 64UL * 256UL; + while (timer0_clock_cycles > clockCyclesPerMicrosecond() * 1000UL) { + timer0_clock_cycles -= clockCyclesPerMicrosecond() * 1000UL; + timer0_millis++; + } } unsigned long millis() @@ -46,6 +53,27 @@ unsigned long millis() return m; } +unsigned long micros() { + unsigned long m, t; + uint8_t oldSREG = SREG; + + cli(); + t = TCNT0; + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t == 0)) + t = 256; +#else + if ((TIFR & _BV(TOV0)) && (t == 0)) + t = 256; +#endif + + m = timer0_overflow_count; + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + void delay(unsigned long ms) { unsigned long start = millis(); @@ -139,7 +167,7 @@ void init() // this is better for motors as it ensures an even waveform // note, however, that fast pwm mode can achieve a frequency of up // 8 MHz (with a 16 MHz clock) at 50% duty cycle -#if 0 + // set timer 1 prescale factor to 64 sbi(TCCR1B, CS11); sbi(TCCR1B, CS10); @@ -172,5 +200,4 @@ void init() //TODO: test to see if disabling this helps? //UCSR1B = 0; #endif -#endif } diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring.h new file mode 100644 index 000000000..48ff04a75 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring.h @@ -0,0 +1,135 @@ +/* + wiring.h - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 387 2008-03-08 21:30:00Z mellis $ +*/ + +#ifndef Wiring_h +#define Wiring_h + +#include +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.14159265 +#define HALF_PI 1.57079 +#define TWO_PI 6.283185 +#define DEG_TO_RAD 0.01745329 +#define RAD_TO_DEG 57.2957786 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#define INTERNAL 3 +#define DEFAULT 1 +#define EXTERNAL 0 + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#if __AVR_LIBC_VERSION__ < 10701UL +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#endif +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() ) +#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() ) + +#define lowByte(w) ((w) & 0xff) +#define highByte(w) ((w) >> 8) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + +typedef unsigned int word; + +#define bit(b) (1 << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +void beginSerial(uint8_t, long); +void serialWrite(uint8_t, unsigned char); +int serialAvailable(uint8_t); +int serialRead(uint8_t); +void serialFlush(uint8_t); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_analog.c b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_analog.c new file mode 100644 index 000000000..b98bb1a19 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_analog.c @@ -0,0 +1,116 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high, ch = analogInPinToBit(pin); + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). + // the final AND is to clear the pos/neg reference bits + ADMUX = ((analog_reference << 6) | (pin & 0x0f)) & B11000111; + + // without a delay, we seem to read from the wrong channel + //delay(1); + + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + + if (digitalPinToTimer(pin) == TIMER1A) { + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + // set pwm duty + OCR1A = val; + } else if (digitalPinToTimer(pin) == TIMER1B) { + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + // set pwm duty + OCR1B = val; + } else if (digitalPinToTimer(pin) == TIMER0A) { + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + // set pwm duty + OCR0A = val; + } else if (digitalPinToTimer(pin) == TIMER0B) { + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + // set pwm duty + OCR0B = val; + } else if (digitalPinToTimer(pin) == TIMER2A) { + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + // set pwm duty + OCR2A = val; + } else if (digitalPinToTimer(pin) == TIMER2B) { + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + // set pwm duty + OCR2B = val; + } else if (val < 128) + //fail semi-intelligently + digitalWrite(pin, LOW); + else + digitalWrite(pin, HIGH); +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_digital.c b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_digital.c new file mode 100644 index 000000000..3d4b4ebd1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_digital.c @@ -0,0 +1,95 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + + if (mode == INPUT) *reg &= ~bit; + else *reg |= bit; +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +static inline void turnOffPWM(uint8_t timer) +{ + if (timer == TIMER0A) cbi(TCCR0A, COM0A1); + if (timer == TIMER0B) cbi(TCCR0A, COM0B1); + if (timer == TIMER1A) cbi(TCCR1A, COM1A1); + if (timer == TIMER1B) cbi(TCCR1A, COM1B1); + if (timer == TIMER2A) cbi(TCCR2A, COM2A1); + if (timer == TIMER2B) cbi(TCCR2A, COM2B1); +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + if (val == LOW) *out &= ~bit; + else *out |= bit; +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + + return LOW; +} diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_private.h b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_private.h new file mode 100644 index 000000000..14394a0b6 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_private.h @@ -0,0 +1,60 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include +#include +#include + +#include "wiring.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 + +#define EXTERNAL_NUM_INTERRUPTS 3 + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_pulse.c b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_pulse.c new file mode 100644 index 000000000..8f232f1d5 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_pulse.c @@ -0,0 +1,66 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) + width++; + + // convert the reading to microseconds. The loop has been determined + // to be 10 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 10 + 16); +} diff --git a/Marlin/wiring_serial.c b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_serial.c similarity index 95% rename from Marlin/wiring_serial.c rename to ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_serial.c index c027944c9..a3314faa8 100644 --- a/Marlin/wiring_serial.c +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_serial.c @@ -31,7 +31,6 @@ // location to which to write the next incoming character and rx_buffer_tail // is the index of the location from which to read. #define RX_BUFFER_SIZE 128 -#define RX_BUFFER_MASK 0x7f #if defined(__AVR_ATmega644P__) unsigned char rx_buffer[2][RX_BUFFER_SIZE]; @@ -91,7 +90,7 @@ void serialWrite(uint8_t uart, unsigned char c) int serialAvailable(uint8_t uart) { - return (RX_BUFFER_SIZE + rx_buffer_head[uart] - rx_buffer_tail[uart]) & RX_BUFFER_MASK; + return (RX_BUFFER_SIZE + rx_buffer_head[uart] - rx_buffer_tail[uart]) % RX_BUFFER_SIZE; } int serialRead(uint8_t uart) @@ -101,7 +100,7 @@ int serialRead(uint8_t uart) return -1; } else { unsigned char c = rx_buffer[uart][rx_buffer_tail[uart]]; - rx_buffer_tail[uart] = (rx_buffer_tail[uart] + 1) & RX_BUFFER_MASK; + rx_buffer_tail[uart] = (rx_buffer_tail[uart] + 1) % RX_BUFFER_SIZE; return c; } } @@ -121,7 +120,7 @@ ISR(USART##uart_##_RX_vect) \ { \ unsigned char c = UDR##uart_; \ \ - int i = (rx_buffer_head[uart_] + 1) & RX_BUFFER_MASK; \ + int i = (rx_buffer_head[uart_] + 1) % RX_BUFFER_SIZE; \ \ /* if we should be storing the received character into the location \ just before the tail (meaning that the head would advance to the \ diff --git a/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_shift.c b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_shift.c new file mode 100644 index 000000000..956f86429 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Gen7/cores/arduino/wiring_shift.c @@ -0,0 +1,40 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val) +{ + int i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/boards.txt b/ArduinoAddons/Arduino_0.xx/Sanguino/boards.txt new file mode 100644 index 000000000..4e4d214b1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/boards.txt @@ -0,0 +1,99 @@ +############################################################## + +sanguino.name=Sanguino +sanguino.upload.protocol=stk500 +sanguino.upload.maximum_size=63488 +sanguino.upload.speed=38400 +sanguino.bootloader.low_fuses=0xFF +sanguino.bootloader.high_fuses=0xDC +sanguino.bootloader.extended_fuses=0xFD +sanguino.bootloader.path=atmega644p +sanguino.bootloader.file=ATmegaBOOT_644P.hex +sanguino.bootloader.unlock_bits=0x3F +sanguino.bootloader.lock_bits=0x0F +sanguino.build.mcu=atmega644p +sanguino.build.f_cpu=16000000L +sanguino.build.core=arduino + +############################################################## + +atmega644.name=Sanguino W/ ATmega644P + +atmega644.upload.protocol=stk500 +atmega644.upload.maximum_size=63488 +atmega644.upload.speed=57600 + +atmega644.bootloader.low_fuses=0xFF +atmega644.bootloader.high_fuses=0x9A +atmega644.bootloader.extended_fuses=0xFF +atmega644.bootloader.path=atmega +atmega644.bootloader.file=ATmegaBOOT_168_atmega644p.hex +#atmega644.bootloader.file=ATmegaBOOT_644P.hex +atmega644.bootloader.unlock_bits=0x3F +atmega644.bootloader.lock_bits=0x0F + +atmega644.build.mcu=atmega644p +atmega644.build.f_cpu=16000000L +atmega644.build.core=arduino + +############################################################## + +atmega12848m.name=Sanguino W/ ATmega1284p 8mhz + +atmega12848m.upload.protocol=stk500 +atmega12848m.upload.maximum_size=131072 +atmega12848m.upload.speed=19200 + +atmega12848m.bootloader.low_fuses=0xD6 +atmega12848m.bootloader.high_fuses=0xDA +atmega12848m.bootloader.extended_fuses=0xFD +atmega12848m.bootloader.path=atmega +atmega12848m.bootloader.file=ATmegaBOOT_168_atmega1284p_8m.hex +atmega12848m.bootloader.unlock_bits=0x3F +atmega12848m.bootloader.lock_bits=0x0F + +atmega12848m.build.mcu=atmega1284p +atmega12848m.build.f_cpu=8000000L +atmega12848m.build.core=arduino + +############################################################## + +atmega1284.name=Sanguino W/ ATmega1284p 16mhz + +atmega1284.upload.protocol=stk500 +atmega1284.upload.maximum_size=131072 +atmega1284.upload.speed=57600 + +atmega1284.bootloader.low_fuses=0xD6 +atmega1284.bootloader.high_fuses=0xDA +atmega1284.bootloader.extended_fuses=0xFD +atmega1284.bootloader.path=atmega +atmega1284.bootloader.file=ATmegaBOOT_168_atmega1284p.hex +atmega1284.bootloader.unlock_bits=0x3F +atmega1284.bootloader.lock_bits=0x0F + +atmega1284.build.mcu=atmega1284p +atmega1284.build.f_cpu=16000000L +atmega1284.build.core=arduino + + +############################################################## + +atmega1284s.name=Sanguino W/ ATmega1284p 20mhz + +atmega1284s.upload.protocol=stk500 +atmega1284s.upload.maximum_size=131072 +atmega1284s.upload.speed=57600 + +atmega1284s.bootloader.low_fuses=0xD6 +atmega1284s.bootloader.high_fuses=0xDA +atmega1284s.bootloader.extended_fuses=0xFD +atmega1284s.bootloader.path=atmega +atmega1284s.bootloader.file=ATmegaBOOT_168_atmega1284p.hex +atmega1284s.bootloader.unlock_bits=0x3F +atmega1284s.bootloader.lock_bits=0x0F + +atmega1284s.build.mcu=atmega1284p +atmega1284s.build.f_cpu=20000000L +atmega1284s.build.core=arduino +# diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/Makefile b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/Makefile new file mode 100644 index 000000000..742fd4b79 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/Makefile @@ -0,0 +1,470 @@ +# Makefile for ATmegaBOOT +# E.Lins, 18.7.2005 +# $Id$ +# +# Instructions +# +# To make bootloader .hex file: +# make diecimila +# make lilypad +# make ng +# etc... +# +# To burn bootloader .hex file: +# make diecimila_isp +# make lilypad_isp +# make ng_isp +# etc... + +# program name should not be changed... +PROGRAM = optiboot + +# The default behavior is to build using tools that are in the users +# current path variables, but we can also build using an installed +# Arduino user IDE setup, or the Arduino source tree. +# Uncomment this next lines to build within the arduino environment, +# using the arduino-included avrgcc toolset (mac and pc) +# ENV ?= arduino +# ENV ?= arduinodev +# OS ?= macosx +# OS ?= windows + + +# enter the parameters for the avrdude isp tool +ISPTOOL = stk500v2 +ISPPORT = usb +ISPSPEED = -b 115200 + +MCU_TARGET = atmega168 +LDSECTIONS = -Wl,--section-start=.text=0x3e00 -Wl,--section-start=.version=0x3ffe + +# Build environments +# Start of some ugly makefile-isms to allow optiboot to be built +# in several different environments. See the README.TXT file for +# details. + +# default +fixpath = $(1) + +ifeq ($(ENV), arduino) +# For Arduino, we assume that we're connected to the optiboot directory +# included with the arduino distribution, which means that the full set +# of avr-tools are "right up there" in standard places. +TOOLROOT = ../../../tools +GCCROOT = $(TOOLROOT)/avr/bin/ +AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf + +ifeq ($(OS), windows) +# On windows, SOME of the tool paths will need to have backslashes instead +# of forward slashes (because they use windows cmd.exe for execution instead +# of a unix/mingw shell?) We also have to ensure that a consistent shell +# is used even if a unix shell is installed (ie as part of WINAVR) +fixpath = $(subst /,\,$1) +SHELL = cmd.exe +endif + +else ifeq ($(ENV), arduinodev) +# Arduino IDE source code environment. Use the unpacked compilers created +# by the build (you'll need to do "ant build" first.) +ifeq ($(OS), macosx) +TOOLROOT = ../../../../build/macosx/work/Arduino.app/Contents/Resources/Java/hardware/tools +endif +ifeq ($(OS), windows) +TOOLROOT = ../../../../build/windows/work/hardware/tools +endif + +GCCROOT = $(TOOLROOT)/avr/bin/ +AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf + +else +GCCROOT = +AVRDUDE_CONF = +endif +# +# End of build environment code. + + +# the efuse should really be 0xf8; since, however, only the lower +# three bits of that byte are used on the atmega168, avrdude gets +# confused if you specify 1's for the higher bits, see: +# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/ +# +# similarly, the lock bits should be 0xff instead of 0x3f (to +# unlock the bootloader section) and 0xcf instead of 0x2f (to +# lock it), but since the high two bits of the lock byte are +# unused, avrdude would get confused. + +ISPFUSES = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \ + -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ + -e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m \ + -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m +ISPFLASH = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \ + -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ + -U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x2f:m + +STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" +STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ +-lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt +STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt + +OBJ = $(PROGRAM).o +OPTIMIZE = -Os -fno-inline-small-functions -fno-split-wide-types -mshort-calls + +DEFS = +LIBS = + +CC = $(GCCROOT)avr-gcc + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) +override LDFLAGS = $(LDSECTIONS) -Wl,--relax -Wl,--gc-sections -nostartfiles -nostdlib + +OBJCOPY = $(GCCROOT)avr-objcopy +OBJDUMP = $(call fixpath,$(GCCROOT)avr-objdump) + +SIZE = $(GCCROOT)avr-size + +# Test platforms +# Virtual boot block test +virboot328: TARGET = atmega328 +virboot328: MCU_TARGET = atmega328p +virboot328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DVIRTUAL_BOOT' +virboot328: AVR_FREQ = 16000000L +virboot328: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe +virboot328: $(PROGRAM)_atmega328.hex +virboot328: $(PROGRAM)_atmega328.lst + +# 20MHz clocked platforms +# +# These are capable of 230400 baud, or 115200 baud on PC (Arduino Avrdude issue) +# + +pro20: TARGET = pro_20mhz +pro20: MCU_TARGET = atmega168 +pro20: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +pro20: AVR_FREQ = 20000000L +pro20: $(PROGRAM)_pro_20mhz.hex +pro20: $(PROGRAM)_pro_20mhz.lst + +pro20_isp: pro20 +pro20_isp: TARGET = pro_20mhz +# 2.7V brownout +pro20_isp: HFUSE = DD +# Full swing xtal (20MHz) 258CK/14CK+4.1ms +pro20_isp: LFUSE = C6 +# 512 byte boot +pro20_isp: EFUSE = 04 +pro20_isp: isp + +# 16MHz clocked platforms +# +# These are capable of 230400 baud, or 115200 baud on PC (Arduino Avrdude issue) +# + +pro16: TARGET = pro_16MHz +pro16: MCU_TARGET = atmega168 +pro16: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +pro16: AVR_FREQ = 16000000L +pro16: $(PROGRAM)_pro_16MHz.hex +pro16: $(PROGRAM)_pro_16MHz.lst + +pro16_isp: pro16 +pro16_isp: TARGET = pro_16MHz +# 2.7V brownout +pro16_isp: HFUSE = DD +# Full swing xtal (20MHz) 258CK/14CK+4.1ms +pro16_isp: LFUSE = C6 +# 512 byte boot +pro16_isp: EFUSE = 04 +pro16_isp: isp + +# Diecimila, Duemilanove with m168, and NG use identical bootloaders +# Call it "atmega168" for generality and clarity, keep "diecimila" for +# backward compatibility of makefile +# +atmega168: TARGET = atmega168 +atmega168: MCU_TARGET = atmega168 +atmega168: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +atmega168: AVR_FREQ = 16000000L +atmega168: $(PROGRAM)_atmega168.hex +atmega168: $(PROGRAM)_atmega168.lst + +atmega168_isp: atmega168 +atmega168_isp: TARGET = atmega168 +# 2.7V brownout +atmega168_isp: HFUSE = DD +# Low power xtal (16MHz) 16KCK/14CK+65ms +atmega168_isp: LFUSE = FF +# 512 byte boot +atmega168_isp: EFUSE = 04 +atmega168_isp: isp + +diecimila: TARGET = diecimila +diecimila: MCU_TARGET = atmega168 +diecimila: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +diecimila: AVR_FREQ = 16000000L +diecimila: $(PROGRAM)_diecimila.hex +diecimila: $(PROGRAM)_diecimila.lst + +diecimila_isp: diecimila +diecimila_isp: TARGET = diecimila +# 2.7V brownout +diecimila_isp: HFUSE = DD +# Low power xtal (16MHz) 16KCK/14CK+65ms +diecimila_isp: LFUSE = FF +# 512 byte boot +diecimila_isp: EFUSE = 04 +diecimila_isp: isp + +atmega328: TARGET = atmega328 +atmega328: MCU_TARGET = atmega328p +atmega328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +atmega328: AVR_FREQ = 16000000L +atmega328: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe +atmega328: $(PROGRAM)_atmega328.hex +atmega328: $(PROGRAM)_atmega328.lst + +atmega328_isp: atmega328 +atmega328_isp: TARGET = atmega328 +atmega328_isp: MCU_TARGET = atmega328p +# 512 byte boot, SPIEN +atmega328_isp: HFUSE = DE +# Low power xtal (16MHz) 16KCK/14CK+65ms +atmega328_isp: LFUSE = FF +# 2.7V brownout +atmega328_isp: EFUSE = 05 +atmega328_isp: isp + +atmega1284: TARGET = atmega1284p +atmega1284: MCU_TARGET = atmega1284p +atmega1284: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DBIGBOOT' +atmega1284: AVR_FREQ = 16000000L +atmega1284: LDSECTIONS = -Wl,--section-start=.text=0x1fc00 +atmega1284: $(PROGRAM)_atmega1284p.hex +atmega1284: $(PROGRAM)_atmega1284p.lst + +atmega1284_isp: atmega1284 +atmega1284_isp: TARGET = atmega1284p +atmega1284_isp: MCU_TARGET = atmega1284p +# 1024 byte boot +atmega1284_isp: HFUSE = DE +# Low power xtal (16MHz) 16KCK/14CK+65ms +atmega1284_isp: LFUSE = FF +# 2.7V brownout +atmega1284_isp: EFUSE = FD +atmega1284_isp: isp + +# Sanguino has a minimum boot size of 1024 bytes, so enable extra functions +# +sanguino: TARGET = atmega644p +sanguino: MCU_TARGET = atmega644p +sanguino: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DBIGBOOT' +sanguino: AVR_FREQ = 16000000L +sanguino: LDSECTIONS = -Wl,--section-start=.text=0xfc00 +sanguino: $(PROGRAM)_atmega644p.hex +sanguino: $(PROGRAM)_atmega644p.lst + +sanguino_isp: sanguino +sanguino_isp: TARGET = atmega644p +sanguino_isp: MCU_TARGET = atmega644p +# 1024 byte boot +sanguino_isp: HFUSE = DE +# Low power xtal (16MHz) 16KCK/14CK+65ms +sanguino_isp: LFUSE = FF +# 2.7V brownout +sanguino_isp: EFUSE = 05 +sanguino_isp: isp + +# Mega has a minimum boot size of 1024 bytes, so enable extra functions +#mega: TARGET = atmega1280 +mega: MCU_TARGET = atmega1280 +mega: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' '-DBIGBOOT' +mega: AVR_FREQ = 16000000L +mega: LDSECTIONS = -Wl,--section-start=.text=0x1fc00 +mega: $(PROGRAM)_atmega1280.hex +mega: $(PROGRAM)_atmega1280.lst + +mega_isp: mega +mega_isp: TARGET = atmega1280 +mega_isp: MCU_TARGET = atmega1280 +# 1024 byte boot +mega_isp: HFUSE = DE +# Low power xtal (16MHz) 16KCK/14CK+65ms +mega_isp: LFUSE = FF +# 2.7V brownout +mega_isp: EFUSE = 05 +mega_isp: isp + +# ATmega8 +# +atmega8: TARGET = atmega8 +atmega8: MCU_TARGET = atmega8 +atmega8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +atmega8: AVR_FREQ = 16000000L +atmega8: LDSECTIONS = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe +atmega8: $(PROGRAM)_atmega8.hex +atmega8: $(PROGRAM)_atmega8.lst + +atmega8_isp: atmega8 +atmega8_isp: TARGET = atmega8 +atmega8_isp: MCU_TARGET = atmega8 +# SPIEN, CKOPT, Bootsize=512B +atmega8_isp: HFUSE = CC +# 2.7V brownout, Low power xtal (16MHz) 16KCK/14CK+65ms +atmega8_isp: LFUSE = BF +atmega8_isp: isp + +# ATmega88 +# +atmega88: TARGET = atmega88 +atmega88: MCU_TARGET = atmega88 +atmega88: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +atmega88: AVR_FREQ = 16000000L +atmega88: LDSECTIONS = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe +atmega88: $(PROGRAM)_atmega88.hex +atmega88: $(PROGRAM)_atmega88.lst + +atmega88_isp: atmega88 +atmega88_isp: TARGET = atmega88 +atmega88_isp: MCU_TARGET = atmega88 +# 2.7V brownout +atmega88_isp: HFUSE = DD +# Low power xtal (16MHz) 16KCK/14CK+65ms +atemga88_isp: LFUSE = FF +# 512 byte boot +atmega88_isp: EFUSE = 04 +atmega88_isp: isp + + +# 8MHz clocked platforms +# +# These are capable of 115200 baud +# + +lilypad: TARGET = lilypad +lilypad: MCU_TARGET = atmega168 +lilypad: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +lilypad: AVR_FREQ = 8000000L +lilypad: $(PROGRAM)_lilypad.hex +lilypad: $(PROGRAM)_lilypad.lst + +lilypad_isp: lilypad +lilypad_isp: TARGET = lilypad +# 2.7V brownout +lilypad_isp: HFUSE = DD +# Internal 8MHz osc (8MHz) Slow rising power +lilypad_isp: LFUSE = E2 +# 512 byte boot +lilypad_isp: EFUSE = 04 +lilypad_isp: isp + +lilypad_resonator: TARGET = lilypad_resonator +lilypad_resonator: MCU_TARGET = atmega168 +lilypad_resonator: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +lilypad_resonator: AVR_FREQ = 8000000L +lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex +lilypad_resonator: $(PROGRAM)_lilypad_resonator.lst + +lilypad_resonator_isp: lilypad_resonator +lilypad_resonator_isp: TARGET = lilypad_resonator +# 2.7V brownout +lilypad_resonator_isp: HFUSE = DD +# Full swing xtal (20MHz) 258CK/14CK+4.1ms +lilypad_resonator_isp: LFUSE = C6 +# 512 byte boot +lilypad_resonator_isp: EFUSE = 04 +lilypad_resonator_isp: isp + +pro8: TARGET = pro_8MHz +pro8: MCU_TARGET = atmega168 +pro8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +pro8: AVR_FREQ = 8000000L +pro8: $(PROGRAM)_pro_8MHz.hex +pro8: $(PROGRAM)_pro_8MHz.lst + +pro8_isp: pro8 +pro8_isp: TARGET = pro_8MHz +# 2.7V brownout +pro8_isp: HFUSE = DD +# Full swing xtal (20MHz) 258CK/14CK+4.1ms +pro8_isp: LFUSE = C6 +# 512 byte boot +pro8_isp: EFUSE = 04 +pro8_isp: isp + +atmega328_pro8: TARGET = atmega328_pro_8MHz +atmega328_pro8: MCU_TARGET = atmega328p +atmega328_pro8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' +atmega328_pro8: AVR_FREQ = 8000000L +atmega328_pro8: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe +atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex +atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.lst + +atmega328_pro8_isp: atmega328_pro8 +atmega328_pro8_isp: TARGET = atmega328_pro_8MHz +atmega328_pro8_isp: MCU_TARGET = atmega328p +# 512 byte boot, SPIEN +atmega328_pro8_isp: HFUSE = DE +# Low power xtal (16MHz) 16KCK/14CK+65ms +atmega328_pro8_isp: LFUSE = FF +# 2.7V brownout +atmega328_pro8_isp: EFUSE = 05 +atmega328_pro8_isp: isp + +# 1MHz clocked platforms +# +# These are capable of 9600 baud +# + +luminet: TARGET = luminet +luminet: MCU_TARGET = attiny84 +luminet: CFLAGS += '-DLED_START_FLASHES=3' '-DSOFT_UART' '-DBAUD_RATE=9600' +luminet: CFLAGS += '-DVIRTUAL_BOOT_PARTITION' +luminet: AVR_FREQ = 1000000L +luminet: LDSECTIONS = -Wl,--section-start=.text=0x1d00 -Wl,--section-start=.version=0x1efe +luminet: $(PROGRAM)_luminet.hex +luminet: $(PROGRAM)_luminet.lst + +luminet_isp: luminet +luminet_isp: TARGET = luminet +luminet_isp: MCU_TARGET = attiny84 +# Brownout disabled +luminet_isp: HFUSE = DF +# 1MHz internal oscillator, slowly rising power +luminet_isp: LFUSE = 62 +# Self-programming enable +luminet_isp: EFUSE = FE +luminet_isp: isp + +# +# Generic build instructions +# +# + +isp: $(TARGET) + $(ISPFUSES) + $(ISPFLASH) + +isp-stk500: $(PROGRAM)_$(TARGET).hex + $(STK500-1) + $(STK500-2) + +%.elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + $(SIZE) $@ + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O binary $< $@ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/boot.h b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/boot.h new file mode 100644 index 000000000..136273a23 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/boot.h @@ -0,0 +1,848 @@ +/* Modified to use out for SPM access +** Peter Knight, Optiboot project http://optiboot.googlecode.com +** +** Todo: Tidy up +** +** "_short" routines execute 1 cycle faster and use 1 less word of flash +** by using "out" instruction instead of "sts". +** +** Additional elpm variants that trust the value of RAMPZ +*/ + +/* Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007 Eric B. Weddington + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ + +/* $Id: boot.h,v 1.27.2.3 2008/09/30 13:58:48 arcanum Exp $ */ + +#ifndef _AVR_BOOT_H_ +#define _AVR_BOOT_H_ 1 + +/** \file */ +/** \defgroup avr_boot : Bootloader Support Utilities + \code + #include + #include + \endcode + + The macros in this module provide a C language interface to the + bootloader support functionality of certain AVR processors. These + macros are designed to work with all sizes of flash memory. + + Global interrupts are not automatically disabled for these macros. It + is left up to the programmer to do this. See the code example below. + Also see the processor datasheet for caveats on having global interrupts + enabled during writing of the Flash. + + \note Not all AVR processors provide bootloader support. See your + processor datasheet to see if it provides bootloader support. + + \todo From email with Marek: On smaller devices (all except ATmega64/128), + __SPM_REG is in the I/O space, accessible with the shorter "in" and "out" + instructions - since the boot loader has a limited size, this could be an + important optimization. + + \par API Usage Example + The following code shows typical usage of the boot API. + + \code + #include + #include + #include + + void boot_program_page (uint32_t page, uint8_t *buf) + { + uint16_t i; + uint8_t sreg; + + // Disable interrupts. + + sreg = SREG; + cli(); + + eeprom_busy_wait (); + + boot_page_erase (page); + boot_spm_busy_wait (); // Wait until the memory is erased. + + for (i=0; i +#include +#include +#include + +/* Check for SPM Control Register in processor. */ +#if defined (SPMCSR) +# define __SPM_REG SPMCSR +#elif defined (SPMCR) +# define __SPM_REG SPMCR +#else +# error AVR processor does not provide bootloader support! +#endif + + +/* Check for SPM Enable bit. */ +#if defined(SPMEN) +# define __SPM_ENABLE SPMEN +#elif defined(SELFPRGEN) +# define __SPM_ENABLE SELFPRGEN +#else +# error Cannot find SPM Enable bit definition! +#endif + +/** \ingroup avr_boot + \def BOOTLOADER_SECTION + + Used to declare a function or variable to be placed into a + new section called .bootloader. This section and its contents + can then be relocated to any address (such as the bootloader + NRWW area) at link-time. */ + +#define BOOTLOADER_SECTION __attribute__ ((section (".bootloader"))) + +/* Create common bit definitions. */ +#ifdef ASB +#define __COMMON_ASB ASB +#else +#define __COMMON_ASB RWWSB +#endif + +#ifdef ASRE +#define __COMMON_ASRE ASRE +#else +#define __COMMON_ASRE RWWSRE +#endif + +/* Define the bit positions of the Boot Lock Bits. */ + +#define BLB12 5 +#define BLB11 4 +#define BLB02 3 +#define BLB01 2 + +/** \ingroup avr_boot + \def boot_spm_interrupt_enable() + Enable the SPM interrupt. */ + +#define boot_spm_interrupt_enable() (__SPM_REG |= (uint8_t)_BV(SPMIE)) + +/** \ingroup avr_boot + \def boot_spm_interrupt_disable() + Disable the SPM interrupt. */ + +#define boot_spm_interrupt_disable() (__SPM_REG &= (uint8_t)~_BV(SPMIE)) + +/** \ingroup avr_boot + \def boot_is_spm_interrupt() + Check if the SPM interrupt is enabled. */ + +#define boot_is_spm_interrupt() (__SPM_REG & (uint8_t)_BV(SPMIE)) + +/** \ingroup avr_boot + \def boot_rww_busy() + Check if the RWW section is busy. */ + +#define boot_rww_busy() (__SPM_REG & (uint8_t)_BV(__COMMON_ASB)) + +/** \ingroup avr_boot + \def boot_spm_busy() + Check if the SPM instruction is busy. */ + +#define boot_spm_busy() (__SPM_REG & (uint8_t)_BV(__SPM_ENABLE)) + +/** \ingroup avr_boot + \def boot_spm_busy_wait() + Wait while the SPM instruction is busy. */ + +#define boot_spm_busy_wait() do{}while(boot_spm_busy()) + +#define __BOOT_PAGE_ERASE (_BV(__SPM_ENABLE) | _BV(PGERS)) +#define __BOOT_PAGE_WRITE (_BV(__SPM_ENABLE) | _BV(PGWRT)) +#define __BOOT_PAGE_FILL _BV(__SPM_ENABLE) +#define __BOOT_RWW_ENABLE (_BV(__SPM_ENABLE) | _BV(__COMMON_ASRE)) +#define __BOOT_LOCK_BITS_SET (_BV(__SPM_ENABLE) | _BV(BLBSET)) + +#define __boot_page_fill_short(address, data) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r0, %3\n\t" \ + "out %0, %1\n\t" \ + "spm\n\t" \ + "clr r1\n\t" \ + : \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_FILL), \ + "z" ((uint16_t)address), \ + "r" ((uint16_t)data) \ + : "r0" \ + ); \ +})) + +#define __boot_page_fill_normal(address, data) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r0, %3\n\t" \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + "clr r1\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_FILL), \ + "z" ((uint16_t)address), \ + "r" ((uint16_t)data) \ + : "r0" \ + ); \ +})) + +#define __boot_page_fill_alternate(address, data)\ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r0, %3\n\t" \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + "clr r1\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_FILL), \ + "z" ((uint16_t)address), \ + "r" ((uint16_t)data) \ + : "r0" \ + ); \ +})) + +#define __boot_page_fill_extended(address, data) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r0, %4\n\t" \ + "movw r30, %A3\n\t" \ + "sts %1, %C3\n\t" \ + "sts %0, %2\n\t" \ + "spm\n\t" \ + "clr r1\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "i" (_SFR_MEM_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_FILL), \ + "r" ((uint32_t)address), \ + "r" ((uint16_t)data) \ + : "r0", "r30", "r31" \ + ); \ +})) + +#define __boot_page_fill_extended_short(address, data) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r0, %4\n\t" \ + "movw r30, %A3\n\t" \ + "out %1, %C3\n\t" \ + "out %0, %2\n\t" \ + "spm\n\t" \ + "clr r1\n\t" \ + : \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "i" (_SFR_IO_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_FILL), \ + "r" ((uint32_t)address), \ + "r" ((uint16_t)data) \ + : "r0", "r30", "r31" \ + ); \ +})) + +#define __boot_page_erase_short(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "out %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_ERASE), \ + "z" ((uint16_t)address) \ + ); \ +})) + + +#define __boot_page_erase_normal(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_ERASE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_erase_alternate(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_ERASE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_erase_extended(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r30, %A3\n\t" \ + "sts %1, %C3\n\t" \ + "sts %0, %2\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "i" (_SFR_MEM_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_ERASE), \ + "r" ((uint32_t)address) \ + : "r30", "r31" \ + ); \ +})) +#define __boot_page_erase_extended_short(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r30, %A3\n\t" \ + "out %1, %C3\n\t" \ + "out %0, %2\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "i" (_SFR_IO_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_ERASE), \ + "r" ((uint32_t)address) \ + : "r30", "r31" \ + ); \ +})) + +#define __boot_page_write_short(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "out %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_WRITE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_write_normal(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_WRITE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_write_alternate(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_PAGE_WRITE), \ + "z" ((uint16_t)address) \ + ); \ +})) + +#define __boot_page_write_extended(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r30, %A3\n\t" \ + "sts %1, %C3\n\t" \ + "sts %0, %2\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "i" (_SFR_MEM_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_WRITE), \ + "r" ((uint32_t)address) \ + : "r30", "r31" \ + ); \ +})) +#define __boot_page_write_extended_short(address) \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "movw r30, %A3\n\t" \ + "out %1, %C3\n\t" \ + "out %0, %2\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "i" (_SFR_IO_ADDR(RAMPZ)), \ + "r" ((uint8_t)__BOOT_PAGE_WRITE), \ + "r" ((uint32_t)address) \ + : "r30", "r31" \ + ); \ +})) + +#define __boot_rww_enable_short() \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "out %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_RWW_ENABLE) \ + ); \ +})) + +#define __boot_rww_enable() \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_RWW_ENABLE) \ + ); \ +})) + +#define __boot_rww_enable_alternate() \ +(__extension__({ \ + __asm__ __volatile__ \ + ( \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_RWW_ENABLE) \ + ); \ +})) + +/* From the mega16/mega128 data sheets (maybe others): + + Bits by SPM To set the Boot Loader Lock bits, write the desired data to + R0, write "X0001001" to SPMCR and execute SPM within four clock cycles + after writing SPMCR. The only accessible Lock bits are the Boot Lock bits + that may prevent the Application and Boot Loader section from any + software update by the MCU. + + If bits 5..2 in R0 are cleared (zero), the corresponding Boot Lock bit + will be programmed if an SPM instruction is executed within four cycles + after BLBSET and SPMEN (or SELFPRGEN) are set in SPMCR. The Z-pointer is + don't care during this operation, but for future compatibility it is + recommended to load the Z-pointer with $0001 (same as used for reading the + Lock bits). For future compatibility It is also recommended to set bits 7, + 6, 1, and 0 in R0 to 1 when writing the Lock bits. When programming the + Lock bits the entire Flash can be read during the operation. */ + +#define __boot_lock_bits_set_short(lock_bits) \ +(__extension__({ \ + uint8_t value = (uint8_t)(~(lock_bits)); \ + __asm__ __volatile__ \ + ( \ + "ldi r30, 1\n\t" \ + "ldi r31, 0\n\t" \ + "mov r0, %2\n\t" \ + "out %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ + "r" (value) \ + : "r0", "r30", "r31" \ + ); \ +})) + +#define __boot_lock_bits_set(lock_bits) \ +(__extension__({ \ + uint8_t value = (uint8_t)(~(lock_bits)); \ + __asm__ __volatile__ \ + ( \ + "ldi r30, 1\n\t" \ + "ldi r31, 0\n\t" \ + "mov r0, %2\n\t" \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ + "r" (value) \ + : "r0", "r30", "r31" \ + ); \ +})) + +#define __boot_lock_bits_set_alternate(lock_bits) \ +(__extension__({ \ + uint8_t value = (uint8_t)(~(lock_bits)); \ + __asm__ __volatile__ \ + ( \ + "ldi r30, 1\n\t" \ + "ldi r31, 0\n\t" \ + "mov r0, %2\n\t" \ + "sts %0, %1\n\t" \ + "spm\n\t" \ + ".word 0xffff\n\t" \ + "nop\n\t" \ + : \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ + "r" (value) \ + : "r0", "r30", "r31" \ + ); \ +})) + +/* + Reading lock and fuse bits: + + Similarly to writing the lock bits above, set BLBSET and SPMEN (or + SELFPRGEN) bits in __SPMREG, and then (within four clock cycles) issue an + LPM instruction. + + Z address: contents: + 0x0000 low fuse bits + 0x0001 lock bits + 0x0002 extended fuse bits + 0x0003 high fuse bits + + Sounds confusing, doesn't it? + + Unlike the macros in pgmspace.h, no need to care for non-enhanced + cores here as these old cores do not provide SPM support anyway. + */ + +/** \ingroup avr_boot + \def GET_LOW_FUSE_BITS + address to read the low fuse bits, using boot_lock_fuse_bits_get + */ +#define GET_LOW_FUSE_BITS (0x0000) +/** \ingroup avr_boot + \def GET_LOCK_BITS + address to read the lock bits, using boot_lock_fuse_bits_get + */ +#define GET_LOCK_BITS (0x0001) +/** \ingroup avr_boot + \def GET_EXTENDED_FUSE_BITS + address to read the extended fuse bits, using boot_lock_fuse_bits_get + */ +#define GET_EXTENDED_FUSE_BITS (0x0002) +/** \ingroup avr_boot + \def GET_HIGH_FUSE_BITS + address to read the high fuse bits, using boot_lock_fuse_bits_get + */ +#define GET_HIGH_FUSE_BITS (0x0003) + +/** \ingroup avr_boot + \def boot_lock_fuse_bits_get(address) + + Read the lock or fuse bits at \c address. + + Parameter \c address can be any of GET_LOW_FUSE_BITS, + GET_LOCK_BITS, GET_EXTENDED_FUSE_BITS, or GET_HIGH_FUSE_BITS. + + \note The lock and fuse bits returned are the physical values, + i.e. a bit returned as 0 means the corresponding fuse or lock bit + is programmed. + */ +#define boot_lock_fuse_bits_get_short(address) \ +(__extension__({ \ + uint8_t __result; \ + __asm__ __volatile__ \ + ( \ + "ldi r30, %3\n\t" \ + "ldi r31, 0\n\t" \ + "out %1, %2\n\t" \ + "lpm %0, Z\n\t" \ + : "=r" (__result) \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ + "M" (address) \ + : "r0", "r30", "r31" \ + ); \ + __result; \ +})) + +#define boot_lock_fuse_bits_get(address) \ +(__extension__({ \ + uint8_t __result; \ + __asm__ __volatile__ \ + ( \ + "ldi r30, %3\n\t" \ + "ldi r31, 0\n\t" \ + "sts %1, %2\n\t" \ + "lpm %0, Z\n\t" \ + : "=r" (__result) \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t)__BOOT_LOCK_BITS_SET), \ + "M" (address) \ + : "r0", "r30", "r31" \ + ); \ + __result; \ +})) + +/** \ingroup avr_boot + \def boot_signature_byte_get(address) + + Read the Signature Row byte at \c address. For some MCU types, + this function can also retrieve the factory-stored oscillator + calibration bytes. + + Parameter \c address can be 0-0x1f as documented by the datasheet. + \note The values are MCU type dependent. +*/ + +#define __BOOT_SIGROW_READ (_BV(__SPM_ENABLE) | _BV(SIGRD)) + +#define boot_signature_byte_get_short(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint8_t __result; \ + __asm__ __volatile__ \ + ( \ + "out %1, %2\n\t" \ + "lpm %0, Z" "\n\t" \ + : "=r" (__result) \ + : "i" (_SFR_IO_ADDR(__SPM_REG)), \ + "r" ((uint8_t) __BOOT_SIGROW_READ), \ + "z" (__addr16) \ + ); \ + __result; \ +})) + +#define boot_signature_byte_get(addr) \ +(__extension__({ \ + uint16_t __addr16 = (uint16_t)(addr); \ + uint8_t __result; \ + __asm__ __volatile__ \ + ( \ + "sts %1, %2\n\t" \ + "lpm %0, Z" "\n\t" \ + : "=r" (__result) \ + : "i" (_SFR_MEM_ADDR(__SPM_REG)), \ + "r" ((uint8_t) __BOOT_SIGROW_READ), \ + "z" (__addr16) \ + ); \ + __result; \ +})) + +/** \ingroup avr_boot + \def boot_page_fill(address, data) + + Fill the bootloader temporary page buffer for flash + address with data word. + + \note The address is a byte address. The data is a word. The AVR + writes data to the buffer a word at a time, but addresses the buffer + per byte! So, increment your address by 2 between calls, and send 2 + data bytes in a word format! The LSB of the data is written to the lower + address; the MSB of the data is written to the higher address.*/ + +/** \ingroup avr_boot + \def boot_page_erase(address) + + Erase the flash page that contains address. + + \note address is a byte address in flash, not a word address. */ + +/** \ingroup avr_boot + \def boot_page_write(address) + + Write the bootloader temporary page buffer + to flash page that contains address. + + \note address is a byte address in flash, not a word address. */ + +/** \ingroup avr_boot + \def boot_rww_enable() + + Enable the Read-While-Write memory section. */ + +/** \ingroup avr_boot + \def boot_lock_bits_set(lock_bits) + + Set the bootloader lock bits. + + \param lock_bits A mask of which Boot Loader Lock Bits to set. + + \note In this context, a 'set bit' will be written to a zero value. + Note also that only BLBxx bits can be programmed by this command. + + For example, to disallow the SPM instruction from writing to the Boot + Loader memory section of flash, you would use this macro as such: + + \code + boot_lock_bits_set (_BV (BLB11)); + \endcode + + \note Like any lock bits, the Boot Loader Lock Bits, once set, + cannot be cleared again except by a chip erase which will in turn + also erase the boot loader itself. */ + +/* Normal versions of the macros use 16-bit addresses. + Extended versions of the macros use 32-bit addresses. + Alternate versions of the macros use 16-bit addresses and require special + instruction sequences after LPM. + + FLASHEND is defined in the ioXXXX.h file. + USHRT_MAX is defined in . */ + +#if defined(__AVR_ATmega161__) || defined(__AVR_ATmega163__) \ + || defined(__AVR_ATmega323__) + +/* Alternate: ATmega161/163/323 and 16 bit address */ +#define boot_page_fill(address, data) __boot_page_fill_alternate(address, data) +#define boot_page_erase(address) __boot_page_erase_alternate(address) +#define boot_page_write(address) __boot_page_write_alternate(address) +#define boot_rww_enable() __boot_rww_enable_alternate() +#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_alternate(lock_bits) + +#elif (FLASHEND > USHRT_MAX) + +/* Extended: >16 bit address */ +#define boot_page_fill(address, data) __boot_page_fill_extended_short(address, data) +#define boot_page_erase(address) __boot_page_erase_extended_short(address) +#define boot_page_write(address) __boot_page_write_extended_short(address) +#define boot_rww_enable() __boot_rww_enable_short() +#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_short(lock_bits) + +#else + +/* Normal: 16 bit address */ +#define boot_page_fill(address, data) __boot_page_fill_short(address, data) +#define boot_page_erase(address) __boot_page_erase_short(address) +#define boot_page_write(address) __boot_page_write_short(address) +#define boot_rww_enable() __boot_rww_enable_short() +#define boot_lock_bits_set(lock_bits) __boot_lock_bits_set_short(lock_bits) + +#endif + +/** \ingroup avr_boot + + Same as boot_page_fill() except it waits for eeprom and spm operations to + complete before filling the page. */ + +#define boot_page_fill_safe(address, data) \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_page_fill(address, data); \ +} while (0) + +/** \ingroup avr_boot + + Same as boot_page_erase() except it waits for eeprom and spm operations to + complete before erasing the page. */ + +#define boot_page_erase_safe(address) \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_page_erase (address); \ +} while (0) + +/** \ingroup avr_boot + + Same as boot_page_write() except it waits for eeprom and spm operations to + complete before writing the page. */ + +#define boot_page_write_safe(address) \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_page_write (address); \ +} while (0) + +/** \ingroup avr_boot + + Same as boot_rww_enable() except waits for eeprom and spm operations to + complete before enabling the RWW mameory. */ + +#define boot_rww_enable_safe() \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_rww_enable(); \ +} while (0) + +/** \ingroup avr_boot + + Same as boot_lock_bits_set() except waits for eeprom and spm operations to + complete before setting the lock bits. */ + +#define boot_lock_bits_set_safe(lock_bits) \ +do { \ + boot_spm_busy_wait(); \ + eeprom_busy_wait(); \ + boot_lock_bits_set (lock_bits); \ +} while (0) + +#endif /* _AVR_BOOT_H_ */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/optiboot.c b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/optiboot.c new file mode 100644 index 000000000..031869612 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/optiboot.c @@ -0,0 +1,724 @@ +/**********************************************************/ +/* -Wl,-section-start=bootloader=0x1fc00 */ +/* Optiboot bootloader for Arduino */ +/* */ +/* http://optiboot.googlecode.com */ +/* */ +/* Arduino-maintained version : See README.TXT */ +/* http://code.google.com/p/arduino/ */ +/* */ +/* Heavily optimised bootloader that is faster and */ +/* smaller than the Arduino standard bootloader */ +/* */ +/* Enhancements: */ +/* Fits in 512 bytes, saving 1.5K of code space */ +/* Background page erasing speeds up programming */ +/* Higher baud rate speeds up programming */ +/* Written almost entirely in C */ +/* Customisable timeout with accurate timeconstant */ +/* Optional virtual UART. No hardware UART required. */ +/* Optional virtual boot partition for devices without. */ +/* */ +/* What you lose: */ +/* Implements a skeleton STK500 protocol which is */ +/* missing several features including EEPROM */ +/* programming and non-page-aligned writes */ +/* High baud rate breaks compatibility with standard */ +/* Arduino flash settings */ +/* */ +/* Fully supported: */ +/* ATmega168 based devices (Diecimila etc) */ +/* ATmega328P based devices (Duemilanove etc) */ +/* */ +/* Alpha test */ +/* ATmega1280 based devices (Arduino Mega) */ +/* */ +/* Work in progress: */ +/* ATmega644P based devices (Sanguino) */ +/* ATtiny84 based devices (Luminet) */ +/* */ +/* Does not support: */ +/* USB based devices (eg. Teensy) */ +/* */ +/* Assumptions: */ +/* The code makes several assumptions that reduce the */ +/* code size. They are all true after a hardware reset, */ +/* but may not be true if the bootloader is called by */ +/* other means or on other hardware. */ +/* No interrupts can occur */ +/* UART and Timer 1 are set to their reset state */ +/* SP points to RAMEND */ +/* */ +/* Code builds on code, libraries and optimisations from: */ +/* stk500boot.c by Jason P. Kyle */ +/* Arduino bootloader http://arduino.cc */ +/* Spiff's 1K bootloader http://spiffie.org/know/arduino_1k_bootloader/bootloader.shtml */ +/* avr-libc project http://nongnu.org/avr-libc */ +/* Adaboot http://www.ladyada.net/library/arduino/bootloader.html */ +/* AVR305 Atmel Application Note */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/**********************************************************/ + + +/**********************************************************/ +/* */ +/* Optional defines: */ +/* */ +/**********************************************************/ +/* */ +/* BIG_BOOT: */ +/* Build a 1k bootloader, not 512 bytes. This turns on */ +/* extra functionality. */ +/* */ +/* BAUD_RATE: */ +/* Set bootloader baud rate. */ +/* */ +/* LUDICROUS_SPEED: */ +/* 230400 baud :-) */ +/* */ +/* SOFT_UART: */ +/* Use AVR305 soft-UART instead of hardware UART. */ +/* */ +/* LED_START_FLASHES: */ +/* Number of LED flashes on bootup. */ +/* */ +/* LED_DATA_FLASH: */ +/* Flash LED when transferring data. For boards without */ +/* TX or RX LEDs, or for people who like blinky lights. */ +/* */ +/* SUPPORT_EEPROM: */ +/* Support reading and writing from EEPROM. This is not */ +/* used by Arduino, so off by default. */ +/* */ +/* TIMEOUT_MS: */ +/* Bootloader timeout period, in milliseconds. */ +/* 500,1000,2000,4000,8000 supported. */ +/* */ +/**********************************************************/ + +/**********************************************************/ +/* Version Numbers! */ +/* */ +/* Arduino Optiboot now includes this Version number in */ +/* the source and object code. */ +/* */ +/* Version 3 was released as zip from the optiboot */ +/* repository and was distributed with Arduino 0022. */ +/* Version 4 starts with the arduino repository commit */ +/* that brought the arduino repository up-to-date with */ +/* the optiboot source tree changes since v3. */ +/* */ +/**********************************************************/ + +/**********************************************************/ +/* Edit History: */ +/* */ +/* Jan 2012: */ +/* 4.5 WestfW: fix NRWW value for m1284. */ +/* 4.4 WestfW: use attribute OS_main instead of naked for */ +/* main(). This allows optimizations that we */ +/* count on, which are prohibited in naked */ +/* functions due to PR42240. (keeps us less */ +/* than 512 bytes when compiler is gcc4.5 */ +/* (code from 4.3.2 remains the same.) */ +/* 4.4 WestfW and Maniacbug: Add m1284 support. This */ +/* does not change the 328 binary, so the */ +/* version number didn't change either. (?) */ +/* June 2011: */ +/* 4.4 WestfW: remove automatic soft_uart detect (didn't */ +/* know what it was doing or why.) Added a */ +/* check of the calculated BRG value instead. */ +/* Version stays 4.4; existing binaries are */ +/* not changed. */ +/* 4.4 WestfW: add initialization of address to keep */ +/* the compiler happy. Change SC'ed targets. */ +/* Return the SW version via READ PARAM */ +/* 4.3 WestfW: catch framing errors in getch(), so that */ +/* AVRISP works without HW kludges. */ +/* http://code.google.com/p/arduino/issues/detail?id=368n*/ +/* 4.2 WestfW: reduce code size, fix timeouts, change */ +/* verifySpace to use WDT instead of appstart */ +/* 4.1 WestfW: put version number in binary. */ +/**********************************************************/ + +#define OPTIBOOT_MAJVER 4 +#define OPTIBOOT_MINVER 5 + +#define MAKESTR(a) #a +#define MAKEVER(a, b) MAKESTR(a*256+b) + +asm(" .section .version\n" + "optiboot_version: .word " MAKEVER(OPTIBOOT_MAJVER, OPTIBOOT_MINVER) "\n" + " .section .text\n"); + +#include +#include +#include + +// uses sts instructions, but this version uses out instructions +// This saves cycles and program memory. +#include "boot.h" + + +// We don't use as those routines have interrupt overhead we don't need. + +#include "pin_defs.h" +#include "stk500.h" + +#ifndef LED_START_FLASHES +#define LED_START_FLASHES 0 +#endif + +#ifdef LUDICROUS_SPEED +#define BAUD_RATE 230400L +#endif + +/* set the UART baud rate defaults */ +#ifndef BAUD_RATE +#if F_CPU >= 8000000L +#define BAUD_RATE 115200L // Highest rate Avrdude win32 will support +#elsif F_CPU >= 1000000L +#define BAUD_RATE 9600L // 19200 also supported, but with significant error +#elsif F_CPU >= 128000L +#define BAUD_RATE 4800L // Good for 128kHz internal RC +#else +#define BAUD_RATE 1200L // Good even at 32768Hz +#endif +#endif + +#if 0 +/* Switch in soft UART for hard baud rates */ +/* + * I don't understand what this was supposed to accomplish, where the + * constant "280" came from, or why automatically (and perhaps unexpectedly) + * switching to a soft uart is a good thing, so I'm undoing this in favor + * of a range check using the same calc used to config the BRG... + */ +#if (F_CPU/BAUD_RATE) > 280 // > 57600 for 16MHz +#ifndef SOFT_UART +#define SOFT_UART +#endif +#endif +#else // 0 +#if (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 > 250 +#error Unachievable baud rate (too slow) BAUD_RATE +#endif // baud rate slow check +#if (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 < 3 +#error Unachievable baud rate (too fast) BAUD_RATE +#endif // baud rate fastn check +#endif + +/* Watchdog settings */ +#define WATCHDOG_OFF (0) +#define WATCHDOG_16MS (_BV(WDE)) +#define WATCHDOG_32MS (_BV(WDP0) | _BV(WDE)) +#define WATCHDOG_64MS (_BV(WDP1) | _BV(WDE)) +#define WATCHDOG_125MS (_BV(WDP1) | _BV(WDP0) | _BV(WDE)) +#define WATCHDOG_250MS (_BV(WDP2) | _BV(WDE)) +#define WATCHDOG_500MS (_BV(WDP2) | _BV(WDP0) | _BV(WDE)) +#define WATCHDOG_1S (_BV(WDP2) | _BV(WDP1) | _BV(WDE)) +#define WATCHDOG_2S (_BV(WDP2) | _BV(WDP1) | _BV(WDP0) | _BV(WDE)) +#ifndef __AVR_ATmega8__ +#define WATCHDOG_4S (_BV(WDP3) | _BV(WDE)) +#define WATCHDOG_8S (_BV(WDP3) | _BV(WDP0) | _BV(WDE)) +#endif + +/* Function Prototypes */ +/* The main function is in init9, which removes the interrupt vector table */ +/* we don't need. It is also 'naked', which means the compiler does not */ +/* generate any entry or exit code itself. */ +int main(void) __attribute__ ((OS_main)) __attribute__ ((section (".init9"))); +void putch(char); +uint8_t getch(void); +static inline void getNch(uint8_t); /* "static inline" is a compiler hint to reduce code size */ +void verifySpace(); +static inline void flash_led(uint8_t); +uint8_t getLen(); +static inline void watchdogReset(); +void watchdogConfig(uint8_t x); +#ifdef SOFT_UART +void uartDelay() __attribute__ ((naked)); +#endif +void appStart() __attribute__ ((naked)); + +/* + * NRWW memory + * Addresses below NRWW (Non-Read-While-Write) can be programmed while + * continuing to run code from flash, slightly speeding up programming + * time. Beware that Atmel data sheets specify this as a WORD address, + * while optiboot will be comparing against a 16-bit byte address. This + * means that on a part with 128kB of memory, the upper part of the lower + * 64k will get NRWW processing as well, even though it doesn't need it. + * That's OK. In fact, you can disable the overlapping processing for + * a part entirely by setting NRWWSTART to zero. This reduces code + * space a bit, at the expense of being slightly slower, overall. + * + * RAMSTART should be self-explanatory. It's bigger on parts with a + * lot of peripheral registers. + */ +#if defined(__AVR_ATmega168__) +#define RAMSTART (0x100) +#define NRWWSTART (0x3800) +#elif defined(__AVR_ATmega328P__) +#define RAMSTART (0x100) +#define NRWWSTART (0x7000) +#elif defined (__AVR_ATmega644P__) +#define RAMSTART (0x100) +#define NRWWSTART (0xE000) +#elif defined (__AVR_ATmega1284P__) +#define RAMSTART (0x100) +#define NRWWSTART (0xE000) +#elif defined(__AVR_ATtiny84__) +#define RAMSTART (0x100) +#define NRWWSTART (0x0000) +#elif defined(__AVR_ATmega1280__) +#define RAMSTART (0x200) +#define NRWWSTART (0xE000) +#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__) +#define RAMSTART (0x100) +#define NRWWSTART (0x1800) +#endif + +/* C zero initialises all global variables. However, that requires */ +/* These definitions are NOT zero initialised, but that doesn't matter */ +/* This allows us to drop the zero init code, saving us memory */ +#define buff ((uint8_t*)(RAMSTART)) +#ifdef VIRTUAL_BOOT_PARTITION +#define rstVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+4)) +#define wdtVect (*(uint16_t*)(RAMSTART+SPM_PAGESIZE*2+6)) +#endif + +/* main program starts here */ +int main(void) { + uint8_t ch; + + /* + * Making these local and in registers prevents the need for initializing + * them, and also saves space because code no longer stores to memory. + * (initializing address keeps the compiler happy, but isn't really + * necessary, and uses 4 bytes of flash.) + */ + register uint16_t address = 0; + register uint8_t length; + + // After the zero init loop, this is the first code to run. + // + // This code makes the following assumptions: + // No interrupts will execute + // SP points to RAMEND + // r1 contains zero + // + // If not, uncomment the following instructions: + // cli(); + asm volatile ("clr __zero_reg__"); +#ifdef __AVR_ATmega8__ + SP=RAMEND; // This is done by hardware reset +#endif + + // Adaboot no-wait mod + ch = MCUSR; + MCUSR = 0; + if (!(ch & _BV(EXTRF))) appStart(); + +#if LED_START_FLASHES > 0 + // Set up Timer 1 for timeout counter + TCCR1B = _BV(CS12) | _BV(CS10); // div 1024 +#endif +#ifndef SOFT_UART +#ifdef __AVR_ATmega8__ + UCSRA = _BV(U2X); //Double speed mode USART + UCSRB = _BV(RXEN) | _BV(TXEN); // enable Rx & Tx + UCSRC = _BV(URSEL) | _BV(UCSZ1) | _BV(UCSZ0); // config USART; 8N1 + UBRRL = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); +#else + UCSR0A = _BV(U2X0); //Double speed mode USART0 + UCSR0B = _BV(RXEN0) | _BV(TXEN0); + UCSR0C = _BV(UCSZ00) | _BV(UCSZ01); + UBRR0L = (uint8_t)( (F_CPU + BAUD_RATE * 4L) / (BAUD_RATE * 8L) - 1 ); +#endif +#endif + + // Set up watchdog to trigger after 500ms + watchdogConfig(WATCHDOG_1S); + + /* Set LED pin as output */ + LED_DDR |= _BV(LED); + +#ifdef SOFT_UART + /* Set TX pin as output */ + UART_DDR |= _BV(UART_TX_BIT); +#endif + +#if LED_START_FLASHES > 0 + /* Flash onboard LED to signal entering of bootloader */ + flash_led(LED_START_FLASHES * 2); +#endif + + /* Forever loop */ + for (;;) { + /* get character from UART */ + ch = getch(); + + if(ch == STK_GET_PARAMETER) { + unsigned char which = getch(); + verifySpace(); + if (which == 0x82) { + /* + * Send optiboot version as "minor SW version" + */ + putch(OPTIBOOT_MINVER); + } else if (which == 0x81) { + putch(OPTIBOOT_MAJVER); + } else { + /* + * GET PARAMETER returns a generic 0x03 reply for + * other parameters - enough to keep Avrdude happy + */ + putch(0x03); + } + } + else if(ch == STK_SET_DEVICE) { + // SET DEVICE is ignored + getNch(20); + } + else if(ch == STK_SET_DEVICE_EXT) { + // SET DEVICE EXT is ignored + getNch(5); + } + else if(ch == STK_LOAD_ADDRESS) { + // LOAD ADDRESS + uint16_t newAddress; + newAddress = getch(); + newAddress = (newAddress & 0xff) | (getch() << 8); +#ifdef RAMPZ + // Transfer top bit to RAMPZ + RAMPZ = (newAddress & 0x8000) ? 1 : 0; +#endif + newAddress += newAddress; // Convert from word address to byte address + address = newAddress; + verifySpace(); + } + else if(ch == STK_UNIVERSAL) { + // UNIVERSAL command is ignored + getNch(4); + putch(0x00); + } + /* Write memory, length is big endian and is in bytes */ + else if(ch == STK_PROG_PAGE) { + // PROGRAM PAGE - we support flash programming only, not EEPROM + uint8_t *bufPtr; + uint16_t addrPtr; + + getch(); /* getlen() */ + length = getch(); + getch(); + + // If we are in RWW section, immediately start page erase + if (address < NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); + + // While that is going on, read in page contents + bufPtr = buff; + do *bufPtr++ = getch(); + while (--length); + + // If we are in NRWW section, page erase has to be delayed until now. + // Todo: Take RAMPZ into account + if (address >= NRWWSTART) __boot_page_erase_short((uint16_t)(void*)address); + + // Read command terminator, start reply + verifySpace(); + + // If only a partial page is to be programmed, the erase might not be complete. + // So check that here + boot_spm_busy_wait(); + +#ifdef VIRTUAL_BOOT_PARTITION + if ((uint16_t)(void*)address == 0) { + // This is the reset vector page. We need to live-patch the code so the + // bootloader runs. + // + // Move RESET vector to WDT vector + uint16_t vect = buff[0] | (buff[1]<<8); + rstVect = vect; + wdtVect = buff[8] | (buff[9]<<8); + vect -= 4; // Instruction is a relative jump (rjmp), so recalculate. + buff[8] = vect & 0xff; + buff[9] = vect >> 8; + + // Add jump to bootloader at RESET vector + buff[0] = 0x7f; + buff[1] = 0xce; // rjmp 0x1d00 instruction + } +#endif + + // Copy buffer into programming buffer + bufPtr = buff; + addrPtr = (uint16_t)(void*)address; + ch = SPM_PAGESIZE / 2; + do { + uint16_t a; + a = *bufPtr++; + a |= (*bufPtr++) << 8; + __boot_page_fill_short((uint16_t)(void*)addrPtr,a); + addrPtr += 2; + } while (--ch); + + // Write from programming buffer + __boot_page_write_short((uint16_t)(void*)address); + boot_spm_busy_wait(); + +#if defined(RWWSRE) + // Reenable read access to flash + boot_rww_enable(); +#endif + + } + /* Read memory block mode, length is big endian. */ + else if(ch == STK_READ_PAGE) { + // READ PAGE - we only read flash + getch(); /* getlen() */ + length = getch(); + getch(); + + verifySpace(); +#ifdef VIRTUAL_BOOT_PARTITION + do { + // Undo vector patch in bottom page so verify passes + if (address == 0) ch=rstVect & 0xff; + else if (address == 1) ch=rstVect >> 8; + else if (address == 8) ch=wdtVect & 0xff; + else if (address == 9) ch=wdtVect >> 8; + else ch = pgm_read_byte_near(address); + address++; + putch(ch); + } while (--length); +#else +#ifdef RAMPZ +// Since RAMPZ should already be set, we need to use EPLM directly. +// do putch(pgm_read_byte_near(address++)); +// while (--length); + do { + uint8_t result; + __asm__ ("elpm %0,Z\n":"=r"(result):"z"(address)); + putch(result); + address++; + } + while (--length); +#else + do putch(pgm_read_byte_near(address++)); + while (--length); +#endif +#endif + } + + /* Get device signature bytes */ + else if(ch == STK_READ_SIGN) { + // READ SIGN - return what Avrdude wants to hear + verifySpace(); + putch(SIGNATURE_0); + putch(SIGNATURE_1); + putch(SIGNATURE_2); + } + else if (ch == STK_LEAVE_PROGMODE) { /* 'Q' */ + // Adaboot no-wait mod + watchdogConfig(WATCHDOG_16MS); + verifySpace(); + } + else { + // This covers the response to commands like STK_ENTER_PROGMODE + verifySpace(); + } + putch(STK_OK); + } +} + +void putch(char ch) { +#ifndef SOFT_UART + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + __asm__ __volatile__ ( + " com %[ch]\n" // ones complement, carry set + " sec\n" + "1: brcc 2f\n" + " cbi %[uartPort],%[uartBit]\n" + " rjmp 3f\n" + "2: sbi %[uartPort],%[uartBit]\n" + " nop\n" + "3: rcall uartDelay\n" + " rcall uartDelay\n" + " lsr %[ch]\n" + " dec %[bitcnt]\n" + " brne 1b\n" + : + : + [bitcnt] "d" (10), + [ch] "r" (ch), + [uartPort] "I" (_SFR_IO_ADDR(UART_PORT)), + [uartBit] "I" (UART_TX_BIT) + : + "r25" + ); +#endif +} + +uint8_t getch(void) { + uint8_t ch; + +#ifdef LED_DATA_FLASH +#ifdef __AVR_ATmega8__ + LED_PORT ^= _BV(LED); +#else + LED_PIN |= _BV(LED); +#endif +#endif + +#ifdef SOFT_UART + __asm__ __volatile__ ( + "1: sbic %[uartPin],%[uartBit]\n" // Wait for start edge + " rjmp 1b\n" + " rcall uartDelay\n" // Get to middle of start bit + "2: rcall uartDelay\n" // Wait 1 bit period + " rcall uartDelay\n" // Wait 1 bit period + " clc\n" + " sbic %[uartPin],%[uartBit]\n" + " sec\n" + " dec %[bitCnt]\n" + " breq 3f\n" + " ror %[ch]\n" + " rjmp 2b\n" + "3:\n" + : + [ch] "=r" (ch) + : + [bitCnt] "d" (9), + [uartPin] "I" (_SFR_IO_ADDR(UART_PIN)), + [uartBit] "I" (UART_RX_BIT) + : + "r25" +); +#else + while(!(UCSR0A & _BV(RXC0))) + ; + if (!(UCSR0A & _BV(FE0))) { + /* + * A Framing Error indicates (probably) that something is talking + * to us at the wrong bit rate. Assume that this is because it + * expects to be talking to the application, and DON'T reset the + * watchdog. This should cause the bootloader to abort and run + * the application "soon", if it keeps happening. (Note that we + * don't care that an invalid char is returned...) + */ + watchdogReset(); + } + + ch = UDR0; +#endif + +#ifdef LED_DATA_FLASH +#ifdef __AVR_ATmega8__ + LED_PORT ^= _BV(LED); +#else + LED_PIN |= _BV(LED); +#endif +#endif + + return ch; +} + +#ifdef SOFT_UART +// AVR305 equation: #define UART_B_VALUE (((F_CPU/BAUD_RATE)-23)/6) +// Adding 3 to numerator simulates nearest rounding for more accurate baud rates +#define UART_B_VALUE (((F_CPU/BAUD_RATE)-20)/6) +#if UART_B_VALUE > 255 +#error Baud rate too slow for soft UART +#endif + +void uartDelay() { + __asm__ __volatile__ ( + "ldi r25,%[count]\n" + "1:dec r25\n" + "brne 1b\n" + "ret\n" + ::[count] "M" (UART_B_VALUE) + ); +} +#endif + +void getNch(uint8_t count) { + do getch(); while (--count); + verifySpace(); +} + +void verifySpace() { + if (getch() != CRC_EOP) { + watchdogConfig(WATCHDOG_16MS); // shorten WD timeout + while (1) // and busy-loop so that WD causes + ; // a reset and app start. + } + putch(STK_INSYNC); +} + +#if LED_START_FLASHES > 0 +void flash_led(uint8_t count) { + do { + TCNT1 = -(F_CPU/(1024*16)); + TIFR1 = _BV(TOV1); + while(!(TIFR1 & _BV(TOV1))); +#ifdef __AVR_ATmega8__ + LED_PORT ^= _BV(LED); +#else + LED_PIN |= _BV(LED); +#endif + watchdogReset(); + } while (--count); +} +#endif + +// Watchdog functions. These are only safe with interrupts turned off. +void watchdogReset() { + __asm__ __volatile__ ( + "wdr\n" + ); +} + +void watchdogConfig(uint8_t x) { + WDTCSR = _BV(WDCE) | _BV(WDE); + WDTCSR = x; +} + +void appStart() { + watchdogConfig(WATCHDOG_OFF); + __asm__ __volatile__ ( +#ifdef VIRTUAL_BOOT_PARTITION + // Jump to WDT vector + "ldi r30,4\n" + "clr r31\n" +#else + // Jump to RST vector + "clr r30\n" + "clr r31\n" +#endif + "ijmp\n" + ); +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/optiboot_1284P_20MHz_57k6_baud.hex b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/optiboot_1284P_20MHz_57k6_baud.hex new file mode 100644 index 000000000..98d96ea55 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/optiboot_1284P_20MHz_57k6_baud.hex @@ -0,0 +1,33 @@ +:020000021000EC +:10FE00000F92CDB7DEB7112484B714BE81FFDFD0C7 +:10FE100082E08093C00088E18093C10086E08093F7 +:10FE2000C2008AE28093C4008EE0BBD0209A00E03A +:10FE300010E0EE24E394E1E1DE2EF3E0FF2EA5D006 +:10FE4000813471F4A2D08983B2D08981823809F4D7 +:10FE50008BC0813811F484E001C083E08FD08BC067 +:10FE6000823411F484E103C0853419F485E0A7D00D +:10FE700082C0853591F489D0A82EBB2486D0082F66 +:10FE800010E0102F00270A291B29812F881F88279F +:10FE9000881F8BBF000F111F6DC0863521F484E0D1 +:10FEA0008ED080E0DBCF843609F040C06ED06DD0BC +:10FEB000C82E6BD080EE0030180718F4F801F7BE9A +:10FEC000E895A12C51E0B52E60D0F50181935F013A +:10FED000CE16D1F7F0EE00301F0718F0F801F7BE8C +:10FEE000E89565D007B600FCFDCFF801A0E0B1E0D1 +:10FEF0002C9130E011968C91119790E0982F8827E3 +:10FF0000822B932B12960C01E7BEE89511243296B2 +:10FF100082E0A030B80761F785E0F80187BFE89577 +:10FF200007B600FCFDCFD7BEE89525C08437A9F4FD +:10FF30002CD02BD0B82E29D03AD0CB2C4801F401AC +:10FF400086911CD00894811C911CCA94C1F70F5F44 +:10FF50001F4FBA940B0D111D0EC0853739F427D0F1 +:10FF60008EE10CD087E90AD085E078CF813511F495 +:10FF700088E017D01CD080E101D061CF9091C00003 +:10FF800095FFFCCF8093C60008958091C00087FF45 +:10FF9000FCCF8091C00084FD01C0A8958091C6006F +:10FFA0000895E0E6F0E098E1908380830895EDDF26 +:10FFB000803219F088E0F5DFFFCF84E1DFCFCF9307 +:10FFC000C82FE3DFC150E9F7F2DFCF91089580E059 +:08FFD000E8DFEE27FF2709948A +:040000031000FE00EB +:00000001FF diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/pin_defs.h b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/pin_defs.h new file mode 100644 index 000000000..0a8a4ca99 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/pin_defs.h @@ -0,0 +1,81 @@ +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega88) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega88__) +/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duemilanove */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB5 + +/* Ports for soft UART */ +#ifdef SOFT_UART +#define UART_PORT PORTD +#define UART_PIN PIND +#define UART_DDR DDRD +#define UART_TX_BIT 1 +#define UART_RX_BIT 0 +#endif +#endif + +#if defined(__AVR_ATmega8__) + //Name conversion R.Wiersma + #define UCSR0A UCSRA + #define UDR0 UDR + #define UDRE0 UDRE + #define RXC0 RXC + #define FE0 FE + #define TIFR1 TIFR + #define WDTCSR WDTCR +#endif + +/* Luminet support */ +#if defined(__AVR_ATtiny84__) +/* Red LED is connected to pin PA4 */ +#define LED_DDR DDRA +#define LED_PORT PORTA +#define LED_PIN PINA +#define LED PINA4 +/* Ports for soft UART - left port only for now. TX/RX on PA2/PA3 */ +#ifdef SOFT_UART +#define UART_PORT PORTA +#define UART_PIN PINA +#define UART_DDR DDRA +#define UART_TX_BIT 2 +#define UART_RX_BIT 3 +#endif +#endif + +/* Sanguino support */ +#if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) +/* Onboard LED is connected to pin PB0 on Sanguino */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 + +/* Ports for soft UART */ +#ifdef SOFT_UART +#define UART_PORT PORTD +#define UART_PIN PIND +#define UART_DDR DDRD +#define UART_TX_BIT 1 +#define UART_RX_BIT 0 +#endif +#endif + +/* Mega support */ +#if defined(__AVR_ATmega1280__) +/* Onboard LED is connected to pin PB7 on Arduino Mega */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 + +/* Ports for soft UART */ +#ifdef SOFT_UART +#define UART_PORT PORTE +#define UART_PIN PINE +#define UART_DDR DDRE +#define UART_TX_BIT 1 +#define UART_RX_BIT 0 +#endif +#endif + diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/stk500.h b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/stk500.h new file mode 100644 index 000000000..ca0dd91df --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega1284p/stk500.h @@ -0,0 +1,39 @@ +/* STK500 constants list, from AVRDUDE */ +#define STK_OK 0x10 +#define STK_FAILED 0x11 // Not used +#define STK_UNKNOWN 0x12 // Not used +#define STK_NODEVICE 0x13 // Not used +#define STK_INSYNC 0x14 // ' ' +#define STK_NOSYNC 0x15 // Not used +#define ADC_CHANNEL_ERROR 0x16 // Not used +#define ADC_MEASURE_OK 0x17 // Not used +#define PWM_CHANNEL_ERROR 0x18 // Not used +#define PWM_ADJUST_OK 0x19 // Not used +#define CRC_EOP 0x20 // 'SPACE' +#define STK_GET_SYNC 0x30 // '0' +#define STK_GET_SIGN_ON 0x31 // '1' +#define STK_SET_PARAMETER 0x40 // '@' +#define STK_GET_PARAMETER 0x41 // 'A' +#define STK_SET_DEVICE 0x42 // 'B' +#define STK_SET_DEVICE_EXT 0x45 // 'E' +#define STK_ENTER_PROGMODE 0x50 // 'P' +#define STK_LEAVE_PROGMODE 0x51 // 'Q' +#define STK_CHIP_ERASE 0x52 // 'R' +#define STK_CHECK_AUTOINC 0x53 // 'S' +#define STK_LOAD_ADDRESS 0x55 // 'U' +#define STK_UNIVERSAL 0x56 // 'V' +#define STK_PROG_FLASH 0x60 // '`' +#define STK_PROG_DATA 0x61 // 'a' +#define STK_PROG_FUSE 0x62 // 'b' +#define STK_PROG_LOCK 0x63 // 'c' +#define STK_PROG_PAGE 0x64 // 'd' +#define STK_PROG_FUSE_EXT 0x65 // 'e' +#define STK_READ_FLASH 0x70 // 'p' +#define STK_READ_DATA 0x71 // 'q' +#define STK_READ_FUSE 0x72 // 'r' +#define STK_READ_LOCK 0x73 // 's' +#define STK_READ_PAGE 0x74 // 't' +#define STK_READ_SIGN 0x75 // 'u' +#define STK_READ_OSCCAL 0x76 // 'v' +#define STK_READ_FUSE_EXT 0x77 // 'w' +#define STK_READ_OSCCAL_EXT 0x78 // 'x' diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega644p/ATmegaBOOT.c b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega644p/ATmegaBOOT.c new file mode 100644 index 000000000..3b56dfd22 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega644p/ATmegaBOOT.c @@ -0,0 +1,713 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega644 and ATmega644P */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* 20090131: Added 324P support from Alex Leone */ +/* Marius Kintel */ +/* 20080915: applied ADABoot mods for Sanguino 644P */ +/* Brian Riley */ +/* 20080711: hacked for Sanguino by Zach Smith */ +/* and Justin Day */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +#ifdef ADABOOT + #define NUM_LED_FLASHES 3 + #define ADABOOT_VER 1 +#endif + + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20080711: hack by Zach Hoeken */ +#define BAUD_RATE 38400 + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( +#if defined(__AVR_ATmega644P__) +#define SIG2 0x96 +#define SIG3 0x0A +#elif defined(__AVR_ATmega644__) +#define SIG2 0x96 +#define SIG3 0x09 +#elif defined(__AVR_ATmega324P__) +#define SIG2 0x95 +#define SIG3 0x08 +#endif +#define PAGE_SIZE 0x080U //128 words +#define PAGE_SIZE_BYTES 0x100U //256 bytes + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union +{ + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union +{ + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct +{ + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; + +uint8_t error_count = 0; +uint8_t sreg; + +void (*app_start)(void) = 0x0000; + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + uint16_t i; + + asm volatile("nop\n\t"); + +#ifdef ADABOOT // BBR/LF 10/8/2007 & 9/13/2008 + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if it's a not an external reset... + app_start(); // skip bootloader +#endif + + + //initialize our serial port. + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1< 0x85) + getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') + { + ch2 = getch(); + if(ch2 == 0x80) + byte_response(HW_VER); // Hardware version + else if(ch2==0x81) + byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) + byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) + byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else + byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') + { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') + { + getNch(5); + nothing_response(); + } + + + /* Enter programming mode */ + else if(ch=='P') + { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') + { + nothing_response(); +#ifdef ADABOOT + // autoreset via watchdog (sneaky!) BBR/LF 9/13/2008 + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') + { + nothing_response(); + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') + { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') + { + getNch(4); + byte_response(0x00); + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') + { + length.byte[1] = getch(); + length.byte[0] = getch(); + + flags.eeprom = 0; + if (getch() == 'E') + flags.eeprom = 1; + + for (i=0; i byte location + address.word = address.word << 1; + + //Even up an odd number of bytes + if ((length.byte[0] & 0x01)) + length.word++; + + // HACKME: EEPE used to be EEWE + //Wait for previous EEPROM writes to complete + //while(bit_is_set(EECR,EEPE)); + while(EECR & (1< byte location + } + + // Command terminator + if (getch() == ' ') + { + putch(0x14); + for (w=0; w= 'a') + ah = ah - 'a' + 0x0a; + else if(ah >= '0') + ah -= '0'; + if(al >= 'a') + al = al - 'a' + 0x0a; + else if(al >= '0') + al -= '0'; + + return (ah << 4) + al; +} + + +void puthex(char ch) +{ + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) + ah = ah - 0x0a + 'a'; + else + ah += '0'; + + al = (ch & 0x0f); + if(al >= 0x0a) + al = al - 0x0a + 'a'; + else + al += '0'; + + putch(ah); + putch(al); +} + + +void putch(char ch) +{ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +} + + + + +char getch(void) +{ + uint32_t count = 0; + +#ifdef ADABOOT + LED_PORT &= ~_BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + while(!(UCSR0A & _BV(RXC0))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + +#ifdef ADABOOT + LED_PORT |= _BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + return UDR0; +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega644p/README.txt b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega644p/README.txt new file mode 100644 index 000000000..828600785 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/bootloaders/atmega644p/README.txt @@ -0,0 +1,3 @@ +Note: This bootloader support ATmega644, ATmega644P and ATmega324P. +To build, set PROGRAM and MCU_TARGET in the Makefile according to your target device. + diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/HardwareSerial.cpp b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/HardwareSerial.cpp new file mode 100644 index 000000000..4397efb7e --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,303 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include "wiring.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which rx_buffer_head is the index of the +// location to which to write the next incoming character and rx_buffer_tail +// is the index of the location from which to read. +#if (RAMEND < 1000) + #define RX_BUFFER_SIZE 32 +#else + #define RX_BUFFER_SIZE 128 +#endif + +struct ring_buffer +{ + unsigned char buffer[RX_BUFFER_SIZE]; + int head; + int tail; +}; + +#if defined(UBRRH) || defined(UBRR0H) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR1H) + ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR2H) + ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR3H) + ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *rx_buffer) +{ + int i = (unsigned int)(rx_buffer->head + 1) % RX_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != rx_buffer->tail) { + rx_buffer->buffer[rx_buffer->head] = c; + rx_buffer->head = i; + } +} + +#if defined(USART_RX_vect) + SIGNAL(USART_RX_vect) + { + #if defined(UDR0) + unsigned char c = UDR0; + #elif defined(UDR) + unsigned char c = UDR; // atmega8535 + #else + #error UDR not defined + #endif + store_char(c, &rx_buffer); + } +#elif defined(SIG_USART0_RECV) && defined(UDR0) + SIGNAL(SIG_USART0_RECV) + { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } +#elif defined(SIG_UART0_RECV) && defined(UDR0) + SIGNAL(SIG_UART0_RECV) + { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } +//#elif defined(SIG_USART_RECV) +#elif defined(USART0_RX_vect) + // fixed by Mark Sproul this is on the 644/644p + //SIGNAL(SIG_USART_RECV) + SIGNAL(USART0_RX_vect) + { + #if defined(UDR0) + unsigned char c = UDR0; + #elif defined(UDR) + unsigned char c = UDR; // atmega8, atmega32 + #else + #error UDR not defined + #endif + store_char(c, &rx_buffer); + } +#elif defined(SIG_UART_RECV) + // this is for atmega8 + SIGNAL(SIG_UART_RECV) + { + #if defined(UDR0) + unsigned char c = UDR0; // atmega645 + #elif defined(UDR) + unsigned char c = UDR; // atmega8 + #endif + store_char(c, &rx_buffer); + } +#elif defined(USBCON) + #warning No interrupt handler for usart 0 + #warning Serial(0) is on USB interface +#else + #error No interrupt handler for usart 0 +#endif + +//#if defined(SIG_USART1_RECV) +#if defined(USART1_RX_vect) + //SIGNAL(SIG_USART1_RECV) + SIGNAL(USART1_RX_vect) + { + unsigned char c = UDR1; + store_char(c, &rx_buffer1); + } +#elif defined(SIG_USART1_RECV) + #error SIG_USART1_RECV +#endif + +#if defined(USART2_RX_vect) && defined(UDR2) + SIGNAL(USART2_RX_vect) + { + unsigned char c = UDR2; + store_char(c, &rx_buffer2); + } +#elif defined(SIG_USART2_RECV) + #error SIG_USART2_RECV +#endif + +#if defined(USART3_RX_vect) && defined(UDR3) + SIGNAL(USART3_RX_vect) + { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } +#elif defined(SIG_USART3_RECV) + #error SIG_USART3_RECV +#endif + + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udre = udre; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); +} + +void HardwareSerial::end() +{ + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % RX_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // were full, not empty. + _rx_buffer->head = _rx_buffer->tail; +} + +void HardwareSerial::write(uint8_t c) +{ + while (!((*_ucsra) & (1 << _udre))) + ; + + *_udr = c; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0); +#elif defined(USBCON) + #warning no serial port defined (port 0) +#else + #error no serial port defined (port 0) +#endif + +#if defined(UBRR1H) + HardwareSerial Serial1(&rx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRE3, U2X3); +#endif + +#endif // whole file + diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/HardwareSerial.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/HardwareSerial.h new file mode 100644 index 000000000..3efa775f8 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/HardwareSerial.h @@ -0,0 +1,76 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udre; + uint8_t _u2x; + public: + HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x); + void begin(long); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual void write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print +}; + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "usb_api.h" +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Print.cpp b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Print.cpp new file mode 100644 index 000000000..4ee556dd8 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Print.cpp @@ -0,0 +1,220 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "wiring.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +void Print::write(const char *str) +{ + while (*str) + write(*str++); +} + +/* default implementation: may be overridden */ +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) + write(*buffer++); +} + +void Print::print(const String &s) +{ + for (int i = 0; i < s.length(); i++) { + write(s[i]); + } +} + +void Print::print(const char str[]) +{ + write(str); +} + +void Print::print(char c, int base) +{ + print((long) c, base); +} + +void Print::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Print::print(int n, int base) +{ + print((long) n, base); +} + +void Print::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Print::print(long n, int base) +{ + if (base == 0) { + write(n); + } else if (base == 10) { + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); + } else { + printNumber(n, base); + } +} + +void Print::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Print::print(double n, int digits) +{ + printFloat(n, digits); +} + +void Print::println(void) +{ + print('\r'); + print('\n'); +} + +void Print::println(const String &s) +{ + print(s); + println(); +} + +void Print::println(const char c[]) +{ + print(c); + println(); +} + +void Print::println(char c, int base) +{ + print(c, base); + println(); +} + +void Print::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Print::println(int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(double n, int digits) +{ + print(n, digits); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void Print::printNumber(unsigned long n, uint8_t base) +{ + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); +} + +void Print::printFloat(double number, uint8_t digits) +{ + // Handle negative numbers + if (number < 0.0) + { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Print.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Print.h new file mode 100644 index 000000000..b092ae51d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Print.h @@ -0,0 +1,66 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#include "WString.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Print +{ + private: + void printNumber(unsigned long, uint8_t); + void printFloat(double, uint8_t); + public: + virtual void write(uint8_t) = 0; + virtual void write(const char *str); + virtual void write(const uint8_t *buffer, size_t size); + + void print(const String &); + void print(const char[]); + void print(char, int = BYTE); + void print(unsigned char, int = BYTE); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + + void println(const String &s); + void println(const char[]); + void println(char, int = BYTE); + void println(unsigned char, int = BYTE); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); +}; + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Stream.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Stream.h new file mode 100644 index 000000000..93d8275dc --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Stream.h @@ -0,0 +1,35 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Stream_h +#define Stream_h + +#include +#include "Print.h" + +class Stream : public Print +{ + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; +}; + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Tone.cpp b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Tone.cpp new file mode 100644 index 000000000..c3910e7a6 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/Tone.cpp @@ -0,0 +1,601 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +*************************************************/ + +#include +#include +#include "wiring.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +// MLS: This does not make sense, the 3 options are the same +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WCharacter.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WConstants.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WConstants.h new file mode 100644 index 000000000..3e19ac44a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WConstants.h @@ -0,0 +1 @@ +#include "wiring.h" diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WInterrupts.c b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WInterrupts.c new file mode 100644 index 000000000..a71637f81 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WInterrupts.c @@ -0,0 +1,280 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include + +#include "WConstants.h" +#include "wiring_private.h" + +volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 3: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; + case 4: + EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20); + EIMSK |= (1 << INT2); + break; + case 5: + EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30); + EIMSK |= (1 << INT3); + break; + case 0: + EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40); + EIMSK |= (1 << INT4); + break; + case 1: + EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50); + EIMSK |= (1 << INT5); + break; + case 6: + EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60); + EIMSK |= (1 << INT6); + break; + case 7: + EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70); + EIMSK |= (1 << INT7); + break; +#elif defined(EICRA) && defined(EIMSK) + case 0: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 1: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; + case 2: + EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20); + EIMSK |= (1 << INT2); + break; +#else + case 0: + #if defined(EICRA) && defined(ISC00) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GICR |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GIMSK |= (1 << INT0); + #else + #error attachInterrupt not finished for this CPU (case 0) + #endif + break; + + case 1: + #if defined(EICRA) && defined(ISC10) && defined(ISC11) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(ISC11) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GICR |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(GIMSK) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GIMSK |= (1 << INT1); + #else + #warning attachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + } +} + +void detachInterrupt(uint8_t interruptNum) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + // Disable the interrupt. (We can't assume that interruptNum is equal + // to the number of the EIMSK bit to clear, as this isn't true on the + // ATmega8. There, INT0 is 6 and INT1 is 7.) + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 5: + EIMSK &= ~(1 << INT3); + break; + case 0: + EIMSK &= ~(1 << INT4); + break; + case 1: + EIMSK &= ~(1 << INT5); + break; + case 6: + EIMSK &= ~(1 << INT6); + break; + case 7: + EIMSK &= ~(1 << INT7); + break; +#elif defined(EICRA) && defined(EIMSK) + case 0: + EIMSK &= ~(1 << INT0); + break; + case 1: + EIMSK &= ~(1 << INT1); + break; + case 2: + EIMSK &= ~(1 << INT2); + break; + +#else + case 0: + #if defined(EIMSK) && defined(INT0) + EIMSK &= ~(1 << INT0); + #elif defined(GICR) && defined(ISC00) + GICR &= ~(1 << INT0); // atmega32 + #elif defined(GIMSK) && defined(INT0) + GIMSK &= ~(1 << INT0); + #else + #error detachInterrupt not finished for this cpu + #endif + break; + + case 1: + #if defined(EIMSK) && defined(INT1) + EIMSK &= ~(1 << INT1); + #elif defined(GICR) && defined(INT1) + GICR &= ~(1 << INT1); // atmega32 + #elif defined(GIMSK) && defined(INT1) + GIMSK &= ~(1 << INT1); + #else + #warning detachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + + intFunc[interruptNum] = 0; + } +} + +/* +void attachInterruptTwi(void (*userFunc)(void) ) { + twiIntFunc = userFunc; +} +*/ + + +#if defined(EICRA) && defined(EICRB) +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_3]) + intFunc[EXTERNAL_INT_3](); +} + +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_4]) + intFunc[EXTERNAL_INT_4](); +} + +SIGNAL(INT3_vect) { + if(intFunc[EXTERNAL_INT_5]) + intFunc[EXTERNAL_INT_5](); +} + +SIGNAL(INT4_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT5_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +SIGNAL(INT6_vect) { + if(intFunc[EXTERNAL_INT_6]) + intFunc[EXTERNAL_INT_6](); +} + +SIGNAL(INT7_vect) { + if(intFunc[EXTERNAL_INT_7]) + intFunc[EXTERNAL_INT_7](); +} + +#elif defined(EICRA) + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +#else + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +#endif + +/* +SIGNAL(SIG_2WIRE_SERIAL) { + if(twiIntFunc) + twiIntFunc(); +} +*/ + diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WMath.cpp b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WMath.cpp new file mode 100644 index 000000000..2120c4cc1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WMath.cpp @@ -0,0 +1,60 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.org.co + Copyright (c) 2004-06 Hernando Barragan + Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +extern "C" { + #include "stdlib.h" +} + +void randomSeed(unsigned int seed) +{ + if (seed != 0) { + srandom(seed); + } +} + +long random(long howbig) +{ + if (howbig == 0) { + return 0; + } + return random() % howbig; +} + +long random(long howsmall, long howbig) +{ + if (howsmall >= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WProgram.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WProgram.h new file mode 100644 index 000000000..f73e760bb --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WProgram.h @@ -0,0 +1,63 @@ +#ifndef WProgram_h +#define WProgram_h + +#include +#include +#include + +#include + +#include "wiring.h" + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const static uint8_t A0 = 54; +const static uint8_t A1 = 55; +const static uint8_t A2 = 56; +const static uint8_t A3 = 57; +const static uint8_t A4 = 58; +const static uint8_t A5 = 59; +const static uint8_t A6 = 60; +const static uint8_t A7 = 61; +const static uint8_t A8 = 62; +const static uint8_t A9 = 63; +const static uint8_t A10 = 64; +const static uint8_t A11 = 65; +const static uint8_t A12 = 66; +const static uint8_t A13 = 67; +const static uint8_t A14 = 68; +const static uint8_t A15 = 69; +#else +const static uint8_t A0 = 14; +const static uint8_t A1 = 15; +const static uint8_t A2 = 16; +const static uint8_t A3 = 17; +const static uint8_t A4 = 18; +const static uint8_t A5 = 19; +const static uint8_t A6 = 20; +const static uint8_t A7 = 21; +#endif + +#endif + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WString.cpp b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WString.cpp new file mode 100644 index 000000000..db5a441dc --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WString.cpp @@ -0,0 +1,443 @@ +/* + WString.cpp - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include +#include "WProgram.h" +#include "WString.h" + + +String::String( const char *value ) +{ + if ( value == NULL ) + value = ""; + getBuffer( _length = strlen( value ) ); + if ( _buffer != NULL ) + strcpy( _buffer, value ); +} + +String::String( const String &value ) +{ + getBuffer( _length = value._length ); + if ( _buffer != NULL ) + strcpy( _buffer, value._buffer ); +} + +String::String( const char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL ) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const unsigned char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const int value, const int base ) +{ + char buf[33]; + itoa((signed long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned int value, const int base ) +{ + char buf[33]; + ultoa((unsigned long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const long value, const int base ) +{ + char buf[33]; + ltoa(value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned long value, const int base ) +{ + char buf[33]; + ultoa(value, buf, 10); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +char String::charAt( unsigned int loc ) const +{ + return operator[]( loc ); +} + +void String::setCharAt( unsigned int loc, const char aChar ) +{ + if(_buffer == NULL) return; + if(_length > loc) { + _buffer[loc] = aChar; + } +} + +int String::compareTo( const String &s2 ) const +{ + return strcmp( _buffer, s2._buffer ); +} + +const String & String::concat( const String &s2 ) +{ + return (*this) += s2; +} + +const String & String::operator=( const String &rhs ) +{ + if ( this == &rhs ) + return *this; + + if ( rhs._length > _length ) + { + free(_buffer); + getBuffer( rhs._length ); + } + + if ( _buffer != NULL ) { + _length = rhs._length; + strcpy( _buffer, rhs._buffer ); + } + return *this; +} + +//const String & String::operator+=( const char aChar ) +//{ +// if ( _length == _capacity ) +// doubleBuffer(); +// +// _buffer[ _length++ ] = aChar; +// _buffer[ _length ] = '\0'; +// return *this; +//} + +const String & String::operator+=( const String &other ) +{ + _length += other._length; + if ( _length > _capacity ) + { + char *temp = (char *)realloc(_buffer, _length + 1); + if ( temp != NULL ) { + _buffer = temp; + _capacity = _length; + } else { + _length -= other._length; + return *this; + } + } + strcat( _buffer, other._buffer ); + return *this; +} + + +int String::operator==( const String &rhs ) const +{ + return ( _length == rhs._length && strcmp( _buffer, rhs._buffer ) == 0 ); +} + +int String::operator!=( const String &rhs ) const +{ + return ( _length != rhs.length() || strcmp( _buffer, rhs._buffer ) != 0 ); +} + +int String::operator<( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) < 0; +} + +int String::operator>( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) > 0; +} + +int String::operator<=( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) <= 0; +} + +int String::operator>=( const String & rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) >= 0; +} + +char & String::operator[]( unsigned int index ) +{ + static char dummy_writable_char; + if (index >= _length || !_buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return _buffer[ index ]; +} + +char String::operator[]( unsigned int index ) const +{ + // need to check for valid index, to do later + return _buffer[ index ]; +} + +boolean String::endsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return strcmp( &_buffer[ _length - s2._length], s2._buffer ) == 0; +} + +boolean String::equals( const String &s2 ) const +{ + return ( _length == s2._length && strcmp( _buffer,s2._buffer ) == 0 ); +} + +boolean String::equalsIgnoreCase( const String &s2 ) const +{ + if ( this == &s2 ) + return true; //1; + else if ( _length != s2._length ) + return false; //0; + + return strcmp(toLowerCase()._buffer, s2.toLowerCase()._buffer) == 0; +} + +String String::replace( char findChar, char replaceChar ) +{ + if ( _buffer == NULL ) return *this; + String theReturn = _buffer; + char* temp = theReturn._buffer; + while( (temp = strchr( temp, findChar )) != 0 ) + *temp = replaceChar; + + return theReturn; +} + +String String::replace( const String& match, const String& replace ) +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer, newString; + + int loc; + while ( (loc = temp.indexOf( match )) != -1 ) + { + newString += temp.substring( 0, loc ); + newString += replace; + temp = temp.substring( loc + match._length ); + } + newString += temp; + return newString; +} + +int String::indexOf( char temp ) const +{ + return indexOf( temp, 0 ); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char* temp = strchr( &_buffer[fromIndex], ch ); + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::indexOf( const String &s2 ) const +{ + return indexOf( s2, 0 ); +} + +int String::indexOf( const String &s2, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char *theFind = strstr( &_buffer[ fromIndex ], s2._buffer ); + + if ( theFind == NULL ) + return -1; + + return theFind - _buffer; // pointer subtraction +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf( theChar, _length - 1 ); +} + +int String::lastIndexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + char tempchar = _buffer[fromIndex + 1]; + _buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( _buffer, ch ); + _buffer[fromIndex + 1] = tempchar; + + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::lastIndexOf( const String &s2 ) const +{ + return lastIndexOf( s2, _length - s2._length ); +} + +int String::lastIndexOf( const String &s2, unsigned int fromIndex ) const +{ + // check for empty strings + if ( s2._length == 0 || s2._length - 1 > fromIndex || fromIndex >= _length ) + return -1; + + // matching first character + char temp = s2[ 0 ]; + + for ( int i = fromIndex; i >= 0; i-- ) + { + if ( _buffer[ i ] == temp && (*this).substring( i, i + s2._length ).equals( s2 ) ) + return i; + } + return -1; +} + +boolean String::startsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return startsWith( s2, 0 ); +} + +boolean String::startsWith( const String &s2, unsigned int offset ) const +{ + if ( offset > _length - s2._length ) + return 0; + + return strncmp( &_buffer[offset], s2._buffer, s2._length ) == 0; +} + +String String::substring( unsigned int left ) const +{ + return substring( left, _length ); +} + +String String::substring( unsigned int left, unsigned int right ) const +{ + if ( left > right ) + { + int temp = right; + right = left; + left = temp; + } + + if ( right > _length ) + { + right = _length; + } + + char temp = _buffer[ right ]; // save the replaced character + _buffer[ right ] = '\0'; + String outPut = ( _buffer + left ); // pointer arithmetic + _buffer[ right ] = temp; //restore character + return outPut; +} + +String String::toLowerCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)tolower( temp._buffer[ i ] ); + return temp; +} + +String String::toUpperCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)toupper( temp._buffer[ i ] ); + return temp; +} + +String String::trim() const +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer; + unsigned int i,j; + + for ( i = 0; i < _length; i++ ) + { + if ( !isspace(_buffer[i]) ) + break; + } + + for ( j = temp._length - 1; j > i; j-- ) + { + if ( !isspace(_buffer[j]) ) + break; + } + + return temp.substring( i, j + 1); +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy((char *)buf, _buffer, len); + buf[len] = 0; +} + +void String::toCharArray(char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy(buf, _buffer, len); + buf[len] = 0; +} + + +long String::toInt() { + return atol(_buffer); +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WString.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WString.h new file mode 100644 index 000000000..cadddb947 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/WString.h @@ -0,0 +1,112 @@ +/* + WString.h - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_h +#define String_h + +//#include "WProgram.h" +#include +#include +#include + +class String +{ + public: + // constructors + String( const char *value = "" ); + String( const String &value ); + String( const char ); + String( const unsigned char ); + String( const int, const int base=10); + String( const unsigned int, const int base=10 ); + String( const long, const int base=10 ); + String( const unsigned long, const int base=10 ); + ~String() { free(_buffer); _length = _capacity = 0;} //added _length = _capacity = 0; + + // operators + const String & operator = ( const String &rhs ); + const String & operator +=( const String &rhs ); + //const String & operator +=( const char ); + int operator ==( const String &rhs ) const; + int operator !=( const String &rhs ) const; + int operator < ( const String &rhs ) const; + int operator > ( const String &rhs ) const; + int operator <=( const String &rhs ) const; + int operator >=( const String &rhs ) const; + char operator []( unsigned int index ) const; + char& operator []( unsigned int index ); + //operator const char *() const { return _buffer; } + + // general methods + char charAt( unsigned int index ) const; + int compareTo( const String &anotherString ) const; + unsigned char endsWith( const String &suffix ) const; + unsigned char equals( const String &anObject ) const; + unsigned char equalsIgnoreCase( const String &anotherString ) const; + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + const unsigned int length( ) const { return _length; } + void setCharAt(unsigned int index, const char ch); + unsigned char startsWith( const String &prefix ) const; + unsigned char startsWith( const String &prefix, unsigned int toffset ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + String toLowerCase( ) const; + String toUpperCase( ) const; + String trim( ) const; + void getBytes(unsigned char *buf, unsigned int bufsize); + void toCharArray(char *buf, unsigned int bufsize); + long toInt( ); + const String& concat( const String &str ); + String replace( char oldChar, char newChar ); + String replace( const String& match, const String& replace ); + friend String operator + ( String lhs, const String &rhs ); + + protected: + char *_buffer; // the actual char array + unsigned int _capacity; // the array length minus one (for the '\0') + unsigned int _length; // the String length (not counting the '\0') + + void getBuffer(unsigned int maxStrLen); + + private: + +}; + +// allocate buffer space +inline void String::getBuffer(unsigned int maxStrLen) +{ + _capacity = maxStrLen; + _buffer = (char *) malloc(_capacity + 1); + if (_buffer == NULL) _length = _capacity = 0; +} + +inline String operator+( String lhs, const String &rhs ) +{ + return lhs += rhs; +} + + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/binary.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/main.cpp b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/main.cpp new file mode 100644 index 000000000..cc6e81d90 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/main.cpp @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/pins_arduino.c b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/pins_arduino.c new file mode 100644 index 000000000..fe9a81401 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/pins_arduino.c @@ -0,0 +1,627 @@ +/* + pins_arduino.c - pin definitions for the Arduino board + Part of Arduino / Wiring Lite + + Copyright (c) 2005 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Changelog + ----------- + 11/25/11 - ryan@ryanmsutton.com - Add pins for Sanguino 644P and 1284P + $Id$ +*/ + +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA8 & 168 / ARDUINO +// +// +-\/-+ +// PC6 1| |28 PC5 (AI 5) +// (D 0) PD0 2| |27 PC4 (AI 4) +// (D 1) PD1 3| |26 PC3 (AI 3) +// (D 2) PD2 4| |25 PC2 (AI 2) +// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) +// (D 4) PD4 6| |23 PC0 (AI 0) +// VCC 7| |22 GND +// GND 8| |21 AREF +// PB6 9| |20 AVCC +// PB7 10| |19 PB5 (D 13) +// PWM+ (D 5) PD5 11| |18 PB4 (D 12) +// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM +// (D 7) PD7 13| |16 PB2 (D 10) PWM +// (D 8) PB0 14| |15 PB1 (D 9) PWM +// +----+ +// +// (PWM+ indicates the additional PWM pins on the ATmega168.) + +// ATMEL ATMEGA1280 / ARDUINO +// +// 0-7 PE0-PE7 works +// 8-13 PB0-PB5 works +// 14-21 PA0-PA7 works +// 22-29 PH0-PH7 works +// 30-35 PG5-PG0 works +// 36-43 PC7-PC0 works +// 44-51 PJ7-PJ0 works +// 52-59 PL7-PL0 works +// 60-67 PD7-PD0 works +// A0-A7 PF0-PF7 +// A8-A15 PK0-PK7 +// ATMEL ATMEGA644P / SANGUINO +// +// +---\/---+ +// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31) +// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30) +// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) +// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) +// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) +// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) +// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) +// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) +// RST 9| |32 AREF +// VCC 10| |31 GND +// GND 11| |30 AVCC +// XTAL2 12| |29 PC7 (D 23) +// XTAL1 13| |28 PC6 (D 22) +// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI +// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO +// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS +// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK +// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA +// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL +// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM +// +--------+ +// +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 + + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + &DDRA, + &DDRB, + &DDRC, + &DDRD, + &DDRE, + &DDRF, + &DDRG, + &DDRH, + NOT_A_PORT, + &DDRJ, + &DDRK, + &DDRL, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + &PORTA, + &PORTB, + &PORTC, + &PORTD, + &PORTE, + &PORTF, + &PORTG, + &PORTH, + NOT_A_PORT, + &PORTJ, + &PORTK, + &PORTL, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PIN, + &PINA, + &PINB, + &PINC, + &PIND, + &PINE, + &PINF, + &PING, + &PINH, + NOT_A_PIN, + &PINJ, + &PINK, + &PINL, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 +}; +#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = +{ + NOT_A_PORT, + &DDRA, + &DDRB, + &DDRC, + &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = +{ + NOT_A_PORT, + &PORTA, + &PORTB, + &PORTC, + &PORTD, +}; +const uint16_t PROGMEM port_to_input_PGM[] = +{ + NOT_A_PORT, + &PINA, + &PINB, + &PINC, + &PIND, +}; +const uint8_t PROGMEM digital_pin_to_port_PGM[] = +{ + PB, /* 0 */ + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PD, /* 8 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PC, /* 16 */ + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PA, /* 24 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA /* 31 */ +}; +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = +{ + _BV(0), /* 0, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 16, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(7), /* 24, port A */ + _BV(6), + _BV(5), + _BV(4), + _BV(3), + _BV(2), + _BV(1), + _BV(0) +}; +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = +{ + NOT_ON_TIMER, /* 0 - PB0 */ + NOT_ON_TIMER, /* 1 - PB1 */ + NOT_ON_TIMER, /* 2 - PB2 */ + TIMER0A, /* 3 - PB3 */ + TIMER0B, /* 4 - PB4 */ + NOT_ON_TIMER, /* 5 - PB5 */ + NOT_ON_TIMER, /* 6 - PB6 */ + NOT_ON_TIMER, /* 7 - PB7 */ + NOT_ON_TIMER, /* 8 - PD0 */ + NOT_ON_TIMER, /* 9 - PD1 */ + NOT_ON_TIMER, /* 10 - PD2 */ + NOT_ON_TIMER, /* 11 - PD3 */ + TIMER1B, /* 12 - PD4 */ + TIMER1A, /* 13 - PD5 */ + TIMER2B, /* 14 - PD6 */ + TIMER2A, /* 15 - PD7 */ + NOT_ON_TIMER, /* 16 - PC0 */ + NOT_ON_TIMER, /* 17 - PC1 */ + NOT_ON_TIMER, /* 18 - PC2 */ + NOT_ON_TIMER, /* 19 - PC3 */ + NOT_ON_TIMER, /* 20 - PC4 */ + NOT_ON_TIMER, /* 21 - PC5 */ + NOT_ON_TIMER, /* 22 - PC6 */ + NOT_ON_TIMER, /* 23 - PC7 */ + NOT_ON_TIMER, /* 24 - PA0 */ + NOT_ON_TIMER, /* 25 - PA1 */ + NOT_ON_TIMER, /* 26 - PA2 */ + NOT_ON_TIMER, /* 27 - PA3 */ + NOT_ON_TIMER, /* 28 - PA4 */ + NOT_ON_TIMER, /* 29 - PA5 */ + NOT_ON_TIMER, /* 30 - PA6 */ + NOT_ON_TIMER /* 31 - PA7 */ +}; + +#else +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &DDRB, + &DDRC, + &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PORTB, + &PORTC, + &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PINB, + &PINC, + &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, /* 0 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PB, /* 8 */ + PB, + PB, + PB, + PB, + PB, + PC, /* 14 */ + PC, + PC, + PC, + PC, + PC, +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), /* 0, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(0), /* 14, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, /* 0 - port D */ + NOT_ON_TIMER, + NOT_ON_TIMER, + // on the ATmega168, digital pin 3 has hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, +#else + TIMER2B, +#endif + NOT_ON_TIMER, + // on the ATmega168, digital pins 5 and 6 have hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, + NOT_ON_TIMER, +#else + TIMER0B, + TIMER0A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, /* 8 - port B */ + TIMER1A, + TIMER1B, +#if defined(__AVR_ATmega8__) + TIMER2, +#else + TIMER2A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, /* 14 - port C */ + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/pins_arduino.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/pins_arduino.h new file mode 100644 index 000000000..92771c39a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/pins_arduino.h @@ -0,0 +1,94 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER5A 14 +#define TIMER5B 15 +#define TIMER5C 16 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const static uint8_t SS = 53; +const static uint8_t MOSI = 51; +const static uint8_t MISO = 50; +const static uint8_t SCK = 52; +#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) +const static uint8_t SS = 4; +const static uint8_t MOSI = 5; +const static uint8_t MISO = 6; +const static uint8_t SCK = 7; + +#else +const static uint8_t SS = 10; +const static uint8_t MOSI = 11; +const static uint8_t MISO = 12; +const static uint8_t SCK = 13; +#endif + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring.c b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring.c new file mode 100644 index 000000000..b90d07e59 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring.c @@ -0,0 +1,289 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +SIGNAL(TIMER0_OVF_vect) +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); + +#if F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + + TCCR1B = 0; + + // set timer 1 prescale factor to 64 +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + sbi(TCCR1B, CS11); + sbi(TCCR1B, CS10); +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); + sbi(TCCR1, CS10); +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring.h new file mode 100644 index 000000000..4645af76e --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring.h @@ -0,0 +1,138 @@ +/* + wiring.h - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#ifndef Wiring_h +#define Wiring_h + +#include +#include +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) + +// Removed to work with newer AVRLIBC +//#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) + +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( ((a) * 1000L) / (F_CPU / 1000L) ) +#define microsecondsToClockCycles(a) ( ((a) * (F_CPU / 1000L)) / 1000L ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_analog.c b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_analog.c new file mode 100644 index 000000000..d248f4ce8 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_analog.c @@ -0,0 +1,259 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: + // connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_digital.c b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_digital.c new file mode 100644 index 000000000..0949da42d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_digital.c @@ -0,0 +1,166 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +//static inline void turnOffPWM(uint8_t timer) +static void turnOffPWM(uint8_t timer) +{ + switch (timer) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + if (val == LOW) { + uint8_t oldSREG = SREG; + cli(); + *out &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *out |= bit; + SREG = oldSREG; + } +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_private.h b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_private.h new file mode 100644 index 000000000..3ec8ce014 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_private.h @@ -0,0 +1,70 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include +#include + +#include "wiring.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) +#define EXTERNAL_NUM_INTERRUPTS 3 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_pulse.c b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_pulse.c new file mode 100644 index 000000000..0d968865d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_shift.c b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_shift.c new file mode 100644 index 000000000..cfe786758 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/cores/arduino/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/ArduinoAddons/Arduino_0.xx/Sanguino/programmers.txt b/ArduinoAddons/Arduino_0.xx/Sanguino/programmers.txt new file mode 100644 index 000000000..466f602a3 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/Sanguino/programmers.txt @@ -0,0 +1,20 @@ +avrisp.name=AVR ISP +avrisp.communication=serial +avrisp.protocol=stk500v1 + +avrispmkii.name=AVRISP mkII +avrispmkii.communication=usb +avrispmkii.protocol=stk500v2 + +usbtinyisp.name=USBtinyISP +usbtinyisp.protocol=usbtiny + +parallel.name=Parallel Programmer +parallel.protocol=dapa +parallel.force=true +# parallel.delay=200 + +arduinoisp.name=Arduino as ISP +arduinoisp.communication=serial +arduinoisp.protocol=stk500v1 +arduinoisp.speed=19200 diff --git a/ArduinoAddons/Arduino_0.xx/hardware/tools/avr/etc/avrdude.conf b/ArduinoAddons/Arduino_0.xx/hardware/tools/avr/etc/avrdude.conf new file mode 100644 index 000000000..ec921df42 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/hardware/tools/avr/etc/avrdude.conf @@ -0,0 +1,12104 @@ +# $Id: avrdude.conf.in,v 1.122 2007/05/16 21:29:36 joerg_wunsch Exp $ +# +# AVRDUDE Configuration File +# +# This file contains configuration data used by AVRDUDE which describes +# the programming hardware pinouts and also provides part definitions. +# AVRDUDE's "-C" command line option specifies the location of the +# configuration file. The "-c" option names the programmer configuration +# which must match one of the entry's "id" parameter. The "-p" option +# identifies which part AVRDUDE is going to be programming and must match +# one of the parts' "id" parameter. +# +# Possible entry formats are: +# +# programmer +# id = [, [, ] ...] ; # are quoted strings +# desc = ; # quoted string +# type = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic | +# avr910 | butterfly | usbasp | +# jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw | +# dragon_dw | dragon_jtag | dragon_isp | dragon_pp | +# dragon_hvsp; # programmer type +# baudrate = ; # baudrate for avr910-programmer +# vcc = [, ... ] ; # pin number(s) +# reset = ; # pin number +# sck = ; # pin number +# mosi = ; # pin number +# miso = ; # pin number +# errled = ; # pin number +# rdyled = ; # pin number +# pgmled = ; # pin number +# vfyled = ; # pin number +# ; +# +# part +# id = ; # quoted string +# desc = ; # quoted string +# has_jtag = ; # part has JTAG i/f +# has_debugwire = ; # part has debugWire i/f +# devicecode = ; # deprecated, use stk500_devcode +# stk500_devcode = ; # numeric +# avr910_devcode = ; # numeric +# signature = ; # signature bytes +# chip_erase_delay = ; # micro-seconds +# reset = dedicated | io; +# retry_pulse = reset | sck; +# pgm_enable = ; +# chip_erase = ; +# chip_erase_delay = ; # chip erase delay (us) +# # STK500 parameters (parallel programming IO lines) +# pagel = ; # pin name in hex, i.e., 0xD7 +# bs2 = ; # pin name in hex, i.e., 0xA0 +# serial = ; # can use serial downloading +# parallel = ; # can use par. programming +# # STK500v2 parameters, to be taken from Atmel's XML files +# timeout = ; +# stabdelay = ; +# cmdexedelay = ; +# synchloops = ; +# bytedelay = ; +# pollvalue = ; +# pollindex = ; +# predelay = ; +# postdelay = ; +# pollmethod = ; +# mode = ; +# delay = ; +# blocksize = ; +# readsize = ; +# hvspcmdexedelay = ; +# # STK500v2 HV programming parameters, from XML +# pp_controlstack = , , ...; # PP only +# hvsp_controlstack = , , ...; # HVSP only +# hventerstabdelay = ; +# progmodedelay = ; # PP only +# latchcycles = ; +# togglevtg = ; +# poweroffdelay = ; +# resetdelayms = ; +# resetdelayus = ; +# hvleavestabdelay = ; +# resetdelay = ; +# synchcycles = ; # HVSP only +# chiperasepulsewidth = ; # PP only +# chiperasepolltimeout = ; +# chiperasetime = ; # HVSP only +# programfusepulsewidth = ; # PP only +# programfusepolltimeout = ; +# programlockpulsewidth = ; # PP only +# programlockpolltimeout = ; +# # JTAG ICE mkII parameters, also from XML files +# allowfullpagebitstream = ; +# enablepageprogramming = ; +# idr = ; # IO addr of IDR (OCD) reg. +# rampz = ; # IO addr of RAMPZ reg. +# spmcr = ; # mem addr of SPMC[S]R reg. +# eecr = ; # mem addr of EECR reg. +# # (only when != 0x3c) +# +# memory +# paged = ; # yes / no +# size = ; # bytes +# page_size = ; # bytes +# num_pages = ; # numeric +# min_write_delay = ; # micro-seconds +# max_write_delay = ; # micro-seconds +# readback_p1 = ; # byte value +# readback_p2 = ; # byte value +# pwroff_after_write = ; # yes / no +# read = ; +# write = ; +# read_lo = ; +# read_hi = ; +# write_lo = ; +# write_hi = ; +# loadpage_lo = ; +# loadpage_hi = ; +# writepage = ; +# ; +# ; +# +# If any of the above parameters are not specified, the default value +# of 0 is used for numerics or the empty string ("") for string +# values. If a required parameter is left empty, AVRDUDE will +# complain. +# +# NOTES: +# * 'devicecode' is the device code used by the STK500 (see codes +# listed below) +# * Not all memory types will implement all instructions. +# * AVR Fuse bits and Lock bits are implemented as a type of memory. +# * Example memory types are: +# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high +# fuse), "signature", "calibration", "lock" +# * The memory type specified on the avrdude command line must match +# one of the memory types defined for the specified chip. +# * The pwroff_after_write flag causes avrdude to attempt to +# power the device off and back on after an unsuccessful write to +# the affected memory area if VCC programmer pins are defined. If +# VCC pins are not defined for the programmer, a message +# indicating that the device needs a power-cycle is printed out. +# This flag was added to work around a problem with the +# at90s4433/2333's; see the at90s4433 errata at: +# +# http://www.atmel.com/atmel/acrobat/doc1280.pdf +# +# INSTRUCTION FORMATS +# +# Instruction formats are specified as a comma seperated list of +# string values containing information (bit specifiers) about each +# of the 32 bits of the instruction. Bit specifiers may be one of +# the following formats: +# +# '1' = the bit is always set on input as well as output +# +# '0' = the bit is always clear on input as well as output +# +# 'x' = the bit is ignored on input and output +# +# 'a' = the bit is an address bit, the bit-number matches this bit +# specifier's position within the current instruction byte +# +# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 +# is address bit 12 on input, a0 is address bit 0. +# +# 'i' = the bit is an input data bit +# +# 'o' = the bit is an output data bit +# +# Each instruction must be composed of 32 bit specifiers. The +# instruction specification closely follows the instruction data +# provided in Atmel's data sheets for their parts. +# +# See below for some examples. +# +# +# The following are STK500 part device codes to use for the +# "devicecode" field of the part. These came from Atmel's software +# section avr061.zip which accompanies the application note +# AVR061 available from: +# +# http://www.atmel.com/atmel/acrobat/doc2525.pdf +# + +#define ATTINY10 0x10 +#define ATTINY11 0x11 +#define ATTINY12 0x12 +#define ATTINY15 0x13 +#define ATTINY13 0x14 + +#define ATTINY22 0x20 +#define ATTINY26 0x21 +#define ATTINY28 0x22 +#define ATTINY2313 0x23 + +#define AT90S1200 0x33 + +#define AT90S2313 0x40 +#define AT90S2323 0x41 +#define AT90S2333 0x42 +#define AT90S2343 0x43 + +#define AT90S4414 0x50 +#define AT90S4433 0x51 +#define AT90S4434 0x52 +#define ATMEGA48 0x59 + +#define AT90S8515 0x60 +#define AT90S8535 0x61 +#define AT90C8534 0x62 +#define ATMEGA8515 0x63 +#define ATMEGA8535 0x64 + +#define ATMEGA8 0x70 +#define ATMEGA88 0x73 +#define ATMEGA168 0x86 + +#define ATMEGA161 0x80 +#define ATMEGA163 0x81 +#define ATMEGA16 0x82 +#define ATMEGA162 0x83 +#define ATMEGA169 0x84 + +#define ATMEGA323 0x90 +#define ATMEGA32 0x91 + +#define ATMEGA64 0xA0 + +#define ATMEGA103 0xB1 +#define ATMEGA128 0xB2 +#define AT90CAN128 0xB3 + +#define AT86RF401 0xD0 + +#define AT89START 0xE0 +#define AT89S51 0xE0 +#define AT89S52 0xE1 + +# The following table lists the devices in the original AVR910 +# appnote: +# |Device |Signature | Code | +# +-------+----------+------+ +# |tiny12 | 1E 90 05 | 0x55 | +# |tiny15 | 1E 90 06 | 0x56 | +# | | | | +# | S1200 | 1E 90 01 | 0x13 | +# | | | | +# | S2313 | 1E 91 01 | 0x20 | +# | S2323 | 1E 91 02 | 0x48 | +# | S2333 | 1E 91 05 | 0x34 | +# | S2343 | 1E 91 03 | 0x4C | +# | | | | +# | S4414 | 1E 92 01 | 0x28 | +# | S4433 | 1E 92 03 | 0x30 | +# | S4434 | 1E 92 02 | 0x6C | +# | | | | +# | S8515 | 1E 93 01 | 0x38 | +# | S8535 | 1E 93 03 | 0x68 | +# | | | | +# |mega32 | 1E 95 01 | 0x72 | +# |mega83 | 1E 93 05 | 0x65 | +# |mega103| 1E 97 01 | 0x41 | +# |mega161| 1E 94 01 | 0x60 | +# |mega163| 1E 94 02 | 0x64 | + +# Appnote AVR109 also has a table of AVR910 device codes, which +# lists: +# dev avr910 signature +# ATmega8 0x77 0x1E 0x93 0x07 +# ATmega8515 0x3B 0x1E 0x93 0x06 +# ATmega8535 0x6A 0x1E 0x93 0x08 +# ATmega16 0x75 0x1E 0x94 0x03 +# ATmega162 0x63 0x1E 0x94 0x04 +# ATmega163 0x66 0x1E 0x94 0x02 +# ATmega169 0x79 0x1E 0x94 0x05 +# ATmega32 0x7F 0x1E 0x95 0x02 +# ATmega323 0x73 0x1E 0x95 0x01 +# ATmega64 0x46 0x1E 0x96 0x02 +# ATmega128 0x44 0x1E 0x97 0x02 +# +# These codes refer to "BOOT" device codes which are apparently +# different than standard device codes, for whatever reasons +# (often one above the standard code). + +# There are several extended versions of AVR910 implementations around +# in the Internet. These add the following codes (only devices that +# actually exist are listed): + +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 + +# +# Overall avrdude defaults +# +default_parallel = "lpt1"; +default_serial = "com1"; + + +# +# PROGRAMMER DEFINITIONS +# + +programmer + id = "avrisp"; + desc = "Atmel AVR ISP"; + type = stk500; +; + +programmer + id = "avrispv2"; + desc = "Atmel AVR ISP V2"; + type = stk500v2; +; + +programmer + id = "avrispmkII"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +programmer + id = "avrisp2"; + desc = "Atmel AVR ISP mkII"; + type = stk500v2; +; + +# This is supposed to be the "default" STK500 entry. +# Attempts to select the correct firmware version +# by probing for it. Better use one of the entries +# below instead. +programmer + id = "stk500"; + desc = "Atmel STK500"; + type = stk500generic; +; + +programmer + id = "stk500v1"; + desc = "Atmel STK500 Version 1.x firmware"; + type = stk500; +; + +programmer + id = "stk500v2"; + desc = "Atmel STK500 Version 2.x firmware"; + type = stk500v2; +; + +programmer + id = "stk500pp"; + desc = "Atmel STK500 V2 in parallel programming mode"; + type = stk500pp; +; + +programmer + id = "stk500hvsp"; + desc = "Atmel STK500 V2 in high-voltage serial programming mode"; + type = stk500hvsp; +; + +programmer + id = "avr910"; + desc = "Atmel Low Cost Serial Programmer"; + type = avr910; +; + +programmer + id = "usbasp"; + desc = "USBasp, http://www.fischl.de/usbasp/"; + type = usbasp; +; + +programmer + id = "usbtiny"; + desc = "USBtiny simple USB programmer"; + type = usbtiny; +; + +programmer + id = "butterfly"; + desc = "Atmel Butterfly Development Board"; + type = butterfly; +; + +programmer + id = "avr109"; + desc = "Atmel AppNote AVR109 Boot Loader"; + type = butterfly; +; + +programmer + id = "avr911"; + desc = "Atmel AppNote AVR911 AVROSP"; + type = butterfly; +; + +programmer + id = "jtagmkI"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = jtagmki; +; + +# easier to type +programmer + id = "jtag1slow"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 19200; + type = jtagmki; +; + +programmer + id = "jtagmkII"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# easier to type +programmer + id = "jtag2slow"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = jtagmkii; +; + +# JTAG ICE mkII @ 115200 Bd +programmer + id = "jtag2fast"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# make the fast one the default, people will love that +programmer + id = "jtag2"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 115200; + type = jtagmkii; +; + +# JTAG ICE mkII in ISP mode +programmer + id = "jtag2isp"; + desc = "Atmel JTAG ICE mkII in ISP mode"; + baudrate = 115200; + type = jtagmkii_isp; +; + +# JTAG ICE mkII in debugWire mode +programmer + id = "jtag2dw"; + desc = "Atmel JTAG ICE mkII in debugWire mode"; + baudrate = 115200; + type = jtagmkii_dw; +; + +# AVR Dragon in JTAG mode +programmer + id = "dragon_jtag"; + desc = "Atmel AVR Dragon in JTAG mode"; + baudrate = 115200; + type = dragon_jtag; +; + +# AVR Dragon in ISP mode +programmer + id = "dragon_isp"; + desc = "Atmel AVR Dragon in ISP mode"; + baudrate = 115200; + type = dragon_isp; +; + +# AVR Dragon in PP mode +programmer + id = "dragon_pp"; + desc = "Atmel AVR Dragon in PP mode"; + baudrate = 115200; + type = dragon_pp; +; + +# AVR Dragon in HVSP mode +programmer + id = "dragon_hvsp"; + desc = "Atmel AVR Dragon in HVSP mode"; + baudrate = 115200; + type = dragon_hvsp; +; + +# AVR Dragon in debugWire mode +programmer + id = "dragon_dw"; + desc = "Atmel AVR Dragon in debugWire mode"; + baudrate = 115200; + type = dragon_dw; +; + +programmer + id = "pavr"; + desc = "Jason Kyle's pAVR Serial Programmer"; + type = avr910; +; + +# Parallel port programmers. + +programmer + id = "bsd"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + type = par; + vcc = 2, 3, 4, 5; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; +; + +programmer + id = "stk200"; + desc = "STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; +; + +# The programming dongle used by the popular Ponyprog +# utility. It is almost similar to the STK200 one, +# except that there is a LED indicating that the +# programming is currently in progress. + +programmer + id = "pony-stk200"; + desc = "Pony Prog STK200"; + type = par; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + +programmer + id = "dt006"; + desc = "Dontronics DT006"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "bascom"; + desc = "Bascom SAMPLE programming cable"; + type = par; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer + id = "alf"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + type = par; + vcc = 2, 3, 4, 5; + buff = 6; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; + errled = 1; + rdyled = 14; + pgmled = 16; + vfyled = 17; +; + +programmer + id = "sp12"; + desc = "Steve Bolt's Programmer"; + type = par; + vcc = 4,5,6,7,8; + reset = 3; + sck = 2; + mosi = 9; + miso = 11; +; + +programmer + id = "picoweb"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + type = par; + reset = 2; + sck = 3; + mosi = 4; + miso = 13; +; + +programmer + id = "abcmini"; + desc = "ABCmini Board, aka Dick Smith HOTCHIP"; + type = par; + reset = 4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "futurlec"; + desc = "Futurlec.com programming cable."; + type = par; + reset = 3; + sck = 2; + mosi = 1; + miso = 10; +; + + +# From the contributor of the "xil" jtag cable: +# The "vcc" definition isn't really vcc (the cable gets its power from +# the programming circuit) but is necessary to switch one of the +# buffer lines (trying to add it to the "buff" lines doesn't work). +# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK +# to SCK (plus vcc/gnd of course) +programmer + id = "xil"; + desc = "Xilinx JTAG cable"; + type = par; + mosi = 2; + sck = 3; + reset = 4; + buff = 5; + miso = 13; + vcc = 6; +; + + +programmer + id = "dapa"; + desc = "Direct AVR Parallel Access cable"; + type = par; + vcc = 3; + reset = 16; + sck = 1; + mosi = 2; + miso = 11; +; + +programmer + id = "atisp"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + type = par; + reset = ~6; + sck = ~8; + mosi = ~7; + miso = ~10; +; + +programmer + id = "ere-isp-avr"; + desc = "ERE ISP-AVR "; + type = par; + reset = ~4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "blaster"; + desc = "Altera ByteBlaster"; + type = par; + sck = 2; + miso = 11; + reset = 3; + mosi = 8; + buff = 14; +; + +# It is almost same as pony-stk200, except vcc on pin 5 to auto +# disconnect port (download on http://electropol.free.fr) +programmer + id = "frank-stk200"; + desc = "Frank STK200"; + type = par; + vcc = 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; + pgmled = 8; +; + + +# +# some ultra cheap programmers use bitbanging on the +# serialport. +# +# PC - DB9 - Pins for RS232: +# +# GND 5 -- |O +# | O| <- 9 RI +# DTR 4 <- |O | +# | O| <- 8 CTS +# TXD 3 <- |O | +# | O| -> 7 RTS +# RXD 2 -> |O | +# | O| <- 6 DSR +# DCD 1 -> |O +# +# Using RXD is currently not supported. +# Using RI is not supported under Win32 but is supported under Posix. + +# serial ponyprog design (dasa2 in uisp) +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "ponyser"; + desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# Same as above, different name +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "siprog"; + desc = "Lancos SI-Prog "; + type = serbb; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# unknown (dasa in uisp) +# reset=rts sck=dtr mosi=txd miso=cts + +programmer + id = "dasa"; + desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; + type = serbb; + reset = 7; + sck = 4; + mosi = 3; + miso = 8; +; + +# unknown (dasa3 in uisp) +# reset=!dtr sck=rts mosi=txd miso=cts + +programmer + id = "dasa3"; + desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; + type = serbb; + reset = ~4; + sck = 7; + mosi = 3; + miso = 8; +; + +# +# PART DEFINITIONS +# + +#------------------------------------------------------------ +# ATtiny11 +#------------------------------------------------------------ + +# This is an HVSP-only device. + +part + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; + + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; + + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + +#------------------------------------------------------------ +# ATtiny12 +#------------------------------------------------------------ + +part + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny13 +#------------------------------------------------------------ + +part + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny15 +#------------------------------------------------------------ + +part + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# AT90s1200 +#------------------------------------------------------------ + +part + id = "1200"; + desc = "AT90S1200"; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4414 +#------------------------------------------------------------ + +part + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2313 +#------------------------------------------------------------ + +part + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2333 +#------------------------------------------------------------ + +part + id = "2333"; +##### WARNING: No XML file for device 'AT90S2333'! ##### + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# ATmega1284P +#------------------------------------------------------------ + +# similar to ATmega164p + +part + id = "m1284p"; + desc = "ATMEGA1284P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x97 0x05; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90s2343 (also AT90s2323 and ATtiny22) +#------------------------------------------------------------ + +part + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s4433 +#------------------------------------------------------------ + +part + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4434 +#------------------------------------------------------------ + +part + id = "4434"; +##### WARNING: No XML file for device 'AT90S4434'! ##### + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s8515 +#------------------------------------------------------------ + +part + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s8535 +#------------------------------------------------------------ + +part + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o x x x x x x"; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# ATmega103 +#------------------------------------------------------------ + +part + id = "m103"; + desc = "ATMEGA103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; + + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega64 +#------------------------------------------------------------ + +part + id = "m64"; + desc = "ATMEGA64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega128 +#------------------------------------------------------------ + +part + id = "m128"; + desc = "ATMEGA128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN128 +#------------------------------------------------------------ + +part + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega16 +#------------------------------------------------------------ + +part + id = "m16"; + desc = "ATMEGA16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega164P +#------------------------------------------------------------ + +# close to ATmega16 + +part + id = "m164p"; + desc = "ATMEGA164P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega324P +#------------------------------------------------------------ + +# similar to ATmega164P + +part + id = "m324p"; + desc = "ATMEGA324P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega644 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m644"; + desc = "ATMEGA644"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega644P +#------------------------------------------------------------ + +# similar to ATmega164p + +part + id = "m644p"; + desc = "ATMEGA644P"; + has_jtag = yes; +# stk500_devcode = 0x82; # no STK500v1 support +# avr910_devcode = 0x?; # try the ATmega16 one:^ + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x0a; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega162 +#------------------------------------------------------------ + +part + id = "m162"; + desc = "ATMEGA162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + + ; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; +; + + + +#------------------------------------------------------------ +# ATmega163 +#------------------------------------------------------------ + +part + id = "m163"; + desc = "ATMEGA163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega169 +#------------------------------------------------------------ + +part + id = "m169"; + desc = "ATMEGA169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329 +#------------------------------------------------------------ + +part + id = "m329"; + desc = "ATMEGA329"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3290 +#------------------------------------------------------------ + +# identical to ATmega329 + +part + id = "m3290"; + desc = "ATMEGA3290"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a3 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega649 +#------------------------------------------------------------ + +part + id = "m649"; + desc = "ATMEGA649"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6490 +#------------------------------------------------------------ + +# identical to ATmega649 + +part + id = "m6490"; + desc = "ATMEGA6490"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x04; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega32 +#------------------------------------------------------------ + +part + id = "m32"; + desc = "ATMEGA32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega161 +#------------------------------------------------------------ + +part + id = "m161"; + desc = "ATMEGA161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + memory "eeprom" + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; + + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega8 +#------------------------------------------------------------ + +part + id = "m8"; + desc = "ATMEGA8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega8515 +#------------------------------------------------------------ + +part + id = "m8515"; + desc = "ATMEGA8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega8535 +#------------------------------------------------------------ + +part + id = "m8535"; + desc = "ATMEGA8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATtiny26 +#------------------------------------------------------------ + +part + id = "t26"; + desc = "ATTINY26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny261 +#------------------------------------------------------------ +# Close to ATtiny26 + +part + id = "t261"; + desc = "ATTINY261"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny461 +#------------------------------------------------------------ +# Close to ATtiny261 + +part + id = "t461"; + desc = "ATTINY461"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny861 +#------------------------------------------------------------ +# Close to ATtiny461 + +part + id = "t861"; + desc = "ATTINY861"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATmega48 +#------------------------------------------------------------ + +part + id = "m48"; + desc = "ATMEGA48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; +# avr910_devcode = 0x; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ + +part + id = "m88"; + desc = "ATMEGA88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega168 +#------------------------------------------------------------ + +part + id = "m168"; + desc = "ATMEGA168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega328 +#------------------------------------------------------------ + +part + id = "m328p"; + desc = "ATMEGA328P"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x0F; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x x o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATtiny2313 +#------------------------------------------------------------ + +part + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. +# The information in the data sheet of April/2004 is wrong, this works: + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2 +#------------------------------------------------------------ + +part + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3 +#------------------------------------------------------------ + +# Completely identical to AT90PWM2 (including the signature!) + +part + id = "pwm3"; + desc = "AT90PWM3"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2B +#------------------------------------------------------------ +# Same as AT90PWM2 but different signature. + +part + id = "pwm2b"; + desc = "AT90PWM2B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3B +#------------------------------------------------------------ + +# Completely identical to AT90PWM2B (including the signature!) + +part + id = "pwm3b"; + desc = "AT90PWM3B"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x83; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny25 +#------------------------------------------------------------ + +part + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny45 +#------------------------------------------------------------ + +part + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny85 +#------------------------------------------------------------ + +part + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega640 +#------------------------------------------------------------ +# Almost same as ATmega1280, except for different memory sizes + +part + id = "m640"; + desc = "ATMEGA640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1280 +#------------------------------------------------------------ + +part + id = "m1280"; + desc = "ATMEGA1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1281 +#------------------------------------------------------------ +# Identical to ATmega1280 + +part + id = "m1281"; + desc = "ATMEGA1281"; + signature = 0x1e 0x97 0x04; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2560 +#------------------------------------------------------------ + +part + id = "m2560"; + desc = "ATMEGA2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2561 +#------------------------------------------------------------ + +part + id = "m2561"; + desc = "ATMEGA2561"; + signature = 0x1e 0x98 0x02; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny24 +#------------------------------------------------------------ + +part + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny44 +#------------------------------------------------------------ + +part + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny84 +#------------------------------------------------------------ + +part + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a8 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB646 +#------------------------------------------------------------ + +part + id = "usb646"; + desc = "AT90USB646"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB647 +#------------------------------------------------------------ +# identical to AT90USB646 + +part + id = "usb647"; + desc = "AT90USB647"; +# signature = 0x1e 0x96 0x82; ? + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1286 +#------------------------------------------------------------ + +part + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1287 +#------------------------------------------------------------ +# identical to AT90USB1286 + +part + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega325 +#------------------------------------------------------------ + +part + id = "m325"; + desc = "ATMEGA325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega645 +#------------------------------------------------------------ + +part + id = "m645"; + desc = "ATMEGA645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3250 +#------------------------------------------------------------ + +part + id = "m3250"; + desc = "ATMEGA3250"; + signature = 0x1E 0x95 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6450 +#------------------------------------------------------------ + +part + id = "m6450"; + desc = "ATMEGA6450"; + signature = 0x1E 0x96 0x06; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; diff --git a/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/LiquidCrystal.cpp b/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/LiquidCrystal.cpp new file mode 100644 index 000000000..c3362f6d8 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/LiquidCrystal.cpp @@ -0,0 +1,309 @@ +#include "LiquidCrystal.h" + +#include +#include +#include +#include "WProgram.h" + +// When the display powers up, it is configured as follows: +// +// 1. Display clear +// 2. Function set: +// DL = 1; 8-bit interface data +// N = 0; 1-line display +// F = 0; 5x8 dot character font +// 3. Display on/off control: +// D = 0; Display off +// C = 0; Cursor off +// B = 0; Blinking off +// 4. Entry mode set: +// I/D = 1; Increment by 1 +// S = 0; No shift +// +// Note, however, that resetting the Arduino doesn't reset the LCD, so we +// can't assume that it's in that state when a sketch starts (and the +// LiquidCrystal constructor is called). + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + init(0, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +{ + init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +{ + init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0); +} + +void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + _rs_pin = rs; + _rw_pin = rw; + _enable_pin = enable; + + _data_pins[0] = d0; + _data_pins[1] = d1; + _data_pins[2] = d2; + _data_pins[3] = d3; + _data_pins[4] = d4; + _data_pins[5] = d5; + _data_pins[6] = d6; + _data_pins[7] = d7; + + pinMode(_rs_pin, OUTPUT); + // we can save 1 pin by not using RW. Indicate by passing 255 instead of pin# + if (_rw_pin != 255) { + pinMode(_rw_pin, OUTPUT); + } + pinMode(_enable_pin, OUTPUT); + + if (fourbitmode) + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + else + _displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS; + + begin(16, 1); +} + +void LiquidCrystal::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) { + if (lines > 1) { + _displayfunction |= LCD_2LINE; + } + _numlines = lines; + _currline = 0; + + // for some 1 line displays you can select a 10 pixel high font + if ((dotsize != 0) && (lines == 1)) { + _displayfunction |= LCD_5x10DOTS; + } + + // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! + // according to datasheet, we need at least 40ms after power rises above 2.7V + // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50 + delayMicroseconds(50000); + // Now we pull both RS and R/W low to begin commands + digitalWrite(_rs_pin, LOW); + digitalWrite(_enable_pin, LOW); + if (_rw_pin != 255) { + digitalWrite(_rw_pin, LOW); + } + + //put the LCD into 4 bit or 8 bit mode + if (! (_displayfunction & LCD_8BITMODE)) { + // this is according to the hitachi HD44780 datasheet + // figure 24, pg 46 + + // we start in 8bit mode, try to set 4 bit mode + write4bits(0x03); + delayMicroseconds(4500); // wait min 4.1ms + + // second try + write4bits(0x03); + delayMicroseconds(4500); // wait min 4.1ms + + // third go! + write4bits(0x03); + delayMicroseconds(150); + + // finally, set to 4-bit interface + write4bits(0x02); + } else { + // this is according to the hitachi HD44780 datasheet + // page 45 figure 23 + + // Send function set command sequence + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(4500); // wait more than 4.1ms + + // second try + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(150); + + // third go + command(LCD_FUNCTIONSET | _displayfunction); + } + + // finally, set # lines, font size, etc. + command(LCD_FUNCTIONSET | _displayfunction); + + // turn the display on with no cursor or blinking default + _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; + display(); + + // clear it off + clear(); + + // Initialize to default text direction (for romance languages) + _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; + // set the entry mode + command(LCD_ENTRYMODESET | _displaymode); + +} + +/********** high level commands, for the user! */ +void LiquidCrystal::clear() +{ + command(LCD_CLEARDISPLAY); // clear display, set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal::home() +{ + command(LCD_RETURNHOME); // set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal::setCursor(uint8_t col, uint8_t row) +{ + int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; + if ( row > _numlines ) { + row = _numlines-1; // we count rows starting w/0 + } + + command(LCD_SETDDRAMADDR | (col + row_offsets[row])); +} + +// Turn the display on/off (quickly) +void LiquidCrystal::noDisplay() { + _displaycontrol &= ~LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal::display() { + _displaycontrol |= LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turns the underline cursor on/off +void LiquidCrystal::noCursor() { + _displaycontrol &= ~LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal::cursor() { + _displaycontrol |= LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turn on and off the blinking cursor +void LiquidCrystal::noBlink() { + _displaycontrol &= ~LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal::blink() { + _displaycontrol |= LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// These commands scroll the display without changing the RAM +void LiquidCrystal::scrollDisplayLeft(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); +} +void LiquidCrystal::scrollDisplayRight(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); +} + +// This is for text that flows Left to Right +void LiquidCrystal::leftToRight(void) { + _displaymode |= LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This is for text that flows Right to Left +void LiquidCrystal::rightToLeft(void) { + _displaymode &= ~LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'right justify' text from the cursor +void LiquidCrystal::autoscroll(void) { + _displaymode |= LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'left justify' text from the cursor +void LiquidCrystal::noAutoscroll(void) { + _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// Allows us to fill the first 8 CGRAM locations +// with custom characters +void LiquidCrystal::createChar(uint8_t location, uint8_t charmap[]) { + location &= 0x7; // we only have 8 locations 0-7 + command(LCD_SETCGRAMADDR | (location << 3)); + for (int i=0; i<8; i++) { + write(charmap[i]); + } +} + +/*********** mid level commands, for sending data/cmds */ + +inline void LiquidCrystal::command(uint8_t value) { + send(value, LOW); +} + +inline void LiquidCrystal::write(uint8_t value) { + send(value, HIGH); +} + +/************ low level data pushing commands **********/ + +// write either command or data, with automatic 4/8-bit selection +void LiquidCrystal::send(uint8_t value, uint8_t mode) { + digitalWrite(_rs_pin, mode); + + // if there is a RW pin indicated, set it low to Write + if (_rw_pin != 255) { + digitalWrite(_rw_pin, LOW); + } + + if (_displayfunction & LCD_8BITMODE) { + write8bits(value); + } else { + write4bits(value>>4); + write4bits(value); + } +} + +void LiquidCrystal::pulseEnable(void) { + digitalWrite(_enable_pin, LOW); + delayMicroseconds(1); + digitalWrite(_enable_pin, HIGH); + delayMicroseconds(1); // enable pulse must be >450ns + digitalWrite(_enable_pin, LOW); + delayMicroseconds(100); // commands need > 37us to settle +} + +void LiquidCrystal::write4bits(uint8_t value) { + for (int i = 0; i < 4; i++) { + pinMode(_data_pins[i], OUTPUT); + digitalWrite(_data_pins[i], (value >> i) & 0x01); + } + + pulseEnable(); +} + +void LiquidCrystal::write8bits(uint8_t value) { + for (int i = 0; i < 8; i++) { + pinMode(_data_pins[i], OUTPUT); + digitalWrite(_data_pins[i], (value >> i) & 0x01); + } + + pulseEnable(); +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/LiquidCrystal.h b/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/LiquidCrystal.h new file mode 100644 index 000000000..f66ec1b4c --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/LiquidCrystal.h @@ -0,0 +1,104 @@ +#ifndef LiquidCrystal_h +#define LiquidCrystal_h + +#include +#include "Print.h" + +// commands +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x20 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off control +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_2LINE 0x08 +#define LCD_1LINE 0x00 +#define LCD_5x10DOTS 0x04 +#define LCD_5x8DOTS 0x00 + +class LiquidCrystal : public Print { +public: + LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3); + LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3); + + void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + + void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); + + void clear(); + void home(); + + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void leftToRight(); + void rightToLeft(); + void autoscroll(); + void noAutoscroll(); + + void createChar(uint8_t, uint8_t[]); + void setCursor(uint8_t, uint8_t); + virtual void write(uint8_t); + void command(uint8_t); +private: + void send(uint8_t, uint8_t); + void write4bits(uint8_t); + void write8bits(uint8_t); + void pulseEnable(); + + uint8_t _rs_pin; // LOW: command. HIGH: character. + uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD. + uint8_t _enable_pin; // activated by a HIGH pulse. + uint8_t _data_pins[8]; + + uint8_t _displayfunction; + uint8_t _displaycontrol; + uint8_t _displaymode; + + uint8_t _initialized; + + uint8_t _numlines,_currline; +}; + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/keywords.txt b/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/keywords.txt new file mode 100644 index 000000000..132845cb6 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/LiquidCrystal/keywords.txt @@ -0,0 +1,37 @@ +####################################### +# Syntax Coloring Map For LiquidCrystal +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +LiquidCrystal KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +clear KEYWORD2 +home KEYWORD2 +print KEYWORD2 +setCursor KEYWORD2 +cursor KEYWORD2 +noCursor KEYWORD2 +blink KEYWORD2 +noBlink KEYWORD2 +display KEYWORD2 +noDisplay KEYWORD2 +autoscroll KEYWORD2 +noAutoscroll KEYWORD2 +leftToRight KEYWORD2 +rightToLeft KEYWORD2 +scrollDisplayLeft KEYWORD2 +scrollDisplayRight KEYWORD2 +createChar KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/SPI/SPI.cpp b/ArduinoAddons/Arduino_0.xx/libraries/SPI/SPI.cpp new file mode 100644 index 000000000..42915df1e --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/SPI/SPI.cpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2010 by Cristian Maglie + * SPI Master library for arduino. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of either the GNU General Public License version 2 + * or the GNU Lesser General Public License version 2.1, both as + * published by the Free Software Foundation. + */ + +#include "pins_arduino.h" +#include "SPI.h" + +SPIClass SPI; + +void SPIClass::begin() { + // Set direction register for SCK and MOSI pin. + // MISO pin automatically overrides to INPUT. + // When the SS pin is set as OUTPUT, it can be used as + // a general purpose output port (it doesn't influence + // SPI operations). + + pinMode(SCK, OUTPUT); + pinMode(MOSI, OUTPUT); + pinMode(SS, OUTPUT); + + digitalWrite(SCK, LOW); + digitalWrite(MOSI, LOW); + digitalWrite(SS, HIGH); + + // Warning: if the SS pin ever becomes a LOW INPUT then SPI + // automatically switches to Slave, so the data direction of + // the SS pin MUST be kept as OUTPUT. + SPCR |= _BV(MSTR); + SPCR |= _BV(SPE); +} + +void SPIClass::end() { + SPCR &= ~_BV(SPE); +} + +void SPIClass::setBitOrder(uint8_t bitOrder) +{ + if(bitOrder == LSBFIRST) { + SPCR |= _BV(DORD); + } else { + SPCR &= ~(_BV(DORD)); + } +} + +void SPIClass::setDataMode(uint8_t mode) +{ + SPCR = (SPCR & ~SPI_MODE_MASK) | mode; +} + +void SPIClass::setClockDivider(uint8_t rate) +{ + SPCR = (SPCR & ~SPI_CLOCK_MASK) | (rate & SPI_CLOCK_MASK); + SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((rate >> 2) & SPI_2XCLOCK_MASK); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/SPI/SPI.h b/ArduinoAddons/Arduino_0.xx/libraries/SPI/SPI.h new file mode 100644 index 000000000..9d7c3c709 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/SPI/SPI.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2010 by Cristian Maglie + * SPI Master library for arduino. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of either the GNU General Public License version 2 + * or the GNU Lesser General Public License version 2.1, both as + * published by the Free Software Foundation. + */ + +#ifndef _SPI_H_INCLUDED +#define _SPI_H_INCLUDED + +#include +#include +#include + +#define SPI_CLOCK_DIV4 0x00 +#define SPI_CLOCK_DIV16 0x01 +#define SPI_CLOCK_DIV64 0x02 +#define SPI_CLOCK_DIV128 0x03 +#define SPI_CLOCK_DIV2 0x04 +#define SPI_CLOCK_DIV8 0x05 +#define SPI_CLOCK_DIV32 0x06 +#define SPI_CLOCK_DIV64 0x07 + +#define SPI_MODE0 0x00 +#define SPI_MODE1 0x04 +#define SPI_MODE2 0x08 +#define SPI_MODE3 0x0C + +#define SPI_MODE_MASK 0x0C // CPOL = bit 3, CPHA = bit 2 on SPCR +#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR +#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR + +class SPIClass { +public: + inline static byte transfer(byte _data); + + // SPI Configuration methods + + inline static void attachInterrupt(); + inline static void detachInterrupt(); // Default + + static void begin(); // Default + static void end(); + + static void setBitOrder(uint8_t); + static void setDataMode(uint8_t); + static void setClockDivider(uint8_t); +}; + +extern SPIClass SPI; + +byte SPIClass::transfer(byte _data) { + SPDR = _data; + while (!(SPSR & _BV(SPIF))) + ; + return SPDR; +} + +void SPIClass::attachInterrupt() { + SPCR |= _BV(SPIE); +} + +void SPIClass::detachInterrupt() { + SPCR &= ~_BV(SPIE); +} + +#endif diff --git a/ArduinoAddons/Arduino_0.xx/libraries/SPI/keywords.txt b/ArduinoAddons/Arduino_0.xx/libraries/SPI/keywords.txt new file mode 100644 index 000000000..fa7616581 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/SPI/keywords.txt @@ -0,0 +1,36 @@ +####################################### +# Syntax Coloring Map SPI +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +SPI KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +begin KEYWORD2 +end KEYWORD2 +transfer KEYWORD2 +setBitOrder KEYWORD2 +setDataMode KEYWORD2 +setClockDivider KEYWORD2 + + +####################################### +# Constants (LITERAL1) +####################################### +SPI_CLOCK_DIV4 LITERAL1 +SPI_CLOCK_DIV16 LITERAL1 +SPI_CLOCK_DIV64 LITERAL1 +SPI_CLOCK_DIV128 LITERAL1 +SPI_CLOCK_DIV2 LITERAL1 +SPI_CLOCK_DIV8 LITERAL1 +SPI_CLOCK_DIV32 LITERAL1 +SPI_CLOCK_DIV64 LITERAL1 +SPI_MODE0 LITERAL1 +SPI_MODE1 LITERAL1 +SPI_MODE2 LITERAL1 +SPI_MODE3 LITERAL1 \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/ChangeLog b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/ChangeLog new file mode 100644 index 000000000..1ee88d6cf --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/ChangeLog @@ -0,0 +1,114 @@ + +u8glib ChangeLog + +2012-01-01 v0.01 Oliver Kraus + * first beta release for Arduino IDE with simple SSD1325 support +2012-01-04 v0.02 Oliver Kraus + * support for some more display types +2012-01-07 v0.03 Oliver Kraus + * fixed some bugs, added more examples +2012-01-07 v0.04 Oliver Kraus + * single font file +2012-01-08 v0.05 Oliver Kraus + * Cleanup + * More examples + * SSD1325 graylevel support +2012-01-15 v0.06 Oliver Kraus + * LM6063 support +2012-01-17 v0.07 Oliver Kraus + * LM6063 support (update) +2012-01-19 v0.08 Oliver Kraus + * ST7920 beta device +2012-01-21 v0.09 Oliver Kraus + * ST7920 fixed (192x32) + * fixed bug in com layer if pins are none + * str reference position +2012-01-22 v0.10 Oliver Kraus + * Experimental LM6059 +2012-01-24 v0.11 Oliver Kraus + * new st7920 memory layout for 128x64 lcd + * experimental st7920 SPI +2012-01-25 v0.12 Oliver Kraus + * fixed st7920 memory layout for 128x64 lcd + * ST7920 SPI performance improvement +2012-01-27 v0.13 Oliver Kraus + * LM6059 (Adafruit Display) fixed +2012-02-01 v0.14 Oliver Kraus + * undoRotation() + * setRot..() can be used without restrictions + * Class U8GLIB derived from Print class. New function "print" + * Fixed memory index bug in the page management procedures +2012-02-12 v1.00 Oliver Kraus + * XBM support + * F() macro support + * str-rotation commands support ref-height and ref-position +2012-03-17 v1.02 Oliver Kraus + * U8GLIB_ST7687_C144MVGD spi experimental + * U8GLIB_LC7981_160X80 8bit + * Intersection test for frame and box procedures + * 4L double memory architecture + * setContrast infrastructure implemented, but not available for all devices + * drawCircle, drawDisc + * Bugfix for drawStr270 + * New examples: Chess (ported from dogm128 lib) and GraphicsTest +2012-03-31 v1.03 Oliver Kraus + * experimental parallel mode atmega + * more unifont code pages + * double memory, for NHD OLED and DOGXL160 + * "Menu" example + * drawLine +2012-04-13 v1.04 Oliver Kraus + * Adjust U8grelease: Same version number with AVR and Arduino variant +2012-06-10 v1.05 Oliver Kraus + * m2icon font + * experimental lc7981_240x64 device + * experimental ssd1306 + * experimental ssd1322 + * Hardware state backup/restore procedure +2012-06-15 v1.06 Oliver Kraus + * SBN1661 (SED1520?) support + * SSD1306 support + * U8G_PROGMEM bugfix +2012-07-04 v1.07 Oliver Kraus + * Added Makefiles for AVR release (issue 77) + * Fixed examples for Arduino Environment (issue 78) +2012-10-02 v1.08 Oliver Kraus + * Improved delay calculation for strobe pulse (issue 20) + * Support Chipkit (issue 39) + * Improved speed for ST7920 parallel mode (issue 79) + * Overall speed optimization (new page intersection algorithm) + * Support for Displays Newhaven NHD-C12864, CrystalFontz GFAG20232, Seeedstudio 96x96 OLED + * Added SPI support for ST7920 with plain AVR (issue 85) + * Add more LC7981 devices +2012-12-23 v1.09 Oliver Kraus + * Support for Displaytech 64128n + * Support for MINI12864 + * HW SPI for ST7920 + * Add delay after sending a byte with (ST7920 com) + * Support ATTiny + * Support I2C for SSD1306 + * bdf2u8g, Windows executable released + * LC7981 320x64 + * Scalue up: u8g::setScale2x2 + * Added more bitmap fonts + * u8g::drawRBox(), u8g::drawRFrame() + * Support for CFAG20232 (st7920_202x32) + * Fixed ST7920 SW SPI for ChipKit + * Support for tls8204 +2013-02-02 v1.10 Oliver Kraus + * Support for SSD1309 + * Support for NHD-C12832A1Z + * Bugfix: Fixed reset controll in parallel modes + * Bugfix: Fixed calculation of cursor position + * Bugfix: ST7920 parallel mode +2013-03-2 v1.11 Oliver Kraus + * Support for T6963 + * Support for Arduino Due + * Sleep Mode + * 4x mode for ST7920 + * New C++ interface for ST7920 + + + + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/INSTALL.TXT b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/INSTALL.TXT new file mode 100644 index 000000000..d87f97128 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/INSTALL.TXT @@ -0,0 +1,21 @@ + +U8GLIB +http://code.google.com/p/u8glib/ + + +Install instructions for the Arduino environment. + + 1. Unzip u8glib_arduino_vX.XX.zip into the "libraries" folder + 2. Start Arduino IDE + +Install instructions for the Chipkit (Arduino) environment. + + 1. cd /libraries + 2. unzip u8glib_arduino_vX.XX.zip + 3. cd ///hardware/pic32/libraries + 4. again: u8glib_arduino_vX.XX.zip + 5. Open hardware/pic32/cores/pic32/Print.h + Remove line + #define BYTE 0 + from the file, use PRINT_BYTE instead of BYTE. + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/U8glib.cpp b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/U8glib.cpp new file mode 100644 index 000000000..aa870b114 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/U8glib.cpp @@ -0,0 +1,80 @@ +/* + + U8glib.cpp + + C++ Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "U8glib.h" + + + +uint8_t U8GLIB::initSPI(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) +{ + prepare(); + return u8g_InitSPI(&u8g, dev, sck, mosi, cs, a0, reset); +} + +uint8_t U8GLIB::initHWSPI(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) +{ + prepare(); + return u8g_InitHWSPI(&u8g, dev, cs, a0, reset); +} + +uint8_t U8GLIB::initI2C(u8g_dev_t *dev, uint8_t options) +{ + prepare(); + return u8g_InitI2C(&u8g, dev, options); +} + +uint8_t U8GLIB::init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) +{ + prepare(); + return u8g_Init8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset); +} + +uint8_t U8GLIB::init8BitFixedPort(u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset) +{ + prepare(); + return u8g_Init8BitFixedPort(&u8g, dev, en, cs, di, rw, reset); +} + +uint8_t U8GLIB::initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) +{ + prepare(); + return u8g_InitRW8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/U8glib.h b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/U8glib.h new file mode 100644 index 000000000..a77444425 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/U8glib.h @@ -0,0 +1,826 @@ +/* + + U8glib.h + + C++ Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef _CPP_U8GLIB +#define _CPP_U8GLIB + +#include +#include "utility/u8g.h" + + +class U8GLIB : public Print +{ + private: + u8g_t u8g; + u8g_uint_t tx, ty; // current position for the Print base class procedures + uint8_t is_begin; + + void prepare(void) { tx = 0; ty = 0; is_begin = 0; } + void cbegin(void) { if ( is_begin == 0 ) { is_begin = 1; u8g_Begin(&u8g); } } + uint8_t initSPI(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE); + uint8_t initHWSPI(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE); + uint8_t initI2C(u8g_dev_t *dev, uint8_t options); + protected: + uint8_t init8BitFixedPort(u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset); + private: + uint8_t init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE); + uint8_t initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset); + public: + + /* constructor */ + U8GLIB(void) + { } + U8GLIB(u8g_dev_t *dev) + { prepare(); u8g_Init(&u8g, dev); } + U8GLIB(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) + { initSPI(dev, sck, mosi, cs, a0, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) + { initHWSPI(dev, cs, a0, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t options) + { initI2C(dev, options); } + U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) + { init8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) + { initRW8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); } + + uint8_t begin(void) { is_begin = 1; return u8g_Begin(&u8g); } + + void setPrintPos(u8g_uint_t x, u8g_uint_t y) { tx = x; ty = y; } + u8g_t *getU8g(void) { return &u8g; } + + + /* implementation of the write interface to the print class */ +#if defined(ARDUINO) && ARDUINO >= 100 + size_t write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); return 1;} +#else + void write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); } +#endif + + /* screen rotation */ + void undoRotation(void) { u8g_UndoRotation(&u8g); } + void setRot90(void) { u8g_SetRot90(&u8g); } + void setRot180(void) { u8g_SetRot180(&u8g); } + void setRot270(void) { u8g_SetRot270(&u8g); } + + /* screen scaling */ + void undoScale(void) { u8g_UndoScale(&u8g); } + void setScale2x2(void) { u8g_SetScale2x2(&u8g); } + + /* picture loop */ + void firstPage(void) { cbegin(); u8g_FirstPage(&u8g); } + uint8_t nextPage(void) { return u8g_NextPage(&u8g); } + + /* system commands */ + uint8_t setContrast(uint8_t contrast) { cbegin(); return u8g_SetContrast(&u8g, contrast); } + void sleepOn(void) { u8g_SleepOn(&u8g); } + void sleepOff(void) { u8g_SleepOff(&u8g); } + + /* graphic primitives */ + void setColorIndex(uint8_t color_index) { u8g_SetColorIndex(&u8g, color_index); } + uint8_t getColorIndex(void) { return u8g_GetColorIndex(&u8g); } + + void setDefaultForegroundColor(void) { u8g_SetDefaultForegroundColor(&u8g); } + void setDefaultBackgroundColor(void) { u8g_SetDefaultBackgroundColor(&u8g); } + void setDefaultMidColor(void) { u8g_SetDefaultMidColor(&u8g); } + + u8g_uint_t getWidth(void) { return u8g_GetWidth(&u8g); } + u8g_uint_t getHeight(void) { return u8g_GetHeight(&u8g); } + uint8_t getMode(void) { return u8g_GetMode(&u8g); } + + void drawPixel(u8g_uint_t x, u8g_uint_t y) { return u8g_DrawPixel(&u8g, x, y); } + void drawHLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) { u8g_DrawHLine(&u8g, x, y, w); } + void drawVLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t h) { u8g_DrawVLine(&u8g, x, y, h); } + void drawLine(u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2) { u8g_DrawLine(&u8g, x1, y1, x2, y2); } + + void drawFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { u8g_DrawFrame(&u8g, x, y, w, h); } + void drawRFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) { u8g_DrawRFrame(&u8g, x, y, w, h,r); } + void drawBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { u8g_DrawBox(&u8g, x, y, w, h); } + void drawRBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) { u8g_DrawRBox(&u8g, x, y, w, h,r); } + + void drawCircle(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawCircle(&u8g, x0, y0, rad, opt); } + void drawDisc(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawDisc(&u8g, x0, y0, rad, opt); } + + /* bitmap handling */ + void drawBitmap(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap) + { u8g_DrawBitmap(&u8g, x, y, cnt, h, bitmap); } + void drawBitmapP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) + { u8g_DrawBitmapP(&u8g, x, y, cnt, h, bitmap); } + + void drawXBM(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap) + { u8g_DrawXBM(&u8g, x, y, w, h, bitmap); } + void drawXBMP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) + { u8g_DrawXBMP(&u8g, x, y, w, h, bitmap); } + + + /* font handling */ + void setFont(const u8g_fntpgm_uint8_t *font) {u8g_SetFont(&u8g, font); } + int8_t getFontAscent(void) { return u8g_GetFontAscent(&u8g); } + int8_t getFontDescent(void) { return u8g_GetFontDescent(&u8g); } + int8_t getFontLineSpacing(void) { return u8g_GetFontLineSpacing(&u8g); } + + u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr(&u8g, x, y, s); } + u8g_uint_t drawStr90(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr90(&u8g, x, y, s); } + u8g_uint_t drawStr180(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr180(&u8g, x, y, s); } + u8g_uint_t drawStr270(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr270(&u8g, x, y, s); } + u8g_uint_t drawStrP(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStrP(&u8g, x, y, s); } + u8g_uint_t drawStr90P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr90P(&u8g, x, y, s); } + u8g_uint_t drawStr180P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr180P(&u8g, x, y, s); } + u8g_uint_t drawStr270P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr270P(&u8g, x, y, s); } + + void setFontPosBaseline(void) { u8g_SetFontPosBaseline(&u8g); } + void setFontPosBottom(void) { u8g_SetFontPosBottom(&u8g); } + void setFontPosCenter(void) { u8g_SetFontPosCenter(&u8g); } + void setFontPosTop(void) { u8g_SetFontPosTop(&u8g); } + + void setFontRefHeightText(void) { u8g_SetFontRefHeightText(&u8g); } + void setFontRefHeightExtendedText(void) { u8g_SetFontRefHeightExtendedText(&u8g); } + void setFontRefHeightAll(void) { u8g_SetFontRefHeightAll(&u8g); } + void setFontLineSpacingFactor(uint8_t factor) { u8g_SetFontLineSpacingFactor(&u8g, factor); } + + + u8g_uint_t getStrPixelWidth(const char *s) { return u8g_GetStrPixelWidth(&u8g, s); } + u8g_uint_t getStrPixelWidthP(u8g_pgm_uint8_t *s) { return u8g_GetStrPixelWidthP(&u8g, s); } + u8g_uint_t getStrWidth(const char *s) { return u8g_GetStrWidth(&u8g, s); } + u8g_uint_t getStrWidthP(u8g_pgm_uint8_t *s) { return u8g_GetStrWidthP(&u8g, s); } + + void setHardwareBackup(u8g_state_cb backup_cb) { u8g_SetHardwareBackup(&u8g, backup_cb); } + +#if defined(ARDUINO) && ARDUINO >= 100 + // support for the F() macro + + u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStrP(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr90(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr90P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr180(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr180P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr270(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr270P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + + u8g_uint_t getStrPixelWidth(const __FlashStringHelper *s) { return u8g_GetStrPixelWidthP(&u8g, (u8g_pgm_uint8_t *)s); } + u8g_uint_t getStrWidth(const __FlashStringHelper *s) { return u8g_GetStrWidthP(&u8g, (u8g_pgm_uint8_t *)s); } +#endif + + /* cursor handling */ + void setCursorFont(const u8g_pgm_uint8_t *cursor_font) { u8g_SetCursorFont(&u8g, cursor_font); } + void setCursorStyle(uint8_t encoding) { u8g_SetCursorStyle(&u8g, encoding); } + void setCursorPos(u8g_uint_t cursor_x, u8g_uint_t cursor_y) { u8g_SetCursorPos(&u8g, cursor_x, cursor_y); } + void setCursorColor(uint8_t fg, uint8_t bg) { u8g_SetCursorColor(&u8g, fg, bg); } + void enableCursor(void) { u8g_EnableCursor(&u8g); } + void disableCursor(void) { u8g_DisableCursor(&u8g); } + void drawCursor(void) { u8g_DrawCursor(&u8g); } + + /* virtual screen */ + + void setVirtualScreenDimension(u8g_uint_t width, u8g_uint_t height) { u8g_SetVirtualScreenDimension(&u8g, width, height); } + uint8_t addToVirtualScreen(u8g_uint_t x, u8g_uint_t y, U8GLIB &child_u8g) { return u8g_AddToVirtualScreen(&u8g, x, y, &child_u8g.u8g); } + +}; + + +class U8GLIB_DOGS102 : public U8GLIB +{ + public: + U8GLIB_DOGS102(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGS102(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_MINI12864 : public U8GLIB +{ + public: + U8GLIB_MINI12864(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_MINI12864(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGM132 : public U8GLIB +{ + public: + U8GLIB_DOGM132(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm132_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGM132(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm132_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD_C12832 : public U8GLIB +{ + public: + U8GLIB_NHD_C12832(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD_C12832(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD_C12832(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_DOGM128 : public U8GLIB +{ + public: + U8GLIB_DOGM128(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGM128(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_LM6059 : public U8GLIB +{ + public: + U8GLIB_LM6059(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6059(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_LM6063 : public U8GLIB +{ + public: + U8GLIB_LM6063(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6063(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_64128N : public U8GLIB +{ + public: + U8GLIB_64128N(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_64128N(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD_C12864 : public U8GLIB +{ + public: + U8GLIB_NHD_C12864(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD_C12864(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_ST7920_128X64 : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_128X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } + // U8GLIB_ST7920_128X64(uint8_t cs) + // : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, cs, U8G_PIN_NONE, U8G_PIN_NONE) + // { } +}; + +class U8GLIB_ST7920_128X64_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_128X64_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + + +class U8GLIB_ST7920_192X32 : public U8GLIB // OBSOLETE, use U8GLIB_ST7920_192X32_1X instead +{ + public: + U8GLIB_ST7920_192X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_192X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_192X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_ST7920_192X32_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_192X32_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_192X32_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_192X32_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + +class U8GLIB_ST7920_202X32 : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_202X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_202X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_ST7920_202X32_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_202X32_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + +class U8GLIB_LC7981_160X80 : public U8GLIB +{ + public: + U8GLIB_LC7981_160X80(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_160x80_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_LC7981_240X64 : public U8GLIB +{ + public: + U8GLIB_LC7981_240X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_240x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_LC7981_240X128 : public U8GLIB +{ + public: + U8GLIB_LC7981_240X128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_240x128_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +// 16 bit mode required: Remove comment from "#define U8G_16BIT 1" in utility/u8g.h +class U8GLIB_LC7981_320X64 : public U8GLIB +{ + public: + U8GLIB_LC7981_320X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_320x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + + + +class U8GLIB_DOGXL160_BW : public U8GLIB +{ + public: + U8GLIB_DOGXL160_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_GR : public U8GLIB +{ + public: + U8GLIB_DOGXL160_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_2X_BW : public U8GLIB +{ + public: + U8GLIB_DOGXL160_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_2X_GR : public U8GLIB +{ + public: + U8GLIB_DOGXL160_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_gr_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_NHD27OLED_BW : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_BW(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_NHD27OLED_2X_BW : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_BW(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_NHD31OLED_BW : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_2X_BW : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_GR : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_2X_GR : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_SSD1306_128X64 : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_i2c, options) + { } + +}; + +class U8GLIB_SSD1309_128X64 : public U8GLIB +{ + public: + U8GLIB_SSD1309_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1309_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1309_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_i2c, options) + { } + +}; + +class U8GLIB_SSD1306_128X32 : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_i2c, options) + { } + +}; + + +class U8GLIB_NHD27OLED_GR : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD27OLED_2X_GR : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1327_96X96_GR : public U8GLIB +{ + public: + U8GLIB_SSD1327_96X96_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_GR(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_i2c, options) + { } +}; + +class U8GLIB_SSD1327_96X96_2X_GR : public U8GLIB +{ + public: + U8GLIB_SSD1327_96X96_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_2X_GR(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_i2c, options) + { } +}; + +class U8GLIB_PCF8812 : public U8GLIB +{ + public: + U8GLIB_PCF8812(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcf8812_96x65_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_PCD8544 : public U8GLIB +{ + public: + U8GLIB_PCD8544(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcd8544_84x48_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_TLS8204_84X48 : public U8GLIB +{ + public: + U8GLIB_TLS8204_84X48(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_tls8204_84x48_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_KS0108_128 : public U8GLIB +{ + public: + U8GLIB_KS0108_128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ks0108_128x64_fast, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_SBN1661_122X32 : public U8GLIB +{ + public: + U8GLIB_SBN1661_122X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sbn1661_122x32, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_T6963_240X128 : public U8GLIB +{ + public: + U8GLIB_T6963_240X128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_240x128_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + +class U8GLIB_T6963_240X64 : public U8GLIB +{ + public: + U8GLIB_T6963_240X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_240x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + +class U8GLIB_T6963_128X64 : public U8GLIB +{ + public: + U8GLIB_T6963_128X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + + +class U8GLIB_ST7687_C144MVGD: public U8GLIB +{ + public: + U8GLIB_ST7687_C144MVGD(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7687_c144mvgd_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7687_C144MVGD(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs, uint8_t a0, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ks0108_128x64_fast, d0, d1, d2, d3, d4, d5, d6, d7, en, cs, U8G_PIN_NONE, a0, rw, reset) + { } +}; + +class U8GLIB_ILI9325D_320x240 : public U8GLIB +{ + public: + /* + U8GLIB_ILI9325D_320x240(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ili9325d_320x240_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } + */ + U8GLIB_ILI9325D_320x240( uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + { init8BitFixedPort(&u8g_dev_ili9325d_320x240_8bit, en, cs1, di, rw, reset); } +}; + +class U8GLIB_FLIPDISC_2X7 : public U8GLIB +{ + public: + U8GLIB_FLIPDISC_2X7(void) : U8GLIB(&u8g_dev_flipdisc_2x7) + { } +}; + +class U8GLIB_VS : public U8GLIB +{ + public: + U8GLIB_VS(void) : U8GLIB(&u8g_dev_vs) + { } +}; + + +#endif /* _CPP_U8GLIB */ diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Bitmap/Bitmap.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Bitmap/Bitmap.pde new file mode 100644 index 000000000..53fbe1b21 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Bitmap/Bitmap.pde @@ -0,0 +1,130 @@ +/* + + Bitmap.pde + + Show simple bitmap + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +const uint8_t rook_bitmap[] PROGMEM = { + 0x00, // 00000000 + 0x55, // 01010101 + 0x7f, // 01111111 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x7f // 01111111 +}; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.drawBitmapP( 0, 0, 1, 8, rook_bitmap); +} + +void setup(void) { +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(1000); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Chess/Chess.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Chess/Chess.pde new file mode 100644 index 000000000..3cef35398 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Chess/Chess.pde @@ -0,0 +1,180 @@ +/* + + Chess.pde + + Little Rook Chess + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +// DOGS102 shield configuration values +uint8_t uiKeyPrev = 2; +uint8_t uiKeyNext = 4; +uint8_t uiKeySelect = 5; +uint8_t uiKeyBack = 3; + +// DOGM128-Shield configuration values +// DOGXL60-Shield configuration values +//uint8_t uiKeyPrev = 7; +//uint8_t uiKeyNext = 3; +//uint8_t uiKeySelect = 2; +//uint8_t uiKeyBack = 8; + +uint8_t uiKeyCodeFirst = CHESS_KEY_NONE; +uint8_t uiKeyCodeSecond = CHESS_KEY_NONE; +uint8_t uiKeyCode = CHESS_KEY_NONE; + + +void uiSetup(void) { + // configure input keys + + pinMode(uiKeyPrev, INPUT); // set pin to input + digitalWrite(uiKeyPrev, HIGH); // turn on pullup resistors + pinMode(uiKeyNext, INPUT); // set pin to input + digitalWrite(uiKeyNext, HIGH); // turn on pullup resistors + pinMode(uiKeySelect, INPUT); // set pin to input + digitalWrite(uiKeySelect, HIGH); // turn on pullup resistors + pinMode(uiKeyBack, INPUT); // set pin to input + digitalWrite(uiKeyBack, HIGH); // turn on pullup resistors +} + +void uiStep(void) +{ + uiKeyCodeSecond = uiKeyCodeFirst; + if ( digitalRead(uiKeyPrev) == LOW ) + uiKeyCodeFirst = CHESS_KEY_PREV; + else if ( digitalRead(uiKeyNext) == LOW ) + uiKeyCodeFirst = CHESS_KEY_NEXT; + else if ( digitalRead(uiKeySelect) == LOW ) + uiKeyCodeFirst = CHESS_KEY_SELECT; + else if ( digitalRead(uiKeyBack) == LOW ) + uiKeyCodeFirst = CHESS_KEY_BACK; + else + uiKeyCodeFirst = CHESS_KEY_NONE; + + if ( uiKeyCodeSecond == uiKeyCodeFirst ) + uiKeyCode = uiKeyCodeFirst; + else + uiKeyCode = CHESS_KEY_NONE; +} + + +void setup() { + // rotate screen, if required + u8g.setRot180(); + + uiSetup(); + chess_Init(u8g.getU8g(), 0); +} + +void loop() { + uint8_t keyCode = CHESS_KEY_NONE; + + u8g.firstPage(); + do { + chess_Draw(); + uiStep(); + if ( uiKeyCode != CHESS_KEY_NONE ) + keyCode = uiKeyCode; + } while( u8g.nextPage() ); + + u8g_Delay(10); + chess_Step(keyCode); + uiStep(); + keyCode = uiKeyCode; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Console/Console.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Console/Console.pde new file mode 100644 index 000000000..fcf4b74c5 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Console/Console.pde @@ -0,0 +1,230 @@ +/* + + Console.pde + + Read from serial monitor, output to display + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +// setup input buffer +#define LINE_MAX 30 +uint8_t line_buf[LINE_MAX] = "U8GLIB Console"; +uint8_t line_pos = 0; + +// setup a text screen to support scrolling +#define ROW_MAX 12 + + +uint8_t screen[ROW_MAX][LINE_MAX]; +uint8_t rows, cols; + +// line height, which matches the selected font (5x7) +#define LINE_PIXEL_HEIGHT 7 + +// clear entire screen, called during setup +void clear_screen(void) { + uint8_t i, j; + for( i = 0; i < ROW_MAX; i++ ) + for( j = 0; j < LINE_MAX; j++ ) + screen[i][j] = 0; +} + +// append a line to the screen, scroll up +void add_line_to_screen(void) { + uint8_t i, j; + for( j = 0; j < LINE_MAX; j++ ) + for( i = 0; i < rows-1; i++ ) + screen[i][j] = screen[i+1][j]; + + for( j = 0; j < LINE_MAX; j++ ) + screen[rows-1][j] = line_buf[j]; +} + +// U8GLIB draw procedure: output the screen +void draw(void) { + uint8_t i, y; + // graphic commands to redraw the complete screen are placed here + y = 0; // reference is the top left -1 position of the string + y--; // correct the -1 position of the drawStr + for( i = 0; i < rows; i++ ) + { + u8g.drawStr( 0, y, (char *)(screen[i])); + y += u8g.getFontLineSpacing(); + } +} + +void exec_line(void) { + // echo line to the serial monitor + Serial.println((const char *)line_buf); + + // add the line to the screen + add_line_to_screen(); + + // U8GLIB picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); +} + +// clear current input buffer +void reset_line(void) { + line_pos = 0; + line_buf[line_pos] = '\0'; +} + +// add a single character to the input buffer +void char_to_line(uint8_t c) { + line_buf[line_pos] = c; + line_pos++; + line_buf[line_pos] = '\0'; +} + +// check serial in and handle the character +void read_line(void) { + if ( Serial.available() ) + { + uint8_t c; + c = Serial.read(); + if ( line_pos >= cols-1 ) { + exec_line(); + reset_line(); + char_to_line(c); + } + else if ( c == '\n' ) { + // ignore '\n' + } + else if ( c == '\r' ) { + exec_line(); + reset_line(); + } + else { + char_to_line(c); + } + } +} + +// Arduino master setup +void setup(void) { + // set font for the console window + u8g.setFont(u8g_font_5x7); + //u8g.setFont(u8g_font_9x15); + + // set upper left position for the string draw procedure + u8g.setFontPosTop(); + + // calculate the number of rows for the display + rows = u8g.getHeight() / u8g.getFontLineSpacing(); + if ( rows > ROW_MAX ) + rows = ROW_MAX; + + // estimate the number of columns for the display + cols = u8g.getWidth() / u8g.getStrWidth("m"); + if ( cols > LINE_MAX-1 ) + cols = LINE_MAX-1; + + clear_screen(); // clear screen + delay(1000); // do some delay + Serial.begin(9600); // init serial + exec_line(); // place the input buffer into the screen + reset_line(); // clear input buffer +} + +// Arduino main loop +void loop(void) { + read_line(); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/F/F.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/F/F.pde new file mode 100644 index 000000000..4cb3b20b7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/F/F.pde @@ -0,0 +1,139 @@ +/* + + F.pde + + Example code for the F() macro. + + >>> This example requires Arduino 1.0 and above. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + + // assign default font + u8g.setFont(u8g_font_unifont); + + // pointer to strings in flash memory can be stored in a special type + const __FlashStringHelper *flash_ptr; + + // the result of the F() macro can be assigned to this pointer + flash_ptr = F("Hello World!"); + + // this pointer can be used as argument to the draw procedures + u8g.drawStr( 0+1, 20+1, flash_ptr); + u8g.drawStr( 0, 20, flash_ptr); + + // of course, the F() macro can be used directly + u8g.drawStr( 0, 40, F("PROGMEM")); + +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde new file mode 100644 index 000000000..4e9135209 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde @@ -0,0 +1,223 @@ +/* + + GraphicsTest.pde + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void u8g_prepare(void) { + u8g.setFont(u8g_font_6x10); + u8g.setFontRefHeightExtendedText(); + u8g.setDefaultForegroundColor(); + u8g.setFontPosTop(); +} + +void u8g_box_frame(uint8_t a) { + u8g.drawStr( 0, 0, "drawBox"); + u8g.drawBox(5,10,20,10); + u8g.drawBox(10+a,15,30,7); + u8g.drawStr( 0, 30, "drawFrame"); + u8g.drawFrame(5,10+30,20,10); + u8g.drawFrame(10+a,15+30,30,7); +} + +void u8g_disc_circle(uint8_t a) { + u8g.drawStr( 0, 0, "drawDisc"); + u8g.drawDisc(10,18,9); + u8g.drawDisc(24+a,16,7); + u8g.drawStr( 0, 30, "drawCircle"); + u8g.drawCircle(10,18+30,9); + u8g.drawCircle(24+a,16+30,7); +} + +void u8g_r_frame(uint8_t a) { + u8g.drawStr( 0, 0, "drawRFrame/Box"); + u8g.drawRFrame(5, 10,40,30, a+1); + u8g.drawRBox(50, 10,25,40, a+1); +} + +void u8g_string(uint8_t a) { + u8g.drawStr(30+a,31, " 0"); + u8g.drawStr90(30,31+a, " 90"); + u8g.drawStr180(30-a,31, " 180"); + u8g.drawStr270(30,31-a, " 270"); +} + +void u8g_line(uint8_t a) { + u8g.drawStr( 0, 0, "drawLine"); + u8g.drawLine(7+a, 10, 40, 55); + u8g.drawLine(7+a*2, 10, 60, 55); + u8g.drawLine(7+a*3, 10, 80, 55); + u8g.drawLine(7+a*4, 10, 100, 55); +} + +void u8g_ascii_1() { + char s[2] = " "; + uint8_t x, y; + u8g.drawStr( 0, 0, "ASCII page 1"); + for( y = 0; y < 6; y++ ) { + for( x = 0; x < 16; x++ ) { + s[0] = y*16 + x + 32; + u8g.drawStr(x*7, y*10+10, s); + } + } +} + +void u8g_ascii_2() { + char s[2] = " "; + uint8_t x, y; + u8g.drawStr( 0, 0, "ASCII page 2"); + for( y = 0; y < 6; y++ ) { + for( x = 0; x < 16; x++ ) { + s[0] = y*16 + x + 160; + u8g.drawStr(x*7, y*10+10, s); + } + } +} + + +uint8_t draw_state = 0; + +void draw(void) { + u8g_prepare(); + switch(draw_state >> 3) { + case 0: u8g_box_frame(draw_state&7); break; + case 1: u8g_disc_circle(draw_state&7); break; + case 2: u8g_r_frame(draw_state&7); break; + case 3: u8g_string(draw_state&7); break; + case 4: u8g_line(draw_state&7); break; + case 5: u8g_ascii_1(); break; + case 6: u8g_ascii_2(); break; + } +} + +void setup(void) { + + // flip screen, if required + //u8g.setRot180(); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on + + //u8g.setContrast(0x30); + + pinMode(13, OUTPUT); + digitalWrite(13, HIGH); +} + +void loop(void) { + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // increase the state + draw_state++; + if ( draw_state >= 7*8 ) + draw_state = 0; + + // rebuild the picture after some delay + delay(150); + +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/HelloWorld/HelloWorld.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/HelloWorld/HelloWorld.pde new file mode 100644 index 000000000..5a00939a3 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/HelloWorld/HelloWorld.pde @@ -0,0 +1,136 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + //u8g.setFont(u8g_font_osb21); + u8g.drawStr( 0, 22, "Hello World!"); +} + +void setup(void) { + + // flip screen, if required + // u8g.setRot180(); + + // set SPI backup if required + //u8g.setHardwareBackup(u8g_backup_avr_spi); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Menu/Menu.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Menu/Menu.pde new file mode 100644 index 000000000..fbb0af034 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Menu/Menu.pde @@ -0,0 +1,234 @@ +/* + + Menu.pde + + Simple Menu Selection + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +#define KEY_NONE 0 +#define KEY_PREV 1 +#define KEY_NEXT 2 +#define KEY_SELECT 3 +#define KEY_BACK 4 + +// DOGS102 shield configuration values +//uint8_t uiKeyPrev = 2; +//uint8_t uiKeyNext = 4; +//uint8_t uiKeySelect = 5; +//uint8_t uiKeyBack = 3; + +// DOGM128-Shield configuration values +// DOGXL60-Shield configuration values +uint8_t uiKeyPrev = 7; +uint8_t uiKeyNext = 3; +uint8_t uiKeySelect = 2; +uint8_t uiKeyBack = 8; + +uint8_t uiKeyCodeFirst = KEY_NONE; +uint8_t uiKeyCodeSecond = KEY_NONE; +uint8_t uiKeyCode = KEY_NONE; + + +void uiSetup(void) { + // configure input keys + + pinMode(uiKeyPrev, INPUT); // set pin to input + digitalWrite(uiKeyPrev, HIGH); // turn on pullup resistors + pinMode(uiKeyNext, INPUT); // set pin to input + digitalWrite(uiKeyNext, HIGH); // turn on pullup resistors + pinMode(uiKeySelect, INPUT); // set pin to input + digitalWrite(uiKeySelect, HIGH); // turn on pullup resistors + pinMode(uiKeyBack, INPUT); // set pin to input + digitalWrite(uiKeyBack, HIGH); // turn on pullup resistors +} + +void uiStep(void) { + uiKeyCodeSecond = uiKeyCodeFirst; + if ( digitalRead(uiKeyPrev) == LOW ) + uiKeyCodeFirst = KEY_PREV; + else if ( digitalRead(uiKeyNext) == LOW ) + uiKeyCodeFirst = KEY_NEXT; + else if ( digitalRead(uiKeySelect) == LOW ) + uiKeyCodeFirst = KEY_SELECT; + else if ( digitalRead(uiKeyBack) == LOW ) + uiKeyCodeFirst = KEY_BACK; + else + uiKeyCodeFirst = KEY_NONE; + + if ( uiKeyCodeSecond == uiKeyCodeFirst ) + uiKeyCode = uiKeyCodeFirst; + else + uiKeyCode = KEY_NONE; +} + + +#define MENU_ITEMS 4 +char *menu_strings[MENU_ITEMS] = { "First Line", "Second Item", "3333333", "abcdefg" }; + +uint8_t menu_current = 0; +uint8_t menu_redraw_required = 0; +uint8_t last_key_code = KEY_NONE; + + +void drawMenu(void) { + uint8_t i, h; + u8g_uint_t w, d; + + u8g.setFont(u8g_font_6x13); + u8g.setFontRefHeightText(); + u8g.setFontPosTop(); + + h = u8g.getFontAscent()-u8g.getFontDescent(); + w = u8g.getWidth(); + for( i = 0; i < MENU_ITEMS; i++ ) { + d = (w-u8g.getStrWidth(menu_strings[i]))/2; + u8g.setDefaultForegroundColor(); + if ( i == menu_current ) { + u8g.drawBox(0, i*h+1, w, h); + u8g.setDefaultBackgroundColor(); + } + u8g.drawStr(d, i*h, menu_strings[i]); + } +} + +void updateMenu(void) { + if ( uiKeyCode != KEY_NONE && last_key_code == uiKeyCode ) { + return; + } + last_key_code = uiKeyCode; + + switch ( uiKeyCode ) { + case KEY_NEXT: + menu_current++; + if ( menu_current >= MENU_ITEMS ) + menu_current = 0; + menu_redraw_required = 1; + break; + case KEY_PREV: + if ( menu_current == 0 ) + menu_current = MENU_ITEMS; + menu_current--; + menu_redraw_required = 1; + break; + } +} + + +void setup() { + // rotate screen, if required + // u8g.setRot180(); + + uiSetup(); // setup key detection and debounce algorithm + menu_redraw_required = 1; // force initial redraw +} + +void loop() { + + uiStep(); // check for key press + + if ( menu_redraw_required != 0 ) { + u8g.firstPage(); + do { + drawMenu(); + } while( u8g.nextPage() ); + menu_redraw_required = 0; + } + + updateMenu(); // update menu bar + +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/PrintTest/PrintTest.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/PrintTest/PrintTest.pde new file mode 100644 index 000000000..7535c22f1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/PrintTest/PrintTest.pde @@ -0,0 +1,124 @@ +/* + + PrintTest.pde + + How to use the base class "Print" + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.setPrintPos(0, 20); + // call procedure from base class, http://arduino.cc/en/Serial/Print + u8g.print("Hello World!"); +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Rotation/Rotation.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Rotation/Rotation.pde new file mode 100644 index 000000000..424b7bfb6 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Rotation/Rotation.pde @@ -0,0 +1,152 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +uint8_t offset = 0; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.drawStr( 0+0, 20+0, "Hello!"); + u8g.drawStr( 0+2, 20+16, "Hello!"); + + u8g.drawBox(0, 0, 3, 3); + u8g.drawBox(u8g.getWidth()-6, 0, 6, 6); + u8g.drawBox(u8g.getWidth()-9, u8g.getHeight()-9, 9, 9); + u8g.drawBox(0, u8g.getHeight()-12, 12, 12); +} + +void setup(void) { +} + + +void rotate(void) { + static uint8_t dir = 0; + static unsigned long next_rotation = 0; + + if ( next_rotation < millis() ) + { + switch(dir) { + case 0: u8g.undoRotation(); break; + case 1: u8g.setRot90(); break; + case 2: u8g.setRot180(); break; + case 3: u8g.setRot270(); offset = ( offset + 1 ) & 0x0f; break; + } + + dir++; + dir &= 3; + next_rotation = millis(); + next_rotation += 1000; + } +} + +void loop(void) { + // screen rotation + rotate(); + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(100); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Scale/Scale.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Scale/Scale.pde new file mode 100644 index 000000000..ce87c76fa --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/Scale/Scale.pde @@ -0,0 +1,141 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.setFontPosTop(); + u8g.drawStr(0, 1, "Hello"); + u8g.drawHLine(0, 1+14, 40); + u8g.setScale2x2(); // Scale up all draw procedures + u8g.drawStr(0, 12, "Hello"); // actual display position is (0,24) + u8g.drawHLine(0, 12+14, 40); // All other procedures are also affected + u8g.undoScale(); // IMPORTANT: Switch back to normal mode +} + +void setup(void) { + + // flip screen, if required + u8g.setRot180(); + + // set SPI backup if required + //u8g.setHardwareBackup(u8g_backup_avr_spi); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/TextRotX/TextRotX.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/TextRotX/TextRotX.pde new file mode 100644 index 000000000..718fd821c --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/TextRotX/TextRotX.pde @@ -0,0 +1,154 @@ +/* + + TextRotX.pde + + Text rotation example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +// graphic commands to redraw the complete screen should be placed here +void draw(void) { + u8g_uint_t mx, my; + + mx = u8g.getWidth(); + mx >>= 1; + + my = u8g.getHeight(); + my >>= 1; + + u8g.drawStr( mx, my, "Ag"); + u8g.drawStr90( mx, my, "Ag"); + u8g.drawStr180( mx, my, "Ag"); + u8g.drawStr270( mx, my, "Ag"); +} + +void setup(void) { + u8g.setFont(u8g_font_9x18); +} + +void change_font_pos(void) { + static uint8_t dir = 0; + static unsigned long next = 0; + + if ( next < millis() ) + { + switch(dir) { + case 0: u8g.setFontPosBottom(); break; + case 1: u8g.setFontPosBaseline(); break; + case 2: u8g.setFontPosCenter(); break; + case 3: u8g.setFontPosTop(); break; + } + + dir++; + dir &= 3; + next = millis(); + next += 1000; + } +} + +void loop(void) { + // change the font position + change_font_pos(); + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(100); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/U8gLogo/U8gLogo.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/U8gLogo/U8gLogo.pde new file mode 100644 index 000000000..78c866f0f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/U8gLogo/U8gLogo.pde @@ -0,0 +1,179 @@ +/* + + U8gLogo.pde + + Put the U8GLIB logo on the display. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void drawColorBox(void) +{ + u8g_uint_t w,h; + u8g_uint_t r, g, b; + + w = u8g.getWidth()/32; + h = u8g.getHeight()/8; + for( b = 0; b < 4; b++ ) + for( g = 0; g < 8; g++ ) + for( r = 0; r < 8; r++ ) + { + u8g.setColorIndex((r<<5) | (g<<2) | b ); + u8g.drawBox(g*w + b*w*8, r*h, w, h); + } +} + +void drawLogo(uint8_t d) +{ + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(0+d, 30+d, "U"); + u8g.setFont(u8g_font_gdr30n); + u8g.drawStr90(23+d,10+d,"8"); + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(53+d,30+d,"g"); + + u8g.drawHLine(2+d, 35+d, 47); + u8g.drawVLine(45+d, 32+d, 12); +} + +void drawURL(void) +{ + u8g.setFont(u8g_font_4x6); + if ( u8g.getHeight() < 59 ) + { + u8g.drawStr(53,9,"code.google.com"); + u8g.drawStr(77,18,"/p/u8glib"); + } + else + { + u8g.drawStr(1,54,"code.google.com/p/u8glib"); + } +} + + +void draw(void) { + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { + drawColorBox(); + } + u8g.setColorIndex(1); + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g.getMode()) > 1 ) { + drawLogo(2); + u8g.setColorIndex(2); + drawLogo(1); + u8g.setColorIndex(3); + } + drawLogo(0); + drawURL(); + +} + +void setup(void) { + // flip screen, if required + //u8g.setRot180(); +} + +void loop(void) { + + // picture loop + u8g.firstPage(); + do { + draw(); + u8g.setColorIndex(1); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(200); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/XBM/XBM.pde b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/XBM/XBM.pde new file mode 100644 index 000000000..44dd720d9 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/examples/XBM/XBM.pde @@ -0,0 +1,136 @@ +/* + + XBM.pde + + drawXBM example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +#define u8g_logo_width 38 +#define u8g_logo_height 24 +//static unsigned char u8g_logo_bits[] = { +static unsigned char u8g_logo_bits[] U8G_PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xe0, + 0xff, 0xff, 0x3f, 0xe3, 0xe1, 0xff, 0xff, 0x3f, 0xf3, 0xf1, 0xff, 0xff, + 0x3f, 0xf3, 0xf1, 0xfe, 0xbf, 0x37, 0xf3, 0x11, 0x1c, 0x1f, 0x30, 0xf3, + 0x01, 0x08, 0x8c, 0x20, 0xf3, 0x01, 0x00, 0xc0, 0x39, 0xf3, 0x81, 0xc7, + 0xc1, 0x39, 0xf3, 0xc1, 0xc7, 0xc9, 0x38, 0xf3, 0xc1, 0xc3, 0x19, 0x3c, + 0xe3, 0x89, 0x01, 0x98, 0x3f, 0xc7, 0x18, 0x00, 0x08, 0x3e, 0x0f, 0x3c, + 0x70, 0x1c, 0x30, 0x3f, 0xff, 0xfc, 0x87, 0x31, 0xff, 0xff, 0xbf, 0xc7, + 0x23, 0x01, 0x00, 0x00, 0xc6, 0x23, 0x03, 0x00, 0x00, 0x0e, 0x30, 0xff, + 0xff, 0x3f, 0x1f, 0x3c, 0xff, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0xff, 0x3f, + 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f }; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, u8g_logo_bits); +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/license.txt b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/license.txt new file mode 100644 index 000000000..c9eea75c4 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/license.txt @@ -0,0 +1,80 @@ + +The U8glib code (http://code.google.com/p/u8glib/) is licensed under the terms of +the new-bsd license (two-clause bsd license). +See also: http://www.opensource.org/licenses/bsd-license.php + +The repository and optionally the releases contain icons, which are +derived from the WPZOOM Developer Icon Set: +http://www.wpzoom.com/wpzoom/new-freebie-wpzoom-developer-icon-set-154-free-icons/ +WPZOOM Developer Icon Set by WPZOOM is licensed under a Creative Commons +Attribution-ShareAlike 3.0 Unported License. + +Fonts are licensed under different conditions. +See http://code.google.com/p/u8glib/wiki/fontgroup for +detailed information on the licensing conditions for each font. + +============ X11 Fonts COUR, HELV, NCEN, TIM, SYMB ============ + +For fonts derived from the following files, the license below applies. +COURB08.BDF COURB10.BDF COURB12.BDF COURB14.BDF COURB18.BDF +COURB24.BDF COURR08.BDF COURR10.BDF COURR12.BDF COURR14.BDF +COURR18.BDF COURR24.BDF HELVB08.BDF HELVB10.BDF HELVB12.BDF HELVB14.BDF +HELVB18.BDF HELVB24.BDF HELVR08.BDF HELVR10.BDF HELVR12.BDF HELVR14.BDF +HELVR18.BDF HELVR24.BDF NCENB08.BDF NCENB10.BDF NCENB12.BDF +NCENB14.BDF NCENB18.BDF NCENB24.BDF NCENR08.BDF NCENR10.BDF +NCENR12.BDF NCENR14.BDF NCENR18.BDF NCENR24.BDF SYMB08.BDF SYMB10.BDF +SYMB12.BDF SYMB14.BDF SYMB18.BDF SYMB24.BDF TIMB08.BDF TIMB10.BDF +TIMB12.BDF TIMB14.BDF TIMB18.BDF TIMB24.BDF TIMR08.BDF TIMR10.BDF +TIMR12.BDF TIMR14.BDF TIMR18.BDF TIMR24.BDF + +Copyright 1984-1989, 1994 Adobe Systems Incorporated. +Copyright 1988, 1994 Digital Equipment Corporation. + +Adobe is a trademark of Adobe Systems Incorporated which may be +registered in certain jurisdictions. +Permission to use these trademarks is hereby granted only in +association with the images described in this file. + +Permission to use, copy, modify, distribute and sell this software +and its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notices appear in all +copies and that both those copyright notices and this permission +notice appear in supporting documentation, and that the names of +Adobe Systems and Digital Equipment Corporation not be used in +advertising or publicity pertaining to distribution of the software +without specific, written prior permission. Adobe Systems and +Digital Equipment Corporation make no representations about the +suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + + +============ BSD License for U8glib Code ============ + +Universal 8bit Graphics Library (http://code.google.com/p/u8glib/) + +Copyright (c) 2011, olikraus@gmail.com +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/chessengine.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/chessengine.c new file mode 100644 index 000000000..4a8758c38 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/chessengine.c @@ -0,0 +1,2392 @@ +/* + chessengine.c + + "Little Rook Chess" (lrc) + + Port to u8g library + + chess for embedded 8-Bit controllers + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Note: + UNIX_MAIN --> unix console executable + + Current Rule Limitation + - no minor promotion, only "Queening" of the pawn + - threefold repetition is not detected (same board situation appears three times) + Note: Could be implemented, but requires tracking of the complete game + - Fifty-move rule is not checked (no pawn move, no capture within last 50 moves) + + Words + Ply a half move + + General Links + http://chessprogramming.wikispaces.com/ + + Arduino specific + http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1260055596 + + Prefixes + chess_ Generic Chess Application Interface + ce_ Chess engine, used internally, these function should not be called directly + cu_ Chess utility function + stack_ Internal function for stack handling + + Issues + 10.01.2011 + - castling to the right does not move the rook + --> done + - castling to the left: King can only move two squares + --> done + + 11.01.2011 + Next Steps: + - replace stack_NextCurrentPos with cu_NextPos, cleanup code according to the loop variable + --> done + - Castling: Need to check for fields under attack + --> done + + - Check for WIN / LOSE situation, perhaps call ce_Eval() once on the top-level board setup + just after the real move + - cleanup cu_Move + --> almost done + - add some heuristics to the eval procedure + - add right side menu + --> done + - clean up chess_ManualMove + --> done + - finish menu (consider is_game_end, undo move) + - end condition: if KING is under attack and if KING can not move to a field which is under attack... + then the game is lost. What will be returned by the Eval procedure? is it -INF? + --> finished + + - reduce the use of variable color, all should be reduced to board_orientation and ply&1 + + - chess_GetNextMarked shoud make use of cu_NextPos + --> done + - chess_ManualMove: again cleanup, solve draw issue (KING is not in check and no legal moves are available) + --> done + 22.01.2011 + - simplify eval_t ce_Eval(void) + - position eval does not work, still moves side pawn :-( + maybe because all pieces are considered + --> done + +*/ + +#include "u8g.h" + +//#ifndef __unix__ +//#else +//#include +//#define U8G_NOINLINE +//#endif + +/* +SAN identifies each piece by a single upper case letter. The standard English +values: pawn = "P", knight = "N", bishop = "B", rook = "R", queen = "Q", and +king = "K". +*/ + +/* numbers for the various pieces */ +#define PIECE_NONE 0 +#define PIECE_PAWN 1 +#define PIECE_KNIGHT 2 +#define PIECE_BISHOP 3 +#define PIECE_ROOK 4 +#define PIECE_QUEEN 5 +#define PIECE_KING 6 + +/* color definitions */ +#define COLOR_WHITE 0 +#define COLOR_BLACK 1 + +/* a mask, which includes COLOR and PIECE number */ +#define COLOR_PIECE_MASK 0x01f + +#define CP_MARK_MASK 0x20 + +#define ILLEGAL_POSITION 255 + +/* This is the build in upper limit of the search stack */ +/* This value defines the amount of memory allocated for the search stack */ +/* The search depth of this chess engine can never exceed this value */ +#define STACK_MAX_SIZE 5 + +/* chess half move stack: twice the number of undo's, a user can do */ +#define CHM_USER_SIZE 6 + +/* the CHM_LIST_SIZE must be larger than the maximum search depth */ +/* the overall size of ste half move stack */ +#define CHM_LIST_SIZE (STACK_MAX_SIZE+CHM_USER_SIZE+2) + +typedef int16_t eval_t; /* a variable type to store results from the evaluation */ +//#define EVAL_T_LOST -32768 +#define EVAL_T_MIN -32767 +#define EVAL_T_MAX 32767 +//#define EVAL_T_WIN 32767 + +/* for maintainance of our own stack: this is the definition of one element on the stack */ +struct _stack_element_struct +{ + /* the current source position which is investigated */ + uint8_t current_pos; + uint8_t current_cp; + uint8_t current_color; /* COLOR_WHITE or COLOR_BLACK: must be predefines */ + + /* the move which belongs to that value, both values are game positions */ + uint8_t best_from_pos; + uint8_t best_to_pos; + /* the best value, which has been dicovered so far */ + eval_t best_eval; +}; +typedef struct _stack_element_struct stack_element_t; +typedef struct _stack_element_struct *stack_element_p; + +/* chess half move history */ +struct _chm_struct +{ + uint8_t main_cp; /* the main piece, which is moved */ + uint8_t main_src; /* the source position of the main piece */ + uint8_t main_dest; /* the destination of the main piece */ + + uint8_t other_cp; /* another piece: the captured one, the ROOK in case of castling or PIECE_NONE */ + uint8_t other_src; /* the delete position of other_cp. Often identical to main_dest except for e.p. and castling */ + uint8_t other_dest; /* only used for castling: ROOK destination pos */ + + /* the position of the last pawn, which did a double move forward */ + /* this is required to check en passant conditions */ + /* this array can be indexed by the color of the current player */ + /* this is the condition BEFORE the move was done */ + uint8_t pawn_dbl_move[2]; + + /* flags for the movement of rook and king; required for castling */ + /* a 1 means: castling is (still) possible */ + /* a 0 means: castling not possible */ + /* bit 0 left side white */ + /* bit 1 right side white */ + /* bit 2 left side black */ + /* bit 3 right side black */ + /* this is the condition BEFORE the move was done */ + uint8_t castling_possible; +}; + +typedef struct _chm_struct chm_t; +typedef struct _chm_struct *chm_p; + +/* little rook chess, main structure */ +struct _lrc_struct +{ + /* half-move (ply) counter: Counts the number of half-moves so far. Starts with 0 */ + /* the lowest bit is used to derive the color of the current player */ + /* will be set to zero in chess_SetupBoard() */ + uint8_t ply_count; + + /* the half move stack position counter, counts the number of elements in chm_list */ + uint8_t chm_pos; + + /* each element contains a colored piece, empty fields have value 0 */ + /* the field with index 0 is black (lower left) */ + uint8_t board[64]; + /* the position of the last pawn, which did a double move forward */ + /* this is required to check en passant conditions */ + /* this array can be indexed by the color of the current player */ + uint8_t pawn_dbl_move[2]; + + /* flags for the movement of rook and king; required for castling */ + /* a 1 means: castling is (still) possible */ + /* a 0 means: castling not possible */ + /* bit 0 left side white */ + /* bit 1 right side white */ + /* bit 2 left side black */ + /* bit 3 right side black */ + uint8_t castling_possible; + + /* board orientation */ + /* 0: white is below COLOR_WHITE */ + /* 1: black is below COLOR_BLACK */ + /* bascially, this can be used as a color */ + uint8_t orientation; + + /* exchange colors of the pieces */ + /* 0: white has an empty body, use this for bright background color */ + /* 1: black has an empty body, use this for dark backround color */ + uint8_t strike_out_color; + + /* 0, when the game is ongoing */ + /* 1, when the game is stopped (lost or draw) */ + uint8_t is_game_end; + /* the color of the side which lost the game */ + /* this value is only valid, when is_game_end is not 0 */ + /* values 0 and 1 represent WHITE and BLACK, 2 means a draw */ + uint8_t lost_side_color; + + + + /* checks are executed in ce_LoopRecur */ + /* these checks will put some marks on the board */ + /* this will be used by the interface to find out */ + /* legal moves */ + uint8_t check_src_pos; + uint8_t check_mode; /* CHECK_MODE_NONE, CHECK_MODE_MOVEABLE, CHECK_MODE_TARGET_MOVE */ + + + /* count of the attacking pieces, indexed by color */ + uint8_t find_piece_cnt[2]; + + /* sum of the attacking pieces, indexed by color */ + uint8_t find_piece_weight[2]; + + /* points to the current element of the search stack */ + /* this stack is NEVER empty. The value 0 points to the first element of the stack */ + /* actually "curr_depth" represent half-moves (plies) */ + uint8_t curr_depth; + uint8_t max_depth; + stack_element_p curr_element; + + /* allocated memory for the search stack */ + stack_element_t stack_memory[STACK_MAX_SIZE]; + + /* the half move stack, used for move undo and depth search, size is stored in chm_pos */ + chm_t chm_list[CHM_LIST_SIZE]; +}; +typedef struct _lrc_struct lrc_t; + +#define CHECK_MODE_NONE 0 +#define CHECK_MODE_MOVEABLE 1 +#define CHECK_MODE_TARGET_MOVE 2 + + + +/*==============================================================*/ +/* global variables */ +/*==============================================================*/ + +u8g_t *lrc_u8g; + +lrc_t lrc_obj; + + +/*==============================================================*/ +/* forward declarations */ +/*==============================================================*/ + +/* + apply no inline to some of the functions: + avr-gcc very often inlines functions, however not inline saves a lot of program memory! + On the other hand there are some really short procedures which should be inlined (like cp_GetColor) + These procedures are marked static to prevent the generation of the expanded procedure, which + also saves space. +*/ + +uint8_t stack_Push(uint8_t color) U8G_NOINLINE; +void stack_Pop(void) U8G_NOINLINE; +void stack_InitCurrElement(void) U8G_NOINLINE; +void stack_Init(uint8_t max) U8G_NOINLINE; +void stack_SetMove(eval_t val, uint8_t to_pos) U8G_NOINLINE; +uint8_t cu_NextPos(uint8_t pos) U8G_NOINLINE; +static uint8_t cu_gpos2bpos(uint8_t gpos); +static uint8_t cp_Construct(uint8_t color, uint8_t piece); +static uint8_t cp_GetPiece(uint8_t cp); +static uint8_t cp_GetColor(uint8_t cp); +uint8_t cp_GetFromBoard(uint8_t pos) U8G_NOINLINE; +void cp_SetOnBoard(uint8_t pos, uint8_t cp) U8G_NOINLINE; + +void cu_ClearBoard(void) U8G_NOINLINE; +void chess_SetupBoard(void) U8G_NOINLINE; +eval_t ce_Eval(void); + +void cu_ClearMoveHistory(void) U8G_NOINLINE; +void cu_ReduceHistoryByFullMove(void) U8G_NOINLINE; +void cu_UndoHalfMove(void) U8G_NOINLINE; +chm_p cu_PushHalfMove(void) U8G_NOINLINE; + + +void ce_CalculatePositionWeight(uint8_t pos); +uint8_t ce_GetPositionAttackWeight(uint8_t pos, uint8_t color); + +void chess_Thinking(void); +void ce_LoopPieces(void); + + +/*==============================================================*/ +/* search stack */ +/*==============================================================*/ + +/* get current element from stack */ +stack_element_p stack_GetCurrElement(void) +{ + return lrc_obj.curr_element; +} + +uint8_t stack_Push(uint8_t color) +{ + if ( lrc_obj.curr_depth == lrc_obj.max_depth ) + return 0; + lrc_obj.curr_depth++; + lrc_obj.curr_element = lrc_obj.stack_memory+lrc_obj.curr_depth; + + /* change view for the evaluation */ + color ^= 1; + stack_GetCurrElement()->current_color = color; + + return 1; +} + +void stack_Pop(void) +{ + lrc_obj.curr_depth--; + lrc_obj.curr_element = lrc_obj.stack_memory+lrc_obj.curr_depth; +} + +/* reset the current element on the stack */ +void stack_InitCurrElement(void) +{ + stack_element_p e = stack_GetCurrElement(); + e->best_eval = EVAL_T_MIN; + e->best_from_pos = ILLEGAL_POSITION; + e->best_to_pos = ILLEGAL_POSITION; +} + +/* resets the search stack (and the check mode) */ +void stack_Init(uint8_t max) +{ + lrc_obj.curr_depth = 0; + lrc_obj.curr_element = lrc_obj.stack_memory; + lrc_obj.max_depth = max; + lrc_obj.check_mode = CHECK_MODE_NONE; + stack_InitCurrElement(); + stack_GetCurrElement()->current_color = lrc_obj.ply_count; + stack_GetCurrElement()->current_color &= 1; +} + +/* assign evaluation value and store the move, if this is the best move */ +/* assumes, that current_pos contains the source position */ +void stack_SetMove(eval_t val, uint8_t to_pos) +{ + stack_element_p e = stack_GetCurrElement(); + if ( e->best_eval < val ) + { + e->best_eval = val; + e->best_from_pos = e->current_pos; + e->best_to_pos = to_pos; + } +} + +/* + calculate next position on a 0x88 board + loop is constructed in this way: + i = 0; + do + { + ... + i = cu_NextPos(i); + } while( i != 0 ); + + next pos might be started with an illegal position like 255 +*/ +uint8_t cu_NextPos(uint8_t pos) +{ + /* calculate next gpos */ + pos++; + if ( ( pos & 0x08 ) != 0 ) + { + pos+= 0x10; + pos&= 0xf0; + } + if ( ( pos & 0x80 ) != 0 ) + pos = 0; + return pos; +} + +uint8_t cu_PrevPos(uint8_t pos) +{ + /* calculate prev gpos */ + pos--; + if ( ( pos & 0x80 ) != 0 ) + pos = 0x077; + else if ( ( pos & 0x08 ) != 0 ) + { + pos &= 0xf0; + pos |= 0x07; + } + return pos; +} + + +/*==============================================================*/ +/* position transltion */ +/*==============================================================*/ +/* + there are two positions + 1. game position (gpos): BCD encoded x-y values + 2. board position (bpos): a number between 0 and 63, only used to access the board. +*/ +/* + gpos: game position value + returns: board position + note: does not do any checks +*/ +static uint8_t cu_gpos2bpos(uint8_t gpos) +{ + uint8_t bpos = gpos; + bpos &= 0xf0; + bpos >>= 1; + gpos &= 0x0f; + bpos |= gpos; + return bpos; +} + +#define gpos_IsIllegal(gpos) ((gpos) & 0x088) + + +/*==============================================================*/ +/* colored piece handling */ +/*==============================================================*/ + +#define cp_IsMarked(cp) ((cp) & CP_MARK_MASK) + + +/* + piece: one of PIECE_xxx + color: COLOR_WHITE or COLOR_BLACK + + returns: A colored piece +*/ +static uint8_t cp_Construct(uint8_t color, uint8_t piece) +{ + color <<= 4; + color |= piece; + return color; +} + +/* inline is better than a macro */ +static uint8_t cp_GetPiece(uint8_t cp) +{ + cp &= 0x0f; + return cp; +} + +/* + we could use a macro: + #define cp_GetColor(cp) (((cp) >> 4)&1) + however, inlined functions are sometimes much better +*/ +static uint8_t cp_GetColor(uint8_t cp) +{ + cp >>= 4; + cp &= 1; + return cp; +} + +/* + pos: game position + returns the colored piece at the given position +*/ +uint8_t cp_GetFromBoard(uint8_t pos) +{ + return lrc_obj.board[cu_gpos2bpos(pos)]; +} + +/* + pos: game position + cp: colored piece +*/ +void cp_SetOnBoard(uint8_t pos, uint8_t cp) +{ + /*printf("cp_SetOnBoard gpos:%02x cp:%02x\n", pos, cp);*/ + lrc_obj.board[cu_gpos2bpos(pos)] = cp; +} + +/*==============================================================*/ +/* global board access */ +/*==============================================================*/ + +void cu_ClearBoard(void) +{ + uint8_t i; + /* clear the board */ + for( i = 0; i < 64; i++ ) + lrc_obj.board[i] = PIECE_NONE; + + lrc_obj.ply_count = 0; + lrc_obj.orientation = COLOR_WHITE; + + lrc_obj.pawn_dbl_move[0] = ILLEGAL_POSITION; + lrc_obj.pawn_dbl_move[1] = ILLEGAL_POSITION; + + lrc_obj.castling_possible = 0x0f; + + lrc_obj.is_game_end = 0; + lrc_obj.lost_side_color = 0; + + /* clear half move history */ + cu_ClearMoveHistory(); + +} + +/* + test setup + white wins in one move +*/ +void chess_SetupBoardTest01(void) +{ + cu_ClearBoard(); + lrc_obj.board[7+7*8] = cp_Construct(COLOR_BLACK, PIECE_KING); + lrc_obj.board[7+5*8] = cp_Construct(COLOR_WHITE, PIECE_PAWN); + lrc_obj.board[3] = cp_Construct(COLOR_WHITE, PIECE_KING); + lrc_obj.board[0+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + lrc_obj.board[6] = cp_Construct(COLOR_WHITE, PIECE_QUEEN); +} + +/* setup the global board */ +void chess_SetupBoard(void) +{ + uint8_t i; + register uint8_t bp, wp; + + /* clear the board */ + cu_ClearBoard(); + + /* precronstruct pawns */ + wp = cp_Construct(COLOR_WHITE, PIECE_PAWN); + bp = cp_Construct(COLOR_BLACK, PIECE_PAWN); + + /* setup pawn */ + for( i = 0; i < 8; i++ ) + { + lrc_obj.board[i+8] = wp; + lrc_obj.board[i+6*8] = bp; + } + + /* assign remaining pieces */ + + lrc_obj.board[0] = cp_Construct(COLOR_WHITE, PIECE_ROOK); + lrc_obj.board[1] = cp_Construct(COLOR_WHITE, PIECE_KNIGHT); + lrc_obj.board[2] = cp_Construct(COLOR_WHITE, PIECE_BISHOP); + lrc_obj.board[3] = cp_Construct(COLOR_WHITE, PIECE_QUEEN); + lrc_obj.board[4] = cp_Construct(COLOR_WHITE, PIECE_KING); + lrc_obj.board[5] = cp_Construct(COLOR_WHITE, PIECE_BISHOP); + lrc_obj.board[6] = cp_Construct(COLOR_WHITE, PIECE_KNIGHT); + lrc_obj.board[7] = cp_Construct(COLOR_WHITE, PIECE_ROOK); + + lrc_obj.board[0+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + lrc_obj.board[1+7*8] = cp_Construct(COLOR_BLACK, PIECE_KNIGHT); + lrc_obj.board[2+7*8] = cp_Construct(COLOR_BLACK, PIECE_BISHOP); + lrc_obj.board[3+7*8] = cp_Construct(COLOR_BLACK, PIECE_QUEEN); + lrc_obj.board[4+7*8] = cp_Construct(COLOR_BLACK, PIECE_KING); + lrc_obj.board[5+7*8] = cp_Construct(COLOR_BLACK, PIECE_BISHOP); + lrc_obj.board[6+7*8] = cp_Construct(COLOR_BLACK, PIECE_KNIGHT); + lrc_obj.board[7+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + + //chess_SetupBoardTest01(); + +} + + + +/*==============================================================*/ +/* checks */ +/*==============================================================*/ + +/* + checks if the position is somehow illegal +*/ +uint8_t cu_IsIllegalPosition(uint8_t pos, uint8_t my_color) +{ + uint8_t board_cp; + /* check, if the position is offboard */ + if ( gpos_IsIllegal(pos) != 0 ) + return 1; + /* get the piece from the board */ + board_cp = cp_GetFromBoard(pos); + /* check if hit our own pieces */ + if ( board_cp != 0 ) + if ( cp_GetColor(board_cp) == my_color ) + return 1; + /* all ok, we could go to this position */ + return 0; +} + +/*==============================================================*/ +/* evaluation procedure */ +/*==============================================================*/ + +/* + basic idea is to return a value between EVAL_T_MIN and EVAL_T_MAX +*/ + +/* + the weight table uses the PIECE number as index: + #define PIECE_NONE 0 + #define PIECE_PAWN 1 + #define PIECE_KNIGHT 2 + #define PIECE_BISHOP 3 + #define PIECE_ROOK 4 + #define PIECE_QUEEN 5 + #define PIECE_KING 6 + the king itself is not counted +*/ +uint8_t ce_piece_weight[] = { 0, 1, 3, 3, 5, 9, 0 }; +uint8_t ce_pos_weight[] = { 0, 1, 1, 2, 2, 1, 1, 0}; +/* + evaluate the current situation on the global board +*/ +eval_t ce_Eval(void) +{ + uint8_t cp; + uint8_t is_my_king_present = 0; + uint8_t is_opposit_king_present = 0; + eval_t material_my_color = 0; + eval_t material_opposit_color = 0; + eval_t position_my_color = 0; + eval_t position_opposit_color = 0; + eval_t result; + uint8_t pos; + + pos = 0; + do + { + /* get colored piece from the board */ + cp = cp_GetFromBoard(pos); + + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + if ( stack_GetCurrElement()->current_color == cp_GetColor(cp) ) + { + /* this is our color */ + /* check if we found our king */ + if ( cp_GetPiece(cp) == PIECE_KING ) + is_my_king_present = 1; + material_my_color += ce_piece_weight[cp_GetPiece(cp)]; + if ( cp_GetPiece(cp) == PIECE_PAWN || cp_GetPiece(cp) == PIECE_KNIGHT ) + { + position_my_color += ce_pos_weight[pos&7]*ce_pos_weight[(pos>>4)&7]; + } + } + else + { + /* this is the opposit color */ + if ( cp_GetPiece(cp) == PIECE_KING ) + is_opposit_king_present = 1; + material_opposit_color += ce_piece_weight[cp_GetPiece(cp)]; + if ( cp_GetPiece(cp) == PIECE_PAWN || cp_GetPiece(cp) == PIECE_KNIGHT ) + { + position_opposit_color += ce_pos_weight[pos&7]*ce_pos_weight[(pos>>4)&7]; + } + } + } + pos = cu_NextPos(pos); + } while( pos != 0 ); + + + /* decide if we lost or won the game */ + if ( is_my_king_present == 0 ) + return EVAL_T_MIN; /*_LOST*/ + if ( is_opposit_king_present == 0 ) + return EVAL_T_MAX; /*_WIN*/ + + /* here is the evaluation function */ + + result = material_my_color - material_opposit_color; + result <<= 3; + result += position_my_color - position_opposit_color; + return result; +} + +/*==============================================================*/ +/* move backup and restore */ +/*==============================================================*/ + + +/* this procedure must be called to keep the size as low as possible */ +/* if the chm_list is large enough, it could hold the complete history */ +/* but for an embedded controler... it is deleted for every engine search */ +void cu_ClearMoveHistory(void) +{ + lrc_obj.chm_pos = 0; +} + +void cu_ReduceHistoryByFullMove(void) +{ + uint8_t i; + while( lrc_obj.chm_pos > CHM_USER_SIZE ) + { + i = 0; + for(;;) + { + if ( i+2 >= lrc_obj.chm_pos ) + break; + lrc_obj.chm_list[i] = lrc_obj.chm_list[i+2]; + i++; + } + lrc_obj.chm_pos -= 2; + } +} + +void cu_UndoHalfMove(void) +{ + chm_p chm; + + if ( lrc_obj.chm_pos == 0 ) + return; + + lrc_obj.chm_pos--; + + chm = lrc_obj.chm_list+lrc_obj.chm_pos; + + lrc_obj.pawn_dbl_move[0] = chm->pawn_dbl_move[0]; + lrc_obj.pawn_dbl_move[1] = chm->pawn_dbl_move[1]; + lrc_obj.castling_possible = chm->castling_possible; + + cp_SetOnBoard(chm->main_src, chm->main_cp); + cp_SetOnBoard(chm->main_dest, PIECE_NONE); + + if ( chm->other_src != ILLEGAL_POSITION ) + cp_SetOnBoard(chm->other_src, chm->other_cp); + if ( chm->other_dest != ILLEGAL_POSITION ) + cp_SetOnBoard(chm->other_dest, PIECE_NONE); + +} + +/* + assumes, that the following members of the returned chm structure are filled + uint8_t main_cp; the main piece, which is moved + uint8_t main_src; the source position of the main piece + uint8_t main_dest; the destination of the main piece + + uint8_t other_cp; another piece: the captured one, the ROOK in case of castling or PIECE_NONE + uint8_t other_src; the delete position of other_cp. Often identical to main_dest except for e.p. and castling + uint8_t other_dest; only used for castling: ROOK destination pos + +*/ +chm_p cu_PushHalfMove(void) +{ + chm_p chm; + + chm = lrc_obj.chm_list+lrc_obj.chm_pos; + if ( lrc_obj.chm_pos < CHM_LIST_SIZE-1) + lrc_obj.chm_pos++; + + chm->pawn_dbl_move[0] = lrc_obj.pawn_dbl_move[0]; + chm->pawn_dbl_move[1] = lrc_obj.pawn_dbl_move[1]; + chm->castling_possible = lrc_obj.castling_possible; + return chm; +} + + +char chess_piece_to_char[] = "NBRQK"; + +/* + simple moves on empty field: Ka1-b2 + capture moves: Ka1xb2 + castling: 0-0 or 0-0-0 +*/ + +static void cu_add_pos(char *s, uint8_t pos) U8G_NOINLINE; + +static void cu_add_pos(char *s, uint8_t pos) +{ + *s = pos; + *s >>= 4; + *s += 'a'; + s++; + *s = pos; + *s &= 15; + *s += '1'; +} + +const char *cu_GetHalfMoveStr(uint8_t idx) +{ + chm_p chm; + static char buf[7]; /*Ka1-b2*/ + char *p = buf; + chm = lrc_obj.chm_list+idx; + + if ( cp_GetPiece(chm->main_cp) != PIECE_NONE ) + { + if ( cp_GetPiece(chm->main_cp) > PIECE_PAWN ) + { + *p++ = chess_piece_to_char[cp_GetPiece(chm->main_cp)-2]; + } + cu_add_pos(p, chm->main_src); + p+=2; + if ( cp_GetPiece(chm->other_cp) == PIECE_NONE ) + *p++ = '-'; + else + *p++ = 'x'; + cu_add_pos(p, chm->main_dest); + p+=2; + } + *p = '\0'; + return buf; +} + + + + + +/*==============================================================*/ +/* move */ +/*==============================================================*/ + +/* + Move a piece from source position to a destination on the board + This function + - does not perform any checking + - however it processes "en passant" and casteling + - backup the move and allow 1x undo + + 2011-02-05: + - fill pawn_dbl_move[] for double pawn moves + --> done + - Implement casteling + --> done + - en passant + --> done + - pawn conversion/promotion + --> done + - half-move backup + --> done + - cleanup everything, minimize variables + --> done +*/ + +void cu_Move(uint8_t src, uint8_t dest) +{ + /* start backup structure */ + chm_p chm = cu_PushHalfMove(); + + /* these are the values from the board at the positions, provided as arguments to this function */ + uint8_t cp_src, cp_dest; + + /* Maybe a second position is cleared and one additional location is set */ + uint8_t clr_pos2; + uint8_t set_pos2; + uint8_t set_cp2; + + /* get values from board */ + cp_src = cp_GetFromBoard(src); + cp_dest = cp_GetFromBoard(dest); + + /* fill backup structure */ + + chm->main_cp = cp_src; + chm->main_src = src; + chm->main_dest = dest; + + chm->other_cp = cp_dest; /* prepace capture backup */ + chm->other_src = dest; + chm->other_dest = ILLEGAL_POSITION; + + /* setup results as far as possible with some suitable values */ + + clr_pos2 = ILLEGAL_POSITION; /* for en passant and castling, two positions might be cleared */ + set_pos2 = ILLEGAL_POSITION; /* only used for castling */ + set_cp2 = PIECE_NONE; /* ROOK for castling */ + + /* check for PAWN */ + if ( cp_GetPiece(cp_src) == PIECE_PAWN ) + { + + /* double step: is the distance 2 rows */ + if ( (src - dest == 32) || ( dest - src == 32 ) ) + { + /* remember the destination position */ + lrc_obj.pawn_dbl_move[cp_GetColor(cp_src)] = dest; + } + + /* check if the PAWN is able to promote */ + else if ( (dest>>4) == 0 || (dest>>4) == 7 ) + { + /* do simple "queening" */ + cp_src &= ~PIECE_PAWN; + cp_src |= PIECE_QUEEN; + } + + /* is it en passant capture? */ + /* check for side move */ + else if ( ((src + dest) & 1) != 0 ) + { + /* check, if target field is empty */ + if ( cp_GetPiece(cp_dest) == PIECE_NONE ) + { + /* this is en passant */ + /* no further checking required, because legal moves are assumed here */ + /* however... the captured pawn position must be valid */ + clr_pos2 = lrc_obj.pawn_dbl_move[cp_GetColor(cp_src) ^ 1]; + chm->other_src = clr_pos2; + chm->other_cp = cp_GetFromBoard(clr_pos2); + } + } + } + + /* check for the KING */ + else if ( cp_GetPiece(cp_src) == PIECE_KING ) + { + /* disallow castling, if the KING has moved */ + if ( cp_GetColor(cp_src) == COLOR_WHITE ) + { + /* if white KING has moved, disallow castling for white */ + lrc_obj.castling_possible &= 0x0c; + } + else + { + /* if black KING has moved, disallow castling for black */ + lrc_obj.castling_possible &= 0x03; + } + + /* has it been castling to the left? */ + if ( src - dest == 2 ) + { + /* let the ROOK move to pos2 */ + set_pos2 = src-1; + set_cp2 = cp_GetFromBoard(src-4); + + /* the ROOK must be cleared from the original position */ + clr_pos2 = src-4; + + chm->other_cp = set_cp2; + chm->other_src = clr_pos2; + chm->other_dest = set_pos2; + } + + /* has it been castling to the right? */ + else if ( dest - src == 2 ) + { + /* let the ROOK move to pos2 */ + set_pos2 = src+1; + set_cp2 = cp_GetFromBoard(src+3); + + /* the ROOK must be cleared from the original position */ + clr_pos2 = src+3; + + chm->other_cp = set_cp2; + chm->other_src = clr_pos2; + chm->other_dest = set_pos2; + + } + + } + + /* check for the ROOK */ + else if ( cp_GetPiece(cp_src) == PIECE_ROOK ) + { + /* disallow white left castling */ + if ( src == 0x00 ) + lrc_obj.castling_possible &= ~0x01; + /* disallow white right castling */ + if ( src == 0x07 ) + lrc_obj.castling_possible &= ~0x02; + /* disallow black left castling */ + if ( src == 0x70 ) + lrc_obj.castling_possible &= ~0x04; + /* disallow black right castling */ + if ( src == 0x77 ) + lrc_obj.castling_possible &= ~0x08; + } + + + /* apply new board situation */ + + cp_SetOnBoard(dest, cp_src); + + if ( set_pos2 != ILLEGAL_POSITION ) + cp_SetOnBoard(set_pos2, set_cp2); + + cp_SetOnBoard(src, PIECE_NONE); + + if ( clr_pos2 != ILLEGAL_POSITION ) + cp_SetOnBoard(clr_pos2, PIECE_NONE); + + +} + +/* + this subprocedure decides for evaluation of the current board situation or further (deeper) investigation + Argument pos is the new target position if the current piece + +*/ +uint8_t ce_LoopRecur(uint8_t pos) +{ + eval_t eval; + + /* 1. check if target position is occupied by the same player (my_color) */ + /* of if pos is somehow illegal or not valid */ + if ( cu_IsIllegalPosition(pos, stack_GetCurrElement()->current_color) != 0 ) + return 0; + + /* 2. move piece to the specified position, capture opponent piece if required */ + cu_Move(stack_GetCurrElement()->current_pos, pos); + + + /* 3. */ + /* if depth reached: evaluate */ + /* else: go down next level */ + /* no eval if there had been any valid half-moves, so the default value (MIN) will be returned. */ + if ( stack_Push(stack_GetCurrElement()->current_color) == 0 ) + { + eval = ce_Eval(); + } + else + { + /* init the element, which has been pushed */ + stack_InitCurrElement(); + /* start over with ntext level */ + ce_LoopPieces(); + /* get the best move from opponents view, so invert the result */ + eval = -stack_GetCurrElement()->best_eval; + stack_Pop(); + } + + /* 4. store result */ + stack_SetMove(eval, pos); + + /* 5. undo the move */ + cu_UndoHalfMove(); + + /* 6. check special modes */ + /* the purpose of these checks is to mark special pieces and positions on the board */ + /* these marks can be checked by the user interface to highlight special positions */ + if ( lrc_obj.check_mode != 0 ) + { + stack_element_p e = stack_GetCurrElement(); + if ( lrc_obj.check_mode == CHECK_MODE_MOVEABLE ) + { + cp_SetOnBoard(e->current_pos, e->current_cp | CP_MARK_MASK ); + } + else if ( lrc_obj.check_mode == CHECK_MODE_TARGET_MOVE ) + { + if ( e->current_pos == lrc_obj.check_src_pos ) + { + cp_SetOnBoard(pos, cp_GetFromBoard(pos) | CP_MARK_MASK ); + } + } + } + return 1; +} + +/*==============================================================*/ +/* move pieces which can move one or more steps into a direction */ +/*==============================================================*/ + +/* + subprocedure to generate various target positions for some pieces + special cases are handled in the piece specific sub-procedure + + Arguments: + d: a list of potential directions + is_multi_step: if the piece can only do one step (zero for KING and KNIGHT) +*/ +static const uint8_t ce_dir_offset_rook[] PROGMEM = { 1, 16, -16, -1, 0 }; +static const uint8_t ce_dir_offset_bishop[] PROGMEM = { 15, 17, -17, -15, 0 }; +static const uint8_t ce_dir_offset_queen[] PROGMEM = { 1, 16, -16, -1, 15, 17, -17, -15, 0 }; +static const uint8_t ce_dir_offset_knight[] PROGMEM = {14, -14, 18, -18, 31, -31, 33, -33, 0}; + +void ce_LoopDirsSingleMultiStep(const uint8_t *d, uint8_t is_multi_step) +{ + uint8_t loop_pos; + + /* with all directions */ + for(;;) + { + if ( u8g_pgm_read(d) == 0 ) + break; + + /* start again from the initial position */ + loop_pos = stack_GetCurrElement()->current_pos; + + /* check direction */ + do + { + /* check next position into one direction */ + loop_pos += u8g_pgm_read(d); + + /* + go further to ce_LoopRecur() + 0 will be returned if the target position is illegal or a piece of the own color + this is used to stop walking into one direction + */ + if ( ce_LoopRecur(loop_pos) == 0 ) + break; + + /* stop if we had hit another piece */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) != PIECE_NONE ) + break; + } while( is_multi_step ); + d++; + } +} + +void ce_LoopRook(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_rook, 1); +} + +void ce_LoopBishop(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_bishop, 1); +} + +void ce_LoopQueen(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_queen, 1); +} + +void ce_LoopKnight(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_knight, 0); +} + + + +/*==============================================================*/ +/* move king */ +/*==============================================================*/ + +uint8_t cu_IsKingCastling(uint8_t mask, int8_t direction, uint8_t cnt) U8G_NOINLINE; + +/* + checks, if the king can do castling + + Arguments: + mask: the bit-mask for the global "castling possible" flag + direction: left castling: -1, right castling 1 + cnt: number of fields to be checked: 3 or 2 +*/ +uint8_t cu_IsKingCastling(uint8_t mask, int8_t direction, uint8_t cnt) +{ + uint8_t pos; + uint8_t opponent_color; + + /* check if the current board state allows castling */ + if ( (lrc_obj.castling_possible & mask) == 0 ) + return 0; /* castling not allowed */ + + /* get the position of the KING, could be white or black king */ + pos = stack_GetCurrElement()->current_pos; + + /* calculate the color of the opponent */ + opponent_color = 1; + opponent_color -= stack_GetCurrElement()->current_color; + + /* if the KING itself is given check... */ + if ( ce_GetPositionAttackWeight(pos, opponent_color) > 0 ) + return 0; + + + /* check if fields in the desired direction are emtpy */ + for(;;) + { + /* go to the next field */ + pos += direction; + /* check for a piece */ + if ( cp_GetPiece(cp_GetFromBoard(pos)) != PIECE_NONE ) + return 0; /* castling not allowed */ + + /* if some of the fields are under attack */ + if ( ce_GetPositionAttackWeight(pos, opponent_color) > 0 ) + return 0; + + cnt--; + if ( cnt == 0 ) + break; + } + return 1; /* castling allowed */ +} + +void ce_LoopKing(void) +{ + /* + there is an interessting timing problem in this procedure + it must be checked for castling first and as second step the normal + KING movement. If we would first check for normal moves, than + any marks might be overwritten by the ROOK in the case of castling. + */ + + /* castling (this must be done before checking normal moves (see above) */ + if ( stack_GetCurrElement()->current_color == COLOR_WHITE ) + { + /* white left castling */ + if ( cu_IsKingCastling(1, -1, 3) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos-2); + } + /* white right castling */ + if ( cu_IsKingCastling(2, 1, 2) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos+2); + } + } + else + { + /* black left castling */ + if ( cu_IsKingCastling(4, -1, 3) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos-2); + } + /* black right castling */ + if ( cu_IsKingCastling(8, 1, 2) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos+2); + } + } + + /* reuse queen directions */ + ce_LoopDirsSingleMultiStep(ce_dir_offset_queen, 0); +} + + +/*==============================================================*/ +/* move pawn */ +/*==============================================================*/ + +/* + doppelschritt: nur von der grundlinie aus, beide (!) felder vor dem bauern müssen frei sein + en passant: nur unmittelbar nachdem ein doppelschritt ausgeführt wurde. +*/ +void ce_LoopPawnSideCapture(uint8_t loop_pos) +{ + if ( gpos_IsIllegal(loop_pos) == 0 ) + { + /* get the piece from the board */ + /* if the field is NOT empty */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) != PIECE_NONE ) + { + /* normal capture */ + ce_LoopRecur(loop_pos); + /* TODO: check for pawn conversion/promotion */ + } + else + { + /* check conditions for en passant capture */ + if ( stack_GetCurrElement()->current_color == COLOR_WHITE ) + { + if ( lrc_obj.pawn_dbl_move[COLOR_BLACK]+16 == loop_pos ) + { + ce_LoopRecur(loop_pos); + /* note: pawn conversion/promotion can not occur */ + } + } + else + { + if ( lrc_obj.pawn_dbl_move[COLOR_WHITE] == loop_pos+16 ) + { + ce_LoopRecur(loop_pos); + /* note: pawn conversion/promotion can not occur */ + } + } + } + } +} + +void ce_LoopPawn(void) +{ + uint8_t initial_pos = stack_GetCurrElement()->current_pos; + uint8_t my_color = stack_GetCurrElement()->current_color; + + uint8_t loop_pos; + uint8_t line; + + /* one step forward */ + + loop_pos = initial_pos; + line = initial_pos; + line >>= 4; + if ( my_color == COLOR_WHITE ) + loop_pos += 16; + else + loop_pos -= 16; + if ( gpos_IsIllegal(loop_pos) == 0 ) + { + /* if the field is empty */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) == PIECE_NONE ) + { + /* TODO: check for and loop through piece conversion/promotion */ + ce_LoopRecur(loop_pos); + + /* second step forward */ + + /* if pawn is on his starting line */ + if ( (my_color == COLOR_WHITE && line == 1) || (my_color == COLOR_BLACK && line == 6 ) ) + { + /* the place before the pawn is not occupied, so we can do double moves, see above */ + + if ( my_color == COLOR_WHITE ) + loop_pos += 16; + else + loop_pos -= 16; + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) == PIECE_NONE ) + { + /* this is a special case, other promotions of the pawn can not occur */ + ce_LoopRecur(loop_pos); + } + } + } + } + + /* capture */ + + loop_pos = initial_pos; + if ( my_color == COLOR_WHITE ) + loop_pos += 15; + else + loop_pos -= 15; + ce_LoopPawnSideCapture(loop_pos); + + + loop_pos = initial_pos; + if ( my_color == COLOR_WHITE ) + loop_pos += 17; + else + loop_pos -= 17; + ce_LoopPawnSideCapture(loop_pos); +} + +/*==============================================================*/ +/* attacked */ +/*==============================================================*/ + +/* + from a starting position, search for a piece, that might jump to that postion. + return: + the two global variables + lrc_obj.find_piece_weight[0]; + lrc_obj.find_piece_weight[1]; + will be increased by the weight of the attacked pieces of that color. + it is usually required to reset these global variables to zero, before using + this function. +*/ + +void ce_FindPieceByStep(uint8_t start_pos, uint8_t piece, const uint8_t *d, uint8_t is_multi_step) +{ + uint8_t loop_pos, cp; + + /* with all directions */ + for(;;) + { + if ( u8g_pgm_read(d) == 0 ) + break; + + /* start again from the initial position */ + loop_pos = start_pos; + + /* check direction */ + do + { + /* check next position into one direction */ + loop_pos += u8g_pgm_read(d); + + /* check if the board boundary has been crossed */ + if ( (loop_pos & 0x088) != 0 ) + break; + + /* get the colored piece from the board */ + cp = cp_GetFromBoard(loop_pos); + + /* stop if we had hit another piece */ + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + /* if it is the piece we are looking for, then add the weight */ + if ( cp_GetPiece(cp) == piece ) + { + lrc_obj.find_piece_weight[cp_GetColor(cp)] += ce_piece_weight[piece]; + lrc_obj.find_piece_cnt[cp_GetColor(cp)]++; + } + /* in any case, break out of the inner loop */ + break; + } + } while( is_multi_step ); + d++; + } +} + +void ce_FindPawnPiece(uint8_t dest_pos, uint8_t color) +{ + uint8_t cp; + /* check if the board boundary has been crossed */ + if ( (dest_pos & 0x088) == 0 ) + { + /* get the colored piece from the board */ + cp = cp_GetFromBoard(dest_pos); + /* only if there is a pawn of the matching color */ + if ( cp_GetPiece(cp) == PIECE_PAWN ) + { + if ( cp_GetColor(cp) == color ) + { + /* the weight of the PAWN */ + lrc_obj.find_piece_weight[color] += 1; + lrc_obj.find_piece_cnt[color]++; + } + } + } +} + + +/* + find out, which pieces do attack a specified field + used to + - check if the KING can do castling + - check if the KING must move + + may be used in the eval procedure ... once... + + the result is stored in the global array + uint8_t lrc_obj.find_piece_weight[2]; + which is indexed with the color. + lrc_obj.find_piece_weight[COLOR_WHITE] is the sum of all white pieces + which can directly move to this field. + + example: + if the black KING is at "pos" and lrc_obj.find_piece_weight[COLOR_WHITE] is not zero + (after executing ce_CalculatePositionWeight(pos)) then the KING must be protected or moveed, because + the KING was given check. +*/ + +void ce_CalculatePositionWeight(uint8_t pos) +{ + + lrc_obj.find_piece_weight[0] = 0; + lrc_obj.find_piece_weight[1] = 0; + lrc_obj.find_piece_cnt[0] = 0; + lrc_obj.find_piece_cnt[1] = 0; + + if ( (pos & 0x088) != 0 ) + return; + + ce_FindPieceByStep(pos, PIECE_ROOK, ce_dir_offset_rook, 1); + ce_FindPieceByStep(pos, PIECE_BISHOP, ce_dir_offset_bishop, 1); + ce_FindPieceByStep(pos, PIECE_QUEEN, ce_dir_offset_queen, 1); + ce_FindPieceByStep(pos, PIECE_KNIGHT, ce_dir_offset_knight, 0); + ce_FindPieceByStep(pos, PIECE_KING, ce_dir_offset_queen, 0); + + ce_FindPawnPiece(pos+17, COLOR_BLACK); + ce_FindPawnPiece(pos+15, COLOR_BLACK); + ce_FindPawnPiece(pos-17, COLOR_WHITE); + ce_FindPawnPiece(pos-15, COLOR_WHITE); +} + +/* + calculate the summed weight of pieces with specified color which can move to a specified position + + argument: + pos: the position which should be analysed + color: the color of those pieces which should be analysed + e.g. if a black piece is at 'pos' and 'color' is white then this procedure returns the white atting count +*/ +uint8_t ce_GetPositionAttackWeight(uint8_t pos, uint8_t color) +{ + ce_CalculatePositionWeight(pos); + return lrc_obj.find_piece_weight[color]; +} + +uint8_t ce_GetPositionAttackCount(uint8_t pos, uint8_t color) +{ + ce_CalculatePositionWeight(pos); + return lrc_obj.find_piece_cnt[color]; +} + + +/*==============================================================*/ +/* depth search starts here: loop over all pieces of the current color on the board */ +/*==============================================================*/ + +void ce_LoopPieces(void) +{ + stack_element_p e = stack_GetCurrElement(); + /* start with lower left position (A1) */ + e->current_pos = 0; + do + { + e->current_cp = cp_GetFromBoard(e->current_pos); + /* check if the position on the board is empty */ + if ( e->current_cp != 0 ) + { + /* only generate moves for the current color */ + if ( e->current_color == cp_GetColor(e->current_cp) ) + { + chess_Thinking(); + + /* find out which piece is used */ + switch(cp_GetPiece(e->current_cp)) + { + case PIECE_NONE: + break; + case PIECE_PAWN: + ce_LoopPawn(); + break; + case PIECE_KNIGHT: + ce_LoopKnight(); + break; + case PIECE_BISHOP: + ce_LoopBishop(); + break; + case PIECE_ROOK: + ce_LoopRook(); + break; + case PIECE_QUEEN: + ce_LoopQueen(); + break; + case PIECE_KING: + ce_LoopKing(); + break; + } + } + } + e->current_pos = cu_NextPos(e->current_pos); + } while( e->current_pos != 0 ); +} + +/*==============================================================*/ +/* user interface */ +/*==============================================================*/ + +/* +eval_t chess_EvalCurrBoard(uint8_t color) +{ + stack_Init(0); + stack_GetCurrElement()->current_color = color; + ce_LoopPieces(); + return stack_GetCurrElement()->best_eval; +} +*/ + +/* clear any marks on the board */ +void chess_ClearMarks(void) +{ + uint8_t i; + for( i = 0; i < 64; i++ ) + lrc_obj.board[i] &= ~CP_MARK_MASK; +} + +/* + Mark all pieces which can do moves. This is done by setting flags on the global board +*/ +void chess_MarkMovable(void) +{ + stack_Init(0); + //stack_GetCurrElement()->current_color = color; + lrc_obj.check_mode = CHECK_MODE_MOVEABLE; + ce_LoopPieces(); +} + +/* + Checks, if the piece can move from src_pos to dest_pos + + src_pos: The game position of a piece on the chess board +*/ +void chess_MarkTargetMoves(uint8_t src_pos) +{ + stack_Init(0); + stack_GetCurrElement()->current_color = cp_GetColor(cp_GetFromBoard(src_pos)); + lrc_obj.check_src_pos = src_pos; + lrc_obj.check_mode = CHECK_MODE_TARGET_MOVE; + ce_LoopPieces(); +} + +/* + first call should start with 255 + this procedure will return 255 if + - there are no marks at all + - it has looped over all marks once +*/ +uint8_t chess_GetNextMarked(uint8_t arg, uint8_t is_prev) +{ + uint8_t i; + uint8_t pos = arg; + for(i = 0; i < 64; i++) + { + if ( is_prev != 0 ) + pos = cu_PrevPos(pos); + else + pos = cu_NextPos(pos); + if ( arg != 255 && pos == 0 ) + return 255; + if ( cp_IsMarked(cp_GetFromBoard(pos)) ) + return pos; + } + return 255; +} + + +/* make a manual move: this is a little bit more than cu_Move() */ +void chess_ManualMove(uint8_t src, uint8_t dest) +{ + uint8_t cp; + + /* printf("chess_ManualMove %02x -> %02x\n", src, dest); */ + + /* if all other things fail, this is the place where the game is to be decided: */ + /* ... if the KING is captured */ + cp = cp_GetFromBoard(dest); + if ( cp_GetPiece(cp) == PIECE_KING ) + { + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = cp_GetColor(cp); + } + + /* clear ply history here, to avoid memory overflow */ + /* may be the last X moves can be kept here */ + cu_ReduceHistoryByFullMove(); + /* perform the move on the board */ + cu_Move(src, dest); + + /* update en passant double move positions: en passant position is removed after two half moves */ + lrc_obj.pawn_dbl_move[lrc_obj.ply_count&1] = ILLEGAL_POSITION; + + /* update the global half move counter */ + lrc_obj.ply_count++; + + + /* make a small check about the end of the game */ + /* use at least depth 1, because we must know if the king can still move */ + /* this is: King moves at level 0 and will be captured at level 1 */ + /* so we check if the king can move and will not be captured at search level 1 */ + + stack_Init(1); + ce_LoopPieces(); + + /* printf("chess_ManualMove/analysis best_from_pos %02x -> best_to_pos %02x\n", stack_GetCurrElement()->best_from_pos, stack_GetCurrElement()->best_to_pos); */ + + /* analyse the eval result */ + + /* check if the other player has any moves left */ + if ( stack_GetCurrElement()->best_from_pos == ILLEGAL_POSITION ) + { + uint8_t color; + /* conditions: */ + /* 1. no King, should never happen, opposite color has won */ + /* this is already checked above at the beginning if this procedure */ + /* 2. King is under attack, opposite color has won */ + /* 3. King is not under attack, game is a draw */ + + uint8_t i = 0; + color = lrc_obj.ply_count; + color &= 1; + do + { + cp = cp_GetFromBoard(i); + /* look for the King */ + if ( cp_GetPiece(cp) == PIECE_KING ) + { + if ( cp_GetColor(cp) == color ) + { + /* check if KING is attacked */ + if ( ce_GetPositionAttackCount(i, color^1) != 0 ) + { + /* KING is under attack (check) and can not move: Game is lost */ + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = color; + } + else + { + /* KING is NOT under attack (check) but can not move: Game is a draw */ + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = 2; + } + /* break out of the loop */ + break; + } + } + i = cu_NextPos(i); + } while( i != 0 ); + } +} + +/* let the computer do a move */ +void chess_ComputerMove(uint8_t depth) +{ + stack_Init(depth); + + //stack_GetCurrElement()->current_color = lrc_obj.ply_count; + //stack_GetCurrElement()->current_color &= 1; + + cu_ReduceHistoryByFullMove(); + ce_LoopPieces(); + + chess_ManualMove(stack_GetCurrElement()->best_from_pos, stack_GetCurrElement()->best_to_pos); +} + + +/*==============================================================*/ +/* unix code */ +/*==============================================================*/ + +#ifdef UNIX_MAIN + +#include +#include + +char *piece_str[] = { + /* 0x00 */ + " ", + "wP", + "wN", + "wB", + + /* 0x04 */ + "wR", + "wQ", + "wK", + "w?", + + /* 0x08 */ + "w?", + "w?", + "w?", + "w?", + + /* 0x0c */ + "w?", + "w?", + "w?", + "w?", + + /* 0x10 */ + "b ", + "bP", + "bN", + "bB", + "bR", + "bQ", + "bK", + "b?", + + "b?", + "b?", + "b?", + "b?", + "b?", + "b?", + "b?", + "b?" +}; + +void chess_Thinking(void) +{ + uint8_t i; + uint8_t cp = cp_GetPiece(stack_GetCurrElement()->current_cp); + + printf("Thinking: ", piece_str[cp], stack_GetCurrElement()->current_pos); + + for( i = 0; i <= lrc_obj.curr_depth; i++ ) + printf("%s ", piece_str[(lrc_obj.stack_memory+i)->current_cp]); + + printf(" \r"); +} + +void board_Show(void) +{ + uint8_t i, j, cp; + char buf[10]; + for ( i = 0; i < 8; i++ ) + { + printf("%1d ", 7-i); + for ( j = 0; j < 8; j++ ) + { + /* get piece from global board */ + cp = lrc_obj.board[(7-i)*8+j]; + strcpy(buf, piece_str[cp&COLOR_PIECE_MASK]); + + if ( (cp & CP_MARK_MASK) != 0 ) + { + buf[0] = '#'; + } + + /* mask out any bits except color and piece index */ + cp &= COLOR_PIECE_MASK; + printf("%s %02x ", buf, cp); + + } + printf("\n"); + } +} + +int main(void) +{ + uint8_t depth = 3; + chess_SetupBoard(); + board_Show(); + puts(""); + + + /* + chess_ClearMarks(); + chess_MarkMovable(COLOR_WHITE); + board_Show(); + */ + + chess_ManualMove(0x006, 0x066); + + printf("lrc_obj.is_game_end: %d\n" , lrc_obj.is_game_end); + printf("lrc_obj.lost_side_color: %d\n" , lrc_obj.lost_side_color); + + chess_ComputerMove(2); + + printf("lrc_obj.is_game_end: %d\n" , lrc_obj.is_game_end); + printf("lrc_obj.lost_side_color: %d\n" , lrc_obj.lost_side_color); + + board_Show(); + +} + + + +#else + +/*==============================================================*/ +/* display menu */ +/*==============================================================*/ + +//#define MNU_FONT font_5x7 +#define MNU_FONT u8g_font_5x8r +//#define MNU_FONT font_6x9 +#define MNU_ENTRY_HEIGHT 9 + +char *mnu_title = "Little Rook Chess"; +char *mnu_list[] = { "New Game (White)", "New Game (Black)", "Undo Move", "Return" }; +uint8_t mnu_pos = 0; +uint8_t mnu_max = 4; + +void mnu_DrawHome(uint8_t is_highlight) +{ + uint8_t x = lrc_u8g->width - 35; + uint8_t y = (lrc_u8g->height-1); + uint8_t t; + + u8g_SetFont(lrc_u8g, u8g_font_5x7r); + u8g_SetDefaultForegroundColor(lrc_u8g); + t = u8g_DrawStrP(lrc_u8g, x, y -1, U8G_PSTR("Options")); + + if ( is_highlight ) + u8g_DrawFrame(lrc_u8g, x-1, y - MNU_ENTRY_HEIGHT +1, t, MNU_ENTRY_HEIGHT); +} + +void mnu_DrawEntry(uint8_t y, char *str, uint8_t is_clr_background, uint8_t is_highlight) +{ + uint8_t t, x; + u8g_SetFont(lrc_u8g, MNU_FONT); + t = u8g_GetStrWidth(lrc_u8g, str); + x = u8g_GetWidth(lrc_u8g); + x -= t; + x >>= 1; + + if ( is_clr_background ) + { + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBox(lrc_u8g, x-3, (lrc_u8g->height-1) - (y+MNU_ENTRY_HEIGHT-1+2), t+5, MNU_ENTRY_HEIGHT+4); + } + + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawStr(lrc_u8g, x, (lrc_u8g->height-1) - y, str); + + if ( is_highlight ) + { + u8g_DrawFrame(lrc_u8g, x-1, (lrc_u8g->height-1) - y -MNU_ENTRY_HEIGHT +1, t, MNU_ENTRY_HEIGHT); + } +} + +void mnu_Draw(void) +{ + uint8_t i; + uint8_t t,y; + /* calculate hight of the complete menu */ + y = mnu_max; + y++; /* consider also some space for the title */ + y++; /* consider also some space for the title */ + y *= MNU_ENTRY_HEIGHT; + + /* calculate how much space will be left */ + t = u8g_GetHeight(lrc_u8g); + t -= y; + + /* topmost pos start half of that empty space from the top */ + t >>= 1; + y = u8g_GetHeight(lrc_u8g); + y -= t; + + y -= MNU_ENTRY_HEIGHT; + mnu_DrawEntry(y, mnu_title, 0, 0); + + y -= MNU_ENTRY_HEIGHT; + + + for( i = 0; i < mnu_max; i++ ) + { + y -= MNU_ENTRY_HEIGHT; + mnu_DrawEntry(y, mnu_list[i], 0, i == mnu_pos); + } +} + +void mnu_Step(uint8_t key_cmd) +{ + if ( key_cmd == CHESS_KEY_NEXT ) + { + if ( mnu_pos+1 < mnu_max ) + mnu_pos++; + } + else if ( key_cmd == CHESS_KEY_PREV ) + { + if ( mnu_pos > 0 ) + mnu_pos--; + } +} + + + + +uint8_t chess_key_code = 0; +uint8_t chess_key_cmd = 0; +#define CHESS_STATE_MENU 0 +#define CHESS_STATE_SELECT_START 1 +#define CHESS_STATE_SELECT_PIECE 2 +#define CHESS_STATE_SELECT_TARGET_POS 3 +#define CHESS_STATE_THINKING 4 +#define CHESS_STATE_GAME_END 5 +uint8_t chess_state = CHESS_STATE_MENU; +uint8_t chess_source_pos = 255; +uint8_t chess_target_pos = 255; + +const uint8_t chess_pieces_body_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, /* 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, */ + /* KNIGHT */ 0x00, 0x00, 0x1c, 0x2c, 0x04, 0x04, 0x0e, 0x00, + /* BISHOP */ 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x08, 0x00, 0x00, /* 0x00, 0x00, 0x08, 0x1c, 0x1c, 0x08, 0x00, 0x00, */ + /* ROOK */ 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, + /* QUEEN */ 0x00, 0x00, 0x14, 0x1c, 0x08, 0x1c, 0x08, 0x00, + /* KING */ 0x00, 0x00, 0x00, 0x08, 0x3e, 0x1c, 0x08, 0x00, +}; + +#ifdef NOT_REQUIRED +/* white pieces are constructed by painting black pieces and cutting out the white area */ +const uint8_t chess_white_pieces_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0x1e, 0x00, + /* KNIGHT */ 0x00, 0x1c, 0x22, 0x52, 0x6a, 0x0a, 0x11, 0x1f, + /* BISHOP */ 0x00, 0x08, 0x14, 0x22, 0x22, 0x14, 0x08, 0x7f, + /* ROOK */ 0x00, 0x55, 0x7f, 0x22, 0x22, 0x22, 0x22, 0x7f, + /* QUEEN */ 0x00, 0x55, 0x2a, 0x22, 0x14, 0x22, 0x14, 0x7f, + /* KING */ 0x08, 0x1c, 0x49, 0x77, 0x41, 0x22, 0x14, 0x7f, +}; +#endif + +const uint8_t chess_black_pieces_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x3c, 0x00, /* 0x00, 0x00, 0x0c, 0x1e, 0x1e, 0x0c, 0x1e, 0x00, */ + /* KNIGHT */ 0x00, 0x1c, 0x3e, 0x7e, 0x6e, 0x0e, 0x1f, 0x1f, + /* BISHOP */ 0x00, 0x1c, 0x2e, 0x3e, 0x3e, 0x1c, 0x08, 0x7f, /*0x00, 0x08, 0x1c, 0x3e, 0x3e, 0x1c, 0x08, 0x7f,*/ + /* ROOK */ 0x00, 0x55, 0x7f, 0x3e, 0x3e, 0x3e, 0x3e, 0x7f, + /* QUEEN */ 0x00, 0x55, 0x3e, 0x3e, 0x1c, 0x3e, 0x1c, 0x7f, + /* KING -*/ 0x08, 0x1c, 0x49, 0x7f, 0x7f, 0x3e, 0x1c, 0x7f, +}; + + +#if defined(DOGXL160_HW_GR) +#define BOXSIZE 13 +#define BOXOFFSET 3 +#else +#define BOXSIZE 8 +#define BOXOFFSET 1 +#endif + +u8g_uint_t chess_low_edge; +uint8_t chess_boxsize = 8; +uint8_t chess_boxoffset = 1; + + +void chess_DrawFrame(uint8_t pos, uint8_t is_bold) +{ + u8g_uint_t x0, y0; + + x0 = pos; + x0 &= 15; + if ( lrc_obj.orientation != COLOR_WHITE ) + x0 ^= 7; + + y0 = pos; + y0>>= 4; + if ( lrc_obj.orientation != COLOR_WHITE ) + y0 ^= 7; + + x0 *= chess_boxsize; + y0 *= chess_boxsize; + + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawFrame(lrc_u8g, x0, chess_low_edge - y0 - chess_boxsize+1, chess_boxsize, chess_boxsize); + + + if ( is_bold ) + { + x0--; + y0++; + + u8g_DrawFrame(lrc_u8g, x0, chess_low_edge - y0 - chess_boxsize +1, chess_boxsize+2, chess_boxsize+2); + } +} + + +void chess_DrawBoard(void) +{ + uint8_t i, j, cp; + const uint8_t *ptr; /* pointer into PROGMEM */ + + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(lrc_u8g)) > 1 ) + { + for( i = 0; i < 8; i++ ) + for( j = 0; j < 8; j++ ) + { + uint8_t x,y; + x = i; + x*=chess_boxsize; + y = j; + y*=chess_boxsize; + if ( ((i^j) & 1) == 0 ) + u8g_SetDefaultMidColor(lrc_u8g); + else + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBox(lrc_u8g, x,chess_low_edge-y-chess_boxsize+1,chess_boxsize,chess_boxsize); + } + //u8g_SetDefaultForegroundColor(lrc_u8g); + } + else + { + uint8_t x_offset = 1; + u8g_SetDefaultForegroundColor(lrc_u8g); + for( i = 0; i < 8*8; i+=8 ) + { + for( j = 0; j < 8*8; j+=8 ) + { + if ( ((i^j) & 8) == 0 ) + { + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-2); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-4); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+2+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+2+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+4+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+4+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-2); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-4); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-6); + } + } + } + } + + for ( i = 0; i < 8; i++ ) + { + for ( j = 0; j < 8; j++ ) + { + /* get piece from global board */ + if ( lrc_obj.orientation == COLOR_WHITE ) + { + cp = lrc_obj.board[i*8+j]; + } + else + { + cp = lrc_obj.board[(7-i)*8+7-j]; + } + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + ptr = chess_black_pieces_bm; + ptr += (cp_GetPiece(cp)-1)*8; + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawBitmapP(lrc_u8g, j*chess_boxsize+chess_boxoffset-1, chess_low_edge - (i*chess_boxsize+chess_boxsize-chess_boxoffset), 1, 8, ptr); + + if ( cp_GetColor(cp) == lrc_obj.strike_out_color ) + { + ptr = chess_pieces_body_bm; + ptr += (cp_GetPiece(cp)-1)*8; + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBitmapP(lrc_u8g, j*chess_boxsize+chess_boxoffset-1, chess_low_edge - (i*chess_boxsize+chess_boxsize-chess_boxoffset), 1, 8, ptr); + } + } + } + } + + if ( (chess_source_pos & 0x88) == 0 ) + { + chess_DrawFrame(chess_source_pos, 1); + } + + if ( (chess_target_pos & 0x88) == 0 ) + { + chess_DrawFrame(chess_target_pos, 0); + } + +} + + +void chess_Thinking(void) +{ +} + +void chess_Init(u8g_t *u8g, uint8_t body_color) +{ + lrc_u8g = u8g; + + chess_low_edge = u8g_GetHeight(lrc_u8g); + chess_low_edge--; + + + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(lrc_u8g)) == 1 ) + { + + chess_boxsize = 8; + chess_boxoffset = 1; + } + else + { + + /* + if ( u8g_GetHeight(lrc_u8g) >= 12*8 ) + { + chess_boxsize = 12; + chess_boxoffset = 3; + } + else */ if ( u8g_GetHeight(lrc_u8g) >= 11*8 ) + { + chess_boxsize = 10; + chess_boxoffset = 2; + } + else + { + chess_boxsize = 8; + chess_boxoffset = 1; + } + + if ( u8g_GetHeight(lrc_u8g) > 64 ) + chess_low_edge -= (u8g_GetHeight(lrc_u8g)-chess_boxsize*8) / 2; + + } + + lrc_obj.strike_out_color = body_color; + chess_SetupBoard(); +} + + + +void chess_Draw(void) +{ + if ( chess_state == CHESS_STATE_MENU ) + { + if ( lrc_obj.ply_count == 0) + mnu_max = 2; + else + mnu_max = 4; + mnu_Draw(); + } + else + { + chess_DrawBoard(); + + { + uint8_t i; + uint8_t entries = lrc_obj.chm_pos; + if ( entries > 4 ) + entries = 4; + + u8g_SetFont(lrc_u8g, u8g_font_5x7); + u8g_SetDefaultForegroundColor(lrc_u8g); + for( i = 0; i < entries; i++ ) + { + +#if defined(DOGXL160_HW_GR) || defined(DOGXL160_HW_BW) + dog_DrawStr(u8g_GetWidth(lrc_u8g)-35, u8g_GetHeight(lrc_u8g)-8*(i+1), font_5x7, cu_GetHalfMoveStr(lrc_obj.chm_pos-entries+i)); +#else + u8g_DrawStr(lrc_u8g, u8g_GetWidth(lrc_u8g)-35, 8*(i+1), cu_GetHalfMoveStr(lrc_obj.chm_pos-entries+i)); +#endif + + } + + } + + if ( chess_state == CHESS_STATE_SELECT_PIECE ) + mnu_DrawHome(chess_source_pos == 255); + else if ( chess_state == CHESS_STATE_SELECT_TARGET_POS ) + mnu_DrawHome(chess_target_pos == 255); + else + mnu_DrawHome(0); + + if ( chess_state == CHESS_STATE_GAME_END ) + { + switch( lrc_obj.lost_side_color ) + { + case COLOR_WHITE: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "Black wins", 1, 1); + break; + case COLOR_BLACK: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "White wins", 1, 1); + break; + default: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "Stalemate", 1, 1); + break; + } + } + } +} + + +void chess_Step(uint8_t keycode) +{ + if ( keycode == CHESS_KEY_NONE ) + { + chess_key_cmd = chess_key_code; + chess_key_code = CHESS_KEY_NONE; + } + else + { + chess_key_cmd = CHESS_KEY_NONE; + chess_key_code = keycode; + } + //chess_ComputerMove(2); + switch(chess_state) + { + case CHESS_STATE_MENU: + mnu_Step(chess_key_cmd); + if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + if ( mnu_pos == 0 ) + { + chess_SetupBoard(); + lrc_obj.orientation = 0; + chess_state = CHESS_STATE_SELECT_START; + } + else if ( mnu_pos == 1 ) + { + chess_SetupBoard(); + lrc_obj.orientation = 1; + chess_state = CHESS_STATE_THINKING; + } + else if ( mnu_pos == 2 ) + { + if ( lrc_obj.ply_count >= 2 ) + { + cu_UndoHalfMove(); + cu_UndoHalfMove(); + lrc_obj.ply_count-=2; + if ( lrc_obj.ply_count == 0 ) + mnu_pos = 0; + } + chess_state = CHESS_STATE_SELECT_START; + } + else if ( mnu_pos == 3 ) + { + chess_state = CHESS_STATE_SELECT_START; + } + } + break; + case CHESS_STATE_SELECT_START: + chess_ClearMarks(); + chess_MarkMovable(); + chess_source_pos = chess_GetNextMarked(255, 0); + chess_target_pos = ILLEGAL_POSITION; + chess_state = CHESS_STATE_SELECT_PIECE; + break; + + case CHESS_STATE_SELECT_PIECE: + if ( chess_key_cmd == CHESS_KEY_NEXT ) + { + chess_source_pos = chess_GetNextMarked(chess_source_pos, 0); + } + else if ( chess_key_cmd == CHESS_KEY_PREV ) + { + chess_source_pos = chess_GetNextMarked(chess_source_pos, 1); + } + else if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + if ( chess_source_pos == 255 ) + { + chess_state = CHESS_STATE_MENU; + } + else + { + chess_ClearMarks(); + chess_MarkTargetMoves(chess_source_pos); + chess_target_pos = chess_GetNextMarked(255, 0); + chess_state = CHESS_STATE_SELECT_TARGET_POS; + } + } + break; + case CHESS_STATE_SELECT_TARGET_POS: + if ( chess_key_cmd == CHESS_KEY_NEXT ) + { + chess_target_pos = chess_GetNextMarked(chess_target_pos, 0); + } + else if ( chess_key_cmd == CHESS_KEY_PREV ) + { + chess_target_pos = chess_GetNextMarked(chess_target_pos, 1); + } + else if ( chess_key_cmd == CHESS_KEY_BACK ) + { + chess_ClearMarks(); + chess_MarkMovable(); + chess_target_pos = ILLEGAL_POSITION; + chess_state = CHESS_STATE_SELECT_PIECE; + } + else if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + chess_ManualMove(chess_source_pos, chess_target_pos); + if ( lrc_obj.is_game_end != 0 ) + chess_state = CHESS_STATE_GAME_END; + else + chess_state = CHESS_STATE_THINKING; + /* clear marks as some kind of feedback to the user... it simply looks better */ + chess_source_pos = ILLEGAL_POSITION; + chess_target_pos = ILLEGAL_POSITION; + chess_ClearMarks(); + } + break; + case CHESS_STATE_THINKING: + chess_ComputerMove(2); + if ( lrc_obj.is_game_end != 0 ) + chess_state = CHESS_STATE_GAME_END; + else + chess_state = CHESS_STATE_SELECT_START; + break; + case CHESS_STATE_GAME_END: + if ( chess_key_cmd != CHESS_KEY_NONE ) + { + chess_state = CHESS_STATE_MENU; + chess_SetupBoard(); + } + break; + } + +} + +#endif + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g.h b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g.h new file mode 100644 index 000000000..f5a0230ac --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g.h @@ -0,0 +1,1607 @@ +/* + + u8g.h + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef _U8G_H +#define _U8G_H + +//#define U8G_16BIT 1 + +#include + +#ifdef __18CXX +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef unsigned short uint16_t; +typedef signed short int16_t; +#else +#include +#endif + +#if defined(__AVR__) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/*===============================================================*/ +#ifdef __GNUC__ +#define U8G_NOINLINE __attribute__((noinline)) +#define U8G_PURE __attribute__ ((pure)) +#define U8G_NOCOMMON __attribute__ ((nocommon)) +#define U8G_SECTION(name) __attribute__ ((section (name))) +#else +#define U8G_NOINLINE +#define U8G_PURE +#define U8G_NOCOMMON +#define U8G_SECTION(name) +#endif + +/*===============================================================*/ +/* flash memory access */ + +#if defined(__AVR__) +/* U8G_PROGMEM is used by the XBM example */ +#define U8G_PROGMEM U8G_SECTION(".progmem.data") +typedef uint8_t PROGMEM u8g_pgm_uint8_t; +typedef uint8_t u8g_fntpgm_uint8_t; +#define u8g_pgm_read(adr) pgm_read_byte_near(adr) +#define U8G_PSTR(s) ((u8g_pgm_uint8_t *)PSTR(s)) +#else +#define U8G_PROGMEM +#define PROGMEM +typedef uint8_t u8g_pgm_uint8_t; +typedef uint8_t u8g_fntpgm_uint8_t; +#define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr)) +#define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s)) +#endif + +/*===============================================================*/ +/* forward */ +typedef struct _u8g_t u8g_t; +typedef struct _u8g_dev_t u8g_dev_t; + +typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; +typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; +typedef struct _u8g_box_t u8g_box_t; + + +/*===============================================================*/ +/* generic */ +#if defined(U8G_16BIT) +typedef uint16_t u8g_uint_t; +typedef int16_t u8g_int_t; +#else +typedef uint8_t u8g_uint_t; +typedef int8_t u8g_int_t; +#endif + +#ifdef OBSOLETE +struct _u8g_box_t +{ + u8g_uint_t x0, y0, x1, y1; +}; +typedef struct _u8g_box_t u8g_box_t; +#endif /* OBSOLETE */ + + +/*===============================================================*/ +/* device structure */ + +#ifdef __XC8 +/* device prototype */ +typedef uint8_t (*u8g_dev_fnptr)(void *u8g, void *dev, uint8_t msg, void *arg); + +/* com prototype */ +typedef uint8_t (*u8g_com_fnptr)(void *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +#else +/* device prototype */ +typedef uint8_t (*u8g_dev_fnptr)(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* com prototype */ +typedef uint8_t (*u8g_com_fnptr)(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +#endif + + + +struct _u8g_dev_t +{ + u8g_dev_fnptr dev_fn; /* device procedure */ + void *dev_mem; /* device memory */ + u8g_com_fnptr com_fn; /* communication procedure */ +}; + + +/*===============================================================*/ +/* device list */ + +/* Size: 128x64 SDL, u8g_dev_sdl.c */ +extern u8g_dev_t u8g_dev_sdl_1bit; +extern u8g_dev_t u8g_dev_sdl_1bit_h; +extern u8g_dev_t u8g_dev_sdl_2bit; +extern u8g_dev_t u8g_dev_sdl_2bit_double_mem; +extern u8g_dev_t u8g_dev_sdl_8bit; +int u8g_sdl_get_key(void); + +/* Size: 70x30 monochrom, stdout */ +extern u8g_dev_t u8g_dev_stdout; + +/* Size: monochrom, writes "u8g.pbm" */ +extern u8g_dev_t u8g_dev_pbm; +extern u8g_dev_t u8g_dev_pbm_8h1; +extern u8g_dev_t u8g_dev_pbm_8h2; /* grayscale simulation */ + +/* Size: 128x64 monochrom, no output, used for performance measure */ +extern u8g_dev_t u8g_dev_gprof; + +/* Display: EA DOGS102, Size: 102x64 monochrom */ +extern u8g_dev_t u8g_dev_uc1701_dogs102_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_dogs102_hw_spi; + +/* Display: Mini12864 (dealextreme), Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_uc1701_mini12864_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_mini12864_hw_spi; + +/* Display: EA DOGM132, Size: 128x32 monochrom */ +extern u8g_dev_t u8g_dev_st7565_dogm132_sw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm132_hw_spi; + +/* Display: EA DOGM128, Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_st7565_dogm128_sw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm128_hw_spi; +/* Display: Topway LM6063 128x64 */ +extern u8g_dev_t u8g_dev_st7565_lm6063_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6063_hw_spi; +/* Display: Topway LM6059 128x64 (Adafruit) */ +extern u8g_dev_t u8g_dev_st7565_lm6059_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6059_hw_spi; +/* Display: Newhaven NHD-C12864 */ +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_sw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_hw_spi; +/* Display: Newhaven NHD-C12832 */ +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_sw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_parallel; +/* Display: Displaytech 64128N */ +extern u8g_dev_t u8g_dev_st7565_64128n_sw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_hw_spi; + +/* dfrobot 128x64 Graphic LCD (SKU:FIT0021) */ +extern u8g_dev_t u8g_dev_st7920_128x64_sw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_hw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_8bit; + +extern u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_4x_8bit; + +/* NHD-19232WG */ +extern u8g_dev_t u8g_dev_st7920_192x32_sw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_hw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_8bit; + +extern u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_4x_8bit; + +/* CrystalFontz CFAG20232 */ +extern u8g_dev_t u8g_dev_st7920_202x32_sw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_hw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_8bit; + +extern u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_4x_8bit; + +/* LC7981 160x80 display */ +extern u8g_dev_t u8g_dev_lc7981_160x80_8bit; +/* LC7981 240x64 display */ +extern u8g_dev_t u8g_dev_lc7981_240x64_8bit; +/* LC7981 240x128 display */ +extern u8g_dev_t u8g_dev_lc7981_240x128_8bit; +/* LC7981 320x64 display */ +extern u8g_dev_t u8g_dev_lc7981_320x64_8bit; + +/* T6963, all t6963 devices have double page (2x) */ +extern u8g_dev_t u8g_dev_t6963_240x128_8bit; +extern u8g_dev_t u8g_dev_t6963_240x64_8bit; +extern u8g_dev_t u8g_dev_t6963_128x64_8bit; + +/* Display: EA DOGXL160, Size: 160x104 monochrom & gray level */ +extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_hw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_hw_spi; + +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi; + +/* Display: Generic KS0108b, Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_ks0108_128x64; /* official Arduino Library interface */ +extern u8g_dev_t u8g_dev_ks0108_128x64_fast; /* faster, but uses private tables from the Arduino Library */ + +/* Nokia 84x48 Display with PCD8544 */ +extern u8g_dev_t u8g_dev_pcd8544_84x48_sw_spi; +extern u8g_dev_t u8g_dev_tls8204_84x48_sw_spi; + +/* Nokia 96x65 Display with PCF8812 */ +extern u8g_dev_t u8g_dev_pcf8812_96x65_sw_spi; + +/* NHD-2.7-12864UCY3 OLED Display with SSD1325 Controller */ +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_parallel; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_hw_spi; + +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi; + +/* LY120 OLED with SSD1327 Controller (tested with Seeedstudio module) */ +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_i2c; + +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c; + +/* NHD-3.12-25664 OLED Display with SSD1322 Controller */ +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi; + +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi; + +/* OLED 128x64 Display with SSD1306 Controller */ +extern u8g_dev_t u8g_dev_ssd1306_128x64_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_i2c; + +/* OLED 128x64 Display with SSD1309 Controller */ +extern u8g_dev_t u8g_dev_ssd1309_128x64_sw_spi; +extern u8g_dev_t u8g_dev_ssd1309_128x64_hw_spi; +extern u8g_dev_t u8g_dev_ssd1309_128x64_i2c; + +/* OLED 128x32 Display with SSD1306 Controller */ +extern u8g_dev_t u8g_dev_ssd1306_128x32_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_i2c; + +/* experimental 65K TFT with st7687 controller */ +extern u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi; +extern u8g_dev_t u8g_dev_st7687_c144mvgd_8bit; + +/* SBN1661/SED1520 display with 122x32 */ +extern u8g_dev_t u8g_dev_sbn1661_122x32; + +/* flip disc matrix */ +extern u8g_dev_t u8g_dev_flipdisc_2x7; +void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2)); + +/* ILI9325D based TFT */ +extern u8g_dev_t u8g_dev_ili9325d_320x240_8bit; + +/* u8g_virtual_screen.c */ +extern u8g_dev_t u8g_dev_vs; + + +/*===============================================================*/ +/* device messages */ + +struct _u8g_dev_arg_pixel_t +{ + u8g_uint_t x, y; /* will be modified */ + uint8_t pixel; /* will be modified */ + uint8_t dir; + uint8_t color; +}; +/* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */ /* forward decl */ + +struct _u8g_dev_arg_bbx_t +{ + u8g_uint_t x, y, w, h; +}; +/* typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; */ /* forward decl */ + +struct _u8g_box_t +{ + u8g_uint_t x0, y0, x1, y1; +}; +/* typedef struct _u8g_box_t u8g_box_t; */ /* forward decl */ + + +#define U8G_DEV_MSG_INIT 10 +#define U8G_DEV_MSG_STOP 11 + +/* arg: pointer to uint8_t, contranst value between 0 and 255 */ +#define U8G_DEV_MSG_CONTRAST 15 + +#define U8G_DEV_MSG_SLEEP_ON 16 +#define U8G_DEV_MSG_SLEEP_OFF 17 + +#define U8G_DEV_MSG_PAGE_FIRST 20 +#define U8G_DEV_MSG_PAGE_NEXT 21 + +/* arg: u8g_dev_arg_bbx_t * */ +/* new algorithm with U8G_DEV_MSG_GET_PAGE_BOX makes this msg obsolete */ +/* #define U8G_DEV_MSG_IS_BBX_INTERSECTION 22 */ + +/* arg: u8g_box_t *, fill structure with current page properties */ +#define U8G_DEV_MSG_GET_PAGE_BOX 23 + +/* +#define U8G_DEV_MSG_PRIMITIVE_START 30 +#define U8G_DEV_MSG_PRIMITIVE_END 31 +*/ + +/* arg: u8g_dev_arg_pixel_t * */ +#define U8G_DEV_MSG_SET_PIXEL 50 +#define U8G_DEV_MSG_SET_8PIXEL 59 + +#define U8G_DEV_MSG_SET_COLOR_INDEX 60 + +#define U8G_DEV_MSG_SET_XY_CB 61 + +#define U8G_DEV_MSG_GET_WIDTH 70 +#define U8G_DEV_MSG_GET_HEIGHT 71 +#define U8G_DEV_MSG_GET_MODE 72 + +/*===============================================================*/ +/* device modes */ +#define U8G_MODE(is_color, bits_per_pixel) (((is_color)<<4)|(bits_per_pixel)) + +#define U8G_MODE_UNKNOWN 0 +#define U8G_MODE_BW U8G_MODE(0, 1) +#define U8G_MODE_GRAY2BIT U8G_MODE(0, 2) +#define U8G_MODE_R3G3B2 U8G_MODE(1, 8) + +#define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&15) +#define U8G_MODE_IS_COLOR(mode) (((mode)&16)==0?0:1) + + +/*===============================================================*/ +/* com options */ + +/* uncomment the following line for Atmega HW SPI double speed, issue 89 */ +/* #define U8G_HW_SPI_2X 1 */ + +/* com messages */ + +#define U8G_COM_MSG_STOP 0 +#define U8G_COM_MSG_INIT 1 + +#define U8G_COM_MSG_ADDRESS 2 + +/* CHIP_SELECT argument: number of the chip which needs to be activated, so this is more like high active */ +#define U8G_COM_MSG_CHIP_SELECT 3 + +#define U8G_COM_MSG_RESET 4 + +#define U8G_COM_MSG_WRITE_BYTE 5 +#define U8G_COM_MSG_WRITE_SEQ 6 +#define U8G_COM_MSG_WRITE_SEQ_P 7 + + +/* com driver */ +uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_null.c */ +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_std_sw_spi.c */ +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_sw_spi.c */ +uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_hw_spi.c */ +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_spi.c */ +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_hw_spi.c */ +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_parallel.c */ +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_fast_parallel.c */ +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_port_d_wr.c */ +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_no_en_parallel.c */ +uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_ssd_i2c.c */ +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_t6963.c */ + + +uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_hw_spi.c */ +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_sw_spi.c */ +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_st7920_spi.c */ +uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_parallel.c */ + + +/* + Translation of system specific com drives to generic com names + At the moment, the following generic com drives are available + U8G_COM_HW_SPI + U8G_COM_SW_SPI + U8G_COM_PARALLEL + U8G_COM_T6963 + U8G_COM_FAST_PARALLEL + U8G_COM_SSD_I2C + +defined(__18CXX) || defined(__PIC32MX) + +*/ +/* ==== HW SPI, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn +#elif defined(__18CXX) || defined(__PIC32MX) +#define U8G_COM_HW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#endif +#endif +/* ==== HW SPI, not Arduino ====*/ +#ifndef U8G_COM_HW_SPI +#if defined(__AVR__) +#define U8G_COM_HW_SPI u8g_com_atmega_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_atmega_st7920_hw_spi_fn +#endif +#endif +#ifndef U8G_COM_HW_SPI +#define U8G_COM_HW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#endif + +/* ==== SW SPI, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#elif defined(__18CXX) || defined(__PIC32MX) +#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#elif defined(__arm__) /* Arduino Due */ +#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#endif +#endif + +#ifndef U8G_COM_SW_SPI +/* ==== SW SPI, not Arduino ====*/ +#if defined(__AVR__) +#define U8G_COM_SW_SPI u8g_com_atmega_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_atmega_st7920_sw_spi_fn +#endif +#endif +#ifndef U8G_COM_SW_SPI +#define U8G_COM_SW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_null_fn +#endif + +/* ==== Parallel iinterface, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_arduino_fast_parallel_fn +#define U8G_COM_T6963 u8g_com_arduino_t6963_fn +#else /* Arduino Due, Chipkit PIC32 */ +#define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif +#endif +#ifndef U8G_COM_PARALLEL +#if defined(__AVR__) +#define U8G_COM_PARALLEL u8g_com_atmega_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_atmega_parallel_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif +#endif +#ifndef U8G_COM_PARALLEL +#define U8G_COM_PARALLEL u8g_com_null_fn +#define U8G_COM_FAST_PARALLEL u8g_com_null_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif + +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn +#endif +#endif + +#ifndef U8G_COM_SSD_I2C +#if defined(__AVR__) +/* AVR variant can use the arduino version at the moment */ +#define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn +#endif +#endif +#ifndef U8G_COM_SSD_I2C +#define U8G_COM_SSD_I2C u8g_com_null_fn +#endif + + + +/*===============================================================*/ +/* com api */ +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev); +void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev); +void u8g_EnableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */ +void u8g_DisableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */ +void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs); +void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev); +void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev); +void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address); +uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val); +uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq); +uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq); + + + +#define U8G_ESC_DLY(x) 255, ((x) & 0x7f) +#define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f)) +#define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f)) +#define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f)) +#define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01)) +#define U8G_ESC_END 255, 254 +#define U8G_ESC_255 255, 255 +//uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, u8g_pgm_uint8_t *esc_seq); +uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq); + + +/* u8g_com_api_16gr.c */ +uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b); +uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr); +uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b); +uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr); + + +/*===============================================================*/ +/* u8g_arduino_common.c */ +void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value); +void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g); + +/*===============================================================*/ +/* u8g_com_io.c */ + +/* create internal number from port and pin */ +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos); +#define PN(port,bitpos) u8g_Pin(port,bitpos) + +/* low level procedures */ +void u8g_SetPinOutput(uint8_t internal_pin_number); +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level); +void u8g_SetPinInput(uint8_t internal_pin_number); +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number); + +/* u8g level procedures, expect U8G_PI_xxx macro */ +void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi); +void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level); + + +/*===============================================================*/ +/* page */ +struct _u8g_page_t +{ + u8g_uint_t page_height; + u8g_uint_t total_height; + u8g_uint_t page_y0; + u8g_uint_t page_y1; + uint8_t page; +}; +typedef struct _u8g_page_t u8g_page_t; + +void u8g_page_First(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */ +void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) U8G_NOINLINE; /* u8g_page.c */ +uint8_t u8g_page_Next(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */ + +/*===============================================================*/ +/* page buffer (pb) */ + +struct _u8g_pb_t +{ + u8g_page_t p; + u8g_uint_t width; /* pixel width */ + void *buf; +}; +typedef struct _u8g_pb_t u8g_pb_t; + + +/* u8g_pb.c */ +void u8g_pb_Clear(u8g_pb_t *b); +uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx); +void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box); +uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel); +uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev); + +/* + note on __attribute__ ((nocommon)) + AVR scripts often use --gc-sections on the linker to remove unused section. + This works fine for initialed data and text sections. In principle .bss is also + handled, but the name##_pb definition is not removed. Reason is, that + array definitions are placed in the COMMON section, by default + The attribute "nocommon" removes this automatic assignment to the + COMMON section and directly puts it into .bss. As a result, if more + than one buffer is defined in one file, then it will be removed with --gc-sections + + .. not sure if Arduino IDE uses -fno-common... if yes, then the attribute is + redundant. +*/ +#define U8G_PB_DEV(name, width, height, page_height, dev_fn, com_fn) \ +uint8_t name##_buf[width] U8G_NOCOMMON ; \ +u8g_pb_t name##_pb = { {page_height, height, 0, 0, 0}, width, name##_buf}; \ +u8g_dev_t name = { dev_fn, &name##_pb, com_fn } + + +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8v1_Clear(u8g_pb_t *b) U8G_NOINLINE; + +uint8_t u8g_pb8v1_IsYIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb8v1_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb8v1_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev); + +uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16v1.c */ +uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb14v1.c */ +uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb8v2.c */ +uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16v2.c (double memory of pb8v2) */ +uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +/* u8g_pb8h1.c */ +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16h1.c */ +uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb32h1.c */ +uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +/* u8g_pb8h2.c 8 pixel rows, byte has horzontal orientation */ +uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16h2.c */ +uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + + +/* u8g_pb8h1f.c */ +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb8h8.c */ +uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + + +/*===============================================================*/ +/* u8g_ll_api.c */ + +/* cursor draw callback */ +typedef void (*u8g_draw_cursor_fn)(u8g_t *u8g); + +/* vertical reference point calculation callback */ +typedef u8g_uint_t (*u8g_font_calc_vref_fnptr)(u8g_t *u8g); + +/* state backup and restore procedure */ +typedef void (*u8g_state_cb)(uint8_t msg); + + +/* PI = Pin Index */ + +/* reset pin, usually optional */ +#define U8G_PI_RESET 0 + +/* address / data or instruction */ +#define U8G_PI_A0 1 +#define U8G_PI_DI 1 + +/* chip select line */ +#define U8G_PI_CS 2 +#define U8G_PI_CS1 2 +#define U8G_PI_CS2 3 +/* Feb 2013: A0 state moved from 7 to 3 for t6963 controller*/ +#define U8G_PI_A0_STATE 3 + +/* enable / clock signal */ +#define U8G_PI_EN 4 +#define U8G_PI_CS_STATE 4 +#define U8G_PI_SCK 4 +#define U8G_PI_SCL 4 +#define U8G_PI_RD 4 + + +/* data pins, shared with SPI and I2C pins */ +#define U8G_PI_D0 5 +#define U8G_PI_MOSI 5 +#define U8G_PI_SDA 5 +#define U8G_PI_D1 6 +#define U8G_PI_MISO 6 +#define U8G_PI_D2 7 +#define U8G_PI_D3 8 +#define U8G_PI_SET_A0 8 +#define U8G_PI_D4 9 +#define U8G_PI_D5 10 +#define U8G_PI_I2C_OPTION 11 +#define U8G_PI_D6 11 +#define U8G_PI_D7 12 + +/* read/write pin, must be the last pin in the list, this means U8G_PIN_LIST_LEN = U8G_PI_RW + 1*/ +#define U8G_PI_WR 13 +#define U8G_PI_RW 13 + +#define U8G_PIN_LIST_LEN 14 + + +#define U8G_PIN_NONE 255 + +#define U8G_FONT_HEIGHT_MODE_TEXT 0 +#define U8G_FONT_HEIGHT_MODE_XTEXT 1 +#define U8G_FONT_HEIGHT_MODE_ALL 2 + +struct _u8g_t +{ + u8g_uint_t width; + u8g_uint_t height; + + + u8g_dev_t *dev; /* first device in the device chain */ + const u8g_pgm_uint8_t *font; /* regular font for all text procedures */ + const u8g_pgm_uint8_t *cursor_font; /* special font for cursor procedures */ + uint8_t cursor_fg_color, cursor_bg_color; + uint8_t cursor_encoding; + uint8_t mode; /* display mode, one of U8G_MODE_xxx */ + u8g_uint_t cursor_x; + u8g_uint_t cursor_y; + u8g_draw_cursor_fn cursor_fn; + + int8_t glyph_dx; + int8_t glyph_x; + int8_t glyph_y; + uint8_t glyph_width; + uint8_t glyph_height; + + u8g_font_calc_vref_fnptr font_calc_vref; + uint8_t font_height_mode; + int8_t font_ref_ascent; + int8_t font_ref_descent; + uint8_t font_line_spacing_factor; /* line_spacing = factor * (ascent - descent) / 64 */ + uint8_t line_spacing; + + u8g_dev_arg_pixel_t arg_pixel; + /* uint8_t color_index; */ + + uint8_t pin_list[U8G_PIN_LIST_LEN]; + + u8g_state_cb state_cb; + + u8g_box_t current_page; /* current box of the visible page */ + +}; + +#define u8g_GetFontAscent(u8g) ((u8g)->font_ref_ascent) +#define u8g_GetFontDescent(u8g) ((u8g)->font_ref_descent) +#define u8g_GetFontLineSpacing(u8g) ((u8g)->line_spacing) + +uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev); +void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev); +uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev); +uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast); +void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y); +void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); +uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); /* obsolete */ +u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev); +u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev); + +void u8g_UpdateDimension(u8g_t *u8g); +uint8_t u8g_Begin(u8g_t *u8g); /* reset device, put it into default state and call u8g_UpdateDimension() */ +uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev); /* only usefull if the device only as hardcoded ports */ +uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset); +uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset); +uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options); /* use U8G_I2C_OPT_NONE as options */ +uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset); +uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset); +uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset); +void u8g_FirstPage(u8g_t *u8g); +uint8_t u8g_NextPage(u8g_t *u8g); +uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast); +void u8g_SleepOn(u8g_t *u8g); +void u8g_SleepOff(u8g_t *u8g); +void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y); +void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); + +uint8_t u8g_Stop(u8g_t *u8g); +void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx); +uint8_t u8g_GetColorIndex(u8g_t *u8g); + +uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g); +void u8g_SetDefaultForegroundColor(u8g_t *u8g); + +uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g); +void u8g_SetDefaultBackgroundColor(u8g_t *u8g); + +uint8_t u8g_GetDefaultMidColor(u8g_t *u8g); +void u8g_SetDefaultMidColor(u8g_t *u8g); + +#define u8g_GetWidth(u8g) ((u8g)->width) +#define u8g_GetHeight(u8g) ((u8g)->height) +#define u8g_GetMode(u8g) ((u8g)->mode) +/* + U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(u8g)) + U8G_MODE_IS_COLOR(u8g_GetMode(u8g)) +*/ + +/* u8g_state.c */ +#define U8G_STATE_ENV_IDX 0 +#define U8G_STATE_U8G_IDX 1 +#define U8G_STATE_RESTORE 0 +#define U8G_STATE_BACKUP 1 +#define U8G_STATE_MSG_COMPOSE(cmd,idx) (((cmd)<<1) | (idx)) + +#define U8G_STATE_MSG_RESTORE_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_ENV_IDX) +#define U8G_STATE_MSG_BACKUP_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_ENV_IDX) +#define U8G_STATE_MSG_RESTORE_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_U8G_IDX) +#define U8G_STATE_MSG_BACKUP_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_U8G_IDX) + +#define U8G_STATE_MSG_GET_IDX(msg) ((msg)&1) +#define U8G_STATE_MSG_IS_BACKUP(msg) ((msg)&2) + + + +void u8g_state_dummy_cb(uint8_t msg); +void u8g_backup_avr_spi(uint8_t msg); /* backup SPI state on atmel avr controller */ + +void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb); + +/* u8g_clip.c */ + +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); + + +/* u8g_rot.c */ + +void u8g_UndoRotation(u8g_t *u8g); +void u8g_SetRot90(u8g_t *u8g); +void u8g_SetRot180(u8g_t *u8g); +void u8g_SetRot270(u8g_t *u8g); + +/* u8g_scale.c */ + +void u8g_UndoScale(u8g_t *u8g); +void u8g_SetScale2x2(u8g_t *u8g); + + +/* u8g_font.c */ + +size_t u8g_font_GetSize(const void *font); +uint8_t u8g_font_GetFontStartEncoding(const void *font) U8G_NOINLINE; +uint8_t u8g_font_GetFontEndEncoding(const void *font) U8G_NOINLINE; + +void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font); + +uint8_t u8g_GetFontBBXWidth(u8g_t *u8g); +uint8_t u8g_GetFontBBXHeight(u8g_t *u8g); +int8_t u8g_GetFontBBXOffX(u8g_t *u8g); +int8_t u8g_GetFontBBXOffY(u8g_t *u8g); +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g); + +uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding); +int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding); + +int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); /* used by u8g_cursor.c */ + +int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding); +int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding); + +u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); + +u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s); + + +u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); + + +void u8g_SetFontRefHeightText(u8g_t *u8g); +void u8g_SetFontRefHeightExtendedText(u8g_t *u8g); +void u8g_SetFontRefHeightAll(u8g_t *u8g); +void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor); + +u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g); + +void u8g_SetFontPosBaseline(u8g_t *u8g); +void u8g_SetFontPosBottom(u8g_t *u8g); +void u8g_SetFontPosCenter(u8g_t *u8g); +void u8g_SetFontPosTop(u8g_t *u8g); + + +u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s); +u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s); +int8_t u8g_GetStrX(u8g_t *u8g, const char *s); +int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s); +u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s); + +u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s); + +void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); +void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); + +/* u8g_rect.c */ + +void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; + +void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w); +void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w); +void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); +void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); + +void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r); +void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r); + +/* u8g_bitmap.c */ + +void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap); +void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap); +void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap); +void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap); + +void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap); +void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap); + + +/* u8g_line.c */ +void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2); + + +/* u8g_circle.c */ + +/* the following, commented code has been rewritten or is not yet finished +#define U8G_CIRC_UPPER_RIGHT 0x01 +#define U8G_CIRC_UPPER_LEFT 0x02 +#define U8G_CIRC_LOWER_LEFT 0x04 +#define U8G_CIRC_LOWER_RIGHT 0x08 +#define U8G_CIRC_ALL (U8G_CIRC_UPPER_RIGHT|U8G_CIRC_UPPER_LEFT|U8G_CIRC_LOWER_RIGHT|U8G_CIRC_LOWER_LEFT) +void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1); +*/ + +#define U8G_DRAW_UPPER_RIGHT 0x01 +#define U8G_DRAW_UPPER_LEFT 0x02 +#define U8G_DRAW_LOWER_LEFT 0x04 +#define U8G_DRAW_LOWER_RIGHT 0x08 +#define U8G_DRAW_ALL (U8G_DRAW_UPPER_RIGHT|U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_RIGHT|U8G_DRAW_LOWER_LEFT) + +void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE; +void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE; + +void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); + +/* u8g_clip.c */ +uint8_t u8g_is_box_bbx_intersection(u8g_box_t *box, u8g_dev_arg_bbx_t *bbx); + + +/* u8g_cursor.c */ +void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font); +void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding); +void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y); +void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg); +void u8g_EnableCursor(u8g_t *u8g); +void u8g_DisableCursor(u8g_t *u8g); +void u8g_DrawCursor(u8g_t *u8g); + + + +/*===============================================================*/ +/* u8g_virtual_screen.c */ +void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height); +uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g); + +/*===============================================================*/ +void st_Draw(uint8_t fps); +void st_Step(uint8_t player_pos, uint8_t is_auto_fire, uint8_t is_fire); + +/*===============================================================*/ +/* u8g_com_i2c.c */ + +/* options for u8g_i2c_init() */ +#define U8G_I2C_OPT_NONE 0 + +/* retrun values from u8g_twi_get_error() */ +#define U8G_I2C_ERR_NONE 0x00 +/* the following values are bit masks */ +#define U8G_I2C_ERR_TIMEOUT 0x01 +#define U8G_I2C_ERR_BUS 0x02 + +void u8g_i2c_clear_error(void) U8G_NOINLINE; +uint8_t u8g_i2c_get_error(void) U8G_NOINLINE; +uint8_t u8g_i2c_get_err_pos(void) U8G_NOINLINE; +void u8g_i2c_init(uint8_t options) U8G_NOINLINE; /* use U8G_I2C_OPT_NONE as options */ +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) U8G_NOINLINE; +uint8_t u8g_i2c_start(uint8_t sla) U8G_NOINLINE; +uint8_t u8g_i2c_send_byte(uint8_t data) U8G_NOINLINE; +void u8g_i2c_stop(void) U8G_NOINLINE; + + +/*===============================================================*/ +/* u8g_u8toa.c */ +/* v = value, d = number of digits */ +const char *u8g_u8toa(uint8_t v, uint8_t d); + +/* u8g_u8toa.c */ +/* v = value, d = number of digits */ +const char *u8g_u16toa(uint16_t v, uint8_t d); + +/*===============================================================*/ +/* u8g_delay.c */ + +/* delay by the specified number of milliseconds */ +void u8g_Delay(uint16_t val); + +/* delay by one microsecond */ +void u8g_MicroDelay(void); + +/* delay by 10 microseconds */ +void u8g_10MicroDelay(void); + +/*===============================================================*/ +/* chessengine.c */ +#define CHESS_KEY_NONE 0 +#define CHESS_KEY_NEXT 1 +#define CHESS_KEY_PREV 2 +#define CHESS_KEY_SELECT 3 +#define CHESS_KEY_BACK 4 + +void chess_Init(u8g_t *u8g, uint8_t empty_body_color); +void chess_Draw(void); +void chess_Step(uint8_t keycode); + +/*===============================================================*/ +/* font definitions */ + +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_5[] U8G_SECTION(".progmem.u8g_font_m2icon_5"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_SECTION(".progmem.u8g_font_m2icon_7"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_SECTION(".progmem.u8g_font_m2icon_9"); + +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_SECTION(".progmem.u8g_font_u8glib_4"); +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_SECTION(".progmem.u8g_font_u8glib_4r"); + + +extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_SECTION(".progmem.u8g_font_6x12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_SECTION(".progmem.u8g_font_6x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_SECTION(".progmem.u8g_font_7x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_SECTION(".progmem.u8g_font_8x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_SECTION(".progmem.u8g_font_9x15_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_SECTION(".progmem.u8g_font_9x18_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_SECTION(".progmem.u8g_font_cu12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_SECTION(".progmem.u8g_font_unifont_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_SECTION(".progmem.u8g_font_10x20_75r"); + +extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_SECTION(".progmem.u8g_font_10x20_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_SECTION(".progmem.u8g_font_10x20_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_SECTION(".progmem.u8g_font_10x20"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_SECTION(".progmem.u8g_font_10x20r"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_SECTION(".progmem.u8g_font_4x6"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_SECTION(".progmem.u8g_font_4x6r"); +//extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_SECTION(".progmem.u8g_font_4x6n"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_SECTION(".progmem.u8g_font_5x7"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_SECTION(".progmem.u8g_font_5x7r"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_SECTION(".progmem.u8g_font_5x8"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_SECTION(".progmem.u8g_font_5x8r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_SECTION(".progmem.u8g_font_6x10"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_SECTION(".progmem.u8g_font_6x10r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_SECTION(".progmem.u8g_font_6x12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_SECTION(".progmem.u8g_font_6x12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_SECTION(".progmem.u8g_font_6x12"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_SECTION(".progmem.u8g_font_6x12r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_SECTION(".progmem.u8g_font_6x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_SECTION(".progmem.u8g_font_6x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_SECTION(".progmem.u8g_font_6x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_SECTION(".progmem.u8g_font_6x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_SECTION(".progmem.u8g_font_6x13"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_SECTION(".progmem.u8g_font_6x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_SECTION(".progmem.u8g_font_6x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_SECTION(".progmem.u8g_font_6x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_SECTION(".progmem.u8g_font_7x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_SECTION(".progmem.u8g_font_7x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_SECTION(".progmem.u8g_font_7x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_SECTION(".progmem.u8g_font_7x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_SECTION(".progmem.u8g_font_7x13"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_SECTION(".progmem.u8g_font_7x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_SECTION(".progmem.u8g_font_7x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_SECTION(".progmem.u8g_font_7x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_SECTION(".progmem.u8g_font_7x14B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_SECTION(".progmem.u8g_font_7x14Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_SECTION(".progmem.u8g_font_7x14"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_SECTION(".progmem.u8g_font_7x14r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_SECTION(".progmem.u8g_font_8x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_SECTION(".progmem.u8g_font_8x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_SECTION(".progmem.u8g_font_8x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_SECTION(".progmem.u8g_font_8x13"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_SECTION(".progmem.u8g_font_8x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_SECTION(".progmem.u8g_font_8x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_SECTION(".progmem.u8g_font_8x13Or"); + +extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_SECTION(".progmem.u8g_font_9x15_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_SECTION(".progmem.u8g_font_9x15_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_SECTION(".progmem.u8g_font_9x15B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_SECTION(".progmem.u8g_font_9x15Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_SECTION(".progmem.u8g_font_9x15"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_SECTION(".progmem.u8g_font_9x15r"); + +extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_SECTION(".progmem.u8g_font_9x18_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_SECTION(".progmem.u8g_font_9x18_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_SECTION(".progmem.u8g_font_9x18B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_SECTION(".progmem.u8g_font_9x18"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_SECTION(".progmem.u8g_font_9x18Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_SECTION(".progmem.u8g_font_9x18r"); + +extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_SECTION(".progmem.u8g_font_cursor"); +extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_SECTION(".progmem.u8g_font_cursorr"); +extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_SECTION(".progmem.u8g_font_micro"); + +extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_SECTION(".progmem.u8g_font_cu12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_SECTION(".progmem.u8g_font_cu12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_SECTION(".progmem.u8g_font_cu12"); + +/* + Free-Universal Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_fub11[] U8G_SECTION(".progmem.u8g_font_fub11"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_SECTION(".progmem.u8g_font_fub11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_SECTION(".progmem.u8g_font_fub11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_SECTION(".progmem.u8g_font_fub14"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_SECTION(".progmem.u8g_font_fub14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_SECTION(".progmem.u8g_font_fub14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_SECTION(".progmem.u8g_font_fub17"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_SECTION(".progmem.u8g_font_fub17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_SECTION(".progmem.u8g_font_fub17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_SECTION(".progmem.u8g_font_fub20"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_SECTION(".progmem.u8g_font_fub20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_SECTION(".progmem.u8g_font_fub20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_SECTION(".progmem.u8g_font_fub25"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_SECTION(".progmem.u8g_font_fub25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_SECTION(".progmem.u8g_font_fub25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_SECTION(".progmem.u8g_font_fub30"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_SECTION(".progmem.u8g_font_fub30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_SECTION(".progmem.u8g_font_fub30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_SECTION(".progmem.u8g_font_fub35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_SECTION(".progmem.u8g_font_fub42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_SECTION(".progmem.u8g_font_fub49n"); + +/* + Free-Universal Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_fur11[] U8G_SECTION(".progmem.u8g_font_fur11"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_SECTION(".progmem.u8g_font_fur11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_SECTION(".progmem.u8g_font_fur11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_SECTION(".progmem.u8g_font_fur14"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_SECTION(".progmem.u8g_font_fur14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_SECTION(".progmem.u8g_font_fur14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_SECTION(".progmem.u8g_font_fur17"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_SECTION(".progmem.u8g_font_fur17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_SECTION(".progmem.u8g_font_fur17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_SECTION(".progmem.u8g_font_fur20"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_SECTION(".progmem.u8g_font_fur20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_SECTION(".progmem.u8g_font_fur20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_SECTION(".progmem.u8g_font_fur25"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_SECTION(".progmem.u8g_font_fur25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_SECTION(".progmem.u8g_font_fur25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_SECTION(".progmem.u8g_font_fur30"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_SECTION(".progmem.u8g_font_fur30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_SECTION(".progmem.u8g_font_fur30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_SECTION(".progmem.u8g_font_fur35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_SECTION(".progmem.u8g_font_fur42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_SECTION(".progmem.u8g_font_fur49n"); + +/* + Gentium Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11[] U8G_SECTION(".progmem.u8g_font_gdb11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_SECTION(".progmem.u8g_font_gdb12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_SECTION(".progmem.u8g_font_gdb14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_SECTION(".progmem.u8g_font_gdb17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_SECTION(".progmem.u8g_font_gdb20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_SECTION(".progmem.u8g_font_gdb25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_SECTION(".progmem.u8g_font_gdb30"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_SECTION(".progmem.u8g_font_gdb11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_SECTION(".progmem.u8g_font_gdb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_SECTION(".progmem.u8g_font_gdb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_SECTION(".progmem.u8g_font_gdb17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_SECTION(".progmem.u8g_font_gdb20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_SECTION(".progmem.u8g_font_gdb25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_SECTION(".progmem.u8g_font_gdb30r"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_SECTION(".progmem.u8g_font_gdb11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_SECTION(".progmem.u8g_font_gdb12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_SECTION(".progmem.u8g_font_gdb14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_SECTION(".progmem.u8g_font_gdb17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_SECTION(".progmem.u8g_font_gdb20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_SECTION(".progmem.u8g_font_gdb25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_SECTION(".progmem.u8g_font_gdb30n"); + +/* + Gentium Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9[] U8G_SECTION(".progmem.u8g_font_gdr9"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_SECTION(".progmem.u8g_font_gdr10"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_SECTION(".progmem.u8g_font_gdr11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_SECTION(".progmem.u8g_font_gdr12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_SECTION(".progmem.u8g_font_gdr14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_SECTION(".progmem.u8g_font_gdr17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_SECTION(".progmem.u8g_font_gdr20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_SECTION(".progmem.u8g_font_gdr25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_SECTION(".progmem.u8g_font_gdr30"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_SECTION(".progmem.u8g_font_gdr9r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_SECTION(".progmem.u8g_font_gdr10r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_SECTION(".progmem.u8g_font_gdr11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_SECTION(".progmem.u8g_font_gdr12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_SECTION(".progmem.u8g_font_gdr14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_SECTION(".progmem.u8g_font_gdr17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_SECTION(".progmem.u8g_font_gdr20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_SECTION(".progmem.u8g_font_gdr25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_SECTION(".progmem.u8g_font_gdr30r"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_SECTION(".progmem.u8g_font_gdr9n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_SECTION(".progmem.u8g_font_gdr10n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_SECTION(".progmem.u8g_font_gdr11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_SECTION(".progmem.u8g_font_gdr12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_SECTION(".progmem.u8g_font_gdr14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_SECTION(".progmem.u8g_font_gdr17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_SECTION(".progmem.u8g_font_gdr20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_SECTION(".progmem.u8g_font_gdr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_SECTION(".progmem.u8g_font_gdr30n"); + +/* + Old-Standard Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_osb18[] U8G_SECTION(".progmem.u8g_font_osb18"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_SECTION(".progmem.u8g_font_osb21"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_SECTION(".progmem.u8g_font_osb26"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_SECTION(".progmem.u8g_font_osb29"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_SECTION(".progmem.u8g_font_osb35"); + +extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_SECTION(".progmem.u8g_font_osb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_SECTION(".progmem.u8g_font_osb21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_SECTION(".progmem.u8g_font_osb26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_SECTION(".progmem.u8g_font_osb29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_SECTION(".progmem.u8g_font_osb35r"); + +extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_SECTION(".progmem.u8g_font_osb18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_SECTION(".progmem.u8g_font_osb21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_SECTION(".progmem.u8g_font_osb26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_SECTION(".progmem.u8g_font_osb29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_SECTION(".progmem.u8g_font_osb35n"); + +/* + Old-Standard Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_osr18[] U8G_SECTION(".progmem.u8g_font_osr18"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_SECTION(".progmem.u8g_font_osr21"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_SECTION(".progmem.u8g_font_osr26"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_SECTION(".progmem.u8g_font_osr29"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_SECTION(".progmem.u8g_font_osr35"); + +extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_SECTION(".progmem.u8g_font_osr18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_SECTION(".progmem.u8g_font_osr21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_SECTION(".progmem.u8g_font_osr26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_SECTION(".progmem.u8g_font_osr29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_SECTION(".progmem.u8g_font_osr35r"); + +extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_SECTION(".progmem.u8g_font_osr18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_SECTION(".progmem.u8g_font_osr21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_SECTION(".progmem.u8g_font_osr26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_SECTION(".progmem.u8g_font_osr29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_SECTION(".progmem.u8g_font_osr35n"); + +//extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_SECTION(".progmem.u8g_font_osr41"); + +/* GNU unifont */ + +extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_SECTION(".progmem.u8g_font_unifont_18_19"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_SECTION(".progmem.u8g_font_unifont_72_73"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_SECTION(".progmem.u8g_font_unifont_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_SECTION(".progmem.u8g_font_unifont_76"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_SECTION(".progmem.u8g_font_unifont_77"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_SECTION(".progmem.u8g_font_unifont_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_SECTION(".progmem.u8g_font_unifont_86"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_SECTION(".progmem.u8g_font_unifont"); +extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_SECTION(".progmem.u8g_font_unifontr"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_SECTION(".progmem.u8g_font_unifont_0_8"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_SECTION(".progmem.u8g_font_unifont_2_3"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_SECTION(".progmem.u8g_font_unifont_4_5"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_SECTION(".progmem.u8g_font_unifont_8_9"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_SECTION(".progmem.u8g_font_unifont_12_13"); + + +/* 04b fonts */ + +extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_SECTION(".progmem.u8g_font_04b_03b"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_SECTION(".progmem.u8g_font_04b_03bn"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_SECTION(".progmem.u8g_font_04b_03br"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_SECTION(".progmem.u8g_font_04b_03"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_SECTION(".progmem.u8g_font_04b_03n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_SECTION(".progmem.u8g_font_04b_03r"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_SECTION(".progmem.u8g_font_04b_24"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_SECTION(".progmem.u8g_font_04b_24n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_SECTION(".progmem.u8g_font_04b_24r"); + +/* orgdot fonts */ + +extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_SECTION(".progmem.u8g_font_orgv01"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_SECTION(".progmem.u8g_font_orgv01r"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_SECTION(".progmem.u8g_font_orgv01n"); + +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_SECTION(".progmem.u8g_font_fixed_v0"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_SECTION(".progmem.u8g_font_fixed_v0r"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_SECTION(".progmem.u8g_font_fixed_v0n"); + +extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_SECTION(".progmem.u8g_font_tpssb"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_SECTION(".progmem.u8g_font_tpssbr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_SECTION(".progmem.u8g_font_tpssbn"); + +extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_SECTION(".progmem.u8g_font_tpss"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_SECTION(".progmem.u8g_font_tpssr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_SECTION(".progmem.u8g_font_tpssn"); + +/* contributed */ + +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_SECTION(".progmem.u8g_font_freedoomr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_SECTION(".progmem.u8g_font_freedoomr10r"); + +/* adobe X11 */ +extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_SECTION(".progmem.u8g_font_courB08"); +extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_SECTION(".progmem.u8g_font_courB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_SECTION(".progmem.u8g_font_courB10"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_SECTION(".progmem.u8g_font_courB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_SECTION(".progmem.u8g_font_courB12"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_SECTION(".progmem.u8g_font_courB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_SECTION(".progmem.u8g_font_courB14"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_SECTION(".progmem.u8g_font_courB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_SECTION(".progmem.u8g_font_courB18"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_SECTION(".progmem.u8g_font_courB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_SECTION(".progmem.u8g_font_courB24"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_SECTION(".progmem.u8g_font_courB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_SECTION(".progmem.u8g_font_courB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_SECTION(".progmem.u8g_font_courR08"); +extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_SECTION(".progmem.u8g_font_courR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_SECTION(".progmem.u8g_font_courR10"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_SECTION(".progmem.u8g_font_courR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_SECTION(".progmem.u8g_font_courR12"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_SECTION(".progmem.u8g_font_courR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_SECTION(".progmem.u8g_font_courR14"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_SECTION(".progmem.u8g_font_courR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_SECTION(".progmem.u8g_font_courR18"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_SECTION(".progmem.u8g_font_courR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_SECTION(".progmem.u8g_font_courR24"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_SECTION(".progmem.u8g_font_courR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_SECTION(".progmem.u8g_font_courR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_SECTION(".progmem.u8g_font_helvB08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_SECTION(".progmem.u8g_font_helvB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_SECTION(".progmem.u8g_font_helvB10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_SECTION(".progmem.u8g_font_helvB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_SECTION(".progmem.u8g_font_helvB12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_SECTION(".progmem.u8g_font_helvB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_SECTION(".progmem.u8g_font_helvB14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_SECTION(".progmem.u8g_font_helvB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_SECTION(".progmem.u8g_font_helvB18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_SECTION(".progmem.u8g_font_helvB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_SECTION(".progmem.u8g_font_helvB24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_SECTION(".progmem.u8g_font_helvB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_SECTION(".progmem.u8g_font_helvB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_SECTION(".progmem.u8g_font_helvR08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_SECTION(".progmem.u8g_font_helvR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_SECTION(".progmem.u8g_font_helvR10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_SECTION(".progmem.u8g_font_helvR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_SECTION(".progmem.u8g_font_helvR12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_SECTION(".progmem.u8g_font_helvR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_SECTION(".progmem.u8g_font_helvR14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_SECTION(".progmem.u8g_font_helvR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_SECTION(".progmem.u8g_font_helvR18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_SECTION(".progmem.u8g_font_helvR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_SECTION(".progmem.u8g_font_helvR24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_SECTION(".progmem.u8g_font_helvR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_SECTION(".progmem.u8g_font_helvR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_SECTION(".progmem.u8g_font_ncenB08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_SECTION(".progmem.u8g_font_ncenB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_SECTION(".progmem.u8g_font_ncenB10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_SECTION(".progmem.u8g_font_ncenB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_SECTION(".progmem.u8g_font_ncenB12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_SECTION(".progmem.u8g_font_ncenB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_SECTION(".progmem.u8g_font_ncenB14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_SECTION(".progmem.u8g_font_ncenB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_SECTION(".progmem.u8g_font_ncenB18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_SECTION(".progmem.u8g_font_ncenB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_SECTION(".progmem.u8g_font_ncenB24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_SECTION(".progmem.u8g_font_ncenB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_SECTION(".progmem.u8g_font_ncenB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_SECTION(".progmem.u8g_font_ncenR08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_SECTION(".progmem.u8g_font_ncenR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_SECTION(".progmem.u8g_font_ncenR10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_SECTION(".progmem.u8g_font_ncenR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_SECTION(".progmem.u8g_font_ncenR12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_SECTION(".progmem.u8g_font_ncenR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_SECTION(".progmem.u8g_font_ncenR14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_SECTION(".progmem.u8g_font_ncenR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_SECTION(".progmem.u8g_font_ncenR18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_SECTION(".progmem.u8g_font_ncenR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_SECTION(".progmem.u8g_font_ncenR24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_SECTION(".progmem.u8g_font_ncenR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_SECTION(".progmem.u8g_font_ncenR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_SECTION(".progmem.u8g_font_symb08"); +extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_SECTION(".progmem.u8g_font_symb08r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_SECTION(".progmem.u8g_font_symb10"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_SECTION(".progmem.u8g_font_symb10r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_SECTION(".progmem.u8g_font_symb12"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_SECTION(".progmem.u8g_font_symb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_SECTION(".progmem.u8g_font_symb14"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_SECTION(".progmem.u8g_font_symb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_SECTION(".progmem.u8g_font_symb18"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_SECTION(".progmem.u8g_font_symb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_SECTION(".progmem.u8g_font_symb24"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_SECTION(".progmem.u8g_font_symb24r"); + +extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_SECTION(".progmem.u8g_font_timB08"); +extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_SECTION(".progmem.u8g_font_timB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_SECTION(".progmem.u8g_font_timB10"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_SECTION(".progmem.u8g_font_timB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_SECTION(".progmem.u8g_font_timB12"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_SECTION(".progmem.u8g_font_timB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_SECTION(".progmem.u8g_font_timB14"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_SECTION(".progmem.u8g_font_timB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_SECTION(".progmem.u8g_font_timB18"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_SECTION(".progmem.u8g_font_timB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_SECTION(".progmem.u8g_font_timB24"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_SECTION(".progmem.u8g_font_timB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_SECTION(".progmem.u8g_font_timB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_SECTION(".progmem.u8g_font_timR08"); +extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_SECTION(".progmem.u8g_font_timR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_SECTION(".progmem.u8g_font_timR10"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_SECTION(".progmem.u8g_font_timR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_SECTION(".progmem.u8g_font_timR12"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_SECTION(".progmem.u8g_font_timR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_SECTION(".progmem.u8g_font_timR14"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_SECTION(".progmem.u8g_font_timR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_SECTION(".progmem.u8g_font_timR18"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_SECTION(".progmem.u8g_font_timR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_SECTION(".progmem.u8g_font_timR24"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_SECTION(".progmem.u8g_font_timR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_SECTION(".progmem.u8g_font_timR24n"); + +/* fontstruct */ + +extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_SECTION(".progmem.u8g_font_p01type"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_SECTION(".progmem.u8g_font_p01typer"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_SECTION(".progmem.u8g_font_p01typen"); + +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternate"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternater"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternaten"); + +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfont[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfont"); +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfontr[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfontr"); +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfontn[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfontn"); + +extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_SECTION(".progmem.u8g_font_chikita"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_SECTION(".progmem.u8g_font_chikitar"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_SECTION(".progmem.u8g_font_chikitan"); + +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_SECTION(".progmem.u8g_font_pixelle_micro"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_SECTION(".progmem.u8g_font_pixelle_micror"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_SECTION(".progmem.u8g_font_pixelle_micron"); + +extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_SECTION(".progmem.u8g_font_trixel_square"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_SECTION(".progmem.u8g_font_trixel_squarer"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_SECTION(".progmem.u8g_font_trixel_squaren"); + +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_SECTION(".progmem.u8g_font_robot_de_niro"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_SECTION(".progmem.u8g_font_robot_de_niror"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_SECTION(".progmem.u8g_font_robot_de_niron"); + +extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_SECTION(".progmem.u8g_font_baby"); +extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_SECTION(".progmem.u8g_font_babyr"); +extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_SECTION(".progmem.u8g_font_babyn"); + +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_SECTION(".progmem.u8g_font_blipfest_07"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_SECTION(".progmem.u8g_font_blipfest_07r"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_SECTION(".progmem.u8g_font_blipfest_07n"); + +extern const u8g_fntpgm_uint8_t u8g_font_6x10_marlin[] U8G_SECTION(".progmem.u8g_font_6x10_marlin"); +extern const u8g_fntpgm_uint8_t u8g_font_6x9[] U8G_SECTION(".progmem.u8g_font_6x9"); + +#ifdef __cplusplus +} +#endif + +#endif /* _U8G_H */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_bitmap.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_bitmap.c new file mode 100644 index 000000000..dc742d1d7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_bitmap.c @@ -0,0 +1,177 @@ +/* + + u8g_bitmap.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap) +{ + while( cnt > 0 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, *bitmap); + bitmap++; + cnt--; + x+=8; + } +} + +void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, cnt*8, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHBitmap(u8g, x, y, cnt, bitmap); + bitmap += cnt; + y++; + h--; + } +} + + +void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap) +{ + while( cnt > 0 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, u8g_pgm_read(bitmap)); + bitmap++; + cnt--; + x+=8; + } +} + +void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, cnt*8, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHBitmapP(u8g, x, y, cnt, bitmap); + bitmap += cnt; + y++; + h--; + } +} + +/*=========================================================================*/ + +static void u8g_DrawHXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, const uint8_t *bitmap) +{ + uint8_t d; + x+=7; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 2, *bitmap); + bitmap++; + w-= 8; + x+=8; + } + if ( w > 0 ) + { + d = *bitmap; + x -= 7; + do + { + if ( d & 1 ) + u8g_DrawPixel(u8g, x, y); + x++; + w--; + d >>= 1; + } while ( w > 0 ); + } +} + +void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap) +{ + u8g_uint_t b; + b = w; + b += 7; + b >>= 3; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + while( h > 0 ) + { + u8g_DrawHXBM(u8g, x, y, w, bitmap); + bitmap += b; + y++; + h--; + } +} + +static void u8g_DrawHXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, const u8g_pgm_uint8_t *bitmap) +{ + uint8_t d; + x+=7; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 2, u8g_pgm_read(bitmap)); + bitmap++; + w-= 8; + x+=8; + } + if ( w > 0 ) + { + d = u8g_pgm_read(bitmap); + x -= 7; + do + { + if ( d & 1 ) + u8g_DrawPixel(u8g, x, y); + x++; + w--; + d >>= 1; + } while ( w > 0 ); + } +} + +void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) +{ + u8g_uint_t b; + b = w; + b += 7; + b >>= 3; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHXBMP(u8g, x, y, w, bitmap); + bitmap += b; + y++; + h--; + } +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_circle.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_circle.c new file mode 100644 index 000000000..8f4a0525d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_circle.c @@ -0,0 +1,382 @@ +/* + + u8g_circle.c + + Utility to draw empty and filled circles. + + Universal 8bit Graphics Library + + Copyright (c) 2011, bjthom@gmail.com + u8g_DrawCircle & u8g_DrawDisc by olikraus@gmail.com + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Addition to the U8G Library 02/25/12 + + +*/ + +#include "u8g.h" + +#ifdef OLD_CODE + +void circ_upperRight(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 + x, y0 - y); + u8g_DrawPixel(u8g, x0 + y, y0 - x); +} + +void circ_upperLeft(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 - x, y0 - y); + u8g_DrawPixel(u8g, x0 - y, y0 - x); +} + +void circ_lowerRight(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 + x, y0 + y); + u8g_DrawPixel(u8g, x0 + y, y0 + x); +} + +void circ_lowerLeft(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 - x, y0 + y); + u8g_DrawPixel(u8g, x0 - y, y0 + x); +} + +void circ_all(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + circ_upperRight(u8g, x, y, x0, y0); + circ_upperLeft(u8g, x, y, x0, y0); + circ_lowerRight(u8g, x, y, x0, y0); + circ_lowerLeft(u8g, x, y, x0, y0); +} + +void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + if ( u8g_IsBBXIntersection(u8g, x0-rad-1, y0-rad-1, 2*rad+1, 2*rad+1) == 0) + return; + + int f = 1 - rad; + int ddF_x = 1; + int ddF_y = -2*rad; + uint8_t x = 0; + uint8_t y = rad; + + void ( *circ_util )(u8g_t *, u8g_uint_t, u8g_uint_t, u8g_uint_t, u8g_uint_t); + + switch (option) + { + case U8G_CIRC_UPPER_RIGHT: + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + circ_util = circ_upperRight; + break; + case U8G_CIRC_UPPER_LEFT: + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_upperLeft; + break; + case U8G_CIRC_LOWER_RIGHT: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + circ_util = circ_lowerRight; + break; + case U8G_CIRC_LOWER_LEFT: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_lowerLeft; + break; + default: + case U8G_CIRC_ALL: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_all; + break; + } + + while( x < y ) + { + if(f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + circ_util(u8g, x, y, x0, y0); + } +} + + +void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + if ( u8g_IsBBXIntersection(u8g, x0-rad-1, y0-rad-1, 2*rad+1, 2*rad+1) == 0) + return; + + int f = 1 - rad; + int ddF_x = 1; + int ddF_y = -2*rad; + uint8_t x = 0; + uint8_t y = rad; + + // Draw vertical diameter at the horiz. center + // u8g_DrawVLine(u8g, x0, y0 - rad, 2*rad+1); + + if (option == U8G_CIRC_UPPER_LEFT || option == U8G_CIRC_UPPER_RIGHT) { + u8g_DrawVLine(u8g, x0, y0 - rad, rad+1); + } + else if (option == U8G_CIRC_LOWER_LEFT || option == U8G_CIRC_LOWER_RIGHT) { + u8g_DrawVLine(u8g, x0, y0, rad+1); + } + else { + u8g_DrawVLine(u8g, x0, y0 - rad, 2*rad+1); + } + + while( x < y ) + { + if(f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + //Draw vertical lines from one point to another + + switch (option) + { + case U8G_CIRC_UPPER_RIGHT: + u8g_DrawVLine(u8g, x0+x, y0-y, y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, x+1); + break; + case U8G_CIRC_UPPER_LEFT: + u8g_DrawVLine(u8g, x0-x, y0-y, y+1); + u8g_DrawVLine(u8g, x0-y, y0-x, x+1); + break; + case U8G_CIRC_LOWER_RIGHT: + u8g_DrawVLine(u8g, x0+x, y0, y+1); + u8g_DrawVLine(u8g, x0+y, y0, x+1); + break; + case U8G_CIRC_LOWER_LEFT: + u8g_DrawVLine(u8g, x0-x, y0, y+1); + u8g_DrawVLine(u8g, x0-y, y0, x+1); + break; + case U8G_CIRC_ALL: + u8g_DrawVLine(u8g, x0+x, y0-y, 2*y+1); + u8g_DrawVLine(u8g, x0-x, y0-y, 2*y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, 2*x+1); + u8g_DrawVLine(u8g, x0-y, y0-x, 2*x+1); + break; + } + } +} + +#endif + +/*=========================================================================*/ + +static void u8g_draw_circle_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) U8G_NOINLINE; + +static void u8g_draw_circle_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) +{ + /* upper right */ + if ( option & U8G_DRAW_UPPER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 - y); + u8g_DrawPixel(u8g, x0 + y, y0 - x); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 - y); + u8g_DrawPixel(u8g, x0 - y, y0 - x); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 + y); + u8g_DrawPixel(u8g, x0 + y, y0 + x); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 + y); + u8g_DrawPixel(u8g, x0 - y, y0 + x); + } +} + +void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + u8g_int_t f; + u8g_int_t ddF_x; + u8g_int_t ddF_y; + u8g_uint_t x; + u8g_uint_t y; + + f = 1; + f -= rad; + ddF_x = 1; + ddF_y = 0; + ddF_y -= rad; + ddF_y *= 2; + x = 0; + y = rad; + + u8g_draw_circle_section(u8g, x, y, x0, y0, option); + + while ( x < y ) + { + if (f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + u8g_draw_circle_section(u8g, x, y, x0, y0, option); + } +} + +void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t radp, radp2; + + radp = rad; + radp++; + radp2 = radp; + radp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-radp, y0-radp, radp2, radp2) == 0) + return; + } + + /* draw circle */ + u8g_draw_circle(u8g, x0, y0, rad, option); +} + +static void u8g_draw_disc_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) U8G_NOINLINE; + +static void u8g_draw_disc_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) +{ + /* upper right */ + if ( option & U8G_DRAW_UPPER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0-y, y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, x+1); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0-y, y+1); + u8g_DrawVLine(u8g, x0-y, y0-x, x+1); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0, y+1); + u8g_DrawVLine(u8g, x0+y, y0, x+1); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0, y+1); + u8g_DrawVLine(u8g, x0-y, y0, x+1); + } +} + +void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + u8g_int_t f; + u8g_int_t ddF_x; + u8g_int_t ddF_y; + u8g_uint_t x; + u8g_uint_t y; + + f = 1; + f -= rad; + ddF_x = 1; + ddF_y = 0; + ddF_y -= rad; + ddF_y *= 2; + x = 0; + y = rad; + + u8g_draw_disc_section(u8g, x, y, x0, y0, option); + + while ( x < y ) + { + if (f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + u8g_draw_disc_section(u8g, x, y, x0, y0, option); + } +} + +void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t radp, radp2; + + radp = rad; + radp++; + radp2 = radp; + radp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-radp, y0-radp, radp2, radp2) == 0) + return; + } + + /* draw disc */ + u8g_draw_disc(u8g, x0, y0, rad, option); +} + + + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_clip.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_clip.c new file mode 100644 index 000000000..71abef2e7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_clip.c @@ -0,0 +1,156 @@ +/* + + u8g_clip.c + + procedures for clipping + taken over from procs in u8g_pb.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Notes + + This is one of the most critical parts of u8glib. It must be fast, but still reliable. + Based on the intersection program (see tools folder), there is minimized version of + the condition for the intersaction test: + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + It includes the assumption, that a1 <= a2 is always true (correct, because + a1, a2 are the page dimensions. + + The direct implementation of the above result is done in: + uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) + However, this is slower than a decision tree version: + static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) + Also suprising is, that he the macro implementation is slower than the inlined version. + + The decision tree is based on the expansion of the truth table. + +*/ + +#include "u8g.h" + +#ifdef __GNUC__ +#define U8G_ALWAYS_INLINE __attribute__((always_inline)) +#else +#define U8G_ALWAYS_INLINE + #endif + +/* + intersection assumptions: + a1 <= a2 is always true + + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + */ + +#ifdef OLD_CODE_WHICH_IS_TOO_SLOW +static uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c1, c2, c3, tmp; + c1 = v0 <= a1; + c2 = v1 >= a0; + c3 = v0 > v1; + + tmp = c1; + c1 &= c2; + c2 &= c3; + c3 &= tmp; + c1 |= c2; + c1 |= c3; + return c1 & 1; +} +#endif + +#define U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1) ((uint8_t)( (v0) <= (a1) ) ? ( ( (v1) >= (a0) ) ? ( 1 ) : ( (v0) > (v1) ) ) : ( ( (v1) >= (a0) ) ? ( (v0) > (v1) ) : ( 0 ) )) + +static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) U8G_ALWAYS_INLINE; +static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) +{ + /* surprisingly the macro leads to larger code */ + /* return U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1); */ + if ( v0 <= a1 ) + { + if ( v1 >= a0 ) + { + return 1; + } + else + { + if ( v0 > v1 ) + { + return 1; + } + else + { + return 0; + } + } + } + else + { + if ( v1 >= a0 ) + { + if ( v0 > v1 ) + { + return 1; + } + else + { + return 0; + } + } + else + { + return 0; + } + } +} + + +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + register u8g_uint_t tmp; + tmp = y; + tmp += h; + tmp--; + if ( u8g_is_intersection_decision_tree(u8g->current_page.y0, u8g->current_page.y1, y, tmp) == 0 ) + return 0; + + tmp = x; + tmp += w; + tmp--; + return u8g_is_intersection_decision_tree(u8g->current_page.x0, u8g->current_page.x1, x, tmp); +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_api.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_api.c new file mode 100644 index 000000000..2dd49b126 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_api.c @@ -0,0 +1,173 @@ +/* + + u8g_com_api.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev) +{ + return dev->com_fn(u8g, U8G_COM_MSG_INIT, 0, NULL); +} + +void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_STOP, 0, NULL); +} + +/* cs contains the chip number, which should be enabled */ +void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs) +{ + dev->com_fn(u8g, U8G_COM_MSG_CHIP_SELECT, cs, NULL); +} + +void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_RESET, 0, NULL); +} + +void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_RESET, 1, NULL); +} + + +void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address) +{ + dev->com_fn(u8g, U8G_COM_MSG_ADDRESS, address, NULL); +} + +uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, val, NULL); +} + +uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ, cnt, seq); +} + +uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ_P, cnt, (void *)seq); +} + +/* + sequence := { direct_value | escape_sequence } + direct_value := 0..254 + escape_sequence := value_255 | sequence_end | delay | adr | cs | not_used + value_255 := 255 255 + sequence_end = 255 254 + delay := 255 0..127 + adr := 255 0x0e0 .. 0x0ef + cs := 255 0x0d0 .. 0x0df + not_used := 255 101..254 + +#define U8G_ESC_DLY(x) 255, ((x) & 0x7f) +#define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f)) +#define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f)) +#define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01)) +#define U8G_ESC_END 255, 254 +#define U8G_ESC_255 255, 255 +#define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f)) + +*/ +uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq) +{ + uint8_t is_escape = 0; + uint8_t value; + for(;;) + { + value = u8g_pgm_read(esc_seq); + if ( is_escape == 0 ) + { + if ( value != 255 ) + { + if ( u8g_WriteByte(u8g, dev, value) == 0 ) + return 0; + } + else + { + is_escape = 1; + } + } + else + { + if ( value == 255 ) + { + if ( u8g_WriteByte(u8g, dev, value) == 0 ) + return 0; + } + else if ( value == 254 ) + { + break; + } + else if ( value >= 0x0f0 ) + { + /* not yet used, do nothing */ + } + else if ( value >= 0xe0 ) + { + u8g_SetAddress(u8g, dev, value & 0x0f); + } + else if ( value >= 0xd0 ) + { + u8g_SetChipSelect(u8g, dev, value & 0x0f); + } + else if ( value >= 0xc0 ) + { + u8g_SetResetLow(u8g, dev); + value &= 0x0f; + value <<= 4; + value+=2; + u8g_Delay(value); + u8g_SetResetHigh(u8g, dev); + u8g_Delay(value); + } + else if ( value >= 0xbe ) + { + /* not yet implemented */ + /* u8g_SetVCC(u8g, dev, value & 0x01); */ + } + else if ( value <= 127 ) + { + u8g_Delay(value); + } + is_escape = 0; + } + esc_seq++; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_api_16gr.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_api_16gr.c new file mode 100644 index 000000000..7ff03d865 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_api_16gr.c @@ -0,0 +1,94 @@ +/* + + u8g_com_api_16gr.c + + Extension of the com api for devices with 16 graylevels (4 bit per pixel). + This should fit to the 8h and 16h architectures (pb8v1, pb8v2, pb16v1, pb16v2), + mainly intended for SSD OLEDs + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* interpret b as a monochrome bit pattern, write value 15 for high bit and value 0 for a low bit */ +/* topbit (msb) is sent last */ +/* example: b = 0x083 will send 0xff, 0x00, 0x00, 0xf0 */ +uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b) +{ + static uint8_t buf[4]; + static uint8_t map[4] = { 0, 0x00f, 0x0f0, 0x0ff }; + buf [3] = map[b & 3]; + b>>=2; + buf [2] = map[b & 3]; + b>>=2; + buf [1] = map[b & 3]; + b>>=2; + buf [0] = map[b & 3]; + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ, 4, buf); +} + +uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr) +{ + do + { + if ( u8g_WriteByteBWTo16GrDevice(u8g, dev, *ptr++) == 0 ) + return 0; + cnt--; + } while( cnt != 0 ); + return 1; +} + +/* interpret b as a 4L bit pattern, write values 0x000, 0x004, 0x008, 0x00c */ +uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b) +{ + //static uint8_t map[16] = { 0x000, 0x004, 0x008, 0x00c, 0x040, 0x044, 0x048, 0x04c, 0x080, 0x084, 0x088, 0x08c, 0x0c0, 0x0c4, 0x0c8, 0x0cc}; + //static uint8_t map[16] = { 0x000, 0x004, 0x00a, 0x00f, 0x040, 0x044, 0x04a, 0x04f, 0x0a0, 0x0a4, 0x0aa, 0x0af, 0x0f0, 0x0f4, 0x0fa, 0x0ff}; + static uint8_t map[16] = { 0x000, 0x040, 0x0a0, 0x0f0, 0x004, 0x044, 0x0a4, 0x0f4, 0x00a, 0x04a, 0x0aa, 0x0fa, 0x00f, 0x04f, 0x0af, 0x0ff}; + uint8_t bb; + bb = b; + bb &= 15; + b>>=4; + dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, map[bb], NULL); + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, map[b], NULL); +} + +uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr) +{ + do + { + if ( u8g_WriteByte4LTo16GrDevice(u8g, dev, *ptr++) == 0 ) + return 0; + cnt--; + } while( cnt != 0 ); + return 1; +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_common.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_common.c new file mode 100644 index 000000000..ef0b2366e --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_common.c @@ -0,0 +1,75 @@ +/* + + u8g_com_arduino_common.c + + shared procedures for the arduino communication procedures + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value) +{ + uint8_t pin; + pin = u8g->pin_list[pin_index]; + if ( pin != U8G_PIN_NONE ) + digitalWrite(pin, value); +} + +/* this procedure does not set the RW pin */ +void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g) +{ + uint8_t i; + /* skip the RW pin, which is the last pin in the list */ + for( i = 0; i < U8G_PIN_LIST_LEN-1; i++ ) + { + if ( u8g->pin_list[i] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[i], OUTPUT); + digitalWrite(u8g->pin_list[i], HIGH); + } + } +} + + +#endif + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c new file mode 100644 index 000000000..91a32e6f0 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c @@ -0,0 +1,245 @@ +/* + + u8g_arduino_fast_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + + +#define PIN_D0 8 +#define PIN_D1 9 +#define PIN_D2 10 +#define PIN_D3 11 +#define PIN_D4 4 +#define PIN_D5 5 +#define PIN_D6 6 +#define PIN_D7 7 + +#define PIN_CS1 14 +#define PIN_CS2 15 +#define PIN_RW 16 +#define PIN_DI 17 +#define PIN_EN 18 + +//#define PIN_RESET + + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_data_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_data_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_fast_parallel_init(u8g_t *u8g) +{ + u8g_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + u8g_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + u8g_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + u8g_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + u8g_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + u8g_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + u8g_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +void u8g_com_arduino_fast_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_data_port[pin] &= ~u8g_data_mask[pin]; +} + + +void u8g_com_arduino_fast_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_fast_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_fast_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 7, val&1 ); + val >>= 1; + + /* EN cycle time must be 1 micro second */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + u8g_10MicroDelay(); /* ST7920 commands: 72us */ +} + + +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_fast_parallel_init(u8g); + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_fast_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_fast_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_fast_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c new file mode 100644 index 000000000..7d7f91000 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c @@ -0,0 +1,191 @@ +/* + + u8g_com_arduino_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if defined(__AVR__) + +#include +#include + +#if ARDUINO < 100 +#include + +/* fixed pins */ +#if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) // Sanguino.cc board +#define PIN_SCK 7 +#define PIN_MISO 6 +#define PIN_MOSI 5 +#define PIN_CS 4 +#else // Arduino Board +#define PIN_SCK 13 +#define PIN_MISO 12 +#define PIN_MOSI 11 +#define PIN_CS 10 +#endif // (__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) + +#else + +#include + +/* use Arduino pin definitions */ +#define PIN_SCK SCK +#define PIN_MISO MISO +#define PIN_MOSI MOSI +#define PIN_CS SS + +#endif + + + +//static uint8_t u8g_spi_out(uint8_t data) U8G_NOINLINE; +static uint8_t u8g_spi_out(uint8_t data) +{ + /* unsigned char x = 100; */ + /* send data */ + SPDR = data; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_spi_out(arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +/* #elif defined(__18CXX) || defined(__PIC32MX) */ + +#else /* __AVR__ */ + +#endif /* __AVR__ */ + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c new file mode 100644 index 000000000..49038c36c --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c @@ -0,0 +1,221 @@ +/* + + u8g_arduino_no_en_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + +//#define PIN_RESET + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_data_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_data_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_no_en_parallel_init(u8g_t *u8g) +{ + u8g_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + u8g_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + u8g_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + u8g_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + u8g_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + u8g_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + u8g_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +void u8g_com_arduino_no_en_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_data_port[pin] &= ~u8g_data_mask[pin]; +} + + +void u8g_com_arduino_no_en_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_no_en_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_no_en_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 7, val&1 ); + val >>= 1; + + /* EN cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + if ( u8g->pin_list[U8G_PI_CS_STATE] == 1 ) + { + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_MicroDelay(); + } + else if ( u8g->pin_list[U8G_PI_CS_STATE] == 2 ) + { + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + u8g_MicroDelay(); + } +} + + +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_no_en_parallel_init(u8g); + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + /* + 0: nothing selected + 1: CS1 will be used as enable line + 2: CS2 will be used as enable line + this will be used in the u8g_com_arduino_no_en_parallel_write() procedure + */ + u8g->pin_list[U8G_PI_CS_STATE] = arg_val; + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_no_en_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_no_en_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_no_en_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_parallel.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_parallel.c new file mode 100644 index 000000000..a73bc0dbe --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_parallel.c @@ -0,0 +1,187 @@ +/* + + u8g_arduino_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + + + + + + +void u8g_com_arduino_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_D0, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D1, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D2, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D3, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D4, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D5, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D6, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D7, val&1); + + /* EN cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + //u8g_Delay(1); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + //u8g_Delay(1); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + //u8g_Delay(2); +} + + +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c new file mode 100644 index 000000000..cfaf71f9f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c @@ -0,0 +1,168 @@ +/* + + u8g_arduino_port_d_wr.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Assumes PORTD for 8 bit data transfer. + EN is assumed to be a low active write signal (WR) + + ILI9325D_320x240 from iteadstudio.com + RS=19, WR=18, CS=17, RST=16 + + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) && defined(PORTD) + +#if ARDUINO < 100 +#include +#else +#include +#endif + + + + + + +static void u8g_com_arduino_port_d_8bit_wr(u8g_t *u8g, uint8_t val) +{ + PORTD = val; + + /* WR cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); +} + + +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + + switch(msg) + { + case U8G_COM_MSG_INIT: + +#ifdef UCSR0B + UCSR0B = 0; // disable USART 0 +#endif + DDRD = 0x0ff; + PORTD = 0x0ff; + + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, HIGH); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_port_d_8bit_wr(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_port_d_8bit_wr(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_port_d_8bit_wr(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO && PORTD */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c new file mode 100644 index 000000000..afcb4088a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c @@ -0,0 +1,201 @@ +/* + + u8g_com_arduino_ssd_i2c.c + + com interface for arduino (AND atmega) and the SSDxxxx chip (SOLOMON) variant + I2C protocol + + ToDo: Rename this to u8g_com_avr_ssd_i2c.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Special pin usage: + U8G_PI_I2C_OPTION additional options + U8G_PI_A0_STATE used to store the last value of the command/data register selection + U8G_PI_SET_A0 1: Signal request to update I2C device with new A0_STATE, 0: Do nothing, A0_STATE matches I2C device + U8G_PI_SCL clock line (NOT USED) + U8G_PI_SDA data line (NOT USED) + + U8G_PI_RESET reset line (currently disabled, see below) + + Protocol: + SLA, Cmd/Data Selection, Arguments + The command/data register is selected by a special instruction byte, which is sent after SLA + + The continue bit is always 0 so that a (re)start is equired for the change from cmd to/data mode +*/ + +#include "u8g.h" + +#define I2C_SLA (0x3c*2) +//#define I2C_CMD_MODE 0x080 +#define I2C_CMD_MODE 0x000 +#define I2C_DATA_MODE 0x040 + + +uint8_t u8g_com_arduino_ssd_start_sequence(u8g_t *u8g) +{ + /* are we requested to set the a0 state? */ + if ( u8g->pin_list[U8G_PI_SET_A0] == 0 ) + return 1; + + /* setup bus, might be a repeated start */ + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + if ( u8g_i2c_send_byte(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) + return 0; + } + + + u8g->pin_list[U8G_PI_SET_A0] = 0; + return 1; +} + +uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCL, HIGH); + //u8g_com_arduino_digital_write(u8g, U8G_PI_SDA, HIGH); + //u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: unknown mode */ + + u8g_i2c_init(u8g->pin_list[U8G_PI_I2C_OPTION]); + + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + /* Currently disabled, but it could be enable. Previous restrictions have been removed */ + /* u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); */ + break; + + case U8G_COM_MSG_CHIP_SELECT: + u8g->pin_list[U8G_PI_A0_STATE] = 0; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again, also forces start condition */ + if ( arg_val == 0 ) + { + /* disable chip, send stop condition */ + u8g_i2c_stop(); + } + else + { + /* enable, do nothing: any byte writing will trigger the i2c start */ + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + if ( u8g_i2c_send_byte(arg_val) == 0 ) + return u8g_i2c_stop(), 0; + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(*ptr++) == 0 ) + return u8g_i2c_stop(), 0; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(u8g_pgm_read(ptr)) == 0 ) + return 0; + ptr++; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again */ + +#ifdef OLD_CODE + if ( i2c_state != 0 ) + { + u8g_i2c_stop(); + i2c_state = 0; + } + + if ( u8g_com_arduino_ssd_start_sequence(arg_val) == 0 ) + return 0; + + /* setup bus, might be a repeated start */ + /* + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( arg_val == 0 ) + { + i2c_state = 1; + + if ( u8g_i2c_send_byte(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + i2c_state = 2; + if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) + return 0; + } + */ +#endif + break; + } + return 1; +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c new file mode 100644 index 000000000..d5a041386 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c @@ -0,0 +1,220 @@ +/* + + u8g_com_arduino_st7920_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special HW SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) +#define U8G_ARDUINO_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif + +#endif + + +#if defined(U8G_ARDUINO_ATMEGA_HW_SPI) + +#include +#include + +static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + /* send data */ + SPDR = val; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr) ); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + } + return 1; +} + +#else + +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} +#endif + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c new file mode 100644 index 000000000..a73398868 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c @@ -0,0 +1,295 @@ +/* + + u8g_com_arduino_st7920_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) + +uint8_t u8g_bitData, u8g_bitNotData; +uint8_t u8g_bitClock, u8g_bitNotClock; +volatile uint8_t *u8g_outData; +volatile uint8_t *u8g_outClock; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_outData = portOutputRegister(digitalPinToPort(dataPin)); + u8g_outClock = portOutputRegister(digitalPinToPort(clockPin)); + u8g_bitData = digitalPinToBitMask(dataPin); + u8g_bitClock = digitalPinToBitMask(clockPin); + + u8g_bitNotClock = u8g_bitClock; + u8g_bitNotClock ^= 0x0ff; + + u8g_bitNotData = u8g_bitData; + u8g_bitNotData ^= 0x0ff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) U8G_NOINLINE; +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + uint8_t bitData = u8g_bitData; + uint8_t bitNotData = u8g_bitNotData; + uint8_t bitClock = u8g_bitClock; + uint8_t bitNotClock = u8g_bitNotClock; + volatile uint8_t *outData = u8g_outData; + volatile uint8_t *outClock = u8g_outClock; + do + { + if ( val & 128 ) + *outData |= bitData; + else + *outData &= bitNotData; + + /* + *outClock |= bitClock; + val <<= 1; + cnt--; + *outClock &= bitNotClock; + */ + + val <<= 1; + *outClock &= bitNotClock; + cnt--; + // removed micro delays, because AVRs are too slow and the delay is not required + //u8g_MicroDelay(); + *outClock |= bitClock; + //u8g_MicroDelay(); + } while( cnt != 0 ); +} + +#elif defined(__18CXX) || defined(__PIC32MX) + +uint16_t dog_bitData, dog_bitNotData; +uint16_t dog_bitClock, dog_bitNotClock; +volatile uint32_t *dog_outData; +volatile uint32_t *dog_outClock; +volatile uint32_t dog_pic32_spi_tmp; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + dog_outData = portOutputRegister(digitalPinToPort(dataPin)); + dog_outClock = portOutputRegister(digitalPinToPort(clockPin)); + dog_bitData = digitalPinToBitMask(dataPin); + dog_bitClock = digitalPinToBitMask(clockPin); + + dog_bitNotClock = dog_bitClock; + dog_bitNotClock ^= 0x0ffff; + + dog_bitNotData = dog_bitData; + dog_bitNotData ^= 0x0ffff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + *dog_outData |= dog_bitData; + else + *dog_outData &= dog_bitNotData; + val <<= 1; + //u8g_MicroDelay(); + //*dog_outClock |= dog_bitClock; + *dog_outClock &= dog_bitNotClock; + cnt--; + u8g_MicroDelay(); + //*dog_outClock &= dog_bitNotClock; + *dog_outClock |= dog_bitClock; + u8g_MicroDelay(); + + } while( cnt != 0 ); +} + +#else + +/* default interface, Arduino DUE (__arm__) */ + +uint8_t u8g_data_pin; +uint8_t u8g_clock_pin; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_data_pin = dataPin; + u8g_clock_pin = clockPin; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + digitalWrite(u8g_data_pin, HIGH); + else + digitalWrite(u8g_data_pin, LOW); + val <<= 1; + //u8g_MicroDelay(); + digitalWrite(u8g_clock_pin, LOW); + cnt--; + u8g_MicroDelay(); + digitalWrite(u8g_clock_pin, HIGH); + u8g_MicroDelay(); + } while( cnt != 0 ); +} + +#endif + + + + +static void u8g_com_arduino_st7920_write_byte(uint8_t rs, uint8_t val) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_com_arduino_do_shift_out_msb_first(0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_com_arduino_do_shift_out_msb_first(0x0fa); + } + + u8g_com_arduino_do_shift_out_msb_first(val & 0x0f0); + u8g_com_arduino_do_shift_out_msb_first(val << 4); + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); + +} + + + +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + // u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_st7920_write_byte( u8g->pin_list[U8G_PI_A0_STATE], arg_val); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte(u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte(u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr) ); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c new file mode 100644 index 000000000..1251ef2e5 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c @@ -0,0 +1,144 @@ +/* + + u8g_arduino_std_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +void u8g_arduino_sw_spi_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) +{ + uint8_t i = 8; + do + { + if ( val & 128 ) + digitalWrite(dataPin, HIGH); + else + digitalWrite(dataPin, LOW); + val <<= 1; + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + digitalWrite(clockPin, HIGH); + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + digitalWrite(clockPin, LOW); + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + i--; + } while( i != 0 ); +} + +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c new file mode 100644 index 000000000..846baeb90 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c @@ -0,0 +1,239 @@ +/* + + u8g_arduino_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) + +uint8_t u8g_bitData, u8g_bitNotData; +uint8_t u8g_bitClock, u8g_bitNotClock; +volatile uint8_t *u8g_outData; +volatile uint8_t *u8g_outClock; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_outData = portOutputRegister(digitalPinToPort(dataPin)); + u8g_outClock = portOutputRegister(digitalPinToPort(clockPin)); + u8g_bitData = digitalPinToBitMask(dataPin); + u8g_bitClock = digitalPinToBitMask(clockPin); + + u8g_bitNotClock = u8g_bitClock; + u8g_bitNotClock ^= 0x0ff; + + u8g_bitNotData = u8g_bitData; + u8g_bitNotData ^= 0x0ff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) U8G_NOINLINE; +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + uint8_t bitData = u8g_bitData; + uint8_t bitNotData = u8g_bitNotData; + uint8_t bitClock = u8g_bitClock; + uint8_t bitNotClock = u8g_bitNotClock; + volatile uint8_t *outData = u8g_outData; + volatile uint8_t *outClock = u8g_outClock; + do + { + if ( val & 128 ) + *outData |= bitData; + else + *outData &= bitNotData; + + *outClock |= bitClock; + val <<= 1; + cnt--; + *outClock &= bitNotClock; + } while( cnt != 0 ); +} + +#elif defined(__18CXX) || defined(__PIC32MX) + +uint16_t dog_bitData, dog_bitNotData; +uint16_t dog_bitClock, dog_bitNotClock; +volatile uint32_t *dog_outData; +volatile uint32_t *dog_outClock; +volatile uint32_t dog_pic32_spi_tmp; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + dog_outData = portOutputRegister(digitalPinToPort(dataPin)); + dog_outClock = portOutputRegister(digitalPinToPort(clockPin)); + dog_bitData = digitalPinToBitMask(dataPin); + dog_bitClock = digitalPinToBitMask(clockPin); + + dog_bitNotClock = dog_bitClock; + dog_bitNotClock ^= 0x0ffff; + + dog_bitNotData = dog_bitData; + dog_bitNotData ^= 0x0ffff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + *dog_outData |= dog_bitData; + else + *dog_outData &= dog_bitNotData; + val <<= 1; + /* + There must be some delay here. However + fetching the adress dog_outClock is enough delay, so + do not place dog_outClock in a local variable. This will + break the procedure + */ + *dog_outClock |= dog_bitClock; + cnt--; + *dog_outClock &= dog_bitNotClock; + /* + little additional delay after clk pulse, done by 3x32bit reads + from I/O. Optimized for PIC32 with 80 MHz. + */ + dog_pic32_spi_tmp = *dog_outClock; + dog_pic32_spi_tmp = *dog_outClock; + dog_pic32_spi_tmp = *dog_outClock; + } while( cnt != 0 ); +} + +#else +/* empty interface */ + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ +} + +#endif + + +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_do_shift_out_msb_first( arg_val ); + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first(*ptr++); + // u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first( u8g_pgm_read(ptr) ); + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_t6963.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_t6963.c new file mode 100644 index 000000000..d6a817867 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_arduino_t6963.c @@ -0,0 +1,385 @@ +/* + + u8g_com_arduino_t6963.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS 14 + PIN_A0 15 + PIN_RESET 16 + PIN_WR 17 + PIN_RD 18 + + u8g_InitRW8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + u8g_InitRW8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_output_data_port[8]; +static volatile uint32_t *u8g_input_data_port[8]; +static volatile uint32_t *u8g_mode_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_output_data_port[8]; +static volatile uint8_t *u8g_input_data_port[8]; +static volatile uint8_t *u8g_mode_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_t6963_init(u8g_t *u8g) +{ + u8g_output_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_input_data_port[0] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_mode_port[0] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + + u8g_output_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_input_data_port[1] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_mode_port[1] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + + u8g_output_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_input_data_port[2] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_mode_port[2] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + + u8g_output_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_input_data_port[3] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_mode_port[3] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_output_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_input_data_port[4] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_mode_port[4] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + + u8g_output_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_input_data_port[5] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_mode_port[5] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + + u8g_output_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_input_data_port[6] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_mode_port[6] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + + u8g_output_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_input_data_port[7] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_mode_port[7] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +static void u8g_com_arduino_t6963_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_output_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_output_data_port[pin] &= ~u8g_data_mask[pin]; +} + +static void u8g_com_arduino_t6963_set_port_output(void) +{ + uint8_t i; + for( i = 0; i < 8; i++ ) + { +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ + *u8g_mode_port[i] |= u8g_data_mask[i]; +#elif defined(__AVR__) + *u8g_mode_port[i] |= u8g_data_mask[i]; +#else + /* TODO: use generic Arduino API */ + *u8g_mode_port[i] |= u8g_data_mask[i]; +#endif + + } +} + +static void u8g_com_arduino_t6963_set_port_input(void) +{ + uint8_t i; + for( i = 0; i < 8; i++ ) + { +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; +#elif defined(__AVR__) +/* avr */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; + *u8g_output_data_port[i] &= ~u8g_data_mask[i]; // no pullup +#else + /* TODO: use generic Arduino API */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; + *u8g_output_data_port[i] &= ~u8g_data_mask[i]; // no pullup +#endif + } +} + + +static void u8g_com_arduino_t6963_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_t6963_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_t6963_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 7, val&1 ); + val >>= 1; + + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, 0); + u8g_MicroDelay(); /* 80ns, reference: t6963 datasheet */ + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, 1); + u8g_MicroDelay(); /* 10ns, reference: t6963 datasheet */ +} + +static uint8_t u8g_com_arduino_t6963_read(u8g_t *u8g) +{ + uint8_t val = 0; + + u8g_com_arduino_digital_write(u8g, U8G_PI_RD, 0); + u8g_MicroDelay(); /* 150ns, reference: t6963 datasheet */ + + /* only read bits 0, 1 and 3 */ + if ( (*u8g_input_data_port[3] & u8g_data_mask[3]) != 0 ) + val++; + val <<= 1; + val <<= 1; + if ( (*u8g_input_data_port[1] & u8g_data_mask[1]) != 0 ) + val++; + val <<= 1; + if ( (*u8g_input_data_port[0] & u8g_data_mask[0]) != 0 ) + val++; + + u8g_com_arduino_digital_write(u8g, U8G_PI_RD, 1); + u8g_MicroDelay(); /* 10ns, reference: t6963 datasheet */ + + return val; +} + +#define U8G_STATUS_TIMEOUT 50 + +static uint8_t u8g_com_arduino_t6963_until_01_ok(u8g_t *u8g) +{ + long x; + + u8g_com_arduino_t6963_set_port_input(); + x = millis(); + x += U8G_STATUS_TIMEOUT; + + for(;;) + { + if ( (u8g_com_arduino_t6963_read(u8g) & 3) == 3 ) + break; + if ( x < millis() ) + return 0; + } + u8g_com_arduino_t6963_set_port_output(); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_until_3_ok(u8g_t *u8g) +{ + long x; + + u8g_com_arduino_t6963_set_port_input(); + x = millis(); + x += U8G_STATUS_TIMEOUT; + + for(;;) + { + if ( (u8g_com_arduino_t6963_read(u8g) & 8) == 8 ) + break; + if ( x < millis() ) + return 0; + } + u8g_com_arduino_t6963_set_port_output(); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_cmd(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_01_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_data(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_01_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 0); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_auto_data(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_3_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 0); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + + +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g->pin_list[U8G_PI_A0_STATE] = 0; + u8g_com_arduino_t6963_init(u8g); + /* setup the RW (equal to WR) pin as output and force it to high */ + if ( u8g->pin_list[U8G_PI_WR] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_WR], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, HIGH); + } + /* set all pins (except WR pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, active low chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + u8g_com_arduino_t6963_write_data(u8g, arg_val); + } + else + { + u8g_com_arduino_t6963_write_cmd(u8g, arg_val); + } + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b0); /* auto write */ + while( arg_val > 0 ) + { + if ( u8g_com_arduino_t6963_write_auto_data(u8g, *ptr++) == 0 ) + break; + arg_val--; + } + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b2); /* auto reset */ + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b0); /* auto write */ + while( arg_val > 0 ) + { + if ( u8g_com_arduino_t6963_write_auto_data(u8g, u8g_pgm_read(ptr)) == 0 ) + break; + ptr++; + arg_val--; + } + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b2); /* auto reset */ + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 1) or data mode (arg_val = 0) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + //u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c new file mode 100644 index 000000000..30ee808ea --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c @@ -0,0 +1,174 @@ +/* + + u8g_com_atmega_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Assumes, that + MOSI is at PORTB, Pin 3 + and + SCK is at PORTB, Pin 5 + +*/ + +#include "u8g.h" + + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif +#endif + + +#if defined(U8G_ATMEGA_HW_SPI) + +#include +#include + + +static uint8_t u8g_atmega_spi_out(uint8_t data) +{ + /* unsigned char x = 100; */ + /* send data */ + SPDR = data; + /* wait for transmission */ + while (!(SPSR & (1< 0 ) + { + u8g_atmega_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + +uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_parallel.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_parallel.c new file mode 100644 index 000000000..603082da2 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_parallel.c @@ -0,0 +1,183 @@ +/* + + u8g_atmega_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_com_atmega_parallel_write(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_com_atmega_parallel_write(u8g_t *u8g, uint8_t val) +{ + + u8g_SetPILevel(u8g, U8G_PI_D0, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D1, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D2, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D3, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D4, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D5, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D6, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D7, val&1); + + /* EN cycle time must be 1 micro second */ + u8g_SetPILevel(u8g, U8G_PI_EN, 1); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_SetPILevel(u8g, U8G_PI_EN, 0); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + u8g_10MicroDelay(); /* ST7920 commands: 72us */ +} + + +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + /* setup the RW pin as output and force it to low */ + u8g_SetPIOutput(u8g, U8G_PI_RW); + u8g_SetPILevel(u8g, U8G_PI_RW, 0); + + u8g_SetPIOutput(u8g, U8G_PI_D0); + u8g_SetPIOutput(u8g, U8G_PI_D1); + u8g_SetPIOutput(u8g, U8G_PI_D2); + u8g_SetPIOutput(u8g, U8G_PI_D3); + u8g_SetPIOutput(u8g, U8G_PI_D4); + u8g_SetPIOutput(u8g, U8G_PI_D5); + u8g_SetPIOutput(u8g, U8G_PI_D6); + u8g_SetPIOutput(u8g, U8G_PI_D7); + u8g_SetPIOutput(u8g, U8G_PI_EN); + u8g_SetPIOutput(u8g, U8G_PI_CS1); + u8g_SetPIOutput(u8g, U8G_PI_CS2); + u8g_SetPIOutput(u8g, U8G_PI_DI); + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 0); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 0); + } + else + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 0); + u8g_SetPILevel(u8g, U8G_PI_CS2, 0); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_SetPILevel(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c new file mode 100644 index 000000000..52858a61e --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c @@ -0,0 +1,205 @@ +/* + + u8g_com_atmega_st7920_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller with HW SPI Support + + Assumes, that + MOSI is at PORTB, Pin 3 + and + SCK is at PORTB, Pin 5 + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif + +#endif + +#if defined(U8G_ATMEGA_HW_SPI) + +#include +#include + +static uint8_t u8g_atmega_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static uint8_t u8g_atmega_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + /* send data */ + SPDR = val; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); + } + else + { + /* u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); */ + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); /* CS = 1 (high active) */ + } + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr)); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c new file mode 100644 index 000000000..24e06028a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c @@ -0,0 +1,170 @@ +/* + + u8g_com_atmega_st7920_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_atmega_st7920_sw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_atmega_st7920_sw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + uint8_t i = 8; + do + { + u8g_SetPILevel(u8g, U8G_PI_MOSI, val & 128 ); + val <<= 1; + u8g_SetPILevel(u8g, U8G_PI_SCK, 1 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + i--; + } while( i != 0 ); +} + +static void u8g_com_atmega_st7920_write_byte(u8g_t *u8g, uint8_t rs, uint8_t val) U8G_NOINLINE; +static void u8g_com_atmega_st7920_write_byte(u8g_t *u8g, uint8_t rs, uint8_t val) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_atmega_st7920_sw_spi_shift_out(u8g, 0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_atmega_st7920_sw_spi_shift_out(u8g, 0x0fa); + } + + u8g_atmega_st7920_sw_spi_shift_out(u8g, val & 0x0f0); + u8g_atmega_st7920_sw_spi_shift_out(u8g, val << 4); + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + + +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_SetPIOutput(u8g, U8G_PI_SCK); + u8g_SetPIOutput(u8g, U8G_PI_MOSI); + /* u8g_SetPIOutput(u8g, U8G_PI_A0); */ + u8g_SetPIOutput(u8g, U8G_PI_CS); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_SetPILevel(u8g, U8G_PI_MOSI, 0 ); + u8g_SetPILevel(u8g, U8G_PI_CS, 0 ); + /* u8g_SetPILevel(u8g, U8G_PI_A0, 0); */ + + u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); + } + else + { + /* u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); */ + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); /* CS = 1 (high active) */ + } + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr)); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c new file mode 100644 index 000000000..fde3153a5 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c @@ -0,0 +1,141 @@ +/* + + u8g_com_atmega_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_atmega_sw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_atmega_sw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + uint8_t i = 8; + do + { + u8g_SetPILevel(u8g, U8G_PI_MOSI, val & 128 ); + val <<= 1; + u8g_SetPILevel(u8g, U8G_PI_SCK, 1 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + i--; + } while( i != 0 ); +} + +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_SetPIOutput(u8g, U8G_PI_SCK); + u8g_SetPIOutput(u8g, U8G_PI_MOSI); + u8g_SetPIOutput(u8g, U8G_PI_A0); + u8g_SetPIOutput(u8g, U8G_PI_CS); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_SetPILevel(u8g, U8G_PI_MOSI, 0 ); + u8g_SetPILevel(u8g, U8G_PI_CS, 1 ); + u8g_SetPILevel(u8g, U8G_PI_A0, 0); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_SetPILevel(u8g, U8G_PI_A0, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + + if ( arg_val == 0 ) + { + /* disable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); + } + else + { + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); /* CS = 0 (low active) */ + } + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_atmega_sw_spi_shift_out(u8g, arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_sw_spi_shift_out(u8g, *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_sw_spi_shift_out(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_i2c.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_i2c.c new file mode 100644 index 000000000..144c7d720 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_i2c.c @@ -0,0 +1,249 @@ +/* + + u8g_com_i2c.c + + generic i2c interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +static uint8_t u8g_i2c_err_code; + +/* + position values + 1: start condition + 2: sla transfer +*/ +static uint8_t u8g_i2c_err_pos; + + +void u8g_i2c_clear_error(void) +{ + u8g_i2c_err_code = U8G_I2C_ERR_NONE; + u8g_i2c_err_pos = 0; +} + +uint8_t u8g_i2c_get_error(void) +{ + return u8g_i2c_err_code; +} + +uint8_t u8g_i2c_get_err_pos(void) +{ + return u8g_i2c_err_pos; +} + +static void u8g_i2c_set_error(uint8_t code, uint8_t pos) +{ + if ( u8g_i2c_err_code > 0 ) + return; + u8g_i2c_err_code |= code; + u8g_i2c_err_pos = pos; +} + + + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_TWI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_TWI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_TWI +#endif +#endif + +#if defined(U8G_ATMEGA_HW_TWI) + +#include +#include + + + +void u8g_i2c_init(uint8_t options) +{ + /* + TWBR: bit rate register + TWSR: status register (contains preselector bits) + + prescalar + 0 1 + 1 4 + 2 16 + 3 64 + + f = F_CPU/(16+2*TWBR*prescalar) + + F_CPU = 16MHz + TWBR = 152; + TWSR = 0; + --> 50KHz + + TWBR = 72; + TWSR = 0; + --> 100KHz + + F_CPU/(2*100000)-8 --> calculate TWBR value for 100KHz +*/ + TWSR = 0; + TWBR = F_CPU/(2*100000)-8; + u8g_i2c_clear_error(); +} + +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) +{ + volatile uint16_t cnt = 2000; /* timout value should be > 280 for 50KHz Bus and 16 Mhz CPU, however the start condition might need longer */ + while( !(TWCR & mask) ) + { + if ( cnt == 0 ) + { + u8g_i2c_set_error(U8G_I2C_ERR_TIMEOUT, pos); + return 0; /* error */ + } + cnt--; + } + return 1; /* all ok */ +} + +/* sla includes all 8 bits (with r/w bit), assums master transmit */ +uint8_t u8g_i2c_start(uint8_t sla) +{ + register uint8_t status; + + /* send start */ + TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); + + /* wait */ + if ( u8g_i2c_wait(_BV(TWINT), 1) == 0 ) + return 0; + + status = TW_STATUS; + + /* check status after start */ + if ( status != TW_START && status != TW_REP_START ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 1); + return 0; + } + + /* set slave address */ + TWDR = sla; + + /* enable sla transfer */ + TWCR = _BV(TWINT) | _BV(TWEN); + + /* wait */ + if ( u8g_i2c_wait(_BV(TWINT), 2) == 0 ) + return 0; + status = TW_STATUS; + + /* check status after sla */ + if ( status != TW_MT_SLA_ACK ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 2); + return 0; + } + + return 1; +} + +uint8_t u8g_i2c_send_byte(uint8_t data) +{ + register uint8_t status; + TWDR = data; + TWCR = _BV(TWINT) | _BV(TWEN); + if ( u8g_i2c_wait(_BV(TWINT), 3) == 0 ) + return 0; + status = TW_STATUS; + + if ( status != TW_MT_DATA_ACK ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 3); + return 0; + } + + return 1; +} + +void u8g_i2c_stop(void) +{ + /* write stop */ + TWCR = _BV(TWINT) | _BV(TWEN) | _BV(TWSTO); + + /* no error is checked for the stop condition */ + u8g_i2c_wait(_BV(TWSTO), 4); + +} + +/* +void twi_send(uint8_t adr, uint8_t data1, uint8_t data2) +{ + u8g_i2c_start(adr<<1); + u8g_i2c_send_byte(data1); + u8g_i2c_send_byte(data2); + u8g_i2c_stop(); +} +*/ + +#else + +/* empty interface */ + +void u8g_i2c_init(uint8_t options) +{ + u8g_i2c_clear_error(); +} + +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) +{ + return 1; +} + +uint8_t u8g_i2c_start(uint8_t sla) +{ + return 1; +} +uint8_t u8g_i2c_send_byte(uint8_t data) +{ + return 1; +} + +void u8g_i2c_stop(void) +{ +} + + +#endif + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_io.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_io.c new file mode 100644 index 000000000..50d26c93d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_io.c @@ -0,0 +1,218 @@ +/* + + u8g_com_io.c + + abstraction layer for low level i/o + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +#include +#include + +typedef volatile uint8_t * IO_PTR; + +/* create internal pin number */ +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) +{ + port <<= 3; + port += bitpos; + return port; +} + +const IO_PTR u8g_avr_ddr_P[] PROGMEM = { +#ifdef DDRA + &DDRA, +#else + 0, +#endif + &DDRB, +#ifdef DDRC + &DDRC, +#ifdef DDRD + &DDRD, +#ifdef DDRE + &DDRE, +#ifdef DDRF + &DDRF, +#ifdef DDRG + &DDRG, +#ifdef DDRH + &DDRH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + + +const IO_PTR u8g_avr_port_P[] PROGMEM = { +#ifdef PORTA + &PORTA, +#else + 0, +#endif + &PORTB, +#ifdef PORTC + &PORTC, +#ifdef PORTD + &PORTD, +#ifdef PORTE + &PORTE, +#ifdef PORTF + &PORTF, +#ifdef PORTG + &PORTG, +#ifdef PORTH + &PORTH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + +const IO_PTR u8g_avr_pin_P[] PROGMEM = { +#ifdef PINA + &PINA, +#else + 0, +#endif + &PINB, +#ifdef PINC + &PINC, +#ifdef PIND + &PIND, +#ifdef PINE + &PINE, +#ifdef PINF + &PINF, +#ifdef PING + &PING, +#ifdef PINH + &PINH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + +static volatile uint8_t *u8g_get_avr_io_ptr(const IO_PTR *base, uint8_t offset) +{ + volatile uint8_t * tmp; + base += offset; + memcpy_P(&tmp, base, sizeof(volatile uint8_t * PROGMEM)); + return tmp; +} + +/* set direction to output of the specified pin (internal pin number) */ +void u8g_SetPinOutput(uint8_t internal_pin_number) +{ + *u8g_get_avr_io_ptr(u8g_avr_ddr_P, internal_pin_number>>3) |= _BV(internal_pin_number&7); +} + +void u8g_SetPinInput(uint8_t internal_pin_number) +{ + *u8g_get_avr_io_ptr(u8g_avr_ddr_P, internal_pin_number>>3) &= ~_BV(internal_pin_number&7); +} + +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) +{ + volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_port_P, internal_pin_number>>3); + + if ( level == 0 ) + *tmp &= ~_BV(internal_pin_number&7); + else + *tmp |= _BV(internal_pin_number&7); +} + +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) +{ + volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_pin_P, internal_pin_number>>3); + if ( ((*tmp) & _BV(internal_pin_number&7)) != 0 ) + return 1; + return 0; +} + +#else + +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) +{ + port <<= 3; + port += bitpos; + return port; +} + +void u8g_SetPinOutput(uint8_t internal_pin_number) +{ +} + +void u8g_SetPinInput(uint8_t internal_pin_number) +{ +} + +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) +{ +} + +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) +{ + return 0; +} + +#endif + + +void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi) +{ + uint8_t pin; + pin = u8g->pin_list[pi]; + if ( pin != U8G_PIN_NONE ) + u8g_SetPinOutput(pin); +} + +void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level) +{ + uint8_t pin; + pin = u8g->pin_list[pi]; + if ( pin != U8G_PIN_NONE ) + u8g_SetPinLevel(pin, level); +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_null.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_null.c new file mode 100644 index 000000000..1d9deebff --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_com_null.c @@ -0,0 +1,63 @@ +/* + + u8g_com_null.c + + communication null device + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + break; + case U8G_COM_MSG_STOP: + break; + + + case U8G_COM_MSG_CHIP_SELECT: + /* arg_val contains the chip number, which should be enabled */ + break; + + + case U8G_COM_MSG_WRITE_BYTE: + break; + case U8G_COM_MSG_WRITE_SEQ: + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_cursor.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_cursor.c new file mode 100644 index 000000000..62075ba6e --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_cursor.c @@ -0,0 +1,99 @@ +/* + + u8g_cursor.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font) +{ + u8g->cursor_font = cursor_font; +} + +void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding) +{ + u8g->cursor_encoding = encoding; +} + +void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg) +{ + u8g->cursor_bg_color = bg; + u8g->cursor_fg_color = fg; +} + +void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y) +{ + u8g->cursor_x = cursor_x; + u8g->cursor_y = cursor_y; +} + +void u8g_EnableCursor(u8g_t *u8g) +{ + u8g->cursor_fn = u8g_DrawCursor; +} + +void u8g_DisableCursor(u8g_t *u8g) +{ + u8g->cursor_fn = (u8g_draw_cursor_fn)0; +} + +void u8g_DrawCursor(u8g_t *u8g) +{ + const u8g_pgm_uint8_t *font; + uint8_t color; + uint8_t encoding = u8g->cursor_encoding; + + /* get current values */ + color = u8g_GetColorIndex(u8g); + font = u8g->font; + + /* draw cursor */ + u8g->font = u8g->cursor_font; + encoding++; + u8g_SetColorIndex(u8g, u8g->cursor_bg_color); + /* 27. Jan 2013: replaced call to u8g_DrawGlyph with call to u8g_draw_glyph */ + /* required, because y adjustment should not happen to the cursor fonts */ + u8g_draw_glyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); + encoding--; + u8g_SetColorIndex(u8g, u8g->cursor_fg_color); + /* 27. Jan 2013: replaced call to u8g_DrawGlyph with call to u8g_draw_glyph */ + /* required, because y adjustment should not happen to the cursor fonts */ + /* u8g_DrawGlyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); */ + u8g_draw_glyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); + + /* restore previous values */ + u8g->font = font; + u8g_SetColorIndex(u8g, color); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_delay.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_delay.c new file mode 100644 index 000000000..e6a0661b3 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_delay.c @@ -0,0 +1,215 @@ +/* + + u8g_delay.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "u8g.h" + +/*==== Part 1: Derive suitable delay procedure ====*/ + +#if defined(ARDUINO) +# if defined(__AVR__) +# define USE_AVR_DELAY +# elif defined(__PIC32MX) +# define USE_PIC32_DELAY +# elif defined(__arm__) /* Arduino Due */ +# define USE_ARDUINO_DELAY +# else +# define USE_ARDUINO_DELAY +# endif +#elif defined(__AVR__) +# define USE_AVR_DELAY +#elif defined(__18CXX) +# define USE_PIC18_DELAY +#else +# define USE_DUMMY_DELAY +#endif + + + +/*==== Part 2: Definition of the delay procedures ====*/ + +/*== AVR Delay ==*/ + +#if defined(USE_AVR_DELAY) +#include +#include +#include + +/* + Delay by the provided number of milliseconds. + Thus, a 16 bit value will allow a delay of 0..65 seconds + Makes use of the _delay_loop_2 + + _delay_loop_2 will do a delay of n * 4 prozessor cycles. + with f = F_CPU cycles per second, + n = f / (1000 * 4 ) + with f = 16000000 the result is 4000 + with f = 1000000 the result is 250 + + the millisec loop, gcc requires the following overhead: + - movev 1 + - subwi 2x2 + - bne i 2 + ==> 7 cycles + ==> must be devided by 4, rounded up 7/4 = 2 +*/ +void u8g_Delay(uint16_t val) +{ + /* old version did a call to the arduino lib: delay(val); */ + while( val != 0 ) + { + _delay_loop_2( (F_CPU / 4000 ) -2); + val--; + } +} + +/* delay by one micro second */ +void u8g_MicroDelay(void) +{ +#if (F_CPU / 4000000 ) > 0 + _delay_loop_2( (F_CPU / 4000000 ) ); +#endif +} + +/* delay by 10 micro seconds */ +void u8g_10MicroDelay(void) +{ +#if (F_CPU / 400000 ) > 0 + _delay_loop_2( (F_CPU / 400000 ) ); +#endif +} + +#endif + + +/*== Delay for PIC18 (not tested) ==*/ + +#if defined(USE_PIC18_DELAY) +#include +#define GetSystemClock() (64000000ul) // Hz +#define GetInstructionClock() (GetSystemClock()/4) + +void u8g_Delay(uint16_t val) +{/* + unsigned int _iTemp = (val); + while(_iTemp--) + Delay1KTCYx((GetInstructionClock()+999999)/1000000); + */ +} +void u8g_MicroDelay(void) +{ + /* not implemented */ +} +void u8g_10MicroDelay(void) +{ + /* not implemented */ +} +#endif + + +/*== Arduino Delay ==*/ +#if defined(USE_ARDUINO_DELAY) +void u8g_Delay(uint16_t val) +{ + delay(val); +} +void u8g_MicroDelay(void) +{ + delayMicroseconds(1); +} +void u8g_10MicroDelay(void) +{ + delayMicroseconds(10); +} +#endif + +#if defined(USE_PIC32_DELAY) +/* + Assume chipkit here with F_CPU correctly defined + The problem was, that u8g_Delay() is called within the constructor. + It seems that the chipkit is not fully setup at this time, so a + call to delay() will not work. So here is my own implementation. + +*/ +#define CPU_COUNTS_PER_SECOND (F_CPU/2UL) +#define TICKS_PER_MILLISECOND (CPU_COUNTS_PER_SECOND/1000UL) +#include "plib.h" +void u8g_Delay(uint16_t val) +{ + uint32_t d; + uint32_t s; + d = val; + d *= TICKS_PER_MILLISECOND; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +void u8g_MicroDelay(void) +{ + uint32_t d; + uint32_t s; + d = TICKS_PER_MILLISECOND/1000; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +void u8g_10MicroDelay(void) +{ + uint32_t d; + uint32_t s; + d = TICKS_PER_MILLISECOND/100; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +#endif + +/*== Any other systems: Dummy Delay ==*/ +#if defined(USE_DUMMY_DELAY) +void u8g_Delay(uint16_t val) +{ + /* do not know how to delay... */ +} +void u8g_MicroDelay(void) +{ +} +void u8g_10MicroDelay(void) +{ +} +#endif diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c new file mode 100644 index 000000000..bb368de43 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c @@ -0,0 +1,92 @@ +/* + + u8g_dev_flipdisc.c + + 1-Bit (BW) Driver for flip disc matrix + 2x 7 pixel height + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +#define WIDTH 28 +#define HEIGHT 14 +#define PAGE_HEIGHT 14 + +/* + Write data to the flip disc matrix. + This procedure must be implemented by the user. + Arguments: + id: Id for the matrix. Currently always 0. + page: A page has a height of 14 pixel. For a matrix with HEIGHT == 14 this will be always 0 + width: The width of the flip disc matrix. Always equal to WIDTH + row1: first data line (7 pixel per byte) + row2: first data line (7 pixel per byte) +*/ +void writeFlipDiscMatrix(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2); + + + +void (*u8g_write_flip_disc_matrix)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2); + +void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2)) +{ + u8g_write_flip_disc_matrix = cb; +} + +uint8_t u8g_dev_flipdisc_2x7_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + /* current page: pb->p.page */ + /* ptr to the buffer: pb->buf */ + + (*u8g_write_flip_disc_matrix)(0, pb->p.page, WIDTH, pb->buf, pb->buf+WIDTH); + } + break; + case U8G_DEV_MSG_CONTRAST: + return 1; + } + return u8g_dev_pb14v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_flipdisc_2x7_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_flipdisc_2x7_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_flipdisc_2x7_bw_buf}; +u8g_dev_t u8g_dev_flipdisc_2x7 = { u8g_dev_flipdisc_2x7_bw_fn, &u8g_dev_flipdisc_2x7_bw_pb, u8g_com_null_fn }; diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_gprof.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_gprof.c new file mode 100644 index 000000000..a486a2143 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_gprof.c @@ -0,0 +1,130 @@ +/* + + u8g_dev_gprof.c + + Device for performance measurement with gprof. + Does not write any data, but uses a buffer. + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +*/ + +#include "u8g.h" + + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +uint8_t u8g_dev_gprof_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +uint8_t u8g_pb_dev_gprof_buf[WIDTH]; +u8g_pb_t u8g_pb_dev_gprof = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_pb_dev_gprof_buf }; + +u8g_dev_t u8g_dev_gprof = { u8g_dev_gprof_fn, &u8g_pb_dev_gprof, NULL }; + +uint8_t u8g_dev_gprof_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + switch(msg) + { + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + /* + { + uint8_t i, j; + uint8_t page_height; + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( j = 0; j < page_height; j++ ) + { + printf("%02d ", j); + for( i = 0; i < WIDTH; i++ ) + { + if ( (u8g_pb_dev_stdout_buf[i] & (1<p)) == 0 ) + { + //printf("\n"); + return 0; + } + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x2, y2; + + y2 = bbx->y; + y2 += bbx->h; + y2--; + + if ( u8g_pb_IsYIntersection(pb, bbx->y, y2) == 0 ) + return 0; + + /* maybe this one can be skiped... probability is very high to have an intersection, so it would be ok to always return 1 */ + x2 = bbx->x; + x2 += bbx->w; + x2--; + + if ( u8g_pb_IsXIntersection(pb, bbx->x, x2) == 0 ) + return 0; + } + return 1; +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c new file mode 100644 index 000000000..e30ae6a71 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c @@ -0,0 +1,326 @@ +/* + + u8g_dev_ili9325d_320x240.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Color format + Red: 5 Bit + Green: 6 Bit + Blue: 5 Bit + + +*/ + +#include "u8g.h" + +#define WIDTH 240 + +#if defined(U8G_16BIT) +#define HEIGHT 320 +#else +/* if the user tries to compile the 8Bit version of the lib, then restrict the height to something which fits to 8Bit */ +#define HEIGHT 240 +#endif +#define PAGE_HEIGHT 4 + + +/* + reference board for this device: + http://iteadstudio.com/store/index.php?main_page=product_info&cPath=57_58&products_id=55 + documentation: + http://iteadstudio.com/Downloadfile/ITDB02_material.rar + datasheet + http://www.newhavendisplay.com/app_notes/ILI9325D.pdf + other libs + http://henningkarlsen.com/electronics/library.php + init sequence + http://code.google.com/p/itdb02/, ITDB02.cpp, iteadstudio.com +*/ + +static const uint8_t u8g_dev_ili9325d_320x240_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + //U8G_ESC_ADR(0), 0x000, 0x0E5, /* only used for none D version: set SRAM internal timing */ + //U8G_ESC_ADR(1), 0x078, 0x0f0, + U8G_ESC_ADR(0), 0x000, 0x001, /* Driver Output Control, bits 8 & 10 */ + U8G_ESC_ADR(1), 0x001, 0x000, + U8G_ESC_ADR(0), 0x000, 0x002, /* LCD Driving Wave Control, bit 9: Set line inversion */ + U8G_ESC_ADR(1), 0x002, 0x000, /* ITDB02 none D verion: 0x007, 0x000 */ + U8G_ESC_ADR(0), 0x000, 0x003, /* Entry Mode, GRAM write direction and BGR=1 */ + U8G_ESC_ADR(1), 0x010, 0x030, + U8G_ESC_ADR(0), 0x000, 0x004, /* Resize register */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x008, /* Display Control 2: set the back porch and front porch */ + U8G_ESC_ADR(1), 0x002, 0x007, + + U8G_ESC_ADR(0), 0x000, 0x009, /* Display Control 3 */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x00a, /* Display Control 4: FMARK */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00c, /* RGB Display Interface Control 1 */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00d, /* Frame Maker Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00f, /* RGB Display Interface Control 2 */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x010, /* Power Control 1: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x011, /* Power Control 2: DC1[2:0], DC0[2:0], VC[2:0] */ + U8G_ESC_ADR(1), 0x000, 0x007, + U8G_ESC_ADR(0), 0x000, 0x012, /* Power Control 3: VREG1OUT voltage */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x013, /* Power Control 4: VDV[4:0] for VCOM amplitude */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x007, /* Display Control 1: Operate, but do not display */ + U8G_ESC_ADR(1), 0x000, 0x001, + + U8G_ESC_DLY(100), /* delay 100 ms */ /* ITDB02 none D verion: 50ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), 0x000, 0x010, /* Power Control 1: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x016, 0x090, /* ITDB02 none D verion: 0x010, 0x090 */ + U8G_ESC_ADR(0), 0x000, 0x011, /* Power Control 2: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x002, 0x027, + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x012, /* Power Control 3: VCI: External, VCI*1.80 */ + U8G_ESC_ADR(1), 0x000, 0x00d, /* ITDB02 none D verion: 0x000, 0x01f */ + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x013, /* Power Control 4: VDV[4:0] for VCOM amplitude */ + U8G_ESC_ADR(1), 0x012, 0x000, /* ITDB02 none D verion: 0x015, 0x000 */ + U8G_ESC_ADR(0), 0x000, 0x029, /* Power Control 7 */ + U8G_ESC_ADR(1), 0x000, 0x00a, /* ITDB02 none D verion: 0x000, 0x027 */ + U8G_ESC_ADR(0), 0x000, 0x02b, /* Frame Rate: 83 */ + U8G_ESC_ADR(1), 0x000, 0x00d, + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + + /* gamma control */ + U8G_ESC_ADR(0), 0x000, 0x030, + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x031, + U8G_ESC_ADR(1), 0x004, 0x004, + U8G_ESC_ADR(0), 0x000, 0x032, + U8G_ESC_ADR(1), 0x000, 0x003, + U8G_ESC_ADR(0), 0x000, 0x035, + U8G_ESC_ADR(1), 0x004, 0x005, + U8G_ESC_ADR(0), 0x000, 0x036, + U8G_ESC_ADR(1), 0x008, 0x008, + U8G_ESC_ADR(0), 0x000, 0x037, + U8G_ESC_ADR(1), 0x004, 0x007, + U8G_ESC_ADR(0), 0x000, 0x038, + U8G_ESC_ADR(1), 0x003, 0x003, + U8G_ESC_ADR(0), 0x000, 0x039, + U8G_ESC_ADR(1), 0x007, 0x007, + U8G_ESC_ADR(0), 0x000, 0x03c, + U8G_ESC_ADR(1), 0x005, 0x004, + U8G_ESC_ADR(0), 0x000, 0x03d, + U8G_ESC_ADR(1), 0x008, 0x008, + + U8G_ESC_ADR(0), 0x000, 0x050, /* Horizontal GRAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x051, /* Horizontal GRAM End Address: 239 */ + U8G_ESC_ADR(1), 0x000, 0x0EF, + U8G_ESC_ADR(0), 0x000, 0x052, /* Vertical GRAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x053, /* Vertical GRAM End Address: 319 */ + U8G_ESC_ADR(1), 0x001, 0x03F, + + U8G_ESC_ADR(0), 0x000, 0x060, /* Driver Output Control 2 */ + U8G_ESC_ADR(1), 0x0a7, 0x000, + U8G_ESC_ADR(0), 0x000, 0x061, /* Base Image Display Control: NDL,VLE, REV */ + U8G_ESC_ADR(1), 0x000, 0x001, + U8G_ESC_ADR(0), 0x000, 0x06a, /* Vertical Scroll Control */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x080, /* Partial Image 1 Display Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x081, /* Partial Image 1 RAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x082, /* Partial Image 1 RAM End Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x083, /* Partial Image 2 Display Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x084, /* Partial Image 2 RAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x085, /* Partial Image 2 RAM End Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x090, /* Panel Interface Control 1 */ + U8G_ESC_ADR(1), 0x000, 0x010, + U8G_ESC_ADR(0), 0x000, 0x092, /* Panel Interface Control 2 */ + U8G_ESC_ADR(1), 0x000, 0x000, /* 0x006, 0x000 */ + + U8G_ESC_ADR(0), 0x000, 0x007, /* Display Control 1: Operate, display ON */ + U8G_ESC_ADR(1), 0x001, 0x033, + + U8G_ESC_DLY(10), /* delay 10 ms */ + + /* write test pattern */ + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x010, + U8G_ESC_ADR(0), 0x000, 0x022, /* Write Data to GRAM */ + U8G_ESC_ADR(1), 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +static const uint8_t u8g_dev_ili9325d_320x240_page_seq[] PROGMEM = { + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), + U8G_ESC_END /* end of sequence */ +}; + +/* convert the internal RGB 332 to 65K high byte */ +static uint8_t u8g_dev_ili9325d_get_65K_high_byte(uint8_t color) +{ + uint8_t h; + h = color; + h &= 0x0e0; + h |= h>>3; + h &= 0x0f8; + color>>=2; + color &= 7; + h |= color; + return h; +} + +/* convert the internal RGB 332 to 65K high byte */ +static uint8_t u8g_dev_ili9325d_get_65K_low_byte(uint8_t color) +{ + uint8_t l; + l = color; + l <<= 3; + color &= 3; + color <<= 1; + l |= color; + return l; +} + + +uint8_t u8g_dev_ili9325d_320x240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + //for(;;) + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_init_seq); + + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + uint16_t y, j; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < pb->p.page_height; i ++ ) + { + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_page_seq); + u8g_WriteByte(u8g, dev, y >> 8 ); /* display ram (cursor) address high byte */ + u8g_WriteByte(u8g, dev, y & 255 ); /* display ram (cursor) address low byte */ + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0 ); + u8g_WriteByte(u8g, dev, 0x022 ); /* start gram data */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + + for( j = 0; j < pb->width; j++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_ili9325d_get_65K_high_byte(*ptr) ); + u8g_WriteByte(u8g, dev, u8g_dev_ili9325d_get_65K_low_byte(*ptr) ); + + ptr++; + } + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_ili9325d_320x240_8h8_buf[WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_ili9325d_320x240_8h8_pb U8G_NOCOMMON = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_ili9325d_320x240_8h8_buf}; +u8g_dev_t u8g_dev_ili9325d_320x240_8bit U8G_NOCOMMON = { u8g_dev_ili9325d_320x240_fn, &u8g_ili9325d_320x240_8h8_pb, u8g_com_arduino_port_d_wr_fn }; +//u8g_dev_t u8g_dev_ili9325d_320x240_8bit = { u8g_dev_ili9325d_320x240_fn, &u8g_ili9325d_320x240_8h8_pb, u8g_com_arduino_parallel_fn }; + +//U8G_PB_DEV(u8g_dev_ili9325d_320x240_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ili9325d_320x240_fn, U8G_COM_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c new file mode 100644 index 000000000..47ba18d4e --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c @@ -0,0 +1,110 @@ +/* + + u8g_dev_ks0108_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + ADDRESS = 0 (Command Mode) + 0x03f Display On + 0x0c0 Start Display at line 0 + 0x040 | y write to y address (y:0..63) + 0x0b8 | x write to page [0..7] + + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_ks0108_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip 1 */ + 0x03f, /* display on */ + 0x0c0, /* start at line 0 */ + U8G_ESC_DLY(20), /* delay 20 ms */ + U8G_ESC_CS(2), /* enable chip 2 */ + 0x03f, /* display on */ + 0x0c0, /* start at line 0 */ + U8G_ESC_DLY(20), /* delay 20 ms */ + U8G_ESC_CS(0), /* disable all chips */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_ks0108_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ks0108_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 2); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (KS0108b) */ + u8g_WriteByte(u8g, dev, 0x040 ); /* set address 0 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, 64, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (KS0108b) */ + u8g_WriteByte(u8g, dev, 0x040 ); /* set address 0 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, 64, 64+(uint8_t *)pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + } + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ks0108_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ks0108_128x64_fn, U8G_COM_PARALLEL); +U8G_PB_DEV(u8g_dev_ks0108_128x64_fast, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ks0108_128x64_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c new file mode 100644 index 000000000..b7bf6755e --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c @@ -0,0 +1,147 @@ +/* + + u8g_dev_lc7981_160x80.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 160 +#define HEIGHT 80 +#define PAGE_HEIGHT 8 + + +/* + code ideas: + https://github.com/vsergeev/embedded-drivers/tree/master/avr-lc7981 + data sheets: + http://www.lcd-module.de/eng/pdf/zubehoer/lc7981.pdf + http://www.lcd-module.de/pdf/grafik/w160-6.pdf +*/ + +static const uint8_t u8g_dev_lc7981_160x80_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_160x80_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_160x80_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_160x80_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_160x80_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c new file mode 100644 index 000000000..272b7c4cb --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_240x128.c + + Hitachi Display SP14N002 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + + +/* + http://www.mark-products.com/graphics.htm#240x128%20Pixel%20Format +*/ + +static const uint8_t u8g_dev_lc7981_240x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_240x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_240x128_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_240x128_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c new file mode 100644 index 000000000..781f1d90a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_240x64.c + + Tested with Nan Ya LM_J6_003_ + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +static const uint8_t u8g_dev_lc7981_240x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_240x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_240x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_240x64_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c new file mode 100644 index 000000000..d9ae9369f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_320x64.c + + Note: Requires 16 bit mode (Must be enabled in u8g.h) + + Tested with Varitronix MGLS32064-03.pdf + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 320 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* + http://www.gaw.ru/pdf/lcd/lcm/Varitronix/graf/MGLS32064-03.pdf +*/ + +static const uint8_t u8g_dev_lc7981_320x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_320x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_320x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_320x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_320x64_fn, U8G_COM_FAST_PARALLEL); diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_null.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_null.c new file mode 100644 index 000000000..0e3907749 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_null.c @@ -0,0 +1,67 @@ +/* + + u8g_dev_null.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_null(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: /* most often used command */ + break; + case U8G_DEV_MSG_SET_PIXEL: + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + break; + case U8G_DEV_MSG_PAGE_NEXT: + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return 1; +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + } + return 1; +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c new file mode 100644 index 000000000..4cc011379 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c @@ -0,0 +1,110 @@ +/* + + u8g_dev_pcd8544_84x48.c + + Display: Nokia 84x48 + + Status: Tested with PCF8812 Display + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 84 +#define HEIGHT 48 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_pcd8544_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x013, /* bias system 1:48 */ + 0x0c0, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_pcd8544_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcd8544_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_pcd8544_84x48_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcd8544_fn, U8G_COM_SW_SPI); + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c new file mode 100644 index 000000000..3ac57884f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c @@ -0,0 +1,123 @@ +/* + + u8g_dev_pcf8812_96x65.c + + Display: Nokia 96x65 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + om6206 comaptible to pcf8812 ? + + Status: Tested + + + Display Controller Seen in + LPH7366 (9 pins, 84x48) PCD8544 Nokia 5110 / 5120 / 5130 / 5160 / 6110 / 6150 + LPH7677 (8 pins, 84x48) PCD8544 Nokia 3210 + LPH7779 (8 pins, 84x48) PCD8544 Nokia 3310 / 3315 / 3330 / 3110, also 3410? + ??? PCD8544 Nokia 5110 / 6110 + LPH7690 ? (96x65) PCF8455/OM6202 Nokia 3410 + LPH7690 ? (96x65?) SED1565/S1D15605 Nokia 7110 / 3510? + LPH7690 ??? Nokia 6210 + + + +*/ + +#include "u8g.h" + +#define WIDTH 96 +#define HEIGHT 65 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_pcf8812_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x013, /* bias system 1:48 */ + 0x080 | 0x040, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_pcf8812_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcf8812_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +/* u8g_com_arduino_sw_spi_fn does not work, too fast??? */ +U8G_PB_DEV(u8g_dev_pcf8812_96x65_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcf8812_fn, U8G_COM_SW_SPI); diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c new file mode 100644 index 000000000..3b0bcd625 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c @@ -0,0 +1,107 @@ +/* + + u8g_dev_sbn1661_122x32.c + + WG12232 display with 2xSBN1661 / SED1520 controller (122x32 display) + At the moment only available in the Arduino Environment + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 122 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_sbn1661_122x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip 1 */ + 0x0af, /* display on */ + 0x0c0, /* display start at line 0 */ + 0x0a0, /* a0: ADC forward, a1: ADC reverse */ + 0x0a9, /* a8: 1/16, a9: 1/32 duty */ + U8G_ESC_CS(2), /* enable chip 2 */ + 0x0af, /* display on */ + 0x0c0, /* display start at line 0 */ + 0x0a0, /* a0: ADC forward, a1: ADC reverse */ + 0x0a9, /* a8: 1/16, a9: 1/32 duty */ + + U8G_ESC_CS(0), /* disable chip */ + + + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_sbn1661_122x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_sbn1661_122x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (SBN1661/SED1520) */ + u8g_WriteByte(u8g, dev, 0x000 ); /* set X address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/2, pb->buf); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 2); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (SBN1661/SED1520) */ + u8g_WriteByte(u8g, dev, 0x000 ); /* set X address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/2, WIDTH/2+(uint8_t *)pb->buf); + + u8g_SetChipSelect(u8g, dev, 0); + + } + break; + case U8G_DEV_MSG_CONTRAST: + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +/* u8g_com_arduino_sw_spi_fn does not work, too fast??? */ +U8G_PB_DEV(u8g_dev_sbn1661_122x32 , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sbn1661_122x32_fn, u8g_com_arduino_no_en_parallel_fn); diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c new file mode 100644 index 000000000..8f294374b --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c @@ -0,0 +1,247 @@ +/* + + u8g_dev_ssd1306_128x32.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + 23 Feb 2013: Fixed, Issue 147 + +*/ + + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +/* init sequence adafruit 128x32 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit1_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x010, /* [1] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* [1] set contrast control */ + 0x0d9, 0x022, /* [1] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence adafruit 128x32 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit2_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence adafruit 128x32 OLED (TESTED - WORKING 23.02.13), like adafruit3, but with page addressing mode */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit3_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x01f, /* Feb 23, 2013: 128x32 OLED: 0x01f, 128x64 OLED 0x03f */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5), Feb 23, 2013: 128x32 OLED: 0x002, 128x64 OLED 0x012 */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence Univision datasheet (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_univision_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* multiplex ratio */ + 0x0d3, 0x000, /* display offset */ + 0x040, /* start line */ + 0x08d, 0x010, /* charge pump setting (p62): 0x014 enable, 0x010 disable */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* set contrast control */ + 0x0d9, 0x022, /* pre-charge period */ + 0x0db, 0x040, /* vcomh deselect level */ + 0x022, 0x000, /* page addressing mode WRONG: 3 byte cmd! */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* select one init sequence here */ +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_univision_init_seq +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit1_init_seq +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit2_init_seq +#define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit3_init_seq + + +static const uint8_t u8g_dev_ssd1306_128x32_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr. to 0 */ + 0x000, /* set lower 4 bit of the col adr. to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1306_128x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; +} + + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1306_128x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x32_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_SSD_I2C); + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c new file mode 100644 index 000000000..a49b2d806 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c @@ -0,0 +1,237 @@ +/* + + u8g_dev_ssd1306_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence adafruit 128x64 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit1_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x010, /* [1] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* [1] set contrast control */ + 0x0d9, 0x022, /* [1] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence adafruit 128x64 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit2_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence adafruit 128x64 OLED (NOT TESTED), like adafruit3, but with page addressing mode */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit3_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x002, /* 2012-05-27: page addressing mode */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence Univision datasheet (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_univision_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* multiplex ratio */ + 0x0d3, 0x000, /* display offset */ + 0x040, /* start line */ + 0x08d, 0x010, /* charge pump setting (p62): 0x014 enable, 0x010 disable */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* set contrast control */ + 0x0d9, 0x022, /* pre-charge period */ + 0x0db, 0x040, /* vcomh deselect level */ + 0x022, 0x000, /* page addressing mode WRONG: 3 byte cmd! */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* select one init sequence here */ +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_univision_init_seq +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit1_init_seq +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit2_init_seq +#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit3_init_seq + + +static const uint8_t u8g_dev_ssd1306_128x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1306_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1306_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_SSD_I2C); diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c new file mode 100644 index 000000000..d16013fb7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c @@ -0,0 +1,144 @@ +/* + + u8g_dev_ssd1309_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* ssd1309 ini sequence*/ +static const uint8_t u8g_dev_ssd1309_128x64_init_seq[] PROGMEM={ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0xfd,0x12, /*Command Lock */ + 0xae, /*Set Display Off */ + 0xd5,0xa0, /*set Display Clock Divide Ratio/Oscillator Frequency */ + 0xa8,0x3f, /*Set Multiplex Ratio */ + 0x3d,0x00, /*Set Display Offset*/ + 0x40, /*Set Display Start Line*/ + 0xa1, /*Set Segment Re-Map*/ + 0xc8, /*Set COM Output Scan Direction*/ + 0xda,0x12, /*Set COM Pins Hardware Configuration*/ + 0x81,0xdf, /*Set Current Control */ + 0xd9,0x82, /*Set Pre-Charge Period */ + 0xdb,0x34, /*Set VCOMH Deselect Level */ + 0xa4, /*Set Entire Display On/Off */ + 0xa6, /*Set Normal/Inverse Display*/ + U8G_ESC_VCC(1), /*Power up VCC & Stabilized */ + U8G_ESC_DLY(50), + 0xaf, /*Set Display On */ + U8G_ESC_DLY(50), + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* select one init sequence here */ + #define u8g_dev_ssd1309_128x64_init_seq u8g_dev_ssd1309_128x64_init_seq + + + static const uint8_t u8g_dev_ssd1309_128x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1309_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1309_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1309_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1309_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_SSD_I2C); + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c new file mode 100644 index 000000000..24b94ffc7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c @@ -0,0 +1,334 @@ +/* + + u8g_dev_ssd1322_nhd31oled_bw.c + + 1-Bit (BW) Driver for SSD1322 Controller (OLED Display) + Tested with NHD-3.12-25664 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#if defined(U8G_16BIT) +#define WIDTH 256 +#else +#define WIDTH 248 +#endif +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* + http://www.newhavendisplay.com/app_notes/OLED_25664.txt + http://www.newhavendisplay.com/forum/viewtopic.php?f=15&t=3758 +*/ + +static const uint8_t u8g_dev_ssd1322_1bit_nhd_312_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0fd, /* lock command */ + U8G_ESC_ADR(1), /* data mode */ + 0x012, /* unlock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ae, /* display off, sleep mode */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b3, + U8G_ESC_ADR(1), /* data mode */ + 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 80 frames/sec) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ca, /* multiplex ratio */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, /* 1/64 Duty (0x0F~0x3F) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a2, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display offset, shift mapping ram counter */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a1, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display start line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a0, /* Set Re-Map / Dual COM Line Mode */ + U8G_ESC_ADR(1), /* data mode */ + 0x014, /* was 0x014 */ + 0x011, /* was 0x011 */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ab, + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* Enable Internal VDD Regulator */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b4, /* Display Enhancement A */ + U8G_ESC_ADR(1), /* data mode */ + 0x0a0, + 0x005|0x0fd, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c1, /* contrast */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c7, /* Set Scale Factor of Segment Output Current Control */ + U8G_ESC_ADR(1), /* data mode */ + 0x00f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b9, /* linear gray scale */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b1, /* Phase 1 (Reset) & Phase 2 (Pre-Charge) Period Adjustment */ + U8G_ESC_ADR(1), /* data mode */ + 0x0e2, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0d1, /* Display Enhancement B */ + U8G_ESC_ADR(1), /* data mode */ + 0x082|0x020, + 0x020, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0bb, /* precharge voltage */ + U8G_ESC_ADR(1), /* data mode */ + 0x01f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b6, /* precharge period */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0be, /* vcomh */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a6, /* normal display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a9, /* exit partial display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0af, /* display on */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1322_1bit_nhd_312_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + U8G_ESC_ADR(1), /* data mode */ + 0x01c, /* start at column 0 */ + 0x05b, /* end column */ + U8G_ESC_ADR(0), /* instruction mode */ + 0x075, /* row address... */ + U8G_ESC_ADR(1), /* data mode */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1322_1bit_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_ssd1322_nhd31oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_1bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_1bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_HW_SPI); + +#define DWIDTH (WIDTH*2) +uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1322_nhd31oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1322_nhd31oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi = { u8g_dev_ssd1322_nhd31oled_2x_bw_fn, &u8g_dev_ssd1322_nhd31oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi = { u8g_dev_ssd1322_nhd31oled_2x_bw_fn, &u8g_dev_ssd1322_nhd31oled_2x_bw_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c new file mode 100644 index 000000000..5b509641c --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c @@ -0,0 +1,333 @@ +/* + + u8g_dev_ssd1322_nhd31oled_gr.c + + 2-Bit (4L) Driver for SSD1322 Controller (OLED Display) + Tested with NHD-3.12-25664 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#if defined(U8G_16BIT) +#define WIDTH 256 +#else +#define WIDTH 248 +#endif +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* + http://www.newhavendisplay.com/app_notes/OLED_25664.txt + http://www.newhavendisplay.com/forum/viewtopic.php?f=15&t=3758 +*/ + +static const uint8_t u8g_dev_ssd1322_2bit_nhd_312_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0fd, /* lock command */ + U8G_ESC_ADR(1), /* data mode */ + 0x012, /* unlock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ae, /* display off, sleep mode */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b3, + U8G_ESC_ADR(1), /* data mode */ + 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 80 frames/sec) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ca, /* multiplex ratio */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, /* 1/64 Duty (0x0F~0x3F) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a2, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display offset, shift mapping ram counter */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a1, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display start line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a0, /* Set Re-Map / Dual COM Line Mode */ + U8G_ESC_ADR(1), /* data mode */ + 0x014, /* was 0x014 */ + 0x011, /* was 0x011 */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ab, + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* Enable Internal VDD Regulator */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b4, /* Display Enhancement A */ + U8G_ESC_ADR(1), /* data mode */ + 0x0a0, + 0x005|0x0fd, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c1, /* contrast */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c7, /* Set Scale Factor of Segment Output Current Control */ + U8G_ESC_ADR(1), /* data mode */ + 0x00f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b9, /* linear gray scale */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b1, /* Phase 1 (Reset) & Phase 2 (Pre-Charge) Period Adjustment */ + U8G_ESC_ADR(1), /* data mode */ + 0x0e2, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0d1, /* Display Enhancement B */ + U8G_ESC_ADR(1), /* data mode */ + 0x082|0x020, + 0x020, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0bb, /* precharge voltage */ + U8G_ESC_ADR(1), /* data mode */ + 0x01f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b6, /* precharge period */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0be, /* vcomh */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a6, /* normal display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a9, /* exit partial display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0af, /* display on */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1322_2bit_nhd_312_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + U8G_ESC_ADR(1), /* data mode */ + 0x01c, /* start at column 0 */ + 0x05b, /* end column */ + U8G_ESC_ADR(0), /* instruction mode */ + 0x075, /* row address... */ + U8G_ESC_ADR(1), /* data mode */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1322_2bit_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1322_nhd31oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_2bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h2_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_2bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h2_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_HW_SPI); + +#define DWIDTH (WIDTH*2) +uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1322_nhd31oled_2x_gr_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1322_nhd31oled_2x_gr_buf}; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi = { u8g_dev_ssd1322_nhd31oled_2x_gr_fn, &u8g_dev_ssd1322_nhd31oled_2x_gr_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi = { u8g_dev_ssd1322_nhd31oled_2x_gr_fn, &u8g_dev_ssd1322_nhd31oled_2x_gr_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c new file mode 100644 index 000000000..95853bdf2 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c @@ -0,0 +1,263 @@ +/* + + u8g_dev_ssd1325_nhd27oled_bw.c + + 1-Bit (BW) Driver for SSD1325 Controller (OLED Display) + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#ifdef OBSOLETE_CODE + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x056, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1325_1bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 3; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 7; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1325_1bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 1; + page += is_odd; + + page <<= 3; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 7; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +#ifdef OLD +static void _OLD_u8g_dev_ssd1325_1bit_write_16_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, cnt; + cnt = 8; + do + { + d = 0; + if ( left & 1 ) + d |= 0x0f0; + if ( right & 1 ) + d |= 0x00f; + u8g_WriteByte(u8g, dev, d); + left >>= 1; + right >>= 1; + cnt--; + }while ( cnt > 0 ); +} +#endif + +static void u8g_dev_ssd1325_1bit_write_16_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, cnt; + static uint8_t buf[8]; + cnt = 8; + do + { + d = 0; + if ( left & 128 ) + d |= 0x0f0; + if ( right & 128 ) + d |= 0x00f; + cnt--; + buf[cnt] = d; + left <<= 1; + right <<= 1; + }while ( cnt > 0 ); + u8g_WriteSequence(u8g, dev, 8, buf); +} + +static void u8g_dev_ssd1325_1bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_1bit_write_16_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +uint8_t u8g_dev_ssd1325_nhd27oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_1bit_prepare_page(u8g, dev); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 0); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_1bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 0); + u8g_dev_ssd1325_1bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +/* disabled, see bw_new.c */ +/* +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_parallel , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_FAST_PARALLEL); +*/ + +/* +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_FAST_PARALLEL }; +*/ + +#endif + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c new file mode 100644 index 000000000..c9f4a51ad --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c @@ -0,0 +1,232 @@ +/* + + u8g_dev_ssd1325_nhd27oled_bw.c + + 1-Bit (BW) Driver for SSD1325 Controller (OLED Display) + Horizontal architecture, completly rewritten + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_nhd_27_12864_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x052, /* remap configuration, horizontal address increment (bit 2 = 0), enable nibble remap (upper nibble is left, bit 1 = 1) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a4, /* normal display mode */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_prepare_row_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1325_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_prepare_row_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + //u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + //u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +static uint8_t u8g_dev_ssd1325_nhd27oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + //case U8G_DEV_MSG_IS_BBX_INTERSECTION: + // return u8g_pb_IsIntersection((u8g_pb_t *)(dev->dev_mem), (u8g_dev_arg_bbx_t *)arg); + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_nhd_27_12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_nhd_27_12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + + + +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_sw_spi , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_hw_spi , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_parallel , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_FAST_PARALLEL); + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_FAST_PARALLEL }; + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c new file mode 100644 index 000000000..d00d18ec4 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c @@ -0,0 +1,255 @@ +/* + + u8g_dev_ssd1325_nhd27oled_gr.c + + 2-Bit (gray level) Driver for SSD1325 Controller (OLED Display) + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#ifdef OBSOLETE_CODE + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x056, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1325_2bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1325_2bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 1; + page += is_odd; + + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +static void u8g_dev_ssd1325_2bit_write_4_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, tmp, cnt; + cnt = 4; + do + { + d = left; + d &= 3; + d <<= 4; + tmp = right; + tmp &= 3; + d |= tmp; + d <<= 2; + u8g_WriteByte(u8g, dev, d); + left >>= 2; + right >>= 2; + cnt--; + }while ( cnt > 0 ); +} + +static void u8g_dev_ssd1325_2bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + cnt = pb->width; + cnt >>= 1; + ptr = pb->buf; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static void u8g_dev_ssd1325_2bit_2x_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_2bit_prepare_page(u8g, dev); + u8g_dev_ssd1325_2bit_write_buffer(u8g, dev); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_2bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1325_2bit_2x_write_buffer(u8g, dev, 0); + u8g_dev_ssd1325_2bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1325_2bit_2x_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +//U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_SW_SPI); +//U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_HW_SPI); + +//uint8_t u8g_dev_ssd1325_nhd27oled_2x_buf[WIDTH*2] U8G_NOCOMMON ; +//u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_buf}; +//u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_SW_SPI }; +//u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_HW_SPI }; + + +#endif /* OBSOLETE_CODE */ diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c new file mode 100644 index 000000000..2e61d9a57 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c @@ -0,0 +1,227 @@ +/* + + u8g_dev_ssd1325_nhd27oled_gr.c + + 2-Bit (gray level) Driver for SSD1325 Controller (OLED Display) + Rewritten with new architecture + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x052, /* remap configuration, horizontal address increment (bit 2 = 0), enable nibble remap (upper nibble is left, bit 1 = 1), old values: 0x0a0 0x0a6 */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a4, /* normal display mode */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1325_gr_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + //u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + //u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + + +static uint8_t u8g_dev_ssd1325_nhd27oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_gr_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h2_base_fn(u8g, dev, msg, arg); +} + + + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_gr_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c new file mode 100644 index 000000000..5e3b44674 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c @@ -0,0 +1,299 @@ +/* + + u8g_dev_ssd1327_96x96_gr.c + + 2-Bit (graylevel) Driver for SSD1327 Controller (OLED Display) + Tested with Seedstudio 96x96 Oled (LY120) + http://www.seeedstudio.com/wiki/index.php?title=Twig_-_OLED_96x96 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +#define WIDTH 96 +#define HEIGHT 96 +#define XOFFSET 8 + +/* + http://www.seeedstudio.com/wiki/index.php?title=Twig_-_OLED_96x96 +*/ +static const uint8_t u8g_dev_ssd1327_2bit_96x96_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0fd, 0x012, /* unlock display, usually not required because the display is unlocked after reset */ + 0x0ae, /* display off, sleep mode */ + 0x0a8, 0x05f, /* multiplex ratio: 0x05f * 1/64 duty */ + 0x0a1, 0x000, /* display start line */ + 0x0a2, 0x060, /* display offset, shift mapping ram counter */ + //0x0a2, 0x04c, /* NHD: display offset, shift mapping ram counter */ + 0x0a0, 0x046, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + //0x0a0, 0x056, /* NHD: remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x0ab, 0x001, /* Enable internal VDD regulator (RESET) */ + 0x081, 0x053, /* contrast, brightness, 0..128, Newhaven: 0x040, LY120 0x053, 0x070 seems also ok */ + 0x0b1, 0x051, /* phase length */ + 0x0b3, 0x001, /* set display clock divide ratio/oscillator frequency */ + 0x0b9, /* use linear lookup table */ +#if 0 + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 +#endif + 0x0bc, 0x008, /* pre-charge voltage level */ + 0x0be, 0x007, /* VCOMH voltage */ + 0x0b6, 0x001, /* second precharge */ + 0x0d5, 0x062, /* enable second precharge, internal vsl (bit0 = 0) */ + +#if 0 + // the following commands are not used by the SeeedGrayOLED sequence */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ +#endif + + 0x0a5, /* all pixel on */ + //0x02e, /* no scroll (according to SeeedGrayOLED sequence) */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + + 0x015, /* column address... */ + 0x008, /* start at column 8, special for the LY120 ??? */ + 0x037, /* end at column 55, note: there are two pixel in one column */ + + 0x075, /* row address... */ + 0x008, + 0x05f, + + U8G_ESC_ADR(1), /* data mode */ + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1327_2bit_96x96_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + XOFFSET, /* start at column 8, special for the LY120 ??? */ + 0x037, /* end at column 55, note: there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1327_2bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_prepare_page_seq); + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1327_2bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_prepare_page_seq); + + page <<= 1; + page += is_odd; + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +static void u8g_dev_ssd1327_2bit_write_4_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, tmp, cnt; + static uint8_t buf[4]; + buf[0] = 0; + buf[1] = 0; + buf[2] = 0; + buf[3] = 0; + cnt = 0; + do + { + if ( left == 0 && right == 0 ) + break; + d = left; + d &= 3; + d <<= 4; + tmp = right; + tmp &= 3; + d |= tmp; + d <<= 2; + buf[cnt] = d; + left >>= 2; + right >>= 2; + cnt++; + }while ( cnt < 4 ); + u8g_WriteSequence(u8g, dev, 4, buf); +} + +static void u8g_dev_ssd1327_2bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + cnt = pb->width; + cnt >>= 1; + ptr = pb->buf; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1327_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static void u8g_dev_ssd1327_2bit_2x_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1327_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +uint8_t u8g_dev_ssd1327_96x96_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1327_2bit_prepare_page(u8g, dev); + u8g_dev_ssd1327_2bit_write_buffer(u8g, dev); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1327_96x96_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1327_2bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1327_2bit_2x_write_buffer(u8g, dev, 0); + u8g_dev_ssd1327_2bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1327_2bit_2x_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_i2c , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_SSD_I2C); + +#define DWIDTH (2*WIDTH) +uint8_t u8g_dev_ssd1327_96x96_2x_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1327_96x96_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1327_96x96_2x_buf}; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_SSD_I2C }; + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_64128n.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_64128n.c new file mode 100644 index 000000000..01fc9fc0c --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_64128n.c @@ -0,0 +1,153 @@ +/* + + u8g_dev_st7565_64128n.c (Displaytech) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_64128n_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0A2, /* 0x0a2: LCD bias 1/9 (according to Displaytech 64128N datasheet) */ + 0x0A0, /* Normal ADC Select (according to Displaytech 64128N datasheet) */ + + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x040, /* Display start line for Displaytech 64128N */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x010, /* Set V0 voltage resistor ratio. Setting for controlling brightness of Displaytech 64128N */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x01e, /* Contrast value. Setting for controlling brightness of Displaytech 64128N */ + + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0x10 */ + 0x000, /* set lower 4 bit of the col adr to 0x00. Changed for DisplayTech 64128N */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_64128n_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_64128n_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_64128n_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_HW_SPI); + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c new file mode 100644 index 000000000..095ef369c --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c @@ -0,0 +1,140 @@ +/* + + u8g_dev_st7565_dogm128.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +const uint8_t u8g_dev_st7565_dogm128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode: set scan direction normal operation */ + 0x0a6, /* display normal (none reverse) */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value, EA default: 0x016 */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0a4, /* normal display (not all on) */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_dogm128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_dogm128_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_dogm128_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c new file mode 100644 index 000000000..a76d54b3f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c @@ -0,0 +1,157 @@ +/* + + u8g_dev_st7565_dogm132.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 132 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_st7565_dogm132_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x01f, /* contrast value, EA default: 0x01f */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + +#ifdef OBSOLETE_DOGM128 + 0x040, /* set display start line */ + 0x0c8, /* set scan direction inverse operation */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value, EA default: 0x016 */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ +#endif + + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_dogm132_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_dogm132_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm132_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_dogm132_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm132_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c new file mode 100644 index 000000000..ab8ed39b6 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c @@ -0,0 +1,157 @@ +/* + + u8g_dev_st7565_lm6059.c (Adafruit display) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_lm6059_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0a3, /* 0x0a2: LCD bias 1/9 (suggested for the LM6063), 0x0a3: Used by Adafruit, 0x0a2 does not work */ + /* the LM6059 vs LM6063, ADC and SHL have inverted settings */ + 0x0a0, /* 0x0a1: ADC set to normal (suggested for the LM6059), 0x0a0: Used by Adafruit -> normal mode */ + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x060, /* set display start line */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x026, /* set V0 voltage resistor ratio to 6 (Adafruit Value, no info from LM6063 Manual) */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + + /*0x0ac,*/ /* indicator */ + /*0x000,*/ /* disable */ + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x001, /* set lower 4 bit of the col adr */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_st7565_lm6059_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_lm6059_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6059_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_lm6059_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6059_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c new file mode 100644 index 000000000..47ccb1ec7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c @@ -0,0 +1,188 @@ +/* + + u8g_dev_st7565_lm6063.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +#ifdef OLD_ADAFRUIT_CODE +static const uint8_t OLD_u8g_dev_st7565_lm6063_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select / 17 Jan: seems to be a bug, must be 0x0c0 */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + /*0x0f8,*/ /* set booster ratio to */ + /*0x000, */ /* 4x */ + /*0x027,*/ /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; +#endif + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_lm6063_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0a3, /* 0x0a2: LCD bias 1/9 (suggested for the LM6063), 0x0a3: Used by Adafruit */ + 0x0a1, /* 0x0a1: ADC set to reverse (suggested for the LM6063), 0x0a0: Used by Adafruit -> normal mode */ + 0x0c0, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x040, /* set display start line */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x026, /* set V0 voltage resistor ratio to 6 (Adafruit Value, no info from LM6063 Manual) */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + + /*0x0ac,*/ /* indicator */ + /*0x000,*/ /* disable */ + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6063_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_st7565_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_st7565_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_st7565_lm6063_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_st7565_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_st7565_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_lm6063_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6063_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_lm6063_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6063_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c new file mode 100644 index 000000000..ed80a0693 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c @@ -0,0 +1,143 @@ +/* + + u8g_dev_st7565_nhd_c12832.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_st7565_c12832_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a0, /* ADC set, values: a0=normal, a1=reverse */ + 0x0c8, /* common output mode: c0=normal, c8=reverse */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x00a, /* contrast value */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_c12832_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_PARALLEL); diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c new file mode 100644 index 000000000..5e3f8b9fe --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_st7565_nhd_c12864.c + + Support for the NHD-C12864A1Z-FSB-FBW (Newhaven Display) + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +const uint8_t u8g_dev_st7565_nhd_c12864_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(10), /* do reset low pulse with (10*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode: set scan direction normal operation */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x008, /* contrast: 0x008 is a good value for NHD C12864, Nov 2012: User reports that 0x1a is much better */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_nhd_c12864_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x004, /* set lower 4 bit of the col adr to 4 (NHD C12864) */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12864_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12864_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_nhd_c12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12864_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12864_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_nhd_c12864_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_nhd_c12864_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12864_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_nhd_c12864_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c new file mode 100644 index 000000000..4851017aa --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c @@ -0,0 +1,420 @@ +/* + + u8g_dev_st7687_c144mvgd.c (1.44" TFT) + + Status: Started, but not finished + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + + +#ifdef FIRST_VERSION +/* +see also: read.pudn.com/downloads115/sourcecode/app/484503/LCM_Display.c__.htm +http://en.pudn.com/downloads115/sourcecode/app/detail484503_en.html +*/ + +static const uint8_t u8g_dev_st7687_c144mvgd_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x001, /* A0=0, SW reset */ + U8G_ESC_DLY(200), /* delay 200 ms */ + + 0x0d7, /* EEPROM data auto re-load control */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, /* ARD = 1 */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0e0, /* EEPROM control in */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + +#ifdef NOT_REQUIRED + 0x0fa, /* EEPROM function selection 8.1.66 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ +#endif + + 0x0e3, /* Read from EEPROM, 8.1.55 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0e1, /* EEPROM control out, 8.1.53 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + //0x028, /* display off */ + 0x011, /* Sleep out & booster on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0c0, /* Vop setting, 8.1.42 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x001, /* 3.6 + 256*0.04 = 13.84 Volt */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0c3, /* Bias selection, 8.1.45 */ + U8G_ESC_ADR(1), /* data mode */ + 0x003, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c4, /* Booster setting 8.1.46 */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c5, /* ??? */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0cb, /* FV3 with Booster x2 control, 8.1.47 */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x036, /* Memory data access control, 8.1.28 */ + U8G_ESC_ADR(1), /* data mode */ + 0x080, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b5, /* N-line control, 8.1.37 */ + U8G_ESC_ADR(1), /* data mode */ + 0x089, + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0d0, /* Analog circuit setting, 8.1.49 */ + U8G_ESC_ADR(1), /* data mode */ + 0x01d, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b7, /* Com/Seg Scan Direction, 8.1.38 */ + U8G_ESC_ADR(1), /* data mode */ + 0x040, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x025, /* Write contrast, 8.1.17 */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x03a, /* Interface pixel format, 8.1.32 */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, /* 3: 12 bit per pixel Type A, 4: 12 bit Type B, 5: 16bit per pixel */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b0, /* Display Duty setting, 8.1.34 */ + U8G_ESC_ADR(1), /* data mode */ + 0x07f, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f0, /* Frame Freq. in Temp range A,B,C and D, 8.1.59 */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + 0x00c, + 0x00c, + 0x015, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f9, /* Frame RGB Value, 8.1.65 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, + 0x005, + 0x008, + 0x00a, + 0x00c, + 0x00e, + 0x010, + 0x011, + 0x012, + 0x013, + 0x014, + 0x015, + 0x016, + 0x018, + 0x01a, + 0x01b, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f9, /* Frame RGB Value, 8.1.65 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, + 0x000, + 0x000, + 0x000, + 0x033, + 0x055, + 0x055, + 0x055, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x029, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ + +}; + +#else + +/* +http://www.waitingforfriday.com/images/e/e3/FTM144D01N_test.zip +*/ + +static const uint8_t u8g_dev_st7687_c144mvgd_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x011, /* Sleep out & booster on */ + U8G_ESC_DLY(5), /* delay 5 ms */ + + 0x03a, /* Interface pixel format, 8.1.32 */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, /* 3: 12 bit per pixel Type A, 4: 12 bit Type B, 5: 16bit per pixel */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x026, /* SET_GAMMA_CURVE */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f2, /* GAM_R_SEL */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* enable gamma adj */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0e0, /* POSITIVE_GAMMA_CORRECT */ + U8G_ESC_ADR(1), /* data mode */ + 0x3f, + 0x25, + 0x1c, + 0x1e, + 0x20, + 0x12, + 0x2a, + 0x90, + 0x24, + 0x11, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0e1, /* NEGATIVE_GAMMA_CORRECT */ + U8G_ESC_ADR(1), /* data mode */ + 0x20, + 0x20, + 0x20, + 0x20, + 0x05, + 0x00, + 0x15, + 0xa7, + 0x3d, + 0x18, + 0x25, + 0x2a, + 0x2b, + 0x2b, + 0x3a, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b1, /* FRAME_RATE_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, /* DIVA = 8 */ + 0x008, /* VPA = 8 */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0b4, /* DISPLAY_INVERSION */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, /* NLA = 1, NLB = 1, NLC = 1 (all on Frame Inversion) */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c0, /* POWER_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x00a, /* VRH = 10: GVDD = 4.30 */ + 0x002, /* VC = 2: VCI1 = 2.65 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c1, /* POWER_CONTROL2 */ + U8G_ESC_ADR(1), /* data mode */ + 0x002, /* BT = 2: AVDD = 2xVCI1, VCL = -1xVCI1, VGH = 5xVCI1, VGL = -2xVCI1 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c5, /* VCOM_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x050, /* VMH = 80: VCOMH voltage = 4.5 */ + 0x05b, /* VML = 91: VCOML voltage = -0.225 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c7, /* VCOM_OFFSET_CONTROL */ + U8G_ESC_ADR(1), /* data mode */ + 0x040, /* nVM = 0, VMF = 64: VCOMH output = VMH, VCOML output = VML */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x02a, /* SET_COLUMN_ADDRESS */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x000, /* */ + 0x000, /* */ + 0x07f, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x02b, /* SET_PAGE_ADDRESS */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x000, /* */ + 0x000, /* */ + 0x07f, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x036, /* SET_ADDRESS_MODE */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* Select display orientation */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x029, /* display on */ + + 0x02c, /* write start */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ + +}; + +#endif + + + + +/* calculate bytes for Type B 4096 color display */ +static uint8_t get_byte_1(uint8_t v) +{ + v >>= 4; + v &= 0x0e; + return v; +} + +static uint8_t get_byte_2(uint8_t v) +{ + uint8_t w; + w = v; + w &= 3; + w = (w<<2) | w; + v <<= 3; + v &= 0x0e0; + w |= v; + return w; +} + +uint8_t u8g_dev_st7687_c144mvgd_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7687_c144mvgd_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i, j; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02a ); /* Column address set 8.1.20 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, 0x000 ); /* x0 */ + u8g_WriteByte(u8g, dev, WIDTH-1 ); /* x1 */ + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02b ); /* Row address set 8.1.21 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, y ); /* y0 */ + u8g_WriteByte(u8g, dev, y+PAGE_HEIGHT-1 ); /* y1 */ + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02c ); /* Memory write 8.1.22 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + + for( j = 0; j < WIDTH; j ++ ) + { + u8g_WriteByte(u8g, dev, get_byte_1(*ptr) ); + u8g_WriteByte(u8g, dev, get_byte_2(*ptr) ); + ptr++; + } + } + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_st7687_c144mvgd_8h8_buf[WIDTH*8] U8G_NOCOMMON ; +u8g_pb_t u8g_st7687_c144mvgd_8h8_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_st7687_c144mvgd_8h8_buf}; + +u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi = { u8g_dev_st7687_c144mvgd_fn, &u8g_st7687_c144mvgd_8h8_pb, u8g_com_arduino_sw_spi_fn }; + +u8g_dev_t u8g_dev_st7687_c144mvgd_8bit = { u8g_dev_st7687_c144mvgd_fn, &u8g_st7687_c144mvgd_8h8_pb, U8G_COM_PARALLEL }; diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_128x64.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_128x64.c new file mode 100644 index 000000000..b0b18d34d --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_128x64.c @@ -0,0 +1,171 @@ +/* + + u8g_dev_st7565_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + + if ( y < 32 ) + { + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + } + else + { + u8g_WriteByte(u8g, dev, 0x080 | (y-32) ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 | 8); /* set x pos to 64*/ + } + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_128x64_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + + if ( y < 32 ) + { + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + } + else + { + u8g_WriteByte(u8g, dev, 0x080 | (y-32) ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 | 8); /* set x pos to 64*/ + } + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7920_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_128x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_FAST_PARALLEL); + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_128x64_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_128x64_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_128x64_4x_buf}; +u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_128x64_4x_8bit = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_FAST_PARALLEL }; + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_192x32.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_192x32.c new file mode 100644 index 000000000..28535e0cd --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_192x32.c @@ -0,0 +1,151 @@ +/* + + u8g_dev_st7920_192x32.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 192 +#define HEIGHT 32 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_192x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_192x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_192x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_192x32_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_192x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_st7920_192x32_sw_spi, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_192x32_hw_spi, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_192x32_8bit, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_FAST_PARALLEL); + + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_192x32_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_192x32_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_192x32_4x_buf}; +u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_192x32_4x_8bit = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_FAST_PARALLEL }; + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_202x32.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_202x32.c new file mode 100644 index 000000000..129fc748f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_st7920_202x32.c @@ -0,0 +1,154 @@ +/* + + u8g_dev_st7920_202x32.c + tested with CFAG20232 + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 202 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_202x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_202x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_202x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_202x32_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_202x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_st7920_202x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_202x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_202x32_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_FAST_PARALLEL); + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_202x32_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_202x32_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_202x32_4x_buf}; +u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_202x32_4x_8bit = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_FAST_PARALLEL }; + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_128x64.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_128x64.c new file mode 100644 index 000000000..c1626ccc1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_128x64.c @@ -0,0 +1,191 @@ +/* + + u8g_dev_t6963_128x64.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 16 + + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_128x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_128x64_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_128x64_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_128x64_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_128x64_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_128x64_8bit = { u8g_dev_t6963_128x64_fn, &u8g_dev_t6963_128x64_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_240x128.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_240x128.c new file mode 100644 index 000000000..4a28edbcf --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_240x128.c @@ -0,0 +1,195 @@ +/* + + u8g_dev_t6963_240x128.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 16 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_240x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_240x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_240x128_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_240x128_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_240x128_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_240x128_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_240x128_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_240x128_8bit = { u8g_dev_t6963_240x128_fn, &u8g_dev_t6963_240x128_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_240x64.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_240x64.c new file mode 100644 index 000000000..6d209d212 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_t6963_240x64.c @@ -0,0 +1,195 @@ +/* + + u8g_dev_t6963_240x64.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 16 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_240x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_240x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_240x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_240x64_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_240x64_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_240x64_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_240x64_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_240x64_8bit = { u8g_dev_t6963_240x64_fn, &u8g_dev_t6963_240x64_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c new file mode 100644 index 000000000..17689dc4a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c @@ -0,0 +1,115 @@ +/* + + u8g_dev_tls8204_84x48.c + + Display: Nokia 84x48 + + Status: Tested with TLS8204V12 Display by Olimex MOD-LCD3310 + + Contributed: http://code.google.com/p/u8glib/issues/detail?id=126 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 84 +#define HEIGHT 48 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_tls8204_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x04 | !!((66-1)&(1u<<6)), + 0x40 | ((66-2) & ((1u<<6)-1)), + 0x013, /* bias system 1:48 */ + 0x0c0, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_tls8204_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_tls8204_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_WriteByte(u8g, dev, 0x020); /* command mode, extended function set */ + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_tls8204_84x48_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_tls8204_fn, U8G_COM_SW_SPI); + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c new file mode 100644 index 000000000..b7111d5c8 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c @@ -0,0 +1,290 @@ +/* + + u8g_dev_uc1610_dogxl160.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 160 +#define HEIGHT 104 + +static const uint8_t u8g_dev_uc1610_dogxl160_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0f1, /* set display height-1 */ + 0x067, /* */ + 0x0c0, /* SEG & COM normal */ + 0x040, /* set display start line */ + 0x050, /* */ + 0x02b, /* set panelloading */ + 0x0eb, /* set bias 1/2 */ + 0x081, /* set contrast */ + 0x05f, /* */ + 0x089, /* set auto increment */ + 0x0a6, /* normal pixel mode */ + 0x0d3, /* 0xd3=40% RMS separation for gray levels */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565, UC1610 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1610_dogxl160_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static uint8_t u8g_dev_1to2(uint8_t n) +{ + register uint8_t a,b,c; + a = n; + a &= 1; + n <<= 1; + b = n; + b &= 4; + n <<= 1; + c = n; + c &= 16; + n <<= 1; + n &= 64; + n |= a; + n |= b; + n |= c; + n |= n << 1; + return n; +} + +uint8_t u8g_dev_uc1610_dogxl160_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + int i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2+1) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] >> 4 ) ); + } + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + int i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+1) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] >> 4 ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+2) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf+WIDTH))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+3) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf+WIDTH))[i] >> 4 ) ); + } + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_WriteSequence(u8g, dev, WIDTH, pb->buf) == 0 ) + return 0; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2+1) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_WriteSequence(u8g, dev, WIDTH, pb->buf+WIDTH) == 0 ) + return 0; + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_bw_sw_spi, WIDTH, HEIGHT, 8, u8g_dev_uc1610_dogxl160_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_bw_hw_spi, WIDTH, HEIGHT, 8, u8g_dev_uc1610_dogxl160_bw_fn, U8G_COM_HW_SPI); + +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_gr_sw_spi, WIDTH, HEIGHT, 4, u8g_dev_uc1610_dogxl160_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_gr_hw_spi, WIDTH, HEIGHT, 4, u8g_dev_uc1610_dogxl160_gr_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1610_dogxl160_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1610_dogxl160_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1610_dogxl160_2x_bw_buf}; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi = { u8g_dev_uc1610_dogxl160_2x_bw_fn, &u8g_dev_uc1610_dogxl160_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi = { u8g_dev_uc1610_dogxl160_2x_bw_fn, &u8g_dev_uc1610_dogxl160_2x_bw_pb, U8G_COM_HW_SPI }; + +uint8_t u8g_dev_uc1610_dogxl160_2x_gr_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1610_dogxl160_2x_gr_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1610_dogxl160_2x_gr_buf}; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi = { u8g_dev_uc1610_dogxl160_2x_gr_fn, &u8g_dev_uc1610_dogxl160_2x_gr_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi = { u8g_dev_uc1610_dogxl160_2x_gr_fn, &u8g_dev_uc1610_dogxl160_2x_gr_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c new file mode 100644 index 000000000..853d8c034 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c @@ -0,0 +1,113 @@ +/* + + u8g_dev_uc1701_dogs102.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 102 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_dogs102_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x040, /* set display start line to 0 */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x027, /* regulator, booster and follower */ + 0x081, /* set contrast */ + 0x00e, /* contrast value, EA default: 0x010, previous value for S102: 0x0e */ + 0x0fa, /* Set Temp compensation */ + 0x090, /* 0.11 deg/c WP Off WC Off*/ + 0x0a4, /* normal display */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565, UC1610 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_dogs102_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_dogs102_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1701_dogs102_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_dogs102_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1701_dogs102_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_dogs102_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c new file mode 100644 index 000000000..55b2f9b71 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c @@ -0,0 +1,114 @@ +/* + + u8g_dev_uc1701_mini12864.c (dealextreme) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_uc1701_mini12864_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a0, /* ADC set to reverse */ + 0x0c8, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x027, /* contrast value */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1701_mini12864_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1701_mini12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1701_mini12864_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1701_mini12864_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_ellipse.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_ellipse.c new file mode 100644 index 000000000..6c35fdf23 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_ellipse.c @@ -0,0 +1,100 @@ +/* + + u8g_ellipse.c + + Utility to draw empty and filled ellipses. + + Universal 8bit Graphics Library + + Copyright (c) 2011, bjthom@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Addition to the U8G Library as of 02/29/12 + Adapted from Bresenham's Algorithm and the following websites: + http://free.pages.at/easyfilter/bresenham.html + http://homepage.smc.edu/kennedy_john/belipse.pdf + +*/ + +#include "u8g.h" + + +#ifdef WORK_IN_PROGRESS + +void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1) +{ + int a = abs(x1 - x0); + int b = abs(y1 - y0); //get diameters + int b1 = b&1; + long dx = 4*(1-a)*b*b; + long dy = 4*(b1+1)*a*a; + long err = dx+dy+b1*a*a; + long e2; + + if (x0 > x1) { x0 = x1; x1 += a; } + if (y0 > y1) { y0 = y1; } + y0 += (b+1)/2; + y1 = y0-b1; + a *= 8*a; + b1 = 8*b*b; + + do { + u8g_DrawPixel(u8g, x1, y0); + u8g_DrawPixel(u8g, x0, y0); + u8g_DrawPixel(u8g, x0, y1); + u8g_DrawPixel(u8g, x1, y1); + e2 = 2*err; + if (e2 >= dx) { + x0++; + x1--; + err += dx += b1; + } + if (e2 <= dy) { + y0++; + y1--; + err += dy += a; + } + } while (x0 <= x1); + + while (y0-y1 < b) { + u8g_DrawPixel(u8g, x0-1, y0); + u8g_DrawPixel(u8g, x1+1, y0++); + u8g_DrawPixel(u8g, x0-1, y1); + u8g_DrawPixel(u8g, x1+1, y1--); + } +} + +void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t xr, u8g_uint_t yr) +{ + u8g_DrawPixel(u8g, x0, y0+yr); + u8g_DrawPixel(u8g, x0, y0-yr); + u8g_DrawPixel(u8g, x0+xr, y0); + u8g_DrawPixel(u8g, x0-xr, y0); +} + +#endif + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_font.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_font.c new file mode 100644 index 000000000..bfdc0b28a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_font.c @@ -0,0 +1,1422 @@ +/* + + u8g_font.c + + U8G Font High Level Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* font api */ + +/* pointer to the start adress of the glyph, points to progmem area */ +typedef void * u8g_glyph_t; + +/* size of the font data structure, there is no struct or class... */ +#define U8G_FONT_DATA_STRUCT_SIZE 17 + +/* + ... instead the fields of the font data structure are accessed directly by offset + font information + offset + 0 font format + 1 FONTBOUNDINGBOX width unsigned + 2 FONTBOUNDINGBOX height unsigned + 3 FONTBOUNDINGBOX x-offset signed + 4 FONTBOUNDINGBOX y-offset signed + 5 capital A height unsigned + 6 start 'A' + 8 start 'a' + 10 encoding start + 11 encoding end + 12 descent 'g' negative: below baseline + 13 font max ascent + 14 font min decent negative: below baseline + 15 font xascent + 16 font xdecent negative: below baseline + +*/ + +/* use case: What is the width and the height of the minimal box into which string s fints? */ +void u8g_font_GetStrSize(const void *font, const char *s, u8g_uint_t *width, u8g_uint_t *height); +void u8g_font_GetStrSizeP(const void *font, const char *s, u8g_uint_t *width, u8g_uint_t *height); + +/* use case: lower left edge of a minimal box is known, what is the correct x, y position for the string draw procedure */ +void u8g_font_AdjustXYToDraw(const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y); +void u8g_font_AdjustXYToDrawP(const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y); + +/* use case: Baseline origin known, return minimal box */ +void u8g_font_GetStrMinBox(u8g_t *u8g, const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); + +/* procedures */ + +/*========================================================================*/ +/* low level byte and word access */ + +/* removed NOINLINE, because it leads to smaller code, might also be faster */ +//static uint8_t u8g_font_get_byte(const u8g_fntpgm_uint8_t *font, uint8_t offset) U8G_NOINLINE; +static uint8_t u8g_font_get_byte(const u8g_fntpgm_uint8_t *font, uint8_t offset) +{ + font += offset; + return u8g_pgm_read( (u8g_pgm_uint8_t *)font ); +} + +static uint16_t u8g_font_get_word(const u8g_fntpgm_uint8_t *font, uint8_t offset) U8G_NOINLINE; +static uint16_t u8g_font_get_word(const u8g_fntpgm_uint8_t *font, uint8_t offset) +{ + uint16_t pos; + font += offset; + pos = u8g_pgm_read( (u8g_pgm_uint8_t *)font ); + font++; + pos <<= 8; + pos += u8g_pgm_read( (u8g_pgm_uint8_t *)font); + return pos; +} + +/*========================================================================*/ +/* direct access on the font */ + +static uint8_t u8g_font_GetFormat(const u8g_fntpgm_uint8_t *font) U8G_NOINLINE; +static uint8_t u8g_font_GetFormat(const u8g_fntpgm_uint8_t *font) +{ + return u8g_font_get_byte(font, 0); +} + +static uint8_t u8g_font_GetFontGlyphStructureSize(const u8g_fntpgm_uint8_t *font) U8G_NOINLINE; +static uint8_t u8g_font_GetFontGlyphStructureSize(const u8g_fntpgm_uint8_t *font) +{ + switch(u8g_font_GetFormat(font)) + { + case 0: return 6; + case 1: return 3; + } + return 3; +} + +static uint8_t u8g_font_GetBBXWidth(const void *font) +{ + return u8g_font_get_byte(font, 1); +} + +static uint8_t u8g_font_GetBBXHeight(const void *font) +{ + return u8g_font_get_byte(font, 2); +} + +static int8_t u8g_font_GetBBXOffX(const void *font) +{ + return u8g_font_get_byte(font, 3); +} + +static int8_t u8g_font_GetBBXOffY(const void *font) +{ + return u8g_font_get_byte(font, 4); +} + +uint8_t u8g_font_GetCapitalAHeight(const void *font) +{ + return u8g_font_get_byte(font, 5); +} + +uint16_t u8g_font_GetEncoding65Pos(const void *font) U8G_NOINLINE; +uint16_t u8g_font_GetEncoding65Pos(const void *font) +{ + return u8g_font_get_word(font, 6); +} + +uint16_t u8g_font_GetEncoding97Pos(const void *font) U8G_NOINLINE; +uint16_t u8g_font_GetEncoding97Pos(const void *font) +{ + return u8g_font_get_word(font, 8); +} + +uint8_t u8g_font_GetFontStartEncoding(const void *font) +{ + return u8g_font_get_byte(font, 10); +} + +uint8_t u8g_font_GetFontEndEncoding(const void *font) +{ + return u8g_font_get_byte(font, 11); +} + +int8_t u8g_font_GetLowerGDescent(const void *font) +{ + return u8g_font_get_byte(font, 12); +} + +int8_t u8g_font_GetFontAscent(const void *font) +{ + return u8g_font_get_byte(font, 13); +} + +int8_t u8g_font_GetFontDescent(const void *font) +{ + return u8g_font_get_byte(font, 14); +} + +int8_t u8g_font_GetFontXAscent(const void *font) +{ + return u8g_font_get_byte(font, 15); +} + +int8_t u8g_font_GetFontXDescent(const void *font) +{ + return u8g_font_get_byte(font, 16); +} + + +/* return the data start for a font and the glyph pointer */ +static uint8_t *u8g_font_GetGlyphDataStart(const void *font, u8g_glyph_t g) +{ + return ((u8g_fntpgm_uint8_t *)g) + u8g_font_GetFontGlyphStructureSize(font); +} + +/* calculate the overall length of the font, only used to create the picture for the google wiki */ +size_t u8g_font_GetSize(const void *font) +{ + uint8_t *p = (uint8_t *)(font); + uint8_t font_format = u8g_font_GetFormat(font); + uint8_t data_structure_size = u8g_font_GetFontGlyphStructureSize(font); + uint8_t start, end; + uint8_t i; + uint8_t mask = 255; + + start = u8g_font_GetFontStartEncoding(font); + end = u8g_font_GetFontEndEncoding(font); + + if ( font_format == 1 ) + mask = 15; + + p += U8G_FONT_DATA_STRUCT_SIZE; /* skip font general information */ + + i = start; + for(;;) + { + if ( u8g_pgm_read((u8g_pgm_uint8_t *)(p)) == 255 ) + { + p += 1; + } + else + { + p += u8g_pgm_read( ((u8g_pgm_uint8_t *)(p)) + 2 ) & mask; + p += data_structure_size; + } + if ( i == end ) + break; + i++; + } + + return p - (uint8_t *)font; +} + +/*========================================================================*/ +/* u8g interface, font access */ + +uint8_t u8g_GetFontBBXWidth(u8g_t *u8g) +{ + return u8g_font_GetBBXWidth(u8g->font); +} + +uint8_t u8g_GetFontBBXHeight(u8g_t *u8g) +{ + return u8g_font_GetBBXHeight(u8g->font); +} + +int8_t u8g_GetFontBBXOffX(u8g_t *u8g) U8G_NOINLINE; +int8_t u8g_GetFontBBXOffX(u8g_t *u8g) +{ + return u8g_font_GetBBXOffX(u8g->font); +} + +int8_t u8g_GetFontBBXOffY(u8g_t *u8g) U8G_NOINLINE; +int8_t u8g_GetFontBBXOffY(u8g_t *u8g) +{ + return u8g_font_GetBBXOffY(u8g->font); +} + +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g) U8G_NOINLINE; +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g) +{ + return u8g_font_GetCapitalAHeight(u8g->font); +} + +/*========================================================================*/ +/* glyph handling */ + +static void u8g_CopyGlyphDataToCache(u8g_t *u8g, u8g_glyph_t g) +{ + uint8_t tmp; + switch( u8g_font_GetFormat(u8g->font) ) + { + case 0: + /* + format 0 + glyph information + offset + 0 BBX width unsigned + 1 BBX height unsigned + 2 data size unsigned (BBX width + 7)/8 * BBX height + 3 DWIDTH signed + 4 BBX xoffset signed + 5 BBX yoffset signed + byte 0 == 255 indicates empty glyph + */ + u8g->glyph_width = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 0 ); + u8g->glyph_height = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 1 ); + u8g->glyph_dx = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 3 ); + u8g->glyph_x = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 4 ); + u8g->glyph_y = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 5 ); + break; + case 1: + default: + /* +format 1 + 0 BBX xoffset signed --> upper 4 Bit + 0 BBX yoffset signed --> lower 4 Bit + 1 BBX width unsigned --> upper 4 Bit + 1 BBX height unsigned --> lower 4 Bit + 2 data size unsigned -(BBX width + 7)/8 * BBX height --> lower 4 Bit + 2 DWIDTH signed --> upper 4 Bit + byte 0 == 255 indicates empty glyph + */ + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 0 ); + u8g->glyph_y = tmp & 15; + u8g->glyph_y-=2; + tmp >>= 4; + u8g->glyph_x = tmp; + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 1 ); + u8g->glyph_height = tmp & 15; + tmp >>= 4; + u8g->glyph_width = tmp; + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 2 ); + tmp >>= 4; + u8g->glyph_dx = tmp; + + + break; + } +} + +//void u8g_FillEmptyGlyphCache(u8g_t *u8g) U8G_NOINLINE; +static void u8g_FillEmptyGlyphCache(u8g_t *u8g) +{ + u8g->glyph_dx = 0; + u8g->glyph_width = 0; + u8g->glyph_height = 0; + u8g->glyph_x = 0; + u8g->glyph_y = 0; +} + +/* + Find (with some speed optimization) and return a pointer to the glyph data structure + Also uncompress (format 1) and copy the content of the data structure to the u8g structure +*/ +u8g_glyph_t u8g_GetGlyph(u8g_t *u8g, uint8_t requested_encoding) +{ + uint8_t *p = (uint8_t *)(u8g->font); + uint8_t font_format = u8g_font_GetFormat(u8g->font); + uint8_t data_structure_size = u8g_font_GetFontGlyphStructureSize(u8g->font); + uint8_t start, end; + uint16_t pos; + uint8_t i; + uint8_t mask = 255; + + if ( font_format == 1 ) + mask = 15; + + start = u8g_font_GetFontStartEncoding(u8g->font); + end = u8g_font_GetFontEndEncoding(u8g->font); + + pos = u8g_font_GetEncoding97Pos(u8g->font); + if ( requested_encoding >= 97 && pos > 0 ) + { + p+= pos; + start = 97; + } + else + { + pos = u8g_font_GetEncoding65Pos(u8g->font); + if ( requested_encoding >= 65 && pos > 0 ) + { + p+= pos; + start = 65; + } + else + p += U8G_FONT_DATA_STRUCT_SIZE; /* skip font general information */ + } + + if ( requested_encoding > end ) + { + u8g_FillEmptyGlyphCache(u8g); + return NULL; /* not found */ + } + + i = start; + if ( i <= end ) + { + for(;;) + { + if ( u8g_pgm_read((u8g_pgm_uint8_t *)(p)) == 255 ) + { + p += 1; + } + else + { + if ( i == requested_encoding ) + { + u8g_CopyGlyphDataToCache(u8g, p); + return p; + } + p += u8g_pgm_read( ((u8g_pgm_uint8_t *)(p)) + 2 ) & mask; + p += data_structure_size; + } + if ( i == end ) + break; + i++; + } + } + + u8g_FillEmptyGlyphCache(u8g); + + return NULL; +} + +uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding) +{ + if ( u8g_GetGlyph(u8g, requested_encoding) != NULL ) + return 1; + return 0; +} + +int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding) +{ + if ( u8g_GetGlyph(u8g, requested_encoding) == NULL ) + return 0; /* should never happen, so return something */ + return u8g->glyph_dx; +} + + +/*========================================================================*/ +/* glyph drawing procedures */ + +#ifdef OBSOLETE +/* + Draw a glyph + x,y: left baseline position of the glyph +*/ +int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + u8g_glyph_t g; + uint8_t w, h, i, j; + const u8g_pgm_uint8_t *data; + uint8_t bytes_per_line; + u8g_uint_t ix, iy; + + g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + w = u8g->glyph_width; + h = u8g->glyph_height; + + bytes_per_line = w; + bytes_per_line += 7; + bytes_per_line /= 8; + + data = u8g_font_GetGlyphDataStart(u8g->font, g); + + switch(dir) + { + case 0: + x += u8g->glyph_x; + y -= u8g->glyph_y; + y--; + //u8g_DrawFrame(u8g, x, y-h+1, w, h); + if ( u8g_IsBBXIntersection(u8g, x, y-h+1, w, h) == 0 ) + return u8g->glyph_dx; + + iy = y; + iy -= h; + iy++; + + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + ix+=8; + } + iy++; + } + break; + case 1: + x += u8g->glyph_y; + x++; + y += u8g->glyph_x; + //printf("enc %d, dir %d, x %d, y %d, w %d, h %d\n", encoding, dir, x, y, w, h); + //u8g_DrawFrame(u8g, x, y, h, w); + if ( u8g_IsBBXIntersection(u8g, x, y, h, w) == 0 ) + return u8g->glyph_dx; + + ix = x; + ix += h; + ix--; + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + iy+=8; + } + ix--; + } + break; + case 2: + x -= u8g->glyph_x; + y += u8g->glyph_y; + y++; + if ( u8g_IsBBXIntersection(u8g, x-w-1, y, w, h) == 0 ) + return u8g->glyph_dx; + + iy = y; + iy += h; + iy--; + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + ix-=8; + } + iy--; + } + break; + case 3: + x -= u8g->glyph_y; + x--; + y -= u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x-h-1, y-w-1, h, w) == 0 ) + return u8g->glyph_dx; + + ix = x; + ix -= h; + ix++; + + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + iy-=8; + } + ix++; + } + break; + } + return u8g->glyph_dx; +} +#endif + +int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x += u8g->glyph_x; + y -= u8g->glyph_y; + y--; + + if ( u8g_IsBBXIntersection(u8g, x, y-h+1, w, h) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + iy = y; + iy -= h; + iy++; + + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 0, u8g_pgm_read(data)); + data++; + ix+=8; + } + iy++; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + y += u8g->font_calc_vref(u8g); + return u8g_draw_glyph(u8g, x, y, encoding); +} + +int8_t u8g_draw_glyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x += u8g->glyph_y; + x++; + y += u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x, y, h, w) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + ix = x; + ix += h; + ix--; + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 1, u8g_pgm_read(data)); + data++; + iy+=8; + } + ix--; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + x -= u8g->font_calc_vref(u8g); + return u8g_draw_glyph90(u8g, x, y, encoding); +} + + +int8_t u8g_draw_glyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x -= u8g->glyph_x; + y += u8g->glyph_y; + y++; + + if ( u8g_IsBBXIntersection(u8g, x-(w-1), y, w, h) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + iy = y; + iy += h; + iy--; + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 2, u8g_pgm_read(data)); + data++; + ix-=8; + } + iy--; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + y -= u8g->font_calc_vref(u8g); + return u8g_draw_glyph180(u8g, x, y, encoding); +} + + +int8_t u8g_draw_glyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x -= u8g->glyph_y; + x--; + y -= u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x-(h-1), y-(w-1), h, w) == 0 ) + return u8g->glyph_dx; + + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + ix = x; + ix -= h; + ix++; + + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 3, u8g_pgm_read(data)); + data++; + iy-=8; + } + ix++; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + x += u8g->font_calc_vref(u8g); + return u8g_draw_glyph270(u8g, x, y, encoding); +} + + + +#ifdef OBSOLETE +/* + Draw a glyph + x,y: lower left corner of the font bounding box +*/ +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + /* TODO: apply "dir" */ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + return u8g_DrawGlyphDir(u8g, x, y, dir, encoding); +} +#endif + +/*========================================================================*/ +/* string drawing procedures */ + + +u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + //u8g_uint_t u8g_GetStrWidth(u8g, s); + //u8g_font_GetFontAscent(u8g->font)-u8g_font_GetFontDescent(u8g->font); + + y += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph(u8g, x, y, *s); + x += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph90(u8g, x, y, *s); + y += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + y -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph180(u8g, x, y, *s); + x -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph270(u8g, x, y, *s); + y -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s) +{ + switch(dir) + { + case 0: + return u8g_DrawStr(u8g, x, y, s); + case 1: + return u8g_DrawStr90(u8g, x, y, s); + case 2: + return u8g_DrawStr180(u8g, x, y, s); + case 3: + return u8g_DrawStr270(u8g, x, y, s); + } + return 0; +} + +u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + uint8_t c; + + y += u8g->font_calc_vref(u8g); + + for(;;) + { + c = u8g_pgm_read(s); + if ( c == '\0' ) + break; + d = u8g_draw_glyph(u8g, x, y, c); + x += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph90(u8g, x, y, u8g_pgm_read(s)); + y += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + y -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph180(u8g, x, y, u8g_pgm_read(s)); + x -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph270(u8g, x, y, u8g_pgm_read(s)); + y -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s) +{ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + return u8g_DrawStrDir(u8g, x, y, dir, s); +} + +/* still used by picgen.c, dir argument is ignored */ +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + u8g_draw_glyph(u8g, x, y, encoding); +} + + +/*========================================================================*/ +/* set ascent/descent for reference point calculation */ + +void u8g_UpdateRefHeight(u8g_t *u8g) +{ + uint16_t ls; + if ( u8g->font == NULL ) + return; + if ( u8g->font_height_mode == U8G_FONT_HEIGHT_MODE_TEXT ) + { + u8g->font_ref_ascent = u8g_font_GetCapitalAHeight(u8g->font); + u8g->font_ref_descent = u8g_font_GetLowerGDescent(u8g->font); + } + else if ( u8g->font_height_mode == U8G_FONT_HEIGHT_MODE_XTEXT ) + { + u8g->font_ref_ascent = u8g_font_GetFontXAscent(u8g->font); + u8g->font_ref_descent = u8g_font_GetFontXDescent(u8g->font); + } + else + { + u8g->font_ref_ascent = u8g_font_GetFontAscent(u8g->font); + u8g->font_ref_descent = u8g_font_GetFontDescent(u8g->font); + } + + ls = u8g->font_ref_ascent - u8g->font_ref_descent; + if ( u8g->font_line_spacing_factor != 64 ) + { + ls &= 255; + ls *= u8g->font_line_spacing_factor; + ls >>= 6; + } + u8g->line_spacing = ls; +} + +void u8g_SetFontRefHeightText(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_TEXT; + u8g_UpdateRefHeight(u8g); +} + +void u8g_SetFontRefHeightExtendedText(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_XTEXT; + u8g_UpdateRefHeight(u8g); +} + + +void u8g_SetFontRefHeightAll(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_ALL; + u8g_UpdateRefHeight(u8g); +} + +/* factor = 64: linespaceing == ascent and descent */ +void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor) +{ + u8g->font_line_spacing_factor = factor; + u8g_UpdateRefHeight(u8g); +} + + + +/*========================================================================*/ +/* callback procedures to correct the y position */ + +u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g) +{ + return 0; +} + +void u8g_SetFontPosBaseline(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_font; +} + + +u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g) +{ + /* y += (u8g_uint_t)(u8g_int_t)(u8g->font_ref_descent); */ + return (u8g_uint_t)(u8g_int_t)(u8g->font_ref_descent); +} + +void u8g_SetFontPosBottom(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_bottom; +} + +u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g) +{ + u8g_uint_t tmp; + /* reference pos is one pixel above the upper edge of the reference glyph */ + + /* + y += (u8g_uint_t)(u8g_int_t)(u8g->font_ref_ascent); + y++; + */ + tmp = (u8g_uint_t)(u8g_int_t)(u8g->font_ref_ascent); + tmp++; + return tmp; +} + +void u8g_SetFontPosTop(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_top; +} + +u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g) +{ + int8_t tmp; + tmp = u8g->font_ref_ascent; + tmp -= u8g->font_ref_descent; + tmp /= 2; + tmp += u8g->font_ref_descent; + /* y += (u8g_uint_t)(u8g_int_t)(tmp); */ + return tmp; +} + +void u8g_SetFontPosCenter(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_center; +} + +/*========================================================================*/ +/* string pixel width calculation */ + +char u8g_font_get_char(const void *s) +{ + return *(const char *)(s); +} + +char u8g_font_get_charP(const void *s) +{ + return u8g_pgm_read(s); +} + +typedef char (*u8g_font_get_char_fn)(const void *s); + + +u8g_uint_t u8g_font_calc_str_pixel_width(u8g_t *u8g, const char *s, u8g_font_get_char_fn get_char ) +{ + u8g_uint_t w; + uint8_t enc; + + /* reset the total minimal width to zero, this will be expanded during calculation */ + w = 0; + + enc = get_char(s); + + /* check for empty string, width is already 0 */ + if ( enc == '\0' ) + { + return w; + } + + /* get the glyph information of the first char. This must be valid, because we already checked for the empty string */ + /* if *s is not inside the font, then the cached parameters of the glyph are all zero */ + u8g_GetGlyph(u8g, enc); + + /* strlen(s) == 1: width = width(s[0]) */ + /* strlen(s) == 2: width = - offx(s[0]) + deltax(s[0]) + offx(s[1]) + width(s[1]) */ + /* strlen(s) == 3: width = - offx(s[0]) + deltax(s[0]) + deltax(s[1]) + offx(s[2]) + width(s[2]) */ + + /* assume that the string has size 2 or more, than start with negative offset-x */ + /* for string with size 1, this will be nullified after the loop */ + w = -u8g->glyph_x; + for(;;) + { + + /* check and stop if the end of the string is reached */ + s++; + if ( get_char(s) == '\0' ) + break; + + /* if there are still more characters, add the delta to the next glyph */ + w += u8g->glyph_dx; + + /* store the encoding in a local variable, used also after the for(;;) loop */ + enc = get_char(s); + + /* load the next glyph information */ + u8g_GetGlyph(u8g, enc); + } + + /* finally calculate the width of the last char */ + /* here is another exception, if the last char is a black, use the dx value instead */ + if ( enc != ' ' ) + { + /* if g was not updated in the for loop (strlen() == 1), then the initial offset x gets removed */ + w += u8g->glyph_width; + w += u8g->glyph_x; + } + else + { + w += u8g->glyph_dx; + } + + + return w; +} + +u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s) +{ + return u8g_font_calc_str_pixel_width(u8g, s, u8g_font_get_char); +} + +u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + return u8g_font_calc_str_pixel_width(u8g, (const char *)s, u8g_font_get_charP); +} + +int8_t u8g_GetStrX(u8g_t *u8g, const char *s) +{ + u8g_GetGlyph(u8g, *s); + return u8g->glyph_x; +} + +int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + u8g_GetGlyph(u8g, u8g_pgm_read(s)); + return u8g->glyph_x; +} + +/*========================================================================*/ +/* string width calculation */ + +u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s) +{ + u8g_uint_t w; + uint8_t encoding; + + /* reset the total width to zero, this will be expanded during calculation */ + w = 0; + + for(;;) + { + encoding = *s; + if ( encoding == 0 ) + break; + + /* load glyph information */ + u8g_GetGlyph(u8g, encoding); + w += u8g->glyph_dx; + + /* goto next char */ + s++; + } + + return w; +} + + +u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t w; + uint8_t encoding; + + /* reset the total width to zero, this will be expanded during calculation */ + w = 0; + + for(;;) + { + encoding = u8g_pgm_read(s); + if ( encoding == 0 ) + break; + + /* load glyph information */ + u8g_GetGlyph(u8g, encoding); + w += u8g->glyph_dx; + + /* goto next char */ + s++; + } + + return w; +} + + +/*========================================================================*/ +/* calculation of font/glyph/string characteristics */ + + +/* + Description: + Calculate parameter for the minimal bounding box on a given string + Output + buf->y_min extend of the lower left edge if the string below (y_min<0) or above (y_min>0) baseline (descent) + buf->y_max extend of the upper left edge if the string below (y_min<0) or above (y_min>0) baseline (ascent) + buf->w the width of the string +*/ +struct u8g_str_size_struct +{ + int8_t y_min; /* descent */ + int8_t y_max; /* ascent */ + int8_t x, y; /* the reference point of the font (negated!) */ + u8g_uint_t w; /* width of the overall string */ +}; +typedef struct u8g_str_size_struct u8g_str_size_t; + +static void u8g_font_calc_str_min_box(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + /* u8g_glyph_t g; */ + int8_t tmp; + + /* reset the total minimal width to zero, this will be expanded during calculation */ + buf->w = 0; + + /* check for empty string, width is already 0, but also reset y_min and y_max to 0 */ + if ( *s == '\0' ) + { + buf->y_min = 0; + buf->y_max = 0; + buf->x = 0; + buf->y = 0; + return; + } + + /* reset y_min to the largest possible value. Later we search for the smallest value */ + /* y_min contains the position [pixel] of the lower left edge of the glyph above (y_min>0) or below (y_min<0) baseline */ + buf->y_min = 127; + /* reset y_max to the smallest possible value. Later we search for the highest value */ + /* y_max contains the position [pixel] of the upper left edge of the glyph above (y_max>0) or below (y_max<0) baseline */ + buf->y_max = -128; + + /* get the glyph information of the first char. This must be valid, because we already checked for the empty string */ + u8g_GetGlyph(u8g, *s); + + /* strlen(s) == 1: width = width(s[0]) */ + /* strlen(s) == 2: width = - offx(s[0]) + deltax(s[0]) + offx(s[1]) + width(s[1]) */ + /* strlen(s) == 3: width = - offx(s[0]) + deltax(s[0]) + deltax(s[1]) + offx(s[2]) + width(s[2]) */ + + /* assume that the string has size 2 or more, than start with negative offset-x */ + /* for string with size 1, this will be nullified after the loop */ + // buf->w = - u8g_font_GetGlyphBBXOffX(u8g->font, g); + buf->w = - u8g->glyph_x; + + /* Also copy the position of the first glyph. This is the reference point of the string (negated) */ + buf->x = u8g->glyph_x; + buf->y = u8g->glyph_y; + + for(;;) + { + + /* calculated y position of the upper left corner (y_max) and lower left corner (y_min) of the string */ + /* relative to the base line */ + + tmp = u8g->glyph_y; + if ( buf->y_min > tmp ) + buf->y_min = tmp; + + tmp +=u8g->glyph_height; + if ( buf->y_max < tmp ) + buf->y_max = tmp; + + /* check and stop if the end of the string is reached */ + s++; + if ( *s == '\0' ) + break; + + /* if there are still more characters, add the delta to the next glyph */ + buf->w += u8g->glyph_dx; + + /* load the next glyph information */ + u8g_GetGlyph(u8g, *s); + } + + /* finally calculate the width of the last char */ + /* if g was not updated in the for loop (strlen() == 1), then the initial offset x gets removed */ + buf->w += u8g->glyph_width; + // buf->w += u8g_font_GetGlyphBBXOffX(u8g->font, g); + + buf->w += u8g->glyph_x; +} + +/* calculate minimal box */ +void u8g_font_box_min(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + u8g_font_calc_str_min_box(u8g, s, buf); +} + +/* calculate gA box, but do not calculate the overall width */ +void u8g_font_box_left_gA(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + +} + +/* calculate gA box, including overall width */ +void u8g_font_box_all_gA(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + +} + + +static void u8g_font_get_str_box_fill_args(u8g_t *u8g, const char *s, u8g_str_size_t *buf, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + /* + u8g_glyph_t g; + g = + */ + u8g_GetGlyph(u8g, *s); + *x += u8g->glyph_x; + *width = buf->w; + *y -= buf->y_max; + /* +1 because y_max is a height, this compensates the next step */ + //*y += 1; + /* because the reference point is one below the string, this compensates the previous step */ + //*y -= 1; + *height = buf->y_max; + *height -= buf->y_min; +} + + +void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + u8g_str_size_t buf; + + if ( *s == '\0' ) + { + *width= 0; + *height = 0; + return; + } + + u8g_font_calc_str_min_box(u8g, s, &buf); + u8g_font_get_str_box_fill_args(u8g, s, &buf, x, y, width, height); +} + + +void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + u8g_str_size_t buf; + uint8_t cap_a; + + if ( *s == '\0' ) + { + *width= 0; + *height = 0; + return; + } + + cap_a = u8g_font_GetCapitalAHeight(u8g->font); + u8g_font_calc_str_min_box(u8g, s, &buf); + if ( buf.y_max < cap_a ) + buf.y_max = cap_a; + u8g_font_get_str_box_fill_args(u8g, s, &buf, x, y, width, height); +} + +void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font) +{ + if ( u8g->font != font ) + { + u8g->font = font; + u8g_UpdateRefHeight(u8g); + u8g_SetFontPosBaseline(u8g); + } +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_font_data.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_font_data.c new file mode 100644 index 000000000..dca21c5a3 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_font_data.c @@ -0,0 +1,84486 @@ +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03b[826] U8G_SECTION(".progmem.u8g_font_04b_03b") = { + 1,5,6,0,255,5,0,250,1,240,32,255,255,5,255,5, + 255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80, + 224,2,85,101,200,208,32,88,152,2,85,101,224,128,248,144, + 240,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 85,101,8,16,32,64,128,2,69,85,240,144,144,144,240,2, + 37,53,192,64,64,64,64,2,69,85,240,16,240,128,240,2, + 69,85,240,16,240,16,240,2,69,85,144,144,144,240,16,2, + 69,85,240,128,240,16,240,2,69,85,224,128,240,144,240,2, + 69,85,240,16,32,64,64,2,69,85,240,144,240,144,240,2, + 69,85,240,144,240,16,112,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,69,85,240,16,112, + 0,64,2,85,101,248,136,184,168,240,2,69,85,240,144,240, + 144,144,2,69,85,224,160,240,144,240,2,69,85,240,128,128, + 128,240,2,69,85,224,144,144,144,224,2,69,85,240,128,240, + 128,240,2,69,85,240,128,240,128,128,2,69,85,240,128,176, + 144,240,2,69,85,144,144,240,144,144,2,53,69,224,64,64, + 64,224,2,69,85,48,16,16,144,240,2,69,85,144,144,224, + 144,144,2,69,85,128,128,128,128,240,2,85,101,248,168,168, + 168,168,2,69,85,144,208,176,144,144,2,69,85,240,144,144, + 144,240,2,69,85,240,144,144,240,128,2,69,85,240,144,144, + 176,240,2,69,85,240,144,240,160,176,2,69,85,240,128,240, + 16,240,2,53,69,224,64,64,64,64,2,69,85,144,144,144, + 144,240,2,69,85,144,144,160,160,64,2,85,101,168,168,168, + 168,248,2,69,85,144,144,96,144,144,2,69,85,144,144,240, + 16,240,2,69,85,240,16,96,128,240,2,37,53,192,128,128, + 128,192,2,85,101,128,64,32,16,8,2,37,53,192,64,64, + 64,192,5,50,66,64,160,2,65,81,240,5,34,50,128,64, + 2,67,83,112,144,240,2,68,84,128,240,144,240,2,51,67, + 224,128,224,2,68,84,16,240,144,240,2,67,83,240,160,112, + 2,68,84,112,64,240,64,1,68,84,240,144,240,32,2,68, + 84,128,240,144,144,2,20,36,128,0,128,128,1,21,37,128, + 0,128,128,128,2,68,84,128,144,224,144,2,20,36,128,128, + 128,128,2,83,99,248,168,168,2,67,83,240,144,144,2,67, + 83,240,144,240,1,68,84,240,144,240,128,1,68,84,240,144, + 240,16,2,51,67,224,128,128,2,67,83,240,64,240,2,52, + 68,64,224,64,96,2,67,83,144,144,240,2,67,83,144,144, + 96,2,83,99,168,168,248,2,51,67,160,64,160,1,68,84, + 144,144,240,16,2,67,83,240,32,240,2,53,69,96,64,128, + 64,96,2,21,37,128,128,128,128,128,2,53,69,192,64,32, + 64,192,5,66,82,80,160,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,2,0,64,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03bn[130] U8G_SECTION(".progmem.u8g_font_04b_03bn") = { + 1,5,6,0,255,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32, + 64,128,2,69,85,240,144,144,144,240,2,37,53,192,64,64, + 64,64,2,69,85,240,16,240,128,240,2,69,85,240,16,240, + 16,240,2,69,85,144,144,144,240,16,2,69,85,240,128,240, + 16,240,2,69,85,224,128,240,144,240,2,69,85,240,16,32, + 64,64,2,69,85,240,144,240,144,240,2,69,85,240,144,240, + 16,112}; +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03br[696] U8G_SECTION(".progmem.u8g_font_04b_03br") = { + 1,5,6,0,255,5,0,250,1,240,32,127,255,5,255,5, + 255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80, + 224,2,85,101,200,208,32,88,152,2,85,101,224,128,248,144, + 240,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 85,101,8,16,32,64,128,2,69,85,240,144,144,144,240,2, + 37,53,192,64,64,64,64,2,69,85,240,16,240,128,240,2, + 69,85,240,16,240,16,240,2,69,85,144,144,144,240,16,2, + 69,85,240,128,240,16,240,2,69,85,224,128,240,144,240,2, + 69,85,240,16,32,64,64,2,69,85,240,144,240,144,240,2, + 69,85,240,144,240,16,112,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,69,85,240,16,112, + 0,64,2,85,101,248,136,184,168,240,2,69,85,240,144,240, + 144,144,2,69,85,224,160,240,144,240,2,69,85,240,128,128, + 128,240,2,69,85,224,144,144,144,224,2,69,85,240,128,240, + 128,240,2,69,85,240,128,240,128,128,2,69,85,240,128,176, + 144,240,2,69,85,144,144,240,144,144,2,53,69,224,64,64, + 64,224,2,69,85,48,16,16,144,240,2,69,85,144,144,224, + 144,144,2,69,85,128,128,128,128,240,2,85,101,248,168,168, + 168,168,2,69,85,144,208,176,144,144,2,69,85,240,144,144, + 144,240,2,69,85,240,144,144,240,128,2,69,85,240,144,144, + 176,240,2,69,85,240,144,240,160,176,2,69,85,240,128,240, + 16,240,2,53,69,224,64,64,64,64,2,69,85,144,144,144, + 144,240,2,69,85,144,144,160,160,64,2,85,101,168,168,168, + 168,248,2,69,85,144,144,96,144,144,2,69,85,144,144,240, + 16,240,2,69,85,240,16,96,128,240,2,37,53,192,128,128, + 128,192,2,85,101,128,64,32,16,8,2,37,53,192,64,64, + 64,192,5,50,66,64,160,2,65,81,240,5,34,50,128,64, + 2,67,83,112,144,240,2,68,84,128,240,144,240,2,51,67, + 224,128,224,2,68,84,16,240,144,240,2,67,83,240,160,112, + 2,68,84,112,64,240,64,1,68,84,240,144,240,32,2,68, + 84,128,240,144,144,2,20,36,128,0,128,128,1,21,37,128, + 0,128,128,128,2,68,84,128,144,224,144,2,20,36,128,128, + 128,128,2,83,99,248,168,168,2,67,83,240,144,144,2,67, + 83,240,144,240,1,68,84,240,144,240,128,1,68,84,240,144, + 240,16,2,51,67,224,128,128,2,67,83,240,64,240,2,52, + 68,64,224,64,96,2,67,83,144,144,240,2,67,83,144,144, + 96,2,83,99,168,168,248,2,51,67,160,64,160,1,68,84, + 144,144,240,16,2,67,83,240,32,240,2,53,69,96,64,128, + 64,96,2,21,37,128,128,128,128,128,2,53,69,192,64,32, + 64,192,5,66,82,80,160,255}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 5 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03[859] U8G_SECTION(".progmem.u8g_font_04b_03") = { + 1,5,7,0,254,5,0,251,1,242,32,255,254,5,254,5, + 254,2,0,64,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,1,70,86,32,112,192,48, + 224,32,2,85,101,144,16,32,64,72,2,85,101,96,128,104, + 144,104,5,18,34,128,128,2,37,53,64,128,128,128,64,2, + 37,53,128,64,64,64,128,4,51,67,160,64,160,3,51,67, + 64,224,64,1,34,50,64,128,4,49,65,224,2,17,33,128, + 2,85,101,8,16,32,64,128,2,69,85,96,144,144,144,96, + 2,37,53,192,64,64,64,64,2,69,85,224,16,96,128,240, + 2,69,85,224,16,96,16,224,2,69,85,32,96,160,240,32, + 2,69,85,240,128,224,16,224,2,69,85,96,128,224,144,96, + 2,69,85,240,16,32,64,64,2,69,85,96,144,96,144,96, + 2,69,85,96,144,112,16,96,3,19,35,128,0,128,2,20, + 36,128,0,128,128,2,53,69,32,64,128,64,32,3,51,67, + 224,0,224,2,53,69,128,64,32,64,128,2,69,85,224,16, + 96,0,64,2,85,101,112,136,184,168,112,2,69,85,96,144, + 144,240,144,2,69,85,224,144,224,144,224,2,53,69,96,128, + 128,128,96,2,69,85,224,144,144,144,224,2,53,69,224,128, + 224,128,224,2,53,69,224,128,224,128,128,2,69,85,112,128, + 176,144,112,2,69,85,144,144,240,144,144,2,53,69,224,64, + 64,64,224,2,69,85,48,16,16,144,96,2,69,85,144,160, + 192,160,144,2,53,69,128,128,128,128,224,2,85,101,136,216, + 168,136,136,2,69,85,144,208,176,144,144,2,69,85,96,144, + 144,144,96,2,69,85,224,144,144,224,128,1,70,86,96,144, + 144,144,96,16,2,69,85,224,144,144,224,144,2,69,85,112, + 128,96,16,224,2,53,69,224,64,64,64,64,2,69,85,144, + 144,144,144,96,2,69,85,144,144,160,160,64,2,85,101,136, + 168,168,168,80,2,69,85,144,144,96,144,144,2,69,85,144, + 144,112,16,96,2,53,69,224,32,64,128,224,2,37,53,192, + 128,128,128,192,2,85,101,128,64,32,16,8,2,37,53,192, + 64,64,64,192,5,50,66,64,160,2,65,81,240,5,34,50, + 128,64,2,68,84,112,144,144,112,2,69,85,128,224,144,144, + 224,2,52,68,96,128,128,96,2,69,85,16,112,144,144,112, + 2,68,84,96,176,192,96,2,53,69,32,64,224,64,64,0, + 70,86,112,144,144,112,16,96,2,69,85,128,224,144,144,144, + 2,21,37,128,0,128,128,128,0,39,55,64,0,64,64,64, + 64,128,2,69,85,128,144,160,224,144,2,21,37,128,128,128, + 128,128,2,84,100,240,168,168,168,2,68,84,224,144,144,144, + 2,68,84,96,144,144,96,0,70,86,224,144,144,224,128,128, + 0,70,86,112,144,144,112,16,16,2,52,68,160,192,128,128, + 2,68,84,112,192,48,224,2,53,69,64,224,64,64,32,2, + 68,84,144,144,144,112,2,68,84,144,144,160,64,2,84,100, + 168,168,80,80,2,52,68,160,64,64,160,0,70,86,144,144, + 144,112,16,96,2,68,84,240,32,64,240,2,53,69,96,64, + 128,64,96,2,21,37,128,128,128,128,128,2,53,69,192,64, + 32,64,192,5,66,82,80,160,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,2,0,64,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03n[130] U8G_SECTION(".progmem.u8g_font_04b_03n") = { + 1,5,7,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32, + 64,128,2,69,85,96,144,144,144,96,2,37,53,192,64,64, + 64,64,2,69,85,224,16,96,128,240,2,69,85,224,16,96, + 16,224,2,69,85,32,96,160,240,32,2,69,85,240,128,224, + 16,224,2,69,85,96,128,224,144,96,2,69,85,240,16,32, + 64,64,2,69,85,96,144,96,144,96,2,69,85,96,144,112, + 16,96}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 5 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03r[729] U8G_SECTION(".progmem.u8g_font_04b_03r") = { + 1,5,7,0,254,5,0,251,1,242,32,127,254,5,254,5, + 254,2,0,64,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,1,70,86,32,112,192,48, + 224,32,2,85,101,144,16,32,64,72,2,85,101,96,128,104, + 144,104,5,18,34,128,128,2,37,53,64,128,128,128,64,2, + 37,53,128,64,64,64,128,4,51,67,160,64,160,3,51,67, + 64,224,64,1,34,50,64,128,4,49,65,224,2,17,33,128, + 2,85,101,8,16,32,64,128,2,69,85,96,144,144,144,96, + 2,37,53,192,64,64,64,64,2,69,85,224,16,96,128,240, + 2,69,85,224,16,96,16,224,2,69,85,32,96,160,240,32, + 2,69,85,240,128,224,16,224,2,69,85,96,128,224,144,96, + 2,69,85,240,16,32,64,64,2,69,85,96,144,96,144,96, + 2,69,85,96,144,112,16,96,3,19,35,128,0,128,2,20, + 36,128,0,128,128,2,53,69,32,64,128,64,32,3,51,67, + 224,0,224,2,53,69,128,64,32,64,128,2,69,85,224,16, + 96,0,64,2,85,101,112,136,184,168,112,2,69,85,96,144, + 144,240,144,2,69,85,224,144,224,144,224,2,53,69,96,128, + 128,128,96,2,69,85,224,144,144,144,224,2,53,69,224,128, + 224,128,224,2,53,69,224,128,224,128,128,2,69,85,112,128, + 176,144,112,2,69,85,144,144,240,144,144,2,53,69,224,64, + 64,64,224,2,69,85,48,16,16,144,96,2,69,85,144,160, + 192,160,144,2,53,69,128,128,128,128,224,2,85,101,136,216, + 168,136,136,2,69,85,144,208,176,144,144,2,69,85,96,144, + 144,144,96,2,69,85,224,144,144,224,128,1,70,86,96,144, + 144,144,96,16,2,69,85,224,144,144,224,144,2,69,85,112, + 128,96,16,224,2,53,69,224,64,64,64,64,2,69,85,144, + 144,144,144,96,2,69,85,144,144,160,160,64,2,85,101,136, + 168,168,168,80,2,69,85,144,144,96,144,144,2,69,85,144, + 144,112,16,96,2,53,69,224,32,64,128,224,2,37,53,192, + 128,128,128,192,2,85,101,128,64,32,16,8,2,37,53,192, + 64,64,64,192,5,50,66,64,160,2,65,81,240,5,34,50, + 128,64,2,68,84,112,144,144,112,2,69,85,128,224,144,144, + 224,2,52,68,96,128,128,96,2,69,85,16,112,144,144,112, + 2,68,84,96,176,192,96,2,53,69,32,64,224,64,64,0, + 70,86,112,144,144,112,16,96,2,69,85,128,224,144,144,144, + 2,21,37,128,0,128,128,128,0,39,55,64,0,64,64,64, + 64,128,2,69,85,128,144,160,224,144,2,21,37,128,128,128, + 128,128,2,84,100,240,168,168,168,2,68,84,224,144,144,144, + 2,68,84,96,144,144,96,0,70,86,224,144,144,224,128,128, + 0,70,86,112,144,144,112,16,16,2,52,68,160,192,128,128, + 2,68,84,112,192,48,224,2,53,69,64,224,64,64,32,2, + 68,84,144,144,144,112,2,68,84,144,144,160,64,2,84,100, + 168,168,80,80,2,52,68,160,64,64,160,0,70,86,144,144, + 144,112,16,96,2,68,84,240,32,64,240,2,53,69,96,64, + 128,64,96,2,21,37,128,128,128,128,128,2,53,69,192,64, + 32,64,192,5,66,82,80,160,255}; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 6 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24[912] U8G_SECTION(".progmem.u8g_font_04b_24") = { + 1,5,6,0,255,5,0,250,1,241,32,255,0,5,255,5, + 0,2,0,32,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,53,69,64,224,64,224,64,2,53,69,96,192,64,96, + 192,2,53,69,160,32,64,128,160,2,69,85,96,128,112,160, + 96,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 53,69,32,32,64,128,128,2,53,69,224,160,160,160,224,2, + 37,53,192,64,64,64,64,2,53,69,224,32,224,128,224,2, + 53,69,224,32,224,32,224,2,53,69,160,160,160,224,32,2, + 53,69,224,128,224,32,224,2,53,69,128,224,160,160,224,2, + 53,69,224,32,32,64,128,2,53,69,224,160,224,160,224,2, + 53,69,224,160,160,224,32,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,53,69,224,32,96, + 0,64,2,85,101,112,136,232,168,96,2,53,69,224,160,160, + 224,160,2,53,69,224,160,224,160,224,2,53,69,224,128,128, + 128,224,2,53,69,192,160,160,160,224,2,53,69,224,128,224, + 128,224,2,53,69,224,128,224,128,128,2,53,69,224,128,160, + 160,224,2,53,69,160,160,224,160,160,2,21,37,128,128,128, + 128,128,2,53,69,32,32,160,160,224,2,53,69,160,160,192, + 160,160,2,53,69,128,128,128,128,224,2,53,69,160,224,160, + 160,160,2,53,69,224,160,160,160,160,2,53,69,224,160,160, + 160,224,2,53,69,224,160,160,224,128,1,54,70,224,160,160, + 160,224,64,2,53,69,224,160,160,192,160,2,53,69,224,128, + 224,32,224,2,53,69,224,64,64,64,64,2,53,69,160,160, + 160,160,224,2,53,69,160,160,160,160,192,2,53,69,160,160, + 160,224,160,2,53,69,160,160,64,160,160,2,53,69,160,160, + 64,64,64,2,53,69,224,32,64,128,224,2,37,53,192,128, + 128,128,192,2,53,69,128,128,64,32,32,2,37,53,192,64, + 64,64,192,5,50,66,64,160,2,49,65,224,5,34,50,128, + 64,2,53,69,64,160,160,224,160,2,53,69,192,160,192,160, + 192,2,53,69,96,128,128,128,96,2,53,69,192,160,160,160, + 192,2,53,69,96,128,224,128,96,2,53,69,96,128,224,128, + 128,2,53,69,96,128,160,160,96,2,53,69,160,160,224,160, + 160,2,21,37,128,128,128,128,128,2,53,69,32,32,160,160, + 64,2,53,69,160,160,192,160,160,2,53,69,128,128,128,128, + 96,2,53,69,160,224,160,160,160,2,53,69,192,160,160,160, + 160,2,53,69,64,160,160,160,64,2,53,69,192,160,160,192, + 128,1,54,70,64,160,160,160,64,64,2,53,69,192,160,160, + 192,160,2,53,69,96,128,64,32,192,2,53,69,224,64,64, + 64,64,2,53,69,160,160,160,160,64,2,53,69,160,160,160, + 160,192,2,53,69,160,160,160,224,160,2,53,69,160,160,64, + 160,160,2,53,69,160,160,64,64,64,2,53,69,224,32,64, + 128,224,2,53,69,96,64,192,64,96,2,21,37,128,128,128, + 128,128,2,53,69,192,64,96,64,192,6,33,49,192,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 2,37,53,128,64,64,64,64,2,53,69,160,160,160,96,32, + 2,53,69,192,32,192,32,192,255,255,255,2,53,69,128,192, + 160,160,64,255,255,2,53,69,64,160,160,96,32,255,255,255, + 255,255,255,255,255,255,255,255,2,53,69,224,32,32,64,128, + 255,255,255,2,53,69,64,160,160,160,64,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 + }; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24n[130] U8G_SECTION(".progmem.u8g_font_04b_24n") = { + 1,5,6,0,255,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,53,69,32,32,64, + 128,128,2,53,69,224,160,160,160,224,2,37,53,192,64,64, + 64,64,2,53,69,224,32,224,128,224,2,53,69,224,32,224, + 32,224,2,53,69,160,160,160,224,32,2,53,69,224,128,224, + 32,224,2,53,69,128,224,160,160,224,2,53,69,224,32,32, + 64,128,2,53,69,224,160,224,160,224,2,53,69,224,160,160, + 224,32}; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 6 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24r[735] U8G_SECTION(".progmem.u8g_font_04b_24r") = { + 1,5,6,0,255,5,0,250,1,241,32,127,0,5,255,5, + 0,2,0,32,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,53,69,64,224,64,224,64,2,53,69,96,192,64,96, + 192,2,53,69,160,32,64,128,160,2,69,85,96,128,112,160, + 96,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 53,69,32,32,64,128,128,2,53,69,224,160,160,160,224,2, + 37,53,192,64,64,64,64,2,53,69,224,32,224,128,224,2, + 53,69,224,32,224,32,224,2,53,69,160,160,160,224,32,2, + 53,69,224,128,224,32,224,2,53,69,128,224,160,160,224,2, + 53,69,224,32,32,64,128,2,53,69,224,160,224,160,224,2, + 53,69,224,160,160,224,32,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,53,69,224,32,96, + 0,64,2,85,101,112,136,232,168,96,2,53,69,224,160,160, + 224,160,2,53,69,224,160,224,160,224,2,53,69,224,128,128, + 128,224,2,53,69,192,160,160,160,224,2,53,69,224,128,224, + 128,224,2,53,69,224,128,224,128,128,2,53,69,224,128,160, + 160,224,2,53,69,160,160,224,160,160,2,21,37,128,128,128, + 128,128,2,53,69,32,32,160,160,224,2,53,69,160,160,192, + 160,160,2,53,69,128,128,128,128,224,2,53,69,160,224,160, + 160,160,2,53,69,224,160,160,160,160,2,53,69,224,160,160, + 160,224,2,53,69,224,160,160,224,128,1,54,70,224,160,160, + 160,224,64,2,53,69,224,160,160,192,160,2,53,69,224,128, + 224,32,224,2,53,69,224,64,64,64,64,2,53,69,160,160, + 160,160,224,2,53,69,160,160,160,160,192,2,53,69,160,160, + 160,224,160,2,53,69,160,160,64,160,160,2,53,69,160,160, + 64,64,64,2,53,69,224,32,64,128,224,2,37,53,192,128, + 128,128,192,2,53,69,128,128,64,32,32,2,37,53,192,64, + 64,64,192,5,50,66,64,160,2,49,65,224,5,34,50,128, + 64,2,53,69,64,160,160,224,160,2,53,69,192,160,192,160, + 192,2,53,69,96,128,128,128,96,2,53,69,192,160,160,160, + 192,2,53,69,96,128,224,128,96,2,53,69,96,128,224,128, + 128,2,53,69,96,128,160,160,96,2,53,69,160,160,224,160, + 160,2,21,37,128,128,128,128,128,2,53,69,32,32,160,160, + 64,2,53,69,160,160,192,160,160,2,53,69,128,128,128,128, + 96,2,53,69,160,224,160,160,160,2,53,69,192,160,160,160, + 160,2,53,69,64,160,160,160,64,2,53,69,192,160,160,192, + 128,1,54,70,64,160,160,160,64,64,2,53,69,192,160,160, + 192,160,2,53,69,96,128,64,32,192,2,53,69,224,64,64, + 64,64,2,53,69,160,160,160,160,64,2,53,69,160,160,160, + 160,192,2,53,69,160,160,160,224,160,2,53,69,160,160,64, + 160,160,2,53,69,160,160,64,64,64,2,53,69,224,32,64, + 128,224,2,53,69,96,64,192,64,96,2,21,37,128,128,128, + 128,128,2,53,69,192,64,96,64,192,6,33,49,192,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 13 + Calculated Max Values w=10 h=20 x= 9 y=13 dx=10 dy= 0 ascent=16 len=40 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent =13 descent= 0 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[4734] U8G_SECTION(".progmem.u8g_font_10x20_67_75") = { + 0,10,20,0,252,5,2,211,5,193,32,255,0,16,252,13, + 0,9,6,12,10,0,3,54,0,27,0,255,128,255,128,27, + 0,54,0,8,13,13,10,1,0,24,24,24,24,153,219,126, + 60,153,219,126,60,24,9,8,16,10,0,2,25,128,51,0, + 102,0,252,0,252,0,102,0,51,0,25,128,9,8,16,10, + 0,2,204,0,102,0,51,0,31,128,31,128,51,0,102,0, + 204,0,9,8,16,10,0,2,25,128,49,128,97,128,255,128, + 255,128,97,128,49,128,25,128,8,13,13,10,1,0,24,60, + 126,219,153,24,24,24,24,24,24,255,255,9,8,16,10,0, + 2,204,0,198,0,195,0,255,128,255,128,195,0,198,0,204, + 0,8,13,13,10,1,0,255,255,24,24,24,24,24,24,153, + 219,126,60,24,8,13,13,10,1,0,24,60,126,219,153,24, + 153,219,126,60,24,255,255,9,8,16,10,0,2,27,0,51, + 128,97,128,255,128,255,0,96,0,48,0,24,0,9,8,16, + 10,0,2,108,0,230,0,195,0,255,128,127,128,3,0,6, + 0,12,0,9,8,16,10,0,2,25,0,51,128,98,128,255, + 128,255,0,98,0,50,0,24,0,9,8,16,10,0,2,76, + 0,230,0,163,0,255,128,127,128,35,0,38,0,12,0,10, + 8,16,10,0,2,18,0,51,0,109,128,255,192,243,192,97, + 128,51,0,18,0,10,8,16,10,0,2,18,0,55,0,101, + 128,255,192,255,192,105,128,59,0,18,0,10,15,30,10,0, + 0,1,192,3,128,7,0,14,0,28,0,63,192,127,192,3, + 128,7,0,206,0,220,0,248,0,240,0,252,0,252,0,8, + 13,13,10,1,0,48,96,255,255,99,51,3,3,3,3,3, + 3,3,8,13,13,10,1,0,12,6,255,255,198,204,192,192, + 192,192,192,192,192,8,13,13,10,1,0,3,3,3,3,3, + 3,3,51,99,255,255,96,48,8,13,13,10,1,0,192,192, + 192,192,192,192,192,204,198,255,255,6,12,8,13,13,10,1, + 0,252,252,12,12,12,12,12,12,12,45,63,30,12,8,9, + 9,10,1,1,3,3,3,51,99,255,255,96,48,9,8,16, + 10,0,0,14,0,31,0,59,128,49,128,181,128,253,128,121, + 128,49,128,9,8,16,10,0,0,56,0,124,0,238,0,198, + 0,214,128,223,128,207,0,198,0,9,13,26,10,0,0,255, + 128,255,128,32,0,124,0,127,0,122,0,216,0,204,0,140, + 0,6,0,6,0,3,0,3,0,9,13,26,10,0,0,204, + 0,216,0,255,128,255,128,216,0,204,0,0,0,25,128,13, + 128,255,128,255,128,13,128,25,128,9,10,20,10,0,2,31, + 0,31,0,30,0,31,0,219,128,193,128,193,128,227,128,127, + 0,62,0,9,10,20,10,0,2,124,0,124,0,60,0,124, + 0,237,128,193,128,193,128,227,128,127,0,62,0,9,5,10, + 10,0,5,24,0,48,0,96,0,255,128,255,128,9,5,10, + 10,0,2,255,128,255,128,96,0,48,0,24,0,5,13,13, + 10,4,0,192,224,240,216,200,192,192,192,192,192,192,192,192, + 5,13,13,10,1,0,24,56,120,216,152,24,24,24,24,24, + 24,24,24,9,5,10,10,0,5,12,0,6,0,3,0,255, + 128,255,128,9,5,10,10,0,2,255,128,255,128,3,0,6, + 0,12,0,5,13,13,10,4,0,192,192,192,192,192,192,192, + 192,200,216,240,224,192,5,13,13,10,1,0,24,24,24,24, + 24,24,24,24,152,216,120,56,24,9,11,22,10,0,1,6, + 0,3,0,255,128,255,128,3,0,54,0,96,0,255,128,255, + 128,96,0,48,0,10,13,26,10,0,0,51,0,123,0,255, + 0,183,0,51,0,51,0,51,0,51,0,51,0,59,64,63, + 192,55,128,51,0,9,11,22,10,0,1,48,0,96,0,255, + 128,255,128,96,0,54,0,3,0,255,128,255,128,3,0,6, + 0,9,11,22,10,0,1,48,0,96,0,255,128,255,128,96, + 0,48,0,96,0,255,128,255,128,96,0,48,0,9,13,26, + 10,0,0,34,0,119,0,170,128,34,0,34,0,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,9,11,22, + 10,0,1,6,0,3,0,255,128,255,128,3,0,6,0,3, + 0,255,128,255,128,3,0,6,0,9,13,26,10,0,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,34, + 0,34,0,170,128,119,0,34,0,8,9,9,10,1,2,48, + 96,255,255,0,255,255,6,12,8,9,9,10,1,2,12,6, + 255,255,0,255,255,96,48,8,7,7,10,1,2,2,34,127, + 132,127,40,8,10,7,14,10,0,2,4,0,37,0,127,128, + 140,64,127,128,41,0,8,0,8,7,7,10,1,2,16,20, + 254,33,254,68,64,9,9,18,10,0,2,12,0,24,0,63, + 128,127,128,192,0,127,128,63,128,24,0,12,0,9,13,26, + 10,0,0,8,0,28,0,54,0,119,0,247,128,182,128,54, + 0,54,0,54,0,54,0,54,0,54,0,54,0,9,9,18, + 10,0,2,24,0,12,0,254,0,255,0,1,128,255,0,254, + 0,12,0,24,0,9,13,26,10,0,0,54,0,54,0,54, + 0,54,0,54,0,54,0,54,0,182,128,247,128,119,0,54, + 0,28,0,8,0,10,9,18,10,0,2,18,0,51,0,127, + 128,255,192,128,192,255,192,127,128,51,0,18,0,9,13,26, + 10,0,0,8,0,28,0,54,0,119,0,247,128,182,128,54, + 0,182,128,247,128,119,0,54,0,28,0,8,0,9,9,18, + 10,0,2,254,0,254,0,204,0,198,0,227,0,241,128,216, + 128,12,0,6,0,9,9,18,10,0,2,63,128,63,128,25, + 128,49,128,99,128,199,128,141,128,24,0,48,0,9,9,18, + 10,0,2,48,0,24,0,141,128,199,128,99,128,49,128,25, + 128,63,128,63,128,9,9,18,10,0,2,6,0,12,0,216, + 128,241,128,227,0,198,0,204,0,254,0,254,0,9,11,22, + 10,0,1,4,0,8,0,16,0,63,128,64,0,255,128,64, + 0,63,128,16,0,8,0,4,0,9,11,22,10,0,1,16, + 0,8,0,4,0,254,0,1,0,255,128,1,0,254,0,4, + 0,8,0,16,0,9,5,10,10,0,3,32,0,66,0,245, + 128,72,0,32,0,9,5,10,10,0,3,2,0,33,0,215, + 128,9,0,2,0,8,13,13,10,1,0,24,60,126,219,153, + 24,126,126,24,126,126,24,24,8,13,13,10,1,0,24,24, + 126,126,24,126,126,24,153,219,126,60,24,9,8,16,10,0, + 2,24,0,48,0,96,0,237,128,237,128,96,0,48,0,24, + 0,8,13,13,10,1,0,24,60,126,219,129,24,24,0,24, + 24,0,24,24,9,8,16,10,0,2,12,0,6,0,3,0, + 219,128,219,128,3,0,6,0,12,0,8,13,13,10,1,0, + 24,24,0,24,24,0,24,24,129,219,126,60,24,9,8,16, + 10,0,2,198,0,204,0,216,0,255,128,255,128,216,0,204, + 0,198,0,9,8,16,10,0,2,49,128,25,128,13,128,255, + 128,255,128,13,128,25,128,49,128,9,8,16,10,0,2,24, + 0,40,0,79,128,128,128,128,128,79,128,40,0,24,0,8, + 13,13,10,1,0,24,36,66,129,231,36,36,36,36,36,36, + 36,60,9,8,16,10,0,2,12,0,10,0,249,0,128,128, + 128,128,249,0,10,0,12,0,8,13,13,10,1,0,60,36, + 36,36,36,36,36,36,231,129,66,36,24,8,13,13,10,1, + 0,24,36,66,129,231,36,36,60,0,60,36,36,60,8,13, + 13,10,1,0,24,36,66,129,231,36,36,36,36,36,231,129, + 255,8,13,13,10,1,0,24,36,126,129,231,36,36,36,36, + 36,231,129,255,9,14,28,10,0,0,8,0,28,0,42,0, + 73,0,136,128,235,128,42,0,42,0,42,0,42,0,42,0, + 235,128,136,128,255,128,8,13,13,10,1,0,24,36,90,231, + 66,231,36,36,36,36,36,36,60,8,13,13,10,1,0,24, + 36,90,231,66,231,36,36,36,36,231,129,255,9,8,16,10, + 0,2,236,0,170,0,185,0,128,128,128,128,185,0,170,0, + 236,0,8,8,8,10,1,2,255,128,188,168,184,164,130,129, + 8,8,8,10,1,2,129,65,37,29,21,61,1,255,8,13, + 13,10,1,0,24,36,66,231,36,36,36,36,36,231,66,36, + 24,9,6,12,10,0,3,38,0,83,0,255,128,255,128,83, + 0,38,0,10,13,26,10,0,0,51,0,55,128,63,192,59, + 64,51,0,51,0,51,0,51,0,51,0,183,0,255,0,123, + 0,51,0,9,16,32,10,0,254,6,0,3,0,255,128,255, + 128,3,0,6,0,3,0,255,128,255,128,3,0,6,0,3, + 0,255,128,255,128,3,0,6,0,9,8,16,10,0,2,22, + 0,54,0,102,0,255,128,255,128,102,0,54,0,22,0,9, + 8,16,10,0,2,52,0,54,0,51,0,255,128,255,128,51, + 0,54,0,52,0,10,6,12,10,0,3,45,0,109,128,255, + 192,255,192,109,128,45,0,9,6,12,10,0,3,42,0,106, + 0,255,128,255,128,106,0,42,0,9,6,12,10,0,3,42, + 0,43,0,255,128,255,128,43,0,42,0,9,6,12,10,0, + 3,85,0,213,128,255,128,255,128,213,128,85,0,9,8,16, + 10,0,2,16,0,48,0,112,0,223,128,223,128,112,0,48, + 0,16,0,9,8,16,10,0,2,4,0,6,0,7,0,253, + 128,253,128,7,0,6,0,4,0,10,8,16,10,0,2,18, + 0,51,0,115,128,222,192,222,192,115,128,51,0,18,0,10, + 10,20,10,0,6,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,10,3,6,10,0,252,255, + 192,255,192,255,192,10,5,10,10,0,252,255,192,255,192,255, + 192,255,192,255,192,10,8,16,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,10,10,20,10,0, + 252,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,10,12,24,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,10,15,30,10,0,252,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,10,17,34,10,0,252,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,10, + 20,40,10,0,252,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,9,20,40, + 10,0,252,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,7,20,20,10,0, + 252,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, + 254,254,254,254,254,6,20,20,10,0,252,252,252,252,252,252, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,5, + 20,20,10,0,252,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,4,20,20,10,0,252,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,3,20,20,10,0,252,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,1,20,20, + 10,0,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,5,20,20,10,5,252,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,10,19,38,10,0,253,85,64,0,0,170,128,0,0,85, + 64,0,0,170,128,0,0,85,64,0,0,170,128,0,0,85, + 64,0,0,170,128,0,0,85,64,0,0,170,128,10,20,40, + 10,0,252,85,64,170,128,85,64,170,128,85,64,170,128,85, + 64,170,128,85,64,170,128,85,64,170,128,85,64,170,128,85, + 64,170,128,85,64,170,128,85,64,170,128,10,20,40,10,0, + 252,85,64,255,192,170,128,255,192,85,64,255,192,170,128,255, + 192,85,64,255,192,170,128,255,192,85,64,255,192,170,128,255, + 192,85,64,255,192,170,128,255,192,10,3,6,10,0,13,255, + 192,255,192,255,192,1,20,20,10,9,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,5, + 10,10,10,0,252,248,248,248,248,248,248,248,248,248,248,5, + 10,10,10,5,252,248,248,248,248,248,248,248,248,248,248,5, + 10,10,10,0,6,248,248,248,248,248,248,248,248,248,248,10, + 20,40,10,0,252,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,10,20,40, + 10,0,252,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,10,20,40,10,0, + 252,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,10,20,40,10,0,252,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,5,10,10,10,5,6,248,248,248, + 248,248,248,248,248,248,248,10,20,40,10,0,252,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,10,20,40,10,0,252,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,8,8,8,10,1,1,255,255,255,255,255,255,255, + 255,8,8,8,10,1,1,255,129,129,129,129,129,129,255,8, + 8,8,10,1,1,126,129,129,129,129,129,129,126,8,8,8, + 10,1,1,255,129,189,189,189,189,129,255,9,9,18,10,0, + 0,255,128,128,128,255,128,128,128,255,128,128,128,255,128,128, + 128,255,128,9,9,18,10,0,0,255,128,170,128,170,128,170, + 128,170,128,170,128,170,128,170,128,255,128,9,9,18,10,0, + 0,255,128,170,128,255,128,170,128,255,128,170,128,255,128,170, + 128,255,128,8,8,8,10,1,1,255,201,165,147,201,165,147, + 255,8,8,8,10,1,1,255,147,165,201,147,165,201,255,8, + 8,8,10,1,1,255,171,197,171,145,171,197,255,4,4,4, + 10,3,3,240,240,240,240,4,4,4,10,3,3,240,144,144, + 240,8,6,6,10,1,3,255,255,255,255,255,255,8,6,6, + 10,1,3,255,129,129,129,129,255,6,13,13,10,2,0,252, + 252,252,252,252,252,252,252,252,252,252,252,252,6,13,13,10, + 2,0,252,132,132,132,132,132,132,132,132,132,132,132,252,8, + 4,4,10,1,3,31,62,124,248,8,4,4,10,1,3,31, + 34,68,248,8,8,8,10,1,2,24,24,60,60,126,126,255, + 255,8,8,8,10,1,2,24,24,36,36,66,66,129,255,5, + 5,5,10,3,3,32,112,112,248,248,5,5,5,10,3,3, + 32,80,80,136,248,8,8,8,10,1,2,192,240,252,255,255, + 252,240,192,8,8,8,10,1,2,192,176,140,131,131,140,176, + 192,5,5,5,10,3,3,192,240,248,240,192,5,5,5,10, + 3,3,192,176,136,176,192,8,5,5,10,1,4,224,252,255, + 252,224,8,5,5,10,1,4,224,156,131,156,224,8,8,8, + 10,1,2,255,255,126,126,60,60,24,24,8,8,8,10,1, + 2,255,129,66,66,36,36,24,24,5,5,5,10,3,3,248, + 248,112,112,32,5,5,5,10,3,3,248,136,80,80,32,8, + 8,8,10,1,2,3,15,63,255,255,63,15,3,8,8,8, + 10,1,2,3,13,49,193,193,49,13,3,5,5,5,10,3, + 3,24,120,248,120,24,5,5,5,10,3,3,24,104,136,104, + 24,8,5,5,10,1,4,7,63,255,63,7,8,5,5,10, + 1,4,7,57,193,57,7,8,8,8,10,1,2,24,60,126, + 255,255,126,60,24,8,8,8,10,1,2,24,36,66,129,129, + 66,36,24,8,8,8,10,1,2,24,36,90,189,189,90,36, + 24,8,8,8,10,1,1,60,66,153,189,189,153,66,60,9, + 15,30,10,1,255,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,65,0,65,0,34,0,34,0,20,0,20, + 0,8,0,8,8,8,10,1,1,60,66,129,129,129,129,66, + 60,7,7,7,10,1,2,40,0,130,0,130,0,40,7,7, + 7,10,1,2,56,108,170,170,170,108,56,8,8,8,10,1, + 1,60,66,153,165,165,153,66,60,8,8,8,10,1,1,60, + 126,255,255,255,255,126,60,8,8,8,10,1,1,60,114,241, + 241,241,241,114,60,8,8,8,10,1,1,60,78,143,143,143, + 143,78,60,8,8,8,10,1,1,60,66,129,129,255,255,126, + 60,8,8,8,10,1,1,60,126,255,255,129,129,66,60,8, + 8,8,10,1,1,60,78,143,143,129,129,66,60,8,8,8, + 10,1,1,60,78,143,143,255,255,126,60,4,8,8,10,1, + 1,48,112,240,240,240,240,112,48,4,8,8,10,5,1,192, + 224,240,240,240,240,224,192,10,20,40,10,0,252,255,192,255, + 192,255,192,255,192,255,192,255,192,225,192,192,192,128,64,128, + 64,128,64,128,64,192,192,225,192,255,192,255,192,255,192,255, + 192,255,192,255,192,10,20,40,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,225,192,222,192,191,64,191,64,191, + 64,191,64,222,192,225,192,255,192,255,192,255,192,255,192,255, + 192,255,192,10,10,20,10,0,6,255,192,255,192,255,192,255, + 192,255,192,255,192,225,192,222,192,191,64,191,64,10,10,20, + 10,0,252,191,64,191,64,222,192,225,192,255,192,255,192,255, + 192,255,192,255,192,255,192,4,4,4,10,1,5,48,64,128, + 128,4,4,4,10,5,5,192,32,16,16,4,4,4,10,5, + 1,16,16,32,192,4,4,4,10,1,1,128,128,64,48,8, + 4,4,10,1,5,60,66,129,129,8,4,4,10,1,1,129, + 129,66,60,10,19,38,10,0,252,0,64,0,64,0,192,0, + 192,1,192,1,192,3,192,3,192,7,192,7,192,15,192,15, + 192,31,192,31,192,63,192,63,192,127,192,127,192,255,192,10, + 19,38,10,0,252,128,0,128,0,192,0,192,0,224,0,224, + 0,240,0,240,0,248,0,248,0,252,0,252,0,254,0,254, + 0,255,0,255,0,255,128,255,128,255,192,10,19,38,10,0, + 253,255,192,255,128,255,128,255,0,255,0,254,0,254,0,252, + 0,252,0,248,0,248,0,240,0,240,0,224,0,224,0,192, + 0,192,0,128,0,128,0,10,19,38,10,0,253,255,192,127, + 192,127,192,63,192,63,192,31,192,31,192,15,192,15,192,7, + 192,7,192,3,192,3,192,1,192,1,192,0,192,0,192,0, + 64,0,64,5,5,5,10,3,4,112,136,136,136,112,8,8, + 8,10,1,1,255,241,241,241,241,241,241,255,8,8,8,10, + 1,1,255,143,143,143,143,143,143,255,8,8,8,10,1,1, + 255,253,249,241,225,193,129,255,8,8,8,10,1,1,255,129, + 131,135,143,159,191,255,9,9,18,10,0,0,255,128,136,128, + 136,128,136,128,136,128,136,128,136,128,136,128,255,128,8,8, + 8,10,1,2,24,24,36,36,90,90,129,255,8,8,8,10, + 1,2,24,24,52,52,114,114,241,255,8,8,8,10,1,2, + 24,24,44,44,78,78,143,255,10,10,20,10,0,0,30,0, + 33,0,64,128,128,64,128,64,128,64,128,64,64,128,33,0, + 30,0,9,9,18,10,0,0,255,128,136,128,136,128,136,128, + 248,128,128,128,128,128,128,128,255,128,9,9,18,10,0,0, + 255,128,128,128,128,128,128,128,248,128,136,128,136,128,136,128, + 255,128,9,9,18,10,0,0,255,128,128,128,128,128,128,128, + 143,128,136,128,136,128,136,128,255,128,9,9,18,10,0,0, + 255,128,136,128,136,128,136,128,143,128,128,128,128,128,128,128, + 255,128,9,9,18,10,0,0,62,0,73,0,136,128,136,128, + 248,128,128,128,128,128,65,0,62,0,9,9,18,10,0,0, + 62,0,65,0,128,128,128,128,248,128,136,128,136,128,73,0, + 62,0,9,9,18,10,0,0,62,0,65,0,128,128,128,128, + 143,128,136,128,136,128,73,0,62,0,9,9,18,10,0,0, + 62,0,73,0,136,128,136,128,143,128,128,128,128,128,65,0, + 62,0,6,6,6,10,2,2,252,136,144,160,192,128,6,6, + 6,10,2,2,252,68,36,20,12,4,6,6,6,10,2,2, + 128,192,160,144,136,252,6,6,6,10,2,2,252,132,132,132, + 132,252,6,6,6,10,2,2,252,252,252,252,252,252,4,4, + 4,10,3,3,240,144,144,240,4,4,4,10,3,3,240,240, + 240,240,6,6,6,10,2,2,4,12,20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 8, '1' Height: 4 + Calculated Max Values w= 9 h=15 x= 3 y= 4 dx=10 dy= 0 ascent=14 len=30 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =14 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_75r[693] U8G_SECTION(".progmem.u8g_font_10x20_75r") = { + 0,10,20,0,252,8,1,219,0,0,32,79,0,14,255,9, + 0,8,8,8,10,1,1,255,255,255,255,255,255,255,255,8, + 8,8,10,1,1,255,129,129,129,129,129,129,255,8,8,8, + 10,1,1,126,129,129,129,129,129,129,126,8,8,8,10,1, + 1,255,129,189,189,189,189,129,255,9,9,18,10,0,0,255, + 128,128,128,255,128,128,128,255,128,128,128,255,128,128,128,255, + 128,9,9,18,10,0,0,255,128,170,128,170,128,170,128,170, + 128,170,128,170,128,170,128,255,128,9,9,18,10,0,0,255, + 128,170,128,255,128,170,128,255,128,170,128,255,128,170,128,255, + 128,8,8,8,10,1,1,255,201,165,147,201,165,147,255,8, + 8,8,10,1,1,255,147,165,201,147,165,201,255,8,8,8, + 10,1,1,255,171,197,171,145,171,197,255,4,4,4,10,3, + 3,240,240,240,240,4,4,4,10,3,3,240,144,144,240,8, + 6,6,10,1,3,255,255,255,255,255,255,8,6,6,10,1, + 3,255,129,129,129,129,255,6,13,13,10,2,0,252,252,252, + 252,252,252,252,252,252,252,252,252,252,6,13,13,10,2,0, + 252,132,132,132,132,132,132,132,132,132,132,132,252,8,4,4, + 10,1,3,31,62,124,248,8,4,4,10,1,3,31,34,68, + 248,8,8,8,10,1,2,24,24,60,60,126,126,255,255,8, + 8,8,10,1,2,24,24,36,36,66,66,129,255,5,5,5, + 10,3,3,32,112,112,248,248,5,5,5,10,3,3,32,80, + 80,136,248,8,8,8,10,1,2,192,240,252,255,255,252,240, + 192,8,8,8,10,1,2,192,176,140,131,131,140,176,192,5, + 5,5,10,3,3,192,240,248,240,192,5,5,5,10,3,3, + 192,176,136,176,192,8,5,5,10,1,4,224,252,255,252,224, + 8,5,5,10,1,4,224,156,131,156,224,8,8,8,10,1, + 2,255,255,126,126,60,60,24,24,8,8,8,10,1,2,255, + 129,66,66,36,36,24,24,5,5,5,10,3,3,248,248,112, + 112,32,5,5,5,10,3,3,248,136,80,80,32,8,8,8, + 10,1,2,3,15,63,255,255,63,15,3,8,8,8,10,1, + 2,3,13,49,193,193,49,13,3,5,5,5,10,3,3,24, + 120,248,120,24,5,5,5,10,3,3,24,104,136,104,24,8, + 5,5,10,1,4,7,63,255,63,7,8,5,5,10,1,4, + 7,57,193,57,7,8,8,8,10,1,2,24,60,126,255,255, + 126,60,24,8,8,8,10,1,2,24,36,66,129,129,66,36, + 24,8,8,8,10,1,2,24,36,90,189,189,90,36,24,8, + 8,8,10,1,1,60,66,153,189,189,153,66,60,9,15,30, + 10,1,255,8,0,20,0,20,0,34,0,34,0,65,0,65, + 0,128,128,65,0,65,0,34,0,34,0,20,0,20,0,8, + 0,8,8,8,10,1,1,60,66,129,129,129,129,66,60,7, + 7,7,10,1,2,40,0,130,0,130,0,40,7,7,7,10, + 1,2,56,108,170,170,170,108,56,8,8,8,10,1,1,60, + 66,153,165,165,153,66,60,8,8,8,10,1,1,60,126,255, + 255,255,255,126,60}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w=10 h=13 x= 4 y= 5 dx=10 dy= 0 ascent=13 len=24 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =13 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[2638] U8G_SECTION(".progmem.u8g_font_10x20_78_79") = { + 0,10,20,0,252,9,1,212,2,205,32,255,0,13,0,11, + 0,9,9,18,10,0,0,54,0,28,0,136,128,201,128,119, + 0,201,128,136,128,28,0,54,0,9,9,18,10,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,10,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,10,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,10,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,10,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,10,0,0,8,0,28,0,28,0,127,0,255, + 128,127,0,28,0,28,0,8,0,9,9,18,10,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,10,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,10,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,10,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,127,0,119,0,99,0,255,255,255,255, + 255,8,9,9,10,0,0,24,219,255,126,24,126,255,219,24, + 8,9,9,10,0,0,24,219,255,102,36,102,255,219,24,9, + 9,18,10,0,0,8,0,73,0,42,0,28,0,255,128,28, + 0,42,0,73,0,8,0,9,9,18,10,0,0,8,0,73, + 0,62,0,62,0,255,128,62,0,62,0,73,0,8,0,7, + 7,7,10,1,0,16,146,124,56,124,146,16,9,9,18,10, + 0,0,34,0,20,0,148,128,127,0,28,0,127,0,148,128, + 20,0,34,0,255,255,255,255,9,11,22,10,0,0,28,0, + 28,0,201,128,201,128,62,0,28,0,62,0,201,128,201,128, + 28,0,28,0,9,11,22,10,0,0,28,0,28,0,201,128, + 201,128,62,0,28,0,62,0,201,128,201,128,28,0,28,0, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 9,8,16,10,0,1,62,0,67,0,129,128,129,128,129,128, + 129,128,67,0,62,0,255,9,9,18,10,0,0,254,0,130, + 0,131,128,131,128,131,128,131,128,255,128,63,128,63,128,9, + 9,18,10,0,0,63,128,63,128,255,128,131,128,131,128,131, + 128,131,128,130,0,254,0,8,8,8,10,0,0,254,131,131, + 131,131,131,255,127,8,8,8,10,0,0,127,255,131,131,131, + 131,131,254,255,255,255,9,9,18,10,0,0,8,0,28,0, + 28,0,107,0,247,128,107,0,28,0,28,0,8,0,255,1, + 10,10,10,4,0,128,128,128,128,128,128,128,128,128,128,2, + 10,10,10,3,0,192,192,192,192,192,192,192,192,192,192,3, + 10,10,10,3,0,224,224,224,224,224,224,224,224,224,224,4, + 6,6,10,3,5,112,128,224,240,240,96,4,6,6,10,3, + 5,96,240,240,112,16,224,9,6,12,10,0,5,115,128,132, + 0,231,0,247,128,247,128,99,0,9,6,12,10,0,5,99, + 0,247,128,247,128,115,128,16,128,231,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,9,9,18,10,0,0,127,0,247,128,231,128,247,128, + 247,128,247,128,247,128,227,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,253,128,251,128,247,128,237,128,193,128, + 127,0,9,9,18,10,0,0,127,0,227,128,221,128,253,128, + 243,128,253,128,221,128,227,128,127,0,9,9,18,10,0,0, + 127,0,243,128,235,128,219,128,193,128,251,128,251,128,241,128, + 127,0,9,9,18,10,0,0,127,0,193,128,223,128,223,128, + 195,128,253,128,253,128,195,128,127,0,9,9,18,10,0,0, + 127,0,225,128,223,128,223,128,195,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,193,128,253,128,251,128, + 251,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,221,128,227,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,225,128,221,128,221,128, + 225,128,253,128,253,128,227,128,127,0,9,9,18,10,0,0, + 127,0,219,128,213,128,213,128,213,128,213,128,213,128,219,128, + 127,0,9,9,18,10,0,0,127,0,128,128,136,128,152,128, + 136,128,136,128,156,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,152,128,132,128,132,128,136,128,156,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,152,128,132,128, + 136,128,132,128,152,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,136,128,152,128,168,128,188,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,156,128,144,128, + 152,128,132,128,152,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,140,128,144,128,152,128,148,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,156,128,132,128, + 136,128,136,128,136,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,136,128,148,128,136,128,148,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,136,128,148,128, + 140,128,132,128,136,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,164,128,170,128,170,128,170,128,164,128,128,128, + 127,0,9,9,18,10,0,0,127,0,247,128,231,128,247,128, + 247,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,253,128,251,128,247,128,239,128,193,128, + 127,0,9,9,18,10,0,0,127,0,227,128,221,128,253,128, + 243,128,253,128,221,128,227,128,127,0,9,9,18,10,0,0, + 127,0,243,128,235,128,219,128,193,128,251,128,251,128,251,128, + 127,0,9,9,18,10,0,0,127,0,193,128,223,128,223,128, + 195,128,253,128,253,128,195,128,127,0,9,9,18,10,0,0, + 127,0,225,128,223,128,223,128,195,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,193,128,253,128,251,128, + 251,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,221,128,227,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,225,128,221,128,221,128, + 225,128,253,128,253,128,227,128,127,0,9,9,18,10,0,0, + 127,0,219,128,213,128,213,128,213,128,213,128,213,128,219,128, + 127,0,7,8,8,10,1,1,48,24,12,254,254,12,24,48, + 255,255,255,7,5,5,10,1,1,224,250,62,14,30,8,7, + 7,10,1,1,8,12,230,255,230,12,8,7,5,5,10,1, + 1,30,14,62,250,224,9,7,14,10,0,0,48,0,28,0, + 31,0,255,128,31,0,28,0,48,0,9,9,18,10,0,0, + 28,0,30,0,15,0,255,128,255,128,255,128,15,0,30,0, + 28,0,9,5,10,10,0,1,2,0,3,0,255,128,3,0, + 2,0,9,7,14,10,0,0,4,0,6,0,255,0,255,128, + 255,0,6,0,4,0,9,5,10,10,0,1,2,0,183,0, + 183,128,183,0,2,0,9,5,10,10,0,1,2,0,171,0, + 171,128,171,0,2,0,9,5,10,10,0,1,2,0,255,0, + 255,128,255,0,2,0,9,8,16,10,0,1,128,0,112,0, + 78,0,33,128,31,128,62,0,112,0,128,0,9,8,16,10, + 0,1,128,0,112,0,62,0,31,128,33,128,78,0,112,0, + 128,0,9,8,16,10,0,1,128,0,112,0,62,0,31,128, + 31,128,62,0,112,0,128,0,9,7,14,10,0,0,132,0, + 134,0,255,0,255,128,127,0,6,0,4,0,9,7,14,10, + 0,0,4,0,6,0,127,0,255,128,255,0,134,0,132,0, + 6,9,9,10,2,0,16,16,248,248,252,248,248,16,16,8, + 9,9,10,0,1,4,4,254,254,255,254,254,4,4,9,9, + 18,10,0,0,24,0,28,0,22,0,243,0,129,128,243,0, + 22,0,28,0,24,0,9,9,18,10,0,0,24,0,28,0, + 26,0,249,0,192,128,249,0,26,0,28,0,24,0,9,9, + 18,10,0,0,0,128,1,128,62,128,64,128,129,128,243,0, + 238,0,60,0,56,0,9,9,18,10,0,0,56,0,60,0, + 238,0,243,0,129,128,64,128,62,128,1,128,0,128,8,9, + 9,10,0,1,16,24,20,242,129,243,118,28,24,8,9,9, + 10,0,1,24,28,118,243,129,242,20,24,16,9,8,16,10, + 0,1,4,0,250,0,129,0,64,128,129,128,251,0,6,0, + 4,0,255,9,8,16,10,0,2,4,0,6,0,251,0,129, + 128,64,128,129,0,250,0,4,0,9,9,18,10,0,1,28, + 0,127,0,251,128,1,128,0,128,1,128,251,128,127,0,28, + 0,9,5,10,10,0,3,210,0,43,0,127,128,43,0,210, + 0,9,9,18,10,0,0,16,0,56,0,92,0,236,0,116, + 0,60,0,2,128,1,128,3,128,9,5,10,10,0,2,242, + 0,123,0,7,128,123,0,242,0,9,9,18,10,0,0,3, + 128,1,128,2,128,60,0,116,0,236,0,92,0,56,0,16, + 0,9,9,18,10,0,0,16,0,24,0,28,0,252,0,124, + 0,60,0,2,128,1,128,3,128,9,5,10,10,0,2,242, + 0,123,0,127,128,123,0,242,0,9,9,18,10,0,0,3, + 128,1,128,2,128,60,0,124,0,252,0,28,0,24,0,16, + 0,255,255,255,255,9,7,14,10,0,1,20,0,10,0,253, + 0,0,128,253,0,10,0,20,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,9, + 12,24,10,0,0,224,128,49,128,49,128,42,128,42,128,36, + 128,36,128,42,128,42,128,49,128,49,128,224,128,9,12,24, + 10,0,0,131,128,198,0,198,0,170,0,170,0,146,0,146, + 0,170,0,170,0,198,0,198,0,131,128,9,12,24,10,0, + 0,193,128,99,0,99,0,85,0,85,0,73,0,73,0,85, + 0,85,0,99,0,99,0,193,128,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,8,13,13,10,1,0,255,216,216, + 216,216,216,216,216,216,216,216,216,255,8,13,13,10,1,0, + 255,27,27,27,27,27,27,27,27,27,27,27,255,4,13,13, + 10,4,0,16,48,32,96,64,192,128,192,64,96,32,48,16, + 4,13,13,10,4,0,128,192,64,96,32,48,16,48,32,96, + 64,192,128,7,13,13,10,1,0,18,54,36,108,72,216,144, + 216,72,108,36,54,18,7,13,13,10,2,0,144,216,72,108, + 36,54,18,54,36,108,72,216,144,255,255,255,255,255,255,255, + 255,255,10,8,16,10,0,2,24,0,48,0,96,0,255,192, + 255,192,96,0,48,0,24,0,10,8,16,10,0,2,6,0, + 3,0,1,128,255,192,255,192,1,128,3,0,6,0,10,8, + 16,10,0,2,18,0,51,0,97,128,255,192,255,192,97,128, + 51,0,18,0,10,9,18,10,0,2,12,0,24,0,63,192, + 127,192,192,0,127,192,63,192,24,0,12,0,10,9,18,10, + 0,2,12,0,6,0,255,0,255,128,0,192,255,128,255,0, + 6,0,12,0,10,9,18,10,0,2,18,0,51,0,127,128, + 255,192,128,192,255,192,127,128,51,0,18,0,10,8,16,10, + 0,2,24,192,48,192,96,192,255,192,255,192,96,192,48,192, + 24,192,10,8,16,10,0,2,198,0,195,0,193,128,255,192, + 255,192,193,128,195,0,198,0,10,9,18,10,0,2,12,64, + 24,64,63,192,127,192,192,64,127,192,63,192,24,64,12,64, + 10,9,18,10,0,2,140,0,134,0,255,0,255,128,128,192, + 255,128,255,0,134,0,140,0,10,8,16,10,0,2,6,0, + 3,0,171,128,170,192,85,192,85,128,3,0,6,0}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w= 9 h=17 x= 4 y=16 dx=10 dy= 0 ascent=16 len=26 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20[3453] U8G_SECTION(".progmem.u8g_font_10x20") = { + 0,10,20,0,252,13,2,74,4,153,32,255,252,16,252,13, + 252,0,0,0,10,0,16,2,13,13,10,4,0,192,192,192, + 192,192,192,192,192,192,192,0,192,192,6,4,4,10,2,9, + 204,204,204,72,9,11,22,10,1,1,27,0,27,0,27,0, + 127,128,54,0,54,0,54,0,255,0,108,0,108,0,108,0, + 8,13,13,10,1,0,24,126,219,216,216,216,126,27,27,27, + 219,126,24,9,12,24,10,1,0,115,0,219,0,222,0,118, + 0,12,0,12,0,24,0,24,0,55,0,61,128,109,128,103, + 0,9,13,26,10,1,0,56,0,108,0,108,0,108,0,120, + 0,48,0,112,0,216,0,205,128,199,0,198,0,239,0,121, + 128,2,5,5,10,4,8,192,192,192,192,128,5,13,13,10, + 3,0,24,48,96,96,192,192,192,192,192,96,96,48,24,5, + 13,13,10,2,0,192,96,48,48,24,24,24,24,24,48,48, + 96,192,8,7,7,10,1,3,102,102,60,255,60,102,102,8, + 7,7,10,1,3,24,24,24,255,24,24,24,4,3,3,10, + 3,255,112,112,224,8,1,1,10,1,6,255,3,3,3,10, + 4,0,224,224,224,7,12,12,10,2,0,6,6,12,12,24, + 24,48,48,96,96,192,192,8,13,13,10,1,0,24,60,102, + 102,195,195,195,195,195,102,102,60,24,8,13,13,10,1,0, + 24,56,120,216,24,24,24,24,24,24,24,24,255,8,13,13, + 10,1,0,60,102,195,195,3,3,6,28,48,96,192,192,255, + 8,13,13,10,1,0,60,102,195,195,3,6,28,6,3,195, + 195,102,60,8,13,13,10,1,0,2,6,14,30,54,102,198, + 198,255,6,6,6,6,8,13,13,10,1,0,255,192,192,192, + 192,220,230,3,3,3,195,102,60,8,13,13,10,1,0,60, + 102,194,192,192,220,230,195,195,195,195,102,60,8,13,13,10, + 1,0,255,3,3,6,6,12,12,24,24,48,48,96,96,8, + 13,13,10,1,0,60,102,195,195,195,102,60,102,195,195,195, + 102,60,8,13,13,10,1,0,60,102,195,195,195,195,103,59, + 3,3,67,102,60,3,8,8,10,4,0,224,224,0,0,0, + 0,224,224,4,9,9,10,3,255,112,112,0,0,0,0,112, + 112,224,7,13,13,10,1,0,2,6,12,24,48,96,192,96, + 48,24,12,6,2,8,6,6,10,1,3,255,0,0,0,0, + 255,7,13,13,10,2,0,128,192,96,48,24,12,6,12,24, + 48,96,192,128,8,13,13,10,1,0,60,102,195,195,195,6, + 12,24,24,24,0,24,24,8,13,13,10,1,0,60,102,195, + 207,223,219,219,219,222,204,192,99,62,8,13,13,10,1,0, + 24,60,102,102,195,195,195,255,195,195,195,195,195,8,13,13, + 10,1,0,248,204,198,198,198,204,252,198,195,195,195,198,252, + 8,13,13,10,1,0,60,102,195,192,192,192,192,192,192,192, + 195,102,60,8,13,13,10,1,0,252,198,195,195,195,195,195, + 195,195,195,195,198,252,8,13,13,10,1,0,255,192,192,192, + 192,192,252,192,192,192,192,192,255,8,13,13,10,1,0,255, + 192,192,192,192,192,252,192,192,192,192,192,192,8,13,13,10, + 1,0,60,102,195,192,192,192,207,195,195,195,195,103,61,8, + 13,13,10,1,0,195,195,195,195,195,195,255,195,195,195,195, + 195,195,8,13,13,10,1,0,255,24,24,24,24,24,24,24, + 24,24,24,24,255,9,13,26,10,1,0,31,128,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,198,0,198, + 0,108,0,56,0,8,13,13,10,1,0,195,195,198,198,204, + 204,248,204,204,198,198,195,195,8,13,13,10,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,255,8,13,13,10,1, + 0,195,195,231,231,255,219,219,219,219,195,195,195,195,8,13, + 13,10,1,0,195,227,227,243,243,219,219,207,207,199,199,195, + 195,8,13,13,10,1,0,60,102,195,195,195,195,195,195,195, + 195,195,102,60,8,13,13,10,1,0,252,198,195,195,195,195, + 198,252,192,192,192,192,192,8,14,14,10,1,255,60,102,195, + 195,195,195,195,195,195,219,207,102,62,3,8,13,13,10,1, + 0,252,198,195,195,195,195,198,252,204,198,198,195,195,8,13, + 13,10,1,0,60,102,195,192,192,96,60,6,3,3,195,102, + 60,8,13,13,10,1,0,255,24,24,24,24,24,24,24,24, + 24,24,24,24,8,13,13,10,1,0,195,195,195,195,195,195, + 195,195,195,195,195,102,60,8,13,13,10,1,0,195,195,195, + 195,102,102,102,60,60,60,24,24,24,8,13,13,10,1,0, + 195,195,195,195,195,219,219,219,219,231,231,195,195,8,13,13, + 10,1,0,195,195,102,102,60,60,24,60,60,102,102,195,195, + 8,13,13,10,1,0,195,195,102,102,60,60,24,24,24,24, + 24,24,24,8,13,13,10,1,0,255,3,3,6,12,12,24, + 48,48,96,192,192,255,6,13,13,10,2,0,252,192,192,192, + 192,192,192,192,192,192,192,192,252,7,12,12,10,2,0,192, + 192,96,96,48,48,24,24,12,12,6,6,6,13,13,10,2, + 0,252,12,12,12,12,12,12,12,12,12,12,12,252,8,4, + 4,10,1,9,24,60,102,195,9,1,2,10,1,255,255,128, + 4,3,3,10,3,10,192,96,48,8,8,8,10,1,0,62, + 99,3,127,195,195,195,125,8,13,13,10,1,0,192,192,192, + 192,192,220,230,195,195,195,195,230,220,8,8,8,10,1,0, + 62,99,192,192,192,192,99,62,8,13,13,10,1,0,3,3, + 3,3,3,59,103,195,195,195,195,103,59,8,8,8,10,1, + 0,60,102,195,255,192,192,99,62,8,13,13,10,1,0,30, + 51,51,48,48,252,48,48,48,48,48,48,48,8,12,12,10, + 1,252,125,199,198,198,198,124,192,126,195,195,195,126,8,13, + 13,10,1,0,192,192,192,192,192,220,230,195,195,195,195,195, + 195,8,11,11,10,1,0,24,24,0,120,24,24,24,24,24, + 24,255,7,15,15,10,2,252,6,6,0,30,6,6,6,6, + 6,6,6,198,198,198,124,8,13,13,10,1,0,192,192,192, + 192,192,198,204,216,240,248,204,198,195,8,13,13,10,1,0, + 120,24,24,24,24,24,24,24,24,24,24,24,255,8,8,8, + 10,1,0,182,255,219,219,219,219,219,219,8,8,8,10,1, + 0,220,230,195,195,195,195,195,195,8,8,8,10,1,0,60, + 102,195,195,195,195,102,60,8,12,12,10,1,252,220,230,195, + 195,195,195,230,220,192,192,192,192,8,12,12,10,1,252,59, + 103,195,195,195,195,103,59,3,3,3,3,8,8,8,10,1, + 0,222,115,96,96,96,96,96,96,8,8,8,10,1,0,126, + 195,192,126,3,3,195,126,8,11,11,10,1,0,48,48,48, + 252,48,48,48,48,48,51,30,8,8,8,10,1,0,195,195, + 195,195,195,195,103,59,8,8,8,10,1,0,195,195,102,102, + 60,60,24,24,8,8,8,10,1,0,195,195,195,219,219,219, + 255,102,8,8,8,10,1,0,195,102,60,24,24,60,102,195, + 8,12,12,10,1,252,195,195,195,195,195,195,103,59,3,195, + 102,60,7,8,8,10,2,0,254,6,12,24,48,96,192,254, + 8,13,13,10,1,0,15,24,24,24,24,24,240,24,24,24, + 24,24,15,2,13,13,10,4,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,8,13,13,10,1,0,240,24,24,24, + 24,24,15,24,24,24,24,24,240,8,3,3,10,1,10,115, + 219,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,10,0,16,2,13,13,10,4,0,192, + 192,0,192,192,192,192,192,192,192,192,192,192,7,12,12,10, + 1,0,24,24,60,102,194,192,192,194,102,60,24,24,9,12, + 24,10,1,0,30,0,51,0,51,0,48,0,48,0,252,0, + 48,0,48,0,48,0,248,0,173,128,231,0,9,9,18,10, + 0,1,128,128,221,128,127,0,99,0,99,0,99,0,127,0, + 221,128,128,128,8,11,11,10,1,0,129,195,102,60,126,24, + 126,24,24,24,24,2,13,13,10,4,0,192,192,192,192,192, + 0,0,0,192,192,192,192,192,8,13,13,10,1,0,60,102, + 198,96,120,204,102,51,30,6,99,102,60,6,2,2,10,2, + 11,204,204,8,11,11,10,1,0,60,102,195,189,165,161,165, + 189,195,102,60,8,9,9,10,1,4,62,67,3,127,195,195, + 125,0,255,9,11,22,10,0,0,4,128,13,128,27,0,54, + 0,108,0,216,0,108,0,54,0,27,0,13,128,4,128,8, + 4,4,10,1,4,255,255,3,3,6,1,1,10,2,6,252, + 8,11,11,10,1,0,60,102,195,189,165,189,169,173,195,102, + 60,8,1,1,10,1,13,255,6,6,6,10,2,7,48,120, + 204,204,120,48,8,7,7,10,1,2,24,24,255,24,24,0, + 255,5,7,7,10,2,6,112,216,24,48,96,192,248,5,7, + 7,10,2,6,112,216,24,48,24,216,112,4,3,3,10,3, + 10,48,96,192,7,10,10,10,1,253,198,198,198,198,198,238, + 250,192,192,192,8,13,13,10,1,0,127,255,251,251,251,123, + 27,27,27,27,27,27,27,3,3,3,10,4,5,224,224,224, + 5,4,4,10,2,252,48,24,216,112,4,7,7,10,2,6, + 96,224,96,96,96,96,240,7,9,9,10,1,4,56,108,198, + 198,198,108,56,0,254,9,11,22,10,1,0,144,0,216,0, + 108,0,54,0,27,0,13,128,27,0,54,0,108,0,216,0, + 144,0,8,12,12,10,1,1,64,192,65,66,228,8,18,38, + 74,158,2,2,8,12,12,10,1,1,64,192,65,66,228,8, + 22,41,65,130,4,15,8,12,12,10,1,1,224,16,97,18, + 228,8,18,38,74,159,2,2,8,13,13,10,1,0,24,24, + 0,24,24,24,48,96,195,195,195,102,60,8,15,15,10,1, + 0,96,48,24,0,24,60,102,195,195,195,255,195,195,195,195, + 8,15,15,10,1,0,6,12,24,0,24,60,102,195,195,195, + 255,195,195,195,195,8,15,15,10,1,0,24,60,102,0,24, + 60,102,195,195,195,255,195,195,195,195,8,15,15,10,1,0, + 50,126,76,0,24,60,102,195,195,195,255,195,195,195,195,8, + 15,15,10,1,0,102,102,0,24,60,102,102,195,195,195,255, + 195,195,195,195,8,16,16,10,1,0,60,102,102,60,0,24, + 60,102,195,195,195,255,195,195,195,195,8,13,13,10,1,0, + 31,60,108,108,204,204,255,204,204,204,204,204,207,8,17,17, + 10,1,252,60,102,195,192,192,192,192,192,192,192,195,102,60, + 24,12,108,56,8,15,15,10,1,0,96,48,24,0,255,192, + 192,192,192,252,192,192,192,192,255,8,15,15,10,1,0,12, + 24,48,0,255,192,192,192,192,252,192,192,192,192,255,8,15, + 15,10,1,0,24,60,102,0,255,192,192,192,192,252,192,192, + 192,192,255,8,15,15,10,1,0,102,102,0,0,255,192,192, + 192,192,252,192,192,192,192,255,6,15,15,10,2,0,96,48, + 24,0,252,48,48,48,48,48,48,48,48,48,252,6,15,15, + 10,2,0,24,48,96,0,252,48,48,48,48,48,48,48,48, + 48,252,6,15,15,10,2,0,48,120,204,0,252,48,48,48, + 48,48,48,48,48,48,252,6,15,15,10,2,0,204,204,0, + 252,48,48,48,48,48,48,48,48,48,48,252,9,13,26,10, + 0,0,126,0,99,0,97,128,97,128,97,128,97,128,249,128, + 97,128,97,128,97,128,97,128,99,0,126,0,8,15,15,10, + 1,0,50,126,76,0,195,227,243,243,219,219,207,207,199,195, + 195,8,15,15,10,1,0,48,24,12,0,60,102,195,195,195, + 195,195,195,195,102,60,8,15,15,10,1,0,12,24,48,0, + 60,102,195,195,195,195,195,195,195,102,60,8,15,15,10,1, + 0,24,60,102,0,60,102,195,195,195,195,195,195,195,102,60, + 8,15,15,10,1,0,50,126,76,0,60,102,195,195,195,195, + 195,195,195,102,60,8,15,15,10,1,0,102,102,0,60,102, + 195,195,195,195,195,195,195,195,102,60,7,8,8,10,1,0, + 130,198,108,56,56,108,198,130,8,15,15,10,1,255,1,62, + 102,199,199,203,203,203,211,211,211,227,102,124,128,8,15,15, + 10,1,0,48,24,12,0,195,195,195,195,195,195,195,195,195, + 102,60,8,15,15,10,1,0,12,24,48,0,195,195,195,195, + 195,195,195,195,195,102,60,8,15,15,10,1,0,24,60,102, + 0,195,195,195,195,195,195,195,195,195,102,60,8,15,15,10, + 1,0,102,102,0,195,195,195,195,195,195,195,195,195,195,102, + 60,8,15,15,10,1,0,12,24,48,0,195,195,102,102,60, + 60,24,24,24,24,24,7,13,13,10,2,0,192,192,192,252, + 198,198,198,198,198,252,192,192,192,8,13,13,10,1,0,28, + 54,99,99,102,236,108,102,99,99,99,102,108,8,12,12,10, + 1,0,48,24,12,0,126,195,3,127,195,195,195,125,8,12, + 12,10,1,0,12,24,48,0,126,195,3,127,195,195,195,125, + 8,12,12,10,1,0,24,60,102,0,126,195,3,127,195,195, + 195,125,8,12,12,10,1,0,50,126,76,0,126,195,3,127, + 195,195,195,125,8,11,11,10,1,0,102,102,0,126,195,3, + 127,195,195,195,125,8,13,13,10,1,0,60,102,102,60,0, + 126,195,3,127,195,195,195,125,8,8,8,10,1,0,118,155, + 27,30,120,216,217,110,8,12,12,10,1,252,62,99,192,192, + 192,192,99,62,24,12,108,56,8,12,12,10,1,0,96,48, + 24,0,60,102,195,255,192,192,99,62,8,12,12,10,1,0, + 6,12,24,0,60,102,195,255,192,192,99,62,8,12,12,10, + 1,0,24,60,102,0,60,102,195,255,192,192,99,62,8,11, + 11,10,1,0,102,102,0,60,102,195,255,192,192,99,62,8, + 12,12,10,1,0,96,48,24,0,120,24,24,24,24,24,24, + 255,8,12,12,10,1,0,12,24,48,0,120,24,24,24,24, + 24,24,255,8,12,12,10,1,0,24,60,102,0,120,24,24, + 24,24,24,24,255,8,11,11,10,1,0,102,102,0,120,24, + 24,24,24,24,24,255,8,13,13,10,1,0,136,216,112,112, + 216,140,62,103,195,195,195,102,60,8,12,12,10,1,0,50, + 126,76,0,220,230,195,195,195,195,195,195,8,12,12,10,1, + 0,96,48,24,0,60,102,195,195,195,195,102,60,8,12,12, + 10,1,0,6,12,24,0,60,102,195,195,195,195,102,60,8, + 12,12,10,1,0,24,60,102,0,60,102,195,195,195,195,102, + 60,8,12,12,10,1,0,50,126,76,0,60,102,195,195,195, + 195,102,60,8,11,11,10,1,0,102,102,0,60,102,195,195, + 195,195,102,60,8,10,10,10,1,1,24,24,0,0,255,255, + 0,0,24,24,8,10,10,10,1,255,1,62,102,203,203,211, + 211,102,124,128,8,12,12,10,1,0,48,24,12,0,195,195, + 195,195,195,195,103,59,8,12,12,10,1,0,6,12,24,0, + 195,195,195,195,195,195,103,59,8,12,12,10,1,0,24,60, + 102,0,195,195,195,195,195,195,103,59,8,11,11,10,1,0, + 102,102,0,195,195,195,195,195,195,103,59,8,16,16,10,1, + 252,12,24,48,0,195,195,195,195,195,195,103,59,3,195,102, + 60,7,17,17,10,2,252,192,192,192,192,192,192,248,204,198, + 198,198,204,248,192,192,192,192,8,15,15,10,1,252,102,102, + 0,195,195,195,195,195,195,103,59,3,195,102,60}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w= 9 h=15 x= 4 y=16 dx=10 dy= 0 ascent=16 len=26 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20r[1667] U8G_SECTION(".progmem.u8g_font_10x20r") = { + 0,10,20,0,252,13,2,74,4,153,32,127,252,16,252,13, + 252,0,0,0,10,0,16,2,13,13,10,4,0,192,192,192, + 192,192,192,192,192,192,192,0,192,192,6,4,4,10,2,9, + 204,204,204,72,9,11,22,10,1,1,27,0,27,0,27,0, + 127,128,54,0,54,0,54,0,255,0,108,0,108,0,108,0, + 8,13,13,10,1,0,24,126,219,216,216,216,126,27,27,27, + 219,126,24,9,12,24,10,1,0,115,0,219,0,222,0,118, + 0,12,0,12,0,24,0,24,0,55,0,61,128,109,128,103, + 0,9,13,26,10,1,0,56,0,108,0,108,0,108,0,120, + 0,48,0,112,0,216,0,205,128,199,0,198,0,239,0,121, + 128,2,5,5,10,4,8,192,192,192,192,128,5,13,13,10, + 3,0,24,48,96,96,192,192,192,192,192,96,96,48,24,5, + 13,13,10,2,0,192,96,48,48,24,24,24,24,24,48,48, + 96,192,8,7,7,10,1,3,102,102,60,255,60,102,102,8, + 7,7,10,1,3,24,24,24,255,24,24,24,4,3,3,10, + 3,255,112,112,224,8,1,1,10,1,6,255,3,3,3,10, + 4,0,224,224,224,7,12,12,10,2,0,6,6,12,12,24, + 24,48,48,96,96,192,192,8,13,13,10,1,0,24,60,102, + 102,195,195,195,195,195,102,102,60,24,8,13,13,10,1,0, + 24,56,120,216,24,24,24,24,24,24,24,24,255,8,13,13, + 10,1,0,60,102,195,195,3,3,6,28,48,96,192,192,255, + 8,13,13,10,1,0,60,102,195,195,3,6,28,6,3,195, + 195,102,60,8,13,13,10,1,0,2,6,14,30,54,102,198, + 198,255,6,6,6,6,8,13,13,10,1,0,255,192,192,192, + 192,220,230,3,3,3,195,102,60,8,13,13,10,1,0,60, + 102,194,192,192,220,230,195,195,195,195,102,60,8,13,13,10, + 1,0,255,3,3,6,6,12,12,24,24,48,48,96,96,8, + 13,13,10,1,0,60,102,195,195,195,102,60,102,195,195,195, + 102,60,8,13,13,10,1,0,60,102,195,195,195,195,103,59, + 3,3,67,102,60,3,8,8,10,4,0,224,224,0,0,0, + 0,224,224,4,9,9,10,3,255,112,112,0,0,0,0,112, + 112,224,7,13,13,10,1,0,2,6,12,24,48,96,192,96, + 48,24,12,6,2,8,6,6,10,1,3,255,0,0,0,0, + 255,7,13,13,10,2,0,128,192,96,48,24,12,6,12,24, + 48,96,192,128,8,13,13,10,1,0,60,102,195,195,195,6, + 12,24,24,24,0,24,24,8,13,13,10,1,0,60,102,195, + 207,223,219,219,219,222,204,192,99,62,8,13,13,10,1,0, + 24,60,102,102,195,195,195,255,195,195,195,195,195,8,13,13, + 10,1,0,248,204,198,198,198,204,252,198,195,195,195,198,252, + 8,13,13,10,1,0,60,102,195,192,192,192,192,192,192,192, + 195,102,60,8,13,13,10,1,0,252,198,195,195,195,195,195, + 195,195,195,195,198,252,8,13,13,10,1,0,255,192,192,192, + 192,192,252,192,192,192,192,192,255,8,13,13,10,1,0,255, + 192,192,192,192,192,252,192,192,192,192,192,192,8,13,13,10, + 1,0,60,102,195,192,192,192,207,195,195,195,195,103,61,8, + 13,13,10,1,0,195,195,195,195,195,195,255,195,195,195,195, + 195,195,8,13,13,10,1,0,255,24,24,24,24,24,24,24, + 24,24,24,24,255,9,13,26,10,1,0,31,128,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,198,0,198, + 0,108,0,56,0,8,13,13,10,1,0,195,195,198,198,204, + 204,248,204,204,198,198,195,195,8,13,13,10,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,255,8,13,13,10,1, + 0,195,195,231,231,255,219,219,219,219,195,195,195,195,8,13, + 13,10,1,0,195,227,227,243,243,219,219,207,207,199,199,195, + 195,8,13,13,10,1,0,60,102,195,195,195,195,195,195,195, + 195,195,102,60,8,13,13,10,1,0,252,198,195,195,195,195, + 198,252,192,192,192,192,192,8,14,14,10,1,255,60,102,195, + 195,195,195,195,195,195,219,207,102,62,3,8,13,13,10,1, + 0,252,198,195,195,195,195,198,252,204,198,198,195,195,8,13, + 13,10,1,0,60,102,195,192,192,96,60,6,3,3,195,102, + 60,8,13,13,10,1,0,255,24,24,24,24,24,24,24,24, + 24,24,24,24,8,13,13,10,1,0,195,195,195,195,195,195, + 195,195,195,195,195,102,60,8,13,13,10,1,0,195,195,195, + 195,102,102,102,60,60,60,24,24,24,8,13,13,10,1,0, + 195,195,195,195,195,219,219,219,219,231,231,195,195,8,13,13, + 10,1,0,195,195,102,102,60,60,24,60,60,102,102,195,195, + 8,13,13,10,1,0,195,195,102,102,60,60,24,24,24,24, + 24,24,24,8,13,13,10,1,0,255,3,3,6,12,12,24, + 48,48,96,192,192,255,6,13,13,10,2,0,252,192,192,192, + 192,192,192,192,192,192,192,192,252,7,12,12,10,2,0,192, + 192,96,96,48,48,24,24,12,12,6,6,6,13,13,10,2, + 0,252,12,12,12,12,12,12,12,12,12,12,12,252,8,4, + 4,10,1,9,24,60,102,195,9,1,2,10,1,255,255,128, + 4,3,3,10,3,10,192,96,48,8,8,8,10,1,0,62, + 99,3,127,195,195,195,125,8,13,13,10,1,0,192,192,192, + 192,192,220,230,195,195,195,195,230,220,8,8,8,10,1,0, + 62,99,192,192,192,192,99,62,8,13,13,10,1,0,3,3, + 3,3,3,59,103,195,195,195,195,103,59,8,8,8,10,1, + 0,60,102,195,255,192,192,99,62,8,13,13,10,1,0,30, + 51,51,48,48,252,48,48,48,48,48,48,48,8,12,12,10, + 1,252,125,199,198,198,198,124,192,126,195,195,195,126,8,13, + 13,10,1,0,192,192,192,192,192,220,230,195,195,195,195,195, + 195,8,11,11,10,1,0,24,24,0,120,24,24,24,24,24, + 24,255,7,15,15,10,2,252,6,6,0,30,6,6,6,6, + 6,6,6,198,198,198,124,8,13,13,10,1,0,192,192,192, + 192,192,198,204,216,240,248,204,198,195,8,13,13,10,1,0, + 120,24,24,24,24,24,24,24,24,24,24,24,255,8,8,8, + 10,1,0,182,255,219,219,219,219,219,219,8,8,8,10,1, + 0,220,230,195,195,195,195,195,195,8,8,8,10,1,0,60, + 102,195,195,195,195,102,60,8,12,12,10,1,252,220,230,195, + 195,195,195,230,220,192,192,192,192,8,12,12,10,1,252,59, + 103,195,195,195,195,103,59,3,3,3,3,8,8,8,10,1, + 0,222,115,96,96,96,96,96,96,8,8,8,10,1,0,126, + 195,192,126,3,3,195,126,8,11,11,10,1,0,48,48,48, + 252,48,48,48,48,48,51,30,8,8,8,10,1,0,195,195, + 195,195,195,195,103,59,8,8,8,10,1,0,195,195,102,102, + 60,60,24,24,8,8,8,10,1,0,195,195,195,219,219,219, + 255,102,8,8,8,10,1,0,195,102,60,24,24,60,102,195, + 8,12,12,10,1,252,195,195,195,195,195,195,103,59,3,195, + 102,60,7,8,8,10,2,0,254,6,12,24,48,96,192,254, + 8,13,13,10,1,0,15,24,24,24,24,24,240,24,24,24, + 24,24,15,2,13,13,10,4,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,8,13,13,10,1,0,240,24,24,24, + 24,24,15,24,24,24,24,24,240,8,3,3,10,1,10,115, + 219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--6-60-75-75-C-40-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 4 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_4x6[1500] U8G_SECTION(".progmem.u8g_font_4x6") = { + 1,4,6,0,255,5,1,3,1,250,32,255,255,5,255,5, + 255,7,0,64,18,21,69,128,128,128,0,128,5,50,66,160, + 160,2,69,69,160,240,160,240,160,1,54,70,64,224,192,32, + 224,64,2,53,69,128,32,64,128,32,2,69,69,64,160,64, + 160,80,21,18,66,128,128,17,38,70,64,128,128,128,128,64, + 1,38,70,128,64,64,64,64,128,2,53,69,160,64,224,64, + 160,2,53,69,64,64,224,64,64,1,34,66,64,128,4,49, + 65,224,18,17,65,128,2,53,69,32,32,64,128,128,2,53, + 69,64,160,224,160,64,2,53,69,64,192,64,64,224,2,53, + 69,64,160,32,64,224,2,53,69,224,32,64,32,192,2,53, + 69,160,160,224,32,32,2,53,69,224,128,192,32,192,2,53, + 69,96,128,192,160,64,2,53,69,224,32,64,128,128,2,53, + 69,96,160,64,160,192,2,53,69,64,160,96,32,192,18,20, + 68,128,0,0,128,1,37,69,64,0,0,64,128,2,53,69, + 32,64,128,64,32,3,51,67,224,0,224,2,53,69,128,64, + 32,64,128,2,53,69,192,32,64,0,64,2,53,69,96,160, + 160,128,96,2,53,69,64,160,224,160,160,2,53,69,192,160, + 192,160,192,2,53,69,64,160,128,160,64,2,53,69,192,160, + 160,160,192,2,53,69,224,128,192,128,224,2,53,69,224,128, + 192,128,128,2,53,69,96,128,160,160,96,2,53,69,160,160, + 224,160,160,2,53,69,224,64,64,64,224,2,53,69,32,32, + 32,160,64,2,53,69,160,160,192,160,160,2,53,69,128,128, + 128,128,224,2,53,69,160,224,224,160,160,2,53,69,32,160, + 224,160,128,2,53,69,64,160,160,160,64,2,53,69,192,160, + 192,128,128,1,54,70,64,160,160,160,64,32,2,53,69,192, + 160,192,160,160,2,53,69,96,128,64,32,192,2,53,69,224, + 64,64,64,64,2,53,69,160,160,160,160,224,2,53,69,160, + 160,160,224,64,2,53,69,160,160,224,224,160,2,53,69,160, + 160,64,160,160,2,53,69,160,160,64,64,64,2,53,69,224, + 32,64,128,224,18,37,69,192,128,128,128,192,2,53,69,128, + 128,64,32,32,2,37,69,192,64,64,64,192,5,50,66,64, + 160,1,49,65,224,21,34,66,128,64,2,52,68,96,160,160, + 96,2,53,69,128,192,160,160,192,2,52,68,96,128,128,96, + 2,53,69,32,96,160,160,96,2,52,68,64,160,192,96,2, + 53,69,32,64,224,64,64,1,53,69,96,160,96,32,192,2, + 53,69,128,192,160,160,160,2,53,69,64,0,192,64,224,1, + 54,70,32,0,32,32,32,192,2,53,69,128,160,192,160,160, + 2,53,69,192,64,64,64,224,2,52,68,160,224,160,160,2, + 52,68,192,160,160,160,2,52,68,64,160,160,64,1,53,69, + 192,160,192,128,128,1,53,69,96,160,160,96,32,2,52,68, + 160,192,128,128,2,52,68,96,192,32,192,2,53,69,64,224, + 64,64,32,2,52,68,160,160,160,96,2,52,68,160,160,160, + 64,2,52,68,160,160,224,160,2,52,68,160,64,64,160,1, + 53,69,160,160,96,32,192,2,52,68,224,32,64,224,1,54, + 70,32,64,192,64,64,32,18,21,69,128,128,128,128,128,1, + 54,70,128,64,96,64,64,128,5,66,66,80,160,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0, + 64,18,21,69,128,0,128,128,128,2,53,69,64,224,128,224, + 64,2,53,69,32,64,96,64,160,2,68,68,144,96,96,144, + 2,53,69,160,64,224,64,64,18,21,69,128,128,0,128,128, + 1,54,70,96,192,160,96,32,192,6,49,65,160,1,70,70, + 96,144,208,208,144,96,2,53,69,96,160,96,0,224,3,67, + 67,80,160,80,3,50,66,224,32,4,49,65,224,3,68,68, + 96,240,208,96,6,49,65,224,4,51,67,64,160,64,2,53, + 69,64,224,64,0,224,3,36,68,192,64,128,192,2,37,69, + 192,64,128,64,128,21,34,66,64,128,1,53,69,160,160,160, + 192,128,2,69,69,112,208,208,80,80,20,17,65,128,18,34, + 66,64,128,3,36,68,64,192,64,64,2,53,69,64,160,64, + 0,224,3,67,67,160,80,160,1,70,70,128,128,128,80,112, + 16,1,70,70,128,128,176,16,32,48,1,70,70,192,64,128, + 80,176,16,2,53,69,64,0,64,128,96,2,53,69,128,64, + 160,224,160,2,53,69,32,64,160,224,160,2,53,69,192,64, + 160,224,160,2,53,69,96,192,160,224,160,2,53,69,160,64, + 160,224,160,2,53,69,64,64,160,224,160,2,69,69,112,160, + 240,160,176,1,54,70,64,160,128,160,64,128,2,53,69,128, + 224,192,128,224,2,53,69,32,224,192,128,224,2,53,69,96, + 224,192,128,224,2,53,69,160,224,192,128,224,2,53,69,128, + 224,64,64,224,2,53,69,32,224,64,64,224,2,53,69,64, + 224,64,64,224,2,53,69,160,64,64,64,224,2,69,69,224, + 80,208,80,224,2,69,69,80,160,224,224,160,2,53,69,128, + 64,160,160,64,2,53,69,32,64,160,160,64,2,53,69,64, + 64,160,160,64,2,69,69,112,224,160,160,64,2,53,69,160, + 64,160,160,64,3,51,67,160,64,160,2,53,69,96,160,224, + 160,192,2,53,69,128,64,160,160,224,2,53,69,32,64,160, + 160,224,2,53,69,64,0,160,160,224,2,53,69,160,0,160, + 160,224,2,53,69,32,0,160,64,64,2,53,69,128,192,160, + 192,128,1,54,70,64,160,192,160,224,128,2,53,69,128,64, + 96,160,96,2,53,69,32,64,96,160,96,2,53,69,96,0, + 96,160,96,2,69,69,80,160,96,160,96,2,53,69,160,0, + 96,160,96,2,53,69,64,0,96,160,96,2,68,68,112,176, + 160,112,1,53,69,64,160,128,96,64,2,53,69,128,64,160, + 192,96,2,53,69,32,64,160,192,96,2,53,69,192,64,160, + 192,96,2,53,69,160,64,160,192,96,2,53,69,128,64,64, + 64,224,2,53,69,32,192,64,64,224,2,53,69,64,160,64, + 64,224,2,53,69,160,0,192,64,224,2,53,69,160,64,96, + 160,64,2,69,69,80,160,192,160,160,2,53,69,128,64,64, + 160,64,2,53,69,32,64,64,160,64,2,53,69,64,0,64, + 160,64,2,53,69,224,0,64,160,64,2,53,69,160,0,64, + 160,64,2,53,69,64,0,224,0,64,2,52,68,96,160,160, + 192,2,53,69,128,64,160,160,96,2,53,69,32,64,160,160, + 96,2,53,69,64,0,160,160,96,2,53,69,160,0,160,160, + 96,1,54,70,32,64,160,224,32,192,1,54,70,128,128,192, + 160,192,128,1,54,70,160,0,160,224,32,192}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--6-60-75-75-C-40-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 4 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_4x6r[734] U8G_SECTION(".progmem.u8g_font_4x6r") = { + 1,4,6,0,255,5,1,3,1,250,32,127,255,5,255,5, + 255,7,0,64,18,21,69,128,128,128,0,128,5,50,66,160, + 160,2,69,69,160,240,160,240,160,1,54,70,64,224,192,32, + 224,64,2,53,69,128,32,64,128,32,2,69,69,64,160,64, + 160,80,21,18,66,128,128,17,38,70,64,128,128,128,128,64, + 1,38,70,128,64,64,64,64,128,2,53,69,160,64,224,64, + 160,2,53,69,64,64,224,64,64,1,34,66,64,128,4,49, + 65,224,18,17,65,128,2,53,69,32,32,64,128,128,2,53, + 69,64,160,224,160,64,2,53,69,64,192,64,64,224,2,53, + 69,64,160,32,64,224,2,53,69,224,32,64,32,192,2,53, + 69,160,160,224,32,32,2,53,69,224,128,192,32,192,2,53, + 69,96,128,192,160,64,2,53,69,224,32,64,128,128,2,53, + 69,96,160,64,160,192,2,53,69,64,160,96,32,192,18,20, + 68,128,0,0,128,1,37,69,64,0,0,64,128,2,53,69, + 32,64,128,64,32,3,51,67,224,0,224,2,53,69,128,64, + 32,64,128,2,53,69,192,32,64,0,64,2,53,69,96,160, + 160,128,96,2,53,69,64,160,224,160,160,2,53,69,192,160, + 192,160,192,2,53,69,64,160,128,160,64,2,53,69,192,160, + 160,160,192,2,53,69,224,128,192,128,224,2,53,69,224,128, + 192,128,128,2,53,69,96,128,160,160,96,2,53,69,160,160, + 224,160,160,2,53,69,224,64,64,64,224,2,53,69,32,32, + 32,160,64,2,53,69,160,160,192,160,160,2,53,69,128,128, + 128,128,224,2,53,69,160,224,224,160,160,2,53,69,32,160, + 224,160,128,2,53,69,64,160,160,160,64,2,53,69,192,160, + 192,128,128,1,54,70,64,160,160,160,64,32,2,53,69,192, + 160,192,160,160,2,53,69,96,128,64,32,192,2,53,69,224, + 64,64,64,64,2,53,69,160,160,160,160,224,2,53,69,160, + 160,160,224,64,2,53,69,160,160,224,224,160,2,53,69,160, + 160,64,160,160,2,53,69,160,160,64,64,64,2,53,69,224, + 32,64,128,224,18,37,69,192,128,128,128,192,2,53,69,128, + 128,64,32,32,2,37,69,192,64,64,64,192,5,50,66,64, + 160,1,49,65,224,21,34,66,128,64,2,52,68,96,160,160, + 96,2,53,69,128,192,160,160,192,2,52,68,96,128,128,96, + 2,53,69,32,96,160,160,96,2,52,68,64,160,192,96,2, + 53,69,32,64,224,64,64,1,53,69,96,160,96,32,192,2, + 53,69,128,192,160,160,160,2,53,69,64,0,192,64,224,1, + 54,70,32,0,32,32,32,192,2,53,69,128,160,192,160,160, + 2,53,69,192,64,64,64,224,2,52,68,160,224,160,160,2, + 52,68,192,160,160,160,2,52,68,64,160,160,64,1,53,69, + 192,160,192,128,128,1,53,69,96,160,160,96,32,2,52,68, + 160,192,128,128,2,52,68,96,192,32,192,2,53,69,64,224, + 64,64,32,2,52,68,160,160,160,96,2,52,68,160,160,160, + 64,2,52,68,160,160,224,160,2,52,68,160,64,64,160,1, + 53,69,160,160,96,32,192,2,52,68,224,32,64,224,1,54, + 70,32,64,192,64,64,32,18,21,69,128,128,128,128,128,1, + 54,70,128,64,96,64,64,128,5,66,66,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 7 x= 2 y= 6 dx= 5 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x7[1624] U8G_SECTION(".progmem.u8g_font_5x7") = { + 1,5,7,0,255,6,1,21,2,39,32,255,255,6,255,6, + 255,8,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,85,85,80,248,80,248,80,2,85,85,112,160, + 112,40,112,2,70,86,128,144,32,64,144,16,2,69,85,64, + 160,64,160,80,37,19,83,128,128,128,18,38,86,64,128,128, + 128,128,64,18,38,86,128,64,64,64,64,128,18,53,85,160, + 64,224,64,160,2,85,85,32,32,248,32,32,17,51,83,96, + 64,128,4,65,81,240,18,34,82,192,192,3,68,84,16,32, + 64,128,18,54,86,64,160,160,160,160,64,18,54,86,64,192, + 64,64,64,224,2,70,86,96,144,16,32,64,240,2,70,86, + 240,16,96,16,144,96,2,70,86,32,96,160,240,32,32,2, + 70,86,240,128,224,16,144,96,2,70,86,96,128,224,144,144, + 96,2,70,86,240,16,32,32,64,64,2,70,86,96,144,96, + 144,144,96,2,70,86,96,144,144,112,16,96,18,37,85,192, + 192,0,192,192,1,54,86,96,96,0,96,64,128,18,53,85, + 32,64,128,64,32,3,67,83,240,0,240,18,53,85,128,64, + 32,64,128,18,54,86,64,160,32,64,0,64,2,70,86,96, + 144,176,176,128,96,2,70,86,96,144,144,240,144,144,2,70, + 86,224,144,224,144,144,224,2,70,86,96,144,128,128,144,96, + 2,70,86,224,144,144,144,144,224,2,70,86,240,128,224,128, + 128,240,2,70,86,240,128,224,128,128,128,2,70,86,96,144, + 128,176,144,112,2,70,86,144,144,240,144,144,144,18,54,86, + 224,64,64,64,64,224,2,70,86,16,16,16,16,144,96,2, + 70,86,144,160,192,192,160,144,2,70,86,128,128,128,128,128, + 240,2,70,86,144,240,240,144,144,144,2,70,86,144,208,208, + 176,176,144,2,70,86,96,144,144,144,144,96,2,70,86,224, + 144,144,224,128,128,1,71,87,96,144,144,144,208,96,16,2, + 70,86,224,144,144,224,160,144,2,70,86,96,144,64,32,144, + 96,18,54,86,224,64,64,64,64,64,2,70,86,144,144,144, + 144,144,96,2,70,86,144,144,144,144,96,96,2,70,86,144, + 144,144,240,240,144,2,70,86,144,144,96,96,144,144,18,54, + 86,160,160,160,64,64,64,2,70,86,240,16,32,64,128,240, + 18,54,86,224,128,128,128,128,224,3,68,84,128,64,32,16, + 18,54,86,224,32,32,32,32,224,22,50,82,64,160,2,65, + 81,240,22,34,82,128,64,2,68,84,112,144,176,80,2,70, + 86,128,128,224,144,144,224,2,52,84,96,128,128,96,2,70, + 86,16,16,112,144,144,112,2,68,84,96,176,192,96,2,70, + 86,32,80,64,224,64,64,1,69,85,112,144,96,128,112,2, + 70,86,128,128,224,144,144,144,18,54,86,64,0,192,64,64, + 224,17,55,87,32,0,32,32,32,160,64,2,70,86,128,128, + 160,192,160,144,18,54,86,192,64,64,64,64,224,2,68,84, + 160,240,144,144,2,68,84,224,144,144,144,2,68,84,96,144, + 144,96,1,69,85,224,144,144,224,128,1,69,85,112,144,144, + 112,16,2,68,84,224,144,128,128,2,68,84,112,192,48,224, + 2,70,86,64,64,224,64,64,48,2,68,84,144,144,144,112, + 18,52,84,160,160,160,64,2,68,84,144,144,240,240,2,68, + 84,144,96,96,144,1,69,85,144,144,80,32,64,2,68,84, + 240,32,64,240,18,54,86,32,64,192,64,64,32,34,22,86, + 128,128,128,128,128,128,18,54,86,128,64,96,64,64,128,6, + 66,82,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,8,0,80,34,22,86,128,0,128,128,128, + 128,1,70,86,32,112,160,160,112,32,2,69,85,48,64,224, + 64,176,2,85,85,136,112,80,112,136,18,54,86,160,160,64, + 224,64,64,34,21,85,128,128,0,128,128,17,55,87,96,128, + 192,160,96,32,192,23,49,81,160,1,87,87,112,136,168,200, + 168,136,112,5,51,83,96,160,96,3,83,83,72,144,72,3, + 66,82,240,16,20,49,81,224,1,87,87,112,136,232,200,200, + 136,112,7,65,81,240,21,51,83,64,160,64,2,86,86,32, + 32,248,32,32,248,20,36,84,192,64,128,192,20,36,84,192, + 192,64,192,22,34,82,64,128,1,69,85,144,144,144,224,128, + 2,70,86,112,208,208,80,80,80,20,34,82,192,192,17,34, + 82,64,128,20,52,84,64,192,64,224,5,51,83,64,160,64, + 3,83,83,144,72,144,1,71,87,128,128,128,144,48,112,16, + 1,71,87,128,128,128,176,16,32,48,1,71,87,192,192,64, + 208,48,112,16,18,54,86,64,0,64,128,160,64,2,70,86, + 96,144,144,240,144,144,2,70,86,96,144,144,240,144,144,2, + 70,86,96,144,144,240,144,144,2,70,86,96,144,144,240,144, + 144,2,70,86,144,96,144,240,144,144,2,70,86,96,96,144, + 240,144,144,2,70,86,112,160,176,224,160,176,1,71,87,96, + 144,128,128,144,96,64,2,70,86,240,128,224,128,128,240,2, + 70,86,240,128,224,128,128,240,2,70,86,240,128,224,128,128, + 240,2,70,86,240,128,224,128,128,240,18,54,86,224,64,64, + 64,64,224,18,54,86,224,64,64,64,64,224,18,54,86,224, + 64,64,64,64,224,18,54,86,224,64,64,64,64,224,2,70, + 86,224,80,208,80,80,224,2,70,86,176,144,208,176,176,144, + 2,70,86,96,144,144,144,144,96,2,70,86,96,144,144,144, + 144,96,2,70,86,96,144,144,144,144,96,2,70,86,96,144, + 144,144,144,96,2,70,86,144,96,144,144,144,96,2,68,84, + 144,96,96,144,2,70,86,112,176,176,208,208,224,2,70,86, + 144,144,144,144,144,96,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,144,96,2,70,86,144,0,144,144,144, + 96,18,54,86,160,160,160,64,64,64,2,70,86,128,224,144, + 224,128,128,2,70,86,96,144,160,144,144,160,2,70,86,64, + 32,112,144,176,80,2,70,86,32,64,112,144,176,80,2,70, + 86,32,80,112,144,176,80,2,70,86,80,160,112,144,176,80, + 2,70,86,80,0,112,144,176,80,2,70,86,96,96,112,144, + 176,80,2,68,84,112,176,160,112,17,53,85,96,128,128,96, + 64,2,70,86,64,32,96,176,192,96,2,70,86,32,64,96, + 176,192,96,2,70,86,64,160,96,176,192,96,2,70,86,160, + 0,96,176,192,96,18,54,86,128,64,192,64,64,224,18,54, + 86,64,128,192,64,64,224,18,54,86,64,160,192,64,64,224, + 18,54,86,160,0,192,64,64,224,2,70,86,64,48,96,144, + 144,96,2,70,86,80,160,224,144,144,144,2,70,86,64,32, + 96,144,144,96,2,70,86,32,64,96,144,144,96,2,70,86, + 96,0,96,144,144,96,2,70,86,80,160,96,144,144,96,2, + 70,86,80,0,96,144,144,96,2,69,85,96,0,240,0,96, + 2,68,84,112,176,208,224,2,70,86,64,32,144,144,144,112, + 2,70,86,32,64,144,144,144,112,2,70,86,96,0,144,144, + 144,112,2,70,86,80,0,144,144,144,112,1,71,87,32,64, + 144,144,80,32,64,1,70,86,128,224,144,144,224,128,1,71, + 87,80,0,144,144,80,32,64}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 7 x= 2 y= 6 dx= 5 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x7r[789] U8G_SECTION(".progmem.u8g_font_5x7r") = { + 1,5,7,0,255,6,1,21,2,39,32,127,255,6,255,6, + 255,8,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,85,85,80,248,80,248,80,2,85,85,112,160, + 112,40,112,2,70,86,128,144,32,64,144,16,2,69,85,64, + 160,64,160,80,37,19,83,128,128,128,18,38,86,64,128,128, + 128,128,64,18,38,86,128,64,64,64,64,128,18,53,85,160, + 64,224,64,160,2,85,85,32,32,248,32,32,17,51,83,96, + 64,128,4,65,81,240,18,34,82,192,192,3,68,84,16,32, + 64,128,18,54,86,64,160,160,160,160,64,18,54,86,64,192, + 64,64,64,224,2,70,86,96,144,16,32,64,240,2,70,86, + 240,16,96,16,144,96,2,70,86,32,96,160,240,32,32,2, + 70,86,240,128,224,16,144,96,2,70,86,96,128,224,144,144, + 96,2,70,86,240,16,32,32,64,64,2,70,86,96,144,96, + 144,144,96,2,70,86,96,144,144,112,16,96,18,37,85,192, + 192,0,192,192,1,54,86,96,96,0,96,64,128,18,53,85, + 32,64,128,64,32,3,67,83,240,0,240,18,53,85,128,64, + 32,64,128,18,54,86,64,160,32,64,0,64,2,70,86,96, + 144,176,176,128,96,2,70,86,96,144,144,240,144,144,2,70, + 86,224,144,224,144,144,224,2,70,86,96,144,128,128,144,96, + 2,70,86,224,144,144,144,144,224,2,70,86,240,128,224,128, + 128,240,2,70,86,240,128,224,128,128,128,2,70,86,96,144, + 128,176,144,112,2,70,86,144,144,240,144,144,144,18,54,86, + 224,64,64,64,64,224,2,70,86,16,16,16,16,144,96,2, + 70,86,144,160,192,192,160,144,2,70,86,128,128,128,128,128, + 240,2,70,86,144,240,240,144,144,144,2,70,86,144,208,208, + 176,176,144,2,70,86,96,144,144,144,144,96,2,70,86,224, + 144,144,224,128,128,1,71,87,96,144,144,144,208,96,16,2, + 70,86,224,144,144,224,160,144,2,70,86,96,144,64,32,144, + 96,18,54,86,224,64,64,64,64,64,2,70,86,144,144,144, + 144,144,96,2,70,86,144,144,144,144,96,96,2,70,86,144, + 144,144,240,240,144,2,70,86,144,144,96,96,144,144,18,54, + 86,160,160,160,64,64,64,2,70,86,240,16,32,64,128,240, + 18,54,86,224,128,128,128,128,224,3,68,84,128,64,32,16, + 18,54,86,224,32,32,32,32,224,22,50,82,64,160,2,65, + 81,240,22,34,82,128,64,2,68,84,112,144,176,80,2,70, + 86,128,128,224,144,144,224,2,52,84,96,128,128,96,2,70, + 86,16,16,112,144,144,112,2,68,84,96,176,192,96,2,70, + 86,32,80,64,224,64,64,1,69,85,112,144,96,128,112,2, + 70,86,128,128,224,144,144,144,18,54,86,64,0,192,64,64, + 224,17,55,87,32,0,32,32,32,160,64,2,70,86,128,128, + 160,192,160,144,18,54,86,192,64,64,64,64,224,2,68,84, + 160,240,144,144,2,68,84,224,144,144,144,2,68,84,96,144, + 144,96,1,69,85,224,144,144,224,128,1,69,85,112,144,144, + 112,16,2,68,84,224,144,128,128,2,68,84,112,192,48,224, + 2,70,86,64,64,224,64,64,48,2,68,84,144,144,144,112, + 18,52,84,160,160,160,64,2,68,84,144,144,240,240,2,68, + 84,144,96,96,144,1,69,85,144,144,80,32,64,2,68,84, + 240,32,64,240,18,54,86,32,64,192,64,64,32,34,22,86, + 128,128,128,128,128,128,18,54,86,128,64,96,64,64,128,6, + 66,82,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 5 dy= 0 ascent= 7 len= 8 + Font Bounding box w= 5 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x8[1693] U8G_SECTION(".progmem.u8g_font_5x8") = { + 1,5,8,0,255,6,1,33,2,53,32,255,255,7,255,6, + 255,9,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,87,87,80,80,248,80,248,80,80,2,87,87, + 32,112,160,112,40,112,32,19,53,85,128,160,64,160,32,2, + 71,87,64,160,160,64,160,160,80,37,19,83,128,128,128,18, + 38,86,64,128,128,128,128,64,18,38,86,128,64,64,64,64, + 128,2,69,85,144,96,240,96,144,2,85,85,32,32,248,32, + 32,17,51,83,96,64,128,4,65,81,240,17,51,83,64,224, + 64,2,70,86,16,16,32,64,128,128,18,54,86,64,160,160, + 160,160,64,18,54,86,64,192,64,64,64,224,2,70,86,96, + 144,16,96,128,240,2,70,86,240,32,96,16,144,96,2,70, + 86,32,96,160,240,32,32,2,70,86,240,128,224,16,144,96, + 2,70,86,96,128,224,144,144,96,2,70,86,240,16,32,32, + 64,64,2,70,86,96,144,96,144,144,96,2,70,86,96,144, + 144,112,16,96,18,37,85,192,192,0,192,192,17,54,86,96, + 96,0,96,64,128,18,54,86,32,64,128,128,64,32,3,67, + 83,240,0,240,18,54,86,128,64,32,32,64,128,18,54,86, + 64,160,32,64,0,64,1,88,88,48,72,152,168,168,144,64, + 48,2,70,86,96,144,144,240,144,144,2,70,86,224,144,224, + 144,144,224,2,70,86,96,144,128,128,144,96,2,70,86,224, + 144,144,144,144,224,2,70,86,240,128,224,128,128,240,2,70, + 86,240,128,224,128,128,128,2,70,86,96,144,128,176,144,96, + 2,70,86,144,144,240,144,144,144,18,54,86,224,64,64,64, + 64,224,2,70,86,112,32,32,32,160,64,2,70,86,144,160, + 192,160,160,144,2,70,86,128,128,128,128,128,240,2,70,86, + 144,240,240,144,144,144,2,70,86,144,208,240,176,176,144,2, + 70,86,96,144,144,144,144,96,2,70,86,224,144,144,224,128, + 128,1,71,87,96,144,144,208,176,96,16,2,70,86,224,144, + 144,224,144,144,2,70,86,96,144,64,32,144,96,18,54,86, + 224,64,64,64,64,64,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,96,96,2,70,86,144,144,144,240,240, + 144,2,70,86,144,144,96,96,144,144,2,86,86,136,136,80, + 32,32,32,2,70,86,240,16,32,64,128,240,18,54,86,224, + 128,128,128,128,224,2,70,86,128,128,64,32,16,16,18,54, + 86,224,32,32,32,32,224,22,50,82,64,160,1,65,81,240, + 22,34,82,128,64,2,68,84,112,144,144,112,2,70,86,128, + 128,224,144,144,224,18,52,84,96,128,128,96,2,70,86,16, + 16,112,144,144,112,2,68,84,96,176,192,96,2,70,86,32, + 80,64,224,64,64,1,69,85,96,144,112,16,96,2,70,86, + 128,128,224,144,144,144,18,54,86,64,0,192,64,64,224,17, + 55,87,32,0,32,32,32,160,64,2,70,86,128,128,144,224, + 144,144,18,54,86,192,64,64,64,64,224,2,84,84,208,168, + 168,168,2,68,84,224,144,144,144,2,68,84,96,144,144,96, + 1,69,85,224,144,224,128,128,1,69,85,112,144,112,16,16, + 2,68,84,160,208,128,128,18,52,84,96,192,32,192,2,70, + 86,64,64,224,64,80,32,2,68,84,144,144,144,112,18,52, + 84,160,160,160,64,2,84,84,136,168,168,80,2,68,84,144, + 96,96,144,1,69,85,144,144,112,144,96,2,68,84,240,32, + 64,240,2,71,87,48,64,32,192,32,64,48,34,22,86,128, + 128,128,128,128,128,2,71,87,192,32,64,48,64,32,192,6, + 66,82,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,9,0,80,34,22,86,128,0,128,128,128, + 128,1,70,86,32,112,160,160,112,32,2,70,86,32,80,224, + 64,80,160,2,85,85,136,112,80,112,136,2,86,86,136,80, + 248,32,248,32,34,23,87,128,128,128,0,128,128,128,2,71, + 87,112,128,224,144,112,16,224,23,49,81,160,2,86,86,112, + 168,200,200,168,112,20,53,85,96,160,96,0,224,3,67,83, + 80,160,80,18,51,83,224,32,32,20,49,81,224,2,86,86, + 112,232,216,232,216,112,23,49,81,224,21,51,83,64,160,64, + 18,53,85,64,224,64,0,224,20,53,85,64,160,32,64,224, + 20,53,85,192,32,192,32,192,22,34,82,64,128,1,69,85, + 144,144,144,224,128,2,86,86,120,232,232,104,40,40,36,17, + 81,128,17,34,82,64,128,20,53,85,64,192,64,64,224,20, + 53,85,64,160,64,0,224,3,67,83,160,80,160,2,71,87, + 128,128,128,160,96,240,32,2,71,87,128,128,160,208,16,32, + 112,2,71,87,128,64,128,96,160,240,32,18,54,86,64,0, + 64,128,160,64,2,71,87,64,32,96,144,240,144,144,2,71, + 87,32,64,96,144,240,144,144,2,71,87,96,144,96,144,240, + 144,144,2,71,87,80,160,96,144,240,144,144,2,71,87,144, + 0,96,144,240,144,144,2,71,87,96,144,96,144,240,144,144, + 2,70,86,112,160,160,240,160,176,1,71,87,96,144,128,128, + 144,96,64,2,71,87,64,32,240,128,224,128,240,2,71,87, + 32,64,240,128,224,128,240,2,71,87,96,144,240,128,224,128, + 240,2,71,87,144,0,240,128,224,128,240,18,55,87,128,64, + 224,64,64,64,224,18,55,87,32,64,224,64,64,64,224,18, + 55,87,64,160,224,64,64,64,224,18,55,87,160,0,224,64, + 64,64,224,2,86,86,112,72,232,72,72,112,2,71,87,80, + 160,144,208,176,144,144,2,71,87,64,32,96,144,144,144,96, + 2,71,87,32,64,96,144,144,144,96,2,71,87,96,144,96, + 144,144,144,96,2,71,87,80,160,96,144,144,144,96,2,71, + 87,144,0,96,144,144,144,96,18,51,83,160,64,160,2,70, + 86,112,176,176,208,208,224,2,71,87,64,32,144,144,144,144, + 96,2,71,87,32,64,144,144,144,144,96,2,71,87,96,144, + 144,144,144,144,96,2,71,87,144,0,144,144,144,144,96,2, + 87,87,16,32,136,80,32,32,32,2,70,86,128,224,144,144, + 224,128,2,70,86,96,144,160,160,144,160,2,71,87,64,32, + 0,112,144,144,112,2,71,87,32,64,0,112,144,144,112,2, + 71,87,32,80,0,112,144,144,112,2,71,87,80,160,0,112, + 144,144,112,2,70,86,80,0,112,144,144,112,2,71,87,96, + 144,96,112,144,144,112,2,84,84,240,104,176,120,17,53,85, + 96,128,128,96,64,2,71,87,64,32,0,96,176,192,96,2, + 71,87,32,64,0,96,176,192,96,2,71,87,96,144,0,96, + 176,192,96,2,70,86,80,0,96,176,192,96,18,55,87,128, + 64,0,192,64,64,224,18,55,87,32,64,0,192,64,64,224, + 18,55,87,64,160,0,192,64,64,224,18,54,86,160,0,192, + 64,64,224,2,71,87,160,64,160,16,112,144,96,2,71,87, + 80,160,0,224,144,144,144,2,71,87,64,32,0,96,144,144, + 96,2,71,87,32,64,0,96,144,144,96,2,71,87,96,144, + 0,96,144,144,96,2,71,87,80,160,0,96,144,144,96,2, + 70,86,144,0,96,144,144,96,18,53,85,64,0,224,0,64, + 2,68,84,112,176,208,224,2,71,87,64,32,0,144,144,144, + 112,2,71,87,32,64,0,144,144,144,112,2,71,87,96,144, + 0,144,144,144,112,2,70,86,144,0,144,144,144,112,1,72, + 88,32,64,0,144,144,112,144,96,1,71,87,128,128,224,144, + 224,128,128,1,71,87,144,0,144,144,112,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 5 dy= 0 ascent= 7 len= 8 + Font Bounding box w= 5 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x8r[805] U8G_SECTION(".progmem.u8g_font_5x8r") = { + 1,5,8,0,255,6,1,33,2,53,32,127,255,7,255,6, + 255,9,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,87,87,80,80,248,80,248,80,80,2,87,87, + 32,112,160,112,40,112,32,19,53,85,128,160,64,160,32,2, + 71,87,64,160,160,64,160,160,80,37,19,83,128,128,128,18, + 38,86,64,128,128,128,128,64,18,38,86,128,64,64,64,64, + 128,2,69,85,144,96,240,96,144,2,85,85,32,32,248,32, + 32,17,51,83,96,64,128,4,65,81,240,17,51,83,64,224, + 64,2,70,86,16,16,32,64,128,128,18,54,86,64,160,160, + 160,160,64,18,54,86,64,192,64,64,64,224,2,70,86,96, + 144,16,96,128,240,2,70,86,240,32,96,16,144,96,2,70, + 86,32,96,160,240,32,32,2,70,86,240,128,224,16,144,96, + 2,70,86,96,128,224,144,144,96,2,70,86,240,16,32,32, + 64,64,2,70,86,96,144,96,144,144,96,2,70,86,96,144, + 144,112,16,96,18,37,85,192,192,0,192,192,17,54,86,96, + 96,0,96,64,128,18,54,86,32,64,128,128,64,32,3,67, + 83,240,0,240,18,54,86,128,64,32,32,64,128,18,54,86, + 64,160,32,64,0,64,1,88,88,48,72,152,168,168,144,64, + 48,2,70,86,96,144,144,240,144,144,2,70,86,224,144,224, + 144,144,224,2,70,86,96,144,128,128,144,96,2,70,86,224, + 144,144,144,144,224,2,70,86,240,128,224,128,128,240,2,70, + 86,240,128,224,128,128,128,2,70,86,96,144,128,176,144,96, + 2,70,86,144,144,240,144,144,144,18,54,86,224,64,64,64, + 64,224,2,70,86,112,32,32,32,160,64,2,70,86,144,160, + 192,160,160,144,2,70,86,128,128,128,128,128,240,2,70,86, + 144,240,240,144,144,144,2,70,86,144,208,240,176,176,144,2, + 70,86,96,144,144,144,144,96,2,70,86,224,144,144,224,128, + 128,1,71,87,96,144,144,208,176,96,16,2,70,86,224,144, + 144,224,144,144,2,70,86,96,144,64,32,144,96,18,54,86, + 224,64,64,64,64,64,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,96,96,2,70,86,144,144,144,240,240, + 144,2,70,86,144,144,96,96,144,144,2,86,86,136,136,80, + 32,32,32,2,70,86,240,16,32,64,128,240,18,54,86,224, + 128,128,128,128,224,2,70,86,128,128,64,32,16,16,18,54, + 86,224,32,32,32,32,224,22,50,82,64,160,1,65,81,240, + 22,34,82,128,64,2,68,84,112,144,144,112,2,70,86,128, + 128,224,144,144,224,18,52,84,96,128,128,96,2,70,86,16, + 16,112,144,144,112,2,68,84,96,176,192,96,2,70,86,32, + 80,64,224,64,64,1,69,85,96,144,112,16,96,2,70,86, + 128,128,224,144,144,144,18,54,86,64,0,192,64,64,224,17, + 55,87,32,0,32,32,32,160,64,2,70,86,128,128,144,224, + 144,144,18,54,86,192,64,64,64,64,224,2,84,84,208,168, + 168,168,2,68,84,224,144,144,144,2,68,84,96,144,144,96, + 1,69,85,224,144,224,128,128,1,69,85,112,144,112,16,16, + 2,68,84,160,208,128,128,18,52,84,96,192,32,192,2,70, + 86,64,64,224,64,80,32,2,68,84,144,144,144,112,18,52, + 84,160,160,160,64,2,84,84,136,168,168,80,2,68,84,144, + 96,96,144,1,69,85,144,144,112,144,96,2,68,84,240,32, + 64,240,2,71,87,48,64,32,192,32,64,48,34,22,86,128, + 128,128,128,128,128,2,71,87,192,32,64,48,64,32,192,6, + 66,82,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h= 9 x= 2 y= 8 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w= 6 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x10[1866] U8G_SECTION(".progmem.u8g_font_6x10") = { + 1,6,10,0,254,7,1,54,2,104,32,255,254,8,254,7, + 254,10,0,96,34,23,103,128,128,128,128,128,0,128,22,51, + 99,160,160,160,2,87,103,80,80,248,80,248,80,80,2,87, + 103,32,112,160,112,40,112,32,2,87,103,72,168,80,32,80, + 168,144,2,87,103,64,160,160,64,168,144,104,38,19,99,128, + 128,128,18,55,103,32,64,128,128,128,64,32,18,55,103,128, + 64,32,32,32,64,128,3,85,101,136,80,248,80,136,3,85, + 101,32,32,248,32,32,17,51,99,96,64,128,5,81,97,248, + 17,51,99,64,224,64,2,87,103,8,8,16,32,64,128,128, + 2,87,103,32,80,136,136,136,80,32,2,87,103,32,96,160, + 32,32,32,248,2,87,103,112,136,8,48,64,128,248,2,87, + 103,248,8,16,48,8,136,112,2,87,103,16,48,80,144,248, + 16,16,2,87,103,248,128,176,200,8,136,112,2,87,103,48, + 64,128,176,200,136,112,2,87,103,248,8,16,16,32,64,64, + 2,87,103,112,136,136,112,136,136,112,2,87,103,112,136,152, + 104,8,16,96,17,55,103,64,224,64,0,64,224,64,17,55, + 103,64,224,64,0,96,64,128,18,71,103,16,32,64,128,64, + 32,16,4,83,99,248,0,248,18,71,103,128,64,32,16,32, + 64,128,2,87,103,112,136,16,32,32,0,32,2,87,103,112, + 136,152,168,176,128,112,2,87,103,32,80,136,136,248,136,136, + 2,87,103,240,72,72,112,72,72,240,2,87,103,112,136,128, + 128,128,136,112,2,87,103,240,72,72,72,72,72,240,2,87, + 103,248,128,128,240,128,128,248,2,87,103,248,128,128,240,128, + 128,128,2,87,103,112,136,128,128,152,136,112,2,87,103,136, + 136,136,248,136,136,136,18,55,103,224,64,64,64,64,64,224, + 2,87,103,56,16,16,16,16,144,96,2,87,103,136,144,160, + 192,160,144,136,2,87,103,128,128,128,128,128,128,248,2,87, + 103,136,136,216,168,136,136,136,2,87,103,136,136,200,168,152, + 136,136,2,87,103,112,136,136,136,136,136,112,2,87,103,240, + 136,136,240,128,128,128,1,88,104,112,136,136,136,136,168,112, + 8,2,87,103,240,136,136,240,160,144,136,2,87,103,112,136, + 128,112,8,136,112,2,87,103,248,32,32,32,32,32,32,2, + 87,103,136,136,136,136,136,136,112,2,87,103,136,136,136,80, + 80,80,32,2,87,103,136,136,136,168,168,216,136,2,87,103, + 136,136,80,32,80,136,136,2,87,103,136,136,80,32,32,32, + 32,2,87,103,248,8,16,32,64,128,248,18,55,103,224,128, + 128,128,128,128,224,2,87,103,128,128,64,32,16,8,8,18, + 55,103,224,32,32,32,32,32,224,6,83,99,32,80,136,1, + 81,97,248,40,34,98,128,64,2,85,101,112,8,120,136,120, + 2,87,103,128,128,176,200,136,200,176,2,85,101,112,136,128, + 136,112,2,87,103,8,8,104,152,136,152,104,2,85,101,112, + 136,248,128,112,2,87,103,48,72,64,240,64,64,64,0,87, + 103,120,136,136,120,8,136,112,2,87,103,128,128,176,200,136, + 136,136,18,55,103,64,0,192,64,64,64,224,16,73,105,16, + 0,48,16,16,16,144,144,96,2,87,103,128,128,136,144,224, + 144,136,18,55,103,192,64,64,64,64,64,224,2,85,101,208, + 168,168,168,136,2,85,101,176,200,136,136,136,2,85,101,112, + 136,136,136,112,0,87,103,176,200,136,200,176,128,128,0,87, + 103,104,152,136,152,104,8,8,2,85,101,176,200,128,128,128, + 2,85,101,112,128,112,8,240,2,87,103,64,64,240,64,64, + 72,48,2,85,101,136,136,136,152,104,2,85,101,136,136,80, + 80,32,2,85,101,136,136,168,168,80,2,85,101,136,80,32, + 80,136,0,87,103,136,136,152,104,8,136,112,2,85,101,248, + 16,32,64,248,18,71,103,48,64,32,192,32,64,48,34,23, + 103,128,128,128,128,128,128,128,18,71,103,192,32,64,48,64, + 32,192,6,83,99,72,168,144,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,10,0,96,34,23,103,128, + 0,128,128,128,128,128,1,87,103,32,120,160,160,160,120,32, + 2,87,103,48,72,64,224,64,72,176,2,85,101,136,112,80, + 112,136,1,88,104,136,136,80,32,248,32,32,32,34,23,103, + 128,128,128,0,128,128,128,1,88,104,112,128,224,144,72,56, + 8,112,25,49,97,160,2,87,103,112,136,168,200,168,136,112, + 19,70,102,112,144,176,80,0,240,2,101,101,36,72,144,72, + 36,20,66,98,240,16,21,65,97,240,2,87,103,112,136,232, + 200,200,136,112,9,81,97,248,22,51,99,64,160,64,2,86, + 102,32,32,248,32,32,248,21,69,101,96,144,32,64,240,21, + 69,101,224,16,96,16,224,40,34,98,64,128,1,86,102,136, + 136,136,200,176,128,2,87,103,120,232,232,104,40,40,40,37, + 17,97,128,32,34,98,64,128,21,53,101,64,192,64,64,224, + 19,70,102,96,144,144,96,0,240,2,101,101,144,72,36,72, + 144,1,105,105,64,192,64,64,228,12,20,60,4,1,105,105, + 64,192,64,64,232,20,4,8,28,1,89,105,192,32,64,32, + 200,24,40,120,8,2,87,103,32,0,32,32,64,136,112,2, + 88,104,64,32,112,136,136,248,136,136,2,88,104,16,32,112, + 136,136,248,136,136,2,88,104,32,80,112,136,136,248,136,136, + 2,88,104,72,176,112,136,136,248,136,136,2,88,104,80,0, + 112,136,136,248,136,136,2,88,104,32,80,112,136,136,248,136, + 136,2,103,103,60,80,144,156,240,144,156,0,89,105,112,136, + 128,128,128,136,112,32,64,2,88,104,64,248,128,128,240,128, + 128,248,2,88,104,16,248,128,128,240,128,128,248,2,88,104, + 32,248,128,128,240,128,128,248,2,88,104,80,248,128,128,240, + 128,128,248,18,56,104,128,64,224,64,64,64,64,224,18,56, + 104,32,64,224,64,64,64,64,224,18,56,104,64,160,224,64, + 64,64,64,224,18,56,104,160,0,224,64,64,64,64,224,2, + 87,103,240,72,72,232,72,72,240,2,88,104,40,80,136,200, + 168,152,136,136,2,88,104,64,32,112,136,136,136,136,112,2, + 88,104,16,32,112,136,136,136,136,112,2,88,104,32,80,112, + 136,136,136,136,112,2,88,104,40,80,112,136,136,136,136,112, + 2,88,104,80,0,112,136,136,136,136,112,2,85,101,136,80, + 32,80,136,2,87,103,112,152,152,168,200,200,112,2,88,104, + 64,32,136,136,136,136,136,112,2,88,104,16,32,136,136,136, + 136,136,112,2,88,104,32,80,0,136,136,136,136,112,2,88, + 104,80,0,136,136,136,136,136,112,2,88,104,16,32,136,136, + 80,32,32,32,2,87,103,128,240,136,240,128,128,128,2,87, + 103,112,136,144,160,144,136,176,2,88,104,64,32,0,112,8, + 120,136,120,2,88,104,16,32,0,112,8,120,136,120,2,88, + 104,32,80,0,112,8,120,136,120,2,88,104,40,80,0,112, + 8,120,136,120,2,87,103,80,0,112,8,120,136,120,2,88, + 104,32,80,32,112,8,120,136,120,2,101,101,120,20,124,144, + 124,0,87,103,112,136,128,136,112,32,64,2,88,104,64,32, + 0,112,136,248,128,112,2,88,104,16,32,0,112,136,248,128, + 112,2,88,104,32,80,0,112,136,248,128,112,2,87,103,80, + 0,112,136,248,128,112,18,56,104,128,64,0,192,64,64,64, + 224,18,56,104,64,128,0,192,64,64,64,224,18,56,104,64, + 160,0,192,64,64,64,224,18,55,103,160,0,192,64,64,64, + 224,2,87,103,192,48,112,136,136,136,112,2,88,104,40,80, + 0,176,200,136,136,136,2,88,104,64,32,0,112,136,136,136, + 112,2,88,104,16,32,0,112,136,136,136,112,2,88,104,32, + 80,0,112,136,136,136,112,2,88,104,40,80,0,112,136,136, + 136,112,2,87,103,80,0,112,136,136,136,112,3,85,101,32, + 0,248,0,32,2,85,101,120,152,168,200,240,2,88,104,64, + 32,0,136,136,136,152,104,2,88,104,16,32,0,136,136,136, + 152,104,2,88,104,32,80,0,136,136,136,152,104,2,87,103, + 80,0,136,136,136,152,104,0,89,105,16,32,136,136,152,104, + 8,136,112,0,88,104,128,240,136,136,136,240,128,128,0,89, + 105,80,0,136,136,152,104,8,136,112}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 5 h= 9 x= 2 y= 8 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w= 6 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x10r[889] U8G_SECTION(".progmem.u8g_font_6x10r") = { + 1,6,10,0,254,7,1,54,2,104,32,127,254,8,254,7, + 254,10,0,96,34,23,103,128,128,128,128,128,0,128,22,51, + 99,160,160,160,2,87,103,80,80,248,80,248,80,80,2,87, + 103,32,112,160,112,40,112,32,2,87,103,72,168,80,32,80, + 168,144,2,87,103,64,160,160,64,168,144,104,38,19,99,128, + 128,128,18,55,103,32,64,128,128,128,64,32,18,55,103,128, + 64,32,32,32,64,128,3,85,101,136,80,248,80,136,3,85, + 101,32,32,248,32,32,17,51,99,96,64,128,5,81,97,248, + 17,51,99,64,224,64,2,87,103,8,8,16,32,64,128,128, + 2,87,103,32,80,136,136,136,80,32,2,87,103,32,96,160, + 32,32,32,248,2,87,103,112,136,8,48,64,128,248,2,87, + 103,248,8,16,48,8,136,112,2,87,103,16,48,80,144,248, + 16,16,2,87,103,248,128,176,200,8,136,112,2,87,103,48, + 64,128,176,200,136,112,2,87,103,248,8,16,16,32,64,64, + 2,87,103,112,136,136,112,136,136,112,2,87,103,112,136,152, + 104,8,16,96,17,55,103,64,224,64,0,64,224,64,17,55, + 103,64,224,64,0,96,64,128,18,71,103,16,32,64,128,64, + 32,16,4,83,99,248,0,248,18,71,103,128,64,32,16,32, + 64,128,2,87,103,112,136,16,32,32,0,32,2,87,103,112, + 136,152,168,176,128,112,2,87,103,32,80,136,136,248,136,136, + 2,87,103,240,72,72,112,72,72,240,2,87,103,112,136,128, + 128,128,136,112,2,87,103,240,72,72,72,72,72,240,2,87, + 103,248,128,128,240,128,128,248,2,87,103,248,128,128,240,128, + 128,128,2,87,103,112,136,128,128,152,136,112,2,87,103,136, + 136,136,248,136,136,136,18,55,103,224,64,64,64,64,64,224, + 2,87,103,56,16,16,16,16,144,96,2,87,103,136,144,160, + 192,160,144,136,2,87,103,128,128,128,128,128,128,248,2,87, + 103,136,136,216,168,136,136,136,2,87,103,136,136,200,168,152, + 136,136,2,87,103,112,136,136,136,136,136,112,2,87,103,240, + 136,136,240,128,128,128,1,88,104,112,136,136,136,136,168,112, + 8,2,87,103,240,136,136,240,160,144,136,2,87,103,112,136, + 128,112,8,136,112,2,87,103,248,32,32,32,32,32,32,2, + 87,103,136,136,136,136,136,136,112,2,87,103,136,136,136,80, + 80,80,32,2,87,103,136,136,136,168,168,216,136,2,87,103, + 136,136,80,32,80,136,136,2,87,103,136,136,80,32,32,32, + 32,2,87,103,248,8,16,32,64,128,248,18,55,103,224,128, + 128,128,128,128,224,2,87,103,128,128,64,32,16,8,8,18, + 55,103,224,32,32,32,32,32,224,6,83,99,32,80,136,1, + 81,97,248,40,34,98,128,64,2,85,101,112,8,120,136,120, + 2,87,103,128,128,176,200,136,200,176,2,85,101,112,136,128, + 136,112,2,87,103,8,8,104,152,136,152,104,2,85,101,112, + 136,248,128,112,2,87,103,48,72,64,240,64,64,64,0,87, + 103,120,136,136,120,8,136,112,2,87,103,128,128,176,200,136, + 136,136,18,55,103,64,0,192,64,64,64,224,16,73,105,16, + 0,48,16,16,16,144,144,96,2,87,103,128,128,136,144,224, + 144,136,18,55,103,192,64,64,64,64,64,224,2,85,101,208, + 168,168,168,136,2,85,101,176,200,136,136,136,2,85,101,112, + 136,136,136,112,0,87,103,176,200,136,200,176,128,128,0,87, + 103,104,152,136,152,104,8,8,2,85,101,176,200,128,128,128, + 2,85,101,112,128,112,8,240,2,87,103,64,64,240,64,64, + 72,48,2,85,101,136,136,136,152,104,2,85,101,136,136,80, + 80,32,2,85,101,136,136,168,168,80,2,85,101,136,80,32, + 80,136,0,87,103,136,136,152,104,8,136,112,2,85,101,248, + 16,32,64,248,18,71,103,48,64,32,192,32,64,48,34,23, + 103,128,128,128,128,128,128,128,18,71,103,192,32,64,48,64, + 32,192,6,83,99,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 3, '1' Height: 8 + Calculated Max Values w= 6 h=12 x= 5 y= 8 dx= 6 dy= 0 ascent=10 len=12 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[2382] U8G_SECTION(".progmem.u8g_font_6x12_67_75") = { + 1,6,12,0,254,3,2,41,3,99,0,255,0,10,254,8, + 0,2,87,103,168,0,136,0,136,0,168,2,87,103,240,136, + 232,168,232,136,240,2,87,103,112,168,248,168,248,168,112,2, + 87,103,112,136,8,8,8,136,112,18,69,101,96,144,16,144, + 96,1,88,104,112,136,128,128,136,120,8,8,2,87,103,32, + 32,32,32,168,112,32,2,103,103,248,252,252,156,252,252,248, + 2,87,103,112,248,248,168,248,248,112,255,255,255,255,255,255, + 255,3,85,101,32,64,248,64,32,2,87,103,32,112,168,32, + 32,32,32,3,85,101,32,16,248,16,32,2,87,103,32,32, + 32,32,168,112,32,4,83,99,80,248,80,2,87,103,32,112, + 168,32,168,112,32,2,89,105,192,240,224,160,32,16,16,8, + 8,2,89,105,24,120,56,40,32,64,64,128,128,2,89,105, + 128,128,64,64,32,40,56,120,24,2,89,105,8,8,16,16, + 32,160,224,240,192,3,101,101,40,72,252,80,48,3,101,101, + 48,40,252,72,80,4,99,99,192,216,100,4,99,99,12,108, + 152,3,101,101,40,80,252,80,40,2,88,104,32,112,168,112, + 168,32,32,32,3,101,101,80,40,252,40,80,2,88,104,32, + 32,32,168,112,168,112,32,3,101,101,36,72,240,72,36,3, + 101,101,144,72,60,72,144,3,85,101,40,72,248,72,40,2, + 87,103,32,112,168,32,32,32,248,3,85,101,160,144,248,144, + 160,2,87,103,248,32,32,32,168,112,32,2,87,103,32,112, + 168,32,168,112,248,3,101,101,40,68,248,64,32,3,101,101, + 80,136,124,8,16,3,101,101,32,76,252,72,40,3,101,101, + 16,200,252,72,80,3,100,100,72,220,236,72,3,101,101,8, + 88,252,104,64,2,87,103,128,144,176,208,144,56,16,2,88, + 104,32,64,248,72,40,8,8,8,2,88,104,32,16,248,144, + 160,128,128,128,2,88,104,8,8,8,40,72,248,64,32,2, + 87,103,128,128,160,144,248,16,32,3,84,100,240,16,56,16, + 3,85,101,8,8,72,248,64,3,85,101,48,72,72,232,72, + 3,85,101,96,144,144,184,16,2,88,104,248,128,224,192,160, + 32,16,16,2,89,105,160,192,248,192,168,24,248,24,40,2, + 86,102,56,48,168,136,136,112,2,86,102,224,96,168,136,136, + 112,5,83,99,32,64,248,3,83,99,248,64,32,34,56,104, + 128,192,160,128,128,128,128,128,2,56,104,32,96,160,32,32, + 32,32,32,5,83,99,32,16,248,3,83,99,248,16,32,34, + 56,104,128,128,128,128,128,160,192,128,2,56,104,32,32,32, + 32,32,160,96,32,2,89,105,32,16,248,16,32,64,248,64, + 32,2,88,104,80,240,80,80,80,80,120,80,2,89,105,32, + 64,248,64,32,16,248,16,32,2,89,105,32,64,248,64,32, + 64,248,64,32,2,88,104,80,248,80,80,80,80,80,80,2, + 89,105,32,16,248,16,32,16,248,16,32,2,88,104,80,80, + 80,80,80,80,248,80,2,87,103,32,64,248,0,248,16,32, + 2,87,103,32,16,248,0,248,64,32,2,103,103,20,40,124, + 144,124,32,80,2,103,103,8,88,252,164,252,104,64,2,103, + 103,160,80,248,36,248,16,40,3,85,101,32,120,128,120,32, + 2,87,103,32,80,216,80,80,80,80,3,85,101,32,240,8, + 240,32,2,87,103,80,80,80,80,216,80,32,3,101,101,72, + 252,132,252,72,2,88,104,32,80,216,80,80,216,80,32,2, + 102,102,248,160,208,168,148,8,2,102,102,124,20,44,84,164, + 64,2,102,102,64,164,84,44,20,124,2,102,102,8,148,168, + 208,160,248,2,103,103,16,60,64,252,64,60,16,2,103,103, + 32,240,8,252,8,240,32,3,100,100,64,232,212,64,3,100, + 100,8,92,172,8,2,88,104,32,112,168,32,112,32,112,32, + 2,88,104,32,112,32,112,32,168,112,32,3,101,101,32,64, + 212,64,32,2,88,104,32,112,136,32,0,32,0,32,3,101, + 101,16,8,172,8,16,2,88,104,32,0,32,0,32,136,112, + 32,3,85,101,160,192,248,192,160,3,85,101,40,24,248,24, + 40,3,85,101,32,120,136,120,32,2,88,104,32,80,216,80, + 80,80,80,112,3,85,101,32,240,136,240,32,2,88,104,112, + 80,80,80,80,216,80,32,2,89,105,32,80,216,80,112,0, + 112,80,112,2,89,105,32,80,216,80,80,80,216,136,248,2, + 89,105,32,80,248,136,80,80,216,136,248,2,89,105,32,112, + 248,112,112,112,248,168,248,2,89,105,32,80,216,80,216,80, + 80,80,112,2,89,105,32,80,216,80,216,80,216,136,248,3, + 85,101,160,240,136,240,160,2,88,104,248,128,176,160,144,16, + 8,8,2,88,104,128,128,64,72,40,104,8,248,2,88,104, + 32,80,216,80,80,216,80,32,3,101,101,16,104,252,104,16, + 2,88,104,80,120,80,80,80,80,240,80,2,89,105,16,248, + 16,16,248,16,16,248,16,3,101,101,40,72,252,72,40,3, + 101,101,80,72,252,72,80,3,101,101,48,120,252,120,48,3, + 101,101,56,88,252,88,56,3,101,101,112,104,252,104,112,3, + 101,101,48,120,252,120,48,3,85,101,32,96,184,96,32,3, + 85,101,32,48,232,48,32,3,101,101,48,120,180,120,48,6, + 102,102,252,252,252,252,252,252,0,98,98,252,252,0,99,99, + 252,252,252,0,101,101,252,252,252,252,252,0,102,102,252,252, + 252,252,252,252,0,104,104,252,252,252,252,252,252,252,252,0, + 105,105,252,252,252,252,252,252,252,252,252,0,107,107,252,252, + 252,252,252,252,252,252,252,252,252,0,108,108,252,252,252,252, + 252,252,252,252,252,252,252,252,0,92,108,248,248,248,248,248, + 248,248,248,248,248,248,248,0,76,108,240,240,240,240,240,240, + 240,240,240,240,240,240,0,76,108,240,240,240,240,240,240,240, + 240,240,240,240,240,0,60,108,224,224,224,224,224,224,224,224, + 224,224,224,224,0,44,108,192,192,192,192,192,192,192,192,192, + 192,192,192,0,44,108,192,192,192,192,192,192,192,192,192,192, + 192,192,0,28,108,128,128,128,128,128,128,128,128,128,128,128, + 128,48,60,108,224,224,224,224,224,224,224,224,224,224,224,224, + 1,107,107,168,0,84,0,168,0,84,0,168,0,84,0,108, + 108,168,84,168,84,168,84,168,84,168,84,168,84,0,108,108, + 84,252,168,252,84,252,168,252,84,252,168,252,10,98,98,252, + 252,80,28,108,128,128,128,128,128,128,128,128,128,128,128,128, + 0,54,102,224,224,224,224,224,224,48,54,102,224,224,224,224, + 224,224,6,54,102,224,224,224,224,224,224,0,108,108,224,224, + 224,224,224,224,252,252,252,252,252,252,0,108,108,224,224,224, + 224,224,224,28,28,28,28,28,28,0,108,108,252,252,252,252, + 252,252,224,224,224,224,224,224,0,108,108,252,252,252,252,252, + 252,28,28,28,28,28,28,54,54,102,224,224,224,224,224,224, + 0,108,108,28,28,28,28,28,28,224,224,224,224,224,224,0, + 108,108,28,28,28,28,28,28,252,252,252,252,252,252,2,85, + 101,248,248,248,248,248,2,85,101,248,136,136,136,248,2,85, + 101,112,136,136,136,112,2,85,101,248,136,168,136,248,2,85, + 101,248,136,248,136,248,2,85,101,248,168,168,168,248,2,85, + 101,248,168,248,168,248,2,85,101,248,200,168,152,248,2,85, + 101,248,152,168,200,248,2,85,101,248,216,168,216,248,20,51, + 99,224,224,224,20,51,99,224,160,224,3,101,101,252,252,252, + 252,252,3,101,101,252,132,132,132,252,17,74,106,240,240,240, + 240,240,240,240,240,240,240,17,74,106,240,144,144,144,144,144, + 144,144,144,240,4,99,99,60,120,240,4,99,99,60,72,240, + 2,87,103,32,32,112,112,248,248,248,2,87,103,32,32,80, + 80,136,136,248,3,85,101,32,32,112,112,248,3,85,101,32, + 32,80,80,248,18,71,103,128,192,224,240,224,192,128,18,71, + 103,128,192,160,144,160,192,128,19,53,101,128,192,224,192,128, + 19,53,101,128,192,160,192,128,3,101,101,192,240,252,240,192, + 3,101,101,192,176,140,176,192,2,87,103,248,248,248,112,112, + 32,32,2,87,103,248,136,136,80,80,32,32,2,85,101,248, + 112,112,32,32,2,85,101,248,80,80,32,32,18,71,103,16, + 48,112,240,112,48,16,18,71,103,16,48,80,144,80,48,16, + 19,53,101,32,96,224,96,32,19,53,101,32,96,160,96,32, + 3,101,101,12,60,252,60,12,3,101,101,12,52,196,52,12, + 3,85,101,32,112,248,112,32,3,85,101,32,80,136,80,32, + 3,85,101,32,80,168,80,32,2,102,102,48,72,180,180,72, + 48,2,87,103,32,80,80,136,80,80,32,2,102,102,48,72, + 132,132,72,48,2,102,102,32,8,128,4,64,16,2,85,101, + 112,168,168,168,112,2,87,103,112,136,168,216,168,136,112,2, + 102,102,48,120,252,252,120,48,2,102,102,48,104,228,228,104, + 48,2,102,102,48,88,156,156,88,48,2,102,102,48,72,132, + 252,120,48,2,102,102,48,120,252,132,72,48,2,102,102,48, + 88,156,132,72,48,2,102,102,48,104,228,132,72,48,18,89, + 105,8,56,120,120,248,120,120,56,8,2,89,105,128,224,240, + 240,248,240,240,224,128,0,108,108,252,252,252,252,204,132,132, + 204,252,252,252,252,0,108,108,252,252,252,204,180,120,120,180, + 204,252,252,252,6,102,102,252,252,252,204,180,120,0,102,102, + 120,180,204,252,252,252,5,51,99,32,64,128,53,51,99,128, + 64,32,50,51,99,32,64,128,2,51,99,128,64,32,5,99, + 99,48,72,132,2,99,99,132,72,48,2,85,101,8,24,56, + 120,248,2,85,101,128,192,224,240,248,2,85,101,248,240,224, + 192,128,2,85,101,248,120,56,24,8,2,85,101,112,136,136, + 136,112,2,85,101,248,232,232,232,248,2,85,101,248,184,184, + 184,248,2,85,101,248,248,232,200,248,2,85,101,248,152,184, + 248,248,2,85,101,248,168,168,168,248,2,87,103,32,32,80, + 112,168,136,248,2,87,103,32,32,112,112,232,232,248,2,87, + 103,32,32,112,112,184,184,248,2,103,103,48,72,132,132,132, + 72,48,2,85,101,248,168,232,136,248,2,85,101,248,136,232, + 168,248,2,85,101,248,136,184,168,248,2,85,101,248,168,184, + 136,248,2,85,101,112,168,232,136,112,2,85,101,112,136,232, + 168,112,2,85,101,112,136,184,168,112,2,85,101,112,168,184, + 136,112,3,85,101,248,144,160,192,128,3,85,101,248,72,40, + 24,8,3,85,101,128,192,160,144,248,20,68,100,240,144,144, + 240,19,68,100,240,240,240,240,20,68,100,240,144,144,240,20, + 68,100,240,240,240,240,3,85,101,8,24,40,72,248}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 3 + Calculated Max Values w= 6 h=10 x= 1 y= 2 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_75r[427] U8G_SECTION(".progmem.u8g_font_6x12_75r") = { + 1,6,12,0,254,7,1,41,0,0,32,79,0,9,255,7, + 0,2,85,101,248,248,248,248,248,2,85,101,248,136,136,136, + 248,2,85,101,112,136,136,136,112,2,85,101,248,136,168,136, + 248,2,85,101,248,136,248,136,248,2,85,101,248,168,168,168, + 248,2,85,101,248,168,248,168,248,2,85,101,248,200,168,152, + 248,2,85,101,248,152,168,200,248,2,85,101,248,216,168,216, + 248,20,51,99,224,224,224,20,51,99,224,160,224,3,101,101, + 252,252,252,252,252,3,101,101,252,132,132,132,252,17,74,106, + 240,240,240,240,240,240,240,240,240,240,17,74,106,240,144,144, + 144,144,144,144,144,144,240,4,99,99,60,120,240,4,99,99, + 60,72,240,2,87,103,32,32,112,112,248,248,248,2,87,103, + 32,32,80,80,136,136,248,3,85,101,32,32,112,112,248,3, + 85,101,32,32,80,80,248,18,71,103,128,192,224,240,224,192, + 128,18,71,103,128,192,160,144,160,192,128,19,53,101,128,192, + 224,192,128,19,53,101,128,192,160,192,128,3,101,101,192,240, + 252,240,192,3,101,101,192,176,140,176,192,2,87,103,248,248, + 248,112,112,32,32,2,87,103,248,136,136,80,80,32,32,2, + 85,101,248,112,112,32,32,2,85,101,248,80,80,32,32,18, + 71,103,16,48,112,240,112,48,16,18,71,103,16,48,80,144, + 80,48,16,19,53,101,32,96,224,96,32,19,53,101,32,96, + 160,96,32,3,101,101,12,60,252,60,12,3,101,101,12,52, + 196,52,12,3,85,101,32,112,248,112,32,3,85,101,32,80, + 136,80,32,3,85,101,32,80,168,80,32,2,102,102,48,72, + 180,180,72,48,2,87,103,32,80,80,136,80,80,32,2,102, + 102,48,72,132,132,72,48,2,102,102,32,8,128,4,64,16, + 2,85,101,112,168,168,168,112,2,87,103,112,136,168,216,168, + 136,112,2,102,102,48,120,252,252,120,48}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 6 h=12 x= 2 y= 4 dx= 6 dy= 0 ascent=10 len=12 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[2316] U8G_SECTION(".progmem.u8g_font_6x12_78_79") = { + 1,6,12,0,254,6,2,80,3,53,0,255,0,10,254,9, + 0,2,87,103,168,0,136,0,136,0,168,3,101,101,144,252, + 32,64,96,3,101,101,196,200,48,200,196,3,101,101,96,64, + 32,252,144,2,103,103,204,148,232,48,232,148,204,255,1,105, + 105,120,132,180,180,164,180,180,132,120,1,105,105,120,132,180, + 132,180,132,204,132,120,3,101,101,32,176,252,176,32,2,101, + 101,252,204,180,132,252,255,255,18,72,104,144,144,80,112,240, + 240,240,112,3,102,102,4,56,124,124,64,128,2,102,102,64, + 224,80,40,20,12,3,99,99,248,140,248,2,102,102,12,20, + 40,80,224,64,3,100,100,248,132,132,248,4,99,99,248,244, + 248,2,87,103,8,8,16,16,160,224,64,2,103,103,12,12, + 28,216,248,112,48,2,85,101,136,80,32,80,136,3,85,101, + 216,248,32,248,216,2,86,102,136,80,32,80,136,128,1,103, + 103,204,204,120,112,252,204,192,1,103,103,120,204,164,244,164, + 204,120,2,102,102,48,48,252,252,48,48,3,85,101,32,32, + 216,32,32,2,102,102,48,48,204,204,48,48,2,87,103,32, + 32,248,32,32,32,32,1,90,106,112,80,216,136,216,80,80, + 80,80,112,2,105,105,120,220,188,220,88,88,88,120,120,2, + 87,103,112,32,168,248,168,32,112,2,87,103,32,248,80,80, + 80,248,32,3,85,101,32,32,248,32,32,3,102,102,48,48, + 252,252,48,48,2,104,104,48,120,48,252,252,48,120,48,2, + 87,103,32,112,168,248,168,112,32,3,85,101,32,112,248,112, + 32,3,85,101,32,112,216,112,32,255,3,85,101,32,216,80, + 32,80,2,87,103,112,216,136,216,168,248,112,3,86,102,32, + 32,248,80,112,136,3,86,102,32,32,216,32,80,136,3,86, + 102,32,32,248,112,112,136,3,86,102,32,32,248,112,112,136, + 3,86,102,32,32,232,48,80,136,2,102,102,48,88,140,88, + 172,88,2,86,102,32,168,112,112,168,32,2,87,103,32,168, + 112,80,112,168,32,2,87,103,32,168,112,248,112,168,32,2, + 87,103,32,168,112,248,112,168,32,2,87,103,32,168,112,248, + 112,168,32,2,86,102,32,168,112,112,168,32,1,88,104,80, + 32,168,112,112,168,32,80,1,88,104,80,32,168,112,112,168, + 32,80,2,103,103,80,248,124,248,124,248,80,2,103,103,80, + 168,116,248,116,168,80,2,86,102,32,168,112,112,168,32,2, + 87,103,32,168,112,80,112,168,32,2,86,102,32,168,112,112, + 168,32,2,103,103,168,216,80,168,116,168,32,3,87,103,32, + 112,248,216,112,248,216,3,87,103,32,112,216,168,80,248,216, + 3,86,102,32,112,216,112,248,32,2,87,103,112,248,168,216, + 168,248,112,2,86,102,32,168,112,112,168,32,2,86,102,32, + 168,112,112,168,32,2,86,102,32,168,112,112,168,32,2,86, + 102,32,168,112,112,168,32,2,87,103,32,168,112,248,112,168, + 32,2,87,103,32,168,112,248,112,168,32,2,87,103,32,168, + 112,248,112,168,32,2,87,103,32,168,112,248,112,168,32,2, + 87,103,32,168,112,248,112,168,32,255,3,101,101,120,140,140, + 140,120,255,2,102,102,248,140,140,140,252,124,2,102,102,124, + 252,140,140,140,248,2,102,102,248,140,140,140,252,124,2,102, + 102,124,252,140,140,140,248,255,255,255,2,103,103,16,56,84, + 236,84,56,16,255,34,23,103,128,128,128,128,128,128,128,18, + 39,103,192,192,192,192,192,192,192,18,71,103,240,240,240,240, + 240,240,240,22,69,101,96,128,224,240,96,22,69,101,96,240, + 112,16,96,6,101,101,72,144,216,252,72,6,101,101,72,252, + 108,36,72,255,255,1,106,106,8,124,200,200,200,120,8,200, + 136,112,2,89,105,112,248,248,112,32,0,32,112,32,2,88, + 104,216,248,112,32,0,32,112,32,2,85,101,216,248,248,112, + 32,2,87,103,96,240,240,120,240,240,96,2,104,104,100,184, + 32,216,248,240,228,120,2,102,102,128,88,120,220,152,64,18, + 56,104,32,64,192,192,192,192,64,32,18,56,104,128,64,96, + 96,96,96,64,128,18,40,104,64,192,192,192,192,192,192,64, + 18,40,104,128,192,192,192,192,192,192,128,17,73,105,48,48, + 96,96,192,96,96,48,48,17,73,105,192,192,96,96,48,96, + 96,192,192,2,87,103,24,48,96,192,96,48,24,2,87,103, + 192,96,48,24,48,96,192,1,89,105,56,56,112,112,224,112, + 112,56,56,1,89,105,224,224,112,112,56,112,112,224,224,17, + 57,105,32,64,128,128,128,128,128,64,32,17,57,105,128,64, + 32,32,32,32,32,64,128,17,73,105,48,96,96,96,192,96, + 96,96,48,17,73,105,192,96,96,96,48,96,96,96,192,2, + 89,105,112,248,216,152,216,216,136,248,112,2,89,105,112,248, + 216,168,232,216,136,248,112,2,89,105,112,248,152,232,216,232, + 152,248,112,2,89,105,112,248,184,184,152,136,216,248,112,2, + 89,105,112,248,136,184,152,232,152,248,112,2,89,105,112,248, + 200,184,152,168,216,248,112,2,89,105,112,248,136,232,216,216, + 216,248,112,2,89,105,112,248,216,168,216,168,216,248,112,2, + 89,105,112,248,216,168,200,232,152,248,112,2,105,105,120,252, + 172,148,148,148,172,252,120,2,89,105,112,136,168,232,168,168, + 248,136,112,2,89,105,112,136,168,216,152,168,248,136,112,2, + 89,105,112,136,232,152,168,152,232,136,112,2,89,105,112,136, + 200,200,232,248,168,136,112,2,89,105,112,136,248,200,232,152, + 232,136,112,2,89,105,112,136,184,200,232,216,168,136,112,2, + 89,105,112,136,248,152,168,168,168,136,112,2,89,105,112,136, + 168,216,168,216,168,136,112,2,89,105,112,136,168,216,184,152, + 232,136,112,2,105,105,120,132,212,236,236,236,212,132,120,2, + 89,105,112,248,216,152,216,216,216,248,112,2,89,105,112,248, + 216,168,232,216,136,248,112,2,89,105,112,248,152,232,216,232, + 152,248,112,2,89,105,112,248,184,184,152,136,216,248,112,2, + 89,105,112,248,136,184,152,232,152,248,112,2,89,105,112,248, + 200,184,152,168,216,248,112,2,89,105,112,248,136,232,216,216, + 216,248,112,2,89,105,112,248,216,168,216,168,216,248,112,2, + 89,105,112,248,216,168,200,232,152,248,112,2,105,105,120,252, + 172,148,148,148,172,252,120,3,101,101,48,24,252,24,48,255, + 255,255,2,85,101,128,64,40,24,56,3,85,101,32,48,248, + 48,32,2,85,101,56,24,40,64,128,3,101,101,64,48,252, + 48,64,2,102,102,48,56,252,252,56,48,4,99,99,8,252, + 8,2,102,102,16,24,252,252,24,16,3,99,99,8,188,8, + 2,102,102,16,24,188,188,24,16,3,101,101,16,248,252,248, + 16,2,103,103,192,176,72,60,120,240,192,2,103,103,192,240, + 120,60,72,176,192,3,101,101,224,120,60,120,224,3,102,102, + 128,144,248,252,120,16,2,102,102,16,120,252,248,144,128,2, + 103,103,32,240,248,252,248,240,32,3,101,101,32,240,252,240, + 32,3,101,101,16,232,132,232,16,3,101,101,16,232,132,232, + 16,3,101,101,16,232,132,232,16,3,101,101,16,232,132,232, + 16,2,102,102,16,232,132,132,232,16,2,102,102,16,232,132, + 132,232,16,3,101,101,16,232,132,232,16,255,3,101,101,16, + 232,132,232,16,2,103,103,120,220,12,4,12,220,120,3,99, + 99,232,124,232,2,102,102,64,224,96,16,12,12,3,99,99, + 232,124,232,2,102,102,12,12,16,96,224,64,2,102,102,96, + 224,224,20,12,28,2,101,101,192,232,124,232,192,2,102,102, + 28,12,20,224,224,96,2,101,101,16,200,252,200,16,2,101, + 101,16,200,252,200,16,3,99,99,232,124,232,3,100,100,232, + 252,252,232,2,101,101,80,232,4,232,80,255,2,85,101,136, + 144,160,192,248,2,86,102,32,32,80,112,168,248,2,86,102, + 32,32,32,32,32,248,2,87,103,120,128,144,168,144,128,120, + 2,87,103,240,8,72,168,72,8,240,18,73,105,64,160,160, + 32,32,64,64,64,48,18,73,105,32,80,80,64,64,32,32, + 32,192,2,87,103,136,168,136,80,80,32,32,2,104,104,128, + 156,160,160,160,92,64,64,2,104,104,4,228,20,20,20,232, + 8,8,18,55,103,64,64,64,224,64,64,64,255,2,103,103, + 252,64,32,32,32,32,64,255,255,255,3,85,101,32,80,168, + 80,32,2,87,103,32,32,80,80,136,168,136,2,87,103,168, + 168,168,168,168,168,112,3,85,101,8,8,40,8,248,3,85, + 101,248,128,160,128,128,3,101,101,196,108,84,108,196,3,101, + 101,140,216,168,216,140,2,101,101,204,120,72,120,204,2,87, + 103,32,32,32,32,32,32,248,2,87,103,248,32,32,32,32, + 32,32,3,85,101,80,216,80,216,80,3,85,101,80,80,216, + 80,80,4,99,99,64,188,64,4,99,99,128,252,128,4,99, + 99,4,252,4,18,55,103,64,160,64,64,64,64,224,3,85, + 101,32,80,248,80,32,3,85,101,32,80,136,80,32,3,101, + 101,16,40,196,40,16,3,101,101,32,80,140,80,32,3,101, + 101,124,68,196,68,124,3,101,101,248,136,140,136,248,1,90, + 106,248,160,160,160,160,160,160,160,160,248,1,90,106,248,40, + 40,40,40,40,40,40,40,248,17,57,105,32,32,64,64,128, + 64,64,32,32,17,57,105,128,128,64,64,32,64,64,128,128, + 0,107,107,20,40,40,80,80,160,80,80,40,40,20,0,107, + 107,160,80,80,40,40,20,40,40,80,80,160,16,75,107,16, + 32,96,160,160,160,160,160,96,32,16,16,76,108,128,64,96, + 80,80,80,80,80,80,96,64,128,17,41,105,128,64,64,64, + 64,64,64,64,128,17,41,105,64,128,128,128,128,128,128,128, + 64,2,87,103,32,112,168,168,168,168,168,2,87,103,168,168, + 168,168,168,112,32,2,103,103,56,68,228,68,4,68,56,2, + 103,103,112,136,156,136,128,136,112,4,99,99,104,252,104,3, + 101,101,32,64,252,64,32,3,101,101,16,8,252,8,16,4, + 99,99,72,252,72,2,103,103,16,32,124,128,124,32,16,2, + 103,103,32,16,248,4,248,16,32,3,101,101,72,252,132,252, + 72,3,101,101,36,68,252,68,36,3,101,101,144,136,252,136, + 144,2,103,103,20,36,124,132,124,36,20,2,103,103,160,144, + 248,132,248,144,160,3,100,100,8,92,172,8}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h=10 x= 2 y=10 dx= 6 dy= 0 ascent=10 len=10 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12[1933] U8G_SECTION(".progmem.u8g_font_6x12") = { + 1,6,12,0,254,7,1,53,2,107,32,255,254,10,254,8, + 254,12,0,96,34,23,103,128,128,128,128,128,0,128,23,51, + 99,160,160,160,2,86,102,80,248,80,80,248,80,1,89,105, + 32,112,168,160,112,40,168,112,32,2,87,103,200,200,16,32, + 64,152,152,2,87,103,64,160,160,64,168,144,104,39,19,99, + 128,128,128,17,57,105,32,64,64,128,128,128,64,64,32,17, + 57,105,128,64,64,32,32,32,64,64,128,2,87,103,32,168, + 112,32,112,168,32,3,85,101,32,32,248,32,32,1,51,99, + 96,96,192,5,81,97,248,18,34,98,192,192,2,87,103,8, + 16,16,32,64,64,128,18,71,103,96,144,144,144,144,144,96, + 18,55,103,64,192,64,64,64,64,224,2,87,103,112,136,8, + 16,32,64,248,2,87,103,248,8,16,48,8,136,112,2,87, + 103,16,48,80,144,248,16,16,2,87,103,248,128,240,8,8, + 136,112,2,87,103,48,64,128,240,136,136,112,2,87,103,248, + 8,16,16,32,32,32,2,87,103,112,136,136,112,136,136,112, + 2,87,103,112,136,136,120,8,16,96,18,37,101,192,192,0, + 192,192,1,54,102,96,96,0,96,96,192,19,53,101,32,64, + 128,64,32,4,83,99,248,0,248,19,53,101,128,64,32,64, + 128,2,87,103,112,136,16,32,32,0,32,2,87,103,112,136, + 184,168,184,128,112,2,87,103,112,136,136,248,136,136,136,2, + 87,103,240,72,72,112,72,72,240,2,87,103,112,136,128,128, + 128,136,112,2,87,103,240,72,72,72,72,72,240,2,87,103, + 248,128,128,240,128,128,248,2,87,103,248,128,128,240,128,128, + 128,2,87,103,112,136,128,128,152,136,112,2,87,103,136,136, + 136,248,136,136,136,18,55,103,224,64,64,64,64,64,224,2, + 87,103,56,16,16,16,16,144,96,2,87,103,136,144,160,192, + 160,144,136,2,87,103,128,128,128,128,128,128,248,2,87,103, + 136,216,168,136,136,136,136,2,87,103,136,136,200,168,152,136, + 136,2,87,103,112,136,136,136,136,136,112,2,87,103,240,136, + 136,240,128,128,128,2,87,103,112,136,136,136,168,144,104,2, + 87,103,240,136,136,240,160,144,136,2,87,103,112,136,128,112, + 8,136,112,2,87,103,248,32,32,32,32,32,32,2,87,103, + 136,136,136,136,136,136,112,2,87,103,136,136,136,136,80,80, + 32,2,87,103,136,136,136,136,168,168,80,2,87,103,136,136, + 80,32,80,136,136,2,87,103,136,136,80,32,32,32,32,2, + 87,103,248,8,16,32,64,128,248,17,57,105,224,128,128,128, + 128,128,128,128,224,2,87,103,128,64,64,32,16,16,8,17, + 57,105,224,32,32,32,32,32,32,32,224,7,83,99,32,80, + 136,0,81,97,248,23,51,99,128,64,32,2,85,101,112,8, + 120,136,120,2,87,103,128,128,240,136,136,136,240,2,85,101, + 112,136,128,136,112,2,87,103,8,8,120,136,136,136,120,2, + 85,101,112,136,240,128,112,2,87,103,48,72,64,224,64,64, + 64,0,87,103,112,136,136,136,120,8,112,2,87,103,128,128, + 240,136,136,136,136,18,55,103,64,0,192,64,64,64,224,16, + 73,105,16,0,48,16,16,16,16,144,96,2,87,103,128,128, + 136,144,224,144,136,18,55,103,192,64,64,64,64,64,224,2, + 85,101,208,168,168,168,168,2,85,101,176,200,136,136,136,2, + 85,101,112,136,136,136,112,0,87,103,240,136,136,136,240,128, + 128,0,87,103,120,136,136,136,120,8,8,2,85,101,176,200, + 128,128,128,2,85,101,120,128,112,8,240,2,87,103,32,32, + 248,32,32,32,24,2,85,101,136,136,136,152,104,2,85,101, + 136,136,136,80,32,2,85,101,136,136,168,168,80,2,85,101, + 136,80,32,80,136,0,87,103,136,136,136,80,32,64,128,2, + 85,101,248,16,32,64,248,17,57,105,32,64,64,64,128,64, + 64,64,32,33,25,105,128,128,128,128,128,128,128,128,128,17, + 57,105,128,64,64,64,32,64,64,64,128,4,83,99,72,168, + 144,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,12,0,96,34,23,103,128,0,128,128,128,128,128,1, + 87,103,32,112,168,160,168,112,32,2,87,103,48,72,64,224, + 64,72,176,2,85,101,168,80,136,80,168,2,87,103,136,80, + 248,32,248,32,32,34,23,103,128,128,128,0,128,128,128,18, + 72,104,112,128,96,144,144,96,16,224,25,49,97,160,2,103, + 103,120,132,148,164,148,132,120,22,53,101,96,160,96,0,224, + 2,85,101,40,80,160,80,40,3,83,99,248,8,8,21,49, + 97,224,2,103,103,120,132,180,164,164,132,120,9,81,97,248, + 23,68,100,96,144,144,96,2,87,103,32,32,248,32,32,0, + 248,23,53,101,64,160,32,64,224,23,53,101,192,32,64,32, + 192,23,51,99,32,64,128,0,87,103,136,136,136,152,232,128, + 128,2,88,104,120,232,232,232,104,40,40,40,37,34,98,192, + 192,16,50,98,32,192,23,53,101,64,192,64,64,224,23,53, + 101,64,160,64,0,224,2,85,101,160,80,40,80,160,2,90, + 106,64,192,64,64,80,48,80,120,16,16,2,90,106,64,192, + 64,64,80,40,8,16,32,56,2,90,106,192,32,64,32,208, + 48,80,120,16,16,2,87,103,32,0,32,32,64,136,112,2, + 90,106,64,32,0,112,136,136,248,136,136,136,2,90,106,16, + 32,0,112,136,136,248,136,136,136,2,90,106,32,80,0,112, + 136,136,248,136,136,136,2,90,106,104,176,0,112,136,136,248, + 136,136,136,2,89,105,80,0,112,136,136,248,136,136,136,2, + 90,106,32,80,32,112,136,136,248,136,136,136,2,87,103,120, + 160,160,240,160,160,184,0,89,105,112,136,128,128,128,136,112, + 16,96,2,90,106,64,32,0,248,128,128,240,128,128,248,2, + 90,106,16,32,0,248,128,128,240,128,128,248,2,90,106,32, + 80,0,248,128,128,240,128,128,248,2,89,105,80,0,248,128, + 128,240,128,128,248,18,58,106,128,64,0,224,64,64,64,64, + 64,224,18,58,106,32,64,0,224,64,64,64,64,64,224,18, + 58,106,64,160,0,224,64,64,64,64,64,224,18,57,105,160, + 0,224,64,64,64,64,64,224,2,87,103,112,72,72,232,72, + 72,112,2,90,106,104,176,0,136,136,200,168,152,136,136,2, + 90,106,64,32,0,112,136,136,136,136,136,112,2,90,106,16, + 32,0,112,136,136,136,136,136,112,2,90,106,32,80,0,112, + 136,136,136,136,136,112,2,90,106,104,176,0,112,136,136,136, + 136,136,112,2,89,105,80,0,112,136,136,136,136,136,112,3, + 85,101,136,80,32,80,136,1,89,105,8,112,152,168,168,168, + 200,112,128,2,90,106,64,32,0,136,136,136,136,136,136,112, + 2,90,106,16,32,0,136,136,136,136,136,136,112,2,90,106, + 32,80,0,136,136,136,136,136,136,112,2,89,105,80,0,136, + 136,136,136,136,136,112,2,90,106,16,32,0,136,136,80,32, + 32,32,32,18,71,103,128,224,144,144,144,224,128,2,87,103, + 112,136,144,160,144,136,176,2,88,104,64,32,0,112,8,120, + 136,120,2,88,104,16,32,0,112,8,120,136,120,2,88,104, + 32,80,0,112,8,120,136,120,2,88,104,104,176,0,112,8, + 120,136,120,2,87,103,80,0,112,8,120,136,120,2,88,104, + 32,80,32,112,8,120,136,120,2,85,101,112,40,112,160,120, + 0,87,103,112,136,128,136,112,16,96,2,88,104,64,32,0, + 112,136,240,128,112,2,88,104,16,32,0,112,136,240,128,112, + 2,88,104,32,80,0,112,136,240,128,112,2,87,103,80,0, + 112,136,240,128,112,18,56,104,128,64,0,192,64,64,64,224, + 18,56,104,32,64,0,192,64,64,64,224,18,56,104,64,160, + 0,192,64,64,64,224,18,55,103,160,0,192,64,64,64,224, + 2,89,105,80,32,80,8,120,136,136,136,112,2,88,104,104, + 176,0,176,200,136,136,136,2,88,104,64,32,0,112,136,136, + 136,112,2,88,104,16,32,0,112,136,136,136,112,2,88,104, + 32,80,0,112,136,136,136,112,2,88,104,104,176,0,112,136, + 136,136,112,2,87,103,80,0,112,136,136,136,112,3,85,101, + 32,0,248,0,32,2,85,101,120,152,168,200,240,2,88,104, + 64,32,0,136,136,136,136,112,2,88,104,16,32,0,136,136, + 136,136,112,2,88,104,32,80,0,136,136,136,136,112,2,87, + 103,80,0,136,136,136,136,112,0,90,106,16,32,0,136,136, + 136,80,32,64,128,0,89,105,128,128,240,136,136,136,240,128, + 128,0,89,105,80,0,136,136,136,80,32,64,128}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 5 h= 9 x= 2 y=10 dx= 6 dy= 0 ascent=10 len= 9 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12r[898] U8G_SECTION(".progmem.u8g_font_6x12r") = { + 1,6,12,0,254,7,1,53,2,107,32,127,254,10,254,8, + 254,12,0,96,34,23,103,128,128,128,128,128,0,128,23,51, + 99,160,160,160,2,86,102,80,248,80,80,248,80,1,89,105, + 32,112,168,160,112,40,168,112,32,2,87,103,200,200,16,32, + 64,152,152,2,87,103,64,160,160,64,168,144,104,39,19,99, + 128,128,128,17,57,105,32,64,64,128,128,128,64,64,32,17, + 57,105,128,64,64,32,32,32,64,64,128,2,87,103,32,168, + 112,32,112,168,32,3,85,101,32,32,248,32,32,1,51,99, + 96,96,192,5,81,97,248,18,34,98,192,192,2,87,103,8, + 16,16,32,64,64,128,18,71,103,96,144,144,144,144,144,96, + 18,55,103,64,192,64,64,64,64,224,2,87,103,112,136,8, + 16,32,64,248,2,87,103,248,8,16,48,8,136,112,2,87, + 103,16,48,80,144,248,16,16,2,87,103,248,128,240,8,8, + 136,112,2,87,103,48,64,128,240,136,136,112,2,87,103,248, + 8,16,16,32,32,32,2,87,103,112,136,136,112,136,136,112, + 2,87,103,112,136,136,120,8,16,96,18,37,101,192,192,0, + 192,192,1,54,102,96,96,0,96,96,192,19,53,101,32,64, + 128,64,32,4,83,99,248,0,248,19,53,101,128,64,32,64, + 128,2,87,103,112,136,16,32,32,0,32,2,87,103,112,136, + 184,168,184,128,112,2,87,103,112,136,136,248,136,136,136,2, + 87,103,240,72,72,112,72,72,240,2,87,103,112,136,128,128, + 128,136,112,2,87,103,240,72,72,72,72,72,240,2,87,103, + 248,128,128,240,128,128,248,2,87,103,248,128,128,240,128,128, + 128,2,87,103,112,136,128,128,152,136,112,2,87,103,136,136, + 136,248,136,136,136,18,55,103,224,64,64,64,64,64,224,2, + 87,103,56,16,16,16,16,144,96,2,87,103,136,144,160,192, + 160,144,136,2,87,103,128,128,128,128,128,128,248,2,87,103, + 136,216,168,136,136,136,136,2,87,103,136,136,200,168,152,136, + 136,2,87,103,112,136,136,136,136,136,112,2,87,103,240,136, + 136,240,128,128,128,2,87,103,112,136,136,136,168,144,104,2, + 87,103,240,136,136,240,160,144,136,2,87,103,112,136,128,112, + 8,136,112,2,87,103,248,32,32,32,32,32,32,2,87,103, + 136,136,136,136,136,136,112,2,87,103,136,136,136,136,80,80, + 32,2,87,103,136,136,136,136,168,168,80,2,87,103,136,136, + 80,32,80,136,136,2,87,103,136,136,80,32,32,32,32,2, + 87,103,248,8,16,32,64,128,248,17,57,105,224,128,128,128, + 128,128,128,128,224,2,87,103,128,64,64,32,16,16,8,17, + 57,105,224,32,32,32,32,32,32,32,224,7,83,99,32,80, + 136,0,81,97,248,23,51,99,128,64,32,2,85,101,112,8, + 120,136,120,2,87,103,128,128,240,136,136,136,240,2,85,101, + 112,136,128,136,112,2,87,103,8,8,120,136,136,136,120,2, + 85,101,112,136,240,128,112,2,87,103,48,72,64,224,64,64, + 64,0,87,103,112,136,136,136,120,8,112,2,87,103,128,128, + 240,136,136,136,136,18,55,103,64,0,192,64,64,64,224,16, + 73,105,16,0,48,16,16,16,16,144,96,2,87,103,128,128, + 136,144,224,144,136,18,55,103,192,64,64,64,64,64,224,2, + 85,101,208,168,168,168,168,2,85,101,176,200,136,136,136,2, + 85,101,112,136,136,136,112,0,87,103,240,136,136,136,240,128, + 128,0,87,103,120,136,136,136,120,8,8,2,85,101,176,200, + 128,128,128,2,85,101,120,128,112,8,240,2,87,103,32,32, + 248,32,32,32,24,2,85,101,136,136,136,152,104,2,85,101, + 136,136,136,80,32,2,85,101,136,136,168,168,80,2,85,101, + 136,80,32,80,136,0,87,103,136,136,136,80,32,64,128,2, + 85,101,248,16,32,64,248,17,57,105,32,64,64,64,128,64, + 64,64,32,33,25,105,128,128,128,128,128,128,128,128,128,17, + 57,105,128,64,64,64,32,64,64,64,128,4,83,99,72,168, + 144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 9 + Calculated Max Values w= 6 h=13 x= 5 y= 9 dx= 6 dy= 0 ascent=11 len=13 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[2236] U8G_SECTION(".progmem.u8g_font_6x13_67_75") = { + 1,6,13,0,254,3,1,73,2,147,32,255,0,11,254,9, + 0,3,101,101,80,40,252,40,80,2,89,105,32,32,32,32, + 168,112,168,112,32,3,101,101,36,72,240,72,36,3,101,101, + 144,72,60,72,144,3,85,101,32,72,248,72,32,2,89,105, + 32,112,168,32,32,32,32,32,248,3,85,101,32,144,248,144, + 32,2,89,105,248,32,32,32,32,32,168,112,32,2,89,105, + 32,112,168,32,32,168,112,32,248,3,101,101,40,68,248,64, + 32,3,101,101,80,136,124,8,16,3,101,101,32,76,252,72, + 40,3,101,101,16,200,252,72,80,4,100,100,72,220,236,72, + 3,101,101,8,88,252,104,64,2,89,105,128,128,144,176,208, + 144,16,56,16,2,89,105,32,64,248,72,40,8,8,8,8, + 2,89,105,32,16,248,144,160,128,128,128,128,2,89,105,8, + 8,8,8,40,72,248,64,32,2,89,105,128,128,128,128,160, + 144,248,16,32,3,85,101,240,16,16,56,16,3,86,102,8, + 8,8,72,248,64,3,85,101,48,72,72,232,72,3,85,101, + 96,144,144,184,144,2,89,105,248,128,224,192,160,32,16,16, + 8,2,89,105,160,192,248,192,168,24,248,24,40,3,86,102, + 56,48,168,136,136,112,3,86,102,224,96,168,136,136,112,5, + 83,99,32,64,248,3,83,99,248,64,32,34,57,105,128,192, + 160,128,128,128,128,128,128,2,57,105,32,96,160,32,32,32, + 32,32,32,5,83,99,32,16,248,3,83,99,248,16,32,34, + 57,105,128,128,128,128,128,128,160,192,128,2,57,105,32,32, + 32,32,32,32,160,96,32,2,89,105,32,16,248,16,32,64, + 248,64,32,2,89,105,80,240,80,80,80,80,80,120,80,2, + 89,105,32,64,248,64,32,16,248,16,32,2,89,105,32,64, + 248,64,32,64,248,64,32,2,89,105,80,248,80,80,80,80, + 80,80,80,2,89,105,32,16,248,16,32,16,248,16,32,2, + 89,105,80,80,80,80,80,80,80,248,80,2,87,103,32,64, + 248,0,248,16,32,2,87,103,32,16,248,0,248,64,32,2, + 103,103,20,40,124,144,124,32,80,2,103,103,8,88,252,164, + 252,104,64,2,103,103,160,80,248,36,248,16,40,2,103,103, + 16,32,124,128,124,32,16,2,89,105,32,80,216,80,80,80, + 80,80,80,2,103,103,32,16,248,4,248,16,32,2,89,105, + 80,80,80,80,80,80,216,80,32,3,101,101,72,252,132,252, + 72,2,89,105,32,80,216,80,80,80,216,80,32,3,102,102, + 248,160,208,168,148,8,3,102,102,124,20,44,84,164,64,3, + 102,102,64,164,84,44,20,124,3,102,102,8,148,168,208,160, + 248,2,103,103,16,60,64,252,64,60,16,2,103,103,32,240, + 8,252,8,240,32,4,100,100,64,232,212,64,4,100,100,8, + 92,172,8,2,89,105,32,112,168,32,112,32,112,32,32,2, + 89,105,32,32,112,32,112,32,168,112,32,3,85,101,32,64, + 168,64,32,2,89,105,32,112,168,0,32,32,0,32,32,3, + 85,101,32,16,168,16,32,2,89,105,32,32,0,32,32,0, + 168,112,32,3,85,101,160,192,248,192,160,3,85,101,40,24, + 248,24,40,3,85,101,32,120,136,120,32,2,89,105,32,80, + 216,80,80,80,80,80,112,3,85,101,32,240,136,240,32,2, + 89,105,112,80,80,80,80,80,216,80,32,2,90,106,32,80, + 216,80,80,112,0,112,80,112,2,89,105,32,80,216,80,80, + 80,216,136,248,2,89,105,32,80,248,136,80,80,216,136,248, + 2,89,105,32,112,248,112,112,112,248,168,248,2,89,105,32, + 80,216,80,216,80,80,80,112,2,89,105,32,80,216,80,216, + 80,216,136,248,3,85,101,160,240,136,240,160,3,88,104,248, + 128,176,224,144,16,8,8,2,88,104,128,128,64,72,56,104, + 8,248,2,89,105,32,80,216,80,80,80,216,80,32,3,101, + 101,16,104,252,104,16,2,89,105,80,120,80,80,80,80,80, + 240,80,2,89,105,16,248,16,16,248,16,16,248,16,3,101, + 101,40,72,252,72,40,3,101,101,80,72,252,72,80,4,101, + 101,48,120,252,120,48,3,101,101,56,88,252,88,56,3,101, + 101,112,104,252,104,112,4,101,101,48,120,252,120,48,3,85, + 101,32,96,184,96,32,3,85,101,32,48,232,48,32,4,101, + 101,48,120,180,120,48,7,102,102,252,252,252,252,252,252,0, + 98,98,252,252,0,99,99,252,252,252,0,101,101,252,252,252, + 252,252,0,103,103,252,252,252,252,252,252,252,0,104,104,252, + 252,252,252,252,252,252,252,0,106,106,252,252,252,252,252,252, + 252,252,252,252,0,107,107,252,252,252,252,252,252,252,252,252, + 252,252,0,109,109,252,252,252,252,252,252,252,252,252,252,252, + 252,252,0,93,109,248,248,248,248,248,248,248,248,248,248,248, + 248,248,0,77,109,240,240,240,240,240,240,240,240,240,240,240, + 240,240,0,77,109,240,240,240,240,240,240,240,240,240,240,240, + 240,240,0,61,109,224,224,224,224,224,224,224,224,224,224,224, + 224,224,0,45,109,192,192,192,192,192,192,192,192,192,192,192, + 192,192,0,45,109,192,192,192,192,192,192,192,192,192,192,192, + 192,192,0,29,109,128,128,128,128,128,128,128,128,128,128,128, + 128,128,48,61,109,224,224,224,224,224,224,224,224,224,224,224, + 224,224,0,109,109,168,0,84,0,168,0,84,0,168,0,84, + 0,168,0,109,109,168,84,168,84,168,84,168,84,168,84,168, + 84,168,0,109,109,84,252,168,252,84,252,168,252,84,252,168, + 252,84,11,98,98,252,252,80,29,109,128,128,128,128,128,128, + 128,128,128,128,128,128,128,0,55,103,224,224,224,224,224,224, + 224,48,55,103,224,224,224,224,224,224,224,7,54,102,224,224, + 224,224,224,224,0,109,109,224,224,224,224,224,224,252,252,252, + 252,252,252,252,0,109,109,224,224,224,224,224,224,28,28,28, + 28,28,28,28,0,109,109,252,252,252,252,252,252,224,224,224, + 224,224,224,224,0,109,109,252,252,252,252,252,252,28,28,28, + 28,28,28,28,55,54,102,224,224,224,224,224,224,0,109,109, + 28,28,28,28,28,28,224,224,224,224,224,224,224,0,109,109, + 28,28,28,28,28,28,252,252,252,252,252,252,252,3,85,101, + 248,248,248,248,248,3,85,101,248,136,136,136,248,3,85,101, + 112,136,136,136,112,3,85,101,248,136,168,136,248,2,85,101, + 248,136,248,136,248,2,85,101,248,168,168,168,248,2,85,101, + 248,168,248,168,248,2,85,101,248,200,168,152,248,2,85,101, + 248,152,168,200,248,2,85,101,248,216,168,216,248,21,51,99, + 224,224,224,21,51,99,224,160,224,4,101,101,252,252,252,252, + 252,4,101,101,252,132,132,132,252,17,75,107,240,240,240,240, + 240,240,240,240,240,240,240,17,75,107,240,144,144,144,144,144, + 144,144,144,144,240,5,99,99,60,120,240,5,99,99,60,72, + 240,2,89,105,32,32,32,112,112,112,248,248,248,2,89,105, + 32,32,32,80,80,80,136,136,248,4,85,101,32,32,112,112, + 248,4,85,101,32,32,80,80,248,2,89,105,128,192,224,240, + 248,240,224,192,128,2,89,105,128,192,160,144,136,144,160,192, + 128,20,53,101,128,192,224,192,128,20,53,101,128,192,160,192, + 128,4,101,101,192,240,252,240,192,4,101,101,192,176,140,176, + 192,2,89,105,248,248,248,112,112,112,32,32,32,2,89,105, + 248,136,136,80,80,80,32,32,32,3,85,101,248,112,112,32, + 32,3,85,101,248,80,80,32,32,2,89,105,8,24,56,120, + 248,120,56,24,8,2,89,105,8,24,40,72,136,72,40,24, + 8,20,53,101,32,96,224,96,32,20,53,101,32,96,160,96, + 32,4,101,101,12,60,252,60,12,4,101,101,12,52,196,52, + 12,4,85,101,32,112,248,112,32,4,85,101,32,80,136,80, + 32,4,85,101,32,80,168,80,32,3,102,102,48,72,180,180, + 72,48,2,89,105,32,32,80,80,136,80,80,32,32,3,102, + 102,48,72,132,132,72,48,3,102,102,32,8,128,4,64,16, + 2,85,101,112,168,168,168,112,2,87,103,112,136,168,216,168, + 136,112,3,102,102,48,120,252,252,120,48,3,102,102,48,104, + 228,228,104,48,3,102,102,48,88,156,156,88,48,3,102,102, + 48,72,132,252,120,48,3,102,102,48,120,252,132,72,48,3, + 102,102,48,88,156,132,72,48,3,102,102,48,88,156,252,120, + 48,18,90,106,8,56,120,120,248,248,120,120,56,8,2,90, + 106,128,224,240,240,248,248,240,240,224,128,0,109,109,252,252, + 252,252,252,204,132,132,204,252,252,252,252,0,109,109,252,252, + 252,252,204,180,120,120,180,204,252,252,252,6,103,103,252,252, + 252,252,204,180,120,0,102,102,120,180,204,252,252,252,6,51, + 99,32,64,128,54,51,99,128,64,32,51,51,99,32,64,128, + 3,51,99,128,64,32,6,99,99,48,72,132,3,99,99,132, + 72,48,3,85,101,8,24,56,120,248,3,85,101,128,192,224, + 240,248,3,85,101,248,240,224,192,128,3,85,101,248,120,56, + 24,8,4,85,101,112,136,136,136,112,3,85,101,248,232,232, + 232,248,3,85,101,248,184,184,184,248,3,85,101,248,248,232, + 200,248,3,85,101,248,152,184,248,248,3,85,101,248,168,168, + 168,248,2,89,105,32,32,32,80,80,112,168,136,248,2,89, + 105,32,32,32,112,112,112,232,232,248,2,89,105,32,32,32, + 112,112,112,184,184,248,2,103,103,48,72,132,132,132,72,48, + 3,85,101,248,168,232,136,248,3,85,101,248,136,232,168,248, + 3,85,101,248,136,184,168,248,3,85,101,248,168,184,136,248, + 3,85,101,112,168,232,136,112,3,85,101,112,136,232,168,112, + 3,85,101,112,136,184,168,112,3,85,101,112,168,184,136,112, + 3,85,101,248,144,160,192,128,3,85,101,248,72,40,24,8, + 3,85,101,128,192,160,144,248,20,68,100,240,144,144,240,20, + 68,100,240,240,240,240,20,68,100,240,144,144,240,20,68,100, + 240,240,240,240,3,85,101,8,24,40,72,248}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 3 + Calculated Max Values w= 6 h=11 x= 1 y= 3 dx= 6 dy= 0 ascent=10 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_75r[447] U8G_SECTION(".progmem.u8g_font_6x13_75r") = { + 1,6,13,0,254,9,1,57,0,0,32,79,0,10,255,9, + 0,3,85,101,248,248,248,248,248,3,85,101,248,136,136,136, + 248,3,85,101,112,136,136,136,112,3,85,101,248,136,168,136, + 248,2,85,101,248,136,248,136,248,2,85,101,248,168,168,168, + 248,2,85,101,248,168,248,168,248,2,85,101,248,200,168,152, + 248,2,85,101,248,152,168,200,248,2,85,101,248,216,168,216, + 248,21,51,99,224,224,224,21,51,99,224,160,224,4,101,101, + 252,252,252,252,252,4,101,101,252,132,132,132,252,17,75,107, + 240,240,240,240,240,240,240,240,240,240,240,17,75,107,240,144, + 144,144,144,144,144,144,144,144,240,5,99,99,60,120,240,5, + 99,99,60,72,240,2,89,105,32,32,32,112,112,112,248,248, + 248,2,89,105,32,32,32,80,80,80,136,136,248,4,85,101, + 32,32,112,112,248,4,85,101,32,32,80,80,248,2,89,105, + 128,192,224,240,248,240,224,192,128,2,89,105,128,192,160,144, + 136,144,160,192,128,20,53,101,128,192,224,192,128,20,53,101, + 128,192,160,192,128,4,101,101,192,240,252,240,192,4,101,101, + 192,176,140,176,192,2,89,105,248,248,248,112,112,112,32,32, + 32,2,89,105,248,136,136,80,80,80,32,32,32,3,85,101, + 248,112,112,32,32,3,85,101,248,80,80,32,32,2,89,105, + 8,24,56,120,248,120,56,24,8,2,89,105,8,24,40,72, + 136,72,40,24,8,20,53,101,32,96,224,96,32,20,53,101, + 32,96,160,96,32,4,101,101,12,60,252,60,12,4,101,101, + 12,52,196,52,12,4,85,101,32,112,248,112,32,4,85,101, + 32,80,136,80,32,4,85,101,32,80,168,80,32,3,102,102, + 48,72,180,180,72,48,2,89,105,32,32,80,80,136,80,80, + 32,32,3,102,102,48,72,132,132,72,48,3,102,102,32,8, + 128,4,64,16,2,85,101,112,168,168,168,112,2,87,103,112, + 136,168,216,168,136,112,3,102,102,48,120,252,252,120,48}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 6 h=13 x= 2 y= 5 dx= 6 dy= 0 ascent=11 len=13 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[1470] U8G_SECTION(".progmem.u8g_font_6x13_78_79") = { + 1,6,13,0,254,7,1,42,2,11,32,255,0,11,254,10, + 0,2,87,103,112,32,168,248,168,32,112,255,2,104,104,48, + 48,48,252,252,48,48,48,2,89,105,32,112,32,168,248,168, + 32,112,32,2,89,105,32,112,32,168,248,168,32,112,32,2, + 89,105,32,112,32,168,248,168,32,112,32,4,85,101,32,112, + 248,112,32,4,85,101,32,80,136,80,32,255,4,86,102,32, + 32,248,80,112,136,2,89,105,112,216,216,0,136,136,112,248, + 112,4,86,102,32,32,248,80,112,136,4,86,102,32,32,248, + 112,112,136,4,86,102,32,32,248,112,112,136,4,86,102,32, + 32,248,112,112,136,4,86,102,32,32,248,112,112,136,4,102, + 102,48,48,252,88,120,204,3,87,103,32,168,112,112,112,168, + 32,3,87,103,32,168,112,80,112,168,32,3,87,103,32,168, + 112,248,112,168,32,3,87,103,32,168,112,248,112,168,32,3, + 87,103,32,168,112,248,112,168,32,3,87,103,32,168,112,112, + 112,168,32,3,87,103,80,80,248,32,248,80,80,3,87,103, + 80,112,248,112,248,112,80,255,255,3,87,103,32,168,168,112, + 168,168,32,3,87,103,32,168,168,80,168,168,32,3,87,103, + 32,168,168,112,168,168,32,3,87,103,32,168,168,80,168,168, + 32,4,85,101,32,248,80,112,216,255,255,255,3,87,103,32, + 168,168,112,168,168,32,3,87,103,32,168,168,112,168,168,32, + 3,87,103,32,168,168,112,168,168,32,3,87,103,32,168,168, + 112,168,168,32,3,87,103,32,168,112,248,112,168,32,3,87, + 103,32,168,112,248,112,168,32,3,87,103,32,168,168,112,168, + 168,32,3,87,103,32,168,112,248,112,168,32,3,87,103,32, + 168,112,248,112,168,32,255,2,102,102,120,140,140,140,140,120, + 255,2,102,102,248,136,140,140,252,60,2,102,102,60,252,140, + 140,136,248,2,102,102,248,140,140,140,252,124,2,102,102,124, + 252,140,140,140,248,255,255,255,2,89,105,32,112,32,80,248, + 80,32,112,32,255,34,25,105,128,128,128,128,128,128,128,128, + 128,18,57,105,224,224,224,224,224,224,224,224,224,2,89,105, + 248,248,248,248,248,248,248,248,248,23,53,101,96,128,224,224, + 64,23,53,101,64,224,224,32,192,7,101,101,108,144,252,252, + 72,7,101,101,72,252,252,36,216,255,255,2,106,106,8,124, + 232,232,120,8,104,104,72,48,18,57,105,64,224,224,64,64, + 0,64,224,64,2,89,105,80,248,248,112,32,0,32,112,32, + 2,87,103,80,248,248,248,112,32,32,2,103,103,96,240,248, + 124,248,240,96,2,89,105,104,176,16,216,248,240,96,104,48, + 2,104,104,64,144,184,124,92,188,184,80,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,2,89,105,112,248,216,152, + 216,216,136,248,112,2,89,105,112,248,216,168,232,216,136,248, + 112,2,89,105,112,248,216,168,216,232,152,248,112,2,89,105, + 112,248,184,184,152,136,216,248,112,2,89,105,112,248,136,184, + 152,232,152,248,112,2,89,105,112,248,200,184,152,168,216,248, + 112,2,89,105,112,248,136,232,216,216,216,248,112,2,89,105, + 112,248,216,168,216,168,216,248,112,2,89,105,112,248,216,168, + 200,232,152,248,112,2,105,105,120,252,172,148,148,148,172,252, + 120,2,89,105,112,136,168,232,168,168,168,136,112,2,89,105, + 112,136,168,216,152,168,248,136,112,2,89,105,112,136,168,216, + 168,152,232,136,112,2,89,105,112,136,200,200,232,248,168,136, + 112,2,89,105,112,136,248,200,232,152,232,136,112,2,89,105, + 112,136,184,200,232,216,168,136,112,2,89,105,112,136,248,152, + 168,168,168,136,112,2,89,105,112,136,168,216,168,216,168,136, + 112,2,89,105,112,136,168,216,184,152,232,136,112,2,105,105, + 120,132,212,236,236,236,212,132,120,2,89,105,112,248,216,152, + 216,216,216,248,112,2,89,105,112,248,216,168,232,216,136,248, + 112,2,89,105,112,248,216,168,216,232,152,248,112,2,89,105, + 112,248,184,184,152,136,216,248,112,2,89,105,112,248,136,184, + 152,232,152,248,112,2,89,105,112,248,200,184,152,168,216,248, + 112,2,89,105,112,248,136,232,216,216,216,248,112,2,89,105, + 112,248,216,168,216,168,216,248,112,2,89,105,112,248,216,168, + 200,232,152,248,112,2,105,105,120,252,172,148,148,148,172,252, + 120,4,102,102,48,24,252,252,24,48,255,255,255,4,85,101, + 128,64,40,24,56,4,85,101,32,48,248,48,32,4,85,101, + 56,24,40,64,128,3,103,103,64,32,48,252,48,32,64,3, + 104,104,32,48,24,252,252,24,48,32,4,101,101,16,24,252, + 24,16,4,102,102,16,24,252,252,24,16,4,102,102,16,24, + 188,188,24,16,3,103,103,32,48,184,188,184,48,32,3,103, + 103,32,48,248,252,248,48,32,255,255,4,101,101,192,112,60, + 112,192,3,103,103,32,176,248,252,120,48,32,3,103,103,32, + 48,120,252,248,176,32,0,109,109,32,32,48,240,248,248,252, + 248,248,240,48,32,32,255,255,255,255,255,255,255,255,255,255, + 1,107,107,120,252,220,204,4,0,4,204,220,248,120,255,4, + 102,102,32,32,224,20,12,28,4,101,101,144,200,124,200,144, + 4,102,102,28,12,20,224,32,32,4,102,102,32,32,224,20, + 12,28,4,101,101,144,200,124,200,144,4,102,102,28,12,20, + 224,32,32,4,101,101,16,8,252,8,16,4,101,101,16,200, + 252,200,16,5,99,99,232,124,232,4,101,101,208,216,124,216, + 208,2,105,105,160,80,40,244,4,244,40,80,160,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,1,91,107,248,160,160,160,160,160,160,160,160, + 160,248,1,91,107,248,40,40,40,40,40,40,40,40,40,248, + 17,75,107,16,32,32,64,64,128,64,64,32,32,16,17,75, + 107,128,64,64,32,32,16,32,32,64,64,128,1,107,107,20, + 40,40,80,80,160,80,80,40,40,20,1,107,107,160,80,80, + 40,40,20,40,40,80,80,160,255,255,255,255,255,255,255,255, + 255,3,101,101,32,64,252,64,32,3,101,101,16,8,252,8, + 16,4,99,99,72,252,72,2,103,103,16,32,124,128,124,32, + 16,2,103,103,32,16,248,4,248,16,32,3,101,101,72,252, + 132,252,72,3,101,101,36,68,252,68,36,3,101,101,144,136, + 252,136,144,2,103,103,20,36,124,132,124,36,20,2,103,103, + 160,144,248,132,248,144,160,4,100,100,8,92,172,8}; +/* + Fontname: -Misc-Fixed-Bold-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13B[2171] U8G_SECTION(".progmem.u8g_font_6x13B") = { + 1,6,13,0,254,9,1,99,2,211,32,255,254,11,254,10, + 254,13,0,96,34,41,105,192,192,192,192,192,192,192,0,192, + 8,83,99,216,216,216,3,103,103,120,120,252,120,252,120,120, + 3,103,103,48,120,240,120,60,120,48,2,105,105,108,252,120, + 24,48,96,120,252,216,2,103,103,96,240,240,96,252,216,124, + 40,35,99,192,192,192,17,75,107,48,96,96,192,192,192,192, + 192,96,96,48,17,75,107,192,96,96,48,48,48,48,48,96, + 96,192,4,101,101,204,120,252,120,204,4,101,101,48,48,252, + 48,48,17,67,99,112,96,192,6,97,97,252,17,67,99,96, + 240,96,2,105,105,12,12,24,24,48,96,96,192,192,2,105, + 105,48,120,204,204,204,204,204,120,48,2,105,105,48,112,240, + 48,48,48,48,48,252,2,105,105,120,204,204,12,24,48,96, + 192,252,2,105,105,252,12,24,48,120,12,12,204,120,2,105, + 105,24,24,56,120,88,216,252,24,24,2,105,105,252,192,192, + 248,236,12,12,204,120,2,105,105,56,96,192,192,248,236,204, + 204,120,2,105,105,252,12,24,24,48,48,96,96,96,2,105, + 105,120,204,204,204,120,204,204,204,120,2,105,105,120,204,204, + 220,124,12,12,24,112,18,72,104,96,240,96,0,0,96,240, + 96,17,72,104,96,240,96,0,0,112,96,192,2,105,105,12, + 24,48,96,192,96,48,24,12,4,100,100,252,0,0,252,2, + 105,105,192,96,48,24,12,24,48,96,192,2,105,105,120,204, + 204,12,24,48,48,0,48,2,105,105,120,204,204,220,252,252, + 248,192,124,2,105,105,48,120,204,204,204,252,204,204,204,2, + 105,105,248,108,108,108,120,108,108,108,248,2,105,105,120,204, + 192,192,192,192,192,204,120,2,105,105,248,108,108,108,108,108, + 108,108,248,2,105,105,252,192,192,192,248,192,192,192,252,2, + 105,105,252,192,192,192,248,192,192,192,192,2,105,105,120,204, + 192,192,192,220,204,204,120,2,105,105,204,204,204,204,252,204, + 204,204,204,18,73,105,240,96,96,96,96,96,96,96,240,2, + 105,105,60,12,12,12,12,12,12,204,120,2,105,105,204,204, + 216,240,224,240,216,204,204,2,105,105,192,192,192,192,192,192, + 192,192,252,2,105,105,204,204,252,252,252,204,204,204,204,2, + 105,105,204,236,236,252,252,220,220,204,204,2,105,105,120,204, + 204,204,204,204,204,204,120,2,105,105,248,204,204,204,248,192, + 192,192,192,1,106,106,120,204,204,204,204,204,204,252,120,12, + 2,105,105,248,204,204,204,248,240,216,204,204,2,105,105,120, + 204,192,192,120,12,12,204,120,2,105,105,252,48,48,48,48, + 48,48,48,48,2,105,105,204,204,204,204,204,204,204,204,120, + 2,105,105,204,204,204,204,120,120,120,48,48,2,105,105,204, + 204,204,204,252,252,252,252,204,2,105,105,204,204,120,120,48, + 120,120,204,204,2,105,105,204,204,120,120,48,48,48,48,48, + 2,105,105,252,12,24,24,48,96,96,192,252,17,75,107,240, + 192,192,192,192,192,192,192,192,192,240,2,105,105,192,192,96, + 96,48,24,24,12,12,17,75,107,240,48,48,48,48,48,48, + 48,48,48,240,8,99,99,48,120,204,1,97,97,252,26,50, + 98,192,96,2,102,102,120,12,124,204,220,108,2,105,105,192, + 192,192,216,236,204,204,236,216,2,102,102,120,204,192,192,204, + 120,2,105,105,12,12,12,108,220,204,204,220,108,2,102,102, + 120,204,252,192,192,120,2,105,105,56,108,96,96,248,96,96, + 96,96,0,104,104,124,216,216,112,192,120,204,120,2,105,105, + 192,192,192,216,236,204,204,204,204,18,73,105,96,96,0,224, + 96,96,96,96,240,0,91,107,24,24,0,56,24,24,24,24, + 216,216,112,2,105,105,192,192,192,216,240,224,240,216,204,18, + 73,105,224,96,96,96,96,96,96,96,240,2,102,102,248,252, + 252,252,252,204,2,102,102,216,236,204,204,204,204,2,102,102, + 120,204,204,204,204,120,0,104,104,216,236,204,236,216,192,192, + 192,0,104,104,108,220,204,220,108,12,12,12,2,102,102,216, + 236,192,192,192,192,2,102,102,120,204,112,24,204,120,2,104, + 104,96,96,248,96,96,96,108,56,2,102,102,204,204,204,204, + 220,108,2,102,102,204,204,204,120,120,48,2,102,102,204,204, + 252,252,252,72,2,102,102,204,120,48,48,120,204,0,104,104, + 204,204,204,220,108,12,204,120,2,102,102,252,24,48,96,192, + 252,1,91,107,56,96,96,96,48,224,48,96,96,96,56,34, + 41,105,192,192,192,192,192,192,192,192,192,1,91,107,224,48, + 48,48,96,56,96,48,48,48,224,8,83,99,104,248,144,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 13,0,96,34,42,106,192,192,0,192,192,192,192,192,192,192, + 3,104,104,16,120,212,208,208,212,120,16,2,105,105,56,108, + 96,96,248,96,96,100,248,3,102,102,204,252,72,72,252,204, + 2,105,105,204,204,120,120,252,48,252,48,48,34,42,106,192, + 192,192,192,0,0,192,192,192,192,2,106,106,120,204,192,120, + 204,204,120,12,204,120,9,98,98,204,204,2,105,105,120,204, + 180,236,228,236,180,204,120,4,103,103,248,12,252,140,252,0, + 252,3,103,103,52,104,208,160,208,104,52,4,100,100,252,252, + 4,4,22,65,97,240,2,105,105,120,204,188,172,188,180,172, + 204,120,9,82,98,248,248,7,100,100,120,204,204,120,2,105, + 105,48,48,252,252,48,48,0,252,252,6,70,102,224,176,48, + 96,192,240,6,70,102,224,176,96,48,176,224,26,50,98,96, + 192,0,104,104,204,204,204,204,204,252,128,128,2,105,105,124, + 252,244,244,244,116,52,52,52,38,34,98,192,192,16,50,98, + 96,192,6,70,102,96,224,96,96,96,240,5,87,103,112,248, + 136,248,112,0,248,3,103,103,176,88,44,20,44,88,176,2, + 106,106,96,224,96,96,100,252,28,52,60,12,2,106,106,96, + 224,96,96,120,236,12,24,48,60,2,106,106,224,176,96,48, + 180,236,28,52,60,12,2,106,106,48,48,0,48,48,96,192, + 204,204,120,2,106,106,96,48,0,48,120,204,204,252,204,204, + 2,106,106,24,48,0,48,120,204,204,252,204,204,2,106,106, + 56,108,0,48,120,204,204,252,204,204,2,106,106,52,88,0, + 48,120,204,204,252,204,204,2,106,106,204,204,0,48,120,204, + 204,252,204,204,2,106,106,48,72,120,48,120,204,204,252,204, + 204,2,105,105,124,176,176,176,184,240,240,176,188,0,107,107, + 120,204,192,192,192,192,192,204,120,48,96,2,106,106,96,48, + 0,252,192,192,248,192,192,252,2,106,106,24,48,0,252,192, + 192,248,192,192,252,2,106,106,56,108,0,252,192,192,248,192, + 192,252,2,106,106,204,204,0,252,192,192,248,192,192,252,18, + 74,106,192,96,0,240,96,96,96,96,96,240,18,74,106,48, + 96,0,240,96,96,96,96,96,240,2,90,106,112,216,0,120, + 48,48,48,48,48,120,2,106,106,204,204,0,120,48,48,48, + 48,48,120,2,105,105,248,108,108,108,236,108,108,108,248,2, + 106,106,52,88,0,204,236,236,252,220,220,204,2,106,106,96, + 48,0,120,204,204,204,204,204,120,2,106,106,24,48,0,120, + 204,204,204,204,204,120,2,106,106,56,108,0,120,204,204,204, + 204,204,120,2,106,106,52,88,0,120,204,204,204,204,204,120, + 2,106,106,204,204,0,120,204,204,204,204,204,120,3,101,101, + 204,120,48,120,204,1,105,105,4,120,220,220,204,236,236,120, + 128,2,106,106,96,48,0,204,204,204,204,204,204,120,2,106, + 106,24,48,0,204,204,204,204,204,204,120,2,106,106,56,108, + 0,204,204,204,204,204,204,120,2,106,106,108,108,0,204,204, + 204,204,204,204,120,2,106,106,24,48,0,204,72,120,48,48, + 48,48,2,105,105,192,248,204,204,204,248,192,192,192,1,105, + 105,120,204,204,248,204,204,204,248,128,2,105,105,96,48,0, + 120,12,124,204,220,108,2,105,105,24,48,0,120,12,124,204, + 220,108,2,105,105,56,108,0,120,12,124,204,220,108,2,105, + 105,52,88,0,120,12,124,204,220,108,2,105,105,108,108,0, + 120,12,124,204,220,108,2,106,106,56,40,56,0,120,12,124, + 204,220,108,2,102,102,120,52,120,176,180,104,0,104,104,120, + 204,192,192,204,120,48,96,2,105,105,96,48,0,120,204,252, + 192,192,120,2,105,105,24,48,0,120,204,252,192,192,120,2, + 105,105,56,108,0,120,204,252,192,192,120,2,105,105,108,108, + 0,120,204,252,192,192,120,18,73,105,192,96,0,224,96,96, + 96,96,240,18,73,105,48,96,0,224,96,96,96,96,240,2, + 89,105,112,216,0,112,48,48,48,48,120,2,89,105,216,216, + 0,112,48,48,48,48,120,2,106,106,216,112,240,152,120,204, + 204,204,204,120,2,105,105,52,88,0,216,236,204,204,204,204, + 2,105,105,96,48,0,120,204,204,204,204,120,2,105,105,24, + 48,0,120,204,204,204,204,120,2,105,105,56,108,0,120,204, + 204,204,204,120,2,105,105,52,88,0,120,204,204,204,204,120, + 2,105,105,204,204,0,120,204,204,204,204,120,3,103,103,48, + 48,0,252,0,48,48,1,105,105,4,120,204,220,204,236,204, + 120,128,2,105,105,96,48,0,204,204,204,204,220,108,2,105, + 105,24,48,0,204,204,204,204,220,108,2,105,105,56,108,0, + 204,204,204,204,220,108,2,105,105,204,204,0,204,204,204,204, + 220,108,0,107,107,24,48,0,204,204,204,220,108,12,204,120, + 0,106,106,192,192,216,236,204,236,216,192,192,192,0,107,107, + 204,204,0,204,204,204,220,108,12,204,120}; +/* + Fontname: -Misc-Fixed-Bold-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13Br[1040] U8G_SECTION(".progmem.u8g_font_6x13Br") = { + 1,6,13,0,254,9,1,99,2,211,32,127,254,11,254,10, + 254,13,0,96,34,41,105,192,192,192,192,192,192,192,0,192, + 8,83,99,216,216,216,3,103,103,120,120,252,120,252,120,120, + 3,103,103,48,120,240,120,60,120,48,2,105,105,108,252,120, + 24,48,96,120,252,216,2,103,103,96,240,240,96,252,216,124, + 40,35,99,192,192,192,17,75,107,48,96,96,192,192,192,192, + 192,96,96,48,17,75,107,192,96,96,48,48,48,48,48,96, + 96,192,4,101,101,204,120,252,120,204,4,101,101,48,48,252, + 48,48,17,67,99,112,96,192,6,97,97,252,17,67,99,96, + 240,96,2,105,105,12,12,24,24,48,96,96,192,192,2,105, + 105,48,120,204,204,204,204,204,120,48,2,105,105,48,112,240, + 48,48,48,48,48,252,2,105,105,120,204,204,12,24,48,96, + 192,252,2,105,105,252,12,24,48,120,12,12,204,120,2,105, + 105,24,24,56,120,88,216,252,24,24,2,105,105,252,192,192, + 248,236,12,12,204,120,2,105,105,56,96,192,192,248,236,204, + 204,120,2,105,105,252,12,24,24,48,48,96,96,96,2,105, + 105,120,204,204,204,120,204,204,204,120,2,105,105,120,204,204, + 220,124,12,12,24,112,18,72,104,96,240,96,0,0,96,240, + 96,17,72,104,96,240,96,0,0,112,96,192,2,105,105,12, + 24,48,96,192,96,48,24,12,4,100,100,252,0,0,252,2, + 105,105,192,96,48,24,12,24,48,96,192,2,105,105,120,204, + 204,12,24,48,48,0,48,2,105,105,120,204,204,220,252,252, + 248,192,124,2,105,105,48,120,204,204,204,252,204,204,204,2, + 105,105,248,108,108,108,120,108,108,108,248,2,105,105,120,204, + 192,192,192,192,192,204,120,2,105,105,248,108,108,108,108,108, + 108,108,248,2,105,105,252,192,192,192,248,192,192,192,252,2, + 105,105,252,192,192,192,248,192,192,192,192,2,105,105,120,204, + 192,192,192,220,204,204,120,2,105,105,204,204,204,204,252,204, + 204,204,204,18,73,105,240,96,96,96,96,96,96,96,240,2, + 105,105,60,12,12,12,12,12,12,204,120,2,105,105,204,204, + 216,240,224,240,216,204,204,2,105,105,192,192,192,192,192,192, + 192,192,252,2,105,105,204,204,252,252,252,204,204,204,204,2, + 105,105,204,236,236,252,252,220,220,204,204,2,105,105,120,204, + 204,204,204,204,204,204,120,2,105,105,248,204,204,204,248,192, + 192,192,192,1,106,106,120,204,204,204,204,204,204,252,120,12, + 2,105,105,248,204,204,204,248,240,216,204,204,2,105,105,120, + 204,192,192,120,12,12,204,120,2,105,105,252,48,48,48,48, + 48,48,48,48,2,105,105,204,204,204,204,204,204,204,204,120, + 2,105,105,204,204,204,204,120,120,120,48,48,2,105,105,204, + 204,204,204,252,252,252,252,204,2,105,105,204,204,120,120,48, + 120,120,204,204,2,105,105,204,204,120,120,48,48,48,48,48, + 2,105,105,252,12,24,24,48,96,96,192,252,17,75,107,240, + 192,192,192,192,192,192,192,192,192,240,2,105,105,192,192,96, + 96,48,24,24,12,12,17,75,107,240,48,48,48,48,48,48, + 48,48,48,240,8,99,99,48,120,204,1,97,97,252,26,50, + 98,192,96,2,102,102,120,12,124,204,220,108,2,105,105,192, + 192,192,216,236,204,204,236,216,2,102,102,120,204,192,192,204, + 120,2,105,105,12,12,12,108,220,204,204,220,108,2,102,102, + 120,204,252,192,192,120,2,105,105,56,108,96,96,248,96,96, + 96,96,0,104,104,124,216,216,112,192,120,204,120,2,105,105, + 192,192,192,216,236,204,204,204,204,18,73,105,96,96,0,224, + 96,96,96,96,240,0,91,107,24,24,0,56,24,24,24,24, + 216,216,112,2,105,105,192,192,192,216,240,224,240,216,204,18, + 73,105,224,96,96,96,96,96,96,96,240,2,102,102,248,252, + 252,252,252,204,2,102,102,216,236,204,204,204,204,2,102,102, + 120,204,204,204,204,120,0,104,104,216,236,204,236,216,192,192, + 192,0,104,104,108,220,204,220,108,12,12,12,2,102,102,216, + 236,192,192,192,192,2,102,102,120,204,112,24,204,120,2,104, + 104,96,96,248,96,96,96,108,56,2,102,102,204,204,204,204, + 220,108,2,102,102,204,204,204,120,120,48,2,102,102,204,204, + 252,252,252,72,2,102,102,204,120,48,48,120,204,0,104,104, + 204,204,204,220,108,12,204,120,2,102,102,252,24,48,96,192, + 252,1,91,107,56,96,96,96,48,224,48,96,96,96,56,34, + 41,105,192,192,192,192,192,192,192,192,192,1,91,107,224,48, + 48,48,96,56,96,48,48,48,224,8,83,99,104,248,144,255 + }; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 5 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13[2160] U8G_SECTION(".progmem.u8g_font_6x13") = { + 1,6,13,0,254,9,1,102,2,214,32,255,254,11,254,10, + 254,13,0,96,34,25,105,128,128,128,128,128,128,128,0,128, + 24,51,99,160,160,160,3,87,103,80,80,248,80,248,80,80, + 2,89,105,32,120,160,160,112,40,40,240,32,2,89,105,72, + 168,80,16,32,64,80,168,144,2,88,104,64,160,160,64,160, + 152,144,104,40,19,99,128,128,128,17,59,107,32,64,64,128, + 128,128,128,128,64,64,32,17,59,107,128,64,64,32,32,32, + 32,32,64,64,128,6,85,101,32,168,112,168,32,4,85,101, + 32,32,248,32,32,17,51,99,96,64,128,6,81,97,248,17, + 51,99,64,224,64,2,89,105,8,8,16,16,32,64,64,128, + 128,2,89,105,32,80,136,136,136,136,136,80,32,2,89,105, + 32,96,160,32,32,32,32,32,248,2,89,105,112,136,136,8, + 16,32,64,128,248,2,89,105,248,8,16,32,112,8,8,136, + 112,2,89,105,16,16,48,80,80,144,248,16,16,2,89,105, + 248,128,128,176,200,8,8,136,112,2,89,105,112,136,128,128, + 240,136,136,136,112,2,89,105,248,8,16,16,32,32,64,64, + 64,2,89,105,112,136,136,136,112,136,136,136,112,2,89,105, + 112,136,136,136,120,8,8,136,112,17,56,104,64,224,64,0, + 0,64,224,64,17,56,104,64,224,64,0,0,96,64,128,2, + 89,105,8,16,32,64,128,64,32,16,8,4,84,100,248,0, + 0,248,2,89,105,128,64,32,16,8,16,32,64,128,2,89, + 105,112,136,136,8,16,32,32,0,32,2,89,105,112,136,136, + 152,168,168,176,128,120,2,89,105,32,80,136,136,136,248,136, + 136,136,2,89,105,240,72,72,72,112,72,72,72,240,2,89, + 105,112,136,128,128,128,128,128,136,112,2,89,105,240,72,72, + 72,72,72,72,72,240,2,89,105,248,128,128,128,240,128,128, + 128,248,2,89,105,248,128,128,128,240,128,128,128,128,2,89, + 105,112,136,128,128,128,152,136,136,112,2,89,105,136,136,136, + 136,248,136,136,136,136,18,57,105,224,64,64,64,64,64,64, + 64,224,2,89,105,56,16,16,16,16,16,16,144,96,2,89, + 105,136,136,144,160,192,160,144,136,136,2,89,105,128,128,128, + 128,128,128,128,128,248,2,89,105,136,136,216,168,168,136,136, + 136,136,2,89,105,136,200,200,168,168,152,152,136,136,2,89, + 105,112,136,136,136,136,136,136,136,112,2,89,105,240,136,136, + 136,240,128,128,128,128,1,90,106,112,136,136,136,136,136,136, + 168,112,8,2,89,105,240,136,136,136,240,160,144,136,136,2, + 89,105,112,136,128,128,112,8,8,136,112,2,89,105,248,32, + 32,32,32,32,32,32,32,2,89,105,136,136,136,136,136,136, + 136,136,112,2,89,105,136,136,136,136,80,80,80,32,32,2, + 89,105,136,136,136,136,168,168,168,168,80,2,89,105,136,136, + 80,80,32,80,80,136,136,2,89,105,136,136,80,80,32,32, + 32,32,32,2,89,105,248,8,16,16,32,64,64,128,248,17, + 59,107,224,128,128,128,128,128,128,128,128,128,224,2,89,105, + 128,128,64,64,32,16,16,8,8,17,59,107,224,32,32,32, + 32,32,32,32,32,32,224,8,83,99,32,80,136,1,81,97, + 248,42,34,98,128,64,2,86,102,112,8,120,136,152,104,2, + 89,105,128,128,128,240,136,136,136,136,240,2,86,102,112,136, + 128,128,136,112,2,89,105,8,8,8,120,136,136,136,136,120, + 2,86,102,112,136,248,128,136,112,2,89,105,48,72,64,64, + 240,64,64,64,64,0,88,104,112,136,136,136,120,8,136,112, + 2,89,105,128,128,128,176,200,136,136,136,136,18,56,104,64, + 0,192,64,64,64,64,224,0,74,106,16,0,48,16,16,16, + 16,144,144,96,2,89,105,128,128,128,144,160,192,160,144,136, + 18,57,105,192,64,64,64,64,64,64,64,224,2,86,102,208, + 168,168,168,168,136,2,86,102,176,200,136,136,136,136,2,86, + 102,112,136,136,136,136,112,0,88,104,240,136,136,136,240,128, + 128,128,0,88,104,120,136,136,136,120,8,8,8,2,86,102, + 176,200,128,128,128,128,2,86,102,112,136,96,16,136,112,2, + 88,104,64,64,240,64,64,64,72,48,2,86,102,136,136,136, + 136,152,104,2,86,102,136,136,136,80,80,32,2,86,102,136, + 136,168,168,168,80,2,86,102,136,80,32,32,80,136,0,88, + 104,136,136,136,152,104,8,136,112,2,86,102,248,16,32,64, + 128,248,1,91,107,24,32,32,32,32,192,32,32,32,32,24, + 34,25,105,128,128,128,128,128,128,128,128,128,1,91,107,192, + 32,32,32,32,24,32,32,32,32,192,8,83,99,72,168,144, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,13,0,96,34,25,105,128,0,128,128,128,128,128,128,128, + 3,88,104,32,112,168,160,160,168,112,32,2,89,105,48,72, + 64,64,224,64,64,72,176,3,86,102,136,112,80,80,112,136, + 2,89,105,136,136,80,80,248,32,248,32,32,34,25,105,128, + 128,128,128,0,128,128,128,128,18,74,106,96,144,128,96,144, + 144,96,16,144,96,26,50,98,160,160,3,89,105,112,136,168, + 216,200,216,168,136,112,4,87,103,112,8,120,136,120,0,248, + 3,86,102,40,80,160,160,80,40,4,83,99,248,8,8,22, + 49,97,224,3,89,105,112,136,232,216,216,232,216,136,112,10, + 81,97,248,23,68,100,96,144,144,96,3,87,103,32,32,248, + 32,32,0,248,7,53,101,64,160,32,64,224,7,53,101,64, + 160,64,32,192,42,34,98,64,128,0,88,104,136,136,136,136, + 152,232,128,128,2,89,105,120,232,232,232,232,104,40,40,40, + 38,33,97,192,32,34,98,64,128,7,53,101,64,192,64,64, + 224,4,87,103,112,136,136,136,112,0,248,3,86,102,160,80, + 40,40,80,160,2,90,106,64,192,64,64,224,8,24,40,56, + 8,2,90,106,64,192,64,64,224,16,40,8,16,56,2,90, + 106,64,160,64,32,160,72,24,40,56,8,2,89,105,32,0, + 32,32,64,128,136,136,112,2,90,106,64,32,0,32,80,136, + 136,248,136,136,2,90,106,16,32,0,32,80,136,136,248,136, + 136,2,90,106,48,72,0,32,80,136,136,248,136,136,2,90, + 106,40,80,0,32,80,136,136,248,136,136,2,90,106,80,80, + 0,32,80,136,136,248,136,136,2,90,106,32,80,32,32,80, + 136,136,248,136,136,2,89,105,88,160,160,160,176,224,160,160, + 184,0,91,107,112,136,128,128,128,128,128,136,112,32,64,2, + 90,106,64,32,0,248,128,128,240,128,128,248,2,90,106,16, + 32,0,248,128,128,240,128,128,248,2,90,106,48,72,0,248, + 128,128,240,128,128,248,2,90,106,80,80,0,248,128,128,240, + 128,128,248,18,58,106,128,64,0,224,64,64,64,64,64,224, + 18,58,106,32,64,0,224,64,64,64,64,64,224,18,74,106, + 96,144,0,224,64,64,64,64,64,224,18,58,106,160,160,0, + 224,64,64,64,64,64,224,2,89,105,240,72,72,72,232,72, + 72,72,240,2,90,106,40,80,0,136,136,200,168,152,136,136, + 2,90,106,64,32,0,112,136,136,136,136,136,112,2,90,106, + 16,32,0,112,136,136,136,136,136,112,2,90,106,48,72,0, + 112,136,136,136,136,136,112,2,90,106,40,80,0,112,136,136, + 136,136,136,112,2,90,106,80,80,0,112,136,136,136,136,136, + 112,3,85,101,136,80,32,80,136,1,91,107,8,112,152,152, + 168,168,168,200,200,112,128,2,90,106,64,32,0,136,136,136, + 136,136,136,112,2,90,106,16,32,0,136,136,136,136,136,136, + 112,2,90,106,48,72,0,136,136,136,136,136,136,112,2,90, + 106,80,80,0,136,136,136,136,136,136,112,2,90,106,16,32, + 0,136,136,80,32,32,32,32,2,89,105,128,240,136,136,136, + 240,128,128,128,2,89,105,96,144,144,160,160,144,136,136,176, + 2,89,105,64,32,0,112,8,120,136,152,104,2,89,105,16, + 32,0,112,8,120,136,152,104,2,89,105,48,72,0,112,8, + 120,136,152,104,2,89,105,40,80,0,112,8,120,136,152,104, + 2,89,105,80,80,0,112,8,120,136,152,104,2,90,106,48, + 72,48,0,112,8,120,136,152,104,2,86,102,112,40,112,160, + 168,80,0,88,104,112,136,128,128,136,112,32,64,2,89,105, + 64,32,0,112,136,248,128,136,112,2,89,105,16,32,0,112, + 136,248,128,136,112,2,89,105,48,72,0,112,136,248,128,136, + 112,2,89,105,80,80,0,112,136,248,128,136,112,18,57,105, + 128,64,0,192,64,64,64,64,224,18,57,105,32,64,0,192, + 64,64,64,64,224,18,73,105,96,144,0,192,64,64,64,64, + 224,18,57,105,160,160,0,192,64,64,64,64,224,2,90,106, + 80,32,96,16,112,136,136,136,136,112,2,89,105,40,80,0, + 176,200,136,136,136,136,2,89,105,64,32,0,112,136,136,136, + 136,112,2,89,105,16,32,0,112,136,136,136,136,112,2,89, + 105,48,72,0,112,136,136,136,136,112,2,89,105,40,80,0, + 112,136,136,136,136,112,2,89,105,80,80,0,112,136,136,136, + 136,112,3,87,103,32,32,0,248,0,32,32,1,88,104,8, + 112,152,168,168,200,112,128,2,89,105,64,32,0,136,136,136, + 136,152,104,2,89,105,16,32,0,136,136,136,136,152,104,2, + 89,105,48,72,0,136,136,136,136,152,104,2,89,105,80,80, + 0,136,136,136,136,152,104,0,91,107,16,32,0,136,136,136, + 152,104,8,136,112,0,90,106,128,128,176,200,136,136,200,176, + 128,128,0,91,107,80,80,0,136,136,136,152,104,8,136,112 + }; +/* + Fontname: -Misc-Fixed-Medium-O-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13O[2162] U8G_SECTION(".progmem.u8g_font_6x13O") = { + 1,6,13,0,254,9,1,104,2,216,32,255,254,11,254,10, + 254,13,0,96,34,41,105,64,64,64,64,128,128,128,0,128, + 40,67,99,80,80,160,3,103,103,40,40,124,40,248,80,80, + 2,105,105,16,60,80,80,56,36,40,240,32,2,105,105,36, + 84,40,8,16,32,80,168,144,2,104,104,16,40,40,48,80, + 148,152,104,56,35,99,64,64,128,17,75,107,16,32,64,64, + 128,128,128,128,64,64,32,17,75,107,64,32,32,16,16,16, + 16,32,32,64,128,3,103,103,16,84,124,56,124,168,32,20, + 69,101,32,32,240,64,64,17,51,99,96,64,128,22,65,97, + 240,17,51,99,64,224,64,2,105,105,4,4,8,16,16,32, + 64,128,128,2,105,105,16,40,68,68,68,136,136,80,32,2, + 89,105,16,48,80,16,16,32,32,32,248,2,105,105,56,68, + 68,8,16,32,64,128,248,2,105,105,124,4,8,16,56,4, + 8,136,112,2,89,105,8,8,24,40,40,72,248,16,16,2, + 105,105,124,64,64,88,100,4,8,136,112,2,105,105,56,68, + 64,64,112,136,136,136,112,18,89,105,248,8,16,16,32,64, + 64,128,128,2,105,105,56,68,68,68,120,136,136,136,112,2, + 105,105,56,68,68,68,56,8,8,136,112,17,72,104,32,112, + 32,0,0,64,224,64,17,72,104,32,112,32,0,0,96,64, + 128,18,89,105,8,16,32,64,128,64,64,32,16,4,100,100, + 124,0,0,248,2,105,105,64,32,16,8,4,8,48,64,128, + 18,89,105,112,136,136,8,16,32,64,0,64,2,105,105,56, + 68,68,88,168,168,144,128,120,2,105,105,16,40,68,68,68, + 248,136,136,136,2,105,105,120,36,36,36,56,72,72,72,240, + 2,105,105,56,68,64,64,64,128,128,136,112,2,105,105,120, + 36,36,36,36,72,72,72,240,2,105,105,124,64,64,64,120, + 128,128,128,248,2,105,105,124,64,64,64,120,128,128,128,128, + 2,105,105,56,68,64,64,64,152,136,136,112,2,105,105,68, + 68,68,68,124,136,136,136,136,18,73,105,112,32,32,32,32, + 64,64,64,224,2,105,105,28,8,8,8,8,16,16,144,96, + 2,105,105,68,68,72,80,96,160,144,136,136,2,89,105,64, + 64,64,64,64,128,128,128,248,2,105,105,68,68,108,84,84, + 136,136,136,136,2,105,105,68,100,100,84,84,152,136,136,136, + 2,105,105,56,68,68,68,68,136,136,136,112,2,105,105,120, + 68,68,68,120,128,128,128,128,1,106,106,56,68,68,68,68, + 136,136,168,112,8,2,105,105,120,68,68,68,120,144,144,136, + 136,2,105,105,56,68,64,64,48,8,8,136,112,18,89,105, + 248,32,32,32,32,64,64,64,64,2,105,105,68,68,68,68, + 68,136,136,136,112,18,89,105,136,136,136,136,144,144,160,160, + 64,2,105,105,68,68,68,68,168,168,168,168,80,2,105,105, + 68,68,40,40,16,48,72,136,136,18,89,105,136,136,80,80, + 32,32,64,64,64,2,105,105,124,4,8,8,16,32,64,128, + 248,1,91,107,56,32,32,32,64,64,64,128,128,128,224,18, + 73,105,128,128,64,64,64,32,32,16,16,1,91,107,56,8, + 8,8,16,16,16,32,32,32,224,24,83,99,32,80,136,1, + 81,97,248,58,34,98,128,64,2,102,102,56,4,124,136,152, + 104,2,105,105,64,64,64,120,68,136,136,136,240,2,102,102, + 56,68,128,128,136,112,2,105,105,4,4,4,60,68,136,136, + 136,120,2,102,102,56,68,124,128,136,112,18,89,105,48,72, + 64,64,240,64,128,128,128,0,104,104,56,68,68,136,120,8, + 136,112,2,105,105,32,32,32,88,100,68,136,136,136,18,56, + 104,32,0,96,32,32,64,64,224,0,90,106,8,0,24,8, + 8,16,16,144,144,96,2,89,105,32,32,32,72,80,96,160, + 144,136,18,73,105,48,16,16,32,32,32,64,64,224,2,102, + 102,104,84,84,168,168,136,2,102,102,88,100,68,136,136,136, + 2,102,102,56,68,68,136,136,112,0,104,104,120,68,68,136, + 240,128,128,128,0,104,104,60,68,132,136,120,8,16,16,2, + 102,102,88,100,64,128,128,128,2,102,102,56,68,32,16,136, + 112,18,72,104,32,32,240,64,64,128,144,96,2,102,102,68, + 68,136,136,152,104,18,86,102,136,136,136,144,160,64,2,102, + 102,68,68,84,168,168,80,2,102,102,68,40,16,32,80,136, + 0,104,104,68,68,136,152,104,8,144,96,2,102,102,124,8, + 16,96,128,248,1,91,107,24,32,32,32,32,192,32,64,64, + 64,48,34,41,105,64,64,64,64,64,128,128,128,128,1,107, + 107,96,16,16,16,16,12,16,32,32,32,192,24,83,99,72, + 168,144,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,13,0,96,34,41,105,64,0,64,64,64,128,128, + 128,128,3,104,104,16,56,84,80,160,168,112,32,2,105,105, + 24,36,32,32,112,32,64,72,176,3,102,102,68,56,40,80, + 112,136,2,105,105,68,68,40,40,124,32,248,32,32,34,41, + 105,64,64,64,64,0,128,128,128,128,18,90,106,48,72,64, + 48,72,72,48,16,144,96,58,50,98,160,160,2,105,105,56, + 68,84,108,100,216,168,136,112,4,103,103,56,4,124,136,120, + 0,248,19,86,102,40,80,160,160,160,80,20,83,99,248,8, + 16,38,49,97,224,3,105,105,56,68,116,108,108,232,216,136, + 112,26,81,97,248,23,68,100,96,144,144,96,19,71,103,32, + 32,240,64,64,0,240,23,69,101,32,80,32,64,224,23,69, + 101,96,16,96,32,192,58,34,98,64,128,0,104,104,36,36, + 68,72,88,168,128,128,18,89,105,120,232,232,232,232,80,80, + 80,80,54,33,97,192,32,34,98,64,128,23,53,101,32,96, + 64,64,224,4,103,103,56,68,68,136,112,0,248,19,86,102, + 80,40,40,40,80,160,18,90,106,32,96,64,64,224,8,56, + 80,112,16,18,90,106,32,96,64,64,224,16,40,16,32,112, + 18,90,106,96,16,96,32,192,8,56,80,112,16,2,89,105, + 16,0,16,16,32,64,136,136,112,2,106,106,32,16,0,16, + 40,68,68,248,136,136,2,106,106,8,16,0,16,40,68,68, + 248,136,136,2,106,106,24,36,0,16,40,68,68,248,136,136, + 2,106,106,20,40,0,16,40,68,68,248,136,136,2,106,106, + 40,40,0,16,40,68,68,248,136,136,2,106,106,16,40,16, + 16,40,68,68,248,136,136,2,105,105,44,80,80,80,88,224, + 160,160,184,0,107,107,56,68,64,64,64,128,128,136,112,32, + 64,2,106,106,32,16,0,124,64,64,120,128,128,248,2,106, + 106,8,16,0,124,64,64,120,128,128,248,2,106,106,24,36, + 0,124,64,64,120,128,128,248,2,106,106,40,40,0,124,64, + 64,120,128,128,248,18,74,106,64,32,0,112,32,32,32,64, + 64,224,18,74,106,16,32,0,112,32,32,32,64,64,224,18, + 90,106,48,72,0,112,32,32,32,64,64,224,18,74,106,80, + 80,0,112,32,32,32,64,64,224,2,105,105,120,36,36,36, + 116,36,72,72,240,2,106,106,20,40,0,68,68,100,88,136, + 136,136,2,106,106,32,16,0,56,68,68,68,136,136,112,2, + 106,106,8,16,0,56,68,68,68,136,136,112,2,106,106,24, + 36,0,56,68,68,68,136,136,112,2,106,106,20,40,0,56, + 68,68,68,136,136,112,2,106,106,40,40,0,56,68,68,68, + 136,136,112,3,101,101,68,40,48,80,136,1,107,107,4,60, + 76,76,84,84,168,232,232,112,128,2,106,106,32,16,0,68, + 68,68,136,136,136,112,2,106,106,8,16,0,68,68,68,136, + 136,136,112,2,106,106,24,36,0,68,68,68,136,136,136,112, + 2,106,106,40,40,0,68,68,68,136,136,136,112,18,90,106, + 16,32,0,136,136,80,32,64,64,64,2,105,105,64,120,68, + 68,72,240,128,128,128,2,89,105,48,72,72,80,80,144,136, + 136,176,2,105,105,32,16,0,56,4,124,136,152,104,2,105, + 105,8,16,0,56,4,124,136,152,104,2,105,105,24,36,0, + 56,4,124,136,152,104,2,105,105,20,40,0,56,4,124,136, + 152,104,2,105,105,40,40,0,56,4,124,136,152,104,2,106, + 106,24,36,24,0,56,4,124,136,152,104,2,102,102,56,20, + 120,160,168,80,0,104,104,56,68,64,128,136,112,32,64,2, + 105,105,32,16,0,56,68,124,128,136,112,2,105,105,8,16, + 0,56,68,124,128,136,112,2,105,105,24,36,0,56,68,124, + 128,136,112,2,105,105,40,40,0,56,68,124,128,136,112,18, + 57,105,64,32,0,96,32,32,64,64,224,18,73,105,16,32, + 0,96,32,32,64,64,224,18,89,105,48,72,0,96,32,32, + 64,64,224,18,73,105,80,80,0,96,32,32,64,64,224,2, + 106,106,32,24,48,8,56,68,68,136,136,112,2,105,105,20, + 40,0,88,100,68,136,136,136,2,105,105,32,16,0,56,68, + 68,136,136,112,2,105,105,8,16,0,56,68,68,136,136,112, + 2,105,105,24,36,0,56,68,68,136,136,112,2,105,105,20, + 40,0,56,68,68,136,136,112,2,105,105,40,40,0,56,68, + 68,136,136,112,19,87,103,32,32,0,248,0,64,64,1,104, + 104,4,56,76,84,168,200,112,128,2,105,105,32,16,0,68, + 68,68,136,152,104,2,105,105,8,16,0,68,68,68,136,152, + 104,2,105,105,24,36,0,68,68,68,136,152,104,2,105,105, + 40,40,0,68,68,68,136,152,104,0,107,107,8,16,0,68, + 68,136,152,104,8,144,96,0,106,106,64,64,88,100,68,136, + 200,176,128,128,0,107,107,40,40,0,68,68,136,152,104,8, + 144,96}; +/* + Fontname: -Misc-Fixed-Medium-O-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13Or[1043] U8G_SECTION(".progmem.u8g_font_6x13Or") = { + 1,6,13,0,254,9,1,104,2,216,32,127,254,11,254,10, + 254,13,0,96,34,41,105,64,64,64,64,128,128,128,0,128, + 40,67,99,80,80,160,3,103,103,40,40,124,40,248,80,80, + 2,105,105,16,60,80,80,56,36,40,240,32,2,105,105,36, + 84,40,8,16,32,80,168,144,2,104,104,16,40,40,48,80, + 148,152,104,56,35,99,64,64,128,17,75,107,16,32,64,64, + 128,128,128,128,64,64,32,17,75,107,64,32,32,16,16,16, + 16,32,32,64,128,3,103,103,16,84,124,56,124,168,32,20, + 69,101,32,32,240,64,64,17,51,99,96,64,128,22,65,97, + 240,17,51,99,64,224,64,2,105,105,4,4,8,16,16,32, + 64,128,128,2,105,105,16,40,68,68,68,136,136,80,32,2, + 89,105,16,48,80,16,16,32,32,32,248,2,105,105,56,68, + 68,8,16,32,64,128,248,2,105,105,124,4,8,16,56,4, + 8,136,112,2,89,105,8,8,24,40,40,72,248,16,16,2, + 105,105,124,64,64,88,100,4,8,136,112,2,105,105,56,68, + 64,64,112,136,136,136,112,18,89,105,248,8,16,16,32,64, + 64,128,128,2,105,105,56,68,68,68,120,136,136,136,112,2, + 105,105,56,68,68,68,56,8,8,136,112,17,72,104,32,112, + 32,0,0,64,224,64,17,72,104,32,112,32,0,0,96,64, + 128,18,89,105,8,16,32,64,128,64,64,32,16,4,100,100, + 124,0,0,248,2,105,105,64,32,16,8,4,8,48,64,128, + 18,89,105,112,136,136,8,16,32,64,0,64,2,105,105,56, + 68,68,88,168,168,144,128,120,2,105,105,16,40,68,68,68, + 248,136,136,136,2,105,105,120,36,36,36,56,72,72,72,240, + 2,105,105,56,68,64,64,64,128,128,136,112,2,105,105,120, + 36,36,36,36,72,72,72,240,2,105,105,124,64,64,64,120, + 128,128,128,248,2,105,105,124,64,64,64,120,128,128,128,128, + 2,105,105,56,68,64,64,64,152,136,136,112,2,105,105,68, + 68,68,68,124,136,136,136,136,18,73,105,112,32,32,32,32, + 64,64,64,224,2,105,105,28,8,8,8,8,16,16,144,96, + 2,105,105,68,68,72,80,96,160,144,136,136,2,89,105,64, + 64,64,64,64,128,128,128,248,2,105,105,68,68,108,84,84, + 136,136,136,136,2,105,105,68,100,100,84,84,152,136,136,136, + 2,105,105,56,68,68,68,68,136,136,136,112,2,105,105,120, + 68,68,68,120,128,128,128,128,1,106,106,56,68,68,68,68, + 136,136,168,112,8,2,105,105,120,68,68,68,120,144,144,136, + 136,2,105,105,56,68,64,64,48,8,8,136,112,18,89,105, + 248,32,32,32,32,64,64,64,64,2,105,105,68,68,68,68, + 68,136,136,136,112,18,89,105,136,136,136,136,144,144,160,160, + 64,2,105,105,68,68,68,68,168,168,168,168,80,2,105,105, + 68,68,40,40,16,48,72,136,136,18,89,105,136,136,80,80, + 32,32,64,64,64,2,105,105,124,4,8,8,16,32,64,128, + 248,1,91,107,56,32,32,32,64,64,64,128,128,128,224,18, + 73,105,128,128,64,64,64,32,32,16,16,1,91,107,56,8, + 8,8,16,16,16,32,32,32,224,24,83,99,32,80,136,1, + 81,97,248,58,34,98,128,64,2,102,102,56,4,124,136,152, + 104,2,105,105,64,64,64,120,68,136,136,136,240,2,102,102, + 56,68,128,128,136,112,2,105,105,4,4,4,60,68,136,136, + 136,120,2,102,102,56,68,124,128,136,112,18,89,105,48,72, + 64,64,240,64,128,128,128,0,104,104,56,68,68,136,120,8, + 136,112,2,105,105,32,32,32,88,100,68,136,136,136,18,56, + 104,32,0,96,32,32,64,64,224,0,90,106,8,0,24,8, + 8,16,16,144,144,96,2,89,105,32,32,32,72,80,96,160, + 144,136,18,73,105,48,16,16,32,32,32,64,64,224,2,102, + 102,104,84,84,168,168,136,2,102,102,88,100,68,136,136,136, + 2,102,102,56,68,68,136,136,112,0,104,104,120,68,68,136, + 240,128,128,128,0,104,104,60,68,132,136,120,8,16,16,2, + 102,102,88,100,64,128,128,128,2,102,102,56,68,32,16,136, + 112,18,72,104,32,32,240,64,64,128,144,96,2,102,102,68, + 68,136,136,152,104,18,86,102,136,136,136,144,160,64,2,102, + 102,68,68,84,168,168,80,2,102,102,68,40,16,32,80,136, + 0,104,104,68,68,136,152,104,8,144,96,2,102,102,124,8, + 16,96,128,248,1,91,107,24,32,32,32,32,192,32,64,64, + 64,48,34,41,105,64,64,64,64,64,128,128,128,128,1,107, + 107,96,16,16,16,16,12,16,32,32,32,192,24,83,99,72, + 168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 5 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13r[1041] U8G_SECTION(".progmem.u8g_font_6x13r") = { + 1,6,13,0,254,9,1,102,2,214,32,127,254,11,254,10, + 254,13,0,96,34,25,105,128,128,128,128,128,128,128,0,128, + 24,51,99,160,160,160,3,87,103,80,80,248,80,248,80,80, + 2,89,105,32,120,160,160,112,40,40,240,32,2,89,105,72, + 168,80,16,32,64,80,168,144,2,88,104,64,160,160,64,160, + 152,144,104,40,19,99,128,128,128,17,59,107,32,64,64,128, + 128,128,128,128,64,64,32,17,59,107,128,64,64,32,32,32, + 32,32,64,64,128,6,85,101,32,168,112,168,32,4,85,101, + 32,32,248,32,32,17,51,99,96,64,128,6,81,97,248,17, + 51,99,64,224,64,2,89,105,8,8,16,16,32,64,64,128, + 128,2,89,105,32,80,136,136,136,136,136,80,32,2,89,105, + 32,96,160,32,32,32,32,32,248,2,89,105,112,136,136,8, + 16,32,64,128,248,2,89,105,248,8,16,32,112,8,8,136, + 112,2,89,105,16,16,48,80,80,144,248,16,16,2,89,105, + 248,128,128,176,200,8,8,136,112,2,89,105,112,136,128,128, + 240,136,136,136,112,2,89,105,248,8,16,16,32,32,64,64, + 64,2,89,105,112,136,136,136,112,136,136,136,112,2,89,105, + 112,136,136,136,120,8,8,136,112,17,56,104,64,224,64,0, + 0,64,224,64,17,56,104,64,224,64,0,0,96,64,128,2, + 89,105,8,16,32,64,128,64,32,16,8,4,84,100,248,0, + 0,248,2,89,105,128,64,32,16,8,16,32,64,128,2,89, + 105,112,136,136,8,16,32,32,0,32,2,89,105,112,136,136, + 152,168,168,176,128,120,2,89,105,32,80,136,136,136,248,136, + 136,136,2,89,105,240,72,72,72,112,72,72,72,240,2,89, + 105,112,136,128,128,128,128,128,136,112,2,89,105,240,72,72, + 72,72,72,72,72,240,2,89,105,248,128,128,128,240,128,128, + 128,248,2,89,105,248,128,128,128,240,128,128,128,128,2,89, + 105,112,136,128,128,128,152,136,136,112,2,89,105,136,136,136, + 136,248,136,136,136,136,18,57,105,224,64,64,64,64,64,64, + 64,224,2,89,105,56,16,16,16,16,16,16,144,96,2,89, + 105,136,136,144,160,192,160,144,136,136,2,89,105,128,128,128, + 128,128,128,128,128,248,2,89,105,136,136,216,168,168,136,136, + 136,136,2,89,105,136,200,200,168,168,152,152,136,136,2,89, + 105,112,136,136,136,136,136,136,136,112,2,89,105,240,136,136, + 136,240,128,128,128,128,1,90,106,112,136,136,136,136,136,136, + 168,112,8,2,89,105,240,136,136,136,240,160,144,136,136,2, + 89,105,112,136,128,128,112,8,8,136,112,2,89,105,248,32, + 32,32,32,32,32,32,32,2,89,105,136,136,136,136,136,136, + 136,136,112,2,89,105,136,136,136,136,80,80,80,32,32,2, + 89,105,136,136,136,136,168,168,168,168,80,2,89,105,136,136, + 80,80,32,80,80,136,136,2,89,105,136,136,80,80,32,32, + 32,32,32,2,89,105,248,8,16,16,32,64,64,128,248,17, + 59,107,224,128,128,128,128,128,128,128,128,128,224,2,89,105, + 128,128,64,64,32,16,16,8,8,17,59,107,224,32,32,32, + 32,32,32,32,32,32,224,8,83,99,32,80,136,1,81,97, + 248,42,34,98,128,64,2,86,102,112,8,120,136,152,104,2, + 89,105,128,128,128,240,136,136,136,136,240,2,86,102,112,136, + 128,128,136,112,2,89,105,8,8,8,120,136,136,136,136,120, + 2,86,102,112,136,248,128,136,112,2,89,105,48,72,64,64, + 240,64,64,64,64,0,88,104,112,136,136,136,120,8,136,112, + 2,89,105,128,128,128,176,200,136,136,136,136,18,56,104,64, + 0,192,64,64,64,64,224,0,74,106,16,0,48,16,16,16, + 16,144,144,96,2,89,105,128,128,128,144,160,192,160,144,136, + 18,57,105,192,64,64,64,64,64,64,64,224,2,86,102,208, + 168,168,168,168,136,2,86,102,176,200,136,136,136,136,2,86, + 102,112,136,136,136,136,112,0,88,104,240,136,136,136,240,128, + 128,128,0,88,104,120,136,136,136,120,8,8,8,2,86,102, + 176,200,128,128,128,128,2,86,102,112,136,96,16,136,112,2, + 88,104,64,64,240,64,64,64,72,48,2,86,102,136,136,136, + 136,152,104,2,86,102,136,136,136,80,80,32,2,86,102,136, + 136,168,168,168,80,2,86,102,136,80,32,32,80,136,0,88, + 104,136,136,136,152,104,8,136,112,2,86,102,248,16,32,64, + 128,248,1,91,107,24,32,32,32,32,192,32,32,32,32,24, + 34,25,105,128,128,128,128,128,128,128,128,128,1,91,107,192, + 32,32,32,32,24,32,32,32,32,192,8,83,99,72,168,144, + 255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w= 7 h=13 x= 6 y= 9 dx= 7 dy= 0 ascent=11 len=13 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[2197] U8G_SECTION(".progmem.u8g_font_7x13_67_75") = { + 1,7,13,0,254,3,1,91,2,178,32,255,0,11,254,10, + 0,4,117,117,72,36,254,36,72,18,89,121,32,32,32,168, + 112,32,168,112,32,4,101,117,36,72,248,72,36,4,101,117, + 144,72,124,72,144,4,101,117,36,68,252,68,36,18,89,121, + 32,112,168,32,32,32,32,32,248,4,101,117,144,136,252,136, + 144,18,89,121,248,32,32,32,32,32,168,112,32,18,89,121, + 32,112,168,32,32,168,112,32,248,4,117,117,36,66,252,64, + 32,4,117,117,72,132,126,4,8,4,117,117,36,74,252,72, + 40,4,117,117,72,164,126,36,40,4,117,117,40,84,238,68, + 40,4,117,117,40,84,254,84,40,2,106,122,64,64,128,152, + 104,8,16,84,56,16,2,106,122,32,64,252,68,36,4,4, + 4,4,4,2,106,122,16,8,252,136,144,128,128,128,128,128, + 2,106,122,4,4,4,4,4,36,68,252,64,32,2,106,122, + 128,128,128,128,128,144,136,252,8,16,2,104,120,240,16,16, + 16,16,84,56,16,2,90,122,8,8,8,8,8,40,72,248, + 64,32,4,119,119,28,34,34,34,170,112,32,4,119,119,112, + 136,136,136,170,28,8,2,120,120,254,0,224,192,160,16,8, + 4,2,121,121,144,160,254,160,146,10,254,10,18,4,119,119, + 72,156,170,136,136,136,112,4,119,119,36,114,170,34,34,34, + 28,6,99,115,32,64,252,4,99,115,252,64,32,50,57,121, + 128,192,160,128,128,128,128,128,128,18,57,121,32,96,160,32, + 32,32,32,32,32,6,99,115,16,8,252,4,99,115,252,8, + 16,50,57,121,128,128,128,128,128,128,160,192,128,18,57,121, + 32,32,32,32,32,32,160,96,32,2,105,121,16,8,252,8, + 48,64,252,64,32,2,122,122,40,120,168,40,40,40,40,42, + 60,40,2,105,121,32,64,252,64,48,8,252,8,16,2,105, + 121,32,64,252,64,32,64,252,64,32,2,121,121,68,238,68, + 68,68,68,68,68,68,2,105,121,16,8,252,8,16,8,252, + 8,16,2,122,122,68,68,68,68,68,68,68,68,238,68,3, + 103,119,32,64,252,0,252,8,16,3,103,119,16,8,252,0, + 252,64,32,3,119,119,16,34,126,132,126,40,16,4,117,117, + 40,124,146,124,40,3,119,119,16,40,252,66,252,136,16,3, + 119,119,16,32,126,128,126,32,16,2,121,121,16,40,108,170, + 40,40,40,40,40,3,119,119,16,8,252,2,252,8,16,2, + 121,121,40,40,40,40,40,170,108,40,16,4,117,117,40,124, + 130,124,40,2,122,122,16,40,108,170,40,40,170,108,40,16, + 2,119,119,252,144,136,196,162,144,8,2,119,119,126,18,34, + 70,138,18,32,2,119,119,32,18,138,70,34,18,126,2,119, + 119,8,144,162,196,136,144,252,2,121,121,8,16,62,64,254, + 64,62,16,8,2,121,121,32,16,248,4,254,4,248,16,32, + 4,117,117,32,72,254,68,32,4,117,117,8,36,254,68,8, + 18,89,121,32,112,168,32,248,32,248,32,32,18,89,121,32, + 32,248,32,248,32,168,112,32,3,119,119,16,32,64,182,64, + 32,16,2,122,122,16,40,84,146,0,16,16,0,16,16,3, + 119,119,16,8,4,218,4,8,16,2,122,122,16,16,0,16, + 16,0,146,84,40,16,4,117,117,144,160,254,160,144,4,117, + 117,18,10,254,10,18,3,119,119,16,48,94,130,94,48,16, + 2,121,121,16,40,68,238,40,40,40,40,56,3,119,119,16, + 24,244,130,244,24,16,2,121,121,56,40,40,40,40,238,68, + 40,16,1,124,124,16,40,68,238,40,40,40,56,0,56,40, + 56,1,122,122,16,40,68,238,40,40,40,108,68,124,1,122, + 122,16,40,68,254,40,40,40,108,68,124,1,122,122,16,40, + 68,254,56,56,56,124,68,124,2,121,121,16,40,68,238,68, + 238,40,40,56,1,122,122,16,40,68,238,68,238,40,108,68, + 124,3,119,119,144,152,244,130,244,152,144,2,119,119,254,128, + 188,176,168,164,130,2,119,119,130,74,42,26,122,2,254,2, + 121,121,16,40,68,238,40,238,68,40,16,255,255,255,255,255, + 255,255,255,255,255,255,255,7,118,118,254,254,254,254,254,254, + 0,114,114,254,254,0,115,115,254,254,254,0,117,117,254,254, + 254,254,254,0,119,119,254,254,254,254,254,254,254,0,120,120, + 254,254,254,254,254,254,254,254,0,122,122,254,254,254,254,254, + 254,254,254,254,254,0,123,123,254,254,254,254,254,254,254,254, + 254,254,254,0,125,125,254,254,254,254,254,254,254,254,254,254, + 254,254,254,0,109,125,252,252,252,252,252,252,252,252,252,252, + 252,252,252,0,93,125,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,77,125,240,240,240,240,240,240,240,240,240,240, + 240,240,240,0,77,125,240,240,240,240,240,240,240,240,240,240, + 240,240,240,0,61,125,224,224,224,224,224,224,224,224,224,224, + 224,224,224,0,45,125,192,192,192,192,192,192,192,192,192,192, + 192,192,192,0,29,125,128,128,128,128,128,128,128,128,128,128, + 128,128,128,64,61,125,224,224,224,224,224,224,224,224,224,224, + 224,224,224,1,123,123,84,0,170,0,84,0,170,0,84,0, + 170,0,125,125,170,84,170,84,170,84,170,84,170,84,170,84, + 170,0,125,125,254,84,254,170,254,84,254,170,254,84,254,170, + 254,11,114,114,254,254,96,29,125,128,128,128,128,128,128,128, + 128,128,128,128,128,128,0,71,119,240,240,240,240,240,240,240, + 64,55,119,224,224,224,224,224,224,224,7,70,118,240,240,240, + 240,240,240,0,125,125,240,240,240,240,240,240,254,254,254,254, + 254,254,254,0,125,125,240,240,240,240,240,240,14,14,14,14, + 14,14,14,0,125,125,254,254,254,254,254,254,240,240,240,240, + 240,240,240,0,125,125,254,254,254,254,254,254,14,14,14,14, + 14,14,14,71,54,118,224,224,224,224,224,224,0,125,125,14, + 14,14,14,14,14,240,240,240,240,240,240,240,0,125,125,14, + 14,14,14,14,14,254,254,254,254,254,254,254,3,119,119,254, + 254,254,254,254,254,254,3,119,119,254,130,130,130,130,130,254, + 3,119,119,124,130,130,130,130,130,124,3,119,119,254,130,186, + 186,186,130,254,3,119,119,254,130,254,130,254,130,254,3,119, + 119,254,170,170,170,170,170,254,3,119,119,254,170,254,170,254, + 170,254,3,119,119,254,146,138,198,162,146,254,3,119,119,254, + 146,162,198,138,146,254,3,119,119,254,214,170,214,170,214,254, + 20,85,117,248,248,248,248,248,20,85,117,248,136,136,136,248, + 4,117,117,254,254,254,254,254,4,117,117,254,130,130,130,254, + 19,87,119,248,248,248,248,248,248,248,19,87,119,248,136,136, + 136,136,136,248,4,117,117,62,126,254,252,248,4,117,117,62, + 66,130,132,248,2,120,120,16,16,56,56,124,124,254,254,2, + 120,120,16,16,40,40,68,68,130,254,19,86,118,32,32,112, + 112,248,248,19,86,118,32,32,80,80,136,248,3,119,119,128, + 224,248,254,248,224,128,3,119,119,128,224,152,134,152,224,128, + 4,101,117,192,240,252,240,192,4,101,117,192,176,140,176,192, + 4,117,117,128,240,254,240,128,4,117,117,128,240,142,240,128, + 2,120,120,254,254,124,124,56,56,16,16,2,120,120,254,130, + 68,68,40,40,16,16,19,86,118,248,248,112,112,32,32,19, + 86,118,248,136,80,80,32,32,3,119,119,2,14,62,254,62, + 14,2,3,119,119,2,14,50,194,50,14,2,4,101,117,12, + 60,252,60,12,4,101,117,12,52,196,52,12,4,117,117,2, + 30,254,30,2,4,117,117,2,30,226,30,2,2,119,119,16, + 56,124,254,124,56,16,2,119,119,16,40,68,130,68,40,16, + 2,119,119,16,40,84,186,84,40,16,3,119,119,56,68,146, + 186,146,68,56,18,89,121,32,32,80,80,136,80,80,32,32, + 3,119,119,56,68,130,130,130,68,56,3,119,119,40,0,130, + 0,130,0,40,3,119,119,56,108,170,170,170,108,56,3,119, + 119,56,68,146,170,146,68,56,3,119,119,56,124,254,254,254, + 124,56,3,119,119,56,116,242,242,242,116,56,3,119,119,56, + 92,158,158,158,92,56,3,119,119,56,68,130,254,254,124,56, + 3,119,119,56,124,254,254,130,68,56,3,119,119,56,92,158, + 158,130,68,56,3,119,119,56,76,142,142,254,124,56,51,71, + 119,192,224,240,240,240,224,192,3,71,119,48,112,240,240,240, + 112,48,0,125,125,254,254,254,254,198,130,130,130,198,254,254, + 254,254,0,125,125,254,254,254,254,198,186,186,186,198,254,254, + 254,254,6,119,119,254,254,254,254,198,186,186,0,119,119,186, + 186,198,254,254,254,254,6,68,116,48,64,128,128,54,68,116, + 192,32,16,16,51,68,116,16,16,32,192,3,68,116,128,128, + 64,48,6,116,116,56,68,130,130,3,116,116,130,130,68,56, + 3,119,119,2,6,14,30,62,126,254,3,119,119,128,192,224, + 240,248,252,254,3,119,119,254,252,248,240,224,192,128,3,119, + 119,254,126,62,30,14,6,2,20,85,117,112,136,136,136,112, + 3,119,119,254,226,226,226,226,226,254,3,119,119,254,142,142, + 142,142,142,254,3,119,119,254,254,250,242,226,194,254,3,119, + 119,254,134,142,158,190,254,254,3,119,119,254,146,146,146,146, + 146,254,2,120,120,16,16,40,40,84,124,146,254,2,120,120, + 16,16,56,56,116,116,242,254,2,120,120,16,16,56,56,92, + 92,158,254,3,119,119,56,68,130,130,130,68,56,2,119,119, + 254,146,146,242,130,130,254,2,119,119,254,130,130,242,146,146, + 254,2,119,119,254,130,130,158,146,146,254,2,119,119,254,146, + 146,158,130,130,254,2,119,119,56,84,146,242,130,68,56,2, + 119,119,56,68,130,242,146,84,56,2,119,119,56,68,130,158, + 146,84,56,2,119,119,56,84,146,158,130,68,56,255,255,255, + 255,255,255,255,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 7, '1' Height: 5 + Calculated Max Values w= 7 h= 9 x= 1 y= 2 dx= 7 dy= 0 ascent= 9 len= 9 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent = 9 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13_75r[471] U8G_SECTION(".progmem.u8g_font_7x13_75r") = { + 1,7,13,0,254,7,1,71,0,0,32,79,0,9,0,8, + 0,3,119,119,254,254,254,254,254,254,254,3,119,119,254,130, + 130,130,130,130,254,3,119,119,124,130,130,130,130,130,124,3, + 119,119,254,130,186,186,186,130,254,3,119,119,254,130,254,130, + 254,130,254,3,119,119,254,170,170,170,170,170,254,3,119,119, + 254,170,254,170,254,170,254,3,119,119,254,146,138,198,162,146, + 254,3,119,119,254,146,162,198,138,146,254,3,119,119,254,214, + 170,214,170,214,254,20,85,117,248,248,248,248,248,20,85,117, + 248,136,136,136,248,4,117,117,254,254,254,254,254,4,117,117, + 254,130,130,130,254,19,87,119,248,248,248,248,248,248,248,19, + 87,119,248,136,136,136,136,136,248,4,117,117,62,126,254,252, + 248,4,117,117,62,66,130,132,248,2,120,120,16,16,56,56, + 124,124,254,254,2,120,120,16,16,40,40,68,68,130,254,19, + 86,118,32,32,112,112,248,248,19,86,118,32,32,80,80,136, + 248,3,119,119,128,224,248,254,248,224,128,3,119,119,128,224, + 152,134,152,224,128,4,101,117,192,240,252,240,192,4,101,117, + 192,176,140,176,192,4,117,117,128,240,254,240,128,4,117,117, + 128,240,142,240,128,2,120,120,254,254,124,124,56,56,16,16, + 2,120,120,254,130,68,68,40,40,16,16,19,86,118,248,248, + 112,112,32,32,19,86,118,248,136,80,80,32,32,3,119,119, + 2,14,62,254,62,14,2,3,119,119,2,14,50,194,50,14, + 2,4,101,117,12,60,252,60,12,4,101,117,12,52,196,52, + 12,4,117,117,2,30,254,30,2,4,117,117,2,30,226,30, + 2,2,119,119,16,56,124,254,124,56,16,2,119,119,16,40, + 68,130,68,40,16,2,119,119,16,40,84,186,84,40,16,3, + 119,119,56,68,146,186,146,68,56,18,89,121,32,32,80,80, + 136,80,80,32,32,3,119,119,56,68,130,130,130,68,56,3, + 119,119,40,0,130,0,130,0,40,3,119,119,56,108,170,170, + 170,108,56,3,119,119,56,68,146,170,146,68,56,3,119,119, + 56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13B[2172] U8G_SECTION(".progmem.u8g_font_7x13B") = { + 1,7,13,0,254,9,1,105,2,216,32,255,254,11,254,9, + 254,13,0,112,34,41,121,192,192,192,192,192,192,0,192,192, + 24,83,115,216,216,216,18,89,121,80,80,248,248,80,248,248, + 80,80,2,105,121,48,120,180,176,120,52,180,120,48,2,105, + 121,228,172,232,24,48,96,92,212,156,2,105,121,112,216,216, + 216,112,212,220,216,116,39,36,116,192,192,192,192,18,73,121, + 48,96,96,192,192,192,96,96,48,18,73,121,192,96,96,48, + 48,48,96,96,192,3,102,118,72,48,252,252,48,72,3,102, + 118,48,48,252,252,48,48,17,68,116,112,112,96,192,5,97, + 113,252,17,67,115,96,240,96,2,105,121,12,12,24,24,48, + 96,96,192,192,2,105,121,48,72,204,204,204,204,204,72,48, + 2,105,121,48,112,176,48,48,48,48,48,252,2,105,121,120, + 204,204,12,56,96,192,192,252,2,105,121,252,12,24,48,120, + 12,12,204,120,2,105,121,12,28,60,108,204,204,252,12,12, + 2,105,121,252,192,192,248,204,12,12,204,120,2,105,121,120, + 204,192,192,248,204,204,204,120,2,105,121,252,12,12,24,24, + 48,48,96,96,2,105,121,120,204,204,204,120,204,204,204,120, + 2,105,121,120,204,204,204,124,12,12,204,120,17,72,120,96, + 240,96,0,0,96,240,96,17,72,120,96,240,96,0,112,112, + 96,192,2,105,121,12,24,48,96,192,96,48,24,12,4,100, + 116,252,0,0,252,2,105,121,192,96,48,24,12,24,48,96, + 192,2,105,121,120,204,204,12,56,48,0,48,48,2,105,121, + 120,140,140,188,172,188,128,140,120,2,105,121,120,204,204,204, + 252,204,204,204,204,2,105,121,248,204,204,204,248,204,204,204, + 248,2,105,121,120,204,192,192,192,192,192,204,120,2,105,121, + 248,204,204,204,204,204,204,204,248,2,105,121,252,192,192,192, + 248,192,192,192,252,2,105,121,252,192,192,192,248,192,192,192, + 192,2,105,121,120,204,192,192,220,204,204,204,124,2,105,121, + 204,204,204,204,252,204,204,204,204,2,105,121,252,48,48,48, + 48,48,48,48,252,2,105,121,12,12,12,12,12,12,12,204, + 120,2,105,121,196,204,216,240,224,240,216,204,196,2,105,121, + 192,192,192,192,192,192,192,192,252,2,105,121,132,204,252,252, + 204,204,204,204,204,2,105,121,204,204,236,236,252,220,220,204, + 204,2,105,121,120,204,204,204,204,204,204,204,120,2,105,121, + 248,204,204,204,248,192,192,192,192,1,106,122,120,204,204,204, + 204,204,236,220,120,12,2,105,121,248,204,204,204,248,240,216, + 204,196,2,105,121,120,204,192,192,120,12,12,204,120,2,105, + 121,252,48,48,48,48,48,48,48,48,2,105,121,204,204,204, + 204,204,204,204,204,120,2,105,121,204,204,204,72,72,120,48, + 48,48,2,105,121,204,204,204,204,204,252,252,204,132,2,105, + 121,132,204,72,120,48,120,72,204,132,2,105,121,204,204,120, + 120,48,48,48,48,48,2,105,121,252,12,12,24,48,96,192, + 192,252,18,73,121,240,192,192,192,192,192,192,192,240,2,105, + 121,192,192,96,96,48,24,24,12,12,18,73,121,240,48,48, + 48,48,48,48,48,240,7,100,116,48,120,204,132,1,98,114, + 252,252,25,67,115,192,96,48,2,102,118,120,12,124,204,204, + 124,2,105,121,192,192,192,248,204,204,204,204,248,2,102,118, + 120,204,192,192,204,120,2,105,121,12,12,12,124,204,204,204, + 204,124,2,102,118,120,204,252,192,204,120,2,105,121,56,108, + 96,96,240,96,96,96,96,0,104,120,116,204,204,120,192,120, + 204,120,2,105,121,192,192,192,248,204,204,204,204,204,2,105, + 121,48,48,0,112,48,48,48,48,252,0,107,123,12,12,0, + 12,12,12,12,12,12,204,120,2,105,121,192,192,192,204,216, + 240,240,216,204,2,105,121,112,48,48,48,48,48,48,48,252, + 2,102,118,216,252,252,204,204,204,2,102,118,248,204,204,204, + 204,204,2,102,118,120,204,204,204,204,120,0,104,120,248,204, + 204,204,248,192,192,192,0,104,120,124,204,204,204,124,12,12, + 12,2,102,118,248,204,192,192,192,192,2,102,118,120,204,96, + 24,204,120,2,104,120,96,96,248,96,96,96,108,56,2,102, + 118,204,204,204,204,204,124,2,102,118,204,204,204,120,120,48, + 2,102,118,204,204,204,252,252,72,2,102,118,204,204,120,120, + 204,204,0,104,120,204,204,204,204,124,12,204,120,2,102,118, + 252,12,24,96,192,252,18,73,121,112,192,192,96,192,96,192, + 192,112,34,41,121,192,192,192,192,192,192,192,192,192,18,73, + 121,224,48,48,96,48,96,48,48,224,8,99,115,100,252,152, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,13,0,112,34,42,122,192,192,0,192,192,192,192,192,192, + 192,3,104,120,16,124,212,208,208,212,124,16,2,105,121,56, + 108,96,96,248,96,96,108,184,3,102,118,204,252,72,72,252, + 204,2,105,121,204,204,120,120,252,48,252,48,48,34,42,122, + 192,192,192,192,0,0,192,192,192,192,2,106,122,120,204,192, + 120,204,204,120,12,204,120,26,82,114,216,216,2,106,122,120, + 204,132,180,228,228,180,132,204,120,20,87,119,240,24,248,152, + 248,0,248,3,103,119,52,104,208,160,208,104,52,3,100,116, + 252,12,12,12,21,65,113,240,2,106,122,120,204,132,188,172, + 188,180,172,204,120,27,81,113,248,7,100,116,120,204,204,120, + 3,103,119,48,48,252,48,48,0,252,6,70,118,224,176,48, + 96,192,240,6,70,118,224,176,96,48,176,224,25,67,115,48, + 96,192,1,103,119,204,204,204,204,204,252,128,2,105,121,124, + 252,244,244,244,116,52,52,52,38,34,114,192,192,16,50,114, + 96,192,6,70,118,96,224,96,96,96,240,21,87,119,112,248, + 136,248,112,0,248,3,103,119,176,88,44,20,44,88,176,2, + 106,122,96,224,96,96,100,252,28,52,60,12,2,106,122,96, + 224,96,96,120,236,12,24,48,60,2,106,122,224,176,96,48, + 180,236,28,52,60,12,2,106,122,48,48,0,48,48,96,192, + 204,204,120,2,106,122,96,48,0,48,120,204,204,252,204,204, + 2,106,122,24,48,0,48,120,204,204,252,204,204,2,106,122, + 56,108,0,48,120,204,204,252,204,204,2,106,122,52,88,0, + 48,120,204,204,252,204,204,2,106,122,204,204,0,48,120,204, + 204,252,204,204,2,106,122,120,72,120,48,120,204,204,252,204, + 204,2,105,121,124,248,216,216,220,248,216,216,220,0,107,123, + 120,204,192,192,192,192,192,204,120,48,96,2,106,122,96,48, + 0,252,192,192,240,192,192,252,2,106,122,24,48,0,252,192, + 192,240,192,192,252,2,106,122,56,108,0,252,192,192,240,192, + 192,252,2,106,122,204,204,0,252,192,192,240,192,192,252,2, + 106,122,96,48,0,252,48,48,48,48,48,252,2,106,122,24, + 48,0,252,48,48,48,48,48,252,2,106,122,56,108,0,252, + 48,48,48,48,48,252,2,106,122,204,204,0,252,48,48,48, + 48,48,252,2,105,121,248,108,108,108,236,108,108,108,248,2, + 106,122,52,88,0,204,204,236,252,220,204,204,2,106,122,96, + 48,0,120,204,204,204,204,204,120,2,106,122,24,48,0,120, + 204,204,204,204,204,120,2,106,122,56,108,0,120,204,204,204, + 204,204,120,2,106,122,52,88,0,120,204,204,204,204,204,120, + 2,106,122,204,204,0,120,204,204,204,204,204,120,3,101,117, + 204,120,48,120,204,1,106,122,4,120,220,220,220,236,236,236, + 120,128,2,106,122,96,48,0,204,204,204,204,204,204,120,2, + 106,122,24,48,0,204,204,204,204,204,204,120,2,106,122,56, + 108,0,204,204,204,204,204,204,120,2,106,122,204,204,0,204, + 204,204,204,204,204,120,2,106,122,24,48,0,204,72,120,48, + 48,48,48,2,105,121,192,248,204,204,204,248,192,192,192,2, + 105,121,120,204,204,216,216,204,204,204,216,2,105,121,48,24, + 0,120,12,124,204,220,124,2,105,121,24,48,0,120,12,124, + 204,220,124,2,105,121,56,108,0,120,12,124,204,220,124,2, + 105,121,52,88,0,120,12,124,204,220,124,2,105,121,108,108, + 0,120,12,124,204,220,124,2,106,122,56,40,56,0,120,12, + 124,204,220,124,2,102,118,120,52,124,176,180,104,0,104,120, + 120,204,192,192,204,120,48,96,2,105,121,48,24,0,120,204, + 252,192,204,120,2,105,121,24,48,0,120,204,252,192,204,120, + 2,105,121,56,108,0,120,204,252,192,204,120,2,105,121,108, + 108,0,120,204,252,192,204,120,18,73,121,192,96,0,224,96, + 96,96,96,240,18,73,121,48,96,0,224,96,96,96,96,240, + 2,89,121,112,216,0,112,48,48,48,48,120,18,89,121,216, + 216,0,224,96,96,96,96,240,2,106,122,104,48,120,12,124, + 204,204,204,204,120,2,105,121,52,88,0,248,236,204,204,204, + 204,2,105,121,96,48,0,120,204,204,204,204,120,2,105,121, + 24,48,0,120,204,204,204,204,120,2,105,121,56,108,0,120, + 204,204,204,204,120,2,105,121,52,88,0,120,204,204,204,204, + 120,2,105,121,108,108,0,120,204,204,204,204,120,3,103,119, + 48,48,0,252,0,48,48,1,105,121,4,120,204,220,204,236, + 204,120,128,2,105,121,96,48,0,204,204,204,204,220,124,2, + 105,121,24,48,0,204,204,204,204,220,124,2,105,121,56,108, + 0,204,204,204,204,220,124,2,105,121,108,108,0,204,204,204, + 204,220,124,0,107,123,24,48,0,204,204,204,220,124,12,204, + 120,0,106,122,192,192,216,236,204,204,236,216,192,192,0,107, + 123,108,108,0,204,204,204,220,108,12,204,120}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13Br[1041] U8G_SECTION(".progmem.u8g_font_7x13Br") = { + 1,7,13,0,254,9,1,105,2,216,32,127,254,11,254,9, + 254,13,0,112,34,41,121,192,192,192,192,192,192,0,192,192, + 24,83,115,216,216,216,18,89,121,80,80,248,248,80,248,248, + 80,80,2,105,121,48,120,180,176,120,52,180,120,48,2,105, + 121,228,172,232,24,48,96,92,212,156,2,105,121,112,216,216, + 216,112,212,220,216,116,39,36,116,192,192,192,192,18,73,121, + 48,96,96,192,192,192,96,96,48,18,73,121,192,96,96,48, + 48,48,96,96,192,3,102,118,72,48,252,252,48,72,3,102, + 118,48,48,252,252,48,48,17,68,116,112,112,96,192,5,97, + 113,252,17,67,115,96,240,96,2,105,121,12,12,24,24,48, + 96,96,192,192,2,105,121,48,72,204,204,204,204,204,72,48, + 2,105,121,48,112,176,48,48,48,48,48,252,2,105,121,120, + 204,204,12,56,96,192,192,252,2,105,121,252,12,24,48,120, + 12,12,204,120,2,105,121,12,28,60,108,204,204,252,12,12, + 2,105,121,252,192,192,248,204,12,12,204,120,2,105,121,120, + 204,192,192,248,204,204,204,120,2,105,121,252,12,12,24,24, + 48,48,96,96,2,105,121,120,204,204,204,120,204,204,204,120, + 2,105,121,120,204,204,204,124,12,12,204,120,17,72,120,96, + 240,96,0,0,96,240,96,17,72,120,96,240,96,0,112,112, + 96,192,2,105,121,12,24,48,96,192,96,48,24,12,4,100, + 116,252,0,0,252,2,105,121,192,96,48,24,12,24,48,96, + 192,2,105,121,120,204,204,12,56,48,0,48,48,2,105,121, + 120,140,140,188,172,188,128,140,120,2,105,121,120,204,204,204, + 252,204,204,204,204,2,105,121,248,204,204,204,248,204,204,204, + 248,2,105,121,120,204,192,192,192,192,192,204,120,2,105,121, + 248,204,204,204,204,204,204,204,248,2,105,121,252,192,192,192, + 248,192,192,192,252,2,105,121,252,192,192,192,248,192,192,192, + 192,2,105,121,120,204,192,192,220,204,204,204,124,2,105,121, + 204,204,204,204,252,204,204,204,204,2,105,121,252,48,48,48, + 48,48,48,48,252,2,105,121,12,12,12,12,12,12,12,204, + 120,2,105,121,196,204,216,240,224,240,216,204,196,2,105,121, + 192,192,192,192,192,192,192,192,252,2,105,121,132,204,252,252, + 204,204,204,204,204,2,105,121,204,204,236,236,252,220,220,204, + 204,2,105,121,120,204,204,204,204,204,204,204,120,2,105,121, + 248,204,204,204,248,192,192,192,192,1,106,122,120,204,204,204, + 204,204,236,220,120,12,2,105,121,248,204,204,204,248,240,216, + 204,196,2,105,121,120,204,192,192,120,12,12,204,120,2,105, + 121,252,48,48,48,48,48,48,48,48,2,105,121,204,204,204, + 204,204,204,204,204,120,2,105,121,204,204,204,72,72,120,48, + 48,48,2,105,121,204,204,204,204,204,252,252,204,132,2,105, + 121,132,204,72,120,48,120,72,204,132,2,105,121,204,204,120, + 120,48,48,48,48,48,2,105,121,252,12,12,24,48,96,192, + 192,252,18,73,121,240,192,192,192,192,192,192,192,240,2,105, + 121,192,192,96,96,48,24,24,12,12,18,73,121,240,48,48, + 48,48,48,48,48,240,7,100,116,48,120,204,132,1,98,114, + 252,252,25,67,115,192,96,48,2,102,118,120,12,124,204,204, + 124,2,105,121,192,192,192,248,204,204,204,204,248,2,102,118, + 120,204,192,192,204,120,2,105,121,12,12,12,124,204,204,204, + 204,124,2,102,118,120,204,252,192,204,120,2,105,121,56,108, + 96,96,240,96,96,96,96,0,104,120,116,204,204,120,192,120, + 204,120,2,105,121,192,192,192,248,204,204,204,204,204,2,105, + 121,48,48,0,112,48,48,48,48,252,0,107,123,12,12,0, + 12,12,12,12,12,12,204,120,2,105,121,192,192,192,204,216, + 240,240,216,204,2,105,121,112,48,48,48,48,48,48,48,252, + 2,102,118,216,252,252,204,204,204,2,102,118,248,204,204,204, + 204,204,2,102,118,120,204,204,204,204,120,0,104,120,248,204, + 204,204,248,192,192,192,0,104,120,124,204,204,204,124,12,12, + 12,2,102,118,248,204,192,192,192,192,2,102,118,120,204,96, + 24,204,120,2,104,120,96,96,248,96,96,96,108,56,2,102, + 118,204,204,204,204,204,124,2,102,118,204,204,204,120,120,48, + 2,102,118,204,204,204,252,252,72,2,102,118,204,204,120,120, + 204,204,0,104,120,204,204,204,204,124,12,204,120,2,102,118, + 252,12,24,96,192,252,18,73,121,112,192,192,96,192,96,192, + 192,112,34,41,121,192,192,192,192,192,192,192,192,192,18,73, + 121,224,48,48,96,48,96,48,48,224,8,99,115,100,252,152, + 255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13[2157] U8G_SECTION(".progmem.u8g_font_7x13") = { + 1,7,13,0,254,9,1,95,2,207,32,255,254,11,254,10, + 254,13,0,112,50,25,121,128,128,128,128,128,128,128,0,128, + 40,51,115,160,160,160,19,87,119,80,80,248,80,248,80,80, + 19,87,119,32,120,160,112,40,240,32,2,105,121,68,164,72, + 16,16,32,72,148,136,2,103,119,96,144,144,96,148,136,116, + 56,19,115,128,128,128,34,57,121,32,64,64,128,128,128,64, + 64,32,34,57,121,128,64,64,32,32,32,64,64,128,4,101, + 117,72,48,252,48,72,20,85,117,32,32,248,32,32,17,67, + 115,112,96,128,22,81,113,248,33,51,115,64,224,64,18,89, + 121,8,8,16,16,32,64,64,128,128,2,105,121,48,72,132, + 132,132,132,132,72,48,18,89,121,32,96,160,32,32,32,32, + 32,248,2,105,121,120,132,132,4,8,48,64,128,252,2,105, + 121,252,4,8,16,56,4,4,132,120,2,105,121,8,24,40, + 72,136,136,252,8,8,2,105,121,252,128,128,184,196,4,4, + 132,120,2,105,121,56,64,128,128,184,196,132,132,120,2,105, + 121,252,4,8,16,16,32,32,64,64,2,105,121,120,132,132, + 132,120,132,132,132,120,2,105,121,120,132,132,140,116,4,4, + 8,112,33,56,120,64,224,64,0,0,64,224,64,17,72,120, + 32,112,32,0,0,112,96,128,18,89,121,8,16,32,64,128, + 64,32,16,8,4,100,116,252,0,0,252,18,89,121,128,64, + 32,16,8,16,32,64,128,2,105,121,120,132,132,4,8,16, + 16,0,16,2,105,121,120,132,132,156,164,172,148,128,120,2, + 105,121,48,72,132,132,132,252,132,132,132,2,105,121,248,68, + 68,68,120,68,68,68,248,2,105,121,120,132,128,128,128,128, + 128,132,120,2,105,121,248,68,68,68,68,68,68,68,248,2, + 105,121,252,128,128,128,240,128,128,128,252,2,105,121,252,128, + 128,128,240,128,128,128,128,2,105,121,120,132,128,128,128,156, + 132,140,116,2,105,121,132,132,132,132,252,132,132,132,132,18, + 89,121,248,32,32,32,32,32,32,32,248,2,105,121,28,8, + 8,8,8,8,8,136,112,2,105,121,132,136,144,160,192,160, + 144,136,132,2,105,121,128,128,128,128,128,128,128,128,252,2, + 105,121,132,204,204,180,180,132,132,132,132,2,105,121,132,132, + 196,164,148,140,132,132,132,2,105,121,120,132,132,132,132,132, + 132,132,120,2,105,121,248,132,132,132,248,128,128,128,128,1, + 106,122,120,132,132,132,132,132,164,148,120,4,2,105,121,248, + 132,132,132,248,160,144,136,132,2,105,121,120,132,128,128,120, + 4,4,132,120,18,89,121,248,32,32,32,32,32,32,32,32, + 2,105,121,132,132,132,132,132,132,132,132,120,2,105,121,132, + 132,132,72,72,72,48,48,48,2,105,121,132,132,132,132,180, + 180,204,204,132,2,105,121,132,132,72,72,48,72,72,132,132, + 18,89,121,136,136,80,80,32,32,32,32,32,2,105,121,252, + 4,8,16,48,32,64,128,252,17,75,123,240,128,128,128,128, + 128,128,128,128,128,240,18,89,121,128,128,64,64,32,16,16, + 8,8,17,75,123,240,16,16,16,16,16,16,16,16,16,240, + 24,83,115,32,80,136,1,97,113,252,42,34,114,128,64,2, + 102,118,120,4,124,132,140,116,2,105,121,128,128,128,184,196, + 132,132,196,184,2,102,118,120,132,128,128,132,120,2,105,121, + 4,4,4,116,140,132,132,140,116,2,102,118,120,132,252,128, + 132,120,2,105,121,56,68,64,64,240,64,64,64,64,0,104, + 120,116,136,136,112,128,120,132,120,2,105,121,128,128,128,184, + 196,132,132,132,132,18,88,120,32,0,96,32,32,32,32,248, + 16,90,122,8,0,24,8,8,8,8,136,136,112,2,105,121, + 128,128,128,136,144,224,144,136,132,18,89,121,96,32,32,32, + 32,32,32,32,248,18,86,118,208,168,168,168,168,136,2,102, + 118,184,196,132,132,132,132,2,102,118,120,132,132,132,132,120, + 0,104,120,184,196,132,196,184,128,128,128,0,104,120,116,140, + 132,140,116,4,4,4,2,102,118,184,68,64,64,64,64,2, + 102,118,120,132,96,24,132,120,2,104,120,64,64,240,64,64, + 64,68,56,2,102,118,132,132,132,132,140,116,18,86,118,136, + 136,136,80,80,32,18,86,118,136,136,168,168,168,80,2,102, + 118,132,72,48,48,72,132,0,104,120,132,132,132,140,116,4, + 132,120,2,102,118,252,8,16,32,64,252,17,91,123,56,64, + 64,64,32,192,32,64,64,64,56,50,25,121,128,128,128,128, + 128,128,128,128,128,17,91,123,224,16,16,16,32,24,32,16, + 16,16,224,24,83,115,72,168,144,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,13,0,112,50,25,121, + 128,0,128,128,128,128,128,128,128,19,88,120,32,112,168,160, + 160,168,112,32,2,105,121,56,68,64,64,224,64,64,68,184, + 3,102,118,132,120,72,72,120,132,2,89,121,136,136,80,80, + 248,32,248,32,32,50,25,121,128,128,128,128,0,128,128,128, + 128,18,74,122,96,144,128,96,144,144,96,16,144,96,25,66, + 114,144,144,2,105,121,120,132,180,164,164,164,180,132,120,20, + 87,119,112,8,120,136,120,0,248,3,103,119,20,40,80,160, + 80,40,20,20,83,115,248,8,8,22,65,113,240,2,105,121, + 120,132,180,172,172,180,172,132,120,26,81,113,248,23,68,116, + 96,144,144,96,19,87,119,32,32,248,32,32,0,248,22,54, + 118,64,160,32,64,128,224,22,54,118,224,32,64,32,160,64, + 42,34,114,64,128,1,103,119,132,132,132,132,204,180,128,2, + 105,121,124,232,232,232,104,40,40,40,40,38,33,113,192,32, + 34,114,64,128,22,54,118,64,192,64,64,64,224,21,70,118, + 96,144,144,96,0,240,3,103,119,160,80,40,20,40,80,160, + 2,106,122,64,192,64,64,68,236,20,20,28,4,2,106,122, + 64,192,64,64,72,244,4,8,16,28,2,106,122,224,32,64, + 32,164,76,20,20,28,4,2,105,121,32,0,32,32,64,128, + 132,132,120,2,106,122,32,16,0,48,72,132,132,252,132,132, + 2,106,122,16,32,0,48,72,132,132,252,132,132,2,106,122, + 48,72,0,48,72,132,132,252,132,132,2,106,122,100,152,0, + 48,72,132,132,252,132,132,2,106,122,72,72,0,48,72,132, + 132,252,132,132,2,106,122,48,72,48,48,72,132,132,252,132, + 132,2,105,121,92,160,160,160,184,224,160,160,188,0,107,123, + 120,132,128,128,128,128,128,132,120,16,32,2,106,122,32,16, + 0,252,128,128,240,128,128,252,2,106,122,16,32,0,252,128, + 128,240,128,128,252,2,106,122,48,72,0,252,128,128,240,128, + 128,252,2,106,122,72,72,0,252,128,128,240,128,128,252,18, + 90,122,64,32,0,248,32,32,32,32,32,248,18,90,122,32, + 64,0,248,32,32,32,32,32,248,18,90,122,32,80,0,248, + 32,32,32,32,32,248,18,90,122,136,136,0,248,32,32,32, + 32,32,248,2,105,121,248,68,68,68,228,68,68,68,248,2, + 106,122,100,152,0,132,196,164,164,148,140,132,2,106,122,32, + 16,0,120,132,132,132,132,132,120,2,106,122,16,32,0,120, + 132,132,132,132,132,120,2,106,122,48,72,0,120,132,132,132, + 132,132,120,2,106,122,100,152,0,120,132,132,132,132,132,120, + 2,106,122,72,72,0,120,132,132,132,132,132,120,3,102,118, + 132,72,48,48,72,132,1,107,123,4,120,140,148,148,164,164, + 164,196,120,128,2,106,122,32,16,0,132,132,132,132,132,132, + 120,2,106,122,16,32,0,132,132,132,132,132,132,120,2,106, + 122,48,72,0,132,132,132,132,132,132,120,2,106,122,72,72, + 0,132,132,132,132,132,132,120,18,90,122,16,32,0,136,136, + 80,32,32,32,32,2,105,121,128,248,132,132,132,248,128,128, + 128,18,89,121,96,144,144,160,160,144,136,136,176,2,105,121, + 32,16,0,120,4,124,132,140,116,2,105,121,16,32,0,120, + 4,124,132,140,116,2,105,121,48,72,0,120,4,124,132,140, + 116,2,105,121,100,152,0,120,4,124,132,140,116,2,105,121, + 72,72,0,120,4,124,132,140,116,2,106,122,48,72,48,0, + 120,4,124,132,140,116,2,102,118,104,20,124,144,148,104,0, + 104,120,120,132,128,128,132,120,16,32,2,105,121,32,16,0, + 120,132,252,128,132,120,2,105,121,16,32,0,120,132,252,128, + 132,120,2,105,121,48,72,0,120,132,252,128,132,120,2,105, + 121,72,72,0,120,132,252,128,132,120,18,89,121,64,32,0, + 96,32,32,32,32,248,18,89,121,32,64,0,96,32,32,32, + 32,248,18,89,121,96,144,0,96,32,32,32,32,248,18,89, + 121,144,144,0,96,32,32,32,32,248,2,106,122,72,48,80, + 8,120,132,132,132,132,120,2,105,121,100,152,0,184,196,132, + 132,132,132,2,105,121,32,16,0,120,132,132,132,132,120,2, + 105,121,16,32,0,120,132,132,132,132,120,2,105,121,48,72, + 0,120,132,132,132,132,120,2,105,121,100,152,0,120,132,132, + 132,132,120,2,105,121,72,72,0,120,132,132,132,132,120,19, + 87,119,32,32,0,248,0,32,32,1,104,120,4,120,140,148, + 164,196,120,128,2,105,121,32,16,0,132,132,132,132,140,116, + 2,105,121,16,32,0,132,132,132,132,140,116,2,105,121,48, + 72,0,132,132,132,132,140,116,2,105,121,72,72,0,132,132, + 132,132,140,116,0,107,123,16,32,0,132,132,132,140,116,4, + 132,120,0,106,122,128,128,184,196,132,132,196,184,128,128,0, + 107,123,72,72,0,132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13O[2158] U8G_SECTION(".progmem.u8g_font_7x13O") = { + 1,7,13,0,254,9,1,96,2,208,32,255,254,11,254,10, + 254,13,0,112,34,41,121,64,64,64,64,128,128,128,0,128, + 40,51,115,160,160,160,3,103,119,40,40,124,40,248,80,80, + 3,103,119,16,60,80,56,40,240,32,2,121,121,34,82,36, + 8,16,32,72,148,136,2,104,120,24,36,36,56,80,148,136, + 116,56,19,115,128,128,128,18,73,121,16,32,64,64,128,128, + 64,64,32,18,73,121,64,32,32,16,16,32,32,64,128,20, + 85,117,72,48,248,96,144,20,69,117,32,32,240,64,64,17, + 67,115,112,96,128,22,81,113,248,33,51,115,64,224,64,2, + 105,121,4,4,8,16,16,32,64,128,128,2,121,121,24,36, + 66,66,66,132,132,72,48,18,89,121,16,48,80,16,16,32, + 32,32,248,2,121,121,60,66,66,2,12,48,64,128,252,2, + 121,121,126,2,4,8,24,4,4,132,120,2,105,121,4,12, + 20,36,72,136,252,8,8,2,121,121,62,32,32,92,98,2, + 4,132,120,2,105,121,28,32,64,64,120,132,132,132,120,2, + 105,121,252,4,8,16,32,64,64,128,128,2,121,121,60,66, + 66,66,124,132,132,132,120,2,105,121,120,132,132,140,116,8, + 8,16,224,17,72,120,32,112,32,0,0,64,224,64,17,88, + 120,16,56,16,0,0,112,96,128,18,89,121,8,16,32,64, + 128,128,64,32,16,4,116,116,126,0,0,252,18,89,121,64, + 32,16,8,8,16,32,64,128,2,105,121,120,132,132,8,16, + 32,32,0,32,2,121,121,60,66,66,78,82,172,148,128,120, + 2,121,121,24,36,66,66,66,124,132,132,132,2,121,121,124, + 34,34,34,60,68,68,68,248,2,121,121,60,66,64,64,64, + 128,128,132,120,2,121,121,124,34,34,34,34,68,68,68,248, + 2,121,121,126,64,64,64,120,128,128,128,252,2,121,121,126, + 64,64,64,120,128,128,128,128,2,121,121,60,66,64,64,64, + 156,132,140,116,2,121,121,66,66,66,66,124,132,132,132,132, + 2,105,121,124,16,16,16,16,32,32,32,248,2,121,121,14, + 4,4,4,4,8,8,136,112,2,121,121,66,68,72,80,96, + 160,144,136,132,2,105,121,64,64,64,64,64,128,128,128,252, + 2,121,121,66,102,102,90,90,132,132,132,132,2,121,121,66, + 66,98,82,74,140,132,132,132,2,121,121,60,66,66,66,66, + 132,132,132,120,2,121,121,124,66,66,66,124,128,128,128,128, + 1,122,122,60,66,66,66,66,132,164,148,120,4,2,121,121, + 124,66,66,66,124,160,144,136,132,2,121,121,60,66,64,64, + 56,4,4,132,120,18,89,121,248,32,32,32,32,64,64,64, + 64,2,121,121,66,66,66,66,66,132,132,132,120,2,105,121, + 132,132,136,136,80,80,96,96,96,2,121,121,66,66,66,66, + 90,180,204,204,132,2,121,121,66,68,36,40,16,40,72,68, + 132,18,89,121,136,136,80,80,32,32,64,64,64,2,121,121, + 126,2,4,8,16,32,64,128,252,17,91,123,120,64,64,64, + 64,64,128,128,128,128,240,18,73,121,128,128,64,64,32,32, + 32,16,16,17,91,123,120,8,8,8,8,8,16,16,16,16, + 240,24,83,115,32,80,136,1,97,113,252,42,34,114,128,64, + 2,118,118,60,2,124,132,140,116,2,121,121,64,64,64,92, + 98,66,132,196,184,2,118,118,60,66,128,128,132,120,2,121, + 121,2,2,2,58,68,132,132,140,116,2,118,118,60,66,124, + 128,132,120,2,105,121,56,68,64,64,240,64,128,128,128,0, + 120,120,58,68,136,112,128,120,132,120,2,121,121,32,32,64, + 92,98,66,132,132,132,18,88,120,16,0,48,16,16,32,32, + 248,0,106,122,4,0,12,4,4,8,8,136,136,112,2,105, + 121,64,64,64,68,88,96,144,136,132,18,89,121,48,16,16, + 16,16,32,32,32,248,2,102,118,104,84,84,168,168,136,2, + 118,118,92,98,66,132,132,132,2,118,118,60,66,66,132,132, + 120,0,120,120,92,98,66,196,184,128,128,128,0,120,120,58, + 70,130,140,116,4,4,4,2,102,118,184,68,64,128,128,128, + 2,118,118,60,66,32,24,132,120,18,88,120,64,64,240,64, + 128,128,136,112,2,118,118,66,66,66,132,140,116,18,86,118, + 136,136,144,144,160,64,2,102,118,68,68,84,168,168,80,2, + 118,118,66,36,24,48,72,132,0,120,120,66,66,132,140,116, + 4,132,120,2,118,118,126,4,24,32,64,252,17,91,123,56, + 64,64,64,32,192,64,128,128,128,112,34,41,121,64,64,64, + 64,64,128,128,128,128,1,107,123,112,8,8,8,16,28,32, + 16,16,16,224,24,83,115,72,168,144,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,13,0,112,34,41, + 121,64,0,64,64,64,128,128,128,128,3,104,120,16,56,84, + 80,160,168,112,32,2,121,121,28,34,32,32,112,32,64,68, + 184,3,118,118,66,60,36,72,120,132,2,105,121,68,68,40, + 40,124,16,248,32,32,34,41,121,64,64,64,64,0,128,128, + 128,128,2,106,122,24,36,32,48,72,72,48,16,144,96,25, + 66,114,144,144,2,121,121,60,66,90,82,82,164,180,132,120, + 4,103,119,56,4,60,68,60,0,248,3,103,119,20,40,80, + 160,160,80,40,20,83,115,248,16,16,22,65,113,240,2,121, + 121,60,66,90,86,172,180,172,132,120,26,81,113,248,23,68, + 116,96,144,144,96,19,87,119,16,16,120,32,32,0,248,22, + 70,118,32,80,16,96,128,224,22,70,118,96,16,96,32,160, + 64,42,34,114,64,128,1,119,119,66,66,66,132,204,180,128, + 2,105,121,124,232,232,232,40,80,80,80,80,38,33,113,192, + 32,34,114,64,128,38,54,118,32,96,32,64,64,224,21,86, + 118,48,72,72,48,0,240,3,103,119,80,40,20,20,40,80, + 160,2,106,122,32,96,32,64,68,236,20,40,56,8,2,106, + 122,32,96,32,64,72,244,4,24,32,56,2,106,122,96,16, + 96,32,164,76,20,40,56,8,2,105,121,16,0,16,16,32, + 64,132,132,120,2,122,122,16,8,0,24,36,66,66,124,132, + 132,2,122,122,8,16,0,24,36,66,66,124,132,132,2,122, + 122,24,36,0,24,36,66,66,124,132,132,2,122,122,50,76, + 0,24,36,66,66,124,132,132,2,122,122,36,36,0,24,36, + 66,66,124,132,132,2,122,122,24,36,24,24,36,66,66,124, + 132,132,2,121,121,46,80,80,80,124,160,160,160,188,0,123, + 123,60,66,64,64,64,128,128,132,120,16,32,2,122,122,16, + 8,0,126,64,64,112,128,128,252,2,122,122,8,16,0,126, + 64,64,112,128,128,252,2,122,122,24,36,0,126,64,64,112, + 128,128,252,2,122,122,36,36,0,126,64,64,112,128,128,252, + 2,106,122,32,16,0,124,16,16,32,32,32,248,2,106,122, + 16,32,0,124,16,16,32,32,32,248,2,106,122,16,40,0, + 124,16,16,32,32,32,248,2,106,122,68,68,0,124,16,16, + 32,32,32,248,2,121,121,124,34,34,34,242,68,68,68,248, + 2,122,122,50,76,0,66,98,82,82,140,140,132,2,122,122, + 16,8,0,60,66,66,132,132,132,120,2,122,122,8,16,0, + 60,66,66,132,132,132,120,2,122,122,24,36,0,60,66,66, + 132,132,132,120,2,122,122,50,76,0,60,66,66,132,132,132, + 120,2,122,122,36,36,0,60,66,66,132,132,132,120,3,118, + 118,66,36,24,48,72,132,1,123,123,2,60,70,74,74,82, + 164,164,196,120,128,2,122,122,16,8,0,66,66,66,132,132, + 132,120,2,122,122,8,16,0,66,66,66,132,132,132,120,2, + 122,122,24,36,0,66,66,66,132,132,132,120,2,122,122,36, + 36,0,66,66,66,132,132,132,120,18,90,122,16,32,0,136, + 136,80,32,32,64,64,2,121,121,64,124,66,66,66,124,128, + 128,128,18,89,121,48,72,72,80,80,144,136,136,176,2,121, + 121,16,8,0,60,2,124,132,140,116,2,121,121,8,16,0, + 60,2,124,132,140,116,2,121,121,24,36,0,60,2,124,132, + 140,116,2,121,121,50,76,0,60,2,124,132,140,116,2,121, + 121,36,36,0,60,2,124,132,140,116,2,122,122,24,36,24, + 0,60,2,124,132,140,116,2,118,118,52,10,124,144,148,104, + 0,120,120,60,66,128,128,132,120,16,32,2,121,121,16,8, + 0,60,66,124,128,132,120,2,121,121,8,16,0,60,66,124, + 128,132,120,2,121,121,24,36,0,60,66,124,128,132,120,2, + 121,121,36,36,0,60,66,124,128,132,120,18,89,121,32,16, + 0,48,16,32,32,32,248,18,89,121,16,32,0,48,16,32, + 32,32,248,18,89,121,48,72,0,48,16,32,32,32,248,18, + 89,121,72,72,0,48,16,32,32,32,248,2,122,122,36,24, + 40,4,60,66,66,132,132,120,2,121,121,50,76,0,92,98, + 66,132,132,132,2,121,121,16,8,0,60,66,66,132,132,120, + 2,121,121,8,16,0,60,66,66,132,132,120,2,121,121,24, + 36,0,60,66,66,132,132,120,2,121,121,50,76,0,60,66, + 66,132,132,120,2,121,121,36,36,0,60,66,66,132,132,120, + 19,71,119,32,32,0,240,0,64,64,1,120,120,2,60,74, + 82,164,196,120,128,2,121,121,16,8,0,66,66,66,132,140, + 116,2,121,121,8,16,0,66,66,66,132,140,116,2,121,121, + 24,36,0,66,66,66,132,140,116,2,121,121,36,36,0,66, + 66,66,132,140,116,0,123,123,8,16,0,66,66,132,140,116, + 4,132,120,0,122,122,64,64,92,98,66,132,196,184,128,128, + 0,123,123,36,36,0,66,66,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13Or[1035] U8G_SECTION(".progmem.u8g_font_7x13Or") = { + 1,7,13,0,254,9,1,96,2,208,32,127,254,11,254,10, + 254,13,0,112,34,41,121,64,64,64,64,128,128,128,0,128, + 40,51,115,160,160,160,3,103,119,40,40,124,40,248,80,80, + 3,103,119,16,60,80,56,40,240,32,2,121,121,34,82,36, + 8,16,32,72,148,136,2,104,120,24,36,36,56,80,148,136, + 116,56,19,115,128,128,128,18,73,121,16,32,64,64,128,128, + 64,64,32,18,73,121,64,32,32,16,16,32,32,64,128,20, + 85,117,72,48,248,96,144,20,69,117,32,32,240,64,64,17, + 67,115,112,96,128,22,81,113,248,33,51,115,64,224,64,2, + 105,121,4,4,8,16,16,32,64,128,128,2,121,121,24,36, + 66,66,66,132,132,72,48,18,89,121,16,48,80,16,16,32, + 32,32,248,2,121,121,60,66,66,2,12,48,64,128,252,2, + 121,121,126,2,4,8,24,4,4,132,120,2,105,121,4,12, + 20,36,72,136,252,8,8,2,121,121,62,32,32,92,98,2, + 4,132,120,2,105,121,28,32,64,64,120,132,132,132,120,2, + 105,121,252,4,8,16,32,64,64,128,128,2,121,121,60,66, + 66,66,124,132,132,132,120,2,105,121,120,132,132,140,116,8, + 8,16,224,17,72,120,32,112,32,0,0,64,224,64,17,88, + 120,16,56,16,0,0,112,96,128,18,89,121,8,16,32,64, + 128,128,64,32,16,4,116,116,126,0,0,252,18,89,121,64, + 32,16,8,8,16,32,64,128,2,105,121,120,132,132,8,16, + 32,32,0,32,2,121,121,60,66,66,78,82,172,148,128,120, + 2,121,121,24,36,66,66,66,124,132,132,132,2,121,121,124, + 34,34,34,60,68,68,68,248,2,121,121,60,66,64,64,64, + 128,128,132,120,2,121,121,124,34,34,34,34,68,68,68,248, + 2,121,121,126,64,64,64,120,128,128,128,252,2,121,121,126, + 64,64,64,120,128,128,128,128,2,121,121,60,66,64,64,64, + 156,132,140,116,2,121,121,66,66,66,66,124,132,132,132,132, + 2,105,121,124,16,16,16,16,32,32,32,248,2,121,121,14, + 4,4,4,4,8,8,136,112,2,121,121,66,68,72,80,96, + 160,144,136,132,2,105,121,64,64,64,64,64,128,128,128,252, + 2,121,121,66,102,102,90,90,132,132,132,132,2,121,121,66, + 66,98,82,74,140,132,132,132,2,121,121,60,66,66,66,66, + 132,132,132,120,2,121,121,124,66,66,66,124,128,128,128,128, + 1,122,122,60,66,66,66,66,132,164,148,120,4,2,121,121, + 124,66,66,66,124,160,144,136,132,2,121,121,60,66,64,64, + 56,4,4,132,120,18,89,121,248,32,32,32,32,64,64,64, + 64,2,121,121,66,66,66,66,66,132,132,132,120,2,105,121, + 132,132,136,136,80,80,96,96,96,2,121,121,66,66,66,66, + 90,180,204,204,132,2,121,121,66,68,36,40,16,40,72,68, + 132,18,89,121,136,136,80,80,32,32,64,64,64,2,121,121, + 126,2,4,8,16,32,64,128,252,17,91,123,120,64,64,64, + 64,64,128,128,128,128,240,18,73,121,128,128,64,64,32,32, + 32,16,16,17,91,123,120,8,8,8,8,8,16,16,16,16, + 240,24,83,115,32,80,136,1,97,113,252,42,34,114,128,64, + 2,118,118,60,2,124,132,140,116,2,121,121,64,64,64,92, + 98,66,132,196,184,2,118,118,60,66,128,128,132,120,2,121, + 121,2,2,2,58,68,132,132,140,116,2,118,118,60,66,124, + 128,132,120,2,105,121,56,68,64,64,240,64,128,128,128,0, + 120,120,58,68,136,112,128,120,132,120,2,121,121,32,32,64, + 92,98,66,132,132,132,18,88,120,16,0,48,16,16,32,32, + 248,0,106,122,4,0,12,4,4,8,8,136,136,112,2,105, + 121,64,64,64,68,88,96,144,136,132,18,89,121,48,16,16, + 16,16,32,32,32,248,2,102,118,104,84,84,168,168,136,2, + 118,118,92,98,66,132,132,132,2,118,118,60,66,66,132,132, + 120,0,120,120,92,98,66,196,184,128,128,128,0,120,120,58, + 70,130,140,116,4,4,4,2,102,118,184,68,64,128,128,128, + 2,118,118,60,66,32,24,132,120,18,88,120,64,64,240,64, + 128,128,136,112,2,118,118,66,66,66,132,140,116,18,86,118, + 136,136,144,144,160,64,2,102,118,68,68,84,168,168,80,2, + 118,118,66,36,24,48,72,132,0,120,120,66,66,132,140,116, + 4,132,120,2,118,118,126,4,24,32,64,252,17,91,123,56, + 64,64,64,32,192,64,128,128,128,112,34,41,121,64,64,64, + 64,64,128,128,128,128,1,107,123,112,8,8,8,16,28,32, + 16,16,16,224,24,83,115,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13r[1034] U8G_SECTION(".progmem.u8g_font_7x13r") = { + 1,7,13,0,254,9,1,95,2,207,32,127,254,11,254,10, + 254,13,0,112,50,25,121,128,128,128,128,128,128,128,0,128, + 40,51,115,160,160,160,19,87,119,80,80,248,80,248,80,80, + 19,87,119,32,120,160,112,40,240,32,2,105,121,68,164,72, + 16,16,32,72,148,136,2,103,119,96,144,144,96,148,136,116, + 56,19,115,128,128,128,34,57,121,32,64,64,128,128,128,64, + 64,32,34,57,121,128,64,64,32,32,32,64,64,128,4,101, + 117,72,48,252,48,72,20,85,117,32,32,248,32,32,17,67, + 115,112,96,128,22,81,113,248,33,51,115,64,224,64,18,89, + 121,8,8,16,16,32,64,64,128,128,2,105,121,48,72,132, + 132,132,132,132,72,48,18,89,121,32,96,160,32,32,32,32, + 32,248,2,105,121,120,132,132,4,8,48,64,128,252,2,105, + 121,252,4,8,16,56,4,4,132,120,2,105,121,8,24,40, + 72,136,136,252,8,8,2,105,121,252,128,128,184,196,4,4, + 132,120,2,105,121,56,64,128,128,184,196,132,132,120,2,105, + 121,252,4,8,16,16,32,32,64,64,2,105,121,120,132,132, + 132,120,132,132,132,120,2,105,121,120,132,132,140,116,4,4, + 8,112,33,56,120,64,224,64,0,0,64,224,64,17,72,120, + 32,112,32,0,0,112,96,128,18,89,121,8,16,32,64,128, + 64,32,16,8,4,100,116,252,0,0,252,18,89,121,128,64, + 32,16,8,16,32,64,128,2,105,121,120,132,132,4,8,16, + 16,0,16,2,105,121,120,132,132,156,164,172,148,128,120,2, + 105,121,48,72,132,132,132,252,132,132,132,2,105,121,248,68, + 68,68,120,68,68,68,248,2,105,121,120,132,128,128,128,128, + 128,132,120,2,105,121,248,68,68,68,68,68,68,68,248,2, + 105,121,252,128,128,128,240,128,128,128,252,2,105,121,252,128, + 128,128,240,128,128,128,128,2,105,121,120,132,128,128,128,156, + 132,140,116,2,105,121,132,132,132,132,252,132,132,132,132,18, + 89,121,248,32,32,32,32,32,32,32,248,2,105,121,28,8, + 8,8,8,8,8,136,112,2,105,121,132,136,144,160,192,160, + 144,136,132,2,105,121,128,128,128,128,128,128,128,128,252,2, + 105,121,132,204,204,180,180,132,132,132,132,2,105,121,132,132, + 196,164,148,140,132,132,132,2,105,121,120,132,132,132,132,132, + 132,132,120,2,105,121,248,132,132,132,248,128,128,128,128,1, + 106,122,120,132,132,132,132,132,164,148,120,4,2,105,121,248, + 132,132,132,248,160,144,136,132,2,105,121,120,132,128,128,120, + 4,4,132,120,18,89,121,248,32,32,32,32,32,32,32,32, + 2,105,121,132,132,132,132,132,132,132,132,120,2,105,121,132, + 132,132,72,72,72,48,48,48,2,105,121,132,132,132,132,180, + 180,204,204,132,2,105,121,132,132,72,72,48,72,72,132,132, + 18,89,121,136,136,80,80,32,32,32,32,32,2,105,121,252, + 4,8,16,48,32,64,128,252,17,75,123,240,128,128,128,128, + 128,128,128,128,128,240,18,89,121,128,128,64,64,32,16,16, + 8,8,17,75,123,240,16,16,16,16,16,16,16,16,16,240, + 24,83,115,32,80,136,1,97,113,252,42,34,114,128,64,2, + 102,118,120,4,124,132,140,116,2,105,121,128,128,128,184,196, + 132,132,196,184,2,102,118,120,132,128,128,132,120,2,105,121, + 4,4,4,116,140,132,132,140,116,2,102,118,120,132,252,128, + 132,120,2,105,121,56,68,64,64,240,64,64,64,64,0,104, + 120,116,136,136,112,128,120,132,120,2,105,121,128,128,128,184, + 196,132,132,132,132,18,88,120,32,0,96,32,32,32,32,248, + 16,90,122,8,0,24,8,8,8,8,136,136,112,2,105,121, + 128,128,128,136,144,224,144,136,132,18,89,121,96,32,32,32, + 32,32,32,32,248,18,86,118,208,168,168,168,168,136,2,102, + 118,184,196,132,132,132,132,2,102,118,120,132,132,132,132,120, + 0,104,120,184,196,132,196,184,128,128,128,0,104,120,116,140, + 132,140,116,4,4,4,2,102,118,184,68,64,64,64,64,2, + 102,118,120,132,96,24,132,120,2,104,120,64,64,240,64,64, + 64,68,56,2,102,118,132,132,132,132,140,116,18,86,118,136, + 136,136,80,80,32,18,86,118,136,136,168,168,168,80,2,102, + 118,132,72,48,48,72,132,0,104,120,132,132,132,140,116,4, + 132,120,2,102,118,252,8,16,32,64,252,17,91,123,56,64, + 64,64,32,192,32,64,64,64,56,50,25,121,128,128,128,128, + 128,128,128,128,128,17,91,123,224,16,16,16,32,24,32,16, + 16,16,224,24,83,115,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=14 x= 2 y=12 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14B[2390] U8G_SECTION(".progmem.u8g_font_7x14B") = { + 1,7,14,0,254,10,1,137,3,30,32,255,254,12,254,11, + 254,14,0,112,34,42,122,192,192,192,192,192,192,192,0,192, + 192,25,84,116,216,216,216,216,2,106,122,120,120,120,252,120, + 120,252,120,120,120,1,107,123,48,120,180,180,112,56,52,180, + 180,120,48,2,106,122,108,220,216,112,16,32,56,108,236,216, + 2,106,122,56,108,108,108,56,108,220,216,216,108,41,36,116, + 192,192,192,192,16,93,125,24,48,96,96,192,192,192,192,192, + 96,96,48,24,16,93,125,192,96,48,48,24,24,24,24,24, + 48,48,96,192,5,103,119,180,180,120,48,120,180,180,3,103, + 119,48,48,48,252,48,48,48,32,52,116,224,96,96,192,6, + 97,113,252,34,34,114,192,192,0,109,125,12,12,12,24,24, + 48,48,48,96,96,192,192,192,2,106,122,120,204,204,204,204, + 204,204,204,204,120,2,106,122,48,112,240,48,48,48,48,48, + 48,252,2,106,122,120,204,204,12,24,24,48,96,192,252,2, + 106,122,120,204,204,12,56,12,12,204,204,120,2,106,122,8, + 24,24,56,120,216,216,252,24,24,2,106,122,252,192,192,248, + 204,12,12,204,204,120,2,106,122,56,108,204,192,248,204,204, + 204,204,120,2,106,122,252,204,216,24,48,48,48,48,48,48, + 2,106,122,120,204,204,204,120,120,204,204,204,120,2,106,122, + 120,204,204,204,204,124,12,204,216,112,35,39,119,192,192,0, + 0,0,192,192,33,57,121,96,96,0,0,0,224,96,96,192, + 2,105,121,12,24,48,96,192,96,48,24,12,4,100,116,252, + 0,0,252,2,105,121,192,96,48,24,12,24,48,96,192,2, + 106,122,120,204,204,24,48,48,48,0,48,48,2,106,122,56, + 108,220,244,244,244,244,220,96,60,2,106,122,120,252,204,204, + 204,204,252,204,204,204,2,106,122,248,204,204,200,248,204,204, + 204,204,248,2,106,122,120,204,204,192,192,192,192,204,204,120, + 2,106,122,240,216,204,204,204,204,204,204,216,240,2,106,122, + 252,192,192,192,248,192,192,192,192,252,2,106,122,252,192,192, + 192,248,192,192,192,192,192,2,106,122,120,204,204,192,192,220, + 204,204,204,120,2,106,122,204,204,204,204,252,204,204,204,204, + 204,2,106,122,252,48,48,48,48,48,48,48,48,252,2,106, + 122,12,12,12,12,12,12,12,204,216,112,2,106,122,204,216, + 240,224,224,240,240,216,204,204,2,106,122,192,192,192,192,192, + 192,192,192,192,252,2,106,122,132,204,204,252,252,204,204,204, + 204,204,2,106,122,204,204,236,236,236,220,220,220,204,204,2, + 106,122,120,204,204,204,204,204,204,204,204,120,2,106,122,248, + 204,204,204,204,248,192,192,192,192,0,108,124,120,204,204,204, + 204,204,236,220,204,120,12,4,2,106,122,248,204,204,204,248, + 216,204,204,204,204,2,106,122,120,204,204,96,48,48,24,204, + 204,120,2,106,122,252,48,48,48,48,48,48,48,48,48,2, + 106,122,204,204,204,204,204,204,204,204,204,120,2,106,122,204, + 204,204,204,204,204,204,120,120,48,2,106,122,204,204,204,204, + 204,252,252,252,252,72,2,106,122,204,204,120,120,48,48,120, + 120,204,204,2,106,122,204,204,204,120,120,48,48,48,48,48, + 2,106,122,252,12,24,24,48,48,96,96,192,252,16,93,125, + 248,192,192,192,192,192,192,192,192,192,192,192,248,0,109,125, + 192,192,192,96,96,48,48,48,24,24,12,12,12,16,93,125, + 248,24,24,24,24,24,24,24,24,24,24,24,248,11,99,115, + 48,120,204,0,98,114,252,252,26,67,115,192,96,48,2,103, + 119,120,204,28,108,204,204,124,2,106,122,192,192,192,248,204, + 204,204,204,204,248,2,103,119,120,204,192,192,192,204,120,2, + 106,122,12,12,12,124,204,204,204,204,204,124,2,103,119,120, + 204,204,252,192,204,120,2,106,122,24,60,48,48,252,48,48, + 48,48,48,0,105,121,116,220,216,216,112,64,248,204,120,2, + 106,122,192,192,192,248,204,204,204,204,204,204,34,42,122,192, + 192,0,192,192,192,192,192,192,192,16,92,124,24,24,0,24, + 24,24,24,24,24,24,216,112,2,106,122,192,192,192,200,216, + 240,240,216,204,196,34,42,122,192,192,192,192,192,192,192,192, + 192,192,2,103,119,216,252,252,252,252,252,204,2,103,119,248, + 204,204,204,204,204,204,2,103,119,120,204,204,204,204,204,120, + 0,105,121,248,204,204,204,204,204,248,192,192,0,105,121,124, + 204,204,204,204,204,124,12,12,2,103,119,248,204,204,192,192, + 192,192,2,103,119,120,204,96,48,24,204,120,2,106,122,48, + 48,48,252,48,48,48,48,48,28,2,103,119,204,204,204,204, + 204,204,124,2,103,119,204,204,204,120,120,48,48,2,103,119, + 204,204,252,252,252,252,72,2,103,119,204,204,120,48,120,204, + 204,0,105,121,204,204,108,108,56,56,24,216,112,2,103,119, + 252,12,24,48,96,192,252,16,93,125,56,96,96,96,96,96, + 192,96,96,96,96,96,56,32,45,125,192,192,192,192,192,192, + 192,192,192,192,192,192,192,16,93,125,224,48,48,48,48,48, + 24,48,48,48,48,48,224,9,100,116,68,244,188,136,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,14, + 0,112,34,42,122,192,192,0,192,192,192,192,192,192,192,1, + 105,121,48,124,180,176,176,176,180,124,48,2,105,121,56,108, + 96,96,240,96,96,248,108,4,102,118,204,120,104,88,120,204, + 2,106,122,132,204,120,252,48,48,252,48,48,48,34,42,122, + 192,192,192,192,0,0,192,192,192,192,2,107,123,120,204,96, + 48,120,204,120,48,24,204,120,27,82,114,216,216,2,107,123, + 120,204,252,236,236,236,236,236,252,204,120,21,88,120,112,216, + 120,216,216,120,0,248,2,103,119,28,60,120,240,120,60,28, + 2,101,117,252,252,12,12,12,22,65,113,240,2,107,123,120, + 204,252,236,236,252,236,236,236,204,120,28,81,113,248,25,84, + 116,112,216,216,112,2,102,118,48,48,252,48,48,252,22,87, + 119,112,216,24,48,96,192,248,22,87,119,112,216,24,112,24, + 216,112,26,67,115,48,96,192,0,104,120,204,204,204,204,220, + 252,192,192,0,108,124,124,236,236,236,236,108,44,44,44,44, + 44,60,39,34,114,192,192,32,51,115,96,96,192,22,54,118, + 96,224,96,96,96,96,22,86,118,112,216,216,112,0,248,2, + 103,119,224,112,56,28,56,112,224,2,106,122,100,236,104,120, + 120,52,108,92,220,140,2,106,122,100,236,104,120,120,56,116, + 76,216,156,2,106,122,196,108,232,120,240,60,108,220,156,12, + 0,107,123,96,96,0,96,96,96,96,96,204,204,120,2,108, + 124,96,48,0,120,252,204,204,204,252,204,204,204,2,108,124, + 24,48,0,120,252,204,204,204,252,204,204,204,2,108,124,48, + 120,0,120,252,204,204,204,252,204,204,204,2,108,124,104,176, + 0,120,252,204,204,204,252,204,204,204,2,108,124,204,204,0, + 120,252,204,204,204,252,204,204,204,2,108,124,48,72,48,0, + 120,252,204,204,252,204,204,204,2,122,122,126,216,216,216,220, + 248,216,216,216,222,0,108,124,120,204,204,192,192,192,192,204, + 204,120,48,96,2,108,124,96,48,0,252,192,192,192,248,192, + 192,192,252,2,108,124,24,48,0,252,192,192,192,248,192,192, + 192,252,2,108,124,48,120,0,252,192,192,192,248,192,192,192, + 252,2,108,124,204,204,0,252,192,192,192,248,192,192,192,252, + 2,108,124,96,48,0,252,48,48,48,48,48,48,48,252,2, + 108,124,24,48,0,252,48,48,48,48,48,48,48,252,2,108, + 124,48,120,0,252,48,48,48,48,48,48,48,252,2,108,124, + 204,204,0,252,48,48,48,48,48,48,48,252,2,122,122,120, + 108,102,102,254,102,102,102,108,120,2,108,124,104,176,0,204, + 236,236,236,220,220,220,204,204,2,108,124,96,48,0,120,204, + 204,204,204,204,204,204,120,2,108,124,24,48,0,120,204,204, + 204,204,204,204,204,120,2,108,124,48,120,0,120,204,204,204, + 204,204,204,204,120,2,108,124,104,176,0,120,204,204,204,204, + 204,204,204,120,2,108,124,204,204,0,120,204,204,204,204,204, + 204,204,120,2,119,119,198,108,56,56,108,198,130,0,110,126, + 4,4,120,220,220,220,220,236,236,236,236,120,128,128,2,108, + 124,96,48,0,204,204,204,204,204,204,204,204,120,2,108,124, + 24,48,0,204,204,204,204,204,204,204,204,120,2,108,124,48, + 120,0,204,204,204,204,204,204,204,204,120,2,108,124,204,204, + 0,204,204,204,204,204,204,204,204,120,2,108,124,24,48,0, + 204,204,204,120,120,120,48,48,48,2,106,122,192,192,248,204, + 204,204,204,248,192,192,2,106,122,56,108,108,108,120,108,108, + 108,108,248,2,106,122,96,48,0,120,204,60,108,204,204,124, + 2,106,122,24,48,0,120,204,60,108,204,204,124,2,106,122, + 48,120,0,120,204,60,108,204,204,124,2,106,122,104,176,0, + 120,204,60,108,204,204,124,2,106,122,204,204,0,120,204,60, + 108,204,204,124,2,107,123,48,72,48,0,120,204,60,108,204, + 204,124,2,119,119,124,218,58,94,216,222,124,0,105,121,120, + 204,192,192,192,204,120,48,96,2,106,122,96,48,0,120,204, + 204,252,192,204,120,2,106,122,24,48,0,120,204,204,252,192, + 204,120,2,106,122,48,120,0,120,204,204,252,192,204,120,2, + 106,122,204,204,0,120,204,204,252,192,204,120,34,58,122,192, + 96,0,96,96,96,96,96,96,96,34,58,122,96,192,0,192, + 192,192,192,192,192,192,18,74,122,96,240,0,96,96,96,96, + 96,96,96,2,106,122,204,204,0,48,48,48,48,48,48,48, + 2,107,123,216,112,240,152,12,124,204,204,204,204,120,2,106, + 122,104,176,0,248,204,204,204,204,204,204,2,106,122,96,48, + 0,120,204,204,204,204,204,120,2,106,122,24,48,0,120,204, + 204,204,204,204,120,2,106,122,48,120,0,120,204,204,204,204, + 204,120,2,106,122,104,176,0,120,204,204,204,204,204,120,2, + 106,122,204,204,0,120,204,204,204,204,204,120,2,104,120,48, + 48,0,252,252,0,48,48,0,107,123,4,8,120,220,220,236, + 236,204,120,128,128,2,106,122,96,48,0,204,204,204,204,204, + 204,124,2,106,122,24,48,0,204,204,204,204,204,204,124,2, + 106,122,48,120,0,204,204,204,204,204,204,124,2,106,122,204, + 204,0,204,204,204,204,204,204,124,0,108,124,24,48,0,204, + 204,204,120,56,56,48,240,96,0,108,124,192,192,192,248,204, + 204,204,204,204,248,192,192,0,108,124,204,204,0,204,204,204, + 120,56,56,48,240,96}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 6 h=13 x= 2 y=12 dx= 7 dy= 0 ascent=12 len=13 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14Br[1151] U8G_SECTION(".progmem.u8g_font_7x14Br") = { + 1,7,14,0,254,10,1,137,3,30,32,127,254,12,254,11, + 254,14,0,112,34,42,122,192,192,192,192,192,192,192,0,192, + 192,25,84,116,216,216,216,216,2,106,122,120,120,120,252,120, + 120,252,120,120,120,1,107,123,48,120,180,180,112,56,52,180, + 180,120,48,2,106,122,108,220,216,112,16,32,56,108,236,216, + 2,106,122,56,108,108,108,56,108,220,216,216,108,41,36,116, + 192,192,192,192,16,93,125,24,48,96,96,192,192,192,192,192, + 96,96,48,24,16,93,125,192,96,48,48,24,24,24,24,24, + 48,48,96,192,5,103,119,180,180,120,48,120,180,180,3,103, + 119,48,48,48,252,48,48,48,32,52,116,224,96,96,192,6, + 97,113,252,34,34,114,192,192,0,109,125,12,12,12,24,24, + 48,48,48,96,96,192,192,192,2,106,122,120,204,204,204,204, + 204,204,204,204,120,2,106,122,48,112,240,48,48,48,48,48, + 48,252,2,106,122,120,204,204,12,24,24,48,96,192,252,2, + 106,122,120,204,204,12,56,12,12,204,204,120,2,106,122,8, + 24,24,56,120,216,216,252,24,24,2,106,122,252,192,192,248, + 204,12,12,204,204,120,2,106,122,56,108,204,192,248,204,204, + 204,204,120,2,106,122,252,204,216,24,48,48,48,48,48,48, + 2,106,122,120,204,204,204,120,120,204,204,204,120,2,106,122, + 120,204,204,204,204,124,12,204,216,112,35,39,119,192,192,0, + 0,0,192,192,33,57,121,96,96,0,0,0,224,96,96,192, + 2,105,121,12,24,48,96,192,96,48,24,12,4,100,116,252, + 0,0,252,2,105,121,192,96,48,24,12,24,48,96,192,2, + 106,122,120,204,204,24,48,48,48,0,48,48,2,106,122,56, + 108,220,244,244,244,244,220,96,60,2,106,122,120,252,204,204, + 204,204,252,204,204,204,2,106,122,248,204,204,200,248,204,204, + 204,204,248,2,106,122,120,204,204,192,192,192,192,204,204,120, + 2,106,122,240,216,204,204,204,204,204,204,216,240,2,106,122, + 252,192,192,192,248,192,192,192,192,252,2,106,122,252,192,192, + 192,248,192,192,192,192,192,2,106,122,120,204,204,192,192,220, + 204,204,204,120,2,106,122,204,204,204,204,252,204,204,204,204, + 204,2,106,122,252,48,48,48,48,48,48,48,48,252,2,106, + 122,12,12,12,12,12,12,12,204,216,112,2,106,122,204,216, + 240,224,224,240,240,216,204,204,2,106,122,192,192,192,192,192, + 192,192,192,192,252,2,106,122,132,204,204,252,252,204,204,204, + 204,204,2,106,122,204,204,236,236,236,220,220,220,204,204,2, + 106,122,120,204,204,204,204,204,204,204,204,120,2,106,122,248, + 204,204,204,204,248,192,192,192,192,0,108,124,120,204,204,204, + 204,204,236,220,204,120,12,4,2,106,122,248,204,204,204,248, + 216,204,204,204,204,2,106,122,120,204,204,96,48,48,24,204, + 204,120,2,106,122,252,48,48,48,48,48,48,48,48,48,2, + 106,122,204,204,204,204,204,204,204,204,204,120,2,106,122,204, + 204,204,204,204,204,204,120,120,48,2,106,122,204,204,204,204, + 204,252,252,252,252,72,2,106,122,204,204,120,120,48,48,120, + 120,204,204,2,106,122,204,204,204,120,120,48,48,48,48,48, + 2,106,122,252,12,24,24,48,48,96,96,192,252,16,93,125, + 248,192,192,192,192,192,192,192,192,192,192,192,248,0,109,125, + 192,192,192,96,96,48,48,48,24,24,12,12,12,16,93,125, + 248,24,24,24,24,24,24,24,24,24,24,24,248,11,99,115, + 48,120,204,0,98,114,252,252,26,67,115,192,96,48,2,103, + 119,120,204,28,108,204,204,124,2,106,122,192,192,192,248,204, + 204,204,204,204,248,2,103,119,120,204,192,192,192,204,120,2, + 106,122,12,12,12,124,204,204,204,204,204,124,2,103,119,120, + 204,204,252,192,204,120,2,106,122,24,60,48,48,252,48,48, + 48,48,48,0,105,121,116,220,216,216,112,64,248,204,120,2, + 106,122,192,192,192,248,204,204,204,204,204,204,34,42,122,192, + 192,0,192,192,192,192,192,192,192,16,92,124,24,24,0,24, + 24,24,24,24,24,24,216,112,2,106,122,192,192,192,200,216, + 240,240,216,204,196,34,42,122,192,192,192,192,192,192,192,192, + 192,192,2,103,119,216,252,252,252,252,252,204,2,103,119,248, + 204,204,204,204,204,204,2,103,119,120,204,204,204,204,204,120, + 0,105,121,248,204,204,204,204,204,248,192,192,0,105,121,124, + 204,204,204,204,204,124,12,12,2,103,119,248,204,204,192,192, + 192,192,2,103,119,120,204,96,48,24,204,120,2,106,122,48, + 48,48,252,48,48,48,48,48,28,2,103,119,204,204,204,204, + 204,204,124,2,103,119,204,204,204,120,120,48,48,2,103,119, + 204,204,252,252,252,252,72,2,103,119,204,204,120,48,120,204, + 204,0,105,121,204,204,108,108,56,56,24,216,112,2,103,119, + 252,12,24,48,96,192,252,16,93,125,56,96,96,96,96,96, + 192,96,96,96,96,96,56,32,45,125,192,192,192,192,192,192, + 192,192,192,192,192,192,192,16,93,125,224,48,48,48,48,48, + 24,48,48,48,48,48,224,9,100,116,68,244,188,136,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=14 x= 3 y=12 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14[2374] U8G_SECTION(".progmem.u8g_font_7x14") = { + 1,7,14,0,254,10,1,138,3,30,32,255,254,12,254,11, + 254,14,0,112,50,26,122,128,128,128,128,128,128,128,0,128, + 128,41,52,116,160,160,160,160,18,90,122,80,80,80,248,80, + 80,248,80,80,80,1,107,123,16,120,148,148,80,56,20,148, + 148,120,16,2,106,122,100,148,152,112,16,32,56,100,164,152, + 2,106,122,48,72,72,72,48,100,148,136,152,100,57,20,116, + 128,128,128,128,32,77,125,16,32,64,64,128,128,128,128,128, + 64,64,32,16,16,77,125,128,64,32,32,16,16,16,16,16, + 32,32,64,128,19,87,119,32,168,112,32,112,168,32,19,87, + 119,32,32,32,248,32,32,32,32,36,116,192,64,64,128,22, + 81,113,248,33,51,115,64,224,64,0,109,125,4,4,8,8, + 16,16,16,32,32,64,64,128,128,2,106,122,48,72,132,132, + 132,132,132,132,72,48,18,90,122,32,96,160,32,32,32,32, + 32,32,248,2,106,122,120,132,132,4,8,8,16,32,64,252, + 2,106,122,252,4,8,16,56,4,4,132,132,120,2,106,122, + 8,24,40,40,72,72,136,252,8,8,2,106,122,252,128,128, + 248,132,4,4,132,132,120,2,106,122,56,64,128,128,184,196, + 132,132,132,120,2,106,122,252,4,8,8,16,16,32,32,64, + 64,2,106,122,120,132,132,72,48,72,132,132,132,120,2,106, + 122,120,132,132,132,140,116,4,132,136,112,34,56,120,64,224, + 64,0,0,64,224,64,33,40,120,192,192,0,0,192,64,64, + 128,18,89,121,8,16,32,64,128,64,32,16,8,5,100,116, + 252,0,0,252,18,89,121,128,64,32,16,8,16,32,64,128, + 2,106,122,120,132,132,8,16,16,16,0,16,16,2,106,122, + 56,68,156,164,164,164,164,156,64,60,2,106,122,48,72,132, + 132,132,252,132,132,132,132,2,106,122,240,136,132,136,240,136, + 132,132,136,240,2,106,122,120,132,132,128,128,128,128,132,132, + 120,2,106,122,240,136,132,132,132,132,132,132,136,240,2,106, + 122,252,128,128,128,240,128,128,128,128,252,2,106,122,252,128, + 128,128,240,128,128,128,128,128,2,106,122,120,132,132,128,128, + 156,132,132,140,116,2,106,122,132,132,132,132,252,132,132,132, + 132,132,18,90,122,248,32,32,32,32,32,32,32,32,248,2, + 106,122,28,8,8,8,8,8,8,136,136,112,2,106,122,132, + 136,144,160,192,160,144,136,132,132,2,106,122,128,128,128,128, + 128,128,128,128,128,252,2,106,122,132,204,204,180,180,132,132, + 132,132,132,2,106,122,132,132,196,196,164,148,140,140,132,132, + 2,106,122,120,132,132,132,132,132,132,132,132,120,2,106,122, + 248,132,132,132,132,248,128,128,128,128,0,108,124,120,132,132, + 132,132,132,228,148,140,120,8,4,2,106,122,248,132,132,132, + 132,248,144,136,132,132,2,106,122,120,132,132,128,96,24,4, + 132,132,120,2,122,122,254,16,16,16,16,16,16,16,16,16, + 2,106,122,132,132,132,132,132,132,132,132,132,120,2,106,122, + 132,132,132,132,72,72,72,48,48,48,18,90,122,136,136,136, + 136,136,136,168,168,168,80,2,106,122,132,132,72,72,48,48, + 72,72,132,132,18,90,122,136,136,136,80,80,32,32,32,32, + 32,2,106,122,252,4,8,16,16,32,64,64,128,252,32,77, + 125,240,128,128,128,128,128,128,128,128,128,128,128,240,0,109, + 125,128,128,64,64,32,32,32,16,16,8,8,4,4,16,77, + 125,240,16,16,16,16,16,16,16,16,16,16,16,240,10,99, + 115,48,72,132,0,97,113,252,42,51,115,128,64,32,2,103, + 119,120,132,4,124,132,132,124,2,106,122,128,128,128,184,196, + 132,132,132,196,184,2,103,119,120,132,128,128,128,132,120,2, + 106,122,4,4,4,116,140,132,132,132,140,116,2,103,119,120, + 132,132,252,128,132,120,2,106,122,24,36,32,32,248,32,32, + 32,32,32,0,105,121,116,136,136,136,112,64,184,132,120,2, + 106,122,128,128,128,184,196,132,132,132,132,132,18,90,122,32, + 32,0,96,32,32,32,32,32,248,16,92,124,8,8,0,24, + 8,8,8,8,8,136,136,112,2,106,122,128,128,128,136,144, + 160,224,144,136,132,18,90,122,96,32,32,32,32,32,32,32, + 32,248,18,87,119,208,168,168,168,168,168,136,2,103,119,184, + 196,132,132,132,132,132,2,103,119,120,132,132,132,132,132,120, + 0,105,121,184,196,132,132,132,196,184,128,128,0,105,121,116, + 140,132,132,132,140,116,4,4,2,103,119,184,196,132,128,128, + 128,128,2,103,119,120,132,64,48,8,132,120,2,106,122,32, + 32,32,248,32,32,32,32,36,24,2,103,119,132,132,132,132, + 132,140,116,18,87,119,136,136,136,80,80,32,32,18,87,119, + 136,136,168,168,168,168,80,2,103,119,132,132,72,48,72,132, + 132,0,105,121,132,132,132,132,140,116,4,132,120,2,103,119, + 252,8,16,32,32,64,252,32,77,125,48,64,64,64,64,64, + 128,64,64,64,64,64,48,48,29,125,128,128,128,128,128,128, + 128,128,128,128,128,128,128,16,77,125,192,32,32,32,32,32, + 16,32,32,32,32,32,192,9,100,116,64,164,148,8,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,14, + 0,112,50,26,122,128,128,0,128,128,128,128,128,128,128,1, + 105,121,32,120,164,160,160,160,164,120,32,18,89,121,48,72, + 64,64,240,64,64,240,72,4,102,118,132,120,72,72,120,132, + 18,90,122,136,80,80,32,248,32,248,32,32,32,50,26,122, + 128,128,128,128,0,0,128,128,128,128,2,107,123,120,132,64, + 48,72,132,72,48,8,132,120,27,66,114,144,144,2,107,123, + 120,132,180,204,196,196,196,204,180,132,120,21,88,120,112,136, + 120,136,152,104,0,248,2,103,119,20,40,80,160,80,40,20, + 18,84,116,248,8,8,8,22,65,113,240,2,107,123,120,132, + 244,204,204,244,204,204,204,132,120,27,81,113,248,25,68,116, + 96,144,144,96,18,86,118,32,32,248,32,32,248,22,71,119, + 96,144,16,32,64,128,240,22,71,119,96,144,16,96,16,144, + 96,42,51,115,32,64,128,16,88,120,136,136,136,136,216,168, + 128,128,16,92,124,120,168,168,168,168,104,40,40,40,40,40, + 56,55,17,113,128,32,35,115,64,64,128,38,55,119,64,192, + 64,64,64,64,224,22,70,118,96,144,144,96,0,240,2,103, + 119,160,80,40,20,40,80,160,2,106,122,64,196,72,72,80, + 36,44,84,156,132,2,106,122,64,196,72,72,80,40,52,68, + 136,156,2,106,122,196,36,72,48,208,36,76,84,156,4,0, + 107,123,32,32,0,32,32,32,32,64,132,132,120,2,108,124, + 32,16,0,48,72,132,132,252,132,132,132,132,2,108,124,16, + 32,0,48,72,132,132,252,132,132,132,132,2,108,124,48,72, + 0,48,72,132,132,252,132,132,132,132,2,108,124,100,152,0, + 48,72,132,132,252,132,132,132,132,2,107,123,72,0,48,72, + 132,132,252,132,132,132,132,2,107,123,48,72,48,72,132,132, + 252,132,132,132,132,2,106,122,60,80,144,144,252,144,144,144, + 144,156,0,108,124,120,132,132,128,128,128,128,132,132,120,16, + 32,2,108,124,32,16,0,252,128,128,128,248,128,128,128,252, + 2,108,124,16,32,0,252,128,128,128,248,128,128,128,252,2, + 108,124,48,72,0,252,128,128,128,248,128,128,128,252,2,107, + 123,72,0,252,128,128,128,248,128,128,128,252,18,92,124,64, + 32,0,248,32,32,32,32,32,32,32,248,18,92,124,16,32, + 0,248,32,32,32,32,32,32,32,248,18,92,124,32,80,0, + 248,32,32,32,32,32,32,32,248,18,91,123,80,0,248,32, + 32,32,32,32,32,32,248,2,122,122,120,68,66,66,242,66, + 66,66,68,120,2,108,124,100,152,0,196,196,164,164,148,148, + 148,140,140,2,108,124,32,16,0,120,132,132,132,132,132,132, + 132,120,2,108,124,16,32,0,120,132,132,132,132,132,132,132, + 120,2,108,124,48,72,0,120,132,132,132,132,132,132,132,120, + 2,108,124,100,152,0,120,132,132,132,132,132,132,132,120,2, + 107,123,72,0,120,132,132,132,132,132,132,132,120,2,119,119, + 130,68,40,16,40,68,130,0,110,126,4,4,120,140,148,148, + 148,164,164,164,196,120,128,128,2,108,124,32,16,0,132,132, + 132,132,132,132,132,132,120,2,108,124,16,32,0,132,132,132, + 132,132,132,132,132,120,2,108,124,48,72,0,132,132,132,132, + 132,132,132,132,120,2,107,123,72,0,132,132,132,132,132,132, + 132,132,120,18,92,124,16,32,0,136,136,80,80,32,32,32, + 32,32,2,106,122,128,128,248,132,132,132,132,248,128,128,2, + 106,122,48,72,72,72,112,72,68,68,68,248,2,106,122,32, + 16,0,120,132,4,124,132,132,124,2,106,122,8,16,0,120, + 132,4,124,132,132,124,2,106,122,48,72,0,120,132,4,124, + 132,132,124,2,106,122,100,152,0,120,132,4,124,132,132,124, + 2,105,121,72,0,120,132,4,124,132,132,124,2,107,123,48, + 72,48,0,120,132,4,124,132,132,124,2,119,119,124,146,50, + 94,144,146,124,0,105,121,120,132,128,128,128,132,120,16,32, + 2,106,122,32,16,0,120,132,132,252,128,132,120,2,106,122, + 16,32,0,120,132,132,252,128,132,120,2,106,122,48,72,0, + 120,132,132,252,128,132,120,2,105,121,72,0,120,132,132,252, + 128,132,120,18,90,122,64,32,0,96,32,32,32,32,32,248, + 18,90,122,16,32,0,96,32,32,32,32,32,248,18,90,122, + 96,144,0,96,32,32,32,32,32,248,18,89,121,80,0,96, + 32,32,32,32,32,248,18,91,123,80,32,80,8,120,136,136, + 136,136,136,112,2,106,122,100,152,0,184,196,132,132,132,132, + 132,2,106,122,32,16,0,120,132,132,132,132,132,120,2,106, + 122,16,32,0,120,132,132,132,132,132,120,2,106,122,48,72, + 0,120,132,132,132,132,132,120,2,106,122,100,152,0,120,132, + 132,132,132,132,120,2,105,121,72,0,120,132,132,132,132,132, + 120,2,101,117,48,0,252,0,48,0,107,123,4,8,120,148, + 148,164,164,196,120,128,128,2,106,122,32,16,0,132,132,132, + 132,132,140,116,2,106,122,16,32,0,132,132,132,132,132,140, + 116,2,106,122,48,72,0,132,132,132,132,132,140,116,2,105, + 121,72,0,132,132,132,132,132,140,116,0,108,124,16,32,0, + 132,132,68,72,40,56,16,144,96,0,108,124,128,128,128,184, + 196,132,132,132,196,184,128,128,0,107,123,72,0,132,132,68, + 72,40,56,16,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=13 x= 3 y=12 dx= 7 dy= 0 ascent=12 len=13 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14r[1151] U8G_SECTION(".progmem.u8g_font_7x14r") = { + 1,7,14,0,254,10,1,138,3,30,32,127,254,12,254,11, + 254,14,0,112,50,26,122,128,128,128,128,128,128,128,0,128, + 128,41,52,116,160,160,160,160,18,90,122,80,80,80,248,80, + 80,248,80,80,80,1,107,123,16,120,148,148,80,56,20,148, + 148,120,16,2,106,122,100,148,152,112,16,32,56,100,164,152, + 2,106,122,48,72,72,72,48,100,148,136,152,100,57,20,116, + 128,128,128,128,32,77,125,16,32,64,64,128,128,128,128,128, + 64,64,32,16,16,77,125,128,64,32,32,16,16,16,16,16, + 32,32,64,128,19,87,119,32,168,112,32,112,168,32,19,87, + 119,32,32,32,248,32,32,32,32,36,116,192,64,64,128,22, + 81,113,248,33,51,115,64,224,64,0,109,125,4,4,8,8, + 16,16,16,32,32,64,64,128,128,2,106,122,48,72,132,132, + 132,132,132,132,72,48,18,90,122,32,96,160,32,32,32,32, + 32,32,248,2,106,122,120,132,132,4,8,8,16,32,64,252, + 2,106,122,252,4,8,16,56,4,4,132,132,120,2,106,122, + 8,24,40,40,72,72,136,252,8,8,2,106,122,252,128,128, + 248,132,4,4,132,132,120,2,106,122,56,64,128,128,184,196, + 132,132,132,120,2,106,122,252,4,8,8,16,16,32,32,64, + 64,2,106,122,120,132,132,72,48,72,132,132,132,120,2,106, + 122,120,132,132,132,140,116,4,132,136,112,34,56,120,64,224, + 64,0,0,64,224,64,33,40,120,192,192,0,0,192,64,64, + 128,18,89,121,8,16,32,64,128,64,32,16,8,5,100,116, + 252,0,0,252,18,89,121,128,64,32,16,8,16,32,64,128, + 2,106,122,120,132,132,8,16,16,16,0,16,16,2,106,122, + 56,68,156,164,164,164,164,156,64,60,2,106,122,48,72,132, + 132,132,252,132,132,132,132,2,106,122,240,136,132,136,240,136, + 132,132,136,240,2,106,122,120,132,132,128,128,128,128,132,132, + 120,2,106,122,240,136,132,132,132,132,132,132,136,240,2,106, + 122,252,128,128,128,240,128,128,128,128,252,2,106,122,252,128, + 128,128,240,128,128,128,128,128,2,106,122,120,132,132,128,128, + 156,132,132,140,116,2,106,122,132,132,132,132,252,132,132,132, + 132,132,18,90,122,248,32,32,32,32,32,32,32,32,248,2, + 106,122,28,8,8,8,8,8,8,136,136,112,2,106,122,132, + 136,144,160,192,160,144,136,132,132,2,106,122,128,128,128,128, + 128,128,128,128,128,252,2,106,122,132,204,204,180,180,132,132, + 132,132,132,2,106,122,132,132,196,196,164,148,140,140,132,132, + 2,106,122,120,132,132,132,132,132,132,132,132,120,2,106,122, + 248,132,132,132,132,248,128,128,128,128,0,108,124,120,132,132, + 132,132,132,228,148,140,120,8,4,2,106,122,248,132,132,132, + 132,248,144,136,132,132,2,106,122,120,132,132,128,96,24,4, + 132,132,120,2,122,122,254,16,16,16,16,16,16,16,16,16, + 2,106,122,132,132,132,132,132,132,132,132,132,120,2,106,122, + 132,132,132,132,72,72,72,48,48,48,18,90,122,136,136,136, + 136,136,136,168,168,168,80,2,106,122,132,132,72,72,48,48, + 72,72,132,132,18,90,122,136,136,136,80,80,32,32,32,32, + 32,2,106,122,252,4,8,16,16,32,64,64,128,252,32,77, + 125,240,128,128,128,128,128,128,128,128,128,128,128,240,0,109, + 125,128,128,64,64,32,32,32,16,16,8,8,4,4,16,77, + 125,240,16,16,16,16,16,16,16,16,16,16,16,240,10,99, + 115,48,72,132,0,97,113,252,42,51,115,128,64,32,2,103, + 119,120,132,4,124,132,132,124,2,106,122,128,128,128,184,196, + 132,132,132,196,184,2,103,119,120,132,128,128,128,132,120,2, + 106,122,4,4,4,116,140,132,132,132,140,116,2,103,119,120, + 132,132,252,128,132,120,2,106,122,24,36,32,32,248,32,32, + 32,32,32,0,105,121,116,136,136,136,112,64,184,132,120,2, + 106,122,128,128,128,184,196,132,132,132,132,132,18,90,122,32, + 32,0,96,32,32,32,32,32,248,16,92,124,8,8,0,24, + 8,8,8,8,8,136,136,112,2,106,122,128,128,128,136,144, + 160,224,144,136,132,18,90,122,96,32,32,32,32,32,32,32, + 32,248,18,87,119,208,168,168,168,168,168,136,2,103,119,184, + 196,132,132,132,132,132,2,103,119,120,132,132,132,132,132,120, + 0,105,121,184,196,132,132,132,196,184,128,128,0,105,121,116, + 140,132,132,132,140,116,4,4,2,103,119,184,196,132,128,128, + 128,128,2,103,119,120,132,64,48,8,132,120,2,106,122,32, + 32,32,248,32,32,32,32,36,24,2,103,119,132,132,132,132, + 132,140,116,18,87,119,136,136,136,80,80,32,32,18,87,119, + 136,136,168,168,168,168,80,2,103,119,132,132,72,48,72,132, + 132,0,105,121,132,132,132,132,140,116,4,132,120,2,103,119, + 252,8,16,32,32,64,252,32,77,125,48,64,64,64,64,64, + 128,64,64,64,64,64,48,48,29,125,128,128,128,128,128,128, + 128,128,128,128,128,128,128,16,77,125,192,32,32,32,32,32, + 16,32,32,32,32,32,192,9,100,116,64,164,148,8,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 7 y= 9 dx= 8 dy= 0 ascent=11 len=13 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[2420] U8G_SECTION(".progmem.u8g_font_8x13_67_75") = { + 1,8,13,0,254,3,1,94,2,193,32,255,0,11,254,10, + 0,3,133,133,36,18,255,18,36,18,88,136,32,32,168,112, + 32,168,112,32,2,119,135,16,34,68,248,68,34,16,18,119, + 135,16,136,68,62,68,136,16,3,133,133,32,65,255,65,32, + 18,89,137,32,112,168,32,32,32,32,32,112,3,133,133,4, + 130,255,130,4,18,89,137,112,32,32,32,32,32,168,112,32, + 2,122,138,16,56,84,16,16,16,84,56,16,254,3,133,133, + 34,65,254,64,32,3,133,133,68,130,127,2,4,3,133,133, + 34,69,254,68,36,3,133,133,68,162,127,34,36,3,133,133, + 36,90,231,66,36,3,133,133,36,82,255,82,36,18,106,138, + 64,64,128,152,104,8,16,84,56,16,18,106,138,32,64,252, + 68,36,4,4,4,4,4,18,106,138,16,8,252,136,144,128, + 128,128,128,128,18,106,138,4,4,4,4,4,36,68,252,64, + 32,18,106,138,128,128,128,128,128,144,136,252,8,16,18,104, + 136,240,16,16,16,16,84,56,16,18,90,138,8,8,8,8, + 8,40,72,248,64,32,4,135,135,12,18,33,33,169,112,32, + 4,135,135,48,72,132,132,149,14,4,2,136,136,255,0,112, + 96,80,8,4,2,2,136,136,136,144,190,144,9,125,9,17, + 4,135,135,100,142,149,132,132,72,48,4,135,135,38,113,169, + 33,33,18,12,5,131,131,32,64,255,3,131,131,255,64,32, + 50,57,137,128,192,160,128,128,128,128,128,128,34,57,137,32, + 96,160,32,32,32,32,32,32,5,131,131,4,2,255,3,131, + 131,255,2,4,50,57,137,128,128,128,128,128,128,160,192,128, + 34,57,137,32,32,32,32,32,32,160,96,32,2,121,137,8, + 4,254,4,40,64,254,64,32,2,138,138,36,116,172,36,36, + 36,36,53,46,36,2,121,137,32,64,254,64,40,4,254,4, + 8,2,139,139,32,64,255,64,32,0,32,64,255,64,32,2, + 122,138,68,238,68,68,68,68,68,68,68,68,2,139,139,4, + 2,255,2,4,0,4,2,255,2,4,2,122,138,68,68,68, + 68,68,68,68,68,238,68,2,119,135,32,64,254,0,254,4, + 8,2,119,135,8,4,254,0,254,64,32,2,135,135,16,33, + 127,130,127,36,16,3,133,133,36,126,153,126,36,2,135,135, + 8,36,254,65,254,132,8,2,135,135,16,32,127,128,127,32, + 16,18,121,137,16,40,108,170,40,40,40,40,40,2,135,135, + 8,4,254,1,254,4,8,2,121,137,40,40,40,40,40,170, + 108,40,16,3,133,133,36,126,129,126,36,2,123,139,16,40, + 108,170,40,40,40,170,108,40,16,2,119,135,252,144,136,196, + 162,144,8,18,119,135,126,18,34,70,138,18,32,18,119,135, + 32,18,138,70,34,18,126,2,119,135,8,144,162,196,136,144, + 252,2,137,137,8,16,63,64,255,64,63,16,8,2,137,137, + 16,8,252,2,255,2,252,8,16,2,135,135,16,32,72,245, + 66,32,16,2,135,135,8,4,18,175,66,4,8,2,122,138, + 16,56,84,146,16,124,16,124,16,16,2,122,138,16,16,124, + 16,124,16,146,84,56,16,2,119,135,16,32,64,182,64,32, + 16,2,122,138,16,40,84,146,0,16,16,0,16,16,18,119, + 135,16,8,4,218,4,8,16,2,122,138,16,16,0,16,16, + 0,146,84,40,16,3,117,133,144,160,254,160,144,19,117,133, + 18,10,254,10,18,2,135,135,16,48,95,129,95,48,16,2, + 121,137,16,40,68,238,40,40,40,40,56,2,135,135,8,12, + 250,129,250,12,8,2,121,137,56,40,40,40,40,238,68,40, + 16,1,123,139,16,40,68,238,40,40,56,0,56,40,56,1, + 122,138,16,40,68,238,40,40,40,108,68,124,1,122,138,16, + 40,68,254,40,40,40,108,68,124,1,122,138,16,40,68,254, + 56,56,56,124,68,124,2,121,137,16,40,68,238,68,238,40, + 40,56,1,122,138,16,40,68,238,68,238,40,108,68,124,2, + 135,135,136,140,250,129,250,140,136,2,119,135,254,128,188,176, + 168,164,130,2,119,135,130,74,42,26,122,2,254,2,121,137, + 16,40,68,238,40,238,68,40,16,4,133,133,36,82,255,82, + 36,2,138,138,36,46,53,36,36,36,36,172,116,36,0,141, + 141,4,2,255,2,4,2,255,2,4,2,255,2,4,4,117, + 133,40,72,254,72,40,20,117,133,40,36,254,36,40,4,117, + 133,16,84,254,84,16,4,133,133,42,74,255,74,42,4,133, + 133,84,82,255,82,84,4,133,133,24,90,255,90,24,3,135, + 135,16,48,80,159,80,48,16,3,135,135,8,12,10,249,10, + 12,8,4,133,133,36,102,189,102,36,7,134,134,255,255,255, + 255,255,255,0,130,130,255,255,0,131,131,255,255,255,0,133, + 133,255,255,255,255,255,0,135,135,255,255,255,255,255,255,255, + 0,136,136,255,255,255,255,255,255,255,255,0,138,138,255,255, + 255,255,255,255,255,255,255,255,0,139,139,255,255,255,255,255, + 255,255,255,255,255,255,0,141,141,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,125,141,254,254,254,254,254,254,254, + 254,254,254,254,254,254,0,109,141,252,252,252,252,252,252,252, + 252,252,252,252,252,252,0,93,141,248,248,248,248,248,248,248, + 248,248,248,248,248,248,0,77,141,240,240,240,240,240,240,240, + 240,240,240,240,240,240,0,61,141,224,224,224,224,224,224,224, + 224,224,224,224,224,224,0,45,141,192,192,192,192,192,192,192, + 192,192,192,192,192,192,0,29,141,128,128,128,128,128,128,128, + 128,128,128,128,128,128,64,77,141,240,240,240,240,240,240,240, + 240,240,240,240,240,240,1,139,139,85,0,170,0,85,0,170, + 0,85,0,170,0,141,141,170,85,170,85,170,85,170,85,170, + 85,170,85,170,0,141,141,255,85,255,170,255,85,255,170,255, + 85,255,170,255,11,130,130,255,255,112,29,141,128,128,128,128, + 128,128,128,128,128,128,128,128,128,0,71,135,240,240,240,240, + 240,240,240,64,71,135,240,240,240,240,240,240,240,7,70,134, + 240,240,240,240,240,240,0,141,141,240,240,240,240,240,240,255, + 255,255,255,255,255,255,0,141,141,240,240,240,240,240,240,15, + 15,15,15,15,15,15,0,141,141,255,255,255,255,255,255,240, + 240,240,240,240,240,240,0,141,141,255,255,255,255,255,255,15, + 15,15,15,15,15,15,71,70,134,240,240,240,240,240,240,0, + 141,141,15,15,15,15,15,15,240,240,240,240,240,240,240,0, + 141,141,15,15,15,15,15,15,255,255,255,255,255,255,255,2, + 119,135,254,254,254,254,254,254,254,2,119,135,254,130,130,130, + 130,130,254,2,119,135,124,130,130,130,130,130,124,2,119,135, + 254,130,186,186,186,130,254,2,119,135,254,130,254,130,254,130, + 254,2,119,135,254,170,170,170,170,170,254,2,119,135,254,170, + 254,170,254,170,254,2,119,135,254,146,138,198,162,146,254,2, + 119,135,254,146,162,198,138,146,254,2,119,135,254,214,170,214, + 170,214,254,37,51,131,224,224,224,37,51,131,224,160,224,21, + 100,132,252,252,252,252,21,100,132,252,132,132,252,18,89,137, + 248,248,248,248,248,248,248,248,248,18,89,137,248,136,136,136, + 136,136,136,136,248,5,132,132,31,62,124,248,5,132,132,31, + 34,68,248,2,136,136,24,24,60,60,126,126,255,255,2,136, + 136,24,24,36,36,66,66,129,255,18,102,134,48,48,120,120, + 252,252,18,102,134,48,48,72,72,132,252,18,107,139,128,192, + 224,240,248,252,248,240,224,192,128,18,107,139,128,192,160,144, + 136,132,136,144,160,192,128,20,101,133,192,240,252,240,192,20, + 101,133,192,176,140,176,192,3,119,135,128,224,248,254,248,224, + 128,3,119,135,128,224,152,134,152,224,128,2,136,136,255,255, + 126,126,60,60,24,24,2,136,136,255,129,66,66,36,36,24, + 24,18,102,134,252,252,120,120,48,48,18,102,134,252,132,72, + 72,48,48,18,107,139,4,12,28,60,124,252,124,60,28,12, + 4,18,107,139,4,12,20,36,68,132,68,36,20,12,4,20, + 101,133,12,60,252,60,12,20,101,133,12,52,196,52,12,3, + 119,135,2,14,62,254,62,14,2,3,119,135,2,14,50,194, + 50,14,2,3,119,135,16,56,124,254,124,56,16,3,119,135, + 16,40,68,130,68,40,16,3,119,135,16,40,84,186,84,40, + 16,3,119,135,56,68,146,186,146,68,56,18,105,137,48,48, + 72,72,132,72,72,48,48,2,136,136,60,66,129,129,129,129, + 66,60,2,136,136,24,66,0,129,129,0,66,24,2,136,136, + 60,106,171,171,171,171,106,60,2,136,136,60,66,153,165,165, + 153,66,60,2,136,136,60,126,255,255,255,255,126,60,2,136, + 136,60,114,241,241,241,241,114,60,2,136,136,60,78,143,143, + 143,143,78,60,2,136,136,60,66,129,129,255,255,126,60,2, + 136,136,60,126,255,255,129,129,66,60,2,136,136,60,78,143, + 143,129,129,66,60,2,136,136,60,78,143,143,255,255,126,60, + 2,72,136,48,112,240,240,240,240,112,48,66,72,136,192,224, + 240,240,240,240,224,192,0,141,141,255,255,255,255,195,129,129, + 129,129,195,255,255,255,0,141,141,255,255,255,255,195,153,189, + 189,153,195,255,255,255,6,135,135,255,255,255,255,195,153,189, + 0,134,134,189,153,195,255,255,255,6,68,132,48,64,128,128, + 70,68,132,192,32,16,16,66,68,132,16,16,32,192,2,68, + 132,128,128,64,48,6,132,132,60,66,129,129,2,132,132,129, + 129,66,60,2,136,136,1,3,7,15,31,63,127,255,2,136, + 136,128,192,224,240,248,252,254,255,2,136,136,255,254,252,248, + 240,224,192,128,2,136,136,255,127,63,31,15,7,3,1,20, + 85,133,112,136,136,136,112,2,120,136,254,226,226,226,226,226, + 226,254,2,120,136,254,142,142,142,142,142,142,254,2,120,136, + 254,254,250,242,226,194,130,254,2,120,136,254,130,134,142,158, + 190,254,254,2,120,136,254,146,146,146,146,146,146,254,2,122, + 138,16,16,40,40,68,84,124,146,130,254,2,122,138,16,16, + 56,56,116,116,116,242,242,254,2,122,138,16,16,56,56,92, + 92,92,158,158,254,2,136,136,60,66,129,129,129,129,66,60, + 2,119,135,254,146,146,242,130,130,254,2,119,135,254,130,130, + 242,146,146,254,2,119,135,254,130,130,158,146,146,254,2,119, + 135,254,146,146,158,130,130,254,2,119,135,124,146,146,242,130, + 130,124,2,119,135,124,130,130,242,146,146,124,2,119,135,124, + 130,130,158,146,146,124,2,119,135,124,146,146,158,130,130,124, + 19,102,134,252,136,144,160,192,128,19,102,134,252,68,36,20, + 12,4,19,102,134,128,192,160,144,136,252,19,102,134,252,132, + 132,132,132,252,19,102,134,252,252,252,252,252,252,37,68,132, + 240,144,144,240,37,68,132,240,240,240,240,19,102,134,4,12, + 20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 11, '1' Height: 4 + Calculated Max Values w= 8 h=11 x= 2 y= 3 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13_75r[496] U8G_SECTION(".progmem.u8g_font_8x13_75r") = { + 1,8,13,0,254,11,1,83,0,0,32,79,0,11,0,11, + 0,2,119,135,254,254,254,254,254,254,254,2,119,135,254,130, + 130,130,130,130,254,2,119,135,124,130,130,130,130,130,124,2, + 119,135,254,130,186,186,186,130,254,2,119,135,254,130,254,130, + 254,130,254,2,119,135,254,170,170,170,170,170,254,2,119,135, + 254,170,254,170,254,170,254,2,119,135,254,146,138,198,162,146, + 254,2,119,135,254,146,162,198,138,146,254,2,119,135,254,214, + 170,214,170,214,254,37,51,131,224,224,224,37,51,131,224,160, + 224,21,100,132,252,252,252,252,21,100,132,252,132,132,252,18, + 89,137,248,248,248,248,248,248,248,248,248,18,89,137,248,136, + 136,136,136,136,136,136,248,5,132,132,31,62,124,248,5,132, + 132,31,34,68,248,2,136,136,24,24,60,60,126,126,255,255, + 2,136,136,24,24,36,36,66,66,129,255,18,102,134,48,48, + 120,120,252,252,18,102,134,48,48,72,72,132,252,18,107,139, + 128,192,224,240,248,252,248,240,224,192,128,18,107,139,128,192, + 160,144,136,132,136,144,160,192,128,20,101,133,192,240,252,240, + 192,20,101,133,192,176,140,176,192,3,119,135,128,224,248,254, + 248,224,128,3,119,135,128,224,152,134,152,224,128,2,136,136, + 255,255,126,126,60,60,24,24,2,136,136,255,129,66,66,36, + 36,24,24,18,102,134,252,252,120,120,48,48,18,102,134,252, + 132,72,72,48,48,18,107,139,4,12,28,60,124,252,124,60, + 28,12,4,18,107,139,4,12,20,36,68,132,68,36,20,12, + 4,20,101,133,12,60,252,60,12,20,101,133,12,52,196,52, + 12,3,119,135,2,14,62,254,62,14,2,3,119,135,2,14, + 50,194,50,14,2,3,119,135,16,56,124,254,124,56,16,3, + 119,135,16,40,68,130,68,40,16,3,119,135,16,40,84,186, + 84,40,16,3,119,135,56,68,146,186,146,68,56,18,105,137, + 48,48,72,72,132,72,72,48,48,2,136,136,60,66,129,129, + 129,129,66,60,2,136,136,24,66,0,129,129,0,66,24,2, + 136,136,60,106,171,171,171,171,106,60,2,136,136,60,66,153, + 165,165,153,66,60,2,136,136,60,126,255,255,255,255,126,60 + }; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=12 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=12 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13B[2302] U8G_SECTION(".progmem.u8g_font_8x13B") = { + 1,8,13,0,254,10,1,127,3,12,32,255,254,11,254,10, + 254,13,0,128,50,42,138,192,192,192,192,192,192,192,0,192, + 192,24,84,132,216,216,216,216,2,121,137,108,108,254,254,108, + 254,254,108,108,1,123,139,16,124,214,208,240,124,30,22,214, + 124,16,2,122,138,230,166,236,24,24,48,48,110,202,206,2, + 119,135,120,204,204,120,206,204,126,56,36,132,192,192,192,192, + 17,91,139,24,48,96,96,192,192,192,96,96,48,24,17,91, + 139,192,96,48,48,24,24,24,48,48,96,192,3,119,135,16, + 16,254,56,56,108,68,20,102,134,48,48,252,252,48,48,33, + 69,133,240,112,112,96,192,22,97,129,252,34,67,131,96,240, + 96,2,122,138,2,6,6,12,24,48,96,192,192,128,2,122, + 138,56,108,198,198,198,198,198,198,108,56,18,106,138,48,112, + 240,48,48,48,48,48,48,252,2,122,138,124,198,198,6,12, + 24,48,96,192,254,2,122,138,254,6,12,24,60,6,6,6, + 198,124,2,122,138,12,28,60,108,204,204,254,12,12,12,2, + 122,138,254,192,192,252,230,6,6,6,198,124,2,122,138,60, + 96,192,192,252,230,198,198,230,124,2,122,138,254,6,6,12, + 24,24,48,48,48,48,2,122,138,124,198,198,198,124,198,198, + 198,198,124,2,122,138,124,206,198,198,206,126,6,6,12,120, + 34,72,136,96,240,96,0,0,96,240,96,33,73,137,96,240, + 96,0,240,112,112,96,192,18,105,137,12,24,48,96,192,96, + 48,24,12,20,100,132,252,0,0,252,18,105,137,192,96,48, + 24,12,24,48,96,192,2,122,138,124,198,198,6,12,24,24, + 0,24,24,2,121,137,124,254,206,222,210,210,222,224,126,2, + 122,138,56,124,198,198,198,254,198,198,198,198,2,122,138,252, + 102,102,102,124,102,102,102,102,252,2,122,138,124,230,198,192, + 192,192,192,198,230,124,2,122,138,252,102,102,102,102,102,102, + 102,102,252,2,122,138,254,192,192,192,248,192,192,192,192,254, + 2,122,138,254,192,192,192,248,192,192,192,192,192,2,122,138, + 124,198,198,192,192,192,206,198,198,124,2,122,138,198,198,198, + 198,254,198,198,198,198,198,34,74,138,240,96,96,96,96,96, + 96,96,96,240,2,122,138,14,6,6,6,6,6,6,198,198, + 124,2,122,138,198,198,204,216,240,240,216,204,198,198,2,122, + 138,192,192,192,192,192,192,192,192,194,254,2,122,138,198,198, + 238,254,214,198,198,198,198,198,2,122,138,198,198,230,230,246, + 222,206,206,198,198,2,122,138,124,198,198,198,198,198,198,198, + 198,124,2,122,138,252,198,198,198,198,252,192,192,192,192,1, + 123,139,124,198,198,198,198,198,198,198,222,124,6,2,122,138, + 252,198,198,198,252,248,204,204,198,198,2,122,138,124,198,198, + 192,124,6,6,198,198,124,18,106,138,252,48,48,48,48,48, + 48,48,48,48,2,122,138,198,198,198,198,198,198,198,198,198, + 124,2,122,138,198,198,198,198,68,108,108,56,56,16,2,122, + 138,198,198,198,198,198,198,214,214,254,108,2,122,138,198,198, + 108,108,56,56,108,108,198,198,18,106,138,204,204,204,120,120, + 48,48,48,48,48,2,122,138,254,6,6,12,24,48,96,192, + 192,254,17,91,139,248,192,192,192,192,192,192,192,192,192,248, + 2,122,138,128,192,192,96,48,24,12,6,6,2,17,91,139, + 248,24,24,24,24,24,24,24,24,24,248,8,116,132,16,56, + 108,198,1,113,129,254,41,67,131,192,96,48,2,119,135,124, + 6,126,198,198,206,118,2,122,138,192,192,192,220,230,198,198, + 198,230,220,2,119,135,124,230,192,192,192,230,124,2,122,138, + 6,6,6,118,206,198,198,198,206,118,2,119,135,124,198,198, + 254,192,198,124,2,122,138,60,102,96,96,96,252,96,96,96, + 96,0,121,137,126,204,204,204,120,240,124,198,124,2,122,138, + 192,192,192,220,230,198,198,198,198,198,34,73,137,96,96,0, + 224,96,96,96,96,240,0,123,139,6,6,0,14,6,6,6, + 6,198,198,124,2,122,138,192,192,192,204,216,240,240,216,204, + 198,34,74,138,224,96,96,96,96,96,96,96,96,240,2,119, + 135,108,254,214,214,198,198,198,2,119,135,220,230,198,198,198, + 198,198,2,119,135,124,198,198,198,198,198,124,0,121,137,220, + 230,198,198,198,230,220,192,192,0,121,137,118,206,198,198,198, + 206,118,6,6,2,119,135,220,230,192,192,192,192,192,2,119, + 135,124,198,96,56,12,198,124,2,122,138,96,96,96,96,252, + 96,96,96,102,60,2,119,135,198,198,198,198,198,206,118,2, + 119,135,198,198,198,198,108,108,56,2,119,135,198,198,198,214, + 214,254,108,2,119,135,198,198,108,56,108,198,198,0,121,137, + 198,198,198,198,206,118,6,198,124,2,119,135,254,12,24,48, + 96,192,254,17,107,139,60,96,96,96,48,224,48,96,96,96, + 60,50,42,138,192,192,192,192,192,192,192,192,192,192,17,107, + 139,240,24,24,24,48,28,48,24,24,24,240,8,115,131,114, + 254,156,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,13,0,128,50,42,138,192,192,0,192,192,192,192, + 192,192,192,3,104,136,16,124,212,208,208,212,124,16,1,123, + 139,60,102,96,96,252,96,96,96,240,190,224,3,119,135,198, + 254,108,68,108,254,198,18,106,138,204,204,204,120,120,252,48, + 252,48,48,50,42,138,192,192,192,192,0,0,192,192,192,192, + 18,106,138,120,204,192,120,204,204,120,12,204,120,26,82,130, + 216,216,3,121,137,124,198,186,234,226,234,186,198,124,21,87, + 135,240,24,248,152,248,0,248,3,119,135,54,108,216,176,216, + 108,54,3,101,133,252,252,4,4,4,22,81,129,248,3,121, + 137,124,198,186,170,186,178,170,198,124,28,97,129,252,24,100, + 132,120,204,204,120,19,103,135,48,48,252,48,48,0,252,22, + 70,134,224,176,48,96,192,240,22,70,134,224,176,96,48,176, + 224,41,67,131,48,96,192,0,121,137,198,198,198,198,198,238, + 252,192,192,1,123,139,62,122,202,202,202,122,58,10,10,10, + 14,54,34,130,192,192,16,67,131,48,144,96,22,70,134,96, + 224,96,96,96,240,21,87,135,112,248,136,248,112,0,248,3, + 119,135,216,108,54,26,54,108,216,2,122,138,96,224,96,96, + 98,246,14,26,30,6,2,122,138,96,224,96,96,124,246,6, + 12,24,30,2,122,138,224,176,96,48,178,230,14,26,30,6, + 18,106,138,48,48,0,48,48,96,192,204,204,120,2,122,138, + 48,24,0,56,124,198,198,254,198,198,2,122,138,24,48,0, + 56,124,198,198,254,198,198,2,122,138,56,108,0,56,124,198, + 198,254,198,198,2,122,138,52,88,0,56,124,198,198,254,198, + 198,2,122,138,108,108,0,56,124,198,198,254,198,198,2,123, + 139,24,36,24,0,56,124,198,198,254,198,198,2,122,138,126, + 248,216,216,216,252,216,216,216,222,0,124,140,124,230,192,192, + 192,192,192,230,124,24,72,48,2,122,138,48,24,0,254,192, + 192,248,192,192,254,2,122,138,24,48,0,254,192,192,248,192, + 192,254,2,122,138,56,108,0,254,192,192,248,192,192,254,2, + 122,138,108,108,0,254,192,192,248,192,192,254,34,74,138,192, + 96,0,240,96,96,96,96,96,240,34,74,138,48,96,0,240, + 96,96,96,96,96,240,34,90,138,112,216,0,240,96,96,96, + 96,96,240,34,90,138,216,216,0,240,96,96,96,96,96,240, + 2,120,136,252,102,102,246,102,102,102,252,2,122,138,52,88, + 0,198,230,246,214,222,206,198,2,123,139,48,24,0,124,198, + 198,198,198,198,198,124,2,123,139,24,48,0,124,198,198,198, + 198,198,198,124,2,123,139,56,108,0,124,198,198,198,198,198, + 198,124,2,123,139,52,88,0,124,198,198,198,198,198,198,124, + 2,123,139,108,108,0,124,198,198,198,198,198,198,124,2,119, + 135,198,198,124,56,124,198,198,1,122,138,2,124,206,214,214, + 214,214,230,124,128,2,122,138,48,24,0,198,198,198,198,198, + 198,124,2,122,138,24,48,0,198,198,198,198,198,198,124,2, + 122,138,56,108,0,198,198,198,198,198,198,124,2,122,138,108, + 108,0,198,198,198,198,198,198,124,18,106,138,24,48,0,204, + 72,120,48,48,48,48,2,121,137,192,252,198,198,198,252,192, + 192,192,2,122,138,60,102,102,108,236,108,102,102,102,108,2, + 122,138,48,24,0,124,6,126,198,198,206,118,2,122,138,24, + 48,0,124,6,126,198,198,206,118,2,122,138,56,108,0,124, + 6,126,198,198,206,118,2,122,138,52,88,0,124,6,126,198, + 198,206,118,2,122,138,108,108,0,124,6,126,198,198,206,118, + 2,123,139,24,36,24,0,124,6,126,198,198,206,118,2,119, + 135,108,218,26,124,216,218,108,0,122,138,124,230,192,192,192, + 230,124,24,72,48,2,122,138,48,24,0,124,198,198,254,192, + 198,124,2,122,138,24,48,0,124,198,198,254,192,198,124,2, + 122,138,56,108,0,124,198,198,254,192,198,124,2,122,138,108, + 108,0,124,198,198,254,192,198,124,34,74,138,192,96,0,224, + 96,96,96,96,96,240,34,74,138,96,192,0,224,96,96,96, + 96,96,240,18,90,138,112,216,0,112,48,48,48,48,48,120, + 18,90,138,216,216,0,112,48,48,48,48,48,120,2,122,138, + 108,56,120,12,126,198,198,198,198,124,2,122,138,52,88,0, + 220,230,198,198,198,198,198,2,122,138,48,24,0,124,198,198, + 198,198,198,124,2,122,138,24,48,0,124,198,198,198,198,198, + 124,2,122,138,56,108,0,124,198,198,198,198,198,124,2,122, + 138,52,88,0,124,198,198,198,198,198,124,2,122,138,108,108, + 0,124,198,198,198,198,198,124,19,103,135,48,48,0,252,0, + 48,48,1,121,137,2,124,206,214,214,214,230,124,128,2,122, + 138,48,24,0,198,198,198,198,198,206,118,2,122,138,24,48, + 0,198,198,198,198,198,206,118,2,122,138,56,108,0,198,198, + 198,198,198,206,118,2,122,138,108,108,0,198,198,198,198,198, + 206,118,0,124,140,24,48,0,198,198,198,198,206,118,6,198, + 124,0,123,139,192,192,220,230,198,198,198,230,220,192,192,0, + 124,140,108,108,0,198,198,198,198,206,118,6,198,124}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13Br[1123] U8G_SECTION(".progmem.u8g_font_8x13Br") = { + 1,8,13,0,254,10,1,127,3,12,32,127,254,11,254,10, + 254,13,0,128,50,42,138,192,192,192,192,192,192,192,0,192, + 192,24,84,132,216,216,216,216,2,121,137,108,108,254,254,108, + 254,254,108,108,1,123,139,16,124,214,208,240,124,30,22,214, + 124,16,2,122,138,230,166,236,24,24,48,48,110,202,206,2, + 119,135,120,204,204,120,206,204,126,56,36,132,192,192,192,192, + 17,91,139,24,48,96,96,192,192,192,96,96,48,24,17,91, + 139,192,96,48,48,24,24,24,48,48,96,192,3,119,135,16, + 16,254,56,56,108,68,20,102,134,48,48,252,252,48,48,33, + 69,133,240,112,112,96,192,22,97,129,252,34,67,131,96,240, + 96,2,122,138,2,6,6,12,24,48,96,192,192,128,2,122, + 138,56,108,198,198,198,198,198,198,108,56,18,106,138,48,112, + 240,48,48,48,48,48,48,252,2,122,138,124,198,198,6,12, + 24,48,96,192,254,2,122,138,254,6,12,24,60,6,6,6, + 198,124,2,122,138,12,28,60,108,204,204,254,12,12,12,2, + 122,138,254,192,192,252,230,6,6,6,198,124,2,122,138,60, + 96,192,192,252,230,198,198,230,124,2,122,138,254,6,6,12, + 24,24,48,48,48,48,2,122,138,124,198,198,198,124,198,198, + 198,198,124,2,122,138,124,206,198,198,206,126,6,6,12,120, + 34,72,136,96,240,96,0,0,96,240,96,33,73,137,96,240, + 96,0,240,112,112,96,192,18,105,137,12,24,48,96,192,96, + 48,24,12,20,100,132,252,0,0,252,18,105,137,192,96,48, + 24,12,24,48,96,192,2,122,138,124,198,198,6,12,24,24, + 0,24,24,2,121,137,124,254,206,222,210,210,222,224,126,2, + 122,138,56,124,198,198,198,254,198,198,198,198,2,122,138,252, + 102,102,102,124,102,102,102,102,252,2,122,138,124,230,198,192, + 192,192,192,198,230,124,2,122,138,252,102,102,102,102,102,102, + 102,102,252,2,122,138,254,192,192,192,248,192,192,192,192,254, + 2,122,138,254,192,192,192,248,192,192,192,192,192,2,122,138, + 124,198,198,192,192,192,206,198,198,124,2,122,138,198,198,198, + 198,254,198,198,198,198,198,34,74,138,240,96,96,96,96,96, + 96,96,96,240,2,122,138,14,6,6,6,6,6,6,198,198, + 124,2,122,138,198,198,204,216,240,240,216,204,198,198,2,122, + 138,192,192,192,192,192,192,192,192,194,254,2,122,138,198,198, + 238,254,214,198,198,198,198,198,2,122,138,198,198,230,230,246, + 222,206,206,198,198,2,122,138,124,198,198,198,198,198,198,198, + 198,124,2,122,138,252,198,198,198,198,252,192,192,192,192,1, + 123,139,124,198,198,198,198,198,198,198,222,124,6,2,122,138, + 252,198,198,198,252,248,204,204,198,198,2,122,138,124,198,198, + 192,124,6,6,198,198,124,18,106,138,252,48,48,48,48,48, + 48,48,48,48,2,122,138,198,198,198,198,198,198,198,198,198, + 124,2,122,138,198,198,198,198,68,108,108,56,56,16,2,122, + 138,198,198,198,198,198,198,214,214,254,108,2,122,138,198,198, + 108,108,56,56,108,108,198,198,18,106,138,204,204,204,120,120, + 48,48,48,48,48,2,122,138,254,6,6,12,24,48,96,192, + 192,254,17,91,139,248,192,192,192,192,192,192,192,192,192,248, + 2,122,138,128,192,192,96,48,24,12,6,6,2,17,91,139, + 248,24,24,24,24,24,24,24,24,24,248,8,116,132,16,56, + 108,198,1,113,129,254,41,67,131,192,96,48,2,119,135,124, + 6,126,198,198,206,118,2,122,138,192,192,192,220,230,198,198, + 198,230,220,2,119,135,124,230,192,192,192,230,124,2,122,138, + 6,6,6,118,206,198,198,198,206,118,2,119,135,124,198,198, + 254,192,198,124,2,122,138,60,102,96,96,96,252,96,96,96, + 96,0,121,137,126,204,204,204,120,240,124,198,124,2,122,138, + 192,192,192,220,230,198,198,198,198,198,34,73,137,96,96,0, + 224,96,96,96,96,240,0,123,139,6,6,0,14,6,6,6, + 6,198,198,124,2,122,138,192,192,192,204,216,240,240,216,204, + 198,34,74,138,224,96,96,96,96,96,96,96,96,240,2,119, + 135,108,254,214,214,198,198,198,2,119,135,220,230,198,198,198, + 198,198,2,119,135,124,198,198,198,198,198,124,0,121,137,220, + 230,198,198,198,230,220,192,192,0,121,137,118,206,198,198,198, + 206,118,6,6,2,119,135,220,230,192,192,192,192,192,2,119, + 135,124,198,96,56,12,198,124,2,122,138,96,96,96,96,252, + 96,96,96,102,60,2,119,135,198,198,198,198,198,206,118,2, + 119,135,198,198,198,198,108,108,56,2,119,135,198,198,198,214, + 214,254,108,2,119,135,198,198,108,56,108,198,198,0,121,137, + 198,198,198,198,206,118,6,198,124,2,119,135,254,12,24,48, + 96,192,254,17,107,139,60,96,96,96,48,224,48,96,96,96, + 60,50,42,138,192,192,192,192,192,192,192,192,192,192,17,107, + 139,240,24,24,24,48,28,48,24,24,24,240,8,115,131,114, + 254,156,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13[2152] U8G_SECTION(".progmem.u8g_font_8x13") = { + 1,8,13,0,254,9,1,97,2,205,32,255,254,11,254,9, + 254,13,0,128,50,25,137,128,128,128,128,128,128,128,0,128, + 40,67,131,144,144,144,19,103,135,72,72,252,72,252,72,72, + 18,89,137,32,120,160,160,112,40,40,240,32,18,105,137,68, + 164,72,16,16,32,72,84,136,18,103,135,96,144,144,96,148, + 136,116,56,19,131,128,128,128,50,57,137,32,64,64,128,128, + 128,64,64,32,34,57,137,128,64,64,32,32,32,64,64,128, + 22,101,133,72,48,252,48,72,20,85,133,32,32,248,32,32, + 17,67,131,112,96,128,22,81,129,248,33,51,131,64,224,64, + 2,121,137,2,2,4,8,16,32,64,128,128,18,105,137,48, + 72,132,132,132,132,132,72,48,18,89,137,32,96,160,32,32, + 32,32,32,248,18,105,137,120,132,132,4,8,48,64,128,252, + 18,105,137,252,4,8,16,56,4,4,132,120,18,105,137,8, + 24,40,72,136,136,252,8,8,18,105,137,252,128,128,184,196, + 4,4,132,120,18,105,137,56,64,128,128,184,196,132,132,120, + 18,105,137,252,4,8,16,16,32,32,64,64,18,105,137,120, + 132,132,132,120,132,132,132,120,18,105,137,120,132,132,140,116, + 4,4,8,112,33,56,136,64,224,64,0,0,64,224,64,17, + 72,136,32,112,32,0,0,112,96,128,34,89,137,8,16,32, + 64,128,64,32,16,8,20,100,132,252,0,0,252,18,89,137, + 128,64,32,16,8,16,32,64,128,18,105,137,120,132,132,4, + 8,16,16,0,16,18,105,137,120,132,132,156,164,172,148,128, + 120,18,105,137,48,72,132,132,132,252,132,132,132,18,105,137, + 240,136,132,136,240,136,132,136,240,18,105,137,120,132,128,128, + 128,128,128,132,120,18,105,137,240,136,132,132,132,132,132,136, + 240,18,105,137,252,128,128,128,240,128,128,128,252,18,105,137, + 252,128,128,128,240,128,128,128,128,18,105,137,120,132,128,128, + 128,156,132,140,116,18,105,137,132,132,132,132,252,132,132,132, + 132,18,89,137,248,32,32,32,32,32,32,32,248,18,121,137, + 62,8,8,8,8,8,8,136,112,18,105,137,132,136,144,160, + 192,160,144,136,132,18,105,137,128,128,128,128,128,128,128,128, + 252,2,121,137,130,130,198,170,146,146,130,130,130,18,105,137, + 132,132,196,164,148,140,132,132,132,18,105,137,120,132,132,132, + 132,132,132,132,120,18,105,137,248,132,132,132,248,128,128,128, + 128,17,106,138,120,132,132,132,132,132,164,148,120,4,18,105, + 137,248,132,132,132,248,160,144,136,132,18,105,137,120,132,128, + 128,120,4,4,132,120,2,121,137,254,16,16,16,16,16,16, + 16,16,18,105,137,132,132,132,132,132,132,132,132,120,2,121, + 137,130,130,68,68,68,40,40,40,16,2,121,137,130,130,130, + 130,146,146,146,170,68,2,121,137,130,130,68,40,16,40,68, + 130,130,2,121,137,130,130,68,40,16,16,16,16,16,18,105, + 137,252,4,8,16,32,64,128,128,252,34,73,137,240,128,128, + 128,128,128,128,128,240,2,121,137,128,128,64,32,16,8,4, + 2,2,18,73,137,240,16,16,16,16,16,16,16,240,24,83, + 131,32,80,136,1,113,129,254,58,34,130,128,64,18,102,134, + 120,4,124,132,140,116,18,105,137,128,128,128,184,196,132,132, + 196,184,18,102,134,120,132,128,128,132,120,18,105,137,4,4, + 4,116,140,132,132,140,116,18,102,134,120,132,252,128,132,120, + 18,105,137,56,68,64,64,248,64,64,64,64,16,104,136,116, + 136,136,112,128,120,132,120,18,105,137,128,128,128,184,196,132, + 132,132,132,18,88,136,32,0,96,32,32,32,32,248,16,90, + 138,8,0,24,8,8,8,8,136,136,112,18,105,137,128,128, + 128,136,144,224,144,136,132,18,89,137,96,32,32,32,32,32, + 32,32,248,2,118,134,236,146,146,146,146,130,18,102,134,184, + 196,132,132,132,132,18,102,134,120,132,132,132,132,120,16,104, + 136,184,196,132,196,184,128,128,128,16,104,136,116,140,132,140, + 116,4,4,4,18,102,134,184,68,64,64,64,64,18,102,134, + 120,132,96,24,132,120,18,104,136,64,64,248,64,64,64,68, + 56,18,102,134,136,136,136,136,136,116,18,86,134,136,136,136, + 80,80,32,2,118,134,130,130,146,146,170,68,18,102,134,132, + 72,48,48,72,132,16,104,136,132,132,132,140,116,4,132,120, + 18,102,134,252,8,16,32,64,252,34,89,137,56,64,64,32, + 192,32,64,64,56,50,25,137,128,128,128,128,128,128,128,128, + 128,18,89,137,224,16,16,32,24,32,16,16,224,24,83,131, + 72,168,144,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,13,0,128,50,25,137,128,0,128,128,128,128, + 128,128,128,19,88,136,32,112,168,160,160,168,112,32,2,121, + 137,28,34,32,112,32,32,32,98,220,19,102,134,132,120,72, + 72,120,132,2,121,137,130,130,68,40,124,16,124,16,16,50, + 25,137,128,128,128,128,0,128,128,128,128,34,74,138,96,144, + 128,96,144,144,96,16,144,96,42,66,130,144,144,3,121,137, + 56,68,146,170,162,170,146,68,56,20,87,135,112,8,120,136, + 120,0,248,3,119,135,18,36,72,144,72,36,18,19,100,132, + 252,4,4,4,38,65,129,240,3,121,137,56,68,146,170,170, + 178,170,68,56,26,97,129,252,39,68,132,96,144,144,96,19, + 87,135,32,32,248,32,32,0,248,22,70,134,96,144,16,96, + 128,240,22,70,134,96,144,32,16,144,96,58,34,130,64,128, + 17,103,135,132,132,132,132,204,180,128,18,105,137,124,232,232, + 232,104,40,40,40,40,54,33,129,192,48,34,130,64,192,22, + 54,134,64,192,64,64,64,224,21,70,134,96,144,144,96,0, + 240,3,119,135,144,72,36,18,36,72,144,2,122,138,64,192, + 64,64,66,230,10,18,26,6,2,122,138,64,192,64,64,76, + 242,2,12,16,30,2,122,138,96,144,32,16,146,102,10,18, + 26,6,18,105,137,32,0,32,32,64,128,132,132,120,18,106, + 138,32,16,0,48,72,132,132,252,132,132,18,106,138,16,32, + 0,48,72,132,132,252,132,132,18,106,138,48,72,0,48,72, + 132,132,252,132,132,18,106,138,100,152,0,48,72,132,132,252, + 132,132,18,106,138,72,72,0,48,72,132,132,252,132,132,18, + 106,138,48,72,48,48,72,132,132,252,132,132,2,121,137,110, + 144,144,144,156,240,144,144,158,16,107,139,120,132,128,128,128, + 128,128,132,120,16,32,18,106,138,32,16,0,252,128,128,240, + 128,128,252,18,106,138,16,32,0,252,128,128,240,128,128,252, + 18,106,138,48,72,0,252,128,128,240,128,128,252,18,106,138, + 72,72,0,252,128,128,240,128,128,252,18,90,138,64,32,0, + 248,32,32,32,32,32,248,18,90,138,16,32,0,248,32,32, + 32,32,32,248,18,90,138,48,72,0,248,32,32,32,32,32, + 248,18,90,138,136,136,0,248,32,32,32,32,32,248,2,121, + 137,120,68,66,66,226,66,66,68,120,2,122,138,100,152,0, + 130,194,162,146,138,134,130,2,122,138,32,16,0,124,130,130, + 130,130,130,124,2,122,138,8,16,0,124,130,130,130,130,130, + 124,2,122,138,24,36,0,124,130,130,130,130,130,124,2,122, + 138,100,152,0,124,130,130,130,130,130,124,2,122,138,68,68, + 0,124,130,130,130,130,130,124,19,102,134,132,72,48,48,72, + 132,17,107,139,4,120,140,148,148,164,164,164,196,120,128,18, + 106,138,64,32,0,132,132,132,132,132,132,120,18,106,138,16, + 32,0,132,132,132,132,132,132,120,18,106,138,48,72,0,132, + 132,132,132,132,132,120,18,106,138,72,72,0,132,132,132,132, + 132,132,120,18,90,138,16,32,0,136,136,80,32,32,32,32, + 18,105,137,128,248,132,132,132,248,128,128,128,18,105,137,112, + 136,136,144,160,152,132,132,184,18,105,137,32,16,0,120,4, + 124,132,140,116,18,105,137,8,16,0,120,4,124,132,140,116, + 18,105,137,48,72,0,120,4,124,132,140,116,18,105,137,100, + 152,0,120,4,124,132,140,116,18,105,137,72,72,0,120,4, + 124,132,140,116,18,106,138,48,72,48,0,120,4,124,132,140, + 116,2,118,134,108,18,124,144,146,108,16,104,136,120,132,128, + 128,132,120,16,32,18,105,137,32,16,0,120,132,252,128,132, + 120,18,105,137,16,32,0,120,132,252,128,132,120,18,105,137, + 48,72,0,120,132,252,128,132,120,18,105,137,72,72,0,120, + 132,252,128,132,120,18,89,137,64,32,0,96,32,32,32,32, + 248,18,89,137,32,64,0,96,32,32,32,32,248,18,89,137, + 96,144,0,96,32,32,32,32,248,18,89,137,144,144,0,96, + 32,32,32,32,248,18,106,138,72,48,80,8,120,132,132,132, + 132,120,18,105,137,100,152,0,184,196,132,132,132,132,18,105, + 137,64,32,0,120,132,132,132,132,120,18,105,137,16,32,0, + 120,132,132,132,132,120,18,105,137,48,72,0,120,132,132,132, + 132,120,18,105,137,100,152,0,120,132,132,132,132,120,18,105, + 137,72,72,0,120,132,132,132,132,120,19,87,135,32,32,0, + 248,0,32,32,17,104,136,4,120,140,148,164,196,120,128,18, + 105,137,64,32,0,136,136,136,136,136,116,18,105,137,16,32, + 0,136,136,136,136,136,116,18,105,137,48,72,0,136,136,136, + 136,136,116,18,105,137,80,80,0,136,136,136,136,136,116,16, + 107,139,16,32,0,132,132,132,140,116,4,132,120,16,106,138, + 128,128,184,196,132,132,196,184,128,128,16,107,139,72,72,0, + 132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 8 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13O[2153] U8G_SECTION(".progmem.u8g_font_8x13O") = { + 1,8,13,0,254,9,1,98,2,206,32,255,254,11,254,9, + 254,13,0,128,50,41,137,64,64,64,64,128,128,128,0,128, + 40,67,131,144,144,144,3,119,135,36,36,126,36,252,72,72, + 18,105,137,16,60,80,80,56,40,40,240,32,2,121,137,34, + 82,36,8,16,32,72,148,136,18,104,136,24,36,40,48,84, + 136,152,100,56,19,131,128,128,128,34,73,137,16,32,64,64, + 128,128,64,64,32,34,73,137,64,32,32,16,16,32,32,64, + 128,20,101,133,72,48,252,96,144,20,85,133,32,32,248,64, + 64,33,67,131,112,96,128,22,81,129,248,33,51,131,64,224, + 64,2,137,137,1,1,2,4,24,32,64,128,128,2,121,137, + 24,36,66,66,66,132,132,72,48,18,89,137,16,48,80,16, + 16,32,32,32,248,2,121,137,60,66,66,2,12,48,64,128, + 252,2,121,137,126,2,4,8,24,4,4,132,120,18,105,137, + 4,12,20,36,72,136,252,16,16,2,121,137,62,32,32,92, + 98,2,4,132,120,2,121,137,28,34,64,64,120,132,132,132, + 120,18,105,137,252,4,8,16,32,64,64,128,128,2,121,137, + 60,66,66,66,124,132,132,132,120,18,105,137,120,132,132,140, + 116,8,8,16,224,33,72,136,32,112,32,0,0,64,224,64, + 17,88,136,16,56,16,0,0,112,96,128,18,89,137,8,16, + 32,64,128,128,64,32,16,4,116,132,126,0,0,252,18,89, + 137,64,32,16,8,8,16,32,64,128,18,105,137,56,68,132, + 8,16,32,32,0,32,2,121,137,60,66,66,78,82,166,152, + 128,120,2,121,137,24,36,66,66,66,252,132,132,132,2,121, + 137,120,68,66,68,120,136,132,136,240,2,121,137,60,66,64, + 64,64,128,128,132,120,2,121,137,120,68,66,66,66,132,132, + 136,240,2,121,137,126,64,64,64,120,128,128,128,252,2,121, + 137,126,64,64,64,120,128,128,128,128,2,121,137,60,66,64, + 64,64,156,132,140,116,2,121,137,66,66,66,66,124,132,132, + 132,132,18,105,137,124,16,16,16,16,32,32,32,248,2,121, + 137,30,4,4,4,4,8,8,136,112,2,121,137,66,68,72, + 80,96,160,144,136,132,18,105,137,64,64,64,64,64,128,128, + 128,252,2,137,137,65,65,99,85,73,130,130,130,130,2,121, + 137,66,66,98,82,74,140,132,132,132,2,121,137,60,66,66, + 66,66,132,132,132,120,2,121,137,124,66,66,66,124,128,128, + 128,128,1,122,138,60,66,66,66,132,132,164,148,120,4,2, + 121,137,124,66,66,66,124,160,144,136,132,2,121,137,60,66, + 64,64,56,4,4,132,120,2,121,137,254,16,16,16,16,32, + 32,32,32,2,121,137,66,66,66,66,132,132,132,132,120,2, + 121,137,130,130,132,68,72,72,80,80,32,2,137,137,65,65, + 65,65,73,146,146,170,68,2,137,137,65,65,34,20,24,40, + 68,130,130,2,121,137,130,130,68,40,16,16,32,32,32,2, + 121,137,126,2,4,8,16,32,64,128,252,18,89,137,120,64, + 64,64,64,128,128,128,240,18,105,137,128,128,64,32,16,16, + 8,4,4,18,89,137,120,8,8,8,8,16,16,16,240,24, + 83,131,32,80,136,1,113,129,254,58,34,130,128,64,2,118, + 134,60,2,124,132,140,116,2,121,137,64,64,64,92,98,66, + 132,196,184,2,118,134,60,66,128,128,132,120,2,121,137,2, + 2,2,58,68,132,132,140,116,2,118,134,60,66,124,128,132, + 120,18,105,137,56,68,64,64,248,64,128,128,128,0,120,136, + 58,68,136,112,128,120,132,120,2,121,137,32,32,64,92,98, + 66,132,132,132,18,88,136,16,0,48,16,16,32,32,248,16, + 106,138,4,0,12,4,4,8,8,136,136,112,18,105,137,64, + 64,64,68,88,96,144,136,132,18,89,137,48,16,16,16,16, + 32,32,32,248,2,134,134,118,73,73,146,146,130,2,118,134, + 92,98,66,132,132,132,2,118,134,60,66,66,132,132,120,0, + 136,136,46,49,33,98,92,64,128,128,0,120,136,58,70,132, + 140,116,4,8,8,18,102,134,184,68,64,128,128,128,2,118, + 134,60,66,32,24,132,120,18,88,136,64,64,248,64,128,128, + 136,112,18,102,134,68,68,68,136,136,116,18,86,134,136,136, + 144,160,160,64,2,134,134,65,65,146,146,170,68,2,118,134, + 66,36,24,48,72,132,0,120,136,66,66,132,140,116,4,132, + 120,2,118,134,126,4,24,32,64,252,18,89,137,56,64,64, + 32,192,64,128,128,112,50,41,137,64,64,64,64,64,128,128, + 128,128,18,89,137,112,8,8,16,24,32,16,16,224,24,83, + 131,72,168,144,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,13,0,128,50,41,137,64,0,64,64,64, + 128,128,128,128,19,104,136,16,56,84,80,160,168,112,32,2, + 137,137,14,17,16,56,16,32,32,98,220,3,118,134,66,60, + 36,72,120,132,2,121,137,130,130,68,40,124,16,248,32,32, + 50,41,137,64,64,64,64,0,128,128,128,128,18,90,138,48, + 72,64,48,72,144,96,16,144,96,42,66,130,144,144,2,137, + 137,28,34,73,85,162,170,146,68,56,20,103,135,56,4,120, + 136,120,0,248,3,119,135,18,36,72,144,144,72,36,19,100, + 132,252,4,8,8,38,65,129,240,2,137,137,28,34,89,85, + 170,178,170,68,56,26,97,129,252,39,68,132,96,144,144,96, + 19,103,135,16,16,124,32,32,0,248,22,86,134,48,72,8, + 112,128,240,22,86,134,112,8,48,16,144,96,58,34,130,64, + 128,1,119,135,66,66,66,132,204,180,128,18,105,137,124,232, + 232,232,104,80,80,80,80,54,33,129,192,48,34,130,64,192, + 38,54,134,32,96,32,64,64,224,21,102,134,24,36,72,48, + 0,240,3,119,135,72,36,18,18,36,72,144,18,106,138,32, + 96,32,64,68,236,20,40,60,8,2,122,138,32,96,32,64, + 76,242,4,24,32,60,18,106,138,112,8,48,16,148,108,20, + 40,60,8,18,105,137,16,0,16,16,32,64,132,136,112,2, + 122,138,16,8,0,24,36,66,66,124,132,132,2,122,138,8, + 16,0,24,36,66,66,124,132,132,2,122,138,24,36,0,24, + 36,66,66,124,132,132,2,122,138,50,76,0,24,36,66,66, + 124,132,132,2,122,138,36,36,0,24,36,66,66,124,132,132, + 2,122,138,24,36,24,24,36,66,66,124,132,132,2,137,137, + 55,72,72,72,78,112,144,144,158,0,123,139,60,66,64,64, + 64,128,128,132,120,16,32,2,122,138,16,8,0,126,64,64, + 112,128,128,252,2,122,138,8,16,0,126,64,64,112,128,128, + 252,2,122,138,24,36,0,126,64,64,112,128,128,252,2,122, + 138,36,36,0,126,64,64,112,128,128,252,18,106,138,32,16, + 0,124,16,16,32,32,32,248,18,106,138,8,16,0,124,16, + 16,32,32,32,248,18,106,138,24,36,0,124,16,16,32,32, + 32,248,18,106,138,68,68,0,124,16,16,32,32,32,248,2, + 121,137,120,68,66,66,226,68,132,136,240,2,138,138,50,76, + 0,65,97,81,146,138,134,130,2,138,138,16,8,0,62,65, + 65,130,130,130,124,2,138,138,4,8,0,62,65,65,130,130, + 130,124,2,138,138,12,18,0,62,65,65,130,130,130,124,2, + 138,138,50,76,0,62,65,65,130,130,130,124,2,138,138,34, + 34,0,62,65,65,130,130,130,124,3,118,134,66,36,24,48, + 72,132,1,123,139,2,60,70,74,74,82,164,164,196,120,128, + 2,122,138,32,16,0,66,66,66,132,132,132,120,2,122,138, + 8,16,0,66,66,66,132,132,132,120,2,122,138,24,36,0, + 66,66,66,132,132,132,120,2,122,138,36,36,0,66,66,66, + 132,132,132,120,18,90,138,16,32,0,136,136,80,96,64,64, + 64,2,121,137,64,124,66,66,66,124,128,128,128,18,105,137, + 56,68,68,72,80,136,132,132,184,2,121,137,16,8,0,60, + 2,124,132,140,116,2,121,137,4,8,0,60,2,124,132,140, + 116,2,121,137,24,36,0,60,2,124,132,140,116,2,121,137, + 50,76,0,60,2,124,132,140,116,2,121,137,36,36,0,60, + 2,124,132,140,116,2,122,138,24,36,24,0,60,2,124,132, + 140,116,2,134,134,54,9,126,144,146,108,0,120,136,60,66, + 128,128,132,120,16,32,2,121,137,16,8,0,60,66,124,128, + 132,120,2,121,137,8,16,0,60,66,124,128,132,120,2,121, + 137,24,36,0,60,66,124,128,132,120,2,121,137,36,36,0, + 60,66,124,128,132,120,18,89,137,32,16,0,48,16,16,32, + 32,248,18,89,137,16,32,0,48,16,16,32,32,248,18,89, + 137,48,72,0,48,16,16,32,32,248,18,89,137,72,72,0, + 48,16,16,32,32,248,2,122,138,36,24,40,4,60,66,66, + 132,132,120,2,121,137,50,76,0,92,98,66,132,132,132,2, + 121,137,32,16,0,60,66,66,132,132,120,2,121,137,8,16, + 0,60,66,66,132,132,120,2,121,137,24,36,0,60,66,66, + 132,132,120,2,121,137,50,76,0,60,66,66,132,132,120,2, + 121,137,36,36,0,60,66,66,132,132,120,19,103,135,16,16, + 0,252,0,32,32,1,120,136,2,60,70,90,164,196,120,128, + 18,105,137,32,16,0,68,68,68,136,136,116,18,105,137,8, + 16,0,68,68,68,136,136,116,18,105,137,24,36,0,68,68, + 68,136,136,116,18,105,137,40,40,0,68,68,68,136,136,116, + 0,123,139,8,16,0,66,66,132,140,116,4,132,120,0,122, + 138,64,64,92,98,66,132,196,184,128,128,0,123,139,36,36, + 0,66,66,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 8 h=10 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13Or[1029] U8G_SECTION(".progmem.u8g_font_8x13Or") = { + 1,8,13,0,254,9,1,98,2,206,32,127,254,11,254,9, + 254,13,0,128,50,41,137,64,64,64,64,128,128,128,0,128, + 40,67,131,144,144,144,3,119,135,36,36,126,36,252,72,72, + 18,105,137,16,60,80,80,56,40,40,240,32,2,121,137,34, + 82,36,8,16,32,72,148,136,18,104,136,24,36,40,48,84, + 136,152,100,56,19,131,128,128,128,34,73,137,16,32,64,64, + 128,128,64,64,32,34,73,137,64,32,32,16,16,32,32,64, + 128,20,101,133,72,48,252,96,144,20,85,133,32,32,248,64, + 64,33,67,131,112,96,128,22,81,129,248,33,51,131,64,224, + 64,2,137,137,1,1,2,4,24,32,64,128,128,2,121,137, + 24,36,66,66,66,132,132,72,48,18,89,137,16,48,80,16, + 16,32,32,32,248,2,121,137,60,66,66,2,12,48,64,128, + 252,2,121,137,126,2,4,8,24,4,4,132,120,18,105,137, + 4,12,20,36,72,136,252,16,16,2,121,137,62,32,32,92, + 98,2,4,132,120,2,121,137,28,34,64,64,120,132,132,132, + 120,18,105,137,252,4,8,16,32,64,64,128,128,2,121,137, + 60,66,66,66,124,132,132,132,120,18,105,137,120,132,132,140, + 116,8,8,16,224,33,72,136,32,112,32,0,0,64,224,64, + 17,88,136,16,56,16,0,0,112,96,128,18,89,137,8,16, + 32,64,128,128,64,32,16,4,116,132,126,0,0,252,18,89, + 137,64,32,16,8,8,16,32,64,128,18,105,137,56,68,132, + 8,16,32,32,0,32,2,121,137,60,66,66,78,82,166,152, + 128,120,2,121,137,24,36,66,66,66,252,132,132,132,2,121, + 137,120,68,66,68,120,136,132,136,240,2,121,137,60,66,64, + 64,64,128,128,132,120,2,121,137,120,68,66,66,66,132,132, + 136,240,2,121,137,126,64,64,64,120,128,128,128,252,2,121, + 137,126,64,64,64,120,128,128,128,128,2,121,137,60,66,64, + 64,64,156,132,140,116,2,121,137,66,66,66,66,124,132,132, + 132,132,18,105,137,124,16,16,16,16,32,32,32,248,2,121, + 137,30,4,4,4,4,8,8,136,112,2,121,137,66,68,72, + 80,96,160,144,136,132,18,105,137,64,64,64,64,64,128,128, + 128,252,2,137,137,65,65,99,85,73,130,130,130,130,2,121, + 137,66,66,98,82,74,140,132,132,132,2,121,137,60,66,66, + 66,66,132,132,132,120,2,121,137,124,66,66,66,124,128,128, + 128,128,1,122,138,60,66,66,66,132,132,164,148,120,4,2, + 121,137,124,66,66,66,124,160,144,136,132,2,121,137,60,66, + 64,64,56,4,4,132,120,2,121,137,254,16,16,16,16,32, + 32,32,32,2,121,137,66,66,66,66,132,132,132,132,120,2, + 121,137,130,130,132,68,72,72,80,80,32,2,137,137,65,65, + 65,65,73,146,146,170,68,2,137,137,65,65,34,20,24,40, + 68,130,130,2,121,137,130,130,68,40,16,16,32,32,32,2, + 121,137,126,2,4,8,16,32,64,128,252,18,89,137,120,64, + 64,64,64,128,128,128,240,18,105,137,128,128,64,32,16,16, + 8,4,4,18,89,137,120,8,8,8,8,16,16,16,240,24, + 83,131,32,80,136,1,113,129,254,58,34,130,128,64,2,118, + 134,60,2,124,132,140,116,2,121,137,64,64,64,92,98,66, + 132,196,184,2,118,134,60,66,128,128,132,120,2,121,137,2, + 2,2,58,68,132,132,140,116,2,118,134,60,66,124,128,132, + 120,18,105,137,56,68,64,64,248,64,128,128,128,0,120,136, + 58,68,136,112,128,120,132,120,2,121,137,32,32,64,92,98, + 66,132,132,132,18,88,136,16,0,48,16,16,32,32,248,16, + 106,138,4,0,12,4,4,8,8,136,136,112,18,105,137,64, + 64,64,68,88,96,144,136,132,18,89,137,48,16,16,16,16, + 32,32,32,248,2,134,134,118,73,73,146,146,130,2,118,134, + 92,98,66,132,132,132,2,118,134,60,66,66,132,132,120,0, + 136,136,46,49,33,98,92,64,128,128,0,120,136,58,70,132, + 140,116,4,8,8,18,102,134,184,68,64,128,128,128,2,118, + 134,60,66,32,24,132,120,18,88,136,64,64,248,64,128,128, + 136,112,18,102,134,68,68,68,136,136,116,18,86,134,136,136, + 144,160,160,64,2,134,134,65,65,146,146,170,68,2,118,134, + 66,36,24,48,72,132,0,120,136,66,66,132,140,116,4,132, + 120,2,118,134,126,4,24,32,64,252,18,89,137,56,64,64, + 32,192,64,128,128,112,50,41,137,64,64,64,64,64,128,128, + 128,128,18,89,137,112,8,8,16,24,32,16,16,224,24,83, + 131,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=10 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13r[1028] U8G_SECTION(".progmem.u8g_font_8x13r") = { + 1,8,13,0,254,9,1,97,2,205,32,127,254,11,254,9, + 254,13,0,128,50,25,137,128,128,128,128,128,128,128,0,128, + 40,67,131,144,144,144,19,103,135,72,72,252,72,252,72,72, + 18,89,137,32,120,160,160,112,40,40,240,32,18,105,137,68, + 164,72,16,16,32,72,84,136,18,103,135,96,144,144,96,148, + 136,116,56,19,131,128,128,128,50,57,137,32,64,64,128,128, + 128,64,64,32,34,57,137,128,64,64,32,32,32,64,64,128, + 22,101,133,72,48,252,48,72,20,85,133,32,32,248,32,32, + 17,67,131,112,96,128,22,81,129,248,33,51,131,64,224,64, + 2,121,137,2,2,4,8,16,32,64,128,128,18,105,137,48, + 72,132,132,132,132,132,72,48,18,89,137,32,96,160,32,32, + 32,32,32,248,18,105,137,120,132,132,4,8,48,64,128,252, + 18,105,137,252,4,8,16,56,4,4,132,120,18,105,137,8, + 24,40,72,136,136,252,8,8,18,105,137,252,128,128,184,196, + 4,4,132,120,18,105,137,56,64,128,128,184,196,132,132,120, + 18,105,137,252,4,8,16,16,32,32,64,64,18,105,137,120, + 132,132,132,120,132,132,132,120,18,105,137,120,132,132,140,116, + 4,4,8,112,33,56,136,64,224,64,0,0,64,224,64,17, + 72,136,32,112,32,0,0,112,96,128,34,89,137,8,16,32, + 64,128,64,32,16,8,20,100,132,252,0,0,252,18,89,137, + 128,64,32,16,8,16,32,64,128,18,105,137,120,132,132,4, + 8,16,16,0,16,18,105,137,120,132,132,156,164,172,148,128, + 120,18,105,137,48,72,132,132,132,252,132,132,132,18,105,137, + 240,136,132,136,240,136,132,136,240,18,105,137,120,132,128,128, + 128,128,128,132,120,18,105,137,240,136,132,132,132,132,132,136, + 240,18,105,137,252,128,128,128,240,128,128,128,252,18,105,137, + 252,128,128,128,240,128,128,128,128,18,105,137,120,132,128,128, + 128,156,132,140,116,18,105,137,132,132,132,132,252,132,132,132, + 132,18,89,137,248,32,32,32,32,32,32,32,248,18,121,137, + 62,8,8,8,8,8,8,136,112,18,105,137,132,136,144,160, + 192,160,144,136,132,18,105,137,128,128,128,128,128,128,128,128, + 252,2,121,137,130,130,198,170,146,146,130,130,130,18,105,137, + 132,132,196,164,148,140,132,132,132,18,105,137,120,132,132,132, + 132,132,132,132,120,18,105,137,248,132,132,132,248,128,128,128, + 128,17,106,138,120,132,132,132,132,132,164,148,120,4,18,105, + 137,248,132,132,132,248,160,144,136,132,18,105,137,120,132,128, + 128,120,4,4,132,120,2,121,137,254,16,16,16,16,16,16, + 16,16,18,105,137,132,132,132,132,132,132,132,132,120,2,121, + 137,130,130,68,68,68,40,40,40,16,2,121,137,130,130,130, + 130,146,146,146,170,68,2,121,137,130,130,68,40,16,40,68, + 130,130,2,121,137,130,130,68,40,16,16,16,16,16,18,105, + 137,252,4,8,16,32,64,128,128,252,34,73,137,240,128,128, + 128,128,128,128,128,240,2,121,137,128,128,64,32,16,8,4, + 2,2,18,73,137,240,16,16,16,16,16,16,16,240,24,83, + 131,32,80,136,1,113,129,254,58,34,130,128,64,18,102,134, + 120,4,124,132,140,116,18,105,137,128,128,128,184,196,132,132, + 196,184,18,102,134,120,132,128,128,132,120,18,105,137,4,4, + 4,116,140,132,132,140,116,18,102,134,120,132,252,128,132,120, + 18,105,137,56,68,64,64,248,64,64,64,64,16,104,136,116, + 136,136,112,128,120,132,120,18,105,137,128,128,128,184,196,132, + 132,132,132,18,88,136,32,0,96,32,32,32,32,248,16,90, + 138,8,0,24,8,8,8,8,136,136,112,18,105,137,128,128, + 128,136,144,224,144,136,132,18,89,137,96,32,32,32,32,32, + 32,32,248,2,118,134,236,146,146,146,146,130,18,102,134,184, + 196,132,132,132,132,18,102,134,120,132,132,132,132,120,16,104, + 136,184,196,132,196,184,128,128,128,16,104,136,116,140,132,140, + 116,4,4,4,18,102,134,184,68,64,64,64,64,18,102,134, + 120,132,96,24,132,120,18,104,136,64,64,248,64,64,64,68, + 56,18,102,134,136,136,136,136,136,116,18,86,134,136,136,136, + 80,80,32,2,118,134,130,130,146,146,170,68,18,102,134,132, + 72,48,48,72,132,16,104,136,132,132,132,140,116,4,132,120, + 18,102,134,252,8,16,32,64,252,34,89,137,56,64,64,32, + 192,32,64,64,56,50,25,137,128,128,128,128,128,128,128,128, + 128,18,89,137,224,16,16,32,24,32,16,16,224,24,83,131, + 72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 4, '1' Height: 10 + Calculated Max Values w= 9 h=15 x= 8 y=10 dx= 9 dy= 0 ascent=12 len=30 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 4 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[3804] U8G_SECTION(".progmem.u8g_font_9x15_67_75") = { + 0,9,15,0,253,4,1,255,4,34,32,255,0,12,253,10, + 0,8,7,7,9,0,1,72,36,18,255,18,36,72,7,10, + 10,9,1,0,16,16,16,146,84,56,146,84,56,16,7,7, + 7,9,1,1,16,34,68,248,68,34,16,7,7,7,9,1, + 1,16,136,68,62,68,136,16,7,7,7,9,1,1,16,34, + 66,254,66,34,16,7,10,10,9,1,0,16,56,84,146,16, + 16,16,16,16,124,7,7,7,9,1,1,16,136,132,254,132, + 136,16,7,10,10,9,1,0,124,16,16,16,16,16,146,84, + 56,16,7,10,10,9,1,0,16,56,84,146,16,146,84,56, + 16,254,8,7,7,9,0,1,16,34,65,254,64,32,16,8, + 7,7,9,0,1,8,68,130,127,2,4,8,8,7,7,9, + 0,1,16,34,69,254,68,36,16,8,7,7,9,0,1,8, + 68,162,127,34,36,8,9,5,10,9,0,2,34,0,73,0, + 247,128,65,0,34,0,9,5,10,9,0,2,34,0,73,0, + 255,128,73,0,34,0,5,10,10,9,2,0,32,64,72,184, + 200,16,16,160,120,32,6,10,10,9,1,0,32,64,252,68, + 36,4,4,4,4,4,7,10,10,9,1,0,8,4,254,132, + 136,128,128,128,128,128,6,10,10,9,1,0,4,4,4,4, + 4,36,68,252,64,32,7,10,10,9,1,0,128,128,128,128, + 128,136,132,254,4,8,7,8,8,9,1,0,248,8,8,8, + 8,42,28,8,7,8,8,9,1,1,2,2,2,34,66,254, + 64,32,9,7,14,9,0,2,14,0,17,0,32,128,32,128, + 168,128,112,0,32,0,9,7,14,9,0,2,56,0,68,0, + 130,0,130,0,138,128,7,0,2,0,7,10,10,9,1,0, + 254,64,112,96,80,8,8,4,2,2,7,9,9,9,1,0, + 144,160,254,160,146,10,254,10,18,9,7,14,9,0,1,50, + 0,71,0,138,128,130,0,130,0,68,0,56,0,9,7,14, + 9,0,1,38,0,113,0,168,128,32,128,32,128,17,0,14, + 0,7,4,4,9,1,3,16,32,64,254,7,4,4,9,1, + 0,254,64,32,16,4,10,10,9,4,0,128,192,160,144,128, + 128,128,128,128,128,4,10,10,9,1,0,16,48,80,144,16, + 16,16,16,16,16,7,4,4,9,1,3,16,8,4,254,7, + 4,4,9,1,0,254,4,8,16,4,10,10,9,4,0,128, + 128,128,128,128,128,144,160,192,128,4,10,10,9,1,0,16, + 16,16,16,16,16,144,80,48,16,7,9,9,9,1,0,8, + 4,254,4,40,64,254,64,32,9,10,20,9,0,0,34,0, + 114,0,170,0,34,0,34,0,34,0,34,0,42,128,39,0, + 34,0,7,9,9,9,1,0,32,64,254,64,40,4,254,4, + 8,7,10,10,9,1,0,32,64,254,64,32,32,64,254,64, + 32,9,10,20,9,0,0,34,0,119,0,170,128,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,7,10,10,9,1, + 0,8,4,254,4,8,8,4,254,4,8,9,10,20,9,0, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,170, + 128,119,0,34,0,7,7,7,9,1,1,32,64,254,0,254, + 4,8,7,7,7,9,1,1,8,4,254,0,254,64,32,9, + 7,14,9,0,1,16,0,33,0,127,128,130,0,127,128,36, + 0,16,0,9,7,14,9,0,1,20,0,34,0,127,0,136, + 128,127,0,34,0,20,0,9,7,14,9,0,1,4,0,18, + 0,255,0,32,128,255,0,66,0,4,0,9,7,14,9,0, + 1,16,0,32,0,127,128,128,0,127,128,32,0,16,0,7, + 10,10,9,1,0,16,40,108,170,40,40,40,40,40,40,9, + 7,14,9,0,1,4,0,2,0,255,0,0,128,255,0,2, + 0,4,0,7,10,10,9,1,0,40,40,40,40,40,40,170, + 108,40,16,9,7,14,9,0,1,20,0,34,0,127,0,128, + 128,127,0,34,0,20,0,7,10,10,9,1,0,16,40,108, + 170,40,40,170,108,40,16,7,7,7,9,1,1,252,144,136, + 196,162,144,8,7,7,7,9,1,1,126,18,34,70,138,18, + 32,7,7,7,9,1,1,32,18,138,70,34,18,126,7,7, + 7,9,1,1,8,144,162,196,136,144,252,9,9,18,9,0, + 0,8,0,16,0,63,128,64,0,255,128,64,0,63,128,16, + 0,8,0,9,9,18,9,0,0,8,0,4,0,254,0,1, + 0,255,128,1,0,254,0,4,0,8,0,8,7,7,9,0, + 1,16,32,72,245,66,32,16,8,7,7,9,0,1,8,4, + 18,175,66,4,8,7,10,10,9,1,0,16,56,84,146,16, + 124,16,124,16,16,7,10,10,9,1,0,16,16,124,16,124, + 16,146,84,56,16,7,7,7,9,1,1,16,32,64,182,64, + 32,16,7,10,10,9,1,0,16,40,84,146,0,16,16,0, + 16,16,7,7,7,9,1,1,16,8,4,218,4,8,16,7, + 10,10,9,1,0,16,16,0,16,16,0,146,84,40,16,7, + 5,5,9,1,2,144,160,254,160,144,7,5,5,9,1,2, + 18,10,254,10,18,9,7,14,9,0,1,16,0,48,0,95, + 128,128,128,95,128,48,0,16,0,7,10,10,9,1,0,16, + 40,68,238,40,40,40,40,40,56,9,7,14,9,0,1,4, + 0,6,0,253,0,128,128,253,0,6,0,4,0,7,10,10, + 9,1,0,56,40,40,40,40,40,238,68,40,16,7,11,11, + 9,1,0,16,40,68,238,40,40,56,0,56,40,56,7,11, + 11,9,1,255,16,40,68,238,40,40,40,40,108,68,124,7, + 11,11,9,1,255,16,40,68,254,40,40,40,40,108,68,124, + 7,11,11,9,1,255,16,40,68,254,56,56,56,56,124,68, + 124,7,11,11,9,1,255,16,40,68,238,68,238,40,40,40, + 40,56,7,11,11,9,1,255,16,40,68,238,68,238,40,40, + 108,68,124,9,7,14,9,0,1,132,0,134,0,253,0,128, + 128,253,0,134,0,132,0,7,7,7,9,1,0,254,128,188, + 176,168,164,130,7,7,7,9,1,0,130,74,42,26,122,2, + 254,7,11,11,9,1,255,16,40,68,238,40,40,40,238,68, + 40,16,9,7,14,9,0,1,4,0,50,0,73,0,255,128, + 73,0,50,0,4,0,9,10,20,9,0,0,34,0,39,0, + 42,128,34,0,34,0,34,0,34,0,170,0,114,0,34,0, + 7,13,13,9,1,254,8,4,254,4,8,4,254,4,8,4, + 254,4,8,8,5,5,9,0,2,36,68,255,68,36,8,5, + 5,9,0,2,36,34,255,34,36,9,5,10,9,0,2,42, + 0,73,0,255,128,73,0,42,0,8,5,5,9,0,2,42, + 74,255,74,42,8,5,5,9,0,2,84,82,255,82,84,9, + 5,10,9,0,2,85,0,148,128,255,128,148,128,85,0,7, + 7,7,9,1,1,16,48,80,158,80,48,16,7,7,7,9, + 1,1,16,24,20,242,20,24,16,8,5,5,9,0,2,36, + 102,189,102,36,9,7,14,9,0,5,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,9,2,4,9,0,253,255,128, + 255,128,9,4,8,9,0,253,255,128,255,128,255,128,255,128, + 9,6,12,9,0,253,255,128,255,128,255,128,255,128,255,128, + 255,128,9,8,16,9,0,253,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,9,9,18,9,0,253,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 9,11,22,9,0,253,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,13,26,9, + 0,253,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,15,30,9, + 0,253,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 8,15,15,9,0,253,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,7,15,15,9,0,253,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,254,6,15,15,9,0,253, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,5, + 15,15,9,0,253,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,3,15,15,9,0,253,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,2,15,15,9,0,253,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,1,15, + 15,9,0,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,4,15,15,9,5,253,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,9,15,30,9,0,253,170,128, + 0,0,85,0,0,0,170,128,0,0,85,0,0,0,170,128, + 0,0,85,0,0,0,170,128,0,0,85,0,9,15,30,9, + 0,253,170,128,85,0,170,128,85,0,170,128,85,0,170,128, + 85,0,170,128,85,0,170,128,85,0,170,128,85,0,170,128, + 9,15,30,9,0,253,255,128,85,0,255,128,170,128,255,128, + 85,0,255,128,170,128,255,128,85,0,255,128,170,128,255,128, + 85,0,255,128,9,2,4,9,0,10,255,128,255,128,1,15, + 15,9,8,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,8,8,9,0,253,248,248,248,248,248,248,248, + 248,4,8,8,9,5,253,240,240,240,240,240,240,240,240,5, + 7,7,9,0,5,248,248,248,248,248,248,248,9,15,30,9, + 0,253,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 9,15,30,9,0,253,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,9,15,30,9,0,253,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,9,15,30,9,0,253,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,4,7,7,9, + 5,5,240,240,240,240,240,240,240,9,15,30,9,0,253,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,9,15,30, + 9,0,253,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56,7,7,7,9,1,1,56,116, + 242,242,242,116,56,7,7,7,9,1,1,56,92,158,158,158, + 92,56,7,7,7,9,1,1,56,68,130,254,254,124,56,7, + 7,7,9,1,1,56,124,254,254,130,68,56,7,7,7,9, + 1,1,56,92,158,158,130,68,56,7,7,7,9,1,1,56, + 92,158,254,254,124,56,4,7,7,9,1,1,48,112,240,240, + 240,112,48,4,7,7,9,4,1,192,224,240,240,240,224,192, + 9,15,30,9,0,253,255,128,255,128,255,128,255,128,255,128, + 227,128,193,128,193,128,193,128,227,128,255,128,255,128,255,128, + 255,128,255,128,9,15,30,9,0,253,255,128,255,128,255,128, + 255,128,227,128,221,128,190,128,190,128,190,128,221,128,227,128, + 255,128,255,128,255,128,255,128,9,8,16,9,0,4,255,128, + 255,128,255,128,255,128,227,128,221,128,190,128,190,128,9,8, + 16,9,0,253,190,128,190,128,221,128,227,128,255,128,255,128, + 255,128,255,128,4,4,4,9,1,4,48,64,128,128,4,4, + 4,9,4,4,192,32,16,16,4,4,4,9,4,1,16,16, + 32,192,4,4,4,9,1,1,128,128,64,48,7,4,4,9, + 1,4,56,68,130,130,7,4,4,9,1,1,130,130,68,56, + 7,7,7,9,1,1,2,6,14,30,62,126,254,7,7,7, + 9,1,1,128,192,224,240,248,252,254,7,7,7,9,1,1, + 254,252,248,240,224,192,128,7,7,7,9,1,1,254,126,62, + 30,14,6,2,5,5,5,9,2,2,112,136,136,136,112,7, + 7,7,9,1,1,254,242,242,242,242,242,254,7,7,7,9, + 1,1,254,158,158,158,158,158,254,7,7,7,9,1,1,254, + 254,250,242,226,194,254,7,7,7,9,1,1,254,134,142,158, + 190,254,254,7,7,7,9,1,1,254,146,146,146,146,146,254, + 9,10,20,9,0,0,8,0,8,0,20,0,20,0,34,0, + 42,0,93,0,73,0,128,128,255,128,9,10,20,9,0,0, + 8,0,8,0,28,0,28,0,58,0,58,0,121,0,121,0, + 248,128,255,128,9,10,20,9,0,0,8,0,8,0,28,0, + 28,0,46,0,46,0,79,0,79,0,143,128,255,128,9,9, + 18,9,0,0,62,0,65,0,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,7,7,7,9,1,1,254,146,146,242, + 130,130,254,7,7,7,9,1,1,254,130,130,242,146,146,254, + 7,7,7,9,1,1,254,130,130,158,146,146,254,7,7,7, + 9,1,1,254,146,146,158,130,130,254,7,7,7,9,1,1, + 124,146,146,242,130,130,124,7,7,7,9,1,1,124,130,130, + 242,146,146,124,7,7,7,9,1,1,124,130,130,158,146,146, + 124,7,7,7,9,1,1,124,146,146,158,130,130,124,6,6, + 6,9,1,1,252,136,144,160,192,128,6,6,6,9,1,1, + 252,68,36,20,12,4,6,6,6,9,1,1,128,192,160,144, + 136,252,6,6,6,9,1,1,252,132,132,132,132,252,6,6, + 6,9,1,1,252,252,252,252,252,252,5,5,5,9,2,1, + 248,136,136,136,248,5,5,5,9,2,1,248,248,248,248,248, + 6,6,6,9,1,1,4,12,20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 5 + Calculated Max Values w= 9 h=10 x= 3 y= 3 dx= 9 dy= 0 ascent=10 len=20 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_75r[792] U8G_SECTION(".progmem.u8g_font_9x15_75r") = { + 0,9,15,0,253,9,2,33,0,0,32,79,0,10,0,9, + 0,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 4 y= 5 dx= 9 dy= 0 ascent=12 len=26 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[3795] U8G_SECTION(".progmem.u8g_font_9x15_78_79") = { + 0,9,15,0,253,9,2,231,4,175,32,255,0,12,254,11, + 0,9,9,18,9,0,0,62,0,28,0,136,128,201,128,247, + 128,201,128,136,128,28,0,62,0,9,9,18,9,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,9,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,8,0,28,0,62,0,255, + 128,62,0,28,0,8,0,8,0,9,9,18,9,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,9,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,9,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,9,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,62,0,119,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 235,128,93,0,42,0,34,0,127,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 247,128,73,0,54,0,42,0,127,0,65,0,8,7,7,9, + 0,2,24,24,44,199,46,60,102,8,9,9,9,0,0,24, + 219,255,126,24,126,255,219,24,8,9,9,9,0,0,24,219, + 255,102,36,102,255,219,24,9,9,18,9,0,0,8,0,73, + 0,42,0,28,0,255,128,28,0,42,0,73,0,8,0,9, + 9,18,9,0,0,8,0,73,0,62,0,62,0,255,128,62, + 0,62,0,73,0,8,0,9,9,18,9,0,0,8,0,73, + 0,54,0,62,0,213,128,62,0,54,0,73,0,8,0,9, + 9,18,9,0,0,8,0,136,128,107,0,62,0,28,0,62, + 0,107,0,136,128,8,0,9,9,18,9,0,0,34,0,20, + 0,148,128,127,0,28,0,127,0,148,128,20,0,34,0,9, + 9,18,9,0,0,34,0,54,0,255,128,127,0,62,0,127, + 0,255,128,54,0,34,0,9,9,18,9,0,0,42,0,42, + 0,221,128,62,0,255,128,62,0,221,128,42,0,42,0,9, + 9,18,9,0,0,42,0,42,0,221,128,42,0,255,128,42, + 0,221,128,42,0,42,0,9,11,22,9,0,0,28,0,28, + 0,201,128,201,128,34,0,8,0,34,0,201,128,201,128,28, + 0,28,0,9,11,22,9,0,0,28,0,28,0,201,128,201, + 128,62,0,20,0,62,0,201,128,201,128,28,0,28,0,9, + 11,22,9,0,0,28,0,28,0,201,128,201,128,62,0,28, + 0,62,0,201,128,201,128,28,0,28,0,9,11,22,9,0, + 0,28,0,20,0,201,128,201,128,62,0,20,0,127,0,170, + 128,201,128,28,0,28,0,8,9,9,9,0,0,24,24,219, + 255,36,36,126,231,66,255,255,255,8,9,9,9,0,0,24, + 203,189,110,24,118,189,211,24,9,12,24,9,0,0,8,0, + 42,0,93,0,170,128,107,0,221,128,221,128,107,0,170,128, + 93,0,42,0,8,0,9,12,24,9,0,0,8,0,42,0, + 93,0,170,128,107,0,221,128,221,128,107,0,170,128,93,0, + 42,0,8,0,9,12,24,9,0,0,8,0,42,0,93,0, + 170,128,107,0,221,128,221,128,107,0,170,128,93,0,42,0, + 8,0,9,9,18,9,0,0,8,0,73,0,42,0,20,0, + 235,128,20,0,42,0,73,0,8,0,9,9,18,9,0,0, + 8,0,73,0,42,0,20,0,235,128,20,0,42,0,73,0, + 8,0,8,9,9,9,0,0,24,219,203,60,24,60,211,219, + 24,9,9,18,9,0,0,8,0,73,0,42,0,0,0,235, + 128,0,0,42,0,73,0,8,0,9,9,18,9,0,0,8, + 0,73,0,42,0,28,0,255,128,28,0,42,0,73,0,8, + 0,255,9,8,16,9,0,1,62,0,67,0,129,128,129,128, + 129,128,129,128,67,0,62,0,255,9,9,18,9,0,0,254, + 0,130,0,131,128,131,128,131,128,131,128,255,128,63,128,63, + 128,9,9,18,9,0,0,63,128,63,128,255,128,131,128,131, + 128,131,128,131,128,130,0,254,0,8,8,8,9,0,0,254, + 131,131,131,131,131,255,127,8,8,8,9,0,0,127,255,131, + 131,131,131,131,254,255,255,255,9,9,18,9,0,0,8,0, + 28,0,8,0,65,0,227,128,65,0,8,0,28,0,8,0, + 255,1,10,10,9,4,0,128,128,128,128,128,128,128,128,128, + 128,2,10,10,9,3,0,192,192,192,192,192,192,192,192,192, + 192,3,10,10,9,3,0,224,224,224,224,224,224,224,224,224, + 224,4,6,6,9,3,5,112,128,224,240,240,96,4,6,6, + 9,3,5,96,240,240,112,16,224,9,6,12,9,0,5,115, + 128,132,0,231,0,247,128,247,128,99,0,9,6,12,9,0, + 5,99,0,247,128,247,128,115,128,16,128,231,0,255,255,7, + 10,10,9,1,0,4,126,228,228,228,124,4,100,104,48,5, + 10,10,9,2,0,112,248,248,112,32,32,0,32,112,32,5, + 10,10,9,2,0,80,248,248,112,32,32,0,32,112,32,9, + 9,18,9,0,0,99,0,247,128,255,128,255,128,127,0,62, + 0,28,0,8,0,8,0,9,9,18,9,0,0,112,0,248, + 0,252,0,126,0,63,128,126,0,252,0,248,0,112,0,9, + 12,24,9,0,0,8,0,116,128,149,0,14,0,4,0,107, + 0,247,128,255,128,127,0,62,0,28,0,8,0,9,12,24, + 9,0,0,16,0,41,0,82,0,156,0,32,0,88,0,124, + 0,60,0,254,0,254,128,255,0,126,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,227,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,237,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,152,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,152,128,132,128,132, + 128,136,128,156,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,152,128,132,128,136,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,152,128,168, + 128,188,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,144,128,152,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,140,128,144,128,152, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,132,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,148,128,136, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,148,128,140,128,132,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,164,128,170,128,170, + 128,170,128,164,128,128,128,127,0,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,239,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,7,8,8,9,1,1,48, + 24,12,254,254,12,24,48,255,255,255,7,5,5,9,1,1, + 224,250,62,14,30,8,7,7,9,1,1,8,12,230,255,230, + 12,8,7,5,5,9,1,1,30,14,62,250,224,9,7,14, + 9,0,0,48,0,28,0,31,0,255,128,31,0,28,0,48, + 0,9,9,18,9,0,0,28,0,30,0,15,0,255,128,255, + 128,255,128,15,0,30,0,28,0,9,5,10,9,0,1,2, + 0,3,0,255,128,3,0,2,0,9,7,14,9,0,0,4, + 0,6,0,255,0,255,128,255,0,6,0,4,0,9,5,10, + 9,0,1,2,0,183,0,183,128,183,0,2,0,9,5,10, + 9,0,1,2,0,171,0,171,128,171,0,2,0,9,5,10, + 9,0,1,2,0,255,0,255,128,255,0,2,0,9,8,16, + 9,0,1,128,0,112,0,78,0,33,128,31,128,62,0,112, + 0,128,0,9,8,16,9,0,1,128,0,112,0,62,0,31, + 128,33,128,78,0,112,0,128,0,9,8,16,9,0,1,128, + 0,112,0,62,0,31,128,31,128,62,0,112,0,128,0,9, + 7,14,9,0,0,132,0,134,0,255,0,255,128,127,0,6, + 0,4,0,9,7,14,9,0,0,4,0,6,0,127,0,255, + 128,255,0,134,0,132,0,6,9,9,9,2,0,16,16,248, + 248,252,248,248,16,16,8,9,9,9,0,1,4,4,254,254, + 255,254,254,4,4,9,9,18,9,0,0,24,0,28,0,22, + 0,243,0,129,128,243,0,22,0,28,0,24,0,9,9,18, + 9,0,0,24,0,28,0,26,0,249,0,192,128,249,0,26, + 0,28,0,24,0,9,9,18,9,0,0,0,128,1,128,62, + 128,64,128,129,128,243,0,238,0,60,0,56,0,9,9,18, + 9,0,0,56,0,60,0,238,0,243,0,129,128,64,128,62, + 128,1,128,0,128,8,9,9,9,0,1,16,24,20,242,129, + 243,118,28,24,8,9,9,9,0,1,24,28,118,243,129,242, + 20,24,16,9,7,14,9,0,2,4,0,250,0,129,0,64, + 128,129,128,251,0,6,0,255,9,7,14,9,0,2,6,0, + 251,0,129,128,64,128,129,0,250,0,4,0,9,9,18,9, + 0,1,28,0,127,0,251,128,1,128,0,128,1,128,251,128, + 127,0,28,0,9,5,10,9,0,3,210,0,43,0,127,128, + 43,0,210,0,9,9,18,9,0,0,16,0,56,0,92,0, + 236,0,116,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,7,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,116,0,236,0,92,0, + 56,0,16,0,9,9,18,9,0,0,16,0,24,0,28,0, + 252,0,124,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,127,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,124,0,252,0,28,0, + 24,0,16,0,9,7,14,9,0,1,3,0,3,0,113,0, + 255,128,113,0,3,0,3,0,9,7,14,9,0,1,2,0, + 115,0,121,0,255,128,121,0,115,0,2,0,9,5,10,9, + 0,2,242,0,123,0,63,128,123,0,242,0,9,7,14,9, + 0,1,226,0,242,0,123,0,63,128,123,0,242,0,226,0, + 9,7,14,9,0,1,20,0,10,0,253,0,0,128,253,0, + 10,0,20,0,255,7,7,7,9,1,0,130,132,136,144,160, + 192,254,9,10,20,9,0,0,8,0,8,0,20,0,20,0, + 42,0,42,0,85,0,93,0,128,128,255,128,7,10,10,9, + 1,0,16,16,16,16,16,16,16,16,16,254,7,7,7,9, + 1,1,62,64,132,138,132,64,62,7,7,7,9,1,1,248, + 4,66,162,66,4,248,5,12,12,9,2,255,112,136,136,16, + 16,32,32,64,64,128,128,112,5,12,12,9,2,255,112,136, + 136,64,64,32,32,16,16,8,8,112,7,8,8,9,1,0, + 130,146,84,68,40,40,16,16,8,10,10,9,0,255,128,143, + 144,80,80,80,80,47,32,32,8,10,10,9,0,255,1,241, + 9,10,10,10,10,244,4,4,3,10,10,9,3,0,64,64, + 64,64,224,64,64,64,64,64,255,255,255,255,255,9,9,18, + 9,0,0,8,0,20,0,34,0,65,0,136,128,65,0,34, + 0,20,0,8,0,7,8,8,9,1,0,16,16,40,40,68, + 84,146,130,7,7,7,9,1,1,146,146,146,146,146,84,56, + 7,7,7,9,1,1,2,2,2,18,2,2,254,7,7,7, + 9,1,1,254,128,128,144,128,128,128,8,11,11,9,0,255, + 193,99,99,85,85,73,85,85,99,99,193,8,11,11,9,1, + 255,131,198,198,170,170,146,170,170,198,198,131,9,11,22,9, + 0,255,193,128,99,0,99,0,85,0,85,0,73,0,85,0, + 85,0,99,0,99,0,193,128,9,13,26,9,0,254,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,9,13,26,9,0,254,255,128, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,7,7,7,9,1,1,40,40, + 238,40,238,40,40,7,7,7,9,1,1,40,40,40,238,40, + 40,40,7,3,3,9,1,3,64,190,64,9,5,10,9,0, + 2,128,0,128,0,255,128,128,0,128,0,9,5,10,9,0, + 2,0,128,0,128,255,128,0,128,0,128,5,10,10,9,2, + 0,32,80,32,32,32,32,32,32,32,248,5,9,9,9,2, + 0,32,32,80,80,248,80,80,32,32,7,9,9,9,1,0, + 16,16,16,40,198,40,16,16,16,8,9,9,9,0,0,8, + 8,8,20,227,20,8,8,8,8,9,9,9,1,0,16,16, + 16,40,199,40,16,16,16,8,7,7,9,0,1,127,65,65, + 193,65,65,127,8,7,7,9,1,1,254,130,130,131,130,130, + 254,5,12,12,9,2,255,248,160,160,160,160,160,160,160,160, + 160,160,248,5,12,12,9,2,255,248,40,40,40,40,40,40, + 40,40,40,40,248,3,10,10,9,3,0,32,32,64,64,128, + 128,64,64,32,32,3,10,10,9,3,0,128,128,64,64,32, + 32,64,64,128,128,6,10,10,9,1,0,36,36,72,72,144, + 144,72,72,36,36,6,10,10,9,2,0,144,144,72,72,36, + 36,72,72,144,144,255,255,255,255,9,11,22,9,0,0,8, + 0,20,0,54,0,85,0,213,128,85,0,85,0,85,0,85, + 0,85,0,85,0,9,11,22,9,0,255,85,0,85,0,85, + 0,85,0,85,0,85,0,213,128,85,0,54,0,20,0,8, + 0,8,8,8,9,0,0,28,34,169,113,33,1,34,28,8, + 8,8,9,0,0,56,68,149,142,132,128,68,56,9,5,10, + 9,0,2,114,0,169,0,255,128,169,0,114,0,9,5,10, + 9,0,2,32,0,64,0,255,128,64,0,32,0,9,5,10, + 9,0,2,2,0,1,0,255,128,1,0,2,0,9,5,10, + 9,0,2,34,0,65,0,255,128,65,0,34,0,9,7,14, + 9,0,1,16,0,32,0,127,128,128,0,127,128,32,0,16, + 0,9,7,14,9,0,1,4,0,2,0,255,0,0,128,255, + 0,2,0,4,0,9,7,14,9,0,1,20,0,34,0,127, + 0,128,128,127,0,34,0,20,0,9,5,10,9,0,2,32, + 128,64,128,255,128,64,128,32,128,9,5,10,9,0,2,130, + 0,129,0,255,128,129,0,130,0,9,7,14,9,0,1,16, + 128,32,128,127,128,128,128,127,128,32,128,16,128,9,7,14, + 9,0,1,132,0,130,0,255,0,128,128,255,0,130,0,132, + 0,9,6,12,9,0,1,2,0,1,0,85,128,170,128,1, + 0,2,0}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=14 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=20 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15B[2990] U8G_SECTION(".progmem.u8g_font_9x15B") = { + 0,9,15,0,253,10,1,232,3,214,32,255,253,12,253,11, + 253,0,0,0,9,0,12,2,10,10,9,3,0,192,192,192, + 192,192,192,192,192,0,192,5,3,3,9,2,7,216,216,216, + 7,8,8,9,1,1,108,108,254,108,108,254,108,108,7,11, + 11,9,1,255,16,124,214,208,240,124,30,22,214,124,16,8, + 10,10,9,0,0,67,230,230,76,24,24,50,103,103,194,8, + 10,10,9,0,0,56,108,108,120,48,121,207,198,206,123,2, + 4,4,9,3,6,192,192,192,192,5,12,12,9,2,255,24, + 48,96,96,192,192,192,192,96,96,48,24,5,12,12,9,2, + 255,192,96,48,48,24,24,24,24,48,48,96,192,7,5,5, + 9,1,2,108,56,254,56,108,8,7,7,9,0,1,24,24, + 24,255,24,24,24,3,5,5,9,3,253,224,224,96,96,192, + 8,1,1,9,0,4,255,4,3,3,9,2,255,96,240,96, + 8,10,10,9,0,0,3,6,6,12,24,24,48,96,96,192, + 8,10,10,9,0,0,24,60,102,195,195,195,195,102,60,24, + 6,10,10,9,1,0,48,112,240,48,48,48,48,48,48,252, + 8,10,10,9,0,0,60,102,195,3,6,12,24,48,96,255, + 8,10,10,9,0,0,124,198,3,6,28,6,3,3,198,124, + 8,10,10,9,0,0,6,14,30,54,102,198,255,6,6,6, + 8,10,10,9,0,0,254,192,192,220,230,3,3,195,102,60, + 8,10,10,9,0,0,60,102,194,192,220,230,195,195,102,60, + 8,10,10,9,0,0,255,3,3,6,12,12,24,24,24,24, + 8,10,10,9,0,0,60,102,195,102,60,102,195,195,102,60, + 8,10,10,9,0,0,60,102,195,195,103,59,3,67,102,60, + 4,8,8,9,2,255,96,240,96,0,0,96,240,96,4,10, + 10,9,2,253,96,240,96,0,0,112,112,48,48,96,6,10, + 10,9,1,0,12,24,48,96,192,192,96,48,24,12,8,4, + 4,9,0,2,255,0,0,255,6,10,10,9,1,0,192,96, + 48,24,12,12,24,48,96,192,7,10,10,9,1,0,124,198, + 198,6,12,24,48,0,48,48,8,10,10,9,0,0,60,102, + 195,207,219,219,206,192,99,62,8,10,10,9,0,0,24,60, + 102,195,195,195,255,195,195,195,8,10,10,9,0,0,252,198, + 195,198,252,198,195,195,198,252,8,10,10,9,0,0,62,99, + 193,192,192,192,192,193,99,62,8,10,10,9,0,0,252,198, + 195,195,195,195,195,195,198,252,7,10,10,9,1,0,254,192, + 192,192,252,192,192,192,192,254,8,10,10,9,0,0,255,192, + 192,192,252,192,192,192,192,192,8,10,10,9,0,0,62,99, + 192,192,192,199,195,195,99,62,8,10,10,9,0,0,195,195, + 195,195,255,195,195,195,195,195,6,10,10,9,1,0,252,48, + 48,48,48,48,48,48,48,252,6,10,10,9,1,0,60,12, + 12,12,12,12,12,140,216,112,8,10,10,9,0,0,195,198, + 204,216,240,240,216,204,198,195,7,10,10,9,1,0,192,192, + 192,192,192,192,192,192,192,254,8,10,10,9,0,0,195,231, + 255,219,219,219,195,195,195,195,8,10,10,9,0,0,195,227, + 243,243,219,219,207,199,199,195,8,10,10,9,0,0,60,102, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,254,195, + 195,195,254,192,192,192,192,192,8,10,10,9,0,0,60,102, + 195,195,195,195,219,207,102,61,8,10,10,9,0,0,254,195, + 195,195,254,248,204,198,195,195,8,10,10,9,0,0,126,195, + 192,192,126,3,3,3,195,126,8,10,10,9,0,0,255,24, + 24,24,24,24,24,24,24,24,8,10,10,9,0,0,195,195, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,195,195, + 195,102,102,102,60,60,24,24,8,10,10,9,0,0,195,195, + 195,195,219,219,219,255,231,195,8,10,10,9,0,0,195,195, + 102,60,24,24,60,102,195,195,8,10,10,9,0,0,195,195, + 102,60,24,24,24,24,24,24,7,10,10,9,1,0,254,6, + 6,12,24,48,96,192,192,254,5,12,12,9,2,255,248,192, + 192,192,192,192,192,192,192,192,192,248,8,10,10,9,0,0, + 192,96,96,48,24,24,12,6,6,3,5,12,12,9,2,255, + 248,24,24,24,24,24,24,24,24,24,24,248,6,4,4,9, + 1,6,48,120,204,132,8,1,1,9,0,255,255,4,3,3, + 9,2,8,192,96,48,8,7,7,9,0,0,62,99,3,127, + 195,199,123,8,10,10,9,0,0,192,192,192,220,230,195,195, + 195,230,220,8,7,7,9,0,0,62,99,192,192,192,99,62, + 8,10,10,9,0,0,3,3,3,59,103,195,195,195,103,59, + 8,7,7,9,0,0,60,102,195,255,192,99,62,8,10,10, + 9,0,0,30,51,51,48,48,252,48,48,48,48,8,10,10, + 9,0,253,125,199,198,198,124,192,126,195,195,126,8,10,10, + 9,0,0,192,192,192,220,230,195,195,195,195,195,6,10,10, + 9,1,0,48,48,0,112,48,48,48,48,48,252,7,13,13, + 9,1,253,6,6,0,30,6,6,6,6,6,198,198,198,124, + 7,10,10,9,1,0,192,192,192,204,216,240,240,216,204,198, + 6,10,10,9,1,0,112,48,48,48,48,48,48,48,48,252, + 8,7,7,9,0,0,182,219,219,219,219,219,219,8,7,7, + 9,0,0,220,230,195,195,195,195,195,8,7,7,9,0,0, + 60,102,195,195,195,102,60,8,10,10,9,0,253,220,230,195, + 195,195,230,220,192,192,192,8,10,10,9,0,253,59,103,195, + 195,195,103,59,3,3,3,8,7,7,9,0,0,222,115,96, + 96,96,96,96,8,7,7,9,0,0,126,195,192,126,3,195, + 126,8,9,9,9,0,0,48,48,252,48,48,48,48,51,30, + 8,7,7,9,0,0,195,195,195,195,195,103,59,8,7,7, + 9,0,0,195,195,102,102,60,60,24,8,7,7,9,0,0, + 195,195,219,219,219,255,102,8,7,7,9,0,0,195,102,60, + 24,60,102,195,8,10,10,9,0,253,195,195,195,195,195,103, + 59,3,198,124,6,7,7,9,1,0,252,12,24,48,96,192, + 252,5,12,12,9,2,255,56,96,96,96,96,192,192,96,96, + 96,96,56,2,10,10,9,3,0,192,192,192,192,192,192,192, + 192,192,192,5,12,12,9,2,255,224,48,48,48,48,24,24, + 48,48,48,48,224,8,3,3,9,0,7,115,219,206,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,12,2,10,10,9,4,0,192,0,192,192,192, + 192,192,192,192,192,7,8,8,9,1,0,4,124,206,208,208, + 230,124,64,8,10,10,9,0,255,30,51,48,48,124,48,48, + 248,191,224,7,7,7,9,1,2,198,254,108,68,108,254,198, + 8,10,10,9,0,0,195,195,102,60,126,24,126,24,24,24, + 2,11,11,9,4,255,192,192,192,192,192,0,0,192,192,192, + 192,6,11,11,9,1,255,120,204,192,120,204,204,204,120,12, + 204,120,6,2,2,9,1,9,204,204,8,11,11,9,0,0, + 60,126,195,189,165,161,165,189,195,126,60,5,7,7,9,1, + 3,240,24,248,152,248,0,248,8,8,8,9,0,1,27,54, + 108,216,216,108,54,27,7,5,5,9,1,2,254,254,6,6, + 6,6,1,1,9,1,4,252,8,11,11,9,0,0,60,126, + 195,189,165,189,169,173,195,126,60,6,2,2,9,1,9,252, + 252,6,4,4,9,2,6,120,204,204,120,8,10,10,9,0, + 0,24,24,24,255,255,24,24,24,255,255,5,7,7,9,1, + 4,112,152,24,48,96,192,248,5,7,7,9,1,4,112,152, + 24,48,24,152,112,4,3,3,9,2,8,48,96,192,7,10, + 10,9,1,253,198,198,198,198,198,238,250,192,192,192,7,10, + 10,9,1,0,126,254,246,246,246,118,54,54,54,54,3,3, + 3,9,3,3,64,224,64,5,3,3,9,2,253,24,216,112, + 4,7,7,9,1,4,96,224,96,96,96,96,240,5,6,6, + 9,1,4,112,216,216,112,0,248,8,8,8,9,0,1,216, + 108,54,27,27,54,108,216,8,11,11,9,0,0,96,224,96, + 96,97,99,247,15,27,31,3,8,11,11,9,0,0,96,224, + 96,96,110,115,243,6,12,24,31,8,11,11,9,0,0,112, + 152,24,48,25,155,119,15,27,31,3,7,10,10,9,1,0, + 24,24,0,24,48,96,192,198,198,124,8,12,12,9,0,0, + 96,48,24,0,60,102,195,195,255,195,195,195,8,12,12,9, + 0,0,6,12,24,0,60,102,195,195,255,195,195,195,8,12, + 12,9,0,0,24,60,102,0,60,102,195,195,255,195,195,195, + 8,12,12,9,0,0,50,126,76,0,60,102,195,195,255,195, + 195,195,8,11,11,9,0,0,102,102,0,60,102,195,195,255, + 195,195,195,8,12,12,9,0,0,24,36,36,24,60,102,195, + 195,255,195,195,195,8,10,10,9,0,0,31,60,108,108,204, + 255,204,204,204,207,8,13,13,9,0,253,62,99,193,192,192, + 192,192,193,99,62,12,108,56,7,12,12,9,1,0,96,48, + 24,0,254,192,192,252,192,192,192,254,7,12,12,9,1,0, + 12,24,48,0,254,192,192,252,192,192,192,254,7,12,12,9, + 1,0,24,60,102,0,254,192,192,252,192,192,192,254,7,11, + 11,9,1,0,102,102,0,254,192,192,252,192,192,192,254,6, + 12,12,9,1,0,192,96,48,0,252,48,48,48,48,48,48, + 252,6,12,12,9,1,0,24,48,96,0,252,48,48,48,48, + 48,48,252,6,12,12,9,1,0,48,120,204,0,252,48,48, + 48,48,48,48,252,6,11,11,9,1,0,204,204,0,252,48, + 48,48,48,48,48,252,9,10,20,9,0,0,126,0,99,0, + 97,128,97,128,249,128,249,128,97,128,97,128,99,0,126,0, + 8,12,12,9,0,0,50,126,76,0,195,227,243,251,223,207, + 199,195,8,12,12,9,0,0,96,48,24,0,60,102,195,195, + 195,195,102,60,8,12,12,9,0,0,6,12,24,0,60,102, + 195,195,195,195,102,60,8,12,12,9,0,0,24,60,102,0, + 60,102,195,195,195,195,102,60,8,12,12,9,0,0,50,126, + 76,0,60,102,195,195,195,195,102,60,8,11,11,9,0,0, + 102,102,0,60,102,195,195,195,195,102,60,7,8,8,9,1, + 0,130,198,108,56,56,108,198,130,8,12,12,9,0,255,1, + 63,102,199,203,203,211,211,227,102,252,128,8,12,12,9,0, + 0,96,48,24,0,195,195,195,195,195,195,102,60,8,12,12, + 9,0,0,6,12,24,0,195,195,195,195,195,195,102,60,8, + 12,12,9,0,0,24,60,102,0,195,195,195,195,195,195,102, + 60,8,11,11,9,0,0,102,102,0,195,195,195,195,195,195, + 102,60,8,12,12,9,0,0,6,12,24,0,195,102,60,24, + 24,24,24,24,7,10,10,9,1,0,240,96,124,102,102,102, + 124,96,96,240,7,10,10,9,1,0,60,102,198,204,216,204, + 198,198,198,220,8,11,11,9,0,0,96,48,24,0,62,67, + 3,127,195,199,123,8,11,11,9,0,0,12,24,48,0,62, + 67,3,127,195,199,123,8,11,11,9,0,0,24,60,102,0, + 62,67,3,127,195,199,123,8,11,11,9,0,0,50,126,76, + 0,62,67,3,127,195,199,123,8,10,10,9,0,0,102,102, + 0,62,67,3,127,195,199,123,8,11,11,9,0,0,24,36, + 36,24,62,67,3,127,195,199,123,8,7,7,9,0,0,118, + 155,27,126,216,217,110,8,10,10,9,0,253,62,99,192,192, + 192,99,62,12,108,56,8,11,11,9,0,0,96,48,24,0, + 60,102,195,255,192,99,62,8,11,11,9,0,0,12,24,48, + 0,60,102,195,255,192,99,62,8,11,11,9,0,0,24,60, + 102,0,60,102,195,255,192,99,62,8,10,10,9,0,0,102, + 102,0,60,102,195,255,192,99,62,6,11,11,9,1,0,192, + 96,48,0,112,48,48,48,48,48,252,6,11,11,9,1,0, + 24,48,96,0,112,48,48,48,48,48,252,6,11,11,9,1, + 0,48,120,204,0,112,48,48,48,48,48,252,6,10,10,9, + 1,0,204,204,0,112,48,48,48,48,48,252,8,12,12,9, + 0,0,136,216,112,112,216,140,62,103,195,195,102,60,8,11, + 11,9,0,0,50,126,76,0,220,230,195,195,195,195,195,8, + 11,11,9,0,0,96,48,24,0,60,102,195,195,195,102,60, + 8,11,11,9,0,0,12,24,48,0,60,102,195,195,195,102, + 60,8,11,11,9,0,0,24,60,102,0,60,102,195,195,195, + 102,60,8,11,11,9,0,0,50,126,76,0,60,102,195,195, + 195,102,60,8,10,10,9,0,0,102,102,0,60,102,195,195, + 195,102,60,8,10,10,9,0,0,24,24,0,0,255,255,0, + 0,24,24,8,9,9,9,0,255,1,63,102,207,219,243,102, + 252,128,8,11,11,9,0,0,96,48,24,0,195,195,195,195, + 195,103,59,8,11,11,9,0,0,12,24,48,0,195,195,195, + 195,195,103,59,8,11,11,9,0,0,24,60,102,0,195,195, + 195,195,195,103,59,8,10,10,9,0,0,102,102,0,195,195, + 195,195,195,103,59,8,14,14,9,0,253,12,24,48,0,195, + 195,195,195,195,103,59,3,198,124,7,12,12,9,1,253,224, + 96,96,124,102,102,102,102,124,96,96,224,8,13,13,9,0, + 253,102,102,0,195,195,195,195,195,103,59,3,198,124}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 3 y=12 dx= 9 dy= 0 ascent=12 len=13 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15Br[1423] U8G_SECTION(".progmem.u8g_font_9x15Br") = { + 0,9,15,0,253,10,1,232,3,214,32,127,253,12,253,11, + 253,0,0,0,9,0,12,2,10,10,9,3,0,192,192,192, + 192,192,192,192,192,0,192,5,3,3,9,2,7,216,216,216, + 7,8,8,9,1,1,108,108,254,108,108,254,108,108,7,11, + 11,9,1,255,16,124,214,208,240,124,30,22,214,124,16,8, + 10,10,9,0,0,67,230,230,76,24,24,50,103,103,194,8, + 10,10,9,0,0,56,108,108,120,48,121,207,198,206,123,2, + 4,4,9,3,6,192,192,192,192,5,12,12,9,2,255,24, + 48,96,96,192,192,192,192,96,96,48,24,5,12,12,9,2, + 255,192,96,48,48,24,24,24,24,48,48,96,192,7,5,5, + 9,1,2,108,56,254,56,108,8,7,7,9,0,1,24,24, + 24,255,24,24,24,3,5,5,9,3,253,224,224,96,96,192, + 8,1,1,9,0,4,255,4,3,3,9,2,255,96,240,96, + 8,10,10,9,0,0,3,6,6,12,24,24,48,96,96,192, + 8,10,10,9,0,0,24,60,102,195,195,195,195,102,60,24, + 6,10,10,9,1,0,48,112,240,48,48,48,48,48,48,252, + 8,10,10,9,0,0,60,102,195,3,6,12,24,48,96,255, + 8,10,10,9,0,0,124,198,3,6,28,6,3,3,198,124, + 8,10,10,9,0,0,6,14,30,54,102,198,255,6,6,6, + 8,10,10,9,0,0,254,192,192,220,230,3,3,195,102,60, + 8,10,10,9,0,0,60,102,194,192,220,230,195,195,102,60, + 8,10,10,9,0,0,255,3,3,6,12,12,24,24,24,24, + 8,10,10,9,0,0,60,102,195,102,60,102,195,195,102,60, + 8,10,10,9,0,0,60,102,195,195,103,59,3,67,102,60, + 4,8,8,9,2,255,96,240,96,0,0,96,240,96,4,10, + 10,9,2,253,96,240,96,0,0,112,112,48,48,96,6,10, + 10,9,1,0,12,24,48,96,192,192,96,48,24,12,8,4, + 4,9,0,2,255,0,0,255,6,10,10,9,1,0,192,96, + 48,24,12,12,24,48,96,192,7,10,10,9,1,0,124,198, + 198,6,12,24,48,0,48,48,8,10,10,9,0,0,60,102, + 195,207,219,219,206,192,99,62,8,10,10,9,0,0,24,60, + 102,195,195,195,255,195,195,195,8,10,10,9,0,0,252,198, + 195,198,252,198,195,195,198,252,8,10,10,9,0,0,62,99, + 193,192,192,192,192,193,99,62,8,10,10,9,0,0,252,198, + 195,195,195,195,195,195,198,252,7,10,10,9,1,0,254,192, + 192,192,252,192,192,192,192,254,8,10,10,9,0,0,255,192, + 192,192,252,192,192,192,192,192,8,10,10,9,0,0,62,99, + 192,192,192,199,195,195,99,62,8,10,10,9,0,0,195,195, + 195,195,255,195,195,195,195,195,6,10,10,9,1,0,252,48, + 48,48,48,48,48,48,48,252,6,10,10,9,1,0,60,12, + 12,12,12,12,12,140,216,112,8,10,10,9,0,0,195,198, + 204,216,240,240,216,204,198,195,7,10,10,9,1,0,192,192, + 192,192,192,192,192,192,192,254,8,10,10,9,0,0,195,231, + 255,219,219,219,195,195,195,195,8,10,10,9,0,0,195,227, + 243,243,219,219,207,199,199,195,8,10,10,9,0,0,60,102, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,254,195, + 195,195,254,192,192,192,192,192,8,10,10,9,0,0,60,102, + 195,195,195,195,219,207,102,61,8,10,10,9,0,0,254,195, + 195,195,254,248,204,198,195,195,8,10,10,9,0,0,126,195, + 192,192,126,3,3,3,195,126,8,10,10,9,0,0,255,24, + 24,24,24,24,24,24,24,24,8,10,10,9,0,0,195,195, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,195,195, + 195,102,102,102,60,60,24,24,8,10,10,9,0,0,195,195, + 195,195,219,219,219,255,231,195,8,10,10,9,0,0,195,195, + 102,60,24,24,60,102,195,195,8,10,10,9,0,0,195,195, + 102,60,24,24,24,24,24,24,7,10,10,9,1,0,254,6, + 6,12,24,48,96,192,192,254,5,12,12,9,2,255,248,192, + 192,192,192,192,192,192,192,192,192,248,8,10,10,9,0,0, + 192,96,96,48,24,24,12,6,6,3,5,12,12,9,2,255, + 248,24,24,24,24,24,24,24,24,24,24,248,6,4,4,9, + 1,6,48,120,204,132,8,1,1,9,0,255,255,4,3,3, + 9,2,8,192,96,48,8,7,7,9,0,0,62,99,3,127, + 195,199,123,8,10,10,9,0,0,192,192,192,220,230,195,195, + 195,230,220,8,7,7,9,0,0,62,99,192,192,192,99,62, + 8,10,10,9,0,0,3,3,3,59,103,195,195,195,103,59, + 8,7,7,9,0,0,60,102,195,255,192,99,62,8,10,10, + 9,0,0,30,51,51,48,48,252,48,48,48,48,8,10,10, + 9,0,253,125,199,198,198,124,192,126,195,195,126,8,10,10, + 9,0,0,192,192,192,220,230,195,195,195,195,195,6,10,10, + 9,1,0,48,48,0,112,48,48,48,48,48,252,7,13,13, + 9,1,253,6,6,0,30,6,6,6,6,6,198,198,198,124, + 7,10,10,9,1,0,192,192,192,204,216,240,240,216,204,198, + 6,10,10,9,1,0,112,48,48,48,48,48,48,48,48,252, + 8,7,7,9,0,0,182,219,219,219,219,219,219,8,7,7, + 9,0,0,220,230,195,195,195,195,195,8,7,7,9,0,0, + 60,102,195,195,195,102,60,8,10,10,9,0,253,220,230,195, + 195,195,230,220,192,192,192,8,10,10,9,0,253,59,103,195, + 195,195,103,59,3,3,3,8,7,7,9,0,0,222,115,96, + 96,96,96,96,8,7,7,9,0,0,126,195,192,126,3,195, + 126,8,9,9,9,0,0,48,48,252,48,48,48,48,51,30, + 8,7,7,9,0,0,195,195,195,195,195,103,59,8,7,7, + 9,0,0,195,195,102,102,60,60,24,8,7,7,9,0,0, + 195,195,219,219,219,255,102,8,7,7,9,0,0,195,102,60, + 24,60,102,195,8,10,10,9,0,253,195,195,195,195,195,103, + 59,3,198,124,6,7,7,9,1,0,252,12,24,48,96,192, + 252,5,12,12,9,2,255,56,96,96,96,96,192,192,96,96, + 96,96,56,2,10,10,9,3,0,192,192,192,192,192,192,192, + 192,192,192,5,12,12,9,2,255,224,48,48,48,48,24,24, + 48,48,48,48,224,8,3,3,9,0,7,115,219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=14 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=14 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15[2959] U8G_SECTION(".progmem.u8g_font_9x15") = { + 0,9,15,0,253,10,1,232,3,216,32,255,253,12,253,11, + 253,0,0,0,9,0,12,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,9,3,7,144,144, + 144,6,8,8,9,1,1,72,72,252,72,72,252,72,72,7, + 11,11,9,1,255,16,124,146,144,80,56,20,18,146,124,16, + 7,10,10,9,1,0,66,164,164,72,16,16,36,74,74,132, + 7,10,10,9,1,0,96,144,144,144,96,98,148,136,148,98, + 1,3,3,9,4,7,128,128,128,3,12,12,9,3,255,32, + 64,64,128,128,128,128,128,128,64,64,32,3,12,12,9,3, + 255,128,64,64,32,32,32,32,32,32,64,64,128,7,7,7, + 9,1,3,16,146,84,56,84,146,16,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,5,5,9,4,253,192,192,64, + 64,128,7,1,1,9,1,4,254,2,2,2,9,4,0,192, + 192,7,10,10,9,1,0,2,4,4,8,16,16,32,64,64, + 128,7,10,10,9,1,0,56,68,130,130,130,130,130,130,68, + 56,7,10,10,9,1,0,16,48,80,144,16,16,16,16,16, + 254,7,10,10,9,1,0,124,130,130,4,8,16,32,64,128, + 254,7,10,10,9,1,0,254,2,4,8,28,2,2,2,130, + 124,7,10,10,9,1,0,4,12,20,36,68,132,254,4,4, + 4,7,10,10,9,1,0,254,128,128,188,194,2,2,2,130, + 124,7,10,10,9,1,0,60,64,128,128,188,194,130,130,130, + 124,7,10,10,9,1,0,254,2,4,4,8,8,16,16,32, + 32,7,10,10,9,1,0,56,68,130,68,56,68,130,130,68, + 56,7,10,10,9,1,0,124,130,130,130,134,122,2,2,4, + 120,2,7,7,9,4,0,192,192,0,0,0,192,192,2,10, + 10,9,4,253,192,192,0,0,0,192,192,64,64,128,5,10, + 10,9,2,0,8,16,32,64,128,128,64,32,16,8,7,4, + 4,9,1,2,254,0,0,254,5,10,10,9,2,0,128,64, + 32,16,8,8,16,32,64,128,7,10,10,9,1,0,124,130, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,124,130, + 130,158,162,166,154,128,128,124,7,10,10,9,1,0,16,40, + 68,130,130,130,254,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,124,130, + 128,128,128,128,128,128,130,124,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,124,130, + 128,128,128,142,130,130,130,124,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,8,10,10,9,1,0,31,4, + 4,4,4,4,4,4,132,120,7,10,10,9,1,0,130,132, + 136,144,224,160,144,136,132,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,170,146,146,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,252,130, + 130,130,252,128,128,128,128,128,7,12,12,9,1,254,124,130, + 130,130,130,130,130,162,146,124,8,6,7,10,10,9,1,0, + 252,130,130,130,252,144,136,132,130,130,7,10,10,9,1,0, + 124,130,130,128,112,12,2,130,130,124,7,10,10,9,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,9,1,0, + 130,130,130,130,130,130,130,130,130,124,7,10,10,9,1,0, + 130,130,130,68,68,68,40,40,40,16,7,10,10,9,1,0, + 130,130,130,130,146,146,146,146,170,68,7,10,10,9,1,0, + 130,130,68,40,16,16,40,68,130,130,7,10,10,9,1,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 254,2,4,8,16,32,64,128,128,254,4,12,12,9,3,255, + 240,128,128,128,128,128,128,128,128,128,128,240,7,10,10,9, + 1,0,128,64,64,32,16,16,8,4,4,2,4,12,12,9, + 2,255,240,16,16,16,16,16,16,16,16,16,16,240,7,4, + 4,9,1,6,16,40,68,130,8,1,1,9,0,255,255,3, + 3,3,9,3,8,128,64,32,7,7,7,9,1,0,124,2, + 2,126,130,134,122,7,10,10,9,1,0,128,128,128,188,194, + 130,130,130,194,188,7,7,7,9,1,0,124,130,128,128,128, + 130,124,7,10,10,9,1,0,2,2,2,122,134,130,130,130, + 134,122,7,7,7,9,1,0,124,130,130,254,128,128,124,7, + 10,10,9,1,0,28,34,34,32,32,248,32,32,32,32,7, + 10,10,9,1,253,122,132,132,132,120,128,124,130,130,124,7, + 10,10,9,1,0,128,128,128,188,194,130,130,130,130,130,5, + 10,10,9,2,0,96,0,0,224,32,32,32,32,32,248,6, + 13,13,9,1,253,12,0,0,28,4,4,4,4,4,132,132, + 132,120,7,10,10,9,1,0,128,128,128,130,140,176,192,176, + 140,130,5,10,10,9,2,0,224,32,32,32,32,32,32,32, + 32,248,7,7,7,9,1,0,236,146,146,146,146,146,130,7, + 7,7,9,1,0,188,194,130,130,130,130,130,7,7,7,9, + 1,0,124,130,130,130,130,130,124,7,10,10,9,1,253,188, + 194,130,130,130,194,188,128,128,128,7,10,10,9,1,253,122, + 134,130,130,130,134,122,2,2,2,7,7,7,9,1,0,156, + 98,66,64,64,64,64,7,7,7,9,1,0,124,130,128,124, + 2,130,124,7,9,9,9,1,0,32,32,252,32,32,32,32, + 34,28,7,7,7,9,1,0,132,132,132,132,132,132,122,7, + 7,7,9,1,0,130,130,68,68,40,40,16,7,7,7,9, + 1,0,130,130,146,146,146,170,68,7,7,7,9,1,0,130, + 68,40,16,40,68,130,6,10,10,9,1,253,132,132,132,132, + 132,140,116,4,132,120,7,7,7,9,1,0,254,4,8,16, + 32,64,254,5,12,12,9,3,255,56,64,64,64,32,192,192, + 32,64,64,64,56,1,12,12,9,4,255,128,128,128,128,128, + 128,128,128,128,128,128,128,5,12,12,9,1,255,224,16,16, + 16,32,24,24,32,16,16,16,224,7,3,3,9,1,7,98, + 146,140,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,9,0,12,1,11,11,9,4,0,128, + 128,0,0,128,128,128,128,128,128,128,6,8,8,9,1,0, + 8,120,148,144,160,164,120,64,7,10,10,9,1,0,28,34, + 32,32,248,32,32,96,162,92,7,6,6,9,1,3,130,124, + 68,68,124,130,7,10,10,9,1,0,130,130,68,40,124,16, + 124,16,16,16,1,11,11,9,4,255,128,128,128,128,128,0, + 128,128,128,128,128,4,11,11,9,2,255,96,144,128,96,144, + 144,144,96,16,144,96,5,2,2,9,2,9,136,136,8,9, + 9,9,0,1,60,66,153,165,161,165,153,66,60,5,7,7, + 9,1,3,96,144,112,144,120,0,248,7,8,8,9,1,1, + 18,36,72,144,144,72,36,18,6,4,4,9,1,2,252,4, + 4,4,5,1,1,9,2,4,248,8,9,9,9,0,1,60, + 66,185,165,185,169,165,66,60,6,1,1,9,1,9,252,4, + 4,4,9,3,6,96,144,144,96,7,9,9,9,1,1,16, + 16,16,254,16,16,16,0,254,4,6,6,9,1,4,96,144, + 16,96,128,240,4,6,6,9,1,4,96,144,32,16,144,96, + 3,3,3,9,3,8,32,64,128,7,9,9,9,1,254,130, + 130,130,130,130,198,186,128,128,7,10,10,9,1,0,126,138, + 138,138,122,10,10,10,10,10,2,2,2,9,4,4,192,192, + 4,3,3,9,2,253,48,144,96,3,6,6,9,1,4,64, + 192,64,64,64,224,5,6,6,9,1,4,112,136,136,112,0, + 248,7,8,8,9,1,1,144,72,36,18,18,36,72,144,7, + 10,10,9,1,0,64,192,64,64,66,230,10,18,26,6,7, + 10,10,9,1,0,64,192,64,64,76,242,2,12,16,30,7, + 10,10,9,1,0,96,144,32,16,146,102,10,18,26,6,7, + 10,10,9,1,0,16,0,16,16,32,64,128,130,130,124,7, + 12,12,9,1,0,64,32,16,0,56,68,130,130,254,130,130, + 130,7,12,12,9,1,0,4,8,16,0,56,68,130,130,254, + 130,130,130,7,12,12,9,1,0,16,40,68,0,56,68,130, + 130,254,130,130,130,7,11,11,9,1,0,98,156,0,56,68, + 130,130,254,130,130,130,7,11,11,9,1,0,68,68,0,56, + 68,130,130,254,130,130,130,7,11,11,9,1,0,56,68,56, + 40,68,130,130,254,130,130,130,7,10,10,9,1,0,110,144, + 144,144,144,252,144,144,144,158,7,13,13,9,1,253,124,130, + 128,128,128,128,128,128,130,124,24,72,48,7,12,12,9,1, + 0,64,32,16,0,254,64,64,120,64,64,64,254,7,12,12, + 9,1,0,4,8,16,0,254,64,64,120,64,64,64,254,7, + 12,12,9,1,0,16,40,68,0,254,64,64,120,64,64,64, + 254,7,11,11,9,1,0,68,68,0,254,64,64,120,64,64, + 64,254,5,12,12,9,2,0,128,64,32,0,248,32,32,32, + 32,32,32,248,5,12,12,9,2,0,8,16,32,0,248,32, + 32,32,32,32,32,248,5,12,12,9,2,0,32,80,136,0, + 248,32,32,32,32,32,32,248,5,11,11,9,2,0,136,136, + 0,248,32,32,32,32,32,32,248,8,10,10,9,0,0,124, + 66,65,65,225,65,65,65,66,124,7,11,11,9,1,0,98, + 156,0,130,194,162,146,146,138,134,130,7,12,12,9,1,0, + 64,32,16,0,124,130,130,130,130,130,130,124,7,12,12,9, + 1,0,4,8,16,0,124,130,130,130,130,130,130,124,7,12, + 12,9,1,0,16,40,68,0,124,130,130,130,130,130,130,124, + 7,11,11,9,1,0,98,156,0,124,130,130,130,130,130,130, + 124,7,11,11,9,1,0,68,68,0,124,130,130,130,130,130, + 130,124,7,7,7,9,1,1,130,68,40,16,40,68,130,7, + 12,12,9,1,255,2,124,134,138,138,146,146,162,162,194,124, + 128,7,12,12,9,1,0,64,32,16,0,130,130,130,130,130, + 130,130,124,7,12,12,9,1,0,4,8,16,0,130,130,130, + 130,130,130,130,124,7,12,12,9,1,0,16,40,68,0,130, + 130,130,130,130,130,130,124,7,11,11,9,1,0,68,68,0, + 130,130,130,130,130,130,130,124,7,12,12,9,1,0,4,8, + 16,0,130,130,68,40,16,16,16,16,7,10,10,9,1,0, + 128,128,252,130,130,130,252,128,128,128,6,10,10,9,1,0, + 56,68,68,72,208,72,68,68,68,88,7,11,11,9,1,0, + 32,16,8,0,124,2,2,126,130,134,122,7,11,11,9,1, + 0,4,8,16,0,124,2,2,126,130,134,122,7,11,11,9, + 1,0,16,40,68,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,50,76,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,68,68,0,124,2,2,126,130,134,122,7,11,11, + 9,1,0,24,36,24,0,124,2,2,126,130,134,122,7,7, + 7,9,1,0,108,146,18,124,144,146,110,7,10,10,9,1, + 253,124,130,128,128,128,130,124,24,72,48,7,11,11,9,1, + 0,64,32,16,0,124,130,130,254,128,128,124,7,11,11,9, + 1,0,4,8,16,0,124,130,130,254,128,128,124,7,11,11, + 9,1,0,16,40,68,0,124,130,130,254,128,128,124,7,10, + 10,9,1,0,68,68,0,124,130,130,254,128,128,124,5,11, + 11,9,2,0,128,64,32,0,224,32,32,32,32,32,248,5, + 11,11,9,2,0,16,32,64,0,224,32,32,32,32,32,248, + 6,11,11,9,1,0,32,80,136,0,112,16,16,16,16,16, + 124,5,10,10,9,2,0,144,144,0,224,32,32,32,32,32, + 248,7,11,11,9,1,0,72,48,80,8,124,130,130,130,130, + 130,124,7,10,10,9,1,0,98,156,0,188,194,130,130,130, + 130,130,7,11,11,9,1,0,64,32,16,0,124,130,130,130, + 130,130,124,7,11,11,9,1,0,4,8,16,0,124,130,130, + 130,130,130,124,7,11,11,9,1,0,16,40,68,0,124,130, + 130,130,130,130,124,7,10,10,9,1,0,98,156,0,124,130, + 130,130,130,130,124,7,10,10,9,1,0,68,68,0,124,130, + 130,130,130,130,124,7,9,9,9,1,0,16,56,16,0,254, + 0,16,56,16,7,9,9,9,1,255,2,124,138,138,146,162, + 162,124,128,7,11,11,9,1,0,64,32,16,0,132,132,132, + 132,132,132,122,7,11,11,9,1,0,4,8,16,0,132,132, + 132,132,132,132,122,7,11,11,9,1,0,16,40,68,0,132, + 132,132,132,132,132,122,7,10,10,9,1,0,72,72,0,132, + 132,132,132,132,132,122,6,14,14,9,1,253,8,16,32,0, + 132,132,132,132,132,140,116,4,132,120,7,12,12,9,1,253, + 128,128,128,188,194,130,130,194,188,128,128,128,6,13,13,9, + 1,253,72,72,0,132,132,132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=13 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15r[1427] U8G_SECTION(".progmem.u8g_font_9x15r") = { + 0,9,15,0,253,10,1,232,3,216,32,127,253,12,253,11, + 253,0,0,0,9,0,12,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,9,3,7,144,144, + 144,6,8,8,9,1,1,72,72,252,72,72,252,72,72,7, + 11,11,9,1,255,16,124,146,144,80,56,20,18,146,124,16, + 7,10,10,9,1,0,66,164,164,72,16,16,36,74,74,132, + 7,10,10,9,1,0,96,144,144,144,96,98,148,136,148,98, + 1,3,3,9,4,7,128,128,128,3,12,12,9,3,255,32, + 64,64,128,128,128,128,128,128,64,64,32,3,12,12,9,3, + 255,128,64,64,32,32,32,32,32,32,64,64,128,7,7,7, + 9,1,3,16,146,84,56,84,146,16,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,5,5,9,4,253,192,192,64, + 64,128,7,1,1,9,1,4,254,2,2,2,9,4,0,192, + 192,7,10,10,9,1,0,2,4,4,8,16,16,32,64,64, + 128,7,10,10,9,1,0,56,68,130,130,130,130,130,130,68, + 56,7,10,10,9,1,0,16,48,80,144,16,16,16,16,16, + 254,7,10,10,9,1,0,124,130,130,4,8,16,32,64,128, + 254,7,10,10,9,1,0,254,2,4,8,28,2,2,2,130, + 124,7,10,10,9,1,0,4,12,20,36,68,132,254,4,4, + 4,7,10,10,9,1,0,254,128,128,188,194,2,2,2,130, + 124,7,10,10,9,1,0,60,64,128,128,188,194,130,130,130, + 124,7,10,10,9,1,0,254,2,4,4,8,8,16,16,32, + 32,7,10,10,9,1,0,56,68,130,68,56,68,130,130,68, + 56,7,10,10,9,1,0,124,130,130,130,134,122,2,2,4, + 120,2,7,7,9,4,0,192,192,0,0,0,192,192,2,10, + 10,9,4,253,192,192,0,0,0,192,192,64,64,128,5,10, + 10,9,2,0,8,16,32,64,128,128,64,32,16,8,7,4, + 4,9,1,2,254,0,0,254,5,10,10,9,2,0,128,64, + 32,16,8,8,16,32,64,128,7,10,10,9,1,0,124,130, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,124,130, + 130,158,162,166,154,128,128,124,7,10,10,9,1,0,16,40, + 68,130,130,130,254,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,124,130, + 128,128,128,128,128,128,130,124,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,124,130, + 128,128,128,142,130,130,130,124,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,8,10,10,9,1,0,31,4, + 4,4,4,4,4,4,132,120,7,10,10,9,1,0,130,132, + 136,144,224,160,144,136,132,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,170,146,146,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,252,130, + 130,130,252,128,128,128,128,128,7,12,12,9,1,254,124,130, + 130,130,130,130,130,162,146,124,8,6,7,10,10,9,1,0, + 252,130,130,130,252,144,136,132,130,130,7,10,10,9,1,0, + 124,130,130,128,112,12,2,130,130,124,7,10,10,9,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,9,1,0, + 130,130,130,130,130,130,130,130,130,124,7,10,10,9,1,0, + 130,130,130,68,68,68,40,40,40,16,7,10,10,9,1,0, + 130,130,130,130,146,146,146,146,170,68,7,10,10,9,1,0, + 130,130,68,40,16,16,40,68,130,130,7,10,10,9,1,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 254,2,4,8,16,32,64,128,128,254,4,12,12,9,3,255, + 240,128,128,128,128,128,128,128,128,128,128,240,7,10,10,9, + 1,0,128,64,64,32,16,16,8,4,4,2,4,12,12,9, + 2,255,240,16,16,16,16,16,16,16,16,16,16,240,7,4, + 4,9,1,6,16,40,68,130,8,1,1,9,0,255,255,3, + 3,3,9,3,8,128,64,32,7,7,7,9,1,0,124,2, + 2,126,130,134,122,7,10,10,9,1,0,128,128,128,188,194, + 130,130,130,194,188,7,7,7,9,1,0,124,130,128,128,128, + 130,124,7,10,10,9,1,0,2,2,2,122,134,130,130,130, + 134,122,7,7,7,9,1,0,124,130,130,254,128,128,124,7, + 10,10,9,1,0,28,34,34,32,32,248,32,32,32,32,7, + 10,10,9,1,253,122,132,132,132,120,128,124,130,130,124,7, + 10,10,9,1,0,128,128,128,188,194,130,130,130,130,130,5, + 10,10,9,2,0,96,0,0,224,32,32,32,32,32,248,6, + 13,13,9,1,253,12,0,0,28,4,4,4,4,4,132,132, + 132,120,7,10,10,9,1,0,128,128,128,130,140,176,192,176, + 140,130,5,10,10,9,2,0,224,32,32,32,32,32,32,32, + 32,248,7,7,7,9,1,0,236,146,146,146,146,146,130,7, + 7,7,9,1,0,188,194,130,130,130,130,130,7,7,7,9, + 1,0,124,130,130,130,130,130,124,7,10,10,9,1,253,188, + 194,130,130,130,194,188,128,128,128,7,10,10,9,1,253,122, + 134,130,130,130,134,122,2,2,2,7,7,7,9,1,0,156, + 98,66,64,64,64,64,7,7,7,9,1,0,124,130,128,124, + 2,130,124,7,9,9,9,1,0,32,32,252,32,32,32,32, + 34,28,7,7,7,9,1,0,132,132,132,132,132,132,122,7, + 7,7,9,1,0,130,130,68,68,40,40,16,7,7,7,9, + 1,0,130,130,146,146,146,170,68,7,7,7,9,1,0,130, + 68,40,16,40,68,130,6,10,10,9,1,253,132,132,132,132, + 132,140,116,4,132,120,7,7,7,9,1,0,254,4,8,16, + 32,64,254,5,12,12,9,3,255,56,64,64,64,32,192,192, + 32,64,64,64,56,1,12,12,9,4,255,128,128,128,128,128, + 128,128,128,128,128,128,128,5,12,12,9,1,255,224,16,16, + 16,32,24,24,32,16,16,16,224,7,3,3,9,1,7,98, + 146,140,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 4, '1' Height: 10 + Calculated Max Values w= 9 h=18 x= 8 y=12 dx= 9 dy= 0 ascent=14 len=36 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 4 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[3936] U8G_SECTION(".progmem.u8g_font_9x18_67_75") = { + 0,9,18,0,252,4,1,255,4,34,32,255,0,14,252,10, + 0,8,7,7,9,0,1,72,36,18,255,18,36,72,7,10, + 10,9,1,0,16,16,16,146,84,56,146,84,56,16,7,7, + 7,9,1,1,16,34,68,248,68,34,16,7,7,7,9,1, + 1,16,136,68,62,68,136,16,7,7,7,9,1,1,16,34, + 66,254,66,34,16,7,10,10,9,1,0,16,56,84,146,16, + 16,16,16,16,124,7,7,7,9,1,1,16,136,132,254,132, + 136,16,7,10,10,9,1,0,124,16,16,16,16,16,146,84, + 56,16,7,10,10,9,1,0,16,56,84,146,16,146,84,56, + 16,254,8,7,7,9,0,1,16,34,65,254,64,32,16,8, + 7,7,9,0,1,8,68,130,127,2,4,8,8,7,7,9, + 0,1,16,34,69,254,68,36,16,8,7,7,9,0,1,8, + 68,162,127,34,36,8,9,5,10,9,0,2,34,0,73,0, + 247,128,65,0,34,0,9,5,10,9,0,2,34,0,73,0, + 255,128,73,0,34,0,5,10,10,9,2,0,32,64,72,184, + 200,16,16,160,120,32,6,10,10,9,1,0,32,64,252,68, + 36,4,4,4,4,4,7,10,10,9,1,0,8,4,254,132, + 136,128,128,128,128,128,6,10,10,9,1,0,4,4,4,4, + 4,36,68,252,64,32,7,10,10,9,1,0,128,128,128,128, + 128,136,132,254,4,8,7,8,8,9,1,0,248,8,8,8, + 8,42,28,8,7,8,8,9,1,1,2,2,2,34,66,254, + 64,32,9,7,14,9,0,2,14,0,17,0,32,128,32,128, + 168,128,112,0,32,0,9,7,14,9,0,2,56,0,68,0, + 130,0,130,0,138,128,7,0,2,0,7,10,10,9,1,0, + 254,64,112,96,80,8,8,4,2,2,7,9,9,9,1,0, + 144,160,254,160,146,10,254,10,18,9,7,14,9,0,1,50, + 0,71,0,138,128,130,0,130,0,68,0,56,0,9,7,14, + 9,0,1,38,0,113,0,168,128,32,128,32,128,17,0,14, + 0,7,4,4,9,1,3,16,32,64,254,7,4,4,9,1, + 0,254,64,32,16,4,10,10,9,4,0,128,192,160,144,128, + 128,128,128,128,128,4,10,10,9,1,0,16,48,80,144,16, + 16,16,16,16,16,7,4,4,9,1,3,16,8,4,254,7, + 4,4,9,1,0,254,4,8,16,4,10,10,9,4,0,128, + 128,128,128,128,128,144,160,192,128,4,10,10,9,1,0,16, + 16,16,16,16,16,144,80,48,16,7,9,9,9,1,0,8, + 4,254,4,40,64,254,64,32,9,10,20,9,0,0,34,0, + 114,0,170,0,34,0,34,0,34,0,34,0,42,128,39,0, + 34,0,7,9,9,9,1,0,32,64,254,64,40,4,254,4, + 8,7,10,10,9,1,0,32,64,254,64,32,32,64,254,64, + 32,9,10,20,9,0,0,34,0,119,0,170,128,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,7,10,10,9,1, + 0,8,4,254,4,8,8,4,254,4,8,9,10,20,9,0, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,170, + 128,119,0,34,0,7,7,7,9,1,1,32,64,254,0,254, + 4,8,7,7,7,9,1,1,8,4,254,0,254,64,32,9, + 7,14,9,0,1,16,0,33,0,127,128,130,0,127,128,36, + 0,16,0,9,7,14,9,0,1,20,0,34,0,127,0,136, + 128,127,0,34,0,20,0,9,7,14,9,0,1,4,0,18, + 0,255,0,32,128,255,0,66,0,4,0,9,7,14,9,0, + 1,16,0,32,0,127,128,128,0,127,128,32,0,16,0,7, + 10,10,9,1,0,16,40,108,170,40,40,40,40,40,40,9, + 7,14,9,0,1,4,0,2,0,255,0,0,128,255,0,2, + 0,4,0,7,10,10,9,1,0,40,40,40,40,40,40,170, + 108,40,16,9,7,14,9,0,1,20,0,34,0,127,0,128, + 128,127,0,34,0,20,0,7,10,10,9,1,0,16,40,108, + 170,40,40,170,108,40,16,7,7,7,9,1,1,252,144,136, + 196,162,144,8,7,7,7,9,1,1,126,18,34,70,138,18, + 32,7,7,7,9,1,1,32,18,138,70,34,18,126,7,7, + 7,9,1,1,8,144,162,196,136,144,252,9,9,18,9,0, + 0,8,0,16,0,63,128,64,0,255,128,64,0,63,128,16, + 0,8,0,9,9,18,9,0,0,8,0,4,0,254,0,1, + 0,255,128,1,0,254,0,4,0,8,0,8,7,7,9,0, + 1,16,32,72,245,66,32,16,8,7,7,9,0,1,8,4, + 18,175,66,4,8,7,10,10,9,1,0,16,56,84,146,16, + 124,16,124,16,16,7,10,10,9,1,0,16,16,124,16,124, + 16,146,84,56,16,7,7,7,9,1,1,16,32,64,182,64, + 32,16,7,10,10,9,1,0,16,40,84,146,0,16,16,0, + 16,16,7,7,7,9,1,1,16,8,4,218,4,8,16,7, + 10,10,9,1,0,16,16,0,16,16,0,146,84,40,16,7, + 5,5,9,1,2,144,160,254,160,144,7,5,5,9,1,2, + 18,10,254,10,18,9,7,14,9,0,1,16,0,48,0,95, + 128,128,128,95,128,48,0,16,0,7,10,10,9,1,0,16, + 40,68,238,40,40,40,40,40,56,9,7,14,9,0,1,4, + 0,6,0,253,0,128,128,253,0,6,0,4,0,7,10,10, + 9,1,0,56,40,40,40,40,40,238,68,40,16,7,11,11, + 9,1,0,16,40,68,238,40,40,56,0,56,40,56,7,11, + 11,9,1,255,16,40,68,238,40,40,40,40,108,68,124,7, + 11,11,9,1,255,16,40,68,254,40,40,40,40,108,68,124, + 7,11,11,9,1,255,16,40,68,254,56,56,56,56,124,68, + 124,7,10,10,9,1,0,16,40,68,238,68,238,40,40,40, + 56,7,11,11,9,1,255,16,40,68,238,68,238,40,40,108, + 68,124,9,7,14,9,0,1,132,0,134,0,253,0,128,128, + 253,0,134,0,132,0,7,7,7,9,1,0,252,128,184,176, + 168,132,2,7,7,7,9,1,0,128,66,42,26,58,2,126, + 7,11,11,9,1,255,16,40,68,238,40,40,40,238,68,40, + 16,9,7,14,9,0,1,4,0,50,0,73,0,255,128,73, + 0,50,0,4,0,9,10,20,9,0,0,34,0,39,0,42, + 128,34,0,34,0,34,0,34,0,170,0,114,0,34,0,7, + 13,13,9,1,254,8,4,254,4,8,4,254,4,8,4,254, + 4,8,8,5,5,9,0,2,36,68,255,68,36,8,5,5, + 9,0,2,36,34,255,34,36,9,5,10,9,0,2,42,0, + 73,0,255,128,73,0,42,0,8,5,5,9,0,2,42,74, + 255,74,42,8,5,5,9,0,2,84,82,255,82,84,9,5, + 10,9,0,2,85,0,148,128,255,128,148,128,85,0,7,7, + 7,9,1,1,16,48,80,158,80,48,16,7,7,7,9,1, + 1,16,24,20,242,20,24,16,8,5,5,9,0,2,36,102, + 189,102,36,9,9,18,9,0,5,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,9,2,4,9,0, + 252,255,128,255,128,9,4,8,9,0,252,255,128,255,128,255, + 128,255,128,9,7,14,9,0,252,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,9,9,18,9,0,252,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,9, + 11,22,9,0,252,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,9,14,28,9,0, + 252,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,9,16,32, + 9,0,252,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,9,18,36,9,0,252,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,8,18,18, + 9,0,252,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,7,18,18,9,0,252,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,254,254,254,254,6,18,18, + 9,0,252,252,252,252,252,252,252,252,252,252,252,252,252,252, + 252,252,252,252,252,5,18,18,9,0,252,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,3,18,18, + 9,0,252,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,2,18,18,9,0,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,1,18,18, + 9,0,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,4,18,18,9,5,252,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,9,17,34, + 9,0,253,85,0,0,0,170,128,0,0,85,0,0,0,170, + 128,0,0,85,0,0,0,170,128,0,0,85,0,0,0,170, + 128,0,0,85,0,9,18,36,9,0,252,170,128,85,0,170, + 128,85,0,170,128,85,0,170,128,85,0,170,128,85,0,170, + 128,85,0,170,128,85,0,170,128,85,0,170,128,85,0,9, + 18,36,9,0,252,255,128,170,128,255,128,85,0,255,128,170, + 128,255,128,85,0,255,128,170,128,255,128,85,0,255,128,170, + 128,255,128,85,0,255,128,170,128,9,2,4,9,0,12,255, + 128,255,128,1,18,18,9,8,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,5,9,9,9,0, + 252,248,248,248,248,248,248,248,248,248,4,9,9,9,5,252, + 240,240,240,240,240,240,240,240,240,5,9,9,9,0,5,248, + 248,248,248,248,248,248,248,248,9,18,36,9,0,252,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,9,18,36,9,0,252,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,9,18,36,9, + 0,252,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,9,18,36,9,0,252,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 4,9,9,9,5,5,240,240,240,240,240,240,240,240,240,9, + 18,36,9,0,252,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,9,18,36,9,0,252,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,7,7,7,9,1,1,254,254,254,254,254,254,254, + 7,7,7,9,1,1,254,130,130,130,130,130,254,7,7,7, + 9,1,1,124,130,130,130,130,130,124,7,7,7,9,1,1, + 254,130,186,186,186,130,254,7,7,7,9,1,1,254,130,254, + 130,254,130,254,7,7,7,9,1,1,254,170,170,170,170,170, + 254,7,7,7,9,1,1,254,170,254,170,254,170,254,7,7, + 7,9,1,1,254,146,138,198,162,146,254,7,7,7,9,1, + 1,254,146,162,198,138,146,254,7,7,7,9,1,1,254,214, + 138,214,162,214,254,3,3,3,9,3,3,224,224,224,3,3, + 3,9,3,3,224,160,224,9,5,10,9,0,2,255,128,255, + 128,255,128,255,128,255,128,9,5,10,9,0,2,255,128,128, + 128,128,128,128,128,255,128,5,9,9,9,2,0,248,248,248, + 248,248,248,248,248,248,5,9,9,9,2,0,248,136,136,136, + 136,136,136,136,248,9,5,10,9,0,2,127,128,127,128,255, + 128,255,0,255,0,9,5,10,9,0,2,127,128,64,128,128, + 128,129,0,255,0,9,10,20,9,0,0,8,0,8,0,28, + 0,28,0,62,0,62,0,127,0,127,0,255,128,255,128,9, + 10,20,9,0,0,8,0,8,0,20,0,20,0,34,0,34, + 0,65,0,65,0,128,128,255,128,7,7,7,9,1,1,16, + 16,56,56,124,124,254,7,7,7,9,1,1,16,16,40,40, + 68,68,254,9,9,18,9,0,0,192,0,240,0,252,0,255, + 0,255,128,255,0,252,0,240,0,192,0,9,9,18,9,0, + 0,192,0,176,0,140,0,131,0,128,128,131,0,140,0,176, + 0,192,0,7,7,7,9,1,1,128,224,248,254,248,224,128, + 7,7,7,9,1,1,128,224,152,134,152,224,128,9,5,10, + 9,0,2,224,0,252,0,255,128,252,0,224,0,9,5,10, + 9,0,2,224,0,156,0,131,128,156,0,224,0,9,10,20, + 9,0,0,255,128,255,128,127,0,127,0,62,0,62,0,28, + 0,28,0,8,0,8,0,9,10,20,9,0,0,255,128,128, + 128,65,0,65,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,7,7,9,1,1,254,124,124,56,56,16,16,7,7, + 7,9,1,1,254,68,68,40,40,16,16,9,9,18,9,0, + 0,1,128,7,128,31,128,127,128,255,128,127,128,31,128,7, + 128,1,128,9,9,18,9,0,0,1,128,6,128,24,128,96, + 128,128,128,96,128,24,128,6,128,1,128,7,7,7,9,1, + 1,2,14,62,254,62,14,2,7,7,7,9,1,1,2,14, + 50,194,50,14,2,9,5,10,9,0,2,3,128,31,128,255, + 128,31,128,3,128,9,5,10,9,0,2,3,128,28,128,224, + 128,28,128,3,128,9,9,18,9,0,0,8,0,28,0,62, + 0,127,0,255,128,127,0,62,0,28,0,8,0,9,9,18, + 9,0,0,8,0,20,0,34,0,65,0,128,128,65,0,34, + 0,20,0,8,0,9,9,18,9,0,0,8,0,20,0,34, + 0,73,0,156,128,73,0,34,0,20,0,8,0,7,7,7, + 9,1,1,56,68,146,186,146,68,56,5,9,9,9,2,0, + 32,32,80,80,136,80,80,32,32,7,7,7,9,1,1,56, + 68,130,130,130,68,56,7,7,7,9,1,1,16,68,0,130, + 0,68,16,7,7,7,9,1,1,56,108,170,170,170,108,56, + 7,7,7,9,1,1,56,68,146,170,146,68,56,7,7,7, + 9,1,1,56,124,254,254,254,124,56,7,7,7,9,1,1, + 56,116,242,242,242,116,56,7,7,7,9,1,1,56,92,158, + 158,158,92,56,7,7,7,9,1,1,56,68,130,254,254,124, + 56,7,7,7,9,1,1,56,124,254,254,130,68,56,7,7, + 7,9,1,1,56,92,158,158,130,68,56,7,7,7,9,1, + 1,56,92,158,254,254,124,56,4,7,7,9,1,1,48,112, + 240,240,240,112,48,4,7,7,9,4,1,192,224,240,240,240, + 224,192,9,18,36,9,0,252,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,227,128,193,128,193,128,193,128,227,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,18,36,9, + 0,252,255,128,255,128,255,128,255,128,255,128,255,128,227,128, + 221,128,190,128,190,128,190,128,221,128,227,128,255,128,255,128, + 255,128,255,128,255,128,9,10,20,9,0,4,255,128,255,128, + 255,128,255,128,255,128,255,128,227,128,221,128,190,128,190,128, + 9,9,18,9,0,252,190,128,190,128,221,128,227,128,255,128, + 255,128,255,128,255,128,255,128,4,4,4,9,1,4,48,64, + 128,128,4,4,4,9,4,4,192,32,16,16,4,4,4,9, + 4,1,16,16,32,192,4,4,4,9,1,1,128,128,64,48, + 7,4,4,9,1,4,56,68,130,130,7,4,4,9,1,1, + 130,130,68,56,7,7,7,9,1,1,2,6,14,30,62,126, + 254,7,7,7,9,1,1,128,192,224,240,248,252,254,7,7, + 7,9,1,1,254,252,248,240,224,192,128,7,7,7,9,1, + 1,254,126,62,30,14,6,2,5,5,5,9,2,2,112,136, + 136,136,112,7,7,7,9,1,1,254,242,242,242,242,242,254, + 7,7,7,9,1,1,254,158,158,158,158,158,254,7,7,7, + 9,1,1,254,254,250,242,226,194,254,7,7,7,9,1,1, + 254,134,142,158,190,254,254,7,7,7,9,1,1,254,146,146, + 146,146,146,254,9,10,20,9,0,0,8,0,8,0,20,0, + 20,0,34,0,42,0,93,0,73,0,128,128,255,128,9,10, + 20,9,0,0,8,0,8,0,28,0,28,0,58,0,58,0, + 121,0,121,0,248,128,255,128,9,10,20,9,0,0,8,0, + 8,0,28,0,28,0,46,0,46,0,79,0,79,0,143,128, + 255,128,9,9,18,9,0,0,62,0,65,0,128,128,128,128, + 128,128,128,128,128,128,65,0,62,0,7,7,7,9,1,1, + 254,146,146,242,130,130,254,7,7,7,9,1,1,254,130,130, + 242,146,146,254,7,7,7,9,1,1,254,130,130,158,146,146, + 254,7,7,7,9,1,1,254,146,146,158,130,130,254,7,7, + 7,9,1,1,124,146,146,242,130,130,124,7,7,7,9,1, + 1,124,130,130,242,146,146,124,7,7,7,9,1,1,124,130, + 130,158,146,146,124,7,7,7,9,1,1,124,146,146,158,130, + 130,124,6,6,6,9,1,1,252,136,144,160,192,128,6,6, + 6,9,1,1,252,68,36,20,12,4,6,6,6,9,1,1, + 128,192,160,144,136,252,6,6,6,9,1,1,252,132,132,132, + 132,252,6,6,6,9,1,1,252,252,252,252,252,252,5,5, + 5,9,2,1,248,136,136,136,248,5,5,5,9,2,1,248, + 248,248,248,248,6,6,6,9,1,1,4,12,20,36,68,252 + }; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 5 + Calculated Max Values w= 9 h=10 x= 3 y= 3 dx= 9 dy= 0 ascent=10 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_75r[792] U8G_SECTION(".progmem.u8g_font_9x18_75r") = { + 0,9,18,0,252,9,2,33,0,0,32,79,0,10,0,9, + 0,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 9 h=12 x= 4 y= 5 dx= 9 dy= 0 ascent=12 len=24 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =12 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[3336] U8G_SECTION(".progmem.u8g_font_9x18_78_79") = { + 0,9,18,0,252,9,2,231,4,175,32,255,0,12,255,11, + 0,9,9,18,9,0,0,62,0,28,0,136,128,201,128,247, + 128,201,128,136,128,28,0,62,0,9,9,18,9,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,9,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,8,0,28,0,62,0,255, + 128,62,0,28,0,8,0,8,0,9,9,18,9,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,9,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,9,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,9,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,62,0,119,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 235,128,93,0,42,0,34,0,127,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 247,128,73,0,54,0,42,0,127,0,65,0,8,7,7,9, + 0,2,24,24,44,199,46,60,102,8,9,9,9,0,0,24, + 219,255,126,24,126,255,219,24,8,9,9,9,0,0,24,219, + 255,102,36,102,255,219,24,9,9,18,9,0,0,8,0,73, + 0,42,0,28,0,255,128,28,0,42,0,73,0,8,0,9, + 9,18,9,0,0,8,0,73,0,62,0,62,0,255,128,62, + 0,62,0,73,0,8,0,9,9,18,9,0,0,8,0,73, + 0,54,0,62,0,213,128,62,0,54,0,73,0,8,0,9, + 9,18,9,0,0,8,0,136,128,107,0,62,0,28,0,62, + 0,107,0,136,128,8,0,9,9,18,9,0,0,34,0,20, + 0,148,128,127,0,28,0,127,0,148,128,20,0,34,0,9, + 9,18,9,0,0,34,0,54,0,255,128,127,0,62,0,127, + 0,255,128,54,0,34,0,9,9,18,9,0,0,42,0,42, + 0,221,128,62,0,255,128,62,0,221,128,42,0,42,0,9, + 9,18,9,0,0,42,0,42,0,221,128,42,0,255,128,42, + 0,221,128,42,0,42,0,9,11,22,9,0,0,28,0,28, + 0,201,128,201,128,34,0,8,0,34,0,201,128,201,128,28, + 0,28,0,9,11,22,9,0,0,28,0,28,0,201,128,201, + 128,62,0,20,0,62,0,201,128,201,128,28,0,28,0,9, + 11,22,9,0,0,28,0,28,0,201,128,201,128,62,0,28, + 0,62,0,201,128,201,128,28,0,28,0,9,11,22,9,0, + 0,28,0,20,0,201,128,201,128,62,0,20,0,127,0,170, + 128,201,128,28,0,28,0,8,9,9,9,0,0,24,24,219, + 255,36,36,126,231,66,255,255,255,8,9,9,9,0,0,24, + 203,189,110,24,118,189,211,24,9,12,24,9,0,0,8,0, + 42,0,93,0,170,128,107,0,221,128,221,128,107,0,170,128, + 93,0,42,0,8,0,9,12,24,9,0,0,8,0,42,0, + 93,0,170,128,107,0,221,128,221,128,107,0,170,128,93,0, + 42,0,8,0,9,12,24,9,0,0,8,0,42,0,93,0, + 170,128,107,0,221,128,221,128,107,0,170,128,93,0,42,0, + 8,0,9,9,18,9,0,0,8,0,73,0,42,0,20,0, + 235,128,20,0,42,0,73,0,8,0,9,9,18,9,0,0, + 8,0,73,0,42,0,20,0,235,128,20,0,42,0,73,0, + 8,0,8,9,9,9,0,0,24,219,203,60,24,60,211,219, + 24,9,9,18,9,0,0,8,0,73,0,42,0,0,0,235, + 128,0,0,42,0,73,0,8,0,9,9,18,9,0,0,8, + 0,73,0,42,0,28,0,255,128,28,0,42,0,73,0,8, + 0,255,9,8,16,9,0,1,62,0,67,0,129,128,129,128, + 129,128,129,128,67,0,62,0,255,9,9,18,9,0,0,254, + 0,130,0,131,128,131,128,131,128,131,128,255,128,63,128,63, + 128,9,9,18,9,0,0,63,128,63,128,255,128,131,128,131, + 128,131,128,131,128,130,0,254,0,8,8,8,9,0,0,254, + 131,131,131,131,131,255,127,8,8,8,9,0,0,127,255,131, + 131,131,131,131,254,255,255,255,9,9,18,9,0,0,8,0, + 28,0,8,0,65,0,227,128,65,0,8,0,28,0,8,0, + 255,1,10,10,9,4,0,128,128,128,128,128,128,128,128,128, + 128,2,10,10,9,3,0,192,192,192,192,192,192,192,192,192, + 192,3,10,10,9,3,0,224,224,224,224,224,224,224,224,224, + 224,4,6,6,9,3,5,112,128,224,240,240,96,4,6,6, + 9,3,5,96,240,240,112,16,224,9,6,12,9,0,5,115, + 128,132,0,231,0,247,128,247,128,99,0,9,6,12,9,0, + 5,99,0,247,128,247,128,115,128,16,128,231,0,255,255,7, + 10,10,9,1,0,4,126,228,228,228,124,4,100,104,48,5, + 10,10,9,2,0,112,248,248,112,32,32,0,32,112,32,5, + 10,10,9,2,0,80,248,248,112,32,32,0,32,112,32,9, + 9,18,9,0,0,99,0,247,128,255,128,255,128,127,0,62, + 0,28,0,8,0,8,0,9,9,18,9,0,0,112,0,248, + 0,252,0,126,0,63,128,126,0,252,0,248,0,112,0,9, + 12,24,9,0,0,8,0,116,128,149,0,14,0,4,0,107, + 0,247,128,255,128,127,0,62,0,28,0,8,0,9,12,24, + 9,0,0,16,0,41,0,82,0,156,0,32,0,88,0,124, + 0,60,0,254,0,254,128,255,0,126,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,227,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,237,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,152,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,152,128,132,128,132, + 128,136,128,156,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,152,128,132,128,136,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,152,128,168, + 128,188,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,144,128,152,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,140,128,144,128,152, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,132,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,148,128,136, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,148,128,140,128,132,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,164,128,170,128,170, + 128,170,128,164,128,128,128,127,0,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,239,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,7,8,8,9,1,1,48, + 24,12,254,254,12,24,48,255,255,255,7,5,5,9,1,1, + 224,250,62,14,30,8,7,7,9,1,1,8,12,230,255,230, + 12,8,7,5,5,9,1,1,30,14,62,250,224,9,7,14, + 9,0,0,48,0,28,0,31,0,255,128,31,0,28,0,48, + 0,9,9,18,9,0,0,28,0,30,0,15,0,255,128,255, + 128,255,128,15,0,30,0,28,0,9,5,10,9,0,1,2, + 0,3,0,255,128,3,0,2,0,9,7,14,9,0,0,4, + 0,6,0,255,0,255,128,255,0,6,0,4,0,9,5,10, + 9,0,1,2,0,183,0,183,128,183,0,2,0,9,5,10, + 9,0,1,2,0,171,0,171,128,171,0,2,0,9,5,10, + 9,0,1,2,0,255,0,255,128,255,0,2,0,9,8,16, + 9,0,1,128,0,112,0,78,0,33,128,31,128,62,0,112, + 0,128,0,9,8,16,9,0,1,128,0,112,0,62,0,31, + 128,33,128,78,0,112,0,128,0,9,8,16,9,0,1,128, + 0,112,0,62,0,31,128,31,128,62,0,112,0,128,0,9, + 7,14,9,0,0,132,0,134,0,255,0,255,128,127,0,6, + 0,4,0,9,7,14,9,0,0,4,0,6,0,127,0,255, + 128,255,0,134,0,132,0,6,9,9,9,2,0,16,16,248, + 248,252,248,248,16,16,8,9,9,9,0,1,4,4,254,254, + 255,254,254,4,4,9,9,18,9,0,0,24,0,28,0,22, + 0,243,0,129,128,243,0,22,0,28,0,24,0,9,9,18, + 9,0,0,24,0,28,0,26,0,249,0,192,128,249,0,26, + 0,28,0,24,0,9,9,18,9,0,0,0,128,1,128,62, + 128,64,128,129,128,243,0,238,0,60,0,56,0,9,9,18, + 9,0,0,56,0,60,0,238,0,243,0,129,128,64,128,62, + 128,1,128,0,128,8,9,9,9,0,1,16,24,20,242,129, + 243,118,28,24,8,9,9,9,0,1,24,28,118,243,129,242, + 20,24,16,9,7,14,9,0,2,4,0,250,0,129,0,64, + 128,129,128,251,0,6,0,255,9,7,14,9,0,2,6,0, + 251,0,129,128,64,128,129,0,250,0,4,0,9,9,18,9, + 0,1,28,0,127,0,251,128,1,128,0,128,1,128,251,128, + 127,0,28,0,9,5,10,9,0,3,210,0,43,0,127,128, + 43,0,210,0,9,9,18,9,0,0,16,0,56,0,92,0, + 236,0,116,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,7,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,116,0,236,0,92,0, + 56,0,16,0,9,9,18,9,0,0,16,0,24,0,28,0, + 252,0,124,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,127,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,124,0,252,0,28,0, + 24,0,16,0,9,7,14,9,0,1,3,0,3,0,113,0, + 255,128,113,0,3,0,3,0,9,7,14,9,0,1,2,0, + 115,0,121,0,255,128,121,0,115,0,2,0,9,5,10,9, + 0,2,242,0,123,0,63,128,123,0,242,0,9,7,14,9, + 0,1,226,0,242,0,123,0,63,128,123,0,242,0,226,0, + 9,7,14,9,0,1,20,0,10,0,253,0,0,128,253,0, + 10,0,20,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,8,11,11,9,0,255, + 193,99,99,85,85,73,85,85,99,99,193,8,11,11,9,1, + 255,131,198,198,170,170,146,170,170,198,198,131,9,11,22,9, + 0,255,193,128,99,0,99,0,85,0,85,0,73,0,85,0, + 85,0,99,0,99,0,193,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,5,12,12,9,2,255,248,160,160,160, + 160,160,160,160,160,160,160,248,5,12,12,9,2,255,248,40, + 40,40,40,40,40,40,40,40,40,248,3,10,10,9,3,0, + 32,32,64,64,128,128,64,64,32,32,3,10,10,9,3,0, + 128,128,64,64,32,32,64,64,128,128,6,10,10,9,1,0, + 36,36,72,72,144,144,72,72,36,36,6,10,10,9,2,0, + 144,144,72,72,36,36,72,72,144,144,255,255,255,255,9,11, + 22,9,0,0,8,0,20,0,54,0,85,0,213,128,85,0, + 85,0,85,0,85,0,85,0,85,0,9,11,22,9,0,255, + 85,0,85,0,85,0,85,0,85,0,85,0,213,128,85,0, + 54,0,20,0,8,0,8,8,8,9,0,0,28,34,169,113, + 33,1,34,28,8,8,8,9,0,0,56,68,149,142,132,128, + 68,56,9,5,10,9,0,2,114,0,169,0,255,128,169,0, + 114,0,9,5,10,9,0,2,32,0,64,0,255,128,64,0, + 32,0,9,5,10,9,0,2,2,0,1,0,255,128,1,0, + 2,0,9,5,10,9,0,2,34,0,65,0,255,128,65,0, + 34,0,9,7,14,9,0,1,16,0,32,0,127,128,128,0, + 127,128,32,0,16,0,9,7,14,9,0,1,4,0,2,0, + 255,0,0,128,255,0,2,0,4,0,9,7,14,9,0,1, + 20,0,34,0,127,0,128,128,127,0,34,0,20,0,9,5, + 10,9,0,2,32,128,64,128,255,128,64,128,32,128,9,5, + 10,9,0,2,130,0,129,0,255,128,129,0,130,0,9,7, + 14,9,0,1,16,128,32,128,127,128,128,128,127,128,32,128, + 16,128,9,7,14,9,0,1,132,0,130,0,255,0,128,128, + 255,0,130,0,132,0,9,6,12,9,0,1,2,0,1,0, + 85,128,170,128,1,0,2,0}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=14 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18B[3026] U8G_SECTION(".progmem.u8g_font_9x18B") = { + 0,9,18,0,252,10,1,242,3,225,32,255,253,14,252,11, + 253,0,0,0,9,0,14,2,11,11,9,3,0,192,192,192, + 192,192,192,192,0,0,192,192,5,4,4,9,2,7,216,216, + 216,216,7,10,10,9,1,0,108,108,108,254,108,108,254,108, + 108,108,8,11,11,9,0,255,24,126,219,216,120,60,30,27, + 219,126,24,8,10,10,9,0,0,115,222,222,108,24,24,54, + 123,123,206,8,10,10,9,0,0,112,216,216,216,112,115,222, + 204,222,115,2,4,4,9,3,7,192,192,192,192,4,12,12, + 9,2,255,48,96,96,192,192,192,192,192,192,96,96,48,4, + 12,12,9,2,255,192,96,96,48,48,48,48,48,48,96,96, + 192,8,7,7,9,0,1,24,219,126,60,126,219,24,8,7, + 7,9,0,1,24,24,24,255,24,24,24,3,4,4,9,3, + 254,224,224,96,192,7,1,1,9,1,4,254,3,2,2,9, + 3,0,224,224,8,10,10,9,0,0,3,6,6,12,24,24, + 48,96,96,192,7,10,10,9,1,0,56,108,198,198,198,198, + 198,198,108,56,8,10,10,9,0,0,24,56,120,216,24,24, + 24,24,24,255,7,10,10,9,1,0,56,108,198,6,6,12, + 24,48,96,254,7,10,10,9,1,0,254,6,12,24,56,12, + 6,6,204,120,7,10,10,9,1,0,12,28,60,108,204,204, + 254,12,12,12,7,10,10,9,1,0,254,192,192,192,248,12, + 6,6,204,120,7,10,10,9,1,0,60,96,192,192,248,204, + 198,198,108,56,7,10,10,9,1,0,254,6,12,12,24,24, + 48,48,48,48,7,10,10,9,1,0,56,108,198,108,56,108, + 198,198,108,56,7,10,10,9,1,0,56,108,198,198,110,62, + 6,6,12,120,3,7,7,9,3,0,224,224,0,0,0,224, + 224,3,9,9,9,3,254,224,224,0,0,0,224,224,96,192, + 6,9,9,9,1,0,12,24,48,96,192,96,48,24,12,7, + 4,4,9,1,2,254,0,0,254,6,9,9,9,1,0,192, + 96,48,24,12,24,48,96,192,7,10,10,9,1,0,56,108, + 198,6,12,24,48,48,0,48,9,10,20,9,0,0,62,0, + 99,0,205,128,213,128,213,128,213,128,213,128,207,0,96,0, + 62,0,7,10,10,9,1,0,16,56,56,56,108,124,108,198, + 198,198,7,10,10,9,1,0,252,198,198,198,252,198,198,198, + 198,252,7,10,10,9,1,0,60,102,192,192,192,192,192,192, + 102,60,7,10,10,9,1,0,248,204,198,198,198,198,198,198, + 204,248,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,254,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,192,7,10,10,9,1,0,56,108,198,192,192,206,198,198, + 108,56,7,10,10,9,1,0,198,198,198,198,254,198,198,198, + 198,198,6,10,10,9,1,0,252,48,48,48,48,48,48,48, + 48,252,7,10,10,9,1,0,30,12,12,12,12,12,12,204, + 204,120,7,10,10,9,1,0,198,204,216,240,224,240,216,204, + 198,198,7,10,10,9,1,0,192,192,192,192,192,192,192,192, + 192,254,7,10,10,9,1,0,198,238,254,214,198,198,198,198, + 198,198,7,10,10,9,1,0,198,198,230,246,222,206,198,198, + 198,198,7,10,10,9,1,0,124,198,198,198,198,198,198,198, + 198,124,7,10,10,9,1,0,248,204,198,198,204,248,192,192, + 192,192,8,11,11,9,1,255,56,108,198,198,198,198,198,222, + 108,62,3,7,10,10,9,1,0,252,198,198,198,198,252,216, + 204,198,198,7,10,10,9,1,0,124,198,192,192,124,6,6, + 6,198,124,6,10,10,9,1,0,252,48,48,48,48,48,48, + 48,48,48,7,10,10,9,1,0,198,198,198,198,198,198,198, + 198,108,56,7,10,10,9,1,0,198,198,198,108,108,108,56, + 56,56,16,7,10,10,9,1,0,198,198,198,198,214,214,214, + 254,238,68,7,10,10,9,1,0,198,198,108,56,16,16,56, + 108,198,198,8,10,10,9,0,0,195,195,102,60,24,24,24, + 24,24,24,7,10,10,9,1,0,254,6,6,12,24,48,96, + 192,192,254,5,12,12,9,2,255,248,192,192,192,192,192,192, + 192,192,192,192,248,8,10,10,9,0,0,192,96,96,48,24, + 24,12,6,6,3,4,12,12,9,2,255,240,48,48,48,48, + 48,48,48,48,48,48,240,8,4,4,9,0,6,24,60,102, + 195,8,1,1,9,0,255,255,4,3,3,9,2,10,192,96, + 48,7,7,7,9,1,0,124,6,6,126,198,198,126,7,10, + 10,9,1,0,192,192,192,252,198,198,198,198,198,252,7,7, + 7,9,1,0,124,198,192,192,192,198,124,7,10,10,9,1, + 0,6,6,6,126,198,198,198,198,198,126,7,7,7,9,1, + 0,124,198,198,254,192,198,124,6,10,10,9,1,0,56,108, + 108,96,96,240,96,96,96,96,7,10,10,9,1,253,126,204, + 204,204,120,192,124,198,198,124,7,10,10,9,1,0,192,192, + 192,252,198,198,198,198,198,198,6,10,10,9,1,0,48,48, + 0,240,48,48,48,48,48,252,5,13,13,9,2,253,24,24, + 0,56,24,24,24,24,24,24,216,216,112,7,10,10,9,1, + 0,192,192,192,204,216,240,240,216,204,198,6,10,10,9,1, + 0,240,48,48,48,48,48,48,48,48,252,8,7,7,9,0, + 0,254,219,219,219,219,219,195,7,7,7,9,1,0,220,230, + 198,198,198,198,198,7,7,7,9,1,0,56,108,198,198,198, + 108,56,7,10,10,9,1,253,248,204,198,198,198,204,248,192, + 192,192,7,10,10,9,1,253,62,102,198,198,198,102,62,6, + 6,6,7,7,7,9,1,0,220,118,96,96,96,96,96,7, + 7,7,9,1,0,124,198,192,124,6,198,124,7,9,9,9, + 1,0,48,48,252,48,48,48,48,54,28,7,7,7,9,1, + 0,198,198,198,198,198,198,126,7,7,7,9,1,0,198,198, + 108,108,56,56,16,8,7,7,9,0,0,195,195,219,219,219, + 255,102,7,7,7,9,1,0,198,108,56,16,56,108,198,7, + 10,10,9,1,253,198,198,108,108,108,56,56,48,176,96,6, + 7,7,9,1,0,252,12,24,48,96,192,252,6,11,11,9, + 1,0,60,96,96,96,96,192,96,96,96,96,60,2,12,12, + 9,3,255,192,192,192,192,192,192,192,192,192,192,192,192,6, + 11,11,9,1,0,224,48,48,48,48,28,48,48,48,48,224, + 8,3,3,9,0,7,115,219,206,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,9,0,14, + 2,10,10,9,4,0,192,0,192,192,192,192,192,192,192,192, + 7,8,8,9,1,0,4,124,206,208,208,230,124,64,8,10, + 10,9,0,255,30,51,48,48,124,48,48,248,191,224,7,7, + 7,9,1,2,198,254,108,68,108,254,198,8,10,10,9,0, + 0,195,195,102,60,126,24,126,24,24,24,2,11,11,9,3, + 255,192,192,192,192,192,0,192,192,192,192,192,6,11,11,9, + 1,255,120,204,192,120,204,204,204,120,12,204,120,5,2,2, + 9,2,11,216,216,8,11,11,9,0,0,60,126,195,189,165, + 161,165,189,195,126,60,5,7,7,9,1,3,112,24,120,216, + 120,0,248,8,8,8,9,0,1,27,54,108,216,216,108,54, + 27,7,5,5,9,1,2,254,254,6,6,6,6,1,1,9, + 1,4,252,8,11,11,9,0,0,60,126,195,189,165,189,169, + 173,195,126,60,6,2,2,9,1,9,252,252,5,4,4,9, + 1,8,112,216,216,112,6,9,9,9,1,1,48,48,48,252, + 48,48,48,0,252,5,6,6,9,1,4,112,216,24,48,96, + 248,5,6,6,9,1,4,112,216,48,24,216,112,4,3,3, + 9,2,10,48,96,192,7,9,9,9,1,254,198,198,198,198, + 206,222,246,192,192,7,10,10,9,1,0,126,246,246,246,118, + 54,54,54,54,54,3,2,2,9,3,4,224,224,6,3,3, + 9,1,253,24,204,120,4,6,6,9,1,4,96,224,96,96, + 96,240,5,7,7,9,1,3,112,216,216,216,112,0,248,8, + 8,8,9,0,1,216,108,54,27,27,54,108,216,8,11,11, + 9,0,0,96,224,96,96,97,99,247,15,27,31,3,8,11, + 11,9,0,0,96,224,96,96,110,115,243,6,12,24,31,8, + 11,11,9,0,0,112,152,24,48,25,155,119,15,27,31,3, + 7,10,10,9,1,0,24,24,0,24,48,96,192,198,198,124, + 7,14,14,9,1,0,96,48,24,0,16,56,56,56,108,124, + 108,198,198,198,7,14,14,9,1,0,12,24,48,0,16,56, + 56,56,108,124,108,198,198,198,7,14,14,9,1,0,16,56, + 108,0,16,56,56,56,108,124,108,198,198,198,7,13,13,9, + 1,0,118,220,0,16,56,56,56,108,124,108,198,198,198,7, + 13,13,9,1,0,108,108,0,16,56,56,56,108,124,108,198, + 198,198,7,14,14,9,1,0,56,108,108,56,16,56,56,56, + 108,124,108,198,198,198,7,10,10,9,1,0,62,60,108,108, + 110,252,204,204,204,206,7,14,14,9,1,252,60,102,192,192, + 192,192,192,192,102,60,24,12,108,56,7,14,14,9,1,0, + 96,48,24,0,254,192,192,192,248,192,192,192,192,254,7,14, + 14,9,1,0,12,24,48,0,254,192,192,192,248,192,192,192, + 192,254,7,14,14,9,1,0,16,56,108,0,254,192,192,192, + 248,192,192,192,192,254,7,13,13,9,1,0,108,108,0,254, + 192,192,192,248,192,192,192,192,254,6,14,14,9,1,0,96, + 48,24,0,252,48,48,48,48,48,48,48,48,252,6,14,14, + 9,1,0,12,24,48,0,252,48,48,48,48,48,48,48,48, + 252,6,14,14,9,1,0,16,56,108,0,252,48,48,48,48, + 48,48,48,48,252,6,13,13,9,1,0,108,108,0,252,48, + 48,48,48,48,48,48,48,252,8,10,10,9,0,0,124,102, + 99,99,243,99,99,99,102,124,7,13,13,9,1,0,118,220, + 0,198,198,230,246,222,206,198,198,198,198,7,14,14,9,1, + 0,96,48,24,0,124,198,198,198,198,198,198,198,198,124,7, + 14,14,9,1,0,12,24,48,0,124,198,198,198,198,198,198, + 198,198,124,7,14,14,9,1,0,16,56,108,0,124,198,198, + 198,198,198,198,198,198,124,7,13,13,9,1,0,118,220,0, + 124,198,198,198,198,198,198,198,198,124,7,13,13,9,1,0, + 108,108,0,124,198,198,198,198,198,198,198,198,124,8,7,7, + 9,0,1,195,102,60,24,60,102,195,7,12,12,9,1,255, + 6,126,206,206,222,222,246,246,230,230,252,192,7,14,14,9, + 1,0,96,48,24,0,198,198,198,198,198,198,198,198,108,56, + 7,14,14,9,1,0,12,24,48,0,198,198,198,198,198,198, + 198,198,108,56,7,14,14,9,1,0,16,56,108,0,198,198, + 198,198,198,198,198,198,108,56,7,13,13,9,1,0,108,108, + 0,198,198,198,198,198,198,198,198,108,56,8,14,14,9,0, + 0,12,24,48,0,195,195,102,60,24,24,24,24,24,24,7, + 10,10,9,1,0,192,192,252,198,198,198,252,192,192,192,7, + 10,10,9,1,0,60,102,102,102,236,102,102,102,102,108,7, + 11,11,9,1,0,96,48,24,0,124,6,6,126,198,198,126, + 7,11,11,9,1,0,12,24,48,0,124,6,6,126,198,198, + 126,7,11,11,9,1,0,16,56,108,0,124,6,6,126,198, + 198,126,7,10,10,9,1,0,118,220,0,124,6,6,126,198, + 198,126,7,10,10,9,1,0,108,108,0,124,6,6,126,198, + 198,126,7,11,11,9,1,0,56,108,56,0,124,6,6,126, + 198,198,126,8,7,7,9,0,0,118,27,27,127,216,219,118, + 7,11,11,9,1,252,124,198,192,192,192,198,124,24,12,108, + 56,7,11,11,9,1,0,96,48,24,0,124,198,198,254,192, + 198,124,7,11,11,9,1,0,12,24,48,0,124,198,198,254, + 192,198,124,7,11,11,9,1,0,16,56,108,0,124,198,198, + 254,192,198,124,7,10,10,9,1,0,108,108,0,124,198,198, + 254,192,198,124,6,11,11,9,1,0,192,96,48,0,240,48, + 48,48,48,48,252,6,11,11,9,1,0,12,24,48,0,240, + 48,48,48,48,48,252,6,11,11,9,1,0,32,112,216,0, + 240,48,48,48,48,48,252,6,10,10,9,1,0,108,108,0, + 240,48,48,48,48,48,252,7,11,11,9,1,0,108,56,56, + 108,12,126,198,198,198,198,124,7,10,10,9,1,0,118,220, + 0,220,230,198,198,198,198,198,7,11,11,9,1,0,96,48, + 24,0,56,108,198,198,198,108,56,7,11,11,9,1,0,12, + 24,48,0,56,108,198,198,198,108,56,7,11,11,9,1,0, + 16,56,108,0,56,108,198,198,198,108,56,7,10,10,9,1, + 0,118,220,0,56,108,198,198,198,108,56,7,10,10,9,1, + 0,108,108,0,56,108,198,198,198,108,56,8,7,7,9,0, + 1,24,24,0,255,0,24,24,8,9,9,9,0,255,1,63, + 102,207,219,243,102,252,128,7,11,11,9,1,0,96,48,24, + 0,198,198,198,198,198,198,126,7,11,11,9,1,0,12,24, + 48,0,198,198,198,198,198,198,126,7,11,11,9,1,0,16, + 56,108,0,198,198,198,198,198,198,126,7,10,10,9,1,0, + 108,108,0,198,198,198,198,198,198,126,7,14,14,9,1,253, + 12,24,48,0,198,198,108,108,108,56,56,48,176,96,7,11, + 11,9,1,254,192,192,248,204,198,198,198,204,248,192,192,7, + 13,13,9,1,253,108,108,0,198,198,108,108,108,56,56,48, + 176,96}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=13 x= 3 y=14 dx= 9 dy= 0 ascent=14 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18Br[1434] U8G_SECTION(".progmem.u8g_font_9x18Br") = { + 0,9,18,0,252,10,1,242,3,225,32,127,253,14,253,11, + 253,0,0,0,9,0,14,2,11,11,9,3,0,192,192,192, + 192,192,192,192,0,0,192,192,5,4,4,9,2,7,216,216, + 216,216,7,10,10,9,1,0,108,108,108,254,108,108,254,108, + 108,108,8,11,11,9,0,255,24,126,219,216,120,60,30,27, + 219,126,24,8,10,10,9,0,0,115,222,222,108,24,24,54, + 123,123,206,8,10,10,9,0,0,112,216,216,216,112,115,222, + 204,222,115,2,4,4,9,3,7,192,192,192,192,4,12,12, + 9,2,255,48,96,96,192,192,192,192,192,192,96,96,48,4, + 12,12,9,2,255,192,96,96,48,48,48,48,48,48,96,96, + 192,8,7,7,9,0,1,24,219,126,60,126,219,24,8,7, + 7,9,0,1,24,24,24,255,24,24,24,3,4,4,9,3, + 254,224,224,96,192,7,1,1,9,1,4,254,3,2,2,9, + 3,0,224,224,8,10,10,9,0,0,3,6,6,12,24,24, + 48,96,96,192,7,10,10,9,1,0,56,108,198,198,198,198, + 198,198,108,56,8,10,10,9,0,0,24,56,120,216,24,24, + 24,24,24,255,7,10,10,9,1,0,56,108,198,6,6,12, + 24,48,96,254,7,10,10,9,1,0,254,6,12,24,56,12, + 6,6,204,120,7,10,10,9,1,0,12,28,60,108,204,204, + 254,12,12,12,7,10,10,9,1,0,254,192,192,192,248,12, + 6,6,204,120,7,10,10,9,1,0,60,96,192,192,248,204, + 198,198,108,56,7,10,10,9,1,0,254,6,12,12,24,24, + 48,48,48,48,7,10,10,9,1,0,56,108,198,108,56,108, + 198,198,108,56,7,10,10,9,1,0,56,108,198,198,110,62, + 6,6,12,120,3,7,7,9,3,0,224,224,0,0,0,224, + 224,3,9,9,9,3,254,224,224,0,0,0,224,224,96,192, + 6,9,9,9,1,0,12,24,48,96,192,96,48,24,12,7, + 4,4,9,1,2,254,0,0,254,6,9,9,9,1,0,192, + 96,48,24,12,24,48,96,192,7,10,10,9,1,0,56,108, + 198,6,12,24,48,48,0,48,9,10,20,9,0,0,62,0, + 99,0,205,128,213,128,213,128,213,128,213,128,207,0,96,0, + 62,0,7,10,10,9,1,0,16,56,56,56,108,124,108,198, + 198,198,7,10,10,9,1,0,252,198,198,198,252,198,198,198, + 198,252,7,10,10,9,1,0,60,102,192,192,192,192,192,192, + 102,60,7,10,10,9,1,0,248,204,198,198,198,198,198,198, + 204,248,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,254,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,192,7,10,10,9,1,0,56,108,198,192,192,206,198,198, + 108,56,7,10,10,9,1,0,198,198,198,198,254,198,198,198, + 198,198,6,10,10,9,1,0,252,48,48,48,48,48,48,48, + 48,252,7,10,10,9,1,0,30,12,12,12,12,12,12,204, + 204,120,7,10,10,9,1,0,198,204,216,240,224,240,216,204, + 198,198,7,10,10,9,1,0,192,192,192,192,192,192,192,192, + 192,254,7,10,10,9,1,0,198,238,254,214,198,198,198,198, + 198,198,7,10,10,9,1,0,198,198,230,246,222,206,198,198, + 198,198,7,10,10,9,1,0,124,198,198,198,198,198,198,198, + 198,124,7,10,10,9,1,0,248,204,198,198,204,248,192,192, + 192,192,8,11,11,9,1,255,56,108,198,198,198,198,198,222, + 108,62,3,7,10,10,9,1,0,252,198,198,198,198,252,216, + 204,198,198,7,10,10,9,1,0,124,198,192,192,124,6,6, + 6,198,124,6,10,10,9,1,0,252,48,48,48,48,48,48, + 48,48,48,7,10,10,9,1,0,198,198,198,198,198,198,198, + 198,108,56,7,10,10,9,1,0,198,198,198,108,108,108,56, + 56,56,16,7,10,10,9,1,0,198,198,198,198,214,214,214, + 254,238,68,7,10,10,9,1,0,198,198,108,56,16,16,56, + 108,198,198,8,10,10,9,0,0,195,195,102,60,24,24,24, + 24,24,24,7,10,10,9,1,0,254,6,6,12,24,48,96, + 192,192,254,5,12,12,9,2,255,248,192,192,192,192,192,192, + 192,192,192,192,248,8,10,10,9,0,0,192,96,96,48,24, + 24,12,6,6,3,4,12,12,9,2,255,240,48,48,48,48, + 48,48,48,48,48,48,240,8,4,4,9,0,6,24,60,102, + 195,8,1,1,9,0,255,255,4,3,3,9,2,10,192,96, + 48,7,7,7,9,1,0,124,6,6,126,198,198,126,7,10, + 10,9,1,0,192,192,192,252,198,198,198,198,198,252,7,7, + 7,9,1,0,124,198,192,192,192,198,124,7,10,10,9,1, + 0,6,6,6,126,198,198,198,198,198,126,7,7,7,9,1, + 0,124,198,198,254,192,198,124,6,10,10,9,1,0,56,108, + 108,96,96,240,96,96,96,96,7,10,10,9,1,253,126,204, + 204,204,120,192,124,198,198,124,7,10,10,9,1,0,192,192, + 192,252,198,198,198,198,198,198,6,10,10,9,1,0,48,48, + 0,240,48,48,48,48,48,252,5,13,13,9,2,253,24,24, + 0,56,24,24,24,24,24,24,216,216,112,7,10,10,9,1, + 0,192,192,192,204,216,240,240,216,204,198,6,10,10,9,1, + 0,240,48,48,48,48,48,48,48,48,252,8,7,7,9,0, + 0,254,219,219,219,219,219,195,7,7,7,9,1,0,220,230, + 198,198,198,198,198,7,7,7,9,1,0,56,108,198,198,198, + 108,56,7,10,10,9,1,253,248,204,198,198,198,204,248,192, + 192,192,7,10,10,9,1,253,62,102,198,198,198,102,62,6, + 6,6,7,7,7,9,1,0,220,118,96,96,96,96,96,7, + 7,7,9,1,0,124,198,192,124,6,198,124,7,9,9,9, + 1,0,48,48,252,48,48,48,48,54,28,7,7,7,9,1, + 0,198,198,198,198,198,198,126,7,7,7,9,1,0,198,198, + 108,108,56,56,16,8,7,7,9,0,0,195,195,219,219,219, + 255,102,7,7,7,9,1,0,198,108,56,16,56,108,198,7, + 10,10,9,1,253,198,198,108,108,108,56,56,48,176,96,6, + 7,7,9,1,0,252,12,24,48,96,192,252,6,11,11,9, + 1,0,60,96,96,96,96,192,96,96,96,96,60,2,12,12, + 9,3,255,192,192,192,192,192,192,192,192,192,192,192,192,6, + 11,11,9,1,0,224,48,48,48,48,28,48,48,48,48,224, + 8,3,3,9,0,7,115,219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=14 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=14 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18[3011] U8G_SECTION(".progmem.u8g_font_9x18") = { + 0,9,18,0,252,10,1,232,3,215,32,255,253,14,253,11, + 253,0,0,0,9,0,14,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,4,4,9,3,7,144,144, + 144,144,8,10,10,9,0,0,36,36,36,255,36,36,255,36, + 36,36,7,11,11,9,1,255,16,124,146,144,80,56,20,18, + 146,124,16,7,10,10,9,1,0,66,164,164,72,16,16,36, + 74,74,132,7,10,10,9,1,0,96,144,144,144,96,98,148, + 136,148,98,1,4,4,9,4,7,128,128,128,128,3,12,12, + 9,3,255,32,64,64,128,128,128,128,128,128,64,64,32,3, + 12,12,9,3,255,128,64,64,32,32,32,32,32,32,64,64, + 128,7,7,7,9,1,3,16,146,84,56,84,146,16,7,7, + 7,9,1,1,16,16,16,254,16,16,16,2,4,4,9,4, + 254,192,192,64,128,7,1,1,9,1,4,254,2,2,2,9, + 4,0,192,192,7,10,10,9,1,0,2,4,4,8,16,16, + 32,64,64,128,7,10,10,9,1,0,56,68,130,130,130,130, + 130,130,68,56,7,10,10,9,1,0,16,48,80,144,16,16, + 16,16,16,254,7,10,10,9,1,0,56,68,130,2,4,8, + 16,32,64,254,7,10,10,9,1,0,254,2,4,8,24,4, + 2,2,132,120,7,10,10,9,1,0,4,12,20,36,68,132, + 254,4,4,4,7,10,10,9,1,0,254,128,128,128,248,4, + 2,2,132,120,7,10,10,9,1,0,60,64,128,128,184,196, + 130,130,68,56,7,10,10,9,1,0,254,2,4,4,8,8, + 16,16,16,16,7,10,10,9,1,0,56,68,130,68,56,68, + 130,130,68,56,7,10,10,9,1,0,56,68,130,130,70,58, + 2,2,4,120,2,7,7,9,4,0,192,192,0,0,0,192, + 192,2,9,9,9,4,254,192,192,0,0,0,192,192,64,128, + 5,9,9,9,2,0,8,16,32,64,128,64,32,16,8,7, + 4,4,9,1,2,254,0,0,254,5,9,9,9,2,0,128, + 64,32,16,8,16,32,64,128,7,10,10,9,1,0,56,68, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,56,68, + 154,170,170,170,170,156,64,60,7,10,10,9,1,0,16,40, + 40,40,68,124,68,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,60,66, + 128,128,128,128,128,128,66,60,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,56,68, + 130,128,128,142,130,130,68,56,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,7,10,10,9,1,0,62,8, + 8,8,8,8,8,136,136,112,7,10,10,9,1,0,130,132, + 136,144,160,208,136,132,130,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,146,130,130,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,248,132, + 130,130,132,248,128,128,128,128,8,11,11,9,1,255,56,68, + 130,130,130,130,130,138,68,58,1,7,10,10,9,1,0,248, + 132,130,130,132,248,144,136,132,130,7,10,10,9,1,0,124, + 130,128,128,124,2,2,2,130,124,7,10,10,9,1,0,254, + 16,16,16,16,16,16,16,16,16,7,10,10,9,1,0,130, + 130,130,130,130,130,130,130,68,56,7,10,10,9,1,0,130, + 130,130,68,68,68,40,40,40,16,7,10,10,9,1,0,130, + 130,130,130,146,146,146,146,170,68,7,10,10,9,1,0,130, + 130,68,40,16,16,40,68,130,130,7,10,10,9,1,0,130, + 130,68,40,16,16,16,16,16,16,7,10,10,9,1,0,254, + 2,4,8,16,32,64,128,128,254,4,12,12,9,3,255,240, + 128,128,128,128,128,128,128,128,128,128,240,7,10,10,9,1, + 0,128,64,64,32,16,16,8,4,4,2,4,12,12,9,2, + 255,240,16,16,16,16,16,16,16,16,16,16,240,7,4,4, + 9,1,6,16,40,68,130,8,1,1,9,0,255,255,3,3, + 3,9,3,10,128,64,32,7,7,7,9,1,0,124,2,2, + 126,130,134,122,7,10,10,9,1,0,128,128,128,188,194,130, + 130,130,194,188,7,7,7,9,1,0,124,130,128,128,128,130, + 124,7,10,10,9,1,0,2,2,2,122,134,130,130,130,134, + 122,7,7,7,9,1,0,124,130,130,254,128,130,124,7,10, + 10,9,1,0,28,34,34,32,32,248,32,32,32,32,7,10, + 10,9,1,253,122,132,132,132,120,128,124,130,130,124,7,10, + 10,9,1,0,128,128,128,188,194,130,130,130,130,130,5,10, + 10,9,2,0,96,0,0,224,32,32,32,32,32,248,5,13, + 13,9,2,253,24,0,0,56,8,8,8,8,8,8,136,136, + 112,7,10,10,9,1,0,128,128,128,132,136,144,176,200,132, + 130,5,10,10,9,2,0,224,32,32,32,32,32,32,32,32, + 248,7,7,7,9,1,0,236,146,146,146,146,146,130,7,7, + 7,9,1,0,188,194,130,130,130,130,130,7,7,7,9,1, + 0,124,130,130,130,130,130,124,7,10,10,9,1,253,184,196, + 130,130,130,196,184,128,128,128,7,10,10,9,1,253,58,70, + 130,130,130,70,58,2,2,2,7,7,7,9,1,0,156,98, + 66,64,64,64,64,7,7,7,9,1,0,124,130,128,124,2, + 130,124,7,9,9,9,1,0,32,32,252,32,32,32,32,34, + 28,7,7,7,9,1,0,130,130,130,130,130,134,122,7,7, + 7,9,1,0,130,130,68,68,40,40,16,7,7,7,9,1, + 0,130,130,146,146,146,170,68,7,7,7,9,1,0,130,68, + 40,16,40,68,130,7,10,10,9,1,253,66,66,36,36,36, + 24,24,16,144,96,7,7,7,9,1,0,254,4,8,16,32, + 64,254,6,11,11,9,2,0,28,32,32,32,32,192,32,32, + 32,32,28,1,12,12,9,4,255,128,128,128,128,128,128,128, + 128,128,128,128,128,6,11,11,9,1,0,224,16,16,16,16, + 12,16,16,16,16,224,7,3,3,9,1,7,98,146,140,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,9,0,14,1,11,11,9,4,0,128,128,0,0, + 128,128,128,128,128,128,128,6,8,8,9,1,0,8,120,148, + 144,160,164,120,64,7,10,10,9,1,0,28,34,32,32,248, + 32,32,96,162,92,7,6,6,9,1,3,130,124,68,68,124, + 130,7,10,10,9,1,0,130,130,68,40,124,16,124,16,16, + 16,1,11,11,9,4,255,128,128,128,128,128,0,128,128,128, + 128,128,4,11,11,9,2,255,96,144,128,96,144,144,144,96, + 16,144,96,3,2,2,9,3,11,160,160,8,9,9,9,0, + 1,60,66,153,165,161,165,153,66,60,5,7,7,9,1,3, + 96,144,112,144,120,0,248,7,8,8,9,1,1,18,36,72, + 144,144,72,36,18,6,4,4,9,1,2,252,4,4,4,5, + 1,1,9,2,4,248,8,9,9,9,0,1,60,66,185,165, + 189,169,165,66,60,6,1,1,9,1,9,252,4,4,4,9, + 3,6,96,144,144,96,7,9,9,9,1,1,16,16,16,254, + 16,16,16,0,254,4,6,6,9,1,4,96,144,16,96,128, + 240,4,6,6,9,1,4,96,144,32,16,144,96,3,3,3, + 9,3,10,32,64,128,7,9,9,9,1,254,130,130,130,130, + 130,198,186,128,128,7,10,10,9,1,0,126,138,138,138,122, + 10,10,10,10,10,2,2,2,9,4,4,192,192,4,3,3, + 9,2,253,32,144,96,3,6,6,9,1,4,64,192,64,64, + 64,224,5,6,6,9,1,4,112,136,136,112,0,248,7,8, + 8,9,1,1,144,72,36,18,18,36,72,144,7,10,10,9, + 1,0,64,192,64,64,66,230,10,18,26,6,7,10,10,9, + 1,0,64,192,64,64,76,242,2,12,16,30,7,10,10,9, + 1,0,96,144,32,16,146,102,10,18,26,6,7,10,10,9, + 1,0,16,0,16,16,32,64,128,130,130,124,7,14,14,9, + 1,0,32,16,8,0,16,40,40,40,68,124,68,130,130,130, + 7,14,14,9,1,0,8,16,32,0,16,40,40,40,68,124, + 68,130,130,130,7,14,14,9,1,0,16,40,68,0,16,40, + 40,40,68,124,68,130,130,130,7,13,13,9,1,0,52,88, + 0,16,40,40,40,68,124,68,130,130,130,7,13,13,9,1, + 0,40,40,0,16,40,40,40,68,124,68,130,130,130,7,14, + 14,9,1,0,16,40,40,16,16,40,40,40,68,124,68,130, + 130,130,7,10,10,9,1,0,30,40,40,40,78,120,72,136, + 136,142,7,13,13,9,1,253,60,66,128,128,128,128,128,128, + 66,60,8,36,24,7,14,14,9,1,0,32,16,8,0,254, + 128,128,128,248,128,128,128,128,254,7,14,14,9,1,0,8, + 16,32,0,254,128,128,128,248,128,128,128,128,254,7,14,14, + 9,1,0,16,40,68,0,254,128,128,128,248,128,128,128,128, + 254,7,13,13,9,1,0,40,40,0,254,128,128,128,248,128, + 128,128,128,254,5,14,14,9,2,0,64,32,16,0,248,32, + 32,32,32,32,32,32,32,248,5,14,14,9,2,0,16,32, + 64,0,248,32,32,32,32,32,32,32,32,248,5,14,14,9, + 2,0,32,80,136,0,248,32,32,32,32,32,32,32,32,248, + 5,13,13,9,2,0,80,80,0,248,32,32,32,32,32,32, + 32,32,248,7,10,10,9,1,0,120,68,66,66,242,66,66, + 66,68,120,7,13,13,9,1,0,52,88,0,130,130,194,162, + 146,138,134,130,130,130,7,14,14,9,1,0,32,16,8,0, + 124,130,130,130,130,130,130,130,130,124,7,14,14,9,1,0, + 8,16,32,0,124,130,130,130,130,130,130,130,130,124,7,14, + 14,9,1,0,16,40,68,0,124,130,130,130,130,130,130,130, + 130,124,7,13,13,9,1,0,52,88,0,124,130,130,130,130, + 130,130,130,130,124,7,13,13,9,1,0,40,40,0,124,130, + 130,130,130,130,130,130,130,124,7,7,7,9,1,1,130,68, + 40,16,40,68,130,7,12,12,9,1,255,2,124,134,138,138, + 146,146,162,162,194,124,128,7,14,14,9,1,0,32,16,8, + 0,130,130,130,130,130,130,130,130,68,56,7,14,14,9,1, + 0,8,16,32,0,130,130,130,130,130,130,130,130,68,56,7, + 14,14,9,1,0,16,40,68,0,130,130,130,130,130,130,130, + 130,68,56,7,13,13,9,1,0,40,40,0,130,130,130,130, + 130,130,130,130,68,56,7,14,14,9,1,0,8,16,32,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 128,128,252,130,130,130,252,128,128,128,6,10,10,9,1,0, + 56,68,68,72,208,72,68,68,68,88,7,11,11,9,1,0, + 32,16,8,0,124,2,2,126,130,134,122,7,11,11,9,1, + 0,8,16,32,0,124,2,2,126,130,134,122,7,11,11,9, + 1,0,16,40,68,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,52,88,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,40,40,0,124,2,2,126,130,134,122,7,12,12, + 9,1,0,16,40,40,16,0,124,2,2,126,130,134,122,7, + 7,7,9,1,0,108,18,18,126,144,146,108,7,10,10,9, + 1,253,124,130,128,128,128,130,124,16,72,48,7,11,11,9, + 1,0,32,16,8,0,124,130,130,254,128,130,124,7,11,11, + 9,1,0,8,16,32,0,124,130,130,254,128,130,124,7,11, + 11,9,1,0,16,40,68,0,124,130,130,254,128,130,124,7, + 10,10,9,1,0,40,40,0,124,130,130,254,128,130,124,5, + 12,12,9,2,0,128,64,32,0,0,224,32,32,32,32,32, + 248,5,12,12,9,2,0,16,32,64,0,0,224,32,32,32, + 32,32,248,5,12,12,9,2,0,32,80,136,0,0,224,32, + 32,32,32,32,248,5,11,11,9,2,0,80,80,0,0,224, + 32,32,32,32,32,248,7,11,11,9,1,0,72,48,80,8, + 60,68,130,130,130,68,56,7,10,10,9,1,0,52,88,0, + 188,194,130,130,130,130,130,7,11,11,9,1,0,32,16,8, + 0,124,130,130,130,130,130,124,7,11,11,9,1,0,8,16, + 32,0,124,130,130,130,130,130,124,7,11,11,9,1,0,16, + 40,68,0,124,130,130,130,130,130,124,7,10,10,9,1,0, + 52,88,0,124,130,130,130,130,130,124,7,10,10,9,1,0, + 40,40,0,124,130,130,130,130,130,124,7,9,9,9,1,0, + 16,56,16,0,254,0,16,56,16,7,9,9,9,1,255,2, + 124,138,138,146,162,162,124,128,7,11,11,9,1,0,64,32, + 16,0,130,130,130,130,130,134,122,7,11,11,9,1,0,8, + 16,32,0,130,130,130,130,130,134,122,7,11,11,9,1,0, + 16,40,68,0,130,130,130,130,130,134,122,7,10,10,9,1, + 0,40,40,0,130,130,130,130,130,134,122,7,14,14,9,1, + 253,4,8,16,0,66,66,36,36,36,24,24,16,144,96,7, + 11,11,9,1,254,128,128,184,196,130,130,130,196,184,128,128, + 7,13,13,9,1,253,36,36,0,66,66,36,36,36,24,24, + 16,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=13 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18r[1424] U8G_SECTION(".progmem.u8g_font_9x18r") = { + 0,9,18,0,252,10,1,232,3,215,32,127,253,14,253,11, + 253,0,0,0,9,0,14,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,4,4,9,3,7,144,144, + 144,144,8,10,10,9,0,0,36,36,36,255,36,36,255,36, + 36,36,7,11,11,9,1,255,16,124,146,144,80,56,20,18, + 146,124,16,7,10,10,9,1,0,66,164,164,72,16,16,36, + 74,74,132,7,10,10,9,1,0,96,144,144,144,96,98,148, + 136,148,98,1,4,4,9,4,7,128,128,128,128,3,12,12, + 9,3,255,32,64,64,128,128,128,128,128,128,64,64,32,3, + 12,12,9,3,255,128,64,64,32,32,32,32,32,32,64,64, + 128,7,7,7,9,1,3,16,146,84,56,84,146,16,7,7, + 7,9,1,1,16,16,16,254,16,16,16,2,4,4,9,4, + 254,192,192,64,128,7,1,1,9,1,4,254,2,2,2,9, + 4,0,192,192,7,10,10,9,1,0,2,4,4,8,16,16, + 32,64,64,128,7,10,10,9,1,0,56,68,130,130,130,130, + 130,130,68,56,7,10,10,9,1,0,16,48,80,144,16,16, + 16,16,16,254,7,10,10,9,1,0,56,68,130,2,4,8, + 16,32,64,254,7,10,10,9,1,0,254,2,4,8,24,4, + 2,2,132,120,7,10,10,9,1,0,4,12,20,36,68,132, + 254,4,4,4,7,10,10,9,1,0,254,128,128,128,248,4, + 2,2,132,120,7,10,10,9,1,0,60,64,128,128,184,196, + 130,130,68,56,7,10,10,9,1,0,254,2,4,4,8,8, + 16,16,16,16,7,10,10,9,1,0,56,68,130,68,56,68, + 130,130,68,56,7,10,10,9,1,0,56,68,130,130,70,58, + 2,2,4,120,2,7,7,9,4,0,192,192,0,0,0,192, + 192,2,9,9,9,4,254,192,192,0,0,0,192,192,64,128, + 5,9,9,9,2,0,8,16,32,64,128,64,32,16,8,7, + 4,4,9,1,2,254,0,0,254,5,9,9,9,2,0,128, + 64,32,16,8,16,32,64,128,7,10,10,9,1,0,56,68, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,56,68, + 154,170,170,170,170,156,64,60,7,10,10,9,1,0,16,40, + 40,40,68,124,68,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,60,66, + 128,128,128,128,128,128,66,60,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,56,68, + 130,128,128,142,130,130,68,56,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,7,10,10,9,1,0,62,8, + 8,8,8,8,8,136,136,112,7,10,10,9,1,0,130,132, + 136,144,160,208,136,132,130,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,146,130,130,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,248,132, + 130,130,132,248,128,128,128,128,8,11,11,9,1,255,56,68, + 130,130,130,130,130,138,68,58,1,7,10,10,9,1,0,248, + 132,130,130,132,248,144,136,132,130,7,10,10,9,1,0,124, + 130,128,128,124,2,2,2,130,124,7,10,10,9,1,0,254, + 16,16,16,16,16,16,16,16,16,7,10,10,9,1,0,130, + 130,130,130,130,130,130,130,68,56,7,10,10,9,1,0,130, + 130,130,68,68,68,40,40,40,16,7,10,10,9,1,0,130, + 130,130,130,146,146,146,146,170,68,7,10,10,9,1,0,130, + 130,68,40,16,16,40,68,130,130,7,10,10,9,1,0,130, + 130,68,40,16,16,16,16,16,16,7,10,10,9,1,0,254, + 2,4,8,16,32,64,128,128,254,4,12,12,9,3,255,240, + 128,128,128,128,128,128,128,128,128,128,240,7,10,10,9,1, + 0,128,64,64,32,16,16,8,4,4,2,4,12,12,9,2, + 255,240,16,16,16,16,16,16,16,16,16,16,240,7,4,4, + 9,1,6,16,40,68,130,8,1,1,9,0,255,255,3,3, + 3,9,3,10,128,64,32,7,7,7,9,1,0,124,2,2, + 126,130,134,122,7,10,10,9,1,0,128,128,128,188,194,130, + 130,130,194,188,7,7,7,9,1,0,124,130,128,128,128,130, + 124,7,10,10,9,1,0,2,2,2,122,134,130,130,130,134, + 122,7,7,7,9,1,0,124,130,130,254,128,130,124,7,10, + 10,9,1,0,28,34,34,32,32,248,32,32,32,32,7,10, + 10,9,1,253,122,132,132,132,120,128,124,130,130,124,7,10, + 10,9,1,0,128,128,128,188,194,130,130,130,130,130,5,10, + 10,9,2,0,96,0,0,224,32,32,32,32,32,248,5,13, + 13,9,2,253,24,0,0,56,8,8,8,8,8,8,136,136, + 112,7,10,10,9,1,0,128,128,128,132,136,144,176,200,132, + 130,5,10,10,9,2,0,224,32,32,32,32,32,32,32,32, + 248,7,7,7,9,1,0,236,146,146,146,146,146,130,7,7, + 7,9,1,0,188,194,130,130,130,130,130,7,7,7,9,1, + 0,124,130,130,130,130,130,124,7,10,10,9,1,253,184,196, + 130,130,130,196,184,128,128,128,7,10,10,9,1,253,58,70, + 130,130,130,70,58,2,2,2,7,7,7,9,1,0,156,98, + 66,64,64,64,64,7,7,7,9,1,0,124,130,128,124,2, + 130,124,7,9,9,9,1,0,32,32,252,32,32,32,32,34, + 28,7,7,7,9,1,0,130,130,130,130,130,134,122,7,7, + 7,9,1,0,130,130,68,68,40,40,16,7,7,7,9,1, + 0,130,130,146,146,146,170,68,7,7,7,9,1,0,130,68, + 40,16,40,68,130,7,10,10,9,1,253,66,66,36,36,36, + 24,24,16,144,96,7,7,7,9,1,0,254,4,8,16,32, + 64,254,6,11,11,9,2,0,28,32,32,32,32,192,32,32, + 32,32,28,1,12,12,9,4,255,128,128,128,128,128,128,128, + 128,128,128,128,128,6,11,11,9,1,0,224,16,16,16,16, + 12,16,16,16,16,224,7,3,3,9,1,7,98,146,140,255 + }; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 9 h= 9 x= 1 y= 5 dx=10 dy= 0 ascent= 8 len=12 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_baby[2227] U8G_SECTION(".progmem.u8g_font_baby") = { + 0,10,10,255,254,5,1,108,2,200,32,255,254,8,254,6, + 254,0,0,0,2,0,0,1,6,6,3,1,0,128,128,128, + 128,0,128,3,3,3,4,0,4,160,160,160,5,5,5,6, + 0,0,80,248,80,248,80,3,7,7,4,0,255,64,96,128, + 64,32,192,64,5,5,5,6,0,0,200,208,32,88,152,5, + 6,6,6,0,0,64,160,64,160,144,104,1,3,3,2,0, + 4,128,128,128,2,7,7,3,0,255,64,128,128,128,128,128, + 64,2,7,7,3,0,255,128,64,64,64,64,64,128,3,3, + 3,4,0,3,160,64,160,3,3,3,5,1,1,64,224,64, + 2,3,3,3,0,254,192,64,128,3,1,1,4,0,2,224, + 1,1,1,2,0,0,128,3,6,6,4,0,255,32,32,64, + 64,128,128,3,5,5,4,0,0,64,160,160,160,64,2,5, + 5,3,0,0,64,192,64,64,64,4,5,5,5,0,0,96, + 144,32,64,240,4,5,5,5,0,0,224,16,96,16,224,4, + 5,5,5,0,0,144,144,144,112,16,4,5,5,5,0,0, + 240,128,224,16,224,4,5,5,5,0,0,96,128,224,144,96, + 4,5,5,5,0,0,240,16,32,64,128,4,5,5,5,0, + 0,96,144,96,144,96,4,5,5,5,0,0,96,144,112,16, + 96,1,3,3,3,1,0,128,0,128,2,5,5,3,0,254, + 64,0,64,64,128,4,5,5,5,0,0,16,96,128,96,16, + 3,3,3,4,0,1,224,0,224,4,5,5,5,0,0,128, + 96,16,96,128,4,6,6,5,0,0,96,144,32,64,0,64, + 5,6,6,6,0,0,112,136,168,176,128,112,4,5,5,5, + 0,0,96,144,144,240,144,4,5,5,5,0,0,224,144,224, + 144,224,4,5,5,5,0,0,96,144,128,144,96,4,5,5, + 5,0,0,224,144,144,144,224,4,5,5,5,0,0,240,128, + 224,128,240,4,5,5,5,0,0,240,128,224,128,128,4,5, + 5,5,0,0,96,128,176,144,96,4,5,5,5,0,0,144, + 144,240,144,144,3,5,5,4,0,0,224,64,64,64,224,4, + 5,5,5,0,0,112,16,16,144,96,4,5,5,5,0,0, + 144,144,144,224,144,3,5,5,4,0,0,128,128,128,128,224, + 5,5,5,6,0,0,216,168,168,168,136,4,5,5,5,0, + 0,144,144,208,176,144,4,5,5,5,0,0,96,144,144,144, + 96,4,5,5,5,0,0,224,144,144,224,128,4,5,5,5, + 0,0,96,144,144,80,224,4,5,5,5,0,0,224,144,144, + 224,144,3,5,5,4,0,0,96,128,64,32,192,3,5,5, + 4,0,0,224,64,64,64,64,4,5,5,5,0,0,144,144, + 144,144,96,5,5,5,6,0,0,136,80,80,80,32,5,5, + 5,6,0,0,136,136,136,168,80,4,5,5,5,0,0,144, + 144,144,96,144,4,6,6,5,0,255,144,144,144,112,16,96, + 4,5,5,5,0,0,240,32,64,128,240,2,7,7,3,0, + 255,192,128,128,128,128,128,192,3,6,6,4,0,255,128,128, + 64,64,32,32,2,7,7,3,0,255,192,64,64,64,64,64, + 192,3,2,2,4,0,4,64,160,4,1,1,5,0,255,240, + 2,2,2,3,0,5,128,64,4,4,4,5,0,0,96,144, + 144,112,4,5,5,5,0,0,128,224,144,144,96,3,4,4, + 4,0,0,96,128,128,96,4,5,5,5,0,0,16,112,144, + 144,96,4,4,4,5,0,0,96,144,160,112,4,5,5,5, + 0,0,96,144,128,192,128,4,6,6,5,0,254,96,144,144, + 112,16,96,4,5,5,5,0,0,128,224,144,144,144,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,32,192,3,5,5,4,0,0,128,160,192,160, + 160,1,5,5,2,0,0,128,128,128,128,128,5,4,4,6, + 0,0,208,168,168,136,4,4,4,5,0,0,224,144,144,144, + 4,4,4,5,0,0,96,144,144,96,4,6,6,5,0,254, + 96,144,144,224,128,128,4,6,6,5,0,254,96,144,144,112, + 16,16,4,4,4,5,0,0,224,144,128,128,4,4,4,5, + 0,0,112,64,32,224,3,5,5,4,0,0,64,224,64,64, + 64,4,4,4,5,0,0,144,144,144,112,4,4,4,5,0, + 0,144,144,144,96,5,4,4,6,0,0,136,168,168,80,4, + 4,4,5,0,0,144,144,96,144,4,6,6,5,0,254,144, + 144,144,112,16,96,4,4,4,5,0,0,240,32,64,240,3, + 7,7,4,0,255,32,64,64,128,64,64,32,1,7,7,2, + 0,255,128,128,128,128,128,128,128,3,7,7,4,0,255,128, + 64,64,32,64,64,128,5,3,3,6,0,1,64,168,16,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,1,6,6,3,1,255,128,0,128,128,128,128,4,6,6, + 5,0,255,16,112,160,160,112,64,4,6,6,5,0,0,96, + 208,64,224,64,240,4,4,4,5,0,1,240,144,144,240,5, + 7,7,6,0,255,136,80,32,112,32,112,32,1,7,7,2, + 0,255,128,128,128,0,128,128,128,4,7,7,5,0,255,112, + 128,96,144,96,16,224,3,1,1,4,0,5,160,7,7,7, + 8,0,255,56,68,154,162,154,68,56,3,3,3,4,0,4, + 96,160,224,4,3,3,5,0,1,80,160,80,5,3,3,6, + 0,1,248,8,8,2,1,1,3,0,2,192,7,7,7,8, + 0,255,56,68,178,186,170,68,56,4,1,1,5,0,5,240, + 3,3,3,4,0,4,64,160,64,3,5,5,4,0,0,64, + 224,64,0,224,3,4,4,4,0,4,192,32,64,224,3,4, + 4,4,0,4,224,32,96,224,2,2,2,3,0,5,64,128, + 5,6,6,6,0,254,144,144,144,248,128,128,5,6,6,6, + 0,0,120,232,232,104,40,40,1,1,1,3,1,2,128,3, + 3,3,4,0,254,64,32,192,3,4,4,4,0,4,64,192, + 64,224,4,4,4,5,0,4,96,144,144,96,4,3,3,5, + 0,1,160,80,160,7,6,6,8,0,0,136,144,160,42,78, + 130,7,6,6,8,0,0,136,144,164,42,68,142,9,6,12, + 10,0,0,226,0,100,0,232,0,10,128,19,128,32,128,4, + 6,6,5,0,255,32,0,32,64,144,96,4,8,8,5,0, + 0,64,32,0,96,144,144,240,144,4,8,8,5,0,0,32, + 64,0,96,144,144,240,144,4,8,8,5,0,0,96,144,0, + 96,144,144,240,144,4,8,8,5,0,0,80,160,0,96,144, + 144,240,144,4,7,7,5,0,0,80,0,96,144,144,240,144, + 4,7,7,5,0,0,96,0,96,144,144,240,144,7,5,5, + 8,0,0,126,144,156,240,158,4,7,7,5,0,254,96,144, + 128,144,96,32,64,4,8,8,5,0,0,64,32,0,240,128, + 224,128,240,4,8,8,5,0,0,32,64,0,240,128,224,128, + 240,4,8,8,5,0,0,96,144,0,240,128,224,128,240,4, + 7,7,5,0,0,80,0,240,128,224,128,240,3,8,8,4, + 0,0,128,64,0,224,64,64,64,224,3,8,8,4,0,0, + 32,64,0,224,64,64,64,224,3,8,8,4,0,0,64,160, + 0,224,64,64,64,224,3,7,7,4,0,0,160,0,224,64, + 64,64,224,5,5,5,6,0,0,112,72,232,72,112,4,8, + 8,5,0,0,80,160,0,144,144,208,176,144,4,8,8,5, + 0,0,64,32,0,96,144,144,144,96,4,8,8,5,0,0, + 32,64,0,96,144,144,144,96,4,8,8,5,0,0,96,144, + 0,96,144,144,144,96,4,8,8,5,0,0,80,160,0,96, + 144,144,144,96,4,7,7,5,0,0,80,0,96,144,144,144, + 96,3,3,3,4,0,1,160,64,160,6,5,5,7,0,0, + 48,76,120,200,48,4,8,8,5,0,0,64,32,0,144,144, + 144,144,96,4,8,8,5,0,0,32,64,0,144,144,144,144, + 96,4,8,8,5,0,0,96,144,0,144,144,144,144,96,4, + 7,7,5,0,0,80,0,144,144,144,144,96,4,9,9,5, + 0,255,32,64,0,144,144,144,112,16,96,4,6,6,5,0, + 0,128,224,144,144,224,128,4,5,5,5,0,0,96,144,160, + 144,160,4,7,7,5,0,0,64,32,0,96,144,144,112,4, + 7,7,5,0,0,32,64,0,96,144,144,112,4,7,7,5, + 0,0,96,144,0,96,144,144,112,4,7,7,5,0,0,80, + 160,0,96,144,144,112,4,6,6,5,0,0,80,0,96,144, + 144,112,4,7,7,5,0,0,96,96,0,96,144,144,112,7, + 4,4,8,0,0,108,146,148,126,3,6,6,4,0,254,96, + 128,128,96,32,64,4,7,7,5,0,0,64,32,0,96,144, + 160,112,4,7,7,5,0,0,32,64,0,96,144,160,112,4, + 7,7,5,0,0,96,144,0,96,144,160,112,4,6,6,5, + 0,0,80,0,96,144,160,112,2,6,6,3,0,0,128,64, + 0,64,64,64,2,6,6,3,0,0,64,128,0,128,128,128, + 3,6,6,4,0,0,64,160,0,64,64,64,3,5,5,4, + 0,0,160,0,64,64,64,5,6,6,6,0,0,96,24,112, + 144,144,96,4,7,7,5,0,0,80,160,0,224,144,144,144, + 4,7,7,5,0,0,64,32,0,96,144,144,96,4,7,7, + 5,0,0,32,64,0,96,144,144,96,4,7,7,5,0,0, + 96,144,0,96,144,144,96,4,7,7,5,0,0,80,160,0, + 96,144,144,96,4,6,6,5,0,0,80,0,96,144,144,96, + 5,5,5,6,0,0,32,0,248,0,32,4,4,4,5,0, + 0,96,176,208,96,4,7,7,5,0,0,64,32,0,144,144, + 144,112,4,7,7,5,0,0,32,64,0,144,144,144,112,4, + 7,7,5,0,0,96,144,0,144,144,144,112,4,6,6,5, + 0,0,80,0,144,144,144,112,4,9,9,5,0,254,32,64, + 0,144,144,144,112,16,96,4,8,8,5,0,254,128,128,224, + 144,144,224,128,128,4,8,8,5,0,254,80,0,144,144,144, + 112,16,96}; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 3 dx= 5 dy= 0 ascent= 6 len= 6 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_babyn[180] U8G_SECTION(".progmem.u8g_font_babyn") = { + 0,10,10,255,254,5,0,0,0,0,42,57,0,6,254,5, + 0,3,3,3,4,0,3,160,64,160,3,3,3,5,1,1, + 64,224,64,2,3,3,3,0,254,192,64,128,3,1,1,4, + 0,2,224,1,1,1,2,0,0,128,3,6,6,4,0,255, + 32,32,64,64,128,128,3,5,5,4,0,0,64,160,160,160, + 64,2,5,5,3,0,0,64,192,64,64,64,4,5,5,5, + 0,0,96,144,32,64,240,4,5,5,5,0,0,224,16,96, + 16,224,4,5,5,5,0,0,144,144,144,112,16,4,5,5, + 5,0,0,240,128,224,16,224,4,5,5,5,0,0,96,128, + 224,144,96,4,5,5,5,0,0,240,16,32,64,128,4,5, + 5,5,0,0,96,144,96,144,96,4,5,5,5,0,0,96, + 144,112,16,96}; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 1 y= 5 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_babyr[1040] U8G_SECTION(".progmem.u8g_font_babyr") = { + 0,10,10,255,254,5,1,108,2,200,32,127,254,7,254,6, + 254,0,0,0,2,0,0,1,6,6,3,1,0,128,128,128, + 128,0,128,3,3,3,4,0,4,160,160,160,5,5,5,6, + 0,0,80,248,80,248,80,3,7,7,4,0,255,64,96,128, + 64,32,192,64,5,5,5,6,0,0,200,208,32,88,152,5, + 6,6,6,0,0,64,160,64,160,144,104,1,3,3,2,0, + 4,128,128,128,2,7,7,3,0,255,64,128,128,128,128,128, + 64,2,7,7,3,0,255,128,64,64,64,64,64,128,3,3, + 3,4,0,3,160,64,160,3,3,3,5,1,1,64,224,64, + 2,3,3,3,0,254,192,64,128,3,1,1,4,0,2,224, + 1,1,1,2,0,0,128,3,6,6,4,0,255,32,32,64, + 64,128,128,3,5,5,4,0,0,64,160,160,160,64,2,5, + 5,3,0,0,64,192,64,64,64,4,5,5,5,0,0,96, + 144,32,64,240,4,5,5,5,0,0,224,16,96,16,224,4, + 5,5,5,0,0,144,144,144,112,16,4,5,5,5,0,0, + 240,128,224,16,224,4,5,5,5,0,0,96,128,224,144,96, + 4,5,5,5,0,0,240,16,32,64,128,4,5,5,5,0, + 0,96,144,96,144,96,4,5,5,5,0,0,96,144,112,16, + 96,1,3,3,3,1,0,128,0,128,2,5,5,3,0,254, + 64,0,64,64,128,4,5,5,5,0,0,16,96,128,96,16, + 3,3,3,4,0,1,224,0,224,4,5,5,5,0,0,128, + 96,16,96,128,4,6,6,5,0,0,96,144,32,64,0,64, + 5,6,6,6,0,0,112,136,168,176,128,112,4,5,5,5, + 0,0,96,144,144,240,144,4,5,5,5,0,0,224,144,224, + 144,224,4,5,5,5,0,0,96,144,128,144,96,4,5,5, + 5,0,0,224,144,144,144,224,4,5,5,5,0,0,240,128, + 224,128,240,4,5,5,5,0,0,240,128,224,128,128,4,5, + 5,5,0,0,96,128,176,144,96,4,5,5,5,0,0,144, + 144,240,144,144,3,5,5,4,0,0,224,64,64,64,224,4, + 5,5,5,0,0,112,16,16,144,96,4,5,5,5,0,0, + 144,144,144,224,144,3,5,5,4,0,0,128,128,128,128,224, + 5,5,5,6,0,0,216,168,168,168,136,4,5,5,5,0, + 0,144,144,208,176,144,4,5,5,5,0,0,96,144,144,144, + 96,4,5,5,5,0,0,224,144,144,224,128,4,5,5,5, + 0,0,96,144,144,80,224,4,5,5,5,0,0,224,144,144, + 224,144,3,5,5,4,0,0,96,128,64,32,192,3,5,5, + 4,0,0,224,64,64,64,64,4,5,5,5,0,0,144,144, + 144,144,96,5,5,5,6,0,0,136,80,80,80,32,5,5, + 5,6,0,0,136,136,136,168,80,4,5,5,5,0,0,144, + 144,144,96,144,4,6,6,5,0,255,144,144,144,112,16,96, + 4,5,5,5,0,0,240,32,64,128,240,2,7,7,3,0, + 255,192,128,128,128,128,128,192,3,6,6,4,0,255,128,128, + 64,64,32,32,2,7,7,3,0,255,192,64,64,64,64,64, + 192,3,2,2,4,0,4,64,160,4,1,1,5,0,255,240, + 2,2,2,3,0,5,128,64,4,4,4,5,0,0,96,144, + 144,112,4,5,5,5,0,0,128,224,144,144,96,3,4,4, + 4,0,0,96,128,128,96,4,5,5,5,0,0,16,112,144, + 144,96,4,4,4,5,0,0,96,144,160,112,4,5,5,5, + 0,0,96,144,128,192,128,4,6,6,5,0,254,96,144,144, + 112,16,96,4,5,5,5,0,0,128,224,144,144,144,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,32,192,3,5,5,4,0,0,128,160,192,160, + 160,1,5,5,2,0,0,128,128,128,128,128,5,4,4,6, + 0,0,208,168,168,136,4,4,4,5,0,0,224,144,144,144, + 4,4,4,5,0,0,96,144,144,96,4,6,6,5,0,254, + 96,144,144,224,128,128,4,6,6,5,0,254,96,144,144,112, + 16,16,4,4,4,5,0,0,224,144,128,128,4,4,4,5, + 0,0,112,64,32,224,3,5,5,4,0,0,64,224,64,64, + 64,4,4,4,5,0,0,144,144,144,112,4,4,4,5,0, + 0,144,144,144,96,5,4,4,6,0,0,136,168,168,80,4, + 4,4,5,0,0,144,144,96,144,4,6,6,5,0,254,144, + 144,144,112,16,96,4,4,4,5,0,0,240,32,64,240,3, + 7,7,4,0,255,32,64,64,128,64,64,32,1,7,7,2, + 0,255,128,128,128,128,128,128,128,3,7,7,4,0,255,128, + 64,64,32,64,64,128,5,3,3,6,0,1,64,168,16,255 + }; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07[948] U8G_SECTION(".progmem.u8g_font_blipfest_07") = { + 0,5,6,0,255,5,1,5,2,47,32,255,255,5,255,5, + 255,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,255,255,255,4,5,5, + 5,0,0,224,160,240,160,240,1,2,2,2,0,3,128,128, + 255,255,255,3,3,3,4,0,1,64,224,64,1,2,2,2, + 0,0,128,128,3,1,1,4,0,2,224,1,1,1,2,0, + 0,128,255,3,5,5,4,0,0,224,160,160,160,224,2,5, + 5,3,0,0,192,64,64,64,64,3,5,5,4,0,0,224, + 32,224,128,224,3,5,5,4,0,0,224,32,224,32,224,3, + 5,5,4,0,0,160,160,224,32,32,3,5,5,4,0,0, + 224,128,224,32,224,3,5,5,4,0,0,224,128,224,160,224, + 3,5,5,4,0,0,224,32,32,32,32,3,5,5,4,0, + 0,224,160,224,160,224,3,5,5,4,0,0,224,160,224,32, + 224,1,3,3,2,0,0,128,0,128,1,4,4,2,0,255, + 128,0,128,128,255,3,3,3,4,0,1,224,0,224,255,3, + 5,5,4,0,0,224,32,96,0,64,5,5,5,6,0,0, + 248,136,184,168,240,3,5,5,4,0,0,224,160,160,224,160, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,128,128,128,224,3,5,5,4,0,0,192,160,160,160, + 192,3,5,5,4,0,0,224,128,224,128,224,3,5,5,4, + 0,0,224,128,224,128,128,3,5,5,4,0,0,224,128,160, + 160,224,3,5,5,4,0,0,160,160,160,224,160,3,5,5, + 4,0,0,224,64,64,64,224,3,5,5,4,0,0,32,32, + 32,160,224,3,5,5,4,0,0,160,160,160,192,160,3,5, + 5,4,0,0,128,128,128,128,224,3,5,5,4,0,0,160, + 224,160,160,160,3,5,5,4,0,0,224,160,160,160,160,3, + 5,5,4,0,0,224,160,160,160,224,3,5,5,4,0,0, + 224,160,160,224,128,3,5,5,4,0,0,224,160,160,224,64, + 3,5,5,4,0,0,224,160,160,192,160,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,64,64,64, + 64,3,5,5,4,0,0,160,160,160,160,224,3,5,5,4, + 0,0,160,160,160,160,64,3,5,5,4,0,0,160,160,160, + 224,224,3,5,5,4,0,0,160,160,64,160,160,3,5,5, + 4,0,0,160,160,160,64,64,3,5,5,4,0,0,224,32, + 224,128,224,255,255,255,255,3,1,1,4,0,0,224,255,3, + 3,3,4,0,0,96,160,224,3,5,5,4,0,0,128,128, + 224,160,224,3,3,3,4,0,0,224,128,224,3,5,5,4, + 0,0,32,32,224,160,224,3,3,3,4,0,0,224,160,192, + 3,5,5,4,0,0,96,64,224,64,64,3,4,4,4,0, + 255,224,160,224,64,3,5,5,4,0,0,128,128,224,160,160, + 1,5,5,2,0,0,128,0,128,128,128,2,5,5,3,0, + 0,64,0,64,64,192,3,5,5,4,0,0,128,128,160,192, + 160,1,5,5,2,0,0,128,128,128,128,128,5,3,3,6, + 0,0,248,168,168,3,3,3,4,0,0,192,160,160,3,3, + 3,4,0,0,224,160,224,3,4,4,4,0,255,224,160,224, + 128,3,4,4,4,0,255,224,160,224,32,3,3,3,4,0, + 0,224,128,128,3,3,3,4,0,0,96,64,192,3,5,5, + 4,0,0,64,224,64,64,96,3,3,3,4,0,0,160,160, + 224,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,4,4,4, + 0,255,160,160,224,32,3,3,3,4,0,0,224,64,224,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[160] U8G_SECTION(".progmem.u8g_font_blipfest_07n") = { + 0,5,6,0,255,5,0,0,0,0,42,57,0,5,0,5, + 0,255,3,3,3,4,0,1,64,224,64,1,2,2,2,0, + 0,128,128,3,1,1,4,0,2,224,1,1,1,2,0,0, + 128,255,3,5,5,4,0,0,224,160,160,160,224,2,5,5, + 3,0,0,192,64,64,64,64,3,5,5,4,0,0,224,32, + 224,128,224,3,5,5,4,0,0,224,32,224,32,224,3,5, + 5,4,0,0,160,160,224,32,32,3,5,5,4,0,0,224, + 128,224,32,224,3,5,5,4,0,0,224,128,224,160,224,3, + 5,5,4,0,0,224,32,32,32,32,3,5,5,4,0,0, + 224,160,224,160,224,3,5,5,4,0,0,224,160,224,32,224 + }; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[820] U8G_SECTION(".progmem.u8g_font_blipfest_07r") = { + 0,5,6,0,255,5,1,5,2,47,32,127,255,5,255,5, + 255,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,255,255,255,4,5,5, + 5,0,0,224,160,240,160,240,1,2,2,2,0,3,128,128, + 255,255,255,3,3,3,4,0,1,64,224,64,1,2,2,2, + 0,0,128,128,3,1,1,4,0,2,224,1,1,1,2,0, + 0,128,255,3,5,5,4,0,0,224,160,160,160,224,2,5, + 5,3,0,0,192,64,64,64,64,3,5,5,4,0,0,224, + 32,224,128,224,3,5,5,4,0,0,224,32,224,32,224,3, + 5,5,4,0,0,160,160,224,32,32,3,5,5,4,0,0, + 224,128,224,32,224,3,5,5,4,0,0,224,128,224,160,224, + 3,5,5,4,0,0,224,32,32,32,32,3,5,5,4,0, + 0,224,160,224,160,224,3,5,5,4,0,0,224,160,224,32, + 224,1,3,3,2,0,0,128,0,128,1,4,4,2,0,255, + 128,0,128,128,255,3,3,3,4,0,1,224,0,224,255,3, + 5,5,4,0,0,224,32,96,0,64,5,5,5,6,0,0, + 248,136,184,168,240,3,5,5,4,0,0,224,160,160,224,160, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,128,128,128,224,3,5,5,4,0,0,192,160,160,160, + 192,3,5,5,4,0,0,224,128,224,128,224,3,5,5,4, + 0,0,224,128,224,128,128,3,5,5,4,0,0,224,128,160, + 160,224,3,5,5,4,0,0,160,160,160,224,160,3,5,5, + 4,0,0,224,64,64,64,224,3,5,5,4,0,0,32,32, + 32,160,224,3,5,5,4,0,0,160,160,160,192,160,3,5, + 5,4,0,0,128,128,128,128,224,3,5,5,4,0,0,160, + 224,160,160,160,3,5,5,4,0,0,224,160,160,160,160,3, + 5,5,4,0,0,224,160,160,160,224,3,5,5,4,0,0, + 224,160,160,224,128,3,5,5,4,0,0,224,160,160,224,64, + 3,5,5,4,0,0,224,160,160,192,160,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,64,64,64, + 64,3,5,5,4,0,0,160,160,160,160,224,3,5,5,4, + 0,0,160,160,160,160,64,3,5,5,4,0,0,160,160,160, + 224,224,3,5,5,4,0,0,160,160,64,160,160,3,5,5, + 4,0,0,160,160,160,64,64,3,5,5,4,0,0,224,32, + 224,128,224,255,255,255,255,3,1,1,4,0,0,224,255,3, + 3,3,4,0,0,96,160,224,3,5,5,4,0,0,128,128, + 224,160,224,3,3,3,4,0,0,224,128,224,3,5,5,4, + 0,0,32,32,224,160,224,3,3,3,4,0,0,224,160,192, + 3,5,5,4,0,0,96,64,224,64,64,3,4,4,4,0, + 255,224,160,224,64,3,5,5,4,0,0,128,128,224,160,160, + 1,5,5,2,0,0,128,0,128,128,128,2,5,5,3,0, + 0,64,0,64,64,192,3,5,5,4,0,0,128,128,160,192, + 160,1,5,5,2,0,0,128,128,128,128,128,5,3,3,6, + 0,0,248,168,168,3,3,3,4,0,0,192,160,160,3,3, + 3,4,0,0,224,160,224,3,4,4,4,0,255,224,160,224, + 128,3,4,4,4,0,255,224,160,224,32,3,3,3,4,0, + 0,224,128,128,3,3,3,4,0,0,96,64,192,3,5,5, + 4,0,0,64,224,64,64,96,3,3,3,4,0,0,160,160, + 224,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,4,4,4, + 0,255,160,160,224,32,3,3,3,4,0,0,224,64,224,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 9 h= 8 x= 1 y= 6 dx=10 dy= 0 ascent= 8 len=10 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikita[2236] U8G_SECTION(".progmem.u8g_font_chikita") = { + 0,9,10,0,254,5,1,107,2,195,32,255,254,8,254,6, + 254,0,0,0,2,0,0,1,7,7,2,0,255,128,128,128, + 128,128,0,128,3,2,2,4,0,4,160,160,5,5,5,6, + 0,0,80,248,80,248,80,5,7,7,6,0,255,32,120,160, + 112,40,240,32,5,5,5,6,0,0,200,208,32,88,152,5, + 5,5,6,0,0,32,80,104,144,104,1,2,2,2,0,4, + 128,128,3,7,7,4,0,255,32,64,128,128,128,64,32,3, + 7,7,4,0,255,128,64,32,32,32,64,128,3,3,3,5, + 1,1,160,64,160,5,5,5,6,0,0,32,32,248,32,32, + 2,2,2,3,0,255,64,128,5,1,1,6,0,2,248,1, + 1,1,2,0,0,128,3,5,5,5,1,0,32,32,64,128, + 128,4,5,5,5,0,0,96,144,144,144,96,2,5,5,3, + 0,0,64,192,64,64,64,5,5,5,6,0,0,112,136,48, + 64,248,5,5,5,6,0,0,240,8,112,8,240,5,5,5, + 6,0,0,48,80,144,248,16,5,5,5,6,0,0,248,128, + 240,8,240,5,5,5,6,0,0,120,128,240,136,112,5,5, + 5,6,0,0,248,8,16,32,64,5,5,5,6,0,0,112, + 136,112,136,112,5,5,5,6,0,0,112,136,120,8,240,1, + 3,3,2,0,1,128,0,128,1,4,4,2,0,0,128,0, + 128,128,5,5,5,6,0,0,24,96,128,96,24,5,3,3, + 6,0,1,248,0,248,5,5,5,6,0,0,192,48,8,48, + 192,5,7,7,6,0,255,112,136,16,32,32,0,32,7,7, + 7,8,0,255,124,130,154,170,190,128,124,5,5,5,6,0, + 0,112,136,136,248,136,5,5,5,6,0,0,240,136,240,136, + 240,5,5,5,6,0,0,112,136,128,136,112,5,5,5,6, + 0,0,240,136,136,136,240,5,5,5,6,0,0,248,128,240, + 128,248,5,5,5,6,0,0,248,128,240,128,128,5,5,5, + 6,0,0,112,128,184,136,112,5,5,5,6,0,0,136,136, + 248,136,136,3,5,5,4,0,0,224,64,64,64,224,5,5, + 5,6,0,0,8,8,8,136,112,5,5,5,6,0,0,136, + 144,224,144,136,5,5,5,6,0,0,128,128,128,128,248,5, + 5,5,6,0,0,136,216,168,136,136,5,5,5,6,0,0, + 136,200,168,152,136,5,5,5,6,0,0,112,136,136,136,112, + 5,5,5,6,0,0,240,136,136,240,128,5,5,5,6,0, + 0,112,136,136,152,120,5,5,5,6,0,0,240,136,136,240, + 136,5,5,5,6,0,0,120,128,112,8,240,5,5,5,6, + 0,0,248,32,32,32,32,5,5,5,6,0,0,136,136,136, + 136,112,5,5,5,6,0,0,136,136,136,80,32,5,5,5, + 6,0,0,136,168,168,168,80,5,5,5,6,0,0,136,80, + 32,80,136,5,5,5,6,0,0,136,136,80,32,32,5,5, + 5,6,0,0,248,16,32,64,248,2,6,6,3,0,255,192, + 128,128,128,128,192,3,5,5,4,0,0,128,128,64,32,32, + 2,6,6,3,0,255,192,64,64,64,64,192,3,2,2,4, + 0,4,64,160,5,1,1,6,0,255,248,2,2,2,3,0, + 4,128,64,4,4,4,5,0,0,112,144,144,240,4,5,5, + 5,0,0,128,224,144,144,224,4,4,4,5,0,0,112,128, + 128,112,4,5,5,5,0,0,16,112,144,144,112,4,4,4, + 5,0,0,96,144,224,112,4,5,5,5,0,0,48,64,240, + 64,64,4,6,6,5,0,254,112,144,144,240,16,224,4,5, + 5,5,0,0,128,224,144,144,144,1,5,5,2,0,0,128, + 0,128,128,128,2,7,7,3,0,254,64,0,64,64,64,64, + 128,4,5,5,5,0,0,128,144,160,224,144,1,5,5,2, + 0,0,128,128,128,128,128,6,4,4,7,0,0,168,212,148, + 148,4,4,4,5,0,0,160,208,144,144,4,4,4,5,0, + 0,96,144,144,96,4,6,6,5,0,254,224,144,144,224,128, + 128,4,6,6,5,0,254,112,144,144,112,16,16,4,4,4, + 5,0,0,176,192,128,128,4,4,4,5,0,0,112,192,48, + 224,4,5,5,5,0,0,64,240,64,64,48,4,4,4,5, + 0,0,144,144,144,112,5,4,4,6,0,0,136,136,80,32, + 5,4,4,6,0,0,136,136,168,80,4,4,4,5,0,0, + 144,96,96,144,4,6,6,5,0,254,144,144,144,112,16,224, + 4,4,4,5,0,0,240,32,64,240,3,6,6,4,0,255, + 96,64,128,128,64,96,1,6,6,2,0,255,128,128,128,128, + 128,128,3,6,6,4,0,255,192,64,32,32,64,192,5,3, + 3,6,0,1,64,168,16,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,1,7,7,2,0,255,128, + 0,128,128,128,128,128,3,5,5,4,0,0,64,224,128,224, + 64,5,6,6,6,0,0,112,136,72,224,64,248,5,5,5, + 6,0,0,136,112,80,112,136,5,6,6,6,0,0,136,80, + 32,112,112,32,1,5,5,2,0,0,128,128,0,128,128,4, + 7,7,5,0,254,112,128,96,144,96,16,224,3,1,1,4, + 0,6,160,7,7,7,8,0,255,124,130,186,162,186,130,124, + 3,4,4,4,0,4,96,224,160,96,6,5,5,7,0,0, + 36,72,144,72,36,5,3,3,6,0,2,248,8,8,3,1, + 1,5,1,2,224,7,7,7,8,0,255,124,130,186,178,170, + 130,124,5,1,1,6,0,6,248,4,4,4,5,0,3,96, + 144,144,96,3,5,5,5,1,0,64,224,64,0,224,4,5, + 5,5,0,2,96,144,32,64,240,4,5,5,5,0,2,224, + 16,96,16,224,2,2,2,3,0,5,64,128,5,6,6,6, + 0,254,136,136,216,168,128,128,6,7,7,7,0,254,124,232, + 232,104,40,40,40,3,3,3,5,1,1,224,224,224,3,3, + 3,5,1,254,64,32,224,2,5,5,3,0,2,64,192,64, + 64,64,4,5,5,5,0,2,96,144,144,144,96,6,5,5, + 7,0,0,144,72,36,72,144,7,8,8,8,0,254,66,196, + 72,80,38,74,142,2,7,8,8,8,0,254,66,196,72,80, + 44,66,132,14,7,8,8,8,0,254,226,68,40,208,38,74, + 142,2,5,7,7,6,0,255,32,0,32,32,72,136,112,5, + 8,8,6,0,0,64,32,0,112,136,136,248,136,5,8,8, + 6,0,0,16,32,0,112,136,136,248,136,5,8,8,6,0, + 0,32,80,0,112,136,136,248,136,5,8,8,6,0,0,40, + 80,0,112,136,136,248,136,5,7,7,6,0,0,80,0,112, + 136,136,248,136,5,8,8,6,0,0,32,80,32,112,136,136, + 248,136,9,5,10,10,0,0,63,128,72,0,143,0,248,0, + 143,128,5,7,7,6,0,254,112,136,128,136,112,16,112,5, + 8,8,6,0,0,64,32,0,248,128,240,128,248,5,8,8, + 6,0,0,16,32,0,248,128,240,128,248,5,8,8,6,0, + 0,32,80,0,248,128,240,128,248,5,7,7,6,0,0,80, + 0,248,128,240,128,248,3,8,8,4,0,0,128,64,0,224, + 64,64,64,224,3,8,8,4,0,0,32,64,0,224,64,64, + 64,224,3,8,8,4,0,0,64,160,0,224,64,64,64,224, + 3,7,7,4,0,0,160,0,224,64,64,64,224,5,5,5, + 6,0,0,112,72,232,72,112,5,8,8,6,0,0,40,80, + 0,136,200,168,152,136,5,8,8,6,0,0,64,32,0,112, + 136,136,136,112,5,8,8,6,0,0,16,32,0,112,136,136, + 136,112,5,8,8,6,0,0,32,80,0,112,136,136,136,112, + 5,8,8,6,0,0,64,168,16,112,136,136,136,112,5,7, + 7,6,0,0,80,0,112,136,136,136,112,3,3,3,4,0, + 1,160,64,160,5,5,5,6,0,0,120,152,168,200,240,5, + 8,8,6,0,0,64,32,0,136,136,136,136,112,5,8,8, + 6,0,0,16,32,0,136,136,136,136,112,5,8,8,6,0, + 0,32,80,0,136,136,136,136,112,5,7,7,6,0,0,80, + 0,136,136,136,136,112,5,8,8,6,0,0,16,32,0,136, + 136,80,32,32,5,5,5,6,0,0,128,240,136,240,128,4, + 5,5,5,0,0,96,144,160,144,160,4,7,7,5,0,0, + 64,32,0,112,144,144,240,4,7,7,5,0,0,32,64,0, + 112,144,144,240,4,7,7,5,0,0,32,80,0,112,144,144, + 240,4,7,7,5,0,0,80,160,0,112,144,144,240,4,6, + 6,5,0,0,80,0,112,144,144,240,4,7,7,5,0,0, + 32,80,32,112,144,144,240,7,5,5,8,0,0,236,18,126, + 144,238,4,6,6,5,0,254,112,128,128,112,32,96,4,7, + 7,5,0,0,64,32,0,96,144,224,112,4,7,7,5,0, + 0,32,64,0,96,144,224,112,4,7,7,5,0,0,32,80, + 0,96,144,224,112,4,6,6,5,0,0,80,0,96,144,224, + 112,2,7,7,3,0,0,128,64,0,64,64,64,64,2,7, + 7,3,0,0,64,128,0,128,128,128,128,3,7,7,4,0, + 0,64,160,0,64,64,64,64,3,6,6,4,0,0,160,0, + 64,64,64,64,4,6,6,5,0,0,64,32,112,144,144,96, + 4,7,7,5,0,0,80,160,0,160,208,144,144,4,7,7, + 5,0,0,64,32,0,96,144,144,96,4,7,7,5,0,0, + 32,64,0,96,144,144,96,4,7,7,5,0,0,96,144,0, + 96,144,144,96,4,7,7,5,0,0,80,160,0,96,144,144, + 96,4,6,6,5,0,0,80,0,96,144,144,96,5,5,5, + 6,0,0,32,0,248,0,32,4,4,4,5,0,0,112,176, + 208,224,4,7,7,5,0,0,64,32,0,144,144,144,112,4, + 7,7,5,0,0,32,64,0,144,144,144,112,4,7,7,5, + 0,0,32,80,0,144,144,144,112,4,6,6,5,0,0,80, + 0,144,144,144,112,4,8,8,5,0,254,32,64,0,144,144, + 112,16,224,4,6,6,5,0,254,128,224,144,144,224,128,4, + 7,7,5,0,254,80,0,144,144,112,16,224}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikitan[180] U8G_SECTION(".progmem.u8g_font_chikitan") = { + 0,9,10,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,3,3,5,1,1,160,64,160,5,5,5,6,0,0, + 32,32,248,32,32,2,2,2,3,0,255,64,128,5,1,1, + 6,0,2,248,1,1,1,2,0,0,128,3,5,5,5,1, + 0,32,32,64,128,128,4,5,5,5,0,0,96,144,144,144, + 96,2,5,5,3,0,0,64,192,64,64,64,5,5,5,6, + 0,0,112,136,48,64,248,5,5,5,6,0,0,240,8,112, + 8,240,5,5,5,6,0,0,48,80,144,248,16,5,5,5, + 6,0,0,248,128,240,8,240,5,5,5,6,0,0,120,128, + 240,136,112,5,5,5,6,0,0,248,8,16,32,64,5,5, + 5,6,0,0,112,136,112,136,112,5,5,5,6,0,0,112, + 136,120,8,240}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 7 h= 7 x= 1 y= 4 dx= 8 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikitar[1032] U8G_SECTION(".progmem.u8g_font_chikitar") = { + 0,9,10,0,254,5,1,107,2,195,32,127,254,6,254,6, + 254,0,0,0,2,0,0,1,7,7,2,0,255,128,128,128, + 128,128,0,128,3,2,2,4,0,4,160,160,5,5,5,6, + 0,0,80,248,80,248,80,5,7,7,6,0,255,32,120,160, + 112,40,240,32,5,5,5,6,0,0,200,208,32,88,152,5, + 5,5,6,0,0,32,80,104,144,104,1,2,2,2,0,4, + 128,128,3,7,7,4,0,255,32,64,128,128,128,64,32,3, + 7,7,4,0,255,128,64,32,32,32,64,128,3,3,3,5, + 1,1,160,64,160,5,5,5,6,0,0,32,32,248,32,32, + 2,2,2,3,0,255,64,128,5,1,1,6,0,2,248,1, + 1,1,2,0,0,128,3,5,5,5,1,0,32,32,64,128, + 128,4,5,5,5,0,0,96,144,144,144,96,2,5,5,3, + 0,0,64,192,64,64,64,5,5,5,6,0,0,112,136,48, + 64,248,5,5,5,6,0,0,240,8,112,8,240,5,5,5, + 6,0,0,48,80,144,248,16,5,5,5,6,0,0,248,128, + 240,8,240,5,5,5,6,0,0,120,128,240,136,112,5,5, + 5,6,0,0,248,8,16,32,64,5,5,5,6,0,0,112, + 136,112,136,112,5,5,5,6,0,0,112,136,120,8,240,1, + 3,3,2,0,1,128,0,128,1,4,4,2,0,0,128,0, + 128,128,5,5,5,6,0,0,24,96,128,96,24,5,3,3, + 6,0,1,248,0,248,5,5,5,6,0,0,192,48,8,48, + 192,5,7,7,6,0,255,112,136,16,32,32,0,32,7,7, + 7,8,0,255,124,130,154,170,190,128,124,5,5,5,6,0, + 0,112,136,136,248,136,5,5,5,6,0,0,240,136,240,136, + 240,5,5,5,6,0,0,112,136,128,136,112,5,5,5,6, + 0,0,240,136,136,136,240,5,5,5,6,0,0,248,128,240, + 128,248,5,5,5,6,0,0,248,128,240,128,128,5,5,5, + 6,0,0,112,128,184,136,112,5,5,5,6,0,0,136,136, + 248,136,136,3,5,5,4,0,0,224,64,64,64,224,5,5, + 5,6,0,0,8,8,8,136,112,5,5,5,6,0,0,136, + 144,224,144,136,5,5,5,6,0,0,128,128,128,128,248,5, + 5,5,6,0,0,136,216,168,136,136,5,5,5,6,0,0, + 136,200,168,152,136,5,5,5,6,0,0,112,136,136,136,112, + 5,5,5,6,0,0,240,136,136,240,128,5,5,5,6,0, + 0,112,136,136,152,120,5,5,5,6,0,0,240,136,136,240, + 136,5,5,5,6,0,0,120,128,112,8,240,5,5,5,6, + 0,0,248,32,32,32,32,5,5,5,6,0,0,136,136,136, + 136,112,5,5,5,6,0,0,136,136,136,80,32,5,5,5, + 6,0,0,136,168,168,168,80,5,5,5,6,0,0,136,80, + 32,80,136,5,5,5,6,0,0,136,136,80,32,32,5,5, + 5,6,0,0,248,16,32,64,248,2,6,6,3,0,255,192, + 128,128,128,128,192,3,5,5,4,0,0,128,128,64,32,32, + 2,6,6,3,0,255,192,64,64,64,64,192,3,2,2,4, + 0,4,64,160,5,1,1,6,0,255,248,2,2,2,3,0, + 4,128,64,4,4,4,5,0,0,112,144,144,240,4,5,5, + 5,0,0,128,224,144,144,224,4,4,4,5,0,0,112,128, + 128,112,4,5,5,5,0,0,16,112,144,144,112,4,4,4, + 5,0,0,96,144,224,112,4,5,5,5,0,0,48,64,240, + 64,64,4,6,6,5,0,254,112,144,144,240,16,224,4,5, + 5,5,0,0,128,224,144,144,144,1,5,5,2,0,0,128, + 0,128,128,128,2,7,7,3,0,254,64,0,64,64,64,64, + 128,4,5,5,5,0,0,128,144,160,224,144,1,5,5,2, + 0,0,128,128,128,128,128,6,4,4,7,0,0,168,212,148, + 148,4,4,4,5,0,0,160,208,144,144,4,4,4,5,0, + 0,96,144,144,96,4,6,6,5,0,254,224,144,144,224,128, + 128,4,6,6,5,0,254,112,144,144,112,16,16,4,4,4, + 5,0,0,176,192,128,128,4,4,4,5,0,0,112,192,48, + 224,4,5,5,5,0,0,64,240,64,64,48,4,4,4,5, + 0,0,144,144,144,112,5,4,4,6,0,0,136,136,80,32, + 5,4,4,6,0,0,136,136,168,80,4,4,4,5,0,0, + 144,96,96,144,4,6,6,5,0,254,144,144,144,112,16,224, + 4,4,4,5,0,0,240,32,64,240,3,6,6,4,0,255, + 96,64,128,128,64,96,1,6,6,2,0,255,128,128,128,128, + 128,128,3,6,6,4,0,255,192,64,32,32,64,192,5,3, + 3,6,0,1,64,168,16,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 7 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w=12 h=16 x=-3 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB08[2425] U8G_SECTION(".progmem.u8g_font_courB08") = { + 0,12,16,253,252,6,1,146,3,13,32,255,254,9,254,7, + 254,0,0,0,6,0,1,2,6,6,6,1,0,192,192,192, + 192,0,192,3,3,3,6,1,3,160,160,160,5,8,8,6, + 0,255,80,80,248,80,80,248,80,80,5,9,9,6,0,255, + 32,120,200,240,120,24,216,240,32,5,7,7,6,0,0,224, + 168,240,32,120,168,56,6,6,6,6,255,0,56,96,48,124, + 216,124,1,3,3,6,2,3,128,128,128,3,8,8,6,1, + 255,32,64,192,192,192,192,64,32,3,8,8,6,1,255,128, + 64,96,96,96,96,64,128,4,4,4,6,0,3,32,240,96, + 144,5,5,5,6,0,1,32,32,248,32,32,3,3,3,6, + 1,254,96,64,128,5,1,1,6,0,3,248,2,1,1,6, + 1,0,192,4,8,8,6,1,255,16,16,32,32,64,64,128, + 128,5,7,7,6,0,0,112,216,216,216,216,216,112,6,7, + 7,6,0,0,48,240,48,48,48,48,252,5,7,7,6,0, + 0,112,216,24,48,96,216,248,5,7,7,6,0,0,112,216, + 24,112,24,216,112,6,7,7,6,0,0,24,56,88,216,252, + 24,24,5,7,7,6,0,0,248,192,240,216,24,152,240,5, + 7,7,6,0,0,112,216,192,240,216,216,112,5,7,7,6, + 0,0,248,216,24,48,48,96,96,5,7,7,6,0,0,112, + 216,216,112,216,216,112,5,7,7,6,0,0,112,216,216,120, + 24,216,112,2,4,4,6,1,0,192,0,0,192,3,6,6, + 6,0,254,96,0,0,96,64,128,4,5,5,6,0,1,48, + 96,192,96,48,4,3,3,6,0,2,240,0,240,4,5,5, + 6,1,1,192,96,48,96,192,5,6,6,6,0,0,112,152, + 48,96,0,96,6,8,8,6,0,255,112,200,152,168,168,156, + 192,112,7,6,6,6,255,0,120,56,40,124,108,238,6,6, + 6,6,255,0,248,108,120,108,108,248,5,6,6,6,0,0, + 120,216,192,192,216,112,6,6,6,6,255,0,248,108,108,108, + 108,248,6,6,6,6,255,0,252,96,120,96,108,252,6,6, + 6,6,255,0,252,96,120,96,96,240,5,6,6,6,0,0, + 112,216,192,248,216,120,7,6,6,6,255,0,238,108,124,108, + 108,238,4,6,6,6,0,0,240,96,96,96,96,240,6,6, + 6,6,255,0,60,24,24,216,216,112,7,6,6,6,255,0, + 236,104,112,120,108,246,6,6,6,6,255,0,240,96,96,96, + 108,252,6,6,6,6,255,0,196,108,108,124,84,212,7,6, + 6,6,255,0,238,116,116,108,108,228,5,6,6,6,0,0, + 112,216,216,216,216,112,6,6,6,6,255,0,248,108,108,120, + 96,240,5,7,7,6,0,255,112,216,216,216,216,112,24,7, + 6,6,6,255,0,248,108,108,120,108,246,5,6,6,6,0, + 0,120,200,240,56,152,240,6,6,6,6,255,0,252,180,48, + 48,48,120,7,6,6,6,255,0,238,108,108,108,108,56,7, + 6,6,6,255,0,238,108,40,56,56,16,7,6,6,6,255, + 0,214,84,84,124,56,40,6,6,6,6,0,0,204,120,48, + 48,120,204,7,6,6,6,255,0,230,102,60,24,24,60,5, + 6,6,6,0,0,248,216,48,96,216,248,3,8,8,6,1, + 255,224,192,192,192,192,192,192,224,4,8,8,6,0,255,128, + 128,64,64,32,32,16,16,3,8,8,6,1,255,224,96,96, + 96,96,96,96,224,5,3,3,6,0,4,32,112,216,6,1, + 1,6,0,254,252,2,2,2,6,2,6,128,64,6,5,5, + 6,0,0,112,216,120,216,252,6,7,7,6,255,0,224,96, + 120,108,108,108,248,5,5,5,6,0,0,112,216,192,216,112, + 6,7,7,6,0,0,56,24,120,216,216,216,124,5,5,5, + 6,0,0,112,216,248,192,120,5,7,7,6,0,0,56,96, + 248,96,96,96,248,6,7,7,6,0,254,108,216,216,216,120, + 24,240,6,7,7,6,255,0,224,96,120,108,108,108,108,6, + 7,7,6,0,0,48,0,240,48,48,48,252,4,9,9,6, + 0,254,48,0,240,48,48,48,48,48,224,7,7,7,6,255, + 0,224,96,108,120,112,120,110,6,7,7,6,0,0,240,48, + 48,48,48,48,252,6,5,5,6,255,0,248,124,84,84,84, + 6,5,5,6,255,0,216,108,108,108,108,5,5,5,6,0, + 0,112,216,216,216,112,6,7,7,6,255,254,248,108,108,108, + 120,96,240,6,7,7,6,0,254,108,216,216,216,120,24,60, + 6,5,5,6,0,0,220,116,96,96,240,6,5,5,6,0, + 0,120,224,120,28,248,6,7,7,6,0,0,96,96,248,96, + 96,108,56,7,5,5,6,255,0,236,108,108,108,62,6,5, + 5,6,255,0,236,108,56,56,16,7,5,5,6,255,0,214, + 84,124,60,40,6,5,5,6,0,0,236,120,48,120,220,7, + 7,7,6,255,254,238,108,108,40,56,48,224,5,5,5,6, + 0,0,248,176,96,216,248,4,8,8,6,1,255,48,96,96, + 192,96,96,96,48,1,7,7,6,2,255,128,128,128,128,128, + 128,128,4,8,8,6,0,255,192,96,96,48,96,96,96,192, + 5,2,2,6,0,3,104,176,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,6,0,1,2, + 7,7,6,1,254,192,0,192,192,192,192,192,5,8,8,6, + 0,255,32,32,120,200,192,120,32,32,6,7,7,6,0,0, + 56,104,32,248,32,100,248,5,5,5,6,0,1,136,112,80, + 112,136,6,7,7,6,0,0,204,72,252,48,252,48,120,1, + 9,9,6,2,254,128,128,128,128,0,128,128,128,128,5,8, + 8,6,0,255,120,72,96,144,72,48,144,240,3,1,1,6, + 1,5,160,6,7,7,6,0,0,48,72,180,164,180,72,48, + 4,5,5,6,1,2,224,16,208,0,240,7,5,5,6,255, + 0,54,108,216,108,54,5,3,3,6,0,2,248,8,8,5, + 1,1,6,0,3,248,7,7,7,6,0,0,56,68,186,178, + 170,68,56,4,1,1,6,0,5,240,4,3,3,6,0,4, + 96,144,96,5,6,6,6,0,0,32,32,248,32,0,248,3, + 4,4,6,1,3,96,160,64,224,3,4,4,6,1,3,224, + 64,32,192,2,2,2,6,2,5,64,128,7,7,7,6,255, + 254,236,108,108,108,126,64,64,6,8,8,6,0,255,124,168, + 168,104,40,40,40,108,2,1,1,6,1,3,192,3,3,3, + 6,1,254,64,32,192,3,4,4,6,1,3,192,64,64,224, + 4,5,5,6,1,2,96,144,96,0,240,7,5,5,6,255, + 0,216,108,54,108,216,7,7,7,6,255,0,192,68,72,244, + 44,94,4,7,7,7,6,255,0,192,68,72,246,42,68,14, + 7,7,7,6,255,0,224,68,40,212,44,94,4,5,7,7, + 6,0,254,48,0,48,48,96,200,112,7,9,9,6,255,0, + 32,16,0,120,56,40,124,108,238,7,9,9,6,255,0,16, + 32,0,120,56,40,124,108,238,7,9,9,6,255,0,16,40, + 0,120,56,40,124,108,238,7,9,9,6,255,0,52,72,0, + 120,56,40,124,108,238,7,8,8,6,255,0,40,0,120,56, + 40,124,108,238,7,9,9,6,255,0,48,72,48,120,56,40, + 124,108,238,7,6,6,6,255,0,126,58,108,120,218,222,5, + 8,8,6,0,254,120,216,192,192,216,112,16,96,6,9,9, + 6,255,0,32,16,0,252,100,120,96,108,252,6,9,9,6, + 255,0,16,32,0,252,100,120,96,108,252,6,9,9,6,255, + 0,32,80,0,252,100,120,96,108,252,6,8,8,6,255,0, + 80,0,252,100,120,96,108,252,4,9,9,6,0,0,64,32, + 0,240,96,96,96,96,240,4,9,9,6,0,0,32,64,0, + 240,96,96,96,96,240,4,9,9,6,0,0,64,160,0,240, + 96,96,96,96,240,4,8,8,6,0,0,160,0,240,96,96, + 96,96,240,6,6,6,6,255,0,248,108,244,100,108,248,7, + 9,9,6,255,0,52,72,0,238,100,116,124,108,236,5,9, + 9,6,0,0,64,32,0,112,216,216,216,216,112,5,9,9, + 6,0,0,32,64,0,112,216,216,216,216,112,5,9,9,6, + 0,0,32,80,0,112,216,216,216,216,112,5,9,9,6,0, + 0,104,144,0,112,216,216,216,216,112,5,8,8,6,0,0, + 80,0,112,216,216,216,216,112,5,5,5,6,0,1,136,80, + 32,80,136,7,6,6,6,255,0,58,108,124,108,108,184,7, + 9,9,6,255,0,32,16,0,238,108,108,108,108,56,7,9, + 9,6,255,0,8,16,0,238,108,108,108,108,56,7,9,9, + 6,255,0,16,40,0,238,108,108,108,108,56,7,8,8,6, + 255,0,40,0,238,108,108,108,108,56,7,9,9,6,255,0, + 4,8,0,230,102,60,24,24,60,6,6,6,6,255,0,224, + 120,108,108,120,224,7,6,6,6,255,0,56,104,124,102,102, + 236,6,8,8,6,0,0,32,16,0,112,152,120,216,252,6, + 8,8,6,0,0,16,32,0,112,152,120,216,252,6,8,8, + 6,0,0,32,80,0,112,152,120,216,252,6,8,8,6,0, + 0,104,144,0,112,152,120,216,252,6,7,7,6,0,0,80, + 0,112,152,120,216,252,6,9,9,6,0,0,48,72,48,0, + 112,152,120,216,252,6,5,5,6,255,0,108,180,124,176,220, + 5,7,7,6,0,254,112,216,192,216,112,16,96,5,8,8, + 6,0,0,64,32,0,112,216,248,192,120,5,8,8,6,0, + 0,32,64,0,112,216,248,192,120,5,8,8,6,0,0,32, + 80,0,112,216,248,192,120,5,7,7,6,0,0,80,0,112, + 216,248,192,120,6,8,8,6,0,0,32,16,0,112,48,48, + 48,252,6,8,8,6,0,0,16,32,0,112,48,48,48,252, + 6,8,8,6,0,0,32,80,0,112,48,48,48,252,6,7, + 7,6,0,0,80,0,112,48,48,48,252,5,8,8,6,0, + 0,208,96,176,120,216,216,216,112,7,8,8,6,255,0,52, + 72,0,216,108,108,108,110,5,8,8,6,0,0,64,32,0, + 112,216,216,216,112,5,8,8,6,0,0,32,64,0,112,216, + 216,216,112,5,8,8,6,0,0,32,80,0,112,216,216,216, + 112,5,8,8,6,0,0,104,144,0,112,216,216,216,112,5, + 7,7,6,0,0,80,0,112,216,216,216,112,5,5,5,6, + 0,1,32,0,248,0,32,5,7,7,6,0,255,8,112,216, + 248,216,112,128,7,8,8,6,255,0,32,16,0,236,108,108, + 108,62,7,8,8,6,255,0,16,32,0,236,108,108,108,62, + 7,8,8,6,255,0,16,40,0,236,108,108,108,62,7,7, + 7,6,255,0,40,0,236,108,108,108,62,7,10,10,6,255, + 254,8,16,0,238,108,108,40,56,48,240,6,9,9,6,255, + 254,224,96,120,108,108,108,120,96,240,7,9,9,6,255,254, + 40,0,238,108,108,40,56,48,240}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w=12 h=16 x=-3 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB08r[1145] U8G_SECTION(".progmem.u8g_font_courB08r") = { + 0,12,16,253,252,6,1,146,3,13,32,127,254,8,254,7, + 254,0,0,0,6,0,1,2,6,6,6,1,0,192,192,192, + 192,0,192,3,3,3,6,1,3,160,160,160,5,8,8,6, + 0,255,80,80,248,80,80,248,80,80,5,9,9,6,0,255, + 32,120,200,240,120,24,216,240,32,5,7,7,6,0,0,224, + 168,240,32,120,168,56,6,6,6,6,255,0,56,96,48,124, + 216,124,1,3,3,6,2,3,128,128,128,3,8,8,6,1, + 255,32,64,192,192,192,192,64,32,3,8,8,6,1,255,128, + 64,96,96,96,96,64,128,4,4,4,6,0,3,32,240,96, + 144,5,5,5,6,0,1,32,32,248,32,32,3,3,3,6, + 1,254,96,64,128,5,1,1,6,0,3,248,2,1,1,6, + 1,0,192,4,8,8,6,1,255,16,16,32,32,64,64,128, + 128,5,7,7,6,0,0,112,216,216,216,216,216,112,6,7, + 7,6,0,0,48,240,48,48,48,48,252,5,7,7,6,0, + 0,112,216,24,48,96,216,248,5,7,7,6,0,0,112,216, + 24,112,24,216,112,6,7,7,6,0,0,24,56,88,216,252, + 24,24,5,7,7,6,0,0,248,192,240,216,24,152,240,5, + 7,7,6,0,0,112,216,192,240,216,216,112,5,7,7,6, + 0,0,248,216,24,48,48,96,96,5,7,7,6,0,0,112, + 216,216,112,216,216,112,5,7,7,6,0,0,112,216,216,120, + 24,216,112,2,4,4,6,1,0,192,0,0,192,3,6,6, + 6,0,254,96,0,0,96,64,128,4,5,5,6,0,1,48, + 96,192,96,48,4,3,3,6,0,2,240,0,240,4,5,5, + 6,1,1,192,96,48,96,192,5,6,6,6,0,0,112,152, + 48,96,0,96,6,8,8,6,0,255,112,200,152,168,168,156, + 192,112,7,6,6,6,255,0,120,56,40,124,108,238,6,6, + 6,6,255,0,248,108,120,108,108,248,5,6,6,6,0,0, + 120,216,192,192,216,112,6,6,6,6,255,0,248,108,108,108, + 108,248,6,6,6,6,255,0,252,96,120,96,108,252,6,6, + 6,6,255,0,252,96,120,96,96,240,5,6,6,6,0,0, + 112,216,192,248,216,120,7,6,6,6,255,0,238,108,124,108, + 108,238,4,6,6,6,0,0,240,96,96,96,96,240,6,6, + 6,6,255,0,60,24,24,216,216,112,7,6,6,6,255,0, + 236,104,112,120,108,246,6,6,6,6,255,0,240,96,96,96, + 108,252,6,6,6,6,255,0,196,108,108,124,84,212,7,6, + 6,6,255,0,238,116,116,108,108,228,5,6,6,6,0,0, + 112,216,216,216,216,112,6,6,6,6,255,0,248,108,108,120, + 96,240,5,7,7,6,0,255,112,216,216,216,216,112,24,7, + 6,6,6,255,0,248,108,108,120,108,246,5,6,6,6,0, + 0,120,200,240,56,152,240,6,6,6,6,255,0,252,180,48, + 48,48,120,7,6,6,6,255,0,238,108,108,108,108,56,7, + 6,6,6,255,0,238,108,40,56,56,16,7,6,6,6,255, + 0,214,84,84,124,56,40,6,6,6,6,0,0,204,120,48, + 48,120,204,7,6,6,6,255,0,230,102,60,24,24,60,5, + 6,6,6,0,0,248,216,48,96,216,248,3,8,8,6,1, + 255,224,192,192,192,192,192,192,224,4,8,8,6,0,255,128, + 128,64,64,32,32,16,16,3,8,8,6,1,255,224,96,96, + 96,96,96,96,224,5,3,3,6,0,4,32,112,216,6,1, + 1,6,0,254,252,2,2,2,6,2,6,128,64,6,5,5, + 6,0,0,112,216,120,216,252,6,7,7,6,255,0,224,96, + 120,108,108,108,248,5,5,5,6,0,0,112,216,192,216,112, + 6,7,7,6,0,0,56,24,120,216,216,216,124,5,5,5, + 6,0,0,112,216,248,192,120,5,7,7,6,0,0,56,96, + 248,96,96,96,248,6,7,7,6,0,254,108,216,216,216,120, + 24,240,6,7,7,6,255,0,224,96,120,108,108,108,108,6, + 7,7,6,0,0,48,0,240,48,48,48,252,4,9,9,6, + 0,254,48,0,240,48,48,48,48,48,224,7,7,7,6,255, + 0,224,96,108,120,112,120,110,6,7,7,6,0,0,240,48, + 48,48,48,48,252,6,5,5,6,255,0,248,124,84,84,84, + 6,5,5,6,255,0,216,108,108,108,108,5,5,5,6,0, + 0,112,216,216,216,112,6,7,7,6,255,254,248,108,108,108, + 120,96,240,6,7,7,6,0,254,108,216,216,216,120,24,60, + 6,5,5,6,0,0,220,116,96,96,240,6,5,5,6,0, + 0,120,224,120,28,248,6,7,7,6,0,0,96,96,248,96, + 96,108,56,7,5,5,6,255,0,236,108,108,108,62,6,5, + 5,6,255,0,236,108,56,56,16,7,5,5,6,255,0,214, + 84,124,60,40,6,5,5,6,0,0,236,120,48,120,220,7, + 7,7,6,255,254,238,108,108,40,56,48,224,5,5,5,6, + 0,0,248,176,96,216,248,4,8,8,6,1,255,48,96,96, + 192,96,96,96,48,1,7,7,6,2,255,128,128,128,128,128, + 128,128,4,8,8,6,0,255,192,96,96,48,96,96,96,192, + 5,2,2,6,0,3,104,176,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 3 y= 8 dx= 9 dy= 0 ascent=12 len=26 + Font Bounding box w=13 h=21 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB10[3355] U8G_SECTION(".progmem.u8g_font_courB10") = { + 0,13,21,254,250,9,1,222,4,32,32,255,253,12,252,10, + 253,0,0,0,9,0,1,2,9,9,9,3,0,192,192,192, + 192,192,128,0,192,192,5,4,4,9,2,6,216,216,216,72, + 7,11,11,9,1,255,40,40,40,254,40,40,254,40,40,40, + 40,6,12,12,9,1,255,48,48,124,204,192,240,60,12,204, + 248,48,48,7,10,10,9,1,0,96,144,146,108,16,96,152, + 36,36,24,7,8,8,9,1,0,56,96,96,48,122,204,204, + 118,2,4,4,9,3,5,192,192,192,64,4,11,11,9,2, + 254,48,96,96,192,192,192,192,192,96,96,48,4,11,11,9, + 2,254,192,96,96,48,48,48,48,48,96,96,192,5,5,5, + 9,2,4,32,168,248,112,216,7,7,7,9,1,1,16,16, + 16,254,16,16,16,3,4,4,9,2,254,96,96,192,128,6, + 1,1,9,1,4,252,2,2,2,9,3,0,192,192,7,12, + 12,9,0,254,6,6,12,12,24,24,48,48,96,96,192,192, + 7,10,10,9,1,0,56,108,198,198,198,198,198,198,108,56, + 6,10,10,9,2,0,48,240,48,48,48,48,48,48,48,252, + 6,10,10,9,1,0,120,204,204,12,12,24,48,96,192,252, + 6,10,10,9,1,0,120,204,12,12,56,12,12,12,204,120, + 7,10,10,9,1,0,12,28,60,44,76,204,140,254,12,30, + 6,10,10,9,1,0,252,192,192,248,204,12,12,12,204,120, + 6,10,10,9,1,0,60,96,192,216,236,204,204,204,204,120, + 6,10,10,9,1,0,252,140,12,24,24,24,24,48,48,48, + 6,10,10,9,1,0,120,204,204,204,120,204,204,204,204,120, + 6,10,10,9,1,0,120,204,204,204,204,204,124,12,24,240, + 2,7,7,9,3,0,192,192,0,0,0,192,192,3,9,9, + 9,2,254,96,96,0,0,0,96,96,192,128,8,7,7,9, + 0,1,7,28,112,192,112,28,7,7,4,4,9,1,2,254, + 0,0,254,8,7,7,9,1,1,224,56,14,3,14,56,224, + 6,9,9,9,1,0,248,204,140,12,56,48,0,48,48,7, + 9,9,9,1,0,120,196,156,180,164,180,158,192,120,9,9, + 18,9,0,0,124,0,28,0,54,0,54,0,34,0,99,0, + 127,0,99,0,247,128,8,9,9,9,0,0,254,99,99,99, + 126,99,99,99,254,7,9,9,9,1,0,58,102,198,192,192, + 192,192,102,60,8,9,9,9,0,0,252,102,99,99,99,99, + 99,102,252,8,9,9,9,0,0,255,99,99,104,120,104,99, + 99,255,8,9,9,9,0,0,255,99,99,104,120,104,96,96, + 248,9,9,18,9,0,0,61,0,103,0,195,0,192,0,192, + 0,207,128,195,0,99,0,63,0,9,9,18,9,0,0,247, + 128,99,0,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,6,9,9,9,1,0,252,48,48,48,48,48,48,48,252, + 9,9,18,9,0,0,31,128,6,0,6,0,6,0,6,0, + 198,0,198,0,198,0,124,0,9,9,18,9,0,0,247,0, + 102,0,108,0,120,0,124,0,102,0,102,0,99,0,243,128, + 8,9,9,9,0,0,248,96,96,96,96,99,99,99,255,9, + 9,18,9,0,0,227,128,99,0,119,0,119,0,107,0,107, + 0,99,0,99,0,247,128,9,9,18,9,0,0,231,128,99, + 0,115,0,115,0,107,0,107,0,103,0,103,0,243,0,8, + 9,9,9,0,0,60,102,195,195,195,195,195,102,60,8,9, + 9,9,0,0,254,99,99,99,102,124,96,96,248,8,11,11, + 9,0,254,60,102,195,195,195,195,195,102,60,25,110,9,9, + 18,9,0,0,254,0,99,0,99,0,99,0,102,0,124,0, + 102,0,99,0,243,128,7,9,9,9,1,0,122,206,198,224, + 124,14,198,230,188,8,9,9,9,0,0,255,219,219,24,24, + 24,24,24,60,9,9,18,9,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,9,9,18,9, + 0,0,247,128,99,0,99,0,99,0,54,0,54,0,54,0, + 28,0,28,0,9,9,18,9,0,0,247,128,99,0,107,0, + 107,0,107,0,119,0,119,0,99,0,99,0,8,9,9,9, + 0,0,231,102,102,60,24,60,102,102,231,10,9,18,9,255, + 0,243,192,97,128,51,0,51,0,30,0,12,0,12,0,12, + 0,63,0,7,9,9,9,1,0,254,198,204,24,24,48,102, + 198,254,4,11,11,9,2,254,240,192,192,192,192,192,192,192, + 192,192,240,7,12,12,9,1,254,192,192,96,96,48,48,24, + 24,12,12,6,6,4,11,11,9,2,254,240,48,48,48,48, + 48,48,48,48,48,240,5,4,4,9,2,5,32,112,216,136, + 9,1,2,9,0,254,255,128,3,2,2,9,2,7,192,96, + 8,7,7,9,0,0,124,6,6,126,198,206,119,8,10,10, + 9,0,0,224,96,96,110,115,99,99,99,115,238,8,7,7, + 9,0,0,61,103,195,192,192,99,62,8,10,10,9,0,0, + 14,6,6,118,206,198,198,198,206,119,8,7,7,9,0,0, + 60,102,195,255,192,103,62,7,10,10,9,1,0,30,48,48, + 252,48,48,48,48,48,252,8,10,10,9,0,253,119,206,198, + 198,198,206,118,6,6,124,9,10,20,9,0,0,224,0,96, + 0,96,0,110,0,115,0,99,0,99,0,99,0,99,0,247, + 128,6,10,10,9,1,0,48,48,0,240,48,48,48,48,48, + 252,5,13,13,9,1,253,24,24,0,120,24,24,24,24,24, + 24,24,24,240,8,10,10,9,0,0,224,96,96,103,108,120, + 120,108,102,231,6,10,10,9,1,0,240,48,48,48,48,48, + 48,48,48,252,9,7,14,9,0,0,223,0,109,128,109,128, + 109,128,109,128,109,128,237,128,9,7,14,9,0,0,238,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,7,7,9, + 0,0,60,102,195,195,195,102,60,8,10,10,9,0,253,238, + 115,99,99,99,115,110,96,96,240,8,10,10,9,0,253,119, + 206,198,198,198,206,118,6,6,15,7,7,7,9,1,0,238, + 112,96,96,96,96,252,7,7,7,9,1,0,126,198,192,124, + 6,198,252,7,9,9,9,1,0,96,96,252,96,96,96,96, + 102,60,9,7,14,9,0,0,231,0,99,0,99,0,99,0, + 99,0,103,0,59,128,9,7,14,9,0,0,247,128,99,0, + 99,0,54,0,54,0,28,0,28,0,10,7,14,9,255,0, + 225,192,109,128,109,128,109,128,45,0,51,0,51,0,8,7, + 7,9,0,0,231,102,60,24,60,102,231,9,10,20,9,0, + 253,227,128,99,0,99,0,54,0,54,0,28,0,28,0,24, + 0,24,0,124,0,6,7,7,9,1,0,252,140,24,48,96, + 196,252,4,11,11,9,2,254,48,96,96,96,96,192,96,96, + 96,96,48,2,11,11,9,3,254,192,192,192,192,192,192,192, + 192,192,192,192,4,11,11,9,2,254,192,96,96,96,96,48, + 96,96,96,96,192,6,3,3,9,1,3,100,252,152,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,1,2,9,9,9,3,254,192,192,0,128,192, + 192,192,192,192,6,10,10,9,1,255,48,48,124,204,192,192, + 204,120,48,48,7,9,9,9,1,0,60,102,96,96,248,96, + 96,102,252,7,6,6,9,1,1,198,124,198,198,124,198,10, + 9,18,9,0,0,243,192,97,128,51,0,30,0,63,0,12, + 0,63,0,12,0,63,0,2,11,11,9,3,254,192,192,192, + 192,192,0,192,192,192,192,192,8,11,11,9,0,255,62,98, + 96,240,140,227,57,15,6,70,124,4,2,2,9,2,8,144, + 144,9,8,16,9,0,1,28,0,99,0,205,128,209,128,209, + 128,205,128,99,0,28,0,5,7,7,9,2,2,112,24,120, + 216,104,0,248,7,5,5,9,1,1,54,108,216,108,54,7, + 3,3,9,1,2,254,2,2,6,1,1,9,1,4,252,9, + 8,16,9,0,1,62,0,99,0,217,128,213,128,217,128,213, + 128,99,0,62,0,4,1,1,9,2,8,240,4,4,4,9, + 2,5,96,144,144,96,7,7,7,9,1,1,16,16,254,16, + 16,0,254,5,6,6,9,2,4,112,152,24,48,96,248,5, + 6,6,9,2,4,112,152,48,24,152,112,3,2,2,9,3, + 7,96,192,9,10,20,9,0,253,231,0,99,0,99,0,99, + 0,99,0,103,0,123,128,96,0,96,0,96,0,7,11,11, + 9,1,255,126,212,148,148,212,116,20,20,20,20,126,2,2, + 2,9,3,3,192,192,3,4,4,9,2,253,64,96,32,224, + 4,6,6,9,3,4,96,224,96,96,96,240,5,7,7,9, + 2,2,112,216,136,216,112,0,248,7,5,5,9,1,1,216, + 108,54,108,216,9,10,20,9,0,0,96,0,224,128,97,0, + 98,0,101,0,251,0,23,0,43,0,79,128,131,0,9,10, + 20,9,0,0,96,0,224,128,97,0,98,0,103,0,253,128, + 17,128,35,0,70,0,15,128,10,10,20,9,255,0,112,0, + 152,64,48,128,25,0,154,128,117,128,11,128,21,128,39,192, + 65,128,6,9,9,9,1,254,48,48,0,48,112,192,196,204, + 124,9,12,24,9,0,0,24,0,12,0,0,0,124,0,28, + 0,54,0,54,0,34,0,99,0,127,0,99,0,247,128,9, + 12,24,9,0,0,12,0,24,0,0,0,124,0,28,0,54, + 0,54,0,34,0,99,0,127,0,99,0,247,128,9,12,24, + 9,0,0,28,0,54,0,0,0,124,0,28,0,54,0,54, + 0,34,0,99,0,127,0,99,0,247,128,9,12,24,9,0, + 0,26,0,44,0,0,0,124,0,28,0,54,0,54,0,34, + 0,99,0,127,0,99,0,247,128,9,12,24,9,0,0,36, + 0,36,0,0,0,124,0,28,0,54,0,54,0,34,0,99, + 0,127,0,99,0,247,128,9,12,24,9,0,0,24,0,36, + 0,24,0,126,0,28,0,54,0,54,0,34,0,99,0,127, + 0,99,0,247,128,9,9,18,9,0,0,63,128,28,128,28, + 0,61,0,47,0,109,0,124,0,76,128,223,128,7,13,13, + 9,1,252,58,110,198,192,192,192,192,102,60,16,24,8,56, + 8,12,12,9,0,0,24,12,0,255,99,99,104,120,104,99, + 99,255,8,12,12,9,0,0,12,24,0,255,99,99,104,120, + 104,99,99,255,8,12,12,9,0,0,28,54,0,255,99,99, + 104,120,104,99,99,255,8,12,12,9,0,0,36,36,0,255, + 99,99,104,120,104,99,99,255,6,12,12,9,1,0,96,48, + 0,252,48,48,48,48,48,48,48,252,6,12,12,9,1,0, + 24,48,0,252,48,48,48,48,48,48,48,252,6,12,12,9, + 1,0,56,108,0,252,48,48,48,48,48,48,48,252,6,12, + 12,9,1,0,72,72,0,252,48,48,48,48,48,48,48,252, + 8,9,9,9,0,0,252,102,99,99,243,99,99,102,252,9, + 12,24,9,0,0,26,0,44,0,0,0,231,128,99,0,115, + 0,115,0,107,0,107,0,103,0,103,0,243,0,8,12,12, + 9,0,0,48,24,0,60,102,195,195,195,195,195,102,60,8, + 12,12,9,0,0,12,24,0,60,102,195,195,195,195,195,102, + 60,8,12,12,9,0,0,56,108,0,60,102,195,195,195,195, + 195,102,60,8,12,12,9,0,0,52,88,0,60,102,195,195, + 195,195,195,102,60,8,12,12,9,0,0,36,36,0,60,102, + 195,195,195,195,195,102,60,6,7,7,9,1,1,132,204,120, + 48,120,204,132,8,10,10,9,0,0,1,62,102,203,203,211, + 211,227,102,188,9,12,24,9,0,0,24,0,12,0,0,0, + 247,128,99,0,99,0,99,0,99,0,99,0,99,0,99,0, + 62,0,9,12,24,9,0,0,12,0,24,0,0,0,247,128, + 99,0,99,0,99,0,99,0,99,0,99,0,99,0,62,0, + 9,12,24,9,0,0,28,0,54,0,0,0,247,128,99,0, + 99,0,99,0,99,0,99,0,99,0,99,0,62,0,9,12, + 24,9,0,0,18,0,18,0,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,10,12,24,9, + 255,0,6,0,12,0,0,0,243,192,97,128,51,0,51,0, + 30,0,12,0,12,0,12,0,63,0,8,9,9,9,0,0, + 240,96,126,99,99,102,124,96,240,8,9,9,9,0,0,60, + 102,102,108,102,99,99,107,238,8,10,10,9,0,0,48,24, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,12,24, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,56,108, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,52,88, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,36,36, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,24,36, + 24,124,6,6,126,198,206,119,9,7,14,9,0,0,119,0, + 29,128,8,128,127,128,200,0,205,128,119,0,8,11,11,9, + 0,252,61,103,195,192,192,99,62,16,24,8,56,8,10,10, + 9,0,0,48,24,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,12,24,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,28,54,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,36,36,0,60,102,195,255,192,103,62,6,10,10, + 9,1,0,96,48,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,24,48,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,112,216,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,72,72,0,240,48,48,48,48,48,252,8,10,10, + 9,0,0,236,56,204,62,102,195,195,195,102,60,9,10,20, + 9,0,0,26,0,44,0,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,247,128,8,10,10,9,0,0,48,24,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,12,24,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,28,54,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,52,88,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,36,36,0, + 60,102,195,195,195,102,60,8,7,7,9,0,1,24,24,0, + 255,0,24,24,8,7,7,9,0,0,61,102,207,219,243,102, + 188,9,10,20,9,0,0,24,0,12,0,0,0,231,0,99, + 0,99,0,99,0,99,0,103,0,59,128,9,10,20,9,0, + 0,12,0,24,0,0,0,231,0,99,0,99,0,99,0,99, + 0,103,0,59,128,9,10,20,9,0,0,28,0,54,0,0, + 0,231,0,99,0,99,0,99,0,99,0,103,0,59,128,9, + 10,20,9,0,0,36,0,36,0,0,0,231,0,99,0,99, + 0,99,0,99,0,103,0,59,128,9,13,26,9,0,253,6, + 0,12,0,0,0,227,128,99,0,99,0,54,0,54,0,28, + 0,28,0,24,0,24,0,124,0,8,12,12,9,0,253,224, + 96,110,115,99,99,99,115,110,96,96,240,9,13,26,9,0, + 253,18,0,18,0,0,0,227,128,99,0,99,0,54,0,54, + 0,28,0,28,0,24,0,24,0,124,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 3 y= 7 dx= 9 dy= 0 ascent=11 len=20 + Font Bounding box w=13 h=21 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB10r[1551] U8G_SECTION(".progmem.u8g_font_courB10r") = { + 0,13,21,254,250,9,1,222,4,32,32,127,253,11,253,10, + 253,0,0,0,9,0,1,2,9,9,9,3,0,192,192,192, + 192,192,128,0,192,192,5,4,4,9,2,6,216,216,216,72, + 7,11,11,9,1,255,40,40,40,254,40,40,254,40,40,40, + 40,6,12,12,9,1,255,48,48,124,204,192,240,60,12,204, + 248,48,48,7,10,10,9,1,0,96,144,146,108,16,96,152, + 36,36,24,7,8,8,9,1,0,56,96,96,48,122,204,204, + 118,2,4,4,9,3,5,192,192,192,64,4,11,11,9,2, + 254,48,96,96,192,192,192,192,192,96,96,48,4,11,11,9, + 2,254,192,96,96,48,48,48,48,48,96,96,192,5,5,5, + 9,2,4,32,168,248,112,216,7,7,7,9,1,1,16,16, + 16,254,16,16,16,3,4,4,9,2,254,96,96,192,128,6, + 1,1,9,1,4,252,2,2,2,9,3,0,192,192,7,12, + 12,9,0,254,6,6,12,12,24,24,48,48,96,96,192,192, + 7,10,10,9,1,0,56,108,198,198,198,198,198,198,108,56, + 6,10,10,9,2,0,48,240,48,48,48,48,48,48,48,252, + 6,10,10,9,1,0,120,204,204,12,12,24,48,96,192,252, + 6,10,10,9,1,0,120,204,12,12,56,12,12,12,204,120, + 7,10,10,9,1,0,12,28,60,44,76,204,140,254,12,30, + 6,10,10,9,1,0,252,192,192,248,204,12,12,12,204,120, + 6,10,10,9,1,0,60,96,192,216,236,204,204,204,204,120, + 6,10,10,9,1,0,252,140,12,24,24,24,24,48,48,48, + 6,10,10,9,1,0,120,204,204,204,120,204,204,204,204,120, + 6,10,10,9,1,0,120,204,204,204,204,204,124,12,24,240, + 2,7,7,9,3,0,192,192,0,0,0,192,192,3,9,9, + 9,2,254,96,96,0,0,0,96,96,192,128,8,7,7,9, + 0,1,7,28,112,192,112,28,7,7,4,4,9,1,2,254, + 0,0,254,8,7,7,9,1,1,224,56,14,3,14,56,224, + 6,9,9,9,1,0,248,204,140,12,56,48,0,48,48,7, + 9,9,9,1,0,120,196,156,180,164,180,158,192,120,9,9, + 18,9,0,0,124,0,28,0,54,0,54,0,34,0,99,0, + 127,0,99,0,247,128,8,9,9,9,0,0,254,99,99,99, + 126,99,99,99,254,7,9,9,9,1,0,58,102,198,192,192, + 192,192,102,60,8,9,9,9,0,0,252,102,99,99,99,99, + 99,102,252,8,9,9,9,0,0,255,99,99,104,120,104,99, + 99,255,8,9,9,9,0,0,255,99,99,104,120,104,96,96, + 248,9,9,18,9,0,0,61,0,103,0,195,0,192,0,192, + 0,207,128,195,0,99,0,63,0,9,9,18,9,0,0,247, + 128,99,0,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,6,9,9,9,1,0,252,48,48,48,48,48,48,48,252, + 9,9,18,9,0,0,31,128,6,0,6,0,6,0,6,0, + 198,0,198,0,198,0,124,0,9,9,18,9,0,0,247,0, + 102,0,108,0,120,0,124,0,102,0,102,0,99,0,243,128, + 8,9,9,9,0,0,248,96,96,96,96,99,99,99,255,9, + 9,18,9,0,0,227,128,99,0,119,0,119,0,107,0,107, + 0,99,0,99,0,247,128,9,9,18,9,0,0,231,128,99, + 0,115,0,115,0,107,0,107,0,103,0,103,0,243,0,8, + 9,9,9,0,0,60,102,195,195,195,195,195,102,60,8,9, + 9,9,0,0,254,99,99,99,102,124,96,96,248,8,11,11, + 9,0,254,60,102,195,195,195,195,195,102,60,25,110,9,9, + 18,9,0,0,254,0,99,0,99,0,99,0,102,0,124,0, + 102,0,99,0,243,128,7,9,9,9,1,0,122,206,198,224, + 124,14,198,230,188,8,9,9,9,0,0,255,219,219,24,24, + 24,24,24,60,9,9,18,9,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,9,9,18,9, + 0,0,247,128,99,0,99,0,99,0,54,0,54,0,54,0, + 28,0,28,0,9,9,18,9,0,0,247,128,99,0,107,0, + 107,0,107,0,119,0,119,0,99,0,99,0,8,9,9,9, + 0,0,231,102,102,60,24,60,102,102,231,10,9,18,9,255, + 0,243,192,97,128,51,0,51,0,30,0,12,0,12,0,12, + 0,63,0,7,9,9,9,1,0,254,198,204,24,24,48,102, + 198,254,4,11,11,9,2,254,240,192,192,192,192,192,192,192, + 192,192,240,7,12,12,9,1,254,192,192,96,96,48,48,24, + 24,12,12,6,6,4,11,11,9,2,254,240,48,48,48,48, + 48,48,48,48,48,240,5,4,4,9,2,5,32,112,216,136, + 9,1,2,9,0,254,255,128,3,2,2,9,2,7,192,96, + 8,7,7,9,0,0,124,6,6,126,198,206,119,8,10,10, + 9,0,0,224,96,96,110,115,99,99,99,115,238,8,7,7, + 9,0,0,61,103,195,192,192,99,62,8,10,10,9,0,0, + 14,6,6,118,206,198,198,198,206,119,8,7,7,9,0,0, + 60,102,195,255,192,103,62,7,10,10,9,1,0,30,48,48, + 252,48,48,48,48,48,252,8,10,10,9,0,253,119,206,198, + 198,198,206,118,6,6,124,9,10,20,9,0,0,224,0,96, + 0,96,0,110,0,115,0,99,0,99,0,99,0,99,0,247, + 128,6,10,10,9,1,0,48,48,0,240,48,48,48,48,48, + 252,5,13,13,9,1,253,24,24,0,120,24,24,24,24,24, + 24,24,24,240,8,10,10,9,0,0,224,96,96,103,108,120, + 120,108,102,231,6,10,10,9,1,0,240,48,48,48,48,48, + 48,48,48,252,9,7,14,9,0,0,223,0,109,128,109,128, + 109,128,109,128,109,128,237,128,9,7,14,9,0,0,238,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,7,7,9, + 0,0,60,102,195,195,195,102,60,8,10,10,9,0,253,238, + 115,99,99,99,115,110,96,96,240,8,10,10,9,0,253,119, + 206,198,198,198,206,118,6,6,15,7,7,7,9,1,0,238, + 112,96,96,96,96,252,7,7,7,9,1,0,126,198,192,124, + 6,198,252,7,9,9,9,1,0,96,96,252,96,96,96,96, + 102,60,9,7,14,9,0,0,231,0,99,0,99,0,99,0, + 99,0,103,0,59,128,9,7,14,9,0,0,247,128,99,0, + 99,0,54,0,54,0,28,0,28,0,10,7,14,9,255,0, + 225,192,109,128,109,128,109,128,45,0,51,0,51,0,8,7, + 7,9,0,0,231,102,60,24,60,102,231,9,10,20,9,0, + 253,227,128,99,0,99,0,54,0,54,0,28,0,28,0,24, + 0,24,0,124,0,6,7,7,9,1,0,252,140,24,48,96, + 196,252,4,11,11,9,2,254,48,96,96,96,96,192,96,96, + 96,96,48,2,11,11,9,3,254,192,192,192,192,192,192,192, + 192,192,192,192,4,11,11,9,2,254,192,96,96,96,96,48, + 96,96,96,96,192,6,3,3,9,1,3,100,252,152,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=11 h=14 x= 4 y= 9 dx=10 dy= 0 ascent=14 len=28 + Font Bounding box w=16 h=24 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB12[3959] U8G_SECTION(".progmem.u8g_font_courB12") = { + 0,16,24,253,250,10,2,51,4,246,32,255,253,14,253,11, + 253,0,0,0,10,0,1,2,11,11,10,3,0,192,192,192, + 192,192,192,192,192,0,192,192,6,5,5,10,2,6,204,204, + 204,204,204,9,12,24,10,0,255,54,0,54,0,54,0,54, + 0,255,128,54,0,54,0,255,128,54,0,54,0,54,0,54, + 0,7,13,13,10,1,255,24,24,126,198,192,224,124,14,6, + 198,252,48,48,8,11,11,10,1,0,120,204,204,120,7,60, + 224,30,51,51,30,7,9,9,10,1,0,56,108,96,48,118, + 222,204,204,126,2,5,5,10,4,6,192,192,192,192,192,4, + 13,13,10,3,254,48,96,96,96,192,192,192,192,192,96,96, + 96,48,4,13,13,10,2,254,192,96,96,96,48,48,48,48, + 48,96,96,96,192,8,6,6,10,1,5,24,24,255,60,60, + 102,8,8,8,10,1,1,24,24,24,255,255,24,24,24,3, + 5,5,10,3,253,224,224,96,192,128,7,2,2,10,1,4, + 254,254,3,2,2,10,3,0,224,224,7,14,14,10,1,254, + 6,6,12,12,12,24,24,48,48,48,96,96,192,192,8,11, + 11,10,1,0,60,102,102,195,195,195,195,195,102,102,60,8, + 11,11,10,1,0,24,120,216,24,24,24,24,24,24,24,255, + 7,11,11,10,1,0,120,204,134,6,6,12,24,48,96,198, + 254,7,11,11,10,1,0,120,204,134,12,56,12,6,6,134, + 204,120,8,11,11,10,1,0,6,14,30,54,102,70,198,255, + 6,6,31,7,11,11,10,1,0,254,192,192,192,252,198,6, + 6,6,204,248,8,11,11,10,1,0,30,112,96,192,220,230, + 195,195,195,102,60,7,11,11,10,1,0,254,198,6,12,12, + 24,24,24,48,48,48,7,11,11,10,1,0,56,108,198,68, + 56,108,198,198,198,108,56,8,11,11,10,1,0,60,102,195, + 195,103,59,3,3,6,14,120,3,7,7,10,3,0,224,224, + 0,0,0,224,224,3,10,10,10,3,253,224,224,0,0,0, + 224,224,96,192,128,9,9,18,10,1,0,1,128,7,128,30, + 0,120,0,224,0,120,0,30,0,7,128,1,128,9,5,10, + 10,0,2,255,128,255,128,0,0,255,128,255,128,9,9,18, + 10,0,0,192,0,240,0,60,0,15,0,3,128,15,0,60, + 0,240,0,192,0,7,10,10,10,1,0,124,198,198,6,28, + 48,48,0,48,48,9,12,24,10,0,255,62,0,99,0,193, + 128,221,128,178,128,178,128,178,128,178,128,223,0,192,0,99, + 0,62,0,10,10,20,10,0,0,60,0,12,0,30,0,18, + 0,51,0,51,0,63,0,97,128,97,128,243,192,9,10,20, + 10,0,0,254,0,99,0,97,128,99,0,126,0,99,0,97, + 128,97,128,99,0,254,0,9,10,20,10,0,0,30,128,115, + 128,97,128,192,0,192,0,192,0,192,0,97,128,115,128,30, + 0,9,10,20,10,0,0,252,0,103,0,99,0,97,128,97, + 128,97,128,97,128,99,0,103,0,252,0,8,10,10,10,1, + 0,255,99,96,100,124,100,96,99,99,255,8,10,10,10,1, + 0,255,99,96,100,124,100,96,96,96,248,10,10,20,10,0, + 0,30,128,115,128,97,128,192,0,192,0,199,192,193,128,97, + 128,113,128,31,0,9,10,20,10,0,0,247,128,99,0,99, + 0,99,0,127,0,99,0,99,0,99,0,99,0,247,128,8, + 10,10,10,1,0,255,24,24,24,24,24,24,24,24,255,9, + 10,20,10,0,0,63,128,6,0,6,0,6,0,6,0,6, + 0,198,0,198,0,198,0,124,0,9,10,20,10,0,0,247, + 128,99,0,102,0,108,0,120,0,124,0,102,0,102,0,99, + 0,251,128,9,10,20,10,0,0,252,0,48,0,48,0,48, + 0,48,0,48,0,49,128,49,128,49,128,255,128,10,10,20, + 10,0,0,225,192,97,128,115,128,115,128,127,128,109,128,109, + 128,97,128,97,128,243,192,10,10,20,10,0,0,247,192,113, + 128,121,128,105,128,109,128,109,128,101,128,103,128,99,128,251, + 128,9,10,20,10,0,0,62,0,99,0,99,0,193,128,193, + 128,193,128,193,128,99,0,99,0,62,0,9,10,20,10,0, + 0,254,0,99,0,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,252,0,9,12,24,10,0,254,62,0,99,0,99, + 0,193,128,193,128,193,128,193,128,99,0,99,0,62,0,25, + 128,63,0,9,10,20,10,0,0,252,0,102,0,99,0,99, + 0,102,0,124,0,102,0,99,0,99,0,251,128,8,10,10, + 10,1,0,61,103,195,224,120,30,7,195,230,188,8,10,10, + 10,1,0,255,153,153,153,24,24,24,24,24,126,10,10,20, + 10,0,0,243,192,97,128,97,128,97,128,97,128,97,128,97, + 128,97,128,51,0,30,0,10,10,20,10,0,0,243,192,97, + 128,97,128,51,0,51,0,51,0,30,0,30,0,12,0,12, + 0,10,10,20,10,0,0,243,192,97,128,109,128,109,128,109, + 128,63,0,51,0,51,0,51,0,51,0,10,10,20,10,0, + 0,243,192,97,128,51,0,30,0,12,0,12,0,30,0,51, + 0,97,128,243,192,10,10,20,10,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,7, + 10,10,10,1,0,254,198,204,28,24,48,112,102,198,254,4, + 13,13,10,3,254,240,192,192,192,192,192,192,192,192,192,192, + 192,240,7,14,14,10,1,254,192,192,96,96,96,48,48,56, + 24,24,12,12,6,6,4,13,13,10,2,254,240,48,48,48, + 48,48,48,48,48,48,48,48,240,8,4,4,10,1,7,24, + 60,102,195,10,2,4,10,0,253,255,192,255,192,4,3,3, + 10,2,8,192,96,48,8,7,7,10,1,0,60,102,6,126, + 198,198,123,9,11,22,10,0,0,224,0,96,0,96,0,96, + 0,110,0,115,0,97,128,97,128,97,128,115,0,238,0,8, + 7,7,10,0,0,61,103,195,192,192,99,62,9,11,22,10, + 0,0,7,0,3,0,3,0,3,0,59,0,103,0,195,0, + 195,0,195,0,103,0,59,128,8,7,7,10,1,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,30,51,48,48,254, + 48,48,48,48,48,254,9,10,20,10,0,253,59,128,103,0, + 195,0,195,0,195,0,103,0,59,0,3,0,3,0,62,0, + 9,11,22,10,0,0,224,0,96,0,96,0,96,0,110,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,10,10,10, + 1,0,24,24,0,120,24,24,24,24,24,255,6,13,13,10, + 1,253,24,24,0,252,12,12,12,12,12,12,12,12,248,9, + 11,22,10,0,0,224,0,96,0,96,0,96,0,111,128,102, + 0,108,0,120,0,108,0,102,0,239,128,8,11,11,10,1, + 0,120,24,24,24,24,24,24,24,24,24,255,10,7,14,10, + 0,0,237,128,127,128,109,128,109,128,109,128,109,128,237,192, + 9,7,14,10,0,0,238,0,115,0,99,0,99,0,99,0, + 99,0,247,128,8,7,7,10,1,0,60,102,195,195,195,102, + 60,9,10,20,10,0,253,238,0,115,0,97,128,97,128,97, + 128,115,0,110,0,96,0,96,0,248,0,9,10,20,10,0, + 253,59,128,103,0,195,0,195,0,195,0,103,0,59,0,3, + 0,3,0,15,128,9,7,14,10,0,0,247,0,57,128,48, + 0,48,0,48,0,48,0,254,0,7,7,7,10,1,0,126, + 198,224,124,14,198,252,9,9,18,10,0,0,48,0,48,0, + 255,0,48,0,48,0,48,0,48,0,49,128,31,0,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,10,7,14,10,0,0,243,192,97,128,51,0,51,0, + 30,0,30,0,12,0,10,7,14,10,0,0,243,192,97,128, + 109,128,45,0,63,0,51,0,51,0,8,7,7,10,1,0, + 231,102,60,24,60,102,231,10,10,20,10,0,253,243,192,97, + 128,51,0,51,0,30,0,30,0,12,0,24,0,24,0,124, + 0,7,7,7,10,1,0,254,204,24,48,96,198,254,4,13, + 13,10,3,254,48,96,96,96,96,64,192,96,96,96,96,96, + 48,2,13,13,10,4,254,192,192,192,192,192,192,192,192,192, + 192,192,192,192,4,13,13,10,3,254,192,96,96,96,96,32, + 48,96,96,96,96,96,192,8,3,3,10,1,3,112,219,14, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,10,0,1,2,10,10,10,4,253,192,192,0, + 192,192,192,192,192,192,192,7,10,10,10,1,0,24,24,62, + 102,192,192,102,60,24,24,8,10,10,10,1,0,30,51,48, + 48,252,252,48,51,227,254,8,7,7,10,1,1,195,126,102, + 66,102,126,195,10,10,20,10,0,0,243,192,97,128,51,0, + 51,0,30,0,63,0,12,0,63,0,12,0,63,0,2,13, + 13,10,4,254,192,192,192,192,192,192,0,192,192,192,192,192, + 192,10,12,24,10,0,255,31,128,49,128,49,128,120,0,206, + 0,195,128,112,192,28,192,7,128,99,0,99,0,126,0,5, + 2,2,10,3,8,216,216,10,10,20,10,0,0,12,0,63, + 0,97,128,78,128,216,192,216,192,78,128,97,128,63,0,12, + 0,6,7,7,10,2,3,120,12,124,204,124,0,252,9,7, + 14,10,0,0,25,128,51,0,102,0,204,0,102,0,51,0, + 25,128,8,5,5,10,1,2,255,255,3,3,3,7,2,2, + 10,1,4,254,254,10,10,20,10,0,0,12,0,63,0,97, + 128,92,128,214,192,220,192,82,128,97,128,63,0,12,0,5, + 1,1,10,2,9,248,5,5,5,10,2,6,112,216,136,216, + 112,8,9,9,10,1,0,24,24,255,255,24,24,0,255,255, + 5,6,6,10,2,5,112,216,48,96,200,248,5,6,6,10, + 2,5,112,216,48,24,216,112,4,3,3,10,3,8,48,96, + 192,9,10,20,10,0,253,231,0,99,0,99,0,99,0,99, + 0,103,0,123,128,96,0,96,0,96,0,9,12,24,10,0, + 255,63,128,91,0,219,0,219,0,219,0,91,0,59,0,27, + 0,27,0,27,0,27,0,63,128,3,2,2,10,3,4,224, + 224,4,4,4,10,3,253,32,96,48,240,6,6,6,10,2, + 5,48,240,48,48,48,252,6,7,7,10,2,3,120,204,204, + 204,120,0,252,9,7,14,10,0,0,204,0,102,0,51,0, + 25,128,51,0,102,0,204,0,10,11,22,10,0,0,32,0, + 225,0,99,0,98,0,102,0,252,128,25,128,19,128,54,128, + 111,192,65,128,10,11,22,10,0,0,32,0,224,128,97,128, + 99,0,102,0,255,128,10,192,25,128,51,0,102,64,71,192, + 11,11,22,10,0,0,112,0,216,128,49,128,27,0,218,0, + 118,64,12,192,9,192,27,64,55,224,32,192,7,10,10,10, + 1,253,24,24,0,24,24,112,192,198,198,124,10,14,28,10, + 0,0,48,0,24,0,12,0,0,0,60,0,12,0,30,0, + 18,0,51,0,51,0,63,0,97,128,97,128,243,192,10,14, + 28,10,0,0,6,0,12,0,24,0,0,0,60,0,12,0, + 30,0,18,0,51,0,51,0,63,0,97,128,97,128,243,192, + 10,14,28,10,0,0,12,0,30,0,51,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,13,26,10,0,0,59,0,110,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,13,26,10,0,0,54,0,54,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,14,28,10,0,0,28,0,54,0,54,0,28,0, + 60,0,12,0,30,0,18,0,51,0,51,0,63,0,97,128, + 97,128,243,192,10,10,20,10,0,0,127,192,60,192,44,0, + 45,0,111,0,77,0,124,0,76,192,204,192,255,192,9,13, + 26,10,0,253,30,128,115,128,97,128,192,0,192,0,192,0, + 192,0,97,128,115,128,30,0,24,0,12,0,60,0,8,14, + 14,10,1,0,48,24,12,0,255,99,96,100,124,100,96,99, + 99,255,8,14,14,10,1,0,6,12,24,0,255,99,96,100, + 124,100,96,99,99,255,8,14,14,10,1,0,24,60,102,0, + 255,99,96,100,124,100,96,99,99,255,8,13,13,10,1,0, + 54,54,0,255,99,96,100,124,100,96,99,99,255,8,14,14, + 10,1,0,48,24,12,0,255,24,24,24,24,24,24,24,24, + 255,8,14,14,10,1,0,12,24,48,0,255,24,24,24,24, + 24,24,24,24,255,8,14,14,10,1,0,24,60,102,0,255, + 24,24,24,24,24,24,24,24,255,8,13,13,10,1,0,54, + 54,0,255,24,24,24,24,24,24,24,24,255,9,10,20,10, + 0,0,252,0,103,0,99,0,97,128,249,128,97,128,97,128, + 99,0,103,0,252,0,10,13,26,10,0,0,59,0,110,0, + 0,0,247,192,113,128,121,128,105,128,109,128,109,128,101,128, + 103,128,99,128,251,128,9,14,28,10,0,0,48,0,24,0, + 12,0,0,0,62,0,99,0,99,0,193,128,193,128,193,128, + 193,128,99,0,99,0,62,0,9,14,28,10,0,0,6,0, + 12,0,24,0,0,0,62,0,99,0,99,0,193,128,193,128, + 193,128,193,128,99,0,99,0,62,0,9,14,28,10,0,0, + 12,0,30,0,51,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,9,13,26,10, + 0,0,59,0,110,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,9,13,26,10, + 0,0,54,0,54,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,8,7,7,10, + 1,1,227,118,60,24,60,110,199,9,12,24,10,0,255,0, + 128,63,128,99,0,103,0,197,128,205,128,217,128,209,128,115, + 0,99,0,254,0,128,0,10,14,28,10,0,0,48,0,24, + 0,12,0,0,0,243,192,97,128,97,128,97,128,97,128,97, + 128,97,128,97,128,51,0,30,0,10,14,28,10,0,0,3, + 0,6,0,12,0,0,0,243,192,97,128,97,128,97,128,97, + 128,97,128,97,128,97,128,51,0,30,0,10,14,28,10,0, + 0,12,0,30,0,51,0,0,0,243,192,97,128,97,128,97, + 128,97,128,97,128,97,128,97,128,51,0,30,0,10,13,26, + 10,0,0,27,0,27,0,0,0,243,192,97,128,97,128,97, + 128,97,128,97,128,97,128,97,128,51,0,30,0,10,14,28, + 10,0,0,3,0,6,0,12,0,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,9, + 10,20,10,0,0,240,0,96,0,126,0,99,0,97,128,99, + 0,126,0,96,0,96,0,240,0,8,11,11,10,0,0,60, + 102,102,100,108,102,99,99,99,122,236,8,11,11,10,1,0, + 48,24,12,0,60,102,6,126,198,198,123,8,11,11,10,1, + 0,6,12,24,0,60,102,6,126,198,198,123,8,11,11,10, + 1,0,24,60,102,0,60,102,6,126,198,198,123,8,10,10, + 10,1,0,59,110,0,60,102,6,126,198,198,123,8,10,10, + 10,1,0,54,54,0,60,102,6,126,198,198,123,8,12,12, + 10,1,0,28,54,54,28,0,60,102,6,126,198,198,123,10, + 7,14,10,255,0,59,128,108,192,12,192,127,192,204,0,204, + 192,119,128,8,10,10,10,1,253,61,103,195,192,192,227,126, + 24,12,60,8,11,11,10,1,0,48,24,12,0,60,102,195, + 255,192,99,62,8,11,11,10,1,0,6,12,24,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,24,60,102,0,60, + 102,195,255,192,99,62,8,10,10,10,1,0,54,54,0,60, + 102,195,255,192,99,62,8,11,11,10,1,0,96,48,24,0, + 120,24,24,24,24,24,255,8,11,11,10,1,0,6,12,24, + 0,120,24,24,24,24,24,255,8,11,11,10,1,0,24,60, + 102,0,120,24,24,24,24,24,255,8,10,10,10,1,0,108, + 108,0,120,24,24,24,24,24,255,8,12,12,10,1,0,224, + 118,28,60,198,62,103,227,195,195,102,60,9,10,20,10,0, + 0,59,0,110,0,0,0,238,0,115,0,99,0,99,0,99, + 0,99,0,247,128,8,11,11,10,1,0,48,24,12,0,60, + 102,195,195,195,102,60,8,11,11,10,1,0,12,24,48,0, + 60,102,195,195,195,102,60,8,11,11,10,1,0,24,60,102, + 0,60,102,195,195,195,102,60,8,10,10,10,1,0,59,110, + 0,60,102,195,195,195,102,60,8,10,10,10,1,0,108,108, + 0,60,102,195,195,195,102,60,8,8,8,10,1,1,24,24, + 0,255,255,0,24,24,8,9,9,10,1,255,3,63,102,207, + 219,243,102,252,192,9,11,22,10,0,0,48,0,24,0,12, + 0,0,0,231,0,99,0,99,0,99,0,99,0,103,0,59, + 128,9,11,22,10,0,0,12,0,24,0,48,0,0,0,231, + 0,99,0,99,0,99,0,99,0,103,0,59,128,9,11,22, + 10,0,0,24,0,60,0,102,0,0,0,231,0,99,0,99, + 0,99,0,99,0,103,0,59,128,9,10,20,10,0,0,54, + 0,54,0,0,0,231,0,99,0,99,0,99,0,99,0,103, + 0,59,128,10,14,28,10,0,253,6,0,12,0,24,0,0, + 0,243,192,97,128,51,0,51,0,30,0,30,0,12,0,24, + 0,24,0,124,0,9,14,28,10,0,253,224,0,96,0,96, + 0,96,0,110,0,115,0,97,128,97,128,97,128,115,0,110, + 0,96,0,96,0,248,0,10,13,26,10,0,253,54,0,54, + 0,0,0,243,192,97,128,51,0,51,0,30,0,30,0,12, + 0,12,0,24,0,124,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=14 x= 4 y= 8 dx=10 dy= 0 ascent=12 len=24 + Font Bounding box w=16 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB12r[1857] U8G_SECTION(".progmem.u8g_font_courB12r") = { + 0,16,24,253,250,10,2,51,4,246,32,127,253,12,253,11, + 253,0,0,0,10,0,1,2,11,11,10,3,0,192,192,192, + 192,192,192,192,192,0,192,192,6,5,5,10,2,6,204,204, + 204,204,204,9,12,24,10,0,255,54,0,54,0,54,0,54, + 0,255,128,54,0,54,0,255,128,54,0,54,0,54,0,54, + 0,7,13,13,10,1,255,24,24,126,198,192,224,124,14,6, + 198,252,48,48,8,11,11,10,1,0,120,204,204,120,7,60, + 224,30,51,51,30,7,9,9,10,1,0,56,108,96,48,118, + 222,204,204,126,2,5,5,10,4,6,192,192,192,192,192,4, + 13,13,10,3,254,48,96,96,96,192,192,192,192,192,96,96, + 96,48,4,13,13,10,2,254,192,96,96,96,48,48,48,48, + 48,96,96,96,192,8,6,6,10,1,5,24,24,255,60,60, + 102,8,8,8,10,1,1,24,24,24,255,255,24,24,24,3, + 5,5,10,3,253,224,224,96,192,128,7,2,2,10,1,4, + 254,254,3,2,2,10,3,0,224,224,7,14,14,10,1,254, + 6,6,12,12,12,24,24,48,48,48,96,96,192,192,8,11, + 11,10,1,0,60,102,102,195,195,195,195,195,102,102,60,8, + 11,11,10,1,0,24,120,216,24,24,24,24,24,24,24,255, + 7,11,11,10,1,0,120,204,134,6,6,12,24,48,96,198, + 254,7,11,11,10,1,0,120,204,134,12,56,12,6,6,134, + 204,120,8,11,11,10,1,0,6,14,30,54,102,70,198,255, + 6,6,31,7,11,11,10,1,0,254,192,192,192,252,198,6, + 6,6,204,248,8,11,11,10,1,0,30,112,96,192,220,230, + 195,195,195,102,60,7,11,11,10,1,0,254,198,6,12,12, + 24,24,24,48,48,48,7,11,11,10,1,0,56,108,198,68, + 56,108,198,198,198,108,56,8,11,11,10,1,0,60,102,195, + 195,103,59,3,3,6,14,120,3,7,7,10,3,0,224,224, + 0,0,0,224,224,3,10,10,10,3,253,224,224,0,0,0, + 224,224,96,192,128,9,9,18,10,1,0,1,128,7,128,30, + 0,120,0,224,0,120,0,30,0,7,128,1,128,9,5,10, + 10,0,2,255,128,255,128,0,0,255,128,255,128,9,9,18, + 10,0,0,192,0,240,0,60,0,15,0,3,128,15,0,60, + 0,240,0,192,0,7,10,10,10,1,0,124,198,198,6,28, + 48,48,0,48,48,9,12,24,10,0,255,62,0,99,0,193, + 128,221,128,178,128,178,128,178,128,178,128,223,0,192,0,99, + 0,62,0,10,10,20,10,0,0,60,0,12,0,30,0,18, + 0,51,0,51,0,63,0,97,128,97,128,243,192,9,10,20, + 10,0,0,254,0,99,0,97,128,99,0,126,0,99,0,97, + 128,97,128,99,0,254,0,9,10,20,10,0,0,30,128,115, + 128,97,128,192,0,192,0,192,0,192,0,97,128,115,128,30, + 0,9,10,20,10,0,0,252,0,103,0,99,0,97,128,97, + 128,97,128,97,128,99,0,103,0,252,0,8,10,10,10,1, + 0,255,99,96,100,124,100,96,99,99,255,8,10,10,10,1, + 0,255,99,96,100,124,100,96,96,96,248,10,10,20,10,0, + 0,30,128,115,128,97,128,192,0,192,0,199,192,193,128,97, + 128,113,128,31,0,9,10,20,10,0,0,247,128,99,0,99, + 0,99,0,127,0,99,0,99,0,99,0,99,0,247,128,8, + 10,10,10,1,0,255,24,24,24,24,24,24,24,24,255,9, + 10,20,10,0,0,63,128,6,0,6,0,6,0,6,0,6, + 0,198,0,198,0,198,0,124,0,9,10,20,10,0,0,247, + 128,99,0,102,0,108,0,120,0,124,0,102,0,102,0,99, + 0,251,128,9,10,20,10,0,0,252,0,48,0,48,0,48, + 0,48,0,48,0,49,128,49,128,49,128,255,128,10,10,20, + 10,0,0,225,192,97,128,115,128,115,128,127,128,109,128,109, + 128,97,128,97,128,243,192,10,10,20,10,0,0,247,192,113, + 128,121,128,105,128,109,128,109,128,101,128,103,128,99,128,251, + 128,9,10,20,10,0,0,62,0,99,0,99,0,193,128,193, + 128,193,128,193,128,99,0,99,0,62,0,9,10,20,10,0, + 0,254,0,99,0,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,252,0,9,12,24,10,0,254,62,0,99,0,99, + 0,193,128,193,128,193,128,193,128,99,0,99,0,62,0,25, + 128,63,0,9,10,20,10,0,0,252,0,102,0,99,0,99, + 0,102,0,124,0,102,0,99,0,99,0,251,128,8,10,10, + 10,1,0,61,103,195,224,120,30,7,195,230,188,8,10,10, + 10,1,0,255,153,153,153,24,24,24,24,24,126,10,10,20, + 10,0,0,243,192,97,128,97,128,97,128,97,128,97,128,97, + 128,97,128,51,0,30,0,10,10,20,10,0,0,243,192,97, + 128,97,128,51,0,51,0,51,0,30,0,30,0,12,0,12, + 0,10,10,20,10,0,0,243,192,97,128,109,128,109,128,109, + 128,63,0,51,0,51,0,51,0,51,0,10,10,20,10,0, + 0,243,192,97,128,51,0,30,0,12,0,12,0,30,0,51, + 0,97,128,243,192,10,10,20,10,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,7, + 10,10,10,1,0,254,198,204,28,24,48,112,102,198,254,4, + 13,13,10,3,254,240,192,192,192,192,192,192,192,192,192,192, + 192,240,7,14,14,10,1,254,192,192,96,96,96,48,48,56, + 24,24,12,12,6,6,4,13,13,10,2,254,240,48,48,48, + 48,48,48,48,48,48,48,48,240,8,4,4,10,1,7,24, + 60,102,195,10,2,4,10,0,253,255,192,255,192,4,3,3, + 10,2,8,192,96,48,8,7,7,10,1,0,60,102,6,126, + 198,198,123,9,11,22,10,0,0,224,0,96,0,96,0,96, + 0,110,0,115,0,97,128,97,128,97,128,115,0,238,0,8, + 7,7,10,0,0,61,103,195,192,192,99,62,9,11,22,10, + 0,0,7,0,3,0,3,0,3,0,59,0,103,0,195,0, + 195,0,195,0,103,0,59,128,8,7,7,10,1,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,30,51,48,48,254, + 48,48,48,48,48,254,9,10,20,10,0,253,59,128,103,0, + 195,0,195,0,195,0,103,0,59,0,3,0,3,0,62,0, + 9,11,22,10,0,0,224,0,96,0,96,0,96,0,110,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,10,10,10, + 1,0,24,24,0,120,24,24,24,24,24,255,6,13,13,10, + 1,253,24,24,0,252,12,12,12,12,12,12,12,12,248,9, + 11,22,10,0,0,224,0,96,0,96,0,96,0,111,128,102, + 0,108,0,120,0,108,0,102,0,239,128,8,11,11,10,1, + 0,120,24,24,24,24,24,24,24,24,24,255,10,7,14,10, + 0,0,237,128,127,128,109,128,109,128,109,128,109,128,237,192, + 9,7,14,10,0,0,238,0,115,0,99,0,99,0,99,0, + 99,0,247,128,8,7,7,10,1,0,60,102,195,195,195,102, + 60,9,10,20,10,0,253,238,0,115,0,97,128,97,128,97, + 128,115,0,110,0,96,0,96,0,248,0,9,10,20,10,0, + 253,59,128,103,0,195,0,195,0,195,0,103,0,59,0,3, + 0,3,0,15,128,9,7,14,10,0,0,247,0,57,128,48, + 0,48,0,48,0,48,0,254,0,7,7,7,10,1,0,126, + 198,224,124,14,198,252,9,9,18,10,0,0,48,0,48,0, + 255,0,48,0,48,0,48,0,48,0,49,128,31,0,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,10,7,14,10,0,0,243,192,97,128,51,0,51,0, + 30,0,30,0,12,0,10,7,14,10,0,0,243,192,97,128, + 109,128,45,0,63,0,51,0,51,0,8,7,7,10,1,0, + 231,102,60,24,60,102,231,10,10,20,10,0,253,243,192,97, + 128,51,0,51,0,30,0,30,0,12,0,24,0,24,0,124, + 0,7,7,7,10,1,0,254,204,24,48,96,198,254,4,13, + 13,10,3,254,48,96,96,96,96,64,192,96,96,96,96,96, + 48,2,13,13,10,4,254,192,192,192,192,192,192,192,192,192, + 192,192,192,192,4,13,13,10,3,254,192,96,96,96,96,32, + 48,96,96,96,96,96,192,8,3,3,10,1,3,112,219,14, + 255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=12 h=17 x= 4 y= 9 dx=11 dy= 0 ascent=15 len=34 + Font Bounding box w=17 h=26 x=-4 y=-7 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =15 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB14[4784] U8G_SECTION(".progmem.u8g_font_courB14") = { + 0,17,26,252,249,11,2,101,5,155,32,255,252,15,251,12, + 252,0,0,0,11,0,1,3,12,12,11,4,0,224,224,224, + 224,224,224,192,192,192,0,192,192,6,6,6,11,2,6,204, + 204,204,204,136,136,8,14,14,11,1,255,54,54,54,54,255, + 255,108,108,255,255,108,108,108,108,8,15,15,11,1,254,24, + 24,63,127,195,192,240,126,15,3,199,254,252,24,24,8,12, + 12,11,1,0,112,216,136,216,115,14,120,206,27,17,27,14, + 8,10,10,11,1,0,60,126,102,96,48,123,255,206,255,123, + 2,6,6,11,4,6,192,192,192,192,128,128,4,15,15,11, + 4,253,48,48,96,96,192,192,192,192,192,192,192,96,96,48, + 48,4,15,15,11,2,253,192,192,96,96,48,48,48,48,48, + 48,48,96,96,192,192,8,8,8,11,1,4,24,24,255,255, + 24,126,231,66,10,10,20,11,0,0,12,0,12,0,12,0, + 12,0,255,192,255,192,12,0,12,0,12,0,12,0,4,5, + 5,11,2,253,48,48,96,64,128,8,2,2,11,1,4,255, + 255,2,2,2,11,4,0,192,192,9,16,32,11,0,253,1, + 128,1,128,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,192,0,192,0,8, + 12,12,11,1,0,60,126,102,195,195,195,195,195,195,102,126, + 60,8,12,12,11,1,0,24,248,248,24,24,24,24,24,24, + 24,255,255,8,12,12,11,1,0,60,126,199,195,3,7,14, + 28,56,112,255,255,8,12,12,11,1,0,60,126,102,6,14, + 60,62,7,3,199,254,124,8,12,12,11,1,0,14,30,62, + 54,102,102,198,255,255,6,31,31,8,12,12,11,1,0,127, + 127,96,96,126,127,103,3,3,199,254,124,8,12,12,11,1, + 0,15,63,112,96,220,254,231,195,195,231,126,60,8,12,12, + 11,1,0,255,255,195,6,6,6,12,12,12,24,24,24,8, + 12,12,11,1,0,60,126,231,195,102,60,126,231,195,231,126, + 60,8,12,12,11,1,0,60,126,195,195,195,199,127,59,3, + 6,254,248,2,8,8,11,4,0,192,192,0,0,0,0,192, + 192,4,11,11,11,2,253,48,48,0,0,0,0,48,48,96, + 64,128,9,9,18,11,1,1,1,128,7,128,30,0,120,0, + 224,0,120,0,30,0,7,128,1,128,10,6,12,11,0,2, + 255,192,255,192,0,0,0,0,255,192,255,192,9,9,18,11, + 1,1,192,0,240,0,60,0,15,0,3,128,15,0,60,0, + 240,0,192,0,7,11,11,11,2,0,124,254,198,6,14,60, + 48,48,0,48,48,9,13,26,11,1,255,60,0,102,0,195, + 0,207,0,219,0,219,0,219,0,219,0,207,128,192,0,192, + 0,99,0,62,0,12,11,22,11,255,0,62,0,63,0,15, + 0,25,128,25,128,25,128,63,192,63,192,48,192,249,240,249, + 240,10,11,22,11,0,0,254,0,255,0,49,128,49,128,63, + 0,63,128,48,192,48,192,48,192,255,128,255,0,10,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,192, + 0,224,0,112,192,127,192,31,0,10,11,22,11,0,0,254, + 0,255,128,99,128,97,192,96,192,96,192,96,192,97,192,99, + 128,255,128,254,0,10,11,22,11,0,0,255,192,255,192,48, + 192,54,192,62,0,62,0,54,0,48,192,48,192,255,192,255, + 192,10,11,22,11,0,0,255,192,255,192,48,192,54,192,62, + 0,62,0,54,0,48,0,48,0,254,0,254,0,11,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,199, + 224,231,224,112,192,127,192,31,128,10,11,22,11,0,0,243, + 192,243,192,97,128,97,128,127,128,127,128,97,128,97,128,97, + 128,243,192,243,192,8,11,11,11,1,0,255,255,24,24,24, + 24,24,24,24,255,255,10,11,22,11,0,0,31,192,31,192, + 3,0,3,0,3,0,3,0,195,0,195,0,195,0,254,0, + 60,0,11,11,22,11,0,0,247,192,247,192,99,0,102,0, + 108,0,124,0,126,0,103,0,99,128,249,224,249,224,10,11, + 22,11,0,0,252,0,252,0,48,0,48,0,48,0,48,0, + 48,192,48,192,48,192,255,192,255,192,10,11,22,11,0,0, + 225,192,225,192,115,128,115,128,127,128,109,128,109,128,109,128, + 97,128,243,192,243,192,10,11,22,11,0,0,231,192,247,192, + 113,128,121,128,105,128,109,128,101,128,103,128,99,128,251,128, + 249,128,10,11,22,11,0,0,30,0,127,128,115,128,225,192, + 192,192,192,192,192,192,225,192,115,128,127,128,30,0,10,11, + 22,11,0,0,255,0,255,128,97,192,96,192,97,192,127,128, + 127,0,96,0,96,0,252,0,252,0,10,13,26,11,0,254, + 30,0,127,128,115,128,225,192,192,192,192,192,192,192,225,192, + 115,128,127,128,30,64,63,192,51,128,11,11,22,11,0,0, + 255,0,255,128,97,192,96,192,97,192,127,128,127,0,99,128, + 97,192,252,224,252,224,9,11,22,11,1,0,61,128,255,128, + 195,128,193,128,248,0,127,0,15,128,193,128,225,128,255,0, + 222,0,10,11,22,11,0,0,255,192,255,192,204,192,204,192, + 204,192,12,0,12,0,12,0,12,0,127,128,127,128,10,11, + 22,11,0,0,247,192,247,192,97,128,97,128,97,128,97,128, + 97,128,97,128,115,128,63,0,30,0,12,11,22,11,255,0, + 249,240,249,240,96,96,96,96,48,192,48,192,25,128,25,128, + 15,0,15,0,6,0,12,11,22,11,255,0,249,240,249,240, + 96,96,102,96,102,96,111,96,111,96,57,192,57,192,48,192, + 48,192,10,11,22,11,0,0,243,192,243,192,97,128,51,0, + 30,0,12,0,30,0,51,0,97,128,243,192,243,192,10,11, + 22,11,0,0,243,192,243,192,97,128,51,0,63,0,30,0, + 12,0,12,0,12,0,63,0,63,0,8,11,11,11,1,0, + 255,255,199,206,12,24,48,115,227,255,255,4,15,15,11,4, + 253,240,240,192,192,192,192,192,192,192,192,192,192,192,240,240, + 9,16,32,11,1,253,192,0,192,0,96,0,96,0,48,0, + 48,0,24,0,24,0,12,0,12,0,6,0,6,0,3,0, + 3,0,1,128,1,128,4,15,15,11,2,253,240,240,48,48, + 48,48,48,48,48,48,48,48,48,240,240,8,7,7,11,1, + 5,24,60,60,102,102,195,195,11,2,4,11,0,252,255,224, + 255,224,4,3,3,11,3,9,192,96,48,10,9,18,11,0, + 0,63,0,127,128,97,128,1,128,127,128,255,128,193,128,255, + 192,125,192,10,12,24,11,0,0,224,0,224,0,96,0,111, + 0,127,128,113,192,96,192,96,192,96,192,113,192,255,128,239, + 0,10,9,18,11,0,0,61,128,127,128,227,128,193,128,192, + 0,192,0,225,192,127,192,63,0,10,12,24,11,0,0,3, + 128,3,128,1,128,61,128,127,128,227,128,193,128,193,128,193, + 128,227,128,127,192,61,192,10,9,18,11,0,0,30,0,127, + 128,225,192,192,192,255,192,255,192,224,0,127,192,31,192,9, + 12,24,11,1,0,31,128,63,128,48,0,255,0,255,0,48, + 0,48,0,48,0,48,0,48,0,255,0,255,0,10,13,26, + 11,0,252,61,192,127,192,227,128,193,128,193,128,193,128,227, + 128,127,128,61,128,1,128,3,128,63,0,62,0,10,12,24, + 11,0,0,224,0,224,0,96,0,111,0,127,128,113,128,97, + 128,97,128,97,128,97,128,243,192,243,192,8,12,12,11,1, + 0,24,24,0,248,248,24,24,24,24,24,255,255,7,16,16, + 11,1,252,12,12,0,254,254,6,6,6,6,6,6,6,6, + 14,252,248,10,12,24,11,0,0,224,0,224,0,96,0,103, + 128,103,128,110,0,124,0,124,0,110,0,103,0,227,192,227, + 192,8,12,12,11,1,0,248,248,24,24,24,24,24,24,24, + 24,255,255,12,9,18,11,255,0,237,192,255,224,119,96,102, + 96,102,96,102,96,102,96,247,112,247,112,10,9,18,11,0, + 0,239,0,255,128,113,128,97,128,97,128,97,128,97,128,243, + 192,243,192,10,9,18,11,0,0,30,0,127,128,225,192,192, + 192,192,192,192,192,225,192,127,128,30,0,10,13,26,11,0, + 252,239,0,255,128,113,192,96,192,96,192,96,192,113,192,127, + 128,111,0,96,0,96,0,248,0,248,0,10,13,26,11,0, + 252,61,192,127,192,227,128,193,128,193,128,193,128,227,128,127, + 128,61,128,1,128,1,128,7,192,7,192,10,9,18,11,0, + 0,243,128,255,192,60,192,56,0,48,0,48,0,48,0,255, + 0,255,0,8,9,9,11,1,0,127,255,195,240,126,31,195, + 255,254,10,12,24,11,0,0,48,0,48,0,48,0,255,0, + 255,0,48,0,48,0,48,0,48,0,48,192,63,192,31,0, + 10,9,18,11,0,0,231,128,231,128,97,128,97,128,97,128, + 97,128,99,128,127,192,61,192,10,9,18,11,0,0,243,192, + 243,192,97,128,97,128,51,0,51,0,30,0,30,0,12,0, + 11,9,18,11,0,0,241,224,241,224,100,192,110,192,110,192, + 123,192,59,128,49,128,49,128,11,9,18,11,0,0,251,224, + 251,224,49,128,27,0,14,0,27,0,49,128,251,224,251,224, + 10,13,26,11,0,252,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0, + 8,9,9,11,1,0,255,255,198,12,24,48,99,255,255,4, + 15,15,11,3,253,48,96,96,96,96,96,192,96,96,96,96, + 96,96,96,48,2,14,14,11,4,253,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,4,15,15,11,3,253,192,96, + 96,96,96,96,48,96,96,96,96,96,96,96,192,8,3,3, + 11,1,4,115,255,222,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,11,0,1,3,12,12, + 11,4,252,192,192,0,192,192,224,224,224,224,224,224,224,8, + 13,13,11,1,0,24,24,24,63,127,227,192,192,227,127,62, + 24,24,10,11,22,11,0,0,62,0,127,0,99,0,96,0, + 48,0,252,0,252,0,48,0,96,192,255,192,255,128,8,9, + 9,11,1,1,195,255,126,195,195,195,126,255,195,10,11,22, + 11,0,0,243,192,243,192,97,128,51,0,30,0,63,0,12, + 0,63,0,12,0,63,0,63,0,2,16,16,11,4,253,192, + 192,192,192,192,192,192,0,0,192,192,192,192,192,192,192,8, + 14,14,11,1,254,63,115,99,96,248,222,199,227,123,31,6, + 198,206,252,6,2,2,11,2,9,204,204,11,12,24,11,0, + 0,14,0,63,128,113,192,110,192,219,96,216,96,216,96,219, + 96,110,192,113,192,63,128,14,0,6,8,8,11,2,3,112, + 24,120,216,216,108,0,252,9,7,14,11,0,1,25,128,51, + 0,102,0,204,0,102,0,51,0,25,128,9,4,8,11,1, + 4,255,128,255,128,1,128,1,128,8,2,2,11,1,4,255, + 255,11,12,24,11,0,0,14,0,63,128,113,192,126,192,219, + 96,219,96,222,96,223,96,123,224,112,192,63,128,14,0,5, + 2,2,11,2,9,248,248,5,5,5,11,2,6,112,136,136, + 136,112,10,10,20,11,0,0,12,0,12,0,12,0,255,192, + 255,192,12,0,12,0,0,0,255,192,255,192,6,7,7,11, + 2,5,120,204,12,24,48,100,252,6,7,7,11,2,5,120, + 204,12,56,12,204,120,4,3,3,11,4,9,48,96,192,10, + 13,26,11,0,252,231,128,231,128,97,128,97,128,97,128,97, + 128,99,128,127,192,125,192,96,0,96,0,96,0,96,0,8, + 14,14,11,1,254,63,106,202,202,202,106,58,10,10,10,10, + 10,10,59,2,3,3,11,4,3,192,192,192,4,5,5,11, + 3,252,64,96,48,240,224,6,7,7,11,2,5,48,240,48, + 48,48,48,252,6,8,8,11,2,3,120,204,132,132,204,120, + 0,252,9,7,14,11,1,1,204,0,102,0,51,0,25,128, + 51,0,102,0,204,0,11,12,24,11,0,0,48,0,240,32, + 48,96,48,192,49,128,51,64,254,192,13,192,26,192,52,192, + 103,224,64,192,11,12,24,11,0,0,48,0,240,32,48,96, + 48,192,49,128,51,192,255,96,12,96,24,192,49,128,99,32, + 71,224,11,12,24,11,0,0,120,0,204,32,12,96,56,192, + 13,128,207,64,126,192,13,192,26,192,52,192,103,224,64,192, + 7,12,12,11,2,252,24,24,0,24,24,24,120,224,192,198, + 254,124,12,15,30,11,255,0,24,0,12,0,6,0,0,0, + 62,0,63,0,15,0,15,0,25,128,25,128,63,192,63,192, + 48,192,249,240,249,240,12,15,30,11,255,0,3,0,6,0, + 12,0,0,0,62,0,63,0,15,0,15,0,25,128,25,128, + 63,192,63,192,48,192,249,240,249,240,12,15,30,11,255,0, + 6,0,15,0,25,128,0,0,62,0,63,0,15,0,15,0, + 25,128,25,128,63,192,63,192,48,192,249,240,249,240,12,14, + 28,11,255,0,29,128,55,0,0,0,62,0,63,0,15,0, + 15,0,25,128,25,128,63,192,63,192,48,192,249,240,249,240, + 12,14,28,11,255,0,25,128,25,128,0,0,62,0,63,0, + 15,0,15,0,25,128,25,128,63,192,63,192,48,192,249,240, + 249,240,12,15,30,11,255,0,6,0,9,0,9,0,6,0, + 62,0,63,0,15,0,15,0,25,128,25,128,63,192,63,192, + 48,192,249,240,249,240,11,11,22,11,0,0,63,224,63,224, + 30,96,54,0,55,192,39,192,126,0,126,0,102,96,239,224, + 239,224,10,16,32,11,0,251,30,192,127,192,97,192,192,192, + 192,0,192,0,192,0,192,0,96,192,127,192,63,0,8,0, + 12,0,2,0,30,0,28,0,10,15,30,11,0,0,24,0, + 12,0,6,0,0,0,255,192,255,192,48,192,54,192,62,0, + 62,0,54,0,48,192,48,192,255,192,255,192,10,15,30,11, + 0,0,3,0,6,0,12,0,0,0,255,192,255,192,48,192, + 54,192,62,0,62,0,54,0,48,192,48,192,255,192,255,192, + 10,15,30,11,0,0,12,0,30,0,51,0,0,0,255,192, + 255,192,48,192,54,192,62,0,62,0,54,0,48,192,48,192, + 255,192,255,192,10,14,28,11,0,0,51,0,51,0,0,0, + 255,192,255,192,48,192,54,192,62,0,62,0,54,0,48,192, + 48,192,255,192,255,192,8,15,15,11,1,0,96,48,24,0, + 255,255,24,24,24,24,24,24,24,255,255,8,15,15,11,1, + 0,6,12,24,0,255,255,24,24,24,24,24,24,24,255,255, + 8,15,15,11,1,0,24,60,102,0,255,255,24,24,24,24, + 24,24,24,255,255,8,14,14,11,1,0,102,102,0,255,255, + 24,24,24,24,24,24,24,255,255,10,11,22,11,0,0,254, + 0,255,128,97,128,96,192,248,192,248,192,96,192,96,192,97, + 128,255,128,254,0,10,14,28,11,0,0,59,0,110,0,0, + 0,231,192,247,192,113,128,121,128,105,128,109,128,101,128,103, + 128,99,128,251,128,249,128,10,15,30,11,0,0,24,0,12, + 0,6,0,0,0,30,0,127,128,97,128,192,192,192,192,192, + 192,192,192,192,192,97,128,127,128,30,0,10,15,30,11,0, + 0,3,0,6,0,12,0,0,0,30,0,127,128,97,128,192, + 192,192,192,192,192,192,192,192,192,97,128,127,128,30,0,10, + 15,30,11,0,0,12,0,30,0,51,0,0,0,30,0,127, + 128,97,128,192,192,192,192,192,192,192,192,192,192,97,128,127, + 128,30,0,10,14,28,11,0,0,59,0,110,0,0,0,30, + 0,127,128,97,128,192,192,192,192,192,192,192,192,192,192,97, + 128,127,128,30,0,10,14,28,11,0,0,51,0,51,0,0, + 0,30,0,127,128,97,128,192,192,192,192,192,192,192,192,192, + 192,97,128,127,128,30,0,10,10,20,11,0,0,64,128,225, + 192,115,128,55,0,30,0,30,0,59,0,115,128,225,192,64, + 128,12,13,26,11,255,255,0,48,15,96,63,192,49,192,99, + 96,102,96,102,96,108,96,120,96,48,192,63,192,111,0,192, + 0,10,15,30,11,0,0,48,0,24,0,12,0,0,0,251, + 192,251,192,97,128,97,128,97,128,97,128,97,128,97,128,115, + 128,63,0,30,0,10,15,30,11,0,0,3,0,6,0,12, + 0,0,0,251,192,251,192,97,128,97,128,97,128,97,128,97, + 128,97,128,115,128,63,0,30,0,10,15,30,11,0,0,12, + 0,30,0,51,0,0,0,251,192,251,192,97,128,97,128,97, + 128,97,128,97,128,97,128,115,128,63,0,30,0,10,14,28, + 11,0,0,51,0,51,0,0,0,251,192,251,192,97,128,97, + 128,97,128,97,128,97,128,97,128,115,128,63,0,30,0,10, + 15,30,11,0,0,3,0,6,0,12,0,0,0,243,192,243, + 192,97,128,51,0,63,0,30,0,12,0,12,0,12,0,63, + 0,63,0,10,11,22,11,0,0,240,0,224,0,127,0,127, + 128,97,192,96,192,97,192,127,128,127,0,224,0,240,0,9, + 12,24,11,1,0,60,0,126,0,99,0,99,0,103,0,110, + 0,103,0,97,128,97,128,105,128,239,128,231,0,10,13,26, + 11,0,0,24,0,12,0,6,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,13,26, + 11,0,0,3,0,6,0,12,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,13,26, + 11,0,0,12,0,30,0,51,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,12,24, + 11,0,0,59,0,110,0,0,0,63,0,127,128,97,128,1, + 128,127,128,255,128,193,128,255,192,125,192,10,12,24,11,0, + 0,51,0,51,0,0,0,63,0,127,128,97,128,1,128,127, + 128,255,128,193,128,255,192,125,192,10,14,28,11,0,0,12, + 0,18,0,18,0,12,0,0,0,63,0,127,128,97,128,1, + 128,127,128,255,128,193,128,255,192,125,192,10,9,18,11,0, + 0,123,128,255,192,204,192,12,192,127,192,255,192,204,0,255, + 192,123,128,10,14,28,11,0,251,61,128,127,128,227,128,193, + 128,192,0,192,0,225,192,127,192,63,0,8,0,12,0,6, + 0,30,0,28,0,10,13,26,11,0,0,24,0,12,0,6, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,13,26,11,0,0,3,0,6,0,12, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,13,26,11,0,0,12,0,30,0,51, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,12,24,11,0,0,51,0,51,0,0, + 0,30,0,127,128,225,192,192,192,255,192,255,192,224,0,127, + 192,31,192,8,13,13,11,1,0,48,24,12,0,248,248,24, + 24,24,24,24,255,255,8,13,13,11,1,0,12,24,48,0, + 248,248,24,24,24,24,24,255,255,8,13,13,11,1,0,24, + 60,102,0,248,248,24,24,24,24,24,255,255,8,12,12,11, + 1,0,204,204,0,248,248,24,24,24,24,24,255,255,10,13, + 26,11,0,0,225,128,251,128,62,0,119,0,195,128,63,128, + 97,192,192,192,192,192,192,192,225,192,127,128,30,0,10,12, + 24,11,0,0,59,0,110,0,0,0,239,0,255,128,113,128, + 97,128,97,128,97,128,97,128,243,192,243,192,10,13,26,11, + 0,0,24,0,12,0,6,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,13,26,11, + 0,0,3,0,6,0,12,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,13,26,11, + 0,0,12,0,30,0,51,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,12,24,11, + 0,0,59,0,110,0,0,0,30,0,127,128,225,192,192,192, + 192,192,192,192,225,192,127,128,30,0,10,12,24,11,0,0, + 51,0,51,0,0,0,30,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,30,0,10,10,20,11,0,0,12,0, + 12,0,0,0,0,0,255,192,255,192,0,0,0,0,12,0, + 12,0,12,11,22,11,255,255,0,48,15,96,63,192,113,224, + 99,96,102,96,108,96,120,224,63,192,111,0,192,0,10,13, + 26,11,0,0,24,0,12,0,6,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,13, + 26,11,0,0,6,0,12,0,24,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,13, + 26,11,0,0,12,0,30,0,51,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,12, + 24,11,0,0,51,0,51,0,0,0,231,128,231,128,97,128, + 97,128,97,128,97,128,99,128,127,192,61,192,10,17,34,11, + 0,252,3,0,6,0,12,0,0,0,243,192,243,192,97,128, + 97,128,51,0,51,0,30,0,30,0,12,0,24,0,56,0, + 252,0,252,0,10,16,32,11,0,252,224,0,224,0,96,0, + 111,0,127,128,113,192,96,192,96,192,96,192,113,192,127,128, + 111,0,96,0,96,0,248,0,248,0,10,16,32,11,0,252, + 51,0,51,0,0,0,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0 + }; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=12 h=16 x= 4 y= 9 dx=11 dy= 0 ascent=13 len=32 + Font Bounding box w=17 h=26 x=-4 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB14r[2167] U8G_SECTION(".progmem.u8g_font_courB14r") = { + 0,17,26,252,249,11,2,101,5,155,32,127,252,13,252,12, + 252,0,0,0,11,0,1,3,12,12,11,4,0,224,224,224, + 224,224,224,192,192,192,0,192,192,6,6,6,11,2,6,204, + 204,204,204,136,136,8,14,14,11,1,255,54,54,54,54,255, + 255,108,108,255,255,108,108,108,108,8,15,15,11,1,254,24, + 24,63,127,195,192,240,126,15,3,199,254,252,24,24,8,12, + 12,11,1,0,112,216,136,216,115,14,120,206,27,17,27,14, + 8,10,10,11,1,0,60,126,102,96,48,123,255,206,255,123, + 2,6,6,11,4,6,192,192,192,192,128,128,4,15,15,11, + 4,253,48,48,96,96,192,192,192,192,192,192,192,96,96,48, + 48,4,15,15,11,2,253,192,192,96,96,48,48,48,48,48, + 48,48,96,96,192,192,8,8,8,11,1,4,24,24,255,255, + 24,126,231,66,10,10,20,11,0,0,12,0,12,0,12,0, + 12,0,255,192,255,192,12,0,12,0,12,0,12,0,4,5, + 5,11,2,253,48,48,96,64,128,8,2,2,11,1,4,255, + 255,2,2,2,11,4,0,192,192,9,16,32,11,0,253,1, + 128,1,128,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,192,0,192,0,8, + 12,12,11,1,0,60,126,102,195,195,195,195,195,195,102,126, + 60,8,12,12,11,1,0,24,248,248,24,24,24,24,24,24, + 24,255,255,8,12,12,11,1,0,60,126,199,195,3,7,14, + 28,56,112,255,255,8,12,12,11,1,0,60,126,102,6,14, + 60,62,7,3,199,254,124,8,12,12,11,1,0,14,30,62, + 54,102,102,198,255,255,6,31,31,8,12,12,11,1,0,127, + 127,96,96,126,127,103,3,3,199,254,124,8,12,12,11,1, + 0,15,63,112,96,220,254,231,195,195,231,126,60,8,12,12, + 11,1,0,255,255,195,6,6,6,12,12,12,24,24,24,8, + 12,12,11,1,0,60,126,231,195,102,60,126,231,195,231,126, + 60,8,12,12,11,1,0,60,126,195,195,195,199,127,59,3, + 6,254,248,2,8,8,11,4,0,192,192,0,0,0,0,192, + 192,4,11,11,11,2,253,48,48,0,0,0,0,48,48,96, + 64,128,9,9,18,11,1,1,1,128,7,128,30,0,120,0, + 224,0,120,0,30,0,7,128,1,128,10,6,12,11,0,2, + 255,192,255,192,0,0,0,0,255,192,255,192,9,9,18,11, + 1,1,192,0,240,0,60,0,15,0,3,128,15,0,60,0, + 240,0,192,0,7,11,11,11,2,0,124,254,198,6,14,60, + 48,48,0,48,48,9,13,26,11,1,255,60,0,102,0,195, + 0,207,0,219,0,219,0,219,0,219,0,207,128,192,0,192, + 0,99,0,62,0,12,11,22,11,255,0,62,0,63,0,15, + 0,25,128,25,128,25,128,63,192,63,192,48,192,249,240,249, + 240,10,11,22,11,0,0,254,0,255,0,49,128,49,128,63, + 0,63,128,48,192,48,192,48,192,255,128,255,0,10,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,192, + 0,224,0,112,192,127,192,31,0,10,11,22,11,0,0,254, + 0,255,128,99,128,97,192,96,192,96,192,96,192,97,192,99, + 128,255,128,254,0,10,11,22,11,0,0,255,192,255,192,48, + 192,54,192,62,0,62,0,54,0,48,192,48,192,255,192,255, + 192,10,11,22,11,0,0,255,192,255,192,48,192,54,192,62, + 0,62,0,54,0,48,0,48,0,254,0,254,0,11,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,199, + 224,231,224,112,192,127,192,31,128,10,11,22,11,0,0,243, + 192,243,192,97,128,97,128,127,128,127,128,97,128,97,128,97, + 128,243,192,243,192,8,11,11,11,1,0,255,255,24,24,24, + 24,24,24,24,255,255,10,11,22,11,0,0,31,192,31,192, + 3,0,3,0,3,0,3,0,195,0,195,0,195,0,254,0, + 60,0,11,11,22,11,0,0,247,192,247,192,99,0,102,0, + 108,0,124,0,126,0,103,0,99,128,249,224,249,224,10,11, + 22,11,0,0,252,0,252,0,48,0,48,0,48,0,48,0, + 48,192,48,192,48,192,255,192,255,192,10,11,22,11,0,0, + 225,192,225,192,115,128,115,128,127,128,109,128,109,128,109,128, + 97,128,243,192,243,192,10,11,22,11,0,0,231,192,247,192, + 113,128,121,128,105,128,109,128,101,128,103,128,99,128,251,128, + 249,128,10,11,22,11,0,0,30,0,127,128,115,128,225,192, + 192,192,192,192,192,192,225,192,115,128,127,128,30,0,10,11, + 22,11,0,0,255,0,255,128,97,192,96,192,97,192,127,128, + 127,0,96,0,96,0,252,0,252,0,10,13,26,11,0,254, + 30,0,127,128,115,128,225,192,192,192,192,192,192,192,225,192, + 115,128,127,128,30,64,63,192,51,128,11,11,22,11,0,0, + 255,0,255,128,97,192,96,192,97,192,127,128,127,0,99,128, + 97,192,252,224,252,224,9,11,22,11,1,0,61,128,255,128, + 195,128,193,128,248,0,127,0,15,128,193,128,225,128,255,0, + 222,0,10,11,22,11,0,0,255,192,255,192,204,192,204,192, + 204,192,12,0,12,0,12,0,12,0,127,128,127,128,10,11, + 22,11,0,0,247,192,247,192,97,128,97,128,97,128,97,128, + 97,128,97,128,115,128,63,0,30,0,12,11,22,11,255,0, + 249,240,249,240,96,96,96,96,48,192,48,192,25,128,25,128, + 15,0,15,0,6,0,12,11,22,11,255,0,249,240,249,240, + 96,96,102,96,102,96,111,96,111,96,57,192,57,192,48,192, + 48,192,10,11,22,11,0,0,243,192,243,192,97,128,51,0, + 30,0,12,0,30,0,51,0,97,128,243,192,243,192,10,11, + 22,11,0,0,243,192,243,192,97,128,51,0,63,0,30,0, + 12,0,12,0,12,0,63,0,63,0,8,11,11,11,1,0, + 255,255,199,206,12,24,48,115,227,255,255,4,15,15,11,4, + 253,240,240,192,192,192,192,192,192,192,192,192,192,192,240,240, + 9,16,32,11,1,253,192,0,192,0,96,0,96,0,48,0, + 48,0,24,0,24,0,12,0,12,0,6,0,6,0,3,0, + 3,0,1,128,1,128,4,15,15,11,2,253,240,240,48,48, + 48,48,48,48,48,48,48,48,48,240,240,8,7,7,11,1, + 5,24,60,60,102,102,195,195,11,2,4,11,0,252,255,224, + 255,224,4,3,3,11,3,9,192,96,48,10,9,18,11,0, + 0,63,0,127,128,97,128,1,128,127,128,255,128,193,128,255, + 192,125,192,10,12,24,11,0,0,224,0,224,0,96,0,111, + 0,127,128,113,192,96,192,96,192,96,192,113,192,255,128,239, + 0,10,9,18,11,0,0,61,128,127,128,227,128,193,128,192, + 0,192,0,225,192,127,192,63,0,10,12,24,11,0,0,3, + 128,3,128,1,128,61,128,127,128,227,128,193,128,193,128,193, + 128,227,128,127,192,61,192,10,9,18,11,0,0,30,0,127, + 128,225,192,192,192,255,192,255,192,224,0,127,192,31,192,9, + 12,24,11,1,0,31,128,63,128,48,0,255,0,255,0,48, + 0,48,0,48,0,48,0,48,0,255,0,255,0,10,13,26, + 11,0,252,61,192,127,192,227,128,193,128,193,128,193,128,227, + 128,127,128,61,128,1,128,3,128,63,0,62,0,10,12,24, + 11,0,0,224,0,224,0,96,0,111,0,127,128,113,128,97, + 128,97,128,97,128,97,128,243,192,243,192,8,12,12,11,1, + 0,24,24,0,248,248,24,24,24,24,24,255,255,7,16,16, + 11,1,252,12,12,0,254,254,6,6,6,6,6,6,6,6, + 14,252,248,10,12,24,11,0,0,224,0,224,0,96,0,103, + 128,103,128,110,0,124,0,124,0,110,0,103,0,227,192,227, + 192,8,12,12,11,1,0,248,248,24,24,24,24,24,24,24, + 24,255,255,12,9,18,11,255,0,237,192,255,224,119,96,102, + 96,102,96,102,96,102,96,247,112,247,112,10,9,18,11,0, + 0,239,0,255,128,113,128,97,128,97,128,97,128,97,128,243, + 192,243,192,10,9,18,11,0,0,30,0,127,128,225,192,192, + 192,192,192,192,192,225,192,127,128,30,0,10,13,26,11,0, + 252,239,0,255,128,113,192,96,192,96,192,96,192,113,192,127, + 128,111,0,96,0,96,0,248,0,248,0,10,13,26,11,0, + 252,61,192,127,192,227,128,193,128,193,128,193,128,227,128,127, + 128,61,128,1,128,1,128,7,192,7,192,10,9,18,11,0, + 0,243,128,255,192,60,192,56,0,48,0,48,0,48,0,255, + 0,255,0,8,9,9,11,1,0,127,255,195,240,126,31,195, + 255,254,10,12,24,11,0,0,48,0,48,0,48,0,255,0, + 255,0,48,0,48,0,48,0,48,0,48,192,63,192,31,0, + 10,9,18,11,0,0,231,128,231,128,97,128,97,128,97,128, + 97,128,99,128,127,192,61,192,10,9,18,11,0,0,243,192, + 243,192,97,128,97,128,51,0,51,0,30,0,30,0,12,0, + 11,9,18,11,0,0,241,224,241,224,100,192,110,192,110,192, + 123,192,59,128,49,128,49,128,11,9,18,11,0,0,251,224, + 251,224,49,128,27,0,14,0,27,0,49,128,251,224,251,224, + 10,13,26,11,0,252,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0, + 8,9,9,11,1,0,255,255,198,12,24,48,99,255,255,4, + 15,15,11,3,253,48,96,96,96,96,96,192,96,96,96,96, + 96,96,96,48,2,14,14,11,4,253,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,4,15,15,11,3,253,192,96, + 96,96,96,96,48,96,96,96,96,96,96,96,192,8,3,3, + 11,1,4,115,255,222,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=21 x= 6 y=13 dx=15 dy= 0 ascent=21 len=42 + Font Bounding box w=22 h=35 x=-4 y=-9 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =15 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB18[6429] U8G_SECTION(".progmem.u8g_font_courB18") = { + 0,22,35,252,247,15,3,223,8,17,32,255,251,21,251,16, + 251,0,0,0,15,0,1,4,16,16,15,5,0,96,240,240, + 240,240,240,240,96,96,96,96,96,0,96,96,96,7,7,7, + 15,3,9,238,238,238,238,68,68,68,12,19,38,15,1,254, + 12,192,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,51,0,10,20,40,15,2,253,12,0,12,0, + 61,128,127,128,195,128,193,128,192,0,224,0,126,0,31,128, + 1,192,0,192,192,192,225,192,255,128,223,0,12,0,12,0, + 12,0,12,0,11,15,30,15,2,0,60,0,102,0,195,0, + 195,0,102,0,60,0,1,192,15,0,56,0,231,128,12,192, + 24,96,24,96,12,192,7,128,11,14,28,15,2,0,30,0, + 63,0,99,0,96,0,96,0,48,0,56,0,124,192,111,192, + 199,128,195,0,199,128,255,224,124,224,3,7,7,15,5,8, + 224,224,224,224,224,64,64,5,20,20,15,6,252,24,56,48, + 96,96,96,192,192,192,192,192,192,192,192,96,96,96,48,56, + 24,5,20,20,15,3,252,192,224,96,48,48,48,24,24,24, + 24,24,24,24,24,48,48,48,96,224,192,10,11,22,15,2, + 5,12,0,12,0,12,0,204,192,255,192,63,0,12,0,63, + 0,51,0,115,128,97,128,12,12,24,15,1,1,6,0,6, + 0,6,0,6,0,6,0,255,240,255,240,6,0,6,0,6, + 0,6,0,6,0,5,6,6,15,4,253,56,56,112,96,192, + 128,11,2,4,15,2,6,255,224,255,224,3,3,3,15,5, + 0,224,224,224,11,20,40,15,2,253,0,96,0,96,0,192, + 0,192,1,128,1,128,3,0,3,0,6,0,6,0,12,0, + 12,0,24,0,24,0,48,0,48,0,96,0,96,0,192,0, + 192,0,10,16,32,15,2,0,30,0,127,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,127,128,30,0,10,16,32,15,2,0,28,0, + 252,0,252,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,11,16, + 32,15,1,0,31,128,63,192,112,224,96,96,96,96,0,96, + 0,224,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,224,255,224,11,16,32,15,1,0,31,128,63,192,112,224, + 96,96,0,96,0,224,1,192,15,128,15,192,0,224,0,96, + 0,96,192,96,224,224,127,192,63,128,11,16,32,15,1,0, + 3,128,7,128,15,128,13,128,25,128,25,128,49,128,49,128, + 97,128,97,128,255,224,255,224,1,128,1,128,15,224,15,224, + 11,16,32,15,2,0,127,192,127,192,96,0,96,0,96,0, + 111,0,127,192,113,192,0,224,0,96,0,96,0,96,192,224, + 225,192,127,192,63,0,10,16,32,15,2,0,7,192,31,192, + 60,0,112,0,96,0,224,0,223,0,255,128,225,192,192,192, + 192,192,192,192,224,192,113,192,127,128,31,0,10,16,32,15, + 2,0,255,192,255,192,192,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,10,16,32,15,2,0,30,0,127,128,225,192,192,192, + 192,192,192,192,97,128,63,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,16,32,15,3,0,30,0, + 127,128,97,128,192,192,192,192,192,192,192,192,193,192,227,192, + 126,192,60,192,0,192,1,128,3,128,255,0,252,0,3,11, + 11,15,5,0,224,224,224,0,0,0,0,0,224,224,224,5, + 14,14,15,3,253,56,56,56,0,0,0,0,0,56,56,112, + 96,192,128,13,12,24,15,1,1,0,56,0,240,3,192,15, + 0,60,0,240,0,240,0,60,0,15,0,3,192,0,240,0, + 56,12,6,12,15,1,4,255,240,255,240,0,0,0,0,255, + 240,255,240,13,12,24,15,1,1,224,0,120,0,30,0,7, + 128,1,224,0,120,0,120,1,224,7,128,30,0,120,0,224, + 0,9,15,30,15,3,0,126,0,255,0,195,128,193,128,193, + 128,1,128,3,128,15,0,28,0,24,0,24,0,0,0,24, + 0,24,0,24,0,10,18,36,15,2,254,28,0,127,0,99, + 0,193,128,193,128,199,128,207,128,221,128,217,128,217,128,221, + 128,207,192,199,192,192,0,192,0,97,128,127,128,30,0,14, + 15,30,15,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,13,15,30,15,1,0,255,192,255,224,48,112,48, + 48,48,48,48,112,63,224,63,240,48,56,48,24,48,24,48, + 24,48,56,255,240,255,224,12,15,30,15,1,0,15,176,63, + 240,112,112,96,48,224,48,192,0,192,0,192,0,192,0,192, + 0,224,0,96,0,112,48,63,240,15,192,14,15,30,15,0, + 0,255,192,255,240,48,56,48,24,48,28,48,12,48,12,48, + 12,48,12,48,12,48,12,48,24,48,56,255,240,255,224,13, + 15,30,15,1,0,255,240,255,240,48,48,48,48,49,176,49, + 128,63,128,63,128,49,128,49,128,48,24,48,24,48,24,255, + 248,255,248,13,15,30,15,1,0,255,248,255,248,48,24,48, + 24,49,152,49,128,63,128,63,128,49,128,49,128,48,0,48, + 0,48,0,255,0,255,0,13,15,30,15,1,0,15,216,63, + 248,112,56,96,24,224,24,192,0,192,0,192,0,193,248,193, + 248,224,24,96,24,112,56,63,240,15,192,14,15,30,15,0, + 0,252,252,252,252,48,48,48,48,48,48,48,48,63,240,63, + 240,48,48,48,48,48,48,48,48,48,48,252,252,252,252,10, + 15,30,15,2,0,255,192,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,15,30,15,1,0,31,248,31,248,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,192,192,192,192,192, + 192,225,192,127,128,63,0,14,15,30,15,0,0,252,248,252, + 248,48,224,49,192,51,128,55,0,62,0,63,0,59,128,49, + 192,48,224,48,96,48,112,252,60,252,60,12,15,30,15,1, + 0,255,0,255,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,48,24,48,24,48,255,240,255,240,14, + 15,30,15,0,0,240,60,240,60,120,120,120,120,108,216,108, + 216,108,216,103,152,99,24,99,24,96,24,96,24,96,24,248, + 124,248,124,13,15,30,15,1,0,240,248,240,248,120,48,120, + 48,108,48,108,48,102,48,102,48,99,48,99,48,97,176,97, + 176,96,240,248,240,248,112,13,15,30,15,1,0,15,128,63, + 224,112,112,96,48,224,56,192,24,192,24,192,24,192,24,192, + 24,224,56,96,48,112,112,63,224,15,128,13,15,30,15,1, + 0,255,192,255,240,48,56,48,24,48,24,48,24,48,24,48, + 56,63,240,63,192,48,0,48,0,48,0,255,0,255,0,13, + 18,36,15,1,253,15,128,63,224,112,112,96,48,224,56,192, + 24,192,24,192,24,192,24,192,24,224,56,96,48,112,112,63, + 224,15,128,14,24,63,248,57,224,14,15,30,15,0,0,255, + 128,255,224,48,112,48,48,48,48,48,48,48,112,63,224,63, + 128,49,192,48,224,48,96,48,112,252,60,252,60,12,15,30, + 15,1,0,31,176,63,240,112,112,96,48,96,48,112,0,62, + 0,31,192,3,224,0,112,192,48,192,48,224,112,255,224,223, + 192,12,15,30,15,1,0,255,240,255,240,198,48,198,48,198, + 48,198,48,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,63,192,63,192,13,15,30,15,1,0,248,248,248,248,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,48,96,63,224,31,192,14,15,30,15,0,0,248, + 124,248,124,96,24,96,24,48,48,48,48,48,48,24,96,24, + 96,24,96,12,192,12,192,7,128,7,128,7,128,14,15,30, + 15,0,0,248,124,248,124,96,24,99,24,99,24,103,152,103, + 152,111,216,108,216,108,216,60,240,56,112,56,112,56,112,56, + 112,14,15,30,15,0,0,252,252,252,252,112,56,56,112,28, + 224,15,192,7,128,3,0,7,128,12,192,28,224,56,112,112, + 56,252,252,252,252,14,15,30,15,0,0,252,252,252,252,112, + 56,56,112,24,96,12,192,15,192,7,128,3,0,3,0,3, + 0,3,0,3,0,31,224,31,224,11,15,30,15,2,0,255, + 224,255,224,192,224,193,192,195,128,3,0,7,0,14,0,28, + 0,24,0,56,96,112,96,224,96,255,224,255,224,5,20,20, + 15,6,252,248,248,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,248,248,11,20,40,15,2,253,192,0,192, + 0,96,0,96,0,48,0,48,0,24,0,24,0,12,0,12, + 0,6,0,6,0,3,0,3,0,1,128,1,128,0,192,0, + 192,0,96,0,96,5,20,20,15,3,252,248,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,248,248,8, + 8,8,15,3,8,24,24,60,60,102,102,195,195,15,2,4, + 15,0,252,255,254,255,254,5,4,4,15,4,11,192,96,48, + 24,12,11,22,15,1,0,63,0,127,128,97,192,0,192,31, + 192,127,192,224,192,192,192,193,192,255,240,126,240,13,16,32, + 15,1,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 240,60,112,56,56,48,24,48,24,48,24,56,56,60,112,255, + 240,247,192,12,11,22,15,1,0,31,176,127,240,112,240,224, + 112,192,48,192,0,192,0,224,0,112,112,127,240,31,192,13, + 16,32,15,1,0,1,224,1,224,0,96,0,96,0,96,31, + 96,127,224,113,224,224,224,192,96,192,96,192,96,224,224,113, + 224,127,248,31,120,12,11,22,15,1,0,31,128,127,224,112, + 224,224,112,192,48,255,240,255,240,224,0,112,112,127,240,31, + 192,11,16,32,15,2,0,7,224,15,224,28,0,24,0,24, + 0,255,192,255,192,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,192,255,192,13,16,32,15,1,251,31,120,127, + 248,113,224,224,224,192,96,192,96,192,96,224,224,113,224,127, + 224,31,96,0,96,0,96,0,224,63,192,63,128,14,16,32, + 15,0,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 224,60,112,56,48,48,48,48,48,48,48,48,48,48,48,252, + 252,252,252,10,16,32,15,2,0,28,0,28,0,28,0,0, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,8,21,21,15,2,251,14, + 14,14,0,0,255,255,3,3,3,3,3,3,3,3,3,3, + 3,7,254,252,13,16,32,15,1,0,240,0,240,0,48,0, + 48,0,48,0,49,224,49,224,51,128,55,0,62,0,62,0, + 55,0,51,128,49,192,241,248,241,248,10,16,32,15,2,0, + 124,0,124,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,255,192,255,192, + 16,11,22,15,0,0,239,120,255,252,57,204,49,140,49,140, + 49,140,49,140,49,140,49,140,249,239,249,239,14,11,22,15, + 0,0,243,192,247,224,60,112,56,48,48,48,48,48,48,48, + 48,48,48,48,252,252,252,252,12,11,22,15,1,0,31,128, + 127,224,112,224,224,112,192,48,192,48,192,48,224,112,112,224, + 127,224,31,128,13,16,32,15,0,251,247,192,255,240,60,112, + 56,56,48,24,48,24,48,24,56,56,60,112,63,240,55,192, + 48,0,48,0,48,0,254,0,254,0,13,16,32,15,1,251, + 31,120,127,248,113,224,224,224,192,96,192,96,192,96,224,224, + 113,224,127,224,31,96,0,96,0,96,0,96,3,248,3,248, + 12,11,22,15,1,0,121,224,127,240,30,48,28,0,24,0, + 24,0,24,0,24,0,24,0,255,192,255,192,11,11,22,15, + 2,0,62,192,127,192,225,192,224,192,124,0,31,0,7,192, + 192,224,224,224,255,192,223,128,11,15,30,15,1,0,48,0, + 48,0,48,0,48,0,255,192,255,192,48,0,48,0,48,0, + 48,0,48,0,48,0,56,224,31,224,15,128,14,11,22,15, + 0,0,240,240,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,252,15,188,14,11,22,15,0,0,252,252, + 252,252,48,48,48,48,24,96,24,96,12,192,12,192,7,128, + 7,128,3,0,14,11,22,15,0,0,248,124,248,124,99,24, + 99,24,51,48,55,176,55,176,60,240,28,224,24,96,24,96, + 12,11,22,15,1,0,249,240,249,240,48,192,25,128,15,0, + 6,0,15,0,25,128,48,192,249,240,249,240,12,16,32,15, + 1,251,249,240,249,240,96,96,112,224,48,192,57,192,25,128, + 27,128,15,0,15,0,6,0,14,0,12,0,28,0,254,0, + 254,0,10,11,22,15,2,0,255,192,255,192,195,128,199,0, + 14,0,28,0,56,0,112,192,224,192,255,192,255,192,7,20, + 20,15,4,252,14,24,48,48,48,48,48,48,112,224,112,48, + 48,48,48,48,48,48,24,14,2,18,18,15,6,254,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,20,20,15,3,252,224,48,24,24,24,24,24,24,28,14, + 28,24,24,24,24,24,24,24,48,224,12,4,8,15,1,5, + 60,48,126,112,231,224,195,192,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,15,0,1,4, + 16,16,15,4,251,96,96,96,0,96,96,96,96,96,240,240, + 240,240,240,240,96,9,16,32,15,2,0,12,0,12,0,12, + 0,61,128,127,128,227,128,193,128,192,0,192,0,192,0,225, + 128,127,128,63,0,12,0,12,0,12,0,12,15,30,15,1, + 0,15,128,31,192,56,192,48,0,48,0,48,0,48,0,255, + 0,255,0,24,0,24,0,56,0,112,48,255,240,255,224,10, + 11,22,15,2,2,192,192,255,192,127,128,225,192,192,192,192, + 192,192,192,225,192,127,128,255,192,192,192,12,15,30,15,1, + 0,249,240,249,240,112,224,48,192,57,192,25,128,15,0,15, + 0,63,192,6,0,63,192,6,0,6,0,63,192,63,192,2, + 18,18,15,6,254,192,192,192,192,192,192,192,192,0,0,192, + 192,192,192,192,192,192,192,12,18,36,15,1,254,15,224,31, + 224,56,96,48,96,56,0,126,0,207,128,195,224,240,240,124, + 48,31,48,7,240,1,224,0,192,96,192,97,192,127,128,127, + 0,7,3,3,15,3,12,198,198,198,14,14,28,15,0,1, + 7,128,31,224,56,112,103,152,111,216,220,204,216,12,216,12, + 220,204,111,216,103,152,56,112,31,224,7,128,8,11,11,15, + 3,4,60,102,6,126,198,198,207,123,0,255,255,13,9,18, + 15,1,1,14,56,28,112,56,224,113,192,227,128,113,192,56, + 224,28,112,14,56,12,6,12,15,1,4,255,240,255,240,0, + 48,0,48,0,48,0,48,11,2,4,15,2,6,255,224,255, + 224,14,14,28,15,0,1,7,128,31,224,56,112,111,152,111, + 216,204,204,204,204,207,140,205,140,108,216,108,216,56,112,31, + 224,7,128,7,2,2,15,3,13,254,254,8,7,7,15,3, + 9,60,102,195,195,195,102,60,12,14,28,15,1,0,6,0, + 6,0,6,0,6,0,255,240,255,240,6,0,6,0,6,0, + 6,0,0,0,0,0,255,240,255,240,7,9,9,15,4,7, + 124,198,198,12,24,48,96,198,254,7,9,9,15,4,7,124, + 198,198,12,60,6,198,198,124,6,4,4,15,4,12,28,56, + 112,224,14,16,32,15,0,251,240,240,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,56,112,63,252,63,188,48,0, + 48,0,48,0,48,0,48,0,12,18,36,15,1,254,31,240, + 127,240,230,192,230,192,230,192,230,192,230,192,126,192,30,192, + 6,192,6,192,6,192,6,192,6,192,6,192,6,192,62,240, + 62,240,3,3,3,15,5,6,224,224,224,5,6,6,15,4, + 251,48,48,120,24,248,112,8,9,9,15,3,7,24,248,24, + 24,24,24,24,24,255,8,11,11,15,3,4,60,126,195,195, + 195,195,126,60,0,255,255,13,9,18,15,1,1,227,128,113, + 192,56,224,28,112,14,56,28,112,56,224,113,192,227,128,16, + 16,32,15,255,0,24,0,248,1,24,3,24,6,24,12,24, + 24,24,48,24,100,255,204,1,156,3,44,6,76,12,140,24, + 254,48,12,32,30,16,16,32,15,255,0,24,0,248,1,24, + 3,24,6,24,12,24,24,24,48,24,126,255,243,1,163,3, + 6,6,12,12,24,24,48,48,99,32,127,15,16,32,15,0, + 0,124,0,198,2,198,6,12,12,60,24,6,48,198,96,198, + 200,125,152,3,56,6,88,12,152,25,24,49,252,96,24,64, + 60,9,15,30,15,2,252,12,0,12,0,12,0,0,0,12, + 0,12,0,28,0,120,0,224,0,192,0,193,128,193,128,225, + 128,127,128,63,0,14,20,40,15,0,0,56,0,28,0,14, + 0,7,0,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,14,20,40,15,0,0,0,224,1,192,3,128,7, + 0,0,0,63,0,63,0,7,128,7,128,12,192,12,192,28, + 224,24,96,24,96,63,240,63,240,112,56,96,24,252,252,252, + 252,14,21,42,15,0,0,6,0,15,0,31,128,57,192,112, + 224,0,0,63,0,63,0,7,128,7,128,12,192,12,192,28, + 224,24,96,24,96,63,240,63,240,112,56,96,24,252,252,252, + 252,14,19,38,15,0,0,14,96,31,192,51,128,0,0,63, + 0,63,0,7,128,7,128,12,192,12,192,28,224,24,96,24, + 96,63,240,63,240,112,56,96,24,252,252,252,252,14,19,38, + 15,0,0,24,192,24,192,24,192,0,0,63,0,63,0,7, + 128,7,128,12,192,12,192,28,224,24,96,24,96,63,240,63, + 240,112,56,96,24,252,252,252,252,14,20,40,15,0,0,7, + 0,13,128,8,128,13,128,7,0,63,0,63,0,7,128,7, + 128,12,192,12,192,28,224,24,96,24,96,63,240,63,240,112, + 56,96,24,252,252,252,252,15,15,30,15,0,0,15,254,15, + 254,3,134,7,134,7,128,13,152,9,248,25,248,31,152,63, + 128,49,128,97,134,97,134,247,254,247,254,12,20,40,15,1, + 251,15,176,63,240,112,112,96,48,224,48,192,0,192,0,192, + 0,192,0,192,0,224,0,96,16,112,48,63,224,15,192,6, + 0,15,0,3,0,31,0,14,0,13,20,40,15,1,0,56, + 0,28,0,14,0,7,0,0,0,255,240,255,240,48,48,48, + 48,49,176,49,128,63,128,63,128,49,128,49,128,48,24,48, + 24,48,24,255,248,255,248,13,20,40,15,1,0,0,224,1, + 192,3,128,7,0,0,0,255,240,255,240,48,48,48,48,49, + 176,49,128,63,128,63,128,49,128,49,128,48,24,48,24,48, + 24,255,248,255,248,13,21,42,15,1,0,3,0,7,128,15, + 192,28,224,56,112,0,0,255,240,255,240,48,48,48,48,49, + 176,49,128,63,128,63,128,49,128,49,128,48,24,48,24,48, + 24,255,248,255,248,13,19,38,15,1,0,24,192,24,192,24, + 192,0,0,255,240,255,240,48,48,48,48,49,176,49,128,63, + 128,63,128,49,128,49,128,48,24,48,24,48,24,255,248,255, + 248,10,20,40,15,2,0,112,0,56,0,28,0,14,0,0, + 0,255,192,255,192,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,192,255,192,10, + 20,40,15,2,0,3,128,7,0,14,0,28,0,0,0,255, + 192,255,192,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,255,192,255,192,10,21,42, + 15,2,0,12,0,30,0,63,0,115,128,225,192,0,0,255, + 192,255,192,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,255,192,255,192,10,19,38, + 15,2,0,51,0,51,0,51,0,0,0,255,192,255,192,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,14,15,30,15,0,0,255, + 192,255,240,48,56,48,24,48,28,48,12,254,12,254,12,48, + 12,48,12,48,12,48,24,48,56,255,240,255,224,13,19,38, + 15,1,0,14,96,31,192,51,128,0,0,240,248,240,248,120, + 48,120,48,108,48,108,48,102,48,102,48,99,48,99,48,97, + 176,97,176,96,240,248,240,248,112,13,20,40,15,1,0,28, + 0,14,0,7,0,3,128,0,0,15,128,63,224,112,112,96, + 48,224,56,192,24,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,13,20,40,15,1,0,0,224,1, + 192,3,128,7,0,0,0,15,128,63,224,112,112,96,48,224, + 56,192,24,192,24,192,24,192,24,192,24,224,56,96,48,112, + 112,63,224,15,128,13,21,42,15,1,0,3,0,7,128,15, + 192,28,224,56,112,0,0,15,128,63,224,112,112,96,48,224, + 56,192,24,192,24,192,24,192,24,192,24,224,56,96,48,112, + 112,63,224,15,128,13,19,38,15,1,0,14,96,31,192,51, + 128,0,0,15,128,63,224,112,112,96,48,224,56,192,24,192, + 24,192,24,192,24,192,24,224,56,96,48,112,112,63,224,15, + 128,13,19,38,15,1,0,24,192,24,192,24,192,0,0,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,192,24,224,56,96,48,112,112,63,224,15,128,12,12,24, + 15,1,1,64,32,224,112,112,224,57,192,31,128,15,0,15, + 0,31,128,57,192,112,224,224,112,64,32,13,18,36,15,1, + 255,0,24,0,48,15,224,63,224,112,112,96,240,225,184,193, + 24,195,24,198,24,196,24,204,24,232,56,120,48,112,112,63, + 224,111,128,192,0,13,20,40,15,1,0,56,0,28,0,14, + 0,7,0,0,0,248,248,248,248,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,48,96,63, + 224,31,192,13,20,40,15,1,0,0,224,1,192,3,128,7, + 0,0,0,248,248,248,248,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,48,96,63,224,31, + 192,13,21,42,15,1,0,3,0,7,128,15,192,28,224,56, + 112,0,0,248,248,248,248,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,48,96,63,224,31, + 192,13,19,38,15,1,0,24,192,24,192,24,192,0,0,248, + 248,248,248,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,48,96,63,224,31,192,14,20,40, + 15,0,0,0,224,1,192,3,128,7,0,0,0,252,252,252, + 252,112,56,56,112,24,96,12,192,15,192,7,128,3,0,3, + 0,3,0,3,0,3,0,31,224,31,224,13,15,30,15,1, + 0,252,0,252,0,48,0,63,192,63,240,48,56,48,24,48, + 24,48,24,48,56,63,240,63,192,48,0,252,0,252,0,12, + 16,32,15,1,0,15,0,31,128,57,192,48,192,48,192,49, + 192,55,128,55,192,48,224,48,112,48,48,48,48,48,48,51, + 112,251,224,249,192,12,16,32,15,1,0,112,0,56,0,28, + 0,14,0,0,0,63,0,127,128,97,192,0,192,31,192,127, + 192,224,192,192,192,193,192,255,240,126,240,12,16,32,15,1, + 0,1,192,3,128,7,0,14,0,0,0,63,0,127,128,97, + 192,0,192,31,192,127,192,224,192,192,192,193,192,255,240,126, + 240,12,16,32,15,1,0,14,0,31,0,59,128,113,192,0, + 0,63,0,127,128,97,192,0,192,31,192,127,192,224,192,192, + 192,193,192,255,240,126,240,12,15,30,15,1,0,28,192,63, + 128,103,0,0,0,63,0,127,128,97,192,0,192,31,192,127, + 192,224,192,192,192,193,192,255,240,126,240,12,15,30,15,1, + 0,49,128,49,128,49,128,0,0,63,0,127,128,97,192,0, + 192,31,192,127,192,224,192,192,192,193,192,255,240,126,240,12, + 16,32,15,1,0,14,0,27,0,17,0,27,0,14,0,63, + 0,127,128,97,192,0,192,31,192,127,192,224,192,192,192,193, + 192,255,240,126,240,14,11,22,15,0,0,60,240,127,248,103, + 156,3,12,31,12,127,252,227,252,195,0,199,140,255,252,124, + 240,11,16,32,15,1,251,31,96,127,224,112,224,224,96,192, + 96,192,0,192,0,224,0,112,96,127,224,31,192,6,0,15, + 0,3,0,31,0,14,0,12,16,32,15,1,0,56,0,28, + 0,14,0,7,0,0,0,31,128,127,224,112,224,224,112,192, + 48,255,240,255,240,224,0,112,112,127,240,31,192,12,16,32, + 15,1,0,1,192,3,128,7,0,14,0,0,0,31,128,127, + 224,112,224,224,112,192,48,255,240,255,240,224,0,112,112,127, + 240,31,192,12,16,32,15,1,0,7,0,15,128,29,192,56, + 224,0,0,31,128,127,224,112,224,224,112,192,48,255,240,255, + 240,224,0,112,112,127,240,31,192,12,15,30,15,1,0,49, + 128,49,128,49,128,0,0,31,128,127,224,112,224,224,112,192, + 48,255,240,255,240,224,0,112,112,127,240,31,192,10,16,32, + 15,2,0,224,0,112,0,56,0,28,0,0,0,124,0,124, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,10,16,32,15,2,0,3,128,7,0,14,0,28, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,10,16,32,15,2,0,28, + 0,62,0,119,0,227,128,0,0,124,0,124,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,192,255,192,10, + 15,30,15,2,0,99,0,99,0,99,0,0,0,124,0,124, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,17,34,15,0,0,240,0,252,112,15,240,31, + 128,125,192,112,224,15,240,63,240,56,120,112,56,96,24,96, + 24,96,24,112,56,56,112,63,240,15,192,14,15,30,15,0, + 0,14,96,31,192,51,128,0,0,243,192,247,224,60,112,56, + 48,48,48,48,48,48,48,48,48,48,48,252,252,252,252,12, + 16,32,15,1,0,56,0,28,0,14,0,7,0,0,0,31, + 128,127,224,112,224,224,112,192,48,192,48,192,48,224,112,112, + 224,127,224,31,128,12,16,32,15,1,0,1,192,3,128,7, + 0,14,0,0,0,31,128,127,224,112,224,224,112,192,48,192, + 48,192,48,224,112,112,224,127,224,31,128,12,16,32,15,1, + 0,14,0,31,0,59,128,113,192,0,0,31,128,127,224,112, + 224,224,112,192,48,192,48,192,48,224,112,112,224,127,224,31, + 128,12,15,30,15,1,0,28,192,63,128,103,0,0,0,31, + 128,127,224,112,224,224,112,192,48,192,48,192,48,224,112,112, + 224,127,224,31,128,12,15,30,15,1,0,49,128,49,128,49, + 128,0,0,31,128,127,224,112,224,224,112,192,48,192,48,192, + 48,224,112,112,224,127,224,31,128,13,12,24,15,0,1,7, + 0,7,0,7,0,0,0,0,0,255,248,255,248,0,0,0, + 0,7,0,7,0,7,0,14,14,28,15,0,254,0,12,15, + 216,63,240,56,112,112,216,97,152,99,24,102,24,108,56,56, + 112,63,240,63,192,96,0,192,0,14,16,32,15,0,0,56, + 0,28,0,14,0,7,0,0,0,240,240,240,240,48,48,48, + 48,48,48,48,48,48,48,48,48,56,112,31,252,15,188,14, + 16,32,15,0,0,1,192,3,128,7,0,14,0,0,0,240, + 240,240,240,48,48,48,48,48,48,48,48,48,48,48,48,56, + 112,31,252,15,188,14,16,32,15,0,0,7,0,15,128,29, + 192,56,224,0,0,240,240,240,240,48,48,48,48,48,48,48, + 48,48,48,48,48,56,112,31,252,15,188,14,15,30,15,0, + 0,24,192,24,192,24,192,0,0,240,240,240,240,48,48,48, + 48,48,48,48,48,48,48,48,48,56,112,31,252,15,188,12, + 21,42,15,1,251,0,224,1,192,3,128,7,0,0,0,249, + 240,249,240,96,96,112,224,48,192,57,192,25,128,27,128,15, + 0,15,0,6,0,14,0,12,0,28,0,254,0,254,0,13, + 21,42,15,1,251,240,0,240,0,48,0,48,0,48,0,55, + 192,63,240,60,112,56,56,48,24,48,24,48,24,56,56,60, + 112,63,240,55,192,48,0,48,0,48,0,254,0,254,0,12, + 20,40,15,1,251,49,128,49,128,49,128,0,0,249,240,249, + 240,96,96,112,224,48,192,57,192,25,128,27,128,15,0,15, + 0,6,0,14,0,12,0,28,0,254,0,254,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=21 x= 6 y=11 dx=15 dy= 0 ascent=17 len=40 + Font Bounding box w=22 h=35 x=-4 y=-9 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =15 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB18r[3001] U8G_SECTION(".progmem.u8g_font_courB18r") = { + 0,22,35,252,247,15,3,223,8,17,32,127,251,17,251,16, + 251,0,0,0,15,0,1,4,16,16,15,5,0,96,240,240, + 240,240,240,240,96,96,96,96,96,0,96,96,96,7,7,7, + 15,3,9,238,238,238,238,68,68,68,12,19,38,15,1,254, + 12,192,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,51,0,10,20,40,15,2,253,12,0,12,0, + 61,128,127,128,195,128,193,128,192,0,224,0,126,0,31,128, + 1,192,0,192,192,192,225,192,255,128,223,0,12,0,12,0, + 12,0,12,0,11,15,30,15,2,0,60,0,102,0,195,0, + 195,0,102,0,60,0,1,192,15,0,56,0,231,128,12,192, + 24,96,24,96,12,192,7,128,11,14,28,15,2,0,30,0, + 63,0,99,0,96,0,96,0,48,0,56,0,124,192,111,192, + 199,128,195,0,199,128,255,224,124,224,3,7,7,15,5,8, + 224,224,224,224,224,64,64,5,20,20,15,6,252,24,56,48, + 96,96,96,192,192,192,192,192,192,192,192,96,96,96,48,56, + 24,5,20,20,15,3,252,192,224,96,48,48,48,24,24,24, + 24,24,24,24,24,48,48,48,96,224,192,10,11,22,15,2, + 5,12,0,12,0,12,0,204,192,255,192,63,0,12,0,63, + 0,51,0,115,128,97,128,12,12,24,15,1,1,6,0,6, + 0,6,0,6,0,6,0,255,240,255,240,6,0,6,0,6, + 0,6,0,6,0,5,6,6,15,4,253,56,56,112,96,192, + 128,11,2,4,15,2,6,255,224,255,224,3,3,3,15,5, + 0,224,224,224,11,20,40,15,2,253,0,96,0,96,0,192, + 0,192,1,128,1,128,3,0,3,0,6,0,6,0,12,0, + 12,0,24,0,24,0,48,0,48,0,96,0,96,0,192,0, + 192,0,10,16,32,15,2,0,30,0,127,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,127,128,30,0,10,16,32,15,2,0,28,0, + 252,0,252,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,11,16, + 32,15,1,0,31,128,63,192,112,224,96,96,96,96,0,96, + 0,224,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,224,255,224,11,16,32,15,1,0,31,128,63,192,112,224, + 96,96,0,96,0,224,1,192,15,128,15,192,0,224,0,96, + 0,96,192,96,224,224,127,192,63,128,11,16,32,15,1,0, + 3,128,7,128,15,128,13,128,25,128,25,128,49,128,49,128, + 97,128,97,128,255,224,255,224,1,128,1,128,15,224,15,224, + 11,16,32,15,2,0,127,192,127,192,96,0,96,0,96,0, + 111,0,127,192,113,192,0,224,0,96,0,96,0,96,192,224, + 225,192,127,192,63,0,10,16,32,15,2,0,7,192,31,192, + 60,0,112,0,96,0,224,0,223,0,255,128,225,192,192,192, + 192,192,192,192,224,192,113,192,127,128,31,0,10,16,32,15, + 2,0,255,192,255,192,192,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,10,16,32,15,2,0,30,0,127,128,225,192,192,192, + 192,192,192,192,97,128,63,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,16,32,15,3,0,30,0, + 127,128,97,128,192,192,192,192,192,192,192,192,193,192,227,192, + 126,192,60,192,0,192,1,128,3,128,255,0,252,0,3,11, + 11,15,5,0,224,224,224,0,0,0,0,0,224,224,224,5, + 14,14,15,3,253,56,56,56,0,0,0,0,0,56,56,112, + 96,192,128,13,12,24,15,1,1,0,56,0,240,3,192,15, + 0,60,0,240,0,240,0,60,0,15,0,3,192,0,240,0, + 56,12,6,12,15,1,4,255,240,255,240,0,0,0,0,255, + 240,255,240,13,12,24,15,1,1,224,0,120,0,30,0,7, + 128,1,224,0,120,0,120,1,224,7,128,30,0,120,0,224, + 0,9,15,30,15,3,0,126,0,255,0,195,128,193,128,193, + 128,1,128,3,128,15,0,28,0,24,0,24,0,0,0,24, + 0,24,0,24,0,10,18,36,15,2,254,28,0,127,0,99, + 0,193,128,193,128,199,128,207,128,221,128,217,128,217,128,221, + 128,207,192,199,192,192,0,192,0,97,128,127,128,30,0,14, + 15,30,15,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,13,15,30,15,1,0,255,192,255,224,48,112,48, + 48,48,48,48,112,63,224,63,240,48,56,48,24,48,24,48, + 24,48,56,255,240,255,224,12,15,30,15,1,0,15,176,63, + 240,112,112,96,48,224,48,192,0,192,0,192,0,192,0,192, + 0,224,0,96,0,112,48,63,240,15,192,14,15,30,15,0, + 0,255,192,255,240,48,56,48,24,48,28,48,12,48,12,48, + 12,48,12,48,12,48,12,48,24,48,56,255,240,255,224,13, + 15,30,15,1,0,255,240,255,240,48,48,48,48,49,176,49, + 128,63,128,63,128,49,128,49,128,48,24,48,24,48,24,255, + 248,255,248,13,15,30,15,1,0,255,248,255,248,48,24,48, + 24,49,152,49,128,63,128,63,128,49,128,49,128,48,0,48, + 0,48,0,255,0,255,0,13,15,30,15,1,0,15,216,63, + 248,112,56,96,24,224,24,192,0,192,0,192,0,193,248,193, + 248,224,24,96,24,112,56,63,240,15,192,14,15,30,15,0, + 0,252,252,252,252,48,48,48,48,48,48,48,48,63,240,63, + 240,48,48,48,48,48,48,48,48,48,48,252,252,252,252,10, + 15,30,15,2,0,255,192,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,15,30,15,1,0,31,248,31,248,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,192,192,192,192,192, + 192,225,192,127,128,63,0,14,15,30,15,0,0,252,248,252, + 248,48,224,49,192,51,128,55,0,62,0,63,0,59,128,49, + 192,48,224,48,96,48,112,252,60,252,60,12,15,30,15,1, + 0,255,0,255,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,48,24,48,24,48,255,240,255,240,14, + 15,30,15,0,0,240,60,240,60,120,120,120,120,108,216,108, + 216,108,216,103,152,99,24,99,24,96,24,96,24,96,24,248, + 124,248,124,13,15,30,15,1,0,240,248,240,248,120,48,120, + 48,108,48,108,48,102,48,102,48,99,48,99,48,97,176,97, + 176,96,240,248,240,248,112,13,15,30,15,1,0,15,128,63, + 224,112,112,96,48,224,56,192,24,192,24,192,24,192,24,192, + 24,224,56,96,48,112,112,63,224,15,128,13,15,30,15,1, + 0,255,192,255,240,48,56,48,24,48,24,48,24,48,24,48, + 56,63,240,63,192,48,0,48,0,48,0,255,0,255,0,13, + 18,36,15,1,253,15,128,63,224,112,112,96,48,224,56,192, + 24,192,24,192,24,192,24,192,24,224,56,96,48,112,112,63, + 224,15,128,14,24,63,248,57,224,14,15,30,15,0,0,255, + 128,255,224,48,112,48,48,48,48,48,48,48,112,63,224,63, + 128,49,192,48,224,48,96,48,112,252,60,252,60,12,15,30, + 15,1,0,31,176,63,240,112,112,96,48,96,48,112,0,62, + 0,31,192,3,224,0,112,192,48,192,48,224,112,255,224,223, + 192,12,15,30,15,1,0,255,240,255,240,198,48,198,48,198, + 48,198,48,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,63,192,63,192,13,15,30,15,1,0,248,248,248,248,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,48,96,63,224,31,192,14,15,30,15,0,0,248, + 124,248,124,96,24,96,24,48,48,48,48,48,48,24,96,24, + 96,24,96,12,192,12,192,7,128,7,128,7,128,14,15,30, + 15,0,0,248,124,248,124,96,24,99,24,99,24,103,152,103, + 152,111,216,108,216,108,216,60,240,56,112,56,112,56,112,56, + 112,14,15,30,15,0,0,252,252,252,252,112,56,56,112,28, + 224,15,192,7,128,3,0,7,128,12,192,28,224,56,112,112, + 56,252,252,252,252,14,15,30,15,0,0,252,252,252,252,112, + 56,56,112,24,96,12,192,15,192,7,128,3,0,3,0,3, + 0,3,0,3,0,31,224,31,224,11,15,30,15,2,0,255, + 224,255,224,192,224,193,192,195,128,3,0,7,0,14,0,28, + 0,24,0,56,96,112,96,224,96,255,224,255,224,5,20,20, + 15,6,252,248,248,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,248,248,11,20,40,15,2,253,192,0,192, + 0,96,0,96,0,48,0,48,0,24,0,24,0,12,0,12, + 0,6,0,6,0,3,0,3,0,1,128,1,128,0,192,0, + 192,0,96,0,96,5,20,20,15,3,252,248,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,248,248,8, + 8,8,15,3,8,24,24,60,60,102,102,195,195,15,2,4, + 15,0,252,255,254,255,254,5,4,4,15,4,11,192,96,48, + 24,12,11,22,15,1,0,63,0,127,128,97,192,0,192,31, + 192,127,192,224,192,192,192,193,192,255,240,126,240,13,16,32, + 15,1,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 240,60,112,56,56,48,24,48,24,48,24,56,56,60,112,255, + 240,247,192,12,11,22,15,1,0,31,176,127,240,112,240,224, + 112,192,48,192,0,192,0,224,0,112,112,127,240,31,192,13, + 16,32,15,1,0,1,224,1,224,0,96,0,96,0,96,31, + 96,127,224,113,224,224,224,192,96,192,96,192,96,224,224,113, + 224,127,248,31,120,12,11,22,15,1,0,31,128,127,224,112, + 224,224,112,192,48,255,240,255,240,224,0,112,112,127,240,31, + 192,11,16,32,15,2,0,7,224,15,224,28,0,24,0,24, + 0,255,192,255,192,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,192,255,192,13,16,32,15,1,251,31,120,127, + 248,113,224,224,224,192,96,192,96,192,96,224,224,113,224,127, + 224,31,96,0,96,0,96,0,224,63,192,63,128,14,16,32, + 15,0,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 224,60,112,56,48,48,48,48,48,48,48,48,48,48,48,252, + 252,252,252,10,16,32,15,2,0,28,0,28,0,28,0,0, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,8,21,21,15,2,251,14, + 14,14,0,0,255,255,3,3,3,3,3,3,3,3,3,3, + 3,7,254,252,13,16,32,15,1,0,240,0,240,0,48,0, + 48,0,48,0,49,224,49,224,51,128,55,0,62,0,62,0, + 55,0,51,128,49,192,241,248,241,248,10,16,32,15,2,0, + 124,0,124,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,255,192,255,192, + 16,11,22,15,0,0,239,120,255,252,57,204,49,140,49,140, + 49,140,49,140,49,140,49,140,249,239,249,239,14,11,22,15, + 0,0,243,192,247,224,60,112,56,48,48,48,48,48,48,48, + 48,48,48,48,252,252,252,252,12,11,22,15,1,0,31,128, + 127,224,112,224,224,112,192,48,192,48,192,48,224,112,112,224, + 127,224,31,128,13,16,32,15,0,251,247,192,255,240,60,112, + 56,56,48,24,48,24,48,24,56,56,60,112,63,240,55,192, + 48,0,48,0,48,0,254,0,254,0,13,16,32,15,1,251, + 31,120,127,248,113,224,224,224,192,96,192,96,192,96,224,224, + 113,224,127,224,31,96,0,96,0,96,0,96,3,248,3,248, + 12,11,22,15,1,0,121,224,127,240,30,48,28,0,24,0, + 24,0,24,0,24,0,24,0,255,192,255,192,11,11,22,15, + 2,0,62,192,127,192,225,192,224,192,124,0,31,0,7,192, + 192,224,224,224,255,192,223,128,11,15,30,15,1,0,48,0, + 48,0,48,0,48,0,255,192,255,192,48,0,48,0,48,0, + 48,0,48,0,48,0,56,224,31,224,15,128,14,11,22,15, + 0,0,240,240,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,252,15,188,14,11,22,15,0,0,252,252, + 252,252,48,48,48,48,24,96,24,96,12,192,12,192,7,128, + 7,128,3,0,14,11,22,15,0,0,248,124,248,124,99,24, + 99,24,51,48,55,176,55,176,60,240,28,224,24,96,24,96, + 12,11,22,15,1,0,249,240,249,240,48,192,25,128,15,0, + 6,0,15,0,25,128,48,192,249,240,249,240,12,16,32,15, + 1,251,249,240,249,240,96,96,112,224,48,192,57,192,25,128, + 27,128,15,0,15,0,6,0,14,0,12,0,28,0,254,0, + 254,0,10,11,22,15,2,0,255,192,255,192,195,128,199,0, + 14,0,28,0,56,0,112,192,224,192,255,192,255,192,7,20, + 20,15,4,252,14,24,48,48,48,48,48,48,112,224,112,48, + 48,48,48,48,48,48,24,14,2,18,18,15,6,254,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,20,20,15,3,252,224,48,24,24,24,24,24,24,28,14, + 28,24,24,24,24,24,24,24,48,224,12,4,8,15,1,5, + 60,48,126,112,231,224,195,192,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 20, '1' Height: 21 + Calculated Max Values w=21 h=29 x= 8 y=17 dx=20 dy= 0 ascent=26 len=87 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24[10502] U8G_SECTION(".progmem.u8g_font_courB24") = { + 0,30,44,249,245,20,5,57,12,115,32,255,249,26,249,21, + 249,0,0,0,20,0,1,5,21,21,20,7,0,112,248,248, + 248,248,248,112,112,112,112,112,112,112,112,112,32,0,0,112, + 248,112,9,10,20,20,5,10,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,65,0,15,26,52,20, + 2,253,14,56,14,56,14,56,14,56,14,56,14,56,14,56, + 14,56,127,254,127,254,127,254,28,112,28,112,28,112,28,112, + 255,252,255,252,255,252,56,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,224,14,27,54,20,3,252,7,0,7,0, + 7,0,15,216,63,248,127,248,240,120,224,56,224,56,240,0, + 254,0,127,192,63,240,7,248,0,252,0,60,224,28,224,28, + 240,60,255,248,255,240,231,128,7,0,7,0,7,0,7,0, + 7,0,15,21,42,20,2,0,31,0,63,128,49,128,96,192, + 96,192,96,192,113,194,63,142,31,62,0,248,3,224,31,0, + 252,248,241,252,195,142,3,6,3,6,3,6,1,140,1,252, + 0,248,14,18,36,20,2,0,7,160,31,224,63,224,60,96, + 56,0,56,0,60,0,28,0,30,0,127,60,127,188,243,188, + 225,240,224,240,224,240,255,252,127,188,63,60,4,11,11,20, + 8,10,112,112,112,112,112,224,224,224,224,224,224,7,26,26, + 20,8,251,14,14,30,60,56,56,120,112,112,240,240,240,224, + 224,240,240,240,112,112,120,56,60,28,30,14,14,7,26,26, + 20,4,251,224,224,240,120,56,56,60,28,28,30,30,30,14, + 14,30,30,30,28,28,60,56,120,112,240,224,224,15,14,28, + 20,3,7,3,128,3,128,3,128,3,128,99,140,251,190,127, + 252,31,240,15,224,15,224,30,240,60,120,120,60,48,24,17, + 17,51,20,1,1,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,255,255,128,255,255,128, + 255,255,128,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,7,10,10,20,5,251,30,30, + 60,60,56,112,112,224,224,192,15,3,6,20,2,8,255,254, + 255,254,255,254,5,4,4,20,7,0,112,248,248,112,13,27, + 54,20,3,252,0,56,0,56,0,120,0,112,0,112,0,224, + 0,224,1,224,1,192,1,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,28,0,60,0,56,0,56,0, + 112,0,112,0,240,0,224,0,224,0,13,21,42,20,3,0, + 15,128,63,224,127,240,112,112,240,120,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,112,112,127,240,63,224,15,128,13,21,42,20,4,0, + 3,0,15,0,127,0,255,0,255,0,103,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,255,248,255,248,255,248,14,21,42,20,2,0, + 7,192,31,240,63,248,120,60,112,28,112,28,112,28,0,28, + 0,56,0,120,0,240,1,224,3,192,7,128,15,0,30,0, + 60,0,120,0,255,252,255,252,255,252,15,21,42,20,2,0, + 7,224,31,240,127,248,120,60,112,28,0,28,0,28,0,60, + 7,248,7,240,7,248,0,124,0,28,0,14,0,14,0,14, + 0,30,224,60,255,252,255,248,63,224,14,21,42,20,2,0, + 0,240,1,240,1,240,3,240,7,240,7,112,15,112,14,112, + 30,112,28,112,56,112,120,112,112,112,255,252,255,252,255,252, + 0,112,0,112,3,252,3,252,3,252,15,21,42,20,2,0, + 63,252,63,252,63,252,56,0,56,0,56,0,56,0,63,224, + 63,248,63,252,56,124,0,30,0,14,0,14,0,14,0,14, + 64,30,240,60,255,248,127,248,31,224,14,21,42,20,3,0, + 1,248,7,248,15,248,31,0,60,0,120,0,112,0,112,0, + 227,192,239,240,255,240,248,120,240,60,224,28,224,28,240,28, + 112,60,120,120,127,248,63,240,15,192,14,21,42,20,2,0, + 255,252,255,252,255,252,224,60,224,56,224,56,0,56,0,120, + 0,112,0,112,0,240,0,224,0,224,1,224,1,192,1,192, + 3,192,3,128,7,128,7,0,7,0,14,21,42,20,3,0, + 15,128,63,224,127,240,112,112,224,56,224,56,224,56,112,112, + 127,240,63,224,63,240,124,248,240,60,224,28,224,28,224,28, + 224,28,248,124,127,248,63,240,15,192,14,21,42,20,3,0, + 15,128,63,224,127,240,120,240,240,120,224,56,224,60,224,60, + 224,60,240,124,120,252,63,220,63,156,15,60,0,56,0,120, + 0,112,97,240,255,224,255,128,126,0,5,15,15,20,7,0, + 112,248,248,112,0,0,0,0,0,0,0,112,248,248,112,8, + 19,19,20,5,252,14,31,31,14,0,0,0,0,0,0,30, + 30,60,56,120,112,224,224,192,18,19,57,20,0,0,0,1, + 192,0,3,192,0,15,192,0,63,128,0,254,0,1,248,0, + 7,224,0,31,128,0,127,0,0,252,0,0,127,0,0,31, + 128,0,7,224,0,1,248,0,0,254,0,0,63,128,0,15, + 192,0,3,192,0,1,192,17,9,27,20,1,5,255,255,128, + 255,255,128,255,255,128,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,255,255,128,18,19,57,20,1,0,224,0, + 0,240,0,0,252,0,0,127,0,0,31,192,0,7,224,0, + 1,248,0,0,126,0,0,63,128,0,15,192,0,63,128,0, + 126,0,1,248,0,7,224,0,31,192,0,127,0,0,252,0, + 0,240,0,0,224,0,0,13,20,40,20,3,0,31,192,127, + 224,255,240,224,248,224,56,224,56,0,56,0,120,0,240,3, + 240,7,192,7,128,7,0,7,0,0,0,0,0,0,0,7, + 0,15,128,7,0,14,23,46,20,3,254,15,192,31,224,56, + 112,112,48,96,48,224,48,192,48,193,240,199,240,198,48,204, + 48,204,48,204,48,206,48,199,252,195,188,192,0,224,0,96, + 0,112,48,56,112,31,224,15,192,21,20,60,20,255,0,31, + 240,0,31,248,0,31,248,0,1,220,0,1,220,0,1,220, + 0,3,142,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,18,20,60,20,1, + 0,255,248,0,255,254,0,255,255,0,28,7,128,28,3,128, + 28,3,128,28,3,128,28,7,128,31,255,0,31,252,0,31, + 254,0,28,15,128,28,3,192,28,1,192,28,1,192,28,1, + 192,28,3,192,255,255,128,255,255,0,255,252,0,18,20,60, + 20,1,0,3,249,128,15,255,128,31,255,128,62,15,128,120, + 7,128,112,3,128,240,3,128,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,240,0,0, + 120,3,128,124,7,192,63,255,128,31,255,0,7,252,0,17, + 20,60,20,1,0,255,224,0,255,248,0,255,252,0,56,62, + 0,56,15,0,56,7,0,56,7,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 7,128,56,7,0,56,31,0,255,254,0,255,252,0,255,240, + 0,17,20,60,20,1,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,20,60,20,1,0,255,255,128,255,255,128,255, + 255,128,28,3,128,28,3,128,28,3,128,28,115,128,28,112, + 0,31,240,0,31,240,0,31,240,0,28,112,0,28,112,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,17,20,60,20,2,0,3,243,0,15,255, + 0,31,255,0,60,15,0,120,7,0,112,7,0,240,7,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,255,128,224, + 255,128,224,255,128,240,7,0,112,7,0,124,15,0,63,255, + 0,31,254,0,7,248,0,17,20,60,20,1,0,255,127,128, + 255,127,128,255,127,128,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,63,254,0,63,254,0,63,254,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 255,127,128,255,127,128,255,127,128,13,20,40,20,3,0,255, + 248,255,248,255,248,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,255,248,255,248,255,248,17,20,60,20,2,0,7,255,128, + 7,255,128,7,255,128,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,224,56,0,224,56, + 0,224,56,0,224,56,0,224,56,0,224,120,0,240,240,0, + 255,240,0,127,224,0,31,128,0,19,20,60,20,1,0,255, + 159,192,255,159,192,255,159,192,28,15,0,28,30,0,28,60, + 0,28,120,0,28,240,0,31,224,0,31,240,0,31,248,0, + 30,124,0,28,60,0,28,30,0,28,14,0,28,15,0,28, + 7,0,255,135,224,255,135,224,255,135,224,17,20,60,20,1, + 0,255,224,0,255,224,0,255,224,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,3,128,14,3,128,14,3,128,14,3,128,14,3, + 128,14,3,128,255,255,128,255,255,128,255,255,128,21,20,60, + 20,255,0,252,1,248,252,1,248,254,3,248,62,3,224,63, + 7,224,63,7,224,59,142,224,59,142,224,59,222,224,57,220, + 224,57,220,224,56,248,224,56,248,224,56,248,224,56,112,224, + 56,112,224,56,0,224,255,7,248,255,7,248,255,7,248,19, + 20,60,20,0,0,248,31,224,252,31,224,254,31,224,62,3, + 128,63,3,128,63,3,128,59,131,128,59,195,128,57,195,128, + 57,227,128,56,243,128,56,115,128,56,123,128,56,59,128,56, + 31,128,56,31,128,56,15,128,255,7,128,255,7,128,255,3, + 128,18,20,60,20,1,0,3,240,0,15,252,0,31,254,0, + 60,15,0,120,7,128,112,3,128,240,3,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,240,3, + 192,112,3,128,120,7,128,60,15,0,31,254,0,15,252,0, + 3,240,0,17,20,60,20,1,0,255,248,0,255,254,0,255, + 255,0,28,15,0,28,3,128,28,3,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,240,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,18,25,75,20,1,251,3,240,0,15,248, + 0,31,254,0,60,15,0,120,7,128,112,3,128,240,3,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,112,3,128,120,7,128,60,15,0,31,254, + 0,15,252,0,7,240,0,14,0,0,31,225,192,63,255,192, + 63,255,192,56,63,0,20,20,60,20,1,0,255,248,0,255, + 254,0,255,255,0,28,15,0,28,7,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,248,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,255, + 131,240,255,129,240,255,129,240,15,20,40,20,2,0,15,204, + 63,252,127,252,240,124,224,28,224,28,240,28,248,0,127,0, + 63,224,15,248,1,252,0,62,224,30,224,14,224,14,240,30, + 255,252,255,248,231,224,17,20,60,20,1,0,255,255,128,255, + 255,128,255,255,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,63, + 254,0,63,254,0,63,254,0,19,20,60,20,0,0,255,31, + 224,255,31,224,255,31,224,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,28,7,0,31,31, + 0,15,254,0,7,252,0,1,240,0,21,20,60,20,255,0, + 255,143,248,255,143,248,255,143,248,28,1,192,28,1,192,30, + 3,192,14,3,128,14,3,128,7,7,0,7,7,0,7,143, + 0,3,142,0,3,142,0,3,222,0,1,220,0,1,220,0, + 0,248,0,0,248,0,0,248,0,0,112,0,19,20,60,20, + 0,0,255,31,224,255,31,224,255,31,224,112,1,192,112,1, + 192,112,225,192,112,225,192,113,241,192,57,243,128,57,243,128, + 59,187,128,59,187,128,59,187,128,63,31,128,63,31,128,30, + 15,0,30,15,0,30,15,0,28,7,0,28,7,0,19,20, + 60,20,0,0,255,31,224,255,31,224,255,31,224,60,7,128, + 30,15,0,15,30,0,7,188,0,3,248,0,1,240,0,0, + 224,0,1,240,0,3,248,0,7,188,0,15,30,0,14,14, + 0,30,15,0,60,7,128,255,31,224,255,31,224,255,31,224, + 19,20,60,20,0,0,255,31,224,255,31,224,255,31,224,60, + 7,128,14,14,0,15,30,0,7,28,0,7,188,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,15,254,0,15,254,0,15, + 254,0,15,20,40,20,2,0,127,252,127,252,127,252,112,60, + 112,56,112,120,112,240,113,224,1,192,3,192,7,128,15,0, + 14,14,30,14,60,14,120,14,112,14,255,254,255,254,255,254, + 7,26,26,20,8,251,254,254,254,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,254,254,254, + 13,27,54,20,3,252,224,0,224,0,240,0,112,0,112,0, + 56,0,56,0,60,0,28,0,28,0,14,0,14,0,15,0, + 7,0,7,128,3,128,3,128,1,192,1,192,1,224,0,224, + 0,224,0,112,0,112,0,120,0,56,0,56,7,26,26,20, + 4,251,254,254,254,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,254,254,254,13,11,22,20, + 3,11,2,0,7,0,7,0,15,128,31,192,61,224,56,224, + 120,240,240,120,224,56,224,56,20,3,9,20,0,249,255,255, + 240,255,255,240,255,255,240,6,6,6,20,6,16,192,224,112, + 56,28,12,16,15,30,20,2,0,31,224,127,248,127,252,112, + 60,0,28,0,28,15,252,127,252,127,252,240,28,224,28,224, + 124,255,255,127,223,63,159,19,21,63,20,0,0,252,0,0, + 252,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 124,0,29,255,0,31,255,128,31,135,192,30,1,192,30,1, + 224,28,0,224,28,0,224,28,0,224,28,0,224,30,1,192, + 31,3,192,255,255,128,255,255,0,252,254,0,16,15,30,20, + 2,0,7,230,31,254,63,254,124,62,112,14,224,14,224,14, + 224,0,224,0,224,0,240,6,120,15,127,254,63,252,15,240, + 19,21,63,20,1,0,0,63,0,0,63,0,0,63,0,0, + 7,0,0,7,0,0,7,0,7,231,0,31,255,0,63,255, + 0,124,63,0,112,15,0,240,15,0,224,7,0,224,7,0, + 224,7,0,224,7,0,112,15,0,124,63,0,63,255,224,31, + 247,224,7,231,224,18,15,45,20,1,0,3,240,0,15,252, + 0,31,254,0,62,31,0,120,7,128,112,3,128,255,255,128, + 255,255,128,255,255,128,240,0,0,120,0,0,126,3,128,63, + 255,192,31,255,128,7,254,0,16,21,42,20,3,0,1,255, + 7,255,7,255,15,0,14,0,14,0,255,252,255,252,255,252, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,252,255,252,255,252,18,22,66,20,1,249,7,207, + 192,31,255,192,63,255,192,124,126,0,112,30,0,240,30,0, + 224,14,0,224,14,0,224,14,0,240,30,0,112,30,0,120, + 126,0,63,254,0,31,238,0,15,206,0,0,14,0,0,14, + 0,0,30,0,0,60,0,31,252,0,31,248,0,31,224,0, + 18,21,63,20,1,0,252,0,0,252,0,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,248,0,29,252,0,31,254, + 0,31,15,0,30,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,127,31,192,127, + 31,192,127,31,192,15,21,42,20,3,0,7,128,7,128,7, + 128,7,128,0,0,0,0,127,128,127,128,127,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255, + 254,255,254,255,254,12,28,56,20,3,249,3,192,3,192,3, + 192,3,192,0,0,0,0,255,240,255,240,255,240,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,240,255,224,255, + 192,255,128,17,21,63,20,1,0,252,0,0,252,0,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,255,0,28,255, + 0,28,255,0,28,120,0,28,240,0,29,224,0,31,192,0, + 31,192,0,31,224,0,29,240,0,28,248,0,28,124,0,252, + 63,128,252,63,128,252,63,128,15,21,42,20,3,0,127,128, + 127,128,127,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,255,254,255,254,255,254,20,15,45,20,1,0,243,143, + 0,255,255,128,255,255,192,120,241,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,112,225,192,112,225,192,112, + 225,192,252,249,240,252,249,240,252,249,240,17,15,45,20,2, + 0,249,240,0,251,248,0,255,252,0,62,30,0,60,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,254,63,128,254,63,128,254,63,128,17,15, + 45,20,2,0,7,240,0,31,252,0,63,254,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,240, + 7,128,112,7,0,120,15,0,63,254,0,31,252,0,7,240, + 0,19,22,66,20,0,249,252,124,0,253,255,0,255,255,128, + 31,3,192,30,1,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,1,224,30,1,192,31,7,192,31,255,128,29,254, + 0,28,120,0,28,0,0,28,0,0,28,0,0,28,0,0, + 255,192,0,255,192,0,255,192,0,19,22,66,20,1,249,7, + 231,224,31,255,224,63,255,224,124,63,0,112,15,0,240,15, + 0,224,7,0,224,7,0,224,7,0,240,15,0,112,15,0, + 124,63,0,63,255,0,31,247,0,7,199,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,127,224,0,127,224,0,127, + 224,17,15,45,20,2,0,126,62,0,126,255,0,127,255,128, + 15,199,0,15,2,0,15,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,255,252,0,255,252, + 0,255,252,0,15,15,30,20,3,0,15,236,63,252,63,252, + 120,60,112,28,120,0,127,192,63,248,15,252,224,62,224,14, + 248,30,255,252,255,248,231,224,16,20,40,20,2,0,28,0, + 28,0,28,0,28,0,28,0,255,252,255,252,255,252,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,6,30,31, + 31,255,15,254,3,240,18,15,45,20,1,0,252,63,0,252, + 63,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,30,31,0, + 31,255,192,15,255,192,7,247,192,19,15,45,20,0,0,255, + 31,224,255,31,224,255,31,224,60,7,0,28,7,0,30,14, + 0,14,14,0,15,28,0,7,28,0,7,184,0,3,184,0, + 3,240,0,1,240,0,1,224,0,0,224,0,19,15,45,20, + 0,0,254,15,224,254,15,224,254,15,224,56,227,128,56,227, + 128,57,243,128,61,247,128,29,247,0,31,191,0,31,31,0, + 31,31,0,15,30,0,14,14,0,14,14,0,14,14,0,17, + 15,45,20,1,0,254,63,128,254,63,128,254,63,128,60,28, + 0,30,56,0,15,112,0,7,224,0,3,224,0,3,240,0, + 7,120,0,14,60,0,28,30,0,254,63,128,254,63,128,254, + 63,128,19,22,66,20,1,249,255,31,224,255,31,224,255,31, + 224,60,3,128,28,7,0,30,7,0,14,14,0,15,14,0, + 7,28,0,7,156,0,3,184,0,3,248,0,1,240,0,1, + 240,0,0,224,0,0,224,0,1,192,0,1,192,0,3,128, + 0,127,240,0,127,240,0,127,240,0,13,15,30,20,4,0, + 255,248,255,248,255,248,224,240,225,224,227,192,7,128,15,0, + 30,0,60,0,120,56,240,56,255,248,255,248,255,248,9,26, + 52,20,5,251,7,128,15,128,15,128,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,60,0,248,0,248,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,31,128,15,128,7,128,3,26,26,20,8,251,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,9,26,52,20,5,251,240,0, + 248,0,248,0,60,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,30,0,15,128,15,128,31,128,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,252,0,248,0, + 240,0,15,7,14,20,2,6,12,0,63,14,127,142,247,222, + 227,252,225,248,0,96,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,20,0,1,5,21,21, + 20,7,249,112,248,248,112,0,0,112,112,112,112,112,112,112, + 112,248,248,248,248,248,112,32,13,23,46,20,3,255,7,0, + 7,0,7,0,7,0,7,0,15,216,63,248,127,248,120,120, + 240,56,224,56,224,0,224,0,224,0,240,56,120,120,127,248, + 63,240,15,192,7,0,7,0,7,0,7,0,16,20,40,20, + 1,0,3,224,7,240,15,248,30,56,28,56,28,0,28,0, + 28,0,14,0,255,224,255,224,255,224,14,0,14,0,14,0, + 14,2,30,7,127,255,127,255,127,254,15,15,30,20,2,2, + 224,14,247,222,255,254,127,252,60,120,120,60,112,28,112,28, + 112,28,120,60,60,120,127,252,255,254,247,222,224,14,17,20, + 60,20,1,0,254,63,128,254,63,128,254,63,128,56,14,0, + 28,28,0,30,60,0,14,56,0,15,120,0,7,112,0,3, + 224,0,31,252,0,31,252,0,1,192,0,31,252,0,31,252, + 0,1,192,0,1,192,0,31,252,0,31,252,0,31,252,0, + 3,26,26,20,8,251,224,224,224,224,224,224,224,224,224,224, + 224,224,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 16,24,48,20,2,253,1,254,7,254,15,254,28,6,24,6, + 24,6,60,0,127,0,231,128,193,224,96,240,112,60,60,14, + 15,6,7,131,1,231,0,254,0,60,48,24,48,24,48,56, + 63,240,63,224,63,128,11,4,8,20,4,17,96,192,241,224, + 241,224,96,192,21,20,60,20,255,0,0,252,0,3,255,0, + 15,255,192,30,3,224,56,96,224,113,246,112,115,254,112,231, + 158,56,231,14,56,206,14,56,206,0,56,206,0,56,206,6, + 56,231,15,120,231,254,112,115,252,240,120,241,224,62,7,192, + 31,255,0,7,252,0,11,14,28,20,4,6,31,0,127,128, + 97,128,1,128,63,128,127,128,225,128,193,128,195,128,255,224, + 125,224,0,0,255,224,255,224,15,14,28,20,1,0,3,6, + 7,14,14,28,28,56,56,112,112,224,225,192,225,192,112,224, + 56,112,28,56,14,28,7,14,3,6,16,8,16,20,2,5, + 255,255,255,255,255,255,0,7,0,7,0,7,0,7,0,7, + 15,3,6,20,2,8,255,254,255,254,255,254,21,20,60,20, + 255,0,1,248,0,7,254,0,31,255,128,60,3,192,59,241, + 224,115,252,224,115,254,240,227,158,112,227,142,120,227,142,56, + 227,254,56,227,252,56,227,184,56,243,188,120,115,158,112,123, + 143,240,60,3,224,31,255,192,15,255,0,3,252,0,10,2, + 4,20,5,17,255,192,255,192,9,9,18,20,5,11,28,0, + 119,0,193,128,128,128,128,128,128,128,193,128,119,0,28,0, + 17,18,54,20,1,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,255,255,128,255,255,128,255,255, + 128,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,8,14,14,20, + 5,7,60,126,231,195,3,7,14,12,24,56,112,225,255,255, + 9,14,28,20,5,7,62,0,127,0,99,0,3,0,7,0, + 30,0,31,0,3,128,1,128,1,128,193,128,227,0,127,0, + 60,0,8,6,6,20,6,15,6,15,62,120,224,64,18,22, + 66,20,1,249,252,63,0,252,63,0,252,63,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,15,0,30,31,0,31,255,192,31,247,192,29,231, + 192,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,15,24,48,20,2,253,15,254,63,254, + 123,24,243,24,227,24,227,24,227,24,227,24,227,24,115,24, + 63,24,31,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,31,62,31,62,31,62,5,4,4,20, + 7,8,112,248,248,112,5,7,7,20,6,250,48,48,48,24, + 248,248,112,8,13,13,20,6,7,56,248,216,24,24,24,24, + 24,24,24,24,255,255,11,14,28,20,4,6,14,0,63,128, + 113,192,224,224,192,96,192,96,192,96,224,224,113,192,63,128, + 14,0,0,0,255,224,255,224,15,14,28,20,2,0,193,128, + 225,192,112,224,56,112,28,56,14,28,7,14,7,14,14,28, + 28,56,56,112,112,224,225,192,193,128,19,20,60,20,0,0, + 56,0,0,248,0,0,216,0,128,24,1,192,24,1,128,24, + 3,0,24,6,0,24,12,0,24,28,192,24,25,192,255,51, + 192,255,114,192,0,102,192,0,206,192,1,140,192,3,159,224, + 7,31,224,2,0,192,0,1,224,0,1,224,19,20,60,20, + 0,0,56,0,0,248,0,0,216,2,0,24,7,0,24,14, + 0,24,12,0,24,24,0,24,56,0,24,112,0,24,103,128, + 254,239,192,255,220,224,1,152,96,3,0,224,7,1,192,14, + 7,128,4,14,0,0,28,96,0,31,224,0,31,224,19,21, + 63,20,0,0,62,0,0,127,0,0,99,0,0,3,1,0, + 3,3,128,30,7,0,31,6,0,3,142,0,1,156,0,195, + 152,192,227,49,192,127,115,192,28,98,192,0,198,192,1,206, + 192,3,140,192,7,31,224,2,31,224,0,0,192,0,3,224, + 0,3,224,13,21,42,20,3,250,7,0,15,128,15,128,7, + 0,0,0,0,0,0,0,7,0,7,0,7,0,31,0,63, + 0,124,0,240,0,224,0,224,56,224,56,240,56,127,248,63, + 248,31,224,21,26,78,20,255,0,3,0,0,7,128,0,1, + 224,0,0,240,0,0,48,0,0,0,0,31,240,0,31,248, + 0,31,248,0,1,252,0,1,220,0,1,220,0,3,222,0, + 3,142,0,3,142,0,7,7,0,7,7,0,7,7,0,15, + 255,128,15,255,128,31,255,192,28,1,192,28,1,192,255,143, + 248,255,143,248,255,143,248,21,26,78,20,255,0,0,3,0, + 0,15,0,0,30,0,0,120,0,0,96,0,0,0,0,31, + 240,0,31,248,0,31,248,0,1,252,0,1,220,0,1,220, + 0,3,222,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,21,26,78,20,255, + 0,0,64,0,0,224,0,3,184,0,7,28,0,14,14,0, + 0,0,0,31,240,0,31,248,0,31,248,0,1,252,0,1, + 220,0,1,220,0,3,222,0,3,142,0,3,142,0,7,7, + 0,7,7,0,7,7,0,15,255,128,15,255,128,31,255,192, + 28,1,192,28,1,192,255,143,248,255,143,248,255,143,248,21, + 25,75,20,255,0,3,134,0,7,230,0,6,118,0,6,28, + 0,0,0,0,31,240,0,31,248,0,31,248,0,1,252,0, + 1,220,0,1,220,0,3,222,0,3,142,0,3,142,0,7, + 7,0,7,7,0,7,7,0,15,255,128,15,255,128,31,255, + 192,28,1,192,28,1,192,255,143,248,255,143,248,255,143,248, + 21,25,75,20,255,0,12,24,0,30,60,0,30,60,0,12, + 24,0,0,0,0,31,240,0,31,248,0,31,248,0,1,252, + 0,1,220,0,1,220,0,3,222,0,3,142,0,3,142,0, + 7,7,0,7,7,0,7,7,0,15,255,128,15,255,128,31, + 255,192,28,1,192,28,1,192,255,143,248,255,143,248,255,143, + 248,21,26,78,20,255,0,0,240,0,1,152,0,1,8,0, + 1,152,0,0,240,0,0,0,0,31,240,0,31,248,0,31, + 248,0,1,252,0,1,220,0,1,220,0,3,222,0,3,142, + 0,3,142,0,7,7,0,7,7,0,7,7,0,15,255,128, + 15,255,128,31,255,192,28,1,192,28,1,192,255,143,248,255, + 143,248,255,143,248,20,20,60,20,0,0,31,255,224,31,255, + 224,31,255,224,7,112,224,7,112,224,6,112,224,14,112,224, + 14,115,0,14,115,0,14,127,0,28,127,0,28,115,0,31, + 243,0,31,243,0,56,112,112,56,112,112,56,112,112,255,255, + 240,255,255,240,255,255,240,17,26,78,20,1,250,3,227,0, + 15,255,0,31,255,0,62,31,0,120,15,0,112,7,0,240, + 7,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,240,0,0,112,1,0,120,3,128,62,15,128, + 63,255,0,15,254,0,3,248,0,0,192,0,0,192,0,0, + 224,0,4,112,0,7,240,0,3,224,0,17,26,78,20,1, + 0,3,0,0,7,128,0,1,224,0,0,240,0,0,48,0, + 0,0,0,255,255,0,255,255,0,255,255,0,28,7,0,28, + 7,0,28,7,0,28,119,0,28,112,0,31,240,0,31,240, + 0,31,240,0,28,112,0,28,112,0,28,3,128,28,3,128, + 28,3,128,28,3,128,255,255,128,255,255,128,255,255,128,17, + 26,78,20,1,0,0,12,0,0,60,0,0,120,0,1,224, + 0,1,128,0,0,0,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,26,78,20,1,0,0,128,0,1,192,0,7, + 112,0,14,56,0,28,28,0,0,0,0,255,255,0,255,255, + 0,255,255,0,28,7,0,28,7,0,28,7,0,28,119,0, + 28,112,0,31,240,0,31,240,0,31,240,0,28,112,0,28, + 112,0,28,3,128,28,3,128,28,3,128,28,3,128,255,255, + 128,255,255,128,255,255,128,17,25,75,20,1,0,6,12,0, + 15,30,0,15,30,0,6,12,0,0,0,0,255,255,0,255, + 255,0,255,255,0,28,7,0,28,7,0,28,7,0,28,119, + 0,28,112,0,31,240,0,31,240,0,31,240,0,28,112,0, + 28,112,0,28,3,128,28,3,128,28,3,128,28,3,128,255, + 255,128,255,255,128,255,255,128,13,26,52,20,3,0,24,0, + 60,0,15,0,7,128,1,128,0,0,255,248,255,248,255,248, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,255,248,255,248, + 255,248,13,26,52,20,3,0,0,48,0,240,1,224,7,128, + 6,0,0,0,255,248,255,248,255,248,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,255,248,255,248,255,248,13,26,52,20, + 3,0,2,0,7,0,29,192,56,224,112,112,0,0,255,248, + 255,248,255,248,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 255,248,255,248,255,248,13,25,50,20,3,0,48,96,120,240, + 120,240,48,96,0,0,255,248,255,248,255,248,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,255,248,255,248,255,248,17,20, + 60,20,2,0,255,224,0,255,248,0,255,252,0,56,62,0, + 56,15,0,56,7,0,56,7,0,56,3,128,255,131,128,255, + 131,128,255,131,128,56,3,128,56,3,128,56,3,128,56,7, + 0,56,7,0,56,30,0,255,254,0,255,252,0,255,240,0, + 20,25,75,20,255,0,3,134,0,7,230,0,6,118,0,6, + 28,0,0,0,0,252,31,240,254,31,240,255,31,240,31,1, + 192,31,129,192,31,129,192,29,193,192,29,225,192,28,225,192, + 28,241,192,28,121,192,28,57,192,28,61,192,28,29,192,28, + 15,192,28,15,192,28,7,192,127,199,192,127,195,192,127,193, + 192,17,26,78,20,1,0,6,0,0,15,0,0,3,192,0, + 1,224,0,0,96,0,0,0,0,7,240,0,15,252,0,31, + 252,0,60,30,0,120,15,0,112,7,0,112,7,0,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 112,7,0,120,7,0,56,14,0,62,62,0,31,252,0,15, + 248,0,3,224,0,17,26,78,20,1,0,0,24,0,0,120, + 0,0,240,0,3,192,0,3,0,0,0,0,0,7,240,0, + 15,252,0,31,252,0,60,30,0,120,15,0,112,7,0,112, + 7,0,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,112,7,0,120,7,0,56,14,0,62,62,0, + 31,252,0,15,248,0,3,224,0,17,26,78,20,1,0,0, + 128,0,1,192,0,7,112,0,14,56,0,28,28,0,0,0, + 0,7,240,0,15,252,0,31,252,0,60,30,0,120,15,0, + 112,7,0,112,7,0,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,112,7,0,120,7,0,56,14, + 0,62,62,0,31,252,0,15,248,0,3,224,0,17,25,75, + 20,1,0,7,12,0,15,204,0,12,236,0,12,56,0,0, + 0,0,7,240,0,15,252,0,31,252,0,60,30,0,120,15, + 0,112,7,0,112,7,0,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,112,7,0,120,7,0,56, + 14,0,62,62,0,31,252,0,15,248,0,3,224,0,17,25, + 75,20,1,0,12,24,0,30,60,0,30,60,0,12,24,0, + 0,0,0,7,240,0,15,252,0,31,252,0,60,30,0,120, + 15,0,112,7,0,112,7,0,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,112,7,0,120,7,0, + 56,14,0,62,62,0,31,252,0,15,248,0,3,224,0,15, + 16,32,20,2,0,224,14,240,30,248,62,120,60,60,120,30, + 240,15,224,7,192,7,192,15,224,30,240,60,120,120,60,248, + 62,240,30,224,14,17,23,69,20,1,254,0,3,128,3,227, + 128,15,255,128,31,255,0,62,62,0,56,30,0,120,63,0, + 112,127,0,224,123,128,224,243,128,225,227,128,225,195,128,227, + 195,128,231,131,128,255,7,128,126,7,0,126,15,0,60,30, + 0,127,252,0,127,248,0,247,240,0,224,0,0,224,0,0, + 19,26,78,20,0,0,3,0,0,7,128,0,1,224,0,0, + 240,0,0,48,0,0,0,0,255,31,224,255,31,224,255,31, + 224,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,28,7,128,31,31,0,15,254,0,7,252, + 0,1,248,0,19,26,78,20,0,0,0,28,0,0,60,0, + 0,240,0,1,224,0,1,128,0,0,0,0,255,31,224,255, + 31,224,255,31,224,56,3,128,56,3,128,56,3,128,56,3, + 128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,28,7,128,31,31,0,15, + 254,0,7,252,0,1,248,0,19,26,78,20,0,0,0,64, + 0,0,224,0,3,184,0,7,28,0,14,14,0,0,0,0, + 255,31,224,255,31,224,255,31,224,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3, + 128,56,3,128,56,3,128,56,3,128,56,3,128,28,7,128, + 31,31,0,15,254,0,7,252,0,1,248,0,19,26,78,20, + 0,0,6,12,0,15,30,0,15,30,0,6,12,0,0,0, + 0,0,0,0,255,191,224,255,191,224,255,191,224,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3, + 128,28,7,128,31,31,0,15,254,0,7,252,0,1,248,0, + 17,26,78,20,1,0,0,24,0,0,120,0,0,240,0,3, + 192,0,3,0,0,0,0,0,254,63,128,254,63,128,254,63, + 128,60,30,0,28,28,0,30,60,0,14,56,0,15,120,0, + 7,240,0,3,224,0,3,224,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,31,252,0,31,252, + 0,31,252,0,18,20,60,20,1,0,255,128,0,255,128,0, + 255,128,0,28,0,0,31,248,0,31,254,0,31,255,0,28, + 15,128,28,3,128,28,3,192,28,3,192,28,3,128,28,15, + 128,31,255,0,31,254,0,31,248,0,28,0,0,255,128,0, + 255,128,0,255,128,0,17,22,66,20,0,255,3,224,0,7, + 240,0,15,248,0,30,60,0,28,28,0,28,28,0,28,28, + 0,28,60,0,29,248,0,29,248,0,29,254,0,28,31,0, + 28,15,0,28,7,128,28,3,128,28,3,128,29,195,128,29, + 195,128,255,255,0,254,255,0,254,126,0,0,24,0,17,22, + 66,20,2,0,24,0,0,60,0,0,15,0,0,7,128,0, + 1,128,0,0,0,0,0,0,0,15,224,0,63,240,0,63, + 248,0,56,60,0,0,28,0,0,28,0,15,252,0,63,252, + 0,127,252,0,120,28,0,240,28,0,224,124,0,255,255,128, + 127,255,128,63,159,128,17,22,66,20,2,0,0,32,0,0, + 112,0,0,240,0,3,192,0,7,128,0,6,0,0,0,0, + 0,15,224,0,63,240,0,63,248,0,56,60,0,0,28,0, + 0,28,0,15,252,0,63,252,0,127,252,0,120,28,0,224, + 60,0,224,124,0,255,255,128,127,223,128,63,159,128,17,22, + 66,20,1,0,0,128,0,1,192,0,7,112,0,14,56,0, + 28,28,0,0,0,0,0,0,0,7,224,0,63,240,0,63, + 248,0,60,60,0,0,28,0,0,28,0,15,252,0,63,252, + 0,127,252,0,120,28,0,240,28,0,224,60,0,255,255,128, + 127,255,128,63,159,128,17,21,63,20,1,0,14,24,0,31, + 152,0,25,248,0,24,112,0,0,0,0,0,0,0,15,224, + 0,63,240,0,63,248,0,56,60,0,0,28,0,0,28,0, + 15,252,0,63,252,0,127,252,0,120,28,0,240,28,0,224, + 124,0,255,255,128,127,223,128,63,159,128,17,21,63,20,2, + 0,12,24,0,30,60,0,30,60,0,12,24,0,0,0,0, + 0,0,0,15,224,0,63,240,0,63,248,0,56,60,0,0, + 28,0,0,28,0,15,252,0,63,252,0,127,252,0,120,28, + 0,240,28,0,224,124,0,255,255,128,127,223,128,63,159,128, + 17,21,63,20,1,0,3,192,0,6,96,0,4,32,0,6, + 96,0,3,192,0,0,0,0,15,224,0,63,240,0,63,248, + 0,56,60,0,0,28,0,0,28,0,15,252,0,63,252,0, + 127,252,0,120,28,0,240,28,0,224,124,0,255,255,128,127, + 223,128,63,159,128,20,15,45,20,255,0,15,135,0,63,255, + 192,63,255,192,56,253,224,0,112,112,3,240,112,31,255,240, + 127,255,240,255,255,240,240,112,0,224,120,0,241,248,112,127, + 255,240,63,255,240,31,39,128,16,21,42,20,2,250,7,230, + 31,254,63,254,124,62,112,14,240,14,224,14,224,0,224,0, + 224,0,240,6,124,15,63,254,31,252,7,240,1,128,1,128, + 1,192,8,224,15,192,3,128,16,21,42,20,1,0,6,0, + 15,0,3,192,1,224,0,96,0,0,7,224,31,248,63,252, + 124,62,112,14,240,15,255,255,255,255,255,255,224,0,112,0, + 124,15,63,255,31,254,7,240,16,22,44,20,1,0,0,16, + 0,56,0,120,1,224,3,192,3,0,0,0,7,224,31,248, + 63,252,124,62,112,14,240,15,255,255,255,255,255,255,224,0, + 112,0,124,14,63,255,31,254,7,240,16,22,44,20,1,0, + 0,128,1,192,7,112,14,56,28,28,0,0,0,0,7,224, + 31,248,63,252,124,62,112,14,240,15,255,255,255,255,255,255, + 224,0,112,0,124,31,63,255,31,255,7,240,16,21,42,20, + 1,0,12,24,30,60,30,60,12,24,0,0,0,0,7,224, + 31,248,63,252,124,62,112,14,240,15,255,255,255,255,255,255, + 224,0,112,0,124,31,63,255,31,255,7,240,15,22,44,20, + 2,0,24,0,60,0,15,0,7,128,1,128,0,0,0,0, + 127,128,127,128,127,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,254,255,254,255,254,15,23, + 46,20,2,0,0,128,1,192,3,192,15,0,30,0,24,0, + 0,0,0,0,127,128,127,128,127,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254, + 255,254,15,22,44,20,2,0,2,0,7,0,29,192,56,224, + 112,112,0,0,0,0,127,128,127,128,127,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254, + 255,254,255,254,15,21,42,20,2,0,48,96,120,240,120,240, + 48,96,0,0,0,0,127,128,127,128,127,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254, + 255,254,255,254,16,21,42,20,2,0,126,14,255,191,255,252, + 3,240,15,240,127,248,124,56,112,60,7,220,31,254,127,254, + 120,30,240,15,224,7,224,7,224,15,240,15,248,62,127,252, + 63,248,31,224,17,21,63,20,1,0,14,24,0,31,152,0, + 25,248,0,24,112,0,0,0,0,0,0,0,249,240,0,251, + 252,0,255,254,0,60,30,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,254,63,128,254,63,128,17,21,63,20,1,0,6, + 0,0,15,0,0,3,192,0,1,224,0,0,96,0,0,0, + 0,7,240,0,15,248,0,63,254,0,60,30,0,120,15,0, + 240,7,128,224,3,128,224,3,128,224,3,128,240,7,128,120, + 15,0,124,31,0,63,254,0,31,252,0,7,240,0,17,22, + 66,20,1,0,0,16,0,0,56,0,0,120,0,1,224,0, + 3,192,0,3,0,0,0,0,0,7,240,0,15,248,0,63, + 254,0,60,30,0,120,15,0,240,7,128,224,3,128,224,3, + 128,224,3,128,240,7,128,120,15,0,124,31,0,63,254,0, + 31,252,0,7,240,0,17,22,66,20,1,0,0,128,0,1, + 192,0,7,112,0,14,56,0,28,28,0,0,0,0,0,0, + 0,7,240,0,15,248,0,63,254,0,60,30,0,120,15,0, + 240,7,128,224,3,128,224,3,128,224,3,128,240,7,128,120, + 15,0,124,31,0,63,254,0,31,252,0,7,240,0,17,21, + 63,20,1,0,7,12,0,15,204,0,12,252,0,12,56,0, + 0,0,0,0,0,0,7,240,0,15,248,0,63,254,0,60, + 30,0,120,15,0,240,7,128,224,3,128,224,3,128,224,3, + 128,240,7,128,120,15,0,124,31,0,63,254,0,31,252,0, + 7,240,0,17,21,63,20,1,0,12,24,0,30,60,0,30, + 60,0,12,24,0,0,0,0,0,0,0,7,240,0,15,248, + 0,63,254,0,60,30,0,120,15,0,240,7,128,224,3,128, + 224,3,128,224,3,128,240,7,128,120,15,0,124,31,0,63, + 254,0,31,252,0,7,240,0,15,15,30,20,2,2,3,128, + 7,192,7,192,3,128,0,0,0,0,255,254,255,254,255,254, + 0,0,0,0,3,128,7,192,7,192,3,128,17,18,54,20, + 1,254,0,3,128,3,227,128,15,255,128,63,255,0,62,62, + 0,120,63,0,112,127,0,224,243,128,225,227,128,227,195,128, + 231,131,128,127,7,0,126,31,0,63,254,0,127,252,0,247, + 240,0,224,0,0,224,0,0,18,22,66,20,0,0,3,0, + 0,7,128,0,1,224,0,0,240,0,0,48,0,0,0,0, + 0,0,0,252,63,0,252,63,0,252,63,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,15,0,28,31,0,31,255,192,15,247,192,7,231,192, + 18,22,66,20,0,0,0,8,0,0,28,0,0,60,0,0, + 240,0,1,224,0,1,128,0,0,0,0,252,63,0,252,63, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,15,0,28,31,0,31, + 255,192,15,247,192,7,231,192,18,22,66,20,0,0,0,128, + 0,1,192,0,7,112,0,14,56,0,28,28,0,0,0,0, + 0,0,0,252,63,0,252,63,0,252,63,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,15,0,28,31,0,31,255,192,15,247,192,7,231,192, + 18,21,63,20,0,0,12,24,0,30,60,0,30,60,0,12, + 24,0,0,0,0,0,0,0,252,63,0,252,63,0,252,63, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,15,0,28,31,0,31,255,192,15, + 247,192,7,231,192,17,29,87,20,1,249,0,16,0,0,56, + 0,0,120,0,1,224,0,3,192,0,3,0,0,0,0,0, + 254,63,128,254,63,128,254,63,128,120,15,0,56,14,0,60, + 30,0,28,28,0,30,60,0,14,56,0,15,120,0,7,112, + 0,7,240,0,3,224,0,3,224,0,1,192,0,1,192,0, + 3,128,0,3,128,0,7,0,0,255,224,0,255,224,0,255, + 224,0,19,28,84,20,0,249,252,0,0,252,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,252,0,31,255,0, + 31,255,128,31,135,192,31,3,192,30,1,224,28,0,224,28, + 0,224,28,0,224,30,1,224,30,1,192,31,135,192,31,255, + 128,31,255,0,28,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,255,192,0,255,192,0,255,192,0,17,28,84,20, + 1,249,6,12,0,15,30,0,15,30,0,6,12,0,0,0, + 0,0,0,0,254,63,128,254,63,128,254,63,128,120,15,0, + 56,14,0,60,30,0,28,28,0,30,60,0,14,56,0,15, + 120,0,7,112,0,7,240,0,3,224,0,3,224,0,1,192, + 0,1,192,0,3,128,0,3,128,0,7,0,0,255,224,0, + 255,224,0,255,224,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 20, '1' Height: 21 + Calculated Max Values w=21 h=28 x= 8 y=16 dx=20 dy= 0 ascent=23 len=75 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24r[4775] U8G_SECTION(".progmem.u8g_font_courB24r") = { + 0,30,44,249,245,20,5,57,12,115,32,127,249,23,249,21, + 249,0,0,0,20,0,1,5,21,21,20,7,0,112,248,248, + 248,248,248,112,112,112,112,112,112,112,112,112,32,0,0,112, + 248,112,9,10,20,20,5,10,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,65,0,15,26,52,20, + 2,253,14,56,14,56,14,56,14,56,14,56,14,56,14,56, + 14,56,127,254,127,254,127,254,28,112,28,112,28,112,28,112, + 255,252,255,252,255,252,56,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,224,14,27,54,20,3,252,7,0,7,0, + 7,0,15,216,63,248,127,248,240,120,224,56,224,56,240,0, + 254,0,127,192,63,240,7,248,0,252,0,60,224,28,224,28, + 240,60,255,248,255,240,231,128,7,0,7,0,7,0,7,0, + 7,0,15,21,42,20,2,0,31,0,63,128,49,128,96,192, + 96,192,96,192,113,194,63,142,31,62,0,248,3,224,31,0, + 252,248,241,252,195,142,3,6,3,6,3,6,1,140,1,252, + 0,248,14,18,36,20,2,0,7,160,31,224,63,224,60,96, + 56,0,56,0,60,0,28,0,30,0,127,60,127,188,243,188, + 225,240,224,240,224,240,255,252,127,188,63,60,4,11,11,20, + 8,10,112,112,112,112,112,224,224,224,224,224,224,7,26,26, + 20,8,251,14,14,30,60,56,56,120,112,112,240,240,240,224, + 224,240,240,240,112,112,120,56,60,28,30,14,14,7,26,26, + 20,4,251,224,224,240,120,56,56,60,28,28,30,30,30,14, + 14,30,30,30,28,28,60,56,120,112,240,224,224,15,14,28, + 20,3,7,3,128,3,128,3,128,3,128,99,140,251,190,127, + 252,31,240,15,224,15,224,30,240,60,120,120,60,48,24,17, + 17,51,20,1,1,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,255,255,128,255,255,128, + 255,255,128,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,7,10,10,20,5,251,30,30, + 60,60,56,112,112,224,224,192,15,3,6,20,2,8,255,254, + 255,254,255,254,5,4,4,20,7,0,112,248,248,112,13,27, + 54,20,3,252,0,56,0,56,0,120,0,112,0,112,0,224, + 0,224,1,224,1,192,1,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,28,0,60,0,56,0,56,0, + 112,0,112,0,240,0,224,0,224,0,13,21,42,20,3,0, + 15,128,63,224,127,240,112,112,240,120,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,112,112,127,240,63,224,15,128,13,21,42,20,4,0, + 3,0,15,0,127,0,255,0,255,0,103,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,255,248,255,248,255,248,14,21,42,20,2,0, + 7,192,31,240,63,248,120,60,112,28,112,28,112,28,0,28, + 0,56,0,120,0,240,1,224,3,192,7,128,15,0,30,0, + 60,0,120,0,255,252,255,252,255,252,15,21,42,20,2,0, + 7,224,31,240,127,248,120,60,112,28,0,28,0,28,0,60, + 7,248,7,240,7,248,0,124,0,28,0,14,0,14,0,14, + 0,30,224,60,255,252,255,248,63,224,14,21,42,20,2,0, + 0,240,1,240,1,240,3,240,7,240,7,112,15,112,14,112, + 30,112,28,112,56,112,120,112,112,112,255,252,255,252,255,252, + 0,112,0,112,3,252,3,252,3,252,15,21,42,20,2,0, + 63,252,63,252,63,252,56,0,56,0,56,0,56,0,63,224, + 63,248,63,252,56,124,0,30,0,14,0,14,0,14,0,14, + 64,30,240,60,255,248,127,248,31,224,14,21,42,20,3,0, + 1,248,7,248,15,248,31,0,60,0,120,0,112,0,112,0, + 227,192,239,240,255,240,248,120,240,60,224,28,224,28,240,28, + 112,60,120,120,127,248,63,240,15,192,14,21,42,20,2,0, + 255,252,255,252,255,252,224,60,224,56,224,56,0,56,0,120, + 0,112,0,112,0,240,0,224,0,224,1,224,1,192,1,192, + 3,192,3,128,7,128,7,0,7,0,14,21,42,20,3,0, + 15,128,63,224,127,240,112,112,224,56,224,56,224,56,112,112, + 127,240,63,224,63,240,124,248,240,60,224,28,224,28,224,28, + 224,28,248,124,127,248,63,240,15,192,14,21,42,20,3,0, + 15,128,63,224,127,240,120,240,240,120,224,56,224,60,224,60, + 224,60,240,124,120,252,63,220,63,156,15,60,0,56,0,120, + 0,112,97,240,255,224,255,128,126,0,5,15,15,20,7,0, + 112,248,248,112,0,0,0,0,0,0,0,112,248,248,112,8, + 19,19,20,5,252,14,31,31,14,0,0,0,0,0,0,30, + 30,60,56,120,112,224,224,192,18,19,57,20,0,0,0,1, + 192,0,3,192,0,15,192,0,63,128,0,254,0,1,248,0, + 7,224,0,31,128,0,127,0,0,252,0,0,127,0,0,31, + 128,0,7,224,0,1,248,0,0,254,0,0,63,128,0,15, + 192,0,3,192,0,1,192,17,9,27,20,1,5,255,255,128, + 255,255,128,255,255,128,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,255,255,128,18,19,57,20,1,0,224,0, + 0,240,0,0,252,0,0,127,0,0,31,192,0,7,224,0, + 1,248,0,0,126,0,0,63,128,0,15,192,0,63,128,0, + 126,0,1,248,0,7,224,0,31,192,0,127,0,0,252,0, + 0,240,0,0,224,0,0,13,20,40,20,3,0,31,192,127, + 224,255,240,224,248,224,56,224,56,0,56,0,120,0,240,3, + 240,7,192,7,128,7,0,7,0,0,0,0,0,0,0,7, + 0,15,128,7,0,14,23,46,20,3,254,15,192,31,224,56, + 112,112,48,96,48,224,48,192,48,193,240,199,240,198,48,204, + 48,204,48,204,48,206,48,199,252,195,188,192,0,224,0,96, + 0,112,48,56,112,31,224,15,192,21,20,60,20,255,0,31, + 240,0,31,248,0,31,248,0,1,220,0,1,220,0,1,220, + 0,3,142,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,18,20,60,20,1, + 0,255,248,0,255,254,0,255,255,0,28,7,128,28,3,128, + 28,3,128,28,3,128,28,7,128,31,255,0,31,252,0,31, + 254,0,28,15,128,28,3,192,28,1,192,28,1,192,28,1, + 192,28,3,192,255,255,128,255,255,0,255,252,0,18,20,60, + 20,1,0,3,249,128,15,255,128,31,255,128,62,15,128,120, + 7,128,112,3,128,240,3,128,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,240,0,0, + 120,3,128,124,7,192,63,255,128,31,255,0,7,252,0,17, + 20,60,20,1,0,255,224,0,255,248,0,255,252,0,56,62, + 0,56,15,0,56,7,0,56,7,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 7,128,56,7,0,56,31,0,255,254,0,255,252,0,255,240, + 0,17,20,60,20,1,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,20,60,20,1,0,255,255,128,255,255,128,255, + 255,128,28,3,128,28,3,128,28,3,128,28,115,128,28,112, + 0,31,240,0,31,240,0,31,240,0,28,112,0,28,112,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,17,20,60,20,2,0,3,243,0,15,255, + 0,31,255,0,60,15,0,120,7,0,112,7,0,240,7,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,255,128,224, + 255,128,224,255,128,240,7,0,112,7,0,124,15,0,63,255, + 0,31,254,0,7,248,0,17,20,60,20,1,0,255,127,128, + 255,127,128,255,127,128,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,63,254,0,63,254,0,63,254,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 255,127,128,255,127,128,255,127,128,13,20,40,20,3,0,255, + 248,255,248,255,248,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,255,248,255,248,255,248,17,20,60,20,2,0,7,255,128, + 7,255,128,7,255,128,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,224,56,0,224,56, + 0,224,56,0,224,56,0,224,56,0,224,120,0,240,240,0, + 255,240,0,127,224,0,31,128,0,19,20,60,20,1,0,255, + 159,192,255,159,192,255,159,192,28,15,0,28,30,0,28,60, + 0,28,120,0,28,240,0,31,224,0,31,240,0,31,248,0, + 30,124,0,28,60,0,28,30,0,28,14,0,28,15,0,28, + 7,0,255,135,224,255,135,224,255,135,224,17,20,60,20,1, + 0,255,224,0,255,224,0,255,224,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,3,128,14,3,128,14,3,128,14,3,128,14,3, + 128,14,3,128,255,255,128,255,255,128,255,255,128,21,20,60, + 20,255,0,252,1,248,252,1,248,254,3,248,62,3,224,63, + 7,224,63,7,224,59,142,224,59,142,224,59,222,224,57,220, + 224,57,220,224,56,248,224,56,248,224,56,248,224,56,112,224, + 56,112,224,56,0,224,255,7,248,255,7,248,255,7,248,19, + 20,60,20,0,0,248,31,224,252,31,224,254,31,224,62,3, + 128,63,3,128,63,3,128,59,131,128,59,195,128,57,195,128, + 57,227,128,56,243,128,56,115,128,56,123,128,56,59,128,56, + 31,128,56,31,128,56,15,128,255,7,128,255,7,128,255,3, + 128,18,20,60,20,1,0,3,240,0,15,252,0,31,254,0, + 60,15,0,120,7,128,112,3,128,240,3,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,240,3, + 192,112,3,128,120,7,128,60,15,0,31,254,0,15,252,0, + 3,240,0,17,20,60,20,1,0,255,248,0,255,254,0,255, + 255,0,28,15,0,28,3,128,28,3,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,240,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,18,25,75,20,1,251,3,240,0,15,248, + 0,31,254,0,60,15,0,120,7,128,112,3,128,240,3,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,112,3,128,120,7,128,60,15,0,31,254, + 0,15,252,0,7,240,0,14,0,0,31,225,192,63,255,192, + 63,255,192,56,63,0,20,20,60,20,1,0,255,248,0,255, + 254,0,255,255,0,28,15,0,28,7,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,248,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,255, + 131,240,255,129,240,255,129,240,15,20,40,20,2,0,15,204, + 63,252,127,252,240,124,224,28,224,28,240,28,248,0,127,0, + 63,224,15,248,1,252,0,62,224,30,224,14,224,14,240,30, + 255,252,255,248,231,224,17,20,60,20,1,0,255,255,128,255, + 255,128,255,255,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,63, + 254,0,63,254,0,63,254,0,19,20,60,20,0,0,255,31, + 224,255,31,224,255,31,224,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,28,7,0,31,31, + 0,15,254,0,7,252,0,1,240,0,21,20,60,20,255,0, + 255,143,248,255,143,248,255,143,248,28,1,192,28,1,192,30, + 3,192,14,3,128,14,3,128,7,7,0,7,7,0,7,143, + 0,3,142,0,3,142,0,3,222,0,1,220,0,1,220,0, + 0,248,0,0,248,0,0,248,0,0,112,0,19,20,60,20, + 0,0,255,31,224,255,31,224,255,31,224,112,1,192,112,1, + 192,112,225,192,112,225,192,113,241,192,57,243,128,57,243,128, + 59,187,128,59,187,128,59,187,128,63,31,128,63,31,128,30, + 15,0,30,15,0,30,15,0,28,7,0,28,7,0,19,20, + 60,20,0,0,255,31,224,255,31,224,255,31,224,60,7,128, + 30,15,0,15,30,0,7,188,0,3,248,0,1,240,0,0, + 224,0,1,240,0,3,248,0,7,188,0,15,30,0,14,14, + 0,30,15,0,60,7,128,255,31,224,255,31,224,255,31,224, + 19,20,60,20,0,0,255,31,224,255,31,224,255,31,224,60, + 7,128,14,14,0,15,30,0,7,28,0,7,188,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,15,254,0,15,254,0,15, + 254,0,15,20,40,20,2,0,127,252,127,252,127,252,112,60, + 112,56,112,120,112,240,113,224,1,192,3,192,7,128,15,0, + 14,14,30,14,60,14,120,14,112,14,255,254,255,254,255,254, + 7,26,26,20,8,251,254,254,254,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,254,254,254, + 13,27,54,20,3,252,224,0,224,0,240,0,112,0,112,0, + 56,0,56,0,60,0,28,0,28,0,14,0,14,0,15,0, + 7,0,7,128,3,128,3,128,1,192,1,192,1,224,0,224, + 0,224,0,112,0,112,0,120,0,56,0,56,7,26,26,20, + 4,251,254,254,254,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,254,254,254,13,11,22,20, + 3,11,2,0,7,0,7,0,15,128,31,192,61,224,56,224, + 120,240,240,120,224,56,224,56,20,3,9,20,0,249,255,255, + 240,255,255,240,255,255,240,6,6,6,20,6,16,192,224,112, + 56,28,12,16,15,30,20,2,0,31,224,127,248,127,252,112, + 60,0,28,0,28,15,252,127,252,127,252,240,28,224,28,224, + 124,255,255,127,223,63,159,19,21,63,20,0,0,252,0,0, + 252,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 124,0,29,255,0,31,255,128,31,135,192,30,1,192,30,1, + 224,28,0,224,28,0,224,28,0,224,28,0,224,30,1,192, + 31,3,192,255,255,128,255,255,0,252,254,0,16,15,30,20, + 2,0,7,230,31,254,63,254,124,62,112,14,224,14,224,14, + 224,0,224,0,224,0,240,6,120,15,127,254,63,252,15,240, + 19,21,63,20,1,0,0,63,0,0,63,0,0,63,0,0, + 7,0,0,7,0,0,7,0,7,231,0,31,255,0,63,255, + 0,124,63,0,112,15,0,240,15,0,224,7,0,224,7,0, + 224,7,0,224,7,0,112,15,0,124,63,0,63,255,224,31, + 247,224,7,231,224,18,15,45,20,1,0,3,240,0,15,252, + 0,31,254,0,62,31,0,120,7,128,112,3,128,255,255,128, + 255,255,128,255,255,128,240,0,0,120,0,0,126,3,128,63, + 255,192,31,255,128,7,254,0,16,21,42,20,3,0,1,255, + 7,255,7,255,15,0,14,0,14,0,255,252,255,252,255,252, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,252,255,252,255,252,18,22,66,20,1,249,7,207, + 192,31,255,192,63,255,192,124,126,0,112,30,0,240,30,0, + 224,14,0,224,14,0,224,14,0,240,30,0,112,30,0,120, + 126,0,63,254,0,31,238,0,15,206,0,0,14,0,0,14, + 0,0,30,0,0,60,0,31,252,0,31,248,0,31,224,0, + 18,21,63,20,1,0,252,0,0,252,0,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,248,0,29,252,0,31,254, + 0,31,15,0,30,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,127,31,192,127, + 31,192,127,31,192,15,21,42,20,3,0,7,128,7,128,7, + 128,7,128,0,0,0,0,127,128,127,128,127,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255, + 254,255,254,255,254,12,28,56,20,3,249,3,192,3,192,3, + 192,3,192,0,0,0,0,255,240,255,240,255,240,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,240,255,224,255, + 192,255,128,17,21,63,20,1,0,252,0,0,252,0,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,255,0,28,255, + 0,28,255,0,28,120,0,28,240,0,29,224,0,31,192,0, + 31,192,0,31,224,0,29,240,0,28,248,0,28,124,0,252, + 63,128,252,63,128,252,63,128,15,21,42,20,3,0,127,128, + 127,128,127,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,255,254,255,254,255,254,20,15,45,20,1,0,243,143, + 0,255,255,128,255,255,192,120,241,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,112,225,192,112,225,192,112, + 225,192,252,249,240,252,249,240,252,249,240,17,15,45,20,2, + 0,249,240,0,251,248,0,255,252,0,62,30,0,60,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,254,63,128,254,63,128,254,63,128,17,15, + 45,20,2,0,7,240,0,31,252,0,63,254,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,240, + 7,128,112,7,0,120,15,0,63,254,0,31,252,0,7,240, + 0,19,22,66,20,0,249,252,124,0,253,255,0,255,255,128, + 31,3,192,30,1,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,1,224,30,1,192,31,7,192,31,255,128,29,254, + 0,28,120,0,28,0,0,28,0,0,28,0,0,28,0,0, + 255,192,0,255,192,0,255,192,0,19,22,66,20,1,249,7, + 231,224,31,255,224,63,255,224,124,63,0,112,15,0,240,15, + 0,224,7,0,224,7,0,224,7,0,240,15,0,112,15,0, + 124,63,0,63,255,0,31,247,0,7,199,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,127,224,0,127,224,0,127, + 224,17,15,45,20,2,0,126,62,0,126,255,0,127,255,128, + 15,199,0,15,2,0,15,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,255,252,0,255,252, + 0,255,252,0,15,15,30,20,3,0,15,236,63,252,63,252, + 120,60,112,28,120,0,127,192,63,248,15,252,224,62,224,14, + 248,30,255,252,255,248,231,224,16,20,40,20,2,0,28,0, + 28,0,28,0,28,0,28,0,255,252,255,252,255,252,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,6,30,31, + 31,255,15,254,3,240,18,15,45,20,1,0,252,63,0,252, + 63,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,30,31,0, + 31,255,192,15,255,192,7,247,192,19,15,45,20,0,0,255, + 31,224,255,31,224,255,31,224,60,7,0,28,7,0,30,14, + 0,14,14,0,15,28,0,7,28,0,7,184,0,3,184,0, + 3,240,0,1,240,0,1,224,0,0,224,0,19,15,45,20, + 0,0,254,15,224,254,15,224,254,15,224,56,227,128,56,227, + 128,57,243,128,61,247,128,29,247,0,31,191,0,31,31,0, + 31,31,0,15,30,0,14,14,0,14,14,0,14,14,0,17, + 15,45,20,1,0,254,63,128,254,63,128,254,63,128,60,28, + 0,30,56,0,15,112,0,7,224,0,3,224,0,3,240,0, + 7,120,0,14,60,0,28,30,0,254,63,128,254,63,128,254, + 63,128,19,22,66,20,1,249,255,31,224,255,31,224,255,31, + 224,60,3,128,28,7,0,30,7,0,14,14,0,15,14,0, + 7,28,0,7,156,0,3,184,0,3,248,0,1,240,0,1, + 240,0,0,224,0,0,224,0,1,192,0,1,192,0,3,128, + 0,127,240,0,127,240,0,127,240,0,13,15,30,20,4,0, + 255,248,255,248,255,248,224,240,225,224,227,192,7,128,15,0, + 30,0,60,0,120,56,240,56,255,248,255,248,255,248,9,26, + 52,20,5,251,7,128,15,128,15,128,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,60,0,248,0,248,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,31,128,15,128,7,128,3,26,26,20,8,251,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,9,26,52,20,5,251,240,0, + 248,0,248,0,60,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,30,0,15,128,15,128,31,128,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,252,0,248,0, + 240,0,15,7,14,20,2,6,12,0,63,14,127,142,247,222, + 227,252,225,248,0,96,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=17 h=27 x= 7 y= 8 dx=20 dy= 0 ascent=23 len=54 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =23 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24n[686] U8G_SECTION(".progmem.u8g_font_courB24n") = { + 0,30,44,249,245,21,0,0,0,0,42,57,0,23,251,21, + 0,15,14,28,20,3,7,3,128,3,128,3,128,3,128,99, + 140,251,190,127,252,31,240,15,224,15,224,30,240,60,120,120, + 60,48,24,17,17,51,20,1,1,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,255,255, + 128,255,255,128,255,255,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,7,10,10,20, + 5,251,30,30,60,60,56,112,112,224,224,192,15,3,6,20, + 2,8,255,254,255,254,255,254,5,4,4,20,7,0,112,248, + 248,112,13,27,54,20,3,252,0,56,0,56,0,120,0,112, + 0,112,0,224,0,224,1,224,1,192,1,192,3,128,3,128, + 7,128,7,0,15,0,14,0,14,0,28,0,28,0,60,0, + 56,0,56,0,112,0,112,0,240,0,224,0,224,0,13,21, + 42,20,3,0,15,128,63,224,127,240,112,112,240,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,240,120,112,112,127,240,63,224,15,128,13,21, + 42,20,4,0,3,0,15,0,127,0,255,0,255,0,103,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,255,248,255,248,255,248,14,21, + 42,20,2,0,7,192,31,240,63,248,120,60,112,28,112,28, + 112,28,0,28,0,56,0,120,0,240,1,224,3,192,7,128, + 15,0,30,0,60,0,120,0,255,252,255,252,255,252,15,21, + 42,20,2,0,7,224,31,240,127,248,120,60,112,28,0,28, + 0,28,0,60,7,248,7,240,7,248,0,124,0,28,0,14, + 0,14,0,14,0,30,224,60,255,252,255,248,63,224,14,21, + 42,20,2,0,0,240,1,240,1,240,3,240,7,240,7,112, + 15,112,14,112,30,112,28,112,56,112,120,112,112,112,255,252, + 255,252,255,252,0,112,0,112,3,252,3,252,3,252,15,21, + 42,20,2,0,63,252,63,252,63,252,56,0,56,0,56,0, + 56,0,63,224,63,248,63,252,56,124,0,30,0,14,0,14, + 0,14,0,14,64,30,240,60,255,248,127,248,31,224,14,21, + 42,20,3,0,1,248,7,248,15,248,31,0,60,0,120,0, + 112,0,112,0,227,192,239,240,255,240,248,120,240,60,224,28, + 224,28,240,28,112,60,120,120,127,248,63,240,15,192,14,21, + 42,20,2,0,255,252,255,252,255,252,224,60,224,56,224,56, + 0,56,0,120,0,112,0,112,0,240,0,224,0,224,1,224, + 1,192,1,192,3,192,3,128,7,128,7,0,7,0,14,21, + 42,20,3,0,15,128,63,224,127,240,112,112,224,56,224,56, + 224,56,112,112,127,240,63,224,63,240,124,248,240,60,224,28, + 224,28,224,28,224,28,248,124,127,248,63,240,15,192,14,21, + 42,20,3,0,15,128,63,224,127,240,120,240,240,120,224,56, + 224,60,224,60,224,60,240,124,120,252,63,220,63,156,15,60, + 0,56,0,120,0,112,97,240,255,224,255,128,126,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 6 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w=10 h=16 x=-2 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR08[2433] U8G_SECTION(".progmem.u8g_font_courR08") = { + 0,10,16,254,252,6,1,151,3,21,32,255,254,9,254,7, + 254,0,0,0,6,0,1,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,4,160,160,160,5,8,8, + 6,1,255,80,80,248,80,80,248,80,80,4,8,8,6,1, + 255,32,112,128,96,16,144,96,32,6,7,7,6,0,0,224, + 164,200,48,92,148,24,6,6,6,6,0,0,48,64,96,148, + 136,116,1,3,3,6,2,4,128,128,128,3,9,9,6,2, + 254,32,64,64,128,128,128,64,64,32,3,9,9,6,1,254, + 128,64,64,32,32,32,64,64,128,5,4,4,6,0,3,32, + 216,32,80,5,5,5,6,0,1,32,32,248,32,32,2,3, + 3,6,1,254,64,64,128,4,1,1,6,1,3,240,1,2, + 2,6,2,0,128,128,6,9,9,6,0,255,4,8,16,16, + 32,32,64,64,128,4,7,7,6,1,0,96,144,144,144,144, + 144,96,4,7,7,6,1,0,32,224,32,32,32,32,240,4, + 7,7,6,1,0,96,144,16,32,64,128,240,4,7,7,6, + 1,0,96,144,16,96,16,144,96,5,7,7,6,0,0,16, + 48,80,144,248,16,16,4,7,7,6,1,0,240,128,128,224, + 16,16,224,4,7,7,6,1,0,112,128,128,224,144,144,96, + 4,7,7,6,1,0,240,144,16,32,32,64,64,4,7,7, + 6,1,0,96,144,144,96,144,144,96,4,7,7,6,1,0, + 96,144,144,112,16,16,224,1,5,5,6,2,0,128,128,0, + 128,128,2,6,6,6,1,254,64,64,0,64,64,128,3,5, + 5,6,1,1,32,64,128,64,32,4,3,3,6,1,2,240, + 0,240,3,5,5,6,2,1,128,64,32,64,128,4,6,6, + 6,1,0,96,144,32,64,0,64,6,8,8,6,0,255,56, + 68,156,168,168,156,64,56,6,6,6,6,0,0,112,40,72, + 120,72,204,5,6,6,6,0,0,240,72,112,72,72,240,4, + 6,6,6,1,0,96,144,128,128,144,96,5,6,6,6,0, + 0,240,72,72,72,72,240,5,6,6,6,0,0,248,72,112, + 64,72,248,5,6,6,6,0,0,248,72,112,80,64,224,4, + 6,6,6,1,0,96,144,128,176,144,96,6,6,6,6,0, + 0,204,72,120,72,72,204,5,6,6,6,1,0,248,32,32, + 32,32,248,5,6,6,6,1,0,120,16,16,144,144,96,6, + 6,6,6,0,0,216,80,96,80,72,228,5,6,6,6,1, + 0,224,64,64,64,72,248,5,6,6,6,1,0,136,216,168, + 168,136,216,6,6,6,6,0,0,220,72,104,88,72,200,4, + 6,6,6,1,0,96,144,144,144,144,96,5,6,6,6,1, + 0,240,72,72,112,64,224,4,7,7,6,1,255,96,144,144, + 144,144,96,112,6,6,6,6,0,0,240,72,72,112,72,228, + 4,6,6,6,1,0,112,128,96,16,144,224,5,6,6,6, + 0,0,248,168,32,32,32,112,6,6,6,6,0,0,204,72, + 72,72,72,48,6,6,6,6,0,0,220,136,80,80,80,32, + 6,6,6,6,0,0,220,136,168,168,80,80,5,6,6,6, + 1,0,216,80,32,32,80,216,5,6,6,6,1,0,216,136, + 80,32,32,112,4,6,6,6,1,0,240,144,32,64,144,240, + 2,9,9,6,2,254,192,128,128,128,128,128,128,128,192,5, + 9,9,6,1,255,128,128,64,64,32,32,16,16,8,2,9, + 9,6,2,254,192,64,64,64,64,64,64,64,192,5,3,3, + 6,1,4,32,80,136,6,1,1,6,0,254,252,2,2,2, + 6,1,6,128,64,5,5,5,6,0,0,96,16,112,144,104, + 5,7,7,6,0,0,192,64,112,72,72,72,240,4,5,5, + 6,1,0,96,144,128,144,96,5,7,7,6,1,0,48,16, + 112,144,144,144,104,4,5,5,6,1,0,96,144,224,144,96, + 4,7,7,6,1,0,48,64,240,64,64,64,240,5,7,7, + 6,1,254,104,144,144,144,112,16,224,6,7,7,6,0,0, + 192,64,112,72,72,72,236,5,7,7,6,1,0,32,0,96, + 32,32,32,248,3,9,9,6,1,254,32,0,224,32,32,32, + 32,32,192,5,7,7,6,0,0,192,64,88,80,96,80,216, + 5,7,7,6,1,0,96,32,32,32,32,32,248,6,5,5, + 6,0,0,208,168,168,168,172,6,5,5,6,0,0,176,72, + 72,72,236,4,5,5,6,1,0,96,144,144,144,96,5,7, + 7,6,0,254,176,72,72,72,112,64,240,5,7,7,6,1, + 254,104,144,144,144,112,16,56,5,5,5,6,1,0,184,64, + 64,64,240,4,5,5,6,1,0,112,128,96,16,224,5,7, + 7,6,1,0,64,64,240,64,64,72,48,6,5,5,6,0, + 0,216,72,72,72,52,6,5,5,6,0,0,204,68,40,40, + 16,6,5,5,6,0,0,172,168,168,80,80,5,5,5,6, + 0,0,216,80,32,80,216,5,7,7,6,0,254,216,72,72, + 72,48,32,192,4,5,5,6,1,0,240,32,64,144,240,3, + 9,9,6,2,254,32,64,64,64,128,64,64,64,32,1,9, + 9,6,2,254,128,128,128,128,128,128,128,128,128,3,9,9, + 6,2,254,128,64,64,64,32,64,64,64,128,4,2,2,6, + 1,3,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,6,0,1,1,7,7,6,2, + 254,128,0,128,128,128,128,128,4,8,8,6,1,255,32,32, + 112,128,128,112,32,32,6,7,7,6,0,0,56,64,248,32, + 32,68,252,5,5,5,6,0,1,136,112,80,112,136,5,7, + 7,6,0,0,136,80,248,32,248,32,112,1,9,9,6,2, + 254,128,128,128,0,0,128,128,128,128,4,8,8,6,1,255, + 112,128,96,144,144,96,16,224,3,1,1,6,2,5,160,6, + 7,7,6,0,0,48,72,180,164,180,72,48,4,5,5,6, + 1,1,224,16,208,0,240,6,3,3,6,0,1,108,216,108, + 5,3,3,6,0,2,248,8,8,4,1,1,6,1,3,240, + 6,7,7,6,0,0,48,72,188,180,172,72,48,4,1,1, + 6,1,5,240,4,3,3,6,1,4,96,144,96,5,6,6, + 6,0,0,32,32,248,32,0,248,3,4,4,6,2,3,96, + 160,64,224,3,4,4,6,2,3,224,64,32,192,2,2,2, + 6,2,5,64,128,6,7,7,6,0,254,216,72,72,72,116, + 64,64,6,8,8,6,0,255,124,168,168,104,40,40,40,108, + 1,2,2,6,2,2,128,128,3,3,3,6,1,254,64,32, + 192,3,4,4,6,2,3,192,64,64,224,4,5,5,6,1, + 1,96,144,96,0,240,6,3,3,6,1,1,216,108,216,6, + 7,7,6,0,0,192,68,72,244,44,92,132,6,7,7,6, + 0,0,192,68,72,252,52,72,156,6,7,7,6,0,0,224, + 68,40,212,44,92,132,4,7,7,6,0,254,32,0,32,32, + 64,144,96,6,9,9,6,0,0,32,16,0,112,40,72,120, + 72,204,6,9,9,6,0,0,16,32,0,112,40,72,120,72, + 204,6,9,9,6,0,0,32,80,0,112,40,72,120,72,204, + 6,9,9,6,0,0,40,80,0,112,40,72,120,72,204,6, + 8,8,6,0,0,80,0,112,40,72,120,72,204,6,9,9, + 6,0,0,16,40,16,112,40,72,120,72,204,6,6,6,6, + 0,0,124,48,92,112,144,156,4,8,8,6,1,254,96,144, + 128,128,144,96,32,192,5,9,9,6,0,0,32,16,0,248, + 72,112,64,72,248,5,9,9,6,0,0,16,32,0,248,72, + 112,64,72,248,5,9,9,6,0,0,32,80,0,248,72,112, + 64,72,248,5,8,8,6,0,0,80,0,248,72,112,64,72, + 248,5,9,9,6,0,0,64,32,0,248,32,32,32,32,248, + 5,9,9,6,0,0,16,32,0,248,32,32,32,32,248,5, + 9,9,6,0,0,32,80,0,248,32,32,32,32,248,5,8, + 8,6,0,0,80,0,248,32,32,32,32,248,5,6,6,6, + 0,0,240,72,232,72,72,240,6,9,9,6,0,0,40,80, + 0,220,72,104,88,72,200,4,9,9,6,1,0,64,32,0, + 96,144,144,144,144,96,4,9,9,6,1,0,32,64,0,96, + 144,144,144,144,96,4,9,9,6,1,0,32,80,0,96,144, + 144,144,144,96,4,9,9,6,1,0,80,160,0,96,144,144, + 144,144,96,4,8,8,6,1,0,160,0,96,144,144,144,144, + 96,5,5,5,6,0,1,136,80,32,80,136,6,6,6,6, + 0,0,52,72,88,104,72,176,6,9,9,6,0,0,32,16, + 0,204,72,72,72,72,48,6,9,9,6,0,0,16,32,0, + 204,72,72,72,72,48,6,9,9,6,0,0,16,40,0,204, + 72,72,72,72,48,6,8,8,6,0,0,80,0,204,72,72, + 72,72,48,5,9,9,6,0,0,16,32,0,216,136,80,32, + 32,112,5,6,6,6,0,0,192,112,72,112,64,224,6,6, + 6,6,0,0,48,72,88,68,84,200,5,8,8,6,0,0, + 64,32,0,96,16,112,144,104,5,8,8,6,0,0,16,32, + 0,96,16,112,144,104,5,8,8,6,0,0,32,80,0,96, + 16,112,144,104,5,8,8,6,0,0,80,160,0,96,16,112, + 144,104,5,7,7,6,0,0,80,0,96,16,112,144,104,5, + 9,9,6,0,0,32,80,32,0,96,16,112,144,104,6,5, + 5,6,0,0,108,148,124,144,236,4,7,7,6,1,254,96, + 144,128,144,96,32,192,4,8,8,6,1,0,64,32,0,96, + 144,240,128,112,4,8,8,6,1,0,32,64,0,96,144,240, + 128,112,4,8,8,6,1,0,64,160,0,96,144,240,128,112, + 4,7,7,6,1,0,160,0,96,144,240,128,112,5,8,8, + 6,0,0,64,32,0,96,32,32,32,248,5,8,8,6,0, + 0,16,32,0,96,32,32,32,248,5,8,8,6,0,0,32, + 80,0,96,32,32,32,248,5,7,7,6,0,0,80,0,96, + 32,32,32,248,4,8,8,6,1,0,208,96,160,112,144,144, + 144,96,6,8,8,6,0,0,40,80,0,176,72,72,72,236, + 4,8,8,6,1,0,64,32,0,96,144,144,144,96,4,8, + 8,6,1,0,16,32,0,96,144,144,144,96,4,8,8,6, + 1,0,64,160,0,96,144,144,144,96,4,8,8,6,1,0, + 80,160,0,96,144,144,144,96,4,7,7,6,1,0,160,0, + 96,144,144,144,96,5,5,5,6,0,1,32,0,248,0,32, + 6,6,6,6,0,0,4,56,88,104,72,176,6,8,8,6, + 0,0,32,16,0,216,72,72,72,52,6,8,8,6,0,0, + 16,32,0,216,72,72,72,52,6,8,8,6,0,0,32,80, + 0,216,72,72,72,52,6,7,7,6,0,0,80,0,216,72, + 72,72,52,5,10,10,6,0,254,16,32,0,216,72,72,72, + 48,32,192,5,9,9,6,0,254,192,64,112,72,72,72,112, + 64,224,5,9,9,6,0,254,80,0,216,72,72,72,48,32, + 192}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 6 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w=10 h=16 x=-2 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR08r[1157] U8G_SECTION(".progmem.u8g_font_courR08r") = { + 0,10,16,254,252,6,1,151,3,21,32,127,254,8,254,7, + 254,0,0,0,6,0,1,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,4,160,160,160,5,8,8, + 6,1,255,80,80,248,80,80,248,80,80,4,8,8,6,1, + 255,32,112,128,96,16,144,96,32,6,7,7,6,0,0,224, + 164,200,48,92,148,24,6,6,6,6,0,0,48,64,96,148, + 136,116,1,3,3,6,2,4,128,128,128,3,9,9,6,2, + 254,32,64,64,128,128,128,64,64,32,3,9,9,6,1,254, + 128,64,64,32,32,32,64,64,128,5,4,4,6,0,3,32, + 216,32,80,5,5,5,6,0,1,32,32,248,32,32,2,3, + 3,6,1,254,64,64,128,4,1,1,6,1,3,240,1,2, + 2,6,2,0,128,128,6,9,9,6,0,255,4,8,16,16, + 32,32,64,64,128,4,7,7,6,1,0,96,144,144,144,144, + 144,96,4,7,7,6,1,0,32,224,32,32,32,32,240,4, + 7,7,6,1,0,96,144,16,32,64,128,240,4,7,7,6, + 1,0,96,144,16,96,16,144,96,5,7,7,6,0,0,16, + 48,80,144,248,16,16,4,7,7,6,1,0,240,128,128,224, + 16,16,224,4,7,7,6,1,0,112,128,128,224,144,144,96, + 4,7,7,6,1,0,240,144,16,32,32,64,64,4,7,7, + 6,1,0,96,144,144,96,144,144,96,4,7,7,6,1,0, + 96,144,144,112,16,16,224,1,5,5,6,2,0,128,128,0, + 128,128,2,6,6,6,1,254,64,64,0,64,64,128,3,5, + 5,6,1,1,32,64,128,64,32,4,3,3,6,1,2,240, + 0,240,3,5,5,6,2,1,128,64,32,64,128,4,6,6, + 6,1,0,96,144,32,64,0,64,6,8,8,6,0,255,56, + 68,156,168,168,156,64,56,6,6,6,6,0,0,112,40,72, + 120,72,204,5,6,6,6,0,0,240,72,112,72,72,240,4, + 6,6,6,1,0,96,144,128,128,144,96,5,6,6,6,0, + 0,240,72,72,72,72,240,5,6,6,6,0,0,248,72,112, + 64,72,248,5,6,6,6,0,0,248,72,112,80,64,224,4, + 6,6,6,1,0,96,144,128,176,144,96,6,6,6,6,0, + 0,204,72,120,72,72,204,5,6,6,6,1,0,248,32,32, + 32,32,248,5,6,6,6,1,0,120,16,16,144,144,96,6, + 6,6,6,0,0,216,80,96,80,72,228,5,6,6,6,1, + 0,224,64,64,64,72,248,5,6,6,6,1,0,136,216,168, + 168,136,216,6,6,6,6,0,0,220,72,104,88,72,200,4, + 6,6,6,1,0,96,144,144,144,144,96,5,6,6,6,1, + 0,240,72,72,112,64,224,4,7,7,6,1,255,96,144,144, + 144,144,96,112,6,6,6,6,0,0,240,72,72,112,72,228, + 4,6,6,6,1,0,112,128,96,16,144,224,5,6,6,6, + 0,0,248,168,32,32,32,112,6,6,6,6,0,0,204,72, + 72,72,72,48,6,6,6,6,0,0,220,136,80,80,80,32, + 6,6,6,6,0,0,220,136,168,168,80,80,5,6,6,6, + 1,0,216,80,32,32,80,216,5,6,6,6,1,0,216,136, + 80,32,32,112,4,6,6,6,1,0,240,144,32,64,144,240, + 2,9,9,6,2,254,192,128,128,128,128,128,128,128,192,5, + 9,9,6,1,255,128,128,64,64,32,32,16,16,8,2,9, + 9,6,2,254,192,64,64,64,64,64,64,64,192,5,3,3, + 6,1,4,32,80,136,6,1,1,6,0,254,252,2,2,2, + 6,1,6,128,64,5,5,5,6,0,0,96,16,112,144,104, + 5,7,7,6,0,0,192,64,112,72,72,72,240,4,5,5, + 6,1,0,96,144,128,144,96,5,7,7,6,1,0,48,16, + 112,144,144,144,104,4,5,5,6,1,0,96,144,224,144,96, + 4,7,7,6,1,0,48,64,240,64,64,64,240,5,7,7, + 6,1,254,104,144,144,144,112,16,224,6,7,7,6,0,0, + 192,64,112,72,72,72,236,5,7,7,6,1,0,32,0,96, + 32,32,32,248,3,9,9,6,1,254,32,0,224,32,32,32, + 32,32,192,5,7,7,6,0,0,192,64,88,80,96,80,216, + 5,7,7,6,1,0,96,32,32,32,32,32,248,6,5,5, + 6,0,0,208,168,168,168,172,6,5,5,6,0,0,176,72, + 72,72,236,4,5,5,6,1,0,96,144,144,144,96,5,7, + 7,6,0,254,176,72,72,72,112,64,240,5,7,7,6,1, + 254,104,144,144,144,112,16,56,5,5,5,6,1,0,184,64, + 64,64,240,4,5,5,6,1,0,112,128,96,16,224,5,7, + 7,6,1,0,64,64,240,64,64,72,48,6,5,5,6,0, + 0,216,72,72,72,52,6,5,5,6,0,0,204,68,40,40, + 16,6,5,5,6,0,0,172,168,168,80,80,5,5,5,6, + 0,0,216,80,32,80,216,5,7,7,6,0,254,216,72,72, + 72,48,32,192,4,5,5,6,1,0,240,32,64,144,240,3, + 9,9,6,2,254,32,64,64,64,128,64,64,64,32,1,9, + 9,6,2,254,128,128,128,128,128,128,128,128,128,3,9,9, + 6,2,254,128,64,64,64,32,64,64,64,128,4,2,2,6, + 1,3,80,160,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 4 y= 8 dx= 9 dy= 0 ascent=12 len=24 + Font Bounding box w=14 h=20 x=-3 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR10[3052] U8G_SECTION(".progmem.u8g_font_courR10") = { + 0,14,20,253,251,9,1,224,3,220,32,255,253,12,253,10, + 253,0,0,0,9,0,1,1,9,9,9,3,0,128,128,128, + 128,128,128,0,128,128,4,4,4,9,2,6,144,144,144,144, + 5,10,10,9,2,255,80,80,80,248,80,80,248,80,80,80, + 5,13,13,9,2,254,32,32,120,136,128,192,48,8,136,240, + 32,32,32,8,10,10,9,0,0,96,144,144,115,12,48,204, + 18,18,12,6,8,8,9,1,0,56,64,64,64,168,144,152, + 100,1,4,4,9,3,5,128,128,128,128,3,12,12,9,3, + 254,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 9,2,254,128,64,64,32,32,32,32,32,32,64,64,128,5, + 6,6,9,1,3,32,32,248,32,80,136,7,7,7,9,1, + 1,16,16,16,254,16,16,16,3,4,4,9,2,254,96,96, + 192,128,6,1,1,9,1,4,252,2,2,2,9,3,0,192, + 192,6,11,11,9,1,255,4,8,8,16,16,32,32,64,64, + 128,128,6,10,10,9,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,9,1,0,32,96,160,32,32,32,32,32, + 32,248,5,10,10,9,1,0,112,136,136,8,16,32,64,128, + 136,248,6,10,10,9,1,0,56,68,4,4,24,4,4,4, + 132,120,6,10,10,9,1,0,24,40,40,72,72,136,136,252, + 8,28,6,10,10,9,1,0,124,64,64,64,120,4,4,4, + 132,120,6,10,10,9,1,0,56,64,128,128,184,196,132,132, + 68,56,6,10,10,9,1,0,252,132,4,8,8,8,16,16, + 16,16,5,10,10,9,2,0,112,136,136,136,112,136,136,136, + 136,112,6,10,10,9,1,0,112,136,132,132,140,116,4,4, + 8,112,2,7,7,9,3,0,192,192,0,0,0,192,192,3, + 9,9,9,2,254,96,96,0,0,0,96,96,192,128,7,7, + 7,9,0,1,6,24,96,128,96,24,6,7,3,3,9,1, + 3,254,0,254,7,7,7,9,1,1,192,48,12,2,12,48, + 192,5,9,9,9,1,0,112,136,8,8,48,32,0,32,32, + 7,10,10,9,1,255,56,68,132,156,164,164,158,128,64,56, + 9,9,18,9,255,0,56,0,8,0,20,0,20,0,34,0, + 62,0,65,0,65,0,247,128,7,9,9,9,0,0,252,66, + 66,66,124,66,66,66,252,7,9,9,9,1,0,58,70,130, + 128,128,128,128,66,60,8,9,9,9,0,0,252,66,65,65, + 65,65,65,66,252,7,9,9,9,1,0,254,66,66,72,120, + 72,66,66,254,7,9,9,9,1,0,254,66,66,72,120,72, + 64,64,240,8,9,9,9,0,0,58,70,130,128,128,143,130, + 66,60,8,9,9,9,0,0,231,66,66,66,126,66,66,66, + 231,5,9,9,9,2,0,248,32,32,32,32,32,32,32,248, + 7,9,9,9,1,0,62,8,8,8,8,136,136,136,112,8, + 9,9,9,0,0,238,68,72,80,112,72,68,68,227,8,9, + 9,9,0,0,248,32,32,32,32,33,33,33,255,9,9,18, + 9,0,0,227,128,99,0,85,0,85,0,73,0,73,0,65, + 0,65,0,227,128,8,9,9,9,0,0,231,98,82,82,74, + 74,70,70,226,8,9,9,9,0,0,60,66,129,129,129,129, + 129,66,60,7,9,9,9,1,0,252,66,66,66,66,124,64, + 64,240,8,11,11,9,0,254,60,66,129,129,129,129,129,66, + 60,49,94,8,9,9,9,0,0,252,66,66,66,68,120,68, + 66,225,6,9,9,9,1,0,116,140,132,128,120,4,132,196, + 184,7,9,9,9,1,0,254,146,146,16,16,16,16,16,124, + 8,9,9,9,0,0,231,66,66,66,66,66,66,66,60,9, + 9,18,9,0,0,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,9,9,18,9,0,0,227,128,65, + 0,73,0,73,0,85,0,85,0,34,0,34,0,34,0,8, + 9,9,9,0,0,231,66,36,36,24,36,36,66,231,7,9, + 9,9,0,0,238,68,68,40,40,16,16,16,124,6,9,9, + 9,1,0,252,132,136,16,32,32,68,132,252,3,12,12,9, + 3,254,224,128,128,128,128,128,128,128,128,128,128,224,6,11, + 11,9,1,255,128,64,64,32,32,16,16,8,8,4,4,3, + 12,12,9,2,254,224,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,9,2,4,32,80,80,136,136,9,1,2,9, + 0,253,255,128,4,2,2,9,2,8,192,48,7,7,7,9, + 1,0,120,132,4,124,132,132,122,8,10,10,9,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,9,1,0,58, + 70,130,128,128,66,60,8,10,10,9,0,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,9,1,0,56,68,130,254, + 128,66,60,7,10,10,9,1,0,30,32,32,252,32,32,32, + 32,32,248,8,10,10,9,0,253,59,70,130,130,130,70,58, + 2,4,120,8,10,10,9,0,0,192,64,64,92,98,66,66, + 66,66,231,5,10,10,9,2,0,32,32,0,224,32,32,32, + 32,32,248,5,13,13,9,1,253,8,8,0,248,8,8,8, + 8,8,8,8,16,224,7,10,10,9,1,0,192,64,64,78, + 72,80,96,80,72,206,5,10,10,9,2,0,224,32,32,32, + 32,32,32,32,32,248,9,7,14,9,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,9,0,0, + 220,98,66,66,66,66,231,8,7,7,9,0,0,60,66,129, + 129,129,66,60,8,10,10,9,0,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,9,0,253,59,70,130,130,130,70, + 58,2,2,15,7,7,7,9,1,0,204,82,96,64,64,64, + 248,6,7,7,9,1,0,124,132,128,120,4,132,248,7,9, + 9,9,0,0,32,32,252,32,32,32,32,34,28,8,7,7, + 9,0,0,198,66,66,66,66,70,59,8,7,7,9,0,0, + 231,66,66,36,36,24,24,9,7,14,9,0,0,227,128,65, + 0,73,0,73,0,42,0,54,0,34,0,7,7,7,9,0, + 0,238,68,40,16,40,68,238,8,10,10,9,0,253,231,66, + 66,36,36,24,8,16,16,120,5,7,7,9,2,0,248,136, + 16,32,64,136,248,3,12,12,9,2,254,32,64,64,64,64, + 128,64,64,64,64,64,32,1,11,11,9,3,254,128,128,128, + 128,128,128,128,128,128,128,128,3,12,12,9,2,254,128,64, + 64,64,64,32,64,64,64,64,64,128,6,2,2,9,1,3, + 100,152,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,9,0,1,1,9,9,9,4,254,128, + 128,0,128,128,128,128,128,128,5,9,9,9,2,0,32,32, + 120,136,128,136,112,32,32,7,9,9,9,1,0,24,36,32, + 32,120,32,32,66,252,6,6,6,9,1,1,180,72,132,132, + 72,180,7,9,9,9,1,0,238,68,68,40,124,16,124,16, + 56,1,11,11,9,3,254,128,128,128,128,0,0,128,128,128, + 128,128,6,10,10,9,1,255,60,68,64,240,136,68,60,8, + 136,240,5,1,1,9,2,8,216,8,9,9,9,0,0,60, + 66,153,165,161,165,153,66,60,4,6,6,9,2,3,192,32, + 224,176,0,240,8,7,7,9,0,0,17,34,68,204,68,34, + 17,7,3,3,9,1,3,254,2,2,6,1,1,9,1,4, + 252,8,9,9,9,0,0,60,66,185,165,185,169,165,66,60, + 4,1,1,9,2,8,240,4,4,4,9,2,6,96,144,144, + 96,7,7,7,9,1,1,16,16,254,16,16,0,254,4,6, + 6,9,2,4,96,144,16,32,64,240,4,6,6,9,2,4, + 96,144,96,16,144,96,4,2,2,9,2,8,48,192,8,10, + 10,9,0,253,198,66,66,66,66,70,123,64,64,64,7,10, + 10,9,1,255,126,148,148,148,116,20,20,20,20,62,2,2, + 2,9,3,3,192,192,3,3,3,9,2,253,64,32,224,3, + 6,6,9,3,4,64,192,64,64,64,224,4,6,6,9,2, + 3,96,144,144,96,0,240,8,7,7,9,0,0,136,68,34, + 51,34,68,136,10,10,20,9,255,0,64,0,193,0,66,0, + 68,0,68,128,233,128,18,128,20,128,39,192,64,128,10,10, + 20,9,255,0,64,0,193,0,66,0,68,0,69,128,234,64, + 16,64,16,128,33,0,67,192,10,10,20,9,255,0,96,0, + 145,0,98,0,20,0,148,128,105,128,18,128,20,128,39,192, + 64,128,5,9,9,9,2,254,32,32,0,32,96,128,128,136, + 112,9,12,24,9,0,0,48,0,12,0,0,0,56,0,8, + 0,20,0,20,0,34,0,62,0,65,0,65,0,247,128,9, + 12,24,9,0,0,12,0,48,0,0,0,56,0,8,0,20, + 0,20,0,34,0,62,0,65,0,65,0,247,128,9,12,24, + 9,0,0,8,0,20,0,0,0,56,0,8,0,20,0,20, + 0,34,0,62,0,65,0,65,0,247,128,9,12,24,9,0, + 0,26,0,44,0,0,0,56,0,8,0,20,0,20,0,34, + 0,62,0,65,0,65,0,247,128,9,11,22,9,0,0,54, + 0,0,0,56,0,8,0,20,0,20,0,34,0,62,0,65, + 0,65,0,247,128,9,12,24,9,0,0,24,0,36,0,24, + 0,56,0,8,0,20,0,20,0,34,0,62,0,65,0,65, + 0,247,128,9,9,18,9,255,0,31,128,12,128,20,0,20, + 128,39,128,60,128,68,0,68,128,239,128,7,12,12,9,1, + 253,58,70,130,128,128,128,128,66,60,16,8,56,7,12,12, + 9,1,0,96,24,0,254,66,66,72,120,72,66,66,254,7, + 12,12,9,1,0,12,48,0,254,66,66,72,120,72,66,66, + 254,7,12,12,9,1,0,16,40,0,254,66,66,72,120,72, + 66,66,254,7,11,11,9,1,0,108,0,254,66,66,72,120, + 72,66,66,254,5,12,12,9,2,0,192,48,0,248,32,32, + 32,32,32,32,32,248,5,12,12,9,2,0,24,96,0,248, + 32,32,32,32,32,32,32,248,5,12,12,9,2,0,32,80, + 0,248,32,32,32,32,32,32,32,248,5,11,11,9,2,0, + 216,0,248,32,32,32,32,32,32,32,248,8,9,9,9,0, + 0,252,66,65,65,241,65,65,66,252,8,12,12,9,0,0, + 26,44,0,231,98,82,82,74,74,70,70,226,8,12,12,9, + 0,0,48,12,0,60,66,129,129,129,129,129,66,60,8,12, + 12,9,0,0,12,48,0,60,66,129,129,129,129,129,66,60, + 8,12,12,9,0,0,16,40,0,60,66,129,129,129,129,129, + 66,60,8,12,12,9,0,0,26,44,0,60,66,129,129,129, + 129,129,66,60,8,11,11,9,0,0,102,0,60,66,129,129, + 129,129,129,66,60,7,7,7,9,1,1,130,68,40,16,40, + 68,130,9,9,18,9,255,0,30,128,33,0,66,128,68,128, + 72,128,80,128,32,128,97,0,158,0,8,12,12,9,0,0, + 48,12,0,231,66,66,66,66,66,66,66,60,8,12,12,9, + 0,0,12,48,0,231,66,66,66,66,66,66,66,60,8,12, + 12,9,0,0,16,40,0,231,66,66,66,66,66,66,66,60, + 8,11,11,9,0,0,102,0,231,66,66,66,66,66,66,66, + 60,7,12,12,9,1,0,12,48,0,238,68,68,40,40,16, + 16,16,124,7,9,9,9,0,0,224,64,124,66,66,66,124, + 64,224,7,9,9,9,0,0,56,68,68,88,68,66,66,82, + 204,7,10,10,9,1,0,96,24,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,24,96,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,16,40,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,52,88,0,120,132,4,124,132,140, + 118,7,9,9,9,1,0,108,0,120,132,4,124,132,140,118, + 7,10,10,9,1,0,48,72,48,120,132,4,124,132,140,118, + 8,7,7,9,0,0,118,137,9,127,136,137,118,7,10,10, + 9,1,253,58,70,130,128,128,66,60,16,8,56,7,10,10, + 9,1,0,96,24,0,56,68,130,254,128,66,60,7,10,10, + 9,1,0,12,48,0,56,68,130,254,128,66,60,7,10,10, + 9,1,0,16,40,0,56,68,130,254,128,66,60,7,9,9, + 9,1,0,108,0,56,68,130,254,128,66,60,5,10,10,9, + 2,0,192,48,0,224,32,32,32,32,32,248,5,10,10,9, + 2,0,48,192,0,224,32,32,32,32,32,248,5,10,10,9, + 2,0,32,80,0,224,32,32,32,32,32,248,5,9,9,9, + 2,0,216,0,224,32,32,32,32,32,248,8,12,12,9,0, + 0,2,228,24,40,68,60,66,129,129,129,66,60,8,10,10, + 9,0,0,26,44,0,220,98,66,66,66,66,231,8,10,10, + 9,0,0,48,12,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,12,48,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,16,40,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,26,44,0,60,66,129,129,129,66,60,8,9,9, + 9,0,0,108,0,60,66,129,129,129,66,60,8,7,7,9, + 0,1,24,24,0,255,0,24,24,8,7,7,9,0,0,61, + 70,137,145,161,66,188,8,10,10,9,0,0,48,12,0,198, + 66,66,66,66,70,59,8,10,10,9,0,0,12,48,0,198, + 66,66,66,66,70,59,8,10,10,9,0,0,16,40,0,198, + 66,66,66,66,70,59,8,9,9,9,0,0,108,0,198,66, + 66,66,66,70,59,8,13,13,9,0,253,6,24,0,231,66, + 66,36,36,24,8,16,16,120,8,12,12,9,0,253,192,64, + 92,98,65,65,65,98,92,64,64,240,8,12,12,9,0,253, + 54,0,231,66,66,36,36,24,8,16,16,120}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w= 9 h=13 x= 3 y= 8 dx= 9 dy= 0 ascent=11 len=18 + Font Bounding box w=14 h=20 x=-3 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR10r[1443] U8G_SECTION(".progmem.u8g_font_courR10r") = { + 0,14,20,253,251,9,1,224,3,220,32,127,253,11,253,10, + 253,0,0,0,9,0,1,1,9,9,9,3,0,128,128,128, + 128,128,128,0,128,128,4,4,4,9,2,6,144,144,144,144, + 5,10,10,9,2,255,80,80,80,248,80,80,248,80,80,80, + 5,13,13,9,2,254,32,32,120,136,128,192,48,8,136,240, + 32,32,32,8,10,10,9,0,0,96,144,144,115,12,48,204, + 18,18,12,6,8,8,9,1,0,56,64,64,64,168,144,152, + 100,1,4,4,9,3,5,128,128,128,128,3,12,12,9,3, + 254,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 9,2,254,128,64,64,32,32,32,32,32,32,64,64,128,5, + 6,6,9,1,3,32,32,248,32,80,136,7,7,7,9,1, + 1,16,16,16,254,16,16,16,3,4,4,9,2,254,96,96, + 192,128,6,1,1,9,1,4,252,2,2,2,9,3,0,192, + 192,6,11,11,9,1,255,4,8,8,16,16,32,32,64,64, + 128,128,6,10,10,9,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,9,1,0,32,96,160,32,32,32,32,32, + 32,248,5,10,10,9,1,0,112,136,136,8,16,32,64,128, + 136,248,6,10,10,9,1,0,56,68,4,4,24,4,4,4, + 132,120,6,10,10,9,1,0,24,40,40,72,72,136,136,252, + 8,28,6,10,10,9,1,0,124,64,64,64,120,4,4,4, + 132,120,6,10,10,9,1,0,56,64,128,128,184,196,132,132, + 68,56,6,10,10,9,1,0,252,132,4,8,8,8,16,16, + 16,16,5,10,10,9,2,0,112,136,136,136,112,136,136,136, + 136,112,6,10,10,9,1,0,112,136,132,132,140,116,4,4, + 8,112,2,7,7,9,3,0,192,192,0,0,0,192,192,3, + 9,9,9,2,254,96,96,0,0,0,96,96,192,128,7,7, + 7,9,0,1,6,24,96,128,96,24,6,7,3,3,9,1, + 3,254,0,254,7,7,7,9,1,1,192,48,12,2,12,48, + 192,5,9,9,9,1,0,112,136,8,8,48,32,0,32,32, + 7,10,10,9,1,255,56,68,132,156,164,164,158,128,64,56, + 9,9,18,9,255,0,56,0,8,0,20,0,20,0,34,0, + 62,0,65,0,65,0,247,128,7,9,9,9,0,0,252,66, + 66,66,124,66,66,66,252,7,9,9,9,1,0,58,70,130, + 128,128,128,128,66,60,8,9,9,9,0,0,252,66,65,65, + 65,65,65,66,252,7,9,9,9,1,0,254,66,66,72,120, + 72,66,66,254,7,9,9,9,1,0,254,66,66,72,120,72, + 64,64,240,8,9,9,9,0,0,58,70,130,128,128,143,130, + 66,60,8,9,9,9,0,0,231,66,66,66,126,66,66,66, + 231,5,9,9,9,2,0,248,32,32,32,32,32,32,32,248, + 7,9,9,9,1,0,62,8,8,8,8,136,136,136,112,8, + 9,9,9,0,0,238,68,72,80,112,72,68,68,227,8,9, + 9,9,0,0,248,32,32,32,32,33,33,33,255,9,9,18, + 9,0,0,227,128,99,0,85,0,85,0,73,0,73,0,65, + 0,65,0,227,128,8,9,9,9,0,0,231,98,82,82,74, + 74,70,70,226,8,9,9,9,0,0,60,66,129,129,129,129, + 129,66,60,7,9,9,9,1,0,252,66,66,66,66,124,64, + 64,240,8,11,11,9,0,254,60,66,129,129,129,129,129,66, + 60,49,94,8,9,9,9,0,0,252,66,66,66,68,120,68, + 66,225,6,9,9,9,1,0,116,140,132,128,120,4,132,196, + 184,7,9,9,9,1,0,254,146,146,16,16,16,16,16,124, + 8,9,9,9,0,0,231,66,66,66,66,66,66,66,60,9, + 9,18,9,0,0,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,9,9,18,9,0,0,227,128,65, + 0,73,0,73,0,85,0,85,0,34,0,34,0,34,0,8, + 9,9,9,0,0,231,66,36,36,24,36,36,66,231,7,9, + 9,9,0,0,238,68,68,40,40,16,16,16,124,6,9,9, + 9,1,0,252,132,136,16,32,32,68,132,252,3,12,12,9, + 3,254,224,128,128,128,128,128,128,128,128,128,128,224,6,11, + 11,9,1,255,128,64,64,32,32,16,16,8,8,4,4,3, + 12,12,9,2,254,224,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,9,2,4,32,80,80,136,136,9,1,2,9, + 0,253,255,128,4,2,2,9,2,8,192,48,7,7,7,9, + 1,0,120,132,4,124,132,132,122,8,10,10,9,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,9,1,0,58, + 70,130,128,128,66,60,8,10,10,9,0,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,9,1,0,56,68,130,254, + 128,66,60,7,10,10,9,1,0,30,32,32,252,32,32,32, + 32,32,248,8,10,10,9,0,253,59,70,130,130,130,70,58, + 2,4,120,8,10,10,9,0,0,192,64,64,92,98,66,66, + 66,66,231,5,10,10,9,2,0,32,32,0,224,32,32,32, + 32,32,248,5,13,13,9,1,253,8,8,0,248,8,8,8, + 8,8,8,8,16,224,7,10,10,9,1,0,192,64,64,78, + 72,80,96,80,72,206,5,10,10,9,2,0,224,32,32,32, + 32,32,32,32,32,248,9,7,14,9,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,9,0,0, + 220,98,66,66,66,66,231,8,7,7,9,0,0,60,66,129, + 129,129,66,60,8,10,10,9,0,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,9,0,253,59,70,130,130,130,70, + 58,2,2,15,7,7,7,9,1,0,204,82,96,64,64,64, + 248,6,7,7,9,1,0,124,132,128,120,4,132,248,7,9, + 9,9,0,0,32,32,252,32,32,32,32,34,28,8,7,7, + 9,0,0,198,66,66,66,66,70,59,8,7,7,9,0,0, + 231,66,66,36,36,24,24,9,7,14,9,0,0,227,128,65, + 0,73,0,73,0,42,0,54,0,34,0,7,7,7,9,0, + 0,238,68,40,16,40,68,238,8,10,10,9,0,253,231,66, + 66,36,36,24,8,16,16,120,5,7,7,9,2,0,248,136, + 16,32,64,136,248,3,12,12,9,2,254,32,64,64,64,64, + 128,64,64,64,64,64,32,1,11,11,9,3,254,128,128,128, + 128,128,128,128,128,128,128,128,3,12,12,9,2,254,128,64, + 64,64,64,32,64,64,64,64,64,128,6,2,2,9,1,3, + 100,152,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=14 x= 4 y= 8 dx=10 dy= 0 ascent=14 len=28 + Font Bounding box w=15 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR12[3471] U8G_SECTION(".progmem.u8g_font_courR12") = { + 0,15,24,253,250,10,2,12,4,92,32,255,253,14,253,11, + 253,0,0,0,10,0,1,1,11,11,10,4,0,128,128,128, + 128,128,128,128,128,0,128,128,4,5,5,10,3,6,144,144, + 144,144,144,7,12,12,10,1,255,40,40,40,40,254,40,40, + 254,40,40,40,40,5,13,13,10,2,255,32,32,120,136,128, + 128,112,8,8,136,240,32,32,7,11,11,10,1,0,112,136, + 136,112,6,56,192,28,34,34,28,6,9,9,10,1,0,48, + 72,64,32,100,148,136,136,116,1,5,5,10,4,6,128,128, + 128,128,128,3,13,13,10,4,254,32,64,64,64,128,128,128, + 128,128,64,64,64,32,3,13,13,10,2,254,128,64,64,64, + 32,32,32,32,32,64,64,64,128,7,6,6,10,1,5,16, + 16,254,56,40,68,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,3,4,4,10,2,254,96,96,64,128,7,1, + 1,10,1,4,254,2,2,2,10,3,0,192,192,6,13,13, + 10,2,254,4,4,8,8,16,16,16,32,32,64,64,128,128, + 7,11,11,10,1,0,56,68,68,130,130,130,130,130,68,68, + 56,7,11,11,10,1,0,16,48,208,16,16,16,16,16,16, + 16,254,7,11,11,10,1,0,56,68,130,2,2,4,8,16, + 32,66,254,7,11,11,10,1,0,56,68,130,4,24,4,2, + 2,130,68,56,7,11,11,10,1,0,12,12,20,36,36,68, + 132,254,4,4,30,7,11,11,10,1,0,126,64,64,64,120, + 68,2,2,130,68,56,7,11,11,10,2,0,28,96,64,128, + 184,196,130,130,130,68,56,6,11,11,10,1,0,252,132,4, + 8,8,8,16,16,16,32,32,6,11,11,10,2,0,48,72, + 132,132,120,72,132,132,132,72,48,7,11,11,10,1,0,56, + 68,130,130,70,58,2,2,4,12,112,2,7,7,10,3,0, + 192,192,0,0,0,192,192,3,9,9,10,2,254,96,96,0, + 0,0,96,96,64,128,8,9,9,10,1,0,1,6,24,96, + 128,96,24,6,1,8,4,4,10,1,3,255,0,0,255,8, + 9,9,10,1,0,128,96,24,6,1,6,24,96,128,6,10, + 10,10,2,0,120,132,132,4,24,32,32,0,32,32,9,12, + 24,10,0,255,62,0,65,0,65,0,128,128,156,128,164,128, + 164,128,164,128,159,0,64,0,65,0,62,0,9,10,20,10, + 0,0,120,0,20,0,20,0,34,0,34,0,34,0,62,0, + 65,0,65,0,227,128,8,10,10,10,1,0,252,66,65,66, + 124,66,65,65,66,252,8,10,10,10,1,0,29,99,65,128, + 128,128,128,65,99,28,8,10,10,10,1,0,248,70,66,65, + 65,65,65,66,70,248,7,10,10,10,1,0,254,66,66,72, + 120,72,64,66,66,254,7,10,10,10,1,0,254,66,66,72, + 120,72,64,64,64,240,9,10,20,10,1,0,29,0,99,0, + 65,0,128,0,128,0,135,128,129,0,65,0,97,0,30,0, + 8,10,10,10,1,0,231,66,66,66,126,66,66,66,66,231, + 7,10,10,10,1,0,254,16,16,16,16,16,16,16,16,254, + 8,10,10,10,1,0,63,4,4,4,4,4,132,132,132,120, + 8,10,10,10,1,0,247,66,68,72,80,120,68,68,66,243, + 8,10,10,10,1,0,248,32,32,32,32,32,33,33,33,255, + 9,10,20,10,0,0,193,128,99,0,99,0,85,0,85,0, + 73,0,73,0,65,0,65,0,227,128,9,10,20,10,0,0, + 231,128,97,0,81,0,81,0,73,0,73,0,69,0,69,0, + 67,0,243,0,8,10,10,10,1,0,60,66,66,129,129,129, + 129,66,66,60,8,10,10,10,1,0,252,66,65,65,66,124, + 64,64,64,248,8,12,12,10,1,254,60,66,66,129,129,129, + 129,66,66,60,17,46,8,10,10,10,1,0,248,68,66,66, + 68,120,68,66,66,243,7,10,10,10,1,0,58,70,130,128, + 112,12,2,130,196,184,7,10,10,10,1,0,254,146,146,146, + 16,16,16,16,16,124,9,10,20,10,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,10,20,10,0,0,227,128,65,0,65,0,34,0,34,0, + 34,0,20,0,20,0,8,0,8,0,9,10,20,10,0,0, + 247,128,65,0,73,0,73,0,85,0,85,0,85,0,34,0, + 34,0,34,0,9,10,20,10,0,0,227,128,65,0,34,0, + 20,0,8,0,8,0,20,0,34,0,65,0,227,128,9,10, + 20,10,0,0,227,128,65,0,34,0,34,0,20,0,8,0, + 8,0,8,0,8,0,62,0,7,10,10,10,1,0,254,130, + 132,8,16,16,32,66,130,254,3,13,13,10,4,254,224,128, + 128,128,128,128,128,128,128,128,128,128,224,6,13,13,10,2, + 254,128,128,64,64,32,32,32,16,16,8,8,4,4,3,13, + 13,10,2,254,224,32,32,32,32,32,32,32,32,32,32,32, + 224,7,4,4,10,1,7,16,40,68,130,10,1,2,10,0, + 253,255,192,3,3,3,10,2,8,128,64,32,7,7,7,10, + 1,0,56,68,4,124,132,132,122,8,10,10,10,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,10,1,0,58, + 70,130,128,128,66,60,8,10,10,10,1,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,10,1,0,56,68,130,254, + 128,66,60,7,10,10,10,2,0,28,34,32,252,32,32,32, + 32,32,252,8,10,10,10,1,253,59,70,130,130,130,70,58, + 2,2,60,8,10,10,10,1,0,192,64,64,92,98,66,66, + 66,66,231,7,10,10,10,1,0,16,16,0,112,16,16,16, + 16,16,254,5,13,13,10,2,253,16,16,0,248,8,8,8, + 8,8,8,8,8,240,8,10,10,10,1,0,192,64,64,79, + 68,72,112,72,68,207,7,10,10,10,1,0,112,16,16,16, + 16,16,16,16,16,254,9,7,14,10,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,10,1,0, + 220,98,66,66,66,66,231,7,7,7,10,1,0,56,68,130, + 130,130,68,56,8,10,10,10,1,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,10,1,253,59,70,130,130,130,70, + 58,2,2,15,8,7,7,10,1,0,238,49,32,32,32,32, + 252,6,7,7,10,2,0,124,132,128,120,4,132,248,8,9, + 9,10,0,0,32,32,254,32,32,32,32,33,30,8,7,7, + 10,1,0,198,66,66,66,66,70,59,9,7,14,10,0,0, + 247,128,65,0,34,0,34,0,20,0,20,0,8,0,9,7, + 14,10,0,0,227,128,65,0,73,0,42,0,42,0,54,0, + 34,0,7,7,7,10,1,0,238,68,40,16,40,68,238,9, + 10,20,10,0,253,227,128,65,0,34,0,34,0,20,0,20, + 0,8,0,8,0,16,0,120,0,6,7,7,10,2,0,252, + 136,16,32,64,132,252,3,13,13,10,3,254,32,64,64,64, + 64,64,128,64,64,64,64,64,32,1,12,12,10,4,254,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,10,3, + 254,128,64,64,64,64,64,32,64,64,64,64,64,128,7,3, + 3,10,1,3,96,146,12,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,10,0,1,1,10, + 10,10,4,253,128,128,0,128,128,128,128,128,128,128,5,10, + 10,10,2,0,32,32,120,136,128,128,136,112,32,32,8,10, + 10,10,1,0,28,34,32,32,248,32,32,32,65,255,7,7, + 7,10,1,1,130,124,68,68,68,124,130,9,10,20,10,0, + 0,227,128,65,0,34,0,34,0,20,0,62,0,8,0,62, + 0,8,0,62,0,1,12,12,10,4,254,128,128,128,128,128, + 0,0,128,128,128,128,128,9,12,24,10,0,255,31,0,33, + 0,33,0,112,0,140,0,131,0,96,128,24,128,7,0,66, + 0,66,0,124,0,4,2,2,10,3,8,144,144,10,10,20, + 10,0,0,30,0,33,0,64,128,142,64,144,64,144,64,142, + 64,64,128,33,0,30,0,5,7,7,10,2,3,112,8,120, + 136,120,0,248,7,7,7,10,1,0,18,36,72,144,72,36, + 18,7,4,4,10,1,2,254,2,2,2,7,1,1,10,1, + 4,254,10,10,20,10,0,0,30,0,33,0,64,128,156,64, + 146,64,156,64,146,64,64,128,33,0,30,0,5,1,1,10, + 2,8,248,5,5,5,10,2,6,112,136,136,136,112,7,9, + 9,10,1,0,16,16,16,254,16,16,16,0,254,4,6,6, + 10,2,5,96,144,32,64,144,240,4,6,6,10,3,5,96, + 144,32,16,144,96,3,3,3,10,4,8,32,64,128,8,10, + 10,10,1,253,198,66,66,66,66,70,123,64,64,64,7,12, + 12,10,1,255,62,84,148,148,148,84,52,20,20,20,20,62, + 2,2,2,10,4,4,192,192,3,4,4,10,3,253,64,64, + 32,224,5,6,6,10,2,5,32,224,32,32,32,248,5,7, + 7,10,2,3,112,136,136,136,112,0,248,7,7,7,10,1, + 0,144,72,36,18,36,72,144,10,11,22,10,0,0,32,0, + 224,64,32,128,33,0,34,0,252,128,9,128,18,128,36,128, + 71,192,0,128,10,11,22,10,0,0,32,0,224,64,32,128, + 33,0,34,0,253,128,10,64,16,128,33,0,66,64,3,192, + 10,11,22,10,0,0,96,0,144,64,32,128,17,0,146,0, + 100,128,9,128,18,128,36,128,71,192,0,128,6,10,10,10, + 1,253,16,16,0,16,16,96,128,132,132,120,9,14,28,10, + 0,0,32,0,16,0,8,0,0,0,120,0,20,0,20,0, + 34,0,34,0,34,0,62,0,65,0,65,0,227,128,9,14, + 28,10,0,0,4,0,8,0,16,0,0,0,120,0,20,0, + 20,0,34,0,34,0,34,0,62,0,65,0,65,0,227,128, + 9,14,28,10,0,0,8,0,20,0,34,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,13,26,10,0,0,50,0,76,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,13,26,10,0,0,36,0,36,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,14,28,10,0,0,24,0,36,0,36,0,24,0, + 120,0,20,0,20,0,34,0,34,0,34,0,62,0,65,0, + 65,0,227,128,9,10,20,10,0,0,127,128,40,128,40,128, + 74,0,78,0,122,0,72,128,136,128,136,128,223,128,8,13, + 13,10,1,253,29,99,65,128,128,128,128,65,99,28,16,8, + 56,7,14,14,10,1,0,32,16,8,0,254,66,66,72,120, + 72,64,66,66,254,7,14,14,10,1,0,4,8,16,0,254, + 66,66,72,120,72,64,66,66,254,7,14,14,10,1,0,16, + 40,68,0,254,66,66,72,120,72,64,66,66,254,7,13,13, + 10,1,0,36,36,0,254,66,66,72,120,72,64,66,66,254, + 7,14,14,10,1,0,32,16,8,0,254,16,16,16,16,16, + 16,16,16,254,7,14,14,10,1,0,8,16,32,0,254,16, + 16,16,16,16,16,16,16,254,7,14,14,10,1,0,16,40, + 68,0,254,16,16,16,16,16,16,16,16,254,7,13,13,10, + 1,0,68,68,0,254,16,16,16,16,16,16,16,16,254,8, + 10,10,10,1,0,248,70,66,65,241,65,65,66,70,248,9, + 13,26,10,0,0,25,0,38,0,0,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,243,0,8, + 14,14,10,1,0,32,16,8,0,60,66,66,129,129,129,129, + 66,66,60,8,14,14,10,1,0,4,8,16,0,60,66,66, + 129,129,129,129,66,66,60,8,14,14,10,1,0,8,20,34, + 0,60,66,66,129,129,129,129,66,66,60,8,13,13,10,1, + 0,50,76,0,60,66,66,129,129,129,129,66,66,60,8,13, + 13,10,1,0,36,36,0,60,66,66,129,129,129,129,66,66, + 60,7,7,7,10,1,1,130,68,40,16,40,68,130,8,10, + 10,10,1,0,61,66,66,133,137,145,161,66,66,188,9,14, + 28,10,0,0,16,0,8,0,4,0,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,14,28,10,0,0,2,0,4,0,8,0,0,0,247,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 28,0,9,14,28,10,0,0,8,0,20,0,34,0,0,0, + 247,128,65,0,65,0,65,0,65,0,65,0,65,0,65,0, + 34,0,28,0,9,13,26,10,0,0,34,0,34,0,0,0, + 247,128,65,0,65,0,65,0,65,0,65,0,65,0,65,0, + 34,0,28,0,9,14,28,10,0,0,2,0,4,0,8,0, + 0,0,227,128,65,0,34,0,34,0,20,0,8,0,8,0, + 8,0,8,0,62,0,8,10,10,10,1,0,224,64,124,66, + 65,66,124,64,64,224,7,11,11,10,1,0,56,68,68,72, + 88,68,66,66,66,82,204,7,11,11,10,1,0,32,16,8, + 0,56,68,4,124,132,132,122,7,11,11,10,1,0,4,8, + 16,0,56,68,4,124,132,132,122,7,11,11,10,1,0,16, + 40,68,0,56,68,4,124,132,132,122,7,10,10,10,1,0, + 50,76,0,56,68,4,124,132,132,122,7,10,10,10,1,0, + 36,36,0,56,68,4,124,132,132,122,7,12,12,10,1,0, + 24,36,36,24,0,56,68,4,124,132,132,122,9,7,14,10, + 0,0,55,0,72,128,8,128,127,128,136,0,136,128,119,0, + 7,10,10,10,1,253,58,70,130,128,128,66,60,16,8,56, + 7,11,11,10,1,0,32,16,8,0,56,68,130,254,128,66, + 60,7,11,11,10,1,0,4,8,16,0,56,68,130,254,128, + 66,60,7,11,11,10,1,0,16,40,68,0,56,68,130,254, + 128,66,60,7,10,10,10,1,0,36,36,0,56,68,130,254, + 128,66,60,7,11,11,10,1,0,32,16,8,0,112,16,16, + 16,16,16,254,7,11,11,10,1,0,8,16,32,0,112,16, + 16,16,16,16,254,7,11,11,10,1,0,16,40,68,0,112, + 16,16,16,16,16,254,7,10,10,10,1,0,72,72,0,112, + 16,16,16,16,16,254,7,11,11,10,1,0,230,24,104,4, + 60,66,130,130,130,68,56,8,10,10,10,1,0,50,76,0, + 220,98,66,66,66,66,231,7,11,11,10,1,0,32,16,8, + 0,56,68,130,130,130,68,56,7,11,11,10,1,0,8,16, + 32,0,56,68,130,130,130,68,56,7,11,11,10,1,0,16, + 40,68,0,56,68,130,130,130,68,56,7,10,10,10,1,0, + 50,76,0,56,68,130,130,130,68,56,7,10,10,10,1,0, + 68,68,0,56,68,130,130,130,68,56,8,7,7,10,1,1, + 24,24,0,255,0,24,24,7,9,9,10,1,255,2,58,68, + 138,146,162,68,184,128,8,11,11,10,1,0,32,16,8,0, + 198,66,66,66,66,70,59,8,11,11,10,1,0,4,8,16, + 0,198,66,66,66,66,70,59,8,11,11,10,1,0,16,40, + 68,0,198,66,66,66,66,70,59,8,10,10,10,1,0,36, + 36,0,198,66,66,66,66,70,59,9,14,28,10,0,253,2, + 0,4,0,8,0,0,0,227,128,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,120,0,8,14,14,10,1, + 253,192,64,64,64,92,98,65,65,65,98,92,64,64,240,9, + 13,26,10,0,253,18,0,18,0,0,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,16,0,120,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=13 x= 4 y= 8 dx=10 dy= 0 ascent=12 len=24 + Font Bounding box w=15 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR12r[1592] U8G_SECTION(".progmem.u8g_font_courR12r") = { + 0,15,24,253,250,10,2,12,4,92,32,127,253,12,253,11, + 253,0,0,0,10,0,1,1,11,11,10,4,0,128,128,128, + 128,128,128,128,128,0,128,128,4,5,5,10,3,6,144,144, + 144,144,144,7,12,12,10,1,255,40,40,40,40,254,40,40, + 254,40,40,40,40,5,13,13,10,2,255,32,32,120,136,128, + 128,112,8,8,136,240,32,32,7,11,11,10,1,0,112,136, + 136,112,6,56,192,28,34,34,28,6,9,9,10,1,0,48, + 72,64,32,100,148,136,136,116,1,5,5,10,4,6,128,128, + 128,128,128,3,13,13,10,4,254,32,64,64,64,128,128,128, + 128,128,64,64,64,32,3,13,13,10,2,254,128,64,64,64, + 32,32,32,32,32,64,64,64,128,7,6,6,10,1,5,16, + 16,254,56,40,68,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,3,4,4,10,2,254,96,96,64,128,7,1, + 1,10,1,4,254,2,2,2,10,3,0,192,192,6,13,13, + 10,2,254,4,4,8,8,16,16,16,32,32,64,64,128,128, + 7,11,11,10,1,0,56,68,68,130,130,130,130,130,68,68, + 56,7,11,11,10,1,0,16,48,208,16,16,16,16,16,16, + 16,254,7,11,11,10,1,0,56,68,130,2,2,4,8,16, + 32,66,254,7,11,11,10,1,0,56,68,130,4,24,4,2, + 2,130,68,56,7,11,11,10,1,0,12,12,20,36,36,68, + 132,254,4,4,30,7,11,11,10,1,0,126,64,64,64,120, + 68,2,2,130,68,56,7,11,11,10,2,0,28,96,64,128, + 184,196,130,130,130,68,56,6,11,11,10,1,0,252,132,4, + 8,8,8,16,16,16,32,32,6,11,11,10,2,0,48,72, + 132,132,120,72,132,132,132,72,48,7,11,11,10,1,0,56, + 68,130,130,70,58,2,2,4,12,112,2,7,7,10,3,0, + 192,192,0,0,0,192,192,3,9,9,10,2,254,96,96,0, + 0,0,96,96,64,128,8,9,9,10,1,0,1,6,24,96, + 128,96,24,6,1,8,4,4,10,1,3,255,0,0,255,8, + 9,9,10,1,0,128,96,24,6,1,6,24,96,128,6,10, + 10,10,2,0,120,132,132,4,24,32,32,0,32,32,9,12, + 24,10,0,255,62,0,65,0,65,0,128,128,156,128,164,128, + 164,128,164,128,159,0,64,0,65,0,62,0,9,10,20,10, + 0,0,120,0,20,0,20,0,34,0,34,0,34,0,62,0, + 65,0,65,0,227,128,8,10,10,10,1,0,252,66,65,66, + 124,66,65,65,66,252,8,10,10,10,1,0,29,99,65,128, + 128,128,128,65,99,28,8,10,10,10,1,0,248,70,66,65, + 65,65,65,66,70,248,7,10,10,10,1,0,254,66,66,72, + 120,72,64,66,66,254,7,10,10,10,1,0,254,66,66,72, + 120,72,64,64,64,240,9,10,20,10,1,0,29,0,99,0, + 65,0,128,0,128,0,135,128,129,0,65,0,97,0,30,0, + 8,10,10,10,1,0,231,66,66,66,126,66,66,66,66,231, + 7,10,10,10,1,0,254,16,16,16,16,16,16,16,16,254, + 8,10,10,10,1,0,63,4,4,4,4,4,132,132,132,120, + 8,10,10,10,1,0,247,66,68,72,80,120,68,68,66,243, + 8,10,10,10,1,0,248,32,32,32,32,32,33,33,33,255, + 9,10,20,10,0,0,193,128,99,0,99,0,85,0,85,0, + 73,0,73,0,65,0,65,0,227,128,9,10,20,10,0,0, + 231,128,97,0,81,0,81,0,73,0,73,0,69,0,69,0, + 67,0,243,0,8,10,10,10,1,0,60,66,66,129,129,129, + 129,66,66,60,8,10,10,10,1,0,252,66,65,65,66,124, + 64,64,64,248,8,12,12,10,1,254,60,66,66,129,129,129, + 129,66,66,60,17,46,8,10,10,10,1,0,248,68,66,66, + 68,120,68,66,66,243,7,10,10,10,1,0,58,70,130,128, + 112,12,2,130,196,184,7,10,10,10,1,0,254,146,146,146, + 16,16,16,16,16,124,9,10,20,10,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,10,20,10,0,0,227,128,65,0,65,0,34,0,34,0, + 34,0,20,0,20,0,8,0,8,0,9,10,20,10,0,0, + 247,128,65,0,73,0,73,0,85,0,85,0,85,0,34,0, + 34,0,34,0,9,10,20,10,0,0,227,128,65,0,34,0, + 20,0,8,0,8,0,20,0,34,0,65,0,227,128,9,10, + 20,10,0,0,227,128,65,0,34,0,34,0,20,0,8,0, + 8,0,8,0,8,0,62,0,7,10,10,10,1,0,254,130, + 132,8,16,16,32,66,130,254,3,13,13,10,4,254,224,128, + 128,128,128,128,128,128,128,128,128,128,224,6,13,13,10,2, + 254,128,128,64,64,32,32,32,16,16,8,8,4,4,3,13, + 13,10,2,254,224,32,32,32,32,32,32,32,32,32,32,32, + 224,7,4,4,10,1,7,16,40,68,130,10,1,2,10,0, + 253,255,192,3,3,3,10,2,8,128,64,32,7,7,7,10, + 1,0,56,68,4,124,132,132,122,8,10,10,10,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,10,1,0,58, + 70,130,128,128,66,60,8,10,10,10,1,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,10,1,0,56,68,130,254, + 128,66,60,7,10,10,10,2,0,28,34,32,252,32,32,32, + 32,32,252,8,10,10,10,1,253,59,70,130,130,130,70,58, + 2,2,60,8,10,10,10,1,0,192,64,64,92,98,66,66, + 66,66,231,7,10,10,10,1,0,16,16,0,112,16,16,16, + 16,16,254,5,13,13,10,2,253,16,16,0,248,8,8,8, + 8,8,8,8,8,240,8,10,10,10,1,0,192,64,64,79, + 68,72,112,72,68,207,7,10,10,10,1,0,112,16,16,16, + 16,16,16,16,16,254,9,7,14,10,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,10,1,0, + 220,98,66,66,66,66,231,7,7,7,10,1,0,56,68,130, + 130,130,68,56,8,10,10,10,1,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,10,1,253,59,70,130,130,130,70, + 58,2,2,15,8,7,7,10,1,0,238,49,32,32,32,32, + 252,6,7,7,10,2,0,124,132,128,120,4,132,248,8,9, + 9,10,0,0,32,32,254,32,32,32,32,33,30,8,7,7, + 10,1,0,198,66,66,66,66,70,59,9,7,14,10,0,0, + 247,128,65,0,34,0,34,0,20,0,20,0,8,0,9,7, + 14,10,0,0,227,128,65,0,73,0,42,0,42,0,54,0, + 34,0,7,7,7,10,1,0,238,68,40,16,40,68,238,9, + 10,20,10,0,253,227,128,65,0,34,0,34,0,20,0,20, + 0,8,0,8,0,16,0,120,0,6,7,7,10,2,0,252, + 136,16,32,64,132,252,3,13,13,10,3,254,32,64,64,64, + 64,64,128,64,64,64,64,64,32,1,12,12,10,4,254,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,10,3, + 254,128,64,64,64,64,64,32,64,64,64,64,64,128,7,3, + 3,10,1,3,96,146,12,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=11 h=16 x= 5 y=10 dx=11 dy= 0 ascent=15 len=32 + Font Bounding box w=16 h=26 x=-3 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR14[4276] U8G_SECTION(".progmem.u8g_font_courR14") = { + 0,16,26,253,249,11,2,74,5,74,32,255,252,15,252,12, + 252,0,0,0,11,0,1,2,12,12,11,4,0,192,192,192, + 192,192,192,64,64,0,0,192,192,6,5,5,11,3,7,204, + 204,204,68,68,8,15,15,11,1,254,18,18,18,18,18,127, + 36,36,36,254,36,36,36,36,36,6,15,15,11,2,254,16, + 16,116,140,132,128,96,24,4,132,196,184,16,16,16,9,12, + 24,11,1,0,56,0,68,0,68,0,68,0,57,128,14,0, + 48,0,206,0,17,0,17,0,17,0,14,0,7,10,10,11, + 2,0,56,64,64,64,32,116,136,136,152,102,2,5,5,11, + 4,7,192,192,192,64,64,3,14,14,11,5,254,32,64,64, + 128,128,128,128,128,128,128,128,64,64,32,3,14,14,11,3, + 254,128,64,64,32,32,32,32,32,32,32,32,64,64,128,7, + 8,8,11,2,4,16,16,16,254,16,40,68,68,9,9,18, + 11,1,1,8,0,8,0,8,0,8,0,255,128,8,0,8, + 0,8,0,8,0,4,5,5,11,3,253,48,48,96,64,128, + 8,1,1,11,1,5,255,2,2,2,11,4,0,192,192,8, + 16,16,11,1,253,1,1,2,2,4,4,8,8,16,16,32, + 32,64,64,128,128,7,12,12,11,2,0,56,68,130,130,130, + 130,130,130,130,130,68,56,7,12,12,11,2,0,48,208,16, + 16,16,16,16,16,16,16,16,254,8,12,12,11,1,0,28, + 34,65,65,1,2,4,8,16,33,65,255,7,12,12,11,2, + 0,120,132,2,2,4,56,4,2,2,2,132,120,7,12,12, + 11,2,0,12,20,20,36,36,68,68,132,254,4,4,30,8, + 12,12,11,1,0,126,64,64,64,92,98,1,1,1,1,194, + 60,7,12,12,11,2,0,28,96,64,128,128,184,196,130,130, + 130,68,56,7,12,12,11,2,0,254,130,2,2,4,4,4, + 4,8,8,8,8,7,12,12,11,2,0,56,68,130,130,68, + 56,68,130,130,130,68,56,7,12,12,11,2,0,56,68,130, + 130,130,70,58,2,2,4,12,112,2,8,8,11,4,0,192, + 192,0,0,0,0,192,192,4,11,11,11,2,253,48,48,0, + 0,0,0,48,48,96,64,128,10,9,18,11,0,1,0,192, + 3,0,12,0,48,0,192,0,48,0,12,0,3,0,0,192, + 9,4,8,11,1,3,255,128,0,0,0,0,255,128,10,9, + 18,11,0,1,192,0,48,0,12,0,3,0,0,192,3,0, + 12,0,48,0,192,0,7,11,11,11,2,0,124,130,130,2, + 2,28,16,16,0,24,24,8,13,13,11,2,255,56,68,130, + 130,142,146,146,146,143,128,128,67,60,11,11,22,11,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,9,11,22,11,1,0,252,0,66,0, + 65,0,65,0,66,0,126,0,65,0,64,128,64,128,65,0, + 254,0,9,11,22,11,1,0,30,128,97,128,64,128,128,0, + 128,0,128,0,128,0,128,0,64,128,97,0,30,0,9,11, + 22,11,1,0,252,0,67,0,65,0,64,128,64,128,64,128, + 64,128,64,128,65,0,67,0,252,0,8,11,11,11,1,0, + 255,65,65,65,72,120,72,65,65,65,255,8,11,11,11,1, + 0,255,65,65,65,72,120,72,64,64,64,240,10,11,22,11, + 1,0,30,128,97,128,64,128,128,0,128,0,128,0,131,192, + 128,128,64,128,97,0,30,0,9,11,22,11,1,0,227,128, + 65,0,65,0,65,0,65,0,127,0,65,0,65,0,65,0, + 65,0,227,128,7,11,11,11,2,0,254,16,16,16,16,16, + 16,16,16,16,254,9,11,22,11,1,0,31,128,2,0,2, + 0,2,0,2,0,2,0,130,0,130,0,130,0,68,0,56, + 0,10,11,22,11,1,0,243,192,65,0,66,0,68,0,72, + 0,88,0,100,0,66,0,66,0,65,0,241,192,9,11,22, + 11,1,0,248,0,32,0,32,0,32,0,32,0,32,0,32, + 0,32,128,32,128,32,128,255,128,11,11,22,11,0,0,224, + 224,96,192,81,64,81,64,74,64,74,64,68,64,68,64,64, + 64,64,64,241,224,9,11,22,11,1,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,11,22,11,1,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,11,22, + 11,1,0,254,0,65,0,64,128,64,128,65,0,126,0,64, + 0,64,0,64,0,64,0,248,0,9,13,26,11,1,254,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,56,128,71,0,10,11,22,11,1,0,254, + 0,65,0,64,128,64,128,65,0,126,0,68,0,66,0,66, + 0,65,0,240,192,8,11,11,11,1,0,61,67,129,128,64, + 60,2,1,129,194,188,9,11,22,11,1,0,255,128,136,128, + 136,128,136,128,8,0,8,0,8,0,8,0,8,0,8,0, + 62,0,10,11,22,11,0,0,243,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,11,11, + 22,11,0,0,241,224,64,64,64,64,32,128,32,128,17,0, + 17,0,10,0,10,0,4,0,4,0,11,11,22,11,0,0, + 241,224,64,64,68,64,68,64,68,64,42,128,42,128,42,128, + 42,128,17,0,17,0,9,11,22,11,1,0,227,128,65,0, + 34,0,34,0,20,0,8,0,20,0,34,0,34,0,65,0, + 227,128,9,11,22,11,1,0,227,128,65,0,34,0,34,0, + 20,0,20,0,8,0,8,0,8,0,8,0,62,0,7,11, + 11,11,2,0,254,130,130,4,8,16,32,64,130,130,254,3, + 15,15,11,5,253,224,128,128,128,128,128,128,128,128,128,128, + 128,128,128,224,8,16,16,11,2,253,128,128,64,64,32,32, + 16,16,8,8,4,4,2,2,1,1,3,15,15,11,3,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,32,224,7, + 4,4,11,2,8,16,40,68,130,11,1,2,11,0,252,255, + 224,3,3,3,11,4,9,128,64,32,9,8,16,11,1,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,192,0,64,0,64,0,64,0,94,0, + 97,0,64,128,64,128,64,128,64,128,97,0,222,0,8,8, + 8,11,1,0,61,67,129,128,128,128,67,60,9,12,24,11, + 1,0,3,0,1,0,1,0,1,0,61,0,67,0,129,0, + 129,0,129,0,129,0,67,0,61,128,8,8,8,11,1,0, + 60,66,129,255,128,128,67,60,8,12,12,11,2,0,15,16, + 32,32,254,32,32,32,32,32,32,254,9,12,24,11,1,252, + 61,128,67,0,129,0,129,0,129,0,129,0,67,0,61,0, + 1,0,1,0,2,0,124,0,9,12,24,11,1,0,192,0, + 64,0,64,0,64,0,94,0,97,0,65,0,65,0,65,0, + 65,0,65,0,227,128,7,11,11,11,2,0,16,16,0,112, + 16,16,16,16,16,16,254,6,15,15,11,2,252,8,8,0, + 252,4,4,4,4,4,4,4,4,4,8,240,9,12,24,11, + 1,0,192,0,64,0,64,0,64,0,79,0,68,0,72,0, + 112,0,72,0,68,0,66,0,199,128,7,12,12,11,2,0, + 240,16,16,16,16,16,16,16,16,16,16,254,11,8,16,11, + 0,0,217,128,102,64,68,64,68,64,68,64,68,64,68,64, + 230,96,9,8,16,11,1,0,222,0,97,0,65,0,65,0, + 65,0,65,0,65,0,227,128,8,8,8,11,1,0,60,66, + 129,129,129,129,66,60,9,12,24,11,1,252,222,0,97,0, + 64,128,64,128,64,128,64,128,97,0,94,0,64,0,64,0, + 64,0,240,0,9,12,24,11,1,252,61,128,67,0,129,0, + 129,0,129,0,129,0,67,0,61,0,1,0,1,0,1,0, + 7,128,8,8,8,11,1,0,238,49,32,32,32,32,32,254, + 7,8,8,11,2,0,122,134,130,112,12,130,194,188,8,11, + 11,11,2,0,32,32,32,254,32,32,32,32,32,33,30,9, + 8,16,11,1,0,195,0,65,0,65,0,65,0,65,0,65, + 0,67,0,61,128,9,8,16,11,1,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,9,8,16,11,1, + 0,227,128,65,0,73,0,73,0,85,0,85,0,34,0,34, + 0,8,8,8,11,1,0,231,66,36,24,24,36,66,231,9, + 12,24,11,1,252,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,16,0,248,0,7,8,8, + 11,2,0,254,130,132,8,16,34,66,254,5,15,15,11,3, + 253,24,32,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,15,15,11,5,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,15,15,11,3,253,192,32,32,32,32, + 32,32,24,32,32,32,32,32,32,192,8,3,3,11,1,4, + 96,153,6,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,11,0,1,2,12,12,11,4,252, + 192,192,0,0,128,128,192,192,192,192,192,192,6,12,12,11, + 2,0,16,16,16,60,68,132,128,128,68,56,16,16,8,11, + 11,11,2,0,28,34,32,32,16,252,16,32,33,65,126,6, + 7,7,11,2,2,132,120,132,132,132,120,132,9,11,22,11, + 1,0,227,128,65,0,34,0,34,0,20,0,20,0,127,0, + 8,0,127,0,8,0,62,0,1,15,15,11,5,253,128,128, + 128,128,128,128,0,0,0,128,128,128,128,128,128,7,14,14, + 11,2,254,62,66,66,64,112,140,130,98,28,6,130,130,132, + 252,4,2,2,11,3,10,144,144,11,11,22,11,0,0,31, + 0,96,192,79,64,145,32,160,32,160,32,160,32,145,32,78, + 64,96,192,31,0,6,8,8,11,2,3,112,8,120,136,152, + 236,0,252,10,8,16,11,1,0,24,192,49,128,99,0,198, + 0,198,0,99,0,49,128,24,192,9,4,8,11,1,3,255, + 128,0,128,0,128,0,128,8,1,1,11,1,5,255,11,11, + 22,11,0,0,31,0,96,192,94,64,145,32,145,32,158,32, + 148,32,146,32,81,64,96,128,31,0,5,1,1,11,3,10, + 248,5,5,5,11,3,6,112,136,136,136,112,9,9,18,11, + 1,1,8,0,8,0,8,0,255,128,8,0,8,0,8,0, + 0,0,255,128,5,7,7,11,3,5,112,136,8,16,32,64, + 248,5,7,7,11,3,5,112,136,8,48,8,136,112,3,3, + 3,11,4,9,32,64,128,9,12,24,11,1,252,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,125,128,64,0,64, + 0,64,0,64,0,8,14,14,11,1,254,63,74,138,138,138, + 74,58,10,10,10,10,10,10,59,2,2,2,11,4,5,192, + 192,3,3,3,11,4,253,64,32,192,5,7,7,11,3,5, + 32,224,32,32,32,32,248,6,8,8,11,2,3,120,132,132, + 132,132,120,0,252,10,8,16,11,0,0,198,0,99,0,49, + 128,24,192,24,192,49,128,99,0,198,0,11,12,24,11,0, + 0,32,0,224,64,32,128,33,0,33,0,34,64,252,192,9, + 64,10,64,19,224,32,64,0,224,11,12,24,11,0,0,32, + 0,224,64,32,128,33,0,33,0,34,192,253,32,8,32,8, + 64,16,128,33,0,3,224,11,12,24,11,0,0,112,0,136, + 64,8,128,49,0,9,0,138,64,116,192,9,64,10,64,19, + 224,32,64,0,224,6,11,11,11,2,253,24,24,0,16,16, + 112,128,128,132,132,120,11,15,30,11,0,0,16,0,8,0, + 4,0,0,0,60,0,4,0,10,0,10,0,17,0,17,0, + 32,128,63,128,64,64,64,64,241,224,11,15,30,11,0,0, + 1,0,2,0,4,0,0,0,60,0,4,0,10,0,10,0, + 17,0,17,0,32,128,63,128,64,64,64,64,241,224,11,15, + 30,11,0,0,12,0,18,0,33,0,0,0,60,0,4,0, + 10,0,10,0,17,0,17,0,32,128,63,128,64,64,64,64, + 241,224,11,14,28,11,0,0,25,0,38,0,0,0,60,0, + 4,0,10,0,10,0,17,0,17,0,32,128,63,128,64,64, + 64,64,241,224,11,14,28,11,0,0,18,0,18,0,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,11,15,30,11,0,0,12,0,18,0, + 18,0,12,0,60,0,4,0,10,0,10,0,17,0,17,0, + 32,128,63,128,64,64,64,64,241,224,11,11,22,11,255,0, + 31,224,6,32,10,32,10,0,18,64,19,192,62,64,34,0, + 66,32,66,32,231,224,9,14,28,11,1,253,30,128,97,128, + 64,128,128,0,128,0,128,0,128,0,128,0,64,128,97,0, + 30,0,8,0,4,0,24,0,8,15,15,11,1,0,32,16, + 8,0,255,65,65,65,72,120,72,65,65,65,255,8,15,15, + 11,1,0,4,8,16,0,255,65,65,65,72,120,72,65,65, + 65,255,8,15,15,11,1,0,24,36,66,0,255,65,65,65, + 72,120,72,65,65,65,255,8,14,14,11,1,0,36,36,0, + 255,65,65,65,72,120,72,65,65,65,255,7,15,15,11,2, + 0,32,16,8,0,254,16,16,16,16,16,16,16,16,16,254, + 7,15,15,11,2,0,8,16,32,0,254,16,16,16,16,16, + 16,16,16,16,254,7,15,15,11,2,0,24,36,66,0,254, + 16,16,16,16,16,16,16,16,16,254,7,14,14,11,2,0, + 36,36,0,254,16,16,16,16,16,16,16,16,16,254,8,11, + 11,11,1,0,252,66,65,65,65,241,65,65,65,66,252,9, + 14,28,11,1,0,25,0,38,0,0,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,15,30,11,1,0,16,0,8,0,4,0,0,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,9,15,30,11,1,0,4,0,8,0,16, + 0,0,0,28,0,99,0,65,0,128,128,128,128,128,128,128, + 128,128,128,65,0,99,0,28,0,9,15,30,11,1,0,12, + 0,18,0,33,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,14,28, + 11,1,0,25,0,38,0,0,0,28,0,99,0,65,0,128, + 128,128,128,128,128,128,128,128,128,65,0,99,0,28,0,9, + 14,28,11,1,0,18,0,18,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,9,18,11,1,1,128,128,65,0,34,0,20,0,8, + 0,20,0,34,0,65,0,128,128,11,11,22,11,0,0,14, + 32,49,192,32,128,65,64,66,64,68,64,72,64,80,64,32, + 128,113,128,142,0,10,15,30,11,0,0,16,0,8,0,4, + 0,0,0,243,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,10,15,30,11,0,0,2, + 0,4,0,8,0,0,0,243,192,64,128,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,33,0,30,0,10,15,30, + 11,0,0,12,0,18,0,33,0,0,0,243,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,33,0,30, + 0,10,14,28,11,0,0,18,0,18,0,0,0,243,192,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,9,15,30,11,1,0,2,0,4,0,8,0,0, + 0,227,128,65,0,34,0,34,0,20,0,20,0,8,0,8, + 0,8,0,8,0,62,0,9,11,22,11,1,0,224,0,64, + 0,126,0,65,0,64,128,64,128,65,0,126,0,64,0,64, + 0,224,0,8,11,11,11,1,0,60,66,66,68,88,70,65, + 65,65,73,230,9,12,24,11,1,0,32,0,16,0,8,0, + 0,0,60,0,66,0,2,0,126,0,130,0,130,0,134,0, + 123,128,9,12,24,11,1,0,4,0,8,0,16,0,0,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,24,0,36,0,66,0,0,0,60,0, + 66,0,2,0,126,0,130,0,130,0,134,0,123,128,9,11, + 22,11,1,0,50,0,76,0,0,0,60,0,66,0,2,0, + 126,0,130,0,130,0,134,0,123,128,9,11,22,11,1,0, + 36,0,36,0,0,0,60,0,66,0,2,0,126,0,130,0, + 130,0,134,0,123,128,9,13,26,11,1,0,24,0,36,0, + 36,0,24,0,0,0,60,0,66,0,2,0,126,0,130,0, + 130,0,134,0,123,128,11,8,16,11,0,0,113,128,138,64, + 4,32,127,224,132,0,132,0,138,32,113,192,8,11,11,11, + 1,253,61,67,129,128,128,128,67,60,16,8,48,8,12,12, + 11,1,0,32,16,8,0,60,66,129,255,128,128,67,60,8, + 12,12,11,1,0,2,4,8,0,60,66,129,255,128,128,67, + 60,8,12,12,11,1,0,24,36,66,0,60,66,129,255,128, + 128,67,60,8,11,11,11,1,0,36,36,0,60,66,129,255, + 128,128,67,60,7,12,12,11,2,0,32,16,8,0,112,16, + 16,16,16,16,16,254,7,12,12,11,2,0,8,16,32,0, + 112,16,16,16,16,16,16,254,7,12,12,11,2,0,48,72, + 132,0,112,16,16,16,16,16,16,254,7,11,11,11,2,0, + 72,72,0,112,16,16,16,16,16,16,254,8,12,12,11,1, + 0,114,140,52,66,62,67,129,129,129,129,66,60,9,11,22, + 11,1,0,50,0,76,0,0,0,222,0,97,0,65,0,65, + 0,65,0,65,0,65,0,227,128,8,12,12,11,1,0,32, + 16,8,0,60,66,129,129,129,129,66,60,8,12,12,11,1, + 0,4,8,16,0,60,66,129,129,129,129,66,60,8,12,12, + 11,1,0,24,36,66,0,60,66,129,129,129,129,66,60,8, + 11,11,11,1,0,50,76,0,60,66,129,129,129,129,66,60, + 8,11,11,11,1,0,36,36,0,60,66,129,129,129,129,66, + 60,8,9,9,11,1,1,24,24,0,0,255,0,0,24,24, + 8,8,8,11,1,0,61,66,133,137,145,161,66,188,9,12, + 24,11,1,0,32,0,16,0,8,0,0,0,195,0,65,0, + 65,0,65,0,65,0,65,0,67,0,61,128,9,12,24,11, + 1,0,2,0,4,0,8,0,0,0,195,0,65,0,65,0, + 65,0,65,0,65,0,67,0,61,128,9,12,24,11,1,0, + 24,0,36,0,66,0,0,0,195,0,65,0,65,0,65,0, + 65,0,65,0,67,0,61,128,9,11,22,11,1,0,36,0, + 36,0,0,0,195,0,65,0,65,0,65,0,65,0,65,0, + 67,0,61,128,9,16,32,11,1,252,2,0,4,0,8,0, + 0,0,227,128,65,0,65,0,34,0,34,0,20,0,20,0, + 8,0,8,0,16,0,16,0,248,0,9,16,32,11,1,252, + 192,0,64,0,64,0,64,0,94,0,97,0,64,128,64,128, + 64,128,64,128,97,0,94,0,64,0,64,0,64,0,240,0, + 9,15,30,11,1,252,36,0,36,0,0,0,227,128,65,0, + 65,0,34,0,34,0,20,0,20,0,8,0,8,0,16,0, + 16,0,248,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=11 h=16 x= 5 y= 9 dx=11 dy= 0 ascent=13 len=26 + Font Bounding box w=16 h=26 x=-3 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR14r[1988] U8G_SECTION(".progmem.u8g_font_courR14r") = { + 0,16,26,253,249,11,2,74,5,74,32,127,252,13,252,12, + 252,0,0,0,11,0,1,2,12,12,11,4,0,192,192,192, + 192,192,192,64,64,0,0,192,192,6,5,5,11,3,7,204, + 204,204,68,68,8,15,15,11,1,254,18,18,18,18,18,127, + 36,36,36,254,36,36,36,36,36,6,15,15,11,2,254,16, + 16,116,140,132,128,96,24,4,132,196,184,16,16,16,9,12, + 24,11,1,0,56,0,68,0,68,0,68,0,57,128,14,0, + 48,0,206,0,17,0,17,0,17,0,14,0,7,10,10,11, + 2,0,56,64,64,64,32,116,136,136,152,102,2,5,5,11, + 4,7,192,192,192,64,64,3,14,14,11,5,254,32,64,64, + 128,128,128,128,128,128,128,128,64,64,32,3,14,14,11,3, + 254,128,64,64,32,32,32,32,32,32,32,32,64,64,128,7, + 8,8,11,2,4,16,16,16,254,16,40,68,68,9,9,18, + 11,1,1,8,0,8,0,8,0,8,0,255,128,8,0,8, + 0,8,0,8,0,4,5,5,11,3,253,48,48,96,64,128, + 8,1,1,11,1,5,255,2,2,2,11,4,0,192,192,8, + 16,16,11,1,253,1,1,2,2,4,4,8,8,16,16,32, + 32,64,64,128,128,7,12,12,11,2,0,56,68,130,130,130, + 130,130,130,130,130,68,56,7,12,12,11,2,0,48,208,16, + 16,16,16,16,16,16,16,16,254,8,12,12,11,1,0,28, + 34,65,65,1,2,4,8,16,33,65,255,7,12,12,11,2, + 0,120,132,2,2,4,56,4,2,2,2,132,120,7,12,12, + 11,2,0,12,20,20,36,36,68,68,132,254,4,4,30,8, + 12,12,11,1,0,126,64,64,64,92,98,1,1,1,1,194, + 60,7,12,12,11,2,0,28,96,64,128,128,184,196,130,130, + 130,68,56,7,12,12,11,2,0,254,130,2,2,4,4,4, + 4,8,8,8,8,7,12,12,11,2,0,56,68,130,130,68, + 56,68,130,130,130,68,56,7,12,12,11,2,0,56,68,130, + 130,130,70,58,2,2,4,12,112,2,8,8,11,4,0,192, + 192,0,0,0,0,192,192,4,11,11,11,2,253,48,48,0, + 0,0,0,48,48,96,64,128,10,9,18,11,0,1,0,192, + 3,0,12,0,48,0,192,0,48,0,12,0,3,0,0,192, + 9,4,8,11,1,3,255,128,0,0,0,0,255,128,10,9, + 18,11,0,1,192,0,48,0,12,0,3,0,0,192,3,0, + 12,0,48,0,192,0,7,11,11,11,2,0,124,130,130,2, + 2,28,16,16,0,24,24,8,13,13,11,2,255,56,68,130, + 130,142,146,146,146,143,128,128,67,60,11,11,22,11,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,9,11,22,11,1,0,252,0,66,0, + 65,0,65,0,66,0,126,0,65,0,64,128,64,128,65,0, + 254,0,9,11,22,11,1,0,30,128,97,128,64,128,128,0, + 128,0,128,0,128,0,128,0,64,128,97,0,30,0,9,11, + 22,11,1,0,252,0,67,0,65,0,64,128,64,128,64,128, + 64,128,64,128,65,0,67,0,252,0,8,11,11,11,1,0, + 255,65,65,65,72,120,72,65,65,65,255,8,11,11,11,1, + 0,255,65,65,65,72,120,72,64,64,64,240,10,11,22,11, + 1,0,30,128,97,128,64,128,128,0,128,0,128,0,131,192, + 128,128,64,128,97,0,30,0,9,11,22,11,1,0,227,128, + 65,0,65,0,65,0,65,0,127,0,65,0,65,0,65,0, + 65,0,227,128,7,11,11,11,2,0,254,16,16,16,16,16, + 16,16,16,16,254,9,11,22,11,1,0,31,128,2,0,2, + 0,2,0,2,0,2,0,130,0,130,0,130,0,68,0,56, + 0,10,11,22,11,1,0,243,192,65,0,66,0,68,0,72, + 0,88,0,100,0,66,0,66,0,65,0,241,192,9,11,22, + 11,1,0,248,0,32,0,32,0,32,0,32,0,32,0,32, + 0,32,128,32,128,32,128,255,128,11,11,22,11,0,0,224, + 224,96,192,81,64,81,64,74,64,74,64,68,64,68,64,64, + 64,64,64,241,224,9,11,22,11,1,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,11,22,11,1,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,11,22, + 11,1,0,254,0,65,0,64,128,64,128,65,0,126,0,64, + 0,64,0,64,0,64,0,248,0,9,13,26,11,1,254,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,56,128,71,0,10,11,22,11,1,0,254, + 0,65,0,64,128,64,128,65,0,126,0,68,0,66,0,66, + 0,65,0,240,192,8,11,11,11,1,0,61,67,129,128,64, + 60,2,1,129,194,188,9,11,22,11,1,0,255,128,136,128, + 136,128,136,128,8,0,8,0,8,0,8,0,8,0,8,0, + 62,0,10,11,22,11,0,0,243,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,11,11, + 22,11,0,0,241,224,64,64,64,64,32,128,32,128,17,0, + 17,0,10,0,10,0,4,0,4,0,11,11,22,11,0,0, + 241,224,64,64,68,64,68,64,68,64,42,128,42,128,42,128, + 42,128,17,0,17,0,9,11,22,11,1,0,227,128,65,0, + 34,0,34,0,20,0,8,0,20,0,34,0,34,0,65,0, + 227,128,9,11,22,11,1,0,227,128,65,0,34,0,34,0, + 20,0,20,0,8,0,8,0,8,0,8,0,62,0,7,11, + 11,11,2,0,254,130,130,4,8,16,32,64,130,130,254,3, + 15,15,11,5,253,224,128,128,128,128,128,128,128,128,128,128, + 128,128,128,224,8,16,16,11,2,253,128,128,64,64,32,32, + 16,16,8,8,4,4,2,2,1,1,3,15,15,11,3,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,32,224,7, + 4,4,11,2,8,16,40,68,130,11,1,2,11,0,252,255, + 224,3,3,3,11,4,9,128,64,32,9,8,16,11,1,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,192,0,64,0,64,0,64,0,94,0, + 97,0,64,128,64,128,64,128,64,128,97,0,222,0,8,8, + 8,11,1,0,61,67,129,128,128,128,67,60,9,12,24,11, + 1,0,3,0,1,0,1,0,1,0,61,0,67,0,129,0, + 129,0,129,0,129,0,67,0,61,128,8,8,8,11,1,0, + 60,66,129,255,128,128,67,60,8,12,12,11,2,0,15,16, + 32,32,254,32,32,32,32,32,32,254,9,12,24,11,1,252, + 61,128,67,0,129,0,129,0,129,0,129,0,67,0,61,0, + 1,0,1,0,2,0,124,0,9,12,24,11,1,0,192,0, + 64,0,64,0,64,0,94,0,97,0,65,0,65,0,65,0, + 65,0,65,0,227,128,7,11,11,11,2,0,16,16,0,112, + 16,16,16,16,16,16,254,6,15,15,11,2,252,8,8,0, + 252,4,4,4,4,4,4,4,4,4,8,240,9,12,24,11, + 1,0,192,0,64,0,64,0,64,0,79,0,68,0,72,0, + 112,0,72,0,68,0,66,0,199,128,7,12,12,11,2,0, + 240,16,16,16,16,16,16,16,16,16,16,254,11,8,16,11, + 0,0,217,128,102,64,68,64,68,64,68,64,68,64,68,64, + 230,96,9,8,16,11,1,0,222,0,97,0,65,0,65,0, + 65,0,65,0,65,0,227,128,8,8,8,11,1,0,60,66, + 129,129,129,129,66,60,9,12,24,11,1,252,222,0,97,0, + 64,128,64,128,64,128,64,128,97,0,94,0,64,0,64,0, + 64,0,240,0,9,12,24,11,1,252,61,128,67,0,129,0, + 129,0,129,0,129,0,67,0,61,0,1,0,1,0,1,0, + 7,128,8,8,8,11,1,0,238,49,32,32,32,32,32,254, + 7,8,8,11,2,0,122,134,130,112,12,130,194,188,8,11, + 11,11,2,0,32,32,32,254,32,32,32,32,32,33,30,9, + 8,16,11,1,0,195,0,65,0,65,0,65,0,65,0,65, + 0,67,0,61,128,9,8,16,11,1,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,9,8,16,11,1, + 0,227,128,65,0,73,0,73,0,85,0,85,0,34,0,34, + 0,8,8,8,11,1,0,231,66,36,24,24,36,66,231,9, + 12,24,11,1,252,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,16,0,248,0,7,8,8, + 11,2,0,254,130,132,8,16,34,66,254,5,15,15,11,3, + 253,24,32,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,15,15,11,5,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,15,15,11,3,253,192,32,32,32,32, + 32,32,24,32,32,32,32,32,32,192,8,3,3,11,1,4, + 96,153,6,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 15 + Calculated Max Values w=15 h=21 x= 7 y=12 dx=15 dy= 0 ascent=19 len=42 + Font Bounding box w=23 h=32 x=-5 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR18[6152] U8G_SECTION(".progmem.u8g_font_courR18") = { + 0,23,32,251,248,14,3,161,7,151,32,255,251,19,251,16, + 251,0,0,0,15,0,1,2,16,16,15,6,0,192,192,192, + 192,192,192,192,192,128,128,128,0,0,0,192,192,8,7,7, + 15,3,9,231,231,231,231,66,66,66,10,17,34,15,2,255, + 9,0,9,0,9,0,9,0,9,0,9,0,127,192,18,0, + 18,0,18,0,255,128,18,0,18,0,18,0,18,0,18,0, + 18,0,9,20,40,15,3,253,8,0,8,0,8,0,30,128, + 33,128,64,128,64,0,64,0,32,0,30,0,1,0,0,128, + 0,128,128,128,193,0,190,0,8,0,8,0,8,0,8,0, + 12,16,32,15,1,0,28,0,34,0,65,0,65,0,65,0, + 34,0,28,112,3,128,28,0,225,192,2,32,4,16,4,16, + 4,16,2,32,1,192,10,13,26,15,2,0,29,0,38,0, + 32,0,32,0,16,0,48,0,73,128,137,0,134,0,130,0, + 131,0,69,0,56,192,3,7,7,15,6,8,224,224,224,224, + 224,64,64,4,19,19,15,7,253,16,32,32,64,64,64,128, + 128,128,128,128,128,128,64,64,64,32,32,16,4,19,19,15, + 3,253,128,64,64,32,32,32,16,16,16,16,16,16,16,32, + 32,32,64,64,128,9,9,18,15,3,7,8,0,8,0,8, + 0,201,128,127,0,28,0,54,0,99,0,193,128,11,11,22, + 15,2,2,4,0,4,0,4,0,4,0,4,0,255,224,4, + 0,4,0,4,0,4,0,4,0,5,6,6,15,4,253,56, + 56,112,96,192,128,10,1,2,15,2,7,255,192,3,3,3, + 15,6,0,224,224,224,9,18,36,15,3,254,0,128,0,128, + 1,0,1,0,2,0,2,0,4,0,4,0,8,0,8,0, + 16,0,16,0,32,0,32,0,64,0,64,0,128,0,128,0, + 9,15,30,15,3,0,28,0,99,0,65,0,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 99,0,28,0,9,15,30,15,3,0,24,0,232,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,10,15,30,15,2,0,30,0, + 97,0,128,128,128,128,0,128,0,128,1,0,2,0,4,0, + 8,0,16,0,32,0,64,0,128,64,255,192,10,15,30,15, + 2,0,62,0,65,128,0,128,0,128,0,128,1,0,30,0, + 1,128,0,64,0,64,0,64,0,64,128,64,97,128,30,0, + 10,15,30,15,2,0,3,0,5,0,9,0,9,0,17,0, + 33,0,33,0,65,0,65,0,129,0,255,192,1,0,1,0, + 1,0,15,192,10,15,30,15,2,0,127,128,64,0,64,0, + 64,0,64,0,94,0,97,128,0,128,0,64,0,64,0,64, + 0,64,0,128,193,128,62,0,9,15,30,15,3,0,15,0, + 48,0,96,0,64,0,128,0,158,0,161,0,192,128,128,128, + 128,128,128,128,128,128,64,128,97,0,30,0,9,15,30,15, + 2,0,255,128,128,128,129,0,1,0,1,0,2,0,2,0, + 2,0,2,0,4,0,4,0,4,0,8,0,8,0,8,0, + 10,15,30,15,2,0,30,0,33,0,64,128,64,128,64,128, + 64,128,33,0,63,0,64,128,128,64,128,64,128,64,64,128, + 97,128,30,0,9,15,30,15,3,0,28,0,99,0,193,128, + 128,128,128,128,128,128,65,128,98,128,28,128,0,128,0,128, + 1,0,1,0,6,0,248,0,3,11,11,15,6,0,224,224, + 224,0,0,0,0,0,224,224,224,5,14,14,15,4,253,56, + 56,56,0,0,0,0,0,56,56,112,96,192,128,11,11,22, + 15,1,2,0,96,1,128,6,0,24,0,96,0,192,0,96, + 0,24,0,6,0,1,128,0,96,12,4,8,15,1,5,255, + 240,0,0,0,0,255,240,11,11,22,15,2,2,192,0,48, + 0,12,0,3,0,0,192,0,96,0,192,3,0,12,0,48, + 0,192,0,8,14,14,15,3,0,124,130,129,1,1,1,2, + 12,16,16,0,0,24,24,10,18,36,15,2,254,30,0,97, + 0,64,128,128,128,128,128,131,128,132,128,136,128,136,128,136, + 128,136,128,132,128,131,192,128,0,128,0,64,0,97,128,31, + 0,13,14,28,15,1,0,63,0,5,0,8,128,8,128,8, + 128,16,64,16,64,16,64,63,224,32,32,32,32,64,16,64, + 16,240,120,12,14,28,15,1,0,255,192,32,32,32,16,32, + 16,32,16,32,32,63,192,32,32,32,16,32,16,32,16,32, + 16,32,32,255,192,11,14,28,15,2,0,15,32,48,160,96, + 96,64,32,128,0,128,0,128,0,128,0,128,0,128,0,64, + 32,96,96,48,192,15,0,12,14,28,15,1,0,255,128,64, + 96,64,32,64,16,64,16,64,16,64,16,64,16,64,16,64, + 16,64,16,64,32,64,96,255,128,12,14,28,15,1,0,255, + 224,32,32,32,32,32,32,34,0,34,0,62,0,34,0,34, + 0,32,16,32,16,32,16,32,16,255,240,11,14,28,15,2, + 0,255,224,32,32,32,32,32,32,34,0,34,0,62,0,34, + 0,34,0,32,0,32,0,32,0,32,0,254,0,12,14,28, + 15,1,0,15,32,48,160,96,96,64,32,128,0,128,0,128, + 0,128,0,131,240,128,32,64,32,96,32,48,64,15,128,13, + 14,28,15,1,0,248,248,32,32,32,32,32,32,32,32,32, + 32,63,224,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,14,28,15,3,0,255,128,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,255,128,12,14,28,15,2,0,31,240,0,128,0,128,0, + 128,0,128,0,128,0,128,0,128,128,128,128,128,128,128,129, + 0,67,0,60,0,13,14,28,15,1,0,248,240,32,64,32, + 128,33,0,34,0,36,0,44,0,50,0,33,0,32,128,32, + 64,32,64,32,32,248,120,12,14,28,15,1,0,254,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16, + 16,16,16,16,16,16,16,255,240,13,14,28,15,1,0,224, + 56,96,48,96,48,80,80,80,80,72,144,72,144,69,16,71, + 16,64,16,64,16,64,16,64,16,240,120,14,14,28,15,0, + 0,240,252,48,16,40,16,36,16,36,16,34,16,34,16,33, + 16,33,16,32,144,32,144,32,80,32,48,252,48,13,14,28, + 15,1,0,15,128,48,96,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,128,8,64,16,96,48,48,96,15,128,11, + 14,28,15,2,0,255,128,32,64,32,32,32,32,32,32,32, + 32,32,64,63,128,32,0,32,0,32,0,32,0,32,0,254, + 0,13,16,32,15,1,254,15,128,48,96,96,48,64,16,128, + 8,128,8,128,8,128,8,128,8,128,8,64,16,96,48,48, + 96,15,128,6,48,27,192,13,14,28,15,1,0,255,128,32, + 64,32,32,32,32,32,32,32,32,32,64,63,128,33,0,32, + 128,32,64,32,64,32,32,248,56,10,14,28,15,2,0,30, + 64,97,64,128,192,128,64,128,0,96,0,30,0,1,128,0, + 64,0,64,128,64,192,64,160,128,159,0,11,14,28,15,2, + 0,255,224,132,32,132,32,132,32,132,32,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,63,128,12,14,28, + 15,1,0,249,240,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,32,64,32,64,32,32,64,31,128,13, + 14,28,15,1,0,248,248,64,16,64,16,32,32,32,32,16, + 64,16,64,16,64,8,128,8,128,8,128,5,0,7,0,2, + 0,13,14,28,15,1,0,248,248,64,16,64,16,66,16,66, + 16,69,16,69,16,37,32,40,160,40,160,40,160,48,96,48, + 96,48,96,13,14,28,15,1,0,248,248,32,32,16,64,16, + 64,8,128,5,0,2,0,5,0,8,128,8,128,16,64,32, + 32,32,32,248,248,13,14,28,15,1,0,240,120,32,32,16, + 64,16,64,8,128,8,128,5,0,2,0,2,0,2,0,2, + 0,2,0,2,0,31,192,10,14,28,15,2,0,255,192,128, + 64,128,128,129,0,130,0,2,0,4,0,8,0,16,0,16, + 64,32,64,64,64,128,64,255,192,3,19,19,15,7,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,224,9,18,36,15,3,254,128,0,128,0,64,0,64,0, + 32,0,32,0,16,0,16,0,8,0,8,0,4,0,4,0, + 2,0,2,0,1,0,1,0,0,128,0,128,3,19,19,15, + 5,253,224,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,9,5,10,15,3,11,8,0,28,0,34, + 0,65,0,128,128,15,1,2,15,0,251,255,254,5,4,4, + 15,4,12,192,96,48,24,11,11,22,15,2,0,62,0,65, + 0,0,128,0,128,62,128,65,128,128,128,128,128,128,128,65, + 128,62,224,13,15,30,15,1,0,224,0,32,0,32,0,32, + 0,39,192,40,48,48,16,32,8,32,8,32,8,32,8,32, + 8,48,16,40,48,231,192,11,11,22,15,2,0,31,64,96, + 192,64,64,128,64,128,0,128,0,128,0,128,0,64,96,96, + 192,31,0,13,15,30,15,1,0,0,224,0,32,0,32,0, + 32,31,32,96,160,64,96,128,32,128,32,128,32,128,32,128, + 32,64,96,96,160,31,56,11,11,22,15,2,0,31,0,96, + 192,64,64,128,32,128,32,255,224,128,0,128,0,64,0,96, + 96,31,128,10,15,30,15,3,0,15,128,24,64,16,0,16, + 0,255,128,16,0,16,0,16,0,16,0,16,0,16,0,16, + 0,16,0,16,0,255,128,13,16,32,15,1,251,31,56,96, + 160,64,96,128,32,128,32,128,32,128,32,128,32,64,96,96, + 160,31,32,0,32,0,32,0,64,0,192,63,0,13,15,30, + 15,1,0,224,0,32,0,32,0,32,0,39,128,40,64,48, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,16,32,15,3,0,8,0,8,0,8,0,0,0,0, + 0,120,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,128,8,21,21,15,3,251,2,2,2, + 0,0,255,1,1,1,1,1,1,1,1,1,1,1,1,2, + 6,248,11,15,30,15,2,0,224,0,32,0,32,0,32,0, + 35,192,33,0,34,0,36,0,40,0,56,0,36,0,34,0, + 33,0,32,128,225,224,11,15,30,15,2,0,124,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,14,11,22,15,0,0, + 238,112,49,136,33,8,33,8,33,8,33,8,33,8,33,8, + 33,8,33,8,249,140,13,11,22,15,1,0,231,128,40,64, + 48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 248,248,11,11,22,15,2,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,13,16, + 32,15,1,251,231,192,40,48,48,16,32,8,32,8,32,8, + 32,8,32,8,48,16,40,48,39,192,32,0,32,0,32,0, + 32,0,252,0,13,16,32,15,1,251,31,56,96,160,64,96, + 128,32,128,32,128,32,128,32,128,32,64,96,96,160,31,32, + 0,32,0,32,0,32,0,32,1,248,11,11,22,15,2,0, + 113,192,22,32,24,0,16,0,16,0,16,0,16,0,16,0, + 16,0,16,0,255,128,9,11,22,15,3,0,62,128,65,128, + 64,128,64,0,56,0,7,0,0,128,0,128,128,128,193,0, + 190,0,10,15,30,15,2,0,32,0,32,0,32,0,32,0, + 255,128,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,16,192,15,0,12,11,22,15,1,0,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,16,160, + 15,48,13,11,22,15,1,0,248,248,32,32,32,32,16,64, + 16,64,16,64,8,128,8,128,5,0,7,0,2,0,13,11, + 22,15,1,0,240,120,64,16,64,16,66,16,34,32,37,32, + 37,32,37,32,21,64,24,192,24,192,11,11,22,15,2,0, + 241,224,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,241,224,12,16,32,15,1,251,240,240,64,32, + 64,32,32,64,32,64,32,128,16,128,17,0,9,0,10,0, + 6,0,4,0,4,0,8,0,8,0,254,0,9,11,22,15, + 3,0,255,128,128,128,129,0,2,0,4,0,8,0,16,0, + 32,0,64,128,128,128,255,128,5,19,19,15,5,253,24,32, + 32,32,32,32,32,32,32,192,32,32,32,32,32,32,32,32, + 24,1,17,17,15,7,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,5,19,19,15,5,253,192,32, + 32,32,32,32,32,32,32,24,32,32,32,32,32,32,32,32, + 192,12,3,6,15,1,6,60,48,102,96,195,192,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,15,0,1,2,16,16,15,6,251,192,192,0,0,0,128, + 128,128,192,192,192,192,192,192,192,192,8,16,16,15,3,0, + 8,8,8,8,29,99,65,128,128,128,64,99,28,8,8,8, + 10,14,28,15,2,0,14,0,17,128,32,0,32,0,32,0, + 32,0,254,0,16,0,16,0,16,0,16,0,32,64,64,64, + 255,128,10,10,20,15,2,2,128,64,94,128,33,0,64,128, + 64,128,64,128,64,128,33,0,94,128,128,64,11,14,28,15, + 2,0,241,224,64,64,32,128,32,128,17,0,17,0,10,0, + 127,192,4,0,4,0,127,192,4,0,4,0,63,128,1,19, + 19,15,7,253,128,128,128,128,128,128,128,128,0,0,0,128, + 128,128,128,128,128,128,128,10,18,36,15,2,254,15,192,16, + 64,32,64,32,64,32,0,112,0,140,0,130,0,65,0,32, + 128,16,64,12,64,3,128,1,0,129,0,129,0,130,0,252, + 0,7,2,2,15,4,12,198,198,13,13,26,15,1,1,15, + 128,48,96,64,16,70,144,137,136,144,136,144,8,144,8,136, + 136,71,16,64,16,48,96,15,128,7,9,9,15,4,5,120, + 132,60,68,132,140,118,0,254,12,11,22,15,1,0,6,48, + 12,96,24,192,49,128,99,0,198,0,99,0,49,128,24,192, + 12,96,6,48,11,4,8,15,2,5,255,224,0,32,0,32, + 0,32,10,1,2,15,2,7,255,192,13,13,26,15,1,1, + 15,128,48,96,64,16,79,16,136,136,136,136,143,8,137,8, + 136,136,72,144,64,16,48,96,15,128,7,1,1,15,4,12, + 254,7,7,7,15,4,9,56,68,130,130,130,68,56,11,13, + 26,15,2,1,4,0,4,0,4,0,4,0,4,0,255,224, + 4,0,4,0,4,0,4,0,4,0,0,0,255,224,6,9, + 9,15,4,7,56,68,132,4,8,16,32,68,252,6,9,9, + 15,4,7,120,132,4,8,56,4,4,132,120,5,4,4,15, + 5,12,24,48,96,192,12,16,32,15,1,251,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,48,160, + 47,48,32,0,32,0,32,0,32,0,32,0,11,18,36,15, + 2,254,31,224,100,128,196,128,196,128,196,128,196,128,196,128, + 100,128,28,128,4,128,4,128,4,128,4,128,4,128,4,128, + 4,128,4,128,60,224,3,3,3,15,6,6,224,224,224,4, + 5,5,15,5,252,32,32,16,144,96,7,9,9,15,4,7, + 48,208,16,16,16,16,16,16,254,7,9,9,15,4,5,56, + 68,130,130,130,68,56,0,254,12,11,22,15,1,0,198,0, + 99,0,49,128,24,192,12,96,6,48,12,96,24,192,49,128, + 99,0,198,0,14,16,32,15,0,0,48,0,208,0,16,8, + 16,16,16,32,16,32,16,64,16,152,255,40,2,72,4,72, + 4,136,9,8,17,252,0,8,0,28,14,16,32,15,0,0, + 48,0,208,0,16,8,16,16,16,32,16,32,16,64,16,184, + 255,68,2,132,4,4,4,8,8,16,16,32,0,68,0,252, + 14,16,32,15,0,0,120,0,132,0,4,8,8,16,56,32, + 4,32,4,64,132,152,121,40,2,72,4,72,4,136,9,8, + 17,252,0,8,0,28,8,14,14,15,3,253,24,24,0,0, + 8,8,48,64,128,128,128,129,65,62,13,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,63,0,5,0,8,128, + 8,128,8,128,16,64,16,64,16,64,63,224,32,32,32,32, + 64,16,64,16,240,120,13,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,63,0,5,0,8,128,8,128,8,128, + 16,64,16,64,16,64,63,224,32,32,32,32,64,16,64,16, + 240,120,13,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,63,0,5,0,8,128,8,128,8,128,16,64,16,64, + 16,64,63,224,32,32,32,32,64,16,64,16,240,120,13,18, + 36,15,1,0,28,64,54,192,35,128,0,0,63,0,5,0, + 8,128,8,128,8,128,16,64,16,64,16,64,63,224,32,32, + 32,32,64,16,64,16,240,120,13,18,36,15,1,0,24,192, + 24,192,0,0,0,0,63,0,5,0,8,128,8,128,8,128, + 16,64,16,64,16,64,63,224,32,32,32,32,64,16,64,16, + 240,120,13,19,38,15,1,0,7,0,8,128,8,128,8,128, + 7,0,63,0,5,0,8,128,8,128,8,128,16,64,16,64, + 16,64,63,224,32,32,32,32,64,16,64,16,240,120,15,14, + 28,15,255,0,15,254,2,130,4,130,4,130,4,136,8,136, + 8,248,8,136,31,136,16,130,16,130,32,130,32,130,243,254, + 11,18,36,15,2,252,15,32,48,224,96,96,64,32,128,0, + 128,0,128,0,128,0,128,0,128,0,64,32,96,96,48,192, + 15,0,4,0,2,0,18,0,12,0,12,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,255,224,32,32,32,32, + 32,32,34,0,34,0,62,0,34,0,34,0,32,16,32,16, + 32,16,32,16,255,240,12,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,255,224,32,32,32,32,32,32,34,0, + 34,0,62,0,34,0,34,0,32,16,32,16,32,16,32,16, + 255,240,12,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,255,224,32,32,32,32,32,32,34,0,34,0,62,0, + 34,0,34,0,32,16,32,16,32,16,32,16,255,240,12,18, + 36,15,1,0,25,128,25,128,0,0,0,0,255,224,32,32, + 32,32,32,32,34,0,34,0,62,0,34,0,34,0,32,16, + 32,16,32,16,32,16,255,240,9,19,38,15,3,0,96,0, + 48,0,24,0,12,0,0,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,255,128,9,19,38,15,3,0,3,0,6,0,12,0, + 24,0,0,0,255,128,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,255,128, + 9,19,38,15,3,0,24,0,60,0,102,0,195,0,0,0, + 255,128,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,255,128,9,18,36,15, + 3,0,99,0,99,0,0,0,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,13,14,28,15,0,0,127,192,32,48, + 32,16,32,8,32,8,32,8,252,8,32,8,32,8,32,8, + 32,8,32,16,32,48,127,192,14,18,36,15,0,0,14,32, + 27,96,17,192,0,0,240,252,48,16,40,16,36,16,36,16, + 34,16,34,16,33,16,33,16,32,144,32,144,32,80,32,48, + 252,48,13,19,38,15,1,0,24,0,12,0,6,0,3,0, + 0,0,15,128,48,96,96,48,64,16,128,8,128,8,128,8, + 128,8,128,8,128,8,64,16,96,48,48,96,15,128,13,19, + 38,15,1,0,0,96,0,192,1,128,3,0,0,0,15,128, + 48,96,96,48,64,16,128,8,128,8,128,8,128,8,128,8, + 128,8,64,16,96,48,48,96,15,128,13,19,38,15,1,0, + 3,0,7,128,12,192,24,96,0,0,15,128,48,96,96,48, + 64,16,128,8,128,8,128,8,128,8,128,8,128,8,64,16, + 96,48,48,96,15,128,13,18,36,15,1,0,14,32,27,96, + 17,192,0,0,15,128,48,96,96,48,64,16,128,8,128,8, + 128,8,128,8,128,8,128,8,64,16,96,48,48,96,15,128, + 13,18,36,15,1,0,24,192,24,192,0,0,0,0,15,128, + 48,96,96,48,64,16,128,8,128,8,128,8,128,8,128,8, + 128,8,64,16,96,48,48,96,15,128,11,11,22,15,2,2, + 128,32,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,128,32,14,15,30,15,0,0,0,4,7,200, + 24,48,48,48,32,72,64,136,64,136,65,8,66,8,68,8, + 72,8,48,16,48,48,88,96,135,128,12,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,249,240,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,32,64,31,128,12,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,249,240,64,32,64,32,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,32,64, + 31,128,12,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,249,240,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,32,64,31,128,12,18, + 36,15,1,0,25,128,25,128,0,0,0,0,249,240,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,32,32,64,31,128,13,19,38,15,1,0,0,192, + 1,128,3,0,6,0,0,0,240,120,32,32,16,64,16,64, + 8,128,8,128,5,0,2,0,2,0,2,0,2,0,2,0, + 2,0,31,192,11,14,28,15,2,0,248,0,32,0,32,0, + 63,128,32,64,32,32,32,32,32,32,32,32,32,64,63,128, + 32,0,32,0,248,0,11,16,32,15,2,0,14,0,17,0, + 32,128,32,128,32,128,32,128,33,0,39,0,32,192,32,64, + 32,32,32,32,32,32,36,32,36,64,243,128,11,16,32,15, + 2,0,48,0,24,0,12,0,6,0,0,0,30,0,97,0, + 0,128,0,128,0,128,63,128,64,128,128,128,128,128,129,128, + 126,224,11,16,32,15,2,0,1,128,3,0,6,0,12,0, + 0,0,30,0,97,0,0,128,0,128,0,128,63,128,64,128, + 128,128,128,128,129,128,126,224,11,16,32,15,2,0,12,0, + 30,0,51,0,97,128,0,0,30,0,97,0,0,128,0,128, + 0,128,63,128,64,128,128,128,128,128,129,128,126,224,11,15, + 30,15,2,0,56,128,109,128,71,0,0,0,30,0,97,0, + 0,128,0,128,0,128,63,128,64,128,128,128,128,128,129,128, + 126,224,11,15,30,15,2,0,49,128,49,128,0,0,0,0, + 30,0,97,0,0,128,0,128,0,128,63,128,64,128,128,128, + 128,128,129,128,126,224,11,17,34,15,2,0,14,0,17,0, + 17,0,17,0,14,0,0,0,30,0,97,0,0,128,0,128, + 0,128,63,128,64,128,128,128,128,128,129,128,126,224,15,11, + 22,15,0,0,28,112,98,140,65,4,1,2,1,2,63,254, + 65,0,129,0,129,2,130,132,124,120,11,15,30,15,2,252, + 31,64,96,192,64,64,128,64,128,0,128,0,128,0,128,0, + 64,96,96,192,31,0,4,0,2,0,18,0,12,0,11,16, + 32,15,2,0,48,0,24,0,12,0,6,0,0,0,31,0, + 96,192,64,64,128,32,128,32,255,224,128,0,128,0,64,0, + 96,96,31,128,11,16,32,15,2,0,1,128,3,0,6,0, + 12,0,0,0,31,0,96,192,64,64,128,32,128,32,255,224, + 128,0,128,0,64,0,96,96,31,128,11,16,32,15,2,0, + 12,0,30,0,51,0,97,128,0,0,31,0,96,192,64,64, + 128,32,128,32,255,224,128,0,128,0,64,0,96,96,31,128, + 11,15,30,15,2,0,49,128,49,128,0,0,0,0,31,0, + 96,192,64,64,128,32,128,32,255,224,128,0,128,0,64,0, + 96,96,31,128,9,16,32,15,3,0,96,0,48,0,24,0, + 12,0,0,0,120,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,255,128,9,16,32,15,3,0, + 3,0,6,0,12,0,24,0,0,0,120,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,255,128, + 9,16,32,15,3,0,24,0,60,0,102,0,195,0,0,0, + 120,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,9,15,30,15,3,0,99,0,99,0, + 0,0,0,0,120,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,255,128,12,16,32,15,1,0, + 124,192,135,0,13,0,48,128,0,64,15,224,48,96,32,48, + 64,16,64,16,64,16,64,16,64,16,32,32,48,96,15,128, + 13,15,30,15,1,0,28,64,54,192,35,128,0,0,231,128, + 40,64,48,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,248,248,11,16,32,15,2,0,24,0,12,0,6,0, + 3,0,0,0,31,0,96,192,64,64,128,32,128,32,128,32, + 128,32,128,32,64,64,96,192,31,0,11,16,32,15,2,0, + 1,128,3,0,6,0,12,0,0,0,31,0,96,192,64,64, + 128,32,128,32,128,32,128,32,128,32,64,64,96,192,31,0, + 11,16,32,15,2,0,12,0,30,0,51,0,97,128,0,0, + 31,0,96,192,64,64,128,32,128,32,128,32,128,32,128,32, + 64,64,96,192,31,0,11,15,30,15,2,0,28,64,54,192, + 35,128,0,0,31,0,96,192,64,64,128,32,128,32,128,32, + 128,32,128,32,64,64,96,192,31,0,11,15,30,15,2,0, + 49,128,49,128,0,0,0,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,11,9, + 18,15,2,3,14,0,14,0,0,0,0,0,255,224,0,0, + 0,0,14,0,14,0,12,12,24,15,1,0,0,16,15,160, + 48,64,32,160,65,16,66,16,68,16,72,16,80,16,32,32, + 80,96,143,128,12,16,32,15,1,0,24,0,12,0,6,0, + 3,0,0,0,224,224,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,96,16,160,15,48,12,16,32,15,1,0, + 0,192,1,128,3,0,6,0,0,0,224,224,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,96,16,160,15,48, + 12,16,32,15,1,0,6,0,15,0,25,128,48,192,0,0, + 224,224,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,96,16,160,15,48,12,15,30,15,1,0,25,128,25,128, + 0,0,0,0,224,224,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,96,16,160,15,48,12,21,42,15,1,251, + 0,192,1,128,3,0,6,0,0,0,240,240,64,32,64,32, + 32,64,32,64,32,128,16,128,17,0,9,0,10,0,6,0, + 4,0,4,0,8,0,8,0,254,0,13,21,42,15,1,251, + 224,0,32,0,32,0,32,0,32,0,39,192,56,48,48,16, + 32,8,32,8,32,8,32,8,32,8,48,16,56,48,39,192, + 32,0,32,0,32,0,32,0,252,0,12,20,40,15,1,251, + 25,128,25,128,0,0,0,0,240,240,64,32,64,32,32,64, + 32,64,32,128,16,128,17,0,9,0,10,0,6,0,4,0, + 4,0,8,0,8,0,254,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 15 + Calculated Max Values w=15 h=21 x= 7 y=12 dx=15 dy= 0 ascent=17 len=40 + Font Bounding box w=23 h=32 x=-5 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR18r[2862] U8G_SECTION(".progmem.u8g_font_courR18r") = { + 0,23,32,251,248,14,3,161,7,151,32,127,251,17,251,16, + 251,0,0,0,15,0,1,2,16,16,15,6,0,192,192,192, + 192,192,192,192,192,128,128,128,0,0,0,192,192,8,7,7, + 15,3,9,231,231,231,231,66,66,66,10,17,34,15,2,255, + 9,0,9,0,9,0,9,0,9,0,9,0,127,192,18,0, + 18,0,18,0,255,128,18,0,18,0,18,0,18,0,18,0, + 18,0,9,20,40,15,3,253,8,0,8,0,8,0,30,128, + 33,128,64,128,64,0,64,0,32,0,30,0,1,0,0,128, + 0,128,128,128,193,0,190,0,8,0,8,0,8,0,8,0, + 12,16,32,15,1,0,28,0,34,0,65,0,65,0,65,0, + 34,0,28,112,3,128,28,0,225,192,2,32,4,16,4,16, + 4,16,2,32,1,192,10,13,26,15,2,0,29,0,38,0, + 32,0,32,0,16,0,48,0,73,128,137,0,134,0,130,0, + 131,0,69,0,56,192,3,7,7,15,6,8,224,224,224,224, + 224,64,64,4,19,19,15,7,253,16,32,32,64,64,64,128, + 128,128,128,128,128,128,64,64,64,32,32,16,4,19,19,15, + 3,253,128,64,64,32,32,32,16,16,16,16,16,16,16,32, + 32,32,64,64,128,9,9,18,15,3,7,8,0,8,0,8, + 0,201,128,127,0,28,0,54,0,99,0,193,128,11,11,22, + 15,2,2,4,0,4,0,4,0,4,0,4,0,255,224,4, + 0,4,0,4,0,4,0,4,0,5,6,6,15,4,253,56, + 56,112,96,192,128,10,1,2,15,2,7,255,192,3,3,3, + 15,6,0,224,224,224,9,18,36,15,3,254,0,128,0,128, + 1,0,1,0,2,0,2,0,4,0,4,0,8,0,8,0, + 16,0,16,0,32,0,32,0,64,0,64,0,128,0,128,0, + 9,15,30,15,3,0,28,0,99,0,65,0,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 99,0,28,0,9,15,30,15,3,0,24,0,232,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,10,15,30,15,2,0,30,0, + 97,0,128,128,128,128,0,128,0,128,1,0,2,0,4,0, + 8,0,16,0,32,0,64,0,128,64,255,192,10,15,30,15, + 2,0,62,0,65,128,0,128,0,128,0,128,1,0,30,0, + 1,128,0,64,0,64,0,64,0,64,128,64,97,128,30,0, + 10,15,30,15,2,0,3,0,5,0,9,0,9,0,17,0, + 33,0,33,0,65,0,65,0,129,0,255,192,1,0,1,0, + 1,0,15,192,10,15,30,15,2,0,127,128,64,0,64,0, + 64,0,64,0,94,0,97,128,0,128,0,64,0,64,0,64, + 0,64,0,128,193,128,62,0,9,15,30,15,3,0,15,0, + 48,0,96,0,64,0,128,0,158,0,161,0,192,128,128,128, + 128,128,128,128,128,128,64,128,97,0,30,0,9,15,30,15, + 2,0,255,128,128,128,129,0,1,0,1,0,2,0,2,0, + 2,0,2,0,4,0,4,0,4,0,8,0,8,0,8,0, + 10,15,30,15,2,0,30,0,33,0,64,128,64,128,64,128, + 64,128,33,0,63,0,64,128,128,64,128,64,128,64,64,128, + 97,128,30,0,9,15,30,15,3,0,28,0,99,0,193,128, + 128,128,128,128,128,128,65,128,98,128,28,128,0,128,0,128, + 1,0,1,0,6,0,248,0,3,11,11,15,6,0,224,224, + 224,0,0,0,0,0,224,224,224,5,14,14,15,4,253,56, + 56,56,0,0,0,0,0,56,56,112,96,192,128,11,11,22, + 15,1,2,0,96,1,128,6,0,24,0,96,0,192,0,96, + 0,24,0,6,0,1,128,0,96,12,4,8,15,1,5,255, + 240,0,0,0,0,255,240,11,11,22,15,2,2,192,0,48, + 0,12,0,3,0,0,192,0,96,0,192,3,0,12,0,48, + 0,192,0,8,14,14,15,3,0,124,130,129,1,1,1,2, + 12,16,16,0,0,24,24,10,18,36,15,2,254,30,0,97, + 0,64,128,128,128,128,128,131,128,132,128,136,128,136,128,136, + 128,136,128,132,128,131,192,128,0,128,0,64,0,97,128,31, + 0,13,14,28,15,1,0,63,0,5,0,8,128,8,128,8, + 128,16,64,16,64,16,64,63,224,32,32,32,32,64,16,64, + 16,240,120,12,14,28,15,1,0,255,192,32,32,32,16,32, + 16,32,16,32,32,63,192,32,32,32,16,32,16,32,16,32, + 16,32,32,255,192,11,14,28,15,2,0,15,32,48,160,96, + 96,64,32,128,0,128,0,128,0,128,0,128,0,128,0,64, + 32,96,96,48,192,15,0,12,14,28,15,1,0,255,128,64, + 96,64,32,64,16,64,16,64,16,64,16,64,16,64,16,64, + 16,64,16,64,32,64,96,255,128,12,14,28,15,1,0,255, + 224,32,32,32,32,32,32,34,0,34,0,62,0,34,0,34, + 0,32,16,32,16,32,16,32,16,255,240,11,14,28,15,2, + 0,255,224,32,32,32,32,32,32,34,0,34,0,62,0,34, + 0,34,0,32,0,32,0,32,0,32,0,254,0,12,14,28, + 15,1,0,15,32,48,160,96,96,64,32,128,0,128,0,128, + 0,128,0,131,240,128,32,64,32,96,32,48,64,15,128,13, + 14,28,15,1,0,248,248,32,32,32,32,32,32,32,32,32, + 32,63,224,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,14,28,15,3,0,255,128,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,255,128,12,14,28,15,2,0,31,240,0,128,0,128,0, + 128,0,128,0,128,0,128,0,128,128,128,128,128,128,128,129, + 0,67,0,60,0,13,14,28,15,1,0,248,240,32,64,32, + 128,33,0,34,0,36,0,44,0,50,0,33,0,32,128,32, + 64,32,64,32,32,248,120,12,14,28,15,1,0,254,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16, + 16,16,16,16,16,16,16,255,240,13,14,28,15,1,0,224, + 56,96,48,96,48,80,80,80,80,72,144,72,144,69,16,71, + 16,64,16,64,16,64,16,64,16,240,120,14,14,28,15,0, + 0,240,252,48,16,40,16,36,16,36,16,34,16,34,16,33, + 16,33,16,32,144,32,144,32,80,32,48,252,48,13,14,28, + 15,1,0,15,128,48,96,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,128,8,64,16,96,48,48,96,15,128,11, + 14,28,15,2,0,255,128,32,64,32,32,32,32,32,32,32, + 32,32,64,63,128,32,0,32,0,32,0,32,0,32,0,254, + 0,13,16,32,15,1,254,15,128,48,96,96,48,64,16,128, + 8,128,8,128,8,128,8,128,8,128,8,64,16,96,48,48, + 96,15,128,6,48,27,192,13,14,28,15,1,0,255,128,32, + 64,32,32,32,32,32,32,32,32,32,64,63,128,33,0,32, + 128,32,64,32,64,32,32,248,56,10,14,28,15,2,0,30, + 64,97,64,128,192,128,64,128,0,96,0,30,0,1,128,0, + 64,0,64,128,64,192,64,160,128,159,0,11,14,28,15,2, + 0,255,224,132,32,132,32,132,32,132,32,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,63,128,12,14,28, + 15,1,0,249,240,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,32,64,32,64,32,32,64,31,128,13, + 14,28,15,1,0,248,248,64,16,64,16,32,32,32,32,16, + 64,16,64,16,64,8,128,8,128,8,128,5,0,7,0,2, + 0,13,14,28,15,1,0,248,248,64,16,64,16,66,16,66, + 16,69,16,69,16,37,32,40,160,40,160,40,160,48,96,48, + 96,48,96,13,14,28,15,1,0,248,248,32,32,16,64,16, + 64,8,128,5,0,2,0,5,0,8,128,8,128,16,64,32, + 32,32,32,248,248,13,14,28,15,1,0,240,120,32,32,16, + 64,16,64,8,128,8,128,5,0,2,0,2,0,2,0,2, + 0,2,0,2,0,31,192,10,14,28,15,2,0,255,192,128, + 64,128,128,129,0,130,0,2,0,4,0,8,0,16,0,16, + 64,32,64,64,64,128,64,255,192,3,19,19,15,7,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,224,9,18,36,15,3,254,128,0,128,0,64,0,64,0, + 32,0,32,0,16,0,16,0,8,0,8,0,4,0,4,0, + 2,0,2,0,1,0,1,0,0,128,0,128,3,19,19,15, + 5,253,224,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,9,5,10,15,3,11,8,0,28,0,34, + 0,65,0,128,128,15,1,2,15,0,251,255,254,5,4,4, + 15,4,12,192,96,48,24,11,11,22,15,2,0,62,0,65, + 0,0,128,0,128,62,128,65,128,128,128,128,128,128,128,65, + 128,62,224,13,15,30,15,1,0,224,0,32,0,32,0,32, + 0,39,192,40,48,48,16,32,8,32,8,32,8,32,8,32, + 8,48,16,40,48,231,192,11,11,22,15,2,0,31,64,96, + 192,64,64,128,64,128,0,128,0,128,0,128,0,64,96,96, + 192,31,0,13,15,30,15,1,0,0,224,0,32,0,32,0, + 32,31,32,96,160,64,96,128,32,128,32,128,32,128,32,128, + 32,64,96,96,160,31,56,11,11,22,15,2,0,31,0,96, + 192,64,64,128,32,128,32,255,224,128,0,128,0,64,0,96, + 96,31,128,10,15,30,15,3,0,15,128,24,64,16,0,16, + 0,255,128,16,0,16,0,16,0,16,0,16,0,16,0,16, + 0,16,0,16,0,255,128,13,16,32,15,1,251,31,56,96, + 160,64,96,128,32,128,32,128,32,128,32,128,32,64,96,96, + 160,31,32,0,32,0,32,0,64,0,192,63,0,13,15,30, + 15,1,0,224,0,32,0,32,0,32,0,39,128,40,64,48, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,16,32,15,3,0,8,0,8,0,8,0,0,0,0, + 0,120,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,128,8,21,21,15,3,251,2,2,2, + 0,0,255,1,1,1,1,1,1,1,1,1,1,1,1,2, + 6,248,11,15,30,15,2,0,224,0,32,0,32,0,32,0, + 35,192,33,0,34,0,36,0,40,0,56,0,36,0,34,0, + 33,0,32,128,225,224,11,15,30,15,2,0,124,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,14,11,22,15,0,0, + 238,112,49,136,33,8,33,8,33,8,33,8,33,8,33,8, + 33,8,33,8,249,140,13,11,22,15,1,0,231,128,40,64, + 48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 248,248,11,11,22,15,2,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,13,16, + 32,15,1,251,231,192,40,48,48,16,32,8,32,8,32,8, + 32,8,32,8,48,16,40,48,39,192,32,0,32,0,32,0, + 32,0,252,0,13,16,32,15,1,251,31,56,96,160,64,96, + 128,32,128,32,128,32,128,32,128,32,64,96,96,160,31,32, + 0,32,0,32,0,32,0,32,1,248,11,11,22,15,2,0, + 113,192,22,32,24,0,16,0,16,0,16,0,16,0,16,0, + 16,0,16,0,255,128,9,11,22,15,3,0,62,128,65,128, + 64,128,64,0,56,0,7,0,0,128,0,128,128,128,193,0, + 190,0,10,15,30,15,2,0,32,0,32,0,32,0,32,0, + 255,128,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,16,192,15,0,12,11,22,15,1,0,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,16,160, + 15,48,13,11,22,15,1,0,248,248,32,32,32,32,16,64, + 16,64,16,64,8,128,8,128,5,0,7,0,2,0,13,11, + 22,15,1,0,240,120,64,16,64,16,66,16,34,32,37,32, + 37,32,37,32,21,64,24,192,24,192,11,11,22,15,2,0, + 241,224,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,241,224,12,16,32,15,1,251,240,240,64,32, + 64,32,32,64,32,64,32,128,16,128,17,0,9,0,10,0, + 6,0,4,0,4,0,8,0,8,0,254,0,9,11,22,15, + 3,0,255,128,128,128,129,0,2,0,4,0,8,0,16,0, + 32,0,64,128,128,128,255,128,5,19,19,15,5,253,24,32, + 32,32,32,32,32,32,32,192,32,32,32,32,32,32,32,32, + 24,1,17,17,15,7,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,5,19,19,15,5,253,192,32, + 32,32,32,32,32,32,32,24,32,32,32,32,32,32,32,32, + 192,12,3,6,15,1,6,60,48,102,96,195,192,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 20 + Calculated Max Values w=19 h=28 x= 9 y=17 dx=20 dy= 0 ascent=26 len=81 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =26 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24[8729] U8G_SECTION(".progmem.u8g_font_courR24") = { + 0,28,42,250,246,19,4,184,10,129,32,255,250,26,250,21, + 250,0,0,0,20,0,1,5,21,21,20,8,0,32,112,112, + 112,112,112,32,32,32,32,32,32,32,32,0,0,0,0,112, + 248,112,11,10,20,20,4,10,241,224,241,224,241,224,241,224, + 241,224,96,192,96,192,64,128,64,128,64,128,13,23,46,20, + 3,254,4,64,4,64,4,64,4,64,12,192,8,128,8,128, + 8,128,127,248,8,128,8,128,8,128,8,128,8,128,255,240, + 8,128,8,128,8,128,9,128,17,0,17,0,17,0,17,0, + 12,25,50,20,4,253,4,0,4,0,4,0,31,32,113,224, + 64,96,128,32,128,0,192,0,96,0,60,0,7,128,0,224, + 0,48,0,16,0,16,128,48,192,96,241,192,159,0,4,0, + 4,0,4,0,4,0,4,0,15,20,40,20,3,0,30,0, + 51,0,97,128,64,128,64,128,97,128,51,0,30,14,0,112, + 3,128,28,0,224,0,1,224,3,48,6,24,4,8,4,8, + 6,24,3,48,1,224,12,17,34,20,3,0,15,192,25,128, + 48,0,32,0,32,0,48,0,16,0,24,0,60,0,100,48, + 70,96,194,64,131,64,193,192,65,128,99,192,62,112,4,11, + 11,20,8,10,112,112,112,112,112,224,224,224,224,224,224,5, + 25,25,20,9,252,8,24,16,48,32,96,96,64,64,192,192, + 192,192,192,192,192,64,64,96,96,32,48,16,24,8,5,25, + 25,20,5,252,128,192,64,96,32,48,48,16,16,24,24,24, + 24,24,24,24,16,16,48,48,32,96,64,192,128,11,13,26, + 20,4,8,4,0,4,0,4,0,4,0,132,32,245,224,31, + 0,14,0,10,0,27,0,49,128,32,128,96,192,15,17,34, + 20,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,255,254,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,6,9,9,20,5,252,60,60,120,120,96, + 224,192,192,128,15,1,2,20,2,9,255,254,5,4,4,20, + 7,0,112,248,248,112,11,25,50,20,4,253,0,32,0,96, + 0,64,0,64,0,192,0,128,1,128,1,0,3,0,2,0, + 2,0,6,0,4,0,12,0,8,0,8,0,24,0,16,0, + 48,0,32,0,96,0,64,0,64,0,192,0,128,0,11,20, + 40,20,4,0,31,0,49,128,96,192,64,64,64,64,128,32, + 128,32,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 192,96,64,64,64,64,96,192,49,128,31,0,11,20,40,20, + 4,0,12,0,60,0,228,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,13,20,40,20,3,0, + 15,192,48,96,96,16,64,16,64,16,0,16,0,48,0,32, + 0,96,0,192,1,128,3,0,6,0,12,0,24,0,48,0, + 96,0,192,0,128,8,255,248,13,20,40,20,3,0,15,128, + 56,224,96,48,0,16,0,16,0,16,0,16,0,32,0,64, + 7,128,0,96,0,16,0,8,0,8,0,8,0,8,0,24, + 192,48,112,224,31,128,13,20,40,20,3,0,0,192,1,64, + 1,64,2,64,6,64,4,64,8,64,24,64,16,64,32,64, + 96,64,64,64,128,64,255,248,0,64,0,64,0,64,0,64, + 0,64,3,248,13,20,40,20,3,0,63,240,32,0,32,0, + 32,0,32,0,32,0,32,0,39,128,60,224,32,48,0,16, + 0,24,0,8,0,8,0,8,0,24,192,16,96,48,56,224, + 15,128,12,20,40,20,4,0,7,192,28,32,48,0,32,0, + 96,0,64,0,192,0,143,128,184,224,160,32,192,48,192,16, + 192,16,192,16,192,16,64,16,96,48,32,32,56,224,15,128, + 11,20,40,20,4,0,255,224,128,32,128,32,0,96,0,64, + 0,64,0,192,0,128,0,128,1,128,1,0,1,0,3,0, + 2,0,2,0,2,0,6,0,4,0,4,0,4,0,11,20, + 40,20,4,0,31,0,96,192,64,64,192,96,128,32,128,32, + 192,96,64,64,49,128,31,0,113,192,64,64,192,96,128,32, + 128,32,128,32,192,96,64,64,113,192,31,0,12,20,40,20, + 4,0,31,0,112,192,64,96,192,32,128,48,128,48,128,48, + 128,48,192,80,64,208,115,144,30,16,0,32,0,32,0,32, + 0,64,0,192,1,128,14,0,120,0,5,14,14,20,7,0, + 112,248,248,112,0,0,0,0,0,0,112,248,248,112,7,18, + 18,20,5,252,28,62,62,28,0,0,0,0,0,60,60,120, + 112,112,224,192,192,128,15,17,34,20,2,1,0,2,0,14, + 0,56,0,224,3,128,6,0,28,0,112,0,192,0,112,0, + 28,0,6,0,3,128,0,224,0,56,0,14,0,2,15,6, + 12,20,2,6,255,254,0,0,0,0,0,0,0,0,255,254, + 15,17,34,20,2,1,128,0,224,0,56,0,14,0,3,128, + 0,192,0,112,0,28,0,6,0,28,0,112,0,192,3,128, + 14,0,56,0,224,0,128,0,11,19,38,20,4,0,63,0, + 225,192,128,64,128,64,0,96,0,32,0,96,0,64,1,192, + 7,0,4,0,4,0,4,0,0,0,0,0,0,0,14,0, + 31,0,14,0,12,23,46,20,3,254,15,128,24,192,48,64, + 96,96,64,32,192,32,128,32,128,224,131,160,134,32,132,32, + 132,32,132,32,134,32,131,32,129,240,128,0,192,0,64,0, + 96,0,48,0,24,224,15,128,19,19,57,20,0,0,31,224, + 0,0,160,0,0,160,0,1,16,0,1,16,0,1,16,0, + 2,8,0,2,8,0,2,8,0,4,4,0,4,4,0,4, + 4,0,15,254,0,8,2,0,8,2,0,16,1,0,16,1, + 0,48,1,128,254,15,224,16,19,38,20,1,0,255,240,16, + 12,16,4,16,6,16,2,16,2,16,6,16,4,16,12,31, + 248,16,6,16,2,16,3,16,1,16,1,16,3,16,2,16, + 6,255,248,14,19,38,20,2,0,7,196,28,116,32,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 0,128,0,192,0,64,0,96,4,32,28,28,112,7,192,15, + 19,38,20,1,0,255,192,32,112,32,24,32,12,32,4,32, + 6,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 6,32,4,32,12,32,24,32,112,255,192,15,19,38,20,1, + 0,255,252,16,4,16,4,16,4,16,4,16,68,16,64,16, + 64,31,192,16,64,16,64,16,64,16,0,16,2,16,2,16, + 2,16,2,16,2,255,254,15,19,38,20,1,0,255,254,16, + 2,16,2,16,2,16,2,16,66,16,64,16,64,31,192,16, + 64,16,64,16,64,16,0,16,0,16,0,16,0,16,0,16, + 0,255,128,15,19,38,20,2,0,7,196,28,116,48,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 254,128,4,192,4,64,4,96,4,48,4,28,28,7,240,15, + 19,38,20,2,0,252,126,32,8,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,63,248,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,32,8,252,126,11,19,38,20,4, + 0,255,224,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,255,224,15,19,38,20,3,0,15,254,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,32,128,32,128,32,128,32,128,32,192,96,64,64,97, + 192,31,0,17,19,57,20,1,0,254,31,128,16,4,0,16, + 12,0,16,8,0,16,16,0,16,48,0,16,64,0,16,192, + 0,19,128,0,28,192,0,16,32,0,16,48,0,16,16,0, + 16,24,0,16,8,0,16,8,0,16,12,0,16,4,0,254, + 7,128,15,19,38,20,2,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,2,8,2,8,2,8,2,8,2,8,2,255,254,19,19, + 57,20,0,0,248,3,224,40,2,128,40,2,128,36,4,128, + 36,4,128,34,8,128,34,8,128,33,16,128,33,16,128,33, + 16,128,32,160,128,32,160,128,32,64,128,32,64,128,32,0, + 128,32,0,128,32,0,128,32,0,128,254,7,224,18,19,57, + 20,0,0,248,31,192,28,1,0,20,1,0,18,1,0,18, + 1,0,17,1,0,16,129,0,16,129,0,16,65,0,16,65, + 0,16,33,0,16,33,0,16,17,0,16,17,0,16,9,0, + 16,9,0,16,5,0,16,7,0,127,3,0,15,19,38,20, + 2,0,7,192,24,48,48,24,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,48,24,24,48,7,192,15,19,38,20,1,0,255,224, + 16,56,16,4,16,6,16,2,16,2,16,2,16,6,16,4, + 16,56,31,224,16,0,16,0,16,0,16,0,16,0,16,0, + 16,0,255,192,15,22,44,20,2,253,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,12,96,7,192, + 2,0,15,198,24,124,18,19,57,20,1,0,255,224,0,16, + 56,0,16,4,0,16,6,0,16,2,0,16,2,0,16,6, + 0,16,4,0,16,24,0,31,224,0,16,96,0,16,48,0, + 16,24,0,16,12,0,16,4,0,16,6,0,16,2,0,16, + 3,0,254,1,192,12,19,38,20,3,0,15,144,56,208,96, + 48,64,48,64,16,64,16,64,0,96,0,56,0,15,0,1, + 192,0,96,0,48,128,16,128,16,192,16,224,48,184,224,143, + 128,15,19,38,20,2,0,255,254,129,2,129,2,129,2,129, + 2,129,2,129,2,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,63,248,17,19,57, + 20,1,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,19,19,57,20, + 0,0,254,15,224,48,1,128,16,1,0,16,1,0,24,3, + 0,8,2,0,8,2,0,12,6,0,4,4,0,4,4,0, + 6,12,0,2,8,0,3,24,0,1,16,0,1,16,0,0, + 160,0,0,160,0,0,224,0,0,64,0,17,19,57,20,1, + 0,252,31,128,64,1,0,64,1,0,64,1,0,64,1,0, + 97,195,0,33,66,0,33,66,0,34,34,0,34,34,0,34, + 34,0,34,34,0,38,50,0,36,18,0,52,22,0,20,20, + 0,20,20,0,24,12,0,24,12,0,17,19,57,20,1,0, + 124,31,0,48,6,0,16,4,0,24,12,0,8,8,0,4, + 16,0,2,32,0,3,96,0,1,192,0,0,128,0,1,192, + 0,2,32,0,4,16,0,12,24,0,8,8,0,16,4,0, + 48,6,0,96,3,0,252,31,128,15,19,38,20,2,0,248, + 62,96,12,48,24,16,16,24,48,8,32,4,64,6,192,2, + 128,3,128,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,31,240,13,19,38,20,3,0,127,240,64,16,64, + 48,64,32,64,96,64,192,0,128,1,128,3,0,6,0,4, + 0,12,0,24,8,16,8,48,8,96,8,64,8,192,8,255, + 248,5,24,24,20,9,252,248,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,248,11, + 25,50,20,4,253,128,0,192,0,64,0,64,0,96,0,32, + 0,48,0,16,0,24,0,8,0,8,0,12,0,4,0,6, + 0,2,0,2,0,3,0,1,0,1,128,0,128,0,192,0, + 64,0,64,0,96,0,32,5,24,24,20,5,252,248,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,248,11,9,18,20,4,12,4,0,14,0,27, + 0,17,0,49,128,96,192,64,64,192,96,128,32,19,1,3, + 20,0,250,255,255,224,6,5,5,20,4,17,192,96,48,24, + 12,15,14,28,20,2,0,15,128,56,224,0,32,0,48,0, + 16,0,16,31,240,112,48,192,16,128,16,128,16,128,48,192, + 240,127,158,17,20,60,20,0,0,240,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,17,248,0,23,14, + 0,20,3,0,24,1,0,24,1,128,16,0,128,16,0,128, + 16,0,128,16,0,128,24,1,128,24,1,0,20,3,0,23, + 14,0,241,248,0,14,14,28,20,3,0,15,136,56,248,96, + 24,64,8,192,8,128,0,128,0,128,0,128,0,192,0,64, + 12,96,24,56,224,15,128,17,20,60,20,2,0,0,60,0, + 0,4,0,0,4,0,0,4,0,0,4,0,0,4,0,15, + 196,0,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,199,128,14,14,28,20,2,0,15, + 192,56,112,96,24,64,8,192,12,128,4,255,252,128,0,128, + 0,192,0,64,0,96,12,56,56,15,224,13,20,40,20,3, + 0,3,224,6,24,4,0,12,0,8,0,8,0,255,240,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,255,240,17,20,60,20,2,250,15, + 199,128,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,196,0,0,4,0,0,4,0,0, + 12,0,0,8,0,0,56,0,15,224,0,16,20,40,20,1, + 0,240,0,16,0,16,0,16,0,16,0,16,0,17,224,23, + 56,20,8,24,12,24,4,16,4,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,124,31,13,20,40,20,3,0,6, + 0,6,0,6,0,0,0,0,0,0,0,126,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,255,248,10,26,52,20,4,250,1,128,1, + 128,1,128,0,0,0,0,0,0,255,192,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,192,0,128,3,128,254, + 0,15,20,40,20,2,0,240,0,16,0,16,0,16,0,16, + 0,16,0,16,252,16,48,16,96,16,192,17,128,19,0,30, + 0,19,0,17,128,16,192,16,96,16,48,16,24,240,62,13, + 20,40,20,3,0,126,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,248,19,14,42, + 20,0,0,231,14,0,41,147,0,48,225,128,48,96,128,32, + 64,128,32,64,128,32,64,128,32,64,128,32,64,128,32,64, + 128,32,64,128,32,64,128,32,64,128,248,112,224,15,14,28, + 20,2,0,227,192,46,112,40,16,48,24,48,8,32,8,32, + 8,32,8,32,8,32,8,32,8,32,8,32,8,248,62,15, + 14,28,20,2,0,15,224,56,56,96,12,64,4,192,6,128, + 2,128,2,128,2,128,2,192,6,64,4,96,12,56,56,15, + 224,17,20,60,20,0,250,1,248,0,247,14,0,20,3,0, + 24,1,0,24,1,128,16,0,128,16,0,128,16,0,128,16, + 0,128,24,1,128,24,1,0,20,3,0,23,14,0,17,248, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 255,0,0,17,20,60,20,2,250,15,192,0,56,119,128,96, + 28,0,64,12,0,192,12,0,128,4,0,128,4,0,128,4, + 0,128,4,0,192,12,0,64,12,0,96,28,0,56,116,0, + 15,196,0,0,4,0,0,4,0,0,4,0,0,4,0,0, + 4,0,0,127,128,15,14,28,20,3,0,120,124,9,198,11, + 0,12,0,12,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,240,13,14,28,20,3,0,15,144,56, + 240,96,48,64,16,96,0,56,0,15,128,0,224,0,48,128, + 24,128,24,192,48,248,224,143,128,14,19,38,20,2,0,16, + 0,16,0,16,0,16,0,16,0,255,240,16,0,16,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,24, + 12,12,56,7,224,16,14,28,20,1,0,240,60,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,16,4,16,4,16, + 12,24,12,12,52,7,231,17,14,42,20,1,0,252,31,128, + 48,6,0,16,4,0,16,4,0,24,12,0,8,8,0,12, + 24,0,4,16,0,4,16,0,6,48,0,2,32,0,3,96, + 0,1,64,0,1,192,0,17,14,42,20,1,0,248,15,128, + 96,3,0,32,2,0,32,2,0,33,194,0,33,66,0,49, + 70,0,19,100,0,18,36,0,18,36,0,22,52,0,28,28, + 0,8,8,0,8,8,0,15,14,28,20,2,0,248,62,96, + 12,48,24,24,48,12,96,6,192,3,128,3,128,6,192,12, + 96,24,48,48,24,96,12,248,62,15,20,40,20,2,250,248, + 62,64,4,96,12,32,8,48,24,16,16,24,48,8,32,12, + 96,4,64,6,192,2,128,3,128,1,0,3,0,2,0,2, + 0,6,0,4,0,255,128,11,14,28,20,4,0,255,224,128, + 96,128,192,129,128,3,0,6,0,4,0,12,0,24,0,48, + 0,96,32,64,32,192,32,255,224,7,25,25,20,6,252,6, + 12,24,16,16,16,16,16,16,16,16,48,96,224,48,16,16, + 16,16,16,16,16,16,24,14,1,25,25,20,9,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,7,25,25,20,6,252,192,96,48, + 16,16,16,16,16,16,16,16,24,12,14,24,16,16,16,16, + 16,16,16,16,48,224,13,5,10,20,3,7,24,0,124,8, + 199,24,129,176,0,224,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,20,0,1,5,20,20, + 20,7,250,112,248,112,0,0,0,0,32,32,32,32,32,32, + 32,112,112,112,112,112,32,11,20,40,20,4,0,4,0,4, + 0,4,0,4,0,31,128,48,224,96,32,192,32,128,0,128, + 0,128,0,128,0,192,0,96,32,48,224,31,128,4,0,4, + 0,4,0,4,0,14,19,38,20,2,0,3,224,12,48,8, + 24,24,0,16,0,16,0,16,0,24,0,8,0,255,128,8, + 0,8,0,8,0,8,0,8,0,24,0,16,4,48,12,127, + 248,13,13,26,20,3,3,192,24,111,176,56,224,32,32,96, + 48,64,16,64,16,64,16,96,48,32,32,56,224,111,176,192, + 24,15,19,38,20,2,0,248,62,96,12,48,24,16,16,24, + 48,8,32,12,96,6,192,2,128,3,128,63,248,1,0,1, + 0,63,248,1,0,1,0,1,0,1,0,31,240,1,25,25, + 20,9,252,128,128,128,128,128,128,128,128,128,128,128,0,0, + 0,0,128,128,128,128,128,128,128,128,128,128,14,23,46,20, + 3,254,7,248,28,8,16,8,16,8,16,0,24,0,124,0, + 198,0,131,0,129,192,192,96,112,56,24,12,12,4,7,4, + 1,132,0,252,0,96,0,32,64,32,64,32,64,224,127,128, + 10,3,6,20,5,17,97,128,243,192,97,128,19,19,57,20, + 0,0,1,240,0,7,28,0,28,7,0,48,1,128,33,232, + 128,99,24,192,70,8,64,204,8,96,136,0,32,136,0,32, + 136,0,32,140,0,32,198,12,96,67,24,64,97,240,192,48, + 1,128,24,3,0,15,30,0,1,240,0,9,12,24,20,5, + 7,60,0,102,0,2,0,2,0,126,0,198,0,130,0,206, + 0,123,128,0,0,0,0,255,128,16,14,28,20,2,0,1, + 131,3,6,6,12,12,24,24,48,48,96,96,192,225,192,96, + 192,48,96,24,48,12,24,6,12,3,6,14,6,12,20,3, + 6,255,252,0,4,0,4,0,4,0,4,0,4,15,1,2, + 20,2,9,255,254,19,19,57,20,0,0,3,248,0,14,14, + 0,24,3,0,48,1,128,103,224,192,66,48,64,194,24,96, + 130,8,32,130,8,32,130,24,32,130,48,32,131,224,32,194, + 48,96,66,24,64,103,12,192,48,1,128,24,3,0,14,14, + 0,3,248,0,9,2,4,20,5,17,255,128,255,128,9,10, + 20,20,5,11,62,0,99,0,65,0,193,128,128,128,128,128, + 193,128,65,0,99,0,62,0,15,16,32,20,2,1,1,0, + 1,0,1,0,1,0,1,0,1,0,255,254,1,0,1,0, + 1,0,1,0,1,0,1,0,0,0,0,0,255,254,8,14, + 14,20,5,7,60,102,67,193,3,2,6,12,24,16,48,96, + 193,255,8,14,14,20,6,7,60,102,195,1,1,6,28,6, + 3,1,1,195,102,60,6,5,5,20,9,17,12,24,48,96, + 192,16,20,40,20,1,250,240,60,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,24,12,24,28,28, + 52,23,231,16,0,16,0,16,0,16,0,16,0,16,0,15, + 23,46,20,2,254,15,254,57,16,113,16,97,16,225,16,193, + 16,193,16,225,16,97,16,113,16,61,16,15,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,31,190,5,4,4,20,7,7,112,248,248,112,5,5,5, + 20,7,251,32,32,48,152,240,7,14,14,20,6,7,112,208, + 16,16,16,16,16,16,16,16,16,16,16,254,9,12,24,20, + 5,7,28,0,119,0,65,0,193,128,128,128,193,128,65,0, + 119,0,28,0,0,0,0,0,255,128,16,14,28,20,2,0, + 193,128,96,192,48,96,24,48,12,24,6,12,3,6,3,135, + 3,6,6,12,12,24,24,48,48,96,96,192,18,21,63,20, + 1,0,48,0,192,240,0,128,16,1,128,16,3,0,16,2, + 0,16,6,0,16,12,0,16,8,0,16,24,0,16,48,0, + 16,35,0,16,103,0,254,197,0,0,141,0,1,153,0,3, + 17,0,2,49,0,6,63,128,12,1,0,8,1,0,24,7, + 128,18,21,63,20,1,0,48,0,128,240,1,128,16,3,0, + 16,6,0,16,4,0,16,12,0,16,24,0,16,16,0,16, + 48,0,16,96,0,16,71,128,16,204,192,253,152,64,3,0, + 192,2,0,128,6,1,128,12,7,0,8,12,0,24,24,0, + 48,48,0,96,63,192,19,21,63,20,0,0,60,0,0,102, + 0,96,3,0,192,3,1,128,6,3,0,28,6,0,6,12, + 0,3,8,0,1,24,0,1,48,0,195,33,128,102,99,128, + 60,194,128,1,134,128,1,12,128,3,8,128,6,24,128,12, + 31,192,24,0,128,48,0,128,0,3,192,11,20,40,20,4, + 250,14,0,31,0,14,0,0,0,0,0,0,0,0,0,4, + 0,4,0,12,0,24,0,112,0,64,0,192,0,128,0,128, + 0,192,32,96,32,49,224,31,0,19,26,78,20,0,0,6, + 0,0,3,0,0,1,128,0,0,192,0,0,96,0,0,0, + 0,0,0,0,31,224,0,0,160,0,1,176,0,1,16,0, + 1,16,0,3,24,0,2,8,0,2,8,0,6,12,0,4, + 4,0,4,4,0,12,6,0,15,254,0,8,2,0,24,3, + 0,16,1,0,16,1,0,48,1,128,254,15,224,19,26,78, + 20,0,0,0,12,0,0,24,0,0,48,0,0,96,0,0, + 192,0,0,0,0,0,0,0,31,224,0,0,160,0,1,176, + 0,1,16,0,1,16,0,3,24,0,2,8,0,2,8,0, + 6,12,0,4,4,0,4,4,0,12,6,0,15,254,0,8, + 2,0,24,3,0,16,1,0,16,1,0,48,1,128,254,15, + 224,19,26,78,20,0,0,0,64,0,0,224,0,1,176,0, + 3,24,0,6,12,0,0,0,0,0,0,0,31,224,0,0, + 160,0,1,176,0,1,16,0,1,16,0,3,24,0,2,8, + 0,2,8,0,6,12,0,4,4,0,4,4,0,12,6,0, + 15,254,0,8,2,0,24,3,0,16,1,0,16,1,0,48, + 1,128,254,15,224,19,24,72,20,0,0,3,132,0,6,236, + 0,4,56,0,0,0,0,0,0,0,31,224,0,0,160,0, + 1,176,0,1,16,0,1,16,0,3,24,0,2,8,0,2, + 8,0,6,12,0,4,4,0,4,4,0,12,6,0,15,254, + 0,8,2,0,24,3,0,16,1,0,16,1,0,48,1,128, + 254,15,224,19,24,72,20,0,0,6,12,0,15,30,0,6, + 12,0,0,0,0,0,0,0,31,224,0,0,160,0,1,176, + 0,1,16,0,1,16,0,3,24,0,2,8,0,2,8,0, + 6,12,0,4,4,0,4,4,0,12,6,0,15,254,0,8, + 2,0,24,3,0,16,1,0,16,1,0,48,1,128,254,15, + 224,19,26,78,20,0,0,0,224,0,1,176,0,1,16,0, + 1,16,0,1,176,0,0,224,0,0,0,0,31,224,0,0, + 160,0,1,176,0,1,16,0,1,16,0,3,24,0,2,8, + 0,2,8,0,6,12,0,4,4,0,4,4,0,12,6,0, + 15,254,0,8,2,0,24,3,0,16,1,0,16,1,0,48, + 1,128,254,15,224,18,19,57,20,1,0,31,255,128,2,64, + 128,2,64,128,6,64,128,4,64,128,4,64,128,4,64,0, + 12,68,0,8,68,0,8,124,0,8,68,0,24,68,0,31, + 192,0,16,64,0,48,64,64,32,64,64,32,64,64,32,64, + 64,251,255,192,15,24,48,20,2,251,7,196,28,116,48,12, + 96,12,64,4,192,4,128,0,128,0,128,0,128,0,128,0, + 128,0,128,0,192,0,64,2,96,4,48,28,28,112,7,192, + 1,0,1,0,1,128,4,192,7,128,15,26,52,20,1,0, + 12,0,6,0,3,0,1,128,0,192,0,0,0,0,255,252, + 16,4,16,4,16,4,16,4,16,4,16,64,16,64,16,64, + 31,192,16,64,16,64,16,0,16,2,16,2,16,2,16,2, + 16,2,255,254,15,26,52,20,1,0,0,48,0,96,0,192, + 1,128,3,0,0,0,0,0,255,252,16,4,16,4,16,4, + 16,4,16,4,16,64,16,64,16,64,31,192,16,64,16,64, + 16,0,16,2,16,2,16,2,16,2,16,2,255,254,15,26, + 52,20,1,0,0,128,1,192,3,96,6,48,12,24,0,0, + 0,0,255,252,16,4,16,4,16,4,16,4,16,4,16,64, + 16,64,16,64,31,192,16,64,16,64,16,0,16,2,16,2, + 16,2,16,2,16,2,255,254,15,24,48,20,1,0,12,48, + 30,120,12,48,0,0,0,0,255,252,16,4,16,4,16,4, + 16,4,16,4,16,64,16,64,16,64,31,192,16,64,16,64, + 16,0,16,2,16,2,16,2,16,2,16,2,255,254,11,26, + 52,20,4,0,48,0,24,0,12,0,6,0,3,0,0,0, + 0,0,255,224,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,255,224,11,26,52,20,4,0,0,192, + 1,128,3,0,6,0,12,0,0,0,0,0,255,224,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 255,224,11,26,52,20,4,0,4,0,14,0,27,0,49,128, + 96,192,0,0,0,0,255,224,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,255,224,11,24,48,20, + 4,0,96,192,241,224,96,192,0,0,0,0,255,224,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 255,224,15,19,38,20,1,0,255,192,32,112,32,24,32,12, + 32,4,32,6,32,2,32,2,32,2,254,2,32,2,32,2, + 32,2,32,6,32,4,32,12,32,24,32,112,255,192,18,24, + 72,20,0,0,3,132,0,6,236,0,4,56,0,0,0,0, + 0,0,0,248,31,192,28,1,0,20,1,0,22,1,0,18, + 1,0,19,1,0,17,129,0,16,129,0,16,193,0,16,65, + 0,16,97,0,16,33,0,16,49,0,16,25,0,16,9,0, + 16,13,0,16,5,0,16,7,0,127,3,0,15,26,52,20, + 2,0,24,0,12,0,6,0,3,0,1,128,0,0,0,0, + 7,192,28,112,48,24,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,32,8, + 48,24,28,112,7,192,15,26,52,20,2,0,0,24,0,48, + 0,96,0,192,1,128,0,0,0,0,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,192,6,64,4,96,12,32,8,48,24,28,112,7,192, + 15,26,52,20,2,0,1,0,3,128,6,192,12,96,24,48, + 0,0,0,0,7,192,28,112,48,24,96,12,64,4,192,6, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,32,8,48,24,28,112,7,192,15,24,48,20,2,0, + 14,16,27,176,16,224,0,0,0,0,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,192,6,64,4,96,12,32,8,48,24,28,112,7,192, + 15,24,48,20,2,0,48,48,120,120,48,48,0,0,0,0, + 7,192,28,112,48,24,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,32,8, + 48,24,28,112,7,192,13,14,28,20,3,1,128,8,192,24, + 96,48,48,96,24,192,13,128,7,0,7,0,13,128,24,192, + 48,96,96,48,192,24,128,8,16,21,42,20,2,255,0,1, + 7,195,28,118,48,28,32,24,96,60,64,36,192,102,128,194, + 129,130,129,2,131,2,134,2,204,6,72,4,120,12,48,8, + 48,24,124,48,199,224,128,0,17,26,78,20,1,0,6,0, + 0,3,0,0,1,128,0,0,192,0,0,96,0,0,0,0, + 0,0,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,17,26,78,20, + 1,0,0,24,0,0,48,0,0,96,0,0,192,0,1,128, + 0,0,0,0,0,0,0,254,63,128,32,2,0,32,2,0, + 32,2,0,32,2,0,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,48,6,0,16,4,0,24,12,0,14,56,0,3,224,0, + 17,26,78,20,1,0,0,128,0,1,192,0,3,96,0,6, + 48,0,12,24,0,0,0,0,0,0,0,254,63,128,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,32,2,0, + 32,2,0,32,2,0,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,48,6,0,16,4,0,24,12,0,14,56, + 0,3,224,0,17,24,72,20,1,0,12,24,0,30,60,0, + 12,24,0,0,0,0,0,0,0,254,63,128,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,32,2,0, + 32,2,0,48,6,0,16,4,0,24,12,0,14,56,0,3, + 224,0,15,26,52,20,2,0,0,48,0,96,0,192,1,128, + 3,0,0,0,0,0,248,62,96,12,48,24,16,16,24,48, + 8,32,12,96,6,192,2,128,3,128,1,0,1,0,1,0, + 1,0,1,0,1,0,1,0,1,0,31,240,16,19,38,20, + 1,0,254,0,16,0,16,0,16,0,31,224,16,60,16,6, + 16,2,16,3,16,3,16,2,16,6,16,60,31,224,16,0, + 16,0,16,0,16,0,254,0,15,21,42,20,1,0,7,192, + 12,96,8,32,24,48,16,16,16,16,16,16,16,48,16,96, + 17,192,16,112,16,24,16,4,16,6,16,2,16,2,16,2, + 17,6,17,4,17,140,248,248,15,22,44,20,2,0,24,0, + 12,0,6,0,3,0,1,128,0,0,0,0,0,0,15,128, + 56,224,0,32,0,48,0,16,0,16,31,240,112,48,192,16, + 128,16,128,16,128,48,192,240,127,158,15,22,44,20,2,0, + 0,96,0,192,1,128,3,0,6,0,0,0,0,0,0,0, + 15,128,56,224,0,32,0,48,0,16,0,16,31,240,112,48, + 192,16,128,16,128,16,128,48,192,240,127,158,15,22,44,20, + 2,0,1,0,3,128,6,192,12,96,24,48,0,0,0,0, + 0,0,15,128,56,224,0,32,0,48,0,16,0,16,31,240, + 112,48,192,16,128,16,128,16,128,48,192,240,127,158,15,20, + 40,20,2,0,14,16,27,176,16,224,0,0,0,0,0,0, + 15,128,56,224,0,32,0,48,0,16,0,16,31,240,112,48, + 192,16,128,16,128,16,128,48,192,240,127,158,15,20,40,20, + 2,0,48,192,121,224,48,192,0,0,0,0,0,0,15,128, + 56,224,0,32,0,48,0,16,0,16,31,240,112,48,192,16, + 128,16,128,16,128,48,192,240,127,158,15,23,46,20,2,0, + 7,0,13,128,8,128,8,128,13,128,7,0,0,0,0,0, + 0,0,15,128,56,224,0,32,0,48,0,16,0,16,31,240, + 112,48,192,16,128,16,128,16,128,48,192,240,127,158,19,14, + 42,20,0,0,31,15,128,113,152,192,0,240,64,0,96,96, + 0,96,32,30,64,32,115,255,224,192,192,0,128,64,0,128, + 96,0,128,224,0,193,80,96,99,88,192,62,79,128,14,19, + 38,20,3,251,15,200,56,104,96,24,64,24,192,8,128,8, + 128,0,128,0,128,0,192,0,64,4,96,28,56,112,15,192, + 2,0,2,0,3,0,9,128,15,0,14,22,44,20,2,0, + 24,0,12,0,6,0,3,0,1,128,0,0,0,0,0,0, + 15,192,56,112,96,24,64,8,192,12,128,4,255,252,128,0, + 128,0,128,0,192,0,96,12,56,56,15,224,14,22,44,20, + 2,0,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,15,192,56,112,96,24,64,8,192,12,128,4,255,252, + 128,0,128,0,128,0,192,0,96,12,56,56,15,224,14,22, + 44,20,2,0,1,0,3,128,6,192,12,96,24,48,0,0, + 0,0,0,0,15,192,56,112,96,24,64,8,192,12,128,4, + 255,252,128,0,128,0,128,0,192,0,96,12,56,56,15,224, + 14,20,40,20,2,0,48,96,120,240,48,96,0,0,0,0, + 0,0,15,192,56,112,96,24,64,8,192,12,128,4,255,252, + 128,0,128,0,128,0,192,0,96,12,56,56,15,224,13,22, + 44,20,3,0,48,0,24,0,12,0,6,0,3,0,0,0, + 0,0,0,0,126,0,2,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,255,248, + 13,22,44,20,3,0,0,192,1,128,3,0,6,0,12,0, + 0,0,0,0,0,0,126,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0, + 255,248,13,21,42,20,3,0,4,0,14,0,27,0,49,128, + 96,192,0,0,0,0,126,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0, + 255,248,13,20,40,20,3,0,97,128,243,192,97,128,0,0, + 0,0,0,0,126,0,2,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,255,248, + 15,20,40,20,2,0,124,12,79,56,1,224,3,192,14,96, + 56,48,32,24,0,12,15,228,56,54,96,14,192,6,128,2, + 128,2,128,2,192,6,64,4,96,12,24,56,15,224,15,20, + 40,20,2,0,14,16,27,176,16,224,0,0,0,0,0,0, + 227,192,46,112,56,16,48,24,32,8,32,8,32,8,32,8, + 32,8,32,8,32,8,32,8,32,8,248,62,15,22,44,20, + 2,0,12,0,6,0,3,0,1,128,0,192,0,0,0,0, + 0,0,15,224,56,56,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,15,224,15,22, + 44,20,2,0,0,48,0,96,0,192,1,128,3,0,0,0, + 0,0,0,0,15,224,56,56,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,192,6,64,4,96,12,56,56,15,224, + 15,22,44,20,2,0,1,128,3,192,6,96,12,48,24,24, + 0,0,0,0,0,0,15,224,56,56,96,12,64,4,192,6, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,56,56, + 15,224,15,20,40,20,2,0,14,16,27,176,16,224,0,0, + 0,0,0,0,15,224,56,56,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,192,6,64,4,96,12,56,56,15,224, + 15,20,40,20,2,0,24,96,60,240,24,96,0,0,0,0, + 0,0,15,224,56,56,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,15,224,14,16, + 32,20,2,1,3,0,7,128,3,0,0,0,0,0,0,0, + 0,0,0,0,255,252,0,0,0,0,0,0,0,0,3,0, + 7,128,3,0,15,16,32,20,2,255,0,2,7,230,28,60, + 48,24,64,52,192,102,128,194,129,130,131,2,134,2,204,6, + 88,4,112,24,120,112,207,192,128,0,16,22,44,20,1,0, + 12,0,6,0,3,0,1,128,0,192,0,0,0,0,0,0, + 240,60,16,4,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,12,24,28,12,52,7,231,16,22,44,20, + 1,0,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,240,60,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,4,16,12,24,28,12,52,7,231,16,21, + 42,20,1,0,0,128,1,192,3,96,6,48,12,24,0,0, + 0,0,240,60,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,4,16,12,24,28,12,52,7,231,16,20, + 40,20,1,0,24,48,60,120,24,48,0,0,0,0,0,0, + 240,60,16,4,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,12,24,28,12,52,7,231,15,28,56,20, + 2,250,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,248,62,64,4,96,12,32,8,48,24,16,16,24,48, + 8,32,12,96,4,64,6,192,2,128,3,128,1,0,3,0, + 2,0,2,0,6,0,4,0,127,128,17,27,81,20,0,250, + 240,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,17,248,0,23,14,0,28,3,0,24,1, + 0,24,1,128,16,0,128,16,0,128,16,0,128,16,0,128, + 24,1,128,24,1,0,28,3,0,23,14,0,17,248,0,16, + 0,0,16,0,0,16,0,0,16,0,0,16,0,0,255,0, + 0,15,25,50,20,2,250,24,24,60,60,24,24,0,0,0, + 0,248,62,64,4,96,12,32,8,48,24,16,16,24,48,8, + 32,12,96,4,64,6,192,2,128,3,128,1,0,3,0,2, + 0,2,0,6,0,4,0,127,128}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=15 h=25 x= 7 y= 9 dx=20 dy= 0 ascent=22 len=50 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =22 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24n[638] U8G_SECTION(".progmem.u8g_font_courR24n") = { + 0,28,42,250,246,20,0,0,0,0,42,57,0,22,252,20, + 0,11,13,26,20,4,8,4,0,4,0,4,0,4,0,132, + 32,245,224,31,0,14,0,10,0,27,0,49,128,32,128,96, + 192,15,17,34,20,2,1,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,255,254,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,6,9,9,20,5,252,60, + 60,120,120,96,224,192,192,128,15,1,2,20,2,9,255,254, + 5,4,4,20,7,0,112,248,248,112,11,25,50,20,4,253, + 0,32,0,96,0,64,0,64,0,192,0,128,1,128,1,0, + 3,0,2,0,2,0,6,0,4,0,12,0,8,0,8,0, + 24,0,16,0,48,0,32,0,96,0,64,0,64,0,192,0, + 128,0,11,20,40,20,4,0,31,0,49,128,96,192,64,64, + 64,64,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 128,32,128,32,192,96,64,64,64,64,96,192,49,128,31,0, + 11,20,40,20,4,0,12,0,60,0,228,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,255,224,13,20, + 40,20,3,0,15,192,48,96,96,16,64,16,64,16,0,16, + 0,48,0,32,0,96,0,192,1,128,3,0,6,0,12,0, + 24,0,48,0,96,0,192,0,128,8,255,248,13,20,40,20, + 3,0,15,128,56,224,96,48,0,16,0,16,0,16,0,16, + 0,32,0,64,7,128,0,96,0,16,0,8,0,8,0,8, + 0,8,0,24,192,48,112,224,31,128,13,20,40,20,3,0, + 0,192,1,64,1,64,2,64,6,64,4,64,8,64,24,64, + 16,64,32,64,96,64,64,64,128,64,255,248,0,64,0,64, + 0,64,0,64,0,64,3,248,13,20,40,20,3,0,63,240, + 32,0,32,0,32,0,32,0,32,0,32,0,39,128,60,224, + 32,48,0,16,0,24,0,8,0,8,0,8,0,24,192,16, + 96,48,56,224,15,128,12,20,40,20,4,0,7,192,28,32, + 48,0,32,0,96,0,64,0,192,0,143,128,184,224,160,32, + 192,48,192,16,192,16,192,16,192,16,64,16,96,48,32,32, + 56,224,15,128,11,20,40,20,4,0,255,224,128,32,128,32, + 0,96,0,64,0,64,0,192,0,128,0,128,1,128,1,0, + 1,0,3,0,2,0,2,0,2,0,6,0,4,0,4,0, + 4,0,11,20,40,20,4,0,31,0,96,192,64,64,192,96, + 128,32,128,32,192,96,64,64,49,128,31,0,113,192,64,64, + 192,96,128,32,128,32,128,32,192,96,64,64,113,192,31,0, + 12,20,40,20,4,0,31,0,112,192,64,96,192,32,128,48, + 128,48,128,48,128,48,192,80,64,208,115,144,30,16,0,32, + 0,32,0,32,0,64,0,192,1,128,14,0,120,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 20 + Calculated Max Values w=19 h=26 x= 9 y=17 dx=20 dy= 0 ascent=22 len=60 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24r[3991] U8G_SECTION(".progmem.u8g_font_courR24r") = { + 0,28,42,250,246,19,4,184,10,129,32,127,250,22,250,21, + 250,0,0,0,20,0,1,5,21,21,20,8,0,32,112,112, + 112,112,112,32,32,32,32,32,32,32,32,0,0,0,0,112, + 248,112,11,10,20,20,4,10,241,224,241,224,241,224,241,224, + 241,224,96,192,96,192,64,128,64,128,64,128,13,23,46,20, + 3,254,4,64,4,64,4,64,4,64,12,192,8,128,8,128, + 8,128,127,248,8,128,8,128,8,128,8,128,8,128,255,240, + 8,128,8,128,8,128,9,128,17,0,17,0,17,0,17,0, + 12,25,50,20,4,253,4,0,4,0,4,0,31,32,113,224, + 64,96,128,32,128,0,192,0,96,0,60,0,7,128,0,224, + 0,48,0,16,0,16,128,48,192,96,241,192,159,0,4,0, + 4,0,4,0,4,0,4,0,15,20,40,20,3,0,30,0, + 51,0,97,128,64,128,64,128,97,128,51,0,30,14,0,112, + 3,128,28,0,224,0,1,224,3,48,6,24,4,8,4,8, + 6,24,3,48,1,224,12,17,34,20,3,0,15,192,25,128, + 48,0,32,0,32,0,48,0,16,0,24,0,60,0,100,48, + 70,96,194,64,131,64,193,192,65,128,99,192,62,112,4,11, + 11,20,8,10,112,112,112,112,112,224,224,224,224,224,224,5, + 25,25,20,9,252,8,24,16,48,32,96,96,64,64,192,192, + 192,192,192,192,192,64,64,96,96,32,48,16,24,8,5,25, + 25,20,5,252,128,192,64,96,32,48,48,16,16,24,24,24, + 24,24,24,24,16,16,48,48,32,96,64,192,128,11,13,26, + 20,4,8,4,0,4,0,4,0,4,0,132,32,245,224,31, + 0,14,0,10,0,27,0,49,128,32,128,96,192,15,17,34, + 20,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,255,254,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,6,9,9,20,5,252,60,60,120,120,96, + 224,192,192,128,15,1,2,20,2,9,255,254,5,4,4,20, + 7,0,112,248,248,112,11,25,50,20,4,253,0,32,0,96, + 0,64,0,64,0,192,0,128,1,128,1,0,3,0,2,0, + 2,0,6,0,4,0,12,0,8,0,8,0,24,0,16,0, + 48,0,32,0,96,0,64,0,64,0,192,0,128,0,11,20, + 40,20,4,0,31,0,49,128,96,192,64,64,64,64,128,32, + 128,32,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 192,96,64,64,64,64,96,192,49,128,31,0,11,20,40,20, + 4,0,12,0,60,0,228,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,13,20,40,20,3,0, + 15,192,48,96,96,16,64,16,64,16,0,16,0,48,0,32, + 0,96,0,192,1,128,3,0,6,0,12,0,24,0,48,0, + 96,0,192,0,128,8,255,248,13,20,40,20,3,0,15,128, + 56,224,96,48,0,16,0,16,0,16,0,16,0,32,0,64, + 7,128,0,96,0,16,0,8,0,8,0,8,0,8,0,24, + 192,48,112,224,31,128,13,20,40,20,3,0,0,192,1,64, + 1,64,2,64,6,64,4,64,8,64,24,64,16,64,32,64, + 96,64,64,64,128,64,255,248,0,64,0,64,0,64,0,64, + 0,64,3,248,13,20,40,20,3,0,63,240,32,0,32,0, + 32,0,32,0,32,0,32,0,39,128,60,224,32,48,0,16, + 0,24,0,8,0,8,0,8,0,24,192,16,96,48,56,224, + 15,128,12,20,40,20,4,0,7,192,28,32,48,0,32,0, + 96,0,64,0,192,0,143,128,184,224,160,32,192,48,192,16, + 192,16,192,16,192,16,64,16,96,48,32,32,56,224,15,128, + 11,20,40,20,4,0,255,224,128,32,128,32,0,96,0,64, + 0,64,0,192,0,128,0,128,1,128,1,0,1,0,3,0, + 2,0,2,0,2,0,6,0,4,0,4,0,4,0,11,20, + 40,20,4,0,31,0,96,192,64,64,192,96,128,32,128,32, + 192,96,64,64,49,128,31,0,113,192,64,64,192,96,128,32, + 128,32,128,32,192,96,64,64,113,192,31,0,12,20,40,20, + 4,0,31,0,112,192,64,96,192,32,128,48,128,48,128,48, + 128,48,192,80,64,208,115,144,30,16,0,32,0,32,0,32, + 0,64,0,192,1,128,14,0,120,0,5,14,14,20,7,0, + 112,248,248,112,0,0,0,0,0,0,112,248,248,112,7,18, + 18,20,5,252,28,62,62,28,0,0,0,0,0,60,60,120, + 112,112,224,192,192,128,15,17,34,20,2,1,0,2,0,14, + 0,56,0,224,3,128,6,0,28,0,112,0,192,0,112,0, + 28,0,6,0,3,128,0,224,0,56,0,14,0,2,15,6, + 12,20,2,6,255,254,0,0,0,0,0,0,0,0,255,254, + 15,17,34,20,2,1,128,0,224,0,56,0,14,0,3,128, + 0,192,0,112,0,28,0,6,0,28,0,112,0,192,3,128, + 14,0,56,0,224,0,128,0,11,19,38,20,4,0,63,0, + 225,192,128,64,128,64,0,96,0,32,0,96,0,64,1,192, + 7,0,4,0,4,0,4,0,0,0,0,0,0,0,14,0, + 31,0,14,0,12,23,46,20,3,254,15,128,24,192,48,64, + 96,96,64,32,192,32,128,32,128,224,131,160,134,32,132,32, + 132,32,132,32,134,32,131,32,129,240,128,0,192,0,64,0, + 96,0,48,0,24,224,15,128,19,19,57,20,0,0,31,224, + 0,0,160,0,0,160,0,1,16,0,1,16,0,1,16,0, + 2,8,0,2,8,0,2,8,0,4,4,0,4,4,0,4, + 4,0,15,254,0,8,2,0,8,2,0,16,1,0,16,1, + 0,48,1,128,254,15,224,16,19,38,20,1,0,255,240,16, + 12,16,4,16,6,16,2,16,2,16,6,16,4,16,12,31, + 248,16,6,16,2,16,3,16,1,16,1,16,3,16,2,16, + 6,255,248,14,19,38,20,2,0,7,196,28,116,32,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 0,128,0,192,0,64,0,96,4,32,28,28,112,7,192,15, + 19,38,20,1,0,255,192,32,112,32,24,32,12,32,4,32, + 6,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 6,32,4,32,12,32,24,32,112,255,192,15,19,38,20,1, + 0,255,252,16,4,16,4,16,4,16,4,16,68,16,64,16, + 64,31,192,16,64,16,64,16,64,16,0,16,2,16,2,16, + 2,16,2,16,2,255,254,15,19,38,20,1,0,255,254,16, + 2,16,2,16,2,16,2,16,66,16,64,16,64,31,192,16, + 64,16,64,16,64,16,0,16,0,16,0,16,0,16,0,16, + 0,255,128,15,19,38,20,2,0,7,196,28,116,48,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 254,128,4,192,4,64,4,96,4,48,4,28,28,7,240,15, + 19,38,20,2,0,252,126,32,8,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,63,248,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,32,8,252,126,11,19,38,20,4, + 0,255,224,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,255,224,15,19,38,20,3,0,15,254,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,32,128,32,128,32,128,32,128,32,192,96,64,64,97, + 192,31,0,17,19,57,20,1,0,254,31,128,16,4,0,16, + 12,0,16,8,0,16,16,0,16,48,0,16,64,0,16,192, + 0,19,128,0,28,192,0,16,32,0,16,48,0,16,16,0, + 16,24,0,16,8,0,16,8,0,16,12,0,16,4,0,254, + 7,128,15,19,38,20,2,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,2,8,2,8,2,8,2,8,2,8,2,255,254,19,19, + 57,20,0,0,248,3,224,40,2,128,40,2,128,36,4,128, + 36,4,128,34,8,128,34,8,128,33,16,128,33,16,128,33, + 16,128,32,160,128,32,160,128,32,64,128,32,64,128,32,0, + 128,32,0,128,32,0,128,32,0,128,254,7,224,18,19,57, + 20,0,0,248,31,192,28,1,0,20,1,0,18,1,0,18, + 1,0,17,1,0,16,129,0,16,129,0,16,65,0,16,65, + 0,16,33,0,16,33,0,16,17,0,16,17,0,16,9,0, + 16,9,0,16,5,0,16,7,0,127,3,0,15,19,38,20, + 2,0,7,192,24,48,48,24,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,48,24,24,48,7,192,15,19,38,20,1,0,255,224, + 16,56,16,4,16,6,16,2,16,2,16,2,16,6,16,4, + 16,56,31,224,16,0,16,0,16,0,16,0,16,0,16,0, + 16,0,255,192,15,22,44,20,2,253,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,12,96,7,192, + 2,0,15,198,24,124,18,19,57,20,1,0,255,224,0,16, + 56,0,16,4,0,16,6,0,16,2,0,16,2,0,16,6, + 0,16,4,0,16,24,0,31,224,0,16,96,0,16,48,0, + 16,24,0,16,12,0,16,4,0,16,6,0,16,2,0,16, + 3,0,254,1,192,12,19,38,20,3,0,15,144,56,208,96, + 48,64,48,64,16,64,16,64,0,96,0,56,0,15,0,1, + 192,0,96,0,48,128,16,128,16,192,16,224,48,184,224,143, + 128,15,19,38,20,2,0,255,254,129,2,129,2,129,2,129, + 2,129,2,129,2,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,63,248,17,19,57, + 20,1,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,19,19,57,20, + 0,0,254,15,224,48,1,128,16,1,0,16,1,0,24,3, + 0,8,2,0,8,2,0,12,6,0,4,4,0,4,4,0, + 6,12,0,2,8,0,3,24,0,1,16,0,1,16,0,0, + 160,0,0,160,0,0,224,0,0,64,0,17,19,57,20,1, + 0,252,31,128,64,1,0,64,1,0,64,1,0,64,1,0, + 97,195,0,33,66,0,33,66,0,34,34,0,34,34,0,34, + 34,0,34,34,0,38,50,0,36,18,0,52,22,0,20,20, + 0,20,20,0,24,12,0,24,12,0,17,19,57,20,1,0, + 124,31,0,48,6,0,16,4,0,24,12,0,8,8,0,4, + 16,0,2,32,0,3,96,0,1,192,0,0,128,0,1,192, + 0,2,32,0,4,16,0,12,24,0,8,8,0,16,4,0, + 48,6,0,96,3,0,252,31,128,15,19,38,20,2,0,248, + 62,96,12,48,24,16,16,24,48,8,32,4,64,6,192,2, + 128,3,128,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,31,240,13,19,38,20,3,0,127,240,64,16,64, + 48,64,32,64,96,64,192,0,128,1,128,3,0,6,0,4, + 0,12,0,24,8,16,8,48,8,96,8,64,8,192,8,255, + 248,5,24,24,20,9,252,248,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,248,11, + 25,50,20,4,253,128,0,192,0,64,0,64,0,96,0,32, + 0,48,0,16,0,24,0,8,0,8,0,12,0,4,0,6, + 0,2,0,2,0,3,0,1,0,1,128,0,128,0,192,0, + 64,0,64,0,96,0,32,5,24,24,20,5,252,248,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,248,11,9,18,20,4,12,4,0,14,0,27, + 0,17,0,49,128,96,192,64,64,192,96,128,32,19,1,3, + 20,0,250,255,255,224,6,5,5,20,4,17,192,96,48,24, + 12,15,14,28,20,2,0,15,128,56,224,0,32,0,48,0, + 16,0,16,31,240,112,48,192,16,128,16,128,16,128,48,192, + 240,127,158,17,20,60,20,0,0,240,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,17,248,0,23,14, + 0,20,3,0,24,1,0,24,1,128,16,0,128,16,0,128, + 16,0,128,16,0,128,24,1,128,24,1,0,20,3,0,23, + 14,0,241,248,0,14,14,28,20,3,0,15,136,56,248,96, + 24,64,8,192,8,128,0,128,0,128,0,128,0,192,0,64, + 12,96,24,56,224,15,128,17,20,60,20,2,0,0,60,0, + 0,4,0,0,4,0,0,4,0,0,4,0,0,4,0,15, + 196,0,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,199,128,14,14,28,20,2,0,15, + 192,56,112,96,24,64,8,192,12,128,4,255,252,128,0,128, + 0,192,0,64,0,96,12,56,56,15,224,13,20,40,20,3, + 0,3,224,6,24,4,0,12,0,8,0,8,0,255,240,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,255,240,17,20,60,20,2,250,15, + 199,128,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,196,0,0,4,0,0,4,0,0, + 12,0,0,8,0,0,56,0,15,224,0,16,20,40,20,1, + 0,240,0,16,0,16,0,16,0,16,0,16,0,17,224,23, + 56,20,8,24,12,24,4,16,4,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,124,31,13,20,40,20,3,0,6, + 0,6,0,6,0,0,0,0,0,0,0,126,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,255,248,10,26,52,20,4,250,1,128,1, + 128,1,128,0,0,0,0,0,0,255,192,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,192,0,128,3,128,254, + 0,15,20,40,20,2,0,240,0,16,0,16,0,16,0,16, + 0,16,0,16,252,16,48,16,96,16,192,17,128,19,0,30, + 0,19,0,17,128,16,192,16,96,16,48,16,24,240,62,13, + 20,40,20,3,0,126,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,248,19,14,42, + 20,0,0,231,14,0,41,147,0,48,225,128,48,96,128,32, + 64,128,32,64,128,32,64,128,32,64,128,32,64,128,32,64, + 128,32,64,128,32,64,128,32,64,128,248,112,224,15,14,28, + 20,2,0,227,192,46,112,40,16,48,24,48,8,32,8,32, + 8,32,8,32,8,32,8,32,8,32,8,32,8,248,62,15, + 14,28,20,2,0,15,224,56,56,96,12,64,4,192,6,128, + 2,128,2,128,2,128,2,192,6,64,4,96,12,56,56,15, + 224,17,20,60,20,0,250,1,248,0,247,14,0,20,3,0, + 24,1,0,24,1,128,16,0,128,16,0,128,16,0,128,16, + 0,128,24,1,128,24,1,0,20,3,0,23,14,0,17,248, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 255,0,0,17,20,60,20,2,250,15,192,0,56,119,128,96, + 28,0,64,12,0,192,12,0,128,4,0,128,4,0,128,4, + 0,128,4,0,192,12,0,64,12,0,96,28,0,56,116,0, + 15,196,0,0,4,0,0,4,0,0,4,0,0,4,0,0, + 4,0,0,127,128,15,14,28,20,3,0,120,124,9,198,11, + 0,12,0,12,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,240,13,14,28,20,3,0,15,144,56, + 240,96,48,64,16,96,0,56,0,15,128,0,224,0,48,128, + 24,128,24,192,48,248,224,143,128,14,19,38,20,2,0,16, + 0,16,0,16,0,16,0,16,0,255,240,16,0,16,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,24, + 12,12,56,7,224,16,14,28,20,1,0,240,60,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,16,4,16,4,16, + 12,24,12,12,52,7,231,17,14,42,20,1,0,252,31,128, + 48,6,0,16,4,0,16,4,0,24,12,0,8,8,0,12, + 24,0,4,16,0,4,16,0,6,48,0,2,32,0,3,96, + 0,1,64,0,1,192,0,17,14,42,20,1,0,248,15,128, + 96,3,0,32,2,0,32,2,0,33,194,0,33,66,0,49, + 70,0,19,100,0,18,36,0,18,36,0,22,52,0,28,28, + 0,8,8,0,8,8,0,15,14,28,20,2,0,248,62,96, + 12,48,24,24,48,12,96,6,192,3,128,3,128,6,192,12, + 96,24,48,48,24,96,12,248,62,15,20,40,20,2,250,248, + 62,64,4,96,12,32,8,48,24,16,16,24,48,8,32,12, + 96,4,64,6,192,2,128,3,128,1,0,3,0,2,0,2, + 0,6,0,4,0,255,128,11,14,28,20,4,0,255,224,128, + 96,128,192,129,128,3,0,6,0,4,0,12,0,24,0,48, + 0,96,32,64,32,192,32,255,224,7,25,25,20,6,252,6, + 12,24,16,16,16,16,16,16,16,16,48,96,224,48,16,16, + 16,16,16,16,16,16,24,14,1,25,25,20,9,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,7,25,25,20,6,252,192,96,48, + 16,16,16,16,16,16,16,16,24,12,14,24,16,16,16,16, + 16,16,16,16,48,224,13,5,10,20,3,7,24,0,124,8, + 199,24,129,176,0,224,255}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 3, '1' Height: 11 + Calculated Max Values w=16 h=17 x= 7 y= 6 dx=19 dy= 0 ascent=17 len=34 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 1 + X Font ascent =12 descent= 0 + Max Font ascent =17 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[3981] U8G_SECTION(".progmem.u8g_font_cu12_67_75") = { + 0,40,30,247,246,3,2,98,5,14,32,255,1,17,254,12, + 0,11,5,10,12,1,4,2,128,1,64,255,224,1,64,2, + 128,5,11,11,6,1,1,32,32,32,32,32,32,168,112,168, + 112,32,11,5,10,12,1,4,32,96,65,128,255,0,65,128, + 32,96,11,5,10,12,1,4,192,128,48,64,31,224,48,64, + 192,128,11,7,14,12,1,3,0,32,32,32,64,32,255,224, + 64,32,32,32,0,32,7,11,11,8,1,1,16,56,84,16, + 16,16,16,16,16,16,254,11,7,14,12,1,3,128,0,128, + 128,128,64,255,224,128,64,128,128,128,0,7,11,11,8,1, + 1,254,16,16,16,16,16,16,16,84,56,16,7,11,11,8, + 1,1,16,56,84,16,16,16,16,16,84,56,254,11,7,14, + 12,1,4,1,192,0,32,32,32,64,32,255,192,64,0,32, + 0,11,7,14,12,1,4,112,0,128,0,128,128,128,64,127, + 224,0,64,0,128,11,7,14,12,1,4,1,192,2,32,34, + 32,66,32,255,192,66,0,34,0,11,7,14,12,1,4,112, + 0,136,0,136,128,136,64,127,224,8,64,8,128,12,5,10, + 13,1,4,38,64,73,32,233,112,80,160,32,64,12,5,10, + 13,1,4,33,64,66,32,255,240,68,32,40,64,4,11,11, + 5,1,1,16,16,32,64,176,208,32,160,160,192,240,6,11, + 11,7,1,1,32,64,252,68,36,4,4,4,4,4,4,6, + 11,11,7,1,1,16,8,252,136,144,128,128,128,128,128,128, + 6,11,11,7,1,1,4,4,4,4,4,4,36,68,252,64, + 32,6,11,11,7,1,1,128,128,128,128,128,128,144,136,252, + 8,16,8,6,6,9,1,2,252,4,4,21,14,4,6,8, + 8,7,1,1,4,4,4,36,68,252,64,32,11,8,16,11, + 1,1,15,128,16,64,32,32,32,32,32,32,168,32,112,0, + 32,0,11,8,16,11,1,1,62,0,65,0,128,128,128,128, + 128,128,130,160,1,192,0,128,9,11,22,10,1,1,255,128, + 0,0,240,0,192,0,160,0,144,0,8,0,4,0,2,0, + 1,0,0,128,12,13,26,13,1,0,128,0,144,0,160,0, + 255,240,160,0,144,0,128,16,0,144,0,80,255,240,0,80, + 0,144,0,16,10,7,14,11,1,2,3,192,67,0,130,128, + 130,128,128,128,65,0,62,0,10,7,14,11,1,2,240,0, + 48,128,80,64,80,64,64,64,32,128,31,0,11,3,6,12, + 1,6,32,0,64,0,255,224,11,3,6,12,1,6,255,224, + 64,0,32,0,3,11,11,4,1,1,128,192,160,128,128,128, + 128,128,128,128,128,3,11,11,4,1,1,32,96,160,32,32, + 32,32,32,32,32,32,11,3,6,12,1,6,0,128,0,64, + 255,224,11,3,6,12,1,6,255,224,0,64,0,128,3,11, + 11,4,1,1,128,128,128,128,128,128,128,128,160,192,128,3, + 11,11,4,1,1,32,32,32,32,32,32,32,32,160,96,32, + 11,11,22,12,1,1,0,128,0,64,255,224,0,64,0,128, + 0,0,32,0,64,0,255,224,64,0,32,0,11,11,22,12, + 1,1,32,128,112,128,168,128,32,128,32,128,32,128,32,128, + 32,128,34,160,33,192,32,128,11,11,22,12,1,1,32,0, + 64,0,255,224,64,0,32,0,0,0,0,128,0,64,255,224, + 0,64,0,128,11,11,22,12,1,1,32,0,64,0,255,224, + 64,0,32,0,0,0,32,0,64,0,255,224,64,0,32,0, + 11,11,22,12,1,1,32,128,113,192,170,160,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,11,11,22,12, + 1,1,0,128,0,64,255,224,0,64,0,128,0,0,0,128, + 0,64,255,224,0,64,0,128,11,11,22,12,1,1,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,32,128,170,160, + 113,192,32,128,11,8,16,12,1,3,32,0,64,0,255,224, + 0,0,0,0,255,224,0,64,0,128,11,8,16,12,1,3, + 0,128,0,64,255,224,0,0,0,0,255,224,64,0,32,0, + 11,7,14,12,1,3,16,128,32,128,127,224,129,0,127,224, + 34,0,18,0,13,7,14,14,1,3,17,64,33,32,127,240, + 130,8,127,240,36,32,20,64,11,7,14,12,1,3,9,0, + 8,128,255,192,16,32,255,192,32,128,33,0,11,7,14,12, + 1,3,16,0,32,0,127,224,128,0,127,224,32,0,16,0, + 7,11,11,8,1,1,16,40,108,170,40,40,40,40,40,40, + 40,11,7,14,12,1,3,1,0,0,128,255,192,0,32,255, + 192,0,128,1,0,7,11,11,8,1,1,40,40,40,40,40, + 40,40,170,108,40,16,12,7,14,12,1,3,16,128,32,64, + 127,224,128,16,127,224,32,64,16,128,7,12,12,8,1,0, + 16,40,108,170,40,40,40,40,170,108,40,16,10,10,20,11, + 1,1,248,0,144,0,136,0,196,0,162,0,17,0,8,128, + 4,64,2,0,1,0,10,10,20,11,1,1,7,192,2,64, + 4,64,8,192,17,64,34,0,68,0,136,0,16,0,32,0, + 10,10,20,11,1,1,32,0,16,0,136,0,68,0,34,0, + 17,64,8,192,4,64,2,64,7,192,10,10,20,11,1,1, + 1,0,2,0,4,64,8,128,17,0,162,0,196,0,136,0, + 144,0,248,0,11,7,14,12,1,3,16,0,63,224,64,0, + 255,224,64,0,63,224,16,0,11,7,14,12,1,3,1,0, + 255,128,0,64,255,224,0,64,255,128,1,0,12,5,10,13, + 1,4,32,0,72,128,245,80,66,32,32,0,12,5,10,13, + 1,4,0,64,17,32,170,240,68,32,0,64,5,11,11,6, + 1,1,32,112,168,32,32,248,32,248,32,32,32,5,11,11, + 6,1,1,32,32,32,248,32,248,32,32,168,112,32,11,5, + 10,12,1,4,32,0,64,0,238,224,64,0,32,0,5,11, + 11,6,1,1,32,112,168,0,32,32,32,0,32,32,32,11, + 5,10,12,1,4,0,128,0,64,238,224,0,64,0,128,5, + 11,11,6,1,1,32,32,32,0,32,32,32,0,168,112,32, + 12,7,14,13,1,3,128,0,144,0,160,0,255,240,160,0, + 144,0,128,0,12,7,14,13,1,3,0,16,0,144,0,80, + 255,240,0,80,0,144,0,16,12,9,18,13,1,2,8,0, + 24,0,47,240,64,16,128,16,64,16,47,240,24,0,8,0, + 9,12,24,10,1,1,8,0,20,0,34,0,65,0,227,128, + 34,0,34,0,34,0,34,0,34,0,34,0,62,0,12,9, + 18,13,1,2,1,0,1,128,255,64,128,32,128,16,128,32, + 255,64,1,128,1,0,9,12,24,10,1,1,62,0,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,65,0,34,0, + 20,0,8,0,9,17,34,10,1,0,8,0,20,0,34,0, + 65,0,227,128,34,0,34,0,34,0,34,0,34,0,34,0, + 62,0,0,0,62,0,34,0,34,0,62,0,9,14,28,10, + 1,0,8,0,20,0,34,0,65,0,227,128,34,0,34,0, + 34,0,34,0,34,0,34,0,227,128,128,128,255,128,9,14, + 28,10,1,0,8,0,20,0,62,0,65,0,227,128,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,128,128,255,128, + 9,14,28,10,1,0,8,0,28,0,42,0,73,0,235,128, + 42,0,42,0,42,0,42,0,42,0,42,0,235,128,136,128, + 255,128,9,15,30,10,1,2,8,0,20,0,34,0,73,0, + 213,128,34,0,65,0,227,128,34,0,34,0,34,0,34,0, + 34,0,34,0,62,0,9,17,34,10,1,0,8,0,20,0, + 34,0,73,0,213,128,34,0,65,0,227,128,34,0,34,0, + 34,0,34,0,34,0,34,0,227,128,128,128,255,128,14,9, + 18,16,2,2,224,64,160,96,191,208,128,24,128,20,128,24, + 191,208,160,96,224,64,11,11,22,12,1,1,255,224,128,0, + 188,0,176,0,168,0,164,0,130,0,129,0,128,128,128,64, + 128,32,11,11,22,12,1,1,128,32,64,32,32,32,16,32, + 8,32,4,160,2,160,1,160,7,160,0,32,255,224,9,16, + 32,10,1,0,8,0,20,0,34,0,65,0,227,128,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,65,0,34,0, + 20,0,8,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 11,11,22,14,2,1,255,224,255,224,255,224,255,224,255,224, + 255,224,255,224,255,224,255,224,255,224,255,224,11,11,22,14, + 2,1,255,224,128,32,128,32,128,32,128,32,128,32,128,32, + 128,32,128,32,128,32,255,224,11,11,22,14,2,1,63,128, + 64,64,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 64,64,63,128,11,11,22,14,2,1,255,224,128,32,191,160, + 191,160,191,160,191,160,191,160,191,160,191,160,128,32,255,224, + 11,11,22,14,2,1,255,224,128,32,255,224,128,32,255,224, + 128,32,255,224,128,32,255,224,128,32,255,224,11,11,22,14, + 2,1,255,224,170,160,170,160,170,160,170,160,170,160,170,160, + 170,160,170,160,170,160,255,224,11,11,22,14,2,1,255,224, + 170,160,255,224,170,160,255,224,170,160,255,224,170,160,255,224, + 170,160,255,224,11,11,22,14,2,1,255,224,201,32,164,160, + 146,96,201,32,164,160,146,96,201,32,164,160,146,96,255,224, + 11,11,22,14,2,1,255,224,146,96,164,160,201,32,146,96, + 164,160,201,32,146,96,164,160,201,32,255,224,11,11,22,14, + 2,1,255,224,213,96,170,160,213,96,170,160,213,96,170,160, + 213,96,170,160,213,96,255,224,7,7,7,12,3,3,254,254, + 254,254,254,254,254,7,7,7,12,3,3,254,130,130,130,130, + 130,254,13,6,12,16,2,3,255,248,255,248,255,248,255,248, + 255,248,255,248,13,6,12,16,2,3,255,248,128,8,128,8, + 128,8,128,8,255,248,6,13,13,9,2,254,252,252,252,252, + 252,252,252,252,252,252,252,252,252,6,13,13,9,2,254,252, + 132,132,132,132,132,132,132,132,132,132,132,252,16,6,12,19, + 2,3,31,255,63,254,63,254,127,252,127,252,255,248,16,6, + 12,19,2,3,31,255,32,2,32,2,64,4,64,4,255,248, + 11,12,24,14,2,1,4,0,4,0,14,0,14,0,31,0, + 31,0,63,128,63,128,127,192,127,192,255,224,255,224,11,12, + 24,14,2,1,4,0,4,0,10,0,10,0,17,0,17,0, + 32,128,32,128,64,64,64,64,128,32,255,224,7,8,8,12, + 3,1,16,16,56,56,124,124,254,254,7,8,8,12,3,1, + 16,16,40,40,68,68,130,254,12,11,22,15,2,1,192,0, + 240,0,252,0,255,0,255,192,255,240,255,192,255,0,252,0, + 240,0,192,0,12,11,22,15,2,1,192,0,176,0,140,0, + 131,0,128,192,128,48,128,192,131,0,140,0,176,0,192,0, + 8,7,7,13,3,1,192,240,252,255,252,240,192,8,7,7, + 13,3,1,192,176,140,131,140,176,192,12,7,14,15,2,1, + 192,0,252,0,255,192,255,240,255,192,252,0,192,0,12,7, + 14,15,2,1,192,0,188,0,131,192,128,48,131,192,188,0, + 192,0,11,12,24,14,2,1,255,224,255,224,127,192,127,192, + 63,128,63,128,31,0,31,0,14,0,14,0,4,0,4,0, + 11,12,24,14,2,1,255,224,128,32,64,64,64,64,32,128, + 32,128,17,0,17,0,10,0,10,0,4,0,4,0,7,8, + 8,12,3,1,254,254,124,124,56,56,16,16,7,8,8,12, + 3,1,254,130,68,68,40,40,16,16,12,11,22,15,2,1, + 0,48,0,240,3,240,15,240,63,240,255,240,63,240,15,240, + 3,240,0,240,0,48,12,11,22,15,2,1,0,48,0,208, + 3,16,12,16,48,16,192,16,48,16,12,16,3,16,0,208, + 0,48,8,7,7,13,3,1,3,15,63,255,63,15,3,8, + 7,7,13,3,1,3,13,49,193,49,13,3,12,7,14,15, + 2,1,0,48,3,240,63,240,255,240,63,240,3,240,0,48, + 12,7,14,15,2,1,0,48,3,208,60,16,192,16,60,16, + 3,208,0,48,11,11,22,14,2,1,4,0,14,0,31,0, + 63,128,127,192,255,224,127,192,63,128,31,0,14,0,4,0, + 11,11,22,14,2,1,4,0,10,0,17,0,32,128,64,64, + 128,32,64,64,32,128,17,0,10,0,4,0,11,11,22,14, + 2,1,4,0,10,0,17,0,36,128,78,64,159,32,78,64, + 36,128,17,0,10,0,4,0,11,11,22,14,2,1,31,0, + 96,192,64,64,142,32,159,32,159,32,159,32,142,32,64,64, + 96,192,31,0,7,12,12,8,1,0,16,40,40,68,68,130, + 130,68,68,40,40,16,11,11,22,14,2,1,31,0,96,192, + 64,64,128,32,128,32,128,32,128,32,128,32,64,64,96,192, + 31,0,11,11,22,14,2,1,14,0,32,128,64,64,0,0, + 128,32,128,32,128,32,0,0,64,64,32,128,14,0,11,11, + 22,14,2,1,31,0,106,192,106,192,170,160,170,160,170,160, + 170,160,170,160,106,192,106,192,31,0,11,11,22,14,2,1, + 31,0,96,192,64,64,142,32,145,32,145,32,145,32,142,32, + 64,64,96,192,31,0,11,11,22,14,2,1,31,0,127,192, + 127,192,255,224,255,224,255,224,255,224,255,224,127,192,127,192, + 31,0,11,11,22,14,2,1,31,0,120,192,120,64,248,32, + 248,32,248,32,248,32,248,32,120,64,120,192,31,0,11,11, + 22,14,2,1,31,0,99,192,67,192,131,224,131,224,131,224, + 131,224,131,224,67,192,99,192,31,0,11,11,22,14,2,1, + 31,0,127,192,127,192,255,224,255,224,128,32,128,32,128,32, + 64,64,96,192,31,0,11,11,22,14,2,1,31,0,96,192, + 64,64,128,32,128,32,128,32,255,224,255,224,127,192,127,192, + 31,0,11,11,22,14,2,1,31,0,103,192,71,192,135,224, + 135,224,135,224,128,32,128,32,64,64,96,192,31,0,11,11, + 22,14,2,1,31,0,99,192,67,192,131,224,131,224,131,224, + 255,224,255,224,127,192,127,192,31,0,6,11,11,8,2,1, + 28,124,124,252,252,252,252,252,124,124,28,6,11,11,9,2, + 1,224,248,248,252,252,252,252,252,248,248,224,7,12,12,10, + 2,1,254,254,254,254,254,198,130,130,130,198,254,254,13,13, + 26,16,2,0,255,248,240,120,207,152,223,216,191,232,191,232, + 191,232,191,232,191,232,223,216,207,152,240,120,255,248,13,7, + 14,16,2,6,255,248,240,120,207,152,223,216,191,232,191,232, + 191,232,13,7,14,16,2,0,191,232,191,232,191,232,223,216, + 207,152,240,120,255,248,6,6,6,8,2,6,28,96,64,128, + 128,128,6,6,6,13,7,6,224,24,8,4,4,4,6,6, + 6,13,7,1,4,4,4,8,24,224,6,6,6,8,2,1, + 128,128,128,64,96,28,11,6,12,14,2,6,31,0,96,192, + 64,64,128,32,128,32,128,32,11,6,12,14,2,1,128,32, + 128,32,128,32,64,64,96,192,31,0,12,12,24,15,2,1, + 0,16,0,48,0,112,0,240,1,240,3,240,7,240,15,240, + 31,240,63,240,127,240,255,240,12,12,24,15,2,1,128,0, + 192,0,224,0,240,0,248,0,252,0,254,0,255,0,255,128, + 255,192,255,224,255,240,12,12,24,15,2,1,255,240,255,224, + 255,192,255,128,255,0,254,0,252,0,248,0,240,0,224,0, + 192,0,128,0,12,12,24,15,2,1,255,240,127,240,63,240, + 31,240,15,240,7,240,3,240,1,240,0,240,0,112,0,48, + 0,16,7,7,7,8,1,2,56,68,130,130,130,68,56,11, + 11,22,14,2,1,255,224,248,32,248,32,248,32,248,32,248, + 32,248,32,248,32,248,32,248,32,255,224,11,11,22,14,2, + 1,255,224,131,224,131,224,131,224,131,224,131,224,131,224,131, + 224,131,224,131,224,255,224,11,11,22,14,2,1,255,224,255, + 224,255,160,255,32,254,32,252,32,248,32,240,32,224,32,192, + 32,255,224,11,11,22,14,2,1,255,224,128,96,128,224,129, + 224,131,224,135,224,143,224,159,224,191,224,255,224,255,224,11, + 11,22,14,2,1,255,224,132,32,132,32,132,32,132,32,132, + 32,132,32,132,32,132,32,132,32,255,224,11,12,24,14,2, + 1,4,0,4,0,10,0,10,0,17,0,17,0,32,128,36, + 128,78,64,68,64,128,32,255,224,11,12,24,14,2,1,4, + 0,4,0,14,0,14,0,29,0,29,0,60,128,60,128,124, + 64,124,64,252,32,255,224,11,12,24,14,2,1,4,0,4, + 0,14,0,14,0,23,0,23,0,39,128,39,128,71,192,71, + 192,135,224,255,224,13,13,26,16,2,0,31,192,32,32,64, + 16,128,8,128,8,128,8,128,8,128,8,128,8,128,8,64, + 16,32,32,31,192,11,11,22,14,2,1,255,224,132,32,132, + 32,132,32,132,32,252,32,128,32,128,32,128,32,128,32,255, + 224,11,11,22,14,2,1,255,224,128,32,128,32,128,32,128, + 32,252,32,132,32,132,32,132,32,132,32,255,224,11,11,22, + 14,2,1,255,224,128,32,128,32,128,32,128,32,135,224,132, + 32,132,32,132,32,132,32,255,224,11,11,22,14,2,1,255, + 224,132,32,132,32,132,32,132,32,135,224,128,32,128,32,128, + 32,128,32,255,224,11,11,22,14,2,1,31,0,100,192,68, + 64,132,32,132,32,252,32,128,32,128,32,64,64,96,192,31, + 0,11,11,22,14,2,1,31,0,96,192,64,64,128,32,128, + 32,252,32,132,32,132,32,68,64,100,192,31,0,11,11,22, + 14,2,1,31,0,96,192,64,64,128,32,128,32,135,224,132, + 32,132,32,68,64,100,192,31,0,11,11,22,14,2,1,31, + 0,100,192,68,64,132,32,132,32,135,224,128,32,128,32,64, + 64,96,192,31,0,255,255,255,255,255,255,255,255}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 11, '1' Height: 6 + Calculated Max Values w=16 h=13 x= 3 y= 3 dx=19 dy= 0 ascent=13 len=24 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =13 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12_75r[1123] U8G_SECTION(".progmem.u8g_font_cu12_75r") = { + 0,40,30,247,246,11,2,247,0,0,32,79,0,13,254,12, + 0,11,11,22,14,2,1,255,224,255,224,255,224,255,224,255, + 224,255,224,255,224,255,224,255,224,255,224,255,224,11,11,22, + 14,2,1,255,224,128,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,32,255,224,11,11,22,14,2,1,63, + 128,64,64,128,32,128,32,128,32,128,32,128,32,128,32,128, + 32,64,64,63,128,11,11,22,14,2,1,255,224,128,32,191, + 160,191,160,191,160,191,160,191,160,191,160,191,160,128,32,255, + 224,11,11,22,14,2,1,255,224,128,32,255,224,128,32,255, + 224,128,32,255,224,128,32,255,224,128,32,255,224,11,11,22, + 14,2,1,255,224,170,160,170,160,170,160,170,160,170,160,170, + 160,170,160,170,160,170,160,255,224,11,11,22,14,2,1,255, + 224,170,160,255,224,170,160,255,224,170,160,255,224,170,160,255, + 224,170,160,255,224,11,11,22,14,2,1,255,224,201,32,164, + 160,146,96,201,32,164,160,146,96,201,32,164,160,146,96,255, + 224,11,11,22,14,2,1,255,224,146,96,164,160,201,32,146, + 96,164,160,201,32,146,96,164,160,201,32,255,224,11,11,22, + 14,2,1,255,224,213,96,170,160,213,96,170,160,213,96,170, + 160,213,96,170,160,213,96,255,224,7,7,7,12,3,3,254, + 254,254,254,254,254,254,7,7,7,12,3,3,254,130,130,130, + 130,130,254,13,6,12,16,2,3,255,248,255,248,255,248,255, + 248,255,248,255,248,13,6,12,16,2,3,255,248,128,8,128, + 8,128,8,128,8,255,248,6,13,13,9,2,254,252,252,252, + 252,252,252,252,252,252,252,252,252,252,6,13,13,9,2,254, + 252,132,132,132,132,132,132,132,132,132,132,132,252,16,6,12, + 19,2,3,31,255,63,254,63,254,127,252,127,252,255,248,16, + 6,12,19,2,3,31,255,32,2,32,2,64,4,64,4,255, + 248,11,12,24,14,2,1,4,0,4,0,14,0,14,0,31, + 0,31,0,63,128,63,128,127,192,127,192,255,224,255,224,11, + 12,24,14,2,1,4,0,4,0,10,0,10,0,17,0,17, + 0,32,128,32,128,64,64,64,64,128,32,255,224,7,8,8, + 12,3,1,16,16,56,56,124,124,254,254,7,8,8,12,3, + 1,16,16,40,40,68,68,130,254,12,11,22,15,2,1,192, + 0,240,0,252,0,255,0,255,192,255,240,255,192,255,0,252, + 0,240,0,192,0,12,11,22,15,2,1,192,0,176,0,140, + 0,131,0,128,192,128,48,128,192,131,0,140,0,176,0,192, + 0,8,7,7,13,3,1,192,240,252,255,252,240,192,8,7, + 7,13,3,1,192,176,140,131,140,176,192,12,7,14,15,2, + 1,192,0,252,0,255,192,255,240,255,192,252,0,192,0,12, + 7,14,15,2,1,192,0,188,0,131,192,128,48,131,192,188, + 0,192,0,11,12,24,14,2,1,255,224,255,224,127,192,127, + 192,63,128,63,128,31,0,31,0,14,0,14,0,4,0,4, + 0,11,12,24,14,2,1,255,224,128,32,64,64,64,64,32, + 128,32,128,17,0,17,0,10,0,10,0,4,0,4,0,7, + 8,8,12,3,1,254,254,124,124,56,56,16,16,7,8,8, + 12,3,1,254,130,68,68,40,40,16,16,12,11,22,15,2, + 1,0,48,0,240,3,240,15,240,63,240,255,240,63,240,15, + 240,3,240,0,240,0,48,12,11,22,15,2,1,0,48,0, + 208,3,16,12,16,48,16,192,16,48,16,12,16,3,16,0, + 208,0,48,8,7,7,13,3,1,3,15,63,255,63,15,3, + 8,7,7,13,3,1,3,13,49,193,49,13,3,12,7,14, + 15,2,1,0,48,3,240,63,240,255,240,63,240,3,240,0, + 48,12,7,14,15,2,1,0,48,3,208,60,16,192,16,60, + 16,3,208,0,48,11,11,22,14,2,1,4,0,14,0,31, + 0,63,128,127,192,255,224,127,192,63,128,31,0,14,0,4, + 0,11,11,22,14,2,1,4,0,10,0,17,0,32,128,64, + 64,128,32,64,64,32,128,17,0,10,0,4,0,11,11,22, + 14,2,1,4,0,10,0,17,0,36,128,78,64,159,32,78, + 64,36,128,17,0,10,0,4,0,11,11,22,14,2,1,31, + 0,96,192,64,64,142,32,159,32,159,32,159,32,142,32,64, + 64,96,192,31,0,7,12,12,8,1,0,16,40,40,68,68, + 130,130,68,68,40,40,16,11,11,22,14,2,1,31,0,96, + 192,64,64,128,32,128,32,128,32,128,32,128,32,64,64,96, + 192,31,0,11,11,22,14,2,1,14,0,32,128,64,64,0, + 0,128,32,128,32,128,32,0,0,64,64,32,128,14,0,11, + 11,22,14,2,1,31,0,106,192,106,192,170,160,170,160,170, + 160,170,160,170,160,106,192,106,192,31,0,11,11,22,14,2, + 1,31,0,96,192,64,64,142,32,145,32,145,32,145,32,142, + 32,64,64,96,192,31,0,11,11,22,14,2,1,31,0,127, + 192,127,192,255,224,255,224,255,224,255,224,255,224,127,192,127, + 192,31,0}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 3 y=11 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12[3993] U8G_SECTION(".progmem.u8g_font_cu12") = { + 0,40,30,247,246,11,2,90,5,94,32,255,252,16,252,12, + 252,0,0,0,5,0,0,2,12,12,5,1,0,192,192,192, + 192,192,192,192,0,0,0,192,192,4,5,5,7,2,7,144, + 144,144,144,144,10,15,30,12,1,253,4,128,4,128,9,0, + 9,0,9,0,255,192,18,0,18,0,18,0,255,192,36,0, + 36,0,36,0,72,0,72,0,5,14,14,8,1,255,32,112, + 168,168,168,160,96,48,40,168,168,168,112,32,11,13,26,14, + 1,255,96,64,152,128,151,128,145,0,146,0,98,0,4,0, + 8,192,9,32,17,32,33,32,33,32,64,192,10,12,24,13, + 1,0,24,0,36,0,36,0,36,0,40,0,51,192,49,0, + 81,0,138,0,138,0,196,64,123,128,1,5,5,4,2,7, + 128,128,128,128,128,4,15,15,6,2,253,16,32,64,64,128, + 128,128,128,128,128,128,64,64,32,16,4,15,15,6,1,253, + 128,64,32,32,16,16,16,16,16,16,16,32,32,64,128,7, + 7,7,7,0,5,16,146,84,56,84,146,16,9,9,18,11, + 2,255,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,2,5,5,5,1,253,192,192,64,64,128,4, + 1,1,7,2,3,240,2,2,2,5,1,0,192,192,5,16, + 16,8,2,252,8,8,16,16,16,16,32,32,32,32,64,64, + 64,64,128,128,5,11,11,7,1,0,112,80,136,136,136,136, + 136,136,136,80,112,5,11,11,7,1,0,32,224,32,32,32, + 32,32,32,32,32,248,5,11,11,7,1,0,112,136,136,136, + 8,16,16,32,72,72,248,5,11,11,7,1,0,112,136,136, + 8,8,48,8,8,136,136,112,7,11,11,9,1,0,24,24, + 40,40,72,200,254,8,8,8,62,5,11,11,7,1,0,136, + 240,128,128,240,200,8,8,136,144,96,5,11,11,7,1,0, + 48,72,64,128,240,136,136,136,136,80,112,6,12,12,8,1, + 0,128,252,132,136,16,16,16,32,32,32,32,32,5,11,11, + 7,1,0,112,136,136,136,80,112,136,136,136,136,112,5,11, + 11,7,1,0,112,80,136,136,136,136,120,8,16,144,96,2, + 7,7,7,3,0,192,192,0,0,0,192,192,2,10,10,5, + 1,253,192,192,0,0,0,192,192,64,64,128,5,9,9,6, + 1,1,8,16,32,64,128,64,32,16,8,10,5,10,13,2, + 2,255,192,0,0,0,0,0,0,255,192,5,9,9,6,1, + 1,128,64,32,16,8,16,32,64,128,5,12,12,8,1,0, + 112,136,136,16,32,32,96,0,0,0,96,96,10,12,24,12, + 1,0,30,0,33,0,76,128,147,64,161,64,161,64,161,64, + 161,64,147,64,77,128,32,192,31,0,11,11,22,11,0,0, + 4,0,4,0,10,0,10,0,10,0,17,0,17,0,31,0, + 32,128,32,128,241,224,10,11,22,10,0,0,255,0,32,128, + 32,64,32,64,32,128,63,0,32,128,32,64,32,64,32,128, + 255,0,9,11,22,10,1,0,30,128,33,128,64,128,128,128, + 128,0,128,0,128,0,128,128,64,128,33,0,30,0,10,11, + 22,10,0,0,254,0,33,128,32,128,32,64,32,64,32,64, + 32,64,32,64,32,128,33,128,254,0,10,11,22,10,1,0, + 255,128,32,128,32,128,34,128,34,0,62,0,34,64,34,64, + 32,128,32,128,255,128,9,11,22,9,1,0,255,128,32,128, + 32,128,34,128,34,0,62,0,34,0,34,0,32,0,32,0, + 248,0,10,11,22,10,1,0,30,128,33,128,64,128,128,128, + 128,0,128,0,131,192,128,128,64,128,32,128,31,128,11,11, + 22,11,1,0,251,224,32,128,32,128,32,128,32,128,63,128, + 32,128,32,128,32,128,32,128,251,224,5,11,11,5,1,0, + 248,32,32,32,32,32,32,32,32,32,248,6,11,11,6,1, + 0,124,16,16,16,16,16,16,16,16,144,224,11,11,22,11, + 1,0,249,224,32,128,33,0,34,0,36,0,46,0,50,0, + 33,0,33,0,32,128,249,224,8,11,11,8,0,0,248,32, + 32,32,32,32,33,33,33,35,255,14,11,22,14,1,0,240, + 60,48,48,48,48,40,80,40,80,40,144,36,144,36,144,35, + 16,35,16,251,124,11,11,22,11,1,0,227,224,48,128,48, + 128,40,128,40,128,36,128,34,128,34,128,33,128,33,128,248, + 128,10,11,22,10,1,0,30,0,33,0,64,128,128,64,128, + 64,128,64,128,64,128,64,64,128,33,0,30,0,9,11,22, + 9,1,0,255,0,33,128,32,128,32,128,33,128,63,0,32, + 0,32,0,32,0,32,0,248,0,10,14,28,10,1,253,30, + 0,33,0,64,128,128,64,128,64,128,64,128,64,128,64,92, + 128,51,0,30,0,2,0,2,64,1,128,11,11,22,11,1, + 0,254,0,33,0,32,128,32,128,33,0,62,0,35,0,33, + 0,33,0,33,0,248,224,6,11,11,7,1,0,124,132,132, + 128,64,48,8,4,132,132,248,9,11,22,9,1,0,255,128, + 136,128,136,128,136,128,8,0,8,0,8,0,8,0,8,0, + 8,0,62,0,11,11,22,11,1,0,251,224,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,17,0,14,0, + 11,11,22,11,1,0,241,224,32,128,32,128,17,0,17,0, + 17,0,10,0,10,0,10,0,4,0,4,0,16,11,22,16, + 1,0,241,207,33,132,33,132,34,68,18,72,18,72,18,72, + 20,40,12,48,12,48,8,16,11,11,22,11,1,0,243,192, + 17,0,18,0,10,0,12,0,4,0,10,0,26,0,17,0, + 32,128,241,224,11,11,22,11,1,0,241,224,32,128,17,0, + 17,0,10,0,14,0,4,0,4,0,4,0,4,0,31,0, + 7,11,11,7,1,0,254,196,132,136,8,16,34,34,66,70, + 254,3,16,16,5,1,252,224,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,224,5,16,16,8,2,252,128,128,64, + 64,64,64,32,32,32,32,16,16,16,16,8,8,3,16,16, + 5,0,252,224,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,224,5,3,3,6,1,9,32,112,136,11,1,2,12, + 1,254,255,224,3,4,4,6,3,8,128,192,64,32,6,7, + 7,7,1,0,112,136,8,120,136,136,124,6,12,12,7,1, + 0,192,64,64,64,64,120,68,68,68,68,68,120,5,7,7, + 6,1,0,112,136,128,128,128,136,112,6,12,12,7,1,0, + 24,8,8,8,8,120,136,136,136,136,136,124,5,7,7,6, + 1,0,112,136,248,128,128,136,112,5,12,12,6,1,0,56, + 72,64,64,64,240,64,64,64,64,64,224,7,11,11,8,1, + 252,62,68,68,68,120,64,124,130,130,130,124,7,12,12,8, + 1,0,192,64,64,64,64,120,68,68,68,68,68,238,3,11, + 11,4,1,0,192,192,0,0,192,64,64,64,64,64,224,4, + 14,14,5,0,253,48,48,0,0,48,16,16,16,16,16,16, + 16,144,224,7,12,12,8,1,0,192,64,64,64,64,94,72, + 80,112,88,72,238,3,12,12,4,1,0,192,64,64,64,64, + 64,64,64,64,64,64,224,11,7,14,12,1,0,251,128,68, + 64,68,64,68,64,68,64,68,64,238,224,7,7,7,8,1, + 0,248,68,68,68,68,68,238,5,7,7,6,1,0,112,136, + 136,136,136,136,112,6,10,10,7,1,253,248,68,68,68,68, + 68,120,64,64,224,6,10,10,7,1,253,120,136,136,136,136, + 136,120,8,8,28,5,7,7,6,1,0,208,104,64,64,64, + 64,240,5,7,7,6,1,0,120,136,128,112,8,136,240,6, + 10,10,7,1,0,32,32,32,248,32,32,32,36,36,24,7, + 7,7,8,1,0,204,68,68,68,68,68,62,8,7,7,9, + 1,0,231,36,36,36,24,24,24,11,7,14,11,0,0,238, + 224,36,128,42,128,42,128,42,128,27,0,17,0,8,7,7, + 9,1,0,231,36,24,24,24,36,231,8,10,10,8,1,253, + 231,36,36,36,24,24,24,16,144,224,5,7,7,6,1,0, + 248,144,144,32,72,72,248,5,16,16,6,1,252,24,32,32, + 32,32,32,32,192,32,32,32,32,32,32,32,24,1,16,16, + 3,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,16,16,5,0,252,192,32,32,32,32,32,32, + 24,32,32,32,32,32,32,32,192,5,3,3,8,1,9,72, + 168,144,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,5,0,0,2,12,12,5,1,253,192, + 192,0,0,0,192,192,192,192,192,192,192,5,11,11,7,1, + 254,16,16,112,168,160,160,160,200,112,64,64,8,12,12,9, + 1,0,6,9,17,16,16,124,16,16,16,81,178,204,7,7, + 7,9,1,3,130,124,68,68,68,124,130,11,11,22,12,0, + 0,241,224,32,128,17,0,10,0,127,192,14,0,4,0,127, + 192,4,0,4,0,31,0,1,16,16,3,2,252,128,128,128, + 128,128,128,128,0,0,128,128,128,128,128,128,128,4,13,13, + 6,1,0,96,144,128,128,96,144,144,144,96,16,16,144,96, + 5,2,2,6,1,11,216,216,9,10,20,10,1,3,62,0, + 65,0,158,128,162,128,162,128,160,128,162,128,156,128,65,0, + 62,0,4,6,6,5,1,7,96,16,112,144,112,240,7,7, + 7,9,1,0,18,36,108,216,108,36,18,6,4,4,8,1, + 2,252,4,4,4,3,1,1,5,0,3,224,9,10,20,10, + 1,3,62,0,65,0,188,128,146,128,146,128,156,128,146,128, + 186,128,65,0,62,0,5,1,1,7,1,11,248,4,4,4, + 6,2,8,96,144,144,96,7,9,9,9,2,1,16,16,16, + 254,16,16,16,0,254,4,7,7,5,1,6,96,144,16,16, + 32,64,240,4,7,7,5,1,6,96,144,16,32,16,144,96, + 3,4,4,6,3,11,32,96,64,128,7,10,10,8,1,253, + 136,136,136,136,136,218,164,128,128,128,7,15,15,8,1,252, + 62,116,244,244,244,116,52,20,20,20,20,20,20,20,20,2, + 2,2,4,2,5,192,192,3,3,3,7,2,253,64,32,224, + 3,7,7,4,1,6,64,192,64,64,64,64,224,4,6,6, + 5,1,7,96,144,144,144,96,240,7,7,7,8,1,0,144, + 72,108,54,108,72,144,11,11,22,12,1,0,64,0,196,0, + 68,0,68,0,68,64,232,192,9,64,10,64,11,224,16,64, + 16,224,11,11,22,12,1,0,64,0,196,0,68,0,68,0, + 68,0,232,192,9,32,8,32,8,64,16,128,17,224,12,11, + 22,13,1,0,96,0,146,0,18,0,34,0,18,32,148,96, + 100,160,5,32,5,240,8,32,8,112,5,12,12,8,1,253, + 48,48,0,0,0,48,32,32,64,128,136,112,11,16,32,11, + 0,0,8,0,12,0,4,0,2,0,0,0,4,0,4,0, + 10,0,10,0,10,0,17,0,17,0,31,0,32,128,32,128, + 241,224,11,16,32,11,0,0,2,0,6,0,4,0,8,0, + 0,0,4,0,4,0,10,0,10,0,10,0,17,0,17,0, + 31,0,32,128,32,128,241,224,11,15,30,11,0,0,4,0, + 14,0,17,0,0,0,4,0,4,0,10,0,10,0,10,0, + 17,0,17,0,31,0,32,128,32,128,241,224,11,15,30,11, + 0,0,9,0,21,0,18,0,0,0,4,0,4,0,10,0, + 10,0,10,0,17,0,17,0,31,0,32,128,32,128,241,224, + 11,14,28,11,0,0,27,0,27,0,0,0,4,0,4,0, + 10,0,10,0,10,0,17,0,17,0,31,0,32,128,32,128, + 241,224,11,15,30,11,0,0,6,0,9,0,9,0,6,0, + 4,0,4,0,10,0,10,0,10,0,17,0,17,0,31,0, + 32,128,32,128,241,224,14,11,22,15,0,0,15,248,10,24, + 10,8,10,40,18,32,31,224,18,36,18,36,34,8,34,8, + 247,248,9,14,28,10,1,253,30,128,33,128,64,128,128,128, + 128,0,128,0,128,0,128,128,64,128,33,0,30,0,8,0, + 4,0,28,0,10,16,32,11,0,0,16,0,24,0,8,0, + 4,0,0,0,255,128,32,128,32,128,34,128,34,0,62,0, + 34,64,34,64,32,128,32,128,255,128,10,16,32,11,0,0, + 4,0,12,0,8,0,16,0,0,0,255,128,32,128,32,128, + 34,128,34,0,62,0,34,64,34,64,32,128,32,128,255,128, + 10,15,30,11,0,0,8,0,28,0,34,0,0,0,255,128, + 32,128,32,128,34,128,34,0,62,0,34,64,34,64,32,128, + 32,128,255,128,10,14,28,11,0,0,54,0,54,0,0,0, + 255,128,32,128,32,128,34,128,34,0,62,0,34,64,34,64, + 32,128,32,128,255,128,5,16,16,6,1,0,64,96,32,16, + 0,248,32,32,32,32,32,32,32,32,32,248,5,16,16,6, + 1,0,16,48,32,64,0,248,32,32,32,32,32,32,32,32, + 32,248,5,15,15,6,1,0,32,112,136,0,248,32,32,32, + 32,32,32,32,32,32,248,5,14,14,6,1,0,216,216,0, + 248,32,32,32,32,32,32,32,32,32,248,10,11,22,11,0, + 0,254,0,33,128,32,128,32,64,32,64,248,64,32,64,32, + 64,32,128,33,128,254,0,11,15,30,12,0,0,9,0,21, + 0,18,0,0,0,227,224,48,128,48,128,40,128,40,128,36, + 128,34,128,34,128,33,128,33,128,248,128,10,16,32,12,1, + 0,16,0,24,0,8,0,4,0,0,0,30,0,33,0,64, + 128,128,64,128,64,128,64,128,64,128,64,64,128,33,0,30, + 0,10,16,32,12,1,0,2,0,6,0,4,0,8,0,0, + 0,30,0,33,0,64,128,128,64,128,64,128,64,128,64,128, + 64,64,128,33,0,30,0,10,15,30,12,1,0,8,0,28, + 0,34,0,0,0,30,0,33,0,64,128,128,64,128,64,128, + 64,128,64,128,64,64,128,33,0,30,0,10,15,30,12,1, + 0,18,0,42,0,36,0,0,0,30,0,33,0,64,128,128, + 64,128,64,128,64,128,64,128,64,64,128,33,0,30,0,10, + 14,28,12,1,0,54,0,54,0,0,0,30,0,33,0,64, + 128,128,64,128,64,128,64,128,64,128,64,64,128,33,0,30, + 0,7,7,7,9,1,0,130,68,40,16,40,68,130,10,13, + 26,12,1,255,0,128,31,0,33,0,66,128,130,64,132,64, + 140,64,136,64,144,64,80,128,33,0,62,0,64,0,11,16, + 32,12,1,0,8,0,12,0,4,0,2,0,0,0,251,224, + 32,128,32,128,32,128,32,128,32,128,32,128,32,128,32,128, + 17,0,14,0,11,16,32,12,1,0,2,0,6,0,4,0, + 8,0,0,0,251,224,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,17,0,14,0,11,15,30,12,1,0, + 4,0,14,0,17,0,0,0,251,224,32,128,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,17,0,14,0,11,14, + 28,12,1,0,27,0,27,0,0,0,251,224,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,17,0,14,0, + 11,16,32,12,0,0,2,0,6,0,4,0,8,0,0,0, + 241,224,32,128,17,0,17,0,10,0,14,0,4,0,4,0, + 4,0,4,0,31,0,9,11,22,10,0,0,248,0,32,0, + 62,0,33,0,32,128,32,128,32,128,33,0,62,0,32,0, + 248,0,6,12,12,7,1,0,48,72,72,72,72,216,72,68, + 68,68,68,216,6,12,12,7,1,0,64,96,32,16,0,112, + 136,8,120,136,136,124,6,12,12,7,1,0,16,48,32,64, + 0,112,136,8,120,136,136,124,6,11,11,7,1,0,32,112, + 136,0,112,136,8,120,136,136,124,6,11,11,7,1,0,72, + 168,144,0,112,136,8,120,136,136,124,6,10,10,7,1,0, + 216,216,0,112,136,8,120,136,136,124,6,11,11,7,1,0, + 48,72,72,48,112,136,8,120,136,136,124,10,7,14,11,1, + 0,115,128,140,64,15,192,120,0,136,0,140,64,115,128,5, + 10,10,6,1,253,112,136,128,128,128,136,112,32,16,112,5, + 12,12,6,1,0,64,96,32,16,0,112,136,248,128,128,136, + 112,5,12,12,6,1,0,16,48,32,64,0,112,136,248,128, + 128,136,112,5,11,11,6,1,0,32,112,136,0,112,136,248, + 128,128,136,112,5,10,10,6,1,0,216,216,0,112,136,248, + 128,128,136,112,4,12,12,4,0,0,128,192,64,32,0,96, + 32,32,32,32,32,112,4,12,12,4,1,0,16,48,32,64, + 0,192,64,64,64,64,64,224,5,11,11,5,0,0,32,112, + 136,0,96,32,32,32,32,32,112,5,10,10,6,0,0,216, + 216,0,96,32,32,32,32,32,112,5,12,12,6,1,0,80, + 112,224,16,16,120,136,136,136,136,136,112,7,11,11,8,1, + 0,72,168,144,0,248,68,68,68,68,68,238,5,12,12,6, + 1,0,64,96,32,16,0,112,136,136,136,136,136,112,5,12, + 12,6,1,0,16,48,32,64,0,112,136,136,136,136,136,112, + 5,11,11,6,1,0,32,112,136,0,112,136,136,136,136,136, + 112,5,11,11,6,1,0,72,168,144,0,112,136,136,136,136, + 136,112,5,10,10,6,1,0,216,216,0,112,136,136,136,136, + 136,112,9,7,14,11,1,0,8,0,8,0,0,0,255,128, + 0,0,8,0,8,0,5,11,11,6,1,254,8,16,112,152, + 168,168,168,200,112,64,128,7,12,12,8,1,0,64,96,32, + 16,0,204,68,68,68,68,68,62,7,12,12,8,1,0,8, + 24,16,32,0,204,68,68,68,68,68,62,7,11,11,8,1, + 0,16,56,68,0,204,68,68,68,68,68,62,7,10,10,8, + 1,0,108,108,0,204,68,68,68,68,68,62,8,15,15,8, + 1,253,4,12,8,16,0,231,36,36,36,24,24,24,16,144, + 224,6,15,15,7,1,253,192,64,64,64,64,120,68,68,68, + 68,68,120,64,64,224,8,13,13,8,1,253,54,54,0,231, + 36,36,36,24,24,24,16,144,224}; +/* + Fontname: cursor + Copyright: These glyphs are unencumbered + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=16 x= 1 y= 0 dx=17 dy= 0 ascent=15 len=32 + Font Bounding box w=31 h=31 x=-15 y=-16 + Calculated Min Values x=-15 y=-16 dx= 0 dy= 0 + Pure Font ascent =15 descent=-8 + X Font ascent =16 descent=-16 + Max Font ascent =15 descent=-16 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cursor[5286] U8G_SECTION(".progmem.u8g_font_cursor") = { + 0,31,31,241,240,15,4,101,8,211,32,255,248,15,240,16, + 240,14,14,28,17,250,248,224,28,240,60,248,124,124,248,63, + 240,31,224,15,192,15,192,31,224,63,240,124,248,248,124,240, + 60,224,28,16,16,32,17,249,247,240,15,248,31,252,63,254, + 127,127,254,63,252,31,248,15,240,15,240,31,248,63,252,127, + 254,254,127,252,63,248,31,240,15,14,14,28,17,243,242,0, + 12,0,60,0,248,3,248,15,240,63,240,3,224,7,224,14, + 192,28,192,56,128,112,128,224,0,64,0,16,16,32,17,242, + 241,0,7,0,31,0,127,1,254,7,254,31,252,63,252,63, + 248,7,248,15,240,31,240,62,224,124,224,248,64,112,0,32, + 0,8,10,10,17,253,255,255,0,255,24,24,24,24,90,60, + 24,10,12,24,17,252,254,255,192,255,192,255,192,255,192,255, + 192,30,0,30,0,127,128,127,128,127,128,63,0,30,0,8, + 10,10,17,253,255,24,60,90,24,24,24,24,255,0,255,10, + 12,24,17,252,254,12,0,30,0,127,128,127,128,127,128,30, + 0,30,0,255,192,255,192,255,192,255,192,255,192,16,8,16, + 17,242,251,1,0,7,192,136,96,255,255,0,24,0,32,0, + 64,255,192,16,9,18,17,242,251,7,0,15,192,159,224,255, + 255,255,255,255,255,255,248,255,224,255,192,13,14,28,17,250, + 248,226,56,34,32,34,32,34,32,255,248,162,40,162,40,162, + 40,162,40,255,248,34,32,34,32,34,32,226,56,15,16,32, + 17,249,247,251,190,251,190,251,190,59,184,255,254,255,254,255, + 254,251,190,251,190,255,254,255,254,255,254,59,184,251,190,251, + 190,251,190,14,14,28,17,0,255,192,0,192,0,196,16,196, + 32,196,64,196,128,197,0,198,0,199,240,192,0,192,0,192, + 0,255,252,255,252,16,16,32,17,255,254,240,0,240,0,247, + 12,247,28,247,56,247,112,247,224,247,192,247,252,247,252,247, + 252,240,0,255,255,255,255,255,255,255,255,14,14,28,17,243, + 255,0,12,0,12,32,140,16,140,8,140,4,140,2,140,1, + 140,63,140,0,12,0,12,0,12,255,252,255,252,16,16,32, + 17,242,254,0,15,0,15,48,239,56,239,28,239,14,239,7, + 239,3,239,63,239,63,239,63,239,0,15,255,255,255,255,255, + 255,255,255,13,14,28,17,250,255,2,0,2,0,2,0,2, + 0,2,0,2,0,34,32,18,64,10,128,7,0,2,0,0, + 0,255,248,255,248,15,16,32,17,249,254,3,128,3,128,3, + 128,3,128,3,128,3,128,51,152,59,184,31,240,15,224,7, + 192,3,128,255,254,255,254,255,254,255,254,14,10,20,17,249, + 255,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,16,12,24,17,248,254,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,255,255,255,255,255, + 255,255,255,15,16,32,17,248,248,255,254,128,0,191,254,160, + 2,175,250,168,10,171,234,170,42,170,170,171,170,168,42,175, + 234,160,10,191,250,128,2,255,254,16,16,32,17,248,248,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,10, + 14,28,17,252,242,12,0,12,0,30,0,30,0,63,0,63, + 0,127,128,127,128,204,192,140,64,12,0,12,0,12,0,12, + 0,12,16,32,17,251,241,15,0,15,0,31,128,31,128,63, + 192,63,192,127,224,127,224,255,240,255,240,255,240,239,112,15, + 0,15,0,15,0,15,0,14,14,28,17,249,249,7,128,31, + 224,63,240,120,120,112,56,224,28,224,28,224,28,224,28,112, + 56,120,120,63,240,31,224,7,128,16,16,32,17,248,248,7, + 224,31,248,63,252,127,254,127,254,252,63,248,31,248,31,248, + 31,248,31,252,63,127,254,127,254,63,252,31,248,7,224,14, + 16,32,17,250,243,63,240,103,152,200,204,147,36,158,36,136, + 68,199,140,127,248,83,40,83,40,83,40,87,168,211,44,240, + 60,255,252,255,252,15,16,32,17,250,243,127,248,239,156,219, + 238,183,182,191,246,159,102,207,206,255,252,215,172,215,172,215, + 172,223,236,215,174,243,62,255,254,255,254,15,16,32,17,249, + 249,31,240,32,8,96,6,80,26,79,226,192,2,192,2,64, + 2,64,2,89,26,106,170,235,170,218,154,64,2,64,2,63, + 252,16,16,32,17,249,249,31,240,63,248,127,255,127,255,255, + 255,255,255,255,255,255,255,127,255,127,255,255,255,255,255,255, + 255,255,255,127,255,63,252,16,15,30,17,249,248,2,128,2, + 128,2,128,2,128,2,128,2,128,254,255,0,0,254,255,2, + 128,2,128,2,128,2,128,2,128,2,128,16,16,32,17,249, + 247,7,192,7,192,7,192,7,192,7,192,255,255,255,255,255, + 255,255,255,255,255,7,192,7,192,7,192,7,192,7,192,7, + 192,16,15,30,17,249,248,66,132,162,138,82,148,42,168,22, + 208,10,160,253,127,2,128,253,127,10,160,22,208,42,168,82, + 148,162,138,66,132,16,15,30,17,249,248,102,204,182,219,222, + 246,110,236,54,216,250,191,252,127,1,0,252,127,250,191,54, + 216,110,236,222,246,182,219,102,204,16,15,30,17,249,248,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,254,255,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,16,16,32, + 17,249,247,3,128,3,128,3,128,3,128,3,128,3,128,255, + 255,255,255,255,255,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,15,15,30,17,249,248,2,128,6,192,10,160,18, + 144,34,136,66,132,254,254,0,0,254,254,66,132,34,136,18, + 144,10,160,6,192,2,128,16,16,32,17,249,247,7,192,15, + 224,31,240,59,184,115,156,227,142,255,255,254,255,255,255,227, + 142,115,156,59,184,31,240,15,224,7,192,3,128,10,10,20, + 17,251,251,30,0,127,128,127,128,255,192,255,192,255,192,255, + 192,127,128,127,128,30,0,12,12,24,17,250,250,31,128,127, + 224,127,224,255,240,255,240,255,240,255,240,255,240,255,240,127, + 224,127,224,31,128,12,12,24,17,250,249,255,240,128,16,128, + 16,128,16,128,16,134,16,134,16,128,16,128,16,128,16,128, + 16,255,240,14,14,28,17,249,248,255,252,255,252,255,252,224, + 28,224,28,231,156,231,156,231,156,231,156,224,28,224,28,255, + 252,255,252,255,252,10,14,28,17,251,249,12,0,30,0,63, + 0,109,128,204,192,12,0,12,0,12,0,12,0,204,192,109, + 128,63,0,30,0,12,0,12,16,32,17,250,248,15,0,31, + 128,63,192,127,224,255,240,255,240,255,240,15,0,15,0,255, + 240,255,240,255,240,127,224,63,192,31,128,15,0,15,15,30, + 17,242,241,0,2,0,12,0,60,0,248,3,248,15,240,63, + 240,1,224,2,224,4,192,8,192,16,128,32,128,64,0,128, + 0,15,16,32,17,242,240,0,6,0,30,0,126,1,252,7, + 248,31,248,127,240,127,240,7,224,15,224,29,192,57,192,113, + 128,225,128,192,0,128,0,15,15,30,17,242,241,0,2,0, + 12,0,60,0,248,3,248,0,112,0,176,1,32,2,32,4, + 0,8,0,16,0,32,0,64,0,128,0,15,15,30,17,242, + 241,0,6,0,30,0,124,1,252,7,248,7,248,1,240,3, + 240,7,96,14,64,28,0,56,0,112,0,224,0,192,0,12, + 12,24,17,250,249,255,240,137,16,153,144,176,208,224,112,134, + 16,134,16,224,112,176,208,153,144,137,16,255,240,14,14,28, + 17,249,248,255,252,255,252,207,204,223,236,252,252,251,124,247, + 188,247,188,251,124,252,252,223,236,207,204,255,252,255,252,14, + 14,28,17,250,248,143,192,223,224,248,48,144,16,152,0,252, + 0,0,0,0,0,0,252,0,100,32,36,48,124,31,236,15, + 196,16,16,32,17,249,247,199,224,239,240,255,248,255,252,252, + 28,255,12,255,0,255,0,0,255,0,255,48,127,56,63,63, + 255,31,255,15,247,7,227,14,14,28,17,249,249,3,0,7, + 128,15,192,3,0,35,16,99,24,255,252,255,252,99,24,35, + 16,3,0,15,192,7,128,3,0,16,16,32,17,248,248,3, + 192,3,224,7,224,15,240,23,232,59,220,255,255,255,255,255, + 255,255,255,59,220,23,232,15,240,7,224,3,192,3,192,16, + 15,30,17,242,243,0,120,0,112,128,51,159,176,255,240,254, + 48,252,48,96,56,0,240,31,224,8,0,8,0,8,0,8, + 0,30,0,16,16,32,17,242,243,0,252,0,252,192,255,255, + 255,255,255,255,252,255,252,255,252,255,252,255,252,127,248,31, + 240,28,0,28,0,63,0,63,0,16,16,32,17,254,240,63, + 0,16,128,200,64,234,160,200,32,203,160,248,60,56,63,8, + 39,8,39,9,47,9,39,9,32,17,16,33,8,62,248,16, + 16,32,17,254,240,63,0,223,128,239,192,255,224,239,224,239, + 252,255,254,255,255,63,239,15,239,15,255,15,239,15,231,31, + 240,63,248,62,248,13,16,32,17,244,240,0,24,0,120,1, + 224,3,192,7,128,15,192,31,224,95,192,255,224,191,224,15, + 192,15,128,148,0,196,0,104,0,48,0,13,16,32,17,244, + 240,0,56,0,248,3,240,7,224,15,192,31,224,127,240,255, + 240,255,240,255,240,255,224,255,192,255,128,254,0,252,0,120, + 0,15,14,28,17,0,242,127,128,128,64,126,32,16,16,14, + 16,16,16,14,40,16,68,12,130,3,4,2,72,1,16,0, + 160,0,64,16,16,32,17,0,241,127,128,255,192,255,224,255, + 240,127,248,31,248,63,248,31,252,63,254,31,255,15,254,7, + 252,3,248,1,240,0,224,0,64,15,14,28,17,250,250,62, + 248,99,140,193,6,128,2,128,2,128,2,128,2,192,6,96, + 12,48,24,24,48,12,96,6,192,3,128,15,14,28,17,250, + 250,62,248,127,252,227,142,193,6,192,6,192,6,194,134,225, + 14,112,28,56,56,28,112,15,224,7,192,3,128,16,16,32, + 17,248,248,255,255,213,85,170,171,213,85,160,11,208,5,160, + 11,208,5,160,11,208,5,160,11,208,5,170,171,213,85,170, + 171,255,255,16,16,32,17,248,248,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,14,14,28,17,249,248,127, + 248,63,240,159,228,207,204,231,156,243,60,255,252,255,252,243, + 60,231,156,207,204,159,228,63,240,127,248,16,16,32,17,248, + 247,63,252,127,254,127,254,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,127,254,127,254,63, + 252,8,14,14,17,0,242,128,192,224,240,248,252,254,255,248, + 216,140,12,6,6,10,16,32,17,255,241,192,0,224,0,240, + 0,248,0,252,0,254,0,255,0,255,128,255,192,255,192,254, + 0,239,0,207,0,7,128,7,128,3,0,14,13,26,17,0, + 249,192,0,192,0,193,0,194,0,196,0,200,0,223,252,200, + 0,196,0,194,0,193,0,192,0,192,0,16,15,30,17,255, + 248,240,0,240,0,240,192,241,192,243,128,247,0,255,255,255, + 255,255,255,247,0,243,128,241,192,240,192,240,0,240,0,10, + 14,28,17,0,249,192,0,192,0,192,0,192,0,192,0,192, + 0,255,192,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,12,16,32,17,255,248,240,0,240,0,240,0,240,0,240, + 0,240,0,255,240,255,240,255,240,255,240,240,0,240,0,240, + 0,240,0,240,0,240,0,16,16,32,17,248,248,128,3,127, + 253,127,253,68,69,69,85,69,85,69,85,69,85,68,69,127, + 253,127,253,127,253,127,253,127,253,127,253,128,3,15,16,32, + 17,248,248,127,252,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,127,252,10,10,20,17,0,255,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,255,192,255,192,12,12,24, + 17,255,254,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,255,240,255,240,255,240,255,240,10,10,20,17,247, + 255,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,255,192,255,192,12,12,24,17,246,254,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,255,240,255,240,255, + 240,255,240,16,16,32,17,242,245,3,128,30,240,2,128,129, + 0,67,135,36,75,29,112,5,64,4,64,2,128,4,64,9, + 32,18,144,20,80,120,60,248,63,16,16,32,17,242,245,31, + 224,63,240,63,248,195,130,231,199,127,255,63,251,31,240,7, + 224,7,192,15,224,31,240,63,248,126,252,252,127,252,127,16, + 16,32,17,248,248,128,3,127,253,127,253,68,69,84,85,84, + 85,84,85,84,85,68,69,127,253,127,253,127,253,127,253,127, + 253,127,253,128,3,15,16,32,17,248,248,127,252,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,127,252,15,14,28,17,252, + 243,7,0,12,0,6,0,3,0,127,248,128,4,179,54,179, + 54,179,54,128,6,128,6,96,28,24,96,7,128,16,16,32, + 17,252,241,15,128,30,0,15,0,7,0,127,248,255,252,255, + 255,255,255,255,255,255,255,255,255,255,255,63,247,31,224,15, + 192,7,128,11,16,32,17,246,255,112,0,136,0,140,0,74, + 0,122,0,33,0,17,0,16,128,8,128,12,64,4,64,2, + 32,1,224,0,224,0,96,0,32,13,16,32,17,245,255,252, + 0,254,0,255,0,127,0,63,128,63,128,31,192,15,192,15, + 224,7,224,7,240,3,248,1,248,0,248,0,120,0,56,15, + 16,32,17,249,252,7,128,15,192,31,224,51,48,51,48,31, + 224,15,192,7,128,135,132,135,134,67,8,56,112,7,128,31, + 226,240,62,128,4,16,16,32,17,249,252,15,192,31,224,63, + 240,127,248,127,248,63,240,31,224,143,193,143,199,207,207,247, + 156,120,120,7,128,127,227,255,255,240,62,10,10,20,17,252, + 251,12,0,12,0,12,0,12,0,255,192,255,192,12,0,12, + 0,12,0,12,0,12,12,24,17,251,250,15,0,15,0,15, + 0,15,0,255,240,255,240,255,240,255,240,15,0,15,0,15, + 0,15,0,9,15,30,17,252,248,62,0,127,0,227,128,193, + 128,225,128,99,128,7,0,30,0,28,0,20,0,20,0,119, + 0,54,0,28,0,8,0,11,16,32,17,251,248,31,0,63, + 128,127,192,255,224,241,224,249,224,123,224,63,192,31,128,31, + 0,31,0,63,128,127,192,63,128,31,0,14,0,8,14,14, + 17,249,242,1,3,7,15,31,63,127,255,31,27,49,48,96, + 96,10,16,32,17,248,241,0,192,1,192,3,192,7,192,15, + 192,31,192,63,192,127,192,255,192,255,192,31,192,61,192,60, + 192,120,0,120,0,48,0,14,13,26,17,243,249,0,12,0, + 12,2,12,1,12,0,140,0,76,255,236,0,76,0,140,1, + 12,2,12,0,12,0,12,16,15,30,17,242,248,0,15,0, + 15,3,15,3,143,1,207,0,239,255,255,255,255,255,255,0, + 239,1,207,3,143,3,15,0,15,0,15,10,14,28,17,247, + 249,0,192,0,192,0,192,0,192,0,192,0,192,255,192,255, + 192,0,192,0,192,0,192,0,192,0,192,0,192,12,16,32, + 17,246,248,0,240,0,240,0,240,0,240,0,240,0,240,255, + 240,255,240,255,240,255,240,0,240,0,240,0,240,0,240,0, + 240,0,240,16,16,32,17,248,248,128,3,127,253,127,253,68, + 69,85,69,85,69,85,69,85,69,68,69,127,253,127,253,127, + 253,127,253,127,253,127,253,128,3,15,16,32,17,248,248,127, + 252,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,127,252,14, + 14,28,17,250,248,255,252,128,68,128,68,128,68,255,196,136, + 68,136,68,136,68,136,68,143,252,136,4,136,4,136,4,255, + 252,16,16,32,17,249,247,255,255,255,255,255,255,224,119,255, + 247,255,247,255,247,238,119,238,119,239,255,239,255,239,255,238, + 7,255,255,255,255,255,255,12,13,26,17,250,242,1,0,1, + 0,5,128,5,128,13,128,13,192,29,192,29,192,61,224,61, + 224,125,224,125,240,248,224,16,16,32,17,248,240,0,192,0, + 224,1,224,3,240,3,240,7,240,7,248,15,248,15,248,31, + 252,31,252,63,252,63,255,127,255,255,248,127,224,7,15,15, + 17,253,0,40,40,40,40,40,40,40,40,40,40,40,254,124, + 56,16,9,16,32,17,252,255,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,255,128,255,128, + 127,0,62,0,28,0,8,0,15,7,14,17,249,252,16,16, + 48,24,127,252,240,30,127,252,48,24,16,16,15,9,18,17, + 249,251,24,48,56,56,127,252,255,254,255,254,255,254,127,252, + 56,56,24,48,15,7,14,17,1,252,16,0,48,0,127,254, + 240,0,127,254,48,0,16,0,16,9,18,17,0,251,12,0, + 28,0,63,255,127,255,255,255,127,255,63,255,28,0,12,0, + 15,7,14,17,241,252,0,16,0,24,255,252,0,30,255,252, + 0,24,0,16,16,9,18,17,241,251,0,48,0,56,255,252, + 255,254,255,255,255,254,255,252,0,56,0,48,7,15,15,17, + 253,240,16,56,124,254,40,40,40,40,40,40,40,40,40,40, + 40,9,16,32,17,252,240,8,0,28,0,62,0,127,0,255, + 128,255,128,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,7,15,15,17,253,248,16,56,124, + 254,40,40,40,40,40,40,40,254,124,56,16,9,15,30,17, + 252,248,28,0,62,0,127,0,255,128,255,128,62,0,62,0, + 62,0,62,0,62,0,255,128,255,128,127,0,62,0,28,0, + 15,16,32,17,246,240,0,32,0,112,0,248,1,222,5,222, + 9,222,17,222,17,222,17,222,17,222,49,222,113,222,253,222, + 24,136,0,120,0,48,16,16,32,17,245,240,0,56,0,124, + 0,254,0,255,6,255,14,255,30,255,30,255,30,255,30,255, + 62,255,126,255,254,255,126,254,12,126,0,60,14,14,28,17, + 249,249,255,0,128,0,128,0,128,0,143,192,136,64,136,68, + 136,68,8,68,15,196,0,36,0,20,0,12,3,252,16,16, + 32,17,248,248,255,192,255,192,255,192,224,0,239,240,239,240, + 239,247,238,119,238,119,239,247,15,247,15,255,0,31,3,255, + 3,255,3,255,16,16,32,17,250,247,32,16,16,32,16,32, + 8,64,8,64,135,135,103,152,31,224,31,224,103,152,135,135, + 8,64,8,64,16,32,16,32,32,16,16,16,32,17,250,247, + 96,24,48,48,16,32,24,96,143,193,207,207,111,220,63,240, + 63,224,111,248,207,207,143,193,24,64,24,96,48,48,96,24, + 11,16,32,17,247,242,0,96,1,0,52,96,121,0,104,96, + 252,0,132,0,228,0,164,0,228,0,164,0,228,0,228,0, + 132,0,132,0,252,0,12,16,32,17,246,242,0,48,24,176, + 62,176,62,176,126,176,255,0,255,0,255,0,255,0,255,0, + 255,0,255,0,255,0,255,0,255,0,255,0,15,16,32,17, + 249,247,1,0,2,128,2,128,2,128,4,64,4,64,4,64, + 57,56,192,6,56,56,9,32,18,144,36,72,40,40,48,24, + 32,8,16,16,32,17,249,247,1,0,3,128,3,128,6,192, + 6,192,12,96,28,120,249,62,192,7,248,62,57,56,51,152, + 102,204,108,108,120,60,112,28,15,13,26,17,249,249,3,128, + 15,224,28,112,48,24,96,12,193,6,194,134,193,6,96,12, + 48,24,28,112,15,224,3,128,16,14,28,17,249,249,7,192, + 15,224,31,240,60,120,112,28,225,14,195,135,198,199,195,135, + 225,14,112,28,60,120,31,240,7,192,13,13,26,16,250,249, + 2,0,2,0,2,0,2,0,2,0,2,0,255,248,2,0, + 2,0,2,0,2,0,2,0,2,0,15,15,30,16,249,248, + 3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254, + 255,254,3,128,3,128,3,128,3,128,3,128,3,128,14,14, + 28,17,0,242,192,0,240,0,124,0,127,0,63,192,63,240, + 31,0,31,0,12,128,12,64,4,32,4,16,0,8,0,4, + 16,16,32,17,255,241,224,0,248,0,254,0,127,128,127,224, + 63,252,63,252,31,252,31,192,15,224,15,112,7,56,7,28, + 7,14,0,7,0,3,14,14,28,17,0,242,255,252,255,252, + 192,0,192,0,192,0,199,240,198,0,197,0,196,128,196,64, + 196,32,196,16,192,0,192,0,16,16,32,17,255,241,255,255, + 255,255,255,255,255,255,240,0,247,252,247,252,247,252,247,192, + 247,224,247,112,247,56,247,28,247,12,240,0,240,0,14,14, + 28,17,243,242,255,252,255,252,0,12,0,12,0,12,63,140, + 1,140,2,140,4,140,8,140,16,140,32,140,0,12,0,12, + 16,16,32,17,242,241,255,255,255,255,255,255,255,255,0,15, + 63,239,63,239,63,239,3,239,7,239,14,239,28,239,56,239, + 48,239,0,15,0,15,13,14,28,17,250,242,255,248,255,248, + 0,0,2,0,7,0,10,128,18,64,34,32,2,0,2,0, + 2,0,2,0,2,0,2,0,15,16,32,17,249,241,255,254, + 255,254,255,254,255,254,3,128,7,192,15,224,31,240,59,184, + 51,152,3,128,3,128,3,128,3,128,3,128,3,128,14,10, + 20,17,249,246,255,252,255,252,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,16,12,24,17,248,245,255,255, + 255,255,255,255,255,255,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,7,16,16,17,253,240,16,0,56,124, + 254,238,254,124,56,16,186,214,146,130,130,130,9,16,32,17, + 252,240,28,0,28,0,62,0,127,0,255,128,255,128,255,128, + 127,0,62,0,93,0,255,128,255,128,255,128,235,128,235,128, + 227,128,10,10,20,17,0,246,255,192,255,192,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,12,12,24,17, + 255,245,255,240,255,240,255,240,255,240,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,14,14,28,17,249,244, + 17,32,4,80,147,76,79,144,50,96,194,24,2,0,2,0, + 2,0,2,0,2,0,2,128,2,128,1,0,16,16,32,17, + 248,242,23,110,223,251,191,252,127,255,255,252,255,255,243,158, + 3,128,3,128,3,128,3,128,3,224,3,224,3,224,3,224, + 1,192,10,10,20,17,247,246,255,192,255,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,12,12,24,17, + 246,245,255,240,255,240,255,240,255,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,16,16,32,17,241,249, + 31,224,31,224,31,224,63,240,97,24,193,12,129,7,131,135, + 131,135,132,7,200,12,96,24,63,240,31,224,31,224,31,224, + 16,16,32,17,241,249,63,240,63,240,63,240,127,248,255,252, + 255,255,255,255,255,255,255,255,255,255,255,255,255,252,127,248, + 63,240,63,240,63,240,7,14,14,10,253,249,238,56,16,16, + 16,16,16,16,16,16,16,16,56,238,9,16,32,10,252,248, + 247,128,255,128,255,128,62,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,255,128,247,128, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255}; +/* + Fontname: cursor + Copyright: These + Capital A Height: 0, '1' Height: 0 + Calculated Max Values w=16 h=16 x= 0 y= 0 dx=17 dy= 0 ascent= 7 len=32 + Font Bounding box w=31 h=31 x=-15 y=-16 + Calculated Min Values x=-14 y=-16 dx= 0 dy= 0 + Pure Font ascent = 0 descent= 0 + X Font ascent = 0 descent= 0 + Max Font ascent = 7 descent=-16 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cursorr[492] U8G_SECTION(".progmem.u8g_font_cursorr") = { + 0,31,31,241,240,0,1,6,0,0,32,80,0,7,240,0, + 0,255,255,14,14,28,17,243,242,0,12,0,60,0,248,3, + 248,15,240,63,240,3,224,7,224,14,192,28,192,56,128,112, + 128,224,0,64,0,16,16,32,17,242,241,0,7,0,31,0, + 127,1,254,7,254,31,252,63,252,63,248,7,248,15,240,31, + 240,62,224,124,224,248,64,112,0,32,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,10,14,28, + 17,252,242,12,0,12,0,30,0,30,0,63,0,63,0,127, + 128,127,128,204,192,140,64,12,0,12,0,12,0,12,0,12, + 16,32,17,251,241,15,0,15,0,31,128,31,128,63,192,63, + 192,127,224,127,224,255,240,255,240,255,240,239,112,15,0,15, + 0,15,0,15,0,255,255,255,255,255,255,16,15,30,17,249, + 248,2,128,2,128,2,128,2,128,2,128,2,128,254,255,0, + 0,254,255,2,128,2,128,2,128,2,128,2,128,2,128,16, + 16,32,17,249,247,7,192,7,192,7,192,7,192,7,192,255, + 255,255,255,255,255,255,255,255,255,7,192,7,192,7,192,7, + 192,7,192,7,192,255,255,16,15,30,17,249,248,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,254,255,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,16,16,32,17,249, + 247,3,128,3,128,3,128,3,128,3,128,3,128,255,255,255, + 255,255,255,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,255,255,255,255,255,255,255,255,15,15,30,17,242,241,0, + 2,0,12,0,60,0,248,3,248,15,240,63,240,1,224,2, + 224,4,192,8,192,16,128,32,128,64,0,128,0,15,16,32, + 17,242,240,0,6,0,30,0,126,1,252,7,248,31,248,127, + 240,127,240,7,224,15,224,29,192,57,192,113,128,225,128,192, + 0,128,0,15,15,30,17,242,241,0,2,0,12,0,60,0, + 248,3,248,0,112,0,176,1,32,2,32,4,0,8,0,16, + 0,32,0,64,0,128,0,15,15,30,17,242,241,0,6,0, + 30,0,124,1,252,7,248,7,248,1,240,3,240,7,96,14, + 64,28,0,56,0,112,0,224,0,192,0,255}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 7 len= 9 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0[1702] U8G_SECTION(".progmem.u8g_font_fixed_v0") = { + 1,7,9,0,254,7,1,46,2,94,32,255,254,7,254,7, + 254,2,0,64,34,23,103,128,128,128,128,0,128,128,23,50, + 98,160,160,3,85,101,80,248,80,248,80,2,87,103,112,168, + 160,112,40,168,112,2,87,103,136,144,16,32,64,72,136,2, + 87,103,104,136,104,144,144,144,104,23,18,98,128,128,2,87, + 103,56,64,128,128,128,64,56,2,87,103,224,16,8,8,8, + 16,224,2,87,103,32,168,112,32,112,168,32,3,85,101,32, + 32,248,32,32,18,34,98,64,128,5,81,97,248,18,18,98, + 128,128,2,87,103,8,16,16,32,64,64,128,2,87,103,112, + 136,136,136,136,136,112,2,87,103,32,96,32,32,32,32,248, + 2,87,103,112,136,8,16,32,64,248,2,87,103,240,8,8, + 48,8,8,240,2,87,103,16,144,144,248,16,16,16,2,87, + 103,248,128,128,240,8,8,240,2,87,103,112,128,128,240,136, + 136,112,2,87,103,248,8,8,8,8,8,8,2,87,103,112, + 136,136,112,136,136,112,2,87,103,112,136,136,248,8,8,112, + 18,21,101,128,128,0,128,128,18,37,101,64,64,0,64,128, + 2,87,103,24,32,64,128,64,32,24,4,83,99,248,0,248, + 2,87,103,192,32,16,8,16,32,192,2,87,103,248,8,8, + 48,0,32,32,2,87,103,112,136,136,168,184,128,112,2,87, + 103,112,136,136,248,136,136,136,2,87,103,240,136,136,240,136, + 136,240,2,87,103,112,136,128,128,128,136,112,2,87,103,240, + 136,136,136,136,136,240,2,87,103,248,128,128,224,128,128,248, + 2,87,103,248,128,128,224,128,128,128,2,87,103,112,136,128, + 184,136,136,112,2,87,103,136,136,136,248,136,136,136,2,87, + 103,248,32,32,32,32,32,248,2,87,103,248,8,8,8,8, + 136,112,2,87,103,136,136,144,224,144,136,136,2,87,103,128, + 128,128,128,128,128,248,2,87,103,136,136,216,168,136,136,136, + 2,87,103,136,136,200,168,152,136,136,2,87,103,112,136,136, + 136,136,136,112,2,87,103,240,136,136,240,128,128,128,2,87, + 103,112,136,136,136,136,168,112,2,87,103,240,136,136,240,160, + 144,136,2,87,103,112,136,128,112,8,136,112,2,87,103,248, + 32,32,32,32,32,32,2,87,103,136,136,136,136,136,136,112, + 2,87,103,136,136,136,136,136,80,32,2,87,103,136,136,136, + 168,168,168,80,2,87,103,136,136,80,32,80,136,136,2,87, + 103,136,136,80,32,32,32,32,2,87,103,248,8,16,32,64, + 128,248,18,55,103,224,128,128,128,128,128,224,2,87,103,128, + 64,64,32,16,16,8,18,55,103,224,32,32,32,32,32,224, + 23,50,98,64,160,2,113,97,254,39,34,98,64,128,2,85, + 101,112,8,120,136,120,2,87,103,128,128,240,136,136,136,240, + 2,85,101,112,136,128,136,112,2,87,103,8,8,120,136,136, + 136,120,2,85,101,112,136,248,128,120,2,87,103,56,64,240, + 64,64,64,64,0,87,103,112,136,136,136,120,8,112,2,87, + 103,128,128,240,136,136,136,136,2,87,103,48,0,248,32,32, + 32,248,0,89,105,48,0,248,8,8,8,8,8,112,2,87, + 103,128,128,136,144,224,144,136,2,87,103,224,32,32,32,32, + 32,248,2,85,101,208,168,168,168,168,2,85,101,176,200,136, + 136,136,2,85,101,112,136,136,136,112,0,87,103,240,136,136, + 136,240,128,128,0,87,103,120,136,136,136,120,8,8,2,85, + 101,184,192,128,128,128,2,85,101,120,128,112,8,240,2,87, + 103,32,32,248,32,32,32,32,2,85,101,136,136,136,136,112, + 2,85,101,136,136,136,80,32,2,85,101,136,168,168,168,80, + 2,85,101,136,80,32,80,136,0,87,103,136,136,136,136,120, + 8,112,2,85,101,248,16,32,64,248,2,87,103,24,32,64, + 192,64,32,24,34,23,103,128,128,128,128,128,128,128,2,87, + 103,192,32,16,24,16,32,192,4,82,98,72,176,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2, + 87,103,48,0,248,32,32,32,248,2,87,103,32,112,168,160, + 168,112,32,2,87,103,64,64,64,240,64,72,120,3,85,101, + 136,112,80,112,136,2,87,103,136,136,80,248,32,248,32,34, + 23,103,128,128,128,0,128,128,128,2,87,103,120,128,120,136, + 240,8,240,5,81,97,248,2,87,103,112,136,168,200,168,136, + 112,2,87,103,112,8,120,136,120,0,248,4,83,99,72,144, + 72,4,82,98,248,8,255,2,87,103,112,136,248,200,200,136, + 112,8,81,97,248,20,51,99,64,160,64,2,87,103,32,32, + 248,32,32,0,248,255,255,255,255,255,255,255,255,255,4,83, + 99,144,72,144,255,255,255,255,2,87,103,64,32,112,136,248, + 136,136,2,87,103,16,32,112,136,248,136,136,2,87,103,32, + 80,112,136,248,136,136,2,87,103,72,176,112,136,248,136,136, + 2,87,103,80,0,112,136,248,136,136,2,87,103,112,0,112, + 136,248,136,136,2,87,103,120,160,160,240,160,160,184,0,89, + 105,112,136,128,128,128,136,112,32,96,2,87,103,64,32,248, + 128,224,128,248,2,87,103,16,32,248,128,224,128,248,2,87, + 103,32,80,248,128,224,128,248,2,87,103,80,0,248,128,224, + 128,248,2,87,103,64,32,248,32,32,32,248,2,87,103,16, + 32,248,32,32,32,248,2,87,103,32,80,248,32,32,32,248, + 2,87,103,80,0,248,32,32,32,248,2,87,103,240,136,136, + 232,136,136,240,2,87,103,72,176,136,200,168,152,136,2,87, + 103,64,32,112,136,136,136,112,2,87,103,16,32,112,136,136, + 136,112,2,87,103,32,80,112,136,136,136,112,2,87,103,72, + 176,112,136,136,136,112,2,87,103,80,0,112,136,136,136,112, + 20,51,99,160,64,160,2,87,103,112,136,152,168,200,136,112, + 2,87,103,64,32,136,136,136,136,112,2,87,103,16,32,136, + 136,136,136,112,2,87,103,32,80,136,136,136,136,112,2,87, + 103,80,0,136,136,136,136,112,2,87,103,16,32,136,136,80, + 32,32,2,87,103,128,128,240,136,240,128,128,0,89,105,240, + 136,136,176,136,136,176,128,128,2,87,103,64,32,112,8,120, + 136,120,2,87,103,16,32,112,8,120,136,120,2,87,103,32, + 80,112,8,120,136,120,2,87,103,72,176,112,8,120,136,120, + 2,87,103,80,0,112,8,120,136,120,2,87,103,48,0,112, + 8,120,136,120,2,85,101,240,40,120,160,120,0,87,103,112, + 136,128,136,112,32,96,2,87,103,64,32,112,136,248,128,120, + 2,87,103,16,32,112,136,248,128,120,2,87,103,32,80,112, + 136,248,128,120,2,87,103,80,0,112,136,248,128,120,2,87, + 103,64,32,248,32,32,32,248,2,87,103,16,32,248,32,32, + 32,248,2,87,103,32,80,248,32,32,32,248,2,87,103,80, + 0,248,32,32,32,248,2,87,103,8,56,8,120,136,136,120, + 2,87,103,72,176,176,200,136,136,136,2,87,103,64,32,112, + 136,136,136,112,2,87,103,16,32,112,136,136,136,112,2,87, + 103,32,80,112,136,136,136,112,2,87,103,72,176,112,136,136, + 136,112,2,87,103,80,0,112,136,136,136,112,3,85,101,32, + 0,248,0,32,2,85,101,112,152,168,200,112,2,87,103,64, + 32,136,136,136,136,112,2,87,103,16,32,136,136,136,136,112, + 2,87,103,32,80,136,136,136,136,112,2,87,103,80,0,136, + 136,136,136,112,0,89,105,16,32,136,136,136,136,120,8,112, + 2,87,103,128,128,240,136,240,128,128,0,89,105,80,0,136, + 136,136,136,120,8,112}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 5 h= 7 x= 1 y= 3 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 7 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[159] U8G_SECTION(".progmem.u8g_font_fixed_v0n") = { + 1,7,9,0,254,7,0,0,0,0,42,57,0,7,0,7, + 0,2,87,103,32,168,112,32,112,168,32,3,85,101,32,32, + 248,32,32,18,34,98,64,128,5,81,97,248,18,18,98,128, + 128,2,87,103,8,16,16,32,64,64,128,2,87,103,112,136, + 136,136,136,136,112,2,87,103,32,96,32,32,32,32,248,2, + 87,103,112,136,8,16,32,64,248,2,87,103,240,8,8,48, + 8,8,240,2,87,103,16,144,144,248,16,16,16,2,87,103, + 248,128,128,240,8,8,240,2,87,103,112,128,128,240,136,136, + 112,2,87,103,248,8,8,8,8,8,8,2,87,103,112,136, + 136,112,136,136,112,2,87,103,112,136,136,248,8,8,112}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 7 len= 9 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[878] U8G_SECTION(".progmem.u8g_font_fixed_v0r") = { + 1,7,9,0,254,7,1,46,2,94,32,127,254,7,254,7, + 254,2,0,64,34,23,103,128,128,128,128,0,128,128,23,50, + 98,160,160,3,85,101,80,248,80,248,80,2,87,103,112,168, + 160,112,40,168,112,2,87,103,136,144,16,32,64,72,136,2, + 87,103,104,136,104,144,144,144,104,23,18,98,128,128,2,87, + 103,56,64,128,128,128,64,56,2,87,103,224,16,8,8,8, + 16,224,2,87,103,32,168,112,32,112,168,32,3,85,101,32, + 32,248,32,32,18,34,98,64,128,5,81,97,248,18,18,98, + 128,128,2,87,103,8,16,16,32,64,64,128,2,87,103,112, + 136,136,136,136,136,112,2,87,103,32,96,32,32,32,32,248, + 2,87,103,112,136,8,16,32,64,248,2,87,103,240,8,8, + 48,8,8,240,2,87,103,16,144,144,248,16,16,16,2,87, + 103,248,128,128,240,8,8,240,2,87,103,112,128,128,240,136, + 136,112,2,87,103,248,8,8,8,8,8,8,2,87,103,112, + 136,136,112,136,136,112,2,87,103,112,136,136,248,8,8,112, + 18,21,101,128,128,0,128,128,18,37,101,64,64,0,64,128, + 2,87,103,24,32,64,128,64,32,24,4,83,99,248,0,248, + 2,87,103,192,32,16,8,16,32,192,2,87,103,248,8,8, + 48,0,32,32,2,87,103,112,136,136,168,184,128,112,2,87, + 103,112,136,136,248,136,136,136,2,87,103,240,136,136,240,136, + 136,240,2,87,103,112,136,128,128,128,136,112,2,87,103,240, + 136,136,136,136,136,240,2,87,103,248,128,128,224,128,128,248, + 2,87,103,248,128,128,224,128,128,128,2,87,103,112,136,128, + 184,136,136,112,2,87,103,136,136,136,248,136,136,136,2,87, + 103,248,32,32,32,32,32,248,2,87,103,248,8,8,8,8, + 136,112,2,87,103,136,136,144,224,144,136,136,2,87,103,128, + 128,128,128,128,128,248,2,87,103,136,136,216,168,136,136,136, + 2,87,103,136,136,200,168,152,136,136,2,87,103,112,136,136, + 136,136,136,112,2,87,103,240,136,136,240,128,128,128,2,87, + 103,112,136,136,136,136,168,112,2,87,103,240,136,136,240,160, + 144,136,2,87,103,112,136,128,112,8,136,112,2,87,103,248, + 32,32,32,32,32,32,2,87,103,136,136,136,136,136,136,112, + 2,87,103,136,136,136,136,136,80,32,2,87,103,136,136,136, + 168,168,168,80,2,87,103,136,136,80,32,80,136,136,2,87, + 103,136,136,80,32,32,32,32,2,87,103,248,8,16,32,64, + 128,248,18,55,103,224,128,128,128,128,128,224,2,87,103,128, + 64,64,32,16,16,8,18,55,103,224,32,32,32,32,32,224, + 23,50,98,64,160,2,113,97,254,39,34,98,64,128,2,85, + 101,112,8,120,136,120,2,87,103,128,128,240,136,136,136,240, + 2,85,101,112,136,128,136,112,2,87,103,8,8,120,136,136, + 136,120,2,85,101,112,136,248,128,120,2,87,103,56,64,240, + 64,64,64,64,0,87,103,112,136,136,136,120,8,112,2,87, + 103,128,128,240,136,136,136,136,2,87,103,48,0,248,32,32, + 32,248,0,89,105,48,0,248,8,8,8,8,8,112,2,87, + 103,128,128,136,144,224,144,136,2,87,103,224,32,32,32,32, + 32,248,2,85,101,208,168,168,168,168,2,85,101,176,200,136, + 136,136,2,85,101,112,136,136,136,112,0,87,103,240,136,136, + 136,240,128,128,0,87,103,120,136,136,136,120,8,8,2,85, + 101,184,192,128,128,128,2,85,101,120,128,112,8,240,2,87, + 103,32,32,248,32,32,32,32,2,85,101,136,136,136,136,112, + 2,85,101,136,136,136,80,32,2,85,101,136,168,168,168,80, + 2,85,101,136,80,32,80,136,0,87,103,136,136,136,136,120, + 8,112,2,85,101,248,16,32,64,248,2,87,103,24,32,64, + 192,64,32,24,34,23,103,128,128,128,128,128,128,128,2,87, + 103,192,32,16,24,16,32,192,4,82,98,72,176,255}; +/* + Fontname: -FreeType-FreeDooM-Bold-R-Normal--34-340-72-72-P-170-ISO8859-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=10 x= 4 y=10 dx= 8 dy= 0 ascent=12 len=10 + Font Bounding box w= 7 h=12 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =10 descent= 1 + X Font ascent =12 descent= 0 + Max Font ascent =12 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[1042] U8G_SECTION(".progmem.u8g_font_freedoomr10r") = { + 0,7,12,0,0,10,1,113,3,88,32,127,1,12,0,12, + 0,0,0,0,7,0,1,0,0,0,7,0,1,0,0,0, + 7,0,1,0,0,0,7,0,1,0,0,0,7,0,1,0, + 0,0,7,0,1,0,0,0,7,0,1,0,0,0,7,0, + 1,3,10,10,7,0,2,96,128,128,128,128,128,128,128,128, + 96,3,10,10,7,3,2,192,32,32,32,32,32,32,32,32, + 192,5,5,5,8,1,7,168,112,32,112,168,7,7,7,8, + 0,4,16,16,16,254,16,16,16,2,2,2,7,2,10,64, + 128,7,1,1,8,0,7,254,2,2,2,7,2,2,192,192, + 7,10,10,8,0,2,2,4,4,8,16,16,32,64,64,128, + 6,10,10,7,0,2,252,132,132,132,132,132,132,132,132,252, + 2,10,10,7,4,2,192,64,64,64,64,64,64,64,64,64, + 6,10,10,7,0,2,252,4,4,4,4,252,128,128,128,252, + 6,10,10,7,0,2,252,4,4,4,60,4,4,4,4,252, + 6,10,10,7,0,2,132,132,132,132,132,252,4,4,4,4, + 6,10,10,7,0,2,252,128,128,128,252,4,4,4,4,252, + 6,10,10,7,0,2,252,128,128,128,252,132,132,132,132,252, + 6,10,10,7,0,2,252,4,4,4,4,4,4,4,4,4, + 6,10,10,7,0,2,252,132,132,132,252,132,132,132,132,252, + 6,10,10,7,0,2,252,132,132,132,252,4,4,4,4,252, + 2,7,7,7,2,2,192,192,0,0,0,192,192,0,0,0, + 7,0,1,0,0,0,7,0,1,0,0,0,7,0,1,0, + 0,0,7,0,1,0,0,0,7,0,1,0,0,0,7,0, + 1,7,10,10,8,0,2,254,130,130,130,130,254,130,130,130, + 130,7,10,10,8,0,2,254,130,130,130,252,130,130,130,130, + 254,7,10,10,8,0,2,254,128,128,128,128,128,128,128,128, + 254,7,10,10,8,0,2,252,130,130,130,130,130,130,130,130, + 252,7,10,10,8,0,2,254,128,128,128,248,128,128,128,128, + 254,7,10,10,8,0,2,254,128,128,128,248,128,128,128,128, + 128,7,10,10,8,0,2,254,128,128,128,158,130,130,130,130, + 254,7,10,10,8,0,2,130,130,130,130,254,130,130,130,130, + 130,1,10,10,8,3,2,128,128,128,128,128,128,128,128,128, + 128,7,10,10,8,0,2,30,2,2,2,2,2,130,130,130, + 124,7,10,10,8,0,2,130,132,136,144,224,160,144,136,132, + 130,7,10,10,8,0,2,128,128,128,128,128,128,128,128,128, + 254,7,10,10,8,0,2,130,198,170,146,130,130,130,130,130, + 130,7,10,10,8,0,2,194,194,162,162,146,146,138,138,134, + 134,7,10,10,8,0,2,124,130,130,130,130,130,130,130,130, + 124,7,10,10,8,0,2,254,130,130,130,254,128,128,128,128, + 128,7,10,10,8,0,2,120,132,132,132,132,132,132,132,132, + 126,7,10,10,8,0,2,254,130,130,130,254,160,144,136,132, + 130,7,10,10,8,0,2,254,128,128,128,128,254,2,2,2, + 254,7,9,9,8,0,3,254,16,16,16,16,16,16,16,16, + 7,10,10,8,0,2,130,130,130,130,130,130,130,130,130,254, + 7,10,10,8,0,2,130,130,130,68,68,108,40,40,16,16, + 7,10,10,8,0,2,130,130,130,130,130,146,146,170,170,198, + 7,10,10,8,0,2,130,68,68,40,16,16,40,68,68,130, + 7,10,10,8,0,2,130,130,130,130,254,16,16,16,16,16, + 7,10,10,8,0,2,254,2,6,12,24,48,96,192,128,254, + 4,10,10,7,0,2,240,128,128,128,128,128,128,128,128,240, + 6,10,10,7,0,2,128,64,64,32,32,16,16,8,8,4, + 4,10,10,7,2,2,240,16,16,16,16,16,16,16,16,240, + 5,3,3,7,1,9,32,80,136,6,1,1,7,0,2,252, + 2,2,2,7,2,10,128,64,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1}; +/* + Fontname: -FreeType-FreeDooM-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=24 x= 7 y=13 dx=19 dy= 0 ascent=26 len=72 + Font Bounding box w=18 h=26 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =26 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[943] U8G_SECTION(".progmem.u8g_font_freedoomr25n") = { + 0,18,26,0,0,24,3,112,3,144,32,127,0,26,0,24, + 0,0,0,0,11,0,0,255,255,255,255,255,255,255,255,255, + 255,17,16,48,19,1,6,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,255,255,128,255, + 255,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,7,8,8,11,3,2,62,62,62, + 62,62,240,240,240,9,2,4,11,1,13,255,128,255,128,5, + 5,5,11,5,2,248,248,248,248,248,255,17,24,72,19,1, + 2,255,255,128,255,255,128,192,3,128,192,3,128,192,3,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,192,3,128,192,3,128, + 255,255,128,255,255,128,255,255,128,6,24,24,19,7,2,252, + 252,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,17,24,72,19,1,2,255,255,128, + 255,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,128,0,3,128,0,3,128,0,3,128,0,3,128,255,255, + 128,255,255,128,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,255,255,128,255, + 255,128,255,255,128,17,24,72,19,1,2,255,255,128,255,255, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,0,3,128,0,3,128,31,255,128,31, + 255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3, + 128,0,3,128,0,3,128,0,3,128,255,255,128,255,255,128, + 255,255,128,17,24,72,19,1,2,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,255,255,128,255,255,128, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3, + 128,17,24,72,19,1,2,255,255,128,255,255,128,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,255,255,128,255,255,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,255,255,128,255,255,128,255,255,128,17, + 24,72,19,1,2,255,255,128,255,255,128,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,255,255,128,255,255,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,255,255,128,255,255,128,255,255,128,16,24,48, + 19,2,2,255,255,255,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,17,24,72,19,1,2,255,255,128,255,255,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,255,255,128,255,255,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,255,255,128,255,255,128,255,255, + 128,17,24,72,19,1,2,255,255,128,255,255,128,192,3,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,255,255,128,255,255,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,255,255,128,255,255,128,255,255,128,5, + 16,16,11,5,2,248,248,248,248,248,0,0,0,0,0,0, + 248,248,248,248,248,7,16,16,11,3,2,62,62,62,62,62, + 0,0,0,62,62,62,62,62,240,240,240,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=17 x= 4 y=10 dx=17 dy= 0 ascent=17 len=34 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =17 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11[3948] U8G_SECTION(".progmem.u8g_font_fub11") = { + 0,24,21,255,252,11,2,82,5,55,32,255,253,17,252,11, + 253,0,0,0,5,0,0,2,11,11,6,2,0,192,192,192, + 192,192,192,192,192,0,0,192,6,5,5,8,1,6,204,204, + 204,204,204,10,11,22,11,1,0,9,128,25,128,25,0,127, + 192,51,0,50,0,54,0,255,0,100,0,108,0,76,0,8, + 14,14,10,1,254,8,62,126,203,200,248,126,15,11,203,235, + 126,8,8,15,11,22,17,1,0,60,32,238,96,198,64,198, + 192,231,128,125,124,3,238,2,198,6,198,4,238,8,124,11, + 11,22,13,1,0,62,0,119,0,99,0,119,0,60,0,124, + 192,238,192,199,192,195,192,243,192,63,224,2,5,5,7,2, + 6,192,192,192,192,192,3,14,14,6,1,253,96,96,96,224, + 192,192,192,192,192,192,224,96,96,96,3,14,14,7,2,253, + 192,192,192,96,96,96,96,96,96,96,96,224,192,192,6,5, + 5,10,2,5,120,48,252,48,120,9,9,18,16,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,3,4,4,5,1,254,96,96,192,192,4,2,2,6,1, + 3,240,240,2,2,2,5,2,0,192,192,5,12,12,7,1, + 255,24,24,16,48,48,32,32,96,96,64,192,192,8,11,11, + 9,1,0,60,102,195,195,195,195,195,195,195,102,60,4,11, + 11,9,2,0,48,240,240,48,48,48,48,48,48,48,48,8, + 11,11,9,1,0,62,119,99,3,7,6,30,60,112,224,255, + 8,11,11,9,1,0,124,238,198,6,60,6,3,195,199,126, + 60,8,11,11,9,1,0,14,30,30,54,102,102,198,255,255, + 6,6,8,11,11,9,1,0,254,192,192,192,254,231,3,3, + 199,254,124,8,11,11,9,1,0,60,118,67,192,222,231,195, + 195,195,102,60,8,11,11,9,1,0,255,3,7,6,14,12, + 28,24,56,56,112,8,11,11,9,1,0,126,231,195,231,60, + 102,195,195,195,231,60,8,11,11,9,1,0,60,102,195,195, + 231,127,3,3,198,110,60,2,8,8,5,2,0,192,192,0, + 0,0,0,192,192,3,10,10,5,1,254,96,96,0,0,0, + 0,96,96,192,192,10,8,16,16,3,1,0,64,3,128,12, + 0,112,0,128,0,112,0,14,0,1,192,10,4,8,16,3, + 3,255,192,0,0,0,0,255,192,10,8,16,16,3,1,128, + 0,96,0,28,0,3,128,0,192,7,0,24,0,224,0,7, + 11,11,9,1,0,120,238,134,6,12,24,48,48,48,0,48, + 15,14,28,17,1,253,7,224,30,120,48,28,103,236,238,230, + 204,102,204,102,204,102,204,102,239,252,103,184,48,0,28,32, + 7,224,11,11,22,11,0,0,14,0,14,0,15,0,27,0, + 27,128,57,128,49,128,63,192,127,192,96,224,224,96,9,11, + 22,11,1,0,254,0,199,0,195,0,195,0,199,0,252,0, + 195,0,193,128,193,128,195,128,254,0,10,11,22,12,1,0, + 31,0,115,128,97,192,192,0,192,0,192,0,192,0,193,192, + 97,192,115,128,31,0,9,11,22,11,1,0,252,0,207,0, + 195,0,193,128,193,128,193,128,193,128,193,128,195,0,207,0, + 252,0,8,11,11,10,1,0,255,192,192,192,192,255,192,192, + 192,192,255,8,11,11,9,1,0,255,192,192,192,192,254,192, + 192,192,192,192,10,11,22,12,1,0,31,0,59,192,96,192, + 224,0,192,0,195,192,192,192,192,192,96,192,57,192,31,192, + 9,11,22,11,1,0,193,128,193,128,193,128,193,128,193,128, + 255,128,193,128,193,128,193,128,193,128,193,128,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,8,11,11, + 10,1,0,3,3,3,3,3,3,3,195,195,254,124,9,11, + 22,11,1,0,195,0,199,0,206,0,220,0,248,0,248,0, + 220,0,206,0,206,0,199,0,195,128,8,11,11,9,1,0, + 192,192,192,192,192,192,192,192,192,255,255,13,11,22,15,1, + 0,240,120,240,120,248,248,216,216,216,216,221,216,205,152,205, + 152,207,152,199,24,199,24,10,11,22,12,1,0,240,192,240, + 192,248,192,216,192,220,192,204,192,206,192,198,192,199,192,195, + 192,195,192,11,11,22,13,1,0,31,0,123,192,96,192,192, + 96,192,96,192,96,192,96,192,96,96,192,123,192,31,0,8, + 11,11,10,1,0,252,199,195,195,199,254,192,192,192,192,192, + 12,11,22,14,1,0,31,0,123,128,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,240,9,11,22,11, + 1,0,254,0,199,128,193,128,193,128,195,0,254,0,195,0, + 193,128,193,128,193,128,193,128,9,11,22,11,1,0,62,0, + 119,0,193,128,224,0,248,0,127,0,15,128,1,128,193,128, + 119,0,62,0,9,11,22,11,1,0,255,128,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 10,11,22,12,1,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,225,192,115,128,62,0,11,11,22,12, + 0,0,224,96,96,96,112,224,48,192,49,192,57,128,25,128, + 31,128,31,0,15,0,14,0,16,11,22,16,0,0,225,135, + 99,198,99,198,99,198,119,206,54,108,54,108,54,108,60,60, + 28,56,28,56,11,11,22,11,0,0,112,192,49,192,59,128, + 31,0,14,0,14,0,31,0,27,0,51,128,113,192,224,224, + 10,11,22,10,0,0,225,192,113,128,51,128,59,0,31,0, + 30,0,12,0,12,0,12,0,12,0,12,0,8,11,11,10, + 1,0,255,7,6,14,28,24,56,112,96,192,255,4,14,14, + 6,1,253,240,192,192,192,192,192,192,192,192,192,192,192,192, + 240,5,12,12,7,1,255,128,192,192,64,96,96,32,48,48, + 16,16,24,4,14,14,7,1,253,240,48,48,48,48,48,48, + 48,48,48,48,48,48,240,8,10,10,16,4,0,16,24,24, + 36,36,36,66,66,129,129,8,1,1,8,0,254,255,3,3, + 3,4,0,9,192,64,32,7,8,8,9,1,0,60,110,6, + 126,230,198,238,118,8,11,11,10,1,0,192,192,192,220,246, + 199,195,195,195,230,220,7,8,8,9,1,0,60,110,198,192, + 192,198,238,60,8,11,11,10,1,0,3,3,3,59,111,227, + 195,195,195,103,59,7,8,8,9,1,0,60,110,198,254,192, + 198,110,60,5,11,11,7,1,0,56,48,48,248,48,48,48, + 48,48,48,48,8,11,11,10,1,253,59,111,227,195,195,195, + 103,59,3,103,60,7,11,11,9,1,0,192,192,192,220,238, + 198,198,198,198,198,198,2,11,11,4,1,0,192,192,0,192, + 192,192,192,192,192,192,192,3,14,14,5,1,253,96,96,0, + 96,96,96,96,96,96,96,96,96,224,224,7,11,11,9,1, + 0,192,192,192,206,220,216,240,216,220,204,198,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,12,8,16, + 14,1,0,220,224,239,112,198,48,198,48,198,48,198,48,198, + 48,198,48,7,8,8,9,1,0,220,238,198,198,198,198,198, + 198,8,8,8,10,1,0,60,102,195,195,195,195,102,60,8, + 11,11,10,1,253,220,230,195,195,195,199,246,220,192,192,192, + 8,11,11,10,1,253,59,103,195,195,195,195,111,59,3,3, + 3,5,8,8,7,1,0,216,240,192,192,192,192,192,192,7, + 8,8,9,1,0,124,238,192,248,30,198,238,124,6,10,10, + 8,1,0,48,48,252,48,48,48,48,48,56,28,7,8,8, + 9,1,0,198,198,198,198,198,198,238,118,8,8,8,9,0, + 0,227,99,103,118,54,60,28,28,13,8,16,14,0,0,231, + 24,103,152,103,152,111,176,61,240,60,240,60,240,56,224,8, + 8,8,9,0,0,99,118,62,28,60,62,103,227,8,11,11, + 9,0,253,227,99,119,54,54,62,28,28,24,24,56,6,8, + 8,8,1,0,252,12,24,56,112,96,192,252,6,15,15,8, + 1,252,28,56,48,48,48,48,112,192,96,48,48,48,48,48, + 28,1,16,16,5,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,15,15,8,1,252,224,112,48, + 48,48,48,24,12,24,48,48,48,48,48,240,8,2,2,9, + 0,3,121,223,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,5,0,0,2,11,11,6,2, + 253,192,0,0,192,192,192,192,192,192,192,192,7,12,12,9, + 1,254,4,4,60,110,206,208,208,214,110,60,32,64,8,11, + 11,10,1,0,62,119,96,96,252,96,96,96,96,96,255,9, + 8,16,10,1,2,128,128,93,0,34,0,65,0,65,0,34, + 0,93,0,128,128,9,11,22,11,1,0,195,128,99,0,103, + 0,247,128,62,0,60,0,255,128,24,0,24,0,24,0,24, + 0,1,14,14,5,2,253,128,128,128,128,128,128,0,0,128, + 128,128,128,128,128,6,14,14,8,1,253,120,236,192,224,120, + 124,204,204,248,120,28,12,156,248,5,1,1,5,0,10,216, + 12,11,22,14,1,0,31,128,57,192,111,96,217,176,152,16, + 152,16,153,144,143,16,64,32,48,192,31,128,5,8,8,7, + 1,3,112,216,120,216,216,120,0,248,8,6,6,10,1,1, + 103,102,238,206,102,103,9,4,8,10,0,3,255,128,0,128, + 0,128,0,128,255,12,11,22,14,1,0,31,128,57,192,111, + 96,201,176,136,144,143,16,137,144,136,144,72,160,48,192,31, + 128,5,1,1,5,0,10,248,4,4,4,6,1,7,96,208, + 144,240,9,10,20,16,3,0,8,0,8,0,8,0,255,128, + 8,0,8,0,8,0,0,0,0,0,255,128,5,6,6,7, + 1,5,112,216,24,48,192,248,5,7,7,7,1,4,112,216, + 24,112,24,216,112,3,3,3,4,1,9,96,192,128,255,7, + 14,14,9,1,253,126,244,244,244,244,116,20,20,20,20,20, + 20,20,20,2,2,2,4,1,4,192,192,4,4,4,3,0, + 252,64,48,176,224,3,6,6,5,1,5,96,224,96,96,96, + 96,6,8,8,8,1,3,120,252,204,204,204,120,0,252,8, + 6,6,10,1,1,204,102,103,103,102,204,12,11,22,13,1, + 0,224,128,97,128,99,0,99,0,102,0,108,224,12,224,25, + 224,25,96,51,240,96,96,11,11,22,13,1,0,97,0,227, + 0,98,0,102,0,100,0,109,224,27,96,24,96,49,192,35, + 0,99,224,12,11,22,13,1,0,120,192,216,128,113,128,217, + 0,115,0,6,96,4,224,13,224,25,96,25,240,48,96,7, + 11,11,9,1,253,24,0,24,24,56,112,224,192,194,254,60, + 11,16,32,11,0,0,24,0,12,0,4,0,0,0,0,0, + 14,0,14,0,15,0,27,0,27,128,57,128,49,128,63,192, + 127,192,96,224,224,96,11,16,32,11,0,0,3,0,2,0, + 4,0,0,0,0,0,14,0,14,0,15,0,27,0,27,128, + 57,128,49,128,63,192,127,192,96,224,224,96,11,16,32,11, + 0,0,6,0,14,0,25,0,0,0,0,0,14,0,14,0, + 15,0,27,0,27,128,57,128,49,128,63,192,127,192,96,224, + 224,96,11,15,30,11,0,0,13,0,23,0,0,0,0,0, + 14,0,14,0,15,0,27,0,27,128,57,128,49,128,63,192, + 127,192,96,224,224,96,11,15,30,11,0,0,27,0,0,0, + 0,0,0,0,14,0,14,0,15,0,27,0,27,0,59,128, + 49,128,63,192,127,192,96,224,224,96,10,17,34,12,1,0, + 12,0,18,0,18,0,30,0,0,0,0,0,12,0,30,0, + 30,0,63,0,51,0,51,0,99,128,127,128,255,192,192,192, + 192,192,15,11,22,16,0,0,3,254,7,128,7,128,13,128, + 29,128,25,254,57,128,63,128,97,128,97,128,193,254,10,15, + 30,12,1,252,31,0,119,128,97,192,192,0,192,0,192,0, + 192,0,193,192,97,192,115,128,62,0,8,0,14,0,2,0, + 28,0,8,16,16,10,1,0,96,48,24,0,0,255,192,192, + 192,192,255,192,192,192,192,255,8,16,16,10,1,0,12,8, + 16,0,0,255,192,192,192,192,255,192,192,192,192,255,8,16, + 16,10,1,0,24,60,36,0,0,255,192,192,192,192,255,192, + 192,192,192,255,8,15,15,10,1,0,102,0,0,0,255,192, + 192,192,192,255,192,192,192,192,255,4,16,16,4,255,0,192, + 96,48,0,0,48,48,48,48,48,48,48,48,48,48,48,4, + 16,16,4,1,0,112,96,192,0,0,192,192,192,192,192,192, + 192,192,192,192,192,4,16,16,4,0,0,96,240,144,0,0, + 96,96,96,96,96,96,96,96,96,96,96,5,15,15,5,0, + 0,216,0,0,0,48,48,48,48,48,48,48,48,48,48,48, + 11,11,22,12,0,0,127,0,99,128,96,192,96,224,96,96, + 252,96,96,96,96,224,96,192,99,128,127,0,10,15,30,12, + 1,0,25,0,22,0,0,0,0,0,240,192,240,192,248,192, + 216,192,220,192,204,192,206,192,198,192,199,192,195,192,195,192, + 11,16,32,13,1,0,24,0,8,0,12,0,0,0,0,0, + 31,0,123,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,123,192,31,0,11,16,32,13,1,0,3,0,2,0, + 4,0,0,0,0,0,31,0,123,192,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,0,11,16,32,13, + 1,0,14,0,27,0,17,0,0,0,0,0,31,0,123,192, + 96,192,192,96,192,96,192,96,192,96,192,96,96,192,123,192, + 31,0,11,15,30,13,1,0,31,0,0,0,0,0,0,0, + 31,0,123,192,96,192,192,96,192,96,192,96,192,96,224,224, + 96,192,127,192,31,0,11,15,30,13,1,0,27,0,0,0, + 0,0,0,0,31,0,123,192,96,192,192,96,192,96,192,96, + 192,96,192,96,96,192,123,192,31,0,8,8,8,16,4,0, + 129,195,102,24,24,36,66,129,11,11,22,13,1,0,31,160, + 59,192,96,192,193,96,194,96,196,96,200,96,208,96,224,192, + 123,128,191,0,10,16,32,12,1,0,48,0,24,0,8,0, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,62,0,10,16,32,12,1,0, + 3,0,6,0,4,0,0,0,0,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,225,192,127,128,62,0, + 10,16,32,12,1,0,28,0,30,0,51,0,0,0,0,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,62,0,10,15,30,12,1,0,51,0,0,0, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,115,128,62,0,10,16,32,10,0,0, + 6,0,6,0,4,0,0,0,0,0,225,192,113,128,51,128, + 59,0,31,0,30,0,12,0,12,0,12,0,12,0,12,0, + 8,11,11,10,1,0,192,192,254,199,195,195,199,254,192,192, + 192,8,11,11,10,1,0,124,238,198,206,220,216,206,199,195, + 219,222,7,12,12,9,1,0,96,48,16,0,60,110,6,126, + 230,198,238,118,7,12,12,9,1,0,12,24,16,0,60,110, + 6,126,230,198,238,118,7,12,12,9,1,0,56,44,68,0, + 60,110,6,126,230,198,238,118,7,11,11,9,1,0,60,0, + 0,60,110,6,126,230,198,238,118,7,11,11,9,1,0,108, + 0,0,60,230,6,126,230,198,238,118,7,13,13,9,1,0, + 24,36,36,60,0,60,102,6,126,230,198,238,126,13,8,16, + 15,1,0,60,224,103,176,7,24,127,248,231,0,199,24,237, + 184,120,240,7,12,12,9,1,252,60,110,198,192,192,198,110, + 60,16,28,4,56,7,13,13,9,1,0,96,32,48,16,0, + 60,110,198,254,192,198,110,60,7,13,13,9,1,0,12,12, + 24,16,0,60,110,198,254,192,198,110,60,7,13,13,9,1, + 0,24,56,44,68,0,60,110,198,254,192,198,110,60,7,12, + 12,9,1,0,108,0,0,0,60,110,198,254,192,206,110,60, + 3,12,12,4,0,0,192,96,32,0,96,96,96,96,96,96, + 96,96,3,12,12,4,1,0,96,192,128,0,192,192,192,192, + 192,192,192,192,5,12,12,4,0,0,96,208,136,0,96,96, + 96,96,96,96,96,96,5,11,11,5,0,0,216,0,0,48, + 48,48,48,48,48,48,48,8,11,11,10,1,0,51,28,102, + 62,103,195,195,195,195,103,60,7,11,11,9,1,0,60,0, + 0,220,238,198,198,198,198,198,198,8,13,13,10,1,0,96, + 48,16,8,0,60,102,195,195,195,195,102,60,8,13,13,10, + 1,0,6,12,8,16,0,60,102,195,195,195,195,102,60,8, + 13,13,10,1,0,24,28,36,34,0,60,102,195,195,195,195, + 102,60,8,11,11,10,1,0,60,0,0,60,102,195,195,195, + 195,102,60,8,12,12,10,1,0,102,0,0,0,60,102,195, + 195,195,195,102,60,10,6,12,16,3,2,12,0,0,0,255, + 192,0,0,0,0,12,0,8,10,10,10,1,255,1,62,102, + 207,203,211,227,118,252,128,7,12,12,9,1,0,96,48,16, + 0,198,198,198,198,198,198,238,118,7,12,12,9,1,0,12, + 24,16,0,198,198,198,198,198,198,238,118,7,12,12,9,1, + 0,56,40,68,0,198,198,198,198,198,198,238,118,7,11,11, + 9,1,0,108,0,0,198,198,198,198,198,198,238,118,9,16, + 32,9,0,253,7,0,6,0,12,0,8,0,0,0,99,128, + 99,0,115,0,54,0,54,0,30,0,28,0,28,0,28,0, + 248,0,112,0,8,14,14,10,1,253,192,192,192,220,230,195, + 195,195,199,230,220,192,192,192,8,14,14,9,1,253,108,0, + 0,199,198,238,108,108,60,56,56,56,48,48}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 9 h=12 x= 3 y= 5 dx=16 dy= 0 ascent=11 len=18 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11n[266] U8G_SECTION(".progmem.u8g_font_fub11n") = { + 0,24,21,255,252,11,0,0,0,0,42,57,0,11,254,11, + 0,6,5,5,10,2,5,120,48,252,48,120,9,9,18,16, + 3,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,3,4,4,5,1,254,96,96,192,192,4,2, + 2,6,1,3,240,240,2,2,2,5,2,0,192,192,5,12, + 12,7,1,255,24,24,16,48,48,32,32,96,96,64,192,192, + 8,11,11,9,1,0,60,102,195,195,195,195,195,195,195,102, + 60,4,11,11,9,2,0,48,240,240,48,48,48,48,48,48, + 48,48,8,11,11,9,1,0,62,119,99,3,7,6,30,60, + 112,224,255,8,11,11,9,1,0,124,238,198,6,60,6,3, + 195,199,126,60,8,11,11,9,1,0,14,30,30,54,102,102, + 198,255,255,6,6,8,11,11,9,1,0,254,192,192,192,254, + 231,3,3,199,254,124,8,11,11,9,1,0,60,118,67,192, + 222,231,195,195,195,102,60,8,11,11,9,1,0,255,3,7, + 6,14,12,28,24,56,56,112,8,11,11,9,1,0,126,231, + 195,231,60,102,195,195,195,231,60,8,11,11,9,1,0,60, + 102,195,195,231,127,3,3,198,110,60}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 4 y= 9 dx=17 dy= 0 ascent=12 len=28 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11r[1829] U8G_SECTION(".progmem.u8g_font_fub11r") = { + 0,24,21,255,252,11,2,82,5,55,32,127,253,12,252,11, + 253,0,0,0,5,0,0,2,11,11,6,2,0,192,192,192, + 192,192,192,192,192,0,0,192,6,5,5,8,1,6,204,204, + 204,204,204,10,11,22,11,1,0,9,128,25,128,25,0,127, + 192,51,0,50,0,54,0,255,0,100,0,108,0,76,0,8, + 14,14,10,1,254,8,62,126,203,200,248,126,15,11,203,235, + 126,8,8,15,11,22,17,1,0,60,32,238,96,198,64,198, + 192,231,128,125,124,3,238,2,198,6,198,4,238,8,124,11, + 11,22,13,1,0,62,0,119,0,99,0,119,0,60,0,124, + 192,238,192,199,192,195,192,243,192,63,224,2,5,5,7,2, + 6,192,192,192,192,192,3,14,14,6,1,253,96,96,96,224, + 192,192,192,192,192,192,224,96,96,96,3,14,14,7,2,253, + 192,192,192,96,96,96,96,96,96,96,96,224,192,192,6,5, + 5,10,2,5,120,48,252,48,120,9,9,18,16,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,3,4,4,5,1,254,96,96,192,192,4,2,2,6,1, + 3,240,240,2,2,2,5,2,0,192,192,5,12,12,7,1, + 255,24,24,16,48,48,32,32,96,96,64,192,192,8,11,11, + 9,1,0,60,102,195,195,195,195,195,195,195,102,60,4,11, + 11,9,2,0,48,240,240,48,48,48,48,48,48,48,48,8, + 11,11,9,1,0,62,119,99,3,7,6,30,60,112,224,255, + 8,11,11,9,1,0,124,238,198,6,60,6,3,195,199,126, + 60,8,11,11,9,1,0,14,30,30,54,102,102,198,255,255, + 6,6,8,11,11,9,1,0,254,192,192,192,254,231,3,3, + 199,254,124,8,11,11,9,1,0,60,118,67,192,222,231,195, + 195,195,102,60,8,11,11,9,1,0,255,3,7,6,14,12, + 28,24,56,56,112,8,11,11,9,1,0,126,231,195,231,60, + 102,195,195,195,231,60,8,11,11,9,1,0,60,102,195,195, + 231,127,3,3,198,110,60,2,8,8,5,2,0,192,192,0, + 0,0,0,192,192,3,10,10,5,1,254,96,96,0,0,0, + 0,96,96,192,192,10,8,16,16,3,1,0,64,3,128,12, + 0,112,0,128,0,112,0,14,0,1,192,10,4,8,16,3, + 3,255,192,0,0,0,0,255,192,10,8,16,16,3,1,128, + 0,96,0,28,0,3,128,0,192,7,0,24,0,224,0,7, + 11,11,9,1,0,120,238,134,6,12,24,48,48,48,0,48, + 15,14,28,17,1,253,7,224,30,120,48,28,103,236,238,230, + 204,102,204,102,204,102,204,102,239,252,103,184,48,0,28,32, + 7,224,11,11,22,11,0,0,14,0,14,0,15,0,27,0, + 27,128,57,128,49,128,63,192,127,192,96,224,224,96,9,11, + 22,11,1,0,254,0,199,0,195,0,195,0,199,0,252,0, + 195,0,193,128,193,128,195,128,254,0,10,11,22,12,1,0, + 31,0,115,128,97,192,192,0,192,0,192,0,192,0,193,192, + 97,192,115,128,31,0,9,11,22,11,1,0,252,0,207,0, + 195,0,193,128,193,128,193,128,193,128,193,128,195,0,207,0, + 252,0,8,11,11,10,1,0,255,192,192,192,192,255,192,192, + 192,192,255,8,11,11,9,1,0,255,192,192,192,192,254,192, + 192,192,192,192,10,11,22,12,1,0,31,0,59,192,96,192, + 224,0,192,0,195,192,192,192,192,192,96,192,57,192,31,192, + 9,11,22,11,1,0,193,128,193,128,193,128,193,128,193,128, + 255,128,193,128,193,128,193,128,193,128,193,128,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,8,11,11, + 10,1,0,3,3,3,3,3,3,3,195,195,254,124,9,11, + 22,11,1,0,195,0,199,0,206,0,220,0,248,0,248,0, + 220,0,206,0,206,0,199,0,195,128,8,11,11,9,1,0, + 192,192,192,192,192,192,192,192,192,255,255,13,11,22,15,1, + 0,240,120,240,120,248,248,216,216,216,216,221,216,205,152,205, + 152,207,152,199,24,199,24,10,11,22,12,1,0,240,192,240, + 192,248,192,216,192,220,192,204,192,206,192,198,192,199,192,195, + 192,195,192,11,11,22,13,1,0,31,0,123,192,96,192,192, + 96,192,96,192,96,192,96,192,96,96,192,123,192,31,0,8, + 11,11,10,1,0,252,199,195,195,199,254,192,192,192,192,192, + 12,11,22,14,1,0,31,0,123,128,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,240,9,11,22,11, + 1,0,254,0,199,128,193,128,193,128,195,0,254,0,195,0, + 193,128,193,128,193,128,193,128,9,11,22,11,1,0,62,0, + 119,0,193,128,224,0,248,0,127,0,15,128,1,128,193,128, + 119,0,62,0,9,11,22,11,1,0,255,128,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 10,11,22,12,1,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,225,192,115,128,62,0,11,11,22,12, + 0,0,224,96,96,96,112,224,48,192,49,192,57,128,25,128, + 31,128,31,0,15,0,14,0,16,11,22,16,0,0,225,135, + 99,198,99,198,99,198,119,206,54,108,54,108,54,108,60,60, + 28,56,28,56,11,11,22,11,0,0,112,192,49,192,59,128, + 31,0,14,0,14,0,31,0,27,0,51,128,113,192,224,224, + 10,11,22,10,0,0,225,192,113,128,51,128,59,0,31,0, + 30,0,12,0,12,0,12,0,12,0,12,0,8,11,11,10, + 1,0,255,7,6,14,28,24,56,112,96,192,255,4,14,14, + 6,1,253,240,192,192,192,192,192,192,192,192,192,192,192,192, + 240,5,12,12,7,1,255,128,192,192,64,96,96,32,48,48, + 16,16,24,4,14,14,7,1,253,240,48,48,48,48,48,48, + 48,48,48,48,48,48,240,8,10,10,16,4,0,16,24,24, + 36,36,36,66,66,129,129,8,1,1,8,0,254,255,3,3, + 3,4,0,9,192,64,32,7,8,8,9,1,0,60,110,6, + 126,230,198,238,118,8,11,11,10,1,0,192,192,192,220,246, + 199,195,195,195,230,220,7,8,8,9,1,0,60,110,198,192, + 192,198,238,60,8,11,11,10,1,0,3,3,3,59,111,227, + 195,195,195,103,59,7,8,8,9,1,0,60,110,198,254,192, + 198,110,60,5,11,11,7,1,0,56,48,48,248,48,48,48, + 48,48,48,48,8,11,11,10,1,253,59,111,227,195,195,195, + 103,59,3,103,60,7,11,11,9,1,0,192,192,192,220,238, + 198,198,198,198,198,198,2,11,11,4,1,0,192,192,0,192, + 192,192,192,192,192,192,192,3,14,14,5,1,253,96,96,0, + 96,96,96,96,96,96,96,96,96,224,224,7,11,11,9,1, + 0,192,192,192,206,220,216,240,216,220,204,198,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,12,8,16, + 14,1,0,220,224,239,112,198,48,198,48,198,48,198,48,198, + 48,198,48,7,8,8,9,1,0,220,238,198,198,198,198,198, + 198,8,8,8,10,1,0,60,102,195,195,195,195,102,60,8, + 11,11,10,1,253,220,230,195,195,195,199,246,220,192,192,192, + 8,11,11,10,1,253,59,103,195,195,195,195,111,59,3,3, + 3,5,8,8,7,1,0,216,240,192,192,192,192,192,192,7, + 8,8,9,1,0,124,238,192,248,30,198,238,124,6,10,10, + 8,1,0,48,48,252,48,48,48,48,48,56,28,7,8,8, + 9,1,0,198,198,198,198,198,198,238,118,8,8,8,9,0, + 0,227,99,103,118,54,60,28,28,13,8,16,14,0,0,231, + 24,103,152,103,152,111,176,61,240,60,240,60,240,56,224,8, + 8,8,9,0,0,99,118,62,28,60,62,103,227,8,11,11, + 9,0,253,227,99,119,54,54,62,28,28,24,24,56,6,8, + 8,8,1,0,252,12,24,56,112,96,192,252,6,15,15,8, + 1,252,28,56,48,48,48,48,112,192,96,48,48,48,48,48, + 28,1,16,16,5,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,15,15,8,1,252,224,112,48, + 48,48,48,24,12,24,48,48,48,48,48,240,8,2,2,9, + 0,3,121,223,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=21 x= 5 y=12 dx=21 dy= 0 ascent=21 len=54 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14[5788] U8G_SECTION(".progmem.u8g_font_fub14") = { + 0,31,26,254,251,14,3,116,7,95,32,255,252,21,251,14, + 252,0,0,0,6,0,0,3,14,14,8,3,0,224,224,224, + 224,224,224,224,224,224,224,0,0,224,224,8,6,6,10,1, + 8,231,103,103,103,103,103,12,14,28,14,1,0,6,96,6, + 96,12,96,63,240,63,240,24,192,25,128,25,128,255,224,255, + 224,51,0,51,0,99,0,102,0,10,17,34,12,1,254,4, + 0,31,0,127,128,119,128,229,192,228,0,252,0,126,0,31, + 128,7,192,5,192,229,192,229,192,127,128,63,0,4,0,4, + 0,18,14,42,20,1,0,60,4,0,126,12,0,195,24,0, + 195,16,0,195,48,0,231,96,0,126,103,0,24,205,128,0, + 152,192,1,152,192,3,24,192,3,24,192,6,15,128,12,7, + 0,14,14,28,16,1,0,31,0,127,128,113,192,113,192,115, + 128,63,0,30,0,126,56,247,48,227,176,225,240,224,224,127, + 240,31,188,3,6,6,8,3,8,224,192,192,192,192,192,4, + 17,17,8,2,253,48,112,112,96,224,224,224,224,224,224,224, + 224,224,96,112,112,48,4,17,17,8,2,253,192,192,224,224, + 96,96,112,112,112,112,112,96,96,224,224,192,192,8,7,7, + 12,2,7,102,60,24,255,24,60,102,12,12,24,20,4,0, + 2,0,2,0,2,0,2,0,2,0,255,240,255,240,2,0, + 2,0,2,0,2,0,2,0,4,5,5,6,1,254,112,112, + 96,224,192,5,3,3,7,1,4,248,248,248,3,3,3,6, + 2,0,224,224,224,6,15,15,9,1,255,12,12,12,12,24, + 24,24,48,48,48,96,96,96,96,192,10,14,28,11,1,0, + 30,0,127,0,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,6,14,14,11, + 2,0,28,124,252,220,28,28,28,28,28,28,28,28,28,28, + 10,14,28,11,1,0,31,0,127,128,97,192,225,192,1,192, + 1,192,3,128,7,128,15,0,30,0,56,0,112,0,255,192, + 255,192,10,14,28,11,1,0,62,0,127,0,227,128,3,128, + 3,128,31,0,31,0,3,128,1,192,1,192,225,192,243,128, + 127,0,62,0,11,14,28,11,1,0,7,128,15,128,15,128, + 27,128,59,128,51,128,115,128,99,128,227,128,255,224,255,224, + 3,128,3,128,3,128,10,14,28,11,1,0,255,128,255,128, + 224,0,224,0,224,0,255,0,255,128,225,128,1,192,1,192, + 225,192,227,128,127,0,62,0,10,14,28,11,1,0,30,0, + 63,128,97,128,96,0,224,0,223,0,255,128,225,128,225,192, + 225,192,225,192,97,128,127,128,30,0,10,14,28,11,1,0, + 255,192,255,192,1,192,3,128,3,128,7,128,7,0,7,0, + 14,0,14,0,28,0,28,0,60,0,56,0,10,14,28,11, + 1,0,63,0,127,128,225,192,225,192,225,128,127,0,63,0, + 115,128,225,192,225,192,225,192,225,192,127,128,63,0,10,14, + 28,11,1,0,30,0,127,0,225,128,225,128,225,192,225,192, + 243,192,127,192,25,192,1,128,225,128,99,128,127,0,62,0, + 3,10,10,7,3,0,224,224,224,0,0,0,0,224,224,224, + 4,12,12,6,1,254,112,112,112,0,0,0,0,112,96,224, + 192,192,12,10,20,20,4,1,0,16,0,224,3,128,28,0, + 224,0,192,0,56,0,7,0,1,192,0,48,12,5,10,20, + 4,3,255,240,255,240,0,0,255,240,255,240,12,10,20,20, + 4,1,128,0,112,0,28,0,3,128,0,112,0,48,1,192, + 14,0,56,0,192,0,9,14,28,11,1,0,62,0,127,0, + 195,128,67,128,3,128,7,0,6,0,12,0,24,0,24,0, + 24,0,0,0,24,0,24,0,19,18,54,21,1,252,1,248, + 0,15,254,0,30,7,128,56,3,192,113,253,192,115,252,224, + 231,28,224,231,28,224,231,28,224,231,28,224,231,28,224,231, + 60,192,115,255,192,113,231,128,56,0,0,30,4,0,15,252, + 0,3,252,0,14,14,28,14,0,0,7,128,7,128,7,192, + 15,192,14,192,28,224,28,224,28,96,56,112,63,240,63,248, + 112,56,112,56,224,28,11,14,28,13,1,0,255,0,255,128, + 225,192,225,192,225,192,227,128,255,0,255,128,224,192,224,224, + 224,224,224,224,255,192,255,0,13,14,28,15,1,0,15,128, + 63,224,112,112,96,112,224,0,224,0,224,0,224,0,224,0, + 224,120,96,112,112,240,63,224,15,128,12,14,28,14,1,0, + 255,0,255,192,225,224,224,224,224,112,224,112,224,112,224,112, + 224,112,224,112,224,224,225,224,255,192,255,0,10,14,28,12, + 1,0,255,192,255,192,224,0,224,0,224,0,224,0,255,128, + 255,128,224,0,224,0,224,0,224,0,255,192,255,192,9,14, + 28,11,1,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,128,255,128,224,0,224,0,224,0,224,0,224,0,224,0, + 13,14,28,15,1,0,15,192,31,240,56,56,112,56,224,0, + 224,0,225,248,225,248,224,56,224,56,112,56,120,56,63,248, + 15,240,12,14,28,14,1,0,224,112,224,112,224,112,224,112, + 224,112,224,112,255,240,255,240,224,112,224,112,224,112,224,112, + 224,112,224,112,3,14,14,5,1,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,10,14,28,12,1,0,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 225,192,225,192,243,192,127,128,62,0,11,14,28,13,1,0, + 225,224,227,192,227,128,231,0,238,0,252,0,252,0,254,0, + 238,0,231,0,231,128,227,192,225,192,224,224,10,14,28,11, + 1,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,192,255,192,16,14, + 28,18,1,0,248,31,248,31,252,63,252,63,252,55,236,119, + 238,119,238,103,230,231,231,231,231,199,227,199,227,199,227,135, + 13,14,28,15,1,0,240,56,248,56,248,56,252,56,238,56, + 238,56,231,56,231,56,227,184,227,184,225,248,225,248,224,248, + 224,248,14,14,28,16,1,0,15,192,63,240,112,112,96,56, + 224,24,224,28,224,28,224,28,224,28,224,24,96,56,112,112, + 63,240,15,192,11,14,28,13,1,0,255,0,255,192,225,192, + 224,224,224,224,224,224,225,192,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,15,14,28,17,1,0,15,192,63,224, + 112,112,96,56,224,24,224,28,224,28,224,28,224,28,224,24, + 96,56,112,120,63,254,15,254,11,14,28,13,1,0,255,128, + 255,192,224,224,224,224,224,224,224,224,255,128,255,192,225,192, + 224,224,224,224,224,224,224,224,224,96,12,14,28,14,1,0, + 31,128,63,192,96,224,224,224,224,0,252,0,127,128,31,224, + 3,224,0,112,224,112,224,96,127,192,31,128,12,14,28,14, + 1,0,255,240,255,240,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,12,14, + 28,14,1,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,112,224,63,192,31,128, + 14,14,28,15,0,0,240,28,112,28,112,60,56,56,56,56, + 56,112,28,112,28,112,30,224,14,224,15,192,7,192,7,192, + 7,128,20,14,42,20,0,0,240,240,240,112,240,224,112,240, + 224,113,248,224,113,248,224,57,153,192,57,153,192,59,157,192, + 59,157,192,27,13,128,31,15,128,31,15,128,31,15,128,14, + 7,0,12,14,28,14,1,0,224,112,112,224,120,224,57,192, + 31,128,31,0,15,0,15,0,31,128,59,192,57,192,112,224, + 224,240,224,112,12,14,28,13,0,0,240,112,112,240,56,224, + 56,224,29,192,29,192,15,128,15,0,7,0,7,0,7,0, + 7,0,7,0,7,0,11,14,28,13,1,0,127,224,127,224, + 1,224,3,192,3,128,7,128,15,0,30,0,30,0,60,0, + 120,0,248,0,255,224,255,224,5,18,18,8,2,252,248,248, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,248,248, + 6,15,15,9,1,255,192,192,96,96,96,48,48,48,16,24, + 24,24,12,12,12,5,18,18,8,2,252,248,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,248,248,10,12,24, + 20,5,0,12,0,12,0,12,0,18,0,18,0,51,0,33, + 0,33,0,64,128,64,128,192,192,128,64,10,2,4,10,0, + 253,255,192,255,192,5,4,4,5,255,12,224,112,48,24,9, + 10,20,11,1,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,10,14,28,12,1,0,224, + 0,224,0,224,0,224,0,239,0,255,128,225,192,225,192,225, + 192,225,192,225,192,225,128,255,128,239,0,9,10,20,11,1, + 0,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,10,14,28,12,1,0,1,192,1,192,1, + 192,1,192,61,192,127,192,225,192,225,192,225,192,225,192,225, + 192,225,192,127,192,61,192,9,10,20,11,1,0,30,0,127, + 0,227,128,227,128,255,128,255,128,224,0,227,128,127,128,62, + 0,7,14,14,8,1,0,30,62,56,56,254,254,56,56,56, + 56,56,56,56,56,10,14,28,12,1,252,61,192,127,192,113, + 192,225,192,225,192,225,192,225,192,225,192,127,192,61,192,1, + 192,97,192,127,128,63,0,9,14,28,11,1,0,224,0,224, + 0,224,0,224,0,239,0,255,128,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,3,14,14,5,1,0,224, + 224,224,0,224,224,224,224,224,224,224,224,224,224,4,18,18, + 7,2,252,112,112,112,0,112,112,112,112,112,112,112,112,112, + 112,112,112,240,224,9,14,28,11,1,0,224,0,224,0,224, + 0,224,0,231,128,231,0,238,0,252,0,252,0,252,0,238, + 0,231,0,231,0,227,128,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,15,10,20,18,1, + 0,239,60,255,254,227,206,227,134,227,134,227,134,227,134,227, + 134,227,134,227,134,9,10,20,11,1,0,239,0,255,128,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,227,128,10, + 10,20,12,1,0,30,0,127,128,97,128,225,192,225,192,225, + 192,225,192,97,128,127,128,30,0,10,14,28,12,1,252,239, + 0,255,128,225,128,225,192,225,192,225,192,225,192,225,192,255, + 128,239,0,224,0,224,0,224,0,224,0,10,14,28,12,1, + 252,61,192,127,192,225,192,225,192,225,192,225,192,225,192,225, + 192,127,192,61,192,1,192,1,192,1,192,1,192,6,10,10, + 8,1,0,236,252,240,224,224,224,224,224,224,224,9,10,20, + 11,1,0,62,0,255,0,227,128,224,0,126,0,31,0,3, + 128,227,128,255,0,62,0,7,13,13,9,1,0,8,56,56, + 254,254,56,56,56,56,56,56,62,30,9,10,20,11,1,0, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 255,128,123,128,11,10,20,11,0,0,224,224,113,192,113,192, + 49,128,59,128,59,128,27,0,31,0,31,0,14,0,17,10, + 30,17,0,0,225,195,128,97,227,0,115,231,0,115,103,0, + 51,119,0,63,118,0,63,62,0,62,62,0,30,60,0,30, + 28,0,9,10,20,11,1,0,227,128,115,0,119,0,62,0, + 28,0,62,0,62,0,119,0,227,128,227,128,11,14,28,11, + 0,252,224,224,113,192,113,192,57,128,59,128,59,128,31,0, + 31,0,15,0,14,0,14,0,14,0,28,0,28,0,8,10, + 10,10,1,0,255,255,7,14,28,56,112,224,255,255,7,19, + 19,10,2,251,14,62,56,56,56,56,56,48,240,192,240,112, + 56,56,56,56,56,62,14,1,21,21,7,3,251,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,7,19,19,10,2,251,224,240,56,56,56,56,56,56, + 28,6,28,56,56,56,56,56,56,240,224,11,3,6,11,0, + 4,48,96,127,192,199,128,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,6,0,0,3,14, + 14,9,3,252,224,224,0,0,224,224,224,224,224,224,224,224, + 224,224,9,14,28,11,1,254,2,0,2,0,62,0,127,0, + 231,128,231,128,232,0,232,0,235,128,243,128,127,0,62,0, + 32,0,32,0,10,14,28,12,1,0,31,0,63,192,113,192, + 112,0,112,0,254,0,254,0,112,0,112,0,112,0,112,0, + 112,0,255,192,255,192,10,10,20,12,1,3,128,64,94,128, + 33,0,64,128,64,128,64,128,64,128,33,0,94,128,128,64, + 11,14,28,13,1,0,224,224,225,192,113,192,113,128,251,224, + 251,224,31,0,255,224,255,224,14,0,14,0,14,0,14,0, + 14,0,1,18,18,7,3,252,128,128,128,128,128,128,128,128, + 0,0,128,128,128,128,128,128,128,128,8,18,18,10,1,252, + 62,126,224,224,112,60,126,231,231,231,254,124,30,7,7,135, + 254,56,7,2,2,7,0,12,238,238,15,14,28,17,1,0, + 7,192,31,240,55,152,111,204,204,228,156,2,156,2,156,226, + 140,226,207,198,71,132,32,24,28,112,15,192,7,9,9,8, + 1,5,120,204,124,204,204,252,36,0,254,10,8,16,12,1, + 1,57,192,113,128,115,128,231,0,231,0,115,128,113,128,57, + 192,11,5,10,13,1,4,255,224,255,224,0,32,0,32,0, + 32,255,15,14,28,17,1,0,7,192,31,240,63,152,111,236, + 204,100,140,98,143,194,143,194,140,98,204,102,76,100,32,24, + 28,112,15,192,6,2,2,6,0,12,252,252,5,5,5,7, + 1,9,112,136,136,136,112,12,12,24,20,4,0,2,0,2, + 0,2,0,255,240,255,240,2,0,2,0,2,0,0,0,0, + 0,255,240,255,240,6,8,8,8,1,6,120,204,12,24,48, + 224,252,252,6,7,7,8,1,7,120,204,12,48,12,204,120, + 4,4,4,4,1,12,48,96,96,192,255,9,17,34,11,1, + 253,63,128,121,0,249,0,249,0,249,0,249,0,121,0,9, + 0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9, + 0,9,0,3,3,3,6,2,5,224,224,224,5,5,5,5, + 1,251,64,112,24,24,240,4,8,8,6,1,6,48,240,48, + 48,48,48,48,48,7,9,9,9,1,5,56,68,198,198,198, + 68,56,0,254,10,8,16,12,1,1,231,0,99,128,115,128, + 57,192,57,192,115,128,99,128,231,0,14,14,28,16,1,0, + 112,48,240,48,48,96,48,192,48,192,49,128,49,156,51,60, + 6,60,6,108,12,204,24,252,24,12,48,12,15,14,28,17, + 1,0,112,48,240,32,48,96,48,192,48,192,49,128,51,60, + 51,102,6,6,12,14,12,28,24,48,48,126,48,126,14,14, + 28,16,1,0,120,24,204,48,12,48,48,96,12,192,204,192, + 121,156,1,188,3,60,6,108,6,204,12,252,8,12,24,12, + 9,14,28,11,1,252,14,0,14,0,0,0,14,0,14,0, + 14,0,60,0,112,0,224,0,224,0,225,128,225,128,127,128, + 62,0,14,20,40,14,0,0,12,0,14,0,6,0,3,0, + 0,0,0,0,7,128,7,128,7,192,15,192,14,192,28,224, + 28,224,28,96,56,112,63,240,63,248,112,56,112,56,224,28, + 14,20,40,14,0,0,0,192,1,192,1,128,3,0,0,0, + 0,0,7,128,7,128,7,192,15,192,14,192,28,224,28,224, + 28,96,56,112,63,240,63,248,112,56,112,56,224,28,14,20, + 40,14,0,0,3,128,7,128,6,192,12,192,0,0,0,0, + 7,128,7,128,7,192,15,192,14,192,28,224,28,224,28,96, + 56,112,63,240,63,248,112,56,112,56,224,28,14,19,38,14, + 0,0,6,64,15,192,8,128,0,0,0,0,7,128,7,128, + 7,192,15,192,14,192,28,224,28,224,28,96,56,112,63,240, + 63,248,112,56,112,56,224,28,14,19,38,15,0,0,14,224, + 14,224,0,0,0,0,0,0,3,128,7,128,7,192,7,192, + 14,192,14,224,28,224,28,112,28,112,63,248,63,248,112,56, + 112,28,224,28,13,21,42,15,1,0,7,0,8,128,8,128, + 8,128,7,0,0,0,0,0,7,0,15,128,15,128,29,192, + 29,192,29,192,56,224,56,224,48,96,127,240,127,240,224,56, + 224,56,224,56,19,14,42,20,0,0,0,255,224,1,255,224, + 3,240,0,3,112,0,7,112,0,7,112,0,14,127,192,14, + 127,192,28,112,0,31,240,0,63,240,0,112,112,0,112,127, + 224,224,127,224,13,18,36,15,1,252,15,128,63,224,112,240, + 96,112,224,0,224,0,224,0,224,0,224,0,224,120,96,112, + 112,240,63,224,31,128,4,0,7,128,1,128,15,0,10,20, + 40,12,1,0,48,0,56,0,24,0,12,0,0,0,0,0, + 255,192,255,192,224,0,224,0,224,0,224,0,255,128,255,128, + 224,0,224,0,224,0,224,0,255,192,255,192,10,20,40,12, + 1,0,7,0,6,0,12,0,8,0,0,0,0,0,255,192, + 255,192,224,0,224,0,224,0,224,0,255,128,255,128,224,0, + 224,0,224,0,224,0,255,192,255,192,10,20,40,12,1,0, + 28,0,30,0,54,0,35,0,0,0,0,0,255,192,255,192, + 224,0,224,0,224,0,224,0,255,128,255,128,224,0,224,0, + 224,0,224,0,255,192,255,192,10,19,38,12,1,0,119,0, + 119,0,0,0,0,0,0,0,255,192,255,192,224,0,224,0, + 224,0,224,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,192,255,192,5,20,20,5,255,0,224,96,48,16,0,0, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,4,20, + 20,5,1,0,48,112,96,192,0,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,5,20,20,5,0,0,112,112, + 216,136,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,7,19,19,7,0,0,238,238,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,13,14,28,14,0, + 0,127,128,127,224,112,240,112,112,112,56,112,56,254,56,254, + 56,112,56,112,56,112,112,112,240,127,224,127,128,13,19,38, + 15,1,0,12,64,31,128,17,0,0,0,0,0,240,56,248, + 56,248,56,252,56,238,56,238,56,231,56,231,56,227,184,227, + 184,225,248,225,248,224,248,224,248,14,20,40,16,1,0,28, + 0,12,0,6,0,2,0,0,0,0,0,15,192,63,240,112, + 112,96,56,224,24,224,28,224,28,224,28,224,28,224,24,96, + 56,112,112,63,240,15,192,14,20,40,16,1,0,0,224,1, + 192,1,128,3,0,0,0,0,0,15,192,63,240,112,112,96, + 56,224,24,224,28,224,28,224,28,224,28,224,24,96,56,112, + 112,63,240,15,192,14,20,40,16,1,0,7,0,7,128,13, + 192,8,192,0,0,0,0,15,192,63,240,112,112,96,56,224, + 24,224,28,224,28,224,28,224,28,224,24,96,56,112,112,63, + 240,15,192,14,19,38,16,1,0,7,192,15,192,0,0,0, + 0,0,0,15,192,63,240,112,48,96,56,224,24,224,28,224, + 28,224,28,224,28,224,24,112,56,120,240,63,240,15,192,14, + 19,38,16,1,0,29,192,29,192,0,0,0,0,0,0,15, + 192,63,240,112,112,96,56,224,24,224,28,224,28,224,28,224, + 28,224,24,96,56,112,112,63,240,15,192,10,10,20,20,5, + 1,128,64,192,192,97,128,51,0,12,0,12,0,18,0,33, + 0,64,128,128,64,15,16,32,16,0,255,0,2,7,230,31, + 252,56,60,48,60,112,108,112,238,113,206,115,142,119,14,126, + 12,124,28,56,56,63,240,239,224,64,0,12,20,40,14,1, + 0,56,0,24,0,12,0,6,0,0,0,0,0,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,113,224,63,192,31,128,12,20,40,14,1,0,1, + 192,3,128,3,0,6,0,0,0,0,0,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,113,224,63,192,31,128,12,20,40,14,1,0,14,0,15, + 0,27,0,17,128,0,0,0,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,113, + 224,63,192,31,128,12,19,38,14,1,0,29,192,29,192,0, + 0,0,0,0,0,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,63,192,31, + 128,12,19,38,13,0,0,1,128,3,0,2,0,0,0,0, + 0,240,112,112,240,56,224,56,224,29,192,29,192,15,128,15, + 0,7,0,7,0,7,0,7,0,7,0,7,0,11,14,28, + 13,1,0,224,0,224,0,255,0,255,192,225,192,224,224,224, + 224,224,224,225,192,255,128,254,0,224,0,224,0,224,0,10, + 14,28,12,1,0,62,0,127,128,227,128,227,128,227,0,231, + 0,238,0,238,0,231,128,227,192,225,192,253,192,255,192,239, + 128,9,16,32,11,1,0,112,0,48,0,24,0,8,0,0, + 0,0,0,62,0,127,128,227,128,31,128,127,128,227,128,227, + 128,227,128,255,128,57,128,9,16,32,11,1,0,7,0,6, + 0,12,0,12,0,0,0,0,0,62,0,127,128,227,128,3, + 128,63,128,251,128,227,128,227,128,255,128,121,128,9,16,32, + 11,1,0,28,0,30,0,54,0,35,0,0,0,0,0,62, + 0,127,128,227,128,31,128,127,128,227,128,227,128,227,128,255, + 128,57,128,9,14,28,11,1,0,63,0,62,0,0,0,0, + 0,62,0,127,128,227,128,31,128,127,128,227,128,227,128,227, + 128,255,128,57,128,9,15,30,11,1,0,119,0,119,0,0, + 0,0,0,0,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,9,17,34,11,1,0,28, + 0,34,0,34,0,34,0,28,0,0,0,0,0,62,0,127, + 128,227,128,31,128,127,128,227,128,227,128,227,128,255,128,57, + 128,16,10,20,18,1,0,62,124,127,254,227,135,31,255,127, + 255,227,128,227,128,227,199,254,254,60,124,9,14,28,11,1, + 252,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,16,0,30,0,6,0,62,0,9,16,32, + 11,1,0,112,0,48,0,24,0,8,0,0,0,0,0,30, + 0,127,0,227,128,227,128,255,128,255,128,224,0,227,128,127, + 128,62,0,9,16,32,11,1,0,7,0,6,0,12,0,8, + 0,0,0,0,0,30,0,127,0,227,128,227,128,255,128,255, + 128,224,0,227,128,127,128,62,0,9,16,32,11,1,0,28, + 0,30,0,54,0,35,0,0,0,0,0,30,0,127,0,227, + 128,227,128,255,128,255,128,224,0,227,128,127,128,62,0,9, + 15,30,11,1,0,119,0,119,0,0,0,0,0,0,0,30, + 0,127,0,227,128,227,128,255,128,255,128,224,0,227,128,127, + 128,62,0,4,15,15,5,0,0,192,224,96,48,0,112,112, + 112,112,112,112,112,112,112,112,4,15,15,4,1,0,112,96, + 192,128,0,224,224,224,224,224,224,224,224,224,224,7,15,15, + 5,255,0,56,124,76,198,0,56,56,56,56,56,56,56,56, + 56,56,7,14,14,6,0,0,238,238,0,0,56,56,56,56, + 56,56,56,56,56,56,10,14,28,12,1,0,57,128,15,0, + 31,0,99,0,31,128,127,128,97,192,225,192,225,192,225,192, + 225,192,97,192,127,128,31,0,9,14,28,11,1,0,62,0, + 60,0,0,0,0,0,239,0,255,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,16,32,12,1,0, + 48,0,24,0,24,0,12,0,0,0,0,0,30,0,127,128, + 97,128,225,192,225,192,225,192,225,192,97,128,127,128,30,0, + 10,16,32,12,1,0,3,0,6,0,6,0,12,0,0,0, + 0,0,30,0,127,128,97,128,225,192,225,192,225,192,225,192, + 97,128,127,128,30,0,10,16,32,12,1,0,12,0,30,0, + 26,0,51,0,0,0,0,0,30,0,127,128,97,128,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,10,14,28,12, + 1,0,31,0,62,0,0,0,0,0,30,0,127,128,97,128, + 225,192,225,192,225,192,225,192,97,128,127,128,30,0,10,15, + 30,12,1,0,59,128,59,128,0,0,0,0,0,0,30,0, + 127,128,97,128,225,192,225,192,225,192,225,192,97,128,127,128, + 30,0,12,8,16,20,4,2,6,0,14,0,0,0,255,240, + 255,240,0,0,6,0,14,0,10,12,24,12,1,0,0,192, + 31,128,127,128,99,128,231,192,237,192,233,192,241,192,113,128, + 127,128,222,0,128,0,9,16,32,11,1,0,112,0,48,0, + 24,0,8,0,0,0,0,0,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,255,128,123,128,9,16,32,11, + 1,0,7,0,6,0,12,0,8,0,0,0,0,0,227,128, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,255,128, + 123,128,9,16,32,11,1,0,28,0,28,0,54,0,34,0, + 0,0,0,0,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,255,128,123,128,9,15,30,11,1,0,119,0, + 119,0,0,0,0,0,0,0,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,255,128,123,128,11,19,38,11, + 0,252,1,128,3,0,2,0,4,0,0,0,112,224,113,192, + 113,192,57,192,59,128,27,128,31,128,31,0,15,0,14,0, + 14,0,78,0,252,0,120,0,10,18,36,12,1,252,224,0, + 224,0,224,0,224,0,239,0,255,128,225,128,225,192,225,192, + 225,192,225,192,225,192,255,128,255,0,224,0,224,0,224,0, + 224,0,11,18,36,11,0,252,59,128,59,128,0,0,0,0, + 225,224,113,192,113,192,115,128,59,128,59,128,31,0,31,0, + 31,0,14,0,14,0,12,0,28,0,28,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=12 h=15 x= 4 y= 7 dx=20 dy= 0 ascent=14 len=28 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14n[436] U8G_SECTION(".progmem.u8g_font_fub14n") = { + 0,31,26,254,251,14,0,0,0,0,42,57,0,14,254,14, + 0,8,7,7,12,2,7,102,60,24,255,24,60,102,12,12, + 24,20,4,0,2,0,2,0,2,0,2,0,2,0,255,240, + 255,240,2,0,2,0,2,0,2,0,2,0,4,5,5,6, + 1,254,112,112,96,224,192,5,3,3,7,1,4,248,248,248, + 3,3,3,6,2,0,224,224,224,6,15,15,9,1,255,12, + 12,12,12,24,24,24,48,48,48,96,96,96,96,192,10,14, + 28,11,1,0,30,0,127,0,97,128,225,192,225,192,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,127,128,30,0, + 6,14,14,11,2,0,28,124,252,220,28,28,28,28,28,28, + 28,28,28,28,10,14,28,11,1,0,31,0,127,128,97,192, + 225,192,1,192,1,192,3,128,7,128,15,0,30,0,56,0, + 112,0,255,192,255,192,10,14,28,11,1,0,62,0,127,0, + 227,128,3,128,3,128,31,0,31,0,3,128,1,192,1,192, + 225,192,243,128,127,0,62,0,11,14,28,11,1,0,7,128, + 15,128,15,128,27,128,59,128,51,128,115,128,99,128,227,128, + 255,224,255,224,3,128,3,128,3,128,10,14,28,11,1,0, + 255,128,255,128,224,0,224,0,224,0,255,0,255,128,225,128, + 1,192,1,192,225,192,227,128,127,0,62,0,10,14,28,11, + 1,0,30,0,63,128,97,128,96,0,224,0,223,0,255,128, + 225,128,225,192,225,192,225,192,97,128,127,128,30,0,10,14, + 28,11,1,0,255,192,255,192,1,192,3,128,3,128,7,128, + 7,0,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 10,14,28,11,1,0,63,0,127,128,225,192,225,192,225,128, + 127,0,63,0,115,128,225,192,225,192,225,192,225,192,127,128, + 63,0,10,14,28,11,1,0,30,0,127,0,225,128,225,128, + 225,192,225,192,243,192,127,192,25,192,1,128,225,128,99,128, + 127,0,62,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=21 x= 5 y=12 dx=21 dy= 0 ascent=16 len=54 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14r[2680] U8G_SECTION(".progmem.u8g_font_fub14r") = { + 0,31,26,254,251,14,3,116,7,95,32,127,252,16,251,14, + 252,0,0,0,6,0,0,3,14,14,8,3,0,224,224,224, + 224,224,224,224,224,224,224,0,0,224,224,8,6,6,10,1, + 8,231,103,103,103,103,103,12,14,28,14,1,0,6,96,6, + 96,12,96,63,240,63,240,24,192,25,128,25,128,255,224,255, + 224,51,0,51,0,99,0,102,0,10,17,34,12,1,254,4, + 0,31,0,127,128,119,128,229,192,228,0,252,0,126,0,31, + 128,7,192,5,192,229,192,229,192,127,128,63,0,4,0,4, + 0,18,14,42,20,1,0,60,4,0,126,12,0,195,24,0, + 195,16,0,195,48,0,231,96,0,126,103,0,24,205,128,0, + 152,192,1,152,192,3,24,192,3,24,192,6,15,128,12,7, + 0,14,14,28,16,1,0,31,0,127,128,113,192,113,192,115, + 128,63,0,30,0,126,56,247,48,227,176,225,240,224,224,127, + 240,31,188,3,6,6,8,3,8,224,192,192,192,192,192,4, + 17,17,8,2,253,48,112,112,96,224,224,224,224,224,224,224, + 224,224,96,112,112,48,4,17,17,8,2,253,192,192,224,224, + 96,96,112,112,112,112,112,96,96,224,224,192,192,8,7,7, + 12,2,7,102,60,24,255,24,60,102,12,12,24,20,4,0, + 2,0,2,0,2,0,2,0,2,0,255,240,255,240,2,0, + 2,0,2,0,2,0,2,0,4,5,5,6,1,254,112,112, + 96,224,192,5,3,3,7,1,4,248,248,248,3,3,3,6, + 2,0,224,224,224,6,15,15,9,1,255,12,12,12,12,24, + 24,24,48,48,48,96,96,96,96,192,10,14,28,11,1,0, + 30,0,127,0,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,6,14,14,11, + 2,0,28,124,252,220,28,28,28,28,28,28,28,28,28,28, + 10,14,28,11,1,0,31,0,127,128,97,192,225,192,1,192, + 1,192,3,128,7,128,15,0,30,0,56,0,112,0,255,192, + 255,192,10,14,28,11,1,0,62,0,127,0,227,128,3,128, + 3,128,31,0,31,0,3,128,1,192,1,192,225,192,243,128, + 127,0,62,0,11,14,28,11,1,0,7,128,15,128,15,128, + 27,128,59,128,51,128,115,128,99,128,227,128,255,224,255,224, + 3,128,3,128,3,128,10,14,28,11,1,0,255,128,255,128, + 224,0,224,0,224,0,255,0,255,128,225,128,1,192,1,192, + 225,192,227,128,127,0,62,0,10,14,28,11,1,0,30,0, + 63,128,97,128,96,0,224,0,223,0,255,128,225,128,225,192, + 225,192,225,192,97,128,127,128,30,0,10,14,28,11,1,0, + 255,192,255,192,1,192,3,128,3,128,7,128,7,0,7,0, + 14,0,14,0,28,0,28,0,60,0,56,0,10,14,28,11, + 1,0,63,0,127,128,225,192,225,192,225,128,127,0,63,0, + 115,128,225,192,225,192,225,192,225,192,127,128,63,0,10,14, + 28,11,1,0,30,0,127,0,225,128,225,128,225,192,225,192, + 243,192,127,192,25,192,1,128,225,128,99,128,127,0,62,0, + 3,10,10,7,3,0,224,224,224,0,0,0,0,224,224,224, + 4,12,12,6,1,254,112,112,112,0,0,0,0,112,96,224, + 192,192,12,10,20,20,4,1,0,16,0,224,3,128,28,0, + 224,0,192,0,56,0,7,0,1,192,0,48,12,5,10,20, + 4,3,255,240,255,240,0,0,255,240,255,240,12,10,20,20, + 4,1,128,0,112,0,28,0,3,128,0,112,0,48,1,192, + 14,0,56,0,192,0,9,14,28,11,1,0,62,0,127,0, + 195,128,67,128,3,128,7,0,6,0,12,0,24,0,24,0, + 24,0,0,0,24,0,24,0,19,18,54,21,1,252,1,248, + 0,15,254,0,30,7,128,56,3,192,113,253,192,115,252,224, + 231,28,224,231,28,224,231,28,224,231,28,224,231,28,224,231, + 60,192,115,255,192,113,231,128,56,0,0,30,4,0,15,252, + 0,3,252,0,14,14,28,14,0,0,7,128,7,128,7,192, + 15,192,14,192,28,224,28,224,28,96,56,112,63,240,63,248, + 112,56,112,56,224,28,11,14,28,13,1,0,255,0,255,128, + 225,192,225,192,225,192,227,128,255,0,255,128,224,192,224,224, + 224,224,224,224,255,192,255,0,13,14,28,15,1,0,15,128, + 63,224,112,112,96,112,224,0,224,0,224,0,224,0,224,0, + 224,120,96,112,112,240,63,224,15,128,12,14,28,14,1,0, + 255,0,255,192,225,224,224,224,224,112,224,112,224,112,224,112, + 224,112,224,112,224,224,225,224,255,192,255,0,10,14,28,12, + 1,0,255,192,255,192,224,0,224,0,224,0,224,0,255,128, + 255,128,224,0,224,0,224,0,224,0,255,192,255,192,9,14, + 28,11,1,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,128,255,128,224,0,224,0,224,0,224,0,224,0,224,0, + 13,14,28,15,1,0,15,192,31,240,56,56,112,56,224,0, + 224,0,225,248,225,248,224,56,224,56,112,56,120,56,63,248, + 15,240,12,14,28,14,1,0,224,112,224,112,224,112,224,112, + 224,112,224,112,255,240,255,240,224,112,224,112,224,112,224,112, + 224,112,224,112,3,14,14,5,1,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,10,14,28,12,1,0,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 225,192,225,192,243,192,127,128,62,0,11,14,28,13,1,0, + 225,224,227,192,227,128,231,0,238,0,252,0,252,0,254,0, + 238,0,231,0,231,128,227,192,225,192,224,224,10,14,28,11, + 1,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,192,255,192,16,14, + 28,18,1,0,248,31,248,31,252,63,252,63,252,55,236,119, + 238,119,238,103,230,231,231,231,231,199,227,199,227,199,227,135, + 13,14,28,15,1,0,240,56,248,56,248,56,252,56,238,56, + 238,56,231,56,231,56,227,184,227,184,225,248,225,248,224,248, + 224,248,14,14,28,16,1,0,15,192,63,240,112,112,96,56, + 224,24,224,28,224,28,224,28,224,28,224,24,96,56,112,112, + 63,240,15,192,11,14,28,13,1,0,255,0,255,192,225,192, + 224,224,224,224,224,224,225,192,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,15,14,28,17,1,0,15,192,63,224, + 112,112,96,56,224,24,224,28,224,28,224,28,224,28,224,24, + 96,56,112,120,63,254,15,254,11,14,28,13,1,0,255,128, + 255,192,224,224,224,224,224,224,224,224,255,128,255,192,225,192, + 224,224,224,224,224,224,224,224,224,96,12,14,28,14,1,0, + 31,128,63,192,96,224,224,224,224,0,252,0,127,128,31,224, + 3,224,0,112,224,112,224,96,127,192,31,128,12,14,28,14, + 1,0,255,240,255,240,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,12,14, + 28,14,1,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,112,224,63,192,31,128, + 14,14,28,15,0,0,240,28,112,28,112,60,56,56,56,56, + 56,112,28,112,28,112,30,224,14,224,15,192,7,192,7,192, + 7,128,20,14,42,20,0,0,240,240,240,112,240,224,112,240, + 224,113,248,224,113,248,224,57,153,192,57,153,192,59,157,192, + 59,157,192,27,13,128,31,15,128,31,15,128,31,15,128,14, + 7,0,12,14,28,14,1,0,224,112,112,224,120,224,57,192, + 31,128,31,0,15,0,15,0,31,128,59,192,57,192,112,224, + 224,240,224,112,12,14,28,13,0,0,240,112,112,240,56,224, + 56,224,29,192,29,192,15,128,15,0,7,0,7,0,7,0, + 7,0,7,0,7,0,11,14,28,13,1,0,127,224,127,224, + 1,224,3,192,3,128,7,128,15,0,30,0,30,0,60,0, + 120,0,248,0,255,224,255,224,5,18,18,8,2,252,248,248, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,248,248, + 6,15,15,9,1,255,192,192,96,96,96,48,48,48,16,24, + 24,24,12,12,12,5,18,18,8,2,252,248,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,248,248,10,12,24, + 20,5,0,12,0,12,0,12,0,18,0,18,0,51,0,33, + 0,33,0,64,128,64,128,192,192,128,64,10,2,4,10,0, + 253,255,192,255,192,5,4,4,5,255,12,224,112,48,24,9, + 10,20,11,1,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,10,14,28,12,1,0,224, + 0,224,0,224,0,224,0,239,0,255,128,225,192,225,192,225, + 192,225,192,225,192,225,128,255,128,239,0,9,10,20,11,1, + 0,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,10,14,28,12,1,0,1,192,1,192,1, + 192,1,192,61,192,127,192,225,192,225,192,225,192,225,192,225, + 192,225,192,127,192,61,192,9,10,20,11,1,0,30,0,127, + 0,227,128,227,128,255,128,255,128,224,0,227,128,127,128,62, + 0,7,14,14,8,1,0,30,62,56,56,254,254,56,56,56, + 56,56,56,56,56,10,14,28,12,1,252,61,192,127,192,113, + 192,225,192,225,192,225,192,225,192,225,192,127,192,61,192,1, + 192,97,192,127,128,63,0,9,14,28,11,1,0,224,0,224, + 0,224,0,224,0,239,0,255,128,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,3,14,14,5,1,0,224, + 224,224,0,224,224,224,224,224,224,224,224,224,224,4,18,18, + 7,2,252,112,112,112,0,112,112,112,112,112,112,112,112,112, + 112,112,112,240,224,9,14,28,11,1,0,224,0,224,0,224, + 0,224,0,231,128,231,0,238,0,252,0,252,0,252,0,238, + 0,231,0,231,0,227,128,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,15,10,20,18,1, + 0,239,60,255,254,227,206,227,134,227,134,227,134,227,134,227, + 134,227,134,227,134,9,10,20,11,1,0,239,0,255,128,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,227,128,10, + 10,20,12,1,0,30,0,127,128,97,128,225,192,225,192,225, + 192,225,192,97,128,127,128,30,0,10,14,28,12,1,252,239, + 0,255,128,225,128,225,192,225,192,225,192,225,192,225,192,255, + 128,239,0,224,0,224,0,224,0,224,0,10,14,28,12,1, + 252,61,192,127,192,225,192,225,192,225,192,225,192,225,192,225, + 192,127,192,61,192,1,192,1,192,1,192,1,192,6,10,10, + 8,1,0,236,252,240,224,224,224,224,224,224,224,9,10,20, + 11,1,0,62,0,255,0,227,128,224,0,126,0,31,0,3, + 128,227,128,255,0,62,0,7,13,13,9,1,0,8,56,56, + 254,254,56,56,56,56,56,56,62,30,9,10,20,11,1,0, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 255,128,123,128,11,10,20,11,0,0,224,224,113,192,113,192, + 49,128,59,128,59,128,27,0,31,0,31,0,14,0,17,10, + 30,17,0,0,225,195,128,97,227,0,115,231,0,115,103,0, + 51,119,0,63,118,0,63,62,0,62,62,0,30,60,0,30, + 28,0,9,10,20,11,1,0,227,128,115,0,119,0,62,0, + 28,0,62,0,62,0,119,0,227,128,227,128,11,14,28,11, + 0,252,224,224,113,192,113,192,57,128,59,128,59,128,31,0, + 31,0,15,0,14,0,14,0,14,0,28,0,28,0,8,10, + 10,10,1,0,255,255,7,14,28,56,112,224,255,255,7,19, + 19,10,2,251,14,62,56,56,56,56,56,48,240,192,240,112, + 56,56,56,56,56,62,14,1,21,21,7,3,251,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,7,19,19,10,2,251,224,240,56,56,56,56,56,56, + 28,6,28,56,56,56,56,56,56,240,224,11,3,6,11,0, + 4,48,96,127,192,199,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=25 x= 6 y=15 dx=24 dy= 0 ascent=25 len=66 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17[6938] U8G_SECTION(".progmem.u8g_font_fub17") = { + 0,34,31,254,250,17,4,8,8,209,32,255,251,25,250,17, + 251,0,0,0,7,0,0,3,17,17,9,3,0,224,224,224, + 224,224,224,224,224,224,224,224,224,0,0,224,224,224,8,7, + 7,12,2,10,231,231,231,231,231,231,231,14,17,34,16,1, + 0,3,24,7,24,6,56,6,48,63,252,63,252,12,96,12, + 96,28,96,24,224,255,248,255,240,57,192,49,128,49,128,113, + 128,99,128,12,21,42,14,1,253,2,0,15,128,63,192,127, + 224,242,224,226,224,226,0,250,0,126,0,63,192,15,224,3, + 240,2,240,226,112,226,112,242,240,127,224,63,192,15,0,2, + 0,2,0,21,17,51,23,1,0,62,3,0,127,7,0,99, + 6,0,193,142,0,193,140,0,193,152,0,193,184,0,99,48, + 128,127,119,224,62,102,48,0,236,24,0,204,24,1,204,24, + 1,140,24,3,14,56,7,7,240,6,3,224,16,17,34,18, + 1,0,31,128,63,192,121,224,112,224,113,224,57,192,63,128, + 31,0,63,30,119,156,243,220,225,252,224,252,224,120,120,124, + 127,254,31,207,3,7,7,9,3,10,224,224,224,224,224,224, + 96,5,20,20,9,2,253,56,56,112,112,112,240,224,224,224, + 224,224,224,224,224,240,112,112,112,48,56,5,20,20,9,2, + 253,224,96,112,112,112,56,56,56,56,56,56,56,56,56,56, + 112,112,112,96,224,9,9,18,15,3,8,54,0,54,0,54, + 0,156,128,255,128,156,128,54,0,54,0,54,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,255,252,2,0,2,0,2,0,2,0,2,0,2,0,5, + 6,6,7,1,253,56,112,112,96,96,224,6,3,3,8,1, + 4,252,252,252,3,3,3,7,2,0,224,224,224,8,18,18, + 10,1,255,7,6,6,14,12,12,12,28,24,24,56,48,48, + 48,112,96,96,224,11,17,34,13,1,0,31,0,63,128,113, + 192,112,192,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,112,192,113,192,63,128,31,0,7,17,17, + 13,2,0,14,62,254,254,206,14,14,14,14,14,14,14,14, + 14,14,14,14,12,17,34,13,1,0,15,128,63,224,120,224, + 112,112,0,112,0,112,0,240,1,224,3,224,7,192,15,128, + 30,0,60,0,248,0,255,240,255,240,255,240,11,17,34,13, + 1,0,31,0,127,192,241,224,224,224,0,224,0,224,1,192, + 15,128,15,128,1,192,0,224,0,224,224,224,241,224,255,192, + 127,128,31,0,12,17,34,13,1,0,3,192,7,192,7,192, + 15,192,29,192,29,192,57,192,113,192,113,192,225,192,255,240, + 255,240,255,240,1,192,1,192,1,192,1,192,11,17,34,13, + 1,0,255,192,255,192,255,192,224,0,224,0,224,0,239,128, + 255,192,241,224,224,224,0,224,0,224,224,224,225,224,255,192, + 127,128,63,0,11,17,34,13,1,0,15,0,63,192,57,224, + 112,224,96,0,224,0,239,128,255,192,241,224,224,224,224,224, + 224,224,224,224,96,224,113,192,63,128,31,0,11,17,34,13, + 1,0,255,224,255,224,255,224,0,224,1,224,1,192,3,192, + 3,128,7,128,7,128,7,0,15,0,14,0,30,0,28,0, + 60,0,60,0,11,17,34,13,1,0,31,0,127,192,241,224, + 224,224,224,224,224,224,113,192,63,128,63,128,113,192,224,224, + 224,224,224,224,224,224,241,224,127,192,31,0,11,17,34,13, + 1,0,31,0,63,128,113,192,224,192,224,224,224,224,224,224, + 241,224,127,224,62,224,0,224,0,224,224,224,225,192,113,192, + 127,128,30,0,3,12,12,7,3,0,224,224,224,0,0,0, + 0,0,0,224,224,224,5,14,14,8,1,254,56,56,56,0, + 0,0,0,0,56,56,112,112,96,224,14,12,24,24,5,1, + 0,12,0,60,1,224,7,0,60,0,224,0,224,0,60,0, + 7,0,1,224,0,60,0,12,14,6,12,24,5,4,255,252, + 255,252,0,0,0,0,255,252,255,252,14,12,24,24,5,1, + 192,0,240,0,30,0,3,128,0,240,0,28,0,28,0,240, + 3,128,30,0,240,0,192,0,10,17,34,12,1,0,62,0, + 127,128,227,128,193,192,1,192,1,192,3,128,7,128,14,0, + 28,0,24,0,24,0,24,0,0,0,0,0,24,0,24,0, + 22,22,66,24,1,251,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,240,120,247,120,121,255,56,113,207,60,243,135, + 28,227,135,28,227,135,28,227,135,28,227,135,28,227,207,56, + 241,255,248,113,251,240,120,113,224,60,0,0,31,0,0,15, + 255,0,7,255,0,0,255,0,16,17,34,16,0,0,3,192, + 3,192,3,224,7,224,7,240,15,112,14,112,14,120,30,56, + 28,56,28,60,63,252,63,252,127,254,120,14,112,15,240,7, + 12,17,34,15,2,0,255,192,255,224,255,240,224,240,224,112, + 224,112,224,224,255,192,255,192,224,224,224,112,224,112,224,112, + 224,240,255,240,255,224,255,128,14,17,34,16,1,0,15,192, + 31,240,63,248,120,120,112,60,240,60,224,0,224,0,224,0, + 224,0,224,0,224,0,112,60,112,60,56,120,31,240,15,192, + 14,17,34,17,2,0,255,0,255,224,255,240,224,248,224,56, + 224,60,224,28,224,28,224,28,224,28,224,28,224,60,224,56, + 224,248,255,240,255,224,255,128,11,17,34,15,2,0,255,224, + 255,224,255,224,224,0,224,0,224,0,224,0,255,224,255,224, + 224,0,224,0,224,0,224,0,224,0,255,224,255,224,255,224, + 11,17,34,14,2,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,192,255,192,255,192,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,15,17,34,18,1,0,7,224, + 31,248,63,252,124,30,112,14,240,14,224,0,224,0,224,254, + 224,254,224,254,240,14,112,14,124,14,63,254,31,254,3,248, + 13,17,34,17,2,0,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,255,248,255,248,255,248,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,3,17,17,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 17,34,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,224,224,224,224,240, + 224,255,192,127,192,63,0,13,17,34,16,2,0,224,240,224, + 224,225,224,227,192,231,128,239,0,239,0,254,0,254,0,239, + 0,231,128,231,128,227,192,225,224,225,240,224,240,224,120,11, + 17,34,14,2,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,224,255,224,255,224,18,17,51,22,2,0,252,7,192, + 252,15,192,252,15,192,252,15,192,238,31,192,238,29,192,238, + 29,192,231,61,192,231,57,192,231,57,192,231,185,192,227,241, + 192,227,241,192,227,241,192,225,241,192,225,225,192,225,225,192, + 14,17,34,18,2,0,248,28,248,28,252,28,252,28,238,28, + 238,28,231,28,231,28,231,156,227,156,227,220,225,220,225,220, + 224,252,224,252,224,124,224,124,15,17,34,17,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,240,14,112,28,120,60,63,248,31,240,7,224, + 12,17,34,15,2,0,255,128,255,192,255,224,224,240,224,112, + 224,112,224,112,224,240,255,224,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,224,0,17,17,51,19,1,0,7,192, + 0,31,240,0,63,248,0,120,60,0,112,28,0,240,30,0, + 224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,240, + 14,0,112,28,0,120,60,0,63,255,128,31,255,128,7,255, + 128,13,17,34,16,2,0,255,192,255,240,255,248,224,120,224, + 56,224,56,224,112,255,224,255,192,255,240,224,240,224,112,224, + 120,224,56,224,56,224,56,224,56,13,17,34,15,1,0,15, + 192,63,224,56,240,112,112,112,0,120,0,126,0,63,192,31, + 240,3,240,0,120,224,56,224,56,240,120,127,240,63,224,15, + 128,13,17,34,15,1,0,255,248,255,248,255,248,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,14,17,34,18,2,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,240,60,120,120,127,248,63,240,15, + 192,17,17,51,17,0,0,240,7,128,112,7,0,120,15,0, + 120,14,0,56,30,0,60,30,0,28,28,0,30,60,0,30, + 60,0,14,56,0,15,120,0,15,112,0,7,112,0,7,240, + 0,7,224,0,3,224,0,3,224,0,23,17,51,23,0,0, + 240,56,30,112,124,28,112,124,28,120,124,60,120,108,60,56, + 238,56,56,238,56,56,238,56,60,198,120,29,199,112,29,199, + 112,29,199,112,29,131,112,15,131,224,15,131,224,15,131,224, + 15,1,224,14,17,34,16,1,0,240,60,120,56,120,120,60, + 112,28,224,31,224,15,192,7,128,7,128,15,192,31,192,29, + 224,56,240,120,112,112,120,240,60,224,60,13,17,34,15,1, + 0,224,56,240,120,112,112,120,240,56,224,61,224,29,192,31, + 192,15,128,15,128,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,12,17,34,14,1,0,255,240,255,240,255,240,1, + 240,1,224,3,192,7,128,7,128,15,0,30,0,60,0,60, + 0,120,0,240,0,255,240,255,240,255,240,5,22,22,9,2, + 251,248,248,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,7,18,18,10,1,255,192,224,96, + 96,112,48,48,56,24,24,24,28,12,12,14,6,6,6,5, + 22,22,9,2,251,248,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,248,248,11,14,28,23,6, + 0,4,0,14,0,10,0,27,0,17,0,17,0,49,128,32, + 128,32,128,96,192,64,64,192,96,128,32,128,32,12,2,4, + 12,0,253,255,240,255,240,4,4,4,6,0,14,224,96,48, + 48,10,12,24,13,1,0,31,0,127,128,113,192,1,192,31, + 192,127,192,241,192,225,192,225,192,243,192,127,192,60,192,12, + 17,34,14,1,0,224,0,224,0,224,0,224,0,224,0,239, + 128,255,192,241,224,240,240,224,112,224,112,224,112,224,112,240, + 240,248,224,255,192,231,128,10,12,24,12,1,0,31,0,127, + 128,115,192,225,192,224,0,224,0,224,0,225,192,225,192,115, + 192,127,128,31,0,12,17,34,14,1,0,0,112,0,112,0, + 112,0,112,0,112,31,112,63,240,120,240,240,240,224,112,224, + 112,224,112,224,112,240,240,113,240,63,240,30,112,11,12,24, + 13,1,0,31,0,63,128,113,192,225,224,255,224,255,224,224, + 0,224,0,225,192,113,192,127,192,31,0,8,17,17,9,1, + 0,31,63,56,56,56,255,255,56,56,56,56,56,56,56,56, + 56,56,12,17,34,14,1,251,31,112,63,240,120,240,240,240, + 224,112,224,112,224,112,224,112,240,240,112,240,127,240,30,112, + 0,112,112,112,120,224,63,224,31,128,11,17,34,13,1,0, + 224,0,224,0,224,0,224,0,224,0,239,128,255,192,241,224, + 240,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,3,17,17,5,1,0,224,224,224,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,4,22,22,7,2,251,112, + 112,112,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,240,240,224,11,17,34,12,1,0,224,0,224,0,224, + 0,224,0,224,0,227,192,227,128,231,0,239,0,254,0,254, + 0,238,0,239,0,231,128,231,128,227,192,225,224,3,17,17, + 6,1,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,19,12,36,21,1,0,231,143,128,239,223,192, + 249,241,224,240,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,11,12, + 24,13,1,0,239,128,255,192,241,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,12,12,24,14, + 1,0,31,128,63,192,112,224,240,224,224,112,224,112,224,112, + 224,112,240,240,112,224,63,192,31,128,12,17,34,14,1,251, + 231,128,255,192,248,224,240,240,224,112,224,112,224,112,224,112, + 240,240,241,224,255,192,239,128,224,0,224,0,224,0,224,0, + 224,0,12,17,34,14,1,251,30,112,63,240,113,240,240,240, + 224,112,224,112,224,112,224,112,240,240,120,240,63,240,31,112, + 0,112,0,112,0,112,0,112,0,112,7,12,12,9,1,0, + 238,238,254,240,240,224,224,224,224,224,224,224,10,12,24,12, + 1,0,63,0,127,128,241,192,225,192,248,0,127,0,31,128, + 3,192,225,192,227,192,127,128,63,0,8,15,15,10,1,0, + 24,56,56,255,255,56,56,56,56,56,56,56,60,63,15,11, + 12,24,13,1,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,241,224,127,224,62,224,12,12,24, + 13,0,0,240,112,112,240,112,224,120,224,56,224,57,192,29, + 192,29,192,31,128,15,128,15,128,15,0,19,12,36,20,0, + 0,240,240,224,112,240,224,113,240,224,113,249,192,57,249,192, + 59,185,192,59,159,192,63,159,128,31,31,128,31,15,128,31, + 15,0,15,15,0,11,12,24,13,1,0,241,224,113,192,123, + 128,63,128,31,0,30,0,31,0,63,128,123,128,115,192,241, + 192,225,224,12,17,34,12,0,251,240,112,112,240,120,224,56, + 224,57,224,61,192,29,192,29,192,31,128,15,128,15,128,7, + 0,7,0,15,0,14,0,14,0,30,0,10,12,24,12,1, + 0,255,128,255,128,7,128,7,0,14,0,30,0,60,0,56, + 0,112,0,224,0,255,192,255,192,9,23,46,12,2,250,7, + 128,15,128,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,60,0,248,0,224,0,248,0,60,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,15,128,7,128,2,25,25, + 8,3,250,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,23,23,12, + 2,250,224,240,56,56,56,56,56,56,56,28,31,7,31,28, + 56,56,56,56,56,56,56,248,224,12,3,6,12,0,5,60, + 48,127,240,227,192,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,7,0,0,3,17,17,9, + 3,251,224,224,224,0,0,224,224,224,224,224,224,224,224,224, + 224,224,224,10,18,36,13,1,253,1,0,1,0,3,0,31, + 0,127,128,115,192,231,192,228,0,228,0,236,0,233,192,233, + 192,123,192,127,128,31,0,16,0,48,0,32,0,11,17,34, + 13,1,0,15,128,31,224,56,224,56,224,56,0,56,0,255, + 0,255,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,255,224,255,224,11,12,24,13,1,4,128,32,95,64,113, + 128,96,128,64,64,64,64,64,64,64,64,96,192,49,128,95, + 64,128,32,13,17,34,15,1,0,224,120,240,120,112,112,120, + 240,56,224,253,248,253,248,31,192,15,128,255,248,255,248,7, + 0,7,0,7,0,7,0,7,0,7,0,1,22,22,8,4, + 251,128,128,128,128,128,128,128,128,128,0,0,0,0,128,128, + 128,128,128,128,128,128,128,9,21,42,11,1,252,63,0,127, + 0,241,0,224,0,224,0,120,0,62,0,63,0,119,128,227, + 128,227,128,231,128,255,0,126,0,31,0,7,128,3,128,3, + 128,135,128,255,0,124,0,8,3,3,8,0,15,231,231,231, + 17,17,51,19,1,0,3,224,0,15,248,0,60,30,0,51, + 230,0,103,243,0,103,59,0,206,57,128,206,1,128,206,1, + 128,206,1,128,206,57,128,78,57,0,103,243,0,51,230,0, + 56,14,0,15,248,0,3,224,0,8,11,11,10,1,6,60, + 102,6,126,230,198,198,126,0,0,255,11,9,18,14,1,1, + 60,224,56,224,121,224,113,192,243,192,113,192,121,224,56,224, + 60,224,12,5,10,14,1,5,255,240,0,16,0,16,0,16, + 0,16,255,17,17,51,19,1,0,3,224,0,15,248,0,60, + 30,0,55,246,0,103,251,0,102,27,0,198,25,128,199,241, + 128,199,241,128,198,57,128,198,25,128,70,25,0,102,27,0, + 48,6,0,56,14,0,15,248,0,3,224,0,7,2,2,7, + 0,15,254,254,5,5,5,7,1,12,112,136,136,136,112,14, + 14,28,24,5,0,2,0,2,0,2,0,2,0,255,252,255, + 252,2,0,2,0,2,0,2,0,0,0,0,0,255,252,255, + 252,7,9,9,9,1,8,124,230,6,14,28,56,224,254,254, + 7,9,9,9,1,8,124,206,6,14,56,14,6,206,124,5, + 4,4,5,1,14,56,112,96,192,255,11,20,40,14,2,253, + 63,224,125,128,253,128,253,128,253,128,253,128,253,128,125,128, + 13,128,13,128,13,128,13,128,13,128,13,128,13,128,13,128, + 13,128,13,128,13,128,13,128,3,3,3,7,2,6,224,224, + 224,6,5,5,6,1,251,32,56,12,12,248,4,9,9,6, + 1,8,48,240,176,48,48,48,48,48,48,8,11,11,10,1, + 6,60,102,195,195,195,195,231,126,60,0,255,12,9,18,14, + 1,1,227,128,113,192,121,224,56,224,60,240,56,224,121,224, + 113,192,227,128,16,17,34,18,1,0,48,24,240,24,176,48, + 48,112,48,96,48,224,48,192,49,128,49,142,3,14,3,30, + 6,54,14,54,12,102,24,127,24,6,48,6,16,17,34,18, + 1,0,48,24,240,48,176,48,48,96,48,224,48,192,49,192, + 49,128,51,62,3,119,6,3,6,7,12,14,28,28,24,112, + 48,127,48,127,17,17,51,19,1,0,124,6,0,198,12,0, + 6,12,0,56,24,0,14,56,0,6,48,0,206,112,0,124, + 96,0,0,199,0,1,199,0,1,143,0,3,155,0,3,27, + 0,7,51,0,6,63,128,12,3,0,28,3,0,10,17,34, + 12,1,251,14,0,14,0,0,0,0,0,14,0,14,0,14, + 0,28,0,56,0,112,0,240,0,224,0,224,128,224,192,115, + 192,127,128,31,0,16,24,48,16,0,0,14,0,7,0,3, + 0,3,128,1,128,0,0,0,0,3,192,3,192,3,224,7, + 224,7,240,15,112,14,112,14,120,30,56,28,56,28,60,63, + 252,63,252,127,254,120,14,112,15,240,7,16,24,48,16,0, + 0,0,112,0,96,0,224,0,192,1,128,0,0,0,0,3, + 192,3,192,3,224,7,224,7,240,15,112,14,112,14,120,30, + 56,28,56,28,60,63,252,63,252,127,254,120,14,112,15,240, + 7,16,24,48,16,0,0,1,192,3,192,3,224,6,96,4, + 48,0,0,0,0,3,192,3,192,3,224,7,224,7,240,15, + 112,14,112,14,120,30,56,28,56,28,60,63,252,63,252,127, + 254,120,14,112,15,240,7,16,23,46,16,0,0,0,16,7, + 240,7,224,0,0,0,0,0,0,3,192,3,192,3,224,7, + 224,7,240,15,112,14,112,14,120,30,56,28,56,28,60,63, + 252,63,252,127,254,120,14,112,15,240,7,16,23,46,17,0, + 0,14,112,14,112,14,112,0,0,0,0,0,0,3,192,3, + 192,7,224,7,224,7,224,15,112,14,112,30,120,30,56,28, + 56,60,60,63,252,127,254,127,254,112,14,240,15,224,7,15, + 25,50,16,1,0,3,128,6,192,4,64,4,64,4,192,3, + 128,0,0,0,0,3,128,7,192,7,192,15,192,14,224,14, + 224,30,224,28,112,28,112,60,112,56,120,63,248,127,252,127, + 252,112,28,240,30,224,14,21,17,51,23,1,0,0,255,248, + 0,255,248,1,248,0,1,248,0,3,184,0,3,184,0,7, + 56,0,7,63,248,14,63,248,14,56,0,30,56,0,31,248, + 0,63,248,0,120,56,0,112,56,0,240,63,248,224,63,248, + 14,22,44,16,1,251,15,192,31,240,63,248,120,56,112,60, + 240,28,224,0,224,0,224,0,224,0,224,0,224,0,112,28, + 112,60,56,120,31,240,15,192,3,0,3,192,0,96,0,96, + 7,192,11,24,48,15,2,0,56,0,24,0,28,0,12,0, + 6,0,0,0,0,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,255,224,255,224,255,224,11,24,48,15,2,0,3,128, + 3,0,7,0,6,0,12,0,0,0,0,0,255,224,255,224, + 255,224,224,0,224,0,224,0,224,0,255,224,255,224,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,255,224,11,24, + 48,15,2,0,14,0,31,0,27,0,59,128,49,128,0,0, + 0,0,255,224,255,224,255,224,224,0,224,0,224,0,224,0, + 255,224,255,224,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,255,224,11,23,46,15,2,0,59,128,59,128,59,128, + 0,0,0,0,0,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,255,224,255,224,255,224,5,24,24,7,0,0,224,224, + 96,48,16,0,0,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,5,24,24,5,1,0,56,48,112,96, + 192,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,7,24,24,7,0,0,56,56,108,108,198,0, + 0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,8,23,23,8,0,0,231,231,231,0,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,15, + 17,34,16,0,0,63,192,63,240,63,248,56,60,56,28,56, + 30,56,14,56,14,255,14,255,14,56,14,56,30,56,28,56, + 60,63,248,63,240,63,192,14,23,46,18,2,0,0,32,15, + 192,15,192,0,0,0,0,0,0,248,28,248,28,252,28,252, + 28,238,28,238,28,231,28,231,28,231,156,227,156,227,220,225, + 220,225,220,224,252,224,252,224,124,224,124,15,24,48,17,1, + 0,28,0,14,0,6,0,3,0,1,0,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,240,30,224,14,224,14,224, + 14,224,14,224,14,240,14,112,28,120,60,63,248,31,240,7, + 224,15,24,48,17,1,0,0,112,0,224,0,192,1,128,1, + 0,0,0,0,0,7,192,31,240,63,248,120,60,112,28,240, + 30,224,14,224,14,224,14,224,14,224,14,240,14,112,28,120, + 60,63,248,31,240,7,224,15,24,48,17,1,0,3,128,7, + 192,6,192,12,96,8,32,0,0,0,0,7,192,31,240,63, + 248,120,60,112,28,240,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,60,63,248,31,240,7,224,15,23,46, + 17,1,0,7,32,15,224,8,192,0,0,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,120,60,63,248,31,240,7, + 224,15,23,46,17,1,0,14,112,14,112,14,112,0,0,0, + 0,0,0,7,192,31,240,63,248,120,60,112,28,240,30,224, + 14,224,14,224,14,224,14,224,14,240,14,112,28,120,60,63, + 248,31,240,7,224,13,12,24,23,5,1,192,24,96,48,48, + 96,24,192,13,128,7,0,7,0,13,128,24,192,48,96,96, + 48,192,24,17,19,57,17,0,255,0,1,0,3,241,128,15, + 251,0,31,254,0,60,30,0,56,30,0,120,63,0,112,119, + 0,112,231,0,113,199,0,115,135,0,119,7,0,126,7,0, + 60,14,0,60,30,0,63,252,0,111,248,0,227,224,0,64, + 0,0,14,24,48,18,2,0,28,0,12,0,14,0,6,0, + 3,0,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,56,127,248,63,240,15,192,14,24,48,18,2,0,0,224, + 0,192,1,192,1,128,3,0,0,0,0,0,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,240,60,112,56,127,248,63,240,15,192,14,24, + 48,18,2,0,7,128,7,128,15,192,12,192,24,96,0,0, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,240,60,112,56,127,248, + 63,240,15,192,14,23,46,16,1,0,28,224,28,224,28,224, + 0,0,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 120,120,127,248,63,240,15,192,13,23,46,15,1,0,1,192, + 1,128,3,0,2,0,0,0,0,0,224,56,240,120,112,112, + 120,240,56,224,61,224,29,192,31,192,15,128,15,128,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,12,17,34,15, + 1,0,224,0,224,0,224,0,255,128,255,224,255,224,224,240, + 224,112,224,112,224,240,255,224,255,224,255,128,224,0,224,0, + 224,0,224,0,12,17,34,14,1,0,63,0,127,128,241,192, + 225,192,225,192,227,128,231,0,238,0,238,0,239,128,231,192, + 225,224,224,112,238,112,238,112,239,224,231,192,10,19,38,13, + 1,0,112,0,56,0,24,0,12,0,4,0,0,0,0,0, + 31,0,127,128,113,192,1,192,31,192,127,192,241,192,225,192, + 225,192,243,192,127,192,60,192,10,19,38,13,1,0,3,128, + 3,0,6,0,6,0,12,0,0,0,0,0,31,0,127,128, + 113,192,1,192,31,192,127,192,241,192,225,192,225,192,243,192, + 127,192,60,192,10,19,38,13,1,0,14,0,30,0,27,0, + 51,0,33,128,0,0,0,0,31,0,127,128,113,192,1,192, + 31,192,127,192,241,192,225,192,225,192,243,192,127,192,60,192, + 10,17,34,13,1,0,31,128,63,0,0,0,0,0,0,0, + 31,0,127,128,113,192,1,192,31,192,127,192,241,192,225,192, + 225,192,243,192,127,192,60,192,10,18,36,13,1,0,115,128, + 115,128,115,128,0,0,0,0,0,0,63,0,127,128,241,192, + 1,192,31,192,127,192,241,192,225,192,225,192,243,192,127,192, + 60,192,10,20,40,13,1,0,14,0,27,0,17,0,19,0, + 31,0,14,0,0,0,0,0,31,0,127,128,113,192,1,192, + 31,192,127,192,241,192,225,192,225,192,243,192,127,192,60,192, + 18,12,36,20,1,0,31,31,0,127,191,128,113,243,128,0, + 225,192,31,255,192,127,255,192,240,224,0,224,224,0,224,225, + 192,241,243,192,127,63,128,62,31,0,10,17,34,12,1,251, + 31,0,127,128,115,192,225,192,224,0,224,0,224,0,224,0, + 225,192,115,192,127,128,63,0,8,0,14,0,3,0,3,0, + 30,0,11,19,38,13,1,0,112,0,56,0,24,0,12,0, + 4,0,0,0,0,0,31,0,63,128,113,192,225,224,255,224, + 255,224,224,0,224,0,225,192,113,192,127,192,31,0,11,19, + 38,13,1,0,3,128,3,0,7,0,6,0,12,0,0,0, + 0,0,31,0,63,128,113,192,225,224,255,224,255,224,224,0, + 224,0,225,192,113,192,127,192,31,0,11,19,38,13,1,0, + 14,0,31,0,27,0,49,128,33,128,0,0,0,0,31,0, + 63,128,113,192,225,224,255,224,255,224,224,0,224,0,225,192, + 113,192,127,192,31,0,11,18,36,13,1,0,115,128,115,128, + 115,128,0,0,0,0,0,0,31,0,63,128,115,192,225,192, + 255,224,255,224,224,0,224,0,225,192,115,192,127,128,31,0, + 5,18,18,6,255,0,224,112,48,24,0,0,56,56,56,56, + 56,56,56,56,56,56,56,56,4,18,18,5,1,0,112,96, + 224,192,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 7,18,18,6,255,0,56,124,108,198,0,0,56,56,56,56, + 56,56,56,56,56,56,56,56,8,18,18,7,255,0,231,231, + 231,0,0,0,56,56,56,56,56,56,56,56,56,56,56,56, + 12,17,34,14,1,0,28,96,15,192,15,128,59,128,33,192, + 31,224,63,224,112,224,240,240,224,112,224,112,224,112,224,112, + 240,240,112,224,63,192,31,128,11,17,34,13,1,0,31,128, + 63,0,0,0,0,0,0,0,239,128,255,192,241,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 12,19,38,14,1,0,56,0,28,0,12,0,6,0,6,0, + 0,0,0,0,31,128,63,192,112,224,240,224,224,112,224,112, + 224,112,224,112,240,240,112,224,63,192,31,128,12,19,38,14, + 1,0,1,192,3,128,3,0,6,0,4,0,0,0,0,0, + 31,128,63,192,112,224,240,224,224,112,224,112,224,112,224,112, + 240,240,112,224,63,192,31,128,12,19,38,14,1,0,15,0, + 15,0,31,128,25,128,48,192,0,0,0,0,31,128,63,192, + 112,224,240,224,224,112,224,112,224,112,224,112,240,240,112,224, + 63,192,31,128,12,17,34,14,1,0,31,192,63,128,0,0, + 0,0,0,0,31,128,63,192,112,224,240,224,224,112,224,112, + 224,112,224,112,240,240,112,224,63,192,31,128,12,18,36,14, + 1,0,57,192,57,192,57,192,0,0,0,0,0,0,31,128, + 63,192,112,224,240,224,224,112,224,112,224,112,224,112,240,240, + 112,224,63,192,31,128,14,10,20,24,5,2,7,0,7,0, + 6,0,0,0,255,252,255,252,0,0,2,0,7,0,7,0, + 12,15,30,14,1,254,0,32,0,48,31,224,63,192,113,224, + 241,240,227,112,230,112,236,112,248,112,248,240,112,224,127,192, + 223,128,192,0,11,19,38,13,1,0,112,0,56,0,28,0, + 12,0,6,0,0,0,0,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,241,224,127,224,62,224, + 11,19,38,13,1,0,3,128,3,128,7,0,6,0,12,0, + 0,0,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,241,224,127,224,62,224,11,19,38,13, + 1,0,14,0,31,0,27,0,49,128,32,128,0,0,0,0, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,241,224,127,224,62,224,11,18,36,13,1,0,115,128, + 115,128,115,128,0,0,0,0,0,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,241,224,127,224, + 62,224,11,23,46,13,1,251,1,128,3,128,3,0,6,0, + 0,0,0,0,224,224,224,224,241,224,113,192,121,192,59,192, + 59,128,63,128,31,128,31,0,31,0,15,0,14,0,14,0, + 254,0,252,0,120,0,12,22,44,15,2,251,224,0,224,0, + 224,0,224,0,224,0,239,128,255,192,248,224,240,240,224,112, + 224,112,224,112,224,112,240,240,241,224,255,192,239,128,224,0, + 224,0,224,0,224,0,224,0,12,22,44,14,1,251,57,192, + 57,192,57,192,0,0,0,0,240,112,240,240,112,240,120,224, + 121,224,57,192,61,192,31,192,31,128,31,128,15,128,15,0, + 15,0,15,0,14,0,30,0,28,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 17 + Calculated Max Values w=14 h=18 x= 5 y= 8 dx=24 dy= 0 ascent=17 len=34 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =17 descent= 0 + X Font ascent =17 descent= 0 + Max Font ascent =17 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17n[512] U8G_SECTION(".progmem.u8g_font_fub17n") = { + 0,34,31,254,250,17,0,0,0,0,42,57,0,17,253,17, + 0,9,9,18,15,3,8,54,0,54,0,54,0,156,128,255, + 128,156,128,54,0,54,0,54,0,14,14,28,24,5,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,252,255,252,2, + 0,2,0,2,0,2,0,2,0,2,0,5,6,6,7,1, + 253,56,112,112,96,96,224,6,3,3,8,1,4,252,252,252, + 3,3,3,7,2,0,224,224,224,8,18,18,10,1,255,7, + 6,6,14,12,12,12,28,24,24,56,48,48,48,112,96,96, + 224,11,17,34,13,1,0,31,0,63,128,113,192,112,192,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,112,192,113,192,63,128,31,0,7,17,17,13,2,0,14, + 62,254,254,206,14,14,14,14,14,14,14,14,14,14,14,14, + 12,17,34,13,1,0,15,128,63,224,120,224,112,112,0,112, + 0,112,0,240,1,224,3,224,7,192,15,128,30,0,60,0, + 248,0,255,240,255,240,255,240,11,17,34,13,1,0,31,0, + 127,192,241,224,224,224,0,224,0,224,1,192,15,128,15,128, + 1,192,0,224,0,224,224,224,241,224,255,192,127,128,31,0, + 12,17,34,13,1,0,3,192,7,192,7,192,15,192,29,192, + 29,192,57,192,113,192,113,192,225,192,255,240,255,240,255,240, + 1,192,1,192,1,192,1,192,11,17,34,13,1,0,255,192, + 255,192,255,192,224,0,224,0,224,0,239,128,255,192,241,224, + 224,224,0,224,0,224,224,224,225,224,255,192,127,128,63,0, + 11,17,34,13,1,0,15,0,63,192,57,224,112,224,96,0, + 224,0,239,128,255,192,241,224,224,224,224,224,224,224,224,224, + 96,224,113,192,63,128,31,0,11,17,34,13,1,0,255,224, + 255,224,255,224,0,224,1,224,1,192,3,192,3,128,7,128, + 7,128,7,0,15,0,14,0,30,0,28,0,60,0,60,0, + 11,17,34,13,1,0,31,0,127,192,241,224,224,224,224,224, + 224,224,113,192,63,128,63,128,113,192,224,224,224,224,224,224, + 224,224,241,224,127,192,31,0,11,17,34,13,1,0,31,0, + 63,128,113,192,224,192,224,224,224,224,224,224,241,224,127,224, + 62,224,0,224,0,224,224,224,225,192,113,192,127,128,30,0 + }; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=25 x= 6 y=14 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17r[3222] U8G_SECTION(".progmem.u8g_font_fub17r") = { + 0,34,31,254,250,17,4,8,8,209,32,127,251,19,250,17, + 251,0,0,0,7,0,0,3,17,17,9,3,0,224,224,224, + 224,224,224,224,224,224,224,224,224,0,0,224,224,224,8,7, + 7,12,2,10,231,231,231,231,231,231,231,14,17,34,16,1, + 0,3,24,7,24,6,56,6,48,63,252,63,252,12,96,12, + 96,28,96,24,224,255,248,255,240,57,192,49,128,49,128,113, + 128,99,128,12,21,42,14,1,253,2,0,15,128,63,192,127, + 224,242,224,226,224,226,0,250,0,126,0,63,192,15,224,3, + 240,2,240,226,112,226,112,242,240,127,224,63,192,15,0,2, + 0,2,0,21,17,51,23,1,0,62,3,0,127,7,0,99, + 6,0,193,142,0,193,140,0,193,152,0,193,184,0,99,48, + 128,127,119,224,62,102,48,0,236,24,0,204,24,1,204,24, + 1,140,24,3,14,56,7,7,240,6,3,224,16,17,34,18, + 1,0,31,128,63,192,121,224,112,224,113,224,57,192,63,128, + 31,0,63,30,119,156,243,220,225,252,224,252,224,120,120,124, + 127,254,31,207,3,7,7,9,3,10,224,224,224,224,224,224, + 96,5,20,20,9,2,253,56,56,112,112,112,240,224,224,224, + 224,224,224,224,224,240,112,112,112,48,56,5,20,20,9,2, + 253,224,96,112,112,112,56,56,56,56,56,56,56,56,56,56, + 112,112,112,96,224,9,9,18,15,3,8,54,0,54,0,54, + 0,156,128,255,128,156,128,54,0,54,0,54,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,255,252,2,0,2,0,2,0,2,0,2,0,2,0,5, + 6,6,7,1,253,56,112,112,96,96,224,6,3,3,8,1, + 4,252,252,252,3,3,3,7,2,0,224,224,224,8,18,18, + 10,1,255,7,6,6,14,12,12,12,28,24,24,56,48,48, + 48,112,96,96,224,11,17,34,13,1,0,31,0,63,128,113, + 192,112,192,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,112,192,113,192,63,128,31,0,7,17,17, + 13,2,0,14,62,254,254,206,14,14,14,14,14,14,14,14, + 14,14,14,14,12,17,34,13,1,0,15,128,63,224,120,224, + 112,112,0,112,0,112,0,240,1,224,3,224,7,192,15,128, + 30,0,60,0,248,0,255,240,255,240,255,240,11,17,34,13, + 1,0,31,0,127,192,241,224,224,224,0,224,0,224,1,192, + 15,128,15,128,1,192,0,224,0,224,224,224,241,224,255,192, + 127,128,31,0,12,17,34,13,1,0,3,192,7,192,7,192, + 15,192,29,192,29,192,57,192,113,192,113,192,225,192,255,240, + 255,240,255,240,1,192,1,192,1,192,1,192,11,17,34,13, + 1,0,255,192,255,192,255,192,224,0,224,0,224,0,239,128, + 255,192,241,224,224,224,0,224,0,224,224,224,225,224,255,192, + 127,128,63,0,11,17,34,13,1,0,15,0,63,192,57,224, + 112,224,96,0,224,0,239,128,255,192,241,224,224,224,224,224, + 224,224,224,224,96,224,113,192,63,128,31,0,11,17,34,13, + 1,0,255,224,255,224,255,224,0,224,1,224,1,192,3,192, + 3,128,7,128,7,128,7,0,15,0,14,0,30,0,28,0, + 60,0,60,0,11,17,34,13,1,0,31,0,127,192,241,224, + 224,224,224,224,224,224,113,192,63,128,63,128,113,192,224,224, + 224,224,224,224,224,224,241,224,127,192,31,0,11,17,34,13, + 1,0,31,0,63,128,113,192,224,192,224,224,224,224,224,224, + 241,224,127,224,62,224,0,224,0,224,224,224,225,192,113,192, + 127,128,30,0,3,12,12,7,3,0,224,224,224,0,0,0, + 0,0,0,224,224,224,5,14,14,8,1,254,56,56,56,0, + 0,0,0,0,56,56,112,112,96,224,14,12,24,24,5,1, + 0,12,0,60,1,224,7,0,60,0,224,0,224,0,60,0, + 7,0,1,224,0,60,0,12,14,6,12,24,5,4,255,252, + 255,252,0,0,0,0,255,252,255,252,14,12,24,24,5,1, + 192,0,240,0,30,0,3,128,0,240,0,28,0,28,0,240, + 3,128,30,0,240,0,192,0,10,17,34,12,1,0,62,0, + 127,128,227,128,193,192,1,192,1,192,3,128,7,128,14,0, + 28,0,24,0,24,0,24,0,0,0,0,0,24,0,24,0, + 22,22,66,24,1,251,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,240,120,247,120,121,255,56,113,207,60,243,135, + 28,227,135,28,227,135,28,227,135,28,227,135,28,227,207,56, + 241,255,248,113,251,240,120,113,224,60,0,0,31,0,0,15, + 255,0,7,255,0,0,255,0,16,17,34,16,0,0,3,192, + 3,192,3,224,7,224,7,240,15,112,14,112,14,120,30,56, + 28,56,28,60,63,252,63,252,127,254,120,14,112,15,240,7, + 12,17,34,15,2,0,255,192,255,224,255,240,224,240,224,112, + 224,112,224,224,255,192,255,192,224,224,224,112,224,112,224,112, + 224,240,255,240,255,224,255,128,14,17,34,16,1,0,15,192, + 31,240,63,248,120,120,112,60,240,60,224,0,224,0,224,0, + 224,0,224,0,224,0,112,60,112,60,56,120,31,240,15,192, + 14,17,34,17,2,0,255,0,255,224,255,240,224,248,224,56, + 224,60,224,28,224,28,224,28,224,28,224,28,224,60,224,56, + 224,248,255,240,255,224,255,128,11,17,34,15,2,0,255,224, + 255,224,255,224,224,0,224,0,224,0,224,0,255,224,255,224, + 224,0,224,0,224,0,224,0,224,0,255,224,255,224,255,224, + 11,17,34,14,2,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,192,255,192,255,192,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,15,17,34,18,1,0,7,224, + 31,248,63,252,124,30,112,14,240,14,224,0,224,0,224,254, + 224,254,224,254,240,14,112,14,124,14,63,254,31,254,3,248, + 13,17,34,17,2,0,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,255,248,255,248,255,248,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,3,17,17,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 17,34,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,224,224,224,224,240, + 224,255,192,127,192,63,0,13,17,34,16,2,0,224,240,224, + 224,225,224,227,192,231,128,239,0,239,0,254,0,254,0,239, + 0,231,128,231,128,227,192,225,224,225,240,224,240,224,120,11, + 17,34,14,2,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,224,255,224,255,224,18,17,51,22,2,0,252,7,192, + 252,15,192,252,15,192,252,15,192,238,31,192,238,29,192,238, + 29,192,231,61,192,231,57,192,231,57,192,231,185,192,227,241, + 192,227,241,192,227,241,192,225,241,192,225,225,192,225,225,192, + 14,17,34,18,2,0,248,28,248,28,252,28,252,28,238,28, + 238,28,231,28,231,28,231,156,227,156,227,220,225,220,225,220, + 224,252,224,252,224,124,224,124,15,17,34,17,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,240,14,112,28,120,60,63,248,31,240,7,224, + 12,17,34,15,2,0,255,128,255,192,255,224,224,240,224,112, + 224,112,224,112,224,240,255,224,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,224,0,17,17,51,19,1,0,7,192, + 0,31,240,0,63,248,0,120,60,0,112,28,0,240,30,0, + 224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,240, + 14,0,112,28,0,120,60,0,63,255,128,31,255,128,7,255, + 128,13,17,34,16,2,0,255,192,255,240,255,248,224,120,224, + 56,224,56,224,112,255,224,255,192,255,240,224,240,224,112,224, + 120,224,56,224,56,224,56,224,56,13,17,34,15,1,0,15, + 192,63,224,56,240,112,112,112,0,120,0,126,0,63,192,31, + 240,3,240,0,120,224,56,224,56,240,120,127,240,63,224,15, + 128,13,17,34,15,1,0,255,248,255,248,255,248,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,14,17,34,18,2,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,240,60,120,120,127,248,63,240,15, + 192,17,17,51,17,0,0,240,7,128,112,7,0,120,15,0, + 120,14,0,56,30,0,60,30,0,28,28,0,30,60,0,30, + 60,0,14,56,0,15,120,0,15,112,0,7,112,0,7,240, + 0,7,224,0,3,224,0,3,224,0,23,17,51,23,0,0, + 240,56,30,112,124,28,112,124,28,120,124,60,120,108,60,56, + 238,56,56,238,56,56,238,56,60,198,120,29,199,112,29,199, + 112,29,199,112,29,131,112,15,131,224,15,131,224,15,131,224, + 15,1,224,14,17,34,16,1,0,240,60,120,56,120,120,60, + 112,28,224,31,224,15,192,7,128,7,128,15,192,31,192,29, + 224,56,240,120,112,112,120,240,60,224,60,13,17,34,15,1, + 0,224,56,240,120,112,112,120,240,56,224,61,224,29,192,31, + 192,15,128,15,128,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,12,17,34,14,1,0,255,240,255,240,255,240,1, + 240,1,224,3,192,7,128,7,128,15,0,30,0,60,0,60, + 0,120,0,240,0,255,240,255,240,255,240,5,22,22,9,2, + 251,248,248,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,7,18,18,10,1,255,192,224,96, + 96,112,48,48,56,24,24,24,28,12,12,14,6,6,6,5, + 22,22,9,2,251,248,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,248,248,11,14,28,23,6, + 0,4,0,14,0,10,0,27,0,17,0,17,0,49,128,32, + 128,32,128,96,192,64,64,192,96,128,32,128,32,12,2,4, + 12,0,253,255,240,255,240,4,4,4,6,0,14,224,96,48, + 48,10,12,24,13,1,0,31,0,127,128,113,192,1,192,31, + 192,127,192,241,192,225,192,225,192,243,192,127,192,60,192,12, + 17,34,14,1,0,224,0,224,0,224,0,224,0,224,0,239, + 128,255,192,241,224,240,240,224,112,224,112,224,112,224,112,240, + 240,248,224,255,192,231,128,10,12,24,12,1,0,31,0,127, + 128,115,192,225,192,224,0,224,0,224,0,225,192,225,192,115, + 192,127,128,31,0,12,17,34,14,1,0,0,112,0,112,0, + 112,0,112,0,112,31,112,63,240,120,240,240,240,224,112,224, + 112,224,112,224,112,240,240,113,240,63,240,30,112,11,12,24, + 13,1,0,31,0,63,128,113,192,225,224,255,224,255,224,224, + 0,224,0,225,192,113,192,127,192,31,0,8,17,17,9,1, + 0,31,63,56,56,56,255,255,56,56,56,56,56,56,56,56, + 56,56,12,17,34,14,1,251,31,112,63,240,120,240,240,240, + 224,112,224,112,224,112,224,112,240,240,112,240,127,240,30,112, + 0,112,112,112,120,224,63,224,31,128,11,17,34,13,1,0, + 224,0,224,0,224,0,224,0,224,0,239,128,255,192,241,224, + 240,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,3,17,17,5,1,0,224,224,224,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,4,22,22,7,2,251,112, + 112,112,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,240,240,224,11,17,34,12,1,0,224,0,224,0,224, + 0,224,0,224,0,227,192,227,128,231,0,239,0,254,0,254, + 0,238,0,239,0,231,128,231,128,227,192,225,224,3,17,17, + 6,1,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,19,12,36,21,1,0,231,143,128,239,223,192, + 249,241,224,240,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,11,12, + 24,13,1,0,239,128,255,192,241,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,12,12,24,14, + 1,0,31,128,63,192,112,224,240,224,224,112,224,112,224,112, + 224,112,240,240,112,224,63,192,31,128,12,17,34,14,1,251, + 231,128,255,192,248,224,240,240,224,112,224,112,224,112,224,112, + 240,240,241,224,255,192,239,128,224,0,224,0,224,0,224,0, + 224,0,12,17,34,14,1,251,30,112,63,240,113,240,240,240, + 224,112,224,112,224,112,224,112,240,240,120,240,63,240,31,112, + 0,112,0,112,0,112,0,112,0,112,7,12,12,9,1,0, + 238,238,254,240,240,224,224,224,224,224,224,224,10,12,24,12, + 1,0,63,0,127,128,241,192,225,192,248,0,127,0,31,128, + 3,192,225,192,227,192,127,128,63,0,8,15,15,10,1,0, + 24,56,56,255,255,56,56,56,56,56,56,56,60,63,15,11, + 12,24,13,1,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,241,224,127,224,62,224,12,12,24, + 13,0,0,240,112,112,240,112,224,120,224,56,224,57,192,29, + 192,29,192,31,128,15,128,15,128,15,0,19,12,36,20,0, + 0,240,240,224,112,240,224,113,240,224,113,249,192,57,249,192, + 59,185,192,59,159,192,63,159,128,31,31,128,31,15,128,31, + 15,0,15,15,0,11,12,24,13,1,0,241,224,113,192,123, + 128,63,128,31,0,30,0,31,0,63,128,123,128,115,192,241, + 192,225,224,12,17,34,12,0,251,240,112,112,240,120,224,56, + 224,57,224,61,192,29,192,29,192,31,128,15,128,15,128,7, + 0,7,0,15,0,14,0,14,0,30,0,10,12,24,12,1, + 0,255,128,255,128,7,128,7,0,14,0,30,0,60,0,56, + 0,112,0,224,0,255,192,255,192,9,23,46,12,2,250,7, + 128,15,128,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,60,0,248,0,224,0,248,0,60,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,15,128,7,128,2,25,25, + 8,3,250,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,23,23,12, + 2,250,224,240,56,56,56,56,56,56,56,28,31,7,31,28, + 56,56,56,56,56,56,56,248,224,12,3,6,12,0,5,60, + 48,127,240,227,192,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=27 h=29 x= 7 y=18 dx=28 dy= 0 ascent=29 len=100 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =29 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20[8916] U8G_SECTION(".progmem.u8g_font_fub20") = { + 0,40,36,254,249,20,4,242,11,37,32,255,251,29,249,20, + 251,0,0,0,8,0,0,4,20,20,11,4,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,0,0,0,240,240, + 240,10,8,16,14,2,12,243,192,243,192,243,192,243,192,243, + 192,225,192,225,192,97,128,17,20,60,19,1,0,1,199,0, + 1,134,0,3,142,0,3,142,0,3,142,0,31,255,128,63, + 255,128,7,28,0,6,24,0,14,56,0,14,56,0,14,48, + 0,127,254,0,255,254,0,28,112,0,24,96,0,56,224,0, + 56,224,0,56,224,0,49,192,0,14,24,48,16,1,253,1, + 0,7,192,31,240,63,248,125,120,113,60,241,60,241,0,253, + 0,127,0,63,224,31,240,3,248,1,124,1,60,241,60,241, + 60,249,60,127,248,63,240,31,224,1,0,1,0,1,0,25, + 20,80,27,1,0,31,0,96,0,63,128,224,0,123,192,192, + 0,225,193,192,0,224,227,128,0,224,227,0,0,224,231,0, + 0,224,230,0,0,113,206,0,0,127,204,124,0,63,28,254, + 0,0,57,199,0,0,59,131,0,0,115,131,128,0,99,131, + 128,0,227,131,128,1,195,135,128,1,193,239,0,3,128,254, + 0,3,128,124,0,19,20,60,21,1,0,15,192,0,31,240, + 0,60,240,0,120,120,0,120,120,0,120,112,0,60,240,0, + 63,224,0,31,192,0,31,128,0,63,135,128,123,199,128,249, + 231,128,240,247,0,240,127,0,240,63,0,240,30,0,124,127, + 0,63,255,128,15,227,224,4,8,8,11,4,12,240,224,224, + 224,224,224,224,224,6,24,24,10,2,252,28,56,56,120,120, + 112,112,240,240,240,240,240,240,240,240,240,240,112,112,120,120, + 56,56,28,6,24,24,11,3,252,224,240,112,112,120,120,120, + 56,56,60,60,60,60,60,60,56,56,120,120,120,112,112,240, + 224,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128,4,14,14,9,4,0,240,240,240, + 240,0,0,0,0,0,0,240,240,240,240,6,17,17,8,1, + 253,60,60,60,60,0,0,0,0,0,0,60,56,120,112,112, + 224,224,16,14,28,26,5,1,0,3,0,31,0,120,3,192, + 15,0,120,0,224,0,224,0,60,0,7,128,1,224,0,60, + 0,15,0,1,16,7,14,26,5,5,255,255,255,255,0,0, + 0,0,0,0,255,255,255,255,16,14,28,26,5,1,192,0, + 248,0,30,0,3,192,0,240,0,30,0,7,0,7,0,60, + 1,224,7,128,60,0,240,0,128,0,13,20,40,15,1,0, + 31,128,63,224,121,240,240,112,32,120,0,120,0,112,0,240, + 1,224,3,192,7,128,14,0,14,0,14,0,14,0,0,0, + 0,0,15,0,15,0,15,0,26,25,100,28,1,251,0,63, + 128,0,1,255,240,0,7,255,252,0,15,224,254,0,31,0, + 31,0,62,0,15,0,60,61,231,128,120,255,231,128,121,247, + 227,192,241,225,227,192,241,193,227,192,243,193,227,192,243,193, + 227,192,243,193,227,192,243,193,227,192,241,193,227,128,113,227, + 231,128,120,255,255,0,124,254,255,0,60,60,60,0,31,0, + 0,0,15,192,32,0,7,255,224,0,1,255,224,0,0,127, + 224,0,19,20,60,19,0,0,1,240,0,1,240,0,1,248, + 0,3,248,0,3,248,0,3,188,0,7,188,0,7,156,0, + 15,30,0,15,30,0,15,30,0,30,15,0,30,15,0,31, + 255,128,63,255,128,63,255,128,56,3,192,120,3,192,120,3, + 192,240,1,224,15,20,40,18,2,0,255,224,255,240,255,248, + 240,124,240,60,240,60,240,56,240,120,255,240,255,192,255,248, + 240,60,240,28,240,30,240,30,240,30,240,60,255,252,255,248, + 255,224,17,20,60,19,1,0,7,240,0,15,252,0,63,254, + 0,60,31,0,120,15,0,112,15,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 15,128,112,15,0,120,31,0,60,62,0,63,254,0,31,248, + 0,7,224,0,16,20,40,19,2,0,255,128,255,240,255,248, + 240,124,240,62,240,30,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,240,30,240,62,240,124,255,248,255,240, + 255,128,13,20,40,17,2,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,240,0,255,248,255,248,255,248, + 13,20,40,16,2,0,255,248,255,248,255,248,240,0,240,0, + 240,0,240,0,240,0,255,240,255,240,255,240,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,18,20, + 60,20,1,0,1,248,0,15,254,0,31,255,0,62,15,128, + 124,3,128,120,3,192,112,0,0,240,0,0,240,0,0,240, + 63,192,240,63,192,240,63,192,240,3,192,240,3,192,120,3, + 192,124,3,192,63,3,192,31,255,192,15,255,192,1,254,0, + 16,20,40,20,2,0,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,255,255,255,255,255,255,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,4,20, + 20,8,2,0,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,14,20,40,17,1,0,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,240,60,240,56,248,120, + 127,240,127,224,31,192,15,20,40,18,2,0,240,60,240,124, + 240,248,241,240,241,224,243,224,247,192,255,128,255,0,255,0, + 255,128,247,192,247,192,243,224,241,240,240,240,240,248,240,124, + 240,62,240,62,13,20,40,16,2,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,255,248,255,248, + 255,248,21,20,60,25,2,0,252,1,248,254,3,248,254,3, + 248,254,3,248,255,7,248,255,7,248,247,7,120,247,15,120, + 247,143,120,247,143,120,243,142,120,243,222,120,243,222,120,241, + 220,120,241,252,120,241,252,120,240,248,120,240,248,120,240,248, + 120,240,248,120,17,20,60,21,2,0,252,7,128,252,7,128, + 254,7,128,254,7,128,255,7,128,255,7,128,247,135,128,247, + 135,128,243,199,128,243,199,128,241,231,128,241,231,128,240,247, + 128,240,247,128,240,127,128,240,127,128,240,63,128,240,63,128, + 240,31,128,240,31,128,18,20,60,20,1,0,3,240,0,15, + 252,0,31,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 254,0,15,252,0,3,240,0,14,20,40,17,2,0,255,192, + 255,240,255,248,240,124,240,60,240,60,240,60,240,60,240,124, + 255,248,255,240,255,192,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,20,20,60,22,1,0,3,240,0,15, + 252,0,63,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 255,240,15,255,240,3,255,240,15,20,40,18,2,0,255,224, + 255,248,255,252,240,62,240,30,240,30,240,30,240,30,240,124, + 255,248,255,240,255,252,240,60,240,60,240,28,240,30,240,30, + 240,30,240,30,240,14,16,20,40,18,1,0,7,224,31,248, + 63,252,60,60,120,30,120,30,120,0,124,0,63,128,31,240, + 15,252,0,254,0,30,0,15,240,15,240,14,120,62,127,252, + 63,248,7,224,16,20,40,18,1,0,255,255,255,255,255,255, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,17,20,60,21,2,0,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,0,240,15,0,120,15,0,124,30,0,63,254,0,31,248, + 0,7,224,0,19,20,60,20,0,0,248,1,224,120,1,224, + 120,3,224,60,3,192,60,3,192,62,7,192,30,7,128,30, + 7,128,31,15,128,15,15,0,15,15,0,15,158,0,7,158, + 0,7,158,0,7,252,0,3,252,0,3,252,0,1,248,0, + 1,248,0,1,240,0,27,20,80,27,0,0,248,31,3,224, + 120,31,3,192,120,31,3,192,120,63,131,192,120,63,131,192, + 60,59,135,128,60,59,135,128,60,123,199,128,60,123,199,128, + 28,113,199,0,30,113,207,0,30,241,239,0,30,241,239,0, + 14,224,238,0,14,224,238,0,15,224,254,0,15,224,254,0, + 7,192,124,0,7,192,124,0,7,192,124,0,17,20,60,19, + 1,0,248,15,128,120,15,0,124,30,0,62,30,0,30,60, + 0,31,120,0,15,120,0,7,240,0,7,224,0,3,224,0, + 7,224,0,7,240,0,15,240,0,30,120,0,30,124,0,60, + 60,0,60,30,0,120,31,0,240,15,0,240,7,128,16,20, + 40,17,1,0,240,31,248,30,120,30,124,60,60,60,60,120, + 30,120,30,240,15,240,15,224,7,224,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,20,40,17, + 1,0,127,254,127,254,127,254,0,62,0,124,0,248,0,248, + 1,240,3,224,7,224,7,192,15,128,31,0,63,0,62,0, + 124,0,248,0,255,254,255,254,255,254,6,25,25,10,2,251, + 252,252,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,252,252,9,21,42,12,1,255,224, + 0,96,0,112,0,112,0,48,0,56,0,56,0,56,0,24, + 0,28,0,28,0,12,0,14,0,14,0,6,0,6,0,7, + 0,7,0,3,0,3,128,3,128,7,25,25,11,2,251,254, + 254,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,254,254,13,17,34,27,7,0,2,0, + 7,0,5,0,5,0,13,128,8,128,24,192,24,192,16,64, + 48,96,48,96,32,32,96,48,64,16,192,24,192,24,128,8, + 14,2,4,14,0,252,255,252,255,252,5,5,5,7,0,16, + 224,112,112,56,24,12,14,28,15,1,0,31,128,63,224,121, + 240,112,240,0,240,63,240,127,240,248,240,240,240,240,240,240, + 240,251,240,127,112,62,112,14,20,40,17,2,0,240,0,240, + 0,240,0,240,0,240,0,240,0,247,192,255,240,253,240,248, + 120,240,120,240,60,240,60,240,60,240,60,240,56,248,120,252, + 240,255,240,243,192,12,14,28,14,1,0,31,128,63,224,121, + 224,112,224,240,240,240,0,240,0,240,0,240,0,240,240,240, + 224,121,224,63,192,31,128,14,20,40,16,1,0,0,60,0, + 60,0,60,0,60,0,60,0,60,31,188,63,252,124,252,120, + 124,240,60,240,60,240,60,240,60,240,60,240,60,120,124,125, + 252,63,188,15,60,13,14,28,15,1,0,15,128,63,224,121, + 240,112,240,240,240,255,240,255,248,240,0,240,0,240,240,112, + 240,121,240,63,224,31,128,10,20,40,11,1,0,15,192,31, + 192,62,64,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,14,19,38,16,1,251,31,188,63,252,124, + 252,120,124,240,60,240,60,240,60,240,60,240,60,240,60,112, + 124,124,252,63,188,15,60,0,60,120,56,124,248,63,240,15, + 192,13,20,40,16,2,0,240,0,240,0,240,0,240,0,240, + 0,240,0,247,192,255,240,253,240,248,120,240,120,240,120,240, + 120,240,120,240,120,240,120,240,120,240,120,240,120,240,120,4, + 20,20,6,1,0,240,240,240,240,0,0,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,5,25,25,9,3,251,120, + 120,120,120,0,0,120,120,120,120,120,120,120,120,120,120,120, + 120,120,120,120,120,248,248,240,12,20,40,15,2,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,240,241,224,243,192, + 247,128,255,128,255,0,255,0,255,0,247,128,247,192,243,192, + 241,224,241,240,240,240,4,20,20,7,2,0,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 22,14,42,25,2,0,243,227,224,255,247,248,253,254,248,240, + 120,120,240,120,60,240,120,60,240,120,60,240,120,60,240,120, + 60,240,120,60,240,120,60,240,120,60,240,120,60,240,120,60, + 13,14,28,16,2,0,247,192,255,240,253,240,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,14,14,28,16,1,0,15,192,63,224,124,240,120,120, + 240,60,240,60,240,60,240,60,240,60,240,60,120,120,124,248, + 63,240,15,192,14,19,38,17,2,251,243,192,255,240,253,240, + 248,120,240,56,240,60,240,60,240,60,240,60,240,120,240,120, + 253,248,255,240,247,192,240,0,240,0,240,0,240,0,240,0, + 14,19,38,16,1,251,15,60,63,252,125,252,120,124,240,60, + 240,60,240,60,240,60,240,60,240,60,120,124,124,252,63,252, + 31,188,0,60,0,60,0,60,0,60,0,60,9,14,28,11, + 2,0,247,128,255,128,255,128,252,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,12,14, + 28,14,1,0,31,128,127,192,123,224,241,224,240,0,126,0, + 127,192,31,224,1,240,240,240,240,240,249,224,127,192,31,128, + 10,18,36,12,1,0,2,0,14,0,30,0,30,0,255,192, + 255,192,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,0,15,192,7,192,13,14,28,16,2,0, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,248,249,248,127,248,62,120,14,14,28,15, + 0,0,240,60,120,60,120,60,56,120,60,120,60,112,28,240, + 30,240,30,224,15,224,15,224,15,192,7,192,7,192,23,14, + 42,23,0,0,240,124,30,112,124,28,120,124,60,120,254,60, + 56,238,60,60,238,56,61,239,120,61,231,120,29,199,112,31, + 199,240,31,199,240,15,131,224,15,131,224,15,131,224,13,14, + 28,15,1,0,240,120,120,240,124,224,61,224,31,192,31,128, + 15,128,31,128,31,192,63,224,57,224,120,240,240,248,240,120, + 14,19,38,15,0,251,248,60,120,60,120,60,60,120,60,120, + 60,112,30,240,30,240,14,224,15,224,15,224,7,192,7,192, + 3,192,7,128,7,128,7,128,15,0,15,0,11,14,28,13, + 1,0,255,224,255,224,1,224,3,224,7,192,7,128,15,0, + 30,0,60,0,124,0,248,0,240,0,255,224,255,224,10,27, + 54,13,2,249,3,192,15,192,31,128,30,0,30,0,30,0, + 30,0,30,0,30,0,28,0,28,0,60,0,248,0,224,0, + 248,0,124,0,60,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,128,15,192,7,192,2,29,29,10,4,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,10,27,54, + 14,2,249,240,0,252,0,124,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,15,0,7,192,3,192,7, + 192,15,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,124,0,252,0,240,0,14,3,6,14,0,5,63, + 156,127,248,225,240,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,8,0,0,4,19,19,10, + 3,251,240,240,240,0,0,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,12,20,40,16,2,253,0,192,0,192,0, + 128,15,128,63,224,125,224,115,240,243,240,242,0,242,0,246, + 0,244,0,244,240,124,240,121,224,63,224,31,128,24,0,16, + 0,48,0,14,20,40,15,1,0,7,224,31,248,62,120,60, + 60,60,60,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,255,252,255, + 252,15,14,28,17,1,5,192,6,99,204,55,248,28,48,24, + 24,48,12,48,12,48,12,48,12,24,24,28,48,63,248,99, + 204,192,6,15,20,40,17,1,0,240,30,240,62,120,60,120, + 124,56,120,60,120,252,254,254,254,31,224,15,224,15,192,255, + 254,255,254,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,1,25,25,9,4,251,128,128,128,128,128,128,128,128,128, + 128,128,0,0,0,128,128,128,128,128,128,128,128,128,128,128, + 11,24,48,13,1,252,31,128,63,192,121,192,240,64,240,0, + 248,0,124,0,63,0,63,128,127,192,243,224,225,224,225,192, + 243,192,255,128,126,0,31,128,7,192,3,224,1,224,1,192, + 195,192,255,128,127,0,9,3,6,9,0,17,227,128,227,128, + 227,128,20,20,60,24,2,0,1,248,0,7,254,0,31,15, + 128,60,3,192,49,252,192,99,254,224,103,158,96,199,15,48, + 207,0,48,207,0,48,207,0,48,207,15,48,199,14,48,103, + 158,96,99,252,96,49,248,192,56,1,192,30,7,128,7,254, + 0,1,248,0,9,13,26,11,1,7,62,0,127,128,99,128, + 3,128,63,128,115,128,227,128,227,128,255,128,125,128,0,0, + 0,0,255,128,14,11,22,16,1,2,30,60,28,56,60,120, + 120,240,120,240,241,224,120,240,56,240,60,120,28,56,30,60, + 15,6,12,17,1,6,255,254,255,254,0,6,0,6,0,6, + 0,6,255,20,20,60,24,2,0,1,248,0,7,254,0,31, + 15,128,60,3,192,51,252,192,99,254,224,99,14,96,195,6, + 48,195,28,48,195,248,48,195,252,48,195,12,48,195,14,48, + 99,6,96,99,6,96,51,6,192,56,1,192,30,7,128,7, + 254,0,1,248,0,9,2,4,9,0,18,255,128,255,128,6, + 6,6,8,1,14,120,204,132,132,204,120,16,16,32,26,5, + 0,1,128,1,128,1,128,1,128,255,255,255,255,1,128,1, + 128,1,128,1,128,1,128,0,0,0,0,0,0,255,255,255, + 255,9,11,22,11,1,9,62,0,127,0,227,128,3,128,7, + 0,15,0,30,0,56,0,112,0,255,0,255,0,8,11,11, + 10,1,9,60,254,231,7,30,30,7,7,231,254,124,6,5, + 5,6,1,16,60,56,112,96,192,255,13,24,48,15,1,252, + 31,248,62,96,126,96,254,96,254,96,254,96,254,96,126,96, + 126,96,30,96,6,96,6,96,6,96,6,96,6,96,6,96, + 6,96,6,96,6,96,6,96,6,96,6,96,6,96,6,96, + 4,4,4,8,2,8,240,240,240,240,7,6,6,7,1,249, + 32,60,14,6,254,252,5,11,11,8,2,9,56,248,248,56, + 56,56,56,56,56,56,56,10,13,26,12,1,7,30,0,127, + 128,115,128,225,192,225,192,225,192,225,192,99,128,127,128,30, + 0,0,0,0,0,255,192,13,11,22,16,2,2,225,192,241, + 224,112,224,120,240,120,240,60,120,120,240,120,240,113,224,241, + 224,225,192,19,20,60,22,2,0,56,7,0,248,14,0,184, + 14,0,56,28,0,56,28,0,56,56,0,56,48,0,56,112, + 0,56,224,0,56,227,192,57,195,192,1,199,192,3,143,192, + 3,13,192,7,29,192,14,57,192,14,63,224,28,63,224,28, + 1,192,56,1,192,19,20,60,21,1,0,56,6,0,248,14, + 0,184,12,0,56,28,0,56,24,0,56,48,0,56,112,0, + 56,96,0,56,224,0,56,199,128,57,207,224,3,156,224,3, + 0,224,7,1,224,6,1,192,14,3,128,28,7,0,28,30, + 0,56,31,224,48,31,224,20,20,60,22,1,0,124,1,192, + 230,3,128,231,3,0,7,7,0,30,14,0,30,14,0,7, + 28,0,231,24,0,231,56,0,126,49,224,24,115,224,0,227, + 224,0,199,224,1,198,224,1,140,224,3,156,224,3,31,240, + 7,31,240,14,0,224,12,0,224,12,19,38,15,1,251,7, + 128,7,128,7,128,0,0,0,0,7,0,7,0,7,0,14, + 0,28,0,56,0,112,0,240,0,240,0,240,112,240,112,127, + 240,63,224,15,128,19,28,84,19,0,0,7,0,0,3,128, + 0,1,128,0,1,192,0,0,192,0,0,96,0,0,0,0, + 0,0,0,1,240,0,1,240,0,1,248,0,3,248,0,3, + 248,0,3,188,0,7,188,0,7,156,0,15,30,0,15,30, + 0,15,30,0,30,15,0,30,15,0,31,255,128,63,255,128, + 63,255,128,56,3,192,120,3,192,120,3,192,240,1,224,19, + 28,84,19,0,0,0,28,0,0,56,0,0,56,0,0,112, + 0,0,96,0,0,192,0,0,0,0,0,0,0,1,240,0, + 1,240,0,1,248,0,3,248,0,3,248,0,3,188,0,7, + 188,0,7,156,0,15,30,0,15,30,0,15,30,0,30,15, + 0,30,15,0,31,255,128,63,255,128,63,255,128,56,3,192, + 120,3,192,120,3,192,240,1,224,19,28,84,19,0,0,0, + 224,0,1,240,0,1,240,0,3,184,0,3,24,0,6,12, + 0,0,0,0,0,0,0,1,240,0,1,240,0,1,248,0, + 3,248,0,3,248,0,3,188,0,7,188,0,7,156,0,15, + 30,0,15,30,0,15,30,0,30,15,0,30,15,0,31,255, + 128,63,255,128,63,255,128,56,3,192,120,3,192,120,3,192, + 240,1,224,19,26,78,19,0,0,1,204,0,3,248,0,6, + 120,0,0,0,0,0,0,0,0,0,0,1,240,0,1,240, + 0,1,248,0,3,248,0,3,248,0,3,188,0,7,188,0, + 7,156,0,15,30,0,15,30,0,15,30,0,30,15,0,30, + 15,0,31,255,128,63,255,128,63,255,128,56,3,192,120,3, + 192,120,3,192,240,1,224,19,26,78,19,0,0,7,28,0, + 7,28,0,7,28,0,0,0,0,0,0,0,0,0,0,1, + 240,0,1,240,0,3,248,0,3,248,0,3,248,0,7,188, + 0,7,188,0,7,60,0,15,30,0,15,30,0,30,31,0, + 30,15,0,30,15,0,63,255,128,63,255,128,63,255,128,120, + 3,192,120,3,192,112,3,192,240,1,224,19,29,87,19,0, + 0,0,224,0,1,240,0,3,24,0,3,24,0,3,24,0, + 1,240,0,0,224,0,0,0,0,0,0,0,1,240,0,1, + 240,0,3,240,0,3,248,0,3,248,0,7,188,0,7,188, + 0,7,60,0,15,30,0,15,30,0,30,30,0,30,15,0, + 30,15,0,63,255,128,63,255,128,63,255,128,120,3,192,120, + 3,192,240,3,192,240,1,224,25,20,80,26,0,0,0,63, + 255,128,0,63,255,128,0,127,0,0,0,127,0,0,0,255, + 0,0,1,239,0,0,1,239,0,0,3,207,0,0,3,207, + 255,128,7,143,255,128,7,143,255,128,15,15,0,0,15,255, + 0,0,31,255,0,0,31,255,0,0,60,15,0,0,56,15, + 0,0,120,15,255,128,112,15,255,128,240,15,255,128,17,27, + 81,19,1,249,7,240,0,15,252,0,63,254,0,60,31,0, + 120,31,0,112,15,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,15,128,112,15, + 0,120,31,0,60,63,0,63,254,0,15,252,0,3,240,0, + 0,128,0,0,224,0,0,240,0,0,48,0,0,48,0,3, + 240,0,0,128,0,13,28,56,17,2,0,60,0,28,0,14, + 0,6,0,7,0,3,0,0,0,0,0,255,248,255,248,255, + 248,240,0,240,0,240,0,240,0,240,0,255,248,255,248,255, + 248,240,0,240,0,240,0,240,0,240,0,240,0,255,248,255, + 248,255,248,13,28,56,17,2,0,1,224,1,192,3,128,3, + 0,6,0,6,0,0,0,0,0,255,248,255,248,255,248,240, + 0,240,0,240,0,240,0,240,0,255,248,255,248,255,248,240, + 0,240,0,240,0,240,0,240,0,240,0,255,248,255,248,255, + 248,13,28,56,17,2,0,15,0,15,128,13,128,29,192,24, + 192,48,96,0,0,0,0,255,248,255,248,255,248,240,0,240, + 0,240,0,240,0,240,0,255,248,255,248,255,248,240,0,240, + 0,240,0,240,0,240,0,240,0,255,248,255,248,255,248,13, + 26,52,17,2,0,56,224,56,224,56,224,0,0,0,0,0, + 0,255,248,255,248,255,248,240,0,240,0,240,0,240,0,240, + 0,255,248,255,248,255,248,240,0,240,0,240,0,240,0,240, + 0,240,0,255,248,255,248,255,248,7,28,28,8,255,0,240, + 112,56,24,28,12,0,0,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,6,28,28,7,2, + 0,28,56,48,112,96,192,0,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,8,28,28, + 8,0,0,60,60,126,102,198,195,0,0,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,9, + 26,52,9,0,0,227,128,227,128,227,128,0,0,0,0,0, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,18,20,60,19,0,0,63, + 224,0,63,252,0,63,254,0,60,31,0,60,15,128,60,7, + 128,60,3,192,60,3,192,60,3,192,255,195,192,255,195,192, + 60,3,192,60,3,192,60,3,192,60,7,128,60,15,128,60, + 31,0,63,254,0,63,252,0,63,224,0,17,26,78,21,2, + 0,7,152,0,7,248,0,12,240,0,0,0,0,0,0,0, + 0,0,0,252,7,128,252,7,128,254,7,128,254,7,128,255, + 7,128,255,7,128,247,135,128,247,135,128,243,199,128,243,199, + 128,241,231,128,241,231,128,240,247,128,240,247,128,240,127,128, + 240,127,128,240,63,128,240,63,128,240,31,128,240,31,128,18, + 28,84,20,1,0,14,0,0,7,0,0,3,128,0,1,128, + 0,0,192,0,0,0,0,0,0,0,0,0,0,3,240,0, + 15,252,0,31,254,0,62,31,0,120,7,128,120,7,128,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,120,7,128,120,7,128,62,31,0, + 31,254,0,15,252,0,3,240,0,18,28,84,20,1,0,0, + 60,0,0,56,0,0,112,0,0,96,0,0,192,0,0,0, + 0,0,0,0,0,0,0,3,240,0,15,252,0,31,254,0, + 62,31,0,120,7,128,120,7,128,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,120,7,128,120,7,128,62,31,0,31,254,0,15,252,0, + 3,240,0,18,28,84,20,1,0,1,224,0,3,240,0,3, + 240,0,7,56,0,6,24,0,0,0,0,0,0,0,0,0, + 0,3,240,0,15,252,0,31,254,0,62,31,0,120,7,128, + 120,7,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,120,7,128,120,7, + 128,62,31,0,31,254,0,15,252,0,3,240,0,18,27,81, + 20,1,0,0,8,0,7,248,0,7,248,0,4,0,0,0, + 0,0,0,0,0,0,0,0,3,240,0,15,252,0,31,254, + 0,62,31,0,120,7,128,120,7,128,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,120,7,128,120,7,128,62,31,0,31,254,0,15,252, + 0,3,240,0,18,27,81,20,1,0,7,28,0,7,28,0, + 7,28,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 240,0,15,252,0,31,254,0,62,31,0,120,7,128,120,7, + 128,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,120,7,128,120,7,128,62, + 31,0,31,254,0,15,252,0,3,240,0,15,14,28,27,6, + 2,192,6,96,12,48,24,24,48,12,96,6,192,3,128,3, + 128,6,192,12,96,24,48,48,24,96,12,64,4,20,22,66, + 20,0,255,0,0,32,1,252,112,7,255,224,15,255,192,31, + 15,128,60,3,192,60,7,192,120,15,224,120,29,224,120,57, + 224,120,113,224,120,225,224,121,193,224,123,129,224,127,1,224, + 62,3,192,60,3,192,31,15,128,63,255,0,127,254,0,227, + 248,0,64,0,0,17,28,84,21,2,0,30,0,0,14,0, + 0,7,0,0,3,128,0,1,128,0,0,0,0,0,0,0, + 0,0,0,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,0,240,15,0, + 120,15,0,124,30,0,63,254,0,31,248,0,7,224,0,17, + 28,84,21,2,0,0,60,0,0,120,0,0,112,0,0,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,0,240,15,0,120,15,0,124,30,0, + 63,254,0,31,248,0,7,224,0,17,28,84,21,2,0,3, + 192,0,3,224,0,7,224,0,14,112,0,12,56,0,0,0, + 0,0,0,0,0,0,0,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 0,240,15,0,120,15,0,124,30,0,63,254,0,31,248,0, + 7,224,0,17,27,81,20,2,0,14,56,0,14,56,0,14, + 56,0,0,0,0,0,0,0,0,0,0,0,0,0,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,0,240,15,0,120,15,0,124,30, + 0,63,254,0,31,248,0,7,224,0,16,27,54,17,1,0, + 0,112,0,224,0,192,1,128,0,0,0,0,0,0,240,31, + 248,30,120,30,124,60,60,60,60,120,30,120,30,240,15,240, + 15,224,7,224,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,14,20,40,17,1,0,240,0,240,0, + 240,0,240,0,255,192,255,240,255,248,240,124,240,60,240,60, + 240,60,240,124,255,248,255,240,255,192,240,0,240,0,240,0, + 240,0,240,0,14,20,40,16,1,0,31,128,127,224,121,240, + 240,240,240,240,240,240,241,224,243,192,247,128,247,128,247,128, + 243,224,241,240,240,248,240,60,240,60,255,60,255,188,247,248, + 243,240,12,22,44,15,1,0,120,0,56,0,28,0,12,0, + 6,0,2,0,0,0,0,0,31,128,63,224,121,240,112,240, + 0,240,63,240,127,240,248,240,240,240,240,240,240,240,251,240, + 127,112,62,112,12,22,44,15,1,0,1,224,1,192,3,128, + 3,0,7,0,6,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,31,240,127,240,120,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,22,44,15,1,0,15,0,15,128, + 31,128,25,192,56,192,48,96,0,0,0,0,31,128,63,224, + 121,240,112,240,0,240,63,240,127,240,248,240,240,240,240,240, + 240,240,251,240,127,112,62,112,12,20,40,15,1,0,31,192, + 63,192,48,0,0,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,63,240,127,240,248,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,21,42,15,1,0,56,224,56,224, + 56,224,0,0,0,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,63,240,127,240,248,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,23,46,15,1,0,7,0,31,128, + 24,192,24,192,31,128,15,0,0,0,0,0,0,0,31,128, + 63,224,121,240,112,240,0,240,63,240,127,240,248,240,240,240, + 240,240,240,240,251,240,127,112,62,112,22,14,42,24,1,0, + 15,135,192,63,207,240,124,252,248,112,120,56,0,120,56,31, + 255,252,127,255,252,120,120,0,240,120,0,240,120,0,240,252, + 56,249,222,248,127,143,240,30,7,224,12,21,42,14,1,249, + 31,128,63,224,121,224,112,224,240,240,240,0,240,0,240,0, + 240,0,240,240,240,224,121,224,63,192,31,128,4,0,7,0, + 7,128,0,192,0,192,31,128,4,0,13,22,44,15,1,0, + 56,0,56,0,28,0,12,0,6,0,2,0,0,0,0,0, + 15,128,63,224,121,240,112,240,240,240,255,240,255,248,240,0, + 240,0,240,240,112,240,121,240,63,224,31,128,13,22,44,15, + 1,0,1,224,1,192,3,128,3,0,6,0,6,0,0,0, + 0,0,15,128,63,224,121,240,112,240,240,240,255,240,255,248, + 240,0,240,0,240,240,112,240,121,240,63,224,31,128,13,22, + 44,15,1,0,15,0,15,0,31,128,25,128,56,192,48,192, + 0,0,0,0,15,128,63,224,121,240,112,240,240,240,255,240, + 255,248,240,0,240,0,240,240,112,240,121,240,63,224,31,128, + 13,21,42,15,1,0,56,224,56,224,56,224,0,0,0,0, + 0,0,0,0,15,128,63,224,121,240,112,112,240,112,255,240, + 255,248,240,0,240,0,240,112,112,112,125,240,63,224,31,128, + 6,22,22,7,0,0,224,240,112,56,24,12,0,0,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,6,22,22,6, + 2,0,60,56,112,96,192,192,0,0,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,9,22,44,7,255,0,30,0, + 62,0,63,0,115,0,99,128,193,128,0,0,0,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,9,20,40,7,255,0, + 227,128,227,128,227,128,0,0,0,0,0,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,14,20,40,16,1,0,14,24, + 15,240,3,192,15,192,60,224,48,240,15,240,63,248,124,248, + 120,60,240,60,240,60,240,60,240,60,240,60,240,60,120,56, + 124,248,63,240,15,192,13,20,40,16,2,0,30,96,63,192, + 55,128,0,0,0,0,0,0,247,192,255,240,253,240,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,14,22,44,16,1,0,60,0,28,0,14,0, + 6,0,3,0,3,0,0,0,0,0,15,192,63,224,124,240, + 120,120,240,60,240,60,240,60,240,60,240,60,240,60,120,120, + 124,248,63,240,15,192,14,22,44,16,1,0,0,240,0,224, + 1,192,1,128,3,0,3,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,14,22,44,16,1,0,7,128, + 7,128,15,192,12,192,24,96,24,96,0,0,0,0,15,192, + 63,224,124,240,120,120,240,60,240,60,240,60,240,60,240,60, + 240,60,120,120,124,248,63,240,15,192,14,20,40,16,1,0, + 15,224,31,224,24,0,0,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,14,21,42,16,1,0,28,224, + 28,224,28,224,0,0,0,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,16,12,24,26,5,2,1,192, + 3,192,1,192,0,0,0,0,255,255,255,255,0,0,0,0, + 1,192,3,192,1,192,14,18,36,16,1,254,0,8,0,28, + 15,248,63,240,124,240,120,248,241,252,241,188,243,60,246,60, + 254,60,252,60,120,120,60,248,127,240,239,192,192,0,128,0, + 13,22,44,16,2,0,56,0,60,0,28,0,14,0,6,0, + 3,0,0,0,0,0,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,248,249,248,127,248, + 62,120,13,22,44,16,2,0,1,224,1,192,3,128,3,0, + 7,0,6,0,0,0,0,0,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,248,249,248, + 127,248,62,120,13,22,44,16,2,0,15,0,15,128,31,128, + 29,192,56,192,48,96,0,0,0,0,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,248, + 249,248,127,248,62,120,13,21,42,16,2,0,56,224,56,224, + 56,224,0,0,0,0,0,0,0,0,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,248, + 249,248,127,248,62,120,14,27,54,15,0,251,0,112,0,240, + 0,224,0,192,1,128,0,0,0,0,0,0,120,28,120,60, + 60,60,60,56,60,120,30,120,30,112,14,240,15,240,15,224, + 7,224,7,224,3,192,3,192,3,128,39,128,255,128,127,0, + 62,0,14,25,50,17,2,251,240,0,240,0,240,0,240,0, + 240,0,240,0,247,192,255,240,253,240,248,120,240,56,240,60, + 240,60,240,60,240,60,240,120,240,120,253,240,255,240,247,192, + 240,0,240,0,240,0,240,0,240,0,15,26,52,15,0,251, + 28,112,28,112,28,112,0,0,0,0,0,0,0,0,248,30, + 120,60,120,60,60,56,60,120,60,120,30,112,30,240,15,240, + 15,224,15,224,7,224,7,192,3,192,7,128,7,128,7,128, + 15,0,15,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=16 h=21 x= 5 y= 9 dx=26 dy= 0 ascent=20 len=40 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =20 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20n[583] U8G_SECTION(".progmem.u8g_font_fub20n") = { + 0,40,36,254,249,20,0,0,0,0,42,57,0,20,252,20, + 0,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=27 h=29 x= 7 y=16 dx=28 dy= 0 ascent=22 len=100 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =22 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20r[4022] U8G_SECTION(".progmem.u8g_font_fub20r") = { + 0,40,36,254,249,20,4,242,11,37,32,127,251,22,249,20, + 251,0,0,0,8,0,0,4,20,20,11,4,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,0,0,0,240,240, + 240,10,8,16,14,2,12,243,192,243,192,243,192,243,192,243, + 192,225,192,225,192,97,128,17,20,60,19,1,0,1,199,0, + 1,134,0,3,142,0,3,142,0,3,142,0,31,255,128,63, + 255,128,7,28,0,6,24,0,14,56,0,14,56,0,14,48, + 0,127,254,0,255,254,0,28,112,0,24,96,0,56,224,0, + 56,224,0,56,224,0,49,192,0,14,24,48,16,1,253,1, + 0,7,192,31,240,63,248,125,120,113,60,241,60,241,0,253, + 0,127,0,63,224,31,240,3,248,1,124,1,60,241,60,241, + 60,249,60,127,248,63,240,31,224,1,0,1,0,1,0,25, + 20,80,27,1,0,31,0,96,0,63,128,224,0,123,192,192, + 0,225,193,192,0,224,227,128,0,224,227,0,0,224,231,0, + 0,224,230,0,0,113,206,0,0,127,204,124,0,63,28,254, + 0,0,57,199,0,0,59,131,0,0,115,131,128,0,99,131, + 128,0,227,131,128,1,195,135,128,1,193,239,0,3,128,254, + 0,3,128,124,0,19,20,60,21,1,0,15,192,0,31,240, + 0,60,240,0,120,120,0,120,120,0,120,112,0,60,240,0, + 63,224,0,31,192,0,31,128,0,63,135,128,123,199,128,249, + 231,128,240,247,0,240,127,0,240,63,0,240,30,0,124,127, + 0,63,255,128,15,227,224,4,8,8,11,4,12,240,224,224, + 224,224,224,224,224,6,24,24,10,2,252,28,56,56,120,120, + 112,112,240,240,240,240,240,240,240,240,240,240,112,112,120,120, + 56,56,28,6,24,24,11,3,252,224,240,112,112,120,120,120, + 56,56,60,60,60,60,60,60,56,56,120,120,120,112,112,240, + 224,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128,4,14,14,9,4,0,240,240,240, + 240,0,0,0,0,0,0,240,240,240,240,6,17,17,8,1, + 253,60,60,60,60,0,0,0,0,0,0,60,56,120,112,112, + 224,224,16,14,28,26,5,1,0,3,0,31,0,120,3,192, + 15,0,120,0,224,0,224,0,60,0,7,128,1,224,0,60, + 0,15,0,1,16,7,14,26,5,5,255,255,255,255,0,0, + 0,0,0,0,255,255,255,255,16,14,28,26,5,1,192,0, + 248,0,30,0,3,192,0,240,0,30,0,7,0,7,0,60, + 1,224,7,128,60,0,240,0,128,0,13,20,40,15,1,0, + 31,128,63,224,121,240,240,112,32,120,0,120,0,112,0,240, + 1,224,3,192,7,128,14,0,14,0,14,0,14,0,0,0, + 0,0,15,0,15,0,15,0,26,25,100,28,1,251,0,63, + 128,0,1,255,240,0,7,255,252,0,15,224,254,0,31,0, + 31,0,62,0,15,0,60,61,231,128,120,255,231,128,121,247, + 227,192,241,225,227,192,241,193,227,192,243,193,227,192,243,193, + 227,192,243,193,227,192,243,193,227,192,241,193,227,128,113,227, + 231,128,120,255,255,0,124,254,255,0,60,60,60,0,31,0, + 0,0,15,192,32,0,7,255,224,0,1,255,224,0,0,127, + 224,0,19,20,60,19,0,0,1,240,0,1,240,0,1,248, + 0,3,248,0,3,248,0,3,188,0,7,188,0,7,156,0, + 15,30,0,15,30,0,15,30,0,30,15,0,30,15,0,31, + 255,128,63,255,128,63,255,128,56,3,192,120,3,192,120,3, + 192,240,1,224,15,20,40,18,2,0,255,224,255,240,255,248, + 240,124,240,60,240,60,240,56,240,120,255,240,255,192,255,248, + 240,60,240,28,240,30,240,30,240,30,240,60,255,252,255,248, + 255,224,17,20,60,19,1,0,7,240,0,15,252,0,63,254, + 0,60,31,0,120,15,0,112,15,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 15,128,112,15,0,120,31,0,60,62,0,63,254,0,31,248, + 0,7,224,0,16,20,40,19,2,0,255,128,255,240,255,248, + 240,124,240,62,240,30,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,240,30,240,62,240,124,255,248,255,240, + 255,128,13,20,40,17,2,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,240,0,255,248,255,248,255,248, + 13,20,40,16,2,0,255,248,255,248,255,248,240,0,240,0, + 240,0,240,0,240,0,255,240,255,240,255,240,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,18,20, + 60,20,1,0,1,248,0,15,254,0,31,255,0,62,15,128, + 124,3,128,120,3,192,112,0,0,240,0,0,240,0,0,240, + 63,192,240,63,192,240,63,192,240,3,192,240,3,192,120,3, + 192,124,3,192,63,3,192,31,255,192,15,255,192,1,254,0, + 16,20,40,20,2,0,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,255,255,255,255,255,255,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,4,20, + 20,8,2,0,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,14,20,40,17,1,0,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,240,60,240,56,248,120, + 127,240,127,224,31,192,15,20,40,18,2,0,240,60,240,124, + 240,248,241,240,241,224,243,224,247,192,255,128,255,0,255,0, + 255,128,247,192,247,192,243,224,241,240,240,240,240,248,240,124, + 240,62,240,62,13,20,40,16,2,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,255,248,255,248, + 255,248,21,20,60,25,2,0,252,1,248,254,3,248,254,3, + 248,254,3,248,255,7,248,255,7,248,247,7,120,247,15,120, + 247,143,120,247,143,120,243,142,120,243,222,120,243,222,120,241, + 220,120,241,252,120,241,252,120,240,248,120,240,248,120,240,248, + 120,240,248,120,17,20,60,21,2,0,252,7,128,252,7,128, + 254,7,128,254,7,128,255,7,128,255,7,128,247,135,128,247, + 135,128,243,199,128,243,199,128,241,231,128,241,231,128,240,247, + 128,240,247,128,240,127,128,240,127,128,240,63,128,240,63,128, + 240,31,128,240,31,128,18,20,60,20,1,0,3,240,0,15, + 252,0,31,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 254,0,15,252,0,3,240,0,14,20,40,17,2,0,255,192, + 255,240,255,248,240,124,240,60,240,60,240,60,240,60,240,124, + 255,248,255,240,255,192,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,20,20,60,22,1,0,3,240,0,15, + 252,0,63,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 255,240,15,255,240,3,255,240,15,20,40,18,2,0,255,224, + 255,248,255,252,240,62,240,30,240,30,240,30,240,30,240,124, + 255,248,255,240,255,252,240,60,240,60,240,28,240,30,240,30, + 240,30,240,30,240,14,16,20,40,18,1,0,7,224,31,248, + 63,252,60,60,120,30,120,30,120,0,124,0,63,128,31,240, + 15,252,0,254,0,30,0,15,240,15,240,14,120,62,127,252, + 63,248,7,224,16,20,40,18,1,0,255,255,255,255,255,255, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,17,20,60,21,2,0,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,0,240,15,0,120,15,0,124,30,0,63,254,0,31,248, + 0,7,224,0,19,20,60,20,0,0,248,1,224,120,1,224, + 120,3,224,60,3,192,60,3,192,62,7,192,30,7,128,30, + 7,128,31,15,128,15,15,0,15,15,0,15,158,0,7,158, + 0,7,158,0,7,252,0,3,252,0,3,252,0,1,248,0, + 1,248,0,1,240,0,27,20,80,27,0,0,248,31,3,224, + 120,31,3,192,120,31,3,192,120,63,131,192,120,63,131,192, + 60,59,135,128,60,59,135,128,60,123,199,128,60,123,199,128, + 28,113,199,0,30,113,207,0,30,241,239,0,30,241,239,0, + 14,224,238,0,14,224,238,0,15,224,254,0,15,224,254,0, + 7,192,124,0,7,192,124,0,7,192,124,0,17,20,60,19, + 1,0,248,15,128,120,15,0,124,30,0,62,30,0,30,60, + 0,31,120,0,15,120,0,7,240,0,7,224,0,3,224,0, + 7,224,0,7,240,0,15,240,0,30,120,0,30,124,0,60, + 60,0,60,30,0,120,31,0,240,15,0,240,7,128,16,20, + 40,17,1,0,240,31,248,30,120,30,124,60,60,60,60,120, + 30,120,30,240,15,240,15,224,7,224,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,20,40,17, + 1,0,127,254,127,254,127,254,0,62,0,124,0,248,0,248, + 1,240,3,224,7,224,7,192,15,128,31,0,63,0,62,0, + 124,0,248,0,255,254,255,254,255,254,6,25,25,10,2,251, + 252,252,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,252,252,9,21,42,12,1,255,224, + 0,96,0,112,0,112,0,48,0,56,0,56,0,56,0,24, + 0,28,0,28,0,12,0,14,0,14,0,6,0,6,0,7, + 0,7,0,3,0,3,128,3,128,7,25,25,11,2,251,254, + 254,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,254,254,13,17,34,27,7,0,2,0, + 7,0,5,0,5,0,13,128,8,128,24,192,24,192,16,64, + 48,96,48,96,32,32,96,48,64,16,192,24,192,24,128,8, + 14,2,4,14,0,252,255,252,255,252,5,5,5,7,0,16, + 224,112,112,56,24,12,14,28,15,1,0,31,128,63,224,121, + 240,112,240,0,240,63,240,127,240,248,240,240,240,240,240,240, + 240,251,240,127,112,62,112,14,20,40,17,2,0,240,0,240, + 0,240,0,240,0,240,0,240,0,247,192,255,240,253,240,248, + 120,240,120,240,60,240,60,240,60,240,60,240,56,248,120,252, + 240,255,240,243,192,12,14,28,14,1,0,31,128,63,224,121, + 224,112,224,240,240,240,0,240,0,240,0,240,0,240,240,240, + 224,121,224,63,192,31,128,14,20,40,16,1,0,0,60,0, + 60,0,60,0,60,0,60,0,60,31,188,63,252,124,252,120, + 124,240,60,240,60,240,60,240,60,240,60,240,60,120,124,125, + 252,63,188,15,60,13,14,28,15,1,0,15,128,63,224,121, + 240,112,240,240,240,255,240,255,248,240,0,240,0,240,240,112, + 240,121,240,63,224,31,128,10,20,40,11,1,0,15,192,31, + 192,62,64,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,14,19,38,16,1,251,31,188,63,252,124, + 252,120,124,240,60,240,60,240,60,240,60,240,60,240,60,112, + 124,124,252,63,188,15,60,0,60,120,56,124,248,63,240,15, + 192,13,20,40,16,2,0,240,0,240,0,240,0,240,0,240, + 0,240,0,247,192,255,240,253,240,248,120,240,120,240,120,240, + 120,240,120,240,120,240,120,240,120,240,120,240,120,240,120,4, + 20,20,6,1,0,240,240,240,240,0,0,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,5,25,25,9,3,251,120, + 120,120,120,0,0,120,120,120,120,120,120,120,120,120,120,120, + 120,120,120,120,120,248,248,240,12,20,40,15,2,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,240,241,224,243,192, + 247,128,255,128,255,0,255,0,255,0,247,128,247,192,243,192, + 241,224,241,240,240,240,4,20,20,7,2,0,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 22,14,42,25,2,0,243,227,224,255,247,248,253,254,248,240, + 120,120,240,120,60,240,120,60,240,120,60,240,120,60,240,120, + 60,240,120,60,240,120,60,240,120,60,240,120,60,240,120,60, + 13,14,28,16,2,0,247,192,255,240,253,240,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,14,14,28,16,1,0,15,192,63,224,124,240,120,120, + 240,60,240,60,240,60,240,60,240,60,240,60,120,120,124,248, + 63,240,15,192,14,19,38,17,2,251,243,192,255,240,253,240, + 248,120,240,56,240,60,240,60,240,60,240,60,240,120,240,120, + 253,248,255,240,247,192,240,0,240,0,240,0,240,0,240,0, + 14,19,38,16,1,251,15,60,63,252,125,252,120,124,240,60, + 240,60,240,60,240,60,240,60,240,60,120,124,124,252,63,252, + 31,188,0,60,0,60,0,60,0,60,0,60,9,14,28,11, + 2,0,247,128,255,128,255,128,252,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,12,14, + 28,14,1,0,31,128,127,192,123,224,241,224,240,0,126,0, + 127,192,31,224,1,240,240,240,240,240,249,224,127,192,31,128, + 10,18,36,12,1,0,2,0,14,0,30,0,30,0,255,192, + 255,192,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,0,15,192,7,192,13,14,28,16,2,0, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,248,249,248,127,248,62,120,14,14,28,15, + 0,0,240,60,120,60,120,60,56,120,60,120,60,112,28,240, + 30,240,30,224,15,224,15,224,15,192,7,192,7,192,23,14, + 42,23,0,0,240,124,30,112,124,28,120,124,60,120,254,60, + 56,238,60,60,238,56,61,239,120,61,231,120,29,199,112,31, + 199,240,31,199,240,15,131,224,15,131,224,15,131,224,13,14, + 28,15,1,0,240,120,120,240,124,224,61,224,31,192,31,128, + 15,128,31,128,31,192,63,224,57,224,120,240,240,248,240,120, + 14,19,38,15,0,251,248,60,120,60,120,60,60,120,60,120, + 60,112,30,240,30,240,14,224,15,224,15,224,7,192,7,192, + 3,192,7,128,7,128,7,128,15,0,15,0,11,14,28,13, + 1,0,255,224,255,224,1,224,3,224,7,192,7,128,15,0, + 30,0,60,0,124,0,248,0,240,0,255,224,255,224,10,27, + 54,13,2,249,3,192,15,192,31,128,30,0,30,0,30,0, + 30,0,30,0,30,0,28,0,28,0,60,0,248,0,224,0, + 248,0,124,0,60,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,128,15,192,7,192,2,29,29,10,4,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,10,27,54, + 14,2,249,240,0,252,0,124,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,15,0,7,192,3,192,7, + 192,15,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,124,0,252,0,240,0,14,3,6,14,0,5,63, + 156,127,248,225,240,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=34 h=37 x= 8 y=22 dx=35 dy= 0 ascent=37 len=160 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =37 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25[12908] U8G_SECTION(".progmem.u8g_font_fub25") = { + 0,50,46,254,247,25,7,111,16,148,32,255,249,37,247,25, + 249,0,0,0,10,0,0,5,25,25,14,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 0,0,248,248,248,248,13,10,20,18,2,15,248,248,248,248, + 248,248,120,248,120,120,120,120,120,120,120,120,120,112,120,112, + 21,25,75,24,2,0,0,224,224,0,225,224,0,225,192,1, + 225,192,1,195,192,1,195,128,31,255,248,31,255,240,63,255, + 240,7,135,0,7,135,0,7,15,0,7,14,0,15,14,0, + 14,14,0,255,255,192,255,255,192,255,255,192,28,60,0,28, + 60,0,60,56,0,56,56,0,56,120,0,120,112,0,112,112, + 0,18,31,93,20,1,252,0,192,0,0,192,0,3,248,0, + 15,252,0,31,254,0,63,255,0,126,223,0,120,207,128,248, + 207,128,248,192,0,252,192,0,126,192,0,127,192,0,127,240, + 0,31,252,0,7,255,0,1,255,128,0,255,128,0,207,128, + 0,199,192,248,199,192,248,199,192,248,207,128,126,223,128,127, + 255,0,63,254,0,15,252,0,3,240,0,0,192,0,0,192, + 0,0,192,0,32,26,104,34,1,0,0,0,3,128,15,192, + 7,0,63,240,7,0,124,248,14,0,120,120,14,0,240,60, + 28,0,240,60,24,0,240,60,56,0,240,60,112,0,240,60, + 112,0,120,120,224,0,120,120,224,0,63,241,199,248,15,195, + 143,252,0,3,159,62,0,7,30,30,0,7,60,15,0,14, + 60,15,0,30,60,15,0,28,60,15,0,56,60,15,0,56, + 60,15,0,112,30,30,0,112,15,60,0,224,15,252,1,224, + 3,240,24,25,75,27,2,1,7,252,0,31,254,0,31,255, + 0,62,31,0,62,31,0,62,31,0,62,31,0,30,62,0, + 31,126,0,15,252,0,7,240,0,15,224,0,63,224,124,63, + 240,120,124,248,120,252,124,120,248,62,120,248,31,248,248,15, + 240,248,7,240,252,3,224,126,15,240,63,255,248,31,255,254, + 7,252,63,5,10,10,14,4,15,248,248,120,120,120,120,120, + 120,120,120,7,30,30,13,3,251,30,30,62,60,60,124,124, + 120,120,248,248,248,248,248,248,248,248,248,248,248,248,120,120, + 124,124,60,60,62,30,30,8,30,30,14,3,251,240,120,120, + 124,60,60,60,62,62,30,30,30,30,31,31,31,31,31,30, + 30,30,62,62,62,60,60,124,120,120,240,14,13,26,22,4, + 13,28,224,60,240,28,224,15,192,135,132,255,252,255,252,231, + 156,15,192,30,224,28,224,60,240,8,64,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,255,255,240,255, + 255,240,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 7,9,9,11,2,251,62,60,60,120,120,112,240,240,224,9, + 5,10,11,1,7,255,128,255,128,255,128,255,128,255,128,5, + 5,5,10,3,0,248,248,248,248,248,11,28,56,15,2,254, + 0,224,0,224,1,192,1,192,1,192,3,128,3,128,3,128, + 3,128,7,0,7,0,7,0,14,0,14,0,14,0,28,0, + 28,0,28,0,56,0,56,0,56,0,56,0,112,0,112,0, + 112,0,224,0,224,0,224,0,17,25,75,19,1,1,7,224, + 0,31,252,0,63,254,0,60,30,0,120,15,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,120,15,0,120,15,0,120,15,0,60,30,0, + 31,252,0,15,248,0,7,224,0,11,25,50,19,3,1,3, + 224,15,224,31,224,127,224,255,224,251,224,243,224,195,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,17,25,75,19,1,1,7,248,0,31,254,0,31,255,0, + 63,255,0,126,31,128,124,15,128,124,15,128,0,15,128,0, + 15,128,0,31,0,0,31,0,0,62,0,0,126,0,0,252, + 0,1,248,0,3,240,0,7,224,0,15,192,0,63,0,0, + 126,0,0,252,0,0,255,255,128,255,255,128,255,255,128,255, + 255,128,16,25,50,19,2,1,31,240,63,252,127,254,255,254, + 248,62,248,31,0,31,0,30,0,126,7,252,7,240,7,248, + 7,252,0,62,0,31,0,31,0,31,248,31,248,31,248,31, + 252,62,127,254,127,252,31,248,15,224,18,25,75,19,1,1, + 0,126,0,0,254,0,0,254,0,1,254,0,3,254,0,3, + 254,0,7,190,0,15,190,0,15,62,0,30,62,0,30,62, + 0,60,62,0,124,62,0,120,62,0,240,62,0,255,255,192, + 255,255,192,255,255,192,255,255,192,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,17,25,75,19,1, + 1,255,254,0,255,254,0,255,254,0,255,254,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,252,63,0,248,31,0,248,15,0,0,15,128,0,15, + 128,0,15,128,0,15,0,248,15,0,248,31,0,252,63,0, + 127,254,0,127,252,0,63,248,0,15,224,0,17,25,75,19, + 1,1,3,240,0,15,252,0,31,254,0,63,255,0,62,31, + 0,126,15,128,124,0,0,124,0,0,252,0,0,248,248,0, + 251,254,0,255,254,0,255,31,0,254,15,128,252,15,128,252, + 15,128,252,15,128,252,15,128,124,15,128,126,15,128,127,31, + 0,63,255,0,31,254,0,15,252,0,3,240,0,16,25,50, + 19,2,1,255,255,255,255,255,255,255,255,0,15,0,31,0, + 30,0,62,0,62,0,124,0,124,0,248,0,248,0,240,1, + 240,1,240,3,224,3,224,7,192,7,192,15,128,15,128,15, + 128,31,0,31,0,17,25,75,19,1,1,7,240,0,31,252, + 0,127,255,0,127,255,0,252,31,128,248,15,128,248,15,128, + 120,15,0,124,31,0,63,254,0,15,248,0,31,248,0,63, + 254,0,124,63,0,248,15,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,252,31,128,127,255,0,127,255,0, + 31,252,0,7,240,0,17,25,75,19,1,1,7,240,0,31, + 252,0,63,254,0,127,254,0,124,63,0,248,31,0,248,31, + 0,248,31,128,248,31,128,248,31,128,248,63,128,124,63,128, + 127,255,128,63,239,128,15,207,128,0,15,128,0,31,0,0, + 31,0,248,31,0,120,63,0,124,126,0,63,254,0,63,252, + 0,31,248,0,7,224,0,5,18,18,11,5,0,248,248,248, + 248,248,0,0,0,0,0,0,0,0,248,248,248,248,248,7, + 22,22,11,2,252,62,62,62,62,62,0,0,0,0,0,0, + 0,0,62,60,124,120,120,112,240,224,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,248,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,248,0,0,63,0,0,7,224,0,0,248,0,0,63,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,16,25,50,19,1,1,31,240,63,248,127,252,248,62,112, + 30,48,31,0,31,0,30,0,62,0,60,0,120,0,240,1, + 224,3,192,3,128,3,128,3,128,3,128,3,128,0,0,0, + 0,7,192,7,192,7,192,7,192,33,32,160,35,1,250,0, + 31,254,0,0,0,127,255,128,0,1,255,255,224,0,3,255, + 255,240,0,7,240,3,248,0,15,192,1,252,0,31,128,0, + 124,0,63,7,159,126,0,62,31,255,63,0,124,63,255,31, + 0,124,127,255,31,0,120,126,63,31,0,248,252,31,15,0, + 248,248,31,15,128,248,248,31,15,128,248,248,31,15,128,248, + 248,31,15,0,248,248,31,15,0,248,248,31,15,0,248,248, + 31,31,0,120,124,63,30,0,124,124,127,190,0,124,63,255, + 252,0,62,31,231,248,0,63,7,195,240,0,31,128,0,0, + 0,15,192,0,0,0,7,248,3,0,0,3,255,255,0,0, + 1,255,255,0,0,0,127,255,0,0,0,7,255,0,0,23, + 25,75,24,1,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 19,25,75,23,2,0,255,248,0,255,254,0,255,255,0,255, + 255,0,248,63,0,248,15,128,248,15,128,248,15,0,248,15, + 0,248,63,0,255,254,0,255,248,0,255,252,0,255,255,0, + 248,15,192,248,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,7,224,255,255,192,255,255,128,255,255,0,255,252, + 0,21,25,75,25,2,1,3,255,0,15,255,192,31,255,224, + 63,255,240,62,3,240,124,1,240,120,1,248,120,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,1,248,120,1,248,124,1,248, + 124,3,240,63,7,240,31,255,224,15,255,192,7,255,0,1, + 252,0,20,25,75,23,2,0,255,224,0,255,252,0,255,254, + 0,255,255,0,248,63,128,248,15,192,248,7,192,248,3,224, + 248,3,224,248,1,224,248,1,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,224,248,3,224,248,3,224,248,7, + 192,248,15,192,248,63,128,255,255,0,255,254,0,255,252,0, + 255,224,0,17,25,75,21,2,0,255,255,0,255,255,0,255, + 255,0,255,255,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,0,255,255,0,255,255,0, + 255,255,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,128,255,255,128,255,255, + 128,255,255,128,16,25,50,19,2,0,255,255,255,255,255,255, + 255,255,248,0,248,0,248,0,248,0,248,0,248,0,255,254, + 255,254,255,254,255,254,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,22,25,75,26, + 2,1,1,255,192,7,255,224,15,255,240,31,255,248,63,0, + 248,62,0,124,124,0,124,124,0,0,248,0,0,248,0,0, + 248,0,0,248,7,252,248,7,252,248,7,252,248,7,252,248, + 0,124,248,0,124,124,0,124,126,0,124,63,0,124,63,192, + 124,31,255,252,15,255,252,3,255,252,0,127,192,20,25,75, + 24,2,0,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,255,255,240,255,255,240,255,255,240,255,255,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,5,25, + 25,9,2,0,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,17,25,75, + 21,2,0,0,15,128,0,15,128,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,127,255,0,127,254,0,63,252,0,15,240,0,19,25, + 75,23,2,0,248,7,192,248,15,128,248,31,128,248,63,0, + 248,126,0,248,124,0,248,248,0,249,248,0,251,240,0,251, + 224,0,255,192,0,255,192,0,255,224,0,255,240,0,251,240, + 0,249,248,0,249,252,0,248,252,0,248,126,0,248,63,0, + 248,63,128,248,31,128,248,15,192,248,15,224,248,7,224,16, + 25,50,19,2,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,255, + 255,255,255,255,255,255,255,27,25,100,31,2,0,255,0,31, + 224,255,0,63,224,255,128,63,224,255,128,63,224,255,128,127, + 224,255,192,127,224,255,192,123,224,251,192,123,224,251,224,251, + 224,251,224,243,224,251,224,243,224,249,241,243,224,249,241,243, + 224,249,241,227,224,248,243,227,224,248,251,227,224,248,251,195, + 224,248,127,195,224,248,127,195,224,248,127,131,224,248,127,131, + 224,248,63,131,224,248,63,131,224,248,63,3,224,248,31,3, + 224,21,25,75,25,2,0,254,0,248,255,0,248,255,0,248, + 255,128,248,255,128,248,255,192,248,255,192,248,251,224,248,251, + 224,248,249,224,248,249,240,248,248,240,248,248,248,248,248,120, + 248,248,124,248,248,60,248,248,62,248,248,30,248,248,31,248, + 248,31,248,248,15,248,248,15,248,248,7,248,248,7,248,248, + 3,248,23,25,75,27,2,1,3,255,128,7,255,192,31,255, + 240,31,255,240,63,1,248,126,0,252,124,0,124,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,62,0,248,63,131,248,31,255,240,15,255,224,7,255,192, + 0,254,0,18,25,75,21,2,0,255,240,0,255,252,0,255, + 255,0,255,255,128,248,31,128,248,15,128,248,7,192,248,7, + 192,248,7,192,248,15,128,248,31,128,255,255,128,255,255,0, + 255,252,0,255,240,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,26,25,100,29,2,1,3,255,128,0,7,255, + 192,0,31,255,224,0,31,255,240,0,63,1,248,0,126,0, + 252,0,124,0,124,0,120,0,60,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,120,0,60,0,124,0, + 124,0,124,0,124,0,62,0,248,0,63,131,240,0,31,255, + 255,192,15,255,255,192,3,255,255,192,0,255,255,192,19,25, + 75,22,2,0,255,252,0,255,255,0,255,255,128,255,255,192, + 248,15,192,248,7,224,248,3,224,248,3,224,248,3,192,248, + 7,192,248,31,128,255,255,0,255,252,0,255,255,0,255,255, + 128,248,15,128,248,7,192,248,7,192,248,7,192,248,3,192, + 248,3,192,248,3,192,248,3,224,248,3,224,248,3,224,20, + 25,75,23,2,1,7,254,0,15,255,0,31,255,128,63,255, + 192,126,7,192,124,3,192,124,3,224,124,0,0,124,0,0, + 127,0,0,63,240,0,31,254,0,7,255,128,1,255,192,0, + 31,224,0,3,224,0,1,240,248,1,240,248,1,240,248,3, + 224,126,7,224,127,255,192,63,255,128,15,255,0,3,248,0, + 20,25,75,22,1,0,255,255,240,255,255,240,255,255,240,255, + 255,240,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,21,25,75,25,2,0,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,240,248,0,240,120,1,240, + 124,3,240,127,7,224,63,255,192,31,255,128,15,255,0,3, + 252,0,24,25,75,25,1,0,248,0,63,248,0,62,252,0, + 62,124,0,124,124,0,124,126,0,124,62,0,248,63,0,248, + 63,1,240,31,1,240,31,129,240,31,131,224,15,131,224,15, + 195,224,7,199,192,7,199,192,7,231,128,3,239,128,3,255, + 128,3,255,0,1,255,0,1,254,0,1,254,0,0,254,0, + 0,252,0,34,25,125,34,0,0,252,3,240,15,192,252,3, + 240,15,128,124,3,240,15,128,126,7,248,15,128,126,7,248, + 15,128,126,7,248,31,0,62,7,248,31,0,62,15,252,31, + 0,63,15,60,30,0,63,15,60,62,0,31,15,60,62,0, + 31,31,62,62,0,31,30,30,60,0,31,158,30,60,0,15, + 158,30,124,0,15,190,31,124,0,15,188,15,120,0,7,252, + 15,120,0,7,252,15,120,0,7,252,15,248,0,7,248,7, + 240,0,3,248,7,240,0,3,248,7,240,0,3,248,7,240, + 0,3,240,3,224,0,22,25,75,24,1,0,252,0,248,126, + 1,248,62,1,240,63,3,224,31,135,192,15,135,192,15,207, + 128,7,239,0,3,255,0,3,254,0,1,252,0,0,252,0, + 0,252,0,1,254,0,3,254,0,3,255,0,7,223,128,15, + 143,128,15,15,192,31,7,224,62,3,224,62,3,240,124,1, + 248,248,1,248,248,0,252,21,25,75,22,1,0,252,1,248, + 252,1,240,126,3,224,126,3,224,63,7,192,31,7,192,31, + 143,128,15,143,128,15,223,0,7,223,0,7,254,0,3,254, + 0,3,252,0,1,248,0,1,248,0,0,240,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,18,25,75,22,2,0,127,255, + 192,127,255,192,127,255,192,127,255,192,0,15,192,0,31,128, + 0,63,0,0,63,0,0,126,0,0,252,0,1,252,0,1, + 248,0,3,240,0,7,224,0,7,224,0,15,192,0,31,128, + 0,63,128,0,63,0,0,126,0,0,252,0,0,255,255,192, + 255,255,192,255,255,192,255,255,192,8,32,32,13,3,249,255, + 255,255,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,255,255,255,11, + 28,56,15,2,254,224,0,224,0,240,0,240,0,240,0,112, + 0,120,0,120,0,56,0,60,0,60,0,28,0,30,0,30, + 0,30,0,15,0,15,0,15,0,7,0,7,128,7,128,3, + 128,3,192,3,192,1,192,1,224,1,224,1,224,8,32,32, + 13,3,249,255,255,255,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 255,255,255,18,21,63,34,8,0,0,192,0,0,224,0,1, + 224,0,1,224,0,1,48,0,3,48,0,2,24,0,6,24, + 0,6,24,0,4,12,0,12,12,0,12,14,0,24,6,0, + 24,6,0,24,7,0,48,3,0,48,3,0,112,1,128,96, + 1,128,96,1,192,192,0,192,17,3,9,17,0,251,255,255, + 128,255,255,128,255,255,128,7,7,7,9,255,21,248,120,60, + 60,28,14,6,15,18,36,19,2,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,17,25, + 75,20,2,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,254,63,0,252,31,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 252,31,0,254,63,0,255,254,0,251,252,0,249,240,0,15, + 18,36,18,2,0,7,224,31,248,63,252,124,124,120,60,248, + 62,248,0,248,0,248,0,248,0,248,0,248,62,248,62,120, + 60,124,124,63,252,31,248,15,224,17,25,75,21,2,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,7,207,128,31,255,128,63,255,128,126,63,128, + 124,31,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,128,126,63, + 128,63,255,128,31,239,128,7,207,128,15,18,36,19,2,0, + 7,224,31,248,63,252,124,60,120,62,248,30,248,30,255,254, + 255,254,255,254,248,0,248,0,248,30,120,62,124,62,63,252, + 31,248,7,224,12,25,50,13,1,0,7,240,15,240,31,240, + 31,0,31,0,31,0,31,0,255,224,255,224,255,224,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,17,25,75,21, + 2,249,7,207,128,31,255,128,63,255,128,126,63,128,124,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,31,128,126,63,128,63, + 255,128,31,239,128,7,207,128,0,15,128,0,15,128,124,15, + 128,124,31,0,63,254,0,31,252,0,7,240,0,16,25,50, + 20,2,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,249,248,255,252,255,254,254,63,252,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,5,25,25,9,2,0,248,248,248,248,248, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,6,32,32,12,4,249,124,124,124,124,124,0, + 0,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,252,252,248,240,16,25,50,19,2,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,62, + 248,124,248,248,249,248,249,240,251,224,255,192,255,192,255,192, + 255,192,251,224,251,240,249,240,248,248,248,252,248,124,248,126, + 248,63,5,25,25,9,2,0,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,27,18,72,31,2,0,249,248,62,0,251,252,127,128,255, + 254,255,192,254,63,199,192,252,63,135,192,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,16, + 18,36,20,2,0,249,248,251,252,255,254,252,63,252,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,18,18,54,21,2,0,3, + 240,0,15,252,0,63,254,0,62,31,0,124,15,128,120,15, + 128,248,7,128,248,7,128,248,7,192,248,7,192,248,7,192, + 248,7,128,120,15,128,124,15,128,62,31,0,63,254,0,15, + 252,0,3,240,0,17,25,75,20,2,249,249,240,0,251,252, + 0,255,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,252,31,0,254,63,0,255,254,0,255,252,0,249,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,21,2,249,7,207,128,31, + 239,128,63,255,128,126,63,128,124,31,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,128,126,63,128,63,255,128,31,255,128,7, + 207,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,11,18,36,13,2,0,249,224,251, + 224,255,224,255,224,255,0,252,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,15,18,36,18,2,0,15,224,63,248,127,248,124,124,248, + 124,248,124,126,0,127,192,63,248,15,252,1,252,0,126,248, + 62,248,62,248,124,127,252,63,248,15,192,13,23,46,14,1, + 0,1,0,7,0,31,0,31,0,31,0,255,240,255,240,255, + 240,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,15,128,15,248,7,248,3,240,16, + 18,36,20,2,0,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,252,63,127,255,63,223,31,159,18,18,54,19,0,0,248, + 7,192,124,7,192,124,15,128,124,15,128,62,15,128,62,31, + 0,62,31,0,31,30,0,31,30,0,15,62,0,15,188,0, + 15,188,0,7,252,0,7,248,0,7,248,0,3,240,0,3, + 240,0,1,240,0,29,18,72,29,0,0,248,15,128,248,124, + 31,192,240,124,31,193,240,124,31,193,240,124,31,225,224,62, + 63,225,224,62,61,227,224,62,61,227,224,31,125,243,192,31, + 120,247,192,31,120,247,192,15,248,255,128,15,248,127,128,15, + 240,127,128,15,240,127,128,7,240,127,0,7,224,63,0,7, + 224,63,0,17,18,54,19,1,0,252,31,0,124,31,0,126, + 62,0,63,60,0,31,124,0,15,248,0,15,248,0,7,240, + 0,7,224,0,7,240,0,15,248,0,31,248,0,30,252,0, + 62,126,0,60,62,0,124,63,0,248,31,0,248,15,128,17, + 25,75,18,1,249,248,15,128,248,15,128,248,15,0,124,31, + 0,124,31,0,124,30,0,62,62,0,62,60,0,30,60,0, + 31,124,0,31,120,0,15,248,0,15,248,0,15,240,0,7, + 240,0,7,240,0,3,224,0,3,224,0,3,224,0,3,192, + 0,7,192,0,7,128,0,7,128,0,15,128,0,15,128,0, + 14,18,36,18,2,0,255,252,255,252,255,252,0,124,0,248, + 1,248,3,240,7,224,7,192,15,128,31,128,63,0,126,0, + 124,0,248,0,255,252,255,252,255,252,13,35,70,18,3,248, + 0,248,3,248,7,248,15,192,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,0,15,0,15,0,31,0,126,0, + 252,0,240,0,252,0,126,0,63,0,31,0,15,0,15,0, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,192, + 7,248,3,248,0,248,2,37,37,12,5,247,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,13,35,70,17,2,248,248,0,254,0,255,0,31,0,15, + 0,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,7,128,7,192,3,224,1,248,0,248,1,248,3,224,7, + 192,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,0,31,0,255,0,254,0,248,0,18,4,12, + 18,0,7,31,195,192,63,255,128,127,255,0,240,126,0,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,10,0,0,5,25,25,13,4,249,248,248,248,248, + 0,0,0,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,15,26,52,19,2,252,0,48,0,48,0, + 48,0,32,7,224,31,248,63,252,124,252,120,254,248,254,249, + 128,249,128,249,128,249,0,251,0,251,62,251,62,126,62,126, + 124,63,252,31,248,15,224,12,0,24,0,24,0,24,0,17, + 25,75,20,2,1,7,254,0,15,255,0,31,255,0,31,15, + 128,62,15,128,62,0,0,62,0,0,62,0,0,62,0,0, + 255,240,0,255,240,0,255,240,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,255,128,255,255,128,255,255,128, + 18,19,57,20,1,6,64,0,128,224,1,192,115,227,128,63, + 255,0,30,30,0,28,14,0,24,6,0,48,3,0,48,3, + 0,48,3,0,48,3,0,48,3,0,24,6,0,28,14,0, + 30,30,0,63,255,0,115,243,128,224,1,192,64,0,128,19, + 25,75,21,1,0,248,3,224,248,7,224,124,7,192,124,7, + 192,62,15,128,62,15,128,31,31,0,255,31,224,255,191,224, + 15,190,0,7,252,0,7,252,0,3,248,0,255,255,224,255, + 255,224,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 2,33,33,12,5,249,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,0,0,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,14,31,62,16,1,251,31,240,63, + 248,127,248,124,24,248,0,248,0,124,0,126,0,63,128,31, + 192,31,240,63,248,124,248,248,124,240,60,240,120,240,120,253, + 240,127,224,63,192,31,224,7,240,1,248,0,252,0,124,0, + 124,128,248,225,248,255,240,255,224,63,128,11,4,8,11,0, + 22,241,224,241,224,241,224,241,224,25,25,100,29,2,1,0, + 255,192,0,3,255,224,0,15,0,120,0,30,0,60,0,24, + 63,14,0,56,127,134,0,112,255,199,0,97,227,195,0,225, + 193,227,128,195,193,225,128,195,192,1,128,195,192,1,128,195, + 192,1,128,195,192,1,128,195,193,225,128,227,193,227,128,97, + 227,195,0,113,255,195,0,48,255,135,0,56,62,14,0,28, + 0,28,0,15,0,120,0,7,193,240,0,1,255,224,0,0, + 127,0,0,12,17,34,14,1,8,15,128,63,192,56,224,112, + 224,0,224,15,224,63,224,120,224,112,224,112,224,121,224,63, + 224,30,96,0,0,0,0,255,240,255,240,17,14,42,21,2, + 2,31,15,128,30,31,0,62,31,0,60,62,0,124,62,0, + 124,124,0,248,124,0,248,124,0,124,124,0,124,62,0,60, + 62,0,62,31,0,30,15,0,31,15,128,18,8,24,21,2, + 7,255,255,192,255,255,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,255,25,25,100,29,2,1, + 0,255,192,0,3,255,224,0,15,0,120,0,30,0,60,0, + 25,255,142,0,57,255,198,0,113,255,231,0,97,193,227,0, + 225,192,227,128,193,193,225,128,193,255,129,128,193,255,129,128, + 193,255,193,128,193,193,193,128,193,193,193,128,225,192,227,128, + 97,192,227,0,113,192,227,0,49,192,231,0,56,0,14,0, + 28,0,28,0,15,0,120,0,7,193,240,0,1,255,224,0, + 0,127,0,0,11,3,6,11,0,22,255,224,255,224,255,224, + 7,7,7,11,2,18,56,196,130,130,130,196,120,20,21,63, + 34,7,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,255,255,240,255,255,240,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,240,255, + 255,240,11,13,26,13,1,13,63,128,127,192,241,224,1,224, + 1,224,3,192,7,192,15,128,30,0,124,0,240,0,255,192, + 255,192,11,14,28,13,1,12,127,128,255,128,227,192,3,192, + 7,192,31,128,31,128,3,192,1,224,1,224,225,224,243,192, + 127,128,63,0,7,7,7,8,2,21,62,60,56,120,112,224, + 192,255,16,31,62,19,2,250,15,255,63,255,127,24,255,24, + 255,24,255,24,255,24,255,24,255,24,255,24,127,24,63,24, + 31,24,3,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,5,5,5,10,3,10,248,248,248,248, + 248,9,8,16,9,1,247,48,0,48,0,63,0,7,128,3, + 128,3,128,255,0,254,0,6,14,14,9,1,12,28,124,252, + 220,28,28,28,28,28,28,28,28,28,28,12,17,34,14,1, + 8,31,128,63,192,121,224,112,224,224,112,224,112,224,112,224, + 112,224,112,112,224,121,224,63,192,31,128,0,0,0,0,255, + 240,255,240,16,14,28,21,2,2,240,120,248,124,124,60,124, + 62,62,30,62,31,31,31,31,31,62,31,62,30,124,62,124, + 60,248,124,240,120,25,26,104,27,1,0,28,0,120,0,124, + 0,112,0,252,0,240,0,156,0,224,0,28,1,192,0,28, + 1,192,0,28,3,128,0,28,7,128,0,28,7,0,0,28, + 14,0,0,28,14,0,0,28,28,0,0,28,28,30,0,28, + 56,30,0,0,120,62,0,0,112,126,0,0,224,126,0,0, + 224,238,0,1,193,206,0,1,193,206,0,3,131,142,0,7, + 3,255,128,7,3,255,128,14,0,14,0,14,0,14,0,28, + 0,14,0,25,26,104,27,1,0,28,0,112,0,124,0,224, + 0,252,0,224,0,220,1,192,0,28,3,192,0,28,3,128, + 0,28,7,0,0,28,7,0,0,28,14,0,0,28,14,0, + 0,28,28,0,0,28,56,0,0,28,56,124,0,28,113,255, + 0,0,115,199,128,0,227,199,128,0,192,7,128,1,192,15, + 128,3,128,15,0,3,128,30,0,7,0,60,0,6,0,248, + 0,14,1,240,0,12,3,192,0,28,3,255,0,24,3,255, + 0,25,25,100,27,1,1,127,128,60,0,255,192,56,0,227, + 192,112,0,3,192,112,0,31,128,224,0,31,129,224,0,3, + 193,192,0,1,227,192,0,225,227,128,0,227,231,128,0,127, + 207,0,0,63,14,30,0,0,30,62,0,0,28,62,0,0, + 60,126,0,0,56,110,0,0,120,238,0,0,241,206,0,0, + 241,206,0,1,227,142,0,1,227,255,128,3,195,255,128,3, + 128,14,0,7,128,14,0,15,0,14,0,16,25,50,18,1, + 249,3,224,3,224,3,224,3,224,0,0,0,0,0,0,1, + 192,1,192,1,192,3,192,7,128,15,0,30,0,60,0,124, + 0,248,0,248,0,248,0,248,14,248,31,124,62,63,254,31, + 248,7,224,23,35,105,24,1,0,3,192,0,3,192,0,1, + 224,0,0,224,0,0,112,0,0,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,124,0,0,252,0,0,254,0, + 0,254,0,1,254,0,1,255,0,3,255,0,3,207,0,3, + 207,128,7,207,128,7,135,192,7,135,192,15,135,192,15,3, + 224,31,3,224,31,3,240,31,255,240,63,255,240,63,255,248, + 127,255,248,124,0,248,124,0,252,248,0,124,248,0,126,240, + 0,62,23,35,105,24,1,0,0,15,0,0,15,0,0,30, + 0,0,28,0,0,56,0,0,48,0,0,112,0,0,0,0, + 0,0,0,0,0,0,0,124,0,0,252,0,0,254,0,0, + 254,0,1,254,0,1,255,0,3,255,0,3,207,0,3,207, + 128,7,207,128,7,135,192,7,135,192,15,135,192,15,3,224, + 31,3,224,31,3,240,31,255,240,63,255,240,63,255,248,127, + 255,248,124,0,248,124,0,252,248,0,124,248,0,126,240,0, + 62,23,35,105,24,1,0,0,252,0,0,252,0,0,254,0, + 1,206,0,1,199,0,3,135,0,3,3,128,0,0,0,0, + 0,0,0,0,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 23,34,102,24,1,0,0,1,128,1,255,0,3,255,0,3, + 254,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,124,0,0,252,0,0,254,0,0,254,0,1,254,0, + 1,255,0,3,255,0,3,207,0,3,207,128,7,207,128,7, + 135,192,7,135,192,15,135,192,15,3,224,31,3,224,31,3, + 240,31,255,240,63,255,240,63,255,248,127,255,248,124,0,248, + 124,0,252,248,0,124,248,0,126,240,0,62,23,34,102,25, + 1,0,3,199,128,3,199,128,3,199,128,3,199,128,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0, + 0,124,0,0,254,0,0,254,0,1,255,0,1,255,0,1, + 239,0,3,239,128,3,239,128,3,199,128,7,199,192,7,199, + 192,15,131,224,15,131,224,15,131,224,31,1,240,31,255,240, + 31,255,240,63,255,248,63,255,248,124,0,252,124,0,124,124, + 0,124,248,0,62,248,0,62,23,37,111,24,1,0,0,120, + 0,0,252,0,1,206,0,1,134,0,1,134,0,1,206,0, + 0,252,0,0,120,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,124,0,0,252,0,0,252,0,0,254,0,1,254, + 0,1,255,0,3,255,0,3,207,0,3,207,128,7,207,128, + 7,135,192,7,135,192,15,135,192,15,3,224,31,3,224,31, + 3,224,31,255,240,63,255,240,63,255,248,127,255,248,124,0, + 248,124,0,252,248,0,124,248,0,126,240,0,62,32,25,100, + 34,1,0,0,7,255,254,0,15,255,254,0,15,255,254,0, + 31,240,0,0,31,240,0,0,63,240,0,0,61,240,0,0, + 121,240,0,0,249,240,0,0,241,240,0,1,241,255,254,1, + 225,255,254,3,225,255,254,3,193,255,254,7,193,240,0,7, + 255,240,0,15,255,240,0,15,255,240,0,31,255,240,0,30, + 1,240,0,62,1,240,0,60,1,255,255,124,1,255,255,248, + 1,255,255,248,1,255,255,21,33,99,25,2,249,3,255,0, + 15,255,192,31,255,224,63,255,240,62,3,240,124,1,240,120, + 1,248,120,0,248,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,248, + 120,1,248,124,1,248,124,3,240,63,7,240,31,255,224,31, + 255,192,7,255,128,1,252,0,0,96,0,0,120,0,0,126, + 0,0,15,0,0,7,0,0,7,0,1,254,0,1,252,0, + 17,35,105,21,2,0,30,0,0,15,0,0,7,0,0,7, + 128,0,3,128,0,1,192,0,0,192,0,0,0,0,0,0, + 0,0,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,0,255,255,0,255,255,0,255,255,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,255,255,128,255,255,128,255,255,128,255,255,128,17, + 35,105,21,2,0,0,120,0,0,240,0,0,224,0,1,192, + 0,1,128,0,3,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,0,255,255,0,255,255,0,255,255,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,0,255,255,0,255,255,0,255,255,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,17,35, + 105,21,2,0,7,224,0,7,224,0,15,240,0,14,112,0, + 14,56,0,28,56,0,24,28,0,0,0,0,0,0,0,0, + 0,0,255,255,0,255,255,0,255,255,0,255,255,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 255,255,0,255,255,0,255,255,0,255,255,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,128,255,255,128,255,255,128,255,255,128,17,34,102, + 21,2,0,30,60,0,30,60,0,30,60,0,30,60,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, + 0,255,255,0,255,255,0,255,255,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,255,255,0,255, + 255,0,255,255,0,255,255,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,255,255,128, + 255,255,128,255,255,128,255,255,128,8,35,35,9,255,0,240, + 120,56,60,28,12,6,0,0,0,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,7,35,35,8,2,0,30,28,60,56,112,96,224,0, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,11,35,70,9,255, + 0,31,0,63,0,63,128,59,128,113,192,97,192,192,224,0, + 0,0,0,0,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,11,34,68,11,0,0,241,224,241, + 224,241,224,241,224,0,0,0,0,0,0,0,0,0,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,23,25,75,24,0,0,63,252,0,63,255,128,63,255,192, + 63,255,224,62,7,240,62,1,248,62,0,248,62,0,124,62, + 0,124,62,0,60,62,0,60,255,240,62,255,240,62,255,240, + 62,62,0,60,62,0,60,62,0,124,62,0,124,62,0,248, + 62,1,248,62,7,240,63,255,224,63,255,192,63,255,128,63, + 252,0,21,34,102,25,2,0,0,3,0,1,255,0,3,254, + 0,7,252,0,6,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,254,0,248,255,0,248,255,0,248,255,128,248,255, + 128,248,255,192,248,255,192,248,251,224,248,251,224,248,249,224, + 248,249,240,248,248,240,248,248,248,248,248,120,248,248,124,248, + 248,60,248,248,62,248,248,30,248,248,31,248,248,31,248,248, + 15,248,248,15,248,248,7,248,248,7,248,248,3,248,23,36, + 108,27,2,0,7,192,0,3,192,0,1,224,0,0,224,0, + 0,240,0,0,112,0,0,56,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,255,128,7,255,192,31,255,240,31,255, + 240,63,1,248,126,0,252,124,0,124,120,0,60,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,124,0,124,124,0,124,62,0, + 248,63,131,248,31,255,240,15,255,224,7,255,192,0,254,0, + 23,36,108,27,2,0,0,7,192,0,7,128,0,15,0,0, + 14,0,0,28,0,0,24,0,0,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,255,128,7,255,192,31,255,240, + 31,255,240,63,1,248,126,0,252,124,0,124,120,0,60,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,124,0,124,124,0,124, + 62,0,248,63,131,248,31,255,240,15,255,224,7,255,192,0, + 254,0,23,36,108,27,2,0,0,124,0,0,254,0,0,254, + 0,1,239,0,1,199,0,3,131,128,3,1,128,0,0,0, + 0,0,0,0,0,0,0,0,0,3,255,128,7,255,192,31, + 255,240,31,255,240,63,1,248,126,0,252,124,0,124,120,0, + 60,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,124,0,124,124, + 0,124,62,0,248,63,131,248,31,255,240,15,255,224,7,255, + 192,0,254,0,23,34,102,27,2,0,0,241,128,1,255,128, + 3,255,0,3,30,0,3,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,255,128,7,255,192,31,255,240,31,255, + 240,63,1,248,126,0,252,124,0,124,120,0,60,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,124,0,124,124,0,124,62,0, + 248,63,131,248,31,255,240,15,255,224,7,255,192,0,254,0, + 23,34,102,27,2,0,3,199,128,3,199,128,3,199,128,3, + 199,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,255,128,7,255,192,31,255,240,31,255,240,63,1,248, + 126,0,252,124,0,124,120,0,60,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,124,0,124,124,0,124,62,0,248,63,131,248, + 31,255,240,15,255,224,7,255,192,0,254,0,18,19,57,34, + 8,1,64,0,0,224,0,192,112,1,128,56,3,0,28,6, + 0,14,12,0,6,24,0,3,48,0,1,224,0,0,192,0, + 1,224,0,3,48,0,6,24,0,12,12,0,24,6,0,48, + 3,0,112,1,128,224,1,192,64,0,128,25,28,112,27,1, + 255,0,0,1,0,0,0,3,128,1,255,195,128,3,255,247, + 0,15,255,254,0,15,255,252,0,31,128,252,0,63,0,126, + 0,62,0,254,0,60,1,254,0,124,3,223,0,124,7,159, + 0,124,15,31,0,124,30,31,0,124,60,31,0,124,120,31, + 0,124,240,31,0,125,224,31,0,127,192,31,0,63,128,62, + 0,63,0,62,0,63,0,124,0,31,193,252,0,63,255,248, + 0,127,255,240,0,243,255,224,0,224,127,0,0,64,0,0, + 0,21,36,108,25,2,0,15,0,0,7,128,0,3,192,0, + 3,192,0,1,224,0,0,224,0,0,112,0,0,0,0,0, + 0,0,0,0,0,0,0,0,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,240,248,0,240,120,1, + 240,124,3,240,127,7,224,63,255,192,31,255,128,15,255,0, + 3,252,0,21,36,108,25,2,0,0,15,128,0,15,0,0, + 30,0,0,60,0,0,56,0,0,112,0,0,96,0,0,0, + 0,0,0,0,0,0,0,0,0,0,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,240,248,0,240, + 120,1,240,124,3,240,127,7,224,63,255,192,31,255,128,15, + 255,0,3,252,0,21,36,108,25,2,0,0,248,0,1,248, + 0,1,252,0,3,220,0,7,142,0,7,14,0,14,7,0, + 0,0,0,0,0,0,0,0,0,0,0,0,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,240,248, + 0,240,120,1,240,124,3,240,127,7,224,63,255,192,31,255, + 128,15,255,0,3,252,0,21,34,102,25,2,0,7,143,0, + 7,143,0,7,143,0,7,143,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,240,248,0,240,124,1, + 240,124,3,240,127,7,224,63,255,192,31,255,128,15,255,0, + 3,252,0,21,35,105,22,1,0,0,30,0,0,30,0,0, + 28,0,0,56,0,0,48,0,0,112,0,0,0,0,0,0, + 0,0,0,0,0,0,0,252,1,248,252,1,240,126,3,224, + 126,3,224,63,7,192,31,7,192,31,143,128,15,143,128,15, + 223,0,7,223,0,7,254,0,3,254,0,3,252,0,1,248, + 0,1,248,0,0,240,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,18,25,75,22,2,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,240,0,255,254,0,255,255,0,255,255,128, + 248,15,128,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,255,255,128,255,255,0,255,254,0,255,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,18,25,75,19,1,1,31,240,0,63,252,0,127, + 252,0,248,62,0,248,62,0,248,62,0,248,62,0,248,124, + 0,248,248,0,248,240,0,249,240,0,251,224,0,251,224,0, + 249,248,0,249,252,0,248,127,0,248,63,128,248,15,128,248, + 7,128,248,7,192,251,199,192,251,199,128,249,255,128,249,255, + 0,248,126,0,15,28,56,19,2,0,60,0,30,0,14,0, + 7,0,7,0,3,128,1,128,0,0,0,0,0,0,7,224, + 63,248,127,252,124,62,120,62,0,62,15,254,63,254,127,254, + 124,62,248,62,248,62,248,62,248,62,252,126,127,254,63,222, + 31,30,15,28,56,19,2,0,0,120,0,240,0,240,1,224, + 1,192,1,128,3,0,0,0,0,0,0,0,7,224,63,248, + 127,252,124,62,120,62,0,62,15,254,63,254,127,254,124,62, + 248,62,248,62,248,62,248,62,252,126,127,254,63,222,31,30, + 15,28,56,19,2,0,7,192,7,224,15,224,14,240,28,112, + 24,56,56,24,0,0,0,0,0,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,15,26, + 52,19,2,0,0,24,15,248,31,240,31,224,48,0,0,0, + 0,0,0,0,7,224,63,248,127,252,124,62,120,62,0,62, + 15,254,63,254,127,254,124,62,248,62,248,62,248,62,248,62, + 252,126,127,254,63,222,31,30,15,27,54,19,2,0,60,120, + 60,120,60,120,60,120,0,0,0,0,0,0,0,0,0,0, + 15,224,63,248,127,252,124,62,120,62,0,62,15,254,63,254, + 127,254,124,62,248,62,248,62,248,62,248,62,252,126,127,254, + 63,222,31,30,15,30,60,19,2,0,3,192,7,224,14,112, + 12,48,12,48,14,112,7,224,3,192,0,0,0,0,0,0, + 0,0,7,224,31,248,63,252,124,62,120,62,0,62,15,254, + 63,254,127,254,124,62,248,62,248,62,248,62,248,62,252,126, + 127,254,63,222,31,30,27,18,72,31,2,0,7,224,124,0, + 31,249,255,0,127,253,255,128,124,63,135,192,120,31,3,192, + 0,31,3,224,7,255,255,224,63,255,255,224,127,255,255,224, + 124,31,0,0,248,31,0,0,248,31,0,0,248,31,131,224, + 248,31,131,192,252,59,199,192,127,241,255,192,63,224,255,128, + 15,128,126,0,15,26,52,18,2,248,7,224,31,248,63,252, + 124,124,120,60,248,62,248,62,248,0,248,0,248,0,248,0, + 248,62,248,62,120,60,124,124,63,252,31,248,15,224,3,0, + 3,128,3,224,0,240,0,112,0,112,15,224,15,192,15,28, + 56,19,2,0,62,0,30,0,15,0,7,0,7,128,3,128, + 1,192,0,0,0,0,0,0,7,224,31,248,63,252,124,60, + 120,62,248,30,248,30,255,254,255,254,255,254,248,0,248,0, + 248,30,120,62,124,62,63,252,31,248,7,224,15,28,56,19, + 2,0,0,120,0,112,0,240,0,224,1,192,1,128,3,0, + 0,0,0,0,0,0,7,224,31,248,63,252,124,60,120,62, + 248,30,248,30,255,254,255,254,255,254,248,0,248,0,248,30, + 120,62,124,62,63,252,31,248,7,224,15,28,56,19,2,0, + 7,224,7,224,15,224,14,112,28,112,28,56,56,24,0,0, + 0,0,0,0,7,224,31,248,63,252,124,60,120,62,248,30, + 248,30,255,254,255,254,255,254,248,0,248,0,248,30,120,62, + 124,62,63,252,31,248,7,224,15,27,54,19,2,0,60,120, + 60,120,60,120,60,120,0,0,0,0,0,0,0,0,0,0, + 7,224,31,248,63,252,124,124,120,62,248,62,248,62,255,254, + 255,254,255,254,248,0,248,0,248,62,120,62,124,126,63,252, + 31,248,7,224,8,28,28,9,255,0,240,120,120,60,28,14, + 6,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,7,28,28,8,2,0,30,60,56,120, + 112,224,192,0,0,0,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,10,28,56,9,255,0,31,0, + 63,0,63,128,123,128,115,192,97,192,224,192,0,0,0,0, + 0,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,11,26,52,9,255,0,241,224,241,224, + 241,224,241,224,0,0,0,0,0,0,0,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 18,26,78,21,2,0,0,1,0,15,135,0,3,254,0,1, + 248,0,3,248,0,15,252,0,60,60,0,16,30,0,7,255, + 0,31,255,0,63,255,0,126,31,128,124,15,128,248,15,128, + 248,7,128,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,128,120,15,128,124,15,128,126,31,0,63,255,0,31,252, + 0,3,240,0,16,26,52,20,2,0,0,24,15,248,31,248, + 31,240,48,0,0,0,0,0,0,0,249,248,251,252,255,254, + 252,63,252,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,18,28, + 84,21,2,0,31,0,0,15,0,0,7,128,0,3,128,0, + 3,192,0,1,192,0,0,224,0,0,0,0,0,0,0,0, + 0,0,3,240,0,15,252,0,63,254,0,62,31,0,124,15, + 128,120,15,128,248,7,128,248,7,128,248,7,192,248,7,192, + 248,7,192,248,7,128,120,15,128,124,15,128,62,31,0,63, + 254,0,15,252,0,3,240,0,18,28,84,21,2,0,0,60, + 0,0,56,0,0,120,0,0,112,0,0,224,0,0,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,3,240,0,15, + 252,0,63,254,0,62,31,0,124,15,128,120,15,128,248,7, + 128,248,7,128,248,7,192,248,7,192,248,7,192,248,7,128, + 120,15,128,124,15,128,62,31,0,63,254,0,15,252,0,3, + 240,0,18,28,84,21,2,0,3,224,0,3,240,0,7,240, + 0,7,56,0,14,56,0,14,28,0,28,12,0,0,0,0, + 0,0,0,0,0,0,3,240,0,15,252,0,63,254,0,62, + 31,0,124,15,128,120,15,128,248,7,128,248,7,128,248,7, + 192,248,7,192,248,7,192,248,7,128,120,15,128,124,15,128, + 62,31,0,63,254,0,15,252,0,3,240,0,18,27,81,21, + 2,0,0,4,0,0,12,0,7,252,0,15,248,0,15,240, + 0,24,0,0,0,0,0,0,0,0,0,0,0,3,240,0, + 15,252,0,63,254,0,62,31,0,124,15,128,120,15,128,248, + 7,128,248,7,128,248,7,192,248,7,192,248,7,192,248,7, + 128,120,15,128,124,15,128,62,31,0,63,254,0,15,252,0, + 3,240,0,18,27,81,21,2,0,30,60,0,30,60,0,30, + 60,0,30,60,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,240,0,15,252,0,63,254,0,62,31,0, + 124,15,128,120,15,128,248,7,128,248,7,128,248,7,192,248, + 7,192,248,7,192,248,7,128,120,15,128,124,15,128,62,31, + 0,63,254,0,15,252,0,3,240,0,20,15,45,34,7,3, + 0,112,0,0,248,0,0,248,0,0,112,0,0,0,0,0, + 0,0,0,0,0,255,255,240,255,255,240,0,0,0,0,0, + 0,0,112,0,0,248,0,0,248,0,0,112,0,18,23,69, + 21,2,254,0,1,0,0,1,128,0,3,128,3,247,0,15, + 255,0,63,254,0,62,31,0,124,63,128,120,55,128,248,119, + 128,248,231,128,249,199,192,251,135,192,251,135,192,255,7,128, + 126,15,128,124,15,128,62,31,0,63,254,0,127,252,0,227, + 240,0,224,0,0,192,0,0,16,28,56,20,2,0,62,0, + 30,0,15,0,7,0,3,128,3,128,1,192,0,0,0,0, + 0,0,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,252,63, + 127,255,63,223,31,159,16,28,56,20,2,0,0,120,0,240, + 0,240,0,224,1,192,1,128,3,0,0,0,0,0,0,0, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,252,63,127,255, + 63,223,31,159,16,28,56,20,2,0,7,224,7,224,15,240, + 14,112,28,56,28,56,56,28,0,0,0,0,0,0,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,252,63,127,255,63,223, + 31,159,16,27,54,20,2,0,60,120,60,120,60,120,60,120, + 0,0,0,0,0,0,0,0,0,0,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,252,63,127,255,63,223,31,159,17,35, + 105,19,1,249,0,30,0,0,60,0,0,56,0,0,120,0, + 0,112,0,0,224,0,0,192,0,0,0,0,0,0,0,0, + 0,0,248,15,128,248,15,128,252,15,128,124,31,0,126,31, + 0,62,31,0,62,62,0,63,62,0,31,60,0,31,124,0, + 15,252,0,15,248,0,15,248,0,7,248,0,7,240,0,3, + 240,0,3,240,0,3,224,0,3,224,0,3,192,0,103,192, + 0,255,192,0,255,192,0,127,128,0,62,0,0,17,32,96, + 21,2,249,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,249,240,0,255,252,0,255,254, + 0,254,63,0,252,31,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,254,63,0,255,254,0,255,252,0,251,240,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,17,33,99,19,1,249,30,60,0,30,60,0,30, + 60,0,30,60,0,0,0,0,0,0,0,0,0,0,0,0, + 0,248,15,128,248,15,128,252,15,128,124,31,0,124,31,0, + 126,31,0,62,62,0,63,62,0,31,62,0,31,124,0,31, + 252,0,15,248,0,15,248,0,7,248,0,7,240,0,7,240, + 0,3,240,0,3,224,0,3,224,0,3,224,0,7,192,0, + 7,192,0,7,192,0,15,128,0,15,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=20 h=28 x= 7 y=13 dx=34 dy= 0 ascent=26 len=75 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25n[957] U8G_SECTION(".progmem.u8g_font_fub25n") = { + 0,50,46,254,247,25,0,0,0,0,42,57,0,26,251,25, + 0,14,13,26,22,4,13,28,224,60,240,28,224,15,192,135, + 132,255,252,255,252,231,156,15,192,30,224,28,224,60,240,8, + 64,20,21,63,34,7,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,255,255,240,255,255,240,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,7,9,9,11,2,251,62,60,60,120, + 120,112,240,240,224,9,5,10,11,1,7,255,128,255,128,255, + 128,255,128,255,128,5,5,5,10,3,0,248,248,248,248,248, + 11,28,56,15,2,254,0,224,0,224,1,192,1,192,1,192, + 3,128,3,128,3,128,3,128,7,0,7,0,7,0,14,0, + 14,0,14,0,28,0,28,0,28,0,56,0,56,0,56,0, + 56,0,112,0,112,0,112,0,224,0,224,0,224,0,17,25, + 75,19,1,1,7,224,0,31,252,0,63,254,0,60,30,0, + 120,15,0,120,15,0,120,15,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,120,15,0,120,15,0, + 120,15,0,60,30,0,31,252,0,15,248,0,7,224,0,11, + 25,50,19,3,1,3,224,15,224,31,224,127,224,255,224,251, + 224,243,224,195,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,17,25,75,19,1,1,7,248,0, + 31,254,0,31,255,0,63,255,0,126,31,128,124,15,128,124, + 15,128,0,15,128,0,15,128,0,31,0,0,31,0,0,62, + 0,0,126,0,0,252,0,1,248,0,3,240,0,7,224,0, + 15,192,0,63,0,0,126,0,0,252,0,0,255,255,128,255, + 255,128,255,255,128,255,255,128,16,25,50,19,2,1,31,240, + 63,252,127,254,255,254,248,62,248,31,0,31,0,30,0,126, + 7,252,7,240,7,248,7,252,0,62,0,31,0,31,0,31, + 248,31,248,31,248,31,252,62,127,254,127,252,31,248,15,224, + 18,25,75,19,1,1,0,126,0,0,254,0,0,254,0,1, + 254,0,3,254,0,3,254,0,7,190,0,15,190,0,15,62, + 0,30,62,0,30,62,0,60,62,0,124,62,0,120,62,0, + 240,62,0,255,255,192,255,255,192,255,255,192,255,255,192,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,17,25,75,19,1,1,255,254,0,255,254,0,255,254,0, + 255,254,0,248,0,0,248,0,0,248,0,0,248,0,0,249, + 240,0,255,252,0,255,254,0,252,63,0,248,31,0,248,15, + 0,0,15,128,0,15,128,0,15,128,0,15,0,248,15,0, + 248,31,0,252,63,0,127,254,0,127,252,0,63,248,0,15, + 224,0,17,25,75,19,1,1,3,240,0,15,252,0,31,254, + 0,63,255,0,62,31,0,126,15,128,124,0,0,124,0,0, + 252,0,0,248,248,0,251,254,0,255,254,0,255,31,0,254, + 15,128,252,15,128,252,15,128,252,15,128,252,15,128,124,15, + 128,126,15,128,127,31,0,63,255,0,31,254,0,15,252,0, + 3,240,0,16,25,50,19,2,1,255,255,255,255,255,255,255, + 255,0,15,0,31,0,30,0,62,0,62,0,124,0,124,0, + 248,0,248,0,240,1,240,1,240,3,224,3,224,7,192,7, + 192,15,128,15,128,15,128,31,0,31,0,17,25,75,19,1, + 1,7,240,0,31,252,0,127,255,0,127,255,0,252,31,128, + 248,15,128,248,15,128,120,15,0,124,31,0,63,254,0,15, + 248,0,31,248,0,63,254,0,124,63,0,248,15,0,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,252,31,128, + 127,255,0,127,255,0,31,252,0,7,240,0,17,25,75,19, + 1,1,7,240,0,31,252,0,63,254,0,127,254,0,124,63, + 0,248,31,0,248,31,0,248,31,128,248,31,128,248,31,128, + 248,63,128,124,63,128,127,255,128,63,239,128,15,207,128,0, + 15,128,0,31,0,0,31,0,248,31,0,120,63,0,124,126, + 0,63,254,0,63,252,0,31,248,0,7,224,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=34 h=37 x= 8 y=21 dx=35 dy= 0 ascent=28 len=160 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25r[5936] U8G_SECTION(".progmem.u8g_font_fub25r") = { + 0,50,46,254,247,25,7,111,16,148,32,127,249,28,247,25, + 249,0,0,0,10,0,0,5,25,25,14,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 0,0,248,248,248,248,13,10,20,18,2,15,248,248,248,248, + 248,248,120,248,120,120,120,120,120,120,120,120,120,112,120,112, + 21,25,75,24,2,0,0,224,224,0,225,224,0,225,192,1, + 225,192,1,195,192,1,195,128,31,255,248,31,255,240,63,255, + 240,7,135,0,7,135,0,7,15,0,7,14,0,15,14,0, + 14,14,0,255,255,192,255,255,192,255,255,192,28,60,0,28, + 60,0,60,56,0,56,56,0,56,120,0,120,112,0,112,112, + 0,18,31,93,20,1,252,0,192,0,0,192,0,3,248,0, + 15,252,0,31,254,0,63,255,0,126,223,0,120,207,128,248, + 207,128,248,192,0,252,192,0,126,192,0,127,192,0,127,240, + 0,31,252,0,7,255,0,1,255,128,0,255,128,0,207,128, + 0,199,192,248,199,192,248,199,192,248,207,128,126,223,128,127, + 255,0,63,254,0,15,252,0,3,240,0,0,192,0,0,192, + 0,0,192,0,32,26,104,34,1,0,0,0,3,128,15,192, + 7,0,63,240,7,0,124,248,14,0,120,120,14,0,240,60, + 28,0,240,60,24,0,240,60,56,0,240,60,112,0,240,60, + 112,0,120,120,224,0,120,120,224,0,63,241,199,248,15,195, + 143,252,0,3,159,62,0,7,30,30,0,7,60,15,0,14, + 60,15,0,30,60,15,0,28,60,15,0,56,60,15,0,56, + 60,15,0,112,30,30,0,112,15,60,0,224,15,252,1,224, + 3,240,24,25,75,27,2,1,7,252,0,31,254,0,31,255, + 0,62,31,0,62,31,0,62,31,0,62,31,0,30,62,0, + 31,126,0,15,252,0,7,240,0,15,224,0,63,224,124,63, + 240,120,124,248,120,252,124,120,248,62,120,248,31,248,248,15, + 240,248,7,240,252,3,224,126,15,240,63,255,248,31,255,254, + 7,252,63,5,10,10,14,4,15,248,248,120,120,120,120,120, + 120,120,120,7,30,30,13,3,251,30,30,62,60,60,124,124, + 120,120,248,248,248,248,248,248,248,248,248,248,248,248,120,120, + 124,124,60,60,62,30,30,8,30,30,14,3,251,240,120,120, + 124,60,60,60,62,62,30,30,30,30,31,31,31,31,31,30, + 30,30,62,62,62,60,60,124,120,120,240,14,13,26,22,4, + 13,28,224,60,240,28,224,15,192,135,132,255,252,255,252,231, + 156,15,192,30,224,28,224,60,240,8,64,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,255,255,240,255, + 255,240,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 7,9,9,11,2,251,62,60,60,120,120,112,240,240,224,9, + 5,10,11,1,7,255,128,255,128,255,128,255,128,255,128,5, + 5,5,10,3,0,248,248,248,248,248,11,28,56,15,2,254, + 0,224,0,224,1,192,1,192,1,192,3,128,3,128,3,128, + 3,128,7,0,7,0,7,0,14,0,14,0,14,0,28,0, + 28,0,28,0,56,0,56,0,56,0,56,0,112,0,112,0, + 112,0,224,0,224,0,224,0,17,25,75,19,1,1,7,224, + 0,31,252,0,63,254,0,60,30,0,120,15,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,120,15,0,120,15,0,120,15,0,60,30,0, + 31,252,0,15,248,0,7,224,0,11,25,50,19,3,1,3, + 224,15,224,31,224,127,224,255,224,251,224,243,224,195,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,17,25,75,19,1,1,7,248,0,31,254,0,31,255,0, + 63,255,0,126,31,128,124,15,128,124,15,128,0,15,128,0, + 15,128,0,31,0,0,31,0,0,62,0,0,126,0,0,252, + 0,1,248,0,3,240,0,7,224,0,15,192,0,63,0,0, + 126,0,0,252,0,0,255,255,128,255,255,128,255,255,128,255, + 255,128,16,25,50,19,2,1,31,240,63,252,127,254,255,254, + 248,62,248,31,0,31,0,30,0,126,7,252,7,240,7,248, + 7,252,0,62,0,31,0,31,0,31,248,31,248,31,248,31, + 252,62,127,254,127,252,31,248,15,224,18,25,75,19,1,1, + 0,126,0,0,254,0,0,254,0,1,254,0,3,254,0,3, + 254,0,7,190,0,15,190,0,15,62,0,30,62,0,30,62, + 0,60,62,0,124,62,0,120,62,0,240,62,0,255,255,192, + 255,255,192,255,255,192,255,255,192,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,17,25,75,19,1, + 1,255,254,0,255,254,0,255,254,0,255,254,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,252,63,0,248,31,0,248,15,0,0,15,128,0,15, + 128,0,15,128,0,15,0,248,15,0,248,31,0,252,63,0, + 127,254,0,127,252,0,63,248,0,15,224,0,17,25,75,19, + 1,1,3,240,0,15,252,0,31,254,0,63,255,0,62,31, + 0,126,15,128,124,0,0,124,0,0,252,0,0,248,248,0, + 251,254,0,255,254,0,255,31,0,254,15,128,252,15,128,252, + 15,128,252,15,128,252,15,128,124,15,128,126,15,128,127,31, + 0,63,255,0,31,254,0,15,252,0,3,240,0,16,25,50, + 19,2,1,255,255,255,255,255,255,255,255,0,15,0,31,0, + 30,0,62,0,62,0,124,0,124,0,248,0,248,0,240,1, + 240,1,240,3,224,3,224,7,192,7,192,15,128,15,128,15, + 128,31,0,31,0,17,25,75,19,1,1,7,240,0,31,252, + 0,127,255,0,127,255,0,252,31,128,248,15,128,248,15,128, + 120,15,0,124,31,0,63,254,0,15,248,0,31,248,0,63, + 254,0,124,63,0,248,15,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,252,31,128,127,255,0,127,255,0, + 31,252,0,7,240,0,17,25,75,19,1,1,7,240,0,31, + 252,0,63,254,0,127,254,0,124,63,0,248,31,0,248,31, + 0,248,31,128,248,31,128,248,31,128,248,63,128,124,63,128, + 127,255,128,63,239,128,15,207,128,0,15,128,0,31,0,0, + 31,0,248,31,0,120,63,0,124,126,0,63,254,0,63,252, + 0,31,248,0,7,224,0,5,18,18,11,5,0,248,248,248, + 248,248,0,0,0,0,0,0,0,0,248,248,248,248,248,7, + 22,22,11,2,252,62,62,62,62,62,0,0,0,0,0,0, + 0,0,62,60,124,120,120,112,240,224,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,248,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,248,0,0,63,0,0,7,224,0,0,248,0,0,63,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,16,25,50,19,1,1,31,240,63,248,127,252,248,62,112, + 30,48,31,0,31,0,30,0,62,0,60,0,120,0,240,1, + 224,3,192,3,128,3,128,3,128,3,128,3,128,0,0,0, + 0,7,192,7,192,7,192,7,192,33,32,160,35,1,250,0, + 31,254,0,0,0,127,255,128,0,1,255,255,224,0,3,255, + 255,240,0,7,240,3,248,0,15,192,1,252,0,31,128,0, + 124,0,63,7,159,126,0,62,31,255,63,0,124,63,255,31, + 0,124,127,255,31,0,120,126,63,31,0,248,252,31,15,0, + 248,248,31,15,128,248,248,31,15,128,248,248,31,15,128,248, + 248,31,15,0,248,248,31,15,0,248,248,31,15,0,248,248, + 31,31,0,120,124,63,30,0,124,124,127,190,0,124,63,255, + 252,0,62,31,231,248,0,63,7,195,240,0,31,128,0,0, + 0,15,192,0,0,0,7,248,3,0,0,3,255,255,0,0, + 1,255,255,0,0,0,127,255,0,0,0,7,255,0,0,23, + 25,75,24,1,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 19,25,75,23,2,0,255,248,0,255,254,0,255,255,0,255, + 255,0,248,63,0,248,15,128,248,15,128,248,15,0,248,15, + 0,248,63,0,255,254,0,255,248,0,255,252,0,255,255,0, + 248,15,192,248,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,7,224,255,255,192,255,255,128,255,255,0,255,252, + 0,21,25,75,25,2,1,3,255,0,15,255,192,31,255,224, + 63,255,240,62,3,240,124,1,240,120,1,248,120,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,1,248,120,1,248,124,1,248, + 124,3,240,63,7,240,31,255,224,15,255,192,7,255,0,1, + 252,0,20,25,75,23,2,0,255,224,0,255,252,0,255,254, + 0,255,255,0,248,63,128,248,15,192,248,7,192,248,3,224, + 248,3,224,248,1,224,248,1,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,224,248,3,224,248,3,224,248,7, + 192,248,15,192,248,63,128,255,255,0,255,254,0,255,252,0, + 255,224,0,17,25,75,21,2,0,255,255,0,255,255,0,255, + 255,0,255,255,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,0,255,255,0,255,255,0, + 255,255,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,128,255,255,128,255,255, + 128,255,255,128,16,25,50,19,2,0,255,255,255,255,255,255, + 255,255,248,0,248,0,248,0,248,0,248,0,248,0,255,254, + 255,254,255,254,255,254,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,22,25,75,26, + 2,1,1,255,192,7,255,224,15,255,240,31,255,248,63,0, + 248,62,0,124,124,0,124,124,0,0,248,0,0,248,0,0, + 248,0,0,248,7,252,248,7,252,248,7,252,248,7,252,248, + 0,124,248,0,124,124,0,124,126,0,124,63,0,124,63,192, + 124,31,255,252,15,255,252,3,255,252,0,127,192,20,25,75, + 24,2,0,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,255,255,240,255,255,240,255,255,240,255,255,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,5,25, + 25,9,2,0,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,17,25,75, + 21,2,0,0,15,128,0,15,128,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,127,255,0,127,254,0,63,252,0,15,240,0,19,25, + 75,23,2,0,248,7,192,248,15,128,248,31,128,248,63,0, + 248,126,0,248,124,0,248,248,0,249,248,0,251,240,0,251, + 224,0,255,192,0,255,192,0,255,224,0,255,240,0,251,240, + 0,249,248,0,249,252,0,248,252,0,248,126,0,248,63,0, + 248,63,128,248,31,128,248,15,192,248,15,224,248,7,224,16, + 25,50,19,2,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,255, + 255,255,255,255,255,255,255,27,25,100,31,2,0,255,0,31, + 224,255,0,63,224,255,128,63,224,255,128,63,224,255,128,127, + 224,255,192,127,224,255,192,123,224,251,192,123,224,251,224,251, + 224,251,224,243,224,251,224,243,224,249,241,243,224,249,241,243, + 224,249,241,227,224,248,243,227,224,248,251,227,224,248,251,195, + 224,248,127,195,224,248,127,195,224,248,127,131,224,248,127,131, + 224,248,63,131,224,248,63,131,224,248,63,3,224,248,31,3, + 224,21,25,75,25,2,0,254,0,248,255,0,248,255,0,248, + 255,128,248,255,128,248,255,192,248,255,192,248,251,224,248,251, + 224,248,249,224,248,249,240,248,248,240,248,248,248,248,248,120, + 248,248,124,248,248,60,248,248,62,248,248,30,248,248,31,248, + 248,31,248,248,15,248,248,15,248,248,7,248,248,7,248,248, + 3,248,23,25,75,27,2,1,3,255,128,7,255,192,31,255, + 240,31,255,240,63,1,248,126,0,252,124,0,124,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,62,0,248,63,131,248,31,255,240,15,255,224,7,255,192, + 0,254,0,18,25,75,21,2,0,255,240,0,255,252,0,255, + 255,0,255,255,128,248,31,128,248,15,128,248,7,192,248,7, + 192,248,7,192,248,15,128,248,31,128,255,255,128,255,255,0, + 255,252,0,255,240,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,26,25,100,29,2,1,3,255,128,0,7,255, + 192,0,31,255,224,0,31,255,240,0,63,1,248,0,126,0, + 252,0,124,0,124,0,120,0,60,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,120,0,60,0,124,0, + 124,0,124,0,124,0,62,0,248,0,63,131,240,0,31,255, + 255,192,15,255,255,192,3,255,255,192,0,255,255,192,19,25, + 75,22,2,0,255,252,0,255,255,0,255,255,128,255,255,192, + 248,15,192,248,7,224,248,3,224,248,3,224,248,3,192,248, + 7,192,248,31,128,255,255,0,255,252,0,255,255,0,255,255, + 128,248,15,128,248,7,192,248,7,192,248,7,192,248,3,192, + 248,3,192,248,3,192,248,3,224,248,3,224,248,3,224,20, + 25,75,23,2,1,7,254,0,15,255,0,31,255,128,63,255, + 192,126,7,192,124,3,192,124,3,224,124,0,0,124,0,0, + 127,0,0,63,240,0,31,254,0,7,255,128,1,255,192,0, + 31,224,0,3,224,0,1,240,248,1,240,248,1,240,248,3, + 224,126,7,224,127,255,192,63,255,128,15,255,0,3,248,0, + 20,25,75,22,1,0,255,255,240,255,255,240,255,255,240,255, + 255,240,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,21,25,75,25,2,0,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,240,248,0,240,120,1,240, + 124,3,240,127,7,224,63,255,192,31,255,128,15,255,0,3, + 252,0,24,25,75,25,1,0,248,0,63,248,0,62,252,0, + 62,124,0,124,124,0,124,126,0,124,62,0,248,63,0,248, + 63,1,240,31,1,240,31,129,240,31,131,224,15,131,224,15, + 195,224,7,199,192,7,199,192,7,231,128,3,239,128,3,255, + 128,3,255,0,1,255,0,1,254,0,1,254,0,0,254,0, + 0,252,0,34,25,125,34,0,0,252,3,240,15,192,252,3, + 240,15,128,124,3,240,15,128,126,7,248,15,128,126,7,248, + 15,128,126,7,248,31,0,62,7,248,31,0,62,15,252,31, + 0,63,15,60,30,0,63,15,60,62,0,31,15,60,62,0, + 31,31,62,62,0,31,30,30,60,0,31,158,30,60,0,15, + 158,30,124,0,15,190,31,124,0,15,188,15,120,0,7,252, + 15,120,0,7,252,15,120,0,7,252,15,248,0,7,248,7, + 240,0,3,248,7,240,0,3,248,7,240,0,3,248,7,240, + 0,3,240,3,224,0,22,25,75,24,1,0,252,0,248,126, + 1,248,62,1,240,63,3,224,31,135,192,15,135,192,15,207, + 128,7,239,0,3,255,0,3,254,0,1,252,0,0,252,0, + 0,252,0,1,254,0,3,254,0,3,255,0,7,223,128,15, + 143,128,15,15,192,31,7,224,62,3,224,62,3,240,124,1, + 248,248,1,248,248,0,252,21,25,75,22,1,0,252,1,248, + 252,1,240,126,3,224,126,3,224,63,7,192,31,7,192,31, + 143,128,15,143,128,15,223,0,7,223,0,7,254,0,3,254, + 0,3,252,0,1,248,0,1,248,0,0,240,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,18,25,75,22,2,0,127,255, + 192,127,255,192,127,255,192,127,255,192,0,15,192,0,31,128, + 0,63,0,0,63,0,0,126,0,0,252,0,1,252,0,1, + 248,0,3,240,0,7,224,0,7,224,0,15,192,0,31,128, + 0,63,128,0,63,0,0,126,0,0,252,0,0,255,255,192, + 255,255,192,255,255,192,255,255,192,8,32,32,13,3,249,255, + 255,255,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,255,255,255,11, + 28,56,15,2,254,224,0,224,0,240,0,240,0,240,0,112, + 0,120,0,120,0,56,0,60,0,60,0,28,0,30,0,30, + 0,30,0,15,0,15,0,15,0,7,0,7,128,7,128,3, + 128,3,192,3,192,1,192,1,224,1,224,1,224,8,32,32, + 13,3,249,255,255,255,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 255,255,255,18,21,63,34,8,0,0,192,0,0,224,0,1, + 224,0,1,224,0,1,48,0,3,48,0,2,24,0,6,24, + 0,6,24,0,4,12,0,12,12,0,12,14,0,24,6,0, + 24,6,0,24,7,0,48,3,0,48,3,0,112,1,128,96, + 1,128,96,1,192,192,0,192,17,3,9,17,0,251,255,255, + 128,255,255,128,255,255,128,7,7,7,9,255,21,248,120,60, + 60,28,14,6,15,18,36,19,2,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,17,25, + 75,20,2,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,254,63,0,252,31,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 252,31,0,254,63,0,255,254,0,251,252,0,249,240,0,15, + 18,36,18,2,0,7,224,31,248,63,252,124,124,120,60,248, + 62,248,0,248,0,248,0,248,0,248,0,248,62,248,62,120, + 60,124,124,63,252,31,248,15,224,17,25,75,21,2,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,7,207,128,31,255,128,63,255,128,126,63,128, + 124,31,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,128,126,63, + 128,63,255,128,31,239,128,7,207,128,15,18,36,19,2,0, + 7,224,31,248,63,252,124,60,120,62,248,30,248,30,255,254, + 255,254,255,254,248,0,248,0,248,30,120,62,124,62,63,252, + 31,248,7,224,12,25,50,13,1,0,7,240,15,240,31,240, + 31,0,31,0,31,0,31,0,255,224,255,224,255,224,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,17,25,75,21, + 2,249,7,207,128,31,255,128,63,255,128,126,63,128,124,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,31,128,126,63,128,63, + 255,128,31,239,128,7,207,128,0,15,128,0,15,128,124,15, + 128,124,31,0,63,254,0,31,252,0,7,240,0,16,25,50, + 20,2,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,249,248,255,252,255,254,254,63,252,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,5,25,25,9,2,0,248,248,248,248,248, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,6,32,32,12,4,249,124,124,124,124,124,0, + 0,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,252,252,248,240,16,25,50,19,2,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,62, + 248,124,248,248,249,248,249,240,251,224,255,192,255,192,255,192, + 255,192,251,224,251,240,249,240,248,248,248,252,248,124,248,126, + 248,63,5,25,25,9,2,0,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,27,18,72,31,2,0,249,248,62,0,251,252,127,128,255, + 254,255,192,254,63,199,192,252,63,135,192,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,16, + 18,36,20,2,0,249,248,251,252,255,254,252,63,252,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,18,18,54,21,2,0,3, + 240,0,15,252,0,63,254,0,62,31,0,124,15,128,120,15, + 128,248,7,128,248,7,128,248,7,192,248,7,192,248,7,192, + 248,7,128,120,15,128,124,15,128,62,31,0,63,254,0,15, + 252,0,3,240,0,17,25,75,20,2,249,249,240,0,251,252, + 0,255,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,252,31,0,254,63,0,255,254,0,255,252,0,249,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,21,2,249,7,207,128,31, + 239,128,63,255,128,126,63,128,124,31,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,128,126,63,128,63,255,128,31,255,128,7, + 207,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,11,18,36,13,2,0,249,224,251, + 224,255,224,255,224,255,0,252,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,15,18,36,18,2,0,15,224,63,248,127,248,124,124,248, + 124,248,124,126,0,127,192,63,248,15,252,1,252,0,126,248, + 62,248,62,248,124,127,252,63,248,15,192,13,23,46,14,1, + 0,1,0,7,0,31,0,31,0,31,0,255,240,255,240,255, + 240,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,15,128,15,248,7,248,3,240,16, + 18,36,20,2,0,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,252,63,127,255,63,223,31,159,18,18,54,19,0,0,248, + 7,192,124,7,192,124,15,128,124,15,128,62,15,128,62,31, + 0,62,31,0,31,30,0,31,30,0,15,62,0,15,188,0, + 15,188,0,7,252,0,7,248,0,7,248,0,3,240,0,3, + 240,0,1,240,0,29,18,72,29,0,0,248,15,128,248,124, + 31,192,240,124,31,193,240,124,31,193,240,124,31,225,224,62, + 63,225,224,62,61,227,224,62,61,227,224,31,125,243,192,31, + 120,247,192,31,120,247,192,15,248,255,128,15,248,127,128,15, + 240,127,128,15,240,127,128,7,240,127,0,7,224,63,0,7, + 224,63,0,17,18,54,19,1,0,252,31,0,124,31,0,126, + 62,0,63,60,0,31,124,0,15,248,0,15,248,0,7,240, + 0,7,224,0,7,240,0,15,248,0,31,248,0,30,252,0, + 62,126,0,60,62,0,124,63,0,248,31,0,248,15,128,17, + 25,75,18,1,249,248,15,128,248,15,128,248,15,0,124,31, + 0,124,31,0,124,30,0,62,62,0,62,60,0,30,60,0, + 31,124,0,31,120,0,15,248,0,15,248,0,15,240,0,7, + 240,0,7,240,0,3,224,0,3,224,0,3,224,0,3,192, + 0,7,192,0,7,128,0,7,128,0,15,128,0,15,128,0, + 14,18,36,18,2,0,255,252,255,252,255,252,0,124,0,248, + 1,248,3,240,7,224,7,192,15,128,31,128,63,0,126,0, + 124,0,248,0,255,252,255,252,255,252,13,35,70,18,3,248, + 0,248,3,248,7,248,15,192,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,0,15,0,15,0,31,0,126,0, + 252,0,240,0,252,0,126,0,63,0,31,0,15,0,15,0, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,192, + 7,248,3,248,0,248,2,37,37,12,5,247,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,13,35,70,17,2,248,248,0,254,0,255,0,31,0,15, + 0,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,7,128,7,192,3,224,1,248,0,248,1,248,3,224,7, + 192,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,0,31,0,255,0,254,0,248,0,18,4,12, + 18,0,7,31,195,192,63,255,128,127,255,0,240,126,0,255 + }; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=38 h=43 x=10 y=26 dx=42 dy= 0 ascent=43 len=195 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =43 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30[16953] U8G_SECTION(".progmem.u8g_font_fub30") = { + 0,59,54,253,245,30,9,163,21,182,32,255,249,43,245,31, + 248,0,0,0,12,0,0,5,30,30,16,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,0,0,248,248,248,248,248,15,12,24,21,3, + 18,252,126,252,126,252,126,252,126,248,126,248,126,248,60,248, + 60,120,60,120,60,120,60,120,60,25,30,120,29,2,0,0, + 60,30,0,0,60,30,0,0,120,60,0,0,120,60,0,0, + 120,60,0,0,120,120,0,0,240,120,0,0,240,120,0,15, + 255,255,128,31,255,255,0,31,255,255,0,31,255,255,0,1, + 224,224,0,3,193,224,0,3,193,224,0,3,193,224,0,7, + 131,192,0,7,131,192,0,127,255,252,0,255,255,248,0,255, + 255,248,0,255,255,248,0,15,7,128,0,30,15,0,0,30, + 15,0,0,30,15,0,0,62,30,0,0,60,30,0,0,60, + 30,0,0,60,30,0,0,21,37,111,23,1,252,0,96,0, + 0,96,0,0,96,0,3,254,0,15,255,128,31,255,192,63, + 255,224,127,111,224,126,99,240,124,99,240,124,97,240,124,96, + 0,124,96,0,126,96,0,127,224,0,127,240,0,63,254,0, + 31,255,128,7,255,224,0,255,240,0,127,240,0,103,248,0, + 97,248,248,97,248,248,96,248,252,97,248,252,97,248,126,99, + 240,127,255,240,63,255,224,31,255,192,15,255,128,3,254,0, + 0,96,0,0,96,0,0,96,0,0,96,0,37,30,150,41, + 2,0,7,224,0,120,0,31,248,0,240,0,63,252,0,240, + 0,124,62,1,224,0,120,30,3,224,0,240,15,3,192,0, + 240,15,7,192,0,240,15,7,128,0,240,15,15,0,0,240, + 15,15,0,0,240,15,30,0,0,240,15,30,0,0,120,30, + 60,0,0,124,62,124,0,0,63,252,120,63,0,31,248,248, + 255,192,7,224,241,255,224,0,1,227,225,240,0,1,227,192, + 240,0,3,199,128,120,0,3,199,128,120,0,7,135,128,120, + 0,7,135,128,120,0,15,7,128,120,0,31,7,128,120,0, + 30,3,192,240,0,62,3,192,240,0,60,1,243,224,0,120, + 1,255,192,0,120,0,127,128,28,30,120,31,2,1,3,255, + 0,0,15,255,128,0,31,255,192,0,63,143,224,0,63,7, + 224,0,62,3,224,0,63,7,224,0,63,7,224,0,31,15, + 192,0,31,159,192,0,15,255,128,0,15,255,0,0,7,252, + 0,0,15,248,0,0,31,248,15,128,63,252,15,128,63,126, + 15,128,126,127,15,128,126,63,143,128,252,31,207,128,252,15, + 255,0,248,7,255,0,248,3,255,0,252,1,254,0,252,0, + 254,0,126,0,254,0,127,131,255,0,63,255,255,128,31,255, + 255,224,7,255,135,240,6,12,12,16,5,18,252,252,252,124, + 124,124,124,124,120,120,120,120,9,36,72,16,4,251,15,128, + 31,0,31,0,31,0,62,0,62,0,62,0,126,0,124,0, + 124,0,124,0,124,0,252,0,252,0,252,0,252,0,248,0, + 248,0,248,0,248,0,248,0,252,0,252,0,252,0,124,0, + 124,0,124,0,124,0,126,0,62,0,62,0,62,0,31,0, + 31,0,31,0,15,128,8,36,36,16,4,251,240,248,120,124, + 124,124,62,62,62,63,63,31,31,31,31,31,31,31,31,31, + 31,31,31,31,63,63,63,62,62,62,124,124,124,248,248,240, + 16,16,32,26,5,14,4,32,28,56,30,120,30,120,15,240, + 7,224,227,199,255,255,255,255,243,207,7,224,15,240,30,120, + 30,120,28,56,4,32,24,25,75,40,8,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,255,255,255, + 255,255,255,255,255,255,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,8,10,10,12,2,251,31,31,62, + 62,60,124,120,120,240,240,10,5,10,14,2,8,255,192,255, + 192,255,192,255,192,255,192,5,5,5,12,4,0,248,248,248, + 248,248,13,32,64,17,2,254,0,120,0,120,0,120,0,240, + 0,240,0,240,1,224,1,224,1,224,3,192,3,192,3,192, + 3,192,7,128,7,128,7,128,15,0,15,0,15,0,14,0, + 30,0,30,0,30,0,60,0,60,0,60,0,120,0,120,0, + 120,0,120,0,240,0,240,0,20,30,90,23,1,1,3,252, + 0,15,255,0,31,255,128,63,15,128,62,7,192,124,3,192, + 124,3,224,124,3,224,124,3,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,248,1,240,248,1,240,248,1,240,248,1,240,124,3,224, + 124,3,224,124,3,224,124,3,224,62,7,192,63,15,128,31, + 255,128,15,255,0,3,252,0,12,30,60,23,4,0,1,240, + 3,240,15,240,63,240,255,240,255,240,253,240,249,240,225,240, + 129,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,20,30,90,23,1,1, + 3,255,0,7,255,128,31,255,192,31,255,224,63,255,240,63, + 3,240,126,1,240,126,1,240,124,1,240,0,1,240,0,3, + 240,0,3,240,0,7,224,0,15,224,0,15,192,0,31,128, + 0,63,0,0,254,0,1,252,0,3,248,0,7,240,0,15, + 224,0,63,128,0,127,0,0,252,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,19,30,90,23,2,1, + 7,252,0,31,255,0,63,255,128,127,255,128,127,255,192,252, + 15,192,252,7,192,248,7,192,0,7,192,0,7,192,0,15, + 192,0,63,192,3,255,128,3,254,0,3,252,0,3,255,0, + 3,255,128,0,31,192,0,7,224,0,7,224,0,7,224,0, + 3,224,248,7,224,252,7,224,252,7,192,126,15,192,127,255, + 128,63,255,128,31,255,0,15,252,0,21,30,90,23,1,0, + 0,63,128,0,63,128,0,127,128,0,255,128,0,255,128,1, + 255,128,1,255,128,3,239,128,3,207,128,7,207,128,15,143, + 128,15,143,128,31,15,128,31,15,128,62,15,128,62,15,128, + 124,15,128,252,15,128,248,15,128,255,255,248,255,255,248,255, + 255,248,255,255,248,255,255,248,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,19,30,90,23,2,0, + 127,255,192,127,255,192,127,255,192,127,255,192,127,255,192,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,252,0,125,255,0,127,255,128,127,255,192,127,15,224, + 126,7,224,124,3,224,0,3,224,0,3,224,0,3,224,0, + 3,224,0,3,224,248,7,224,252,7,224,252,15,192,127,255, + 128,127,255,128,63,254,0,15,252,0,20,30,90,23,1,1, + 3,254,0,7,255,0,15,255,128,31,255,192,63,255,192,63, + 7,224,126,3,224,126,3,224,124,0,0,124,0,0,252,0, + 0,248,0,0,249,255,0,251,255,128,255,255,192,255,15,224, + 254,7,224,254,3,240,252,3,240,252,3,240,252,1,240,252, + 1,240,124,3,240,124,3,240,126,3,224,63,7,224,63,255, + 192,31,255,128,15,255,0,3,254,0,19,30,90,23,2,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,31, + 128,0,31,128,0,63,0,0,63,0,0,63,0,0,126,0, + 0,126,0,0,252,0,0,252,0,1,252,0,1,248,0,1, + 248,0,3,240,0,3,240,0,7,240,0,7,224,0,15,224, + 0,15,192,0,15,192,0,31,192,0,20,30,90,23,1,1, + 7,254,0,31,255,128,63,255,192,127,255,224,127,255,224,126, + 7,224,124,3,224,124,3,224,124,3,224,124,3,224,126,7, + 224,127,15,192,63,255,128,15,255,0,7,252,0,31,255,0, + 63,255,192,127,15,224,124,7,224,252,3,240,252,3,240,248, + 1,240,248,3,240,252,3,240,252,3,240,254,7,240,127,255, + 224,63,255,192,31,255,128,15,255,0,20,30,90,23,1,1, + 3,252,0,15,255,0,31,255,128,63,255,192,127,255,192,126, + 7,224,252,7,224,252,3,224,252,3,240,248,3,240,248,3, + 240,252,3,240,252,7,240,124,7,240,127,15,240,63,255,240, + 63,253,240,31,249,240,7,225,240,0,3,240,0,3,224,0, + 3,224,0,3,224,124,7,224,124,7,192,126,15,192,63,255, + 128,31,255,0,15,254,0,7,252,0,5,20,20,12,5,0, + 248,248,248,248,248,0,0,0,0,0,0,0,0,0,0,248, + 248,248,248,248,9,25,50,13,2,251,31,0,31,0,31,0, + 31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,31,128,31,0,63,0,62,0, + 62,0,124,0,124,0,120,0,248,0,240,0,24,21,63,40, + 8,2,0,0,1,0,0,15,0,0,63,0,1,252,0,7, + 224,0,63,0,0,252,0,7,224,0,63,0,0,252,0,0, + 224,0,0,248,0,0,126,0,0,15,192,0,3,240,0,0, + 126,0,0,31,192,0,3,240,0,0,126,0,0,31,0,0, + 3,24,10,30,40,8,7,255,255,255,255,255,255,255,255,255, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,255,255,255,255,24,21,63,40,8,2,128,0,0,240,0, + 0,252,0,0,63,128,0,7,224,0,0,252,0,0,63,0, + 0,7,224,0,0,252,0,0,63,0,0,7,0,0,31,0, + 0,126,0,3,240,0,15,192,0,126,0,3,248,0,15,192, + 0,126,0,0,248,0,0,192,0,0,18,30,90,22,1,1, + 7,252,0,31,254,0,63,255,128,127,255,128,252,15,192,120, + 7,192,56,7,192,0,7,192,0,7,192,0,15,192,0,15, + 128,0,31,128,0,63,0,0,126,0,0,248,0,1,240,0, + 3,224,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,0,0,0,0,0,0,0,0,0,3,224,0,3,224, + 0,3,224,0,3,224,0,3,224,0,38,39,195,42,2,248, + 0,3,255,224,0,0,31,255,248,0,0,127,255,254,0,0, + 255,255,255,0,3,255,255,255,128,7,254,0,127,192,7,248, + 0,31,224,15,224,0,15,240,31,192,0,7,240,63,128,0, + 3,248,63,1,241,241,248,63,7,253,241,252,126,15,255,240, + 252,126,31,255,240,252,124,31,135,240,252,252,63,3,240,124, + 252,63,3,240,124,252,62,1,240,124,252,62,1,240,124,248, + 62,1,240,124,248,62,1,240,124,248,62,1,240,124,252,62, + 1,240,124,252,63,3,240,252,124,63,3,248,248,124,31,135, + 249,248,126,31,255,255,240,63,15,254,255,224,63,7,252,127, + 192,31,129,248,31,0,31,192,0,0,0,15,224,0,0,0, + 7,248,0,0,0,3,254,0,56,0,1,255,255,248,0,0, + 255,255,248,0,0,63,255,248,0,0,15,255,248,0,0,1, + 255,224,0,27,30,120,28,1,0,0,63,0,0,0,63,128, + 0,0,127,128,0,0,127,128,0,0,127,192,0,0,255,192, + 0,0,255,224,0,0,255,224,0,1,251,224,0,1,243,240, + 0,3,243,240,0,3,241,240,0,3,225,248,0,7,225,248, + 0,7,224,248,0,7,192,252,0,15,192,252,0,15,192,126, + 0,15,128,126,0,31,255,254,0,31,255,255,0,63,255,255, + 0,63,255,255,0,63,255,255,128,126,0,31,128,126,0,31, + 128,126,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 224,22,30,90,27,3,0,255,254,0,255,255,128,255,255,224, + 255,255,224,255,255,240,248,7,240,248,3,240,248,1,240,248, + 1,240,248,1,240,248,3,240,248,7,224,255,255,192,255,255, + 128,255,254,0,255,255,192,255,255,240,248,3,248,248,1,248, + 248,0,252,248,0,252,248,0,252,248,0,252,248,1,252,248, + 3,252,255,255,248,255,255,240,255,255,224,255,255,192,255,255, + 0,24,30,90,29,2,1,1,255,192,3,255,240,15,255,248, + 15,255,252,31,255,254,63,128,254,62,0,127,126,0,63,124, + 0,63,124,0,63,252,0,0,252,0,0,252,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,252,0,0, + 252,0,0,124,0,63,124,0,63,126,0,127,62,0,127,63, + 128,254,31,255,254,31,255,252,15,255,248,7,255,224,1,255, + 192,24,30,90,29,3,0,255,248,0,255,255,0,255,255,192, + 255,255,224,255,255,240,248,15,248,248,1,252,248,0,252,248, + 0,126,248,0,126,248,0,62,248,0,63,248,0,63,248,0, + 63,248,0,31,248,0,31,248,0,63,248,0,63,248,0,63, + 248,0,63,248,0,126,248,0,126,248,0,252,248,1,252,248, + 15,248,255,255,240,255,255,224,255,255,192,255,255,0,255,248, + 0,20,30,90,25,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,240,255,255,240,255,255,240,255,255,240,255,255, + 240,19,30,90,24,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,26,30,120,30,2,1,0,127,240,0,1,255,252,0,3, + 255,254,0,15,255,255,0,15,255,255,128,31,192,63,128,63, + 128,15,192,63,0,15,192,126,0,15,192,126,0,7,192,124, + 0,0,0,252,0,0,0,252,0,0,0,252,0,0,0,248, + 1,255,192,248,1,255,192,248,1,255,192,252,1,255,192,252, + 1,255,192,252,0,7,192,124,0,7,192,126,0,7,192,127, + 0,7,192,63,128,7,192,63,224,7,192,31,255,255,192,15, + 255,255,192,7,255,255,192,1,255,255,192,0,127,254,0,23, + 30,90,29,3,0,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,255,255,254,255,255,254,255, + 255,254,255,255,254,255,255,254,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,5, + 30,30,11,3,0,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,20,30,90,25,2,0,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,248,1,240,248,3,240,252,3,240,252,3, + 240,254,7,224,127,255,224,127,255,192,63,255,128,31,255,0, + 15,254,0,23,30,90,27,3,0,248,1,248,248,3,248,248, + 7,240,248,15,224,248,15,192,248,31,192,248,63,128,248,127, + 0,248,126,0,248,254,0,249,252,0,251,248,0,251,240,0, + 255,240,0,255,240,0,251,248,0,249,252,0,249,254,0,248, + 254,0,248,127,0,248,127,128,248,63,128,248,31,192,248,31, + 224,248,15,224,248,7,240,248,7,248,248,3,248,248,1,252, + 248,0,254,19,30,90,23,3,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,224,255,255,224,255,255,224,255,255,224, + 255,255,224,31,30,120,37,3,0,255,192,3,254,255,192,3, + 254,255,192,7,254,255,192,7,254,255,224,7,254,251,224,15, + 254,251,224,15,254,251,240,15,190,251,240,15,190,249,240,31, + 190,249,240,31,62,249,248,31,62,248,248,63,62,248,248,63, + 62,248,252,62,62,248,124,126,62,248,124,126,62,248,126,124, + 62,248,126,124,62,248,62,252,62,248,62,248,62,248,63,248, + 62,248,31,248,62,248,31,248,62,248,31,240,62,248,31,240, + 62,248,15,240,62,248,15,224,62,248,15,224,62,248,7,224, + 62,25,30,120,31,3,0,255,128,15,128,255,128,15,128,255, + 128,15,128,255,192,15,128,255,192,15,128,255,224,15,128,251, + 224,15,128,251,240,15,128,249,240,15,128,249,248,15,128,248, + 248,15,128,248,252,15,128,248,252,15,128,248,126,15,128,248, + 126,15,128,248,63,15,128,248,63,15,128,248,31,143,128,248, + 31,143,128,248,15,143,128,248,15,207,128,248,7,207,128,248, + 7,239,128,248,3,239,128,248,3,255,128,248,1,255,128,248, + 1,255,128,248,0,255,128,248,0,255,128,248,0,127,128,27, + 30,120,31,2,1,0,255,224,0,3,255,248,0,7,255,252, + 0,15,255,254,0,31,255,255,0,63,192,127,128,63,0,31, + 128,127,0,31,192,126,0,15,192,126,0,15,192,252,0,15, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,15,224,126,0,15,192,126,0,15,192,127,0,31, + 192,63,0,31,128,63,192,127,128,31,255,255,0,15,255,254, + 0,7,255,252,0,3,255,248,0,0,255,224,0,21,30,90, + 26,3,0,255,252,0,255,255,128,255,255,192,255,255,224,255, + 255,240,248,7,240,248,3,248,248,1,248,248,1,248,248,0, + 248,248,1,248,248,1,248,248,1,248,248,7,240,255,255,240, + 255,255,224,255,255,192,255,255,128,255,252,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,30,30,120, + 33,2,1,0,255,224,0,3,255,248,0,7,255,252,0,15, + 255,254,0,31,255,255,0,63,192,127,128,63,0,31,128,127, + 0,31,192,126,0,15,192,126,0,15,192,252,0,15,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,192,126,0,15,192,126,0,15,192,127,0,31,128,63, + 0,31,128,63,192,127,0,31,255,254,252,15,255,255,252,7, + 255,255,252,3,255,255,252,0,255,255,252,23,30,90,27,3, + 0,255,255,0,255,255,224,255,255,240,255,255,248,255,255,248, + 248,3,252,248,1,252,248,0,252,248,0,124,248,0,124,248, + 0,252,248,1,248,248,7,240,255,255,224,255,255,192,255,255, + 128,255,255,224,255,255,240,248,3,248,248,1,248,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,252,248,0,252,248, + 0,252,248,0,252,248,0,124,248,0,126,23,30,90,27,2, + 1,1,255,128,7,255,224,15,255,240,31,255,240,63,255,248, + 63,1,248,126,0,252,126,0,252,124,0,124,126,0,0,126, + 0,0,63,128,0,63,240,0,31,254,0,15,255,192,3,255, + 240,0,127,248,0,7,252,0,1,252,0,0,126,248,0,126, + 248,0,62,252,0,126,252,0,126,126,0,252,127,255,252,63, + 255,248,31,255,240,15,255,224,3,255,128,23,30,90,25,1, + 0,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,24,30,90,30,3, + 0,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,252,0,31,252,0,31, + 252,0,63,124,0,63,126,0,126,127,0,254,63,255,252,31, + 255,252,31,255,248,7,255,224,1,255,192,28,30,120,30,1, + 0,252,0,3,240,252,0,7,240,254,0,7,224,126,0,7, + 224,126,0,15,192,127,0,15,192,63,0,31,192,63,0,31, + 128,63,128,31,128,31,128,63,128,31,128,63,0,31,192,63, + 0,15,192,127,0,15,192,126,0,7,224,126,0,7,224,252, + 0,7,224,252,0,3,240,252,0,3,241,248,0,3,249,248, + 0,1,249,248,0,1,251,240,0,1,255,240,0,0,255,240, + 0,0,255,224,0,0,255,224,0,0,127,192,0,0,127,192, + 0,0,127,192,0,0,63,128,0,38,30,150,40,1,0,252, + 0,252,0,252,252,1,254,0,252,252,1,254,0,252,252,1, + 254,1,252,254,1,254,1,252,126,3,255,1,248,126,3,255, + 1,248,126,3,255,1,248,126,3,255,1,248,63,7,255,131, + 240,63,7,207,131,240,63,7,207,131,240,63,7,207,131,240, + 31,15,207,195,224,31,143,135,199,224,31,143,135,199,224,31, + 143,135,199,224,15,159,135,231,192,15,159,3,231,192,15,223, + 3,239,192,15,223,3,239,192,7,255,3,255,128,7,254,1, + 255,128,7,254,1,255,128,7,254,1,255,128,3,254,1,255, + 0,3,252,0,255,0,3,252,0,255,0,3,252,0,255,0, + 3,252,0,255,0,26,30,120,28,1,0,126,0,31,128,127, + 0,63,128,63,128,63,0,63,128,126,0,31,192,126,0,15, + 192,252,0,15,225,248,0,7,241,248,0,3,243,240,0,3, + 251,224,0,1,255,224,0,0,255,192,0,0,255,128,0,0, + 127,128,0,0,127,0,0,0,127,128,0,0,255,128,0,1, + 255,192,0,1,255,224,0,3,247,224,0,3,227,240,0,7, + 227,248,0,15,193,248,0,15,129,252,0,31,128,254,0,63, + 0,126,0,63,0,127,0,126,0,63,128,252,0,31,128,252, + 0,31,192,24,30,90,25,1,0,252,0,127,254,0,126,126, + 0,254,127,0,252,63,1,252,63,1,248,31,131,248,31,131, + 240,15,195,240,15,199,224,7,231,224,7,239,192,3,255,192, + 3,255,128,1,255,128,1,255,0,0,255,0,0,254,0,0, + 126,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,22,30,90,26,2,0,127,255,252,127,255,252,127, + 255,252,127,255,252,127,255,252,0,1,252,0,3,248,0,7, + 240,0,15,240,0,31,224,0,31,192,0,63,128,0,127,128, + 0,255,0,0,254,0,1,252,0,3,252,0,7,248,0,7, + 240,0,15,224,0,31,224,0,63,192,0,63,128,0,127,0, + 0,255,0,0,255,255,252,255,255,252,255,255,252,255,255,252, + 255,255,252,9,38,76,15,3,248,255,128,255,128,255,128,255, + 128,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,255,128,255, + 128,255,128,255,128,13,32,64,17,2,254,240,0,240,0,120, + 0,120,0,120,0,120,0,60,0,60,0,60,0,30,0,30, + 0,30,0,14,0,15,0,15,0,15,0,7,128,7,128,7, + 128,3,192,3,192,3,192,3,192,1,224,1,224,1,224,0, + 240,0,240,0,240,0,112,0,120,0,120,9,38,76,15,3, + 248,255,128,255,128,255,128,255,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,255,128,255,128,255,128,20,25,75, + 40,10,0,0,96,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,152,0,3,156,0,3,12,0,3,12,0,7,14, + 0,6,6,0,6,6,0,14,7,0,12,3,0,28,3,128, + 28,1,128,24,1,128,56,1,192,48,0,192,48,0,192,112, + 0,224,96,0,96,224,0,112,224,0,112,192,0,48,20,4, + 12,20,0,250,255,255,240,255,255,240,255,255,240,255,255,240, + 9,8,16,10,255,25,248,0,124,0,60,0,62,0,30,0, + 15,0,7,0,3,128,19,20,60,22,2,1,15,254,0,31, + 255,0,63,255,128,126,15,128,124,15,192,0,7,192,0,127, + 192,15,255,192,63,255,192,127,255,192,127,7,192,252,7,192, + 252,7,192,248,15,192,248,15,192,252,15,192,254,31,192,127, + 255,192,63,247,192,31,227,224,20,30,90,25,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,254,0,251, + 255,128,255,255,192,255,15,192,254,7,224,252,3,224,252,3, + 240,252,3,240,252,3,240,248,1,240,248,1,240,248,3,240, + 252,3,240,252,3,240,252,3,224,254,7,224,255,15,192,251, + 255,192,251,255,128,248,254,0,17,20,60,21,2,1,15,252, + 0,31,254,0,63,255,0,126,63,0,124,31,128,124,31,128, + 252,15,128,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,252,15,128,252,31,128,124,31,128,126,63, + 0,63,255,0,31,254,0,15,252,0,20,30,90,25,2,0, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,7,249, + 240,31,253,240,63,255,240,63,15,240,126,7,240,124,3,240, + 252,3,240,252,3,240,252,3,240,248,1,240,248,1,240,248, + 3,240,252,3,240,252,3,240,124,3,240,126,7,240,63,15, + 240,63,253,240,31,249,240,7,241,240,19,20,60,22,2,1, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 7,192,252,7,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,7,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,14,30,60,15, + 1,1,3,252,7,252,15,252,15,192,15,128,15,128,15,128, + 15,128,15,128,15,128,255,248,255,248,255,248,255,248,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,20,28, + 84,25,2,249,7,249,240,31,253,240,63,255,240,63,15,240, + 126,7,240,124,3,240,252,3,240,252,3,240,252,3,240,248, + 1,240,248,1,240,248,3,240,252,3,240,252,3,240,124,7, + 240,126,7,240,63,255,240,63,253,240,15,249,240,3,225,240, + 0,3,240,0,3,240,124,3,240,126,7,224,63,255,224,63, + 255,192,31,255,128,3,252,0,18,30,90,24,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,255,0,251, + 255,128,255,255,192,255,31,192,254,15,192,252,7,192,252,7, + 192,252,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,6,30,30,10,2,0,252,252, + 252,252,252,0,0,0,0,0,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,124,124,124,124,124,124,7,39,39,13, + 4,247,126,126,126,126,126,0,0,0,0,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,126,254,254,254,252,248,18,30,90,22,3,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,31,192, + 248,31,128,248,63,0,248,126,0,248,252,0,249,252,0,249, + 248,0,251,240,0,255,224,0,255,240,0,251,240,0,249,248, + 0,249,252,0,248,252,0,248,126,0,248,127,0,248,63,0, + 248,31,128,248,31,192,248,15,192,5,30,30,11,3,0,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,31,20,80, + 37,3,1,248,255,15,240,249,255,159,252,251,255,191,252,255, + 31,248,254,254,15,240,126,252,7,224,62,252,7,224,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,18,20,60,24,3,1,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,20,60,24,2,1,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,28,84,25,3,249,248,254,0, + 249,255,128,251,255,192,255,15,192,254,7,224,252,3,224,252, + 3,240,252,3,240,252,3,240,248,1,240,248,1,240,252,3, + 240,252,3,240,252,3,240,252,3,224,254,7,224,255,15,192, + 255,255,192,251,255,128,249,254,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,20,28,84,25,2,249,7,241,240,31,253,240,63,253,240, + 63,15,240,126,7,240,124,3,240,252,3,240,252,3,240,248, + 3,240,248,1,240,248,1,240,252,3,240,252,3,240,252,3, + 240,124,3,240,126,7,240,63,15,240,63,255,240,31,253,240, + 7,249,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,12,20,40,16,3, + 1,248,240,249,240,251,240,255,240,255,240,255,0,254,0,252, + 0,252,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,17,20,60,21,2,1,15, + 252,0,63,254,0,127,255,0,126,31,128,124,31,128,124,15, + 128,126,0,0,127,128,0,63,248,0,63,254,0,7,255,0, + 0,255,128,0,31,128,0,15,128,248,15,128,252,15,128,126, + 31,128,127,255,0,63,254,0,31,252,0,15,26,52,17,1, + 0,0,128,1,128,7,128,15,128,15,128,15,128,255,252,255, + 252,255,252,255,252,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,192,15,224,7, + 254,7,254,1,254,18,20,60,24,3,0,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,252,7,192,252,15,192,252,15,192,254,31,192,127,255, + 192,63,247,192,31,231,192,20,20,60,22,1,0,248,3,240, + 252,3,240,252,3,224,124,7,224,126,7,224,126,7,192,62, + 15,192,63,15,192,31,15,128,31,31,128,31,159,0,15,159, + 0,15,191,0,15,254,0,7,254,0,7,254,0,3,252,0, + 3,252,0,3,248,0,1,248,0,33,20,100,34,1,0,248, + 7,224,31,128,248,15,240,31,0,252,15,240,31,0,252,15, + 240,63,0,124,15,248,62,0,126,31,248,62,0,126,31,248, + 126,0,62,31,124,126,0,62,62,124,124,0,63,62,124,124, + 0,31,62,126,252,0,31,124,62,248,0,31,252,62,248,0, + 15,252,63,248,0,15,252,31,240,0,15,248,31,240,0,15, + 248,31,240,0,7,248,15,240,0,7,240,15,224,0,7,240, + 15,224,0,20,20,60,22,1,0,254,3,224,126,7,224,63, + 15,192,31,143,128,31,159,128,15,223,0,7,254,0,7,254, + 0,3,252,0,3,252,0,3,252,0,7,254,0,15,255,0, + 15,191,0,31,159,128,63,31,192,62,15,192,126,7,224,252, + 7,224,252,3,240,20,28,84,22,1,248,252,3,240,252,3, + 240,252,3,224,126,7,224,126,7,224,63,7,192,63,15,192, + 63,15,192,31,143,128,31,159,128,15,159,128,15,223,0,15, + 255,0,7,255,0,7,254,0,3,254,0,3,252,0,3,252, + 0,1,252,0,1,248,0,1,248,0,1,248,0,1,240,0, + 3,240,0,3,240,0,7,224,0,7,224,0,7,224,0,17, + 20,60,21,2,0,255,255,0,255,255,0,255,255,0,255,255, + 0,0,63,0,0,126,0,0,252,0,1,248,0,3,240,0, + 7,240,0,15,224,0,15,192,0,31,128,0,63,0,0,126, + 0,0,252,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,15,41,82,20,3,246,0,2,0,254,1,254,3,254,7, + 240,7,224,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,15,192,15,128,63,128,254,0,252, + 0,254,0,255,0,63,128,15,128,15,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,224,7, + 224,3,254,3,254,1,254,0,62,3,43,43,13,5,245,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,15,40,80,20,3,247, + 252,0,255,0,255,0,31,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,192,15,192,7,224, + 7,224,3,248,1,254,0,126,0,254,3,252,7,224,7,192, + 7,192,15,192,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,31,128,255,128,255,0,254,0,248,0, + 21,5,15,21,0,8,15,192,120,63,255,248,127,255,240,127, + 255,224,240,31,128,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,12,0,0,5,28,28,16, + 5,248,248,248,248,248,248,0,0,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,18,30, + 90,24,3,250,0,6,0,0,14,0,0,12,0,0,12,0, + 0,28,0,7,252,0,31,255,0,63,255,128,63,63,128,124, + 63,192,124,127,192,252,103,192,248,96,0,248,96,0,248,192, + 0,248,192,0,248,192,0,253,192,0,253,143,192,125,143,192, + 127,143,192,127,31,128,63,255,128,31,255,0,7,252,0,6, + 0,0,14,0,0,12,0,0,12,0,0,28,0,0,20,31, + 93,23,2,0,0,16,0,3,255,128,7,255,192,15,255,224, + 15,199,240,31,131,240,31,131,240,31,1,240,31,0,0,31, + 0,0,31,0,0,31,0,0,255,252,0,255,252,0,255,252, + 0,255,252,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,255,255,240,255,255,240,255,255,240,255,255, + 240,21,21,63,25,2,8,192,0,24,224,0,56,113,252,112, + 63,255,224,31,7,192,28,1,192,24,1,192,56,0,224,48, + 0,96,48,0,96,48,0,96,48,0,96,48,0,224,56,0, + 224,28,1,192,30,3,192,31,143,192,63,255,224,113,252,112, + 224,0,56,192,0,24,22,30,90,24,1,0,252,0,252,252, + 0,252,124,1,248,126,1,248,62,3,240,63,3,240,63,7, + 224,31,135,224,255,135,252,255,143,252,255,207,252,7,223,128, + 7,255,0,3,255,0,3,255,0,1,254,0,255,255,252,255, + 255,252,255,255,252,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,2,38,38,14,6,248,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,16,36,72,19,1,251,15,252,31,254,63,254,126,14, + 124,2,124,0,124,0,126,0,127,0,63,192,31,224,15,248, + 31,252,63,254,126,127,124,63,248,31,248,31,248,31,252,62, + 254,252,127,248,63,240,31,248,7,252,1,254,0,127,0,63, + 0,63,0,31,0,63,64,126,127,254,127,252,127,240,31,192, + 13,5,10,13,0,26,240,120,240,120,240,120,240,120,240,120, + 30,30,120,34,2,1,0,63,240,0,0,255,252,0,3,248, + 127,0,7,192,15,128,15,0,3,192,30,0,1,224,60,31, + 240,240,56,63,248,112,120,127,252,120,112,248,124,56,112,248, + 62,56,225,240,62,28,225,240,62,28,225,240,0,28,225,240, + 0,28,225,240,0,28,225,240,0,28,225,240,62,28,225,240, + 62,28,112,248,62,56,112,248,124,56,112,127,252,120,56,63, + 248,112,60,31,224,240,30,0,1,224,15,0,3,192,7,128, + 15,128,3,240,63,0,1,255,252,0,0,63,240,0,14,20, + 40,16,1,10,15,192,63,240,120,240,120,120,0,120,15,248, + 63,248,124,120,240,120,240,120,240,120,240,248,255,248,127,248, + 63,56,0,0,0,0,0,0,255,252,255,252,20,16,48,24, + 2,2,15,193,240,15,131,224,31,135,224,31,7,192,63,15, + 192,126,15,192,126,31,128,252,31,128,252,31,128,126,31,128, + 126,15,192,63,15,192,31,7,192,31,135,224,15,131,224,15, + 193,240,21,9,27,25,2,8,255,255,248,255,255,248,0,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,255,30,30,120,34,2,1,0,63,240,0,0,255, + 252,0,3,248,127,0,7,192,15,128,15,0,3,192,30,0, + 1,224,60,255,192,240,56,255,240,112,120,255,248,120,112,240, + 124,56,112,240,60,56,224,240,60,28,224,240,60,28,224,240, + 120,28,224,255,240,28,224,255,224,28,224,255,248,28,224,240, + 120,28,224,240,120,28,112,240,56,56,112,240,60,56,112,240, + 60,120,56,240,60,112,60,240,60,240,30,0,1,224,15,0, + 3,192,7,128,15,128,3,240,63,0,1,255,252,0,0,63, + 240,0,13,4,8,13,0,26,255,248,255,248,255,248,255,248, + 9,9,18,13,2,21,62,0,127,0,227,128,193,128,193,128, + 193,128,227,128,127,0,62,0,24,24,72,40,8,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,255,255,255,255,255,255,255,255,255,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 255,255,255,255,255,255,13,16,32,15,1,15,63,224,127,240, + 248,120,240,120,0,120,0,248,1,240,3,224,7,192,15,128, + 31,0,60,0,240,0,255,240,255,240,255,240,12,15,30,14, + 1,16,63,192,127,224,240,240,240,240,0,240,1,224,15,192, + 15,192,1,224,0,240,0,240,240,240,249,240,127,224,63,128, + 8,8,8,9,2,25,31,31,62,60,120,112,240,224,255,18, + 36,108,22,2,250,7,255,192,31,255,192,63,199,0,127,199, + 0,255,199,0,255,199,0,255,199,0,255,199,0,255,199,0, + 255,199,0,255,199,0,255,199,0,127,199,0,63,199,0,15, + 199,0,1,199,0,1,199,0,1,199,0,1,199,0,1,199, + 0,1,199,0,1,199,0,1,199,0,1,199,0,1,199,0, + 1,199,0,1,199,0,1,199,0,1,199,0,1,199,0,1, + 199,0,1,199,0,1,199,0,1,199,0,1,199,0,1,199, + 0,5,5,5,12,3,11,248,248,248,248,248,9,10,20,10, + 2,246,48,0,48,0,60,0,63,0,7,128,3,128,3,128, + 135,128,255,0,252,0,7,16,16,11,2,14,30,62,254,254, + 158,30,30,30,30,30,30,30,30,30,30,30,14,19,38,16, + 1,11,15,192,31,224,60,240,120,120,112,56,240,60,240,60, + 240,60,240,60,240,60,112,56,120,120,60,240,31,224,15,192, + 0,0,0,0,255,252,255,252,20,16,48,24,2,2,252,31, + 0,124,31,0,126,15,128,62,15,192,63,15,192,31,7,224, + 31,135,224,31,131,240,31,131,240,31,135,224,31,7,224,63, + 15,192,62,15,192,126,15,128,124,31,0,252,31,0,28,31, + 124,32,2,255,30,0,15,0,62,0,30,0,254,0,30,0, + 254,0,60,0,158,0,124,0,30,0,120,0,30,0,248,0, + 30,0,240,0,30,1,240,0,30,1,224,0,30,3,192,0, + 30,3,192,0,30,7,128,0,30,15,128,0,30,15,0,0, + 30,31,3,224,0,30,7,224,0,60,15,224,0,60,15,224, + 0,120,31,224,0,120,61,224,0,240,121,224,0,240,121,224, + 1,224,241,224,3,193,225,224,3,193,255,240,7,129,255,240, + 7,128,1,224,15,0,1,224,15,0,1,224,30,0,1,224, + 28,30,120,31,2,0,30,0,30,0,62,0,60,0,254,0, + 56,0,222,0,120,0,158,0,240,0,30,0,240,0,30,1, + 224,0,30,1,224,0,30,3,192,0,30,3,192,0,30,7, + 128,0,30,7,128,0,30,15,0,0,30,30,0,0,30,30, + 31,128,30,60,63,224,0,60,125,224,0,120,240,240,0,120, + 240,240,0,240,0,240,0,240,1,240,1,224,3,224,1,192, + 7,192,3,192,15,128,7,128,31,0,7,128,62,0,15,0, + 124,0,15,0,240,0,30,0,255,240,30,0,255,240,29,30, + 120,31,1,1,63,192,3,192,127,224,7,192,240,240,7,128, + 240,240,15,0,0,240,15,0,1,224,30,0,15,192,30,0, + 15,192,60,0,1,224,124,0,0,240,120,0,0,240,240,0, + 240,240,240,0,249,241,224,0,127,225,224,0,63,131,193,240, + 0,3,195,240,0,7,135,240,0,15,7,240,0,15,15,240, + 0,30,30,240,0,30,60,240,0,60,60,240,0,60,120,240, + 0,120,240,240,0,240,255,248,0,240,255,248,1,224,0,240, + 1,224,0,240,3,192,0,240,3,192,0,240,19,28,84,23, + 2,248,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,0,0,0,0,0,0,0,0,0,240,0,0,240,0, + 0,240,0,0,240,0,1,224,0,7,224,0,15,128,0,31, + 0,0,62,0,0,124,0,0,252,0,0,252,0,0,248,1, + 0,252,3,128,252,7,224,126,15,192,127,255,192,63,255,128, + 15,254,0,3,248,0,27,41,164,28,1,0,1,240,0,0, + 1,240,0,0,0,248,0,0,0,120,0,0,0,60,0,0, + 0,28,0,0,0,14,0,0,0,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,63,128,0, + 0,127,128,0,0,127,128,0,0,127,192,0,0,255,192,0, + 0,255,224,0,0,255,224,0,1,251,224,0,1,243,240,0, + 3,243,240,0,3,241,240,0,3,225,248,0,7,225,248,0, + 7,224,248,0,7,192,252,0,15,192,252,0,15,192,126,0, + 15,128,126,0,31,255,254,0,31,255,255,0,63,255,255,0, + 63,255,255,0,63,255,255,128,126,0,31,128,126,0,31,128, + 126,0,15,192,252,0,15,192,252,0,7,192,248,0,7,224, + 27,41,164,28,1,0,0,3,240,0,0,3,224,0,0,3, + 192,0,0,7,128,0,0,7,0,0,0,15,0,0,0,14, + 0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,127, + 128,0,0,127,192,0,0,255,192,0,0,255,224,0,0,255, + 224,0,1,251,224,0,1,243,240,0,3,243,240,0,3,241, + 240,0,3,225,248,0,7,225,248,0,7,224,248,0,7,192, + 252,0,15,192,252,0,15,192,126,0,15,128,126,0,31,255, + 254,0,31,255,255,0,63,255,255,0,63,255,255,0,63,255, + 255,128,126,0,31,128,126,0,31,128,126,0,15,192,252,0, + 15,192,252,0,7,192,248,0,7,224,27,41,164,28,1,0, + 0,63,0,0,0,63,128,0,0,127,128,0,0,123,192,0, + 0,243,192,0,0,225,224,0,1,192,224,0,1,192,112,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0, + 0,63,128,0,0,127,128,0,0,127,128,0,0,127,192,0, + 0,255,192,0,0,255,224,0,0,255,224,0,1,251,224,0, + 1,243,240,0,3,243,240,0,3,241,240,0,3,225,248,0, + 7,225,248,0,7,224,248,0,7,192,252,0,15,192,252,0, + 15,192,126,0,15,128,126,0,31,255,254,0,31,255,255,0, + 63,255,255,0,63,255,255,0,63,255,255,128,126,0,31,128, + 126,0,31,128,126,0,15,192,252,0,15,192,252,0,7,192, + 248,0,7,224,27,39,156,28,1,0,0,120,112,0,0,255, + 224,0,1,255,224,0,1,255,192,0,1,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63, + 0,0,0,63,128,0,0,127,128,0,0,127,128,0,0,127, + 192,0,0,255,192,0,0,255,224,0,0,255,224,0,1,251, + 224,0,1,243,240,0,3,243,240,0,3,241,240,0,3,225, + 248,0,7,225,248,0,7,224,248,0,7,192,252,0,15,192, + 252,0,15,192,126,0,15,128,126,0,31,255,254,0,31,255, + 255,0,63,255,255,0,63,255,255,0,63,255,255,128,126,0, + 31,128,126,0,31,128,126,0,15,192,252,0,15,192,252,0, + 7,192,248,0,7,224,27,40,160,29,1,0,1,224,240,0, + 1,224,240,0,1,224,240,0,1,224,240,0,1,224,240,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,63,128,0,0,63,128,0,0,127,192,0, + 0,127,192,0,0,127,192,0,0,255,224,0,0,255,224,0, + 1,251,240,0,1,251,240,0,1,251,240,0,3,241,248,0, + 3,241,248,0,3,224,248,0,7,224,252,0,7,224,252,0, + 7,192,124,0,15,192,126,0,15,192,126,0,15,128,62,0, + 31,255,255,0,31,255,255,0,31,255,255,0,63,255,255,128, + 63,255,255,128,126,0,31,128,126,0,15,192,126,0,15,192, + 252,0,7,224,252,0,7,224,252,0,7,224,27,43,172,28, + 0,0,0,31,0,0,0,63,128,0,0,113,192,0,0,96, + 192,0,0,96,192,0,0,96,192,0,0,113,192,0,0,63, + 128,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,63,128,0,0,63,128,0,0,63, + 128,0,0,127,192,0,0,127,192,0,0,127,192,0,0,255, + 224,0,0,251,224,0,0,251,240,0,1,251,240,0,1,241, + 240,0,1,241,248,0,3,241,248,0,3,224,248,0,7,224, + 252,0,7,224,252,0,7,192,124,0,15,192,126,0,15,192, + 126,0,15,255,254,0,31,255,255,0,31,255,255,0,31,255, + 255,128,63,255,255,128,63,0,31,128,62,0,15,192,126,0, + 15,192,126,0,15,192,252,0,7,224,252,0,7,224,38,30, + 150,40,0,0,0,1,255,255,248,0,1,255,255,248,0,3, + 255,255,248,0,3,255,255,248,0,7,255,0,0,0,7,223, + 0,0,0,15,223,0,0,0,15,159,0,0,0,31,159,0, + 0,0,31,31,0,0,0,63,31,0,0,0,62,31,0,0, + 0,126,31,255,248,0,124,31,255,248,0,252,31,255,248,0, + 248,31,255,248,1,248,31,255,248,1,240,31,0,0,3,255, + 255,0,0,7,255,255,0,0,7,255,255,0,0,15,255,255, + 0,0,15,255,255,0,0,31,128,63,0,0,31,128,63,0, + 0,63,0,63,255,252,63,0,63,255,252,126,0,63,255,252, + 126,0,63,255,252,252,0,63,255,252,24,40,120,29,2,247, + 1,255,192,3,255,240,15,255,248,15,255,252,31,255,254,63, + 128,254,62,0,127,126,0,127,124,0,63,124,0,63,252,0, + 0,252,0,0,252,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,252,0,0,252,0,0,124,0,63,124, + 0,127,126,0,127,62,0,255,63,0,254,31,255,254,31,255, + 252,15,255,248,7,255,240,1,255,192,0,24,0,0,24,0, + 0,31,0,0,31,128,0,3,192,0,1,192,0,1,192,0, + 195,192,0,255,128,0,254,0,20,41,123,25,3,0,15,128, + 0,15,128,0,7,192,0,3,192,0,1,224,0,0,224,0, + 0,240,0,0,112,0,0,0,0,0,0,0,0,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,255,255,224,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,255,255,224,255,255,224,255,255,224,255, + 255,224,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,240,255,255,240, + 255,255,240,255,255,240,255,255,240,20,41,123,25,3,0,0, + 63,0,0,62,0,0,124,0,0,120,0,0,240,0,0,224, + 0,1,224,0,1,192,0,0,0,0,0,0,0,0,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,224,255,255,224,255,255,224, + 255,255,224,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,20,41,123,25,3,0, + 3,248,0,3,248,0,7,252,0,7,188,0,7,30,0,14, + 14,0,14,7,0,28,7,0,0,0,0,0,0,0,0,0, + 0,255,255,224,255,255,224,255,255,224,255,255,224,255,255,224, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,224,255,255,224,255,255, + 224,255,255,224,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,255,255,240,255, + 255,240,255,255,240,255,255,240,255,255,240,20,40,120,25,3, + 0,15,15,0,15,15,0,15,15,0,15,15,0,15,15,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,255,255,224,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,255,255,224,255,255,224,255,255,224,255, + 255,224,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,240,255,255,240, + 255,255,240,255,255,240,255,255,240,9,41,82,11,255,0,248, + 0,124,0,60,0,30,0,14,0,15,0,7,0,3,0,0, + 0,0,0,0,0,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,8,41,41,10,3,0,15,31,30,60,56,120,112,224,0, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 12,41,82,11,0,0,31,128,63,128,63,128,123,192,121,192, + 112,224,224,224,192,112,0,0,0,0,0,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,13,40,80,13,0,0,240,120, + 240,120,240,120,240,120,240,120,0,0,0,0,0,0,0,0, + 0,0,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,26,30, + 120,29,0,0,31,255,0,0,31,255,224,0,31,255,248,0, + 31,255,252,0,31,255,254,0,31,1,255,0,31,0,127,0, + 31,0,31,128,31,0,31,128,31,0,15,192,31,0,15,192, + 31,0,7,192,31,0,7,192,255,252,7,192,255,252,7,192, + 255,252,7,192,255,252,7,192,31,0,7,192,31,0,7,192, + 31,0,15,192,31,0,15,192,31,0,31,128,31,0,31,128, + 31,0,127,0,31,1,255,0,31,255,254,0,31,255,252,0, + 31,255,248,0,31,255,224,0,31,255,0,0,25,39,156,31, + 3,0,0,248,96,0,1,255,224,0,1,255,192,0,3,255, + 128,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,128,15,128,255,128,15,128,255,128, + 15,128,255,192,15,128,255,192,15,128,255,224,15,128,251,224, + 15,128,251,240,15,128,249,240,15,128,249,248,15,128,248,248, + 15,128,248,252,15,128,248,252,15,128,248,126,15,128,248,126, + 15,128,248,63,15,128,248,63,15,128,248,31,143,128,248,31, + 143,128,248,15,143,128,248,15,207,128,248,7,207,128,248,7, + 239,128,248,3,239,128,248,3,255,128,248,1,255,128,248,1, + 255,128,248,0,255,128,248,0,255,128,248,0,127,128,27,41, + 164,31,2,0,1,240,0,0,1,240,0,0,0,248,0,0, + 0,120,0,0,0,60,0,0,0,28,0,0,0,28,0,0, + 0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,255,224,0,3,255,248,0,7,255,252,0,15,255,254,0, + 31,255,255,0,63,192,127,128,63,0,31,128,127,0,31,192, + 126,0,15,192,126,0,15,192,252,0,15,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,15,224, + 126,0,15,192,126,0,15,192,127,0,31,192,63,0,31,128, + 63,192,127,128,31,255,255,0,15,255,254,0,7,255,252,0, + 3,255,248,0,0,255,224,0,27,41,164,31,2,0,0,1, + 240,0,0,1,224,0,0,3,224,0,0,3,192,0,0,7, + 128,0,0,7,0,0,0,14,0,0,0,14,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,224,0,3,255, + 248,0,7,255,252,0,15,255,254,0,31,255,255,0,63,192, + 127,128,63,0,31,128,127,0,31,192,126,0,15,192,126,0, + 15,192,252,0,15,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,15,224,126,0,15,192,126,0, + 15,192,127,0,31,192,63,0,31,128,63,192,127,128,31,255, + 255,0,15,255,254,0,7,255,252,0,3,255,248,0,0,255, + 224,0,27,41,164,31,2,0,0,63,0,0,0,63,128,0, + 0,63,128,0,0,123,192,0,0,113,192,0,0,240,224,0, + 0,224,224,0,1,192,112,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,224,0,3,255,248,0,7,255,252,0, + 15,255,254,0,31,255,255,0,63,192,127,128,63,0,31,128, + 127,0,31,192,126,0,15,192,126,0,15,192,252,0,15,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,15,224,126,0,15,192,126,0,15,192,127,0,31,192, + 63,0,31,128,63,192,127,128,31,255,255,0,15,255,254,0, + 7,255,252,0,3,255,248,0,0,255,224,0,27,40,160,31, + 2,0,0,0,48,0,0,124,112,0,0,255,224,0,0,255, + 224,0,1,255,192,0,1,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,224,0,3,255, + 248,0,7,255,252,0,15,255,254,0,31,255,255,0,63,192, + 127,128,63,0,31,128,127,0,31,192,126,0,15,192,126,0, + 15,192,252,0,15,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,15,224,126,0,15,192,126,0, + 15,192,127,0,31,192,63,0,31,128,63,192,127,128,31,255, + 255,0,15,255,254,0,7,255,252,0,3,255,248,0,0,255, + 224,0,27,40,160,31,2,0,0,240,240,0,0,240,240,0, + 0,240,240,0,0,240,240,0,0,240,240,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,255,224,0,3,255,248,0,7,255,252,0,15,255,254,0, + 31,255,255,0,63,192,127,128,63,0,31,128,127,0,31,192, + 126,0,15,192,126,0,15,192,252,0,15,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,15,224, + 126,0,15,192,126,0,15,192,127,0,31,192,63,0,31,128, + 63,192,127,128,31,255,255,0,15,255,254,0,7,255,252,0, + 3,255,248,0,0,255,224,0,22,22,66,40,9,1,96,0, + 24,240,0,60,112,0,56,56,0,112,28,0,224,14,1,192, + 7,3,128,3,135,0,1,206,0,0,252,0,0,120,0,0, + 120,0,0,252,0,1,206,0,3,135,0,7,3,128,14,1, + 192,28,0,224,56,0,112,112,0,56,96,0,24,64,0,8, + 29,34,136,31,1,254,0,0,0,16,0,0,0,56,0,127, + 240,120,1,255,252,240,3,255,255,240,7,255,255,224,15,255, + 255,192,31,224,63,192,31,128,15,192,63,128,31,224,63,0, + 63,224,63,0,127,224,126,0,251,240,126,1,243,240,126,1, + 227,240,126,3,195,240,126,7,131,240,126,15,3,240,126,30, + 3,240,126,60,3,240,126,124,3,240,126,248,7,240,63,240, + 7,224,63,224,7,224,63,192,15,224,31,128,15,192,31,224, + 63,192,31,255,255,128,63,255,255,0,127,255,254,0,249,255, + 252,0,240,127,240,0,224,0,0,0,64,0,0,0,24,41, + 123,30,3,0,7,192,0,3,224,0,1,224,0,1,240,0, + 0,240,0,0,120,0,0,56,0,0,28,0,0,0,0,0, + 0,0,0,0,0,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,252,0, + 31,252,0,31,252,0,63,124,0,63,126,0,126,127,0,254, + 63,255,252,31,255,252,31,255,248,7,255,224,1,255,192,24, + 41,123,30,3,0,0,3,224,0,3,224,0,7,192,0,15, + 128,0,15,0,0,30,0,0,28,0,0,56,0,0,0,0, + 0,0,0,0,0,0,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,252, + 0,31,252,0,31,252,0,63,124,0,63,126,0,126,127,0, + 254,63,255,252,31,255,252,31,255,248,7,255,224,1,255,192, + 24,41,123,30,3,0,0,126,0,0,255,0,0,255,0,1, + 247,128,1,231,128,3,195,192,3,129,192,7,0,224,0,0, + 0,0,0,0,0,0,0,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 252,0,31,252,0,31,252,0,63,124,0,63,126,0,126,127, + 0,254,63,255,252,31,255,252,31,255,248,7,255,224,1,255, + 192,24,40,120,30,3,0,3,193,224,3,193,224,3,193,224, + 3,193,224,3,193,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,0,31,252,0,31,252,0,31,252,0, + 31,252,0,31,252,0,31,252,0,31,252,0,31,252,0,31, + 252,0,31,252,0,31,252,0,31,252,0,31,252,0,31,252, + 0,31,252,0,31,252,0,31,252,0,31,252,0,31,252,0, + 31,252,0,31,254,0,63,126,0,63,127,0,126,127,128,254, + 63,255,252,31,255,252,31,255,248,7,255,224,1,255,192,24, + 41,123,25,1,0,0,7,192,0,15,128,0,15,0,0,14, + 0,0,30,0,0,28,0,0,56,0,0,0,0,0,0,0, + 0,0,0,0,0,0,252,0,127,254,0,126,126,0,254,127, + 0,252,63,1,252,63,1,248,31,131,248,31,131,240,15,195, + 240,15,199,224,7,231,224,7,239,192,3,255,192,3,255,128, + 1,255,128,1,255,0,0,255,0,0,254,0,0,126,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 21,30,90,26,2,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,252,0,255,255,128,255,255,192,255,255, + 224,255,255,240,248,7,240,248,1,248,248,1,248,248,0,248, + 248,0,248,248,1,248,248,1,248,248,7,240,255,255,240,255, + 255,224,255,255,192,255,255,128,255,252,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 21,30,90,24,2,1,15,252,0,63,255,0,127,255,128,126, + 31,192,252,15,192,252,7,192,248,7,192,248,15,192,248,15, + 128,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 248,248,0,248,252,0,248,254,0,248,127,128,248,63,192,248, + 31,224,248,7,240,248,3,240,248,1,248,248,1,248,251,224, + 248,251,225,248,251,241,248,249,255,240,249,255,224,248,255,192, + 19,32,96,22,2,0,31,0,0,31,0,0,15,128,0,7, + 128,0,3,192,0,1,192,0,1,224,0,0,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,15,254,0,31,255,0, + 63,255,128,126,15,128,124,15,192,0,7,192,0,127,192,15, + 255,192,63,255,192,127,255,192,127,7,192,252,7,192,252,7, + 192,248,15,192,248,15,192,252,15,192,254,31,192,127,255,192, + 63,247,192,31,227,224,19,32,96,22,2,0,0,31,0,0, + 62,0,0,60,0,0,120,0,0,120,0,0,240,0,0,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,31,255,0,63,255,128,126,15,128,124,15,192,0, + 7,192,0,127,192,15,255,192,63,255,192,127,255,192,127,7, + 192,252,7,192,252,7,192,248,15,192,248,15,192,252,15,192, + 254,31,192,127,255,192,63,247,192,31,227,224,19,32,96,22, + 2,0,3,240,0,3,248,0,7,248,0,7,188,0,15,28, + 0,14,30,0,28,14,0,28,7,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,254,0,31,255,0,63,255,128,126, + 15,128,124,15,192,0,7,192,0,127,192,15,255,192,63,255, + 192,127,255,192,127,7,192,252,7,192,252,7,192,248,15,192, + 248,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 227,224,19,30,90,22,2,0,7,135,0,15,254,0,15,254, + 0,31,252,0,24,16,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,254,0,31,255,0,63,255,128,126, + 15,128,124,15,192,0,7,192,0,127,192,15,255,192,63,255, + 192,127,255,192,127,7,192,252,7,192,252,7,192,248,15,192, + 248,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 227,224,19,31,93,23,2,0,30,30,0,30,30,0,30,30, + 0,30,30,0,30,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,15,254,0,31,255,0,63, + 255,128,126,15,128,124,15,192,0,7,192,0,127,192,15,255, + 192,63,255,192,127,255,192,127,7,192,252,7,192,252,7,192, + 248,15,192,248,15,192,252,15,192,254,31,192,127,255,192,63, + 247,192,31,231,224,19,34,102,22,2,0,1,240,0,3,248, + 0,7,28,0,6,12,0,6,12,0,6,12,0,7,28,0, + 3,248,0,1,240,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,254,0,31,255,0,63,255,128,126,15, + 128,124,15,192,0,7,192,0,127,192,15,255,192,63,255,192, + 127,255,192,127,7,192,252,7,192,252,7,192,248,15,192,248, + 15,192,252,15,192,254,31,192,127,255,192,63,247,192,31,231, + 224,32,20,80,36,2,1,15,252,31,224,31,254,127,248,63, + 255,127,252,126,15,240,126,124,7,224,62,0,7,224,62,0, + 7,192,31,7,255,255,255,31,255,255,255,63,255,255,255,127, + 255,255,255,252,7,192,0,252,7,224,0,248,7,224,0,248, + 15,224,63,252,15,240,62,254,30,248,126,127,252,127,252,63, + 248,63,248,31,224,31,240,17,30,90,21,2,247,15,252,0, + 31,254,0,63,255,0,126,63,0,124,31,128,124,31,128,252, + 15,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,252,15,128,252,31,128,124,31,128,126,63,0, + 63,255,0,31,254,0,15,252,0,1,128,0,1,128,0,1, + 224,0,1,248,0,0,60,0,0,28,0,0,28,0,6,60, + 0,7,248,0,7,224,0,19,32,96,22,2,0,31,0,0, + 31,0,0,15,128,0,7,128,0,3,192,0,1,192,0,0, + 224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0, + 0,7,252,0,31,255,0,63,255,0,62,31,128,124,15,192, + 124,7,192,252,7,192,255,255,192,255,255,192,255,255,224,255, + 255,224,248,0,0,248,0,0,252,0,0,124,7,192,124,15, + 192,126,31,128,63,255,128,31,255,0,7,252,0,19,32,96, + 22,2,0,0,31,0,0,62,0,0,60,0,0,120,0,0, + 120,0,0,240,0,0,224,0,1,192,0,0,0,0,0,0, + 0,0,0,0,0,0,0,7,252,0,31,255,0,63,255,0, + 62,31,128,124,15,192,124,7,192,252,7,192,255,255,192,255, + 255,192,255,255,224,255,255,224,248,0,0,248,0,0,252,0, + 0,124,7,192,124,15,192,126,31,128,63,255,128,31,255,0, + 7,252,0,19,32,96,22,2,0,3,240,0,3,248,0,7, + 248,0,7,188,0,15,28,0,14,30,0,28,14,0,28,7, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,252,0, + 31,255,0,63,255,0,62,31,128,124,15,192,124,7,192,252, + 7,192,255,255,192,255,255,192,255,255,224,255,255,224,248,0, + 0,248,0,0,252,0,0,124,7,192,124,15,192,126,31,128, + 63,255,128,31,255,0,7,252,0,19,31,93,22,2,0,30, + 30,0,30,30,0,30,30,0,30,30,0,30,30,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 15,192,252,15,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,15,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,8,32,32,11, + 0,0,248,120,124,60,30,14,7,7,0,0,0,0,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,9,32,64,10,2,0,15,128,31,0,30,0,62,0, + 60,0,120,0,112,0,224,0,0,0,0,0,0,0,0,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,13,32,64,11,255,0,15,192, + 31,192,31,224,61,224,56,240,120,112,112,56,224,56,0,0, + 0,0,0,0,0,0,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,13,31, + 62,11,255,0,240,120,240,120,240,120,240,120,240,120,0,0, + 0,0,0,0,0,0,0,0,0,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,20,31,93,24,2,0,0,0,96,7,193,224,3,247, + 224,1,255,128,0,254,0,0,254,0,3,254,0,15,159,0, + 30,15,128,24,15,128,0,7,192,7,255,192,15,255,224,63, + 255,224,63,15,240,126,3,240,124,3,240,252,1,240,252,1, + 240,252,1,240,248,1,240,248,1,240,252,1,240,252,1,240, + 252,1,240,124,3,240,126,3,224,63,15,224,31,255,192,15, + 255,128,7,254,0,18,30,90,24,3,0,7,134,0,15,254, + 0,15,254,0,31,252,0,24,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,32,96,24,2,0,15,128,0,7,128, + 0,7,192,0,3,192,0,1,224,0,0,224,0,0,112,0, + 0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 254,0,15,255,0,31,255,192,63,15,192,126,3,224,124,3, + 240,252,1,240,252,1,240,252,1,240,248,1,240,248,1,240, + 248,1,240,252,1,240,252,1,240,124,3,240,126,3,224,63, + 15,192,31,255,192,15,255,0,3,254,0,20,32,96,24,2, + 0,0,15,128,0,31,0,0,30,0,0,60,0,0,56,0, + 0,120,0,0,112,0,0,224,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,254,0,15,255,0,31,255,192,63,15, + 192,126,3,224,124,3,240,252,1,240,252,1,240,252,1,240, + 248,1,240,248,1,240,248,1,240,252,1,240,252,1,240,124, + 3,240,126,3,224,63,15,192,31,255,192,15,255,0,3,254, + 0,20,32,96,24,2,0,1,248,0,1,252,0,3,252,0, + 3,222,0,7,158,0,7,15,0,14,7,0,14,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,31,93,24,2,0,0,1,128, + 3,195,0,7,255,0,7,255,0,15,254,0,12,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,254, + 0,15,255,0,31,255,192,63,15,192,126,3,224,124,3,240, + 252,1,240,252,1,240,252,1,240,248,1,240,248,1,240,248, + 1,240,252,1,240,252,1,240,124,3,240,126,3,224,63,15, + 192,31,255,192,15,255,0,3,254,0,20,31,93,24,2,0, + 15,7,128,15,7,128,15,7,128,15,7,128,15,7,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,254,0,15,255,0,31,255,192,63,15,192,126,3,224, + 124,3,240,252,1,240,252,1,240,252,1,240,248,1,240,248, + 1,240,248,1,240,252,1,240,252,1,240,124,3,240,126,3, + 224,63,15,192,31,255,192,15,255,0,3,254,0,24,19,57, + 40,8,2,0,16,0,0,56,0,0,124,0,0,124,0,0, + 124,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,56,0, + 0,124,0,0,124,0,0,124,0,0,56,0,21,26,78,24, + 1,254,0,0,56,0,0,120,0,0,112,1,255,224,7,255, + 224,15,255,224,31,135,224,63,7,240,62,15,248,126,14,248, + 126,28,248,126,56,248,124,120,248,124,112,248,126,224,248,127, + 192,248,63,193,248,63,129,248,63,3,240,31,135,224,31,255, + 224,31,255,192,57,255,0,120,0,0,240,0,0,96,0,0, + 18,32,96,24,3,0,31,0,0,15,0,0,15,128,0,7, + 128,0,3,192,0,1,192,0,0,224,0,0,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,252,7,192,252,15,192,252,15,192,254,31,192,127,255,192, + 63,247,192,31,231,192,18,32,96,24,3,0,0,62,0,0, + 60,0,0,124,0,0,120,0,0,240,0,0,224,0,1,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,252,7,192,252,15,192,252,15,192, + 254,31,192,127,255,192,63,247,192,31,231,192,18,32,96,24, + 3,0,3,240,0,3,248,0,7,248,0,7,188,0,15,60, + 0,14,30,0,30,14,0,28,6,0,0,0,0,0,0,0, + 0,0,0,0,0,0,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 231,192,18,31,93,24,3,0,30,30,0,30,30,0,30,30, + 0,30,30,0,30,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 252,7,192,252,15,192,252,15,192,254,31,192,127,255,192,63, + 247,192,31,231,192,21,41,123,22,1,248,0,7,192,0,15, + 128,0,15,0,0,30,0,0,30,0,0,60,0,0,56,0, + 0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,252,1,248,252,3,240,126,3,240,126,3,224,63,7, + 224,63,7,224,63,7,192,31,143,192,31,143,192,15,143,128, + 15,223,128,15,223,128,7,223,0,7,255,0,3,255,0,3, + 254,0,3,254,0,1,252,0,1,252,0,0,252,0,0,248, + 0,1,248,0,33,248,0,115,240,0,255,240,0,255,224,0, + 127,192,0,31,128,0,20,38,114,25,3,248,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,249,254,0,251,255,128, + 251,255,192,255,15,192,254,7,224,252,3,224,252,3,240,252, + 3,240,252,3,240,248,1,240,248,1,240,252,3,240,252,3, + 240,252,3,240,252,3,224,254,7,224,255,15,192,255,255,192, + 251,255,128,249,254,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,21,39, + 117,21,0,248,15,7,128,15,7,128,15,7,128,15,7,128, + 15,7,128,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,1,248,252,1,248,126,1,240,126,3, + 240,63,3,224,63,3,224,63,7,224,31,135,192,31,143,192, + 15,207,192,15,207,128,15,223,128,7,255,128,7,255,0,3, + 255,0,3,255,0,3,254,0,1,254,0,1,252,0,0,252, + 0,0,252,0,1,248,0,1,248,0,1,248,0,3,240,0, + 3,240,0,7,240,0,7,224,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 30 + Calculated Max Values w=24 h=32 x= 8 y=14 dx=40 dy= 0 ascent=31 len=90 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =30 descent= 0 + X Font ascent =30 descent= 0 + Max Font ascent =31 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30n[1179] U8G_SECTION(".progmem.u8g_font_fub30n") = { + 0,59,54,253,245,30,0,0,0,0,42,57,0,31,251,30, + 0,16,16,32,26,5,14,4,32,28,56,30,120,30,120,15, + 240,7,224,227,199,255,255,255,255,243,207,7,224,15,240,30, + 120,30,120,28,56,4,32,24,25,75,40,8,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,255,255, + 255,255,255,255,255,255,255,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,8,10,10,12,2,251,31,31, + 62,62,60,124,120,120,240,240,10,5,10,14,2,8,255,192, + 255,192,255,192,255,192,255,192,5,5,5,12,4,0,248,248, + 248,248,248,13,32,64,17,2,254,0,120,0,120,0,120,0, + 240,0,240,0,240,1,224,1,224,1,224,3,192,3,192,3, + 192,3,192,7,128,7,128,7,128,15,0,15,0,15,0,14, + 0,30,0,30,0,30,0,60,0,60,0,60,0,120,0,120, + 0,120,0,120,0,240,0,240,0,20,30,90,23,1,1,3, + 252,0,15,255,0,31,255,128,63,15,128,62,7,192,124,3, + 192,124,3,224,124,3,224,124,3,224,248,1,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,124,3, + 224,124,3,224,124,3,224,124,3,224,62,7,192,63,15,128, + 31,255,128,15,255,0,3,252,0,12,30,60,23,4,0,1, + 240,3,240,15,240,63,240,255,240,255,240,253,240,249,240,225, + 240,129,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,20,30,90,23,1, + 1,3,255,0,7,255,128,31,255,192,31,255,224,63,255,240, + 63,3,240,126,1,240,126,1,240,124,1,240,0,1,240,0, + 3,240,0,3,240,0,7,224,0,15,224,0,15,192,0,31, + 128,0,63,0,0,254,0,1,252,0,3,248,0,7,240,0, + 15,224,0,63,128,0,127,0,0,252,0,0,255,255,240,255, + 255,240,255,255,240,255,255,240,255,255,240,19,30,90,23,2, + 1,7,252,0,31,255,0,63,255,128,127,255,128,127,255,192, + 252,15,192,252,7,192,248,7,192,0,7,192,0,7,192,0, + 15,192,0,63,192,3,255,128,3,254,0,3,252,0,3,255, + 0,3,255,128,0,31,192,0,7,224,0,7,224,0,7,224, + 0,3,224,248,7,224,252,7,224,252,7,192,126,15,192,127, + 255,128,63,255,128,31,255,0,15,252,0,21,30,90,23,1, + 0,0,63,128,0,63,128,0,127,128,0,255,128,0,255,128, + 1,255,128,1,255,128,3,239,128,3,207,128,7,207,128,15, + 143,128,15,143,128,31,15,128,31,15,128,62,15,128,62,15, + 128,124,15,128,252,15,128,248,15,128,255,255,248,255,255,248, + 255,255,248,255,255,248,255,255,248,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,19,30,90,23,2, + 0,127,255,192,127,255,192,127,255,192,127,255,192,127,255,192, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,252,0,125,255,0,127,255,128,127,255,192,127,15, + 224,126,7,224,124,3,224,0,3,224,0,3,224,0,3,224, + 0,3,224,0,3,224,248,7,224,252,7,224,252,15,192,127, + 255,128,127,255,128,63,254,0,15,252,0,20,30,90,23,1, + 1,3,254,0,7,255,0,15,255,128,31,255,192,63,255,192, + 63,7,224,126,3,224,126,3,224,124,0,0,124,0,0,252, + 0,0,248,0,0,249,255,0,251,255,128,255,255,192,255,15, + 224,254,7,224,254,3,240,252,3,240,252,3,240,252,1,240, + 252,1,240,124,3,240,124,3,240,126,3,224,63,7,224,63, + 255,192,31,255,128,15,255,0,3,254,0,19,30,90,23,2, + 0,255,255,224,255,255,224,255,255,224,255,255,224,255,255,224, + 0,7,224,0,7,224,0,7,192,0,15,192,0,15,192,0, + 31,128,0,31,128,0,63,0,0,63,0,0,63,0,0,126, + 0,0,126,0,0,252,0,0,252,0,1,252,0,1,248,0, + 1,248,0,3,240,0,3,240,0,7,240,0,7,224,0,15, + 224,0,15,192,0,15,192,0,31,192,0,20,30,90,23,1, + 1,7,254,0,31,255,128,63,255,192,127,255,224,127,255,224, + 126,7,224,124,3,224,124,3,224,124,3,224,124,3,224,126, + 7,224,127,15,192,63,255,128,15,255,0,7,252,0,31,255, + 0,63,255,192,127,15,224,124,7,224,252,3,240,252,3,240, + 248,1,240,248,3,240,252,3,240,252,3,240,254,7,240,127, + 255,224,63,255,192,31,255,128,15,255,0,20,30,90,23,1, + 1,3,252,0,15,255,0,31,255,128,63,255,192,127,255,192, + 126,7,224,252,7,224,252,3,224,252,3,240,248,3,240,248, + 3,240,252,3,240,252,7,240,124,7,240,127,15,240,63,255, + 240,63,253,240,31,249,240,7,225,240,0,3,240,0,3,224, + 0,3,224,0,3,224,124,7,224,124,7,192,126,15,192,63, + 255,128,31,255,0,15,254,0,7,252,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=38 h=43 x=10 y=25 dx=42 dy= 0 ascent=33 len=195 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =33 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30r[7686] U8G_SECTION(".progmem.u8g_font_fub30r") = { + 0,59,54,253,245,30,9,163,21,182,32,127,249,33,245,31, + 248,0,0,0,12,0,0,5,30,30,16,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,0,0,248,248,248,248,248,15,12,24,21,3, + 18,252,126,252,126,252,126,252,126,248,126,248,126,248,60,248, + 60,120,60,120,60,120,60,120,60,25,30,120,29,2,0,0, + 60,30,0,0,60,30,0,0,120,60,0,0,120,60,0,0, + 120,60,0,0,120,120,0,0,240,120,0,0,240,120,0,15, + 255,255,128,31,255,255,0,31,255,255,0,31,255,255,0,1, + 224,224,0,3,193,224,0,3,193,224,0,3,193,224,0,7, + 131,192,0,7,131,192,0,127,255,252,0,255,255,248,0,255, + 255,248,0,255,255,248,0,15,7,128,0,30,15,0,0,30, + 15,0,0,30,15,0,0,62,30,0,0,60,30,0,0,60, + 30,0,0,60,30,0,0,21,37,111,23,1,252,0,96,0, + 0,96,0,0,96,0,3,254,0,15,255,128,31,255,192,63, + 255,224,127,111,224,126,99,240,124,99,240,124,97,240,124,96, + 0,124,96,0,126,96,0,127,224,0,127,240,0,63,254,0, + 31,255,128,7,255,224,0,255,240,0,127,240,0,103,248,0, + 97,248,248,97,248,248,96,248,252,97,248,252,97,248,126,99, + 240,127,255,240,63,255,224,31,255,192,15,255,128,3,254,0, + 0,96,0,0,96,0,0,96,0,0,96,0,37,30,150,41, + 2,0,7,224,0,120,0,31,248,0,240,0,63,252,0,240, + 0,124,62,1,224,0,120,30,3,224,0,240,15,3,192,0, + 240,15,7,192,0,240,15,7,128,0,240,15,15,0,0,240, + 15,15,0,0,240,15,30,0,0,240,15,30,0,0,120,30, + 60,0,0,124,62,124,0,0,63,252,120,63,0,31,248,248, + 255,192,7,224,241,255,224,0,1,227,225,240,0,1,227,192, + 240,0,3,199,128,120,0,3,199,128,120,0,7,135,128,120, + 0,7,135,128,120,0,15,7,128,120,0,31,7,128,120,0, + 30,3,192,240,0,62,3,192,240,0,60,1,243,224,0,120, + 1,255,192,0,120,0,127,128,28,30,120,31,2,1,3,255, + 0,0,15,255,128,0,31,255,192,0,63,143,224,0,63,7, + 224,0,62,3,224,0,63,7,224,0,63,7,224,0,31,15, + 192,0,31,159,192,0,15,255,128,0,15,255,0,0,7,252, + 0,0,15,248,0,0,31,248,15,128,63,252,15,128,63,126, + 15,128,126,127,15,128,126,63,143,128,252,31,207,128,252,15, + 255,0,248,7,255,0,248,3,255,0,252,1,254,0,252,0, + 254,0,126,0,254,0,127,131,255,0,63,255,255,128,31,255, + 255,224,7,255,135,240,6,12,12,16,5,18,252,252,252,124, + 124,124,124,124,120,120,120,120,9,36,72,16,4,251,15,128, + 31,0,31,0,31,0,62,0,62,0,62,0,126,0,124,0, + 124,0,124,0,124,0,252,0,252,0,252,0,252,0,248,0, + 248,0,248,0,248,0,248,0,252,0,252,0,252,0,124,0, + 124,0,124,0,124,0,126,0,62,0,62,0,62,0,31,0, + 31,0,31,0,15,128,8,36,36,16,4,251,240,248,120,124, + 124,124,62,62,62,63,63,31,31,31,31,31,31,31,31,31, + 31,31,31,31,63,63,63,62,62,62,124,124,124,248,248,240, + 16,16,32,26,5,14,4,32,28,56,30,120,30,120,15,240, + 7,224,227,199,255,255,255,255,243,207,7,224,15,240,30,120, + 30,120,28,56,4,32,24,25,75,40,8,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,255,255,255, + 255,255,255,255,255,255,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,8,10,10,12,2,251,31,31,62, + 62,60,124,120,120,240,240,10,5,10,14,2,8,255,192,255, + 192,255,192,255,192,255,192,5,5,5,12,4,0,248,248,248, + 248,248,13,32,64,17,2,254,0,120,0,120,0,120,0,240, + 0,240,0,240,1,224,1,224,1,224,3,192,3,192,3,192, + 3,192,7,128,7,128,7,128,15,0,15,0,15,0,14,0, + 30,0,30,0,30,0,60,0,60,0,60,0,120,0,120,0, + 120,0,120,0,240,0,240,0,20,30,90,23,1,1,3,252, + 0,15,255,0,31,255,128,63,15,128,62,7,192,124,3,192, + 124,3,224,124,3,224,124,3,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,248,1,240,248,1,240,248,1,240,248,1,240,124,3,224, + 124,3,224,124,3,224,124,3,224,62,7,192,63,15,128,31, + 255,128,15,255,0,3,252,0,12,30,60,23,4,0,1,240, + 3,240,15,240,63,240,255,240,255,240,253,240,249,240,225,240, + 129,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,20,30,90,23,1,1, + 3,255,0,7,255,128,31,255,192,31,255,224,63,255,240,63, + 3,240,126,1,240,126,1,240,124,1,240,0,1,240,0,3, + 240,0,3,240,0,7,224,0,15,224,0,15,192,0,31,128, + 0,63,0,0,254,0,1,252,0,3,248,0,7,240,0,15, + 224,0,63,128,0,127,0,0,252,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,19,30,90,23,2,1, + 7,252,0,31,255,0,63,255,128,127,255,128,127,255,192,252, + 15,192,252,7,192,248,7,192,0,7,192,0,7,192,0,15, + 192,0,63,192,3,255,128,3,254,0,3,252,0,3,255,0, + 3,255,128,0,31,192,0,7,224,0,7,224,0,7,224,0, + 3,224,248,7,224,252,7,224,252,7,192,126,15,192,127,255, + 128,63,255,128,31,255,0,15,252,0,21,30,90,23,1,0, + 0,63,128,0,63,128,0,127,128,0,255,128,0,255,128,1, + 255,128,1,255,128,3,239,128,3,207,128,7,207,128,15,143, + 128,15,143,128,31,15,128,31,15,128,62,15,128,62,15,128, + 124,15,128,252,15,128,248,15,128,255,255,248,255,255,248,255, + 255,248,255,255,248,255,255,248,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,19,30,90,23,2,0, + 127,255,192,127,255,192,127,255,192,127,255,192,127,255,192,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,252,0,125,255,0,127,255,128,127,255,192,127,15,224, + 126,7,224,124,3,224,0,3,224,0,3,224,0,3,224,0, + 3,224,0,3,224,248,7,224,252,7,224,252,15,192,127,255, + 128,127,255,128,63,254,0,15,252,0,20,30,90,23,1,1, + 3,254,0,7,255,0,15,255,128,31,255,192,63,255,192,63, + 7,224,126,3,224,126,3,224,124,0,0,124,0,0,252,0, + 0,248,0,0,249,255,0,251,255,128,255,255,192,255,15,224, + 254,7,224,254,3,240,252,3,240,252,3,240,252,1,240,252, + 1,240,124,3,240,124,3,240,126,3,224,63,7,224,63,255, + 192,31,255,128,15,255,0,3,254,0,19,30,90,23,2,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,31, + 128,0,31,128,0,63,0,0,63,0,0,63,0,0,126,0, + 0,126,0,0,252,0,0,252,0,1,252,0,1,248,0,1, + 248,0,3,240,0,3,240,0,7,240,0,7,224,0,15,224, + 0,15,192,0,15,192,0,31,192,0,20,30,90,23,1,1, + 7,254,0,31,255,128,63,255,192,127,255,224,127,255,224,126, + 7,224,124,3,224,124,3,224,124,3,224,124,3,224,126,7, + 224,127,15,192,63,255,128,15,255,0,7,252,0,31,255,0, + 63,255,192,127,15,224,124,7,224,252,3,240,252,3,240,248, + 1,240,248,3,240,252,3,240,252,3,240,254,7,240,127,255, + 224,63,255,192,31,255,128,15,255,0,20,30,90,23,1,1, + 3,252,0,15,255,0,31,255,128,63,255,192,127,255,192,126, + 7,224,252,7,224,252,3,224,252,3,240,248,3,240,248,3, + 240,252,3,240,252,7,240,124,7,240,127,15,240,63,255,240, + 63,253,240,31,249,240,7,225,240,0,3,240,0,3,224,0, + 3,224,0,3,224,124,7,224,124,7,192,126,15,192,63,255, + 128,31,255,0,15,254,0,7,252,0,5,20,20,12,5,0, + 248,248,248,248,248,0,0,0,0,0,0,0,0,0,0,248, + 248,248,248,248,9,25,50,13,2,251,31,0,31,0,31,0, + 31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,31,128,31,0,63,0,62,0, + 62,0,124,0,124,0,120,0,248,0,240,0,24,21,63,40, + 8,2,0,0,1,0,0,15,0,0,63,0,1,252,0,7, + 224,0,63,0,0,252,0,7,224,0,63,0,0,252,0,0, + 224,0,0,248,0,0,126,0,0,15,192,0,3,240,0,0, + 126,0,0,31,192,0,3,240,0,0,126,0,0,31,0,0, + 3,24,10,30,40,8,7,255,255,255,255,255,255,255,255,255, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,255,255,255,255,24,21,63,40,8,2,128,0,0,240,0, + 0,252,0,0,63,128,0,7,224,0,0,252,0,0,63,0, + 0,7,224,0,0,252,0,0,63,0,0,7,0,0,31,0, + 0,126,0,3,240,0,15,192,0,126,0,3,248,0,15,192, + 0,126,0,0,248,0,0,192,0,0,18,30,90,22,1,1, + 7,252,0,31,254,0,63,255,128,127,255,128,252,15,192,120, + 7,192,56,7,192,0,7,192,0,7,192,0,15,192,0,15, + 128,0,31,128,0,63,0,0,126,0,0,248,0,1,240,0, + 3,224,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,0,0,0,0,0,0,0,0,0,3,224,0,3,224, + 0,3,224,0,3,224,0,3,224,0,38,39,195,42,2,248, + 0,3,255,224,0,0,31,255,248,0,0,127,255,254,0,0, + 255,255,255,0,3,255,255,255,128,7,254,0,127,192,7,248, + 0,31,224,15,224,0,15,240,31,192,0,7,240,63,128,0, + 3,248,63,1,241,241,248,63,7,253,241,252,126,15,255,240, + 252,126,31,255,240,252,124,31,135,240,252,252,63,3,240,124, + 252,63,3,240,124,252,62,1,240,124,252,62,1,240,124,248, + 62,1,240,124,248,62,1,240,124,248,62,1,240,124,252,62, + 1,240,124,252,63,3,240,252,124,63,3,248,248,124,31,135, + 249,248,126,31,255,255,240,63,15,254,255,224,63,7,252,127, + 192,31,129,248,31,0,31,192,0,0,0,15,224,0,0,0, + 7,248,0,0,0,3,254,0,56,0,1,255,255,248,0,0, + 255,255,248,0,0,63,255,248,0,0,15,255,248,0,0,1, + 255,224,0,27,30,120,28,1,0,0,63,0,0,0,63,128, + 0,0,127,128,0,0,127,128,0,0,127,192,0,0,255,192, + 0,0,255,224,0,0,255,224,0,1,251,224,0,1,243,240, + 0,3,243,240,0,3,241,240,0,3,225,248,0,7,225,248, + 0,7,224,248,0,7,192,252,0,15,192,252,0,15,192,126, + 0,15,128,126,0,31,255,254,0,31,255,255,0,63,255,255, + 0,63,255,255,0,63,255,255,128,126,0,31,128,126,0,31, + 128,126,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 224,22,30,90,27,3,0,255,254,0,255,255,128,255,255,224, + 255,255,224,255,255,240,248,7,240,248,3,240,248,1,240,248, + 1,240,248,1,240,248,3,240,248,7,224,255,255,192,255,255, + 128,255,254,0,255,255,192,255,255,240,248,3,248,248,1,248, + 248,0,252,248,0,252,248,0,252,248,0,252,248,1,252,248, + 3,252,255,255,248,255,255,240,255,255,224,255,255,192,255,255, + 0,24,30,90,29,2,1,1,255,192,3,255,240,15,255,248, + 15,255,252,31,255,254,63,128,254,62,0,127,126,0,63,124, + 0,63,124,0,63,252,0,0,252,0,0,252,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,252,0,0, + 252,0,0,124,0,63,124,0,63,126,0,127,62,0,127,63, + 128,254,31,255,254,31,255,252,15,255,248,7,255,224,1,255, + 192,24,30,90,29,3,0,255,248,0,255,255,0,255,255,192, + 255,255,224,255,255,240,248,15,248,248,1,252,248,0,252,248, + 0,126,248,0,126,248,0,62,248,0,63,248,0,63,248,0, + 63,248,0,31,248,0,31,248,0,63,248,0,63,248,0,63, + 248,0,63,248,0,126,248,0,126,248,0,252,248,1,252,248, + 15,248,255,255,240,255,255,224,255,255,192,255,255,0,255,248, + 0,20,30,90,25,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,240,255,255,240,255,255,240,255,255,240,255,255, + 240,19,30,90,24,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,26,30,120,30,2,1,0,127,240,0,1,255,252,0,3, + 255,254,0,15,255,255,0,15,255,255,128,31,192,63,128,63, + 128,15,192,63,0,15,192,126,0,15,192,126,0,7,192,124, + 0,0,0,252,0,0,0,252,0,0,0,252,0,0,0,248, + 1,255,192,248,1,255,192,248,1,255,192,252,1,255,192,252, + 1,255,192,252,0,7,192,124,0,7,192,126,0,7,192,127, + 0,7,192,63,128,7,192,63,224,7,192,31,255,255,192,15, + 255,255,192,7,255,255,192,1,255,255,192,0,127,254,0,23, + 30,90,29,3,0,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,255,255,254,255,255,254,255, + 255,254,255,255,254,255,255,254,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,5, + 30,30,11,3,0,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,20,30,90,25,2,0,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,248,1,240,248,3,240,252,3,240,252,3, + 240,254,7,224,127,255,224,127,255,192,63,255,128,31,255,0, + 15,254,0,23,30,90,27,3,0,248,1,248,248,3,248,248, + 7,240,248,15,224,248,15,192,248,31,192,248,63,128,248,127, + 0,248,126,0,248,254,0,249,252,0,251,248,0,251,240,0, + 255,240,0,255,240,0,251,248,0,249,252,0,249,254,0,248, + 254,0,248,127,0,248,127,128,248,63,128,248,31,192,248,31, + 224,248,15,224,248,7,240,248,7,248,248,3,248,248,1,252, + 248,0,254,19,30,90,23,3,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,224,255,255,224,255,255,224,255,255,224, + 255,255,224,31,30,120,37,3,0,255,192,3,254,255,192,3, + 254,255,192,7,254,255,192,7,254,255,224,7,254,251,224,15, + 254,251,224,15,254,251,240,15,190,251,240,15,190,249,240,31, + 190,249,240,31,62,249,248,31,62,248,248,63,62,248,248,63, + 62,248,252,62,62,248,124,126,62,248,124,126,62,248,126,124, + 62,248,126,124,62,248,62,252,62,248,62,248,62,248,63,248, + 62,248,31,248,62,248,31,248,62,248,31,240,62,248,31,240, + 62,248,15,240,62,248,15,224,62,248,15,224,62,248,7,224, + 62,25,30,120,31,3,0,255,128,15,128,255,128,15,128,255, + 128,15,128,255,192,15,128,255,192,15,128,255,224,15,128,251, + 224,15,128,251,240,15,128,249,240,15,128,249,248,15,128,248, + 248,15,128,248,252,15,128,248,252,15,128,248,126,15,128,248, + 126,15,128,248,63,15,128,248,63,15,128,248,31,143,128,248, + 31,143,128,248,15,143,128,248,15,207,128,248,7,207,128,248, + 7,239,128,248,3,239,128,248,3,255,128,248,1,255,128,248, + 1,255,128,248,0,255,128,248,0,255,128,248,0,127,128,27, + 30,120,31,2,1,0,255,224,0,3,255,248,0,7,255,252, + 0,15,255,254,0,31,255,255,0,63,192,127,128,63,0,31, + 128,127,0,31,192,126,0,15,192,126,0,15,192,252,0,15, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,15,224,126,0,15,192,126,0,15,192,127,0,31, + 192,63,0,31,128,63,192,127,128,31,255,255,0,15,255,254, + 0,7,255,252,0,3,255,248,0,0,255,224,0,21,30,90, + 26,3,0,255,252,0,255,255,128,255,255,192,255,255,224,255, + 255,240,248,7,240,248,3,248,248,1,248,248,1,248,248,0, + 248,248,1,248,248,1,248,248,1,248,248,7,240,255,255,240, + 255,255,224,255,255,192,255,255,128,255,252,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,30,30,120, + 33,2,1,0,255,224,0,3,255,248,0,7,255,252,0,15, + 255,254,0,31,255,255,0,63,192,127,128,63,0,31,128,127, + 0,31,192,126,0,15,192,126,0,15,192,252,0,15,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,192,126,0,15,192,126,0,15,192,127,0,31,128,63, + 0,31,128,63,192,127,0,31,255,254,252,15,255,255,252,7, + 255,255,252,3,255,255,252,0,255,255,252,23,30,90,27,3, + 0,255,255,0,255,255,224,255,255,240,255,255,248,255,255,248, + 248,3,252,248,1,252,248,0,252,248,0,124,248,0,124,248, + 0,252,248,1,248,248,7,240,255,255,224,255,255,192,255,255, + 128,255,255,224,255,255,240,248,3,248,248,1,248,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,252,248,0,252,248, + 0,252,248,0,252,248,0,124,248,0,126,23,30,90,27,2, + 1,1,255,128,7,255,224,15,255,240,31,255,240,63,255,248, + 63,1,248,126,0,252,126,0,252,124,0,124,126,0,0,126, + 0,0,63,128,0,63,240,0,31,254,0,15,255,192,3,255, + 240,0,127,248,0,7,252,0,1,252,0,0,126,248,0,126, + 248,0,62,252,0,126,252,0,126,126,0,252,127,255,252,63, + 255,248,31,255,240,15,255,224,3,255,128,23,30,90,25,1, + 0,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,24,30,90,30,3, + 0,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,252,0,31,252,0,31, + 252,0,63,124,0,63,126,0,126,127,0,254,63,255,252,31, + 255,252,31,255,248,7,255,224,1,255,192,28,30,120,30,1, + 0,252,0,3,240,252,0,7,240,254,0,7,224,126,0,7, + 224,126,0,15,192,127,0,15,192,63,0,31,192,63,0,31, + 128,63,128,31,128,31,128,63,128,31,128,63,0,31,192,63, + 0,15,192,127,0,15,192,126,0,7,224,126,0,7,224,252, + 0,7,224,252,0,3,240,252,0,3,241,248,0,3,249,248, + 0,1,249,248,0,1,251,240,0,1,255,240,0,0,255,240, + 0,0,255,224,0,0,255,224,0,0,127,192,0,0,127,192, + 0,0,127,192,0,0,63,128,0,38,30,150,40,1,0,252, + 0,252,0,252,252,1,254,0,252,252,1,254,0,252,252,1, + 254,1,252,254,1,254,1,252,126,3,255,1,248,126,3,255, + 1,248,126,3,255,1,248,126,3,255,1,248,63,7,255,131, + 240,63,7,207,131,240,63,7,207,131,240,63,7,207,131,240, + 31,15,207,195,224,31,143,135,199,224,31,143,135,199,224,31, + 143,135,199,224,15,159,135,231,192,15,159,3,231,192,15,223, + 3,239,192,15,223,3,239,192,7,255,3,255,128,7,254,1, + 255,128,7,254,1,255,128,7,254,1,255,128,3,254,1,255, + 0,3,252,0,255,0,3,252,0,255,0,3,252,0,255,0, + 3,252,0,255,0,26,30,120,28,1,0,126,0,31,128,127, + 0,63,128,63,128,63,0,63,128,126,0,31,192,126,0,15, + 192,252,0,15,225,248,0,7,241,248,0,3,243,240,0,3, + 251,224,0,1,255,224,0,0,255,192,0,0,255,128,0,0, + 127,128,0,0,127,0,0,0,127,128,0,0,255,128,0,1, + 255,192,0,1,255,224,0,3,247,224,0,3,227,240,0,7, + 227,248,0,15,193,248,0,15,129,252,0,31,128,254,0,63, + 0,126,0,63,0,127,0,126,0,63,128,252,0,31,128,252, + 0,31,192,24,30,90,25,1,0,252,0,127,254,0,126,126, + 0,254,127,0,252,63,1,252,63,1,248,31,131,248,31,131, + 240,15,195,240,15,199,224,7,231,224,7,239,192,3,255,192, + 3,255,128,1,255,128,1,255,0,0,255,0,0,254,0,0, + 126,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,22,30,90,26,2,0,127,255,252,127,255,252,127, + 255,252,127,255,252,127,255,252,0,1,252,0,3,248,0,7, + 240,0,15,240,0,31,224,0,31,192,0,63,128,0,127,128, + 0,255,0,0,254,0,1,252,0,3,252,0,7,248,0,7, + 240,0,15,224,0,31,224,0,63,192,0,63,128,0,127,0, + 0,255,0,0,255,255,252,255,255,252,255,255,252,255,255,252, + 255,255,252,9,38,76,15,3,248,255,128,255,128,255,128,255, + 128,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,255,128,255, + 128,255,128,255,128,13,32,64,17,2,254,240,0,240,0,120, + 0,120,0,120,0,120,0,60,0,60,0,60,0,30,0,30, + 0,30,0,14,0,15,0,15,0,15,0,7,128,7,128,7, + 128,3,192,3,192,3,192,3,192,1,224,1,224,1,224,0, + 240,0,240,0,240,0,112,0,120,0,120,9,38,76,15,3, + 248,255,128,255,128,255,128,255,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,255,128,255,128,255,128,20,25,75, + 40,10,0,0,96,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,152,0,3,156,0,3,12,0,3,12,0,7,14, + 0,6,6,0,6,6,0,14,7,0,12,3,0,28,3,128, + 28,1,128,24,1,128,56,1,192,48,0,192,48,0,192,112, + 0,224,96,0,96,224,0,112,224,0,112,192,0,48,20,4, + 12,20,0,250,255,255,240,255,255,240,255,255,240,255,255,240, + 9,8,16,10,255,25,248,0,124,0,60,0,62,0,30,0, + 15,0,7,0,3,128,19,20,60,22,2,1,15,254,0,31, + 255,0,63,255,128,126,15,128,124,15,192,0,7,192,0,127, + 192,15,255,192,63,255,192,127,255,192,127,7,192,252,7,192, + 252,7,192,248,15,192,248,15,192,252,15,192,254,31,192,127, + 255,192,63,247,192,31,227,224,20,30,90,25,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,254,0,251, + 255,128,255,255,192,255,15,192,254,7,224,252,3,224,252,3, + 240,252,3,240,252,3,240,248,1,240,248,1,240,248,3,240, + 252,3,240,252,3,240,252,3,224,254,7,224,255,15,192,251, + 255,192,251,255,128,248,254,0,17,20,60,21,2,1,15,252, + 0,31,254,0,63,255,0,126,63,0,124,31,128,124,31,128, + 252,15,128,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,252,15,128,252,31,128,124,31,128,126,63, + 0,63,255,0,31,254,0,15,252,0,20,30,90,25,2,0, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,7,249, + 240,31,253,240,63,255,240,63,15,240,126,7,240,124,3,240, + 252,3,240,252,3,240,252,3,240,248,1,240,248,1,240,248, + 3,240,252,3,240,252,3,240,124,3,240,126,7,240,63,15, + 240,63,253,240,31,249,240,7,241,240,19,20,60,22,2,1, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 7,192,252,7,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,7,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,14,30,60,15, + 1,1,3,252,7,252,15,252,15,192,15,128,15,128,15,128, + 15,128,15,128,15,128,255,248,255,248,255,248,255,248,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,20,28, + 84,25,2,249,7,249,240,31,253,240,63,255,240,63,15,240, + 126,7,240,124,3,240,252,3,240,252,3,240,252,3,240,248, + 1,240,248,1,240,248,3,240,252,3,240,252,3,240,124,7, + 240,126,7,240,63,255,240,63,253,240,15,249,240,3,225,240, + 0,3,240,0,3,240,124,3,240,126,7,224,63,255,224,63, + 255,192,31,255,128,3,252,0,18,30,90,24,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,255,0,251, + 255,128,255,255,192,255,31,192,254,15,192,252,7,192,252,7, + 192,252,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,6,30,30,10,2,0,252,252, + 252,252,252,0,0,0,0,0,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,124,124,124,124,124,124,7,39,39,13, + 4,247,126,126,126,126,126,0,0,0,0,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,126,254,254,254,252,248,18,30,90,22,3,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,31,192, + 248,31,128,248,63,0,248,126,0,248,252,0,249,252,0,249, + 248,0,251,240,0,255,224,0,255,240,0,251,240,0,249,248, + 0,249,252,0,248,252,0,248,126,0,248,127,0,248,63,0, + 248,31,128,248,31,192,248,15,192,5,30,30,11,3,0,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,31,20,80, + 37,3,1,248,255,15,240,249,255,159,252,251,255,191,252,255, + 31,248,254,254,15,240,126,252,7,224,62,252,7,224,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,18,20,60,24,3,1,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,20,60,24,2,1,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,28,84,25,3,249,248,254,0, + 249,255,128,251,255,192,255,15,192,254,7,224,252,3,224,252, + 3,240,252,3,240,252,3,240,248,1,240,248,1,240,252,3, + 240,252,3,240,252,3,240,252,3,224,254,7,224,255,15,192, + 255,255,192,251,255,128,249,254,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,20,28,84,25,2,249,7,241,240,31,253,240,63,253,240, + 63,15,240,126,7,240,124,3,240,252,3,240,252,3,240,248, + 3,240,248,1,240,248,1,240,252,3,240,252,3,240,252,3, + 240,124,3,240,126,7,240,63,15,240,63,255,240,31,253,240, + 7,249,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,12,20,40,16,3, + 1,248,240,249,240,251,240,255,240,255,240,255,0,254,0,252, + 0,252,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,17,20,60,21,2,1,15, + 252,0,63,254,0,127,255,0,126,31,128,124,31,128,124,15, + 128,126,0,0,127,128,0,63,248,0,63,254,0,7,255,0, + 0,255,128,0,31,128,0,15,128,248,15,128,252,15,128,126, + 31,128,127,255,0,63,254,0,31,252,0,15,26,52,17,1, + 0,0,128,1,128,7,128,15,128,15,128,15,128,255,252,255, + 252,255,252,255,252,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,192,15,224,7, + 254,7,254,1,254,18,20,60,24,3,0,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,252,7,192,252,15,192,252,15,192,254,31,192,127,255, + 192,63,247,192,31,231,192,20,20,60,22,1,0,248,3,240, + 252,3,240,252,3,224,124,7,224,126,7,224,126,7,192,62, + 15,192,63,15,192,31,15,128,31,31,128,31,159,0,15,159, + 0,15,191,0,15,254,0,7,254,0,7,254,0,3,252,0, + 3,252,0,3,248,0,1,248,0,33,20,100,34,1,0,248, + 7,224,31,128,248,15,240,31,0,252,15,240,31,0,252,15, + 240,63,0,124,15,248,62,0,126,31,248,62,0,126,31,248, + 126,0,62,31,124,126,0,62,62,124,124,0,63,62,124,124, + 0,31,62,126,252,0,31,124,62,248,0,31,252,62,248,0, + 15,252,63,248,0,15,252,31,240,0,15,248,31,240,0,15, + 248,31,240,0,7,248,15,240,0,7,240,15,224,0,7,240, + 15,224,0,20,20,60,22,1,0,254,3,224,126,7,224,63, + 15,192,31,143,128,31,159,128,15,223,0,7,254,0,7,254, + 0,3,252,0,3,252,0,3,252,0,7,254,0,15,255,0, + 15,191,0,31,159,128,63,31,192,62,15,192,126,7,224,252, + 7,224,252,3,240,20,28,84,22,1,248,252,3,240,252,3, + 240,252,3,224,126,7,224,126,7,224,63,7,192,63,15,192, + 63,15,192,31,143,128,31,159,128,15,159,128,15,223,0,15, + 255,0,7,255,0,7,254,0,3,254,0,3,252,0,3,252, + 0,1,252,0,1,248,0,1,248,0,1,248,0,1,240,0, + 3,240,0,3,240,0,7,224,0,7,224,0,7,224,0,17, + 20,60,21,2,0,255,255,0,255,255,0,255,255,0,255,255, + 0,0,63,0,0,126,0,0,252,0,1,248,0,3,240,0, + 7,240,0,15,224,0,15,192,0,31,128,0,63,0,0,126, + 0,0,252,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,15,41,82,20,3,246,0,2,0,254,1,254,3,254,7, + 240,7,224,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,15,192,15,128,63,128,254,0,252, + 0,254,0,255,0,63,128,15,128,15,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,224,7, + 224,3,254,3,254,1,254,0,62,3,43,43,13,5,245,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,15,40,80,20,3,247, + 252,0,255,0,255,0,31,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,192,15,192,7,224, + 7,224,3,248,1,254,0,126,0,254,3,252,7,224,7,192, + 7,192,15,192,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,31,128,255,128,255,0,254,0,248,0, + 21,5,15,21,0,8,15,192,120,63,255,248,127,255,240,127, + 255,224,240,31,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--49-490-72-72-P-242-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 35 + Calculated Max Values w=29 h=39 x=10 y=17 dx=49 dy= 0 ascent=36 len=140 + Font Bounding box w=72 h=65 x=-4 y=-13 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =35 descent= 0 + X Font ascent =35 descent= 0 + Max Font ascent =36 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub35n[1667] U8G_SECTION(".progmem.u8g_font_fub35n") = { + 0,72,65,252,243,35,0,0,0,0,42,57,0,36,250,35, + 0,20,18,54,32,6,17,7,14,0,31,15,128,31,159,128, + 15,159,0,7,158,0,3,252,0,129,248,16,254,247,240,255, + 255,240,255,255,240,249,249,240,1,248,0,3,252,0,7,158, + 0,15,159,0,31,143,128,31,15,128,7,14,0,29,29,116, + 49,10,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,255,255,255,248,255,255,255,248,255, + 255,255,248,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,11,12,24,15,2,250,15,224,15, + 192,31,192,31,128,31,128,63,0,63,0,62,0,126,0,124, + 0,124,0,248,0,13,6,12,17,2,9,255,248,255,248,255, + 248,255,248,255,248,255,248,7,6,6,15,5,0,254,254,254, + 254,254,254,17,39,117,21,2,253,0,15,128,0,15,0,0, + 31,0,0,31,0,0,30,0,0,62,0,0,62,0,0,62, + 0,0,124,0,0,124,0,0,124,0,0,120,0,0,248,0, + 0,248,0,0,240,0,1,240,0,1,240,0,1,240,0,3, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,128,0,15,128,0,31,0,0, + 31,0,0,31,0,0,62,0,0,62,0,0,62,0,0,60, + 0,0,124,0,0,124,0,0,124,0,0,248,0,0,25,35, + 140,28,2,1,1,255,128,0,7,255,224,0,15,255,240,0, + 31,255,248,0,31,255,252,0,63,129,252,0,63,0,254,0, + 127,0,126,0,126,0,126,0,126,0,63,0,126,0,63,0, + 254,0,63,0,254,0,63,0,254,0,63,0,254,0,63,128, + 254,0,63,128,254,0,63,128,254,0,63,128,254,0,63,128, + 254,0,63,128,254,0,63,128,254,0,63,0,254,0,63,0, + 254,0,63,0,126,0,63,0,126,0,63,0,126,0,127,0, + 127,0,126,0,63,0,254,0,63,129,252,0,31,255,252,0, + 31,255,248,0,15,255,240,0,7,255,224,0,1,255,128,0, + 15,35,70,28,5,0,0,254,1,254,7,254,15,254,63,254, + 255,254,255,254,254,254,252,254,240,254,192,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,25,35,140,28, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,255,255,0,63,192,255,0,63,128,63,128,63,0, + 63,128,127,0,63,128,0,0,63,128,0,0,63,128,0,0, + 63,128,0,0,127,0,0,0,127,0,0,0,255,0,0,1, + 254,0,0,3,252,0,0,7,252,0,0,15,248,0,0,31, + 240,0,0,63,224,0,0,127,192,0,1,255,0,0,3,254, + 0,0,7,252,0,0,15,240,0,0,63,224,0,0,127,128, + 0,0,255,0,0,0,255,255,255,128,255,255,255,128,255,255, + 255,128,255,255,255,128,255,255,255,128,255,255,255,128,24,35, + 105,28,2,1,3,255,128,15,255,224,31,255,240,63,255,248, + 127,255,252,127,3,252,254,1,252,254,0,252,254,0,254,0, + 0,254,0,0,254,0,1,252,0,1,252,0,15,248,0,255, + 240,0,255,192,0,255,128,0,255,224,0,255,248,0,3,252, + 0,0,254,0,0,254,0,0,126,0,0,127,0,0,127,254, + 0,127,254,0,127,254,0,254,255,0,254,127,1,252,127,255, + 252,63,255,248,31,255,240,15,255,224,3,255,128,26,35,140, + 28,1,0,0,7,252,0,0,15,252,0,0,31,252,0,0, + 31,252,0,0,63,252,0,0,63,252,0,0,127,252,0,0, + 253,252,0,0,253,252,0,1,249,252,0,1,249,252,0,3, + 241,252,0,7,241,252,0,7,225,252,0,15,193,252,0,15, + 193,252,0,31,129,252,0,63,129,252,0,63,1,252,0,126, + 1,252,0,254,1,252,0,252,1,252,0,255,255,255,192,255, + 255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255, + 255,255,192,0,1,252,0,0,1,252,0,0,1,252,0,0, + 1,252,0,0,1,252,0,0,1,252,0,0,1,252,0,24, + 35,105,28,2,0,127,255,252,127,255,252,127,255,252,127,255, + 252,127,255,252,127,255,252,127,0,0,127,0,0,127,0,0, + 127,0,0,127,0,0,127,0,0,127,31,192,127,127,240,127, + 255,248,127,255,252,127,255,252,127,193,254,127,0,254,127,0, + 127,126,0,127,0,0,127,0,0,127,0,0,127,0,0,127, + 0,0,127,254,0,127,254,0,254,254,0,254,255,1,252,127, + 255,252,127,255,248,63,255,240,15,255,192,7,255,128,25,35, + 140,28,2,1,0,255,192,0,3,255,240,0,7,255,248,0, + 15,255,252,0,31,255,254,0,31,224,254,0,63,192,127,0, + 63,128,127,0,127,0,0,0,127,0,0,0,127,0,0,0, + 126,0,0,0,254,31,192,0,254,127,240,0,254,255,248,0, + 254,255,252,0,255,255,254,0,255,225,254,0,255,192,255,0, + 255,128,127,0,255,0,63,0,255,0,63,128,255,0,63,128, + 255,0,63,128,255,0,63,128,127,0,63,0,127,0,63,0, + 127,128,127,0,127,128,127,0,63,192,254,0,31,255,252,0, + 31,255,252,0,15,255,248,0,7,255,224,0,1,255,128,0, + 24,35,105,28,2,0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,127,0,0,127,0,0, + 254,0,0,254,0,1,254,0,1,252,0,3,252,0,3,248, + 0,7,248,0,7,240,0,15,240,0,15,240,0,31,224,0, + 31,224,0,63,192,0,63,192,0,63,128,0,127,128,0,127, + 0,0,255,0,0,255,0,1,254,0,1,254,0,3,252,0, + 3,252,0,7,248,0,7,248,0,15,248,0,15,240,0,25, + 35,140,28,2,1,3,255,192,0,15,255,240,0,31,255,252, + 0,63,255,254,0,63,255,254,0,127,193,255,0,127,128,255, + 0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 0,127,0,127,0,63,128,254,0,63,193,252,0,15,255,248, + 0,7,255,224,0,1,255,192,0,15,255,240,0,31,255,248, + 0,63,193,254,0,127,128,254,0,127,0,127,0,254,0,63, + 0,254,0,63,0,254,0,63,128,254,0,63,128,254,0,63, + 128,255,0,127,128,255,0,127,0,127,128,255,0,127,255,255, + 0,63,255,254,0,63,255,252,0,15,255,248,0,3,255,224, + 0,25,35,140,28,2,1,1,255,192,0,7,255,224,0,15, + 255,248,0,31,255,252,0,63,255,252,0,127,129,254,0,127, + 0,254,0,126,0,255,0,254,0,127,0,254,0,127,0,254, + 0,127,128,254,0,127,128,254,0,127,128,254,0,127,128,254, + 0,255,128,127,0,255,128,127,131,255,128,63,255,255,128,63, + 255,191,128,31,255,191,128,15,255,63,128,1,248,63,128,0, + 0,63,0,0,0,127,0,0,0,127,0,0,0,127,0,127, + 0,254,0,127,0,254,0,127,1,254,0,63,131,252,0,31, + 255,252,0,31,255,248,0,15,255,240,0,7,255,224,0,1, + 255,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--58-580-72-72-P-286-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 42 + Calculated Max Values w=35 h=46 x=12 y=20 dx=59 dy= 0 ascent=43 len=176 + Font Bounding box w=87 h=77 x=-5 y=-15 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =42 descent= 0 + X Font ascent =42 descent= 0 + Max Font ascent =43 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub42n[2235] U8G_SECTION(".progmem.u8g_font_fub42n") = { + 0,87,77,251,241,42,0,0,0,0,42,57,0,43,248,42, + 0,23,23,69,37,7,20,0,130,0,3,131,128,15,131,224, + 31,199,224,15,199,224,7,199,192,3,239,128,1,239,0,0, + 254,0,248,254,62,255,255,254,255,255,254,255,255,254,254,124, + 254,128,254,2,1,239,0,3,239,128,7,239,192,7,199,192, + 15,199,224,31,131,240,7,131,192,1,131,0,35,35,175,59, + 12,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,255,255,255,255,224,255,255,255,255,224,255,255,255,255, + 224,255,255,255,255,224,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,12,15,30,18,3,248,15,240,15,240,15,224,31,224,31, + 192,31,192,63,128,63,128,63,0,127,0,126,0,126,0,124, + 0,252,0,252,0,15,8,16,19,2,11,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,8,8,8,18,6, + 0,255,255,255,255,255,255,255,255,19,46,138,25,3,253,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,0,0,63,0, + 0,63,0,0,62,0,0,126,0,0,126,0,0,124,0,0, + 252,0,0,252,0,0,252,0,0,248,0,1,248,0,1,248, + 0,1,240,0,3,240,0,3,240,0,3,240,0,7,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,15, + 128,0,31,128,0,31,128,0,31,128,0,63,0,0,63,0, + 0,63,0,0,62,0,0,126,0,0,126,0,0,124,0,0, + 252,0,0,252,0,0,252,0,0,29,44,176,33,2,255,0, + 31,192,0,0,255,248,0,3,255,252,0,7,255,255,0,15, + 255,255,128,15,255,255,128,31,240,255,192,63,192,63,192,63, + 192,63,224,63,128,31,224,127,128,31,240,127,0,31,240,127, + 0,15,240,127,0,15,240,255,0,15,240,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,127,0,15,240,127,0,15,240,127,0,15,240,127, + 0,31,240,127,128,31,240,63,128,31,224,63,192,63,224,63, + 192,63,192,31,240,255,192,15,255,255,128,15,255,255,0,7, + 255,255,0,3,255,254,0,0,255,248,0,0,31,192,0,18, + 42,126,33,6,0,0,63,192,0,127,192,0,255,192,3,255, + 192,15,255,192,63,255,192,255,255,192,255,255,192,255,255,192, + 255,63,192,254,63,192,248,63,192,224,63,192,0,63,192,0, + 63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63, + 192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192, + 0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0, + 63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63, + 192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192, + 0,63,192,29,43,172,33,2,0,0,15,240,0,0,127,254, + 0,1,255,255,0,3,255,255,128,7,255,255,192,15,255,255, + 224,31,248,63,240,31,240,31,240,31,224,15,240,63,192,7, + 248,63,192,7,248,63,192,7,248,0,0,7,248,0,0,7, + 248,0,0,15,248,0,0,15,240,0,0,31,240,0,0,31, + 240,0,0,63,224,0,0,127,224,0,0,255,192,0,1,255, + 128,0,3,255,128,0,7,255,0,0,15,254,0,0,31,252, + 0,0,63,248,0,0,127,240,0,0,255,224,0,1,255,128, + 0,3,255,0,0,15,254,0,0,31,252,0,0,63,240,0, + 0,127,224,0,0,255,192,0,0,255,255,255,248,255,255,255, + 248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255, + 248,255,255,255,248,28,44,176,33,3,255,0,127,192,0,3, + 255,248,0,7,255,252,0,31,255,255,0,63,255,255,0,63, + 255,255,128,127,224,255,192,127,192,127,192,255,128,63,192,255, + 0,31,224,255,0,31,224,255,0,31,224,0,0,31,224,0, + 0,31,224,0,0,31,224,0,0,63,192,0,0,127,192,0, + 3,255,128,0,127,255,0,0,127,252,0,0,127,240,0,0, + 127,248,0,0,127,254,0,0,127,255,128,0,0,255,192,0, + 0,63,224,0,0,31,224,0,0,31,224,0,0,15,240,0, + 0,15,240,0,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,31,224,255,128,31,224,127,192,63,224,127, + 224,255,192,63,255,255,128,63,255,255,0,31,255,254,0,15, + 255,252,0,3,255,248,0,0,127,192,0,31,42,168,33,1, + 0,0,1,255,192,0,1,255,192,0,3,255,192,0,7,255, + 192,0,7,255,192,0,15,255,192,0,15,255,192,0,31,255, + 192,0,63,255,192,0,63,191,192,0,127,63,192,0,255,63, + 192,0,254,63,192,1,254,63,192,1,252,63,192,3,248,63, + 192,7,248,63,192,7,240,63,192,15,240,63,192,31,224,63, + 192,31,192,63,192,63,192,63,192,63,128,63,192,127,128,63, + 192,255,0,63,192,255,0,63,192,255,255,255,254,255,255,255, + 254,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255, + 254,255,255,255,254,0,0,63,192,0,0,63,192,0,0,63, + 192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63, + 192,0,0,63,192,0,0,63,192,29,43,172,33,2,255,127, + 255,255,224,127,255,255,224,127,255,255,224,127,255,255,224,127, + 255,255,224,127,255,255,224,127,255,255,224,127,128,0,0,127, + 128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127, + 128,0,0,127,128,0,0,127,128,0,0,127,135,248,0,127, + 159,254,0,127,255,255,128,127,255,255,192,127,255,255,192,127, + 255,255,224,127,240,63,240,127,192,31,240,127,128,15,240,127, + 128,15,248,127,0,7,248,0,0,7,248,0,0,7,248,0, + 0,7,248,0,0,7,248,0,0,7,248,0,0,7,240,255, + 0,15,240,255,0,15,240,255,0,31,240,255,128,63,224,127, + 224,255,192,127,255,255,192,63,255,255,128,31,255,255,0,15, + 255,252,0,3,255,248,0,0,127,192,0,29,44,176,33,2, + 255,0,15,240,0,0,127,252,0,0,255,255,0,3,255,255, + 128,7,255,255,192,7,255,255,224,15,252,63,224,31,240,15, + 240,31,224,15,240,63,192,7,248,63,192,7,248,63,128,0, + 0,127,128,0,0,127,128,0,0,127,128,0,0,127,0,0, + 0,255,3,248,0,255,31,254,0,255,63,255,0,255,127,255, + 128,255,255,255,192,255,255,255,224,255,248,63,240,255,224,31, + 240,255,192,15,240,255,192,15,248,255,128,7,248,255,128,7, + 248,255,128,7,248,255,128,7,248,255,128,7,248,127,128,7, + 248,127,128,7,248,127,128,7,240,127,192,15,240,63,192,15, + 240,63,224,31,224,31,248,63,224,31,255,255,192,15,255,255, + 128,7,255,255,0,3,255,254,0,0,255,248,0,0,63,192, + 0,28,42,168,33,3,0,255,255,255,240,255,255,255,240,255, + 255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255, + 255,255,240,0,0,15,240,0,0,15,240,0,0,31,240,0, + 0,31,224,0,0,63,224,0,0,63,192,0,0,127,192,0, + 0,127,192,0,0,255,128,0,0,255,128,0,1,255,0,0, + 1,255,0,0,1,254,0,0,3,254,0,0,3,254,0,0, + 7,252,0,0,7,252,0,0,15,248,0,0,15,248,0,0, + 31,248,0,0,31,240,0,0,31,240,0,0,63,224,0,0, + 63,224,0,0,127,192,0,0,127,192,0,0,255,192,0,0, + 255,128,0,1,255,128,0,1,255,0,0,3,255,0,0,3, + 255,0,0,3,254,0,0,7,254,0,0,7,252,0,0,29, + 44,176,33,2,255,0,63,240,0,1,255,254,0,7,255,255, + 128,15,255,255,192,31,255,255,224,63,255,255,240,63,248,127, + 240,127,224,31,240,127,224,31,248,127,192,15,248,127,192,15, + 248,127,192,15,248,127,192,15,248,127,192,15,248,63,224,31, + 240,63,224,31,240,31,248,127,224,15,255,255,192,7,255,255, + 0,1,255,252,0,0,255,248,0,3,255,254,0,15,255,255, + 128,31,255,255,192,63,240,63,224,127,224,31,224,127,192,15, + 240,127,192,15,240,255,128,7,248,255,128,7,248,255,128,7, + 248,255,128,7,248,255,128,7,248,255,128,7,248,255,192,15, + 248,255,192,15,248,127,224,31,240,127,240,63,240,127,255,255, + 224,63,255,255,224,31,255,255,192,15,255,255,128,3,255,254, + 0,0,127,240,0,29,44,176,33,2,255,0,31,192,0,0, + 255,248,0,3,255,254,0,7,255,255,0,15,255,255,128,31, + 255,255,128,63,224,255,192,63,192,63,224,127,128,31,224,127, + 128,31,224,127,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,128,31,248,127,128,31,248,127,192,63,248,127, + 224,255,248,63,255,255,248,31,255,255,248,31,255,247,248,15, + 255,231,248,3,255,199,248,0,254,7,240,0,0,7,240,0, + 0,15,240,0,0,15,240,0,0,15,240,0,0,15,224,127, + 128,31,224,127,128,31,224,63,128,63,192,63,192,127,192,63, + 224,255,128,31,255,255,128,15,255,255,0,7,255,254,0,3, + 255,252,0,1,255,240,0,0,63,192,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--68-680-72-72-P-335-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 49 + Calculated Max Values w=41 h=54 x=14 y=23 dx=69 dy= 0 ascent=50 len=255 + Font Bounding box w=100 h=91 x=-5 y=-18 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =49 descent= 0 + X Font ascent =49 descent= 0 + Max Font ascent =50 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub49n[3074] U8G_SECTION(".progmem.u8g_font_fub49n") = { + 0,100,91,251,238,49,0,0,0,0,42,57,0,50,247,49, + 0,27,27,108,43,8,23,0,64,64,0,1,192,112,0,7, + 224,252,0,15,224,254,0,7,241,252,0,7,241,252,0,3, + 241,248,0,1,251,240,0,0,251,224,0,0,127,192,0,224, + 127,192,224,255,191,191,224,255,255,255,224,255,255,255,224,255, + 255,255,224,255,63,159,224,192,127,192,96,0,123,192,0,0, + 251,224,0,1,251,240,0,3,241,248,0,7,241,252,0,15, + 241,252,0,15,224,254,0,7,224,252,0,1,192,112,0,0, + 64,64,0,41,41,246,69,14,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,255,255,255,255,255, + 128,255,255,255,255,255,128,255,255,255,255,255,128,255,255,255, + 255,255,128,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,15, + 17,34,21,3,247,7,254,7,252,7,252,7,248,15,248,15, + 240,15,240,31,224,31,224,31,192,63,192,63,128,63,128,127, + 0,127,0,126,0,254,0,17,9,27,23,3,13,255,255,128, + 255,255,128,255,255,128,255,255,128,255,255,128,255,255,128,255, + 255,128,255,255,128,255,255,128,9,9,18,21,7,0,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 23,54,162,29,3,252,0,0,254,0,0,254,0,0,252,0, + 1,252,0,1,252,0,1,248,0,3,248,0,3,248,0,3, + 248,0,7,240,0,7,240,0,7,240,0,7,224,0,15,224, + 0,15,224,0,15,192,0,31,192,0,31,192,0,31,192,0, + 63,128,0,63,128,0,63,128,0,63,0,0,127,0,0,127, + 0,0,126,0,0,254,0,0,254,0,0,254,0,1,252,0, + 1,252,0,1,252,0,1,248,0,3,248,0,3,248,0,3, + 240,0,7,240,0,7,240,0,7,240,0,15,224,0,15,224, + 0,15,224,0,15,192,0,31,192,0,31,192,0,31,128,0, + 63,128,0,63,128,0,63,0,0,127,0,0,127,0,0,127, + 0,0,126,0,0,254,0,0,34,51,255,39,2,255,0,7, + 248,0,0,0,63,255,0,0,0,255,255,192,0,1,255,255, + 224,0,3,255,255,240,0,7,255,255,248,0,15,255,255,252, + 0,15,254,31,252,0,31,248,7,254,0,31,240,3,254,0, + 63,240,3,255,0,63,224,1,255,0,63,224,1,255,0,127, + 224,1,255,128,127,192,0,255,128,127,192,0,255,128,127,192, + 0,255,128,255,192,0,255,128,255,192,0,255,192,255,192,0, + 255,192,255,192,0,255,192,255,192,0,255,192,255,192,0,255, + 192,255,192,0,255,192,255,192,0,255,192,255,192,0,255,192, + 255,192,0,255,192,255,192,0,255,192,255,192,0,255,192,255, + 192,0,255,192,255,192,0,255,192,255,192,0,255,192,255,192, + 0,255,192,255,192,0,255,128,127,192,0,255,128,127,192,0, + 255,128,127,192,0,255,128,127,224,1,255,128,63,224,1,255, + 0,63,224,1,255,0,63,240,3,255,0,31,240,3,254,0, + 31,248,7,254,0,15,254,31,252,0,15,255,255,252,0,7, + 255,255,248,0,3,255,255,240,0,1,255,255,224,0,0,255, + 255,192,0,0,63,255,0,0,0,7,248,0,0,20,49,147, + 39,7,0,0,31,240,0,63,240,0,127,240,1,255,240,3, + 255,240,15,255,240,63,255,240,255,255,240,255,255,240,255,255, + 240,255,223,240,255,159,240,254,31,240,248,31,240,224,31,240, + 128,31,240,0,31,240,0,31,240,0,31,240,0,31,240,0, + 31,240,0,31,240,0,31,240,0,31,240,0,31,240,0,31, + 240,0,31,240,0,31,240,0,31,240,0,31,240,0,31,240, + 0,31,240,0,31,240,0,31,240,0,31,240,0,31,240,0, + 31,240,0,31,240,0,31,240,0,31,240,0,31,240,0,31, + 240,0,31,240,0,31,240,0,31,240,0,31,240,0,31,240, + 0,31,240,0,31,240,34,50,250,39,2,0,0,3,254,0, + 0,0,31,255,192,0,0,127,255,240,0,0,255,255,248,0, + 3,255,255,254,0,7,255,255,254,0,7,255,255,255,0,15, + 255,255,255,128,31,255,7,255,128,31,252,1,255,192,31,248, + 0,255,192,63,248,0,255,192,63,240,0,127,192,63,240,0, + 127,192,63,240,0,127,192,0,0,0,127,192,0,0,0,127, + 192,0,0,0,255,192,0,0,0,255,128,0,0,1,255,128, + 0,0,1,255,128,0,0,3,255,0,0,0,7,255,0,0, + 0,15,254,0,0,0,31,254,0,0,0,63,252,0,0,0, + 127,248,0,0,0,255,240,0,0,1,255,224,0,0,3,255, + 192,0,0,7,255,128,0,0,15,255,0,0,0,31,254,0, + 0,0,63,252,0,0,0,255,248,0,0,1,255,224,0,0, + 3,255,192,0,0,7,255,128,0,0,31,254,0,0,0,63, + 252,0,0,0,127,248,0,0,0,255,224,0,0,0,255,255, + 255,255,192,255,255,255,255,192,255,255,255,255,192,255,255,255, + 255,192,255,255,255,255,192,255,255,255,255,192,255,255,255,255, + 192,255,255,255,255,192,32,51,204,39,3,255,0,31,248,0, + 0,255,255,0,3,255,255,128,7,255,255,224,15,255,255,240, + 31,255,255,248,63,255,255,248,127,255,255,252,127,248,31,252, + 127,224,15,254,255,192,7,254,255,192,3,254,255,128,3,254, + 255,128,3,254,0,0,3,254,0,0,3,254,0,0,3,254, + 0,0,7,254,0,0,15,252,0,0,127,252,0,63,255,248, + 0,63,255,224,0,63,255,192,0,63,254,0,0,63,255,0, + 0,63,255,192,0,63,255,240,0,63,255,248,0,0,63,252, + 0,0,7,254,0,0,3,254,0,0,3,255,0,0,1,255, + 0,0,1,255,0,0,1,255,0,0,1,255,255,128,1,255, + 255,128,1,255,255,128,1,255,255,192,3,255,255,192,3,254, + 127,224,7,254,127,224,15,254,127,248,31,252,63,255,255,248, + 63,255,255,240,31,255,255,240,15,255,255,192,3,255,255,128, + 1,255,254,0,0,31,240,0,36,50,250,39,2,0,0,0, + 63,252,0,0,0,127,252,0,0,0,127,252,0,0,0,255, + 252,0,0,0,255,252,0,0,1,255,252,0,0,3,255,252, + 0,0,3,255,252,0,0,7,255,252,0,0,7,255,252,0, + 0,15,247,252,0,0,31,247,252,0,0,31,231,252,0,0, + 63,199,252,0,0,127,199,252,0,0,127,135,252,0,0,255, + 135,252,0,0,255,7,252,0,1,255,7,252,0,3,254,7, + 252,0,3,252,7,252,0,7,252,7,252,0,7,248,7,252, + 0,15,248,7,252,0,31,240,7,252,0,31,240,7,252,0, + 63,224,7,252,0,63,192,7,252,0,127,192,7,252,0,255, + 128,7,252,0,255,128,7,252,0,255,255,255,255,240,255,255, + 255,255,240,255,255,255,255,240,255,255,255,255,240,255,255,255, + 255,240,255,255,255,255,240,255,255,255,255,240,255,255,255,255, + 240,0,0,7,252,0,0,0,7,252,0,0,0,7,252,0, + 0,0,7,252,0,0,0,7,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,252,0,0,0,7,252,0,0,0, + 7,252,0,0,0,7,252,0,33,50,250,39,3,255,127,255, + 255,254,0,127,255,255,254,0,127,255,255,254,0,127,255,255, + 254,0,127,255,255,254,0,127,255,255,254,0,127,255,255,254, + 0,127,255,255,254,0,127,192,0,0,0,127,192,0,0,0, + 127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,127, + 192,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192, + 0,0,0,127,193,255,0,0,127,199,255,192,0,127,223,255, + 240,0,127,255,255,248,0,127,255,255,252,0,127,255,255,254, + 0,127,255,255,254,0,127,252,15,255,0,127,240,3,255,0, + 127,224,3,255,0,127,192,1,255,128,127,192,1,255,128,0, + 0,0,255,128,0,0,0,255,128,0,0,0,255,128,0,0, + 0,255,128,0,0,0,255,128,0,0,0,255,128,0,0,0, + 255,128,0,0,0,255,128,255,128,1,255,128,255,128,1,255, + 0,255,192,3,255,0,255,192,3,254,0,127,224,15,254,0, + 127,248,63,252,0,127,255,255,252,0,63,255,255,248,0,31, + 255,255,240,0,15,255,255,224,0,7,255,255,128,0,1,255, + 254,0,0,0,63,240,0,0,34,51,255,39,2,255,0,3, + 252,0,0,0,31,255,128,0,0,127,255,224,0,0,255,255, + 240,0,1,255,255,248,0,3,255,255,252,0,7,255,255,254, + 0,7,255,255,254,0,15,255,7,255,0,31,252,3,255,0, + 31,248,1,255,128,31,248,0,255,128,63,240,0,255,128,63, + 224,0,0,0,63,224,0,0,0,127,224,0,0,0,127,192, + 0,0,0,127,192,0,0,0,127,192,127,0,0,127,195,255, + 224,0,255,199,255,240,0,255,207,255,248,0,255,223,255,252, + 0,255,191,255,254,0,255,255,255,255,0,255,254,15,255,0, + 255,248,3,255,128,255,248,3,255,128,255,240,1,255,128,255, + 240,1,255,192,255,224,0,255,192,255,224,0,255,192,255,224, + 0,255,192,255,224,0,255,192,255,224,0,255,192,127,224,0, + 255,192,127,224,0,255,192,127,224,0,255,192,127,224,0,255, + 128,63,240,1,255,128,63,240,1,255,128,63,248,3,255,0, + 31,248,3,255,0,31,254,15,254,0,15,255,255,254,0,7, + 255,255,252,0,3,255,255,248,0,1,255,255,240,0,0,255, + 255,192,0,0,63,255,0,0,0,7,248,0,0,33,49,245, + 39,3,0,255,255,255,255,128,255,255,255,255,128,255,255,255, + 255,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,255,255,255,255,128,0,0,0,255,128, + 0,0,1,255,128,0,0,1,255,128,0,0,3,255,0,0, + 0,3,255,0,0,0,7,254,0,0,0,7,254,0,0,0, + 15,254,0,0,0,15,252,0,0,0,31,252,0,0,0,31, + 248,0,0,0,31,248,0,0,0,63,240,0,0,0,63,240, + 0,0,0,127,240,0,0,0,127,224,0,0,0,255,224,0, + 0,0,255,192,0,0,1,255,192,0,0,1,255,192,0,0, + 3,255,128,0,0,3,255,128,0,0,3,255,0,0,0,7, + 255,0,0,0,7,254,0,0,0,15,254,0,0,0,15,254, + 0,0,0,31,252,0,0,0,31,252,0,0,0,63,248,0, + 0,0,63,248,0,0,0,63,248,0,0,0,127,240,0,0, + 0,127,240,0,0,0,255,224,0,0,0,255,224,0,0,1, + 255,192,0,0,1,255,192,0,0,3,255,192,0,0,3,255, + 128,0,0,7,255,128,0,0,34,51,255,39,2,255,0,15, + 252,0,0,0,255,255,192,0,3,255,255,240,0,7,255,255, + 248,0,15,255,255,252,0,31,255,255,254,0,63,255,255,255, + 0,63,255,255,255,0,63,252,15,255,0,127,248,7,255,128, + 127,240,3,255,128,127,224,1,255,128,127,224,1,255,128,127, + 224,1,255,128,127,224,1,255,128,127,224,1,255,128,127,224, + 1,255,128,63,240,3,255,0,63,248,7,255,0,31,252,15, + 254,0,15,255,255,252,0,7,255,255,240,0,1,255,255,192, + 0,0,63,255,0,0,0,255,255,128,0,3,255,255,224,0, + 7,255,255,248,0,31,255,255,252,0,63,252,15,254,0,63, + 248,7,255,0,127,240,3,255,0,127,224,1,255,128,127,224, + 1,255,128,255,192,0,255,192,255,192,0,255,192,255,192,0, + 255,192,255,192,0,255,192,255,192,0,255,192,255,192,0,255, + 192,255,224,1,255,192,255,224,1,255,192,255,240,3,255,192, + 127,240,7,255,128,127,252,15,255,128,63,255,255,255,0,63, + 255,255,255,0,31,255,255,254,0,15,255,255,252,0,3,255, + 255,240,0,0,255,255,192,0,0,15,252,0,0,34,51,255, + 39,2,255,0,7,248,0,0,0,63,255,0,0,0,255,255, + 192,0,3,255,255,224,0,7,255,255,240,0,15,255,255,248, + 0,31,255,255,252,0,31,255,255,254,0,63,248,31,254,0, + 63,240,7,255,0,127,224,7,255,0,127,192,3,255,0,127, + 192,3,255,128,255,192,1,255,128,255,128,1,255,128,255,128, + 1,255,128,255,128,1,255,192,255,128,1,255,192,255,128,1, + 255,192,255,192,1,255,192,255,192,3,255,192,255,192,3,255, + 192,127,224,7,255,192,127,240,7,255,192,127,248,31,255,192, + 63,255,255,255,192,31,255,255,127,192,31,255,254,255,192,15, + 255,252,255,192,3,255,252,255,192,1,255,240,255,192,0,127, + 192,255,128,0,0,0,255,128,0,0,0,255,128,0,0,1, + 255,128,0,0,1,255,128,0,0,1,255,0,0,0,1,255, + 0,127,192,3,255,0,127,192,3,254,0,127,224,7,254,0, + 63,224,15,254,0,63,240,15,252,0,31,248,63,252,0,31, + 255,255,248,0,15,255,255,240,0,7,255,255,224,0,3,255, + 255,192,0,1,255,255,128,0,0,127,254,0,0,0,15,240, + 0,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=16 x= 4 y=10 dx=15 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11[3712] U8G_SECTION(".progmem.u8g_font_fur11") = { + 0,20,20,255,252,11,2,81,4,211,32,255,253,16,252,11, + 253,0,0,0,5,0,0,1,11,11,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,5,5,5,7,1,6,216,216, + 152,152,144,9,11,22,11,1,0,9,0,9,0,19,0,127, + 128,18,0,38,0,255,0,36,0,100,0,72,0,72,0,7, + 14,14,9,1,255,16,16,120,148,148,144,240,124,22,18,146, + 214,124,16,12,11,22,14,1,0,112,128,152,128,137,0,137, + 0,154,0,116,224,5,176,9,16,9,16,17,48,16,224,9, + 11,22,11,1,0,56,0,68,0,68,0,120,0,113,0,217, + 0,137,0,143,0,134,0,199,0,125,128,2,5,5,6,2, + 6,192,128,128,128,128,2,14,14,6,2,253,64,64,192,128, + 128,128,128,128,128,128,128,192,64,64,2,14,14,5,2,253, + 128,128,128,192,64,64,64,64,64,64,192,128,128,128,6,5, + 5,10,2,5,72,48,252,48,120,9,9,18,15,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,2,4,4,4,1,254,192,192,128,128,4,1,1,6,1, + 3,240,1,2,2,4,2,0,128,128,4,12,12,6,1,255, + 16,16,16,32,32,32,64,64,64,64,128,128,6,11,11,8, + 1,0,120,200,140,132,132,132,132,132,140,200,120,4,11,11, + 8,2,0,48,112,208,16,16,16,16,16,16,16,16,6,11, + 11,8,1,0,120,204,196,4,12,24,16,48,96,192,252,7, + 11,11,8,0,0,60,70,194,6,24,4,6,2,194,70,60, + 7,11,11,8,1,0,12,28,20,36,100,68,196,254,4,4, + 4,6,11,11,8,1,0,248,128,128,184,204,132,4,4,140, + 200,112,7,11,11,8,1,0,60,198,134,128,188,198,130,130, + 130,198,60,7,11,11,8,1,0,254,6,6,4,12,8,24, + 24,16,48,48,6,11,11,8,1,0,120,204,132,204,112,200, + 132,132,132,204,120,7,11,11,8,1,0,124,198,130,130,198, + 122,2,6,134,204,120,1,8,8,4,2,0,128,128,0,0, + 0,0,128,128,2,10,10,4,1,254,64,64,0,0,0,0, + 64,192,192,128,9,8,16,15,3,1,0,128,3,0,28,0, + 96,0,128,0,112,0,14,0,1,128,9,4,8,15,3,3, + 255,128,0,0,0,0,255,128,9,8,16,15,3,1,128,0, + 96,0,28,0,3,0,0,128,7,0,56,0,192,0,7,11, + 11,8,0,0,60,198,2,6,4,8,16,16,16,0,16,13, + 14,28,15,1,253,15,128,48,96,96,16,206,144,153,152,144, + 136,144,136,144,136,145,152,153,144,206,96,96,0,48,0,15, + 128,11,11,22,11,0,0,6,0,14,0,10,0,27,0,25, + 0,49,128,49,128,63,192,96,192,64,64,192,96,8,11,11, + 10,1,0,252,134,130,130,134,252,130,129,129,131,254,8,11, + 11,10,1,0,62,99,193,128,128,128,128,128,193,67,62,8, + 11,11,10,1,0,248,134,130,131,129,129,129,131,130,134,248, + 6,11,11,9,1,0,252,128,128,128,128,252,128,128,128,128, + 252,6,11,11,8,1,0,252,128,128,128,128,252,128,128,128, + 128,128,9,11,22,11,1,0,30,0,97,128,192,128,128,0, + 128,0,135,128,128,128,128,128,192,128,96,128,63,128,8,11, + 11,10,1,0,129,129,129,129,129,255,129,129,129,129,129,1, + 11,11,3,1,0,128,128,128,128,128,128,128,128,128,128,128, + 6,11,11,8,1,0,4,4,4,4,4,4,4,4,132,140, + 120,8,11,11,9,1,0,134,140,152,176,224,224,176,152,140, + 134,131,6,11,11,7,1,0,128,128,128,128,128,128,128,128, + 128,128,252,11,11,22,13,1,0,192,96,224,224,224,160,161, + 160,177,160,145,32,147,32,154,32,138,32,142,32,132,32,8, + 11,11,10,1,0,193,225,225,177,177,153,137,141,133,135,131, + 9,11,22,11,1,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,7,11,11,9, + 1,0,252,134,130,130,134,252,128,128,128,128,128,10,11,22, + 12,1,0,62,0,99,0,193,128,129,128,128,128,128,128,128, + 128,129,128,193,128,99,0,63,192,7,11,11,9,1,0,252, + 134,130,130,134,248,132,134,134,130,130,8,11,11,10,1,0, + 60,194,131,128,240,126,7,1,129,195,124,9,11,22,11,1, + 0,255,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,11,11,10,1,0,129,129,129, + 129,129,129,129,129,131,194,60,9,11,22,10,0,0,192,128, + 65,128,97,128,97,0,35,0,51,0,18,0,22,0,30,0, + 12,0,12,0,14,11,22,15,0,0,195,4,67,140,67,140, + 102,136,38,136,36,216,52,80,60,80,24,80,24,112,24,32, + 9,11,22,11,1,0,193,0,99,0,38,0,52,0,28,0, + 24,0,60,0,38,0,98,0,195,0,129,128,9,11,22,10, + 1,0,193,128,65,0,99,0,38,0,52,0,28,0,8,0, + 8,0,8,0,8,0,8,0,8,11,11,10,1,0,127,3, + 6,6,12,24,56,48,96,224,255,3,14,14,6,2,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,224,4,12,12, + 6,1,255,128,128,128,64,64,64,32,32,32,32,16,16,3, + 14,14,6,1,253,224,32,32,32,32,32,32,32,32,32,32, + 32,32,224,7,10,10,15,4,0,16,16,40,40,72,68,68, + 130,130,130,8,1,1,8,0,254,255,2,3,3,3,0,9, + 128,192,64,6,8,8,8,1,0,120,204,4,124,196,132,140, + 116,7,11,11,9,1,0,128,128,128,188,198,134,130,130,134, + 196,184,6,8,8,8,1,0,120,204,132,128,128,132,204,120, + 7,11,11,9,1,0,2,2,2,122,198,134,130,130,134,198, + 58,6,8,8,8,1,0,120,196,132,252,128,132,204,120,5, + 11,11,7,1,0,56,32,32,248,32,32,32,32,32,32,32, + 7,11,11,9,1,253,122,198,134,130,130,134,198,122,6,198, + 120,6,11,11,8,1,0,128,128,128,184,204,132,132,132,132, + 132,132,1,11,11,3,1,0,128,0,0,128,128,128,128,128, + 128,128,128,2,14,14,4,1,253,64,0,0,64,64,64,64, + 64,64,64,64,64,64,192,6,11,11,7,1,0,128,128,128, + 136,144,160,224,160,176,152,140,1,11,11,3,1,0,128,128, + 128,128,128,128,128,128,128,128,128,11,8,16,13,1,0,185, + 192,206,96,132,32,132,32,132,32,132,32,132,32,132,32,6, + 8,8,8,1,0,184,204,132,132,132,132,132,132,7,8,8, + 9,1,0,120,196,134,130,130,134,196,120,7,11,11,9,1, + 253,188,198,134,130,130,134,198,188,128,128,128,7,11,11,9, + 1,253,122,198,134,130,130,134,198,122,2,2,2,4,8,8, + 5,1,0,240,192,128,128,128,128,128,128,6,8,8,8,1, + 0,120,140,128,240,28,4,140,120,4,10,10,6,1,0,32, + 32,240,32,32,32,32,32,32,48,6,8,8,8,1,0,132, + 132,132,132,132,132,204,116,8,8,8,8,0,0,195,66,102, + 36,36,60,24,24,12,8,16,12,0,0,198,48,70,48,79, + 32,105,32,41,96,41,192,56,192,16,192,7,8,8,8,1, + 0,196,76,120,48,48,120,204,134,8,11,11,8,0,253,195, + 66,102,38,52,60,24,24,24,16,48,5,8,8,7,1,0, + 248,24,16,32,96,64,192,248,5,15,15,7,1,252,24,48, + 32,32,32,32,96,192,96,32,32,32,32,48,24,1,16,16, + 6,3,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,15,15,7,1,252,192,96,32,32,32,32,48, + 24,48,32,32,32,32,96,192,8,2,2,8,0,3,115,206, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,5,0,0,1,11,11,5,2,253,128,0,0, + 128,128,128,128,128,128,128,128,6,12,12,8,1,254,8,8, + 120,220,148,144,160,164,236,120,64,64,7,11,11,9,1,0, + 60,102,64,64,248,64,64,64,64,64,254,8,9,9,10,1, + 2,129,90,36,66,66,66,36,90,129,8,11,11,9,0,0, + 65,99,34,231,20,28,255,8,8,8,8,1,14,14,6,3, + 253,128,128,128,128,128,128,0,0,128,128,128,128,128,128,5, + 14,14,7,1,253,120,136,128,192,112,216,136,152,240,48,24, + 8,24,240,4,1,1,4,0,10,144,11,11,22,13,1,0, + 31,0,127,128,115,64,225,96,160,32,160,32,161,32,179,96, + 94,64,96,128,31,0,6,8,8,6,0,3,56,72,120,72, + 88,104,0,252,6,6,6,8,1,1,36,72,216,216,72,36, + 8,3,3,10,1,4,255,1,1,255,11,11,22,13,1,0, + 31,0,127,128,81,64,209,96,158,32,147,32,145,32,209,96, + 64,64,97,128,31,0,4,1,1,4,0,10,240,3,4,4, + 5,1,7,224,160,160,224,9,10,20,15,3,0,8,0,8, + 0,8,0,255,128,8,0,8,0,8,0,0,0,0,0,255, + 128,4,6,6,6,1,5,112,144,48,96,192,240,5,6,6, + 6,0,5,120,200,24,48,136,112,3,3,3,3,1,9,96, + 64,128,255,7,14,14,9,1,253,126,244,244,244,244,116,20, + 20,20,20,20,20,20,20,1,2,2,4,2,4,128,128,4, + 3,3,5,1,253,48,16,224,3,6,6,5,1,5,96,160, + 32,32,32,32,5,8,8,7,1,3,112,216,136,136,216,112, + 0,248,6,6,6,8,1,1,216,72,36,36,72,216,10,11, + 22,12,1,0,97,0,162,0,34,0,36,0,36,0,41,128, + 9,128,18,128,51,192,32,128,96,128,11,11,22,13,1,0, + 96,128,161,0,34,0,34,0,36,0,37,192,9,32,24,96, + 16,192,33,128,97,224,11,11,22,12,0,0,120,128,9,128, + 49,0,27,0,138,0,116,192,4,192,9,64,11,224,16,64, + 48,64,6,11,11,8,1,253,16,0,16,16,48,96,192,128, + 132,236,120,11,16,32,11,0,0,24,0,8,0,4,0,0, + 0,0,0,6,0,14,0,10,0,27,0,25,0,49,128,49, + 128,63,192,96,192,64,64,192,96,11,16,32,11,0,0,3, + 0,2,0,4,0,0,0,0,0,6,0,14,0,10,0,27, + 0,25,0,49,128,49,128,63,192,96,192,64,64,192,96,11, + 16,32,11,0,0,4,0,14,0,9,0,0,0,0,0,6, + 0,14,0,10,0,27,0,25,0,49,128,49,128,63,192,96, + 192,64,64,192,96,11,15,30,11,0,0,13,0,22,0,0, + 0,0,0,6,0,14,0,10,0,27,0,25,0,49,128,49, + 128,63,192,96,192,64,64,192,96,11,14,28,11,0,0,9, + 0,0,0,0,0,6,0,14,0,11,0,27,0,25,0,17, + 128,48,128,63,192,96,192,64,96,192,96,11,16,32,11,0, + 0,14,0,10,0,14,0,0,0,0,0,4,0,12,0,10, + 0,10,0,17,0,17,0,49,128,63,128,96,192,64,64,192, + 96,13,11,22,14,0,0,3,248,5,0,13,0,13,0,25, + 0,25,248,49,0,63,0,97,0,65,0,193,248,8,15,15, + 10,1,252,62,97,193,128,128,128,128,128,193,67,62,12,6, + 2,28,6,16,16,9,1,0,64,32,16,0,0,252,128,128, + 128,128,252,128,128,128,128,252,6,16,16,9,1,0,8,16, + 16,0,0,252,128,128,128,128,252,128,128,128,128,252,6,16, + 16,9,1,0,48,48,72,0,0,252,128,128,128,128,252,128, + 128,128,128,252,6,15,15,8,1,0,72,0,0,0,252,128, + 128,128,128,252,128,128,128,128,252,3,16,16,3,255,0,192, + 64,32,0,0,32,32,32,32,32,32,32,32,32,32,32,3, + 16,16,3,1,0,96,192,128,0,0,128,128,128,128,128,128, + 128,128,128,128,128,3,16,16,3,0,0,64,224,160,0,0, + 64,64,64,64,64,64,64,64,64,64,64,4,14,14,4,0, + 0,144,0,0,64,64,64,64,64,64,64,64,64,64,64,10, + 11,22,11,0,0,62,0,33,128,32,128,32,192,32,64,248, + 64,32,64,32,192,32,128,33,128,62,0,8,15,15,10,1, + 0,52,44,0,0,193,225,225,177,177,153,137,141,133,135,131, + 9,16,32,11,1,0,48,0,16,0,8,0,0,0,0,0, + 62,0,99,0,193,128,129,128,128,128,128,128,128,128,129,128, + 193,0,99,0,62,0,9,16,32,11,1,0,4,0,12,0, + 8,0,0,0,0,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,9,16,32,11, + 1,0,8,0,28,0,20,0,0,0,0,0,62,0,99,0, + 193,128,129,128,128,128,128,128,128,128,129,128,193,0,99,0, + 62,0,9,15,30,11,1,0,24,0,44,0,0,0,0,0, + 62,0,99,0,193,128,128,128,128,128,128,128,128,128,129,128, + 193,0,119,0,62,0,9,15,30,11,1,0,18,0,0,0, + 0,0,0,0,62,0,99,0,193,128,129,128,128,128,128,128, + 128,128,129,128,193,0,99,0,62,0,7,7,7,15,4,1, + 130,68,40,16,40,68,130,9,13,26,11,1,255,0,128,63, + 0,99,0,195,128,134,128,140,128,136,128,152,128,177,128,225, + 0,99,0,254,0,128,0,8,16,16,10,1,0,32,16,24, + 0,0,129,129,129,129,129,129,129,129,195,230,60,8,16,16, + 10,1,0,12,8,16,0,0,129,129,129,129,129,129,129,129, + 195,230,60,8,16,16,10,1,0,24,24,36,0,0,129,129, + 129,129,129,129,129,129,195,230,60,8,15,15,10,1,0,36, + 0,0,0,129,129,129,129,129,129,129,129,131,194,60,9,16, + 32,10,1,0,6,0,4,0,8,0,0,0,0,0,193,128, + 65,0,99,0,38,0,52,0,28,0,8,0,8,0,8,0, + 8,0,8,0,7,11,11,9,1,0,128,128,252,134,130,130, + 134,252,128,128,128,7,11,11,8,1,0,120,204,132,140,144, + 144,156,134,130,178,156,6,12,12,8,1,0,32,16,16,0, + 120,204,4,124,196,132,140,116,6,13,13,8,1,0,24,16, + 48,32,0,120,204,4,124,196,132,140,116,6,12,12,8,1, + 0,48,104,72,0,120,204,4,124,196,132,140,116,6,11,11, + 8,1,0,120,0,0,120,204,4,124,196,132,140,116,6,11, + 11,8,1,0,72,0,0,120,204,4,124,196,132,140,116,6, + 13,13,8,1,0,48,72,72,48,0,120,196,4,124,196,132, + 140,116,12,8,16,13,1,0,251,192,138,32,4,48,127,240, + 196,0,140,48,202,96,113,192,6,12,12,8,1,252,120,204, + 132,128,128,132,204,120,48,24,8,48,6,13,13,8,1,0, + 64,32,32,16,0,120,196,132,252,128,132,204,120,6,13,13, + 8,1,0,8,16,16,32,0,120,196,132,252,128,132,204,120, + 6,12,12,8,1,0,48,104,72,0,120,196,132,252,128,132, + 204,120,6,11,11,8,1,0,72,0,0,120,204,132,252,128, + 132,204,120,2,12,12,3,0,0,128,64,64,0,64,64,64, + 64,64,64,64,64,3,12,12,3,0,0,32,64,128,0,64, + 64,64,64,64,64,64,64,5,12,12,3,255,0,112,80,136, + 0,32,32,32,32,32,32,32,32,4,11,11,4,0,0,144, + 0,0,64,64,64,64,64,64,64,64,7,11,11,9,1,0, + 104,112,136,124,198,134,130,130,134,196,120,6,11,11,8,1, + 0,120,0,0,184,204,132,132,132,132,132,132,7,13,13,9, + 1,0,96,32,16,16,0,120,196,134,130,130,134,196,120,7, + 13,13,9,1,0,12,24,16,32,0,120,196,134,130,130,134, + 196,120,7,12,12,9,1,0,56,40,68,0,120,196,134,130, + 130,134,196,120,7,11,11,9,1,0,120,0,0,120,196,134, + 130,130,134,196,120,7,11,11,9,1,0,72,0,0,120,196, + 134,130,130,134,196,120,9,7,14,15,3,1,8,0,8,0, + 0,0,255,128,0,0,8,0,8,0,8,10,10,9,0,255, + 1,62,98,71,73,89,83,98,124,192,6,13,13,8,1,0, + 64,32,32,16,0,132,132,132,132,132,132,204,116,6,13,13, + 8,1,0,24,16,48,32,0,132,132,132,132,132,132,204,116, + 6,12,12,8,1,0,48,80,72,0,132,132,132,132,132,132, + 204,116,6,11,11,8,1,0,72,0,0,132,132,132,132,132, + 132,204,116,8,15,15,8,0,253,4,8,16,0,195,66,102, + 38,52,60,24,24,24,80,112,7,14,14,9,1,253,128,128, + 128,188,198,134,130,130,134,198,188,128,128,128,8,14,14,8, + 0,253,36,0,0,195,66,102,36,36,60,24,24,24,16,48 + }; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 9 h=12 x= 3 y= 5 dx=15 dy= 0 ascent=11 len=18 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11n[265] U8G_SECTION(".progmem.u8g_font_fur11n") = { + 0,20,20,255,252,11,0,0,0,0,42,57,0,11,254,11, + 0,6,5,5,10,2,5,72,48,252,48,120,9,9,18,15, + 3,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,2,4,4,4,1,254,192,192,128,128,4,1, + 1,6,1,3,240,1,2,2,4,2,0,128,128,4,12,12, + 6,1,255,16,16,16,32,32,32,64,64,64,64,128,128,6, + 11,11,8,1,0,120,200,140,132,132,132,132,132,140,200,120, + 4,11,11,8,2,0,48,112,208,16,16,16,16,16,16,16, + 16,6,11,11,8,1,0,120,204,196,4,12,24,16,48,96, + 192,252,7,11,11,8,0,0,60,70,194,6,24,4,6,2, + 194,70,60,7,11,11,8,1,0,12,28,20,36,100,68,196, + 254,4,4,4,6,11,11,8,1,0,248,128,128,184,204,132, + 4,4,140,200,112,7,11,11,8,1,0,60,198,134,128,188, + 198,130,130,130,198,60,7,11,11,8,1,0,254,6,6,4, + 12,8,24,24,16,48,48,6,11,11,8,1,0,120,204,132, + 204,112,200,132,132,132,204,120,7,11,11,8,1,0,124,198, + 130,130,198,122,2,6,134,204,120}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=16 x= 4 y= 9 dx=15 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11r[1729] U8G_SECTION(".progmem.u8g_font_fur11r") = { + 0,20,20,255,252,11,2,81,4,211,32,127,253,13,252,11, + 253,0,0,0,5,0,0,1,11,11,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,5,5,5,7,1,6,216,216, + 152,152,144,9,11,22,11,1,0,9,0,9,0,19,0,127, + 128,18,0,38,0,255,0,36,0,100,0,72,0,72,0,7, + 14,14,9,1,255,16,16,120,148,148,144,240,124,22,18,146, + 214,124,16,12,11,22,14,1,0,112,128,152,128,137,0,137, + 0,154,0,116,224,5,176,9,16,9,16,17,48,16,224,9, + 11,22,11,1,0,56,0,68,0,68,0,120,0,113,0,217, + 0,137,0,143,0,134,0,199,0,125,128,2,5,5,6,2, + 6,192,128,128,128,128,2,14,14,6,2,253,64,64,192,128, + 128,128,128,128,128,128,128,192,64,64,2,14,14,5,2,253, + 128,128,128,192,64,64,64,64,64,64,192,128,128,128,6,5, + 5,10,2,5,72,48,252,48,120,9,9,18,15,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,2,4,4,4,1,254,192,192,128,128,4,1,1,6,1, + 3,240,1,2,2,4,2,0,128,128,4,12,12,6,1,255, + 16,16,16,32,32,32,64,64,64,64,128,128,6,11,11,8, + 1,0,120,200,140,132,132,132,132,132,140,200,120,4,11,11, + 8,2,0,48,112,208,16,16,16,16,16,16,16,16,6,11, + 11,8,1,0,120,204,196,4,12,24,16,48,96,192,252,7, + 11,11,8,0,0,60,70,194,6,24,4,6,2,194,70,60, + 7,11,11,8,1,0,12,28,20,36,100,68,196,254,4,4, + 4,6,11,11,8,1,0,248,128,128,184,204,132,4,4,140, + 200,112,7,11,11,8,1,0,60,198,134,128,188,198,130,130, + 130,198,60,7,11,11,8,1,0,254,6,6,4,12,8,24, + 24,16,48,48,6,11,11,8,1,0,120,204,132,204,112,200, + 132,132,132,204,120,7,11,11,8,1,0,124,198,130,130,198, + 122,2,6,134,204,120,1,8,8,4,2,0,128,128,0,0, + 0,0,128,128,2,10,10,4,1,254,64,64,0,0,0,0, + 64,192,192,128,9,8,16,15,3,1,0,128,3,0,28,0, + 96,0,128,0,112,0,14,0,1,128,9,4,8,15,3,3, + 255,128,0,0,0,0,255,128,9,8,16,15,3,1,128,0, + 96,0,28,0,3,0,0,128,7,0,56,0,192,0,7,11, + 11,8,0,0,60,198,2,6,4,8,16,16,16,0,16,13, + 14,28,15,1,253,15,128,48,96,96,16,206,144,153,152,144, + 136,144,136,144,136,145,152,153,144,206,96,96,0,48,0,15, + 128,11,11,22,11,0,0,6,0,14,0,10,0,27,0,25, + 0,49,128,49,128,63,192,96,192,64,64,192,96,8,11,11, + 10,1,0,252,134,130,130,134,252,130,129,129,131,254,8,11, + 11,10,1,0,62,99,193,128,128,128,128,128,193,67,62,8, + 11,11,10,1,0,248,134,130,131,129,129,129,131,130,134,248, + 6,11,11,9,1,0,252,128,128,128,128,252,128,128,128,128, + 252,6,11,11,8,1,0,252,128,128,128,128,252,128,128,128, + 128,128,9,11,22,11,1,0,30,0,97,128,192,128,128,0, + 128,0,135,128,128,128,128,128,192,128,96,128,63,128,8,11, + 11,10,1,0,129,129,129,129,129,255,129,129,129,129,129,1, + 11,11,3,1,0,128,128,128,128,128,128,128,128,128,128,128, + 6,11,11,8,1,0,4,4,4,4,4,4,4,4,132,140, + 120,8,11,11,9,1,0,134,140,152,176,224,224,176,152,140, + 134,131,6,11,11,7,1,0,128,128,128,128,128,128,128,128, + 128,128,252,11,11,22,13,1,0,192,96,224,224,224,160,161, + 160,177,160,145,32,147,32,154,32,138,32,142,32,132,32,8, + 11,11,10,1,0,193,225,225,177,177,153,137,141,133,135,131, + 9,11,22,11,1,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,7,11,11,9, + 1,0,252,134,130,130,134,252,128,128,128,128,128,10,11,22, + 12,1,0,62,0,99,0,193,128,129,128,128,128,128,128,128, + 128,129,128,193,128,99,0,63,192,7,11,11,9,1,0,252, + 134,130,130,134,248,132,134,134,130,130,8,11,11,10,1,0, + 60,194,131,128,240,126,7,1,129,195,124,9,11,22,11,1, + 0,255,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,11,11,10,1,0,129,129,129, + 129,129,129,129,129,131,194,60,9,11,22,10,0,0,192,128, + 65,128,97,128,97,0,35,0,51,0,18,0,22,0,30,0, + 12,0,12,0,14,11,22,15,0,0,195,4,67,140,67,140, + 102,136,38,136,36,216,52,80,60,80,24,80,24,112,24,32, + 9,11,22,11,1,0,193,0,99,0,38,0,52,0,28,0, + 24,0,60,0,38,0,98,0,195,0,129,128,9,11,22,10, + 1,0,193,128,65,0,99,0,38,0,52,0,28,0,8,0, + 8,0,8,0,8,0,8,0,8,11,11,10,1,0,127,3, + 6,6,12,24,56,48,96,224,255,3,14,14,6,2,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,224,4,12,12, + 6,1,255,128,128,128,64,64,64,32,32,32,32,16,16,3, + 14,14,6,1,253,224,32,32,32,32,32,32,32,32,32,32, + 32,32,224,7,10,10,15,4,0,16,16,40,40,72,68,68, + 130,130,130,8,1,1,8,0,254,255,2,3,3,3,0,9, + 128,192,64,6,8,8,8,1,0,120,204,4,124,196,132,140, + 116,7,11,11,9,1,0,128,128,128,188,198,134,130,130,134, + 196,184,6,8,8,8,1,0,120,204,132,128,128,132,204,120, + 7,11,11,9,1,0,2,2,2,122,198,134,130,130,134,198, + 58,6,8,8,8,1,0,120,196,132,252,128,132,204,120,5, + 11,11,7,1,0,56,32,32,248,32,32,32,32,32,32,32, + 7,11,11,9,1,253,122,198,134,130,130,134,198,122,6,198, + 120,6,11,11,8,1,0,128,128,128,184,204,132,132,132,132, + 132,132,1,11,11,3,1,0,128,0,0,128,128,128,128,128, + 128,128,128,2,14,14,4,1,253,64,0,0,64,64,64,64, + 64,64,64,64,64,64,192,6,11,11,7,1,0,128,128,128, + 136,144,160,224,160,176,152,140,1,11,11,3,1,0,128,128, + 128,128,128,128,128,128,128,128,128,11,8,16,13,1,0,185, + 192,206,96,132,32,132,32,132,32,132,32,132,32,132,32,6, + 8,8,8,1,0,184,204,132,132,132,132,132,132,7,8,8, + 9,1,0,120,196,134,130,130,134,196,120,7,11,11,9,1, + 253,188,198,134,130,130,134,198,188,128,128,128,7,11,11,9, + 1,253,122,198,134,130,130,134,198,122,2,2,2,4,8,8, + 5,1,0,240,192,128,128,128,128,128,128,6,8,8,8,1, + 0,120,140,128,240,28,4,140,120,4,10,10,6,1,0,32, + 32,240,32,32,32,32,32,32,48,6,8,8,8,1,0,132, + 132,132,132,132,132,204,116,8,8,8,8,0,0,195,66,102, + 36,36,60,24,24,12,8,16,12,0,0,198,48,70,48,79, + 32,105,32,41,96,41,192,56,192,16,192,7,8,8,8,1, + 0,196,76,120,48,48,120,204,134,8,11,11,8,0,253,195, + 66,102,38,52,60,24,24,24,16,48,5,8,8,7,1,0, + 248,24,16,32,96,64,192,248,5,15,15,7,1,252,24,48, + 32,32,32,32,96,192,96,32,32,32,32,48,24,1,16,16, + 6,3,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,15,15,7,1,252,192,96,32,32,32,32,48, + 24,48,32,32,32,32,96,192,8,2,2,8,0,3,115,206, + 255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=18 h=21 x= 5 y=13 dx=19 dy= 0 ascent=21 len=54 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14[5349] U8G_SECTION(".progmem.u8g_font_fur14") = { + 0,26,26,255,251,14,3,59,6,250,32,255,252,21,251,14, + 252,0,0,0,6,0,0,2,14,14,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,0,0,192,6,6,6,9,1, + 8,204,204,76,76,68,68,12,14,28,14,1,0,6,96,4, + 64,4,64,12,192,127,240,8,128,25,128,25,0,255,224,19, + 0,51,0,34,0,34,0,102,0,9,18,36,11,1,254,8, + 0,8,0,62,0,107,0,201,128,200,0,200,0,248,0,126, + 0,15,0,9,128,9,128,201,128,201,128,107,0,62,0,8, + 0,8,0,16,14,28,18,1,0,120,16,108,16,198,32,198, + 96,198,64,204,128,124,128,1,60,3,102,2,99,6,99,4, + 99,8,102,8,60,12,14,28,14,1,0,30,0,51,0,97, + 0,99,0,51,0,60,0,60,96,108,96,198,96,195,96,193, + 192,192,192,99,224,62,48,1,6,6,7,3,8,128,128,128, + 128,128,128,3,17,17,7,2,253,32,96,96,64,192,192,192, + 192,192,192,192,192,192,64,96,96,32,3,17,17,7,2,253, + 128,128,192,192,64,64,96,96,96,96,96,96,64,192,192,128, + 128,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0,2,10,10,5,2,0,192,192,0,0,0, + 0,0,0,192,192,3,12,12,5,1,254,96,96,0,0,0, + 0,0,96,96,64,192,192,12,10,20,19,4,1,0,48,0, + 224,7,0,28,0,224,0,192,0,56,0,14,0,1,192,0, + 48,11,5,10,19,4,4,255,224,0,0,0,0,0,0,255, + 224,12,10,20,19,4,1,128,0,112,0,28,0,3,128,0, + 96,0,112,1,192,14,0,112,0,192,0,8,14,14,9,0, + 0,60,126,195,3,3,2,6,12,24,24,24,0,0,24,17, + 18,54,19,1,252,7,240,0,28,60,0,48,6,0,96,3, + 0,99,243,0,198,113,0,196,49,128,204,49,128,204,49,128, + 204,49,128,204,49,128,196,51,0,70,95,0,99,158,0,96, + 0,0,48,0,0,30,16,0,7,240,0,14,14,28,14,0, + 0,3,0,7,128,7,128,4,192,12,192,12,192,24,96,24, + 96,31,240,63,240,48,24,96,24,96,24,192,12,10,14,28, + 13,2,0,255,0,193,128,192,192,192,192,192,192,193,128,254, + 0,195,128,192,192,192,192,192,192,192,192,195,128,255,0,11, + 14,28,13,1,0,31,128,57,192,96,96,64,96,192,0,192, + 0,192,0,192,0,192,0,192,0,64,96,96,96,49,192,31, + 0,11,14,28,14,2,0,254,0,195,128,192,192,192,192,192, + 96,192,96,192,96,192,96,192,96,192,96,192,192,192,192,195, + 128,254,0,9,14,28,12,2,0,255,128,192,0,192,0,192, + 0,192,0,192,0,255,128,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,8,14,14,11,2,0,255,192,192,192,192, + 192,255,192,192,192,192,192,192,192,12,14,28,14,1,0,15, + 128,56,224,96,48,64,0,192,0,192,0,193,240,192,48,192, + 48,192,48,96,48,96,48,56,112,15,224,10,14,28,14,2, + 0,192,192,192,192,192,192,192,192,192,192,192,192,255,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,2,14,14, + 5,2,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,14,14,11,1,0,3,3,3,3,3,3,3,3,3, + 3,195,195,102,60,10,14,28,13,2,0,193,128,195,0,198, + 0,204,0,216,0,240,0,240,0,216,0,220,0,206,0,199, + 0,195,0,193,128,192,192,8,14,14,11,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,255,255,14,14,28,18,2, + 0,224,28,224,28,240,60,240,60,216,108,216,108,216,108,204, + 204,204,204,196,140,199,140,199,140,195,12,195,12,11,14,28, + 14,2,0,224,96,224,96,240,96,248,96,216,96,220,96,204, + 96,198,96,198,96,195,96,195,96,193,224,193,224,192,224,12, + 14,28,14,1,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,9,14,28,12,2,0,254,0,195,0,193,128,193,128,193, + 128,193,128,195,0,254,0,192,0,192,0,192,0,192,0,192, + 0,192,0,14,14,28,15,1,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,252,9,14,28,12,2,0,254,0,195,0,193, + 128,193,128,193,128,195,0,254,0,195,0,195,0,193,0,193, + 128,193,128,193,128,193,128,10,14,28,12,1,0,63,0,97, + 128,192,192,192,0,192,0,240,0,127,0,31,128,1,192,0, + 192,192,192,192,192,97,128,62,0,11,14,28,13,1,0,255, + 224,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,11,14,28,15,2, + 0,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,96,192,113,192,31,0,12,14,28, + 12,0,0,224,48,96,112,96,96,48,96,48,96,48,192,24, + 192,24,192,25,128,13,128,13,0,15,0,7,0,6,0,18, + 14,42,18,0,0,192,224,192,96,224,192,97,225,128,97,161, + 128,33,177,128,49,49,128,51,51,0,51,19,0,27,27,0, + 26,26,0,30,30,0,14,14,0,12,14,0,12,12,0,12, + 14,28,13,1,0,224,96,96,192,49,192,57,128,27,0,15, + 0,14,0,15,0,27,0,25,128,49,192,96,192,224,224,192, + 112,12,14,28,12,0,0,224,112,96,96,112,192,48,192,25, + 128,25,128,15,0,14,0,6,0,6,0,6,0,6,0,6, + 0,6,0,10,14,28,12,1,0,127,192,0,192,1,128,3, + 128,3,0,6,0,14,0,28,0,24,0,56,0,112,0,96, + 0,224,0,255,192,4,18,18,8,2,252,240,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,5,15,15, + 8,1,255,128,192,64,64,64,96,32,32,48,16,16,16,24, + 8,8,4,18,18,8,2,252,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,9,12,24,19,5,0, + 8,0,8,0,20,0,20,0,34,0,34,0,34,0,65,0, + 65,0,193,128,128,128,128,128,10,1,2,10,0,254,255,192, + 3,4,4,4,0,12,128,192,96,32,8,10,10,10,1,0, + 62,103,195,3,63,99,195,195,231,123,9,14,28,11,1,0, + 192,0,192,0,192,0,192,0,222,0,227,0,193,128,193,128, + 193,128,193,128,193,128,193,0,227,0,222,0,8,10,10,10, + 1,0,62,103,195,192,192,192,192,195,103,60,9,14,28,11, + 1,0,1,128,1,128,1,128,1,128,61,128,103,128,195,128, + 193,128,193,128,193,128,193,128,65,128,99,128,29,128,9,10, + 20,11,1,0,62,0,99,0,193,0,193,128,255,128,192,0, + 192,0,67,0,103,0,62,0,6,14,14,8,1,0,28,48, + 48,48,252,48,48,48,48,48,48,48,48,48,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,65,128,115,0,62,0,8,14, + 14,10,1,0,192,192,192,192,222,231,195,195,195,195,195,195, + 195,195,2,14,14,4,1,0,192,0,0,0,192,192,192,192, + 192,192,192,192,192,192,3,18,18,5,1,252,96,0,0,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,192,7,14, + 14,9,1,0,192,192,192,192,198,204,216,240,240,248,216,204, + 198,198,2,14,14,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,14,10,20,17,1,0,222,120,231,156, + 195,12,195,12,195,12,195,12,195,12,195,12,195,12,195,12, + 8,10,10,10,1,0,222,231,195,195,195,195,195,195,195,195, + 9,10,20,11,1,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,99,0,62,0,9,14,28,11,1,252, + 222,0,227,0,193,128,193,128,193,128,193,128,193,128,193,128, + 227,0,222,0,192,0,192,0,192,0,192,0,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,1,128,1,128,1,128,5,10, + 10,7,1,0,248,224,192,192,192,192,192,192,192,192,8,10, + 10,10,1,0,124,231,195,192,124,30,3,195,230,124,6,13, + 13,8,1,0,16,48,48,252,48,48,48,48,48,48,48,48, + 28,8,10,10,10,1,0,195,195,195,195,195,195,195,195,231, + 123,10,10,20,10,0,0,192,192,96,128,97,128,49,128,51, + 0,51,0,26,0,30,0,14,0,12,0,15,10,20,15,0, + 0,195,134,99,134,99,196,98,204,38,76,54,72,52,120,28, + 120,28,48,24,48,9,10,20,10,1,0,195,0,99,0,118, + 0,60,0,24,0,28,0,60,0,102,0,195,0,195,128,10, + 14,28,10,0,252,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,24,0,24, + 0,7,10,10,9,1,0,254,6,12,28,24,48,96,96,192, + 254,6,19,19,10,2,251,12,24,16,48,48,48,48,48,96, + 224,224,48,48,48,48,16,16,24,28,1,21,21,7,3,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,19,19,10,2,251,224,112,48,48,48, + 48,48,16,24,12,28,16,48,48,48,48,48,48,224,10,2, + 4,10,0,4,120,192,207,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,6,0,0,2, + 14,14,7,3,252,192,192,0,0,192,192,192,192,192,192,192, + 192,192,192,8,14,14,10,1,254,2,4,60,102,203,200,200, + 208,208,211,102,60,32,64,10,14,28,11,1,0,31,0,49, + 128,96,192,96,0,96,0,252,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,255,128,10,10,20,12,1,3,128, + 64,94,128,51,0,65,128,64,128,64,128,64,128,33,0,94, + 128,128,64,10,14,28,12,1,0,192,192,96,128,97,128,49, + 0,243,192,27,0,30,0,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,1,18,18,7,3,252,128,128,128,128,128, + 128,128,128,0,0,128,128,128,128,128,128,128,128,7,17,17, + 9,1,253,60,100,192,192,96,56,124,198,198,206,124,60,14, + 6,6,140,248,6,1,1,6,0,13,204,14,14,28,16,1, + 0,15,192,28,224,39,144,76,200,216,108,152,4,152,4,152, + 4,152,100,140,204,71,200,32,16,16,32,15,192,7,10,10, + 8,1,4,120,204,4,124,196,132,124,0,0,254,7,8,8, + 11,2,1,38,100,204,216,152,204,100,38,10,5,10,12,1, + 3,255,192,0,64,0,64,0,64,0,64,255,14,14,28,16, + 1,0,15,192,28,224,47,208,76,104,204,108,140,100,143,132, + 140,68,140,100,204,108,76,104,32,16,28,224,15,192,6,1, + 1,6,0,13,252,4,5,5,6,1,9,96,240,144,144,96, + 11,12,24,19,4,0,6,0,6,0,6,0,6,0,255,224, + 6,0,6,0,6,0,0,0,0,0,0,0,255,224,6,8, + 8,7,1,6,120,220,12,12,24,48,192,252,6,8,8,7, + 1,6,120,204,12,48,24,140,204,120,4,4,4,4,1,12, + 48,96,64,192,255,9,18,36,11,1,252,63,128,121,0,249, + 0,249,0,249,0,249,0,121,0,25,0,9,0,9,0,9, + 0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,2, + 2,2,5,2,5,192,192,6,5,5,5,0,251,64,120,12, + 12,248,4,7,7,6,1,7,112,240,48,48,48,48,48,6, + 10,10,8,1,4,120,72,132,132,132,132,204,120,0,252,7, + 8,8,11,2,1,152,204,100,102,102,100,204,152,13,14,28, + 15,1,0,112,64,240,192,48,128,49,128,49,0,51,0,50, + 48,54,112,12,112,8,176,25,176,17,248,48,48,32,48,13, + 14,28,15,1,0,112,64,240,192,48,128,49,128,49,0,50, + 0,50,112,52,216,12,24,8,24,24,48,16,96,48,192,32, + 248,14,14,28,16,1,0,120,48,204,32,12,96,48,192,12, + 128,141,128,121,24,3,56,2,120,4,88,12,152,8,252,24, + 24,16,24,8,14,14,10,1,252,12,12,0,12,12,12,24, + 48,96,192,192,193,127,62,14,20,40,14,0,0,12,0,6, + 0,2,0,3,0,0,0,0,0,3,0,7,128,7,128,4, + 192,12,192,12,192,24,96,24,96,31,240,63,240,48,24,96, + 24,96,24,192,12,14,20,40,14,0,0,0,192,0,128,1, + 128,1,0,0,0,0,0,3,0,7,128,7,128,4,192,12, + 192,12,192,24,96,24,96,31,240,63,240,48,24,96,24,96, + 24,192,12,14,20,40,14,0,0,3,0,3,128,6,128,4, + 192,0,0,0,0,3,0,7,128,7,128,4,192,12,192,12, + 192,24,96,24,96,31,240,63,240,48,24,96,24,96,24,192, + 12,14,18,36,14,0,0,7,192,0,0,0,0,0,0,3, + 0,7,128,7,128,4,192,12,192,12,192,24,96,24,96,31, + 240,63,240,48,24,96,24,96,24,192,12,13,18,36,15,1, + 0,12,192,0,0,0,0,0,0,7,0,7,0,13,128,13, + 128,12,192,24,192,24,192,48,96,63,224,63,240,96,48,96, + 24,192,24,192,24,13,21,42,14,1,0,6,0,13,0,9, + 0,9,0,6,0,0,0,0,0,6,0,7,0,15,0,13, + 0,25,128,25,128,16,192,48,192,63,224,127,224,96,32,192, + 48,192,48,192,24,17,14,42,19,1,0,1,255,128,3,192, + 0,2,192,0,6,192,0,14,192,0,12,192,0,28,255,128, + 24,192,0,56,192,0,63,192,0,96,192,0,96,192,0,192, + 192,0,192,255,128,11,18,36,13,1,252,31,128,57,192,96, + 96,64,96,192,0,192,0,192,0,192,0,192,0,192,0,64, + 96,96,96,49,192,31,0,4,0,7,0,1,128,15,128,9, + 20,40,12,2,0,96,0,48,0,24,0,8,0,0,0,0, + 0,255,128,192,0,192,0,192,0,192,0,192,0,255,128,192, + 0,192,0,192,0,192,0,192,0,192,0,255,128,9,20,40, + 12,2,0,6,0,4,0,12,0,24,0,0,0,0,0,255, + 128,192,0,192,0,192,0,192,0,192,0,255,128,192,0,192, + 0,192,0,192,0,192,0,192,0,255,128,9,20,40,12,2, + 0,24,0,28,0,52,0,38,0,0,0,0,0,255,128,192, + 0,192,0,192,0,192,0,192,0,255,128,192,0,192,0,192, + 0,192,0,192,0,192,0,255,128,9,18,36,12,2,0,102, + 0,0,0,0,0,0,0,255,128,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,255,128,4,20,20,5,0,0,192,96,32,48,0,0,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,4,20,20, + 5,2,0,48,96,64,128,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,5,20,20,5,0,0,48,112,88, + 200,0,0,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,6,18,18,6,0,0,204,0,0,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,13,14,28,14,0,0,127, + 128,97,224,96,112,96,48,96,16,96,24,254,24,96,24,96, + 24,96,16,96,48,96,96,97,224,127,128,11,18,36,14,2, + 0,31,0,0,0,0,0,0,0,224,96,224,96,240,96,248, + 96,216,96,220,96,204,96,198,96,198,96,195,96,195,96,193, + 224,193,224,192,224,12,20,40,14,1,0,24,0,12,0,6, + 0,2,0,0,0,0,0,31,128,57,192,96,96,64,32,192, + 48,192,48,192,48,192,48,192,48,192,48,64,32,96,96,57, + 192,15,0,12,20,40,14,1,0,1,128,3,0,6,0,4, + 0,0,0,0,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,12,20,40,14,1,0,6,0,15,0,9,0,16,128,0, + 0,0,0,31,128,57,192,96,96,64,32,192,48,192,48,192, + 48,192,48,192,48,192,48,64,32,96,96,57,192,15,0,12, + 19,38,14,1,0,12,128,31,0,0,0,0,0,0,0,31, + 128,57,192,96,96,64,32,192,48,192,48,192,48,192,48,192, + 48,192,48,96,96,112,224,63,192,15,0,12,18,36,14,1, + 0,13,128,0,0,0,0,0,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,0,11,10,20,19,4,1,192,96,96,192,49, + 128,27,0,14,0,14,0,27,0,49,128,96,192,64,96,12, + 16,32,14,1,255,0,48,31,224,56,224,96,224,65,176,193, + 176,195,48,198,48,198,48,204,48,220,48,88,32,112,96,57, + 192,127,0,192,0,11,20,40,15,2,0,24,0,8,0,4, + 0,6,0,0,0,0,0,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,96,192,127, + 192,31,0,11,20,40,15,2,0,3,0,2,0,4,0,12, + 0,0,0,0,0,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,96,192,127,192,31, + 0,11,20,40,15,2,0,14,0,14,0,27,0,17,0,0, + 0,0,0,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,96,192,127,192,31,0,11, + 18,36,15,2,0,25,128,0,0,0,0,0,0,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,96,192,113,192,31,0,12,20,40,12,0,0,1, + 128,3,0,2,0,4,0,0,0,0,0,224,112,96,96,112, + 192,48,192,25,128,25,128,15,0,14,0,6,0,6,0,6, + 0,6,0,6,0,6,0,9,14,28,12,2,0,192,0,192, + 0,192,0,254,0,195,0,193,128,193,128,193,128,195,128,254, + 0,192,0,192,0,192,0,192,0,10,14,28,11,1,0,62, + 0,103,0,195,0,195,0,198,0,204,0,204,0,206,0,199, + 128,193,128,192,192,216,192,220,128,199,128,8,15,15,10,1, + 0,48,24,8,0,0,62,103,195,3,63,99,195,195,231,123, + 8,16,16,10,1,0,6,12,24,16,0,0,62,103,195,3, + 63,99,195,195,231,123,8,16,16,10,1,0,24,28,36,38, + 0,0,62,103,195,3,63,99,195,195,231,123,8,14,14,10, + 1,0,62,0,0,0,62,103,195,3,63,115,195,195,231,123, + 8,14,14,10,1,0,102,0,0,0,62,103,195,3,63,99, + 195,195,231,123,8,16,16,10,1,0,28,34,34,28,0,0, + 62,99,193,1,63,113,193,193,231,61,16,10,20,18,1,0, + 62,124,227,198,193,131,1,131,63,255,225,128,193,128,195,131, + 230,238,124,60,8,14,14,10,1,252,62,103,195,192,192,192, + 192,195,102,60,16,28,6,62,9,16,32,11,1,0,48,0, + 48,0,24,0,8,0,0,0,0,0,62,0,99,0,193,0, + 193,128,255,128,192,0,192,0,67,0,103,0,62,0,9,16, + 32,11,1,0,6,0,12,0,8,0,24,0,0,0,0,0, + 62,0,99,0,193,0,193,128,255,128,192,0,192,0,67,0, + 103,0,62,0,9,16,32,11,1,0,24,0,28,0,52,0, + 34,0,0,0,0,0,62,0,99,0,193,0,193,128,255,128, + 192,0,192,0,67,0,103,0,62,0,9,14,28,11,1,0, + 102,0,0,0,0,0,0,0,62,0,99,0,193,0,193,128, + 255,128,192,0,192,0,67,0,103,0,62,0,3,15,15,4, + 0,0,128,192,96,32,0,96,96,96,96,96,96,96,96,96, + 96,3,15,15,4,1,0,96,64,192,128,0,192,192,192,192, + 192,192,192,192,192,192,6,15,15,4,255,0,48,120,72,132, + 0,48,48,48,48,48,48,48,48,48,48,6,14,14,5,0, + 0,204,0,0,0,48,48,48,48,48,48,48,48,48,48,9, + 14,28,11,1,0,102,0,24,0,108,0,6,0,63,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,8,14,14,10,1,0,52,124,0,0,222,231,195,195,195, + 195,195,195,195,195,9,16,32,11,1,0,48,0,16,0,24, + 0,8,0,0,0,0,0,62,0,99,0,193,128,193,128,193, + 128,193,128,193,128,193,128,99,0,62,0,9,16,32,11,1, + 0,6,0,4,0,12,0,8,0,0,0,0,0,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,9,16,32,11,1,0,8,0,28,0,20,0,34,0,0, + 0,0,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,62,0,0, + 0,0,0,0,0,62,0,99,0,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,9,14,28,11,1,0,51, + 0,0,0,0,0,0,0,62,0,115,0,193,128,192,128,192, + 128,192,128,192,128,193,128,115,0,62,0,11,8,16,19,4, + 2,6,0,6,0,0,0,0,0,255,224,0,0,6,0,6, + 0,9,12,24,11,1,0,1,128,63,0,99,0,199,128,197, + 128,201,128,217,128,209,128,225,128,99,0,254,0,128,0,8, + 16,16,10,1,0,96,48,16,8,0,0,195,195,195,195,195, + 195,195,195,231,123,8,16,16,10,1,0,4,12,8,16,0, + 0,195,195,195,195,195,195,195,195,231,123,8,16,16,10,1, + 0,24,24,52,36,0,0,195,195,195,195,195,195,195,195,231, + 123,8,14,14,10,1,0,102,0,0,0,195,195,195,195,195, + 195,195,195,231,123,10,19,38,10,0,252,3,0,6,0,4, + 0,8,0,0,0,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,120,0,120, + 0,9,18,36,11,1,252,192,0,192,0,192,0,192,0,222, + 0,227,0,193,128,193,128,193,128,193,128,193,128,193,128,227, + 0,222,0,192,0,192,0,192,0,192,0,10,18,36,10,0, + 252,51,0,0,0,0,0,0,0,192,192,97,128,97,128,97, + 0,51,0,51,0,30,0,30,0,30,0,12,0,12,0,24, + 0,24,0,24,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=11 h=15 x= 4 y= 7 dx=19 dy= 0 ascent=14 len=28 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14n[405] U8G_SECTION(".progmem.u8g_font_fur14n") = { + 0,26,26,255,251,14,0,0,0,0,42,57,0,14,254,14, + 0,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=18 h=21 x= 5 y=12 dx=19 dy= 0 ascent=16 len=54 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14r[2489] U8G_SECTION(".progmem.u8g_font_fur14r") = { + 0,26,26,255,251,14,3,59,6,250,32,127,252,16,251,14, + 252,0,0,0,6,0,0,2,14,14,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,0,0,192,6,6,6,9,1, + 8,204,204,76,76,68,68,12,14,28,14,1,0,6,96,4, + 64,4,64,12,192,127,240,8,128,25,128,25,0,255,224,19, + 0,51,0,34,0,34,0,102,0,9,18,36,11,1,254,8, + 0,8,0,62,0,107,0,201,128,200,0,200,0,248,0,126, + 0,15,0,9,128,9,128,201,128,201,128,107,0,62,0,8, + 0,8,0,16,14,28,18,1,0,120,16,108,16,198,32,198, + 96,198,64,204,128,124,128,1,60,3,102,2,99,6,99,4, + 99,8,102,8,60,12,14,28,14,1,0,30,0,51,0,97, + 0,99,0,51,0,60,0,60,96,108,96,198,96,195,96,193, + 192,192,192,99,224,62,48,1,6,6,7,3,8,128,128,128, + 128,128,128,3,17,17,7,2,253,32,96,96,64,192,192,192, + 192,192,192,192,192,192,64,96,96,32,3,17,17,7,2,253, + 128,128,192,192,64,64,96,96,96,96,96,96,64,192,192,128, + 128,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0,2,10,10,5,2,0,192,192,0,0,0, + 0,0,0,192,192,3,12,12,5,1,254,96,96,0,0,0, + 0,0,96,96,64,192,192,12,10,20,19,4,1,0,48,0, + 224,7,0,28,0,224,0,192,0,56,0,14,0,1,192,0, + 48,11,5,10,19,4,4,255,224,0,0,0,0,0,0,255, + 224,12,10,20,19,4,1,128,0,112,0,28,0,3,128,0, + 96,0,112,1,192,14,0,112,0,192,0,8,14,14,9,0, + 0,60,126,195,3,3,2,6,12,24,24,24,0,0,24,17, + 18,54,19,1,252,7,240,0,28,60,0,48,6,0,96,3, + 0,99,243,0,198,113,0,196,49,128,204,49,128,204,49,128, + 204,49,128,204,49,128,196,51,0,70,95,0,99,158,0,96, + 0,0,48,0,0,30,16,0,7,240,0,14,14,28,14,0, + 0,3,0,7,128,7,128,4,192,12,192,12,192,24,96,24, + 96,31,240,63,240,48,24,96,24,96,24,192,12,10,14,28, + 13,2,0,255,0,193,128,192,192,192,192,192,192,193,128,254, + 0,195,128,192,192,192,192,192,192,192,192,195,128,255,0,11, + 14,28,13,1,0,31,128,57,192,96,96,64,96,192,0,192, + 0,192,0,192,0,192,0,192,0,64,96,96,96,49,192,31, + 0,11,14,28,14,2,0,254,0,195,128,192,192,192,192,192, + 96,192,96,192,96,192,96,192,96,192,96,192,192,192,192,195, + 128,254,0,9,14,28,12,2,0,255,128,192,0,192,0,192, + 0,192,0,192,0,255,128,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,8,14,14,11,2,0,255,192,192,192,192, + 192,255,192,192,192,192,192,192,192,12,14,28,14,1,0,15, + 128,56,224,96,48,64,0,192,0,192,0,193,240,192,48,192, + 48,192,48,96,48,96,48,56,112,15,224,10,14,28,14,2, + 0,192,192,192,192,192,192,192,192,192,192,192,192,255,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,2,14,14, + 5,2,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,14,14,11,1,0,3,3,3,3,3,3,3,3,3, + 3,195,195,102,60,10,14,28,13,2,0,193,128,195,0,198, + 0,204,0,216,0,240,0,240,0,216,0,220,0,206,0,199, + 0,195,0,193,128,192,192,8,14,14,11,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,255,255,14,14,28,18,2, + 0,224,28,224,28,240,60,240,60,216,108,216,108,216,108,204, + 204,204,204,196,140,199,140,199,140,195,12,195,12,11,14,28, + 14,2,0,224,96,224,96,240,96,248,96,216,96,220,96,204, + 96,198,96,198,96,195,96,195,96,193,224,193,224,192,224,12, + 14,28,14,1,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,9,14,28,12,2,0,254,0,195,0,193,128,193,128,193, + 128,193,128,195,0,254,0,192,0,192,0,192,0,192,0,192, + 0,192,0,14,14,28,15,1,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,252,9,14,28,12,2,0,254,0,195,0,193, + 128,193,128,193,128,195,0,254,0,195,0,195,0,193,0,193, + 128,193,128,193,128,193,128,10,14,28,12,1,0,63,0,97, + 128,192,192,192,0,192,0,240,0,127,0,31,128,1,192,0, + 192,192,192,192,192,97,128,62,0,11,14,28,13,1,0,255, + 224,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,11,14,28,15,2, + 0,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,96,192,113,192,31,0,12,14,28, + 12,0,0,224,48,96,112,96,96,48,96,48,96,48,192,24, + 192,24,192,25,128,13,128,13,0,15,0,7,0,6,0,18, + 14,42,18,0,0,192,224,192,96,224,192,97,225,128,97,161, + 128,33,177,128,49,49,128,51,51,0,51,19,0,27,27,0, + 26,26,0,30,30,0,14,14,0,12,14,0,12,12,0,12, + 14,28,13,1,0,224,96,96,192,49,192,57,128,27,0,15, + 0,14,0,15,0,27,0,25,128,49,192,96,192,224,224,192, + 112,12,14,28,12,0,0,224,112,96,96,112,192,48,192,25, + 128,25,128,15,0,14,0,6,0,6,0,6,0,6,0,6, + 0,6,0,10,14,28,12,1,0,127,192,0,192,1,128,3, + 128,3,0,6,0,14,0,28,0,24,0,56,0,112,0,96, + 0,224,0,255,192,4,18,18,8,2,252,240,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,5,15,15, + 8,1,255,128,192,64,64,64,96,32,32,48,16,16,16,24, + 8,8,4,18,18,8,2,252,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,9,12,24,19,5,0, + 8,0,8,0,20,0,20,0,34,0,34,0,34,0,65,0, + 65,0,193,128,128,128,128,128,10,1,2,10,0,254,255,192, + 3,4,4,4,0,12,128,192,96,32,8,10,10,10,1,0, + 62,103,195,3,63,99,195,195,231,123,9,14,28,11,1,0, + 192,0,192,0,192,0,192,0,222,0,227,0,193,128,193,128, + 193,128,193,128,193,128,193,0,227,0,222,0,8,10,10,10, + 1,0,62,103,195,192,192,192,192,195,103,60,9,14,28,11, + 1,0,1,128,1,128,1,128,1,128,61,128,103,128,195,128, + 193,128,193,128,193,128,193,128,65,128,99,128,29,128,9,10, + 20,11,1,0,62,0,99,0,193,0,193,128,255,128,192,0, + 192,0,67,0,103,0,62,0,6,14,14,8,1,0,28,48, + 48,48,252,48,48,48,48,48,48,48,48,48,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,65,128,115,0,62,0,8,14, + 14,10,1,0,192,192,192,192,222,231,195,195,195,195,195,195, + 195,195,2,14,14,4,1,0,192,0,0,0,192,192,192,192, + 192,192,192,192,192,192,3,18,18,5,1,252,96,0,0,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,192,7,14, + 14,9,1,0,192,192,192,192,198,204,216,240,240,248,216,204, + 198,198,2,14,14,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,14,10,20,17,1,0,222,120,231,156, + 195,12,195,12,195,12,195,12,195,12,195,12,195,12,195,12, + 8,10,10,10,1,0,222,231,195,195,195,195,195,195,195,195, + 9,10,20,11,1,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,99,0,62,0,9,14,28,11,1,252, + 222,0,227,0,193,128,193,128,193,128,193,128,193,128,193,128, + 227,0,222,0,192,0,192,0,192,0,192,0,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,1,128,1,128,1,128,5,10, + 10,7,1,0,248,224,192,192,192,192,192,192,192,192,8,10, + 10,10,1,0,124,231,195,192,124,30,3,195,230,124,6,13, + 13,8,1,0,16,48,48,252,48,48,48,48,48,48,48,48, + 28,8,10,10,10,1,0,195,195,195,195,195,195,195,195,231, + 123,10,10,20,10,0,0,192,192,96,128,97,128,49,128,51, + 0,51,0,26,0,30,0,14,0,12,0,15,10,20,15,0, + 0,195,134,99,134,99,196,98,204,38,76,54,72,52,120,28, + 120,28,48,24,48,9,10,20,10,1,0,195,0,99,0,118, + 0,60,0,24,0,28,0,60,0,102,0,195,0,195,128,10, + 14,28,10,0,252,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,24,0,24, + 0,7,10,10,9,1,0,254,6,12,28,24,48,96,96,192, + 254,6,19,19,10,2,251,12,24,16,48,48,48,48,48,96, + 224,224,48,48,48,48,16,16,24,28,1,21,21,7,3,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,19,19,10,2,251,224,112,48,48,48, + 48,48,16,24,12,28,16,48,48,48,48,48,48,224,10,2, + 4,10,0,4,120,192,207,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=22 h=25 x= 6 y=15 dx=24 dy= 0 ascent=24 len=66 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =24 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17[6799] U8G_SECTION(".progmem.u8g_font_fur17") = { + 0,31,30,254,250,17,4,5,8,170,32,255,251,24,250,17, + 251,0,0,0,7,0,0,2,17,17,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,192,192,7,7, + 7,10,2,10,206,206,198,198,196,196,196,15,17,34,17,1, + 0,1,24,3,24,3,24,3,48,6,48,63,254,6,32,4, + 96,12,96,12,64,255,248,24,192,24,128,17,128,49,128,49, + 128,49,0,11,21,42,13,1,254,4,0,4,0,63,0,127, + 128,196,192,196,192,196,0,196,0,244,0,127,0,63,192,5, + 224,4,224,4,96,196,96,196,96,228,96,127,192,63,128,4, + 0,4,0,19,17,51,21,1,0,60,2,0,126,4,0,227, + 12,0,195,8,0,195,24,0,195,16,0,195,48,0,102,96, + 0,62,71,128,0,207,192,0,152,96,1,152,96,1,24,96, + 2,24,96,6,24,96,4,15,192,12,7,128,15,17,34,17, + 1,0,15,0,63,128,48,192,48,192,49,192,59,128,31,0, + 28,24,118,24,103,24,227,152,193,216,192,240,224,112,96,120, + 123,252,31,142,2,7,7,8,3,10,192,192,192,192,192,192, + 64,4,20,20,8,2,253,48,48,96,96,96,224,192,192,192, + 192,192,192,192,192,224,96,96,96,48,48,4,20,20,8,2, + 253,192,64,96,96,96,48,48,48,48,48,48,48,48,48,48, + 96,96,96,64,192,9,9,18,15,3,8,34,0,54,0,22, + 0,28,0,255,128,156,128,20,0,54,0,34,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4, + 6,6,6,1,253,112,112,96,96,192,192,6,1,1,8,1, + 5,252,2,3,3,6,2,0,192,192,192,7,18,18,9,1, + 255,6,6,4,12,12,8,8,24,24,16,48,48,32,32,96, + 96,64,192,10,17,34,13,1,0,30,0,63,128,97,128,96, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,97,192,97,128,63,128,30,0,5,17,17,13,3, + 0,56,120,248,216,24,24,24,24,24,24,24,24,24,24,24, + 24,24,10,17,34,13,1,0,30,0,127,128,97,128,224,192, + 224,192,0,192,1,192,3,128,3,128,7,0,14,0,28,0, + 56,0,112,0,96,0,224,0,255,192,10,17,34,13,1,0, + 31,0,127,128,96,192,224,192,0,192,0,192,3,128,14,0, + 7,128,1,192,0,192,0,192,192,192,224,192,97,192,127,128, + 30,0,11,17,34,13,1,0,3,128,3,128,7,128,13,128, + 13,128,25,128,57,128,49,128,97,128,97,128,193,128,255,224, + 255,224,1,128,1,128,1,128,1,128,10,17,34,13,1,0, + 127,128,96,0,96,0,96,0,96,0,111,0,127,128,97,128, + 64,192,0,192,0,192,0,192,0,192,192,192,225,128,127,0, + 30,0,11,17,34,13,1,0,31,0,59,128,96,192,224,192, + 192,0,192,0,207,0,223,192,241,192,224,224,192,96,192,96, + 192,96,192,96,96,192,59,192,31,0,10,17,34,13,1,0, + 255,192,0,192,0,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,14,0,12,0,12,0,28,0,24,0, + 56,0,11,17,34,13,1,0,31,0,59,128,96,192,96,192, + 96,192,96,192,49,128,31,0,59,128,96,192,192,96,192,96, + 192,96,192,96,96,224,123,192,31,0,11,17,34,13,1,0, + 31,0,127,192,96,192,192,224,192,96,192,96,192,224,224,224, + 113,224,63,96,0,96,0,96,0,224,96,192,97,192,127,128, + 31,0,2,12,12,6,2,0,192,192,192,0,0,0,0,0, + 0,192,192,192,3,15,15,6,1,253,96,96,96,0,0,0, + 0,0,0,96,96,96,192,192,192,14,12,24,24,5,1,0, + 12,0,60,1,224,7,0,56,0,224,0,224,0,60,0,7, + 0,1,224,0,60,0,12,14,5,10,24,5,4,255,252,0, + 0,0,0,0,0,255,252,14,12,24,24,5,1,192,0,240, + 0,30,0,3,128,0,112,0,28,0,28,0,240,3,128,30, + 0,240,0,192,0,9,17,34,11,1,0,60,0,255,0,195, + 128,129,128,1,128,1,128,3,0,7,0,14,0,28,0,24, + 0,24,0,24,0,0,0,0,0,24,0,24,0,20,22,66, + 23,1,251,1,252,0,7,255,0,30,7,128,56,1,192,48, + 0,224,97,236,96,99,252,112,227,28,48,198,12,48,198,12, + 48,198,12,48,198,12,48,198,12,48,198,12,48,227,28,96, + 99,31,224,97,231,192,48,0,0,56,0,0,28,0,0,7, + 220,0,1,252,0,16,17,34,17,1,0,3,128,3,128,7, + 192,6,192,14,224,12,96,12,112,24,48,24,48,56,56,63, + 248,63,252,96,12,96,12,224,6,192,6,192,7,12,17,34, + 16,2,0,255,128,195,224,192,112,192,48,192,48,192,48,192, + 112,192,224,255,128,193,224,192,112,192,48,192,48,192,48,192, + 112,195,224,255,128,13,17,34,15,1,0,15,192,63,240,48, + 56,96,24,96,24,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,24,48,48,63,240,15,192,13,17,34, + 17,2,0,255,0,199,192,192,96,192,48,192,48,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,48,192,48,192, + 224,199,192,255,0,11,17,34,14,2,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,10,17,34, + 13,2,0,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,14,17,34,17,1,0,7,224,31,248,48, + 28,96,12,96,0,192,0,192,0,192,0,192,252,192,12,192, + 12,224,12,96,12,112,12,56,12,31,252,7,248,12,17,34, + 16,2,0,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,255,240,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,192,48,2,17,17,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,10,17,34,13, + 1,0,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,225,128, + 127,128,62,0,12,17,34,15,2,0,192,96,192,192,193,128, + 195,0,199,0,206,0,220,0,248,0,220,0,222,0,206,0, + 199,0,195,128,193,192,192,224,192,224,192,112,10,17,34,12, + 2,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 255,192,255,192,17,17,51,21,2,0,240,7,128,240,7,128, + 240,7,128,216,13,128,216,13,128,220,29,128,204,25,128,204, + 25,128,206,57,128,198,49,128,198,49,128,195,97,128,195,97, + 128,195,97,128,193,193,128,193,193,128,193,193,128,13,17,34, + 17,2,0,224,24,240,24,248,24,248,24,220,24,220,24,206, + 24,198,24,199,24,195,24,195,152,193,216,193,216,192,248,192, + 248,192,120,192,56,15,17,34,17,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,240,7,192,11,17,34, + 14,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 224,193,192,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,17,34,18,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,248,7,255,11,17,34, + 15,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 96,193,192,255,0,193,192,192,192,192,192,192,224,192,96,192, + 96,192,96,192,96,12,17,34,15,1,0,31,128,63,224,96, + 112,192,48,192,0,224,0,240,0,127,128,63,224,3,240,0, + 112,0,48,192,48,192,48,96,112,123,224,31,128,13,17,34, + 15,1,0,255,248,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,13,17,34,17,2,0,192,24,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,96,56,96,48,61,224,31,192,14,17,34, + 15,1,0,192,28,192,24,224,56,96,48,96,48,112,112,48, + 96,48,96,56,224,24,192,24,192,29,192,13,128,13,128,15, + 128,7,0,7,0,22,17,51,22,0,0,224,56,28,96,120, + 28,96,120,24,112,120,24,48,108,56,48,204,48,48,204,48, + 24,206,48,24,198,112,25,134,96,29,134,96,13,131,96,13, + 131,192,15,3,192,7,3,192,7,1,192,6,1,128,14,17, + 34,16,1,0,112,24,112,56,56,48,28,96,28,224,14,192, + 7,128,7,128,7,128,7,192,13,192,28,224,24,112,48,112, + 112,56,96,28,224,28,14,17,34,15,0,0,224,28,112,24, + 112,56,56,48,24,112,28,96,12,192,14,192,7,128,3,128, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,12,17, + 34,14,1,0,127,240,0,48,0,112,0,224,1,192,1,192, + 3,128,7,0,7,0,14,0,28,0,60,0,56,0,112,0, + 240,0,224,0,255,240,4,22,22,9,2,251,240,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,18,18,9,1,255,192,192,64,96,96,32,48,48, + 16,16,24,24,8,12,12,4,4,6,4,22,22,10,3,251, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,11,14,28,23,6,0,4,0,14,0, + 10,0,27,0,17,0,17,0,49,128,32,128,32,128,96,192, + 64,64,192,96,128,32,128,32,12,1,2,12,0,253,255,240, + 4,4,4,5,0,14,192,96,96,48,10,12,24,13,1,0, + 31,0,123,128,96,192,96,192,0,192,63,192,120,192,224,192, + 192,192,193,192,119,192,60,192,11,17,34,14,2,0,192,0, + 192,0,192,0,192,0,192,0,207,0,223,192,224,192,224,224, + 192,96,192,96,192,96,192,96,224,224,224,192,251,128,207,0, + 10,12,24,12,1,0,31,0,127,128,97,192,192,192,192,0, + 192,0,192,0,192,0,192,192,97,192,127,128,31,0,11,17, + 34,14,1,0,0,96,0,96,0,96,0,96,0,96,30,96, + 127,224,97,224,224,224,192,96,192,96,192,96,192,96,224,224, + 96,224,59,224,30,96,10,12,24,13,1,0,31,0,127,128, + 96,192,192,192,192,192,255,192,192,0,192,0,192,192,96,192, + 63,128,31,0,7,17,17,9,1,0,30,62,48,48,48,254, + 48,48,48,48,48,48,48,48,48,48,48,11,17,34,14,1, + 251,31,96,63,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,96,224,96,192,63, + 128,31,0,10,17,34,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,251,128,225,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,2,17,17,5,1, + 0,192,192,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,3,22,22,7,2,251,96,96,0,0,0,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,224,192,9,17, + 34,12,2,0,192,0,192,0,192,0,192,0,192,0,195,128, + 199,0,206,0,220,0,216,0,248,0,216,0,204,0,206,0, + 199,0,195,0,195,128,2,17,17,6,2,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,18,12,36, + 21,2,0,207,31,0,255,191,128,225,225,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,10,12,24,14,2,0,223,0,255, + 128,225,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,12,24,13,1,0,31,0,63,192,96, + 192,224,224,192,96,192,96,192,96,192,96,224,224,96,192,63, + 192,31,0,11,17,34,14,2,251,207,0,251,192,224,192,224, + 224,192,96,192,96,192,96,192,96,224,224,224,192,251,192,207, + 0,192,0,192,0,192,0,192,0,192,0,11,17,34,14,1, + 251,30,96,123,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,0,96,0,96,0, + 96,0,96,7,12,12,9,2,0,222,252,224,192,192,192,192, + 192,192,192,192,192,9,12,24,11,1,0,62,0,127,128,193, + 128,192,0,224,0,126,0,31,128,3,128,193,128,193,128,119, + 0,62,0,7,15,15,9,1,0,48,48,48,254,48,48,48, + 48,48,48,48,48,48,58,30,10,12,24,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,192,60,192,11,12,24,12,1,0,192,96,192,192, + 224,192,97,192,97,128,49,128,51,0,59,0,27,0,30,0, + 30,0,12,0,18,12,36,19,0,0,224,224,192,96,224,192, + 97,161,192,113,177,128,49,177,128,51,49,128,51,27,0,27, + 27,0,30,27,0,30,14,0,14,14,0,12,14,0,11,12, + 24,13,1,0,224,192,113,192,49,128,59,0,31,0,14,0, + 30,0,31,0,51,128,113,128,97,192,192,224,11,17,34,12, + 1,251,192,96,192,192,224,192,97,192,113,128,49,128,51,128, + 59,0,27,0,30,0,14,0,14,0,12,0,12,0,28,0, + 24,0,24,0,8,12,12,10,1,0,255,3,7,14,12,24, + 56,48,96,224,192,255,8,23,23,11,2,251,15,14,24,24, + 24,24,24,24,24,56,112,224,240,48,24,24,24,24,24,24, + 24,12,15,1,25,25,8,4,250,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,8,23,23,11,2,251,224,112,56,24,24,24,24,24, + 24,28,14,7,14,28,24,24,24,24,24,24,24,48,240,12, + 2,4,12,0,5,62,112,231,224,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,7,0,0, + 2,17,17,8,3,251,192,192,0,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,10,18,36,14,2,253,1,0,1, + 0,1,0,31,0,127,128,98,192,198,192,196,0,196,0,204, + 0,200,0,200,192,121,192,127,128,31,0,32,0,32,0,32, + 0,11,17,34,13,1,0,15,128,29,192,48,96,48,0,48, + 0,48,0,254,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,255,224,11,14,28,13,1,3,0, + 32,128,32,95,64,123,128,96,128,64,64,64,64,64,64,64, + 64,96,128,113,128,95,64,128,32,0,32,12,17,34,14,1, + 0,192,48,96,96,96,96,48,224,48,192,249,240,25,128,15, + 128,15,0,255,240,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,1,22,22,8,4,251,128,128,128,128,128,128,128, + 128,128,0,0,0,0,128,128,128,128,128,128,128,128,128,8, + 21,21,10,1,252,62,126,192,192,192,112,120,62,119,227,195, + 199,238,124,30,7,3,3,3,142,252,7,2,2,7,0,15, + 198,198,17,17,51,19,1,0,3,224,0,15,120,0,56,14, + 0,35,242,0,71,57,0,78,25,0,140,0,128,140,0,128, + 140,0,128,140,0,128,140,24,128,70,57,0,67,241,0,32, + 2,0,48,6,0,12,24,0,3,224,0,9,11,22,9,0, + 6,62,0,127,0,97,0,1,0,63,0,113,0,65,0,67, + 0,61,0,0,0,255,128,9,9,18,13,2,1,49,128,51, + 0,99,0,230,0,204,0,230,0,99,0,51,0,17,128,12, + 5,10,14,1,5,255,240,0,16,0,16,0,16,0,16,255, + 17,17,51,19,1,0,3,224,0,15,120,0,56,14,0,39, + 242,0,70,57,0,70,25,0,134,24,128,135,224,128,134,48, + 128,134,16,128,134,24,128,70,25,0,70,25,0,32,2,0, + 56,14,0,15,120,0,3,224,0,7,1,1,7,0,15,254, + 5,6,6,7,1,11,112,216,136,136,216,112,14,14,28,24, + 5,0,2,0,2,0,2,0,2,0,255,252,2,0,2,0, + 2,0,2,0,2,0,0,0,0,0,0,0,255,252,7,9, + 9,9,1,8,60,126,198,6,12,24,48,224,254,7,9,9, + 9,1,8,60,126,198,14,24,14,6,206,124,3,4,4,5, + 2,14,96,96,192,128,255,10,21,42,13,1,252,31,192,60, + 128,124,128,252,128,252,128,252,128,124,128,124,128,60,128,4, + 128,4,128,4,128,4,128,4,128,4,128,4,128,4,128,4, + 128,4,128,4,128,4,128,2,3,3,6,2,7,192,192,192, + 6,5,5,6,1,250,64,120,12,12,252,3,9,9,7,2, + 8,96,224,32,32,32,32,32,32,32,8,11,11,10,1,6, + 60,126,195,193,193,193,195,98,124,0,255,9,9,18,13,2, + 1,204,0,102,0,99,0,51,0,57,128,51,0,99,0,102, + 0,204,0,15,17,34,18,2,0,96,48,224,32,32,96,32, + 64,32,192,32,128,33,0,35,0,34,24,6,24,4,40,12, + 72,8,200,16,254,48,8,32,8,96,8,16,17,34,19,2, + 0,96,16,224,48,32,32,32,96,32,192,32,128,33,128,33, + 0,35,62,6,119,4,99,12,3,8,6,24,28,16,48,32, + 96,96,127,17,17,51,19,1,0,124,4,0,254,12,0,6, + 8,0,24,16,0,30,48,0,6,32,0,198,96,0,206,64, + 0,124,198,0,1,134,0,1,10,0,3,26,0,2,50,0, + 6,63,128,4,2,0,8,2,0,24,2,0,10,17,34,12, + 1,251,6,0,6,0,0,0,0,0,6,0,6,0,6,0, + 14,0,28,0,112,0,96,0,192,0,192,0,192,192,241,192, + 127,128,31,0,16,23,46,17,1,0,14,0,6,0,3,0, + 1,0,0,0,0,0,3,128,3,128,7,192,6,192,14,224, + 12,96,12,112,24,48,24,48,56,56,63,248,63,252,96,12, + 96,12,224,6,192,6,192,7,16,23,46,17,1,0,0,96, + 0,192,0,128,1,0,0,0,0,0,3,128,3,128,7,192, + 6,192,14,224,12,96,12,112,24,48,24,48,56,56,63,248, + 63,252,96,12,96,12,224,6,192,6,192,7,16,23,46,17, + 1,0,3,128,3,192,6,192,4,96,0,0,0,0,3,128, + 3,128,7,192,6,192,14,224,12,96,12,112,24,48,24,48, + 56,56,63,248,63,252,96,12,96,12,224,6,192,6,192,7, + 16,22,44,17,1,0,7,96,13,192,0,0,0,0,0,0, + 3,128,3,128,7,192,6,192,14,224,12,96,12,112,24,48, + 24,48,56,56,63,248,63,252,96,12,96,12,224,6,192,6, + 192,7,16,22,44,18,1,0,6,48,6,48,0,0,0,0, + 0,0,1,192,3,192,3,224,7,96,6,96,6,112,12,48, + 12,56,28,24,24,28,63,252,63,252,48,6,96,6,96,7, + 224,3,192,3,16,24,48,17,1,0,3,128,6,192,4,64, + 4,64,3,128,0,0,0,0,3,128,3,128,7,192,6,192, + 6,224,12,96,12,112,28,48,24,48,24,24,63,248,63,252, + 96,12,96,12,224,6,192,6,192,7,21,17,51,23,1,0, + 0,255,248,0,240,0,1,240,0,1,176,0,3,176,0,3, + 48,0,7,48,0,6,48,0,14,63,248,12,48,0,28,48, + 0,31,240,0,56,48,0,48,48,0,112,48,0,96,48,0, + 192,63,248,13,22,44,15,1,251,15,192,63,240,48,56,96, + 24,96,24,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,96,0,96,24,112,48,63,240,15,192,2,0,3,192,0, + 224,0,96,7,224,11,23,46,14,2,0,48,0,24,0,12, + 0,4,0,0,0,0,0,255,224,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,255,224,11,23,46,14,2,0,3, + 0,6,0,6,0,12,0,0,0,0,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,11,23,46, + 14,2,0,30,0,30,0,51,0,33,0,0,0,0,0,255, + 224,192,0,192,0,192,0,192,0,192,0,192,0,192,0,255, + 192,192,0,192,0,192,0,192,0,192,0,192,0,192,0,255, + 224,11,22,44,14,2,0,51,0,51,0,0,0,0,0,0, + 0,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,192,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,224,4,23,23,6,0,0,192,96,48,16,0,0,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 4,23,23,6,2,0,48,96,64,192,0,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,6,23,23, + 6,0,0,56,120,76,196,0,0,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,7,22,22,7,0,0, + 198,198,0,0,0,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,15,17,34,17,0,0,63,192,49,240, + 48,56,48,12,48,12,48,6,48,6,48,6,255,6,48,6, + 48,6,48,6,48,12,48,28,48,56,49,240,63,192,13,22, + 44,17,2,0,14,192,31,128,0,0,0,0,0,0,224,24, + 240,24,248,24,248,24,220,24,220,24,206,24,198,24,199,24, + 195,24,195,152,193,216,193,216,192,248,192,248,192,120,192,56, + 15,24,48,17,1,0,14,0,6,0,3,0,1,0,1,128, + 0,0,0,0,7,192,30,240,48,24,96,12,96,12,192,6, + 192,6,192,6,192,6,192,6,192,6,224,14,96,12,96,12, + 48,24,30,240,7,192,15,24,48,17,1,0,0,224,0,192, + 1,128,1,0,3,0,0,0,0,0,7,192,30,240,48,24, + 96,12,96,12,192,6,192,6,192,6,192,6,192,6,192,6, + 224,14,96,12,96,12,48,24,30,240,7,192,15,24,48,17, + 1,0,3,128,3,128,6,192,4,64,12,32,0,0,0,0, + 7,192,30,240,48,24,96,12,96,12,192,6,192,6,192,6, + 192,6,192,6,192,6,224,14,96,12,96,12,48,24,30,240, + 7,192,15,22,44,17,1,0,7,96,13,192,0,0,0,0, + 0,0,7,192,30,240,48,24,96,12,96,12,192,6,192,6, + 192,6,192,6,192,6,192,6,224,14,96,12,112,28,56,56, + 31,240,7,192,15,22,44,17,1,0,6,96,6,96,0,0, + 0,0,0,0,7,192,30,240,48,24,96,12,96,12,192,6, + 192,6,192,6,192,6,192,6,192,6,224,14,96,12,96,12, + 48,24,30,240,7,192,13,12,24,23,5,1,192,24,96,48, + 48,96,24,192,13,128,7,0,7,0,13,128,24,192,48,96, + 96,48,192,24,15,21,42,17,1,254,0,4,0,14,7,236, + 30,248,48,60,96,60,96,110,192,230,192,198,193,198,195,134, + 195,6,199,6,238,14,108,12,124,12,120,24,62,240,111,192, + 224,0,64,0,13,24,48,17,2,0,28,0,12,0,6,0, + 2,0,1,0,0,0,0,0,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 224,24,96,56,112,112,63,224,31,192,13,24,48,17,2,0, + 1,192,1,128,3,0,2,0,6,0,0,0,0,0,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,224,24,96,56,112,112,63,224,31,192, + 13,24,48,17,2,0,7,0,7,0,13,128,8,128,24,64, + 0,0,0,0,192,24,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,224,24,96,56, + 112,112,63,224,31,192,13,22,44,17,2,0,12,192,12,192, + 0,0,0,0,0,0,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 96,56,96,48,61,224,31,192,14,23,46,15,0,0,0,192, + 1,128,1,128,3,0,0,0,0,0,224,28,112,24,112,56, + 56,48,24,112,28,96,12,192,14,192,7,128,3,128,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,11,17,34,14, + 2,0,192,0,192,0,192,0,192,0,255,128,193,192,192,224, + 192,96,192,96,192,96,193,192,255,128,192,0,192,0,192,0, + 192,0,192,0,12,17,34,13,1,0,31,0,127,128,224,192, + 192,192,193,192,195,128,199,0,198,0,198,0,195,128,193,224, + 192,112,192,48,192,48,204,48,207,96,195,192,10,18,36,13, + 1,0,24,0,12,0,4,0,6,0,0,0,0,0,31,0, + 123,128,96,192,96,192,0,192,63,192,120,192,224,192,192,192, + 193,192,119,192,60,192,10,19,38,13,1,0,3,0,6,0, + 6,0,12,0,8,0,0,0,0,0,31,0,123,128,96,192, + 96,192,0,192,63,192,120,192,224,192,192,192,193,192,119,192, + 60,192,10,19,38,13,1,0,14,0,14,0,27,0,51,0, + 33,128,0,0,0,0,31,0,123,128,96,192,96,192,0,192, + 63,192,120,192,224,192,192,192,193,192,119,192,60,192,10,17, + 34,13,1,0,29,128,63,0,0,0,0,0,0,0,31,0, + 123,128,96,192,0,192,7,192,63,192,112,192,192,192,193,192, + 193,192,119,192,60,192,10,17,34,13,1,0,49,128,49,128, + 0,0,0,0,0,0,31,0,123,128,96,192,96,192,0,192, + 63,192,120,192,224,192,192,192,193,192,119,192,60,192,10,20, + 40,13,1,0,14,0,27,0,17,0,17,0,27,0,14,0, + 0,0,0,0,31,0,123,128,96,192,96,192,0,192,63,192, + 120,192,224,192,192,192,193,192,119,192,62,192,18,12,36,20, + 1,0,30,31,0,127,191,128,97,225,128,0,224,192,0,192, + 192,63,255,192,120,192,0,224,192,0,192,224,192,193,225,128, + 127,63,128,62,31,0,10,17,34,12,1,251,31,0,127,128, + 97,192,192,192,192,0,192,0,192,0,192,0,192,192,97,192, + 127,128,31,0,8,0,15,0,3,128,1,128,31,0,10,19, + 38,13,1,0,48,0,24,0,8,0,12,0,6,0,0,0, + 0,0,31,0,127,128,96,192,192,192,192,192,255,192,192,0, + 192,0,192,192,96,192,63,128,31,0,10,19,38,13,1,0, + 3,0,7,0,6,0,12,0,8,0,0,0,0,0,31,0, + 127,128,96,192,192,192,192,192,255,192,192,0,192,0,192,192, + 96,192,63,128,31,0,10,19,38,13,1,0,12,0,30,0, + 26,0,51,0,33,0,0,0,0,0,31,0,127,128,96,192, + 192,192,192,192,255,192,192,0,192,0,192,192,96,192,63,128, + 31,0,11,17,34,13,1,0,49,128,49,128,0,0,0,0, + 0,0,31,0,59,192,96,192,224,96,192,96,255,224,192,0, + 192,0,192,96,96,192,59,192,31,0,4,18,18,6,0,0, + 192,96,48,16,0,0,48,48,48,48,48,48,48,48,48,48, + 48,48,4,18,18,6,2,0,48,96,192,128,0,0,192,192, + 192,192,192,192,192,192,192,192,192,192,6,18,18,6,0,0, + 120,120,204,132,0,0,48,48,48,48,48,48,48,48,48,48, + 48,48,6,17,17,5,255,0,204,204,0,0,0,48,48,48, + 48,48,48,48,48,48,48,48,48,11,17,34,13,1,0,97, + 128,63,0,30,0,119,0,3,128,31,192,127,192,96,224,224, + 96,192,96,192,96,192,96,192,96,224,96,96,192,63,192,31, + 0,10,17,34,14,2,0,25,0,63,0,0,0,0,0,0, + 0,223,0,255,128,225,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,11,19,38,13,1,0,56, + 0,24,0,12,0,4,0,2,0,0,0,0,0,31,0,63, + 192,96,192,224,224,192,96,192,96,192,96,192,96,224,224,96, + 192,63,192,31,0,11,19,38,13,1,0,3,128,3,0,6, + 0,4,0,12,0,0,0,0,0,31,0,63,192,96,192,224, + 224,192,96,192,96,192,96,192,96,224,224,96,192,63,192,31, + 0,11,19,38,13,1,0,14,0,14,0,27,0,17,0,49, + 128,0,0,0,0,31,0,63,192,96,192,224,224,192,96,192, + 96,192,96,192,96,224,224,96,192,63,192,31,0,11,17,34, + 13,1,0,29,128,63,0,0,0,0,0,0,0,31,0,63, + 192,96,192,224,224,192,96,192,96,192,96,192,96,224,224,96, + 192,63,192,31,0,11,17,34,13,1,0,49,128,49,128,0, + 0,0,0,0,0,31,0,63,192,96,192,224,224,192,96,192, + 96,192,96,192,96,224,224,96,192,63,192,31,0,14,10,20, + 24,5,2,3,0,3,0,3,0,0,0,0,0,255,252,0, + 0,3,0,3,0,3,0,11,15,30,13,1,254,0,32,0, + 96,31,192,63,192,97,192,227,224,194,96,198,96,204,96,216, + 96,248,224,112,192,123,192,95,0,192,0,10,19,38,14,2, + 0,48,0,24,0,24,0,12,0,4,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,225,192,119,192,60,192,10,19,38,14,2,0,3,0,6, + 0,6,0,12,0,8,0,0,0,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,119, + 192,60,192,10,19,38,14,2,0,12,0,30,0,30,0,51, + 0,33,0,0,0,0,0,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,225,192,119,192,60,192,10, + 17,34,14,2,0,51,0,51,0,0,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,11,23,46,12,1,251,3,0,3, + 0,6,0,12,0,0,0,0,0,192,96,192,192,224,192,97, + 192,113,128,49,128,51,128,59,0,27,0,30,0,14,0,14, + 0,12,0,12,0,220,0,248,0,112,0,11,22,44,14,2, + 251,192,0,192,0,192,0,192,0,192,0,207,0,251,192,224, + 192,224,224,192,96,192,96,192,96,192,96,224,224,224,192,251, + 192,207,0,192,0,192,0,192,0,192,0,192,0,11,22,44, + 13,1,251,49,128,49,128,0,0,0,0,0,0,192,96,224, + 96,96,224,96,192,113,192,49,128,57,128,27,128,27,0,31, + 0,14,0,14,0,14,0,12,0,12,0,28,0,24,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 17 + Calculated Max Values w=14 h=18 x= 5 y= 8 dx=24 dy= 0 ascent=17 len=34 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =17 descent= 0 + X Font ascent =17 descent= 0 + Max Font ascent =17 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17n[510] U8G_SECTION(".progmem.u8g_font_fur17n") = { + 0,31,30,254,250,17,0,0,0,0,42,57,0,17,253,17, + 0,9,9,18,15,3,8,34,0,54,0,22,0,28,0,255, + 128,156,128,20,0,54,0,34,0,14,14,28,24,5,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,252,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,4,6,6,6,1, + 253,112,112,96,96,192,192,6,1,1,8,1,5,252,2,3, + 3,6,2,0,192,192,192,7,18,18,9,1,255,6,6,4, + 12,12,8,8,24,24,16,48,48,32,32,96,96,64,192,10, + 17,34,13,1,0,30,0,63,128,97,128,96,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,97, + 192,97,128,63,128,30,0,5,17,17,13,3,0,56,120,248, + 216,24,24,24,24,24,24,24,24,24,24,24,24,24,10,17, + 34,13,1,0,30,0,127,128,97,128,224,192,224,192,0,192, + 1,192,3,128,3,128,7,0,14,0,28,0,56,0,112,0, + 96,0,224,0,255,192,10,17,34,13,1,0,31,0,127,128, + 96,192,224,192,0,192,0,192,3,128,14,0,7,128,1,192, + 0,192,0,192,192,192,224,192,97,192,127,128,30,0,11,17, + 34,13,1,0,3,128,3,128,7,128,13,128,13,128,25,128, + 57,128,49,128,97,128,97,128,193,128,255,224,255,224,1,128, + 1,128,1,128,1,128,10,17,34,13,1,0,127,128,96,0, + 96,0,96,0,96,0,111,0,127,128,97,128,64,192,0,192, + 0,192,0,192,0,192,192,192,225,128,127,0,30,0,11,17, + 34,13,1,0,31,0,59,128,96,192,224,192,192,0,192,0, + 207,0,223,192,241,192,224,224,192,96,192,96,192,96,192,96, + 96,192,59,192,31,0,10,17,34,13,1,0,255,192,0,192, + 0,192,1,128,1,128,3,128,3,0,3,0,7,0,6,0, + 6,0,14,0,12,0,12,0,28,0,24,0,56,0,11,17, + 34,13,1,0,31,0,59,128,96,192,96,192,96,192,96,192, + 49,128,31,0,59,128,96,192,192,96,192,96,192,96,192,96, + 96,224,123,192,31,0,11,17,34,13,1,0,31,0,127,192, + 96,192,192,224,192,96,192,96,192,224,224,224,113,224,63,96, + 0,96,0,96,0,224,96,192,97,192,127,128,31,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=22 h=25 x= 6 y=14 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17r[3146] U8G_SECTION(".progmem.u8g_font_fur17r") = { + 0,31,30,254,250,17,4,5,8,170,32,127,251,19,250,17, + 251,0,0,0,7,0,0,2,17,17,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,192,192,7,7, + 7,10,2,10,206,206,198,198,196,196,196,15,17,34,17,1, + 0,1,24,3,24,3,24,3,48,6,48,63,254,6,32,4, + 96,12,96,12,64,255,248,24,192,24,128,17,128,49,128,49, + 128,49,0,11,21,42,13,1,254,4,0,4,0,63,0,127, + 128,196,192,196,192,196,0,196,0,244,0,127,0,63,192,5, + 224,4,224,4,96,196,96,196,96,228,96,127,192,63,128,4, + 0,4,0,19,17,51,21,1,0,60,2,0,126,4,0,227, + 12,0,195,8,0,195,24,0,195,16,0,195,48,0,102,96, + 0,62,71,128,0,207,192,0,152,96,1,152,96,1,24,96, + 2,24,96,6,24,96,4,15,192,12,7,128,15,17,34,17, + 1,0,15,0,63,128,48,192,48,192,49,192,59,128,31,0, + 28,24,118,24,103,24,227,152,193,216,192,240,224,112,96,120, + 123,252,31,142,2,7,7,8,3,10,192,192,192,192,192,192, + 64,4,20,20,8,2,253,48,48,96,96,96,224,192,192,192, + 192,192,192,192,192,224,96,96,96,48,48,4,20,20,8,2, + 253,192,64,96,96,96,48,48,48,48,48,48,48,48,48,48, + 96,96,96,64,192,9,9,18,15,3,8,34,0,54,0,22, + 0,28,0,255,128,156,128,20,0,54,0,34,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4, + 6,6,6,1,253,112,112,96,96,192,192,6,1,1,8,1, + 5,252,2,3,3,6,2,0,192,192,192,7,18,18,9,1, + 255,6,6,4,12,12,8,8,24,24,16,48,48,32,32,96, + 96,64,192,10,17,34,13,1,0,30,0,63,128,97,128,96, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,97,192,97,128,63,128,30,0,5,17,17,13,3, + 0,56,120,248,216,24,24,24,24,24,24,24,24,24,24,24, + 24,24,10,17,34,13,1,0,30,0,127,128,97,128,224,192, + 224,192,0,192,1,192,3,128,3,128,7,0,14,0,28,0, + 56,0,112,0,96,0,224,0,255,192,10,17,34,13,1,0, + 31,0,127,128,96,192,224,192,0,192,0,192,3,128,14,0, + 7,128,1,192,0,192,0,192,192,192,224,192,97,192,127,128, + 30,0,11,17,34,13,1,0,3,128,3,128,7,128,13,128, + 13,128,25,128,57,128,49,128,97,128,97,128,193,128,255,224, + 255,224,1,128,1,128,1,128,1,128,10,17,34,13,1,0, + 127,128,96,0,96,0,96,0,96,0,111,0,127,128,97,128, + 64,192,0,192,0,192,0,192,0,192,192,192,225,128,127,0, + 30,0,11,17,34,13,1,0,31,0,59,128,96,192,224,192, + 192,0,192,0,207,0,223,192,241,192,224,224,192,96,192,96, + 192,96,192,96,96,192,59,192,31,0,10,17,34,13,1,0, + 255,192,0,192,0,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,14,0,12,0,12,0,28,0,24,0, + 56,0,11,17,34,13,1,0,31,0,59,128,96,192,96,192, + 96,192,96,192,49,128,31,0,59,128,96,192,192,96,192,96, + 192,96,192,96,96,224,123,192,31,0,11,17,34,13,1,0, + 31,0,127,192,96,192,192,224,192,96,192,96,192,224,224,224, + 113,224,63,96,0,96,0,96,0,224,96,192,97,192,127,128, + 31,0,2,12,12,6,2,0,192,192,192,0,0,0,0,0, + 0,192,192,192,3,15,15,6,1,253,96,96,96,0,0,0, + 0,0,0,96,96,96,192,192,192,14,12,24,24,5,1,0, + 12,0,60,1,224,7,0,56,0,224,0,224,0,60,0,7, + 0,1,224,0,60,0,12,14,5,10,24,5,4,255,252,0, + 0,0,0,0,0,255,252,14,12,24,24,5,1,192,0,240, + 0,30,0,3,128,0,112,0,28,0,28,0,240,3,128,30, + 0,240,0,192,0,9,17,34,11,1,0,60,0,255,0,195, + 128,129,128,1,128,1,128,3,0,7,0,14,0,28,0,24, + 0,24,0,24,0,0,0,0,0,24,0,24,0,20,22,66, + 23,1,251,1,252,0,7,255,0,30,7,128,56,1,192,48, + 0,224,97,236,96,99,252,112,227,28,48,198,12,48,198,12, + 48,198,12,48,198,12,48,198,12,48,198,12,48,227,28,96, + 99,31,224,97,231,192,48,0,0,56,0,0,28,0,0,7, + 220,0,1,252,0,16,17,34,17,1,0,3,128,3,128,7, + 192,6,192,14,224,12,96,12,112,24,48,24,48,56,56,63, + 248,63,252,96,12,96,12,224,6,192,6,192,7,12,17,34, + 16,2,0,255,128,195,224,192,112,192,48,192,48,192,48,192, + 112,192,224,255,128,193,224,192,112,192,48,192,48,192,48,192, + 112,195,224,255,128,13,17,34,15,1,0,15,192,63,240,48, + 56,96,24,96,24,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,24,48,48,63,240,15,192,13,17,34, + 17,2,0,255,0,199,192,192,96,192,48,192,48,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,48,192,48,192, + 224,199,192,255,0,11,17,34,14,2,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,10,17,34, + 13,2,0,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,14,17,34,17,1,0,7,224,31,248,48, + 28,96,12,96,0,192,0,192,0,192,0,192,252,192,12,192, + 12,224,12,96,12,112,12,56,12,31,252,7,248,12,17,34, + 16,2,0,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,255,240,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,192,48,2,17,17,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,10,17,34,13, + 1,0,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,225,128, + 127,128,62,0,12,17,34,15,2,0,192,96,192,192,193,128, + 195,0,199,0,206,0,220,0,248,0,220,0,222,0,206,0, + 199,0,195,128,193,192,192,224,192,224,192,112,10,17,34,12, + 2,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 255,192,255,192,17,17,51,21,2,0,240,7,128,240,7,128, + 240,7,128,216,13,128,216,13,128,220,29,128,204,25,128,204, + 25,128,206,57,128,198,49,128,198,49,128,195,97,128,195,97, + 128,195,97,128,193,193,128,193,193,128,193,193,128,13,17,34, + 17,2,0,224,24,240,24,248,24,248,24,220,24,220,24,206, + 24,198,24,199,24,195,24,195,152,193,216,193,216,192,248,192, + 248,192,120,192,56,15,17,34,17,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,240,7,192,11,17,34, + 14,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 224,193,192,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,17,34,18,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,248,7,255,11,17,34, + 15,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 96,193,192,255,0,193,192,192,192,192,192,192,224,192,96,192, + 96,192,96,192,96,12,17,34,15,1,0,31,128,63,224,96, + 112,192,48,192,0,224,0,240,0,127,128,63,224,3,240,0, + 112,0,48,192,48,192,48,96,112,123,224,31,128,13,17,34, + 15,1,0,255,248,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,13,17,34,17,2,0,192,24,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,96,56,96,48,61,224,31,192,14,17,34, + 15,1,0,192,28,192,24,224,56,96,48,96,48,112,112,48, + 96,48,96,56,224,24,192,24,192,29,192,13,128,13,128,15, + 128,7,0,7,0,22,17,51,22,0,0,224,56,28,96,120, + 28,96,120,24,112,120,24,48,108,56,48,204,48,48,204,48, + 24,206,48,24,198,112,25,134,96,29,134,96,13,131,96,13, + 131,192,15,3,192,7,3,192,7,1,192,6,1,128,14,17, + 34,16,1,0,112,24,112,56,56,48,28,96,28,224,14,192, + 7,128,7,128,7,128,7,192,13,192,28,224,24,112,48,112, + 112,56,96,28,224,28,14,17,34,15,0,0,224,28,112,24, + 112,56,56,48,24,112,28,96,12,192,14,192,7,128,3,128, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,12,17, + 34,14,1,0,127,240,0,48,0,112,0,224,1,192,1,192, + 3,128,7,0,7,0,14,0,28,0,60,0,56,0,112,0, + 240,0,224,0,255,240,4,22,22,9,2,251,240,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,18,18,9,1,255,192,192,64,96,96,32,48,48, + 16,16,24,24,8,12,12,4,4,6,4,22,22,10,3,251, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,11,14,28,23,6,0,4,0,14,0, + 10,0,27,0,17,0,17,0,49,128,32,128,32,128,96,192, + 64,64,192,96,128,32,128,32,12,1,2,12,0,253,255,240, + 4,4,4,5,0,14,192,96,96,48,10,12,24,13,1,0, + 31,0,123,128,96,192,96,192,0,192,63,192,120,192,224,192, + 192,192,193,192,119,192,60,192,11,17,34,14,2,0,192,0, + 192,0,192,0,192,0,192,0,207,0,223,192,224,192,224,224, + 192,96,192,96,192,96,192,96,224,224,224,192,251,128,207,0, + 10,12,24,12,1,0,31,0,127,128,97,192,192,192,192,0, + 192,0,192,0,192,0,192,192,97,192,127,128,31,0,11,17, + 34,14,1,0,0,96,0,96,0,96,0,96,0,96,30,96, + 127,224,97,224,224,224,192,96,192,96,192,96,192,96,224,224, + 96,224,59,224,30,96,10,12,24,13,1,0,31,0,127,128, + 96,192,192,192,192,192,255,192,192,0,192,0,192,192,96,192, + 63,128,31,0,7,17,17,9,1,0,30,62,48,48,48,254, + 48,48,48,48,48,48,48,48,48,48,48,11,17,34,14,1, + 251,31,96,63,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,96,224,96,192,63, + 128,31,0,10,17,34,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,251,128,225,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,2,17,17,5,1, + 0,192,192,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,3,22,22,7,2,251,96,96,0,0,0,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,224,192,9,17, + 34,12,2,0,192,0,192,0,192,0,192,0,192,0,195,128, + 199,0,206,0,220,0,216,0,248,0,216,0,204,0,206,0, + 199,0,195,0,195,128,2,17,17,6,2,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,18,12,36, + 21,2,0,207,31,0,255,191,128,225,225,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,10,12,24,14,2,0,223,0,255, + 128,225,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,12,24,13,1,0,31,0,63,192,96, + 192,224,224,192,96,192,96,192,96,192,96,224,224,96,192,63, + 192,31,0,11,17,34,14,2,251,207,0,251,192,224,192,224, + 224,192,96,192,96,192,96,192,96,224,224,224,192,251,192,207, + 0,192,0,192,0,192,0,192,0,192,0,11,17,34,14,1, + 251,30,96,123,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,0,96,0,96,0, + 96,0,96,7,12,12,9,2,0,222,252,224,192,192,192,192, + 192,192,192,192,192,9,12,24,11,1,0,62,0,127,128,193, + 128,192,0,224,0,126,0,31,128,3,128,193,128,193,128,119, + 0,62,0,7,15,15,9,1,0,48,48,48,254,48,48,48, + 48,48,48,48,48,48,58,30,10,12,24,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,192,60,192,11,12,24,12,1,0,192,96,192,192, + 224,192,97,192,97,128,49,128,51,0,59,0,27,0,30,0, + 30,0,12,0,18,12,36,19,0,0,224,224,192,96,224,192, + 97,161,192,113,177,128,49,177,128,51,49,128,51,27,0,27, + 27,0,30,27,0,30,14,0,14,14,0,12,14,0,11,12, + 24,13,1,0,224,192,113,192,49,128,59,0,31,0,14,0, + 30,0,31,0,51,128,113,128,97,192,192,224,11,17,34,12, + 1,251,192,96,192,192,224,192,97,192,113,128,49,128,51,128, + 59,0,27,0,30,0,14,0,14,0,12,0,12,0,28,0, + 24,0,24,0,8,12,12,10,1,0,255,3,7,14,12,24, + 56,48,96,224,192,255,8,23,23,11,2,251,15,14,24,24, + 24,24,24,24,24,56,112,224,240,48,24,24,24,24,24,24, + 24,12,15,1,25,25,8,4,250,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,8,23,23,11,2,251,224,112,56,24,24,24,24,24, + 24,28,14,7,14,28,24,24,24,24,24,24,24,48,240,12, + 2,4,12,0,5,62,112,231,224,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=26 h=29 x= 7 y=17 dx=29 dy= 0 ascent=28 len=96 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =28 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20[8654] U8G_SECTION(".progmem.u8g_font_fur20") = { + 0,38,35,254,249,20,5,12,11,23,32,255,251,28,249,20, + 251,0,0,0,8,0,0,3,20,20,11,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,0,0,224,224, + 224,9,8,16,13,2,12,227,128,227,128,227,0,227,0,227, + 0,195,0,195,0,67,0,18,20,60,21,1,0,0,195,0, + 0,195,0,0,195,0,1,198,0,1,134,0,1,134,0,31, + 255,192,63,255,192,3,12,0,3,24,0,6,24,0,6,24, + 0,127,255,128,255,255,0,12,48,0,12,48,0,28,96,0, + 24,96,0,24,96,0,24,192,0,14,25,50,16,1,253,2, + 0,2,0,31,192,63,224,114,112,98,48,226,56,226,0,226, + 0,114,0,126,0,63,224,15,240,2,248,2,56,2,28,226, + 28,226,28,226,24,114,56,127,240,31,192,2,0,2,0,2, + 0,23,20,60,25,1,0,30,0,192,127,128,192,97,129,128, + 225,193,0,225,195,0,225,198,0,225,198,0,97,140,0,127, + 136,0,30,24,224,0,49,248,0,51,156,0,103,14,0,71, + 14,0,199,14,1,135,14,1,135,14,3,3,12,2,3,252, + 6,0,240,19,20,60,22,2,0,7,192,0,31,240,0,56, + 48,0,56,48,0,56,48,0,56,112,0,29,224,0,15,192, + 0,31,3,128,63,131,128,115,195,128,225,227,128,224,243,0, + 224,123,0,224,63,0,224,30,0,112,15,0,120,31,128,63, + 251,192,15,225,224,3,8,8,10,4,12,224,224,192,192,192, + 192,192,192,5,24,24,10,3,252,24,48,48,112,112,96,96, + 224,224,224,224,224,224,224,224,224,224,96,96,112,112,48,48, + 24,5,24,24,10,3,252,192,192,96,96,96,112,112,48,48, + 48,56,56,56,56,48,48,48,112,112,96,96,96,192,192,11, + 11,22,19,4,9,17,0,49,128,27,0,27,0,14,0,255, + 224,142,32,27,0,27,0,49,128,17,0,17,16,48,29,6, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,1,128,0,255,255,128,255,255,128,1,128,0,1, + 128,0,1,128,0,1,128,0,1,128,0,1,128,0,1,128, + 0,5,7,7,8,1,253,56,56,112,112,96,96,224,7,2, + 2,9,1,6,254,254,3,3,3,8,3,0,224,224,224,8, + 21,21,11,2,255,3,6,6,6,4,12,12,12,24,24,24, + 48,48,48,96,96,96,64,192,192,192,13,20,40,16,1,0, + 15,128,63,192,112,224,96,112,96,112,224,48,224,48,224,56, + 224,56,224,56,224,56,224,56,224,56,224,48,224,48,96,112, + 112,112,48,224,63,192,15,128,7,20,20,16,4,0,30,62, + 126,254,206,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,12,20,40,16,2,0,31,128,63,192,112,96,112,112, + 224,112,0,112,0,112,0,112,0,224,1,224,3,192,3,128, + 7,0,14,0,28,0,60,0,120,0,240,0,255,240,255,240, + 13,20,40,16,1,0,15,128,63,224,112,112,112,48,224,56, + 0,56,0,48,0,224,7,192,7,192,0,224,0,112,0,56, + 0,56,224,56,224,56,224,56,112,112,63,224,31,128,14,20, + 40,16,1,0,0,240,1,240,1,240,3,240,7,112,6,112, + 14,112,28,112,24,112,56,112,112,112,96,112,224,112,255,252, + 255,252,0,112,0,112,0,112,0,112,0,112,13,20,40,16, + 1,0,255,224,255,224,224,0,224,0,224,0,224,0,224,0, + 239,128,255,224,240,112,224,112,224,48,0,56,0,56,0,56, + 224,48,224,112,112,224,127,192,31,128,13,20,40,16,1,0, + 15,192,63,224,120,112,112,48,224,56,224,0,224,0,231,192, + 255,224,248,240,224,56,224,56,224,56,224,56,224,56,224,56, + 96,48,48,112,63,224,15,128,12,20,40,16,2,0,255,240, + 255,240,0,112,0,112,0,96,0,224,0,224,1,192,1,192, + 1,128,3,128,3,128,3,0,7,0,7,0,14,0,14,0, + 14,0,28,0,28,0,13,20,40,16,1,0,15,128,63,224, + 112,112,224,48,224,56,224,56,96,48,112,112,31,192,31,192, + 56,96,96,48,224,56,224,56,224,56,224,56,224,56,112,112, + 63,224,15,128,13,20,40,16,1,0,31,192,63,224,112,112, + 224,56,224,56,224,56,224,56,224,56,224,56,112,120,63,248, + 31,56,0,56,0,56,0,56,96,48,96,112,112,224,63,192, + 31,128,3,14,14,8,3,0,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,4,17,17,8,2,253,112,112,112,0, + 0,0,0,0,0,0,112,112,96,224,192,192,192,17,14,42, + 29,6,1,0,1,128,0,15,128,0,124,0,1,224,0,15, + 0,0,120,0,0,224,0,0,240,0,0,62,0,0,7,128, + 0,0,240,0,0,62,0,0,7,128,0,0,128,17,7,21, + 29,6,5,255,255,128,255,255,128,0,0,0,0,0,0,0, + 0,0,255,255,128,255,255,128,17,14,42,29,6,1,192,0, + 0,248,0,0,31,0,0,3,192,0,0,120,0,0,15,0, + 0,3,128,0,7,128,0,62,0,0,240,0,7,128,0,62, + 0,0,240,0,0,128,0,0,12,20,40,15,1,0,31,0, + 63,192,127,224,224,240,64,112,0,112,0,112,0,96,0,192, + 3,128,7,0,14,0,14,0,14,0,14,0,0,0,0,0, + 14,0,14,0,14,0,25,24,96,28,2,252,0,127,0,0, + 3,255,224,0,15,129,248,0,30,0,60,0,56,0,14,0, + 48,0,6,0,112,125,199,0,96,255,199,0,225,195,195,0, + 227,131,195,0,227,129,195,128,227,129,195,128,227,129,195,128, + 227,129,195,0,227,129,195,0,225,131,199,0,113,199,206,0, + 112,252,252,0,56,56,48,0,60,0,0,0,30,0,0,0, + 15,128,64,0,3,255,192,0,0,127,128,0,19,20,60,21, + 1,0,0,224,0,1,240,0,1,240,0,3,176,0,3,184, + 0,3,56,0,7,28,0,7,28,0,14,14,0,14,14,0, + 30,15,0,28,7,0,28,7,0,63,255,128,63,255,128,112, + 1,192,112,1,192,224,0,224,224,0,224,224,0,224,15,20, + 40,19,2,0,255,224,255,248,224,120,224,28,224,28,224,28, + 224,28,224,24,224,56,255,224,255,240,224,28,224,12,224,14, + 224,14,224,14,224,30,224,60,255,248,255,224,16,20,40,19, + 2,0,7,240,31,252,60,14,48,6,112,7,96,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,96,0, + 96,7,112,6,56,14,31,252,7,240,16,20,40,20,2,0, + 255,192,255,240,224,120,224,28,224,14,224,14,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,14,224,14, + 224,28,224,120,255,240,255,192,13,20,40,17,2,0,255,248, + 255,248,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,240,255,240,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,248,255,248,12,20,40,16,2,0,255,240,255,240, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,18,20,60,22,2,0,3,248,0,15,254,0, + 30,15,128,56,3,128,112,1,192,96,0,0,224,0,0,224, + 0,0,224,0,0,224,63,192,224,63,192,224,1,192,224,1, + 192,224,1,192,112,1,192,112,1,192,56,1,192,30,7,192, + 15,255,192,3,254,0,15,20,40,19,2,0,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,255,254, + 255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,3,20,20,7,2,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,12,20, + 40,16,2,0,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,224,112,224,96,113,224,63,192,31,128,15,20,40,18, + 2,0,224,60,224,120,224,240,224,224,225,192,227,128,231,0, + 238,0,252,0,254,0,238,0,239,0,231,128,227,192,225,224, + 224,240,224,120,224,56,224,60,224,30,12,20,40,15,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,240,255,240,21,20,60,25,2,0,248,0, + 248,248,0,248,248,1,248,252,1,248,252,1,184,236,3,184, + 238,3,184,238,3,56,230,7,56,231,6,56,227,14,56,227, + 142,56,227,140,56,225,156,56,225,220,56,225,216,56,224,248, + 56,224,240,56,224,112,56,224,112,56,16,20,40,20,2,0, + 240,7,248,7,248,7,252,7,252,7,238,7,238,7,231,7, + 231,135,227,135,227,199,225,199,224,231,224,231,224,119,224,119, + 224,63,224,63,224,31,224,31,18,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,252,0,3,240,0,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,120,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,20,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,255,240,3,255,240,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,112,255,224,255,224,224,112,224,56,224,56,224,56,224,24, + 224,24,224,24,224,28,224,28,15,20,40,19,2,0,15,192, + 63,240,120,120,96,28,224,28,224,0,224,0,120,0,127,0, + 63,240,7,252,0,60,0,14,0,14,224,14,224,14,224,14, + 120,60,63,248,15,192,16,20,40,18,1,0,255,255,255,255, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,16,20,40,20,2,0,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,96,6,112,14,60,60,31,248, + 15,224,17,20,60,18,1,0,224,3,128,224,7,0,224,7, + 0,112,7,0,112,14,0,112,14,0,56,14,0,56,28,0, + 56,28,0,28,56,0,28,56,0,12,56,0,14,112,0,14, + 112,0,7,112,0,7,224,0,7,224,0,3,224,0,3,192, + 0,3,192,0,26,20,80,27,1,0,224,28,1,192,224,30, + 3,128,224,62,3,128,224,62,3,128,112,54,3,0,112,119, + 7,0,112,115,7,0,48,99,7,0,56,99,134,0,56,227, + 142,0,24,225,142,0,28,193,140,0,28,193,220,0,29,193, + 220,0,13,192,216,0,15,128,216,0,15,128,248,0,7,128, + 120,0,7,0,112,0,7,0,112,0,18,20,60,20,1,0, + 120,7,128,56,7,0,60,14,0,30,30,0,14,28,0,15, + 56,0,7,56,0,3,240,0,1,224,0,1,224,0,3,224, + 0,3,240,0,7,120,0,14,56,0,14,28,0,28,30,0, + 56,15,0,120,7,0,112,7,128,224,3,192,17,20,60,19, + 1,0,224,3,128,240,7,0,112,7,0,56,14,0,60,28, + 0,28,28,0,14,56,0,14,48,0,7,112,0,7,96,0, + 3,224,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,15,20, + 40,17,1,0,255,252,255,252,0,28,0,56,0,120,0,240, + 0,224,1,192,3,192,3,128,7,0,14,0,30,0,28,0, + 56,0,112,0,240,0,224,0,255,254,255,254,5,25,25,11, + 3,251,248,248,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,248,248,9,21,42,11,1, + 255,192,0,96,0,96,0,96,0,48,0,48,0,48,0,24, + 0,24,0,24,0,8,0,12,0,12,0,12,0,6,0,6, + 0,6,0,3,0,3,0,3,0,1,128,6,25,25,12,3, + 251,252,252,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,252,252,14,17,34,28,7,0, + 3,0,3,0,7,128,7,128,4,128,12,192,8,64,24,96, + 24,96,16,32,48,48,48,48,96,24,96,24,64,8,192,12, + 192,12,14,2,4,14,0,252,255,252,255,252,6,5,5,6, + 255,16,224,112,48,24,12,12,14,28,15,1,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,13,20,40,16,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,231,192,255,224,240, + 112,224,48,224,56,224,56,224,56,224,56,224,56,224,56,224, + 112,240,112,255,224,231,128,12,14,28,14,1,0,31,128,63, + 224,112,112,224,112,224,112,224,0,224,0,224,0,224,0,224, + 112,96,112,112,224,63,224,31,128,13,20,40,16,1,0,0, + 56,0,56,0,56,0,56,0,56,0,56,31,56,63,248,112, + 248,96,120,224,56,224,56,224,56,224,56,224,56,224,56,112, + 56,112,120,63,248,15,184,13,14,28,15,1,0,15,128,63, + 224,112,112,96,48,224,56,255,248,255,248,224,0,224,0,224, + 56,96,112,112,112,63,224,15,128,9,20,40,10,1,0,7, + 128,31,128,28,0,28,0,28,0,28,0,255,128,255,128,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,13,19,38,16,1,251,31,184,63, + 248,112,120,96,56,224,56,224,56,224,56,224,56,224,56,224, + 56,96,56,112,120,63,248,31,56,0,56,112,48,112,112,63, + 224,15,128,12,20,40,16,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,239,192,255,224,240,240,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,3,20,20,7,2,0,224,224,224,0,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,5,25,25,7,1, + 251,56,56,56,0,0,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,240,224,11,20,40,14,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,225,224,225,192, + 227,128,231,0,238,0,252,0,252,0,254,0,238,0,231,0, + 227,128,227,192,225,192,224,224,3,20,20,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,21,14,42,25,2,0,231,195,224,255,239,240,240,248, + 56,224,120,56,224,112,24,224,112,24,224,112,24,224,112,24, + 224,112,24,224,112,24,224,112,24,224,112,24,224,112,24,224, + 112,24,12,14,28,16,2,0,239,128,255,224,240,240,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,14,14,28,16,1,0,15,192,63,224,112,112, + 112,56,224,24,224,28,224,28,224,28,224,28,224,24,112,56, + 112,112,63,224,15,192,14,19,38,17,2,251,231,192,255,240, + 240,112,240,56,224,24,224,28,224,28,224,28,224,28,224,24, + 224,56,240,112,255,240,231,192,224,0,224,0,224,0,224,0, + 224,0,14,19,38,17,1,251,15,156,63,220,112,124,112,60, + 224,28,224,28,224,28,224,28,224,28,224,28,96,60,112,124, + 63,252,15,156,0,28,0,28,0,28,0,28,0,28,8,14, + 14,10,2,0,239,255,240,224,224,224,224,224,224,224,224,224, + 224,224,12,14,28,14,1,0,31,128,127,192,112,224,224,224, + 224,0,120,0,63,128,15,224,0,224,0,112,224,112,224,224, + 127,192,63,128,8,18,18,10,1,0,8,56,56,56,255,255, + 56,56,56,56,56,56,56,56,56,56,31,15,12,14,28,16, + 2,0,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,240,240,127,240,63,112,13,14, + 28,15,1,0,224,24,224,56,224,56,112,48,112,112,56,96, + 56,224,24,192,28,192,29,192,15,128,15,128,7,0,7,0, + 21,14,42,23,1,0,192,112,24,224,248,56,224,248,56,96, + 216,48,97,216,112,113,156,112,49,140,96,51,140,224,59,14, + 224,27,6,192,27,7,192,30,7,128,14,3,128,14,3,128, + 13,14,28,15,1,0,240,56,112,112,56,96,28,224,31,192, + 15,128,7,0,7,128,15,192,29,192,56,224,112,112,112,120, + 224,56,13,19,38,15,1,251,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,15,128, + 7,128,7,0,7,0,6,0,14,0,14,0,12,0,10,14, + 28,12,1,0,255,192,255,192,1,192,3,128,7,0,14,0, + 14,0,28,0,56,0,48,0,112,0,224,0,255,192,255,192, + 9,27,54,13,2,249,3,128,15,128,14,0,12,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,56,0,248,0, + 240,0,240,0,56,0,24,0,28,0,28,0,28,0,28,0, + 12,0,12,0,12,0,14,0,15,128,3,128,1,29,29,9, + 4,249,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,9, + 27,54,13,2,249,240,0,248,0,24,0,28,0,28,0,28, + 0,28,0,28,0,28,0,12,0,12,0,14,0,7,128,3, + 128,7,128,14,0,12,0,12,0,28,0,28,0,28,0,28, + 0,28,0,28,0,24,0,248,0,240,0,15,3,6,15,0, + 5,62,14,127,252,224,248,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,8,0,0,3,19, + 19,10,4,251,224,224,224,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,12,20,40,16,2,253,0,192,0, + 128,0,128,31,128,63,192,113,96,227,96,226,0,226,0,230, + 0,228,0,228,0,236,112,232,96,120,224,63,192,31,128,16, + 0,48,0,48,0,14,20,40,16,1,0,7,224,31,248,60, + 60,56,28,56,0,56,0,56,0,255,128,255,128,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,255, + 248,255,248,16,14,28,18,1,4,192,3,97,134,55,236,28, + 56,24,24,48,12,48,12,48,12,48,12,24,24,28,56,63, + 252,115,198,192,3,15,20,40,17,1,0,224,14,224,28,112, + 28,48,56,56,56,24,112,252,126,252,254,14,224,7,192,255, + 254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,1,25,25,9,4,251,128,128,128,128,128,128,128, + 128,128,128,128,0,0,0,128,128,128,128,128,128,128,128,128, + 128,128,10,25,50,12,1,251,31,0,63,128,112,0,224,0, + 224,0,112,0,120,0,62,0,31,0,127,128,113,192,225,192, + 225,192,225,128,247,128,126,0,31,0,7,128,3,192,1,192, + 1,192,1,192,131,128,255,0,60,0,8,3,3,8,0,17, + 231,231,231,21,20,60,25,2,0,1,252,0,7,255,0,28, + 3,128,56,112,192,35,254,96,103,142,48,199,7,16,134,7, + 24,142,0,8,142,0,8,142,0,8,134,0,8,134,7,24, + 199,7,16,67,254,16,32,248,32,48,0,64,28,1,128,7, + 143,0,1,252,0,10,13,26,12,1,7,63,0,127,128,97, + 128,1,128,31,128,127,128,225,128,193,128,227,128,127,128,24, + 0,0,0,255,192,11,11,22,16,2,2,12,96,24,224,56, + 192,113,128,99,128,227,0,99,128,113,128,56,192,24,224,12, + 96,15,6,12,18,2,6,255,254,255,254,0,6,0,6,0, + 6,0,6,255,21,20,60,25,2,0,1,252,0,7,255,0, + 28,3,128,59,252,192,35,254,96,99,3,48,195,3,16,131, + 3,24,131,254,8,131,252,8,131,6,8,131,6,8,131,3, + 24,195,3,16,67,3,48,35,3,96,56,0,192,28,3,128, + 7,255,0,1,252,0,8,2,2,8,0,17,255,255,6,6, + 6,8,1,14,120,204,132,132,204,120,17,17,51,29,6,0, + 1,128,0,1,128,0,1,128,0,1,128,0,1,128,0,255, + 255,128,255,255,128,1,128,0,1,128,0,1,128,0,1,128, + 0,1,128,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,9,11,22,11,1,9,62,0,127,0,227,128,3, + 128,3,0,7,0,28,0,56,0,112,0,255,128,255,128,8, + 11,11,10,1,9,62,127,195,3,30,30,7,3,195,126,60, + 5,5,5,6,2,16,56,48,96,224,192,255,13,24,48,16, + 1,252,15,248,62,32,126,32,126,32,254,32,254,32,254,32, + 126,32,62,32,30,32,2,32,2,32,2,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 2,32,3,3,3,7,2,8,224,224,224,7,7,7,7,1, + 249,32,32,60,14,6,254,248,4,10,10,8,2,10,112,240, + 176,48,48,48,48,48,48,48,10,12,24,12,1,8,30,0, + 99,128,193,128,192,192,192,192,192,192,192,192,193,128,99,128, + 30,0,0,0,255,192,12,11,22,16,2,2,227,0,99,128, + 49,128,56,192,24,224,28,112,24,224,56,192,49,128,99,128, + 227,0,18,20,60,22,2,0,112,12,0,240,12,0,176,24, + 0,48,24,0,48,48,0,48,96,0,48,96,0,48,192,0, + 48,192,0,49,131,0,49,7,0,3,15,0,6,31,0,6, + 27,0,12,51,0,12,99,0,24,127,192,16,3,0,48,3, + 0,96,3,0,18,20,60,22,2,0,112,12,0,240,24,0, + 176,24,0,48,48,0,48,48,0,48,96,0,48,64,0,48, + 192,0,48,128,0,49,143,0,51,31,128,3,49,192,6,1, + 192,6,1,192,12,3,128,8,7,0,24,14,0,16,24,0, + 48,63,192,96,63,192,20,20,60,22,1,0,62,1,128,127, + 3,0,195,3,0,3,6,0,28,6,0,30,12,0,3,24, + 0,195,24,0,199,48,0,126,48,192,56,97,192,0,99,192, + 0,198,192,1,134,192,1,140,192,3,24,192,3,31,240,6, + 0,192,12,0,192,12,0,192,12,19,38,15,2,251,7,0, + 7,0,7,0,0,0,0,0,7,0,7,0,7,0,15,0, + 30,0,56,0,112,0,224,0,224,0,224,0,224,112,127,224, + 63,224,31,128,19,27,81,21,1,0,7,0,0,3,128,0, + 1,128,0,0,192,0,0,96,0,0,0,0,0,0,0,0, + 224,0,1,240,0,1,240,0,3,176,0,3,184,0,3,56, + 0,7,28,0,7,28,0,14,14,0,14,14,0,30,15,0, + 28,7,0,28,7,0,63,255,128,63,255,128,112,1,192,112, + 1,192,224,0,224,224,0,224,224,0,224,19,27,81,21,1, + 0,0,28,0,0,56,0,0,48,0,0,96,0,0,192,0, + 0,0,0,0,0,0,0,224,0,1,240,0,1,240,0,3, + 176,0,3,184,0,3,56,0,7,28,0,7,28,0,14,14, + 0,14,14,0,30,15,0,28,7,0,28,7,0,63,255,128, + 63,255,128,112,1,192,112,1,192,224,0,224,224,0,224,224, + 0,224,19,27,81,21,1,0,0,224,0,1,240,0,1,176, + 0,3,24,0,6,12,0,0,0,0,0,0,0,0,224,0, + 1,240,0,1,240,0,3,176,0,3,184,0,3,56,0,7, + 28,0,7,28,0,14,14,0,14,14,0,30,15,0,28,7, + 0,28,7,0,63,255,128,63,255,128,112,1,192,112,1,192, + 224,0,224,224,0,224,224,0,224,19,26,78,21,1,0,1, + 140,0,3,248,0,6,112,0,0,0,0,0,0,0,0,0, + 0,0,224,0,1,240,0,1,240,0,3,176,0,3,184,0, + 3,56,0,7,28,0,7,28,0,14,14,0,14,14,0,30, + 15,0,28,7,0,28,7,0,63,255,128,63,255,128,112,1, + 192,112,1,192,224,0,224,224,0,224,224,0,224,19,26,78, + 21,1,0,3,156,0,3,156,0,3,156,0,0,0,0,0, + 0,0,0,0,0,0,224,0,0,240,0,1,240,0,1,184, + 0,3,184,0,3,152,0,7,28,0,7,28,0,7,14,0, + 14,14,0,14,15,0,28,7,0,28,7,0,63,255,128,63, + 255,128,56,1,192,112,1,192,112,0,224,224,0,224,224,0, + 224,20,28,84,21,0,0,0,240,0,1,152,0,1,8,0, + 1,8,0,1,152,0,0,240,0,0,0,0,0,0,0,0, + 240,0,0,240,0,0,248,0,1,248,0,1,220,0,3,156, + 0,3,158,0,7,14,0,7,14,0,7,7,0,14,7,0, + 14,7,128,30,3,128,31,255,192,31,255,192,56,1,192,56, + 0,224,112,0,224,112,0,112,224,0,112,25,20,80,28,1, + 0,0,63,255,128,0,127,255,128,0,126,0,0,0,238,0, + 0,0,238,0,0,1,206,0,0,1,206,0,0,3,206,0, + 0,3,142,0,0,7,143,255,128,7,15,255,128,15,14,0, + 0,14,14,0,0,31,254,0,0,63,254,0,0,56,14,0, + 0,120,14,0,0,112,14,0,0,224,15,255,128,224,15,255, + 128,16,27,54,19,2,249,7,240,31,252,60,14,48,6,112, + 7,96,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,96,0,96,7,48,6,56,14,31,252,7,240,0, + 128,0,224,0,248,0,24,0,24,3,248,1,224,13,27,54, + 17,2,0,24,0,28,0,14,0,6,0,3,0,0,0,0, + 0,255,248,255,248,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,255,240,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,255,248,255,248,13,27,54,17,2,0,1, + 192,1,128,3,0,6,0,4,0,0,0,0,0,255,248,255, + 248,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,248,255,248,13,27,54,17,2,0,15,0,15,0,25, + 128,16,192,48,192,0,0,0,0,255,248,255,248,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,240,255,240,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,248,255, + 248,13,26,52,17,2,0,56,224,56,224,56,224,0,0,0, + 0,0,0,255,248,255,248,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,248,255,248,5,27,27,7,0, + 0,224,96,48,48,24,0,0,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,5,27,27,7, + 2,0,56,112,96,192,128,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,8,27,27, + 7,255,0,28,62,118,99,193,0,0,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,8,26, + 26,8,0,0,227,227,227,0,0,0,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,19,20, + 60,20,0,0,63,240,0,63,254,0,56,31,0,56,7,128, + 56,3,128,56,1,192,56,1,192,56,0,192,56,0,224,255, + 192,224,255,192,224,56,0,224,56,0,192,56,1,192,56,1, + 192,56,3,128,56,7,128,56,31,0,63,254,0,63,240,0, + 16,26,52,20,2,0,6,48,15,224,9,224,0,0,0,0, + 0,0,240,7,248,7,248,7,252,7,252,7,238,7,238,7, + 231,7,231,135,227,135,227,199,225,199,224,231,224,231,224,119, + 224,119,224,63,224,63,224,31,224,31,18,28,84,22,2,0, + 7,0,0,3,128,0,1,128,0,0,192,0,0,64,0,0, + 0,0,0,0,0,0,0,0,3,240,0,15,252,0,62,31, + 0,56,7,0,112,3,128,96,1,128,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,96, + 1,192,112,3,128,112,3,128,56,7,0,30,30,0,15,252, + 0,3,240,0,18,28,84,22,2,0,0,56,0,0,112,0, + 0,96,0,0,192,0,0,128,0,0,0,0,0,0,0,0, + 0,0,3,240,0,15,252,0,62,31,0,56,7,0,112,3, + 128,96,1,128,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,96,1,192,112,3,128,112, + 3,128,56,7,0,30,30,0,15,252,0,3,240,0,18,28, + 84,22,2,0,1,224,0,1,224,0,3,240,0,3,48,0, + 6,24,0,0,0,0,0,0,0,0,0,0,3,240,0,15, + 252,0,62,31,0,56,7,0,112,3,128,96,1,128,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,96,1,192,112,3,128,112,3,128,56,7,0,30, + 30,0,15,252,0,3,240,0,18,26,78,22,2,0,3,152, + 0,7,248,0,6,112,0,0,0,0,0,0,0,0,0,0, + 3,240,0,15,252,0,62,31,0,56,7,0,112,3,128,96, + 1,128,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,96,1,192,112,3,128,112,3,128, + 56,7,0,31,62,0,15,252,0,3,240,0,18,26,78,22, + 2,0,7,28,0,7,28,0,7,28,0,0,0,0,0,0, + 0,0,0,0,3,240,0,15,252,0,62,31,0,56,7,0, + 112,3,128,96,1,128,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,96,1,192,112,3, + 128,112,3,128,56,7,0,30,30,0,15,252,0,3,240,0, + 16,15,30,28,6,1,64,2,224,7,112,14,56,28,12,56, + 6,96,3,192,1,128,3,192,6,96,12,48,24,24,48,12, + 96,6,64,2,18,24,72,22,2,254,0,0,128,0,1,192, + 3,251,128,15,255,0,62,31,0,56,15,128,112,31,128,96, + 29,128,224,57,192,224,113,192,224,113,192,224,225,192,225,193, + 192,227,193,192,227,129,192,231,1,128,111,3,128,126,3,128, + 60,7,0,62,30,0,63,252,0,115,240,0,224,0,0,96, + 0,0,16,28,56,20,2,0,14,0,7,0,3,0,1,128, + 0,128,0,0,0,0,0,0,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,96,14,112,14,62,124,31,248,15,224, + 16,28,56,20,2,0,0,112,0,224,0,192,1,128,1,0, + 0,0,0,0,0,0,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,96,14,112,14,62,124,31,248,15,224,16,28, + 56,20,2,0,3,192,3,192,7,224,6,96,12,48,0,0, + 0,0,0,0,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,96,14,112,14,62,124,31,248,15,224,16,26,52,20, + 2,0,14,56,14,56,14,56,0,0,0,0,0,0,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,96,6,112,14, + 60,60,31,248,15,224,17,27,81,19,1,0,0,112,0,0, + 96,0,0,192,0,0,128,0,1,128,0,0,0,0,0,0, + 0,224,3,128,240,7,0,112,7,0,56,14,0,60,28,0, + 28,28,0,14,56,0,14,48,0,7,112,0,7,96,0,3, + 224,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,14,20,40, + 17,2,0,224,0,224,0,224,0,224,0,255,192,255,240,224, + 120,224,56,224,28,224,28,224,28,224,56,224,120,255,240,255, + 192,224,0,224,0,224,0,224,0,224,0,14,20,40,15,1, + 0,15,128,63,224,112,112,224,112,224,112,224,112,225,224,227, + 128,231,0,231,0,227,128,227,224,224,248,224,56,224,28,224, + 28,238,28,230,28,231,248,225,240,12,21,42,15,1,0,12, + 0,14,0,6,0,3,0,1,128,0,0,0,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,12,22,44,15,1,0,1, + 192,1,128,3,0,3,0,6,0,12,0,0,0,0,0,31, + 192,63,224,112,112,112,112,0,112,15,240,63,240,112,112,224, + 112,224,112,224,112,224,240,127,176,30,48,12,22,44,15,1, + 0,7,0,15,0,13,128,29,128,24,192,48,64,0,0,0, + 0,31,192,63,224,112,112,112,112,0,112,15,240,63,240,112, + 112,224,112,224,112,224,112,224,240,127,176,30,48,12,20,40, + 15,1,0,30,64,31,192,49,128,0,0,0,0,0,0,31, + 192,63,224,112,112,112,112,0,112,15,240,63,240,112,112,224, + 112,224,112,224,112,224,240,127,176,30,48,12,20,40,15,1, + 0,56,224,56,224,56,224,0,0,0,0,0,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,12,23,46,15,1,0,15, + 0,25,128,16,128,16,128,25,128,15,0,0,0,0,0,0, + 0,31,192,63,224,112,112,112,112,0,112,15,240,63,240,112, + 112,224,112,224,112,224,112,224,240,127,176,30,48,23,14,42, + 25,1,0,31,131,240,63,207,248,112,108,28,112,56,12,0, + 56,14,15,255,254,63,255,254,120,56,0,224,56,0,224,56, + 14,224,120,12,240,236,28,127,199,248,31,3,240,12,21,42, + 14,1,249,31,128,63,224,112,112,224,112,224,112,224,0,224, + 0,224,0,224,0,224,112,224,112,112,224,63,224,31,128,4, + 0,7,128,7,192,0,96,0,96,31,192,15,0,13,22,44, + 15,1,0,56,0,28,0,12,0,6,0,6,0,3,0,0, + 0,0,0,15,128,63,224,112,112,96,48,224,56,255,248,255, + 248,224,0,224,0,224,56,96,112,112,112,63,224,15,128,13, + 22,44,15,1,0,1,192,1,128,3,128,3,0,6,0,4, + 0,0,0,0,0,15,128,63,224,112,112,96,48,224,56,255, + 248,255,248,224,0,224,0,224,56,96,112,112,112,63,224,15, + 128,13,22,44,15,1,0,7,0,15,0,15,128,25,128,24, + 192,48,64,0,0,0,0,15,128,63,224,112,112,96,48,224, + 56,255,248,255,248,224,0,224,0,224,56,96,112,112,112,63, + 224,15,128,13,20,40,15,1,0,56,224,56,224,56,224,0, + 0,0,0,0,0,15,192,63,224,112,112,96,56,224,56,255, + 248,255,248,224,0,224,0,224,56,96,56,112,112,63,224,15, + 128,5,21,21,7,0,0,224,96,48,48,24,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,5,21,21,7, + 2,0,56,112,96,192,128,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,8,21,21,7,255,0,60,62,118, + 99,193,0,0,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,8,20,20,7,255,0,227,227,227,0,0,0,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,14,20,40,16, + 1,0,48,32,57,224,15,0,31,128,113,192,0,224,15,240, + 63,240,120,120,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,96,56,112,112,63,224,15,192,12,20,40,16,2,0, + 28,192,63,192,51,128,0,0,0,0,0,0,239,128,255,224, + 240,240,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,14,22,44,16,1,0,28,0, + 12,0,14,0,6,0,3,0,1,0,0,0,0,0,15,192, + 63,224,112,112,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,112,56,112,112,63,224,15,192,14,22,44,16,1,0, + 0,224,1,192,1,128,3,0,3,0,6,0,0,0,0,0, + 15,192,63,224,112,112,112,56,224,24,224,28,224,28,224,28, + 224,28,224,24,112,56,112,112,63,224,15,192,14,22,44,16, + 1,0,7,0,7,128,15,128,12,192,24,192,24,96,0,0, + 0,0,15,192,63,224,112,112,112,56,224,24,224,28,224,28, + 224,28,224,28,224,24,112,56,112,112,63,224,15,192,14,20, + 40,16,1,0,14,96,31,192,17,128,0,0,0,0,0,0, + 15,192,63,224,112,112,112,56,224,24,224,28,224,28,224,28, + 224,28,224,24,112,56,112,112,63,224,15,192,14,20,40,16, + 1,0,28,224,28,224,28,224,0,0,0,0,0,0,15,192, + 63,224,112,112,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,112,56,112,112,63,224,15,192,17,12,36,29,6,2, + 1,192,0,1,192,0,1,192,0,0,0,0,0,0,0,255, + 255,128,255,255,128,0,0,0,0,0,0,1,192,0,1,192, + 0,1,192,0,14,18,36,16,1,254,0,8,0,24,15,248, + 63,240,112,112,112,248,225,216,225,152,227,28,230,28,238,28, + 236,24,120,56,112,112,127,224,111,192,192,0,128,0,12,22, + 44,16,2,0,56,0,24,0,12,0,12,0,6,0,3,0, + 0,0,0,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,240,240,127,240,63,112, + 12,22,44,16,2,0,1,192,1,128,3,0,7,0,6,0, + 12,0,0,0,0,0,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,240,240,127,240, + 63,112,12,22,44,16,2,0,6,0,15,0,15,0,25,128, + 16,128,48,192,0,0,0,0,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,240,240, + 127,240,63,112,12,20,40,16,2,0,57,192,57,192,57,192, + 0,0,0,0,0,0,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,240,240,127,240, + 63,112,13,27,54,15,1,251,0,224,1,192,1,128,3,0, + 2,0,0,0,0,0,0,0,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,7,128, + 7,128,7,0,7,0,6,0,238,0,252,0,120,0,14,25, + 50,17,2,251,224,0,224,0,224,0,224,0,224,0,224,0, + 231,192,255,240,240,112,240,56,224,24,224,28,224,28,224,28, + 224,28,224,24,224,56,240,112,255,240,231,192,224,0,224,0, + 224,0,224,0,224,0,14,25,50,14,0,251,28,224,28,224, + 28,224,0,0,0,0,0,0,224,28,112,24,112,56,48,56, + 56,112,56,112,28,96,28,224,14,224,14,192,7,192,7,128, + 3,128,3,128,3,0,7,0,6,0,6,0,14,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=17 h=21 x= 6 y= 9 dx=29 dy= 0 ascent=20 len=48 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =20 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20n[596] U8G_SECTION(".progmem.u8g_font_fur20n") = { + 0,38,35,254,249,20,0,0,0,0,42,57,0,20,253,20, + 0,11,11,22,19,4,9,17,0,49,128,27,0,27,0,14, + 0,255,224,142,32,27,0,27,0,49,128,17,0,17,16,48, + 29,6,0,1,128,0,1,128,0,1,128,0,1,128,0,1, + 128,0,1,128,0,1,128,0,255,255,128,255,255,128,1,128, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,5,7,7,8,1,253,56,56,112,112,96,96,224, + 7,2,2,9,1,6,254,254,3,3,3,8,3,0,224,224, + 224,8,21,21,11,2,255,3,6,6,6,4,12,12,12,24, + 24,24,48,48,48,96,96,96,64,192,192,192,13,20,40,16, + 1,0,15,128,63,192,112,224,96,112,96,112,224,48,224,48, + 224,56,224,56,224,56,224,56,224,56,224,56,224,48,224,48, + 96,112,112,112,48,224,63,192,15,128,7,20,20,16,4,0, + 30,62,126,254,206,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,12,20,40,16,2,0,31,128,63,192,112,96, + 112,112,224,112,0,112,0,112,0,112,0,224,1,224,3,192, + 3,128,7,0,14,0,28,0,60,0,120,0,240,0,255,240, + 255,240,13,20,40,16,1,0,15,128,63,224,112,112,112,48, + 224,56,0,56,0,48,0,224,7,192,7,192,0,224,0,112, + 0,56,0,56,224,56,224,56,224,56,112,112,63,224,31,128, + 14,20,40,16,1,0,0,240,1,240,1,240,3,240,7,112, + 6,112,14,112,28,112,24,112,56,112,112,112,96,112,224,112, + 255,252,255,252,0,112,0,112,0,112,0,112,0,112,13,20, + 40,16,1,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,239,128,255,224,240,112,224,112,224,48,0,56,0,56, + 0,56,224,48,224,112,112,224,127,192,31,128,13,20,40,16, + 1,0,15,192,63,224,120,112,112,48,224,56,224,0,224,0, + 231,192,255,224,248,240,224,56,224,56,224,56,224,56,224,56, + 224,56,96,48,48,112,63,224,15,128,12,20,40,16,2,0, + 255,240,255,240,0,112,0,112,0,96,0,224,0,224,1,192, + 1,192,1,128,3,128,3,128,3,0,7,0,7,0,14,0, + 14,0,14,0,28,0,28,0,13,20,40,16,1,0,15,128, + 63,224,112,112,224,48,224,56,224,56,96,48,112,112,31,192, + 31,192,56,96,96,48,224,56,224,56,224,56,224,56,224,56, + 112,112,63,224,15,128,13,20,40,16,1,0,31,192,63,224, + 112,112,224,56,224,56,224,56,224,56,224,56,224,56,112,120, + 63,248,31,56,0,56,0,56,0,56,96,48,96,112,112,224, + 63,192,31,128}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=26 h=29 x= 7 y=16 dx=29 dy= 0 ascent=22 len=96 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =22 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20r[3976] U8G_SECTION(".progmem.u8g_font_fur20r") = { + 0,38,35,254,249,20,5,12,11,23,32,127,251,22,249,20, + 251,0,0,0,8,0,0,3,20,20,11,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,0,0,224,224, + 224,9,8,16,13,2,12,227,128,227,128,227,0,227,0,227, + 0,195,0,195,0,67,0,18,20,60,21,1,0,0,195,0, + 0,195,0,0,195,0,1,198,0,1,134,0,1,134,0,31, + 255,192,63,255,192,3,12,0,3,24,0,6,24,0,6,24, + 0,127,255,128,255,255,0,12,48,0,12,48,0,28,96,0, + 24,96,0,24,96,0,24,192,0,14,25,50,16,1,253,2, + 0,2,0,31,192,63,224,114,112,98,48,226,56,226,0,226, + 0,114,0,126,0,63,224,15,240,2,248,2,56,2,28,226, + 28,226,28,226,24,114,56,127,240,31,192,2,0,2,0,2, + 0,23,20,60,25,1,0,30,0,192,127,128,192,97,129,128, + 225,193,0,225,195,0,225,198,0,225,198,0,97,140,0,127, + 136,0,30,24,224,0,49,248,0,51,156,0,103,14,0,71, + 14,0,199,14,1,135,14,1,135,14,3,3,12,2,3,252, + 6,0,240,19,20,60,22,2,0,7,192,0,31,240,0,56, + 48,0,56,48,0,56,48,0,56,112,0,29,224,0,15,192, + 0,31,3,128,63,131,128,115,195,128,225,227,128,224,243,0, + 224,123,0,224,63,0,224,30,0,112,15,0,120,31,128,63, + 251,192,15,225,224,3,8,8,10,4,12,224,224,192,192,192, + 192,192,192,5,24,24,10,3,252,24,48,48,112,112,96,96, + 224,224,224,224,224,224,224,224,224,224,96,96,112,112,48,48, + 24,5,24,24,10,3,252,192,192,96,96,96,112,112,48,48, + 48,56,56,56,56,48,48,48,112,112,96,96,96,192,192,11, + 11,22,19,4,9,17,0,49,128,27,0,27,0,14,0,255, + 224,142,32,27,0,27,0,49,128,17,0,17,16,48,29,6, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,1,128,0,255,255,128,255,255,128,1,128,0,1, + 128,0,1,128,0,1,128,0,1,128,0,1,128,0,1,128, + 0,5,7,7,8,1,253,56,56,112,112,96,96,224,7,2, + 2,9,1,6,254,254,3,3,3,8,3,0,224,224,224,8, + 21,21,11,2,255,3,6,6,6,4,12,12,12,24,24,24, + 48,48,48,96,96,96,64,192,192,192,13,20,40,16,1,0, + 15,128,63,192,112,224,96,112,96,112,224,48,224,48,224,56, + 224,56,224,56,224,56,224,56,224,56,224,48,224,48,96,112, + 112,112,48,224,63,192,15,128,7,20,20,16,4,0,30,62, + 126,254,206,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,12,20,40,16,2,0,31,128,63,192,112,96,112,112, + 224,112,0,112,0,112,0,112,0,224,1,224,3,192,3,128, + 7,0,14,0,28,0,60,0,120,0,240,0,255,240,255,240, + 13,20,40,16,1,0,15,128,63,224,112,112,112,48,224,56, + 0,56,0,48,0,224,7,192,7,192,0,224,0,112,0,56, + 0,56,224,56,224,56,224,56,112,112,63,224,31,128,14,20, + 40,16,1,0,0,240,1,240,1,240,3,240,7,112,6,112, + 14,112,28,112,24,112,56,112,112,112,96,112,224,112,255,252, + 255,252,0,112,0,112,0,112,0,112,0,112,13,20,40,16, + 1,0,255,224,255,224,224,0,224,0,224,0,224,0,224,0, + 239,128,255,224,240,112,224,112,224,48,0,56,0,56,0,56, + 224,48,224,112,112,224,127,192,31,128,13,20,40,16,1,0, + 15,192,63,224,120,112,112,48,224,56,224,0,224,0,231,192, + 255,224,248,240,224,56,224,56,224,56,224,56,224,56,224,56, + 96,48,48,112,63,224,15,128,12,20,40,16,2,0,255,240, + 255,240,0,112,0,112,0,96,0,224,0,224,1,192,1,192, + 1,128,3,128,3,128,3,0,7,0,7,0,14,0,14,0, + 14,0,28,0,28,0,13,20,40,16,1,0,15,128,63,224, + 112,112,224,48,224,56,224,56,96,48,112,112,31,192,31,192, + 56,96,96,48,224,56,224,56,224,56,224,56,224,56,112,112, + 63,224,15,128,13,20,40,16,1,0,31,192,63,224,112,112, + 224,56,224,56,224,56,224,56,224,56,224,56,112,120,63,248, + 31,56,0,56,0,56,0,56,96,48,96,112,112,224,63,192, + 31,128,3,14,14,8,3,0,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,4,17,17,8,2,253,112,112,112,0, + 0,0,0,0,0,0,112,112,96,224,192,192,192,17,14,42, + 29,6,1,0,1,128,0,15,128,0,124,0,1,224,0,15, + 0,0,120,0,0,224,0,0,240,0,0,62,0,0,7,128, + 0,0,240,0,0,62,0,0,7,128,0,0,128,17,7,21, + 29,6,5,255,255,128,255,255,128,0,0,0,0,0,0,0, + 0,0,255,255,128,255,255,128,17,14,42,29,6,1,192,0, + 0,248,0,0,31,0,0,3,192,0,0,120,0,0,15,0, + 0,3,128,0,7,128,0,62,0,0,240,0,7,128,0,62, + 0,0,240,0,0,128,0,0,12,20,40,15,1,0,31,0, + 63,192,127,224,224,240,64,112,0,112,0,112,0,96,0,192, + 3,128,7,0,14,0,14,0,14,0,14,0,0,0,0,0, + 14,0,14,0,14,0,25,24,96,28,2,252,0,127,0,0, + 3,255,224,0,15,129,248,0,30,0,60,0,56,0,14,0, + 48,0,6,0,112,125,199,0,96,255,199,0,225,195,195,0, + 227,131,195,0,227,129,195,128,227,129,195,128,227,129,195,128, + 227,129,195,0,227,129,195,0,225,131,199,0,113,199,206,0, + 112,252,252,0,56,56,48,0,60,0,0,0,30,0,0,0, + 15,128,64,0,3,255,192,0,0,127,128,0,19,20,60,21, + 1,0,0,224,0,1,240,0,1,240,0,3,176,0,3,184, + 0,3,56,0,7,28,0,7,28,0,14,14,0,14,14,0, + 30,15,0,28,7,0,28,7,0,63,255,128,63,255,128,112, + 1,192,112,1,192,224,0,224,224,0,224,224,0,224,15,20, + 40,19,2,0,255,224,255,248,224,120,224,28,224,28,224,28, + 224,28,224,24,224,56,255,224,255,240,224,28,224,12,224,14, + 224,14,224,14,224,30,224,60,255,248,255,224,16,20,40,19, + 2,0,7,240,31,252,60,14,48,6,112,7,96,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,96,0, + 96,7,112,6,56,14,31,252,7,240,16,20,40,20,2,0, + 255,192,255,240,224,120,224,28,224,14,224,14,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,14,224,14, + 224,28,224,120,255,240,255,192,13,20,40,17,2,0,255,248, + 255,248,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,240,255,240,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,248,255,248,12,20,40,16,2,0,255,240,255,240, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,18,20,60,22,2,0,3,248,0,15,254,0, + 30,15,128,56,3,128,112,1,192,96,0,0,224,0,0,224, + 0,0,224,0,0,224,63,192,224,63,192,224,1,192,224,1, + 192,224,1,192,112,1,192,112,1,192,56,1,192,30,7,192, + 15,255,192,3,254,0,15,20,40,19,2,0,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,255,254, + 255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,3,20,20,7,2,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,12,20, + 40,16,2,0,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,224,112,224,96,113,224,63,192,31,128,15,20,40,18, + 2,0,224,60,224,120,224,240,224,224,225,192,227,128,231,0, + 238,0,252,0,254,0,238,0,239,0,231,128,227,192,225,224, + 224,240,224,120,224,56,224,60,224,30,12,20,40,15,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,240,255,240,21,20,60,25,2,0,248,0, + 248,248,0,248,248,1,248,252,1,248,252,1,184,236,3,184, + 238,3,184,238,3,56,230,7,56,231,6,56,227,14,56,227, + 142,56,227,140,56,225,156,56,225,220,56,225,216,56,224,248, + 56,224,240,56,224,112,56,224,112,56,16,20,40,20,2,0, + 240,7,248,7,248,7,252,7,252,7,238,7,238,7,231,7, + 231,135,227,135,227,199,225,199,224,231,224,231,224,119,224,119, + 224,63,224,63,224,31,224,31,18,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,252,0,3,240,0,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,120,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,20,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,255,240,3,255,240,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,112,255,224,255,224,224,112,224,56,224,56,224,56,224,24, + 224,24,224,24,224,28,224,28,15,20,40,19,2,0,15,192, + 63,240,120,120,96,28,224,28,224,0,224,0,120,0,127,0, + 63,240,7,252,0,60,0,14,0,14,224,14,224,14,224,14, + 120,60,63,248,15,192,16,20,40,18,1,0,255,255,255,255, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,16,20,40,20,2,0,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,96,6,112,14,60,60,31,248, + 15,224,17,20,60,18,1,0,224,3,128,224,7,0,224,7, + 0,112,7,0,112,14,0,112,14,0,56,14,0,56,28,0, + 56,28,0,28,56,0,28,56,0,12,56,0,14,112,0,14, + 112,0,7,112,0,7,224,0,7,224,0,3,224,0,3,192, + 0,3,192,0,26,20,80,27,1,0,224,28,1,192,224,30, + 3,128,224,62,3,128,224,62,3,128,112,54,3,0,112,119, + 7,0,112,115,7,0,48,99,7,0,56,99,134,0,56,227, + 142,0,24,225,142,0,28,193,140,0,28,193,220,0,29,193, + 220,0,13,192,216,0,15,128,216,0,15,128,248,0,7,128, + 120,0,7,0,112,0,7,0,112,0,18,20,60,20,1,0, + 120,7,128,56,7,0,60,14,0,30,30,0,14,28,0,15, + 56,0,7,56,0,3,240,0,1,224,0,1,224,0,3,224, + 0,3,240,0,7,120,0,14,56,0,14,28,0,28,30,0, + 56,15,0,120,7,0,112,7,128,224,3,192,17,20,60,19, + 1,0,224,3,128,240,7,0,112,7,0,56,14,0,60,28, + 0,28,28,0,14,56,0,14,48,0,7,112,0,7,96,0, + 3,224,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,15,20, + 40,17,1,0,255,252,255,252,0,28,0,56,0,120,0,240, + 0,224,1,192,3,192,3,128,7,0,14,0,30,0,28,0, + 56,0,112,0,240,0,224,0,255,254,255,254,5,25,25,11, + 3,251,248,248,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,248,248,9,21,42,11,1, + 255,192,0,96,0,96,0,96,0,48,0,48,0,48,0,24, + 0,24,0,24,0,8,0,12,0,12,0,12,0,6,0,6, + 0,6,0,3,0,3,0,3,0,1,128,6,25,25,12,3, + 251,252,252,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,252,252,14,17,34,28,7,0, + 3,0,3,0,7,128,7,128,4,128,12,192,8,64,24,96, + 24,96,16,32,48,48,48,48,96,24,96,24,64,8,192,12, + 192,12,14,2,4,14,0,252,255,252,255,252,6,5,5,6, + 255,16,224,112,48,24,12,12,14,28,15,1,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,13,20,40,16,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,231,192,255,224,240, + 112,224,48,224,56,224,56,224,56,224,56,224,56,224,56,224, + 112,240,112,255,224,231,128,12,14,28,14,1,0,31,128,63, + 224,112,112,224,112,224,112,224,0,224,0,224,0,224,0,224, + 112,96,112,112,224,63,224,31,128,13,20,40,16,1,0,0, + 56,0,56,0,56,0,56,0,56,0,56,31,56,63,248,112, + 248,96,120,224,56,224,56,224,56,224,56,224,56,224,56,112, + 56,112,120,63,248,15,184,13,14,28,15,1,0,15,128,63, + 224,112,112,96,48,224,56,255,248,255,248,224,0,224,0,224, + 56,96,112,112,112,63,224,15,128,9,20,40,10,1,0,7, + 128,31,128,28,0,28,0,28,0,28,0,255,128,255,128,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,13,19,38,16,1,251,31,184,63, + 248,112,120,96,56,224,56,224,56,224,56,224,56,224,56,224, + 56,96,56,112,120,63,248,31,56,0,56,112,48,112,112,63, + 224,15,128,12,20,40,16,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,239,192,255,224,240,240,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,3,20,20,7,2,0,224,224,224,0,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,5,25,25,7,1, + 251,56,56,56,0,0,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,240,224,11,20,40,14,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,225,224,225,192, + 227,128,231,0,238,0,252,0,252,0,254,0,238,0,231,0, + 227,128,227,192,225,192,224,224,3,20,20,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,21,14,42,25,2,0,231,195,224,255,239,240,240,248, + 56,224,120,56,224,112,24,224,112,24,224,112,24,224,112,24, + 224,112,24,224,112,24,224,112,24,224,112,24,224,112,24,224, + 112,24,12,14,28,16,2,0,239,128,255,224,240,240,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,14,14,28,16,1,0,15,192,63,224,112,112, + 112,56,224,24,224,28,224,28,224,28,224,28,224,24,112,56, + 112,112,63,224,15,192,14,19,38,17,2,251,231,192,255,240, + 240,112,240,56,224,24,224,28,224,28,224,28,224,28,224,24, + 224,56,240,112,255,240,231,192,224,0,224,0,224,0,224,0, + 224,0,14,19,38,17,1,251,15,156,63,220,112,124,112,60, + 224,28,224,28,224,28,224,28,224,28,224,28,96,60,112,124, + 63,252,15,156,0,28,0,28,0,28,0,28,0,28,8,14, + 14,10,2,0,239,255,240,224,224,224,224,224,224,224,224,224, + 224,224,12,14,28,14,1,0,31,128,127,192,112,224,224,224, + 224,0,120,0,63,128,15,224,0,224,0,112,224,112,224,224, + 127,192,63,128,8,18,18,10,1,0,8,56,56,56,255,255, + 56,56,56,56,56,56,56,56,56,56,31,15,12,14,28,16, + 2,0,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,240,240,127,240,63,112,13,14, + 28,15,1,0,224,24,224,56,224,56,112,48,112,112,56,96, + 56,224,24,192,28,192,29,192,15,128,15,128,7,0,7,0, + 21,14,42,23,1,0,192,112,24,224,248,56,224,248,56,96, + 216,48,97,216,112,113,156,112,49,140,96,51,140,224,59,14, + 224,27,6,192,27,7,192,30,7,128,14,3,128,14,3,128, + 13,14,28,15,1,0,240,56,112,112,56,96,28,224,31,192, + 15,128,7,0,7,128,15,192,29,192,56,224,112,112,112,120, + 224,56,13,19,38,15,1,251,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,15,128, + 7,128,7,0,7,0,6,0,14,0,14,0,12,0,10,14, + 28,12,1,0,255,192,255,192,1,192,3,128,7,0,14,0, + 14,0,28,0,56,0,48,0,112,0,224,0,255,192,255,192, + 9,27,54,13,2,249,3,128,15,128,14,0,12,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,56,0,248,0, + 240,0,240,0,56,0,24,0,28,0,28,0,28,0,28,0, + 12,0,12,0,12,0,14,0,15,128,3,128,1,29,29,9, + 4,249,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,9, + 27,54,13,2,249,240,0,248,0,24,0,28,0,28,0,28, + 0,28,0,28,0,28,0,12,0,12,0,14,0,7,128,3, + 128,7,128,14,0,12,0,12,0,28,0,28,0,28,0,28, + 0,28,0,28,0,24,0,248,0,240,0,15,3,6,15,0, + 5,62,14,127,252,224,248,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=31 h=37 x= 8 y=22 dx=34 dy= 0 ascent=36 len=132 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =36 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25[11949] U8G_SECTION(".progmem.u8g_font_fur25") = { + 0,46,45,254,247,25,6,119,15,27,32,255,249,36,247,25, + 249,0,0,0,10,0,0,3,25,25,12,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 0,0,0,224,224,224,11,10,20,15,2,15,241,224,112,224, + 112,224,112,224,112,224,112,224,112,224,96,192,96,192,96,192, + 22,25,75,25,2,0,0,112,224,0,112,224,0,96,192,0, + 225,192,0,225,192,0,193,128,0,193,128,63,255,252,63,255, + 248,1,131,0,3,135,0,3,134,0,3,6,0,7,14,0, + 255,255,224,255,255,224,14,28,0,14,28,0,12,24,0,12, + 24,0,28,56,0,28,56,0,24,48,0,56,112,0,56,112, + 0,16,32,64,18,1,252,1,128,1,128,1,128,15,240,31, + 248,63,252,121,158,113,142,113,142,113,142,113,128,113,128,121, + 128,63,128,31,240,15,252,1,254,1,159,1,143,1,135,225, + 135,225,135,225,135,241,135,121,143,127,254,63,252,15,240,1, + 128,1,128,1,128,1,128,28,27,108,32,2,0,0,0,14, + 0,0,0,12,0,31,128,24,0,63,192,24,0,121,224,48, + 0,240,240,48,0,224,112,96,0,224,112,224,0,224,112,192, + 0,224,113,192,0,240,113,128,0,112,227,128,0,63,227,0, + 0,31,134,31,128,0,6,63,192,0,12,121,224,0,12,240, + 240,0,24,224,112,0,56,224,112,0,48,224,112,0,112,224, + 112,0,96,224,112,0,224,224,112,0,192,240,240,1,128,121, + 224,1,128,63,192,3,0,31,128,23,25,75,26,2,1,7, + 248,0,15,252,0,30,30,0,28,14,0,28,14,0,28,14, + 0,30,28,0,30,60,0,15,248,0,7,224,0,15,192,112, + 31,224,112,61,224,112,120,240,112,240,120,112,224,60,112,224, + 30,224,224,15,224,224,7,224,240,3,192,120,3,224,124,15, + 240,63,255,120,31,252,124,7,240,62,4,10,10,13,4,15, + 240,112,112,112,112,112,112,96,96,96,6,30,30,12,3,251, + 12,24,24,56,56,112,112,112,112,240,224,224,224,224,224,224, + 224,224,224,224,240,112,112,112,112,56,56,24,24,12,6,30, + 30,12,3,251,224,96,112,112,48,56,56,56,56,28,28,28, + 28,28,28,28,28,28,28,28,28,60,56,56,56,48,112,112, + 96,224,14,13,26,22,4,12,24,96,28,224,28,224,12,192, + 7,128,243,60,255,252,231,156,7,128,12,192,28,224,60,224, + 24,96,20,21,63,34,7,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,6,9,9,9,2,252,60,120,120, + 112,112,224,224,224,192,8,3,3,10,1,7,255,255,255,3, + 4,4,9,3,0,224,224,224,224,10,28,56,13,2,254,0, + 192,1,192,1,128,1,128,3,128,3,0,3,0,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,28,0,24, + 0,24,0,56,0,48,0,48,0,112,0,112,0,96,0,96, + 0,224,0,192,0,192,0,15,25,50,19,2,1,15,224,63, + 248,62,248,120,60,112,28,112,30,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 14,112,30,112,28,120,28,60,60,63,248,31,240,7,192,8, + 25,25,19,5,0,15,31,63,127,255,231,135,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,25, + 50,19,2,1,15,240,63,248,62,252,120,28,120,30,112,14, + 240,14,0,14,0,30,0,28,0,60,0,120,0,120,0,240, + 1,224,3,192,7,128,15,0,31,0,62,0,60,0,120,0, + 240,0,255,254,255,254,16,25,50,19,2,1,15,240,63,248, + 60,28,120,14,112,14,112,14,0,14,0,14,0,28,0,120, + 3,240,3,240,0,248,0,30,0,14,0,15,0,7,0,7, + 240,7,240,7,240,14,120,30,60,124,31,248,7,224,17,25, + 75,19,1,0,0,60,0,0,124,0,0,124,0,0,252,0, + 1,220,0,1,220,0,3,156,0,7,28,0,7,28,0,14, + 28,0,28,28,0,60,28,0,56,28,0,112,28,0,240,28, + 0,224,28,0,255,255,128,255,255,128,255,255,128,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,15, + 25,50,19,2,0,127,252,127,252,127,252,112,0,112,0,112, + 0,112,0,112,0,115,240,127,248,124,60,120,28,112,30,96, + 14,0,14,0,14,0,14,0,14,0,14,224,30,240,28,112, + 60,124,120,63,240,15,192,16,25,50,19,1,1,15,240,31, + 252,60,28,120,30,112,14,240,14,224,0,224,0,224,0,227, + 240,231,252,239,252,252,30,248,14,240,15,240,7,240,7,240, + 7,240,7,112,7,120,14,56,14,62,60,15,248,7,224,15, + 25,50,19,2,0,255,254,255,254,0,14,0,30,0,28,0, + 28,0,60,0,56,0,56,0,120,0,112,0,240,0,240,0, + 224,1,224,1,224,1,192,3,192,3,128,7,128,7,128,7, + 0,15,0,15,0,14,0,16,25,50,19,1,1,15,240,63, + 252,60,60,120,30,112,14,112,14,112,14,112,14,56,28,60, + 60,15,240,15,240,62,56,56,28,112,14,224,7,224,7,224, + 7,224,7,224,7,240,15,120,14,60,60,31,248,7,224,16, + 25,50,19,2,1,31,248,63,252,120,30,112,14,240,15,224, + 15,224,15,224,15,224,15,240,15,112,31,120,63,63,247,15, + 231,0,7,0,7,0,7,0,14,112,14,112,14,112,30,112, + 60,60,120,31,240,15,224,3,18,18,9,3,0,224,224,224, + 224,0,0,0,0,0,0,0,0,0,0,224,224,224,224,6, + 22,22,9,1,252,56,56,56,56,0,0,0,0,0,0,0, + 0,0,60,56,56,56,112,112,112,96,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,240,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,252,0,0,31,0,0,7,224,0,0,248,0,0,31,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,15,25,50,18,1,1,31,224,63,248,125,252,240,30,96, + 14,0,14,0,14,0,30,0,28,0,60,0,120,0,240,1, + 192,3,128,7,128,7,0,7,0,7,0,7,0,0,0,0, + 0,0,0,7,0,7,0,7,0,30,30,120,34,2,251,0, + 31,240,0,0,255,254,0,3,255,255,0,7,224,31,192,15, + 128,3,224,30,0,0,240,60,0,0,112,56,31,56,120,112, + 63,184,56,112,125,248,56,240,112,120,60,224,240,120,28,224, + 224,56,28,224,224,56,28,224,224,56,28,224,224,56,28,224, + 224,56,28,224,224,56,56,240,224,120,56,112,112,120,120,112, + 120,254,240,120,63,223,224,56,31,15,192,60,0,0,0,30, + 0,0,0,15,128,0,0,7,224,0,0,3,255,248,0,0, + 255,248,0,0,31,240,0,24,25,75,26,1,0,0,60,0, + 0,124,0,0,126,0,0,254,0,0,238,0,0,239,0,1, + 231,0,1,199,128,3,195,128,3,131,192,7,131,192,7,1, + 192,7,1,224,15,0,224,14,0,240,31,255,240,31,255,240, + 31,255,248,60,0,56,56,0,60,120,0,28,112,0,30,112, + 0,30,240,0,14,224,0,15,18,25,75,23,3,0,255,248, + 0,255,254,0,255,255,0,224,15,128,224,7,128,224,3,128, + 224,3,128,224,3,128,224,7,128,224,15,0,255,254,0,255, + 252,0,255,254,0,224,15,0,224,3,128,224,3,192,224,1, + 192,224,1,192,224,1,192,224,3,192,224,7,192,224,15,128, + 255,255,0,255,254,0,255,248,0,19,25,75,23,2,1,3, + 254,0,15,255,128,30,3,192,60,1,192,56,0,224,112,0, + 224,112,0,0,112,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,112,0,0,112,0,224,112,0,224,56,1,224,60,1, + 192,31,7,128,15,255,0,1,252,0,20,25,75,25,3,0, + 255,240,0,255,254,0,255,255,0,224,31,128,224,7,192,224, + 3,192,224,1,224,224,0,224,224,0,240,224,0,240,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,240, + 224,0,240,224,0,224,224,1,224,224,3,192,224,7,192,224, + 31,128,255,255,0,255,252,0,255,240,0,16,25,50,21,3, + 0,255,254,255,254,255,254,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,255,255, + 255,255,255,15,25,50,20,3,0,255,254,255,254,255,254,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 252,255,252,255,252,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,21,25,75,26,2, + 1,1,255,128,7,255,192,15,255,224,30,0,240,60,0,120, + 120,0,56,112,0,0,112,0,0,240,0,0,224,0,0,224, + 0,0,224,15,248,224,15,248,224,15,248,224,0,56,240,0, + 56,112,0,56,112,0,56,120,0,56,60,0,56,62,0,56, + 31,0,248,15,255,248,7,255,240,0,255,128,18,25,75,24, + 3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,3,25,25, + 9,3,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,14,25,50,19, + 2,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,224,28,224,28,240,60,120,120,127,240, + 63,224,15,192,18,25,75,23,3,0,224,7,128,224,15,0, + 224,30,0,224,60,0,224,120,0,224,240,0,225,224,0,227, + 192,0,231,128,0,239,0,0,254,0,0,255,0,0,239,128, + 0,231,128,0,231,192,0,227,224,0,225,240,0,224,248,0, + 224,120,0,224,60,0,224,62,0,224,31,0,224,15,128,224, + 7,192,224,3,192,15,25,50,19,3,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,25,25,100, + 31,3,0,248,0,15,128,252,0,31,128,252,0,31,128,252, + 0,31,128,238,0,59,128,238,0,59,128,239,0,123,128,231, + 0,115,128,231,0,115,128,231,128,243,128,227,128,227,128,227, + 128,227,128,225,193,195,128,225,193,195,128,225,193,195,128,224, + 227,131,128,224,227,131,128,224,247,131,128,224,119,3,128,224, + 119,3,128,224,127,3,128,224,62,3,128,224,62,3,128,224, + 28,3,128,224,28,3,128,19,25,75,25,3,0,248,0,224, + 248,0,224,252,0,224,254,0,224,254,0,224,239,0,224,239, + 0,224,231,128,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,120,224,224,60,224, + 224,60,224,224,30,224,224,30,224,224,15,224,224,15,224,224, + 7,224,224,3,224,224,3,224,22,25,75,26,2,1,3,255, + 0,15,255,192,31,255,224,62,1,240,56,0,112,120,0,120, + 112,0,56,240,0,56,240,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,112,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,31,3,224, + 15,255,192,7,255,128,0,252,0,16,25,50,21,3,0,255, + 224,255,252,255,254,224,30,224,15,224,7,224,7,224,7,224, + 7,224,15,224,30,255,254,255,252,255,224,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,24,25,75,27,2,1,3,255,0,15,255,192,31,255,224, + 62,1,240,56,0,112,120,0,120,112,0,56,240,0,56,240, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,240,0,60,112,0,56,112,0,56,120,0,120, + 56,0,112,60,0,240,31,3,224,15,255,255,7,255,255,0, + 255,255,17,25,75,21,3,0,255,240,0,255,252,0,255,254, + 0,224,31,0,224,15,0,224,7,0,224,7,0,224,7,0, + 224,15,0,224,30,0,255,252,0,255,240,0,255,252,0,224, + 60,0,224,30,0,224,14,0,224,14,0,224,14,0,224,15, + 0,224,7,0,224,7,0,224,7,0,224,7,0,224,7,0, + 224,7,128,18,25,75,22,2,1,7,252,0,31,254,0,63, + 255,0,120,7,128,112,3,128,112,3,128,112,0,0,112,0, + 0,120,0,0,124,0,0,63,192,0,31,252,0,7,255,0, + 0,63,128,0,7,128,0,3,192,0,1,192,224,1,192,224, + 1,192,240,1,192,112,3,192,124,15,128,63,255,0,31,254, + 0,7,240,0,19,25,75,21,1,0,255,255,224,255,255,224, + 255,255,224,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,19,25,75,25,3,0,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,240,0, + 224,240,1,224,112,1,192,120,3,192,62,7,192,63,255,128, + 31,255,0,3,248,0,21,25,75,22,1,0,240,0,120,240, + 0,240,240,0,240,120,0,240,120,1,224,120,1,224,60,1, + 192,60,3,192,60,3,192,28,3,128,30,7,128,14,7,128, + 14,7,0,15,15,0,7,15,0,7,14,0,7,158,0,3, + 158,0,3,156,0,3,252,0,1,252,0,1,248,0,1,248, + 0,0,248,0,0,240,0,31,25,100,33,1,0,224,7,192, + 14,240,7,192,14,240,7,192,30,112,7,192,30,112,14,224, + 28,120,14,224,60,120,14,224,60,56,14,240,56,56,28,112, + 56,60,28,112,120,28,28,112,120,28,60,56,112,28,56,56, + 112,30,56,56,240,14,56,56,224,14,112,28,224,14,112,28, + 224,7,112,29,192,7,112,29,192,7,224,15,192,7,224,15, + 192,3,224,15,128,3,224,7,128,3,192,7,128,1,192,7, + 0,22,25,75,24,1,0,124,0,120,60,0,240,30,1,224, + 31,1,224,15,3,192,7,135,128,7,135,128,3,207,0,1, + 238,0,1,254,0,0,252,0,0,120,0,0,252,0,0,252, + 0,1,222,0,3,207,0,3,143,0,7,135,128,15,3,192, + 14,3,192,30,1,224,60,1,240,56,0,240,120,0,120,240, + 0,124,21,25,75,23,1,0,240,0,120,120,0,112,120,0, + 240,60,1,224,30,1,224,30,3,192,15,3,128,15,7,128, + 7,135,0,3,143,0,3,206,0,1,252,0,1,252,0,0, + 248,0,0,120,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,18,25,75,22,2,0,127,255,192,127,255,192,127, + 255,192,0,3,192,0,7,128,0,15,128,0,31,0,0,30, + 0,0,60,0,0,124,0,0,248,0,0,240,0,1,224,0, + 3,224,0,7,192,0,15,128,0,15,0,0,31,0,0,62, + 0,0,124,0,0,120,0,0,240,0,0,255,255,192,255,255, + 192,255,255,192,7,32,32,14,4,249,254,254,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,254,254,10,28,56,13,2,254, + 192,0,192,0,224,0,224,0,96,0,96,0,112,0,48,0, + 48,0,56,0,56,0,24,0,24,0,28,0,12,0,12,0, + 14,0,6,0,6,0,6,0,7,0,3,0,3,0,3,128, + 1,128,1,128,1,128,1,192,6,32,32,14,4,249,252,252, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,252,252,18,21, + 63,34,8,0,0,192,0,1,224,0,1,224,0,1,224,0, + 3,48,0,3,48,0,2,16,0,6,24,0,6,24,0,12, + 12,0,12,12,0,12,12,0,24,6,0,24,6,0,24,6, + 0,48,3,0,48,3,0,112,1,128,96,1,128,96,1,128, + 192,0,192,17,2,6,17,0,251,255,255,128,255,255,128,6, + 6,6,8,0,21,224,224,112,56,24,12,15,18,36,19,2, + 0,15,240,63,252,60,60,120,30,112,14,0,14,0,14,15, + 254,63,254,124,14,112,14,224,14,224,30,224,30,240,62,120, + 238,63,238,15,142,16,25,50,20,2,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,227,240,239,248,238,124,248, + 30,240,14,240,15,224,7,224,7,224,7,224,7,224,7,224, + 15,240,14,240,14,248,28,254,124,239,248,227,224,14,18,36, + 18,2,0,15,224,63,240,124,120,112,60,112,28,240,28,224, + 0,224,0,224,0,224,0,224,0,224,0,240,28,112,28,112, + 60,60,120,31,240,15,224,16,25,50,20,2,0,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,15,199,31,247,60, + 127,120,31,112,31,112,15,224,15,224,7,224,7,224,7,224, + 7,224,7,112,15,112,15,56,31,62,63,15,247,7,199,16, + 18,36,19,2,0,7,224,31,248,60,124,120,30,112,14,240, + 14,224,14,255,254,255,255,224,0,224,0,224,0,112,14,112, + 14,120,30,62,124,31,248,7,224,11,25,50,12,1,0,7, + 224,15,224,31,32,28,0,28,0,28,0,28,0,255,224,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,16,25,50,20,2,249,7,231,31,247,62,127,120,31,112, + 15,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,112,15,120,31,62,127,31,247,15,199,0,7,0,15,112, + 14,120,30,60,60,31,248,7,224,15,25,50,19,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,227,240,239, + 248,252,124,248,28,240,30,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,3,25,25,7,2,0,224,224,224,0,0,0,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 5,32,32,9,2,249,56,56,56,0,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,240,224,14,25,50,17,2,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,120,224,240,225,224, + 225,192,227,192,231,128,239,0,254,0,254,0,239,0,231,128, + 231,128,227,192,225,224,225,224,224,240,224,120,224,60,3,25, + 25,8,2,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,26,18,72, + 30,2,0,227,224,124,0,239,241,255,0,252,123,143,128,248, + 63,3,128,240,30,3,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,15,18,36,19,2, + 0,227,240,239,248,252,124,248,30,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,17,18,54,21,2,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,16,25,50,20,2,249,227,240,231,248,254,60,248,30,240, + 14,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,240,14,248,30,254,124,239,248,227,240,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,16,25,50,21,2,249,7, + 199,31,247,62,63,120,31,112,15,240,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,15,112,15,120,31,62,127,31, + 247,7,199,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,10,18,36,12,2,0,231,192,239,192,254,0,248,0,240, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,14,18,36,18,2, + 0,31,192,127,240,120,248,240,56,224,56,224,0,240,0,126, + 0,63,224,15,248,0,252,0,60,0,28,224,28,240,60,120, + 248,63,240,31,192,10,22,44,12,1,1,28,0,28,0,28, + 0,28,0,255,192,255,192,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,30,0,15,192,7,192,15,18,36,19,2,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,62,124,126,63,238,31, + 142,16,18,36,18,1,0,224,7,240,7,240,15,112,14,120, + 14,56,30,56,28,60,28,28,56,30,56,14,56,14,112,15, + 112,7,224,7,224,3,224,3,192,3,192,26,18,72,28,1, + 0,224,30,1,192,224,62,3,192,224,63,3,128,112,63,3, + 128,112,119,3,128,112,115,7,0,56,115,135,0,56,115,135, + 0,56,227,142,0,24,225,206,0,28,225,206,0,29,193,206, + 0,29,192,220,0,15,192,252,0,15,128,252,0,15,128,120, + 0,7,128,120,0,7,128,120,0,17,18,54,19,1,0,112, + 7,0,120,14,0,60,30,0,30,28,0,30,56,0,15,112, + 0,7,240,0,3,224,0,3,192,0,3,224,0,7,224,0, + 15,240,0,14,120,0,28,60,0,60,28,0,120,30,0,112, + 15,0,240,7,128,16,25,50,18,1,249,224,7,240,7,112, + 15,112,14,120,14,56,30,60,28,28,28,28,60,30,56,14, + 56,15,112,7,112,7,240,7,224,3,224,3,224,1,192,1, + 192,3,128,3,128,7,128,7,0,7,0,15,0,13,18,36, + 17,2,0,127,248,127,248,0,120,0,112,0,240,1,224,3, + 192,3,192,7,128,15,0,31,0,30,0,60,0,120,0,120, + 0,240,0,255,248,255,248,11,35,70,17,3,248,1,224,3, + 224,7,128,15,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,30,0,28,0,60,0,248,0,240, + 0,248,0,60,0,28,0,30,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,7,0,7,128,3, + 224,1,224,2,37,37,12,5,247,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,11,35, + 70,17,3,248,240,0,248,0,60,0,28,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,15,0, + 7,0,7,128,3,224,1,224,3,224,7,128,7,0,15,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,28,0,60,0,248,0,240,0,18,4,12,18,0,7, + 31,1,192,63,231,128,121,255,0,224,62,0,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 10,0,0,3,25,25,13,5,249,224,224,224,0,0,0,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,14,26,52,19,2,252,0,48,0,48,0,32,0,96, + 15,224,63,240,124,248,112,220,112,156,241,156,225,128,225,128, + 227,0,227,0,227,0,226,0,246,28,118,28,124,60,60,120, + 63,240,15,192,24,0,24,0,16,0,48,0,17,26,78,19, + 1,0,0,64,0,7,252,0,15,254,0,30,15,0,60,7, + 128,56,3,128,56,0,0,56,0,0,56,0,0,56,0,0, + 255,224,0,255,224,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,255,255,0,255,255,0, + 18,19,57,20,1,6,64,0,128,224,1,192,113,227,128,63, + 255,0,31,62,0,28,14,0,24,6,0,48,3,0,48,3, + 0,48,3,0,48,3,0,48,3,0,24,6,0,28,14,0, + 31,62,0,55,251,0,113,225,128,224,1,192,64,0,128,18, + 25,75,20,1,0,240,1,192,112,3,192,120,3,128,56,7, + 128,60,7,0,28,15,0,30,14,0,254,15,192,255,31,192, + 7,28,0,7,184,0,3,184,0,3,240,0,255,255,192,255, + 255,192,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 2,33,33,12,5,249,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,0,0,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,12,31,62,16,2,251,31,224,63, + 224,56,32,112,0,112,0,112,0,120,0,124,0,62,0,31, + 128,15,192,63,224,120,240,240,112,224,112,224,112,224,240,241, + 224,127,192,63,128,31,128,7,224,1,224,0,240,0,112,0, + 112,0,112,0,240,65,224,127,192,63,128,10,3,6,10,0, + 22,225,192,225,192,225,192,26,25,100,30,2,1,0,255,192, + 0,3,255,240,0,7,128,120,0,14,0,28,0,28,127,14, + 0,57,255,135,0,115,227,195,0,99,129,225,128,103,128,225, + 128,199,0,0,192,199,0,0,192,199,0,0,192,199,0,0, + 192,199,0,0,192,199,0,0,192,199,0,224,128,99,129,225, + 128,99,195,193,128,49,255,131,0,48,127,7,0,24,0,14, + 0,14,0,28,0,7,128,120,0,1,255,224,0,0,127,128, + 0,12,17,34,14,1,8,31,128,63,192,120,224,96,96,0, + 96,7,224,63,224,56,96,96,96,96,96,96,224,113,224,63, + 96,30,96,0,0,0,0,255,240,13,14,28,19,3,2,14, + 56,28,56,56,112,56,224,112,224,113,192,227,192,227,192,113, + 192,112,224,56,224,24,112,28,56,14,56,18,8,24,21,2, + 7,255,255,192,255,255,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,255,26,25,100,30,2,1, + 0,255,192,0,3,255,240,0,7,128,120,0,14,255,156,0, + 24,255,206,0,48,193,231,0,112,192,99,0,96,192,97,128, + 96,192,97,128,192,192,192,192,192,255,128,192,192,255,128,192, + 192,193,192,192,192,192,192,192,192,192,192,192,192,192,225,128, + 96,192,97,128,96,192,97,128,48,192,99,0,56,0,7,0, + 28,0,14,0,15,0,60,0,7,193,248,0,1,255,224,0, + 0,127,128,0,10,2,4,10,0,22,255,192,255,192,7,7, + 7,11,2,18,56,196,130,130,130,196,120,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,255,240,255,255,240, + 10,13,26,12,1,13,63,128,127,128,97,192,225,192,1,192, + 3,128,7,128,14,0,28,0,56,0,240,0,255,192,255,192, + 10,14,28,13,2,12,127,128,255,192,193,192,1,192,7,128, + 14,0,15,128,3,192,0,192,192,192,192,192,227,128,127,128, + 62,0,6,6,6,8,2,21,28,60,56,112,96,192,255,16, + 31,62,20,2,250,7,255,31,140,63,140,127,140,255,140,255, + 140,255,140,255,140,255,140,127,140,127,140,31,140,7,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,3,4,4,9,3,10,224,224,224,224,8,9,9, + 9,2,247,32,32,60,62,7,3,135,255,252,5,13,13,10, + 2,12,56,120,248,152,24,24,24,24,24,24,24,24,24,12, + 16,32,14,1,9,31,128,63,192,112,224,224,96,192,112,192, + 48,192,48,192,48,192,112,224,112,112,224,63,192,31,128,0, + 0,0,0,255,240,13,14,28,19,3,2,227,128,225,192,112, + 192,56,224,56,112,28,112,28,56,30,56,28,112,56,112,56, + 224,112,192,225,192,227,128,23,27,81,27,2,0,56,0,192, + 120,1,192,248,1,128,216,3,128,24,3,0,24,7,0,24, + 6,0,24,14,0,24,12,0,24,24,0,24,24,0,24,48, + 0,24,112,0,24,96,112,0,224,112,0,192,240,1,193,176, + 1,129,48,3,131,48,3,6,48,7,12,48,6,15,254,14, + 15,254,12,0,48,24,0,48,24,0,48,48,0,48,23,27, + 81,27,2,0,56,0,224,120,1,192,248,1,128,216,3,128, + 24,3,0,24,7,0,24,6,0,24,14,0,24,12,0,24, + 28,0,24,24,0,24,56,0,24,48,0,24,112,248,0,227, + 252,0,195,142,1,199,6,1,128,6,3,128,14,3,0,12, + 7,0,56,6,0,112,14,0,224,12,3,192,28,7,128,24, + 7,254,48,7,254,24,26,78,27,2,0,0,0,24,127,128, + 56,255,192,112,193,192,96,3,128,224,14,0,192,15,129,192, + 3,193,128,0,195,128,192,199,0,192,198,0,227,142,0,127, + 140,28,62,28,60,0,24,60,0,48,108,0,112,204,0,97, + 204,0,227,140,0,195,12,1,199,255,1,135,255,3,0,12, + 7,0,12,6,0,12,14,0,12,15,25,50,18,2,249,1, + 192,1,192,1,192,0,0,0,0,0,0,1,192,1,192,1, + 192,1,192,3,192,7,128,15,0,62,0,124,0,120,0,240, + 0,224,0,224,0,224,8,240,14,120,60,63,252,31,248,7, + 224,24,35,105,26,1,0,1,192,0,1,224,0,0,224,0, + 0,112,0,0,48,0,0,24,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,60,0,0,124,0,0,126,0,0,254, + 0,0,238,0,0,239,0,1,231,0,1,199,128,3,195,128, + 3,131,192,7,131,192,7,1,192,7,1,224,15,0,224,14, + 0,240,31,255,240,31,255,240,31,255,248,60,0,56,56,0, + 60,120,0,28,112,0,30,112,0,30,240,0,14,224,0,15, + 24,35,105,26,1,0,0,7,128,0,7,0,0,14,0,0, + 12,0,0,28,0,0,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,60,0,0,124,0,0,126,0,0,254,0, + 0,238,0,0,239,0,1,231,0,1,199,128,3,195,128,3, + 131,192,7,131,192,7,1,192,7,1,224,15,0,224,14,0, + 240,31,255,240,31,255,240,31,255,248,60,0,56,56,0,60, + 120,0,28,112,0,30,112,0,30,240,0,14,224,0,15,24, + 35,105,26,1,0,0,60,0,0,124,0,0,110,0,0,230, + 0,0,195,0,1,131,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,60,0,0,124,0,0,126,0,0,254,0,0, + 238,0,0,239,0,1,231,0,1,199,128,3,195,128,3,131, + 192,7,131,192,7,1,192,7,1,224,15,0,224,14,0,240, + 31,255,240,31,255,240,31,255,248,60,0,56,56,0,60,120, + 0,28,112,0,30,112,0,30,240,0,14,224,0,15,24,33, + 99,26,1,0,0,241,128,1,255,0,1,159,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,0, + 124,0,0,126,0,0,254,0,0,238,0,0,239,0,1,231, + 0,1,199,128,3,195,128,3,131,192,7,131,192,7,1,192, + 7,1,224,15,0,224,14,0,240,31,255,240,31,255,240,31, + 255,248,60,0,56,56,0,60,120,0,28,112,0,30,112,0, + 30,240,0,14,224,0,15,25,33,132,25,0,0,0,225,192, + 0,0,225,192,0,0,225,192,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0, + 0,0,62,0,0,0,62,0,0,0,127,0,0,0,119,0, + 0,0,247,128,0,0,227,128,0,0,227,192,0,1,227,192, + 0,1,193,192,0,3,193,224,0,3,128,224,0,7,128,240, + 0,7,0,112,0,7,0,112,0,15,255,248,0,15,255,248, + 0,31,255,252,0,28,0,28,0,28,0,30,0,60,0,14, + 0,56,0,14,0,120,0,15,0,112,0,7,0,240,0,7, + 128,24,36,108,25,1,0,0,56,0,0,196,0,0,130,0, + 0,130,0,0,130,0,0,196,0,0,124,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,60,0,0,124,0,0,126, + 0,0,254,0,0,238,0,0,239,0,1,231,0,1,199,128, + 3,195,128,3,131,128,7,131,192,7,129,192,7,1,224,15, + 0,224,14,0,240,31,255,240,31,255,240,31,255,248,60,0, + 56,56,0,60,120,0,60,120,0,28,112,0,30,240,0,14, + 224,0,15,31,25,100,34,1,0,0,7,255,252,0,15,255, + 252,0,15,255,252,0,31,192,0,0,29,192,0,0,61,192, + 0,0,57,192,0,0,121,192,0,0,241,192,0,0,241,192, + 0,1,225,192,0,1,225,255,252,3,193,255,252,3,193,255, + 252,7,129,192,0,7,255,192,0,15,255,192,0,15,255,192, + 0,30,1,192,0,28,1,192,0,60,1,192,0,56,1,192, + 0,120,1,255,254,112,1,255,254,240,1,255,254,19,33,99, + 23,2,249,3,254,0,15,255,128,30,3,192,60,1,192,56, + 0,224,112,0,224,112,0,0,112,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,112,0,0,112,0,224,112,0,224,56, + 1,224,60,1,192,31,7,128,15,255,0,3,252,0,0,64, + 0,0,120,0,0,124,0,0,30,0,0,6,0,0,6,0, + 1,254,0,1,252,0,16,35,70,21,3,0,28,0,14,0, + 7,0,7,0,3,128,1,128,0,0,0,0,0,0,0,0, + 255,254,255,254,255,254,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,254,255,254,255,254,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,255,255,255,255, + 255,255,16,35,70,21,3,0,0,112,0,240,0,224,1,192, + 1,128,3,0,0,0,0,0,0,0,0,0,255,254,255,254, + 255,254,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,254,255,254,255,254,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,255,255,255,255,255,16,35, + 70,21,3,0,7,192,7,192,14,224,12,96,28,112,24,48, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,254, + 255,254,255,254,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,255,255,255,255,255,16,33,66,21,3,0, + 28,112,28,112,28,112,0,0,0,0,0,0,0,0,0,0, + 255,254,255,254,255,254,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,254,255,254,255,254,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,255,255,255,255, + 255,255,6,35,35,9,0,0,240,112,56,24,28,12,0,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,6,35,35,9,3, + 0,28,56,48,112,224,192,0,0,0,0,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,9,35,70,9,0,0,30,0,62,0,55,0, + 115,0,99,128,193,128,0,0,0,0,0,0,0,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 10,33,66,10,0,0,225,192,225,192,225,192,0,0,0,0, + 0,0,0,0,0,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,22,25,75,24,0,0,31,252, + 0,31,255,128,31,255,192,28,7,224,28,0,240,28,0,120, + 28,0,120,28,0,60,28,0,60,28,0,28,28,0,28,255, + 240,28,255,240,28,255,240,28,28,0,28,28,0,28,28,0, + 60,28,0,56,28,0,120,28,0,120,28,0,240,28,7,224, + 31,255,192,31,255,128,31,252,0,19,33,99,25,3,0,3, + 204,0,7,252,0,14,248,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,248,0,224,248,0,224,252,0,224, + 254,0,224,254,0,224,239,0,224,239,0,224,231,128,224,231, + 128,224,227,192,224,227,192,224,225,224,224,224,224,224,224,240, + 224,224,120,224,224,120,224,224,60,224,224,60,224,224,30,224, + 224,30,224,224,15,224,224,15,224,224,7,224,224,3,224,224, + 3,224,22,36,108,26,2,0,3,192,0,1,192,0,0,224, + 0,0,96,0,0,112,0,0,56,0,0,24,0,0,0,0, + 0,0,0,0,0,0,0,0,0,3,255,0,15,255,192,31, + 255,224,62,1,240,56,0,112,120,0,120,112,0,56,240,0, + 56,240,0,28,224,0,28,224,0,28,224,0,28,224,0,28, + 224,0,28,224,0,28,240,0,60,112,0,56,112,0,56,120, + 0,120,56,0,112,60,0,240,31,3,224,15,255,192,7,255, + 128,0,252,0,22,36,108,26,2,0,0,15,0,0,14,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,96,0,0, + 0,0,0,0,0,0,0,0,0,0,0,3,255,0,15,255, + 192,31,255,224,62,1,240,56,0,112,120,0,120,112,0,56, + 240,0,56,240,0,28,224,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,240,0,60,112,0,56,112,0, + 56,120,0,120,56,0,112,60,0,240,31,3,224,15,255,192, + 7,255,128,0,252,0,22,36,108,26,2,0,0,120,0,0, + 120,0,0,252,0,0,206,0,1,206,0,3,135,0,3,3, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,0, + 15,255,192,31,255,224,62,1,240,56,0,112,120,0,120,112, + 0,56,240,0,56,240,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,224,0,28,224,0,28,240,0,60,112,0,56, + 112,0,56,120,0,120,56,0,112,60,0,240,31,3,224,15, + 255,192,7,255,128,0,252,0,22,33,99,26,2,0,1,243, + 0,3,255,0,3,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,255,0,15,255,192,31,255,224,62, + 1,240,56,0,112,120,0,120,112,0,56,240,0,56,240,0, + 28,224,0,28,224,0,28,224,0,28,224,0,28,224,0,28, + 224,0,28,240,0,60,112,0,56,112,0,56,120,0,120,56, + 0,112,60,0,240,31,3,224,15,255,192,7,255,128,0,252, + 0,22,33,99,26,2,0,1,195,128,1,195,128,1,195,128, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 255,0,15,255,192,31,255,224,62,1,240,56,0,112,120,0, + 120,112,0,56,240,0,56,240,0,28,224,0,28,224,0,28, + 224,0,28,224,0,28,224,0,28,224,0,28,240,0,60,112, + 0,56,112,0,56,120,0,120,56,0,112,60,0,240,31,3, + 224,15,255,192,7,255,128,0,252,0,18,19,57,34,8,1, + 64,0,128,224,1,192,112,3,128,56,7,0,24,6,0,12, + 12,0,6,24,0,3,48,0,1,224,0,0,192,0,1,224, + 0,3,48,0,6,24,0,12,12,0,24,6,0,48,3,0, + 96,1,128,224,1,192,64,0,128,22,31,93,26,2,253,0, + 0,24,0,0,60,0,0,56,3,255,120,15,255,240,31,255, + 240,62,1,240,56,1,240,120,3,248,112,7,184,240,15,60, + 240,15,60,224,30,28,224,60,28,224,60,28,224,120,28,224, + 240,28,224,224,28,241,224,60,115,192,56,115,128,56,127,128, + 120,63,0,112,62,0,240,31,3,224,63,255,192,63,255,128, + 121,252,0,240,0,0,224,0,0,32,0,0,19,36,108,25, + 3,0,7,0,0,3,128,0,3,128,0,1,192,0,0,224, + 0,0,96,0,0,48,0,0,0,0,0,0,0,0,0,0, + 0,0,0,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,240,0,224,240,1,224,112,1,192,120, + 3,192,62,7,192,63,255,128,31,255,0,3,248,0,19,36, + 108,25,3,0,0,28,0,0,60,0,0,56,0,0,112,0, + 0,96,0,0,192,0,1,192,0,0,0,0,0,0,0,0, + 0,0,0,0,0,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,240,0,224,240,1,224,112,1, + 192,120,3,192,62,7,192,63,255,128,31,255,0,3,248,0, + 19,36,108,25,3,0,0,224,0,1,240,0,1,240,0,3, + 184,0,3,28,0,6,12,0,6,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,240,0,224,240,1,224, + 112,1,192,120,3,192,62,7,192,63,255,128,31,255,0,3, + 248,0,19,33,99,25,3,0,7,14,0,7,14,0,7,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,240,0,224,240,1,224,112,1,192,120,3,192,62, + 7,192,63,255,128,31,255,0,3,248,0,21,35,105,23,1, + 0,0,14,0,0,30,0,0,28,0,0,56,0,0,48,0, + 0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 0,120,120,0,112,120,0,240,60,1,224,30,1,224,30,3, + 192,15,3,128,15,7,128,7,135,0,3,143,0,3,206,0, + 1,252,0,1,252,0,0,248,0,0,120,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,16,25,50,21,3,0, + 224,0,224,0,224,0,224,0,255,224,255,252,255,254,224,62, + 224,15,224,7,224,7,224,7,224,7,224,7,224,15,224,62, + 255,254,255,252,255,224,224,0,224,0,224,0,224,0,224,0, + 224,0,17,25,75,19,2,0,7,224,0,31,248,0,126,124, + 0,112,60,0,240,28,0,224,28,0,224,28,0,224,56,0, + 224,248,0,225,224,0,225,192,0,225,192,0,225,224,0,225, + 240,0,224,252,0,224,63,0,224,15,0,224,7,128,224,3, + 128,224,3,128,231,3,128,227,131,128,227,231,128,225,255,0, + 224,124,0,15,27,54,19,2,0,14,0,7,0,3,128,3, + 128,1,192,0,192,0,0,0,0,0,0,15,240,63,252,60, + 60,120,30,112,14,0,14,0,14,15,254,63,254,124,14,112, + 14,224,14,224,30,224,30,240,62,120,238,63,238,15,142,15, + 28,56,19,2,0,0,112,0,224,0,224,1,192,3,128,3, + 0,6,0,0,0,0,0,0,0,15,240,63,252,60,60,120, + 30,112,14,0,14,0,14,15,254,63,254,124,14,112,14,224, + 14,224,30,224,30,240,62,120,238,63,238,15,142,15,28,56, + 19,2,0,3,192,7,192,7,224,14,224,12,112,28,48,24, + 24,0,0,0,0,0,0,15,240,63,252,60,60,120,30,112, + 14,0,14,0,14,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,15,25,50,19,2, + 0,15,152,31,240,25,224,0,0,0,0,0,0,0,0,15, + 240,63,252,60,60,120,30,112,14,0,14,0,14,15,254,63, + 254,124,14,112,14,224,14,224,30,224,30,240,62,120,238,63, + 238,15,142,15,25,50,19,2,0,28,56,28,56,28,56,0, + 0,0,0,0,0,0,0,15,240,63,252,60,60,120,30,112, + 14,0,14,0,14,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,15,29,58,19,2, + 0,3,128,12,64,8,32,8,32,8,32,12,64,7,192,0, + 0,0,0,0,0,0,0,15,240,63,252,60,124,120,30,112, + 30,0,30,0,30,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,27,18,72,31,2, + 0,15,224,126,0,63,241,255,0,124,121,199,128,112,31,129, + 192,112,15,1,192,0,15,0,224,0,14,0,224,15,255,255, + 224,63,255,255,224,124,14,0,0,240,14,0,0,224,14,0, + 0,224,31,0,224,224,27,1,192,240,59,131,192,124,241,239, + 128,63,225,255,128,31,192,126,0,14,26,52,18,2,248,15, + 224,63,248,60,120,112,60,112,28,240,28,224,0,224,0,224, + 0,224,0,224,0,224,0,240,28,112,28,112,60,60,120,31, + 240,7,224,1,0,1,224,1,240,0,120,0,24,0,24,7, + 240,7,224,16,28,56,19,2,0,28,0,14,0,14,0,7, + 0,3,128,1,128,0,192,0,0,0,0,0,0,7,224,31, + 248,60,124,120,30,112,14,240,14,224,14,255,254,255,255,224, + 0,224,0,224,0,112,14,112,14,120,30,62,124,31,248,7, + 224,16,28,56,19,2,0,0,120,0,240,0,224,1,192,1, + 128,3,128,3,0,0,0,0,0,0,0,7,224,31,248,60, + 124,120,30,112,14,240,14,224,14,255,254,255,255,224,0,224, + 0,224,0,112,14,112,14,120,30,62,124,31,248,7,224,16, + 28,56,19,2,0,3,192,7,192,7,224,14,224,12,112,24, + 48,24,24,0,0,0,0,0,0,7,224,31,248,60,124,120, + 30,112,14,240,14,224,14,255,254,255,255,224,0,224,0,224, + 0,112,14,112,14,120,30,62,124,31,248,7,224,16,25,50, + 19,2,0,28,56,28,56,28,56,0,0,0,0,0,0,0, + 0,7,224,31,248,60,60,120,14,112,14,240,14,224,6,255, + 254,255,255,224,0,224,0,224,0,112,14,112,14,120,30,62, + 60,31,248,7,224,6,27,27,8,255,0,240,112,56,24,28, + 12,0,0,0,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,6,27,27,8,2,0,28,56,112,112, + 224,192,0,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,9,27,54,8,255,0,62,0,62, + 0,119,0,115,0,227,128,193,128,0,0,0,0,0,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,10,25,50,8,255,0,227,192,227,192,227,192,0, + 0,0,0,0,0,0,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,17,26,78,21,2, + 0,16,4,0,56,28,0,30,248,0,7,192,0,15,192,0, + 60,240,0,112,120,0,0,60,0,7,252,0,31,254,0,62, + 63,0,120,15,0,112,7,0,240,7,128,240,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,240,7,0, + 112,7,0,120,15,0,62,62,0,31,252,0,7,240,0,15, + 25,50,19,2,0,15,48,31,240,27,224,0,0,0,0,0, + 0,0,0,227,240,239,248,252,124,248,30,240,30,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,17,28,84,21,2,0,14,0,0, + 15,0,0,7,0,0,3,128,0,1,128,0,0,192,0,0, + 224,0,0,0,0,0,0,0,0,0,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,17,28,84,21,2,0,0,56,0,0,120,0,0,112,0, + 0,224,0,0,192,0,1,128,0,3,0,0,0,0,0,0, + 0,0,0,0,0,7,240,0,31,252,0,62,62,0,120,15, + 0,112,7,0,240,7,0,240,7,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,7,128,240,7,128,112,7,0,120, + 15,0,62,62,0,31,252,0,7,240,0,17,28,84,21,2, + 0,1,192,0,3,224,0,3,224,0,7,112,0,14,56,0, + 12,24,0,28,28,0,0,0,0,0,0,0,0,0,0,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 0,240,7,128,224,3,128,224,3,128,224,3,128,224,3,128, + 240,7,128,240,7,128,112,7,0,120,15,0,62,62,0,31, + 252,0,7,240,0,17,25,75,21,2,0,7,152,0,15,248, + 0,12,240,0,0,0,0,0,0,0,0,0,0,0,0,0, + 7,240,0,31,252,0,62,62,0,120,15,0,112,7,0,240, + 7,0,240,7,128,224,3,128,224,3,128,224,3,128,224,3, + 128,240,7,128,240,7,128,112,7,0,120,15,0,62,62,0, + 31,252,0,7,240,0,17,25,75,21,2,0,28,56,0,28, + 56,0,28,56,0,0,0,0,0,0,0,0,0,0,0,0, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,240,7,128,240,7,128,112,7,0,120,15,0,62,62, + 0,31,252,0,7,240,0,20,15,45,34,7,3,0,96,0, + 0,240,0,0,240,0,0,96,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,0,0,0,0,0,0,0,96, + 0,0,240,0,0,240,0,0,96,0,17,23,69,21,2,254, + 0,1,0,0,1,128,0,3,128,7,247,0,31,254,0,62, + 62,0,120,31,0,112,63,0,240,55,128,240,119,128,224,227, + 128,225,195,128,225,131,128,227,131,128,231,7,128,254,7,128, + 124,7,0,124,15,0,62,62,0,127,252,0,103,240,0,224, + 0,0,192,0,0,15,28,56,19,2,0,28,0,30,0,14, + 0,7,0,3,0,1,128,1,128,0,0,0,0,0,0,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,240,30,124,126,63, + 238,31,142,15,28,56,19,2,0,0,112,0,240,0,224,1, + 192,1,128,3,0,7,0,0,0,0,0,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,30,124,126,63,238,31, + 142,15,28,56,19,2,0,3,128,7,192,7,192,14,224,12, + 96,24,48,24,48,0,0,0,0,0,0,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,240,30,240,30,124,126,63,238,31,142,15, + 25,50,19,2,0,56,112,56,112,56,112,0,0,0,0,0, + 0,0,0,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,240,30,240, + 62,124,126,63,238,31,142,16,34,68,18,1,249,0,56,0, + 112,0,96,0,224,1,192,1,128,0,0,0,0,0,0,224, + 7,240,7,112,15,112,14,120,14,56,30,60,28,28,28,28, + 60,30,56,14,120,15,112,7,112,7,240,7,224,3,224,3, + 224,1,192,1,192,3,128,3,128,231,128,255,0,127,0,62, + 0,16,32,64,20,2,249,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,227,240,231,248,254,60,248,30,240,14,240, + 15,224,7,224,7,224,7,224,7,224,7,224,7,240,15,240, + 14,248,30,254,124,239,248,227,240,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,16,32,64,18,1,249,28,56,28, + 56,28,56,0,0,0,0,0,0,0,0,224,7,224,7,240, + 15,112,14,120,14,56,30,60,28,60,28,28,56,30,56,14, + 120,15,112,15,112,7,240,7,224,3,224,3,192,3,192,3, + 192,3,128,3,128,7,128,7,0,7,0,15,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=20 h=28 x= 7 y=12 dx=34 dy= 0 ascent=26 len=75 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25n[774] U8G_SECTION(".progmem.u8g_font_fur25n") = { + 0,46,45,254,247,25,0,0,0,0,42,57,0,26,252,25, + 0,14,13,26,22,4,12,24,96,28,224,28,224,12,192,7, + 128,243,60,255,252,231,156,7,128,12,192,28,224,60,224,24, + 96,20,21,63,34,7,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,255,255,240,255,255,240,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,6,9,9,9,2,252,60,120,120,112, + 112,224,224,224,192,8,3,3,10,1,7,255,255,255,3,4, + 4,9,3,0,224,224,224,224,10,28,56,13,2,254,0,192, + 1,192,1,128,1,128,3,128,3,0,3,0,3,0,7,0, + 6,0,6,0,14,0,12,0,12,0,28,0,28,0,24,0, + 24,0,56,0,48,0,48,0,112,0,112,0,96,0,96,0, + 224,0,192,0,192,0,15,25,50,19,2,1,15,224,63,248, + 62,248,120,60,112,28,112,30,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,240,14, + 112,30,112,28,120,28,60,60,63,248,31,240,7,192,8,25, + 25,19,5,0,15,31,63,127,255,231,135,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,15,25,50, + 19,2,1,15,240,63,248,62,252,120,28,120,30,112,14,240, + 14,0,14,0,30,0,28,0,60,0,120,0,120,0,240,1, + 224,3,192,7,128,15,0,31,0,62,0,60,0,120,0,240, + 0,255,254,255,254,16,25,50,19,2,1,15,240,63,248,60, + 28,120,14,112,14,112,14,0,14,0,14,0,28,0,120,3, + 240,3,240,0,248,0,30,0,14,0,15,0,7,0,7,240, + 7,240,7,240,14,120,30,60,124,31,248,7,224,17,25,75, + 19,1,0,0,60,0,0,124,0,0,124,0,0,252,0,1, + 220,0,1,220,0,3,156,0,7,28,0,7,28,0,14,28, + 0,28,28,0,60,28,0,56,28,0,112,28,0,240,28,0, + 224,28,0,255,255,128,255,255,128,255,255,128,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,15,25, + 50,19,2,0,127,252,127,252,127,252,112,0,112,0,112,0, + 112,0,112,0,115,240,127,248,124,60,120,28,112,30,96,14, + 0,14,0,14,0,14,0,14,0,14,224,30,240,28,112,60, + 124,120,63,240,15,192,16,25,50,19,1,1,15,240,31,252, + 60,28,120,30,112,14,240,14,224,0,224,0,224,0,227,240, + 231,252,239,252,252,30,248,14,240,15,240,7,240,7,240,7, + 240,7,112,7,120,14,56,14,62,60,15,248,7,224,15,25, + 50,19,2,0,255,254,255,254,0,14,0,30,0,28,0,28, + 0,60,0,56,0,56,0,120,0,112,0,240,0,240,0,224, + 1,224,1,224,1,192,3,192,3,128,7,128,7,128,7,0, + 15,0,15,0,14,0,16,25,50,19,1,1,15,240,63,252, + 60,60,120,30,112,14,112,14,112,14,112,14,56,28,60,60, + 15,240,15,240,62,56,56,28,112,14,224,7,224,7,224,7, + 224,7,224,7,240,15,120,14,60,60,31,248,7,224,16,25, + 50,19,2,1,31,248,63,252,120,30,112,14,240,15,224,15, + 224,15,224,15,224,15,240,15,112,31,120,63,63,247,15,231, + 0,7,0,7,0,7,0,14,112,14,112,14,112,30,112,60, + 60,120,31,240,15,224}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=31 h=37 x= 8 y=21 dx=34 dy= 0 ascent=28 len=120 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25r[5389] U8G_SECTION(".progmem.u8g_font_fur25r") = { + 0,46,45,254,247,25,6,119,15,27,32,127,249,28,247,25, + 249,0,0,0,10,0,0,3,25,25,12,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 0,0,0,224,224,224,11,10,20,15,2,15,241,224,112,224, + 112,224,112,224,112,224,112,224,112,224,96,192,96,192,96,192, + 22,25,75,25,2,0,0,112,224,0,112,224,0,96,192,0, + 225,192,0,225,192,0,193,128,0,193,128,63,255,252,63,255, + 248,1,131,0,3,135,0,3,134,0,3,6,0,7,14,0, + 255,255,224,255,255,224,14,28,0,14,28,0,12,24,0,12, + 24,0,28,56,0,28,56,0,24,48,0,56,112,0,56,112, + 0,16,32,64,18,1,252,1,128,1,128,1,128,15,240,31, + 248,63,252,121,158,113,142,113,142,113,142,113,128,113,128,121, + 128,63,128,31,240,15,252,1,254,1,159,1,143,1,135,225, + 135,225,135,225,135,241,135,121,143,127,254,63,252,15,240,1, + 128,1,128,1,128,1,128,28,27,108,32,2,0,0,0,14, + 0,0,0,12,0,31,128,24,0,63,192,24,0,121,224,48, + 0,240,240,48,0,224,112,96,0,224,112,224,0,224,112,192, + 0,224,113,192,0,240,113,128,0,112,227,128,0,63,227,0, + 0,31,134,31,128,0,6,63,192,0,12,121,224,0,12,240, + 240,0,24,224,112,0,56,224,112,0,48,224,112,0,112,224, + 112,0,96,224,112,0,224,224,112,0,192,240,240,1,128,121, + 224,1,128,63,192,3,0,31,128,23,25,75,26,2,1,7, + 248,0,15,252,0,30,30,0,28,14,0,28,14,0,28,14, + 0,30,28,0,30,60,0,15,248,0,7,224,0,15,192,112, + 31,224,112,61,224,112,120,240,112,240,120,112,224,60,112,224, + 30,224,224,15,224,224,7,224,240,3,192,120,3,224,124,15, + 240,63,255,120,31,252,124,7,240,62,4,10,10,13,4,15, + 240,112,112,112,112,112,112,96,96,96,6,30,30,12,3,251, + 12,24,24,56,56,112,112,112,112,240,224,224,224,224,224,224, + 224,224,224,224,240,112,112,112,112,56,56,24,24,12,6,30, + 30,12,3,251,224,96,112,112,48,56,56,56,56,28,28,28, + 28,28,28,28,28,28,28,28,28,60,56,56,56,48,112,112, + 96,224,14,13,26,22,4,12,24,96,28,224,28,224,12,192, + 7,128,243,60,255,252,231,156,7,128,12,192,28,224,60,224, + 24,96,20,21,63,34,7,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,6,9,9,9,2,252,60,120,120, + 112,112,224,224,224,192,8,3,3,10,1,7,255,255,255,3, + 4,4,9,3,0,224,224,224,224,10,28,56,13,2,254,0, + 192,1,192,1,128,1,128,3,128,3,0,3,0,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,28,0,24, + 0,24,0,56,0,48,0,48,0,112,0,112,0,96,0,96, + 0,224,0,192,0,192,0,15,25,50,19,2,1,15,224,63, + 248,62,248,120,60,112,28,112,30,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 14,112,30,112,28,120,28,60,60,63,248,31,240,7,192,8, + 25,25,19,5,0,15,31,63,127,255,231,135,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,25, + 50,19,2,1,15,240,63,248,62,252,120,28,120,30,112,14, + 240,14,0,14,0,30,0,28,0,60,0,120,0,120,0,240, + 1,224,3,192,7,128,15,0,31,0,62,0,60,0,120,0, + 240,0,255,254,255,254,16,25,50,19,2,1,15,240,63,248, + 60,28,120,14,112,14,112,14,0,14,0,14,0,28,0,120, + 3,240,3,240,0,248,0,30,0,14,0,15,0,7,0,7, + 240,7,240,7,240,14,120,30,60,124,31,248,7,224,17,25, + 75,19,1,0,0,60,0,0,124,0,0,124,0,0,252,0, + 1,220,0,1,220,0,3,156,0,7,28,0,7,28,0,14, + 28,0,28,28,0,60,28,0,56,28,0,112,28,0,240,28, + 0,224,28,0,255,255,128,255,255,128,255,255,128,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,15, + 25,50,19,2,0,127,252,127,252,127,252,112,0,112,0,112, + 0,112,0,112,0,115,240,127,248,124,60,120,28,112,30,96, + 14,0,14,0,14,0,14,0,14,0,14,224,30,240,28,112, + 60,124,120,63,240,15,192,16,25,50,19,1,1,15,240,31, + 252,60,28,120,30,112,14,240,14,224,0,224,0,224,0,227, + 240,231,252,239,252,252,30,248,14,240,15,240,7,240,7,240, + 7,240,7,112,7,120,14,56,14,62,60,15,248,7,224,15, + 25,50,19,2,0,255,254,255,254,0,14,0,30,0,28,0, + 28,0,60,0,56,0,56,0,120,0,112,0,240,0,240,0, + 224,1,224,1,224,1,192,3,192,3,128,7,128,7,128,7, + 0,15,0,15,0,14,0,16,25,50,19,1,1,15,240,63, + 252,60,60,120,30,112,14,112,14,112,14,112,14,56,28,60, + 60,15,240,15,240,62,56,56,28,112,14,224,7,224,7,224, + 7,224,7,224,7,240,15,120,14,60,60,31,248,7,224,16, + 25,50,19,2,1,31,248,63,252,120,30,112,14,240,15,224, + 15,224,15,224,15,224,15,240,15,112,31,120,63,63,247,15, + 231,0,7,0,7,0,7,0,14,112,14,112,14,112,30,112, + 60,60,120,31,240,15,224,3,18,18,9,3,0,224,224,224, + 224,0,0,0,0,0,0,0,0,0,0,224,224,224,224,6, + 22,22,9,1,252,56,56,56,56,0,0,0,0,0,0,0, + 0,0,60,56,56,56,112,112,112,96,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,240,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,252,0,0,31,0,0,7,224,0,0,248,0,0,31,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,15,25,50,18,1,1,31,224,63,248,125,252,240,30,96, + 14,0,14,0,14,0,30,0,28,0,60,0,120,0,240,1, + 192,3,128,7,128,7,0,7,0,7,0,7,0,0,0,0, + 0,0,0,7,0,7,0,7,0,30,30,120,34,2,251,0, + 31,240,0,0,255,254,0,3,255,255,0,7,224,31,192,15, + 128,3,224,30,0,0,240,60,0,0,112,56,31,56,120,112, + 63,184,56,112,125,248,56,240,112,120,60,224,240,120,28,224, + 224,56,28,224,224,56,28,224,224,56,28,224,224,56,28,224, + 224,56,28,224,224,56,56,240,224,120,56,112,112,120,120,112, + 120,254,240,120,63,223,224,56,31,15,192,60,0,0,0,30, + 0,0,0,15,128,0,0,7,224,0,0,3,255,248,0,0, + 255,248,0,0,31,240,0,24,25,75,26,1,0,0,60,0, + 0,124,0,0,126,0,0,254,0,0,238,0,0,239,0,1, + 231,0,1,199,128,3,195,128,3,131,192,7,131,192,7,1, + 192,7,1,224,15,0,224,14,0,240,31,255,240,31,255,240, + 31,255,248,60,0,56,56,0,60,120,0,28,112,0,30,112, + 0,30,240,0,14,224,0,15,18,25,75,23,3,0,255,248, + 0,255,254,0,255,255,0,224,15,128,224,7,128,224,3,128, + 224,3,128,224,3,128,224,7,128,224,15,0,255,254,0,255, + 252,0,255,254,0,224,15,0,224,3,128,224,3,192,224,1, + 192,224,1,192,224,1,192,224,3,192,224,7,192,224,15,128, + 255,255,0,255,254,0,255,248,0,19,25,75,23,2,1,3, + 254,0,15,255,128,30,3,192,60,1,192,56,0,224,112,0, + 224,112,0,0,112,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,112,0,0,112,0,224,112,0,224,56,1,224,60,1, + 192,31,7,128,15,255,0,1,252,0,20,25,75,25,3,0, + 255,240,0,255,254,0,255,255,0,224,31,128,224,7,192,224, + 3,192,224,1,224,224,0,224,224,0,240,224,0,240,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,240, + 224,0,240,224,0,224,224,1,224,224,3,192,224,7,192,224, + 31,128,255,255,0,255,252,0,255,240,0,16,25,50,21,3, + 0,255,254,255,254,255,254,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,255,255, + 255,255,255,15,25,50,20,3,0,255,254,255,254,255,254,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 252,255,252,255,252,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,21,25,75,26,2, + 1,1,255,128,7,255,192,15,255,224,30,0,240,60,0,120, + 120,0,56,112,0,0,112,0,0,240,0,0,224,0,0,224, + 0,0,224,15,248,224,15,248,224,15,248,224,0,56,240,0, + 56,112,0,56,112,0,56,120,0,56,60,0,56,62,0,56, + 31,0,248,15,255,248,7,255,240,0,255,128,18,25,75,24, + 3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,3,25,25, + 9,3,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,14,25,50,19, + 2,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,224,28,224,28,240,60,120,120,127,240, + 63,224,15,192,18,25,75,23,3,0,224,7,128,224,15,0, + 224,30,0,224,60,0,224,120,0,224,240,0,225,224,0,227, + 192,0,231,128,0,239,0,0,254,0,0,255,0,0,239,128, + 0,231,128,0,231,192,0,227,224,0,225,240,0,224,248,0, + 224,120,0,224,60,0,224,62,0,224,31,0,224,15,128,224, + 7,192,224,3,192,15,25,50,19,3,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,25,25,100, + 31,3,0,248,0,15,128,252,0,31,128,252,0,31,128,252, + 0,31,128,238,0,59,128,238,0,59,128,239,0,123,128,231, + 0,115,128,231,0,115,128,231,128,243,128,227,128,227,128,227, + 128,227,128,225,193,195,128,225,193,195,128,225,193,195,128,224, + 227,131,128,224,227,131,128,224,247,131,128,224,119,3,128,224, + 119,3,128,224,127,3,128,224,62,3,128,224,62,3,128,224, + 28,3,128,224,28,3,128,19,25,75,25,3,0,248,0,224, + 248,0,224,252,0,224,254,0,224,254,0,224,239,0,224,239, + 0,224,231,128,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,120,224,224,60,224, + 224,60,224,224,30,224,224,30,224,224,15,224,224,15,224,224, + 7,224,224,3,224,224,3,224,22,25,75,26,2,1,3,255, + 0,15,255,192,31,255,224,62,1,240,56,0,112,120,0,120, + 112,0,56,240,0,56,240,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,112,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,31,3,224, + 15,255,192,7,255,128,0,252,0,16,25,50,21,3,0,255, + 224,255,252,255,254,224,30,224,15,224,7,224,7,224,7,224, + 7,224,15,224,30,255,254,255,252,255,224,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,24,25,75,27,2,1,3,255,0,15,255,192,31,255,224, + 62,1,240,56,0,112,120,0,120,112,0,56,240,0,56,240, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,240,0,60,112,0,56,112,0,56,120,0,120, + 56,0,112,60,0,240,31,3,224,15,255,255,7,255,255,0, + 255,255,17,25,75,21,3,0,255,240,0,255,252,0,255,254, + 0,224,31,0,224,15,0,224,7,0,224,7,0,224,7,0, + 224,15,0,224,30,0,255,252,0,255,240,0,255,252,0,224, + 60,0,224,30,0,224,14,0,224,14,0,224,14,0,224,15, + 0,224,7,0,224,7,0,224,7,0,224,7,0,224,7,0, + 224,7,128,18,25,75,22,2,1,7,252,0,31,254,0,63, + 255,0,120,7,128,112,3,128,112,3,128,112,0,0,112,0, + 0,120,0,0,124,0,0,63,192,0,31,252,0,7,255,0, + 0,63,128,0,7,128,0,3,192,0,1,192,224,1,192,224, + 1,192,240,1,192,112,3,192,124,15,128,63,255,0,31,254, + 0,7,240,0,19,25,75,21,1,0,255,255,224,255,255,224, + 255,255,224,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,19,25,75,25,3,0,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,240,0, + 224,240,1,224,112,1,192,120,3,192,62,7,192,63,255,128, + 31,255,0,3,248,0,21,25,75,22,1,0,240,0,120,240, + 0,240,240,0,240,120,0,240,120,1,224,120,1,224,60,1, + 192,60,3,192,60,3,192,28,3,128,30,7,128,14,7,128, + 14,7,0,15,15,0,7,15,0,7,14,0,7,158,0,3, + 158,0,3,156,0,3,252,0,1,252,0,1,248,0,1,248, + 0,0,248,0,0,240,0,31,25,100,33,1,0,224,7,192, + 14,240,7,192,14,240,7,192,30,112,7,192,30,112,14,224, + 28,120,14,224,60,120,14,224,60,56,14,240,56,56,28,112, + 56,60,28,112,120,28,28,112,120,28,60,56,112,28,56,56, + 112,30,56,56,240,14,56,56,224,14,112,28,224,14,112,28, + 224,7,112,29,192,7,112,29,192,7,224,15,192,7,224,15, + 192,3,224,15,128,3,224,7,128,3,192,7,128,1,192,7, + 0,22,25,75,24,1,0,124,0,120,60,0,240,30,1,224, + 31,1,224,15,3,192,7,135,128,7,135,128,3,207,0,1, + 238,0,1,254,0,0,252,0,0,120,0,0,252,0,0,252, + 0,1,222,0,3,207,0,3,143,0,7,135,128,15,3,192, + 14,3,192,30,1,224,60,1,240,56,0,240,120,0,120,240, + 0,124,21,25,75,23,1,0,240,0,120,120,0,112,120,0, + 240,60,1,224,30,1,224,30,3,192,15,3,128,15,7,128, + 7,135,0,3,143,0,3,206,0,1,252,0,1,252,0,0, + 248,0,0,120,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,18,25,75,22,2,0,127,255,192,127,255,192,127, + 255,192,0,3,192,0,7,128,0,15,128,0,31,0,0,30, + 0,0,60,0,0,124,0,0,248,0,0,240,0,1,224,0, + 3,224,0,7,192,0,15,128,0,15,0,0,31,0,0,62, + 0,0,124,0,0,120,0,0,240,0,0,255,255,192,255,255, + 192,255,255,192,7,32,32,14,4,249,254,254,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,254,254,10,28,56,13,2,254, + 192,0,192,0,224,0,224,0,96,0,96,0,112,0,48,0, + 48,0,56,0,56,0,24,0,24,0,28,0,12,0,12,0, + 14,0,6,0,6,0,6,0,7,0,3,0,3,0,3,128, + 1,128,1,128,1,128,1,192,6,32,32,14,4,249,252,252, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,252,252,18,21, + 63,34,8,0,0,192,0,1,224,0,1,224,0,1,224,0, + 3,48,0,3,48,0,2,16,0,6,24,0,6,24,0,12, + 12,0,12,12,0,12,12,0,24,6,0,24,6,0,24,6, + 0,48,3,0,48,3,0,112,1,128,96,1,128,96,1,128, + 192,0,192,17,2,6,17,0,251,255,255,128,255,255,128,6, + 6,6,8,0,21,224,224,112,56,24,12,15,18,36,19,2, + 0,15,240,63,252,60,60,120,30,112,14,0,14,0,14,15, + 254,63,254,124,14,112,14,224,14,224,30,224,30,240,62,120, + 238,63,238,15,142,16,25,50,20,2,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,227,240,239,248,238,124,248, + 30,240,14,240,15,224,7,224,7,224,7,224,7,224,7,224, + 15,240,14,240,14,248,28,254,124,239,248,227,224,14,18,36, + 18,2,0,15,224,63,240,124,120,112,60,112,28,240,28,224, + 0,224,0,224,0,224,0,224,0,224,0,240,28,112,28,112, + 60,60,120,31,240,15,224,16,25,50,20,2,0,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,15,199,31,247,60, + 127,120,31,112,31,112,15,224,15,224,7,224,7,224,7,224, + 7,224,7,112,15,112,15,56,31,62,63,15,247,7,199,16, + 18,36,19,2,0,7,224,31,248,60,124,120,30,112,14,240, + 14,224,14,255,254,255,255,224,0,224,0,224,0,112,14,112, + 14,120,30,62,124,31,248,7,224,11,25,50,12,1,0,7, + 224,15,224,31,32,28,0,28,0,28,0,28,0,255,224,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,16,25,50,20,2,249,7,231,31,247,62,127,120,31,112, + 15,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,112,15,120,31,62,127,31,247,15,199,0,7,0,15,112, + 14,120,30,60,60,31,248,7,224,15,25,50,19,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,227,240,239, + 248,252,124,248,28,240,30,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,3,25,25,7,2,0,224,224,224,0,0,0,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 5,32,32,9,2,249,56,56,56,0,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,240,224,14,25,50,17,2,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,120,224,240,225,224, + 225,192,227,192,231,128,239,0,254,0,254,0,239,0,231,128, + 231,128,227,192,225,224,225,224,224,240,224,120,224,60,3,25, + 25,8,2,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,26,18,72, + 30,2,0,227,224,124,0,239,241,255,0,252,123,143,128,248, + 63,3,128,240,30,3,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,15,18,36,19,2, + 0,227,240,239,248,252,124,248,30,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,17,18,54,21,2,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,16,25,50,20,2,249,227,240,231,248,254,60,248,30,240, + 14,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,240,14,248,30,254,124,239,248,227,240,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,16,25,50,21,2,249,7, + 199,31,247,62,63,120,31,112,15,240,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,15,112,15,120,31,62,127,31, + 247,7,199,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,10,18,36,12,2,0,231,192,239,192,254,0,248,0,240, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,14,18,36,18,2, + 0,31,192,127,240,120,248,240,56,224,56,224,0,240,0,126, + 0,63,224,15,248,0,252,0,60,0,28,224,28,240,60,120, + 248,63,240,31,192,10,22,44,12,1,1,28,0,28,0,28, + 0,28,0,255,192,255,192,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,30,0,15,192,7,192,15,18,36,19,2,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,62,124,126,63,238,31, + 142,16,18,36,18,1,0,224,7,240,7,240,15,112,14,120, + 14,56,30,56,28,60,28,28,56,30,56,14,56,14,112,15, + 112,7,224,7,224,3,224,3,192,3,192,26,18,72,28,1, + 0,224,30,1,192,224,62,3,192,224,63,3,128,112,63,3, + 128,112,119,3,128,112,115,7,0,56,115,135,0,56,115,135, + 0,56,227,142,0,24,225,206,0,28,225,206,0,29,193,206, + 0,29,192,220,0,15,192,252,0,15,128,252,0,15,128,120, + 0,7,128,120,0,7,128,120,0,17,18,54,19,1,0,112, + 7,0,120,14,0,60,30,0,30,28,0,30,56,0,15,112, + 0,7,240,0,3,224,0,3,192,0,3,224,0,7,224,0, + 15,240,0,14,120,0,28,60,0,60,28,0,120,30,0,112, + 15,0,240,7,128,16,25,50,18,1,249,224,7,240,7,112, + 15,112,14,120,14,56,30,60,28,28,28,28,60,30,56,14, + 56,15,112,7,112,7,240,7,224,3,224,3,224,1,192,1, + 192,3,128,3,128,7,128,7,0,7,0,15,0,13,18,36, + 17,2,0,127,248,127,248,0,120,0,112,0,240,1,224,3, + 192,3,192,7,128,15,0,31,0,30,0,60,0,120,0,120, + 0,240,0,255,248,255,248,11,35,70,17,3,248,1,224,3, + 224,7,128,15,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,30,0,28,0,60,0,248,0,240, + 0,248,0,60,0,28,0,30,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,7,0,7,128,3, + 224,1,224,2,37,37,12,5,247,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,11,35, + 70,17,3,248,240,0,248,0,60,0,28,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,15,0, + 7,0,7,128,3,224,1,224,3,224,7,128,7,0,15,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,28,0,60,0,248,0,240,0,18,4,12,18,0,7, + 31,1,192,63,231,128,121,255,0,224,62,0,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=37 h=43 x=10 y=26 dx=40 dy= 0 ascent=43 len=185 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =43 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30[16505] U8G_SECTION(".progmem.u8g_font_fur30") = { + 0,54,54,253,245,30,9,94,20,223,32,255,249,43,245,31, + 248,0,0,0,12,0,0,4,30,30,14,5,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,0,0,0,240,240,240,240,12,12,24,18,3, + 18,240,240,240,240,240,240,240,240,240,240,240,240,240,112,224, + 112,224,112,96,112,96,112,96,96,26,30,120,30,2,0,0, + 28,14,0,0,28,28,0,0,28,28,0,0,28,28,0,0, + 56,24,0,0,56,56,0,0,56,56,0,0,112,56,0,0, + 112,112,0,31,255,255,192,31,255,255,128,31,255,255,128,0, + 224,224,0,0,224,224,0,1,192,224,0,1,193,192,0,1, + 193,192,0,127,255,254,0,255,255,254,0,255,255,254,0,3, + 3,128,0,7,7,0,0,7,7,0,0,7,7,0,0,14, + 7,0,0,14,14,0,0,14,14,0,0,14,14,0,0,28, + 28,0,0,28,28,0,0,20,37,111,22,1,252,0,96,0, + 0,96,0,0,96,0,3,252,0,15,254,0,63,255,0,63, + 255,128,124,103,128,120,99,192,240,99,192,240,99,192,240,96, + 0,240,96,0,240,96,0,120,96,0,127,96,0,63,240,0, + 31,254,0,15,255,128,1,255,192,0,111,224,0,97,224,0, + 96,240,0,96,240,0,96,240,240,96,240,240,96,240,240,96, + 240,120,96,240,124,97,224,63,255,192,31,255,128,15,255,0, + 0,96,0,0,96,0,0,96,0,0,96,0,33,31,155,37, + 2,0,0,0,0,224,0,15,192,0,192,0,31,240,1,192, + 0,63,248,1,128,0,120,60,3,0,0,240,60,7,0,0, + 240,30,6,0,0,240,30,14,0,0,240,30,12,0,0,240, + 30,28,0,0,240,30,24,0,0,240,28,56,0,0,112,60, + 48,0,0,120,124,112,0,0,63,248,224,0,0,31,240,192, + 96,0,3,129,195,252,0,0,1,135,254,0,0,3,143,15, + 0,0,3,14,7,0,0,7,30,7,128,0,6,30,7,128, + 0,14,30,7,128,0,28,30,7,128,0,28,30,7,128,0, + 56,30,7,128,0,56,30,7,128,0,112,15,15,0,0,96, + 15,254,0,0,224,7,252,0,0,192,1,248,0,27,30,120, + 30,2,1,3,254,0,0,7,255,0,0,15,143,128,0,15, + 3,192,0,30,3,192,0,30,3,192,0,30,3,192,0,30, + 3,192,0,31,7,128,0,15,15,128,0,15,191,0,0,7, + 252,0,0,3,248,0,0,7,224,15,0,15,240,15,0,63, + 248,15,0,124,124,15,0,120,62,15,0,248,31,15,0,240, + 15,142,0,240,7,206,0,240,3,254,0,240,1,254,0,240, + 0,252,0,248,0,124,0,124,0,126,0,126,1,255,0,63, + 255,255,128,31,255,207,192,7,255,3,224,4,12,12,15,5, + 18,240,240,240,240,112,112,112,112,112,112,112,112,7,36,36, + 15,4,251,14,14,28,28,60,56,56,120,120,120,112,112,240, + 240,240,240,240,240,240,240,240,240,240,240,112,112,120,120,120, + 56,56,60,28,28,14,14,7,36,36,14,4,251,224,224,96, + 112,112,120,56,56,60,60,60,28,28,28,30,30,30,30,30, + 30,30,30,28,28,60,60,60,60,56,56,120,112,112,224,224, + 224,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0,4,20,20,11,4,0,240,240,240, + 240,240,0,0,0,0,0,0,0,0,0,0,240,240,240,240, + 240,6,26,26,11,2,250,60,60,60,60,60,0,0,0,0, + 0,0,0,0,0,0,0,60,60,60,56,120,112,112,112,224, + 224,24,21,63,40,8,2,0,0,1,0,0,15,0,0,63, + 0,1,252,0,7,224,0,63,0,1,252,0,7,224,0,63, + 0,0,252,0,0,224,0,0,248,0,0,126,0,0,15,192, + 0,3,248,0,0,126,0,0,31,192,0,3,240,0,0,126, + 0,0,31,0,0,3,24,10,30,40,8,7,255,255,255,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,255,255,255,24,21,63,40,8,2, + 128,0,0,240,0,0,252,0,0,63,128,0,7,224,0,0, + 252,0,0,63,0,0,7,224,0,0,252,0,0,63,0,0, + 7,0,0,31,0,0,126,0,3,240,0,31,192,0,126,0, + 3,248,0,15,192,0,126,0,0,248,0,0,192,0,0,18, + 30,90,21,1,1,15,248,0,31,254,0,63,255,0,126,127, + 128,248,7,128,112,3,192,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,15,0,0,30,0,0,60,0,0, + 120,0,1,240,0,1,224,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,0,0,0,0,0,0, + 0,0,0,3,192,0,3,192,0,3,192,0,3,192,0,35, + 37,185,39,2,249,0,7,252,0,0,0,63,255,128,0,0, + 255,255,240,0,1,255,255,248,0,7,248,3,252,0,15,224, + 0,126,0,15,128,0,31,0,31,0,0,15,128,62,0,0, + 7,128,60,0,0,7,192,120,7,231,131,192,120,15,247,131, + 192,112,31,255,129,224,240,62,31,129,224,240,60,15,129,224, + 240,120,7,129,224,240,120,7,129,224,240,120,7,129,224,240, + 120,7,129,224,240,120,7,129,224,240,120,7,129,224,240,120, + 7,129,192,240,120,7,129,192,112,56,15,131,192,120,60,15, + 135,128,120,30,27,255,0,124,31,251,255,0,60,15,240,252, + 0,62,1,128,48,0,31,0,0,0,0,31,128,0,0,0, + 15,224,0,0,0,7,248,0,128,0,3,255,255,128,0,0, + 255,255,128,0,0,63,255,128,0,0,7,254,0,0,28,30, + 120,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,63,192,0,0,127,192,0,0,121,224,0, + 0,121,224,0,0,241,240,0,0,240,240,0,1,240,240,0, + 1,224,248,0,1,224,120,0,3,224,124,0,3,192,60,0, + 7,192,60,0,7,128,62,0,7,128,30,0,15,128,31,0, + 15,255,255,0,31,255,255,128,31,255,255,128,30,0,7,128, + 60,0,3,192,60,0,3,192,124,0,3,224,120,0,1,224, + 120,0,1,224,240,0,0,240,240,0,0,240,21,30,90,26, + 3,0,255,254,0,255,255,128,255,255,192,255,255,224,240,7, + 224,240,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,224,240,1,224,240,7,192,255,255,128,255,255,0,255, + 255,192,240,3,224,240,0,240,240,0,112,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,248,240,1,248,240,7,240, + 255,255,224,255,255,224,255,255,128,255,254,0,22,30,90,26, + 2,1,1,255,128,7,255,224,15,255,240,31,0,248,62,0, + 120,60,0,60,120,0,60,120,0,60,120,0,0,112,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,112,0, + 0,112,0,0,120,0,60,120,0,60,60,0,60,60,0,120, + 31,0,248,15,255,240,7,255,224,1,255,128,23,30,90,28, + 3,0,255,248,0,255,255,0,255,255,192,255,255,224,240,15, + 240,240,1,248,240,0,248,240,0,124,240,0,60,240,0,60, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 60,240,0,60,240,0,124,240,0,248,240,1,240,240,7,240, + 255,255,224,255,255,192,255,255,0,255,248,0,19,30,90,24, + 3,0,255,255,192,255,255,192,255,255,192,255,255,192,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,17,30,90,23, + 3,0,255,255,128,255,255,128,255,255,128,255,255,128,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,0,255,255,0,255, + 255,0,255,255,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,25,30,120,30, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,128,63,0,62,0,15,0,60,0,7,128,120,0, + 7,128,120,0,0,0,112,0,0,0,240,0,0,0,240,0, + 0,0,240,0,0,0,240,0,0,0,240,3,255,128,240,3, + 255,128,240,3,255,128,240,3,255,128,240,0,7,128,240,0, + 7,128,120,0,7,128,120,0,7,128,124,0,7,128,62,0, + 7,128,62,0,7,128,31,128,7,128,15,255,255,128,7,255, + 255,128,3,255,255,0,0,255,248,0,22,30,90,28,3,0, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,255,255,252,255,255,252,255,255,252, + 255,255,252,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,4,30,30,10,3,0, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,17,30, + 90,22,2,0,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,0,7,128,0, + 7,128,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,240,7,128,240,7,128,240,15,128,120, + 31,0,127,255,0,63,254,0,31,252,0,15,240,0,22,30, + 90,26,3,0,240,1,240,240,3,224,240,7,192,240,15,128, + 240,31,0,240,30,0,240,60,0,240,124,0,240,248,0,241, + 240,0,243,224,0,247,192,0,255,128,0,255,128,0,255,192, + 0,247,192,0,243,224,0,243,240,0,241,248,0,240,252,0, + 240,124,0,240,62,0,240,31,0,240,31,128,240,15,192,240, + 7,192,240,3,224,240,1,240,240,1,248,240,0,252,17,30, + 90,21,3,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,30,30, + 120,36,3,0,252,0,0,252,254,0,1,252,254,0,1,252, + 254,0,1,252,255,0,3,252,255,0,3,252,247,128,7,188, + 247,128,7,188,247,128,7,188,243,192,15,60,243,192,15,60, + 243,192,14,60,241,224,30,60,241,224,30,60,240,224,28,60, + 240,240,60,60,240,240,60,60,240,120,120,60,240,120,120,60, + 240,120,120,60,240,60,240,60,240,60,240,60,240,28,224,60, + 240,31,224,60,240,31,224,60,240,15,192,60,240,15,192,60, + 240,15,192,60,240,7,128,60,240,7,128,60,22,30,90,28, + 3,0,252,0,60,252,0,60,254,0,60,254,0,60,255,0, + 60,255,0,60,255,128,60,247,128,60,247,192,60,243,192,60, + 243,224,60,241,224,60,241,240,60,240,240,60,240,248,60,240, + 120,60,240,124,60,240,60,60,240,62,60,240,30,60,240,31, + 60,240,15,60,240,15,188,240,7,188,240,3,252,240,3,252, + 240,1,252,240,1,252,240,0,252,240,0,252,26,30,120,30, + 2,1,1,255,224,0,3,255,240,0,15,255,252,0,31,255, + 254,0,31,0,62,0,62,0,31,0,60,0,15,0,120,0, + 7,128,120,0,7,128,112,0,3,128,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,112,0, + 3,128,120,0,7,128,120,0,7,128,120,0,15,128,60,0, + 15,0,62,0,31,0,31,128,126,0,15,255,252,0,7,255, + 248,0,3,255,240,0,0,255,192,0,19,30,90,24,3,0, + 255,248,0,255,254,0,255,255,128,255,255,192,240,15,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,240,15,192,255,255,192,255,255,128, + 255,254,0,255,248,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,28,30,120,31,2,1, + 0,255,192,0,3,255,240,0,15,255,252,0,31,255,254,0, + 31,0,62,0,62,0,31,0,60,0,15,128,120,0,7,128, + 120,0,7,128,112,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,112,0,3,128, + 120,0,7,128,120,0,7,128,120,0,15,0,60,0,15,0, + 62,0,30,0,31,128,126,0,15,255,255,240,7,255,255,240, + 3,255,255,240,0,255,255,240,20,30,90,25,3,0,255,252, + 0,255,255,0,255,255,192,255,255,224,240,7,224,240,1,224, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 1,224,240,7,192,255,255,128,255,255,0,255,255,0,255,255, + 128,240,7,192,240,3,192,240,3,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,0,224,240,0,224,240,0,240,240, + 0,240,240,0,240,240,0,112,22,30,90,26,2,1,3,255, + 0,15,255,192,63,255,224,63,255,240,124,0,240,120,0,120, + 240,0,120,240,0,120,240,0,0,240,0,0,120,0,0,124, + 0,0,63,128,0,31,252,0,15,255,128,0,255,224,0,7, + 240,0,0,248,0,0,120,0,0,56,0,0,60,240,0,60, + 240,0,60,240,0,60,120,0,120,124,0,248,63,255,240,63, + 255,240,31,255,192,7,255,0,23,30,90,25,1,0,255,255, + 254,255,255,254,255,255,254,255,255,254,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,23,30,90,29,3,0,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 120,0,60,120,0,60,124,0,124,62,0,248,63,255,248,31, + 255,240,15,255,224,3,255,128,24,30,90,26,1,0,240,0, + 15,248,0,15,248,0,31,120,0,30,124,0,30,124,0,62, + 60,0,60,62,0,60,30,0,124,30,0,120,31,0,120,15, + 0,248,15,0,240,15,0,240,7,129,240,7,129,224,7,129, + 224,3,195,224,3,195,192,3,195,192,1,231,192,1,231,128, + 1,231,128,0,255,128,0,255,0,0,255,0,0,126,0,0, + 126,0,0,126,0,0,60,0,37,30,150,39,1,0,240,0, + 248,0,120,240,0,248,0,120,240,1,248,0,248,120,1,252, + 0,240,120,1,252,0,240,120,1,220,0,240,124,3,222,1, + 224,60,3,222,1,224,60,3,222,1,224,60,3,142,1,224, + 30,7,143,3,192,30,7,143,3,192,30,7,15,3,192,30, + 7,7,3,128,15,15,7,135,128,15,15,7,135,128,15,14, + 3,135,128,7,14,3,135,0,7,158,3,207,0,7,158,3, + 207,0,7,156,1,206,0,3,156,1,222,0,3,252,1,254, + 0,3,252,1,254,0,1,248,0,252,0,1,248,0,252,0, + 1,248,0,252,0,1,240,0,248,0,0,240,0,120,0,0, + 240,0,120,0,26,30,120,28,1,0,62,0,15,0,62,0, + 31,0,31,0,30,0,15,128,60,0,15,128,124,0,7,192, + 120,0,3,224,240,0,3,224,240,0,1,241,224,0,0,243, + 224,0,0,251,192,0,0,127,128,0,0,63,128,0,0,63, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,247, + 192,0,0,243,224,0,1,227,224,0,3,225,240,0,3,192, + 248,0,7,128,248,0,15,128,124,0,15,0,62,0,31,0, + 62,0,62,0,31,0,60,0,31,0,124,0,15,128,248,0, + 7,192,24,30,90,26,1,0,248,0,15,248,0,31,124,0, + 30,124,0,60,62,0,124,30,0,120,31,0,248,15,0,240, + 15,129,224,7,129,224,3,195,192,3,227,192,1,231,128,1, + 247,0,0,255,0,0,254,0,0,126,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,21,30,90,25,2,0,127,255,248,127,255,248,127,255, + 248,127,255,248,0,0,248,0,1,248,0,1,240,0,3,224, + 0,7,192,0,15,128,0,31,128,0,31,0,0,62,0,0, + 124,0,0,252,0,0,248,0,1,240,0,3,224,0,7,192, + 0,15,192,0,15,128,0,31,0,0,62,0,0,126,0,0, + 252,0,0,248,0,0,255,255,248,255,255,248,255,255,248,255, + 255,248,8,38,38,16,4,248,255,255,255,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,255,255,255,12,33, + 66,16,2,254,224,0,224,0,224,0,96,0,112,0,112,0, + 48,0,56,0,56,0,56,0,28,0,28,0,28,0,12,0, + 14,0,14,0,6,0,7,0,7,0,7,0,3,0,3,128, + 3,128,1,128,1,192,1,192,1,192,0,192,0,224,0,224, + 0,96,0,112,0,112,8,38,38,16,4,248,255,255,255,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255, + 255,255,20,25,75,40,10,0,0,96,0,0,240,0,0,240, + 0,0,240,0,1,248,0,1,152,0,3,156,0,3,12,0, + 3,12,0,7,14,0,6,6,0,6,6,0,14,7,0,12, + 3,0,28,3,128,28,1,128,24,1,128,56,1,192,48,0, + 192,48,0,192,112,0,224,96,0,96,224,0,112,224,0,112, + 192,0,48,20,3,9,20,0,251,255,255,240,255,255,240,255, + 255,240,8,7,7,9,255,25,240,120,56,28,14,14,7,18, + 20,60,23,2,1,15,254,0,63,255,0,62,15,128,120,7, + 128,120,3,192,0,3,192,0,3,192,3,255,192,15,255,192, + 63,255,192,126,3,192,120,3,192,240,3,192,240,3,192,240, + 7,192,240,7,192,248,15,192,124,63,192,63,251,192,31,227, + 192,19,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,252,0,247,255,0,255,15,128,252,7, + 128,248,3,192,248,3,192,240,1,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,192,240,3,192,240, + 3,192,248,7,128,252,7,128,254,31,0,247,254,0,243,252, + 0,17,20,60,21,2,1,15,252,0,31,254,0,62,31,0, + 120,15,128,120,7,128,240,7,128,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,7, + 128,112,7,128,120,7,128,120,15,0,62,31,0,31,254,0, + 15,252,0,19,30,90,24,2,0,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,15,249,224,31,253,224,62,31,224, + 60,7,224,120,7,224,120,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,120,3,224,120,3,224,60,7,224,31,15,224,15,255,224, + 7,249,224,18,20,60,22,2,1,7,252,0,31,254,0,62, + 31,0,60,7,128,120,3,128,112,3,192,240,3,192,240,3, + 192,255,255,192,255,255,192,255,255,192,240,0,0,240,0,0, + 240,0,0,112,3,192,120,7,128,56,7,128,62,31,0,31, + 254,0,7,252,0,13,30,60,14,1,0,1,248,3,248,7, + 248,15,128,15,0,15,0,15,0,15,0,15,0,15,0,255, + 240,255,240,255,240,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,19,28,84,24,2,249,15,249,224, + 31,253,224,62,31,224,120,7,224,120,3,224,112,3,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,120,3,224,124,7,224,62,15,224, + 31,253,224,15,249,224,0,129,224,0,1,224,0,3,192,120, + 3,192,120,3,192,60,7,128,63,255,0,15,254,0,3,248, + 0,18,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,254,0,247,255,0,254,31,128,248,7, + 128,240,7,128,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,4,30,30,8,2,0,240,240,240,240,0,0,0,0,0, + 0,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,7,38,38,11,2,248,30,30,30,30,0, + 0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,254,252, + 248,16,30,60,20,3,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,30,240,62,240, + 124,240,248,241,240,243,224,247,192,255,128,255,0,255,0,247, + 128,247,192,243,224,241,240,240,240,240,248,240,124,240,62,240, + 30,240,31,4,30,30,10,3,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,30,20,80,36,3,1,243,252,31, + 224,247,254,63,240,254,31,112,248,252,15,224,120,248,7,192, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,18,20,60, + 24,3,1,243,254,0,247,255,0,254,31,128,248,7,128,248, + 7,128,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,20, + 20,60,24,2,1,7,252,0,15,255,0,63,15,128,60,3, + 192,120,3,224,120,1,224,240,1,224,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,1,224,120, + 1,224,120,3,224,60,3,192,63,15,128,15,255,0,7,254, + 0,19,28,84,24,3,249,243,254,0,247,255,0,254,15,128, + 252,7,192,248,3,192,248,3,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,248,3,192,248,3,192,252,7,192,254,15,128,247,255,0, + 243,254,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,19,28,84,24,2, + 249,15,249,224,31,253,224,62,15,224,124,7,224,120,3,224, + 120,3,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,3,224,120,3, + 224,124,7,224,62,15,224,31,253,224,15,249,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,11,20,40,15,3,0,243,224,247,224,255, + 224,254,0,248,0,248,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,16,20,40,20,2,1,31,248,63,254,124,62,248, + 31,240,15,240,0,240,0,124,0,127,192,63,248,15,254,0, + 126,0,31,0,15,240,15,240,15,240,31,124,62,127,252,31, + 248,12,25,50,14,1,1,14,0,30,0,30,0,30,0,30, + 0,255,240,255,240,255,240,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,15,0,15,240,7,240,18,20,60,24,3,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,20,60,21,1, + 0,240,0,240,240,1,224,120,1,224,120,1,192,124,3,192, + 60,3,192,60,7,128,30,7,128,30,7,0,15,15,0,15, + 14,0,15,14,0,7,158,0,7,156,0,3,252,0,3,248, + 0,3,248,0,1,248,0,1,240,0,0,240,0,31,20,80, + 33,1,0,240,7,192,30,240,15,192,28,240,15,192,60,120, + 15,224,60,120,30,224,56,120,30,224,120,56,28,240,120,60, + 28,112,112,60,60,112,112,28,56,120,240,30,56,56,224,30, + 120,56,224,14,112,57,224,15,112,29,192,15,240,29,192,7, + 224,31,192,7,224,31,128,7,224,15,128,3,192,15,128,3, + 192,15,0,20,20,60,22,1,0,120,1,224,60,3,192,62, + 3,192,31,7,128,15,15,0,7,158,0,7,222,0,3,252, + 0,1,248,0,0,240,0,1,248,0,3,252,0,3,188,0, + 7,158,0,15,31,0,30,15,128,62,7,128,60,3,192,120, + 3,224,240,1,240,20,28,84,21,1,248,240,0,240,240,1, + 224,120,1,224,120,1,192,60,3,192,60,3,192,62,7,128, + 30,7,128,30,7,128,15,15,0,15,15,0,15,158,0,7, + 158,0,7,158,0,3,252,0,3,252,0,1,248,0,1,248, + 0,1,248,0,0,240,0,0,240,0,0,224,0,1,224,0, + 1,224,0,1,192,0,3,192,0,3,128,0,7,128,0,15, + 20,40,19,2,0,127,254,127,254,127,254,0,62,0,124,0, + 120,0,240,1,240,3,224,3,192,7,128,15,128,31,0,30, + 0,60,0,124,0,248,0,255,254,255,254,255,254,13,41,82, + 19,3,246,0,24,1,248,3,248,3,224,7,128,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,7,0,7, + 0,7,0,15,0,31,0,62,0,252,0,248,0,252,0,126, + 0,30,0,15,0,15,0,7,0,7,0,7,0,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,3,192,3, + 248,1,248,0,120,2,43,43,14,6,245,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,41,82,19,3,246,192,0,252,0, + 254,0,30,0,15,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,128,7,128,7,128,7,128,7,128,7,128,3,192, + 3,224,1,248,0,248,1,248,1,240,3,192,3,192,7,128, + 7,128,7,128,7,128,7,128,7,128,7,0,7,0,7,0, + 7,0,7,0,15,0,31,0,254,0,252,0,240,0,21,5, + 15,21,0,8,2,0,56,31,240,120,63,255,240,120,127,224, + 240,15,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,12,0,0,4,28,28,14,5,248, + 240,240,240,240,0,0,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,17,31,93,23, + 3,250,0,12,0,0,12,0,0,24,0,0,24,0,0,24, + 0,15,248,0,63,254,0,62,63,0,120,119,0,120,103,0, + 240,103,128,240,96,0,240,192,0,240,192,0,240,192,0,241, + 128,0,241,128,0,241,128,0,243,7,128,243,7,128,123,7, + 0,126,15,0,62,30,0,31,254,0,15,248,0,12,0,0, + 12,0,0,28,0,0,24,0,0,24,0,0,8,0,0,20, + 31,93,23,2,0,0,16,0,1,255,0,7,255,192,15,135, + 224,15,1,224,30,0,240,30,0,240,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,248,0,255,248,0,255, + 248,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,255,224,255,255,224,255, + 255,224,21,22,66,25,2,7,192,0,24,224,0,56,96,48, + 48,51,254,96,63,255,224,31,7,192,28,1,192,24,0,192, + 56,0,224,48,0,96,48,0,96,48,0,96,48,0,96,56, + 0,224,24,0,192,28,1,192,14,3,128,31,255,192,59,254, + 224,112,248,112,224,0,56,192,0,24,21,30,90,23,1,0, + 240,0,120,248,0,120,120,0,240,124,0,240,60,1,240,62, + 1,224,30,1,224,30,3,192,15,3,192,15,7,128,255,135, + 248,255,143,248,255,207,248,3,207,0,1,254,0,1,252,0, + 255,255,248,255,255,248,255,255,248,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,2,38,38,14,6,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 0,0,0,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,15,37,74,19,2,250,15,248,31,248, + 62,24,60,0,120,0,120,0,120,0,120,0,60,0,63,0, + 31,128,15,224,15,240,63,248,124,124,120,62,240,30,240,30, + 240,30,240,60,248,120,127,240,63,224,31,224,7,240,1,248, + 0,124,0,60,0,30,0,30,0,30,0,28,0,60,96,248, + 127,240,127,224,3,0,12,4,8,12,0,26,240,240,240,240, + 240,240,240,240,30,30,120,34,2,1,0,63,240,0,0,255, + 252,0,3,240,63,0,7,128,7,128,15,0,3,192,28,3, + 0,224,56,63,240,112,56,127,248,112,112,248,124,56,97,240, + 30,24,97,224,30,24,225,224,30,28,195,192,0,12,195,192, + 0,12,195,192,0,12,195,192,0,12,195,192,0,12,195,192, + 0,12,193,192,30,12,97,224,30,24,97,224,30,24,96,240, + 60,56,48,255,252,48,56,63,248,112,28,15,224,224,14,0, + 1,192,7,0,3,128,3,192,15,0,1,255,252,0,0,63, + 240,0,14,19,38,16,1,11,15,192,63,240,56,120,112,56, + 0,56,0,56,15,248,63,248,120,56,224,56,224,56,224,120, + 240,248,127,184,31,56,0,0,0,0,255,252,255,252,16,16, + 32,22,3,2,7,7,15,14,14,14,28,28,60,60,56,120, + 120,112,240,240,240,240,120,112,56,120,60,60,28,28,14,14, + 15,14,7,7,21,10,30,25,2,8,255,255,248,255,255,248, + 255,255,248,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,255,30,30,120,34,2,1,0, + 63,240,0,0,255,252,0,3,240,63,0,7,128,7,128,14, + 0,1,192,28,127,240,224,56,127,248,112,48,127,252,48,112, + 112,30,56,96,112,14,24,96,112,14,24,192,112,14,12,192, + 112,28,12,192,127,248,12,192,127,240,12,192,127,248,12,192, + 112,28,12,192,112,28,12,192,112,28,12,96,112,12,24,96, + 112,12,24,112,112,14,56,48,112,14,48,56,112,14,112,28, + 0,0,224,14,0,1,192,7,128,7,128,3,240,63,0,1, + 255,252,0,0,63,240,0,12,3,6,12,0,26,255,240,255, + 240,255,240,9,9,18,13,2,21,62,0,127,0,227,128,193, + 128,193,128,193,128,227,128,127,0,62,0,24,24,72,40,8, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,255,255,255,255,255,255,255,255,255,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,255,255,255,255,12,16,32,14,1,15,31, + 192,127,224,120,240,112,112,224,112,0,112,0,224,1,224,3, + 192,7,128,14,0,60,0,120,0,255,240,255,240,255,240,12, + 16,32,14,1,15,63,192,127,224,112,240,96,112,0,112,0, + 240,7,224,7,128,7,224,0,240,0,112,224,112,224,112,127, + 224,127,192,31,128,8,7,7,9,2,25,15,30,28,56,56, + 112,224,255,18,36,108,22,2,250,3,255,192,15,255,192,63, + 195,0,127,195,0,127,195,0,255,195,0,255,195,0,255,195, + 0,255,195,0,255,195,0,255,195,0,127,195,0,127,195,0, + 63,195,0,15,195,0,0,195,0,0,195,0,0,195,0,0, + 195,0,0,195,0,0,195,0,0,195,0,0,195,0,0,195, + 0,0,195,0,0,195,0,0,195,0,0,195,0,0,195,0, + 0,195,0,0,195,0,0,195,0,0,195,0,0,195,0,0, + 195,0,0,195,0,4,5,5,10,3,11,240,240,240,240,240, + 10,10,20,10,2,246,48,0,48,0,62,0,63,128,7,128, + 1,192,1,192,3,192,255,128,254,0,7,16,16,12,2,14, + 30,62,254,238,142,14,14,14,14,14,14,14,14,14,14,14, + 14,19,38,16,1,10,15,192,63,224,120,112,112,56,224,56, + 224,28,224,28,224,28,224,28,224,28,224,56,112,56,56,112, + 31,224,7,128,0,0,0,0,255,252,255,252,16,16,32,22, + 3,2,224,224,112,112,120,120,56,56,28,60,30,30,15,14, + 15,15,15,15,15,14,30,30,28,60,56,56,120,120,112,112, + 224,224,28,30,120,32,2,0,30,0,12,0,62,0,28,0, + 254,0,56,0,238,0,56,0,142,0,112,0,14,0,112,0, + 14,0,224,0,14,0,192,0,14,1,192,0,14,3,128,0, + 14,3,128,0,14,7,0,0,14,7,0,0,14,14,0,0, + 14,12,7,128,14,28,7,128,0,56,15,128,0,56,31,128, + 0,112,27,128,0,112,59,128,0,224,115,128,0,224,99,128, + 1,192,195,128,1,129,195,128,3,129,255,240,7,1,255,240, + 7,0,3,128,14,0,3,128,14,0,3,128,28,0,3,128, + 28,30,120,32,2,0,30,0,28,0,62,0,28,0,254,0, + 56,0,238,0,56,0,142,0,112,0,14,0,112,0,14,0, + 224,0,14,0,224,0,14,1,192,0,14,3,128,0,14,3, + 128,0,14,7,0,0,14,7,0,0,14,14,0,0,14,14, + 31,128,14,28,63,224,0,56,121,224,0,56,112,112,0,112, + 240,112,0,112,0,112,0,224,0,240,0,224,0,224,1,192, + 3,192,1,128,7,128,3,128,15,0,7,0,60,0,7,0, + 120,0,14,0,255,240,14,0,255,240,28,0,255,240,30,31, + 124,32,1,0,0,0,1,192,63,192,3,128,127,224,3,128, + 112,240,7,0,96,112,6,0,0,112,14,0,0,240,28,0, + 7,224,28,0,7,128,56,0,7,224,56,0,0,240,112,0, + 0,112,112,0,224,112,224,0,224,113,192,0,127,225,192,0, + 127,195,129,224,31,131,129,224,0,7,3,224,0,7,7,224, + 0,14,6,224,0,12,12,224,0,28,28,224,0,56,24,224, + 0,56,48,224,0,112,112,224,0,112,127,252,0,224,127,252, + 0,224,0,224,1,192,0,224,1,128,0,224,3,128,0,224, + 17,28,84,21,2,248,0,240,0,0,240,0,0,240,0,0, + 240,0,0,0,0,0,0,0,0,0,0,0,240,0,0,240, + 0,0,240,0,0,240,0,1,240,0,1,224,0,7,192,0, + 15,128,0,31,0,0,60,0,0,120,0,0,240,0,0,240, + 0,0,240,0,0,240,3,0,240,3,128,124,15,128,127,255, + 0,63,254,0,31,252,0,3,240,0,28,41,164,30,1,0, + 0,240,0,0,0,240,0,0,0,120,0,0,0,56,0,0, + 0,28,0,0,0,14,0,0,0,14,0,0,0,7,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0, + 0,31,128,0,0,31,128,0,0,63,192,0,0,63,192,0, + 0,127,192,0,0,121,224,0,0,121,224,0,0,241,240,0, + 0,240,240,0,1,240,240,0,1,224,248,0,1,224,120,0, + 3,224,124,0,3,192,60,0,7,192,60,0,7,128,62,0, + 7,128,30,0,15,128,31,0,15,255,255,0,31,255,255,128, + 31,255,255,128,30,0,7,128,60,0,3,192,60,0,3,192, + 124,0,3,224,120,0,1,224,120,0,1,224,240,0,0,240, + 240,0,0,240,28,41,164,30,1,0,0,0,240,0,0,0, + 240,0,0,1,224,0,0,1,192,0,0,3,128,0,0,7, + 0,0,0,7,0,0,0,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,15,0,0,0,31,128,0,0,31, + 128,0,0,63,192,0,0,63,192,0,0,127,192,0,0,121, + 224,0,0,121,224,0,0,241,240,0,0,240,240,0,1,240, + 240,0,1,224,248,0,1,224,120,0,3,224,124,0,3,192, + 60,0,7,192,60,0,7,128,62,0,7,128,30,0,15,128, + 31,0,15,255,255,0,31,255,255,128,31,255,255,128,30,0, + 7,128,60,0,3,192,60,0,3,192,124,0,3,224,120,0, + 1,224,120,0,1,224,240,0,0,240,240,0,0,240,28,41, + 164,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,57,192,0,0,112,224,0,0,96,96,0, + 0,224,112,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,15,0,0,0,31,128,0,0,31,128,0,0,63,192,0, + 0,63,192,0,0,127,192,0,0,121,224,0,0,121,224,0, + 0,241,240,0,0,240,240,0,1,240,240,0,1,224,248,0, + 1,224,120,0,3,224,124,0,3,192,60,0,7,192,60,0, + 7,128,62,0,7,128,30,0,15,128,31,0,15,255,255,0, + 31,255,255,128,31,255,255,128,30,0,7,128,60,0,3,192, + 60,0,3,192,124,0,3,224,120,0,1,224,120,0,1,224, + 240,0,0,240,240,0,0,240,28,39,156,30,1,0,0,16, + 48,0,0,126,112,0,0,127,224,0,0,231,224,0,0,192, + 128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,15,0,0,0,31,128,0,0,31,128,0,0,63, + 192,0,0,63,192,0,0,127,192,0,0,121,224,0,0,121, + 224,0,0,241,240,0,0,240,240,0,1,240,240,0,1,224, + 248,0,1,224,120,0,3,224,124,0,3,192,60,0,7,192, + 60,0,7,128,62,0,7,128,30,0,15,128,31,0,15,255, + 255,0,31,255,255,128,31,255,255,128,30,0,7,128,60,0, + 3,192,60,0,3,192,124,0,3,224,120,0,1,224,120,0, + 1,224,240,0,0,240,240,0,0,240,29,39,156,30,1,0, + 0,120,120,0,0,120,120,0,0,120,120,0,0,120,120,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,128,0,0,15,128,0,0,31,128,0, + 0,31,192,0,0,63,192,0,0,61,224,0,0,125,224,0, + 0,121,240,0,0,120,240,0,0,240,240,0,0,240,248,0, + 1,240,120,0,1,224,124,0,1,224,60,0,3,224,60,0, + 3,192,62,0,7,192,30,0,7,128,31,0,7,128,15,0, + 15,255,255,128,15,255,255,128,31,255,255,128,30,0,3,192, + 30,0,3,192,60,0,3,224,60,0,1,224,120,0,1,224, + 120,0,0,240,120,0,0,240,240,0,0,248,28,43,172,30, + 1,0,0,14,0,0,0,63,0,0,0,49,128,0,0,96, + 192,0,0,96,192,0,0,96,192,0,0,96,192,0,0,49, + 128,0,0,63,128,0,0,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,31, + 128,0,0,63,128,0,0,63,192,0,0,123,192,0,0,123, + 192,0,0,121,224,0,0,241,224,0,0,241,240,0,1,224, + 240,0,1,224,248,0,1,224,120,0,3,192,120,0,3,192, + 124,0,7,192,60,0,7,128,62,0,15,128,30,0,15,0, + 30,0,15,255,255,0,31,255,255,0,31,255,255,128,60,0, + 7,128,60,0,7,192,60,0,3,192,120,0,3,192,120,0, + 1,224,240,0,1,224,240,0,1,240,240,0,0,240,37,30, + 150,39,0,0,0,1,255,255,240,0,1,255,255,240,0,3, + 255,255,240,0,3,255,255,240,0,7,252,0,0,0,7,188, + 0,0,0,15,188,0,0,0,15,60,0,0,0,31,60,0, + 0,0,30,60,0,0,0,62,60,0,0,0,60,60,0,0, + 0,124,60,0,0,0,120,63,255,240,0,248,63,255,240,0, + 240,63,255,240,1,240,63,255,240,1,224,60,0,0,3,224, + 60,0,0,3,255,252,0,0,7,255,252,0,0,7,255,252, + 0,0,15,0,60,0,0,31,0,60,0,0,30,0,60,0, + 0,62,0,60,0,0,60,0,63,255,248,124,0,63,255,248, + 120,0,63,255,248,248,0,63,255,248,22,40,120,26,2,247, + 1,255,128,7,255,224,15,255,240,31,0,248,62,0,120,60, + 0,60,120,0,60,120,0,60,120,0,0,112,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,112, + 0,0,120,0,60,120,0,60,60,0,60,60,0,120,31,0, + 248,15,255,240,7,255,224,3,255,128,0,48,0,0,48,0, + 0,62,0,0,63,128,0,63,192,0,1,192,0,1,192,0, + 1,192,0,255,128,0,254,0,19,41,123,24,3,0,30,0, + 0,15,0,0,7,0,0,3,128,0,3,128,0,1,192,0, + 0,224,0,0,96,0,0,0,0,0,0,0,0,0,0,255, + 255,192,255,255,192,255,255,192,255,255,192,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,255,255,192,255,255,192,255,255,192,255, + 255,192,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,255,255,224, + 255,255,224,255,255,224,255,255,224,19,41,123,24,3,0,0, + 30,0,0,60,0,0,56,0,0,120,0,0,240,0,0,224, + 0,1,192,0,1,128,0,0,0,0,0,0,0,0,0,0, + 255,255,192,255,255,192,255,255,192,255,255,192,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 255,255,192,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,19,41,123,24,3,0, + 1,224,0,3,240,0,7,240,0,7,120,0,15,56,0,14, + 28,0,28,28,0,24,14,0,0,0,0,0,0,0,0,0, + 0,255,255,192,255,255,192,255,255,192,255,255,192,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,255,255,192,255,255,192,255,255, + 192,255,255,192,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,19,39,117,24,3, + 0,30,30,0,30,30,0,30,30,0,30,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255, + 255,192,255,255,192,255,255,192,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,255,255,192,255,255,192,255,255,192,255,255,192,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,255,255,224,255,255,224, + 255,255,224,255,255,224,8,41,41,10,255,0,240,120,56,28, + 30,14,7,3,0,0,0,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,7,41,41,10,3,0,30,30,60,56,112, + 112,224,192,0,0,0,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,12,41,82,10,255,0,15,0,31,0,31,128, + 63,128,57,192,112,224,96,224,224,112,0,0,0,0,0,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,12,39,78,11, + 0,0,240,240,240,240,240,240,240,240,0,0,0,0,0,0, + 0,0,0,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 26,30,120,28,0,0,31,255,0,0,31,255,224,0,31,255, + 248,0,31,255,252,0,30,0,254,0,30,0,63,0,30,0, + 31,0,30,0,15,128,30,0,7,128,30,0,7,128,30,0, + 3,192,30,0,3,192,30,0,3,192,30,0,3,192,255,252, + 3,192,255,252,3,192,255,252,3,192,30,0,3,192,30,0, + 3,192,30,0,3,192,30,0,7,128,30,0,7,128,30,0, + 15,128,30,0,31,0,30,0,63,0,30,0,254,0,31,255, + 252,0,31,255,248,0,31,255,224,0,31,255,0,0,22,39, + 117,28,3,0,0,131,0,3,243,0,7,255,0,7,62,0, + 6,8,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 0,60,252,0,60,254,0,60,254,0,60,255,0,60,255,0, + 60,255,128,60,247,128,60,247,192,60,243,192,60,243,224,60, + 241,224,60,241,240,60,240,240,60,240,248,60,240,120,60,240, + 124,60,240,60,60,240,62,60,240,30,60,240,31,60,240,15, + 60,240,15,188,240,7,188,240,3,252,240,3,252,240,1,252, + 240,1,252,240,0,252,240,0,252,26,41,164,30,2,0,1, + 224,0,0,0,240,0,0,0,120,0,0,0,56,0,0,0, + 28,0,0,0,28,0,0,0,14,0,0,0,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,255,224,0,3, + 255,240,0,15,255,252,0,31,255,254,0,31,0,62,0,62, + 0,31,0,60,0,15,0,120,0,7,128,120,0,7,128,112, + 0,3,128,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,112,0,3,128,120,0,7,128,120, + 0,7,128,120,0,15,128,60,0,15,0,62,0,31,0,31, + 128,126,0,15,255,252,0,7,255,248,0,3,255,240,0,0, + 255,192,0,26,41,164,30,2,0,0,1,224,0,0,3,192, + 0,0,7,128,0,0,7,0,0,0,15,0,0,0,14,0, + 0,0,28,0,0,0,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,255,224,0,3,255,240,0,15,255,252, + 0,31,255,254,0,31,0,62,0,62,0,31,0,60,0,15, + 0,120,0,7,128,120,0,7,128,112,0,3,128,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,112,0,3,128,120,0,7,128,120,0,7,128,120,0,15, + 128,60,0,15,0,62,0,31,0,31,128,126,0,15,255,252, + 0,7,255,248,0,3,255,240,0,0,255,192,0,26,41,164, + 30,2,0,0,30,0,0,0,63,0,0,0,63,0,0,0, + 127,128,0,0,115,128,0,0,225,192,0,0,192,224,0,1, + 192,96,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 255,224,0,3,255,240,0,15,255,252,0,31,255,254,0,31, + 0,62,0,62,0,31,0,60,0,15,0,120,0,7,128,120, + 0,7,128,112,0,3,128,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,112,0,3,128,120, + 0,7,128,120,0,7,128,120,0,15,128,60,0,15,0,62, + 0,31,0,31,128,126,0,15,255,252,0,7,255,248,0,3, + 255,240,0,0,255,192,0,26,39,156,30,2,0,0,32,96, + 0,0,252,224,0,0,255,224,0,1,207,192,0,1,129,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,255,224,0,3,255,240,0,15,255,252,0,31,255,254, + 0,31,0,62,0,62,0,31,0,60,0,15,0,120,0,7, + 128,120,0,7,128,112,0,3,128,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,112,0,3, + 128,120,0,7,128,120,0,7,128,120,0,15,128,60,0,15, + 0,62,0,31,0,31,128,126,0,15,255,252,0,7,255,248, + 0,3,255,240,0,0,255,192,0,26,39,156,30,2,0,0, + 240,240,0,0,240,240,0,0,240,240,0,0,240,240,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,1,255,224,0,3,255,240,0,15,255,252,0,31, + 255,254,0,31,0,62,0,62,0,31,0,60,0,15,0,120, + 0,7,128,120,0,7,128,112,0,3,128,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,112, + 0,3,128,120,0,7,128,120,0,7,128,120,0,15,128,60, + 0,15,0,62,0,31,0,31,128,126,0,15,255,252,0,7, + 255,248,0,3,255,240,0,0,255,192,0,22,22,66,40,9, + 1,96,0,24,240,0,60,120,0,120,56,0,112,28,0,224, + 14,1,192,7,3,128,3,135,0,1,206,0,0,252,0,0, + 120,0,0,120,0,0,252,0,1,206,0,3,135,0,7,3, + 128,14,1,192,28,0,224,56,0,112,112,0,56,96,0,24, + 64,0,8,26,38,152,30,2,252,0,0,1,0,0,0,3, + 128,0,0,3,192,0,0,7,128,0,255,199,128,3,255,255, + 0,15,255,255,0,31,255,254,0,31,0,62,0,62,0,127, + 0,124,0,127,0,120,0,255,128,120,1,247,128,240,1,227, + 128,240,3,195,192,240,7,195,192,240,7,131,192,240,15,3, + 192,240,31,3,192,240,30,3,192,240,60,3,192,240,124,3, + 192,240,248,3,192,112,240,3,192,121,240,7,128,123,224,7, + 128,127,192,15,128,63,192,15,0,63,128,31,0,31,128,126, + 0,31,255,252,0,31,255,248,0,63,255,240,0,124,255,192, + 0,120,0,0,0,240,0,0,0,112,0,0,0,32,0,0, + 0,23,41,123,29,3,0,3,192,0,1,192,0,1,224,0, + 0,240,0,0,112,0,0,56,0,0,24,0,0,28,0,0, + 0,0,0,0,0,0,0,0,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,120,0,60,120,0,60, + 124,0,124,62,0,248,63,255,248,31,255,240,15,255,224,3, + 255,128,23,41,123,29,3,0,0,7,128,0,7,0,0,15, + 0,0,30,0,0,28,0,0,56,0,0,48,0,0,112,0, + 0,0,0,0,0,0,0,0,0,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,120,0,60,120,0, + 60,124,0,124,62,0,248,63,255,248,31,255,240,15,255,224, + 3,255,128,23,41,123,29,3,0,0,124,0,0,124,0,0, + 254,0,0,238,0,1,199,0,1,199,0,3,131,128,7,1, + 128,0,0,0,0,0,0,0,0,0,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,120,0,60,120, + 0,60,124,0,124,62,0,248,63,255,248,31,255,240,15,255, + 224,3,255,128,23,38,114,29,3,0,3,195,192,3,195,192, + 3,195,192,3,195,192,0,0,0,0,0,0,0,0,0,0, + 0,0,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,120,0,60,120,0,60,124,0,124,62,0,248, + 63,255,248,31,255,240,15,255,224,3,255,128,24,41,123,26, + 1,0,0,3,192,0,7,128,0,7,0,0,15,0,0,14, + 0,0,28,0,0,24,0,0,48,0,0,0,0,0,0,0, + 0,0,0,248,0,15,248,0,31,124,0,30,124,0,60,62, + 0,124,30,0,120,31,0,248,15,0,240,15,129,224,7,129, + 224,3,195,192,3,227,192,1,231,128,1,247,0,0,255,0, + 0,254,0,0,126,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,19,30,90, + 24,3,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,255,248,0,255,255,0,255,255,128,255,255, + 192,240,15,192,240,3,224,240,1,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,3,224,240,15,192,255,255,192,255, + 255,128,255,255,0,255,248,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,20,30,90, + 22,2,0,3,248,0,15,254,0,63,255,0,124,15,0,248, + 7,128,240,7,128,240,7,128,240,7,128,240,15,0,240,31, + 0,240,62,0,240,124,0,240,248,0,240,240,0,240,240,0, + 240,248,0,240,126,0,240,63,0,240,31,192,240,15,224,240, + 3,224,240,1,240,240,0,240,240,0,240,243,192,240,243,192, + 240,241,224,240,241,241,224,240,255,224,240,63,128,18,31,93, + 23,2,0,7,128,0,7,128,0,3,192,0,1,192,0,0, + 224,0,0,112,0,0,48,0,0,0,0,0,0,0,0,0, + 0,0,0,0,15,254,0,63,255,0,62,15,128,120,7,128, + 120,3,192,0,3,192,0,3,192,3,255,192,15,255,192,63, + 255,192,126,3,192,120,3,192,240,3,192,240,3,192,240,7, + 192,240,7,192,248,15,192,124,63,192,63,251,192,31,227,192, + 18,32,96,23,2,0,0,60,0,0,60,0,0,120,0,0, + 240,0,0,224,0,1,192,0,1,128,0,3,128,0,0,0, + 0,0,0,0,0,0,0,0,0,0,15,254,0,63,255,0, + 62,15,128,120,7,128,120,3,192,0,3,192,0,3,192,3, + 255,192,15,255,192,63,255,192,126,3,192,120,3,192,240,3, + 192,240,3,192,240,7,192,240,7,192,248,15,192,124,63,192, + 63,251,192,31,227,192,18,32,96,23,2,0,1,224,0,3, + 240,0,3,240,0,7,184,0,7,60,0,14,28,0,12,14, + 0,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,227,192,18,30,90,23, + 2,0,7,134,0,15,206,0,15,254,0,28,124,0,24,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,243,192,18,30,90,23, + 2,0,30,30,0,30,30,0,30,30,0,30,30,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,227,192,18,34,102,23, + 2,0,1,224,0,3,240,0,6,24,0,12,12,0,12,12, + 0,12,12,0,12,12,0,6,24,0,3,240,0,1,224,0, + 0,0,0,0,0,0,0,0,0,0,0,0,15,254,0,63, + 255,0,62,15,128,120,7,128,120,3,192,0,3,192,0,3, + 192,3,255,192,15,255,192,63,255,192,126,3,192,120,3,192, + 240,3,192,240,3,192,240,7,192,240,7,192,248,15,192,124, + 63,192,63,251,192,31,227,192,32,20,80,36,2,1,15,248, + 31,240,63,254,63,248,124,30,120,60,120,7,112,30,120,7, + 224,14,0,3,224,15,0,3,192,15,0,127,255,255,31,255, + 255,255,63,255,255,255,126,3,192,0,120,3,192,0,240,3, + 192,0,240,3,192,15,240,7,224,14,240,7,224,30,248,14, + 112,30,126,62,124,124,63,252,63,248,31,240,15,240,17,30, + 90,21,2,247,15,252,0,31,254,0,62,31,0,120,15,128, + 120,7,128,240,7,128,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,7,128,112,7, + 128,120,7,128,120,15,0,62,31,0,31,254,0,15,252,0, + 1,128,0,1,128,0,1,240,0,1,252,0,1,254,0,0, + 14,0,0,14,0,0,14,0,7,252,0,7,240,0,18,32, + 96,22,2,0,30,0,0,15,0,0,7,0,0,3,128,0, + 3,192,0,1,192,0,0,224,0,0,96,0,0,0,0,0, + 0,0,0,0,0,0,0,0,7,252,0,31,254,0,62,31, + 0,60,7,128,120,3,128,112,3,192,240,3,192,240,3,192, + 255,255,192,255,255,192,255,255,192,240,0,0,240,0,0,240, + 0,0,112,3,192,120,7,128,56,7,128,62,31,0,31,254, + 0,7,252,0,18,32,96,22,2,0,0,30,0,0,60,0, + 0,120,0,0,112,0,0,224,0,0,224,0,1,192,0,1, + 128,0,0,0,0,0,0,0,0,0,0,0,0,0,7,252, + 0,31,254,0,62,31,0,60,7,128,120,3,128,112,3,192, + 240,3,192,240,3,192,255,255,192,255,255,192,255,255,192,240, + 0,0,240,0,0,240,0,0,112,3,192,120,7,128,56,7, + 128,62,31,0,31,254,0,7,252,0,18,32,96,22,2,0, + 1,224,0,3,240,0,3,240,0,7,248,0,7,56,0,14, + 28,0,12,12,0,28,14,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,31,254,0,62,31,0,60,7,128, + 120,3,128,112,3,192,240,3,192,240,3,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,112,3, + 192,120,7,128,56,7,128,62,31,0,31,254,0,7,252,0, + 18,30,90,22,2,0,30,30,0,30,30,0,30,30,0,30, + 30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,31,254,0,62,15,0,60,7,128, + 120,3,128,112,3,192,240,3,192,240,3,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,112,3, + 192,120,3,128,60,7,128,62,15,0,31,254,0,7,252,0, + 8,32,32,10,255,0,240,120,56,28,30,14,7,3,0,0, + 0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,9,32,64,10,2,0,15,128,15,0, + 30,0,28,0,56,0,56,0,112,0,224,0,0,0,0,0, + 0,0,0,0,120,0,120,0,120,0,120,0,120,0,120,0, + 120,0,120,0,120,0,120,0,120,0,120,0,120,0,120,0, + 120,0,120,0,120,0,120,0,120,0,120,0,12,32,64,10, + 255,0,15,0,31,128,31,128,59,192,57,192,112,224,224,96, + 192,112,0,0,0,0,0,0,0,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,12,30,60,10,255,0,240,240,240,240,240,240,240,240, + 0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,20,30,90,24,2,0,16,1,0,60,7,0, + 30,31,0,7,252,0,3,240,0,7,240,0,62,120,0,120, + 60,0,96,30,0,0,15,0,7,255,128,31,255,192,63,15, + 192,60,3,192,120,1,224,120,1,224,240,1,224,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,240, + 1,224,120,1,224,120,3,224,60,3,192,63,15,128,31,255, + 0,7,254,0,18,30,90,24,3,0,7,14,0,15,204,0, + 31,252,0,28,248,0,24,16,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,243,254,0,247,255,0,254,31, + 128,248,7,128,248,7,128,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,20,32,96,24,2,0,15,0,0,7,128,0, + 3,128,0,1,192,0,1,192,0,0,224,0,0,112,0,0, + 48,0,0,0,0,0,0,0,0,0,0,0,0,0,7,252, + 0,15,255,0,63,15,128,60,3,192,120,3,224,120,1,224, + 240,1,224,240,0,240,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,1,224,120,1,224,120,3,224,60,3, + 192,63,15,128,15,255,0,7,254,0,20,32,96,24,2,0, + 0,30,0,0,30,0,0,60,0,0,56,0,0,112,0,0, + 96,0,0,224,0,1,192,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,15,255,0,63,15,128,60,3,192, + 120,3,224,120,1,224,240,1,224,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,1,224,120,1, + 224,120,3,224,60,3,192,63,15,128,15,255,0,7,254,0, + 20,32,96,24,2,0,0,240,0,1,248,0,1,248,0,3, + 188,0,3,156,0,7,14,0,6,6,0,12,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,20,30,90,24,2,0,3,135,0,7, + 230,0,15,254,0,14,124,0,12,8,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,20,30,90,24,2,0,15,15,0,15, + 15,0,15,15,0,15,15,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,24,19,57,40,8,2,0,16,0,0, + 56,0,0,124,0,0,124,0,0,124,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0, + 0,0,0,0,0,0,0,56,0,0,124,0,0,124,0,0, + 124,0,0,56,0,21,26,78,24,1,254,0,0,56,0,0, + 120,0,0,112,3,255,224,7,255,192,31,135,192,30,3,224, + 60,7,240,60,15,240,120,14,240,120,28,120,120,56,120,120, + 120,120,120,112,120,120,224,120,121,192,120,123,192,240,63,128, + 240,63,1,240,30,1,224,15,135,192,31,255,128,59,255,0, + 112,0,0,240,0,0,96,0,0,18,32,96,24,3,0,30, + 0,0,15,0,0,7,0,0,3,128,0,3,192,0,1,192, + 0,0,224,0,0,96,0,0,0,0,0,0,0,0,0,0, + 0,0,0,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,7,192,120,7,192,124,31,192,63,251,192,31,243,192,18, + 32,96,24,3,0,0,62,0,0,60,0,0,120,0,0,112, + 0,0,224,0,0,224,0,1,192,0,3,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,7,192,120,7,192,124,31,192,63, + 251,192,31,243,192,18,32,96,24,3,0,1,224,0,3,240, + 0,3,240,0,7,120,0,7,56,0,14,28,0,28,12,0, + 24,14,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 7,192,124,31,192,63,251,192,31,243,192,18,30,90,24,3, + 0,30,30,0,30,30,0,30,30,0,30,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,40,120,21,1, + 248,0,15,0,0,30,0,0,28,0,0,56,0,0,112,0, + 0,112,0,0,224,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,240,0,240,240,1,224,120,1,224,120,1, + 192,60,3,192,60,3,192,62,7,128,30,7,128,30,7,0, + 15,15,0,15,15,0,15,158,0,7,158,0,7,156,0,3, + 252,0,3,252,0,1,248,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,224,0,1,224,0,33,224,0,243,192,0, + 127,192,0,127,128,0,31,0,0,19,38,114,24,3,248,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,243,254,0, + 247,255,0,254,15,128,252,7,192,248,3,192,248,3,192,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,248,3,192,248,3,192,252,7,192, + 254,15,128,247,255,0,243,254,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,20,38,114,22,1,248,15,15,0,15,15,0,15,15,0, + 15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,240,0,240,248,0,224,120,1,224,120,1, + 224,60,3,192,60,3,192,62,3,128,30,7,128,30,7,128, + 15,15,0,15,15,0,7,143,0,7,158,0,7,222,0,3, + 252,0,3,252,0,1,252,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 30 + Calculated Max Values w=24 h=33 x= 8 y=15 dx=40 dy= 0 ascent=31 len=90 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =30 descent= 0 + X Font ascent =30 descent= 0 + Max Font ascent =31 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30n[1175] U8G_SECTION(".progmem.u8g_font_fur30n") = { + 0,54,54,253,245,30,0,0,0,0,42,57,0,31,251,30, + 0,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=37 h=43 x=10 y=25 dx=40 dy= 0 ascent=33 len=185 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =33 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30r[7380] U8G_SECTION(".progmem.u8g_font_fur30r") = { + 0,54,54,253,245,30,9,94,20,223,32,127,249,33,245,31, + 248,0,0,0,12,0,0,4,30,30,14,5,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,0,0,0,240,240,240,240,12,12,24,18,3, + 18,240,240,240,240,240,240,240,240,240,240,240,240,240,112,224, + 112,224,112,96,112,96,112,96,96,26,30,120,30,2,0,0, + 28,14,0,0,28,28,0,0,28,28,0,0,28,28,0,0, + 56,24,0,0,56,56,0,0,56,56,0,0,112,56,0,0, + 112,112,0,31,255,255,192,31,255,255,128,31,255,255,128,0, + 224,224,0,0,224,224,0,1,192,224,0,1,193,192,0,1, + 193,192,0,127,255,254,0,255,255,254,0,255,255,254,0,3, + 3,128,0,7,7,0,0,7,7,0,0,7,7,0,0,14, + 7,0,0,14,14,0,0,14,14,0,0,14,14,0,0,28, + 28,0,0,28,28,0,0,20,37,111,22,1,252,0,96,0, + 0,96,0,0,96,0,3,252,0,15,254,0,63,255,0,63, + 255,128,124,103,128,120,99,192,240,99,192,240,99,192,240,96, + 0,240,96,0,240,96,0,120,96,0,127,96,0,63,240,0, + 31,254,0,15,255,128,1,255,192,0,111,224,0,97,224,0, + 96,240,0,96,240,0,96,240,240,96,240,240,96,240,240,96, + 240,120,96,240,124,97,224,63,255,192,31,255,128,15,255,0, + 0,96,0,0,96,0,0,96,0,0,96,0,33,31,155,37, + 2,0,0,0,0,224,0,15,192,0,192,0,31,240,1,192, + 0,63,248,1,128,0,120,60,3,0,0,240,60,7,0,0, + 240,30,6,0,0,240,30,14,0,0,240,30,12,0,0,240, + 30,28,0,0,240,30,24,0,0,240,28,56,0,0,112,60, + 48,0,0,120,124,112,0,0,63,248,224,0,0,31,240,192, + 96,0,3,129,195,252,0,0,1,135,254,0,0,3,143,15, + 0,0,3,14,7,0,0,7,30,7,128,0,6,30,7,128, + 0,14,30,7,128,0,28,30,7,128,0,28,30,7,128,0, + 56,30,7,128,0,56,30,7,128,0,112,15,15,0,0,96, + 15,254,0,0,224,7,252,0,0,192,1,248,0,27,30,120, + 30,2,1,3,254,0,0,7,255,0,0,15,143,128,0,15, + 3,192,0,30,3,192,0,30,3,192,0,30,3,192,0,30, + 3,192,0,31,7,128,0,15,15,128,0,15,191,0,0,7, + 252,0,0,3,248,0,0,7,224,15,0,15,240,15,0,63, + 248,15,0,124,124,15,0,120,62,15,0,248,31,15,0,240, + 15,142,0,240,7,206,0,240,3,254,0,240,1,254,0,240, + 0,252,0,248,0,124,0,124,0,126,0,126,1,255,0,63, + 255,255,128,31,255,207,192,7,255,3,224,4,12,12,15,5, + 18,240,240,240,240,112,112,112,112,112,112,112,112,7,36,36, + 15,4,251,14,14,28,28,60,56,56,120,120,120,112,112,240, + 240,240,240,240,240,240,240,240,240,240,240,112,112,120,120,120, + 56,56,60,28,28,14,14,7,36,36,14,4,251,224,224,96, + 112,112,120,56,56,60,60,60,28,28,28,30,30,30,30,30, + 30,30,30,28,28,60,60,60,60,56,56,120,112,112,224,224, + 224,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0,4,20,20,11,4,0,240,240,240, + 240,240,0,0,0,0,0,0,0,0,0,0,240,240,240,240, + 240,6,26,26,11,2,250,60,60,60,60,60,0,0,0,0, + 0,0,0,0,0,0,0,60,60,60,56,120,112,112,112,224, + 224,24,21,63,40,8,2,0,0,1,0,0,15,0,0,63, + 0,1,252,0,7,224,0,63,0,1,252,0,7,224,0,63, + 0,0,252,0,0,224,0,0,248,0,0,126,0,0,15,192, + 0,3,248,0,0,126,0,0,31,192,0,3,240,0,0,126, + 0,0,31,0,0,3,24,10,30,40,8,7,255,255,255,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,255,255,255,24,21,63,40,8,2, + 128,0,0,240,0,0,252,0,0,63,128,0,7,224,0,0, + 252,0,0,63,0,0,7,224,0,0,252,0,0,63,0,0, + 7,0,0,31,0,0,126,0,3,240,0,31,192,0,126,0, + 3,248,0,15,192,0,126,0,0,248,0,0,192,0,0,18, + 30,90,21,1,1,15,248,0,31,254,0,63,255,0,126,127, + 128,248,7,128,112,3,192,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,15,0,0,30,0,0,60,0,0, + 120,0,1,240,0,1,224,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,0,0,0,0,0,0, + 0,0,0,3,192,0,3,192,0,3,192,0,3,192,0,35, + 37,185,39,2,249,0,7,252,0,0,0,63,255,128,0,0, + 255,255,240,0,1,255,255,248,0,7,248,3,252,0,15,224, + 0,126,0,15,128,0,31,0,31,0,0,15,128,62,0,0, + 7,128,60,0,0,7,192,120,7,231,131,192,120,15,247,131, + 192,112,31,255,129,224,240,62,31,129,224,240,60,15,129,224, + 240,120,7,129,224,240,120,7,129,224,240,120,7,129,224,240, + 120,7,129,224,240,120,7,129,224,240,120,7,129,224,240,120, + 7,129,192,240,120,7,129,192,112,56,15,131,192,120,60,15, + 135,128,120,30,27,255,0,124,31,251,255,0,60,15,240,252, + 0,62,1,128,48,0,31,0,0,0,0,31,128,0,0,0, + 15,224,0,0,0,7,248,0,128,0,3,255,255,128,0,0, + 255,255,128,0,0,63,255,128,0,0,7,254,0,0,28,30, + 120,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,63,192,0,0,127,192,0,0,121,224,0, + 0,121,224,0,0,241,240,0,0,240,240,0,1,240,240,0, + 1,224,248,0,1,224,120,0,3,224,124,0,3,192,60,0, + 7,192,60,0,7,128,62,0,7,128,30,0,15,128,31,0, + 15,255,255,0,31,255,255,128,31,255,255,128,30,0,7,128, + 60,0,3,192,60,0,3,192,124,0,3,224,120,0,1,224, + 120,0,1,224,240,0,0,240,240,0,0,240,21,30,90,26, + 3,0,255,254,0,255,255,128,255,255,192,255,255,224,240,7, + 224,240,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,224,240,1,224,240,7,192,255,255,128,255,255,0,255, + 255,192,240,3,224,240,0,240,240,0,112,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,248,240,1,248,240,7,240, + 255,255,224,255,255,224,255,255,128,255,254,0,22,30,90,26, + 2,1,1,255,128,7,255,224,15,255,240,31,0,248,62,0, + 120,60,0,60,120,0,60,120,0,60,120,0,0,112,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,112,0, + 0,112,0,0,120,0,60,120,0,60,60,0,60,60,0,120, + 31,0,248,15,255,240,7,255,224,1,255,128,23,30,90,28, + 3,0,255,248,0,255,255,0,255,255,192,255,255,224,240,15, + 240,240,1,248,240,0,248,240,0,124,240,0,60,240,0,60, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 60,240,0,60,240,0,124,240,0,248,240,1,240,240,7,240, + 255,255,224,255,255,192,255,255,0,255,248,0,19,30,90,24, + 3,0,255,255,192,255,255,192,255,255,192,255,255,192,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,17,30,90,23, + 3,0,255,255,128,255,255,128,255,255,128,255,255,128,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,0,255,255,0,255, + 255,0,255,255,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,25,30,120,30, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,128,63,0,62,0,15,0,60,0,7,128,120,0, + 7,128,120,0,0,0,112,0,0,0,240,0,0,0,240,0, + 0,0,240,0,0,0,240,0,0,0,240,3,255,128,240,3, + 255,128,240,3,255,128,240,3,255,128,240,0,7,128,240,0, + 7,128,120,0,7,128,120,0,7,128,124,0,7,128,62,0, + 7,128,62,0,7,128,31,128,7,128,15,255,255,128,7,255, + 255,128,3,255,255,0,0,255,248,0,22,30,90,28,3,0, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,255,255,252,255,255,252,255,255,252, + 255,255,252,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,4,30,30,10,3,0, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,17,30, + 90,22,2,0,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,0,7,128,0, + 7,128,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,240,7,128,240,7,128,240,15,128,120, + 31,0,127,255,0,63,254,0,31,252,0,15,240,0,22,30, + 90,26,3,0,240,1,240,240,3,224,240,7,192,240,15,128, + 240,31,0,240,30,0,240,60,0,240,124,0,240,248,0,241, + 240,0,243,224,0,247,192,0,255,128,0,255,128,0,255,192, + 0,247,192,0,243,224,0,243,240,0,241,248,0,240,252,0, + 240,124,0,240,62,0,240,31,0,240,31,128,240,15,192,240, + 7,192,240,3,224,240,1,240,240,1,248,240,0,252,17,30, + 90,21,3,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,30,30, + 120,36,3,0,252,0,0,252,254,0,1,252,254,0,1,252, + 254,0,1,252,255,0,3,252,255,0,3,252,247,128,7,188, + 247,128,7,188,247,128,7,188,243,192,15,60,243,192,15,60, + 243,192,14,60,241,224,30,60,241,224,30,60,240,224,28,60, + 240,240,60,60,240,240,60,60,240,120,120,60,240,120,120,60, + 240,120,120,60,240,60,240,60,240,60,240,60,240,28,224,60, + 240,31,224,60,240,31,224,60,240,15,192,60,240,15,192,60, + 240,15,192,60,240,7,128,60,240,7,128,60,22,30,90,28, + 3,0,252,0,60,252,0,60,254,0,60,254,0,60,255,0, + 60,255,0,60,255,128,60,247,128,60,247,192,60,243,192,60, + 243,224,60,241,224,60,241,240,60,240,240,60,240,248,60,240, + 120,60,240,124,60,240,60,60,240,62,60,240,30,60,240,31, + 60,240,15,60,240,15,188,240,7,188,240,3,252,240,3,252, + 240,1,252,240,1,252,240,0,252,240,0,252,26,30,120,30, + 2,1,1,255,224,0,3,255,240,0,15,255,252,0,31,255, + 254,0,31,0,62,0,62,0,31,0,60,0,15,0,120,0, + 7,128,120,0,7,128,112,0,3,128,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,112,0, + 3,128,120,0,7,128,120,0,7,128,120,0,15,128,60,0, + 15,0,62,0,31,0,31,128,126,0,15,255,252,0,7,255, + 248,0,3,255,240,0,0,255,192,0,19,30,90,24,3,0, + 255,248,0,255,254,0,255,255,128,255,255,192,240,15,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,240,15,192,255,255,192,255,255,128, + 255,254,0,255,248,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,28,30,120,31,2,1, + 0,255,192,0,3,255,240,0,15,255,252,0,31,255,254,0, + 31,0,62,0,62,0,31,0,60,0,15,128,120,0,7,128, + 120,0,7,128,112,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,112,0,3,128, + 120,0,7,128,120,0,7,128,120,0,15,0,60,0,15,0, + 62,0,30,0,31,128,126,0,15,255,255,240,7,255,255,240, + 3,255,255,240,0,255,255,240,20,30,90,25,3,0,255,252, + 0,255,255,0,255,255,192,255,255,224,240,7,224,240,1,224, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 1,224,240,7,192,255,255,128,255,255,0,255,255,0,255,255, + 128,240,7,192,240,3,192,240,3,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,0,224,240,0,224,240,0,240,240, + 0,240,240,0,240,240,0,112,22,30,90,26,2,1,3,255, + 0,15,255,192,63,255,224,63,255,240,124,0,240,120,0,120, + 240,0,120,240,0,120,240,0,0,240,0,0,120,0,0,124, + 0,0,63,128,0,31,252,0,15,255,128,0,255,224,0,7, + 240,0,0,248,0,0,120,0,0,56,0,0,60,240,0,60, + 240,0,60,240,0,60,120,0,120,124,0,248,63,255,240,63, + 255,240,31,255,192,7,255,0,23,30,90,25,1,0,255,255, + 254,255,255,254,255,255,254,255,255,254,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,23,30,90,29,3,0,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 120,0,60,120,0,60,124,0,124,62,0,248,63,255,248,31, + 255,240,15,255,224,3,255,128,24,30,90,26,1,0,240,0, + 15,248,0,15,248,0,31,120,0,30,124,0,30,124,0,62, + 60,0,60,62,0,60,30,0,124,30,0,120,31,0,120,15, + 0,248,15,0,240,15,0,240,7,129,240,7,129,224,7,129, + 224,3,195,224,3,195,192,3,195,192,1,231,192,1,231,128, + 1,231,128,0,255,128,0,255,0,0,255,0,0,126,0,0, + 126,0,0,126,0,0,60,0,37,30,150,39,1,0,240,0, + 248,0,120,240,0,248,0,120,240,1,248,0,248,120,1,252, + 0,240,120,1,252,0,240,120,1,220,0,240,124,3,222,1, + 224,60,3,222,1,224,60,3,222,1,224,60,3,142,1,224, + 30,7,143,3,192,30,7,143,3,192,30,7,15,3,192,30, + 7,7,3,128,15,15,7,135,128,15,15,7,135,128,15,14, + 3,135,128,7,14,3,135,0,7,158,3,207,0,7,158,3, + 207,0,7,156,1,206,0,3,156,1,222,0,3,252,1,254, + 0,3,252,1,254,0,1,248,0,252,0,1,248,0,252,0, + 1,248,0,252,0,1,240,0,248,0,0,240,0,120,0,0, + 240,0,120,0,26,30,120,28,1,0,62,0,15,0,62,0, + 31,0,31,0,30,0,15,128,60,0,15,128,124,0,7,192, + 120,0,3,224,240,0,3,224,240,0,1,241,224,0,0,243, + 224,0,0,251,192,0,0,127,128,0,0,63,128,0,0,63, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,247, + 192,0,0,243,224,0,1,227,224,0,3,225,240,0,3,192, + 248,0,7,128,248,0,15,128,124,0,15,0,62,0,31,0, + 62,0,62,0,31,0,60,0,31,0,124,0,15,128,248,0, + 7,192,24,30,90,26,1,0,248,0,15,248,0,31,124,0, + 30,124,0,60,62,0,124,30,0,120,31,0,248,15,0,240, + 15,129,224,7,129,224,3,195,192,3,227,192,1,231,128,1, + 247,0,0,255,0,0,254,0,0,126,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,21,30,90,25,2,0,127,255,248,127,255,248,127,255, + 248,127,255,248,0,0,248,0,1,248,0,1,240,0,3,224, + 0,7,192,0,15,128,0,31,128,0,31,0,0,62,0,0, + 124,0,0,252,0,0,248,0,1,240,0,3,224,0,7,192, + 0,15,192,0,15,128,0,31,0,0,62,0,0,126,0,0, + 252,0,0,248,0,0,255,255,248,255,255,248,255,255,248,255, + 255,248,8,38,38,16,4,248,255,255,255,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,255,255,255,12,33, + 66,16,2,254,224,0,224,0,224,0,96,0,112,0,112,0, + 48,0,56,0,56,0,56,0,28,0,28,0,28,0,12,0, + 14,0,14,0,6,0,7,0,7,0,7,0,3,0,3,128, + 3,128,1,128,1,192,1,192,1,192,0,192,0,224,0,224, + 0,96,0,112,0,112,8,38,38,16,4,248,255,255,255,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255, + 255,255,20,25,75,40,10,0,0,96,0,0,240,0,0,240, + 0,0,240,0,1,248,0,1,152,0,3,156,0,3,12,0, + 3,12,0,7,14,0,6,6,0,6,6,0,14,7,0,12, + 3,0,28,3,128,28,1,128,24,1,128,56,1,192,48,0, + 192,48,0,192,112,0,224,96,0,96,224,0,112,224,0,112, + 192,0,48,20,3,9,20,0,251,255,255,240,255,255,240,255, + 255,240,8,7,7,9,255,25,240,120,56,28,14,14,7,18, + 20,60,23,2,1,15,254,0,63,255,0,62,15,128,120,7, + 128,120,3,192,0,3,192,0,3,192,3,255,192,15,255,192, + 63,255,192,126,3,192,120,3,192,240,3,192,240,3,192,240, + 7,192,240,7,192,248,15,192,124,63,192,63,251,192,31,227, + 192,19,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,252,0,247,255,0,255,15,128,252,7, + 128,248,3,192,248,3,192,240,1,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,192,240,3,192,240, + 3,192,248,7,128,252,7,128,254,31,0,247,254,0,243,252, + 0,17,20,60,21,2,1,15,252,0,31,254,0,62,31,0, + 120,15,128,120,7,128,240,7,128,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,7, + 128,112,7,128,120,7,128,120,15,0,62,31,0,31,254,0, + 15,252,0,19,30,90,24,2,0,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,15,249,224,31,253,224,62,31,224, + 60,7,224,120,7,224,120,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,120,3,224,120,3,224,60,7,224,31,15,224,15,255,224, + 7,249,224,18,20,60,22,2,1,7,252,0,31,254,0,62, + 31,0,60,7,128,120,3,128,112,3,192,240,3,192,240,3, + 192,255,255,192,255,255,192,255,255,192,240,0,0,240,0,0, + 240,0,0,112,3,192,120,7,128,56,7,128,62,31,0,31, + 254,0,7,252,0,13,30,60,14,1,0,1,248,3,248,7, + 248,15,128,15,0,15,0,15,0,15,0,15,0,15,0,255, + 240,255,240,255,240,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,19,28,84,24,2,249,15,249,224, + 31,253,224,62,31,224,120,7,224,120,3,224,112,3,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,120,3,224,124,7,224,62,15,224, + 31,253,224,15,249,224,0,129,224,0,1,224,0,3,192,120, + 3,192,120,3,192,60,7,128,63,255,0,15,254,0,3,248, + 0,18,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,254,0,247,255,0,254,31,128,248,7, + 128,240,7,128,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,4,30,30,8,2,0,240,240,240,240,0,0,0,0,0, + 0,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,7,38,38,11,2,248,30,30,30,30,0, + 0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,254,252, + 248,16,30,60,20,3,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,30,240,62,240, + 124,240,248,241,240,243,224,247,192,255,128,255,0,255,0,247, + 128,247,192,243,224,241,240,240,240,240,248,240,124,240,62,240, + 30,240,31,4,30,30,10,3,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,30,20,80,36,3,1,243,252,31, + 224,247,254,63,240,254,31,112,248,252,15,224,120,248,7,192, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,18,20,60, + 24,3,1,243,254,0,247,255,0,254,31,128,248,7,128,248, + 7,128,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,20, + 20,60,24,2,1,7,252,0,15,255,0,63,15,128,60,3, + 192,120,3,224,120,1,224,240,1,224,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,1,224,120, + 1,224,120,3,224,60,3,192,63,15,128,15,255,0,7,254, + 0,19,28,84,24,3,249,243,254,0,247,255,0,254,15,128, + 252,7,192,248,3,192,248,3,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,248,3,192,248,3,192,252,7,192,254,15,128,247,255,0, + 243,254,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,19,28,84,24,2, + 249,15,249,224,31,253,224,62,15,224,124,7,224,120,3,224, + 120,3,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,3,224,120,3, + 224,124,7,224,62,15,224,31,253,224,15,249,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,11,20,40,15,3,0,243,224,247,224,255, + 224,254,0,248,0,248,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,16,20,40,20,2,1,31,248,63,254,124,62,248, + 31,240,15,240,0,240,0,124,0,127,192,63,248,15,254,0, + 126,0,31,0,15,240,15,240,15,240,31,124,62,127,252,31, + 248,12,25,50,14,1,1,14,0,30,0,30,0,30,0,30, + 0,255,240,255,240,255,240,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,15,0,15,240,7,240,18,20,60,24,3,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,20,60,21,1, + 0,240,0,240,240,1,224,120,1,224,120,1,192,124,3,192, + 60,3,192,60,7,128,30,7,128,30,7,0,15,15,0,15, + 14,0,15,14,0,7,158,0,7,156,0,3,252,0,3,248, + 0,3,248,0,1,248,0,1,240,0,0,240,0,31,20,80, + 33,1,0,240,7,192,30,240,15,192,28,240,15,192,60,120, + 15,224,60,120,30,224,56,120,30,224,120,56,28,240,120,60, + 28,112,112,60,60,112,112,28,56,120,240,30,56,56,224,30, + 120,56,224,14,112,57,224,15,112,29,192,15,240,29,192,7, + 224,31,192,7,224,31,128,7,224,15,128,3,192,15,128,3, + 192,15,0,20,20,60,22,1,0,120,1,224,60,3,192,62, + 3,192,31,7,128,15,15,0,7,158,0,7,222,0,3,252, + 0,1,248,0,0,240,0,1,248,0,3,252,0,3,188,0, + 7,158,0,15,31,0,30,15,128,62,7,128,60,3,192,120, + 3,224,240,1,240,20,28,84,21,1,248,240,0,240,240,1, + 224,120,1,224,120,1,192,60,3,192,60,3,192,62,7,128, + 30,7,128,30,7,128,15,15,0,15,15,0,15,158,0,7, + 158,0,7,158,0,3,252,0,3,252,0,1,248,0,1,248, + 0,1,248,0,0,240,0,0,240,0,0,224,0,1,224,0, + 1,224,0,1,192,0,3,192,0,3,128,0,7,128,0,15, + 20,40,19,2,0,127,254,127,254,127,254,0,62,0,124,0, + 120,0,240,1,240,3,224,3,192,7,128,15,128,31,0,30, + 0,60,0,124,0,248,0,255,254,255,254,255,254,13,41,82, + 19,3,246,0,24,1,248,3,248,3,224,7,128,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,7,0,7, + 0,7,0,15,0,31,0,62,0,252,0,248,0,252,0,126, + 0,30,0,15,0,15,0,7,0,7,0,7,0,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,3,192,3, + 248,1,248,0,120,2,43,43,14,6,245,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,41,82,19,3,246,192,0,252,0, + 254,0,30,0,15,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,128,7,128,7,128,7,128,7,128,7,128,3,192, + 3,224,1,248,0,248,1,248,1,240,3,192,3,192,7,128, + 7,128,7,128,7,128,7,128,7,128,7,0,7,0,7,0, + 7,0,7,0,15,0,31,0,254,0,252,0,240,0,21,5, + 15,21,0,8,2,0,56,31,240,120,63,255,240,120,127,224, + 240,15,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--48-480-72-72-P-226-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 35 + Calculated Max Values w=29 h=39 x=10 y=16 dx=49 dy= 0 ascent=36 len=116 + Font Bounding box w=65 h=64 x=-4 y=-13 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =35 descent= 0 + X Font ascent =35 descent= 0 + Max Font ascent =36 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur35n[1417] U8G_SECTION(".progmem.u8g_font_fur35n") = { + 0,65,64,252,243,35,0,0,0,0,42,57,0,36,250,35, + 0,19,19,57,31,6,16,6,12,0,30,15,0,15,30,0, + 15,30,0,7,28,0,3,184,0,1,176,0,193,240,96,255, + 255,224,255,255,224,248,227,224,1,240,0,3,184,0,7,188, + 0,7,28,0,15,30,0,30,15,0,14,14,0,2,8,0, + 29,29,116,49,10,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,255,255,255,248,255,255, + 255,248,255,255,255,248,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,9,12,24,13,2,250, + 31,128,31,0,31,0,62,0,62,0,62,0,60,0,124,0, + 120,0,120,0,112,0,240,0,12,4,8,16,2,10,255,240, + 255,240,255,240,255,240,5,6,6,13,5,0,248,248,248,248, + 248,248,15,39,78,19,2,253,0,14,0,30,0,28,0,28, + 0,60,0,56,0,56,0,120,0,112,0,112,0,112,0,240, + 0,224,0,224,1,224,1,192,1,192,1,192,3,192,3,128, + 3,128,7,128,7,0,7,0,15,0,15,0,14,0,14,0, + 30,0,28,0,28,0,60,0,56,0,56,0,56,0,120,0, + 112,0,112,0,240,0,22,35,105,27,2,1,3,255,0,7, + 255,128,31,255,224,31,255,224,62,3,240,62,1,240,124,0, + 248,120,0,248,120,0,120,248,0,120,248,0,124,248,0,124, + 248,0,124,248,0,124,248,0,124,248,0,124,248,0,124,248, + 0,124,248,0,124,248,0,124,248,0,124,248,0,124,248,0, + 124,248,0,124,120,0,124,120,0,120,120,0,120,124,0,248, + 60,0,248,62,1,240,63,3,240,31,255,224,15,255,192,7, + 255,128,1,255,0,12,35,70,27,7,0,3,240,7,240,15, + 240,31,240,127,240,255,240,253,240,241,240,193,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,21,35,105,27,3,1,3,255,0,15,255,128,31,255,192, + 63,255,224,63,1,240,126,0,240,124,0,248,124,0,248,124, + 0,248,124,0,248,0,0,248,0,0,248,0,0,240,0,1, + 240,0,3,224,0,7,224,0,7,192,0,15,128,0,31,128, + 0,63,0,0,126,0,0,252,0,1,248,0,3,240,0,7, + 224,0,15,192,0,31,192,0,31,128,0,63,0,0,126,0, + 0,252,0,0,255,255,248,255,255,248,255,255,248,255,255,248, + 22,35,105,27,2,1,3,255,0,15,255,192,31,255,224,31, + 255,240,63,1,248,62,0,248,124,0,120,124,0,120,124,0, + 124,0,0,120,0,0,120,0,0,248,0,1,240,0,15,224, + 0,255,192,0,255,0,0,255,128,0,255,192,0,15,224,0, + 1,240,0,0,248,0,0,248,0,0,124,0,0,124,0,0, + 124,248,0,124,248,0,124,252,0,124,252,0,120,124,0,248, + 127,3,248,63,255,240,31,255,224,15,255,192,3,255,0,24, + 35,105,27,1,0,0,3,240,0,7,240,0,7,240,0,15, + 240,0,31,240,0,63,240,0,61,240,0,121,240,0,249,240, + 0,241,240,1,225,240,3,225,240,3,193,240,7,129,240,15, + 129,240,15,1,240,30,1,240,62,1,240,60,1,240,120,1, + 240,248,1,240,240,1,240,255,255,255,255,255,255,255,255,255, + 255,255,255,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,21,35, + 105,27,3,0,127,255,224,127,255,224,127,255,224,127,255,224, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,254,0,125,255,128,127,255, + 192,127,131,224,126,1,240,124,0,240,120,0,248,120,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,248,0,120,248,0,248,248,0,240,248,1,240,126,3, + 224,63,255,224,63,255,192,15,255,128,7,254,0,23,35,105, + 27,2,1,1,255,128,7,255,192,15,255,224,31,193,240,31, + 0,248,62,0,248,62,0,120,124,0,120,124,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,127,0,120,255,192, + 249,255,240,251,255,240,255,131,248,254,0,248,252,0,124,252, + 0,124,248,0,60,248,0,60,248,0,60,248,0,62,248,0, + 60,248,0,60,120,0,60,124,0,124,124,0,120,63,1,248, + 31,255,240,15,255,224,7,255,192,1,255,0,21,35,105,27, + 3,0,255,255,248,255,255,248,255,255,248,255,255,248,0,0, + 120,0,0,248,0,0,240,0,1,240,0,1,240,0,1,224, + 0,3,224,0,3,224,0,7,192,0,7,192,0,7,128,0, + 15,128,0,15,128,0,15,0,0,31,0,0,31,0,0,62, + 0,0,62,0,0,62,0,0,124,0,0,124,0,0,248,0, + 0,248,0,0,248,0,1,240,0,1,240,0,3,240,0,3, + 224,0,3,224,0,7,192,0,7,192,0,22,35,105,27,2, + 1,3,255,128,15,255,224,31,255,240,63,255,248,63,1,248, + 126,0,252,124,0,124,124,0,124,124,0,124,124,0,124,124, + 0,124,60,0,120,62,0,248,31,131,240,15,255,224,3,255, + 128,7,255,128,15,255,224,31,3,240,62,0,248,124,0,120, + 120,0,124,248,0,60,248,0,60,248,0,60,248,0,60,248, + 0,60,248,0,60,248,0,124,124,0,124,126,1,248,63,255, + 248,31,255,240,15,255,224,3,255,128,22,35,105,27,2,1, + 3,255,128,15,255,192,31,255,224,63,255,240,126,1,248,124, + 0,248,120,0,248,248,0,124,248,0,124,248,0,124,248,0, + 124,248,0,124,248,0,124,248,0,124,248,0,252,120,0,252, + 124,1,252,127,3,252,63,255,252,31,255,124,15,254,124,3, + 248,124,0,0,124,0,0,124,0,0,120,0,0,120,0,0, + 248,120,0,248,120,1,240,124,1,240,62,3,224,63,255,224, + 31,255,192,15,255,128,7,254,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--58-580-72-72-P-271-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 42 + Calculated Max Values w=35 h=46 x=12 y=20 dx=59 dy= 0 ascent=43 len=175 + Font Bounding box w=78 h=76 x=-4 y=-15 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =42 descent= 0 + X Font ascent =42 descent= 0 + Max Font ascent =43 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur42n[2135] U8G_SECTION(".progmem.u8g_font_fur42n") = { + 0,78,76,252,241,42,0,0,0,0,42,57,0,43,249,42, + 0,23,22,66,37,7,20,3,1,128,7,131,192,15,131,224, + 7,131,192,7,199,192,3,199,128,1,239,0,0,238,0,0, + 254,0,254,124,254,255,255,254,255,255,254,254,124,254,0,124, + 0,0,238,0,1,239,0,3,199,128,3,199,128,7,195,192, + 15,131,224,15,131,224,3,1,128,35,35,175,59,12,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,255,255,255,255,224,255, + 255,255,255,224,255,255,255,255,224,255,255,255,255,224,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,10,15, + 30,16,3,249,31,192,31,192,31,128,63,128,63,0,63,0, + 62,0,62,0,126,0,124,0,124,0,120,0,248,0,248,0, + 240,0,14,5,10,18,2,12,255,252,255,252,255,252,255,252, + 255,252,6,7,7,16,6,0,252,252,252,252,252,252,252,17, + 46,138,23,3,253,0,7,128,0,7,128,0,7,128,0,15, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,60,0,0,60,0,0,60,0,0,120,0,0, + 120,0,0,120,0,0,240,0,0,240,0,0,240,0,0,240, + 0,1,224,0,1,224,0,1,224,0,3,192,0,3,192,0, + 3,192,0,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,62,0,0,60,0,0,60,0,0,60,0,0,120,0,0, + 120,0,0,120,0,0,240,0,0,240,0,0,240,0,0,26, + 42,168,32,3,1,0,255,224,0,3,255,240,0,7,255,252, + 0,15,255,254,0,31,255,254,0,63,128,127,0,63,0,63, + 0,62,0,31,128,126,0,31,128,124,0,15,128,124,0,15, + 192,124,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 192,248,0,7,192,248,0,7,192,248,0,7,192,248,0,7, + 192,248,0,7,192,248,0,7,192,248,0,7,192,248,0,7, + 192,248,0,7,192,252,0,7,192,252,0,7,192,252,0,7, + 192,252,0,7,192,252,0,15,192,124,0,15,192,124,0,15, + 192,126,0,15,192,126,0,15,128,62,0,31,128,63,0,31, + 128,63,0,63,0,31,192,127,0,31,255,254,0,15,255,252, + 0,7,255,252,0,3,255,240,0,0,255,192,0,14,42,84, + 32,8,0,0,252,1,252,3,252,7,252,15,252,63,252,127, + 252,255,124,254,124,248,124,224,124,128,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,25,42,168,32,4,1,1,255,192, + 0,7,255,240,0,15,255,248,0,31,255,252,0,31,255,254, + 0,63,128,127,0,63,0,63,0,127,0,31,128,126,0,31, + 128,126,0,31,128,126,0,15,128,126,0,15,128,0,0,31, + 128,0,0,31,128,0,0,31,0,0,0,63,0,0,0,63, + 0,0,0,126,0,0,0,252,0,0,1,252,0,0,3,248, + 0,0,7,240,0,0,7,224,0,0,15,224,0,0,31,192, + 0,0,63,128,0,0,127,0,0,0,254,0,0,1,252,0, + 0,3,248,0,0,7,240,0,0,15,224,0,0,31,224,0, + 0,63,192,0,0,63,128,0,0,127,0,0,0,254,0,0, + 0,255,255,255,128,255,255,255,128,255,255,255,128,255,255,255, + 128,255,255,255,128,26,42,168,32,3,1,1,255,192,0,7, + 255,240,0,15,255,252,0,31,255,254,0,63,255,255,0,63, + 128,127,0,127,0,31,128,126,0,31,128,126,0,15,128,126, + 0,15,128,252,0,15,128,0,0,15,128,0,0,15,128,0, + 0,31,128,0,0,63,0,0,0,126,0,0,3,252,0,0, + 127,248,0,0,127,240,0,0,127,224,0,0,127,240,0,0, + 127,252,0,0,3,254,0,0,0,127,0,0,0,63,128,0, + 0,31,128,0,0,15,192,0,0,15,192,0,0,7,192,0, + 0,7,192,252,0,7,192,252,0,7,192,252,0,7,192,252, + 0,15,192,254,0,31,192,127,0,63,128,127,128,127,128,63, + 255,255,0,63,255,254,0,31,255,252,0,7,255,248,0,1, + 255,224,0,29,42,168,32,2,0,0,0,127,0,0,0,127, + 0,0,0,255,0,0,1,255,0,0,3,255,0,0,3,255, + 0,0,7,223,0,0,15,223,0,0,15,159,0,0,31,31, + 0,0,63,31,0,0,62,31,0,0,124,31,0,0,252,31, + 0,0,248,31,0,1,240,31,0,3,240,31,0,3,224,31, + 0,7,192,31,0,15,192,31,0,15,128,31,0,31,0,31, + 0,63,0,31,0,126,0,31,0,124,0,31,0,252,0,31, + 0,248,0,31,0,255,255,255,248,255,255,255,248,255,255,255, + 248,255,255,255,248,255,255,255,248,0,0,31,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, + 0,26,42,168,32,3,0,127,255,255,0,127,255,255,0,127, + 255,255,0,127,255,255,0,127,255,255,0,124,0,0,0,124, + 0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,124, + 0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,124, + 31,192,0,124,127,240,0,124,255,252,0,125,255,254,0,127, + 224,254,0,127,128,63,0,127,0,31,0,126,0,31,128,126, + 0,15,128,124,0,15,128,0,0,15,192,0,0,15,192,0, + 0,7,192,0,0,7,192,0,0,7,192,0,0,15,192,0, + 0,15,192,252,0,15,192,252,0,15,128,252,0,31,128,254, + 0,31,128,126,0,63,0,127,128,126,0,63,255,254,0,63, + 255,252,0,15,255,248,0,7,255,224,0,1,255,192,0,27, + 42,168,32,3,1,0,127,240,0,1,255,252,0,3,255,254, + 0,15,240,127,0,15,192,63,128,31,128,31,128,63,0,15, + 192,63,0,15,192,62,0,15,192,126,0,0,0,126,0,0, + 0,124,0,0,0,124,0,0,0,124,0,0,0,124,0,0, + 0,124,15,224,0,124,63,248,0,124,255,254,0,124,255,255, + 0,125,255,255,128,127,224,127,128,127,192,31,192,255,128,15, + 192,255,0,7,192,255,0,7,224,254,0,7,224,254,0,7, + 224,254,0,3,224,254,0,3,224,254,0,3,224,254,0,7, + 224,254,0,7,224,126,0,7,224,127,0,7,192,127,0,15, + 192,63,128,15,192,31,192,63,128,31,255,255,0,15,255,255, + 0,7,255,254,0,1,255,248,0,0,127,224,0,26,42,168, + 32,3,0,255,255,255,192,255,255,255,192,255,255,255,192,255, + 255,255,192,255,255,255,192,0,0,7,192,0,0,15,192,0, + 0,15,128,0,0,31,128,0,0,31,128,0,0,31,0,0, + 0,63,0,0,0,63,0,0,0,126,0,0,0,126,0,0, + 0,124,0,0,0,252,0,0,0,252,0,0,1,248,0,0, + 1,248,0,0,1,248,0,0,3,240,0,0,3,240,0,0, + 7,224,0,0,7,224,0,0,15,224,0,0,15,192,0,0, + 15,192,0,0,31,128,0,0,31,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,127,0,0,0,126,0,0,0, + 254,0,0,0,252,0,0,0,252,0,0,1,252,0,0,1, + 248,0,0,3,248,0,0,3,240,0,0,27,42,168,32,2, + 1,0,255,224,0,3,255,252,0,15,255,254,0,31,255,255, + 0,63,255,255,128,63,128,63,192,127,0,31,192,126,0,15, + 192,126,0,7,192,126,0,7,192,124,0,7,192,124,0,7, + 192,126,0,7,192,62,0,15,192,63,0,15,128,31,128,31, + 0,15,224,127,0,7,255,254,0,3,255,248,0,0,255,240, + 0,3,255,248,0,15,255,254,0,31,224,127,0,63,128,31, + 128,62,0,15,192,126,0,7,192,124,0,7,224,252,0,3, + 224,252,0,3,224,248,0,3,224,248,0,3,224,252,0,3, + 224,252,0,3,224,252,0,7,224,254,0,7,224,127,0,15, + 224,127,128,31,192,63,255,255,128,31,255,255,128,15,255,255, + 0,3,255,252,0,0,255,240,0,27,42,168,32,3,1,1, + 255,240,0,7,255,252,0,15,255,254,0,31,255,255,0,63, + 255,255,128,63,128,63,128,126,0,31,192,126,0,15,192,252, + 0,15,192,252,0,7,224,252,0,7,224,248,0,7,224,248, + 0,7,224,248,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,224,124,0,15,224,126,0,31,224,63,0,63,224,63, + 192,123,224,31,255,243,224,15,255,243,224,3,255,195,224,0, + 255,7,224,0,0,7,224,0,0,7,224,0,0,7,224,0, + 0,7,192,0,0,7,192,0,0,7,192,124,0,15,192,124, + 0,15,128,126,0,31,128,62,0,31,128,63,0,63,0,63, + 128,255,0,31,255,254,0,31,255,252,0,15,255,248,0,7, + 255,240,0,1,255,192,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--68-680-72-72-P-317-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 49 + Calculated Max Values w=41 h=54 x=14 y=23 dx=69 dy= 0 ascent=50 len=250 + Font Bounding box w=92 h=89 x=-5 y=-18 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =49 descent= 0 + X Font ascent =49 descent= 0 + Max Font ascent =50 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur49n[2643] U8G_SECTION(".progmem.u8g_font_fur49n") = { + 0,92,89,251,238,49,0,0,0,0,42,57,0,50,247,49, + 0,27,26,104,45,9,23,0,192,96,0,3,192,120,0,15, + 192,126,0,7,224,252,0,3,224,248,0,1,241,240,0,1, + 241,240,0,0,251,224,0,0,123,192,0,0,59,128,0,224, + 63,128,224,255,255,255,224,255,255,255,224,255,255,255,224,255, + 159,63,224,128,63,128,32,0,123,192,0,0,123,192,0,0, + 241,224,0,1,241,240,0,3,241,248,0,3,224,248,0,7, + 224,252,0,15,192,124,0,3,192,120,0,0,128,32,0,41, + 41,246,69,14,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,255,255,255,255,255,128,255,255,255, + 255,255,128,255,255,255,255,255,128,255,255,255,255,255,128,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,12,17,34,19,3, + 247,15,240,15,240,15,224,15,224,31,224,31,192,31,192,31, + 128,63,128,63,0,63,0,62,0,126,0,126,0,124,0,124, + 0,248,0,16,6,12,22,3,14,255,255,255,255,255,255,255, + 255,255,255,255,255,7,8,8,19,7,0,254,254,254,254,254, + 254,254,254,21,54,162,27,3,252,0,0,248,0,0,240,0, + 1,240,0,1,240,0,1,240,0,1,224,0,3,224,0,3, + 224,0,3,192,0,7,192,0,7,192,0,7,128,0,15,128, + 0,15,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,124,0,0,120,0,0,248,0,0,248,0,0,240,0, + 1,240,0,1,240,0,1,240,0,1,224,0,3,224,0,3, + 224,0,3,192,0,7,192,0,7,192,0,7,128,0,15,128, + 0,15,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,124,0,0,120,0,0,248,0,0,31,51,204,38,3, + 255,0,31,240,0,0,127,252,0,1,255,255,0,3,255,255, + 128,7,255,255,192,15,255,255,224,31,240,31,240,31,192,15, + 240,63,128,7,248,63,128,3,248,63,0,1,248,127,0,1, + 252,126,0,1,252,126,0,0,252,126,0,0,252,254,0,0, + 252,254,0,0,254,252,0,0,254,252,0,0,254,252,0,0, + 254,252,0,0,126,252,0,0,126,252,0,0,126,252,0,0, + 126,252,0,0,126,252,0,0,126,252,0,0,126,252,0,0, + 126,252,0,0,126,252,0,0,254,254,0,0,254,254,0,0, + 254,254,0,0,254,254,0,0,254,126,0,0,254,126,0,0, + 252,126,0,0,252,127,0,1,252,127,0,1,252,63,0,1, + 252,63,128,3,248,63,128,3,248,31,192,7,248,31,224,15, + 240,15,248,63,240,15,255,255,224,7,255,255,192,3,255,255, + 128,1,255,255,0,0,127,252,0,0,15,240,0,16,49,98, + 38,9,0,0,127,0,255,1,255,3,255,7,255,31,255,63, + 255,127,255,255,255,255,63,252,63,240,63,192,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,29,50,200,38,4,0,0,31,224,0,0, + 255,252,0,3,255,255,0,7,255,255,128,15,255,255,192,31, + 255,255,224,31,240,31,224,63,224,7,240,63,192,3,240,63, + 128,3,248,127,128,3,248,127,0,1,248,127,0,1,248,127, + 0,1,248,127,0,1,248,0,0,1,248,0,0,1,248,0, + 0,3,248,0,0,3,248,0,0,7,240,0,0,7,240,0, + 0,15,224,0,0,31,224,0,0,63,192,0,0,127,128,0, + 0,127,0,0,0,255,0,0,1,254,0,0,3,252,0,0, + 7,248,0,0,15,240,0,0,31,240,0,0,63,224,0,0, + 127,192,0,0,127,128,0,0,255,0,0,1,254,0,0,3, + 252,0,0,7,248,0,0,15,248,0,0,31,240,0,0,63, + 224,0,0,127,192,0,0,255,128,0,0,255,0,0,0,255, + 255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255, + 255,255,248,31,51,204,38,3,255,0,31,240,0,0,255,254, + 0,1,255,255,128,3,255,255,192,7,255,255,224,15,248,31, + 240,31,224,7,248,31,192,3,248,63,192,1,252,63,128,0, + 252,63,128,0,252,127,0,0,252,127,0,0,252,127,0,0, + 252,0,0,0,252,0,0,0,252,0,0,1,252,0,0,1, + 248,0,0,3,248,0,0,7,240,0,0,31,224,0,0,255, + 192,0,31,255,128,0,31,254,0,0,31,252,0,0,31,255, + 0,0,31,255,192,0,0,255,224,0,0,15,240,0,0,7, + 248,0,0,3,252,0,0,1,252,0,0,0,254,0,0,0, + 254,0,0,0,126,0,0,0,126,0,0,0,126,254,0,0, + 126,254,0,0,126,255,0,0,126,255,0,0,254,127,0,0, + 254,127,128,1,252,127,128,3,252,63,224,7,248,31,248,31, + 240,15,255,255,224,7,255,255,192,3,255,255,128,0,255,254, + 0,0,31,240,0,34,50,250,38,2,0,0,0,15,240,0, + 0,0,15,240,0,0,0,31,240,0,0,0,63,240,0,0, + 0,63,240,0,0,0,127,240,0,0,0,255,240,0,0,0, + 255,240,0,0,1,251,240,0,0,3,251,240,0,0,3,243, + 240,0,0,7,227,240,0,0,15,227,240,0,0,15,195,240, + 0,0,31,131,240,0,0,63,131,240,0,0,63,3,240,0, + 0,126,3,240,0,0,254,3,240,0,1,252,3,240,0,1, + 248,3,240,0,3,248,3,240,0,7,240,3,240,0,7,224, + 3,240,0,15,224,3,240,0,31,192,3,240,0,31,128,3, + 240,0,63,128,3,240,0,127,0,3,240,0,126,0,3,240, + 0,252,0,3,240,0,252,0,3,240,0,255,255,255,255,192, + 255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,255, + 255,255,255,192,255,255,255,255,192,0,0,3,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3, + 240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240, + 0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0, + 0,0,3,240,0,30,50,200,38,4,255,63,255,255,224,63, + 255,255,224,63,255,255,224,63,255,255,224,63,255,255,224,63, + 255,255,224,63,0,0,0,63,0,0,0,63,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,3,248,0,63, + 31,254,0,63,63,255,128,63,127,255,192,63,255,255,224,63, + 248,31,224,63,224,7,240,63,192,3,240,63,128,3,248,63, + 0,1,248,63,0,1,252,62,0,1,252,0,0,0,252,0, + 0,0,252,0,0,0,252,0,0,0,252,0,0,0,252,0, + 0,0,252,0,0,0,252,0,0,0,252,0,0,0,252,254, + 0,1,252,254,0,1,248,254,0,1,248,255,0,3,248,127, + 0,3,240,127,128,7,224,127,192,15,224,63,240,63,192,31, + 255,255,128,15,255,255,0,7,255,254,0,1,255,248,0,0, + 31,224,0,31,51,204,38,3,255,0,7,248,0,0,63,255, + 0,0,255,255,192,1,255,255,224,3,255,255,240,7,252,15, + 240,15,248,7,248,31,224,3,248,31,192,1,252,63,192,1, + 252,63,128,0,252,63,0,0,252,127,0,0,252,127,0,0, + 0,127,0,0,0,126,0,0,0,126,0,0,0,126,0,0, + 0,126,0,0,0,126,0,0,0,126,7,252,0,126,31,255, + 0,126,63,255,192,126,127,255,224,126,255,255,240,127,252,15, + 248,127,240,3,248,255,192,1,252,255,192,1,252,255,128,0, + 254,255,128,0,254,255,0,0,126,255,0,0,126,255,0,0, + 126,255,0,0,126,255,0,0,126,255,0,0,126,255,0,0, + 126,127,0,0,126,127,0,0,126,127,128,0,254,63,128,0, + 252,63,128,1,252,31,192,1,252,31,224,3,248,15,248,15, + 240,7,255,255,224,3,255,255,192,1,255,255,128,0,127,254, + 0,0,15,248,0,30,49,196,38,4,0,255,255,255,252,255, + 255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,0, + 0,0,252,0,0,1,252,0,0,1,252,0,0,1,248,0, + 0,3,248,0,0,3,240,0,0,7,240,0,0,7,240,0, + 0,7,224,0,0,15,224,0,0,15,224,0,0,31,192,0, + 0,31,192,0,0,31,128,0,0,63,128,0,0,63,128,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,254,0,0, + 0,254,0,0,0,254,0,0,1,252,0,0,1,252,0,0, + 3,248,0,0,3,248,0,0,3,248,0,0,7,240,0,0, + 7,240,0,0,15,240,0,0,15,224,0,0,15,224,0,0, + 31,192,0,0,31,192,0,0,63,192,0,0,63,128,0,0, + 63,128,0,0,127,128,0,0,127,0,0,0,127,0,0,0, + 254,0,0,0,254,0,0,1,254,0,0,1,252,0,0,32, + 51,204,38,3,255,0,15,248,0,0,127,255,0,1,255,255, + 128,3,255,255,224,7,255,255,240,15,248,31,248,31,224,7, + 252,31,192,1,252,63,128,1,252,63,128,0,254,63,0,0, + 254,63,0,0,254,63,0,0,126,63,0,0,126,63,0,0, + 126,63,0,0,254,63,0,0,252,31,128,0,252,31,128,1, + 248,15,192,3,248,15,224,7,240,7,248,31,224,3,255,255, + 192,0,255,255,128,0,127,254,0,1,255,255,128,3,255,255, + 192,15,248,15,240,31,192,3,248,31,128,1,248,63,0,0, + 252,127,0,0,126,126,0,0,126,126,0,0,126,254,0,0, + 127,252,0,0,63,252,0,0,63,252,0,0,63,254,0,0, + 127,254,0,0,127,254,0,0,127,254,0,0,127,127,0,0, + 254,127,128,1,254,63,192,3,252,63,240,15,252,31,255,255, + 248,15,255,255,240,3,255,255,192,0,255,255,0,0,15,248, + 0,31,51,204,38,3,255,0,31,248,0,0,255,255,0,3, + 255,255,192,7,255,255,224,15,255,255,240,31,240,31,248,63, + 192,7,248,63,128,3,252,127,0,1,252,126,0,1,252,126, + 0,0,254,254,0,0,254,254,0,0,254,252,0,0,254,252, + 0,0,254,252,0,0,254,252,0,0,254,252,0,0,254,254, + 0,0,254,254,0,0,254,254,0,0,254,126,0,1,254,127, + 0,1,254,63,128,3,254,63,192,7,254,31,240,31,254,31, + 255,255,126,15,255,254,126,7,255,252,126,1,255,248,126,0, + 63,224,126,0,0,0,126,0,0,0,126,0,0,0,126,0, + 0,0,254,0,0,0,252,0,0,0,252,0,0,0,252,126, + 0,0,252,127,0,1,248,63,0,1,248,63,0,3,248,63, + 0,7,240,63,128,7,240,31,192,31,224,31,224,63,224,15, + 255,255,192,7,255,255,128,3,255,255,0,1,255,252,0,0, + 63,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y=11 dx=16 dy= 0 ascent=16 len=34 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11[4313] U8G_SECTION(".progmem.u8g_font_gdb11") = { + 0,27,26,247,250,11,2,67,5,71,32,255,252,16,251,14, + 252,0,0,0,4,0,0,3,14,14,6,1,255,96,224,96, + 96,96,96,96,64,64,64,0,224,224,192,6,6,6,8,1, + 7,108,236,204,76,76,76,8,10,10,9,1,1,26,18,22, + 127,36,36,254,72,72,216,7,14,14,9,1,254,16,16,126, + 150,144,240,120,30,18,146,210,252,16,16,11,11,22,13,1, + 0,112,64,144,128,137,128,139,0,146,0,85,192,42,32,26, + 32,50,32,34,32,65,192,11,13,26,12,1,0,28,0,102, + 0,70,0,70,0,124,0,120,0,113,224,248,128,252,128,222, + 128,207,0,195,128,125,224,3,6,6,5,1,7,96,224,192, + 64,64,64,4,17,17,6,1,253,16,32,96,64,64,192,192, + 192,192,192,192,192,192,64,96,32,16,4,17,17,6,1,253, + 128,64,96,32,48,48,48,48,48,48,48,48,32,32,96,64, + 128,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224,3,9,9,5,1,255,224,224,192, + 0,0,0,224,224,192,3,11,11,5,1,253,224,224,192,0, + 0,0,96,224,96,64,192,8,6,6,8,0,2,3,30,112, + 240,30,7,8,4,4,8,0,3,127,128,0,255,8,6,6, + 8,0,2,96,188,15,14,120,192,7,14,14,8,1,255,60, + 198,198,134,12,8,16,32,32,32,0,56,56,56,14,16,32, + 16,1,252,7,192,31,240,48,56,64,8,71,68,136,196,152, + 196,152,196,152,196,152,200,159,248,206,224,192,32,112,112,63, + 192,31,128,11,11,22,11,0,0,6,0,14,0,14,0,11, + 0,19,0,19,0,63,128,33,128,33,192,96,192,241,224,9, + 11,22,11,1,0,254,0,99,0,99,0,99,0,126,0,99, + 128,97,128,97,128,97,128,97,128,254,0,8,11,11,10,1, + 0,31,99,64,192,192,192,192,192,192,97,62,9,11,22,11, + 1,0,254,0,99,0,97,0,97,128,97,128,97,128,97,128, + 97,128,97,0,99,0,252,0,9,11,22,9,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,11,22,9,0,0,255,128,49,0,49,0, + 48,0,48,0,62,0,48,0,48,0,48,0,48,0,248,0, + 11,11,22,11,0,0,15,192,49,192,64,0,192,0,192,0, + 192,0,193,224,192,192,64,192,112,192,31,128,10,11,22,12, + 1,0,243,192,97,128,97,128,97,128,97,128,127,128,97,128, + 97,128,97,128,97,128,243,192,4,11,11,6,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,14,14,6,254,253,62, + 12,12,12,12,12,12,12,12,12,12,8,136,240,10,11,22, + 11,1,0,243,192,99,0,102,0,108,0,104,0,120,0,108, + 0,102,0,103,0,99,128,241,192,8,11,11,9,1,0,240, + 96,96,96,96,96,96,96,97,97,255,15,11,22,15,0,0, + 112,28,56,56,56,56,56,120,44,88,44,88,38,216,38,152, + 35,152,35,24,243,62,10,11,22,12,1,0,225,192,96,128, + 112,128,120,128,92,128,76,128,70,128,71,128,67,128,65,128, + 225,128,10,11,22,11,0,0,30,0,33,128,64,128,192,192, + 192,192,192,192,192,192,192,192,64,128,97,0,30,0,8,11, + 11,10,1,0,254,99,99,99,98,124,96,96,96,96,240,12, + 14,28,11,0,253,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,3,144,1,240,0, + 96,10,11,22,11,1,0,254,0,99,0,99,0,99,0,98, + 0,124,0,100,0,102,0,99,0,99,128,241,192,7,11,11, + 9,1,0,62,198,128,192,112,60,6,2,130,196,248,10,11, + 22,10,0,0,255,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,30,0,10,11,22,12,1,0, + 241,192,96,128,96,128,96,128,96,128,96,128,96,128,96,128, + 96,128,49,0,30,0,12,11,22,12,0,0,248,240,112,64, + 48,64,48,128,24,128,25,128,29,0,13,0,15,0,6,0, + 6,0,15,11,22,15,0,0,241,30,97,132,49,140,51,200, + 50,200,50,200,28,120,28,112,28,48,24,48,8,48,11,11, + 22,11,0,0,249,224,48,128,57,128,31,0,14,0,6,0, + 15,0,27,0,49,128,33,192,243,224,10,11,22,11,1,0, + 227,192,113,128,49,0,59,0,26,0,14,0,12,0,12,0, + 12,0,12,0,30,0,9,11,22,10,0,0,127,128,67,0, + 71,0,6,0,14,0,12,0,24,0,56,0,48,128,112,128, + 255,128,4,17,17,6,1,253,240,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,240,8,17,17,8,0,253,192, + 64,96,32,48,48,16,24,24,8,12,4,6,6,2,3,3, + 4,17,17,6,1,253,240,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,240,7,9,9,9,1,5,16,48,56, + 40,76,76,68,134,130,8,1,1,9,0,254,255,4,4,4, + 6,0,9,192,96,32,16,8,8,8,9,1,0,60,102,198, + 30,102,198,207,118,9,14,28,10,0,0,96,0,224,0,96, + 0,96,0,96,0,96,0,103,0,127,128,112,128,96,128,96, + 128,97,0,97,0,62,0,7,8,8,8,1,0,62,70,196, + 192,192,192,66,124,9,14,28,10,1,0,3,0,7,0,3, + 0,3,0,3,0,3,0,63,0,67,0,195,0,195,0,195, + 0,195,0,127,128,59,0,7,8,8,9,1,0,60,70,198, + 254,192,192,98,60,7,13,13,6,1,0,30,36,96,96,96, + 252,96,96,96,96,96,96,248,10,12,24,10,0,252,62,192, + 193,0,129,0,193,0,62,0,112,0,254,0,255,128,227,128, + 192,128,193,0,62,0,9,14,28,10,1,0,96,0,224,0, + 96,0,96,0,96,0,96,0,102,0,127,0,115,0,99,0, + 99,0,99,0,99,0,247,128,4,12,12,6,1,0,48,112, + 0,0,96,224,96,96,96,96,96,240,7,16,16,5,253,252, + 14,14,0,0,28,12,12,12,12,12,12,12,12,140,248,224, + 9,14,28,10,1,0,96,0,224,0,96,0,96,0,96,0, + 96,0,103,128,102,0,108,0,120,0,108,0,102,0,103,0, + 243,128,4,14,14,5,1,0,96,224,96,96,96,96,96,96, + 96,96,96,96,96,240,14,8,16,15,1,0,110,112,255,248, + 99,24,99,24,99,24,99,24,99,24,247,188,9,8,16,10, + 1,0,110,0,255,0,115,0,99,0,99,0,99,0,99,0, + 247,128,7,8,8,9,1,0,56,68,198,198,198,198,68,56, + 8,12,12,10,1,252,110,255,97,97,97,97,98,124,96,96, + 96,240,9,12,24,10,1,252,61,0,67,0,195,0,195,0, + 195,0,195,0,127,0,59,0,3,0,3,0,3,0,7,128, + 8,8,8,8,0,0,119,255,50,50,48,48,48,248,6,8, + 8,8,1,0,240,152,144,240,60,132,196,248,6,11,11,7, + 0,0,32,96,96,252,96,96,96,96,100,124,48,10,8,16, + 10,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,9,8,16,9,0,0,243,128,97,0,51,0,50, + 0,30,0,28,0,28,0,8,0,13,8,16,13,0,0,242, + 56,99,16,51,32,53,160,53,160,24,224,24,192,24,192,9, + 8,16,9,0,0,251,128,115,0,62,0,28,0,28,0,22, + 0,35,0,247,128,10,12,24,9,255,252,121,192,48,128,25, + 128,25,0,15,0,14,0,14,0,6,0,4,0,12,0,120, + 0,240,0,7,8,8,8,1,0,254,140,152,56,48,98,226, + 254,6,17,17,5,0,253,8,28,48,48,48,48,48,48,224, + 48,48,48,48,48,48,24,8,1,19,19,4,2,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,5,255,253,64,96,48,48,48,48,48,48,28, + 48,48,48,48,48,48,96,192,8,2,2,9,0,4,57,206, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,4,0,0,3,13,13,6,1,251,96,224,64, + 64,64,64,96,96,96,96,96,96,192,7,11,11,9,1,0, + 16,24,126,148,144,144,144,210,124,16,16,8,11,11,9,1, + 0,30,34,98,96,96,252,96,96,97,127,158,7,7,7,9, + 1,2,132,126,68,68,68,68,254,10,11,22,9,255,0,227, + 192,113,0,51,0,58,0,26,0,30,0,12,0,127,128,12, + 0,12,0,30,0,1,19,19,4,2,252,128,128,128,128,128, + 128,128,128,0,0,0,128,128,128,128,128,128,128,128,7,13, + 13,9,1,0,112,152,144,240,252,158,130,98,60,12,68,100, + 124,6,3,3,7,0,9,196,204,140,11,12,24,13,1,0, + 31,0,32,128,79,64,147,32,146,32,144,32,144,32,144,32, + 137,32,78,64,32,128,31,0,5,6,6,5,0,5,112,208, + 176,144,248,240,7,8,8,9,1,0,18,38,108,220,220,108, + 38,18,7,4,4,9,1,1,254,2,2,2,6,1,1,6, + 0,4,252,6,7,7,6,0,6,120,72,188,188,180,104,120, + 7,1,1,9,1,11,254,4,4,4,6,1,7,112,144,144, + 224,7,8,8,7,0,1,16,16,254,16,16,16,0,254,4, + 7,7,6,1,5,112,208,16,32,64,144,240,4,7,7,6, + 1,5,48,80,144,48,16,144,224,4,4,4,6,2,9,112, + 96,192,128,9,12,24,10,1,252,227,0,99,0,99,0,99, + 0,99,0,99,0,127,128,91,0,64,0,64,0,96,0,112, + 0,10,13,26,11,0,254,63,192,98,128,194,128,194,128,98, + 128,62,128,2,128,2,128,2,128,2,128,2,128,2,128,7, + 192,3,3,3,4,0,5,224,224,192,2,4,4,4,2,252, + 192,64,64,192,4,7,7,6,1,5,32,224,32,32,32,32, + 240,4,6,6,5,0,5,96,144,144,144,96,240,8,8,8, + 9,1,0,136,76,102,55,55,102,76,136,10,11,22,11,1, + 0,192,192,65,128,65,0,66,0,68,0,172,0,8,128,19, + 128,50,128,99,192,197,192,9,11,22,11,1,0,192,128,65, + 0,66,0,66,0,68,0,168,0,25,128,18,128,33,0,98, + 128,199,128,11,11,22,11,0,0,96,96,80,192,32,128,17, + 0,146,0,230,0,4,64,9,192,25,64,49,224,98,224,6, + 13,13,8,1,251,56,56,48,16,16,16,32,96,192,196,204, + 204,112,11,16,32,11,0,0,16,0,24,0,12,0,6,0, + 0,0,6,0,14,0,14,0,11,0,19,0,19,0,63,128, + 33,128,33,192,96,192,241,224,11,16,32,11,0,0,1,0, + 3,128,6,0,12,0,0,0,6,0,14,0,14,0,11,0, + 19,0,19,0,63,128,33,128,33,192,96,192,241,224,11,16, + 32,11,0,0,4,0,14,0,31,0,17,0,0,128,6,0, + 14,0,14,0,11,0,19,0,19,0,63,128,33,128,33,192, + 96,192,241,224,11,15,30,11,0,0,12,128,31,128,39,0, + 0,0,6,0,14,0,14,0,11,0,19,0,19,0,63,128, + 33,128,33,192,96,192,241,224,11,15,30,11,0,0,16,128, + 49,128,49,128,0,0,6,0,14,0,14,0,11,0,19,0, + 19,0,63,128,33,128,33,192,96,192,241,224,11,16,32,11, + 0,0,6,0,10,0,10,0,14,0,0,0,6,0,14,0, + 14,0,11,0,19,0,19,0,63,128,33,128,33,192,96,192, + 241,224,14,11,22,15,0,0,15,252,7,140,5,136,13,128, + 9,128,31,248,25,128,17,128,49,132,33,132,243,252,9,15, + 30,10,0,252,31,0,99,0,64,0,192,0,192,0,192,0, + 192,0,192,0,96,0,112,128,31,0,4,0,2,0,6,0, + 28,0,9,16,32,9,0,0,32,0,48,0,24,0,4,0, + 0,0,255,0,49,0,49,0,48,0,48,0,63,0,48,0, + 48,0,48,128,48,128,255,128,9,16,32,9,0,0,2,0, + 7,0,14,0,24,0,0,0,255,0,49,0,49,0,48,0, + 48,0,63,0,48,0,48,0,48,128,48,128,255,128,9,16, + 32,9,0,0,8,0,28,0,30,0,35,0,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,15,30,9,0,0,33,0,97,0,99,0, + 0,0,255,0,49,0,49,0,48,0,48,0,63,0,48,0, + 48,0,48,128,48,128,255,128,5,16,16,6,0,0,64,224, + 112,16,8,120,48,48,48,48,48,48,48,48,48,120,5,16, + 16,6,1,0,16,56,112,192,0,240,96,96,96,96,96,96, + 96,96,96,240,6,16,16,6,0,0,48,112,120,204,0,120, + 48,48,48,48,48,48,48,48,48,120,7,15,15,6,255,0, + 66,194,194,0,60,24,24,24,24,24,24,24,24,24,60,9, + 11,22,11,1,0,254,0,99,0,97,0,97,128,97,128,249, + 128,97,128,97,128,97,0,99,0,252,0,10,15,30,12,1, + 0,25,0,63,0,46,0,0,0,225,192,96,128,112,128,120, + 128,92,128,76,128,70,128,71,128,67,128,65,128,225,128,10, + 16,32,11,0,0,16,0,24,0,12,0,2,0,0,0,30, + 0,33,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,0,30,0,10,16,32,11,0,0,1,0,3,128,6, + 0,12,0,0,0,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,10,16,32,11,0, + 0,4,0,14,0,31,0,17,128,0,0,30,0,33,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,0,30, + 0,10,15,30,11,0,0,12,128,31,128,39,0,0,0,30, + 0,33,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,0,30,0,10,15,30,11,0,0,16,128,49,128,49, + 128,0,0,30,0,33,128,64,128,192,192,192,192,192,192,192, + 192,192,192,64,128,97,0,30,0,6,6,6,8,1,2,140, + 216,112,112,216,140,10,11,22,11,0,0,31,192,35,128,99, + 128,195,192,198,192,204,192,216,192,240,192,113,128,113,0,254, + 0,10,16,32,12,1,0,16,0,56,0,28,0,6,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,49,0,30,0,10,16,32,12,1,0,2,0,7, + 0,14,0,24,0,0,0,241,192,96,128,96,128,96,128,96, + 128,96,128,96,128,96,128,96,128,49,0,30,0,10,16,32, + 12,1,0,12,0,14,0,30,0,51,0,0,0,241,192,96, + 128,96,128,96,128,96,128,96,128,96,128,96,128,96,128,49, + 0,30,0,10,15,30,12,1,0,33,0,33,128,33,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,49,0,30,0,10,16,32,11,1,0,4,0,7, + 0,12,0,24,0,0,0,227,192,113,128,49,0,59,0,26, + 0,14,0,12,0,12,0,12,0,12,0,30,0,8,11,11, + 10,1,0,240,96,126,99,99,99,99,98,124,96,240,9,13, + 26,11,1,0,14,0,49,128,33,128,97,128,97,0,102,0, + 104,0,100,0,103,0,97,128,104,128,104,128,239,0,8,13, + 13,9,1,0,96,48,16,8,0,60,102,198,30,102,198,207, + 118,8,13,13,9,1,0,12,28,24,48,0,60,102,198,30, + 102,198,207,118,8,13,13,9,1,0,16,56,108,198,0,60, + 102,198,30,102,198,207,118,8,12,12,9,1,0,114,252,0, + 0,60,102,198,30,102,198,207,118,8,12,12,9,1,0,194, + 198,134,0,60,102,198,30,102,198,207,118,8,13,13,9,1, + 0,24,40,40,48,0,60,102,198,30,102,198,207,118,11,8, + 16,13,1,0,61,192,102,32,196,32,63,224,68,0,198,32, + 255,192,115,128,7,12,12,8,1,252,62,70,196,192,192,192, + 102,56,16,8,24,48,7,13,13,9,1,0,96,48,24,8, + 0,60,70,198,254,192,192,98,60,7,13,13,9,1,0,12, + 14,24,48,0,60,70,198,254,192,192,98,60,7,13,13,9, + 1,0,24,56,108,66,0,60,70,198,254,192,192,98,60,7, + 12,12,9,1,0,66,198,194,0,60,70,198,254,192,192,98, + 60,5,13,13,5,0,0,224,96,48,16,0,48,112,48,48, + 48,48,48,120,5,13,13,5,1,0,48,56,96,64,128,96, + 224,96,96,96,96,96,240,6,13,13,5,0,0,48,112,216, + 132,0,48,112,48,48,48,48,48,120,7,12,12,5,255,0, + 66,194,194,0,24,56,24,24,24,24,24,60,7,13,13,9, + 1,0,112,62,56,108,4,62,78,198,198,198,196,76,56,9, + 12,24,10,1,0,57,0,126,0,0,0,0,0,110,0,255, + 0,115,0,99,0,99,0,99,0,99,0,247,128,7,13,13, + 9,1,0,112,48,24,8,0,56,68,198,198,198,198,68,56, + 7,13,13,9,1,0,14,12,24,16,0,56,68,198,198,198, + 198,68,56,7,13,13,9,1,0,24,60,44,66,0,56,68, + 198,198,198,198,68,56,7,12,12,9,1,0,50,124,128,0, + 56,68,198,198,198,198,68,56,7,12,12,9,1,0,66,194, + 66,0,56,68,198,198,198,198,68,56,7,6,6,8,0,2, + 16,16,0,126,144,16,7,9,9,9,1,0,2,58,68,206, + 214,230,230,68,248,10,13,26,10,0,0,24,0,56,0,12, + 0,4,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,13,26,10,0,0,7,0,6,0,12, + 0,8,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,13,26,10,0,0,12,0,30,0,18, + 0,33,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,12,24,10,0,0,33,0,33,128,33, + 0,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,10,17,34,9,255,252,3,0,3,128,6,0,4, + 0,8,0,121,192,48,128,25,128,25,0,15,0,14,0,14, + 0,6,0,4,0,12,0,120,0,240,0,8,18,18,10,1, + 252,96,224,96,96,96,96,110,127,97,97,97,97,98,124,96, + 96,96,240,10,16,32,9,255,252,16,128,48,128,48,128,0, + 0,121,192,48,128,25,128,25,0,15,0,14,0,14,0,6, + 0,4,0,12,0,120,0,240,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 8 h=17 x= 1 y= 6 dx=10 dy= 0 ascent=14 len=17 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11n[263] U8G_SECTION(".progmem.u8g_font_gdb11n") = { + 0,27,26,247,250,11,0,0,0,0,42,57,0,14,253,11, + 0,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y= 9 dx=16 dy= 0 ascent=15 len=32 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11r[2001] U8G_SECTION(".progmem.u8g_font_gdb11r") = { + 0,27,26,247,250,11,2,67,5,71,32,127,252,15,252,14, + 252,0,0,0,4,0,0,3,14,14,6,1,255,96,224,96, + 96,96,96,96,64,64,64,0,224,224,192,6,6,6,8,1, + 7,108,236,204,76,76,76,8,10,10,9,1,1,26,18,22, + 127,36,36,254,72,72,216,7,14,14,9,1,254,16,16,126, + 150,144,240,120,30,18,146,210,252,16,16,11,11,22,13,1, + 0,112,64,144,128,137,128,139,0,146,0,85,192,42,32,26, + 32,50,32,34,32,65,192,11,13,26,12,1,0,28,0,102, + 0,70,0,70,0,124,0,120,0,113,224,248,128,252,128,222, + 128,207,0,195,128,125,224,3,6,6,5,1,7,96,224,192, + 64,64,64,4,17,17,6,1,253,16,32,96,64,64,192,192, + 192,192,192,192,192,192,64,96,32,16,4,17,17,6,1,253, + 128,64,96,32,48,48,48,48,48,48,48,48,32,32,96,64, + 128,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224,3,9,9,5,1,255,224,224,192, + 0,0,0,224,224,192,3,11,11,5,1,253,224,224,192,0, + 0,0,96,224,96,64,192,8,6,6,8,0,2,3,30,112, + 240,30,7,8,4,4,8,0,3,127,128,0,255,8,6,6, + 8,0,2,96,188,15,14,120,192,7,14,14,8,1,255,60, + 198,198,134,12,8,16,32,32,32,0,56,56,56,14,16,32, + 16,1,252,7,192,31,240,48,56,64,8,71,68,136,196,152, + 196,152,196,152,196,152,200,159,248,206,224,192,32,112,112,63, + 192,31,128,11,11,22,11,0,0,6,0,14,0,14,0,11, + 0,19,0,19,0,63,128,33,128,33,192,96,192,241,224,9, + 11,22,11,1,0,254,0,99,0,99,0,99,0,126,0,99, + 128,97,128,97,128,97,128,97,128,254,0,8,11,11,10,1, + 0,31,99,64,192,192,192,192,192,192,97,62,9,11,22,11, + 1,0,254,0,99,0,97,0,97,128,97,128,97,128,97,128, + 97,128,97,0,99,0,252,0,9,11,22,9,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,11,22,9,0,0,255,128,49,0,49,0, + 48,0,48,0,62,0,48,0,48,0,48,0,48,0,248,0, + 11,11,22,11,0,0,15,192,49,192,64,0,192,0,192,0, + 192,0,193,224,192,192,64,192,112,192,31,128,10,11,22,12, + 1,0,243,192,97,128,97,128,97,128,97,128,127,128,97,128, + 97,128,97,128,97,128,243,192,4,11,11,6,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,14,14,6,254,253,62, + 12,12,12,12,12,12,12,12,12,12,8,136,240,10,11,22, + 11,1,0,243,192,99,0,102,0,108,0,104,0,120,0,108, + 0,102,0,103,0,99,128,241,192,8,11,11,9,1,0,240, + 96,96,96,96,96,96,96,97,97,255,15,11,22,15,0,0, + 112,28,56,56,56,56,56,120,44,88,44,88,38,216,38,152, + 35,152,35,24,243,62,10,11,22,12,1,0,225,192,96,128, + 112,128,120,128,92,128,76,128,70,128,71,128,67,128,65,128, + 225,128,10,11,22,11,0,0,30,0,33,128,64,128,192,192, + 192,192,192,192,192,192,192,192,64,128,97,0,30,0,8,11, + 11,10,1,0,254,99,99,99,98,124,96,96,96,96,240,12, + 14,28,11,0,253,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,3,144,1,240,0, + 96,10,11,22,11,1,0,254,0,99,0,99,0,99,0,98, + 0,124,0,100,0,102,0,99,0,99,128,241,192,7,11,11, + 9,1,0,62,198,128,192,112,60,6,2,130,196,248,10,11, + 22,10,0,0,255,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,30,0,10,11,22,12,1,0, + 241,192,96,128,96,128,96,128,96,128,96,128,96,128,96,128, + 96,128,49,0,30,0,12,11,22,12,0,0,248,240,112,64, + 48,64,48,128,24,128,25,128,29,0,13,0,15,0,6,0, + 6,0,15,11,22,15,0,0,241,30,97,132,49,140,51,200, + 50,200,50,200,28,120,28,112,28,48,24,48,8,48,11,11, + 22,11,0,0,249,224,48,128,57,128,31,0,14,0,6,0, + 15,0,27,0,49,128,33,192,243,224,10,11,22,11,1,0, + 227,192,113,128,49,0,59,0,26,0,14,0,12,0,12,0, + 12,0,12,0,30,0,9,11,22,10,0,0,127,128,67,0, + 71,0,6,0,14,0,12,0,24,0,56,0,48,128,112,128, + 255,128,4,17,17,6,1,253,240,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,240,8,17,17,8,0,253,192, + 64,96,32,48,48,16,24,24,8,12,4,6,6,2,3,3, + 4,17,17,6,1,253,240,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,240,7,9,9,9,1,5,16,48,56, + 40,76,76,68,134,130,8,1,1,9,0,254,255,4,4,4, + 6,0,9,192,96,32,16,8,8,8,9,1,0,60,102,198, + 30,102,198,207,118,9,14,28,10,0,0,96,0,224,0,96, + 0,96,0,96,0,96,0,103,0,127,128,112,128,96,128,96, + 128,97,0,97,0,62,0,7,8,8,8,1,0,62,70,196, + 192,192,192,66,124,9,14,28,10,1,0,3,0,7,0,3, + 0,3,0,3,0,3,0,63,0,67,0,195,0,195,0,195, + 0,195,0,127,128,59,0,7,8,8,9,1,0,60,70,198, + 254,192,192,98,60,7,13,13,6,1,0,30,36,96,96,96, + 252,96,96,96,96,96,96,248,10,12,24,10,0,252,62,192, + 193,0,129,0,193,0,62,0,112,0,254,0,255,128,227,128, + 192,128,193,0,62,0,9,14,28,10,1,0,96,0,224,0, + 96,0,96,0,96,0,96,0,102,0,127,0,115,0,99,0, + 99,0,99,0,99,0,247,128,4,12,12,6,1,0,48,112, + 0,0,96,224,96,96,96,96,96,240,7,16,16,5,253,252, + 14,14,0,0,28,12,12,12,12,12,12,12,12,140,248,224, + 9,14,28,10,1,0,96,0,224,0,96,0,96,0,96,0, + 96,0,103,128,102,0,108,0,120,0,108,0,102,0,103,0, + 243,128,4,14,14,5,1,0,96,224,96,96,96,96,96,96, + 96,96,96,96,96,240,14,8,16,15,1,0,110,112,255,248, + 99,24,99,24,99,24,99,24,99,24,247,188,9,8,16,10, + 1,0,110,0,255,0,115,0,99,0,99,0,99,0,99,0, + 247,128,7,8,8,9,1,0,56,68,198,198,198,198,68,56, + 8,12,12,10,1,252,110,255,97,97,97,97,98,124,96,96, + 96,240,9,12,24,10,1,252,61,0,67,0,195,0,195,0, + 195,0,195,0,127,0,59,0,3,0,3,0,3,0,7,128, + 8,8,8,8,0,0,119,255,50,50,48,48,48,248,6,8, + 8,8,1,0,240,152,144,240,60,132,196,248,6,11,11,7, + 0,0,32,96,96,252,96,96,96,96,100,124,48,10,8,16, + 10,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,9,8,16,9,0,0,243,128,97,0,51,0,50, + 0,30,0,28,0,28,0,8,0,13,8,16,13,0,0,242, + 56,99,16,51,32,53,160,53,160,24,224,24,192,24,192,9, + 8,16,9,0,0,251,128,115,0,62,0,28,0,28,0,22, + 0,35,0,247,128,10,12,24,9,255,252,121,192,48,128,25, + 128,25,0,15,0,14,0,14,0,6,0,4,0,12,0,120, + 0,240,0,7,8,8,8,1,0,254,140,152,56,48,98,226, + 254,6,17,17,5,0,253,8,28,48,48,48,48,48,48,224, + 48,48,48,48,48,48,24,8,1,19,19,4,2,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,5,255,253,64,96,48,48,48,48,48,48,28, + 48,48,48,48,48,48,96,192,8,2,2,9,0,4,57,206, + 255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=11 dx=16 dy= 0 ascent=17 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12[4626] U8G_SECTION(".progmem.u8g_font_gdb12") = { + 0,29,28,246,249,12,2,113,5,210,32,255,252,17,251,15, + 252,0,0,0,5,0,0,3,14,14,6,1,0,32,96,96, + 96,96,96,96,96,96,96,0,224,224,192,7,6,6,9,1, + 8,102,236,108,76,68,68,9,11,22,10,1,1,27,0,26, + 0,18,0,127,128,54,0,36,0,36,0,255,0,104,0,72, + 0,88,0,8,15,15,9,0,254,8,8,63,75,74,104,60, + 30,11,137,73,235,126,8,8,12,12,24,14,1,0,112,32, + 144,64,136,128,137,128,139,0,146,0,100,224,13,16,25,16, + 17,16,33,16,96,224,12,13,26,13,1,0,30,0,35,0, + 99,0,99,0,118,0,124,0,120,240,252,64,222,64,207,64, + 199,128,193,192,62,240,3,6,6,5,1,8,96,224,96,64, + 64,64,4,18,18,6,1,253,16,48,96,96,64,192,192,192, + 192,192,192,192,192,192,96,96,48,16,4,18,18,6,1,253, + 128,192,96,96,48,48,48,48,48,48,48,48,48,32,96,96, + 192,128,7,7,7,8,1,7,48,180,222,48,222,148,48,7, + 7,7,8,1,2,16,16,16,254,16,16,16,3,6,6,5, + 1,252,96,224,96,96,64,128,6,1,1,7,0,4,252,3, + 3,3,5,1,0,224,224,192,9,18,36,9,0,253,1,128, + 3,0,3,0,3,0,6,0,6,0,4,0,12,0,12,0, + 24,0,24,0,16,0,48,0,48,0,32,0,96,0,96,0, + 192,0,8,11,11,10,1,0,60,102,66,195,195,195,195,195, + 66,98,60,7,12,12,10,1,0,8,120,152,24,24,24,24, + 24,24,24,24,254,7,11,11,9,1,0,60,102,230,6,4, + 8,16,34,66,126,254,7,11,11,9,1,0,60,102,230,6, + 8,28,6,6,6,140,120,8,12,12,9,0,0,6,14,14, + 22,22,38,102,70,255,6,6,31,7,11,11,10,1,0,126, + 124,64,64,124,134,6,6,6,134,124,8,12,12,10,1,0, + 14,56,112,96,192,254,195,195,195,195,98,60,8,11,11,10, + 1,0,255,254,130,6,4,12,8,24,24,48,96,8,11,11, + 10,1,0,60,102,102,102,124,62,71,195,195,195,60,8,11, + 11,10,1,0,60,70,195,195,195,195,63,2,6,12,112,3, + 9,9,5,1,0,224,224,192,0,0,0,224,224,192,3,13, + 13,5,1,252,224,224,64,0,0,0,0,96,224,96,96,64, + 128,8,7,7,9,0,2,1,15,60,96,248,31,3,8,4, + 4,9,0,3,127,128,0,255,8,7,7,9,0,2,96,248, + 15,7,30,120,192,7,14,14,9,1,0,60,70,198,134,6, + 12,8,16,16,16,0,56,56,56,14,17,34,16,1,252,7, + 192,31,240,56,56,32,8,99,164,68,100,204,100,204,100,204, + 100,204,100,204,104,199,248,103,112,112,8,56,24,31,240,15, + 192,12,12,24,12,0,0,6,0,14,0,15,0,11,0,27, + 0,19,128,17,128,63,128,33,192,32,192,96,224,241,240,9, + 12,24,11,1,0,254,0,99,0,99,0,99,0,98,0,126, + 0,99,128,97,128,97,128,97,128,97,128,254,0,9,12,24, + 11,1,0,31,0,99,128,65,0,192,0,192,0,192,0,192, + 0,192,0,192,0,97,128,127,0,60,0,10,12,24,12,1, + 0,254,0,99,128,97,128,96,192,96,192,96,192,96,192,96, + 192,96,192,97,128,99,0,254,0,10,12,24,10,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,9,12,24,10,0,0,255,128,48, + 128,48,128,48,0,48,0,63,0,50,0,48,0,48,0,48, + 0,48,0,252,0,10,12,24,11,1,0,31,128,33,128,65, + 0,64,0,192,0,192,0,192,0,195,192,193,128,65,128,97, + 128,31,0,11,12,24,13,1,0,241,224,96,192,96,192,96, + 192,96,192,127,192,96,192,96,192,96,192,96,192,96,192,241, + 224,4,12,12,6,1,0,240,96,96,96,96,96,96,96,96, + 96,96,240,8,16,16,6,253,252,31,6,6,6,6,6,6, + 6,6,6,6,6,6,68,124,240,11,12,24,12,1,0,243, + 192,99,0,99,0,102,0,108,0,120,0,124,0,110,0,103, + 0,99,0,97,128,241,224,8,12,12,10,1,0,240,96,96, + 96,96,96,96,96,96,97,97,255,15,12,24,16,0,0,112, + 30,56,28,56,28,60,60,44,44,44,108,38,76,38,204,35, + 140,35,140,35,140,241,30,11,12,24,13,1,0,224,224,112, + 64,112,64,120,64,92,64,78,64,78,64,71,64,67,192,65, + 192,65,192,224,192,10,12,24,12,1,0,30,0,33,128,65, + 128,64,192,192,192,192,192,192,192,192,192,192,128,96,128,97, + 0,30,0,9,12,24,11,1,0,254,0,99,0,97,128,97, + 128,97,128,97,0,126,0,96,0,96,0,96,0,96,0,248, + 0,12,15,30,12,1,253,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,192,96,128,33,0,30,0,3, + 144,1,240,0,96,11,12,24,12,1,0,254,0,99,128,97, + 128,97,128,97,128,127,0,126,0,102,0,99,0,99,128,97, + 192,241,224,8,12,12,10,1,0,62,198,128,128,240,124,30, + 7,3,131,194,252,10,12,24,11,0,0,255,192,140,64,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,30,0,11,12,24,13,1,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,128,48,128,31, + 0,12,12,24,13,0,0,248,240,112,96,48,64,56,64,24, + 192,24,128,28,128,13,128,15,0,7,0,7,0,6,0,16, + 12,24,16,0,0,248,143,49,134,49,196,49,196,51,196,58, + 108,26,108,30,120,28,56,28,56,12,24,8,16,12,12,24, + 12,0,0,249,224,48,192,56,128,29,0,15,0,14,0,15, + 0,11,0,27,128,49,192,32,224,241,240,11,12,24,12,0, + 0,241,224,48,192,24,128,29,128,13,0,15,0,6,0,6, + 0,6,0,6,0,6,0,15,0,10,12,24,10,0,0,127, + 192,67,128,67,0,7,0,6,0,14,0,28,0,24,0,56, + 0,48,64,112,192,255,192,5,18,18,6,1,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,9, + 18,36,9,0,253,192,0,96,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,12,0,12,0,4,0,6,0,6, + 0,2,0,3,0,3,0,1,128,5,18,18,6,0,253,248, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 248,7,9,9,9,1,5,16,24,40,44,44,68,70,130,130, + 9,1,2,9,0,254,255,128,4,4,4,6,0,10,192,96, + 48,16,8,9,9,9,1,0,60,102,198,14,126,198,198,207, + 118,9,14,28,10,0,0,96,0,224,0,96,0,96,0,96, + 0,103,0,127,0,112,128,96,128,96,128,96,128,97,0,126, + 0,60,0,7,9,9,9,1,0,62,70,196,192,192,192,194, + 124,56,9,14,28,11,1,0,7,0,3,0,3,0,3,0, + 3,0,63,0,67,0,195,0,195,0,195,0,195,0,227,0, + 127,128,59,0,7,9,9,9,1,0,60,100,198,198,254,192, + 226,124,56,7,14,14,6,1,0,30,38,96,96,96,252,96, + 96,96,96,96,96,96,248,10,13,26,10,0,252,60,192,67, + 0,195,0,195,0,226,0,60,0,112,0,124,0,127,128,195, + 128,193,128,193,0,62,0,9,14,28,10,1,0,96,0,224, + 0,96,0,96,0,96,0,102,0,127,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,4,12,12,6,1,0,48, + 112,0,96,224,96,96,96,96,96,96,240,7,16,16,5,253, + 252,14,14,0,12,28,12,12,12,12,12,12,12,12,136,248, + 224,10,14,28,10,1,0,96,0,224,0,96,0,96,0,96, + 0,103,128,99,0,100,0,104,0,124,0,110,0,102,0,99, + 0,243,192,5,14,14,6,0,0,48,240,48,48,48,48,48, + 48,48,48,48,48,48,248,14,9,18,16,1,0,110,112,255, + 248,115,152,99,24,99,24,99,24,99,24,99,24,247,188,9, + 9,18,10,1,0,102,0,255,0,115,0,99,0,99,0,99, + 0,99,0,99,0,247,128,8,9,9,10,1,0,60,70,195, + 195,195,195,194,98,60,9,13,26,11,1,252,103,0,255,0, + 97,128,97,128,97,128,97,128,97,0,127,0,110,0,96,0, + 96,0,96,0,248,0,9,13,26,10,1,252,29,0,103,0, + 195,0,195,0,195,0,195,0,199,0,127,0,59,0,3,0, + 3,0,3,0,15,128,8,9,9,8,0,0,55,255,57,49, + 48,48,48,48,252,6,9,9,8,1,0,240,152,144,224,120, + 28,132,196,248,6,12,12,7,1,0,32,96,96,252,96,96, + 96,96,96,100,124,48,10,9,18,11,0,0,227,128,97,128, + 97,128,97,128,97,128,97,128,99,128,127,192,57,128,10,9, + 18,10,0,0,241,192,97,128,49,0,51,0,58,0,26,0, + 30,0,12,0,8,0,14,9,18,14,0,0,241,60,99,24, + 51,144,51,144,53,176,60,224,28,224,24,96,24,64,10,9, + 18,10,0,0,251,192,113,0,58,0,28,0,12,0,30,0, + 55,0,35,128,247,192,11,13,26,10,255,252,121,224,56,128, + 24,128,25,128,13,0,13,0,14,0,6,0,6,0,4,0, + 12,0,120,0,240,0,7,9,9,9,1,0,254,142,156,24, + 56,48,98,226,254,5,18,18,6,1,253,24,48,96,96,96, + 48,48,48,96,224,48,48,48,96,96,96,48,24,1,20,20, + 4,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,18,18,6,0,253,64,224,48, + 48,48,48,48,48,28,24,48,48,48,48,48,48,96,192,9, + 4,8,9,0,4,48,0,125,128,79,0,134,0,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,5,0,0,3,14,14,6,1,251,96,224,64,0,96,96, + 96,96,96,96,96,96,96,64,7,12,12,10,2,0,16,16, + 62,86,144,144,144,144,86,124,16,16,9,11,22,10,0,0, + 15,128,49,128,49,0,112,0,112,0,254,0,112,0,112,0, + 96,128,123,128,255,0,8,7,7,10,1,2,255,66,66,66, + 66,102,255,10,11,22,10,0,0,227,192,113,0,51,0,26, + 0,26,0,12,0,127,128,12,0,12,0,12,0,30,0,1, + 20,20,4,2,252,128,128,128,128,128,128,128,128,128,0,0, + 128,128,128,128,128,128,128,128,128,8,13,13,10,1,0,120, + 152,136,240,190,135,193,113,62,14,34,50,62,6,3,3,7, + 0,10,236,252,220,12,13,26,14,1,0,15,0,48,192,64, + 32,143,32,145,16,145,16,144,16,144,16,144,16,136,160,79, + 32,32,64,31,128,5,7,7,5,0,5,112,208,112,144,248, + 0,240,8,9,9,10,1,0,17,34,102,204,220,204,102,34, + 17,8,4,4,10,1,2,255,1,1,1,6,1,1,7,0, + 4,252,7,7,7,7,0,7,56,68,186,170,178,108,56,8, + 2,2,9,1,11,255,254,5,5,5,7,1,7,112,136,136, + 136,112,8,9,9,8,0,1,8,8,8,127,8,8,8,0, + 255,4,7,7,7,2,6,112,208,16,32,64,144,240,5,7, + 7,6,0,6,56,104,8,24,8,136,112,4,4,4,6,2, + 10,48,96,192,128,10,13,26,11,1,252,99,0,227,0,99, + 0,99,0,99,0,99,0,103,0,127,128,91,64,64,0,64, + 0,96,0,112,0,9,14,28,11,1,254,63,128,101,0,197, + 0,197,0,197,0,101,0,61,0,5,0,5,0,5,0,5, + 0,5,0,5,0,15,128,3,3,3,4,0,5,224,224,192, + 3,4,4,4,1,252,64,96,96,192,5,7,7,7,1,6, + 32,224,32,32,32,32,248,4,7,7,5,0,5,96,144,144, + 144,96,0,240,8,9,9,10,1,0,136,76,102,55,51,55, + 102,76,136,11,11,22,12,1,0,64,64,192,128,65,0,67, + 0,70,0,228,0,8,192,25,64,50,64,35,224,192,224,10, + 11,22,12,1,0,64,64,192,128,65,0,65,0,66,0,228, + 192,9,64,26,128,16,128,33,64,99,192,11,11,22,11,0, + 0,96,32,208,64,32,128,145,128,227,0,2,0,4,192,13, + 64,25,64,19,224,96,224,7,14,14,9,1,251,56,56,48, + 0,16,16,16,32,96,192,194,198,196,120,12,16,32,12,0, + 0,24,0,28,0,3,0,0,0,6,0,14,0,15,0,11, + 0,27,0,19,128,17,128,63,128,33,192,32,192,96,224,241, + 240,12,16,32,12,0,0,1,0,7,128,12,0,0,0,6, + 0,14,0,15,0,11,0,27,0,19,128,17,128,63,128,33, + 192,32,192,96,224,241,240,12,16,32,12,0,0,6,0,15, + 0,16,128,0,0,6,0,14,0,15,0,11,0,27,0,19, + 128,17,128,63,128,33,192,32,192,96,224,241,240,12,16,32, + 12,0,0,12,192,31,128,35,0,0,0,6,0,14,0,15, + 0,11,0,27,0,19,128,17,128,63,128,33,192,32,192,96, + 224,241,240,12,16,32,12,0,0,27,0,27,128,27,0,0, + 0,6,0,14,0,15,0,11,0,27,0,19,128,17,128,63, + 128,33,192,32,192,96,224,241,240,12,17,34,12,0,0,6, + 0,9,0,17,0,14,0,0,0,6,0,14,0,15,0,11, + 0,27,0,19,128,17,128,63,128,33,192,32,192,96,224,241, + 240,15,12,24,15,0,0,31,252,5,132,5,132,13,128,9, + 128,31,248,17,144,17,128,49,128,33,130,97,132,243,252,9, + 16,32,11,1,252,31,0,99,128,65,0,192,0,192,0,192, + 0,192,0,192,0,192,0,96,128,59,128,30,0,8,0,6, + 0,14,0,28,0,10,16,32,10,0,0,48,0,56,0,6, + 0,0,0,255,128,48,128,48,128,48,0,48,0,63,0,50, + 0,48,0,48,0,48,64,48,128,255,128,10,16,32,10,0, + 0,3,0,7,0,24,0,0,0,255,128,48,128,48,128,48, + 0,48,0,63,0,50,0,48,0,48,0,48,64,48,128,255, + 128,10,16,32,10,0,0,12,0,30,0,33,0,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,10,16,32,10,0,0,51,0,63, + 0,54,0,0,0,255,128,48,128,48,128,48,0,48,0,63, + 0,50,0,48,0,48,0,48,64,48,128,255,128,5,16,16, + 6,0,0,192,224,24,0,120,48,48,48,48,48,48,48,48, + 48,48,120,5,16,16,6,1,0,24,56,192,0,240,96,96, + 96,96,96,96,96,96,96,96,240,6,16,16,6,0,0,48, + 120,132,0,120,48,48,48,48,48,48,48,48,48,48,120,6, + 16,16,6,0,0,204,252,216,0,120,48,48,48,48,48,48, + 48,48,48,48,120,10,12,24,12,1,0,254,0,99,128,97, + 128,96,192,96,192,248,192,96,192,96,192,96,192,97,128,99, + 0,254,0,11,16,32,13,1,0,28,128,63,0,39,0,0, + 0,224,224,112,64,112,64,120,64,92,64,78,64,78,64,71, + 64,67,192,65,192,65,192,224,192,10,16,32,12,1,0,48, + 0,56,0,6,0,0,0,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,128,96,128,97,0,30,0,10, + 16,32,12,1,0,2,0,15,0,24,0,0,0,30,0,33, + 128,65,128,64,192,192,192,192,192,192,192,192,192,192,128,96, + 128,97,0,30,0,10,16,32,12,1,0,12,0,30,0,33, + 0,0,0,30,0,33,128,65,128,64,192,192,192,192,192,192, + 192,192,192,192,128,96,128,97,0,30,0,10,16,32,12,1, + 0,25,128,63,0,70,0,0,0,30,0,33,128,65,128,64, + 192,192,192,192,192,192,192,192,192,192,128,96,128,97,0,30, + 0,10,16,32,12,1,0,55,0,55,0,54,0,0,0,30, + 0,33,128,65,128,64,192,192,192,192,192,192,192,192,192,192, + 128,96,128,97,0,30,0,6,6,6,8,1,2,132,72,48, + 48,72,132,10,12,24,12,1,0,30,192,33,128,97,128,67, + 192,198,192,196,192,200,192,216,192,240,128,97,128,97,0,222, + 0,11,16,32,13,1,0,16,0,60,0,6,0,0,0,240, + 224,96,64,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,128,48,128,31,0,11,16,32,13,1,0,3,0,7, + 128,12,0,0,0,240,224,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,128,48,128,31,0,11,16,32, + 13,1,0,12,0,30,0,49,0,0,128,240,224,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,96,128,48, + 128,31,0,11,16,32,13,1,0,27,0,63,0,51,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,128,48,128,31,0,11,16,32,12,0,0,1, + 0,7,128,12,0,0,0,241,224,48,192,24,128,29,128,13, + 0,15,0,6,0,6,0,6,0,6,0,6,0,15,0,9, + 12,24,11,1,0,248,0,96,0,126,0,99,0,97,128,97, + 128,97,128,97,128,113,0,110,0,96,0,248,0,9,14,28, + 12,1,0,14,0,51,0,33,128,97,128,97,128,103,0,108, + 0,108,0,102,0,99,0,97,128,104,128,104,128,239,0,8, + 14,14,9,1,0,112,48,24,8,0,60,102,198,14,126,198, + 198,207,118,8,14,14,9,1,0,14,12,24,48,0,60,102, + 198,14,126,198,198,207,118,8,14,14,9,1,0,24,60,108, + 66,0,60,102,198,14,126,198,198,207,118,8,13,13,9,1, + 0,114,126,140,0,60,102,198,14,126,198,198,207,118,8,13, + 13,9,1,0,108,110,108,0,60,102,198,14,126,198,198,207, + 118,8,14,14,9,1,0,56,68,72,56,0,60,102,198,14, + 126,198,198,207,118,12,9,18,14,1,0,29,192,111,32,198, + 48,166,48,63,240,70,0,199,16,251,224,113,192,8,13,13, + 9,1,252,62,70,196,192,192,192,194,127,60,16,12,28,48, + 7,14,14,9,1,0,112,48,24,8,0,60,100,198,198,254, + 192,226,124,56,7,14,14,9,1,0,14,12,24,16,0,60, + 100,198,198,254,192,226,124,56,7,14,14,9,1,0,24,60, + 100,66,0,60,100,198,198,254,192,226,124,56,7,13,13,9, + 1,0,110,126,108,0,60,100,198,198,254,192,226,124,56,5, + 14,14,6,0,0,224,96,48,16,0,48,112,48,48,48,48, + 48,48,120,5,14,14,6,1,0,56,48,96,64,0,96,224, + 96,96,96,96,96,96,240,6,14,14,6,0,0,48,120,200, + 132,0,48,112,48,48,48,48,48,48,120,6,13,13,6,0, + 0,220,220,216,0,48,112,48,48,48,48,48,48,120,8,14, + 14,10,1,0,48,255,28,102,6,63,71,195,195,195,195,194, + 102,60,9,13,26,11,1,0,57,0,63,0,78,0,0,0, + 102,0,255,0,115,0,99,0,99,0,99,0,99,0,99,0, + 247,128,8,14,14,10,1,0,48,112,24,12,0,60,70,195, + 195,195,195,194,98,60,8,14,14,10,1,0,6,12,24,16, + 0,60,70,195,195,195,195,194,98,60,8,14,14,10,1,0, + 24,60,38,66,0,60,70,195,195,195,195,194,98,60,8,13, + 13,10,1,0,57,126,76,0,60,70,195,195,195,195,194,98, + 60,8,13,13,10,1,0,118,126,108,0,60,70,195,195,195, + 195,194,98,60,8,7,7,8,0,2,8,8,0,127,128,8, + 8,8,9,9,10,1,0,63,102,71,203,219,211,226,102,252, + 10,14,28,11,0,0,24,0,60,0,12,0,6,0,0,0, + 227,128,97,128,97,128,97,128,97,128,97,128,99,128,127,192, + 57,128,10,14,28,11,0,0,3,0,7,0,4,0,8,0, + 0,0,227,128,97,128,97,128,97,128,97,128,97,128,99,128, + 127,192,57,128,10,14,28,11,0,0,12,0,14,0,27,0, + 33,0,0,0,227,128,97,128,97,128,97,128,97,128,97,128, + 99,128,127,192,57,128,10,13,26,11,0,0,27,0,63,0, + 51,0,0,0,227,128,97,128,97,128,97,128,97,128,97,128, + 99,128,127,192,57,128,11,18,36,10,255,252,3,128,3,0, + 6,0,4,0,0,0,121,224,56,128,24,128,25,128,13,0, + 13,0,14,0,6,0,6,0,4,0,12,0,120,0,240,0, + 9,18,36,11,1,252,96,0,224,0,96,0,96,0,96,0, + 103,0,111,0,113,128,97,128,97,128,97,128,97,0,127,0, + 110,0,96,0,96,0,96,0,248,0,11,17,34,10,255,252, + 25,128,31,128,27,0,0,0,121,224,56,128,24,128,25,128, + 13,0,13,0,14,0,6,0,6,0,4,0,12,0,120,0, + 240,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 12 + Calculated Max Values w= 9 h=18 x= 1 y= 7 dx=10 dy= 0 ascent=15 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12n[286] U8G_SECTION(".progmem.u8g_font_gdb12n") = { + 0,29,28,246,249,12,0,0,0,0,42,57,0,15,252,12, + 0,7,7,7,8,1,7,48,180,222,48,222,148,48,7,7, + 7,8,1,2,16,16,16,254,16,16,16,3,6,6,5,1, + 252,96,224,96,96,64,128,6,1,1,7,0,4,252,3,3, + 3,5,1,0,224,224,192,9,18,36,9,0,253,1,128,3, + 0,3,0,3,0,6,0,6,0,4,0,12,0,12,0,24, + 0,24,0,16,0,48,0,48,0,32,0,96,0,96,0,192, + 0,8,11,11,10,1,0,60,102,66,195,195,195,195,195,66, + 98,60,7,12,12,10,1,0,8,120,152,24,24,24,24,24, + 24,24,24,254,7,11,11,9,1,0,60,102,230,6,4,8, + 16,34,66,126,254,7,11,11,9,1,0,60,102,230,6,8, + 28,6,6,6,140,120,8,12,12,9,0,0,6,14,14,22, + 22,38,102,70,255,6,6,31,7,11,11,10,1,0,126,124, + 64,64,124,134,6,6,6,134,124,8,12,12,10,1,0,14, + 56,112,96,192,254,195,195,195,195,98,60,8,11,11,10,1, + 0,255,254,130,6,4,12,8,24,24,48,96,8,11,11,10, + 1,0,60,102,102,102,124,62,71,195,195,195,60,8,11,11, + 10,1,0,60,70,195,195,195,195,63,2,6,12,112}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=10 dx=16 dy= 0 ascent=16 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12r[2190] U8G_SECTION(".progmem.u8g_font_gdb12r") = { + 0,29,28,246,249,12,2,113,5,210,32,127,252,16,252,15, + 252,0,0,0,5,0,0,3,14,14,6,1,0,32,96,96, + 96,96,96,96,96,96,96,0,224,224,192,7,6,6,9,1, + 8,102,236,108,76,68,68,9,11,22,10,1,1,27,0,26, + 0,18,0,127,128,54,0,36,0,36,0,255,0,104,0,72, + 0,88,0,8,15,15,9,0,254,8,8,63,75,74,104,60, + 30,11,137,73,235,126,8,8,12,12,24,14,1,0,112,32, + 144,64,136,128,137,128,139,0,146,0,100,224,13,16,25,16, + 17,16,33,16,96,224,12,13,26,13,1,0,30,0,35,0, + 99,0,99,0,118,0,124,0,120,240,252,64,222,64,207,64, + 199,128,193,192,62,240,3,6,6,5,1,8,96,224,96,64, + 64,64,4,18,18,6,1,253,16,48,96,96,64,192,192,192, + 192,192,192,192,192,192,96,96,48,16,4,18,18,6,1,253, + 128,192,96,96,48,48,48,48,48,48,48,48,48,32,96,96, + 192,128,7,7,7,8,1,7,48,180,222,48,222,148,48,7, + 7,7,8,1,2,16,16,16,254,16,16,16,3,6,6,5, + 1,252,96,224,96,96,64,128,6,1,1,7,0,4,252,3, + 3,3,5,1,0,224,224,192,9,18,36,9,0,253,1,128, + 3,0,3,0,3,0,6,0,6,0,4,0,12,0,12,0, + 24,0,24,0,16,0,48,0,48,0,32,0,96,0,96,0, + 192,0,8,11,11,10,1,0,60,102,66,195,195,195,195,195, + 66,98,60,7,12,12,10,1,0,8,120,152,24,24,24,24, + 24,24,24,24,254,7,11,11,9,1,0,60,102,230,6,4, + 8,16,34,66,126,254,7,11,11,9,1,0,60,102,230,6, + 8,28,6,6,6,140,120,8,12,12,9,0,0,6,14,14, + 22,22,38,102,70,255,6,6,31,7,11,11,10,1,0,126, + 124,64,64,124,134,6,6,6,134,124,8,12,12,10,1,0, + 14,56,112,96,192,254,195,195,195,195,98,60,8,11,11,10, + 1,0,255,254,130,6,4,12,8,24,24,48,96,8,11,11, + 10,1,0,60,102,102,102,124,62,71,195,195,195,60,8,11, + 11,10,1,0,60,70,195,195,195,195,63,2,6,12,112,3, + 9,9,5,1,0,224,224,192,0,0,0,224,224,192,3,13, + 13,5,1,252,224,224,64,0,0,0,0,96,224,96,96,64, + 128,8,7,7,9,0,2,1,15,60,96,248,31,3,8,4, + 4,9,0,3,127,128,0,255,8,7,7,9,0,2,96,248, + 15,7,30,120,192,7,14,14,9,1,0,60,70,198,134,6, + 12,8,16,16,16,0,56,56,56,14,17,34,16,1,252,7, + 192,31,240,56,56,32,8,99,164,68,100,204,100,204,100,204, + 100,204,100,204,104,199,248,103,112,112,8,56,24,31,240,15, + 192,12,12,24,12,0,0,6,0,14,0,15,0,11,0,27, + 0,19,128,17,128,63,128,33,192,32,192,96,224,241,240,9, + 12,24,11,1,0,254,0,99,0,99,0,99,0,98,0,126, + 0,99,128,97,128,97,128,97,128,97,128,254,0,9,12,24, + 11,1,0,31,0,99,128,65,0,192,0,192,0,192,0,192, + 0,192,0,192,0,97,128,127,0,60,0,10,12,24,12,1, + 0,254,0,99,128,97,128,96,192,96,192,96,192,96,192,96, + 192,96,192,97,128,99,0,254,0,10,12,24,10,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,9,12,24,10,0,0,255,128,48, + 128,48,128,48,0,48,0,63,0,50,0,48,0,48,0,48, + 0,48,0,252,0,10,12,24,11,1,0,31,128,33,128,65, + 0,64,0,192,0,192,0,192,0,195,192,193,128,65,128,97, + 128,31,0,11,12,24,13,1,0,241,224,96,192,96,192,96, + 192,96,192,127,192,96,192,96,192,96,192,96,192,96,192,241, + 224,4,12,12,6,1,0,240,96,96,96,96,96,96,96,96, + 96,96,240,8,16,16,6,253,252,31,6,6,6,6,6,6, + 6,6,6,6,6,6,68,124,240,11,12,24,12,1,0,243, + 192,99,0,99,0,102,0,108,0,120,0,124,0,110,0,103, + 0,99,0,97,128,241,224,8,12,12,10,1,0,240,96,96, + 96,96,96,96,96,96,97,97,255,15,12,24,16,0,0,112, + 30,56,28,56,28,60,60,44,44,44,108,38,76,38,204,35, + 140,35,140,35,140,241,30,11,12,24,13,1,0,224,224,112, + 64,112,64,120,64,92,64,78,64,78,64,71,64,67,192,65, + 192,65,192,224,192,10,12,24,12,1,0,30,0,33,128,65, + 128,64,192,192,192,192,192,192,192,192,192,192,128,96,128,97, + 0,30,0,9,12,24,11,1,0,254,0,99,0,97,128,97, + 128,97,128,97,0,126,0,96,0,96,0,96,0,96,0,248, + 0,12,15,30,12,1,253,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,192,96,128,33,0,30,0,3, + 144,1,240,0,96,11,12,24,12,1,0,254,0,99,128,97, + 128,97,128,97,128,127,0,126,0,102,0,99,0,99,128,97, + 192,241,224,8,12,12,10,1,0,62,198,128,128,240,124,30, + 7,3,131,194,252,10,12,24,11,0,0,255,192,140,64,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,30,0,11,12,24,13,1,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,128,48,128,31, + 0,12,12,24,13,0,0,248,240,112,96,48,64,56,64,24, + 192,24,128,28,128,13,128,15,0,7,0,7,0,6,0,16, + 12,24,16,0,0,248,143,49,134,49,196,49,196,51,196,58, + 108,26,108,30,120,28,56,28,56,12,24,8,16,12,12,24, + 12,0,0,249,224,48,192,56,128,29,0,15,0,14,0,15, + 0,11,0,27,128,49,192,32,224,241,240,11,12,24,12,0, + 0,241,224,48,192,24,128,29,128,13,0,15,0,6,0,6, + 0,6,0,6,0,6,0,15,0,10,12,24,10,0,0,127, + 192,67,128,67,0,7,0,6,0,14,0,28,0,24,0,56, + 0,48,64,112,192,255,192,5,18,18,6,1,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,9, + 18,36,9,0,253,192,0,96,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,12,0,12,0,4,0,6,0,6, + 0,2,0,3,0,3,0,1,128,5,18,18,6,0,253,248, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 248,7,9,9,9,1,5,16,24,40,44,44,68,70,130,130, + 9,1,2,9,0,254,255,128,4,4,4,6,0,10,192,96, + 48,16,8,9,9,9,1,0,60,102,198,14,126,198,198,207, + 118,9,14,28,10,0,0,96,0,224,0,96,0,96,0,96, + 0,103,0,127,0,112,128,96,128,96,128,96,128,97,0,126, + 0,60,0,7,9,9,9,1,0,62,70,196,192,192,192,194, + 124,56,9,14,28,11,1,0,7,0,3,0,3,0,3,0, + 3,0,63,0,67,0,195,0,195,0,195,0,195,0,227,0, + 127,128,59,0,7,9,9,9,1,0,60,100,198,198,254,192, + 226,124,56,7,14,14,6,1,0,30,38,96,96,96,252,96, + 96,96,96,96,96,96,248,10,13,26,10,0,252,60,192,67, + 0,195,0,195,0,226,0,60,0,112,0,124,0,127,128,195, + 128,193,128,193,0,62,0,9,14,28,10,1,0,96,0,224, + 0,96,0,96,0,96,0,102,0,127,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,4,12,12,6,1,0,48, + 112,0,96,224,96,96,96,96,96,96,240,7,16,16,5,253, + 252,14,14,0,12,28,12,12,12,12,12,12,12,12,136,248, + 224,10,14,28,10,1,0,96,0,224,0,96,0,96,0,96, + 0,103,128,99,0,100,0,104,0,124,0,110,0,102,0,99, + 0,243,192,5,14,14,6,0,0,48,240,48,48,48,48,48, + 48,48,48,48,48,48,248,14,9,18,16,1,0,110,112,255, + 248,115,152,99,24,99,24,99,24,99,24,99,24,247,188,9, + 9,18,10,1,0,102,0,255,0,115,0,99,0,99,0,99, + 0,99,0,99,0,247,128,8,9,9,10,1,0,60,70,195, + 195,195,195,194,98,60,9,13,26,11,1,252,103,0,255,0, + 97,128,97,128,97,128,97,128,97,0,127,0,110,0,96,0, + 96,0,96,0,248,0,9,13,26,10,1,252,29,0,103,0, + 195,0,195,0,195,0,195,0,199,0,127,0,59,0,3,0, + 3,0,3,0,15,128,8,9,9,8,0,0,55,255,57,49, + 48,48,48,48,252,6,9,9,8,1,0,240,152,144,224,120, + 28,132,196,248,6,12,12,7,1,0,32,96,96,252,96,96, + 96,96,96,100,124,48,10,9,18,11,0,0,227,128,97,128, + 97,128,97,128,97,128,97,128,99,128,127,192,57,128,10,9, + 18,10,0,0,241,192,97,128,49,0,51,0,58,0,26,0, + 30,0,12,0,8,0,14,9,18,14,0,0,241,60,99,24, + 51,144,51,144,53,176,60,224,28,224,24,96,24,64,10,9, + 18,10,0,0,251,192,113,0,58,0,28,0,12,0,30,0, + 55,0,35,128,247,192,11,13,26,10,255,252,121,224,56,128, + 24,128,25,128,13,0,13,0,14,0,6,0,6,0,4,0, + 12,0,120,0,240,0,7,9,9,9,1,0,254,142,156,24, + 56,48,98,226,254,5,18,18,6,1,253,24,48,96,96,96, + 48,48,48,96,224,48,48,48,96,96,96,48,24,1,20,20, + 4,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,18,18,6,0,253,64,224,48, + 48,48,48,48,48,28,24,48,48,48,48,48,48,96,192,9, + 4,8,9,0,4,48,0,125,128,79,0,134,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=19 h=24 x= 2 y=13 dx=20 dy= 0 ascent=20 len=60 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14[6044] U8G_SECTION(".progmem.u8g_font_gdb14") = { + 0,36,33,244,248,14,3,134,7,177,32,255,251,20,250,18, + 251,0,0,0,6,0,0,4,17,17,7,2,0,96,224,224, + 224,224,224,224,224,224,64,64,64,0,0,96,240,224,7,8, + 8,11,2,9,102,238,206,206,198,198,198,196,11,13,26,12, + 1,1,12,192,12,128,9,128,127,224,25,0,19,0,19,0, + 51,0,255,128,38,0,38,0,100,0,140,0,10,18,36,12, + 1,254,12,0,12,0,63,128,127,192,205,128,204,128,236,0, + 124,0,63,0,15,128,13,192,140,192,140,192,204,192,255,128, + 127,0,12,0,12,0,15,14,28,17,1,0,56,24,76,16, + 198,48,198,96,198,192,199,128,101,128,59,56,6,68,12,198, + 12,198,24,198,48,100,96,56,15,16,32,16,1,0,15,0, + 17,128,49,128,49,128,51,0,62,0,60,0,28,254,124,120, + 126,48,207,48,199,160,195,224,193,240,97,252,62,56,3,8, + 8,6,2,9,96,224,192,192,192,192,192,192,5,22,22,8, + 2,252,8,24,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,96,96,96,48,24,8,5,22,22,8,1,252,128,192, + 96,48,48,48,24,24,24,24,24,24,24,24,24,24,48,48, + 48,96,192,128,9,10,20,10,1,8,24,0,24,0,219,0, + 255,128,60,0,62,0,255,0,219,0,24,0,24,0,8,8, + 8,10,1,2,24,24,24,255,24,24,24,24,4,7,7,6, + 1,252,48,240,48,48,32,96,64,7,1,1,8,1,5,254, + 4,3,3,6,1,0,96,240,224,11,22,44,11,0,252,0, + 96,0,192,0,192,1,128,1,128,3,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,24,0,56, + 0,48,0,48,0,96,0,96,0,192,0,10,14,28,12,1, + 0,30,0,51,0,97,128,97,128,225,192,225,192,225,192,225, + 192,225,192,225,192,97,128,97,128,51,0,30,0,8,14,14, + 12,2,0,8,120,248,24,24,24,24,24,24,24,24,24,24, + 255,8,14,14,11,2,0,62,103,227,195,3,6,4,12,24, + 48,33,65,255,255,9,14,28,11,1,0,30,0,99,0,227, + 0,67,0,3,0,6,0,31,0,7,128,3,128,1,128,1, + 128,1,128,67,0,190,0,10,14,28,12,1,0,1,0,7, + 0,7,0,15,0,27,0,19,0,51,0,99,0,99,0,255, + 192,3,0,3,0,3,0,15,192,9,14,28,12,1,0,63, + 128,63,0,32,0,96,0,96,0,126,0,67,0,1,128,1, + 128,1,128,1,128,1,128,195,0,62,0,10,14,28,12,1, + 0,7,0,28,0,48,0,96,0,64,0,223,0,225,128,192, + 192,192,192,192,192,192,192,96,128,49,128,30,0,10,14,28, + 12,1,0,127,192,255,128,129,128,129,128,3,0,3,0,2, + 0,6,0,6,0,12,0,12,0,24,0,56,0,48,0,9, + 14,28,11,1,0,62,0,113,128,241,128,241,128,249,128,127, + 0,63,0,63,128,99,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,12,1,0,31,0,35,128,65,128,192,192,192, + 192,192,192,192,192,97,192,62,192,0,128,1,128,3,0,14, + 0,56,0,4,10,10,6,1,0,224,240,96,0,0,0,0, + 96,240,224,4,15,15,6,1,252,96,240,224,0,0,0,0, + 0,48,240,48,48,32,96,64,9,7,14,10,1,3,1,128, + 15,128,124,0,224,0,248,0,31,0,3,128,9,4,8,10, + 1,4,255,128,0,0,0,0,255,128,9,7,14,10,1,3, + 192,0,248,0,31,0,3,128,31,0,240,0,128,0,9,16, + 32,10,1,0,63,0,103,128,227,128,227,128,3,128,7,0, + 7,0,14,0,12,0,24,0,24,0,24,0,0,0,28,0, + 60,0,56,0,18,20,60,20,1,251,1,248,0,7,254,0, + 28,15,0,56,3,128,48,1,128,97,233,192,99,24,192,194, + 24,192,198,24,192,198,24,192,198,24,192,198,24,128,199,57, + 128,227,255,0,97,222,0,112,0,0,56,1,0,62,7,0, + 15,252,0,3,240,0,14,14,28,14,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,13,14,28,14,0,0,127,128, + 176,192,48,96,48,96,48,96,48,192,63,224,48,112,48,56, + 48,56,48,56,48,56,48,112,255,224,11,14,28,13,1,0, + 15,192,49,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,192,0,224,0,112,96,127,128,31,0,14,14,28,15, + 0,0,127,192,240,240,48,56,48,24,48,28,48,28,48,28, + 48,28,48,28,48,28,48,24,48,56,48,240,255,192,12,14, + 28,12,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 11,14,28,12,0,0,255,224,56,96,56,32,56,32,56,0, + 56,0,63,128,57,0,56,0,56,0,56,0,56,0,56,0, + 254,0,12,14,28,14,1,0,15,192,16,224,32,64,96,0, + 64,0,192,0,192,0,192,0,193,240,192,96,96,96,96,96, + 48,96,15,128,16,14,28,16,0,0,252,63,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,252,63,6,14,14,8,1,0,252,48,48,48, + 48,48,48,48,48,48,48,48,48,252,10,19,38,8,253,251, + 15,192,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 38,0,124,0,248,0,13,14,28,14,0,0,252,248,48,224, + 48,192,49,128,51,0,54,0,60,0,62,0,55,0,51,128, + 49,192,48,224,48,120,252,120,11,14,28,12,0,0,252,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,96,48,64,255,192,18,14,42,19,1,0, + 240,7,128,120,15,0,120,15,0,124,15,0,124,31,0,108, + 23,0,110,55,0,102,55,0,103,103,0,99,103,0,99,199, + 0,99,199,0,97,135,0,241,143,192,15,14,28,15,0,0, + 248,126,56,24,60,24,62,24,54,24,55,24,51,152,49,152, + 49,216,48,248,48,120,48,56,48,56,252,24,12,14,28,14, + 1,0,15,128,48,192,96,96,64,96,192,48,192,48,192,48, + 192,48,192,48,192,48,96,96,96,64,48,128,31,0,12,14, + 28,13,0,0,127,192,176,224,48,48,48,48,48,48,48,48, + 48,96,55,128,48,0,48,0,48,0,48,0,48,0,252,0, + 15,18,36,14,1,252,15,128,48,192,96,96,64,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 31,0,1,192,0,228,0,126,0,24,14,14,28,14,0,0, + 127,192,240,224,48,48,48,48,48,48,48,96,63,192,51,128, + 49,192,49,192,48,224,48,112,48,124,252,60,10,14,28,12, + 1,0,31,128,97,192,192,128,192,0,240,0,124,0,63,0, + 15,128,3,192,1,192,128,192,192,128,225,128,254,0,12,14, + 28,13,1,0,255,240,198,48,134,16,134,16,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 15,14,28,15,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,14,28,15,0,0,252,62,56,8,56,24,56,16, + 28,48,28,48,14,32,14,96,6,96,7,64,7,192,3,128, + 3,128,1,0,19,14,42,20,0,0,252,99,224,48,96,192, + 56,112,192,56,240,128,56,241,128,24,185,128,25,153,128,29, + 29,0,29,29,0,15,15,0,14,15,0,14,7,0,14,6, + 0,4,6,0,14,14,28,14,0,0,252,124,56,48,28,96, + 28,96,14,192,7,128,7,128,7,128,7,192,12,224,24,224, + 24,112,48,56,248,252,13,14,28,14,0,0,240,120,56,48, + 28,96,28,96,14,192,6,128,7,128,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,11,14,28,13,1,0,127,224, + 193,192,195,128,131,128,7,0,15,0,14,0,28,0,28,0, + 56,0,120,32,112,96,224,96,255,224,6,21,21,8,2,253, + 248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,252,10,22,44,11,0,252,192,0,96,0,96, + 0,48,0,48,0,48,0,24,0,24,0,28,0,12,0,12, + 0,6,0,6,0,6,0,3,0,3,0,3,0,1,128,1, + 128,1,192,0,192,0,192,5,21,21,7,1,253,248,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,248,9,11,22,11,1,6,8,0,12,0,28,0,22,0, + 54,0,34,0,35,0,99,0,65,128,65,128,129,128,10,1, + 2,11,1,253,255,192,5,5,5,7,0,12,224,224,112,56, + 8,10,10,20,11,1,0,62,0,99,0,227,0,3,0,63, + 0,99,0,195,0,195,0,255,192,123,0,11,17,34,12,0, + 0,96,0,224,0,96,0,96,0,96,0,96,0,96,0,119, + 128,127,192,112,224,96,96,96,96,96,96,96,64,96,192,127, + 128,30,0,9,10,20,10,1,0,31,0,99,128,65,0,192, + 0,192,0,192,0,192,0,225,0,127,128,60,0,12,17,34, + 13,1,0,0,192,3,192,0,192,0,192,0,192,0,192,0, + 192,31,192,33,192,64,192,192,192,192,192,192,192,192,192,97, + 192,127,240,60,192,9,10,20,11,1,0,30,0,99,0,65, + 128,193,128,255,128,192,0,192,0,225,128,127,0,62,0,9, + 17,34,8,0,0,7,128,25,0,16,0,48,0,48,0,48, + 0,48,0,126,0,176,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,124,0,11,15,30,12,1,251,30,96,35, + 192,97,128,97,128,97,128,115,0,62,0,48,0,124,0,63, + 128,111,192,192,192,192,192,225,128,62,0,12,17,34,13,1, + 0,48,0,240,0,48,0,48,0,48,0,48,0,48,0,51, + 128,63,192,56,192,48,192,48,192,48,192,48,192,48,192,48, + 192,249,240,5,15,15,7,1,0,48,112,48,0,0,112,240, + 48,48,48,48,48,48,48,248,7,20,20,6,254,251,6,14, + 6,0,0,6,14,6,6,6,6,6,6,6,6,6,6,68, + 248,240,12,17,34,13,1,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,49,240,49,192,51,0,54,0,62,0, + 55,0,51,128,49,192,49,224,248,240,6,17,17,7,1,0, + 48,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,18,10,30,19,1,0,103,142,0,255,255,0,112,227,0, + 96,195,0,96,195,0,96,195,0,96,195,0,96,195,0,96, + 195,0,241,231,192,12,10,20,13,1,0,51,128,247,192,56, + 192,48,192,48,192,48,192,48,192,48,192,48,192,249,240,10, + 10,20,12,1,0,30,0,33,128,65,128,192,192,192,192,192, + 192,192,192,96,128,113,0,30,0,11,15,30,13,1,251,51, + 128,255,192,56,224,48,96,48,96,48,96,48,96,48,192,63, + 128,55,0,48,0,48,0,48,0,48,0,252,0,11,15,30, + 13,1,251,30,64,97,192,64,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,0,192,0,192,0,192,0,192,3, + 224,9,10,20,10,1,0,119,128,255,128,121,128,113,0,112, + 0,112,0,112,0,112,0,112,0,252,0,8,10,10,10,1, + 0,126,198,198,240,124,63,135,131,194,252,8,14,14,9,0, + 0,16,48,48,48,127,176,48,48,48,48,48,50,63,24,12, + 10,20,13,1,0,97,192,224,192,96,192,96,192,96,192,96, + 192,96,192,97,192,127,240,60,192,12,10,20,12,0,0,248, + 240,112,64,56,192,56,128,28,128,29,128,13,0,15,0,6, + 0,6,0,16,10,20,17,0,0,248,135,112,194,49,198,57, + 230,59,100,27,124,30,124,14,56,12,56,12,16,12,10,20, + 12,0,0,253,240,56,192,29,128,31,0,14,0,15,0,27, + 128,17,192,33,224,243,240,13,15,30,12,255,251,124,120,56, + 32,28,96,28,64,14,192,14,192,6,128,7,128,7,0,3, + 0,3,0,6,0,70,0,124,0,248,0,9,10,20,11,1, + 0,255,128,199,0,135,0,14,0,28,0,60,0,57,0,112, + 128,225,128,255,128,5,22,22,8,2,252,24,48,96,96,96, + 96,48,48,48,48,96,224,48,48,48,48,96,96,96,96,48, + 24,2,24,24,5,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,5, + 22,22,8,1,252,192,96,48,48,48,48,96,96,96,96,56, + 48,96,96,96,96,48,48,48,48,96,192,10,4,8,11,1, + 5,48,64,124,128,159,0,135,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,6,0,0, + 4,16,16,7,1,250,112,240,96,0,32,32,32,112,112,112, + 112,112,112,112,112,96,10,14,28,12,1,0,12,0,12,0, + 31,128,125,192,108,128,204,0,204,0,204,0,204,0,236,192, + 127,128,63,0,12,0,12,0,11,14,28,12,0,0,7,192, + 12,224,24,64,24,64,56,0,56,0,56,0,127,0,184,0, + 56,0,56,32,48,32,127,224,255,224,10,9,18,12,1,2, + 128,64,94,128,51,0,97,128,97,128,97,128,51,128,94,128, + 128,64,12,14,28,12,0,0,241,240,120,192,56,192,29,128, + 29,128,13,0,15,0,6,0,63,192,6,0,6,0,6,0, + 6,0,31,128,2,24,24,5,2,251,192,192,192,192,192,192, + 192,192,192,192,128,0,0,64,192,192,192,192,192,192,192,192, + 192,192,9,16,32,11,1,0,62,0,99,0,99,0,112,0, + 60,0,127,0,199,128,195,128,225,128,121,128,63,0,31,0, + 71,0,67,0,99,0,126,0,7,3,3,9,1,12,198,238, + 198,15,15,30,17,1,0,7,192,24,48,48,24,99,204,108, + 236,200,70,216,6,216,6,216,6,216,6,108,44,103,204,48, + 24,24,48,7,192,6,7,7,6,0,7,120,216,24,248,216, + 252,248,9,10,20,12,1,0,8,128,17,128,51,0,103,0, + 238,0,238,0,103,0,51,0,17,128,8,128,10,5,10,12, + 1,2,255,192,0,192,0,192,0,192,0,192,7,1,1,8, + 1,5,254,8,8,8,8,0,8,60,66,157,149,153,153,86, + 60,9,2,4,11,1,13,255,128,255,128,6,5,5,8,1, + 9,56,76,204,200,112,8,10,10,9,1,2,24,24,24,24, + 255,24,24,24,0,255,6,8,8,8,1,7,120,204,140,24, + 16,32,68,252,6,8,8,8,1,7,56,204,140,56,12,12, + 140,120,6,5,5,7,2,12,56,60,112,96,192,12,15,30, + 13,1,251,96,192,225,192,96,192,96,192,96,192,96,192,96, + 192,113,192,127,240,110,192,96,0,96,0,112,0,112,0,96, + 0,14,17,34,14,0,253,31,252,113,176,225,176,225,176,225, + 176,225,176,113,176,31,176,1,176,1,176,1,176,1,176,1, + 176,1,176,1,176,1,176,7,252,4,3,3,5,0,6,96, + 240,224,4,5,5,5,1,251,32,96,48,48,224,6,8,8, + 8,1,7,48,240,48,48,48,48,48,252,5,7,7,6,0, + 7,112,216,216,216,216,112,248,10,10,20,12,1,0,196,0, + 102,0,99,0,51,128,57,192,61,192,49,128,99,0,102,0, + 196,0,12,14,28,14,1,0,48,16,240,48,48,96,48,192, + 48,128,49,128,255,0,6,96,4,224,13,224,25,96,19,240, + 48,96,96,240,12,14,28,14,1,0,48,48,240,96,48,192, + 48,192,49,128,51,0,254,0,6,240,13,48,26,48,16,96, + 48,192,97,144,195,240,14,14,28,15,0,0,56,8,76,24, + 40,48,60,96,12,64,140,192,121,128,3,24,2,56,6,88, + 12,88,8,252,24,24,48,60,9,16,32,11,1,250,28,0, + 30,0,12,0,0,0,12,0,12,0,12,0,24,0,56,0, + 112,0,96,0,224,0,227,128,227,128,231,0,126,0,14,20, + 40,14,0,0,8,0,28,0,15,0,3,128,0,0,0,0, + 1,0,7,128,7,128,5,128,13,192,12,192,8,224,24,224, + 31,224,16,112,48,112,48,48,32,56,248,124,14,20,40,14, + 0,0,0,128,0,224,3,192,7,0,0,0,0,0,1,0, + 7,128,7,128,5,128,13,192,12,192,8,224,24,224,31,224, + 16,112,48,112,48,48,32,56,248,124,14,20,40,14,0,0, + 3,0,7,128,15,192,12,96,16,0,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,14,19,38,14,0,0,4,32, + 15,240,27,192,0,0,0,0,1,0,7,128,7,128,5,128, + 13,192,12,192,8,224,24,224,31,224,16,112,48,112,48,48, + 32,56,248,124,14,19,38,14,0,0,8,64,28,224,24,224, + 0,0,0,0,1,0,7,128,7,128,5,128,13,192,12,192, + 8,224,24,224,31,224,16,112,48,112,48,48,32,56,248,124, + 14,20,40,14,0,0,1,128,6,192,6,192,7,128,0,0, + 0,0,1,0,7,128,7,128,5,128,13,192,12,192,8,224, + 24,224,31,224,16,112,48,112,48,48,32,56,248,124,18,14, + 42,19,0,0,7,255,128,1,225,128,3,96,128,3,96,128, + 6,96,0,6,96,0,7,255,0,12,98,0,12,96,0,24, + 96,0,24,96,0,48,96,64,48,96,192,249,255,128,11,19, + 38,13,1,251,15,192,49,192,96,128,64,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,112,96,63,192,31,128, + 4,0,6,0,3,0,3,0,12,0,12,20,40,12,0,0, + 16,0,56,0,30,0,7,0,0,0,0,0,255,224,56,96, + 56,96,56,64,56,0,56,0,63,192,56,128,56,0,56,0, + 56,0,56,48,56,32,255,224,12,20,40,12,0,0,1,0, + 1,192,7,128,14,0,0,0,0,0,255,224,56,96,56,96, + 56,64,56,0,56,0,63,192,56,128,56,0,56,0,56,0, + 56,48,56,32,255,224,12,20,40,12,0,0,6,0,15,0, + 31,128,48,192,0,0,0,0,255,224,56,96,56,96,56,64, + 56,0,56,0,63,192,56,128,56,0,56,0,56,0,56,48, + 56,32,255,224,12,19,38,12,0,0,16,128,49,192,49,192, + 0,0,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 7,20,20,8,0,0,64,224,112,24,4,0,126,24,24,24, + 24,24,24,24,24,24,24,24,24,126,7,20,20,8,1,0, + 8,30,60,96,128,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,252,7,20,20,8,0,0,16,56,124,198,0,0, + 126,24,24,24,24,24,24,24,24,24,24,24,24,126,8,19, + 19,8,255,0,65,99,227,0,0,63,12,12,12,12,12,12, + 12,12,12,12,12,12,63,14,14,28,15,0,0,127,192,240, + 240,48,56,48,24,48,28,48,28,254,28,48,28,48,28,48, + 28,48,24,48,56,48,240,255,192,15,19,38,15,0,0,2, + 32,15,240,11,224,16,0,0,0,248,126,56,24,60,24,62, + 24,54,24,55,24,51,152,49,152,49,216,48,248,48,120,48, + 56,48,56,252,24,12,20,40,14,1,0,16,0,60,0,30, + 0,3,0,0,0,0,0,15,128,48,192,96,96,64,96,192, + 48,192,48,192,48,192,48,192,48,192,48,96,96,96,64,48, + 128,31,0,12,20,40,14,1,0,1,0,1,192,7,128,14, + 0,0,0,0,0,15,128,48,192,96,96,64,96,192,48,192, + 48,192,48,192,48,192,48,192,48,96,96,96,64,48,128,31, + 0,12,20,40,14,1,0,6,0,15,0,15,128,24,192,32, + 0,0,0,15,128,48,192,96,96,64,96,192,48,192,48,192, + 48,192,48,192,48,192,48,96,96,96,64,48,128,31,0,12, + 19,38,14,1,0,8,64,31,224,55,128,0,0,0,0,15, + 128,48,192,96,96,64,96,192,48,192,48,192,48,192,48,192, + 48,192,48,96,96,96,64,48,128,31,0,12,19,38,14,1, + 0,16,128,57,192,49,192,0,0,0,0,15,128,48,192,96, + 96,64,96,192,48,192,48,192,48,192,48,192,48,192,48,96, + 96,96,64,48,128,31,0,8,7,7,10,1,3,195,102,60, + 24,60,102,195,12,15,30,14,1,255,15,176,16,224,32,224, + 96,224,193,240,195,112,195,48,198,48,204,48,232,32,120,96, + 112,64,112,128,223,0,128,0,15,20,40,15,0,0,4,0, + 14,0,7,0,1,192,0,0,0,0,252,126,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24, + 24,48,24,32,7,192,15,20,40,15,0,0,0,64,0,240, + 1,224,3,0,0,0,0,0,252,126,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,24,48, + 24,32,7,192,15,20,40,15,0,0,1,128,3,128,7,192, + 12,96,0,16,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,19,38,15,0,0,4,32,12,112,12,96,0,0, + 0,0,252,126,48,24,48,24,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,24,48,24,32,7,192,13,20, + 40,14,0,0,0,128,0,224,3,192,7,0,0,0,0,0, + 240,120,56,48,28,96,28,96,14,192,6,128,7,128,3,0, + 3,0,3,0,3,0,3,0,3,0,15,192,12,14,28,13, + 0,0,252,0,48,0,48,0,63,192,48,96,48,48,48,48, + 48,48,48,48,48,96,55,192,48,0,48,0,252,0,11,17, + 34,14,1,0,15,128,16,192,32,96,32,96,96,96,96,96, + 97,192,99,0,99,0,99,0,99,192,97,192,96,224,104,96, + 104,96,108,64,239,128,10,17,34,11,1,0,48,0,120,0, + 24,0,12,0,6,0,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,10,17, + 34,11,1,0,7,0,7,0,14,0,12,0,24,0,0,0, + 0,0,62,0,99,0,227,0,3,0,63,0,99,0,195,0, + 195,0,255,192,123,0,10,17,34,11,1,0,12,0,30,0, + 62,0,115,0,65,128,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,10,16, + 32,11,1,0,56,128,124,128,127,0,198,0,0,0,0,0, + 62,0,99,0,227,0,3,0,63,0,99,0,195,0,195,0, + 255,192,123,0,10,15,30,11,1,0,99,0,99,128,99,0, + 0,0,0,0,62,0,99,0,227,0,3,0,63,0,99,0, + 195,0,195,0,255,192,123,0,10,16,32,11,1,0,14,0, + 27,0,26,0,28,0,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,15,10, + 20,17,1,0,30,120,119,140,227,6,131,6,31,252,99,0, + 195,0,199,132,253,252,112,240,9,15,30,10,1,251,31,0, + 99,128,65,0,192,0,192,0,192,0,192,0,225,0,126,0, + 60,0,16,0,28,0,12,0,12,0,48,0,9,17,34,11, + 1,0,56,0,56,0,28,0,12,0,6,0,0,0,0,0, + 30,0,99,0,65,128,193,128,255,128,192,0,192,0,225,128, + 127,0,62,0,9,17,34,11,1,0,7,0,7,128,14,0, + 12,0,24,0,0,0,0,0,30,0,99,0,65,128,193,128, + 255,128,192,0,192,0,225,128,127,0,62,0,9,17,34,11, + 1,0,12,0,30,0,63,0,51,0,96,128,0,0,0,0, + 30,0,99,0,65,128,193,128,255,128,192,0,192,0,225,128, + 127,0,62,0,9,15,30,11,1,0,97,128,99,128,99,0, + 0,0,0,0,30,0,99,0,65,128,193,128,255,128,192,0, + 192,0,225,128,127,0,62,0,6,17,17,7,0,0,224,112, + 48,24,8,0,0,56,120,24,24,24,24,24,24,24,124,6, + 17,17,7,1,0,28,60,56,96,64,0,0,112,240,48,48, + 48,48,48,48,48,248,7,17,17,7,0,0,56,56,124,198, + 130,0,0,56,120,24,24,24,24,24,24,24,124,8,15,15, + 7,255,0,99,227,195,0,0,28,60,12,12,12,12,12,12, + 12,62,10,17,34,12,1,0,24,0,125,192,15,128,31,0, + 51,128,3,128,1,192,31,192,97,192,64,192,192,192,192,192, + 192,192,192,128,225,128,113,0,30,0,12,16,32,13,1,0, + 28,64,62,64,63,128,99,0,0,0,0,0,51,128,247,192, + 56,192,48,192,48,192,48,192,48,192,48,192,48,192,249,240, + 10,17,34,12,1,0,56,0,56,0,28,0,6,0,2,0, + 0,0,0,0,30,0,33,128,65,128,192,192,192,192,192,192, + 192,192,96,128,113,0,30,0,10,17,34,12,1,0,3,128, + 7,0,6,0,12,0,8,0,0,0,0,0,30,0,33,128, + 65,128,192,192,192,192,192,192,192,192,96,128,113,0,30,0, + 10,17,34,12,1,0,12,0,30,0,31,0,49,128,96,128, + 0,0,0,0,30,0,33,128,65,128,192,192,192,192,192,192, + 192,192,96,128,113,0,30,0,10,16,32,12,1,0,24,64, + 60,128,127,128,71,0,0,0,0,0,30,0,33,128,65,128, + 192,192,192,192,192,192,192,192,96,128,113,0,30,0,10,15, + 30,12,1,0,49,128,115,128,97,128,0,0,0,0,30,0, + 33,128,65,128,192,192,192,192,192,192,192,192,96,128,113,0, + 30,0,8,8,8,10,1,2,24,24,16,255,0,24,24,24, + 10,12,24,12,1,255,0,64,30,192,51,128,99,192,199,192, + 196,192,200,192,248,192,113,128,113,0,94,0,128,0,12,17, + 34,13,1,0,56,0,28,0,12,0,6,0,2,0,0,0, + 0,0,97,192,224,192,96,192,96,192,96,192,96,192,96,192, + 97,192,127,240,60,192,12,17,34,13,1,0,3,128,7,128, + 6,0,12,0,8,0,0,0,0,0,97,192,224,192,96,192, + 96,192,96,192,96,192,96,192,97,192,127,240,60,192,12,17, + 34,13,1,0,14,0,14,0,31,0,49,128,32,128,0,0, + 0,0,97,192,224,192,96,192,96,192,96,192,96,192,96,192, + 97,192,127,240,60,192,12,15,30,13,1,0,49,128,113,128, + 97,128,0,0,0,0,97,192,224,192,96,192,96,192,96,192, + 96,192,96,192,97,192,127,240,60,192,13,22,44,12,255,251, + 0,192,1,224,1,128,3,0,6,0,0,0,0,0,124,120, + 56,32,28,96,28,64,14,192,14,192,6,128,7,128,7,0, + 3,0,3,0,6,0,70,0,124,0,248,0,11,22,44,13, + 1,251,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 51,128,63,192,56,224,48,96,48,96,48,96,48,96,48,192, + 63,128,55,0,48,0,48,0,48,0,48,0,252,0,13,20, + 40,12,255,251,24,96,28,224,24,192,0,0,0,0,124,120, + 56,32,28,96,28,64,14,192,14,192,6,128,7,128,7,0, + 3,0,3,0,6,0,70,0,124,0,248,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=11 h=22 x= 2 y= 8 dx=12 dy= 0 ascent=18 len=44 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14n[448] U8G_SECTION(".progmem.u8g_font_gdb14n") = { + 0,36,33,244,248,14,0,0,0,0,42,57,0,18,252,14, + 0,9,10,20,10,1,8,24,0,24,0,219,0,255,128,60, + 0,62,0,255,0,219,0,24,0,24,0,8,8,8,10,1, + 2,24,24,24,255,24,24,24,24,4,7,7,6,1,252,48, + 240,48,48,32,96,64,7,1,1,8,1,5,254,4,3,3, + 6,1,0,96,240,224,11,22,44,11,0,252,0,96,0,192, + 0,192,1,128,1,128,3,128,3,0,3,0,7,0,6,0, + 6,0,12,0,12,0,28,0,24,0,24,0,56,0,48,0, + 48,0,96,0,96,0,192,0,10,14,28,12,1,0,30,0, + 51,0,97,128,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,97,128,97,128,51,0,30,0,8,14,14,12,2,0, + 8,120,248,24,24,24,24,24,24,24,24,24,24,255,8,14, + 14,11,2,0,62,103,227,195,3,6,4,12,24,48,33,65, + 255,255,9,14,28,11,1,0,30,0,99,0,227,0,67,0, + 3,0,6,0,31,0,7,128,3,128,1,128,1,128,1,128, + 67,0,190,0,10,14,28,12,1,0,1,0,7,0,7,0, + 15,0,27,0,19,0,51,0,99,0,99,0,255,192,3,0, + 3,0,3,0,15,192,9,14,28,12,1,0,63,128,63,0, + 32,0,96,0,96,0,126,0,67,0,1,128,1,128,1,128, + 1,128,1,128,195,0,62,0,10,14,28,12,1,0,7,0, + 28,0,48,0,96,0,64,0,223,0,225,128,192,192,192,192, + 192,192,192,192,96,128,49,128,30,0,10,14,28,12,1,0, + 127,192,255,128,129,128,129,128,3,0,3,0,2,0,6,0, + 6,0,12,0,12,0,24,0,56,0,48,0,9,14,28,11, + 1,0,62,0,113,128,241,128,241,128,249,128,127,0,63,0, + 63,128,99,128,193,128,193,128,193,128,99,0,62,0,10,14, + 28,12,1,0,31,0,35,128,65,128,192,192,192,192,192,192, + 192,192,97,192,62,192,0,128,1,128,3,0,14,0,56,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=19 h=24 x= 2 y=12 dx=20 dy= 0 ascent=19 len=60 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14r[2842] U8G_SECTION(".progmem.u8g_font_gdb14r") = { + 0,36,33,244,248,14,3,134,7,177,32,127,251,19,251,18, + 251,0,0,0,6,0,0,4,17,17,7,2,0,96,224,224, + 224,224,224,224,224,224,64,64,64,0,0,96,240,224,7,8, + 8,11,2,9,102,238,206,206,198,198,198,196,11,13,26,12, + 1,1,12,192,12,128,9,128,127,224,25,0,19,0,19,0, + 51,0,255,128,38,0,38,0,100,0,140,0,10,18,36,12, + 1,254,12,0,12,0,63,128,127,192,205,128,204,128,236,0, + 124,0,63,0,15,128,13,192,140,192,140,192,204,192,255,128, + 127,0,12,0,12,0,15,14,28,17,1,0,56,24,76,16, + 198,48,198,96,198,192,199,128,101,128,59,56,6,68,12,198, + 12,198,24,198,48,100,96,56,15,16,32,16,1,0,15,0, + 17,128,49,128,49,128,51,0,62,0,60,0,28,254,124,120, + 126,48,207,48,199,160,195,224,193,240,97,252,62,56,3,8, + 8,6,2,9,96,224,192,192,192,192,192,192,5,22,22,8, + 2,252,8,24,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,96,96,96,48,24,8,5,22,22,8,1,252,128,192, + 96,48,48,48,24,24,24,24,24,24,24,24,24,24,48,48, + 48,96,192,128,9,10,20,10,1,8,24,0,24,0,219,0, + 255,128,60,0,62,0,255,0,219,0,24,0,24,0,8,8, + 8,10,1,2,24,24,24,255,24,24,24,24,4,7,7,6, + 1,252,48,240,48,48,32,96,64,7,1,1,8,1,5,254, + 4,3,3,6,1,0,96,240,224,11,22,44,11,0,252,0, + 96,0,192,0,192,1,128,1,128,3,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,24,0,56, + 0,48,0,48,0,96,0,96,0,192,0,10,14,28,12,1, + 0,30,0,51,0,97,128,97,128,225,192,225,192,225,192,225, + 192,225,192,225,192,97,128,97,128,51,0,30,0,8,14,14, + 12,2,0,8,120,248,24,24,24,24,24,24,24,24,24,24, + 255,8,14,14,11,2,0,62,103,227,195,3,6,4,12,24, + 48,33,65,255,255,9,14,28,11,1,0,30,0,99,0,227, + 0,67,0,3,0,6,0,31,0,7,128,3,128,1,128,1, + 128,1,128,67,0,190,0,10,14,28,12,1,0,1,0,7, + 0,7,0,15,0,27,0,19,0,51,0,99,0,99,0,255, + 192,3,0,3,0,3,0,15,192,9,14,28,12,1,0,63, + 128,63,0,32,0,96,0,96,0,126,0,67,0,1,128,1, + 128,1,128,1,128,1,128,195,0,62,0,10,14,28,12,1, + 0,7,0,28,0,48,0,96,0,64,0,223,0,225,128,192, + 192,192,192,192,192,192,192,96,128,49,128,30,0,10,14,28, + 12,1,0,127,192,255,128,129,128,129,128,3,0,3,0,2, + 0,6,0,6,0,12,0,12,0,24,0,56,0,48,0,9, + 14,28,11,1,0,62,0,113,128,241,128,241,128,249,128,127, + 0,63,0,63,128,99,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,12,1,0,31,0,35,128,65,128,192,192,192, + 192,192,192,192,192,97,192,62,192,0,128,1,128,3,0,14, + 0,56,0,4,10,10,6,1,0,224,240,96,0,0,0,0, + 96,240,224,4,15,15,6,1,252,96,240,224,0,0,0,0, + 0,48,240,48,48,32,96,64,9,7,14,10,1,3,1,128, + 15,128,124,0,224,0,248,0,31,0,3,128,9,4,8,10, + 1,4,255,128,0,0,0,0,255,128,9,7,14,10,1,3, + 192,0,248,0,31,0,3,128,31,0,240,0,128,0,9,16, + 32,10,1,0,63,0,103,128,227,128,227,128,3,128,7,0, + 7,0,14,0,12,0,24,0,24,0,24,0,0,0,28,0, + 60,0,56,0,18,20,60,20,1,251,1,248,0,7,254,0, + 28,15,0,56,3,128,48,1,128,97,233,192,99,24,192,194, + 24,192,198,24,192,198,24,192,198,24,192,198,24,128,199,57, + 128,227,255,0,97,222,0,112,0,0,56,1,0,62,7,0, + 15,252,0,3,240,0,14,14,28,14,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,13,14,28,14,0,0,127,128, + 176,192,48,96,48,96,48,96,48,192,63,224,48,112,48,56, + 48,56,48,56,48,56,48,112,255,224,11,14,28,13,1,0, + 15,192,49,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,192,0,224,0,112,96,127,128,31,0,14,14,28,15, + 0,0,127,192,240,240,48,56,48,24,48,28,48,28,48,28, + 48,28,48,28,48,28,48,24,48,56,48,240,255,192,12,14, + 28,12,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 11,14,28,12,0,0,255,224,56,96,56,32,56,32,56,0, + 56,0,63,128,57,0,56,0,56,0,56,0,56,0,56,0, + 254,0,12,14,28,14,1,0,15,192,16,224,32,64,96,0, + 64,0,192,0,192,0,192,0,193,240,192,96,96,96,96,96, + 48,96,15,128,16,14,28,16,0,0,252,63,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,252,63,6,14,14,8,1,0,252,48,48,48, + 48,48,48,48,48,48,48,48,48,252,10,19,38,8,253,251, + 15,192,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 38,0,124,0,248,0,13,14,28,14,0,0,252,248,48,224, + 48,192,49,128,51,0,54,0,60,0,62,0,55,0,51,128, + 49,192,48,224,48,120,252,120,11,14,28,12,0,0,252,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,96,48,64,255,192,18,14,42,19,1,0, + 240,7,128,120,15,0,120,15,0,124,15,0,124,31,0,108, + 23,0,110,55,0,102,55,0,103,103,0,99,103,0,99,199, + 0,99,199,0,97,135,0,241,143,192,15,14,28,15,0,0, + 248,126,56,24,60,24,62,24,54,24,55,24,51,152,49,152, + 49,216,48,248,48,120,48,56,48,56,252,24,12,14,28,14, + 1,0,15,128,48,192,96,96,64,96,192,48,192,48,192,48, + 192,48,192,48,192,48,96,96,96,64,48,128,31,0,12,14, + 28,13,0,0,127,192,176,224,48,48,48,48,48,48,48,48, + 48,96,55,128,48,0,48,0,48,0,48,0,48,0,252,0, + 15,18,36,14,1,252,15,128,48,192,96,96,64,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 31,0,1,192,0,228,0,126,0,24,14,14,28,14,0,0, + 127,192,240,224,48,48,48,48,48,48,48,96,63,192,51,128, + 49,192,49,192,48,224,48,112,48,124,252,60,10,14,28,12, + 1,0,31,128,97,192,192,128,192,0,240,0,124,0,63,0, + 15,128,3,192,1,192,128,192,192,128,225,128,254,0,12,14, + 28,13,1,0,255,240,198,48,134,16,134,16,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 15,14,28,15,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,14,28,15,0,0,252,62,56,8,56,24,56,16, + 28,48,28,48,14,32,14,96,6,96,7,64,7,192,3,128, + 3,128,1,0,19,14,42,20,0,0,252,99,224,48,96,192, + 56,112,192,56,240,128,56,241,128,24,185,128,25,153,128,29, + 29,0,29,29,0,15,15,0,14,15,0,14,7,0,14,6, + 0,4,6,0,14,14,28,14,0,0,252,124,56,48,28,96, + 28,96,14,192,7,128,7,128,7,128,7,192,12,224,24,224, + 24,112,48,56,248,252,13,14,28,14,0,0,240,120,56,48, + 28,96,28,96,14,192,6,128,7,128,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,11,14,28,13,1,0,127,224, + 193,192,195,128,131,128,7,0,15,0,14,0,28,0,28,0, + 56,0,120,32,112,96,224,96,255,224,6,21,21,8,2,253, + 248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,252,10,22,44,11,0,252,192,0,96,0,96, + 0,48,0,48,0,48,0,24,0,24,0,28,0,12,0,12, + 0,6,0,6,0,6,0,3,0,3,0,3,0,1,128,1, + 128,1,192,0,192,0,192,5,21,21,7,1,253,248,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,248,9,11,22,11,1,6,8,0,12,0,28,0,22,0, + 54,0,34,0,35,0,99,0,65,128,65,128,129,128,10,1, + 2,11,1,253,255,192,5,5,5,7,0,12,224,224,112,56, + 8,10,10,20,11,1,0,62,0,99,0,227,0,3,0,63, + 0,99,0,195,0,195,0,255,192,123,0,11,17,34,12,0, + 0,96,0,224,0,96,0,96,0,96,0,96,0,96,0,119, + 128,127,192,112,224,96,96,96,96,96,96,96,64,96,192,127, + 128,30,0,9,10,20,10,1,0,31,0,99,128,65,0,192, + 0,192,0,192,0,192,0,225,0,127,128,60,0,12,17,34, + 13,1,0,0,192,3,192,0,192,0,192,0,192,0,192,0, + 192,31,192,33,192,64,192,192,192,192,192,192,192,192,192,97, + 192,127,240,60,192,9,10,20,11,1,0,30,0,99,0,65, + 128,193,128,255,128,192,0,192,0,225,128,127,0,62,0,9, + 17,34,8,0,0,7,128,25,0,16,0,48,0,48,0,48, + 0,48,0,126,0,176,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,124,0,11,15,30,12,1,251,30,96,35, + 192,97,128,97,128,97,128,115,0,62,0,48,0,124,0,63, + 128,111,192,192,192,192,192,225,128,62,0,12,17,34,13,1, + 0,48,0,240,0,48,0,48,0,48,0,48,0,48,0,51, + 128,63,192,56,192,48,192,48,192,48,192,48,192,48,192,48, + 192,249,240,5,15,15,7,1,0,48,112,48,0,0,112,240, + 48,48,48,48,48,48,48,248,7,20,20,6,254,251,6,14, + 6,0,0,6,14,6,6,6,6,6,6,6,6,6,6,68, + 248,240,12,17,34,13,1,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,49,240,49,192,51,0,54,0,62,0, + 55,0,51,128,49,192,49,224,248,240,6,17,17,7,1,0, + 48,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,18,10,30,19,1,0,103,142,0,255,255,0,112,227,0, + 96,195,0,96,195,0,96,195,0,96,195,0,96,195,0,96, + 195,0,241,231,192,12,10,20,13,1,0,51,128,247,192,56, + 192,48,192,48,192,48,192,48,192,48,192,48,192,249,240,10, + 10,20,12,1,0,30,0,33,128,65,128,192,192,192,192,192, + 192,192,192,96,128,113,0,30,0,11,15,30,13,1,251,51, + 128,255,192,56,224,48,96,48,96,48,96,48,96,48,192,63, + 128,55,0,48,0,48,0,48,0,48,0,252,0,11,15,30, + 13,1,251,30,64,97,192,64,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,0,192,0,192,0,192,0,192,3, + 224,9,10,20,10,1,0,119,128,255,128,121,128,113,0,112, + 0,112,0,112,0,112,0,112,0,252,0,8,10,10,10,1, + 0,126,198,198,240,124,63,135,131,194,252,8,14,14,9,0, + 0,16,48,48,48,127,176,48,48,48,48,48,50,63,24,12, + 10,20,13,1,0,97,192,224,192,96,192,96,192,96,192,96, + 192,96,192,97,192,127,240,60,192,12,10,20,12,0,0,248, + 240,112,64,56,192,56,128,28,128,29,128,13,0,15,0,6, + 0,6,0,16,10,20,17,0,0,248,135,112,194,49,198,57, + 230,59,100,27,124,30,124,14,56,12,56,12,16,12,10,20, + 12,0,0,253,240,56,192,29,128,31,0,14,0,15,0,27, + 128,17,192,33,224,243,240,13,15,30,12,255,251,124,120,56, + 32,28,96,28,64,14,192,14,192,6,128,7,128,7,0,3, + 0,3,0,6,0,70,0,124,0,248,0,9,10,20,11,1, + 0,255,128,199,0,135,0,14,0,28,0,60,0,57,0,112, + 128,225,128,255,128,5,22,22,8,2,252,24,48,96,96,96, + 96,48,48,48,48,96,224,48,48,48,48,96,96,96,96,48, + 24,2,24,24,5,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,5, + 22,22,8,1,252,192,96,48,48,48,48,96,96,96,96,56, + 48,96,96,96,96,48,48,48,48,96,192,10,4,8,11,1, + 5,48,64,124,128,159,0,135,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=23 h=27 x= 3 y=16 dx=23 dy= 0 ascent=23 len=69 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x=-4 y=-7 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17[7600] U8G_SECTION(".progmem.u8g_font_gdb17") = { + 0,42,39,242,246,17,4,81,9,172,32,255,250,23,249,21, + 250,0,0,0,7,0,0,4,21,21,8,2,255,48,240,240, + 240,240,112,112,96,96,96,96,96,96,96,64,0,0,112,240, + 240,224,9,9,18,13,2,11,113,128,231,128,231,128,231,128, + 227,0,227,0,99,0,99,0,99,0,13,15,30,14,1,2, + 2,32,6,96,6,96,6,96,12,96,63,248,76,192,24,128, + 25,128,255,224,51,0,51,0,51,0,35,0,102,0,11,20, + 40,13,1,254,6,0,6,0,31,128,127,224,230,224,198,96, + 198,0,246,0,126,0,63,128,7,192,6,224,6,96,198,96, + 198,96,246,192,255,192,31,0,6,0,6,0,18,17,51,20, + 1,0,0,1,0,60,6,0,102,14,0,195,12,0,195,24, + 0,195,48,0,195,112,0,195,96,0,102,192,0,61,143,0, + 3,144,128,3,48,192,6,48,192,12,48,192,24,48,192,56, + 25,128,48,15,0,17,19,57,18,1,0,7,128,0,25,224, + 0,16,224,0,48,224,0,48,224,0,49,192,0,63,128,0, + 63,0,0,30,0,0,62,63,128,127,29,0,127,140,0,239, + 140,0,231,204,0,227,248,0,225,248,0,96,252,0,112,255, + 0,31,14,128,4,9,9,7,2,11,112,224,224,224,224,224, + 96,96,96,7,25,25,9,2,252,4,14,28,56,48,112,112, + 112,224,224,224,224,224,224,224,224,224,96,112,112,48,56,28, + 12,6,7,25,25,9,0,252,64,224,112,56,24,28,28,28, + 14,14,14,14,14,14,14,14,14,28,28,28,56,56,112,96, + 192,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0,4,13, + 13,7,2,255,112,240,240,224,0,0,0,0,0,112,240,240, + 224,5,17,17,7,1,251,56,120,120,48,0,0,0,0,0, + 48,248,120,56,48,48,96,192,11,9,18,12,1,3,0,96, + 3,192,31,128,252,0,240,0,248,0,63,0,7,192,0,224, + 11,5,10,12,1,5,255,224,0,0,0,0,0,0,255,224, + 11,9,18,12,1,3,192,0,248,0,63,0,7,192,1,224, + 15,192,126,0,240,0,192,0,9,20,40,12,1,255,63,0, + 119,128,227,128,227,128,195,128,3,128,3,0,7,0,6,0, + 14,0,12,0,12,0,12,0,12,0,0,0,0,0,28,0, + 60,0,60,0,56,0,20,23,69,23,2,251,0,252,0,3, + 255,0,14,7,128,24,1,192,48,0,224,32,0,96,96,242, + 112,97,142,48,195,14,48,195,14,48,199,14,48,199,14,48, + 199,14,48,199,14,96,199,158,96,227,255,192,99,239,128,113, + 199,0,120,0,0,60,0,64,31,3,192,15,255,0,3,252, + 0,17,17,51,17,0,0,0,192,0,1,192,0,3,192,0, + 3,224,0,2,224,0,6,240,0,6,112,0,6,112,0,12, + 120,0,12,56,0,15,248,0,24,28,0,24,28,0,16,28, + 0,48,14,0,48,14,0,252,63,128,13,17,34,16,1,0, + 127,192,248,224,56,112,56,112,56,112,56,112,56,224,63,192, + 56,240,56,112,56,56,56,56,56,56,56,56,56,48,56,112, + 255,192,13,17,34,15,1,0,7,240,24,120,48,48,112,0, + 96,0,96,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,0,120,8,60,56,31,224,15,128,16,17,34,17,0,0, + 127,224,248,120,56,60,56,30,56,30,56,15,56,15,56,15, + 56,15,56,15,56,15,56,15,56,30,56,30,56,60,56,120, + 255,224,13,17,34,14,1,0,255,240,120,48,120,48,120,32, + 120,32,120,0,120,0,120,0,127,192,120,128,120,0,120,0, + 120,0,120,16,120,24,120,48,255,240,12,17,34,14,1,0, + 255,240,120,48,120,48,120,48,120,32,120,0,120,0,120,0, + 127,192,120,128,120,0,120,0,120,0,120,0,120,0,120,0, + 254,0,14,17,34,16,1,0,3,240,12,120,48,48,48,0, + 112,0,96,0,224,0,224,0,224,0,224,252,224,56,224,56, + 112,56,112,56,60,56,31,240,7,192,17,17,51,18,0,0, + 254,63,128,60,30,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,63,254,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,7,17,17,9,1,0,254,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,12,22,44,9,252,251, + 7,240,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,128,1,128,51,0,126,0,252,0,16,17,34,17, + 1,0,254,126,56,56,56,48,56,112,56,224,57,192,59,128, + 63,0,63,0,59,128,57,192,57,224,56,240,56,120,56,60, + 56,31,254,30,13,17,34,14,1,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,8,56,24,56,24,255,240,21,17,51,23, + 1,0,248,1,248,56,1,224,60,1,224,60,3,224,62,3, + 224,62,6,224,63,6,224,55,12,224,39,140,224,35,156,224, + 35,152,224,33,216,224,33,240,224,97,240,224,96,224,224,112, + 224,224,248,67,248,18,17,51,18,0,0,248,15,192,124,3, + 0,60,3,0,62,3,0,63,3,0,55,131,0,51,195,0, + 51,195,0,49,227,0,48,243,0,48,123,0,48,123,0,48, + 63,0,48,31,0,48,15,0,48,7,0,252,3,0,15,17, + 34,17,1,0,7,192,24,112,48,56,48,28,96,28,96,14, + 224,14,224,14,224,14,224,14,224,14,224,12,112,28,112,24, + 56,24,28,32,7,192,14,17,34,15,0,0,127,224,248,120, + 56,56,56,28,56,28,56,28,56,28,56,56,60,112,59,224, + 56,0,56,0,56,0,56,0,56,0,56,0,254,0,18,22, + 66,17,1,251,7,192,0,24,112,0,48,56,0,48,28,0, + 96,28,0,96,14,0,224,14,0,224,14,0,224,14,0,224, + 14,0,224,14,0,224,14,0,112,28,0,112,28,0,56,24, + 0,28,48,0,7,192,0,0,112,0,0,60,64,0,31,192, + 0,15,128,0,3,0,16,17,34,16,0,0,63,192,248,112, + 56,56,56,56,56,56,56,56,56,112,63,240,63,192,57,192, + 56,224,56,224,56,112,56,120,56,60,56,63,254,30,12,17, + 34,14,1,0,15,240,48,240,64,32,192,0,224,0,248,0, + 126,0,63,128,31,192,7,224,0,240,0,112,0,48,192,48, + 192,32,240,64,255,128,15,17,34,16,0,0,255,254,195,134, + 195,134,131,134,131,132,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,7,192,15,224,17,17, + 51,18,0,0,254,31,128,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,4,0,28,12, + 0,14,24,0,3,224,0,18,17,51,18,0,0,254,15,192, + 56,7,0,60,6,0,28,6,0,28,6,0,30,12,0,14, + 12,0,15,24,0,7,24,0,7,24,0,7,176,0,3,176, + 0,3,176,0,1,224,0,1,224,0,1,224,0,0,128,0, + 23,17,51,23,0,0,254,24,126,56,24,24,56,56,24,56, + 60,16,28,60,48,28,110,48,28,110,48,28,110,48,14,199, + 96,14,199,96,14,135,96,15,131,224,15,131,224,7,1,192, + 7,1,192,7,1,192,6,0,128,17,17,51,17,0,0,255, + 63,0,60,12,0,28,24,0,30,24,0,15,48,0,7,112, + 0,7,224,0,3,192,0,1,192,0,3,224,0,3,240,0, + 6,112,0,12,120,0,12,60,0,24,28,0,56,30,0,252, + 63,128,16,17,34,17,0,0,248,31,60,14,28,12,14,24, + 15,24,7,48,7,48,3,224,3,224,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,7,240,13,17,34,15,1,0, + 127,248,96,240,64,240,193,224,1,192,3,192,7,128,7,128, + 15,0,15,0,30,0,60,0,60,0,120,24,120,24,240,24, + 255,248,6,25,25,9,3,252,252,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 252,11,25,50,13,1,252,192,0,192,0,224,0,96,0,112, + 0,112,0,48,0,56,0,24,0,24,0,28,0,12,0,14, + 0,6,0,6,0,7,0,3,0,3,0,3,128,1,128,1, + 192,0,192,0,192,0,224,0,96,6,25,25,8,0,252,252, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,252,11,13,26,13,1,7,6,0, + 14,0,14,0,15,0,27,0,19,0,17,128,49,128,33,192, + 96,192,96,192,64,96,192,64,11,1,2,13,1,253,255,224, + 6,6,6,9,0,14,224,240,112,56,24,12,12,12,24,13, + 1,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,14,20,40,15,0,0, + 24,0,248,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,240,59,248,62,56,56,28,56,12,56,12,56,12,56,8, + 56,8,60,16,63,224,7,128,11,12,24,12,1,0,15,224, + 48,192,112,192,96,64,224,0,224,0,224,0,224,0,240,64, + 120,224,63,192,31,0,14,20,40,15,1,0,0,48,1,240, + 0,112,0,112,0,112,0,112,0,112,0,112,15,240,48,240, + 96,112,96,112,224,112,224,112,224,112,240,112,248,240,127,244, + 63,124,30,48,11,12,24,13,1,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,11,19,38,9,1,0,3,224,12,192,24,0,24,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,255,0,14,18, + 36,15,0,250,15,140,16,252,32,112,96,48,96,48,112,48, + 56,96,31,128,28,0,124,0,127,224,63,248,127,252,240,60, + 224,28,224,24,112,48,31,192,15,20,40,16,1,0,24,0, + 248,0,56,0,56,0,56,0,56,0,56,0,56,0,56,240, + 59,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,7,18,18,8,1,0,56,120,112,0, + 0,0,56,248,56,56,56,56,56,56,56,56,56,254,10,24, + 48,8,252,250,1,192,3,192,3,128,0,0,0,0,0,0, + 3,128,15,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,0,102,0, + 252,0,120,0,14,20,40,15,1,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,252,56,112,56,224, + 57,128,59,0,63,0,59,128,57,192,56,224,56,240,56,120, + 252,60,7,20,20,8,1,0,24,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,23,12,36,23, + 0,0,25,241,240,251,255,248,62,62,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,254,254,15,12,24,16,1,0,24,240,251,248, + 62,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,254,12,12,24,14,1,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,13,18,36,15,1,250,25,224,251,240,60,112,56,56, + 56,24,56,24,56,24,56,24,56,16,60,48,63,224,59,192, + 56,0,56,0,56,0,56,0,56,0,254,0,14,18,36,15, + 1,250,15,16,48,240,96,112,96,112,224,112,224,112,224,112, + 240,112,248,240,127,240,127,112,28,112,0,112,0,112,0,112, + 0,112,0,112,1,252,11,12,24,12,1,0,49,224,247,224, + 124,192,120,64,120,64,120,0,120,0,120,0,120,0,120,0, + 120,0,254,0,9,12,24,11,1,0,62,0,71,0,194,0, + 224,0,248,0,126,0,63,0,15,128,131,128,193,128,225,0, + 254,0,10,17,34,10,0,0,8,0,24,0,56,0,56,0, + 56,0,255,192,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,128,63,192,30,0,15,12,24,15,0,0, + 56,56,248,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,250,63,190,30,56,14,12,24,14,0,0,252,124, + 120,48,56,48,60,32,28,96,30,96,14,192,14,192,7,128, + 7,128,7,128,3,0,19,12,36,19,0,0,252,33,224,120, + 96,192,56,112,192,56,241,128,28,249,128,28,185,128,29,159, + 0,15,31,0,15,31,0,15,14,0,6,14,0,4,4,0, + 14,12,24,14,0,0,254,252,60,112,28,96,30,192,15,128, + 7,128,7,128,15,192,25,224,24,240,48,120,249,252,15,18, + 36,14,255,250,126,62,60,24,28,24,30,16,14,48,15,48, + 7,96,7,96,3,192,3,192,3,192,1,128,1,128,3,0, + 3,0,126,0,124,0,248,0,11,12,24,13,1,0,127,224, + 67,192,67,192,135,128,15,0,15,0,30,0,60,0,56,32, + 120,96,240,96,255,224,7,25,25,9,1,252,2,14,28,56, + 56,56,56,28,28,28,28,56,240,248,28,28,28,28,56,56, + 56,56,28,14,6,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,7,25,25,9,1,252,192,224,112,56, + 56,56,56,112,112,112,112,62,30,56,112,112,112,112,56,56, + 56,56,112,224,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,7,0,0,4,19,19,8,2,249, + 112,240,240,224,32,96,96,96,96,96,96,112,112,112,240,240, + 240,240,192,10,17,34,14,2,255,12,0,12,0,15,128,63, + 192,109,192,108,192,204,0,204,0,204,0,204,0,204,0,236, + 64,125,192,63,128,30,0,12,0,12,0,13,16,32,14,0, + 0,3,240,6,56,12,16,28,16,28,16,60,0,60,0,60, + 0,255,192,60,0,60,0,60,16,56,24,56,24,127,248,255, + 240,12,11,22,14,1,2,192,48,239,112,112,224,96,96,96, + 96,96,96,96,96,112,224,111,96,192,48,128,16,15,16,32, + 14,255,0,248,126,120,56,60,48,30,48,30,96,15,96,7, + 192,7,192,7,192,3,128,63,248,3,128,3,128,3,128,3, + 128,15,224,2,27,27,6,2,251,192,192,192,192,192,192,192, + 192,192,192,192,192,128,0,0,192,192,192,192,192,192,192,192, + 192,192,192,192,10,19,38,13,2,0,31,0,35,128,97,0, + 113,0,120,0,62,0,127,128,207,128,195,192,225,192,240,192, + 124,192,63,128,31,128,7,128,65,128,65,128,97,0,126,0, + 9,4,8,11,1,14,115,128,247,128,247,128,231,0,18,18, + 54,20,1,0,3,240,0,14,28,0,24,6,0,48,3,0, + 97,241,128,102,57,128,198,16,192,204,0,192,204,0,192,204, + 0,192,204,0,192,204,0,192,102,1,128,103,25,128,49,243, + 0,24,6,0,12,12,0,3,240,0,6,9,9,7,1,8, + 120,216,24,120,216,216,252,0,252,11,12,24,14,1,0,4, + 32,8,96,24,192,49,192,115,128,231,128,231,128,115,128,49, + 192,24,192,8,96,4,32,12,6,12,14,1,2,127,240,128, + 48,0,48,0,48,0,48,0,32,8,1,1,10,1,6,255, + 10,9,18,10,255,10,30,0,97,128,255,128,219,192,222,192, + 220,192,251,192,97,128,30,0,11,2,4,13,1,16,127,224, + 255,224,6,7,7,10,2,10,56,76,204,204,204,200,112,10, + 12,24,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,0,0,0,0,255,192,7,10,10, + 9,1,8,60,102,230,6,12,24,16,50,98,254,7,10,10, + 9,1,8,60,102,70,6,28,6,6,6,142,120,6,6,6, + 9,3,14,56,60,112,96,192,128,15,18,36,15,0,250,24, + 24,248,120,56,56,56,56,56,56,56,56,56,56,56,56,60, + 120,63,248,63,190,55,24,48,0,48,0,56,0,56,0,60, + 0,48,0,15,20,40,17,1,253,15,254,49,248,113,152,225, + 152,225,152,225,152,225,152,113,152,121,152,31,152,1,152,1, + 152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,7, + 254,4,4,4,6,1,7,112,240,240,224,5,6,6,6,1, + 250,32,96,120,56,112,224,7,10,10,9,1,8,24,248,24, + 24,24,24,24,24,24,126,7,9,9,8,0,8,56,76,198, + 198,198,228,120,0,254,11,12,24,14,2,0,132,0,198,0, + 99,0,115,128,57,192,61,224,61,224,57,192,115,128,99,0, + 198,0,132,0,15,16,32,17,1,0,48,6,240,12,48,24, + 48,48,48,48,48,96,48,192,253,128,1,140,3,28,6,44, + 12,44,12,76,24,254,48,12,96,62,15,16,32,17,1,0, + 48,6,240,12,48,24,48,24,48,48,48,96,48,192,252,192, + 1,188,3,102,6,70,6,12,12,8,24,16,48,34,112,126, + 15,16,32,17,1,0,56,6,204,12,12,24,56,48,12,48, + 12,96,140,192,121,128,1,140,3,28,6,60,12,44,12,76, + 24,254,48,12,96,62,10,19,38,12,1,249,14,0,30,0, + 30,0,28,0,0,0,6,0,6,0,6,0,14,0,12,0, + 24,0,56,0,112,0,224,0,224,192,225,192,225,192,243,128, + 62,0,17,23,69,17,0,0,6,0,0,15,0,0,7,128, + 0,1,192,0,0,96,0,0,0,0,0,192,0,1,192,0, + 3,192,0,3,224,0,2,224,0,6,240,0,6,112,0,6, + 112,0,12,120,0,12,56,0,15,248,0,24,28,0,24,28, + 0,16,28,0,48,14,0,48,14,0,252,63,128,17,23,69, + 17,0,0,0,48,0,0,120,0,1,224,0,3,128,0,2, + 0,0,0,0,0,0,192,0,1,192,0,3,192,0,3,224, + 0,2,224,0,6,240,0,6,112,0,6,112,0,12,120,0, + 12,56,0,15,248,0,24,28,0,24,28,0,16,28,0,48, + 14,0,48,14,0,252,63,128,17,23,69,17,0,0,1,192, + 0,3,224,0,7,240,0,14,48,0,8,24,0,0,0,0, + 0,192,0,1,192,0,3,192,0,3,224,0,2,224,0,6, + 240,0,6,112,0,6,112,0,12,120,0,12,56,0,15,248, + 0,24,28,0,24,28,0,16,28,0,48,14,0,48,14,0, + 252,63,128,17,22,66,17,0,0,7,140,0,15,248,0,15, + 240,0,16,96,0,0,0,0,0,192,0,1,192,0,3,192, + 0,3,224,0,2,224,0,6,240,0,6,112,0,6,112,0, + 12,120,0,12,56,0,15,248,0,24,28,0,24,28,0,16, + 28,0,48,14,0,48,14,0,252,63,128,17,22,66,17,0, + 0,7,56,0,15,120,0,15,120,0,6,48,0,0,0,0, + 0,192,0,1,192,0,3,192,0,3,224,0,2,224,0,6, + 240,0,6,112,0,6,112,0,12,120,0,12,56,0,15,248, + 0,24,28,0,24,28,0,16,28,0,48,14,0,48,14,0, + 252,63,128,17,23,69,17,0,0,3,224,0,6,96,0,6, + 96,0,7,96,0,3,128,0,0,0,0,0,192,0,1,192, + 0,3,192,0,3,224,0,2,224,0,6,240,0,6,112,0, + 6,112,0,12,120,0,12,56,0,15,248,0,24,28,0,24, + 28,0,16,28,0,48,14,0,48,14,0,252,63,128,21,17, + 51,22,0,0,7,255,240,1,248,48,1,248,48,3,184,48, + 3,184,48,3,56,0,7,56,0,6,56,0,7,255,224,12, + 56,64,12,56,0,28,56,0,24,56,0,24,56,8,48,56, + 24,48,56,24,248,255,248,14,23,46,15,1,250,7,240,24, + 120,48,48,112,0,96,0,96,0,224,0,224,0,224,0,224, + 0,224,0,240,0,112,0,120,8,60,60,63,240,15,192,1, + 0,3,128,3,192,1,192,3,128,6,0,13,23,46,14,1, + 0,24,0,60,0,94,0,7,0,1,128,0,0,255,240,120, + 48,120,48,120,32,120,32,120,0,120,0,120,0,127,192,120, + 128,120,0,120,0,120,0,120,16,120,24,120,48,255,240,13, + 23,46,14,1,0,1,192,3,224,7,128,14,0,24,0,0, + 0,255,240,120,48,120,48,120,32,120,32,120,0,120,0,120, + 0,127,192,120,128,120,0,120,0,120,0,120,16,120,24,120, + 48,255,240,13,23,46,14,1,0,7,0,15,0,31,128,56, + 192,32,96,0,0,255,240,120,48,120,48,120,32,120,32,120, + 0,120,0,120,0,127,192,120,128,120,0,120,0,120,0,120, + 16,120,24,120,48,255,240,13,22,44,14,1,0,28,224,61, + 224,61,224,24,192,0,0,255,240,120,48,120,48,120,32,120, + 32,120,0,120,0,120,0,127,192,120,128,120,0,120,0,120, + 0,120,16,120,24,120,48,255,240,8,23,23,9,0,0,96, + 240,120,28,6,0,127,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,127,8,23,23,9,1,0,6,31,60,112, + 64,0,254,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,9,23,46,9,0,0,28,0,62,0,126,0,227, + 0,129,128,0,0,127,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,127,0,9,22,44,9,0,0,115,128,247, + 128,247,128,99,0,0,0,127,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,127,0,16,17,34,17,0,0,63, + 224,248,120,56,60,56,30,56,30,56,15,56,15,56,15,255, + 143,56,15,56,15,56,15,56,30,56,30,56,60,56,120,255, + 224,18,22,66,18,0,0,3,204,0,7,248,0,15,248,0, + 8,112,0,0,0,0,248,15,192,124,3,0,60,3,0,62, + 3,0,63,3,0,55,131,0,51,195,0,51,195,0,49,227, + 0,48,243,0,48,123,0,48,123,0,48,63,0,48,31,0, + 48,15,0,48,7,0,252,3,0,15,23,46,17,1,0,12, + 0,30,0,15,0,3,128,0,64,0,0,7,192,24,112,48, + 56,48,28,96,28,96,14,224,14,224,14,224,14,224,14,224, + 14,224,12,112,28,112,24,56,24,28,32,7,192,15,23,46, + 17,1,0,0,96,0,240,3,224,7,0,4,0,0,0,7, + 192,24,112,48,56,48,28,96,28,96,14,224,14,224,14,224, + 14,224,14,224,14,224,12,112,28,112,24,56,24,28,32,7, + 192,15,23,46,17,1,0,3,128,7,192,15,224,28,96,16, + 48,0,0,7,192,24,112,48,56,48,28,96,28,96,14,224, + 14,224,14,224,14,224,14,224,14,224,12,112,28,112,24,56, + 24,28,32,7,192,15,22,44,17,1,0,15,24,31,240,31, + 224,48,192,0,0,7,192,24,112,48,56,48,28,96,28,96, + 14,224,14,224,14,224,14,224,14,224,14,224,12,112,28,112, + 24,56,24,28,32,7,192,15,22,44,17,1,0,14,112,30, + 240,30,240,12,96,0,0,7,192,24,112,48,56,48,28,96, + 28,96,14,224,14,224,14,224,14,224,14,224,14,224,12,112, + 28,112,24,56,24,28,32,7,192,9,9,18,11,1,3,193, + 128,227,128,119,0,62,0,28,0,62,0,119,0,227,128,193, + 128,15,18,36,17,1,255,7,238,8,124,56,56,48,60,112, + 124,96,254,224,238,225,206,227,142,227,14,231,14,254,12,124, + 28,124,24,56,48,124,32,239,192,128,0,17,23,69,18,0, + 0,3,0,0,7,128,0,3,192,0,0,224,0,0,48,0, + 0,0,0,254,31,128,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,6,0,56,6, + 0,56,6,0,56,6,0,56,6,0,56,4,0,28,12,0, + 14,24,0,3,224,0,17,23,69,18,0,0,0,56,0,0, + 124,0,0,240,0,1,192,0,3,0,0,0,0,0,254,31, + 128,56,6,0,56,6,0,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,4,0,28,12,0,14,24,0,3,224, + 0,17,23,69,18,0,0,0,224,0,1,224,0,3,240,0, + 7,24,0,4,12,0,0,0,0,254,31,128,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,6,0,56,6, + 0,56,6,0,56,6,0,56,6,0,56,6,0,56,6,0, + 56,4,0,28,12,0,14,24,0,3,224,0,17,22,66,18, + 0,0,3,156,0,7,188,0,7,188,0,3,24,0,0,0, + 0,254,31,128,56,6,0,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,4,0,28,12,0,14,24, + 0,3,224,0,16,23,46,17,0,0,0,48,0,248,1,224, + 3,128,2,0,0,0,248,31,60,14,28,12,14,24,15,24, + 7,48,7,48,3,224,3,224,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,7,240,14,17,34,15,0,0,254,0, + 56,0,56,0,63,192,56,112,56,56,56,28,56,28,56,28, + 56,28,56,56,56,112,59,224,56,0,56,0,56,0,254,0, + 15,20,40,17,0,0,1,240,6,60,12,28,24,14,24,14, + 56,14,56,28,56,56,56,96,56,192,56,192,56,224,56,120, + 56,60,56,30,56,14,57,6,57,134,57,132,249,248,12,20, + 40,13,1,0,56,0,60,0,28,0,14,0,6,0,3,0, + 0,0,0,0,31,128,113,192,241,192,129,192,3,192,63,192, + 113,192,225,192,225,192,227,240,253,224,121,128,12,20,40,13, + 1,0,3,192,3,192,7,128,7,0,14,0,12,0,0,0, + 0,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,12,20,40,13,1,0, + 6,0,15,0,31,0,59,128,48,192,96,64,0,0,0,0, + 31,128,113,192,241,192,129,192,3,192,63,192,113,192,225,192, + 225,192,227,240,253,224,121,128,12,19,38,13,1,0,0,32, + 28,96,63,192,71,192,67,128,0,0,0,0,31,128,113,192, + 241,192,129,192,3,192,63,192,113,192,225,192,225,192,227,240, + 253,224,121,128,12,18,36,13,1,0,57,192,61,224,57,192, + 57,192,0,0,0,0,31,128,113,192,241,192,129,192,3,192, + 63,192,113,192,225,192,225,192,227,240,253,224,121,128,12,19, + 38,13,1,0,15,0,27,0,25,128,27,0,30,0,0,0, + 0,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,18,12,36,20,1,0, + 7,158,0,31,227,0,56,225,128,112,193,128,64,193,128,15, + 255,0,56,192,0,96,192,0,224,224,128,227,241,192,254,127, + 0,124,62,0,11,18,36,12,1,250,15,224,48,192,112,192, + 96,64,224,0,224,0,224,0,224,0,240,64,120,192,63,128, + 31,0,4,0,14,0,15,0,7,0,14,0,24,0,11,20, + 40,13,1,0,60,0,60,0,30,0,14,0,7,0,1,0, + 0,0,0,0,15,0,49,192,112,192,96,224,224,224,255,192, + 224,0,224,0,240,64,120,224,63,192,31,0,11,20,40,13, + 1,0,1,192,3,192,3,128,7,0,6,0,12,0,0,0, + 0,0,15,0,49,192,112,192,96,224,224,224,255,192,224,0, + 224,0,240,64,120,224,63,192,31,0,11,20,40,13,1,0, + 6,0,15,0,31,128,29,128,48,192,32,96,0,0,0,0, + 15,0,49,192,112,192,96,224,224,224,255,192,224,0,224,0, + 240,64,120,224,63,192,31,0,11,18,36,13,1,0,24,192, + 61,224,61,224,57,192,0,0,0,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,8,20,20,8,0,0,240,240,120,24,12,4,0,0, + 28,124,28,28,28,28,28,28,28,28,28,127,7,20,20,8, + 1,0,14,30,28,56,48,96,0,0,56,248,56,56,56,56, + 56,56,56,56,56,254,9,20,40,8,0,0,24,0,60,0, + 126,0,118,0,195,0,129,128,0,0,0,0,28,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,127,0,9,18,36,8,0,0,115,128,247,128,247,128, + 231,0,0,0,0,0,28,0,124,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,127,0,12,19, + 38,14,1,0,12,0,126,112,15,224,15,128,61,192,0,224, + 0,224,15,224,49,240,96,240,96,112,224,112,224,112,224,112, + 224,96,224,96,112,192,56,128,31,0,15,19,38,16,1,0, + 0,16,14,48,31,224,51,224,33,192,0,0,0,0,24,240, + 251,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,12,20,40,14,1,0,28,0,60,0, + 14,0,6,0,3,0,1,128,0,0,0,0,15,128,49,192, + 112,224,96,112,224,112,224,112,224,112,224,112,224,96,112,96, + 56,192,31,0,12,20,40,14,1,0,1,192,3,224,3,128, + 7,0,6,0,12,0,0,0,0,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,12,20,40,14,1,0,7,0,15,0,15,128,29,192, + 56,192,32,96,0,0,0,0,15,128,49,192,112,224,96,112, + 224,112,224,112,224,112,224,112,224,96,112,96,56,192,31,0, + 12,19,38,14,1,0,0,48,30,32,63,224,39,192,65,128, + 0,0,0,0,15,128,49,192,112,224,96,112,224,112,224,112, + 224,112,224,112,224,96,112,96,56,192,31,0,12,18,36,14, + 1,0,28,224,61,224,61,224,24,192,0,0,0,0,15,128, + 49,192,112,224,96,112,224,112,224,112,224,112,224,112,224,96, + 112,96,56,192,31,0,10,10,20,11,1,2,12,0,12,0, + 12,0,0,0,255,192,0,0,0,0,12,0,12,0,12,0, + 12,14,28,14,1,255,0,16,15,176,49,224,112,224,97,240, + 227,112,230,112,230,112,236,112,248,96,112,224,120,192,95,0, + 128,0,15,20,40,15,0,0,14,0,15,0,7,0,3,128, + 1,128,0,192,0,0,0,0,56,56,248,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,250,63,190,30,56, + 15,20,40,15,0,0,0,224,0,240,1,192,1,128,3,0, + 2,0,0,0,0,0,56,56,248,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,250,63,190,30,56,15,20, + 40,15,0,0,3,128,3,192,7,192,14,224,28,112,24,16, + 0,0,0,0,56,56,248,248,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,250,63,190,30,56,15,18,36,15, + 0,0,14,112,14,112,30,240,14,112,0,0,0,0,56,56, + 248,248,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,250,63,190,30,56,15,26,52,14,255,250,0,112,0,240, + 0,224,1,192,1,128,3,0,0,0,0,0,126,62,60,24, + 28,24,30,16,14,48,15,48,7,96,7,96,3,192,3,192, + 3,192,1,128,1,128,3,0,3,0,126,0,124,0,248,0, + 13,26,52,15,1,250,24,0,248,0,56,0,56,0,56,0, + 56,0,56,0,56,0,57,224,63,240,60,112,56,56,56,24, + 56,24,56,24,56,24,56,16,60,48,63,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,15,24,48,14,255,250, + 7,56,15,120,15,120,14,112,0,0,0,0,126,62,60,24, + 28,24,30,16,14,48,15,48,7,96,7,96,3,192,3,192, + 3,192,1,128,1,128,3,0,3,0,126,0,124,0,248,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 16 + Calculated Max Values w=12 h=25 x= 2 y= 9 dx=14 dy= 0 ascent=21 len=50 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =16 descent= 0 + X Font ascent =16 descent= 0 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17n[542] U8G_SECTION(".progmem.u8g_font_gdb17n") = { + 0,42,39,242,246,16,0,0,0,0,42,57,0,21,251,16, + 0,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=23 h=27 x= 3 y=14 dx=23 dy= 0 ascent=22 len=69 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x=-4 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17r[3540] U8G_SECTION(".progmem.u8g_font_gdb17r") = { + 0,42,39,242,246,17,4,81,9,172,32,127,250,22,250,21, + 250,0,0,0,7,0,0,4,21,21,8,2,255,48,240,240, + 240,240,112,112,96,96,96,96,96,96,96,64,0,0,112,240, + 240,224,9,9,18,13,2,11,113,128,231,128,231,128,231,128, + 227,0,227,0,99,0,99,0,99,0,13,15,30,14,1,2, + 2,32,6,96,6,96,6,96,12,96,63,248,76,192,24,128, + 25,128,255,224,51,0,51,0,51,0,35,0,102,0,11,20, + 40,13,1,254,6,0,6,0,31,128,127,224,230,224,198,96, + 198,0,246,0,126,0,63,128,7,192,6,224,6,96,198,96, + 198,96,246,192,255,192,31,0,6,0,6,0,18,17,51,20, + 1,0,0,1,0,60,6,0,102,14,0,195,12,0,195,24, + 0,195,48,0,195,112,0,195,96,0,102,192,0,61,143,0, + 3,144,128,3,48,192,6,48,192,12,48,192,24,48,192,56, + 25,128,48,15,0,17,19,57,18,1,0,7,128,0,25,224, + 0,16,224,0,48,224,0,48,224,0,49,192,0,63,128,0, + 63,0,0,30,0,0,62,63,128,127,29,0,127,140,0,239, + 140,0,231,204,0,227,248,0,225,248,0,96,252,0,112,255, + 0,31,14,128,4,9,9,7,2,11,112,224,224,224,224,224, + 96,96,96,7,25,25,9,2,252,4,14,28,56,48,112,112, + 112,224,224,224,224,224,224,224,224,224,96,112,112,48,56,28, + 12,6,7,25,25,9,0,252,64,224,112,56,24,28,28,28, + 14,14,14,14,14,14,14,14,14,28,28,28,56,56,112,96, + 192,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0,4,13, + 13,7,2,255,112,240,240,224,0,0,0,0,0,112,240,240, + 224,5,17,17,7,1,251,56,120,120,48,0,0,0,0,0, + 48,248,120,56,48,48,96,192,11,9,18,12,1,3,0,96, + 3,192,31,128,252,0,240,0,248,0,63,0,7,192,0,224, + 11,5,10,12,1,5,255,224,0,0,0,0,0,0,255,224, + 11,9,18,12,1,3,192,0,248,0,63,0,7,192,1,224, + 15,192,126,0,240,0,192,0,9,20,40,12,1,255,63,0, + 119,128,227,128,227,128,195,128,3,128,3,0,7,0,6,0, + 14,0,12,0,12,0,12,0,12,0,0,0,0,0,28,0, + 60,0,60,0,56,0,20,23,69,23,2,251,0,252,0,3, + 255,0,14,7,128,24,1,192,48,0,224,32,0,96,96,242, + 112,97,142,48,195,14,48,195,14,48,199,14,48,199,14,48, + 199,14,48,199,14,96,199,158,96,227,255,192,99,239,128,113, + 199,0,120,0,0,60,0,64,31,3,192,15,255,0,3,252, + 0,17,17,51,17,0,0,0,192,0,1,192,0,3,192,0, + 3,224,0,2,224,0,6,240,0,6,112,0,6,112,0,12, + 120,0,12,56,0,15,248,0,24,28,0,24,28,0,16,28, + 0,48,14,0,48,14,0,252,63,128,13,17,34,16,1,0, + 127,192,248,224,56,112,56,112,56,112,56,112,56,224,63,192, + 56,240,56,112,56,56,56,56,56,56,56,56,56,48,56,112, + 255,192,13,17,34,15,1,0,7,240,24,120,48,48,112,0, + 96,0,96,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,0,120,8,60,56,31,224,15,128,16,17,34,17,0,0, + 127,224,248,120,56,60,56,30,56,30,56,15,56,15,56,15, + 56,15,56,15,56,15,56,15,56,30,56,30,56,60,56,120, + 255,224,13,17,34,14,1,0,255,240,120,48,120,48,120,32, + 120,32,120,0,120,0,120,0,127,192,120,128,120,0,120,0, + 120,0,120,16,120,24,120,48,255,240,12,17,34,14,1,0, + 255,240,120,48,120,48,120,48,120,32,120,0,120,0,120,0, + 127,192,120,128,120,0,120,0,120,0,120,0,120,0,120,0, + 254,0,14,17,34,16,1,0,3,240,12,120,48,48,48,0, + 112,0,96,0,224,0,224,0,224,0,224,252,224,56,224,56, + 112,56,112,56,60,56,31,240,7,192,17,17,51,18,0,0, + 254,63,128,60,30,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,63,254,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,7,17,17,9,1,0,254,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,12,22,44,9,252,251, + 7,240,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,128,1,128,51,0,126,0,252,0,16,17,34,17, + 1,0,254,126,56,56,56,48,56,112,56,224,57,192,59,128, + 63,0,63,0,59,128,57,192,57,224,56,240,56,120,56,60, + 56,31,254,30,13,17,34,14,1,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,8,56,24,56,24,255,240,21,17,51,23, + 1,0,248,1,248,56,1,224,60,1,224,60,3,224,62,3, + 224,62,6,224,63,6,224,55,12,224,39,140,224,35,156,224, + 35,152,224,33,216,224,33,240,224,97,240,224,96,224,224,112, + 224,224,248,67,248,18,17,51,18,0,0,248,15,192,124,3, + 0,60,3,0,62,3,0,63,3,0,55,131,0,51,195,0, + 51,195,0,49,227,0,48,243,0,48,123,0,48,123,0,48, + 63,0,48,31,0,48,15,0,48,7,0,252,3,0,15,17, + 34,17,1,0,7,192,24,112,48,56,48,28,96,28,96,14, + 224,14,224,14,224,14,224,14,224,14,224,12,112,28,112,24, + 56,24,28,32,7,192,14,17,34,15,0,0,127,224,248,120, + 56,56,56,28,56,28,56,28,56,28,56,56,60,112,59,224, + 56,0,56,0,56,0,56,0,56,0,56,0,254,0,18,22, + 66,17,1,251,7,192,0,24,112,0,48,56,0,48,28,0, + 96,28,0,96,14,0,224,14,0,224,14,0,224,14,0,224, + 14,0,224,14,0,224,14,0,112,28,0,112,28,0,56,24, + 0,28,48,0,7,192,0,0,112,0,0,60,64,0,31,192, + 0,15,128,0,3,0,16,17,34,16,0,0,63,192,248,112, + 56,56,56,56,56,56,56,56,56,112,63,240,63,192,57,192, + 56,224,56,224,56,112,56,120,56,60,56,63,254,30,12,17, + 34,14,1,0,15,240,48,240,64,32,192,0,224,0,248,0, + 126,0,63,128,31,192,7,224,0,240,0,112,0,48,192,48, + 192,32,240,64,255,128,15,17,34,16,0,0,255,254,195,134, + 195,134,131,134,131,132,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,7,192,15,224,17,17, + 51,18,0,0,254,31,128,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,4,0,28,12, + 0,14,24,0,3,224,0,18,17,51,18,0,0,254,15,192, + 56,7,0,60,6,0,28,6,0,28,6,0,30,12,0,14, + 12,0,15,24,0,7,24,0,7,24,0,7,176,0,3,176, + 0,3,176,0,1,224,0,1,224,0,1,224,0,0,128,0, + 23,17,51,23,0,0,254,24,126,56,24,24,56,56,24,56, + 60,16,28,60,48,28,110,48,28,110,48,28,110,48,14,199, + 96,14,199,96,14,135,96,15,131,224,15,131,224,7,1,192, + 7,1,192,7,1,192,6,0,128,17,17,51,17,0,0,255, + 63,0,60,12,0,28,24,0,30,24,0,15,48,0,7,112, + 0,7,224,0,3,192,0,1,192,0,3,224,0,3,240,0, + 6,112,0,12,120,0,12,60,0,24,28,0,56,30,0,252, + 63,128,16,17,34,17,0,0,248,31,60,14,28,12,14,24, + 15,24,7,48,7,48,3,224,3,224,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,7,240,13,17,34,15,1,0, + 127,248,96,240,64,240,193,224,1,192,3,192,7,128,7,128, + 15,0,15,0,30,0,60,0,60,0,120,24,120,24,240,24, + 255,248,6,25,25,9,3,252,252,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 252,11,25,50,13,1,252,192,0,192,0,224,0,96,0,112, + 0,112,0,48,0,56,0,24,0,24,0,28,0,12,0,14, + 0,6,0,6,0,7,0,3,0,3,0,3,128,1,128,1, + 192,0,192,0,192,0,224,0,96,6,25,25,8,0,252,252, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,252,11,13,26,13,1,7,6,0, + 14,0,14,0,15,0,27,0,19,0,17,128,49,128,33,192, + 96,192,96,192,64,96,192,64,11,1,2,13,1,253,255,224, + 6,6,6,9,0,14,224,240,112,56,24,12,12,12,24,13, + 1,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,14,20,40,15,0,0, + 24,0,248,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,240,59,248,62,56,56,28,56,12,56,12,56,12,56,8, + 56,8,60,16,63,224,7,128,11,12,24,12,1,0,15,224, + 48,192,112,192,96,64,224,0,224,0,224,0,224,0,240,64, + 120,224,63,192,31,0,14,20,40,15,1,0,0,48,1,240, + 0,112,0,112,0,112,0,112,0,112,0,112,15,240,48,240, + 96,112,96,112,224,112,224,112,224,112,240,112,248,240,127,244, + 63,124,30,48,11,12,24,13,1,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,11,19,38,9,1,0,3,224,12,192,24,0,24,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,255,0,14,18, + 36,15,0,250,15,140,16,252,32,112,96,48,96,48,112,48, + 56,96,31,128,28,0,124,0,127,224,63,248,127,252,240,60, + 224,28,224,24,112,48,31,192,15,20,40,16,1,0,24,0, + 248,0,56,0,56,0,56,0,56,0,56,0,56,0,56,240, + 59,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,7,18,18,8,1,0,56,120,112,0, + 0,0,56,248,56,56,56,56,56,56,56,56,56,254,10,24, + 48,8,252,250,1,192,3,192,3,128,0,0,0,0,0,0, + 3,128,15,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,0,102,0, + 252,0,120,0,14,20,40,15,1,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,252,56,112,56,224, + 57,128,59,0,63,0,59,128,57,192,56,224,56,240,56,120, + 252,60,7,20,20,8,1,0,24,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,23,12,36,23, + 0,0,25,241,240,251,255,248,62,62,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,254,254,15,12,24,16,1,0,24,240,251,248, + 62,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,254,12,12,24,14,1,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,13,18,36,15,1,250,25,224,251,240,60,112,56,56, + 56,24,56,24,56,24,56,24,56,16,60,48,63,224,59,192, + 56,0,56,0,56,0,56,0,56,0,254,0,14,18,36,15, + 1,250,15,16,48,240,96,112,96,112,224,112,224,112,224,112, + 240,112,248,240,127,240,127,112,28,112,0,112,0,112,0,112, + 0,112,0,112,1,252,11,12,24,12,1,0,49,224,247,224, + 124,192,120,64,120,64,120,0,120,0,120,0,120,0,120,0, + 120,0,254,0,9,12,24,11,1,0,62,0,71,0,194,0, + 224,0,248,0,126,0,63,0,15,128,131,128,193,128,225,0, + 254,0,10,17,34,10,0,0,8,0,24,0,56,0,56,0, + 56,0,255,192,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,128,63,192,30,0,15,12,24,15,0,0, + 56,56,248,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,250,63,190,30,56,14,12,24,14,0,0,252,124, + 120,48,56,48,60,32,28,96,30,96,14,192,14,192,7,128, + 7,128,7,128,3,0,19,12,36,19,0,0,252,33,224,120, + 96,192,56,112,192,56,241,128,28,249,128,28,185,128,29,159, + 0,15,31,0,15,31,0,15,14,0,6,14,0,4,4,0, + 14,12,24,14,0,0,254,252,60,112,28,96,30,192,15,128, + 7,128,7,128,15,192,25,224,24,240,48,120,249,252,15,18, + 36,14,255,250,126,62,60,24,28,24,30,16,14,48,15,48, + 7,96,7,96,3,192,3,192,3,192,1,128,1,128,3,0, + 3,0,126,0,124,0,248,0,11,12,24,13,1,0,127,224, + 67,192,67,192,135,128,15,0,15,0,30,0,60,0,56,32, + 120,96,240,96,255,224,7,25,25,9,1,252,2,14,28,56, + 56,56,56,28,28,28,28,56,240,248,28,28,28,28,56,56, + 56,56,28,14,6,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,7,25,25,9,1,252,192,224,112,56, + 56,56,56,112,112,112,112,62,30,56,112,112,112,112,56,56, + 56,56,112,224,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=18 dx=28 dy= 0 ascent=28 len=112 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x=-5 y=-9 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20[10077] U8G_SECTION(".progmem.u8g_font_gdb20") = { + 0,49,47,240,244,20,5,86,12,137,32,255,248,28,247,25, + 248,0,0,0,8,0,0,5,24,24,10,2,255,24,120,120, + 120,120,120,120,120,120,112,112,112,112,48,48,48,48,0,0, + 112,248,248,248,112,11,10,20,15,2,13,56,224,243,224,241, + 224,241,192,113,192,113,192,113,192,113,192,112,192,96,192,15, + 18,36,16,1,2,1,140,3,152,3,24,3,24,3,56,63, + 254,63,254,6,112,14,96,12,96,12,96,127,252,255,248,24, + 192,24,192,57,128,49,128,49,128,14,25,50,16,1,253,3, + 0,3,0,3,0,31,240,63,248,115,120,227,56,227,16,243, + 0,255,0,127,0,63,224,15,240,3,248,3,124,3,28,195, + 28,195,28,227,28,251,120,255,240,63,224,3,0,3,0,3, + 0,21,20,60,23,1,0,0,0,96,30,0,192,115,129,192, + 97,131,128,225,195,0,225,198,0,225,206,0,225,220,0,97, + 152,0,115,176,0,30,113,224,0,231,112,1,198,48,1,142, + 56,3,142,56,7,14,56,14,14,56,12,6,48,28,7,48, + 56,3,192,21,23,69,22,1,0,1,240,0,7,120,0,14, + 60,0,14,60,0,30,60,0,30,124,0,30,120,0,31,240, + 0,31,224,0,15,192,0,15,128,0,31,143,248,63,195,160, + 123,225,128,123,241,128,241,249,128,240,251,0,240,127,0,240, + 126,0,248,63,0,120,31,240,63,247,240,15,195,192,5,10, + 10,9,2,13,56,240,240,240,112,112,112,112,112,96,9,30, + 60,11,2,251,1,0,3,128,6,0,14,0,28,0,60,0, + 56,0,120,0,120,0,112,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 120,0,56,0,60,0,28,0,30,0,14,0,7,0,1,128, + 9,30,60,11,0,251,64,0,240,0,56,0,60,0,28,0, + 30,0,14,0,15,0,15,0,15,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,0,15,0, + 15,0,15,0,14,0,30,0,28,0,56,0,48,0,96,0, + 192,0,12,13,26,14,1,11,3,0,15,0,70,64,102,112, + 246,240,63,192,15,0,63,224,254,240,230,112,70,32,7,0, + 14,0,12,12,24,13,1,3,6,0,6,0,6,0,6,0, + 6,0,127,240,255,224,6,0,6,0,6,0,6,0,6,0, + 6,10,10,9,2,250,56,252,252,60,60,56,56,112,96,192, + 10,2,4,11,1,7,255,192,255,128,5,5,5,9,2,255, + 112,248,248,248,112,14,30,60,15,1,251,0,28,0,56,0, + 56,0,120,0,112,0,112,0,224,0,224,0,224,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,28,0,28,0,28,0,56,0,56,0,120,0,112,0,112, + 0,224,0,224,0,192,0,14,18,36,16,1,0,7,192,24, + 224,56,112,112,120,112,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,56,112,56,120,56,56,112,28,96,15, + 128,13,19,38,16,2,0,1,128,15,128,127,128,239,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,224,127,248,13,19,38, + 16,1,0,15,224,56,240,120,120,240,120,112,120,0,120,0, + 240,0,240,1,224,1,192,3,128,7,0,14,0,28,8,28, + 8,56,24,127,248,255,248,255,248,13,19,38,16,1,0,31, + 128,121,224,112,240,240,240,64,240,0,240,1,224,7,192,15, + 192,3,240,0,240,0,120,0,120,0,120,0,120,128,240,192, + 240,127,224,31,128,14,19,38,17,1,0,0,48,1,240,1, + 240,3,240,7,240,6,240,12,240,12,240,24,240,56,240,48, + 240,96,240,255,252,255,248,0,240,0,240,0,240,1,248,7, + 252,13,19,38,16,1,0,63,248,63,240,63,224,112,0,112, + 0,96,0,96,0,127,128,127,224,97,240,0,248,0,120,0, + 120,0,120,0,120,0,112,128,240,193,224,127,128,14,20,40, + 16,1,0,0,112,3,240,7,128,15,0,28,0,60,0,120, + 0,120,0,115,224,255,240,252,120,240,124,240,60,240,60,240, + 60,112,60,120,56,56,56,28,112,7,192,13,19,38,16,2, + 0,255,248,255,248,255,240,192,48,128,96,128,96,0,224,0, + 192,1,192,1,128,3,128,3,128,7,0,7,0,14,0,14, + 0,30,0,28,0,56,0,14,19,38,16,1,0,15,192,24, + 240,48,120,112,120,112,120,120,120,126,240,63,192,31,224,15, + 240,63,248,120,252,248,124,240,60,240,60,240,56,112,56,56, + 112,31,192,14,20,40,16,1,255,7,192,24,240,56,120,112, + 120,240,60,240,60,240,60,240,60,248,60,124,124,63,252,31, + 60,0,56,0,120,0,112,0,240,1,224,7,128,63,0,56, + 0,5,16,16,9,2,255,112,248,248,248,112,0,0,0,0, + 0,0,112,248,248,248,112,6,21,21,9,2,250,112,248,248, + 248,112,0,0,0,0,0,0,56,252,252,60,60,56,56,112, + 96,192,13,10,20,15,1,4,0,24,0,240,7,240,63,128, + 252,0,248,0,127,0,15,224,1,248,0,48,13,7,14,15, + 1,5,255,248,255,240,0,0,0,0,0,0,255,248,255,240, + 13,10,20,15,1,4,96,0,252,0,63,128,7,240,0,248, + 1,240,15,224,127,0,248,0,192,0,12,24,48,15,1,255, + 31,192,121,224,240,240,240,240,240,240,192,240,0,240,1,224, + 1,192,3,192,3,128,7,0,7,0,6,0,6,0,6,0, + 0,0,0,0,0,0,14,0,31,0,31,0,31,0,14,0, + 26,28,112,28,1,249,0,31,192,0,0,255,248,0,3,255, + 252,0,7,224,62,0,15,128,15,0,30,0,7,128,60,30, + 35,128,60,49,225,128,120,97,225,192,120,225,224,192,240,225, + 224,192,241,225,224,192,241,225,224,192,241,225,224,192,241,225, + 224,192,241,225,225,128,241,225,225,128,248,243,227,0,120,255, + 254,0,120,125,252,0,124,56,240,0,62,0,0,0,62,0, + 2,0,31,128,6,0,15,224,63,0,7,255,248,0,1,255, + 240,0,0,63,128,0,20,20,60,20,0,0,0,32,0,0, + 240,0,0,240,0,1,248,0,1,248,0,1,248,0,3,188, + 0,3,60,0,3,60,0,7,30,0,6,30,0,14,31,0, + 15,255,0,12,7,0,28,7,128,24,7,128,24,3,128,56, + 3,192,56,3,192,254,15,240,17,20,60,19,1,0,63,224, + 0,252,120,0,60,60,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,60,0,60,120,0,63,248,0,60,30,0,60, + 15,0,60,15,0,60,7,128,60,7,128,60,7,128,60,7, + 128,60,15,0,124,30,0,255,248,0,16,20,40,18,1,0, + 1,254,6,31,28,14,56,4,56,0,112,0,112,0,240,0, + 240,0,240,0,240,0,240,0,240,0,248,0,120,0,124,3, + 63,14,31,252,15,248,3,224,18,20,60,20,1,0,63,240, + 0,252,60,0,60,14,0,60,15,0,60,7,128,60,7,128, + 60,3,192,60,3,192,60,3,192,60,3,192,60,3,192,60, + 3,192,60,3,192,60,3,128,60,7,128,60,7,128,60,15, + 0,60,14,0,124,28,0,255,240,0,15,20,40,17,1,0, + 255,252,124,12,60,12,60,12,60,12,60,0,60,0,60,0, + 60,0,63,240,60,32,60,0,60,0,60,0,60,0,60,0, + 60,2,60,6,124,14,255,254,14,20,40,16,1,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,126,0,255,0,18,20,60,19,1,0,1,254,0,6, + 15,0,28,6,0,56,4,0,56,0,0,120,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,127,192,240,127,192, + 240,15,0,240,15,0,120,15,0,120,15,0,60,15,0,30, + 15,0,15,254,0,3,240,0,20,20,60,22,1,0,255,15, + 240,126,7,224,60,3,192,60,3,192,60,3,192,60,3,192, + 60,3,192,60,3,192,60,3,192,63,255,192,60,3,192,60, + 3,192,60,3,192,60,3,192,60,3,192,60,3,192,60,3, + 192,60,3,192,126,7,224,255,15,240,8,20,20,10,1,0, + 255,126,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,126,255,14,27,54,11,252,249,7,252,1,248,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,224,1,224,49,192,127,128,255,0,60,0, + 19,20,60,20,1,0,255,31,192,126,15,0,60,14,0,60, + 28,0,60,56,0,60,112,0,60,224,0,60,224,0,61,192, + 0,63,128,0,63,192,0,61,224,0,60,240,0,60,120,0, + 60,60,0,60,62,0,60,31,0,60,15,128,126,7,224,255, + 3,128,15,20,40,16,1,0,255,0,126,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 25,20,80,27,1,0,252,0,31,128,62,0,62,0,62,0, + 62,0,62,0,126,0,63,0,126,0,55,0,254,0,55,128, + 222,0,55,129,222,0,51,193,158,0,51,195,158,0,49,195, + 158,0,49,227,30,0,48,231,30,0,48,246,30,0,48,254, + 30,0,48,124,30,0,48,124,30,0,48,56,30,0,120,56, + 63,0,252,24,127,128,19,20,60,21,1,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,20,60,20,1,0,3,240, + 0,12,28,0,28,14,0,56,7,0,56,7,128,112,7,128, + 112,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,248,3,128,120,7,128,120,7,0,60,15, + 0,30,30,0,15,248,0,3,224,0,16,20,40,18,1,0, + 63,240,252,60,60,30,60,15,60,15,60,15,60,15,60,15, + 60,14,60,30,62,60,61,240,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,128,21,25,75,20,1,251,3,240, + 0,14,28,0,28,14,0,56,15,0,56,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,128,120,3,128,120,7,128,60,7, + 0,28,14,0,14,28,0,3,248,0,0,60,0,0,15,8, + 0,7,248,0,3,240,0,0,224,18,20,60,19,1,0,63, + 224,0,252,120,0,60,60,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,60,0,60,252,0,63,240,0,63,224,0, + 60,240,0,60,112,0,60,120,0,60,60,0,60,62,0,60, + 30,0,60,15,0,126,15,192,255,7,128,13,20,40,16,2, + 0,15,224,48,224,96,96,224,0,224,0,240,0,252,0,127, + 0,127,192,31,224,15,240,3,248,0,248,0,120,128,120,192, + 120,192,112,224,224,255,192,63,0,18,20,60,19,0,0,255, + 255,192,193,225,192,193,224,192,193,224,192,129,224,128,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,3,240,0,7,248,0,19,20,60,21,1, + 0,255,7,224,126,3,192,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,3, + 0,30,3,0,15,6,0,7,252,0,3,240,0,21,20,60, + 21,0,0,255,3,248,60,0,224,60,0,192,30,0,192,30, + 1,128,15,1,128,15,3,128,15,3,0,7,131,0,7,135, + 0,3,198,0,3,198,0,3,206,0,1,236,0,1,236,0, + 0,248,0,0,248,0,0,248,0,0,112,0,0,96,0,27, + 20,80,27,0,0,255,6,15,224,60,6,3,192,28,15,3, + 128,28,15,3,0,28,15,3,0,30,31,131,0,30,27,131, + 0,14,27,199,0,14,59,198,0,15,49,198,0,15,49,230, + 0,7,112,238,0,7,96,252,0,7,224,252,0,7,192,124, + 0,3,192,124,0,3,192,60,0,3,128,56,0,3,128,56, + 0,3,0,16,0,20,20,60,20,0,0,127,143,224,62,3, + 128,30,7,0,15,6,0,15,142,0,7,140,0,3,220,0, + 3,248,0,1,240,0,0,240,0,0,248,0,1,248,0,3, + 188,0,3,190,0,7,30,0,6,15,0,14,15,128,28,7, + 128,60,7,192,254,31,240,19,20,60,20,0,0,252,7,224, + 60,3,192,30,3,128,15,3,0,15,7,0,7,134,0,3, + 142,0,3,204,0,1,220,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,1,248,0,3,252,0,15,20,40,17,1,0,127, + 254,96,62,96,124,64,124,64,248,0,240,1,240,1,224,3, + 224,7,192,7,192,15,128,15,0,31,0,62,0,62,2,124, + 2,124,6,248,6,255,254,9,30,60,11,2,251,255,128,255, + 128,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,255,128,255,128,13,30,60,15,1,251,192, + 0,224,0,224,0,112,0,112,0,48,0,56,0,56,0,28, + 0,28,0,28,0,14,0,14,0,6,0,7,0,7,0,3, + 128,3,128,3,128,1,192,1,192,0,192,0,224,0,224,0, + 112,0,112,0,112,0,56,0,56,0,24,9,30,60,11,0, + 251,255,128,255,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,255,128,255,128,12,15,30, + 16,2,9,2,0,6,0,15,0,15,0,27,0,27,128,17, + 128,49,192,49,192,96,192,96,224,96,96,192,112,192,48,128, + 32,14,2,4,15,1,252,255,252,255,248,7,8,8,10,0, + 16,112,240,120,56,60,28,14,6,14,15,30,16,1,0,31, + 192,112,224,240,240,192,240,0,240,3,240,31,240,63,240,120, + 240,240,240,240,240,240,240,251,252,126,248,56,96,16,24,48, + 17,0,0,12,0,252,0,124,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,120,61,252,63,254,63,30,60,15,60, + 7,60,7,60,7,60,7,60,6,60,14,62,28,63,248,31, + 240,7,192,13,15,30,15,1,0,3,248,12,120,56,48,112, + 16,112,0,240,0,240,0,240,0,240,0,248,0,248,8,124, + 56,63,240,31,224,15,128,16,24,48,18,1,0,0,28,0, + 252,0,60,0,60,0,60,0,60,0,60,0,60,0,60,7, + 252,24,124,56,60,112,60,112,60,240,60,240,60,240,60,240, + 60,248,60,248,60,124,124,127,255,63,190,30,24,13,15,30, + 15,1,0,7,192,24,224,56,112,112,120,112,120,240,120,255, + 240,240,0,240,0,240,0,248,8,124,56,127,240,63,224,15, + 128,13,24,48,11,1,0,1,240,7,248,14,112,28,32,28, + 0,60,0,60,0,60,0,60,0,255,192,60,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,127,0,255,128,16,23,46,17,0,248,7,227,28, + 127,56,126,120,60,120,60,120,60,120,60,60,56,60,112,15, + 192,14,0,28,0,31,192,63,252,15,254,31,255,120,127,240, + 15,240,14,240,14,120,28,63,248,15,192,17,24,72,18,1, + 0,12,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,120,0,61, + 252,0,63,254,0,63,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,126,63,0,255,127,128,8,21,21,10,1,0,28, + 62,62,28,0,0,28,252,124,60,60,60,60,60,60,60,60, + 60,60,126,255,12,29,58,9,251,248,0,224,1,240,1,240, + 0,224,0,0,0,0,0,224,7,224,3,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,192,1,192,99,128,255,0, + 254,0,120,0,17,24,72,18,1,0,12,0,0,252,0,0, + 124,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,63,128,60,30,0,60,60,0,60,112, + 0,60,224,0,61,192,0,63,192,0,63,224,0,61,224,0, + 60,240,0,60,120,0,60,60,0,60,62,0,126,31,128,255, + 15,0,8,24,24,10,1,0,12,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 26,15,60,28,1,0,28,120,60,0,252,252,254,0,127,255, + 255,0,63,31,143,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,126,63,31,128,255,127, + 191,192,17,15,45,18,1,0,12,60,0,252,252,0,127,254, + 0,63,30,0,62,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,15,15,30,17,1,0,7,224,24,112,56, + 56,112,60,112,30,240,30,240,30,240,30,240,30,240,30,240, + 28,120,28,56,56,28,48,15,192,16,23,46,18,1,248,12, + 120,252,252,127,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,62,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,23,69, + 18,1,248,3,194,0,12,54,0,56,30,0,112,30,0,112, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,248,30, + 0,248,30,0,124,126,0,127,254,0,63,222,0,15,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,63,0,0,255,128,13,15,30,14,1,0,24,240, + 249,248,123,248,62,48,60,48,60,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,11,15,30,13, + 1,0,31,192,97,192,225,128,224,128,248,0,254,0,127,128, + 127,192,31,224,7,224,129,224,192,224,192,192,224,192,255,0, + 11,20,40,12,0,0,4,0,28,0,60,0,60,0,60,0, + 255,224,60,64,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,96,63,224,31,128,14,0,17,15, + 45,18,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,16,15,30,16,0,0,254,31,124,14,60,12,60,12,30, + 28,30,24,15,24,15,48,7,48,7,240,7,224,3,224,3, + 192,1,192,1,128,23,15,45,23,0,0,254,24,62,124,24, + 28,60,28,24,60,60,24,28,62,48,30,126,48,30,111,48, + 14,111,112,15,199,96,15,199,224,7,195,224,7,131,192,7, + 131,192,3,1,192,2,1,128,16,15,30,17,0,0,255,63, + 62,28,30,24,15,48,15,240,7,224,3,192,3,224,3,224, + 6,240,14,248,28,120,24,60,120,62,252,127,17,23,69,16, + 255,248,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,13,15,30,15,1,0,127,248,96, + 248,65,240,65,224,3,224,7,192,7,128,15,128,15,0,31, + 0,62,16,60,24,124,24,248,24,255,248,9,30,60,12,2, + 251,1,0,7,128,14,0,28,0,60,0,60,0,60,0,60, + 0,62,0,30,0,30,0,30,0,30,0,60,0,120,0,252, + 0,60,0,30,0,30,0,30,0,30,0,62,0,60,0,60, + 0,60,0,60,0,28,0,30,0,7,0,1,128,2,32,32, + 7,3,250,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,128,9,30,60,12,1,251,64,0,240,0,60,0,28, + 0,30,0,30,0,30,0,30,0,62,0,60,0,60,0,60, + 0,60,0,30,0,31,128,15,0,30,0,60,0,60,0,60, + 0,60,0,62,0,30,0,30,0,30,0,30,0,28,0,56, + 0,112,0,192,0,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,8,0,0,5,24, + 24,10,2,247,112,248,248,248,112,0,0,48,48,48,48,112, + 112,112,112,120,120,120,120,120,120,120,120,96,13,20,40,16, + 2,255,3,0,3,0,3,0,15,248,31,248,59,56,115,16, + 227,0,227,0,227,0,227,0,227,0,227,0,115,24,123,48, + 63,224,31,192,3,0,3,0,3,0,14,19,38,16,1,0, + 1,252,6,60,14,28,28,12,28,8,60,0,60,0,60,0, + 60,0,255,224,60,0,60,0,60,0,60,4,56,4,56,12, + 127,252,255,252,128,48,12,13,26,16,2,3,192,48,239,112, + 112,224,48,192,96,96,96,96,96,96,96,96,112,224,57,192, + 111,96,192,48,128,16,18,19,57,16,255,0,248,31,192,252, + 15,128,62,6,0,30,14,0,31,12,0,15,156,0,7,152, + 0,7,248,0,3,240,0,3,240,0,3,240,0,1,224,0, + 63,255,0,1,224,0,1,224,0,1,224,0,1,224,0,3, + 240,0,7,248,0,2,32,32,7,3,250,64,192,192,192,192, + 192,192,192,192,192,192,192,192,192,128,0,0,64,192,192,192, + 192,192,192,192,192,192,192,192,192,192,128,12,22,44,16,2, + 0,15,192,49,224,112,224,112,64,124,0,126,0,63,128,127, + 192,99,224,225,240,224,240,240,112,252,112,127,112,63,224,31, + 192,7,224,65,224,64,224,224,224,240,192,127,0,11,5,10, + 13,1,17,112,224,241,224,241,224,241,224,225,192,21,21,63, + 23,1,0,1,252,0,7,7,0,12,1,128,24,0,192,48, + 126,96,96,199,48,97,134,48,195,2,24,199,0,24,199,0, + 24,199,0,24,199,0,24,199,0,24,199,128,24,99,199,48, + 97,252,48,48,248,96,16,0,64,8,1,128,6,3,0,1, + 252,0,7,11,11,9,1,9,60,204,140,60,108,204,206,252, + 0,0,254,14,15,30,16,1,0,2,8,6,28,12,56,28, + 112,56,112,120,224,241,224,243,192,241,224,120,224,56,112,28, + 112,12,56,6,24,2,12,13,7,14,16,2,3,255,248,255, + 248,0,24,0,24,0,24,0,24,0,16,10,2,4,11,1, + 7,255,192,255,128,12,11,22,11,0,11,31,128,48,192,126, + 96,219,48,219,48,222,48,219,48,217,48,100,224,48,192,31, + 128,14,3,6,16,1,18,127,248,127,252,255,248,7,8,8, + 11,2,12,60,126,70,198,198,204,252,120,12,15,30,13,1, + 2,6,0,6,0,6,0,6,0,6,0,127,240,255,224,6, + 0,6,0,6,0,6,0,4,0,0,0,255,240,255,224,8, + 11,11,11,2,10,62,115,227,3,6,6,12,24,49,97,255, + 9,11,22,11,1,10,62,0,231,0,231,0,7,0,28,0, + 63,0,7,128,3,128,3,128,199,0,126,0,8,8,8,10, + 3,16,28,30,63,60,120,112,224,192,18,23,69,19,1,248, + 28,6,0,252,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,62,62,0,63,255,128,63,223,192,51,142,0,48,0,0, + 48,0,0,56,0,0,56,0,0,56,0,0,60,0,0,62, + 0,0,48,0,0,17,24,72,19,1,252,15,255,128,60,127, + 0,120,102,0,112,102,0,240,102,0,240,102,0,240,102,0, + 240,102,0,120,102,0,120,102,0,60,102,0,15,230,0,0, + 102,0,0,102,0,0,102,0,0,102,0,0,102,0,0,102, + 0,0,102,0,0,102,0,0,102,0,0,102,0,0,255,0, + 1,255,128,5,5,5,7,1,8,112,248,248,248,112,7,7, + 7,7,0,249,24,48,60,62,30,60,240,8,11,11,11,2, + 10,8,248,24,24,24,24,24,24,24,24,255,7,11,11,9, + 1,9,56,76,198,198,198,198,198,108,56,0,254,13,15,30, + 16,2,0,129,0,195,128,97,128,112,192,56,224,60,112,30, + 120,30,120,30,120,60,112,56,224,112,192,97,192,193,128,131, + 0,17,19,57,20,2,0,48,3,128,240,3,0,48,6,0, + 48,12,0,48,28,0,48,24,0,48,48,0,48,96,0,120, + 224,0,132,193,0,1,135,0,3,15,0,7,11,0,6,19, + 0,12,51,0,24,63,128,56,67,0,48,3,0,224,15,128, + 17,19,57,20,2,0,48,1,128,240,3,0,48,7,0,48, + 6,0,48,12,0,48,24,0,48,56,0,48,48,0,120,96, + 0,132,192,0,1,207,0,1,153,128,3,49,128,7,1,0, + 14,3,0,12,6,0,24,12,0,56,24,128,112,63,128,18, + 19,57,20,1,0,60,1,192,102,1,128,70,3,0,12,6, + 0,28,14,0,6,12,0,6,24,0,134,48,0,124,112,0, + 0,96,128,0,195,128,1,135,128,3,133,128,3,9,128,6, + 25,128,12,31,192,28,33,128,24,1,128,112,7,192,13,23, + 46,15,1,248,7,0,15,128,15,128,15,128,7,0,0,0, + 0,0,3,0,3,0,3,0,7,0,6,0,14,0,28,0, + 60,0,120,0,112,0,240,24,240,120,240,120,240,120,120,240, + 63,192,20,28,84,20,0,0,3,0,0,7,128,0,7,192, + 0,15,224,0,1,224,0,0,112,0,0,24,0,0,0,0, + 0,32,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 248,0,3,188,0,3,60,0,3,60,0,7,30,0,6,30, + 0,14,31,0,15,255,0,12,7,0,28,7,128,24,7,128, + 24,3,128,56,3,192,56,3,192,254,15,240,20,28,84,20, + 0,0,0,8,0,0,30,0,0,62,0,0,124,0,0,240, + 0,1,224,0,1,128,0,0,0,0,0,32,0,0,240,0, + 0,240,0,1,248,0,1,248,0,1,248,0,3,188,0,3, + 60,0,3,60,0,7,30,0,6,30,0,14,31,0,15,255, + 0,12,7,0,28,7,128,24,7,128,24,3,128,56,3,192, + 56,3,192,254,15,240,20,27,81,20,0,0,0,224,0,0, + 240,0,1,248,0,3,252,0,7,14,0,4,6,0,0,0, + 0,0,32,0,0,240,0,0,240,0,1,248,0,1,248,0, + 1,248,0,3,188,0,3,60,0,3,60,0,7,30,0,6, + 30,0,14,31,0,15,255,0,12,7,0,28,7,128,24,7, + 128,24,3,128,56,3,192,56,3,192,254,15,240,20,26,78, + 20,0,0,3,195,0,7,254,0,7,254,0,12,124,0,8, + 0,0,0,0,0,0,32,0,0,240,0,0,240,0,1,248, + 0,1,248,0,1,248,0,3,188,0,3,60,0,3,60,0, + 7,30,0,6,30,0,14,31,0,15,255,0,12,7,0,28, + 7,128,24,7,128,24,3,128,56,3,192,56,3,192,254,15, + 240,20,26,78,20,0,0,6,12,0,15,30,0,15,30,0, + 15,30,0,14,28,0,0,0,0,0,32,0,0,240,0,0, + 240,0,1,248,0,1,248,0,1,248,0,3,188,0,3,60, + 0,3,60,0,7,30,0,6,30,0,14,31,0,15,255,0, + 12,7,0,28,7,128,24,7,128,24,3,128,56,3,192,56, + 3,192,254,15,240,20,27,81,20,0,0,0,112,0,1,152, + 0,1,152,0,1,144,0,0,224,0,0,0,0,0,0,0, + 0,32,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 248,0,3,188,0,3,60,0,3,60,0,7,30,0,6,30, + 0,14,31,0,15,255,0,12,7,0,28,7,128,24,7,128, + 24,3,128,56,3,192,56,3,192,254,15,240,25,20,80,26, + 0,0,3,255,255,0,0,255,3,0,0,255,3,0,0,239, + 3,0,0,239,3,0,1,207,0,0,1,207,0,0,3,143, + 0,0,3,143,0,0,3,255,254,0,7,15,4,0,6,15, + 0,0,14,15,0,0,14,15,0,0,12,15,0,0,28,15, + 0,0,24,15,0,128,24,15,1,128,56,31,1,128,254,63, + 255,128,16,27,54,18,1,249,1,254,6,31,28,14,56,4, + 56,0,112,0,112,0,240,0,240,0,240,0,240,0,240,0, + 240,0,248,0,120,0,124,1,126,7,63,254,31,252,15,240, + 0,192,1,192,1,240,0,240,0,240,1,224,3,128,15,28, + 56,17,1,0,8,0,28,0,62,0,31,0,7,128,1,192, + 0,64,0,0,255,252,124,12,60,12,60,12,60,12,60,0, + 60,0,60,0,60,0,63,240,60,32,60,0,60,0,60,0, + 60,0,60,0,60,2,60,6,124,14,255,254,15,28,56,17, + 1,0,0,96,0,240,1,248,1,240,3,192,7,0,12,0, + 0,0,255,252,124,12,60,12,60,12,60,12,60,0,60,0, + 60,0,60,0,63,240,60,32,60,0,60,0,60,0,60,0, + 60,0,60,2,60,6,124,14,255,254,15,27,54,17,1,0, + 3,128,7,192,15,192,31,224,28,112,48,24,0,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,2, + 60,6,124,14,255,254,15,26,52,17,1,0,56,112,56,112, + 120,240,120,240,48,96,0,0,255,252,124,12,60,12,60,12, + 60,12,60,0,60,0,60,0,60,0,63,240,60,32,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 9,28,56,10,0,0,32,0,240,0,248,0,124,0,30,0, + 15,0,3,0,0,0,127,128,63,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,63,0,127,128,10,28, + 56,10,1,0,2,0,7,128,15,192,31,0,62,0,120,0, + 96,0,0,0,255,0,126,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,10,27,54,10, + 0,0,12,0,30,0,63,0,127,128,225,192,192,64,0,0, + 127,128,63,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,127,128,11,26,52,10,255,0,112,224, + 241,224,241,224,241,224,96,192,0,0,63,192,31,128,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,31,128, + 63,192,18,20,60,20,1,0,63,240,0,252,60,0,60,14, + 0,60,15,0,60,7,128,60,7,128,60,3,192,60,3,192, + 60,3,192,255,195,192,60,3,192,60,3,192,60,3,192,60, + 3,128,60,7,128,60,7,128,60,15,0,60,14,0,124,28, + 0,255,240,0,19,26,78,21,1,0,3,195,0,7,254,0, + 15,252,0,12,120,0,24,0,0,0,0,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,28,84,20,1,0,2,0, + 0,15,0,0,15,128,0,7,192,0,3,224,0,0,240,0, + 0,48,0,0,0,0,3,240,0,12,28,0,28,14,0,56, + 7,0,56,7,128,112,7,128,112,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,248,3,128, + 120,7,128,120,7,0,60,15,0,30,30,0,15,248,0,3, + 224,0,18,28,84,20,1,0,0,16,0,0,60,0,0,124, + 0,0,248,0,1,224,0,3,192,0,3,0,0,0,0,0, + 3,240,0,12,28,0,28,14,0,56,7,0,56,7,128,112, + 7,128,112,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,248,3,128,120,7,128,120,7,0, + 60,15,0,30,30,0,15,248,0,3,224,0,18,27,81,20, + 1,0,0,192,0,1,224,0,3,240,0,7,248,0,14,28, + 0,8,12,0,0,0,0,3,240,0,12,28,0,28,14,0, + 56,7,0,56,7,128,112,7,128,112,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,248,3, + 128,120,7,128,120,7,0,60,15,0,30,30,0,15,248,0, + 3,224,0,18,26,78,20,1,0,3,198,0,15,252,0,15, + 252,0,24,120,0,16,0,0,0,0,0,3,240,0,12,28, + 0,28,14,0,56,7,0,56,7,128,112,7,128,112,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,248,3,128,120,7,128,120,7,0,60,15,0,30,30, + 0,15,248,0,3,224,0,18,26,78,20,1,0,14,28,0, + 30,60,0,30,60,0,30,60,0,28,56,0,0,0,0,3, + 240,0,12,28,0,28,14,0,56,7,0,56,7,128,112,7, + 128,112,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,248,3,128,120,7,128,120,7,0,60, + 15,0,30,30,0,15,248,0,3,224,0,11,10,20,13,1, + 4,96,96,240,224,57,192,31,128,15,0,15,0,31,128,57, + 192,112,224,224,96,18,21,63,20,1,255,3,241,192,12,31, + 128,28,15,0,56,15,0,56,31,128,112,63,128,112,63,192, + 240,123,192,240,243,192,240,227,192,241,195,192,241,195,192,243, + 131,192,247,3,128,126,7,128,126,7,0,60,7,0,62,14, + 0,127,248,0,227,224,0,128,0,0,19,28,84,21,1,0, + 3,0,0,7,128,0,15,192,0,7,192,0,1,224,0,0, + 112,0,0,24,0,0,0,0,255,7,224,126,3,192,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,3,0,30,3,0,15,6,0,7,252, + 0,3,240,0,19,28,84,21,1,0,0,8,0,0,30,0, + 0,62,0,0,124,0,0,240,0,1,192,0,1,128,0,0, + 0,0,255,7,224,126,3,192,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 3,0,30,3,0,15,6,0,7,252,0,3,240,0,19,27, + 81,21,1,0,0,224,0,0,240,0,1,248,0,3,252,0, + 7,14,0,12,6,0,0,0,0,255,7,224,126,3,192,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,3,0,30,3,0,15,6,0,7, + 252,0,3,240,0,19,26,78,21,1,0,6,12,0,15,30, + 0,15,30,0,15,30,0,14,28,0,0,0,0,255,7,224, + 126,3,192,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,3,0,30,3,0, + 15,6,0,7,252,0,3,240,0,19,28,84,20,0,0,0, + 8,0,0,30,0,0,62,0,0,124,0,0,240,0,1,192, + 0,1,128,0,0,0,0,252,7,224,60,3,192,30,3,128, + 15,3,0,15,7,0,7,134,0,3,142,0,3,204,0,1, + 220,0,1,248,0,0,248,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,1,248,0, + 3,252,0,16,20,40,18,1,0,255,128,126,0,60,0,60, + 0,63,240,60,60,60,30,60,15,60,15,60,15,60,15,60, + 14,60,30,60,60,63,240,60,0,60,0,60,0,126,0,255, + 128,18,24,72,21,1,0,0,248,0,3,254,0,15,31,0, + 14,15,128,28,7,128,28,7,128,60,7,128,60,7,128,60, + 15,0,60,60,0,60,112,0,60,224,0,60,224,0,60,240, + 0,60,252,0,60,127,0,60,63,128,60,15,192,60,7,192, + 61,3,192,60,129,192,60,193,128,124,225,128,252,254,0,14, + 24,48,16,1,0,28,0,62,0,30,0,15,0,7,0,3, + 128,1,128,0,192,0,0,31,192,112,224,240,240,192,240,0, + 240,3,240,31,240,63,240,120,240,240,240,240,240,240,240,251, + 252,126,248,56,96,14,24,48,16,1,0,0,224,1,240,1, + 224,3,192,3,128,3,0,7,0,6,0,0,0,31,192,112, + 224,240,240,192,240,0,240,3,240,31,240,63,240,120,240,240, + 240,240,240,240,240,251,252,126,248,56,96,14,23,46,16,1, + 0,3,128,7,128,15,192,31,224,28,224,56,48,32,16,0, + 0,31,192,112,224,240,240,192,240,0,240,3,240,31,240,63, + 240,120,240,240,240,240,240,240,240,251,252,126,248,56,96,14, + 22,44,16,1,0,14,8,31,24,63,240,99,240,64,224,0, + 0,0,0,31,192,112,224,240,240,192,240,0,240,3,240,31, + 240,63,240,120,240,240,240,240,240,240,240,251,252,126,248,56, + 96,14,22,44,16,1,0,56,112,120,240,120,240,120,240,48, + 96,0,0,0,0,31,192,112,224,240,240,192,240,0,240,3, + 240,31,240,63,240,120,240,240,240,240,240,240,240,251,252,126, + 248,56,96,14,22,44,16,1,0,3,128,4,192,12,192,12, + 192,7,128,0,0,0,0,31,192,112,224,240,240,192,240,0, + 240,3,240,31,240,63,240,120,240,240,240,240,240,240,240,251, + 252,126,248,56,96,22,15,45,23,1,0,3,227,224,31,252, + 112,60,252,56,120,120,60,112,120,60,128,120,60,7,255,248, + 28,120,0,120,120,0,112,120,0,240,124,8,249,254,28,255, + 191,248,127,31,240,60,7,192,14,22,44,15,1,249,3,248, + 12,120,56,48,112,16,112,0,240,0,240,0,240,0,240,0, + 240,0,248,8,124,28,63,248,31,240,15,192,3,0,3,192, + 3,224,5,224,1,224,3,192,14,0,13,24,48,15,1,0, + 14,0,30,0,31,0,15,0,7,128,3,128,1,192,0,192, + 0,0,7,192,24,224,56,112,112,120,112,120,240,120,255,240, + 240,0,240,0,240,0,248,8,124,56,127,240,63,224,15,128, + 13,24,48,15,1,0,0,224,0,240,1,240,1,224,3,192, + 3,128,7,0,6,0,0,0,7,192,24,224,56,112,112,120, + 112,120,240,120,255,240,240,0,240,0,240,0,248,8,124,56, + 127,240,63,224,15,128,13,23,46,15,1,0,3,128,7,192, + 15,192,15,224,28,112,56,48,48,24,0,0,7,192,24,224, + 56,112,112,120,112,120,240,120,255,240,240,0,240,0,240,0, + 248,8,124,56,127,240,63,224,15,128,13,22,44,15,1,0, + 56,112,56,112,120,240,120,240,48,96,0,0,0,0,7,192, + 24,224,56,112,112,120,112,120,240,120,255,240,240,0,240,0, + 240,0,248,8,124,56,127,240,63,224,15,128,9,24,48,10, + 0,0,112,0,248,0,120,0,60,0,28,0,14,0,6,0, + 2,0,0,0,14,0,126,0,62,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,63,0, + 127,128,9,24,48,10,1,0,7,0,15,128,15,0,30,0, + 28,0,56,0,48,0,32,0,0,0,28,0,252,0,124,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,0,10,23,46,10,0,0,28,0, + 30,0,63,0,127,0,115,128,193,192,128,64,0,0,14,0, + 126,0,62,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,63,0,127,128,11,22,44,10, + 255,0,112,224,241,224,241,224,241,224,225,192,0,0,0,0, + 7,0,63,0,31,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,31,128,63,192,14,23, + 46,16,1,0,14,0,63,28,95,248,3,224,15,224,60,224, + 0,112,0,56,15,248,24,248,56,124,112,60,112,60,240,60, + 240,60,240,60,240,60,240,56,240,56,120,112,120,112,60,96, + 15,128,17,22,66,19,1,0,7,6,0,15,204,0,31,252, + 0,17,248,0,48,112,0,0,0,0,0,0,0,12,60,0, + 252,252,0,127,254,0,63,30,0,62,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,126,63,0,255,127,128,15,24,48,17,1,0, + 14,0,31,0,15,0,7,0,3,128,1,128,0,192,0,192, + 0,0,7,224,24,112,56,56,112,60,112,30,240,30,240,30, + 240,30,240,30,240,30,240,28,120,28,56,56,28,48,15,192, + 15,24,48,17,1,0,0,240,0,248,0,240,1,224,1,192, + 3,128,3,0,6,0,0,0,7,224,24,112,56,56,112,60, + 112,30,240,30,240,30,240,30,240,30,240,30,240,28,120,28, + 56,56,28,48,15,192,15,23,46,17,1,0,3,128,3,192, + 7,224,15,224,30,112,24,56,48,24,0,0,7,224,24,112, + 56,56,112,60,112,30,240,30,240,30,240,30,240,30,240,30, + 240,28,120,28,56,56,28,48,15,192,15,22,44,17,1,0, + 14,12,31,136,31,248,49,240,32,224,0,0,0,0,7,224, + 24,112,56,56,112,60,112,30,240,30,240,30,240,30,240,30, + 240,30,240,28,120,28,56,56,28,48,15,192,15,22,44,17, + 1,0,24,48,60,120,60,120,56,112,56,112,0,0,0,0, + 7,224,24,112,56,56,112,60,112,30,240,30,240,30,240,30, + 240,30,240,30,240,28,120,28,56,56,28,48,15,192,12,12, + 24,13,1,3,6,0,14,0,14,0,12,0,0,0,255,240, + 255,224,0,0,6,0,14,0,14,0,12,0,15,16,32,17, + 1,255,7,238,24,124,56,60,112,124,112,254,240,254,241,222, + 243,158,243,158,247,30,254,28,124,28,124,56,124,48,111,192, + 128,0,17,24,72,18,0,0,7,0,0,15,128,0,7,128, + 0,3,192,0,1,192,0,0,224,0,0,96,0,0,48,0, + 0,0,0,28,14,0,252,126,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,126,0,63,255,128,31,223,0,15,12,0, + 17,24,72,18,0,0,0,56,0,0,124,0,0,120,0,0, + 240,0,0,224,0,0,192,0,1,128,0,1,128,0,0,0, + 0,28,14,0,252,126,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,126,0,63,255,128,31,223,0,15,12,0,17,23, + 69,18,0,0,0,192,0,1,224,0,3,240,0,7,248,0, + 7,56,0,14,12,0,8,4,0,0,0,0,28,14,0,252, + 126,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,126,0, + 63,255,128,31,223,0,15,12,0,17,22,66,18,0,0,14, + 28,0,30,60,0,30,60,0,30,60,0,12,24,0,0,0, + 0,0,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,17,32,96,16,255,248,0,56,0,0,62,0,0,124,0, + 0,120,0,0,240,0,0,224,0,0,192,0,1,128,0,0, + 0,0,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,16,32,64,18,1,248,12,0,252, + 0,124,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 120,61,252,63,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,63,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,30,90, + 16,255,248,6,12,0,15,30,0,15,30,0,14,28,0,14, + 28,0,0,0,0,0,0,0,127,15,128,62,7,0,30,6, + 0,30,6,0,15,14,0,15,12,0,7,140,0,7,152,0, + 7,152,0,3,248,0,3,240,0,1,240,0,1,240,0,1, + 224,0,0,224,0,0,192,0,0,192,0,1,192,0,1,128, + 0,39,128,0,127,0,0,254,0,0,120,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 19 + Calculated Max Values w=14 h=30 x= 2 y=11 dx=17 dy= 0 ascent=25 len=60 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent= 0 + X Font ascent =19 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20n[624] U8G_SECTION(".progmem.u8g_font_gdb20n") = { + 0,49,47,240,244,19,0,0,0,0,42,57,0,25,250,19, + 0,12,13,26,14,1,11,3,0,15,0,70,64,102,112,246, + 240,63,192,15,0,63,224,254,240,230,112,70,32,7,0,14, + 0,12,12,24,13,1,3,6,0,6,0,6,0,6,0,6, + 0,127,240,255,224,6,0,6,0,6,0,6,0,6,0,6, + 10,10,9,2,250,56,252,252,60,60,56,56,112,96,192,10, + 2,4,11,1,7,255,192,255,128,5,5,5,9,2,255,112, + 248,248,248,112,14,30,60,15,1,251,0,28,0,56,0,56, + 0,120,0,112,0,112,0,224,0,224,0,224,1,192,1,192, + 3,128,3,128,3,128,7,0,7,0,7,0,14,0,14,0, + 28,0,28,0,28,0,56,0,56,0,120,0,112,0,112,0, + 224,0,224,0,192,0,14,18,36,16,1,0,7,192,24,224, + 56,112,112,120,112,120,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,240,56,112,56,120,56,56,112,28,96,15,128, + 13,19,38,16,2,0,1,128,15,128,127,128,239,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,63,224,127,248,13,19,38,16, + 1,0,15,224,56,240,120,120,240,120,112,120,0,120,0,240, + 0,240,1,224,1,192,3,128,7,0,14,0,28,8,28,8, + 56,24,127,248,255,248,255,248,13,19,38,16,1,0,31,128, + 121,224,112,240,240,240,64,240,0,240,1,224,7,192,15,192, + 3,240,0,240,0,120,0,120,0,120,0,120,128,240,192,240, + 127,224,31,128,14,19,38,17,1,0,0,48,1,240,1,240, + 3,240,7,240,6,240,12,240,12,240,24,240,56,240,48,240, + 96,240,255,252,255,248,0,240,0,240,0,240,1,248,7,252, + 13,19,38,16,1,0,63,248,63,240,63,224,112,0,112,0, + 96,0,96,0,127,128,127,224,97,240,0,248,0,120,0,120, + 0,120,0,120,0,112,128,240,193,224,127,128,14,20,40,16, + 1,0,0,112,3,240,7,128,15,0,28,0,60,0,120,0, + 120,0,115,224,255,240,252,120,240,124,240,60,240,60,240,60, + 112,60,120,56,56,56,28,112,7,192,13,19,38,16,2,0, + 255,248,255,248,255,240,192,48,128,96,128,96,0,224,0,192, + 1,192,1,128,3,128,3,128,7,0,7,0,14,0,14,0, + 30,0,28,0,56,0,14,19,38,16,1,0,15,192,24,240, + 48,120,112,120,112,120,120,120,126,240,63,192,31,224,15,240, + 63,248,120,252,248,124,240,60,240,60,240,56,112,56,56,112, + 31,192,14,20,40,16,1,255,7,192,24,240,56,120,112,120, + 240,60,240,60,240,60,240,60,248,60,124,124,63,252,31,60, + 0,56,0,120,0,112,0,240,1,224,7,128,63,0,56,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=16 dx=28 dy= 0 ascent=26 len=112 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x=-5 y=-8 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =26 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20r[4680] U8G_SECTION(".progmem.u8g_font_gdb20r") = { + 0,49,47,240,244,20,5,86,12,137,32,127,248,26,248,25, + 248,0,0,0,8,0,0,5,24,24,10,2,255,24,120,120, + 120,120,120,120,120,120,112,112,112,112,48,48,48,48,0,0, + 112,248,248,248,112,11,10,20,15,2,13,56,224,243,224,241, + 224,241,192,113,192,113,192,113,192,113,192,112,192,96,192,15, + 18,36,16,1,2,1,140,3,152,3,24,3,24,3,56,63, + 254,63,254,6,112,14,96,12,96,12,96,127,252,255,248,24, + 192,24,192,57,128,49,128,49,128,14,25,50,16,1,253,3, + 0,3,0,3,0,31,240,63,248,115,120,227,56,227,16,243, + 0,255,0,127,0,63,224,15,240,3,248,3,124,3,28,195, + 28,195,28,227,28,251,120,255,240,63,224,3,0,3,0,3, + 0,21,20,60,23,1,0,0,0,96,30,0,192,115,129,192, + 97,131,128,225,195,0,225,198,0,225,206,0,225,220,0,97, + 152,0,115,176,0,30,113,224,0,231,112,1,198,48,1,142, + 56,3,142,56,7,14,56,14,14,56,12,6,48,28,7,48, + 56,3,192,21,23,69,22,1,0,1,240,0,7,120,0,14, + 60,0,14,60,0,30,60,0,30,124,0,30,120,0,31,240, + 0,31,224,0,15,192,0,15,128,0,31,143,248,63,195,160, + 123,225,128,123,241,128,241,249,128,240,251,0,240,127,0,240, + 126,0,248,63,0,120,31,240,63,247,240,15,195,192,5,10, + 10,9,2,13,56,240,240,240,112,112,112,112,112,96,9,30, + 60,11,2,251,1,0,3,128,6,0,14,0,28,0,60,0, + 56,0,120,0,120,0,112,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 120,0,56,0,60,0,28,0,30,0,14,0,7,0,1,128, + 9,30,60,11,0,251,64,0,240,0,56,0,60,0,28,0, + 30,0,14,0,15,0,15,0,15,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,0,15,0, + 15,0,15,0,14,0,30,0,28,0,56,0,48,0,96,0, + 192,0,12,13,26,14,1,11,3,0,15,0,70,64,102,112, + 246,240,63,192,15,0,63,224,254,240,230,112,70,32,7,0, + 14,0,12,12,24,13,1,3,6,0,6,0,6,0,6,0, + 6,0,127,240,255,224,6,0,6,0,6,0,6,0,6,0, + 6,10,10,9,2,250,56,252,252,60,60,56,56,112,96,192, + 10,2,4,11,1,7,255,192,255,128,5,5,5,9,2,255, + 112,248,248,248,112,14,30,60,15,1,251,0,28,0,56,0, + 56,0,120,0,112,0,112,0,224,0,224,0,224,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,28,0,28,0,28,0,56,0,56,0,120,0,112,0,112, + 0,224,0,224,0,192,0,14,18,36,16,1,0,7,192,24, + 224,56,112,112,120,112,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,56,112,56,120,56,56,112,28,96,15, + 128,13,19,38,16,2,0,1,128,15,128,127,128,239,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,224,127,248,13,19,38, + 16,1,0,15,224,56,240,120,120,240,120,112,120,0,120,0, + 240,0,240,1,224,1,192,3,128,7,0,14,0,28,8,28, + 8,56,24,127,248,255,248,255,248,13,19,38,16,1,0,31, + 128,121,224,112,240,240,240,64,240,0,240,1,224,7,192,15, + 192,3,240,0,240,0,120,0,120,0,120,0,120,128,240,192, + 240,127,224,31,128,14,19,38,17,1,0,0,48,1,240,1, + 240,3,240,7,240,6,240,12,240,12,240,24,240,56,240,48, + 240,96,240,255,252,255,248,0,240,0,240,0,240,1,248,7, + 252,13,19,38,16,1,0,63,248,63,240,63,224,112,0,112, + 0,96,0,96,0,127,128,127,224,97,240,0,248,0,120,0, + 120,0,120,0,120,0,112,128,240,193,224,127,128,14,20,40, + 16,1,0,0,112,3,240,7,128,15,0,28,0,60,0,120, + 0,120,0,115,224,255,240,252,120,240,124,240,60,240,60,240, + 60,112,60,120,56,56,56,28,112,7,192,13,19,38,16,2, + 0,255,248,255,248,255,240,192,48,128,96,128,96,0,224,0, + 192,1,192,1,128,3,128,3,128,7,0,7,0,14,0,14, + 0,30,0,28,0,56,0,14,19,38,16,1,0,15,192,24, + 240,48,120,112,120,112,120,120,120,126,240,63,192,31,224,15, + 240,63,248,120,252,248,124,240,60,240,60,240,56,112,56,56, + 112,31,192,14,20,40,16,1,255,7,192,24,240,56,120,112, + 120,240,60,240,60,240,60,240,60,248,60,124,124,63,252,31, + 60,0,56,0,120,0,112,0,240,1,224,7,128,63,0,56, + 0,5,16,16,9,2,255,112,248,248,248,112,0,0,0,0, + 0,0,112,248,248,248,112,6,21,21,9,2,250,112,248,248, + 248,112,0,0,0,0,0,0,56,252,252,60,60,56,56,112, + 96,192,13,10,20,15,1,4,0,24,0,240,7,240,63,128, + 252,0,248,0,127,0,15,224,1,248,0,48,13,7,14,15, + 1,5,255,248,255,240,0,0,0,0,0,0,255,248,255,240, + 13,10,20,15,1,4,96,0,252,0,63,128,7,240,0,248, + 1,240,15,224,127,0,248,0,192,0,12,24,48,15,1,255, + 31,192,121,224,240,240,240,240,240,240,192,240,0,240,1,224, + 1,192,3,192,3,128,7,0,7,0,6,0,6,0,6,0, + 0,0,0,0,0,0,14,0,31,0,31,0,31,0,14,0, + 26,28,112,28,1,249,0,31,192,0,0,255,248,0,3,255, + 252,0,7,224,62,0,15,128,15,0,30,0,7,128,60,30, + 35,128,60,49,225,128,120,97,225,192,120,225,224,192,240,225, + 224,192,241,225,224,192,241,225,224,192,241,225,224,192,241,225, + 224,192,241,225,225,128,241,225,225,128,248,243,227,0,120,255, + 254,0,120,125,252,0,124,56,240,0,62,0,0,0,62,0, + 2,0,31,128,6,0,15,224,63,0,7,255,248,0,1,255, + 240,0,0,63,128,0,20,20,60,20,0,0,0,32,0,0, + 240,0,0,240,0,1,248,0,1,248,0,1,248,0,3,188, + 0,3,60,0,3,60,0,7,30,0,6,30,0,14,31,0, + 15,255,0,12,7,0,28,7,128,24,7,128,24,3,128,56, + 3,192,56,3,192,254,15,240,17,20,60,19,1,0,63,224, + 0,252,120,0,60,60,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,60,0,60,120,0,63,248,0,60,30,0,60, + 15,0,60,15,0,60,7,128,60,7,128,60,7,128,60,7, + 128,60,15,0,124,30,0,255,248,0,16,20,40,18,1,0, + 1,254,6,31,28,14,56,4,56,0,112,0,112,0,240,0, + 240,0,240,0,240,0,240,0,240,0,248,0,120,0,124,3, + 63,14,31,252,15,248,3,224,18,20,60,20,1,0,63,240, + 0,252,60,0,60,14,0,60,15,0,60,7,128,60,7,128, + 60,3,192,60,3,192,60,3,192,60,3,192,60,3,192,60, + 3,192,60,3,192,60,3,128,60,7,128,60,7,128,60,15, + 0,60,14,0,124,28,0,255,240,0,15,20,40,17,1,0, + 255,252,124,12,60,12,60,12,60,12,60,0,60,0,60,0, + 60,0,63,240,60,32,60,0,60,0,60,0,60,0,60,0, + 60,2,60,6,124,14,255,254,14,20,40,16,1,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,126,0,255,0,18,20,60,19,1,0,1,254,0,6, + 15,0,28,6,0,56,4,0,56,0,0,120,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,127,192,240,127,192, + 240,15,0,240,15,0,120,15,0,120,15,0,60,15,0,30, + 15,0,15,254,0,3,240,0,20,20,60,22,1,0,255,15, + 240,126,7,224,60,3,192,60,3,192,60,3,192,60,3,192, + 60,3,192,60,3,192,60,3,192,63,255,192,60,3,192,60, + 3,192,60,3,192,60,3,192,60,3,192,60,3,192,60,3, + 192,60,3,192,126,7,224,255,15,240,8,20,20,10,1,0, + 255,126,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,126,255,14,27,54,11,252,249,7,252,1,248,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,224,1,224,49,192,127,128,255,0,60,0, + 19,20,60,20,1,0,255,31,192,126,15,0,60,14,0,60, + 28,0,60,56,0,60,112,0,60,224,0,60,224,0,61,192, + 0,63,128,0,63,192,0,61,224,0,60,240,0,60,120,0, + 60,60,0,60,62,0,60,31,0,60,15,128,126,7,224,255, + 3,128,15,20,40,16,1,0,255,0,126,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 25,20,80,27,1,0,252,0,31,128,62,0,62,0,62,0, + 62,0,62,0,126,0,63,0,126,0,55,0,254,0,55,128, + 222,0,55,129,222,0,51,193,158,0,51,195,158,0,49,195, + 158,0,49,227,30,0,48,231,30,0,48,246,30,0,48,254, + 30,0,48,124,30,0,48,124,30,0,48,56,30,0,120,56, + 63,0,252,24,127,128,19,20,60,21,1,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,20,60,20,1,0,3,240, + 0,12,28,0,28,14,0,56,7,0,56,7,128,112,7,128, + 112,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,248,3,128,120,7,128,120,7,0,60,15, + 0,30,30,0,15,248,0,3,224,0,16,20,40,18,1,0, + 63,240,252,60,60,30,60,15,60,15,60,15,60,15,60,15, + 60,14,60,30,62,60,61,240,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,128,21,25,75,20,1,251,3,240, + 0,14,28,0,28,14,0,56,15,0,56,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,128,120,3,128,120,7,128,60,7, + 0,28,14,0,14,28,0,3,248,0,0,60,0,0,15,8, + 0,7,248,0,3,240,0,0,224,18,20,60,19,1,0,63, + 224,0,252,120,0,60,60,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,60,0,60,252,0,63,240,0,63,224,0, + 60,240,0,60,112,0,60,120,0,60,60,0,60,62,0,60, + 30,0,60,15,0,126,15,192,255,7,128,13,20,40,16,2, + 0,15,224,48,224,96,96,224,0,224,0,240,0,252,0,127, + 0,127,192,31,224,15,240,3,248,0,248,0,120,128,120,192, + 120,192,112,224,224,255,192,63,0,18,20,60,19,0,0,255, + 255,192,193,225,192,193,224,192,193,224,192,129,224,128,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,3,240,0,7,248,0,19,20,60,21,1, + 0,255,7,224,126,3,192,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,3, + 0,30,3,0,15,6,0,7,252,0,3,240,0,21,20,60, + 21,0,0,255,3,248,60,0,224,60,0,192,30,0,192,30, + 1,128,15,1,128,15,3,128,15,3,0,7,131,0,7,135, + 0,3,198,0,3,198,0,3,206,0,1,236,0,1,236,0, + 0,248,0,0,248,0,0,248,0,0,112,0,0,96,0,27, + 20,80,27,0,0,255,6,15,224,60,6,3,192,28,15,3, + 128,28,15,3,0,28,15,3,0,30,31,131,0,30,27,131, + 0,14,27,199,0,14,59,198,0,15,49,198,0,15,49,230, + 0,7,112,238,0,7,96,252,0,7,224,252,0,7,192,124, + 0,3,192,124,0,3,192,60,0,3,128,56,0,3,128,56, + 0,3,0,16,0,20,20,60,20,0,0,127,143,224,62,3, + 128,30,7,0,15,6,0,15,142,0,7,140,0,3,220,0, + 3,248,0,1,240,0,0,240,0,0,248,0,1,248,0,3, + 188,0,3,190,0,7,30,0,6,15,0,14,15,128,28,7, + 128,60,7,192,254,31,240,19,20,60,20,0,0,252,7,224, + 60,3,192,30,3,128,15,3,0,15,7,0,7,134,0,3, + 142,0,3,204,0,1,220,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,1,248,0,3,252,0,15,20,40,17,1,0,127, + 254,96,62,96,124,64,124,64,248,0,240,1,240,1,224,3, + 224,7,192,7,192,15,128,15,0,31,0,62,0,62,2,124, + 2,124,6,248,6,255,254,9,30,60,11,2,251,255,128,255, + 128,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,255,128,255,128,13,30,60,15,1,251,192, + 0,224,0,224,0,112,0,112,0,48,0,56,0,56,0,28, + 0,28,0,28,0,14,0,14,0,6,0,7,0,7,0,3, + 128,3,128,3,128,1,192,1,192,0,192,0,224,0,224,0, + 112,0,112,0,112,0,56,0,56,0,24,9,30,60,11,0, + 251,255,128,255,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,255,128,255,128,12,15,30, + 16,2,9,2,0,6,0,15,0,15,0,27,0,27,128,17, + 128,49,192,49,192,96,192,96,224,96,96,192,112,192,48,128, + 32,14,2,4,15,1,252,255,252,255,248,7,8,8,10,0, + 16,112,240,120,56,60,28,14,6,14,15,30,16,1,0,31, + 192,112,224,240,240,192,240,0,240,3,240,31,240,63,240,120, + 240,240,240,240,240,240,240,251,252,126,248,56,96,16,24,48, + 17,0,0,12,0,252,0,124,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,120,61,252,63,254,63,30,60,15,60, + 7,60,7,60,7,60,7,60,6,60,14,62,28,63,248,31, + 240,7,192,13,15,30,15,1,0,3,248,12,120,56,48,112, + 16,112,0,240,0,240,0,240,0,240,0,248,0,248,8,124, + 56,63,240,31,224,15,128,16,24,48,18,1,0,0,28,0, + 252,0,60,0,60,0,60,0,60,0,60,0,60,0,60,7, + 252,24,124,56,60,112,60,112,60,240,60,240,60,240,60,240, + 60,248,60,248,60,124,124,127,255,63,190,30,24,13,15,30, + 15,1,0,7,192,24,224,56,112,112,120,112,120,240,120,255, + 240,240,0,240,0,240,0,248,8,124,56,127,240,63,224,15, + 128,13,24,48,11,1,0,1,240,7,248,14,112,28,32,28, + 0,60,0,60,0,60,0,60,0,255,192,60,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,127,0,255,128,16,23,46,17,0,248,7,227,28, + 127,56,126,120,60,120,60,120,60,120,60,60,56,60,112,15, + 192,14,0,28,0,31,192,63,252,15,254,31,255,120,127,240, + 15,240,14,240,14,120,28,63,248,15,192,17,24,72,18,1, + 0,12,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,120,0,61, + 252,0,63,254,0,63,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,126,63,0,255,127,128,8,21,21,10,1,0,28, + 62,62,28,0,0,28,252,124,60,60,60,60,60,60,60,60, + 60,60,126,255,12,29,58,9,251,248,0,224,1,240,1,240, + 0,224,0,0,0,0,0,224,7,224,3,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,192,1,192,99,128,255,0, + 254,0,120,0,17,24,72,18,1,0,12,0,0,252,0,0, + 124,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,63,128,60,30,0,60,60,0,60,112, + 0,60,224,0,61,192,0,63,192,0,63,224,0,61,224,0, + 60,240,0,60,120,0,60,60,0,60,62,0,126,31,128,255, + 15,0,8,24,24,10,1,0,12,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 26,15,60,28,1,0,28,120,60,0,252,252,254,0,127,255, + 255,0,63,31,143,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,126,63,31,128,255,127, + 191,192,17,15,45,18,1,0,12,60,0,252,252,0,127,254, + 0,63,30,0,62,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,15,15,30,17,1,0,7,224,24,112,56, + 56,112,60,112,30,240,30,240,30,240,30,240,30,240,30,240, + 28,120,28,56,56,28,48,15,192,16,23,46,18,1,248,12, + 120,252,252,127,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,62,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,23,69, + 18,1,248,3,194,0,12,54,0,56,30,0,112,30,0,112, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,248,30, + 0,248,30,0,124,126,0,127,254,0,63,222,0,15,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,63,0,0,255,128,13,15,30,14,1,0,24,240, + 249,248,123,248,62,48,60,48,60,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,11,15,30,13, + 1,0,31,192,97,192,225,128,224,128,248,0,254,0,127,128, + 127,192,31,224,7,224,129,224,192,224,192,192,224,192,255,0, + 11,20,40,12,0,0,4,0,28,0,60,0,60,0,60,0, + 255,224,60,64,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,96,63,224,31,128,14,0,17,15, + 45,18,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,16,15,30,16,0,0,254,31,124,14,60,12,60,12,30, + 28,30,24,15,24,15,48,7,48,7,240,7,224,3,224,3, + 192,1,192,1,128,23,15,45,23,0,0,254,24,62,124,24, + 28,60,28,24,60,60,24,28,62,48,30,126,48,30,111,48, + 14,111,112,15,199,96,15,199,224,7,195,224,7,131,192,7, + 131,192,3,1,192,2,1,128,16,15,30,17,0,0,255,63, + 62,28,30,24,15,48,15,240,7,224,3,192,3,224,3,224, + 6,240,14,248,28,120,24,60,120,62,252,127,17,23,69,16, + 255,248,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,13,15,30,15,1,0,127,248,96, + 248,65,240,65,224,3,224,7,192,7,128,15,128,15,0,31, + 0,62,16,60,24,124,24,248,24,255,248,9,30,60,12,2, + 251,1,0,7,128,14,0,28,0,60,0,60,0,60,0,60, + 0,62,0,30,0,30,0,30,0,30,0,60,0,120,0,252, + 0,60,0,30,0,30,0,30,0,30,0,62,0,60,0,60, + 0,60,0,60,0,28,0,30,0,7,0,1,128,2,32,32, + 7,3,250,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,128,9,30,60,12,1,251,64,0,240,0,60,0,28, + 0,30,0,30,0,30,0,30,0,62,0,60,0,60,0,60, + 0,60,0,30,0,31,128,15,0,30,0,60,0,60,0,60, + 0,60,0,62,0,30,0,30,0,30,0,30,0,28,0,56, + 0,112,0,192,0,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=34 h=41 x= 4 y=23 dx=35 dy= 0 ascent=34 len=136 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x=-6 y=-11 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =34 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25[14643] U8G_SECTION(".progmem.u8g_font_gdb25") = { + 0,61,57,236,242,25,7,167,18,92,32,255,247,34,245,31, + 247,0,0,0,10,0,0,6,30,30,12,3,255,12,60,252, + 252,252,124,120,120,120,120,120,120,120,120,120,120,120,120,56, + 48,48,32,0,0,56,124,252,252,252,120,13,13,26,19,3, + 16,24,56,248,248,248,248,248,248,248,248,248,248,248,240,112, + 240,112,112,112,112,112,112,112,112,112,112,19,23,69,20,1, + 2,0,97,192,0,227,128,0,227,128,0,195,128,1,195,0, + 1,199,0,31,255,224,31,255,224,35,142,0,3,142,0,3, + 14,0,7,12,0,7,28,0,7,28,0,127,255,128,255,255, + 128,14,56,0,12,56,0,28,48,0,28,112,0,24,112,0, + 24,112,0,32,224,0,17,30,90,21,2,253,0,192,0,1, + 192,0,1,192,0,3,240,0,31,254,0,63,255,128,113,223, + 0,225,207,0,225,199,0,225,194,0,241,192,0,255,192,0, + 127,192,0,63,248,0,15,252,0,3,254,0,1,255,0,1, + 223,128,1,207,128,193,199,128,193,199,128,225,199,128,241,207, + 0,253,207,0,255,254,0,63,252,0,7,224,0,1,192,0, + 1,192,0,1,128,0,26,25,100,28,1,0,0,0,3,0, + 15,128,15,0,63,192,14,0,113,224,28,0,112,224,56,0, + 224,112,120,0,224,112,112,0,224,112,224,0,224,113,192,0, + 224,115,192,0,96,103,128,0,112,103,0,0,48,206,62,0, + 31,28,99,0,0,60,195,128,0,56,193,128,0,113,193,192, + 0,225,193,192,1,225,193,192,1,193,193,192,3,129,193,192, + 7,0,225,128,15,0,227,128,14,0,127,0,28,0,62,0, + 27,28,112,28,1,0,0,126,0,0,1,255,128,0,3,143, + 128,0,7,7,192,0,7,7,192,0,15,7,192,0,15,7, + 192,0,15,15,128,0,15,159,0,0,15,191,0,0,7,254, + 0,0,7,248,0,0,7,240,0,0,15,240,255,224,31,241, + 255,192,63,248,61,128,125,252,60,0,124,254,28,0,248,254, + 28,0,248,127,28,0,248,63,184,0,248,31,248,0,248,15, + 240,0,252,7,248,0,124,3,252,0,63,7,255,192,31,254, + 127,128,7,240,28,0,5,13,13,11,3,16,24,248,248,248, + 248,248,248,112,112,112,112,112,112,11,37,74,13,2,250,0, + 64,1,224,3,192,7,128,15,0,15,0,30,0,30,0,60, + 0,60,0,124,0,124,0,120,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,120, + 0,124,0,124,0,124,0,60,0,62,0,30,0,31,0,15, + 0,7,128,3,192,1,224,0,64,11,37,74,13,0,250,64, + 0,240,0,120,0,60,0,30,0,31,0,15,0,15,128,7, + 128,7,192,7,192,7,192,7,192,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,192,7, + 192,7,192,7,192,7,128,15,128,15,0,15,0,30,0,30, + 0,60,0,120,0,240,0,64,0,16,16,32,18,1,14,0, + 192,3,192,3,192,99,140,123,158,125,191,127,252,15,224,7, + 224,63,252,253,190,249,158,51,142,3,192,3,192,3,0,15, + 14,28,17,1,4,1,128,3,128,3,128,3,128,3,128,3, + 128,127,254,255,252,3,128,3,128,3,128,3,128,3,128,3, + 0,8,12,12,11,2,249,30,127,255,127,31,31,30,30,60, + 56,112,96,12,2,4,14,1,9,127,240,255,240,6,6,6, + 11,3,255,56,124,252,252,252,120,17,38,114,19,1,249,0, + 1,128,0,7,128,0,7,128,0,15,0,0,15,0,0,15, + 0,0,30,0,0,30,0,0,28,0,0,60,0,0,60,0, + 0,120,0,0,120,0,0,120,0,0,240,0,0,240,0,0, + 224,0,1,224,0,1,224,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,7,0,0,15,0,0,15,0,0, + 30,0,0,30,0,0,30,0,0,60,0,0,60,0,0,56, + 0,0,120,0,0,120,0,0,240,0,0,240,0,0,192,0, + 0,18,24,72,20,1,0,3,240,0,7,252,0,30,62,0, + 28,31,0,60,15,0,120,15,128,120,15,128,120,7,128,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,120,7,128,124,7,128,124,15,128, + 60,15,0,62,14,0,31,30,0,15,248,0,3,224,0,16, + 24,48,20,2,0,0,96,3,224,31,224,255,224,99,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,7, + 240,127,255,127,255,16,24,48,20,2,0,3,248,15,252,60, + 62,124,63,120,31,248,31,112,31,0,31,0,62,0,60,0, + 124,0,120,0,240,1,224,3,224,3,192,7,128,15,1,30, + 3,60,3,120,3,127,255,255,255,255,255,16,24,48,20,2, + 0,7,240,31,248,60,124,120,62,248,62,248,62,64,62,0, + 60,0,124,0,240,7,240,7,252,0,254,0,62,0,63,0, + 31,0,31,0,31,0,31,0,30,192,62,240,124,127,248,15, + 192,17,24,72,20,1,0,0,12,0,0,124,0,0,124,0, + 0,252,0,1,252,0,1,252,0,3,188,0,7,188,0,7, + 60,0,14,60,0,14,60,0,28,60,0,56,60,0,56,60, + 0,112,60,0,255,255,128,255,255,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,3,255,128,3,255,128,17, + 24,72,20,1,0,31,255,0,31,255,128,31,254,0,31,252, + 0,24,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 63,240,0,63,252,0,48,126,0,96,31,0,0,31,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,31, + 0,96,31,0,248,126,0,63,252,0,7,224,0,17,24,72, + 20,2,0,0,14,0,0,126,0,1,240,0,7,192,0,15, + 128,0,30,0,0,62,0,0,60,0,0,124,0,0,121,248, + 0,127,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,15,128,124,15,0,60, + 31,0,31,30,0,15,252,0,3,240,0,17,24,72,20,2, + 0,127,255,128,127,255,0,255,255,0,255,255,0,224,6,0, + 192,14,0,128,12,0,0,28,0,0,28,0,0,56,0,0, + 56,0,0,112,0,0,112,0,0,240,0,0,224,0,1,224, + 0,1,192,0,3,192,0,3,192,0,7,128,0,7,128,0, + 15,128,0,31,0,0,28,0,0,17,24,72,21,2,0,3, + 240,0,15,252,0,28,62,0,24,31,0,56,31,0,56,31, + 0,56,31,0,60,62,0,63,60,0,31,248,0,15,240,0, + 7,252,0,14,254,0,62,63,0,124,31,128,120,31,128,248, + 15,128,248,15,128,248,15,128,248,15,0,124,31,0,126,62, + 0,63,252,0,7,224,0,17,25,75,20,2,255,3,240,0, + 15,252,0,30,62,0,60,30,0,120,31,0,120,31,0,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 128,126,63,128,63,255,128,15,207,0,0,15,0,0,31,0, + 0,30,0,0,62,0,0,124,0,0,248,0,1,240,0,15, + 192,0,63,0,0,56,0,0,6,19,19,11,3,255,56,124, + 252,252,252,120,0,0,0,0,0,0,0,56,124,252,252,252, + 120,8,26,26,11,2,249,8,62,126,126,126,124,0,0,0, + 0,0,0,0,0,30,127,255,127,31,31,30,30,60,56,112, + 96,16,13,26,18,1,5,0,3,0,31,0,255,3,252,31, + 224,127,128,252,0,254,0,127,192,15,248,1,255,0,63,0, + 6,16,8,16,18,1,7,127,255,255,255,0,0,0,0,0, + 0,0,0,127,255,255,255,16,13,26,18,1,5,112,0,252, + 0,255,128,31,240,3,254,0,127,0,63,0,255,7,248,63, + 224,127,0,248,0,192,0,15,30,60,18,1,255,7,240,31, + 248,60,124,120,126,248,62,248,62,248,62,224,62,0,62,0, + 124,0,124,0,248,0,240,1,240,1,224,1,192,3,192,3, + 128,3,128,3,128,3,128,0,0,0,0,0,0,3,128,7, + 192,15,192,15,192,15,192,7,128,31,34,136,35,2,248,0, + 7,248,0,0,63,255,0,0,255,255,192,1,248,15,224,3, + 192,1,240,7,128,0,248,15,0,0,120,30,0,0,60,60, + 3,195,60,56,15,238,28,120,30,126,30,120,60,62,14,112, + 120,62,14,240,120,62,14,240,248,62,14,240,248,62,14,240, + 248,62,14,240,248,62,14,240,248,62,12,240,248,62,28,240, + 252,62,28,248,124,126,56,120,127,255,240,120,127,191,224,124, + 63,159,192,60,30,15,0,62,0,0,0,31,0,0,0,31, + 128,0,48,15,224,0,240,7,248,7,224,1,255,255,192,0, + 127,255,0,0,15,248,0,25,25,100,25,0,0,0,4,0, + 0,0,30,0,0,0,62,0,0,0,126,0,0,0,127,0, + 0,0,111,0,0,0,239,128,0,0,239,128,0,0,199,128, + 0,1,199,192,0,1,199,192,0,1,131,192,0,3,131,224, + 0,3,131,224,0,3,255,224,0,7,255,240,0,7,0,240, + 0,6,0,248,0,14,0,248,0,14,0,120,0,12,0,124, + 0,28,0,124,0,28,0,124,0,255,129,255,0,255,129,255, + 128,22,25,75,24,0,0,15,254,0,255,255,128,223,15,224, + 31,3,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,224,31,15,128,31,255,0,31,255,224,31,3, + 240,31,1,248,31,0,248,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,248,31,3,240,127,255,224,255, + 255,0,20,25,75,22,1,0,0,127,128,3,255,240,7,135, + 224,15,1,224,30,0,192,60,0,64,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,252,0,0,124,0,0,124,0, + 0,126,0,32,63,0,112,31,193,224,15,255,192,7,255,0, + 1,252,0,22,25,75,25,1,0,15,252,0,255,255,128,255, + 15,192,31,3,224,31,1,240,31,1,248,31,0,248,31,0, + 248,31,0,124,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,120,31,0,248,31, + 0,248,31,1,240,31,1,240,31,3,224,31,7,192,127,255, + 128,255,252,0,19,25,75,21,1,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,18,25,75,20,1,0,255,255,192,255,255, + 192,62,1,192,30,1,192,30,1,192,30,0,192,30,0,128, + 30,0,0,30,0,0,30,0,0,30,0,0,31,254,0,31, + 254,0,30,4,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,62,0,0, + 255,192,0,255,224,0,22,25,75,24,1,0,0,127,128,1, + 255,240,7,131,240,15,1,224,30,0,224,60,0,64,60,0, + 0,124,0,0,120,0,0,248,0,0,248,0,0,248,0,0, + 248,15,252,248,15,252,248,1,240,248,1,240,252,1,240,124, + 1,240,124,1,240,126,1,240,63,1,240,31,129,240,15,255, + 192,7,255,128,0,252,0,25,25,100,27,1,0,255,227,255, + 128,127,227,255,128,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,255,252,0,31,255,252, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,127,195,255,128,255,227,255, + 128,11,25,50,13,1,0,255,224,127,224,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,127,192,255,224,18,33,99,13,251,248,3, + 255,192,1,255,128,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,60,0,0,60,0, + 0,56,0,16,120,0,56,112,0,127,224,0,255,128,0,62, + 0,0,24,25,75,25,0,0,255,227,254,127,193,254,31,0, + 240,31,1,224,31,3,192,31,7,128,31,15,0,31,14,0, + 31,28,0,31,60,0,31,120,0,31,240,0,31,248,0,31, + 124,0,31,60,0,31,62,0,31,31,0,31,15,128,31,7, + 192,31,3,224,31,3,240,31,1,248,31,0,255,127,224,127, + 255,224,60,20,25,75,20,0,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,48,31,0,96,31,0,96,31,128,224,127,255, + 224,255,255,224,31,25,100,34,1,0,255,0,1,254,127,0, + 1,254,31,128,1,240,31,128,3,240,31,192,3,240,31,192, + 7,240,31,192,7,240,31,224,14,240,29,224,14,240,29,240, + 30,240,28,240,28,240,28,248,28,240,28,248,56,240,28,124, + 56,248,28,124,112,248,28,60,112,248,28,62,224,248,28,30, + 224,248,28,31,224,248,28,31,192,248,28,15,192,248,28,15, + 128,248,28,7,128,248,255,7,7,254,255,3,7,254,25,25, + 100,27,1,0,254,0,255,128,255,0,127,0,31,0,28,0, + 31,128,28,0,31,192,28,0,31,192,28,0,31,224,28,0, + 29,240,28,0,29,248,28,0,28,248,28,0,28,124,28,0, + 28,126,28,0,28,62,28,0,28,31,28,0,28,15,156,0, + 28,15,156,0,28,7,220,0,28,3,252,0,28,3,252,0, + 28,1,252,0,28,0,252,0,28,0,252,0,28,0,124,0, + 127,0,60,0,255,128,12,0,23,25,75,25,1,0,0,126, + 0,3,255,192,7,135,224,14,1,240,30,0,248,60,0,248, + 60,0,124,124,0,124,120,0,126,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,252,0, + 60,124,0,124,124,0,120,62,0,120,62,0,240,31,1,224, + 15,195,192,7,255,0,0,252,0,21,25,75,23,1,0,15, + 254,0,255,255,192,255,7,224,31,3,240,31,1,248,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,1,240, + 31,1,240,31,135,224,31,127,128,31,62,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,127,224,0,255,224,0,27,31,124,25,1,250, + 0,126,0,0,3,255,192,0,7,135,224,0,14,1,240,0, + 30,0,248,0,60,0,248,0,60,0,124,0,124,0,124,0, + 120,0,124,0,248,0,62,0,248,0,62,0,248,0,62,0, + 248,0,62,0,248,0,62,0,248,0,62,0,248,0,62,0, + 252,0,60,0,124,0,124,0,124,0,120,0,62,0,120,0, + 62,0,240,0,31,1,224,0,15,195,192,0,7,255,128,0, + 0,255,0,0,0,7,224,0,0,1,248,96,0,0,255,224, + 0,0,127,192,0,0,31,128,0,0,7,0,23,25,75,24, + 1,0,15,252,0,255,255,128,255,15,192,31,7,192,31,3, + 224,31,3,224,31,3,224,31,3,224,31,3,224,31,7,192, + 31,7,128,31,255,0,31,254,0,31,124,0,31,30,0,31, + 15,0,31,15,0,31,7,128,31,7,192,31,3,224,31,3, + 224,31,1,240,31,1,254,127,192,254,255,224,248,17,25,75, + 21,2,0,3,252,0,31,255,0,60,63,0,112,14,0,240, + 6,0,240,0,0,248,0,0,252,0,0,254,0,0,127,128, + 0,63,224,0,31,248,0,7,254,0,1,255,0,0,127,0, + 0,31,128,0,15,128,0,7,128,192,7,128,192,7,128,224, + 7,0,240,14,0,252,28,0,255,248,0,31,224,0,23,25, + 75,23,0,0,127,255,252,127,255,254,96,124,14,224,124,12, + 192,124,12,192,124,12,192,124,12,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,3,255,128,3,255,128,25, + 25,100,27,1,0,255,224,255,128,127,224,255,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,24, + 0,15,128,56,0,15,128,56,0,7,192,112,0,3,224,224, + 0,1,255,192,0,0,127,0,0,26,25,100,27,0,0,255, + 192,63,192,127,192,63,192,31,0,14,0,31,0,14,0,15, + 128,28,0,15,128,28,0,15,128,28,0,7,192,56,0,7, + 192,56,0,3,224,48,0,3,224,112,0,3,224,112,0,1, + 240,224,0,1,240,224,0,0,240,224,0,0,249,192,0,0, + 249,192,0,0,125,192,0,0,127,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,31,0,0,0,30,0,0,0, + 8,0,0,34,25,125,34,0,0,255,192,224,127,192,127,128, + 224,63,192,30,0,224,14,0,31,1,240,14,0,31,1,240, + 12,0,15,1,248,28,0,15,3,248,28,0,15,131,248,28, + 0,15,131,252,28,0,7,135,60,24,0,7,135,60,56,0, + 7,134,62,56,0,7,206,30,56,0,3,206,31,56,0,3, + 204,15,48,0,3,220,15,112,0,3,252,15,240,0,3,248, + 7,240,0,1,248,7,224,0,1,248,7,224,0,1,240,3, + 224,0,1,240,3,224,0,0,240,1,224,0,0,224,1,192, + 0,0,192,1,128,0,25,25,100,25,0,0,127,225,255,0, + 127,225,255,0,31,128,124,0,15,128,112,0,15,192,240,0, + 7,224,224,0,3,225,192,0,1,243,192,0,1,251,128,0, + 0,255,0,0,0,127,0,0,0,126,0,0,0,62,0,0, + 0,127,0,0,0,127,128,0,0,239,192,0,1,231,192,0, + 1,195,224,0,3,131,240,0,7,129,240,0,7,0,248,0, + 14,0,252,0,30,0,254,0,255,131,255,128,255,131,255,128, + 24,25,75,25,0,0,126,0,255,255,0,255,31,0,56,15, + 128,56,15,192,112,7,192,112,3,224,224,3,224,224,1,241, + 192,1,241,192,0,251,128,0,251,128,0,127,0,0,127,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,1,255,192,1,255, + 192,19,25,75,22,1,0,63,255,224,63,255,224,120,7,192, + 112,15,192,96,15,128,96,31,128,32,63,0,0,62,0,0, + 126,0,0,124,0,0,252,0,1,248,0,1,240,0,3,240, + 0,3,224,0,7,224,0,15,192,0,15,128,0,31,128,32, + 31,0,96,63,0,96,126,0,96,124,0,224,255,255,224,255, + 255,224,11,37,74,14,2,250,255,224,255,224,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,255,224, + 255,224,17,38,114,19,1,249,192,0,0,240,0,0,112,0, + 0,112,0,0,120,0,0,56,0,0,60,0,0,60,0,0, + 28,0,0,30,0,0,30,0,0,14,0,0,15,0,0,7, + 0,0,7,128,0,7,128,0,3,128,0,3,192,0,3,192, + 0,1,192,0,1,224,0,0,224,0,0,224,0,0,240,0, + 0,112,0,0,120,0,0,120,0,0,56,0,0,60,0,0, + 60,0,0,28,0,0,30,0,0,14,0,0,15,0,0,15, + 0,0,7,0,0,7,128,0,1,128,10,37,74,13,1,250, + 255,192,255,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,255,192,255,192,16,19,38,20,2,11, + 0,128,3,128,3,192,3,192,7,224,6,224,14,224,12,112, + 12,112,28,120,24,56,24,56,48,28,48,28,112,28,96,14, + 96,14,224,7,128,6,17,2,6,19,1,251,127,255,128,255, + 255,128,9,10,20,13,0,20,56,0,248,0,252,0,124,0, + 62,0,30,0,15,0,7,0,3,128,1,0,19,18,54,20, + 1,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,20,30,90,21,0,0,6,0, + 0,254,0,0,254,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,31,0,62,127,192,63,255,192,63,199,224,63,1, + 224,62,1,240,62,0,240,62,0,240,62,0,240,62,0,240, + 62,0,240,62,0,224,62,1,224,62,1,192,63,131,128,63, + 255,0,15,252,0,1,240,0,16,18,36,18,1,0,1,252, + 7,255,31,31,60,15,60,7,120,6,120,0,248,0,248,0, + 248,0,248,0,248,0,124,0,126,3,63,7,63,254,15,252, + 3,240,21,30,90,22,1,0,0,1,192,0,63,192,0,63, + 192,0,7,192,0,7,192,0,7,192,0,7,192,0,7,192, + 0,7,192,0,7,192,0,7,192,0,7,192,3,247,192,15, + 255,192,30,31,192,60,15,192,124,7,192,120,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,126,31,192,127,255,248,63,247,248,31,231,224,7, + 131,128,17,18,54,19,1,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,14,0,0,0,63,0,0,255,128,3,143,0,7,134,0, + 7,0,0,15,0,0,15,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,252,0,255,248,0,31,16,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,240,0,255,240,0,21,27,81,22,0, + 247,1,248,24,15,255,248,30,31,240,60,15,128,124,7,192, + 124,7,192,124,7,192,124,7,192,62,7,128,63,15,0,31, + 254,0,3,248,0,7,128,0,15,128,0,31,192,0,31,255, + 0,31,255,224,7,255,240,30,255,248,124,3,248,120,0,248, + 248,0,248,248,0,240,252,1,224,127,3,192,31,255,0,3, + 248,0,22,30,90,23,1,0,6,0,0,254,0,0,254,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,15,128,62, + 63,192,62,127,224,62,255,224,63,199,224,63,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,255,143,248,255, + 223,252,10,27,54,12,1,0,30,0,63,0,63,0,63,0, + 30,0,0,0,0,0,0,0,0,0,14,0,254,0,254,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,15,36, + 72,11,250,247,0,60,0,126,0,126,0,126,0,60,0,0, + 0,0,0,0,0,0,0,28,3,252,3,252,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,120, + 0,120,32,240,120,224,255,192,255,128,60,0,21,30,90,22, + 1,0,6,0,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,15,240,62,7,240,62,7,128,62, + 15,0,62,62,0,62,120,0,62,240,0,63,224,0,63,240, + 0,62,248,0,62,124,0,62,62,0,62,31,0,62,31,128, + 62,15,192,62,7,224,255,131,248,255,129,224,10,30,60,12, + 1,0,6,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,34,18, + 90,34,0,0,6,15,192,248,0,255,63,227,252,0,255,127, + 255,254,0,31,227,252,126,0,31,129,248,62,0,31,1,240, + 62,0,31,1,240,62,0,31,1,240,62,0,31,1,240,62, + 0,31,1,240,62,0,31,1,240,62,0,31,1,240,62,0, + 31,1,240,62,0,31,1,240,62,0,31,1,240,62,0,31, + 1,240,62,0,127,199,252,255,128,255,199,252,255,192,22,18, + 54,23,1,0,14,15,128,254,63,192,254,255,224,63,255,224, + 63,199,224,63,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,255,143,248,255,223,252,19,18,54,21,1,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,20,27,81,22,1,247,14,31,0,254, + 127,128,254,255,192,63,135,224,63,3,224,62,1,240,62,0, + 240,62,0,240,62,0,240,62,0,240,62,0,240,62,0,224, + 62,0,224,62,1,192,63,195,192,63,255,128,62,255,0,62, + 60,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,192,0,255,192,0,21,27,81, + 22,1,247,1,240,64,7,252,224,14,31,192,60,15,192,60, + 7,192,120,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,252,7,192,252,15,192,126,31,192,127,255,192, + 63,247,192,31,231,192,7,135,192,0,7,192,0,7,192,0, + 7,192,0,7,192,0,7,192,0,7,192,0,7,192,0,63, + 240,0,63,248,16,18,36,18,1,0,14,30,254,127,254,255, + 63,255,63,207,31,135,31,6,30,6,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,62,0,255,192,255,224,14,18, + 36,17,2,0,15,192,63,248,120,248,240,112,240,48,248,48, + 254,0,127,128,63,224,15,248,3,248,192,252,192,124,224,60, + 224,60,248,120,255,240,63,192,15,25,50,15,0,0,3,0, + 7,0,15,0,31,0,31,0,31,0,31,0,127,254,255,252, + 31,8,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,140,31,254,31,248,15,224,7,128, + 22,18,54,23,1,0,14,0,224,254,31,224,126,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,7,224, + 63,31,252,31,251,252,31,243,240,15,193,192,20,18,54,20, + 0,0,255,131,240,127,3,240,62,1,192,31,1,192,31,1, + 128,15,3,128,15,131,0,15,135,0,7,199,0,7,206,0, + 3,238,0,3,236,0,1,252,0,1,252,0,0,248,0,0, + 248,0,0,240,0,0,96,0,28,18,72,29,0,0,255,131, + 3,240,127,3,129,240,62,3,128,192,30,7,193,192,31,7, + 193,192,31,15,193,192,15,15,227,128,15,157,227,128,15,157, + 243,128,7,153,243,0,7,248,255,0,7,240,255,0,3,240, + 126,0,3,240,126,0,3,224,62,0,1,224,60,0,1,192, + 28,0,1,128,24,0,21,18,54,21,0,0,255,199,240,255, + 199,240,63,131,192,15,131,128,15,199,0,7,238,0,3,252, + 0,1,248,0,1,248,0,0,252,0,1,254,0,3,190,0, + 7,31,0,6,31,128,12,15,192,28,7,224,127,31,248,255, + 31,248,21,27,81,20,255,247,127,193,248,63,129,248,31,0, + 224,15,128,224,15,129,192,7,193,192,7,193,128,7,195,128, + 3,227,128,3,231,0,1,247,0,1,246,0,0,254,0,0, + 254,0,0,252,0,0,124,0,0,120,0,0,56,0,0,56, + 0,0,112,0,0,112,0,0,224,0,33,224,0,127,192,0, + 127,128,0,255,0,0,124,0,0,16,18,36,19,1,0,63, + 255,63,255,112,62,112,126,96,124,96,248,1,248,1,240,3, + 224,7,224,7,192,15,128,31,129,31,3,62,3,124,3,127, + 255,255,255,11,37,74,14,2,250,0,96,1,224,3,192,7, + 128,15,0,31,0,31,0,31,0,31,0,31,0,31,128,15, + 128,15,128,15,128,15,128,15,0,31,0,62,0,252,0,255, + 0,31,0,15,128,15,128,15,128,15,128,15,128,31,128,31, + 0,31,0,31,0,31,0,31,0,15,0,15,128,7,192,1, + 224,0,96,3,41,41,9,3,248,96,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,192,11,37,74,14,1,250,192,0,240,0,124,0,62,0, + 30,0,31,0,31,0,31,0,31,0,31,0,63,0,62,0, + 62,0,62,0,62,0,62,0,31,0,31,224,7,224,15,128, + 31,0,30,0,62,0,62,0,62,0,62,0,63,0,31,0, + 31,0,31,0,31,0,31,0,30,0,60,0,120,0,240,0, + 192,0,18,6,18,20,1,9,15,0,192,31,192,128,63,225, + 0,99,255,0,192,254,0,128,56,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,10,0, + 0,6,29,29,12,3,245,120,252,252,252,248,112,0,16,48, + 56,56,120,120,120,120,120,120,120,120,120,120,120,124,124,252, + 252,252,248,192,16,25,50,20,2,255,0,192,1,192,1,192, + 1,248,7,255,31,255,61,223,121,198,121,198,113,192,241,192, + 241,192,241,192,241,192,241,192,241,192,121,195,125,199,63,206, + 31,252,15,248,3,192,1,192,1,192,1,128,19,25,75,20, + 1,255,0,127,0,1,255,192,3,199,192,7,131,192,7,1, + 192,15,1,128,15,1,128,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,127,252,0,255,248,0,31,0,0,31, + 0,0,31,0,0,31,0,0,30,0,96,30,0,192,30,0, + 192,63,255,192,127,255,192,255,255,192,64,31,128,17,16,48, + 20,1,4,64,0,128,224,1,128,115,243,128,63,255,0,30, + 30,0,28,14,0,56,7,0,56,7,0,56,7,0,56,7, + 0,56,7,0,28,14,0,62,31,0,127,255,128,243,243,128, + 96,1,128,22,24,72,20,254,0,254,3,252,255,3,252,31, + 0,240,31,128,224,15,193,192,7,193,192,7,227,128,3,227, + 128,3,247,128,1,247,0,0,255,0,0,254,0,0,254,0, + 0,124,0,31,255,240,31,255,224,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,3,41,41,9,3,248,96,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,128,0,0,0,64,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192, + 16,28,56,20,2,0,7,224,31,252,60,124,120,56,120,24, + 124,24,127,0,63,192,63,240,127,248,243,252,240,254,240,63, + 240,31,248,15,126,15,127,15,63,206,15,254,3,252,0,254, + 48,126,48,62,48,30,56,30,60,60,63,248,15,224,14,6, + 12,16,1,21,112,56,120,60,248,124,248,124,240,120,112,56, + 27,26,104,30,1,0,0,63,128,0,1,255,240,0,7,192, + 124,0,15,0,30,0,30,0,15,0,60,31,135,128,56,127, + 227,128,112,225,193,192,113,193,193,192,225,192,193,224,227,128, + 128,224,227,128,0,224,227,128,0,224,227,128,0,224,227,128, + 0,224,227,128,0,224,225,192,1,224,113,224,33,192,112,240, + 113,192,56,127,227,128,60,31,7,128,30,0,15,0,15,0, + 30,0,7,192,124,0,1,255,240,0,0,63,128,0,9,14, + 28,11,1,11,30,0,62,0,103,0,231,0,7,0,63,0, + 103,0,231,0,231,0,255,128,119,0,0,0,255,128,255,128, + 17,18,54,21,1,0,0,128,128,1,129,128,3,3,0,7, + 7,0,14,14,0,30,30,0,60,60,0,124,124,0,248,248, + 0,252,248,0,124,124,0,60,60,0,30,30,0,14,14,0, + 7,7,0,3,3,0,1,129,128,0,128,128,17,9,27,20, + 2,3,255,255,128,255,255,128,0,3,128,0,3,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,0,12,2,4, + 14,1,9,127,240,255,240,13,15,30,14,1,14,15,128,31, + 192,48,96,96,48,95,16,137,136,137,136,143,136,139,8,137, + 8,73,144,124,240,48,96,31,192,15,128,16,3,6,20,2, + 23,255,255,255,255,255,254,10,10,20,14,2,15,15,0,63, + 128,115,192,97,192,225,192,225,192,225,128,243,128,127,0,60, + 0,15,18,36,16,1,3,1,128,3,128,3,128,3,128,3, + 128,3,128,127,254,255,252,3,128,3,128,3,128,3,128,3, + 128,3,0,0,0,0,0,127,254,255,252,11,15,30,13,1, + 12,7,192,31,224,56,224,120,224,112,224,0,192,1,192,3, + 128,3,0,6,0,12,0,24,32,48,96,127,224,255,224,11, + 15,30,13,0,12,7,128,31,224,56,224,56,224,32,224,1, + 192,3,128,7,192,0,224,0,224,0,224,128,224,225,192,127, + 192,31,0,9,10,20,13,4,20,14,0,31,128,31,128,63, + 0,62,0,60,0,120,0,112,0,224,0,64,0,22,27,81, + 23,1,247,14,0,96,254,7,224,254,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,63,7,224,63,143,224,63,255,228, + 63,251,252,59,241,248,57,225,224,56,0,0,56,0,0,60, + 0,0,60,0,0,60,0,0,62,0,0,63,0,0,62,0, + 0,48,0,0,22,30,90,24,1,251,3,255,252,31,255,252, + 63,29,240,124,28,224,124,28,224,248,28,224,248,28,224,248, + 28,224,248,28,224,248,28,224,124,28,224,126,28,224,63,28, + 224,31,252,224,3,252,224,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,224,0,28,224,0,28,224,0,28,224,0,127, + 248,0,255,252,6,6,6,8,1,11,56,124,252,252,252,120, + 8,9,9,9,1,247,24,56,60,63,127,31,30,252,224,10, + 15,30,14,2,12,6,0,62,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,63, + 0,255,192,9,14,28,11,1,11,30,0,63,0,119,0,227, + 128,227,128,227,128,227,128,227,128,119,0,126,0,60,0,0, + 0,255,128,255,128,17,18,54,21,2,0,64,64,0,224,224, + 0,112,112,0,56,56,0,60,60,0,30,30,0,31,31,0, + 15,143,128,15,143,128,15,143,128,15,143,128,31,31,0,30, + 30,0,60,60,0,56,56,0,112,112,0,96,96,0,192,192, + 0,22,24,72,25,2,0,12,0,24,252,0,56,28,0,112, + 28,0,224,28,1,192,28,1,192,28,3,128,28,7,0,28, + 6,0,28,14,0,62,28,0,255,184,0,0,56,112,0,112, + 240,0,225,240,1,193,112,1,195,112,3,134,112,7,4,112, + 14,15,252,14,31,248,28,0,112,56,0,112,112,1,252,21, + 24,72,25,2,0,12,0,56,252,0,112,28,0,112,28,0, + 224,28,1,192,28,3,128,28,3,128,28,7,0,28,14,0, + 28,28,0,62,28,0,255,184,0,0,113,240,0,227,248,0, + 230,56,1,206,56,3,128,48,7,0,96,7,0,224,14,0, + 192,28,1,136,60,7,8,56,15,248,112,15,248,23,24,72, + 25,1,0,31,0,12,63,128,28,115,128,56,227,128,112,7, + 0,224,31,0,224,3,129,192,3,131,128,3,131,0,135,135, + 0,255,14,0,60,28,0,0,28,56,0,56,120,0,112,248, + 0,224,184,0,225,184,1,195,56,3,130,56,7,7,254,7, + 15,252,14,0,56,28,0,56,56,0,254,16,29,58,18,1, + 245,3,192,7,224,7,224,7,224,7,192,3,128,0,0,0, + 0,1,192,1,192,1,192,1,192,3,192,3,128,7,128,15, + 0,31,0,62,0,60,0,124,0,248,0,248,7,248,31,248, + 31,248,31,252,30,126,60,63,248,15,224,25,34,136,25,0, + 0,0,192,0,0,3,224,0,0,3,240,0,0,3,248,0, + 0,0,252,0,0,0,62,0,0,0,15,0,0,0,2,0, + 0,0,0,0,0,0,4,0,0,0,30,0,0,0,62,0, + 0,0,126,0,0,0,127,0,0,0,111,0,0,0,239,128, + 0,0,239,128,0,0,199,128,0,1,199,192,0,1,199,192, + 0,1,131,192,0,3,131,224,0,3,131,224,0,3,255,224, + 0,7,255,240,0,7,0,240,0,6,0,248,0,14,0,248, + 0,14,0,120,0,12,0,124,0,28,0,124,0,28,0,124, + 0,255,129,255,0,255,129,255,128,25,34,136,25,0,0,0, + 1,128,0,0,3,192,0,0,7,224,0,0,15,192,0,0, + 31,0,0,0,124,0,0,0,240,0,0,0,64,0,0,0, + 0,0,0,0,4,0,0,0,30,0,0,0,62,0,0,0, + 126,0,0,0,127,0,0,0,111,0,0,0,239,128,0,0, + 239,128,0,0,199,128,0,1,199,192,0,1,199,192,0,1, + 131,192,0,3,131,224,0,3,131,224,0,3,255,224,0,7, + 255,240,0,7,0,240,0,6,0,248,0,14,0,248,0,14, + 0,120,0,12,0,124,0,28,0,124,0,28,0,124,0,255, + 129,255,0,255,129,255,128,25,34,136,25,0,0,0,28,0, + 0,0,62,0,0,0,127,0,0,0,255,128,0,1,255,128, + 0,1,227,192,0,3,128,224,0,2,0,64,0,0,0,0, + 0,0,4,0,0,0,30,0,0,0,62,0,0,0,126,0, + 0,0,127,0,0,0,111,0,0,0,239,128,0,0,239,128, + 0,0,199,128,0,1,199,192,0,1,199,192,0,1,131,192, + 0,3,131,224,0,3,131,224,0,3,255,224,0,7,255,240, + 0,7,0,240,0,6,0,248,0,14,0,248,0,14,0,120, + 0,12,0,124,0,28,0,124,0,28,0,124,0,255,129,255, + 0,255,129,255,128,25,33,132,25,0,0,0,248,48,0,1, + 254,240,0,3,255,224,0,3,255,192,0,6,31,128,0,6, + 3,0,0,4,0,0,0,0,0,0,0,0,4,0,0,0, + 30,0,0,0,62,0,0,0,126,0,0,0,127,0,0,0, + 111,0,0,0,239,128,0,0,239,128,0,0,199,128,0,1, + 199,192,0,1,199,192,0,1,131,192,0,3,131,224,0,3, + 131,224,0,3,255,224,0,7,255,240,0,7,0,240,0,6, + 0,248,0,14,0,248,0,14,0,120,0,12,0,124,0,28, + 0,124,0,28,0,124,0,255,129,255,0,255,129,255,128,25, + 32,128,25,0,0,1,192,224,0,3,193,224,0,7,195,224, + 0,7,195,224,0,3,193,224,0,1,129,192,0,0,0,0, + 0,0,4,0,0,0,30,0,0,0,62,0,0,0,126,0, + 0,0,127,0,0,0,111,0,0,0,239,128,0,0,239,128, + 0,0,199,128,0,1,199,192,0,1,199,192,0,1,131,192, + 0,3,131,224,0,3,131,224,0,3,255,224,0,7,255,240, + 0,7,0,240,0,6,0,248,0,14,0,248,0,14,0,120, + 0,12,0,124,0,28,0,124,0,28,0,124,0,255,129,255, + 0,255,129,255,128,25,34,136,25,0,0,0,30,0,0,0, + 127,0,0,0,119,0,0,0,103,0,0,0,231,0,0,0, + 119,0,0,0,126,0,0,0,56,0,0,0,0,0,0,0, + 4,0,0,0,30,0,0,0,62,0,0,0,126,0,0,0, + 127,0,0,0,111,0,0,0,239,128,0,0,239,128,0,0, + 199,128,0,1,199,192,0,1,199,192,0,1,131,192,0,3, + 131,224,0,3,131,224,0,3,255,224,0,7,255,240,0,7, + 0,240,0,6,0,248,0,14,0,248,0,14,0,120,0,12, + 0,124,0,28,0,124,0,28,0,124,0,255,129,255,0,255, + 129,255,128,32,25,100,32,0,0,0,255,255,252,0,255,255, + 252,0,31,240,28,0,61,240,12,0,61,240,12,0,57,240, + 12,0,121,240,12,0,113,240,0,0,241,240,0,0,225,240, + 0,0,225,240,0,1,255,255,240,1,255,255,240,3,193,240, + 32,3,129,240,0,3,129,240,0,7,129,240,0,7,1,240, + 0,15,1,240,0,14,1,240,3,14,1,240,3,30,1,240, + 6,28,1,240,14,255,7,255,254,255,15,255,254,20,34,102, + 22,1,247,0,127,128,3,255,240,7,135,224,15,1,224,30, + 0,192,60,0,64,60,0,0,124,0,0,120,0,0,120,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,252,0,0,124,0,0,126,0,0,127, + 0,96,63,129,224,31,255,192,15,255,0,7,254,0,1,240, + 0,0,224,0,0,248,0,0,252,0,1,252,0,0,124,0, + 0,120,0,1,240,0,1,192,0,19,34,102,21,1,0,6, + 0,0,31,0,0,31,128,0,31,192,0,7,224,0,1,240, + 0,0,120,0,0,16,0,0,0,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,19,34,102,21,1,0,0,12,0,0,31, + 0,0,63,0,0,126,0,0,248,0,1,224,0,3,128,0, + 2,0,0,0,0,0,255,255,192,255,255,192,62,1,192,30, + 1,192,30,1,128,30,1,128,30,0,128,30,0,0,30,0, + 0,30,0,0,30,0,0,31,255,0,31,254,0,30,6,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,96,30,0,96,30,0,224,63,1,224,255,255,224,255,255, + 192,19,34,102,21,1,0,0,224,0,1,240,0,3,248,0, + 7,252,0,15,252,0,15,30,0,28,7,0,16,2,0,0, + 0,0,255,255,192,255,255,192,62,1,192,30,1,192,30,1, + 128,30,1,128,30,0,128,30,0,0,30,0,0,30,0,0, + 30,0,0,31,255,0,31,254,0,30,6,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,96,30,0, + 96,30,0,224,63,1,224,255,255,224,255,255,192,19,32,96, + 21,1,0,14,7,0,30,15,0,31,15,128,30,15,0,30, + 15,0,12,6,0,0,0,0,255,255,192,255,255,192,62,1, + 192,30,1,192,30,1,128,30,1,128,30,0,128,30,0,0, + 30,0,0,30,0,0,30,0,0,31,255,0,31,254,0,30, + 6,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,96,30,0,96,30,0,224,63,1,224,255,255,224, + 255,255,192,12,34,68,13,0,0,48,0,248,0,252,0,254, + 0,63,0,15,128,3,192,0,128,0,0,127,240,63,240,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,63,224,127,240,12,34,68, + 13,1,0,0,192,1,224,3,240,7,224,31,128,62,0,120, + 0,32,0,0,0,255,224,127,224,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,127,192,255,224,13,34,68,13,0,0,7,0,15, + 128,31,192,63,224,127,224,248,240,224,56,128,16,0,0,127, + 240,63,240,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,63,224,127, + 240,14,32,64,13,255,0,56,28,120,60,248,124,248,124,120, + 60,112,56,0,0,63,248,31,248,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,31,240,63,248,22,25,75,25,1,0,15,252,0, + 255,255,128,255,15,192,31,3,224,31,1,240,31,1,248,31, + 0,248,31,0,248,31,0,124,31,0,124,31,0,124,255,248, + 124,255,248,124,31,0,124,31,0,124,31,0,124,31,0,120, + 31,0,248,31,0,248,31,1,240,31,1,240,31,3,224,31, + 7,192,127,255,128,255,252,0,25,33,132,27,1,0,0,240, + 48,0,1,254,224,0,3,255,224,0,3,255,192,0,6,31, + 128,0,6,3,0,0,4,0,0,0,0,0,0,0,254,0, + 255,128,255,0,127,0,31,0,28,0,31,128,28,0,31,192, + 28,0,31,192,28,0,31,224,28,0,29,240,28,0,29,248, + 28,0,28,248,28,0,28,124,28,0,28,126,28,0,28,62, + 28,0,28,31,28,0,28,15,156,0,28,15,156,0,28,7, + 220,0,28,3,252,0,28,3,252,0,28,1,252,0,28,0, + 252,0,28,0,252,0,28,0,124,0,127,0,60,0,255,128, + 12,0,23,34,102,25,1,0,1,128,0,7,192,0,7,224, + 0,7,240,0,1,248,0,0,124,0,0,30,0,0,4,0, + 0,0,0,0,126,0,3,255,192,7,135,224,14,1,240,30, + 0,248,60,0,248,60,0,124,124,0,124,120,0,126,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,252,0,60,124,0,124,124,0,120,62,0,120,62, + 0,240,31,1,224,15,195,192,7,255,0,0,252,0,23,34, + 102,25,1,0,0,3,0,0,7,192,0,15,192,0,31,128, + 0,62,0,0,120,0,0,224,0,0,128,0,0,0,0,0, + 126,0,3,255,192,7,135,224,14,1,240,30,0,248,60,0, + 248,60,0,124,124,0,124,120,0,126,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,252, + 0,60,124,0,124,124,0,120,62,0,120,62,0,240,31,1, + 224,15,195,192,7,255,0,0,252,0,23,34,102,25,1,0, + 0,56,0,0,124,0,0,254,0,1,255,0,3,255,0,3, + 199,128,7,1,192,4,0,128,0,0,0,0,126,0,3,255, + 192,7,135,224,14,1,240,30,0,248,60,0,248,60,0,124, + 124,0,124,120,0,126,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,252,0,60,124,0, + 124,124,0,120,62,0,120,62,0,240,31,1,224,15,195,192, + 7,255,0,0,252,0,23,33,99,25,1,0,1,240,96,3, + 252,224,7,255,192,7,255,128,14,63,128,12,6,0,8,0, + 0,0,0,0,0,126,0,3,255,192,7,135,224,14,1,240, + 30,0,248,60,0,248,60,0,124,124,0,124,120,0,126,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,252,0,60,124,0,124,124,0,120,62,0,120, + 62,0,240,31,1,224,15,195,192,7,255,0,0,252,0,23, + 32,96,25,1,0,3,129,192,7,131,192,7,195,224,7,131, + 192,7,131,192,3,1,128,0,0,0,0,126,0,3,255,192, + 7,135,224,14,1,240,30,0,248,60,0,248,60,0,124,124, + 0,124,120,0,126,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,252,0,60,124,0,124, + 124,0,120,62,0,120,62,0,240,31,1,224,15,195,192,7, + 255,0,0,252,0,13,12,24,17,2,5,96,48,240,120,120, + 240,61,224,31,192,15,128,15,128,31,192,57,224,120,240,240, + 120,96,48,23,26,78,25,1,255,0,126,30,3,255,252,7, + 135,248,14,3,240,30,1,248,60,1,252,60,3,252,124,7, + 252,120,15,254,248,15,126,248,30,62,248,62,62,248,60,62, + 248,120,62,248,240,62,248,240,62,253,224,60,127,192,124,127, + 128,120,127,128,120,63,0,240,31,129,224,63,195,192,127,255, + 0,240,252,0,192,0,0,25,34,136,27,1,0,0,192,0, + 0,3,224,0,0,3,240,0,0,3,248,0,0,0,252,0, + 0,0,30,0,0,0,7,0,0,0,2,0,0,0,0,0, + 0,255,224,255,128,127,224,255,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,24,0,15,128,56, + 0,15,128,56,0,7,192,112,0,3,224,224,0,1,255,192, + 0,0,127,0,0,25,34,136,27,1,0,0,1,128,0,0, + 3,224,0,0,7,224,0,0,15,192,0,0,31,0,0,0, + 60,0,0,0,112,0,0,0,64,0,0,0,0,0,0,255, + 224,255,128,127,224,255,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,24,0,15,128,56,0,15, + 128,56,0,7,192,112,0,3,224,224,0,1,255,192,0,0, + 127,0,0,25,34,136,27,1,0,0,28,0,0,0,62,0, + 0,0,127,0,0,0,255,128,0,1,255,192,0,1,227,192, + 0,3,128,224,0,2,0,64,0,0,0,0,0,255,224,255, + 128,127,224,255,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,24,0,15,128,56,0,15,128,56, + 0,7,192,112,0,3,224,224,0,1,255,192,0,0,127,0, + 0,25,32,128,27,1,0,1,192,224,0,3,225,240,0,3, + 225,240,0,3,193,224,0,3,193,224,0,1,128,192,0,0, + 0,0,0,255,224,255,128,127,224,255,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,24,0,15, + 128,56,0,15,128,56,0,7,192,112,0,3,224,224,0,1, + 255,192,0,0,127,0,0,24,34,102,25,0,0,0,1,128, + 0,3,192,0,7,224,0,31,192,0,63,0,0,124,0,0, + 240,0,0,64,0,0,0,0,126,0,255,255,0,255,31,0, + 56,15,128,56,15,192,112,7,192,112,3,224,224,3,224,224, + 1,241,192,1,241,192,0,251,128,0,251,128,0,127,0,0, + 127,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,1,255,192, + 1,255,192,21,25,75,23,1,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,254,0,31,255,192,31,7, + 224,31,3,240,31,1,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,1,240,31,1,240,31,135,224,31, + 127,128,31,62,0,31,0,0,31,0,0,31,0,0,127,224, + 0,255,224,0,23,30,90,25,0,0,0,31,128,0,255,224, + 1,195,240,3,128,248,7,128,248,15,0,124,15,0,124,15, + 0,124,31,0,124,31,0,248,31,1,248,31,7,240,31,15, + 128,31,31,0,31,30,0,31,30,0,31,31,0,31,31,128, + 31,15,224,31,7,248,31,3,252,31,0,252,31,0,126,31, + 48,62,31,48,30,31,48,30,31,56,28,31,60,60,127,63, + 248,255,15,224,19,30,90,20,1,0,7,0,0,31,128,0, + 15,128,0,15,192,0,7,192,0,3,224,0,1,224,0,0, + 224,0,0,112,0,0,48,0,0,0,0,0,0,0,1,248, + 0,15,254,0,62,63,0,124,31,0,124,31,0,112,31,0, + 0,31,0,1,255,0,15,255,0,63,31,0,124,31,0,120, + 31,0,248,31,0,248,31,32,248,127,224,255,223,192,127,159, + 128,62,14,0,19,30,90,20,1,0,0,56,0,0,62,0, + 0,126,0,0,124,0,0,248,0,0,240,0,1,224,0,1, + 192,0,3,128,0,1,0,0,0,0,0,0,0,0,1,248, + 0,15,254,0,62,63,0,124,31,0,124,31,0,112,31,0, + 0,31,0,1,255,0,15,255,0,63,31,0,124,31,0,120, + 31,0,248,31,0,248,31,32,248,127,224,255,223,192,127,159, + 128,62,14,0,19,29,87,20,1,0,1,224,0,1,224,0, + 3,240,0,7,248,0,7,252,0,15,60,0,30,30,0,56, + 7,0,16,2,0,0,0,0,0,0,0,1,248,0,15,254, + 0,62,63,0,124,31,0,124,31,0,112,31,0,0,31,0, + 1,255,0,15,255,0,63,31,0,124,31,0,120,31,0,248, + 31,0,248,31,32,248,127,224,255,223,192,127,159,128,62,14, + 0,19,27,81,20,1,0,7,129,128,15,227,0,31,255,0, + 63,254,0,49,252,0,96,56,0,0,0,0,0,0,0,0, + 0,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,19,27,81,20,1,0,12,6, + 0,30,15,0,62,31,0,62,31,0,62,31,0,28,14,0, + 0,0,0,0,0,0,0,0,0,1,248,0,15,254,0,62, + 63,0,124,31,0,124,31,0,112,31,0,0,31,0,1,255, + 0,15,255,0,63,31,0,124,31,0,120,31,0,248,31,0, + 248,31,32,248,127,224,255,223,192,127,159,128,62,14,0,19, + 28,84,20,1,0,0,240,0,3,248,0,3,184,0,7,56, + 0,7,56,0,7,56,0,3,240,0,1,224,0,0,0,0, + 0,0,0,1,248,0,15,254,0,62,63,0,124,31,0,124, + 31,0,112,31,0,0,31,0,1,255,0,15,255,0,63,31, + 0,124,31,0,120,31,0,248,31,0,248,31,32,248,127,224, + 255,223,192,127,159,128,62,14,0,27,18,72,29,1,0,0, + 252,62,0,7,254,255,128,15,191,199,128,30,15,131,192,62, + 15,129,192,124,15,1,224,0,15,1,224,0,255,255,224,15, + 255,255,192,31,15,0,0,124,15,0,0,120,15,0,0,248, + 15,128,0,248,31,128,96,252,127,225,224,255,227,255,192,127, + 193,255,0,63,0,124,0,17,27,81,18,1,247,1,252,0, + 7,255,0,31,31,0,60,15,0,60,7,0,120,6,0,120, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,252,0,0,126,1,0,127,7,128,63,254,0,31,252,0, + 7,240,0,1,192,0,1,192,0,1,240,0,3,248,0,0, + 248,0,0,248,0,1,240,0,3,224,0,7,0,0,17,30, + 90,19,1,0,3,128,0,15,128,0,31,192,0,7,192,0, + 3,192,0,1,224,0,0,224,0,0,112,0,0,48,0,0, + 56,0,0,0,0,0,0,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,30, + 90,19,1,0,0,60,0,0,63,0,0,62,0,0,124,0, + 0,120,0,0,240,0,0,240,0,1,224,0,1,192,0,1, + 128,0,0,0,0,0,0,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,19,1,0,0,224,0,1,240,0,3,248,0,3,248,0, + 7,252,0,15,30,0,14,14,0,28,7,0,24,3,0,0, + 0,0,0,0,0,1,240,0,15,252,0,30,62,0,60,31, + 0,120,15,0,120,15,128,248,15,128,255,255,128,255,254,0, + 248,0,0,248,0,0,248,0,0,252,0,0,126,1,128,127, + 7,0,63,254,0,31,252,0,7,240,0,17,27,81,19,1, + 0,14,7,0,30,15,0,31,15,128,30,15,0,30,15,0, + 28,14,0,0,0,0,0,0,0,0,0,0,1,240,0,15, + 252,0,30,62,0,60,31,0,120,15,0,120,15,128,248,15, + 128,255,255,128,255,254,0,248,0,0,248,0,0,248,0,0, + 252,0,0,126,1,128,127,7,0,63,254,0,31,252,0,7, + 240,0,11,30,60,12,0,0,56,0,252,0,124,0,62,0, + 62,0,31,0,15,0,7,128,3,128,1,128,0,0,0,0, + 7,0,127,0,127,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 127,192,127,224,11,30,60,12,1,0,3,128,3,224,7,224, + 7,192,15,128,15,0,30,0,28,0,24,0,48,0,0,0, + 0,0,14,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,128,255,192,14,29,58,12,255,0,7,128,7,192, + 15,192,31,224,31,240,60,240,120,120,112,28,192,8,0,0, + 0,0,3,128,63,128,63,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,63,224,63,240,14,27,54,12,255,0,48,24,120,60, + 248,124,248,124,248,124,112,56,0,0,0,0,0,0,3,128, + 63,128,63,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,63,224, + 63,240,18,29,87,20,1,0,3,0,0,31,192,0,63,231, + 192,3,255,0,0,252,0,3,252,0,15,252,0,30,30,0, + 0,31,0,0,15,0,0,15,128,3,231,128,15,255,128,30, + 63,192,60,31,192,124,15,192,120,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,128,248,7,128,124,15,128, + 124,15,0,126,14,0,63,28,0,15,248,0,3,224,0,22, + 27,81,23,1,0,1,192,64,3,248,224,7,255,192,15,255, + 128,12,127,0,24,30,0,0,0,0,0,0,0,0,0,0, + 14,15,128,254,63,192,254,255,224,63,255,224,63,199,224,63, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 255,143,248,255,223,252,19,30,90,21,1,0,3,128,0,15, + 192,0,15,192,0,7,192,0,3,224,0,1,224,0,0,240, + 0,0,112,0,0,56,0,0,16,0,0,0,0,0,0,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,19,30,90,21,1,0,0,28,0,0, + 63,0,0,63,0,0,62,0,0,124,0,0,120,0,0,240, + 0,0,224,0,1,192,0,0,128,0,0,0,0,0,0,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,19,29,87,21,1,0,0,240,0,0, + 240,0,1,248,0,3,252,0,7,252,0,7,158,0,15,15, + 0,28,3,0,8,1,128,0,0,0,0,0,0,1,248,0, + 7,254,0,30,31,128,60,15,128,124,7,192,120,7,192,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 192,124,3,192,124,7,128,62,7,128,63,15,0,15,252,0, + 3,240,0,19,27,81,21,1,0,3,128,128,7,241,192,15, + 255,128,31,255,0,24,254,0,48,60,0,0,0,0,0,0, + 0,0,0,0,1,248,0,7,254,0,30,31,128,60,15,128, + 124,7,192,120,7,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,192,124,3,192,124,7,128,62,7, + 128,63,15,0,15,252,0,3,240,0,19,27,81,21,1,0, + 14,7,0,15,7,128,31,15,128,31,15,128,30,15,0,14, + 7,0,0,0,0,0,0,0,0,0,0,1,248,0,7,254, + 0,30,31,128,60,15,128,124,7,192,120,7,192,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,192,124, + 3,192,124,7,128,62,7,128,63,15,0,15,252,0,3,240, + 0,15,15,30,17,1,3,3,0,7,0,7,0,7,0,6, + 0,0,0,127,254,255,252,0,0,0,0,3,0,7,0,7, + 0,7,0,6,0,19,20,60,21,1,255,0,0,32,1,248, + 224,7,255,192,30,31,128,60,15,192,60,31,192,120,31,224, + 120,59,224,248,115,224,248,227,224,249,227,224,249,195,224,251, + 131,192,127,3,192,126,7,128,62,7,128,63,15,0,63,252, + 0,99,240,0,192,0,0,22,30,90,23,1,0,3,128,0, + 7,192,0,15,192,0,3,224,0,1,224,0,0,240,0,0, + 240,0,0,120,0,0,56,0,0,24,0,0,0,0,0,0, + 0,14,0,224,254,31,224,126,7,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,7,224,63,31,252,31,251, + 252,31,243,240,15,193,192,22,30,90,23,1,0,0,30,0, + 0,31,0,0,63,128,0,62,0,0,124,0,0,120,0,0, + 112,0,0,224,0,0,224,0,1,192,0,0,0,0,0,0, + 0,14,0,224,254,31,224,126,7,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,7,224,63,31,252,31,251, + 252,31,243,240,15,193,192,22,29,87,23,1,0,0,112,0, + 0,248,0,1,248,0,3,252,0,3,254,0,7,158,0,15, + 7,0,14,3,128,8,1,0,0,0,0,0,0,0,14,0, + 224,254,31,224,126,7,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,7,224,63,31,252,31,251,252,31,243, + 240,15,193,192,22,27,81,23,1,0,7,3,128,15,7,128, + 31,15,128,31,15,128,31,15,128,14,7,0,0,0,0,0, + 0,0,0,0,0,14,0,224,254,31,224,126,7,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,7,224,63, + 31,252,31,251,252,31,243,240,15,193,192,21,39,117,20,255, + 247,0,7,0,0,15,192,0,15,128,0,31,0,0,31,0, + 0,62,0,0,60,0,0,120,0,0,112,0,0,96,0,0, + 0,0,0,0,0,127,193,248,63,129,248,31,0,224,15,128, + 224,15,129,192,7,193,192,7,193,128,7,195,128,3,227,128, + 3,231,0,1,247,0,1,246,0,0,254,0,0,254,0,0, + 252,0,0,124,0,0,120,0,0,56,0,0,56,0,0,112, + 0,0,112,0,0,224,0,33,224,0,127,192,0,127,128,0, + 255,0,0,124,0,0,20,39,117,22,1,247,6,0,0,254, + 0,0,254,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,31,0,62,127,128,62,255,192,63,135,224,63,3,224,62, + 1,240,62,0,240,62,0,240,62,0,240,62,0,240,62,0, + 240,62,0,224,62,0,224,62,1,192,63,195,192,63,255,128, + 62,255,0,62,60,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,255,192,0,255,192, + 0,21,36,108,20,255,247,3,129,192,7,195,224,7,195,224, + 7,195,224,7,131,192,7,3,128,0,0,0,0,0,0,0, + 0,0,127,193,248,63,129,248,31,0,224,15,128,224,15,129, + 192,7,193,192,7,193,128,7,195,128,3,227,128,3,231,0, + 1,247,0,1,246,0,0,254,0,0,254,0,0,252,0,0, + 124,0,0,120,0,0,56,0,0,56,0,0,112,0,0,112, + 0,0,224,0,33,224,0,127,192,0,127,128,0,255,0,0, + 124,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=18 h=38 x= 3 y=14 dx=21 dy= 0 ascent=31 len=114 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25n[960] U8G_SECTION(".progmem.u8g_font_gdb25n") = { + 0,61,57,236,242,24,0,0,0,0,42,57,0,31,249,24, + 0,16,16,32,18,1,14,0,192,3,192,3,192,99,140,123, + 158,125,191,127,252,15,224,7,224,63,252,253,190,249,158,51, + 142,3,192,3,192,3,0,15,14,28,17,1,4,1,128,3, + 128,3,128,3,128,3,128,3,128,127,254,255,252,3,128,3, + 128,3,128,3,128,3,128,3,0,8,12,12,11,2,249,30, + 127,255,127,31,31,30,30,60,56,112,96,12,2,4,14,1, + 9,127,240,255,240,6,6,6,11,3,255,56,124,252,252,252, + 120,17,38,114,19,1,249,0,1,128,0,7,128,0,7,128, + 0,15,0,0,15,0,0,15,0,0,30,0,0,30,0,0, + 28,0,0,60,0,0,60,0,0,120,0,0,120,0,0,120, + 0,0,240,0,0,240,0,0,224,0,1,224,0,1,224,0, + 3,192,0,3,192,0,3,192,0,7,128,0,7,128,0,7, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,120,0,0, + 240,0,0,240,0,0,192,0,0,18,24,72,20,1,0,3, + 240,0,7,252,0,30,62,0,28,31,0,60,15,0,120,15, + 128,120,15,128,120,7,128,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,120, + 7,128,124,7,128,124,15,128,60,15,0,62,14,0,31,30, + 0,15,248,0,3,224,0,16,24,48,20,2,0,0,96,3, + 224,31,224,255,224,99,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,7,240,127,255,127,255,16,24,48, + 20,2,0,3,248,15,252,60,62,124,63,120,31,248,31,112, + 31,0,31,0,62,0,60,0,124,0,120,0,240,1,224,3, + 224,3,192,7,128,15,1,30,3,60,3,120,3,127,255,255, + 255,255,255,16,24,48,20,2,0,7,240,31,248,60,124,120, + 62,248,62,248,62,64,62,0,60,0,124,0,240,7,240,7, + 252,0,254,0,62,0,63,0,31,0,31,0,31,0,31,0, + 30,192,62,240,124,127,248,15,192,17,24,72,20,1,0,0, + 12,0,0,124,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,188,0,7,188,0,7,60,0,14,60,0,14,60,0, + 28,60,0,56,60,0,56,60,0,112,60,0,255,255,128,255, + 255,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,3,255,128,3,255,128,17,24,72,20,1,0,31,255,0, + 31,255,128,31,254,0,31,252,0,24,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,63,240,0,63,252,0,48,126, + 0,96,31,0,0,31,0,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,0,31,0,96,31,0,248,126,0,63, + 252,0,7,224,0,17,24,72,20,2,0,0,14,0,0,126, + 0,1,240,0,7,192,0,15,128,0,30,0,0,62,0,0, + 60,0,0,124,0,0,121,248,0,127,254,0,254,63,0,252, + 31,0,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,124,15,128,124,15,0,60,31,0,31,30,0,15,252,0, + 3,240,0,17,24,72,20,2,0,127,255,128,127,255,0,255, + 255,0,255,255,0,224,6,0,192,14,0,128,12,0,0,28, + 0,0,28,0,0,56,0,0,56,0,0,112,0,0,112,0, + 0,240,0,0,224,0,1,224,0,1,192,0,3,192,0,3, + 192,0,7,128,0,7,128,0,15,128,0,31,0,0,28,0, + 0,17,24,72,21,2,0,3,240,0,15,252,0,28,62,0, + 24,31,0,56,31,0,56,31,0,56,31,0,60,62,0,63, + 60,0,31,248,0,15,240,0,7,252,0,14,254,0,62,63, + 0,124,31,128,120,31,128,248,15,128,248,15,128,248,15,128, + 248,15,0,124,31,0,126,62,0,63,252,0,7,224,0,17, + 25,75,20,2,255,3,240,0,15,252,0,30,62,0,60,30, + 0,120,31,0,120,31,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,128,126,63,128,63,255,128,15, + 207,0,0,15,0,0,31,0,0,30,0,0,62,0,0,124, + 0,0,248,0,1,240,0,15,192,0,63,0,0,56,0,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=34 h=41 x= 3 y=20 dx=35 dy= 0 ascent=33 len=136 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x=-6 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =33 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25r[6779] U8G_SECTION(".progmem.u8g_font_gdb25r") = { + 0,61,57,236,242,25,7,167,18,92,32,127,247,33,247,31, + 247,0,0,0,10,0,0,6,30,30,12,3,255,12,60,252, + 252,252,124,120,120,120,120,120,120,120,120,120,120,120,120,56, + 48,48,32,0,0,56,124,252,252,252,120,13,13,26,19,3, + 16,24,56,248,248,248,248,248,248,248,248,248,248,248,240,112, + 240,112,112,112,112,112,112,112,112,112,112,19,23,69,20,1, + 2,0,97,192,0,227,128,0,227,128,0,195,128,1,195,0, + 1,199,0,31,255,224,31,255,224,35,142,0,3,142,0,3, + 14,0,7,12,0,7,28,0,7,28,0,127,255,128,255,255, + 128,14,56,0,12,56,0,28,48,0,28,112,0,24,112,0, + 24,112,0,32,224,0,17,30,90,21,2,253,0,192,0,1, + 192,0,1,192,0,3,240,0,31,254,0,63,255,128,113,223, + 0,225,207,0,225,199,0,225,194,0,241,192,0,255,192,0, + 127,192,0,63,248,0,15,252,0,3,254,0,1,255,0,1, + 223,128,1,207,128,193,199,128,193,199,128,225,199,128,241,207, + 0,253,207,0,255,254,0,63,252,0,7,224,0,1,192,0, + 1,192,0,1,128,0,26,25,100,28,1,0,0,0,3,0, + 15,128,15,0,63,192,14,0,113,224,28,0,112,224,56,0, + 224,112,120,0,224,112,112,0,224,112,224,0,224,113,192,0, + 224,115,192,0,96,103,128,0,112,103,0,0,48,206,62,0, + 31,28,99,0,0,60,195,128,0,56,193,128,0,113,193,192, + 0,225,193,192,1,225,193,192,1,193,193,192,3,129,193,192, + 7,0,225,128,15,0,227,128,14,0,127,0,28,0,62,0, + 27,28,112,28,1,0,0,126,0,0,1,255,128,0,3,143, + 128,0,7,7,192,0,7,7,192,0,15,7,192,0,15,7, + 192,0,15,15,128,0,15,159,0,0,15,191,0,0,7,254, + 0,0,7,248,0,0,7,240,0,0,15,240,255,224,31,241, + 255,192,63,248,61,128,125,252,60,0,124,254,28,0,248,254, + 28,0,248,127,28,0,248,63,184,0,248,31,248,0,248,15, + 240,0,252,7,248,0,124,3,252,0,63,7,255,192,31,254, + 127,128,7,240,28,0,5,13,13,11,3,16,24,248,248,248, + 248,248,248,112,112,112,112,112,112,11,37,74,13,2,250,0, + 64,1,224,3,192,7,128,15,0,15,0,30,0,30,0,60, + 0,60,0,124,0,124,0,120,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,120, + 0,124,0,124,0,124,0,60,0,62,0,30,0,31,0,15, + 0,7,128,3,192,1,224,0,64,11,37,74,13,0,250,64, + 0,240,0,120,0,60,0,30,0,31,0,15,0,15,128,7, + 128,7,192,7,192,7,192,7,192,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,192,7, + 192,7,192,7,192,7,128,15,128,15,0,15,0,30,0,30, + 0,60,0,120,0,240,0,64,0,16,16,32,18,1,14,0, + 192,3,192,3,192,99,140,123,158,125,191,127,252,15,224,7, + 224,63,252,253,190,249,158,51,142,3,192,3,192,3,0,15, + 14,28,17,1,4,1,128,3,128,3,128,3,128,3,128,3, + 128,127,254,255,252,3,128,3,128,3,128,3,128,3,128,3, + 0,8,12,12,11,2,249,30,127,255,127,31,31,30,30,60, + 56,112,96,12,2,4,14,1,9,127,240,255,240,6,6,6, + 11,3,255,56,124,252,252,252,120,17,38,114,19,1,249,0, + 1,128,0,7,128,0,7,128,0,15,0,0,15,0,0,15, + 0,0,30,0,0,30,0,0,28,0,0,60,0,0,60,0, + 0,120,0,0,120,0,0,120,0,0,240,0,0,240,0,0, + 224,0,1,224,0,1,224,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,7,0,0,15,0,0,15,0,0, + 30,0,0,30,0,0,30,0,0,60,0,0,60,0,0,56, + 0,0,120,0,0,120,0,0,240,0,0,240,0,0,192,0, + 0,18,24,72,20,1,0,3,240,0,7,252,0,30,62,0, + 28,31,0,60,15,0,120,15,128,120,15,128,120,7,128,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,120,7,128,124,7,128,124,15,128, + 60,15,0,62,14,0,31,30,0,15,248,0,3,224,0,16, + 24,48,20,2,0,0,96,3,224,31,224,255,224,99,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,7, + 240,127,255,127,255,16,24,48,20,2,0,3,248,15,252,60, + 62,124,63,120,31,248,31,112,31,0,31,0,62,0,60,0, + 124,0,120,0,240,1,224,3,224,3,192,7,128,15,1,30, + 3,60,3,120,3,127,255,255,255,255,255,16,24,48,20,2, + 0,7,240,31,248,60,124,120,62,248,62,248,62,64,62,0, + 60,0,124,0,240,7,240,7,252,0,254,0,62,0,63,0, + 31,0,31,0,31,0,31,0,30,192,62,240,124,127,248,15, + 192,17,24,72,20,1,0,0,12,0,0,124,0,0,124,0, + 0,252,0,1,252,0,1,252,0,3,188,0,7,188,0,7, + 60,0,14,60,0,14,60,0,28,60,0,56,60,0,56,60, + 0,112,60,0,255,255,128,255,255,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,3,255,128,3,255,128,17, + 24,72,20,1,0,31,255,0,31,255,128,31,254,0,31,252, + 0,24,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 63,240,0,63,252,0,48,126,0,96,31,0,0,31,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,31, + 0,96,31,0,248,126,0,63,252,0,7,224,0,17,24,72, + 20,2,0,0,14,0,0,126,0,1,240,0,7,192,0,15, + 128,0,30,0,0,62,0,0,60,0,0,124,0,0,121,248, + 0,127,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,15,128,124,15,0,60, + 31,0,31,30,0,15,252,0,3,240,0,17,24,72,20,2, + 0,127,255,128,127,255,0,255,255,0,255,255,0,224,6,0, + 192,14,0,128,12,0,0,28,0,0,28,0,0,56,0,0, + 56,0,0,112,0,0,112,0,0,240,0,0,224,0,1,224, + 0,1,192,0,3,192,0,3,192,0,7,128,0,7,128,0, + 15,128,0,31,0,0,28,0,0,17,24,72,21,2,0,3, + 240,0,15,252,0,28,62,0,24,31,0,56,31,0,56,31, + 0,56,31,0,60,62,0,63,60,0,31,248,0,15,240,0, + 7,252,0,14,254,0,62,63,0,124,31,128,120,31,128,248, + 15,128,248,15,128,248,15,128,248,15,0,124,31,0,126,62, + 0,63,252,0,7,224,0,17,25,75,20,2,255,3,240,0, + 15,252,0,30,62,0,60,30,0,120,31,0,120,31,0,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 128,126,63,128,63,255,128,15,207,0,0,15,0,0,31,0, + 0,30,0,0,62,0,0,124,0,0,248,0,1,240,0,15, + 192,0,63,0,0,56,0,0,6,19,19,11,3,255,56,124, + 252,252,252,120,0,0,0,0,0,0,0,56,124,252,252,252, + 120,8,26,26,11,2,249,8,62,126,126,126,124,0,0,0, + 0,0,0,0,0,30,127,255,127,31,31,30,30,60,56,112, + 96,16,13,26,18,1,5,0,3,0,31,0,255,3,252,31, + 224,127,128,252,0,254,0,127,192,15,248,1,255,0,63,0, + 6,16,8,16,18,1,7,127,255,255,255,0,0,0,0,0, + 0,0,0,127,255,255,255,16,13,26,18,1,5,112,0,252, + 0,255,128,31,240,3,254,0,127,0,63,0,255,7,248,63, + 224,127,0,248,0,192,0,15,30,60,18,1,255,7,240,31, + 248,60,124,120,126,248,62,248,62,248,62,224,62,0,62,0, + 124,0,124,0,248,0,240,1,240,1,224,1,192,3,192,3, + 128,3,128,3,128,3,128,0,0,0,0,0,0,3,128,7, + 192,15,192,15,192,15,192,7,128,31,34,136,35,2,248,0, + 7,248,0,0,63,255,0,0,255,255,192,1,248,15,224,3, + 192,1,240,7,128,0,248,15,0,0,120,30,0,0,60,60, + 3,195,60,56,15,238,28,120,30,126,30,120,60,62,14,112, + 120,62,14,240,120,62,14,240,248,62,14,240,248,62,14,240, + 248,62,14,240,248,62,14,240,248,62,12,240,248,62,28,240, + 252,62,28,248,124,126,56,120,127,255,240,120,127,191,224,124, + 63,159,192,60,30,15,0,62,0,0,0,31,0,0,0,31, + 128,0,48,15,224,0,240,7,248,7,224,1,255,255,192,0, + 127,255,0,0,15,248,0,25,25,100,25,0,0,0,4,0, + 0,0,30,0,0,0,62,0,0,0,126,0,0,0,127,0, + 0,0,111,0,0,0,239,128,0,0,239,128,0,0,199,128, + 0,1,199,192,0,1,199,192,0,1,131,192,0,3,131,224, + 0,3,131,224,0,3,255,224,0,7,255,240,0,7,0,240, + 0,6,0,248,0,14,0,248,0,14,0,120,0,12,0,124, + 0,28,0,124,0,28,0,124,0,255,129,255,0,255,129,255, + 128,22,25,75,24,0,0,15,254,0,255,255,128,223,15,224, + 31,3,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,224,31,15,128,31,255,0,31,255,224,31,3, + 240,31,1,248,31,0,248,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,248,31,3,240,127,255,224,255, + 255,0,20,25,75,22,1,0,0,127,128,3,255,240,7,135, + 224,15,1,224,30,0,192,60,0,64,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,252,0,0,124,0,0,124,0, + 0,126,0,32,63,0,112,31,193,224,15,255,192,7,255,0, + 1,252,0,22,25,75,25,1,0,15,252,0,255,255,128,255, + 15,192,31,3,224,31,1,240,31,1,248,31,0,248,31,0, + 248,31,0,124,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,120,31,0,248,31, + 0,248,31,1,240,31,1,240,31,3,224,31,7,192,127,255, + 128,255,252,0,19,25,75,21,1,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,18,25,75,20,1,0,255,255,192,255,255, + 192,62,1,192,30,1,192,30,1,192,30,0,192,30,0,128, + 30,0,0,30,0,0,30,0,0,30,0,0,31,254,0,31, + 254,0,30,4,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,62,0,0, + 255,192,0,255,224,0,22,25,75,24,1,0,0,127,128,1, + 255,240,7,131,240,15,1,224,30,0,224,60,0,64,60,0, + 0,124,0,0,120,0,0,248,0,0,248,0,0,248,0,0, + 248,15,252,248,15,252,248,1,240,248,1,240,252,1,240,124, + 1,240,124,1,240,126,1,240,63,1,240,31,129,240,15,255, + 192,7,255,128,0,252,0,25,25,100,27,1,0,255,227,255, + 128,127,227,255,128,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,255,252,0,31,255,252, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,127,195,255,128,255,227,255, + 128,11,25,50,13,1,0,255,224,127,224,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,127,192,255,224,18,33,99,13,251,248,3, + 255,192,1,255,128,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,60,0,0,60,0, + 0,56,0,16,120,0,56,112,0,127,224,0,255,128,0,62, + 0,0,24,25,75,25,0,0,255,227,254,127,193,254,31,0, + 240,31,1,224,31,3,192,31,7,128,31,15,0,31,14,0, + 31,28,0,31,60,0,31,120,0,31,240,0,31,248,0,31, + 124,0,31,60,0,31,62,0,31,31,0,31,15,128,31,7, + 192,31,3,224,31,3,240,31,1,248,31,0,255,127,224,127, + 255,224,60,20,25,75,20,0,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,48,31,0,96,31,0,96,31,128,224,127,255, + 224,255,255,224,31,25,100,34,1,0,255,0,1,254,127,0, + 1,254,31,128,1,240,31,128,3,240,31,192,3,240,31,192, + 7,240,31,192,7,240,31,224,14,240,29,224,14,240,29,240, + 30,240,28,240,28,240,28,248,28,240,28,248,56,240,28,124, + 56,248,28,124,112,248,28,60,112,248,28,62,224,248,28,30, + 224,248,28,31,224,248,28,31,192,248,28,15,192,248,28,15, + 128,248,28,7,128,248,255,7,7,254,255,3,7,254,25,25, + 100,27,1,0,254,0,255,128,255,0,127,0,31,0,28,0, + 31,128,28,0,31,192,28,0,31,192,28,0,31,224,28,0, + 29,240,28,0,29,248,28,0,28,248,28,0,28,124,28,0, + 28,126,28,0,28,62,28,0,28,31,28,0,28,15,156,0, + 28,15,156,0,28,7,220,0,28,3,252,0,28,3,252,0, + 28,1,252,0,28,0,252,0,28,0,252,0,28,0,124,0, + 127,0,60,0,255,128,12,0,23,25,75,25,1,0,0,126, + 0,3,255,192,7,135,224,14,1,240,30,0,248,60,0,248, + 60,0,124,124,0,124,120,0,126,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,252,0, + 60,124,0,124,124,0,120,62,0,120,62,0,240,31,1,224, + 15,195,192,7,255,0,0,252,0,21,25,75,23,1,0,15, + 254,0,255,255,192,255,7,224,31,3,240,31,1,248,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,1,240, + 31,1,240,31,135,224,31,127,128,31,62,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,127,224,0,255,224,0,27,31,124,25,1,250, + 0,126,0,0,3,255,192,0,7,135,224,0,14,1,240,0, + 30,0,248,0,60,0,248,0,60,0,124,0,124,0,124,0, + 120,0,124,0,248,0,62,0,248,0,62,0,248,0,62,0, + 248,0,62,0,248,0,62,0,248,0,62,0,248,0,62,0, + 252,0,60,0,124,0,124,0,124,0,120,0,62,0,120,0, + 62,0,240,0,31,1,224,0,15,195,192,0,7,255,128,0, + 0,255,0,0,0,7,224,0,0,1,248,96,0,0,255,224, + 0,0,127,192,0,0,31,128,0,0,7,0,23,25,75,24, + 1,0,15,252,0,255,255,128,255,15,192,31,7,192,31,3, + 224,31,3,224,31,3,224,31,3,224,31,3,224,31,7,192, + 31,7,128,31,255,0,31,254,0,31,124,0,31,30,0,31, + 15,0,31,15,0,31,7,128,31,7,192,31,3,224,31,3, + 224,31,1,240,31,1,254,127,192,254,255,224,248,17,25,75, + 21,2,0,3,252,0,31,255,0,60,63,0,112,14,0,240, + 6,0,240,0,0,248,0,0,252,0,0,254,0,0,127,128, + 0,63,224,0,31,248,0,7,254,0,1,255,0,0,127,0, + 0,31,128,0,15,128,0,7,128,192,7,128,192,7,128,224, + 7,0,240,14,0,252,28,0,255,248,0,31,224,0,23,25, + 75,23,0,0,127,255,252,127,255,254,96,124,14,224,124,12, + 192,124,12,192,124,12,192,124,12,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,3,255,128,3,255,128,25, + 25,100,27,1,0,255,224,255,128,127,224,255,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,24, + 0,15,128,56,0,15,128,56,0,7,192,112,0,3,224,224, + 0,1,255,192,0,0,127,0,0,26,25,100,27,0,0,255, + 192,63,192,127,192,63,192,31,0,14,0,31,0,14,0,15, + 128,28,0,15,128,28,0,15,128,28,0,7,192,56,0,7, + 192,56,0,3,224,48,0,3,224,112,0,3,224,112,0,1, + 240,224,0,1,240,224,0,0,240,224,0,0,249,192,0,0, + 249,192,0,0,125,192,0,0,127,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,31,0,0,0,30,0,0,0, + 8,0,0,34,25,125,34,0,0,255,192,224,127,192,127,128, + 224,63,192,30,0,224,14,0,31,1,240,14,0,31,1,240, + 12,0,15,1,248,28,0,15,3,248,28,0,15,131,248,28, + 0,15,131,252,28,0,7,135,60,24,0,7,135,60,56,0, + 7,134,62,56,0,7,206,30,56,0,3,206,31,56,0,3, + 204,15,48,0,3,220,15,112,0,3,252,15,240,0,3,248, + 7,240,0,1,248,7,224,0,1,248,7,224,0,1,240,3, + 224,0,1,240,3,224,0,0,240,1,224,0,0,224,1,192, + 0,0,192,1,128,0,25,25,100,25,0,0,127,225,255,0, + 127,225,255,0,31,128,124,0,15,128,112,0,15,192,240,0, + 7,224,224,0,3,225,192,0,1,243,192,0,1,251,128,0, + 0,255,0,0,0,127,0,0,0,126,0,0,0,62,0,0, + 0,127,0,0,0,127,128,0,0,239,192,0,1,231,192,0, + 1,195,224,0,3,131,240,0,7,129,240,0,7,0,248,0, + 14,0,252,0,30,0,254,0,255,131,255,128,255,131,255,128, + 24,25,75,25,0,0,126,0,255,255,0,255,31,0,56,15, + 128,56,15,192,112,7,192,112,3,224,224,3,224,224,1,241, + 192,1,241,192,0,251,128,0,251,128,0,127,0,0,127,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,1,255,192,1,255, + 192,19,25,75,22,1,0,63,255,224,63,255,224,120,7,192, + 112,15,192,96,15,128,96,31,128,32,63,0,0,62,0,0, + 126,0,0,124,0,0,252,0,1,248,0,1,240,0,3,240, + 0,3,224,0,7,224,0,15,192,0,15,128,0,31,128,32, + 31,0,96,63,0,96,126,0,96,124,0,224,255,255,224,255, + 255,224,11,37,74,14,2,250,255,224,255,224,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,255,224, + 255,224,17,38,114,19,1,249,192,0,0,240,0,0,112,0, + 0,112,0,0,120,0,0,56,0,0,60,0,0,60,0,0, + 28,0,0,30,0,0,30,0,0,14,0,0,15,0,0,7, + 0,0,7,128,0,7,128,0,3,128,0,3,192,0,3,192, + 0,1,192,0,1,224,0,0,224,0,0,224,0,0,240,0, + 0,112,0,0,120,0,0,120,0,0,56,0,0,60,0,0, + 60,0,0,28,0,0,30,0,0,14,0,0,15,0,0,15, + 0,0,7,0,0,7,128,0,1,128,10,37,74,13,1,250, + 255,192,255,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,255,192,255,192,16,19,38,20,2,11, + 0,128,3,128,3,192,3,192,7,224,6,224,14,224,12,112, + 12,112,28,120,24,56,24,56,48,28,48,28,112,28,96,14, + 96,14,224,7,128,6,17,2,6,19,1,251,127,255,128,255, + 255,128,9,10,20,13,0,20,56,0,248,0,252,0,124,0, + 62,0,30,0,15,0,7,0,3,128,1,0,19,18,54,20, + 1,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,20,30,90,21,0,0,6,0, + 0,254,0,0,254,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,31,0,62,127,192,63,255,192,63,199,224,63,1, + 224,62,1,240,62,0,240,62,0,240,62,0,240,62,0,240, + 62,0,240,62,0,224,62,1,224,62,1,192,63,131,128,63, + 255,0,15,252,0,1,240,0,16,18,36,18,1,0,1,252, + 7,255,31,31,60,15,60,7,120,6,120,0,248,0,248,0, + 248,0,248,0,248,0,124,0,126,3,63,7,63,254,15,252, + 3,240,21,30,90,22,1,0,0,1,192,0,63,192,0,63, + 192,0,7,192,0,7,192,0,7,192,0,7,192,0,7,192, + 0,7,192,0,7,192,0,7,192,0,7,192,3,247,192,15, + 255,192,30,31,192,60,15,192,124,7,192,120,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,126,31,192,127,255,248,63,247,248,31,231,224,7, + 131,128,17,18,54,19,1,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,14,0,0,0,63,0,0,255,128,3,143,0,7,134,0, + 7,0,0,15,0,0,15,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,252,0,255,248,0,31,16,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,240,0,255,240,0,21,27,81,22,0, + 247,1,248,24,15,255,248,30,31,240,60,15,128,124,7,192, + 124,7,192,124,7,192,124,7,192,62,7,128,63,15,0,31, + 254,0,3,248,0,7,128,0,15,128,0,31,192,0,31,255, + 0,31,255,224,7,255,240,30,255,248,124,3,248,120,0,248, + 248,0,248,248,0,240,252,1,224,127,3,192,31,255,0,3, + 248,0,22,30,90,23,1,0,6,0,0,254,0,0,254,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,15,128,62, + 63,192,62,127,224,62,255,224,63,199,224,63,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,255,143,248,255, + 223,252,10,27,54,12,1,0,30,0,63,0,63,0,63,0, + 30,0,0,0,0,0,0,0,0,0,14,0,254,0,254,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,15,36, + 72,11,250,247,0,60,0,126,0,126,0,126,0,60,0,0, + 0,0,0,0,0,0,0,28,3,252,3,252,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,120, + 0,120,32,240,120,224,255,192,255,128,60,0,21,30,90,22, + 1,0,6,0,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,15,240,62,7,240,62,7,128,62, + 15,0,62,62,0,62,120,0,62,240,0,63,224,0,63,240, + 0,62,248,0,62,124,0,62,62,0,62,31,0,62,31,128, + 62,15,192,62,7,224,255,131,248,255,129,224,10,30,60,12, + 1,0,6,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,34,18, + 90,34,0,0,6,15,192,248,0,255,63,227,252,0,255,127, + 255,254,0,31,227,252,126,0,31,129,248,62,0,31,1,240, + 62,0,31,1,240,62,0,31,1,240,62,0,31,1,240,62, + 0,31,1,240,62,0,31,1,240,62,0,31,1,240,62,0, + 31,1,240,62,0,31,1,240,62,0,31,1,240,62,0,31, + 1,240,62,0,127,199,252,255,128,255,199,252,255,192,22,18, + 54,23,1,0,14,15,128,254,63,192,254,255,224,63,255,224, + 63,199,224,63,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,255,143,248,255,223,252,19,18,54,21,1,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,20,27,81,22,1,247,14,31,0,254, + 127,128,254,255,192,63,135,224,63,3,224,62,1,240,62,0, + 240,62,0,240,62,0,240,62,0,240,62,0,240,62,0,224, + 62,0,224,62,1,192,63,195,192,63,255,128,62,255,0,62, + 60,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,192,0,255,192,0,21,27,81, + 22,1,247,1,240,64,7,252,224,14,31,192,60,15,192,60, + 7,192,120,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,252,7,192,252,15,192,126,31,192,127,255,192, + 63,247,192,31,231,192,7,135,192,0,7,192,0,7,192,0, + 7,192,0,7,192,0,7,192,0,7,192,0,7,192,0,63, + 240,0,63,248,16,18,36,18,1,0,14,30,254,127,254,255, + 63,255,63,207,31,135,31,6,30,6,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,62,0,255,192,255,224,14,18, + 36,17,2,0,15,192,63,248,120,248,240,112,240,48,248,48, + 254,0,127,128,63,224,15,248,3,248,192,252,192,124,224,60, + 224,60,248,120,255,240,63,192,15,25,50,15,0,0,3,0, + 7,0,15,0,31,0,31,0,31,0,31,0,127,254,255,252, + 31,8,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,140,31,254,31,248,15,224,7,128, + 22,18,54,23,1,0,14,0,224,254,31,224,126,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,7,224, + 63,31,252,31,251,252,31,243,240,15,193,192,20,18,54,20, + 0,0,255,131,240,127,3,240,62,1,192,31,1,192,31,1, + 128,15,3,128,15,131,0,15,135,0,7,199,0,7,206,0, + 3,238,0,3,236,0,1,252,0,1,252,0,0,248,0,0, + 248,0,0,240,0,0,96,0,28,18,72,29,0,0,255,131, + 3,240,127,3,129,240,62,3,128,192,30,7,193,192,31,7, + 193,192,31,15,193,192,15,15,227,128,15,157,227,128,15,157, + 243,128,7,153,243,0,7,248,255,0,7,240,255,0,3,240, + 126,0,3,240,126,0,3,224,62,0,1,224,60,0,1,192, + 28,0,1,128,24,0,21,18,54,21,0,0,255,199,240,255, + 199,240,63,131,192,15,131,128,15,199,0,7,238,0,3,252, + 0,1,248,0,1,248,0,0,252,0,1,254,0,3,190,0, + 7,31,0,6,31,128,12,15,192,28,7,224,127,31,248,255, + 31,248,21,27,81,20,255,247,127,193,248,63,129,248,31,0, + 224,15,128,224,15,129,192,7,193,192,7,193,128,7,195,128, + 3,227,128,3,231,0,1,247,0,1,246,0,0,254,0,0, + 254,0,0,252,0,0,124,0,0,120,0,0,56,0,0,56, + 0,0,112,0,0,112,0,0,224,0,33,224,0,127,192,0, + 127,128,0,255,0,0,124,0,0,16,18,36,19,1,0,63, + 255,63,255,112,62,112,126,96,124,96,248,1,248,1,240,3, + 224,7,224,7,192,15,128,31,129,31,3,62,3,124,3,127, + 255,255,255,11,37,74,14,2,250,0,96,1,224,3,192,7, + 128,15,0,31,0,31,0,31,0,31,0,31,0,31,128,15, + 128,15,128,15,128,15,128,15,0,31,0,62,0,252,0,255, + 0,31,0,15,128,15,128,15,128,15,128,15,128,31,128,31, + 0,31,0,31,0,31,0,31,0,15,0,15,128,7,192,1, + 224,0,96,3,41,41,9,3,248,96,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,192,11,37,74,14,1,250,192,0,240,0,124,0,62,0, + 30,0,31,0,31,0,31,0,31,0,31,0,63,0,62,0, + 62,0,62,0,62,0,62,0,31,0,31,224,7,224,15,128, + 31,0,30,0,62,0,62,0,62,0,62,0,63,0,31,0, + 31,0,31,0,31,0,31,0,30,0,60,0,120,0,240,0, + 192,0,18,6,18,20,1,9,15,0,192,31,192,128,63,225, + 0,99,255,0,192,254,0,128,56,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=41 h=49 x= 5 y=27 dx=42 dy= 0 ascent=42 len=210 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x=-7 y=-13 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =42 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30[19508] U8G_SECTION(".progmem.u8g_font_gdb30") = { + 0,74,69,232,239,30,10,50,24,78,32,255,245,42,243,38, + 245,0,0,0,12,0,0,8,36,36,15,3,255,6,31,127, + 126,126,126,126,126,126,126,62,62,62,62,62,62,62,60,60, + 60,60,60,60,28,28,24,0,0,0,62,127,255,255,255,254, + 124,16,16,32,23,3,19,14,3,126,31,254,63,254,63,124, + 63,124,63,124,63,124,63,124,30,124,30,124,30,60,30,60, + 30,56,30,56,30,56,14,22,27,81,24,2,3,0,56,48, + 0,120,112,0,112,240,0,112,224,0,240,224,0,225,224,0, + 225,192,31,255,252,31,255,252,63,255,252,3,195,128,3,195, + 128,3,135,128,3,135,0,7,135,0,7,135,0,255,255,240, + 255,255,240,255,255,224,14,30,0,14,28,0,30,28,0,28, + 60,0,28,60,0,28,56,0,60,56,0,56,112,0,20,36, + 108,24,2,252,0,48,0,0,112,0,0,112,0,0,112,0, + 3,255,0,15,255,224,63,255,240,124,119,240,120,115,224,240, + 113,224,240,112,192,248,112,0,252,112,0,255,112,0,127,240, + 0,63,248,0,31,254,0,7,255,128,0,255,192,0,127,224, + 0,119,224,0,113,240,0,113,240,224,112,240,224,112,240,240, + 112,240,248,112,224,252,113,224,255,119,192,255,255,192,63,255, + 0,7,252,0,0,112,0,0,112,0,0,112,0,0,96,0, + 31,30,120,34,2,0,0,0,0,16,7,192,0,240,31,224, + 1,224,56,240,3,192,120,120,3,128,112,120,7,128,240,60, + 15,0,240,60,30,0,240,60,28,0,240,60,60,0,240,60, + 120,0,240,60,240,0,112,57,224,0,120,57,224,0,56,115, + 192,0,31,231,131,224,15,143,12,48,0,15,24,56,0,30, + 56,28,0,60,56,28,0,120,120,30,0,120,120,30,0,240, + 120,30,1,224,120,30,3,192,120,30,3,192,120,28,7,128, + 60,60,15,0,30,56,30,0,15,240,28,0,7,192,31,34, + 136,33,2,0,0,31,128,0,0,127,224,0,0,227,240,0, + 1,225,248,0,3,193,248,0,3,193,248,0,7,193,248,0, + 7,193,248,0,7,195,240,0,7,195,240,0,7,231,224,0, + 7,239,192,0,3,255,128,0,3,255,0,0,3,252,0,0, + 1,248,0,0,7,252,63,252,15,252,127,254,31,254,31,184, + 63,127,15,128,62,127,7,128,126,63,135,128,252,31,199,128, + 252,31,231,128,252,15,247,0,252,7,255,0,252,3,254,0, + 252,1,252,0,254,0,255,0,127,0,127,128,127,129,255,248, + 63,255,223,248,15,255,15,244,3,252,7,128,7,16,16,13, + 3,19,14,126,254,254,124,124,124,124,124,124,124,60,60,56, + 56,56,13,45,90,16,3,249,0,16,0,120,0,240,1,224, + 3,224,7,192,7,128,15,128,31,0,31,0,63,0,62,0, + 62,0,126,0,126,0,126,0,124,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,126,0,126,0,126,0,126,0,62,0,63,0,63,0, + 31,0,15,128,15,128,7,192,3,192,1,224,0,240,0,120, + 0,16,13,44,88,16,0,249,64,0,240,0,120,0,60,0, + 30,0,31,0,15,128,15,192,7,192,7,224,7,224,3,224, + 3,240,3,240,3,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 3,240,3,240,3,240,3,224,3,224,7,224,7,192,7,192, + 15,128,15,0,31,0,62,0,60,0,120,0,240,0,64,0, + 19,20,60,21,1,17,0,48,0,1,240,0,1,240,0,32, + 240,0,112,225,128,120,227,192,126,231,224,127,255,224,31,255, + 0,3,248,0,3,248,0,31,255,0,127,255,192,254,231,192, + 124,227,192,48,225,192,0,240,128,0,240,0,1,240,0,0, + 192,0,18,18,54,20,1,4,0,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,127,255,192, + 255,255,192,255,255,128,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,192,0,10,15, + 30,13,1,247,7,0,63,128,255,192,127,192,63,192,15,192, + 15,192,15,128,15,128,15,0,31,0,30,0,60,0,120,0, + 48,0,15,3,6,17,1,11,127,254,127,252,255,252,8,7, + 7,13,3,255,62,127,255,255,255,254,124,21,46,138,23,1, + 248,0,0,56,0,0,248,0,0,240,0,1,240,0,1,240, + 0,1,224,0,3,224,0,3,224,0,3,192,0,7,192,0, + 7,128,0,15,128,0,15,128,0,15,0,0,31,0,0,31, + 0,0,30,0,0,62,0,0,60,0,0,124,0,0,124,0, + 0,120,0,0,248,0,0,248,0,0,240,0,1,240,0,1, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,120, + 0,0,248,0,0,248,0,0,192,0,0,22,29,87,24,1, + 0,0,252,0,3,255,0,7,143,192,15,7,224,30,3,224, + 62,1,240,62,1,240,124,1,248,124,1,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,124,0,248,124,0,248, + 126,0,248,62,1,240,62,1,240,31,1,224,31,3,192,15, + 135,128,3,255,0,0,252,0,19,29,87,24,3,0,0,16, + 0,0,248,0,7,248,0,63,248,0,255,248,0,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,15,255,0,127, + 255,224,127,255,224,20,29,87,24,1,0,0,255,0,7,255, + 192,15,143,224,63,7,224,62,3,240,126,3,240,126,3,240, + 120,3,240,0,3,240,0,7,224,0,7,224,0,15,192,0, + 15,128,0,31,128,0,31,0,0,62,0,0,124,0,0,248, + 0,0,248,0,1,240,0,3,224,32,7,192,48,15,128,48, + 15,0,48,30,0,112,63,255,240,127,255,240,255,255,240,127, + 255,240,20,29,87,24,1,0,1,254,0,7,255,128,31,31, + 192,63,15,192,62,7,224,126,7,224,60,7,224,0,7,224, + 0,7,192,0,15,192,0,31,128,0,127,0,1,254,0,1, + 255,128,2,63,192,0,15,224,0,7,224,0,3,240,0,3, + 240,0,3,240,0,3,240,0,3,240,0,3,240,64,7,224, + 96,15,224,252,31,192,63,255,128,31,254,0,3,248,0,21, + 29,87,25,2,0,0,1,128,0,15,128,0,31,128,0,63, + 128,0,63,128,0,127,128,0,255,128,0,239,128,1,239,128, + 3,207,128,3,143,128,7,143,128,7,15,128,14,15,128,30, + 15,128,28,15,128,56,15,128,56,15,128,127,255,248,255,255, + 240,255,255,224,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,31,192,1,255,240,1,255,240,20,29,87,24, + 2,0,0,0,32,31,255,240,31,255,192,31,255,192,31,255, + 128,28,0,0,28,0,0,28,0,0,60,0,0,60,0,0, + 56,0,0,59,252,0,63,255,0,63,255,128,120,31,192,32, + 15,224,0,7,224,0,7,240,0,3,240,0,3,240,0,3, + 240,0,3,240,0,3,240,0,7,224,64,7,224,224,15,192, + 252,31,128,63,254,0,7,248,0,20,29,87,24,2,0,0, + 1,128,0,31,192,0,127,0,1,252,0,3,240,0,7,192, + 0,15,128,0,31,128,0,63,0,0,62,0,0,126,0,0, + 124,126,0,125,255,128,255,255,192,255,15,224,254,7,224,252, + 7,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 240,126,3,224,126,3,224,62,3,192,31,7,192,15,143,128, + 7,255,0,1,248,0,21,28,84,24,2,0,127,255,240,127, + 255,248,127,255,240,127,255,224,112,1,224,224,1,224,192,1, + 192,64,3,192,0,3,128,0,7,128,0,7,0,0,15,0, + 0,15,0,0,30,0,0,30,0,0,60,0,0,60,0,0, + 124,0,0,120,0,0,248,0,0,240,0,1,240,0,1,240, + 0,3,224,0,3,224,0,7,224,0,15,192,0,6,0,0, + 20,29,87,24,2,0,0,252,0,7,255,128,15,31,192,30, + 15,192,28,7,224,60,7,224,60,7,224,60,7,224,62,15, + 192,63,143,128,31,255,0,31,254,0,15,252,0,3,255,0, + 7,255,128,15,255,192,31,31,224,62,15,240,126,7,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,224,126,3, + 224,126,7,192,63,15,128,31,254,0,3,248,0,20,29,87, + 24,2,255,1,252,0,7,255,0,15,31,128,30,15,192,62, + 7,224,124,7,224,124,7,224,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,254,3,240,126,7,240,127,15,240, + 63,255,240,31,251,224,7,227,224,0,7,224,0,7,192,0, + 7,192,0,15,128,0,31,0,0,62,0,0,252,0,3,248, + 0,15,224,0,63,128,0,56,0,0,8,23,23,13,3,255, + 62,127,255,255,255,254,124,0,0,0,0,0,0,0,0,0, + 62,127,255,255,255,254,124,10,31,62,13,1,247,15,128,31, + 192,63,192,63,192,63,192,31,128,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,63, + 128,255,192,127,192,63,192,15,192,15,192,15,128,15,128,15, + 0,31,0,30,0,60,0,120,0,48,0,20,16,48,22,1, + 6,0,0,96,0,1,240,0,15,224,0,127,224,3,255,128, + 15,252,0,127,224,0,127,0,0,254,0,0,255,192,0,63, + 248,0,7,254,0,1,255,192,0,63,224,0,7,240,0,0, + 192,20,10,30,22,1,8,127,255,224,127,255,240,255,255,224, + 0,0,0,0,0,0,0,0,0,0,0,0,127,255,224,127, + 255,240,255,255,224,20,16,48,22,1,6,48,0,0,126,0, + 0,255,192,0,63,240,0,15,254,0,1,255,192,0,63,224, + 0,7,240,0,31,224,0,127,224,3,255,0,31,248,0,127, + 224,0,127,0,0,248,0,0,64,0,0,19,35,105,22,2, + 255,1,254,0,15,255,128,63,31,192,126,15,192,124,7,224, + 252,7,224,252,7,224,252,7,224,240,7,224,0,7,192,0, + 15,192,0,15,128,0,31,128,0,63,0,0,126,0,0,124, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,128,0,0,0,0,0, + 0,0,0,0,0,1,240,0,3,248,0,7,248,0,7,248, + 0,7,248,0,7,240,0,3,224,0,38,42,210,42,2,246, + 0,0,255,192,0,0,7,255,248,0,0,31,255,254,0,0, + 127,255,255,0,0,255,0,255,128,1,248,0,31,192,3,224, + 0,7,224,7,192,0,3,224,15,128,0,1,240,31,0,0, + 1,240,31,0,252,24,248,62,3,254,120,248,60,7,255,240, + 120,124,15,135,240,124,124,31,3,240,124,120,31,3,240,60, + 120,62,3,240,60,248,62,3,240,60,248,126,3,240,60,248, + 126,3,240,60,248,126,3,240,60,248,126,3,240,60,248,126, + 3,240,56,248,126,3,240,56,248,126,3,240,120,252,127,3, + 240,112,252,63,7,240,224,124,63,143,249,224,124,31,255,255, + 192,126,31,251,255,128,62,15,241,254,0,63,3,224,248,0, + 63,128,0,0,0,31,192,0,0,0,15,224,0,0,128,15, + 240,0,1,192,7,252,0,7,192,3,255,128,127,128,0,255, + 255,254,0,0,127,255,252,0,0,31,255,240,0,0,1,255, + 0,0,30,30,120,30,0,0,0,1,128,0,0,7,128,0, + 0,15,192,0,0,31,192,0,0,31,224,0,0,31,224,0, + 0,63,224,0,0,63,240,0,0,59,240,0,0,121,240,0, + 0,121,248,0,0,113,248,0,0,240,252,0,0,240,252,0, + 0,224,252,0,1,224,126,0,1,224,126,0,1,192,126,0, + 3,255,255,0,3,255,255,0,3,128,31,0,7,128,31,128, + 7,0,31,128,7,0,15,192,15,0,15,192,14,0,15,192, + 14,0,7,224,30,0,7,224,255,192,63,252,255,192,63,252, + 26,30,120,29,0,0,3,255,128,0,255,255,240,0,127,193, + 252,0,15,192,126,0,15,192,127,0,15,192,63,0,15,192, + 63,0,15,192,63,0,15,192,63,0,15,192,62,0,15,192, + 126,0,15,192,252,0,15,195,248,0,15,255,224,0,15,255, + 252,0,15,192,254,0,15,192,63,0,15,192,31,128,15,192, + 31,128,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,128,15,192,31,128,15,192, + 63,0,31,192,254,0,127,255,252,0,127,255,224,0,24,30, + 90,27,1,0,0,31,224,0,255,252,1,255,254,7,224,254, + 15,128,126,31,128,60,31,0,28,62,0,0,62,0,0,126, + 0,0,124,0,0,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 126,0,0,126,0,0,127,0,0,63,128,2,63,192,15,31, + 240,62,15,255,248,7,255,240,1,255,192,0,127,0,29,30, + 120,31,0,0,3,255,192,0,255,255,248,0,127,192,254,0, + 143,192,63,128,15,192,31,192,15,192,15,192,15,192,7,224, + 15,192,7,240,15,192,3,240,15,192,3,240,15,192,3,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,240,15,192,3,240,15,192,3,240,15,192,7,224, + 15,192,7,224,15,192,15,192,15,192,31,128,15,192,63,0, + 31,224,254,0,127,255,248,0,127,255,192,0,23,30,90,25, + 1,0,255,255,248,255,255,252,63,128,56,31,128,56,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,224,31,255,224,31, + 128,192,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,6,31,128,6,31,128,14, + 31,128,14,63,192,30,255,255,254,255,255,252,22,30,90,24, + 1,0,255,255,248,255,255,252,63,128,60,31,128,28,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,192,31,255,224,31, + 129,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,63,192,0,255,248,0,255,248,0,27,30,120,29, + 1,0,0,15,248,0,0,127,255,128,1,240,127,128,3,192, + 63,0,7,128,15,0,15,0,14,0,31,0,0,0,62,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,124,0, + 0,0,252,0,0,0,252,0,0,0,252,1,255,224,252,1, + 255,224,252,0,127,192,252,0,31,128,252,0,31,128,254,0, + 31,128,126,0,31,128,127,0,31,128,127,0,31,128,63,128, + 31,128,63,192,31,128,31,240,63,0,15,255,254,0,7,255, + 252,0,1,255,240,0,0,63,128,0,30,30,120,33,1,0, + 255,240,63,252,255,240,63,252,63,192,15,240,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,255,255,224,31,255,255,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,63,192,15,240, + 255,240,63,252,255,240,63,252,12,30,60,16,2,0,255,240, + 255,240,63,192,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,21,40,120,16,249,246, + 0,255,248,0,255,248,0,31,224,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,192,0,15,192, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,128,0,15,128, + 0,15,128,0,31,0,24,30,0,62,62,0,127,248,0,255, + 240,0,127,224,0,31,128,0,29,30,120,30,1,0,255,240, + 255,224,255,240,255,224,63,192,31,0,31,128,62,0,31,128, + 124,0,31,128,248,0,31,129,240,0,31,129,224,0,31,131, + 192,0,31,135,128,0,31,143,0,0,31,159,0,0,31,190, + 0,0,31,188,0,0,31,252,0,0,31,254,0,0,31,191, + 0,0,31,159,128,0,31,143,192,0,31,135,224,0,31,135, + 240,0,31,131,248,0,31,129,252,0,31,128,254,0,31,128, + 126,0,31,128,127,0,31,128,63,192,63,192,31,240,255,240, + 15,248,255,240,7,128,23,30,90,24,1,0,255,240,0,255, + 240,0,63,192,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,4,31,128,6,31,128,14,31,128,30,63,192,60, + 255,255,252,255,255,252,38,30,150,41,1,0,255,128,0,15, + 248,255,192,0,15,248,15,192,0,31,192,15,224,0,31,192, + 15,224,0,31,192,15,240,0,63,192,15,240,0,63,192,15, + 248,0,127,192,15,248,0,119,192,14,252,0,247,192,14,252, + 0,247,192,14,124,1,231,192,14,126,1,231,192,14,62,1, + 199,192,14,63,3,199,192,14,31,3,135,192,14,31,135,135, + 192,14,31,135,135,192,14,15,143,7,192,14,15,207,7,192, + 30,7,222,7,192,30,7,254,7,192,30,3,252,7,192,30, + 3,252,7,192,30,3,248,7,192,30,1,248,7,224,30,1, + 248,7,224,31,0,240,15,224,255,192,240,63,252,255,192,96, + 63,252,30,30,120,32,1,0,255,0,15,252,255,128,15,252, + 63,192,3,240,31,192,1,224,31,224,1,224,31,240,1,224, + 31,240,1,224,31,248,1,224,31,252,1,224,30,254,1,224, + 30,126,1,224,30,63,1,224,30,63,129,224,30,31,129,224, + 30,15,193,224,30,7,225,224,30,7,225,224,30,3,241,224, + 30,1,249,224,30,1,253,224,30,0,253,224,30,0,127,224, + 30,0,63,224,30,0,63,224,30,0,31,224,30,0,15,224, + 30,0,7,224,63,0,7,224,255,192,3,224,255,192,0,224, + 27,30,120,30,1,0,0,31,192,0,0,255,240,0,3,225, + 252,0,7,128,126,0,15,0,63,0,31,0,31,0,30,0, + 31,128,62,0,15,128,126,0,15,192,124,0,15,192,124,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,254,0,7,192,126,0,15,192,126,0,15,128,127,0, + 15,128,63,0,31,0,31,128,31,0,31,192,62,0,15,240, + 252,0,7,255,240,0,1,255,224,0,0,127,0,0,25,30, + 120,27,0,0,3,255,192,0,255,255,248,0,127,193,252,0, + 143,192,126,0,15,192,63,0,15,192,63,0,15,192,31,128, + 15,192,31,128,15,192,31,128,15,192,31,128,15,192,31,128, + 15,192,31,0,15,192,63,0,15,192,62,0,15,192,126,0, + 15,208,252,0,15,223,240,0,15,207,192,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 31,224,0,0,127,252,0,0,127,252,0,0,32,38,152,30, + 1,248,0,31,192,0,0,255,240,0,3,225,252,0,7,128, + 126,0,15,0,63,0,31,0,31,0,30,0,31,128,62,0, + 15,128,126,0,15,192,124,0,15,192,124,0,7,192,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,254,0, + 7,192,126,0,15,192,126,0,15,128,127,0,15,128,63,0, + 31,0,31,128,31,0,31,192,62,0,15,240,252,0,7,255, + 248,0,1,255,224,0,0,127,240,0,0,1,252,0,0,0, + 254,2,0,0,63,135,0,0,31,255,0,0,15,254,0,0, + 3,252,0,0,1,252,0,0,0,120,29,30,120,29,0,0, + 7,255,128,0,255,255,240,0,127,193,252,0,143,192,126,0, + 15,192,126,0,15,192,63,0,15,192,63,0,15,192,63,0, + 15,192,63,0,15,192,63,0,15,192,126,0,15,192,126,0, + 15,192,252,0,15,255,248,0,15,255,240,0,15,255,192,0, + 15,199,192,0,15,195,224,0,15,193,240,0,15,193,240,0, + 15,192,248,0,15,192,252,0,15,192,126,0,15,192,126,0, + 15,192,63,0,15,192,63,128,15,192,31,192,31,224,31,248, + 127,248,15,248,127,248,15,128,20,30,90,25,3,0,1,255, + 0,15,255,192,30,15,224,60,7,192,120,3,192,248,1,128, + 248,0,0,252,0,0,254,0,0,255,0,0,127,192,0,127, + 240,0,63,252,0,31,255,0,7,255,128,1,255,192,0,127, + 224,0,31,224,0,7,240,0,3,240,0,1,240,192,1,240, + 224,1,240,224,1,224,240,3,224,248,3,192,254,15,128,255, + 255,0,127,254,0,15,240,0,27,30,120,28,0,0,127,255, + 255,224,127,255,255,224,112,31,128,224,112,31,128,224,96,31, + 128,224,96,31,128,224,224,31,128,96,64,31,128,96,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,63,192,0,1,255, + 248,0,1,255,248,0,29,30,120,32,1,0,255,240,31,248, + 255,240,31,248,63,192,7,224,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,128,31,192,7,128,15,192,7,128,15,224,7,0, + 7,224,15,0,3,248,62,0,1,255,252,0,0,255,240,0, + 0,31,192,0,31,30,120,32,0,0,255,240,7,254,255,240, + 7,254,31,128,0,240,15,192,0,224,15,192,0,224,15,192, + 1,224,7,224,1,192,7,224,3,192,3,240,3,192,3,240, + 3,128,3,240,7,128,1,248,7,128,1,248,7,0,0,248, + 15,0,0,252,14,0,0,252,14,0,0,126,30,0,0,126, + 28,0,0,62,28,0,0,63,60,0,0,63,56,0,0,31, + 248,0,0,31,240,0,0,15,240,0,0,15,240,0,0,15, + 224,0,0,7,224,0,0,7,224,0,0,3,192,0,0,3, + 0,0,41,30,180,41,0,0,255,240,12,3,255,128,255,240, + 30,3,255,128,31,128,30,0,124,0,15,128,30,0,56,0, + 15,128,63,0,120,0,15,128,63,0,120,0,15,192,63,128, + 112,0,7,192,127,128,112,0,7,192,127,128,112,0,7,192, + 127,192,240,0,7,224,247,192,224,0,3,224,231,224,224,0, + 3,224,227,224,224,0,3,225,227,225,224,0,3,241,195,241, + 224,0,3,241,193,241,192,0,1,243,193,241,192,0,1,243, + 128,249,192,0,1,251,128,251,192,0,1,255,128,255,192,0, + 0,255,0,127,128,0,0,255,0,127,128,0,0,254,0,127, + 128,0,0,254,0,63,128,0,0,126,0,63,0,0,0,124, + 0,31,0,0,0,124,0,31,0,0,0,124,0,31,0,0, + 0,120,0,14,0,0,0,48,0,12,0,0,29,30,120,30, + 1,0,255,240,127,240,255,240,127,240,63,192,31,128,31,192, + 15,0,15,192,30,0,7,224,60,0,7,240,60,0,3,240, + 120,0,1,248,240,0,1,252,240,0,0,255,224,0,0,127, + 192,0,0,127,192,0,0,63,128,0,0,31,128,0,0,31, + 192,0,0,63,224,0,0,127,224,0,0,127,240,0,0,243, + 248,0,1,241,248,0,1,225,252,0,3,192,254,0,7,192, + 126,0,7,128,63,0,15,0,63,128,31,0,31,192,63,0, + 63,224,255,192,255,248,255,192,255,248,29,30,120,29,0,0, + 127,0,31,248,255,128,31,248,31,192,3,192,15,192,3,128, + 7,224,7,128,3,240,7,0,3,240,15,0,1,248,14,0, + 1,248,30,0,0,252,28,0,0,124,60,0,0,126,56,0, + 0,63,120,0,0,63,240,0,0,31,240,0,0,31,224,0, + 0,15,224,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,31,224,0, + 0,255,252,0,0,255,252,0,23,30,90,26,1,0,63,255, + 254,63,255,254,60,0,254,56,1,252,56,1,248,48,3,248, + 48,7,240,64,7,240,0,15,224,0,15,192,0,31,192,0, + 63,128,0,63,128,0,127,0,0,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,248,0,7,240,0,15,224,0, + 15,224,4,31,192,6,31,192,6,63,128,14,127,0,14,127, + 0,30,255,255,254,127,255,254,12,45,90,16,3,248,255,240, + 255,240,255,240,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,255,240,255,240,255,240,21,46,138,23,1,248,224,0, + 0,248,0,0,120,0,0,120,0,0,124,0,0,60,0,0, + 60,0,0,62,0,0,30,0,0,31,0,0,15,0,0,15, + 0,0,15,128,0,7,128,0,7,128,0,7,192,0,3,192, + 0,3,192,0,3,224,0,1,224,0,1,240,0,0,240,0, + 0,240,0,0,248,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,60,0,0,62,0,0,30,0,0,31,0,0,15, + 0,0,15,0,0,15,128,0,7,128,0,7,128,0,7,192, + 0,3,192,0,3,192,0,1,224,0,1,224,0,1,240,0, + 0,240,0,0,240,0,0,56,12,45,90,16,1,248,255,240, + 255,240,255,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,255,240,255,240,255,240,19,23,69,24,2,13,0,32, + 0,0,112,0,0,240,0,1,240,0,1,248,0,1,248,0, + 3,188,0,3,188,0,7,60,0,7,30,0,6,30,0,14, + 14,0,14,15,0,12,15,0,28,7,128,28,7,128,24,3, + 128,56,3,192,48,3,192,112,1,224,112,1,224,96,0,224, + 192,0,192,21,3,9,23,1,250,127,255,248,127,255,248,255, + 255,240,11,11,22,15,0,24,60,0,252,0,254,0,126,0, + 63,0,31,0,15,128,7,128,3,192,1,192,0,224,23,22, + 66,24,1,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,24,36,108,26,0,0,3,0,0,63, + 128,0,255,128,0,127,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,131,224,31,143,248,31,191,252,31, + 255,252,31,240,254,31,192,126,31,128,63,31,128,63,31,128, + 31,31,128,31,31,128,31,31,128,31,31,128,31,31,128,30, + 31,128,30,31,128,60,31,128,56,31,240,248,31,255,240,15, + 255,192,3,255,128,0,126,0,20,22,66,22,1,0,0,127, + 128,1,255,240,7,135,224,15,3,224,30,1,224,62,0,192, + 124,0,192,124,0,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,0,254,0,0,126,0,32,127,0, + 112,63,193,224,63,255,192,31,255,128,7,255,0,1,252,0, + 25,36,144,27,2,0,0,0,56,0,0,15,248,0,0,15, + 248,0,0,3,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,249, + 248,0,7,255,248,0,15,255,248,0,31,135,248,0,63,3, + 248,0,62,1,248,0,126,1,248,0,124,1,248,0,252,1, + 248,0,252,1,248,0,252,1,248,0,252,1,248,0,252,1, + 248,0,252,1,248,0,254,1,248,0,126,1,248,0,127,3, + 248,0,127,135,253,0,63,255,255,128,31,253,254,0,15,248, + 252,0,3,224,224,0,19,22,66,23,2,0,0,252,0,7, + 255,0,15,31,128,30,15,128,62,15,192,124,7,192,124,7, + 224,124,7,224,252,7,224,255,255,224,255,255,128,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,64,127,0,224,63, + 131,192,63,255,128,31,255,0,15,254,0,3,248,0,20,37, + 111,16,1,0,0,15,128,0,63,224,0,255,240,1,255,224, + 3,227,224,7,193,192,7,193,0,15,128,0,15,128,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,127,255,0,255,254,0,31,132,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,63,224,0,255,252,0, + 255,252,0,25,33,132,25,0,245,0,126,1,128,3,255,223, + 128,7,135,255,0,15,3,254,0,30,1,240,0,30,0,248, + 0,62,0,248,0,62,0,248,0,62,0,248,0,62,0,248, + 0,63,0,240,0,31,129,224,0,15,195,192,0,7,255,128, + 0,1,254,0,0,3,224,0,0,7,192,0,0,15,192,0, + 0,31,254,0,0,31,255,240,0,15,255,252,0,7,255,254, + 0,15,159,255,0,62,0,127,0,124,0,63,0,252,0,31, + 0,252,0,30,0,254,0,30,0,255,0,60,0,127,192,248, + 0,63,255,240,0,15,255,192,0,1,254,0,0,26,36,144, + 28,1,0,1,128,0,0,63,128,0,0,255,128,0,0,255, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,129,240,0,31, + 143,252,0,31,159,252,0,31,255,254,0,31,248,254,0,31, + 224,126,0,31,192,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,63,192,255,0,255,243,255,192,255, + 243,255,192,12,32,64,14,1,0,7,128,15,192,31,192,31, + 192,31,128,15,0,0,0,0,0,0,0,0,0,3,128,127, + 128,255,128,127,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,63,192,255,240,255,240,17,43,129,14,250,245,0, + 15,0,0,31,128,0,63,128,0,63,128,0,63,0,0,30, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128, + 0,127,128,0,255,128,0,127,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,0,0,31,0,0,62,0,16,62, + 0,60,124,0,127,248,0,255,224,0,255,192,0,63,0,0, + 26,36,144,26,1,0,1,128,0,0,63,128,0,0,255,128, + 0,0,255,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,129, + 255,128,31,129,255,128,31,128,252,0,31,128,248,0,31,131, + 224,0,31,135,192,0,31,143,128,0,31,158,0,0,31,188, + 0,0,31,252,0,0,31,190,0,0,31,191,0,0,31,159, + 128,0,31,143,192,0,31,135,224,0,31,135,240,0,31,131, + 248,0,31,129,252,0,31,128,252,0,63,128,255,192,255,240, + 127,192,255,240,62,0,12,36,72,14,1,0,1,128,63,128, + 255,128,255,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,192, + 255,240,255,240,39,22,110,41,1,0,3,3,224,31,128,127, + 143,248,127,192,255,159,249,255,224,127,255,255,255,240,31,241, + 255,135,240,31,224,255,3,240,31,128,252,3,240,31,128,252, + 3,240,31,128,252,3,240,31,128,252,3,240,31,128,252,3, + 240,31,128,252,3,240,31,128,252,3,240,31,128,252,3,240, + 31,128,252,3,240,31,128,252,3,240,31,128,252,3,240,31, + 128,252,3,240,31,128,252,3,240,63,128,252,3,248,255,247, + 255,159,254,255,247,255,159,254,26,22,88,28,1,0,3,1, + 240,0,127,135,252,0,255,159,252,0,63,191,254,0,31,248, + 254,0,31,224,126,0,31,192,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,63,192,255,0,255,243, + 255,192,255,243,255,192,21,22,66,25,2,0,0,252,0,3, + 255,0,15,15,192,30,7,224,62,7,224,62,3,240,124,3, + 240,124,1,248,252,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,240,126,1,240,126,3,224,62, + 3,224,63,3,192,31,135,128,7,254,0,1,248,0,24,33, + 99,27,1,245,3,3,224,127,143,248,255,159,252,63,255,252, + 31,240,254,31,192,126,31,128,63,31,128,63,31,128,31,31, + 128,31,31,128,31,31,128,31,31,128,31,31,128,30,31,128, + 30,31,128,62,31,192,60,31,240,124,31,255,248,31,255,240, + 31,159,224,31,135,128,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,63,192, + 0,255,248,0,255,248,0,24,33,99,26,2,245,0,124,8, + 1,255,28,7,255,248,15,135,248,30,3,248,62,1,248,124, + 1,248,124,1,248,252,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,254,1,248,126,1,248,127,3,248, + 127,143,248,63,255,248,31,253,248,15,249,248,3,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,3,248,0,31,255,0,31,255, + 20,22,66,21,1,0,3,7,192,127,143,240,255,191,240,63, + 255,224,31,241,224,31,224,224,31,192,224,31,128,192,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 192,0,255,248,0,255,248,0,16,22,44,20,2,0,7,248, + 31,254,60,62,120,30,248,14,248,12,252,0,255,0,127,192, + 127,240,63,248,15,254,3,254,0,255,128,127,192,63,224,31, + 224,31,240,30,248,60,255,248,63,224,18,30,90,18,255,0, + 0,192,0,1,192,0,7,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,63,255,192,255,255,128,15,193, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,128,15,227,192,15,255, + 128,7,255,0,3,252,0,1,240,0,26,22,88,27,1,0, + 3,128,28,0,255,135,252,0,255,135,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,129,252,0,31,199,252,128,31,255,255,128,15,254,255,192, + 7,248,126,0,3,224,112,0,24,22,66,24,0,0,255,224, + 255,255,224,255,63,128,60,31,128,60,31,128,56,15,192,120, + 15,192,112,7,192,112,7,224,240,7,224,224,3,241,224,3, + 241,192,1,249,192,1,251,128,0,255,128,0,255,128,0,127, + 0,0,127,0,0,126,0,0,62,0,0,60,0,0,24,0, + 34,22,110,34,0,0,255,224,96,63,192,255,224,112,63,192, + 63,0,240,7,0,31,0,248,15,0,31,128,248,14,0,15, + 129,252,14,0,15,129,252,30,0,15,195,252,28,0,7,195, + 254,28,0,7,195,190,28,0,7,231,63,60,0,3,231,31, + 56,0,3,239,31,184,0,3,254,31,248,0,1,254,15,240, + 0,1,252,15,240,0,1,252,7,240,0,0,252,7,224,0, + 0,248,3,224,0,0,248,3,224,0,0,112,1,192,0,0, + 96,1,128,0,25,22,88,25,0,0,127,241,255,0,127,241, + 255,0,31,192,124,0,15,224,112,0,7,224,224,0,7,241, + 224,0,3,251,192,0,1,255,128,0,0,255,0,0,0,254, + 0,0,0,127,0,0,0,127,0,0,0,127,128,0,0,255, + 192,0,1,207,224,0,3,199,224,0,7,131,240,0,7,3, + 248,0,14,1,252,0,30,1,254,0,255,135,255,128,255,135, + 255,128,25,33,132,24,255,245,127,240,127,128,127,240,127,128, + 31,192,30,0,15,192,28,0,15,192,28,0,7,224,60,0, + 7,224,56,0,3,240,56,0,3,240,112,0,1,240,112,0, + 1,248,240,0,1,248,224,0,0,252,224,0,0,253,224,0, + 0,125,192,0,0,127,192,0,0,127,128,0,0,63,128,0, + 0,63,128,0,0,31,0,0,0,31,0,0,0,14,0,0, + 0,14,0,0,0,30,0,0,0,28,0,0,0,60,0,0, + 0,120,0,0,32,248,0,0,63,240,0,0,127,224,0,0, + 255,192,0,0,255,128,0,0,126,0,0,0,20,22,66,22, + 1,0,63,255,240,63,255,240,56,15,224,56,15,192,48,31, + 192,48,31,128,32,63,0,0,127,0,0,126,0,0,252,0, + 1,252,0,1,248,0,3,240,0,7,240,0,7,224,0,15, + 224,48,31,192,48,31,128,112,63,128,112,127,0,240,127,255, + 240,255,255,224,14,45,90,17,2,249,0,8,0,60,0,248, + 1,240,3,224,7,224,7,192,15,192,15,192,15,192,15,192, + 15,192,15,224,7,224,7,224,7,224,7,224,7,224,7,192, + 15,192,15,128,63,0,254,0,255,128,31,192,7,192,7,224, + 7,224,7,224,7,224,7,224,7,224,15,224,15,192,15,192, + 15,192,15,192,15,192,15,192,7,192,7,224,3,240,0,248, + 0,124,0,8,4,49,49,11,4,246,48,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,192,14,44,88,17,1, + 249,64,0,248,0,124,0,63,0,31,128,15,128,15,192,15, + 192,15,192,15,192,15,192,15,192,31,192,31,128,31,128,31, + 128,31,128,31,128,31,128,15,192,15,252,7,252,1,248,7, + 224,15,192,15,128,31,128,31,128,31,128,31,128,31,128,31, + 192,15,192,15,192,15,192,15,192,15,192,15,128,31,128,31, + 0,62,0,124,0,240,0,64,0,21,8,24,23,1,11,7, + 128,8,15,224,24,31,240,16,63,252,48,49,255,224,96,127, + 192,64,31,128,192,15,0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,12,0,0,8,35, + 35,15,3,243,62,127,255,255,255,254,124,0,0,12,28,28, + 28,60,60,60,60,60,62,62,62,62,62,62,62,62,126,126, + 126,126,126,127,126,120,96,21,30,90,24,2,255,0,24,0, + 0,56,0,0,56,0,0,56,0,0,127,192,3,255,240,7, + 255,248,31,187,240,62,56,240,60,56,96,124,56,32,120,56, + 0,248,56,0,248,56,0,248,56,0,248,56,0,248,56,0, + 248,56,0,252,56,0,124,56,16,126,56,56,63,56,240,31, + 251,224,15,255,192,7,255,128,1,252,0,0,56,0,0,56, + 0,0,56,0,0,48,0,22,29,87,24,1,0,0,31,192, + 0,255,248,1,225,248,3,192,248,7,192,120,7,128,112,15, + 128,48,15,128,48,15,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,255,0,255,255,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,16,31,0,12,31, + 0,24,30,0,56,62,0,120,63,255,248,127,255,248,255,255, + 248,128,15,240,20,20,60,24,2,4,64,0,32,224,0,96, + 113,248,240,63,255,192,31,15,128,30,7,128,28,3,128,56, + 1,192,56,1,192,56,1,192,56,1,192,56,1,192,60,3, + 192,30,7,128,31,15,128,31,255,128,57,249,192,112,0,224, + 224,0,112,64,0,32,27,28,112,24,254,0,127,0,127,224, + 255,128,127,224,127,192,15,0,15,224,30,0,15,224,30,0, + 7,240,60,0,3,240,60,0,3,248,56,0,1,252,120,0, + 0,252,112,0,0,254,240,0,0,126,224,0,0,127,224,0, + 0,63,192,0,0,63,192,0,0,31,192,0,0,31,128,0, + 15,255,255,0,15,255,254,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,128,0,0,31,128,0,0,31,128,0, + 0,63,192,0,1,255,248,0,1,255,248,0,4,49,49,11, + 4,246,48,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,224,0,0,0,0,0,112,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,192,18,34,102,23,3,0,3,252,0,15,255,0,30, + 31,0,60,15,0,124,7,0,124,6,0,126,2,0,127,128, + 0,63,224,0,63,240,0,63,252,0,127,254,0,123,255,0, + 240,255,128,240,63,128,240,31,192,240,7,192,248,7,192,124, + 3,192,127,3,192,63,195,192,31,243,128,15,255,128,7,255, + 0,1,255,0,0,127,128,96,63,128,96,31,128,112,15,128, + 112,15,128,120,15,0,126,30,0,127,252,0,15,240,0,17, + 7,21,19,1,26,56,7,0,124,15,128,252,31,128,252,31, + 128,252,31,128,248,31,0,112,14,0,31,31,124,35,2,0, + 0,31,224,0,0,127,252,0,1,240,31,0,7,192,7,128, + 15,0,1,224,30,0,0,224,28,3,240,112,56,31,254,56, + 56,60,124,56,112,120,60,28,112,240,28,28,240,240,24,28, + 224,224,0,14,225,224,0,14,225,224,0,14,225,224,0,14, + 225,224,0,14,225,224,0,14,225,240,0,14,240,240,0,30, + 112,248,6,28,112,126,30,28,56,127,252,56,56,31,240,56, + 28,7,192,112,14,0,0,224,15,0,1,224,7,192,7,128, + 1,240,31,0,0,127,252,0,0,31,240,0,12,16,32,13, + 1,14,15,0,63,128,99,192,227,192,131,192,7,192,63,192, + 123,192,243,192,243,192,247,224,255,240,115,128,0,0,255,224, + 255,224,20,22,66,25,2,0,0,192,32,1,192,112,1,192, + 224,3,129,224,7,131,192,15,7,192,31,15,128,62,15,128, + 126,31,0,252,63,0,252,126,0,252,126,0,252,63,0,126, + 31,0,62,15,128,31,15,128,15,7,192,7,131,192,3,129, + 224,1,192,224,0,192,112,0,192,32,21,11,33,24,2,4, + 127,255,248,255,255,248,255,255,248,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 96,15,3,6,17,1,11,127,254,127,252,255,252,17,17,51, + 17,0,17,3,224,0,15,248,0,60,30,0,48,6,0,103, + 227,0,99,51,0,195,49,128,195,49,128,195,225,128,195,65, + 128,195,97,128,99,35,0,99,51,0,55,158,0,60,30,0, + 15,248,0,3,224,0,20,4,12,24,2,27,127,255,240,255, + 255,240,255,255,224,255,255,224,11,13,26,17,3,17,15,0, + 31,192,63,192,123,224,113,224,241,224,241,224,241,224,241,192, + 251,192,127,128,127,0,30,0,18,22,66,20,1,3,0,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,127,255,192,255,255,192,255,255,128,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,192, + 0,0,0,0,0,0,0,127,255,192,127,255,192,255,255,128, + 13,17,34,17,2,15,7,224,31,240,120,248,120,120,248,120, + 0,120,0,240,0,224,1,224,3,192,7,128,15,0,30,8, + 60,8,120,24,255,248,255,248,13,18,36,17,1,14,7,224, + 31,240,60,248,120,120,124,120,0,120,0,240,1,224,7,240, + 5,240,0,120,0,120,0,120,0,120,128,120,224,240,127,224, + 31,128,11,11,22,15,5,24,15,0,15,192,31,224,31,128, + 63,0,62,0,124,0,120,0,240,0,224,0,64,0,27,33, + 132,28,1,245,3,0,6,0,255,128,254,0,255,128,126,0, + 63,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,192,254,0,31,227,254,0,31,255,254,64,31,255,127,224, + 30,254,127,192,30,124,63,128,30,56,28,0,30,0,0,0, + 30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0, + 31,0,0,0,31,128,0,0,31,128,0,0,31,192,0,0, + 31,0,0,0,24,0,0,0,26,36,144,29,1,250,1,255, + 255,192,7,255,255,192,31,195,255,0,63,3,222,0,126,3, + 222,0,124,3,222,0,252,3,222,0,252,3,222,0,252,3, + 222,0,252,3,222,0,252,3,222,0,126,3,222,0,127,3, + 222,0,63,3,222,0,31,195,222,0,7,255,222,0,1,255, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,7,255,0,0,31,255,192,0,31,255,192,7,7, + 7,10,1,13,60,126,254,254,254,252,120,10,10,20,11,1, + 246,14,0,28,0,30,0,63,128,63,192,15,192,15,192,31, + 128,254,0,112,0,13,17,34,17,2,15,1,128,15,128,255, + 128,71,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,240,127,248,11,16,32, + 13,1,14,15,0,63,128,123,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,192,123,192,63,128,30,0,0,0,255, + 224,255,224,20,22,66,25,3,0,64,32,0,224,112,0,112, + 56,0,120,28,0,56,30,0,60,15,0,30,15,128,31,7, + 192,31,135,224,15,199,240,15,227,240,15,227,240,15,199,240, + 31,135,224,31,7,192,30,15,128,60,15,0,56,30,0,120, + 28,0,112,56,0,224,48,0,64,96,0,27,29,116,30,2, + 0,3,0,1,192,63,0,3,128,255,0,7,128,15,0,15, + 0,15,0,14,0,15,0,28,0,15,0,60,0,15,0,120, + 0,15,0,112,0,15,0,240,0,15,1,224,0,15,1,192, + 0,31,131,128,0,255,231,128,0,0,15,0,0,0,14,1, + 0,0,28,15,128,0,60,15,128,0,120,31,128,0,112,55, + 128,0,224,55,128,1,224,103,128,3,192,199,128,3,129,199, + 128,7,129,255,224,15,3,255,192,30,0,7,128,28,0,7, + 128,60,0,63,224,26,29,116,30,2,0,3,0,1,192,63, + 0,7,128,255,0,7,128,15,0,15,0,15,0,30,0,15, + 0,60,0,15,0,60,0,15,0,120,0,15,0,240,0,15, + 0,224,0,15,1,224,0,15,3,192,0,31,135,128,0,255, + 231,0,0,0,15,0,0,0,30,63,0,0,60,127,192,0, + 56,231,192,0,121,195,192,0,241,131,192,1,224,3,128,1, + 192,7,0,3,192,14,0,7,128,28,0,15,0,56,0,14, + 0,112,64,30,0,224,64,60,1,255,192,120,3,255,192,28, + 29,116,30,1,0,15,128,0,224,63,192,1,192,115,224,3, + 192,241,224,7,128,129,192,7,0,3,128,14,0,15,192,30, + 0,15,224,60,0,1,240,56,0,0,240,120,0,0,240,240, + 0,0,240,224,0,225,225,192,0,127,195,192,0,31,7,128, + 0,0,7,0,128,0,14,7,192,0,30,7,192,0,60,11, + 192,0,56,27,192,0,112,19,192,0,240,51,192,1,224,99, + 192,1,192,227,192,3,192,255,240,7,129,255,224,15,0,3, + 192,14,0,3,192,30,0,31,240,18,35,105,22,2,243,0, + 248,0,1,252,0,3,252,0,3,252,0,3,252,0,3,248, + 0,1,240,0,0,0,0,0,0,0,0,0,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,0,1,240,0,1, + 224,0,3,224,0,7,192,0,15,192,0,15,128,0,31,0, + 0,63,0,0,126,0,0,126,0,0,252,0,0,252,3,192, + 252,15,192,252,15,192,252,15,192,252,15,128,126,31,128,127, + 31,0,63,254,0,15,240,0,30,42,168,30,0,0,0,32, + 0,0,0,112,0,0,0,248,0,0,1,252,0,0,1,254, + 0,0,0,255,0,0,0,63,128,0,0,15,192,0,0,3, + 224,0,0,0,224,0,0,0,64,0,0,0,0,0,0,1, + 128,0,0,7,128,0,0,15,192,0,0,31,192,0,0,31, + 224,0,0,31,224,0,0,63,224,0,0,63,240,0,0,59, + 240,0,0,121,240,0,0,121,248,0,0,113,248,0,0,240, + 252,0,0,240,252,0,0,224,252,0,1,224,126,0,1,224, + 126,0,1,192,126,0,3,255,255,0,3,255,255,0,3,128, + 31,0,7,128,31,128,7,0,31,128,7,0,15,192,15,0, + 15,192,14,0,15,192,14,0,7,224,30,0,7,224,255,192, + 63,252,255,192,63,252,30,42,168,30,0,0,0,0,32,0, + 0,0,48,0,0,0,124,0,0,0,254,0,0,1,254,0, + 0,3,248,0,0,7,224,0,0,15,128,0,0,31,0,0, + 0,60,0,0,0,16,0,0,0,0,0,0,0,1,128,0, + 0,7,128,0,0,15,192,0,0,31,192,0,0,31,224,0, + 0,31,224,0,0,63,224,0,0,63,240,0,0,59,240,0, + 0,121,240,0,0,121,248,0,0,113,248,0,0,240,252,0, + 0,240,252,0,0,224,252,0,1,224,126,0,1,224,126,0, + 1,192,126,0,3,255,255,0,3,255,255,0,3,128,31,0, + 7,128,31,128,7,0,31,128,7,0,15,192,15,0,15,192, + 14,0,15,192,14,0,7,224,30,0,7,224,255,192,63,252, + 255,192,63,252,30,41,164,30,0,0,0,7,0,0,0,7, + 128,0,0,15,192,0,0,31,224,0,0,63,240,0,0,127, + 248,0,0,248,248,0,1,240,60,0,1,192,14,0,1,0, + 8,0,0,0,0,0,0,1,128,0,0,7,128,0,0,15, + 192,0,0,31,192,0,0,31,224,0,0,31,224,0,0,63, + 224,0,0,63,240,0,0,59,240,0,0,121,240,0,0,121, + 248,0,0,113,248,0,0,240,252,0,0,240,252,0,0,224, + 252,0,1,224,126,0,1,224,126,0,1,192,126,0,3,255, + 255,0,3,255,255,0,3,128,31,0,7,128,31,128,7,0, + 31,128,7,0,15,192,15,0,15,192,14,0,15,192,14,0, + 7,224,30,0,7,224,255,192,63,252,255,192,63,252,30,40, + 160,30,0,0,0,16,4,0,0,127,7,0,0,255,254,0, + 1,255,254,0,1,255,252,0,3,255,248,0,3,3,240,0, + 2,0,64,0,0,0,0,0,0,0,0,0,0,1,128,0, + 0,7,128,0,0,15,192,0,0,31,192,0,0,31,224,0, + 0,31,224,0,0,63,224,0,0,63,240,0,0,59,240,0, + 0,121,240,0,0,121,248,0,0,113,248,0,0,240,252,0, + 0,240,252,0,0,224,252,0,1,224,126,0,1,224,126,0, + 1,192,126,0,3,255,255,0,3,255,255,0,3,128,31,0, + 7,128,31,128,7,0,31,128,7,0,15,192,15,0,15,192, + 14,0,15,192,14,0,7,224,30,0,7,224,255,192,63,252, + 255,192,63,252,30,40,160,30,0,0,0,64,16,0,0,240, + 60,0,1,248,126,0,1,248,126,0,1,248,126,0,1,240, + 124,0,1,240,124,0,0,64,32,0,0,0,0,0,0,0, + 0,0,0,1,128,0,0,7,128,0,0,15,192,0,0,31, + 192,0,0,31,224,0,0,31,224,0,0,63,224,0,0,63, + 240,0,0,59,240,0,0,121,240,0,0,121,248,0,0,113, + 248,0,0,240,252,0,0,240,252,0,0,224,252,0,1,224, + 126,0,1,224,126,0,1,192,126,0,3,255,255,0,3,255, + 255,0,3,128,31,0,7,128,31,128,7,0,31,128,7,0, + 15,192,15,0,15,192,14,0,15,192,14,0,7,224,30,0, + 7,224,255,192,63,252,255,192,63,252,30,42,168,30,0,0, + 0,1,0,0,0,15,224,0,0,31,224,0,0,28,240,0, + 0,60,240,0,0,60,240,0,0,60,224,0,0,63,224,0, + 0,31,128,0,0,4,0,0,0,0,0,0,0,0,0,0, + 0,1,128,0,0,7,128,0,0,15,192,0,0,31,192,0, + 0,31,224,0,0,31,224,0,0,63,224,0,0,63,240,0, + 0,59,240,0,0,121,240,0,0,121,248,0,0,113,248,0, + 0,240,252,0,0,240,252,0,0,224,252,0,1,224,126,0, + 1,224,126,0,1,192,126,0,3,255,255,0,3,255,255,0, + 3,128,31,0,7,128,31,128,7,0,31,128,7,0,15,192, + 15,0,15,192,14,0,15,192,14,0,7,224,30,0,7,224, + 255,192,63,252,255,192,63,252,38,30,150,39,0,0,0,127, + 255,255,240,0,127,255,255,248,0,15,255,0,112,0,7,255, + 0,112,0,15,63,0,112,0,15,63,0,48,0,15,63,0, + 48,0,30,63,0,48,0,30,63,0,0,0,60,63,0,0, + 0,60,63,0,0,0,60,63,0,0,0,120,63,0,0,0, + 127,255,255,192,0,255,255,255,128,0,240,63,1,128,0,224, + 63,0,0,1,224,63,0,0,1,224,63,0,0,3,192,63, + 0,0,3,192,63,0,0,3,128,63,0,0,7,128,63,0, + 0,7,128,63,0,12,15,0,63,0,12,15,0,63,0,28, + 14,0,63,0,28,31,0,127,128,124,255,193,255,255,248,255, + 193,255,255,248,24,40,120,27,1,246,0,31,224,0,255,252, + 1,255,254,7,224,254,15,192,126,31,128,60,31,0,28,62, + 0,0,62,0,0,126,0,0,124,0,0,124,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,0,127,0,0,63, + 128,2,63,128,7,31,224,15,15,252,254,7,255,248,3,255, + 240,0,255,192,0,30,0,0,28,0,0,31,0,0,63,192, + 0,63,192,0,15,192,0,15,128,0,31,128,0,254,0,0, + 112,0,23,42,126,25,1,0,1,0,0,3,128,0,15,192, + 0,15,224,0,31,240,0,7,248,0,1,252,0,0,126,0, + 0,31,0,0,7,0,0,2,0,0,0,0,255,255,248,255, + 255,252,63,128,56,31,128,56,31,128,24,31,128,24,31,128, + 24,31,128,24,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,255,224,31,255,224,31,128,192,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,6,31,128,6,31,128,14,31,128,14,63,192,30, + 255,255,254,255,255,252,23,42,126,25,1,0,0,2,0,0, + 3,128,0,7,224,0,15,240,0,31,240,0,63,192,0,127, + 0,0,252,0,1,240,0,1,192,0,1,0,0,0,0,0, + 255,255,248,255,255,252,63,128,56,31,128,56,31,128,24,31, + 128,24,31,128,24,31,128,24,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,255,224,31,255,224,31,128,192, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,6,31,128,6,31,128,14,31,128, + 14,63,192,30,255,255,254,255,255,252,23,41,123,25,1,0, + 0,56,0,0,124,0,0,254,0,0,255,0,1,255,0,3, + 255,128,7,199,192,15,1,224,14,0,224,8,0,64,0,0, + 0,255,255,248,255,255,252,63,128,56,31,128,56,31,128,24, + 31,128,24,31,128,24,31,128,24,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,255,224,31,255,224,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,6,31,128,6,31,128,14,31, + 128,14,63,192,30,255,255,254,255,255,252,23,40,120,25,1, + 0,2,0,128,7,129,224,15,195,240,15,195,240,15,195,240, + 15,131,224,15,3,192,4,1,0,0,0,0,0,0,0,255, + 255,248,255,255,252,63,128,56,31,128,56,31,128,24,31,128, + 24,31,128,24,31,128,24,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,255,224,31,255,224,31,128,192,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,6,31,128,6,31,128,14,31,128,14, + 63,192,30,255,255,254,255,255,252,15,42,84,16,255,0,8, + 0,28,0,62,0,127,0,127,128,191,192,15,224,3,240,0, + 248,0,56,0,16,0,0,31,254,31,254,7,248,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,7,248,31, + 254,31,254,14,42,84,16,2,0,0,128,0,224,1,248,3, + 252,7,252,15,240,31,192,63,0,124,0,112,0,32,0,0, + 0,255,240,255,240,63,192,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,63,192,255,240,255,240,16,41,82, + 16,0,0,3,128,7,192,15,224,15,240,31,240,63,248,124, + 124,240,30,224,15,128,4,0,0,63,252,63,252,15,240,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,15, + 240,63,252,63,252,16,40,80,16,0,0,32,8,120,30,252, + 63,252,63,252,63,248,62,240,60,64,16,0,0,0,0,63, + 252,63,252,15,240,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,15,240,63,252,63,252,29,30,120,31,0, + 0,3,255,192,0,255,255,248,0,127,192,254,0,143,192,63, + 128,15,192,31,192,15,192,15,192,15,192,7,224,15,192,7, + 240,15,192,3,240,15,192,3,240,15,192,3,248,15,192,1, + 248,15,192,1,248,127,255,1,248,255,255,1,248,15,192,1, + 248,15,192,1,248,15,192,1,248,15,192,1,248,15,192,1, + 240,15,192,3,240,15,192,3,240,15,192,7,224,15,192,7, + 224,15,192,15,192,15,192,31,128,15,192,63,0,31,224,254, + 0,127,255,248,0,127,255,192,0,30,40,160,32,1,0,0, + 16,4,0,0,127,7,0,0,255,255,0,0,255,254,0,1, + 255,252,0,3,255,252,0,3,3,248,0,2,0,64,0,0, + 0,0,0,0,0,0,0,255,0,15,252,255,128,15,252,63, + 192,3,240,31,192,1,224,31,224,1,224,31,240,1,224,31, + 240,1,224,31,248,1,224,31,252,1,224,30,254,1,224,30, + 126,1,224,30,63,1,224,30,63,129,224,30,31,129,224,30, + 15,193,224,30,7,225,224,30,7,225,224,30,3,241,224,30, + 1,249,224,30,1,253,224,30,0,253,224,30,0,127,224,30, + 0,63,224,30,0,63,224,30,0,31,224,30,0,15,224,30, + 0,7,224,63,0,7,224,255,192,3,224,255,192,0,224,27, + 42,168,30,1,0,0,64,0,0,0,224,0,0,1,240,0, + 0,3,248,0,0,3,252,0,0,1,254,0,0,0,127,0, + 0,0,31,128,0,0,7,192,0,0,1,192,0,0,0,128, + 0,0,0,0,0,0,31,192,0,0,255,240,0,3,225,252, + 0,7,128,126,0,15,0,63,0,31,0,31,0,30,0,31, + 128,62,0,15,128,126,0,15,192,124,0,15,192,124,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,254,0,7,192,126,0,15,192,126,0,15,128,127,0,15, + 128,63,0,31,0,31,128,31,0,31,192,62,0,15,240,252, + 0,7,255,240,0,1,255,224,0,0,127,0,0,27,42,168, + 30,1,0,0,0,64,0,0,0,96,0,0,0,248,0,0, + 1,252,0,0,3,252,0,0,7,240,0,0,15,192,0,0, + 31,128,0,0,62,0,0,0,120,0,0,0,32,0,0,0, + 0,0,0,0,31,192,0,0,255,240,0,3,225,252,0,7, + 128,126,0,15,0,63,0,31,0,31,0,30,0,31,128,62, + 0,15,128,126,0,15,192,124,0,15,192,124,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,254, + 0,7,192,126,0,15,192,126,0,15,128,127,0,15,128,63, + 0,31,0,31,128,31,0,31,192,62,0,15,240,252,0,7, + 255,240,0,1,255,224,0,0,127,0,0,27,41,164,30,1, + 0,0,6,0,0,0,15,0,0,0,31,128,0,0,63,192, + 0,0,127,224,0,0,255,240,0,1,249,248,0,3,224,120, + 0,3,128,28,0,2,0,8,0,0,0,0,0,0,31,192, + 0,0,255,240,0,3,225,252,0,7,128,126,0,15,0,63, + 0,31,0,31,0,30,0,31,128,62,0,15,128,126,0,15, + 192,124,0,15,192,124,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,254,0,7,192,126,0,15, + 192,126,0,15,128,127,0,15,128,63,0,31,0,31,128,31, + 0,31,192,62,0,15,240,252,0,7,255,240,0,1,255,224, + 0,0,127,0,0,27,40,160,30,1,0,0,32,8,0,0, + 254,14,0,1,255,254,0,1,255,252,0,3,255,248,0,7, + 255,248,0,6,7,240,0,2,0,128,0,0,0,0,0,0, + 0,0,0,0,31,192,0,0,255,240,0,3,225,252,0,7, + 128,126,0,15,0,63,0,31,0,31,0,30,0,31,128,62, + 0,15,128,126,0,15,192,124,0,15,192,124,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,254, + 0,7,192,126,0,15,192,126,0,15,128,127,0,15,128,63, + 0,31,0,31,128,31,0,31,192,62,0,15,240,252,0,7, + 255,240,0,1,255,224,0,0,127,0,0,27,40,160,30,1, + 0,0,128,32,0,1,240,124,0,1,240,124,0,3,240,252, + 0,3,240,252,0,3,240,252,0,3,224,248,0,0,128,32, + 0,0,0,0,0,0,0,0,0,0,31,192,0,0,255,240, + 0,3,225,252,0,7,128,126,0,15,0,63,0,31,0,31, + 0,30,0,31,128,62,0,15,128,126,0,15,192,124,0,15, + 192,124,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,254,0,7,192,126,0,15,192,126,0,15, + 128,127,0,15,128,63,0,31,0,31,128,31,0,31,192,62, + 0,15,240,252,0,7,255,240,0,1,255,224,0,0,127,0, + 0,16,15,30,20,2,6,96,6,240,15,120,31,60,62,30, + 124,15,248,7,240,3,192,7,224,15,248,30,124,60,62,120, + 31,240,15,96,6,27,31,124,30,1,255,0,31,195,224,0, + 255,247,192,3,225,255,128,7,128,127,0,15,0,63,0,31, + 0,63,128,30,0,127,128,62,0,255,192,126,0,255,192,124, + 1,255,192,124,3,239,224,252,3,231,224,252,7,199,224,252, + 15,135,224,252,15,7,224,252,31,7,224,252,62,7,224,252, + 60,7,224,252,120,7,192,254,248,7,192,127,240,15,192,127, + 224,15,128,127,192,15,128,63,128,31,0,63,128,31,0,31, + 192,62,0,31,240,252,0,63,255,240,0,121,255,224,0,248, + 127,0,0,192,0,0,0,29,42,168,32,1,0,0,32,0, + 0,0,48,0,0,0,248,0,0,1,252,0,0,1,254,0, + 0,0,127,0,0,0,31,128,0,0,15,192,0,0,3,224, + 0,0,0,240,0,0,0,64,0,0,0,0,0,255,240,31, + 248,255,240,31,248,63,192,7,224,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,128,31,192,7,128,15,192,7,128,15,224,7, + 0,7,224,15,0,3,248,62,0,1,255,252,0,0,255,240, + 0,0,31,192,0,29,42,168,32,1,0,0,0,32,0,0, + 0,56,0,0,0,124,0,0,0,254,0,0,1,254,0,0, + 3,252,0,0,7,240,0,0,15,192,0,0,31,0,0,0, + 28,0,0,0,16,0,0,0,0,0,0,255,240,31,248,255, + 240,31,248,63,192,7,224,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,128,31,192,7,128,15,192,7,128,15,224,7,0,7, + 224,15,0,3,248,62,0,1,255,252,0,0,255,240,0,0, + 31,192,0,29,41,164,32,1,0,0,3,128,0,0,7,128, + 0,0,15,192,0,0,31,224,0,0,63,240,0,0,127,248, + 0,0,124,124,0,0,240,62,0,1,192,14,0,0,128,4, + 0,0,0,0,0,255,240,31,248,255,240,31,248,63,192,7, + 224,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,128,31,192,7, + 128,15,192,7,128,15,224,7,0,7,224,15,0,3,248,62, + 0,1,255,252,0,0,255,240,0,0,31,192,0,29,40,160, + 32,1,0,0,32,8,0,0,248,62,0,0,248,62,0,1, + 248,126,0,1,248,126,0,1,248,126,0,0,240,60,0,0, + 64,16,0,0,0,0,0,0,0,0,0,255,240,31,248,255, + 240,31,248,63,192,7,224,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,128,31,192,7,128,15,192,7,128,15,224,7,0,7, + 224,15,0,3,248,62,0,1,255,252,0,0,255,240,0,0, + 31,192,0,29,42,168,29,0,0,0,0,32,0,0,0,48, + 0,0,0,124,0,0,1,254,0,0,3,254,0,0,7,248, + 0,0,15,224,0,0,31,128,0,0,62,0,0,0,60,0, + 0,0,16,0,0,0,0,0,0,127,0,31,248,255,128,31, + 248,31,192,3,192,15,192,3,128,7,224,7,128,3,240,7, + 0,3,240,15,0,1,248,14,0,1,248,30,0,0,252,28, + 0,0,124,60,0,0,126,56,0,0,63,120,0,0,63,240, + 0,0,31,240,0,0,31,224,0,0,15,224,0,0,15,192, + 0,0,15,192,0,0,15,192,0,0,15,192,0,0,15,192, + 0,0,15,192,0,0,15,192,0,0,15,192,0,0,15,192, + 0,0,15,192,0,0,31,224,0,0,255,252,0,0,255,252, + 0,24,30,90,27,1,0,255,248,0,255,248,0,63,192,0, + 31,128,0,31,128,0,31,128,0,31,255,128,31,255,240,31, + 131,248,31,128,252,31,128,126,31,128,127,31,128,63,31,128, + 63,31,128,63,31,128,63,31,128,63,31,128,62,31,128,126, + 31,128,252,31,129,248,31,191,240,31,191,128,31,128,0,31, + 128,0,31,128,0,31,128,0,63,192,0,255,248,0,255,248, + 0,28,36,144,31,1,0,0,7,240,0,0,63,252,0,0, + 255,254,0,1,240,255,0,3,224,63,128,7,192,31,128,7, + 192,31,192,15,128,15,192,15,128,15,192,31,128,15,192,31, + 128,15,192,31,128,31,128,31,128,63,0,31,128,126,0,31, + 129,248,0,31,135,224,0,31,135,128,0,31,143,128,0,31, + 143,128,0,31,143,192,0,31,143,224,0,31,135,248,0,31, + 135,254,0,31,131,255,128,31,128,255,192,31,128,63,224,31, + 128,31,240,31,128,7,240,31,140,3,240,31,142,1,240,31, + 142,1,240,31,142,1,240,31,143,1,224,63,143,195,192,255, + 143,255,128,255,129,254,0,23,35,105,24,1,0,1,192,0, + 15,192,0,15,224,0,7,240,0,3,240,0,1,248,0,0, + 248,0,0,124,0,0,60,0,0,30,0,0,12,0,0,0, + 0,0,0,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,23,35,105,24,1,0,0,15,0,0, + 15,192,0,31,224,0,31,128,0,63,0,0,62,0,0,124, + 0,0,120,0,0,240,0,0,224,0,0,192,0,0,0,0, + 0,0,0,0,255,0,15,255,128,31,15,192,62,7,224,126, + 7,224,252,7,224,96,7,224,0,7,224,0,31,224,1,255, + 224,7,255,224,31,231,224,63,135,224,63,7,224,126,7,224, + 126,7,224,126,7,224,126,31,228,127,63,252,63,247,254,63, + 231,240,15,131,128,23,35,105,24,1,0,0,120,0,0,252, + 0,0,252,0,1,254,0,3,255,0,3,255,0,7,207,128, + 15,135,192,15,1,192,28,0,224,8,0,64,0,0,0,0, + 0,0,0,255,0,15,255,128,31,15,192,62,7,224,126,7, + 224,252,7,224,96,7,224,0,7,224,0,31,224,1,255,224, + 7,255,224,31,231,224,63,135,224,63,7,224,126,7,224,126, + 7,224,126,7,224,126,31,228,127,63,252,63,247,254,63,231, + 240,15,131,128,23,33,99,24,1,0,3,192,48,7,240,48, + 15,252,96,31,255,224,31,255,192,56,127,128,48,15,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,0,15,255, + 128,31,15,192,62,7,224,126,7,224,252,7,224,96,7,224, + 0,7,224,0,31,224,1,255,224,7,255,224,31,231,224,63, + 135,224,63,7,224,126,7,224,126,7,224,126,7,224,126,31, + 228,127,63,252,63,247,254,63,231,240,15,131,128,23,33,99, + 24,1,0,7,1,192,15,131,224,31,135,224,31,135,224,31, + 135,224,31,7,192,14,3,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,23,34,102,24,1,0,0,60,0,0, + 254,0,1,239,0,3,207,0,3,207,0,3,207,0,3,238, + 0,1,252,0,0,248,0,0,0,0,0,0,0,0,0,0, + 0,255,0,15,255,128,31,15,192,62,7,224,126,7,224,252, + 7,224,96,7,224,0,7,224,0,31,224,1,255,224,7,255, + 224,31,231,224,63,135,224,63,7,224,126,7,224,126,7,224, + 126,7,224,126,31,228,127,63,252,63,247,254,63,231,240,15, + 131,128,33,22,110,35,1,0,0,63,3,224,0,1,255,159, + 248,0,7,255,252,62,0,15,135,248,30,0,31,3,240,31, + 0,63,3,240,15,0,127,3,224,15,128,120,3,224,15,128, + 0,3,224,15,128,0,127,255,255,128,3,255,255,254,0,15, + 195,224,0,0,63,3,224,0,0,126,3,224,0,0,124,3, + 240,0,0,252,3,240,1,0,252,7,248,7,0,254,31,252, + 31,0,255,252,255,254,0,127,248,127,252,0,127,224,63,240, + 0,31,128,15,192,0,20,32,96,22,2,246,0,127,128,1, + 255,240,7,135,224,15,3,224,30,1,224,62,0,192,124,0, + 192,124,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,0,127,0,96,127, + 129,224,63,255,192,31,255,128,15,254,0,3,252,0,0,240, + 0,0,224,0,0,252,0,1,254,0,0,254,0,0,126,0, + 0,124,0,0,252,0,3,240,0,1,128,0,19,35,105,23, + 2,0,3,128,0,15,192,0,31,224,0,7,224,0,3,240, + 0,1,240,0,0,248,0,0,120,0,0,60,0,0,28,0, + 0,8,0,0,0,0,0,0,0,0,252,0,7,255,0,15, + 31,128,30,15,128,62,15,192,124,7,192,124,7,224,124,7, + 224,252,7,224,255,255,224,255,255,128,252,0,0,252,0,0, + 252,0,0,254,0,0,126,0,64,127,0,224,63,131,192,63, + 255,128,31,255,0,15,254,0,3,248,0,19,35,105,23,2, + 0,0,14,0,0,31,192,0,31,192,0,63,128,0,63,0, + 0,126,0,0,124,0,0,248,0,0,240,0,1,224,0,0, + 192,0,0,0,0,0,0,0,0,252,0,7,255,0,15,31, + 128,30,15,128,62,15,192,124,7,192,124,7,224,124,7,224, + 252,7,224,255,255,224,255,255,128,252,0,0,252,0,0,252, + 0,0,254,0,0,126,0,64,127,0,224,63,131,192,63,255, + 128,31,255,0,15,254,0,3,248,0,19,35,105,23,2,0, + 0,120,0,0,248,0,1,252,0,1,254,0,3,254,0,7, + 255,0,15,223,128,15,7,128,30,3,192,60,1,224,24,0, + 64,0,0,0,0,0,0,0,252,0,7,255,0,15,31,128, + 30,15,128,62,15,192,124,7,192,124,7,224,124,7,224,252, + 7,224,255,255,224,255,255,128,252,0,0,252,0,0,252,0, + 0,254,0,0,126,0,64,127,0,224,63,131,192,63,255,128, + 31,255,0,15,254,0,3,248,0,19,33,99,23,2,0,15, + 3,192,31,7,192,31,135,224,31,135,224,31,7,192,31,7, + 192,14,3,128,0,0,0,0,0,0,0,0,0,0,0,0, + 0,252,0,7,255,0,15,31,128,30,15,128,62,15,192,124, + 7,192,124,7,224,124,7,224,252,7,224,255,255,224,255,255, + 128,252,0,0,252,0,0,252,0,0,254,0,0,126,0,64, + 127,0,224,63,131,192,63,255,128,31,255,0,15,254,0,3, + 248,0,13,35,70,14,0,0,28,0,126,0,254,0,127,0, + 31,0,15,128,7,128,3,192,1,192,0,224,0,64,0,0, + 0,0,1,192,63,192,127,192,63,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,31,224,127,248,127,248,14,35, + 70,14,1,0,0,224,1,252,1,252,3,248,3,240,7,224, + 7,192,15,128,15,0,30,0,8,0,0,0,0,0,3,128, + 127,128,255,128,127,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,16,35,70,14,255,0, + 3,192,3,224,7,240,15,240,15,248,31,252,62,124,60,30, + 120,15,240,7,64,3,0,0,0,0,0,224,31,224,63,224, + 31,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 15,240,63,252,63,252,16,33,66,14,255,0,56,14,124,31, + 124,31,252,63,252,63,124,31,120,30,0,0,0,0,0,0, + 0,0,0,224,31,224,63,224,31,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,240,63,252,63,252,21,34, + 102,25,2,0,1,192,0,15,224,0,63,240,248,31,255,248, + 0,255,192,0,126,0,1,255,0,7,239,128,31,143,128,2, + 7,192,0,3,224,0,3,224,1,251,240,7,253,240,15,255, + 240,31,15,248,62,7,248,62,3,248,124,3,248,124,1,248, + 252,1,248,252,1,248,252,1,248,252,1,248,252,1,240,252, + 1,240,252,1,240,126,3,224,126,3,224,63,3,192,63,7, + 128,31,143,0,7,254,0,1,248,0,26,33,132,28,1,0, + 0,240,12,0,1,252,12,0,3,255,28,0,3,255,248,0, + 7,255,240,0,14,31,224,0,12,3,192,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,3,1,240,0, + 127,135,252,0,255,159,252,0,63,191,254,0,31,248,254,0, + 31,224,126,0,31,192,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,63,192,255,0,255,243,255,192, + 255,243,255,192,21,35,105,25,2,0,1,192,0,15,224,0, + 15,224,0,7,240,0,3,240,0,1,248,0,0,248,0,0, + 124,0,0,60,0,0,30,0,0,12,0,0,0,0,0,0, + 0,0,252,0,3,255,0,15,15,192,30,7,224,62,7,224, + 62,3,240,124,3,240,124,1,248,252,1,248,252,1,248,252, + 1,248,252,1,248,252,1,248,252,1,248,252,1,240,126,1, + 240,126,3,224,62,3,224,63,3,192,31,135,128,7,254,0, + 1,248,0,21,35,105,25,2,0,0,15,0,0,15,192,0, + 31,224,0,31,128,0,63,0,0,62,0,0,124,0,0,120, + 0,0,240,0,0,224,0,0,192,0,0,0,0,0,0,0, + 0,252,0,3,255,0,15,15,192,30,7,224,62,7,224,62, + 3,240,124,3,240,124,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,252,1,248,252,1,240,126,1,240, + 126,3,224,62,3,224,63,3,192,31,135,128,7,254,0,1, + 248,0,21,35,105,25,2,0,0,120,0,0,252,0,0,252, + 0,1,254,0,3,255,0,3,255,0,7,207,128,15,135,192, + 15,1,192,28,0,224,8,0,64,0,0,0,0,0,0,0, + 252,0,3,255,0,15,15,192,30,7,224,62,7,224,62,3, + 240,124,3,240,124,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,248,252,1,240,126,1,240,126, + 3,224,62,3,224,63,3,192,31,135,128,7,254,0,1,248, + 0,21,33,99,25,2,0,3,192,48,7,240,48,15,252,96, + 31,255,224,31,255,192,56,127,128,48,15,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,252,0,3,255,0,15,15, + 192,30,7,224,62,7,224,62,3,240,124,3,240,124,1,248, + 252,1,248,252,1,248,252,1,248,252,1,248,252,1,248,252, + 1,248,252,1,240,126,1,240,126,3,224,62,3,224,63,3, + 192,31,135,128,7,254,0,1,248,0,21,33,99,25,2,0, + 7,1,192,15,131,224,31,135,224,31,135,224,31,135,224,31, + 7,192,14,3,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,252,0,3,255,0,15,15,192,30,7,224,62,7,224, + 62,3,240,124,3,240,124,1,248,252,1,248,252,1,248,252, + 1,248,252,1,248,252,1,248,252,1,248,252,1,240,126,1, + 240,126,3,224,62,3,224,63,3,192,31,135,128,7,254,0, + 1,248,0,18,18,54,20,1,4,0,192,0,1,224,0,1, + 224,0,1,224,0,1,224,0,0,192,0,0,0,0,127,255, + 192,127,255,192,255,255,128,0,0,0,0,0,0,0,192,0, + 1,224,0,1,224,0,1,224,0,1,224,0,0,192,0,21, + 24,72,25,2,255,0,0,24,0,252,56,3,255,240,15,15, + 224,30,7,224,62,3,240,60,7,240,124,15,240,124,31,248, + 252,29,248,252,57,248,252,121,248,252,241,248,252,225,248,253, + 193,248,255,193,240,127,129,240,127,1,224,62,3,224,63,3, + 192,63,135,128,127,254,0,113,248,0,192,0,0,26,35,140, + 27,1,0,0,224,0,0,3,240,0,0,7,240,0,0,1, + 248,0,0,0,248,0,0,0,124,0,0,0,62,0,0,0, + 30,0,0,0,15,0,0,0,7,0,0,0,2,0,0,0, + 0,0,0,0,0,0,0,3,128,28,0,255,135,252,0,255, + 135,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,129,252,0,31,199,252,128,31, + 255,255,128,15,254,255,192,7,248,126,0,3,224,112,0,26, + 35,140,27,1,0,0,3,128,0,0,7,240,0,0,7,240, + 0,0,15,224,0,0,15,192,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,60,0,0,0,120,0,0,0,48,0, + 0,0,0,0,0,0,0,0,0,3,128,28,0,255,135,252, + 0,255,135,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,129,252,0,31,199,252, + 128,31,255,255,128,15,254,255,192,7,248,126,0,3,224,112, + 0,26,35,140,27,1,0,0,30,0,0,0,62,0,0,0, + 127,0,0,0,255,128,0,0,255,128,0,1,255,192,0,3, + 247,224,0,3,193,224,0,7,128,240,0,15,0,112,0,6, + 0,48,0,0,0,0,0,0,0,0,0,3,128,28,0,255, + 135,252,0,255,135,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,129,252,0,31, + 199,252,128,31,255,255,128,15,254,255,192,7,248,126,0,3, + 224,112,0,26,33,132,27,1,0,3,192,240,0,7,193,240, + 0,7,225,248,0,7,225,248,0,7,193,240,0,7,193,240, + 0,7,129,224,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,128,28,0,255,135,252,0,255,135,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,129,252,0,31,199,252,128,31,255,255, + 128,15,254,255,192,7,248,126,0,3,224,112,0,25,46,184, + 24,255,245,0,1,224,0,0,3,248,0,0,3,248,0,0, + 3,240,0,0,7,224,0,0,7,192,0,0,15,128,0,0, + 15,0,0,0,30,0,0,0,28,0,0,0,56,0,0,0, + 0,0,0,0,0,0,0,127,240,127,128,127,240,127,128,31, + 192,30,0,15,192,28,0,15,192,28,0,7,224,60,0,7, + 224,56,0,3,240,56,0,3,240,112,0,1,240,112,0,1, + 248,240,0,1,248,224,0,0,252,224,0,0,253,224,0,0, + 125,192,0,0,127,192,0,0,127,128,0,0,63,128,0,0, + 63,128,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,30,0,0,0,28,0,0,0,60,0,0,0, + 120,0,0,32,248,0,0,63,240,0,0,127,224,0,0,255, + 192,0,0,255,128,0,0,126,0,0,0,24,47,141,27,1, + 245,3,0,0,63,128,0,255,128,0,255,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,131,224,31,143, + 248,31,191,252,31,255,252,31,240,254,31,192,126,31,128,63, + 31,128,63,31,128,31,31,128,31,31,128,31,31,128,31,31, + 128,31,31,128,30,31,128,30,31,128,62,31,192,60,31,240, + 124,31,255,248,31,255,240,31,159,224,31,135,128,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,63,192,0,255,248,0,255,248,0,25,44, + 176,24,255,245,0,224,56,0,1,240,124,0,3,240,252,0, + 3,240,252,0,3,240,252,0,3,224,248,0,1,192,112,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 127,240,127,128,127,240,127,128,31,192,30,0,15,192,28,0, + 15,192,28,0,7,224,60,0,7,224,56,0,3,240,56,0, + 3,240,112,0,1,240,112,0,1,248,240,0,1,248,224,0, + 0,252,224,0,0,253,224,0,0,125,192,0,0,127,192,0, + 0,127,128,0,0,63,128,0,0,63,128,0,0,31,0,0, + 0,31,0,0,0,14,0,0,0,14,0,0,0,30,0,0, + 0,28,0,0,0,60,0,0,0,120,0,0,32,248,0,0, + 63,240,0,0,127,224,0,0,255,192,0,0,255,128,0,0, + 126,0,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 29 + Calculated Max Values w=22 h=46 x= 3 y=17 dx=25 dy= 0 ascent=38 len=138 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent= 0 + X Font ascent =29 descent= 0 + Max Font ascent =38 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30n[1275] U8G_SECTION(".progmem.u8g_font_gdb30n") = { + 0,74,69,232,239,29,0,0,0,0,42,57,0,38,247,29, + 0,19,20,60,21,1,17,0,48,0,1,240,0,1,240,0, + 32,240,0,112,225,128,120,227,192,126,231,224,127,255,224,31, + 255,0,3,248,0,3,248,0,31,255,0,127,255,192,254,231, + 192,124,227,192,48,225,192,0,240,128,0,240,0,1,240,0, + 0,192,0,18,18,54,20,1,4,0,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,127,255, + 192,255,255,192,255,255,128,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,192,0,10, + 15,30,13,1,247,7,0,63,128,255,192,127,192,63,192,15, + 192,15,192,15,128,15,128,15,0,31,0,30,0,60,0,120, + 0,48,0,15,3,6,17,1,11,127,254,127,252,255,252,8, + 7,7,13,3,255,62,127,255,255,255,254,124,21,46,138,23, + 1,248,0,0,56,0,0,248,0,0,240,0,1,240,0,1, + 240,0,1,224,0,3,224,0,3,224,0,3,192,0,7,192, + 0,7,128,0,15,128,0,15,128,0,15,0,0,31,0,0, + 31,0,0,30,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,120,0,0,248,0,0,248,0,0,240,0,1,240,0, + 1,224,0,3,224,0,3,224,0,3,192,0,7,192,0,7, + 192,0,7,128,0,15,128,0,15,0,0,31,0,0,31,0, + 0,30,0,0,62,0,0,62,0,0,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,192,0,0,22,29,87,24, + 1,0,0,252,0,3,255,0,7,143,192,15,7,224,30,3, + 224,62,1,240,62,1,240,124,1,248,124,1,248,124,0,248, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,124,0,248,124,0, + 248,126,0,248,62,1,240,62,1,240,31,1,224,31,3,192, + 15,135,128,3,255,0,0,252,0,19,29,87,24,3,0,0, + 16,0,0,248,0,7,248,0,63,248,0,255,248,0,225,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,15,255,0, + 127,255,224,127,255,224,20,29,87,24,1,0,0,255,0,7, + 255,192,15,143,224,63,7,224,62,3,240,126,3,240,126,3, + 240,120,3,240,0,3,240,0,7,224,0,7,224,0,15,192, + 0,15,128,0,31,128,0,31,0,0,62,0,0,124,0,0, + 248,0,0,248,0,1,240,0,3,224,32,7,192,48,15,128, + 48,15,0,48,30,0,112,63,255,240,127,255,240,255,255,240, + 127,255,240,20,29,87,24,1,0,1,254,0,7,255,128,31, + 31,192,63,15,192,62,7,224,126,7,224,60,7,224,0,7, + 224,0,7,192,0,15,192,0,31,128,0,127,0,1,254,0, + 1,255,128,2,63,192,0,15,224,0,7,224,0,3,240,0, + 3,240,0,3,240,0,3,240,0,3,240,0,3,240,64,7, + 224,96,15,224,252,31,192,63,255,128,31,254,0,3,248,0, + 21,29,87,25,2,0,0,1,128,0,15,128,0,31,128,0, + 63,128,0,63,128,0,127,128,0,255,128,0,239,128,1,239, + 128,3,207,128,3,143,128,7,143,128,7,15,128,14,15,128, + 30,15,128,28,15,128,56,15,128,56,15,128,127,255,248,255, + 255,240,255,255,224,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,31,192,1,255,240,1,255,240,20,29,87, + 24,2,0,0,0,32,31,255,240,31,255,192,31,255,192,31, + 255,128,28,0,0,28,0,0,28,0,0,60,0,0,60,0, + 0,56,0,0,59,252,0,63,255,0,63,255,128,120,31,192, + 32,15,224,0,7,224,0,7,240,0,3,240,0,3,240,0, + 3,240,0,3,240,0,3,240,0,7,224,64,7,224,224,15, + 192,252,31,128,63,254,0,7,248,0,20,29,87,24,2,0, + 0,1,128,0,31,192,0,127,0,1,252,0,3,240,0,7, + 192,0,15,128,0,31,128,0,63,0,0,62,0,0,126,0, + 0,124,126,0,125,255,128,255,255,192,255,15,224,254,7,224, + 252,7,240,252,3,240,252,3,240,252,3,240,252,3,240,124, + 3,240,126,3,224,126,3,224,62,3,192,31,7,192,15,143, + 128,7,255,0,1,248,0,21,28,84,24,2,0,127,255,240, + 127,255,248,127,255,240,127,255,224,112,1,224,224,1,224,192, + 1,192,64,3,192,0,3,128,0,7,128,0,7,0,0,15, + 0,0,15,0,0,30,0,0,30,0,0,60,0,0,60,0, + 0,124,0,0,120,0,0,248,0,0,240,0,1,240,0,1, + 240,0,3,224,0,3,224,0,7,224,0,15,192,0,6,0, + 0,20,29,87,24,2,0,0,252,0,7,255,128,15,31,192, + 30,15,192,28,7,224,60,7,224,60,7,224,60,7,224,62, + 15,192,63,143,128,31,255,0,31,254,0,15,252,0,3,255, + 0,7,255,128,15,255,192,31,31,224,62,15,240,126,7,240, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,224,126, + 3,224,126,7,192,63,15,128,31,254,0,3,248,0,20,29, + 87,24,2,255,1,252,0,7,255,0,15,31,128,30,15,192, + 62,7,224,124,7,224,124,7,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,254,3,240,126,7,240,127,15, + 240,63,255,240,31,251,224,7,227,224,0,7,224,0,7,192, + 0,7,192,0,15,128,0,31,0,0,62,0,0,252,0,3, + 248,0,15,224,0,63,128,0,56,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=41 h=49 x= 4 y=24 dx=42 dy= 0 ascent=39 len=210 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x=-7 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30r[9112] U8G_SECTION(".progmem.u8g_font_gdb30r") = { + 0,74,69,232,239,30,10,50,24,78,32,127,245,39,245,38, + 245,0,0,0,12,0,0,8,36,36,15,3,255,6,31,127, + 126,126,126,126,126,126,126,62,62,62,62,62,62,62,60,60, + 60,60,60,60,28,28,24,0,0,0,62,127,255,255,255,254, + 124,16,16,32,23,3,19,14,3,126,31,254,63,254,63,124, + 63,124,63,124,63,124,63,124,30,124,30,124,30,60,30,60, + 30,56,30,56,30,56,14,22,27,81,24,2,3,0,56,48, + 0,120,112,0,112,240,0,112,224,0,240,224,0,225,224,0, + 225,192,31,255,252,31,255,252,63,255,252,3,195,128,3,195, + 128,3,135,128,3,135,0,7,135,0,7,135,0,255,255,240, + 255,255,240,255,255,224,14,30,0,14,28,0,30,28,0,28, + 60,0,28,60,0,28,56,0,60,56,0,56,112,0,20,36, + 108,24,2,252,0,48,0,0,112,0,0,112,0,0,112,0, + 3,255,0,15,255,224,63,255,240,124,119,240,120,115,224,240, + 113,224,240,112,192,248,112,0,252,112,0,255,112,0,127,240, + 0,63,248,0,31,254,0,7,255,128,0,255,192,0,127,224, + 0,119,224,0,113,240,0,113,240,224,112,240,224,112,240,240, + 112,240,248,112,224,252,113,224,255,119,192,255,255,192,63,255, + 0,7,252,0,0,112,0,0,112,0,0,112,0,0,96,0, + 31,30,120,34,2,0,0,0,0,16,7,192,0,240,31,224, + 1,224,56,240,3,192,120,120,3,128,112,120,7,128,240,60, + 15,0,240,60,30,0,240,60,28,0,240,60,60,0,240,60, + 120,0,240,60,240,0,112,57,224,0,120,57,224,0,56,115, + 192,0,31,231,131,224,15,143,12,48,0,15,24,56,0,30, + 56,28,0,60,56,28,0,120,120,30,0,120,120,30,0,240, + 120,30,1,224,120,30,3,192,120,30,3,192,120,28,7,128, + 60,60,15,0,30,56,30,0,15,240,28,0,7,192,31,34, + 136,33,2,0,0,31,128,0,0,127,224,0,0,227,240,0, + 1,225,248,0,3,193,248,0,3,193,248,0,7,193,248,0, + 7,193,248,0,7,195,240,0,7,195,240,0,7,231,224,0, + 7,239,192,0,3,255,128,0,3,255,0,0,3,252,0,0, + 1,248,0,0,7,252,63,252,15,252,127,254,31,254,31,184, + 63,127,15,128,62,127,7,128,126,63,135,128,252,31,199,128, + 252,31,231,128,252,15,247,0,252,7,255,0,252,3,254,0, + 252,1,252,0,254,0,255,0,127,0,127,128,127,129,255,248, + 63,255,223,248,15,255,15,244,3,252,7,128,7,16,16,13, + 3,19,14,126,254,254,124,124,124,124,124,124,124,60,60,56, + 56,56,13,45,90,16,3,249,0,16,0,120,0,240,1,224, + 3,224,7,192,7,128,15,128,31,0,31,0,63,0,62,0, + 62,0,126,0,126,0,126,0,124,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,126,0,126,0,126,0,126,0,62,0,63,0,63,0, + 31,0,15,128,15,128,7,192,3,192,1,224,0,240,0,120, + 0,16,13,44,88,16,0,249,64,0,240,0,120,0,60,0, + 30,0,31,0,15,128,15,192,7,192,7,224,7,224,3,224, + 3,240,3,240,3,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 3,240,3,240,3,240,3,224,3,224,7,224,7,192,7,192, + 15,128,15,0,31,0,62,0,60,0,120,0,240,0,64,0, + 19,20,60,21,1,17,0,48,0,1,240,0,1,240,0,32, + 240,0,112,225,128,120,227,192,126,231,224,127,255,224,31,255, + 0,3,248,0,3,248,0,31,255,0,127,255,192,254,231,192, + 124,227,192,48,225,192,0,240,128,0,240,0,1,240,0,0, + 192,0,18,18,54,20,1,4,0,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,127,255,192, + 255,255,192,255,255,128,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,192,0,10,15, + 30,13,1,247,7,0,63,128,255,192,127,192,63,192,15,192, + 15,192,15,128,15,128,15,0,31,0,30,0,60,0,120,0, + 48,0,15,3,6,17,1,11,127,254,127,252,255,252,8,7, + 7,13,3,255,62,127,255,255,255,254,124,21,46,138,23,1, + 248,0,0,56,0,0,248,0,0,240,0,1,240,0,1,240, + 0,1,224,0,3,224,0,3,224,0,3,192,0,7,192,0, + 7,128,0,15,128,0,15,128,0,15,0,0,31,0,0,31, + 0,0,30,0,0,62,0,0,60,0,0,124,0,0,124,0, + 0,120,0,0,248,0,0,248,0,0,240,0,1,240,0,1, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,120, + 0,0,248,0,0,248,0,0,192,0,0,22,29,87,24,1, + 0,0,252,0,3,255,0,7,143,192,15,7,224,30,3,224, + 62,1,240,62,1,240,124,1,248,124,1,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,124,0,248,124,0,248, + 126,0,248,62,1,240,62,1,240,31,1,224,31,3,192,15, + 135,128,3,255,0,0,252,0,19,29,87,24,3,0,0,16, + 0,0,248,0,7,248,0,63,248,0,255,248,0,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,15,255,0,127, + 255,224,127,255,224,20,29,87,24,1,0,0,255,0,7,255, + 192,15,143,224,63,7,224,62,3,240,126,3,240,126,3,240, + 120,3,240,0,3,240,0,7,224,0,7,224,0,15,192,0, + 15,128,0,31,128,0,31,0,0,62,0,0,124,0,0,248, + 0,0,248,0,1,240,0,3,224,32,7,192,48,15,128,48, + 15,0,48,30,0,112,63,255,240,127,255,240,255,255,240,127, + 255,240,20,29,87,24,1,0,1,254,0,7,255,128,31,31, + 192,63,15,192,62,7,224,126,7,224,60,7,224,0,7,224, + 0,7,192,0,15,192,0,31,128,0,127,0,1,254,0,1, + 255,128,2,63,192,0,15,224,0,7,224,0,3,240,0,3, + 240,0,3,240,0,3,240,0,3,240,0,3,240,64,7,224, + 96,15,224,252,31,192,63,255,128,31,254,0,3,248,0,21, + 29,87,25,2,0,0,1,128,0,15,128,0,31,128,0,63, + 128,0,63,128,0,127,128,0,255,128,0,239,128,1,239,128, + 3,207,128,3,143,128,7,143,128,7,15,128,14,15,128,30, + 15,128,28,15,128,56,15,128,56,15,128,127,255,248,255,255, + 240,255,255,224,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,31,192,1,255,240,1,255,240,20,29,87,24, + 2,0,0,0,32,31,255,240,31,255,192,31,255,192,31,255, + 128,28,0,0,28,0,0,28,0,0,60,0,0,60,0,0, + 56,0,0,59,252,0,63,255,0,63,255,128,120,31,192,32, + 15,224,0,7,224,0,7,240,0,3,240,0,3,240,0,3, + 240,0,3,240,0,3,240,0,7,224,64,7,224,224,15,192, + 252,31,128,63,254,0,7,248,0,20,29,87,24,2,0,0, + 1,128,0,31,192,0,127,0,1,252,0,3,240,0,7,192, + 0,15,128,0,31,128,0,63,0,0,62,0,0,126,0,0, + 124,126,0,125,255,128,255,255,192,255,15,224,254,7,224,252, + 7,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 240,126,3,224,126,3,224,62,3,192,31,7,192,15,143,128, + 7,255,0,1,248,0,21,28,84,24,2,0,127,255,240,127, + 255,248,127,255,240,127,255,224,112,1,224,224,1,224,192,1, + 192,64,3,192,0,3,128,0,7,128,0,7,0,0,15,0, + 0,15,0,0,30,0,0,30,0,0,60,0,0,60,0,0, + 124,0,0,120,0,0,248,0,0,240,0,1,240,0,1,240, + 0,3,224,0,3,224,0,7,224,0,15,192,0,6,0,0, + 20,29,87,24,2,0,0,252,0,7,255,128,15,31,192,30, + 15,192,28,7,224,60,7,224,60,7,224,60,7,224,62,15, + 192,63,143,128,31,255,0,31,254,0,15,252,0,3,255,0, + 7,255,128,15,255,192,31,31,224,62,15,240,126,7,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,224,126,3, + 224,126,7,192,63,15,128,31,254,0,3,248,0,20,29,87, + 24,2,255,1,252,0,7,255,0,15,31,128,30,15,192,62, + 7,224,124,7,224,124,7,224,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,254,3,240,126,7,240,127,15,240, + 63,255,240,31,251,224,7,227,224,0,7,224,0,7,192,0, + 7,192,0,15,128,0,31,0,0,62,0,0,252,0,3,248, + 0,15,224,0,63,128,0,56,0,0,8,23,23,13,3,255, + 62,127,255,255,255,254,124,0,0,0,0,0,0,0,0,0, + 62,127,255,255,255,254,124,10,31,62,13,1,247,15,128,31, + 192,63,192,63,192,63,192,31,128,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,63, + 128,255,192,127,192,63,192,15,192,15,192,15,128,15,128,15, + 0,31,0,30,0,60,0,120,0,48,0,20,16,48,22,1, + 6,0,0,96,0,1,240,0,15,224,0,127,224,3,255,128, + 15,252,0,127,224,0,127,0,0,254,0,0,255,192,0,63, + 248,0,7,254,0,1,255,192,0,63,224,0,7,240,0,0, + 192,20,10,30,22,1,8,127,255,224,127,255,240,255,255,224, + 0,0,0,0,0,0,0,0,0,0,0,0,127,255,224,127, + 255,240,255,255,224,20,16,48,22,1,6,48,0,0,126,0, + 0,255,192,0,63,240,0,15,254,0,1,255,192,0,63,224, + 0,7,240,0,31,224,0,127,224,3,255,0,31,248,0,127, + 224,0,127,0,0,248,0,0,64,0,0,19,35,105,22,2, + 255,1,254,0,15,255,128,63,31,192,126,15,192,124,7,224, + 252,7,224,252,7,224,252,7,224,240,7,224,0,7,192,0, + 15,192,0,15,128,0,31,128,0,63,0,0,126,0,0,124, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,128,0,0,0,0,0, + 0,0,0,0,0,1,240,0,3,248,0,7,248,0,7,248, + 0,7,248,0,7,240,0,3,224,0,38,42,210,42,2,246, + 0,0,255,192,0,0,7,255,248,0,0,31,255,254,0,0, + 127,255,255,0,0,255,0,255,128,1,248,0,31,192,3,224, + 0,7,224,7,192,0,3,224,15,128,0,1,240,31,0,0, + 1,240,31,0,252,24,248,62,3,254,120,248,60,7,255,240, + 120,124,15,135,240,124,124,31,3,240,124,120,31,3,240,60, + 120,62,3,240,60,248,62,3,240,60,248,126,3,240,60,248, + 126,3,240,60,248,126,3,240,60,248,126,3,240,60,248,126, + 3,240,56,248,126,3,240,56,248,126,3,240,120,252,127,3, + 240,112,252,63,7,240,224,124,63,143,249,224,124,31,255,255, + 192,126,31,251,255,128,62,15,241,254,0,63,3,224,248,0, + 63,128,0,0,0,31,192,0,0,0,15,224,0,0,128,15, + 240,0,1,192,7,252,0,7,192,3,255,128,127,128,0,255, + 255,254,0,0,127,255,252,0,0,31,255,240,0,0,1,255, + 0,0,30,30,120,30,0,0,0,1,128,0,0,7,128,0, + 0,15,192,0,0,31,192,0,0,31,224,0,0,31,224,0, + 0,63,224,0,0,63,240,0,0,59,240,0,0,121,240,0, + 0,121,248,0,0,113,248,0,0,240,252,0,0,240,252,0, + 0,224,252,0,1,224,126,0,1,224,126,0,1,192,126,0, + 3,255,255,0,3,255,255,0,3,128,31,0,7,128,31,128, + 7,0,31,128,7,0,15,192,15,0,15,192,14,0,15,192, + 14,0,7,224,30,0,7,224,255,192,63,252,255,192,63,252, + 26,30,120,29,0,0,3,255,128,0,255,255,240,0,127,193, + 252,0,15,192,126,0,15,192,127,0,15,192,63,0,15,192, + 63,0,15,192,63,0,15,192,63,0,15,192,62,0,15,192, + 126,0,15,192,252,0,15,195,248,0,15,255,224,0,15,255, + 252,0,15,192,254,0,15,192,63,0,15,192,31,128,15,192, + 31,128,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,128,15,192,31,128,15,192, + 63,0,31,192,254,0,127,255,252,0,127,255,224,0,24,30, + 90,27,1,0,0,31,224,0,255,252,1,255,254,7,224,254, + 15,128,126,31,128,60,31,0,28,62,0,0,62,0,0,126, + 0,0,124,0,0,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 126,0,0,126,0,0,127,0,0,63,128,2,63,192,15,31, + 240,62,15,255,248,7,255,240,1,255,192,0,127,0,29,30, + 120,31,0,0,3,255,192,0,255,255,248,0,127,192,254,0, + 143,192,63,128,15,192,31,192,15,192,15,192,15,192,7,224, + 15,192,7,240,15,192,3,240,15,192,3,240,15,192,3,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,240,15,192,3,240,15,192,3,240,15,192,7,224, + 15,192,7,224,15,192,15,192,15,192,31,128,15,192,63,0, + 31,224,254,0,127,255,248,0,127,255,192,0,23,30,90,25, + 1,0,255,255,248,255,255,252,63,128,56,31,128,56,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,224,31,255,224,31, + 128,192,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,6,31,128,6,31,128,14, + 31,128,14,63,192,30,255,255,254,255,255,252,22,30,90,24, + 1,0,255,255,248,255,255,252,63,128,60,31,128,28,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,192,31,255,224,31, + 129,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,63,192,0,255,248,0,255,248,0,27,30,120,29, + 1,0,0,15,248,0,0,127,255,128,1,240,127,128,3,192, + 63,0,7,128,15,0,15,0,14,0,31,0,0,0,62,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,124,0, + 0,0,252,0,0,0,252,0,0,0,252,1,255,224,252,1, + 255,224,252,0,127,192,252,0,31,128,252,0,31,128,254,0, + 31,128,126,0,31,128,127,0,31,128,127,0,31,128,63,128, + 31,128,63,192,31,128,31,240,63,0,15,255,254,0,7,255, + 252,0,1,255,240,0,0,63,128,0,30,30,120,33,1,0, + 255,240,63,252,255,240,63,252,63,192,15,240,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,255,255,224,31,255,255,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,63,192,15,240, + 255,240,63,252,255,240,63,252,12,30,60,16,2,0,255,240, + 255,240,63,192,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,21,40,120,16,249,246, + 0,255,248,0,255,248,0,31,224,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,192,0,15,192, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,128,0,15,128, + 0,15,128,0,31,0,24,30,0,62,62,0,127,248,0,255, + 240,0,127,224,0,31,128,0,29,30,120,30,1,0,255,240, + 255,224,255,240,255,224,63,192,31,0,31,128,62,0,31,128, + 124,0,31,128,248,0,31,129,240,0,31,129,224,0,31,131, + 192,0,31,135,128,0,31,143,0,0,31,159,0,0,31,190, + 0,0,31,188,0,0,31,252,0,0,31,254,0,0,31,191, + 0,0,31,159,128,0,31,143,192,0,31,135,224,0,31,135, + 240,0,31,131,248,0,31,129,252,0,31,128,254,0,31,128, + 126,0,31,128,127,0,31,128,63,192,63,192,31,240,255,240, + 15,248,255,240,7,128,23,30,90,24,1,0,255,240,0,255, + 240,0,63,192,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,4,31,128,6,31,128,14,31,128,30,63,192,60, + 255,255,252,255,255,252,38,30,150,41,1,0,255,128,0,15, + 248,255,192,0,15,248,15,192,0,31,192,15,224,0,31,192, + 15,224,0,31,192,15,240,0,63,192,15,240,0,63,192,15, + 248,0,127,192,15,248,0,119,192,14,252,0,247,192,14,252, + 0,247,192,14,124,1,231,192,14,126,1,231,192,14,62,1, + 199,192,14,63,3,199,192,14,31,3,135,192,14,31,135,135, + 192,14,31,135,135,192,14,15,143,7,192,14,15,207,7,192, + 30,7,222,7,192,30,7,254,7,192,30,3,252,7,192,30, + 3,252,7,192,30,3,248,7,192,30,1,248,7,224,30,1, + 248,7,224,31,0,240,15,224,255,192,240,63,252,255,192,96, + 63,252,30,30,120,32,1,0,255,0,15,252,255,128,15,252, + 63,192,3,240,31,192,1,224,31,224,1,224,31,240,1,224, + 31,240,1,224,31,248,1,224,31,252,1,224,30,254,1,224, + 30,126,1,224,30,63,1,224,30,63,129,224,30,31,129,224, + 30,15,193,224,30,7,225,224,30,7,225,224,30,3,241,224, + 30,1,249,224,30,1,253,224,30,0,253,224,30,0,127,224, + 30,0,63,224,30,0,63,224,30,0,31,224,30,0,15,224, + 30,0,7,224,63,0,7,224,255,192,3,224,255,192,0,224, + 27,30,120,30,1,0,0,31,192,0,0,255,240,0,3,225, + 252,0,7,128,126,0,15,0,63,0,31,0,31,0,30,0, + 31,128,62,0,15,128,126,0,15,192,124,0,15,192,124,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,254,0,7,192,126,0,15,192,126,0,15,128,127,0, + 15,128,63,0,31,0,31,128,31,0,31,192,62,0,15,240, + 252,0,7,255,240,0,1,255,224,0,0,127,0,0,25,30, + 120,27,0,0,3,255,192,0,255,255,248,0,127,193,252,0, + 143,192,126,0,15,192,63,0,15,192,63,0,15,192,31,128, + 15,192,31,128,15,192,31,128,15,192,31,128,15,192,31,128, + 15,192,31,0,15,192,63,0,15,192,62,0,15,192,126,0, + 15,208,252,0,15,223,240,0,15,207,192,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 31,224,0,0,127,252,0,0,127,252,0,0,32,38,152,30, + 1,248,0,31,192,0,0,255,240,0,3,225,252,0,7,128, + 126,0,15,0,63,0,31,0,31,0,30,0,31,128,62,0, + 15,128,126,0,15,192,124,0,15,192,124,0,7,192,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,254,0, + 7,192,126,0,15,192,126,0,15,128,127,0,15,128,63,0, + 31,0,31,128,31,0,31,192,62,0,15,240,252,0,7,255, + 248,0,1,255,224,0,0,127,240,0,0,1,252,0,0,0, + 254,2,0,0,63,135,0,0,31,255,0,0,15,254,0,0, + 3,252,0,0,1,252,0,0,0,120,29,30,120,29,0,0, + 7,255,128,0,255,255,240,0,127,193,252,0,143,192,126,0, + 15,192,126,0,15,192,63,0,15,192,63,0,15,192,63,0, + 15,192,63,0,15,192,63,0,15,192,126,0,15,192,126,0, + 15,192,252,0,15,255,248,0,15,255,240,0,15,255,192,0, + 15,199,192,0,15,195,224,0,15,193,240,0,15,193,240,0, + 15,192,248,0,15,192,252,0,15,192,126,0,15,192,126,0, + 15,192,63,0,15,192,63,128,15,192,31,192,31,224,31,248, + 127,248,15,248,127,248,15,128,20,30,90,25,3,0,1,255, + 0,15,255,192,30,15,224,60,7,192,120,3,192,248,1,128, + 248,0,0,252,0,0,254,0,0,255,0,0,127,192,0,127, + 240,0,63,252,0,31,255,0,7,255,128,1,255,192,0,127, + 224,0,31,224,0,7,240,0,3,240,0,1,240,192,1,240, + 224,1,240,224,1,224,240,3,224,248,3,192,254,15,128,255, + 255,0,127,254,0,15,240,0,27,30,120,28,0,0,127,255, + 255,224,127,255,255,224,112,31,128,224,112,31,128,224,96,31, + 128,224,96,31,128,224,224,31,128,96,64,31,128,96,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,63,192,0,1,255, + 248,0,1,255,248,0,29,30,120,32,1,0,255,240,31,248, + 255,240,31,248,63,192,7,224,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,128,31,192,7,128,15,192,7,128,15,224,7,0, + 7,224,15,0,3,248,62,0,1,255,252,0,0,255,240,0, + 0,31,192,0,31,30,120,32,0,0,255,240,7,254,255,240, + 7,254,31,128,0,240,15,192,0,224,15,192,0,224,15,192, + 1,224,7,224,1,192,7,224,3,192,3,240,3,192,3,240, + 3,128,3,240,7,128,1,248,7,128,1,248,7,0,0,248, + 15,0,0,252,14,0,0,252,14,0,0,126,30,0,0,126, + 28,0,0,62,28,0,0,63,60,0,0,63,56,0,0,31, + 248,0,0,31,240,0,0,15,240,0,0,15,240,0,0,15, + 224,0,0,7,224,0,0,7,224,0,0,3,192,0,0,3, + 0,0,41,30,180,41,0,0,255,240,12,3,255,128,255,240, + 30,3,255,128,31,128,30,0,124,0,15,128,30,0,56,0, + 15,128,63,0,120,0,15,128,63,0,120,0,15,192,63,128, + 112,0,7,192,127,128,112,0,7,192,127,128,112,0,7,192, + 127,192,240,0,7,224,247,192,224,0,3,224,231,224,224,0, + 3,224,227,224,224,0,3,225,227,225,224,0,3,241,195,241, + 224,0,3,241,193,241,192,0,1,243,193,241,192,0,1,243, + 128,249,192,0,1,251,128,251,192,0,1,255,128,255,192,0, + 0,255,0,127,128,0,0,255,0,127,128,0,0,254,0,127, + 128,0,0,254,0,63,128,0,0,126,0,63,0,0,0,124, + 0,31,0,0,0,124,0,31,0,0,0,124,0,31,0,0, + 0,120,0,14,0,0,0,48,0,12,0,0,29,30,120,30, + 1,0,255,240,127,240,255,240,127,240,63,192,31,128,31,192, + 15,0,15,192,30,0,7,224,60,0,7,240,60,0,3,240, + 120,0,1,248,240,0,1,252,240,0,0,255,224,0,0,127, + 192,0,0,127,192,0,0,63,128,0,0,31,128,0,0,31, + 192,0,0,63,224,0,0,127,224,0,0,127,240,0,0,243, + 248,0,1,241,248,0,1,225,252,0,3,192,254,0,7,192, + 126,0,7,128,63,0,15,0,63,128,31,0,31,192,63,0, + 63,224,255,192,255,248,255,192,255,248,29,30,120,29,0,0, + 127,0,31,248,255,128,31,248,31,192,3,192,15,192,3,128, + 7,224,7,128,3,240,7,0,3,240,15,0,1,248,14,0, + 1,248,30,0,0,252,28,0,0,124,60,0,0,126,56,0, + 0,63,120,0,0,63,240,0,0,31,240,0,0,31,224,0, + 0,15,224,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,31,224,0, + 0,255,252,0,0,255,252,0,23,30,90,26,1,0,63,255, + 254,63,255,254,60,0,254,56,1,252,56,1,248,48,3,248, + 48,7,240,64,7,240,0,15,224,0,15,192,0,31,192,0, + 63,128,0,63,128,0,127,0,0,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,248,0,7,240,0,15,224,0, + 15,224,4,31,192,6,31,192,6,63,128,14,127,0,14,127, + 0,30,255,255,254,127,255,254,12,45,90,16,3,248,255,240, + 255,240,255,240,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,255,240,255,240,255,240,21,46,138,23,1,248,224,0, + 0,248,0,0,120,0,0,120,0,0,124,0,0,60,0,0, + 60,0,0,62,0,0,30,0,0,31,0,0,15,0,0,15, + 0,0,15,128,0,7,128,0,7,128,0,7,192,0,3,192, + 0,3,192,0,3,224,0,1,224,0,1,240,0,0,240,0, + 0,240,0,0,248,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,60,0,0,62,0,0,30,0,0,31,0,0,15, + 0,0,15,0,0,15,128,0,7,128,0,7,128,0,7,192, + 0,3,192,0,3,192,0,1,224,0,1,224,0,1,240,0, + 0,240,0,0,240,0,0,56,12,45,90,16,1,248,255,240, + 255,240,255,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,255,240,255,240,255,240,19,23,69,24,2,13,0,32, + 0,0,112,0,0,240,0,1,240,0,1,248,0,1,248,0, + 3,188,0,3,188,0,7,60,0,7,30,0,6,30,0,14, + 14,0,14,15,0,12,15,0,28,7,128,28,7,128,24,3, + 128,56,3,192,48,3,192,112,1,224,112,1,224,96,0,224, + 192,0,192,21,3,9,23,1,250,127,255,248,127,255,248,255, + 255,240,11,11,22,15,0,24,60,0,252,0,254,0,126,0, + 63,0,31,0,15,128,7,128,3,192,1,192,0,224,23,22, + 66,24,1,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,24,36,108,26,0,0,3,0,0,63, + 128,0,255,128,0,127,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,131,224,31,143,248,31,191,252,31, + 255,252,31,240,254,31,192,126,31,128,63,31,128,63,31,128, + 31,31,128,31,31,128,31,31,128,31,31,128,31,31,128,30, + 31,128,30,31,128,60,31,128,56,31,240,248,31,255,240,15, + 255,192,3,255,128,0,126,0,20,22,66,22,1,0,0,127, + 128,1,255,240,7,135,224,15,3,224,30,1,224,62,0,192, + 124,0,192,124,0,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,0,254,0,0,126,0,32,127,0, + 112,63,193,224,63,255,192,31,255,128,7,255,0,1,252,0, + 25,36,144,27,2,0,0,0,56,0,0,15,248,0,0,15, + 248,0,0,3,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,249, + 248,0,7,255,248,0,15,255,248,0,31,135,248,0,63,3, + 248,0,62,1,248,0,126,1,248,0,124,1,248,0,252,1, + 248,0,252,1,248,0,252,1,248,0,252,1,248,0,252,1, + 248,0,252,1,248,0,254,1,248,0,126,1,248,0,127,3, + 248,0,127,135,253,0,63,255,255,128,31,253,254,0,15,248, + 252,0,3,224,224,0,19,22,66,23,2,0,0,252,0,7, + 255,0,15,31,128,30,15,128,62,15,192,124,7,192,124,7, + 224,124,7,224,252,7,224,255,255,224,255,255,128,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,64,127,0,224,63, + 131,192,63,255,128,31,255,0,15,254,0,3,248,0,20,37, + 111,16,1,0,0,15,128,0,63,224,0,255,240,1,255,224, + 3,227,224,7,193,192,7,193,0,15,128,0,15,128,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,127,255,0,255,254,0,31,132,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,63,224,0,255,252,0, + 255,252,0,25,33,132,25,0,245,0,126,1,128,3,255,223, + 128,7,135,255,0,15,3,254,0,30,1,240,0,30,0,248, + 0,62,0,248,0,62,0,248,0,62,0,248,0,62,0,248, + 0,63,0,240,0,31,129,224,0,15,195,192,0,7,255,128, + 0,1,254,0,0,3,224,0,0,7,192,0,0,15,192,0, + 0,31,254,0,0,31,255,240,0,15,255,252,0,7,255,254, + 0,15,159,255,0,62,0,127,0,124,0,63,0,252,0,31, + 0,252,0,30,0,254,0,30,0,255,0,60,0,127,192,248, + 0,63,255,240,0,15,255,192,0,1,254,0,0,26,36,144, + 28,1,0,1,128,0,0,63,128,0,0,255,128,0,0,255, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,129,240,0,31, + 143,252,0,31,159,252,0,31,255,254,0,31,248,254,0,31, + 224,126,0,31,192,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,63,192,255,0,255,243,255,192,255, + 243,255,192,12,32,64,14,1,0,7,128,15,192,31,192,31, + 192,31,128,15,0,0,0,0,0,0,0,0,0,3,128,127, + 128,255,128,127,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,63,192,255,240,255,240,17,43,129,14,250,245,0, + 15,0,0,31,128,0,63,128,0,63,128,0,63,0,0,30, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128, + 0,127,128,0,255,128,0,127,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,0,0,31,0,0,62,0,16,62, + 0,60,124,0,127,248,0,255,224,0,255,192,0,63,0,0, + 26,36,144,26,1,0,1,128,0,0,63,128,0,0,255,128, + 0,0,255,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,129, + 255,128,31,129,255,128,31,128,252,0,31,128,248,0,31,131, + 224,0,31,135,192,0,31,143,128,0,31,158,0,0,31,188, + 0,0,31,252,0,0,31,190,0,0,31,191,0,0,31,159, + 128,0,31,143,192,0,31,135,224,0,31,135,240,0,31,131, + 248,0,31,129,252,0,31,128,252,0,63,128,255,192,255,240, + 127,192,255,240,62,0,12,36,72,14,1,0,1,128,63,128, + 255,128,255,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,192, + 255,240,255,240,39,22,110,41,1,0,3,3,224,31,128,127, + 143,248,127,192,255,159,249,255,224,127,255,255,255,240,31,241, + 255,135,240,31,224,255,3,240,31,128,252,3,240,31,128,252, + 3,240,31,128,252,3,240,31,128,252,3,240,31,128,252,3, + 240,31,128,252,3,240,31,128,252,3,240,31,128,252,3,240, + 31,128,252,3,240,31,128,252,3,240,31,128,252,3,240,31, + 128,252,3,240,31,128,252,3,240,63,128,252,3,248,255,247, + 255,159,254,255,247,255,159,254,26,22,88,28,1,0,3,1, + 240,0,127,135,252,0,255,159,252,0,63,191,254,0,31,248, + 254,0,31,224,126,0,31,192,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,63,192,255,0,255,243, + 255,192,255,243,255,192,21,22,66,25,2,0,0,252,0,3, + 255,0,15,15,192,30,7,224,62,7,224,62,3,240,124,3, + 240,124,1,248,252,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,240,126,1,240,126,3,224,62, + 3,224,63,3,192,31,135,128,7,254,0,1,248,0,24,33, + 99,27,1,245,3,3,224,127,143,248,255,159,252,63,255,252, + 31,240,254,31,192,126,31,128,63,31,128,63,31,128,31,31, + 128,31,31,128,31,31,128,31,31,128,31,31,128,30,31,128, + 30,31,128,62,31,192,60,31,240,124,31,255,248,31,255,240, + 31,159,224,31,135,128,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,63,192, + 0,255,248,0,255,248,0,24,33,99,26,2,245,0,124,8, + 1,255,28,7,255,248,15,135,248,30,3,248,62,1,248,124, + 1,248,124,1,248,252,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,254,1,248,126,1,248,127,3,248, + 127,143,248,63,255,248,31,253,248,15,249,248,3,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,3,248,0,31,255,0,31,255, + 20,22,66,21,1,0,3,7,192,127,143,240,255,191,240,63, + 255,224,31,241,224,31,224,224,31,192,224,31,128,192,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 192,0,255,248,0,255,248,0,16,22,44,20,2,0,7,248, + 31,254,60,62,120,30,248,14,248,12,252,0,255,0,127,192, + 127,240,63,248,15,254,3,254,0,255,128,127,192,63,224,31, + 224,31,240,30,248,60,255,248,63,224,18,30,90,18,255,0, + 0,192,0,1,192,0,7,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,63,255,192,255,255,128,15,193, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,128,15,227,192,15,255, + 128,7,255,0,3,252,0,1,240,0,26,22,88,27,1,0, + 3,128,28,0,255,135,252,0,255,135,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,129,252,0,31,199,252,128,31,255,255,128,15,254,255,192, + 7,248,126,0,3,224,112,0,24,22,66,24,0,0,255,224, + 255,255,224,255,63,128,60,31,128,60,31,128,56,15,192,120, + 15,192,112,7,192,112,7,224,240,7,224,224,3,241,224,3, + 241,192,1,249,192,1,251,128,0,255,128,0,255,128,0,127, + 0,0,127,0,0,126,0,0,62,0,0,60,0,0,24,0, + 34,22,110,34,0,0,255,224,96,63,192,255,224,112,63,192, + 63,0,240,7,0,31,0,248,15,0,31,128,248,14,0,15, + 129,252,14,0,15,129,252,30,0,15,195,252,28,0,7,195, + 254,28,0,7,195,190,28,0,7,231,63,60,0,3,231,31, + 56,0,3,239,31,184,0,3,254,31,248,0,1,254,15,240, + 0,1,252,15,240,0,1,252,7,240,0,0,252,7,224,0, + 0,248,3,224,0,0,248,3,224,0,0,112,1,192,0,0, + 96,1,128,0,25,22,88,25,0,0,127,241,255,0,127,241, + 255,0,31,192,124,0,15,224,112,0,7,224,224,0,7,241, + 224,0,3,251,192,0,1,255,128,0,0,255,0,0,0,254, + 0,0,0,127,0,0,0,127,0,0,0,127,128,0,0,255, + 192,0,1,207,224,0,3,199,224,0,7,131,240,0,7,3, + 248,0,14,1,252,0,30,1,254,0,255,135,255,128,255,135, + 255,128,25,33,132,24,255,245,127,240,127,128,127,240,127,128, + 31,192,30,0,15,192,28,0,15,192,28,0,7,224,60,0, + 7,224,56,0,3,240,56,0,3,240,112,0,1,240,112,0, + 1,248,240,0,1,248,224,0,0,252,224,0,0,253,224,0, + 0,125,192,0,0,127,192,0,0,127,128,0,0,63,128,0, + 0,63,128,0,0,31,0,0,0,31,0,0,0,14,0,0, + 0,14,0,0,0,30,0,0,0,28,0,0,0,60,0,0, + 0,120,0,0,32,248,0,0,63,240,0,0,127,224,0,0, + 255,192,0,0,255,128,0,0,126,0,0,0,20,22,66,22, + 1,0,63,255,240,63,255,240,56,15,224,56,15,192,48,31, + 192,48,31,128,32,63,0,0,127,0,0,126,0,0,252,0, + 1,252,0,1,248,0,3,240,0,7,240,0,7,224,0,15, + 224,48,31,192,48,31,128,112,63,128,112,127,0,240,127,255, + 240,255,255,224,14,45,90,17,2,249,0,8,0,60,0,248, + 1,240,3,224,7,224,7,192,15,192,15,192,15,192,15,192, + 15,192,15,224,7,224,7,224,7,224,7,224,7,224,7,192, + 15,192,15,128,63,0,254,0,255,128,31,192,7,192,7,224, + 7,224,7,224,7,224,7,224,7,224,15,224,15,192,15,192, + 15,192,15,192,15,192,15,192,7,192,7,224,3,240,0,248, + 0,124,0,8,4,49,49,11,4,246,48,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,192,14,44,88,17,1, + 249,64,0,248,0,124,0,63,0,31,128,15,128,15,192,15, + 192,15,192,15,192,15,192,15,192,31,192,31,128,31,128,31, + 128,31,128,31,128,31,128,15,192,15,252,7,252,1,248,7, + 224,15,192,15,128,31,128,31,128,31,128,31,128,31,128,31, + 192,15,192,15,192,15,192,15,192,15,192,15,128,31,128,31, + 0,62,0,124,0,240,0,64,0,21,8,24,23,1,11,7, + 128,8,15,224,24,31,240,16,63,252,48,49,255,224,96,127, + 192,64,31,128,192,15,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=14 h=17 x= 2 y= 9 dx=14 dy= 0 ascent=15 len=30 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =10 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =15 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10[3670] U8G_SECTION(".progmem.u8g_font_gdr10") = { + 0,25,24,247,250,10,2,30,4,177,32,255,252,15,251,13, + 252,0,0,0,4,0,0,2,12,12,5,1,0,64,192,64, + 64,64,64,64,64,64,0,64,64,5,5,5,7,1,7,216, + 216,88,72,72,7,9,9,8,1,1,20,36,126,40,72,252, + 80,80,144,7,12,12,8,0,255,16,56,84,80,112,56,30, + 18,146,212,120,16,10,10,20,12,1,0,96,128,145,0,146, + 0,150,0,164,0,105,128,18,64,50,64,34,64,65,128,10, + 12,24,11,1,0,28,0,36,0,36,0,36,0,40,0,51, + 192,81,0,153,0,141,0,134,0,135,0,121,192,2,5,5, + 4,1,7,192,192,64,64,64,3,16,16,5,1,253,32,64, + 64,128,128,128,128,128,128,128,128,128,128,64,64,32,3,16, + 16,5,1,253,128,64,64,32,32,32,32,32,32,32,32,32, + 32,64,64,128,6,7,7,8,1,6,32,168,236,48,252,164, + 32,6,6,6,7,1,2,32,32,32,252,32,32,2,4,4, + 4,1,253,192,64,64,128,4,1,1,6,1,4,240,1,2, + 2,4,2,0,128,128,8,16,16,8,0,253,3,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,10,10,8, + 1,0,56,72,132,132,132,132,132,132,72,112,5,10,10,8, + 2,0,32,224,32,32,32,32,32,32,32,248,5,10,10,8, + 2,0,56,200,136,8,16,32,32,64,136,248,6,10,10,8, + 1,0,112,136,136,16,48,8,4,4,140,120,6,10,10,8, + 1,0,8,24,40,40,72,136,252,8,8,60,6,10,10,8, + 1,0,124,64,64,120,140,4,4,4,132,120,6,10,10,8, + 1,0,24,32,64,128,248,132,132,132,72,56,6,10,10,8, + 1,0,252,132,8,8,8,16,16,32,32,64,6,10,10,8, + 1,0,120,196,196,200,56,204,132,132,132,120,6,10,10,8, + 1,0,56,200,132,132,132,124,4,8,16,96,1,8,8,4, + 2,0,128,128,0,0,0,0,128,128,2,11,11,4,1,253, + 64,64,0,0,0,0,0,192,64,64,128,6,5,5,7,1, + 2,12,112,128,112,12,6,3,3,7,1,3,252,0,252,6, + 5,5,7,1,2,192,56,12,112,128,6,12,12,7,1,0, + 56,68,132,4,4,8,16,32,32,32,32,32,12,14,28,14, + 1,253,15,128,16,64,96,32,71,144,136,144,144,144,144,144, + 144,144,144,144,137,160,78,192,96,0,48,96,15,128,10,10, + 20,10,0,0,4,0,12,0,20,0,18,0,18,0,30,0, + 33,0,33,0,65,128,227,192,7,10,10,9,1,0,248,68, + 68,68,124,70,66,66,66,252,7,10,10,9,1,0,62,66, + 128,128,128,128,128,128,66,60,8,10,10,10,1,0,252,70, + 65,65,65,65,65,66,66,252,7,10,10,8,1,0,252,68, + 64,64,124,64,64,64,66,254,7,10,10,8,1,0,254,68, + 64,64,120,64,64,64,64,224,9,10,20,10,1,0,30,0, + 99,0,128,0,128,0,128,0,135,128,129,0,129,0,97,0, + 62,0,9,10,20,11,1,0,227,128,65,0,65,0,65,0, + 127,0,65,0,65,0,65,0,65,0,227,128,3,10,10,5, + 1,0,224,64,64,64,64,64,64,64,64,224,6,13,13,5, + 254,253,60,8,8,8,8,8,8,8,8,8,8,16,224,9, + 10,20,10,1,0,231,0,68,0,72,0,80,0,96,0,80, + 0,88,0,76,0,70,0,227,128,7,10,10,8,1,0,224, + 64,64,64,64,64,64,64,66,254,12,10,20,14,1,0,192, + 112,96,96,96,224,112,224,81,96,89,32,74,32,78,32,68, + 32,228,240,9,10,20,11,1,0,195,128,97,0,97,0,81, + 0,73,0,77,0,69,0,67,0,67,0,225,0,8,10,10, + 10,1,0,60,66,129,129,129,129,129,130,66,60,7,10,10, + 9,1,0,252,70,66,66,70,120,64,64,64,224,10,12,24, + 10,1,254,60,0,66,0,129,0,129,0,129,0,129,0,129, + 0,130,0,66,0,60,0,6,128,3,192,9,10,20,10,1, + 0,252,0,70,0,66,0,66,0,68,0,120,0,76,0,68, + 0,70,0,227,128,6,10,10,8,1,0,120,140,128,192,112, + 8,4,132,132,248,9,10,20,9,0,0,255,128,136,128,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,28,0,9, + 10,20,11,1,0,227,128,65,0,65,0,65,0,65,0,65, + 0,65,0,65,0,34,0,60,0,11,10,20,11,0,0,241, + 224,32,128,32,128,49,0,17,0,25,0,10,0,10,0,14, + 0,4,0,14,10,20,14,0,0,241,28,99,8,35,16,35, + 144,36,144,52,144,20,80,24,96,24,96,24,32,10,10,20, + 10,0,0,243,192,33,0,51,0,26,0,12,0,12,0,18, + 0,49,0,33,128,243,192,9,10,20,10,1,0,195,128,97, + 0,50,0,22,0,28,0,8,0,8,0,8,0,8,0,28, + 0,8,10,10,9,0,0,127,66,70,4,8,24,16,33,97, + 255,4,16,16,5,1,253,240,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,16,16,8,0,253,192,64,64, + 32,32,48,16,16,8,8,12,4,4,6,2,3,4,16,16, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,240,7,8,8,8,1,5,16,48,56,72,72,76,132, + 134,6,1,1,8,1,254,252,4,3,3,5,0,9,192,96, + 48,7,8,8,8,1,0,28,100,4,28,100,132,140,118,8, + 13,13,9,0,0,64,192,64,64,64,78,115,65,65,65,65, + 66,60,6,8,8,7,1,0,60,72,128,128,128,128,196,120, + 8,13,13,9,1,0,6,2,2,2,2,62,66,130,130,130, + 130,70,59,6,8,8,8,1,0,56,68,132,252,128,128,68, + 120,6,13,13,5,1,0,28,40,64,64,64,240,64,64,64, + 64,64,64,240,8,12,12,8,0,252,63,70,130,130,196,56, + 96,60,195,129,194,124,8,13,13,9,1,0,64,192,64,64, + 64,78,82,98,66,66,66,66,231,3,11,11,5,1,0,64, + 192,0,64,192,64,64,64,64,64,224,5,15,15,4,254,252, + 8,24,0,8,24,8,8,8,8,8,8,8,8,16,224,8, + 13,13,9,1,0,64,192,64,64,64,78,72,80,96,80,72, + 76,231,3,13,13,5,1,0,64,192,64,64,64,64,64,64, + 64,64,64,64,224,11,8,16,12,1,0,221,192,102,64,68, + 64,68,64,68,64,68,64,68,64,238,224,8,8,8,9,1, + 0,78,210,98,66,66,66,66,231,7,8,8,9,1,0,56, + 68,130,130,130,130,68,56,7,12,12,9,1,252,92,230,66, + 66,66,66,68,120,64,64,64,224,8,12,12,9,1,252,62, + 66,130,130,130,130,70,58,2,2,2,7,6,8,8,7,1, + 0,220,104,64,64,64,64,64,224,5,8,8,7,1,0,112, + 136,128,96,24,136,136,240,5,10,10,6,1,0,64,64,248, + 64,64,64,64,64,64,120,9,8,16,9,0,0,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,61,128,8,8,8, + 8,0,0,227,98,34,36,52,20,24,8,12,8,16,12,0, + 0,226,112,102,32,38,32,39,64,41,64,57,64,24,128,16, + 128,8,8,8,9,0,0,247,34,52,24,28,36,66,231,8, + 12,12,8,0,252,231,98,34,36,52,20,24,8,8,16,160, + 192,6,8,8,8,1,0,252,136,16,48,32,64,196,252,4, + 16,16,6,1,253,48,64,64,64,96,32,32,64,224,32,32, + 96,64,64,64,32,1,17,17,4,2,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,16,16,5, + 0,253,64,32,32,32,32,32,32,56,48,32,32,32,32,32, + 32,192,8,2,2,8,0,4,57,206,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,4,0, + 0,2,13,13,5,1,251,64,64,0,0,64,64,64,64,64, + 64,64,192,192,6,10,10,8,1,0,16,28,116,144,144,144, + 144,116,56,16,7,11,11,8,1,255,60,68,68,64,64,240, + 64,64,66,134,252,4,6,6,8,2,2,144,240,144,144,240, + 144,9,10,20,8,255,0,231,128,34,0,22,0,20,0,8, + 0,62,0,8,0,8,0,8,0,28,0,1,17,17,4,2, + 253,128,128,128,128,128,128,128,128,0,128,128,128,128,128,128, + 128,128,6,12,12,8,1,0,112,152,128,96,184,140,196,100, + 24,136,200,112,5,2,2,7,1,9,136,136,10,10,20,12, + 1,0,30,0,127,128,114,128,160,64,160,64,160,64,176,64, + 94,128,97,128,30,0,4,6,6,4,0,5,96,160,96,160, + 240,240,6,8,8,8,1,0,36,72,72,144,144,72,72,36, + 7,3,3,8,0,2,254,2,2,4,1,1,6,1,4,240, + 6,6,6,6,0,6,120,132,180,180,180,120,6,1,1,8, + 1,9,252,4,4,4,6,1,6,112,144,144,224,6,8,8, + 7,1,1,32,32,32,252,32,32,64,248,4,7,7,6,1, + 5,112,144,16,32,64,144,240,4,7,7,5,0,5,112,144, + 16,48,16,144,224,3,3,3,5,2,9,96,64,128,9,12, + 24,9,0,252,195,0,65,0,65,0,65,0,65,0,65,0, + 99,0,125,128,64,0,64,0,96,0,96,0,8,12,12,10, + 1,254,63,202,138,138,202,122,10,10,10,10,10,31,1,2, + 2,2,1,5,128,128,2,4,4,4,1,252,128,192,64,128, + 4,6,6,6,0,5,96,160,32,32,32,112,4,6,6,5, + 0,5,96,144,144,144,96,240,7,8,8,8,1,0,144,72, + 108,36,54,108,72,144,9,10,20,10,1,0,193,0,66,0, + 66,0,68,0,72,0,169,0,23,0,37,0,39,128,67,128, + 8,10,10,10,1,0,193,66,68,68,72,171,21,34,37,79, + 10,11,22,10,0,0,112,0,80,128,33,0,18,0,18,0, + 228,0,8,128,11,128,18,128,19,192,33,192,6,13,13,8, + 1,251,32,32,0,32,32,32,64,64,128,128,132,136,112,10, + 15,30,10,0,0,32,0,24,0,12,0,0,0,0,0,4, + 0,12,0,20,0,18,0,18,0,30,0,33,0,33,0,65, + 128,227,192,10,15,30,10,0,0,2,0,7,0,12,0,16, + 0,0,0,4,0,12,0,20,0,18,0,18,0,30,0,33, + 0,33,0,65,128,227,192,10,15,30,10,0,0,12,0,12, + 0,18,0,33,0,0,0,4,0,12,0,20,0,18,0,18, + 0,30,0,33,0,33,0,65,128,227,192,10,14,28,10,0, + 0,10,0,25,0,38,0,0,0,4,0,12,0,20,0,18, + 0,18,0,30,0,33,0,33,0,65,128,227,192,10,13,26, + 10,0,0,34,0,34,0,0,0,4,0,12,0,20,0,18, + 0,18,0,30,0,33,0,33,0,65,128,227,192,10,15,30, + 10,0,0,12,0,20,0,28,0,0,0,0,0,4,0,12, + 0,20,0,18,0,18,0,30,0,33,0,33,0,65,128,227, + 192,12,10,20,13,1,0,31,224,10,32,10,0,18,0,31, + 224,50,0,34,0,34,0,66,16,231,240,7,14,14,9,1, + 252,62,66,128,128,128,128,128,128,66,102,24,24,8,16,7, + 15,15,8,1,0,64,224,16,8,0,252,68,64,64,124,64, + 64,64,66,254,7,15,15,8,1,0,8,28,48,0,0,252, + 68,64,64,124,64,64,64,66,254,7,15,15,8,1,0,16, + 56,72,4,0,252,68,64,64,124,64,64,64,66,254,7,13, + 13,8,1,0,136,136,0,252,68,64,64,124,64,64,64,66, + 254,4,15,15,5,0,0,128,192,32,16,0,112,32,32,32, + 32,32,32,32,32,112,4,15,15,5,1,0,32,48,64,128, + 0,224,64,64,64,64,64,64,64,64,224,5,15,15,5,0, + 0,32,112,136,0,0,112,32,32,32,32,32,32,32,32,112, + 5,13,13,5,0,0,136,136,0,112,32,32,32,32,32,32, + 32,32,112,8,10,10,10,1,0,252,70,65,65,241,65,65, + 66,66,252,9,14,28,11,1,0,18,0,58,0,4,0,0, + 0,195,128,97,0,97,0,81,0,73,0,77,0,69,0,67, + 0,67,0,225,0,8,15,15,10,1,0,32,112,8,4,0, + 60,66,129,129,129,129,129,130,66,60,8,15,15,10,1,0, + 4,14,24,0,0,60,66,129,129,129,129,129,130,66,60,8, + 15,15,10,1,0,8,28,36,66,0,60,66,129,129,129,129, + 129,130,66,60,8,14,14,10,1,0,18,50,76,0,60,66, + 129,129,129,129,129,130,66,60,8,13,13,10,1,0,68,68, + 0,60,66,129,129,129,129,129,130,66,60,5,5,5,7,1, + 2,136,80,32,80,136,8,10,10,10,1,0,29,98,131,133, + 137,145,161,194,66,188,9,15,30,11,1,0,32,0,48,0, + 12,0,0,0,0,0,227,128,65,0,65,0,65,0,65,0, + 65,0,65,0,65,0,34,0,60,0,9,15,30,11,1,0, + 2,0,6,0,8,0,16,0,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,65,0,34,0,60,0,9,15, + 30,11,1,0,8,0,28,0,34,0,0,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 60,0,9,13,26,11,1,0,34,0,34,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 60,0,9,15,30,10,1,0,4,0,14,0,24,0,0,0, + 0,0,195,128,97,0,50,0,22,0,28,0,8,0,8,0, + 8,0,8,0,28,0,7,10,10,9,1,0,224,64,124,70, + 66,66,66,124,64,224,8,13,13,10,1,0,28,38,66,66, + 68,72,80,88,78,67,81,81,206,7,12,12,8,1,0,64, + 32,16,0,28,100,4,28,100,132,140,118,7,12,12,8,1, + 0,8,16,32,0,28,100,4,28,100,132,140,118,7,12,12, + 8,1,0,48,72,136,4,28,100,4,28,100,132,140,118,7, + 11,11,8,1,0,100,152,0,28,100,4,28,100,132,140,118, + 7,11,11,8,1,0,136,136,0,28,100,4,28,100,132,140, + 118,7,12,12,8,1,0,48,80,112,0,28,100,4,28,100, + 132,140,118,10,8,16,12,1,0,59,128,204,64,136,64,63, + 192,72,0,136,0,156,192,231,0,6,12,12,7,1,252,60, + 72,128,128,128,128,196,120,32,48,16,32,6,12,12,8,1, + 0,96,32,16,0,56,68,132,252,128,128,68,120,6,12,12, + 8,1,0,12,24,32,0,56,68,132,252,128,128,68,120,6, + 12,12,8,1,0,48,72,132,0,56,68,132,252,128,128,68, + 120,6,11,11,8,1,0,132,136,0,56,68,132,252,128,128, + 68,120,4,12,12,5,0,0,192,64,32,0,32,96,32,32, + 32,32,32,112,4,12,12,5,1,0,48,96,64,0,64,192, + 64,64,64,64,64,224,5,12,12,5,0,0,32,80,136,0, + 32,96,32,32,32,32,32,112,5,11,11,5,0,0,136,136, + 0,32,96,32,32,32,32,32,112,6,12,12,8,1,0,104, + 28,120,8,52,204,132,132,132,132,72,112,8,11,11,9,1, + 0,54,76,0,78,210,98,66,66,66,66,231,7,12,12,9, + 1,0,96,32,16,0,56,68,130,130,130,130,68,56,7,12, + 12,9,1,0,12,8,16,0,56,68,130,130,130,130,68,56, + 7,12,12,9,1,0,16,40,68,0,56,68,130,130,130,130, + 68,56,7,11,11,9,1,0,52,216,0,56,68,130,130,130, + 130,68,56,7,11,11,9,1,0,132,132,0,56,68,130,130, + 130,130,68,56,5,6,6,7,1,2,32,32,0,248,32,32, + 7,8,8,9,1,0,62,68,142,146,146,226,68,248,9,12, + 24,9,0,0,48,0,24,0,8,0,0,0,195,0,65,0, + 65,0,65,0,65,0,65,0,67,0,61,128,9,12,24,9, + 0,0,6,0,4,0,8,0,0,0,195,0,65,0,65,0, + 65,0,65,0,65,0,67,0,61,128,9,12,24,9,0,0, + 8,0,20,0,34,0,0,0,195,0,65,0,65,0,65,0, + 65,0,65,0,67,0,61,128,9,11,22,9,0,0,34,0, + 66,0,0,0,195,0,65,0,65,0,65,0,65,0,65,0, + 67,0,61,128,8,16,16,8,0,252,6,12,8,0,231,98, + 34,36,52,20,24,8,8,16,160,192,7,17,17,9,1,252, + 64,192,64,64,64,92,102,66,66,66,66,100,120,64,64,64, + 224,8,15,15,8,0,252,66,66,0,231,98,34,36,52,20, + 24,8,8,16,160,192}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 10 + Calculated Max Values w= 8 h=16 x= 2 y= 6 dx= 8 dy= 0 ascent=13 len=16 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =13 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10n[249] U8G_SECTION(".progmem.u8g_font_gdr10n") = { + 0,25,24,247,250,10,0,0,0,0,42,57,0,13,253,10, + 0,6,7,7,8,1,6,32,168,236,48,252,164,32,6,6, + 6,7,1,2,32,32,32,252,32,32,2,4,4,4,1,253, + 192,64,64,128,4,1,1,6,1,4,240,1,2,2,4,2, + 0,128,128,8,16,16,8,0,253,3,2,6,4,4,12,8, + 8,16,16,48,32,32,96,64,192,6,10,10,8,1,0,56, + 72,132,132,132,132,132,132,72,112,5,10,10,8,2,0,32, + 224,32,32,32,32,32,32,32,248,5,10,10,8,2,0,56, + 200,136,8,16,32,32,64,136,248,6,10,10,8,1,0,112, + 136,136,16,48,8,4,4,140,120,6,10,10,8,1,0,8, + 24,40,40,72,136,252,8,8,60,6,10,10,8,1,0,124, + 64,64,120,140,4,4,4,132,120,6,10,10,8,1,0,24, + 32,64,128,248,132,132,132,72,56,6,10,10,8,1,0,252, + 132,8,8,8,16,16,32,32,64,6,10,10,8,1,0,120, + 196,196,200,56,204,132,132,132,120,6,10,10,8,1,0,56, + 200,132,132,132,124,4,8,16,96}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=14 h=17 x= 2 y= 9 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =10 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10r[1723] U8G_SECTION(".progmem.u8g_font_gdr10r") = { + 0,25,24,247,250,10,2,30,4,177,32,127,252,14,252,13, + 252,0,0,0,4,0,0,2,12,12,5,1,0,64,192,64, + 64,64,64,64,64,64,0,64,64,5,5,5,7,1,7,216, + 216,88,72,72,7,9,9,8,1,1,20,36,126,40,72,252, + 80,80,144,7,12,12,8,0,255,16,56,84,80,112,56,30, + 18,146,212,120,16,10,10,20,12,1,0,96,128,145,0,146, + 0,150,0,164,0,105,128,18,64,50,64,34,64,65,128,10, + 12,24,11,1,0,28,0,36,0,36,0,36,0,40,0,51, + 192,81,0,153,0,141,0,134,0,135,0,121,192,2,5,5, + 4,1,7,192,192,64,64,64,3,16,16,5,1,253,32,64, + 64,128,128,128,128,128,128,128,128,128,128,64,64,32,3,16, + 16,5,1,253,128,64,64,32,32,32,32,32,32,32,32,32, + 32,64,64,128,6,7,7,8,1,6,32,168,236,48,252,164, + 32,6,6,6,7,1,2,32,32,32,252,32,32,2,4,4, + 4,1,253,192,64,64,128,4,1,1,6,1,4,240,1,2, + 2,4,2,0,128,128,8,16,16,8,0,253,3,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,10,10,8, + 1,0,56,72,132,132,132,132,132,132,72,112,5,10,10,8, + 2,0,32,224,32,32,32,32,32,32,32,248,5,10,10,8, + 2,0,56,200,136,8,16,32,32,64,136,248,6,10,10,8, + 1,0,112,136,136,16,48,8,4,4,140,120,6,10,10,8, + 1,0,8,24,40,40,72,136,252,8,8,60,6,10,10,8, + 1,0,124,64,64,120,140,4,4,4,132,120,6,10,10,8, + 1,0,24,32,64,128,248,132,132,132,72,56,6,10,10,8, + 1,0,252,132,8,8,8,16,16,32,32,64,6,10,10,8, + 1,0,120,196,196,200,56,204,132,132,132,120,6,10,10,8, + 1,0,56,200,132,132,132,124,4,8,16,96,1,8,8,4, + 2,0,128,128,0,0,0,0,128,128,2,11,11,4,1,253, + 64,64,0,0,0,0,0,192,64,64,128,6,5,5,7,1, + 2,12,112,128,112,12,6,3,3,7,1,3,252,0,252,6, + 5,5,7,1,2,192,56,12,112,128,6,12,12,7,1,0, + 56,68,132,4,4,8,16,32,32,32,32,32,12,14,28,14, + 1,253,15,128,16,64,96,32,71,144,136,144,144,144,144,144, + 144,144,144,144,137,160,78,192,96,0,48,96,15,128,10,10, + 20,10,0,0,4,0,12,0,20,0,18,0,18,0,30,0, + 33,0,33,0,65,128,227,192,7,10,10,9,1,0,248,68, + 68,68,124,70,66,66,66,252,7,10,10,9,1,0,62,66, + 128,128,128,128,128,128,66,60,8,10,10,10,1,0,252,70, + 65,65,65,65,65,66,66,252,7,10,10,8,1,0,252,68, + 64,64,124,64,64,64,66,254,7,10,10,8,1,0,254,68, + 64,64,120,64,64,64,64,224,9,10,20,10,1,0,30,0, + 99,0,128,0,128,0,128,0,135,128,129,0,129,0,97,0, + 62,0,9,10,20,11,1,0,227,128,65,0,65,0,65,0, + 127,0,65,0,65,0,65,0,65,0,227,128,3,10,10,5, + 1,0,224,64,64,64,64,64,64,64,64,224,6,13,13,5, + 254,253,60,8,8,8,8,8,8,8,8,8,8,16,224,9, + 10,20,10,1,0,231,0,68,0,72,0,80,0,96,0,80, + 0,88,0,76,0,70,0,227,128,7,10,10,8,1,0,224, + 64,64,64,64,64,64,64,66,254,12,10,20,14,1,0,192, + 112,96,96,96,224,112,224,81,96,89,32,74,32,78,32,68, + 32,228,240,9,10,20,11,1,0,195,128,97,0,97,0,81, + 0,73,0,77,0,69,0,67,0,67,0,225,0,8,10,10, + 10,1,0,60,66,129,129,129,129,129,130,66,60,7,10,10, + 9,1,0,252,70,66,66,70,120,64,64,64,224,10,12,24, + 10,1,254,60,0,66,0,129,0,129,0,129,0,129,0,129, + 0,130,0,66,0,60,0,6,128,3,192,9,10,20,10,1, + 0,252,0,70,0,66,0,66,0,68,0,120,0,76,0,68, + 0,70,0,227,128,6,10,10,8,1,0,120,140,128,192,112, + 8,4,132,132,248,9,10,20,9,0,0,255,128,136,128,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,28,0,9, + 10,20,11,1,0,227,128,65,0,65,0,65,0,65,0,65, + 0,65,0,65,0,34,0,60,0,11,10,20,11,0,0,241, + 224,32,128,32,128,49,0,17,0,25,0,10,0,10,0,14, + 0,4,0,14,10,20,14,0,0,241,28,99,8,35,16,35, + 144,36,144,52,144,20,80,24,96,24,96,24,32,10,10,20, + 10,0,0,243,192,33,0,51,0,26,0,12,0,12,0,18, + 0,49,0,33,128,243,192,9,10,20,10,1,0,195,128,97, + 0,50,0,22,0,28,0,8,0,8,0,8,0,8,0,28, + 0,8,10,10,9,0,0,127,66,70,4,8,24,16,33,97, + 255,4,16,16,5,1,253,240,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,16,16,8,0,253,192,64,64, + 32,32,48,16,16,8,8,12,4,4,6,2,3,4,16,16, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,240,7,8,8,8,1,5,16,48,56,72,72,76,132, + 134,6,1,1,8,1,254,252,4,3,3,5,0,9,192,96, + 48,7,8,8,8,1,0,28,100,4,28,100,132,140,118,8, + 13,13,9,0,0,64,192,64,64,64,78,115,65,65,65,65, + 66,60,6,8,8,7,1,0,60,72,128,128,128,128,196,120, + 8,13,13,9,1,0,6,2,2,2,2,62,66,130,130,130, + 130,70,59,6,8,8,8,1,0,56,68,132,252,128,128,68, + 120,6,13,13,5,1,0,28,40,64,64,64,240,64,64,64, + 64,64,64,240,8,12,12,8,0,252,63,70,130,130,196,56, + 96,60,195,129,194,124,8,13,13,9,1,0,64,192,64,64, + 64,78,82,98,66,66,66,66,231,3,11,11,5,1,0,64, + 192,0,64,192,64,64,64,64,64,224,5,15,15,4,254,252, + 8,24,0,8,24,8,8,8,8,8,8,8,8,16,224,8, + 13,13,9,1,0,64,192,64,64,64,78,72,80,96,80,72, + 76,231,3,13,13,5,1,0,64,192,64,64,64,64,64,64, + 64,64,64,64,224,11,8,16,12,1,0,221,192,102,64,68, + 64,68,64,68,64,68,64,68,64,238,224,8,8,8,9,1, + 0,78,210,98,66,66,66,66,231,7,8,8,9,1,0,56, + 68,130,130,130,130,68,56,7,12,12,9,1,252,92,230,66, + 66,66,66,68,120,64,64,64,224,8,12,12,9,1,252,62, + 66,130,130,130,130,70,58,2,2,2,7,6,8,8,7,1, + 0,220,104,64,64,64,64,64,224,5,8,8,7,1,0,112, + 136,128,96,24,136,136,240,5,10,10,6,1,0,64,64,248, + 64,64,64,64,64,64,120,9,8,16,9,0,0,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,61,128,8,8,8, + 8,0,0,227,98,34,36,52,20,24,8,12,8,16,12,0, + 0,226,112,102,32,38,32,39,64,41,64,57,64,24,128,16, + 128,8,8,8,9,0,0,247,34,52,24,28,36,66,231,8, + 12,12,8,0,252,231,98,34,36,52,20,24,8,8,16,160, + 192,6,8,8,8,1,0,252,136,16,48,32,64,196,252,4, + 16,16,6,1,253,48,64,64,64,96,32,32,64,224,32,32, + 96,64,64,64,32,1,17,17,4,2,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,16,16,5, + 0,253,64,32,32,32,32,32,32,56,48,32,32,32,32,32, + 32,192,8,2,2,8,0,4,57,206,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y=10 dx=15 dy= 0 ascent=16 len=34 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11[3977] U8G_SECTION(".progmem.u8g_font_gdr11") = { + 0,26,25,247,250,11,2,61,5,21,32,255,252,16,251,14, + 252,0,0,0,4,0,0,2,13,13,5,1,0,64,64,64, + 64,64,64,64,64,64,64,0,192,128,5,6,6,8,1,7, + 200,200,72,72,72,72,8,10,10,8,1,1,18,20,20,127, + 36,40,254,72,80,144,7,14,14,8,1,254,16,16,126,148, + 144,240,56,28,20,148,148,248,16,16,11,11,22,13,1,0, + 96,192,161,128,145,0,146,0,166,0,101,192,10,32,18,32, + 50,32,34,32,65,192,11,13,26,12,1,0,28,0,34,0, + 34,0,34,0,36,0,56,0,49,224,216,128,156,128,142,128, + 135,0,135,128,124,224,2,6,6,5,1,7,192,192,64,64, + 64,64,3,17,17,6,1,253,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,64,64,32,3,17,17,6,1,253,128, + 64,64,32,32,32,32,32,32,32,32,32,32,32,64,64,128, + 6,8,8,8,1,6,48,16,164,120,120,164,16,48,7,6, + 6,7,0,2,16,16,16,254,16,16,2,5,5,4,1,253, + 64,192,64,64,128,5,1,1,6,1,4,248,2,2,2,4, + 1,0,192,128,8,17,17,8,0,253,1,2,2,6,4,4, + 12,8,8,16,16,48,32,32,96,64,192,6,11,11,8,1, + 0,48,72,132,132,132,132,132,132,132,72,48,6,11,11,8, + 1,0,16,240,16,16,16,16,16,16,16,16,124,6,11,11, + 8,1,0,28,100,68,4,8,8,16,32,68,68,252,6,11, + 11,7,0,0,56,68,68,4,24,12,4,4,4,140,120,7, + 11,11,8,0,0,4,12,12,20,36,36,68,254,4,4,30, + 6,11,11,8,1,0,124,64,64,64,120,132,4,4,4,132, + 120,6,11,11,8,1,0,12,48,64,192,184,196,132,132,132, + 72,56,7,11,11,8,1,0,254,132,4,8,8,8,16,16, + 32,32,96,7,11,11,9,1,0,120,196,196,196,120,60,194, + 130,130,130,124,6,11,11,8,1,0,56,200,132,132,132,132, + 124,4,8,16,224,2,8,8,4,1,0,192,128,0,0,0, + 0,192,128,2,11,11,4,1,253,192,128,0,0,0,0,64, + 192,64,64,128,6,6,6,8,1,2,4,56,224,192,56,12, + 6,4,4,8,1,3,252,0,0,252,6,6,6,8,1,2, + 192,112,12,28,112,128,6,13,13,8,1,0,56,68,132,132, + 4,8,16,32,32,32,0,48,32,13,15,30,15,1,253,7, + 192,24,96,32,16,64,16,135,136,136,136,144,136,144,136,144, + 136,144,144,137,144,78,224,96,16,48,32,15,192,11,11,22, + 11,0,0,4,0,12,0,14,0,18,0,18,0,19,0,31, + 0,33,0,33,128,32,128,241,224,8,11,11,10,1,0,252, + 66,66,68,126,67,65,65,65,67,254,8,11,11,10,1,0, + 62,66,128,128,128,128,128,128,128,67,60,9,11,22,11,1, + 0,252,0,67,0,65,0,64,128,64,128,64,128,64,128,64, + 128,65,0,67,0,252,0,7,11,11,9,1,0,254,66,64, + 64,124,64,64,64,66,66,254,7,11,11,9,1,0,254,66, + 64,64,124,64,64,64,64,64,240,10,11,22,11,1,0,15, + 0,49,128,64,0,128,0,128,0,128,0,131,192,128,128,64, + 128,96,128,31,0,10,11,22,12,1,0,225,192,64,128,64, + 128,64,128,64,128,127,128,64,128,64,128,64,128,64,128,225, + 192,3,11,11,5,1,0,224,64,64,64,64,64,64,64,64, + 64,224,6,14,14,6,254,253,60,8,8,8,8,8,8,8, + 8,8,8,8,144,224,9,11,22,10,1,0,231,128,70,0, + 76,0,72,0,80,0,112,0,88,0,72,0,68,0,70,0, + 227,128,7,11,11,9,1,0,224,64,64,64,64,64,64,64, + 66,66,254,13,11,22,15,1,0,224,56,96,96,96,96,80, + 160,80,160,88,160,73,32,77,48,70,48,70,48,228,120,10, + 11,22,12,1,0,193,192,96,128,112,128,80,128,72,128,76, + 128,70,128,66,128,65,128,65,128,224,128,9,11,22,11,1, + 0,30,0,99,0,129,0,128,128,128,128,128,128,128,128,128, + 128,65,0,98,0,60,0,7,11,11,9,1,0,252,66,66, + 66,66,92,96,64,64,64,240,10,14,28,11,1,253,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,6,0,3,64,1,192,9,11,22,10,1,0, + 252,0,70,0,66,0,66,0,68,0,72,0,120,0,76,0, + 70,0,66,0,227,128,7,11,11,9,1,0,60,198,128,128, + 112,28,6,2,130,196,248,9,11,22,10,0,0,255,128,136, + 128,136,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,28,0,10,11,22,12,1,0,225,192,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,33,0,30,0,11, + 11,22,12,0,0,240,224,32,64,32,128,48,128,16,128,25, + 0,9,0,9,0,14,0,6,0,4,0,15,11,22,15,0, + 0,241,30,33,8,33,136,34,136,50,136,50,200,20,80,20, + 112,20,48,24,48,8,32,11,11,22,11,0,0,243,192,32, + 128,49,0,26,0,14,0,4,0,14,0,19,0,49,128,32, + 192,241,224,10,11,22,11,0,0,225,192,48,128,17,0,25, + 0,10,0,14,0,4,0,4,0,4,0,4,0,14,0,8, + 11,11,9,1,0,255,134,132,12,24,16,48,32,65,193,255, + 4,17,17,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,17,17,8,0,253,192,64,96, + 32,32,48,16,16,8,8,12,4,4,6,2,2,1,4,17, + 17,5,0,253,240,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,48,56,40,76, + 76,68,134,130,7,1,1,8,1,254,254,4,4,4,6,0, + 9,192,96,32,16,7,8,8,8,1,0,60,68,132,28,100, + 132,140,118,8,14,14,9,0,0,64,192,64,64,64,64,78, + 115,65,65,65,65,66,60,6,8,8,8,1,0,60,68,128, + 128,128,128,196,120,7,14,14,9,1,0,12,4,4,4,4, + 4,60,196,132,132,132,132,76,118,6,8,8,8,1,0,56, + 68,132,252,128,128,68,120,6,14,14,6,1,0,28,40,64, + 64,64,64,248,64,64,64,64,64,64,240,9,12,24,8,0, + 252,61,128,194,0,130,0,194,0,124,0,32,0,112,0,63, + 0,193,0,129,0,130,0,124,0,8,14,14,10,1,0,64, + 192,64,64,64,64,78,114,98,66,66,66,66,231,3,12,12, + 5,1,0,192,192,0,0,64,192,64,64,64,64,64,224,5, + 16,16,5,254,252,24,24,0,0,8,24,8,8,8,8,8, + 8,8,8,16,224,8,14,14,9,1,0,64,192,64,64,64, + 64,79,72,80,112,80,72,68,231,3,14,14,5,1,0,64, + 192,64,64,64,64,64,64,64,64,64,64,64,224,13,8,16, + 15,1,0,206,112,115,144,98,16,66,16,66,16,66,16,66, + 16,231,56,8,8,8,10,1,0,78,210,98,66,66,66,66, + 231,7,8,8,9,1,0,56,196,130,130,130,130,68,56,8, + 12,12,10,1,252,206,115,65,65,65,65,98,92,64,64,64, + 224,8,12,12,9,1,252,62,66,130,130,130,130,70,58,2, + 2,2,15,6,8,8,7,1,0,220,100,64,64,64,64,64, + 224,5,8,8,7,1,0,112,136,128,96,24,136,136,240,5, + 11,11,6,1,0,64,64,64,248,64,64,64,64,64,64,120, + 8,8,8,10,1,0,198,66,66,66,66,66,70,59,9,8, + 16,9,0,0,243,128,98,0,34,0,50,0,20,0,20,0, + 28,0,8,0,13,8,16,13,0,0,242,56,98,32,39,32, + 37,32,53,160,24,192,24,192,16,192,9,8,16,9,0,0, + 247,128,34,0,20,0,24,0,28,0,38,0,35,0,247,128, + 9,12,24,9,0,252,243,128,97,0,34,0,50,0,20,0, + 20,0,28,0,8,0,8,0,16,0,176,0,224,0,6,8, + 8,8,1,0,252,136,24,16,32,64,196,252,5,17,17,6, + 1,253,24,32,32,32,32,32,32,32,192,32,32,32,32,32, + 32,32,24,1,19,19,4,2,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,17,17,6, + 0,253,64,160,32,32,32,32,32,32,24,32,32,32,32,32, + 32,64,192,8,2,2,9,0,4,57,206,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,4, + 0,0,2,13,13,5,1,251,64,192,0,64,64,64,64,64, + 64,64,64,64,64,7,11,11,8,1,0,16,24,118,144,144, + 144,144,212,126,16,16,7,11,11,8,1,0,60,68,68,64, + 64,240,64,64,66,130,254,6,6,6,8,1,2,248,76,72, + 72,120,132,9,11,22,8,0,0,231,128,98,0,50,0,20, + 0,28,0,8,0,127,0,8,0,8,0,8,0,28,0,1, + 19,19,4,2,252,128,128,128,128,128,128,128,128,0,0,0, + 128,128,128,128,128,128,128,128,7,13,13,9,1,0,112,152, + 128,224,248,142,130,66,60,12,132,196,120,5,2,2,7,1, + 10,136,136,11,11,22,13,1,0,31,0,32,128,94,64,162, + 32,160,32,160,32,160,32,177,32,94,64,32,128,31,0,5, + 6,6,5,0,5,48,80,112,144,248,240,7,8,8,9,1, + 0,38,36,72,152,152,72,36,38,7,3,3,8,1,2,254, + 2,2,5,1,1,6,1,4,248,6,7,7,6,0,6,120, + 72,188,188,180,104,120,6,1,1,9,1,10,252,4,4,4, + 6,1,7,112,144,144,224,7,8,8,7,0,1,16,16,254, + 16,16,16,0,126,4,7,7,6,1,5,112,144,16,32,64, + 144,240,5,7,7,6,0,5,56,72,8,24,8,136,112,3, + 4,4,6,2,9,32,96,64,128,8,12,12,10,1,252,198, + 66,66,66,66,66,102,123,64,64,64,96,8,13,13,10,1, + 254,63,202,138,138,138,202,122,10,10,10,10,10,31,1,2, + 2,3,1,5,128,128,2,4,4,4,1,252,192,64,192,128, + 4,7,7,6,1,5,32,224,32,32,32,32,240,4,6,6, + 5,0,5,96,144,144,144,96,240,7,8,8,9,1,0,144, + 72,100,54,54,100,72,144,10,11,22,11,1,0,192,128,65, + 0,65,0,66,0,70,0,164,0,8,128,27,128,18,128,35, + 192,101,192,9,11,22,11,1,0,193,0,65,0,66,0,68, + 0,68,0,168,0,11,128,20,128,33,0,34,128,71,128,10, + 11,22,10,0,0,96,128,144,128,33,0,17,0,18,0,228, + 0,4,128,11,128,18,128,19,192,37,192,6,13,13,8,1, + 251,16,48,0,16,16,16,32,64,128,132,132,136,112,11,15, + 30,11,0,0,16,0,56,0,4,0,2,0,4,0,12,0, + 14,0,18,0,18,0,19,0,31,0,33,0,33,128,32,128, + 241,224,11,15,30,11,0,0,1,0,7,0,12,0,0,0, + 4,0,12,0,14,0,18,0,18,0,19,0,31,0,33,0, + 33,128,32,128,241,224,11,15,30,11,0,0,4,0,14,0, + 17,0,32,0,4,0,12,0,14,0,18,0,18,0,19,0, + 31,0,33,0,33,128,32,128,241,224,11,15,30,11,0,0, + 9,0,29,0,34,0,0,0,4,0,12,0,14,0,18,0, + 18,0,19,0,31,0,33,0,33,128,32,128,241,224,11,14, + 28,11,0,0,33,0,33,0,0,0,4,0,12,0,14,0, + 18,0,18,0,19,0,31,0,33,0,33,128,32,128,241,224, + 11,16,32,11,0,0,4,0,10,0,18,0,12,0,0,0, + 4,0,12,0,14,0,18,0,18,0,19,0,31,0,33,0, + 33,128,32,128,241,224,13,11,22,14,0,0,15,248,5,8, + 5,0,9,0,15,240,17,0,17,0,17,0,33,8,33,8, + 243,248,9,15,30,10,1,252,62,0,66,0,128,0,128,0, + 128,0,128,0,128,0,128,0,192,0,97,128,62,0,8,0, + 12,0,4,0,8,0,7,15,15,9,1,0,64,224,24,0, + 254,66,64,64,124,64,64,64,66,66,254,7,15,15,9,1, + 0,4,12,48,0,254,66,64,64,124,64,64,64,66,66,254, + 7,15,15,9,1,0,16,40,68,0,254,66,64,64,124,64, + 64,64,66,66,254,7,14,14,9,1,0,68,68,0,254,66, + 64,64,124,64,64,64,66,66,254,4,15,15,5,0,0,128, + 192,48,0,112,32,32,32,32,32,32,32,32,32,112,5,15, + 15,5,1,0,16,56,192,0,224,64,64,64,64,64,64,64, + 64,64,224,5,15,15,5,0,0,32,80,136,0,112,32,32, + 32,32,32,32,32,32,32,112,5,14,14,5,0,0,136,136, + 0,112,32,32,32,32,32,32,32,32,32,112,9,11,22,11, + 1,0,252,0,67,0,65,0,64,128,64,128,240,128,64,128, + 64,128,65,0,67,0,252,0,10,15,30,12,1,0,25,0, + 57,0,38,0,0,0,193,192,96,128,112,128,80,128,72,128, + 76,128,70,128,66,128,65,128,65,128,224,128,9,15,30,11, + 1,0,32,0,112,0,12,0,0,0,30,0,99,0,129,0, + 128,128,128,128,128,128,128,128,128,128,65,0,98,0,60,0, + 9,15,30,11,1,0,2,0,6,0,24,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,9,15,30,11,1,0,8,0,20,0,34,0, + 0,0,30,0,99,0,129,0,128,128,128,128,128,128,128,128, + 128,128,65,0,98,0,60,0,9,15,30,11,1,0,18,0, + 58,0,68,0,0,0,30,0,99,0,129,0,128,128,128,128, + 128,128,128,128,128,128,65,0,98,0,60,0,9,14,28,11, + 1,0,34,0,34,0,0,0,30,0,99,0,129,0,128,128, + 128,128,128,128,128,128,128,128,65,0,98,0,60,0,6,6, + 6,7,1,2,140,88,48,48,88,140,9,11,22,11,1,0, + 30,128,35,0,67,0,134,128,132,128,136,128,144,128,176,128, + 97,0,98,0,188,0,10,15,30,12,1,0,32,0,24,0, + 4,0,2,0,225,192,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,15,30,12,1,0, + 2,0,7,0,8,0,16,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,10,15, + 30,12,1,0,12,0,30,0,34,0,1,0,225,192,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,33,0, + 30,0,10,14,28,12,1,0,34,0,34,0,0,0,225,192, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 33,0,30,0,10,15,30,11,0,0,1,0,7,0,12,0, + 0,0,225,192,48,128,17,0,25,0,10,0,14,0,4,0, + 4,0,4,0,4,0,14,0,7,11,11,9,1,0,240,64, + 124,70,66,66,66,68,124,64,240,8,14,14,10,1,0,28, + 38,66,66,66,76,80,80,76,71,65,81,81,222,7,13,13, + 8,1,0,64,96,48,16,0,60,68,132,28,100,132,140,118, + 7,13,13,8,1,0,12,8,16,32,0,60,68,132,28,100, + 132,140,118,7,13,13,8,1,0,48,56,72,132,0,60,68, + 132,28,100,132,140,118,7,12,12,8,1,0,116,152,0,0, + 60,68,132,28,100,132,140,118,7,12,12,8,1,0,132,132, + 0,0,60,68,132,28,100,132,140,118,7,13,13,8,1,0, + 48,72,72,48,0,60,68,132,28,100,132,140,118,11,8,16, + 12,1,0,29,192,102,32,68,32,159,224,100,0,132,0,142, + 32,115,192,7,12,12,8,1,252,60,68,128,128,128,128,194, + 124,16,24,8,16,6,13,13,8,1,0,96,32,16,16,0, + 56,68,132,252,128,128,68,120,6,13,13,8,1,0,12,8, + 16,16,0,56,68,132,252,128,128,68,120,6,13,13,8,1, + 0,16,56,108,68,0,56,68,132,252,128,128,68,120,6,12, + 12,8,1,0,68,68,0,0,56,68,132,252,128,128,68,120, + 4,13,13,5,0,0,192,64,32,32,16,32,96,32,32,32, + 32,32,112,4,13,13,5,1,0,48,32,64,64,0,64,192, + 64,64,64,64,64,224,5,13,13,5,0,0,32,112,216,136, + 0,32,96,32,32,32,32,32,112,5,12,12,5,0,0,136, + 136,0,0,32,96,32,32,32,32,32,112,7,13,13,9,1, + 0,96,30,56,68,4,62,198,130,130,130,132,68,56,8,12, + 12,10,1,0,50,76,0,0,78,210,98,66,66,66,66,231, + 7,13,13,9,1,0,96,32,16,8,0,56,196,130,130,130, + 130,68,56,7,13,13,9,1,0,4,12,24,16,0,56,196, + 130,130,130,130,68,56,7,13,13,9,1,0,16,56,36,68, + 0,56,196,130,130,130,130,68,56,7,12,12,9,1,0,50, + 92,0,0,56,196,130,130,130,130,68,56,7,12,12,9,1, + 0,68,68,0,0,56,196,130,130,130,130,68,56,6,6,6, + 7,1,2,32,32,0,252,32,32,7,9,9,9,1,0,2, + 62,68,138,146,162,226,68,248,8,13,13,10,1,0,96,48, + 16,8,0,198,66,66,66,66,66,70,59,8,13,13,10,1, + 0,4,12,8,16,0,198,66,66,66,66,66,70,59,8,13, + 13,10,1,0,24,56,36,66,0,198,66,66,66,66,66,70, + 59,8,12,12,10,1,0,68,68,0,0,198,66,66,66,66, + 66,70,59,9,17,34,9,0,252,2,0,4,0,12,0,8, + 0,0,0,243,128,97,0,34,0,50,0,20,0,20,0,28, + 0,8,0,8,0,16,0,176,0,224,0,8,18,18,10,1, + 252,64,192,64,64,64,64,78,115,65,65,65,65,98,124,64, + 64,64,240,9,16,32,9,0,252,34,0,34,0,0,0,0, + 0,243,128,97,0,34,0,50,0,20,0,20,0,28,0,8, + 0,8,0,16,0,176,0,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 8 h=17 x= 1 y= 6 dx= 9 dy= 0 ascent=14 len=17 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11n[262] U8G_SECTION(".progmem.u8g_font_gdr11n") = { + 0,26,25,247,250,11,0,0,0,0,42,57,0,14,253,11, + 0,6,8,8,8,1,6,48,16,164,120,120,164,16,48,7, + 6,6,7,0,2,16,16,16,254,16,16,2,5,5,4,1, + 253,64,192,64,64,128,5,1,1,6,1,4,248,2,2,2, + 4,1,0,192,128,8,17,17,8,0,253,1,2,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,11,11,8, + 1,0,48,72,132,132,132,132,132,132,132,72,48,6,11,11, + 8,1,0,16,240,16,16,16,16,16,16,16,16,124,6,11, + 11,8,1,0,28,100,68,4,8,8,16,32,68,68,252,6, + 11,11,7,0,0,56,68,68,4,24,12,4,4,4,140,120, + 7,11,11,8,0,0,4,12,12,20,36,36,68,254,4,4, + 30,6,11,11,8,1,0,124,64,64,64,120,132,4,4,4, + 132,120,6,11,11,8,1,0,12,48,64,192,184,196,132,132, + 132,72,56,7,11,11,8,1,0,254,132,4,8,8,8,16, + 16,32,32,96,7,11,11,9,1,0,120,196,196,196,120,60, + 194,130,130,130,124,6,11,11,8,1,0,56,200,132,132,132, + 132,124,4,8,16,224}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y= 9 dx=15 dy= 0 ascent=15 len=30 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11r[1868] U8G_SECTION(".progmem.u8g_font_gdr11r") = { + 0,26,25,247,250,11,2,61,5,21,32,127,252,15,252,14, + 252,0,0,0,4,0,0,2,13,13,5,1,0,64,64,64, + 64,64,64,64,64,64,64,0,192,128,5,6,6,8,1,7, + 200,200,72,72,72,72,8,10,10,8,1,1,18,20,20,127, + 36,40,254,72,80,144,7,14,14,8,1,254,16,16,126,148, + 144,240,56,28,20,148,148,248,16,16,11,11,22,13,1,0, + 96,192,161,128,145,0,146,0,166,0,101,192,10,32,18,32, + 50,32,34,32,65,192,11,13,26,12,1,0,28,0,34,0, + 34,0,34,0,36,0,56,0,49,224,216,128,156,128,142,128, + 135,0,135,128,124,224,2,6,6,5,1,7,192,192,64,64, + 64,64,3,17,17,6,1,253,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,64,64,32,3,17,17,6,1,253,128, + 64,64,32,32,32,32,32,32,32,32,32,32,32,64,64,128, + 6,8,8,8,1,6,48,16,164,120,120,164,16,48,7,6, + 6,7,0,2,16,16,16,254,16,16,2,5,5,4,1,253, + 64,192,64,64,128,5,1,1,6,1,4,248,2,2,2,4, + 1,0,192,128,8,17,17,8,0,253,1,2,2,6,4,4, + 12,8,8,16,16,48,32,32,96,64,192,6,11,11,8,1, + 0,48,72,132,132,132,132,132,132,132,72,48,6,11,11,8, + 1,0,16,240,16,16,16,16,16,16,16,16,124,6,11,11, + 8,1,0,28,100,68,4,8,8,16,32,68,68,252,6,11, + 11,7,0,0,56,68,68,4,24,12,4,4,4,140,120,7, + 11,11,8,0,0,4,12,12,20,36,36,68,254,4,4,30, + 6,11,11,8,1,0,124,64,64,64,120,132,4,4,4,132, + 120,6,11,11,8,1,0,12,48,64,192,184,196,132,132,132, + 72,56,7,11,11,8,1,0,254,132,4,8,8,8,16,16, + 32,32,96,7,11,11,9,1,0,120,196,196,196,120,60,194, + 130,130,130,124,6,11,11,8,1,0,56,200,132,132,132,132, + 124,4,8,16,224,2,8,8,4,1,0,192,128,0,0,0, + 0,192,128,2,11,11,4,1,253,192,128,0,0,0,0,64, + 192,64,64,128,6,6,6,8,1,2,4,56,224,192,56,12, + 6,4,4,8,1,3,252,0,0,252,6,6,6,8,1,2, + 192,112,12,28,112,128,6,13,13,8,1,0,56,68,132,132, + 4,8,16,32,32,32,0,48,32,13,15,30,15,1,253,7, + 192,24,96,32,16,64,16,135,136,136,136,144,136,144,136,144, + 136,144,144,137,144,78,224,96,16,48,32,15,192,11,11,22, + 11,0,0,4,0,12,0,14,0,18,0,18,0,19,0,31, + 0,33,0,33,128,32,128,241,224,8,11,11,10,1,0,252, + 66,66,68,126,67,65,65,65,67,254,8,11,11,10,1,0, + 62,66,128,128,128,128,128,128,128,67,60,9,11,22,11,1, + 0,252,0,67,0,65,0,64,128,64,128,64,128,64,128,64, + 128,65,0,67,0,252,0,7,11,11,9,1,0,254,66,64, + 64,124,64,64,64,66,66,254,7,11,11,9,1,0,254,66, + 64,64,124,64,64,64,64,64,240,10,11,22,11,1,0,15, + 0,49,128,64,0,128,0,128,0,128,0,131,192,128,128,64, + 128,96,128,31,0,10,11,22,12,1,0,225,192,64,128,64, + 128,64,128,64,128,127,128,64,128,64,128,64,128,64,128,225, + 192,3,11,11,5,1,0,224,64,64,64,64,64,64,64,64, + 64,224,6,14,14,6,254,253,60,8,8,8,8,8,8,8, + 8,8,8,8,144,224,9,11,22,10,1,0,231,128,70,0, + 76,0,72,0,80,0,112,0,88,0,72,0,68,0,70,0, + 227,128,7,11,11,9,1,0,224,64,64,64,64,64,64,64, + 66,66,254,13,11,22,15,1,0,224,56,96,96,96,96,80, + 160,80,160,88,160,73,32,77,48,70,48,70,48,228,120,10, + 11,22,12,1,0,193,192,96,128,112,128,80,128,72,128,76, + 128,70,128,66,128,65,128,65,128,224,128,9,11,22,11,1, + 0,30,0,99,0,129,0,128,128,128,128,128,128,128,128,128, + 128,65,0,98,0,60,0,7,11,11,9,1,0,252,66,66, + 66,66,92,96,64,64,64,240,10,14,28,11,1,253,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,6,0,3,64,1,192,9,11,22,10,1,0, + 252,0,70,0,66,0,66,0,68,0,72,0,120,0,76,0, + 70,0,66,0,227,128,7,11,11,9,1,0,60,198,128,128, + 112,28,6,2,130,196,248,9,11,22,10,0,0,255,128,136, + 128,136,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,28,0,10,11,22,12,1,0,225,192,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,33,0,30,0,11, + 11,22,12,0,0,240,224,32,64,32,128,48,128,16,128,25, + 0,9,0,9,0,14,0,6,0,4,0,15,11,22,15,0, + 0,241,30,33,8,33,136,34,136,50,136,50,200,20,80,20, + 112,20,48,24,48,8,32,11,11,22,11,0,0,243,192,32, + 128,49,0,26,0,14,0,4,0,14,0,19,0,49,128,32, + 192,241,224,10,11,22,11,0,0,225,192,48,128,17,0,25, + 0,10,0,14,0,4,0,4,0,4,0,4,0,14,0,8, + 11,11,9,1,0,255,134,132,12,24,16,48,32,65,193,255, + 4,17,17,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,17,17,8,0,253,192,64,96, + 32,32,48,16,16,8,8,12,4,4,6,2,2,1,4,17, + 17,5,0,253,240,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,48,56,40,76, + 76,68,134,130,7,1,1,8,1,254,254,4,4,4,6,0, + 9,192,96,32,16,7,8,8,8,1,0,60,68,132,28,100, + 132,140,118,8,14,14,9,0,0,64,192,64,64,64,64,78, + 115,65,65,65,65,66,60,6,8,8,8,1,0,60,68,128, + 128,128,128,196,120,7,14,14,9,1,0,12,4,4,4,4, + 4,60,196,132,132,132,132,76,118,6,8,8,8,1,0,56, + 68,132,252,128,128,68,120,6,14,14,6,1,0,28,40,64, + 64,64,64,248,64,64,64,64,64,64,240,9,12,24,8,0, + 252,61,128,194,0,130,0,194,0,124,0,32,0,112,0,63, + 0,193,0,129,0,130,0,124,0,8,14,14,10,1,0,64, + 192,64,64,64,64,78,114,98,66,66,66,66,231,3,12,12, + 5,1,0,192,192,0,0,64,192,64,64,64,64,64,224,5, + 16,16,5,254,252,24,24,0,0,8,24,8,8,8,8,8, + 8,8,8,16,224,8,14,14,9,1,0,64,192,64,64,64, + 64,79,72,80,112,80,72,68,231,3,14,14,5,1,0,64, + 192,64,64,64,64,64,64,64,64,64,64,64,224,13,8,16, + 15,1,0,206,112,115,144,98,16,66,16,66,16,66,16,66, + 16,231,56,8,8,8,10,1,0,78,210,98,66,66,66,66, + 231,7,8,8,9,1,0,56,196,130,130,130,130,68,56,8, + 12,12,10,1,252,206,115,65,65,65,65,98,92,64,64,64, + 224,8,12,12,9,1,252,62,66,130,130,130,130,70,58,2, + 2,2,15,6,8,8,7,1,0,220,100,64,64,64,64,64, + 224,5,8,8,7,1,0,112,136,128,96,24,136,136,240,5, + 11,11,6,1,0,64,64,64,248,64,64,64,64,64,64,120, + 8,8,8,10,1,0,198,66,66,66,66,66,70,59,9,8, + 16,9,0,0,243,128,98,0,34,0,50,0,20,0,20,0, + 28,0,8,0,13,8,16,13,0,0,242,56,98,32,39,32, + 37,32,53,160,24,192,24,192,16,192,9,8,16,9,0,0, + 247,128,34,0,20,0,24,0,28,0,38,0,35,0,247,128, + 9,12,24,9,0,252,243,128,97,0,34,0,50,0,20,0, + 20,0,28,0,8,0,8,0,16,0,176,0,224,0,6,8, + 8,8,1,0,252,136,24,16,32,64,196,252,5,17,17,6, + 1,253,24,32,32,32,32,32,32,32,192,32,32,32,32,32, + 32,32,24,1,19,19,4,2,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,17,17,6, + 0,253,64,160,32,32,32,32,32,32,24,32,32,32,32,32, + 32,64,192,8,2,2,9,0,4,57,206,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=11 dx=16 dy= 0 ascent=17 len=36 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12[4200] U8G_SECTION(".progmem.u8g_font_gdr12") = { + 0,28,28,246,249,12,2,80,5,85,32,255,252,17,251,15, + 252,0,0,0,4,0,0,2,15,15,5,2,255,128,128,128, + 128,128,128,128,128,128,128,0,0,192,192,128,6,6,6,8, + 1,8,204,76,72,72,72,72,8,11,11,9,1,1,26,18, + 18,127,36,36,36,254,72,72,80,7,15,15,9,1,254,16, + 16,126,148,144,208,112,28,22,18,146,146,252,16,16,11,11, + 22,13,1,0,112,64,144,128,137,128,139,0,146,0,117,192, + 10,32,26,32,18,32,34,32,65,192,11,13,26,12,1,0, + 28,0,34,0,34,0,34,0,36,0,56,0,49,224,216,128, + 140,128,140,128,135,0,199,128,60,224,2,6,6,5,1,8, + 192,64,64,64,64,64,4,18,18,6,1,253,48,96,64,64, + 128,128,128,128,128,128,128,128,128,128,192,64,96,48,4,18, + 18,6,1,253,192,96,32,48,16,16,16,16,16,16,16,16, + 16,16,32,32,96,128,7,7,7,8,1,7,16,148,222,48, + 252,146,16,7,7,7,8,0,2,16,16,16,254,16,16,16, + 2,5,5,4,1,253,64,192,64,64,128,5,1,1,6,1, + 4,248,2,3,3,4,1,255,192,192,128,8,18,18,9,0, + 253,1,1,3,2,6,4,4,12,8,8,24,16,48,32,32, + 96,64,192,7,11,11,9,1,0,56,68,130,130,130,130,130, + 130,132,68,56,6,12,12,9,1,0,16,112,144,16,16,16, + 16,16,16,16,16,252,6,12,12,8,1,0,60,68,196,4, + 4,8,16,16,32,68,132,252,7,12,12,8,0,0,28,38, + 98,2,4,28,2,2,2,2,134,124,7,12,12,9,1,0, + 4,12,12,20,20,36,68,68,254,4,4,30,6,11,11,9, + 2,0,124,64,64,64,120,132,4,4,4,132,120,7,12,12, + 9,1,0,12,48,64,64,128,252,198,130,130,130,68,56,7, + 11,11,9,1,0,254,130,4,4,8,8,24,16,48,32,96, + 7,12,12,9,1,0,120,196,196,196,232,60,78,130,130,130, + 194,124,7,11,11,9,1,0,56,68,130,130,130,198,122,2, + 4,8,112,2,10,10,4,1,255,128,192,128,0,0,0,0, + 192,192,128,2,12,12,4,1,253,128,192,128,0,0,0,0, + 64,192,64,64,128,7,6,6,8,1,2,6,28,224,192,56, + 6,7,4,4,8,1,3,254,0,0,254,7,6,6,8,1, + 2,192,112,14,28,112,128,6,15,15,8,1,255,56,68,132, + 132,4,8,16,16,32,32,32,0,48,48,32,14,15,30,16, + 1,253,7,224,24,48,32,8,71,200,136,68,144,68,144,68, + 144,68,144,68,144,72,136,200,71,112,32,8,24,48,15,192, + 11,12,24,11,0,0,4,0,6,0,14,0,10,0,11,0, + 17,0,17,0,31,128,33,128,32,128,32,192,241,224,8,12, + 12,10,1,0,252,66,66,66,68,126,67,65,65,65,67,254, + 8,12,12,10,1,0,30,99,128,128,128,128,128,128,128,192, + 99,60,9,12,24,11,1,0,252,0,67,0,65,0,64,128, + 64,128,64,128,64,128,64,128,64,128,65,0,66,0,252,0, + 8,12,12,9,1,0,254,66,64,64,64,124,72,64,64,66, + 67,254,7,12,12,9,1,0,254,66,64,64,64,124,72,64, + 64,64,64,240,10,12,24,11,1,0,15,0,49,128,64,0, + 128,0,128,0,128,0,131,192,128,128,128,128,64,128,96,128, + 31,0,10,12,24,12,1,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,64,128,225,192, + 3,12,12,6,1,0,224,64,64,64,64,64,64,64,64,64, + 64,224,6,15,15,6,255,253,60,8,8,8,8,8,8,8, + 8,8,8,8,8,144,224,10,12,24,11,1,0,231,128,66, + 0,68,0,72,0,80,0,96,0,80,0,88,0,76,0,70, + 0,67,0,225,192,7,12,12,9,1,0,224,64,64,64,64, + 64,64,64,64,66,66,254,14,12,24,15,1,0,224,56,96, + 48,112,112,80,80,80,80,88,144,72,144,77,16,69,16,71, + 16,66,16,226,124,10,12,24,12,1,0,193,192,96,128,112, + 128,80,128,88,128,76,128,68,128,70,128,67,128,65,128,65, + 128,224,128,9,12,24,11,1,0,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,8,12,12,10,1,0,252,66,65,65,65,66,92,64,64, + 64,64,240,11,15,30,11,1,253,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,6,0,3,32,0,192,10,12,24,11,1,0,252,0,67, + 0,65,0,65,0,65,0,66,0,124,0,76,0,70,0,67, + 0,67,0,225,192,7,12,12,9,1,0,60,198,128,128,224, + 56,12,2,2,130,196,248,9,12,24,10,1,0,255,128,136, + 128,136,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,62,0,10,12,24,12,1,0,225,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,12,12,24,12,0,0,240,240,32,64,48,64,48, + 64,16,128,24,128,9,128,9,0,13,0,7,0,6,0,6, + 0,16,12,24,16,0,0,241,15,33,132,33,132,33,132,50, + 196,50,72,18,104,20,104,28,40,28,56,8,48,8,16,11, + 12,24,12,0,0,249,224,32,128,49,128,25,0,14,0,6, + 0,6,0,11,0,25,128,48,128,32,192,241,224,11,12,24, + 11,0,0,225,224,48,128,49,128,25,0,10,0,14,0,4, + 0,4,0,4,0,4,0,4,0,31,0,8,12,12,10,1, + 0,255,130,134,4,12,24,16,48,96,65,193,255,4,18,18, + 6,1,253,240,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,240,7,18,18,9,1,253,128,128,192,64,64, + 32,32,48,16,16,24,8,8,4,4,6,2,2,4,18,18, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,24,40,44,44, + 68,70,130,130,7,1,1,9,1,254,254,4,4,4,6,0, + 10,192,96,32,16,7,9,9,9,1,0,60,68,132,4,60, + 196,132,140,118,9,14,28,10,0,0,64,0,192,0,64,0, + 64,0,64,0,70,0,89,0,96,128,64,128,64,128,64,128, + 65,0,97,0,62,0,6,9,9,8,1,0,60,68,128,128, + 128,128,128,196,120,8,14,14,10,1,0,6,2,2,2,2, + 62,66,130,130,130,130,130,70,59,7,9,9,9,1,0,60, + 68,130,130,254,128,128,66,60,6,14,14,6,1,0,28,36, + 64,64,64,248,64,64,64,64,64,64,64,240,10,13,26,10, + 0,252,62,192,67,0,129,0,129,0,194,0,60,0,48,0, + 120,0,39,128,192,128,128,128,193,0,62,0,8,14,14,10, + 1,0,64,192,64,64,64,76,82,98,66,66,66,66,66,231, + 3,12,12,5,1,0,192,192,0,64,192,64,64,64,64,64, + 64,224,5,16,16,5,254,252,24,24,0,8,24,8,8,8, + 8,8,8,8,8,8,16,224,8,14,14,10,1,0,64,192, + 64,64,64,79,68,72,112,112,88,76,70,231,3,14,14,5, + 1,0,64,192,64,64,64,64,64,64,64,64,64,64,64,224, + 13,9,18,15,1,0,204,96,82,144,99,16,66,16,66,16, + 66,16,66,16,66,16,231,56,8,9,9,10,1,0,76,210, + 98,66,66,66,66,66,231,8,9,9,10,1,0,60,66,129, + 129,129,129,130,66,60,8,13,13,10,1,252,206,114,65,65, + 65,65,66,98,92,64,64,64,240,9,13,26,10,1,252,29, + 0,99,0,129,0,129,0,129,0,129,0,129,0,71,0,57, + 0,1,0,1,0,1,0,7,128,6,9,9,8,1,0,92, + 228,96,64,64,64,64,64,240,5,9,9,7,1,0,112,136, + 128,192,48,8,136,136,240,5,12,12,7,1,0,64,64,64, + 248,64,64,64,64,64,64,72,112,8,9,9,10,1,0,198, + 66,66,66,66,66,66,70,59,9,9,18,9,0,0,243,128, + 97,0,33,0,50,0,18,0,18,0,28,0,12,0,8,0, + 13,9,18,13,0,0,242,56,99,16,35,16,37,16,53,160, + 20,160,24,224,24,192,24,64,9,9,18,10,0,0,243,128, + 33,0,50,0,28,0,12,0,22,0,34,0,33,0,243,128, + 9,13,26,9,0,252,243,128,97,0,33,0,50,0,18,0, + 20,0,28,0,12,0,8,0,8,0,16,0,176,0,224,0, + 7,9,9,8,1,0,254,132,8,24,48,32,98,194,254,5, + 18,18,6,1,253,8,16,32,32,32,32,32,32,64,224,32, + 32,32,32,32,32,32,24,1,20,20,4,2,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,5,18,18,6,0,253,192,32,32,32,32,32,32,32,56, + 16,32,32,32,32,32,32,64,128,9,4,8,9,0,4,48, + 0,125,128,79,0,134,0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,0,2,14, + 14,5,2,251,64,192,64,128,128,128,128,128,128,128,128,128, + 128,128,7,12,12,9,1,0,16,16,62,212,144,144,144,144, + 210,124,16,16,7,12,12,9,1,0,60,70,68,64,64,64, + 240,64,64,66,66,254,7,6,6,9,1,3,132,126,68,68, + 68,254,9,11,22,9,0,0,231,128,99,0,50,0,20,0, + 28,0,8,0,127,0,8,0,8,0,8,0,62,0,1,20, + 20,4,2,252,128,128,128,128,128,128,128,128,128,0,0,128, + 128,128,128,128,128,128,128,128,7,13,13,9,1,0,112,152, + 128,224,184,134,130,98,60,12,132,196,120,5,2,2,7,1, + 10,136,136,12,12,24,14,1,0,15,0,48,192,94,32,146, + 32,160,16,160,16,160,16,160,16,144,160,79,32,32,64,31, + 128,5,7,7,5,0,5,48,208,112,208,176,72,240,7,8, + 8,9,1,0,34,36,76,216,216,76,36,34,8,4,4,9, + 0,2,255,1,1,1,5,1,1,6,1,4,248,7,6,6, + 7,0,7,56,238,170,178,238,56,6,1,1,9,2,11,252, + 5,5,5,7,1,7,112,136,136,136,112,7,9,9,8,0, + 1,16,16,16,254,16,16,16,0,126,4,7,7,6,1,6, + 112,144,16,32,64,144,240,5,8,8,6,0,5,56,72,8, + 16,8,8,136,112,4,4,4,6,2,10,48,96,64,128,8, + 13,13,10,1,252,194,70,66,66,66,66,102,126,91,64,64, + 64,96,8,14,14,10,1,254,63,70,134,134,134,70,62,6, + 6,6,6,6,6,15,1,2,2,3,1,5,128,128,2,4, + 4,4,2,252,192,192,64,128,5,7,7,6,1,6,32,224, + 32,32,32,32,248,4,7,7,5,0,5,96,144,144,144,144, + 96,240,7,8,8,9,1,0,136,72,36,50,50,36,72,136, + 10,11,22,11,1,0,192,128,65,0,65,0,66,0,68,0, + 228,0,9,128,18,128,18,128,39,192,65,192,9,11,22,11, + 1,0,192,128,65,0,66,0,66,0,68,0,239,128,12,128, + 17,0,49,0,34,128,71,128,10,12,24,11,1,0,96,0, + 144,128,33,0,18,0,146,0,228,0,8,0,9,128,18,128, + 50,128,39,192,65,192,6,14,14,8,1,251,16,48,16,16, + 16,16,32,32,64,128,132,132,136,112,11,16,32,11,0,0, + 16,0,60,0,2,0,0,0,4,0,6,0,14,0,10,0, + 11,0,17,0,17,0,31,128,33,128,32,128,32,192,241,224, + 11,16,32,11,0,0,1,0,7,128,8,0,0,0,4,0, + 6,0,14,0,10,0,11,0,17,0,17,0,31,128,33,128, + 32,128,32,192,241,224,11,16,32,11,0,0,4,0,10,0, + 17,0,0,0,4,0,6,0,14,0,10,0,11,0,17,0, + 17,0,31,128,33,128,32,128,32,192,241,224,11,15,30,11, + 0,0,29,128,39,0,0,0,4,0,6,0,14,0,10,0, + 11,0,17,0,17,0,31,128,33,128,32,128,32,192,241,224, + 11,15,30,11,0,0,33,0,33,0,0,0,4,0,6,0, + 14,0,10,0,11,0,17,0,17,0,31,128,33,128,32,128, + 32,192,241,224,11,17,34,11,0,0,14,0,18,0,18,0, + 12,0,0,0,4,0,6,0,14,0,10,0,11,0,17,0, + 17,0,31,128,33,128,32,128,32,192,241,224,14,12,24,15, + 0,0,31,248,5,8,5,0,9,0,9,0,31,240,17,32, + 17,0,33,0,33,8,97,12,243,248,9,16,32,10,1,252, + 30,0,99,0,128,0,128,0,128,0,128,0,128,0,128,0, + 128,0,65,0,97,128,62,0,8,0,12,0,4,0,8,0, + 8,16,16,9,1,0,64,48,8,0,254,66,64,64,64,124, + 72,64,64,66,67,254,8,16,16,9,1,0,4,14,48,0, + 254,66,64,64,64,124,72,64,64,66,67,254,8,16,16,9, + 1,0,24,44,68,2,254,66,64,64,64,124,72,64,64,66, + 67,254,8,15,15,9,1,0,132,132,0,254,66,64,64,64, + 124,72,64,64,66,67,254,4,16,16,6,0,0,128,96,16, + 0,112,32,32,32,32,32,32,32,32,32,32,112,5,16,16, + 6,1,0,24,48,192,0,224,64,64,64,64,64,64,64,64, + 64,64,224,6,16,16,6,0,0,48,88,132,0,112,32,32, + 32,32,32,32,32,32,32,32,112,6,15,15,6,0,0,132, + 136,0,112,32,32,32,32,32,32,32,32,32,32,112,10,12, + 24,11,0,0,126,0,33,128,32,128,32,64,32,64,124,64, + 160,64,32,64,32,64,32,128,33,0,126,0,10,15,30,12, + 1,0,25,0,38,0,0,0,193,192,96,128,112,128,80,128, + 88,128,76,128,68,128,70,128,67,128,65,128,65,128,224,128, + 9,16,32,11,1,0,32,0,24,0,4,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,128,128, + 65,0,98,0,60,0,9,16,32,11,1,0,3,0,6,0, + 24,0,0,0,30,0,99,0,129,0,128,128,128,128,128,128, + 128,128,128,128,128,128,65,0,98,0,60,0,9,16,32,11, + 1,0,12,0,22,0,34,0,1,0,30,0,99,0,129,0, + 128,128,128,128,128,128,128,128,128,128,128,128,65,0,98,0, + 60,0,9,15,30,11,1,0,25,0,110,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,128,128, + 65,0,98,0,60,0,9,15,30,11,1,0,66,0,66,0, + 0,0,30,0,99,0,129,0,128,128,128,128,128,128,128,128, + 128,128,128,128,65,0,98,0,60,0,6,6,6,8,1,2, + 132,72,48,48,72,132,9,12,24,11,1,0,30,128,35,0, + 67,0,131,128,132,128,136,128,136,128,144,128,225,0,97,0, + 98,0,188,0,10,16,32,12,1,0,48,0,24,0,6,0, + 0,0,225,192,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,16,32,12,1,0, + 1,0,6,0,8,0,0,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,33,0,30,0, + 10,16,32,12,1,0,12,0,26,0,33,0,0,0,225,192, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,33,0,30,0,10,15,30,12,1,0,33,0,33,0, + 0,0,225,192,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,11,16,32,11,0,0, + 1,0,3,128,12,0,0,0,225,224,48,128,49,128,25,0, + 10,0,14,0,4,0,4,0,4,0,4,0,4,0,31,0, + 8,12,12,10,1,0,240,64,124,66,65,65,65,65,98,92, + 64,240,9,14,28,11,1,0,30,0,35,0,65,0,65,0, + 65,0,70,0,72,0,72,0,70,0,67,128,64,128,72,128, + 72,128,207,0,7,14,14,9,1,0,96,32,16,16,8,60, + 68,132,4,60,196,132,140,118,7,14,14,9,1,0,12,8, + 16,16,0,60,68,132,4,60,196,132,140,118,7,14,14,9, + 1,0,16,56,76,132,0,60,68,132,4,60,196,132,140,118, + 7,13,13,9,1,0,34,116,152,0,60,68,132,4,60,196, + 132,140,118,7,12,12,9,1,0,132,132,0,60,68,132,4, + 60,196,132,140,118,7,14,14,9,1,0,56,72,72,48,0, + 60,68,132,4,60,196,132,140,118,11,9,18,13,1,0,57, + 192,70,64,196,32,4,32,31,224,100,0,132,0,142,32,115, + 192,7,13,13,8,1,252,60,68,128,128,128,128,128,98,60, + 16,24,8,16,7,14,14,9,1,0,96,32,16,8,0,60, + 68,130,130,254,128,128,66,60,7,14,14,9,1,0,4,14, + 8,16,0,60,68,130,130,254,128,128,66,60,7,14,14,9, + 1,0,24,56,36,66,0,60,68,130,130,254,128,128,66,60, + 7,12,12,9,1,0,130,132,0,60,68,130,130,254,128,128, + 66,60,4,14,14,5,0,0,192,64,32,16,0,32,96,32, + 32,32,32,32,32,112,4,14,14,5,1,0,16,48,96,64, + 0,64,192,64,64,64,64,64,64,224,6,14,14,5,0,0, + 32,112,200,132,0,32,96,32,32,32,32,32,32,112,6,12, + 12,5,255,0,132,132,0,16,48,16,16,16,16,16,16,56, + 7,13,13,9,1,0,96,30,56,68,60,70,130,130,130,130, + 132,68,56,8,13,13,10,1,0,51,58,76,0,76,210,98, + 66,66,66,66,66,231,8,14,14,10,1,0,96,48,16,8, + 0,60,66,129,129,129,129,130,66,60,8,14,14,10,1,0, + 6,12,8,16,0,60,66,129,129,129,129,130,66,60,8,14, + 14,10,1,0,24,56,36,66,0,60,66,129,129,129,129,130, + 66,60,8,13,13,10,1,0,50,122,76,0,60,66,129,129, + 129,129,130,66,60,8,12,12,10,1,0,130,130,0,60,66, + 129,129,129,129,130,66,60,6,6,6,8,1,2,32,32,252, + 0,32,32,8,9,9,10,1,0,29,102,135,137,153,145,226, + 98,252,8,14,14,10,1,0,96,48,16,8,0,198,66,66, + 66,66,66,66,70,59,8,14,14,10,1,0,6,12,8,16, + 0,198,66,66,66,66,66,66,70,59,8,14,14,10,1,0, + 24,28,36,66,0,198,66,66,66,66,66,66,70,59,8,12, + 12,10,1,0,130,130,0,198,66,66,66,66,66,66,70,59, + 9,18,36,9,0,252,3,0,6,0,4,0,8,0,0,0, + 243,128,97,0,33,0,50,0,18,0,20,0,28,0,12,0, + 8,0,8,0,16,0,176,0,224,0,8,18,18,10,1,252, + 64,192,64,64,64,78,114,65,65,65,65,66,98,124,64,64, + 64,240,9,16,32,9,0,252,65,0,65,0,0,0,243,128, + 97,0,33,0,50,0,18,0,20,0,28,0,12,0,8,0, + 8,0,16,0,176,0,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 12 + Calculated Max Values w= 8 h=18 x= 2 y= 7 dx= 9 dy= 0 ascent=15 len=18 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =15 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12n[270] U8G_SECTION(".progmem.u8g_font_gdr12n") = { + 0,28,28,246,249,12,0,0,0,0,42,57,0,15,253,12, + 0,7,7,7,8,1,7,16,148,222,48,252,146,16,7,7, + 7,8,0,2,16,16,16,254,16,16,16,2,5,5,4,1, + 253,64,192,64,64,128,5,1,1,6,1,4,248,2,3,3, + 4,1,255,192,192,128,8,18,18,9,0,253,1,1,3,2, + 6,4,4,12,8,8,24,16,48,32,32,96,64,192,7,11, + 11,9,1,0,56,68,130,130,130,130,130,130,132,68,56,6, + 12,12,9,1,0,16,112,144,16,16,16,16,16,16,16,16, + 252,6,12,12,8,1,0,60,68,196,4,4,8,16,16,32, + 68,132,252,7,12,12,8,0,0,28,38,98,2,4,28,2, + 2,2,2,134,124,7,12,12,9,1,0,4,12,12,20,20, + 36,68,68,254,4,4,30,6,11,11,9,2,0,124,64,64, + 64,120,132,4,4,4,132,120,7,12,12,9,1,0,12,48, + 64,64,128,252,198,130,130,130,68,56,7,11,11,9,1,0, + 254,130,4,4,8,8,24,16,48,32,96,7,12,12,9,1, + 0,120,196,196,196,232,60,78,130,130,130,194,124,7,11,11, + 9,1,0,56,68,130,130,130,198,122,2,4,8,112}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=10 dx=16 dy= 0 ascent=16 len=30 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12r[1992] U8G_SECTION(".progmem.u8g_font_gdr12r") = { + 0,28,28,246,249,12,2,80,5,85,32,127,252,16,252,15, + 252,0,0,0,4,0,0,2,15,15,5,2,255,128,128,128, + 128,128,128,128,128,128,128,0,0,192,192,128,6,6,6,8, + 1,8,204,76,72,72,72,72,8,11,11,9,1,1,26,18, + 18,127,36,36,36,254,72,72,80,7,15,15,9,1,254,16, + 16,126,148,144,208,112,28,22,18,146,146,252,16,16,11,11, + 22,13,1,0,112,64,144,128,137,128,139,0,146,0,117,192, + 10,32,26,32,18,32,34,32,65,192,11,13,26,12,1,0, + 28,0,34,0,34,0,34,0,36,0,56,0,49,224,216,128, + 140,128,140,128,135,0,199,128,60,224,2,6,6,5,1,8, + 192,64,64,64,64,64,4,18,18,6,1,253,48,96,64,64, + 128,128,128,128,128,128,128,128,128,128,192,64,96,48,4,18, + 18,6,1,253,192,96,32,48,16,16,16,16,16,16,16,16, + 16,16,32,32,96,128,7,7,7,8,1,7,16,148,222,48, + 252,146,16,7,7,7,8,0,2,16,16,16,254,16,16,16, + 2,5,5,4,1,253,64,192,64,64,128,5,1,1,6,1, + 4,248,2,3,3,4,1,255,192,192,128,8,18,18,9,0, + 253,1,1,3,2,6,4,4,12,8,8,24,16,48,32,32, + 96,64,192,7,11,11,9,1,0,56,68,130,130,130,130,130, + 130,132,68,56,6,12,12,9,1,0,16,112,144,16,16,16, + 16,16,16,16,16,252,6,12,12,8,1,0,60,68,196,4, + 4,8,16,16,32,68,132,252,7,12,12,8,0,0,28,38, + 98,2,4,28,2,2,2,2,134,124,7,12,12,9,1,0, + 4,12,12,20,20,36,68,68,254,4,4,30,6,11,11,9, + 2,0,124,64,64,64,120,132,4,4,4,132,120,7,12,12, + 9,1,0,12,48,64,64,128,252,198,130,130,130,68,56,7, + 11,11,9,1,0,254,130,4,4,8,8,24,16,48,32,96, + 7,12,12,9,1,0,120,196,196,196,232,60,78,130,130,130, + 194,124,7,11,11,9,1,0,56,68,130,130,130,198,122,2, + 4,8,112,2,10,10,4,1,255,128,192,128,0,0,0,0, + 192,192,128,2,12,12,4,1,253,128,192,128,0,0,0,0, + 64,192,64,64,128,7,6,6,8,1,2,6,28,224,192,56, + 6,7,4,4,8,1,3,254,0,0,254,7,6,6,8,1, + 2,192,112,14,28,112,128,6,15,15,8,1,255,56,68,132, + 132,4,8,16,16,32,32,32,0,48,48,32,14,15,30,16, + 1,253,7,224,24,48,32,8,71,200,136,68,144,68,144,68, + 144,68,144,68,144,72,136,200,71,112,32,8,24,48,15,192, + 11,12,24,11,0,0,4,0,6,0,14,0,10,0,11,0, + 17,0,17,0,31,128,33,128,32,128,32,192,241,224,8,12, + 12,10,1,0,252,66,66,66,68,126,67,65,65,65,67,254, + 8,12,12,10,1,0,30,99,128,128,128,128,128,128,128,192, + 99,60,9,12,24,11,1,0,252,0,67,0,65,0,64,128, + 64,128,64,128,64,128,64,128,64,128,65,0,66,0,252,0, + 8,12,12,9,1,0,254,66,64,64,64,124,72,64,64,66, + 67,254,7,12,12,9,1,0,254,66,64,64,64,124,72,64, + 64,64,64,240,10,12,24,11,1,0,15,0,49,128,64,0, + 128,0,128,0,128,0,131,192,128,128,128,128,64,128,96,128, + 31,0,10,12,24,12,1,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,64,128,225,192, + 3,12,12,6,1,0,224,64,64,64,64,64,64,64,64,64, + 64,224,6,15,15,6,255,253,60,8,8,8,8,8,8,8, + 8,8,8,8,8,144,224,10,12,24,11,1,0,231,128,66, + 0,68,0,72,0,80,0,96,0,80,0,88,0,76,0,70, + 0,67,0,225,192,7,12,12,9,1,0,224,64,64,64,64, + 64,64,64,64,66,66,254,14,12,24,15,1,0,224,56,96, + 48,112,112,80,80,80,80,88,144,72,144,77,16,69,16,71, + 16,66,16,226,124,10,12,24,12,1,0,193,192,96,128,112, + 128,80,128,88,128,76,128,68,128,70,128,67,128,65,128,65, + 128,224,128,9,12,24,11,1,0,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,8,12,12,10,1,0,252,66,65,65,65,66,92,64,64, + 64,64,240,11,15,30,11,1,253,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,6,0,3,32,0,192,10,12,24,11,1,0,252,0,67, + 0,65,0,65,0,65,0,66,0,124,0,76,0,70,0,67, + 0,67,0,225,192,7,12,12,9,1,0,60,198,128,128,224, + 56,12,2,2,130,196,248,9,12,24,10,1,0,255,128,136, + 128,136,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,62,0,10,12,24,12,1,0,225,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,12,12,24,12,0,0,240,240,32,64,48,64,48, + 64,16,128,24,128,9,128,9,0,13,0,7,0,6,0,6, + 0,16,12,24,16,0,0,241,15,33,132,33,132,33,132,50, + 196,50,72,18,104,20,104,28,40,28,56,8,48,8,16,11, + 12,24,12,0,0,249,224,32,128,49,128,25,0,14,0,6, + 0,6,0,11,0,25,128,48,128,32,192,241,224,11,12,24, + 11,0,0,225,224,48,128,49,128,25,0,10,0,14,0,4, + 0,4,0,4,0,4,0,4,0,31,0,8,12,12,10,1, + 0,255,130,134,4,12,24,16,48,96,65,193,255,4,18,18, + 6,1,253,240,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,240,7,18,18,9,1,253,128,128,192,64,64, + 32,32,48,16,16,24,8,8,4,4,6,2,2,4,18,18, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,24,40,44,44, + 68,70,130,130,7,1,1,9,1,254,254,4,4,4,6,0, + 10,192,96,32,16,7,9,9,9,1,0,60,68,132,4,60, + 196,132,140,118,9,14,28,10,0,0,64,0,192,0,64,0, + 64,0,64,0,70,0,89,0,96,128,64,128,64,128,64,128, + 65,0,97,0,62,0,6,9,9,8,1,0,60,68,128,128, + 128,128,128,196,120,8,14,14,10,1,0,6,2,2,2,2, + 62,66,130,130,130,130,130,70,59,7,9,9,9,1,0,60, + 68,130,130,254,128,128,66,60,6,14,14,6,1,0,28,36, + 64,64,64,248,64,64,64,64,64,64,64,240,10,13,26,10, + 0,252,62,192,67,0,129,0,129,0,194,0,60,0,48,0, + 120,0,39,128,192,128,128,128,193,0,62,0,8,14,14,10, + 1,0,64,192,64,64,64,76,82,98,66,66,66,66,66,231, + 3,12,12,5,1,0,192,192,0,64,192,64,64,64,64,64, + 64,224,5,16,16,5,254,252,24,24,0,8,24,8,8,8, + 8,8,8,8,8,8,16,224,8,14,14,10,1,0,64,192, + 64,64,64,79,68,72,112,112,88,76,70,231,3,14,14,5, + 1,0,64,192,64,64,64,64,64,64,64,64,64,64,64,224, + 13,9,18,15,1,0,204,96,82,144,99,16,66,16,66,16, + 66,16,66,16,66,16,231,56,8,9,9,10,1,0,76,210, + 98,66,66,66,66,66,231,8,9,9,10,1,0,60,66,129, + 129,129,129,130,66,60,8,13,13,10,1,252,206,114,65,65, + 65,65,66,98,92,64,64,64,240,9,13,26,10,1,252,29, + 0,99,0,129,0,129,0,129,0,129,0,129,0,71,0,57, + 0,1,0,1,0,1,0,7,128,6,9,9,8,1,0,92, + 228,96,64,64,64,64,64,240,5,9,9,7,1,0,112,136, + 128,192,48,8,136,136,240,5,12,12,7,1,0,64,64,64, + 248,64,64,64,64,64,64,72,112,8,9,9,10,1,0,198, + 66,66,66,66,66,66,70,59,9,9,18,9,0,0,243,128, + 97,0,33,0,50,0,18,0,18,0,28,0,12,0,8,0, + 13,9,18,13,0,0,242,56,99,16,35,16,37,16,53,160, + 20,160,24,224,24,192,24,64,9,9,18,10,0,0,243,128, + 33,0,50,0,28,0,12,0,22,0,34,0,33,0,243,128, + 9,13,26,9,0,252,243,128,97,0,33,0,50,0,18,0, + 20,0,28,0,12,0,8,0,8,0,16,0,176,0,224,0, + 7,9,9,8,1,0,254,132,8,24,48,32,98,194,254,5, + 18,18,6,1,253,8,16,32,32,32,32,32,32,64,224,32, + 32,32,32,32,32,32,24,1,20,20,4,2,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,5,18,18,6,0,253,192,32,32,32,32,32,32,32,56, + 16,32,32,32,32,32,32,64,128,9,4,8,9,0,4,48, + 0,125,128,79,0,134,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=24 x= 2 y=13 dx=20 dy= 0 ascent=20 len=57 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14[5942] U8G_SECTION(".progmem.u8g_font_gdr14") = { + 0,35,33,244,248,14,3,95,7,136,32,255,251,20,250,18, + 251,0,0,0,5,0,0,2,17,17,6,2,0,64,192,192, + 192,192,192,192,192,192,192,192,192,128,0,192,192,192,6,8, + 8,10,2,9,204,204,204,204,204,204,204,140,10,13,26,11, + 1,1,12,128,9,128,9,0,9,0,127,192,19,0,18,0, + 50,0,255,128,36,0,100,0,68,0,76,0,9,18,36,11, + 1,254,12,0,12,0,63,128,109,128,205,0,204,0,236,0, + 124,0,63,0,15,0,13,128,13,128,141,128,205,128,239,0, + 126,0,12,0,12,0,14,14,28,16,1,0,56,24,72,48, + 204,96,204,64,204,192,205,128,75,0,114,56,6,76,12,204, + 8,204,16,204,48,200,96,112,14,16,32,16,1,0,15,0, + 25,128,49,128,49,128,49,0,51,0,60,0,60,252,124,112, + 102,48,199,48,195,176,193,224,192,224,96,176,63,28,2,8, + 8,6,2,9,192,192,192,192,192,192,192,128,6,22,22,7, + 1,252,12,24,16,32,96,96,64,192,192,192,192,192,192,192, + 192,64,96,96,32,48,24,12,6,22,22,7,0,252,192,96, + 48,16,24,24,8,12,12,12,12,12,12,12,12,8,24,24, + 16,32,96,192,9,10,20,10,1,8,24,0,24,0,137,0, + 235,128,60,0,60,0,235,0,137,0,24,0,24,0,8,8, + 8,9,1,2,24,24,24,255,24,24,24,24,4,6,6,5, + 0,253,112,240,48,48,32,64,6,1,1,8,1,5,252,2, + 3,3,5,2,0,192,192,192,9,22,44,11,1,252,0,128, + 1,128,1,0,3,0,3,0,2,0,6,0,6,0,12,0, + 12,0,8,0,24,0,24,0,16,0,48,0,48,0,96,0, + 96,0,64,0,192,0,192,0,128,0,9,14,28,11,1,0, + 28,0,39,0,99,0,67,128,193,128,193,128,193,128,193,128, + 193,128,193,128,193,0,97,0,98,0,28,0,8,14,14,11, + 2,0,24,120,152,24,24,24,24,24,24,24,24,24,24,255, + 8,14,14,11,1,0,60,103,195,131,3,6,6,12,24,24, + 48,97,193,255,9,14,28,12,1,0,30,0,103,0,195,0, + 3,0,2,0,4,0,30,0,3,0,1,128,1,128,1,128, + 1,128,195,0,60,0,10,14,28,11,0,0,3,0,7,0, + 7,0,11,0,27,0,19,0,35,0,99,0,67,0,255,192, + 3,0,3,0,3,0,15,192,9,14,28,11,0,0,0,128, + 63,0,32,0,32,0,96,0,126,0,67,0,1,128,1,128, + 1,128,1,128,1,0,195,0,60,0,9,14,28,11,1,0, + 3,0,12,0,48,0,32,0,96,0,222,0,227,0,193,128, + 193,128,193,128,193,128,97,0,99,0,30,0,9,13,26,11, + 1,0,127,128,129,0,129,0,3,0,2,0,6,0,4,0, + 12,0,8,0,24,0,24,0,48,0,32,0,9,14,28,11, + 1,0,62,0,71,0,195,0,195,0,195,0,118,0,30,0, + 39,0,99,128,193,128,193,128,193,128,99,0,60,0,9,14, + 28,11,1,0,30,0,99,0,67,0,193,128,193,128,193,128, + 193,128,99,128,61,128,1,0,3,0,6,0,8,0,112,0, + 2,11,11,5,2,0,192,192,192,0,0,0,0,0,192,192, + 192,4,14,14,5,0,253,48,48,48,0,0,0,0,0,112, + 240,48,48,32,64,8,7,7,10,1,3,1,15,120,192,112, + 30,3,8,4,4,10,1,4,255,0,0,255,8,7,7,10, + 1,3,192,120,15,3,30,240,128,8,17,17,10,1,0,62, + 103,195,195,3,3,6,12,12,24,24,24,16,0,24,24,24, + 17,19,57,19,1,252,1,240,0,6,28,0,24,6,0,48, + 3,0,32,3,0,97,211,128,66,49,128,196,49,128,204,49, + 128,204,49,128,204,49,128,204,49,0,236,51,0,102,114,0, + 99,156,0,48,0,0,56,2,0,14,15,0,3,240,0,13, + 14,28,14,0,0,2,0,3,0,5,0,5,128,5,128,8, + 128,8,192,8,192,31,192,16,96,16,96,32,48,32,48,248, + 120,11,14,28,12,0,0,127,0,177,192,48,192,48,192,48, + 192,49,128,63,128,49,192,48,224,48,96,48,96,48,96,48, + 192,255,128,11,14,28,12,1,0,7,192,24,96,32,0,96, + 0,64,0,192,0,192,0,192,0,192,0,192,0,96,0,96, + 32,56,64,15,128,13,14,28,14,0,0,127,128,176,224,48, + 112,48,48,48,24,48,24,48,24,48,24,48,24,48,24,48, + 48,48,112,48,224,255,128,11,14,28,11,0,0,255,192,48, + 64,48,64,48,0,48,0,48,0,63,128,49,0,48,0,48, + 0,48,0,48,32,48,96,255,192,10,14,28,11,0,0,255, + 192,48,64,48,64,48,0,48,0,48,0,63,128,49,0,48, + 0,48,0,48,0,48,0,48,0,252,0,11,14,28,13,1, + 0,15,128,16,192,32,0,96,0,192,0,192,0,192,0,195, + 224,192,192,192,192,96,192,96,192,48,192,31,0,15,14,28, + 15,0,0,252,126,48,24,48,24,48,24,48,24,48,24,63, + 248,48,24,48,24,48,24,48,24,48,24,48,24,252,126,6, + 14,14,7,0,0,252,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,18,36,7,254,252,31,128,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,4,0,72,0,240,0,13,14,28, + 13,0,0,252,240,48,64,48,128,49,0,50,0,54,0,60, + 0,54,0,54,0,51,0,49,128,48,192,48,96,252,56,11, + 14,28,11,0,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,32,48,64,255, + 192,17,14,42,19,1,0,240,7,0,112,14,0,112,14,0, + 120,30,0,104,22,0,108,22,0,108,38,0,102,38,0,102, + 102,0,99,70,0,99,198,0,97,134,0,97,134,0,241,15, + 128,15,14,28,15,0,0,240,126,48,24,56,24,60,24,52, + 24,50,24,51,24,49,152,48,152,48,216,48,120,48,56,48, + 56,252,24,12,14,28,14,1,0,15,128,48,192,32,96,96, + 96,192,48,192,48,192,48,192,48,192,48,192,48,96,96,96, + 64,48,128,31,0,11,14,28,12,0,0,127,128,176,192,48, + 96,48,96,48,96,48,96,48,192,63,0,48,0,48,0,48, + 0,48,0,48,0,252,0,14,17,34,14,1,253,15,128,48, + 192,32,96,96,96,192,48,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,31,0,1,128,0,196,0,56,13, + 14,28,13,0,0,127,0,177,128,48,192,48,192,48,192,48, + 128,49,0,62,0,51,0,49,0,49,128,48,192,48,192,252, + 120,9,14,28,11,1,0,62,0,99,0,192,0,192,0,224, + 0,120,0,62,0,15,0,3,128,1,128,129,128,129,0,195, + 0,124,0,12,14,28,13,0,0,255,240,134,16,134,16,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,31,128,15,14,28,15,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,14,14,28,15,0,0,248,60,48, + 24,48,16,24,16,24,48,24,32,12,96,12,64,4,64,6, + 192,6,128,3,128,3,128,1,0,19,14,42,20,0,0,248, + 67,224,48,96,128,48,96,128,48,224,128,16,177,128,16,177, + 0,25,145,0,25,25,0,25,25,0,11,11,0,14,14,0, + 14,14,0,14,6,0,4,6,0,14,14,28,14,0,0,252, + 248,48,48,24,96,28,192,12,128,7,128,3,0,3,128,5, + 128,12,192,24,96,16,112,48,48,248,124,14,14,28,14,0, + 0,224,124,48,48,24,32,24,96,12,64,6,192,7,128,3, + 0,3,0,3,0,3,0,3,0,3,0,15,192,10,14,28, + 12,1,0,127,192,65,128,129,128,3,0,6,0,6,0,12, + 0,28,0,24,0,48,0,48,0,96,64,192,64,255,192,5, + 22,22,7,1,252,248,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,248,9,22,44,11,1, + 252,128,0,192,0,192,0,64,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,8,0,12,0,4,0,4,0,6, + 0,2,0,3,0,3,0,1,0,1,128,0,128,5,22,22, + 8,1,252,248,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,248,9,11,22,11,1,6,8, + 0,12,0,28,0,22,0,54,0,34,0,35,0,99,0,65, + 128,65,128,129,128,9,1,2,11,1,253,255,128,5,5,5, + 7,0,12,224,96,48,16,8,10,10,20,11,1,0,30,0, + 99,0,195,0,3,0,31,0,99,0,195,0,195,0,199,0, + 123,192,10,17,34,12,1,0,96,0,224,0,96,0,96,0, + 96,0,96,0,96,0,103,0,121,128,113,192,96,192,96,192, + 96,192,96,192,96,128,113,0,30,0,9,10,20,10,1,0, + 15,0,49,128,96,0,192,0,192,0,192,0,192,0,96,0, + 113,128,30,0,11,17,34,12,1,0,1,128,7,128,1,128, + 1,128,1,128,1,128,1,128,31,128,35,128,65,128,193,128, + 193,128,193,128,193,128,225,128,103,160,57,192,9,10,20,11, + 1,0,30,0,33,0,65,128,255,128,192,0,192,0,192,0, + 224,0,113,128,62,0,9,17,34,7,0,0,7,128,9,0, + 16,0,48,0,48,0,48,0,48,0,126,0,176,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,252,0,12,15, + 30,12,0,251,31,48,49,192,96,192,96,192,96,192,49,128, + 31,0,24,0,56,0,31,192,96,112,192,48,192,48,96,96, + 63,128,13,17,34,13,0,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,96,56,96,48,96,48,96, + 48,96,48,96,48,96,48,96,253,248,6,15,15,6,0,0, + 48,48,48,0,0,48,240,48,48,48,48,48,48,48,252,7, + 20,20,6,253,251,6,6,6,0,0,6,30,6,6,6,6, + 6,6,6,6,6,6,4,8,240,12,17,34,12,0,0,48, + 0,240,0,48,0,48,0,48,0,48,0,48,0,49,224,49, + 128,51,0,52,0,60,0,54,0,51,0,49,128,48,192,248, + 240,6,17,17,6,0,0,48,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,10,30,20,0,0,113,199, + 128,182,104,192,56,112,192,48,96,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,253,251,240,13,10,20,13, + 0,0,113,192,182,96,56,96,48,96,48,96,48,96,48,96, + 48,96,48,96,253,248,10,10,20,12,1,0,30,0,35,128, + 65,128,192,192,192,192,192,192,192,192,224,128,113,0,30,0, + 11,15,30,12,0,251,115,128,188,192,56,224,48,96,48,96, + 48,96,48,96,48,64,56,192,55,0,48,0,48,0,48,0, + 48,0,252,0,11,15,30,12,1,251,30,128,35,128,97,128, + 193,128,193,128,193,128,193,128,225,128,99,128,61,128,1,128, + 1,128,1,128,1,128,7,224,9,10,20,9,0,0,51,128, + 252,128,56,0,48,0,48,0,48,0,48,0,48,0,48,0, + 252,0,7,10,10,9,1,0,124,204,192,224,120,30,6,134, + 134,248,8,14,14,8,0,0,16,48,48,48,127,176,48,48, + 48,48,48,48,49,30,11,10,20,12,1,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,10,20,11,0,0,249,224,32,64,48,128,48,128,25,128, + 25,0,9,0,14,0,6,0,4,0,16,10,20,16,0,0, + 248,143,33,130,49,196,49,196,19,100,26,108,26,40,12,56, + 12,56,12,16,11,10,20,12,0,0,249,224,48,128,25,0, + 15,0,6,0,14,0,11,0,17,128,32,192,241,224,12,15, + 30,11,255,251,124,240,16,32,24,64,24,64,12,192,12,128, + 4,128,7,0,3,0,3,0,2,0,6,0,4,0,120,0, + 240,0,8,10,10,10,1,0,255,131,134,12,8,24,48,97, + 65,255,6,22,22,8,1,252,4,24,16,48,48,48,56,24, + 24,24,48,240,24,24,24,24,48,48,48,48,24,4,2,24, + 24,5,2,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,6,22,22,8, + 1,252,128,96,48,48,48,48,96,96,96,96,60,16,32,96, + 96,112,48,48,48,32,96,128,10,4,8,11,1,5,48,64, + 124,128,159,0,135,0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,5,0,0,2,16,16, + 6,2,250,192,192,128,64,192,192,192,192,192,192,192,192,192, + 192,192,128,9,14,28,11,1,0,12,0,12,0,31,128,109, + 128,76,0,204,0,204,0,204,0,204,0,236,128,125,128,63, + 0,12,0,12,0,10,14,28,11,0,0,7,128,24,192,16, + 128,48,128,48,0,48,0,48,0,126,0,48,0,48,0,48, + 0,32,64,32,64,255,192,9,7,14,11,1,3,221,128,119, + 0,99,0,99,0,115,0,127,0,128,128,12,14,28,11,255, + 0,225,240,48,64,48,192,25,128,29,128,15,0,7,0,6, + 0,63,192,6,0,6,0,6,0,6,0,31,128,2,24,24, + 5,2,251,192,192,192,192,192,192,192,192,192,192,128,0,0, + 64,192,192,192,192,192,192,192,192,192,192,9,16,32,11,1, + 0,30,0,99,0,98,0,112,0,56,0,94,0,199,0,195, + 128,225,128,113,128,63,0,15,0,7,0,67,0,99,0,62, + 0,7,3,3,9,1,12,198,198,198,15,14,28,16,0,0, + 7,192,24,48,49,248,98,44,198,6,204,6,204,6,204,6, + 204,6,206,38,102,76,51,152,24,48,7,192,6,8,8,6, + 0,6,112,152,24,56,120,124,0,124,9,10,20,11,1,0, + 17,128,17,0,34,0,102,0,204,0,204,0,102,0,34,0, + 17,0,17,128,10,5,10,11,0,2,255,192,0,192,0,192, + 0,192,0,192,6,1,1,8,1,5,252,8,8,8,8,0, + 8,60,66,189,149,153,153,86,60,7,1,1,11,2,13,254, + 4,5,5,8,2,9,96,240,240,240,96,8,10,10,9,1, + 2,24,24,24,24,255,24,24,24,0,255,6,8,8,8,1, + 7,120,140,140,8,16,32,68,252,7,8,8,7,255,7,60, + 102,6,28,6,6,134,120,5,5,5,7,2,12,24,48,32, + 64,192,12,15,30,13,1,251,96,192,224,192,96,192,96,192, + 96,192,96,192,96,192,113,192,127,208,92,224,64,0,64,0, + 96,0,96,0,112,0,13,17,34,14,0,253,31,248,99,96, + 195,96,195,96,195,96,227,96,115,96,63,96,3,96,3,96, + 3,96,3,96,3,96,3,96,3,96,3,96,15,248,2,3, + 3,3,1,6,192,192,192,4,5,5,5,1,251,96,96,112, + 48,192,6,8,8,8,1,7,48,240,48,48,48,48,48,252, + 4,8,8,6,1,6,96,240,240,240,240,96,0,240,8,10, + 10,11,2,0,136,140,68,98,51,51,102,68,140,136,12,14, + 28,13,0,0,24,96,120,192,24,192,25,128,27,0,27,0, + 126,0,4,96,12,224,25,96,18,96,51,240,96,96,192,240, + 13,14,28,14,0,0,48,16,240,32,48,96,48,64,48,128, + 48,128,249,0,3,120,2,152,4,24,12,48,8,32,16,72, + 49,248,12,14,28,14,1,0,112,32,152,64,24,64,56,128, + 77,128,141,0,114,0,6,96,4,224,9,96,25,96,19,240, + 32,96,96,240,8,16,16,10,1,250,24,24,16,4,12,12, + 12,24,48,96,96,192,195,195,230,124,13,20,40,14,0,0, + 16,0,28,0,14,0,3,0,0,128,0,0,2,0,3,0, + 5,0,5,128,5,128,8,128,8,192,8,192,31,192,16,96, + 16,96,32,48,32,48,248,120,13,20,40,14,0,0,0,128, + 0,192,3,160,6,0,0,0,0,0,2,0,3,0,5,0, + 5,128,5,128,8,128,8,192,8,192,31,192,16,96,16,96, + 32,48,32,48,248,120,13,20,40,14,0,0,2,0,7,0, + 13,128,8,64,16,0,0,0,2,0,3,0,5,0,5,128, + 5,128,8,128,8,192,8,192,31,192,16,96,16,96,32,48, + 32,48,248,120,13,19,38,14,0,0,4,64,14,96,19,192, + 0,0,0,0,2,0,3,0,5,0,5,128,5,128,8,128, + 8,192,8,192,31,192,16,96,16,96,32,48,32,48,248,120, + 13,18,36,14,0,0,8,64,12,96,8,64,0,0,2,0, + 3,0,5,0,5,128,5,128,8,128,8,192,8,192,31,192, + 16,96,16,96,32,48,32,48,248,120,13,20,40,14,0,0, + 2,0,7,0,7,128,7,0,0,0,0,0,2,0,3,0, + 5,0,5,128,5,128,8,128,8,192,8,192,31,192,16,96, + 16,96,32,48,32,48,248,120,18,14,42,18,0,0,7,255, + 128,1,96,128,3,96,128,2,96,0,6,96,0,6,96,0, + 7,255,0,12,98,0,8,96,0,24,96,0,16,96,0,16, + 96,64,48,96,64,249,255,128,11,19,38,12,1,251,7,192, + 24,96,32,0,96,0,64,0,192,0,192,0,192,0,192,0, + 192,0,224,0,96,128,113,192,62,0,8,0,4,0,14,0, + 6,0,24,0,11,20,40,11,0,0,32,0,56,0,28,0, + 6,0,1,0,0,0,255,192,48,64,48,64,48,0,48,0, + 48,0,63,128,49,0,48,0,48,0,48,0,48,32,48,96, + 255,192,11,20,40,11,0,0,1,0,1,128,7,0,12,0, + 0,0,0,0,255,192,48,64,48,64,48,0,48,0,48,0, + 63,128,49,0,48,0,48,0,48,0,48,32,48,96,255,192, + 11,20,40,11,0,0,4,0,14,0,27,0,48,128,0,0, + 0,0,255,192,48,64,48,64,48,0,48,0,48,0,63,128, + 49,0,48,0,48,0,48,0,48,32,48,96,255,192,11,18, + 36,11,0,0,16,128,49,128,49,128,0,0,255,192,48,64, + 48,64,48,0,48,0,48,0,63,128,49,0,48,0,48,0, + 48,0,48,32,48,96,255,192,6,20,20,7,0,0,128,192, + 112,24,0,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,252,7,20,20,7,0,0,4,14,28,48,64,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,252,7,20,20,7, + 0,0,16,56,108,134,0,0,252,48,48,48,48,48,48,48, + 48,48,48,48,48,252,7,18,18,7,0,0,66,198,198,0, + 252,48,48,48,48,48,48,48,48,48,48,48,48,252,13,14, + 28,14,0,0,127,128,176,224,48,112,48,48,48,24,48,24, + 254,24,48,24,48,24,48,24,48,48,48,112,48,224,255,128, + 15,19,38,15,0,0,2,32,7,32,9,192,0,0,0,0, + 240,126,48,24,56,24,60,24,52,24,50,24,51,24,49,152, + 48,152,48,216,48,120,48,56,48,56,252,24,12,20,40,14, + 1,0,16,0,56,0,12,0,2,0,1,0,0,0,15,128, + 48,192,32,96,96,96,192,48,192,48,192,48,192,48,192,48, + 192,48,96,96,96,64,48,128,31,0,12,20,40,14,1,0, + 1,0,1,192,3,0,12,0,0,0,0,0,15,128,48,192, + 32,96,96,96,192,48,192,48,192,48,192,48,192,48,192,48, + 96,96,96,64,48,128,31,0,12,20,40,14,1,0,6,0, + 14,0,11,0,16,128,32,0,0,0,15,128,48,192,32,96, + 96,96,192,48,192,48,192,48,192,48,192,48,192,48,96,96, + 96,64,48,128,31,0,12,19,38,14,1,0,8,128,28,64, + 55,128,0,0,0,0,15,128,48,192,32,96,96,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,64,48,128, + 31,0,12,18,36,14,1,0,16,128,24,192,16,128,0,0, + 15,128,48,192,32,96,96,96,192,48,192,48,192,48,192,48, + 192,48,192,48,96,96,96,64,48,128,31,0,7,7,7,9, + 1,3,194,102,60,24,60,102,194,12,15,30,14,1,255,15, + 48,48,224,32,224,64,224,193,176,195,48,194,48,198,48,204, + 48,200,48,88,32,112,64,112,128,207,0,128,0,15,20,40, + 15,0,0,8,0,14,0,7,0,1,128,0,64,0,0,252, + 126,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,24,48,28,96,7,192,15,20,40,15,0, + 0,0,64,0,96,1,192,3,0,0,0,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,24,48,28,96,7,192,15,20,40,15,0,0,1, + 0,3,128,6,192,12,96,0,0,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,15,18,36,15,0,0,4,32,12, + 96,12,96,0,0,252,126,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,24,48,28,96,7, + 192,14,20,40,14,0,0,0,128,0,224,1,128,6,0,0, + 0,0,0,224,124,48,48,24,32,24,96,12,64,6,192,7, + 128,3,0,3,0,3,0,3,0,3,0,3,0,15,192,11, + 14,28,12,0,0,252,0,48,0,48,0,63,128,48,192,48, + 96,48,96,48,96,48,96,48,192,63,128,48,0,48,0,252, + 0,13,17,34,13,0,0,7,128,8,192,16,96,48,96,48, + 96,48,224,51,192,55,0,54,0,55,0,51,192,48,240,48, + 56,48,24,52,24,50,16,243,224,10,17,34,11,1,0,96, + 0,48,0,16,0,8,0,4,0,0,0,0,0,30,0,99, + 0,195,0,3,0,31,0,99,0,195,0,195,0,199,0,123, + 192,10,17,34,11,1,0,3,0,6,0,12,0,8,0,16, + 0,0,0,0,0,30,0,99,0,195,0,3,0,31,0,99, + 0,195,0,195,0,199,0,123,192,10,17,34,11,1,0,24, + 0,28,0,54,0,98,0,65,0,0,0,0,0,30,0,99, + 0,195,0,3,0,31,0,99,0,195,0,195,0,199,0,123, + 192,10,15,30,11,1,0,57,0,78,0,0,0,0,0,0, + 0,30,0,99,0,195,0,3,0,31,0,99,0,195,0,195, + 0,199,0,123,192,10,15,30,11,1,0,33,0,99,0,99, + 0,0,0,0,0,30,0,99,0,195,0,3,0,31,0,99, + 0,195,0,195,0,199,0,123,192,10,16,32,11,1,0,28, + 0,60,0,60,0,24,0,0,0,0,0,30,0,99,0,195, + 0,3,0,31,0,99,0,195,0,195,0,199,0,123,192,14, + 10,20,16,1,0,30,112,99,152,195,12,131,12,31,252,115, + 0,195,0,195,0,197,132,120,248,9,15,30,10,1,251,15, + 0,49,128,96,0,192,0,192,0,192,0,192,0,192,0,99, + 0,124,0,16,0,8,0,28,0,12,0,48,0,9,17,34, + 11,1,0,48,0,112,0,24,0,8,0,4,0,0,0,0, + 0,30,0,33,0,65,128,255,128,192,0,192,0,192,0,224, + 0,113,128,62,0,9,17,34,11,1,0,3,0,6,0,6, + 0,12,0,8,0,0,0,0,0,30,0,33,0,65,128,255, + 128,192,0,192,0,192,0,224,0,113,128,62,0,9,17,34, + 11,1,0,12,0,28,0,54,0,35,0,65,0,0,0,0, + 0,30,0,33,0,65,128,255,128,192,0,192,0,192,0,224, + 0,113,128,62,0,9,15,30,11,1,0,33,0,49,128,33, + 0,0,0,0,0,30,0,33,0,65,128,255,128,192,0,192, + 0,192,0,224,0,113,128,62,0,6,17,17,6,0,0,192, + 96,32,48,16,0,0,48,240,48,48,48,48,48,48,48,252, + 7,17,17,6,0,0,12,14,24,16,32,0,0,48,240,48, + 48,48,48,48,48,48,252,7,17,17,6,0,0,48,56,104, + 196,130,0,0,48,240,48,48,48,48,48,48,48,252,7,15, + 15,6,0,0,198,198,198,0,0,48,240,48,48,48,48,48, + 48,48,252,9,16,32,11,1,0,48,0,91,128,12,0,50, + 0,3,0,1,0,31,128,99,128,67,128,193,128,193,128,193, + 128,193,0,227,0,98,0,60,0,13,15,30,13,0,0,14, + 64,19,128,0,0,0,0,0,0,113,192,182,96,56,96,48, + 96,48,96,48,96,48,96,48,96,48,96,253,248,10,17,34, + 12,1,0,48,0,48,0,24,0,12,0,4,0,0,0,0, + 0,30,0,35,128,65,128,192,192,192,192,192,192,192,192,224, + 128,113,0,30,0,10,17,34,12,1,0,3,0,3,0,6, + 0,4,0,8,0,0,0,0,0,30,0,35,128,65,128,192, + 192,192,192,192,192,192,192,224,128,113,0,30,0,10,17,34, + 12,1,0,12,0,30,0,18,0,33,0,64,128,0,0,0, + 0,30,0,35,128,65,128,192,192,192,192,192,192,192,192,224, + 128,113,0,30,0,10,15,30,12,1,0,56,128,71,0,0, + 0,0,0,0,0,30,0,35,128,65,128,192,192,192,192,192, + 192,192,192,224,128,113,0,30,0,10,15,30,12,1,0,49, + 128,49,128,33,0,0,0,0,0,30,0,35,128,65,128,192, + 192,192,192,192,192,192,192,224,128,113,0,30,0,8,7,7, + 9,1,3,24,24,0,255,0,24,24,10,12,24,12,1,255, + 0,64,30,192,35,128,67,192,194,192,196,192,200,192,216,192, + 240,128,113,0,222,0,128,0,11,17,34,12,1,0,48,0, + 24,0,24,0,12,0,4,0,0,0,0,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,17,34,12,1,0,3,0,3,128,6,0,4,0,8,0, + 0,0,0,0,97,128,231,128,97,128,97,128,97,128,97,128, + 97,128,97,128,103,160,57,192,11,17,34,12,1,0,12,0, + 14,0,26,0,49,0,32,128,0,0,0,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,15,30,12,1,0,49,128,49,128,49,128,0,0,0,0, + 97,128,231,128,97,128,97,128,97,128,97,128,97,128,97,128, + 103,160,57,192,12,22,44,11,255,251,0,192,0,192,1,128, + 3,0,2,0,0,0,0,0,124,240,16,32,24,64,24,64, + 12,192,12,128,4,128,7,0,3,0,3,0,2,0,6,0, + 4,0,120,0,240,0,11,22,44,12,0,251,48,0,240,0, + 48,0,48,0,48,0,48,0,48,0,51,128,60,192,56,224, + 48,96,48,96,48,96,48,96,48,64,56,128,55,0,48,0, + 48,0,48,0,48,0,252,0,12,20,40,11,255,251,12,96, + 12,96,8,64,0,0,0,0,124,240,16,32,24,64,24,64, + 12,192,12,128,4,128,7,0,3,0,3,0,2,0,6,0, + 4,0,120,0,240,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=10 h=22 x= 2 y= 8 dx=12 dy= 0 ascent=18 len=44 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14n[445] U8G_SECTION(".progmem.u8g_font_gdr14n") = { + 0,35,33,244,248,14,0,0,0,0,42,57,0,18,252,14, + 0,9,10,20,10,1,8,24,0,24,0,137,0,235,128,60, + 0,60,0,235,0,137,0,24,0,24,0,8,8,8,9,1, + 2,24,24,24,255,24,24,24,24,4,6,6,5,0,253,112, + 240,48,48,32,64,6,1,1,8,1,5,252,2,3,3,5, + 2,0,192,192,192,9,22,44,11,1,252,0,128,1,128,1, + 0,3,0,3,0,2,0,6,0,6,0,12,0,12,0,8, + 0,24,0,24,0,16,0,48,0,48,0,96,0,96,0,64, + 0,192,0,192,0,128,0,9,14,28,11,1,0,28,0,39, + 0,99,0,67,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,0,97,0,98,0,28,0,8,14,14,11,2,0,24, + 120,152,24,24,24,24,24,24,24,24,24,24,255,8,14,14, + 11,1,0,60,103,195,131,3,6,6,12,24,24,48,97,193, + 255,9,14,28,12,1,0,30,0,103,0,195,0,3,0,2, + 0,4,0,30,0,3,0,1,128,1,128,1,128,1,128,195, + 0,60,0,10,14,28,11,0,0,3,0,7,0,7,0,11, + 0,27,0,19,0,35,0,99,0,67,0,255,192,3,0,3, + 0,3,0,15,192,9,14,28,11,0,0,0,128,63,0,32, + 0,32,0,96,0,126,0,67,0,1,128,1,128,1,128,1, + 128,1,0,195,0,60,0,9,14,28,11,1,0,3,0,12, + 0,48,0,32,0,96,0,222,0,227,0,193,128,193,128,193, + 128,193,128,97,0,99,0,30,0,9,13,26,11,1,0,127, + 128,129,0,129,0,3,0,2,0,6,0,4,0,12,0,8, + 0,24,0,24,0,48,0,32,0,9,14,28,11,1,0,62, + 0,71,0,195,0,195,0,195,0,118,0,30,0,39,0,99, + 128,193,128,193,128,193,128,99,0,60,0,9,14,28,11,1, + 0,30,0,99,0,67,0,193,128,193,128,193,128,193,128,99, + 128,61,128,1,0,3,0,6,0,8,0,112,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=24 x= 2 y=12 dx=20 dy= 0 ascent=19 len=57 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14r[2791] U8G_SECTION(".progmem.u8g_font_gdr14r") = { + 0,35,33,244,248,14,3,95,7,136,32,127,251,19,251,18, + 251,0,0,0,5,0,0,2,17,17,6,2,0,64,192,192, + 192,192,192,192,192,192,192,192,192,128,0,192,192,192,6,8, + 8,10,2,9,204,204,204,204,204,204,204,140,10,13,26,11, + 1,1,12,128,9,128,9,0,9,0,127,192,19,0,18,0, + 50,0,255,128,36,0,100,0,68,0,76,0,9,18,36,11, + 1,254,12,0,12,0,63,128,109,128,205,0,204,0,236,0, + 124,0,63,0,15,0,13,128,13,128,141,128,205,128,239,0, + 126,0,12,0,12,0,14,14,28,16,1,0,56,24,72,48, + 204,96,204,64,204,192,205,128,75,0,114,56,6,76,12,204, + 8,204,16,204,48,200,96,112,14,16,32,16,1,0,15,0, + 25,128,49,128,49,128,49,0,51,0,60,0,60,252,124,112, + 102,48,199,48,195,176,193,224,192,224,96,176,63,28,2,8, + 8,6,2,9,192,192,192,192,192,192,192,128,6,22,22,7, + 1,252,12,24,16,32,96,96,64,192,192,192,192,192,192,192, + 192,64,96,96,32,48,24,12,6,22,22,7,0,252,192,96, + 48,16,24,24,8,12,12,12,12,12,12,12,12,8,24,24, + 16,32,96,192,9,10,20,10,1,8,24,0,24,0,137,0, + 235,128,60,0,60,0,235,0,137,0,24,0,24,0,8,8, + 8,9,1,2,24,24,24,255,24,24,24,24,4,6,6,5, + 0,253,112,240,48,48,32,64,6,1,1,8,1,5,252,2, + 3,3,5,2,0,192,192,192,9,22,44,11,1,252,0,128, + 1,128,1,0,3,0,3,0,2,0,6,0,6,0,12,0, + 12,0,8,0,24,0,24,0,16,0,48,0,48,0,96,0, + 96,0,64,0,192,0,192,0,128,0,9,14,28,11,1,0, + 28,0,39,0,99,0,67,128,193,128,193,128,193,128,193,128, + 193,128,193,128,193,0,97,0,98,0,28,0,8,14,14,11, + 2,0,24,120,152,24,24,24,24,24,24,24,24,24,24,255, + 8,14,14,11,1,0,60,103,195,131,3,6,6,12,24,24, + 48,97,193,255,9,14,28,12,1,0,30,0,103,0,195,0, + 3,0,2,0,4,0,30,0,3,0,1,128,1,128,1,128, + 1,128,195,0,60,0,10,14,28,11,0,0,3,0,7,0, + 7,0,11,0,27,0,19,0,35,0,99,0,67,0,255,192, + 3,0,3,0,3,0,15,192,9,14,28,11,0,0,0,128, + 63,0,32,0,32,0,96,0,126,0,67,0,1,128,1,128, + 1,128,1,128,1,0,195,0,60,0,9,14,28,11,1,0, + 3,0,12,0,48,0,32,0,96,0,222,0,227,0,193,128, + 193,128,193,128,193,128,97,0,99,0,30,0,9,13,26,11, + 1,0,127,128,129,0,129,0,3,0,2,0,6,0,4,0, + 12,0,8,0,24,0,24,0,48,0,32,0,9,14,28,11, + 1,0,62,0,71,0,195,0,195,0,195,0,118,0,30,0, + 39,0,99,128,193,128,193,128,193,128,99,0,60,0,9,14, + 28,11,1,0,30,0,99,0,67,0,193,128,193,128,193,128, + 193,128,99,128,61,128,1,0,3,0,6,0,8,0,112,0, + 2,11,11,5,2,0,192,192,192,0,0,0,0,0,192,192, + 192,4,14,14,5,0,253,48,48,48,0,0,0,0,0,112, + 240,48,48,32,64,8,7,7,10,1,3,1,15,120,192,112, + 30,3,8,4,4,10,1,4,255,0,0,255,8,7,7,10, + 1,3,192,120,15,3,30,240,128,8,17,17,10,1,0,62, + 103,195,195,3,3,6,12,12,24,24,24,16,0,24,24,24, + 17,19,57,19,1,252,1,240,0,6,28,0,24,6,0,48, + 3,0,32,3,0,97,211,128,66,49,128,196,49,128,204,49, + 128,204,49,128,204,49,128,204,49,0,236,51,0,102,114,0, + 99,156,0,48,0,0,56,2,0,14,15,0,3,240,0,13, + 14,28,14,0,0,2,0,3,0,5,0,5,128,5,128,8, + 128,8,192,8,192,31,192,16,96,16,96,32,48,32,48,248, + 120,11,14,28,12,0,0,127,0,177,192,48,192,48,192,48, + 192,49,128,63,128,49,192,48,224,48,96,48,96,48,96,48, + 192,255,128,11,14,28,12,1,0,7,192,24,96,32,0,96, + 0,64,0,192,0,192,0,192,0,192,0,192,0,96,0,96, + 32,56,64,15,128,13,14,28,14,0,0,127,128,176,224,48, + 112,48,48,48,24,48,24,48,24,48,24,48,24,48,24,48, + 48,48,112,48,224,255,128,11,14,28,11,0,0,255,192,48, + 64,48,64,48,0,48,0,48,0,63,128,49,0,48,0,48, + 0,48,0,48,32,48,96,255,192,10,14,28,11,0,0,255, + 192,48,64,48,64,48,0,48,0,48,0,63,128,49,0,48, + 0,48,0,48,0,48,0,48,0,252,0,11,14,28,13,1, + 0,15,128,16,192,32,0,96,0,192,0,192,0,192,0,195, + 224,192,192,192,192,96,192,96,192,48,192,31,0,15,14,28, + 15,0,0,252,126,48,24,48,24,48,24,48,24,48,24,63, + 248,48,24,48,24,48,24,48,24,48,24,48,24,252,126,6, + 14,14,7,0,0,252,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,18,36,7,254,252,31,128,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,4,0,72,0,240,0,13,14,28, + 13,0,0,252,240,48,64,48,128,49,0,50,0,54,0,60, + 0,54,0,54,0,51,0,49,128,48,192,48,96,252,56,11, + 14,28,11,0,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,32,48,64,255, + 192,17,14,42,19,1,0,240,7,0,112,14,0,112,14,0, + 120,30,0,104,22,0,108,22,0,108,38,0,102,38,0,102, + 102,0,99,70,0,99,198,0,97,134,0,97,134,0,241,15, + 128,15,14,28,15,0,0,240,126,48,24,56,24,60,24,52, + 24,50,24,51,24,49,152,48,152,48,216,48,120,48,56,48, + 56,252,24,12,14,28,14,1,0,15,128,48,192,32,96,96, + 96,192,48,192,48,192,48,192,48,192,48,192,48,96,96,96, + 64,48,128,31,0,11,14,28,12,0,0,127,128,176,192,48, + 96,48,96,48,96,48,96,48,192,63,0,48,0,48,0,48, + 0,48,0,48,0,252,0,14,17,34,14,1,253,15,128,48, + 192,32,96,96,96,192,48,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,31,0,1,128,0,196,0,56,13, + 14,28,13,0,0,127,0,177,128,48,192,48,192,48,192,48, + 128,49,0,62,0,51,0,49,0,49,128,48,192,48,192,252, + 120,9,14,28,11,1,0,62,0,99,0,192,0,192,0,224, + 0,120,0,62,0,15,0,3,128,1,128,129,128,129,0,195, + 0,124,0,12,14,28,13,0,0,255,240,134,16,134,16,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,31,128,15,14,28,15,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,14,14,28,15,0,0,248,60,48, + 24,48,16,24,16,24,48,24,32,12,96,12,64,4,64,6, + 192,6,128,3,128,3,128,1,0,19,14,42,20,0,0,248, + 67,224,48,96,128,48,96,128,48,224,128,16,177,128,16,177, + 0,25,145,0,25,25,0,25,25,0,11,11,0,14,14,0, + 14,14,0,14,6,0,4,6,0,14,14,28,14,0,0,252, + 248,48,48,24,96,28,192,12,128,7,128,3,0,3,128,5, + 128,12,192,24,96,16,112,48,48,248,124,14,14,28,14,0, + 0,224,124,48,48,24,32,24,96,12,64,6,192,7,128,3, + 0,3,0,3,0,3,0,3,0,3,0,15,192,10,14,28, + 12,1,0,127,192,65,128,129,128,3,0,6,0,6,0,12, + 0,28,0,24,0,48,0,48,0,96,64,192,64,255,192,5, + 22,22,7,1,252,248,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,248,9,22,44,11,1, + 252,128,0,192,0,192,0,64,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,8,0,12,0,4,0,4,0,6, + 0,2,0,3,0,3,0,1,0,1,128,0,128,5,22,22, + 8,1,252,248,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,248,9,11,22,11,1,6,8, + 0,12,0,28,0,22,0,54,0,34,0,35,0,99,0,65, + 128,65,128,129,128,9,1,2,11,1,253,255,128,5,5,5, + 7,0,12,224,96,48,16,8,10,10,20,11,1,0,30,0, + 99,0,195,0,3,0,31,0,99,0,195,0,195,0,199,0, + 123,192,10,17,34,12,1,0,96,0,224,0,96,0,96,0, + 96,0,96,0,96,0,103,0,121,128,113,192,96,192,96,192, + 96,192,96,192,96,128,113,0,30,0,9,10,20,10,1,0, + 15,0,49,128,96,0,192,0,192,0,192,0,192,0,96,0, + 113,128,30,0,11,17,34,12,1,0,1,128,7,128,1,128, + 1,128,1,128,1,128,1,128,31,128,35,128,65,128,193,128, + 193,128,193,128,193,128,225,128,103,160,57,192,9,10,20,11, + 1,0,30,0,33,0,65,128,255,128,192,0,192,0,192,0, + 224,0,113,128,62,0,9,17,34,7,0,0,7,128,9,0, + 16,0,48,0,48,0,48,0,48,0,126,0,176,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,252,0,12,15, + 30,12,0,251,31,48,49,192,96,192,96,192,96,192,49,128, + 31,0,24,0,56,0,31,192,96,112,192,48,192,48,96,96, + 63,128,13,17,34,13,0,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,96,56,96,48,96,48,96, + 48,96,48,96,48,96,48,96,253,248,6,15,15,6,0,0, + 48,48,48,0,0,48,240,48,48,48,48,48,48,48,252,7, + 20,20,6,253,251,6,6,6,0,0,6,30,6,6,6,6, + 6,6,6,6,6,6,4,8,240,12,17,34,12,0,0,48, + 0,240,0,48,0,48,0,48,0,48,0,48,0,49,224,49, + 128,51,0,52,0,60,0,54,0,51,0,49,128,48,192,248, + 240,6,17,17,6,0,0,48,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,10,30,20,0,0,113,199, + 128,182,104,192,56,112,192,48,96,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,253,251,240,13,10,20,13, + 0,0,113,192,182,96,56,96,48,96,48,96,48,96,48,96, + 48,96,48,96,253,248,10,10,20,12,1,0,30,0,35,128, + 65,128,192,192,192,192,192,192,192,192,224,128,113,0,30,0, + 11,15,30,12,0,251,115,128,188,192,56,224,48,96,48,96, + 48,96,48,96,48,64,56,192,55,0,48,0,48,0,48,0, + 48,0,252,0,11,15,30,12,1,251,30,128,35,128,97,128, + 193,128,193,128,193,128,193,128,225,128,99,128,61,128,1,128, + 1,128,1,128,1,128,7,224,9,10,20,9,0,0,51,128, + 252,128,56,0,48,0,48,0,48,0,48,0,48,0,48,0, + 252,0,7,10,10,9,1,0,124,204,192,224,120,30,6,134, + 134,248,8,14,14,8,0,0,16,48,48,48,127,176,48,48, + 48,48,48,48,49,30,11,10,20,12,1,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,10,20,11,0,0,249,224,32,64,48,128,48,128,25,128, + 25,0,9,0,14,0,6,0,4,0,16,10,20,16,0,0, + 248,143,33,130,49,196,49,196,19,100,26,108,26,40,12,56, + 12,56,12,16,11,10,20,12,0,0,249,224,48,128,25,0, + 15,0,6,0,14,0,11,0,17,128,32,192,241,224,12,15, + 30,11,255,251,124,240,16,32,24,64,24,64,12,192,12,128, + 4,128,7,0,3,0,3,0,2,0,6,0,4,0,120,0, + 240,0,8,10,10,10,1,0,255,131,134,12,8,24,48,97, + 65,255,6,22,22,8,1,252,4,24,16,48,48,48,56,24, + 24,24,48,240,24,24,24,24,48,48,48,48,24,4,2,24, + 24,5,2,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,6,22,22,8, + 1,252,128,96,48,48,48,48,96,96,96,96,60,16,32,96, + 96,112,48,48,48,32,96,128,10,4,8,11,1,5,48,64, + 124,128,159,0,135,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=22 h=27 x= 3 y=16 dx=23 dy= 0 ascent=23 len=66 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17[7056] U8G_SECTION(".progmem.u8g_font_gdr17") = { + 0,40,38,242,247,17,4,64,9,46,32,255,250,23,249,21, + 250,0,0,0,6,0,0,3,21,21,7,2,255,96,224,224, + 224,224,96,96,96,96,96,64,64,64,64,64,0,0,96,224, + 224,192,7,9,9,11,2,11,102,230,230,198,198,70,70,70, + 70,12,15,30,13,1,2,6,96,6,96,4,64,4,64,12, + 192,63,240,8,128,25,128,17,0,255,224,51,0,34,0,34, + 0,102,0,68,0,11,20,40,12,0,254,6,0,6,0,15, + 128,55,224,102,64,102,0,102,0,118,0,62,0,31,128,7, + 192,6,224,6,96,134,96,198,96,230,192,127,192,31,0,6, + 0,6,0,17,16,48,19,1,0,56,6,0,108,12,0,198, + 24,0,198,24,0,198,48,0,198,96,0,198,192,0,108,192, + 0,57,158,0,3,51,0,6,97,128,6,97,128,12,97,128, + 24,97,128,48,51,0,32,30,0,17,19,57,18,1,0,3, + 192,0,12,224,0,8,96,0,24,96,0,24,96,0,24,192, + 0,29,192,0,31,128,0,14,0,0,62,63,128,119,29,0, + 103,12,0,195,140,0,193,204,0,193,232,0,192,248,0,96, + 120,0,112,222,0,31,7,128,3,9,9,7,2,11,96,224, + 224,192,192,64,64,64,64,6,25,25,9,2,252,4,8,24, + 48,32,96,96,96,192,192,192,192,192,192,192,192,192,224,96, + 96,96,48,24,8,4,6,25,25,9,1,252,128,64,96,48, + 24,24,24,24,12,12,12,12,12,12,12,12,12,24,24,24, + 48,48,96,64,128,10,12,24,12,1,9,12,0,12,0,140, + 0,204,192,119,128,30,0,30,0,119,128,204,192,12,128,12, + 0,12,0,10,9,18,11,1,3,12,0,12,0,12,0,12, + 0,255,192,12,0,12,0,12,0,12,0,4,7,7,6,1, + 252,112,240,48,48,32,96,64,7,1,1,9,1,6,254,3, + 4,4,6,2,255,96,224,224,192,11,25,50,13,1,252,0, + 96,0,96,0,192,0,192,1,128,1,128,1,128,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,224,0,192,0,192, + 0,11,16,32,13,1,0,15,0,49,128,96,192,64,192,64, + 224,192,96,192,96,192,96,192,96,192,96,192,96,192,64,96, + 64,96,192,49,128,30,0,9,16,32,13,2,0,12,0,60, + 0,252,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,128,10,16,32, + 13,1,0,15,0,49,128,96,192,96,192,0,192,0,192,1, + 128,1,128,3,0,6,0,12,0,28,0,24,0,48,64,96, + 64,255,192,10,16,32,13,1,0,30,0,99,0,97,128,193, + 128,1,128,3,0,6,0,31,0,3,128,1,192,0,192,0, + 192,0,192,1,128,193,128,62,0,11,16,32,13,1,0,1, + 128,3,128,7,128,5,128,13,128,25,128,17,128,49,128,97, + 128,65,128,255,224,1,128,1,128,1,128,1,128,15,224,10, + 16,32,13,1,0,63,192,32,0,32,0,32,0,96,0,96, + 0,127,0,67,128,1,192,0,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,3,128,14,0,24, + 0,48,0,96,0,96,0,207,0,241,192,192,224,192,96,192, + 96,192,96,96,96,96,64,48,128,31,0,11,16,32,13,1, + 0,127,224,64,192,128,192,0,128,1,128,1,128,3,0,3, + 0,6,0,6,0,4,0,12,0,12,0,24,0,24,0,48, + 0,11,16,32,13,1,0,31,0,113,128,224,192,224,192,224, + 192,241,128,63,0,15,128,51,192,96,224,192,96,192,96,192, + 96,192,64,96,128,31,0,11,17,34,13,1,255,31,0,49, + 128,96,192,192,192,192,96,192,96,192,96,224,96,113,224,30, + 96,0,224,0,192,0,192,1,128,3,0,14,0,48,0,3, + 14,14,6,2,255,64,224,224,224,0,0,0,0,0,0,96, + 224,224,192,4,17,17,6,1,252,32,112,112,112,0,0,0, + 0,0,0,112,240,48,48,32,96,64,10,9,18,12,1,3, + 0,192,3,192,31,0,120,0,224,0,248,0,30,0,7,192, + 0,192,10,5,10,12,1,5,255,192,0,0,0,0,0,0, + 255,192,10,9,18,12,1,3,192,0,248,0,30,0,7,192, + 1,192,7,128,60,0,240,0,128,0,10,20,40,12,1,255, + 31,0,97,128,192,192,192,192,192,192,0,192,1,128,1,128, + 3,0,6,0,6,0,12,0,12,0,12,0,8,0,0,0, + 12,0,28,0,28,0,24,0,20,22,66,22,1,251,0,252, + 0,3,7,0,12,1,192,24,0,192,48,0,96,32,244,96, + 97,28,112,67,12,48,194,12,48,198,12,48,198,12,48,198, + 12,48,198,12,32,198,12,96,227,12,64,99,60,128,97,199, + 0,48,0,0,56,0,0,28,0,64,7,3,128,1,252,0, + 16,17,34,16,0,0,0,128,1,128,3,128,3,192,2,192, + 6,192,6,96,4,96,12,112,12,48,15,240,24,24,24,24, + 16,24,48,12,48,12,248,63,12,17,34,14,1,0,127,128, + 176,192,48,96,48,96,48,96,48,64,49,128,63,192,48,224, + 48,96,48,48,48,48,48,48,48,48,48,96,48,224,255,128, + 12,17,34,14,1,0,7,224,24,112,48,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,48,16,24,32,15,192,14,17,34,16,1,0,127,128, + 176,224,48,48,48,24,48,24,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,24,48,24,48,48,48,96,255,128, + 12,17,34,13,1,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,11,17,34,13,1,0,255,224, + 48,32,48,32,48,0,48,0,48,0,48,0,63,128,49,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 14,17,34,16,1,0,3,240,12,56,16,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,252,192,24,192,24,96,24, + 96,24,48,24,24,24,7,224,16,17,34,18,1,0,252,63, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,63,252, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,252,63, + 6,17,17,8,1,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,10,22,44,8,253,251,31,192,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,2,0,6,0,68,0,248,0,15,17,34,16,1,0,252, + 252,48,48,48,96,48,192,49,128,51,0,54,0,52,0,62, + 0,54,0,51,0,49,128,49,192,48,224,48,112,48,56,252, + 30,12,17,34,13,1,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,16,48,48,255,224,20,17,51,22,1,0,240, + 1,224,56,1,192,56,3,192,44,2,192,44,6,192,44,6, + 192,38,4,192,38,12,192,35,8,192,35,24,192,35,152,192, + 33,144,192,33,176,192,32,224,192,32,224,192,32,64,192,248, + 67,240,16,17,34,18,1,0,240,63,48,12,56,12,60,12, + 52,12,54,12,51,12,51,12,49,140,48,204,48,204,48,108, + 48,60,48,60,48,28,48,28,252,12,14,17,34,16,1,0, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,8,96,24,96,16,48,48,24,96, + 15,128,12,17,34,14,1,0,127,128,176,224,48,96,48,48, + 48,48,48,48,48,48,48,96,48,192,63,128,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,16,21,42,16,1,252, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,96,24,48,48,24,96, + 15,192,0,192,0,96,0,49,0,14,14,17,34,15,1,0, + 127,0,177,192,48,96,48,96,48,96,48,96,48,192,49,192, + 63,0,51,0,49,128,49,128,48,192,48,224,48,96,48,112, + 252,60,10,17,34,13,2,0,31,0,99,128,193,0,192,0, + 224,0,240,0,124,0,126,0,31,128,7,128,1,192,0,192, + 0,192,128,192,128,128,193,0,126,0,14,17,34,15,0,0, + 255,252,131,4,131,4,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 15,192,16,17,34,18,1,0,252,63,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,24,24,24,12,48,7,224,17,17,51,18,0,0, + 252,15,128,48,6,0,24,6,0,24,4,0,24,12,0,12, + 12,0,12,8,0,14,24,0,6,24,0,6,16,0,3,48, + 0,3,32,0,3,96,0,1,224,0,1,192,0,1,192,0, + 0,128,0,22,17,51,23,0,0,252,16,124,48,16,16,48, + 56,16,24,56,48,24,56,48,24,108,48,24,108,32,24,76, + 32,12,198,96,12,198,96,12,134,96,13,131,64,7,131,64, + 7,3,192,7,1,192,7,1,192,6,1,128,16,17,34,17, + 0,0,124,63,56,28,24,24,12,48,14,48,7,96,3,192, + 3,192,1,192,3,192,3,224,6,112,12,48,12,24,24,28, + 56,14,252,63,15,17,34,16,0,0,240,62,56,12,24,24, + 28,24,14,48,6,32,7,96,3,192,3,192,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,7,224,12,17,34,14, + 1,0,127,240,64,96,64,224,128,192,1,192,3,128,3,0, + 7,0,6,0,14,0,28,0,24,0,56,0,48,16,112,16, + 224,48,255,240,6,25,25,8,2,252,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,252,11,25,50,13,1,252,128,0,192,0,64,0,96, + 0,96,0,48,0,48,0,48,0,24,0,24,0,8,0,12, + 0,12,0,6,0,6,0,2,0,3,0,3,0,1,128,1, + 128,1,128,0,192,0,192,0,64,0,96,6,25,25,9,1, + 252,252,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,252,11,13,26,13,1,7, + 6,0,14,0,14,0,15,0,27,0,19,0,17,128,49,128, + 33,192,96,192,96,192,64,96,192,64,11,1,2,13,1,253, + 255,224,6,6,6,9,0,14,96,224,48,24,8,4,11,12, + 24,12,1,0,31,0,97,128,225,128,1,128,1,128,31,128, + 121,128,225,128,193,128,193,128,199,128,121,224,13,20,40,14, + 0,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,54,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,16,48,48,56,96,15,128,10,12,24,12,1,0, + 15,192,48,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,96,64,48,192,31,0,13,20,40,14,1,0,0,96, + 1,224,0,96,0,96,0,96,0,96,0,96,0,96,15,224, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,120,30,96,10,12,24,12,1,0,15,0,49,128, + 96,192,64,192,255,192,192,0,192,0,192,0,224,0,96,64, + 48,128,31,0,10,20,40,8,1,0,3,192,12,128,24,0, + 16,0,48,0,48,0,48,0,48,0,255,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,13,18,36,13,0,250,15,24,48,240,32,96,96,96, + 96,96,96,96,56,192,31,0,24,0,56,0,63,128,31,240, + 48,120,192,24,192,24,192,16,112,96,31,128,14,20,40,15, + 1,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,50,48,52,48,56,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,252,6,18,18,7,1,0, + 48,112,48,0,0,0,48,240,48,48,48,48,48,48,48,48, + 48,252,8,24,24,7,253,250,3,7,3,0,0,0,3,15, + 3,3,3,3,3,3,3,3,3,3,3,3,2,2,4,248, + 13,20,40,14,1,0,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,240,48,192,49,128,51,0,52,0, + 60,0,54,0,51,0,49,128,48,192,48,224,248,120,6,20, + 20,7,1,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,12,36,21,1,0,113,195, + 128,182,108,192,56,112,192,56,112,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,48,96,192,48,96,192,253, + 251,240,14,12,24,15,1,0,113,224,178,48,52,48,56,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,252, + 12,12,24,14,1,0,15,128,48,192,96,96,64,112,192,48, + 192,48,192,48,192,48,224,32,96,96,48,192,31,0,12,18, + 36,14,1,250,113,192,182,224,56,96,48,48,48,48,48,48, + 48,48,48,48,48,32,48,96,56,64,55,128,48,0,48,0, + 48,0,48,0,48,0,252,0,13,18,36,14,1,250,15,32, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,96,30,96,0,96,0,96,0,96,0,96,0,96, + 1,248,10,12,24,11,1,0,51,192,244,128,56,128,56,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 8,12,12,10,1,0,62,70,194,224,240,124,30,7,131,131, + 198,124,9,17,34,9,0,0,16,0,48,0,48,0,48,0, + 48,0,255,128,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,0,30,128,14,12,24,14,0,0, + 48,48,240,240,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,112,56,188,31,48,13,12,24,13,0,0,248,120, + 48,48,48,32,24,96,24,64,28,64,12,192,12,128,7,128, + 7,0,7,0,2,0,19,12,36,19,0,0,248,99,224,48, + 96,128,48,96,128,48,241,128,24,177,128,25,177,0,25,153, + 0,13,27,0,15,26,0,14,14,0,6,14,0,4,4,0, + 13,12,24,14,0,0,252,248,56,96,24,64,12,128,7,128, + 7,0,7,128,13,128,8,192,16,96,48,112,248,248,14,18, + 36,13,255,250,124,60,24,24,24,16,12,48,12,32,14,32, + 6,96,6,64,3,192,3,128,3,128,1,128,1,0,3,0, + 2,0,6,0,124,0,240,0,10,12,24,12,1,0,127,192, + 65,128,131,128,3,0,6,0,12,0,28,0,24,0,48,0, + 112,64,96,64,255,192,6,25,25,9,2,252,4,8,24,48, + 48,48,48,24,24,24,24,48,224,56,24,24,24,24,48,48, + 48,48,16,24,4,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,6,25,25,9,1,252,128,96,32,48, + 48,48,48,96,96,96,96,48,28,48,96,96,96,96,48,48, + 48,48,96,64,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,6,0,0,3,19,19,7,2,249, + 96,224,224,192,64,64,64,64,64,96,96,96,96,224,224,224, + 224,224,192,11,17,34,13,1,255,6,0,6,0,7,128,31, + 224,38,64,102,0,198,0,198,0,198,0,198,0,198,0,230, + 32,118,64,63,128,15,0,6,0,6,0,11,16,32,13,1, + 0,7,192,24,224,16,64,48,64,48,0,48,0,48,0,48, + 0,255,0,48,0,48,0,48,0,48,32,32,32,96,96,255, + 224,9,8,16,13,2,4,128,128,93,0,119,0,99,0,99, + 0,119,0,93,0,128,128,14,16,32,13,255,0,240,124,48, + 48,24,96,28,96,12,192,14,192,7,128,3,128,3,0,63, + 240,3,0,3,0,3,0,3,0,3,0,15,192,2,27,27, + 6,2,251,192,192,192,192,192,192,192,192,192,192,192,192,128, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,31,0,35,128,97,0,96,0,112,0,60,0, + 127,0,199,128,195,192,193,192,224,192,120,192,63,128,15,0, + 3,128,65,128,65,128,97,0,62,0,9,3,6,11,1,15, + 193,128,193,128,193,128,17,17,51,19,1,0,3,224,0,12, + 24,0,48,6,0,48,246,0,99,27,0,102,1,0,204,1, + 128,204,1,128,204,1,128,204,1,128,204,1,128,70,19,0, + 103,19,0,49,230,0,48,6,0,12,24,0,3,224,0,7, + 8,8,7,0,8,56,76,140,60,108,108,126,126,10,12,24, + 13,1,0,8,64,24,192,16,128,49,128,99,0,230,0,231, + 0,99,0,49,128,16,128,8,192,8,64,11,6,12,13,1, + 2,255,224,0,96,0,96,0,96,0,96,0,96,7,1,1, + 9,1,6,254,9,9,18,10,0,10,62,0,99,0,255,128, + 146,128,156,128,152,128,213,128,107,0,62,0,9,1,2,13, + 2,16,255,128,6,6,6,10,2,10,56,76,204,204,200,112, + 10,12,24,11,1,2,12,0,12,0,12,0,12,0,255,192, + 12,0,12,0,12,0,12,0,0,0,0,0,255,128,7,10, + 10,9,1,8,60,70,198,6,12,24,16,32,66,254,8,10, + 10,9,255,8,30,35,67,2,14,3,3,3,198,60,5,6, + 6,9,3,14,24,56,48,96,192,128,14,18,36,14,0,250, + 48,48,240,112,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,240,63,188,55,56,48,0,48,0,48,0,48,0, + 56,0,48,0,13,20,40,15,1,253,31,248,49,224,97,224, + 193,224,193,224,193,224,193,224,97,224,113,224,31,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 7,248,2,3,3,4,1,8,192,192,192,5,6,6,6,0, + 250,48,32,56,88,16,224,7,10,10,9,1,8,24,248,24, + 24,24,24,24,24,24,126,6,8,8,8,1,8,56,76,204, + 204,204,200,112,252,10,12,24,13,2,0,132,0,198,0,98, + 0,35,0,49,128,24,192,25,192,49,128,35,0,98,0,198, + 0,132,0,14,16,32,16,1,0,48,24,240,56,48,48,48, + 96,48,192,48,192,49,128,255,0,3,24,6,56,12,88,12, + 88,24,152,17,252,48,24,96,60,13,16,32,15,1,0,48, + 8,240,16,48,48,48,32,48,96,48,192,48,128,253,128,3, + 112,2,152,7,24,4,16,8,48,24,96,16,200,49,248,14, + 16,32,16,1,0,56,24,204,16,12,48,56,32,12,64,12, + 192,140,128,113,128,3,24,2,56,6,88,12,88,8,152,25, + 252,16,24,48,60,10,19,38,12,1,249,6,0,14,0,14, + 0,12,0,2,0,6,0,6,0,6,0,12,0,28,0,56, + 0,112,0,96,0,192,0,192,192,192,192,192,192,97,128,62, + 0,16,23,46,16,0,0,12,0,30,0,7,0,1,128,0, + 64,0,0,0,128,1,128,3,128,3,192,2,192,6,192,6, + 96,4,96,12,112,12,48,15,240,24,24,24,24,16,24,48, + 12,48,12,248,63,16,23,46,16,0,0,0,48,0,112,1, + 192,3,128,2,0,0,0,0,128,1,128,3,128,3,192,2, + 192,6,192,6,96,4,96,12,112,12,48,15,240,24,24,24, + 24,16,24,48,12,48,12,248,63,16,22,44,16,0,0,3, + 128,6,192,12,32,8,16,0,0,0,128,1,128,3,128,3, + 192,2,192,6,192,6,96,4,96,12,112,12,48,15,240,24, + 24,24,24,16,24,48,12,48,12,248,63,16,22,44,16,0, + 0,0,16,7,176,9,224,16,192,0,0,0,128,1,128,3, + 128,3,192,2,192,6,192,6,96,4,96,12,112,12,48,15, + 240,24,24,24,24,16,24,48,12,48,12,248,63,16,21,42, + 16,0,0,12,48,12,48,8,32,0,0,0,128,1,128,3, + 128,3,192,2,192,6,192,6,96,4,96,12,112,12,48,15, + 240,24,24,24,24,16,24,48,12,48,12,248,63,16,23,46, + 16,0,0,1,192,3,96,3,96,3,192,1,128,0,0,0, + 128,1,128,3,128,3,192,2,192,6,192,6,96,4,96,12, + 112,12,48,15,240,24,24,24,24,16,24,48,12,48,12,248, + 63,20,17,51,21,0,0,7,255,224,1,176,32,1,176,32, + 1,48,0,3,48,0,3,48,0,6,48,0,7,255,192,4, + 48,128,12,48,0,12,48,0,24,48,0,24,48,0,16,48, + 0,48,48,16,48,48,48,248,255,240,12,23,46,14,1,250, + 7,224,24,112,48,0,32,0,96,0,64,0,192,0,192,0, + 192,0,192,0,192,0,192,0,224,0,96,32,112,32,61,192, + 31,128,4,0,4,0,7,0,3,0,2,0,28,0,12,23, + 46,13,1,0,48,0,120,0,28,0,6,0,1,0,0,0, + 255,224,48,32,48,32,48,0,48,0,48,0,48,0,63,192, + 48,128,48,0,48,0,48,0,48,0,48,0,48,16,48,48, + 255,224,12,23,46,13,1,0,0,192,3,192,7,0,12,0, + 16,0,0,0,255,224,48,32,48,32,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,16,48,48,255,224,12,22,44,13,1,0,14,0,27,0, + 48,128,64,64,0,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,12,21,42,13,1,0,32,128, + 97,128,32,128,0,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,8,23,23,8,255,0,96,240, + 56,12,2,0,63,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,63,7,23,23,8,1,0,6,14,56,112,64, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,8,22,22,8,0,0,56,108,194,129,0,126,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,126,8,21, + 21,8,0,0,195,195,130,0,126,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,126,14,17,34,16,1,0,127, + 128,176,224,48,48,48,24,48,24,48,12,48,12,48,12,255, + 12,48,12,48,12,48,12,48,24,48,24,48,48,48,96,255, + 128,16,22,44,18,1,0,0,16,7,176,9,224,16,192,0, + 0,240,63,48,12,56,12,60,12,52,12,54,12,51,12,51, + 12,49,140,48,204,48,204,48,108,48,60,48,60,48,28,48, + 28,252,12,14,23,46,16,1,0,24,0,28,0,7,0,3, + 128,0,128,0,0,7,192,24,96,48,48,96,24,96,24,64, + 12,192,12,192,12,192,12,192,12,192,12,192,8,96,24,96, + 16,48,48,24,96,15,128,14,23,46,16,1,0,0,96,0, + 240,1,192,3,0,4,0,0,0,7,192,24,96,48,48,96, + 24,96,24,64,12,192,12,192,12,192,12,192,12,192,12,192, + 8,96,24,96,16,48,48,24,96,15,128,14,22,44,16,1, + 0,3,128,4,192,8,96,16,32,0,0,7,192,24,96,48, + 48,96,24,96,24,64,12,192,12,192,12,192,12,192,12,192, + 12,192,8,96,24,96,16,48,48,24,96,15,128,14,22,44, + 16,1,0,0,32,15,48,19,224,32,128,0,0,7,192,24, + 96,48,48,96,24,96,24,64,12,192,12,192,12,192,12,192, + 12,192,12,192,8,96,24,96,16,48,48,24,96,15,128,14, + 21,42,16,1,0,24,96,24,96,16,64,0,0,7,192,24, + 96,48,48,96,24,96,24,64,12,192,12,192,12,192,12,192, + 12,192,12,192,8,96,24,96,16,48,48,24,96,15,128,9, + 9,18,11,1,3,193,128,99,0,54,0,28,0,28,0,28, + 0,54,0,99,0,193,128,14,18,36,16,1,255,7,204,24, + 120,48,48,32,120,96,120,64,220,193,204,193,140,195,12,199, + 12,198,12,204,8,104,24,120,16,48,48,120,96,207,128,128, + 0,16,23,46,18,1,0,12,0,30,0,7,0,1,192,0, + 64,0,0,252,63,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,24,24, + 24,12,48,7,224,16,23,46,18,1,0,0,48,0,112,1, + 192,3,128,2,0,0,0,252,63,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,24,24,24,12,48,7,224,16,22,44,18,1,0,1, + 128,2,64,4,32,8,16,0,0,252,63,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,24,24,24,12,48,7,224,16,21,42,18,1, + 0,12,48,12,48,8,32,0,0,252,63,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,24,24,24,12,48,7,224,15,23,46,16,0, + 0,0,48,0,112,0,192,3,128,2,0,0,0,240,62,56, + 12,24,24,28,24,14,48,6,32,7,96,3,192,3,192,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,7,224,12, + 17,34,14,1,0,252,0,48,0,48,0,63,128,48,224,48, + 96,48,48,48,48,48,48,48,48,48,48,48,96,56,192,55, + 128,48,0,48,0,252,0,14,20,40,15,1,0,3,192,12, + 224,24,112,16,48,48,48,48,48,48,96,49,192,51,0,54, + 0,54,0,55,128,51,224,48,248,48,60,48,28,50,12,50, + 12,51,24,243,240,11,20,40,12,1,0,48,0,120,0,24, + 0,12,0,4,0,2,0,0,0,0,0,31,0,97,128,225, + 128,1,128,1,128,31,128,121,128,225,128,193,128,193,128,199, + 128,121,224,11,20,40,12,1,0,1,128,3,128,3,0,6, + 0,4,0,8,0,0,0,0,0,31,0,97,128,225,128,1, + 128,1,128,31,128,121,128,225,128,193,128,193,128,199,128,121, + 224,11,19,38,12,1,0,12,0,30,0,19,0,33,128,64, + 192,0,0,0,0,31,0,97,128,225,128,1,128,1,128,31, + 128,121,128,225,128,193,128,193,128,199,128,121,224,11,18,36, + 12,1,0,24,64,60,128,71,0,0,0,0,0,0,0,31, + 0,97,128,225,128,1,128,1,128,31,128,121,128,225,128,193, + 128,193,128,199,128,121,224,11,18,36,12,1,0,97,128,97, + 128,97,128,0,0,0,0,0,0,31,0,97,128,225,128,1, + 128,1,128,31,128,121,128,225,128,193,128,193,128,199,128,121, + 224,11,19,38,12,1,0,14,0,11,0,27,0,27,0,14, + 0,0,0,0,0,31,0,97,128,225,128,1,128,1,128,31, + 128,121,128,225,128,193,128,193,128,199,128,121,224,17,12,36, + 19,1,0,31,62,0,97,195,0,97,193,128,193,129,128,15, + 255,128,57,128,0,97,128,0,193,128,0,193,128,0,193,193, + 0,198,227,0,120,124,0,10,18,36,12,1,250,15,192,48, + 192,96,128,64,0,192,0,192,0,192,0,192,0,224,0,96, + 64,120,192,63,0,12,0,4,0,7,0,3,0,2,0,28, + 0,10,20,40,12,1,0,48,0,56,0,24,0,12,0,6, + 0,2,0,0,0,0,0,15,0,49,128,96,192,64,192,255, + 192,192,0,192,0,192,0,224,0,96,64,48,128,31,0,10, + 20,40,12,1,0,1,192,1,128,3,0,2,0,4,0,12, + 0,0,0,0,0,15,0,49,128,96,192,64,192,255,192,192, + 0,192,0,192,0,224,0,96,64,48,128,31,0,10,19,38, + 12,1,0,6,0,15,0,25,0,48,128,32,64,0,0,0, + 0,15,0,49,128,96,192,64,192,255,192,192,0,192,0,192, + 0,224,0,96,64,48,128,31,0,10,18,36,12,1,0,32, + 128,48,192,32,128,0,0,0,0,0,0,15,0,49,128,96, + 192,64,192,255,192,192,0,192,0,192,0,224,0,96,64,48, + 128,31,0,7,20,20,7,0,0,192,224,112,48,24,8,0, + 0,24,120,24,24,24,24,24,24,24,24,24,126,7,20,20, + 7,1,0,14,12,24,16,48,96,0,0,48,240,48,48,48, + 48,48,48,48,48,48,252,8,19,19,7,0,0,24,60,100, + 194,129,0,0,24,120,24,24,24,24,24,24,24,24,24,126, + 8,18,18,7,0,0,130,195,130,0,0,0,24,120,24,24, + 24,24,24,24,24,24,24,126,11,19,38,13,1,0,24,0, + 60,224,7,128,31,0,49,128,0,192,0,192,15,192,49,224, + 96,224,64,96,192,96,192,96,192,96,192,64,224,192,96,192, + 49,128,30,0,14,18,36,15,1,0,12,32,31,64,35,128, + 0,0,0,0,0,0,113,224,178,48,52,48,56,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,12,20, + 40,14,1,0,56,0,24,0,12,0,4,0,6,0,3,0, + 0,0,0,0,15,128,48,192,96,96,64,112,192,48,192,48, + 192,48,192,48,224,32,96,96,48,192,31,0,12,20,40,14, + 1,0,0,192,1,128,3,128,3,0,6,0,4,0,0,0, + 0,0,15,128,48,192,96,96,64,112,192,48,192,48,192,48, + 192,48,224,32,96,96,48,192,31,0,12,19,38,14,1,0, + 6,0,15,0,25,128,16,128,32,64,0,0,0,0,15,128, + 48,192,96,96,64,112,192,48,192,48,192,48,192,48,224,32, + 96,96,48,192,31,0,12,18,36,14,1,0,28,96,62,64, + 35,128,0,0,0,0,0,0,15,128,48,192,96,96,64,112, + 192,48,192,48,192,48,192,48,224,32,96,96,48,192,31,0, + 12,18,36,14,1,0,48,192,48,192,48,192,0,0,0,0, + 0,0,15,128,48,192,96,96,64,112,192,48,192,48,192,48, + 192,48,224,32,96,96,48,192,31,0,9,9,18,11,1,3, + 12,0,12,0,0,0,0,0,255,128,0,0,0,0,12,0, + 12,0,12,14,28,14,1,255,0,16,15,176,49,224,96,224, + 65,240,195,48,198,48,198,48,204,48,248,32,112,96,120,192, + 223,0,128,0,14,20,40,14,0,0,28,0,12,0,6,0, + 3,0,1,0,1,128,0,0,0,0,48,48,240,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,112,56,188, + 31,48,14,20,40,14,0,0,0,96,0,224,0,192,1,128, + 3,0,2,0,0,0,0,0,48,48,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,112,56,188,31,48, + 14,19,38,14,0,0,3,0,7,128,4,192,8,96,16,32, + 0,0,0,0,48,48,240,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,112,56,188,31,48,14,18,36,14, + 0,0,24,96,24,96,24,96,0,0,0,0,0,0,48,48, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,112,56,188,31,48,14,26,52,13,255,250,0,112,0,96, + 0,224,0,192,1,128,1,0,0,0,0,0,124,60,24,24, + 24,16,12,48,12,32,14,32,6,96,6,64,3,192,3,128, + 3,128,1,128,1,0,3,0,2,0,6,0,124,0,240,0, + 12,26,52,14,1,250,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,224,56,96,48,48,48,48, + 48,48,48,48,48,48,48,32,48,96,56,64,55,128,48,0, + 48,0,48,0,48,0,48,0,252,0,14,24,48,13,255,250, + 12,48,12,48,8,32,0,0,0,0,0,0,124,60,24,24, + 24,16,12,48,12,32,14,32,6,96,6,64,3,192,3,128, + 3,128,1,128,1,0,3,0,2,0,6,0,124,0,240,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 16 + Calculated Max Values w=11 h=25 x= 2 y= 9 dx=13 dy= 0 ascent=21 len=50 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =16 descent= 0 + X Font ascent =16 descent= 0 + Max Font ascent =21 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17n[539] U8G_SECTION(".progmem.u8g_font_gdr17n") = { + 0,40,38,242,247,16,0,0,0,0,42,57,0,21,252,16, + 0,10,12,24,12,1,9,12,0,12,0,140,0,204,192,119, + 128,30,0,30,0,119,128,204,192,12,128,12,0,12,0,10, + 9,18,11,1,3,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,4,7,7,6,1,252,112,240,48, + 48,32,96,64,7,1,1,9,1,6,254,3,4,4,6,2, + 255,96,224,224,192,11,25,50,13,1,252,0,96,0,96,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,6,0,6, + 0,6,0,12,0,12,0,12,0,24,0,24,0,48,0,48, + 0,48,0,96,0,96,0,224,0,192,0,192,0,11,16,32, + 13,1,0,15,0,49,128,96,192,64,192,64,224,192,96,192, + 96,192,96,192,96,192,96,192,96,192,64,96,64,96,192,49, + 128,30,0,9,16,32,13,2,0,12,0,60,0,252,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,255,128,10,16,32,13,1,0,15, + 0,49,128,96,192,96,192,0,192,0,192,1,128,1,128,3, + 0,6,0,12,0,28,0,24,0,48,64,96,64,255,192,10, + 16,32,13,1,0,30,0,99,0,97,128,193,128,1,128,3, + 0,6,0,31,0,3,128,1,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,1,128,3,128,7, + 128,5,128,13,128,25,128,17,128,49,128,97,128,65,128,255, + 224,1,128,1,128,1,128,1,128,15,224,10,16,32,13,1, + 0,63,192,32,0,32,0,32,0,96,0,96,0,127,0,67, + 128,1,192,0,192,0,192,0,192,0,192,1,128,193,128,62, + 0,11,16,32,13,1,0,3,128,14,0,24,0,48,0,96, + 0,96,0,207,0,241,192,192,224,192,96,192,96,192,96,96, + 96,96,64,48,128,31,0,11,16,32,13,1,0,127,224,64, + 192,128,192,0,128,1,128,1,128,3,0,3,0,6,0,6, + 0,4,0,12,0,12,0,24,0,24,0,48,0,11,16,32, + 13,1,0,31,0,113,128,224,192,224,192,224,192,241,128,63, + 0,15,128,51,192,96,224,192,96,192,96,192,96,192,64,96, + 128,31,0,11,17,34,13,1,255,31,0,49,128,96,192,192, + 192,192,96,192,96,192,96,224,96,113,224,30,96,0,224,0, + 192,0,192,1,128,3,0,14,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=22 h=27 x= 2 y=14 dx=23 dy= 0 ascent=22 len=66 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17r[3380] U8G_SECTION(".progmem.u8g_font_gdr17r") = { + 0,40,38,242,247,17,4,64,9,46,32,127,250,22,250,21, + 250,0,0,0,6,0,0,3,21,21,7,2,255,96,224,224, + 224,224,96,96,96,96,96,64,64,64,64,64,0,0,96,224, + 224,192,7,9,9,11,2,11,102,230,230,198,198,70,70,70, + 70,12,15,30,13,1,2,6,96,6,96,4,64,4,64,12, + 192,63,240,8,128,25,128,17,0,255,224,51,0,34,0,34, + 0,102,0,68,0,11,20,40,12,0,254,6,0,6,0,15, + 128,55,224,102,64,102,0,102,0,118,0,62,0,31,128,7, + 192,6,224,6,96,134,96,198,96,230,192,127,192,31,0,6, + 0,6,0,17,16,48,19,1,0,56,6,0,108,12,0,198, + 24,0,198,24,0,198,48,0,198,96,0,198,192,0,108,192, + 0,57,158,0,3,51,0,6,97,128,6,97,128,12,97,128, + 24,97,128,48,51,0,32,30,0,17,19,57,18,1,0,3, + 192,0,12,224,0,8,96,0,24,96,0,24,96,0,24,192, + 0,29,192,0,31,128,0,14,0,0,62,63,128,119,29,0, + 103,12,0,195,140,0,193,204,0,193,232,0,192,248,0,96, + 120,0,112,222,0,31,7,128,3,9,9,7,2,11,96,224, + 224,192,192,64,64,64,64,6,25,25,9,2,252,4,8,24, + 48,32,96,96,96,192,192,192,192,192,192,192,192,192,224,96, + 96,96,48,24,8,4,6,25,25,9,1,252,128,64,96,48, + 24,24,24,24,12,12,12,12,12,12,12,12,12,24,24,24, + 48,48,96,64,128,10,12,24,12,1,9,12,0,12,0,140, + 0,204,192,119,128,30,0,30,0,119,128,204,192,12,128,12, + 0,12,0,10,9,18,11,1,3,12,0,12,0,12,0,12, + 0,255,192,12,0,12,0,12,0,12,0,4,7,7,6,1, + 252,112,240,48,48,32,96,64,7,1,1,9,1,6,254,3, + 4,4,6,2,255,96,224,224,192,11,25,50,13,1,252,0, + 96,0,96,0,192,0,192,1,128,1,128,1,128,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,224,0,192,0,192, + 0,11,16,32,13,1,0,15,0,49,128,96,192,64,192,64, + 224,192,96,192,96,192,96,192,96,192,96,192,96,192,64,96, + 64,96,192,49,128,30,0,9,16,32,13,2,0,12,0,60, + 0,252,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,128,10,16,32, + 13,1,0,15,0,49,128,96,192,96,192,0,192,0,192,1, + 128,1,128,3,0,6,0,12,0,28,0,24,0,48,64,96, + 64,255,192,10,16,32,13,1,0,30,0,99,0,97,128,193, + 128,1,128,3,0,6,0,31,0,3,128,1,192,0,192,0, + 192,0,192,1,128,193,128,62,0,11,16,32,13,1,0,1, + 128,3,128,7,128,5,128,13,128,25,128,17,128,49,128,97, + 128,65,128,255,224,1,128,1,128,1,128,1,128,15,224,10, + 16,32,13,1,0,63,192,32,0,32,0,32,0,96,0,96, + 0,127,0,67,128,1,192,0,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,3,128,14,0,24, + 0,48,0,96,0,96,0,207,0,241,192,192,224,192,96,192, + 96,192,96,96,96,96,64,48,128,31,0,11,16,32,13,1, + 0,127,224,64,192,128,192,0,128,1,128,1,128,3,0,3, + 0,6,0,6,0,4,0,12,0,12,0,24,0,24,0,48, + 0,11,16,32,13,1,0,31,0,113,128,224,192,224,192,224, + 192,241,128,63,0,15,128,51,192,96,224,192,96,192,96,192, + 96,192,64,96,128,31,0,11,17,34,13,1,255,31,0,49, + 128,96,192,192,192,192,96,192,96,192,96,224,96,113,224,30, + 96,0,224,0,192,0,192,1,128,3,0,14,0,48,0,3, + 14,14,6,2,255,64,224,224,224,0,0,0,0,0,0,96, + 224,224,192,4,17,17,6,1,252,32,112,112,112,0,0,0, + 0,0,0,112,240,48,48,32,96,64,10,9,18,12,1,3, + 0,192,3,192,31,0,120,0,224,0,248,0,30,0,7,192, + 0,192,10,5,10,12,1,5,255,192,0,0,0,0,0,0, + 255,192,10,9,18,12,1,3,192,0,248,0,30,0,7,192, + 1,192,7,128,60,0,240,0,128,0,10,20,40,12,1,255, + 31,0,97,128,192,192,192,192,192,192,0,192,1,128,1,128, + 3,0,6,0,6,0,12,0,12,0,12,0,8,0,0,0, + 12,0,28,0,28,0,24,0,20,22,66,22,1,251,0,252, + 0,3,7,0,12,1,192,24,0,192,48,0,96,32,244,96, + 97,28,112,67,12,48,194,12,48,198,12,48,198,12,48,198, + 12,48,198,12,32,198,12,96,227,12,64,99,60,128,97,199, + 0,48,0,0,56,0,0,28,0,64,7,3,128,1,252,0, + 16,17,34,16,0,0,0,128,1,128,3,128,3,192,2,192, + 6,192,6,96,4,96,12,112,12,48,15,240,24,24,24,24, + 16,24,48,12,48,12,248,63,12,17,34,14,1,0,127,128, + 176,192,48,96,48,96,48,96,48,64,49,128,63,192,48,224, + 48,96,48,48,48,48,48,48,48,48,48,96,48,224,255,128, + 12,17,34,14,1,0,7,224,24,112,48,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,48,16,24,32,15,192,14,17,34,16,1,0,127,128, + 176,224,48,48,48,24,48,24,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,24,48,24,48,48,48,96,255,128, + 12,17,34,13,1,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,11,17,34,13,1,0,255,224, + 48,32,48,32,48,0,48,0,48,0,48,0,63,128,49,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 14,17,34,16,1,0,3,240,12,56,16,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,252,192,24,192,24,96,24, + 96,24,48,24,24,24,7,224,16,17,34,18,1,0,252,63, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,63,252, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,252,63, + 6,17,17,8,1,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,10,22,44,8,253,251,31,192,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,2,0,6,0,68,0,248,0,15,17,34,16,1,0,252, + 252,48,48,48,96,48,192,49,128,51,0,54,0,52,0,62, + 0,54,0,51,0,49,128,49,192,48,224,48,112,48,56,252, + 30,12,17,34,13,1,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,16,48,48,255,224,20,17,51,22,1,0,240, + 1,224,56,1,192,56,3,192,44,2,192,44,6,192,44,6, + 192,38,4,192,38,12,192,35,8,192,35,24,192,35,152,192, + 33,144,192,33,176,192,32,224,192,32,224,192,32,64,192,248, + 67,240,16,17,34,18,1,0,240,63,48,12,56,12,60,12, + 52,12,54,12,51,12,51,12,49,140,48,204,48,204,48,108, + 48,60,48,60,48,28,48,28,252,12,14,17,34,16,1,0, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,8,96,24,96,16,48,48,24,96, + 15,128,12,17,34,14,1,0,127,128,176,224,48,96,48,48, + 48,48,48,48,48,48,48,96,48,192,63,128,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,16,21,42,16,1,252, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,96,24,48,48,24,96, + 15,192,0,192,0,96,0,49,0,14,14,17,34,15,1,0, + 127,0,177,192,48,96,48,96,48,96,48,96,48,192,49,192, + 63,0,51,0,49,128,49,128,48,192,48,224,48,96,48,112, + 252,60,10,17,34,13,2,0,31,0,99,128,193,0,192,0, + 224,0,240,0,124,0,126,0,31,128,7,128,1,192,0,192, + 0,192,128,192,128,128,193,0,126,0,14,17,34,15,0,0, + 255,252,131,4,131,4,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 15,192,16,17,34,18,1,0,252,63,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,24,24,24,12,48,7,224,17,17,51,18,0,0, + 252,15,128,48,6,0,24,6,0,24,4,0,24,12,0,12, + 12,0,12,8,0,14,24,0,6,24,0,6,16,0,3,48, + 0,3,32,0,3,96,0,1,224,0,1,192,0,1,192,0, + 0,128,0,22,17,51,23,0,0,252,16,124,48,16,16,48, + 56,16,24,56,48,24,56,48,24,108,48,24,108,32,24,76, + 32,12,198,96,12,198,96,12,134,96,13,131,64,7,131,64, + 7,3,192,7,1,192,7,1,192,6,1,128,16,17,34,17, + 0,0,124,63,56,28,24,24,12,48,14,48,7,96,3,192, + 3,192,1,192,3,192,3,224,6,112,12,48,12,24,24,28, + 56,14,252,63,15,17,34,16,0,0,240,62,56,12,24,24, + 28,24,14,48,6,32,7,96,3,192,3,192,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,7,224,12,17,34,14, + 1,0,127,240,64,96,64,224,128,192,1,192,3,128,3,0, + 7,0,6,0,14,0,28,0,24,0,56,0,48,16,112,16, + 224,48,255,240,6,25,25,8,2,252,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,252,11,25,50,13,1,252,128,0,192,0,64,0,96, + 0,96,0,48,0,48,0,48,0,24,0,24,0,8,0,12, + 0,12,0,6,0,6,0,2,0,3,0,3,0,1,128,1, + 128,1,128,0,192,0,192,0,64,0,96,6,25,25,9,1, + 252,252,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,252,11,13,26,13,1,7, + 6,0,14,0,14,0,15,0,27,0,19,0,17,128,49,128, + 33,192,96,192,96,192,64,96,192,64,11,1,2,13,1,253, + 255,224,6,6,6,9,0,14,96,224,48,24,8,4,11,12, + 24,12,1,0,31,0,97,128,225,128,1,128,1,128,31,128, + 121,128,225,128,193,128,193,128,199,128,121,224,13,20,40,14, + 0,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,54,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,16,48,48,56,96,15,128,10,12,24,12,1,0, + 15,192,48,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,96,64,48,192,31,0,13,20,40,14,1,0,0,96, + 1,224,0,96,0,96,0,96,0,96,0,96,0,96,15,224, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,120,30,96,10,12,24,12,1,0,15,0,49,128, + 96,192,64,192,255,192,192,0,192,0,192,0,224,0,96,64, + 48,128,31,0,10,20,40,8,1,0,3,192,12,128,24,0, + 16,0,48,0,48,0,48,0,48,0,255,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,13,18,36,13,0,250,15,24,48,240,32,96,96,96, + 96,96,96,96,56,192,31,0,24,0,56,0,63,128,31,240, + 48,120,192,24,192,24,192,16,112,96,31,128,14,20,40,15, + 1,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,50,48,52,48,56,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,252,6,18,18,7,1,0, + 48,112,48,0,0,0,48,240,48,48,48,48,48,48,48,48, + 48,252,8,24,24,7,253,250,3,7,3,0,0,0,3,15, + 3,3,3,3,3,3,3,3,3,3,3,3,2,2,4,248, + 13,20,40,14,1,0,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,240,48,192,49,128,51,0,52,0, + 60,0,54,0,51,0,49,128,48,192,48,224,248,120,6,20, + 20,7,1,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,12,36,21,1,0,113,195, + 128,182,108,192,56,112,192,56,112,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,48,96,192,48,96,192,253, + 251,240,14,12,24,15,1,0,113,224,178,48,52,48,56,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,252, + 12,12,24,14,1,0,15,128,48,192,96,96,64,112,192,48, + 192,48,192,48,192,48,224,32,96,96,48,192,31,0,12,18, + 36,14,1,250,113,192,182,224,56,96,48,48,48,48,48,48, + 48,48,48,48,48,32,48,96,56,64,55,128,48,0,48,0, + 48,0,48,0,48,0,252,0,13,18,36,14,1,250,15,32, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,96,30,96,0,96,0,96,0,96,0,96,0,96, + 1,248,10,12,24,11,1,0,51,192,244,128,56,128,56,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 8,12,12,10,1,0,62,70,194,224,240,124,30,7,131,131, + 198,124,9,17,34,9,0,0,16,0,48,0,48,0,48,0, + 48,0,255,128,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,0,30,128,14,12,24,14,0,0, + 48,48,240,240,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,112,56,188,31,48,13,12,24,13,0,0,248,120, + 48,48,48,32,24,96,24,64,28,64,12,192,12,128,7,128, + 7,0,7,0,2,0,19,12,36,19,0,0,248,99,224,48, + 96,128,48,96,128,48,241,128,24,177,128,25,177,0,25,153, + 0,13,27,0,15,26,0,14,14,0,6,14,0,4,4,0, + 13,12,24,14,0,0,252,248,56,96,24,64,12,128,7,128, + 7,0,7,128,13,128,8,192,16,96,48,112,248,248,14,18, + 36,13,255,250,124,60,24,24,24,16,12,48,12,32,14,32, + 6,96,6,64,3,192,3,128,3,128,1,128,1,0,3,0, + 2,0,6,0,124,0,240,0,10,12,24,12,1,0,127,192, + 65,128,131,128,3,0,6,0,12,0,28,0,24,0,48,0, + 112,64,96,64,255,192,6,25,25,9,2,252,4,8,24,48, + 48,48,48,24,24,24,24,48,224,56,24,24,24,24,48,48, + 48,48,16,24,4,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,6,25,25,9,1,252,128,96,32,48, + 48,48,48,96,96,96,96,48,28,48,96,96,96,96,48,48, + 48,48,96,64,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=19 dx=27 dy= 0 ascent=27 len=81 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x=-4 y=-9 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =27 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20[9119] U8G_SECTION(".progmem.u8g_font_gdr20") = { + 0,47,44,240,246,20,4,220,11,144,32,255,248,27,247,25, + 248,0,0,0,7,0,0,4,23,23,9,2,0,48,112,112, + 112,112,112,112,112,112,96,96,96,96,96,96,96,96,64,0, + 112,240,240,224,8,10,10,14,3,13,227,199,199,199,199,195, + 195,195,195,194,14,18,36,15,1,2,1,24,3,24,3,16, + 2,48,6,48,63,252,4,96,12,96,12,96,12,64,8,192, + 255,248,24,128,17,128,49,128,49,128,49,0,35,0,12,25, + 50,15,1,253,6,0,6,0,6,0,31,192,63,240,102,96, + 102,0,102,0,102,0,118,0,62,0,31,128,7,192,7,224, + 6,112,6,48,6,48,134,48,198,48,230,96,255,192,127,128, + 6,0,6,0,6,0,20,20,60,22,1,255,30,0,192,99, + 1,128,67,3,128,193,131,0,193,134,0,193,140,0,193,156, + 0,97,24,0,99,48,0,60,115,192,0,108,96,0,200,96, + 1,152,48,3,152,48,3,24,48,6,24,48,14,8,32,28, + 12,96,24,7,128,48,0,0,19,22,66,21,2,0,3,192, + 0,4,224,0,8,96,0,24,96,0,24,96,0,24,96,0, + 24,192,0,29,128,0,15,0,0,12,0,0,28,63,224,62, + 14,128,119,6,0,99,134,0,193,134,0,193,198,0,192,236, + 0,192,124,0,192,60,0,96,30,0,48,47,192,31,195,128, + 3,10,10,8,3,13,224,192,192,192,192,192,192,192,192,192, + 7,30,30,10,2,251,2,12,24,24,48,48,96,96,96,96, + 192,192,192,192,192,192,192,192,192,192,224,96,96,96,112,48, + 56,24,12,2,7,30,30,10,1,251,128,96,48,56,24,28, + 12,12,12,14,6,6,6,6,6,6,6,6,6,6,12,12, + 12,12,24,24,48,48,96,128,12,13,26,14,1,11,6,0, + 6,0,134,0,102,48,242,240,27,128,6,0,27,128,114,240, + 230,48,6,32,6,0,6,0,12,11,22,13,1,3,6,0, + 6,0,6,0,6,0,6,0,255,240,6,0,6,0,6,0, + 6,0,6,0,4,8,8,7,2,251,112,240,48,48,48,32, + 64,192,9,1,2,11,1,8,255,128,4,4,4,7,2,0, + 112,240,240,224,13,30,60,15,1,251,0,24,0,56,0,48, + 0,48,0,112,0,96,0,96,0,224,0,192,1,192,1,128, + 1,128,3,128,3,0,7,0,6,0,6,0,14,0,12,0, + 12,0,28,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,13,19,38,15,1,0,7,128,24,192, + 32,96,96,48,64,48,64,56,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,16,96,16,96,48,48,32,24,64, + 15,128,11,19,38,15,2,0,2,0,30,0,126,0,134,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,15,0,127,224,11,19, + 38,15,2,0,15,128,48,192,96,96,96,96,96,96,0,96, + 0,96,0,192,0,192,1,128,3,0,7,0,6,0,12,0, + 24,0,48,32,112,32,224,32,255,224,11,19,38,15,2,0, + 31,0,113,128,96,192,224,192,0,192,0,192,1,128,3,0, + 15,0,3,192,0,192,0,224,0,96,0,96,0,96,0,96, + 128,192,193,128,127,0,12,19,38,15,1,0,0,64,1,192, + 3,192,3,192,6,192,12,192,12,192,24,192,48,192,48,192, + 96,192,224,192,255,240,0,192,0,192,0,192,0,192,0,192, + 7,240,11,19,38,15,2,0,63,224,32,0,32,0,96,0, + 96,0,96,0,96,0,127,0,97,192,0,192,0,96,0,96, + 0,96,0,96,0,96,0,64,128,192,193,128,63,0,12,20, + 40,15,2,0,0,192,7,0,14,0,24,0,48,0,112,0, + 96,0,96,0,207,128,240,224,224,96,192,112,192,48,192,48, + 192,48,96,48,96,32,32,96,48,64,15,128,12,19,38,15, + 2,0,255,240,128,96,128,96,0,224,0,192,0,192,1,128, + 1,128,3,0,3,0,7,0,6,0,6,0,12,0,12,0, + 28,0,24,0,56,0,48,0,12,19,38,15,2,0,31,128, + 48,192,96,96,224,96,224,96,224,96,248,192,127,128,31,128, + 31,192,49,224,96,112,192,112,192,48,192,48,192,32,96,32, + 112,64,31,128,12,20,40,15,2,255,15,128,49,192,32,224, + 64,96,192,112,192,48,192,48,192,48,192,48,96,112,48,176, + 31,48,0,96,0,96,0,96,0,192,1,128,7,0,30,0, + 48,0,4,15,15,7,2,0,112,240,240,96,0,0,0,0, + 0,0,0,112,240,240,224,4,20,20,7,2,251,112,240,240, + 96,0,0,0,0,0,0,0,0,112,240,48,48,48,32,64, + 192,12,10,20,14,1,4,0,48,0,240,7,192,62,0,248, + 0,240,0,126,0,15,128,1,240,0,112,12,6,12,14,1, + 6,255,240,0,0,0,0,0,0,0,0,255,240,12,10,20, + 14,1,4,96,0,248,0,31,0,7,224,0,240,1,240,7, + 192,62,0,240,0,192,0,10,23,46,14,2,0,31,0,99, + 128,65,192,192,192,192,192,128,192,0,192,1,128,1,128,3, + 0,3,0,6,0,14,0,12,0,12,0,12,0,12,0,0, + 0,0,0,14,0,30,0,30,0,28,0,24,25,75,26,1, + 251,0,63,128,1,192,224,2,0,56,12,0,28,24,0,12, + 16,60,142,32,67,134,96,129,135,65,129,131,193,1,131,195, + 1,131,195,1,131,195,1,131,195,1,131,195,1,131,195,1, + 130,225,129,134,97,131,132,112,197,200,48,120,240,56,0,0, + 28,0,4,15,0,28,3,192,112,0,127,128,19,20,60,19, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,14,20, + 40,17,1,0,63,192,240,112,48,56,48,24,48,24,48,24, + 48,24,48,48,48,224,63,224,48,112,48,56,48,28,48,12, + 48,12,48,12,48,12,48,24,48,48,255,192,14,20,40,17, + 1,0,3,248,12,28,16,8,48,0,96,0,96,0,64,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,112,0,56,4,28,24,7,224,17,20,60,19,1,0, + 63,224,0,240,56,0,48,12,0,48,6,0,48,3,0,48, + 3,0,48,3,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,3,0,48,3,0,48,3,0, + 48,6,0,48,12,0,48,56,0,255,224,0,13,20,40,16, + 1,0,255,240,48,16,48,16,48,16,48,0,48,0,48,0, + 48,0,48,0,63,224,48,64,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,12,20,40,15,1,0, + 255,240,48,16,48,16,48,16,48,0,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,254,0,18,20,60,19,1,0,1,254, + 0,6,15,0,8,0,0,16,0,0,32,0,0,96,0,0, + 64,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 31,192,192,7,0,192,3,0,96,3,0,96,3,0,48,3, + 0,24,3,0,12,3,0,3,252,0,19,20,60,21,1,0, + 252,7,224,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,63,255,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,252,7,224,6,20,20,10, + 2,0,252,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,11,25,50,10,253,251,15,224,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,0,1,0,3,0,98,0,252,0,17,20, + 60,19,1,0,252,127,0,48,24,0,48,48,0,48,96,0, + 48,224,0,49,192,0,49,128,0,51,0,0,54,0,0,62, + 0,0,54,0,0,55,0,0,51,128,0,49,192,0,48,224, + 0,48,112,0,48,120,0,48,60,0,48,30,0,252,15,128, + 13,20,40,15,1,0,252,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,8,48,8,48,24,255,248,24,20, + 60,26,1,0,248,0,62,60,0,56,60,0,120,62,0,120, + 54,0,216,54,0,216,55,0,152,51,1,152,51,129,152,49, + 131,24,49,195,24,49,198,24,48,198,24,48,230,24,48,108, + 24,48,124,24,48,56,24,48,56,24,48,56,24,252,16,255, + 19,20,60,21,1,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,20,60,19,1,0,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,2,0,48,6,0,56,4,0,12,24, + 0,7,224,0,15,20,40,17,1,0,63,224,240,56,48,28, + 48,14,48,6,48,6,48,6,48,6,48,12,48,12,52,56, + 51,224,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,19,25,75,19,1,251,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,3,0,48,6,0,24,4,0,12,24, + 0,7,240,0,0,112,0,0,24,0,0,14,32,0,7,192, + 0,1,128,18,20,60,18,1,0,63,192,0,240,112,0,48, + 24,0,48,12,0,48,12,0,48,12,0,48,12,0,48,24, + 0,48,112,0,63,224,0,63,192,0,49,192,0,48,224,0, + 48,112,0,48,112,0,48,56,0,48,60,0,48,28,0,48, + 15,0,252,15,192,12,20,40,15,2,0,15,224,48,224,64, + 64,192,0,192,0,224,0,248,0,126,0,127,0,31,192,7, + 224,1,240,0,240,0,112,0,48,0,48,128,32,192,96,224, + 192,127,0,16,20,40,18,1,0,255,255,129,131,129,129,129, + 129,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,15, + 240,19,20,60,21,1,0,252,7,224,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,0,24,3,0,28,6,0,14,12,0, + 3,240,0,20,20,60,21,0,0,254,3,240,56,0,192,24, + 0,128,28,1,128,12,1,128,14,3,0,14,3,0,6,3, + 0,7,6,0,7,6,0,3,6,0,3,140,0,1,140,0, + 1,204,0,1,216,0,0,216,0,0,248,0,0,240,0,0, + 112,0,0,96,0,27,20,80,27,0,0,254,4,15,224,56, + 4,3,0,24,14,3,0,24,14,3,0,28,15,3,0,28, + 27,2,0,12,27,6,0,12,27,134,0,12,49,134,0,14, + 49,134,0,14,49,196,0,6,96,204,0,6,96,204,0,7, + 96,236,0,7,192,108,0,3,192,120,0,3,192,120,0,3, + 128,56,0,3,128,56,0,3,0,48,0,19,20,60,20,0, + 0,127,31,192,60,7,0,28,6,0,14,6,0,7,12,0, + 7,28,0,3,152,0,1,240,0,1,240,0,0,224,0,0, + 240,0,1,240,0,1,184,0,3,28,0,7,12,0,6,14, + 0,12,7,0,28,3,128,56,3,192,255,15,224,18,20,60, + 19,0,0,240,31,192,56,7,0,28,6,0,12,12,0,14, + 12,0,7,24,0,7,24,0,3,48,0,3,176,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,7,248,0,14, + 20,40,17,1,0,127,252,96,28,64,56,64,120,0,112,0, + 224,0,224,1,192,3,192,3,128,7,0,7,0,14,0,30, + 0,28,0,56,0,56,4,112,4,240,12,255,252,7,30,30, + 10,2,251,254,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 254,13,30,60,15,1,251,192,0,192,0,96,0,96,0,112, + 0,48,0,48,0,24,0,24,0,28,0,12,0,12,0,14, + 0,6,0,6,0,3,0,3,0,3,128,1,128,1,128,0, + 192,0,192,0,192,0,96,0,96,0,112,0,48,0,48,0, + 24,0,24,7,30,30,10,1,251,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,254,12,15,30,16,2,9,2,0,6, + 0,15,0,15,0,27,0,27,128,17,128,49,192,49,192,96, + 192,96,224,96,96,192,112,192,48,128,32,13,1,2,15,1, + 253,255,248,7,7,7,10,0,16,96,240,56,24,12,4,2, + 13,15,30,15,1,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,15,24,48,16,0,0,48,0,240,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,240,49,248, + 54,28,60,12,56,14,48,6,48,6,48,6,48,6,48,6, + 48,4,48,12,48,8,28,16,7,224,12,15,30,14,1,0, + 7,224,24,96,32,32,96,0,64,0,192,0,192,0,192,0, + 192,0,192,0,192,0,96,0,112,32,56,112,31,128,15,24, + 48,17,1,0,0,24,0,120,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,7,248,24,56,32,24,96,24,64,24, + 192,24,192,24,192,24,192,24,192,24,192,24,96,24,112,56, + 56,222,15,24,13,15,30,15,1,0,7,192,24,96,32,48, + 96,24,64,24,192,24,255,240,192,0,192,0,192,0,224,0, + 96,0,112,8,56,48,15,192,11,24,48,10,1,0,3,224, + 4,192,24,0,16,0,48,0,48,0,48,0,48,0,48,0, + 255,0,50,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,15,23, + 46,16,1,248,7,134,24,252,32,96,96,48,96,48,96,48, + 96,48,112,96,56,64,31,128,8,0,16,0,60,0,63,224, + 15,248,63,252,112,124,224,12,192,12,192,8,96,16,112,32, + 31,192,16,24,48,18,1,0,16,0,240,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,112,49,136,54,12, + 56,12,56,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,21,21,9,1,0,48,112, + 112,96,0,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,29,58,8,252,248,1,128,3,128,3,128,3, + 0,0,0,0,0,1,128,7,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,0,3,0,2,0,124, + 0,248,0,15,24,48,16,1,0,16,0,240,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,252,48,112,48, + 224,49,128,51,0,54,0,62,0,54,0,55,0,51,128,49, + 192,48,224,48,112,48,120,252,62,6,24,24,9,1,0,16, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,24,15,45,26,1,0,240,240,120, + 51,25,140,52,26,12,56,28,12,56,28,12,48,24,12,48, + 24,12,48,24,12,48,24,12,48,24,12,48,24,12,48,24, + 12,48,24,12,48,24,12,252,126,63,16,15,30,18,1,0, + 112,112,177,136,54,12,56,12,56,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,252,63,14,15, + 30,16,1,0,7,192,24,112,32,56,96,24,64,28,192,12, + 192,12,192,12,192,12,192,12,224,8,96,24,112,16,56,32, + 15,192,15,23,46,17,1,248,112,240,179,24,52,28,56,12, + 48,14,48,6,48,6,48,6,48,6,48,6,48,4,48,12, + 48,8,60,16,55,224,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,254,0,14,23,46,16,1,248,7,144,24,112, + 32,48,96,48,64,48,192,48,192,48,192,48,192,48,192,48, + 192,48,96,48,96,112,48,176,31,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,1,252,11,15,30,13,1,0, + 49,224,243,224,52,64,56,64,56,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,9,15, + 30,12,2,0,63,0,67,0,193,0,192,0,224,0,248,0, + 126,0,63,0,15,128,3,128,1,128,129,128,129,0,195,0, + 252,0,10,20,40,11,1,0,16,0,48,0,48,0,48,0, + 48,0,255,192,49,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,128,31,64, + 15,15,30,17,1,0,48,24,240,120,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,56, + 24,222,15,24,15,15,30,16,0,0,252,62,56,12,56,8, + 24,24,28,24,12,16,12,48,14,48,6,32,7,96,7,64, + 3,64,3,192,1,128,1,0,22,15,45,23,0,0,252,16, + 124,48,24,24,56,56,16,24,56,48,24,60,48,28,108,48, + 12,110,32,12,78,96,12,198,96,14,199,64,6,131,64,7, + 131,192,7,131,192,3,1,128,2,1,0,16,15,30,16,0, + 0,254,63,60,28,28,16,14,48,6,96,7,192,3,192,1, + 192,3,192,6,224,12,112,12,56,24,24,56,28,252,63,16, + 23,46,16,255,248,126,31,28,6,28,4,12,12,14,12,14, + 8,6,24,7,24,3,16,3,48,3,176,1,160,1,224,1, + 224,0,192,0,192,0,128,1,128,1,128,3,0,126,0,124, + 0,248,0,12,15,30,14,1,0,127,240,64,96,64,224,1, + 192,1,128,3,128,7,0,6,0,14,0,28,0,28,0,56, + 16,112,16,112,48,255,240,8,30,30,11,2,251,3,6,12, + 8,24,24,24,24,28,12,12,12,12,24,48,248,28,12,12, + 12,12,28,24,24,24,24,24,12,6,3,2,32,32,7,3, + 250,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,30,30,11,1,251,192,96,48,24,24,24,24,24,56, + 48,48,48,48,56,31,12,24,48,48,48,48,56,24,24,24, + 24,16,48,96,192,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,7,0,0,4,24, + 24,9,2,247,112,240,240,224,0,0,32,96,96,96,96,96, + 96,96,96,96,112,112,112,112,112,112,112,64,12,20,40,15, + 2,255,6,0,6,0,6,0,15,224,54,224,102,96,102,0, + 198,0,198,0,198,0,198,0,198,0,198,0,230,32,118,48, + 63,192,31,128,6,0,6,0,6,0,13,19,38,15,1,0, + 7,224,8,112,16,48,16,32,48,32,48,0,48,0,48,0, + 48,0,255,0,48,0,48,0,48,0,48,0,48,8,32,24, + 96,48,127,240,131,240,11,10,20,15,2,4,192,96,127,192, + 49,192,96,192,96,192,96,192,113,192,63,128,64,64,128,32, + 16,19,38,15,255,0,240,63,56,28,28,24,28,56,14,48, + 6,112,7,96,3,192,3,192,1,128,1,128,63,252,1,128, + 1,128,1,128,1,128,1,128,1,128,15,240,2,32,32,7, + 3,250,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 128,0,0,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,11,22,44,15,2,0,31,128,49,192,96,128,96,0, + 112,0,120,0,62,0,111,128,199,192,193,224,192,224,224,96, + 240,96,124,96,63,192,15,128,3,192,1,192,64,192,64,192, + 96,128,63,0,9,4,8,13,2,17,97,128,227,128,227,128, + 195,0,21,20,60,24,1,0,1,252,0,6,3,0,24,0, + 192,48,0,96,48,124,96,97,134,48,99,0,48,194,0,24, + 198,0,24,198,0,24,198,0,24,198,0,24,199,0,24,99, + 0,48,97,198,48,48,248,96,48,0,96,24,0,192,6,3, + 0,1,252,0,7,10,10,8,1,9,56,204,140,28,108,204, + 220,238,0,254,12,14,28,16,1,0,6,16,4,48,8,96, + 24,96,48,192,113,192,227,128,227,128,113,192,48,192,24,96, + 8,96,4,48,6,16,13,6,12,15,1,3,255,248,0,24, + 0,24,0,24,0,24,0,24,9,1,2,11,1,8,255,128, + 10,11,22,11,1,11,30,0,97,0,126,128,147,64,151,64, + 156,64,148,64,146,64,105,128,33,0,30,0,10,1,2,16, + 3,19,255,192,7,7,7,11,2,12,60,110,198,198,198,236, + 120,12,14,28,13,1,2,6,0,6,0,6,0,6,0,6, + 0,255,240,6,0,6,0,6,0,6,0,4,0,0,0,0, + 0,255,224,8,11,11,10,1,10,62,99,195,3,6,6,12, + 24,50,97,255,9,12,24,11,0,9,31,0,51,128,97,128, + 1,128,3,0,15,0,1,128,1,128,1,128,1,128,195,0, + 62,0,7,7,7,10,3,16,12,30,24,48,48,96,192,15, + 23,46,17,1,248,48,8,240,56,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,56,56,56,120,63,248,55, + 222,51,152,48,0,48,0,48,0,48,0,56,0,56,0,56, + 0,48,0,15,24,48,18,1,252,15,254,48,252,96,216,64, + 216,192,216,192,216,192,216,192,216,224,216,112,216,56,216,15, + 216,0,216,0,216,0,216,0,216,0,216,0,216,0,216,0, + 216,0,216,0,216,0,216,3,254,3,4,4,5,1,9,96, + 224,224,192,5,7,7,7,1,249,48,32,48,120,24,48,224, + 8,11,11,11,2,10,24,248,24,24,24,24,24,24,24,24, + 255,7,10,10,9,1,9,56,108,198,198,198,198,108,56,0, + 254,12,14,28,16,2,0,130,0,65,0,97,128,48,192,56, + 224,28,96,12,112,28,112,30,96,56,224,48,192,97,128,65, + 0,130,0,16,19,38,19,2,0,48,6,240,14,48,12,48, + 24,48,56,48,48,48,96,48,224,48,192,205,130,1,142,3, + 30,6,22,6,38,12,70,24,127,24,134,48,6,96,31,15, + 19,38,18,2,0,48,6,240,12,48,8,48,24,48,48,48, + 48,48,96,48,192,48,192,205,128,1,28,3,102,6,70,4, + 6,12,12,24,24,24,48,48,98,96,254,17,19,57,19,1, + 0,60,3,0,70,6,0,6,4,0,28,12,0,6,24,0, + 6,16,0,6,48,0,142,96,0,120,96,0,0,193,0,1, + 135,0,1,143,0,3,11,0,2,19,0,6,35,0,12,63, + 128,12,67,0,24,3,0,48,15,128,10,24,48,13,2,247, + 14,0,30,0,30,0,28,0,0,0,0,0,0,0,12,0, + 12,0,12,0,12,0,28,0,24,0,48,0,48,0,96,0, + 96,0,192,0,192,64,192,192,192,192,224,128,97,128,62,0, + 19,27,81,19,0,0,6,0,0,15,0,0,7,128,0,1, + 192,0,0,96,0,0,16,0,0,0,0,0,64,0,0,224, + 0,0,224,0,1,224,0,1,240,0,1,176,0,3,48,0, + 3,56,0,3,24,0,6,28,0,6,28,0,6,12,0,15, + 254,0,12,6,0,8,6,0,24,7,0,24,3,0,16,3, + 0,48,3,128,254,15,224,19,27,81,19,0,0,0,8,0, + 0,30,0,0,60,0,0,112,0,1,192,0,1,0,0,0, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,19,27, + 81,19,0,0,0,224,0,1,224,0,1,240,0,3,56,0, + 6,12,0,12,4,0,0,0,0,0,64,0,0,224,0,0, + 224,0,1,224,0,1,240,0,1,176,0,3,48,0,3,56, + 0,3,24,0,6,28,0,6,28,0,6,12,0,15,254,0, + 12,6,0,8,6,0,24,7,0,24,3,0,16,3,0,48, + 3,128,254,15,224,19,26,78,19,0,0,3,132,0,7,230, + 0,4,252,0,8,56,0,0,0,0,0,0,0,0,64,0, + 0,224,0,0,224,0,1,224,0,1,240,0,1,176,0,3, + 48,0,3,56,0,3,24,0,6,28,0,6,28,0,6,12, + 0,15,254,0,12,6,0,8,6,0,24,7,0,24,3,0, + 16,3,0,48,3,128,254,15,224,19,25,75,19,0,0,6, + 12,0,6,12,0,14,28,0,6,12,0,0,0,0,0,64, + 0,0,224,0,0,224,0,1,224,0,1,240,0,1,176,0, + 3,48,0,3,56,0,3,24,0,6,28,0,6,28,0,6, + 12,0,15,254,0,12,6,0,8,6,0,24,7,0,24,3, + 0,16,3,0,48,3,128,254,15,224,19,27,81,19,0,0, + 0,224,0,1,176,0,1,48,0,3,48,0,1,176,0,1, + 224,0,0,0,0,0,64,0,0,224,0,0,224,0,1,224, + 0,1,240,0,1,176,0,3,48,0,3,56,0,3,24,0, + 6,28,0,6,28,0,6,12,0,15,254,0,12,6,0,8, + 6,0,24,7,0,24,3,0,16,3,0,48,3,128,254,15, + 224,23,20,60,25,0,0,3,255,252,0,124,4,0,108,4, + 0,236,4,0,204,0,1,204,0,1,140,0,1,140,0,3, + 140,0,3,255,248,7,12,16,6,12,0,6,12,0,12,12, + 0,12,12,0,28,12,0,24,12,2,24,12,2,48,12,6, + 252,63,254,15,27,54,17,1,249,3,248,12,28,16,8,48, + 0,96,0,96,0,64,0,192,0,192,0,192,0,192,0,192, + 0,192,0,224,0,96,0,112,0,120,2,60,12,31,248,15, + 240,0,128,0,128,1,224,0,224,0,96,0,192,3,0,13, + 27,54,16,1,0,16,0,56,0,28,0,15,0,3,128,0, + 192,0,0,255,240,48,16,48,16,48,16,48,0,48,0,48, + 0,48,0,48,0,63,224,48,64,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,24,255,248,13,27,54,16,1, + 0,0,32,0,240,1,224,3,128,7,0,12,0,0,0,255, + 240,48,16,48,16,48,16,48,0,48,0,48,0,48,0,48, + 0,63,224,48,64,48,0,48,0,48,0,48,0,48,0,48, + 8,48,8,48,24,255,248,13,27,54,16,1,0,3,0,7, + 128,15,192,28,192,56,96,32,48,0,0,255,240,48,16,48, + 16,48,16,48,0,48,0,48,0,48,0,48,0,63,224,48, + 64,48,0,48,0,48,0,48,0,48,0,48,8,48,8,48, + 24,255,248,13,25,50,16,1,0,24,48,56,112,56,112,48, + 96,0,0,255,240,48,16,48,16,48,16,48,0,48,0,48, + 0,48,0,48,0,63,224,48,64,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,24,255,248,9,27,54,10,255, + 0,96,0,240,0,120,0,28,0,7,0,1,0,0,0,31, + 128,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,31,128,8,27,27,10,2,0,6,15,30, + 56,96,128,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,10,27,54,10,0,0,28,0, + 30,0,62,0,115,0,193,128,128,192,0,0,63,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,63,0,10,25,50,10,0,0,193,128,225,192,225,192, + 193,128,0,0,63,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,63,0,18,20,60,19, + 0,0,31,240,0,120,28,0,24,6,0,24,3,0,24,1, + 128,24,1,128,24,1,192,24,0,192,24,0,192,255,128,192, + 24,0,192,24,0,192,24,0,192,24,1,128,24,1,128,24, + 1,128,24,3,0,24,6,0,24,28,0,127,240,0,19,26, + 78,21,1,0,3,132,0,7,230,0,4,124,0,8,56,0, + 0,0,0,0,0,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,27,81,19,1,0,12,0,0,30,0,0,15,0, + 0,3,128,0,0,224,0,0,32,0,0,0,0,3,240,0, + 12,24,0,16,12,0,48,6,0,32,3,0,96,3,0,64, + 3,128,192,1,128,192,1,128,192,1,128,192,1,128,192,1, + 128,192,1,128,224,1,0,96,3,0,96,2,0,48,6,0, + 56,4,0,12,24,0,7,224,0,17,27,81,19,1,0,0, + 24,0,0,60,0,0,120,0,0,224,0,1,128,0,2,0, + 0,0,0,0,3,240,0,12,24,0,16,12,0,48,6,0, + 32,3,0,96,3,0,64,3,128,192,1,128,192,1,128,192, + 1,128,192,1,128,192,1,128,192,1,128,224,1,0,96,3, + 0,96,2,0,48,6,0,56,4,0,12,24,0,7,224,0, + 17,27,81,19,1,0,1,192,0,1,224,0,3,224,0,7, + 48,0,12,24,0,8,12,0,0,0,0,3,240,0,12,24, + 0,16,12,0,48,6,0,32,3,0,96,3,0,64,3,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,192, + 1,128,224,1,0,96,3,0,96,2,0,48,6,0,56,4, + 0,12,24,0,7,224,0,17,26,78,19,1,0,3,4,0, + 7,204,0,8,248,0,16,112,0,0,0,0,0,0,0,3, + 240,0,12,24,0,16,12,0,48,6,0,32,3,0,96,3, + 0,64,3,128,192,1,128,192,1,128,192,1,128,192,1,128, + 192,1,128,192,1,128,224,1,0,96,3,0,96,2,0,48, + 6,0,56,4,0,12,24,0,7,224,0,17,25,75,19,1, + 0,12,24,0,14,28,0,14,28,0,12,24,0,0,0,0, + 3,240,0,12,24,0,16,12,0,48,6,0,32,3,0,96, + 3,0,64,3,128,192,1,128,192,1,128,192,1,128,192,1, + 128,192,1,128,192,1,128,224,1,0,96,3,0,96,2,0, + 48,6,0,56,4,0,12,24,0,7,224,0,11,10,20,13, + 1,4,192,96,96,192,49,128,27,0,14,0,14,0,27,0, + 49,128,96,192,192,96,17,21,63,19,1,255,3,241,128,4, + 31,0,24,14,0,48,30,0,32,31,0,96,63,0,64,59, + 128,192,115,128,192,225,128,192,225,128,193,193,128,195,129,128, + 195,1,128,231,1,0,110,3,0,124,2,0,124,6,0,56, + 4,0,124,24,0,199,224,0,128,0,0,19,27,81,21,1, + 0,6,0,0,15,0,0,7,128,0,1,192,0,0,96,0, + 0,16,0,0,0,0,252,7,224,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,0,24,3,0,28,6,0,14,12,0,3, + 240,0,19,27,81,21,1,0,0,12,0,0,30,0,0,60, + 0,0,112,0,0,192,0,1,0,0,0,0,0,252,7,224, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,0,24,3,0, + 28,6,0,14,12,0,3,240,0,19,27,81,21,1,0,0, + 224,0,0,240,0,1,240,0,3,152,0,6,12,0,4,6, + 0,0,0,0,252,7,224,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,0,24,3,0,28,6,0,14,12,0,3,240,0, + 19,25,75,21,1,0,6,12,0,7,14,0,7,14,0,6, + 12,0,0,0,0,252,7,224,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,0,24,3,0,28,6,0,14,12,0,3,240, + 0,18,27,81,19,0,0,0,12,0,0,30,0,0,60,0, + 0,112,0,0,192,0,1,0,0,0,0,0,240,31,192,56, + 7,0,28,6,0,12,12,0,14,12,0,7,24,0,7,24, + 0,3,48,0,3,176,0,1,224,0,1,224,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,7,248,0,15,20,40,17,1,0,254,0, + 48,0,48,0,48,0,63,224,48,120,48,28,48,14,48,6, + 48,6,48,6,48,6,48,12,48,12,52,56,51,224,48,0, + 48,0,48,0,254,0,16,24,48,18,1,0,1,224,6,56, + 8,24,16,28,16,12,48,12,48,12,48,28,48,56,48,240, + 49,192,49,128,49,128,49,192,48,240,48,124,48,62,48,15, + 48,7,48,3,49,3,49,3,49,134,241,248,13,23,46,15, + 1,0,56,0,56,0,28,0,14,0,6,0,3,0,1,0, + 0,0,15,192,48,224,112,96,96,96,0,96,0,96,15,224, + 63,224,126,96,240,96,224,96,192,96,192,96,65,224,62,120, + 13,23,46,15,1,0,0,224,0,224,1,192,1,128,3,0, + 2,0,4,0,0,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,13,23,46,15,1,0,7,0,7,0,15,128, + 29,192,24,192,48,96,32,32,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,21,42,15,1,0,28,16, + 63,32,35,192,64,0,0,0,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,21,42,15,1,0,48,96, + 56,112,48,96,48,96,0,0,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,22,44,15,1,0,7,128, + 13,128,12,192,12,128,13,128,15,0,0,0,15,192,48,224, + 112,96,96,96,0,96,0,96,15,224,63,224,126,96,240,96, + 224,96,192,96,192,96,65,224,62,120,19,15,45,22,2,0, + 31,143,0,113,176,192,96,224,192,224,224,96,128,192,96,0, + 192,96,7,255,192,28,192,0,112,192,0,96,192,0,192,192, + 0,192,224,0,193,96,64,194,112,224,124,31,0,12,22,44, + 14,1,249,7,224,24,96,32,32,96,0,64,0,192,0,192, + 0,192,0,192,0,192,0,224,0,112,16,120,96,63,192,31, + 128,2,0,2,0,7,128,3,128,1,128,3,0,12,0,13, + 23,46,15,1,0,24,0,60,0,12,0,6,0,3,0,1, + 0,1,128,0,0,7,192,24,96,32,48,96,24,64,24,192, + 24,255,240,192,0,192,0,192,0,224,0,96,0,112,8,56, + 48,15,192,13,23,46,15,1,0,0,96,0,240,0,192,1, + 128,1,128,3,0,6,0,0,0,7,192,24,96,32,48,96, + 24,64,24,192,24,255,240,192,0,192,0,192,0,224,0,96, + 0,112,8,56,48,15,192,13,23,46,15,1,0,3,0,7, + 128,15,128,12,192,24,96,16,32,32,16,0,0,7,192,24, + 96,32,48,96,24,64,24,192,24,255,240,192,0,192,0,192, + 0,224,0,96,0,112,8,56,48,15,192,13,21,42,15,1, + 0,24,48,56,112,56,112,48,96,0,0,0,0,7,192,24, + 96,32,48,96,24,64,24,192,24,255,240,192,0,192,0,192, + 0,224,0,96,0,112,8,56,48,15,192,7,23,23,9,0, + 0,224,224,112,48,24,12,4,0,24,120,24,24,24,24,24, + 24,24,24,24,24,24,24,126,8,23,23,9,1,0,7,7, + 14,12,24,48,32,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,252,9,23,46,9,0,0,28,0,28,0,62, + 0,119,0,99,0,193,128,128,128,0,0,24,0,120,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,126,0,10,21,42,9,0,0,193, + 128,193,128,227,192,193,128,0,0,0,0,24,0,120,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,126,0,14,23,46,16,1,0,12, + 0,62,24,3,240,3,192,30,224,48,96,0,112,0,56,7, + 152,24,120,32,60,96,28,64,12,192,12,192,12,192,12,192, + 12,192,8,224,24,96,16,112,48,56,96,15,128,16,21,42, + 18,1,0,7,8,15,144,24,224,16,0,0,0,0,0,112, + 112,177,136,54,12,56,12,56,12,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,252,63,14,23,46, + 16,1,0,28,0,28,0,14,0,6,0,3,0,1,128,0, + 128,0,0,7,192,24,112,32,56,96,24,64,28,192,12,192, + 12,192,12,192,12,192,12,224,8,96,24,112,16,56,32,15, + 192,14,23,46,16,1,0,0,112,0,112,0,224,1,192,1, + 128,3,0,2,0,0,0,7,192,24,112,32,56,96,24,64, + 28,192,12,192,12,192,12,192,12,192,12,224,8,96,24,112, + 16,56,32,15,192,14,23,46,16,1,0,3,128,3,128,7, + 192,14,192,12,96,24,48,48,16,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,14,21,42,16,1,0,14, + 8,31,144,17,224,32,0,0,0,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,14,21,42,16,1,0,24, + 48,24,48,56,112,24,48,0,0,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,11,10,20,13,1,4,6, + 0,6,0,6,0,0,0,0,0,255,224,0,0,6,0,6, + 0,6,0,14,16,32,16,1,255,7,204,24,120,32,120,96, + 120,64,252,193,220,193,140,195,140,199,12,198,12,236,8,124, + 24,120,16,120,32,207,192,128,0,15,23,46,17,1,0,28, + 0,28,0,14,0,7,0,3,0,1,128,0,128,0,0,48, + 24,240,120,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,56,24,222,15,24,15,23,46, + 17,1,0,0,112,0,112,0,224,0,192,1,128,1,0,2, + 0,0,0,48,24,240,120,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,56,24,222,15, + 24,15,23,46,17,1,0,3,128,3,128,7,192,14,224,12, + 96,24,48,16,16,0,0,48,24,240,120,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 56,24,222,15,24,15,21,42,17,1,0,24,48,28,56,24, + 48,24,48,0,0,0,0,48,24,240,120,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 56,24,222,15,24,16,31,62,16,255,248,0,28,0,28,0, + 56,0,112,0,96,0,192,0,128,0,0,126,31,28,6,28, + 4,12,12,14,12,14,8,6,24,7,24,3,16,3,48,3, + 176,1,160,1,224,1,224,0,192,0,192,0,128,1,128,1, + 128,3,0,126,0,124,0,248,0,15,32,64,17,1,248,16, + 0,240,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,240,51,24,52,28,56,12,48,14,48,6,48,6,48, + 6,48,6,48,6,48,4,48,12,56,8,60,16,55,224,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,254,0,16, + 29,58,16,255,248,6,12,14,28,14,28,6,12,0,0,0, + 0,126,31,28,6,28,4,12,12,14,12,14,8,6,24,7, + 24,3,16,3,48,3,176,1,160,1,224,1,224,0,192,0, + 192,0,128,1,128,1,128,3,0,126,0,124,0,248,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 19 + Calculated Max Values w=13 h=30 x= 2 y=11 dx=15 dy= 0 ascent=25 len=60 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent= 0 + X Font ascent =19 descent= 0 + Max Font ascent =25 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20n[619] U8G_SECTION(".progmem.u8g_font_gdr20n") = { + 0,47,44,240,246,19,0,0,0,0,42,57,0,25,251,19, + 0,12,13,26,14,1,11,6,0,6,0,134,0,102,48,242, + 240,27,128,6,0,27,128,114,240,230,48,6,32,6,0,6, + 0,12,11,22,13,1,3,6,0,6,0,6,0,6,0,6, + 0,255,240,6,0,6,0,6,0,6,0,6,0,4,8,8, + 7,2,251,112,240,48,48,48,32,64,192,9,1,2,11,1, + 8,255,128,4,4,4,7,2,0,112,240,240,224,13,30,60, + 15,1,251,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,1,192,1,128,1,128,3,128,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,24,0,56, + 0,48,0,48,0,112,0,96,0,96,0,224,0,192,0,13, + 19,38,15,1,0,7,128,24,192,32,96,96,48,64,48,64, + 56,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 16,96,16,96,48,48,32,24,64,15,128,11,19,38,15,2, + 0,2,0,30,0,126,0,134,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,15,0,127,224,11,19,38,15,2,0,15,128,48, + 192,96,96,96,96,96,96,0,96,0,96,0,192,0,192,1, + 128,3,0,7,0,6,0,12,0,24,0,48,32,112,32,224, + 32,255,224,11,19,38,15,2,0,31,0,113,128,96,192,224, + 192,0,192,0,192,1,128,3,0,15,0,3,192,0,192,0, + 224,0,96,0,96,0,96,0,96,128,192,193,128,127,0,12, + 19,38,15,1,0,0,64,1,192,3,192,3,192,6,192,12, + 192,12,192,24,192,48,192,48,192,96,192,224,192,255,240,0, + 192,0,192,0,192,0,192,0,192,7,240,11,19,38,15,2, + 0,63,224,32,0,32,0,96,0,96,0,96,0,96,0,127, + 0,97,192,0,192,0,96,0,96,0,96,0,96,0,96,0, + 64,128,192,193,128,63,0,12,20,40,15,2,0,0,192,7, + 0,14,0,24,0,48,0,112,0,96,0,96,0,207,128,240, + 224,224,96,192,112,192,48,192,48,192,48,96,48,96,32,32, + 96,48,64,15,128,12,19,38,15,2,0,255,240,128,96,128, + 96,0,224,0,192,0,192,1,128,1,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,56,0,48, + 0,12,19,38,15,2,0,31,128,48,192,96,96,224,96,224, + 96,224,96,248,192,127,128,31,128,31,192,49,224,96,112,192, + 112,192,48,192,48,192,32,96,32,112,64,31,128,12,20,40, + 15,2,255,15,128,49,192,32,224,64,96,192,112,192,48,192, + 48,192,48,192,48,96,112,48,176,31,48,0,96,0,96,0, + 96,0,192,1,128,7,0,30,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=16 dx=27 dy= 0 ascent=26 len=80 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x=-4 y=-8 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =26 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20r[4232] U8G_SECTION(".progmem.u8g_font_gdr20r") = { + 0,47,44,240,246,20,4,220,11,144,32,127,248,26,248,25, + 248,0,0,0,7,0,0,4,23,23,9,2,0,48,112,112, + 112,112,112,112,112,112,96,96,96,96,96,96,96,96,64,0, + 112,240,240,224,8,10,10,14,3,13,227,199,199,199,199,195, + 195,195,195,194,14,18,36,15,1,2,1,24,3,24,3,16, + 2,48,6,48,63,252,4,96,12,96,12,96,12,64,8,192, + 255,248,24,128,17,128,49,128,49,128,49,0,35,0,12,25, + 50,15,1,253,6,0,6,0,6,0,31,192,63,240,102,96, + 102,0,102,0,102,0,118,0,62,0,31,128,7,192,7,224, + 6,112,6,48,6,48,134,48,198,48,230,96,255,192,127,128, + 6,0,6,0,6,0,20,20,60,22,1,255,30,0,192,99, + 1,128,67,3,128,193,131,0,193,134,0,193,140,0,193,156, + 0,97,24,0,99,48,0,60,115,192,0,108,96,0,200,96, + 1,152,48,3,152,48,3,24,48,6,24,48,14,8,32,28, + 12,96,24,7,128,48,0,0,19,22,66,21,2,0,3,192, + 0,4,224,0,8,96,0,24,96,0,24,96,0,24,96,0, + 24,192,0,29,128,0,15,0,0,12,0,0,28,63,224,62, + 14,128,119,6,0,99,134,0,193,134,0,193,198,0,192,236, + 0,192,124,0,192,60,0,96,30,0,48,47,192,31,195,128, + 3,10,10,8,3,13,224,192,192,192,192,192,192,192,192,192, + 7,30,30,10,2,251,2,12,24,24,48,48,96,96,96,96, + 192,192,192,192,192,192,192,192,192,192,224,96,96,96,112,48, + 56,24,12,2,7,30,30,10,1,251,128,96,48,56,24,28, + 12,12,12,14,6,6,6,6,6,6,6,6,6,6,12,12, + 12,12,24,24,48,48,96,128,12,13,26,14,1,11,6,0, + 6,0,134,0,102,48,242,240,27,128,6,0,27,128,114,240, + 230,48,6,32,6,0,6,0,12,11,22,13,1,3,6,0, + 6,0,6,0,6,0,6,0,255,240,6,0,6,0,6,0, + 6,0,6,0,4,8,8,7,2,251,112,240,48,48,48,32, + 64,192,9,1,2,11,1,8,255,128,4,4,4,7,2,0, + 112,240,240,224,13,30,60,15,1,251,0,24,0,56,0,48, + 0,48,0,112,0,96,0,96,0,224,0,192,1,192,1,128, + 1,128,3,128,3,0,7,0,6,0,6,0,14,0,12,0, + 12,0,28,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,13,19,38,15,1,0,7,128,24,192, + 32,96,96,48,64,48,64,56,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,16,96,16,96,48,48,32,24,64, + 15,128,11,19,38,15,2,0,2,0,30,0,126,0,134,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,15,0,127,224,11,19, + 38,15,2,0,15,128,48,192,96,96,96,96,96,96,0,96, + 0,96,0,192,0,192,1,128,3,0,7,0,6,0,12,0, + 24,0,48,32,112,32,224,32,255,224,11,19,38,15,2,0, + 31,0,113,128,96,192,224,192,0,192,0,192,1,128,3,0, + 15,0,3,192,0,192,0,224,0,96,0,96,0,96,0,96, + 128,192,193,128,127,0,12,19,38,15,1,0,0,64,1,192, + 3,192,3,192,6,192,12,192,12,192,24,192,48,192,48,192, + 96,192,224,192,255,240,0,192,0,192,0,192,0,192,0,192, + 7,240,11,19,38,15,2,0,63,224,32,0,32,0,96,0, + 96,0,96,0,96,0,127,0,97,192,0,192,0,96,0,96, + 0,96,0,96,0,96,0,64,128,192,193,128,63,0,12,20, + 40,15,2,0,0,192,7,0,14,0,24,0,48,0,112,0, + 96,0,96,0,207,128,240,224,224,96,192,112,192,48,192,48, + 192,48,96,48,96,32,32,96,48,64,15,128,12,19,38,15, + 2,0,255,240,128,96,128,96,0,224,0,192,0,192,1,128, + 1,128,3,0,3,0,7,0,6,0,6,0,12,0,12,0, + 28,0,24,0,56,0,48,0,12,19,38,15,2,0,31,128, + 48,192,96,96,224,96,224,96,224,96,248,192,127,128,31,128, + 31,192,49,224,96,112,192,112,192,48,192,48,192,32,96,32, + 112,64,31,128,12,20,40,15,2,255,15,128,49,192,32,224, + 64,96,192,112,192,48,192,48,192,48,192,48,96,112,48,176, + 31,48,0,96,0,96,0,96,0,192,1,128,7,0,30,0, + 48,0,4,15,15,7,2,0,112,240,240,96,0,0,0,0, + 0,0,0,112,240,240,224,4,20,20,7,2,251,112,240,240, + 96,0,0,0,0,0,0,0,0,112,240,48,48,48,32,64, + 192,12,10,20,14,1,4,0,48,0,240,7,192,62,0,248, + 0,240,0,126,0,15,128,1,240,0,112,12,6,12,14,1, + 6,255,240,0,0,0,0,0,0,0,0,255,240,12,10,20, + 14,1,4,96,0,248,0,31,0,7,224,0,240,1,240,7, + 192,62,0,240,0,192,0,10,23,46,14,2,0,31,0,99, + 128,65,192,192,192,192,192,128,192,0,192,1,128,1,128,3, + 0,3,0,6,0,14,0,12,0,12,0,12,0,12,0,0, + 0,0,0,14,0,30,0,30,0,28,0,24,25,75,26,1, + 251,0,63,128,1,192,224,2,0,56,12,0,28,24,0,12, + 16,60,142,32,67,134,96,129,135,65,129,131,193,1,131,195, + 1,131,195,1,131,195,1,131,195,1,131,195,1,131,195,1, + 130,225,129,134,97,131,132,112,197,200,48,120,240,56,0,0, + 28,0,4,15,0,28,3,192,112,0,127,128,19,20,60,19, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,14,20, + 40,17,1,0,63,192,240,112,48,56,48,24,48,24,48,24, + 48,24,48,48,48,224,63,224,48,112,48,56,48,28,48,12, + 48,12,48,12,48,12,48,24,48,48,255,192,14,20,40,17, + 1,0,3,248,12,28,16,8,48,0,96,0,96,0,64,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,112,0,56,4,28,24,7,224,17,20,60,19,1,0, + 63,224,0,240,56,0,48,12,0,48,6,0,48,3,0,48, + 3,0,48,3,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,3,0,48,3,0,48,3,0, + 48,6,0,48,12,0,48,56,0,255,224,0,13,20,40,16, + 1,0,255,240,48,16,48,16,48,16,48,0,48,0,48,0, + 48,0,48,0,63,224,48,64,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,12,20,40,15,1,0, + 255,240,48,16,48,16,48,16,48,0,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,254,0,18,20,60,19,1,0,1,254, + 0,6,15,0,8,0,0,16,0,0,32,0,0,96,0,0, + 64,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 31,192,192,7,0,192,3,0,96,3,0,96,3,0,48,3, + 0,24,3,0,12,3,0,3,252,0,19,20,60,21,1,0, + 252,7,224,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,63,255,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,252,7,224,6,20,20,10, + 2,0,252,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,11,25,50,10,253,251,15,224,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,0,1,0,3,0,98,0,252,0,17,20, + 60,19,1,0,252,127,0,48,24,0,48,48,0,48,96,0, + 48,224,0,49,192,0,49,128,0,51,0,0,54,0,0,62, + 0,0,54,0,0,55,0,0,51,128,0,49,192,0,48,224, + 0,48,112,0,48,120,0,48,60,0,48,30,0,252,15,128, + 13,20,40,15,1,0,252,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,8,48,8,48,24,255,248,24,20, + 60,26,1,0,248,0,62,60,0,56,60,0,120,62,0,120, + 54,0,216,54,0,216,55,0,152,51,1,152,51,129,152,49, + 131,24,49,195,24,49,198,24,48,198,24,48,230,24,48,108, + 24,48,124,24,48,56,24,48,56,24,48,56,24,252,16,255, + 19,20,60,21,1,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,20,60,19,1,0,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,2,0,48,6,0,56,4,0,12,24, + 0,7,224,0,15,20,40,17,1,0,63,224,240,56,48,28, + 48,14,48,6,48,6,48,6,48,6,48,12,48,12,52,56, + 51,224,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,19,25,75,19,1,251,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,3,0,48,6,0,24,4,0,12,24, + 0,7,240,0,0,112,0,0,24,0,0,14,32,0,7,192, + 0,1,128,18,20,60,18,1,0,63,192,0,240,112,0,48, + 24,0,48,12,0,48,12,0,48,12,0,48,12,0,48,24, + 0,48,112,0,63,224,0,63,192,0,49,192,0,48,224,0, + 48,112,0,48,112,0,48,56,0,48,60,0,48,28,0,48, + 15,0,252,15,192,12,20,40,15,2,0,15,224,48,224,64, + 64,192,0,192,0,224,0,248,0,126,0,127,0,31,192,7, + 224,1,240,0,240,0,112,0,48,0,48,128,32,192,96,224, + 192,127,0,16,20,40,18,1,0,255,255,129,131,129,129,129, + 129,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,15, + 240,19,20,60,21,1,0,252,7,224,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,0,24,3,0,28,6,0,14,12,0, + 3,240,0,20,20,60,21,0,0,254,3,240,56,0,192,24, + 0,128,28,1,128,12,1,128,14,3,0,14,3,0,6,3, + 0,7,6,0,7,6,0,3,6,0,3,140,0,1,140,0, + 1,204,0,1,216,0,0,216,0,0,248,0,0,240,0,0, + 112,0,0,96,0,27,20,80,27,0,0,254,4,15,224,56, + 4,3,0,24,14,3,0,24,14,3,0,28,15,3,0,28, + 27,2,0,12,27,6,0,12,27,134,0,12,49,134,0,14, + 49,134,0,14,49,196,0,6,96,204,0,6,96,204,0,7, + 96,236,0,7,192,108,0,3,192,120,0,3,192,120,0,3, + 128,56,0,3,128,56,0,3,0,48,0,19,20,60,20,0, + 0,127,31,192,60,7,0,28,6,0,14,6,0,7,12,0, + 7,28,0,3,152,0,1,240,0,1,240,0,0,224,0,0, + 240,0,1,240,0,1,184,0,3,28,0,7,12,0,6,14, + 0,12,7,0,28,3,128,56,3,192,255,15,224,18,20,60, + 19,0,0,240,31,192,56,7,0,28,6,0,12,12,0,14, + 12,0,7,24,0,7,24,0,3,48,0,3,176,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,7,248,0,14, + 20,40,17,1,0,127,252,96,28,64,56,64,120,0,112,0, + 224,0,224,1,192,3,192,3,128,7,0,7,0,14,0,30, + 0,28,0,56,0,56,4,112,4,240,12,255,252,7,30,30, + 10,2,251,254,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 254,13,30,60,15,1,251,192,0,192,0,96,0,96,0,112, + 0,48,0,48,0,24,0,24,0,28,0,12,0,12,0,14, + 0,6,0,6,0,3,0,3,0,3,128,1,128,1,128,0, + 192,0,192,0,192,0,96,0,96,0,112,0,48,0,48,0, + 24,0,24,7,30,30,10,1,251,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,254,12,15,30,16,2,9,2,0,6, + 0,15,0,15,0,27,0,27,128,17,128,49,192,49,192,96, + 192,96,224,96,96,192,112,192,48,128,32,13,1,2,15,1, + 253,255,248,7,7,7,10,0,16,96,240,56,24,12,4,2, + 13,15,30,15,1,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,15,24,48,16,0,0,48,0,240,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,240,49,248, + 54,28,60,12,56,14,48,6,48,6,48,6,48,6,48,6, + 48,4,48,12,48,8,28,16,7,224,12,15,30,14,1,0, + 7,224,24,96,32,32,96,0,64,0,192,0,192,0,192,0, + 192,0,192,0,192,0,96,0,112,32,56,112,31,128,15,24, + 48,17,1,0,0,24,0,120,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,7,248,24,56,32,24,96,24,64,24, + 192,24,192,24,192,24,192,24,192,24,192,24,96,24,112,56, + 56,222,15,24,13,15,30,15,1,0,7,192,24,96,32,48, + 96,24,64,24,192,24,255,240,192,0,192,0,192,0,224,0, + 96,0,112,8,56,48,15,192,11,24,48,10,1,0,3,224, + 4,192,24,0,16,0,48,0,48,0,48,0,48,0,48,0, + 255,0,50,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,15,23, + 46,16,1,248,7,134,24,252,32,96,96,48,96,48,96,48, + 96,48,112,96,56,64,31,128,8,0,16,0,60,0,63,224, + 15,248,63,252,112,124,224,12,192,12,192,8,96,16,112,32, + 31,192,16,24,48,18,1,0,16,0,240,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,112,49,136,54,12, + 56,12,56,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,21,21,9,1,0,48,112, + 112,96,0,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,29,58,8,252,248,1,128,3,128,3,128,3, + 0,0,0,0,0,1,128,7,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,0,3,0,2,0,124, + 0,248,0,15,24,48,16,1,0,16,0,240,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,252,48,112,48, + 224,49,128,51,0,54,0,62,0,54,0,55,0,51,128,49, + 192,48,224,48,112,48,120,252,62,6,24,24,9,1,0,16, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,24,15,45,26,1,0,240,240,120, + 51,25,140,52,26,12,56,28,12,56,28,12,48,24,12,48, + 24,12,48,24,12,48,24,12,48,24,12,48,24,12,48,24, + 12,48,24,12,48,24,12,252,126,63,16,15,30,18,1,0, + 112,112,177,136,54,12,56,12,56,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,252,63,14,15, + 30,16,1,0,7,192,24,112,32,56,96,24,64,28,192,12, + 192,12,192,12,192,12,192,12,224,8,96,24,112,16,56,32, + 15,192,15,23,46,17,1,248,112,240,179,24,52,28,56,12, + 48,14,48,6,48,6,48,6,48,6,48,6,48,4,48,12, + 48,8,60,16,55,224,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,254,0,14,23,46,16,1,248,7,144,24,112, + 32,48,96,48,64,48,192,48,192,48,192,48,192,48,192,48, + 192,48,96,48,96,112,48,176,31,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,1,252,11,15,30,13,1,0, + 49,224,243,224,52,64,56,64,56,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,9,15, + 30,12,2,0,63,0,67,0,193,0,192,0,224,0,248,0, + 126,0,63,0,15,128,3,128,1,128,129,128,129,0,195,0, + 252,0,10,20,40,11,1,0,16,0,48,0,48,0,48,0, + 48,0,255,192,49,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,128,31,64, + 15,15,30,17,1,0,48,24,240,120,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,56, + 24,222,15,24,15,15,30,16,0,0,252,62,56,12,56,8, + 24,24,28,24,12,16,12,48,14,48,6,32,7,96,7,64, + 3,64,3,192,1,128,1,0,22,15,45,23,0,0,252,16, + 124,48,24,24,56,56,16,24,56,48,24,60,48,28,108,48, + 12,110,32,12,78,96,12,198,96,14,199,64,6,131,64,7, + 131,192,7,131,192,3,1,128,2,1,0,16,15,30,16,0, + 0,254,63,60,28,28,16,14,48,6,96,7,192,3,192,1, + 192,3,192,6,224,12,112,12,56,24,24,56,28,252,63,16, + 23,46,16,255,248,126,31,28,6,28,4,12,12,14,12,14, + 8,6,24,7,24,3,16,3,48,3,176,1,160,1,224,1, + 224,0,192,0,192,0,128,1,128,1,128,3,0,126,0,124, + 0,248,0,12,15,30,14,1,0,127,240,64,96,64,224,1, + 192,1,128,3,128,7,0,6,0,14,0,28,0,28,0,56, + 16,112,16,112,48,255,240,8,30,30,11,2,251,3,6,12, + 8,24,24,24,24,28,12,12,12,12,24,48,248,28,12,12, + 12,12,28,24,24,24,24,24,12,6,3,2,32,32,7,3, + 250,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,30,30,11,1,251,192,96,48,24,24,24,24,24,56, + 48,48,48,48,56,31,12,24,48,48,48,48,56,24,24,24, + 24,16,48,96,192,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=33 h=41 x= 4 y=23 dx=34 dy= 0 ascent=34 len=132 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x=-4 y=-11 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =34 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25[13042] U8G_SECTION(".progmem.u8g_font_gdr25") = { + 0,59,57,236,242,25,6,209,16,163,32,255,247,34,245,31, + 247,0,0,0,9,0,0,5,30,30,11,3,255,48,112,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 96,96,96,0,0,0,112,248,248,248,112,11,13,26,17,3, + 16,112,224,241,224,241,224,241,224,241,224,112,224,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,17,23,69,19,2, + 2,0,194,0,1,134,0,1,134,0,1,142,0,3,140,0, + 3,12,0,3,12,0,63,255,128,63,255,128,6,24,0,6, + 56,0,14,48,0,12,48,0,12,48,0,255,254,0,255,254, + 0,24,96,0,24,224,0,48,192,0,48,192,0,48,192,0, + 113,192,0,97,128,0,16,30,60,19,1,253,1,128,1,128, + 1,128,3,224,15,252,57,254,49,156,113,136,113,128,113,128, + 121,128,61,128,63,128,31,224,7,248,1,252,1,190,1,143, + 1,143,1,135,193,135,193,135,225,142,241,142,255,252,63,240, + 15,192,1,128,1,128,1,128,25,25,100,27,1,255,15,128, + 6,0,63,192,28,0,113,224,56,0,112,224,56,0,224,112, + 112,0,224,112,224,0,224,112,224,0,224,113,192,0,224,115, + 128,0,112,231,0,0,120,231,0,0,63,206,60,0,31,28, + 254,0,0,29,207,0,0,57,199,0,0,115,131,128,0,227, + 131,128,0,227,131,128,1,195,131,128,3,131,131,128,3,131, + 131,128,7,1,199,0,14,1,199,0,28,0,254,0,24,0, + 120,0,24,28,84,27,2,0,0,248,0,1,252,0,3,30, + 0,7,14,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,7,112,0,7,192,0,7,131,255,15, + 135,255,29,193,242,57,224,240,112,240,112,112,112,112,224,120, + 112,224,60,112,224,30,224,224,15,224,224,7,192,240,3,192, + 120,3,240,60,30,248,31,252,127,7,224,56,4,13,13,10, + 3,16,112,240,240,240,240,112,96,96,96,96,96,96,96,9, + 37,74,13,3,250,0,128,3,128,7,0,14,0,12,0,28, + 0,24,0,56,0,56,0,112,0,112,0,112,0,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,112,0,112,0,112,0,112,0,56, + 0,56,0,28,0,28,0,14,0,7,0,3,128,0,128,9, + 37,74,13,1,250,128,0,224,0,112,0,56,0,28,0,28, + 0,14,0,14,0,14,0,7,0,7,0,7,0,7,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,7,0,7,0,7,0,7,0,14,0,14, + 0,12,0,28,0,24,0,56,0,112,0,224,0,128,0,16, + 16,32,18,1,14,1,128,1,128,1,128,97,132,113,142,121, + 159,31,248,7,192,3,192,31,248,121,158,241,142,33,134,1, + 128,1,128,1,128,15,14,28,16,1,4,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,10,10,9,2,250,60,252,60, + 28,28,24,24,48,32,64,11,2,4,13,1,9,127,224,255, + 224,5,5,5,9,2,255,112,248,248,248,112,17,38,114,19, + 1,249,0,1,128,0,7,0,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,56,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,192,0,1,192,0,1,192,0,3,128, + 0,3,128,0,3,128,0,7,0,0,7,0,0,14,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,28,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,112,0,0,224,0, + 0,192,0,0,17,24,72,19,1,0,3,224,0,15,248,0, + 28,60,0,56,30,0,48,14,0,112,7,0,96,7,0,96, + 7,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,3,0,112,7,0, + 112,7,0,120,6,0,60,14,0,30,28,0,15,248,0,7, + 224,0,14,24,48,19,3,0,1,128,7,128,63,128,255,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,15,224,127,252,14,24,48,19,2,0,3,224, + 15,248,24,120,48,60,112,28,96,28,224,28,0,28,0,24, + 0,56,0,48,0,112,0,224,1,192,1,128,3,128,7,0, + 14,0,28,0,24,4,48,4,112,12,255,252,255,252,15,24, + 48,19,1,0,3,224,15,248,28,120,56,60,112,28,112,28, + 0,28,0,24,0,48,0,96,3,224,3,248,0,60,0,28, + 0,14,0,14,0,14,0,14,0,14,0,28,64,28,240,120, + 63,240,15,192,16,24,48,19,1,0,0,24,0,120,0,120, + 0,248,1,248,1,184,3,56,7,56,6,56,12,56,28,56, + 24,56,48,56,112,56,96,56,255,255,255,254,0,56,0,56, + 0,56,0,56,0,56,0,124,3,255,15,24,48,19,1,0, + 0,4,31,252,31,248,24,0,24,0,24,0,48,0,48,0, + 48,0,63,224,63,248,48,124,64,28,0,30,0,14,0,14, + 0,14,0,14,0,14,0,28,64,28,240,120,63,240,15,192, + 15,24,48,19,2,0,0,56,0,240,3,192,7,0,14,0, + 28,0,56,0,112,0,112,0,99,224,239,248,248,60,240,28, + 224,30,224,14,224,14,224,14,224,14,112,14,112,12,56,28, + 60,56,31,240,7,192,15,23,46,19,2,0,127,254,255,254, + 192,12,192,12,128,28,0,24,0,56,0,48,0,112,0,96, + 0,96,0,224,0,192,1,192,1,128,3,128,3,0,7,0, + 7,0,14,0,14,0,28,0,56,0,15,24,48,19,2,0, + 15,192,63,240,120,120,112,60,240,28,224,28,224,28,240,24, + 120,48,62,96,31,192,7,240,24,120,48,60,112,30,96,14, + 224,14,224,14,224,14,224,12,112,28,124,56,63,240,15,192, + 15,25,50,19,2,255,7,192,15,240,56,120,48,60,112,28, + 96,28,224,14,224,14,224,14,224,14,240,14,112,30,120,62, + 63,238,15,140,0,28,0,28,0,24,0,56,0,112,0,224, + 1,192,7,128,30,0,48,0,5,19,19,9,2,255,120,248, + 248,248,96,0,0,0,0,0,0,0,0,0,112,248,248,248, + 112,6,24,24,9,2,250,120,248,248,248,96,0,0,0,0, + 0,0,0,0,0,60,252,60,28,28,24,24,48,32,64,15, + 13,26,18,1,5,0,2,0,30,0,254,3,240,31,192,126, + 0,240,0,252,0,63,128,7,224,1,252,0,62,0,12,15, + 8,16,18,1,7,127,254,255,254,0,0,0,0,0,0,0, + 0,127,254,255,254,15,13,26,18,1,5,96,0,252,0,63, + 0,15,224,1,252,0,126,0,30,0,126,3,240,31,192,126, + 0,248,0,192,0,14,30,60,17,2,255,7,224,31,240,56, + 120,112,56,224,28,224,28,224,28,192,28,0,28,0,56,0, + 56,0,112,0,240,0,224,1,192,3,128,3,128,7,0,7, + 0,7,0,7,0,7,0,0,0,0,0,0,0,7,0,15, + 128,15,128,15,128,7,0,30,33,132,32,1,249,0,7,248, + 0,0,63,254,0,0,240,31,128,1,192,7,192,3,0,1, + 224,6,0,0,240,12,0,0,112,24,0,0,120,56,3,198, + 56,48,15,252,56,112,28,60,60,112,56,28,28,96,112,28, + 28,224,96,28,28,224,224,28,28,224,224,28,28,224,224,28, + 28,224,224,28,28,224,224,28,28,224,224,28,24,240,240,28, + 56,112,112,28,48,112,120,60,96,120,60,94,224,56,31,143, + 128,60,15,15,0,30,0,0,0,31,0,0,0,15,128,0, + 32,7,192,0,192,1,248,15,128,0,255,254,0,0,31,240, + 0,23,25,75,24,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,19,25,75,22,1,0,31,240,0,255,254,0,28,31, + 0,28,7,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,0,28,6,0,28,28,0,31,254,0,31,255,0,28, + 15,128,28,3,192,28,1,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,1,224,28,1,192,28,7,128,63,255,0, + 255,252,0,19,25,75,21,1,0,0,254,0,3,255,192,7, + 7,192,12,1,128,24,0,0,56,0,0,112,0,0,112,0, + 0,112,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,112,0,0,112, + 0,0,120,0,0,60,0,64,30,1,224,15,135,128,7,254, + 0,1,248,0,21,25,75,24,1,0,31,248,0,255,255,0, + 28,15,128,28,3,192,28,1,224,28,0,240,28,0,112,28, + 0,112,28,0,120,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,28,0,112, + 28,0,112,28,0,224,28,1,224,28,3,192,28,15,128,63, + 254,0,255,248,0,18,25,75,20,1,0,255,255,0,63,255, + 0,28,3,0,28,1,0,28,1,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,31,252,0,31,252,0,28, + 8,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,64,28,0,192,28,1,128, + 63,255,128,255,255,128,17,25,75,19,1,0,255,255,128,63, + 255,128,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,31,252,0,31,248,0, + 28,24,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,62,0,0,255,128,0,21,25,75,23,1,0,0,127,0, + 1,255,192,7,3,224,14,0,192,28,0,0,56,0,0,48, + 0,0,112,0,0,112,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,15,248,224,1,224,224,0,224,224,0,224, + 112,0,224,112,0,224,120,0,224,60,0,224,30,0,224,15, + 129,192,7,255,128,1,252,0,24,25,75,26,1,0,255,129, + 255,62,0,124,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31, + 255,248,31,255,248,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,62,0,124,255,129,255,9,25,50,12,1,0,255, + 128,62,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,62,0,255, + 128,15,32,64,12,252,249,7,254,0,248,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,96,0,96,0,224,0, + 192,49,128,127,0,252,0,22,25,75,23,1,0,255,135,248, + 62,1,192,28,3,128,28,7,0,28,14,0,28,12,0,28, + 24,0,28,56,0,28,112,0,28,224,0,29,192,0,31,128, + 0,31,192,0,29,224,0,28,224,0,28,112,0,28,56,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,28, + 3,224,62,1,252,255,128,240,18,25,75,19,1,0,255,128, + 0,62,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,192,28,0,128, + 30,1,128,63,255,128,255,255,128,30,25,100,32,1,0,254, + 0,1,248,30,0,3,224,31,0,3,224,31,0,3,224,31, + 0,7,224,27,128,6,224,27,128,14,224,25,192,12,224,25, + 192,12,224,24,224,28,224,24,224,24,224,24,224,56,224,24, + 112,48,224,24,112,112,224,24,56,96,224,24,56,96,224,24, + 28,224,224,24,28,192,224,24,31,192,224,24,15,128,224,24, + 15,128,224,24,7,128,224,24,7,0,224,60,7,1,224,255, + 2,7,252,24,25,75,26,1,0,248,1,255,60,0,124,30, + 0,56,30,0,56,31,0,56,31,128,56,29,128,56,29,192, + 56,28,224,56,28,96,56,28,112,56,28,56,56,28,28,56, + 28,28,56,28,14,56,28,7,56,28,7,56,28,3,184,28, + 3,248,28,1,248,28,0,248,28,0,248,28,0,120,62,0, + 56,255,128,24,21,25,75,24,1,0,0,252,0,3,255,0, + 7,7,128,12,3,192,24,1,224,56,0,224,112,0,112,112, + 0,112,96,0,120,224,0,56,224,0,56,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,240,0,48,112,0,112, + 112,0,96,120,0,224,60,0,192,30,1,128,15,7,0,7, + 254,0,1,248,0,18,25,75,21,1,0,31,248,0,255,254, + 0,28,31,0,28,7,128,28,3,192,28,1,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,3,128,28,7,128,28, + 15,0,29,254,0,28,248,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 62,0,0,255,128,0,24,31,93,24,1,250,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,112,56,0,224,60,0,192,30,1,192,15,7, + 128,7,254,0,1,252,0,0,14,0,0,7,0,0,3,130, + 0,1,227,0,0,254,0,0,60,21,25,75,22,1,0,31, + 240,0,255,254,0,28,31,0,28,7,0,28,7,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,7,0,28,6,0, + 28,28,0,31,240,0,28,112,0,28,56,0,28,56,0,28, + 28,0,28,30,0,28,14,0,28,7,0,28,7,128,28,3, + 128,28,3,192,62,1,248,255,129,240,15,25,50,19,2,0, + 7,224,31,248,120,124,112,24,224,0,224,0,224,0,240,0, + 248,0,126,0,63,128,31,224,7,248,1,252,0,124,0,30, + 0,30,0,14,128,14,128,14,192,28,224,28,240,120,255,240, + 31,128,21,25,75,22,0,0,127,255,248,255,255,248,192,112, + 24,192,112,24,128,112,16,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,248,0, + 3,254,0,24,25,75,26,1,0,255,129,255,62,0,124,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,112,14,0,112,14,0,112,15,0,224,7,193,192,3,255, + 128,0,126,0,25,25,100,26,0,0,255,128,127,128,28,0, + 14,0,30,0,12,0,14,0,28,0,14,0,24,0,15,0, + 24,0,7,0,56,0,7,0,48,0,3,128,48,0,3,128, + 112,0,3,192,96,0,1,192,224,0,1,192,224,0,1,224, + 192,0,0,225,192,0,0,225,128,0,0,113,128,0,0,115, + 128,0,0,123,0,0,0,59,0,0,0,63,0,0,0,62, + 0,0,0,30,0,0,0,30,0,0,0,8,0,0,33,25, + 125,34,0,0,255,128,192,127,128,28,0,192,14,0,28,0, + 192,12,0,28,1,224,12,0,14,1,224,28,0,14,1,224, + 28,0,14,3,240,24,0,14,3,112,24,0,7,3,48,24, + 0,7,7,56,56,0,7,6,56,56,0,7,6,24,48,0, + 7,14,28,48,0,3,140,28,48,0,3,140,14,112,0,3, + 156,14,96,0,3,152,14,96,0,1,216,7,96,0,1,248, + 7,96,0,1,240,7,224,0,1,240,3,192,0,1,240,3, + 192,0,0,224,3,192,0,0,224,1,192,0,0,192,1,128, + 0,23,25,75,25,1,0,255,135,252,60,0,240,28,0,224, + 30,1,192,15,1,128,7,3,128,7,135,0,3,198,0,1, + 238,0,0,252,0,0,252,0,0,120,0,0,120,0,0,124, + 0,0,254,0,1,206,0,1,207,0,3,135,128,3,3,128, + 7,3,192,14,1,224,12,0,224,28,0,240,60,0,248,255, + 3,254,23,25,75,24,0,0,248,1,254,60,0,120,30,0, + 96,14,0,224,7,0,192,7,129,192,3,129,128,3,195,128, + 1,195,0,0,231,0,0,238,0,0,126,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,124,0, + 1,255,0,18,25,75,21,1,0,63,255,192,63,255,192,48, + 3,128,32,7,128,96,15,0,96,14,0,0,30,0,0,28, + 0,0,56,0,0,120,0,0,112,0,0,240,0,1,224,0, + 1,192,0,3,192,0,3,128,0,7,0,0,15,0,0,14, + 0,0,30,0,64,60,0,64,56,0,192,120,0,192,127,255, + 192,255,255,192,9,37,74,12,3,250,255,128,255,128,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,128,255,128,17,38,114,19,1,249,192,0,0,224,0,0, + 112,0,0,112,0,0,48,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,14,0,0,14,0,0,6,0, + 0,7,0,0,7,0,0,3,0,0,3,128,0,3,128,0, + 1,192,0,1,192,0,0,192,0,0,224,0,0,224,0,0, + 96,0,0,112,0,0,112,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,12,0,0,14,0,0,14,0, + 0,7,0,0,7,0,0,3,0,0,1,128,9,37,74,13, + 1,250,255,128,255,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,128,255,128,16,19,38,20, + 2,11,0,128,3,128,3,192,3,192,7,224,6,224,14,224, + 12,112,12,112,28,120,24,56,24,56,48,28,48,28,112,28, + 96,14,96,14,224,7,128,6,17,2,6,19,1,251,127,255, + 128,255,255,0,8,9,9,13,1,20,224,240,112,56,56,28, + 14,6,3,16,18,36,18,2,0,3,224,31,240,56,120,112, + 56,240,56,192,56,0,56,0,120,7,248,28,56,112,56,96, + 56,224,56,224,56,224,120,241,185,127,63,60,24,18,30,90, + 20,0,0,12,0,0,124,0,0,188,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,60,0,28,255,0,29,143,0, + 31,7,128,30,3,128,28,3,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,128,28,1,128,28,3, + 128,30,3,0,31,134,0,7,252,0,1,240,0,15,18,36, + 17,2,0,1,248,7,254,28,28,56,12,112,4,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,0,112,4,120, + 6,62,28,31,248,7,224,19,30,90,21,2,0,0,3,0, + 0,63,0,0,15,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7, + 0,3,247,0,15,255,0,28,31,0,56,15,0,48,7,0, + 112,7,0,96,7,0,224,7,0,224,7,0,224,7,0,224, + 7,0,224,7,0,240,7,0,112,15,0,120,31,0,60,55, + 224,31,231,192,7,131,0,14,18,36,18,2,0,3,192,15, + 240,28,120,48,56,112,28,96,28,224,28,255,252,255,248,224, + 0,224,0,224,0,240,0,112,4,120,12,60,56,31,240,7, + 192,15,30,60,12,1,0,0,120,1,254,3,28,6,8,14, + 0,12,0,12,0,28,0,28,0,28,0,28,0,28,0,127, + 240,255,224,28,64,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,62, + 0,255,192,18,27,81,19,1,247,3,224,192,15,255,192,28, + 63,0,56,28,0,112,14,0,112,14,0,112,14,0,112,14, + 0,120,28,0,60,56,0,31,240,0,7,192,0,6,0,0, + 12,0,0,28,0,0,31,224,0,15,254,0,12,63,128,24, + 3,192,112,1,192,224,1,192,224,1,192,224,3,128,240,3, + 128,124,15,0,63,252,0,7,240,0,21,30,90,22,1,0, + 12,0,0,252,0,0,124,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,31,0,28,63,128,28,227,192,29,129,192, + 31,1,192,30,1,192,30,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,62,3,192,255,143,248,9,27,54,11,1,0, + 28,0,60,0,60,0,60,0,24,0,0,0,0,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,11,36,72,10,252,247,0,224,1,224, + 1,224,1,224,0,192,0,0,0,0,0,0,0,0,0,96, + 7,224,1,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,192,0,192,1,192,1,128,35,0, + 254,0,248,0,19,30,90,20,1,0,12,0,0,252,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,31, + 224,28,7,0,28,14,0,28,28,0,28,48,0,28,224,0, + 29,192,0,31,128,0,29,192,0,29,224,0,28,240,0,28, + 120,0,28,56,0,28,28,0,28,30,0,28,15,0,60,7, + 128,255,3,224,9,30,60,11,1,0,12,0,252,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,31,18,72,32,1,0,12,30,3,192, + 252,127,15,224,60,199,152,240,29,131,176,112,31,3,224,112, + 30,3,192,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,60,7,192,240, + 255,159,243,254,21,18,54,22,1,0,12,15,0,252,63,128, + 60,99,192,29,129,192,29,1,192,30,1,192,30,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,62,3,192,255,143,248, + 16,18,36,20,2,0,3,224,15,248,28,60,48,30,112,14, + 96,15,224,7,224,7,224,7,224,7,224,7,224,7,240,6, + 112,14,120,12,62,56,31,240,7,192,18,27,81,21,1,247, + 12,28,0,252,127,0,60,143,128,29,7,128,30,3,128,30, + 3,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,128,28,1,128,28,3,128,30,3,0,31,6,0, + 29,252,0,28,120,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,62,0,0,255,128, + 0,19,27,81,21,2,247,1,241,128,7,251,0,28,31,0, + 56,15,0,48,7,0,112,7,0,96,7,0,224,7,0,224, + 7,0,224,7,0,224,7,0,224,7,0,240,7,0,112,15, + 0,120,31,0,60,55,0,31,231,0,7,135,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,63,224,14,18,36,16,1,0,12,60, + 252,252,61,140,29,12,31,4,30,0,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,0, + 255,128,11,18,36,15,2,0,31,0,127,128,115,192,225,128, + 224,128,240,0,248,0,126,0,31,0,15,192,3,224,1,224, + 128,224,128,224,192,224,225,192,255,128,62,0,13,25,50,14, + 0,0,4,0,12,0,28,0,28,0,28,0,28,0,28,0, + 127,248,255,240,28,32,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,56, + 15,240,7,128,21,18,54,21,0,0,12,0,192,252,15,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,3,192,28,7,192,30,29,200,15,241,240,7,192,192, + 19,18,54,20,0,0,255,7,224,60,1,192,28,1,128,28, + 3,128,14,3,0,14,3,0,14,6,0,7,6,0,7,6, + 0,3,140,0,3,140,0,3,156,0,1,216,0,1,216,0, + 0,240,0,0,240,0,0,240,0,0,64,0,28,18,72,28, + 0,0,255,3,7,240,60,7,0,192,28,7,0,192,28,7, + 129,128,28,15,129,128,14,15,129,128,14,13,195,128,14,25, + 195,0,6,25,195,0,7,24,227,0,7,48,230,0,3,48, + 118,0,3,176,118,0,3,224,124,0,1,224,60,0,1,224, + 60,0,1,192,60,0,1,128,16,0,20,18,54,20,0,0, + 127,143,224,30,3,128,14,3,0,7,6,0,7,140,0,3, + 156,0,1,216,0,0,240,0,0,240,0,0,240,0,1,184, + 0,1,156,0,3,30,0,6,14,0,14,7,0,12,3,128, + 60,3,192,255,15,240,20,27,81,20,255,247,127,131,240,30, + 0,224,14,0,192,14,0,192,7,1,128,7,1,128,7,3, + 0,3,131,0,3,131,0,1,198,0,1,198,0,1,198,0, + 0,236,0,0,236,0,0,120,0,0,120,0,0,120,0,0, + 48,0,0,48,0,0,96,0,0,96,0,0,224,0,1,192, + 0,67,128,0,127,0,0,254,0,0,124,0,0,15,18,36, + 18,1,0,63,254,63,254,96,28,96,56,64,56,0,112,0, + 224,1,192,1,192,3,128,7,0,7,0,14,0,28,2,56, + 2,56,6,127,254,255,254,11,37,74,14,2,250,0,64,1, + 224,3,128,7,0,6,0,14,0,14,0,14,0,14,0,14, + 0,15,0,7,0,7,0,7,0,7,0,7,0,14,0,28, + 0,124,0,254,0,15,0,7,0,7,0,7,0,7,0,7, + 0,15,0,14,0,14,0,14,0,14,0,14,0,14,0,7, + 0,3,0,1,192,0,64,3,41,41,9,3,248,96,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,192,11,37,74,14,1,250,64,0,112,0, + 56,0,28,0,12,0,14,0,14,0,14,0,14,0,14,0, + 30,0,28,0,28,0,28,0,28,0,28,0,14,0,15,192, + 3,224,7,0,14,0,12,0,28,0,28,0,28,0,28,0, + 30,0,14,0,14,0,14,0,14,0,14,0,12,0,28,0, + 56,0,112,0,192,0,18,6,18,20,1,9,15,0,192,31, + 192,128,63,225,0,99,255,0,192,254,0,128,56,0,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,0,5,29,29,11,3,245,112,248,248,248,112, + 0,0,96,96,96,96,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,240,240,240,192,15,25,50,19,2,255,1,128, + 1,128,1,128,1,240,7,252,31,254,57,140,113,132,113,128, + 97,128,225,128,225,128,225,128,225,128,225,128,241,128,113,128, + 121,134,61,140,63,248,31,240,3,192,1,128,1,128,1,128, + 17,25,75,19,1,255,0,252,0,3,255,0,7,15,0,14, + 7,0,12,6,0,12,2,0,28,2,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,127,224,0,255,224,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,24, + 0,128,24,1,0,24,3,0,63,223,0,127,255,0,192,255, + 0,13,13,26,19,3,5,192,24,239,184,127,240,56,224,96, + 112,96,48,96,48,96,48,120,240,63,224,111,176,192,24,128, + 8,21,24,72,19,255,0,120,7,248,252,1,248,62,1,224, + 31,3,128,15,3,128,7,135,0,7,135,0,3,206,0,1, + 206,0,1,252,0,0,248,0,0,248,0,0,112,0,0,112, + 0,15,255,192,31,255,128,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,248,0,3,254,0,3, + 41,41,9,3,248,96,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,128,0,0,0,64,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,192,15,28, + 56,19,2,0,7,224,15,248,28,120,56,24,56,8,56,0, + 60,0,31,0,31,128,63,224,99,248,224,252,224,124,224,30, + 240,30,120,14,62,14,31,14,15,220,3,248,0,248,0,60, + 32,28,32,28,48,28,60,56,63,240,7,192,12,5,10,16, + 2,22,96,48,224,112,224,112,224,112,192,96,25,25,100,29, + 2,0,0,127,0,0,3,255,224,0,7,128,240,0,14,0, + 56,0,28,31,28,0,56,127,206,0,112,225,199,0,97,192, + 131,0,99,128,3,0,195,0,1,128,199,0,1,128,199,0, + 1,128,199,0,1,128,199,0,1,128,199,0,1,128,199,128, + 1,128,99,128,3,0,99,192,67,0,113,241,135,0,56,255, + 14,0,28,60,28,0,14,0,56,0,7,128,240,0,3,255, + 224,0,0,127,0,0,8,14,14,10,1,11,28,60,70,198, + 6,30,102,198,198,206,119,0,255,255,15,18,36,19,2,0, + 2,6,6,4,12,12,12,24,24,56,56,112,112,224,241,224, + 225,192,225,192,241,224,112,240,56,112,24,56,12,24,12,12, + 6,4,2,6,17,8,24,19,1,4,255,255,128,255,255,128, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,0,11,2,4,13,1,9,127,224,255,224,13,14,28,14, + 1,14,15,128,63,224,112,96,127,48,200,152,136,136,143,8, + 138,8,137,8,201,152,92,240,112,112,63,224,15,128,13,2, + 4,20,3,23,127,248,255,248,8,9,9,14,3,15,28,62, + 103,231,231,231,230,124,56,15,18,36,16,1,3,3,128,3, + 128,3,128,3,128,3,128,3,128,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,0,0,0,0,0,127,252,255, + 252,11,15,30,14,1,12,15,128,31,192,49,224,96,224,64, + 224,0,192,1,192,1,128,3,0,6,0,12,0,24,32,48, + 32,127,224,255,224,11,16,32,13,1,11,31,0,63,128,99, + 192,225,192,1,192,1,128,7,0,31,128,1,192,0,224,0, + 224,0,224,0,224,193,192,127,128,30,0,8,9,9,13,4, + 20,7,15,30,28,56,48,112,96,192,20,27,81,21,1,247, + 12,1,128,252,7,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,30,7,128,31,31,128,31,251,144, + 27,243,224,25,225,128,24,0,0,24,0,0,24,0,0,28, + 0,0,28,0,0,28,0,0,30,0,0,30,0,0,24,0, + 0,20,30,90,22,1,251,3,255,240,28,63,192,48,59,128, + 112,59,128,96,59,128,224,59,128,224,59,128,224,59,128,224, + 59,128,240,59,128,112,59,128,120,59,128,62,59,128,31,251, + 128,7,251,128,0,59,128,0,59,128,0,59,128,0,59,128, + 0,59,128,0,59,128,0,59,128,0,59,128,0,59,128,0, + 59,128,0,59,128,0,59,128,0,59,128,0,127,192,1,255, + 240,3,5,5,6,1,11,96,224,224,224,192,7,9,9,9, + 1,247,24,16,56,60,62,14,12,56,224,10,15,30,13,2, + 12,6,0,62,0,254,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,255,192,9, + 14,28,11,1,11,30,0,63,0,103,0,67,128,193,128,193, + 128,193,128,193,128,225,0,115,0,126,0,60,0,255,128,255, + 128,15,18,36,19,3,0,129,0,193,128,96,192,112,96,48, + 112,56,48,28,56,30,28,15,30,15,30,30,28,28,56,56, + 56,48,112,112,224,96,192,193,128,129,0,19,24,72,23,2, + 0,12,0,192,252,1,224,28,1,128,28,3,128,28,3,0, + 28,6,0,28,14,0,28,12,0,28,24,0,28,56,0,28, + 48,0,255,224,0,0,224,0,0,192,192,1,193,192,1,130, + 192,3,2,192,7,4,192,6,8,192,12,16,192,28,31,224, + 24,63,224,48,0,192,112,3,224,20,24,72,24,2,0,12, + 0,96,252,0,192,28,0,192,28,1,128,28,3,0,28,3, + 0,28,6,0,28,14,0,28,12,0,28,24,0,28,56,0, + 255,176,0,0,97,224,0,99,240,0,196,112,1,204,112,1, + 128,96,3,0,224,7,0,192,6,1,128,12,3,32,28,6, + 16,24,15,240,48,31,240,20,25,75,23,1,0,30,0,0, + 63,0,48,103,128,96,195,128,224,3,0,192,6,1,128,31, + 129,128,3,195,0,0,231,0,0,230,0,97,204,0,63,220, + 0,15,24,0,0,48,0,0,48,96,0,96,224,0,225,96, + 0,195,96,1,130,96,3,132,96,3,12,112,6,31,240,14, + 0,96,12,0,96,24,1,240,14,29,58,18,2,245,3,128, + 7,192,7,192,7,192,3,128,0,0,0,0,3,128,3,128, + 3,128,3,128,3,128,7,0,7,0,14,0,28,0,60,0, + 56,0,112,0,112,0,224,0,224,12,224,28,224,28,224,28, + 240,56,120,112,63,224,31,128,23,34,102,24,0,0,3,0, + 0,7,128,0,7,224,0,1,240,0,0,120,0,0,60,0, + 0,14,0,0,2,0,0,0,0,0,8,0,0,56,0,0, + 60,0,0,60,0,0,108,0,0,110,0,0,110,0,0,198, + 0,0,199,0,0,199,0,1,131,0,1,131,128,1,131,128, + 3,1,128,3,255,192,3,255,192,6,0,224,6,0,224,6, + 0,224,12,0,112,12,0,112,12,0,112,24,0,56,28,0, + 120,255,1,254,23,34,102,24,0,0,0,1,128,0,3,192, + 0,7,192,0,15,0,0,30,0,0,56,0,0,96,0,0, + 192,0,0,0,0,0,8,0,0,56,0,0,60,0,0,60, + 0,0,108,0,0,110,0,0,110,0,0,198,0,0,199,0, + 0,199,0,1,131,0,1,131,128,1,131,128,3,1,128,3, + 255,192,3,255,192,6,0,224,6,0,224,6,0,224,12,0, + 112,12,0,112,12,0,112,24,0,56,28,0,120,255,1,254, + 23,33,99,24,0,0,0,56,0,0,124,0,0,254,0,1, + 231,0,1,131,128,3,1,192,6,0,128,0,0,0,0,8, + 0,0,56,0,0,60,0,0,60,0,0,108,0,0,110,0, + 0,110,0,0,198,0,0,199,0,0,199,0,1,131,0,1, + 131,128,1,131,128,3,1,128,3,255,192,3,255,192,6,0, + 224,6,0,224,6,0,224,12,0,112,12,0,112,12,0,112, + 24,0,56,28,0,120,255,1,254,23,32,96,24,0,0,0, + 224,64,1,248,192,3,253,128,6,31,0,4,6,0,0,0, + 0,0,0,0,0,8,0,0,56,0,0,60,0,0,60,0, + 0,108,0,0,110,0,0,110,0,0,198,0,0,199,0,0, + 199,0,1,131,0,1,131,128,1,131,128,3,1,128,3,255, + 192,3,255,192,6,0,224,6,0,224,6,0,224,12,0,112, + 12,0,112,12,0,112,24,0,56,28,0,120,255,1,254,23, + 31,93,24,0,0,3,129,192,3,129,192,3,129,192,3,1, + 128,3,1,128,0,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,23,34,102,24,0,0,0,62,0,0,126,0,0,199, + 0,0,195,0,0,195,0,0,230,0,0,252,0,0,48,0, + 0,0,0,0,8,0,0,56,0,0,60,0,0,60,0,0, + 108,0,0,110,0,0,110,0,0,198,0,0,199,0,0,199, + 0,1,131,0,1,131,128,1,131,128,3,1,128,3,255,192, + 3,255,192,6,0,224,6,0,224,6,0,224,12,0,112,12, + 0,112,12,0,112,24,0,56,28,0,120,255,1,254,30,25, + 100,31,0,0,1,255,255,240,0,63,255,240,0,25,192,48, + 0,25,192,16,0,57,192,16,0,49,192,0,0,113,192,0, + 0,97,192,0,0,97,192,0,0,225,192,0,0,255,255,192, + 1,255,255,192,1,193,192,128,1,129,192,0,3,129,192,0, + 3,1,192,0,7,1,192,0,7,1,192,0,6,1,192,0, + 14,1,192,0,12,1,192,4,28,1,192,12,28,1,192,24, + 60,3,255,248,255,15,255,248,18,34,102,21,1,247,0,126, + 0,3,255,192,7,7,192,14,1,128,28,0,0,56,0,0, + 48,0,0,112,0,0,112,0,0,96,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,240,0,0,112,0,0,120,0,0,56,0,64,60,0,192, + 30,3,128,15,254,0,7,252,0,1,240,0,0,64,0,0, + 96,0,0,240,0,0,120,0,0,56,0,0,48,0,0,224, + 0,3,128,0,18,34,102,20,1,0,12,0,0,62,0,0, + 63,0,0,15,128,0,3,192,0,0,224,0,0,112,0,0, + 16,0,0,0,0,255,255,0,63,255,0,28,3,0,28,1, + 0,28,1,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,31,252,0,31,252,0,28,8,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,64,28,0,192,28,1,128,63,255,128,255,255,128, + 18,34,102,20,1,0,0,12,0,0,30,0,0,62,0,0, + 120,0,0,240,0,1,192,0,3,0,0,6,0,0,0,0, + 0,255,255,0,63,255,0,28,3,0,28,1,0,28,1,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,31, + 252,0,31,252,0,28,8,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,64, + 28,0,192,28,1,128,63,255,128,255,255,128,18,33,99,20, + 1,0,1,192,0,3,224,0,7,240,0,7,56,0,12,28, + 0,24,14,0,16,2,0,0,0,0,255,255,0,63,255,0, + 28,3,0,28,1,0,28,1,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,31,252,0,31,252,0,28,8, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,64,28,0,192,28,1,128,63, + 255,128,255,255,128,18,31,93,20,1,0,28,14,0,28,14, + 0,28,14,0,28,14,0,24,12,0,0,0,0,255,255,0, + 63,255,0,28,3,0,28,1,0,28,1,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,31,252,0,31,252, + 0,28,8,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,64,28,0,192,28, + 1,128,63,255,128,255,255,128,11,34,68,12,255,0,96,0, + 248,0,252,0,62,0,15,0,3,128,1,192,0,64,0,0, + 63,224,15,128,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,15,128, + 63,224,11,34,68,12,1,0,0,192,1,224,3,224,7,128, + 15,0,28,0,48,0,96,0,0,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,12,33,66,12, + 0,0,14,0,31,0,63,128,57,192,96,224,192,112,128,32, + 0,0,127,192,31,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,127,192,12,31,62,12,0,0,224,112,224,112,224,112, + 224,112,192,96,0,0,127,192,31,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,31,0,127,192,21,25,75,24,1,0,31,248, + 0,255,255,0,28,15,128,28,3,192,28,1,224,28,0,240, + 28,0,112,28,0,112,28,0,120,28,0,56,28,0,56,255, + 240,56,255,224,56,28,0,56,28,0,56,28,0,56,28,0, + 112,28,0,112,28,0,112,28,0,224,28,1,224,28,3,192, + 28,15,128,63,254,0,255,248,0,24,32,96,26,1,0,0, + 240,64,1,248,96,3,252,192,2,31,128,6,6,0,0,0, + 0,0,0,0,248,1,255,60,0,124,30,0,56,30,0,56, + 31,0,56,31,128,56,29,128,56,29,192,56,28,224,56,28, + 96,56,28,112,56,28,56,56,28,28,56,28,28,56,28,14, + 56,28,7,56,28,7,56,28,3,184,28,3,248,28,1,248, + 28,0,248,28,0,248,28,0,120,62,0,56,255,128,24,21, + 34,102,24,1,0,3,0,0,7,128,0,15,192,0,3,224, + 0,0,240,0,0,56,0,0,28,0,0,4,0,0,0,0, + 0,252,0,3,255,0,7,7,128,12,3,192,24,1,224,56, + 0,224,112,0,112,112,0,112,96,0,120,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56, + 240,0,48,112,0,112,112,0,96,120,0,224,60,0,192,30, + 1,128,15,7,0,7,254,0,1,248,0,21,34,102,24,1, + 0,0,3,0,0,7,128,0,15,192,0,31,0,0,60,0, + 0,112,0,0,224,0,0,128,0,0,0,0,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,96,120,0,224,60,0,192,30,1,128,15,7, + 0,7,254,0,1,248,0,21,33,99,24,1,0,0,120,0, + 0,252,0,0,252,0,1,206,0,3,135,0,6,1,128,4, + 0,128,0,0,0,0,252,0,3,255,0,7,7,128,12,3, + 192,24,1,224,56,0,224,112,0,112,112,0,112,96,0,120, + 224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224, + 0,56,224,0,56,240,0,48,112,0,112,112,0,96,120,0, + 224,60,0,192,30,1,128,15,7,0,7,254,0,1,248,0, + 21,32,96,24,1,0,1,224,128,3,240,192,7,249,128,6, + 63,0,12,12,0,0,0,0,0,0,0,0,252,0,3,255, + 0,7,7,128,12,3,192,24,1,224,56,0,224,112,0,112, + 112,0,112,96,0,120,224,0,56,224,0,56,224,0,56,224, + 0,56,224,0,56,224,0,56,224,0,56,240,0,48,112,0, + 112,112,0,96,120,0,224,60,0,192,30,1,128,15,7,0, + 7,254,0,1,248,0,21,31,93,24,1,0,3,1,128,7, + 3,128,7,3,128,7,3,128,2,1,0,0,0,0,0,252, + 0,3,255,0,7,7,128,12,3,192,24,1,224,56,0,224, + 112,0,112,112,0,112,96,0,120,224,0,56,224,0,56,224, + 0,56,224,0,56,224,0,56,224,0,56,224,0,56,240,0, + 48,112,0,112,112,0,96,120,0,224,60,0,192,30,1,128, + 15,7,0,7,254,0,1,248,0,13,12,24,16,2,5,192, + 48,224,120,112,224,57,192,31,128,15,0,15,0,31,128,57, + 192,112,224,224,112,192,56,21,26,78,24,1,255,0,252,56, + 3,255,112,7,7,224,12,3,224,24,1,224,56,3,240,48, + 7,240,112,7,112,96,14,120,224,28,56,224,28,56,224,56, + 56,224,112,56,224,112,56,224,224,56,225,192,56,243,128,48, + 115,128,112,119,0,96,126,0,224,60,0,192,62,1,128,63, + 7,0,119,254,0,225,248,0,128,0,0,24,34,102,26,1, + 0,1,128,0,3,192,0,3,224,0,0,240,0,0,120,0, + 0,28,0,0,6,0,0,3,0,0,0,0,255,129,255,62, + 0,124,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,112,14,0,112,14,0,112,15,0,224,7,193, + 192,3,255,128,0,126,0,24,34,102,26,1,0,0,1,128, + 0,3,224,0,7,224,0,15,128,0,30,0,0,56,0,0, + 112,0,0,64,0,0,0,0,255,129,255,62,0,124,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 112,14,0,112,14,0,112,15,0,224,7,193,192,3,255,128, + 0,126,0,24,33,99,26,1,0,0,28,0,0,62,0,0, + 127,0,0,231,0,1,193,128,3,128,192,2,0,64,0,0, + 0,255,129,255,62,0,124,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,112,14,0,112,14,0,112, + 15,0,224,7,193,192,3,255,128,0,126,0,24,31,93,26, + 1,0,1,128,192,3,129,192,3,129,192,3,129,192,1,0, + 128,0,0,0,255,129,255,62,0,124,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,14,0,112, + 14,0,112,15,0,224,7,193,192,3,255,128,0,126,0,23, + 34,102,24,0,0,0,1,128,0,3,192,0,7,192,0,15, + 0,0,30,0,0,56,0,0,96,0,0,192,0,0,0,0, + 248,1,254,60,0,120,30,0,96,14,0,224,7,0,192,7, + 129,192,3,129,128,3,195,128,1,195,0,0,231,0,0,238, + 0,0,126,0,0,124,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,124,0,1,255,0,18,25,75,21,1, + 0,255,128,0,60,0,0,28,0,0,28,0,0,31,248,0, + 31,254,0,28,31,0,28,7,128,28,3,128,28,3,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,3, + 128,28,7,128,28,15,0,29,254,0,28,248,0,28,0,0, + 28,0,0,28,0,0,62,0,0,255,128,0,20,30,90,23, + 1,0,0,124,0,1,255,0,3,15,128,6,3,128,14,3, + 192,12,1,192,12,1,192,28,1,192,28,1,192,28,3,128, + 28,7,128,28,31,0,28,120,0,28,240,0,28,224,0,28, + 224,0,28,240,0,28,124,0,28,63,0,28,31,192,28,7, + 224,28,1,224,28,0,240,28,0,112,28,128,112,28,128,112, + 28,192,96,28,224,224,60,255,192,252,63,0,16,29,58,18, + 2,0,56,0,60,0,28,0,14,0,14,0,7,0,3,128, + 1,128,0,192,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,29,58,18, + 2,0,0,56,0,120,0,112,0,224,0,192,1,192,3,128, + 3,0,6,0,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,29,58,18, + 2,0,3,128,7,128,7,192,15,224,30,224,28,112,56,56, + 48,24,96,12,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,27,54,18, + 2,0,14,4,31,12,63,152,99,240,64,224,0,0,0,0, + 0,0,0,0,3,224,31,240,56,120,112,56,240,56,192,56, + 0,56,0,120,7,248,28,56,112,56,96,56,224,56,224,56, + 224,120,241,185,127,63,60,24,16,27,54,18,2,0,48,24, + 48,24,112,56,112,56,48,24,0,0,0,0,0,0,0,0, + 3,224,31,240,56,120,112,56,240,56,192,56,0,56,0,120, + 7,248,28,56,112,56,96,56,224,56,224,56,224,120,241,185, + 127,63,60,24,16,28,56,18,2,0,3,192,7,224,12,96, + 12,96,24,96,12,96,15,192,7,128,0,0,0,0,3,224, + 31,240,56,120,112,56,240,56,192,56,0,56,0,120,7,248, + 28,56,112,56,96,56,224,56,224,56,224,120,241,185,127,63, + 60,24,24,18,54,28,2,0,3,225,240,15,243,252,56,119, + 30,112,60,14,224,60,7,240,56,7,192,56,7,1,255,255, + 15,255,254,30,56,0,120,56,0,112,56,0,224,56,0,224, + 60,2,224,92,3,241,159,14,127,15,248,60,3,224,15,27, + 54,17,2,247,1,248,7,254,28,28,56,12,48,4,112,0, + 96,0,224,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,8,120,24,63,240,31,224,15,128,2,0,2,0,3,128, + 7,192,1,192,1,128,7,0,28,0,14,29,58,18,2,0, + 28,0,60,0,30,0,14,0,7,0,3,128,1,128,0,192, + 0,64,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,29,58,18,2,0, + 0,56,0,60,0,120,0,112,0,224,0,192,1,128,1,0, + 3,0,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,29,58,18,2,0, + 1,128,3,192,7,224,7,224,14,112,28,56,24,24,48,12, + 32,4,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,27,54,18,2,0, + 24,12,56,28,56,28,56,28,48,24,0,0,0,0,0,0, + 0,0,3,192,15,240,28,120,48,56,112,28,96,28,224,28, + 255,252,255,248,224,0,224,0,224,0,240,0,112,4,120,12, + 60,56,31,240,7,192,10,29,58,11,0,0,224,0,240,0, + 120,0,56,0,28,0,12,0,14,0,6,0,3,0,0,0, + 0,0,6,0,126,0,30,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,30,0,127,192,10,29,58,11,1,0,1,192,3,192, + 3,128,7,128,7,0,14,0,12,0,24,0,16,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,13,29,58,11,255,0,7,0,7,128, + 15,128,31,192,29,192,56,224,112,112,96,48,192,24,0,0, + 0,0,3,0,63,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,15,0,63,224,12,27,54,11,0,0,192,96,224,112, + 224,112,192,96,192,96,0,0,0,0,0,0,0,0,6,0, + 126,0,30,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,30,0, + 127,192,16,28,56,20,2,0,6,0,63,6,7,159,1,248, + 3,224,15,112,28,56,0,28,0,28,0,14,3,206,15,254, + 28,127,48,31,112,15,96,15,224,7,224,7,224,7,224,7, + 224,6,224,6,240,14,112,12,120,28,60,56,31,240,7,192, + 21,27,81,22,1,0,1,192,128,7,225,0,7,243,0,12, + 126,0,8,28,0,0,0,0,0,0,0,0,0,0,0,0, + 0,12,15,0,252,63,128,60,99,192,29,129,192,29,1,192, + 30,1,192,30,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,62,3,192,255,143,248,16,29,58,20,2,0,28,0,30, + 0,14,0,7,0,3,128,3,128,1,192,0,192,0,96,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,29,58,20,2,0,0,28,0, + 60,0,56,0,112,0,112,0,224,0,192,1,128,3,0,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,29,58,20,2,0,1,192,3, + 192,3,224,7,240,7,112,14,56,28,28,24,12,48,6,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,27,54,20,2,0,7,2,15, + 134,31,204,49,248,32,112,0,0,0,0,0,0,0,0,3, + 224,15,248,28,60,48,30,112,14,96,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,6,112,14,120,12,62,56,31, + 240,7,192,16,27,54,20,2,0,24,12,24,12,28,14,24, + 12,24,12,0,0,0,0,0,0,0,0,3,224,15,248,28, + 60,48,30,112,14,96,15,224,7,224,7,224,7,224,7,224, + 7,224,7,240,6,112,14,120,12,62,56,31,240,7,192,14, + 14,28,16,1,4,1,128,3,128,3,128,3,0,0,0,0, + 0,127,252,255,252,0,0,0,0,1,128,3,128,3,128,3, + 0,16,20,40,20,2,255,0,1,3,227,15,254,28,60,48, + 30,112,30,96,63,224,103,224,199,224,135,225,135,227,7,230, + 7,252,6,120,14,120,12,60,56,127,240,199,192,128,0,21, + 29,87,21,0,0,7,0,0,7,128,0,3,192,0,1,192, + 0,0,224,0,0,96,0,0,48,0,0,48,0,0,24,0, + 0,0,0,0,0,0,12,0,192,252,15,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,28,1,192,28,3,192, + 28,7,192,30,29,200,15,241,240,7,192,192,21,29,87,21, + 0,0,0,7,0,0,15,128,0,14,0,0,30,0,0,28, + 0,0,56,0,0,48,0,0,96,0,0,64,0,0,0,0, + 0,0,0,12,0,192,252,15,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,28,3,192,28,7,192, + 30,29,200,15,241,240,7,192,192,21,29,87,21,0,0,0, + 112,0,0,120,0,0,248,0,1,252,0,1,222,0,3,142, + 0,7,7,0,6,3,0,12,1,128,0,0,0,0,0,0, + 12,0,192,252,15,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,3,192,28,7,192,30,29,200, + 15,241,240,7,192,192,21,27,81,21,0,0,6,3,0,7, + 3,128,7,3,128,6,3,0,6,3,0,0,0,0,0,0, + 0,0,0,0,0,0,0,12,0,192,252,15,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,3, + 192,28,7,192,30,29,200,15,241,240,7,192,192,20,38,114, + 20,255,247,0,3,128,0,7,128,0,7,0,0,14,0,0, + 12,0,0,28,0,0,56,0,0,48,0,0,96,0,0,0, + 0,0,0,0,127,131,240,30,0,224,14,0,192,14,0,192, + 7,1,128,7,1,128,7,3,0,3,131,0,3,131,0,1, + 198,0,1,198,0,1,198,0,0,236,0,0,236,0,0,120, + 0,0,120,0,0,120,0,0,48,0,0,48,0,0,96,0, + 0,96,0,0,224,0,1,192,0,67,128,0,127,0,0,254, + 0,0,124,0,0,18,39,117,21,1,247,12,0,0,252,0, + 0,60,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 60,0,28,255,0,29,143,0,31,7,128,30,3,128,28,3, + 192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192, + 28,1,128,28,1,128,28,3,128,30,3,0,31,134,0,31, + 252,0,28,240,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,62,0,0,255,128,0, + 20,36,108,20,255,247,3,1,128,3,1,128,7,3,128,7, + 3,128,3,1,128,0,0,0,0,0,0,0,0,0,0,0, + 0,127,131,240,30,0,224,14,0,192,14,0,192,7,1,128, + 7,1,128,7,3,0,3,131,0,3,131,0,1,198,0,1, + 198,0,1,198,0,0,236,0,0,236,0,0,120,0,0,120, + 0,0,120,0,0,48,0,0,48,0,0,96,0,0,96,0, + 0,224,0,1,192,0,67,128,0,127,0,0,254,0,0,124, + 0,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=38 x= 3 y=14 dx=19 dy= 0 ascent=31 len=114 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25n[810] U8G_SECTION(".progmem.u8g_font_gdr25n") = { + 0,59,57,236,242,24,0,0,0,0,42,57,0,31,249,24, + 0,16,16,32,18,1,14,1,128,1,128,1,128,97,132,113, + 142,121,159,31,248,7,192,3,192,31,248,121,158,241,142,33, + 134,1,128,1,128,1,128,15,14,28,16,1,4,3,128,3, + 128,3,128,3,128,3,128,3,128,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,6,10,10,9,2,250,60, + 252,60,28,28,24,24,48,32,64,11,2,4,13,1,9,127, + 224,255,224,5,5,5,9,2,255,112,248,248,248,112,17,38, + 114,19,1,249,0,1,128,0,7,0,0,7,0,0,7,0, + 0,14,0,0,14,0,0,14,0,0,28,0,0,28,0,0, + 56,0,0,56,0,0,56,0,0,112,0,0,112,0,0,112, + 0,0,224,0,0,224,0,1,192,0,1,192,0,1,192,0, + 3,128,0,3,128,0,3,128,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,28,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,192,0,0,17,24,72,19,1,0,3,224,0,15, + 248,0,28,60,0,56,30,0,48,14,0,112,7,0,96,7, + 0,96,7,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,3,0,112, + 7,0,112,7,0,120,6,0,60,14,0,30,28,0,15,248, + 0,7,224,0,14,24,48,19,3,0,1,128,7,128,63,128, + 255,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,15,224,127,252,14,24,48,19,2,0, + 3,224,15,248,24,120,48,60,112,28,96,28,224,28,0,28, + 0,24,0,56,0,48,0,112,0,224,1,192,1,128,3,128, + 7,0,14,0,28,0,24,4,48,4,112,12,255,252,255,252, + 15,24,48,19,1,0,3,224,15,248,28,120,56,60,112,28, + 112,28,0,28,0,24,0,48,0,96,3,224,3,248,0,60, + 0,28,0,14,0,14,0,14,0,14,0,14,0,28,64,28, + 240,120,63,240,15,192,16,24,48,19,1,0,0,24,0,120, + 0,120,0,248,1,248,1,184,3,56,7,56,6,56,12,56, + 28,56,24,56,48,56,112,56,96,56,255,255,255,254,0,56, + 0,56,0,56,0,56,0,56,0,124,3,255,15,24,48,19, + 1,0,0,4,31,252,31,248,24,0,24,0,24,0,48,0, + 48,0,48,0,63,224,63,248,48,124,64,28,0,30,0,14, + 0,14,0,14,0,14,0,14,0,28,64,28,240,120,63,240, + 15,192,15,24,48,19,2,0,0,56,0,240,3,192,7,0, + 14,0,28,0,56,0,112,0,112,0,99,224,239,248,248,60, + 240,28,224,30,224,14,224,14,224,14,224,14,112,14,112,12, + 56,28,60,56,31,240,7,192,15,23,46,19,2,0,127,254, + 255,254,192,12,192,12,128,28,0,24,0,56,0,48,0,112, + 0,96,0,96,0,224,0,192,1,192,1,128,3,128,3,0, + 7,0,7,0,14,0,14,0,28,0,56,0,15,24,48,19, + 2,0,15,192,63,240,120,120,112,60,240,28,224,28,224,28, + 240,24,120,48,62,96,31,192,7,240,24,120,48,60,112,30, + 96,14,224,14,224,14,224,14,224,12,112,28,124,56,63,240, + 15,192,15,25,50,19,2,255,7,192,15,240,56,120,48,60, + 112,28,96,28,224,14,224,14,224,14,224,14,240,14,112,30, + 120,62,63,238,15,140,0,28,0,28,0,24,0,56,0,112, + 0,224,1,192,7,128,30,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=33 h=41 x= 3 y=20 dx=34 dy= 0 ascent=33 len=132 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x=-4 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =33 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25r[6239] U8G_SECTION(".progmem.u8g_font_gdr25r") = { + 0,59,57,236,242,25,6,209,16,163,32,127,247,33,247,31, + 247,0,0,0,9,0,0,5,30,30,11,3,255,48,112,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 96,96,96,0,0,0,112,248,248,248,112,11,13,26,17,3, + 16,112,224,241,224,241,224,241,224,241,224,112,224,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,17,23,69,19,2, + 2,0,194,0,1,134,0,1,134,0,1,142,0,3,140,0, + 3,12,0,3,12,0,63,255,128,63,255,128,6,24,0,6, + 56,0,14,48,0,12,48,0,12,48,0,255,254,0,255,254, + 0,24,96,0,24,224,0,48,192,0,48,192,0,48,192,0, + 113,192,0,97,128,0,16,30,60,19,1,253,1,128,1,128, + 1,128,3,224,15,252,57,254,49,156,113,136,113,128,113,128, + 121,128,61,128,63,128,31,224,7,248,1,252,1,190,1,143, + 1,143,1,135,193,135,193,135,225,142,241,142,255,252,63,240, + 15,192,1,128,1,128,1,128,25,25,100,27,1,255,15,128, + 6,0,63,192,28,0,113,224,56,0,112,224,56,0,224,112, + 112,0,224,112,224,0,224,112,224,0,224,113,192,0,224,115, + 128,0,112,231,0,0,120,231,0,0,63,206,60,0,31,28, + 254,0,0,29,207,0,0,57,199,0,0,115,131,128,0,227, + 131,128,0,227,131,128,1,195,131,128,3,131,131,128,3,131, + 131,128,7,1,199,0,14,1,199,0,28,0,254,0,24,0, + 120,0,24,28,84,27,2,0,0,248,0,1,252,0,3,30, + 0,7,14,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,7,112,0,7,192,0,7,131,255,15, + 135,255,29,193,242,57,224,240,112,240,112,112,112,112,224,120, + 112,224,60,112,224,30,224,224,15,224,224,7,192,240,3,192, + 120,3,240,60,30,248,31,252,127,7,224,56,4,13,13,10, + 3,16,112,240,240,240,240,112,96,96,96,96,96,96,96,9, + 37,74,13,3,250,0,128,3,128,7,0,14,0,12,0,28, + 0,24,0,56,0,56,0,112,0,112,0,112,0,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,112,0,112,0,112,0,112,0,56, + 0,56,0,28,0,28,0,14,0,7,0,3,128,0,128,9, + 37,74,13,1,250,128,0,224,0,112,0,56,0,28,0,28, + 0,14,0,14,0,14,0,7,0,7,0,7,0,7,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,7,0,7,0,7,0,7,0,14,0,14, + 0,12,0,28,0,24,0,56,0,112,0,224,0,128,0,16, + 16,32,18,1,14,1,128,1,128,1,128,97,132,113,142,121, + 159,31,248,7,192,3,192,31,248,121,158,241,142,33,134,1, + 128,1,128,1,128,15,14,28,16,1,4,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,10,10,9,2,250,60,252,60, + 28,28,24,24,48,32,64,11,2,4,13,1,9,127,224,255, + 224,5,5,5,9,2,255,112,248,248,248,112,17,38,114,19, + 1,249,0,1,128,0,7,0,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,56,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,192,0,1,192,0,1,192,0,3,128, + 0,3,128,0,3,128,0,7,0,0,7,0,0,14,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,28,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,112,0,0,224,0, + 0,192,0,0,17,24,72,19,1,0,3,224,0,15,248,0, + 28,60,0,56,30,0,48,14,0,112,7,0,96,7,0,96, + 7,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,3,0,112,7,0, + 112,7,0,120,6,0,60,14,0,30,28,0,15,248,0,7, + 224,0,14,24,48,19,3,0,1,128,7,128,63,128,255,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,15,224,127,252,14,24,48,19,2,0,3,224, + 15,248,24,120,48,60,112,28,96,28,224,28,0,28,0,24, + 0,56,0,48,0,112,0,224,1,192,1,128,3,128,7,0, + 14,0,28,0,24,4,48,4,112,12,255,252,255,252,15,24, + 48,19,1,0,3,224,15,248,28,120,56,60,112,28,112,28, + 0,28,0,24,0,48,0,96,3,224,3,248,0,60,0,28, + 0,14,0,14,0,14,0,14,0,14,0,28,64,28,240,120, + 63,240,15,192,16,24,48,19,1,0,0,24,0,120,0,120, + 0,248,1,248,1,184,3,56,7,56,6,56,12,56,28,56, + 24,56,48,56,112,56,96,56,255,255,255,254,0,56,0,56, + 0,56,0,56,0,56,0,124,3,255,15,24,48,19,1,0, + 0,4,31,252,31,248,24,0,24,0,24,0,48,0,48,0, + 48,0,63,224,63,248,48,124,64,28,0,30,0,14,0,14, + 0,14,0,14,0,14,0,28,64,28,240,120,63,240,15,192, + 15,24,48,19,2,0,0,56,0,240,3,192,7,0,14,0, + 28,0,56,0,112,0,112,0,99,224,239,248,248,60,240,28, + 224,30,224,14,224,14,224,14,224,14,112,14,112,12,56,28, + 60,56,31,240,7,192,15,23,46,19,2,0,127,254,255,254, + 192,12,192,12,128,28,0,24,0,56,0,48,0,112,0,96, + 0,96,0,224,0,192,1,192,1,128,3,128,3,0,7,0, + 7,0,14,0,14,0,28,0,56,0,15,24,48,19,2,0, + 15,192,63,240,120,120,112,60,240,28,224,28,224,28,240,24, + 120,48,62,96,31,192,7,240,24,120,48,60,112,30,96,14, + 224,14,224,14,224,14,224,12,112,28,124,56,63,240,15,192, + 15,25,50,19,2,255,7,192,15,240,56,120,48,60,112,28, + 96,28,224,14,224,14,224,14,224,14,240,14,112,30,120,62, + 63,238,15,140,0,28,0,28,0,24,0,56,0,112,0,224, + 1,192,7,128,30,0,48,0,5,19,19,9,2,255,120,248, + 248,248,96,0,0,0,0,0,0,0,0,0,112,248,248,248, + 112,6,24,24,9,2,250,120,248,248,248,96,0,0,0,0, + 0,0,0,0,0,60,252,60,28,28,24,24,48,32,64,15, + 13,26,18,1,5,0,2,0,30,0,254,3,240,31,192,126, + 0,240,0,252,0,63,128,7,224,1,252,0,62,0,12,15, + 8,16,18,1,7,127,254,255,254,0,0,0,0,0,0,0, + 0,127,254,255,254,15,13,26,18,1,5,96,0,252,0,63, + 0,15,224,1,252,0,126,0,30,0,126,3,240,31,192,126, + 0,248,0,192,0,14,30,60,17,2,255,7,224,31,240,56, + 120,112,56,224,28,224,28,224,28,192,28,0,28,0,56,0, + 56,0,112,0,240,0,224,1,192,3,128,3,128,7,0,7, + 0,7,0,7,0,7,0,0,0,0,0,0,0,7,0,15, + 128,15,128,15,128,7,0,30,33,132,32,1,249,0,7,248, + 0,0,63,254,0,0,240,31,128,1,192,7,192,3,0,1, + 224,6,0,0,240,12,0,0,112,24,0,0,120,56,3,198, + 56,48,15,252,56,112,28,60,60,112,56,28,28,96,112,28, + 28,224,96,28,28,224,224,28,28,224,224,28,28,224,224,28, + 28,224,224,28,28,224,224,28,28,224,224,28,24,240,240,28, + 56,112,112,28,48,112,120,60,96,120,60,94,224,56,31,143, + 128,60,15,15,0,30,0,0,0,31,0,0,0,15,128,0, + 32,7,192,0,192,1,248,15,128,0,255,254,0,0,31,240, + 0,23,25,75,24,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,19,25,75,22,1,0,31,240,0,255,254,0,28,31, + 0,28,7,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,0,28,6,0,28,28,0,31,254,0,31,255,0,28, + 15,128,28,3,192,28,1,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,1,224,28,1,192,28,7,128,63,255,0, + 255,252,0,19,25,75,21,1,0,0,254,0,3,255,192,7, + 7,192,12,1,128,24,0,0,56,0,0,112,0,0,112,0, + 0,112,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,112,0,0,112, + 0,0,120,0,0,60,0,64,30,1,224,15,135,128,7,254, + 0,1,248,0,21,25,75,24,1,0,31,248,0,255,255,0, + 28,15,128,28,3,192,28,1,224,28,0,240,28,0,112,28, + 0,112,28,0,120,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,28,0,112, + 28,0,112,28,0,224,28,1,224,28,3,192,28,15,128,63, + 254,0,255,248,0,18,25,75,20,1,0,255,255,0,63,255, + 0,28,3,0,28,1,0,28,1,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,31,252,0,31,252,0,28, + 8,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,64,28,0,192,28,1,128, + 63,255,128,255,255,128,17,25,75,19,1,0,255,255,128,63, + 255,128,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,31,252,0,31,248,0, + 28,24,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,62,0,0,255,128,0,21,25,75,23,1,0,0,127,0, + 1,255,192,7,3,224,14,0,192,28,0,0,56,0,0,48, + 0,0,112,0,0,112,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,15,248,224,1,224,224,0,224,224,0,224, + 112,0,224,112,0,224,120,0,224,60,0,224,30,0,224,15, + 129,192,7,255,128,1,252,0,24,25,75,26,1,0,255,129, + 255,62,0,124,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31, + 255,248,31,255,248,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,62,0,124,255,129,255,9,25,50,12,1,0,255, + 128,62,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,62,0,255, + 128,15,32,64,12,252,249,7,254,0,248,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,96,0,96,0,224,0, + 192,49,128,127,0,252,0,22,25,75,23,1,0,255,135,248, + 62,1,192,28,3,128,28,7,0,28,14,0,28,12,0,28, + 24,0,28,56,0,28,112,0,28,224,0,29,192,0,31,128, + 0,31,192,0,29,224,0,28,224,0,28,112,0,28,56,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,28, + 3,224,62,1,252,255,128,240,18,25,75,19,1,0,255,128, + 0,62,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,192,28,0,128, + 30,1,128,63,255,128,255,255,128,30,25,100,32,1,0,254, + 0,1,248,30,0,3,224,31,0,3,224,31,0,3,224,31, + 0,7,224,27,128,6,224,27,128,14,224,25,192,12,224,25, + 192,12,224,24,224,28,224,24,224,24,224,24,224,56,224,24, + 112,48,224,24,112,112,224,24,56,96,224,24,56,96,224,24, + 28,224,224,24,28,192,224,24,31,192,224,24,15,128,224,24, + 15,128,224,24,7,128,224,24,7,0,224,60,7,1,224,255, + 2,7,252,24,25,75,26,1,0,248,1,255,60,0,124,30, + 0,56,30,0,56,31,0,56,31,128,56,29,128,56,29,192, + 56,28,224,56,28,96,56,28,112,56,28,56,56,28,28,56, + 28,28,56,28,14,56,28,7,56,28,7,56,28,3,184,28, + 3,248,28,1,248,28,0,248,28,0,248,28,0,120,62,0, + 56,255,128,24,21,25,75,24,1,0,0,252,0,3,255,0, + 7,7,128,12,3,192,24,1,224,56,0,224,112,0,112,112, + 0,112,96,0,120,224,0,56,224,0,56,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,240,0,48,112,0,112, + 112,0,96,120,0,224,60,0,192,30,1,128,15,7,0,7, + 254,0,1,248,0,18,25,75,21,1,0,31,248,0,255,254, + 0,28,31,0,28,7,128,28,3,192,28,1,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,3,128,28,7,128,28, + 15,0,29,254,0,28,248,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 62,0,0,255,128,0,24,31,93,24,1,250,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,112,56,0,224,60,0,192,30,1,192,15,7, + 128,7,254,0,1,252,0,0,14,0,0,7,0,0,3,130, + 0,1,227,0,0,254,0,0,60,21,25,75,22,1,0,31, + 240,0,255,254,0,28,31,0,28,7,0,28,7,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,7,0,28,6,0, + 28,28,0,31,240,0,28,112,0,28,56,0,28,56,0,28, + 28,0,28,30,0,28,14,0,28,7,0,28,7,128,28,3, + 128,28,3,192,62,1,248,255,129,240,15,25,50,19,2,0, + 7,224,31,248,120,124,112,24,224,0,224,0,224,0,240,0, + 248,0,126,0,63,128,31,224,7,248,1,252,0,124,0,30, + 0,30,0,14,128,14,128,14,192,28,224,28,240,120,255,240, + 31,128,21,25,75,22,0,0,127,255,248,255,255,248,192,112, + 24,192,112,24,128,112,16,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,248,0, + 3,254,0,24,25,75,26,1,0,255,129,255,62,0,124,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,112,14,0,112,14,0,112,15,0,224,7,193,192,3,255, + 128,0,126,0,25,25,100,26,0,0,255,128,127,128,28,0, + 14,0,30,0,12,0,14,0,28,0,14,0,24,0,15,0, + 24,0,7,0,56,0,7,0,48,0,3,128,48,0,3,128, + 112,0,3,192,96,0,1,192,224,0,1,192,224,0,1,224, + 192,0,0,225,192,0,0,225,128,0,0,113,128,0,0,115, + 128,0,0,123,0,0,0,59,0,0,0,63,0,0,0,62, + 0,0,0,30,0,0,0,30,0,0,0,8,0,0,33,25, + 125,34,0,0,255,128,192,127,128,28,0,192,14,0,28,0, + 192,12,0,28,1,224,12,0,14,1,224,28,0,14,1,224, + 28,0,14,3,240,24,0,14,3,112,24,0,7,3,48,24, + 0,7,7,56,56,0,7,6,56,56,0,7,6,24,48,0, + 7,14,28,48,0,3,140,28,48,0,3,140,14,112,0,3, + 156,14,96,0,3,152,14,96,0,1,216,7,96,0,1,248, + 7,96,0,1,240,7,224,0,1,240,3,192,0,1,240,3, + 192,0,0,224,3,192,0,0,224,1,192,0,0,192,1,128, + 0,23,25,75,25,1,0,255,135,252,60,0,240,28,0,224, + 30,1,192,15,1,128,7,3,128,7,135,0,3,198,0,1, + 238,0,0,252,0,0,252,0,0,120,0,0,120,0,0,124, + 0,0,254,0,1,206,0,1,207,0,3,135,128,3,3,128, + 7,3,192,14,1,224,12,0,224,28,0,240,60,0,248,255, + 3,254,23,25,75,24,0,0,248,1,254,60,0,120,30,0, + 96,14,0,224,7,0,192,7,129,192,3,129,128,3,195,128, + 1,195,0,0,231,0,0,238,0,0,126,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,124,0, + 1,255,0,18,25,75,21,1,0,63,255,192,63,255,192,48, + 3,128,32,7,128,96,15,0,96,14,0,0,30,0,0,28, + 0,0,56,0,0,120,0,0,112,0,0,240,0,1,224,0, + 1,192,0,3,192,0,3,128,0,7,0,0,15,0,0,14, + 0,0,30,0,64,60,0,64,56,0,192,120,0,192,127,255, + 192,255,255,192,9,37,74,12,3,250,255,128,255,128,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,128,255,128,17,38,114,19,1,249,192,0,0,224,0,0, + 112,0,0,112,0,0,48,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,14,0,0,14,0,0,6,0, + 0,7,0,0,7,0,0,3,0,0,3,128,0,3,128,0, + 1,192,0,1,192,0,0,192,0,0,224,0,0,224,0,0, + 96,0,0,112,0,0,112,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,12,0,0,14,0,0,14,0, + 0,7,0,0,7,0,0,3,0,0,1,128,9,37,74,13, + 1,250,255,128,255,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,128,255,128,16,19,38,20, + 2,11,0,128,3,128,3,192,3,192,7,224,6,224,14,224, + 12,112,12,112,28,120,24,56,24,56,48,28,48,28,112,28, + 96,14,96,14,224,7,128,6,17,2,6,19,1,251,127,255, + 128,255,255,0,8,9,9,13,1,20,224,240,112,56,56,28, + 14,6,3,16,18,36,18,2,0,3,224,31,240,56,120,112, + 56,240,56,192,56,0,56,0,120,7,248,28,56,112,56,96, + 56,224,56,224,56,224,120,241,185,127,63,60,24,18,30,90, + 20,0,0,12,0,0,124,0,0,188,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,60,0,28,255,0,29,143,0, + 31,7,128,30,3,128,28,3,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,128,28,1,128,28,3, + 128,30,3,0,31,134,0,7,252,0,1,240,0,15,18,36, + 17,2,0,1,248,7,254,28,28,56,12,112,4,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,0,112,4,120, + 6,62,28,31,248,7,224,19,30,90,21,2,0,0,3,0, + 0,63,0,0,15,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7, + 0,3,247,0,15,255,0,28,31,0,56,15,0,48,7,0, + 112,7,0,96,7,0,224,7,0,224,7,0,224,7,0,224, + 7,0,224,7,0,240,7,0,112,15,0,120,31,0,60,55, + 224,31,231,192,7,131,0,14,18,36,18,2,0,3,192,15, + 240,28,120,48,56,112,28,96,28,224,28,255,252,255,248,224, + 0,224,0,224,0,240,0,112,4,120,12,60,56,31,240,7, + 192,15,30,60,12,1,0,0,120,1,254,3,28,6,8,14, + 0,12,0,12,0,28,0,28,0,28,0,28,0,28,0,127, + 240,255,224,28,64,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,62, + 0,255,192,18,27,81,19,1,247,3,224,192,15,255,192,28, + 63,0,56,28,0,112,14,0,112,14,0,112,14,0,112,14, + 0,120,28,0,60,56,0,31,240,0,7,192,0,6,0,0, + 12,0,0,28,0,0,31,224,0,15,254,0,12,63,128,24, + 3,192,112,1,192,224,1,192,224,1,192,224,3,128,240,3, + 128,124,15,0,63,252,0,7,240,0,21,30,90,22,1,0, + 12,0,0,252,0,0,124,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,31,0,28,63,128,28,227,192,29,129,192, + 31,1,192,30,1,192,30,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,62,3,192,255,143,248,9,27,54,11,1,0, + 28,0,60,0,60,0,60,0,24,0,0,0,0,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,11,36,72,10,252,247,0,224,1,224, + 1,224,1,224,0,192,0,0,0,0,0,0,0,0,0,96, + 7,224,1,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,192,0,192,1,192,1,128,35,0, + 254,0,248,0,19,30,90,20,1,0,12,0,0,252,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,31, + 224,28,7,0,28,14,0,28,28,0,28,48,0,28,224,0, + 29,192,0,31,128,0,29,192,0,29,224,0,28,240,0,28, + 120,0,28,56,0,28,28,0,28,30,0,28,15,0,60,7, + 128,255,3,224,9,30,60,11,1,0,12,0,252,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,31,18,72,32,1,0,12,30,3,192, + 252,127,15,224,60,199,152,240,29,131,176,112,31,3,224,112, + 30,3,192,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,60,7,192,240, + 255,159,243,254,21,18,54,22,1,0,12,15,0,252,63,128, + 60,99,192,29,129,192,29,1,192,30,1,192,30,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,62,3,192,255,143,248, + 16,18,36,20,2,0,3,224,15,248,28,60,48,30,112,14, + 96,15,224,7,224,7,224,7,224,7,224,7,224,7,240,6, + 112,14,120,12,62,56,31,240,7,192,18,27,81,21,1,247, + 12,28,0,252,127,0,60,143,128,29,7,128,30,3,128,30, + 3,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,128,28,1,128,28,3,128,30,3,0,31,6,0, + 29,252,0,28,120,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,62,0,0,255,128, + 0,19,27,81,21,2,247,1,241,128,7,251,0,28,31,0, + 56,15,0,48,7,0,112,7,0,96,7,0,224,7,0,224, + 7,0,224,7,0,224,7,0,224,7,0,240,7,0,112,15, + 0,120,31,0,60,55,0,31,231,0,7,135,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,63,224,14,18,36,16,1,0,12,60, + 252,252,61,140,29,12,31,4,30,0,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,0, + 255,128,11,18,36,15,2,0,31,0,127,128,115,192,225,128, + 224,128,240,0,248,0,126,0,31,0,15,192,3,224,1,224, + 128,224,128,224,192,224,225,192,255,128,62,0,13,25,50,14, + 0,0,4,0,12,0,28,0,28,0,28,0,28,0,28,0, + 127,248,255,240,28,32,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,56, + 15,240,7,128,21,18,54,21,0,0,12,0,192,252,15,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,3,192,28,7,192,30,29,200,15,241,240,7,192,192, + 19,18,54,20,0,0,255,7,224,60,1,192,28,1,128,28, + 3,128,14,3,0,14,3,0,14,6,0,7,6,0,7,6, + 0,3,140,0,3,140,0,3,156,0,1,216,0,1,216,0, + 0,240,0,0,240,0,0,240,0,0,64,0,28,18,72,28, + 0,0,255,3,7,240,60,7,0,192,28,7,0,192,28,7, + 129,128,28,15,129,128,14,15,129,128,14,13,195,128,14,25, + 195,0,6,25,195,0,7,24,227,0,7,48,230,0,3,48, + 118,0,3,176,118,0,3,224,124,0,1,224,60,0,1,224, + 60,0,1,192,60,0,1,128,16,0,20,18,54,20,0,0, + 127,143,224,30,3,128,14,3,0,7,6,0,7,140,0,3, + 156,0,1,216,0,0,240,0,0,240,0,0,240,0,1,184, + 0,1,156,0,3,30,0,6,14,0,14,7,0,12,3,128, + 60,3,192,255,15,240,20,27,81,20,255,247,127,131,240,30, + 0,224,14,0,192,14,0,192,7,1,128,7,1,128,7,3, + 0,3,131,0,3,131,0,1,198,0,1,198,0,1,198,0, + 0,236,0,0,236,0,0,120,0,0,120,0,0,120,0,0, + 48,0,0,48,0,0,96,0,0,96,0,0,224,0,1,192, + 0,67,128,0,127,0,0,254,0,0,124,0,0,15,18,36, + 18,1,0,63,254,63,254,96,28,96,56,64,56,0,112,0, + 224,1,192,1,192,3,128,7,0,7,0,14,0,28,2,56, + 2,56,6,127,254,255,254,11,37,74,14,2,250,0,64,1, + 224,3,128,7,0,6,0,14,0,14,0,14,0,14,0,14, + 0,15,0,7,0,7,0,7,0,7,0,7,0,14,0,28, + 0,124,0,254,0,15,0,7,0,7,0,7,0,7,0,7, + 0,15,0,14,0,14,0,14,0,14,0,14,0,14,0,7, + 0,3,0,1,192,0,64,3,41,41,9,3,248,96,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,192,11,37,74,14,1,250,64,0,112,0, + 56,0,28,0,12,0,14,0,14,0,14,0,14,0,14,0, + 30,0,28,0,28,0,28,0,28,0,28,0,14,0,15,192, + 3,224,7,0,14,0,12,0,28,0,28,0,28,0,28,0, + 30,0,14,0,14,0,14,0,14,0,14,0,12,0,28,0, + 56,0,112,0,192,0,18,6,18,20,1,9,15,0,192,31, + 192,128,63,225,0,99,255,0,192,254,0,128,56,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=40 h=49 x= 5 y=28 dx=41 dy= 0 ascent=42 len=195 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x=-5 y=-13 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =42 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30[18369] U8G_SECTION(".progmem.u8g_font_gdr30") = { + 0,71,68,232,239,30,9,231,23,124,32,255,245,42,243,38, + 245,0,0,0,11,0,0,6,36,36,13,3,255,12,60,124, + 124,124,124,124,120,120,120,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,0,0,0,0,56,124,252,252,248, + 112,13,16,32,20,4,19,48,56,240,248,240,248,240,240,240, + 240,240,240,240,112,240,112,240,112,240,112,112,112,112,112,96, + 112,96,112,96,112,96,112,21,27,81,23,2,3,0,48,96, + 0,112,224,0,96,192,0,224,192,0,225,192,0,225,192,0, + 193,128,1,195,128,31,255,248,31,255,248,3,135,0,3,135, + 0,3,7,0,3,6,0,7,14,0,7,14,0,6,14,0, + 255,255,192,255,255,192,12,28,0,12,24,0,28,56,0,28, + 56,0,24,48,0,56,112,0,56,112,0,48,96,0,20,36, + 108,23,1,252,0,96,0,0,96,0,0,96,0,0,96,0, + 3,254,0,15,255,128,62,127,192,120,103,128,112,99,128,240, + 96,0,240,96,0,240,96,0,248,96,0,126,96,0,127,224, + 0,63,240,0,15,254,0,1,255,0,0,127,192,0,111,224, + 0,99,224,0,97,240,0,96,240,0,96,240,64,96,240,96, + 96,240,112,96,224,120,97,224,124,99,192,127,255,128,31,255, + 0,7,248,0,0,96,0,0,96,0,0,96,0,0,96,0, + 31,30,120,34,1,255,7,192,0,96,31,224,1,240,60,240, + 1,192,120,120,3,192,112,120,7,128,240,60,7,0,240,60, + 14,0,240,60,30,0,240,60,60,0,240,60,56,0,240,60, + 120,0,120,56,240,0,120,120,224,0,60,241,192,0,31,227, + 195,224,15,135,143,240,0,7,30,120,0,15,60,60,0,30, + 56,60,0,28,120,30,0,56,120,30,0,120,120,30,0,240, + 120,30,0,224,120,30,1,192,120,30,3,192,60,28,3,128, + 60,60,7,0,30,120,15,0,15,240,12,0,7,192,30,34, + 136,32,2,0,0,63,0,0,0,255,128,0,1,199,192,0, + 3,131,224,0,7,1,224,0,7,1,224,0,15,1,224,0, + 15,1,224,0,15,3,224,0,15,3,192,0,15,135,192,0, + 15,143,128,0,7,191,0,0,7,254,0,0,7,248,0,0, + 7,240,0,0,15,240,63,248,31,240,127,252,62,120,30,48, + 60,124,15,0,124,60,15,0,120,30,7,0,240,31,7,0, + 240,15,135,0,240,7,198,0,240,3,198,0,240,3,236,0, + 240,1,252,0,248,0,252,0,120,0,126,0,60,0,255,0, + 63,3,143,200,15,255,7,240,3,248,3,192,4,16,16,12, + 4,19,48,240,240,240,240,240,240,240,240,240,112,112,96,96, + 96,96,11,45,90,15,3,249,0,32,0,224,1,192,3,128, + 3,128,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 56,0,120,0,120,0,120,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,120,0,120,0,120,0,120,0,56,0,60,0,60,0, + 28,0,30,0,14,0,15,0,7,0,3,128,1,192,0,224, + 0,32,11,45,90,15,1,249,128,0,224,0,112,0,56,0, + 28,0,30,0,14,0,15,0,7,0,7,128,7,128,3,128, + 3,192,3,192,3,192,3,192,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,192,3,192,3,192,3,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,56,0,56,0,112,0,224,0, + 128,0,18,20,60,21,2,17,0,192,0,1,192,0,1,192, + 0,1,192,0,193,193,0,240,195,192,248,207,192,124,223,0, + 15,252,0,3,224,0,3,224,0,15,252,0,60,223,0,248, + 207,128,240,195,128,64,193,128,1,192,0,1,192,0,1,192, + 0,1,128,0,17,17,51,20,1,5,0,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,255,255,128,255,255,128,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,128,0,7,13,13, + 11,2,249,8,60,254,254,30,30,30,28,28,56,48,96,64, + 14,2,4,16,1,11,127,252,255,248,6,6,6,11,3,255, + 56,124,252,252,248,112,20,46,138,23,1,248,0,0,48,0, + 0,240,0,0,240,0,0,224,0,1,224,0,1,192,0,1, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,15,0,0,14,0,0,30,0,0,28,0,0, + 28,0,0,60,0,0,56,0,0,120,0,0,120,0,0,112, + 0,0,240,0,0,224,0,0,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0,7,128,0,7,128,0,7, + 0,0,15,0,0,14,0,0,30,0,0,30,0,0,28,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,112,0,0, + 240,0,0,192,0,0,19,29,87,23,2,0,1,248,0,7, + 252,0,14,30,0,28,15,0,24,7,128,56,7,128,56,3, + 192,112,3,192,112,3,192,112,3,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,192,120,1,192,120,3,192,120,3, + 128,60,3,128,60,3,0,30,7,0,15,14,0,7,252,0, + 3,240,0,17,29,87,23,3,0,0,96,0,1,224,0,15, + 224,0,127,224,0,255,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,3,240,0,63,254,0,127,255,128, + 17,29,87,22,2,0,1,248,0,7,254,0,28,31,0,56, + 15,0,120,15,128,112,7,128,240,7,128,224,7,128,0,7, + 128,0,7,128,0,15,0,0,15,0,0,30,0,0,30,0, + 0,60,0,0,120,0,0,240,0,0,240,0,1,224,0,3, + 192,0,7,128,0,15,0,0,15,0,0,30,0,128,60,0, + 128,120,0,128,240,1,128,255,255,128,255,255,128,18,29,87, + 22,1,0,1,248,0,7,254,0,30,31,0,60,15,0,56, + 7,128,120,7,128,112,7,128,0,7,128,0,7,0,0,15, + 0,0,30,0,0,60,0,0,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,7,128,128,7,128,224,15, + 0,120,62,0,63,252,0,7,224,0,19,29,87,23,1,0, + 0,3,0,0,15,0,0,31,0,0,63,0,0,127,0,0, + 127,0,0,239,0,0,207,0,1,207,0,3,143,0,3,143, + 0,7,15,0,14,15,0,14,15,0,28,15,0,24,15,0, + 56,15,0,112,15,0,112,15,0,255,255,224,255,255,192,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,63,128,1,255,224,18,29,87,23,2,0,0,0,128, + 0,1,128,31,255,0,31,254,0,24,0,0,24,0,0,24, + 0,0,24,0,0,56,0,0,56,0,0,56,0,0,63,240, + 0,63,252,0,120,63,0,32,15,0,0,7,128,0,7,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,128,0,7,128,128,7,128,224,15,0,120,62,0,63,252, + 0,7,240,0,18,29,87,23,3,0,0,7,0,0,63,0, + 0,248,0,1,224,0,3,192,0,15,0,0,14,0,0,30, + 0,0,60,0,0,56,0,0,120,0,0,120,248,0,119,254, + 0,254,31,0,248,15,128,240,7,128,240,7,192,240,3,192, + 240,3,192,240,3,192,240,3,192,248,3,192,120,3,128,120, + 3,128,60,7,128,60,7,0,31,14,0,15,252,0,3,240, + 0,19,27,81,23,2,0,127,255,192,127,255,224,96,1,192, + 64,3,192,192,3,128,0,3,128,0,7,0,0,7,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,56,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,224,0,0,224,0, + 1,192,0,1,192,0,3,192,0,7,128,0,7,128,0,15, + 0,0,15,0,0,28,0,0,18,29,87,22,2,0,3,248, + 0,15,254,0,28,31,0,56,15,0,48,7,128,112,7,128, + 112,7,128,112,7,128,112,7,0,120,15,0,62,30,0,31, + 188,0,15,240,0,3,252,0,7,254,0,30,63,0,60,15, + 128,120,7,192,112,7,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,128,120,7,128,124,7,0,62,14,0,31, + 252,0,7,224,0,19,30,90,23,2,255,1,248,0,7,254, + 0,14,31,0,28,15,128,56,7,128,120,3,192,112,3,192, + 240,3,224,240,1,224,240,1,224,240,1,224,240,1,224,248, + 1,224,120,3,224,124,7,224,62,13,224,31,249,224,7,225, + 192,0,3,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,30,0,0,60,0,0,120,0,0,240,0,3,224,0,31, + 128,0,56,0,0,6,23,23,11,3,255,56,124,252,252,248, + 112,0,0,0,0,0,0,0,0,0,0,0,56,124,252,252, + 248,112,7,29,29,11,2,249,28,62,126,126,124,56,0,0, + 0,0,0,0,0,0,0,0,8,60,254,254,30,30,30,28, + 28,56,48,96,64,19,15,45,21,1,6,0,0,96,0,3, + 192,0,31,192,0,127,0,3,252,0,31,224,0,127,0,0, + 124,0,0,254,0,0,63,192,0,7,240,0,1,254,0,0, + 63,192,0,7,224,0,1,128,19,9,27,21,1,9,127,255, + 224,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,127,255,224,255,255,192,19,15,45,21,1,6,48, + 0,0,252,0,0,127,128,0,15,240,0,3,254,0,0,127, + 128,0,15,224,0,3,192,0,31,192,0,255,0,3,248,0, + 31,192,0,127,0,0,120,0,0,192,0,0,17,36,108,21, + 2,255,3,248,0,15,254,0,60,63,0,120,15,0,120,15, + 128,240,7,128,240,7,128,240,7,128,224,7,128,0,7,128, + 0,15,0,0,15,0,0,30,0,0,30,0,0,60,0,0, + 120,0,0,112,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,3, + 224,0,7,224,0,7,224,0,7,192,0,3,128,0,36,39, + 195,39,1,248,0,0,255,128,0,0,7,255,224,0,0,31, + 1,248,0,0,120,0,62,0,0,224,0,31,0,1,192,0, + 15,0,7,128,0,7,128,7,0,0,3,192,14,0,0,1, + 192,28,0,124,33,224,28,1,255,96,224,56,3,135,224,224, + 56,7,3,224,224,120,14,1,224,240,112,14,1,224,112,112, + 30,1,224,112,240,28,1,224,112,240,60,1,224,112,240,60, + 1,224,112,240,60,1,224,112,240,60,1,224,112,240,60,1, + 224,112,240,60,1,224,96,248,60,1,224,224,248,62,1,224, + 192,120,30,1,224,192,120,31,3,225,128,124,15,5,225,0, + 60,15,141,242,0,62,7,248,252,0,31,1,224,112,0,31, + 0,0,0,0,15,128,0,0,0,7,192,0,1,0,3,240, + 0,3,128,1,248,0,14,0,0,127,0,252,0,0,31,255, + 240,0,0,3,255,0,0,28,30,120,29,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,24,30,90,27,0,0,7,254,0,255,255, + 192,111,7,224,15,1,240,15,0,248,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,112,15,0,240,15,1,224,15, + 7,192,15,255,192,15,255,240,15,1,248,15,0,124,15,0, + 62,15,0,30,15,0,31,15,0,15,15,0,15,15,0,15, + 15,0,15,15,0,14,15,0,30,15,0,60,15,0,248,63, + 255,240,127,255,128,23,30,90,26,1,0,0,31,224,0,255, + 252,1,192,252,7,128,56,14,0,16,14,0,0,28,0,0, + 56,0,0,56,0,0,120,0,0,112,0,0,112,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,30,0,4,31,0,14,15,128,56,7,224,240,1, + 255,192,0,127,0,25,30,120,28,1,0,7,254,0,0,255, + 255,192,0,111,3,240,0,15,0,248,0,15,0,124,0,15, + 0,62,0,15,0,30,0,15,0,31,0,15,0,15,0,15, + 0,15,0,15,0,15,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,0,15,0,15,0,15, + 0,15,0,15,0,30,0,15,0,30,0,15,0,60,0,15, + 0,124,0,15,0,248,0,15,3,224,0,63,255,192,0,127, + 254,0,0,21,30,90,24,1,0,255,255,224,127,255,240,30, + 0,96,30,0,96,30,0,96,30,0,96,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,128,31,255,128,30,3,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,8,30,0,24,30,0,24,31,0,56,127,255,240, + 255,255,240,20,30,90,23,1,0,255,255,240,127,255,240,30, + 0,96,30,0,96,30,0,32,30,0,32,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,0,31,255,0,30,6,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,127,128,0, + 255,224,0,24,30,90,28,2,0,0,31,224,0,255,248,1, + 192,252,7,128,56,15,0,16,30,0,0,28,0,0,56,0, + 0,56,0,0,120,0,0,112,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,7,255,240,0,254,240, + 0,60,240,0,60,248,0,60,120,0,60,120,0,60,60,0, + 60,62,0,60,30,0,60,15,0,60,7,192,248,3,255,224, + 0,127,0,27,30,120,31,2,0,255,192,127,224,127,128,63, + 192,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,31,255,255,0,31,255,255,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,127,0,31,192,255,192,127, + 224,10,30,60,14,2,0,255,192,127,128,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,127, + 128,255,192,17,38,114,15,252,248,7,255,128,0,255,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,56,0,0,56,0,0,56,0,0,112,0,0,112,0,0, + 224,0,112,192,0,255,0,0,124,0,0,26,30,120,28,1, + 0,255,193,255,128,127,128,124,0,30,0,120,0,30,0,240, + 0,30,1,224,0,30,1,192,0,30,3,128,0,30,7,0, + 0,30,14,0,0,30,28,0,0,30,56,0,0,30,120,0, + 0,30,112,0,0,30,224,0,0,31,224,0,0,30,240,0, + 0,30,120,0,0,30,124,0,0,30,62,0,0,30,30,0, + 0,30,15,0,0,30,7,128,0,30,7,192,0,30,3,224, + 0,30,1,240,0,30,0,248,0,30,0,124,0,30,0,126, + 0,127,128,63,192,255,192,31,0,21,30,90,23,1,0,255, + 192,0,127,128,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,8,30,0,24,30,0,24, + 31,0,48,127,255,240,255,255,240,36,30,150,39,1,0,127, + 0,0,15,224,31,128,0,31,128,15,128,0,31,0,15,128, + 0,63,0,15,192,0,63,0,15,192,0,55,0,15,224,0, + 119,0,14,224,0,119,0,14,240,0,231,0,14,240,0,231, + 0,14,120,0,199,0,14,120,1,199,0,14,56,1,199,0, + 14,60,3,135,0,14,28,3,135,0,14,30,7,7,0,14, + 30,7,7,0,14,15,6,7,0,14,15,14,7,0,14,7, + 14,7,0,14,7,156,7,0,14,3,156,7,0,14,3,216, + 7,0,14,3,248,7,0,14,1,248,7,0,14,1,240,7, + 0,14,0,240,7,0,14,0,224,7,0,63,0,224,31,192, + 255,192,96,127,240,27,30,120,31,2,0,252,0,63,224,124, + 0,15,128,30,0,7,0,31,0,7,0,31,0,7,0,31, + 128,7,0,31,192,7,0,29,192,7,0,28,224,7,0,28, + 240,7,0,28,120,7,0,28,56,7,0,28,60,7,0,28, + 30,7,0,28,14,7,0,28,15,7,0,28,7,135,0,28, + 7,135,0,28,3,199,0,28,1,231,0,28,1,231,0,28, + 0,247,0,28,0,127,0,28,0,127,0,28,0,63,0,28, + 0,31,0,28,0,31,0,28,0,15,0,62,0,7,0,255, + 128,3,0,25,30,120,29,2,0,0,63,0,0,0,255,224, + 0,3,193,240,0,7,0,248,0,14,0,124,0,28,0,62, + 0,60,0,30,0,56,0,31,0,120,0,15,0,120,0,15, + 0,112,0,15,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,248,0,7,0,120,0,15,0,120,0,15, + 0,124,0,14,0,60,0,28,0,62,0,28,0,31,0,56, + 0,15,128,112,0,7,193,224,0,3,255,128,0,0,254,0, + 0,22,30,90,25,1,0,7,254,0,255,255,192,111,7,224, + 15,1,240,15,0,248,15,0,124,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,120,15,0, + 120,15,0,240,15,131,224,15,127,192,15,62,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,63,192,0,127,240, + 0,28,37,148,29,2,249,0,63,0,0,0,255,224,0,3, + 193,240,0,7,0,248,0,14,0,124,0,28,0,62,0,60, + 0,30,0,56,0,31,0,120,0,15,0,120,0,15,0,112, + 0,15,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,248,0,7,0,120,0,15,0,120,0,15,0,124, + 0,14,0,60,0,30,0,62,0,28,0,31,0,56,0,15, + 128,112,0,7,193,224,0,3,255,192,0,0,127,128,0,0, + 3,192,0,0,1,224,0,0,0,248,16,0,0,124,48,0, + 0,31,224,0,0,15,224,0,0,3,128,26,30,120,27,1, + 0,7,254,0,0,255,255,192,0,111,7,224,0,15,1,240, + 0,15,0,240,0,15,0,120,0,15,0,120,0,15,0,120, + 0,15,0,120,0,15,0,120,0,15,0,112,0,15,0,240, + 0,15,1,224,0,15,3,192,0,15,255,0,0,15,254,0, + 0,15,14,0,0,15,7,0,0,15,7,128,0,15,3,128, + 0,15,3,192,0,15,1,192,0,15,1,224,0,15,0,240, + 0,15,0,240,0,15,0,120,0,15,0,124,0,15,0,62, + 0,63,192,63,192,127,224,31,0,18,30,90,23,3,0,3, + 248,0,31,254,0,60,63,0,120,14,0,112,4,0,240,0, + 0,240,0,0,240,0,0,248,0,0,252,0,0,127,0,0, + 127,192,0,63,240,0,31,248,0,7,254,0,1,255,0,0, + 127,128,0,31,128,0,15,192,0,7,192,0,3,192,0,3, + 192,0,3,192,128,3,128,192,3,128,224,7,0,240,15,0, + 252,62,0,255,248,0,15,224,0,26,30,120,26,0,0,127, + 255,255,192,127,255,255,192,96,30,1,128,192,30,1,128,192, + 30,1,128,128,30,0,128,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 127,128,0,1,255,224,0,27,30,120,31,2,0,255,192,127, + 224,127,128,63,192,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,30,0,15,0,30,0,15,0,30, + 0,7,128,60,0,7,192,120,0,3,224,240,0,1,255,224, + 0,0,63,128,0,30,30,120,31,0,0,255,224,15,252,31, + 0,1,240,15,0,0,224,15,0,1,192,7,0,1,192,7, + 128,1,192,7,128,3,128,3,192,3,128,3,192,3,128,3, + 192,7,0,1,224,7,0,1,224,6,0,0,224,14,0,0, + 240,14,0,0,240,12,0,0,120,28,0,0,120,28,0,0, + 120,56,0,0,60,56,0,0,60,56,0,0,28,112,0,0, + 30,112,0,0,30,112,0,0,15,224,0,0,15,224,0,0, + 15,224,0,0,7,192,0,0,7,192,0,0,3,128,0,0, + 3,0,0,40,30,150,41,0,0,255,224,24,3,255,63,0, + 24,0,252,14,0,28,0,48,15,0,60,0,112,15,0,60, + 0,112,15,0,62,0,112,7,0,126,0,96,7,0,127,0, + 224,7,128,127,0,224,7,128,103,0,224,7,128,231,128,224, + 3,128,231,128,192,3,192,195,129,192,3,193,195,193,192,3, + 193,195,193,192,1,193,129,193,192,1,195,129,225,128,1,227, + 129,227,128,1,227,0,227,128,1,231,0,243,128,0,231,0, + 243,128,0,246,0,115,0,0,254,0,127,0,0,254,0,63, + 0,0,124,0,63,0,0,124,0,62,0,0,124,0,30,0, + 0,124,0,30,0,0,120,0,30,0,0,48,0,8,0,28, + 30,120,30,1,0,255,224,255,224,255,224,255,224,63,0,31, + 0,31,0,30,0,15,128,28,0,7,128,56,0,3,192,120, + 0,3,224,112,0,1,224,224,0,0,241,224,0,0,249,192, + 0,0,127,128,0,0,63,128,0,0,31,0,0,0,31,0, + 0,0,31,0,0,0,63,128,0,0,63,192,0,0,115,224, + 0,0,241,224,0,0,224,240,0,1,192,248,0,3,192,120, + 0,3,128,60,0,7,0,62,0,15,0,31,0,14,0,15, + 0,62,0,15,192,255,192,127,240,255,192,127,240,28,30,120, + 29,0,0,252,0,63,240,254,0,63,240,31,0,15,128,15, + 0,7,0,15,128,14,0,7,192,14,0,3,192,28,0,3, + 224,60,0,1,224,56,0,0,240,120,0,0,248,112,0,0, + 120,224,0,0,125,224,0,0,61,192,0,0,63,192,0,0, + 31,128,0,0,31,128,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,63,192,0,0,255,240,0,22,30,90,25,1, + 0,63,255,252,63,255,252,56,0,120,48,0,248,48,1,240, + 32,1,224,32,3,224,0,3,192,0,7,128,0,15,128,0, + 15,0,0,31,0,0,30,0,0,60,0,0,124,0,0,120, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 7,128,0,15,128,0,15,0,4,31,0,12,62,0,12,60, + 0,12,124,0,28,127,255,252,255,255,252,11,45,90,15,3, + 248,255,224,255,224,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,255,224,255,224,20,46,138,23,1, + 248,224,0,0,112,0,0,112,0,0,120,0,0,56,0,0, + 56,0,0,28,0,0,28,0,0,30,0,0,14,0,0,14, + 0,0,15,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,192,0,1,192,0,1,192,0,1,224,0,0,224,0, + 0,224,0,0,240,0,0,112,0,0,112,0,0,56,0,0, + 56,0,0,60,0,0,28,0,0,28,0,0,30,0,0,14, + 0,0,14,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,224,0, + 0,224,0,0,240,0,0,112,0,0,48,11,45,90,15,1, + 248,255,224,255,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,255,224,255,224,19,23,69,24,2, + 13,0,32,0,0,112,0,0,240,0,1,240,0,1,248,0, + 1,248,0,3,188,0,3,188,0,7,60,0,7,30,0,6, + 30,0,14,14,0,14,15,0,12,15,0,28,7,128,28,7, + 128,24,3,128,56,3,192,48,3,192,112,1,224,112,1,224, + 96,0,224,192,0,192,20,2,6,23,1,251,127,255,240,255, + 255,240,9,10,20,15,1,25,240,0,248,0,120,0,60,0, + 28,0,14,0,7,0,3,0,1,128,1,128,20,22,66,22, + 2,0,1,248,0,15,254,0,28,30,0,120,15,0,112,15, + 0,240,15,0,128,15,0,0,15,0,0,15,0,0,255,0, + 7,255,0,31,143,0,62,15,0,120,15,0,248,15,0,240, + 15,0,240,15,0,240,31,0,240,63,0,120,239,32,127,143, + 240,30,7,128,22,36,108,24,0,0,6,0,0,126,0,0, + 254,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,15,128,30,63,224,30,127,240,30,227,240, + 31,192,248,31,128,248,31,0,124,30,0,124,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 56,30,0,56,30,0,112,30,0,96,31,0,224,15,193,192, + 3,255,0,0,252,0,18,22,66,21,2,0,0,127,0,3, + 255,192,7,7,192,14,1,128,28,0,128,56,0,0,120,0, + 0,112,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,248,0,0,120,0,0,120,0,0,60, + 0,64,62,1,192,31,131,128,7,254,0,1,248,0,23,36, + 108,25,2,0,0,0,224,0,15,224,0,15,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,253, + 224,3,255,224,15,15,224,28,3,224,60,1,224,56,1,224, + 120,1,224,112,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,1, + 224,124,3,224,62,5,228,31,25,254,15,240,248,7,192,224, + 18,22,66,22,2,0,0,248,0,7,254,0,14,15,0,28, + 7,128,56,7,128,56,3,192,112,3,192,112,3,192,255,255, + 192,255,255,128,240,0,0,240,0,0,240,0,0,240,0,0, + 248,0,0,120,0,0,120,0,0,124,0,192,62,1,128,31, + 7,0,15,254,0,3,248,0,19,36,108,15,0,0,0,15, + 128,0,63,224,0,99,192,1,193,128,3,128,0,3,128,0, + 7,128,0,7,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,63,254,0,255,252,0,15,8, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,31,224,0,127,248,0,24,33,99,24,0,245, + 0,252,2,3,255,126,7,7,252,14,3,224,30,1,224,28, + 1,240,60,0,240,60,0,240,60,0,240,60,0,240,62,0, + 224,31,1,192,15,131,128,7,255,0,1,252,0,3,192,0, + 7,128,0,15,128,0,15,224,0,7,255,128,3,255,240,7, + 191,252,14,0,254,60,0,31,120,0,15,240,0,15,240,0, + 15,240,0,14,248,0,28,124,0,56,63,128,240,15,255,192, + 1,254,0,23,36,108,26,2,0,6,0,0,126,0,0,254, + 0,0,62,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,7,128,28,31,224,28,49,224,28,96,240,28, + 192,240,29,128,240,31,0,240,31,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,63, + 131,248,255,199,254,10,32,64,13,2,0,28,0,30,0,62, + 0,62,0,28,0,0,0,0,0,0,0,0,0,0,0,6, + 0,126,0,254,0,62,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,63,0,255,192,14,43,86,12,251, + 245,0,56,0,60,0,124,0,124,0,56,0,0,0,0,0, + 0,0,0,0,0,0,12,0,252,1,252,0,124,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,56,0,56,0,120,0,112,0,112,48, + 224,127,128,255,0,124,0,23,36,108,24,1,0,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,7,252,30,1,240,30,1,192, + 30,3,128,30,7,0,30,14,0,30,56,0,30,112,0,30, + 224,0,31,224,0,30,240,0,30,248,0,30,120,0,30,60, + 0,30,30,0,30,15,0,30,15,128,30,7,192,30,3,224, + 30,1,224,63,0,254,255,192,124,12,36,72,13,1,0,3, + 0,63,0,127,0,31,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,31,128,255,240,36,22,110,39,2,0,12,7,192, + 124,0,254,31,224,255,0,62,49,227,143,0,30,96,247,7, + 128,30,192,254,7,128,31,128,252,7,128,31,0,248,7,128, + 31,0,248,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,30,0,240,7,128,30,0,240,7,128,30,0,240,7, + 128,127,131,252,31,192,255,199,254,63,240,23,22,66,26,2, + 0,12,7,192,254,15,224,62,49,224,30,96,240,30,192,240, + 30,128,240,31,0,240,31,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,127,131,248, + 255,199,254,20,22,66,24,2,0,0,252,0,7,255,0,14, + 15,128,28,7,192,56,3,192,56,3,224,112,1,224,112,1, + 240,240,0,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,248,0,224,120,1,224,124,1,192,60,1,192,62, + 3,128,31,7,0,15,254,0,3,240,0,21,33,99,25,2, + 245,12,7,128,254,31,192,62,35,224,30,65,240,30,129,240, + 31,0,240,31,0,248,30,0,248,30,0,120,30,0,120,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,112,30,0, + 112,30,0,224,30,0,224,31,1,192,31,195,128,30,255,0, + 30,62,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,127,0, + 0,255,224,0,22,33,99,25,2,245,0,252,48,3,255,96, + 7,15,224,30,3,224,28,1,224,56,1,224,120,1,224,112, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,120,1,224,120,1,224,124,3,224, + 62,7,224,31,29,224,15,249,224,3,225,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,240,0,31,252,17,22,66, + 19,1,0,4,15,0,126,63,128,254,127,128,30,227,128,30, + 195,128,31,129,0,31,128,0,31,0,0,31,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,63, + 128,0,255,224,0,15,22,44,19,2,0,15,192,63,248,120, + 120,112,56,240,16,240,0,248,0,252,0,127,0,63,192,31, + 240,7,248,1,252,0,126,0,62,128,30,128,30,192,30,224, + 60,240,120,255,240,31,192,16,30,60,17,0,0,3,0,7, + 0,15,0,15,0,15,0,15,0,15,0,15,0,63,255,255, + 255,15,4,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,1,7,135,7,254,3,240,24,22,66,25,1,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,23,22,66,24,0,0,255,192,254,62,0,60,30,0,56, + 30,0,48,15,0,112,15,0,112,7,0,96,7,128,224,7, + 128,192,3,193,192,3,193,192,1,193,128,1,227,128,1,227, + 0,0,243,0,0,247,0,0,118,0,0,126,0,0,126,0, + 0,60,0,0,60,0,0,16,0,33,22,110,34,0,0,255, + 192,96,63,128,62,0,224,15,0,30,0,224,14,0,30,0, + 240,14,0,14,1,240,12,0,15,1,240,12,0,15,1,248, + 28,0,7,3,248,28,0,7,3,56,24,0,7,131,60,24, + 0,3,135,28,56,0,3,134,30,48,0,3,198,30,48,0, + 1,206,14,112,0,1,204,15,96,0,1,252,15,96,0,1, + 252,7,96,0,0,248,7,224,0,0,248,7,192,0,0,240, + 3,192,0,0,112,3,192,0,0,96,3,0,0,24,22,66, + 24,0,0,127,227,254,127,227,254,31,128,248,15,128,224,7, + 128,192,3,193,192,1,227,128,0,247,0,0,254,0,0,124, + 0,0,60,0,0,62,0,0,127,0,0,239,0,1,199,128, + 3,131,192,3,1,224,7,0,240,14,0,248,62,0,252,255, + 131,255,255,131,255,24,33,99,24,255,245,127,224,255,31,0, + 62,15,0,28,15,0,24,7,128,56,7,128,56,3,128,48, + 3,192,112,3,192,96,1,224,224,1,224,224,0,224,192,0, + 241,192,0,241,192,0,121,128,0,123,128,0,59,0,0,63, + 0,0,63,0,0,30,0,0,30,0,0,12,0,0,12,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,112,0,0, + 224,0,63,192,0,127,128,0,255,0,0,124,0,0,17,22, + 66,21,2,0,127,255,128,127,255,128,96,15,0,96,15,0, + 64,30,0,64,60,0,0,60,0,0,120,0,0,240,0,0, + 240,0,1,224,0,3,192,0,3,192,0,7,128,0,15,0, + 0,14,0,0,30,0,128,60,0,128,120,0,128,120,1,128, + 255,255,128,255,255,128,13,45,90,16,2,249,0,8,0,56, + 0,112,1,224,1,192,3,128,3,128,7,128,7,128,7,128, + 7,128,7,128,7,192,3,192,3,192,3,192,3,192,3,192, + 3,128,7,128,7,0,30,0,126,0,255,0,7,128,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,7,192,7,128, + 7,128,7,128,7,128,7,128,7,128,3,128,3,192,1,192, + 0,224,0,120,0,24,4,49,49,11,4,246,112,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,224,13,45,90, + 16,1,249,192,0,240,0,56,0,28,0,30,0,14,0,15, + 0,15,0,15,0,15,0,15,0,15,0,31,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,15,0,7,240,3, + 248,3,192,7,0,15,0,14,0,30,0,30,0,30,0,30, + 0,30,0,31,0,15,0,15,0,15,0,15,0,15,0,14, + 0,30,0,28,0,56,0,112,0,224,0,128,0,21,8,24, + 23,1,11,7,128,8,15,224,24,31,240,16,63,252,48,49, + 255,224,96,127,192,64,31,128,192,15,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,11, + 0,0,6,35,35,13,3,243,56,124,252,252,252,248,112,0, + 16,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 120,120,120,120,120,124,124,124,124,120,96,18,30,90,23,2, + 255,0,96,0,0,96,0,0,96,0,0,96,0,0,255,0, + 3,255,128,15,255,192,30,99,128,60,97,128,56,97,0,120, + 96,0,112,96,0,240,96,0,240,96,0,240,96,0,240,96, + 0,240,96,0,240,96,0,248,96,0,120,96,0,124,96,192, + 62,97,128,63,231,128,31,255,0,15,252,0,3,248,0,0, + 96,0,0,96,0,0,96,0,0,96,0,19,29,87,23,2, + 0,0,127,0,1,255,224,3,131,224,7,1,192,6,0,192, + 14,0,192,14,0,192,30,0,64,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,255,248,0,255,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 28,0,0,28,0,32,28,0,32,24,0,96,56,0,224,63, + 255,224,127,255,224,192,255,224,15,15,30,23,4,7,128,2, + 192,6,103,204,63,248,56,56,112,28,96,12,96,12,96,12, + 96,12,48,24,56,56,127,252,231,206,192,6,25,28,112,23, + 254,0,126,0,255,128,254,0,63,128,31,0,30,0,15,128, + 60,0,7,192,120,0,3,192,112,0,3,224,240,0,1,224, + 224,0,0,241,224,0,0,241,192,0,0,123,192,0,0,127, + 128,0,0,63,0,0,0,63,0,0,0,30,0,0,0,30, + 0,0,15,255,252,0,15,255,252,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,127,128,0,1,255, + 224,0,4,49,49,11,4,246,112,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,224,0,0, + 0,0,0,112,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,224,19,34,102,24,2,0,1, + 248,0,7,254,0,30,31,0,60,7,0,60,6,0,60,0, + 0,62,0,0,63,0,0,31,128,0,31,224,0,31,248,0, + 63,252,0,121,255,0,240,127,128,240,63,192,240,15,192,240, + 7,224,248,3,224,124,1,224,126,1,224,63,129,192,31,225, + 192,7,251,128,3,255,0,0,255,0,0,63,128,0,15,128, + 16,7,128,16,7,128,24,7,128,28,7,0,30,15,0,31, + 254,0,3,240,0,15,5,10,19,2,27,112,14,240,30,240, + 30,240,30,224,28,30,30,120,34,2,0,0,31,224,0,0, + 255,252,0,1,224,30,0,7,128,7,128,14,0,1,192,28, + 3,240,224,24,15,252,96,48,60,60,48,112,112,8,56,96, + 224,0,24,97,224,0,24,193,224,0,12,195,192,0,12,195, + 192,0,12,195,192,0,12,195,192,0,12,195,192,0,12,195, + 192,0,12,195,224,0,12,97,224,0,24,97,240,8,24,112, + 248,12,56,48,124,48,48,24,63,224,96,28,15,128,224,14, + 0,1,192,7,128,7,128,1,224,30,0,0,255,252,0,0, + 31,224,0,11,15,30,12,1,14,15,0,31,0,51,128,97, + 128,97,128,3,128,29,128,97,128,193,128,193,128,239,128,253, + 224,121,128,255,192,255,192,18,21,63,23,2,0,0,128,64, + 1,128,192,3,1,128,7,3,0,14,7,0,14,14,0,28, + 30,0,60,60,0,120,60,0,240,120,0,240,120,0,248,120, + 0,120,60,0,60,60,0,28,30,0,14,14,0,14,7,0, + 7,3,0,3,1,128,1,128,192,0,128,64,20,10,30,23, + 1,4,127,255,240,255,255,240,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,96, + 14,2,4,16,1,11,127,252,255,248,15,17,34,17,1,17, + 7,192,31,240,56,56,96,12,79,132,196,70,132,66,132,194, + 135,130,133,130,132,130,196,198,68,100,106,60,56,56,31,240, + 7,192,16,2,4,24,4,28,127,255,255,254,11,11,22,17, + 3,18,15,0,63,192,113,224,96,224,224,224,224,224,224,224, + 224,192,241,128,127,0,62,0,17,22,66,20,1,3,0,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,0,0,0,0,0,0,0,0,0,127,255,128,255,255,128, + 13,17,34,17,2,15,7,192,31,240,112,248,96,120,224,120, + 0,120,0,112,0,224,1,224,3,192,7,128,15,0,30,0, + 60,8,120,24,255,248,255,248,14,18,36,16,1,14,15,128, + 63,224,113,240,224,240,192,240,0,240,1,224,7,128,15,224, + 1,240,0,120,0,60,0,60,0,60,128,120,224,248,63,224, + 15,128,10,10,20,15,5,25,7,128,7,192,15,0,15,0, + 30,0,60,0,56,0,112,0,96,0,192,0,25,33,132,26, + 1,245,6,0,24,0,254,0,248,0,126,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,31,0, + 248,0,31,1,248,0,31,131,248,0,31,255,121,0,27,254, + 127,128,25,252,126,0,24,240,56,0,24,0,0,0,24,0, + 0,0,24,0,0,0,28,0,0,0,28,0,0,0,28,0, + 0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0, + 0,0,24,0,0,0,23,36,108,26,1,250,1,255,254,15, + 255,254,31,7,252,60,7,112,120,7,112,120,7,112,240,7, + 112,240,7,112,240,7,112,240,7,112,240,7,112,248,7,112, + 120,7,112,124,7,112,62,7,112,31,135,112,15,255,112,1, + 255,112,0,7,112,0,7,112,0,7,112,0,7,112,0,7, + 112,0,7,112,0,7,112,0,7,112,0,7,112,0,7,112, + 0,7,112,0,7,112,0,7,112,0,7,112,0,7,112,0, + 7,112,0,31,248,0,63,254,4,5,5,7,2,14,112,240, + 240,240,224,8,10,10,11,2,246,24,56,48,62,127,15,15, + 30,120,224,13,17,34,16,2,15,3,128,31,128,255,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,15,192,127,248,12,15,30,14,1, + 14,15,128,63,192,49,224,96,96,192,112,192,48,192,48,192, + 48,224,48,224,96,120,192,63,128,31,0,255,240,255,240,18, + 21,63,23,3,0,64,64,0,224,96,0,96,48,0,48,24, + 0,56,28,0,28,14,0,14,15,0,15,7,128,7,135,128, + 7,195,192,3,195,192,7,195,192,7,135,128,15,7,128,30, + 15,0,28,14,0,56,28,0,48,56,0,112,48,0,96,96, + 0,192,64,0,24,29,87,28,2,0,4,0,4,60,0,14, + 204,0,24,12,0,56,12,0,48,12,0,112,12,0,224,12, + 0,192,12,1,192,12,3,128,12,3,0,12,7,0,12,6, + 0,127,142,0,0,28,0,0,24,4,0,56,28,0,112,28, + 0,96,44,0,224,108,1,192,76,1,192,140,3,129,12,3, + 3,12,7,3,255,14,7,254,12,0,12,28,0,12,56,0, + 127,24,29,87,28,2,0,4,0,6,60,0,14,204,0,28, + 12,0,24,12,0,56,12,0,112,12,0,112,12,0,224,12, + 0,192,12,1,192,12,3,128,12,3,0,12,7,0,127,142, + 0,0,14,0,0,28,60,0,24,255,0,57,199,0,115,131, + 0,99,3,0,224,2,1,192,4,1,128,8,3,128,16,7, + 0,32,7,0,65,14,0,129,12,1,255,28,1,255,25,29, + 116,28,1,0,15,128,3,0,31,192,7,0,49,192,14,0, + 112,192,12,0,0,192,28,0,1,128,24,0,15,0,56,0, + 1,192,112,0,0,192,96,0,0,192,224,0,0,193,192,0, + 0,193,128,0,193,195,128,0,127,135,0,0,30,7,0,0, + 0,14,2,0,0,12,14,0,0,28,14,0,0,56,22,0, + 0,48,38,0,0,112,102,0,0,224,198,0,0,224,134,0, + 1,193,134,128,3,131,255,0,3,128,6,0,7,0,6,0, + 6,0,6,0,14,0,63,128,17,35,105,21,2,243,0,224, + 0,1,240,0,3,240,0,3,240,0,3,224,0,1,192,0, + 0,0,0,0,0,0,0,0,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,7,0,0,15,0,0,30,0,0,60,0,0, + 60,0,0,120,0,0,120,0,0,240,0,0,240,3,128,240, + 7,128,240,7,128,240,7,128,248,15,0,120,15,0,126,30, + 0,63,248,0,15,224,0,28,41,164,29,0,0,0,128,0, + 0,1,192,0,0,3,240,0,0,1,248,0,0,0,124,0, + 0,0,31,0,0,0,7,128,0,0,1,192,0,0,0,128, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,7,0, + 0,0,15,0,0,0,15,0,0,0,31,128,0,0,31,128, + 0,0,27,128,0,0,59,192,0,0,57,192,0,0,49,224, + 0,0,113,224,0,0,112,224,0,0,96,240,0,0,224,240, + 0,0,224,112,0,0,192,120,0,1,192,120,0,1,192,56, + 0,1,255,252,0,3,255,252,0,3,128,30,0,3,0,30, + 0,7,0,30,0,7,0,15,0,6,0,15,0,14,0,15, + 0,14,0,7,128,12,0,7,128,62,0,7,192,255,192,63, + 240,28,41,164,29,0,0,0,0,32,0,0,0,56,0,0, + 0,252,0,0,1,248,0,0,3,224,0,0,15,128,0,0, + 30,0,0,0,56,0,0,0,32,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,7,0,0,0,15,0,0,0, + 15,0,0,0,31,128,0,0,31,128,0,0,27,128,0,0, + 59,192,0,0,57,192,0,0,49,224,0,0,113,224,0,0, + 112,224,0,0,96,240,0,0,224,240,0,0,224,112,0,0, + 192,120,0,1,192,120,0,1,192,56,0,1,255,252,0,3, + 255,252,0,3,128,30,0,3,0,30,0,7,0,30,0,7, + 0,15,0,6,0,15,0,14,0,15,0,14,0,7,128,12, + 0,7,128,62,0,7,192,255,192,63,240,28,41,164,29,0, + 0,0,6,0,0,0,15,0,0,0,31,128,0,0,63,192, + 0,0,121,224,0,0,240,240,0,1,192,56,0,1,128,24, + 0,1,0,16,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,28,39,156,29,0,0,0,16,8,0,0, + 124,12,0,0,254,28,0,1,255,248,0,1,135,240,0,3, + 3,224,0,2,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,7,0,0,0,15,0,0,0,15,0,0,0, + 31,128,0,0,31,128,0,0,27,128,0,0,59,192,0,0, + 57,192,0,0,49,224,0,0,113,224,0,0,112,224,0,0, + 96,240,0,0,224,240,0,0,224,112,0,0,192,120,0,1, + 192,120,0,1,192,56,0,1,255,252,0,3,255,252,0,3, + 128,30,0,3,0,30,0,7,0,30,0,7,0,15,0,6, + 0,15,0,14,0,15,0,14,0,7,128,12,0,7,128,62, + 0,7,192,255,192,63,240,28,38,152,29,0,0,0,128,32, + 0,0,224,56,0,1,224,120,0,1,224,120,0,1,224,120, + 0,0,128,32,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,28,42,168,29,0,0,0,2,0,0,0, + 15,128,0,0,31,192,0,0,24,192,0,0,48,192,0,0, + 48,192,0,0,48,192,0,0,63,128,0,0,31,0,0,0, + 8,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 7,0,0,0,15,0,0,0,15,0,0,0,31,128,0,0, + 31,128,0,0,27,128,0,0,59,192,0,0,57,192,0,0, + 49,224,0,0,113,224,0,0,112,224,0,0,96,240,0,0, + 224,240,0,0,224,112,0,0,192,120,0,1,192,120,0,1, + 192,56,0,1,255,252,0,3,255,252,0,3,128,30,0,3, + 0,30,0,7,0,30,0,7,0,15,0,6,0,15,0,14, + 0,15,0,14,0,7,128,12,0,7,128,62,0,7,192,255, + 192,63,240,36,30,150,37,0,0,0,127,255,255,192,0,31, + 255,255,224,0,7,252,0,192,0,7,60,0,192,0,7,60, + 0,192,0,14,60,0,192,0,14,60,0,0,0,30,60,0, + 0,0,28,60,0,0,0,28,60,0,0,0,60,60,0,0, + 0,56,60,0,0,0,120,60,0,0,0,127,255,255,0,0, + 127,255,255,0,0,240,60,6,0,0,224,60,0,0,1,224, + 60,0,0,1,192,60,0,0,1,192,60,0,0,3,128,60, + 0,0,3,128,60,0,0,7,128,60,0,0,7,0,60,0, + 0,7,0,60,0,16,14,0,60,0,48,14,0,60,0,48, + 30,0,62,0,112,62,0,127,255,224,255,193,255,255,224,22, + 40,120,26,2,246,0,31,224,0,255,252,1,192,252,7,128, + 56,14,0,16,14,0,0,28,0,0,56,0,0,56,0,0, + 120,0,0,112,0,0,112,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,248,0,0,120,0,0,124,0,0,60,0,0,62,0,8, + 31,0,60,15,128,240,15,255,224,3,255,128,0,254,0,0, + 24,0,0,16,0,0,28,0,0,62,0,0,63,0,0,15, + 0,0,15,0,0,30,0,0,120,0,1,192,0,21,41,123, + 24,1,0,4,0,0,14,0,0,31,0,0,15,192,0,3, + 224,0,0,240,0,0,60,0,0,14,0,0,4,0,0,0, + 0,0,0,0,255,255,224,127,255,240,30,0,96,30,0,96, + 30,0,96,30,0,96,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,128,31,255, + 128,30,3,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,8,30, + 0,24,30,0,24,31,0,56,127,255,240,255,255,240,21,41, + 123,24,1,0,0,1,0,0,3,192,0,7,224,0,15,192, + 0,63,0,0,124,0,0,240,0,1,192,0,1,0,0,0, + 0,0,0,0,0,255,255,224,127,255,240,30,0,96,30,0, + 96,30,0,96,30,0,96,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,31,255,128,31, + 255,128,30,3,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,8, + 30,0,24,30,0,24,31,0,56,127,255,240,255,255,240,21, + 41,123,24,1,0,0,48,0,0,120,0,0,252,0,1,254, + 0,3,207,0,7,7,0,14,1,128,28,0,192,16,0,128, + 0,0,0,0,0,0,255,255,224,127,255,240,30,0,96,30, + 0,96,30,0,96,30,0,96,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,31,255,128, + 31,255,128,30,3,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 8,30,0,24,30,0,24,31,0,56,127,255,240,255,255,240, + 21,38,114,24,1,0,4,1,0,15,3,192,15,3,192,15, + 3,192,14,3,128,4,1,0,0,0,0,0,0,0,255,255, + 224,127,255,240,30,0,96,30,0,96,30,0,96,30,0,96, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,31,255,128,31,255,128,30,3,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,8,30,0,24,30,0,24,31, + 0,56,127,255,240,255,255,240,13,41,82,14,255,0,32,0, + 112,0,252,0,126,0,31,0,7,128,1,224,0,112,0,32, + 0,0,0,0,31,248,15,240,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,240,31,248, + 13,41,82,14,2,0,0,64,0,112,1,248,3,240,7,192, + 31,0,60,0,112,0,64,0,0,0,0,0,255,192,127,128, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,127,128,255,192,15,41,82,14,255,0,1,128, + 3,192,7,224,15,240,30,120,56,60,112,12,224,6,64,4, + 0,0,0,0,31,248,15,240,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,240,31,248, + 14,38,76,14,0,0,64,16,112,28,240,60,240,60,224,56, + 64,16,0,0,0,0,63,240,31,224,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,31,224, + 63,240,25,30,120,28,1,0,7,254,0,0,255,255,192,0, + 127,3,240,0,15,0,248,0,15,0,124,0,15,0,62,0, + 15,0,30,0,15,0,31,0,15,0,15,0,15,0,15,0, + 15,0,15,128,15,0,7,128,15,0,7,128,15,0,7,128, + 255,254,7,128,255,252,7,128,15,0,7,128,15,0,7,128, + 15,0,7,128,15,0,7,0,15,0,15,0,15,0,15,0, + 15,0,30,0,15,0,30,0,15,0,60,0,15,0,124,0, + 15,0,248,0,15,3,224,0,31,255,192,0,127,254,0,0, + 27,39,156,31,2,0,0,32,16,0,0,124,12,0,0,254, + 24,0,1,255,240,0,3,15,240,0,3,3,224,0,2,1, + 0,0,0,0,0,0,0,0,0,0,252,0,63,224,124,0, + 15,128,30,0,7,0,31,0,7,0,31,0,7,0,31,128, + 7,0,31,192,7,0,29,192,7,0,28,224,7,0,28,240, + 7,0,28,120,7,0,28,56,7,0,28,60,7,0,28,30, + 7,0,28,14,7,0,28,15,7,0,28,7,135,0,28,7, + 135,0,28,3,199,0,28,1,231,0,28,1,231,0,28,0, + 247,0,28,0,127,0,28,0,127,0,28,0,63,0,28,0, + 31,0,28,0,31,0,28,0,15,0,62,0,7,0,255,128, + 3,0,25,41,164,29,2,0,2,0,0,0,3,128,0,0, + 7,192,0,0,7,224,0,0,1,248,0,0,0,124,0,0, + 0,30,0,0,0,7,128,0,0,1,0,0,0,0,0,0, + 0,0,0,0,0,63,0,0,0,255,224,0,3,193,240,0, + 7,0,248,0,14,0,124,0,28,0,62,0,60,0,30,0, + 56,0,31,0,120,0,15,0,120,0,15,0,112,0,15,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 248,0,7,0,120,0,15,0,120,0,15,0,124,0,14,0, + 60,0,28,0,62,0,28,0,31,0,56,0,15,128,112,0, + 7,193,224,0,3,255,128,0,0,254,0,0,25,41,164,29, + 2,0,0,0,128,0,0,0,224,0,0,1,240,0,0,7, + 240,0,0,15,192,0,0,30,0,0,0,56,0,0,0,224, + 0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,63, + 0,0,0,255,224,0,3,193,240,0,7,0,248,0,14,0, + 124,0,28,0,62,0,60,0,30,0,56,0,31,0,120,0, + 15,0,120,0,15,0,112,0,15,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,248,0,7,0,120,0, + 15,0,120,0,15,0,124,0,14,0,60,0,28,0,62,0, + 28,0,31,0,56,0,15,128,112,0,7,193,224,0,3,255, + 128,0,0,254,0,0,25,41,164,29,2,0,0,28,0,0, + 0,62,0,0,0,126,0,0,0,127,0,0,0,227,128,0, + 1,193,192,0,3,128,224,0,6,0,112,0,4,0,32,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,255,224,0, + 3,193,240,0,7,0,248,0,14,0,124,0,28,0,62,0, + 60,0,30,0,56,0,31,0,120,0,15,0,120,0,15,0, + 112,0,15,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,248,0,7,0,120,0,15,0,120,0,15,0, + 124,0,14,0,60,0,28,0,62,0,28,0,31,0,56,0, + 15,128,112,0,7,193,224,0,3,255,128,0,0,254,0,0, + 25,39,156,29,2,0,0,64,32,0,1,248,48,0,3,252, + 48,0,3,255,224,0,6,31,192,0,4,15,128,0,12,2, + 0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,255, + 224,0,3,193,240,0,7,0,248,0,14,0,124,0,28,0, + 62,0,60,0,30,0,56,0,31,0,120,0,15,0,120,0, + 15,0,112,0,15,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,248,0,7,0,120,0,15,0,120,0, + 15,0,124,0,14,0,60,0,28,0,62,0,28,0,31,0, + 56,0,15,128,112,0,7,193,224,0,3,255,128,0,0,254, + 0,0,25,38,152,29,2,0,1,0,64,0,3,128,224,0, + 3,128,224,0,7,129,224,0,3,128,224,0,2,0,128,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,255,224,0, + 3,193,240,0,7,0,248,0,14,0,124,0,28,0,62,0, + 60,0,30,0,56,0,31,0,120,0,15,0,120,0,15,0, + 112,0,15,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,248,0,7,0,120,0,15,0,120,0,15,0, + 124,0,14,0,60,0,28,0,62,0,28,0,31,0,56,0, + 15,128,112,0,7,193,224,0,3,255,128,0,0,254,0,0, + 15,14,28,20,2,6,96,6,240,14,120,28,60,56,30,112, + 15,224,7,192,7,192,15,224,30,112,60,56,120,28,240,14, + 96,6,25,31,124,29,2,255,0,63,7,128,1,255,207,0, + 3,193,254,0,7,0,126,0,14,0,60,0,28,0,126,0, + 56,0,126,0,56,0,255,0,120,1,239,0,120,1,239,0, + 112,3,207,128,240,7,135,128,240,7,7,128,240,15,7,128, + 240,30,7,128,240,60,7,128,240,60,7,128,240,120,7,128, + 240,240,7,128,240,224,7,0,121,224,7,0,123,192,15,0, + 123,128,14,0,63,128,12,0,63,0,28,0,30,0,56,0, + 31,0,112,0,63,193,224,0,121,255,128,0,240,126,0,0, + 192,0,0,0,27,41,164,31,2,0,0,128,0,0,1,192, + 0,0,3,240,0,0,1,248,0,0,0,124,0,0,0,30, + 0,0,0,7,128,0,0,1,192,0,0,0,128,0,0,0, + 0,0,0,0,0,0,255,192,127,224,127,128,63,192,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 30,0,15,0,30,0,15,0,30,0,7,128,60,0,7,192, + 120,0,3,224,240,0,1,255,224,0,0,63,128,0,27,41, + 164,31,2,0,0,0,32,0,0,0,120,0,0,0,252,0, + 0,1,248,0,0,3,224,0,0,15,128,0,0,30,0,0, + 0,56,0,0,0,32,0,0,0,0,0,0,0,0,0,0, + 255,192,127,224,127,128,63,192,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,30,0,15,0,30,0, + 15,0,30,0,7,128,60,0,7,192,120,0,3,224,240,0, + 1,255,224,0,0,63,128,0,27,41,164,31,2,0,0,6, + 0,0,0,15,0,0,0,31,128,0,0,63,192,0,0,121, + 224,0,0,224,240,0,1,192,48,0,3,128,24,0,1,0, + 16,0,0,0,0,0,0,0,0,0,255,192,127,224,127,128, + 63,192,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,30,0,15,0,30,0,15,0,30,0,7,128, + 60,0,7,192,120,0,3,224,240,0,1,255,224,0,0,63, + 128,0,27,38,152,31,2,0,0,128,32,0,0,224,56,0, + 1,224,120,0,1,224,120,0,1,192,112,0,0,128,32,0, + 0,0,0,0,0,0,0,0,255,192,127,224,127,128,63,192, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,30,0,15,0,30,0,15,0,30,0,7,128,60,0, + 7,192,120,0,3,224,240,0,1,255,224,0,0,63,128,0, + 28,41,164,29,0,0,0,0,32,0,0,0,56,0,0,0, + 252,0,0,1,248,0,0,3,224,0,0,7,128,0,0,30, + 0,0,0,56,0,0,0,32,0,0,0,0,0,0,0,0, + 0,0,252,0,63,240,254,0,63,240,31,0,15,128,15,0, + 7,0,15,128,14,0,7,192,14,0,3,192,28,0,3,224, + 60,0,1,224,56,0,0,240,120,0,0,248,112,0,0,120, + 224,0,0,125,224,0,0,61,192,0,0,63,192,0,0,31, + 128,0,0,31,128,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,63,192,0,0,255,240,0,21,30,90,25,2,0, + 255,224,0,127,128,0,30,0,0,30,0,0,30,0,0,30, + 0,0,31,254,0,31,255,128,30,15,192,30,3,224,30,1, + 240,30,0,248,30,0,120,30,0,120,30,0,120,30,0,120, + 30,0,120,30,0,120,30,0,240,30,0,240,30,1,224,31, + 7,192,30,255,128,30,124,0,30,0,0,30,0,0,30,0, + 0,30,0,0,127,128,0,255,224,0,25,36,144,27,1,0, + 0,31,128,0,0,127,224,0,1,195,240,0,3,128,248,0, + 7,0,120,0,7,0,124,0,14,0,60,0,14,0,60,0, + 14,0,60,0,30,0,60,0,30,0,60,0,30,0,120,0, + 30,1,248,0,30,7,240,0,30,15,192,0,30,31,0,0, + 30,60,0,0,30,60,0,0,30,60,0,0,30,62,0,0, + 30,63,0,0,30,31,192,0,30,15,240,0,30,3,252,0, + 30,0,254,0,30,0,127,0,30,0,31,128,30,0,15,128, + 30,0,7,128,30,32,7,128,30,48,7,128,30,48,7,0, + 30,56,15,0,30,60,30,0,62,63,252,0,254,7,224,0, + 20,35,105,22,2,0,30,0,0,62,0,0,31,0,0,15, + 0,0,7,128,0,3,192,0,1,192,0,0,224,0,0,96, + 0,0,48,0,0,0,0,0,0,0,0,0,0,1,248,0, + 15,254,0,28,30,0,120,15,0,112,15,0,240,15,0,128, + 15,0,0,15,0,0,15,0,0,255,0,7,255,0,31,143, + 0,62,15,0,120,15,0,248,15,0,240,15,0,240,15,0, + 240,31,0,240,63,0,120,239,32,127,143,240,30,7,128,20, + 35,105,22,2,0,0,15,0,0,31,0,0,30,0,0,60, + 0,0,56,0,0,112,0,0,112,0,0,224,0,1,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,1,248,0,15, + 254,0,28,30,0,120,15,0,112,15,0,240,15,0,128,15, + 0,0,15,0,0,15,0,0,255,0,7,255,0,31,143,0, + 62,15,0,120,15,0,248,15,0,240,15,0,240,15,0,240, + 31,0,240,63,0,120,239,32,127,143,240,30,7,128,20,34, + 102,22,2,0,0,224,0,1,240,0,3,240,0,7,56,0, + 6,28,0,12,14,0,24,6,0,48,3,0,32,1,128,0, + 0,0,0,0,0,0,0,0,1,248,0,15,254,0,28,30, + 0,120,15,0,112,15,0,240,15,0,128,15,0,0,15,0, + 0,15,0,0,255,0,7,255,0,31,143,0,62,15,0,120, + 15,0,248,15,0,240,15,0,240,15,0,240,31,0,240,63, + 0,120,239,32,127,143,240,30,7,128,20,32,96,22,2,0, + 7,0,128,15,193,128,31,193,0,63,243,0,48,254,0,96, + 56,0,0,0,0,0,0,0,0,0,0,0,0,0,1,248, + 0,15,254,0,28,30,0,120,15,0,112,15,0,240,15,0, + 128,15,0,0,15,0,0,15,0,0,255,0,7,255,0,31, + 143,0,62,15,0,120,15,0,248,15,0,240,15,0,240,15, + 0,240,31,0,240,63,0,120,239,32,127,143,240,30,7,128, + 20,32,96,22,2,0,28,7,0,28,7,0,60,15,0,60, + 15,0,24,6,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,248,0,15,254,0,28,30,0,120,15,0, + 112,15,0,240,15,0,128,15,0,0,15,0,0,15,0,0, + 255,0,7,255,0,31,143,0,62,15,0,120,15,0,248,15, + 0,240,15,0,240,15,0,240,31,0,240,63,0,120,239,32, + 127,143,240,30,7,128,20,34,102,22,2,0,0,240,0,1, + 248,0,3,24,0,3,24,0,6,24,0,6,24,0,7,56, + 0,3,240,0,1,192,0,0,0,0,0,0,0,0,0,0, + 1,248,0,15,254,0,28,30,0,120,15,0,112,15,0,240, + 15,0,128,15,0,0,15,0,0,15,0,0,255,0,7,255, + 0,31,143,0,62,15,0,120,15,0,248,15,0,240,15,0, + 240,15,0,240,31,0,240,63,0,120,239,32,127,143,240,30, + 7,128,29,22,88,33,2,0,1,248,31,128,7,252,127,192, + 28,62,225,224,56,31,192,240,112,15,128,112,240,15,128,120, + 240,15,0,120,192,15,0,120,0,127,255,248,3,255,255,240, + 15,143,0,0,30,15,0,0,60,15,0,0,120,15,0,0, + 240,15,0,0,240,15,128,0,240,31,128,24,240,63,192,48, + 248,243,224,240,127,227,255,192,127,128,255,128,30,0,126,0, + 18,32,96,21,2,246,0,127,0,1,255,192,7,7,192,14, + 1,128,28,0,128,56,0,0,120,0,0,112,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,248,0,0,120,1,0,124,3,128,62,7,0,31, + 254,0,31,248,0,7,240,0,0,192,0,0,128,0,0,224, + 0,0,240,0,1,248,0,0,120,0,0,120,0,0,240,0, + 3,192,0,14,0,0,18,35,105,22,2,0,14,0,0,31, + 0,0,15,128,0,7,128,0,3,192,0,1,192,0,0,224, + 0,0,112,0,0,48,0,0,24,0,0,0,0,0,0,0, + 0,0,0,0,248,0,7,254,0,14,15,0,28,7,128,56, + 7,128,56,3,192,112,3,192,112,3,192,255,255,192,255,255, + 128,240,0,0,240,0,0,240,0,0,240,0,0,248,0,0, + 120,0,0,120,0,0,124,0,192,62,1,128,31,7,0,15, + 254,0,3,248,0,18,35,105,22,2,0,0,7,0,0,15, + 128,0,15,0,0,30,0,0,60,0,0,56,0,0,112,0, + 0,96,0,0,192,0,0,128,0,0,0,0,0,0,0,0, + 0,0,0,248,0,7,254,0,14,15,0,28,7,128,56,7, + 128,56,3,192,112,3,192,112,3,192,255,255,192,255,255,128, + 240,0,0,240,0,0,240,0,0,240,0,0,248,0,0,120, + 0,0,120,0,0,124,0,192,62,1,128,31,7,0,15,254, + 0,3,248,0,18,34,102,22,2,0,0,240,0,0,240,0, + 1,248,0,3,156,0,7,14,0,14,6,0,12,3,0,24, + 1,128,16,0,128,0,0,0,0,0,0,0,0,0,0,248, + 0,7,254,0,14,15,0,28,7,128,56,7,128,56,3,192, + 112,3,192,112,3,192,255,255,192,255,255,128,240,0,0,240, + 0,0,240,0,0,240,0,0,248,0,0,120,0,0,120,0, + 0,124,0,192,62,1,128,31,7,0,15,254,0,3,248,0, + 18,32,96,22,2,0,14,3,128,30,7,128,30,7,128,30, + 7,128,28,7,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,248,0,7,254,0,14,15,0,28,7,128, + 56,7,128,56,3,192,112,3,192,112,3,192,255,255,192,255, + 255,128,240,0,0,240,0,0,240,0,0,240,0,0,248,0, + 0,120,0,0,120,0,0,124,0,192,62,1,128,31,7,0, + 15,254,0,3,248,0,12,35,70,13,0,0,240,0,248,0, + 120,0,60,0,28,0,14,0,7,0,3,0,1,128,0,128, + 0,0,0,0,0,0,1,128,31,128,63,128,15,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,15,192, + 63,240,12,35,70,13,2,0,0,224,1,240,3,224,3,192, + 7,128,7,0,14,0,28,0,24,0,48,0,0,0,0,0, + 0,0,6,0,126,0,254,0,62,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,63,0,255,192,15,34, + 68,13,255,0,3,128,7,192,7,224,14,240,28,112,56,56, + 112,12,96,6,192,2,0,0,0,0,0,0,0,192,15,192, + 31,192,7,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,7,224,31,248,14,32,64,13,0,0,96,24, + 240,60,240,60,224,56,224,56,0,0,0,0,0,0,0,0, + 0,0,1,128,31,128,63,128,15,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,15,192,63,240,20,34, + 102,24,2,0,3,0,0,31,192,128,31,225,224,1,255,192, + 0,126,0,0,252,0,3,254,0,15,143,0,4,7,128,0, + 3,128,0,3,192,0,1,192,1,241,224,7,255,224,14,31, + 224,28,7,240,56,3,240,56,1,240,120,1,240,112,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 0,224,248,1,224,120,1,192,124,1,192,124,3,128,62,7, + 0,31,14,0,15,252,0,3,240,0,23,32,96,26,2,0, + 1,224,32,3,240,48,7,248,96,7,252,192,14,63,128,8, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7, + 192,254,15,224,62,49,224,30,96,240,30,192,240,30,128,240, + 31,0,240,31,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,127,131,248,255,199,254, + 20,35,105,24,2,0,15,0,0,15,0,0,7,128,0,3, + 192,0,1,192,0,0,224,0,0,112,0,0,112,0,0,56, + 0,0,24,0,0,0,0,0,0,0,0,0,0,0,252,0, + 7,255,0,14,15,128,28,7,192,56,3,192,56,3,224,112, + 1,224,112,1,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,0,240,240,0,240,248,0,224,120,1,224,124,1,192, + 60,1,192,62,3,128,31,7,0,15,254,0,3,240,0,20, + 35,105,24,2,0,0,7,128,0,7,192,0,15,128,0,15, + 0,0,30,0,0,60,0,0,56,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,0,0,0,0,0,0,252,0,7, + 255,0,14,15,128,28,7,192,56,3,192,56,3,224,112,1, + 224,112,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,248,0,224,120,1,224,124,1,192,60, + 1,192,62,3,128,31,7,0,15,254,0,3,240,0,20,34, + 102,24,2,0,0,112,0,0,248,0,1,252,0,1,220,0, + 3,142,0,7,7,0,14,3,128,12,1,192,24,0,192,0, + 0,0,0,0,0,0,0,0,0,252,0,7,255,0,14,15, + 128,28,7,192,56,3,192,56,3,224,112,1,224,112,1,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,240, + 0,240,248,0,224,120,1,224,124,1,192,60,1,192,62,3, + 128,31,7,0,15,254,0,3,240,0,20,32,96,24,2,0, + 3,192,64,7,224,96,15,240,192,15,249,128,28,127,0,16, + 30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 0,7,255,0,14,15,128,28,7,192,56,3,192,56,3,224, + 112,1,224,112,1,240,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,248,0,224,120,1,224,124,1, + 192,60,1,192,62,3,128,31,7,0,15,254,0,3,240,0, + 20,32,96,24,2,0,6,1,128,15,3,192,15,3,192,14, + 3,128,14,3,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,0,7,255,0,14,15,128,28,7,192, + 56,3,192,56,3,224,112,1,224,112,1,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,248,0, + 224,120,1,224,124,1,192,60,1,192,62,3,128,31,7,0, + 15,254,0,3,240,0,17,15,45,20,1,6,0,224,0,1, + 224,0,1,224,0,1,192,0,0,0,0,0,0,0,0,0, + 0,127,255,128,255,255,128,0,0,0,0,0,0,0,224,0, + 1,224,0,1,224,0,1,192,0,20,24,72,24,2,255,0, + 0,48,1,248,112,7,254,224,14,15,192,28,7,192,56,3, + 224,56,7,224,112,15,224,112,28,240,240,24,240,240,56,240, + 240,112,240,240,224,240,240,192,240,241,192,240,243,128,224,255, + 0,224,126,1,192,126,1,192,62,3,128,63,7,0,119,254, + 0,225,248,0,128,0,0,24,35,105,25,1,0,3,128,0, + 7,192,0,3,192,0,1,224,0,0,240,0,0,112,0,0, + 56,0,0,24,0,0,12,0,0,4,0,0,0,0,0,0, + 0,0,0,0,6,0,112,254,7,240,126,7,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,1,240,31,2,240,15,12,255, + 15,248,252,3,224,112,24,35,105,25,1,0,0,1,192,0, + 3,224,0,7,192,0,7,128,0,15,0,0,14,0,0,28, + 0,0,56,0,0,48,0,0,96,0,0,0,0,0,0,0, + 0,0,0,6,0,112,254,7,240,126,7,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,1,240,31,2,240,15,12,255,15, + 248,252,3,224,112,24,34,102,25,1,0,0,56,0,0,124, + 0,0,126,0,0,231,0,1,195,0,3,129,128,3,0,192, + 6,0,96,12,0,32,0,0,0,0,0,0,0,0,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,24,32,96,25,1,0,3,0,192,7,129,224,7,129,224, + 7,129,224,7,1,192,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,6,0,112,254,7,240,126,7,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,1,240,31,2,240,15,12, + 255,15,248,252,3,224,112,24,46,138,24,255,245,0,0,240, + 0,0,248,0,1,224,0,3,224,0,3,192,0,7,128,0, + 7,0,0,14,0,0,12,0,0,24,0,0,0,0,0,0, + 0,0,0,0,127,224,255,31,0,62,15,0,28,15,0,24, + 7,128,56,7,128,56,3,128,48,3,192,112,3,192,96,1, + 224,224,1,224,224,0,224,192,0,241,192,0,241,192,0,121, + 128,0,123,128,0,59,0,0,63,0,0,63,0,0,30,0, + 0,30,0,0,12,0,0,12,0,0,28,0,0,24,0,0, + 56,0,0,112,0,0,112,0,0,224,0,63,192,0,127,128, + 0,255,0,0,124,0,0,21,47,141,25,2,245,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,15,0,28,63,192,28,99,224, + 28,193,224,29,129,240,31,0,240,31,0,248,30,0,248,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,120,30,0, + 120,30,0,112,30,0,112,30,0,224,30,0,224,31,129,192, + 31,195,128,31,255,0,30,124,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,63,0,0,255,224,0,24,43,129,24,255,245, + 0,192,48,1,192,112,1,224,120,3,192,240,1,128,96,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,224, + 255,31,0,62,15,0,28,15,0,24,7,128,56,7,128,56, + 3,128,48,3,192,112,3,192,96,1,224,224,1,224,224,0, + 224,192,0,241,192,0,241,192,0,121,128,0,123,128,0,59, + 0,0,63,0,0,63,0,0,30,0,0,30,0,0,12,0, + 0,12,0,0,28,0,0,24,0,0,56,0,0,112,0,0, + 112,0,0,224,0,63,192,0,127,128,0,255,0,0,124,0, + 0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 29 + Calculated Max Values w=20 h=46 x= 3 y=17 dx=23 dy= 0 ascent=38 len=138 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =29 descent= 0 + X Font ascent =29 descent= 0 + Max Font ascent =38 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30n[1252] U8G_SECTION(".progmem.u8g_font_gdr30n") = { + 0,71,68,232,239,29,0,0,0,0,42,57,0,38,248,29, + 0,18,20,60,21,2,17,0,192,0,1,192,0,1,192,0, + 1,192,0,193,193,0,240,195,192,248,207,192,124,223,0,15, + 252,0,3,224,0,3,224,0,15,252,0,60,223,0,248,207, + 128,240,195,128,64,193,128,1,192,0,1,192,0,1,192,0, + 1,128,0,17,17,51,20,1,5,0,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,255,255,128,255,255,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,128,0,7,13,13,11, + 2,249,8,60,254,254,30,30,30,28,28,56,48,96,64,14, + 2,4,16,1,11,127,252,255,248,6,6,6,11,3,255,56, + 124,252,252,248,112,20,46,138,23,1,248,0,0,48,0,0, + 240,0,0,240,0,0,224,0,1,224,0,1,192,0,1,192, + 0,3,192,0,3,128,0,7,128,0,7,128,0,7,0,0, + 15,0,0,15,0,0,14,0,0,30,0,0,28,0,0,28, + 0,0,60,0,0,56,0,0,120,0,0,120,0,0,112,0, + 0,240,0,0,224,0,0,224,0,1,224,0,1,192,0,3, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,14,0,0,30,0,0,30,0,0,28,0,0, + 60,0,0,60,0,0,56,0,0,120,0,0,112,0,0,240, + 0,0,192,0,0,19,29,87,23,2,0,1,248,0,7,252, + 0,14,30,0,28,15,0,24,7,128,56,7,128,56,3,192, + 112,3,192,112,3,192,112,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,192,120,1,192,120,3,192,120,3,128, + 60,3,128,60,3,0,30,7,0,15,14,0,7,252,0,3, + 240,0,17,29,87,23,3,0,0,96,0,1,224,0,15,224, + 0,127,224,0,255,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,3,240,0,63,254,0,127,255,128,17, + 29,87,22,2,0,1,248,0,7,254,0,28,31,0,56,15, + 0,120,15,128,112,7,128,240,7,128,224,7,128,0,7,128, + 0,7,128,0,15,0,0,15,0,0,30,0,0,30,0,0, + 60,0,0,120,0,0,240,0,0,240,0,1,224,0,3,192, + 0,7,128,0,15,0,0,15,0,0,30,0,128,60,0,128, + 120,0,128,240,1,128,255,255,128,255,255,128,18,29,87,22, + 1,0,1,248,0,7,254,0,30,31,0,60,15,0,56,7, + 128,120,7,128,112,7,128,0,7,128,0,7,0,0,15,0, + 0,30,0,0,60,0,0,248,0,3,254,0,0,63,0,0, + 15,128,0,7,128,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,7,128,128,7,128,224,15,0, + 120,62,0,63,252,0,7,224,0,19,29,87,23,1,0,0, + 3,0,0,15,0,0,31,0,0,63,0,0,127,0,0,127, + 0,0,239,0,0,207,0,1,207,0,3,143,0,3,143,0, + 7,15,0,14,15,0,14,15,0,28,15,0,24,15,0,56, + 15,0,112,15,0,112,15,0,255,255,224,255,255,192,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,63,128,1,255,224,18,29,87,23,2,0,0,0,128,0, + 1,128,31,255,0,31,254,0,24,0,0,24,0,0,24,0, + 0,24,0,0,56,0,0,56,0,0,56,0,0,63,240,0, + 63,252,0,120,63,0,32,15,0,0,7,128,0,7,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 128,0,7,128,128,7,128,224,15,0,120,62,0,63,252,0, + 7,240,0,18,29,87,23,3,0,0,7,0,0,63,0,0, + 248,0,1,224,0,3,192,0,15,0,0,14,0,0,30,0, + 0,60,0,0,56,0,0,120,0,0,120,248,0,119,254,0, + 254,31,0,248,15,128,240,7,128,240,7,192,240,3,192,240, + 3,192,240,3,192,240,3,192,248,3,192,120,3,128,120,3, + 128,60,7,128,60,7,0,31,14,0,15,252,0,3,240,0, + 19,27,81,23,2,0,127,255,192,127,255,224,96,1,192,64, + 3,192,192,3,128,0,3,128,0,7,0,0,7,0,0,14, + 0,0,14,0,0,28,0,0,28,0,0,56,0,0,56,0, + 0,56,0,0,112,0,0,112,0,0,224,0,0,224,0,1, + 192,0,1,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,15,0,0,28,0,0,18,29,87,22,2,0,3,248,0, + 15,254,0,28,31,0,56,15,0,48,7,128,112,7,128,112, + 7,128,112,7,128,112,7,0,120,15,0,62,30,0,31,188, + 0,15,240,0,3,252,0,7,254,0,30,63,0,60,15,128, + 120,7,192,112,7,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,128,120,7,128,124,7,0,62,14,0,31,252, + 0,7,224,0,19,30,90,23,2,255,1,248,0,7,254,0, + 14,31,0,28,15,128,56,7,128,120,3,192,112,3,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,248,1, + 224,120,3,224,124,7,224,62,13,224,31,249,224,7,225,192, + 0,3,192,0,3,192,0,7,128,0,7,128,0,15,0,0, + 30,0,0,60,0,0,120,0,0,240,0,3,224,0,31,128, + 0,56,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=40 h=49 x= 4 y=25 dx=41 dy= 0 ascent=39 len=195 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x=-5 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30r[8588] U8G_SECTION(".progmem.u8g_font_gdr30r") = { + 0,71,68,232,239,30,9,231,23,124,32,127,245,39,245,38, + 245,0,0,0,11,0,0,6,36,36,13,3,255,12,60,124, + 124,124,124,124,120,120,120,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,0,0,0,0,56,124,252,252,248, + 112,13,16,32,20,4,19,48,56,240,248,240,248,240,240,240, + 240,240,240,240,112,240,112,240,112,240,112,112,112,112,112,96, + 112,96,112,96,112,96,112,21,27,81,23,2,3,0,48,96, + 0,112,224,0,96,192,0,224,192,0,225,192,0,225,192,0, + 193,128,1,195,128,31,255,248,31,255,248,3,135,0,3,135, + 0,3,7,0,3,6,0,7,14,0,7,14,0,6,14,0, + 255,255,192,255,255,192,12,28,0,12,24,0,28,56,0,28, + 56,0,24,48,0,56,112,0,56,112,0,48,96,0,20,36, + 108,23,1,252,0,96,0,0,96,0,0,96,0,0,96,0, + 3,254,0,15,255,128,62,127,192,120,103,128,112,99,128,240, + 96,0,240,96,0,240,96,0,248,96,0,126,96,0,127,224, + 0,63,240,0,15,254,0,1,255,0,0,127,192,0,111,224, + 0,99,224,0,97,240,0,96,240,0,96,240,64,96,240,96, + 96,240,112,96,224,120,97,224,124,99,192,127,255,128,31,255, + 0,7,248,0,0,96,0,0,96,0,0,96,0,0,96,0, + 31,30,120,34,1,255,7,192,0,96,31,224,1,240,60,240, + 1,192,120,120,3,192,112,120,7,128,240,60,7,0,240,60, + 14,0,240,60,30,0,240,60,60,0,240,60,56,0,240,60, + 120,0,120,56,240,0,120,120,224,0,60,241,192,0,31,227, + 195,224,15,135,143,240,0,7,30,120,0,15,60,60,0,30, + 56,60,0,28,120,30,0,56,120,30,0,120,120,30,0,240, + 120,30,0,224,120,30,1,192,120,30,3,192,60,28,3,128, + 60,60,7,0,30,120,15,0,15,240,12,0,7,192,30,34, + 136,32,2,0,0,63,0,0,0,255,128,0,1,199,192,0, + 3,131,224,0,7,1,224,0,7,1,224,0,15,1,224,0, + 15,1,224,0,15,3,224,0,15,3,192,0,15,135,192,0, + 15,143,128,0,7,191,0,0,7,254,0,0,7,248,0,0, + 7,240,0,0,15,240,63,248,31,240,127,252,62,120,30,48, + 60,124,15,0,124,60,15,0,120,30,7,0,240,31,7,0, + 240,15,135,0,240,7,198,0,240,3,198,0,240,3,236,0, + 240,1,252,0,248,0,252,0,120,0,126,0,60,0,255,0, + 63,3,143,200,15,255,7,240,3,248,3,192,4,16,16,12, + 4,19,48,240,240,240,240,240,240,240,240,240,112,112,96,96, + 96,96,11,45,90,15,3,249,0,32,0,224,1,192,3,128, + 3,128,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 56,0,120,0,120,0,120,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,120,0,120,0,120,0,120,0,56,0,60,0,60,0, + 28,0,30,0,14,0,15,0,7,0,3,128,1,192,0,224, + 0,32,11,45,90,15,1,249,128,0,224,0,112,0,56,0, + 28,0,30,0,14,0,15,0,7,0,7,128,7,128,3,128, + 3,192,3,192,3,192,3,192,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,192,3,192,3,192,3,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,56,0,56,0,112,0,224,0, + 128,0,18,20,60,21,2,17,0,192,0,1,192,0,1,192, + 0,1,192,0,193,193,0,240,195,192,248,207,192,124,223,0, + 15,252,0,3,224,0,3,224,0,15,252,0,60,223,0,248, + 207,128,240,195,128,64,193,128,1,192,0,1,192,0,1,192, + 0,1,128,0,17,17,51,20,1,5,0,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,255,255,128,255,255,128,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,128,0,7,13,13, + 11,2,249,8,60,254,254,30,30,30,28,28,56,48,96,64, + 14,2,4,16,1,11,127,252,255,248,6,6,6,11,3,255, + 56,124,252,252,248,112,20,46,138,23,1,248,0,0,48,0, + 0,240,0,0,240,0,0,224,0,1,224,0,1,192,0,1, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,15,0,0,14,0,0,30,0,0,28,0,0, + 28,0,0,60,0,0,56,0,0,120,0,0,120,0,0,112, + 0,0,240,0,0,224,0,0,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0,7,128,0,7,128,0,7, + 0,0,15,0,0,14,0,0,30,0,0,30,0,0,28,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,112,0,0, + 240,0,0,192,0,0,19,29,87,23,2,0,1,248,0,7, + 252,0,14,30,0,28,15,0,24,7,128,56,7,128,56,3, + 192,112,3,192,112,3,192,112,3,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,192,120,1,192,120,3,192,120,3, + 128,60,3,128,60,3,0,30,7,0,15,14,0,7,252,0, + 3,240,0,17,29,87,23,3,0,0,96,0,1,224,0,15, + 224,0,127,224,0,255,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,3,240,0,63,254,0,127,255,128, + 17,29,87,22,2,0,1,248,0,7,254,0,28,31,0,56, + 15,0,120,15,128,112,7,128,240,7,128,224,7,128,0,7, + 128,0,7,128,0,15,0,0,15,0,0,30,0,0,30,0, + 0,60,0,0,120,0,0,240,0,0,240,0,1,224,0,3, + 192,0,7,128,0,15,0,0,15,0,0,30,0,128,60,0, + 128,120,0,128,240,1,128,255,255,128,255,255,128,18,29,87, + 22,1,0,1,248,0,7,254,0,30,31,0,60,15,0,56, + 7,128,120,7,128,112,7,128,0,7,128,0,7,0,0,15, + 0,0,30,0,0,60,0,0,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,7,128,128,7,128,224,15, + 0,120,62,0,63,252,0,7,224,0,19,29,87,23,1,0, + 0,3,0,0,15,0,0,31,0,0,63,0,0,127,0,0, + 127,0,0,239,0,0,207,0,1,207,0,3,143,0,3,143, + 0,7,15,0,14,15,0,14,15,0,28,15,0,24,15,0, + 56,15,0,112,15,0,112,15,0,255,255,224,255,255,192,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,63,128,1,255,224,18,29,87,23,2,0,0,0,128, + 0,1,128,31,255,0,31,254,0,24,0,0,24,0,0,24, + 0,0,24,0,0,56,0,0,56,0,0,56,0,0,63,240, + 0,63,252,0,120,63,0,32,15,0,0,7,128,0,7,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,128,0,7,128,128,7,128,224,15,0,120,62,0,63,252, + 0,7,240,0,18,29,87,23,3,0,0,7,0,0,63,0, + 0,248,0,1,224,0,3,192,0,15,0,0,14,0,0,30, + 0,0,60,0,0,56,0,0,120,0,0,120,248,0,119,254, + 0,254,31,0,248,15,128,240,7,128,240,7,192,240,3,192, + 240,3,192,240,3,192,240,3,192,248,3,192,120,3,128,120, + 3,128,60,7,128,60,7,0,31,14,0,15,252,0,3,240, + 0,19,27,81,23,2,0,127,255,192,127,255,224,96,1,192, + 64,3,192,192,3,128,0,3,128,0,7,0,0,7,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,56,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,224,0,0,224,0, + 1,192,0,1,192,0,3,192,0,7,128,0,7,128,0,15, + 0,0,15,0,0,28,0,0,18,29,87,22,2,0,3,248, + 0,15,254,0,28,31,0,56,15,0,48,7,128,112,7,128, + 112,7,128,112,7,128,112,7,0,120,15,0,62,30,0,31, + 188,0,15,240,0,3,252,0,7,254,0,30,63,0,60,15, + 128,120,7,192,112,7,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,128,120,7,128,124,7,0,62,14,0,31, + 252,0,7,224,0,19,30,90,23,2,255,1,248,0,7,254, + 0,14,31,0,28,15,128,56,7,128,120,3,192,112,3,192, + 240,3,224,240,1,224,240,1,224,240,1,224,240,1,224,248, + 1,224,120,3,224,124,7,224,62,13,224,31,249,224,7,225, + 192,0,3,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,30,0,0,60,0,0,120,0,0,240,0,3,224,0,31, + 128,0,56,0,0,6,23,23,11,3,255,56,124,252,252,248, + 112,0,0,0,0,0,0,0,0,0,0,0,56,124,252,252, + 248,112,7,29,29,11,2,249,28,62,126,126,124,56,0,0, + 0,0,0,0,0,0,0,0,8,60,254,254,30,30,30,28, + 28,56,48,96,64,19,15,45,21,1,6,0,0,96,0,3, + 192,0,31,192,0,127,0,3,252,0,31,224,0,127,0,0, + 124,0,0,254,0,0,63,192,0,7,240,0,1,254,0,0, + 63,192,0,7,224,0,1,128,19,9,27,21,1,9,127,255, + 224,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,127,255,224,255,255,192,19,15,45,21,1,6,48, + 0,0,252,0,0,127,128,0,15,240,0,3,254,0,0,127, + 128,0,15,224,0,3,192,0,31,192,0,255,0,3,248,0, + 31,192,0,127,0,0,120,0,0,192,0,0,17,36,108,21, + 2,255,3,248,0,15,254,0,60,63,0,120,15,0,120,15, + 128,240,7,128,240,7,128,240,7,128,224,7,128,0,7,128, + 0,15,0,0,15,0,0,30,0,0,30,0,0,60,0,0, + 120,0,0,112,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,3, + 224,0,7,224,0,7,224,0,7,192,0,3,128,0,36,39, + 195,39,1,248,0,0,255,128,0,0,7,255,224,0,0,31, + 1,248,0,0,120,0,62,0,0,224,0,31,0,1,192,0, + 15,0,7,128,0,7,128,7,0,0,3,192,14,0,0,1, + 192,28,0,124,33,224,28,1,255,96,224,56,3,135,224,224, + 56,7,3,224,224,120,14,1,224,240,112,14,1,224,112,112, + 30,1,224,112,240,28,1,224,112,240,60,1,224,112,240,60, + 1,224,112,240,60,1,224,112,240,60,1,224,112,240,60,1, + 224,112,240,60,1,224,96,248,60,1,224,224,248,62,1,224, + 192,120,30,1,224,192,120,31,3,225,128,124,15,5,225,0, + 60,15,141,242,0,62,7,248,252,0,31,1,224,112,0,31, + 0,0,0,0,15,128,0,0,0,7,192,0,1,0,3,240, + 0,3,128,1,248,0,14,0,0,127,0,252,0,0,31,255, + 240,0,0,3,255,0,0,28,30,120,29,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,24,30,90,27,0,0,7,254,0,255,255, + 192,111,7,224,15,1,240,15,0,248,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,112,15,0,240,15,1,224,15, + 7,192,15,255,192,15,255,240,15,1,248,15,0,124,15,0, + 62,15,0,30,15,0,31,15,0,15,15,0,15,15,0,15, + 15,0,15,15,0,14,15,0,30,15,0,60,15,0,248,63, + 255,240,127,255,128,23,30,90,26,1,0,0,31,224,0,255, + 252,1,192,252,7,128,56,14,0,16,14,0,0,28,0,0, + 56,0,0,56,0,0,120,0,0,112,0,0,112,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,30,0,4,31,0,14,15,128,56,7,224,240,1, + 255,192,0,127,0,25,30,120,28,1,0,7,254,0,0,255, + 255,192,0,111,3,240,0,15,0,248,0,15,0,124,0,15, + 0,62,0,15,0,30,0,15,0,31,0,15,0,15,0,15, + 0,15,0,15,0,15,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,0,15,0,15,0,15, + 0,15,0,15,0,30,0,15,0,30,0,15,0,60,0,15, + 0,124,0,15,0,248,0,15,3,224,0,63,255,192,0,127, + 254,0,0,21,30,90,24,1,0,255,255,224,127,255,240,30, + 0,96,30,0,96,30,0,96,30,0,96,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,128,31,255,128,30,3,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,8,30,0,24,30,0,24,31,0,56,127,255,240, + 255,255,240,20,30,90,23,1,0,255,255,240,127,255,240,30, + 0,96,30,0,96,30,0,32,30,0,32,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,0,31,255,0,30,6,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,127,128,0, + 255,224,0,24,30,90,28,2,0,0,31,224,0,255,248,1, + 192,252,7,128,56,15,0,16,30,0,0,28,0,0,56,0, + 0,56,0,0,120,0,0,112,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,7,255,240,0,254,240, + 0,60,240,0,60,248,0,60,120,0,60,120,0,60,60,0, + 60,62,0,60,30,0,60,15,0,60,7,192,248,3,255,224, + 0,127,0,27,30,120,31,2,0,255,192,127,224,127,128,63, + 192,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,31,255,255,0,31,255,255,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,127,0,31,192,255,192,127, + 224,10,30,60,14,2,0,255,192,127,128,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,127, + 128,255,192,17,38,114,15,252,248,7,255,128,0,255,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,56,0,0,56,0,0,56,0,0,112,0,0,112,0,0, + 224,0,112,192,0,255,0,0,124,0,0,26,30,120,28,1, + 0,255,193,255,128,127,128,124,0,30,0,120,0,30,0,240, + 0,30,1,224,0,30,1,192,0,30,3,128,0,30,7,0, + 0,30,14,0,0,30,28,0,0,30,56,0,0,30,120,0, + 0,30,112,0,0,30,224,0,0,31,224,0,0,30,240,0, + 0,30,120,0,0,30,124,0,0,30,62,0,0,30,30,0, + 0,30,15,0,0,30,7,128,0,30,7,192,0,30,3,224, + 0,30,1,240,0,30,0,248,0,30,0,124,0,30,0,126, + 0,127,128,63,192,255,192,31,0,21,30,90,23,1,0,255, + 192,0,127,128,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,8,30,0,24,30,0,24, + 31,0,48,127,255,240,255,255,240,36,30,150,39,1,0,127, + 0,0,15,224,31,128,0,31,128,15,128,0,31,0,15,128, + 0,63,0,15,192,0,63,0,15,192,0,55,0,15,224,0, + 119,0,14,224,0,119,0,14,240,0,231,0,14,240,0,231, + 0,14,120,0,199,0,14,120,1,199,0,14,56,1,199,0, + 14,60,3,135,0,14,28,3,135,0,14,30,7,7,0,14, + 30,7,7,0,14,15,6,7,0,14,15,14,7,0,14,7, + 14,7,0,14,7,156,7,0,14,3,156,7,0,14,3,216, + 7,0,14,3,248,7,0,14,1,248,7,0,14,1,240,7, + 0,14,0,240,7,0,14,0,224,7,0,63,0,224,31,192, + 255,192,96,127,240,27,30,120,31,2,0,252,0,63,224,124, + 0,15,128,30,0,7,0,31,0,7,0,31,0,7,0,31, + 128,7,0,31,192,7,0,29,192,7,0,28,224,7,0,28, + 240,7,0,28,120,7,0,28,56,7,0,28,60,7,0,28, + 30,7,0,28,14,7,0,28,15,7,0,28,7,135,0,28, + 7,135,0,28,3,199,0,28,1,231,0,28,1,231,0,28, + 0,247,0,28,0,127,0,28,0,127,0,28,0,63,0,28, + 0,31,0,28,0,31,0,28,0,15,0,62,0,7,0,255, + 128,3,0,25,30,120,29,2,0,0,63,0,0,0,255,224, + 0,3,193,240,0,7,0,248,0,14,0,124,0,28,0,62, + 0,60,0,30,0,56,0,31,0,120,0,15,0,120,0,15, + 0,112,0,15,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,248,0,7,0,120,0,15,0,120,0,15, + 0,124,0,14,0,60,0,28,0,62,0,28,0,31,0,56, + 0,15,128,112,0,7,193,224,0,3,255,128,0,0,254,0, + 0,22,30,90,25,1,0,7,254,0,255,255,192,111,7,224, + 15,1,240,15,0,248,15,0,124,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,120,15,0, + 120,15,0,240,15,131,224,15,127,192,15,62,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,63,192,0,127,240, + 0,28,37,148,29,2,249,0,63,0,0,0,255,224,0,3, + 193,240,0,7,0,248,0,14,0,124,0,28,0,62,0,60, + 0,30,0,56,0,31,0,120,0,15,0,120,0,15,0,112, + 0,15,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,248,0,7,0,120,0,15,0,120,0,15,0,124, + 0,14,0,60,0,30,0,62,0,28,0,31,0,56,0,15, + 128,112,0,7,193,224,0,3,255,192,0,0,127,128,0,0, + 3,192,0,0,1,224,0,0,0,248,16,0,0,124,48,0, + 0,31,224,0,0,15,224,0,0,3,128,26,30,120,27,1, + 0,7,254,0,0,255,255,192,0,111,7,224,0,15,1,240, + 0,15,0,240,0,15,0,120,0,15,0,120,0,15,0,120, + 0,15,0,120,0,15,0,120,0,15,0,112,0,15,0,240, + 0,15,1,224,0,15,3,192,0,15,255,0,0,15,254,0, + 0,15,14,0,0,15,7,0,0,15,7,128,0,15,3,128, + 0,15,3,192,0,15,1,192,0,15,1,224,0,15,0,240, + 0,15,0,240,0,15,0,120,0,15,0,124,0,15,0,62, + 0,63,192,63,192,127,224,31,0,18,30,90,23,3,0,3, + 248,0,31,254,0,60,63,0,120,14,0,112,4,0,240,0, + 0,240,0,0,240,0,0,248,0,0,252,0,0,127,0,0, + 127,192,0,63,240,0,31,248,0,7,254,0,1,255,0,0, + 127,128,0,31,128,0,15,192,0,7,192,0,3,192,0,3, + 192,0,3,192,128,3,128,192,3,128,224,7,0,240,15,0, + 252,62,0,255,248,0,15,224,0,26,30,120,26,0,0,127, + 255,255,192,127,255,255,192,96,30,1,128,192,30,1,128,192, + 30,1,128,128,30,0,128,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 127,128,0,1,255,224,0,27,30,120,31,2,0,255,192,127, + 224,127,128,63,192,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,30,0,15,0,30,0,15,0,30, + 0,7,128,60,0,7,192,120,0,3,224,240,0,1,255,224, + 0,0,63,128,0,30,30,120,31,0,0,255,224,15,252,31, + 0,1,240,15,0,0,224,15,0,1,192,7,0,1,192,7, + 128,1,192,7,128,3,128,3,192,3,128,3,192,3,128,3, + 192,7,0,1,224,7,0,1,224,6,0,0,224,14,0,0, + 240,14,0,0,240,12,0,0,120,28,0,0,120,28,0,0, + 120,56,0,0,60,56,0,0,60,56,0,0,28,112,0,0, + 30,112,0,0,30,112,0,0,15,224,0,0,15,224,0,0, + 15,224,0,0,7,192,0,0,7,192,0,0,3,128,0,0, + 3,0,0,40,30,150,41,0,0,255,224,24,3,255,63,0, + 24,0,252,14,0,28,0,48,15,0,60,0,112,15,0,60, + 0,112,15,0,62,0,112,7,0,126,0,96,7,0,127,0, + 224,7,128,127,0,224,7,128,103,0,224,7,128,231,128,224, + 3,128,231,128,192,3,192,195,129,192,3,193,195,193,192,3, + 193,195,193,192,1,193,129,193,192,1,195,129,225,128,1,227, + 129,227,128,1,227,0,227,128,1,231,0,243,128,0,231,0, + 243,128,0,246,0,115,0,0,254,0,127,0,0,254,0,63, + 0,0,124,0,63,0,0,124,0,62,0,0,124,0,30,0, + 0,124,0,30,0,0,120,0,30,0,0,48,0,8,0,28, + 30,120,30,1,0,255,224,255,224,255,224,255,224,63,0,31, + 0,31,0,30,0,15,128,28,0,7,128,56,0,3,192,120, + 0,3,224,112,0,1,224,224,0,0,241,224,0,0,249,192, + 0,0,127,128,0,0,63,128,0,0,31,0,0,0,31,0, + 0,0,31,0,0,0,63,128,0,0,63,192,0,0,115,224, + 0,0,241,224,0,0,224,240,0,1,192,248,0,3,192,120, + 0,3,128,60,0,7,0,62,0,15,0,31,0,14,0,15, + 0,62,0,15,192,255,192,127,240,255,192,127,240,28,30,120, + 29,0,0,252,0,63,240,254,0,63,240,31,0,15,128,15, + 0,7,0,15,128,14,0,7,192,14,0,3,192,28,0,3, + 224,60,0,1,224,56,0,0,240,120,0,0,248,112,0,0, + 120,224,0,0,125,224,0,0,61,192,0,0,63,192,0,0, + 31,128,0,0,31,128,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,63,192,0,0,255,240,0,22,30,90,25,1, + 0,63,255,252,63,255,252,56,0,120,48,0,248,48,1,240, + 32,1,224,32,3,224,0,3,192,0,7,128,0,15,128,0, + 15,0,0,31,0,0,30,0,0,60,0,0,124,0,0,120, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 7,128,0,15,128,0,15,0,4,31,0,12,62,0,12,60, + 0,12,124,0,28,127,255,252,255,255,252,11,45,90,15,3, + 248,255,224,255,224,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,255,224,255,224,20,46,138,23,1, + 248,224,0,0,112,0,0,112,0,0,120,0,0,56,0,0, + 56,0,0,28,0,0,28,0,0,30,0,0,14,0,0,14, + 0,0,15,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,192,0,1,192,0,1,192,0,1,224,0,0,224,0, + 0,224,0,0,240,0,0,112,0,0,112,0,0,56,0,0, + 56,0,0,60,0,0,28,0,0,28,0,0,30,0,0,14, + 0,0,14,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,224,0, + 0,224,0,0,240,0,0,112,0,0,48,11,45,90,15,1, + 248,255,224,255,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,255,224,255,224,19,23,69,24,2, + 13,0,32,0,0,112,0,0,240,0,1,240,0,1,248,0, + 1,248,0,3,188,0,3,188,0,7,60,0,7,30,0,6, + 30,0,14,14,0,14,15,0,12,15,0,28,7,128,28,7, + 128,24,3,128,56,3,192,48,3,192,112,1,224,112,1,224, + 96,0,224,192,0,192,20,2,6,23,1,251,127,255,240,255, + 255,240,9,10,20,15,1,25,240,0,248,0,120,0,60,0, + 28,0,14,0,7,0,3,0,1,128,1,128,20,22,66,22, + 2,0,1,248,0,15,254,0,28,30,0,120,15,0,112,15, + 0,240,15,0,128,15,0,0,15,0,0,15,0,0,255,0, + 7,255,0,31,143,0,62,15,0,120,15,0,248,15,0,240, + 15,0,240,15,0,240,31,0,240,63,0,120,239,32,127,143, + 240,30,7,128,22,36,108,24,0,0,6,0,0,126,0,0, + 254,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,15,128,30,63,224,30,127,240,30,227,240, + 31,192,248,31,128,248,31,0,124,30,0,124,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 56,30,0,56,30,0,112,30,0,96,31,0,224,15,193,192, + 3,255,0,0,252,0,18,22,66,21,2,0,0,127,0,3, + 255,192,7,7,192,14,1,128,28,0,128,56,0,0,120,0, + 0,112,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,248,0,0,120,0,0,120,0,0,60, + 0,64,62,1,192,31,131,128,7,254,0,1,248,0,23,36, + 108,25,2,0,0,0,224,0,15,224,0,15,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,253, + 224,3,255,224,15,15,224,28,3,224,60,1,224,56,1,224, + 120,1,224,112,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,1, + 224,124,3,224,62,5,228,31,25,254,15,240,248,7,192,224, + 18,22,66,22,2,0,0,248,0,7,254,0,14,15,0,28, + 7,128,56,7,128,56,3,192,112,3,192,112,3,192,255,255, + 192,255,255,128,240,0,0,240,0,0,240,0,0,240,0,0, + 248,0,0,120,0,0,120,0,0,124,0,192,62,1,128,31, + 7,0,15,254,0,3,248,0,19,36,108,15,0,0,0,15, + 128,0,63,224,0,99,192,1,193,128,3,128,0,3,128,0, + 7,128,0,7,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,63,254,0,255,252,0,15,8, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,31,224,0,127,248,0,24,33,99,24,0,245, + 0,252,2,3,255,126,7,7,252,14,3,224,30,1,224,28, + 1,240,60,0,240,60,0,240,60,0,240,60,0,240,62,0, + 224,31,1,192,15,131,128,7,255,0,1,252,0,3,192,0, + 7,128,0,15,128,0,15,224,0,7,255,128,3,255,240,7, + 191,252,14,0,254,60,0,31,120,0,15,240,0,15,240,0, + 15,240,0,14,248,0,28,124,0,56,63,128,240,15,255,192, + 1,254,0,23,36,108,26,2,0,6,0,0,126,0,0,254, + 0,0,62,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,7,128,28,31,224,28,49,224,28,96,240,28, + 192,240,29,128,240,31,0,240,31,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,63, + 131,248,255,199,254,10,32,64,13,2,0,28,0,30,0,62, + 0,62,0,28,0,0,0,0,0,0,0,0,0,0,0,6, + 0,126,0,254,0,62,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,63,0,255,192,14,43,86,12,251, + 245,0,56,0,60,0,124,0,124,0,56,0,0,0,0,0, + 0,0,0,0,0,0,12,0,252,1,252,0,124,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,56,0,56,0,120,0,112,0,112,48, + 224,127,128,255,0,124,0,23,36,108,24,1,0,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,7,252,30,1,240,30,1,192, + 30,3,128,30,7,0,30,14,0,30,56,0,30,112,0,30, + 224,0,31,224,0,30,240,0,30,248,0,30,120,0,30,60, + 0,30,30,0,30,15,0,30,15,128,30,7,192,30,3,224, + 30,1,224,63,0,254,255,192,124,12,36,72,13,1,0,3, + 0,63,0,127,0,31,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,31,128,255,240,36,22,110,39,2,0,12,7,192, + 124,0,254,31,224,255,0,62,49,227,143,0,30,96,247,7, + 128,30,192,254,7,128,31,128,252,7,128,31,0,248,7,128, + 31,0,248,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,30,0,240,7,128,30,0,240,7,128,30,0,240,7, + 128,127,131,252,31,192,255,199,254,63,240,23,22,66,26,2, + 0,12,7,192,254,15,224,62,49,224,30,96,240,30,192,240, + 30,128,240,31,0,240,31,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,127,131,248, + 255,199,254,20,22,66,24,2,0,0,252,0,7,255,0,14, + 15,128,28,7,192,56,3,192,56,3,224,112,1,224,112,1, + 240,240,0,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,248,0,224,120,1,224,124,1,192,60,1,192,62, + 3,128,31,7,0,15,254,0,3,240,0,21,33,99,25,2, + 245,12,7,128,254,31,192,62,35,224,30,65,240,30,129,240, + 31,0,240,31,0,248,30,0,248,30,0,120,30,0,120,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,112,30,0, + 112,30,0,224,30,0,224,31,1,192,31,195,128,30,255,0, + 30,62,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,127,0, + 0,255,224,0,22,33,99,25,2,245,0,252,48,3,255,96, + 7,15,224,30,3,224,28,1,224,56,1,224,120,1,224,112, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,120,1,224,120,1,224,124,3,224, + 62,7,224,31,29,224,15,249,224,3,225,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,240,0,31,252,17,22,66, + 19,1,0,4,15,0,126,63,128,254,127,128,30,227,128,30, + 195,128,31,129,0,31,128,0,31,0,0,31,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,63, + 128,0,255,224,0,15,22,44,19,2,0,15,192,63,248,120, + 120,112,56,240,16,240,0,248,0,252,0,127,0,63,192,31, + 240,7,248,1,252,0,126,0,62,128,30,128,30,192,30,224, + 60,240,120,255,240,31,192,16,30,60,17,0,0,3,0,7, + 0,15,0,15,0,15,0,15,0,15,0,15,0,63,255,255, + 255,15,4,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,1,7,135,7,254,3,240,24,22,66,25,1,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,23,22,66,24,0,0,255,192,254,62,0,60,30,0,56, + 30,0,48,15,0,112,15,0,112,7,0,96,7,128,224,7, + 128,192,3,193,192,3,193,192,1,193,128,1,227,128,1,227, + 0,0,243,0,0,247,0,0,118,0,0,126,0,0,126,0, + 0,60,0,0,60,0,0,16,0,33,22,110,34,0,0,255, + 192,96,63,128,62,0,224,15,0,30,0,224,14,0,30,0, + 240,14,0,14,1,240,12,0,15,1,240,12,0,15,1,248, + 28,0,7,3,248,28,0,7,3,56,24,0,7,131,60,24, + 0,3,135,28,56,0,3,134,30,48,0,3,198,30,48,0, + 1,206,14,112,0,1,204,15,96,0,1,252,15,96,0,1, + 252,7,96,0,0,248,7,224,0,0,248,7,192,0,0,240, + 3,192,0,0,112,3,192,0,0,96,3,0,0,24,22,66, + 24,0,0,127,227,254,127,227,254,31,128,248,15,128,224,7, + 128,192,3,193,192,1,227,128,0,247,0,0,254,0,0,124, + 0,0,60,0,0,62,0,0,127,0,0,239,0,1,199,128, + 3,131,192,3,1,224,7,0,240,14,0,248,62,0,252,255, + 131,255,255,131,255,24,33,99,24,255,245,127,224,255,31,0, + 62,15,0,28,15,0,24,7,128,56,7,128,56,3,128,48, + 3,192,112,3,192,96,1,224,224,1,224,224,0,224,192,0, + 241,192,0,241,192,0,121,128,0,123,128,0,59,0,0,63, + 0,0,63,0,0,30,0,0,30,0,0,12,0,0,12,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,112,0,0, + 224,0,63,192,0,127,128,0,255,0,0,124,0,0,17,22, + 66,21,2,0,127,255,128,127,255,128,96,15,0,96,15,0, + 64,30,0,64,60,0,0,60,0,0,120,0,0,240,0,0, + 240,0,1,224,0,3,192,0,3,192,0,7,128,0,15,0, + 0,14,0,0,30,0,128,60,0,128,120,0,128,120,1,128, + 255,255,128,255,255,128,13,45,90,16,2,249,0,8,0,56, + 0,112,1,224,1,192,3,128,3,128,7,128,7,128,7,128, + 7,128,7,128,7,192,3,192,3,192,3,192,3,192,3,192, + 3,128,7,128,7,0,30,0,126,0,255,0,7,128,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,7,192,7,128, + 7,128,7,128,7,128,7,128,7,128,3,128,3,192,1,192, + 0,224,0,120,0,24,4,49,49,11,4,246,112,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,224,13,45,90, + 16,1,249,192,0,240,0,56,0,28,0,30,0,14,0,15, + 0,15,0,15,0,15,0,15,0,15,0,31,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,15,0,7,240,3, + 248,3,192,7,0,15,0,14,0,30,0,30,0,30,0,30, + 0,30,0,31,0,15,0,15,0,15,0,15,0,15,0,14, + 0,30,0,28,0,56,0,112,0,224,0,128,0,21,8,24, + 23,1,11,7,128,8,15,224,24,31,240,16,63,252,48,49, + 255,224,96,127,192,64,31,128,192,15,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=12 h=15 x= 2 y= 8 dx=13 dy= 0 ascent=13 len=26 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9[3248] U8G_SECTION(".progmem.u8g_font_gdr9") = { + 0,23,21,248,251,9,1,255,4,54,32,255,252,13,252,12, + 252,0,0,0,3,0,0,2,11,11,4,1,0,192,192,192, + 192,192,64,128,128,0,128,128,4,5,5,6,1,6,208,144, + 144,144,144,6,8,8,7,1,1,44,40,252,72,80,248,80, + 160,6,11,11,7,0,255,16,60,84,80,112,24,20,148,212, + 120,16,9,9,18,11,1,0,97,0,146,0,148,0,152,0, + 107,0,20,128,36,128,68,128,195,0,9,11,22,10,1,0, + 56,0,72,0,72,0,72,0,112,0,103,128,162,0,146,0, + 138,0,134,0,123,0,2,5,5,4,1,6,192,128,128,128, + 128,3,14,14,5,1,254,32,64,64,128,128,128,128,128,128, + 128,128,64,64,32,3,14,14,5,1,254,128,64,64,32,32, + 32,32,32,32,32,32,64,64,128,5,6,6,7,1,5,32, + 168,112,112,168,32,5,5,5,6,1,2,32,32,248,32,32, + 2,4,4,3,1,254,64,192,64,128,5,1,1,5,0,3, + 248,1,2,2,3,1,0,128,128,7,14,14,7,0,254,6, + 4,4,8,8,8,16,16,32,32,32,64,64,192,5,9,9, + 7,1,0,112,144,136,136,136,136,136,80,112,5,9,9,7, + 1,0,32,224,32,32,32,32,32,32,248,5,9,9,7,1, + 0,56,72,136,8,16,32,64,136,248,6,9,9,7,0,0, + 48,72,136,16,120,4,4,132,120,6,9,9,7,0,0,8, + 24,40,40,72,72,252,8,60,5,9,9,7,1,0,120,128, + 128,240,136,8,8,136,112,5,9,9,7,1,0,24,96,64, + 176,200,136,136,136,112,5,9,9,7,1,0,248,136,8,16, + 16,32,32,96,64,5,9,9,7,1,0,112,200,136,208,112, + 136,136,136,112,5,9,9,7,1,0,112,152,136,136,136,120, + 16,16,224,1,7,7,3,1,0,128,128,0,0,0,128,128, + 2,9,9,3,1,254,128,128,0,0,0,64,192,64,128,6, + 5,5,7,0,2,4,56,64,176,12,6,3,3,7,0,3, + 124,128,252,6,5,5,7,0,2,192,56,4,56,192,5,11, + 11,7,1,0,112,136,136,8,16,16,32,32,32,32,32,11, + 13,26,13,1,253,15,0,48,192,64,64,142,32,178,32,162, + 32,162,32,162,32,162,64,95,128,64,0,48,192,31,0,9, + 9,18,9,0,0,8,0,8,0,20,0,20,0,36,0,62, + 0,34,0,67,0,227,128,7,9,9,9,1,0,248,68,68, + 124,70,66,66,66,252,7,9,9,8,1,0,60,68,128,128, + 128,128,128,70,56,8,9,9,9,0,0,252,66,65,65,65, + 65,65,66,252,6,9,9,7,1,0,252,68,64,120,64,64, + 64,68,252,6,9,9,7,1,0,252,68,64,120,64,64,64, + 64,224,8,9,9,9,1,0,30,100,128,128,143,130,130,66, + 60,9,9,18,10,0,0,227,128,65,0,65,0,65,0,127, + 0,65,0,65,0,65,0,227,128,3,9,9,4,1,0,224, + 64,64,64,64,64,64,64,224,5,12,12,5,255,253,56,16, + 16,16,16,16,16,16,16,16,32,192,8,9,9,9,1,0, + 239,68,72,80,96,80,72,68,231,6,9,9,7,1,0,224, + 64,64,64,64,64,64,68,252,12,9,18,12,0,0,96,96, + 32,192,80,192,81,64,73,64,73,64,70,64,70,64,228,240, + 10,9,18,10,0,0,193,192,96,128,80,128,88,128,76,128, + 70,128,67,128,65,128,224,128,7,9,9,9,1,0,56,68, + 130,130,130,130,130,68,56,7,9,9,8,0,0,252,66,66, + 66,92,96,64,64,224,8,11,11,9,1,254,56,68,130,130, + 130,130,130,68,56,13,3,8,9,9,8,0,0,248,68,68, + 68,88,104,72,68,231,5,9,9,7,1,0,112,152,128,64, + 48,8,136,136,240,7,9,9,8,1,0,254,146,16,16,16, + 16,16,16,56,9,9,18,10,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,9,18,10, + 0,0,227,128,97,0,33,0,34,0,18,0,18,0,28,0, + 12,0,8,0,12,9,18,13,0,0,226,112,66,32,38,32, + 37,32,41,32,41,192,56,192,16,192,16,192,9,9,18,9, + 0,0,247,128,98,0,54,0,28,0,8,0,20,0,34,0, + 35,0,243,128,9,9,18,9,0,0,227,128,98,0,50,0, + 20,0,28,0,8,0,8,0,8,0,28,0,7,9,9,8, + 0,0,126,68,4,8,16,16,34,66,254,3,15,15,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,128,128,224, + 7,14,14,7,0,254,192,64,64,32,32,32,16,16,8,8, + 8,4,4,6,3,15,15,5,1,253,224,32,32,32,32,32, + 32,32,32,32,32,32,32,32,224,6,7,7,7,1,4,32, + 48,80,80,136,136,140,7,1,1,7,0,254,254,3,3,3, + 5,0,8,192,64,32,6,7,7,7,1,0,56,72,136,56, + 200,136,252,7,11,11,8,0,0,192,64,64,64,92,98,66, + 66,66,68,56,5,7,7,7,1,0,120,136,128,128,128,200, + 112,7,11,11,8,1,0,12,4,4,4,60,196,132,132,132, + 204,118,5,7,7,7,1,0,112,72,136,248,128,200,112,5, + 11,11,5,1,0,24,104,64,64,240,64,64,64,64,64,240, + 7,11,11,7,0,252,126,132,132,196,120,96,120,70,130,134, + 120,8,11,11,8,0,0,192,64,64,64,78,114,66,66,66, + 66,231,3,10,10,4,1,0,64,64,0,192,64,64,64,64, + 64,224,4,14,14,4,255,252,16,16,0,48,16,16,16,16, + 16,16,16,16,32,192,7,11,11,8,0,0,192,64,64,64, + 78,72,112,112,80,72,230,3,11,11,4,1,0,192,64,64, + 64,64,64,64,64,64,64,224,11,7,14,11,0,0,221,192, + 102,64,68,64,68,64,68,64,68,64,238,224,8,7,7,8, + 0,0,78,242,66,66,66,66,231,6,7,7,8,1,0,56, + 204,132,132,132,200,112,7,11,11,8,0,252,92,230,66,66, + 66,68,120,64,64,64,224,7,11,11,8,1,252,60,68,132, + 132,132,204,116,4,4,4,14,5,7,7,6,0,0,216,104, + 64,64,64,64,224,4,7,7,6,1,0,96,176,128,96,16, + 144,224,5,9,9,5,0,0,64,64,248,64,64,64,64,64, + 120,8,7,7,8,0,0,198,66,66,66,66,70,59,7,7, + 7,7,0,0,230,68,36,40,56,24,16,10,7,14,11,0, + 0,228,192,68,128,110,128,42,128,50,128,49,0,17,0,7, + 7,7,8,0,0,238,100,56,24,40,68,238,7,11,11,7, + 0,252,230,68,36,36,40,24,16,16,16,32,192,5,7,7, + 7,1,0,248,144,32,32,64,136,248,3,14,14,5,1,254, + 32,64,64,64,32,32,64,224,32,32,64,64,64,32,1,15, + 15,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,3,14,14,5,1,254,128,64,64,64,128,128,192, + 96,128,128,64,64,64,128,7,3,3,7,0,3,50,220,128, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,3,0,0,2,11,11,4,1,252,128,128,0, + 128,128,128,192,192,192,192,192,5,9,9,7,1,0,32,56, + 232,160,160,160,232,112,32,6,9,9,7,1,0,56,68,72, + 64,240,64,64,68,252,3,5,5,7,2,2,160,224,160,160, + 224,7,9,9,7,0,0,206,100,40,56,16,124,16,16,56, + 1,15,15,3,1,253,128,128,128,128,128,128,128,0,128,128, + 128,128,128,128,128,6,11,11,8,1,0,112,144,128,224,184, + 132,68,56,136,136,112,4,2,2,6,1,8,144,144,9,9, + 18,11,1,0,62,0,93,0,166,128,160,128,160,128,160,128, + 182,128,93,0,62,0,4,5,5,4,0,4,96,160,224,224, + 240,5,7,7,7,1,0,104,72,144,176,144,72,104,6,4, + 4,7,1,1,252,4,4,4,5,1,1,5,0,3,248,5, + 6,6,5,0,5,112,136,184,168,168,112,5,1,1,7,1, + 8,248,3,4,4,5,1,5,96,160,160,192,6,7,7,6, + 0,1,16,16,124,16,16,0,252,4,6,6,5,0,4,48, + 208,32,32,80,240,4,6,6,5,0,4,48,80,32,16,144, + 96,3,3,3,5,2,8,96,128,128,8,11,11,8,0,252, + 198,66,66,66,66,70,123,64,64,64,96,8,11,11,9,0, + 254,127,138,138,202,122,10,10,10,10,10,31,1,2,2,2, + 1,4,128,128,2,3,3,3,1,253,128,64,192,3,5,5, + 5,1,5,192,64,64,64,224,3,5,5,4,0,4,96,160, + 160,192,224,6,7,7,7,1,0,160,80,72,44,72,80,160, + 8,9,9,9,1,0,194,68,68,72,178,22,42,79,199,7, + 9,9,9,1,0,194,68,72,72,182,26,36,74,206,9,9, + 18,9,0,0,49,0,82,0,52,0,20,0,233,0,11,0, + 21,0,39,128,99,128,5,11,11,7,1,252,32,32,32,32, + 32,64,128,128,136,136,112,9,12,24,9,0,0,48,0,12, + 0,0,0,8,0,8,0,20,0,20,0,36,0,62,0,34, + 0,67,0,227,128,9,12,24,9,0,0,6,0,24,0,0, + 0,8,0,8,0,20,0,20,0,36,0,62,0,34,0,67, + 0,227,128,9,12,24,9,0,0,28,0,34,0,0,0,8, + 0,8,0,20,0,20,0,36,0,62,0,34,0,67,0,227, + 128,9,12,24,9,0,0,58,0,60,0,0,0,8,0,8, + 0,20,0,20,0,36,0,62,0,34,0,67,0,227,128,9, + 11,22,9,0,0,36,0,36,0,8,0,8,0,20,0,20, + 0,36,0,62,0,34,0,67,0,227,128,9,13,26,9,0, + 0,12,0,20,0,20,0,8,0,8,0,8,0,20,0,20, + 0,36,0,62,0,34,0,67,0,227,128,11,9,18,12,0, + 0,31,224,10,32,18,0,31,192,18,0,34,0,34,0,34, + 32,231,224,6,12,12,8,1,253,60,68,128,128,128,128,128, + 68,120,32,16,48,6,12,12,7,1,0,224,16,0,252,68, + 64,120,64,64,64,68,252,6,12,12,7,1,0,24,96,0, + 252,68,64,120,64,64,64,68,252,6,12,12,7,1,0,112, + 136,0,252,68,64,120,64,64,64,68,252,6,11,11,7,1, + 0,144,144,124,68,64,120,64,64,64,68,252,4,12,12,4, + 0,0,192,32,0,112,32,32,32,32,32,32,32,112,4,12, + 12,4,1,0,112,128,0,224,64,64,64,64,64,64,64,224, + 4,12,12,4,0,0,96,144,0,112,32,32,32,32,32,32, + 32,112,4,11,11,4,0,0,144,144,96,32,32,32,32,32, + 32,32,112,8,9,9,9,0,0,252,66,65,65,241,65,65, + 66,252,10,12,24,10,0,0,26,0,60,0,0,0,193,192, + 96,128,80,128,88,128,76,128,70,128,67,128,65,128,224,128, + 7,12,12,9,1,0,96,24,0,56,68,130,130,130,130,130, + 68,56,7,12,12,9,1,0,12,48,0,56,68,130,130,130, + 130,130,68,56,7,12,12,9,1,0,56,68,0,56,68,130, + 130,130,130,130,68,56,7,12,12,9,1,0,52,120,0,56, + 68,130,130,130,130,130,68,56,7,11,11,9,1,0,72,72, + 56,68,130,130,130,130,130,68,56,4,4,4,6,1,2,144, + 96,96,144,7,9,9,9,1,0,58,68,138,138,146,162,194, + 68,184,9,12,24,10,0,0,56,0,4,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,98,0,60,0, + 9,12,24,10,0,0,6,0,24,0,0,0,227,128,65,0, + 65,0,65,0,65,0,65,0,65,0,98,0,60,0,9,12, + 24,10,0,0,28,0,34,0,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,11,22,10, + 0,0,34,0,36,0,195,128,65,0,65,0,65,0,65,0, + 65,0,65,0,98,0,60,0,9,12,24,9,0,0,6,0, + 24,0,0,0,227,128,98,0,50,0,20,0,28,0,8,0, + 8,0,8,0,28,0,7,9,9,8,0,0,224,124,70,66, + 66,66,100,92,224,8,11,11,8,0,0,28,34,66,66,68, + 72,76,67,65,73,206,6,11,11,7,1,0,192,96,32,0, + 56,72,136,56,200,136,252,6,11,11,7,1,0,24,16,32, + 0,56,72,136,56,200,136,252,6,11,11,7,1,0,32,80, + 136,0,56,72,136,56,200,136,252,6,10,10,7,1,0,104, + 176,0,56,72,136,56,200,136,252,6,10,10,7,1,0,144, + 144,0,56,72,136,56,200,136,252,6,11,11,7,1,0,48, + 80,80,48,56,72,136,56,200,136,252,9,7,14,10,1,0, + 63,0,76,128,136,128,63,128,200,0,136,128,247,0,5,10, + 10,7,1,253,120,136,128,128,128,200,112,32,16,48,5,11, + 11,7,1,0,64,32,32,16,112,72,136,248,128,200,112,5, + 11,11,7,1,0,24,16,32,0,112,72,136,248,128,200,112, + 5,11,11,7,1,0,32,80,136,0,112,72,136,248,128,200, + 112,5,10,10,7,1,0,144,152,0,112,72,136,248,128,200, + 112,4,11,11,4,0,0,128,64,32,0,96,32,32,32,32, + 32,112,3,11,11,4,1,0,32,64,128,0,192,64,64,64, + 64,64,224,4,11,11,4,0,0,96,80,144,0,96,32,32, + 32,32,32,112,4,10,10,4,0,0,144,144,0,96,32,32, + 32,32,32,112,5,11,11,7,1,0,200,48,80,16,120,136, + 136,136,136,144,112,8,10,10,8,0,0,18,108,0,78,242, + 66,66,66,66,231,6,11,11,8,1,0,64,32,16,0,56, + 204,132,132,132,200,112,6,11,11,8,1,0,8,16,32,0, + 56,204,132,132,132,200,112,6,11,11,8,1,0,48,80,136, + 0,56,204,132,132,132,200,112,6,10,10,8,1,0,104,152, + 0,56,204,132,132,132,200,112,6,10,10,8,1,0,136,136, + 0,56,204,132,132,132,200,112,6,4,4,6,0,2,16,124, + 128,16,6,7,7,8,1,0,60,204,148,164,164,200,240,8, + 11,11,8,0,0,32,16,8,0,198,66,66,66,66,70,59, + 8,11,11,8,0,0,4,8,16,0,198,66,66,66,66,70, + 59,8,11,11,8,0,0,24,24,36,0,198,66,66,66,66, + 70,59,8,10,10,8,0,0,36,68,0,198,66,66,66,66, + 70,59,7,15,15,7,0,252,4,8,16,0,230,68,36,36, + 40,24,16,16,16,32,192,7,15,15,8,0,252,192,64,64, + 64,76,114,66,66,66,68,120,64,64,64,224,7,14,14,7, + 0,252,68,68,0,230,68,36,36,40,24,16,16,16,32,192 + }; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 7 h=14 x= 1 y= 5 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9n[235] U8G_SECTION(".progmem.u8g_font_gdr9n") = { + 0,23,21,248,251,9,0,0,0,0,42,57,0,12,254,9, + 0,5,6,6,7,1,5,32,168,112,112,168,32,5,5,5, + 6,1,2,32,32,248,32,32,2,4,4,3,1,254,64,192, + 64,128,5,1,1,5,0,3,248,1,2,2,3,1,0,128, + 128,7,14,14,7,0,254,6,4,4,8,8,8,16,16,32, + 32,32,64,64,192,5,9,9,7,1,0,112,144,136,136,136, + 136,136,80,112,5,9,9,7,1,0,32,224,32,32,32,32, + 32,32,248,5,9,9,7,1,0,56,72,136,8,16,32,64, + 136,248,6,9,9,7,0,0,48,72,136,16,120,4,4,132, + 120,6,9,9,7,0,0,8,24,40,40,72,72,252,8,60, + 5,9,9,7,1,0,120,128,128,240,136,8,8,136,112,5, + 9,9,7,1,0,24,96,64,176,200,136,136,136,112,5,9, + 9,7,1,0,248,136,8,16,16,32,32,96,64,5,9,9, + 7,1,0,112,200,136,208,112,136,136,136,112,5,9,9,7, + 1,0,112,152,136,136,136,120,16,16,224}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=12 h=15 x= 1 y= 8 dx=13 dy= 0 ascent=12 len=26 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9r[1553] U8G_SECTION(".progmem.u8g_font_gdr9r") = { + 0,23,21,248,251,9,1,255,4,54,32,127,252,12,252,12, + 252,0,0,0,3,0,0,2,11,11,4,1,0,192,192,192, + 192,192,64,128,128,0,128,128,4,5,5,6,1,6,208,144, + 144,144,144,6,8,8,7,1,1,44,40,252,72,80,248,80, + 160,6,11,11,7,0,255,16,60,84,80,112,24,20,148,212, + 120,16,9,9,18,11,1,0,97,0,146,0,148,0,152,0, + 107,0,20,128,36,128,68,128,195,0,9,11,22,10,1,0, + 56,0,72,0,72,0,72,0,112,0,103,128,162,0,146,0, + 138,0,134,0,123,0,2,5,5,4,1,6,192,128,128,128, + 128,3,14,14,5,1,254,32,64,64,128,128,128,128,128,128, + 128,128,64,64,32,3,14,14,5,1,254,128,64,64,32,32, + 32,32,32,32,32,32,64,64,128,5,6,6,7,1,5,32, + 168,112,112,168,32,5,5,5,6,1,2,32,32,248,32,32, + 2,4,4,3,1,254,64,192,64,128,5,1,1,5,0,3, + 248,1,2,2,3,1,0,128,128,7,14,14,7,0,254,6, + 4,4,8,8,8,16,16,32,32,32,64,64,192,5,9,9, + 7,1,0,112,144,136,136,136,136,136,80,112,5,9,9,7, + 1,0,32,224,32,32,32,32,32,32,248,5,9,9,7,1, + 0,56,72,136,8,16,32,64,136,248,6,9,9,7,0,0, + 48,72,136,16,120,4,4,132,120,6,9,9,7,0,0,8, + 24,40,40,72,72,252,8,60,5,9,9,7,1,0,120,128, + 128,240,136,8,8,136,112,5,9,9,7,1,0,24,96,64, + 176,200,136,136,136,112,5,9,9,7,1,0,248,136,8,16, + 16,32,32,96,64,5,9,9,7,1,0,112,200,136,208,112, + 136,136,136,112,5,9,9,7,1,0,112,152,136,136,136,120, + 16,16,224,1,7,7,3,1,0,128,128,0,0,0,128,128, + 2,9,9,3,1,254,128,128,0,0,0,64,192,64,128,6, + 5,5,7,0,2,4,56,64,176,12,6,3,3,7,0,3, + 124,128,252,6,5,5,7,0,2,192,56,4,56,192,5,11, + 11,7,1,0,112,136,136,8,16,16,32,32,32,32,32,11, + 13,26,13,1,253,15,0,48,192,64,64,142,32,178,32,162, + 32,162,32,162,32,162,64,95,128,64,0,48,192,31,0,9, + 9,18,9,0,0,8,0,8,0,20,0,20,0,36,0,62, + 0,34,0,67,0,227,128,7,9,9,9,1,0,248,68,68, + 124,70,66,66,66,252,7,9,9,8,1,0,60,68,128,128, + 128,128,128,70,56,8,9,9,9,0,0,252,66,65,65,65, + 65,65,66,252,6,9,9,7,1,0,252,68,64,120,64,64, + 64,68,252,6,9,9,7,1,0,252,68,64,120,64,64,64, + 64,224,8,9,9,9,1,0,30,100,128,128,143,130,130,66, + 60,9,9,18,10,0,0,227,128,65,0,65,0,65,0,127, + 0,65,0,65,0,65,0,227,128,3,9,9,4,1,0,224, + 64,64,64,64,64,64,64,224,5,12,12,5,255,253,56,16, + 16,16,16,16,16,16,16,16,32,192,8,9,9,9,1,0, + 239,68,72,80,96,80,72,68,231,6,9,9,7,1,0,224, + 64,64,64,64,64,64,68,252,12,9,18,12,0,0,96,96, + 32,192,80,192,81,64,73,64,73,64,70,64,70,64,228,240, + 10,9,18,10,0,0,193,192,96,128,80,128,88,128,76,128, + 70,128,67,128,65,128,224,128,7,9,9,9,1,0,56,68, + 130,130,130,130,130,68,56,7,9,9,8,0,0,252,66,66, + 66,92,96,64,64,224,8,11,11,9,1,254,56,68,130,130, + 130,130,130,68,56,13,3,8,9,9,8,0,0,248,68,68, + 68,88,104,72,68,231,5,9,9,7,1,0,112,152,128,64, + 48,8,136,136,240,7,9,9,8,1,0,254,146,16,16,16, + 16,16,16,56,9,9,18,10,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,9,18,10, + 0,0,227,128,97,0,33,0,34,0,18,0,18,0,28,0, + 12,0,8,0,12,9,18,13,0,0,226,112,66,32,38,32, + 37,32,41,32,41,192,56,192,16,192,16,192,9,9,18,9, + 0,0,247,128,98,0,54,0,28,0,8,0,20,0,34,0, + 35,0,243,128,9,9,18,9,0,0,227,128,98,0,50,0, + 20,0,28,0,8,0,8,0,8,0,28,0,7,9,9,8, + 0,0,126,68,4,8,16,16,34,66,254,3,15,15,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,128,128,224, + 7,14,14,7,0,254,192,64,64,32,32,32,16,16,8,8, + 8,4,4,6,3,15,15,5,1,253,224,32,32,32,32,32, + 32,32,32,32,32,32,32,32,224,6,7,7,7,1,4,32, + 48,80,80,136,136,140,7,1,1,7,0,254,254,3,3,3, + 5,0,8,192,64,32,6,7,7,7,1,0,56,72,136,56, + 200,136,252,7,11,11,8,0,0,192,64,64,64,92,98,66, + 66,66,68,56,5,7,7,7,1,0,120,136,128,128,128,200, + 112,7,11,11,8,1,0,12,4,4,4,60,196,132,132,132, + 204,118,5,7,7,7,1,0,112,72,136,248,128,200,112,5, + 11,11,5,1,0,24,104,64,64,240,64,64,64,64,64,240, + 7,11,11,7,0,252,126,132,132,196,120,96,120,70,130,134, + 120,8,11,11,8,0,0,192,64,64,64,78,114,66,66,66, + 66,231,3,10,10,4,1,0,64,64,0,192,64,64,64,64, + 64,224,4,14,14,4,255,252,16,16,0,48,16,16,16,16, + 16,16,16,16,32,192,7,11,11,8,0,0,192,64,64,64, + 78,72,112,112,80,72,230,3,11,11,4,1,0,192,64,64, + 64,64,64,64,64,64,64,224,11,7,14,11,0,0,221,192, + 102,64,68,64,68,64,68,64,68,64,238,224,8,7,7,8, + 0,0,78,242,66,66,66,66,231,6,7,7,8,1,0,56, + 204,132,132,132,200,112,7,11,11,8,0,252,92,230,66,66, + 66,68,120,64,64,64,224,7,11,11,8,1,252,60,68,132, + 132,132,204,116,4,4,4,14,5,7,7,6,0,0,216,104, + 64,64,64,64,224,4,7,7,6,1,0,96,176,128,96,16, + 144,224,5,9,9,5,0,0,64,64,248,64,64,64,64,64, + 120,8,7,7,8,0,0,198,66,66,66,66,70,59,7,7, + 7,7,0,0,230,68,36,40,56,24,16,10,7,14,11,0, + 0,228,192,68,128,110,128,42,128,50,128,49,0,17,0,7, + 7,7,8,0,0,238,100,56,24,40,68,238,7,11,11,7, + 0,252,230,68,36,36,40,24,16,16,16,32,192,5,7,7, + 7,1,0,248,144,32,32,64,136,248,3,14,14,5,1,254, + 32,64,64,64,32,32,64,224,32,32,64,64,64,32,1,15, + 15,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,3,14,14,5,1,254,128,64,64,64,128,128,192, + 96,128,128,64,64,64,128,7,3,3,7,0,3,50,220,128, + 255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=11 x= 1 y= 7 dx=11 dy= 0 ascent=11 len=18 + Font Bounding box w=12 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB08[2677] U8G_SECTION(".progmem.u8g_font_helvB08") = { + 0,12,19,255,251,8,1,182,3,122,32,255,254,11,254,8, + 254,0,0,0,3,0,1,2,8,8,4,1,0,192,192,192, + 192,128,128,0,192,3,3,3,5,1,5,160,160,160,7,7, + 7,6,255,0,40,40,126,40,252,80,80,5,10,10,6,0, + 255,32,112,168,224,112,56,40,168,112,32,7,8,8,8,0, + 0,98,180,104,16,16,44,86,140,7,8,8,8,0,0,112, + 216,216,112,222,204,220,118,1,3,3,3,1,5,128,128,128, + 3,10,10,4,0,254,32,96,64,192,192,192,192,64,96,32, + 3,10,10,4,0,254,128,192,64,96,96,96,96,64,192,128, + 3,3,3,4,0,5,160,64,160,6,5,5,6,0,1,48, + 48,252,48,48,2,4,4,3,0,254,192,192,64,128,4,1, + 1,5,0,3,240,2,2,2,3,0,0,192,192,4,8,8, + 4,0,0,16,16,32,32,64,64,128,128,5,8,8,6,0, + 0,112,216,216,216,216,216,216,112,3,8,8,6,1,0,96, + 224,96,96,96,96,96,96,5,8,8,6,0,0,112,216,24, + 24,48,96,192,248,5,8,8,6,0,0,112,216,24,48,24, + 24,216,112,6,8,8,6,0,0,8,24,56,88,152,252,24, + 24,5,8,8,6,0,0,248,192,192,240,24,152,216,112,5, + 8,8,6,0,0,112,216,192,240,216,216,216,112,5,8,8, + 6,0,0,248,24,24,48,48,96,96,96,5,8,8,6,0, + 0,112,216,216,112,216,216,216,112,5,8,8,6,0,0,112, + 216,216,216,120,24,216,112,2,6,6,3,0,0,192,192,0, + 0,192,192,2,8,8,3,0,254,192,192,0,0,192,192,64, + 128,4,5,5,5,0,1,48,96,192,96,48,5,3,3,6, + 0,2,248,0,248,4,5,5,5,0,1,192,96,48,96,192, + 5,8,8,6,0,0,112,216,24,48,96,96,0,96,10,9, + 18,11,0,255,31,0,96,128,77,64,146,64,162,64,164,128, + 155,0,64,0,62,0,7,8,8,8,0,0,56,56,108,108, + 108,254,198,198,6,8,8,7,0,0,248,204,204,248,204,204, + 204,248,7,8,8,8,0,0,60,102,194,192,192,194,102,60, + 6,8,8,7,0,0,240,216,204,204,204,204,216,240,5,8, + 8,6,0,0,248,192,192,248,192,192,192,248,5,8,8,6, + 0,0,248,192,192,240,192,192,192,192,7,8,8,8,0,0, + 60,102,194,192,206,198,102,58,6,8,8,7,0,0,204,204, + 204,252,204,204,204,204,2,8,8,3,0,0,192,192,192,192, + 192,192,192,192,5,8,8,6,0,0,24,24,24,24,24,24, + 216,112,7,8,8,7,0,0,204,216,240,224,240,216,204,198, + 5,8,8,6,0,0,192,192,192,192,192,192,192,248,9,8, + 16,10,0,0,193,128,227,128,227,128,247,128,213,128,221,128, + 201,128,201,128,7,8,8,8,0,0,198,230,230,214,214,206, + 206,198,7,8,8,8,0,0,56,108,198,198,198,198,108,56, + 6,8,8,7,0,0,248,204,204,204,248,192,192,192,7,9, + 9,8,0,255,56,108,198,198,198,214,108,60,2,6,8,8, + 7,0,0,248,204,204,204,248,204,204,204,6,8,8,7,0, + 0,120,204,224,120,28,140,204,120,6,8,8,7,0,0,252, + 48,48,48,48,48,48,48,6,8,8,7,0,0,204,204,204, + 204,204,204,204,120,7,8,8,8,0,0,198,198,108,108,108, + 56,56,16,10,8,16,11,0,0,204,192,204,192,204,192,109, + 128,109,128,127,128,51,0,51,0,7,8,8,8,0,0,198, + 198,108,56,56,108,198,198,8,8,8,9,0,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,252,12,24,48,112, + 96,192,252,3,10,10,4,0,254,224,192,192,192,192,192,192, + 192,192,224,4,8,8,4,0,0,128,128,64,64,32,32,16, + 16,3,10,10,4,0,254,224,96,96,96,96,96,96,96,96, + 224,4,4,4,5,0,4,96,240,144,144,6,1,1,6,0, + 254,252,2,2,2,3,0,7,128,64,6,6,6,6,0,0, + 112,152,120,216,216,108,5,8,8,6,0,0,192,192,240,216, + 216,216,216,240,4,6,6,5,0,0,112,208,192,192,208,112, + 5,8,8,6,0,0,24,24,120,216,216,216,216,120,5,6, + 6,6,0,0,112,216,248,192,216,112,5,8,8,4,255,0, + 56,96,240,96,96,96,96,96,5,8,8,6,0,254,104,216, + 216,216,216,120,24,112,5,8,8,6,0,0,192,192,240,216, + 216,216,216,216,2,8,8,3,0,0,192,0,192,192,192,192, + 192,192,3,10,10,3,255,254,96,0,96,96,96,96,96,96, + 96,192,6,8,8,6,0,0,192,192,216,240,224,240,216,204, + 2,8,8,3,0,0,192,192,192,192,192,192,192,192,8,6, + 6,9,0,0,182,219,219,219,219,219,5,6,6,6,0,0, + 176,216,216,216,216,216,5,6,6,6,0,0,112,216,216,216, + 216,112,5,8,8,6,0,254,176,216,216,216,216,240,192,192, + 5,8,8,6,0,254,104,216,216,216,216,120,24,24,4,6, + 6,4,0,0,176,224,192,192,192,192,5,6,6,6,0,0, + 112,216,112,24,216,112,4,8,8,4,255,0,96,96,240,96, + 96,96,96,48,5,6,6,6,0,0,216,216,216,216,216,104, + 5,6,6,6,0,0,216,216,216,80,112,32,7,6,6,8, + 0,0,214,214,214,108,108,108,6,6,6,7,0,0,204,120, + 48,120,204,204,5,8,8,6,0,254,216,216,216,216,120,48, + 48,96,5,6,6,6,0,0,248,24,48,96,192,248,4,10, + 10,5,0,254,48,96,96,96,192,96,96,96,96,48,1,10, + 10,3,1,254,128,128,128,128,128,128,128,128,128,128,4,10, + 10,5,0,254,192,96,96,96,48,96,96,96,96,192,5,2, + 2,6,0,3,104,176,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,3,0,1,2,8,8, + 4,1,254,192,0,64,64,192,192,192,192,5,8,8,6,0, + 255,16,112,216,160,160,216,112,64,5,8,8,6,0,0,56, + 104,96,240,96,96,104,216,6,6,6,6,0,1,132,120,72, + 72,120,132,6,8,8,7,0,0,132,132,204,72,252,48,252, + 48,1,10,10,3,1,254,128,128,128,128,0,0,128,128,128, + 128,5,10,10,6,0,254,112,200,224,112,152,200,112,56,152, + 112,3,1,1,3,0,7,160,8,8,8,10,1,0,60,66, + 153,165,161,157,66,60,3,5,5,5,1,3,224,32,160,0, + 224,6,3,3,7,0,1,108,216,108,5,3,3,7,1,2, + 248,8,8,4,1,1,5,0,3,240,8,8,8,10,1,0, + 60,66,189,165,185,165,66,60,3,1,1,3,0,7,224,3, + 3,3,4,0,5,96,160,192,6,7,7,6,0,0,48,48, + 252,48,48,0,252,3,4,4,3,0,4,96,160,64,224,3, + 4,4,3,0,4,224,64,32,192,2,2,2,3,0,7,64, + 128,5,8,8,6,0,254,216,216,216,216,216,232,192,192,6, + 10,10,6,0,254,124,232,232,232,104,40,40,40,40,40,2, + 1,1,3,0,3,192,2,2,2,3,0,254,64,192,2,4, + 4,3,0,4,64,192,64,64,3,5,5,5,1,3,224,160, + 224,0,224,6,3,3,7,0,1,216,108,216,8,8,8,9, + 0,0,68,196,72,72,18,38,47,66,7,8,8,9,0,0, + 68,196,72,72,22,42,36,78,8,8,8,9,0,0,228,68, + 40,200,18,38,47,66,5,8,8,6,0,254,48,0,48,48, + 96,192,216,112,7,11,11,8,0,0,32,16,0,56,56,108, + 108,108,254,198,198,7,11,11,8,0,0,8,16,0,56,56, + 108,108,108,254,198,198,7,11,11,8,0,0,16,40,0,56, + 56,108,108,108,254,198,198,7,11,11,8,0,0,20,40,0, + 56,56,108,108,108,254,198,198,7,10,10,8,0,0,40,0, + 56,56,108,108,108,254,198,198,7,11,11,8,0,0,16,40, + 16,56,56,108,108,108,254,198,198,9,8,16,10,0,0,63, + 128,60,0,108,0,111,128,108,0,252,0,204,0,207,128,7, + 10,10,8,0,254,60,102,194,192,192,194,102,60,16,48,5, + 11,11,6,0,0,64,32,0,248,192,192,248,192,192,192,248, + 5,11,11,6,0,0,16,32,0,248,192,192,248,192,192,192, + 248,5,11,11,6,0,0,32,80,0,248,192,192,248,192,192, + 192,248,5,10,10,6,0,0,80,0,248,192,192,248,192,192, + 192,248,2,11,11,3,0,0,128,64,0,192,192,192,192,192, + 192,192,192,2,11,11,3,0,0,64,128,0,192,192,192,192, + 192,192,192,192,3,11,11,3,255,0,64,160,0,96,96,96, + 96,96,96,96,96,4,10,10,3,255,0,144,0,96,96,96, + 96,96,96,96,96,7,8,8,7,255,0,120,108,102,246,102, + 102,108,120,7,11,11,8,0,0,20,40,0,198,230,230,214, + 214,206,206,198,7,11,11,8,0,0,16,8,0,56,108,198, + 198,198,198,108,56,7,11,11,8,0,0,8,16,0,56,108, + 198,198,198,198,108,56,7,11,11,8,0,0,16,40,0,56, + 108,198,198,198,198,108,56,7,11,11,8,0,0,20,40,0, + 56,108,198,198,198,198,108,56,7,10,10,8,0,0,40,0, + 56,108,198,198,198,198,108,56,6,5,5,6,0,1,204,120, + 48,120,204,7,8,8,8,0,0,58,108,206,214,214,230,108, + 184,6,11,11,7,0,0,32,16,0,204,204,204,204,204,204, + 204,120,6,11,11,7,0,0,8,16,0,204,204,204,204,204, + 204,204,120,6,11,11,7,0,0,32,80,0,204,204,204,204, + 204,204,204,120,6,10,10,7,0,0,72,0,204,204,204,204, + 204,204,204,120,8,11,11,9,0,0,4,8,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,192,248,204,204,204, + 248,192,192,5,8,8,6,0,0,112,200,200,208,200,200,200, + 208,6,9,9,6,0,0,32,16,0,112,152,120,216,216,108, + 6,9,9,6,0,0,16,32,0,112,152,120,216,216,108,6, + 9,9,6,0,0,32,80,0,112,152,120,216,216,108,6,9, + 9,6,0,0,40,80,0,112,152,120,216,216,108,6,8,8, + 6,0,0,80,0,112,152,120,216,216,108,6,9,9,6,0, + 0,32,80,32,112,152,120,216,216,108,8,6,6,9,0,0, + 126,155,127,216,219,110,4,8,8,5,0,254,112,208,192,192, + 208,112,32,96,5,9,9,6,0,0,64,32,0,112,216,248, + 192,216,112,5,9,9,6,0,0,16,32,0,112,216,248,192, + 216,112,5,9,9,6,0,0,32,80,0,112,216,248,192,216, + 112,5,8,8,6,0,0,80,0,112,216,248,192,216,112,2, + 9,9,3,0,0,128,64,0,192,192,192,192,192,192,2,9, + 9,3,0,0,64,128,0,192,192,192,192,192,192,3,9,9, + 3,0,0,64,160,0,192,192,192,192,192,192,3,8,8,3, + 0,0,160,0,192,192,192,192,192,192,5,9,9,6,0,0, + 80,96,160,112,216,216,216,216,112,5,9,9,6,0,0,80, + 160,0,176,216,216,216,216,216,5,9,9,6,0,0,64,32, + 0,112,216,216,216,216,112,5,9,9,6,0,0,16,32,0, + 112,216,216,216,216,112,5,9,9,6,0,0,32,80,0,112, + 216,216,216,216,112,5,9,9,6,0,0,80,160,0,112,216, + 216,216,216,112,5,8,8,6,0,0,80,0,112,216,216,216, + 216,112,6,5,5,6,0,1,48,0,252,0,48,7,6,6, + 6,255,0,58,108,124,108,108,184,5,9,9,6,0,0,64, + 32,0,216,216,216,216,216,104,5,9,9,6,0,0,16,32, + 0,216,216,216,216,216,104,5,9,9,6,0,0,32,80,0, + 216,216,216,216,216,104,5,8,8,6,0,0,80,0,216,216, + 216,216,216,104,5,11,11,6,0,254,16,32,0,216,216,216, + 216,120,48,48,96,5,10,10,6,0,254,192,192,240,216,200, + 200,216,240,192,192,5,10,10,6,0,254,80,0,216,216,216, + 216,120,48,48,96}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=10 x= 1 y= 7 dx=11 dy= 0 ascent= 9 len=18 + Font Bounding box w=12 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB08r[1287] U8G_SECTION(".progmem.u8g_font_helvB08r") = { + 0,12,19,255,251,8,1,182,3,122,32,127,254,9,254,8, + 254,0,0,0,3,0,1,2,8,8,4,1,0,192,192,192, + 192,128,128,0,192,3,3,3,5,1,5,160,160,160,7,7, + 7,6,255,0,40,40,126,40,252,80,80,5,10,10,6,0, + 255,32,112,168,224,112,56,40,168,112,32,7,8,8,8,0, + 0,98,180,104,16,16,44,86,140,7,8,8,8,0,0,112, + 216,216,112,222,204,220,118,1,3,3,3,1,5,128,128,128, + 3,10,10,4,0,254,32,96,64,192,192,192,192,64,96,32, + 3,10,10,4,0,254,128,192,64,96,96,96,96,64,192,128, + 3,3,3,4,0,5,160,64,160,6,5,5,6,0,1,48, + 48,252,48,48,2,4,4,3,0,254,192,192,64,128,4,1, + 1,5,0,3,240,2,2,2,3,0,0,192,192,4,8,8, + 4,0,0,16,16,32,32,64,64,128,128,5,8,8,6,0, + 0,112,216,216,216,216,216,216,112,3,8,8,6,1,0,96, + 224,96,96,96,96,96,96,5,8,8,6,0,0,112,216,24, + 24,48,96,192,248,5,8,8,6,0,0,112,216,24,48,24, + 24,216,112,6,8,8,6,0,0,8,24,56,88,152,252,24, + 24,5,8,8,6,0,0,248,192,192,240,24,152,216,112,5, + 8,8,6,0,0,112,216,192,240,216,216,216,112,5,8,8, + 6,0,0,248,24,24,48,48,96,96,96,5,8,8,6,0, + 0,112,216,216,112,216,216,216,112,5,8,8,6,0,0,112, + 216,216,216,120,24,216,112,2,6,6,3,0,0,192,192,0, + 0,192,192,2,8,8,3,0,254,192,192,0,0,192,192,64, + 128,4,5,5,5,0,1,48,96,192,96,48,5,3,3,6, + 0,2,248,0,248,4,5,5,5,0,1,192,96,48,96,192, + 5,8,8,6,0,0,112,216,24,48,96,96,0,96,10,9, + 18,11,0,255,31,0,96,128,77,64,146,64,162,64,164,128, + 155,0,64,0,62,0,7,8,8,8,0,0,56,56,108,108, + 108,254,198,198,6,8,8,7,0,0,248,204,204,248,204,204, + 204,248,7,8,8,8,0,0,60,102,194,192,192,194,102,60, + 6,8,8,7,0,0,240,216,204,204,204,204,216,240,5,8, + 8,6,0,0,248,192,192,248,192,192,192,248,5,8,8,6, + 0,0,248,192,192,240,192,192,192,192,7,8,8,8,0,0, + 60,102,194,192,206,198,102,58,6,8,8,7,0,0,204,204, + 204,252,204,204,204,204,2,8,8,3,0,0,192,192,192,192, + 192,192,192,192,5,8,8,6,0,0,24,24,24,24,24,24, + 216,112,7,8,8,7,0,0,204,216,240,224,240,216,204,198, + 5,8,8,6,0,0,192,192,192,192,192,192,192,248,9,8, + 16,10,0,0,193,128,227,128,227,128,247,128,213,128,221,128, + 201,128,201,128,7,8,8,8,0,0,198,230,230,214,214,206, + 206,198,7,8,8,8,0,0,56,108,198,198,198,198,108,56, + 6,8,8,7,0,0,248,204,204,204,248,192,192,192,7,9, + 9,8,0,255,56,108,198,198,198,214,108,60,2,6,8,8, + 7,0,0,248,204,204,204,248,204,204,204,6,8,8,7,0, + 0,120,204,224,120,28,140,204,120,6,8,8,7,0,0,252, + 48,48,48,48,48,48,48,6,8,8,7,0,0,204,204,204, + 204,204,204,204,120,7,8,8,8,0,0,198,198,108,108,108, + 56,56,16,10,8,16,11,0,0,204,192,204,192,204,192,109, + 128,109,128,127,128,51,0,51,0,7,8,8,8,0,0,198, + 198,108,56,56,108,198,198,8,8,8,9,0,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,252,12,24,48,112, + 96,192,252,3,10,10,4,0,254,224,192,192,192,192,192,192, + 192,192,224,4,8,8,4,0,0,128,128,64,64,32,32,16, + 16,3,10,10,4,0,254,224,96,96,96,96,96,96,96,96, + 224,4,4,4,5,0,4,96,240,144,144,6,1,1,6,0, + 254,252,2,2,2,3,0,7,128,64,6,6,6,6,0,0, + 112,152,120,216,216,108,5,8,8,6,0,0,192,192,240,216, + 216,216,216,240,4,6,6,5,0,0,112,208,192,192,208,112, + 5,8,8,6,0,0,24,24,120,216,216,216,216,120,5,6, + 6,6,0,0,112,216,248,192,216,112,5,8,8,4,255,0, + 56,96,240,96,96,96,96,96,5,8,8,6,0,254,104,216, + 216,216,216,120,24,112,5,8,8,6,0,0,192,192,240,216, + 216,216,216,216,2,8,8,3,0,0,192,0,192,192,192,192, + 192,192,3,10,10,3,255,254,96,0,96,96,96,96,96,96, + 96,192,6,8,8,6,0,0,192,192,216,240,224,240,216,204, + 2,8,8,3,0,0,192,192,192,192,192,192,192,192,8,6, + 6,9,0,0,182,219,219,219,219,219,5,6,6,6,0,0, + 176,216,216,216,216,216,5,6,6,6,0,0,112,216,216,216, + 216,112,5,8,8,6,0,254,176,216,216,216,216,240,192,192, + 5,8,8,6,0,254,104,216,216,216,216,120,24,24,4,6, + 6,4,0,0,176,224,192,192,192,192,5,6,6,6,0,0, + 112,216,112,24,216,112,4,8,8,4,255,0,96,96,240,96, + 96,96,96,48,5,6,6,6,0,0,216,216,216,216,216,104, + 5,6,6,6,0,0,216,216,216,80,112,32,7,6,6,8, + 0,0,214,214,214,108,108,108,6,6,6,7,0,0,204,120, + 48,120,204,204,5,8,8,6,0,254,216,216,216,216,120,48, + 48,96,5,6,6,6,0,0,248,24,48,96,192,248,4,10, + 10,5,0,254,48,96,96,96,192,96,96,96,96,48,1,10, + 10,3,1,254,128,128,128,128,128,128,128,128,128,128,4,10, + 10,5,0,254,192,96,96,96,48,96,96,96,96,192,5,2, + 2,6,0,3,104,176,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 2 y= 9 dx=15 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=23 x=-1 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB10[3692] U8G_SECTION(".progmem.u8g_font_helvB10") = { + 0,17,23,255,250,11,2,27,4,205,32,255,253,14,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,192,128,128,0,192,192,5,3,3,7,1,8,216,216, + 144,9,10,20,9,0,0,27,0,27,0,27,0,127,128,54, + 0,54,0,255,0,108,0,108,0,108,0,7,14,14,8,0, + 254,16,124,214,214,208,240,120,28,22,214,214,124,16,16,12, + 11,22,13,0,0,120,64,204,192,205,128,121,0,3,0,6, + 0,4,0,13,224,11,48,27,48,17,224,9,10,20,11,1, + 0,56,0,108,0,108,0,56,0,115,0,251,0,206,0,198, + 0,207,0,125,128,2,3,3,4,1,8,192,192,128,4,14, + 14,5,1,253,48,96,96,192,192,192,192,192,192,192,192,96, + 96,48,4,14,14,5,0,253,192,96,96,48,48,48,48,48, + 48,48,48,96,96,192,5,4,4,6,0,7,32,248,112,216, + 8,7,7,9,0,1,24,24,24,255,24,24,24,3,3,3, + 4,0,255,96,96,192,3,1,1,4,0,4,224,2,2,2, + 4,1,0,192,192,4,11,11,4,0,0,16,16,48,32,32, + 96,64,64,192,128,128,7,11,11,8,0,0,56,108,198,198, + 198,198,198,198,198,108,56,4,11,11,8,1,0,48,240,48, + 48,48,48,48,48,48,48,48,7,11,11,8,0,0,124,198, + 198,6,14,12,24,48,96,192,254,7,11,11,8,0,0,124, + 198,198,6,6,60,6,6,198,198,124,8,11,11,8,0,0, + 6,14,30,54,102,198,198,255,6,6,6,7,11,11,8,0, + 0,126,96,96,192,252,14,6,6,198,204,120,7,11,11,8, + 0,0,60,102,102,192,220,230,198,198,198,198,124,7,11,11, + 8,0,0,254,6,12,12,24,24,48,48,96,96,96,7,11, + 11,8,0,0,124,198,198,198,198,124,198,198,198,198,124,7, + 11,11,8,0,0,124,198,198,198,198,198,126,6,198,204,120, + 2,8,8,5,2,0,192,192,0,0,0,0,192,192,3,9, + 9,5,1,255,96,96,0,0,0,0,96,96,192,6,5,5, + 8,1,2,28,112,192,112,28,7,3,3,9,1,3,254,0, + 254,6,5,5,8,1,2,224,56,12,56,224,7,11,11,9, + 1,0,124,198,198,6,12,24,48,48,0,48,48,13,12,24, + 14,0,255,15,128,56,224,112,112,102,176,205,152,217,152,219, + 24,219,48,206,224,96,0,49,128,31,0,10,11,22,10,0, + 0,12,0,12,0,30,0,18,0,51,0,51,0,97,128,127, + 128,97,128,192,192,192,192,8,11,11,10,1,0,254,199,195, + 195,198,252,198,195,195,199,254,9,11,22,11,1,0,31,0, + 123,128,96,128,192,0,192,0,192,0,192,0,192,0,96,128, + 123,128,31,0,9,11,22,11,1,0,252,0,199,0,195,0, + 193,128,193,128,193,128,193,128,193,128,195,0,199,0,252,0, + 7,11,11,9,1,0,254,192,192,192,192,254,192,192,192,192, + 254,7,11,11,9,1,0,254,192,192,192,192,252,192,192,192, + 192,192,9,11,22,11,1,0,31,0,123,128,96,128,192,0, + 192,0,199,128,193,128,193,128,97,128,123,128,30,128,8,11, + 11,10,1,0,195,195,195,195,195,255,195,195,195,195,195,2, + 11,11,4,1,0,192,192,192,192,192,192,192,192,192,192,192, + 7,11,11,8,0,0,6,6,6,6,6,6,6,198,198,238, + 124,9,11,22,10,1,0,195,0,198,0,204,0,216,0,240, + 0,240,0,216,0,204,0,198,0,195,0,193,128,7,11,11, + 8,1,0,192,192,192,192,192,192,192,192,192,192,254,11,11, + 22,13,1,0,192,96,192,96,224,224,224,224,241,224,209,96, + 209,96,219,96,202,96,206,96,196,96,9,11,22,11,1,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,11,22,12,1,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,97,128,115,128, + 30,0,8,11,11,10,1,0,254,199,195,195,199,254,192,192, + 192,192,192,10,11,22,12,1,0,30,0,115,128,97,128,192, + 192,192,192,192,192,192,192,198,192,99,128,115,128,30,192,9, + 11,22,11,1,0,254,0,199,0,195,0,195,0,198,0,254, + 0,199,0,195,0,195,0,195,0,193,128,8,11,11,10,1, + 0,126,231,195,224,120,30,7,3,195,238,124,8,11,11,8, + 0,0,255,24,24,24,24,24,24,24,24,24,24,9,11,22, + 11,1,0,193,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,10,11,22,10,0,0,192, + 192,192,192,97,128,97,128,115,128,51,0,51,0,30,0,30, + 0,12,0,12,0,14,11,22,14,0,0,195,12,195,12,195, + 12,103,152,100,152,100,152,108,216,44,208,56,112,24,96,24, + 96,9,11,22,9,0,0,193,128,193,128,99,0,54,0,28, + 0,28,0,54,0,99,0,99,0,193,128,193,128,10,11,22, + 10,0,0,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,12,0,12,0,8,11,11,9,0,0,255, + 3,6,12,28,24,48,112,96,192,255,4,14,14,5,1,253, + 240,192,192,192,192,192,192,192,192,192,192,192,192,240,4,11, + 11,4,0,0,128,128,192,64,64,96,32,32,48,16,16,4, + 14,14,5,0,253,240,48,48,48,48,48,48,48,48,48,48, + 48,48,240,6,5,5,8,1,6,48,120,72,204,204,8,1, + 1,8,0,253,255,3,2,2,5,1,9,192,96,7,8,8, + 8,1,0,120,204,12,124,204,204,220,118,7,11,11,9,1, + 0,192,192,192,216,236,198,198,198,198,236,216,6,8,8,8, + 1,0,56,108,204,192,192,204,108,56,7,11,11,9,1,0, + 6,6,6,54,110,198,198,198,198,110,54,6,8,8,8,1, + 0,120,204,204,252,192,192,236,120,5,11,11,4,0,0,56, + 96,96,240,96,96,96,96,96,96,96,7,11,11,9,1,253, + 58,110,198,198,198,198,110,54,6,206,124,7,11,11,9,1, + 0,192,192,192,220,238,198,198,198,198,198,198,2,11,11,4, + 1,0,192,192,0,192,192,192,192,192,192,192,192,3,14,14, + 4,0,253,96,96,0,96,96,96,96,96,96,96,96,96,224, + 192,6,11,11,8,1,0,192,192,192,204,216,240,240,216,216, + 204,204,2,11,11,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,10,8,16,12,1,0,219,128,238,192,204,192,204, + 192,204,192,204,192,204,192,204,192,7,8,8,9,1,0,220, + 238,198,198,198,198,198,198,7,8,8,9,1,0,56,108,198, + 198,198,198,108,56,7,11,11,9,1,253,216,236,198,198,198, + 198,236,216,192,192,192,7,11,11,9,1,253,54,110,198,198, + 198,198,110,54,6,6,6,5,8,8,6,1,0,216,248,192, + 192,192,192,192,192,6,8,8,8,1,0,120,204,224,120,28, + 12,236,120,5,10,10,5,0,0,96,96,248,96,96,96,96, + 96,104,48,7,8,8,9,1,0,198,198,198,198,198,198,238, + 118,8,8,8,8,0,0,195,195,102,102,36,60,24,24,10, + 8,16,10,0,0,204,192,204,192,204,192,109,128,109,128,51, + 0,51,0,51,0,7,8,8,7,0,0,198,198,108,56,56, + 108,198,198,8,11,11,8,0,253,195,195,102,102,36,60,24, + 24,24,48,112,6,8,8,6,0,0,252,12,24,48,48,96, + 192,252,5,14,14,6,0,253,24,48,48,48,48,96,192,96, + 48,48,48,48,48,24,1,14,14,4,2,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,5,14,14,6,1,253, + 192,96,96,96,96,48,24,48,96,96,96,96,96,192,7,3, + 3,9,1,3,114,222,140,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,1,2,11, + 11,4,1,253,192,192,0,64,64,192,192,192,192,192,192,7, + 10,10,8,0,255,4,60,110,200,208,208,230,102,124,64,8, + 11,11,8,0,0,60,102,102,96,252,48,48,48,96,251,222, + 7,7,7,8,0,2,130,124,108,108,108,124,130,8,11,11, + 9,0,0,195,195,195,102,102,60,126,24,126,24,24,1,14, + 14,4,2,253,128,128,128,128,128,128,0,0,128,128,128,128, + 128,128,6,14,14,8,1,253,120,204,204,224,120,220,204,204, + 236,120,28,204,204,120,5,2,2,5,0,9,216,216,10,11, + 22,12,1,0,30,0,97,128,76,128,210,192,144,64,144,64, + 144,64,146,64,76,128,97,128,30,0,5,7,7,6,0,4, + 112,144,112,208,248,0,248,7,5,5,9,1,2,54,108,216, + 108,54,7,4,4,9,1,2,254,254,2,2,3,1,1,4, + 0,4,224,10,11,22,12,1,0,30,0,97,128,92,128,146, + 64,146,64,156,64,146,64,146,64,82,128,97,128,30,0,5, + 1,1,5,0,9,248,4,4,4,6,1,7,96,144,144,96, + 8,9,9,9,0,0,24,24,24,255,24,24,24,0,255,4, + 6,6,5,0,5,96,176,48,96,192,240,4,6,6,5,0, + 5,96,176,96,48,176,96,3,2,2,5,1,9,96,192,7, + 11,11,9,1,253,198,198,198,198,198,198,238,246,192,192,192, + 8,14,14,8,0,253,63,122,250,250,250,122,58,10,10,10, + 10,10,10,10,2,2,2,4,1,3,192,192,5,3,3,5, + 0,253,24,216,112,3,6,6,4,0,5,96,224,96,96,96, + 96,5,7,7,6,0,4,112,216,216,216,112,0,248,7,5, + 5,9,1,2,216,108,54,108,216,12,11,22,12,0,0,97, + 128,225,128,99,0,99,0,102,0,102,32,6,96,12,224,13, + 96,25,240,24,96,11,11,22,12,0,0,97,128,225,128,99, + 0,99,0,102,0,102,192,7,96,12,96,12,192,25,128,25, + 224,12,11,22,12,0,0,97,128,177,128,99,0,51,0,182, + 0,102,32,6,96,12,224,13,96,25,240,24,96,7,11,11, + 9,1,253,24,24,0,24,24,48,96,192,198,198,124,10,14, + 28,10,0,0,24,0,12,0,0,0,12,0,12,0,30,0, + 18,0,51,0,51,0,97,128,127,128,97,128,192,192,192,192, + 10,14,28,10,0,0,6,0,12,0,0,0,12,0,12,0, + 30,0,18,0,51,0,51,0,97,128,127,128,97,128,192,192, + 192,192,10,14,28,10,0,0,14,0,27,0,0,0,12,0, + 12,0,30,0,18,0,51,0,51,0,97,128,127,128,97,128, + 192,192,192,192,10,14,28,10,0,0,13,0,22,0,0,0, + 12,0,12,0,30,0,18,0,51,0,51,0,97,128,127,128, + 97,128,192,192,192,192,10,14,28,10,0,0,51,0,51,0, + 0,0,12,0,12,0,30,0,18,0,51,0,51,0,97,128, + 127,128,97,128,192,192,192,192,10,14,28,10,0,0,12,0, + 18,0,12,0,12,0,12,0,30,0,18,0,51,0,51,0, + 97,128,127,128,97,128,192,192,192,192,14,11,22,15,0,0, + 15,252,15,0,27,0,19,0,51,0,51,248,99,0,127,0, + 99,0,195,0,195,252,9,14,28,11,1,253,31,0,123,128, + 96,128,192,0,192,0,192,0,192,0,192,0,96,128,123,128, + 31,0,6,0,54,0,28,0,7,14,14,9,1,0,48,24, + 0,254,192,192,192,192,254,192,192,192,192,254,7,14,14,9, + 1,0,12,24,0,254,192,192,192,192,254,192,192,192,192,254, + 7,14,14,9,1,0,28,54,0,254,192,192,192,192,254,192, + 192,192,192,254,7,14,14,9,1,0,108,108,0,254,192,192, + 192,192,254,192,192,192,192,254,3,14,14,4,0,0,192,96, + 0,96,96,96,96,96,96,96,96,96,96,96,3,14,14,4, + 1,0,96,192,0,192,192,192,192,192,192,192,192,192,192,192, + 5,14,14,4,0,0,112,216,0,96,96,96,96,96,96,96, + 96,96,96,96,5,14,14,4,0,0,216,216,0,96,96,96, + 96,96,96,96,96,96,96,96,10,11,22,11,0,0,126,0, + 99,128,97,128,96,192,96,192,248,192,96,192,96,192,97,128, + 99,128,126,0,9,14,28,11,1,0,26,0,44,0,0,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,14,28,12,1,0,24,0,12,0, + 0,0,30,0,115,128,97,128,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,14,28,12,1,0,6,0, + 12,0,0,0,30,0,115,128,97,128,192,192,192,192,192,192, + 192,192,192,192,97,128,115,128,30,0,10,14,28,12,1,0, + 14,0,27,0,0,0,30,0,115,128,97,128,192,192,192,192, + 192,192,192,192,192,192,97,128,115,128,30,0,10,14,28,12, + 1,0,13,0,22,0,0,0,30,0,115,128,97,128,192,192, + 192,192,192,192,192,192,192,192,97,128,115,128,30,0,10,14, + 28,12,1,0,51,0,51,0,0,0,30,0,115,128,97,128, + 192,192,192,192,192,192,192,192,192,192,97,128,115,128,30,0, + 8,7,7,9,0,1,195,102,60,24,60,102,195,12,11,22, + 12,0,0,15,48,57,224,48,192,97,224,99,96,102,96,108, + 96,120,96,48,192,121,192,207,0,9,14,28,11,1,0,24, + 0,12,0,0,0,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,0,62,0,9,14,28,11,1, + 0,6,0,12,0,0,0,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,99,0,62,0,9,14,28, + 11,1,0,28,0,54,0,0,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,193,128,99,0,62,0,9, + 14,28,11,1,0,99,0,99,0,0,0,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,10,0,0,6,0,12,0,0,0,192,192,97, + 128,97,128,51,0,51,0,30,0,30,0,12,0,12,0,12, + 0,12,0,8,11,11,10,1,0,192,192,254,199,195,195,199, + 254,192,192,192,6,11,11,8,1,0,120,204,204,204,216,216, + 204,204,204,204,216,7,11,11,8,1,0,48,24,0,120,204, + 12,124,204,204,220,118,7,11,11,8,1,0,24,48,0,120, + 204,12,124,204,204,220,118,7,11,11,8,1,0,56,108,0, + 120,204,12,124,204,204,220,118,7,11,11,8,1,0,52,88, + 0,120,204,12,124,204,204,220,118,7,11,11,8,1,0,108, + 108,0,120,204,12,124,204,204,220,118,7,11,11,8,1,0, + 48,72,48,120,204,12,124,204,204,220,118,11,8,16,13,1, + 0,123,192,206,96,12,96,127,224,204,0,204,0,222,96,119, + 192,7,11,11,9,1,253,60,102,198,192,192,198,102,60,24, + 88,112,6,11,11,8,1,0,96,48,0,120,204,204,252,192, + 192,236,120,6,11,11,8,1,0,24,48,0,120,204,204,252, + 192,192,236,120,6,11,11,8,1,0,56,108,0,120,204,204, + 252,192,192,236,120,6,11,11,8,1,0,108,108,0,120,204, + 204,252,192,192,236,120,3,11,11,4,0,0,192,96,0,96, + 96,96,96,96,96,96,96,3,11,11,4,1,0,96,192,0, + 192,192,192,192,192,192,192,192,5,11,11,4,0,0,112,216, + 0,96,96,96,96,96,96,96,96,5,11,11,4,0,0,216, + 216,0,96,96,96,96,96,96,96,96,7,11,11,9,1,0, + 108,56,72,60,108,198,198,198,198,108,56,7,11,11,9,1, + 0,52,88,0,220,238,198,198,198,198,198,198,7,11,11,9, + 1,0,48,24,0,56,108,198,198,198,198,108,56,7,11,11, + 9,1,0,24,48,0,56,108,198,198,198,198,108,56,7,11, + 11,9,1,0,56,108,0,56,108,198,198,198,198,108,56,7, + 11,11,9,1,0,52,88,0,56,108,198,198,198,198,108,56, + 7,11,11,9,1,0,108,108,0,56,108,198,198,198,198,108, + 56,8,7,7,9,0,1,24,24,0,255,0,24,24,7,8, + 8,9,1,0,58,108,206,214,214,230,108,184,7,11,11,9, + 1,0,48,24,0,198,198,198,198,198,198,238,118,7,11,11, + 9,1,0,12,24,0,198,198,198,198,198,198,238,118,7,11, + 11,9,1,0,56,108,0,198,198,198,198,198,198,238,118,7, + 11,11,9,1,0,108,108,0,198,198,198,198,198,198,238,118, + 8,14,14,8,0,253,12,24,0,195,195,102,102,36,60,24, + 24,24,48,112,7,14,14,9,1,253,192,192,192,216,236,198, + 198,198,198,236,216,192,192,192,8,14,14,8,0,253,54,54, + 0,195,195,102,102,36,60,24,24,24,48,112}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 2 y= 9 dx=14 dy= 0 ascent=12 len=24 + Font Bounding box w=17 h=23 x=-1 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB10r[1720] U8G_SECTION(".progmem.u8g_font_helvB10r") = { + 0,17,23,255,250,11,2,27,4,205,32,127,253,12,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,192,128,128,0,192,192,5,3,3,7,1,8,216,216, + 144,9,10,20,9,0,0,27,0,27,0,27,0,127,128,54, + 0,54,0,255,0,108,0,108,0,108,0,7,14,14,8,0, + 254,16,124,214,214,208,240,120,28,22,214,214,124,16,16,12, + 11,22,13,0,0,120,64,204,192,205,128,121,0,3,0,6, + 0,4,0,13,224,11,48,27,48,17,224,9,10,20,11,1, + 0,56,0,108,0,108,0,56,0,115,0,251,0,206,0,198, + 0,207,0,125,128,2,3,3,4,1,8,192,192,128,4,14, + 14,5,1,253,48,96,96,192,192,192,192,192,192,192,192,96, + 96,48,4,14,14,5,0,253,192,96,96,48,48,48,48,48, + 48,48,48,96,96,192,5,4,4,6,0,7,32,248,112,216, + 8,7,7,9,0,1,24,24,24,255,24,24,24,3,3,3, + 4,0,255,96,96,192,3,1,1,4,0,4,224,2,2,2, + 4,1,0,192,192,4,11,11,4,0,0,16,16,48,32,32, + 96,64,64,192,128,128,7,11,11,8,0,0,56,108,198,198, + 198,198,198,198,198,108,56,4,11,11,8,1,0,48,240,48, + 48,48,48,48,48,48,48,48,7,11,11,8,0,0,124,198, + 198,6,14,12,24,48,96,192,254,7,11,11,8,0,0,124, + 198,198,6,6,60,6,6,198,198,124,8,11,11,8,0,0, + 6,14,30,54,102,198,198,255,6,6,6,7,11,11,8,0, + 0,126,96,96,192,252,14,6,6,198,204,120,7,11,11,8, + 0,0,60,102,102,192,220,230,198,198,198,198,124,7,11,11, + 8,0,0,254,6,12,12,24,24,48,48,96,96,96,7,11, + 11,8,0,0,124,198,198,198,198,124,198,198,198,198,124,7, + 11,11,8,0,0,124,198,198,198,198,198,126,6,198,204,120, + 2,8,8,5,2,0,192,192,0,0,0,0,192,192,3,9, + 9,5,1,255,96,96,0,0,0,0,96,96,192,6,5,5, + 8,1,2,28,112,192,112,28,7,3,3,9,1,3,254,0, + 254,6,5,5,8,1,2,224,56,12,56,224,7,11,11,9, + 1,0,124,198,198,6,12,24,48,48,0,48,48,13,12,24, + 14,0,255,15,128,56,224,112,112,102,176,205,152,217,152,219, + 24,219,48,206,224,96,0,49,128,31,0,10,11,22,10,0, + 0,12,0,12,0,30,0,18,0,51,0,51,0,97,128,127, + 128,97,128,192,192,192,192,8,11,11,10,1,0,254,199,195, + 195,198,252,198,195,195,199,254,9,11,22,11,1,0,31,0, + 123,128,96,128,192,0,192,0,192,0,192,0,192,0,96,128, + 123,128,31,0,9,11,22,11,1,0,252,0,199,0,195,0, + 193,128,193,128,193,128,193,128,193,128,195,0,199,0,252,0, + 7,11,11,9,1,0,254,192,192,192,192,254,192,192,192,192, + 254,7,11,11,9,1,0,254,192,192,192,192,252,192,192,192, + 192,192,9,11,22,11,1,0,31,0,123,128,96,128,192,0, + 192,0,199,128,193,128,193,128,97,128,123,128,30,128,8,11, + 11,10,1,0,195,195,195,195,195,255,195,195,195,195,195,2, + 11,11,4,1,0,192,192,192,192,192,192,192,192,192,192,192, + 7,11,11,8,0,0,6,6,6,6,6,6,6,198,198,238, + 124,9,11,22,10,1,0,195,0,198,0,204,0,216,0,240, + 0,240,0,216,0,204,0,198,0,195,0,193,128,7,11,11, + 8,1,0,192,192,192,192,192,192,192,192,192,192,254,11,11, + 22,13,1,0,192,96,192,96,224,224,224,224,241,224,209,96, + 209,96,219,96,202,96,206,96,196,96,9,11,22,11,1,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,11,22,12,1,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,97,128,115,128, + 30,0,8,11,11,10,1,0,254,199,195,195,199,254,192,192, + 192,192,192,10,11,22,12,1,0,30,0,115,128,97,128,192, + 192,192,192,192,192,192,192,198,192,99,128,115,128,30,192,9, + 11,22,11,1,0,254,0,199,0,195,0,195,0,198,0,254, + 0,199,0,195,0,195,0,195,0,193,128,8,11,11,10,1, + 0,126,231,195,224,120,30,7,3,195,238,124,8,11,11,8, + 0,0,255,24,24,24,24,24,24,24,24,24,24,9,11,22, + 11,1,0,193,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,10,11,22,10,0,0,192, + 192,192,192,97,128,97,128,115,128,51,0,51,0,30,0,30, + 0,12,0,12,0,14,11,22,14,0,0,195,12,195,12,195, + 12,103,152,100,152,100,152,108,216,44,208,56,112,24,96,24, + 96,9,11,22,9,0,0,193,128,193,128,99,0,54,0,28, + 0,28,0,54,0,99,0,99,0,193,128,193,128,10,11,22, + 10,0,0,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,12,0,12,0,8,11,11,9,0,0,255, + 3,6,12,28,24,48,112,96,192,255,4,14,14,5,1,253, + 240,192,192,192,192,192,192,192,192,192,192,192,192,240,4,11, + 11,4,0,0,128,128,192,64,64,96,32,32,48,16,16,4, + 14,14,5,0,253,240,48,48,48,48,48,48,48,48,48,48, + 48,48,240,6,5,5,8,1,6,48,120,72,204,204,8,1, + 1,8,0,253,255,3,2,2,5,1,9,192,96,7,8,8, + 8,1,0,120,204,12,124,204,204,220,118,7,11,11,9,1, + 0,192,192,192,216,236,198,198,198,198,236,216,6,8,8,8, + 1,0,56,108,204,192,192,204,108,56,7,11,11,9,1,0, + 6,6,6,54,110,198,198,198,198,110,54,6,8,8,8,1, + 0,120,204,204,252,192,192,236,120,5,11,11,4,0,0,56, + 96,96,240,96,96,96,96,96,96,96,7,11,11,9,1,253, + 58,110,198,198,198,198,110,54,6,206,124,7,11,11,9,1, + 0,192,192,192,220,238,198,198,198,198,198,198,2,11,11,4, + 1,0,192,192,0,192,192,192,192,192,192,192,192,3,14,14, + 4,0,253,96,96,0,96,96,96,96,96,96,96,96,96,224, + 192,6,11,11,8,1,0,192,192,192,204,216,240,240,216,216, + 204,204,2,11,11,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,10,8,16,12,1,0,219,128,238,192,204,192,204, + 192,204,192,204,192,204,192,204,192,7,8,8,9,1,0,220, + 238,198,198,198,198,198,198,7,8,8,9,1,0,56,108,198, + 198,198,198,108,56,7,11,11,9,1,253,216,236,198,198,198, + 198,236,216,192,192,192,7,11,11,9,1,253,54,110,198,198, + 198,198,110,54,6,6,6,5,8,8,6,1,0,216,248,192, + 192,192,192,192,192,6,8,8,8,1,0,120,204,224,120,28, + 12,236,120,5,10,10,5,0,0,96,96,248,96,96,96,96, + 96,104,48,7,8,8,9,1,0,198,198,198,198,198,198,238, + 118,8,8,8,8,0,0,195,195,102,102,36,60,24,24,10, + 8,16,10,0,0,204,192,204,192,204,192,109,128,109,128,51, + 0,51,0,51,0,7,8,8,7,0,0,198,198,108,56,56, + 108,198,198,8,11,11,8,0,253,195,195,102,102,36,60,24, + 24,24,48,112,6,8,8,6,0,0,252,12,24,48,48,96, + 192,252,5,14,14,6,0,253,24,48,48,48,48,96,192,96, + 48,48,48,48,48,24,1,14,14,4,2,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,5,14,14,6,1,253, + 192,96,96,96,96,48,24,48,96,96,96,96,96,192,7,3, + 3,9,1,3,114,222,140,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=17 x= 2 y=10 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=27 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB12[4077] U8G_SECTION(".progmem.u8g_font_helvB12") = { + 0,20,27,254,249,12,2,74,5,106,32,255,252,16,252,12, + 252,0,0,0,5,0,1,2,12,12,6,2,0,192,192,192, + 192,192,192,128,128,128,0,192,192,5,4,4,8,1,8,216, + 216,216,72,9,12,24,9,0,0,27,0,27,0,27,0,127, + 128,127,128,54,0,54,0,255,0,255,0,108,0,108,0,108, + 0,7,14,14,9,1,255,16,124,254,214,208,240,120,60,30, + 22,214,254,124,16,13,12,24,14,0,0,48,64,120,128,204, + 128,205,0,121,0,50,0,2,96,4,240,5,152,9,152,8, + 240,16,96,10,12,24,12,1,0,60,0,126,0,102,0,102, + 0,60,0,56,192,125,192,207,128,199,0,199,0,127,128,57, + 192,2,4,4,4,1,8,192,192,192,64,4,15,15,6,1, + 253,48,112,96,192,192,192,192,192,192,192,192,192,96,112,48, + 4,15,15,6,0,253,192,224,96,48,48,48,48,48,48,48, + 48,48,96,224,192,5,5,5,6,0,7,32,168,112,112,136, + 8,8,8,10,1,0,24,24,24,255,255,24,24,24,2,5, + 5,4,1,253,192,192,64,64,128,4,2,2,5,0,3,240, + 240,2,2,2,4,1,0,192,192,4,12,12,5,0,0,16, + 16,48,32,32,96,64,64,192,128,128,128,8,12,12,9,0, + 0,60,126,231,195,195,195,195,195,195,231,126,60,5,12,12, + 9,1,0,8,24,248,248,24,24,24,24,24,24,24,24,8, + 12,12,9,0,0,60,126,231,195,195,7,14,28,56,112,255, + 255,8,12,12,9,0,0,60,126,231,195,7,30,30,7,195, + 231,126,60,8,12,12,9,0,0,14,30,54,54,102,102,198, + 255,255,6,6,6,8,12,12,9,0,0,63,63,48,48,124, + 126,71,3,3,231,126,60,8,12,12,9,0,0,60,126,231, + 192,220,254,231,195,195,231,126,60,8,12,12,9,0,0,255, + 255,6,6,12,12,24,24,24,48,48,48,8,12,12,9,0, + 0,60,126,231,195,102,60,126,231,195,231,126,60,8,12,12, + 9,0,0,60,126,231,195,195,231,127,59,3,231,126,60,2, + 8,8,5,2,0,192,192,0,0,0,0,192,192,2,11,11, + 5,2,253,192,192,0,0,0,0,192,192,64,64,128,8,8, + 8,10,1,0,3,15,60,224,224,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,0,192,240, + 60,7,7,60,240,192,7,12,12,10,1,0,124,254,198,198, + 6,14,12,24,24,0,24,24,13,14,28,16,1,254,15,192, + 56,96,96,16,71,216,204,72,136,200,152,200,152,136,153,152, + 201,144,70,96,96,0,56,192,15,128,11,12,24,12,0,0, + 14,0,14,0,31,0,27,0,59,128,49,128,113,192,96,192, + 127,192,255,224,192,96,192,96,9,12,24,11,1,0,254,0, + 255,0,195,128,193,128,195,128,255,0,255,0,195,128,193,128, + 195,128,255,0,254,0,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,10,12,24,12,1,0,252,0,255,0,195,128, + 193,128,193,192,192,192,192,192,193,192,193,128,195,128,255,0, + 252,0,8,12,12,10,1,0,255,255,192,192,192,254,254,192, + 192,192,255,255,8,12,12,10,1,0,255,255,192,192,192,254, + 254,192,192,192,192,192,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,195,192,227,192,96,192,113,192, + 63,192,30,192,10,12,24,12,1,0,192,192,192,192,192,192, + 192,192,255,192,255,192,192,192,192,192,192,192,192,192,192,192, + 192,192,2,12,12,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,7,12,12,9,1,0,6,6,6,6,6,6, + 6,6,198,198,254,124,11,12,24,12,1,0,193,192,195,128, + 199,0,206,0,220,0,248,0,252,0,206,0,199,0,195,128, + 193,192,192,224,8,12,12,10,1,0,192,192,192,192,192,192, + 192,192,192,192,255,255,11,12,24,13,1,0,224,224,224,224, + 224,224,241,224,241,224,209,96,219,96,219,96,202,96,206,96, + 206,96,196,96,10,12,24,12,1,0,224,192,240,192,240,192, + 216,192,216,192,204,192,204,192,198,192,198,192,195,192,195,192, + 193,192,11,12,24,13,1,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 9,12,24,11,1,0,254,0,255,0,195,128,193,128,193,128, + 195,128,255,0,254,0,192,0,192,0,192,0,192,0,11,13, + 26,13,1,255,31,0,63,128,113,192,96,192,224,224,192,96, + 192,96,226,96,103,192,115,192,63,128,31,192,0,128,10,12, + 24,12,1,0,255,0,255,128,193,128,193,128,195,128,255,0, + 255,0,195,128,193,128,193,128,193,192,193,192,9,12,24,11, + 1,0,62,0,127,0,227,128,193,128,240,0,126,0,31,0, + 3,128,193,128,227,128,127,0,62,0,10,12,24,10,0,0, + 255,192,255,192,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,10,12,24,12,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,12,24,11,0,0,192,192,192,192, + 97,128,97,128,97,128,51,0,51,0,51,0,30,0,30,0, + 12,0,12,0,14,12,24,15,0,0,195,12,195,12,195,12, + 99,24,103,152,103,152,52,176,60,240,60,240,24,96,24,96, + 24,96,9,12,24,11,1,0,193,128,227,128,99,0,54,0, + 62,0,28,0,28,0,62,0,54,0,99,0,227,128,193,128, + 10,12,24,11,0,0,192,192,225,192,97,128,51,0,51,0, + 30,0,30,0,12,0,12,0,12,0,12,0,12,0,8,12, + 12,10,1,0,255,255,7,6,12,28,56,48,96,224,255,255, + 4,15,15,6,1,253,240,240,192,192,192,192,192,192,192,192, + 192,192,192,240,240,4,12,12,5,0,0,128,128,192,64,64, + 96,32,32,48,16,16,16,4,15,15,6,0,253,240,240,48, + 48,48,48,48,48,48,48,48,48,48,240,240,8,7,7,10, + 1,5,24,24,60,102,102,195,195,9,1,2,9,0,253,255, + 128,3,3,3,6,2,10,128,192,32,8,9,9,9,1,0, + 124,254,198,14,126,230,198,254,119,8,12,12,10,1,0,192, + 192,192,220,254,231,195,195,195,231,254,220,8,9,9,9,1, + 0,60,126,231,192,192,192,231,126,60,8,12,12,10,1,0, + 3,3,3,63,127,231,195,195,195,231,127,59,8,9,9,10, + 1,0,60,126,195,255,255,192,231,126,60,4,12,12,6,1, + 0,48,112,96,240,240,96,96,96,96,96,96,96,8,13,13, + 10,1,252,59,127,231,195,195,195,231,127,59,3,231,126,60, + 8,12,12,10,1,0,192,192,192,222,255,227,195,195,195,195, + 195,195,2,12,12,4,1,0,192,192,0,192,192,192,192,192, + 192,192,192,192,3,16,16,5,1,252,96,96,0,96,96,96, + 96,96,96,96,96,96,96,96,224,192,8,12,12,9,1,0, + 192,192,192,199,206,220,248,252,236,206,198,199,2,12,12,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,192,12,9, + 18,14,1,0,222,224,255,240,231,48,198,48,198,48,198,48, + 198,48,198,48,198,48,8,9,9,10,1,0,222,255,227,195, + 195,195,195,195,195,8,9,9,10,1,0,60,126,231,195,195, + 195,231,126,60,8,13,13,10,1,252,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,13,13,10,1,252,59,127,231, + 195,195,195,231,127,59,3,3,3,3,5,9,9,6,1,0, + 216,248,224,192,192,192,192,192,192,7,9,9,9,1,0,124, + 254,198,240,124,14,198,254,124,4,11,11,6,1,0,96,96, + 240,240,96,96,96,96,96,112,48,8,9,9,10,1,0,195, + 195,195,195,195,195,199,255,123,8,9,9,9,0,0,195,195, + 102,102,102,60,60,24,24,12,9,18,13,0,0,198,48,198, + 48,102,96,102,96,111,96,63,192,57,192,25,128,25,128,7, + 9,9,9,1,0,198,198,108,124,56,124,108,198,198,8,13, + 13,9,0,252,195,195,99,102,54,54,60,28,24,24,24,112, + 96,7,9,9,8,0,0,254,254,14,28,24,56,112,254,254, + 4,15,15,6,1,253,48,112,96,96,96,96,96,192,96,96, + 96,96,96,112,48,1,16,16,4,1,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,192,224,96,96,96,96,96,48,96,96,96,96,96,224,192, + 8,3,3,10,1,3,113,153,142,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,5,0,1, + 2,12,12,6,1,253,192,192,0,64,64,64,192,192,192,192, + 192,192,8,11,11,9,0,255,4,60,126,239,200,216,208,247, + 126,60,32,8,12,12,9,0,0,28,62,99,99,96,48,124, + 48,48,32,127,255,7,7,7,9,1,2,186,124,198,198,198, + 124,186,8,12,12,9,0,0,195,195,102,102,60,24,126,24, + 126,24,24,24,1,16,16,5,2,252,128,128,128,128,128,128, + 128,0,0,128,128,128,128,128,128,128,8,15,15,9,0,253, + 60,126,102,96,120,126,199,195,243,126,30,6,102,126,60,5, + 2,2,6,0,10,216,216,12,12,24,12,0,0,15,0,57, + 192,96,96,79,32,217,176,144,16,144,16,217,176,79,32,96, + 32,57,192,15,0,5,7,7,6,1,5,96,144,112,144,120, + 0,248,8,6,6,9,0,2,51,102,204,204,102,51,8,5, + 5,10,0,2,255,255,3,3,3,4,2,2,5,0,3,240, + 240,12,12,24,12,0,0,15,0,57,192,96,96,95,32,217, + 176,153,144,158,16,219,48,91,32,96,96,57,192,15,0,5, + 1,1,6,0,10,248,4,5,5,7,1,7,96,144,144,144, + 96,8,11,11,10,1,0,24,24,24,255,255,24,24,24,0, + 255,255,5,7,7,6,0,5,112,216,216,48,96,248,248,5, + 7,7,6,0,5,112,216,24,48,24,216,112,3,3,3,6, + 1,10,32,96,128,8,12,12,10,1,253,195,195,195,195,195, + 195,199,255,251,192,192,192,8,15,15,9,0,253,127,242,242, + 242,242,242,114,18,18,18,18,18,18,18,18,2,2,2,5, + 1,4,192,192,5,4,4,6,0,252,32,48,152,112,4,7, + 7,6,1,5,48,240,240,48,48,48,48,5,7,7,6,0, + 5,112,216,136,216,112,0,248,8,6,6,9,1,2,204,102, + 51,51,102,204,13,12,24,14,1,0,48,192,240,128,241,128, + 49,0,51,48,50,112,54,240,4,176,13,176,9,248,24,48, + 16,48,12,12,24,14,0,0,48,128,241,128,241,0,51,0, + 50,0,54,224,53,176,13,176,8,96,24,192,17,240,49,240, + 13,12,24,14,0,0,112,64,216,192,24,128,49,128,25,48, + 219,112,114,240,6,176,5,176,13,248,8,48,24,48,7,12, + 12,10,1,253,48,48,0,48,48,96,224,192,198,198,254,124, + 11,16,32,12,0,0,16,0,24,0,4,0,0,0,14,0, + 14,0,31,0,27,0,59,128,49,128,113,192,96,192,127,192, + 255,224,192,96,192,96,11,16,32,12,0,0,2,0,6,0, + 8,0,0,0,14,0,14,0,31,0,27,0,59,128,49,128, + 113,192,96,192,127,192,255,224,192,96,192,96,11,16,32,12, + 0,0,4,0,14,0,17,0,0,0,14,0,14,0,31,0, + 27,0,59,128,49,128,113,192,96,192,127,192,255,224,192,96, + 192,96,11,15,30,12,0,0,14,128,23,0,0,0,14,0, + 14,0,31,0,27,0,59,128,49,128,113,192,96,192,127,192, + 255,224,192,96,192,96,11,15,30,12,0,0,49,128,49,128, + 0,0,14,0,14,0,31,0,27,0,59,128,49,128,113,192, + 96,192,127,192,255,224,192,96,192,96,11,16,32,12,0,0, + 12,0,18,0,18,0,12,0,14,0,14,0,31,0,27,0, + 59,128,49,128,113,192,96,192,127,192,255,224,192,96,192,96, + 14,12,24,15,0,0,31,252,31,252,27,0,51,0,51,0, + 51,248,99,248,127,0,127,0,195,0,195,252,195,252,10,16, + 32,12,1,252,31,0,63,128,113,192,96,192,224,0,192,0, + 192,0,224,0,96,192,113,192,63,128,31,0,4,0,6,0, + 19,0,14,0,8,16,16,10,1,0,32,48,8,0,255,255, + 192,192,192,254,254,192,192,192,255,255,8,16,16,10,1,0, + 4,12,16,0,255,255,192,192,192,254,254,192,192,192,255,255, + 8,16,16,10,1,0,8,28,34,0,255,255,192,192,192,254, + 254,192,192,192,255,255,8,15,15,10,1,0,102,102,0,255, + 255,192,192,192,254,254,192,192,192,255,255,3,16,16,4,0, + 0,128,192,32,0,96,96,96,96,96,96,96,96,96,96,96, + 96,3,16,16,4,1,0,32,96,128,0,192,192,192,192,192, + 192,192,192,192,192,192,192,5,16,16,4,0,0,32,112,136, + 0,96,96,96,96,96,96,96,96,96,96,96,96,6,15,15, + 4,255,0,204,204,0,48,48,48,48,48,48,48,48,48,48, + 48,48,12,12,24,12,0,0,63,0,63,192,48,224,48,96, + 48,112,252,48,252,48,48,112,48,96,48,224,63,192,63,0, + 10,15,30,12,1,0,29,0,46,0,0,0,224,192,240,192, + 240,192,216,192,216,192,204,192,204,192,198,192,198,192,195,192, + 195,192,193,192,11,16,32,13,1,0,8,0,12,0,2,0, + 0,0,31,0,63,128,113,192,96,192,224,224,192,96,192,96, + 224,224,96,192,113,192,63,128,31,0,11,16,32,13,1,0, + 1,0,3,0,4,0,0,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 11,16,32,13,1,0,4,0,14,0,17,0,0,0,31,0, + 63,128,113,192,96,192,224,224,192,96,192,96,224,224,96,192, + 113,192,63,128,31,0,11,15,30,13,1,0,14,128,23,0, + 0,0,31,0,63,128,113,192,96,192,224,224,192,96,192,96, + 224,224,96,192,113,192,63,128,31,0,11,15,30,13,1,0, + 25,128,25,128,0,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,224,224,96,192,113,192,63,128,31,0,9,9, + 18,10,0,0,65,0,227,128,119,0,62,0,28,0,62,0, + 119,0,227,128,65,0,11,12,24,13,1,0,31,32,63,192, + 112,192,97,192,227,96,198,96,204,96,216,224,112,192,97,192, + 127,128,159,0,10,16,32,12,1,0,16,0,24,0,4,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,16,32,12,1,0, + 2,0,6,0,8,0,0,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,225,192,127,128,63,0, + 10,16,32,12,1,0,4,0,14,0,17,0,0,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,15,30,12,1,0,51,0,51,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,16,32,11,0,0, + 2,0,6,0,8,0,0,0,192,192,225,192,97,128,51,0, + 51,0,30,0,30,0,12,0,12,0,12,0,12,0,12,0, + 9,12,24,11,1,0,192,0,254,0,255,0,195,128,193,128, + 193,128,195,128,255,0,254,0,192,0,192,0,192,0,8,12, + 12,10,1,0,124,254,198,198,220,222,195,195,195,195,222,220, + 8,13,13,9,1,0,32,48,8,0,124,254,198,14,126,230, + 198,254,119,8,13,13,9,1,0,4,12,16,0,124,254,198, + 14,126,230,198,254,119,8,13,13,9,1,0,16,56,68,0, + 124,254,198,14,126,230,198,254,119,8,12,12,9,1,0,58, + 92,0,124,254,198,14,126,230,198,254,119,8,12,12,9,1, + 0,108,108,0,124,254,198,14,126,230,198,254,119,8,13,13, + 9,1,0,24,36,36,24,124,254,198,14,126,230,198,254,119, + 13,9,18,15,1,0,125,224,255,240,198,24,15,248,127,248, + 230,0,207,56,255,240,121,224,8,13,13,9,1,252,60,126, + 231,192,192,192,231,126,60,16,24,76,56,8,13,13,10,1, + 0,32,48,8,0,60,126,195,255,255,192,231,126,60,8,13, + 13,10,1,0,4,12,16,0,60,126,195,255,255,192,231,126, + 60,8,13,13,10,1,0,8,28,34,0,60,126,195,255,255, + 192,231,126,60,8,12,12,10,1,0,54,54,0,60,126,195, + 255,255,192,231,126,60,3,13,13,4,0,0,128,192,32,0, + 96,96,96,96,96,96,96,96,96,3,13,13,4,1,0,32, + 96,128,0,192,192,192,192,192,192,192,192,192,5,13,13,4, + 0,0,32,112,136,0,96,96,96,96,96,96,96,96,96,5, + 12,12,4,0,0,216,216,0,96,96,96,96,96,96,96,96, + 96,8,12,12,10,1,0,96,124,248,28,126,231,195,195,195, + 231,126,60,8,12,12,10,1,0,58,92,0,222,255,227,195, + 195,195,195,195,195,8,13,13,10,1,0,32,48,8,0,60, + 126,231,195,195,195,231,126,60,8,13,13,10,1,0,8,24, + 32,0,60,126,231,195,195,195,231,126,60,8,13,13,10,1, + 0,16,56,68,0,60,126,231,195,195,195,231,126,60,8,12, + 12,10,1,0,58,92,0,60,126,231,195,195,195,231,126,60, + 8,12,12,10,1,0,108,108,0,60,126,231,195,195,195,231, + 126,60,8,8,8,10,1,0,24,24,0,255,255,0,24,24, + 8,9,9,10,1,0,61,127,231,207,219,243,231,254,188,8, + 13,13,10,1,0,32,48,8,0,195,195,195,195,195,195,199, + 255,123,8,13,13,10,1,0,8,24,32,0,195,195,195,195, + 195,195,199,255,123,8,13,13,10,1,0,16,56,68,0,195, + 195,195,195,195,195,199,255,123,8,12,12,10,1,0,108,108, + 0,195,195,195,195,195,195,199,255,123,8,17,17,9,0,252, + 4,12,16,0,195,195,99,102,54,54,60,28,24,24,24,112, + 96,8,16,16,10,1,252,192,192,192,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,16,16,9,0,252,54,54,0, + 195,195,99,102,54,54,60,28,24,24,24,112,96}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=16 x= 2 y=10 dx=16 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=27 x=-2 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB12r[1914] U8G_SECTION(".progmem.u8g_font_helvB12r") = { + 0,20,27,254,249,12,2,74,5,106,32,127,252,13,252,12, + 252,0,0,0,5,0,1,2,12,12,6,2,0,192,192,192, + 192,192,192,128,128,128,0,192,192,5,4,4,8,1,8,216, + 216,216,72,9,12,24,9,0,0,27,0,27,0,27,0,127, + 128,127,128,54,0,54,0,255,0,255,0,108,0,108,0,108, + 0,7,14,14,9,1,255,16,124,254,214,208,240,120,60,30, + 22,214,254,124,16,13,12,24,14,0,0,48,64,120,128,204, + 128,205,0,121,0,50,0,2,96,4,240,5,152,9,152,8, + 240,16,96,10,12,24,12,1,0,60,0,126,0,102,0,102, + 0,60,0,56,192,125,192,207,128,199,0,199,0,127,128,57, + 192,2,4,4,4,1,8,192,192,192,64,4,15,15,6,1, + 253,48,112,96,192,192,192,192,192,192,192,192,192,96,112,48, + 4,15,15,6,0,253,192,224,96,48,48,48,48,48,48,48, + 48,48,96,224,192,5,5,5,6,0,7,32,168,112,112,136, + 8,8,8,10,1,0,24,24,24,255,255,24,24,24,2,5, + 5,4,1,253,192,192,64,64,128,4,2,2,5,0,3,240, + 240,2,2,2,4,1,0,192,192,4,12,12,5,0,0,16, + 16,48,32,32,96,64,64,192,128,128,128,8,12,12,9,0, + 0,60,126,231,195,195,195,195,195,195,231,126,60,5,12,12, + 9,1,0,8,24,248,248,24,24,24,24,24,24,24,24,8, + 12,12,9,0,0,60,126,231,195,195,7,14,28,56,112,255, + 255,8,12,12,9,0,0,60,126,231,195,7,30,30,7,195, + 231,126,60,8,12,12,9,0,0,14,30,54,54,102,102,198, + 255,255,6,6,6,8,12,12,9,0,0,63,63,48,48,124, + 126,71,3,3,231,126,60,8,12,12,9,0,0,60,126,231, + 192,220,254,231,195,195,231,126,60,8,12,12,9,0,0,255, + 255,6,6,12,12,24,24,24,48,48,48,8,12,12,9,0, + 0,60,126,231,195,102,60,126,231,195,231,126,60,8,12,12, + 9,0,0,60,126,231,195,195,231,127,59,3,231,126,60,2, + 8,8,5,2,0,192,192,0,0,0,0,192,192,2,11,11, + 5,2,253,192,192,0,0,0,0,192,192,64,64,128,8,8, + 8,10,1,0,3,15,60,224,224,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,0,192,240, + 60,7,7,60,240,192,7,12,12,10,1,0,124,254,198,198, + 6,14,12,24,24,0,24,24,13,14,28,16,1,254,15,192, + 56,96,96,16,71,216,204,72,136,200,152,200,152,136,153,152, + 201,144,70,96,96,0,56,192,15,128,11,12,24,12,0,0, + 14,0,14,0,31,0,27,0,59,128,49,128,113,192,96,192, + 127,192,255,224,192,96,192,96,9,12,24,11,1,0,254,0, + 255,0,195,128,193,128,195,128,255,0,255,0,195,128,193,128, + 195,128,255,0,254,0,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,10,12,24,12,1,0,252,0,255,0,195,128, + 193,128,193,192,192,192,192,192,193,192,193,128,195,128,255,0, + 252,0,8,12,12,10,1,0,255,255,192,192,192,254,254,192, + 192,192,255,255,8,12,12,10,1,0,255,255,192,192,192,254, + 254,192,192,192,192,192,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,195,192,227,192,96,192,113,192, + 63,192,30,192,10,12,24,12,1,0,192,192,192,192,192,192, + 192,192,255,192,255,192,192,192,192,192,192,192,192,192,192,192, + 192,192,2,12,12,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,7,12,12,9,1,0,6,6,6,6,6,6, + 6,6,198,198,254,124,11,12,24,12,1,0,193,192,195,128, + 199,0,206,0,220,0,248,0,252,0,206,0,199,0,195,128, + 193,192,192,224,8,12,12,10,1,0,192,192,192,192,192,192, + 192,192,192,192,255,255,11,12,24,13,1,0,224,224,224,224, + 224,224,241,224,241,224,209,96,219,96,219,96,202,96,206,96, + 206,96,196,96,10,12,24,12,1,0,224,192,240,192,240,192, + 216,192,216,192,204,192,204,192,198,192,198,192,195,192,195,192, + 193,192,11,12,24,13,1,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 9,12,24,11,1,0,254,0,255,0,195,128,193,128,193,128, + 195,128,255,0,254,0,192,0,192,0,192,0,192,0,11,13, + 26,13,1,255,31,0,63,128,113,192,96,192,224,224,192,96, + 192,96,226,96,103,192,115,192,63,128,31,192,0,128,10,12, + 24,12,1,0,255,0,255,128,193,128,193,128,195,128,255,0, + 255,0,195,128,193,128,193,128,193,192,193,192,9,12,24,11, + 1,0,62,0,127,0,227,128,193,128,240,0,126,0,31,0, + 3,128,193,128,227,128,127,0,62,0,10,12,24,10,0,0, + 255,192,255,192,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,10,12,24,12,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,12,24,11,0,0,192,192,192,192, + 97,128,97,128,97,128,51,0,51,0,51,0,30,0,30,0, + 12,0,12,0,14,12,24,15,0,0,195,12,195,12,195,12, + 99,24,103,152,103,152,52,176,60,240,60,240,24,96,24,96, + 24,96,9,12,24,11,1,0,193,128,227,128,99,0,54,0, + 62,0,28,0,28,0,62,0,54,0,99,0,227,128,193,128, + 10,12,24,11,0,0,192,192,225,192,97,128,51,0,51,0, + 30,0,30,0,12,0,12,0,12,0,12,0,12,0,8,12, + 12,10,1,0,255,255,7,6,12,28,56,48,96,224,255,255, + 4,15,15,6,1,253,240,240,192,192,192,192,192,192,192,192, + 192,192,192,240,240,4,12,12,5,0,0,128,128,192,64,64, + 96,32,32,48,16,16,16,4,15,15,6,0,253,240,240,48, + 48,48,48,48,48,48,48,48,48,48,240,240,8,7,7,10, + 1,5,24,24,60,102,102,195,195,9,1,2,9,0,253,255, + 128,3,3,3,6,2,10,128,192,32,8,9,9,9,1,0, + 124,254,198,14,126,230,198,254,119,8,12,12,10,1,0,192, + 192,192,220,254,231,195,195,195,231,254,220,8,9,9,9,1, + 0,60,126,231,192,192,192,231,126,60,8,12,12,10,1,0, + 3,3,3,63,127,231,195,195,195,231,127,59,8,9,9,10, + 1,0,60,126,195,255,255,192,231,126,60,4,12,12,6,1, + 0,48,112,96,240,240,96,96,96,96,96,96,96,8,13,13, + 10,1,252,59,127,231,195,195,195,231,127,59,3,231,126,60, + 8,12,12,10,1,0,192,192,192,222,255,227,195,195,195,195, + 195,195,2,12,12,4,1,0,192,192,0,192,192,192,192,192, + 192,192,192,192,3,16,16,5,1,252,96,96,0,96,96,96, + 96,96,96,96,96,96,96,96,224,192,8,12,12,9,1,0, + 192,192,192,199,206,220,248,252,236,206,198,199,2,12,12,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,192,12,9, + 18,14,1,0,222,224,255,240,231,48,198,48,198,48,198,48, + 198,48,198,48,198,48,8,9,9,10,1,0,222,255,227,195, + 195,195,195,195,195,8,9,9,10,1,0,60,126,231,195,195, + 195,231,126,60,8,13,13,10,1,252,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,13,13,10,1,252,59,127,231, + 195,195,195,231,127,59,3,3,3,3,5,9,9,6,1,0, + 216,248,224,192,192,192,192,192,192,7,9,9,9,1,0,124, + 254,198,240,124,14,198,254,124,4,11,11,6,1,0,96,96, + 240,240,96,96,96,96,96,112,48,8,9,9,10,1,0,195, + 195,195,195,195,195,199,255,123,8,9,9,9,0,0,195,195, + 102,102,102,60,60,24,24,12,9,18,13,0,0,198,48,198, + 48,102,96,102,96,111,96,63,192,57,192,25,128,25,128,7, + 9,9,9,1,0,198,198,108,124,56,124,108,198,198,8,13, + 13,9,0,252,195,195,99,102,54,54,60,28,24,24,24,112, + 96,7,9,9,8,0,0,254,254,14,28,24,56,112,254,254, + 4,15,15,6,1,253,48,112,96,96,96,96,96,192,96,96, + 96,96,96,112,48,1,16,16,4,1,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,192,224,96,96,96,96,96,48,96,96,96,96,96,224,192, + 8,3,3,10,1,3,113,153,142,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=19 x= 2 y=12 dx=18 dy= 0 ascent=18 len=38 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB14[5489] U8G_SECTION(".progmem.u8g_font_helvB14") = { + 0,22,29,254,249,14,3,23,6,234,32,255,252,18,251,14, + 252,0,0,0,5,0,1,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,192,192,0,224,224,224,5,5,5,7,1, + 9,216,216,216,216,144,11,13,26,11,0,0,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,27,0,255,192,255,192, + 54,0,54,0,54,0,10,16,32,10,0,254,4,0,63,0, + 127,128,229,128,228,0,228,0,124,0,63,0,15,128,9,192, + 233,192,233,192,127,128,63,0,8,0,8,0,13,13,26,16, + 1,0,120,96,252,96,204,192,204,128,253,128,123,0,2,0, + 6,240,13,248,9,152,25,152,49,248,48,240,13,14,28,14, + 1,0,30,0,63,0,115,128,97,128,115,0,62,0,28,96, + 126,96,231,224,195,192,193,192,227,224,127,112,62,56,2,5, + 5,4,1,9,192,192,192,192,128,6,18,18,7,1,252,28, + 56,48,112,96,224,224,224,224,224,224,224,224,96,112,48,56, + 28,6,18,18,7,0,252,224,112,48,56,24,28,28,28,28, + 28,28,28,28,24,56,48,112,224,7,6,6,9,1,8,16, + 214,124,56,108,68,8,8,8,11,1,1,24,24,24,255,255, + 24,24,24,3,6,6,5,1,253,224,224,224,96,192,128,5, + 3,3,6,0,4,248,248,248,3,3,3,5,1,0,224,224, + 224,5,14,14,5,0,0,24,24,24,56,48,48,48,112,96, + 96,224,192,192,192,9,13,26,10,0,0,28,0,127,0,119, + 0,227,128,227,128,227,128,227,128,227,128,227,128,227,128,119, + 0,127,0,28,0,6,13,13,10,1,0,28,60,252,252,28, + 28,28,28,28,28,28,28,28,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,3,128,7,0,31,0,62,0,120,0, + 112,0,224,0,255,128,255,128,9,13,26,10,0,0,62,0, + 127,0,231,0,227,0,7,0,30,0,31,0,7,128,3,128, + 227,128,231,128,127,0,62,0,9,13,26,10,0,0,7,0, + 15,0,31,0,63,0,55,0,119,0,103,0,231,0,255,128, + 255,128,7,0,7,0,7,0,9,13,26,10,0,0,255,0, + 255,0,224,0,224,0,254,0,255,0,231,128,3,128,3,128, + 227,128,231,128,255,0,126,0,9,13,26,10,0,0,63,0, + 127,128,113,128,224,0,238,0,255,0,243,128,225,128,225,128, + 225,128,243,128,127,0,62,0,9,13,26,10,0,0,255,128, + 255,128,3,128,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,112,0,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,227,128,127,0,62,0,119,0,227,128, + 227,128,227,128,127,0,62,0,9,13,26,10,0,0,62,0, + 127,0,231,128,195,128,195,128,195,128,231,128,127,128,59,128, + 3,128,199,0,255,0,126,0,3,10,10,6,1,0,224,224, + 224,0,0,0,0,224,224,224,3,13,13,6,1,253,224,224, + 224,0,0,0,0,224,224,224,96,192,128,9,9,18,11,1, + 0,3,128,15,128,62,0,120,0,224,0,120,0,62,0,15, + 128,3,128,9,5,10,11,1,3,255,128,255,128,0,0,255, + 128,255,128,9,9,18,11,1,0,224,0,248,0,62,0,15, + 0,3,128,15,0,62,0,248,0,224,0,8,14,14,10,1, + 0,126,255,231,231,14,30,28,56,56,56,0,56,56,56,16, + 17,34,18,1,253,7,240,31,252,60,30,112,6,99,183,231, + 243,198,99,204,99,204,195,204,198,204,198,239,252,231,184,112, + 0,60,0,31,240,7,240,12,14,28,14,1,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,11,14,28,14,2,0,254, + 0,255,128,227,192,225,192,225,192,227,128,255,128,255,192,225, + 224,224,224,224,224,225,224,255,192,255,0,12,14,28,14,1, + 0,15,128,63,224,120,224,112,112,240,112,224,0,224,0,224, + 0,224,0,240,112,112,112,120,224,63,224,15,128,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,112,224,112,224, + 112,224,112,224,112,224,112,224,224,225,224,255,192,255,0,10, + 14,28,13,2,0,255,192,255,192,224,0,224,0,224,0,224, + 0,255,128,255,128,224,0,224,0,224,0,224,0,255,192,255, + 192,10,14,28,12,1,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,224, + 0,224,0,12,14,28,15,1,0,15,128,63,224,120,224,112, + 112,240,112,224,0,224,0,227,240,227,240,240,112,112,112,120, + 240,63,240,31,176,12,14,28,14,1,0,224,112,224,112,224, + 112,224,112,224,112,224,112,255,240,255,240,224,112,224,112,224, + 112,224,112,224,112,224,112,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,9,14,28,10,0, + 0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,227,128,227,128,247,128,127,0,62,0,13,14,28, + 14,1,0,224,240,225,224,227,192,231,128,239,0,254,0,252, + 0,254,0,239,0,231,128,227,192,225,224,224,240,224,120,9, + 14,28,11,1,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,128,255, + 128,14,14,28,16,1,0,224,28,224,28,240,60,240,60,248, + 124,248,124,248,124,236,220,236,220,236,220,231,156,231,156,227, + 28,227,28,12,14,28,14,1,0,224,112,240,112,240,112,248, + 112,252,112,236,112,238,112,230,112,231,112,227,112,225,240,225, + 240,224,240,224,112,13,14,28,15,1,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,11,14,28,13,1,0,255,0,255, + 192,225,224,224,224,224,224,224,224,225,224,255,192,255,0,224, + 0,224,0,224,0,224,0,224,0,13,15,30,15,1,255,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,243,120,115,240,121,240,63,224,15,240,0,48,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,224,225,224,255, + 192,255,128,225,192,224,224,224,224,224,224,224,224,224,240,11, + 14,28,13,1,0,63,128,127,192,241,224,224,224,240,0,126, + 0,63,128,15,192,1,224,224,224,224,224,241,224,127,192,63, + 128,11,14,28,11,0,0,255,224,255,224,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,12,14,28,14,1,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,127,224,31,128,13,14,28,13,0,0,224,56,224,56,112, + 112,112,112,48,96,56,224,56,224,29,192,29,192,13,128,15, + 128,15,128,7,0,7,0,15,14,28,17,1,0,227,142,227, + 142,227,142,227,142,115,156,115,156,115,156,118,220,54,216,54, + 216,62,248,28,112,28,112,28,112,12,14,28,12,0,0,224, + 112,224,112,112,224,121,224,25,128,31,128,15,0,31,128,25, + 128,57,192,112,224,112,224,224,112,224,112,13,14,28,13,0, + 0,224,56,224,56,112,112,56,224,56,224,29,192,29,192,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,10,14,28, + 12,1,0,255,192,255,192,1,192,3,128,7,0,7,0,14, + 0,28,0,56,0,56,0,112,0,224,0,255,192,255,192,5, + 18,18,6,1,252,248,248,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,5,14,14,5,0,0,192,192,192, + 224,96,96,96,112,48,48,56,24,24,24,5,18,18,6,0, + 252,248,248,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,248,248,10,7,14,10,0,6,12,0,30,0,30,0,51, + 0,115,128,97,128,225,192,10,2,4,10,0,252,255,192,255, + 192,5,3,3,5,0,11,224,112,56,10,10,20,11,1,0, + 62,0,127,0,99,128,7,128,63,128,123,128,227,128,231,128, + 251,128,123,192,10,14,28,12,1,0,224,0,224,0,224,0, + 224,0,239,0,255,128,243,128,225,192,225,192,225,192,225,192, + 243,128,255,128,239,0,9,10,20,11,1,0,30,0,127,128, + 115,128,224,0,224,0,224,0,224,0,115,128,127,128,30,0, + 10,14,28,12,1,0,1,192,1,192,1,192,1,192,61,192, + 127,192,115,192,225,192,225,192,225,192,225,192,115,192,127,192, + 61,192,9,10,20,11,1,0,30,0,127,0,115,128,225,128, + 255,128,255,128,224,0,115,128,127,128,30,0,7,14,14,7, + 0,0,30,62,56,56,254,254,56,56,56,56,56,56,56,56, + 10,14,28,12,1,252,61,192,127,192,115,192,225,192,225,192, + 225,192,225,192,115,192,127,192,61,192,1,192,115,128,127,128, + 30,0,9,14,28,11,1,0,224,0,224,0,224,0,224,0, + 239,0,255,128,243,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,3,14,14,5,1,0,224,224,224,0,224,224, + 224,224,224,224,224,224,224,224,5,18,18,5,255,252,56,56, + 56,0,56,56,56,56,56,56,56,56,56,56,56,56,248,240, + 9,14,28,10,1,0,224,0,224,0,224,0,224,0,231,0, + 238,0,252,0,248,0,248,0,252,0,238,0,231,0,231,128, + 227,128,3,14,14,5,1,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,15,10,20,17,1,0,239,60,255,254, + 243,206,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 9,10,20,11,1,0,239,0,255,128,243,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,10,20,12,1,0, + 30,0,127,128,115,128,225,192,225,192,225,192,225,192,115,128, + 127,128,30,0,10,14,28,12,1,252,239,0,255,128,243,128, + 225,192,225,192,225,192,225,192,243,128,255,128,239,0,224,0, + 224,0,224,0,224,0,10,14,28,12,1,252,61,192,127,192, + 115,192,225,192,225,192,225,192,225,192,115,192,127,192,61,192, + 1,192,1,192,1,192,1,192,6,10,10,7,1,0,236,252, + 252,224,224,224,224,224,224,224,9,10,20,11,1,0,63,0, + 127,128,227,128,224,0,255,0,63,128,3,128,227,128,255,0, + 126,0,6,13,13,6,0,0,112,112,112,252,252,112,112,112, + 112,112,112,124,60,9,10,20,11,1,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 10,20,9,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,15,10,20,15,0,0,227, + 142,227,142,227,142,115,156,119,220,118,220,62,248,60,120,28, + 112,28,112,9,10,20,11,1,0,227,128,227,128,119,0,62, + 0,28,0,62,0,119,0,119,0,227,128,227,128,9,14,28, + 11,1,252,227,128,227,128,227,128,119,0,119,0,119,0,62, + 0,62,0,28,0,28,0,28,0,24,0,120,0,112,0,8, + 10,10,10,1,0,255,255,7,14,28,56,112,224,255,255,7, + 18,18,8,1,252,14,28,56,56,56,56,56,112,224,112,56, + 56,56,56,56,56,28,14,2,18,18,5,1,252,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,7, + 18,18,8,0,252,224,112,56,56,56,56,56,28,14,28,56, + 56,56,56,56,56,112,224,9,3,6,11,1,4,121,128,255, + 128,207,0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,5,0,1,3,14,14,6,2,252, + 224,224,224,0,96,96,224,224,224,224,224,224,224,224,8,14, + 14,10,1,254,2,2,62,127,231,200,200,208,208,227,127,126, + 64,64,10,13,26,11,0,0,31,0,63,192,113,192,112,0, + 112,0,56,0,127,0,28,0,28,0,56,0,112,192,255,192, + 239,128,9,8,16,11,1,2,193,128,255,128,119,0,99,0, + 99,0,119,0,255,128,193,128,9,13,26,10,0,0,227,128, + 227,128,227,128,119,0,119,0,62,0,255,128,28,0,255,128, + 28,0,28,0,28,0,28,0,2,18,18,5,1,252,192,192, + 192,192,192,192,192,192,0,0,192,192,192,192,192,192,192,192, + 9,18,36,10,0,252,62,0,127,0,227,128,227,128,240,0, + 124,0,254,0,199,0,195,128,225,128,113,128,63,128,15,0, + 7,128,227,128,227,128,127,0,62,0,5,2,2,7,1,12, + 216,216,14,14,28,15,1,0,15,192,56,112,96,24,199,140, + 207,204,152,196,152,4,152,4,152,68,207,204,199,140,96,24, + 56,112,15,192,6,9,9,8,1,5,120,140,124,204,204,116, + 0,252,252,10,8,16,11,0,1,29,192,59,128,119,0,238, + 0,238,0,119,0,59,128,29,192,9,5,10,11,1,3,255, + 128,255,128,1,128,1,128,1,128,5,3,3,6,0,4,248, + 248,248,13,14,28,15,1,0,15,128,48,96,96,16,95,144, + 153,200,152,200,153,200,159,8,153,136,153,136,88,208,96,48, + 56,224,15,128,5,2,2,7,1,12,248,248,6,6,6,7, + 0,7,120,252,204,204,252,120,9,9,18,11,1,0,28,0, + 28,0,255,128,255,128,28,0,28,0,0,0,255,128,255,128, + 6,8,8,6,0,5,120,252,204,28,120,224,252,252,6,8, + 8,6,0,5,120,252,204,56,60,204,252,120,5,3,3,5, + 0,11,56,112,224,9,14,28,11,1,252,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,251,128,224, + 0,224,0,224,0,224,0,9,18,36,10,0,252,63,128,123, + 0,251,0,251,0,251,0,251,0,251,0,123,0,59,0,27, + 0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27, + 0,2,2,2,5,1,6,192,192,5,5,5,7,1,251,96, + 112,24,248,240,4,8,8,6,0,5,48,240,240,48,48,48, + 48,48,6,9,9,8,1,5,120,204,204,204,204,120,0,252, + 252,10,8,16,11,0,1,238,0,119,0,59,128,29,192,29, + 192,59,128,119,0,238,0,14,13,26,15,0,0,48,96,240, + 96,240,192,48,192,49,128,49,152,51,56,54,56,6,120,12, + 216,12,252,24,24,24,24,15,13,26,15,0,0,48,96,240, + 96,240,192,48,192,49,128,49,188,51,126,54,102,6,14,12, + 60,12,112,24,126,24,126,14,13,26,15,0,0,120,48,252, + 48,204,96,56,96,60,192,204,216,253,184,123,56,3,120,6, + 216,6,252,12,24,12,24,8,14,14,10,1,252,28,28,28, + 0,28,28,28,56,120,112,231,231,255,126,12,18,36,14,1, + 0,56,0,28,0,6,0,0,0,15,0,15,0,31,128,25, + 128,25,128,57,192,57,192,48,192,112,224,127,224,127,224,224, + 112,224,112,224,112,12,18,36,14,1,0,1,192,3,128,6, + 0,0,0,15,0,15,0,31,128,25,128,25,128,57,192,57, + 192,48,192,112,224,127,224,127,224,224,112,224,112,224,112,12, + 18,36,14,1,0,7,0,15,128,29,192,0,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,12,18,36,14,1,0,14, + 32,31,192,35,128,0,0,15,0,15,0,31,128,25,128,25, + 128,57,192,57,192,48,192,112,224,127,224,127,224,224,112,224, + 112,224,112,12,18,36,14,1,0,25,128,25,128,25,128,0, + 0,15,0,15,0,31,128,25,128,25,128,57,192,57,192,48, + 192,112,224,127,224,127,224,224,112,224,112,224,112,12,18,36, + 14,1,0,15,0,25,128,25,128,15,0,15,0,15,0,31, + 128,25,128,25,128,57,192,57,192,48,192,112,224,127,224,127, + 224,224,112,224,112,224,112,16,14,28,18,1,0,15,255,15, + 255,31,128,27,128,59,128,59,128,51,254,115,254,115,128,127, + 128,255,128,227,128,227,255,227,255,12,19,38,14,1,251,15, + 128,63,224,120,224,112,112,240,112,224,0,224,0,224,0,224, + 0,240,112,112,112,120,224,63,224,15,128,12,0,14,0,3, + 0,31,0,30,0,10,18,36,13,2,0,56,0,28,0,6, + 0,0,0,255,192,255,192,224,0,224,0,224,0,224,0,255, + 128,255,128,224,0,224,0,224,0,224,0,255,192,255,192,10, + 18,36,13,2,0,3,128,7,0,12,0,0,0,255,192,255, + 192,224,0,224,0,224,0,224,0,255,128,255,128,224,0,224, + 0,224,0,224,0,255,192,255,192,10,18,36,13,2,0,14, + 0,31,0,59,128,0,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,255, + 192,255,192,10,18,36,13,2,0,51,0,51,0,51,0,0, + 0,255,192,255,192,224,0,224,0,224,0,224,0,255,128,255, + 128,224,0,224,0,224,0,224,0,255,192,255,192,5,18,18, + 5,255,0,224,112,24,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,5,18,18,5,1,0,56,112,192,0,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,7,18,18, + 5,255,0,56,124,238,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,6,18,18,5,0,0,204,204,204,0,112, + 112,112,112,112,112,112,112,112,112,112,112,112,112,14,14,28, + 14,255,0,63,192,63,240,56,120,56,56,56,28,56,28,255, + 28,255,28,56,28,56,28,56,56,56,120,63,240,63,192,12, + 18,36,14,1,0,14,32,31,192,35,128,0,0,224,112,240, + 112,240,112,248,112,252,112,236,112,238,112,230,112,231,112,227, + 112,225,240,225,240,224,240,224,112,13,18,36,15,1,0,28, + 0,14,0,3,0,0,0,15,128,63,224,120,240,112,112,240, + 120,224,56,224,56,224,56,224,56,240,120,112,112,120,240,63, + 224,15,128,13,18,36,15,1,0,1,192,3,128,6,0,0, + 0,15,128,63,224,120,240,112,112,240,120,224,56,224,56,224, + 56,224,56,240,120,112,112,120,240,63,224,15,128,13,18,36, + 15,1,0,7,0,15,128,29,192,0,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,13,18,36,15,1,0,7,16,15, + 224,17,192,0,0,15,128,63,224,120,240,112,112,240,120,224, + 56,224,56,224,56,224,56,240,120,112,112,120,240,63,224,15, + 128,13,18,36,15,1,0,12,192,12,192,12,192,0,0,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,240,120,112,112,120,240,63,224,15,128,10,8,16,11,0, + 1,225,192,115,128,63,0,30,0,30,0,63,0,115,128,225, + 192,15,14,28,15,0,0,7,198,31,252,60,56,56,120,120, + 220,113,156,113,28,115,28,118,28,124,60,56,56,60,120,127, + 240,199,192,12,18,36,14,1,0,28,0,14,0,3,0,0, + 0,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,112,224,127,224,31,128,12,18,36, + 14,1,0,1,192,3,128,6,0,0,0,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,112,224,127,224,31,128,12,18,36,14,1,0,7,0,15, + 128,29,192,0,0,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,127,224,31, + 128,12,18,36,14,1,0,25,128,25,128,25,128,0,0,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,112,224,127,224,31,128,13,18,36,13,0, + 0,1,192,3,128,6,0,0,0,224,56,224,56,112,112,56, + 224,56,224,29,192,29,192,15,128,7,0,7,0,7,0,7, + 0,7,0,7,0,11,14,28,13,1,0,224,0,224,0,224, + 0,255,0,255,192,225,224,224,224,224,224,225,224,255,192,255, + 0,224,0,224,0,224,0,8,14,14,10,1,0,60,126,231, + 231,231,231,238,238,231,231,231,231,239,238,10,14,28,11,1, + 0,112,0,56,0,12,0,0,0,62,0,127,0,115,128,7, + 128,63,128,123,128,227,128,231,128,251,128,123,192,10,14,28, + 11,1,0,3,128,7,0,12,0,0,0,62,0,127,0,115, + 128,7,128,63,128,123,128,227,128,231,128,251,128,123,192,10, + 14,28,11,1,0,28,0,62,0,119,0,0,0,62,0,127, + 0,115,128,7,128,63,128,123,128,227,128,231,128,251,128,123, + 192,10,14,28,11,1,0,59,0,127,0,110,0,0,0,62, + 0,127,0,115,128,7,128,63,128,123,128,227,128,231,128,251, + 128,123,192,10,14,28,11,1,0,51,0,51,0,51,0,0, + 0,62,0,127,0,115,128,7,128,63,128,123,128,227,128,231, + 128,251,128,123,192,10,14,28,11,1,0,60,0,102,0,102, + 0,60,0,62,0,127,0,115,128,7,128,63,128,123,128,227, + 128,231,128,251,128,123,192,14,10,20,16,1,0,61,240,127, + 248,103,28,15,28,63,252,119,0,231,0,239,156,255,252,121, + 240,9,15,30,10,1,251,30,0,127,128,115,128,224,0,224, + 0,224,0,224,0,115,128,127,128,30,0,24,0,28,0,6, + 0,62,0,60,0,9,14,28,11,1,0,112,0,56,0,12, + 0,0,0,30,0,127,0,115,128,225,128,255,128,255,128,224, + 0,115,128,127,128,30,0,9,14,28,11,1,0,3,128,7, + 0,12,0,0,0,30,0,127,0,115,128,225,128,255,128,255, + 128,224,0,115,128,127,128,30,0,9,14,28,11,1,0,28, + 0,62,0,119,0,0,0,30,0,127,0,115,128,225,128,255, + 128,255,128,224,0,115,128,127,128,30,0,9,14,28,11,1, + 0,51,0,51,0,51,0,0,0,30,0,127,0,115,128,225, + 128,255,128,255,128,224,0,115,128,127,128,30,0,5,14,14, + 5,255,0,224,112,24,0,56,56,56,56,56,56,56,56,56, + 56,5,14,14,5,1,0,56,112,192,0,224,224,224,224,224, + 224,224,224,224,224,7,14,14,5,255,0,56,124,238,0,56, + 56,56,56,56,56,56,56,56,56,5,14,14,5,0,0,216, + 216,216,0,112,112,112,112,112,112,112,112,112,112,10,14,28, + 12,1,0,96,0,55,0,60,0,102,0,31,0,127,128,115, + 128,225,192,225,192,225,192,225,192,115,128,127,128,30,0,9, + 14,28,11,1,0,59,0,127,0,110,0,0,0,239,0,255, + 128,243,128,227,128,227,128,227,128,227,128,227,128,227,128,227, + 128,10,14,28,12,1,0,112,0,56,0,12,0,0,0,30, + 0,127,128,115,128,225,192,225,192,225,192,225,192,115,128,127, + 128,30,0,10,14,28,12,1,0,3,128,7,0,12,0,0, + 0,30,0,127,128,115,128,225,192,225,192,225,192,225,192,115, + 128,127,128,30,0,10,14,28,12,1,0,28,0,62,0,119, + 0,0,0,30,0,127,128,115,128,225,192,225,192,225,192,225, + 192,115,128,127,128,30,0,10,14,28,12,1,0,59,0,127, + 0,110,0,0,0,30,0,127,128,115,128,225,192,225,192,225, + 192,225,192,115,128,127,128,30,0,10,14,28,12,1,0,51, + 0,51,0,51,0,0,0,30,0,127,128,115,128,225,192,225, + 192,225,192,225,192,115,128,127,128,30,0,9,8,16,11,1, + 1,28,0,28,0,0,0,255,128,255,128,0,0,28,0,28, + 0,12,10,20,12,0,0,15,48,63,224,57,192,115,224,119, + 224,126,224,124,224,57,192,127,192,207,0,9,14,28,11,1, + 0,112,0,56,0,12,0,0,0,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,231,128,255,128,123,128,9,14,28, + 11,1,0,3,128,7,0,12,0,0,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 14,28,11,1,0,28,0,62,0,119,0,0,0,227,128,227, + 128,227,128,227,128,227,128,227,128,227,128,231,128,255,128,123, + 128,9,14,28,11,1,0,51,0,51,0,51,0,0,0,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,231,128,255, + 128,123,128,9,18,36,11,1,252,7,0,14,0,24,0,0, + 0,227,128,227,128,227,128,119,0,119,0,119,0,62,0,62, + 0,28,0,28,0,28,0,24,0,120,0,112,0,10,18,36, + 12,1,252,224,0,224,0,224,0,224,0,239,0,255,128,243, + 128,225,192,225,192,225,192,225,192,243,128,255,128,239,0,224, + 0,224,0,224,0,224,0,9,18,36,11,1,252,51,0,51, + 0,51,0,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,28,0,24,0,120,0,112, + 0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=11 dx=18 dy= 0 ascent=14 len=34 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB14r[2548] U8G_SECTION(".progmem.u8g_font_helvB14r") = { + 0,22,29,254,249,14,3,23,6,234,32,127,252,14,252,14, + 252,0,0,0,5,0,1,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,192,192,0,224,224,224,5,5,5,7,1, + 9,216,216,216,216,144,11,13,26,11,0,0,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,27,0,255,192,255,192, + 54,0,54,0,54,0,10,16,32,10,0,254,4,0,63,0, + 127,128,229,128,228,0,228,0,124,0,63,0,15,128,9,192, + 233,192,233,192,127,128,63,0,8,0,8,0,13,13,26,16, + 1,0,120,96,252,96,204,192,204,128,253,128,123,0,2,0, + 6,240,13,248,9,152,25,152,49,248,48,240,13,14,28,14, + 1,0,30,0,63,0,115,128,97,128,115,0,62,0,28,96, + 126,96,231,224,195,192,193,192,227,224,127,112,62,56,2,5, + 5,4,1,9,192,192,192,192,128,6,18,18,7,1,252,28, + 56,48,112,96,224,224,224,224,224,224,224,224,96,112,48,56, + 28,6,18,18,7,0,252,224,112,48,56,24,28,28,28,28, + 28,28,28,28,24,56,48,112,224,7,6,6,9,1,8,16, + 214,124,56,108,68,8,8,8,11,1,1,24,24,24,255,255, + 24,24,24,3,6,6,5,1,253,224,224,224,96,192,128,5, + 3,3,6,0,4,248,248,248,3,3,3,5,1,0,224,224, + 224,5,14,14,5,0,0,24,24,24,56,48,48,48,112,96, + 96,224,192,192,192,9,13,26,10,0,0,28,0,127,0,119, + 0,227,128,227,128,227,128,227,128,227,128,227,128,227,128,119, + 0,127,0,28,0,6,13,13,10,1,0,28,60,252,252,28, + 28,28,28,28,28,28,28,28,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,3,128,7,0,31,0,62,0,120,0, + 112,0,224,0,255,128,255,128,9,13,26,10,0,0,62,0, + 127,0,231,0,227,0,7,0,30,0,31,0,7,128,3,128, + 227,128,231,128,127,0,62,0,9,13,26,10,0,0,7,0, + 15,0,31,0,63,0,55,0,119,0,103,0,231,0,255,128, + 255,128,7,0,7,0,7,0,9,13,26,10,0,0,255,0, + 255,0,224,0,224,0,254,0,255,0,231,128,3,128,3,128, + 227,128,231,128,255,0,126,0,9,13,26,10,0,0,63,0, + 127,128,113,128,224,0,238,0,255,0,243,128,225,128,225,128, + 225,128,243,128,127,0,62,0,9,13,26,10,0,0,255,128, + 255,128,3,128,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,112,0,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,227,128,127,0,62,0,119,0,227,128, + 227,128,227,128,127,0,62,0,9,13,26,10,0,0,62,0, + 127,0,231,128,195,128,195,128,195,128,231,128,127,128,59,128, + 3,128,199,0,255,0,126,0,3,10,10,6,1,0,224,224, + 224,0,0,0,0,224,224,224,3,13,13,6,1,253,224,224, + 224,0,0,0,0,224,224,224,96,192,128,9,9,18,11,1, + 0,3,128,15,128,62,0,120,0,224,0,120,0,62,0,15, + 128,3,128,9,5,10,11,1,3,255,128,255,128,0,0,255, + 128,255,128,9,9,18,11,1,0,224,0,248,0,62,0,15, + 0,3,128,15,0,62,0,248,0,224,0,8,14,14,10,1, + 0,126,255,231,231,14,30,28,56,56,56,0,56,56,56,16, + 17,34,18,1,253,7,240,31,252,60,30,112,6,99,183,231, + 243,198,99,204,99,204,195,204,198,204,198,239,252,231,184,112, + 0,60,0,31,240,7,240,12,14,28,14,1,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,11,14,28,14,2,0,254, + 0,255,128,227,192,225,192,225,192,227,128,255,128,255,192,225, + 224,224,224,224,224,225,224,255,192,255,0,12,14,28,14,1, + 0,15,128,63,224,120,224,112,112,240,112,224,0,224,0,224, + 0,224,0,240,112,112,112,120,224,63,224,15,128,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,112,224,112,224, + 112,224,112,224,112,224,112,224,224,225,224,255,192,255,0,10, + 14,28,13,2,0,255,192,255,192,224,0,224,0,224,0,224, + 0,255,128,255,128,224,0,224,0,224,0,224,0,255,192,255, + 192,10,14,28,12,1,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,224, + 0,224,0,12,14,28,15,1,0,15,128,63,224,120,224,112, + 112,240,112,224,0,224,0,227,240,227,240,240,112,112,112,120, + 240,63,240,31,176,12,14,28,14,1,0,224,112,224,112,224, + 112,224,112,224,112,224,112,255,240,255,240,224,112,224,112,224, + 112,224,112,224,112,224,112,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,9,14,28,10,0, + 0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,227,128,227,128,247,128,127,0,62,0,13,14,28, + 14,1,0,224,240,225,224,227,192,231,128,239,0,254,0,252, + 0,254,0,239,0,231,128,227,192,225,224,224,240,224,120,9, + 14,28,11,1,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,128,255, + 128,14,14,28,16,1,0,224,28,224,28,240,60,240,60,248, + 124,248,124,248,124,236,220,236,220,236,220,231,156,231,156,227, + 28,227,28,12,14,28,14,1,0,224,112,240,112,240,112,248, + 112,252,112,236,112,238,112,230,112,231,112,227,112,225,240,225, + 240,224,240,224,112,13,14,28,15,1,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,11,14,28,13,1,0,255,0,255, + 192,225,224,224,224,224,224,224,224,225,224,255,192,255,0,224, + 0,224,0,224,0,224,0,224,0,13,15,30,15,1,255,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,243,120,115,240,121,240,63,224,15,240,0,48,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,224,225,224,255, + 192,255,128,225,192,224,224,224,224,224,224,224,224,224,240,11, + 14,28,13,1,0,63,128,127,192,241,224,224,224,240,0,126, + 0,63,128,15,192,1,224,224,224,224,224,241,224,127,192,63, + 128,11,14,28,11,0,0,255,224,255,224,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,12,14,28,14,1,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,127,224,31,128,13,14,28,13,0,0,224,56,224,56,112, + 112,112,112,48,96,56,224,56,224,29,192,29,192,13,128,15, + 128,15,128,7,0,7,0,15,14,28,17,1,0,227,142,227, + 142,227,142,227,142,115,156,115,156,115,156,118,220,54,216,54, + 216,62,248,28,112,28,112,28,112,12,14,28,12,0,0,224, + 112,224,112,112,224,121,224,25,128,31,128,15,0,31,128,25, + 128,57,192,112,224,112,224,224,112,224,112,13,14,28,13,0, + 0,224,56,224,56,112,112,56,224,56,224,29,192,29,192,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,10,14,28, + 12,1,0,255,192,255,192,1,192,3,128,7,0,7,0,14, + 0,28,0,56,0,56,0,112,0,224,0,255,192,255,192,5, + 18,18,6,1,252,248,248,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,5,14,14,5,0,0,192,192,192, + 224,96,96,96,112,48,48,56,24,24,24,5,18,18,6,0, + 252,248,248,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,248,248,10,7,14,10,0,6,12,0,30,0,30,0,51, + 0,115,128,97,128,225,192,10,2,4,10,0,252,255,192,255, + 192,5,3,3,5,0,11,224,112,56,10,10,20,11,1,0, + 62,0,127,0,99,128,7,128,63,128,123,128,227,128,231,128, + 251,128,123,192,10,14,28,12,1,0,224,0,224,0,224,0, + 224,0,239,0,255,128,243,128,225,192,225,192,225,192,225,192, + 243,128,255,128,239,0,9,10,20,11,1,0,30,0,127,128, + 115,128,224,0,224,0,224,0,224,0,115,128,127,128,30,0, + 10,14,28,12,1,0,1,192,1,192,1,192,1,192,61,192, + 127,192,115,192,225,192,225,192,225,192,225,192,115,192,127,192, + 61,192,9,10,20,11,1,0,30,0,127,0,115,128,225,128, + 255,128,255,128,224,0,115,128,127,128,30,0,7,14,14,7, + 0,0,30,62,56,56,254,254,56,56,56,56,56,56,56,56, + 10,14,28,12,1,252,61,192,127,192,115,192,225,192,225,192, + 225,192,225,192,115,192,127,192,61,192,1,192,115,128,127,128, + 30,0,9,14,28,11,1,0,224,0,224,0,224,0,224,0, + 239,0,255,128,243,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,3,14,14,5,1,0,224,224,224,0,224,224, + 224,224,224,224,224,224,224,224,5,18,18,5,255,252,56,56, + 56,0,56,56,56,56,56,56,56,56,56,56,56,56,248,240, + 9,14,28,10,1,0,224,0,224,0,224,0,224,0,231,0, + 238,0,252,0,248,0,248,0,252,0,238,0,231,0,231,128, + 227,128,3,14,14,5,1,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,15,10,20,17,1,0,239,60,255,254, + 243,206,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 9,10,20,11,1,0,239,0,255,128,243,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,10,20,12,1,0, + 30,0,127,128,115,128,225,192,225,192,225,192,225,192,115,128, + 127,128,30,0,10,14,28,12,1,252,239,0,255,128,243,128, + 225,192,225,192,225,192,225,192,243,128,255,128,239,0,224,0, + 224,0,224,0,224,0,10,14,28,12,1,252,61,192,127,192, + 115,192,225,192,225,192,225,192,225,192,115,192,127,192,61,192, + 1,192,1,192,1,192,1,192,6,10,10,7,1,0,236,252, + 252,224,224,224,224,224,224,224,9,10,20,11,1,0,63,0, + 127,128,227,128,224,0,255,0,63,128,3,128,227,128,255,0, + 126,0,6,13,13,6,0,0,112,112,112,252,252,112,112,112, + 112,112,112,124,60,9,10,20,11,1,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 10,20,9,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,15,10,20,15,0,0,227, + 142,227,142,227,142,115,156,119,220,118,220,62,248,60,120,28, + 112,28,112,9,10,20,11,1,0,227,128,227,128,119,0,62, + 0,28,0,62,0,119,0,119,0,227,128,227,128,9,14,28, + 11,1,252,227,128,227,128,227,128,119,0,119,0,119,0,62, + 0,62,0,28,0,28,0,28,0,24,0,120,0,112,0,8, + 10,10,10,1,0,255,255,7,14,28,56,112,224,255,255,7, + 18,18,8,1,252,14,28,56,56,56,56,56,112,224,112,56, + 56,56,56,56,56,28,14,2,18,18,5,1,252,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,7, + 18,18,8,0,252,224,112,56,56,56,56,56,28,14,28,56, + 56,56,56,56,56,112,224,9,3,6,11,1,4,121,128,255, + 128,207,0,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=17 dx=24 dy= 0 ascent=24 len=72 + Font Bounding box w=28 h=37 x=-2 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB18[7527] U8G_SECTION(".progmem.u8g_font_helvB18") = { + 0,28,37,254,248,19,4,35,9,107,32,255,251,24,251,19, + 251,0,0,0,6,0,1,3,19,19,7,2,0,224,224,224, + 224,224,224,224,224,224,224,224,192,192,192,0,0,224,224,224, + 5,6,6,9,2,13,216,216,216,216,216,144,12,18,36,14, + 1,0,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,25,128,255,224,255,224,51,0,51,0, + 51,0,51,0,51,0,12,21,42,13,0,254,6,0,63,128, + 127,224,246,224,230,112,230,112,246,0,126,0,62,0,15,0, + 7,192,7,224,6,240,230,112,230,112,230,112,246,240,127,224, + 31,192,6,0,6,0,21,18,54,22,0,0,0,7,0,62, + 7,0,127,14,0,227,142,0,193,156,0,193,156,0,227,184, + 0,127,56,0,62,112,0,0,112,0,0,227,224,0,231,240, + 1,206,56,1,204,24,3,140,24,3,142,56,7,7,240,7, + 3,224,16,18,36,18,1,0,15,128,31,192,61,224,56,224, + 56,224,56,224,29,192,15,128,31,0,63,156,123,220,113,252, + 224,248,224,112,224,248,241,252,127,206,31,135,2,6,6,6, + 2,13,192,192,192,192,192,128,6,24,24,8,1,251,12,28, + 56,56,112,112,96,224,224,224,224,224,224,224,224,224,224,96, + 112,112,56,56,28,12,6,24,24,8,1,251,192,224,112,112, + 56,56,24,28,28,28,28,28,28,28,28,28,28,24,56,56, + 112,112,224,192,8,7,7,10,1,12,24,24,219,255,60,102, + 102,12,12,24,15,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,3, + 6,6,7,2,253,224,224,224,96,96,192,7,3,3,8,0, + 6,254,254,254,3,3,3,7,2,0,224,224,224,7,19,19, + 8,1,0,6,6,6,12,12,12,24,24,24,24,48,48,48, + 96,96,96,192,192,192,12,18,36,13,0,0,31,128,63,192, + 121,224,112,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,112,224,112,224,121,224,63,192,31,128, + 7,18,18,13,2,0,14,14,30,254,254,14,14,14,14,14, + 14,14,14,14,14,14,14,14,12,18,36,13,0,0,31,0, + 127,192,113,224,224,224,224,112,224,112,0,112,0,224,1,224, + 3,192,7,128,31,0,60,0,120,0,240,0,224,0,255,240, + 255,240,12,18,36,13,0,0,31,0,127,192,113,192,224,224, + 224,224,224,224,0,224,1,192,15,128,15,224,0,224,0,112, + 0,112,224,112,224,240,113,224,127,224,31,128,12,18,36,13, + 0,0,1,192,3,192,3,192,7,192,7,192,13,192,29,192, + 25,192,49,192,113,192,97,192,225,192,255,240,255,240,1,192, + 1,192,1,192,1,192,12,18,36,13,0,0,127,224,127,224, + 112,0,112,0,112,0,112,0,127,128,127,192,113,224,0,224, + 0,112,0,112,0,112,224,112,224,240,241,224,127,192,31,128, + 12,18,36,13,0,0,15,128,63,224,120,224,112,112,224,112, + 224,0,224,0,239,0,255,192,249,224,240,224,224,112,224,112, + 224,112,112,224,121,224,63,192,31,128,12,18,36,13,0,0, + 255,240,255,240,0,240,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,14,0,14,0,30,0,28,0,28,0,60,0, + 56,0,56,0,12,18,36,13,0,0,15,0,63,192,57,192, + 112,224,112,224,112,224,112,224,57,192,31,128,63,192,112,224, + 224,112,224,112,224,112,224,112,112,224,127,224,31,128,12,18, + 36,13,0,0,31,128,127,192,121,224,240,224,224,112,224,112, + 224,112,224,112,240,240,121,240,127,240,31,112,0,112,0,112, + 224,224,243,224,127,192,31,0,3,14,14,7,2,0,224,224, + 224,0,0,0,0,0,0,0,0,224,224,224,3,17,17,7, + 2,253,224,224,224,0,0,0,0,0,0,0,0,224,224,224, + 96,96,192,13,12,24,15,0,1,0,56,0,248,3,224,15, + 128,62,0,240,0,240,0,62,0,15,128,3,224,0,248,0, + 56,10,5,10,14,2,5,255,192,255,192,0,0,255,192,255, + 192,13,12,24,14,1,1,224,0,248,0,62,0,15,128,3, + 224,0,120,0,120,3,224,15,128,62,0,248,0,224,0,11, + 19,38,15,2,0,31,128,127,192,121,224,240,224,224,224,225, + 224,1,192,3,192,7,128,7,0,14,0,14,0,14,0,14, + 0,0,0,0,0,14,0,14,0,14,0,22,22,66,24,1, + 252,1,255,0,7,255,192,15,129,240,30,0,120,60,0,56, + 120,125,156,112,255,156,241,199,28,227,135,28,227,14,28,231, + 14,56,231,12,56,231,28,112,231,28,112,227,157,224,243,255, + 192,113,247,0,120,0,0,60,0,0,31,7,0,15,255,0, + 3,252,0,16,19,38,18,1,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,15, + 19,38,18,2,0,255,224,255,248,224,120,224,28,224,28,224, + 28,224,28,224,56,255,240,255,248,224,28,224,14,224,14,224, + 14,224,14,224,30,224,124,255,248,255,224,16,19,38,18,1, + 0,7,240,31,252,62,62,120,15,112,7,240,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,7,112,7,120, + 15,62,62,31,252,7,240,16,19,38,19,2,0,255,224,255, + 248,224,124,224,30,224,14,224,15,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,224,14,224,30,224,124,255, + 248,255,224,13,19,38,16,2,0,255,240,255,240,224,0,224, + 0,224,0,224,0,224,0,224,0,255,224,255,224,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,248,255,248,12, + 19,38,15,2,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,255,224,255,224,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,17,19,57,19,1, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,0,0,224,0,0,224,0,0,224,0,0,224,127,128,224, + 127,128,224,3,128,224,3,128,240,3,128,112,7,128,120,15, + 128,62,63,128,31,251,128,7,243,128,15,19,38,19,2,0, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,3,19,19,7,2,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 19,38,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,224,224,224, + 224,224,224,224,224,113,224,127,192,63,128,14,19,38,18,2, + 0,224,60,224,120,224,240,225,224,227,192,231,128,239,0,254, + 0,254,0,255,0,247,128,227,128,225,192,225,224,224,224,224, + 112,224,120,224,56,224,60,12,19,38,15,2,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,19,19,57,23,2,0,224,0,224,240,1,224,240, + 1,224,248,3,224,248,3,224,252,7,224,236,6,224,238,14, + 224,230,12,224,231,28,224,231,28,224,227,24,224,227,184,224, + 227,184,224,225,240,224,225,240,224,224,224,224,224,224,224,224, + 224,224,15,19,38,19,2,0,224,14,240,14,240,14,248,14, + 248,14,252,14,238,14,238,14,231,14,227,142,227,142,225,206, + 224,206,224,238,224,126,224,62,224,62,224,30,224,14,17,19, + 57,19,1,0,7,240,0,31,252,0,62,62,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,240,7,128,112,7, + 0,120,15,0,62,62,0,31,252,0,7,240,0,14,19,38, + 17,2,0,255,224,255,248,224,56,224,28,224,28,224,28,224, + 28,224,56,255,248,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,17,20,60,19,1,255,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,39,128,112,119,0,120,63,0,62, + 30,0,31,254,0,7,247,0,0,2,0,14,19,38,17,2, + 0,255,224,255,248,224,56,224,28,224,28,224,28,224,28,224, + 56,255,248,255,240,224,120,224,56,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,14,19,38,17,2,0,15,192,63, + 240,120,248,240,56,224,56,224,0,240,0,124,0,63,192,7, + 240,0,248,0,60,0,28,224,28,224,28,224,60,248,248,127, + 240,31,192,15,19,38,15,0,0,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 19,38,19,2,0,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,112,28,124,124,63,248,15,224,16,19,38,18,1, + 0,224,7,224,7,240,15,112,14,120,30,56,28,56,28,60, + 60,28,56,28,56,30,120,14,112,14,112,14,112,7,224,7, + 224,3,192,3,192,3,192,21,19,57,23,1,0,224,112,56, + 224,112,56,224,112,56,224,112,56,112,248,112,112,248,112,112, + 216,112,113,220,112,49,220,96,57,220,224,57,140,224,59,142, + 224,27,142,192,27,142,192,31,7,192,31,7,192,14,3,128, + 14,3,128,14,3,128,16,19,38,18,1,0,224,7,240,15, + 120,30,56,28,28,56,14,112,15,240,7,224,3,192,3,192, + 7,224,15,240,14,112,28,56,60,60,56,28,112,14,240,15, + 224,7,15,19,38,17,1,0,224,14,240,14,112,28,120,28, + 56,56,60,56,28,112,28,112,14,224,14,224,7,192,7,192, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,14,19, + 38,16,1,0,255,252,255,252,0,60,0,120,0,240,1,224, + 1,224,3,192,7,128,7,128,15,0,30,0,30,0,60,0, + 56,0,120,0,240,0,255,252,255,252,5,24,24,8,1,251, + 248,248,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,248,248,7,19,19,8,0,0,192,192, + 192,96,96,96,48,48,48,48,24,24,24,12,12,12,6,6, + 6,5,24,24,8,2,251,248,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,248,248,11, + 9,18,14,1,10,14,0,14,0,31,0,27,0,59,128,113, + 192,113,192,224,224,224,224,14,2,4,14,0,251,255,252,255, + 252,6,4,4,8,1,15,224,112,56,28,12,14,28,14,1, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 15,2,0,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,11,14,28,13,1,0,31, + 128,63,192,121,224,112,224,224,0,224,0,224,0,224,0,224, + 0,224,0,112,224,121,224,63,192,31,128,12,19,38,15,1, + 0,0,112,0,112,0,112,0,112,0,112,31,112,63,240,121, + 240,112,240,224,112,224,112,224,112,224,112,224,112,224,112,112, + 240,121,240,63,240,31,112,12,14,28,14,1,0,15,0,63, + 192,121,224,112,224,224,112,224,112,255,240,255,240,224,0,224, + 0,112,112,120,240,63,224,15,128,7,19,19,9,1,0,30, + 62,56,56,56,254,254,56,56,56,56,56,56,56,56,56,56, + 56,56,12,19,38,15,1,251,31,112,63,240,121,240,112,240, + 224,112,224,112,224,112,224,112,224,112,224,112,112,240,121,240, + 63,240,31,112,0,112,224,112,240,224,127,224,31,128,11,19, + 38,15,2,0,224,0,224,0,224,0,224,0,224,0,239,0, + 255,192,241,192,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,3,19,19,7,2,0, + 224,224,224,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,5,24,24,7,0,251,56,56,56,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,248, + 240,11,19,38,14,2,0,224,0,224,0,224,0,224,0,224, + 0,225,192,227,192,231,128,239,0,254,0,252,0,254,0,239, + 0,231,0,231,128,227,192,225,192,225,224,224,224,3,19,19, + 7,2,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,17,14,42,21,2,0,239,62,0,255, + 255,0,243,231,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,225,195,128,225,195,128,225,195,128, + 225,195,128,225,195,128,11,14,28,15,2,0,239,128,255,192, + 241,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,12,14,28,14,1,0,15,0, + 63,192,121,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,112,224,121,224,63,192,15,0,12,19,38,15,2,251, + 239,128,255,192,249,224,240,224,224,112,224,112,224,112,224,112, + 224,112,224,112,240,224,249,224,255,192,239,128,224,0,224,0, + 224,0,224,0,224,0,12,19,38,15,1,251,31,112,63,240, + 121,240,112,240,224,112,224,112,224,112,224,112,224,112,224,112, + 112,240,121,240,63,240,31,112,0,112,0,112,0,112,0,112, + 0,112,7,14,14,10,2,0,238,254,254,240,224,224,224,224, + 224,224,224,224,224,224,11,14,28,13,1,0,63,0,127,128, + 243,192,225,192,224,0,252,0,127,128,15,192,1,224,224,224, + 224,224,241,224,127,192,63,128,7,18,18,9,1,0,56,56, + 56,56,254,254,56,56,56,56,56,56,56,56,56,56,62,30, + 11,14,28,15,2,0,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,225,224,115,224,126,224, + 28,224,12,14,28,14,1,0,224,112,224,112,224,112,112,224, + 112,224,112,224,57,192,57,192,57,192,31,128,31,128,15,0, + 15,0,15,0,19,14,42,19,0,0,224,224,224,224,224,224, + 96,224,192,113,241,192,113,241,192,49,177,128,51,185,128,59, + 187,128,27,27,0,31,31,0,31,31,0,14,14,0,14,14, + 0,14,14,0,11,14,28,13,1,0,224,224,241,224,113,192, + 59,128,63,128,31,0,14,0,31,0,31,0,59,128,123,192, + 113,192,241,224,224,224,13,19,38,15,1,251,224,56,224,56, + 112,56,120,112,56,112,60,240,28,224,28,224,15,192,15,192, + 7,192,7,128,3,128,3,128,7,0,7,0,14,0,62,0, + 60,0,11,14,28,13,1,0,255,224,255,224,1,192,3,128, + 7,128,15,0,14,0,30,0,60,0,56,0,112,0,240,0, + 255,224,255,224,7,24,24,10,1,251,14,28,56,56,56,56, + 56,56,56,56,112,224,224,112,56,56,56,56,56,56,56,56, + 28,14,2,24,24,7,3,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,24,24,10,2,251,224,112,56,56,56,56,56,56,56,56, + 28,14,14,28,56,56,56,56,56,56,56,56,112,224,11,4, + 8,14,1,5,120,224,254,224,239,224,227,192,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 6,0,1,3,19,19,7,2,251,224,224,224,0,0,96,96, + 96,224,224,224,224,224,224,224,224,224,224,224,11,18,36,14, + 1,254,1,128,1,128,31,128,63,192,123,224,115,96,227,0, + 230,0,230,0,230,0,230,0,236,0,236,224,125,224,127,192, + 63,128,24,0,24,0,13,18,36,14,1,0,31,128,63,192, + 112,224,112,224,112,0,120,0,56,0,28,0,255,192,255,192, + 28,0,28,0,28,0,56,0,56,0,127,56,255,248,241,240, + 12,12,24,14,1,3,192,48,239,112,127,224,57,192,112,224, + 112,224,112,224,112,224,57,192,127,224,239,112,192,48,13,18, + 36,14,0,0,224,56,224,56,112,112,112,112,56,224,56,224, + 29,192,29,192,127,240,127,240,7,0,127,240,127,240,7,0, + 7,0,7,0,7,0,7,0,2,24,24,7,3,251,192,192, + 192,192,192,192,192,192,192,192,0,0,0,0,192,192,192,192, + 192,192,192,192,192,192,12,24,48,14,1,251,31,128,63,192, + 121,224,112,224,120,224,60,0,30,0,127,0,247,128,227,192, + 225,224,224,224,112,112,120,112,60,112,30,224,15,192,7,128, + 3,192,113,224,112,224,121,224,63,192,31,128,7,2,2,9, + 1,16,238,238,19,19,57,19,0,0,1,240,0,15,254,0, + 30,15,0,56,3,128,112,1,192,97,240,192,227,184,224,198, + 12,96,198,0,96,198,0,96,198,0,96,198,12,96,227,184, + 224,97,240,192,112,1,192,56,3,128,30,15,0,15,254,0, + 1,240,0,8,12,12,10,1,7,124,254,198,30,126,230,198, + 255,123,0,255,255,10,8,16,13,1,3,29,192,59,128,119, + 0,238,0,238,0,119,0,59,128,29,192,12,7,14,15,1, + 4,255,240,255,240,0,48,0,48,0,48,0,48,0,48,7, + 3,3,8,0,6,254,254,254,19,19,57,19,0,0,3,248, + 0,15,254,0,28,15,0,56,3,128,115,249,192,99,28,192, + 227,12,224,195,12,96,195,24,96,195,240,96,195,48,96,195, + 24,96,227,24,96,99,12,224,112,0,192,56,1,192,30,3, + 128,15,254,0,3,248,0,7,2,2,9,1,17,254,254,8, + 7,7,9,0,11,60,102,195,195,195,102,60,11,13,26,15, + 2,0,14,0,14,0,14,0,14,0,255,224,255,224,14,0, + 14,0,14,0,14,0,0,0,255,224,255,224,6,10,10,7, + 0,8,120,252,204,12,28,120,224,192,252,252,6,10,10,7, + 0,8,120,252,204,12,56,56,12,204,252,120,6,4,4,8, + 1,15,28,56,112,224,11,19,38,15,2,251,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 225,224,243,224,254,224,236,224,224,0,224,0,224,0,224,0, + 224,0,11,24,48,13,1,251,15,224,63,224,124,192,124,192, + 252,192,252,192,252,192,252,192,252,192,124,192,124,192,60,192, + 28,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,3,3,3,7,2,6,224,224, + 224,6,6,6,8,1,251,112,120,28,28,252,120,4,10,10, + 7,1,8,48,48,240,240,48,48,48,48,48,48,8,12,12, + 10,1,7,60,126,231,195,195,195,231,126,60,0,255,255,10, + 8,16,13,1,3,238,0,119,0,59,128,29,192,29,192,59, + 128,119,0,238,0,17,18,54,19,1,0,48,24,0,48,24, + 0,240,48,0,240,48,0,48,96,0,48,96,0,48,192,0, + 48,192,0,49,134,0,49,142,0,3,30,0,3,30,0,6, + 54,0,6,102,0,12,127,128,12,127,128,24,6,0,24,6, + 0,16,18,36,19,1,0,48,24,48,24,240,48,240,48,48, + 96,48,96,48,192,48,192,49,158,49,191,3,51,3,3,6, + 7,6,30,12,56,12,48,24,63,24,63,17,18,54,19,1, + 0,120,24,0,252,24,0,204,48,0,12,48,0,56,96,0, + 56,96,0,12,192,0,204,192,0,253,134,0,121,142,0,3, + 30,0,3,30,0,6,54,0,6,102,0,12,127,128,12,127, + 128,24,6,0,24,6,0,11,19,38,15,2,251,14,0,14, + 0,14,0,0,0,0,0,14,0,14,0,14,0,14,0,28, + 0,60,0,120,0,112,0,240,224,224,224,225,224,243,192,127, + 192,63,0,16,24,48,18,1,0,14,0,7,0,3,128,1, + 192,0,0,3,192,3,192,7,224,7,224,14,96,14,112,14, + 112,28,56,28,56,28,56,56,28,56,28,63,252,127,254,112, + 14,112,14,224,7,224,7,224,7,16,24,48,18,1,0,0, + 112,0,224,1,192,3,128,0,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,16, + 24,48,18,1,0,1,192,3,224,7,112,14,56,0,0,3, + 192,3,192,7,224,7,224,14,96,14,112,14,112,28,56,28, + 56,28,56,56,28,56,28,63,252,127,254,112,14,112,14,224, + 7,224,7,224,7,16,23,46,18,1,0,7,152,15,248,12, + 240,0,0,3,192,3,192,7,224,7,224,14,96,14,112,14, + 112,28,56,28,56,28,56,56,28,56,28,63,252,127,254,112, + 14,112,14,224,7,224,7,224,7,16,23,46,18,1,0,14, + 112,14,112,0,0,0,0,3,192,3,192,7,224,7,224,14, + 96,14,112,14,112,28,56,28,56,28,56,56,28,56,28,63, + 252,127,254,112,14,112,14,224,7,224,7,224,7,16,24,48, + 18,1,0,3,192,6,96,4,32,6,96,3,192,3,192,3, + 192,7,224,7,224,14,96,14,112,14,112,28,56,28,56,28, + 56,56,28,56,28,63,252,127,254,112,14,112,14,224,7,224, + 7,224,7,22,19,57,24,1,0,3,255,248,3,255,248,7, + 112,0,7,112,0,14,112,0,14,112,0,14,112,0,28,112, + 0,28,127,240,28,127,240,56,112,0,56,112,0,63,240,0, + 127,240,0,112,112,0,112,112,0,224,112,0,224,127,252,224, + 127,252,16,24,48,18,1,251,7,240,31,252,62,62,120,15, + 112,7,240,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,240,7,112,7,120,15,62,62,31,252,7,240,3,192, + 0,224,0,224,7,224,3,192,13,24,48,16,2,0,56,0, + 28,0,14,0,7,0,0,0,255,240,255,240,224,0,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,248,255,248,13,24, + 48,16,2,0,1,192,3,128,7,0,14,0,0,0,255,240, + 255,240,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,248,255,248,13,24,48,16,2,0,7,0,15,128,29,192, + 56,224,0,0,255,240,255,240,224,0,224,0,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,248,255,248,13,23,46,16,2,0, + 56,224,56,224,0,0,0,0,255,240,255,240,224,0,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,248,255,248,6,24, + 24,7,0,0,224,112,56,28,0,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,6,24,24,7, + 1,0,28,56,112,224,0,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,112,112,112,9,24,48,7,255,0, + 28,0,62,0,119,0,227,128,0,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 7,23,23,7,0,0,238,238,0,0,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,19,19,57, + 19,255,0,31,252,0,31,255,0,28,15,128,28,3,192,28, + 1,192,28,1,224,28,0,224,28,0,224,255,192,224,255,192, + 224,28,0,224,28,0,224,28,0,224,28,1,224,28,1,192, + 28,3,192,28,15,128,31,255,0,31,252,0,15,23,46,19, + 2,0,15,48,31,240,25,224,0,0,224,14,240,14,240,14, + 248,14,248,14,252,14,238,14,238,14,231,14,227,142,227,142, + 225,206,224,206,224,238,224,126,224,62,224,62,224,30,224,14, + 17,24,72,19,1,0,14,0,0,7,0,0,3,128,0,1, + 192,0,0,0,0,7,240,0,31,252,0,62,62,0,120,15, + 0,112,7,0,240,7,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,112, + 7,0,120,15,0,62,62,0,31,252,0,7,240,0,17,24, + 72,19,1,0,0,56,0,0,112,0,0,224,0,1,192,0, + 0,0,0,7,240,0,31,252,0,62,62,0,120,15,0,112, + 7,0,240,7,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,7,128,112,7,0, + 120,15,0,62,62,0,31,252,0,7,240,0,17,24,72,19, + 1,0,1,192,0,3,224,0,7,112,0,14,56,0,0,0, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,7,128,224,3,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,240,7,128,112,7,0,120,15, + 0,62,62,0,31,252,0,7,240,0,17,23,69,19,1,0, + 7,152,0,15,248,0,12,240,0,0,0,0,7,240,0,31, + 252,0,62,62,0,120,15,0,112,7,0,240,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,240,7,128,112,7,0,120,15,0,62,62,0,31, + 252,0,7,240,0,17,23,69,19,1,0,14,56,0,14,56, + 0,0,0,0,0,0,0,7,240,0,31,252,0,62,62,0, + 120,15,0,112,7,0,240,7,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,240,7, + 128,112,7,0,120,15,0,62,62,0,31,252,0,7,240,0, + 12,12,24,15,1,1,64,32,224,112,112,224,57,192,31,128, + 15,0,15,0,31,128,57,192,112,224,224,112,64,32,19,19, + 57,19,0,0,3,248,96,15,254,224,31,31,192,60,3,128, + 56,7,128,120,15,192,112,29,192,112,57,192,112,113,192,112, + 225,192,113,193,192,115,129,192,119,1,192,126,3,192,60,3, + 128,60,7,128,127,31,0,239,254,0,195,248,0,15,24,48, + 19,2,0,14,0,7,0,3,128,1,192,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,112,28,124,124,63, + 248,15,224,15,24,48,19,2,0,0,112,0,224,1,192,3, + 128,0,0,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,112,28,124,124,63,248,15,224,15,24,48,19,2,0,3, + 128,7,192,14,224,28,112,0,0,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,240,30,112,28,124,124,63,248,15,224,15, + 23,46,19,2,0,28,112,28,112,0,0,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,112,28,124,124,63, + 248,15,224,15,24,48,17,1,0,0,112,0,224,1,192,3, + 128,0,0,224,14,240,30,112,28,120,60,56,56,60,120,28, + 112,30,240,14,224,15,224,7,192,7,192,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,14,19,38,17,2,0,224, + 0,224,0,224,0,224,0,255,224,255,248,224,56,224,28,224, + 28,224,28,224,28,224,56,255,248,255,240,224,0,224,0,224, + 0,224,0,224,0,11,19,38,14,2,0,30,0,127,128,243, + 128,225,192,225,192,225,192,225,192,227,128,239,0,239,128,227, + 192,225,192,224,224,224,224,224,224,224,224,225,192,239,192,239, + 128,12,19,38,14,1,0,28,0,14,0,7,0,3,128,0, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 14,1,0,1,192,3,128,7,0,14,0,0,0,31,128,63, + 192,113,224,112,224,0,224,7,224,63,224,124,224,240,224,224, + 224,225,224,243,224,127,240,62,112,12,19,38,14,1,0,7, + 0,15,128,29,192,56,224,0,0,31,128,63,192,113,224,112, + 224,0,224,7,224,63,224,124,224,240,224,224,224,225,224,243, + 224,127,240,62,112,12,19,38,14,1,0,60,192,127,192,103, + 128,0,0,0,0,31,128,63,192,113,224,112,224,0,224,7, + 224,63,224,124,224,240,224,224,224,225,224,243,224,127,240,62, + 112,12,18,36,14,1,0,57,192,57,192,0,0,0,0,31, + 128,63,192,113,224,112,224,0,224,7,224,63,224,124,224,240, + 224,224,224,225,224,243,224,127,240,62,112,12,19,38,14,1, + 0,7,0,13,128,8,128,13,128,7,0,31,128,63,192,113, + 224,112,224,0,224,7,224,63,224,124,224,240,224,224,224,225, + 224,243,224,127,240,62,112,20,14,42,22,1,0,31,143,0, + 63,255,192,113,249,224,112,240,224,0,224,112,7,224,112,63, + 255,240,124,255,240,240,224,0,224,224,0,225,240,112,243,248, + 240,127,63,224,62,15,128,11,19,38,13,1,251,31,128,63, + 192,121,224,112,224,224,0,224,0,224,0,224,0,224,0,224, + 0,112,224,121,224,63,192,31,128,30,0,7,0,7,0,63, + 0,30,0,12,19,38,14,1,0,28,0,14,0,7,0,3, + 128,0,0,15,0,63,192,121,224,112,224,224,112,224,112,255, + 240,255,240,224,0,224,0,112,112,120,240,63,224,15,128,12, + 19,38,14,1,0,3,128,7,0,14,0,28,0,0,0,15, + 0,63,192,121,224,112,224,224,112,224,112,255,240,255,240,224, + 0,224,0,112,112,120,240,63,224,15,128,12,19,38,14,1, + 0,7,0,15,128,29,192,56,224,0,0,15,0,63,192,121, + 224,112,224,224,112,224,112,255,240,255,240,224,0,224,0,112, + 112,120,240,63,224,15,128,12,18,36,14,1,0,57,192,57, + 192,0,0,0,0,15,0,63,192,121,224,112,224,224,112,224, + 112,255,240,255,240,224,0,224,0,112,112,120,240,63,224,15, + 128,6,19,19,7,0,0,224,112,56,28,0,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,6,19,19,7,1,0, + 28,56,112,224,0,112,112,112,112,112,112,112,112,112,112,112, + 112,112,112,9,19,38,7,255,0,28,0,62,0,119,0,227, + 128,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,7, + 18,18,7,0,0,238,238,0,0,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,12,19,38,14,1,0,112,0,29, + 192,7,0,31,0,97,128,15,192,63,192,121,224,112,224,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,121,224,63, + 192,15,0,11,19,38,15,2,0,60,192,127,192,103,128,0, + 0,0,0,239,128,255,192,241,192,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,12, + 19,38,14,1,0,28,0,14,0,7,0,3,128,0,0,15, + 0,63,192,121,224,112,224,224,112,224,112,224,112,224,112,224, + 112,224,112,112,224,121,224,63,192,15,0,12,19,38,14,1, + 0,3,128,7,0,14,0,28,0,0,0,15,0,63,192,121, + 224,112,224,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,121,224,63,192,15,0,12,19,38,14,1,0,14,0,31, + 0,59,128,113,192,0,0,15,0,63,192,121,224,112,224,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,121,224,63, + 192,15,0,12,19,38,14,1,0,60,192,127,192,103,128,0, + 0,0,0,15,0,63,192,121,224,112,224,224,112,224,112,224, + 112,224,112,224,112,224,112,112,224,121,224,63,192,15,0,12, + 18,36,14,1,0,57,192,57,192,0,0,0,0,15,0,63, + 192,121,224,112,224,224,112,224,112,224,112,224,112,224,112,224, + 112,112,224,121,224,63,192,15,0,11,12,24,15,2,1,14, + 0,14,0,14,0,0,0,0,0,255,224,255,224,0,0,0, + 0,14,0,14,0,14,0,14,14,28,14,0,0,7,140,31, + 252,60,248,56,112,112,248,113,248,115,184,119,56,126,56,124, + 56,56,112,124,240,255,224,199,128,11,19,38,15,2,0,56, + 0,28,0,14,0,7,0,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,225,224,115, + 224,126,224,28,224,11,19,38,15,2,0,3,128,7,0,14, + 0,28,0,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,225,224,115,224,126,224,28, + 224,11,19,38,15,2,0,14,0,31,0,59,128,113,192,0, + 0,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,225,224,115,224,126,224,28,224,11,18,36, + 15,2,0,57,192,57,192,0,0,0,0,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,225, + 224,115,224,126,224,28,224,13,24,48,15,1,251,0,224,1, + 192,3,128,7,0,0,0,224,56,224,56,112,56,120,112,56, + 112,60,240,28,224,28,224,15,192,15,192,7,192,7,128,3, + 128,3,128,7,0,7,0,14,0,62,0,60,0,12,24,48, + 15,2,251,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,224,0,224,0,224,0,224, + 0,224,0,13,23,46,15,1,251,28,224,28,224,0,0,0, + 0,224,56,224,56,112,56,120,112,56,112,60,240,28,224,28, + 224,15,192,15,192,7,192,7,128,3,128,3,128,7,0,7, + 0,14,0,62,0,60,0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=15 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=28 h=37 x=-2 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB18r[3453] U8G_SECTION(".progmem.u8g_font_helvB18r") = { + 0,28,37,254,248,19,4,35,9,107,32,127,251,19,251,19, + 251,0,0,0,6,0,1,3,19,19,7,2,0,224,224,224, + 224,224,224,224,224,224,224,224,192,192,192,0,0,224,224,224, + 5,6,6,9,2,13,216,216,216,216,216,144,12,18,36,14, + 1,0,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,25,128,255,224,255,224,51,0,51,0, + 51,0,51,0,51,0,12,21,42,13,0,254,6,0,63,128, + 127,224,246,224,230,112,230,112,246,0,126,0,62,0,15,0, + 7,192,7,224,6,240,230,112,230,112,230,112,246,240,127,224, + 31,192,6,0,6,0,21,18,54,22,0,0,0,7,0,62, + 7,0,127,14,0,227,142,0,193,156,0,193,156,0,227,184, + 0,127,56,0,62,112,0,0,112,0,0,227,224,0,231,240, + 1,206,56,1,204,24,3,140,24,3,142,56,7,7,240,7, + 3,224,16,18,36,18,1,0,15,128,31,192,61,224,56,224, + 56,224,56,224,29,192,15,128,31,0,63,156,123,220,113,252, + 224,248,224,112,224,248,241,252,127,206,31,135,2,6,6,6, + 2,13,192,192,192,192,192,128,6,24,24,8,1,251,12,28, + 56,56,112,112,96,224,224,224,224,224,224,224,224,224,224,96, + 112,112,56,56,28,12,6,24,24,8,1,251,192,224,112,112, + 56,56,24,28,28,28,28,28,28,28,28,28,28,24,56,56, + 112,112,224,192,8,7,7,10,1,12,24,24,219,255,60,102, + 102,12,12,24,15,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,3, + 6,6,7,2,253,224,224,224,96,96,192,7,3,3,8,0, + 6,254,254,254,3,3,3,7,2,0,224,224,224,7,19,19, + 8,1,0,6,6,6,12,12,12,24,24,24,24,48,48,48, + 96,96,96,192,192,192,12,18,36,13,0,0,31,128,63,192, + 121,224,112,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,112,224,112,224,121,224,63,192,31,128, + 7,18,18,13,2,0,14,14,30,254,254,14,14,14,14,14, + 14,14,14,14,14,14,14,14,12,18,36,13,0,0,31,0, + 127,192,113,224,224,224,224,112,224,112,0,112,0,224,1,224, + 3,192,7,128,31,0,60,0,120,0,240,0,224,0,255,240, + 255,240,12,18,36,13,0,0,31,0,127,192,113,192,224,224, + 224,224,224,224,0,224,1,192,15,128,15,224,0,224,0,112, + 0,112,224,112,224,240,113,224,127,224,31,128,12,18,36,13, + 0,0,1,192,3,192,3,192,7,192,7,192,13,192,29,192, + 25,192,49,192,113,192,97,192,225,192,255,240,255,240,1,192, + 1,192,1,192,1,192,12,18,36,13,0,0,127,224,127,224, + 112,0,112,0,112,0,112,0,127,128,127,192,113,224,0,224, + 0,112,0,112,0,112,224,112,224,240,241,224,127,192,31,128, + 12,18,36,13,0,0,15,128,63,224,120,224,112,112,224,112, + 224,0,224,0,239,0,255,192,249,224,240,224,224,112,224,112, + 224,112,112,224,121,224,63,192,31,128,12,18,36,13,0,0, + 255,240,255,240,0,240,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,14,0,14,0,30,0,28,0,28,0,60,0, + 56,0,56,0,12,18,36,13,0,0,15,0,63,192,57,192, + 112,224,112,224,112,224,112,224,57,192,31,128,63,192,112,224, + 224,112,224,112,224,112,224,112,112,224,127,224,31,128,12,18, + 36,13,0,0,31,128,127,192,121,224,240,224,224,112,224,112, + 224,112,224,112,240,240,121,240,127,240,31,112,0,112,0,112, + 224,224,243,224,127,192,31,0,3,14,14,7,2,0,224,224, + 224,0,0,0,0,0,0,0,0,224,224,224,3,17,17,7, + 2,253,224,224,224,0,0,0,0,0,0,0,0,224,224,224, + 96,96,192,13,12,24,15,0,1,0,56,0,248,3,224,15, + 128,62,0,240,0,240,0,62,0,15,128,3,224,0,248,0, + 56,10,5,10,14,2,5,255,192,255,192,0,0,255,192,255, + 192,13,12,24,14,1,1,224,0,248,0,62,0,15,128,3, + 224,0,120,0,120,3,224,15,128,62,0,248,0,224,0,11, + 19,38,15,2,0,31,128,127,192,121,224,240,224,224,224,225, + 224,1,192,3,192,7,128,7,0,14,0,14,0,14,0,14, + 0,0,0,0,0,14,0,14,0,14,0,22,22,66,24,1, + 252,1,255,0,7,255,192,15,129,240,30,0,120,60,0,56, + 120,125,156,112,255,156,241,199,28,227,135,28,227,14,28,231, + 14,56,231,12,56,231,28,112,231,28,112,227,157,224,243,255, + 192,113,247,0,120,0,0,60,0,0,31,7,0,15,255,0, + 3,252,0,16,19,38,18,1,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,15, + 19,38,18,2,0,255,224,255,248,224,120,224,28,224,28,224, + 28,224,28,224,56,255,240,255,248,224,28,224,14,224,14,224, + 14,224,14,224,30,224,124,255,248,255,224,16,19,38,18,1, + 0,7,240,31,252,62,62,120,15,112,7,240,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,7,112,7,120, + 15,62,62,31,252,7,240,16,19,38,19,2,0,255,224,255, + 248,224,124,224,30,224,14,224,15,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,224,14,224,30,224,124,255, + 248,255,224,13,19,38,16,2,0,255,240,255,240,224,0,224, + 0,224,0,224,0,224,0,224,0,255,224,255,224,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,248,255,248,12, + 19,38,15,2,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,255,224,255,224,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,17,19,57,19,1, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,0,0,224,0,0,224,0,0,224,0,0,224,127,128,224, + 127,128,224,3,128,224,3,128,240,3,128,112,7,128,120,15, + 128,62,63,128,31,251,128,7,243,128,15,19,38,19,2,0, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,3,19,19,7,2,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 19,38,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,224,224,224, + 224,224,224,224,224,113,224,127,192,63,128,14,19,38,18,2, + 0,224,60,224,120,224,240,225,224,227,192,231,128,239,0,254, + 0,254,0,255,0,247,128,227,128,225,192,225,224,224,224,224, + 112,224,120,224,56,224,60,12,19,38,15,2,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,19,19,57,23,2,0,224,0,224,240,1,224,240, + 1,224,248,3,224,248,3,224,252,7,224,236,6,224,238,14, + 224,230,12,224,231,28,224,231,28,224,227,24,224,227,184,224, + 227,184,224,225,240,224,225,240,224,224,224,224,224,224,224,224, + 224,224,15,19,38,19,2,0,224,14,240,14,240,14,248,14, + 248,14,252,14,238,14,238,14,231,14,227,142,227,142,225,206, + 224,206,224,238,224,126,224,62,224,62,224,30,224,14,17,19, + 57,19,1,0,7,240,0,31,252,0,62,62,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,240,7,128,112,7, + 0,120,15,0,62,62,0,31,252,0,7,240,0,14,19,38, + 17,2,0,255,224,255,248,224,56,224,28,224,28,224,28,224, + 28,224,56,255,248,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,17,20,60,19,1,255,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,39,128,112,119,0,120,63,0,62, + 30,0,31,254,0,7,247,0,0,2,0,14,19,38,17,2, + 0,255,224,255,248,224,56,224,28,224,28,224,28,224,28,224, + 56,255,248,255,240,224,120,224,56,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,14,19,38,17,2,0,15,192,63, + 240,120,248,240,56,224,56,224,0,240,0,124,0,63,192,7, + 240,0,248,0,60,0,28,224,28,224,28,224,60,248,248,127, + 240,31,192,15,19,38,15,0,0,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 19,38,19,2,0,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,112,28,124,124,63,248,15,224,16,19,38,18,1, + 0,224,7,224,7,240,15,112,14,120,30,56,28,56,28,60, + 60,28,56,28,56,30,120,14,112,14,112,14,112,7,224,7, + 224,3,192,3,192,3,192,21,19,57,23,1,0,224,112,56, + 224,112,56,224,112,56,224,112,56,112,248,112,112,248,112,112, + 216,112,113,220,112,49,220,96,57,220,224,57,140,224,59,142, + 224,27,142,192,27,142,192,31,7,192,31,7,192,14,3,128, + 14,3,128,14,3,128,16,19,38,18,1,0,224,7,240,15, + 120,30,56,28,28,56,14,112,15,240,7,224,3,192,3,192, + 7,224,15,240,14,112,28,56,60,60,56,28,112,14,240,15, + 224,7,15,19,38,17,1,0,224,14,240,14,112,28,120,28, + 56,56,60,56,28,112,28,112,14,224,14,224,7,192,7,192, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,14,19, + 38,16,1,0,255,252,255,252,0,60,0,120,0,240,1,224, + 1,224,3,192,7,128,7,128,15,0,30,0,30,0,60,0, + 56,0,120,0,240,0,255,252,255,252,5,24,24,8,1,251, + 248,248,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,248,248,7,19,19,8,0,0,192,192, + 192,96,96,96,48,48,48,48,24,24,24,12,12,12,6,6, + 6,5,24,24,8,2,251,248,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,248,248,11, + 9,18,14,1,10,14,0,14,0,31,0,27,0,59,128,113, + 192,113,192,224,224,224,224,14,2,4,14,0,251,255,252,255, + 252,6,4,4,8,1,15,224,112,56,28,12,14,28,14,1, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 15,2,0,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,11,14,28,13,1,0,31, + 128,63,192,121,224,112,224,224,0,224,0,224,0,224,0,224, + 0,224,0,112,224,121,224,63,192,31,128,12,19,38,15,1, + 0,0,112,0,112,0,112,0,112,0,112,31,112,63,240,121, + 240,112,240,224,112,224,112,224,112,224,112,224,112,224,112,112, + 240,121,240,63,240,31,112,12,14,28,14,1,0,15,0,63, + 192,121,224,112,224,224,112,224,112,255,240,255,240,224,0,224, + 0,112,112,120,240,63,224,15,128,7,19,19,9,1,0,30, + 62,56,56,56,254,254,56,56,56,56,56,56,56,56,56,56, + 56,56,12,19,38,15,1,251,31,112,63,240,121,240,112,240, + 224,112,224,112,224,112,224,112,224,112,224,112,112,240,121,240, + 63,240,31,112,0,112,224,112,240,224,127,224,31,128,11,19, + 38,15,2,0,224,0,224,0,224,0,224,0,224,0,239,0, + 255,192,241,192,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,3,19,19,7,2,0, + 224,224,224,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,5,24,24,7,0,251,56,56,56,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,248, + 240,11,19,38,14,2,0,224,0,224,0,224,0,224,0,224, + 0,225,192,227,192,231,128,239,0,254,0,252,0,254,0,239, + 0,231,0,231,128,227,192,225,192,225,224,224,224,3,19,19, + 7,2,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,17,14,42,21,2,0,239,62,0,255, + 255,0,243,231,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,225,195,128,225,195,128,225,195,128, + 225,195,128,225,195,128,11,14,28,15,2,0,239,128,255,192, + 241,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,12,14,28,14,1,0,15,0, + 63,192,121,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,112,224,121,224,63,192,15,0,12,19,38,15,2,251, + 239,128,255,192,249,224,240,224,224,112,224,112,224,112,224,112, + 224,112,224,112,240,224,249,224,255,192,239,128,224,0,224,0, + 224,0,224,0,224,0,12,19,38,15,1,251,31,112,63,240, + 121,240,112,240,224,112,224,112,224,112,224,112,224,112,224,112, + 112,240,121,240,63,240,31,112,0,112,0,112,0,112,0,112, + 0,112,7,14,14,10,2,0,238,254,254,240,224,224,224,224, + 224,224,224,224,224,224,11,14,28,13,1,0,63,0,127,128, + 243,192,225,192,224,0,252,0,127,128,15,192,1,224,224,224, + 224,224,241,224,127,192,63,128,7,18,18,9,1,0,56,56, + 56,56,254,254,56,56,56,56,56,56,56,56,56,56,62,30, + 11,14,28,15,2,0,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,225,224,115,224,126,224, + 28,224,12,14,28,14,1,0,224,112,224,112,224,112,112,224, + 112,224,112,224,57,192,57,192,57,192,31,128,31,128,15,0, + 15,0,15,0,19,14,42,19,0,0,224,224,224,224,224,224, + 96,224,192,113,241,192,113,241,192,49,177,128,51,185,128,59, + 187,128,27,27,0,31,31,0,31,31,0,14,14,0,14,14, + 0,14,14,0,11,14,28,13,1,0,224,224,241,224,113,192, + 59,128,63,128,31,0,14,0,31,0,31,0,59,128,123,192, + 113,192,241,224,224,224,13,19,38,15,1,251,224,56,224,56, + 112,56,120,112,56,112,60,240,28,224,28,224,15,192,15,192, + 7,192,7,128,3,128,3,128,7,0,7,0,14,0,62,0, + 60,0,11,14,28,13,1,0,255,224,255,224,1,192,3,128, + 7,128,15,0,14,0,30,0,60,0,56,0,112,0,240,0, + 255,224,255,224,7,24,24,10,1,251,14,28,56,56,56,56, + 56,56,56,56,112,224,224,112,56,56,56,56,56,56,56,56, + 28,14,2,24,24,7,3,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,24,24,10,2,251,224,112,56,56,56,56,56,56,56,56, + 28,14,14,28,56,56,56,56,56,56,56,56,112,224,11,4, + 8,14,1,5,120,224,254,224,239,224,227,192,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 23 + Calculated Max Values w=31 h=32 x= 4 y=21 dx=33 dy= 0 ascent=31 len=120 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24[11554] U8G_SECTION(".progmem.u8g_font_helvB24") = { + 0,40,49,250,244,25,5,252,14,144,32,255,249,31,249,25, + 249,0,0,0,9,0,1,5,25,25,11,3,0,248,248,248, + 248,248,248,248,248,248,248,248,112,112,112,112,112,112,112,0, + 0,248,248,248,248,248,11,9,18,16,2,16,241,224,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,18,25, + 75,19,0,255,3,199,0,3,199,0,3,143,0,3,143,0, + 7,143,0,7,142,0,7,142,0,127,255,192,127,255,192,127, + 255,192,127,255,192,15,28,0,14,28,0,14,28,0,14,60, + 0,255,255,128,255,255,128,255,255,128,255,255,128,28,120,0, + 60,120,0,60,112,0,60,112,0,56,240,0,56,240,0,16, + 28,56,18,1,253,1,128,1,128,15,240,63,252,127,254,253, + 190,249,159,241,159,241,143,249,128,255,128,127,192,63,240,15, + 252,1,254,1,255,1,159,1,143,241,143,241,159,249,159,127, + 254,127,254,63,248,7,224,1,128,1,128,1,128,26,23,92, + 29,1,0,14,0,48,0,63,128,112,0,127,192,96,0,113, + 192,224,0,224,224,192,0,224,225,192,0,224,227,128,0,224, + 227,128,0,113,199,0,0,127,198,0,0,63,142,0,0,14, + 12,28,0,0,28,127,0,0,24,255,128,0,56,227,128,0, + 49,193,192,0,113,193,192,0,97,193,192,0,225,193,192,1, + 192,227,128,1,192,255,128,3,128,127,0,3,0,28,0,20, + 25,75,24,2,0,3,224,0,15,248,0,31,252,0,31,252, + 0,30,60,0,62,60,0,62,60,0,31,60,0,31,248,0, + 15,248,0,15,240,0,15,224,0,63,241,224,127,241,224,124, + 249,192,248,255,192,240,127,192,240,63,128,240,31,0,248,15, + 128,252,63,192,127,255,224,127,251,224,31,241,240,7,192,0, + 4,9,9,8,2,16,240,240,240,240,240,240,240,96,96,8, + 31,31,11,1,250,7,15,30,30,60,60,56,120,120,120,240, + 240,240,240,240,240,240,240,240,248,120,120,120,120,60,60,28, + 30,14,15,7,8,31,31,11,1,250,224,240,120,120,60,60, + 28,30,30,30,15,15,15,15,15,15,15,15,15,31,30,30, + 30,28,60,60,56,120,112,240,224,10,11,22,13,1,13,12, + 0,12,0,76,128,237,192,255,192,127,128,30,0,63,0,127, + 128,115,128,33,0,16,16,32,19,1,0,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,5,11,11,9,2, + 250,248,248,248,248,248,24,24,56,112,224,128,9,5,10,11, + 1,7,255,128,255,128,255,128,255,128,255,128,5,5,5,9, + 2,0,248,248,248,248,248,8,25,25,9,0,0,3,3,3, + 3,6,6,6,14,12,12,12,28,24,24,24,48,48,48,112, + 96,96,96,192,192,192,15,24,48,18,1,0,15,224,31,240, + 63,248,127,252,124,124,248,62,248,62,248,62,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,248,62,248,62, + 248,62,124,124,127,252,63,248,31,240,15,224,10,23,46,18, + 2,0,1,192,3,192,7,192,31,192,255,192,255,192,255,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 16,24,48,18,1,0,15,224,63,248,127,252,127,254,252,126, + 248,63,248,31,240,31,240,31,0,63,0,62,0,126,0,252, + 1,248,7,240,15,224,31,128,63,0,126,0,252,0,255,255, + 255,255,255,255,255,255,16,24,48,18,1,0,15,224,63,248, + 127,252,127,252,248,62,240,62,240,30,240,30,0,62,0,124, + 3,248,3,240,3,252,0,126,0,63,0,31,240,31,240,31, + 240,63,248,62,127,254,127,252,63,248,15,224,16,24,48,18, + 1,0,0,248,0,248,1,248,3,248,3,248,7,248,15,120, + 14,120,30,120,28,120,60,120,120,120,112,120,240,120,224,120, + 255,255,255,255,255,255,255,255,0,120,0,120,0,120,0,120, + 0,120,15,24,48,18,1,0,63,252,63,252,63,252,63,252, + 56,0,120,0,120,0,120,0,123,224,127,248,127,252,127,252, + 120,126,0,62,0,62,0,30,0,30,240,62,240,62,248,124, + 127,252,127,248,63,240,15,192,15,24,48,18,1,0,7,224, + 31,248,63,252,63,254,124,62,120,30,240,0,240,0,243,224, + 247,248,255,252,255,252,252,126,248,62,240,30,240,30,240,30, + 240,30,248,62,124,124,127,252,63,248,31,240,7,192,16,24, + 48,18,1,0,255,255,255,255,255,255,255,255,0,30,0,62, + 0,60,0,120,0,248,0,240,1,240,1,224,3,224,3,192, + 7,192,7,192,7,128,15,128,15,128,15,128,31,0,31,0, + 31,0,31,0,17,24,72,18,0,0,7,240,0,31,252,0, + 63,254,0,62,62,0,124,31,0,120,15,0,120,15,0,120, + 15,0,124,31,0,62,62,0,31,252,0,31,252,0,63,254, + 0,124,31,0,248,15,128,240,7,128,240,7,128,240,7,128, + 248,15,128,126,63,0,127,254,0,63,254,0,31,252,0,7, + 240,0,15,24,48,18,1,0,7,192,31,240,63,248,127,252, + 124,124,248,62,240,30,240,30,240,30,240,30,248,62,252,126, + 127,254,127,254,63,222,7,158,0,30,0,30,240,60,248,124, + 127,248,127,248,31,240,7,192,5,17,17,11,3,0,248,248, + 248,248,248,0,0,0,0,0,0,0,248,248,248,248,248,5, + 23,23,11,3,250,248,248,248,248,248,0,0,0,0,0,0, + 0,248,248,248,248,248,24,24,56,112,224,128,16,16,32,19, + 1,0,0,3,0,31,0,127,3,255,15,254,127,248,255,192, + 254,0,254,0,255,192,127,240,15,254,3,255,0,127,0,31, + 0,3,15,12,24,19,2,2,255,254,255,254,255,254,255,254, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,255,254, + 16,16,32,19,1,0,192,0,240,0,254,0,255,192,127,240, + 31,254,3,255,0,127,0,127,3,255,31,254,127,240,255,192, + 254,0,240,0,192,0,16,25,50,20,2,0,15,224,63,248, + 127,252,127,254,252,126,248,63,248,31,240,31,240,31,0,63, + 0,126,0,254,1,252,1,248,3,224,3,192,7,192,7,192, + 0,0,0,0,7,192,7,192,7,192,7,192,7,192,29,30, + 120,33,1,251,0,15,224,0,0,127,252,0,1,255,254,0, + 3,240,63,128,7,192,7,192,15,0,3,192,30,0,1,224, + 28,0,0,240,60,7,220,112,56,31,252,112,112,60,252,56, + 112,120,120,56,240,240,56,56,224,224,56,56,225,224,56,56, + 225,192,112,120,225,192,112,112,225,192,112,112,225,224,240,224, + 241,225,241,224,112,255,255,192,120,127,63,128,56,62,30,0, + 60,0,0,0,30,0,0,0,15,128,0,0,15,240,60,0, + 3,255,252,0,1,255,252,0,0,127,224,0,22,25,75,23, + 0,0,0,252,0,0,252,0,1,254,0,1,254,0,1,254, + 0,3,255,0,3,255,0,3,255,0,7,207,128,7,207,128, + 7,207,128,15,135,128,15,135,192,15,135,192,31,3,192,31, + 3,224,31,255,224,31,255,224,63,255,240,63,255,240,62,1, + 240,124,0,248,124,0,248,252,0,252,248,0,124,19,25,75, + 24,3,0,255,252,0,255,255,0,255,255,128,255,255,128,248, + 15,192,248,7,192,248,7,192,248,7,192,248,7,192,248,15, + 128,255,255,0,255,255,0,255,255,128,255,255,192,248,7,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 7,224,255,255,192,255,255,192,255,255,128,255,254,0,21,25, + 75,24,1,0,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,248,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,254,0,21, + 25,75,24,2,0,255,248,0,255,255,0,255,255,128,255,255, + 192,248,15,224,248,3,224,248,3,240,248,1,240,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,1,248,248,1,240,248,3,240,248,3, + 224,248,15,224,255,255,192,255,255,128,255,255,0,255,248,0, + 18,25,75,22,2,0,255,255,128,255,255,128,255,255,128,255, + 255,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,255,192,255,255,192,255,255,192,255,255, + 192,16,25,50,20,2,0,255,255,255,255,255,255,255,255,248, + 0,248,0,248,0,248,0,248,0,248,0,255,254,255,254,255, + 254,255,254,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,22,25,75,25,1,0,0, + 255,0,3,255,192,15,255,224,31,255,240,31,195,248,63,0, + 248,126,0,124,124,0,124,252,0,0,248,0,0,248,0,0, + 248,0,0,248,15,252,248,15,252,248,15,252,248,15,252,252, + 0,124,124,0,124,126,0,124,126,0,252,63,131,252,63,255, + 252,31,255,220,7,255,156,3,254,28,19,25,75,23,2,0, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,255,255, + 224,255,255,224,255,255,224,255,255,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,5,25,25,9,2, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,15,25,50,18,1,0, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,248,62, + 248,62,248,62,248,62,248,62,252,126,255,252,127,252,63,248, + 15,224,20,25,75,24,2,0,248,7,224,248,7,224,248,15, + 192,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 249,248,0,251,240,0,255,224,0,255,224,0,255,240,0,255, + 240,0,255,248,0,252,252,0,248,126,0,248,126,0,248,63, + 0,248,31,128,248,15,128,248,15,192,248,7,224,248,3,240, + 248,3,240,16,25,50,20,2,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,255,255,255,255,255,255,255,255,23,25,75,27,2, + 0,254,0,254,254,0,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,131,254,255,131,254,251,131,190,251,131,190,251, + 199,190,251,199,190,251,199,190,249,199,62,249,239,62,249,239, + 62,249,239,62,249,239,62,248,238,62,248,254,62,248,254,62, + 248,254,62,248,124,62,248,124,62,248,124,62,19,25,75,24, + 2,0,248,3,224,252,3,224,252,3,224,254,3,224,254,3, + 224,255,3,224,255,3,224,255,131,224,255,195,224,251,195,224, + 251,227,224,249,227,224,249,243,224,248,243,224,248,251,224,248, + 123,224,248,63,224,248,63,224,248,31,224,248,31,224,248,15, + 224,248,15,224,248,7,224,248,7,224,248,3,224,23,25,75, + 25,1,0,1,255,0,7,255,192,15,255,224,31,255,240,63, + 199,248,63,1,248,126,0,252,124,0,124,124,0,124,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,124,0,124,124,0,124,126,0,252,63,1,248,63, + 199,248,31,255,240,15,255,224,7,255,192,1,255,0,18,25, + 75,22,2,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,252, + 0,255,240,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,23, + 26,78,26,1,255,1,255,0,7,255,192,15,255,224,31,255, + 240,63,199,248,63,1,248,126,0,252,124,0,124,252,0,126, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,2,62,252,7,62,124,15,188,126,15,252,63,7, + 248,63,195,240,31,255,248,15,255,252,7,255,254,1,255,60, + 0,0,24,19,25,75,24,2,0,255,254,0,255,255,128,255, + 255,192,255,255,192,248,7,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,7,192,248,15,192,255,255,128,255,255,0, + 255,255,0,255,255,128,248,15,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 224,248,3,224,19,25,75,22,1,0,3,248,0,15,254,0, + 31,255,0,63,255,128,62,31,128,124,7,192,120,7,192,120, + 3,192,124,0,0,127,0,0,63,240,0,63,254,0,31,255, + 128,3,255,192,0,63,192,0,7,224,0,3,224,248,3,224, + 248,3,224,124,3,224,126,15,192,63,255,192,31,255,128,15, + 255,0,3,248,0,19,25,75,20,0,0,255,255,224,255,255, + 224,255,255,224,255,255,224,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,19,25,75,24,2,0,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,252,7,224,127,31,192,127,255,192,63,255, + 128,31,255,0,7,252,0,20,25,75,22,1,0,248,1,240, + 248,1,240,124,3,224,124,3,224,124,3,224,60,3,192,62, + 7,192,62,7,192,30,7,128,31,15,128,31,15,128,15,15, + 0,15,15,0,15,15,0,7,158,0,7,158,0,7,158,0, + 7,254,0,3,252,0,3,252,0,3,252,0,1,248,0,1, + 248,0,1,248,0,0,240,0,29,25,100,31,1,0,248,31, + 129,248,248,31,129,248,120,31,129,240,120,31,129,240,120,31, + 129,240,124,63,195,224,124,63,195,224,124,63,195,224,60,63, + 195,224,60,57,195,192,62,121,227,192,62,121,231,192,30,121, + 231,192,30,121,231,128,30,112,231,128,30,112,231,128,15,240, + 255,0,15,240,255,0,15,240,255,0,15,224,127,0,7,224, + 126,0,7,224,126,0,7,224,126,0,3,192,60,0,3,192, + 60,0,20,25,75,22,1,0,252,3,224,126,7,224,126,7, + 192,63,15,192,31,15,128,31,159,0,15,159,0,15,190,0, + 7,254,0,7,252,0,3,252,0,3,248,0,1,248,0,3, + 248,0,3,252,0,7,252,0,7,254,0,15,191,0,31,159, + 0,31,31,128,63,15,128,62,15,192,126,7,192,252,7,224, + 252,3,240,20,25,75,22,1,0,252,3,240,252,3,224,126, + 7,224,62,7,192,63,15,192,63,15,128,31,15,128,31,159, + 0,15,159,0,15,254,0,7,254,0,7,252,0,3,252,0, + 3,248,0,3,248,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,17,25,75,20,1,0,255,255,128,255,255,128, + 255,255,128,255,255,128,0,15,128,0,31,128,0,63,0,0, + 126,0,0,124,0,0,252,0,1,248,0,3,240,0,3,240, + 0,7,224,0,15,192,0,15,128,0,31,128,0,63,0,0, + 126,0,0,126,0,0,252,0,0,255,255,128,255,255,128,255, + 255,128,255,255,128,8,31,31,11,2,250,255,255,255,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,255,255,255,9,25,50,9,0,0, + 192,0,192,0,224,0,96,0,96,0,112,0,112,0,48,0, + 56,0,56,0,24,0,28,0,28,0,12,0,12,0,14,0, + 14,0,6,0,7,0,7,0,3,0,3,128,3,128,1,128, + 1,128,8,31,31,11,0,250,255,255,255,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,255,255,255,14,14,28,19,2,9,7,128,15, + 192,15,192,15,192,31,224,31,224,60,240,60,240,56,112,120, + 120,120,120,112,60,240,60,240,60,18,2,6,18,0,250,255, + 255,192,255,255,192,5,5,5,11,2,20,224,240,112,120,56, + 15,18,36,18,1,0,15,240,63,252,127,252,124,62,248,30, + 248,30,0,254,15,254,63,254,127,30,248,30,248,30,240,62, + 248,126,255,254,255,254,127,222,63,30,16,25,50,20,2,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,243,240, + 247,252,255,252,255,254,252,62,248,31,240,31,240,15,240,15, + 240,15,240,15,240,31,240,31,248,62,255,254,255,252,247,248, + 241,240,15,18,36,18,1,0,7,224,31,248,63,252,63,252, + 124,62,120,62,240,30,240,0,240,0,240,0,240,0,240,30, + 248,30,124,62,127,252,63,248,31,248,7,224,16,25,50,20, + 1,0,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 15,207,31,239,63,255,127,255,124,63,248,31,240,15,240,15, + 240,15,240,15,240,15,240,15,248,31,124,63,127,255,63,239, + 31,239,15,143,16,18,36,18,1,0,7,224,31,248,63,252, + 127,254,124,62,248,31,240,31,255,255,255,255,255,255,240,0, + 240,0,248,30,124,62,127,252,63,252,31,240,7,192,10,25, + 50,11,0,0,7,192,15,192,31,192,31,0,30,0,30,0, + 30,0,255,192,255,192,255,192,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,16,25,50,20,1,249,15,207,31,239, + 63,255,127,255,124,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,124,63,127,255,63,255,31,239,15,207, + 0,15,248,31,248,31,126,126,127,254,63,252,15,240,15,25, + 50,20,2,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,241,224,247,248,255,252,255,252,252,62,248,30,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,4,25,25,9,2,0,240,240,240,240, + 0,0,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,6,32,32,9,0,249,60,60,60,60,0, + 0,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,252,252,248,248,15,25,50,19,2, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 62,240,124,240,248,241,240,243,224,247,192,255,128,255,192,255, + 192,255,224,255,224,249,240,241,240,240,248,240,120,240,124,240, + 62,240,62,4,25,25,9,2,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,24,18,54,30,2,0,241,224,248,247,251,254,255,255, + 254,255,255,255,252,127,31,248,62,15,240,60,15,240,60,15, + 240,60,15,240,60,15,240,60,15,240,60,15,240,60,15,240, + 60,15,240,60,15,240,60,15,240,60,15,240,60,15,15,18, + 36,20,2,0,241,240,247,252,255,252,255,254,252,62,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,17,18,54,20,1,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,16,25,50,20,2,249,241,240,247,248,255,252, + 255,254,252,62,248,31,248,31,240,15,240,15,240,15,240,15, + 248,31,248,31,252,62,255,254,255,252,247,248,241,240,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,16,25,50,20, + 1,249,7,207,31,239,63,255,127,255,124,63,248,31,240,15, + 240,15,240,15,240,15,240,15,240,15,248,31,124,63,127,255, + 63,255,63,239,15,207,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,10,18,36,13,2,0,240,192,243,192,247,192, + 255,192,255,192,252,0,248,0,248,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,18, + 36,19,1,0,7,240,31,252,63,254,124,62,120,31,120,31, + 124,0,127,192,63,248,15,254,3,255,0,63,248,15,248,15, + 124,31,127,254,63,252,15,240,9,22,44,11,1,0,60,0, + 60,0,60,0,60,0,255,128,255,128,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,63,128,63,128,31,128,15,128,15,18,36,20,2,0, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,248,62,248,126,255,254,127,254, + 127,222,31,30,17,18,54,19,0,0,248,15,128,248,15,128, + 124,31,0,124,31,0,60,30,0,60,30,0,62,62,0,30, + 60,0,30,60,0,30,60,0,15,120,0,15,120,0,15,120, + 0,7,240,0,7,240,0,7,240,0,3,224,0,3,224,0, + 25,18,72,26,0,0,248,62,15,128,248,62,15,128,120,62, + 15,0,124,62,31,0,124,127,31,0,60,127,30,0,60,127, + 30,0,60,119,30,0,60,247,158,0,30,227,188,0,30,227, + 188,0,30,227,188,0,31,227,252,0,15,193,248,0,15,193, + 248,0,15,193,248,0,7,128,240,0,7,128,240,0,16,18, + 36,19,1,0,248,31,252,63,124,62,62,124,62,120,31,248, + 15,240,7,224,3,192,7,224,15,224,15,240,31,248,62,120, + 62,124,124,62,252,63,248,31,16,25,50,19,1,249,248,31, + 248,31,248,30,120,62,124,62,124,60,60,60,62,124,62,120, + 30,120,30,120,31,240,15,240,15,240,15,224,7,224,7,224, + 7,192,7,192,7,192,15,128,63,128,63,0,63,0,60,0, + 14,18,36,17,1,0,255,252,255,252,255,252,255,252,0,248, + 1,240,3,240,7,224,15,192,31,128,31,0,62,0,124,0, + 248,0,255,252,255,252,255,252,255,252,9,32,64,13,2,249, + 15,128,31,128,63,128,62,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,124,0,120,0, + 224,0,120,0,124,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,63,128,31,128,15,128, + 3,31,31,9,3,250,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,9,32,64,13,2,249,248,0,252,0,254, + 0,62,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,31,0,15,0,3,128,15,0,31, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,254,0,252,0,248,0,14,6,12,19,2, + 5,56,0,126,12,255,156,231,252,193,248,0,112,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,9,0,1,5,24,24,11,2,250,248,248,248,248,248,0, + 0,112,112,112,112,112,112,248,248,248,248,248,248,248,248,248, + 248,248,15,24,48,18,1,253,0,32,0,32,0,96,7,240, + 31,248,63,252,127,252,124,190,248,158,249,158,241,128,241,128, + 243,0,243,0,243,30,250,30,126,62,127,252,63,248,31,240, + 15,192,12,0,8,0,8,0,17,24,72,18,0,0,3,240, + 0,31,252,0,63,254,0,63,255,0,126,31,0,124,15,128, + 124,15,128,124,7,128,124,0,0,126,0,0,62,0,0,255, + 240,0,255,240,0,31,0,0,15,0,0,15,0,0,15,0, + 0,31,0,0,30,0,0,61,227,0,127,255,128,255,255,128, + 255,255,0,96,126,0,15,15,30,18,1,4,224,14,247,222, + 255,254,127,252,60,120,120,60,112,28,112,28,112,28,120,60, + 60,120,127,252,255,254,247,222,224,14,18,24,72,18,0,0, + 248,7,192,248,7,192,124,15,128,60,15,0,30,30,0,30, + 30,0,15,60,0,15,60,0,7,248,0,7,248,0,3,240, + 0,1,224,0,63,255,0,63,255,0,1,224,0,1,224,0, + 63,255,0,63,255,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,31,31,9,3,250,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,0,0,0, + 0,224,224,224,224,224,224,224,224,224,224,224,224,16,32,64, + 18,1,249,15,240,31,248,63,248,126,124,124,60,124,60,126, + 0,127,0,63,192,31,224,63,248,127,252,113,254,240,255,240, + 63,248,31,252,15,127,15,127,159,63,254,31,248,7,252,1, + 254,0,126,0,62,120,30,120,30,124,62,63,252,63,252,31, + 248,7,224,10,4,8,11,0,21,243,192,243,192,243,192,243, + 192,26,25,100,24,0,0,0,127,128,0,3,255,224,0,7, + 128,248,0,31,0,60,0,28,0,14,0,56,0,7,0,112, + 63,3,0,112,127,131,128,224,243,193,128,225,192,225,192,193, + 192,224,192,195,128,0,192,195,128,0,192,195,128,0,192,195, + 128,0,192,193,192,224,192,225,192,225,192,224,243,195,128,96, + 127,131,128,112,63,7,0,56,0,14,0,30,0,60,0,15, + 128,248,0,7,255,224,0,1,255,128,0,9,16,32,12,1, + 9,62,0,127,0,227,128,195,128,31,128,127,128,243,128,227, + 128,227,128,255,128,123,128,0,0,0,0,255,128,255,128,255, + 128,12,13,26,18,3,2,8,16,24,48,56,112,120,240,241, + 224,225,192,225,192,241,224,249,240,120,240,56,112,24,48,8, + 16,16,10,20,19,1,4,255,255,255,255,255,255,255,255,0, + 15,0,15,0,15,0,15,0,15,0,15,9,5,10,11,1, + 7,255,128,255,128,255,128,255,128,255,128,26,25,100,24,0, + 0,0,255,128,0,3,255,224,0,7,128,248,0,30,0,60, + 0,28,0,14,0,56,255,135,0,112,255,195,0,112,225,227, + 128,224,224,225,128,224,224,225,128,192,224,225,192,192,225,193, + 192,192,255,129,192,192,255,1,192,192,227,129,192,192,227,193, + 192,224,225,193,128,224,224,227,128,112,224,243,128,112,224,119, + 0,56,0,14,0,30,0,28,0,15,128,120,0,7,255,224, + 0,1,255,128,0,10,3,6,11,0,21,255,192,255,192,255, + 192,9,10,20,13,2,14,62,0,127,0,99,0,193,128,193, + 128,193,128,193,128,99,0,127,0,62,0,16,22,44,19,1, + 0,3,192,3,192,3,192,3,192,3,192,3,192,255,255,255, + 255,255,255,255,255,3,192,3,192,3,192,3,192,3,192,3, + 192,0,0,0,0,255,255,255,255,255,255,255,255,10,15,30, + 11,0,9,63,0,127,128,243,192,225,192,225,192,1,192,3, + 192,7,128,15,0,62,0,120,0,112,0,255,192,255,192,255, + 192,10,15,30,11,0,9,30,0,127,128,243,192,225,192,225, + 192,3,192,15,128,15,128,3,192,1,192,225,192,225,192,243, + 192,127,128,62,0,6,5,5,11,4,20,60,120,112,224,224, + 15,25,50,20,2,249,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,255,254,255,222,247,158,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,17,31,93,18,0,250,15,255, + 128,31,255,128,63,140,0,127,140,0,127,140,0,255,140,0, + 255,140,0,255,140,0,255,140,0,255,140,0,127,140,0,127, + 140,0,63,140,0,63,140,0,15,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,4,5,5,9,2, + 11,96,240,240,240,96,7,8,8,11,2,249,48,48,48,124, + 30,14,252,248,6,15,15,11,2,9,28,60,252,252,28,28, + 28,28,28,28,28,28,28,28,28,10,16,32,12,1,9,63, + 0,127,128,115,128,225,192,225,192,225,192,225,192,225,192,115, + 128,127,128,63,0,0,0,0,0,255,192,255,192,255,192,12, + 12,24,18,3,3,129,0,193,128,225,192,241,224,120,240,56, + 112,56,112,120,240,241,224,225,192,193,128,129,0,26,24,96, + 28,0,0,0,0,56,0,6,0,112,0,30,0,112,0,254, + 0,224,0,254,1,192,0,14,1,192,0,14,3,128,0,14, + 3,128,0,14,7,0,0,14,7,0,0,14,14,7,0,14, + 28,15,0,14,28,31,0,14,56,31,0,0,56,55,0,0, + 112,103,0,0,112,231,0,0,224,199,0,1,193,135,0,1, + 193,255,192,3,129,255,192,3,128,7,0,7,0,7,0,7, + 0,7,0,25,24,96,28,1,0,0,0,224,0,12,1,192, + 0,28,1,192,0,252,3,128,0,252,3,128,0,28,7,0, + 0,28,14,0,0,28,14,0,0,28,28,0,0,28,28,0, + 0,28,56,126,0,28,48,255,0,28,113,231,128,28,225,195, + 128,0,225,195,128,1,192,7,128,1,192,15,0,3,128,30, + 0,7,0,60,0,7,0,120,0,14,0,240,0,14,1,255, + 128,28,1,255,128,28,1,255,128,25,24,96,27,1,0,63, + 0,28,0,127,128,56,0,243,192,56,0,225,192,112,0,225, + 192,224,0,3,192,224,0,15,129,192,0,15,129,192,0,15, + 195,128,0,1,199,0,0,225,199,14,0,225,206,30,0,243, + 206,30,0,127,156,62,0,63,28,126,0,0,56,238,0,0, + 112,206,0,0,113,142,0,0,227,142,0,0,227,255,128,1, + 195,255,128,1,192,14,0,3,128,14,0,3,128,14,0,16, + 24,48,20,1,250,3,224,3,224,3,224,3,224,0,0,0, + 0,3,192,3,192,3,192,7,192,31,128,63,128,127,0,126, + 0,252,0,248,15,248,15,248,15,252,31,126,127,127,254,63, + 254,63,252,15,240,22,31,93,23,0,0,3,192,0,1,224, + 0,0,240,0,0,120,0,0,60,0,0,0,0,0,252,0, + 0,252,0,1,254,0,1,254,0,1,254,0,3,255,0,3, + 255,0,3,255,0,7,207,128,7,207,128,7,207,128,15,135, + 128,15,135,192,15,135,192,31,3,192,31,3,224,31,255,224, + 31,255,224,63,255,240,63,255,240,62,1,240,124,0,248,124, + 0,248,252,0,252,248,0,124,22,31,93,23,0,0,0,15, + 0,0,30,0,0,60,0,0,120,0,0,240,0,0,0,0, + 0,252,0,0,252,0,1,254,0,1,254,0,1,254,0,3, + 255,0,3,255,0,3,255,0,7,207,128,7,207,128,7,207, + 128,15,135,128,15,135,192,15,135,192,31,3,192,31,3,224, + 31,255,224,31,255,224,63,255,240,63,255,240,62,1,240,124, + 0,248,124,0,248,252,0,252,248,0,124,22,31,93,23,0, + 0,0,48,0,0,120,0,0,252,0,1,206,0,3,135,0, + 0,0,0,0,252,0,0,252,0,1,254,0,1,254,0,1, + 254,0,3,255,0,3,255,0,3,255,0,7,207,128,7,207, + 128,7,207,128,15,135,128,15,135,192,15,135,192,31,3,192, + 31,3,224,31,255,224,31,255,224,63,255,240,63,255,240,62, + 1,240,124,0,248,124,0,248,252,0,252,248,0,124,22,30, + 90,23,0,0,0,241,128,1,255,128,3,255,0,3,30,0, + 0,0,0,0,252,0,0,252,0,1,254,0,1,254,0,1, + 254,0,3,255,0,3,255,0,3,255,0,7,207,128,7,207, + 128,7,207,128,15,135,128,15,135,192,15,135,192,31,3,192, + 31,3,224,31,255,224,31,255,224,63,255,240,63,255,240,62, + 1,240,124,0,248,124,0,248,252,0,252,248,0,124,22,31, + 93,23,0,0,3,207,0,3,207,0,3,207,0,3,207,0, + 0,0,0,0,0,0,0,252,0,0,252,0,1,254,0,1, + 254,0,1,254,0,3,255,0,3,255,0,3,255,0,7,207, + 128,7,207,128,7,207,128,15,135,128,15,135,192,15,135,192, + 31,3,192,31,3,224,31,255,224,31,255,224,63,255,240,63, + 255,240,62,1,240,124,0,248,124,0,248,252,0,252,248,0, + 124,22,31,93,23,0,0,0,120,0,0,204,0,0,132,0, + 0,132,0,0,204,0,0,120,0,0,0,0,0,252,0,1, + 254,0,1,254,0,1,254,0,3,255,0,3,255,0,3,255, + 0,7,207,128,7,207,128,7,207,128,15,135,128,15,135,192, + 15,135,192,31,3,192,31,3,224,31,255,224,31,255,224,63, + 255,240,63,255,240,62,1,240,124,0,248,124,0,248,252,0, + 252,248,0,124,31,25,100,32,0,0,0,255,255,252,0,255, + 255,252,0,255,255,252,1,255,255,252,1,243,192,0,1,227, + 192,0,3,227,192,0,3,227,192,0,3,195,192,0,7,195, + 192,0,7,195,192,0,7,195,255,248,15,131,255,248,15,131, + 255,248,15,131,255,248,31,3,192,0,31,255,192,0,31,255, + 192,0,63,255,192,0,63,255,192,0,62,3,192,0,124,3, + 255,254,124,3,255,254,248,3,255,254,248,3,255,254,21,32, + 96,23,1,249,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,240,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,252,0,0, + 96,0,0,96,0,0,248,0,0,28,0,0,28,0,1,248, + 0,1,240,0,18,31,93,22,2,0,30,0,0,15,0,0, + 7,128,0,3,192,0,1,224,0,0,0,0,255,255,128,255, + 255,128,255,255,128,255,255,128,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,0,255,255,0, + 255,255,0,255,255,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,18,31,93,22,2,0,0,120,0, + 0,240,0,1,224,0,3,192,0,7,128,0,0,0,0,255, + 255,128,255,255,128,255,255,128,255,255,128,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,255,255,0, + 255,255,0,255,255,0,255,255,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 192,255,255,192,255,255,192,255,255,192,18,31,93,22,2,0, + 0,192,0,1,224,0,3,240,0,7,56,0,14,28,0,0, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 255,255,0,255,255,0,255,255,0,255,255,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,192,255,255,192,255,255,192,255,255,192,18,31,93, + 22,2,0,30,60,0,30,60,0,30,60,0,30,60,0,0, + 0,0,0,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,255,255,0,255,255,0,255,255,0,255,255,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,192,255,255,192,255,255,192,255,255,192, + 8,31,31,9,0,0,240,120,60,30,15,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,62,62,8,31,31,9,2,0,15,30,60,120,240, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,10,31,62,9,0,0, + 12,0,30,0,63,0,115,128,225,192,0,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,10,31, + 62,9,0,0,243,192,243,192,243,192,243,192,0,0,0,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,23,25,75,23,255,0,31,255,128,31,255,224,31,255, + 240,31,255,248,31,7,248,31,0,252,31,0,252,31,0,124, + 31,0,126,31,0,62,31,0,62,255,240,62,255,240,62,255, + 240,62,31,0,62,31,0,62,31,0,124,31,0,124,31,0, + 124,31,0,248,31,3,248,31,255,240,31,255,240,31,255,192, + 31,255,128,19,30,90,24,2,0,3,198,0,7,254,0,15, + 252,0,12,120,0,0,0,0,248,3,224,252,3,224,252,3, + 224,254,3,224,254,3,224,255,3,224,255,3,224,255,131,224, + 255,195,224,251,195,224,251,227,224,249,227,224,249,243,224,248, + 243,224,248,251,224,248,123,224,248,63,224,248,63,224,248,31, + 224,248,31,224,248,15,224,248,15,224,248,7,224,248,7,224, + 248,3,224,23,31,93,25,1,0,1,224,0,0,240,0,0, + 120,0,0,60,0,0,30,0,0,0,0,1,255,0,7,255, + 192,15,255,224,31,255,240,63,199,248,63,1,248,126,0,252, + 124,0,124,124,0,124,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,126,0,252,63,1,248,63,199,248,31,255,240,15,255,224, + 7,255,192,1,255,0,23,31,93,25,1,0,0,7,128,0, + 15,0,0,30,0,0,60,0,0,120,0,0,0,0,1,255, + 0,7,255,192,15,255,224,31,255,240,63,199,248,63,1,248, + 126,0,252,124,0,124,124,0,124,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,124,0, + 124,124,0,124,126,0,252,63,1,248,63,199,248,31,255,240, + 15,255,224,7,255,192,1,255,0,23,31,93,25,1,0,0, + 24,0,0,60,0,0,126,0,0,231,0,1,195,128,0,0, + 0,1,255,0,7,255,192,15,255,224,31,255,240,63,199,248, + 63,1,248,126,0,252,124,0,124,124,0,124,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,124,0,124,124,0,124,126,0,252,63,1,248,63,199,248, + 31,255,240,15,255,224,7,255,192,1,255,0,23,30,90,25, + 1,0,0,120,192,0,255,192,1,255,128,1,143,0,0,0, + 0,1,255,0,7,255,192,15,255,224,31,255,240,63,199,248, + 63,1,248,126,0,252,124,0,124,124,0,124,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,124,0,124,124,0,124,126,0,252,63,1,248,63,199,248, + 31,255,240,15,255,224,7,255,192,1,255,0,23,31,93,25, + 1,0,1,231,128,1,231,128,1,231,128,1,231,128,0,0, + 0,0,0,0,1,255,0,7,255,192,15,255,224,31,255,240, + 63,199,248,63,1,248,126,0,252,124,0,124,124,0,124,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,124,0,124,124,0,124,126,0,252,63,1,248, + 63,199,248,31,255,240,15,255,224,7,255,192,1,255,0,15, + 16,32,19,2,0,32,8,112,28,248,62,252,126,126,252,63, + 248,31,240,15,224,15,224,31,240,63,248,126,252,252,126,248, + 62,112,28,32,8,24,25,75,25,1,0,1,255,7,7,255, + 206,15,255,252,31,255,248,63,199,248,63,0,248,126,1,252, + 124,3,252,124,7,188,248,7,62,248,14,62,248,28,62,248, + 56,62,248,112,62,248,224,62,248,224,62,125,192,124,127,128, + 124,127,0,252,63,1,248,63,199,248,63,255,240,63,255,224, + 119,255,192,225,255,0,19,31,93,24,2,0,7,128,0,3, + 192,0,1,224,0,0,240,0,0,120,0,0,0,0,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,252,7,224,127,31,192,127,255,192, + 63,255,128,31,255,0,7,252,0,19,31,93,24,2,0,0, + 30,0,0,60,0,0,120,0,0,240,0,1,224,0,0,0, + 0,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,252,7,224,127,31,192, + 127,255,192,63,255,128,31,255,0,7,252,0,19,31,93,24, + 2,0,0,96,0,0,240,0,1,248,0,3,156,0,7,14, + 0,0,0,0,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,252,7,224, + 127,31,192,127,255,192,63,255,128,31,255,0,7,252,0,19, + 31,93,24,2,0,15,30,0,15,30,0,15,30,0,15,30, + 0,0,0,0,0,0,0,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 252,7,224,127,31,192,127,255,192,63,255,128,31,255,0,7, + 252,0,20,31,93,22,1,0,0,30,0,0,60,0,0,120, + 0,0,240,0,1,224,0,0,0,0,252,3,240,252,3,240, + 126,7,224,62,7,192,63,15,192,63,15,128,31,15,128,31, + 159,0,15,159,0,15,254,0,7,254,0,7,252,0,3,252, + 0,3,248,0,3,248,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,18,25,75,22,2,0,248,0,0,248,0, + 0,248,0,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,254, + 0,255,252,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,20,2,0,15,192,0,63, + 240,0,127,252,0,255,252,0,248,126,0,248,62,0,240,62, + 0,240,62,0,240,124,0,240,252,0,241,248,0,241,252,0, + 241,254,0,240,127,0,240,31,0,240,31,128,240,15,128,240, + 15,128,240,15,128,240,31,128,240,63,0,241,255,0,241,254, + 0,241,252,0,241,240,0,15,25,50,18,1,0,15,0,7, + 128,3,128,1,192,0,224,0,0,0,0,15,240,63,252,127, + 252,124,62,248,30,248,30,1,254,15,254,63,254,127,30,248, + 30,240,30,240,62,248,126,255,254,255,254,127,222,63,30,15, + 25,50,18,1,0,0,120,0,240,0,224,1,192,3,128,0, + 0,0,0,15,240,63,252,127,252,124,62,248,30,248,30,1, + 254,15,254,63,254,127,30,248,30,240,30,240,62,248,126,255, + 254,255,254,127,222,63,30,15,25,50,18,1,0,1,128,3, + 192,7,224,14,112,28,56,0,0,0,0,15,240,63,252,127, + 252,124,62,248,30,248,30,1,254,15,254,63,254,127,30,248, + 30,240,30,240,62,248,126,255,254,255,254,127,222,63,30,15, + 24,48,18,1,0,7,140,15,252,31,248,24,240,0,0,0, + 0,15,240,63,252,127,252,124,62,248,30,248,30,1,254,15, + 254,63,254,127,30,248,30,240,30,240,62,248,126,255,254,255, + 254,127,222,63,30,15,24,48,18,1,0,30,120,30,120,30, + 120,30,120,0,0,0,0,15,240,63,252,127,252,124,62,248, + 30,248,30,1,254,15,254,63,254,127,30,248,30,240,30,240, + 62,248,126,255,254,255,254,127,222,63,30,15,25,50,18,1, + 0,3,192,6,96,4,32,4,32,6,96,3,192,0,0,15, + 240,63,252,127,252,124,62,248,30,248,30,1,254,15,254,63, + 254,127,30,248,30,248,30,240,62,248,126,255,254,255,254,127, + 222,63,30,26,19,76,29,1,0,7,224,248,0,31,251,254, + 0,63,255,255,0,63,255,255,0,124,63,15,128,120,30,7, + 128,120,30,7,192,0,62,7,192,7,255,255,192,63,255,255, + 192,127,255,255,192,124,30,0,0,248,30,0,0,248,30,7, + 192,252,63,15,192,255,255,255,128,127,247,255,0,63,227,254, + 0,15,129,248,0,15,25,50,18,1,249,7,224,31,248,63, + 252,63,252,124,62,120,30,248,30,240,0,240,0,240,0,240, + 0,248,30,248,30,124,62,127,252,63,248,31,248,7,224,3, + 0,3,0,7,192,0,224,0,224,15,192,15,128,16,25,50, + 18,1,0,15,0,7,128,3,128,1,192,0,224,0,0,0, + 0,7,224,31,248,63,252,127,254,124,62,248,30,240,31,255, + 255,255,255,255,255,240,0,240,0,248,30,124,62,127,254,63, + 252,31,240,7,192,16,25,50,18,1,0,0,120,0,240,0, + 224,1,192,3,128,0,0,0,0,7,224,31,248,63,252,127, + 254,124,62,248,30,240,31,255,255,255,255,255,255,240,0,240, + 0,248,30,124,62,127,254,63,252,31,240,7,192,16,25,50, + 18,1,0,1,128,3,192,7,224,14,112,28,56,0,0,0, + 0,7,224,31,248,63,252,127,254,124,62,248,30,240,31,255, + 255,255,255,255,255,240,0,240,0,248,30,124,62,127,254,63, + 252,31,240,7,192,16,24,48,18,1,0,30,120,30,120,30, + 120,30,120,0,0,0,0,7,224,31,248,63,252,127,254,124, + 62,248,30,240,31,255,255,255,255,255,255,240,0,240,0,248, + 30,124,62,127,254,63,252,31,240,7,192,7,25,25,9,1, + 0,240,120,56,28,14,0,0,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,6,25,25,9,2,0, + 60,56,112,112,224,0,0,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,10,25,50,9,255,0,12, + 0,30,0,63,0,115,128,225,192,0,0,0,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,10,24,48,9,255,0,243,192,243,192,243,192,243,192,0, + 0,0,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,17,26,78,20,1,0,48,0,0, + 120,32,0,124,240,0,63,224,0,31,192,0,63,224,0,115, + 240,0,33,248,0,7,252,0,31,254,0,63,254,0,127,255, + 0,124,31,0,248,15,128,248,15,128,240,7,128,240,7,128, + 240,7,128,248,15,128,248,15,128,252,31,128,126,63,0,127, + 255,0,63,254,0,31,252,0,7,240,0,15,24,48,20,2, + 0,15,24,31,248,63,240,49,224,0,0,0,0,243,240,247, + 248,255,252,255,254,252,62,248,62,240,30,240,30,240,30,240, + 30,240,30,240,30,240,30,240,30,240,30,240,30,240,30,240, + 30,17,25,75,20,1,0,7,128,0,3,192,0,1,192,0, + 1,224,0,0,240,0,0,0,0,0,0,0,7,240,0,31, + 252,0,63,254,0,127,255,0,124,31,0,248,15,128,248,15, + 128,240,7,128,240,7,128,240,7,128,240,7,128,248,15,128, + 248,15,128,124,31,0,127,255,0,63,254,0,31,252,0,7, + 240,0,17,25,75,20,1,0,0,120,0,0,240,0,0,224, + 0,1,192,0,3,192,0,0,0,0,0,0,0,7,240,0, + 31,252,0,63,254,0,127,255,0,124,31,0,248,15,128,248, + 15,128,240,7,128,240,7,128,240,7,128,240,7,128,248,15, + 128,248,15,128,124,31,0,127,255,0,63,254,0,31,252,0, + 7,240,0,17,25,75,20,1,0,0,192,0,1,224,0,3, + 240,0,7,56,0,14,28,0,0,0,0,0,0,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,17,24,72,20,1,0,7,140,0,15,252,0, + 31,248,0,24,240,0,0,0,0,0,0,0,7,240,0,31, + 252,0,63,254,0,127,255,0,124,31,0,248,15,128,248,15, + 128,240,7,128,240,7,128,240,7,128,240,7,128,248,15,128, + 248,15,128,124,31,0,127,255,0,63,254,0,31,252,0,7, + 240,0,17,24,72,20,1,0,30,60,0,30,60,0,30,60, + 0,30,60,0,0,0,0,0,0,0,7,240,0,31,252,0, + 63,254,0,127,255,0,124,31,0,248,15,128,248,15,128,240, + 7,128,240,7,128,240,7,128,240,7,128,248,15,128,248,15, + 128,124,31,0,127,255,0,63,254,0,31,252,0,7,240,0, + 16,16,32,19,1,0,3,192,3,192,3,192,3,192,0,0, + 0,0,255,255,255,255,255,255,255,255,0,0,0,0,3,192, + 3,192,3,192,3,192,21,18,54,20,255,0,1,252,56,7, + 255,112,15,255,224,31,255,192,31,143,192,62,7,224,62,15, + 224,60,29,224,60,57,224,60,113,224,62,227,224,63,131,224, + 63,7,224,31,143,192,31,255,192,63,255,128,119,255,0,225, + 252,0,15,25,50,20,2,0,30,0,15,0,7,0,3,128, + 1,192,0,0,0,0,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,127,254,127,222,31,30,15,25,50,20,2,0, + 0,240,1,224,1,192,3,128,7,0,0,0,0,0,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,248,62,248,126,255,254,127,254,127,222, + 31,30,15,25,50,20,2,0,3,0,7,128,15,192,28,224, + 56,112,0,0,0,0,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,127,254,127,222,31,30,15,25,50,20,2,0, + 60,120,60,120,60,120,60,120,0,0,0,0,0,0,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,248,62,248,126,255,254,127,254,127,222, + 31,30,16,32,64,19,1,249,0,120,0,240,1,224,1,192, + 3,128,0,0,0,0,248,31,248,31,248,31,120,30,124,62, + 124,60,60,60,60,60,62,120,62,120,30,120,31,240,31,240, + 15,240,15,224,7,224,7,224,7,192,7,192,7,192,15,128, + 63,128,63,0,63,0,60,0,16,32,64,20,2,249,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,243,240,247,252, + 255,254,255,254,252,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,252,62,255,254,255,252,247,248,241,240, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,31, + 62,19,1,249,30,120,30,120,30,120,30,120,0,0,0,0, + 248,31,248,31,248,31,120,62,124,62,124,60,124,60,62,124, + 62,120,62,120,30,120,31,240,31,240,15,240,15,224,7,224, + 7,224,7,192,7,192,7,192,15,128,63,128,63,0,63,0, + 60,0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=17 h=25 x= 2 y=13 dx=19 dy= 0 ascent=25 len=72 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24n[720] U8G_SECTION(".progmem.u8g_font_helvB24n") = { + 0,40,49,250,244,23,0,0,0,0,42,57,0,25,250,23, + 0,10,11,22,13,1,13,12,0,12,0,76,128,237,192,255, + 192,127,128,30,0,63,0,127,128,115,128,33,0,16,16,32, + 19,1,0,3,192,3,192,3,192,3,192,3,192,3,192,255, + 255,255,255,255,255,255,255,3,192,3,192,3,192,3,192,3, + 192,3,192,5,11,11,9,2,250,248,248,248,248,248,24,24, + 56,112,224,128,9,5,10,11,1,7,255,128,255,128,255,128, + 255,128,255,128,5,5,5,9,2,0,248,248,248,248,248,8, + 25,25,9,0,0,3,3,3,3,6,6,6,14,12,12,12, + 28,24,24,24,48,48,48,112,96,96,96,192,192,192,15,24, + 48,18,1,0,15,224,31,240,63,248,127,252,124,124,248,62, + 248,62,248,62,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,248,62,248,62,248,62,124,124,127,252,63,248, + 31,240,15,224,10,23,46,18,2,0,1,192,3,192,7,192, + 31,192,255,192,255,192,255,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,16,24,48,18,1,0,15,224, + 63,248,127,252,127,254,252,126,248,63,248,31,240,31,240,31, + 0,63,0,62,0,126,0,252,1,248,7,240,15,224,31,128, + 63,0,126,0,252,0,255,255,255,255,255,255,255,255,16,24, + 48,18,1,0,15,224,63,248,127,252,127,252,248,62,240,62, + 240,30,240,30,0,62,0,124,3,248,3,240,3,252,0,126, + 0,63,0,31,240,31,240,31,240,63,248,62,127,254,127,252, + 63,248,15,224,16,24,48,18,1,0,0,248,0,248,1,248, + 3,248,3,248,7,248,15,120,14,120,30,120,28,120,60,120, + 120,120,112,120,240,120,224,120,255,255,255,255,255,255,255,255, + 0,120,0,120,0,120,0,120,0,120,15,24,48,18,1,0, + 63,252,63,252,63,252,63,252,56,0,120,0,120,0,120,0, + 123,224,127,248,127,252,127,252,120,126,0,62,0,62,0,30, + 0,30,240,62,240,62,248,124,127,252,127,248,63,240,15,192, + 15,24,48,18,1,0,7,224,31,248,63,252,63,254,124,62, + 120,30,240,0,240,0,243,224,247,248,255,252,255,252,252,126, + 248,62,240,30,240,30,240,30,240,30,248,62,124,124,127,252, + 63,248,31,240,7,192,16,24,48,18,1,0,255,255,255,255, + 255,255,255,255,0,30,0,62,0,60,0,120,0,248,0,240, + 1,240,1,224,3,224,3,192,7,192,7,192,7,128,15,128, + 15,128,15,128,31,0,31,0,31,0,31,0,17,24,72,18, + 0,0,7,240,0,31,252,0,63,254,0,62,62,0,124,31, + 0,120,15,0,120,15,0,120,15,0,124,31,0,62,62,0, + 31,252,0,31,252,0,63,254,0,124,31,0,248,15,128,240, + 7,128,240,7,128,240,7,128,248,15,128,126,63,0,127,254, + 0,63,254,0,31,252,0,7,240,0,15,24,48,18,1,0, + 7,192,31,240,63,248,127,252,124,124,248,62,240,30,240,30, + 240,30,240,30,248,62,252,126,127,254,127,254,63,222,7,158, + 0,30,0,30,240,60,248,124,127,248,127,248,31,240,7,192 + }; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 23 + Calculated Max Values w=29 h=32 x= 3 y=20 dx=33 dy= 0 ascent=25 len=120 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24r[5214] U8G_SECTION(".progmem.u8g_font_helvB24r") = { + 0,40,49,250,244,25,5,252,14,144,32,127,249,25,249,25, + 249,0,0,0,9,0,1,5,25,25,11,3,0,248,248,248, + 248,248,248,248,248,248,248,248,112,112,112,112,112,112,112,0, + 0,248,248,248,248,248,11,9,18,16,2,16,241,224,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,18,25, + 75,19,0,255,3,199,0,3,199,0,3,143,0,3,143,0, + 7,143,0,7,142,0,7,142,0,127,255,192,127,255,192,127, + 255,192,127,255,192,15,28,0,14,28,0,14,28,0,14,60, + 0,255,255,128,255,255,128,255,255,128,255,255,128,28,120,0, + 60,120,0,60,112,0,60,112,0,56,240,0,56,240,0,16, + 28,56,18,1,253,1,128,1,128,15,240,63,252,127,254,253, + 190,249,159,241,159,241,143,249,128,255,128,127,192,63,240,15, + 252,1,254,1,255,1,159,1,143,241,143,241,159,249,159,127, + 254,127,254,63,248,7,224,1,128,1,128,1,128,26,23,92, + 29,1,0,14,0,48,0,63,128,112,0,127,192,96,0,113, + 192,224,0,224,224,192,0,224,225,192,0,224,227,128,0,224, + 227,128,0,113,199,0,0,127,198,0,0,63,142,0,0,14, + 12,28,0,0,28,127,0,0,24,255,128,0,56,227,128,0, + 49,193,192,0,113,193,192,0,97,193,192,0,225,193,192,1, + 192,227,128,1,192,255,128,3,128,127,0,3,0,28,0,20, + 25,75,24,2,0,3,224,0,15,248,0,31,252,0,31,252, + 0,30,60,0,62,60,0,62,60,0,31,60,0,31,248,0, + 15,248,0,15,240,0,15,224,0,63,241,224,127,241,224,124, + 249,192,248,255,192,240,127,192,240,63,128,240,31,0,248,15, + 128,252,63,192,127,255,224,127,251,224,31,241,240,7,192,0, + 4,9,9,8,2,16,240,240,240,240,240,240,240,96,96,8, + 31,31,11,1,250,7,15,30,30,60,60,56,120,120,120,240, + 240,240,240,240,240,240,240,240,248,120,120,120,120,60,60,28, + 30,14,15,7,8,31,31,11,1,250,224,240,120,120,60,60, + 28,30,30,30,15,15,15,15,15,15,15,15,15,31,30,30, + 30,28,60,60,56,120,112,240,224,10,11,22,13,1,13,12, + 0,12,0,76,128,237,192,255,192,127,128,30,0,63,0,127, + 128,115,128,33,0,16,16,32,19,1,0,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,5,11,11,9,2, + 250,248,248,248,248,248,24,24,56,112,224,128,9,5,10,11, + 1,7,255,128,255,128,255,128,255,128,255,128,5,5,5,9, + 2,0,248,248,248,248,248,8,25,25,9,0,0,3,3,3, + 3,6,6,6,14,12,12,12,28,24,24,24,48,48,48,112, + 96,96,96,192,192,192,15,24,48,18,1,0,15,224,31,240, + 63,248,127,252,124,124,248,62,248,62,248,62,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,248,62,248,62, + 248,62,124,124,127,252,63,248,31,240,15,224,10,23,46,18, + 2,0,1,192,3,192,7,192,31,192,255,192,255,192,255,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 16,24,48,18,1,0,15,224,63,248,127,252,127,254,252,126, + 248,63,248,31,240,31,240,31,0,63,0,62,0,126,0,252, + 1,248,7,240,15,224,31,128,63,0,126,0,252,0,255,255, + 255,255,255,255,255,255,16,24,48,18,1,0,15,224,63,248, + 127,252,127,252,248,62,240,62,240,30,240,30,0,62,0,124, + 3,248,3,240,3,252,0,126,0,63,0,31,240,31,240,31, + 240,63,248,62,127,254,127,252,63,248,15,224,16,24,48,18, + 1,0,0,248,0,248,1,248,3,248,3,248,7,248,15,120, + 14,120,30,120,28,120,60,120,120,120,112,120,240,120,224,120, + 255,255,255,255,255,255,255,255,0,120,0,120,0,120,0,120, + 0,120,15,24,48,18,1,0,63,252,63,252,63,252,63,252, + 56,0,120,0,120,0,120,0,123,224,127,248,127,252,127,252, + 120,126,0,62,0,62,0,30,0,30,240,62,240,62,248,124, + 127,252,127,248,63,240,15,192,15,24,48,18,1,0,7,224, + 31,248,63,252,63,254,124,62,120,30,240,0,240,0,243,224, + 247,248,255,252,255,252,252,126,248,62,240,30,240,30,240,30, + 240,30,248,62,124,124,127,252,63,248,31,240,7,192,16,24, + 48,18,1,0,255,255,255,255,255,255,255,255,0,30,0,62, + 0,60,0,120,0,248,0,240,1,240,1,224,3,224,3,192, + 7,192,7,192,7,128,15,128,15,128,15,128,31,0,31,0, + 31,0,31,0,17,24,72,18,0,0,7,240,0,31,252,0, + 63,254,0,62,62,0,124,31,0,120,15,0,120,15,0,120, + 15,0,124,31,0,62,62,0,31,252,0,31,252,0,63,254, + 0,124,31,0,248,15,128,240,7,128,240,7,128,240,7,128, + 248,15,128,126,63,0,127,254,0,63,254,0,31,252,0,7, + 240,0,15,24,48,18,1,0,7,192,31,240,63,248,127,252, + 124,124,248,62,240,30,240,30,240,30,240,30,248,62,252,126, + 127,254,127,254,63,222,7,158,0,30,0,30,240,60,248,124, + 127,248,127,248,31,240,7,192,5,17,17,11,3,0,248,248, + 248,248,248,0,0,0,0,0,0,0,248,248,248,248,248,5, + 23,23,11,3,250,248,248,248,248,248,0,0,0,0,0,0, + 0,248,248,248,248,248,24,24,56,112,224,128,16,16,32,19, + 1,0,0,3,0,31,0,127,3,255,15,254,127,248,255,192, + 254,0,254,0,255,192,127,240,15,254,3,255,0,127,0,31, + 0,3,15,12,24,19,2,2,255,254,255,254,255,254,255,254, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,255,254, + 16,16,32,19,1,0,192,0,240,0,254,0,255,192,127,240, + 31,254,3,255,0,127,0,127,3,255,31,254,127,240,255,192, + 254,0,240,0,192,0,16,25,50,20,2,0,15,224,63,248, + 127,252,127,254,252,126,248,63,248,31,240,31,240,31,0,63, + 0,126,0,254,1,252,1,248,3,224,3,192,7,192,7,192, + 0,0,0,0,7,192,7,192,7,192,7,192,7,192,29,30, + 120,33,1,251,0,15,224,0,0,127,252,0,1,255,254,0, + 3,240,63,128,7,192,7,192,15,0,3,192,30,0,1,224, + 28,0,0,240,60,7,220,112,56,31,252,112,112,60,252,56, + 112,120,120,56,240,240,56,56,224,224,56,56,225,224,56,56, + 225,192,112,120,225,192,112,112,225,192,112,112,225,224,240,224, + 241,225,241,224,112,255,255,192,120,127,63,128,56,62,30,0, + 60,0,0,0,30,0,0,0,15,128,0,0,15,240,60,0, + 3,255,252,0,1,255,252,0,0,127,224,0,22,25,75,23, + 0,0,0,252,0,0,252,0,1,254,0,1,254,0,1,254, + 0,3,255,0,3,255,0,3,255,0,7,207,128,7,207,128, + 7,207,128,15,135,128,15,135,192,15,135,192,31,3,192,31, + 3,224,31,255,224,31,255,224,63,255,240,63,255,240,62,1, + 240,124,0,248,124,0,248,252,0,252,248,0,124,19,25,75, + 24,3,0,255,252,0,255,255,0,255,255,128,255,255,128,248, + 15,192,248,7,192,248,7,192,248,7,192,248,7,192,248,15, + 128,255,255,0,255,255,0,255,255,128,255,255,192,248,7,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 7,224,255,255,192,255,255,192,255,255,128,255,254,0,21,25, + 75,24,1,0,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,248,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,254,0,21, + 25,75,24,2,0,255,248,0,255,255,0,255,255,128,255,255, + 192,248,15,224,248,3,224,248,3,240,248,1,240,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,1,248,248,1,240,248,3,240,248,3, + 224,248,15,224,255,255,192,255,255,128,255,255,0,255,248,0, + 18,25,75,22,2,0,255,255,128,255,255,128,255,255,128,255, + 255,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,255,192,255,255,192,255,255,192,255,255, + 192,16,25,50,20,2,0,255,255,255,255,255,255,255,255,248, + 0,248,0,248,0,248,0,248,0,248,0,255,254,255,254,255, + 254,255,254,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,22,25,75,25,1,0,0, + 255,0,3,255,192,15,255,224,31,255,240,31,195,248,63,0, + 248,126,0,124,124,0,124,252,0,0,248,0,0,248,0,0, + 248,0,0,248,15,252,248,15,252,248,15,252,248,15,252,252, + 0,124,124,0,124,126,0,124,126,0,252,63,131,252,63,255, + 252,31,255,220,7,255,156,3,254,28,19,25,75,23,2,0, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,255,255, + 224,255,255,224,255,255,224,255,255,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,5,25,25,9,2, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,15,25,50,18,1,0, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,248,62, + 248,62,248,62,248,62,248,62,252,126,255,252,127,252,63,248, + 15,224,20,25,75,24,2,0,248,7,224,248,7,224,248,15, + 192,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 249,248,0,251,240,0,255,224,0,255,224,0,255,240,0,255, + 240,0,255,248,0,252,252,0,248,126,0,248,126,0,248,63, + 0,248,31,128,248,15,128,248,15,192,248,7,224,248,3,240, + 248,3,240,16,25,50,20,2,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,255,255,255,255,255,255,255,255,23,25,75,27,2, + 0,254,0,254,254,0,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,131,254,255,131,254,251,131,190,251,131,190,251, + 199,190,251,199,190,251,199,190,249,199,62,249,239,62,249,239, + 62,249,239,62,249,239,62,248,238,62,248,254,62,248,254,62, + 248,254,62,248,124,62,248,124,62,248,124,62,19,25,75,24, + 2,0,248,3,224,252,3,224,252,3,224,254,3,224,254,3, + 224,255,3,224,255,3,224,255,131,224,255,195,224,251,195,224, + 251,227,224,249,227,224,249,243,224,248,243,224,248,251,224,248, + 123,224,248,63,224,248,63,224,248,31,224,248,31,224,248,15, + 224,248,15,224,248,7,224,248,7,224,248,3,224,23,25,75, + 25,1,0,1,255,0,7,255,192,15,255,224,31,255,240,63, + 199,248,63,1,248,126,0,252,124,0,124,124,0,124,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,124,0,124,124,0,124,126,0,252,63,1,248,63, + 199,248,31,255,240,15,255,224,7,255,192,1,255,0,18,25, + 75,22,2,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,252, + 0,255,240,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,23, + 26,78,26,1,255,1,255,0,7,255,192,15,255,224,31,255, + 240,63,199,248,63,1,248,126,0,252,124,0,124,252,0,126, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,2,62,252,7,62,124,15,188,126,15,252,63,7, + 248,63,195,240,31,255,248,15,255,252,7,255,254,1,255,60, + 0,0,24,19,25,75,24,2,0,255,254,0,255,255,128,255, + 255,192,255,255,192,248,7,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,7,192,248,15,192,255,255,128,255,255,0, + 255,255,0,255,255,128,248,15,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 224,248,3,224,19,25,75,22,1,0,3,248,0,15,254,0, + 31,255,0,63,255,128,62,31,128,124,7,192,120,7,192,120, + 3,192,124,0,0,127,0,0,63,240,0,63,254,0,31,255, + 128,3,255,192,0,63,192,0,7,224,0,3,224,248,3,224, + 248,3,224,124,3,224,126,15,192,63,255,192,31,255,128,15, + 255,0,3,248,0,19,25,75,20,0,0,255,255,224,255,255, + 224,255,255,224,255,255,224,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,19,25,75,24,2,0,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,252,7,224,127,31,192,127,255,192,63,255, + 128,31,255,0,7,252,0,20,25,75,22,1,0,248,1,240, + 248,1,240,124,3,224,124,3,224,124,3,224,60,3,192,62, + 7,192,62,7,192,30,7,128,31,15,128,31,15,128,15,15, + 0,15,15,0,15,15,0,7,158,0,7,158,0,7,158,0, + 7,254,0,3,252,0,3,252,0,3,252,0,1,248,0,1, + 248,0,1,248,0,0,240,0,29,25,100,31,1,0,248,31, + 129,248,248,31,129,248,120,31,129,240,120,31,129,240,120,31, + 129,240,124,63,195,224,124,63,195,224,124,63,195,224,60,63, + 195,224,60,57,195,192,62,121,227,192,62,121,231,192,30,121, + 231,192,30,121,231,128,30,112,231,128,30,112,231,128,15,240, + 255,0,15,240,255,0,15,240,255,0,15,224,127,0,7,224, + 126,0,7,224,126,0,7,224,126,0,3,192,60,0,3,192, + 60,0,20,25,75,22,1,0,252,3,224,126,7,224,126,7, + 192,63,15,192,31,15,128,31,159,0,15,159,0,15,190,0, + 7,254,0,7,252,0,3,252,0,3,248,0,1,248,0,3, + 248,0,3,252,0,7,252,0,7,254,0,15,191,0,31,159, + 0,31,31,128,63,15,128,62,15,192,126,7,192,252,7,224, + 252,3,240,20,25,75,22,1,0,252,3,240,252,3,224,126, + 7,224,62,7,192,63,15,192,63,15,128,31,15,128,31,159, + 0,15,159,0,15,254,0,7,254,0,7,252,0,3,252,0, + 3,248,0,3,248,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,17,25,75,20,1,0,255,255,128,255,255,128, + 255,255,128,255,255,128,0,15,128,0,31,128,0,63,0,0, + 126,0,0,124,0,0,252,0,1,248,0,3,240,0,3,240, + 0,7,224,0,15,192,0,15,128,0,31,128,0,63,0,0, + 126,0,0,126,0,0,252,0,0,255,255,128,255,255,128,255, + 255,128,255,255,128,8,31,31,11,2,250,255,255,255,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,255,255,255,9,25,50,9,0,0, + 192,0,192,0,224,0,96,0,96,0,112,0,112,0,48,0, + 56,0,56,0,24,0,28,0,28,0,12,0,12,0,14,0, + 14,0,6,0,7,0,7,0,3,0,3,128,3,128,1,128, + 1,128,8,31,31,11,0,250,255,255,255,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,255,255,255,14,14,28,19,2,9,7,128,15, + 192,15,192,15,192,31,224,31,224,60,240,60,240,56,112,120, + 120,120,120,112,60,240,60,240,60,18,2,6,18,0,250,255, + 255,192,255,255,192,5,5,5,11,2,20,224,240,112,120,56, + 15,18,36,18,1,0,15,240,63,252,127,252,124,62,248,30, + 248,30,0,254,15,254,63,254,127,30,248,30,248,30,240,62, + 248,126,255,254,255,254,127,222,63,30,16,25,50,20,2,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,243,240, + 247,252,255,252,255,254,252,62,248,31,240,31,240,15,240,15, + 240,15,240,15,240,31,240,31,248,62,255,254,255,252,247,248, + 241,240,15,18,36,18,1,0,7,224,31,248,63,252,63,252, + 124,62,120,62,240,30,240,0,240,0,240,0,240,0,240,30, + 248,30,124,62,127,252,63,248,31,248,7,224,16,25,50,20, + 1,0,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 15,207,31,239,63,255,127,255,124,63,248,31,240,15,240,15, + 240,15,240,15,240,15,240,15,248,31,124,63,127,255,63,239, + 31,239,15,143,16,18,36,18,1,0,7,224,31,248,63,252, + 127,254,124,62,248,31,240,31,255,255,255,255,255,255,240,0, + 240,0,248,30,124,62,127,252,63,252,31,240,7,192,10,25, + 50,11,0,0,7,192,15,192,31,192,31,0,30,0,30,0, + 30,0,255,192,255,192,255,192,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,16,25,50,20,1,249,15,207,31,239, + 63,255,127,255,124,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,124,63,127,255,63,255,31,239,15,207, + 0,15,248,31,248,31,126,126,127,254,63,252,15,240,15,25, + 50,20,2,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,241,224,247,248,255,252,255,252,252,62,248,30,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,4,25,25,9,2,0,240,240,240,240, + 0,0,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,6,32,32,9,0,249,60,60,60,60,0, + 0,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,252,252,248,248,15,25,50,19,2, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 62,240,124,240,248,241,240,243,224,247,192,255,128,255,192,255, + 192,255,224,255,224,249,240,241,240,240,248,240,120,240,124,240, + 62,240,62,4,25,25,9,2,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,24,18,54,30,2,0,241,224,248,247,251,254,255,255, + 254,255,255,255,252,127,31,248,62,15,240,60,15,240,60,15, + 240,60,15,240,60,15,240,60,15,240,60,15,240,60,15,240, + 60,15,240,60,15,240,60,15,240,60,15,240,60,15,15,18, + 36,20,2,0,241,240,247,252,255,252,255,254,252,62,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,17,18,54,20,1,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,16,25,50,20,2,249,241,240,247,248,255,252, + 255,254,252,62,248,31,248,31,240,15,240,15,240,15,240,15, + 248,31,248,31,252,62,255,254,255,252,247,248,241,240,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,16,25,50,20, + 1,249,7,207,31,239,63,255,127,255,124,63,248,31,240,15, + 240,15,240,15,240,15,240,15,240,15,248,31,124,63,127,255, + 63,255,63,239,15,207,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,10,18,36,13,2,0,240,192,243,192,247,192, + 255,192,255,192,252,0,248,0,248,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,18, + 36,19,1,0,7,240,31,252,63,254,124,62,120,31,120,31, + 124,0,127,192,63,248,15,254,3,255,0,63,248,15,248,15, + 124,31,127,254,63,252,15,240,9,22,44,11,1,0,60,0, + 60,0,60,0,60,0,255,128,255,128,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,63,128,63,128,31,128,15,128,15,18,36,20,2,0, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,248,62,248,126,255,254,127,254, + 127,222,31,30,17,18,54,19,0,0,248,15,128,248,15,128, + 124,31,0,124,31,0,60,30,0,60,30,0,62,62,0,30, + 60,0,30,60,0,30,60,0,15,120,0,15,120,0,15,120, + 0,7,240,0,7,240,0,7,240,0,3,224,0,3,224,0, + 25,18,72,26,0,0,248,62,15,128,248,62,15,128,120,62, + 15,0,124,62,31,0,124,127,31,0,60,127,30,0,60,127, + 30,0,60,119,30,0,60,247,158,0,30,227,188,0,30,227, + 188,0,30,227,188,0,31,227,252,0,15,193,248,0,15,193, + 248,0,15,193,248,0,7,128,240,0,7,128,240,0,16,18, + 36,19,1,0,248,31,252,63,124,62,62,124,62,120,31,248, + 15,240,7,224,3,192,7,224,15,224,15,240,31,248,62,120, + 62,124,124,62,252,63,248,31,16,25,50,19,1,249,248,31, + 248,31,248,30,120,62,124,62,124,60,60,60,62,124,62,120, + 30,120,30,120,31,240,15,240,15,240,15,224,7,224,7,224, + 7,192,7,192,7,192,15,128,63,128,63,0,63,0,60,0, + 14,18,36,17,1,0,255,252,255,252,255,252,255,252,0,248, + 1,240,3,240,7,224,15,192,31,128,31,0,62,0,124,0, + 248,0,255,252,255,252,255,252,255,252,9,32,64,13,2,249, + 15,128,31,128,63,128,62,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,124,0,120,0, + 224,0,120,0,124,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,63,128,31,128,15,128, + 3,31,31,9,3,250,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,9,32,64,13,2,249,248,0,252,0,254, + 0,62,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,31,0,15,0,3,128,15,0,31, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,254,0,252,0,248,0,14,6,12,19,2, + 5,56,0,126,12,255,156,231,252,193,248,0,112,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=11 x= 1 y= 7 dx=11 dy= 0 ascent=11 len=18 + Font Bounding box w=13 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR08[2687] U8G_SECTION(".progmem.u8g_font_helvR08") = { + 0,13,18,254,252,8,1,178,3,111,32,255,254,11,254,8, + 254,0,0,0,3,0,1,1,8,8,3,1,0,128,128,128, + 128,128,128,0,128,3,2,2,4,1,6,160,160,6,7,7, + 6,0,0,40,40,124,40,248,80,80,5,10,10,6,0,255, + 32,112,168,160,112,40,40,168,112,32,8,8,8,9,0,0, + 100,148,104,8,16,22,41,38,6,8,8,8,1,0,96,144, + 144,96,148,136,152,100,1,2,2,2,0,6,128,128,3,10, + 10,4,0,254,32,64,64,128,128,128,128,64,64,32,3,10, + 10,4,1,254,128,64,64,32,32,32,32,64,64,128,3,3, + 3,4,0,5,160,64,160,5,5,5,6,0,1,32,32,248, + 32,32,2,3,3,3,0,254,64,64,128,3,1,1,4,0, + 3,224,1,1,1,3,1,0,128,3,8,8,3,0,0,32, + 32,64,64,64,64,128,128,5,8,8,6,0,0,112,136,136, + 136,136,136,136,112,2,8,8,6,1,0,64,192,64,64,64, + 64,64,64,5,8,8,6,0,0,112,136,8,8,48,64,128, + 248,5,8,8,6,0,0,112,136,8,48,8,8,136,112,5, + 8,8,6,0,0,16,48,80,80,144,248,16,16,5,8,8, + 6,0,0,120,64,64,112,8,8,136,112,5,8,8,6,0, + 0,112,136,128,240,136,136,136,112,5,8,8,6,0,0,248, + 8,16,32,32,64,64,64,5,8,8,6,0,0,112,136,136, + 112,136,136,136,112,5,8,8,6,0,0,112,136,136,136,120, + 8,136,112,1,6,6,3,1,0,128,0,0,0,0,128,2, + 8,8,3,0,254,64,0,0,0,0,64,64,128,3,5,5, + 6,1,1,32,64,128,64,32,4,3,3,5,0,2,240,0, + 240,3,5,5,6,1,1,128,64,32,64,128,4,8,8,6, + 1,0,96,144,16,32,64,64,0,64,10,9,18,11,0,255, + 31,0,32,128,77,64,146,64,162,64,164,128,155,0,64,0, + 62,0,7,8,8,7,0,0,16,16,40,40,68,124,130,130, + 5,8,8,7,1,0,240,136,136,240,136,136,136,240,6,8, + 8,8,1,0,120,132,128,128,128,128,132,120,6,8,8,8, + 1,0,240,136,132,132,132,132,136,240,5,8,8,7,1,0, + 248,128,128,248,128,128,128,248,5,8,8,6,1,0,248,128, + 128,240,128,128,128,128,6,8,8,8,1,0,120,132,128,128, + 140,132,132,124,6,8,8,8,1,0,132,132,132,252,132,132, + 132,132,1,8,8,3,1,0,128,128,128,128,128,128,128,128, + 4,8,8,5,0,0,16,16,16,16,16,16,144,96,5,8, + 8,7,1,0,136,144,160,224,144,144,136,136,4,8,8,6, + 1,0,128,128,128,128,128,128,128,240,7,8,8,9,1,0, + 130,198,198,170,170,146,146,146,6,8,8,8,1,0,196,196, + 164,164,148,148,140,140,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,5,8,8,7,1,0,240,136,136,240,128,128, + 128,128,7,9,9,8,1,255,120,132,132,132,132,148,140,124, + 2,5,8,8,7,1,0,240,136,136,240,136,136,136,136,5, + 8,8,7,1,0,112,136,128,112,8,136,136,112,5,8,8, + 5,0,0,248,32,32,32,32,32,32,32,6,8,8,8,1, + 0,132,132,132,132,132,132,132,120,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,9,0,0,136,128,136, + 128,73,0,73,0,85,0,34,0,34,0,34,0,5,8,8, + 7,1,0,136,136,80,32,80,80,136,136,7,8,8,7,0, + 0,130,68,68,40,40,16,16,16,5,8,8,7,1,0,248, + 8,16,32,32,64,128,248,2,10,10,3,1,254,192,128,128, + 128,128,128,128,128,128,192,3,8,8,3,0,0,128,128,64, + 64,64,64,32,32,2,10,10,3,0,254,192,64,64,64,64, + 64,64,64,64,192,5,5,5,6,0,3,32,32,80,80,136, + 6,1,1,6,0,254,252,2,2,2,3,0,7,128,64,5, + 6,6,5,0,0,224,16,112,144,144,104,5,8,8,6,0, + 0,128,128,176,200,136,136,200,176,4,6,6,5,0,0,96, + 144,128,128,144,96,5,8,8,6,0,0,8,8,104,152,136, + 136,152,104,4,6,6,5,0,0,96,144,240,128,144,96,4, + 8,8,4,0,0,48,64,224,64,64,64,64,64,5,8,8, + 6,0,254,104,152,136,136,152,104,8,112,5,8,8,6,0, + 0,128,128,176,200,136,136,136,136,1,8,8,2,0,0,128, + 0,128,128,128,128,128,128,2,10,10,2,255,254,64,0,64, + 64,64,64,64,64,64,128,4,8,8,5,0,0,128,128,144, + 160,192,160,144,144,1,8,8,2,0,0,128,128,128,128,128, + 128,128,128,7,6,6,8,0,0,236,146,146,146,146,146,5, + 6,6,6,0,0,176,200,136,136,136,136,5,6,6,6,0, + 0,112,136,136,136,136,112,5,8,8,6,0,254,176,200,136, + 136,200,176,128,128,5,8,8,6,0,254,104,152,136,136,152, + 104,8,8,3,6,6,4,0,0,160,192,128,128,128,128,4, + 6,6,5,0,0,96,144,96,16,144,96,3,8,8,4,0, + 0,64,64,224,64,64,64,64,96,4,6,6,5,0,0,144, + 144,144,144,144,112,5,6,6,6,0,0,136,136,80,80,32, + 32,7,6,6,8,0,0,146,146,84,84,40,40,5,6,6, + 6,0,0,136,80,32,80,136,136,5,8,8,5,255,254,72, + 72,80,80,48,32,32,192,4,6,6,5,0,0,240,16,32, + 64,128,240,3,10,10,3,0,254,32,64,64,64,128,64,64, + 64,64,32,1,10,10,3,1,254,128,128,128,128,128,128,128, + 128,128,128,3,10,10,3,0,254,128,64,64,64,32,64,64, + 64,64,128,6,2,2,7,0,3,100,152,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,3, + 0,1,1,8,8,3,1,254,128,0,128,128,128,128,128,128, + 5,8,8,6,1,255,16,112,168,160,160,168,112,64,5,8, + 8,6,0,0,48,72,64,224,64,64,72,176,4,6,6,5, + 0,1,144,96,144,144,96,144,5,8,8,6,0,0,136,136, + 136,80,248,32,248,32,1,10,10,3,1,254,128,128,128,128, + 0,0,128,128,128,128,5,10,10,6,0,254,112,136,192,112, + 152,200,112,24,136,112,3,1,1,3,0,7,160,7,7,7, + 9,1,0,56,68,154,162,154,68,56,3,5,5,4,0,3, + 224,32,160,0,224,5,5,5,6,0,0,40,80,160,80,40, + 5,3,3,7,1,2,248,8,8,3,1,1,4,0,3,224, + 7,7,7,9,1,0,56,68,186,178,170,68,56,3,1,1, + 3,0,7,224,4,4,4,4,0,4,96,144,144,96,5,7, + 7,6,0,0,32,32,248,32,32,0,248,3,4,4,3,0, + 4,96,160,64,224,3,4,4,3,0,4,224,64,32,192,2, + 2,2,3,0,7,64,128,4,8,8,5,0,254,144,144,144, + 144,144,240,128,128,6,10,10,6,0,254,124,232,232,232,104, + 40,40,40,40,40,2,1,1,3,0,3,192,2,2,2,3, + 0,254,64,192,2,4,4,3,0,4,64,192,64,64,3,5, + 5,4,0,3,224,160,224,0,224,5,5,5,6,0,0,160, + 80,40,80,160,9,8,16,9,0,0,68,0,196,0,72,0, + 72,0,17,0,19,0,39,128,33,0,8,8,8,9,0,0, + 68,196,72,72,19,21,34,39,9,8,16,9,0,0,224,0, + 68,0,36,0,200,0,9,0,19,0,23,128,33,0,4,8, + 8,6,1,254,32,0,32,32,64,128,144,96,7,11,11,7, + 0,0,32,16,0,16,16,40,40,68,124,130,130,7,11,11, + 7,0,0,8,16,0,16,16,40,40,68,124,130,130,7,11, + 11,7,0,0,16,40,0,16,16,40,40,68,124,130,130,7, + 11,11,7,0,0,20,40,0,16,16,40,40,68,124,130,130, + 7,10,10,7,0,0,40,0,16,16,40,40,68,124,130,130, + 7,11,11,7,0,0,16,40,16,16,16,40,40,68,124,130, + 130,9,8,16,10,0,0,31,128,24,0,40,0,47,128,72, + 0,120,0,136,0,143,128,6,10,10,8,1,254,120,132,128, + 128,128,128,132,120,16,48,5,11,11,7,1,0,64,32,0, + 248,128,128,248,128,128,128,248,5,11,11,7,1,0,16,32, + 0,248,128,128,248,128,128,128,248,5,11,11,7,1,0,32, + 80,0,248,128,128,248,128,128,128,248,5,10,10,7,1,0, + 80,0,248,128,128,248,128,128,128,248,2,11,11,3,0,0, + 128,64,0,64,64,64,64,64,64,64,64,2,11,11,3,1, + 0,64,128,0,128,128,128,128,128,128,128,128,3,11,11,3, + 0,0,64,160,0,64,64,64,64,64,64,64,64,3,10,10, + 3,0,0,160,0,64,64,64,64,64,64,64,64,7,8,8, + 8,0,0,120,68,66,242,66,66,68,120,6,11,11,8,1, + 0,40,80,0,196,196,164,164,148,148,140,140,6,11,11,8, + 1,0,32,16,0,120,132,132,132,132,132,132,120,6,11,11, + 8,1,0,8,16,0,120,132,132,132,132,132,132,120,6,11, + 11,8,1,0,32,80,0,120,132,132,132,132,132,132,120,6, + 11,11,8,1,0,40,80,0,120,132,132,132,132,132,132,120, + 6,10,10,8,1,0,72,0,120,132,132,132,132,132,132,120, + 5,5,5,6,0,1,136,80,32,80,136,6,10,10,8,1, + 255,4,120,140,148,148,164,164,196,120,128,6,11,11,8,1, + 0,32,16,0,132,132,132,132,132,132,132,120,6,11,11,8, + 1,0,8,16,0,132,132,132,132,132,132,132,120,6,11,11, + 8,1,0,32,80,0,132,132,132,132,132,132,132,120,6,10, + 10,8,1,0,72,0,132,132,132,132,132,132,132,120,7,11, + 11,7,0,0,8,16,0,130,68,68,40,40,16,16,16,5, + 8,8,7,1,0,128,128,240,136,136,240,128,128,4,8,8, + 5,0,0,96,144,144,160,144,144,144,160,5,9,9,5,0, + 0,64,32,0,224,16,112,144,144,104,5,9,9,5,0,0, + 32,64,0,224,16,112,144,144,104,5,9,9,5,0,0,32, + 80,0,224,16,112,144,144,104,5,9,9,5,0,0,80,160, + 0,224,16,112,144,144,104,5,8,8,5,0,0,80,0,224, + 16,112,144,144,104,5,9,9,5,0,0,32,80,32,224,16, + 112,144,144,104,7,6,6,8,0,0,236,18,126,144,146,108, + 4,8,8,5,0,254,96,144,128,128,144,96,32,96,4,9, + 9,5,0,0,64,32,0,96,144,240,128,144,96,4,9,9, + 5,0,0,32,64,0,96,144,240,128,144,96,4,9,9,5, + 0,0,64,160,0,96,144,240,128,144,96,4,8,8,5,0, + 0,160,0,96,144,240,128,144,96,2,9,9,2,255,0,128, + 64,0,64,64,64,64,64,64,2,9,9,2,0,0,64,128, + 0,128,128,128,128,128,128,3,9,9,2,255,0,64,160,0, + 64,64,64,64,64,64,3,8,8,2,255,0,160,0,64,64, + 64,64,64,64,5,9,9,6,0,0,64,120,144,120,136,136, + 136,136,112,4,9,9,5,0,0,80,160,0,224,144,144,144, + 144,144,5,9,9,6,0,0,64,32,0,112,136,136,136,136, + 112,5,9,9,6,0,0,16,32,0,112,136,136,136,136,112, + 5,9,9,6,0,0,32,80,0,112,136,136,136,136,112,5, + 9,9,6,0,0,40,80,0,112,136,136,136,136,112,5,8, + 8,6,0,0,80,0,112,136,136,136,136,112,5,5,5,6, + 0,1,32,0,248,0,32,7,6,6,6,255,0,58,76,84, + 100,68,184,4,9,9,5,0,0,64,32,0,144,144,144,144, + 144,112,4,9,9,5,0,0,16,32,0,144,144,144,144,144, + 112,4,9,9,5,0,0,64,160,0,144,144,144,144,144,112, + 4,8,8,5,0,0,160,0,144,144,144,144,144,112,5,11, + 11,5,255,254,8,16,0,72,72,80,80,48,32,32,192,5, + 10,10,6,0,254,128,128,176,200,136,136,200,176,128,128,5, + 10,10,5,255,254,80,0,72,72,80,80,48,32,32,192}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=10 x= 1 y= 7 dx=11 dy= 0 ascent= 9 len=18 + Font Bounding box w=13 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR08r[1276] U8G_SECTION(".progmem.u8g_font_helvR08r") = { + 0,13,18,254,252,8,1,178,3,111,32,127,254,9,254,8, + 254,0,0,0,3,0,1,1,8,8,3,1,0,128,128,128, + 128,128,128,0,128,3,2,2,4,1,6,160,160,6,7,7, + 6,0,0,40,40,124,40,248,80,80,5,10,10,6,0,255, + 32,112,168,160,112,40,40,168,112,32,8,8,8,9,0,0, + 100,148,104,8,16,22,41,38,6,8,8,8,1,0,96,144, + 144,96,148,136,152,100,1,2,2,2,0,6,128,128,3,10, + 10,4,0,254,32,64,64,128,128,128,128,64,64,32,3,10, + 10,4,1,254,128,64,64,32,32,32,32,64,64,128,3,3, + 3,4,0,5,160,64,160,5,5,5,6,0,1,32,32,248, + 32,32,2,3,3,3,0,254,64,64,128,3,1,1,4,0, + 3,224,1,1,1,3,1,0,128,3,8,8,3,0,0,32, + 32,64,64,64,64,128,128,5,8,8,6,0,0,112,136,136, + 136,136,136,136,112,2,8,8,6,1,0,64,192,64,64,64, + 64,64,64,5,8,8,6,0,0,112,136,8,8,48,64,128, + 248,5,8,8,6,0,0,112,136,8,48,8,8,136,112,5, + 8,8,6,0,0,16,48,80,80,144,248,16,16,5,8,8, + 6,0,0,120,64,64,112,8,8,136,112,5,8,8,6,0, + 0,112,136,128,240,136,136,136,112,5,8,8,6,0,0,248, + 8,16,32,32,64,64,64,5,8,8,6,0,0,112,136,136, + 112,136,136,136,112,5,8,8,6,0,0,112,136,136,136,120, + 8,136,112,1,6,6,3,1,0,128,0,0,0,0,128,2, + 8,8,3,0,254,64,0,0,0,0,64,64,128,3,5,5, + 6,1,1,32,64,128,64,32,4,3,3,5,0,2,240,0, + 240,3,5,5,6,1,1,128,64,32,64,128,4,8,8,6, + 1,0,96,144,16,32,64,64,0,64,10,9,18,11,0,255, + 31,0,32,128,77,64,146,64,162,64,164,128,155,0,64,0, + 62,0,7,8,8,7,0,0,16,16,40,40,68,124,130,130, + 5,8,8,7,1,0,240,136,136,240,136,136,136,240,6,8, + 8,8,1,0,120,132,128,128,128,128,132,120,6,8,8,8, + 1,0,240,136,132,132,132,132,136,240,5,8,8,7,1,0, + 248,128,128,248,128,128,128,248,5,8,8,6,1,0,248,128, + 128,240,128,128,128,128,6,8,8,8,1,0,120,132,128,128, + 140,132,132,124,6,8,8,8,1,0,132,132,132,252,132,132, + 132,132,1,8,8,3,1,0,128,128,128,128,128,128,128,128, + 4,8,8,5,0,0,16,16,16,16,16,16,144,96,5,8, + 8,7,1,0,136,144,160,224,144,144,136,136,4,8,8,6, + 1,0,128,128,128,128,128,128,128,240,7,8,8,9,1,0, + 130,198,198,170,170,146,146,146,6,8,8,8,1,0,196,196, + 164,164,148,148,140,140,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,5,8,8,7,1,0,240,136,136,240,128,128, + 128,128,7,9,9,8,1,255,120,132,132,132,132,148,140,124, + 2,5,8,8,7,1,0,240,136,136,240,136,136,136,136,5, + 8,8,7,1,0,112,136,128,112,8,136,136,112,5,8,8, + 5,0,0,248,32,32,32,32,32,32,32,6,8,8,8,1, + 0,132,132,132,132,132,132,132,120,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,9,0,0,136,128,136, + 128,73,0,73,0,85,0,34,0,34,0,34,0,5,8,8, + 7,1,0,136,136,80,32,80,80,136,136,7,8,8,7,0, + 0,130,68,68,40,40,16,16,16,5,8,8,7,1,0,248, + 8,16,32,32,64,128,248,2,10,10,3,1,254,192,128,128, + 128,128,128,128,128,128,192,3,8,8,3,0,0,128,128,64, + 64,64,64,32,32,2,10,10,3,0,254,192,64,64,64,64, + 64,64,64,64,192,5,5,5,6,0,3,32,32,80,80,136, + 6,1,1,6,0,254,252,2,2,2,3,0,7,128,64,5, + 6,6,5,0,0,224,16,112,144,144,104,5,8,8,6,0, + 0,128,128,176,200,136,136,200,176,4,6,6,5,0,0,96, + 144,128,128,144,96,5,8,8,6,0,0,8,8,104,152,136, + 136,152,104,4,6,6,5,0,0,96,144,240,128,144,96,4, + 8,8,4,0,0,48,64,224,64,64,64,64,64,5,8,8, + 6,0,254,104,152,136,136,152,104,8,112,5,8,8,6,0, + 0,128,128,176,200,136,136,136,136,1,8,8,2,0,0,128, + 0,128,128,128,128,128,128,2,10,10,2,255,254,64,0,64, + 64,64,64,64,64,64,128,4,8,8,5,0,0,128,128,144, + 160,192,160,144,144,1,8,8,2,0,0,128,128,128,128,128, + 128,128,128,7,6,6,8,0,0,236,146,146,146,146,146,5, + 6,6,6,0,0,176,200,136,136,136,136,5,6,6,6,0, + 0,112,136,136,136,136,112,5,8,8,6,0,254,176,200,136, + 136,200,176,128,128,5,8,8,6,0,254,104,152,136,136,152, + 104,8,8,3,6,6,4,0,0,160,192,128,128,128,128,4, + 6,6,5,0,0,96,144,96,16,144,96,3,8,8,4,0, + 0,64,64,224,64,64,64,64,96,4,6,6,5,0,0,144, + 144,144,144,144,112,5,6,6,6,0,0,136,136,80,80,32, + 32,7,6,6,8,0,0,146,146,84,84,40,40,5,6,6, + 6,0,0,136,80,32,80,136,136,5,8,8,5,255,254,72, + 72,80,80,48,32,32,192,4,6,6,5,0,0,240,16,32, + 64,128,240,3,10,10,3,0,254,32,64,64,64,128,64,64, + 64,64,32,1,10,10,3,1,254,128,128,128,128,128,128,128, + 128,128,128,3,10,10,3,0,254,128,64,64,64,32,64,64, + 64,64,128,6,2,2,7,0,3,100,152,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=13 h=14 x= 2 y= 9 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=22 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR10[3527] U8G_SECTION(".progmem.u8g_font_helvR10") = { + 0,17,22,254,251,11,2,10,4,133,32,255,253,14,253,11, + 253,0,0,0,4,0,1,1,11,11,4,2,0,128,128,128, + 128,128,128,128,128,0,128,128,3,3,3,5,1,8,160,160, + 160,7,10,10,8,0,0,20,20,20,126,40,40,252,80,80, + 80,7,14,14,8,0,254,16,124,146,146,144,80,56,20,18, + 146,146,124,16,16,11,11,22,12,0,0,112,128,137,0,137, + 0,114,0,2,0,4,0,8,0,9,192,18,32,18,32,33, + 192,8,10,10,10,1,0,48,72,72,48,32,82,138,132,138, + 113,1,3,3,3,1,8,128,128,128,3,14,14,5,1,253, + 32,64,64,128,128,128,128,128,128,128,128,64,64,32,3,14, + 14,5,1,253,128,64,64,32,32,32,32,32,32,32,32,64, + 64,128,5,5,5,7,1,6,32,168,112,168,32,7,7,7, + 9,1,1,16,16,16,254,16,16,16,2,4,4,3,0,254, + 64,64,64,128,3,1,1,4,0,4,224,1,2,2,3,1, + 0,128,128,4,11,11,4,0,0,16,16,32,32,32,64,64, + 64,128,128,128,6,11,11,8,1,0,120,132,132,132,132,132, + 132,132,132,132,120,3,11,11,8,2,0,32,224,32,32,32, + 32,32,32,32,32,32,6,11,11,8,1,0,120,132,132,4, + 8,16,32,64,128,128,252,6,11,11,8,1,0,120,132,132, + 4,4,56,4,4,132,132,120,7,11,11,8,1,0,4,12, + 20,36,68,132,132,254,4,4,4,6,11,11,8,1,0,252, + 128,128,128,248,4,4,4,132,132,120,6,11,11,8,1,0, + 120,132,128,128,184,196,132,132,132,132,120,6,11,11,8,1, + 0,252,4,8,8,16,16,32,32,64,64,64,6,11,11,8, + 1,0,120,132,132,132,132,120,132,132,132,132,120,6,11,11, + 8,1,0,120,132,132,132,132,124,4,4,132,132,120,1,8, + 8,3,1,0,128,128,0,0,0,0,128,128,2,10,10,4, + 0,254,64,64,0,0,0,0,64,64,64,128,6,5,5,8, + 1,2,12,48,192,48,12,6,3,3,9,1,3,252,0,252, + 6,5,5,8,1,2,192,48,12,48,192,6,11,11,8,1, + 0,48,204,132,132,4,8,16,32,0,32,32,11,12,24,13, + 1,255,15,0,48,192,64,32,70,160,137,32,145,32,145,32, + 147,64,141,128,64,0,96,128,31,0,9,11,22,9,0,0, + 8,0,28,0,20,0,20,0,34,0,34,0,65,0,127,0, + 65,0,128,128,128,128,7,11,11,9,1,0,252,134,130,130, + 132,248,132,130,130,134,252,8,11,11,10,1,0,28,99,65, + 128,128,128,128,128,65,99,28,8,11,11,10,1,0,248,134, + 130,129,129,129,129,129,130,134,248,7,11,11,9,1,0,254, + 128,128,128,128,252,128,128,128,128,254,7,11,11,8,1,0, + 254,128,128,128,128,252,128,128,128,128,128,9,11,22,11,1, + 0,30,0,97,128,64,128,128,0,128,0,135,128,128,128,128, + 128,64,128,99,128,28,128,8,11,11,10,1,0,129,129,129, + 129,129,255,129,129,129,129,129,1,11,11,4,2,0,128,128, + 128,128,128,128,128,128,128,128,128,6,11,11,7,0,0,4, + 4,4,4,4,4,4,4,132,132,120,8,11,11,9,1,0, + 130,132,136,144,160,224,144,136,132,130,129,6,11,11,8,2, + 0,128,128,128,128,128,128,128,128,128,128,252,11,11,22,12, + 0,0,128,32,192,96,192,96,160,160,160,160,145,32,145,32, + 138,32,138,32,132,32,132,32,8,11,11,10,1,0,193,161, + 161,145,145,137,137,133,133,131,131,9,11,22,11,1,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,11,11,9,1,0,252,134,130,130,134, + 252,128,128,128,128,128,9,11,22,11,1,0,28,0,99,0, + 65,0,128,128,128,128,128,128,136,128,132,128,67,0,99,0, + 28,128,8,11,11,10,1,0,254,131,129,129,130,252,130,129, + 129,129,129,7,11,11,9,1,0,56,198,130,128,96,24,6, + 2,130,198,56,9,11,22,9,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,11,11,10,1,0,129,129,129,129,129,129,129,129,129,66, + 60,9,11,22,9,0,0,128,128,128,128,65,0,65,0,99, + 0,34,0,34,0,20,0,20,0,8,0,8,0,13,11,22, + 13,0,0,130,8,130,8,133,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,9,11,22,9,0,0,128, + 128,65,0,34,0,20,0,8,0,8,0,20,0,34,0,65, + 0,65,0,128,128,9,11,22,9,0,0,128,128,193,128,65, + 0,34,0,34,0,20,0,28,0,8,0,8,0,8,0,8, + 0,7,11,11,9,1,0,254,2,4,8,24,16,32,96,64, + 128,254,3,14,14,4,1,253,224,128,128,128,128,128,128,128, + 128,128,128,128,128,224,4,11,11,4,0,0,128,128,64,64, + 64,32,32,32,16,16,16,3,14,14,4,0,253,224,32,32, + 32,32,32,32,32,32,32,32,32,32,224,5,5,5,7,1, + 6,32,80,80,136,136,8,1,1,8,0,253,255,2,2,2, + 5,1,9,128,64,7,8,8,8,1,0,120,204,4,124,196, + 132,204,118,6,11,11,7,1,0,128,128,128,184,204,132,132, + 132,132,204,184,6,8,8,7,1,0,120,204,128,128,128,132, + 204,120,6,11,11,8,1,0,4,4,4,116,204,132,132,132, + 132,204,116,6,8,8,8,1,0,120,204,132,252,128,128,204, + 120,4,11,11,4,0,0,48,64,64,224,64,64,64,64,64, + 64,64,6,11,11,8,1,253,116,204,132,132,132,132,204,116, + 4,204,120,6,11,11,8,1,0,128,128,128,184,204,132,132, + 132,132,132,132,1,11,11,3,1,0,128,128,0,128,128,128, + 128,128,128,128,128,3,14,14,3,255,253,32,32,0,32,32, + 32,32,32,32,32,32,32,32,192,6,11,11,7,1,0,128, + 128,128,136,144,160,192,160,144,136,132,1,11,11,3,1,0, + 128,128,128,128,128,128,128,128,128,128,128,9,8,16,11,1, + 0,179,0,204,128,136,128,136,128,136,128,136,128,136,128,136, + 128,6,8,8,8,1,0,184,204,132,132,132,132,132,132,6, + 8,8,8,1,0,120,204,132,132,132,132,204,120,6,11,11, + 8,1,253,184,204,132,132,132,132,204,184,128,128,128,6,11, + 11,8,1,253,116,204,132,132,132,132,204,116,4,4,4,4, + 8,8,5,1,0,176,192,128,128,128,128,128,128,5,8,8, + 7,1,0,112,136,192,112,24,8,136,112,4,10,10,4,0, + 0,64,64,224,64,64,64,64,64,64,48,6,8,8,7,1, + 0,132,132,132,132,132,132,204,116,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,10,0,0,136,128,136, + 128,136,128,73,0,73,0,85,0,34,0,34,0,7,8,8, + 7,0,0,198,68,40,16,16,40,68,198,7,11,11,7,0, + 253,130,194,68,68,36,40,24,16,16,48,96,6,8,8,7, + 0,0,252,4,8,16,32,64,128,252,5,14,14,5,0,253, + 24,32,32,32,32,64,128,64,32,32,32,32,32,24,1,14, + 14,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,5,14,14,5,0,253,192,32,32,32,32,16,8,16, + 32,32,32,32,32,192,6,3,3,8,1,3,100,180,152,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,4,0,1,1,11,11,4,1,253,128,128,0,128, + 128,128,128,128,128,128,128,6,10,10,8,1,255,4,120,204, + 144,144,160,164,204,120,128,7,11,11,8,0,0,56,68,64, + 64,248,32,32,32,64,98,220,6,6,6,8,1,2,132,120, + 72,72,120,132,7,11,11,7,0,0,130,130,130,68,68,40, + 254,16,254,16,16,1,14,14,3,1,253,128,128,128,128,128, + 128,0,0,128,128,128,128,128,128,5,14,14,8,2,253,112, + 216,136,192,112,152,136,136,200,112,24,136,216,112,5,1,1, + 5,0,9,216,10,11,22,12,1,0,30,0,97,128,92,128, + 162,192,162,64,160,64,162,64,156,64,64,128,97,128,30,0, + 4,7,7,6,1,4,224,16,112,144,208,0,240,6,5,5, + 8,1,2,36,72,144,72,36,7,4,4,9,1,2,254,2, + 2,2,3,1,1,4,0,4,224,10,11,22,12,1,0,30, + 0,97,128,92,128,146,64,146,64,156,64,146,64,146,64,64, + 128,97,128,30,0,4,1,1,4,0,9,240,4,4,4,6, + 1,7,96,144,144,96,7,9,9,9,1,0,16,16,16,254, + 16,16,16,0,254,4,6,6,5,0,5,96,144,16,32,64, + 240,4,6,6,5,0,5,96,144,32,16,144,96,2,2,2, + 5,2,9,64,128,6,11,11,8,1,253,132,132,132,132,132, + 132,204,180,128,128,128,7,14,14,8,0,253,62,116,244,244, + 244,116,52,20,20,20,20,20,20,20,2,1,1,4,1,4, + 192,4,3,3,5,0,253,32,144,96,2,6,6,5,1,5, + 64,192,64,64,64,64,4,7,7,6,1,4,96,144,144,144, + 96,0,240,6,5,5,8,1,2,144,72,36,72,144,10,11, + 22,12,1,0,66,0,194,0,68,0,68,0,72,0,72,128, + 9,128,18,128,20,128,39,192,32,128,9,11,22,12,1,0, + 66,0,194,0,68,0,68,0,72,0,75,0,20,128,16,128, + 17,0,34,0,39,128,11,11,22,12,0,0,97,0,145,0, + 34,0,18,0,148,0,100,64,4,192,9,64,10,64,19,224, + 16,64,6,11,11,8,1,253,16,16,0,16,32,64,128,132, + 132,204,48,9,14,28,9,0,0,16,0,8,0,0,0,8, + 0,28,0,20,0,20,0,34,0,34,0,65,0,127,0,65, + 0,128,128,128,128,9,14,28,9,0,0,4,0,8,0,0, + 0,8,0,28,0,20,0,20,0,34,0,34,0,65,0,127, + 0,65,0,128,128,128,128,9,14,28,9,0,0,12,0,18, + 0,0,0,8,0,28,0,20,0,20,0,34,0,34,0,65, + 0,127,0,65,0,128,128,128,128,9,14,28,9,0,0,26, + 0,44,0,0,0,8,0,28,0,20,0,20,0,34,0,34, + 0,65,0,127,0,65,0,128,128,128,128,9,13,26,9,0, + 0,54,0,0,0,8,0,28,0,20,0,20,0,34,0,34, + 0,65,0,127,0,65,0,128,128,128,128,9,14,28,9,0, + 0,12,0,18,0,18,0,12,0,12,0,20,0,20,0,34, + 0,34,0,65,0,127,0,65,0,128,128,128,128,12,11,22, + 14,1,0,31,240,18,0,18,0,34,0,34,0,35,240,126, + 0,66,0,66,0,130,0,131,240,8,14,14,10,1,253,28, + 99,65,128,128,128,128,128,65,99,28,8,36,24,7,14,14, + 9,1,0,32,16,0,254,128,128,128,128,252,128,128,128,128, + 254,7,14,14,9,1,0,8,16,0,254,128,128,128,128,252, + 128,128,128,128,254,7,14,14,9,1,0,24,36,0,254,128, + 128,128,128,252,128,128,128,128,254,7,13,13,9,1,0,108, + 0,254,128,128,128,128,252,128,128,128,128,254,2,14,14,4, + 1,0,128,64,0,64,64,64,64,64,64,64,64,64,64,64, + 2,14,14,4,2,0,64,128,0,128,128,128,128,128,128,128, + 128,128,128,128,4,14,14,4,1,0,96,144,0,64,64,64, + 64,64,64,64,64,64,64,64,5,13,13,4,0,0,216,0, + 32,32,32,32,32,32,32,32,32,32,32,9,11,22,10,0, + 0,124,0,67,0,65,0,64,128,64,128,240,128,64,128,64, + 128,65,0,67,0,124,0,8,14,14,10,1,0,26,44,0, + 193,161,161,145,145,137,137,133,133,131,131,9,14,28,11,1, + 0,16,0,8,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,14,28, + 11,1,0,4,0,8,0,0,0,28,0,99,0,65,0,128, + 128,128,128,128,128,128,128,128,128,65,0,99,0,28,0,9, + 14,28,11,1,0,12,0,18,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,14,28,11,1,0,26,0,44,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,9,13,26,11,1,0,51,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,7,7,7,9,1,1,130,68,40,16,40,68,130, + 11,11,22,11,0,0,14,32,49,192,32,128,65,64,66,64, + 68,64,72,64,80,64,32,128,113,128,142,0,8,14,14,10, + 1,0,16,8,0,129,129,129,129,129,129,129,129,129,66,60, + 8,14,14,10,1,0,4,8,0,129,129,129,129,129,129,129, + 129,129,66,60,8,14,14,10,1,0,24,36,0,129,129,129, + 129,129,129,129,129,129,66,60,8,13,13,10,1,0,102,0, + 129,129,129,129,129,129,129,129,129,66,60,9,14,28,9,0, + 0,4,0,8,0,0,0,128,128,193,128,65,0,34,0,34, + 0,20,0,28,0,8,0,8,0,8,0,8,0,7,11,11, + 9,1,0,128,128,252,134,130,130,134,252,128,128,128,5,11, + 11,7,1,0,112,136,136,136,176,144,136,136,136,136,176,7, + 11,11,8,1,0,32,16,0,120,204,4,124,196,132,204,118, + 7,11,11,8,1,0,16,32,0,120,204,4,124,196,132,204, + 118,7,11,11,8,1,0,48,72,0,120,204,4,124,196,132, + 204,118,7,11,11,8,1,0,52,88,0,120,204,4,124,196, + 132,204,118,7,11,11,8,1,0,72,72,0,120,204,4,124, + 196,132,204,118,7,12,12,8,1,0,48,72,48,0,120,204, + 4,124,196,132,204,118,11,8,16,13,1,0,123,192,198,96, + 4,32,127,224,196,0,132,0,206,96,123,192,6,11,11,8, + 1,253,120,204,128,128,128,132,204,120,16,72,48,6,11,11, + 8,1,0,32,16,0,120,204,132,252,128,128,204,120,6,11, + 11,8,1,0,16,32,0,120,204,132,252,128,128,204,120,6, + 11,11,8,1,0,48,72,0,120,204,132,252,128,128,204,120, + 6,11,11,8,1,0,72,72,0,120,204,132,252,128,128,204, + 120,2,11,11,3,1,0,128,64,0,128,128,128,128,128,128, + 128,128,2,11,11,3,1,0,64,128,0,128,128,128,128,128, + 128,128,128,4,11,11,3,0,0,96,144,0,64,64,64,64, + 64,64,64,64,3,11,11,3,0,0,160,160,0,64,64,64, + 64,64,64,64,64,6,11,11,8,1,0,216,112,144,120,204, + 132,132,132,132,204,120,6,11,11,8,1,0,104,176,0,184, + 204,132,132,132,132,132,132,6,11,11,8,1,0,32,16,0, + 120,204,132,132,132,132,204,120,6,11,11,8,1,0,16,32, + 0,120,204,132,132,132,132,204,120,6,11,11,8,1,0,48, + 72,0,120,204,132,132,132,132,204,120,6,11,11,8,1,0, + 104,176,0,120,204,132,132,132,132,204,120,6,11,11,8,1, + 0,72,72,0,120,204,132,132,132,132,204,120,7,7,7,9, + 1,1,16,16,0,254,0,16,16,8,8,8,8,0,0,61, + 98,70,74,82,98,70,188,6,11,11,8,1,0,32,16,0, + 132,132,132,132,132,132,204,116,6,11,11,8,1,0,16,32, + 0,132,132,132,132,132,132,204,116,6,11,11,8,1,0,48, + 72,0,132,132,132,132,132,132,204,116,6,11,11,8,1,0, + 72,72,0,132,132,132,132,132,132,204,116,7,14,14,7,0, + 253,8,16,0,130,194,68,68,36,40,24,16,16,48,96,6, + 14,14,8,1,253,128,128,128,184,204,132,132,132,132,204,184, + 128,128,128,7,14,14,7,0,253,36,36,0,130,194,68,68, + 36,40,24,16,16,48,96}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=13 h=14 x= 2 y= 9 dx=13 dy= 0 ascent=12 len=24 + Font Bounding box w=17 h=22 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR10r[1648] U8G_SECTION(".progmem.u8g_font_helvR10r") = { + 0,17,22,254,251,11,2,10,4,133,32,127,253,12,253,11, + 253,0,0,0,4,0,1,1,11,11,4,2,0,128,128,128, + 128,128,128,128,128,0,128,128,3,3,3,5,1,8,160,160, + 160,7,10,10,8,0,0,20,20,20,126,40,40,252,80,80, + 80,7,14,14,8,0,254,16,124,146,146,144,80,56,20,18, + 146,146,124,16,16,11,11,22,12,0,0,112,128,137,0,137, + 0,114,0,2,0,4,0,8,0,9,192,18,32,18,32,33, + 192,8,10,10,10,1,0,48,72,72,48,32,82,138,132,138, + 113,1,3,3,3,1,8,128,128,128,3,14,14,5,1,253, + 32,64,64,128,128,128,128,128,128,128,128,64,64,32,3,14, + 14,5,1,253,128,64,64,32,32,32,32,32,32,32,32,64, + 64,128,5,5,5,7,1,6,32,168,112,168,32,7,7,7, + 9,1,1,16,16,16,254,16,16,16,2,4,4,3,0,254, + 64,64,64,128,3,1,1,4,0,4,224,1,2,2,3,1, + 0,128,128,4,11,11,4,0,0,16,16,32,32,32,64,64, + 64,128,128,128,6,11,11,8,1,0,120,132,132,132,132,132, + 132,132,132,132,120,3,11,11,8,2,0,32,224,32,32,32, + 32,32,32,32,32,32,6,11,11,8,1,0,120,132,132,4, + 8,16,32,64,128,128,252,6,11,11,8,1,0,120,132,132, + 4,4,56,4,4,132,132,120,7,11,11,8,1,0,4,12, + 20,36,68,132,132,254,4,4,4,6,11,11,8,1,0,252, + 128,128,128,248,4,4,4,132,132,120,6,11,11,8,1,0, + 120,132,128,128,184,196,132,132,132,132,120,6,11,11,8,1, + 0,252,4,8,8,16,16,32,32,64,64,64,6,11,11,8, + 1,0,120,132,132,132,132,120,132,132,132,132,120,6,11,11, + 8,1,0,120,132,132,132,132,124,4,4,132,132,120,1,8, + 8,3,1,0,128,128,0,0,0,0,128,128,2,10,10,4, + 0,254,64,64,0,0,0,0,64,64,64,128,6,5,5,8, + 1,2,12,48,192,48,12,6,3,3,9,1,3,252,0,252, + 6,5,5,8,1,2,192,48,12,48,192,6,11,11,8,1, + 0,48,204,132,132,4,8,16,32,0,32,32,11,12,24,13, + 1,255,15,0,48,192,64,32,70,160,137,32,145,32,145,32, + 147,64,141,128,64,0,96,128,31,0,9,11,22,9,0,0, + 8,0,28,0,20,0,20,0,34,0,34,0,65,0,127,0, + 65,0,128,128,128,128,7,11,11,9,1,0,252,134,130,130, + 132,248,132,130,130,134,252,8,11,11,10,1,0,28,99,65, + 128,128,128,128,128,65,99,28,8,11,11,10,1,0,248,134, + 130,129,129,129,129,129,130,134,248,7,11,11,9,1,0,254, + 128,128,128,128,252,128,128,128,128,254,7,11,11,8,1,0, + 254,128,128,128,128,252,128,128,128,128,128,9,11,22,11,1, + 0,30,0,97,128,64,128,128,0,128,0,135,128,128,128,128, + 128,64,128,99,128,28,128,8,11,11,10,1,0,129,129,129, + 129,129,255,129,129,129,129,129,1,11,11,4,2,0,128,128, + 128,128,128,128,128,128,128,128,128,6,11,11,7,0,0,4, + 4,4,4,4,4,4,4,132,132,120,8,11,11,9,1,0, + 130,132,136,144,160,224,144,136,132,130,129,6,11,11,8,2, + 0,128,128,128,128,128,128,128,128,128,128,252,11,11,22,12, + 0,0,128,32,192,96,192,96,160,160,160,160,145,32,145,32, + 138,32,138,32,132,32,132,32,8,11,11,10,1,0,193,161, + 161,145,145,137,137,133,133,131,131,9,11,22,11,1,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,11,11,9,1,0,252,134,130,130,134, + 252,128,128,128,128,128,9,11,22,11,1,0,28,0,99,0, + 65,0,128,128,128,128,128,128,136,128,132,128,67,0,99,0, + 28,128,8,11,11,10,1,0,254,131,129,129,130,252,130,129, + 129,129,129,7,11,11,9,1,0,56,198,130,128,96,24,6, + 2,130,198,56,9,11,22,9,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,11,11,10,1,0,129,129,129,129,129,129,129,129,129,66, + 60,9,11,22,9,0,0,128,128,128,128,65,0,65,0,99, + 0,34,0,34,0,20,0,20,0,8,0,8,0,13,11,22, + 13,0,0,130,8,130,8,133,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,9,11,22,9,0,0,128, + 128,65,0,34,0,20,0,8,0,8,0,20,0,34,0,65, + 0,65,0,128,128,9,11,22,9,0,0,128,128,193,128,65, + 0,34,0,34,0,20,0,28,0,8,0,8,0,8,0,8, + 0,7,11,11,9,1,0,254,2,4,8,24,16,32,96,64, + 128,254,3,14,14,4,1,253,224,128,128,128,128,128,128,128, + 128,128,128,128,128,224,4,11,11,4,0,0,128,128,64,64, + 64,32,32,32,16,16,16,3,14,14,4,0,253,224,32,32, + 32,32,32,32,32,32,32,32,32,32,224,5,5,5,7,1, + 6,32,80,80,136,136,8,1,1,8,0,253,255,2,2,2, + 5,1,9,128,64,7,8,8,8,1,0,120,204,4,124,196, + 132,204,118,6,11,11,7,1,0,128,128,128,184,204,132,132, + 132,132,204,184,6,8,8,7,1,0,120,204,128,128,128,132, + 204,120,6,11,11,8,1,0,4,4,4,116,204,132,132,132, + 132,204,116,6,8,8,8,1,0,120,204,132,252,128,128,204, + 120,4,11,11,4,0,0,48,64,64,224,64,64,64,64,64, + 64,64,6,11,11,8,1,253,116,204,132,132,132,132,204,116, + 4,204,120,6,11,11,8,1,0,128,128,128,184,204,132,132, + 132,132,132,132,1,11,11,3,1,0,128,128,0,128,128,128, + 128,128,128,128,128,3,14,14,3,255,253,32,32,0,32,32, + 32,32,32,32,32,32,32,32,192,6,11,11,7,1,0,128, + 128,128,136,144,160,192,160,144,136,132,1,11,11,3,1,0, + 128,128,128,128,128,128,128,128,128,128,128,9,8,16,11,1, + 0,179,0,204,128,136,128,136,128,136,128,136,128,136,128,136, + 128,6,8,8,8,1,0,184,204,132,132,132,132,132,132,6, + 8,8,8,1,0,120,204,132,132,132,132,204,120,6,11,11, + 8,1,253,184,204,132,132,132,132,204,184,128,128,128,6,11, + 11,8,1,253,116,204,132,132,132,132,204,116,4,4,4,4, + 8,8,5,1,0,176,192,128,128,128,128,128,128,5,8,8, + 7,1,0,112,136,192,112,24,8,136,112,4,10,10,4,0, + 0,64,64,224,64,64,64,64,64,64,48,6,8,8,7,1, + 0,132,132,132,132,132,132,204,116,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,10,0,0,136,128,136, + 128,136,128,73,0,73,0,85,0,34,0,34,0,7,8,8, + 7,0,0,198,68,40,16,16,40,68,198,7,11,11,7,0, + 253,130,194,68,68,36,40,24,16,16,48,96,6,8,8,7, + 0,0,252,4,8,16,32,64,128,252,5,14,14,5,0,253, + 24,32,32,32,32,64,128,64,32,32,32,32,32,24,1,14, + 14,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,5,14,14,5,0,253,192,32,32,32,32,16,8,16, + 32,32,32,32,32,192,6,3,3,8,1,3,100,180,152,255 + }; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=16 x= 3 y=10 dx=17 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=26 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR12[4077] U8G_SECTION(".progmem.u8g_font_helvR12") = { + 0,20,26,254,250,12,2,91,5,99,32,255,252,16,252,12, + 252,0,0,0,5,0,1,1,12,12,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,128,4,4,4,6,1,8,144, + 144,144,144,8,11,11,9,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,15,15,9,1,254,16,124,146,146,144,80, + 48,24,20,18,146,146,124,16,16,12,12,24,14,0,0,112, + 64,136,128,136,128,137,0,114,0,2,0,4,0,4,224,9, + 16,17,16,17,16,32,224,10,12,24,11,0,0,24,0,36, + 0,66,0,66,0,36,0,24,0,41,0,69,0,130,0,131, + 0,68,128,56,64,2,4,4,3,0,8,192,192,64,64,3, + 16,16,6,1,252,32,64,64,64,128,128,128,128,128,128,128, + 128,64,64,64,32,3,16,16,6,1,252,128,64,64,64,32, + 32,32,32,32,32,32,32,64,64,64,128,5,5,5,6,0, + 7,32,168,112,80,136,9,9,18,10,0,0,8,0,8,0, + 8,0,8,0,255,128,8,0,8,0,8,0,8,0,2,4, + 4,4,1,254,64,64,64,128,4,1,1,5,0,4,240,1, + 2,2,4,2,0,128,128,4,12,12,5,0,0,16,16,32, + 32,32,32,64,64,64,128,128,128,7,12,12,9,1,0,56, + 68,68,130,130,130,130,130,130,68,68,56,3,12,12,9,3, + 0,32,32,96,160,32,32,32,32,32,32,32,32,7,12,12, + 9,1,0,56,68,130,130,2,4,8,48,64,128,128,254,7, + 12,12,9,1,0,56,68,130,130,4,56,4,2,130,130,68, + 56,8,12,12,9,0,0,12,20,20,36,36,68,68,132,255, + 4,4,4,7,12,12,9,1,0,62,32,32,64,120,68,2, + 2,2,130,68,56,7,12,12,9,1,0,60,66,130,128,184, + 196,130,130,130,130,68,56,8,12,12,9,0,0,255,1,2, + 4,4,8,8,16,16,16,32,32,7,12,12,9,1,0,56, + 68,130,130,68,56,68,130,130,130,68,56,7,12,12,9,1, + 0,56,68,130,130,130,130,70,58,2,130,132,120,1,9,9, + 4,2,0,128,128,0,0,0,0,0,128,128,2,11,11,4, + 1,254,64,64,0,0,0,0,0,64,64,64,128,9,9,18, + 10,0,0,1,128,6,0,24,0,96,0,128,0,96,0,24, + 0,6,0,1,128,8,4,4,10,0,2,255,0,0,255,9, + 9,18,10,1,0,192,0,48,0,12,0,3,0,0,128,3, + 0,12,0,48,0,192,0,7,12,12,9,1,0,56,68,130, + 130,2,4,8,16,16,0,16,16,13,14,28,17,1,254,7, + 128,24,96,32,16,67,208,76,72,136,72,144,136,144,136,144, + 144,153,144,78,96,64,0,48,96,15,128,10,12,24,11,0, + 0,12,0,12,0,18,0,18,0,18,0,33,0,33,0,127, + 128,64,128,64,128,128,64,128,64,9,12,24,11,1,0,252, + 0,130,0,129,0,129,0,130,0,254,0,129,0,128,128,128, + 128,128,128,129,0,254,0,10,12,24,12,1,0,15,0,48, + 128,64,64,64,0,128,0,128,0,128,0,128,0,64,0,64, + 64,48,128,15,0,10,12,24,12,1,0,252,0,131,0,128, + 128,128,128,128,64,128,64,128,64,128,64,128,128,128,128,131, + 0,252,0,8,12,12,11,1,0,255,128,128,128,128,255,128, + 128,128,128,128,255,7,12,12,10,1,0,254,128,128,128,128, + 254,128,128,128,128,128,128,10,12,24,13,1,0,14,0,49, + 128,64,64,64,0,128,0,128,0,135,192,128,64,64,64,64, + 192,49,64,14,64,9,12,24,12,1,0,128,128,128,128,128, + 128,128,128,128,128,255,128,128,128,128,128,128,128,128,128,128, + 128,128,128,1,12,12,4,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,6,12,12,8,0,0,4,4,4,4,4, + 4,4,4,132,132,132,120,8,12,12,11,1,0,129,130,132, + 136,144,176,200,136,132,130,130,129,7,12,12,9,1,0,128, + 128,128,128,128,128,128,128,128,128,128,254,11,12,24,13,1, + 0,128,32,192,96,192,96,160,160,160,160,160,160,145,32,145, + 32,145,32,138,32,138,32,132,32,9,12,24,12,1,0,128, + 128,192,128,160,128,160,128,144,128,136,128,136,128,132,128,130, + 128,130,128,129,128,128,128,11,12,24,13,1,0,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,8,12,12,11,2,0,252,130,129,129,130, + 252,128,128,128,128,128,128,11,13,26,13,1,255,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,66, + 64,49,128,14,128,0,64,9,12,24,12,2,0,252,0,130, + 0,129,0,129,0,130,0,252,0,130,0,129,0,129,0,129, + 0,129,0,128,128,9,12,24,11,1,0,62,0,65,0,128, + 128,128,128,64,0,48,0,14,0,1,0,128,128,128,128,65, + 0,62,0,9,12,24,10,0,0,255,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,9,12,24,12,1,0,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,62,0,10, + 12,24,11,0,0,128,64,128,64,64,128,64,128,64,128,33, + 0,33,0,18,0,18,0,18,0,12,0,12,0,13,12,24, + 15,1,0,130,8,130,8,130,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,16,64,8,12,12,11,1, + 0,129,66,66,36,36,24,24,36,36,66,66,129,9,12,24, + 11,1,0,128,128,65,0,65,0,34,0,34,0,20,0,28, + 0,8,0,8,0,8,0,8,0,8,0,9,12,24,10,0, + 0,127,128,1,0,3,0,2,0,4,0,12,0,8,0,16, + 0,48,0,32,0,64,0,255,128,3,15,15,5,1,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,224,4,12, + 12,5,0,0,128,128,64,64,64,64,32,32,32,16,16,16, + 3,15,15,5,0,253,224,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,7,7,7,8,0,5,16,40,40,68,68, + 130,130,9,1,2,9,0,253,255,128,3,3,3,6,0,10, + 128,192,32,8,9,9,9,1,0,124,130,2,6,122,130,130, + 134,123,7,12,12,9,1,0,128,128,128,184,196,130,130,130, + 130,130,196,184,7,9,9,8,1,0,56,68,130,128,128,128, + 130,68,56,7,12,12,9,1,0,2,2,2,58,70,130,130, + 130,130,130,70,58,7,9,9,9,1,0,56,68,130,130,254, + 128,130,68,56,4,12,12,5,1,0,48,64,64,240,64,64, + 64,64,64,64,64,64,7,13,13,9,1,252,58,70,130,130, + 130,130,130,70,58,2,130,132,120,7,12,12,9,1,0,128, + 128,128,188,194,130,130,130,130,130,130,130,1,12,12,3,1, + 0,128,128,0,128,128,128,128,128,128,128,128,128,3,16,16, + 4,255,252,32,32,0,32,32,32,32,32,32,32,32,32,32, + 32,32,192,7,12,12,8,0,0,128,128,128,132,136,144,160, + 224,144,136,132,130,1,12,12,3,1,0,128,128,128,128,128, + 128,128,128,128,128,128,128,11,9,18,14,2,0,185,192,198, + 32,132,32,132,32,132,32,132,32,132,32,132,32,132,32,7, + 9,9,9,1,0,188,194,130,130,130,130,130,130,130,7,9, + 9,9,1,0,56,68,130,130,130,130,130,68,56,7,13,13, + 9,1,252,184,196,130,130,130,130,130,196,184,128,128,128,128, + 7,13,13,9,1,252,58,70,130,130,130,130,130,70,58,2, + 2,2,2,4,9,9,5,1,0,176,192,128,128,128,128,128, + 128,128,6,9,9,8,1,0,120,132,132,192,48,12,132,132, + 120,4,11,11,5,1,0,64,64,240,64,64,64,64,64,64, + 64,48,7,9,9,9,1,0,130,130,130,130,130,130,130,134, + 122,7,9,9,8,0,0,130,130,68,68,68,40,40,56,16, + 11,9,18,12,0,0,132,32,132,32,68,64,78,64,74,64, + 42,128,42,128,17,0,17,0,7,9,9,8,0,0,130,68, + 68,40,16,40,68,68,130,7,12,12,8,0,253,130,130,68, + 68,40,40,56,16,16,32,32,192,6,9,9,8,1,0,252, + 4,8,16,32,32,64,128,252,3,16,16,6,1,252,32,64, + 64,64,64,64,64,128,64,64,64,64,64,64,64,32,1,16, + 16,4,1,252,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,16,16,6,1,252,128,64,64,64,64,64, + 64,32,64,64,64,64,64,64,64,128,8,2,2,10,1,4, + 113,142,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,5,0,1,1,12,12,6,2,253,128, + 128,0,128,128,128,128,128,128,128,128,128,7,13,13,9,1, + 254,4,4,56,76,138,144,144,144,162,100,56,64,64,8,12, + 12,9,0,0,14,17,33,32,32,16,126,8,16,32,121,134, + 8,7,7,9,0,3,189,102,66,66,66,102,189,9,12,24, + 9,0,0,128,128,65,0,65,0,34,0,34,0,20,0,127, + 0,8,0,127,0,8,0,8,0,8,0,1,16,16,4,1, + 252,128,128,128,128,128,128,0,0,0,0,128,128,128,128,128, + 128,7,15,15,9,1,253,56,68,70,96,152,140,134,194,98, + 50,28,4,196,68,56,3,2,2,5,1,10,160,160,12,12, + 24,12,0,0,15,0,48,192,71,32,72,160,144,16,144,16, + 144,16,144,16,72,160,71,32,48,192,15,0,5,7,7,6, + 1,5,96,144,112,144,120,0,248,6,6,6,9,1,2,36, + 72,144,144,72,36,8,5,5,10,0,1,255,1,1,1,1, + 4,1,1,5,0,4,240,12,12,24,12,0,0,15,0,48, + 192,64,32,79,32,136,144,136,144,143,16,138,16,73,32,72, + 160,48,192,15,0,5,1,1,6,0,10,248,5,5,5,7, + 1,7,112,136,136,136,112,9,11,22,10,0,0,8,0,8, + 0,8,0,8,0,255,128,8,0,8,0,8,0,8,0,0, + 0,255,128,5,7,7,6,0,5,112,136,136,16,96,128,248, + 5,7,7,6,0,5,112,136,8,48,8,136,112,3,3,3, + 6,1,10,32,96,128,7,13,13,9,1,252,130,130,130,130, + 130,130,130,134,250,128,128,128,128,7,15,15,9,1,253,62, + 116,244,244,244,244,116,52,20,20,20,20,20,20,20,1,2, + 2,5,2,4,128,128,4,4,4,6,0,252,32,32,144,96, + 3,7,7,6,0,5,32,224,32,32,32,32,32,4,7,7, + 6,1,5,96,144,144,144,96,0,240,6,6,6,9,1,2, + 144,72,36,36,72,144,12,12,24,14,0,0,32,64,224,128, + 32,128,33,0,34,0,34,32,36,96,4,160,9,32,17,240, + 16,32,32,32,12,13,26,14,0,0,0,64,32,128,224,128, + 33,0,34,0,34,0,36,224,37,16,9,16,8,32,16,192, + 33,0,33,240,13,12,24,14,0,0,112,64,136,64,8,128, + 48,128,9,0,137,16,114,48,2,80,4,144,4,248,8,16, + 8,16,7,12,12,10,1,253,16,16,0,16,16,32,64,128, + 130,130,68,56,10,16,32,11,0,0,16,0,24,0,4,0, + 0,0,12,0,12,0,18,0,18,0,18,0,33,0,33,0, + 127,128,64,128,64,128,128,64,128,64,10,16,32,11,0,0, + 2,0,6,0,8,0,0,0,12,0,12,0,18,0,18,0, + 18,0,33,0,33,0,127,128,64,128,64,128,128,64,128,64, + 10,16,32,11,0,0,4,0,14,0,17,0,0,0,12,0, + 12,0,18,0,18,0,18,0,33,0,33,0,127,128,64,128, + 64,128,128,64,128,64,10,15,30,11,0,0,26,0,44,0, + 0,0,12,0,12,0,18,0,18,0,18,0,33,0,33,0, + 127,128,64,128,64,128,128,64,128,64,10,15,30,11,0,0, + 18,0,18,0,0,0,12,0,12,0,18,0,18,0,18,0, + 33,0,33,0,127,128,64,128,64,128,128,64,128,64,10,15, + 30,11,0,0,12,0,18,0,18,0,12,0,12,0,18,0, + 18,0,18,0,33,0,33,0,127,128,64,128,64,128,128,64, + 128,64,14,12,24,16,0,0,7,252,9,0,9,0,17,0, + 17,0,33,252,33,0,127,0,65,0,65,0,129,0,129,252, + 10,16,32,12,1,252,15,0,48,128,64,64,64,0,128,0, + 128,0,128,0,128,0,64,0,64,64,48,128,15,0,4,0, + 4,0,18,0,12,0,8,16,16,11,1,0,32,48,8,0, + 255,128,128,128,128,255,128,128,128,128,128,255,8,16,16,11, + 1,0,4,12,16,0,255,128,128,128,128,255,128,128,128,128, + 128,255,8,16,16,11,1,0,16,56,68,0,255,128,128,128, + 128,255,128,128,128,128,128,255,8,15,15,11,1,0,36,36, + 0,255,128,128,128,128,255,128,128,128,128,128,255,3,16,16, + 4,0,0,128,192,32,0,64,64,64,64,64,64,64,64,64, + 64,64,64,3,16,16,4,0,0,32,96,128,0,64,64,64, + 64,64,64,64,64,64,64,64,64,5,16,16,4,255,0,32, + 112,136,0,32,32,32,32,32,32,32,32,32,32,32,32,3, + 15,15,4,0,0,160,160,0,64,64,64,64,64,64,64,64, + 64,64,64,64,12,12,24,12,0,0,63,0,32,192,32,32, + 32,32,32,16,248,16,32,16,32,16,32,32,32,32,32,192, + 63,0,9,15,30,12,1,0,26,0,44,0,0,0,128,128, + 192,128,160,128,160,128,144,128,136,128,136,128,132,128,130,128, + 130,128,129,128,128,128,11,16,32,13,1,0,8,0,12,0, + 2,0,0,0,14,0,49,128,64,64,64,64,128,32,128,32, + 128,32,128,32,64,64,64,64,49,128,14,0,11,16,32,13, + 1,0,1,0,3,0,4,0,0,0,14,0,49,128,64,64, + 64,64,128,32,128,32,128,32,128,32,64,64,64,64,49,128, + 14,0,11,16,32,13,1,0,4,0,14,0,17,0,0,0, + 14,0,49,128,64,64,64,64,128,32,128,32,128,32,128,32, + 64,64,64,64,49,128,14,0,11,15,30,13,1,0,13,0, + 22,0,0,0,14,0,49,128,64,64,64,64,128,32,128,32, + 128,32,128,32,64,64,64,64,49,128,14,0,11,15,30,13, + 1,0,17,0,17,0,0,0,14,0,49,128,64,64,64,64, + 128,32,128,32,128,32,128,32,64,64,64,64,49,128,14,0, + 8,8,8,10,1,0,129,66,36,24,24,36,66,129,11,14, + 28,13,1,255,0,64,14,128,49,128,65,64,66,64,130,32, + 132,32,132,32,136,32,72,64,80,64,49,128,46,0,64,0, + 9,16,32,12,1,0,32,0,48,0,8,0,0,0,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,9,16,32,12,1,0,2,0,6,0, + 8,0,0,0,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,65,0,62,0,9,16,32,12, + 1,0,8,0,28,0,34,0,0,0,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 62,0,9,15,30,12,1,0,34,0,34,0,0,0,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,9,16,32,11,1,0,2,0,6,0, + 8,0,0,0,128,128,65,0,65,0,34,0,34,0,20,0, + 28,0,8,0,8,0,8,0,8,0,8,0,8,12,12,11, + 2,0,128,128,252,130,129,129,130,252,128,128,128,128,7,12, + 12,10,2,0,120,132,130,130,132,188,134,130,130,130,132,184, + 8,13,13,9,1,0,32,48,8,0,124,130,2,6,122,130, + 130,134,123,8,13,13,9,1,0,4,12,16,0,124,130,2, + 6,122,130,130,134,123,8,13,13,9,1,0,16,56,68,0, + 124,130,2,6,122,130,130,134,123,8,12,12,9,1,0,52, + 88,0,124,130,2,6,122,130,130,134,123,8,12,12,9,1, + 0,40,40,0,124,130,2,6,122,130,130,134,123,8,13,13, + 9,1,0,16,40,16,0,124,130,2,6,122,130,130,134,123, + 13,9,18,15,1,0,124,224,131,16,2,8,6,8,123,248, + 130,0,130,8,135,16,120,224,7,13,13,8,1,252,56,68, + 130,128,128,128,130,68,56,16,16,72,48,7,13,13,9,1, + 0,64,96,16,0,56,68,130,130,254,128,130,68,56,7,13, + 13,9,1,0,8,24,32,0,56,68,130,130,254,128,130,68, + 56,7,13,13,9,1,0,16,56,68,0,56,68,130,130,254, + 128,130,68,56,7,12,12,9,1,0,40,40,0,56,68,130, + 130,254,128,130,68,56,3,13,13,4,1,0,128,192,32,0, + 64,64,64,64,64,64,64,64,64,3,13,13,4,1,0,32, + 96,128,0,64,64,64,64,64,64,64,64,64,5,13,13,4, + 0,0,32,112,136,0,32,32,32,32,32,32,32,32,32,3, + 12,12,4,1,0,160,160,0,64,64,64,64,64,64,64,64, + 64,7,12,12,9,1,0,72,48,88,60,68,130,130,130,130, + 130,68,56,7,12,12,9,1,0,52,88,0,188,194,130,130, + 130,130,130,130,130,7,13,13,9,1,0,32,48,8,0,56, + 68,130,130,130,130,130,68,56,7,13,13,9,1,0,8,24, + 32,0,56,68,130,130,130,130,130,68,56,7,13,13,9,1, + 0,16,56,68,0,56,68,130,130,130,130,130,68,56,7,12, + 12,9,1,0,52,88,0,56,68,130,130,130,130,130,68,56, + 7,12,12,9,1,0,40,40,0,56,68,130,130,130,130,130, + 68,56,7,9,9,10,1,0,16,16,0,0,254,0,0,16, + 16,7,10,10,10,1,0,2,60,68,138,146,146,162,162,68, + 184,7,13,13,9,1,0,32,48,8,0,130,130,130,130,130, + 130,130,134,122,7,13,13,9,1,0,4,12,16,0,130,130, + 130,130,130,130,130,134,122,7,13,13,9,1,0,16,56,68, + 0,130,130,130,130,130,130,130,134,122,7,12,12,9,1,0, + 40,40,0,130,130,130,130,130,130,130,134,122,7,16,16,8, + 0,253,8,24,32,0,130,130,68,68,40,40,56,16,16,32, + 32,192,7,16,16,9,1,252,128,128,128,184,196,130,130,130, + 130,130,196,184,128,128,128,128,7,15,15,8,0,253,40,40, + 0,130,130,68,68,40,40,56,16,16,32,32,192}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=13 h=16 x= 3 y=10 dx=17 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=26 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR12r[1907] U8G_SECTION(".progmem.u8g_font_helvR12r") = { + 0,20,26,254,250,12,2,91,5,99,32,127,252,13,252,12, + 252,0,0,0,5,0,1,1,12,12,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,128,4,4,4,6,1,8,144, + 144,144,144,8,11,11,9,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,15,15,9,1,254,16,124,146,146,144,80, + 48,24,20,18,146,146,124,16,16,12,12,24,14,0,0,112, + 64,136,128,136,128,137,0,114,0,2,0,4,0,4,224,9, + 16,17,16,17,16,32,224,10,12,24,11,0,0,24,0,36, + 0,66,0,66,0,36,0,24,0,41,0,69,0,130,0,131, + 0,68,128,56,64,2,4,4,3,0,8,192,192,64,64,3, + 16,16,6,1,252,32,64,64,64,128,128,128,128,128,128,128, + 128,64,64,64,32,3,16,16,6,1,252,128,64,64,64,32, + 32,32,32,32,32,32,32,64,64,64,128,5,5,5,6,0, + 7,32,168,112,80,136,9,9,18,10,0,0,8,0,8,0, + 8,0,8,0,255,128,8,0,8,0,8,0,8,0,2,4, + 4,4,1,254,64,64,64,128,4,1,1,5,0,4,240,1, + 2,2,4,2,0,128,128,4,12,12,5,0,0,16,16,32, + 32,32,32,64,64,64,128,128,128,7,12,12,9,1,0,56, + 68,68,130,130,130,130,130,130,68,68,56,3,12,12,9,3, + 0,32,32,96,160,32,32,32,32,32,32,32,32,7,12,12, + 9,1,0,56,68,130,130,2,4,8,48,64,128,128,254,7, + 12,12,9,1,0,56,68,130,130,4,56,4,2,130,130,68, + 56,8,12,12,9,0,0,12,20,20,36,36,68,68,132,255, + 4,4,4,7,12,12,9,1,0,62,32,32,64,120,68,2, + 2,2,130,68,56,7,12,12,9,1,0,60,66,130,128,184, + 196,130,130,130,130,68,56,8,12,12,9,0,0,255,1,2, + 4,4,8,8,16,16,16,32,32,7,12,12,9,1,0,56, + 68,130,130,68,56,68,130,130,130,68,56,7,12,12,9,1, + 0,56,68,130,130,130,130,70,58,2,130,132,120,1,9,9, + 4,2,0,128,128,0,0,0,0,0,128,128,2,11,11,4, + 1,254,64,64,0,0,0,0,0,64,64,64,128,9,9,18, + 10,0,0,1,128,6,0,24,0,96,0,128,0,96,0,24, + 0,6,0,1,128,8,4,4,10,0,2,255,0,0,255,9, + 9,18,10,1,0,192,0,48,0,12,0,3,0,0,128,3, + 0,12,0,48,0,192,0,7,12,12,9,1,0,56,68,130, + 130,2,4,8,16,16,0,16,16,13,14,28,17,1,254,7, + 128,24,96,32,16,67,208,76,72,136,72,144,136,144,136,144, + 144,153,144,78,96,64,0,48,96,15,128,10,12,24,11,0, + 0,12,0,12,0,18,0,18,0,18,0,33,0,33,0,127, + 128,64,128,64,128,128,64,128,64,9,12,24,11,1,0,252, + 0,130,0,129,0,129,0,130,0,254,0,129,0,128,128,128, + 128,128,128,129,0,254,0,10,12,24,12,1,0,15,0,48, + 128,64,64,64,0,128,0,128,0,128,0,128,0,64,0,64, + 64,48,128,15,0,10,12,24,12,1,0,252,0,131,0,128, + 128,128,128,128,64,128,64,128,64,128,64,128,128,128,128,131, + 0,252,0,8,12,12,11,1,0,255,128,128,128,128,255,128, + 128,128,128,128,255,7,12,12,10,1,0,254,128,128,128,128, + 254,128,128,128,128,128,128,10,12,24,13,1,0,14,0,49, + 128,64,64,64,0,128,0,128,0,135,192,128,64,64,64,64, + 192,49,64,14,64,9,12,24,12,1,0,128,128,128,128,128, + 128,128,128,128,128,255,128,128,128,128,128,128,128,128,128,128, + 128,128,128,1,12,12,4,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,6,12,12,8,0,0,4,4,4,4,4, + 4,4,4,132,132,132,120,8,12,12,11,1,0,129,130,132, + 136,144,176,200,136,132,130,130,129,7,12,12,9,1,0,128, + 128,128,128,128,128,128,128,128,128,128,254,11,12,24,13,1, + 0,128,32,192,96,192,96,160,160,160,160,160,160,145,32,145, + 32,145,32,138,32,138,32,132,32,9,12,24,12,1,0,128, + 128,192,128,160,128,160,128,144,128,136,128,136,128,132,128,130, + 128,130,128,129,128,128,128,11,12,24,13,1,0,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,8,12,12,11,2,0,252,130,129,129,130, + 252,128,128,128,128,128,128,11,13,26,13,1,255,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,66, + 64,49,128,14,128,0,64,9,12,24,12,2,0,252,0,130, + 0,129,0,129,0,130,0,252,0,130,0,129,0,129,0,129, + 0,129,0,128,128,9,12,24,11,1,0,62,0,65,0,128, + 128,128,128,64,0,48,0,14,0,1,0,128,128,128,128,65, + 0,62,0,9,12,24,10,0,0,255,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,9,12,24,12,1,0,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,62,0,10, + 12,24,11,0,0,128,64,128,64,64,128,64,128,64,128,33, + 0,33,0,18,0,18,0,18,0,12,0,12,0,13,12,24, + 15,1,0,130,8,130,8,130,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,16,64,8,12,12,11,1, + 0,129,66,66,36,36,24,24,36,36,66,66,129,9,12,24, + 11,1,0,128,128,65,0,65,0,34,0,34,0,20,0,28, + 0,8,0,8,0,8,0,8,0,8,0,9,12,24,10,0, + 0,127,128,1,0,3,0,2,0,4,0,12,0,8,0,16, + 0,48,0,32,0,64,0,255,128,3,15,15,5,1,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,224,4,12, + 12,5,0,0,128,128,64,64,64,64,32,32,32,16,16,16, + 3,15,15,5,0,253,224,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,7,7,7,8,0,5,16,40,40,68,68, + 130,130,9,1,2,9,0,253,255,128,3,3,3,6,0,10, + 128,192,32,8,9,9,9,1,0,124,130,2,6,122,130,130, + 134,123,7,12,12,9,1,0,128,128,128,184,196,130,130,130, + 130,130,196,184,7,9,9,8,1,0,56,68,130,128,128,128, + 130,68,56,7,12,12,9,1,0,2,2,2,58,70,130,130, + 130,130,130,70,58,7,9,9,9,1,0,56,68,130,130,254, + 128,130,68,56,4,12,12,5,1,0,48,64,64,240,64,64, + 64,64,64,64,64,64,7,13,13,9,1,252,58,70,130,130, + 130,130,130,70,58,2,130,132,120,7,12,12,9,1,0,128, + 128,128,188,194,130,130,130,130,130,130,130,1,12,12,3,1, + 0,128,128,0,128,128,128,128,128,128,128,128,128,3,16,16, + 4,255,252,32,32,0,32,32,32,32,32,32,32,32,32,32, + 32,32,192,7,12,12,8,0,0,128,128,128,132,136,144,160, + 224,144,136,132,130,1,12,12,3,1,0,128,128,128,128,128, + 128,128,128,128,128,128,128,11,9,18,14,2,0,185,192,198, + 32,132,32,132,32,132,32,132,32,132,32,132,32,132,32,7, + 9,9,9,1,0,188,194,130,130,130,130,130,130,130,7,9, + 9,9,1,0,56,68,130,130,130,130,130,68,56,7,13,13, + 9,1,252,184,196,130,130,130,130,130,196,184,128,128,128,128, + 7,13,13,9,1,252,58,70,130,130,130,130,130,70,58,2, + 2,2,2,4,9,9,5,1,0,176,192,128,128,128,128,128, + 128,128,6,9,9,8,1,0,120,132,132,192,48,12,132,132, + 120,4,11,11,5,1,0,64,64,240,64,64,64,64,64,64, + 64,48,7,9,9,9,1,0,130,130,130,130,130,130,130,134, + 122,7,9,9,8,0,0,130,130,68,68,68,40,40,56,16, + 11,9,18,12,0,0,132,32,132,32,68,64,78,64,74,64, + 42,128,42,128,17,0,17,0,7,9,9,8,0,0,130,68, + 68,40,16,40,68,68,130,7,12,12,8,0,253,130,130,68, + 68,40,40,56,16,16,32,32,192,6,9,9,8,1,0,252, + 4,8,16,32,32,64,128,252,3,16,16,6,1,252,32,64, + 64,64,64,64,64,128,64,64,64,64,64,64,64,32,1,16, + 16,4,1,252,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,16,16,6,1,252,128,64,64,64,64,64, + 64,32,64,64,64,64,64,64,64,128,8,2,2,10,1,4, + 113,142,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=12 dx=18 dy= 0 ascent=18 len=36 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR14[4920] U8G_SECTION(".progmem.u8g_font_helvR14") = { + 0,22,29,254,249,14,2,149,6,82,32,255,252,18,252,14, + 252,0,0,0,5,0,1,2,14,14,6,2,0,192,192,192, + 192,192,192,192,192,128,128,0,0,192,192,5,5,5,5,0, + 9,216,216,216,216,216,10,13,26,10,0,0,9,0,9,0, + 9,0,127,192,127,192,18,0,18,0,18,0,255,128,255,128, + 36,0,36,0,36,0,9,16,32,10,1,254,8,0,62,0, + 127,0,203,0,200,0,232,0,120,0,62,0,15,0,9,128, + 201,128,235,128,127,0,62,0,8,0,8,0,14,13,26,16, + 1,0,120,96,204,192,204,192,205,128,205,128,123,0,3,0, + 6,120,6,204,12,204,12,204,24,204,24,120,12,13,26,13, + 1,0,60,0,126,0,102,0,102,0,60,0,124,0,238,192, + 198,192,195,192,195,128,231,192,126,224,60,112,1,5,5,3, + 1,9,128,128,128,128,128,4,18,18,6,0,252,16,48,96, + 96,192,192,192,192,192,192,192,192,192,192,96,96,48,16,4, + 18,18,6,1,252,128,192,96,96,48,48,48,48,48,48,48, + 48,48,48,96,96,192,128,5,7,7,7,1,7,32,168,248, + 32,248,168,32,8,10,10,10,1,0,24,24,24,24,255,255, + 24,24,24,24,2,5,5,5,1,253,192,192,64,64,128,5, + 1,1,6,0,5,248,2,2,2,5,1,0,192,192,5,14, + 14,5,0,0,24,24,24,24,48,48,48,96,96,96,192,192, + 192,192,8,13,13,10,1,0,60,126,102,195,195,195,195,195, + 195,195,102,126,60,5,13,13,10,2,0,24,248,248,24,24, + 24,24,24,24,24,24,24,24,8,13,13,10,1,0,60,254, + 195,3,7,14,28,56,112,224,192,255,255,8,13,13,10,1, + 0,62,127,195,195,6,28,30,7,3,195,199,126,60,9,13, + 26,10,0,0,3,0,7,0,15,0,27,0,51,0,51,0, + 99,0,195,0,255,128,255,128,3,0,3,0,3,0,8,13, + 13,10,1,0,254,254,192,192,252,254,199,3,3,195,199,254, + 124,8,13,13,10,1,0,60,127,99,192,192,220,254,195,195, + 195,227,126,60,8,13,13,10,1,0,255,255,3,6,12,12, + 24,24,48,48,96,96,96,8,13,13,10,1,0,60,126,231, + 195,195,102,126,231,195,195,231,126,60,8,13,13,10,1,0, + 60,126,199,195,195,195,127,59,3,3,198,254,124,2,10,10, + 5,1,0,192,192,0,0,0,0,0,0,192,192,2,13,13, + 5,1,253,192,192,0,0,0,0,0,0,192,192,64,64,128, + 8,9,9,10,1,0,3,15,60,112,192,112,60,15,3,7, + 5,5,11,2,2,254,254,0,254,254,8,9,9,10,1,0, + 192,240,60,14,3,14,60,240,192,7,14,14,10,1,0,124, + 254,198,198,14,28,56,48,48,48,0,0,48,48,16,17,34, + 18,1,253,3,240,15,252,28,14,48,6,99,211,103,115,198, + 51,204,99,204,102,204,102,204,204,207,248,103,112,112,0,56, + 0,31,240,7,224,12,14,28,13,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,11,14,28,13,1,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,128,255,192,192,224,192, + 96,192,96,192,224,255,192,255,128,12,14,28,14,1,0,15, + 128,63,224,112,112,96,48,224,0,192,0,192,0,192,0,192, + 0,224,0,96,48,112,112,63,224,15,128,12,14,28,14,1, + 0,255,128,255,192,192,224,192,96,192,48,192,48,192,48,192, + 48,192,48,192,48,192,96,192,224,255,192,255,128,10,14,28, + 13,2,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,9, + 14,28,12,2,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,13,14,28,15,1,0,15,192,63,240,112,56,96,24,224, + 24,192,0,192,0,192,248,192,248,224,24,96,24,112,56,63, + 248,15,216,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,255,224,255,224,192,96,192,96,192,96,192, + 96,192,96,192,96,2,14,14,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,8,14,14,10,0,0,3, + 3,3,3,3,3,3,3,3,195,195,231,126,60,12,14,28, + 13,2,0,192,224,193,192,195,128,199,0,206,0,220,0,248, + 0,252,0,206,0,199,0,195,128,193,192,192,224,192,112,9, + 14,28,11,1,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,128,255, + 128,14,14,28,16,1,0,192,12,192,12,224,28,224,28,240, + 60,240,60,216,108,216,108,204,204,204,204,196,140,199,140,195, + 12,195,12,11,14,28,14,1,0,192,96,224,96,240,96,240, + 96,216,96,204,96,204,96,198,96,198,96,195,96,193,224,193, + 224,192,224,192,96,13,14,28,15,1,0,15,128,63,224,112, + 112,96,48,224,56,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,10,14,28,13,2,0,255,0,255, + 128,193,192,192,192,192,192,193,192,255,128,255,0,192,0,192, + 0,192,0,192,0,192,0,192,0,13,15,30,15,1,255,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,225,184,97,176,112,240,63,224,15,176,0,48,11,14,28, + 14,1,0,255,128,255,192,192,224,192,96,192,96,192,224,255, + 192,255,128,192,192,192,192,192,96,192,96,192,96,192,96,10, + 14,28,13,1,0,30,0,127,128,225,192,192,192,224,0,124, + 0,31,0,3,128,1,192,0,192,192,192,225,192,127,128,63, + 0,10,14,28,12,1,0,255,192,255,192,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,96, + 192,127,192,31,0,12,14,28,13,0,0,192,48,192,48,96, + 96,96,96,96,96,48,192,48,192,48,192,25,128,25,128,25, + 128,15,0,15,0,6,0,16,14,28,18,1,0,193,131,193, + 131,193,131,195,195,99,198,98,70,102,102,102,102,54,108,54, + 108,52,44,28,56,24,24,24,24,11,14,28,13,1,0,192, + 96,192,96,96,192,113,192,49,128,27,0,14,0,14,0,27, + 0,49,128,113,192,96,192,192,96,192,96,12,14,28,13,0, + 0,192,48,192,48,96,96,96,96,48,192,57,192,25,128,15, + 0,6,0,6,0,6,0,6,0,6,0,6,0,10,14,28, + 12,1,0,255,192,255,192,0,192,1,128,3,0,6,0,12, + 0,28,0,24,0,48,0,96,0,192,0,255,192,255,192,4, + 18,18,5,0,252,240,240,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,240,240,5,14,14,5,0,0,192,192,192, + 96,96,96,48,48,48,48,24,24,24,24,4,18,18,5,0, + 252,240,240,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,240,240,7,6,6,9,1,7,16,56,108,108,198,198,11, + 2,4,11,0,252,255,224,255,224,4,3,3,4,0,11,192, + 96,48,9,10,20,11,1,0,126,0,231,0,195,0,7,0, + 127,0,227,0,195,0,195,0,231,128,121,128,9,14,28,11, + 1,0,192,0,192,0,192,0,192,0,222,0,255,0,227,0, + 193,128,193,128,193,128,193,128,227,0,255,0,222,0,8,10, + 10,10,1,0,62,127,99,192,192,192,192,99,127,62,9,14, + 28,11,1,0,1,128,1,128,1,128,1,128,61,128,127,128, + 99,128,193,128,193,128,193,128,193,128,99,128,127,128,61,128, + 8,10,10,10,1,0,60,126,195,195,255,192,192,227,127,60, + 6,14,14,6,0,0,28,60,48,48,252,252,48,48,48,48, + 48,48,48,48,9,14,28,11,1,252,61,128,127,128,97,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 99,0,127,0,28,0,8,14,14,10,1,0,192,192,192,192, + 222,255,227,195,195,195,195,195,195,195,2,14,14,4,1,0, + 192,192,0,0,192,192,192,192,192,192,192,192,192,192,4,18, + 18,4,255,252,48,48,0,0,48,48,48,48,48,48,48,48, + 48,48,48,48,240,224,8,14,14,9,1,0,192,192,192,192, + 198,204,216,240,248,216,204,206,198,199,2,14,14,4,1,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,14,10, + 20,16,1,0,222,120,255,252,227,140,195,12,195,12,195,12, + 195,12,195,12,195,12,195,12,8,10,10,10,1,0,222,255, + 227,195,195,195,195,195,195,195,9,10,20,11,1,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,252,222,0,255,0,227,0,193,128, + 193,128,193,128,193,128,227,0,255,0,222,0,192,0,192,0, + 192,0,192,0,9,14,28,11,1,252,61,128,127,128,99,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 1,128,1,128,1,128,5,10,10,6,1,0,216,216,224,192, + 192,192,192,192,192,192,7,10,10,9,1,0,60,126,198,192, + 252,62,6,198,252,120,6,13,13,6,0,0,48,48,48,252, + 252,48,48,48,48,48,48,60,28,8,10,10,10,1,0,195, + 195,195,195,195,195,195,199,255,123,8,10,10,10,1,0,195, + 195,195,102,102,102,36,60,24,24,12,10,20,14,1,0,198, + 48,198,48,198,48,102,96,102,96,105,96,41,64,57,192,25, + 128,25,128,8,10,10,10,1,0,195,231,102,60,24,24,60, + 102,231,195,8,14,14,10,1,252,195,195,195,102,102,102,36, + 60,24,24,24,24,112,112,7,10,10,9,1,0,254,254,6, + 12,24,48,96,192,254,254,6,18,18,6,255,252,12,24,48, + 48,48,48,48,96,192,96,48,48,48,48,48,48,24,12,2, + 18,18,5,1,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,6,18,18,6,0,252,192,96,48, + 48,48,48,48,24,12,24,48,48,48,48,48,48,96,192,8, + 3,3,10,1,4,115,255,206,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,5,0,1,2, + 14,14,6,2,252,192,192,0,0,64,64,192,192,192,192,192, + 192,192,192,8,14,14,10,1,254,4,4,62,127,107,200,200, + 200,200,107,127,62,16,16,9,13,26,10,0,0,30,0,63, + 0,97,128,97,128,96,0,48,0,126,0,24,0,24,0,48, + 0,96,128,255,128,223,0,8,7,7,10,1,3,195,255,102, + 102,102,255,195,8,13,13,10,1,0,195,195,102,102,102,60, + 255,24,255,24,24,24,24,2,18,18,5,1,252,192,192,192, + 192,192,192,192,0,0,0,0,192,192,192,192,192,192,192,8, + 18,18,10,1,252,60,126,195,195,240,124,110,199,195,227,115, + 62,14,7,195,195,126,60,5,2,2,6,0,12,216,216,13, + 14,28,15,1,0,15,128,48,96,64,16,71,16,136,136,144, + 136,144,8,144,8,144,8,136,136,71,16,64,16,48,96,15, + 128,5,8,8,7,1,6,112,152,56,72,216,104,0,248,7, + 6,6,9,1,2,54,108,216,216,108,54,9,5,10,11,1, + 3,255,128,255,128,1,128,1,128,1,128,5,1,1,6,0, + 5,248,13,14,28,14,0,0,15,128,48,96,64,16,79,144, + 136,72,136,72,136,72,143,136,137,8,136,136,72,80,64,16, + 48,96,15,128,5,1,1,5,0,12,248,5,5,5,7,1, + 8,112,216,136,216,112,8,11,11,10,1,0,24,24,24,255, + 255,24,24,24,0,255,255,5,8,8,6,0,5,112,248,152, + 24,48,96,248,248,5,8,8,6,0,5,112,248,152,48,48, + 152,248,112,4,3,3,4,0,11,48,96,192,8,14,14,10, + 1,252,195,195,195,195,195,195,195,231,255,219,192,192,192,192, + 8,18,18,10,1,252,63,114,242,242,242,242,242,114,50,18, + 18,18,18,18,18,18,18,18,2,2,2,4,1,4,192,192, + 5,5,5,5,0,252,96,112,24,216,240,4,8,8,6,0, + 5,48,240,240,48,48,48,48,48,5,8,8,7,1,6,112, + 216,136,136,216,112,0,248,7,6,6,9,1,2,216,108,54, + 54,108,216,14,13,26,15,0,0,48,48,240,48,240,96,48, + 192,48,192,49,136,49,24,51,56,6,120,6,216,12,252,24, + 24,24,24,14,13,26,15,0,0,48,48,240,48,240,96,48, + 192,48,192,49,184,49,124,51,76,6,12,6,24,12,48,24, + 124,24,124,14,13,26,15,0,0,112,48,248,48,152,96,48, + 192,48,192,153,136,249,24,115,56,6,120,6,216,12,252,24, + 24,24,24,7,14,14,10,1,252,24,24,0,0,24,24,24, + 56,112,224,198,198,254,124,12,18,36,13,0,0,24,0,12, + 0,6,0,0,0,6,0,6,0,15,0,15,0,25,128,25, + 128,48,192,48,192,63,192,127,224,96,96,96,96,192,48,192, + 48,12,18,36,13,0,0,1,128,3,0,6,0,0,0,6, + 0,6,0,15,0,15,0,25,128,25,128,48,192,48,192,63, + 192,127,224,96,96,96,96,192,48,192,48,12,18,36,13,0, + 0,6,0,15,0,25,128,0,0,6,0,6,0,15,0,15, + 0,25,128,25,128,48,192,48,192,63,192,127,224,96,96,96, + 96,192,48,192,48,12,18,36,13,0,0,12,128,22,128,19, + 0,0,0,6,0,6,0,15,0,15,0,25,128,25,128,48, + 192,48,192,63,192,127,224,96,96,96,96,192,48,192,48,12, + 17,34,13,0,0,25,128,25,128,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,12,17,34,13,0,0,6,0,9, + 0,9,0,6,0,6,0,15,0,15,0,25,128,25,128,48, + 192,48,192,63,192,127,224,96,96,96,96,192,48,192,48,16, + 14,28,18,1,0,7,255,7,255,13,128,13,128,25,128,25, + 128,49,254,49,254,63,128,127,128,97,128,97,128,193,255,193, + 255,12,18,36,14,1,252,15,128,63,224,112,112,96,48,224, + 0,192,0,192,0,192,0,192,0,224,0,96,48,112,112,63, + 224,15,128,6,0,3,0,27,0,30,0,10,18,36,13,2, + 0,48,0,24,0,12,0,0,0,255,192,255,192,192,0,192, + 0,192,0,192,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,192,255,192,10,18,36,13,2,0,3,0,6,0,12, + 0,0,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,10, + 18,36,13,2,0,12,0,30,0,51,0,0,0,255,192,255, + 192,192,0,192,0,192,0,192,0,255,128,255,128,192,0,192, + 0,192,0,192,0,255,192,255,192,10,17,34,13,2,0,51, + 0,51,0,0,0,255,192,255,192,192,0,192,0,192,0,192, + 0,255,128,255,128,192,0,192,0,192,0,192,0,255,192,255, + 192,4,18,18,6,0,0,192,96,48,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,4,18,18,6,2,0,48, + 96,192,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,6,18,18,6,0,0,48,120,132,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,6,17,17,6,0,0,204, + 204,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 14,14,28,14,255,0,63,224,63,240,48,56,48,24,48,12, + 48,12,254,12,254,12,48,12,48,12,48,24,48,56,63,240, + 63,224,11,18,36,14,1,0,12,128,22,128,19,0,0,0, + 192,96,224,96,240,96,240,96,216,96,204,96,204,96,198,96, + 198,96,195,96,193,224,193,224,192,224,192,96,13,18,36,15, + 1,0,24,0,12,0,6,0,0,0,15,128,63,224,112,112, + 96,48,224,56,192,24,192,24,192,24,192,24,224,56,96,48, + 112,112,63,224,15,128,13,18,36,15,1,0,1,128,3,0, + 6,0,0,0,15,128,63,224,112,112,96,48,224,56,192,24, + 192,24,192,24,192,24,224,56,96,48,112,112,63,224,15,128, + 13,18,36,15,1,0,3,0,7,128,12,192,0,0,15,128, + 63,224,112,112,96,48,224,56,192,24,192,24,192,24,192,24, + 224,56,96,48,112,112,63,224,15,128,13,18,36,15,1,0, + 6,64,11,64,9,128,0,0,15,128,63,224,112,112,96,48, + 224,56,192,24,192,24,192,24,192,24,224,56,96,48,112,112, + 63,224,15,128,13,17,34,15,1,0,12,192,12,192,0,0, + 15,128,63,224,112,112,96,48,224,56,192,24,192,24,192,24, + 192,24,224,56,96,48,112,112,63,224,15,128,10,9,18,10, + 0,0,192,192,97,128,51,0,30,0,12,0,30,0,51,0, + 97,128,192,192,14,14,28,15,0,0,7,204,31,248,56,48, + 48,120,112,220,97,140,99,12,98,12,102,12,108,28,56,24, + 56,56,111,240,199,192,11,18,36,14,1,0,24,0,12,0, + 6,0,0,0,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,96,192,127,192,31,0, + 11,18,36,14,1,0,3,0,6,0,12,0,0,0,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,96,192,127,192,31,0,11,18,36,14,1,0, + 6,0,15,0,25,128,0,0,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,96,192, + 127,192,31,0,11,17,34,14,1,0,49,128,49,128,0,0, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,96,192,127,192,31,0,12,18,36,13, + 0,0,1,128,3,0,6,0,0,0,192,48,192,48,96,96, + 96,96,48,192,57,192,25,128,15,0,6,0,6,0,6,0, + 6,0,6,0,6,0,10,14,28,12,1,0,192,0,192,0, + 192,0,255,0,255,128,193,192,192,192,192,192,193,192,255,128, + 255,0,192,0,192,0,192,0,7,14,14,9,1,0,56,124, + 198,198,198,198,220,220,198,198,198,198,222,220,9,14,28,11, + 1,0,48,0,24,0,12,0,0,0,126,0,231,0,195,0, + 7,0,127,0,227,0,195,0,195,0,231,128,121,128,9,14, + 28,11,1,0,12,0,24,0,48,0,0,0,126,0,231,0, + 195,0,7,0,127,0,227,0,195,0,195,0,231,128,121,128, + 9,14,28,11,1,0,24,0,60,0,102,0,0,0,126,0, + 231,0,195,0,7,0,127,0,227,0,195,0,195,0,231,128, + 121,128,9,14,28,11,1,0,50,0,90,0,76,0,0,0, + 126,0,231,0,195,0,7,0,127,0,227,0,195,0,195,0, + 231,128,121,128,9,14,28,11,1,0,102,0,102,0,0,0, + 0,0,126,0,231,0,195,0,7,0,127,0,227,0,195,0, + 195,0,231,128,121,128,9,14,28,11,1,0,24,0,36,0, + 36,0,24,0,126,0,231,0,195,0,7,0,127,0,227,0, + 195,0,195,0,231,128,121,128,14,10,20,17,2,0,126,240, + 231,248,195,12,7,12,127,252,227,0,195,0,195,140,231,252, + 122,240,8,14,14,10,1,252,62,127,99,192,192,192,192,99, + 127,62,24,12,108,120,8,14,14,10,1,0,48,24,12,0, + 60,126,195,195,255,192,192,227,127,60,8,14,14,10,1,0, + 12,24,48,0,60,126,195,195,255,192,192,227,127,60,8,14, + 14,10,1,0,24,60,102,0,60,126,195,195,255,192,192,227, + 127,60,8,14,14,10,1,0,102,102,0,0,60,126,195,195, + 255,192,192,227,127,60,4,14,14,4,0,0,192,96,48,0, + 96,96,96,96,96,96,96,96,96,96,4,14,14,4,0,0, + 48,96,192,0,96,96,96,96,96,96,96,96,96,96,6,14, + 14,4,255,0,48,120,204,0,48,48,48,48,48,48,48,48, + 48,48,5,14,14,4,0,0,216,216,0,0,96,96,96,96, + 96,96,96,96,96,96,9,14,28,11,1,0,96,0,54,0, + 56,0,76,0,62,0,127,0,99,0,193,128,193,128,193,128, + 193,128,99,0,127,0,62,0,8,14,14,10,1,0,50,90, + 76,0,222,255,227,195,195,195,195,195,195,195,9,14,28,11, + 1,0,48,0,24,0,12,0,0,0,62,0,127,0,99,0, + 193,128,193,128,193,128,193,128,99,0,127,0,62,0,9,14, + 28,11,1,0,6,0,12,0,24,0,0,0,62,0,127,0, + 99,0,193,128,193,128,193,128,193,128,99,0,127,0,62,0, + 9,14,28,11,1,0,24,0,60,0,102,0,0,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,0,50,0,90,0,76,0,0,0, + 62,0,127,0,99,0,193,128,193,128,193,128,193,128,99,0, + 127,0,62,0,9,14,28,11,1,0,51,0,51,0,0,0, + 0,0,62,0,127,0,99,0,193,128,193,128,193,128,193,128, + 99,0,127,0,62,0,8,8,8,10,1,1,24,24,0,255, + 255,0,24,24,11,10,20,11,0,0,14,96,63,192,49,128, + 99,192,102,192,108,192,120,192,49,128,127,128,206,0,8,14, + 14,10,1,0,48,24,12,0,195,195,195,195,195,195,195,199, + 255,123,8,14,14,10,1,0,6,12,24,0,195,195,195,195, + 195,195,195,199,255,123,8,14,14,10,1,0,24,60,102,0, + 195,195,195,195,195,195,195,199,255,123,8,14,14,10,1,0, + 102,102,0,0,195,195,195,195,195,195,195,199,255,123,8,18, + 18,10,1,252,6,12,24,0,195,195,195,102,102,102,36,60, + 24,24,24,24,112,112,9,18,36,11,1,252,192,0,192,0, + 192,0,192,0,222,0,255,0,227,0,193,128,193,128,193,128, + 193,128,227,0,255,0,222,0,192,0,192,0,192,0,192,0, + 8,18,18,10,1,252,102,102,0,0,195,195,195,102,102,102, + 36,60,24,24,24,24,112,112}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=11 dx=18 dy= 0 ascent=14 len=34 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR14r[2281] U8G_SECTION(".progmem.u8g_font_helvR14r") = { + 0,22,29,254,249,14,2,149,6,82,32,127,252,14,252,14, + 252,0,0,0,5,0,1,2,14,14,6,2,0,192,192,192, + 192,192,192,192,192,128,128,0,0,192,192,5,5,5,5,0, + 9,216,216,216,216,216,10,13,26,10,0,0,9,0,9,0, + 9,0,127,192,127,192,18,0,18,0,18,0,255,128,255,128, + 36,0,36,0,36,0,9,16,32,10,1,254,8,0,62,0, + 127,0,203,0,200,0,232,0,120,0,62,0,15,0,9,128, + 201,128,235,128,127,0,62,0,8,0,8,0,14,13,26,16, + 1,0,120,96,204,192,204,192,205,128,205,128,123,0,3,0, + 6,120,6,204,12,204,12,204,24,204,24,120,12,13,26,13, + 1,0,60,0,126,0,102,0,102,0,60,0,124,0,238,192, + 198,192,195,192,195,128,231,192,126,224,60,112,1,5,5,3, + 1,9,128,128,128,128,128,4,18,18,6,0,252,16,48,96, + 96,192,192,192,192,192,192,192,192,192,192,96,96,48,16,4, + 18,18,6,1,252,128,192,96,96,48,48,48,48,48,48,48, + 48,48,48,96,96,192,128,5,7,7,7,1,7,32,168,248, + 32,248,168,32,8,10,10,10,1,0,24,24,24,24,255,255, + 24,24,24,24,2,5,5,5,1,253,192,192,64,64,128,5, + 1,1,6,0,5,248,2,2,2,5,1,0,192,192,5,14, + 14,5,0,0,24,24,24,24,48,48,48,96,96,96,192,192, + 192,192,8,13,13,10,1,0,60,126,102,195,195,195,195,195, + 195,195,102,126,60,5,13,13,10,2,0,24,248,248,24,24, + 24,24,24,24,24,24,24,24,8,13,13,10,1,0,60,254, + 195,3,7,14,28,56,112,224,192,255,255,8,13,13,10,1, + 0,62,127,195,195,6,28,30,7,3,195,199,126,60,9,13, + 26,10,0,0,3,0,7,0,15,0,27,0,51,0,51,0, + 99,0,195,0,255,128,255,128,3,0,3,0,3,0,8,13, + 13,10,1,0,254,254,192,192,252,254,199,3,3,195,199,254, + 124,8,13,13,10,1,0,60,127,99,192,192,220,254,195,195, + 195,227,126,60,8,13,13,10,1,0,255,255,3,6,12,12, + 24,24,48,48,96,96,96,8,13,13,10,1,0,60,126,231, + 195,195,102,126,231,195,195,231,126,60,8,13,13,10,1,0, + 60,126,199,195,195,195,127,59,3,3,198,254,124,2,10,10, + 5,1,0,192,192,0,0,0,0,0,0,192,192,2,13,13, + 5,1,253,192,192,0,0,0,0,0,0,192,192,64,64,128, + 8,9,9,10,1,0,3,15,60,112,192,112,60,15,3,7, + 5,5,11,2,2,254,254,0,254,254,8,9,9,10,1,0, + 192,240,60,14,3,14,60,240,192,7,14,14,10,1,0,124, + 254,198,198,14,28,56,48,48,48,0,0,48,48,16,17,34, + 18,1,253,3,240,15,252,28,14,48,6,99,211,103,115,198, + 51,204,99,204,102,204,102,204,204,207,248,103,112,112,0,56, + 0,31,240,7,224,12,14,28,13,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,11,14,28,13,1,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,128,255,192,192,224,192, + 96,192,96,192,224,255,192,255,128,12,14,28,14,1,0,15, + 128,63,224,112,112,96,48,224,0,192,0,192,0,192,0,192, + 0,224,0,96,48,112,112,63,224,15,128,12,14,28,14,1, + 0,255,128,255,192,192,224,192,96,192,48,192,48,192,48,192, + 48,192,48,192,48,192,96,192,224,255,192,255,128,10,14,28, + 13,2,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,9, + 14,28,12,2,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,13,14,28,15,1,0,15,192,63,240,112,56,96,24,224, + 24,192,0,192,0,192,248,192,248,224,24,96,24,112,56,63, + 248,15,216,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,255,224,255,224,192,96,192,96,192,96,192, + 96,192,96,192,96,2,14,14,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,8,14,14,10,0,0,3, + 3,3,3,3,3,3,3,3,195,195,231,126,60,12,14,28, + 13,2,0,192,224,193,192,195,128,199,0,206,0,220,0,248, + 0,252,0,206,0,199,0,195,128,193,192,192,224,192,112,9, + 14,28,11,1,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,128,255, + 128,14,14,28,16,1,0,192,12,192,12,224,28,224,28,240, + 60,240,60,216,108,216,108,204,204,204,204,196,140,199,140,195, + 12,195,12,11,14,28,14,1,0,192,96,224,96,240,96,240, + 96,216,96,204,96,204,96,198,96,198,96,195,96,193,224,193, + 224,192,224,192,96,13,14,28,15,1,0,15,128,63,224,112, + 112,96,48,224,56,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,10,14,28,13,2,0,255,0,255, + 128,193,192,192,192,192,192,193,192,255,128,255,0,192,0,192, + 0,192,0,192,0,192,0,192,0,13,15,30,15,1,255,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,225,184,97,176,112,240,63,224,15,176,0,48,11,14,28, + 14,1,0,255,128,255,192,192,224,192,96,192,96,192,224,255, + 192,255,128,192,192,192,192,192,96,192,96,192,96,192,96,10, + 14,28,13,1,0,30,0,127,128,225,192,192,192,224,0,124, + 0,31,0,3,128,1,192,0,192,192,192,225,192,127,128,63, + 0,10,14,28,12,1,0,255,192,255,192,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,96, + 192,127,192,31,0,12,14,28,13,0,0,192,48,192,48,96, + 96,96,96,96,96,48,192,48,192,48,192,25,128,25,128,25, + 128,15,0,15,0,6,0,16,14,28,18,1,0,193,131,193, + 131,193,131,195,195,99,198,98,70,102,102,102,102,54,108,54, + 108,52,44,28,56,24,24,24,24,11,14,28,13,1,0,192, + 96,192,96,96,192,113,192,49,128,27,0,14,0,14,0,27, + 0,49,128,113,192,96,192,192,96,192,96,12,14,28,13,0, + 0,192,48,192,48,96,96,96,96,48,192,57,192,25,128,15, + 0,6,0,6,0,6,0,6,0,6,0,6,0,10,14,28, + 12,1,0,255,192,255,192,0,192,1,128,3,0,6,0,12, + 0,28,0,24,0,48,0,96,0,192,0,255,192,255,192,4, + 18,18,5,0,252,240,240,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,240,240,5,14,14,5,0,0,192,192,192, + 96,96,96,48,48,48,48,24,24,24,24,4,18,18,5,0, + 252,240,240,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,240,240,7,6,6,9,1,7,16,56,108,108,198,198,11, + 2,4,11,0,252,255,224,255,224,4,3,3,4,0,11,192, + 96,48,9,10,20,11,1,0,126,0,231,0,195,0,7,0, + 127,0,227,0,195,0,195,0,231,128,121,128,9,14,28,11, + 1,0,192,0,192,0,192,0,192,0,222,0,255,0,227,0, + 193,128,193,128,193,128,193,128,227,0,255,0,222,0,8,10, + 10,10,1,0,62,127,99,192,192,192,192,99,127,62,9,14, + 28,11,1,0,1,128,1,128,1,128,1,128,61,128,127,128, + 99,128,193,128,193,128,193,128,193,128,99,128,127,128,61,128, + 8,10,10,10,1,0,60,126,195,195,255,192,192,227,127,60, + 6,14,14,6,0,0,28,60,48,48,252,252,48,48,48,48, + 48,48,48,48,9,14,28,11,1,252,61,128,127,128,97,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 99,0,127,0,28,0,8,14,14,10,1,0,192,192,192,192, + 222,255,227,195,195,195,195,195,195,195,2,14,14,4,1,0, + 192,192,0,0,192,192,192,192,192,192,192,192,192,192,4,18, + 18,4,255,252,48,48,0,0,48,48,48,48,48,48,48,48, + 48,48,48,48,240,224,8,14,14,9,1,0,192,192,192,192, + 198,204,216,240,248,216,204,206,198,199,2,14,14,4,1,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,14,10, + 20,16,1,0,222,120,255,252,227,140,195,12,195,12,195,12, + 195,12,195,12,195,12,195,12,8,10,10,10,1,0,222,255, + 227,195,195,195,195,195,195,195,9,10,20,11,1,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,252,222,0,255,0,227,0,193,128, + 193,128,193,128,193,128,227,0,255,0,222,0,192,0,192,0, + 192,0,192,0,9,14,28,11,1,252,61,128,127,128,99,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 1,128,1,128,1,128,5,10,10,6,1,0,216,216,224,192, + 192,192,192,192,192,192,7,10,10,9,1,0,60,126,198,192, + 252,62,6,198,252,120,6,13,13,6,0,0,48,48,48,252, + 252,48,48,48,48,48,48,60,28,8,10,10,10,1,0,195, + 195,195,195,195,195,195,199,255,123,8,10,10,10,1,0,195, + 195,195,102,102,102,36,60,24,24,12,10,20,14,1,0,198, + 48,198,48,198,48,102,96,102,96,105,96,41,64,57,192,25, + 128,25,128,8,10,10,10,1,0,195,231,102,60,24,24,60, + 102,231,195,8,14,14,10,1,252,195,195,195,102,102,102,36, + 60,24,24,24,24,112,112,7,10,10,9,1,0,254,254,6, + 12,24,48,96,192,254,254,6,18,18,6,255,252,12,24,48, + 48,48,48,48,96,192,96,48,48,48,48,48,48,24,12,2, + 18,18,5,1,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,6,18,18,6,0,252,192,96,48, + 48,48,48,48,24,12,24,48,48,48,48,48,48,96,192,8, + 3,3,10,1,4,115,255,206,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=16 dx=25 dy= 0 ascent=24 len=69 + Font Bounding box w=28 h=37 x=-3 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR18[7307] U8G_SECTION(".progmem.u8g_font_helvR18") = { + 0,28,37,253,248,19,4,37,9,49,32,255,251,24,251,19, + 251,0,0,0,6,0,1,2,19,19,6,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,128,128,0,0,192,192,192, + 6,6,6,8,1,13,204,204,204,204,204,68,11,17,34,14, + 2,0,12,192,12,192,12,192,25,128,255,224,255,224,25,128, + 25,128,51,0,51,0,255,224,255,224,51,0,51,0,102,0, + 102,0,102,0,11,22,44,13,1,254,6,0,6,0,31,128, + 63,192,118,224,102,96,102,96,102,0,118,0,62,0,62,0, + 15,128,7,192,6,224,6,96,198,96,198,96,230,224,127,192, + 63,128,6,0,6,0,19,18,54,22,1,0,0,6,0,60, + 12,0,126,12,0,195,24,0,195,24,0,195,48,0,195,48, + 0,126,96,0,60,96,0,0,192,0,0,199,128,1,143,192, + 1,152,96,3,24,96,3,24,96,6,24,96,6,15,192,4, + 7,128,14,18,36,17,2,0,15,0,31,128,57,192,48,192, + 48,192,48,192,25,128,15,0,30,0,63,24,115,152,97,216, + 192,240,192,96,192,240,225,216,127,156,30,0,2,6,6,6, + 2,13,192,192,192,192,192,64,5,24,24,8,2,251,24,24, + 48,48,96,96,96,192,192,192,192,192,192,192,192,192,192,96, + 96,96,48,48,24,24,5,24,24,8,1,251,192,192,96,96, + 48,48,48,24,24,24,24,24,24,24,24,24,24,48,48,48, + 96,96,192,192,7,7,7,10,1,12,16,16,214,124,56,108, + 68,12,12,24,14,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,2, + 6,6,6,2,253,192,192,192,64,64,128,6,2,2,8,1, + 6,252,252,2,3,3,6,2,0,192,192,192,7,19,19,7, + 0,0,6,4,12,12,8,24,24,16,16,48,48,32,96,96, + 64,192,192,128,128,11,18,36,13,1,0,31,0,63,128,113, + 192,96,192,96,192,224,224,192,96,192,96,192,96,192,96,192, + 96,192,96,224,224,96,192,96,192,113,192,63,128,31,0,6, + 18,18,13,2,0,12,12,28,252,252,12,12,12,12,12,12, + 12,12,12,12,12,12,12,11,18,36,13,1,0,30,0,127, + 128,97,192,192,192,192,96,192,96,0,224,0,192,1,192,3, + 128,15,0,28,0,56,0,112,0,224,0,192,0,255,224,255, + 224,11,18,36,13,1,0,31,0,127,128,97,128,192,192,192, + 192,192,192,0,192,1,128,15,0,15,192,0,192,0,96,0, + 96,192,96,192,192,97,192,127,128,31,0,11,18,36,13,1, + 0,1,128,3,128,3,128,7,128,15,128,13,128,25,128,57, + 128,49,128,97,128,225,128,193,128,255,224,255,224,1,128,1, + 128,1,128,1,128,11,18,36,13,1,0,127,192,127,192,96, + 0,96,0,96,0,96,0,126,0,127,128,113,192,0,192,0, + 224,0,96,0,96,192,224,192,192,225,192,127,128,30,0,11, + 18,36,13,1,0,15,0,63,192,112,192,96,96,224,96,192, + 0,192,0,207,0,223,128,241,192,224,192,192,96,192,96,192, + 96,224,224,113,192,127,192,31,0,11,18,36,13,1,0,255, + 224,255,224,0,224,0,192,1,128,1,128,3,0,3,0,6, + 0,6,0,12,0,12,0,28,0,24,0,24,0,56,0,48, + 0,48,0,11,18,36,13,1,0,14,0,63,128,49,128,96, + 192,96,192,96,192,49,128,31,0,63,128,113,192,96,192,192, + 96,192,96,192,96,192,96,96,192,127,192,31,0,11,18,36, + 13,1,0,31,0,127,192,113,192,224,192,192,96,192,96,192, + 96,192,96,224,224,113,224,127,96,30,96,0,96,0,224,192, + 192,225,192,127,128,30,0,2,14,14,6,2,0,192,192,192, + 0,0,0,0,0,0,0,0,192,192,192,2,17,17,6,2, + 253,192,192,192,0,0,0,0,0,0,0,0,192,192,192,64, + 64,128,12,12,24,15,1,1,0,48,0,240,3,192,15,0, + 60,0,224,0,224,0,60,0,15,0,3,192,0,240,0,48, + 10,5,10,15,2,5,255,192,255,192,0,0,255,192,255,192, + 12,12,24,15,1,1,192,0,240,0,60,0,15,0,3,192, + 0,112,0,112,3,192,15,0,60,0,240,0,192,0,10,19, + 38,12,1,0,31,0,127,128,113,192,224,192,192,192,193,192, + 1,128,3,128,7,0,6,0,12,0,12,0,12,0,12,0, + 0,0,0,0,12,0,12,0,12,0,22,23,69,25,2,252, + 0,255,0,3,255,192,15,1,224,28,0,112,56,0,24,48, + 0,24,96,115,12,96,251,12,193,199,12,195,134,12,195,6, + 12,198,6,12,198,12,28,198,12,24,198,12,56,231,28,112, + 99,247,224,113,227,128,56,0,0,28,0,0,15,3,0,7, + 255,0,0,252,0,15,19,38,17,1,0,3,128,3,128,6, + 192,6,192,12,64,12,96,12,96,24,48,24,48,24,48,48, + 24,63,248,63,248,96,12,96,12,96,12,192,6,192,6,192, + 6,14,19,38,17,2,0,255,192,255,240,192,112,192,24,192, + 24,192,24,192,24,192,48,255,224,255,240,192,24,192,12,192, + 12,192,12,192,12,192,28,192,120,255,240,255,192,15,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,15,19,38,18,2,0,255, + 192,255,240,192,120,192,28,192,12,192,14,192,6,192,6,192, + 6,192,6,192,6,192,6,192,6,192,14,192,12,192,28,192, + 120,255,240,255,192,12,19,38,16,2,0,255,240,255,240,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,255,224,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,240,255, + 240,11,19,38,14,2,0,255,224,255,224,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,255,192,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,16,19,38, + 19,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,127,192,127,192,3,192,3,224,3,96, + 7,112,15,60,63,31,251,7,227,14,19,38,18,2,0,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,255, + 252,255,252,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,2,19,19,8,3,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,192,192, + 192,192,192,192,97,128,127,128,63,0,13,19,38,18,3,0, + 192,56,192,112,192,224,193,192,195,128,199,0,206,0,220,0, + 252,0,254,0,231,0,195,128,193,128,193,192,192,224,192,96, + 192,112,192,56,192,24,11,19,38,14,2,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,255,224, + 255,224,17,19,57,21,2,0,192,1,128,224,3,128,224,3, + 128,240,7,128,240,7,128,216,13,128,216,13,128,216,13,128, + 204,25,128,204,25,128,204,25,128,198,49,128,198,49,128,198, + 49,128,195,97,128,195,97,128,195,97,128,193,193,128,193,193, + 128,14,19,38,18,2,0,224,12,240,12,240,12,216,12,220, + 12,204,12,206,12,198,12,199,12,195,12,195,140,193,140,193, + 204,192,204,192,236,192,108,192,60,192,60,192,28,16,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,13,19,38,16,2,0,255, + 224,255,240,192,48,192,24,192,24,192,24,192,24,192,48,255, + 240,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,19,38,18,1,0,7,224,31,248,60, + 60,112,14,96,6,224,7,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,224,7,96,230,112,126,60,28,31,254,7, + 231,13,19,38,17,2,0,255,224,255,240,192,48,192,24,192, + 24,192,24,192,24,192,48,255,240,255,224,192,112,192,48,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,13,19,38, + 16,2,0,15,128,63,224,96,96,192,48,192,48,192,0,224, + 0,124,0,63,128,7,224,0,240,0,56,0,24,0,24,192, + 24,192,56,240,112,127,224,31,128,14,19,38,16,1,0,255, + 252,255,252,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,14,19,38,18,2,0,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,96,24,112,56,63,240,15, + 192,15,19,38,17,1,0,192,6,192,6,224,14,96,12,112, + 28,48,24,48,24,56,56,24,48,24,48,28,112,12,96,12, + 96,14,224,6,192,6,192,3,128,3,128,3,128,20,19,57, + 22,1,0,192,96,48,192,96,48,192,96,48,192,240,48,96, + 240,96,97,152,96,97,152,96,97,152,96,97,152,96,49,152, + 192,51,12,192,51,12,192,51,12,192,27,13,128,27,13,128, + 30,7,128,14,7,0,12,3,0,12,3,0,15,19,38,17, + 1,0,192,6,224,14,112,28,48,24,24,48,28,112,14,224, + 7,192,3,128,3,128,7,192,14,224,12,96,28,112,56,56, + 48,24,96,12,224,14,192,6,14,19,38,16,1,0,192,12, + 224,28,96,24,112,56,48,48,56,112,24,96,28,224,12,192, + 15,192,7,128,7,128,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,13,19,38,15,1,0,255,248,255,248,0,56, + 0,112,0,224,1,192,1,192,3,128,7,0,7,0,14,0, + 28,0,28,0,56,0,112,0,112,0,224,0,255,248,255,248, + 4,24,24,7,2,251,240,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,240,8,19, + 19,7,0,0,192,64,64,96,32,32,48,16,16,16,24,8, + 8,12,4,4,6,2,3,4,24,24,7,1,251,240,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,240,240,10,9,18,12,1,10,12,0,12,0,30, + 0,18,0,51,0,97,128,97,128,192,192,192,192,14,2,4, + 14,0,251,255,252,255,252,5,4,4,7,1,15,192,96,48, + 24,11,14,28,13,1,0,31,0,63,128,97,192,96,192,0, + 192,7,192,63,192,120,192,224,192,192,192,193,192,227,192,126, + 224,60,96,11,19,38,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,223,128,241,192,224,192,192,224,192,96,192, + 96,192,96,192,96,192,224,224,192,241,192,223,128,207,0,10, + 14,28,12,1,0,31,0,63,128,113,192,96,192,224,0,192, + 0,192,0,192,0,192,0,224,0,96,192,113,192,63,128,31, + 0,11,19,38,14,1,0,0,96,0,96,0,96,0,96,0, + 96,30,96,63,96,113,224,96,224,224,96,192,96,192,96,192, + 96,192,96,224,96,96,224,113,224,63,96,30,96,11,14,28, + 13,1,0,14,0,63,128,113,192,96,192,192,96,192,96,255, + 224,255,224,192,0,192,0,96,96,112,224,63,192,15,0,6, + 19,19,8,1,0,28,60,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,48,48,11,19,38,14,1,251,30,96, + 63,96,113,224,96,224,224,96,192,96,192,96,192,96,192,96, + 224,96,96,224,113,224,63,96,30,96,0,96,192,96,224,192, + 127,192,31,0,10,19,38,13,2,0,192,0,192,0,192,0, + 192,0,192,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 2,19,19,6,2,0,192,192,192,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,4,24,24,6,0,251,48, + 48,48,0,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,224,10,19,38,12,2,0,192,0,192, + 0,192,0,192,0,192,0,193,128,195,128,199,0,206,0,220, + 0,248,0,252,0,206,0,198,0,199,0,195,128,193,128,193, + 192,192,192,2,19,19,6,2,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,16,14,28,20, + 2,0,206,60,255,126,227,199,193,131,193,131,193,131,193,131, + 193,131,193,131,193,131,193,131,193,131,193,131,193,131,10,14, + 28,14,2,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 11,14,28,13,1,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,63,128, + 31,0,11,19,38,14,2,251,207,0,223,128,241,192,224,192, + 192,224,192,96,192,96,192,96,192,96,192,224,224,192,241,192, + 223,128,207,0,192,0,192,0,192,0,192,0,192,0,11,19, + 38,14,1,251,30,96,63,96,113,224,96,224,224,96,192,96, + 192,96,192,96,192,96,224,96,96,224,113,224,63,96,30,96, + 0,96,0,96,0,96,0,96,0,96,6,14,14,9,2,0, + 204,220,248,240,224,192,192,192,192,192,192,192,192,192,10,14, + 28,12,1,0,63,0,127,128,225,192,192,192,192,0,248,0, + 127,0,15,128,1,192,192,192,192,192,225,192,127,128,63,0, + 6,18,18,8,1,0,48,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,60,28,10,14,28,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,193,192,99,192,126,192,28,192,11,14,28,13,1,0, + 192,96,192,96,192,96,96,192,96,192,113,192,49,128,49,128, + 27,0,27,0,27,0,14,0,14,0,14,0,18,14,42,18, + 0,0,192,192,192,192,192,192,97,225,128,97,225,128,97,225, + 128,49,35,0,51,51,0,51,51,0,27,54,0,26,22,0, + 30,30,0,14,28,0,12,12,0,12,12,0,10,14,28,12, + 1,0,192,192,225,192,97,128,51,0,30,0,30,0,12,0, + 30,0,30,0,51,0,115,128,97,128,192,192,192,192,12,19, + 38,13,0,251,192,48,192,48,96,48,112,96,48,96,56,224, + 24,192,24,192,13,128,13,128,7,128,7,0,3,0,3,0, + 6,0,6,0,12,0,60,0,56,0,10,14,28,12,1,0, + 255,192,255,192,1,128,3,0,7,0,14,0,12,0,28,0, + 56,0,48,0,96,0,224,0,255,192,255,192,6,24,24,8, + 1,251,12,24,48,48,48,48,48,48,48,48,96,192,192,96, + 48,48,48,48,48,48,48,48,24,12,1,24,24,6,2,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,24,24,8,1,251,192,96, + 48,48,48,48,48,48,48,48,24,12,12,24,48,48,48,48, + 48,48,48,48,96,192,10,4,8,14,2,5,112,192,252,192, + 207,192,195,128,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,6,0,1,2,19,19,6,2, + 251,192,192,192,0,0,64,64,192,192,192,192,192,192,192,192, + 192,192,192,192,10,18,36,13,1,254,1,128,1,128,31,0, + 63,128,115,192,102,192,198,0,204,0,204,0,204,0,216,0, + 216,0,216,192,113,192,127,128,63,0,96,0,96,0,12,18, + 36,14,1,0,31,128,63,224,112,112,96,48,96,0,112,0, + 48,0,24,0,255,128,255,128,24,0,24,0,24,0,48,0, + 48,0,103,48,255,240,240,224,11,12,24,13,1,3,192,96, + 238,224,127,192,49,128,96,192,96,192,96,192,96,192,49,128, + 127,192,238,224,192,96,14,18,36,14,0,0,224,28,96,24, + 112,56,48,48,56,112,24,96,28,224,12,192,63,240,63,240, + 3,0,63,240,63,240,3,0,3,0,3,0,3,0,3,0, + 2,24,24,6,2,251,192,192,192,192,192,192,192,192,192,192, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,11,24, + 48,13,1,251,31,0,63,128,113,192,96,192,112,192,56,0, + 28,0,126,0,231,0,195,128,193,192,192,192,96,96,112,96, + 56,96,28,192,15,128,7,0,3,128,97,192,96,192,113,192, + 63,128,31,0,6,2,2,8,1,16,204,204,19,19,57,19, + 1,0,3,248,0,14,14,0,48,1,128,96,0,192,65,240, + 64,195,24,96,134,12,32,132,0,32,132,0,32,132,0,32, + 132,0,32,134,12,32,195,24,96,65,240,64,96,0,192,48, + 1,128,24,3,0,14,14,0,3,248,0,7,12,12,9,1, + 7,120,204,204,28,108,204,204,220,118,0,254,254,9,8,16, + 14,2,3,25,128,51,0,102,0,204,0,204,0,102,0,51, + 0,25,128,13,8,16,15,1,2,255,248,255,248,0,24,0, + 24,0,24,0,24,0,24,0,24,6,2,2,8,1,6,252, + 252,18,19,57,19,1,0,7,248,0,28,14,0,48,3,0, + 96,1,128,67,240,128,194,24,192,130,8,64,130,8,64,130, + 8,64,130,16,64,131,240,64,130,32,64,130,16,64,194,16, + 192,66,8,128,96,1,128,48,3,0,28,14,0,7,248,0, + 6,2,2,8,1,16,252,252,8,7,7,9,0,11,60,102, + 195,195,195,102,60,12,13,26,14,1,0,6,0,6,0,6, + 0,6,0,255,240,255,240,6,0,6,0,6,0,6,0,0, + 0,255,240,255,240,7,10,10,7,0,8,60,126,198,6,12, + 24,48,96,254,254,7,10,10,7,0,8,124,254,198,6,60, + 60,6,198,254,124,5,4,4,7,1,15,24,48,96,192,10, + 19,38,14,2,251,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,193,192,227,192,254,192,220, + 192,192,0,192,0,192,0,192,0,192,0,10,24,48,12,1, + 251,31,192,127,192,125,128,253,128,253,128,253,128,253,128,253, + 128,253,128,125,128,125,128,61,128,13,128,13,128,13,128,13, + 128,13,128,13,128,13,128,13,128,13,128,13,128,13,128,13, + 128,2,3,3,6,2,6,192,192,192,5,6,6,7,1,251, + 96,112,24,24,248,112,4,10,10,7,0,8,48,48,240,240, + 48,48,48,48,48,48,7,12,12,9,1,7,56,108,198,198, + 198,198,198,108,56,0,254,254,9,8,16,14,3,3,204,0, + 102,0,51,0,25,128,25,128,51,0,102,0,204,0,18,18, + 54,19,1,0,48,24,0,48,24,0,240,48,0,240,48,0, + 48,96,0,48,96,0,48,192,0,48,192,0,49,131,0,49, + 135,0,3,15,0,3,15,0,6,27,0,6,51,0,12,127, + 192,12,127,192,24,3,0,24,3,0,18,18,54,19,1,0, + 48,24,0,48,24,0,240,48,0,240,48,0,48,96,0,48, + 96,0,48,192,0,48,192,0,49,135,128,49,143,192,3,24, + 192,3,0,192,6,1,128,6,3,0,12,6,0,12,12,0, + 24,31,192,24,31,192,19,18,54,19,0,0,124,12,0,254, + 12,0,198,24,0,6,24,0,60,48,0,60,48,0,6,96, + 0,198,96,0,254,193,128,124,195,128,1,135,128,1,135,128, + 3,13,128,3,25,128,6,63,224,6,63,224,12,1,128,12, + 1,128,10,19,38,12,1,251,12,0,12,0,12,0,0,0, + 0,0,12,0,12,0,12,0,12,0,24,0,56,0,112,0, + 96,0,224,192,192,192,193,192,227,128,127,128,62,0,15,24, + 48,17,1,0,12,0,6,0,3,0,1,128,0,0,3,128, + 3,128,6,192,6,192,12,64,12,96,12,96,24,48,24,48, + 24,48,48,24,63,248,63,248,96,12,96,12,96,12,192,6, + 192,6,192,6,15,24,48,17,1,0,0,96,0,192,1,128, + 3,0,0,0,3,128,3,128,6,192,6,192,12,64,12,96, + 12,96,24,48,24,48,24,48,48,24,63,248,63,248,96,12, + 96,12,96,12,192,6,192,6,192,6,15,24,48,17,1,0, + 1,128,3,192,6,96,12,48,0,0,3,128,3,128,6,192, + 6,192,12,64,12,96,12,96,24,48,24,48,24,48,48,24, + 63,248,63,248,96,12,96,12,96,12,192,6,192,6,192,6, + 15,23,46,17,1,0,7,16,13,176,8,224,0,0,3,128, + 3,128,6,192,6,192,12,64,12,96,12,96,24,48,24,48, + 24,48,48,24,63,248,63,248,96,12,96,12,96,12,192,6, + 192,6,192,6,15,23,46,17,1,0,12,96,12,96,0,0, + 0,0,3,128,3,128,6,192,6,192,12,64,12,96,12,96, + 24,48,24,48,24,48,48,24,63,248,63,248,96,12,96,12, + 96,12,192,6,192,6,192,6,15,24,48,17,1,0,3,128, + 4,64,4,64,3,128,0,0,3,128,3,128,6,192,6,192, + 12,64,12,96,12,96,24,48,24,48,24,48,48,24,63,248, + 63,248,96,12,96,12,96,12,192,6,192,6,192,6,21,19, + 57,23,1,0,3,255,248,3,255,248,6,96,0,6,96,0, + 12,96,0,12,96,0,12,96,0,24,96,0,24,127,248,24, + 127,248,48,96,0,63,224,0,63,224,0,96,96,0,96,96, + 0,96,96,0,192,96,0,192,127,248,192,127,248,15,24,48, + 18,1,251,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,1,128,0,192,0,192,7, + 192,3,128,12,24,48,16,2,0,48,0,24,0,12,0,6, + 0,0,0,255,240,255,240,192,0,192,0,192,0,192,0,192, + 0,192,0,255,224,255,224,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,255,240,255,240,12,24,48,16,2,0,1, + 128,3,0,6,0,12,0,0,0,255,240,255,240,192,0,192, + 0,192,0,192,0,192,0,192,0,255,224,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,240,255,240,12, + 24,48,16,2,0,6,0,15,0,25,128,48,192,0,0,255, + 240,255,240,192,0,192,0,192,0,192,0,192,0,192,0,255, + 224,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,240,255,240,12,23,46,16,2,0,24,192,24,192,0, + 0,0,0,255,240,255,240,192,0,192,0,192,0,192,0,192, + 0,192,0,255,224,255,224,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,255,240,255,240,5,24,24,8,1,0,192, + 96,48,24,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,5,24,24,8,2,0,24,48,96, + 192,0,96,96,96,96,96,96,96,96,96,96,96,96,96,96, + 96,96,96,96,96,8,24,24,8,0,0,24,60,102,195,0, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,6,23,23,8,1,0,204,204,0,0,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 18,19,57,18,255,0,31,248,0,31,254,0,24,15,0,24, + 3,128,24,1,128,24,1,192,24,0,192,24,0,192,255,128, + 192,255,128,192,24,0,192,24,0,192,24,0,192,24,1,192, + 24,1,128,24,3,128,24,15,0,31,254,0,31,248,0,14, + 23,46,18,2,0,14,32,27,96,17,192,0,0,224,12,240, + 12,240,12,216,12,220,12,204,12,206,12,198,12,199,12,195, + 12,195,140,193,140,193,204,192,204,192,236,192,108,192,60,192, + 60,192,28,16,24,48,18,1,0,12,0,6,0,3,0,1, + 128,0,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,16,24,48,18,1,0,0, + 48,0,96,0,192,1,128,0,0,7,224,31,248,60,60,112, + 14,96,6,224,7,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,224,7,96,6,112,14,60,60,31,248,7,224,16, + 24,48,18,1,0,0,192,1,224,3,48,6,24,0,0,7, + 224,31,248,60,60,112,14,96,6,224,7,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,224,7,96,6,112,14,60, + 60,31,248,7,224,16,23,46,18,1,0,3,136,6,216,4, + 112,0,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,16,23,46,18,1,0,6, + 48,6,48,0,0,0,0,7,224,31,248,60,60,112,14,96, + 6,224,7,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,224,7,96,6,112,14,60,60,31,248,7,224,13,12,24, + 14,0,1,192,24,96,48,48,96,24,192,13,128,7,0,7, + 0,13,128,24,192,48,96,96,48,192,24,18,19,57,18,0, + 0,3,240,192,15,253,192,30,31,128,56,7,0,48,15,0, + 112,29,128,96,57,128,96,113,128,96,225,128,97,193,128,99, + 129,128,103,1,128,110,1,128,124,3,128,56,3,0,56,7, + 0,126,30,0,239,252,0,195,240,0,14,24,48,18,2,0, + 24,0,12,0,6,0,3,0,0,0,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,112,56,63,240,15,192, + 14,24,48,18,2,0,0,96,0,192,1,128,3,0,0,0, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 112,56,63,240,15,192,14,24,48,18,2,0,3,0,7,128, + 12,192,24,96,0,0,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,96,24,112,56,63,240,15,192,14,23,46,18, + 2,0,24,192,24,192,0,0,0,0,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,112,56,63,240,15,192, + 14,24,48,16,1,0,0,96,0,192,1,128,3,0,0,0, + 192,12,224,28,96,24,112,56,48,48,56,112,24,96,28,224, + 12,192,15,192,7,128,7,128,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,13,19,38,16,2,0,192,0,192,0, + 192,0,192,0,255,224,255,240,192,48,192,24,192,24,192,24, + 192,24,192,48,255,240,255,224,192,0,192,0,192,0,192,0, + 192,0,10,19,38,15,3,0,28,0,127,0,227,0,193,128, + 193,128,193,128,195,0,199,0,206,0,207,0,195,128,193,128, + 192,192,192,192,192,192,193,128,195,128,207,0,206,0,11,19, + 38,13,1,0,24,0,12,0,6,0,3,0,0,0,31,0, + 63,128,97,192,96,192,0,192,7,192,63,192,120,192,224,192, + 192,192,193,192,227,192,126,224,60,96,11,19,38,13,1,0, + 1,128,3,0,6,0,12,0,0,0,31,0,63,128,97,192, + 96,192,0,192,7,192,63,192,120,192,224,192,192,192,193,192, + 227,192,126,224,60,96,11,19,38,13,1,0,12,0,30,0, + 51,0,97,128,0,0,31,0,63,128,97,192,96,192,0,192, + 7,192,63,192,120,192,224,192,192,192,193,192,227,192,126,224, + 60,96,11,18,36,13,1,0,28,64,54,192,35,128,0,0, + 31,0,63,128,97,192,96,192,0,192,7,192,63,192,120,192, + 224,192,192,192,193,192,227,192,126,224,60,96,11,18,36,13, + 1,0,51,0,51,0,0,0,0,0,31,0,63,128,97,192, + 96,192,0,192,7,192,63,192,120,192,224,192,192,192,193,192, + 227,192,126,224,60,96,11,19,38,13,1,0,6,0,9,0, + 9,0,6,0,0,0,31,0,63,128,97,192,96,192,0,192, + 7,192,63,192,120,192,224,192,192,192,193,192,227,192,126,224, + 60,96,19,14,42,21,1,0,31,14,0,63,191,128,97,241, + 192,96,224,192,0,192,96,7,192,96,63,255,224,120,255,224, + 224,192,0,192,192,0,193,224,96,227,240,224,126,63,192,60, + 15,0,10,19,38,12,1,251,31,0,63,128,113,192,96,192, + 224,0,192,0,192,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,12,0,6,0,6,0,62,0,28,0,11,19, + 38,13,1,0,24,0,12,0,6,0,3,0,0,0,14,0, + 63,128,113,192,96,192,192,96,192,96,255,224,255,224,192,0, + 192,0,96,96,112,224,63,192,15,0,11,19,38,13,1,0, + 3,0,6,0,12,0,24,0,0,0,14,0,63,128,113,192, + 96,192,192,96,192,96,255,224,255,224,192,0,192,0,96,96, + 112,224,63,192,15,0,11,19,38,13,1,0,12,0,30,0, + 51,0,97,128,0,0,14,0,63,128,113,192,96,192,192,96, + 192,96,255,224,255,224,192,0,192,0,96,96,112,224,63,192, + 15,0,11,18,36,13,1,0,51,0,51,0,0,0,0,0, + 14,0,63,128,113,192,96,192,192,96,192,96,255,224,255,224, + 192,0,192,0,96,96,112,224,63,192,15,0,5,19,19,6, + 0,0,192,96,48,24,0,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,5,19,19,6,1,0,24,48,96,192,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,96,8,19, + 19,6,255,0,24,60,102,195,0,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,6,18,18,6,0,0,204,204,0, + 0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,11, + 19,38,13,1,0,96,0,57,128,14,0,30,0,99,0,31, + 128,63,128,113,192,96,192,224,224,192,96,192,96,192,96,192, + 96,224,224,96,192,113,192,63,128,31,0,10,18,36,14,2, + 0,56,128,109,128,71,0,0,0,206,0,223,128,241,128,224, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,19,38,13,1,0,24,0,12,0,6, + 0,3,0,0,0,31,0,63,128,113,192,96,192,224,224,192, + 96,192,96,192,96,192,96,224,224,96,192,113,192,63,128,31, + 0,11,19,38,13,1,0,3,0,6,0,12,0,24,0,0, + 0,31,0,63,128,113,192,96,192,224,224,192,96,192,96,192, + 96,192,96,224,224,96,192,113,192,63,128,31,0,11,19,38, + 13,1,0,12,0,30,0,51,0,97,128,0,0,31,0,63, + 128,113,192,96,192,224,224,192,96,192,96,192,96,192,96,224, + 224,96,192,113,192,63,128,31,0,11,18,36,13,1,0,28, + 64,54,192,35,128,0,0,31,0,63,128,113,192,96,192,224, + 224,192,96,192,96,192,96,192,96,224,224,96,192,113,192,63, + 128,31,0,11,18,36,13,1,0,51,0,51,0,0,0,0, + 0,31,0,63,128,113,192,96,192,224,224,192,96,192,96,192, + 96,192,96,224,224,96,192,113,192,63,128,31,0,12,12,24, + 14,1,1,6,0,6,0,6,0,0,0,0,0,255,240,255, + 240,0,0,0,0,6,0,6,0,6,0,13,14,28,13,0, + 0,15,152,31,248,56,112,48,224,113,240,99,176,99,48,102, + 48,108,48,124,112,56,96,112,224,255,192,207,128,10,19,38, + 14,2,0,48,0,24,0,12,0,6,0,0,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,193,192,99,192,126,192,28,192,10,19,38,14,2,0,3, + 0,6,0,12,0,24,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,193,192,99, + 192,126,192,28,192,10,19,38,14,2,0,12,0,30,0,51, + 0,97,128,0,0,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,193,192,99,192,126,192,28, + 192,10,18,36,14,2,0,51,0,51,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,193,192,99,192,126,192,28,192,12,24,48,13,0, + 251,0,192,1,128,3,0,6,0,0,0,192,48,192,48,96, + 48,112,96,48,96,56,224,24,192,24,192,13,128,13,128,7, + 128,7,0,3,0,3,0,6,0,6,0,12,0,60,0,56, + 0,11,24,48,14,2,251,192,0,192,0,192,0,192,0,192, + 0,207,0,223,128,241,192,224,192,192,224,192,96,192,96,192, + 96,192,96,192,224,224,192,241,192,223,128,207,0,192,0,192, + 0,192,0,192,0,192,0,12,23,46,13,0,251,25,128,25, + 128,0,0,0,0,192,48,192,48,96,48,112,96,48,96,56, + 224,24,192,24,192,13,128,13,128,7,128,7,0,3,0,3, + 0,6,0,6,0,12,0,60,0,56,0}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=15 dx=25 dy= 0 ascent=20 len=69 + Font Bounding box w=28 h=37 x=-3 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR18r[3381] U8G_SECTION(".progmem.u8g_font_helvR18r") = { + 0,28,37,253,248,19,4,37,9,49,32,127,251,20,251,19, + 251,0,0,0,6,0,1,2,19,19,6,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,128,128,0,0,192,192,192, + 6,6,6,8,1,13,204,204,204,204,204,68,11,17,34,14, + 2,0,12,192,12,192,12,192,25,128,255,224,255,224,25,128, + 25,128,51,0,51,0,255,224,255,224,51,0,51,0,102,0, + 102,0,102,0,11,22,44,13,1,254,6,0,6,0,31,128, + 63,192,118,224,102,96,102,96,102,0,118,0,62,0,62,0, + 15,128,7,192,6,224,6,96,198,96,198,96,230,224,127,192, + 63,128,6,0,6,0,19,18,54,22,1,0,0,6,0,60, + 12,0,126,12,0,195,24,0,195,24,0,195,48,0,195,48, + 0,126,96,0,60,96,0,0,192,0,0,199,128,1,143,192, + 1,152,96,3,24,96,3,24,96,6,24,96,6,15,192,4, + 7,128,14,18,36,17,2,0,15,0,31,128,57,192,48,192, + 48,192,48,192,25,128,15,0,30,0,63,24,115,152,97,216, + 192,240,192,96,192,240,225,216,127,156,30,0,2,6,6,6, + 2,13,192,192,192,192,192,64,5,24,24,8,2,251,24,24, + 48,48,96,96,96,192,192,192,192,192,192,192,192,192,192,96, + 96,96,48,48,24,24,5,24,24,8,1,251,192,192,96,96, + 48,48,48,24,24,24,24,24,24,24,24,24,24,48,48,48, + 96,96,192,192,7,7,7,10,1,12,16,16,214,124,56,108, + 68,12,12,24,14,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,2, + 6,6,6,2,253,192,192,192,64,64,128,6,2,2,8,1, + 6,252,252,2,3,3,6,2,0,192,192,192,7,19,19,7, + 0,0,6,4,12,12,8,24,24,16,16,48,48,32,96,96, + 64,192,192,128,128,11,18,36,13,1,0,31,0,63,128,113, + 192,96,192,96,192,224,224,192,96,192,96,192,96,192,96,192, + 96,192,96,224,224,96,192,96,192,113,192,63,128,31,0,6, + 18,18,13,2,0,12,12,28,252,252,12,12,12,12,12,12, + 12,12,12,12,12,12,12,11,18,36,13,1,0,30,0,127, + 128,97,192,192,192,192,96,192,96,0,224,0,192,1,192,3, + 128,15,0,28,0,56,0,112,0,224,0,192,0,255,224,255, + 224,11,18,36,13,1,0,31,0,127,128,97,128,192,192,192, + 192,192,192,0,192,1,128,15,0,15,192,0,192,0,96,0, + 96,192,96,192,192,97,192,127,128,31,0,11,18,36,13,1, + 0,1,128,3,128,3,128,7,128,15,128,13,128,25,128,57, + 128,49,128,97,128,225,128,193,128,255,224,255,224,1,128,1, + 128,1,128,1,128,11,18,36,13,1,0,127,192,127,192,96, + 0,96,0,96,0,96,0,126,0,127,128,113,192,0,192,0, + 224,0,96,0,96,192,224,192,192,225,192,127,128,30,0,11, + 18,36,13,1,0,15,0,63,192,112,192,96,96,224,96,192, + 0,192,0,207,0,223,128,241,192,224,192,192,96,192,96,192, + 96,224,224,113,192,127,192,31,0,11,18,36,13,1,0,255, + 224,255,224,0,224,0,192,1,128,1,128,3,0,3,0,6, + 0,6,0,12,0,12,0,28,0,24,0,24,0,56,0,48, + 0,48,0,11,18,36,13,1,0,14,0,63,128,49,128,96, + 192,96,192,96,192,49,128,31,0,63,128,113,192,96,192,192, + 96,192,96,192,96,192,96,96,192,127,192,31,0,11,18,36, + 13,1,0,31,0,127,192,113,192,224,192,192,96,192,96,192, + 96,192,96,224,224,113,224,127,96,30,96,0,96,0,224,192, + 192,225,192,127,128,30,0,2,14,14,6,2,0,192,192,192, + 0,0,0,0,0,0,0,0,192,192,192,2,17,17,6,2, + 253,192,192,192,0,0,0,0,0,0,0,0,192,192,192,64, + 64,128,12,12,24,15,1,1,0,48,0,240,3,192,15,0, + 60,0,224,0,224,0,60,0,15,0,3,192,0,240,0,48, + 10,5,10,15,2,5,255,192,255,192,0,0,255,192,255,192, + 12,12,24,15,1,1,192,0,240,0,60,0,15,0,3,192, + 0,112,0,112,3,192,15,0,60,0,240,0,192,0,10,19, + 38,12,1,0,31,0,127,128,113,192,224,192,192,192,193,192, + 1,128,3,128,7,0,6,0,12,0,12,0,12,0,12,0, + 0,0,0,0,12,0,12,0,12,0,22,23,69,25,2,252, + 0,255,0,3,255,192,15,1,224,28,0,112,56,0,24,48, + 0,24,96,115,12,96,251,12,193,199,12,195,134,12,195,6, + 12,198,6,12,198,12,28,198,12,24,198,12,56,231,28,112, + 99,247,224,113,227,128,56,0,0,28,0,0,15,3,0,7, + 255,0,0,252,0,15,19,38,17,1,0,3,128,3,128,6, + 192,6,192,12,64,12,96,12,96,24,48,24,48,24,48,48, + 24,63,248,63,248,96,12,96,12,96,12,192,6,192,6,192, + 6,14,19,38,17,2,0,255,192,255,240,192,112,192,24,192, + 24,192,24,192,24,192,48,255,224,255,240,192,24,192,12,192, + 12,192,12,192,12,192,28,192,120,255,240,255,192,15,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,15,19,38,18,2,0,255, + 192,255,240,192,120,192,28,192,12,192,14,192,6,192,6,192, + 6,192,6,192,6,192,6,192,6,192,14,192,12,192,28,192, + 120,255,240,255,192,12,19,38,16,2,0,255,240,255,240,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,255,224,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,240,255, + 240,11,19,38,14,2,0,255,224,255,224,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,255,192,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,16,19,38, + 19,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,127,192,127,192,3,192,3,224,3,96, + 7,112,15,60,63,31,251,7,227,14,19,38,18,2,0,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,255, + 252,255,252,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,2,19,19,8,3,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,192,192, + 192,192,192,192,97,128,127,128,63,0,13,19,38,18,3,0, + 192,56,192,112,192,224,193,192,195,128,199,0,206,0,220,0, + 252,0,254,0,231,0,195,128,193,128,193,192,192,224,192,96, + 192,112,192,56,192,24,11,19,38,14,2,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,255,224, + 255,224,17,19,57,21,2,0,192,1,128,224,3,128,224,3, + 128,240,7,128,240,7,128,216,13,128,216,13,128,216,13,128, + 204,25,128,204,25,128,204,25,128,198,49,128,198,49,128,198, + 49,128,195,97,128,195,97,128,195,97,128,193,193,128,193,193, + 128,14,19,38,18,2,0,224,12,240,12,240,12,216,12,220, + 12,204,12,206,12,198,12,199,12,195,12,195,140,193,140,193, + 204,192,204,192,236,192,108,192,60,192,60,192,28,16,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,13,19,38,16,2,0,255, + 224,255,240,192,48,192,24,192,24,192,24,192,24,192,48,255, + 240,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,19,38,18,1,0,7,224,31,248,60, + 60,112,14,96,6,224,7,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,224,7,96,230,112,126,60,28,31,254,7, + 231,13,19,38,17,2,0,255,224,255,240,192,48,192,24,192, + 24,192,24,192,24,192,48,255,240,255,224,192,112,192,48,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,13,19,38, + 16,2,0,15,128,63,224,96,96,192,48,192,48,192,0,224, + 0,124,0,63,128,7,224,0,240,0,56,0,24,0,24,192, + 24,192,56,240,112,127,224,31,128,14,19,38,16,1,0,255, + 252,255,252,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,14,19,38,18,2,0,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,96,24,112,56,63,240,15, + 192,15,19,38,17,1,0,192,6,192,6,224,14,96,12,112, + 28,48,24,48,24,56,56,24,48,24,48,28,112,12,96,12, + 96,14,224,6,192,6,192,3,128,3,128,3,128,20,19,57, + 22,1,0,192,96,48,192,96,48,192,96,48,192,240,48,96, + 240,96,97,152,96,97,152,96,97,152,96,97,152,96,49,152, + 192,51,12,192,51,12,192,51,12,192,27,13,128,27,13,128, + 30,7,128,14,7,0,12,3,0,12,3,0,15,19,38,17, + 1,0,192,6,224,14,112,28,48,24,24,48,28,112,14,224, + 7,192,3,128,3,128,7,192,14,224,12,96,28,112,56,56, + 48,24,96,12,224,14,192,6,14,19,38,16,1,0,192,12, + 224,28,96,24,112,56,48,48,56,112,24,96,28,224,12,192, + 15,192,7,128,7,128,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,13,19,38,15,1,0,255,248,255,248,0,56, + 0,112,0,224,1,192,1,192,3,128,7,0,7,0,14,0, + 28,0,28,0,56,0,112,0,112,0,224,0,255,248,255,248, + 4,24,24,7,2,251,240,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,240,8,19, + 19,7,0,0,192,64,64,96,32,32,48,16,16,16,24,8, + 8,12,4,4,6,2,3,4,24,24,7,1,251,240,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,240,240,10,9,18,12,1,10,12,0,12,0,30, + 0,18,0,51,0,97,128,97,128,192,192,192,192,14,2,4, + 14,0,251,255,252,255,252,5,4,4,7,1,15,192,96,48, + 24,11,14,28,13,1,0,31,0,63,128,97,192,96,192,0, + 192,7,192,63,192,120,192,224,192,192,192,193,192,227,192,126, + 224,60,96,11,19,38,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,223,128,241,192,224,192,192,224,192,96,192, + 96,192,96,192,96,192,224,224,192,241,192,223,128,207,0,10, + 14,28,12,1,0,31,0,63,128,113,192,96,192,224,0,192, + 0,192,0,192,0,192,0,224,0,96,192,113,192,63,128,31, + 0,11,19,38,14,1,0,0,96,0,96,0,96,0,96,0, + 96,30,96,63,96,113,224,96,224,224,96,192,96,192,96,192, + 96,192,96,224,96,96,224,113,224,63,96,30,96,11,14,28, + 13,1,0,14,0,63,128,113,192,96,192,192,96,192,96,255, + 224,255,224,192,0,192,0,96,96,112,224,63,192,15,0,6, + 19,19,8,1,0,28,60,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,48,48,11,19,38,14,1,251,30,96, + 63,96,113,224,96,224,224,96,192,96,192,96,192,96,192,96, + 224,96,96,224,113,224,63,96,30,96,0,96,192,96,224,192, + 127,192,31,0,10,19,38,13,2,0,192,0,192,0,192,0, + 192,0,192,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 2,19,19,6,2,0,192,192,192,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,4,24,24,6,0,251,48, + 48,48,0,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,224,10,19,38,12,2,0,192,0,192, + 0,192,0,192,0,192,0,193,128,195,128,199,0,206,0,220, + 0,248,0,252,0,206,0,198,0,199,0,195,128,193,128,193, + 192,192,192,2,19,19,6,2,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,16,14,28,20, + 2,0,206,60,255,126,227,199,193,131,193,131,193,131,193,131, + 193,131,193,131,193,131,193,131,193,131,193,131,193,131,10,14, + 28,14,2,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 11,14,28,13,1,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,63,128, + 31,0,11,19,38,14,2,251,207,0,223,128,241,192,224,192, + 192,224,192,96,192,96,192,96,192,96,192,224,224,192,241,192, + 223,128,207,0,192,0,192,0,192,0,192,0,192,0,11,19, + 38,14,1,251,30,96,63,96,113,224,96,224,224,96,192,96, + 192,96,192,96,192,96,224,96,96,224,113,224,63,96,30,96, + 0,96,0,96,0,96,0,96,0,96,6,14,14,9,2,0, + 204,220,248,240,224,192,192,192,192,192,192,192,192,192,10,14, + 28,12,1,0,63,0,127,128,225,192,192,192,192,0,248,0, + 127,0,15,128,1,192,192,192,192,192,225,192,127,128,63,0, + 6,18,18,8,1,0,48,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,60,28,10,14,28,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,193,192,99,192,126,192,28,192,11,14,28,13,1,0, + 192,96,192,96,192,96,96,192,96,192,113,192,49,128,49,128, + 27,0,27,0,27,0,14,0,14,0,14,0,18,14,42,18, + 0,0,192,192,192,192,192,192,97,225,128,97,225,128,97,225, + 128,49,35,0,51,51,0,51,51,0,27,54,0,26,22,0, + 30,30,0,14,28,0,12,12,0,12,12,0,10,14,28,12, + 1,0,192,192,225,192,97,128,51,0,30,0,30,0,12,0, + 30,0,30,0,51,0,115,128,97,128,192,192,192,192,12,19, + 38,13,0,251,192,48,192,48,96,48,112,96,48,96,56,224, + 24,192,24,192,13,128,13,128,7,128,7,0,3,0,3,0, + 6,0,6,0,12,0,60,0,56,0,10,14,28,12,1,0, + 255,192,255,192,1,128,3,0,7,0,14,0,12,0,28,0, + 56,0,48,0,96,0,224,0,255,192,255,192,6,24,24,8, + 1,251,12,24,48,48,48,48,48,48,48,48,96,192,192,96, + 48,48,48,48,48,48,48,48,24,12,1,24,24,6,2,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,24,24,8,1,251,192,96, + 48,48,48,48,48,48,48,48,24,12,12,24,48,48,48,48, + 48,48,48,48,96,192,10,4,8,14,2,5,112,192,252,192, + 207,192,195,128,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=29 h=32 x= 4 y=22 dx=34 dy= 0 ascent=31 len=120 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24[10931] U8G_SECTION(".progmem.u8g_font_helvR24") = { + 0,39,48,251,245,25,5,215,14,105,32,255,249,31,249,25, + 249,0,0,0,9,0,1,3,25,25,9,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,64,64, + 0,0,224,224,224,224,8,8,8,12,2,15,231,231,231,231, + 231,231,66,66,17,23,69,19,1,0,3,135,0,3,135,0, + 3,6,0,3,6,0,7,14,0,7,14,0,127,255,128,127, + 255,128,127,255,128,14,28,0,14,28,0,12,24,0,28,56, + 0,28,56,0,255,255,0,255,255,0,255,255,0,56,112,0, + 56,112,0,48,96,0,48,96,0,112,224,0,112,224,0,16, + 31,62,18,1,252,1,128,1,128,1,128,15,240,31,248,61, + 188,113,142,113,142,225,142,225,128,225,128,113,128,125,128,63, + 192,31,240,7,252,1,254,1,158,1,143,1,135,225,135,225, + 135,113,142,113,142,61,188,63,248,15,240,1,128,1,128,1, + 128,1,128,26,24,96,29,1,0,0,0,48,0,31,0,112, + 0,127,128,96,0,115,192,224,0,224,192,192,0,192,225,192, + 0,192,225,128,0,192,227,128,0,224,195,0,0,115,199,0, + 0,127,134,0,0,31,14,0,0,0,12,0,0,0,28,62, + 0,0,24,127,128,0,56,243,128,0,48,193,192,0,113,192, + 192,0,97,192,192,0,225,192,192,0,192,193,192,1,192,227, + 128,1,128,127,128,3,128,62,0,18,23,69,22,2,0,7, + 192,0,15,224,0,30,112,0,60,56,0,56,56,0,56,56, + 0,60,112,0,30,240,0,15,224,0,7,192,0,15,128,0, + 63,192,0,121,199,0,112,231,0,224,246,0,224,126,0,224, + 60,0,224,28,0,240,62,0,120,127,0,127,247,128,63,227, + 192,15,0,0,3,8,8,6,2,15,224,224,224,224,224,224, + 224,64,7,31,31,11,2,249,6,12,12,24,24,56,48,112, + 112,112,96,224,224,224,224,224,224,224,224,224,96,112,112,112, + 48,56,24,24,12,12,6,7,31,31,11,1,249,192,96,96, + 48,48,56,24,28,28,28,12,14,14,14,14,14,14,14,14, + 12,12,28,28,24,24,56,48,112,96,96,192,10,11,22,13, + 1,15,12,0,12,0,76,128,237,192,127,128,63,0,30,0, + 63,0,115,128,225,192,64,128,17,16,48,19,1,1,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,3,9, + 9,9,3,251,224,224,224,224,32,96,96,192,128,8,2,2, + 11,1,8,255,255,3,4,4,9,3,0,224,224,224,224,9, + 24,48,9,0,0,1,128,1,128,1,128,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,8,0,24, + 0,24,0,24,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,15,24,48,18,1,0,7,192,31,240,63, + 248,60,120,120,60,112,28,112,28,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,112,60,60,120,63,248,31,240,7,192,8,24,24,18,3, + 0,3,7,7,15,63,255,255,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,15,24,48,18,1,0,7, + 192,31,240,63,248,120,60,112,28,240,14,224,14,224,14,0, + 14,0,28,0,60,0,120,0,240,3,224,7,192,31,0,60, + 0,120,0,112,0,224,0,224,0,255,254,255,254,255,254,15, + 24,48,18,1,0,7,192,31,240,63,248,56,56,112,28,112, + 28,112,28,112,28,0,28,0,56,3,248,3,240,3,248,0, + 60,0,30,0,14,224,14,224,14,224,14,112,28,120,60,63, + 248,31,240,7,192,16,24,48,18,0,0,0,24,0,56,0, + 120,0,120,0,248,1,248,3,184,3,184,7,56,14,56,14, + 56,28,56,56,56,56,56,112,56,224,56,255,255,255,255,255, + 255,0,56,0,56,0,56,0,56,0,56,15,24,48,18,1, + 0,63,252,63,252,63,252,56,0,56,0,56,0,112,0,112, + 0,119,192,127,240,127,248,120,124,112,28,0,30,0,14,0, + 14,0,14,224,14,224,30,240,28,120,124,127,248,63,240,15, + 128,15,24,48,18,1,0,3,192,15,240,31,248,60,56,56, + 28,112,28,112,0,112,0,96,0,227,192,239,240,255,248,248, + 60,240,28,240,14,224,14,224,14,96,14,112,14,112,28,56, + 60,63,248,31,240,7,192,15,24,48,18,1,0,255,254,255, + 254,255,254,0,14,0,28,0,24,0,56,0,112,0,112,0, + 224,0,224,1,192,1,192,3,128,3,128,7,0,7,0,7, + 0,14,0,14,0,14,0,28,0,28,0,28,0,15,24,48, + 18,1,0,7,192,31,240,63,248,56,60,112,28,112,28,112, + 28,112,28,120,60,60,120,31,240,15,224,63,248,120,60,112, + 28,224,14,224,14,224,14,224,14,240,28,120,60,63,248,31, + 240,7,192,15,24,48,18,1,0,7,192,31,240,63,248,120, + 124,112,60,240,28,224,30,224,14,224,14,224,14,224,30,224, + 30,112,62,127,254,63,238,15,206,0,14,0,28,224,28,240, + 60,120,120,63,240,63,224,15,128,3,18,18,9,4,0,224, + 224,224,224,0,0,0,0,0,0,0,0,0,0,224,224,224, + 224,3,22,22,9,4,251,224,224,224,224,0,0,0,0,0, + 0,0,0,0,224,224,224,224,32,96,96,192,128,16,16,32, + 19,2,0,0,3,0,15,0,63,1,252,7,224,31,128,254, + 0,240,0,240,0,254,0,31,128,7,224,1,252,0,127,0, + 15,0,3,15,9,18,19,2,4,255,254,255,254,255,254,0, + 0,0,0,0,0,255,254,255,254,255,254,16,16,32,19,1, + 0,192,0,240,0,254,0,63,128,7,224,1,248,0,127,0, + 15,0,15,0,127,1,248,7,224,63,128,254,0,240,0,192, + 0,14,25,50,18,2,0,7,192,31,240,63,248,120,56,112, + 28,240,28,224,28,224,28,0,28,0,56,0,56,0,112,0, + 224,1,224,1,192,3,128,3,128,3,128,3,128,0,0,0, + 0,3,128,3,128,3,128,3,128,29,30,120,34,1,251,0, + 7,192,0,0,63,248,0,0,255,254,0,3,240,63,128,7, + 192,7,192,15,0,3,224,30,0,1,224,28,0,0,240,56, + 15,140,112,56,31,220,56,112,60,252,56,112,112,124,56,96, + 224,56,24,224,224,56,24,225,224,56,24,225,192,112,56,225, + 192,112,56,225,192,112,112,225,192,224,112,225,224,224,224,112, + 243,243,192,112,255,127,128,120,62,127,0,60,0,0,0,30, + 0,0,0,31,0,0,0,15,128,0,0,3,224,120,0,1, + 255,248,0,0,127,224,0,20,25,75,22,1,0,0,240,0, + 0,240,0,0,248,0,1,248,0,1,248,0,3,156,0,3, + 156,0,3,156,0,7,158,0,7,14,0,7,14,0,15,15, + 0,15,15,0,14,7,0,30,7,128,31,255,128,31,255,128, + 63,255,192,60,3,192,56,1,192,120,1,224,120,1,224,112, + 0,224,240,0,240,240,0,240,17,25,75,22,3,0,255,240, + 0,255,252,0,255,254,0,224,62,0,224,15,0,224,15,0, + 224,7,0,224,7,0,224,15,0,224,14,0,224,62,0,255, + 252,0,255,252,0,255,254,0,224,31,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,7,128,224,15,0, + 255,254,0,255,254,0,255,248,0,20,25,75,24,2,0,1, + 252,0,7,255,0,15,255,128,31,7,192,60,1,224,56,0, + 224,112,0,240,112,0,112,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,112,240,0,112,112,0,240,120,0,224,60,1,224,63,7, + 192,31,255,128,7,254,0,1,248,0,18,25,75,24,3,0, + 255,240,0,255,252,0,255,254,0,224,31,0,224,15,0,224, + 7,128,224,3,128,224,3,128,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,3,192,224,3,128,224,3,128,224,7,128,224,15,0,224, + 30,0,255,254,0,255,252,0,255,240,0,17,25,75,22,3, + 0,255,255,0,255,255,0,255,255,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,128,255,255,128,255,255,128,16,25,50,20, + 3,0,255,255,255,255,255,255,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,22,25,75,25,1,0,0,254,0,3,255,128, + 15,255,192,31,131,240,62,0,240,60,0,120,120,0,56,112, + 0,56,240,0,0,224,0,0,224,0,0,224,0,0,224,15, + 252,224,15,252,224,15,252,224,0,28,240,0,28,112,0,28, + 120,0,60,56,0,60,60,0,252,31,1,252,15,255,220,7, + 255,28,1,252,28,18,25,75,24,3,0,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255, + 255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,3,25,25,9,3,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,13,25,50,16,1,0,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,224,56,224,56,224, + 56,224,56,240,120,120,240,127,240,63,224,31,128,20,25,75, + 22,3,0,224,3,192,224,7,128,224,15,0,224,30,0,224, + 60,0,224,120,0,224,240,0,225,224,0,227,192,0,231,192, + 0,239,128,0,255,192,0,255,192,0,249,224,0,240,240,0, + 224,112,0,224,120,0,224,60,0,224,28,0,224,30,0,224, + 15,0,224,7,128,224,3,192,224,3,224,224,1,240,14,25, + 50,18,3,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,21,25,75,27,3,0,240,0,120,240, + 0,120,248,0,248,248,0,248,252,1,248,252,1,248,252,1, + 248,236,1,184,238,3,184,238,3,184,230,3,56,231,7,56, + 231,7,56,227,6,56,227,142,56,227,142,56,227,142,56,225, + 140,56,225,220,56,225,220,56,224,216,56,224,248,56,224,248, + 56,224,112,56,224,112,56,19,25,75,24,2,0,240,0,224, + 240,0,224,248,0,224,252,0,224,252,0,224,254,0,224,239, + 0,224,231,0,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,56,224,224,60,224, + 224,28,224,224,30,224,224,15,224,224,7,224,224,7,224,224, + 3,224,224,1,224,224,1,224,23,25,75,25,1,0,0,254, + 0,3,255,128,15,239,224,31,1,240,62,0,248,60,0,120, + 120,0,60,112,0,28,240,0,30,224,0,14,224,0,14,224, + 0,14,224,0,14,224,0,14,224,0,14,224,0,14,240,0, + 30,240,0,30,120,0,60,60,0,120,62,0,248,31,1,240, + 15,239,224,3,255,128,0,254,0,17,25,75,22,3,0,255, + 248,0,255,254,0,255,255,0,224,15,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,7,128, + 224,15,0,255,255,0,255,254,0,255,248,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,23,26,78,26,1,255, + 0,254,0,3,255,128,15,239,224,31,1,240,62,0,248,60, + 0,120,120,0,60,112,0,28,240,0,30,224,0,14,224,0, + 14,224,0,14,224,0,14,224,0,14,224,0,14,224,0,14, + 240,0,30,240,2,30,120,7,60,60,7,184,62,3,248,31, + 1,240,15,239,248,3,255,188,0,254,30,0,0,12,19,25, + 75,24,3,0,255,252,0,255,255,0,255,255,128,224,7,128, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 3,192,224,3,128,224,15,128,255,255,0,255,254,0,255,255, + 0,224,15,128,224,7,128,224,3,128,224,3,192,224,3,192, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,224,19, + 25,75,22,1,0,3,248,0,15,254,0,31,255,0,60,15, + 128,56,3,192,112,1,192,112,1,192,112,0,0,120,0,0, + 124,0,0,63,192,0,31,248,0,7,255,0,0,127,128,0, + 15,192,0,1,224,0,0,224,224,0,224,240,0,224,112,1, + 224,120,1,192,62,7,192,63,255,128,15,254,0,3,248,0, + 19,25,75,20,0,0,255,255,224,255,255,224,255,255,224,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,18,25,75,24,3,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,25,75,22,1,0,240,1,224,240,1,224,240,1, + 224,112,1,192,120,3,192,120,3,192,56,3,128,56,3,128, + 60,7,128,28,7,0,28,7,0,30,15,0,14,14,0,14, + 14,0,15,14,0,7,28,0,7,28,0,7,156,0,3,184, + 0,3,184,0,3,184,0,1,240,0,1,240,0,0,224,0, + 0,224,0,29,25,100,31,1,0,240,7,0,120,240,7,0, + 120,240,15,128,120,112,15,128,112,112,15,128,112,120,29,192, + 240,120,29,192,240,56,29,192,224,56,29,192,224,56,56,224, + 224,60,56,225,224,28,56,225,192,28,48,225,192,28,112,113, + 192,28,112,113,192,14,112,115,128,14,224,59,128,14,224,59, + 128,14,224,59,128,7,224,63,128,7,192,31,0,7,192,31, + 0,7,192,31,0,3,128,14,0,3,128,14,0,20,25,75, + 22,1,0,248,0,240,120,1,224,60,3,192,28,3,192,30, + 7,128,15,7,0,15,15,0,7,158,0,3,156,0,3,252, + 0,1,248,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,156,0,7,158,0,7,14,0,15,15,0,30,7,128,30, + 7,128,60,3,192,120,1,224,120,1,224,240,0,240,21,25, + 75,22,0,0,240,0,120,120,0,240,120,0,224,60,1,224, + 28,1,192,30,3,192,14,7,128,15,7,128,7,143,0,3, + 142,0,3,222,0,1,220,0,1,252,0,0,248,0,0,248, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,18, + 25,75,20,1,0,127,255,192,127,255,192,127,255,192,0,7, + 128,0,15,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,1,224,0,1,224,0,3,192,0,7, + 128,0,7,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 6,32,32,9,2,249,252,252,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,252,252,9,24,48,9,0,0,192,0,192,0, + 96,0,96,0,96,0,48,0,48,0,48,0,16,0,24,0, + 24,0,24,0,12,0,12,0,12,0,6,0,6,0,6,0, + 2,0,3,0,3,0,3,0,1,128,1,128,6,32,32,9, + 1,249,252,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 252,252,12,13,26,16,1,11,6,0,15,0,15,0,31,128, + 25,128,25,128,57,192,48,192,112,224,96,96,96,96,224,112, + 192,48,18,2,6,18,0,250,255,255,192,255,255,192,6,5, + 5,11,1,20,224,240,112,56,28,16,18,36,18,1,0,15, + 224,63,248,60,120,112,60,112,28,0,28,0,60,1,252,31, + 252,126,28,120,28,240,28,224,28,224,60,224,124,121,254,127, + 223,63,143,15,25,50,18,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,227,224,239,240,255,248,248,60,240, + 28,240,30,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,240,28,252,60,255,248,239,240,231,224,14,18,36,16,1, + 0,7,192,31,240,63,248,56,60,112,28,112,28,224,0,224, + 0,224,0,224,0,224,0,224,28,224,28,112,28,120,56,63, + 248,31,240,7,192,15,25,50,18,1,0,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,7,206,31,238,63,254,124, + 62,112,30,240,30,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,240,30,120,62,127,254,63,238,15,206,15,18,36, + 18,2,0,7,192,31,240,63,248,120,60,112,28,240,14,224, + 14,224,14,255,254,255,254,224,0,224,0,240,14,112,30,120, + 60,63,248,31,240,7,192,8,25,25,9,1,0,15,31,60, + 56,56,56,56,255,255,255,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,15,25,50,18,1,249,7,206,31,238, + 63,254,124,62,112,30,240,30,224,14,224,14,224,14,224,14, + 224,14,224,14,240,30,112,62,120,62,63,254,31,238,7,142, + 0,14,224,14,224,28,240,28,124,120,63,248,31,224,14,25, + 50,18,2,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,227,224,239,240,255,248,248,60,240,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,3,25,25,7,2,0,224,224,224,224, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,6,32,32,7,255,249,28,28,28,28,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,60,252,248,15,25,50,16,1, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 120,224,240,225,224,227,192,231,128,239,0,255,0,255,0,251, + 128,243,192,225,192,225,224,224,224,224,240,224,120,224,56,224, + 60,224,30,3,25,25,7,2,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,23,18,54,27,2,0,227,192,240,239,243,252,255,247, + 252,248,126,30,240,60,14,224,56,14,224,56,14,224,56,14, + 224,56,14,224,56,14,224,56,14,224,56,14,224,56,14,224, + 56,14,224,56,14,224,56,14,224,56,14,224,56,14,14,18, + 36,18,2,0,227,224,239,248,255,248,248,60,240,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,15,18,36,18,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,224,14,240,30,112,28,120,60,63,248,31,240, + 7,192,15,25,50,18,2,249,3,192,239,240,255,248,248,60, + 240,28,240,30,224,14,224,14,224,14,224,14,224,14,224,14, + 240,30,240,28,248,60,255,248,239,240,231,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,15,25,50,18,1,249, + 7,192,31,238,63,254,124,62,112,30,240,30,224,14,224,14, + 224,14,224,14,224,14,224,14,240,30,112,30,120,62,63,254, + 31,238,15,206,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,8,18,18,11,2,0,231,239,255,252,240,240,224,224, + 224,224,224,224,224,224,224,224,224,224,13,18,36,16,2,0, + 15,128,63,224,127,224,112,240,224,112,224,0,112,0,126,0, + 63,192,7,240,0,240,0,120,224,56,224,56,240,112,127,240, + 127,224,31,128,8,22,22,9,1,0,56,56,56,56,255,255, + 255,56,56,56,56,56,56,56,56,56,56,56,56,60,63,31, + 14,18,36,18,2,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,60,240,124,127,252,127,220,31,28,15,18,36,16,0,0, + 224,14,224,14,112,28,112,28,112,28,56,56,56,56,56,56, + 28,112,28,112,28,112,14,224,14,224,14,224,7,192,7,192, + 3,128,3,128,23,18,54,23,0,0,224,56,14,224,56,14, + 112,124,28,112,124,28,112,108,28,56,238,28,56,238,56,56, + 238,56,56,198,56,24,198,48,29,199,112,29,199,112,29,199, + 112,13,131,96,15,131,224,15,131,224,7,1,192,7,1,192, + 15,18,36,16,0,0,240,30,120,28,56,56,60,112,28,112, + 14,224,15,224,7,192,3,128,7,192,7,192,15,224,30,224, + 28,112,56,120,56,56,112,28,240,30,14,25,50,16,1,249, + 224,28,224,28,240,56,112,56,112,56,112,112,56,112,56,112, + 56,224,60,224,28,224,29,192,29,192,15,192,15,128,15,128, + 7,0,7,0,7,0,14,0,14,0,28,0,124,0,120,0, + 112,0,14,18,36,16,1,0,127,248,127,248,127,248,0,120, + 0,240,0,224,1,192,3,192,7,128,7,0,14,0,28,0, + 60,0,120,0,112,0,255,252,255,252,255,252,8,32,32,11, + 1,249,15,31,28,24,24,24,24,24,24,24,24,24,56,56, + 112,224,224,112,56,56,24,24,24,24,24,24,24,24,24,28, + 31,15,2,31,31,9,3,249,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,8,32,32,11,1,249,240,248,56, + 24,24,24,24,24,24,24,24,24,28,28,14,7,7,14,28, + 28,24,24,24,24,24,24,24,24,24,56,248,240,14,6,12, + 19,2,9,24,0,124,12,127,12,199,220,193,248,0,240,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,9,0,1,3,25,25,11,4,249,224,224,224,224, + 0,0,64,64,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,14,25,50,19,2,252,0,32,0,96,0, + 64,7,224,31,240,60,248,120,188,112,156,112,156,225,128,225, + 0,225,0,227,0,227,0,226,12,226,28,118,28,124,60,60, + 120,31,240,15,224,8,0,24,0,16,0,16,0,15,24,48, + 19,1,0,3,192,15,248,31,252,60,60,120,30,112,14,112, + 14,112,0,112,0,56,0,56,0,255,192,255,192,12,0,14, + 0,14,0,12,0,28,0,24,0,56,0,115,134,255,254,255, + 254,96,124,12,13,26,18,3,5,230,48,255,240,127,240,112, + 224,96,96,224,112,224,112,224,112,96,96,112,224,127,240,255, + 240,230,48,16,24,48,18,1,0,224,7,224,7,112,14,112, + 14,56,28,56,28,28,56,28,56,14,112,14,112,7,224,127, + 254,127,254,127,254,1,192,1,192,127,254,127,254,127,254,1, + 192,1,192,1,192,1,192,1,192,2,32,32,9,3,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,15, + 32,64,18,1,249,3,192,15,240,31,248,28,120,56,60,56, + 28,56,28,60,0,30,0,31,128,63,224,113,240,224,248,224, + 124,224,28,224,30,112,14,124,14,62,14,31,28,15,156,3, + 248,1,240,0,240,0,120,112,56,112,56,120,56,56,112,63, + 240,31,224,7,128,8,3,3,11,1,22,231,231,231,24,25, + 75,25,0,0,0,254,0,3,255,128,7,1,224,12,0,112, + 24,0,24,48,126,12,96,255,134,97,193,198,195,128,195,195, + 0,3,199,0,3,134,0,1,134,0,1,134,0,1,134,0, + 1,199,0,3,195,128,195,97,225,198,96,255,134,48,62,12, + 24,0,24,28,0,56,7,1,224,3,255,128,0,254,0,10, + 15,30,12,1,10,63,0,119,128,97,128,1,128,7,128,127, + 128,225,128,193,128,195,128,231,128,125,192,0,0,0,0,255, + 192,255,192,12,9,18,18,3,5,28,112,56,224,113,192,227, + 128,195,0,227,128,113,192,56,224,28,112,16,9,18,19,1, + 3,255,255,255,255,255,255,0,7,0,7,0,7,0,7,0, + 7,0,7,8,2,2,11,1,8,255,255,24,25,75,25,0, + 0,0,126,0,3,255,128,7,1,224,12,0,112,24,0,24, + 48,0,12,97,255,6,97,255,134,193,129,195,193,128,195,193, + 128,195,129,129,129,129,255,1,129,252,1,129,142,1,193,134, + 3,193,131,3,97,129,134,97,129,198,48,0,12,24,0,24, + 28,0,56,7,1,224,3,255,128,0,126,0,9,2,4,11, + 1,22,255,128,255,128,9,9,18,13,2,15,62,0,127,0, + 227,128,193,128,193,128,193,128,227,128,127,0,62,0,17,21, + 63,19,1,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,255,255,128,255,255,128,255, + 255,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,0,0,0,0,0,0,255,255,128,255,255,128, + 255,255,128,9,15,30,11,1,9,30,0,127,0,99,0,193, + 128,193,128,1,128,3,0,7,0,30,0,56,0,112,0,224, + 0,192,0,255,128,255,128,9,15,30,11,1,9,62,0,127, + 0,227,128,193,128,193,128,3,128,15,0,15,0,3,128,1, + 128,193,128,193,128,227,128,127,0,62,0,7,5,5,11,3, + 22,30,60,56,112,224,14,24,48,19,2,250,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,60,240,124,255,252,255,220,255,28, + 224,0,224,0,224,0,224,0,224,0,224,0,16,30,60,17, + 1,251,7,255,31,255,63,140,63,140,127,140,127,140,255,140, + 255,140,255,140,255,140,127,140,127,140,63,140,63,140,31,140, + 3,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140, + 1,140,1,140,1,140,1,140,1,140,1,140,1,140,4,4, + 4,9,3,11,96,240,240,96,7,7,7,11,2,249,24,24, + 60,14,6,206,124,5,15,15,11,2,9,24,56,248,248,24, + 24,24,24,24,24,24,24,24,24,24,10,15,30,12,1,10, + 30,0,127,128,97,128,225,192,192,192,192,192,192,192,192,192, + 225,192,97,128,127,128,30,0,0,0,255,192,255,192,12,9, + 18,18,3,5,227,128,113,192,56,224,28,112,12,48,28,112, + 56,224,113,192,227,128,25,25,100,28,1,0,0,0,48,0, + 24,0,112,0,56,0,96,0,248,0,224,0,248,1,192,0, + 24,1,128,0,24,3,128,0,24,3,0,0,24,7,0,0, + 24,14,0,0,24,12,0,0,24,28,6,0,24,24,14,0, + 24,56,30,0,24,112,62,0,24,96,118,0,0,224,102,0, + 1,192,198,0,1,129,198,0,3,131,134,0,3,3,255,128, + 7,3,255,128,6,0,6,0,14,0,6,0,12,0,6,0, + 25,25,100,28,1,0,0,0,96,0,24,0,224,0,56,0, + 192,0,248,1,128,0,248,3,128,0,24,3,0,0,24,6, + 0,0,24,14,0,0,24,12,0,0,24,28,0,0,24,24, + 0,0,24,56,60,0,24,48,255,0,24,112,195,128,24,97, + 129,128,24,193,129,128,1,192,3,128,1,128,7,0,3,128, + 14,0,3,0,60,0,6,0,112,0,14,0,224,0,12,1, + 192,0,28,1,255,128,24,1,255,128,25,24,96,28,1,0, + 62,0,14,0,127,0,12,0,99,128,24,0,193,128,56,0, + 193,128,48,0,3,128,96,0,15,0,224,0,15,128,192,0, + 1,193,128,0,0,195,128,0,192,195,6,0,192,199,14,0, + 97,206,30,0,127,140,62,0,30,24,118,0,0,56,102,0, + 0,48,198,0,0,97,198,0,0,227,134,0,1,195,255,128, + 1,131,255,128,3,0,6,0,7,0,6,0,6,0,6,0, + 14,25,50,19,3,249,3,128,3,128,3,128,3,128,0,0, + 0,0,3,128,3,128,3,128,7,128,7,0,15,0,30,0, + 60,0,120,0,112,0,240,0,224,28,224,28,224,28,240,60, + 120,120,127,240,63,224,7,128,20,31,93,22,1,0,3,192, + 0,1,224,0,0,224,0,0,112,0,0,56,0,0,0,0, + 0,240,0,0,240,0,0,240,0,1,248,0,1,248,0,3, + 252,0,3,156,0,3,156,0,7,158,0,7,14,0,7,14, + 0,15,15,0,14,15,0,14,7,0,30,7,128,31,255,128, + 31,255,128,63,255,192,60,3,192,56,1,192,120,1,224,120, + 1,224,112,0,224,240,0,240,240,0,240,20,31,93,22,1, + 0,0,60,0,0,120,0,0,112,0,0,224,0,1,192,0, + 0,0,0,0,240,0,0,240,0,0,240,0,1,248,0,1, + 248,0,3,252,0,3,156,0,3,156,0,7,158,0,7,14, + 0,7,14,0,15,15,0,15,15,0,14,7,0,30,7,128, + 31,255,128,31,255,128,63,255,192,60,3,192,120,1,192,120, + 1,224,120,1,224,112,0,224,240,0,240,240,0,240,20,31, + 93,22,1,0,0,64,0,0,224,0,1,240,0,3,184,0, + 7,28,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,30,90,22,1,0,1,198,0,3,254,0,7,252,0, + 6,56,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,30,90,22,1,0,3,156,0,3,156,0,3,156,0, + 0,0,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,31,93,22,1,0,0,240,0,1,152,0,1,8,0, + 1,8,0,1,152,0,0,240,0,0,0,0,0,240,0,0, + 240,0,1,248,0,1,248,0,3,252,0,3,156,0,3,156, + 0,7,158,0,7,14,0,7,14,0,15,15,0,14,15,0, + 14,7,0,30,7,128,31,255,128,31,255,128,63,255,192,60, + 3,192,56,1,192,120,1,224,120,1,224,112,0,224,240,0, + 240,240,0,240,29,25,100,32,1,0,0,127,255,248,0,127, + 255,248,0,255,255,248,0,227,128,0,1,195,128,0,1,195, + 128,0,3,195,128,0,3,131,128,0,3,131,128,0,7,131, + 128,0,7,3,128,0,7,3,255,240,15,3,255,240,14,3, + 255,240,30,3,128,0,31,255,128,0,31,255,128,0,63,255, + 128,0,56,3,128,0,120,3,128,0,120,3,128,0,112,3, + 128,0,240,3,255,248,224,3,255,248,224,3,255,248,20,32, + 96,23,2,249,1,248,0,7,254,0,15,255,128,31,7,128, + 60,3,192,120,1,224,112,0,224,112,0,224,240,0,0,240, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,240,0,112,240,0,112,112,0,240,112,0,224,120,1,224, + 60,3,192,31,7,192,15,255,128,7,254,0,1,248,0,0, + 96,0,0,96,0,0,240,0,0,56,0,0,24,0,3,56, + 0,1,240,0,17,31,93,22,3,0,15,0,0,7,128,0, + 3,128,0,1,192,0,0,224,0,0,0,0,255,255,0,255, + 255,0,255,255,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,0, + 255,255,0,255,255,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255, + 128,255,255,128,255,255,128,17,31,93,22,3,0,0,120,0, + 0,240,0,0,224,0,1,192,0,3,128,0,0,0,0,255, + 255,0,255,255,0,255,255,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 255,255,0,255,255,0,255,255,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,255,255,128,255,255,128,255,255,128,17,31,93,22,3,0, + 0,128,0,1,192,0,3,224,0,7,112,0,14,56,0,0, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,0,255,255,0,255,255,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,255,255,128,255,255,128,255,255,128,17,30,90, + 22,3,0,28,56,0,28,56,0,28,56,0,0,0,0,0, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,0,255,255,0,255,255,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,255,255,128,255,255,128,255,255,128,7,31,31, + 9,0,0,240,120,56,28,14,0,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,7,31,31,9,2,0,30,60,56,112,224,0,112,112, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,9,31,62,9,0,0,8,0,28, + 0,62,0,119,0,227,128,0,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,9,30,60,9,0, + 0,227,128,227,128,227,128,0,0,0,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,21,25,75, + 23,0,0,31,254,0,31,255,128,31,255,192,28,3,224,28, + 0,224,28,0,240,28,0,112,28,0,112,28,0,56,28,0, + 56,28,0,56,255,192,56,255,192,56,28,0,56,28,0,56, + 28,0,56,28,0,120,28,0,112,28,0,112,28,0,240,28, + 0,224,28,3,192,31,255,192,31,255,128,31,254,0,19,30, + 90,24,2,0,1,198,0,3,254,0,7,252,0,6,56,0, + 0,0,0,240,0,224,248,0,224,248,0,224,252,0,224,252, + 0,224,254,0,224,239,0,224,231,0,224,231,128,224,227,192, + 224,227,192,224,225,224,224,224,224,224,224,240,224,224,120,224, + 224,56,224,224,60,224,224,28,224,224,30,224,224,15,224,224, + 7,224,224,7,224,224,3,224,224,1,224,224,1,224,23,31, + 93,25,1,0,0,240,0,0,120,0,0,56,0,0,28,0, + 0,14,0,0,0,0,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,248,60,0,120,120,0,60,112,0,28,112,0, + 28,240,0,30,224,0,14,224,0,14,224,0,14,224,0,14, + 224,0,14,240,0,30,240,0,30,112,0,28,120,0,60,60, + 0,120,62,0,248,31,1,240,15,255,224,3,255,128,0,254, + 0,23,31,93,25,1,0,0,15,0,0,30,0,0,28,0, + 0,56,0,0,112,0,0,0,0,0,254,0,3,255,128,15, + 255,224,31,1,240,62,0,248,60,0,120,120,0,60,112,0, + 28,112,0,28,240,0,30,224,0,14,224,0,14,224,0,14, + 224,0,14,224,0,14,240,0,30,240,0,30,112,0,28,120, + 0,60,60,0,120,62,0,248,31,1,240,15,255,224,3,255, + 128,0,254,0,23,31,93,25,1,0,0,16,0,0,56,0, + 0,124,0,0,238,0,1,199,0,0,0,0,0,254,0,3, + 255,128,15,255,224,31,1,240,62,0,248,60,0,120,120,0, + 60,112,0,28,112,0,28,240,0,30,224,0,14,224,0,14, + 224,0,14,224,0,14,224,0,14,240,0,30,240,0,30,112, + 0,28,120,0,60,60,0,120,62,0,248,31,1,240,15,255, + 224,3,255,128,0,254,0,23,30,90,25,1,0,0,113,128, + 0,255,128,1,255,0,1,142,0,0,0,0,0,254,0,3, + 255,128,15,255,224,31,1,240,62,0,248,60,0,120,120,0, + 60,112,0,28,112,0,28,240,0,30,224,0,14,224,0,14, + 224,0,14,224,0,14,224,0,14,240,0,30,240,0,30,112, + 0,28,120,0,60,60,0,120,62,0,248,31,1,240,15,255, + 224,3,255,128,0,254,0,23,29,87,25,1,0,1,195,128, + 1,195,128,1,195,128,0,0,0,0,254,0,3,255,128,15, + 255,224,31,1,240,62,0,248,60,0,120,120,0,60,112,0, + 28,112,0,28,240,0,30,224,0,14,224,0,14,224,0,14, + 224,0,14,224,0,14,240,0,30,240,0,30,112,0,28,120, + 0,60,60,0,120,62,0,248,31,1,240,15,255,224,3,255, + 128,0,254,0,15,15,30,19,2,1,64,4,224,14,240,30, + 120,60,60,120,31,240,15,224,7,192,7,192,15,224,30,240, + 60,120,120,60,240,30,96,12,23,25,75,25,1,0,0,254, + 6,3,255,140,15,255,248,31,1,240,62,0,248,60,0,248, + 120,1,188,112,3,28,112,6,28,240,6,30,224,12,14,224, + 24,14,224,48,14,224,96,14,224,192,14,225,128,30,243,0, + 30,118,0,28,124,0,60,60,0,120,62,0,248,63,1,240, + 111,255,224,195,255,128,0,254,0,18,31,93,24,3,0,7, + 128,0,3,192,0,1,192,0,0,224,0,0,112,0,0,0, + 0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,240,3,192,120,7,128, + 124,15,128,63,255,0,31,254,0,3,240,0,18,31,93,24, + 3,0,0,120,0,0,240,0,0,224,0,1,192,0,3,128, + 0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,240,3,192, + 120,7,128,124,15,128,63,255,0,31,254,0,3,240,0,18, + 31,93,24,3,0,0,64,0,0,224,0,1,240,0,3,184, + 0,7,28,0,0,0,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,18,30,90,24,3,0,14,28,0,14,28,0,14,28, + 0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,31,93,22,1,0,0,60,0,0,120,0,0,112, + 0,0,224,0,1,192,0,0,0,0,224,0,224,240,1,224, + 112,1,192,120,3,192,56,3,128,60,7,128,28,15,0,30, + 15,0,15,30,0,7,28,0,7,188,0,3,184,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,17,25,75,22,3,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,255,248,0,255,254,0, + 255,255,0,224,15,0,224,7,0,224,7,128,224,3,128,224, + 3,128,224,7,128,224,7,0,224,15,0,255,254,0,255,252, + 0,255,248,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,14,25,50,20,4,0,15,128,63,224, + 127,240,120,240,240,120,224,56,224,56,224,56,224,120,224,240, + 227,224,227,224,227,240,224,120,224,60,224,28,224,28,224,28, + 224,28,224,28,224,56,224,120,231,240,231,224,231,128,16,25, + 50,18,1,0,15,0,7,128,3,128,1,192,0,224,0,0, + 0,0,15,224,63,248,60,124,112,28,112,28,0,28,0,28, + 0,252,31,252,127,156,120,28,240,28,224,28,224,60,224,124, + 121,252,127,223,63,143,16,25,50,18,1,0,0,240,1,224, + 1,192,3,128,7,0,0,0,0,0,15,224,63,248,60,124, + 112,28,112,28,0,28,0,28,0,252,31,252,127,156,120,28, + 240,28,224,28,224,60,224,124,120,252,127,223,63,143,16,25, + 50,18,1,0,1,0,3,128,7,192,14,224,28,112,0,0, + 0,0,15,224,63,248,60,124,112,28,112,28,0,28,0,28, + 0,252,31,252,127,156,120,28,240,28,224,28,224,60,224,124, + 120,252,127,223,63,143,16,24,48,18,1,0,7,24,15,248, + 31,240,24,224,0,0,0,0,15,224,63,248,60,124,112,28, + 112,28,0,28,0,28,0,252,31,252,127,156,120,28,240,28, + 224,28,224,60,224,124,120,252,127,223,63,143,16,23,46,18, + 1,0,14,112,14,112,14,112,0,0,0,0,15,224,63,248, + 60,252,112,28,112,28,0,28,0,28,0,252,31,252,127,156, + 120,28,240,28,224,28,224,60,224,124,121,252,127,223,63,143, + 16,25,50,18,1,0,3,128,6,192,4,64,4,64,6,192, + 3,128,0,0,15,224,63,248,60,124,112,28,112,28,0,28, + 0,28,0,252,31,252,127,156,120,28,240,28,224,28,224,60, + 224,124,120,252,127,223,63,143,26,18,72,29,1,0,7,192, + 248,0,31,241,254,0,60,127,143,0,112,62,3,128,112,30, + 3,128,0,28,1,192,0,28,1,192,0,252,1,192,15,255, + 255,192,63,255,255,192,126,31,255,192,240,28,0,0,224,28, + 1,192,224,30,1,192,224,126,3,128,248,247,143,0,127,231, + 255,0,63,129,252,0,14,25,50,17,1,249,7,192,31,240, + 63,248,56,56,112,28,112,28,224,0,224,0,224,0,224,0, + 224,0,224,28,224,28,112,56,120,120,63,240,31,224,7,128, + 3,0,3,0,7,128,1,192,0,192,25,192,15,128,15,25, + 50,18,1,0,30,0,15,0,7,0,3,128,1,192,0,0, + 0,0,7,192,31,240,62,120,120,28,112,28,240,14,224,14, + 224,14,255,254,255,254,224,0,224,0,224,14,112,14,120,28, + 60,124,31,240,15,224,15,25,50,18,1,0,1,224,3,192, + 3,128,7,0,14,0,0,0,0,0,7,192,31,240,60,120, + 120,28,112,28,240,14,224,14,224,14,255,254,255,254,224,0, + 224,0,224,14,112,14,120,28,60,124,31,240,15,224,15,25, + 50,18,1,0,1,0,3,128,7,192,14,224,28,112,0,0, + 0,0,7,192,31,240,60,120,120,28,112,28,240,14,224,14, + 224,14,255,254,255,254,224,0,224,0,224,14,112,14,120,28, + 60,124,31,240,7,192,15,23,46,18,1,0,28,112,28,112, + 28,112,0,0,0,0,7,192,31,240,60,120,120,28,112,28, + 240,14,224,14,224,14,255,254,255,254,224,0,224,0,224,14, + 112,14,120,28,60,124,31,240,7,192,7,25,25,9,0,0, + 240,120,56,28,14,0,0,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,7,25,25,9,2,0,30, + 60,56,112,224,0,0,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,112,9,25,50,9,0,0,8,0, + 28,0,62,0,119,0,227,128,0,0,0,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 8,23,23,9,1,0,231,231,231,0,0,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,15,25,50, + 19,1,0,120,64,60,224,31,192,15,128,31,128,59,192,17, + 224,7,240,31,248,63,248,120,60,112,28,112,28,224,14,224, + 14,224,14,224,14,224,14,224,14,112,28,112,28,120,60,63, + 248,31,240,7,192,14,24,48,18,2,0,14,48,31,240,63, + 224,49,192,0,0,0,0,3,192,239,240,255,248,248,60,240, + 28,240,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,15,25,50,19,1, + 0,30,0,15,0,7,0,3,128,1,192,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,112,28,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,112,28,120,60,63,248,31, + 240,7,192,15,25,50,19,1,0,1,224,3,192,3,128,7, + 0,14,0,0,0,0,0,7,192,31,240,63,248,120,60,112, + 28,112,28,224,14,224,14,224,14,224,14,224,14,224,14,112, + 28,112,28,120,60,63,248,31,240,7,192,15,25,50,19,1, + 0,1,0,3,128,7,192,14,224,28,112,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,112,28,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,112,28,120,60,63,248,31, + 240,7,192,15,24,48,19,1,0,14,48,31,240,63,224,49, + 192,0,0,0,0,7,192,31,240,63,248,120,60,112,28,112, + 28,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,120,60,63,248,31,240,7,192,15,23,46,19,1,0,28, + 112,28,112,28,112,0,0,0,0,7,192,31,240,63,248,120, + 60,112,28,112,28,224,14,224,14,224,14,224,14,224,14,224, + 14,112,28,112,28,120,60,63,248,31,240,7,192,15,15,30, + 19,2,1,3,128,3,128,3,128,0,0,0,0,0,0,255, + 254,255,254,255,254,0,0,0,0,0,0,3,128,3,128,3, + 128,16,18,36,19,2,0,7,195,31,246,63,252,120,120,112, + 28,112,60,224,110,224,206,225,142,227,14,230,14,236,14,120, + 28,112,28,56,60,127,248,223,240,135,192,14,25,50,19,2, + 0,30,0,15,0,7,0,3,128,1,192,0,0,0,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,60,224,60,240,252,127,252,63, + 220,15,0,14,25,50,19,2,0,1,224,3,192,3,128,7, + 0,14,0,0,0,0,0,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 60,224,60,240,252,127,252,63,220,15,0,14,25,50,19,2, + 0,1,0,3,128,7,192,14,224,28,112,0,0,0,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,60,224,60,240,252,127,252,63, + 220,15,0,14,23,46,19,2,0,28,224,28,224,28,224,0, + 0,0,0,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,224,60,224,60,240, + 252,127,252,63,220,15,0,14,32,64,17,1,249,0,240,1, + 224,1,192,3,128,7,0,0,0,0,0,224,28,224,28,224, + 60,112,56,112,56,112,56,120,112,56,112,56,240,60,224,28, + 224,29,192,29,192,15,192,15,128,15,128,7,0,7,0,7, + 0,14,0,14,0,30,0,124,0,124,0,112,0,15,31,62, + 19,2,250,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,231,224,239,240,255,248,248,60,240,28,240,30,224,14,224, + 14,224,14,224,14,224,14,224,14,240,28,240,28,248,60,255, + 248,239,240,227,192,224,0,224,0,224,0,224,0,224,0,224, + 0,14,30,60,17,1,249,28,112,28,112,28,112,0,0,0, + 0,224,28,224,28,224,60,112,56,112,56,112,120,120,112,56, + 112,56,240,60,224,28,224,29,192,29,192,15,192,15,128,15, + 128,7,0,7,0,7,0,14,0,14,0,30,0,124,0,124, + 0,112,0}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=24 x= 3 y=15 dx=19 dy= 0 ascent=26 len=48 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =26 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24n[702] U8G_SECTION(".progmem.u8g_font_helvR24n") = { + 0,39,48,251,245,24,0,0,0,0,42,57,0,26,251,24, + 0,10,11,22,13,1,15,12,0,12,0,76,128,237,192,127, + 128,63,0,30,0,63,0,115,128,225,192,64,128,17,16,48, + 19,1,1,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,255,255,128,255,255,128,255,255, + 128,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,3,9,9,9,3,251,224,224,224,224,32,96,96, + 192,128,8,2,2,11,1,8,255,255,3,4,4,9,3,0, + 224,224,224,224,9,24,48,9,0,0,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,8,0,24,0,24,0,24,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,15,24,48,18,1,0, + 7,192,31,240,63,248,60,120,120,60,112,28,112,28,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,112,28,112,28,112,60,60,120,63,248,31,240,7,192, + 8,24,24,18,3,0,3,7,7,15,63,255,255,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,24, + 48,18,1,0,7,192,31,240,63,248,120,60,112,28,240,14, + 224,14,224,14,0,14,0,28,0,60,0,120,0,240,3,224, + 7,192,31,0,60,0,120,0,112,0,224,0,224,0,255,254, + 255,254,255,254,15,24,48,18,1,0,7,192,31,240,63,248, + 56,56,112,28,112,28,112,28,112,28,0,28,0,56,3,248, + 3,240,3,248,0,60,0,30,0,14,224,14,224,14,224,14, + 112,28,120,60,63,248,31,240,7,192,16,24,48,18,0,0, + 0,24,0,56,0,120,0,120,0,248,1,248,3,184,3,184, + 7,56,14,56,14,56,28,56,56,56,56,56,112,56,224,56, + 255,255,255,255,255,255,0,56,0,56,0,56,0,56,0,56, + 15,24,48,18,1,0,63,252,63,252,63,252,56,0,56,0, + 56,0,112,0,112,0,119,192,127,240,127,248,120,124,112,28, + 0,30,0,14,0,14,0,14,224,14,224,30,240,28,120,124, + 127,248,63,240,15,128,15,24,48,18,1,0,3,192,15,240, + 31,248,60,56,56,28,112,28,112,0,112,0,96,0,227,192, + 239,240,255,248,248,60,240,28,240,14,224,14,224,14,96,14, + 112,14,112,28,56,60,63,248,31,240,7,192,15,24,48,18, + 1,0,255,254,255,254,255,254,0,14,0,28,0,24,0,56, + 0,112,0,112,0,224,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,7,0,14,0,14,0,14,0,28,0,28,0, + 28,0,15,24,48,18,1,0,7,192,31,240,63,248,56,60, + 112,28,112,28,112,28,112,28,120,60,60,120,31,240,15,224, + 63,248,120,60,112,28,224,14,224,14,224,14,224,14,240,28, + 120,60,63,248,31,240,7,192,15,24,48,18,1,0,7,192, + 31,240,63,248,120,124,112,60,240,28,224,30,224,14,224,14, + 224,14,224,30,224,30,112,62,127,254,63,238,15,206,0,14, + 0,28,224,28,240,60,120,120,63,240,63,224,15,128}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=29 h=32 x= 4 y=20 dx=34 dy= 0 ascent=27 len=120 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24r[4992] U8G_SECTION(".progmem.u8g_font_helvR24r") = { + 0,39,48,251,245,25,5,215,14,105,32,127,249,27,249,25, + 249,0,0,0,9,0,1,3,25,25,9,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,64,64, + 0,0,224,224,224,224,8,8,8,12,2,15,231,231,231,231, + 231,231,66,66,17,23,69,19,1,0,3,135,0,3,135,0, + 3,6,0,3,6,0,7,14,0,7,14,0,127,255,128,127, + 255,128,127,255,128,14,28,0,14,28,0,12,24,0,28,56, + 0,28,56,0,255,255,0,255,255,0,255,255,0,56,112,0, + 56,112,0,48,96,0,48,96,0,112,224,0,112,224,0,16, + 31,62,18,1,252,1,128,1,128,1,128,15,240,31,248,61, + 188,113,142,113,142,225,142,225,128,225,128,113,128,125,128,63, + 192,31,240,7,252,1,254,1,158,1,143,1,135,225,135,225, + 135,113,142,113,142,61,188,63,248,15,240,1,128,1,128,1, + 128,1,128,26,24,96,29,1,0,0,0,48,0,31,0,112, + 0,127,128,96,0,115,192,224,0,224,192,192,0,192,225,192, + 0,192,225,128,0,192,227,128,0,224,195,0,0,115,199,0, + 0,127,134,0,0,31,14,0,0,0,12,0,0,0,28,62, + 0,0,24,127,128,0,56,243,128,0,48,193,192,0,113,192, + 192,0,97,192,192,0,225,192,192,0,192,193,192,1,192,227, + 128,1,128,127,128,3,128,62,0,18,23,69,22,2,0,7, + 192,0,15,224,0,30,112,0,60,56,0,56,56,0,56,56, + 0,60,112,0,30,240,0,15,224,0,7,192,0,15,128,0, + 63,192,0,121,199,0,112,231,0,224,246,0,224,126,0,224, + 60,0,224,28,0,240,62,0,120,127,0,127,247,128,63,227, + 192,15,0,0,3,8,8,6,2,15,224,224,224,224,224,224, + 224,64,7,31,31,11,2,249,6,12,12,24,24,56,48,112, + 112,112,96,224,224,224,224,224,224,224,224,224,96,112,112,112, + 48,56,24,24,12,12,6,7,31,31,11,1,249,192,96,96, + 48,48,56,24,28,28,28,12,14,14,14,14,14,14,14,14, + 12,12,28,28,24,24,56,48,112,96,96,192,10,11,22,13, + 1,15,12,0,12,0,76,128,237,192,127,128,63,0,30,0, + 63,0,115,128,225,192,64,128,17,16,48,19,1,1,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,3,9, + 9,9,3,251,224,224,224,224,32,96,96,192,128,8,2,2, + 11,1,8,255,255,3,4,4,9,3,0,224,224,224,224,9, + 24,48,9,0,0,1,128,1,128,1,128,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,8,0,24, + 0,24,0,24,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,15,24,48,18,1,0,7,192,31,240,63, + 248,60,120,120,60,112,28,112,28,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,112,60,60,120,63,248,31,240,7,192,8,24,24,18,3, + 0,3,7,7,15,63,255,255,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,15,24,48,18,1,0,7, + 192,31,240,63,248,120,60,112,28,240,14,224,14,224,14,0, + 14,0,28,0,60,0,120,0,240,3,224,7,192,31,0,60, + 0,120,0,112,0,224,0,224,0,255,254,255,254,255,254,15, + 24,48,18,1,0,7,192,31,240,63,248,56,56,112,28,112, + 28,112,28,112,28,0,28,0,56,3,248,3,240,3,248,0, + 60,0,30,0,14,224,14,224,14,224,14,112,28,120,60,63, + 248,31,240,7,192,16,24,48,18,0,0,0,24,0,56,0, + 120,0,120,0,248,1,248,3,184,3,184,7,56,14,56,14, + 56,28,56,56,56,56,56,112,56,224,56,255,255,255,255,255, + 255,0,56,0,56,0,56,0,56,0,56,15,24,48,18,1, + 0,63,252,63,252,63,252,56,0,56,0,56,0,112,0,112, + 0,119,192,127,240,127,248,120,124,112,28,0,30,0,14,0, + 14,0,14,224,14,224,30,240,28,120,124,127,248,63,240,15, + 128,15,24,48,18,1,0,3,192,15,240,31,248,60,56,56, + 28,112,28,112,0,112,0,96,0,227,192,239,240,255,248,248, + 60,240,28,240,14,224,14,224,14,96,14,112,14,112,28,56, + 60,63,248,31,240,7,192,15,24,48,18,1,0,255,254,255, + 254,255,254,0,14,0,28,0,24,0,56,0,112,0,112,0, + 224,0,224,1,192,1,192,3,128,3,128,7,0,7,0,7, + 0,14,0,14,0,14,0,28,0,28,0,28,0,15,24,48, + 18,1,0,7,192,31,240,63,248,56,60,112,28,112,28,112, + 28,112,28,120,60,60,120,31,240,15,224,63,248,120,60,112, + 28,224,14,224,14,224,14,224,14,240,28,120,60,63,248,31, + 240,7,192,15,24,48,18,1,0,7,192,31,240,63,248,120, + 124,112,60,240,28,224,30,224,14,224,14,224,14,224,30,224, + 30,112,62,127,254,63,238,15,206,0,14,0,28,224,28,240, + 60,120,120,63,240,63,224,15,128,3,18,18,9,4,0,224, + 224,224,224,0,0,0,0,0,0,0,0,0,0,224,224,224, + 224,3,22,22,9,4,251,224,224,224,224,0,0,0,0,0, + 0,0,0,0,224,224,224,224,32,96,96,192,128,16,16,32, + 19,2,0,0,3,0,15,0,63,1,252,7,224,31,128,254, + 0,240,0,240,0,254,0,31,128,7,224,1,252,0,127,0, + 15,0,3,15,9,18,19,2,4,255,254,255,254,255,254,0, + 0,0,0,0,0,255,254,255,254,255,254,16,16,32,19,1, + 0,192,0,240,0,254,0,63,128,7,224,1,248,0,127,0, + 15,0,15,0,127,1,248,7,224,63,128,254,0,240,0,192, + 0,14,25,50,18,2,0,7,192,31,240,63,248,120,56,112, + 28,240,28,224,28,224,28,0,28,0,56,0,56,0,112,0, + 224,1,224,1,192,3,128,3,128,3,128,3,128,0,0,0, + 0,3,128,3,128,3,128,3,128,29,30,120,34,1,251,0, + 7,192,0,0,63,248,0,0,255,254,0,3,240,63,128,7, + 192,7,192,15,0,3,224,30,0,1,224,28,0,0,240,56, + 15,140,112,56,31,220,56,112,60,252,56,112,112,124,56,96, + 224,56,24,224,224,56,24,225,224,56,24,225,192,112,56,225, + 192,112,56,225,192,112,112,225,192,224,112,225,224,224,224,112, + 243,243,192,112,255,127,128,120,62,127,0,60,0,0,0,30, + 0,0,0,31,0,0,0,15,128,0,0,3,224,120,0,1, + 255,248,0,0,127,224,0,20,25,75,22,1,0,0,240,0, + 0,240,0,0,248,0,1,248,0,1,248,0,3,156,0,3, + 156,0,3,156,0,7,158,0,7,14,0,7,14,0,15,15, + 0,15,15,0,14,7,0,30,7,128,31,255,128,31,255,128, + 63,255,192,60,3,192,56,1,192,120,1,224,120,1,224,112, + 0,224,240,0,240,240,0,240,17,25,75,22,3,0,255,240, + 0,255,252,0,255,254,0,224,62,0,224,15,0,224,15,0, + 224,7,0,224,7,0,224,15,0,224,14,0,224,62,0,255, + 252,0,255,252,0,255,254,0,224,31,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,7,128,224,15,0, + 255,254,0,255,254,0,255,248,0,20,25,75,24,2,0,1, + 252,0,7,255,0,15,255,128,31,7,192,60,1,224,56,0, + 224,112,0,240,112,0,112,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,112,240,0,112,112,0,240,120,0,224,60,1,224,63,7, + 192,31,255,128,7,254,0,1,248,0,18,25,75,24,3,0, + 255,240,0,255,252,0,255,254,0,224,31,0,224,15,0,224, + 7,128,224,3,128,224,3,128,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,3,192,224,3,128,224,3,128,224,7,128,224,15,0,224, + 30,0,255,254,0,255,252,0,255,240,0,17,25,75,22,3, + 0,255,255,0,255,255,0,255,255,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,128,255,255,128,255,255,128,16,25,50,20, + 3,0,255,255,255,255,255,255,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,22,25,75,25,1,0,0,254,0,3,255,128, + 15,255,192,31,131,240,62,0,240,60,0,120,120,0,56,112, + 0,56,240,0,0,224,0,0,224,0,0,224,0,0,224,15, + 252,224,15,252,224,15,252,224,0,28,240,0,28,112,0,28, + 120,0,60,56,0,60,60,0,252,31,1,252,15,255,220,7, + 255,28,1,252,28,18,25,75,24,3,0,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255, + 255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,3,25,25,9,3,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,13,25,50,16,1,0,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,224,56,224,56,224, + 56,224,56,240,120,120,240,127,240,63,224,31,128,20,25,75, + 22,3,0,224,3,192,224,7,128,224,15,0,224,30,0,224, + 60,0,224,120,0,224,240,0,225,224,0,227,192,0,231,192, + 0,239,128,0,255,192,0,255,192,0,249,224,0,240,240,0, + 224,112,0,224,120,0,224,60,0,224,28,0,224,30,0,224, + 15,0,224,7,128,224,3,192,224,3,224,224,1,240,14,25, + 50,18,3,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,21,25,75,27,3,0,240,0,120,240, + 0,120,248,0,248,248,0,248,252,1,248,252,1,248,252,1, + 248,236,1,184,238,3,184,238,3,184,230,3,56,231,7,56, + 231,7,56,227,6,56,227,142,56,227,142,56,227,142,56,225, + 140,56,225,220,56,225,220,56,224,216,56,224,248,56,224,248, + 56,224,112,56,224,112,56,19,25,75,24,2,0,240,0,224, + 240,0,224,248,0,224,252,0,224,252,0,224,254,0,224,239, + 0,224,231,0,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,56,224,224,60,224, + 224,28,224,224,30,224,224,15,224,224,7,224,224,7,224,224, + 3,224,224,1,224,224,1,224,23,25,75,25,1,0,0,254, + 0,3,255,128,15,239,224,31,1,240,62,0,248,60,0,120, + 120,0,60,112,0,28,240,0,30,224,0,14,224,0,14,224, + 0,14,224,0,14,224,0,14,224,0,14,224,0,14,240,0, + 30,240,0,30,120,0,60,60,0,120,62,0,248,31,1,240, + 15,239,224,3,255,128,0,254,0,17,25,75,22,3,0,255, + 248,0,255,254,0,255,255,0,224,15,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,7,128, + 224,15,0,255,255,0,255,254,0,255,248,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,23,26,78,26,1,255, + 0,254,0,3,255,128,15,239,224,31,1,240,62,0,248,60, + 0,120,120,0,60,112,0,28,240,0,30,224,0,14,224,0, + 14,224,0,14,224,0,14,224,0,14,224,0,14,224,0,14, + 240,0,30,240,2,30,120,7,60,60,7,184,62,3,248,31, + 1,240,15,239,248,3,255,188,0,254,30,0,0,12,19,25, + 75,24,3,0,255,252,0,255,255,0,255,255,128,224,7,128, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 3,192,224,3,128,224,15,128,255,255,0,255,254,0,255,255, + 0,224,15,128,224,7,128,224,3,128,224,3,192,224,3,192, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,224,19, + 25,75,22,1,0,3,248,0,15,254,0,31,255,0,60,15, + 128,56,3,192,112,1,192,112,1,192,112,0,0,120,0,0, + 124,0,0,63,192,0,31,248,0,7,255,0,0,127,128,0, + 15,192,0,1,224,0,0,224,224,0,224,240,0,224,112,1, + 224,120,1,192,62,7,192,63,255,128,15,254,0,3,248,0, + 19,25,75,20,0,0,255,255,224,255,255,224,255,255,224,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,18,25,75,24,3,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,25,75,22,1,0,240,1,224,240,1,224,240,1, + 224,112,1,192,120,3,192,120,3,192,56,3,128,56,3,128, + 60,7,128,28,7,0,28,7,0,30,15,0,14,14,0,14, + 14,0,15,14,0,7,28,0,7,28,0,7,156,0,3,184, + 0,3,184,0,3,184,0,1,240,0,1,240,0,0,224,0, + 0,224,0,29,25,100,31,1,0,240,7,0,120,240,7,0, + 120,240,15,128,120,112,15,128,112,112,15,128,112,120,29,192, + 240,120,29,192,240,56,29,192,224,56,29,192,224,56,56,224, + 224,60,56,225,224,28,56,225,192,28,48,225,192,28,112,113, + 192,28,112,113,192,14,112,115,128,14,224,59,128,14,224,59, + 128,14,224,59,128,7,224,63,128,7,192,31,0,7,192,31, + 0,7,192,31,0,3,128,14,0,3,128,14,0,20,25,75, + 22,1,0,248,0,240,120,1,224,60,3,192,28,3,192,30, + 7,128,15,7,0,15,15,0,7,158,0,3,156,0,3,252, + 0,1,248,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,156,0,7,158,0,7,14,0,15,15,0,30,7,128,30, + 7,128,60,3,192,120,1,224,120,1,224,240,0,240,21,25, + 75,22,0,0,240,0,120,120,0,240,120,0,224,60,1,224, + 28,1,192,30,3,192,14,7,128,15,7,128,7,143,0,3, + 142,0,3,222,0,1,220,0,1,252,0,0,248,0,0,248, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,18, + 25,75,20,1,0,127,255,192,127,255,192,127,255,192,0,7, + 128,0,15,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,1,224,0,1,224,0,3,192,0,7, + 128,0,7,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 6,32,32,9,2,249,252,252,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,252,252,9,24,48,9,0,0,192,0,192,0, + 96,0,96,0,96,0,48,0,48,0,48,0,16,0,24,0, + 24,0,24,0,12,0,12,0,12,0,6,0,6,0,6,0, + 2,0,3,0,3,0,3,0,1,128,1,128,6,32,32,9, + 1,249,252,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 252,252,12,13,26,16,1,11,6,0,15,0,15,0,31,128, + 25,128,25,128,57,192,48,192,112,224,96,96,96,96,224,112, + 192,48,18,2,6,18,0,250,255,255,192,255,255,192,6,5, + 5,11,1,20,224,240,112,56,28,16,18,36,18,1,0,15, + 224,63,248,60,120,112,60,112,28,0,28,0,60,1,252,31, + 252,126,28,120,28,240,28,224,28,224,60,224,124,121,254,127, + 223,63,143,15,25,50,18,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,227,224,239,240,255,248,248,60,240, + 28,240,30,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,240,28,252,60,255,248,239,240,231,224,14,18,36,16,1, + 0,7,192,31,240,63,248,56,60,112,28,112,28,224,0,224, + 0,224,0,224,0,224,0,224,28,224,28,112,28,120,56,63, + 248,31,240,7,192,15,25,50,18,1,0,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,7,206,31,238,63,254,124, + 62,112,30,240,30,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,240,30,120,62,127,254,63,238,15,206,15,18,36, + 18,2,0,7,192,31,240,63,248,120,60,112,28,240,14,224, + 14,224,14,255,254,255,254,224,0,224,0,240,14,112,30,120, + 60,63,248,31,240,7,192,8,25,25,9,1,0,15,31,60, + 56,56,56,56,255,255,255,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,15,25,50,18,1,249,7,206,31,238, + 63,254,124,62,112,30,240,30,224,14,224,14,224,14,224,14, + 224,14,224,14,240,30,112,62,120,62,63,254,31,238,7,142, + 0,14,224,14,224,28,240,28,124,120,63,248,31,224,14,25, + 50,18,2,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,227,224,239,240,255,248,248,60,240,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,3,25,25,7,2,0,224,224,224,224, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,6,32,32,7,255,249,28,28,28,28,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,60,252,248,15,25,50,16,1, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 120,224,240,225,224,227,192,231,128,239,0,255,0,255,0,251, + 128,243,192,225,192,225,224,224,224,224,240,224,120,224,56,224, + 60,224,30,3,25,25,7,2,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,23,18,54,27,2,0,227,192,240,239,243,252,255,247, + 252,248,126,30,240,60,14,224,56,14,224,56,14,224,56,14, + 224,56,14,224,56,14,224,56,14,224,56,14,224,56,14,224, + 56,14,224,56,14,224,56,14,224,56,14,224,56,14,14,18, + 36,18,2,0,227,224,239,248,255,248,248,60,240,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,15,18,36,18,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,224,14,240,30,112,28,120,60,63,248,31,240, + 7,192,15,25,50,18,2,249,3,192,239,240,255,248,248,60, + 240,28,240,30,224,14,224,14,224,14,224,14,224,14,224,14, + 240,30,240,28,248,60,255,248,239,240,231,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,15,25,50,18,1,249, + 7,192,31,238,63,254,124,62,112,30,240,30,224,14,224,14, + 224,14,224,14,224,14,224,14,240,30,112,30,120,62,63,254, + 31,238,15,206,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,8,18,18,11,2,0,231,239,255,252,240,240,224,224, + 224,224,224,224,224,224,224,224,224,224,13,18,36,16,2,0, + 15,128,63,224,127,224,112,240,224,112,224,0,112,0,126,0, + 63,192,7,240,0,240,0,120,224,56,224,56,240,112,127,240, + 127,224,31,128,8,22,22,9,1,0,56,56,56,56,255,255, + 255,56,56,56,56,56,56,56,56,56,56,56,56,60,63,31, + 14,18,36,18,2,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,60,240,124,127,252,127,220,31,28,15,18,36,16,0,0, + 224,14,224,14,112,28,112,28,112,28,56,56,56,56,56,56, + 28,112,28,112,28,112,14,224,14,224,14,224,7,192,7,192, + 3,128,3,128,23,18,54,23,0,0,224,56,14,224,56,14, + 112,124,28,112,124,28,112,108,28,56,238,28,56,238,56,56, + 238,56,56,198,56,24,198,48,29,199,112,29,199,112,29,199, + 112,13,131,96,15,131,224,15,131,224,7,1,192,7,1,192, + 15,18,36,16,0,0,240,30,120,28,56,56,60,112,28,112, + 14,224,15,224,7,192,3,128,7,192,7,192,15,224,30,224, + 28,112,56,120,56,56,112,28,240,30,14,25,50,16,1,249, + 224,28,224,28,240,56,112,56,112,56,112,112,56,112,56,112, + 56,224,60,224,28,224,29,192,29,192,15,192,15,128,15,128, + 7,0,7,0,7,0,14,0,14,0,28,0,124,0,120,0, + 112,0,14,18,36,16,1,0,127,248,127,248,127,248,0,120, + 0,240,0,224,1,192,3,192,7,128,7,0,14,0,28,0, + 60,0,120,0,112,0,255,252,255,252,255,252,8,32,32,11, + 1,249,15,31,28,24,24,24,24,24,24,24,24,24,56,56, + 112,224,224,112,56,56,24,24,24,24,24,24,24,24,24,28, + 31,15,2,31,31,9,3,249,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,8,32,32,11,1,249,240,248,56, + 24,24,24,24,24,24,24,24,24,28,28,14,7,7,14,28, + 28,24,24,24,24,24,24,24,24,24,56,248,240,14,6,12, + 19,2,9,24,0,124,12,127,12,199,220,193,248,0,240,255 + }; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 9 h=10 x= 1 y= 4 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent =10 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[2193] U8G_SECTION(".progmem.u8g_font_lucasfont_alternate") = { + 0,9,11,0,255,7,1,148,3,22,32,255,255,10,255,7, + 255,0,0,0,4,0,0,1,7,7,2,0,0,128,128,128, + 128,0,0,128,3,3,3,4,0,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,7,7,6,0,0, + 32,120,128,248,8,240,32,7,7,7,8,0,0,2,68,8, + 16,32,68,128,6,7,7,7,0,0,96,144,144,96,148,136, + 116,1,3,3,2,0,4,128,128,128,3,7,7,4,0,0, + 32,64,128,128,128,64,32,3,7,7,4,0,0,128,64,32, + 32,32,64,128,7,5,5,8,0,1,68,40,254,40,68,5, + 5,5,6,0,1,32,32,248,32,32,2,3,3,3,0,255, + 64,64,128,6,1,1,7,0,3,252,1,2,2,2,0,0, + 128,128,7,7,7,8,0,0,2,4,8,16,32,64,128,5, + 7,7,6,0,0,112,136,136,136,136,136,112,5,7,7,6, + 0,0,32,96,32,32,32,32,248,5,7,7,6,0,0,112, + 136,8,16,32,64,248,5,7,7,6,0,0,240,8,8,120, + 8,8,240,5,7,7,6,0,0,16,48,80,144,248,16,16, + 5,7,7,6,0,0,248,128,112,8,8,136,112,5,7,7, + 6,0,0,112,136,128,240,136,136,112,5,7,7,6,0,0, + 248,8,16,32,32,32,32,5,7,7,6,0,0,112,136,136, + 112,136,136,112,5,7,7,6,0,0,112,136,136,120,8,136, + 112,1,4,4,2,0,1,128,0,0,128,2,6,6,3,0, + 255,64,0,0,64,64,128,4,7,7,5,0,0,16,32,64, + 128,64,32,16,5,3,3,6,0,2,248,0,248,4,7,7, + 5,0,0,128,64,32,16,32,64,128,5,7,7,6,0,0, + 112,136,8,16,32,0,32,7,7,7,8,0,0,124,130,154, + 170,190,128,124,5,7,7,6,0,0,112,136,136,248,136,136, + 136,5,7,7,6,0,0,240,136,136,240,136,136,240,5,7, + 7,6,0,0,120,128,128,128,128,128,120,5,7,7,6,0, + 0,240,136,136,136,136,136,240,5,7,7,6,0,0,248,128, + 128,240,128,128,248,5,7,7,6,0,0,248,128,128,240,128, + 128,128,5,7,7,6,0,0,112,136,128,184,136,136,112,5, + 7,7,6,0,0,136,136,136,248,136,136,136,1,7,7,2, + 0,0,128,128,128,128,128,128,128,5,7,7,6,0,0,8, + 8,8,8,8,136,112,5,7,7,6,0,0,136,144,160,192, + 160,144,136,5,7,7,6,0,0,128,128,128,128,128,128,248, + 7,7,7,8,0,0,130,198,170,146,130,130,130,6,7,7, + 7,0,0,132,196,164,148,140,132,132,5,7,7,6,0,0, + 112,136,136,136,136,136,112,5,7,7,6,0,0,240,136,136, + 240,128,128,128,5,7,7,6,0,0,112,136,136,136,168,144, + 104,5,7,7,6,0,0,240,136,136,240,160,144,136,5,7, + 7,6,0,0,112,136,128,112,8,136,112,5,7,7,6,0, + 0,248,32,32,32,32,32,32,5,7,7,6,0,0,136,136, + 136,136,136,136,112,5,7,7,6,0,0,136,136,136,136,136, + 80,32,7,7,7,8,0,0,130,130,130,146,170,198,130,5, + 7,7,6,0,0,136,136,80,32,80,136,136,5,7,7,6, + 0,0,136,136,136,80,32,32,32,5,7,7,6,0,0,248, + 8,16,32,64,128,248,3,7,7,4,0,0,224,128,128,128, + 128,128,224,7,7,7,8,0,0,128,64,32,16,8,4,2, + 3,7,7,4,0,0,224,32,32,32,32,32,224,255,7,1, + 1,8,0,0,254,255,5,5,5,6,0,0,112,8,120,136, + 120,5,6,6,6,0,0,128,128,240,136,136,240,4,5,5, + 5,0,0,112,128,128,128,112,5,6,6,6,0,0,8,8, + 120,136,136,120,5,5,5,6,0,0,112,136,240,128,120,4, + 6,6,5,0,0,48,64,240,64,64,64,5,6,6,6,0, + 255,112,136,136,120,8,112,5,6,6,6,0,0,128,128,240, + 136,136,136,1,6,6,2,0,0,128,0,128,128,128,128,3, + 7,7,4,0,255,32,0,32,32,32,32,192,4,6,6,5, + 0,0,128,128,144,224,160,144,2,6,6,3,0,0,192,64, + 64,64,64,64,7,5,5,8,0,0,252,146,146,146,146,5, + 5,5,6,0,0,240,136,136,136,136,5,5,5,6,0,0, + 112,136,136,136,112,5,6,6,6,0,255,240,136,136,240,128, + 128,5,6,6,6,0,255,120,136,136,120,8,8,5,5,5, + 6,0,0,240,136,128,128,128,5,5,5,6,0,0,120,128, + 112,8,240,5,6,6,6,0,0,32,248,32,32,32,16,5, + 5,5,6,0,0,136,136,136,136,120,5,5,5,6,0,0, + 136,136,136,80,32,7,5,5,8,0,0,146,146,146,146,126, + 5,5,5,6,0,0,136,80,32,80,136,5,6,6,6,0, + 255,136,136,136,120,8,112,5,5,5,6,0,0,248,16,32, + 64,248,4,7,7,5,0,0,48,64,64,128,64,64,48,1, + 7,7,2,0,0,128,128,128,128,128,128,128,4,7,7,5, + 0,0,192,32,32,16,32,32,192,6,2,2,7,0,3,100, + 152,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,1,7,7,2,0,0,128,0,0,128,128,128,128, + 5,7,7,6,0,0,32,112,168,160,168,112,32,5,7,7, + 6,0,0,56,64,64,240,64,64,248,255,5,7,7,6,0, + 0,136,136,80,32,248,32,32,1,7,7,2,0,0,128,128, + 128,0,128,128,128,255,255,8,8,8,9,0,255,60,66,153, + 161,161,153,66,60,255,6,5,5,7,0,1,36,72,144,72, + 36,5,3,3,6,0,1,248,8,8,5,1,1,6,0,3, + 248,255,255,255,5,7,7,6,0,0,32,32,248,32,32,0, + 248,255,255,255,255,6,7,7,7,0,0,124,244,244,116,20, + 20,20,1,1,1,2,0,3,128,255,255,255,6,5,5,7, + 0,1,144,72,36,72,144,255,255,255,5,7,7,6,0,0, + 32,0,32,64,128,136,112,5,10,10,6,0,0,64,32,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,16,32,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,32,80,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,104,144,0, + 112,136,136,248,136,136,136,5,9,9,6,0,0,80,0,112, + 136,136,248,136,136,136,5,10,10,6,0,0,32,80,32,112, + 136,136,248,136,136,136,9,7,14,10,0,0,119,128,136,0, + 136,0,255,0,136,0,136,0,143,128,255,5,10,10,6,0, + 0,64,32,0,248,128,128,240,128,128,248,5,10,10,6,0, + 0,16,32,0,248,128,128,240,128,128,248,5,10,10,6,0, + 0,32,80,0,248,128,128,240,128,128,248,5,9,9,6,0, + 0,80,0,248,128,128,240,128,128,248,2,10,10,3,0,0, + 128,64,0,64,64,64,64,64,64,64,2,10,10,4,1,0, + 64,128,0,128,128,128,128,128,128,128,3,10,10,4,0,0, + 64,160,0,64,64,64,64,64,64,64,3,9,9,4,0,0, + 160,0,64,64,64,64,64,64,64,6,7,7,7,0,0,120, + 68,68,244,68,68,120,6,10,10,7,0,0,100,152,0,132, + 196,164,148,140,132,132,5,10,10,6,0,0,64,32,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,16,32,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,32,80,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,104,144,0,112, + 136,136,136,136,136,112,5,8,8,6,0,0,136,112,136,136, + 136,136,136,112,5,5,5,6,0,1,136,80,32,80,136,255, + 5,10,10,6,0,0,64,32,0,136,136,136,136,136,136,112, + 5,10,10,6,0,0,16,32,0,136,136,136,136,136,136,112, + 5,10,10,6,0,0,32,80,0,136,136,136,136,136,136,112, + 5,8,8,6,0,0,136,0,136,136,136,136,136,112,5,10, + 10,6,0,0,16,32,0,136,136,136,80,32,32,32,255,4, + 8,8,5,0,255,96,144,144,160,144,144,160,128,5,8,8, + 6,0,0,64,32,0,112,8,120,136,120,5,8,8,6,0, + 0,16,32,0,112,8,120,136,120,5,8,8,6,0,0,32, + 80,0,112,8,120,136,120,5,8,8,6,0,0,104,144,0, + 112,8,120,136,120,5,7,7,6,0,0,80,0,112,8,120, + 136,120,5,9,9,6,0,0,32,80,32,0,112,8,120,136, + 120,9,5,10,10,0,0,119,0,8,128,127,0,136,0,119, + 128,255,5,8,8,6,0,0,64,32,0,112,136,240,128,120, + 5,8,8,6,0,0,16,32,0,112,136,240,128,120,5,8, + 8,6,0,0,32,80,0,112,136,240,128,120,5,7,7,6, + 0,0,80,0,112,136,240,128,120,2,7,7,3,0,0,128, + 64,0,64,64,64,64,2,7,7,3,0,0,64,128,0,128, + 128,128,128,3,7,7,4,0,0,64,160,0,64,64,64,64, + 3,6,6,4,0,0,160,0,64,64,64,64,255,5,8,8, + 6,0,0,104,144,0,240,136,136,136,136,5,8,8,6,0, + 0,64,32,0,112,136,136,136,112,5,8,8,6,0,0,16, + 32,0,112,136,136,136,112,5,8,8,6,0,0,32,80,0, + 112,136,136,136,112,5,8,8,6,0,0,104,144,0,112,136, + 136,136,112,5,7,7,6,0,0,80,0,112,136,136,136,112, + 5,5,5,6,0,1,32,0,248,0,32,255,5,8,8,6, + 0,0,64,32,0,136,136,136,136,120,5,8,8,6,0,0, + 16,32,0,136,136,136,136,120,5,8,8,6,0,0,32,80, + 0,136,136,136,136,120,5,7,7,6,0,0,80,0,136,136, + 136,136,120,5,9,9,6,0,255,16,32,0,136,136,136,120, + 8,112,255,5,8,8,6,0,255,80,0,136,136,136,120,8, + 112}; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 7 h= 7 x= 0 y= 3 dx= 8 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[206] U8G_SECTION(".progmem.u8g_font_lucasfont_alternaten") = { + 0,9,11,0,255,7,0,0,0,0,42,57,0,7,255,7, + 0,7,5,5,8,0,1,68,40,254,40,68,5,5,5,6, + 0,1,32,32,248,32,32,2,3,3,3,0,255,64,64,128, + 6,1,1,7,0,3,252,1,2,2,2,0,0,128,128,7, + 7,7,8,0,0,2,4,8,16,32,64,128,5,7,7,6, + 0,0,112,136,136,136,136,136,112,5,7,7,6,0,0,32, + 96,32,32,32,32,248,5,7,7,6,0,0,112,136,8,16, + 32,64,248,5,7,7,6,0,0,240,8,8,120,8,8,240, + 5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7, + 6,0,0,248,128,112,8,8,136,112,5,7,7,6,0,0, + 112,136,128,240,136,136,112,5,7,7,6,0,0,248,8,16, + 32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136, + 112,5,7,7,6,0,0,112,136,136,120,8,136,112}; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 7 x= 0 y= 4 dx= 8 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[1138] U8G_SECTION(".progmem.u8g_font_lucasfont_alternater") = { + 0,9,11,0,255,7,1,148,3,22,32,127,255,7,255,7, + 255,0,0,0,4,0,0,1,7,7,2,0,0,128,128,128, + 128,0,0,128,3,3,3,4,0,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,7,7,6,0,0, + 32,120,128,248,8,240,32,7,7,7,8,0,0,2,68,8, + 16,32,68,128,6,7,7,7,0,0,96,144,144,96,148,136, + 116,1,3,3,2,0,4,128,128,128,3,7,7,4,0,0, + 32,64,128,128,128,64,32,3,7,7,4,0,0,128,64,32, + 32,32,64,128,7,5,5,8,0,1,68,40,254,40,68,5, + 5,5,6,0,1,32,32,248,32,32,2,3,3,3,0,255, + 64,64,128,6,1,1,7,0,3,252,1,2,2,2,0,0, + 128,128,7,7,7,8,0,0,2,4,8,16,32,64,128,5, + 7,7,6,0,0,112,136,136,136,136,136,112,5,7,7,6, + 0,0,32,96,32,32,32,32,248,5,7,7,6,0,0,112, + 136,8,16,32,64,248,5,7,7,6,0,0,240,8,8,120, + 8,8,240,5,7,7,6,0,0,16,48,80,144,248,16,16, + 5,7,7,6,0,0,248,128,112,8,8,136,112,5,7,7, + 6,0,0,112,136,128,240,136,136,112,5,7,7,6,0,0, + 248,8,16,32,32,32,32,5,7,7,6,0,0,112,136,136, + 112,136,136,112,5,7,7,6,0,0,112,136,136,120,8,136, + 112,1,4,4,2,0,1,128,0,0,128,2,6,6,3,0, + 255,64,0,0,64,64,128,4,7,7,5,0,0,16,32,64, + 128,64,32,16,5,3,3,6,0,2,248,0,248,4,7,7, + 5,0,0,128,64,32,16,32,64,128,5,7,7,6,0,0, + 112,136,8,16,32,0,32,7,7,7,8,0,0,124,130,154, + 170,190,128,124,5,7,7,6,0,0,112,136,136,248,136,136, + 136,5,7,7,6,0,0,240,136,136,240,136,136,240,5,7, + 7,6,0,0,120,128,128,128,128,128,120,5,7,7,6,0, + 0,240,136,136,136,136,136,240,5,7,7,6,0,0,248,128, + 128,240,128,128,248,5,7,7,6,0,0,248,128,128,240,128, + 128,128,5,7,7,6,0,0,112,136,128,184,136,136,112,5, + 7,7,6,0,0,136,136,136,248,136,136,136,1,7,7,2, + 0,0,128,128,128,128,128,128,128,5,7,7,6,0,0,8, + 8,8,8,8,136,112,5,7,7,6,0,0,136,144,160,192, + 160,144,136,5,7,7,6,0,0,128,128,128,128,128,128,248, + 7,7,7,8,0,0,130,198,170,146,130,130,130,6,7,7, + 7,0,0,132,196,164,148,140,132,132,5,7,7,6,0,0, + 112,136,136,136,136,136,112,5,7,7,6,0,0,240,136,136, + 240,128,128,128,5,7,7,6,0,0,112,136,136,136,168,144, + 104,5,7,7,6,0,0,240,136,136,240,160,144,136,5,7, + 7,6,0,0,112,136,128,112,8,136,112,5,7,7,6,0, + 0,248,32,32,32,32,32,32,5,7,7,6,0,0,136,136, + 136,136,136,136,112,5,7,7,6,0,0,136,136,136,136,136, + 80,32,7,7,7,8,0,0,130,130,130,146,170,198,130,5, + 7,7,6,0,0,136,136,80,32,80,136,136,5,7,7,6, + 0,0,136,136,136,80,32,32,32,5,7,7,6,0,0,248, + 8,16,32,64,128,248,3,7,7,4,0,0,224,128,128,128, + 128,128,224,7,7,7,8,0,0,128,64,32,16,8,4,2, + 3,7,7,4,0,0,224,32,32,32,32,32,224,255,7,1, + 1,8,0,0,254,255,5,5,5,6,0,0,112,8,120,136, + 120,5,6,6,6,0,0,128,128,240,136,136,240,4,5,5, + 5,0,0,112,128,128,128,112,5,6,6,6,0,0,8,8, + 120,136,136,120,5,5,5,6,0,0,112,136,240,128,120,4, + 6,6,5,0,0,48,64,240,64,64,64,5,6,6,6,0, + 255,112,136,136,120,8,112,5,6,6,6,0,0,128,128,240, + 136,136,136,1,6,6,2,0,0,128,0,128,128,128,128,3, + 7,7,4,0,255,32,0,32,32,32,32,192,4,6,6,5, + 0,0,128,128,144,224,160,144,2,6,6,3,0,0,192,64, + 64,64,64,64,7,5,5,8,0,0,252,146,146,146,146,5, + 5,5,6,0,0,240,136,136,136,136,5,5,5,6,0,0, + 112,136,136,136,112,5,6,6,6,0,255,240,136,136,240,128, + 128,5,6,6,6,0,255,120,136,136,120,8,8,5,5,5, + 6,0,0,240,136,128,128,128,5,5,5,6,0,0,120,128, + 112,8,240,5,6,6,6,0,0,32,248,32,32,32,16,5, + 5,5,6,0,0,136,136,136,136,120,5,5,5,6,0,0, + 136,136,136,80,32,7,5,5,8,0,0,146,146,146,146,126, + 5,5,5,6,0,0,136,80,32,80,136,5,6,6,6,0, + 255,136,136,136,120,8,112,5,5,5,6,0,0,248,16,32, + 64,248,4,7,7,5,0,0,48,64,64,128,64,64,48,1, + 7,7,2,0,0,128,128,128,128,128,128,128,4,7,7,5, + 0,0,192,32,32,16,32,32,192,6,2,2,7,0,3,100, + 152,255}; +/* + Fontname: m2icon5 + Copyright: public domain + Capital A Height: 5, '1' Height: 0 + Calculated Max Values w= 9 h= 6 x= 0 y= 0 dx=10 dy= 0 ascent= 5 len=10 + Font Bounding box w= 9 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_5[221] U8G_SECTION(".progmem.u8g_font_m2icon_5") = { + 1,9,6,0,255,5,0,17,0,172,65,104,255,5,255,5, + 255,2,117,149,28,254,130,130,254,2,69,133,112,208,144,144, + 240,2,84,100,216,112,112,216,2,117,133,6,12,216,112,32, + 2,68,84,240,144,144,240,2,68,84,240,144,208,240,2,68, + 84,240,240,240,240,2,85,101,248,136,136,136,248,2,85,101, + 248,136,168,136,248,2,85,101,248,248,248,248,248,2,68,84, + 224,176,240,112,2,68,84,224,176,240,112,2,68,84,224,240, + 240,112,2,85,101,240,152,152,248,120,2,85,101,240,152,216, + 248,120,2,85,101,240,248,248,248,120,2,68,84,96,144,144, + 96,2,68,84,96,144,208,96,2,68,84,96,240,240,96,255, + 255,255,255,255,255,255,255,255,255,255,255,255,2,117,133,32, + 64,254,64,32,2,85,101,32,112,168,32,32,255,255,255,2, + 149,170,28,0,254,0,130,0,191,128,255,0,1,22,38,128, + 128,128,128,128,128,2,85,101,32,32,248,32,32}; +/* + Fontname: m2icon_7 + Copyright: public domain + Capital A Height: 7, '1' Height: 0 + Calculated Max Values w=12 h= 8 x= 0 y= 1 dx=13 dy= 0 ascent= 7 len=14 + Font Bounding box w=12 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_7[275] U8G_SECTION(".progmem.u8g_font_m2icon_7") = { + 1,12,8,0,255,7,0,17,0,214,65,104,255,7,255,7, + 255,2,151,174,15,0,255,128,128,128,128,128,128,128,128,128, + 255,128,2,87,103,56,104,232,136,136,136,248,3,84,100,216, + 112,112,216,2,134,150,3,6,12,216,112,32,2,102,118,252, + 132,132,132,132,252,2,102,118,252,132,180,180,132,252,2,102, + 118,252,252,252,252,252,252,2,119,151,254,130,130,130,130,130, + 254,2,119,151,254,130,186,186,186,130,254,2,119,151,254,254, + 254,254,254,254,254,2,102,118,248,140,140,140,252,124,2,102, + 118,248,140,172,140,252,124,2,102,134,248,252,252,252,252,124, + 2,119,151,252,134,134,134,134,254,126,2,119,151,252,134,182, + 182,134,254,126,2,119,151,252,254,254,254,254,254,126,2,102, + 118,120,204,132,132,204,120,2,102,118,120,204,180,180,204,120, + 2,102,118,120,252,252,252,252,120,255,255,255,255,255,255,255, + 255,255,255,255,255,255,2,135,151,16,48,95,129,95,48,16, + 2,119,135,16,40,68,238,40,40,56,255,255,255,2,199,222, + 15,0,255,128,128,128,159,240,160,32,192,64,255,128,1,24, + 40,128,128,128,128,128,128,128,128,2,119,199,16,0,16,186, + 16,0,16}; +/* + Fontname: m2icon_9 + Copyright: public domain + Capital A Height: 8, '1' Height: 0 + Calculated Max Values w=13 h=11 x= 0 y= 1 dx=12 dy= 0 ascent= 9 len=18 + Font Bounding box w=13 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_9[471] U8G_SECTION(".progmem.u8g_font_m2icon_9") = { + 0,13,11,0,254,8,0,17,1,111,65,105,254,9,254,8, + 254,10,8,16,11,0,0,15,128,255,192,128,64,128,64,128, + 64,128,64,128,64,255,192,6,8,8,7,0,0,60,84,148, + 244,132,132,132,252,6,5,5,7,0,1,204,120,48,120,204, + 10,7,14,12,0,0,0,192,1,128,3,0,198,0,108,0, + 56,0,16,0,8,8,8,9,0,0,255,129,129,129,129,129, + 129,255,8,8,8,9,0,0,255,129,189,189,189,189,129,255, + 8,8,8,9,0,0,255,255,255,255,255,255,255,255,9,9, + 18,10,0,0,255,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,255,128,9,9,18,10,0,0,255,128,128,128, + 190,128,190,128,190,128,190,128,190,128,128,128,255,128,9,9, + 18,11,0,0,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,8,8,8,8,0,0,254,131,131,131, + 131,131,255,127,8,8,8,9,0,0,254,131,187,187,187,131, + 255,127,8,8,8,9,0,0,254,255,255,255,255,255,255,127, + 9,9,18,10,0,0,255,0,129,128,129,128,129,128,129,128, + 129,128,129,128,255,128,127,128,9,9,18,10,0,0,255,0, + 129,128,189,128,189,128,189,128,189,128,129,128,255,128,127,128, + 9,9,18,10,0,0,255,0,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,127,128,8,8,8,9,0,0,60,66, + 129,129,129,129,66,60,8,8,8,9,0,0,60,66,153,189, + 189,153,66,60,8,8,8,9,0,0,60,126,255,255,255,255, + 126,60,255,255,255,255,255,255,255,255,255,255,255,255,255,10, + 8,16,11,0,0,24,0,40,0,79,192,128,64,128,64,79, + 192,40,0,24,0,8,9,9,9,0,0,24,36,66,129,231, + 36,36,36,60,255,255,255,13,8,16,11,0,0,15,128,255, + 192,128,64,128,64,159,248,160,16,192,32,255,192,1,11,11, + 2,0,254,128,128,128,128,128,128,128,128,128,128,128,9,9, + 18,10,0,0,8,0,0,0,8,0,8,0,190,128,8,0, + 8,0,0,0,8,0,255}; +/* + Fontname: micro + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 4 h= 5 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_micro[855] U8G_SECTION(".progmem.u8g_font_micro") = { + 1,4,5,0,0,5,0,255,1,245,32,255,0,5,0,5, + 0,7,0,64,2,37,69,192,192,192,0,192,5,50,66,160, + 160,2,53,69,160,224,160,224,160,2,53,69,64,224,192,96, + 224,3,52,68,160,96,192,160,2,53,69,64,64,224,192,64, + 21,34,66,64,192,18,37,69,64,128,128,128,64,2,37,69, + 128,64,64,64,128,2,53,69,160,64,224,64,160,3,51,67, + 64,224,64,2,34,66,64,192,4,49,65,224,2,34,66,192, + 192,2,53,69,32,32,64,64,128,2,53,69,64,160,160,160, + 64,2,37,69,64,192,64,64,64,2,53,69,192,32,64,128, + 224,2,53,69,192,32,96,32,224,2,53,69,160,160,160,224, + 32,2,53,69,224,128,192,32,192,2,53,69,96,128,224,160, + 224,2,53,69,224,32,32,64,64,2,53,69,224,160,224,160, + 224,2,53,69,224,160,224,32,192,2,37,69,192,192,0,192, + 192,2,37,69,192,192,0,64,192,2,53,69,32,64,128,64, + 32,3,51,67,224,0,224,2,53,69,128,64,32,64,128,2, + 53,69,224,32,96,0,64,2,53,69,96,160,192,128,96,2, + 53,69,224,160,224,160,160,2,53,69,224,160,192,160,224,2, + 53,69,224,128,128,128,224,2,53,69,192,160,160,160,192,2, + 53,69,224,128,224,128,224,2,53,69,224,128,224,128,128,2, + 53,69,224,128,160,160,224,2,53,69,160,160,224,160,160,2, + 53,69,224,64,64,64,224,2,53,69,32,32,32,160,224,2, + 53,69,160,160,192,160,160,2,53,69,128,128,128,128,224,2, + 53,69,160,224,160,160,160,2,53,69,224,160,160,160,160,2, + 53,69,224,160,160,160,224,2,53,69,224,160,224,128,128,2, + 53,69,224,160,160,192,96,2,53,69,224,160,192,160,160,2, + 53,69,224,128,224,32,224,2,53,69,224,64,64,64,64,2, + 53,69,160,160,160,160,224,2,53,69,160,160,160,160,64,2, + 53,69,160,160,160,224,160,2,53,69,160,224,64,224,160,2, + 53,69,160,160,224,64,64,2,53,69,224,32,64,128,224,18, + 37,69,192,128,128,128,192,2,53,69,128,128,64,64,32,2, + 37,69,192,64,64,64,192,5,50,66,64,160,2,49,65,224, + 21,34,66,128,192,2,52,68,224,96,160,224,2,53,69,128, + 224,160,160,224,2,52,68,224,128,128,224,2,53,69,32,224, + 160,160,224,2,52,68,224,160,192,224,2,53,69,96,128,192, + 128,128,2,52,68,224,160,96,224,2,53,69,128,224,160,160, + 160,18,20,68,128,128,128,128,2,52,68,32,32,160,224,2, + 53,69,128,160,192,192,160,2,37,69,192,64,64,64,64,2, + 52,68,160,224,160,160,2,52,68,224,160,160,160,2,52,68, + 224,160,160,224,2,52,68,224,160,224,128,2,52,68,224,160, + 224,32,2,52,68,224,160,128,128,2,52,68,224,192,96,224, + 2,53,69,64,224,64,64,96,2,52,68,160,160,160,224,2, + 52,68,160,160,160,64,2,52,68,160,160,224,160,2,52,68, + 160,64,64,160,2,52,68,160,160,96,192,2,52,68,224,96, + 192,224,2,53,69,96,64,192,64,96,18,21,69,128,128,128, + 128,128,2,53,69,192,64,96,64,192,4,50,66,192,96,2, + 53,69,96,64,64,64,192,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--11-80-100-100-P-66-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=11 x= 2 y= 6 dx=12 dy= 0 ascent=11 len=22 + Font Bounding box w=17 h=19 x=-2 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB08[2760] U8G_SECTION(".progmem.u8g_font_ncenB08") = { + 0,17,19,254,251,8,1,193,3,159,32,255,254,11,254,8, + 254,0,0,0,3,0,1,2,8,8,3,0,0,192,192,192, + 128,128,0,192,192,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,5,10,10,6, + 0,255,32,120,168,160,240,120,40,168,240,32,10,8,16,11, + 0,0,102,0,218,0,212,0,213,128,107,64,11,64,19,64, + 17,128,8,8,8,9,0,0,48,104,104,48,88,204,207,118, + 1,3,3,4,1,5,128,128,128,4,10,10,5,0,254,16, + 32,96,192,192,192,192,96,32,16,4,10,10,5,0,254,128, + 64,96,48,48,48,48,96,64,128,5,5,5,6,0,3,32, + 168,112,168,32,5,5,5,6,0,1,32,32,248,32,32,2, + 4,4,3,0,254,192,192,64,128,3,1,1,4,0,3,224, + 2,2,2,3,0,0,192,192,4,8,8,5,0,0,16,16, + 32,32,64,64,128,128,5,8,8,6,0,0,112,216,216,216, + 216,216,216,112,4,8,8,6,1,0,96,224,96,96,96,96, + 96,240,5,8,8,6,0,0,112,216,216,24,48,64,248,248, + 5,8,8,6,0,0,112,216,216,48,24,216,216,112,5,8, + 8,6,0,0,56,56,88,88,152,248,24,56,5,8,8,6, + 0,0,248,240,128,240,24,216,216,112,5,8,8,6,0,0, + 112,216,192,240,216,216,216,112,4,8,8,6,0,0,240,240, + 16,32,32,96,96,96,5,8,8,6,0,0,112,216,216,112, + 216,216,216,112,5,8,8,6,0,0,112,216,216,216,120,24, + 216,112,2,5,5,3,0,0,192,192,0,192,192,2,7,7, + 3,0,254,192,192,0,192,192,64,128,6,5,5,7,0,1, + 12,48,192,48,12,5,3,3,6,0,2,248,0,248,6,5, + 5,7,0,1,192,48,12,48,192,5,8,8,6,0,0,112, + 216,24,48,64,0,96,96,9,10,20,10,0,255,28,0,99, + 0,65,0,158,128,182,128,182,128,155,0,64,0,96,0,30, + 0,9,8,16,8,255,0,8,0,28,0,28,0,38,0,38, + 0,127,0,67,0,231,128,7,8,8,8,0,0,252,102,102, + 124,102,102,102,252,7,8,8,8,0,0,58,70,194,192,192, + 194,66,60,8,8,8,9,0,0,252,98,99,99,99,99,98, + 252,6,8,8,7,0,0,252,100,104,120,104,100,100,252,6, + 8,8,7,0,0,252,100,100,104,120,104,96,240,7,8,8, + 8,0,0,58,70,194,192,206,198,70,58,9,8,16,10,0, + 0,247,128,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,4,8,8,5,0,0,240,96,96,96,96,96,96,240,6, + 8,8,7,0,0,60,24,24,24,216,216,152,112,9,8,16, + 9,0,0,243,0,98,0,100,0,104,0,124,0,102,0,99, + 0,243,128,6,8,8,7,0,0,240,96,96,96,96,100,100, + 252,11,8,16,12,0,0,241,224,113,192,90,192,90,192,90, + 192,76,192,76,192,237,224,8,8,8,9,0,0,199,98,114, + 122,94,78,70,226,7,8,8,8,0,0,56,68,198,198,198, + 198,68,56,7,8,8,8,0,0,252,102,102,102,124,96,96, + 240,8,9,9,8,0,255,56,68,198,198,198,246,108,61,6, + 8,8,8,9,0,0,252,102,102,100,124,102,102,247,6,8, + 8,7,0,0,116,204,196,240,60,140,204,184,6,8,8,7, + 0,0,252,180,180,48,48,48,48,120,8,8,8,9,0,0, + 247,98,98,98,98,98,98,60,8,8,8,9,0,0,247,98, + 98,52,52,52,24,24,11,8,16,12,0,0,246,224,102,64, + 102,64,107,64,107,64,59,128,49,128,49,128,8,8,8,9, + 0,0,247,98,116,56,28,46,70,239,8,8,8,9,0,0, + 247,98,52,52,24,24,24,60,6,8,8,7,0,0,252,140, + 28,56,112,224,196,252,3,10,10,4,0,254,224,192,192,192, + 192,192,192,192,192,224,4,8,8,5,0,0,128,128,64,64, + 32,32,16,16,3,10,10,4,0,254,224,96,96,96,96,96, + 96,96,96,224,5,6,6,6,0,2,32,32,112,80,136,136, + 6,1,1,6,0,254,252,3,2,2,4,0,6,192,96,4, + 5,5,5,0,0,224,48,112,176,240,6,8,8,7,0,0, + 192,192,192,216,236,204,204,184,5,5,5,6,0,0,112,200, + 192,200,112,6,8,8,7,0,0,28,12,12,124,204,204,220, + 108,5,5,5,6,0,0,112,216,248,192,120,5,8,8,5, + 0,0,56,104,96,240,96,96,96,240,6,8,8,6,0,254, + 8,112,216,216,112,124,140,248,6,8,8,7,0,0,192,192, + 192,216,236,204,204,204,4,8,8,5,0,0,96,96,0,224, + 96,96,96,240,3,10,10,5,0,254,96,96,0,224,96,96, + 96,96,96,192,6,8,8,6,0,0,192,192,192,216,240,240, + 216,220,4,8,8,5,0,0,224,96,96,96,96,96,96,240, + 10,5,10,11,0,0,217,128,238,192,204,192,204,192,204,192, + 6,5,5,7,0,0,216,236,204,204,204,6,5,5,7,0, + 0,120,204,204,204,120,6,7,7,7,0,254,216,236,204,204, + 248,192,224,7,7,7,7,0,254,124,204,204,220,108,12,30, + 4,5,5,5,0,0,208,240,192,192,192,4,5,5,5,0, + 0,112,192,240,48,224,3,7,7,4,0,0,64,192,224,192, + 192,192,96,6,5,5,7,0,0,204,204,204,220,108,6,5, + 5,7,0,0,236,104,104,48,48,9,5,10,10,0,0,237, + 128,109,0,109,0,54,0,54,0,6,5,5,7,0,0,236, + 104,48,88,220,6,7,7,7,0,254,236,104,104,48,48,224, + 192,5,5,5,6,0,0,248,176,96,200,248,4,10,10,5, + 0,254,48,96,96,96,192,96,96,96,96,48,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,4,10,10,5,0,254, + 192,96,96,96,48,96,96,96,96,192,6,2,2,7,0,3, + 116,184,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,3,0,1,2,8,8,3,0,254,192, + 192,0,64,64,192,192,192,5,7,7,6,0,255,8,120,208, + 208,232,112,64,7,8,8,8,0,0,60,100,96,252,48,98, + 190,220,7,5,5,8,0,1,186,108,108,108,186,8,8,8, + 9,0,0,247,98,52,54,24,62,24,60,1,8,8,6,2, + 0,128,128,128,0,128,128,128,128,4,10,10,5,0,254,112, + 144,192,96,176,208,96,48,144,224,3,2,2,4,0,6,160, + 160,8,8,8,9,0,0,60,66,157,165,161,157,66,60,3, + 6,6,4,0,2,192,32,224,160,0,224,6,5,5,7,0, + 0,36,108,216,108,36,5,3,3,6,0,2,248,8,8,3, + 1,1,4,0,3,224,8,8,8,9,0,0,60,66,189,165, + 185,173,66,60,4,1,1,5,0,6,240,3,4,4,4,0, + 4,64,160,160,64,5,5,5,6,0,1,32,248,32,0,248, + 3,4,4,3,0,4,96,160,64,224,3,4,4,3,0,4, + 224,64,32,192,3,2,2,4,0,6,96,192,6,7,7,7, + 0,254,204,204,204,220,236,192,192,7,8,8,8,0,0,126, + 244,244,116,20,20,20,62,2,2,2,3,0,3,192,192,2, + 3,3,4,1,254,128,64,192,3,4,4,3,0,4,64,192, + 64,224,4,6,6,5,0,2,96,144,144,96,0,240,6,5, + 5,7,0,0,144,216,108,216,144,8,8,8,9,0,0,68, + 196,72,232,18,22,47,34,8,8,8,9,0,0,68,196,72, + 232,19,21,34,39,8,8,8,9,0,0,228,68,40,200,18, + 22,47,34,5,8,8,6,0,254,48,48,0,16,96,192,216, + 112,9,11,22,8,255,0,48,0,24,0,0,0,8,0,28, + 0,28,0,38,0,38,0,127,0,67,0,231,128,9,11,22, + 8,255,0,6,0,12,0,0,0,8,0,28,0,28,0,38, + 0,38,0,127,0,67,0,231,128,9,11,22,8,255,0,28, + 0,54,0,0,0,8,0,28,0,28,0,38,0,38,0,127, + 0,67,0,231,128,9,11,22,8,255,0,26,0,44,0,0, + 0,8,0,28,0,28,0,38,0,38,0,127,0,67,0,231, + 128,9,11,22,8,255,0,20,0,20,0,0,0,8,0,28, + 0,28,0,38,0,38,0,127,0,67,0,231,128,9,11,22, + 8,255,0,24,0,36,0,24,0,8,0,28,0,28,0,38, + 0,38,0,127,0,67,0,231,128,10,8,16,11,0,0,63, + 192,22,64,22,128,39,128,62,128,70,64,70,64,239,192,7, + 10,10,8,0,254,58,70,194,192,192,194,66,60,16,48,6, + 11,11,7,0,0,96,48,0,252,100,104,120,104,100,100,252, + 6,11,11,7,0,0,24,48,0,252,100,104,120,104,100,100, + 252,6,11,11,7,0,0,56,108,0,252,100,104,120,104,100, + 100,252,6,11,11,7,0,0,40,40,0,252,100,104,120,104, + 100,100,252,4,11,11,5,0,0,192,96,0,240,96,96,96, + 96,96,96,240,4,11,11,5,0,0,48,96,0,240,96,96, + 96,96,96,96,240,5,11,11,5,0,0,112,216,0,240,96, + 96,96,96,96,96,240,4,11,11,5,0,0,80,80,0,240, + 96,96,96,96,96,96,240,8,8,8,9,0,0,252,98,99, + 243,99,99,98,252,8,11,11,9,0,0,26,44,0,199,98, + 114,122,94,78,70,226,7,11,11,8,0,0,48,24,0,56, + 68,198,198,198,198,68,56,7,11,11,8,0,0,24,48,0, + 56,68,198,198,198,198,68,56,7,11,11,8,0,0,56,108, + 0,56,68,198,198,198,198,68,56,7,11,11,8,0,0,52, + 88,0,56,68,198,198,198,198,68,56,7,11,11,8,0,0, + 40,40,0,56,68,198,198,198,198,68,56,5,5,5,6,0, + 1,216,112,32,112,216,7,8,8,8,0,0,58,68,206,214, + 214,230,68,184,8,11,11,9,0,0,48,24,0,247,98,98, + 98,98,98,98,60,8,11,11,9,0,0,12,24,0,247,98, + 98,98,98,98,98,60,8,11,11,9,0,0,28,54,0,247, + 98,98,98,98,98,98,60,8,11,11,9,0,0,20,20,0, + 247,98,98,98,98,98,98,60,8,11,11,9,0,0,12,24, + 0,247,98,52,52,24,24,24,60,7,8,8,8,0,0,224, + 124,102,102,102,124,96,240,7,8,8,8,0,0,60,102,102, + 108,102,102,102,236,4,8,8,5,0,0,192,96,0,224,48, + 112,176,240,4,8,8,5,0,0,48,96,0,224,48,112,176, + 240,5,9,9,5,0,0,32,112,216,0,224,48,112,176,240, + 5,8,8,5,0,0,104,176,0,224,48,112,176,240,4,8, + 8,5,0,0,160,160,0,224,48,112,176,240,4,8,8,5, + 0,0,96,144,96,224,48,112,176,240,8,5,5,9,0,0, + 238,155,127,216,239,5,7,7,6,0,254,112,200,192,200,112, + 32,96,5,8,8,6,0,0,96,48,0,112,216,248,192,120, + 5,8,8,6,0,0,48,96,0,112,216,248,192,120,5,9, + 9,6,0,0,32,112,216,0,112,216,248,192,120,5,8,8, + 6,0,0,80,80,0,112,216,248,192,120,4,8,8,5,0, + 0,192,96,0,224,96,96,96,240,4,8,8,5,0,0,48, + 96,0,224,96,96,96,240,5,9,9,5,0,0,32,112,216, + 0,224,96,96,96,240,4,8,8,5,0,0,160,160,0,224, + 96,96,96,240,6,8,8,7,0,0,200,112,144,120,204,204, + 204,120,6,8,8,7,0,0,104,176,0,216,236,204,204,204, + 6,8,8,7,0,0,96,48,0,120,204,204,204,120,6,8, + 8,7,0,0,24,48,0,120,204,204,204,120,6,9,9,7, + 0,0,32,112,216,0,120,204,204,204,120,6,8,8,7,0, + 0,52,88,0,120,204,204,204,120,6,8,8,7,0,0,80, + 80,0,120,204,204,204,120,5,5,5,6,0,1,32,0,248, + 0,32,6,7,7,7,0,255,4,120,220,236,204,120,128,6, + 8,8,7,0,0,96,48,0,204,204,204,220,108,6,8,8, + 7,0,0,24,48,0,204,204,204,220,108,6,9,9,7,0, + 0,32,112,216,0,204,204,204,220,108,6,8,8,7,0,0, + 80,80,0,204,204,204,220,108,6,10,10,7,0,254,24,48, + 0,236,104,104,48,48,224,192,6,10,10,7,0,254,192,192, + 192,216,236,204,204,248,192,224,6,10,10,7,0,254,80,80, + 0,236,104,104,48,48,224,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--11-80-100-100-P-66-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=10 x= 2 y= 6 dx=12 dy= 0 ascent= 9 len=20 + Font Bounding box w=17 h=19 x=-2 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB08r[1315] U8G_SECTION(".progmem.u8g_font_ncenB08r") = { + 0,17,19,254,251,8,1,193,3,159,32,127,254,9,254,8, + 254,0,0,0,3,0,1,2,8,8,3,0,0,192,192,192, + 128,128,0,192,192,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,5,10,10,6, + 0,255,32,120,168,160,240,120,40,168,240,32,10,8,16,11, + 0,0,102,0,218,0,212,0,213,128,107,64,11,64,19,64, + 17,128,8,8,8,9,0,0,48,104,104,48,88,204,207,118, + 1,3,3,4,1,5,128,128,128,4,10,10,5,0,254,16, + 32,96,192,192,192,192,96,32,16,4,10,10,5,0,254,128, + 64,96,48,48,48,48,96,64,128,5,5,5,6,0,3,32, + 168,112,168,32,5,5,5,6,0,1,32,32,248,32,32,2, + 4,4,3,0,254,192,192,64,128,3,1,1,4,0,3,224, + 2,2,2,3,0,0,192,192,4,8,8,5,0,0,16,16, + 32,32,64,64,128,128,5,8,8,6,0,0,112,216,216,216, + 216,216,216,112,4,8,8,6,1,0,96,224,96,96,96,96, + 96,240,5,8,8,6,0,0,112,216,216,24,48,64,248,248, + 5,8,8,6,0,0,112,216,216,48,24,216,216,112,5,8, + 8,6,0,0,56,56,88,88,152,248,24,56,5,8,8,6, + 0,0,248,240,128,240,24,216,216,112,5,8,8,6,0,0, + 112,216,192,240,216,216,216,112,4,8,8,6,0,0,240,240, + 16,32,32,96,96,96,5,8,8,6,0,0,112,216,216,112, + 216,216,216,112,5,8,8,6,0,0,112,216,216,216,120,24, + 216,112,2,5,5,3,0,0,192,192,0,192,192,2,7,7, + 3,0,254,192,192,0,192,192,64,128,6,5,5,7,0,1, + 12,48,192,48,12,5,3,3,6,0,2,248,0,248,6,5, + 5,7,0,1,192,48,12,48,192,5,8,8,6,0,0,112, + 216,24,48,64,0,96,96,9,10,20,10,0,255,28,0,99, + 0,65,0,158,128,182,128,182,128,155,0,64,0,96,0,30, + 0,9,8,16,8,255,0,8,0,28,0,28,0,38,0,38, + 0,127,0,67,0,231,128,7,8,8,8,0,0,252,102,102, + 124,102,102,102,252,7,8,8,8,0,0,58,70,194,192,192, + 194,66,60,8,8,8,9,0,0,252,98,99,99,99,99,98, + 252,6,8,8,7,0,0,252,100,104,120,104,100,100,252,6, + 8,8,7,0,0,252,100,100,104,120,104,96,240,7,8,8, + 8,0,0,58,70,194,192,206,198,70,58,9,8,16,10,0, + 0,247,128,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,4,8,8,5,0,0,240,96,96,96,96,96,96,240,6, + 8,8,7,0,0,60,24,24,24,216,216,152,112,9,8,16, + 9,0,0,243,0,98,0,100,0,104,0,124,0,102,0,99, + 0,243,128,6,8,8,7,0,0,240,96,96,96,96,100,100, + 252,11,8,16,12,0,0,241,224,113,192,90,192,90,192,90, + 192,76,192,76,192,237,224,8,8,8,9,0,0,199,98,114, + 122,94,78,70,226,7,8,8,8,0,0,56,68,198,198,198, + 198,68,56,7,8,8,8,0,0,252,102,102,102,124,96,96, + 240,8,9,9,8,0,255,56,68,198,198,198,246,108,61,6, + 8,8,8,9,0,0,252,102,102,100,124,102,102,247,6,8, + 8,7,0,0,116,204,196,240,60,140,204,184,6,8,8,7, + 0,0,252,180,180,48,48,48,48,120,8,8,8,9,0,0, + 247,98,98,98,98,98,98,60,8,8,8,9,0,0,247,98, + 98,52,52,52,24,24,11,8,16,12,0,0,246,224,102,64, + 102,64,107,64,107,64,59,128,49,128,49,128,8,8,8,9, + 0,0,247,98,116,56,28,46,70,239,8,8,8,9,0,0, + 247,98,52,52,24,24,24,60,6,8,8,7,0,0,252,140, + 28,56,112,224,196,252,3,10,10,4,0,254,224,192,192,192, + 192,192,192,192,192,224,4,8,8,5,0,0,128,128,64,64, + 32,32,16,16,3,10,10,4,0,254,224,96,96,96,96,96, + 96,96,96,224,5,6,6,6,0,2,32,32,112,80,136,136, + 6,1,1,6,0,254,252,3,2,2,4,0,6,192,96,4, + 5,5,5,0,0,224,48,112,176,240,6,8,8,7,0,0, + 192,192,192,216,236,204,204,184,5,5,5,6,0,0,112,200, + 192,200,112,6,8,8,7,0,0,28,12,12,124,204,204,220, + 108,5,5,5,6,0,0,112,216,248,192,120,5,8,8,5, + 0,0,56,104,96,240,96,96,96,240,6,8,8,6,0,254, + 8,112,216,216,112,124,140,248,6,8,8,7,0,0,192,192, + 192,216,236,204,204,204,4,8,8,5,0,0,96,96,0,224, + 96,96,96,240,3,10,10,5,0,254,96,96,0,224,96,96, + 96,96,96,192,6,8,8,6,0,0,192,192,192,216,240,240, + 216,220,4,8,8,5,0,0,224,96,96,96,96,96,96,240, + 10,5,10,11,0,0,217,128,238,192,204,192,204,192,204,192, + 6,5,5,7,0,0,216,236,204,204,204,6,5,5,7,0, + 0,120,204,204,204,120,6,7,7,7,0,254,216,236,204,204, + 248,192,224,7,7,7,7,0,254,124,204,204,220,108,12,30, + 4,5,5,5,0,0,208,240,192,192,192,4,5,5,5,0, + 0,112,192,240,48,224,3,7,7,4,0,0,64,192,224,192, + 192,192,96,6,5,5,7,0,0,204,204,204,220,108,6,5, + 5,7,0,0,236,104,104,48,48,9,5,10,10,0,0,237, + 128,109,0,109,0,54,0,54,0,6,5,5,7,0,0,236, + 104,48,88,220,6,7,7,7,0,254,236,104,104,48,48,224, + 192,5,5,5,6,0,0,248,176,96,200,248,4,10,10,5, + 0,254,48,96,96,96,192,96,96,96,96,48,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,4,10,10,5,0,254, + 192,96,96,96,48,96,96,96,96,192,6,2,2,7,0,3, + 116,184,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--14-100-100-100-P-87-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=15 x= 3 y= 8 dx=15 dy= 0 ascent=15 len=30 + Font Bounding box w=20 h=25 x=-2 y=-6 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =15 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB10[4003] U8G_SECTION(".progmem.u8g_font_ncenB10") = { + 0,20,25,254,250,11,2,24,5,41,32,255,253,15,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,128,128,0,192,192,192,3,4,4,5,1,7,160,160, + 160,160,7,10,10,8,0,0,20,20,20,126,40,40,252,80, + 80,80,7,13,13,8,0,255,16,124,214,150,208,240,124,30, + 22,210,214,124,16,12,11,22,13,0,0,48,128,111,0,201, + 0,202,0,210,0,100,96,4,208,9,144,9,144,17,160,16, + 192,12,11,22,13,0,0,30,0,51,0,51,0,50,0,28, + 0,60,224,78,64,199,128,195,144,227,224,124,192,1,4,4, + 3,1,7,128,128,128,128,4,13,13,5,0,254,16,32,96, + 64,192,192,192,192,192,64,96,32,16,4,13,13,5,0,254, + 128,64,96,32,48,48,48,48,48,32,96,64,128,5,5,5, + 6,0,6,32,168,112,168,32,7,7,7,8,0,1,16,16, + 16,254,16,16,16,2,5,5,4,1,254,192,192,192,64,128, + 4,2,2,5,0,3,240,240,2,3,3,4,1,0,192,192, + 192,4,11,11,5,0,0,16,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,108,198,198,198,198,198,198, + 198,108,56,5,11,11,8,1,0,48,240,48,48,48,48,48, + 48,48,48,120,7,11,11,8,0,0,120,206,198,6,6,12, + 24,48,98,254,254,7,11,11,8,0,0,120,206,198,6,12, + 60,6,6,198,206,120,7,11,11,8,0,0,12,28,28,44, + 44,76,76,254,12,12,30,7,11,11,8,0,0,126,124,64, + 64,92,110,6,6,198,206,120,7,11,11,8,0,0,60,102, + 198,192,220,238,198,198,198,230,120,7,11,11,8,0,0,254, + 254,132,140,12,24,24,24,48,48,48,7,11,11,8,0,0, + 120,230,198,198,244,60,94,198,198,206,60,7,11,11,8,0, + 0,60,206,198,198,198,238,118,6,198,204,120,2,7,7,4, + 1,0,192,192,192,0,192,192,192,2,9,9,4,1,254,192, + 192,192,0,192,192,192,64,128,7,7,7,8,0,1,2,14, + 56,224,56,14,2,7,3,3,8,0,3,254,0,254,7,7, + 7,8,0,1,128,224,56,14,56,224,128,6,11,11,7,0, + 0,120,204,204,12,24,48,32,0,48,48,48,13,11,22,14, + 0,0,15,192,56,112,99,152,108,216,204,216,217,152,217,176, + 219,176,205,192,96,16,63,224,10,11,22,11,0,0,12,0, + 12,0,22,0,22,0,18,0,35,0,35,0,63,0,65,128, + 65,128,227,192,9,11,22,10,0,0,254,0,99,0,99,0, + 99,0,102,0,127,0,97,128,97,128,97,128,99,128,254,0, + 10,11,22,11,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,192,0,192,0,96,64,112,192,31,0,11,11,22,12, + 0,0,255,0,97,192,96,192,96,96,96,96,96,96,96,96, + 96,96,96,192,97,192,255,0,9,11,22,10,0,0,255,128, + 97,128,96,128,100,128,100,0,124,0,100,0,100,128,96,128, + 97,128,255,128,9,11,22,10,0,0,255,128,97,128,96,128, + 100,128,100,0,124,0,100,0,100,0,96,0,96,0,240,0, + 11,11,22,12,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,195,224,192,192,96,192,113,192,30,64,11,11,22,12, + 0,0,241,224,96,192,96,192,96,192,96,192,127,192,96,192, + 96,192,96,192,96,192,241,224,4,11,11,7,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,11,11,9,0,0,30, + 12,12,12,12,12,12,204,204,156,112,11,11,22,12,0,0, + 243,192,97,0,98,0,100,0,104,0,124,0,110,0,103,0, + 99,128,97,192,243,224,9,11,22,10,0,0,240,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,128,96,128,97,128, + 255,128,13,11,22,14,0,0,240,120,112,112,112,112,88,176, + 88,176,88,176,77,48,77,48,77,48,70,48,230,120,11,11, + 22,12,0,0,224,224,112,64,120,64,92,64,76,64,70,64, + 71,64,67,192,65,192,64,192,224,64,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,9,11,22,10,0,0,255,0,99,128, + 97,128,97,128,99,128,126,0,96,0,96,0,96,0,96,0, + 240,0,11,14,28,12,0,253,31,0,113,192,96,192,192,96, + 192,96,192,96,192,96,220,96,102,192,115,192,31,0,3,32, + 3,160,1,192,11,11,22,12,0,0,255,0,99,128,97,128, + 97,128,99,0,126,0,99,0,99,0,97,128,97,160,241,192, + 9,11,22,10,0,0,61,0,227,0,193,0,193,0,240,0, + 126,0,15,128,129,128,129,128,195,128,190,0,10,11,22,11, + 0,0,255,192,204,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,30,0,11,11,22,12,0,0,240,224, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,96,64, + 48,128,31,0,10,11,22,11,0,0,241,192,96,128,96,128, + 49,0,49,0,49,0,26,0,26,0,26,0,12,0,12,0, + 13,11,22,14,0,0,247,184,99,16,99,16,99,16,53,160, + 53,160,53,160,53,160,24,192,24,192,24,192,11,11,22,12, + 0,0,249,224,112,192,48,128,25,0,13,0,14,0,22,0, + 19,0,33,128,97,192,243,224,10,11,22,11,0,0,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,12,0, + 12,0,30,0,8,11,11,9,0,0,255,195,135,142,12,24, + 48,113,225,195,255,4,13,13,5,0,254,240,192,192,192,192, + 192,192,192,192,192,192,192,240,6,11,11,7,0,0,128,128, + 64,64,32,32,16,16,8,8,4,4,13,13,5,0,254,240, + 48,48,48,48,48,48,48,48,48,48,48,240,7,7,7,8, + 0,4,16,16,56,40,108,68,198,7,1,1,7,0,254,254, + 4,3,3,6,1,8,192,96,16,8,7,7,9,0,0,60, + 102,6,62,198,206,119,9,11,22,10,0,0,224,0,96,0, + 96,0,96,0,110,0,115,0,97,128,97,128,97,128,99,0, + 94,0,7,7,7,8,0,0,60,102,198,192,194,102,60,9, + 11,22,10,0,0,7,0,3,0,3,0,3,0,59,0,103, + 0,195,0,195,0,195,0,103,0,59,128,8,7,7,9,0, + 0,60,102,195,255,192,99,62,6,11,11,6,0,0,56,108, + 108,96,248,96,96,96,96,96,240,7,11,11,8,0,253,6, + 124,198,198,124,128,252,126,130,134,124,9,11,22,10,0,0, + 224,0,96,0,96,0,96,0,110,0,115,0,99,0,99,0, + 99,0,99,0,247,128,4,10,10,5,0,0,96,96,0,224, + 96,96,96,96,96,240,5,13,13,5,254,253,24,24,0,56, + 24,24,24,24,24,24,24,216,112,8,11,11,9,0,0,224, + 96,96,96,103,102,108,120,108,102,231,4,11,11,5,0,0, + 224,96,96,96,96,96,96,96,96,96,240,14,7,14,15,0, + 0,238,112,115,152,99,24,99,24,99,24,99,24,247,188,9, + 7,14,10,0,0,238,0,115,0,99,0,99,0,99,0,99, + 0,247,128,8,7,7,9,0,0,60,102,195,195,195,102,60, + 9,10,20,10,0,253,238,0,115,0,97,128,97,128,97,128, + 115,0,110,0,96,0,96,0,240,0,9,10,20,9,0,253, + 61,0,103,0,195,0,195,0,195,0,103,0,59,0,3,0, + 3,0,7,128,7,7,7,7,0,0,238,118,96,96,96,96, + 240,6,7,7,7,0,0,124,196,224,120,28,140,248,6,10, + 10,6,0,0,32,32,96,248,96,96,96,100,100,56,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,8,7,7,7,255,0,247,98,98,52,52,24,24,13, + 7,14,12,255,0,247,184,99,16,99,16,53,160,53,160,24, + 192,24,192,8,7,7,9,0,0,231,102,60,24,60,70,231, + 8,10,10,7,255,253,247,98,98,52,52,24,24,16,208,224, + 6,7,7,7,0,0,252,140,24,48,96,196,252,5,13,13, + 6,0,254,24,32,96,96,96,64,128,64,96,96,96,32,24, + 1,11,11,8,3,0,128,128,128,128,128,128,128,128,128,128, + 128,5,13,13,6,0,254,192,32,48,48,48,16,8,16,48, + 48,48,32,192,7,2,2,8,0,4,118,220,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 4,0,1,2,11,11,5,1,253,192,192,192,0,64,64,192, + 192,192,192,192,7,9,9,8,0,255,4,60,110,206,208,210, + 118,60,32,8,11,11,9,0,0,28,38,102,96,252,48,48, + 32,225,191,222,8,8,8,9,0,2,153,126,102,195,195,102, + 126,153,10,11,22,11,0,0,241,192,96,128,49,0,49,0, + 26,0,26,0,63,0,12,0,63,0,12,0,30,0,1,11, + 11,8,3,0,128,128,128,128,0,0,128,128,128,128,128,6, + 13,13,7,0,254,56,108,76,96,120,156,204,228,120,28,204, + 200,112,5,2,2,7,1,8,216,216,11,11,22,12,0,0, + 14,0,49,128,64,64,79,64,153,32,144,32,153,32,78,64, + 64,64,49,128,14,0,5,7,7,6,0,4,224,48,112,176, + 216,0,248,7,5,5,8,0,1,54,108,216,108,54,7,4, + 4,8,0,2,254,2,2,2,4,2,2,5,0,3,240,240, + 11,11,22,12,0,0,14,0,49,128,64,64,94,64,137,32, + 142,32,138,32,91,64,64,64,49,128,14,0,5,1,1,7, + 1,8,248,4,4,4,6,1,7,96,144,144,96,7,7,7, + 8,0,1,16,16,254,16,16,0,254,5,6,6,5,255,5, + 112,152,24,48,96,248,5,6,6,5,255,5,112,152,48,24, + 152,112,4,3,3,6,1,8,48,96,128,9,10,20,10,0, + 253,247,0,99,0,99,0,99,0,99,0,103,0,123,128,64, + 0,96,0,96,0,9,11,22,10,0,0,127,128,251,0,251, + 0,251,0,251,0,123,0,27,0,27,0,27,0,27,0,63, + 128,2,2,2,5,1,4,192,192,3,3,3,5,1,253,64, + 32,224,4,6,6,5,0,5,96,224,96,96,96,240,5,7, + 7,6,0,4,112,216,216,216,112,0,248,7,5,5,8,0, + 1,216,108,54,108,216,11,11,22,12,0,0,97,0,227,0, + 98,0,102,0,100,0,252,192,9,192,26,192,20,192,55,224, + 32,192,11,11,22,12,0,0,97,0,227,0,98,0,102,0, + 100,0,253,192,10,96,24,96,16,192,49,128,35,224,12,11, + 22,12,255,0,112,128,153,128,49,0,27,0,154,0,118,96, + 4,224,13,96,10,96,27,240,16,96,6,11,11,7,0,253, + 48,48,48,0,16,48,96,192,204,204,120,10,15,30,11,0, + 0,48,0,24,0,4,0,0,0,12,0,12,0,22,0,22, + 0,18,0,35,0,35,0,63,0,65,128,65,128,227,192,10, + 15,30,11,0,0,3,0,6,0,8,0,0,0,12,0,12, + 0,22,0,22,0,18,0,35,0,35,0,63,0,65,128,65, + 128,227,192,10,15,30,11,0,0,4,0,14,0,17,0,0, + 0,12,0,12,0,22,0,22,0,18,0,35,0,35,0,63, + 0,65,128,65,128,227,192,10,14,28,11,0,0,29,0,46, + 0,0,0,12,0,12,0,22,0,22,0,18,0,35,0,35, + 0,63,0,65,128,65,128,227,192,10,14,28,11,0,0,51, + 0,51,0,0,0,12,0,12,0,22,0,22,0,18,0,35, + 0,35,0,63,0,65,128,65,128,227,192,10,15,30,11,0, + 0,12,0,18,0,12,0,0,0,12,0,12,0,22,0,22, + 0,18,0,35,0,35,0,63,0,65,128,65,128,227,192,15, + 11,22,15,255,0,15,254,5,134,5,130,9,146,9,144,17, + 240,31,144,33,146,33,130,65,134,227,254,10,14,28,11,0, + 253,31,64,112,192,96,64,192,64,192,0,192,0,192,0,192, + 0,96,64,112,192,31,0,4,0,2,0,14,0,9,15,30, + 10,0,0,24,0,12,0,2,0,0,0,255,128,97,128,96, + 128,100,128,100,0,124,0,100,0,100,128,96,128,97,128,255, + 128,9,15,30,10,0,0,3,0,6,0,8,0,0,0,255, + 128,97,128,96,128,100,128,100,0,124,0,100,0,100,128,96, + 128,97,128,255,128,9,15,30,10,0,0,4,0,14,0,17, + 0,0,0,255,128,97,128,96,128,100,128,100,0,124,0,100, + 0,100,128,96,128,97,128,255,128,9,14,28,10,0,0,51, + 0,51,0,0,0,255,128,97,128,96,128,100,128,100,0,124, + 0,100,0,100,128,96,128,97,128,255,128,4,15,15,7,1, + 0,192,96,16,0,240,96,96,96,96,96,96,96,96,96,240, + 5,15,15,7,1,0,24,48,64,0,240,96,96,96,96,96, + 96,96,96,96,240,5,15,15,7,1,0,32,112,136,0,240, + 96,96,96,96,96,96,96,96,96,240,6,14,14,7,0,0, + 204,204,0,120,48,48,48,48,48,48,48,48,48,120,11,11, + 22,12,0,0,255,0,97,192,96,192,96,96,96,96,248,96, + 96,96,96,96,96,192,97,192,255,0,11,14,28,12,0,0, + 14,128,23,0,0,0,224,224,112,64,120,64,92,64,76,64, + 70,64,71,64,67,192,65,192,64,192,224,64,11,15,30,12, + 0,0,24,0,12,0,2,0,0,0,31,0,113,192,96,192, + 192,96,192,96,192,96,192,96,192,96,96,192,113,192,31,0, + 11,15,30,12,0,0,0,192,1,128,2,0,0,0,31,0, + 113,192,96,192,192,96,192,96,192,96,192,96,192,96,96,192, + 113,192,31,0,11,15,30,12,0,0,4,0,14,0,17,0, + 0,0,31,0,113,192,96,192,192,96,192,96,192,96,192,96, + 192,96,96,192,113,192,31,0,11,14,28,12,0,0,14,128, + 23,0,0,0,31,0,113,192,96,192,192,96,192,96,192,96, + 192,96,192,96,96,192,113,192,31,0,11,14,28,12,0,0, + 25,128,25,128,0,0,31,0,113,192,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,113,192,31,0,8,7,7,8, + 0,1,195,102,60,24,60,102,195,11,11,22,12,0,0,31, + 32,113,192,96,192,193,96,194,96,196,96,200,96,208,96,96, + 192,113,192,159,0,11,15,30,12,0,0,12,0,6,0,1, + 0,0,0,240,224,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,48,128,31,0,11,15,30,12,0,0,1, + 128,3,0,4,0,0,0,240,224,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,48,128,31,0,11,15,30, + 12,0,0,4,0,14,0,17,0,0,0,240,224,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,48,128,31, + 0,11,14,28,12,0,0,25,128,25,128,0,0,240,224,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,96,64,48, + 128,31,0,10,15,30,11,0,0,1,128,3,0,4,0,0, + 0,241,192,96,128,49,0,49,0,26,0,26,0,12,0,12, + 0,12,0,12,0,30,0,9,11,22,10,0,0,240,0,96, + 0,127,0,99,128,97,128,97,128,99,128,126,0,96,0,96, + 0,240,0,8,11,11,9,0,0,30,35,99,98,108,98,99, + 99,99,99,238,8,11,11,9,0,0,48,24,4,0,60,102, + 6,62,198,206,119,8,11,11,9,0,0,12,24,32,0,60, + 102,6,62,198,206,119,8,11,11,9,0,0,16,56,108,0, + 60,102,6,62,198,206,119,8,10,10,9,0,0,52,88,0, + 60,102,6,62,198,206,119,8,10,10,9,0,0,108,108,0, + 60,102,6,62,198,206,119,8,11,11,9,0,0,24,36,24, + 0,60,102,6,62,198,206,119,13,7,14,14,0,0,57,224, + 103,48,6,24,63,248,198,0,199,24,121,240,7,10,10,8, + 0,253,60,102,198,192,194,102,60,16,8,56,8,11,11,9, + 0,0,48,24,4,0,60,102,195,255,192,99,62,8,11,11, + 9,0,0,12,24,32,0,60,102,195,255,192,99,62,8,11, + 11,9,0,0,16,56,108,0,60,102,195,255,192,99,62,8, + 10,10,9,0,0,108,108,0,60,102,195,255,192,99,62,4, + 11,11,5,0,0,192,96,16,0,224,96,96,96,96,96,240, + 4,11,11,5,0,0,48,96,128,0,224,96,96,96,96,96, + 240,5,11,11,5,0,0,32,112,216,0,224,96,96,96,96, + 96,240,5,10,10,5,0,0,216,216,0,224,96,96,96,96, + 96,240,8,11,11,9,0,0,198,56,120,140,62,102,195,195, + 195,102,60,9,10,20,10,0,0,26,0,44,0,0,0,238, + 0,115,0,99,0,99,0,99,0,99,0,247,128,8,11,11, + 9,0,0,48,24,4,0,60,102,195,195,195,102,60,8,11, + 11,9,0,0,12,24,32,0,60,102,195,195,195,102,60,8, + 11,11,9,0,0,16,56,108,0,60,102,195,195,195,102,60, + 8,10,10,9,0,0,52,88,0,60,102,195,195,195,102,60, + 8,10,10,9,0,0,108,108,0,60,102,195,195,195,102,60, + 8,7,7,8,0,1,24,24,0,255,0,24,24,8,9,9, + 9,0,255,2,60,110,203,211,211,102,60,64,9,11,22,10, + 0,0,48,0,24,0,4,0,0,0,247,128,99,0,99,0, + 99,0,99,0,103,0,59,128,9,11,22,10,0,0,12,0, + 24,0,32,0,0,0,247,128,99,0,99,0,99,0,99,0, + 103,0,59,128,9,11,22,10,0,0,8,0,28,0,54,0, + 0,0,247,128,99,0,99,0,99,0,99,0,103,0,59,128, + 9,10,20,10,0,0,54,0,54,0,0,0,247,128,99,0, + 99,0,99,0,99,0,103,0,59,128,8,14,14,7,255,253, + 6,12,16,0,247,98,98,52,52,24,24,16,208,224,9,14, + 28,10,0,253,224,0,96,0,96,0,96,0,110,0,115,0, + 97,128,97,128,97,128,115,0,110,0,96,0,96,0,240,0, + 8,13,13,7,255,253,54,54,0,247,98,98,52,52,24,24, + 16,208,224}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--14-100-100-100-P-87-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 3 y= 8 dx=15 dy= 0 ascent=12 len=28 + Font Bounding box w=20 h=25 x=-2 y=-6 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB10r[1853] U8G_SECTION(".progmem.u8g_font_ncenB10r") = { + 0,20,25,254,250,11,2,24,5,41,32,127,253,12,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,128,128,0,192,192,192,3,4,4,5,1,7,160,160, + 160,160,7,10,10,8,0,0,20,20,20,126,40,40,252,80, + 80,80,7,13,13,8,0,255,16,124,214,150,208,240,124,30, + 22,210,214,124,16,12,11,22,13,0,0,48,128,111,0,201, + 0,202,0,210,0,100,96,4,208,9,144,9,144,17,160,16, + 192,12,11,22,13,0,0,30,0,51,0,51,0,50,0,28, + 0,60,224,78,64,199,128,195,144,227,224,124,192,1,4,4, + 3,1,7,128,128,128,128,4,13,13,5,0,254,16,32,96, + 64,192,192,192,192,192,64,96,32,16,4,13,13,5,0,254, + 128,64,96,32,48,48,48,48,48,32,96,64,128,5,5,5, + 6,0,6,32,168,112,168,32,7,7,7,8,0,1,16,16, + 16,254,16,16,16,2,5,5,4,1,254,192,192,192,64,128, + 4,2,2,5,0,3,240,240,2,3,3,4,1,0,192,192, + 192,4,11,11,5,0,0,16,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,108,198,198,198,198,198,198, + 198,108,56,5,11,11,8,1,0,48,240,48,48,48,48,48, + 48,48,48,120,7,11,11,8,0,0,120,206,198,6,6,12, + 24,48,98,254,254,7,11,11,8,0,0,120,206,198,6,12, + 60,6,6,198,206,120,7,11,11,8,0,0,12,28,28,44, + 44,76,76,254,12,12,30,7,11,11,8,0,0,126,124,64, + 64,92,110,6,6,198,206,120,7,11,11,8,0,0,60,102, + 198,192,220,238,198,198,198,230,120,7,11,11,8,0,0,254, + 254,132,140,12,24,24,24,48,48,48,7,11,11,8,0,0, + 120,230,198,198,244,60,94,198,198,206,60,7,11,11,8,0, + 0,60,206,198,198,198,238,118,6,198,204,120,2,7,7,4, + 1,0,192,192,192,0,192,192,192,2,9,9,4,1,254,192, + 192,192,0,192,192,192,64,128,7,7,7,8,0,1,2,14, + 56,224,56,14,2,7,3,3,8,0,3,254,0,254,7,7, + 7,8,0,1,128,224,56,14,56,224,128,6,11,11,7,0, + 0,120,204,204,12,24,48,32,0,48,48,48,13,11,22,14, + 0,0,15,192,56,112,99,152,108,216,204,216,217,152,217,176, + 219,176,205,192,96,16,63,224,10,11,22,11,0,0,12,0, + 12,0,22,0,22,0,18,0,35,0,35,0,63,0,65,128, + 65,128,227,192,9,11,22,10,0,0,254,0,99,0,99,0, + 99,0,102,0,127,0,97,128,97,128,97,128,99,128,254,0, + 10,11,22,11,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,192,0,192,0,96,64,112,192,31,0,11,11,22,12, + 0,0,255,0,97,192,96,192,96,96,96,96,96,96,96,96, + 96,96,96,192,97,192,255,0,9,11,22,10,0,0,255,128, + 97,128,96,128,100,128,100,0,124,0,100,0,100,128,96,128, + 97,128,255,128,9,11,22,10,0,0,255,128,97,128,96,128, + 100,128,100,0,124,0,100,0,100,0,96,0,96,0,240,0, + 11,11,22,12,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,195,224,192,192,96,192,113,192,30,64,11,11,22,12, + 0,0,241,224,96,192,96,192,96,192,96,192,127,192,96,192, + 96,192,96,192,96,192,241,224,4,11,11,7,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,11,11,9,0,0,30, + 12,12,12,12,12,12,204,204,156,112,11,11,22,12,0,0, + 243,192,97,0,98,0,100,0,104,0,124,0,110,0,103,0, + 99,128,97,192,243,224,9,11,22,10,0,0,240,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,128,96,128,97,128, + 255,128,13,11,22,14,0,0,240,120,112,112,112,112,88,176, + 88,176,88,176,77,48,77,48,77,48,70,48,230,120,11,11, + 22,12,0,0,224,224,112,64,120,64,92,64,76,64,70,64, + 71,64,67,192,65,192,64,192,224,64,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,9,11,22,10,0,0,255,0,99,128, + 97,128,97,128,99,128,126,0,96,0,96,0,96,0,96,0, + 240,0,11,14,28,12,0,253,31,0,113,192,96,192,192,96, + 192,96,192,96,192,96,220,96,102,192,115,192,31,0,3,32, + 3,160,1,192,11,11,22,12,0,0,255,0,99,128,97,128, + 97,128,99,0,126,0,99,0,99,0,97,128,97,160,241,192, + 9,11,22,10,0,0,61,0,227,0,193,0,193,0,240,0, + 126,0,15,128,129,128,129,128,195,128,190,0,10,11,22,11, + 0,0,255,192,204,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,30,0,11,11,22,12,0,0,240,224, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,96,64, + 48,128,31,0,10,11,22,11,0,0,241,192,96,128,96,128, + 49,0,49,0,49,0,26,0,26,0,26,0,12,0,12,0, + 13,11,22,14,0,0,247,184,99,16,99,16,99,16,53,160, + 53,160,53,160,53,160,24,192,24,192,24,192,11,11,22,12, + 0,0,249,224,112,192,48,128,25,0,13,0,14,0,22,0, + 19,0,33,128,97,192,243,224,10,11,22,11,0,0,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,12,0, + 12,0,30,0,8,11,11,9,0,0,255,195,135,142,12,24, + 48,113,225,195,255,4,13,13,5,0,254,240,192,192,192,192, + 192,192,192,192,192,192,192,240,6,11,11,7,0,0,128,128, + 64,64,32,32,16,16,8,8,4,4,13,13,5,0,254,240, + 48,48,48,48,48,48,48,48,48,48,48,240,7,7,7,8, + 0,4,16,16,56,40,108,68,198,7,1,1,7,0,254,254, + 4,3,3,6,1,8,192,96,16,8,7,7,9,0,0,60, + 102,6,62,198,206,119,9,11,22,10,0,0,224,0,96,0, + 96,0,96,0,110,0,115,0,97,128,97,128,97,128,99,0, + 94,0,7,7,7,8,0,0,60,102,198,192,194,102,60,9, + 11,22,10,0,0,7,0,3,0,3,0,3,0,59,0,103, + 0,195,0,195,0,195,0,103,0,59,128,8,7,7,9,0, + 0,60,102,195,255,192,99,62,6,11,11,6,0,0,56,108, + 108,96,248,96,96,96,96,96,240,7,11,11,8,0,253,6, + 124,198,198,124,128,252,126,130,134,124,9,11,22,10,0,0, + 224,0,96,0,96,0,96,0,110,0,115,0,99,0,99,0, + 99,0,99,0,247,128,4,10,10,5,0,0,96,96,0,224, + 96,96,96,96,96,240,5,13,13,5,254,253,24,24,0,56, + 24,24,24,24,24,24,24,216,112,8,11,11,9,0,0,224, + 96,96,96,103,102,108,120,108,102,231,4,11,11,5,0,0, + 224,96,96,96,96,96,96,96,96,96,240,14,7,14,15,0, + 0,238,112,115,152,99,24,99,24,99,24,99,24,247,188,9, + 7,14,10,0,0,238,0,115,0,99,0,99,0,99,0,99, + 0,247,128,8,7,7,9,0,0,60,102,195,195,195,102,60, + 9,10,20,10,0,253,238,0,115,0,97,128,97,128,97,128, + 115,0,110,0,96,0,96,0,240,0,9,10,20,9,0,253, + 61,0,103,0,195,0,195,0,195,0,103,0,59,0,3,0, + 3,0,7,128,7,7,7,7,0,0,238,118,96,96,96,96, + 240,6,7,7,7,0,0,124,196,224,120,28,140,248,6,10, + 10,6,0,0,32,32,96,248,96,96,96,100,100,56,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,8,7,7,7,255,0,247,98,98,52,52,24,24,13, + 7,14,12,255,0,247,184,99,16,99,16,53,160,53,160,24, + 192,24,192,8,7,7,9,0,0,231,102,60,24,60,70,231, + 8,10,10,7,255,253,247,98,98,52,52,24,24,16,208,224, + 6,7,7,7,0,0,252,140,24,48,96,196,252,5,13,13, + 6,0,254,24,32,96,96,96,64,128,64,96,96,96,32,24, + 1,11,11,8,3,0,128,128,128,128,128,128,128,128,128,128, + 128,5,13,13,6,0,254,192,32,48,48,48,16,8,16,48, + 48,48,32,192,7,2,2,8,0,4,118,220,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--17-120-100-100-P-99-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y=10 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=22 h=27 x=-3 y=-7 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =16 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB12[4735] U8G_SECTION(".progmem.u8g_font_ncenB12") = { + 0,22,27,253,249,12,2,152,5,246,32,255,253,16,253,12, + 253,0,0,0,4,1,1,3,12,12,5,1,0,64,224,224, + 224,224,64,64,0,64,224,224,64,5,5,5,6,0,7,216, + 216,216,144,144,10,12,24,10,0,0,25,128,25,128,25,128, + 127,192,127,192,51,0,51,0,255,128,255,128,102,0,102,0, + 102,0,9,15,30,10,0,255,8,0,8,0,62,0,105,0, + 203,128,201,0,252,0,127,0,31,128,73,128,233,128,201,128, + 107,0,62,0,8,0,12,12,24,14,1,0,56,128,119,128, + 101,0,197,0,202,0,202,224,117,208,5,144,11,16,11,32, + 19,32,17,192,12,12,24,14,1,0,15,0,25,128,25,128, + 25,0,30,0,60,240,110,96,231,64,199,128,227,144,243,240, + 124,224,2,5,5,4,1,7,192,192,192,128,128,4,14,14, + 6,1,254,16,32,96,96,192,192,192,192,192,192,96,96,32, + 16,4,14,14,6,0,254,128,64,96,96,48,48,48,48,48, + 48,96,96,64,128,7,7,7,8,0,5,16,84,214,56,214, + 84,16,8,8,8,10,1,0,24,24,24,255,255,24,24,24, + 4,6,6,5,0,253,96,240,112,32,96,128,4,2,2,5, + 0,3,240,240,4,3,3,5,0,0,96,240,96,5,12,12, + 5,0,0,8,8,16,16,16,32,32,64,64,64,128,128,9, + 12,24,10,0,0,28,0,54,0,99,0,99,0,227,128,227, + 128,227,128,227,128,99,0,99,0,54,0,28,0,7,12,12, + 10,1,0,24,248,56,56,56,56,56,56,56,56,56,254,8, + 12,12,10,1,0,60,70,231,231,71,14,12,24,49,97,255, + 255,9,12,24,10,0,0,62,0,103,0,115,0,35,0,6, + 0,31,0,7,0,3,128,99,128,243,128,103,0,62,0,9, + 12,24,10,0,0,2,0,6,0,14,0,30,0,46,0,46, + 0,78,0,142,0,255,128,14,0,14,0,63,128,8,12,12, + 10,1,0,127,126,64,64,124,78,7,71,231,231,206,124,9, + 12,24,10,0,0,31,0,51,128,103,128,99,0,224,0,238, + 0,247,0,227,128,227,128,99,128,119,0,30,0,8,12,12, + 10,1,0,255,254,134,134,132,12,12,24,24,56,56,16,8, + 12,12,10,1,0,60,102,231,231,102,60,102,231,231,231,102, + 60,9,12,24,10,0,0,60,0,119,0,227,0,227,128,227, + 128,119,128,59,128,3,128,99,0,243,0,230,0,124,0,4, + 8,8,5,0,0,96,240,96,0,0,96,240,96,4,11,11, + 5,0,253,96,240,96,0,0,96,240,112,32,96,128,8,8, + 8,10,1,1,3,15,60,240,240,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,1,192,240, + 60,15,15,60,240,192,8,12,12,8,0,0,60,102,247,103, + 14,12,16,0,16,56,56,16,12,13,26,12,0,255,15,128, + 56,224,96,32,70,176,205,144,153,144,153,144,153,176,219,160, + 76,64,96,48,56,224,15,128,13,12,24,13,0,0,6,0, + 7,0,7,0,15,0,11,128,27,128,17,192,63,192,49,192, + 32,224,96,224,241,248,12,12,24,13,0,0,255,192,56,224, + 56,112,56,112,56,224,63,192,56,224,56,112,56,112,56,112, + 56,224,255,192,11,12,24,13,1,0,15,160,56,224,112,96, + 112,32,224,32,224,0,224,0,224,32,112,32,112,64,56,192, + 15,0,13,12,24,14,0,0,255,128,56,224,56,112,56,112, + 56,56,56,56,56,56,56,56,56,112,56,112,56,224,255,128, + 11,12,24,12,0,0,255,224,56,96,56,96,57,32,59,0, + 63,0,59,0,57,32,56,32,56,96,56,96,255,224,11,12, + 24,12,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,0,56,0,56,0,56,0,254,0,13,12,24,14, + 1,0,15,160,56,224,112,96,112,32,224,32,224,0,227,248, + 224,224,112,224,112,224,57,224,15,32,14,12,24,15,0,0, + 254,252,56,112,56,112,56,112,56,112,63,240,56,112,56,112, + 56,112,56,112,56,112,254,252,7,12,12,7,0,0,254,56, + 56,56,56,56,56,56,56,56,56,254,10,12,24,11,0,0, + 31,192,7,0,7,0,7,0,7,0,7,0,103,0,247,0, + 231,0,135,0,206,0,124,0,14,12,24,13,0,0,254,248, + 56,96,56,192,57,128,59,0,63,128,63,128,59,192,57,224, + 56,240,56,120,254,252,11,12,24,12,0,0,254,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,32,56,32,56,96, + 56,96,255,224,16,12,24,16,0,0,252,63,60,60,46,60, + 46,92,46,92,39,92,39,156,39,156,35,156,35,28,33,28, + 249,63,14,12,24,14,0,0,240,124,56,16,60,16,62,16, + 47,16,39,144,35,208,33,240,32,240,32,112,32,48,248,16, + 12,12,24,14,1,0,15,0,57,192,112,224,112,224,224,112, + 224,112,224,112,224,112,112,224,112,224,57,192,15,0,12,12, + 24,13,0,0,255,192,56,224,56,112,56,112,56,112,56,224, + 63,192,56,0,56,0,56,0,56,0,254,0,12,15,30,14, + 1,253,15,0,57,192,112,224,112,224,224,112,224,112,224,112, + 230,112,105,96,121,224,57,192,15,128,1,208,1,240,0,224, + 13,12,24,14,0,0,255,192,56,224,56,112,56,112,56,224, + 63,192,57,128,57,192,56,224,56,232,56,248,252,112,9,12, + 24,11,1,0,62,128,67,128,193,128,192,128,248,128,126,0, + 63,0,143,128,129,128,193,128,225,0,190,0,11,12,24,12, + 0,0,255,224,206,96,142,32,142,32,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,63,128,14,12,24,14,0,0, + 254,124,56,16,56,16,56,16,56,16,56,16,56,16,56,16, + 56,16,28,32,30,96,7,128,13,12,24,13,255,0,254,120, + 56,48,60,32,28,32,28,64,14,64,14,128,15,128,7,128, + 7,0,3,0,3,0,15,12,24,16,0,0,251,222,113,140, + 49,136,57,200,57,216,59,208,26,208,30,240,28,224,12,96, + 12,96,12,96,12,12,24,12,0,0,249,240,112,96,56,64, + 28,128,31,0,15,0,15,0,15,128,19,192,33,192,96,224, + 249,240,13,12,24,12,255,0,254,248,56,96,28,64,28,128, + 14,128,15,0,7,0,7,0,7,0,7,0,7,0,31,192, + 9,12,24,11,1,0,255,128,195,128,135,0,135,0,14,0, + 28,0,28,0,56,128,112,128,113,128,227,128,255,128,4,14, + 14,6,1,254,240,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,12,12,10,1,0,192,192,96,96,48,48,24,24, + 12,12,6,6,4,14,14,7,1,254,240,48,48,48,48,48, + 48,48,48,48,48,48,48,240,8,7,7,10,1,5,24,24, + 60,102,102,195,195,8,2,2,8,0,254,255,255,4,3,3, + 6,0,9,192,224,48,9,8,16,10,0,0,126,0,231,0, + 199,0,31,0,103,0,231,0,239,0,119,128,11,12,24,11, + 255,0,248,0,56,0,56,0,56,0,59,128,61,192,56,224, + 56,224,56,224,56,224,61,192,43,128,8,8,8,9,0,0, + 62,115,231,224,224,227,118,60,11,12,24,11,0,0,7,128, + 3,128,3,128,3,128,59,128,119,128,227,128,227,128,227,128, + 227,128,119,128,58,224,9,8,16,10,0,0,62,0,119,0, + 227,128,255,128,224,0,225,128,115,0,62,0,9,12,24,7, + 255,0,15,0,27,128,59,0,56,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,254,0,9,12,24,10,0,253, + 1,128,63,128,119,0,227,128,227,128,247,0,124,0,96,0, + 127,0,255,128,195,128,255,0,11,12,24,11,255,0,240,0, + 112,0,112,0,112,0,119,128,121,192,121,192,113,192,113,192, + 113,192,113,192,251,224,5,12,12,6,0,0,96,240,96,0, + 240,112,112,112,112,112,112,248,6,15,15,6,254,253,24,60, + 24,0,124,28,28,28,28,28,28,28,220,216,112,11,12,24, + 11,0,0,240,0,112,0,112,0,112,0,119,192,115,128,119, + 0,126,0,127,0,115,128,113,192,251,224,5,12,12,6,0, + 0,240,112,112,112,112,112,112,112,112,112,112,248,15,8,16, + 16,0,0,247,56,123,220,115,156,115,156,115,156,115,156,115, + 156,251,190,11,8,16,11,255,0,247,128,121,192,113,192,113, + 192,113,192,113,192,113,192,251,224,10,8,16,11,0,0,30, + 0,115,128,225,192,225,192,225,192,225,192,115,128,30,0,10, + 11,22,11,255,253,247,0,123,128,113,192,113,192,113,192,113, + 192,123,128,119,0,112,0,112,0,248,0,10,11,22,10,255, + 253,62,128,115,128,227,128,227,128,227,128,227,128,115,128,63, + 128,3,128,3,128,7,192,9,8,16,9,0,0,247,0,123, + 128,115,0,112,0,112,0,112,0,112,0,248,0,7,8,8, + 8,0,0,122,198,226,252,126,142,198,188,6,11,11,7,0, + 0,16,16,48,252,112,112,112,112,116,124,56,11,8,16,11, + 255,0,243,192,113,192,113,192,113,192,113,192,113,192,123,192, + 62,224,10,8,16,10,0,0,251,192,113,128,115,0,59,0, + 58,0,30,0,28,0,12,0,15,8,16,15,0,0,251,222, + 113,140,57,200,59,216,30,240,30,240,12,96,12,96,9,8, + 16,10,0,0,251,128,113,0,62,0,28,0,28,0,62,0, + 71,0,239,128,10,11,22,10,255,253,251,192,113,128,57,128, + 57,0,31,0,14,0,14,0,6,0,52,0,116,0,56,0, + 7,8,8,9,0,0,254,204,156,56,48,114,230,254,4,14, + 14,6,1,254,48,96,96,96,96,96,192,96,96,96,96,96, + 96,48,2,12,12,10,4,0,192,192,192,192,192,192,192,192, + 192,192,192,192,4,14,14,6,0,254,192,96,96,96,96,96, + 48,96,96,96,96,96,96,192,8,3,3,10,1,3,114,255, + 78,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,0,0,0,4,1,1,3,12,12,5,1,253,64,224, + 224,64,0,64,64,224,224,224,224,64,8,12,12,10,0,254, + 1,2,62,115,231,231,232,233,114,60,32,64,9,12,24,10, + 0,0,31,0,57,128,115,128,115,128,113,0,56,0,254,0, + 24,0,24,0,120,128,191,0,110,0,8,8,8,10,1,2, + 90,255,102,195,195,102,255,90,10,12,24,10,0,0,251,192, + 113,128,49,0,59,0,26,0,30,0,63,0,12,0,63,0, + 12,0,12,0,63,0,2,12,12,10,4,0,192,192,192,192, + 192,0,0,192,192,192,192,192,6,15,15,9,1,253,56,76, + 76,96,48,120,140,132,196,120,48,24,200,200,112,5,2,2, + 6,0,9,216,216,12,12,24,12,0,0,31,128,57,192,96, + 96,207,176,217,48,152,16,152,16,217,176,207,48,96,96,57, + 192,31,128,6,7,7,6,0,5,112,152,120,216,108,0,248, + 6,5,5,8,1,2,36,108,216,108,36,8,5,5,10,0, + 2,255,255,3,3,3,4,2,2,5,0,3,240,240,12,12, + 24,12,0,0,31,128,57,192,96,96,223,48,201,48,142,16, + 139,16,201,176,221,240,96,96,57,192,31,128,5,1,1,6, + 0,10,248,5,5,5,7,1,7,112,216,136,216,112,8,9, + 9,10,1,0,24,24,255,255,24,24,0,255,255,5,7,7, + 6,0,5,112,152,216,16,32,120,248,6,7,7,6,0,5, + 120,204,76,24,76,204,120,4,3,3,6,1,9,48,112,192, + 11,11,22,11,0,253,243,192,113,192,113,192,113,192,113,192, + 113,192,123,192,110,224,96,0,112,0,112,0,11,12,24,12, + 0,0,127,224,249,128,249,128,249,128,249,128,121,128,25,128, + 25,128,25,128,25,128,25,128,127,224,4,3,3,5,0,3, + 96,240,96,4,4,4,6,0,253,64,96,48,224,4,7,7, + 6,1,5,32,224,96,96,96,96,240,5,7,7,6,0,5, + 112,216,216,216,112,0,248,6,5,5,8,1,2,144,216,108, + 216,144,12,12,24,14,1,0,32,64,224,192,97,128,97,0, + 99,0,98,32,246,96,12,224,9,32,27,240,48,96,32,240, + 12,12,24,14,1,0,32,64,224,192,97,128,97,0,99,0, + 98,224,247,48,13,176,8,32,24,64,48,240,33,240,13,12, + 24,14,0,0,120,32,204,96,76,192,24,128,77,128,205,16, + 123,48,6,112,4,144,13,248,24,48,16,120,8,12,12,8, + 0,253,8,28,28,8,0,8,48,112,230,239,102,60,13,16, + 32,13,0,0,24,0,28,0,6,0,0,0,6,0,7,0, + 7,0,15,0,11,128,27,128,17,192,63,192,49,192,32,224, + 96,224,241,248,13,16,32,13,0,0,1,128,3,128,6,0, + 0,0,6,0,7,0,7,0,15,0,11,128,27,128,17,192, + 63,192,49,192,32,224,96,224,241,248,13,16,32,13,0,0, + 2,0,7,0,13,128,0,0,6,0,7,0,7,0,15,0, + 11,128,27,128,17,192,63,192,49,192,32,224,96,224,241,248, + 13,15,30,13,0,0,14,128,23,0,0,0,6,0,7,0, + 7,0,15,0,11,128,27,128,17,192,63,192,49,192,32,224, + 96,224,241,248,13,15,30,13,0,0,25,128,25,128,0,0, + 6,0,7,0,7,0,15,0,11,128,27,128,17,192,63,192, + 49,192,32,224,96,224,241,248,13,16,32,13,0,0,6,0, + 11,0,6,0,0,0,6,0,7,0,7,0,15,0,11,128, + 27,128,17,192,63,192,49,192,32,224,96,224,241,248,16,12, + 24,16,255,0,31,255,7,195,5,195,5,201,9,216,9,248, + 17,216,31,201,33,193,33,195,97,195,247,255,11,15,30,13, + 1,253,15,160,56,224,112,96,112,32,224,32,224,0,224,0, + 224,32,112,32,112,64,56,192,15,0,12,0,6,0,28,0, + 11,16,32,12,0,0,24,0,28,0,6,0,0,0,255,224, + 56,96,56,96,57,32,59,0,63,0,59,0,57,32,56,32, + 56,96,56,96,255,224,11,16,32,12,0,0,1,128,3,128, + 6,0,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,32,56,32,56,96,56,96,255,224,11,16,32,12, + 0,0,2,0,7,0,13,128,0,0,255,224,56,96,56,96, + 57,32,59,0,63,0,59,0,57,32,56,32,56,96,56,96, + 255,224,11,15,30,12,0,0,25,128,25,128,0,0,255,224, + 56,96,56,96,57,32,59,0,63,0,59,0,57,32,56,32, + 56,96,56,96,255,224,7,16,16,7,0,0,96,112,24,0, + 254,56,56,56,56,56,56,56,56,56,56,254,7,16,16,7, + 0,0,12,28,48,0,254,56,56,56,56,56,56,56,56,56, + 56,254,7,16,16,7,0,0,16,56,108,0,254,56,56,56, + 56,56,56,56,56,56,56,254,7,15,15,7,0,0,108,108, + 0,254,56,56,56,56,56,56,56,56,56,56,254,13,12,24, + 14,0,0,255,128,56,224,56,112,56,112,56,56,126,56,56, + 56,56,56,56,112,56,112,56,224,255,128,14,15,30,14,0, + 0,7,64,11,128,0,0,240,124,56,16,60,16,62,16,47, + 16,39,144,35,208,33,240,32,240,32,112,32,48,248,16,12, + 16,32,14,1,0,24,0,28,0,6,0,0,0,15,0,57, + 192,112,224,112,224,224,112,224,112,224,112,224,112,112,224,112, + 224,57,192,15,0,12,16,32,14,1,0,1,128,3,128,6, + 0,0,0,15,0,57,192,112,224,112,224,224,112,224,112,224, + 112,224,112,112,224,112,224,57,192,15,0,12,16,32,14,1, + 0,6,0,15,0,25,128,0,0,15,0,57,192,112,224,112, + 224,224,112,224,112,224,112,224,112,112,224,112,224,57,192,15, + 0,12,15,30,14,1,0,14,128,23,0,0,0,15,0,57, + 192,112,224,112,224,224,112,224,112,224,112,224,112,112,224,112, + 224,57,192,15,0,12,15,30,14,1,0,25,128,25,128,0, + 0,15,0,57,192,112,224,112,224,224,112,224,112,224,112,224, + 112,112,224,112,224,57,192,15,0,8,8,8,10,1,0,66, + 231,126,56,28,126,231,66,12,14,28,14,1,255,0,16,15, + 32,57,192,112,224,112,224,225,112,226,112,228,112,232,112,112, + 224,112,224,57,192,79,0,128,0,14,16,32,14,0,0,6, + 0,7,0,1,128,0,0,254,124,56,16,56,16,56,16,56, + 16,56,16,56,16,56,16,56,16,28,32,30,96,7,128,14, + 16,32,14,0,0,0,96,0,224,1,128,0,0,254,124,56, + 16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,28, + 32,30,96,7,128,14,16,32,14,0,0,1,128,3,192,6, + 96,0,0,254,124,56,16,56,16,56,16,56,16,56,16,56, + 16,56,16,56,16,28,32,30,96,7,128,14,15,30,14,0, + 0,6,96,6,96,0,0,254,124,56,16,56,16,56,16,56, + 16,56,16,56,16,56,16,56,16,28,32,30,96,7,128,13, + 16,32,12,255,0,0,192,1,192,3,0,0,0,254,248,56, + 96,28,64,28,128,14,128,15,0,7,0,7,0,7,0,7, + 0,7,0,31,192,12,12,24,13,0,0,254,0,56,0,63, + 192,56,224,56,112,56,112,56,112,56,224,63,192,56,0,56, + 0,254,0,10,12,24,10,0,0,31,0,51,128,115,128,115, + 128,115,0,119,0,113,128,113,192,113,192,113,192,123,128,247, + 0,9,12,24,10,0,0,96,0,112,0,24,0,0,0,126, + 0,231,0,199,0,31,0,103,0,231,0,239,0,119,128,9, + 12,24,10,0,0,6,0,14,0,24,0,0,0,126,0,231, + 0,199,0,31,0,103,0,231,0,239,0,119,128,9,12,24, + 10,0,0,16,0,56,0,108,0,0,0,126,0,231,0,199, + 0,31,0,103,0,231,0,239,0,119,128,9,11,22,10,0, + 0,58,0,92,0,0,0,126,0,231,0,199,0,31,0,103, + 0,231,0,239,0,119,128,9,11,22,10,0,0,108,0,108, + 0,0,0,126,0,231,0,199,0,31,0,103,0,231,0,239, + 0,119,128,9,12,24,10,0,0,24,0,44,0,24,0,0, + 0,126,0,231,0,199,0,31,0,103,0,231,0,239,0,119, + 128,13,8,16,15,0,0,125,224,231,48,199,56,63,248,103, + 0,231,24,239,48,123,224,8,11,11,9,0,253,62,115,231, + 227,224,227,118,60,24,12,56,9,12,24,10,0,0,48,0, + 56,0,12,0,0,0,62,0,119,0,227,128,255,128,224,0, + 225,128,115,0,62,0,9,12,24,10,0,0,6,0,14,0, + 24,0,0,0,62,0,119,0,227,128,255,128,224,0,225,128, + 115,0,62,0,9,12,24,10,0,0,8,0,28,0,54,0, + 0,0,62,0,119,0,227,128,255,128,224,0,225,128,115,0, + 62,0,9,11,22,10,0,0,54,0,54,0,0,0,62,0, + 119,0,227,128,255,128,224,0,225,128,115,0,62,0,5,12, + 12,6,0,0,192,224,48,0,240,112,112,112,112,112,112,248, + 5,12,12,6,0,0,24,56,96,0,240,112,112,112,112,112, + 112,248,5,12,12,6,0,0,32,112,216,0,240,112,112,112, + 112,112,112,248,5,11,11,6,0,0,216,216,0,240,112,112, + 112,112,112,112,248,9,13,26,11,0,0,96,0,59,0,28, + 0,54,0,7,0,31,0,119,128,227,128,227,128,227,128,227, + 128,119,0,28,0,11,11,22,11,255,0,14,128,23,0,0, + 0,247,128,121,192,113,192,113,192,113,192,113,192,113,192,251, + 224,10,12,24,11,0,0,24,0,28,0,6,0,0,0,63, + 0,115,128,225,192,225,192,225,192,225,192,115,128,63,0,10, + 12,24,11,0,0,3,0,7,0,12,0,0,0,63,0,115, + 128,225,192,225,192,225,192,225,192,115,128,63,0,10,12,24, + 11,0,0,12,0,30,0,51,0,0,0,63,0,115,128,225, + 192,225,192,225,192,225,192,115,128,63,0,10,11,22,11,0, + 0,29,0,46,0,0,0,63,0,115,128,225,192,225,192,225, + 192,225,192,115,128,63,0,10,11,22,11,0,0,54,0,54, + 0,0,0,63,0,115,128,225,192,225,192,225,192,225,192,115, + 128,63,0,8,8,8,10,1,0,24,24,0,255,255,0,24, + 24,9,12,24,10,0,254,0,128,1,0,30,0,115,0,231, + 128,235,128,235,128,243,128,103,0,60,0,64,0,128,0,11, + 12,24,11,255,0,24,0,28,0,6,0,0,0,243,192,113, + 192,113,192,113,192,113,192,113,192,123,192,62,224,11,12,24, + 11,255,0,3,0,7,0,12,0,0,0,243,192,113,192,113, + 192,113,192,113,192,113,192,123,192,62,224,11,12,24,11,255, + 0,4,0,14,0,27,0,0,0,243,192,113,192,113,192,113, + 192,113,192,113,192,123,192,62,224,11,11,22,11,255,0,27, + 0,27,0,0,0,243,192,113,192,113,192,113,192,113,192,113, + 192,123,192,62,224,11,15,30,10,255,253,3,0,7,0,12, + 0,0,0,251,224,112,192,56,128,25,128,29,0,15,0,14, + 0,6,0,52,0,116,0,56,0,10,15,30,11,255,253,240, + 0,112,0,112,0,112,0,119,0,123,128,113,192,113,192,113, + 192,113,192,123,128,119,0,112,0,112,0,252,0,11,14,28, + 10,255,253,27,0,27,0,0,0,251,224,48,192,56,128,25, + 128,29,0,15,0,14,0,6,0,52,0,116,0,56,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--17-120-100-100-P-99-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=15 x= 4 y= 9 dx=16 dy= 0 ascent=14 len=30 + Font Bounding box w=22 h=27 x=-3 y=-7 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB12r[2194] U8G_SECTION(".progmem.u8g_font_ncenB12r") = { + 0,22,27,253,249,12,2,152,5,246,32,127,253,14,253,12, + 253,0,0,0,4,1,1,3,12,12,5,1,0,64,224,224, + 224,224,64,64,0,64,224,224,64,5,5,5,6,0,7,216, + 216,216,144,144,10,12,24,10,0,0,25,128,25,128,25,128, + 127,192,127,192,51,0,51,0,255,128,255,128,102,0,102,0, + 102,0,9,15,30,10,0,255,8,0,8,0,62,0,105,0, + 203,128,201,0,252,0,127,0,31,128,73,128,233,128,201,128, + 107,0,62,0,8,0,12,12,24,14,1,0,56,128,119,128, + 101,0,197,0,202,0,202,224,117,208,5,144,11,16,11,32, + 19,32,17,192,12,12,24,14,1,0,15,0,25,128,25,128, + 25,0,30,0,60,240,110,96,231,64,199,128,227,144,243,240, + 124,224,2,5,5,4,1,7,192,192,192,128,128,4,14,14, + 6,1,254,16,32,96,96,192,192,192,192,192,192,96,96,32, + 16,4,14,14,6,0,254,128,64,96,96,48,48,48,48,48, + 48,96,96,64,128,7,7,7,8,0,5,16,84,214,56,214, + 84,16,8,8,8,10,1,0,24,24,24,255,255,24,24,24, + 4,6,6,5,0,253,96,240,112,32,96,128,4,2,2,5, + 0,3,240,240,4,3,3,5,0,0,96,240,96,5,12,12, + 5,0,0,8,8,16,16,16,32,32,64,64,64,128,128,9, + 12,24,10,0,0,28,0,54,0,99,0,99,0,227,128,227, + 128,227,128,227,128,99,0,99,0,54,0,28,0,7,12,12, + 10,1,0,24,248,56,56,56,56,56,56,56,56,56,254,8, + 12,12,10,1,0,60,70,231,231,71,14,12,24,49,97,255, + 255,9,12,24,10,0,0,62,0,103,0,115,0,35,0,6, + 0,31,0,7,0,3,128,99,128,243,128,103,0,62,0,9, + 12,24,10,0,0,2,0,6,0,14,0,30,0,46,0,46, + 0,78,0,142,0,255,128,14,0,14,0,63,128,8,12,12, + 10,1,0,127,126,64,64,124,78,7,71,231,231,206,124,9, + 12,24,10,0,0,31,0,51,128,103,128,99,0,224,0,238, + 0,247,0,227,128,227,128,99,128,119,0,30,0,8,12,12, + 10,1,0,255,254,134,134,132,12,12,24,24,56,56,16,8, + 12,12,10,1,0,60,102,231,231,102,60,102,231,231,231,102, + 60,9,12,24,10,0,0,60,0,119,0,227,0,227,128,227, + 128,119,128,59,128,3,128,99,0,243,0,230,0,124,0,4, + 8,8,5,0,0,96,240,96,0,0,96,240,96,4,11,11, + 5,0,253,96,240,96,0,0,96,240,112,32,96,128,8,8, + 8,10,1,1,3,15,60,240,240,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,1,192,240, + 60,15,15,60,240,192,8,12,12,8,0,0,60,102,247,103, + 14,12,16,0,16,56,56,16,12,13,26,12,0,255,15,128, + 56,224,96,32,70,176,205,144,153,144,153,144,153,176,219,160, + 76,64,96,48,56,224,15,128,13,12,24,13,0,0,6,0, + 7,0,7,0,15,0,11,128,27,128,17,192,63,192,49,192, + 32,224,96,224,241,248,12,12,24,13,0,0,255,192,56,224, + 56,112,56,112,56,224,63,192,56,224,56,112,56,112,56,112, + 56,224,255,192,11,12,24,13,1,0,15,160,56,224,112,96, + 112,32,224,32,224,0,224,0,224,32,112,32,112,64,56,192, + 15,0,13,12,24,14,0,0,255,128,56,224,56,112,56,112, + 56,56,56,56,56,56,56,56,56,112,56,112,56,224,255,128, + 11,12,24,12,0,0,255,224,56,96,56,96,57,32,59,0, + 63,0,59,0,57,32,56,32,56,96,56,96,255,224,11,12, + 24,12,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,0,56,0,56,0,56,0,254,0,13,12,24,14, + 1,0,15,160,56,224,112,96,112,32,224,32,224,0,227,248, + 224,224,112,224,112,224,57,224,15,32,14,12,24,15,0,0, + 254,252,56,112,56,112,56,112,56,112,63,240,56,112,56,112, + 56,112,56,112,56,112,254,252,7,12,12,7,0,0,254,56, + 56,56,56,56,56,56,56,56,56,254,10,12,24,11,0,0, + 31,192,7,0,7,0,7,0,7,0,7,0,103,0,247,0, + 231,0,135,0,206,0,124,0,14,12,24,13,0,0,254,248, + 56,96,56,192,57,128,59,0,63,128,63,128,59,192,57,224, + 56,240,56,120,254,252,11,12,24,12,0,0,254,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,32,56,32,56,96, + 56,96,255,224,16,12,24,16,0,0,252,63,60,60,46,60, + 46,92,46,92,39,92,39,156,39,156,35,156,35,28,33,28, + 249,63,14,12,24,14,0,0,240,124,56,16,60,16,62,16, + 47,16,39,144,35,208,33,240,32,240,32,112,32,48,248,16, + 12,12,24,14,1,0,15,0,57,192,112,224,112,224,224,112, + 224,112,224,112,224,112,112,224,112,224,57,192,15,0,12,12, + 24,13,0,0,255,192,56,224,56,112,56,112,56,112,56,224, + 63,192,56,0,56,0,56,0,56,0,254,0,12,15,30,14, + 1,253,15,0,57,192,112,224,112,224,224,112,224,112,224,112, + 230,112,105,96,121,224,57,192,15,128,1,208,1,240,0,224, + 13,12,24,14,0,0,255,192,56,224,56,112,56,112,56,224, + 63,192,57,128,57,192,56,224,56,232,56,248,252,112,9,12, + 24,11,1,0,62,128,67,128,193,128,192,128,248,128,126,0, + 63,0,143,128,129,128,193,128,225,0,190,0,11,12,24,12, + 0,0,255,224,206,96,142,32,142,32,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,63,128,14,12,24,14,0,0, + 254,124,56,16,56,16,56,16,56,16,56,16,56,16,56,16, + 56,16,28,32,30,96,7,128,13,12,24,13,255,0,254,120, + 56,48,60,32,28,32,28,64,14,64,14,128,15,128,7,128, + 7,0,3,0,3,0,15,12,24,16,0,0,251,222,113,140, + 49,136,57,200,57,216,59,208,26,208,30,240,28,224,12,96, + 12,96,12,96,12,12,24,12,0,0,249,240,112,96,56,64, + 28,128,31,0,15,0,15,0,15,128,19,192,33,192,96,224, + 249,240,13,12,24,12,255,0,254,248,56,96,28,64,28,128, + 14,128,15,0,7,0,7,0,7,0,7,0,7,0,31,192, + 9,12,24,11,1,0,255,128,195,128,135,0,135,0,14,0, + 28,0,28,0,56,128,112,128,113,128,227,128,255,128,4,14, + 14,6,1,254,240,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,12,12,10,1,0,192,192,96,96,48,48,24,24, + 12,12,6,6,4,14,14,7,1,254,240,48,48,48,48,48, + 48,48,48,48,48,48,48,240,8,7,7,10,1,5,24,24, + 60,102,102,195,195,8,2,2,8,0,254,255,255,4,3,3, + 6,0,9,192,224,48,9,8,16,10,0,0,126,0,231,0, + 199,0,31,0,103,0,231,0,239,0,119,128,11,12,24,11, + 255,0,248,0,56,0,56,0,56,0,59,128,61,192,56,224, + 56,224,56,224,56,224,61,192,43,128,8,8,8,9,0,0, + 62,115,231,224,224,227,118,60,11,12,24,11,0,0,7,128, + 3,128,3,128,3,128,59,128,119,128,227,128,227,128,227,128, + 227,128,119,128,58,224,9,8,16,10,0,0,62,0,119,0, + 227,128,255,128,224,0,225,128,115,0,62,0,9,12,24,7, + 255,0,15,0,27,128,59,0,56,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,254,0,9,12,24,10,0,253, + 1,128,63,128,119,0,227,128,227,128,247,0,124,0,96,0, + 127,0,255,128,195,128,255,0,11,12,24,11,255,0,240,0, + 112,0,112,0,112,0,119,128,121,192,121,192,113,192,113,192, + 113,192,113,192,251,224,5,12,12,6,0,0,96,240,96,0, + 240,112,112,112,112,112,112,248,6,15,15,6,254,253,24,60, + 24,0,124,28,28,28,28,28,28,28,220,216,112,11,12,24, + 11,0,0,240,0,112,0,112,0,112,0,119,192,115,128,119, + 0,126,0,127,0,115,128,113,192,251,224,5,12,12,6,0, + 0,240,112,112,112,112,112,112,112,112,112,112,248,15,8,16, + 16,0,0,247,56,123,220,115,156,115,156,115,156,115,156,115, + 156,251,190,11,8,16,11,255,0,247,128,121,192,113,192,113, + 192,113,192,113,192,113,192,251,224,10,8,16,11,0,0,30, + 0,115,128,225,192,225,192,225,192,225,192,115,128,30,0,10, + 11,22,11,255,253,247,0,123,128,113,192,113,192,113,192,113, + 192,123,128,119,0,112,0,112,0,248,0,10,11,22,10,255, + 253,62,128,115,128,227,128,227,128,227,128,227,128,115,128,63, + 128,3,128,3,128,7,192,9,8,16,9,0,0,247,0,123, + 128,115,0,112,0,112,0,112,0,112,0,248,0,7,8,8, + 8,0,0,122,198,226,252,126,142,198,188,6,11,11,7,0, + 0,16,16,48,252,112,112,112,112,116,124,56,11,8,16,11, + 255,0,243,192,113,192,113,192,113,192,113,192,113,192,123,192, + 62,224,10,8,16,10,0,0,251,192,113,128,115,0,59,0, + 58,0,30,0,28,0,12,0,15,8,16,15,0,0,251,222, + 113,140,57,200,59,216,30,240,30,240,12,96,12,96,9,8, + 16,10,0,0,251,128,113,0,62,0,28,0,28,0,62,0, + 71,0,239,128,10,11,22,10,255,253,251,192,113,128,57,128, + 57,0,31,0,14,0,14,0,6,0,52,0,116,0,56,0, + 7,8,8,9,0,0,254,204,156,56,48,114,230,254,4,14, + 14,6,1,254,48,96,96,96,96,96,192,96,96,96,96,96, + 96,48,2,12,12,10,4,0,192,192,192,192,192,192,192,192, + 192,192,192,192,4,14,14,6,0,254,192,96,96,96,96,96, + 48,96,96,96,96,96,96,192,8,3,3,10,1,3,114,255, + 78,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--20-140-100-100-P-113-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=19 x= 4 y=11 dx=21 dy= 0 ascent=19 len=42 + Font Bounding box w=24 h=32 x=-3 y=-8 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =19 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB14[5558] U8G_SECTION(".progmem.u8g_font_ncenB14") = { + 0,24,32,253,248,14,3,71,7,51,32,255,252,19,252,14, + 252,0,0,0,5,0,1,4,14,14,6,1,0,96,240,240, + 240,240,240,96,96,96,0,96,240,240,96,5,5,5,8,1, + 9,216,216,216,216,216,11,12,24,12,0,1,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,255,192,255,192,54,0, + 54,0,54,0,9,18,36,11,1,254,8,0,8,0,62,0, + 107,128,203,128,201,128,232,0,252,0,255,0,127,128,31,128, + 11,128,201,128,233,128,235,0,62,0,8,0,8,0,14,15, + 30,15,0,255,56,192,103,64,196,192,196,128,197,128,201,0, + 115,0,2,56,6,100,4,196,12,196,8,196,24,200,16,112, + 16,0,16,14,28,17,1,0,7,128,12,192,24,192,24,192, + 29,128,31,0,14,62,63,24,119,144,227,224,225,224,224,241, + 241,254,127,28,2,5,5,5,1,9,192,192,192,192,192,5, + 16,16,6,0,254,24,48,112,96,224,192,192,192,192,192,192, + 224,96,112,48,24,5,16,16,6,0,254,192,96,112,48,56, + 24,24,24,24,24,24,56,48,112,96,192,7,7,7,8,0, + 7,56,146,214,56,214,146,56,10,10,20,11,0,0,12,0, + 12,0,12,0,12,0,255,192,255,192,12,0,12,0,12,0, + 12,0,4,7,7,5,0,253,96,240,240,112,32,64,128,5, + 3,3,6,0,3,248,248,248,4,4,4,5,0,0,96,240, + 240,96,6,14,14,7,0,0,12,12,8,24,24,16,48,48, + 32,96,96,64,192,192,9,14,28,11,1,0,28,0,119,0, + 99,0,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,99,0,119,0,28,0,7,14,14,11,2,0,24,56, + 248,56,56,56,56,56,56,56,56,56,56,254,9,14,28,11, + 1,0,30,0,103,0,227,128,227,128,99,128,3,128,7,0, + 7,0,14,0,24,0,48,0,96,128,255,128,255,128,9,14, + 28,11,1,0,30,0,103,0,227,128,227,128,99,128,3,0, + 28,0,3,0,3,128,99,128,227,128,227,128,103,0,62,0, + 9,14,28,11,1,0,1,0,3,0,7,0,15,0,15,0, + 23,0,39,0,71,0,71,0,135,0,255,128,7,0,7,0, + 15,128,9,14,28,11,1,0,127,128,127,0,64,0,64,0, + 64,0,126,0,71,0,3,128,3,128,99,128,227,128,227,128, + 103,0,62,0,9,14,28,11,1,0,31,0,115,128,99,128, + 227,0,224,0,238,0,247,0,227,128,227,128,227,128,227,128, + 99,128,115,0,28,0,9,14,28,11,1,0,255,128,255,128, + 129,128,131,0,6,0,6,0,12,0,12,0,28,0,28,0, + 56,0,56,0,56,0,56,0,9,14,28,11,1,0,28,0, + 99,0,193,128,193,128,225,128,251,0,126,0,63,0,79,128, + 195,128,193,128,193,128,227,0,60,0,9,14,28,11,1,0, + 28,0,103,0,227,0,227,128,227,128,227,128,227,128,119,128, + 59,128,3,128,99,128,227,0,231,0,124,0,4,9,9,6, + 1,0,96,240,240,96,0,96,240,240,96,4,12,12,6,1, + 253,96,240,240,96,0,96,240,240,112,32,64,128,10,10,20, + 11,0,0,0,192,3,192,15,0,60,0,240,0,240,0,60, + 0,15,0,3,192,0,192,9,6,12,11,1,2,255,128,255, + 128,0,0,0,0,255,128,255,128,10,10,20,11,0,0,192, + 0,240,0,60,0,15,0,3,192,3,192,15,0,60,0,240, + 0,192,0,9,14,28,10,0,0,31,0,103,128,227,128,227, + 128,99,128,3,0,6,0,12,0,24,0,0,0,24,0,60, + 0,60,0,24,0,15,14,28,16,0,0,7,240,28,12,48, + 4,99,230,102,102,204,102,204,102,216,204,216,204,217,216,206, + 240,96,8,112,48,31,224,14,14,28,14,255,0,1,0,1, + 128,3,128,3,192,5,192,4,192,8,224,8,224,16,112,31, + 240,32,112,32,56,96,56,240,124,12,14,28,14,0,0,255, + 192,113,224,112,224,112,224,112,224,113,192,127,128,112,224,112, + 112,112,112,112,112,112,112,112,224,255,128,12,14,28,14,0, + 0,15,144,60,240,112,48,112,48,224,16,224,16,224,0,224, + 0,224,0,224,16,112,16,112,32,60,96,15,128,14,14,28, + 16,0,0,255,192,112,240,112,56,112,56,112,28,112,28,112, + 28,112,28,112,28,112,28,112,56,112,56,112,240,255,192,11, + 14,28,13,0,0,255,224,112,224,112,96,113,32,113,32,115, + 0,127,0,115,0,113,0,113,32,112,32,112,96,112,224,255, + 224,11,14,28,13,0,0,255,224,112,224,112,96,113,32,113, + 32,115,0,127,0,115,0,113,0,113,0,112,0,112,0,112, + 0,252,0,13,14,28,15,0,0,15,144,60,240,112,48,112, + 48,224,16,224,16,224,0,224,0,224,248,224,112,112,112,112, + 112,60,240,15,144,14,14,28,16,0,0,248,124,112,56,112, + 56,112,56,112,56,112,56,127,248,112,56,112,56,112,56,112, + 56,112,56,112,56,248,124,5,14,14,9,1,0,248,112,112, + 112,112,112,112,112,112,112,112,112,112,248,10,14,28,12,255, + 0,7,192,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,99,128,243,128,243,128,195,128,103,0,60,0,14,14,28, + 16,0,0,248,248,112,96,112,192,113,128,115,0,118,0,126, + 0,127,0,119,128,115,192,113,224,112,240,112,120,248,252,10, + 14,28,12,0,0,248,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,64,112,64,112,192,113,192,255, + 192,17,14,42,19,0,0,252,15,128,60,15,0,62,15,0, + 46,23,0,39,23,0,39,23,0,39,39,0,35,167,0,35, + 167,0,35,199,0,33,199,0,33,199,0,112,135,0,248,143, + 128,14,14,28,16,0,0,240,124,120,56,60,16,60,16,62, + 16,47,16,39,144,35,208,33,240,32,240,32,240,32,112,112, + 48,248,16,14,14,28,16,0,0,15,192,60,240,112,56,112, + 56,224,28,224,28,224,28,224,28,224,28,224,28,112,56,112, + 56,60,240,15,192,12,14,28,14,0,0,255,128,113,224,112, + 240,112,240,112,240,112,240,113,224,127,128,112,0,112,0,112, + 0,112,0,112,0,248,0,14,18,36,16,0,252,15,192,60, + 240,112,56,112,56,224,28,224,28,224,28,224,28,224,28,239, + 28,115,152,113,184,61,240,15,192,0,192,0,232,0,248,0, + 112,13,14,28,16,0,0,255,224,112,240,112,112,112,112,112, + 112,112,224,127,128,113,192,113,192,113,224,112,224,112,224,112, + 232,248,112,10,14,28,12,0,0,30,128,115,128,225,128,224, + 128,240,0,252,0,127,0,31,128,7,192,131,192,129,192,193, + 192,243,128,159,0,11,14,28,13,0,0,255,224,206,96,142, + 32,142,32,142,32,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,31,0,14,14,28,16,0,0,248,124,112, + 56,112,16,112,16,112,16,112,16,112,16,112,16,112,16,112, + 16,112,16,112,16,56,96,15,192,15,14,28,14,255,0,252, + 62,120,28,56,8,60,16,28,16,28,16,14,32,14,32,7, + 64,7,64,3,128,3,128,1,0,1,0,20,14,42,19,255, + 0,253,249,240,120,240,224,56,112,64,60,120,128,28,120,128, + 28,120,128,30,189,0,14,157,0,14,157,0,15,30,0,7, + 14,0,7,14,0,2,4,0,2,4,0,15,14,28,17,0, + 0,126,124,60,56,30,48,14,96,15,192,7,128,3,192,7, + 192,7,224,12,240,24,112,56,120,112,60,248,126,13,14,28, + 15,0,0,252,120,120,48,56,32,60,96,28,64,30,128,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,31,192,12, + 14,28,13,0,0,255,240,224,112,192,224,129,224,131,192,7, + 128,7,0,15,0,30,0,60,16,120,16,112,48,224,112,255, + 240,4,16,16,6,1,254,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,8,14,14,9,0,0,192,192,96, + 96,48,48,24,24,12,12,6,6,3,3,4,16,16,6,0, + 254,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 240,8,8,8,9,0,6,24,24,60,60,102,102,195,195,9, + 2,4,9,0,253,255,128,255,128,5,4,4,7,1,10,192, + 224,112,24,10,9,18,11,0,0,127,0,227,128,195,128,7, + 128,59,128,227,128,227,128,231,128,121,192,12,14,28,12,255, + 0,240,0,112,0,112,0,112,0,112,0,119,128,120,224,112, + 112,112,112,112,112,112,112,112,112,120,224,111,128,9,9,18, + 10,0,0,31,0,115,128,225,128,224,0,224,0,224,0,224, + 128,113,128,30,0,12,14,28,13,0,0,1,224,0,224,0, + 224,0,224,0,224,30,224,113,224,224,224,224,224,224,224,224, + 224,224,224,113,224,30,240,10,9,18,11,0,0,30,0,115, + 128,225,192,225,192,255,192,224,0,224,64,112,192,31,0,8, + 14,14,7,0,0,30,55,119,112,112,252,112,112,112,112,112, + 112,112,248,11,15,30,11,0,252,0,96,0,224,63,0,115, + 128,97,128,97,128,115,128,63,0,96,0,127,128,63,192,193, + 192,192,192,225,128,127,0,12,14,28,13,0,0,240,0,112, + 0,112,0,112,0,112,0,119,192,121,224,112,224,112,224,112, + 224,112,224,112,224,112,224,249,240,5,14,14,6,0,0,112, + 112,112,0,0,240,112,112,112,112,112,112,112,248,7,18,18, + 6,253,252,14,14,14,0,0,30,14,14,14,14,14,14,14, + 14,14,238,236,120,12,14,28,13,0,0,240,0,112,0,112, + 0,112,0,112,0,115,224,113,128,114,0,118,0,127,0,119, + 128,115,192,113,224,251,240,5,14,14,6,0,0,240,112,112, + 112,112,112,112,112,112,112,112,112,112,248,19,9,27,20,0, + 0,247,223,128,121,243,192,112,225,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,249,243,224,12,9,18,13, + 0,0,247,192,121,224,112,224,112,224,112,224,112,224,112,224, + 112,224,249,240,11,9,18,12,0,0,31,0,113,192,224,224, + 224,224,224,224,224,224,224,224,113,192,31,0,12,13,26,12, + 255,252,231,128,120,224,112,112,112,112,112,112,112,112,112,112, + 120,224,119,128,112,0,112,0,112,0,248,0,12,13,26,12, + 0,252,30,96,113,224,224,224,224,224,224,224,224,224,224,224, + 113,224,30,224,0,224,0,224,0,224,1,240,8,9,9,9, + 0,0,246,123,115,112,112,112,112,112,248,9,9,18,10,0, + 0,61,0,99,0,225,0,252,0,127,0,15,128,131,128,195, + 0,190,0,7,13,13,8,0,0,16,16,48,112,252,112,112, + 112,112,112,114,114,60,12,9,18,13,0,0,249,224,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,10,9, + 18,9,255,0,249,192,112,128,112,128,57,0,57,0,30,0, + 30,0,12,0,12,0,16,9,18,15,255,0,251,231,113,194, + 113,194,57,228,57,228,30,120,30,120,12,48,12,48,11,9, + 18,12,0,0,253,224,120,192,61,128,31,0,14,0,31,0, + 55,128,99,192,247,224,11,13,26,12,0,252,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,9,9,18,10,0,0,255,128,199,128, + 143,0,30,0,60,0,120,128,240,128,225,128,255,128,5,16, + 16,6,0,254,24,48,112,112,112,112,96,192,96,112,112,112, + 112,112,48,24,2,14,14,11,4,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,5,16,16,6,0,254,192,96, + 112,112,112,112,48,24,48,112,112,112,112,112,96,192,10,3, + 6,12,1,4,57,192,127,128,231,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,5,0, + 1,4,14,14,7,1,252,96,240,240,96,0,96,96,96,240, + 240,240,240,240,96,9,13,26,11,1,254,0,128,0,128,31, + 0,115,128,227,128,228,0,228,0,232,0,232,128,113,128,30, + 0,32,0,32,0,10,14,28,11,0,0,31,0,49,128,115, + 128,115,128,112,0,112,0,56,0,255,128,28,0,28,0,24, + 64,112,192,159,192,239,128,9,9,18,10,0,2,221,128,255, + 128,99,0,193,128,193,128,193,128,99,0,255,128,221,128,14, + 14,28,15,0,0,252,60,120,24,56,16,28,48,30,32,14, + 96,7,192,31,240,3,128,31,240,3,128,3,128,3,128,15, + 224,2,14,14,11,4,0,192,192,192,192,192,192,0,0,192, + 192,192,192,192,192,7,16,16,8,0,254,120,204,140,192,112, + 124,158,134,194,242,124,28,4,196,204,120,6,2,2,10,2, + 11,204,204,14,14,28,15,0,0,7,128,24,96,32,16,71, + 200,76,200,152,68,152,4,152,4,152,4,76,72,71,136,32, + 16,24,96,7,128,7,8,8,8,0,6,120,204,60,204,220, + 110,0,254,8,5,5,9,0,3,51,102,204,102,51,9,6, + 12,10,0,2,255,128,255,128,1,128,1,128,1,128,1,128, + 5,3,3,6,0,3,248,248,248,14,14,28,15,0,0,7, + 128,24,96,32,16,95,136,76,200,140,196,140,196,143,132,141, + 132,76,200,94,232,32,16,24,96,7,128,6,2,2,8,1, + 11,252,252,6,6,6,7,0,8,120,204,132,132,204,120,10, + 11,22,11,0,0,12,0,12,0,12,0,255,192,255,192,12, + 0,12,0,12,0,0,0,255,192,255,192,6,8,8,6,0, + 6,120,204,204,24,48,96,196,252,6,8,8,6,0,6,120, + 204,12,56,12,204,204,120,5,4,4,7,1,11,24,56,112, + 192,12,13,26,13,0,252,249,240,112,224,112,224,112,224,112, + 224,112,224,112,224,121,224,110,240,96,0,240,0,240,0,96, + 0,13,14,28,14,0,0,63,248,126,112,254,112,254,112,254, + 112,254,112,126,112,62,112,14,112,14,112,14,112,14,112,14, + 112,31,248,4,4,4,5,0,3,96,240,240,96,4,4,4, + 6,1,252,64,112,48,224,6,8,8,6,0,6,48,240,48, + 48,48,48,48,252,6,8,8,7,0,6,120,204,204,204,204, + 120,0,252,8,5,5,9,0,3,204,102,51,102,204,14,14, + 28,15,0,0,48,96,240,96,48,192,48,192,49,128,49,128, + 51,24,255,56,6,120,6,216,13,152,13,252,24,24,24,60, + 14,14,28,15,0,0,48,96,240,96,48,192,48,192,49,128, + 49,128,51,120,255,204,6,204,6,24,12,48,12,96,24,196, + 24,252,14,14,28,15,0,0,120,96,204,96,12,192,56,192, + 13,128,205,128,207,24,123,56,6,120,6,216,13,152,13,252, + 24,24,24,60,9,14,28,10,0,252,12,0,30,0,30,0, + 12,0,0,0,12,0,24,0,48,0,96,0,227,0,227,128, + 227,128,243,0,124,0,14,19,38,14,255,0,12,0,14,0, + 7,0,1,128,0,0,1,0,1,128,3,128,3,192,5,192, + 4,192,8,224,8,224,16,112,31,240,32,112,32,56,96,56, + 240,124,14,19,38,14,255,0,0,96,0,224,1,192,3,0, + 0,0,1,0,1,128,3,128,3,192,5,192,4,192,8,224, + 8,224,16,112,31,240,32,112,32,56,96,56,240,124,14,19, + 38,14,255,0,1,128,3,192,6,96,12,48,0,0,1,0, + 1,128,3,128,3,192,5,192,4,192,8,224,8,224,16,112, + 31,240,32,112,32,56,96,56,240,124,14,18,36,14,255,0, + 3,144,7,224,9,192,0,0,1,0,1,128,3,128,3,192, + 5,192,4,192,8,224,8,224,16,112,31,240,32,112,32,56, + 96,56,240,124,14,17,34,14,255,0,6,96,6,96,0,0, + 1,0,1,128,3,128,3,192,5,192,4,192,8,224,8,224, + 16,112,31,240,32,112,32,56,96,56,240,124,14,19,38,14, + 255,0,1,128,2,64,2,64,1,128,0,0,1,0,1,128, + 3,128,3,192,5,192,4,192,8,224,8,224,16,112,31,240, + 32,112,32,56,96,56,240,124,20,14,42,21,0,0,3,255, + 240,0,248,112,0,184,48,1,56,144,1,56,144,2,57,128, + 4,63,128,4,57,128,15,248,128,16,56,144,16,56,16,32, + 56,48,96,56,112,240,255,240,12,18,36,14,0,252,15,144, + 60,112,112,48,112,48,224,16,224,16,224,0,224,0,224,0, + 224,16,240,16,112,32,60,96,15,128,2,0,3,128,1,128, + 7,0,11,19,38,13,0,0,48,0,56,0,28,0,6,0, + 0,0,255,224,112,224,112,96,113,32,113,32,115,0,127,0, + 115,0,113,0,113,32,112,32,112,96,112,224,255,224,11,19, + 38,13,0,0,1,128,3,128,7,0,12,0,0,0,255,224, + 112,224,112,96,113,32,113,32,115,0,127,0,115,0,113,0, + 113,32,112,32,112,96,112,224,255,224,11,19,38,13,0,0, + 6,0,15,0,25,128,48,192,0,0,255,224,112,224,112,96, + 113,32,113,32,115,0,127,0,115,0,113,0,113,32,112,32, + 112,96,112,224,255,224,11,17,34,13,0,0,25,128,25,128, + 0,0,255,224,112,224,112,96,113,32,113,32,115,0,127,0, + 115,0,113,0,113,32,112,32,112,96,112,224,255,224,6,19, + 19,9,0,0,192,224,112,24,0,124,56,56,56,56,56,56, + 56,56,56,56,56,56,124,6,19,19,9,1,0,12,28,56, + 96,0,248,112,112,112,112,112,112,112,112,112,112,112,112,248, + 8,19,19,9,0,0,24,60,102,195,0,124,56,56,56,56, + 56,56,56,56,56,56,56,56,124,6,17,17,9,1,0,204, + 204,0,248,112,112,112,112,112,112,112,112,112,112,112,112,248, + 14,14,28,16,0,0,255,192,112,240,112,56,112,56,112,28, + 112,28,252,28,112,28,112,28,112,28,112,56,112,56,112,240, + 255,192,14,18,36,16,0,0,7,32,15,192,19,128,0,0, + 240,124,120,56,60,16,60,16,62,16,47,16,39,144,35,208, + 33,240,32,240,32,240,32,112,112,48,248,16,14,19,38,16, + 0,0,12,0,14,0,7,0,1,128,0,0,15,192,60,240, + 112,56,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 112,56,112,56,60,240,15,192,14,19,38,16,0,0,0,192, + 1,192,3,128,6,0,0,0,15,192,60,240,112,56,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,112,56, + 60,240,15,192,14,19,38,16,0,0,3,0,7,128,12,192, + 24,96,0,0,15,192,60,240,112,56,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,112,56,112,56,60,240,15,192, + 14,18,36,16,0,0,7,32,15,192,19,128,0,0,15,192, + 60,240,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,60,240,15,192,14,17,34,16,0,0, + 12,192,12,192,0,0,15,192,60,240,112,56,112,56,224,28, + 224,28,224,28,224,28,224,28,224,28,112,56,112,56,60,240, + 15,192,10,10,20,11,0,0,64,128,225,192,115,128,63,0, + 30,0,30,0,63,0,115,128,225,192,64,128,14,15,30,16, + 0,0,0,8,15,208,60,240,112,56,112,88,224,156,225,28, + 225,28,226,28,228,28,232,28,112,56,48,56,60,240,79,192, + 14,19,38,16,0,0,12,0,14,0,7,0,1,128,0,0, + 248,124,112,56,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,112,16,112,16,56,96,31,192,14,19,38,16, + 0,0,0,96,0,224,1,192,3,0,0,0,248,124,112,56, + 112,16,112,16,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,56,96,31,192,14,19,38,16,0,0,3,0, + 7,128,12,192,24,96,0,0,248,124,112,56,112,16,112,16, + 112,16,112,16,112,16,112,16,112,16,112,16,112,16,112,16, + 56,96,31,192,14,17,34,16,0,0,12,192,12,192,0,0, + 248,124,112,56,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,112,16,112,16,56,96,31,192,13,19,38,15, + 0,0,0,96,0,224,1,192,3,0,0,0,252,120,120,48, + 56,32,60,96,28,64,30,128,15,128,7,0,7,0,7,0, + 7,0,7,0,7,0,31,192,12,14,28,14,1,0,248,0, + 112,0,112,0,127,192,113,224,112,240,112,240,112,240,112,240, + 113,224,127,128,112,0,112,0,248,0,11,14,28,12,0,0, + 30,0,51,128,113,192,113,192,113,192,113,128,119,0,113,192, + 112,224,112,224,112,224,112,224,113,192,247,0,10,14,28,11, + 0,0,48,0,56,0,28,0,6,0,0,0,127,0,227,128, + 195,128,7,128,59,128,227,128,227,128,231,128,121,192,10,14, + 28,11,0,0,3,0,7,0,14,0,24,0,0,0,127,0, + 227,128,195,128,7,128,59,128,227,128,227,128,231,128,121,192, + 10,14,28,11,0,0,12,0,30,0,51,0,97,128,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,10,13,26,11,0,0,24,128,63,0,70,0,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,10,12,24,11,0,0,51,0,51,0,0,0,127,0, + 227,128,195,128,7,128,59,128,227,128,227,128,231,128,121,192, + 10,14,28,11,0,0,12,0,18,0,18,0,12,0,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,16,9,18,17,0,0,63,120,99,206,227,135,7,135, + 59,255,227,128,227,129,231,195,120,252,9,13,26,10,0,252, + 31,0,115,128,225,128,224,0,224,0,224,0,224,128,113,128, + 30,0,8,0,14,0,6,0,28,0,10,14,28,11,0,0, + 48,0,56,0,28,0,6,0,0,0,30,0,115,128,225,192, + 225,192,255,192,224,0,224,64,112,192,31,0,10,14,28,11, + 0,0,3,0,7,0,14,0,24,0,0,0,30,0,115,128, + 225,192,225,192,255,192,224,0,224,64,112,192,31,0,10,14, + 28,11,0,0,12,0,30,0,51,0,97,128,0,0,30,0, + 115,128,225,192,225,192,255,192,224,0,224,64,112,192,31,0, + 10,12,24,11,0,0,51,0,51,0,0,0,30,0,115,128, + 225,192,225,192,255,192,224,0,224,64,112,192,31,0,6,14, + 14,6,255,0,192,224,112,24,0,120,56,56,56,56,56,56, + 56,124,6,14,14,6,0,0,12,28,56,96,0,240,112,112, + 112,112,112,112,112,248,8,14,14,6,255,0,24,60,102,195, + 0,120,56,56,56,56,56,56,56,124,5,12,12,6,0,0, + 216,216,0,240,112,112,112,112,112,112,112,248,11,14,28,12, + 0,0,192,0,51,0,28,0,102,0,3,0,31,128,113,192, + 224,224,224,224,224,224,224,224,224,224,113,192,31,0,12,13, + 26,13,0,0,12,64,31,128,35,0,0,0,247,192,121,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,11,14, + 28,12,0,0,48,0,56,0,28,0,6,0,0,0,31,0, + 113,192,224,224,224,224,224,224,224,224,224,224,113,192,31,0, + 11,14,28,12,0,0,1,128,3,128,7,0,12,0,0,0, + 31,0,113,192,224,224,224,224,224,224,224,224,224,224,113,192, + 31,0,11,14,28,12,0,0,6,0,15,0,25,128,48,192, + 0,0,31,0,113,192,224,224,224,224,224,224,224,224,224,224, + 113,192,31,0,11,13,26,12,0,0,24,128,63,0,70,0, + 0,0,31,0,113,192,224,224,224,224,224,224,224,224,224,224, + 113,192,31,0,11,12,24,12,0,0,51,0,51,0,0,0, + 31,0,113,192,224,224,224,224,224,224,224,224,224,224,113,192, + 31,0,10,10,20,11,0,0,12,0,12,0,0,0,0,0, + 255,192,255,192,0,0,0,0,12,0,12,0,10,11,22,11, + 0,255,1,0,31,0,115,128,227,192,229,192,229,192,233,192, + 233,192,115,128,62,0,32,0,12,14,28,13,0,0,24,0, + 28,0,14,0,3,0,0,0,249,240,112,224,112,224,112,224, + 112,224,112,224,112,224,121,224,62,240,12,14,28,13,0,0, + 3,0,7,0,14,0,24,0,0,0,249,240,112,224,112,224, + 112,224,112,224,112,224,112,224,121,224,62,240,12,14,28,13, + 0,0,6,0,15,0,25,128,48,192,0,0,249,240,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,12,12, + 24,13,0,0,25,128,25,128,0,0,249,240,112,224,112,224, + 112,224,112,224,112,224,112,224,121,224,62,240,11,18,36,12, + 0,252,1,128,3,128,7,0,12,0,0,0,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,12,18,36,12,255,252,240,0,112,0, + 112,0,112,0,112,0,119,128,120,224,112,112,112,112,112,112, + 112,112,112,112,120,224,119,128,112,0,112,0,112,0,248,0, + 11,16,32,12,0,252,25,128,25,128,0,0,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--20-140-100-100-P-113-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=18 x= 4 y=10 dx=20 dy= 0 ascent=16 len=42 + Font Bounding box w=24 h=32 x=-3 y=-8 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB14r[2603] U8G_SECTION(".progmem.u8g_font_ncenB14r") = { + 0,24,32,253,248,14,3,71,7,51,32,127,252,16,252,14, + 252,0,0,0,5,0,1,4,14,14,6,1,0,96,240,240, + 240,240,240,96,96,96,0,96,240,240,96,5,5,5,8,1, + 9,216,216,216,216,216,11,12,24,12,0,1,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,255,192,255,192,54,0, + 54,0,54,0,9,18,36,11,1,254,8,0,8,0,62,0, + 107,128,203,128,201,128,232,0,252,0,255,0,127,128,31,128, + 11,128,201,128,233,128,235,0,62,0,8,0,8,0,14,15, + 30,15,0,255,56,192,103,64,196,192,196,128,197,128,201,0, + 115,0,2,56,6,100,4,196,12,196,8,196,24,200,16,112, + 16,0,16,14,28,17,1,0,7,128,12,192,24,192,24,192, + 29,128,31,0,14,62,63,24,119,144,227,224,225,224,224,241, + 241,254,127,28,2,5,5,5,1,9,192,192,192,192,192,5, + 16,16,6,0,254,24,48,112,96,224,192,192,192,192,192,192, + 224,96,112,48,24,5,16,16,6,0,254,192,96,112,48,56, + 24,24,24,24,24,24,56,48,112,96,192,7,7,7,8,0, + 7,56,146,214,56,214,146,56,10,10,20,11,0,0,12,0, + 12,0,12,0,12,0,255,192,255,192,12,0,12,0,12,0, + 12,0,4,7,7,5,0,253,96,240,240,112,32,64,128,5, + 3,3,6,0,3,248,248,248,4,4,4,5,0,0,96,240, + 240,96,6,14,14,7,0,0,12,12,8,24,24,16,48,48, + 32,96,96,64,192,192,9,14,28,11,1,0,28,0,119,0, + 99,0,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,99,0,119,0,28,0,7,14,14,11,2,0,24,56, + 248,56,56,56,56,56,56,56,56,56,56,254,9,14,28,11, + 1,0,30,0,103,0,227,128,227,128,99,128,3,128,7,0, + 7,0,14,0,24,0,48,0,96,128,255,128,255,128,9,14, + 28,11,1,0,30,0,103,0,227,128,227,128,99,128,3,0, + 28,0,3,0,3,128,99,128,227,128,227,128,103,0,62,0, + 9,14,28,11,1,0,1,0,3,0,7,0,15,0,15,0, + 23,0,39,0,71,0,71,0,135,0,255,128,7,0,7,0, + 15,128,9,14,28,11,1,0,127,128,127,0,64,0,64,0, + 64,0,126,0,71,0,3,128,3,128,99,128,227,128,227,128, + 103,0,62,0,9,14,28,11,1,0,31,0,115,128,99,128, + 227,0,224,0,238,0,247,0,227,128,227,128,227,128,227,128, + 99,128,115,0,28,0,9,14,28,11,1,0,255,128,255,128, + 129,128,131,0,6,0,6,0,12,0,12,0,28,0,28,0, + 56,0,56,0,56,0,56,0,9,14,28,11,1,0,28,0, + 99,0,193,128,193,128,225,128,251,0,126,0,63,0,79,128, + 195,128,193,128,193,128,227,0,60,0,9,14,28,11,1,0, + 28,0,103,0,227,0,227,128,227,128,227,128,227,128,119,128, + 59,128,3,128,99,128,227,0,231,0,124,0,4,9,9,6, + 1,0,96,240,240,96,0,96,240,240,96,4,12,12,6,1, + 253,96,240,240,96,0,96,240,240,112,32,64,128,10,10,20, + 11,0,0,0,192,3,192,15,0,60,0,240,0,240,0,60, + 0,15,0,3,192,0,192,9,6,12,11,1,2,255,128,255, + 128,0,0,0,0,255,128,255,128,10,10,20,11,0,0,192, + 0,240,0,60,0,15,0,3,192,3,192,15,0,60,0,240, + 0,192,0,9,14,28,10,0,0,31,0,103,128,227,128,227, + 128,99,128,3,0,6,0,12,0,24,0,0,0,24,0,60, + 0,60,0,24,0,15,14,28,16,0,0,7,240,28,12,48, + 4,99,230,102,102,204,102,204,102,216,204,216,204,217,216,206, + 240,96,8,112,48,31,224,14,14,28,14,255,0,1,0,1, + 128,3,128,3,192,5,192,4,192,8,224,8,224,16,112,31, + 240,32,112,32,56,96,56,240,124,12,14,28,14,0,0,255, + 192,113,224,112,224,112,224,112,224,113,192,127,128,112,224,112, + 112,112,112,112,112,112,112,112,224,255,128,12,14,28,14,0, + 0,15,144,60,240,112,48,112,48,224,16,224,16,224,0,224, + 0,224,0,224,16,112,16,112,32,60,96,15,128,14,14,28, + 16,0,0,255,192,112,240,112,56,112,56,112,28,112,28,112, + 28,112,28,112,28,112,28,112,56,112,56,112,240,255,192,11, + 14,28,13,0,0,255,224,112,224,112,96,113,32,113,32,115, + 0,127,0,115,0,113,0,113,32,112,32,112,96,112,224,255, + 224,11,14,28,13,0,0,255,224,112,224,112,96,113,32,113, + 32,115,0,127,0,115,0,113,0,113,0,112,0,112,0,112, + 0,252,0,13,14,28,15,0,0,15,144,60,240,112,48,112, + 48,224,16,224,16,224,0,224,0,224,248,224,112,112,112,112, + 112,60,240,15,144,14,14,28,16,0,0,248,124,112,56,112, + 56,112,56,112,56,112,56,127,248,112,56,112,56,112,56,112, + 56,112,56,112,56,248,124,5,14,14,9,1,0,248,112,112, + 112,112,112,112,112,112,112,112,112,112,248,10,14,28,12,255, + 0,7,192,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,99,128,243,128,243,128,195,128,103,0,60,0,14,14,28, + 16,0,0,248,248,112,96,112,192,113,128,115,0,118,0,126, + 0,127,0,119,128,115,192,113,224,112,240,112,120,248,252,10, + 14,28,12,0,0,248,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,64,112,64,112,192,113,192,255, + 192,17,14,42,19,0,0,252,15,128,60,15,0,62,15,0, + 46,23,0,39,23,0,39,23,0,39,39,0,35,167,0,35, + 167,0,35,199,0,33,199,0,33,199,0,112,135,0,248,143, + 128,14,14,28,16,0,0,240,124,120,56,60,16,60,16,62, + 16,47,16,39,144,35,208,33,240,32,240,32,240,32,112,112, + 48,248,16,14,14,28,16,0,0,15,192,60,240,112,56,112, + 56,224,28,224,28,224,28,224,28,224,28,224,28,112,56,112, + 56,60,240,15,192,12,14,28,14,0,0,255,128,113,224,112, + 240,112,240,112,240,112,240,113,224,127,128,112,0,112,0,112, + 0,112,0,112,0,248,0,14,18,36,16,0,252,15,192,60, + 240,112,56,112,56,224,28,224,28,224,28,224,28,224,28,239, + 28,115,152,113,184,61,240,15,192,0,192,0,232,0,248,0, + 112,13,14,28,16,0,0,255,224,112,240,112,112,112,112,112, + 112,112,224,127,128,113,192,113,192,113,224,112,224,112,224,112, + 232,248,112,10,14,28,12,0,0,30,128,115,128,225,128,224, + 128,240,0,252,0,127,0,31,128,7,192,131,192,129,192,193, + 192,243,128,159,0,11,14,28,13,0,0,255,224,206,96,142, + 32,142,32,142,32,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,31,0,14,14,28,16,0,0,248,124,112, + 56,112,16,112,16,112,16,112,16,112,16,112,16,112,16,112, + 16,112,16,112,16,56,96,15,192,15,14,28,14,255,0,252, + 62,120,28,56,8,60,16,28,16,28,16,14,32,14,32,7, + 64,7,64,3,128,3,128,1,0,1,0,20,14,42,19,255, + 0,253,249,240,120,240,224,56,112,64,60,120,128,28,120,128, + 28,120,128,30,189,0,14,157,0,14,157,0,15,30,0,7, + 14,0,7,14,0,2,4,0,2,4,0,15,14,28,17,0, + 0,126,124,60,56,30,48,14,96,15,192,7,128,3,192,7, + 192,7,224,12,240,24,112,56,120,112,60,248,126,13,14,28, + 15,0,0,252,120,120,48,56,32,60,96,28,64,30,128,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,31,192,12, + 14,28,13,0,0,255,240,224,112,192,224,129,224,131,192,7, + 128,7,0,15,0,30,0,60,16,120,16,112,48,224,112,255, + 240,4,16,16,6,1,254,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,8,14,14,9,0,0,192,192,96, + 96,48,48,24,24,12,12,6,6,3,3,4,16,16,6,0, + 254,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 240,8,8,8,9,0,6,24,24,60,60,102,102,195,195,9, + 2,4,9,0,253,255,128,255,128,5,4,4,7,1,10,192, + 224,112,24,10,9,18,11,0,0,127,0,227,128,195,128,7, + 128,59,128,227,128,227,128,231,128,121,192,12,14,28,12,255, + 0,240,0,112,0,112,0,112,0,112,0,119,128,120,224,112, + 112,112,112,112,112,112,112,112,112,120,224,111,128,9,9,18, + 10,0,0,31,0,115,128,225,128,224,0,224,0,224,0,224, + 128,113,128,30,0,12,14,28,13,0,0,1,224,0,224,0, + 224,0,224,0,224,30,224,113,224,224,224,224,224,224,224,224, + 224,224,224,113,224,30,240,10,9,18,11,0,0,30,0,115, + 128,225,192,225,192,255,192,224,0,224,64,112,192,31,0,8, + 14,14,7,0,0,30,55,119,112,112,252,112,112,112,112,112, + 112,112,248,11,15,30,11,0,252,0,96,0,224,63,0,115, + 128,97,128,97,128,115,128,63,0,96,0,127,128,63,192,193, + 192,192,192,225,128,127,0,12,14,28,13,0,0,240,0,112, + 0,112,0,112,0,112,0,119,192,121,224,112,224,112,224,112, + 224,112,224,112,224,112,224,249,240,5,14,14,6,0,0,112, + 112,112,0,0,240,112,112,112,112,112,112,112,248,7,18,18, + 6,253,252,14,14,14,0,0,30,14,14,14,14,14,14,14, + 14,14,238,236,120,12,14,28,13,0,0,240,0,112,0,112, + 0,112,0,112,0,115,224,113,128,114,0,118,0,127,0,119, + 128,115,192,113,224,251,240,5,14,14,6,0,0,240,112,112, + 112,112,112,112,112,112,112,112,112,112,248,19,9,27,20,0, + 0,247,223,128,121,243,192,112,225,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,249,243,224,12,9,18,13, + 0,0,247,192,121,224,112,224,112,224,112,224,112,224,112,224, + 112,224,249,240,11,9,18,12,0,0,31,0,113,192,224,224, + 224,224,224,224,224,224,224,224,113,192,31,0,12,13,26,12, + 255,252,231,128,120,224,112,112,112,112,112,112,112,112,112,112, + 120,224,119,128,112,0,112,0,112,0,248,0,12,13,26,12, + 0,252,30,96,113,224,224,224,224,224,224,224,224,224,224,224, + 113,224,30,224,0,224,0,224,0,224,1,240,8,9,9,9, + 0,0,246,123,115,112,112,112,112,112,248,9,9,18,10,0, + 0,61,0,99,0,225,0,252,0,127,0,15,128,131,128,195, + 0,190,0,7,13,13,8,0,0,16,16,48,112,252,112,112, + 112,112,112,114,114,60,12,9,18,13,0,0,249,224,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,10,9, + 18,9,255,0,249,192,112,128,112,128,57,0,57,0,30,0, + 30,0,12,0,12,0,16,9,18,15,255,0,251,231,113,194, + 113,194,57,228,57,228,30,120,30,120,12,48,12,48,11,9, + 18,12,0,0,253,224,120,192,61,128,31,0,14,0,31,0, + 55,128,99,192,247,224,11,13,26,12,0,252,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,9,9,18,10,0,0,255,128,199,128, + 143,0,30,0,60,0,120,128,240,128,225,128,255,128,5,16, + 16,6,0,254,24,48,112,112,112,112,96,192,96,112,112,112, + 112,112,48,24,2,14,14,11,4,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,5,16,16,6,0,254,192,96, + 112,112,112,112,48,24,48,112,112,112,112,112,96,192,10,3, + 6,12,1,4,57,192,127,128,231,0,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--25-180-100-100-P-149-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 6 y=15 dx=26 dy= 0 ascent=24 len=72 + Font Bounding box w=33 h=40 x=-4 y=-10 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB18[8114] U8G_SECTION(".progmem.u8g_font_ncenB18") = { + 0,33,40,252,246,18,4,68,10,106,32,255,251,24,251,18, + 251,0,0,0,7,0,1,5,18,18,7,1,0,112,248,248, + 248,112,112,112,112,112,112,32,32,0,0,112,248,248,112,6, + 6,6,8,1,12,204,204,204,204,204,136,12,18,36,14,1, + 0,12,192,12,192,12,192,12,192,12,192,127,240,127,240,25, + 128,25,128,25,128,25,128,255,224,255,224,51,0,51,0,51, + 0,51,0,51,0,12,23,46,14,1,253,4,0,4,0,31, + 192,116,96,100,240,228,240,228,240,244,96,252,0,255,0,127, + 192,31,224,7,240,5,240,100,240,244,112,244,112,244,96,100, + 224,63,128,4,0,4,0,4,0,19,18,54,21,1,0,30, + 14,0,123,54,0,113,204,0,241,12,0,225,24,0,226,24, + 0,226,48,0,100,48,0,56,96,0,0,99,192,0,207,96, + 0,206,32,1,158,32,1,156,32,3,28,64,3,28,64,6, + 12,128,6,7,0,20,18,54,22,1,0,1,240,0,7,56, + 0,14,24,0,14,24,0,14,24,0,15,48,0,15,224,0, + 7,192,0,15,192,0,57,227,240,113,241,192,240,241,128,240, + 121,0,240,127,0,240,62,16,120,31,16,124,63,224,31,199, + 192,2,6,6,6,2,12,192,192,192,192,192,192,6,21,21, + 8,1,253,4,12,24,48,48,96,96,224,224,224,224,224,224, + 224,96,96,48,48,24,12,4,6,21,21,8,1,253,128,192, + 96,48,48,24,24,28,28,28,28,28,28,28,24,24,48,48, + 96,192,128,9,10,20,11,1,8,28,0,28,0,201,128,235, + 128,62,0,62,0,235,128,201,128,28,0,28,0,12,12,24, + 14,1,1,6,0,6,0,6,0,6,0,6,0,255,240,255, + 240,6,0,6,0,6,0,6,0,6,0,5,8,8,7,1, + 252,112,248,248,120,48,32,64,128,6,3,3,8,1,5,252, + 252,252,5,4,4,7,1,0,112,248,248,112,7,18,18,9, + 1,0,6,6,6,12,12,12,24,24,24,48,48,48,96,96, + 96,192,192,192,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,57,192,15,0,10,18, + 36,14,2,0,30,0,254,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,255,192,11,18,36,14,1,0,31,0, + 99,192,225,224,241,224,241,224,241,224,97,224,1,192,3,192, + 3,128,7,0,14,0,24,32,48,32,112,96,255,224,255,224, + 255,224,12,18,36,14,1,0,15,128,49,224,112,224,120,240, + 120,240,120,240,48,224,1,192,15,0,1,192,0,224,96,240, + 240,240,240,240,240,240,224,224,97,224,31,128,12,18,36,14, + 1,0,0,192,1,192,3,192,7,192,7,192,15,192,27,192, + 19,192,51,192,99,192,99,192,195,192,255,240,255,240,3,192, + 3,192,3,192,15,240,12,18,36,14,1,0,127,240,127,224, + 127,192,64,0,64,0,64,0,95,0,113,192,96,224,0,240, + 0,240,0,240,96,240,240,240,240,240,240,224,97,192,63,0, + 12,18,36,14,1,0,15,128,56,192,113,224,113,224,241,224, + 240,192,240,0,247,128,249,224,240,224,240,240,240,240,240,240, + 240,240,240,240,112,224,121,224,31,128,12,18,36,14,1,0, + 255,240,255,240,255,224,192,96,128,192,129,192,3,128,3,128, + 7,0,7,0,15,0,15,0,30,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,112,224,120,224,124,192,63,128,31,128,63,192,119,224, + 225,240,224,240,224,112,224,112,224,96,112,192,31,128,12,18, + 36,14,1,0,31,128,121,224,112,224,240,240,240,240,240,240, + 240,240,240,240,112,240,121,240,30,240,0,240,48,240,120,240, + 120,224,120,224,49,192,31,0,5,12,12,7,1,0,112,248, + 248,112,0,0,0,0,112,248,248,112,5,16,16,7,1,252, + 112,248,248,112,0,0,0,0,112,248,248,120,48,32,64,128, + 12,12,24,14,1,1,0,48,0,240,3,192,15,0,60,0, + 240,0,240,0,60,0,15,0,3,192,0,240,0,48,12,6, + 12,14,1,4,255,240,255,240,0,0,0,0,255,240,255,240, + 12,12,24,14,1,1,192,0,240,0,60,0,15,0,3,192, + 0,240,0,240,3,192,15,0,60,0,240,0,192,0,11,18, + 36,13,1,0,63,0,99,192,241,224,241,224,97,224,1,224, + 1,192,3,128,7,0,12,0,24,0,24,0,0,0,0,0, + 28,0,62,0,62,0,28,0,19,18,54,20,1,0,1,252, + 0,15,6,0,12,1,128,48,0,192,48,220,192,99,188,96, + 103,28,96,199,28,96,206,28,96,206,56,96,206,56,64,206, + 56,192,206,121,128,103,191,0,96,0,0,56,1,0,28,7, + 0,7,252,0,19,18,54,19,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,1,120,0,1,120,0,3,60,0,2, + 60,0,2,60,0,6,30,0,4,30,0,7,254,0,12,15, + 0,8,15,0,8,15,0,24,7,128,56,7,128,254,31,224, + 17,18,54,19,1,0,255,248,0,60,62,0,60,31,0,60, + 31,0,60,31,0,60,31,0,60,30,0,60,60,0,63,248, + 0,60,30,0,60,15,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,31,0,255,252,0,17,18,54,19, + 1,0,3,249,128,15,15,128,60,3,128,60,1,128,120,1, + 128,120,0,128,248,0,128,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,120,0,128,120,0,128,60,1,0,60, + 1,0,15,6,0,3,248,0,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,60,7,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,15,18,36,18,1,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,18, + 36,17,1,0,255,254,60,30,60,6,60,2,60,2,60,34, + 60,32,60,96,63,224,60,96,60,32,60,32,60,0,60,0, + 60,0,60,0,60,0,255,0,18,18,54,20,1,0,3,249, + 128,15,15,128,60,3,128,60,1,128,120,1,128,120,0,128, + 248,0,128,248,0,0,248,0,0,248,0,0,248,15,192,248, + 7,128,120,7,128,120,7,128,60,7,128,60,7,128,15,13, + 128,3,248,128,19,18,54,21,1,0,255,31,224,60,7,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,63,255,128,60,7,128,60,7,128,60,7,128,60,7, + 128,60,7,128,60,7,128,60,7,128,60,7,128,255,31,224, + 8,18,18,10,1,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,14,18,36,16,0,0,3,252, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,96,240,240,240,240,240,224,240,192,224,97,224, + 63,128,20,18,54,21,1,0,255,15,192,60,3,0,60,6, + 0,60,12,0,60,24,0,60,48,0,60,96,0,60,224,0, + 61,240,0,63,248,0,62,248,0,60,124,0,60,62,0,60, + 31,0,60,31,0,60,15,128,60,7,192,255,15,240,15,18, + 36,17,1,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,2, + 60,2,60,6,60,30,255,254,22,18,54,24,1,0,252,1, + 252,60,1,240,62,3,240,62,2,240,46,2,240,47,6,240, + 39,4,240,39,132,240,39,140,240,35,136,240,35,200,240,35, + 216,240,33,208,240,33,240,240,32,224,240,32,224,240,112,96, + 240,248,67,252,20,18,54,22,1,0,252,7,240,62,1,192, + 31,0,128,31,128,128,31,192,128,23,224,128,19,240,128,17, + 240,128,16,248,128,16,124,128,16,126,128,16,63,128,16,31, + 128,16,15,128,16,7,128,16,3,128,56,1,128,254,0,128, + 19,18,54,21,1,0,3,248,0,15,30,0,60,7,128,60, + 7,128,120,3,192,120,3,192,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,120,3,192,120,3,192, + 60,7,128,60,7,128,15,30,0,3,248,0,17,18,54,18, + 1,0,255,252,0,60,31,0,60,15,0,60,15,128,60,15, + 128,60,15,128,60,15,128,60,15,0,60,31,0,63,248,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,255,128,0,19,23,69,21,1,251,3,248, + 0,15,30,0,60,7,128,60,7,128,120,3,192,120,3,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,251, + 227,224,126,115,192,124,51,192,60,51,128,60,27,128,15,30, + 0,3,254,0,0,14,0,0,15,32,0,7,192,0,7,192, + 0,3,128,19,18,54,21,1,0,255,248,0,60,62,0,60, + 31,0,60,31,0,60,31,0,60,31,0,60,30,0,60,60, + 0,63,224,0,60,120,0,60,60,0,60,60,0,60,62,0, + 60,30,0,60,31,32,60,15,32,60,15,192,255,135,128,14, + 18,36,16,1,0,15,200,56,120,96,24,224,24,224,8,240, + 8,254,0,255,192,127,240,63,248,15,252,1,252,128,60,128, + 28,192,28,192,24,240,112,159,192,16,18,36,18,1,0,255, + 255,227,199,195,195,131,193,131,193,131,193,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,15,240,19,18,54,21,1,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,2,0,30,2,0,31,140,0,7,248,0,19, + 18,54,19,0,0,255,15,224,60,3,128,60,3,0,30,2, + 0,30,2,0,30,6,0,15,4,0,15,4,0,15,12,0, + 7,136,0,7,136,0,7,152,0,3,208,0,3,208,0,1, + 224,0,1,224,0,0,192,0,0,192,0,26,18,72,26,0, + 0,255,127,159,192,60,30,7,0,60,30,6,0,30,15,4, + 0,30,15,4,0,30,15,12,0,15,31,136,0,15,23,136, + 0,15,23,152,0,7,179,208,0,7,163,208,0,7,163,240, + 0,3,225,224,0,3,193,224,0,3,193,224,0,1,192,192, + 0,1,128,192,0,1,128,192,0,20,18,54,20,0,0,255, + 135,224,62,1,128,31,3,0,31,134,0,15,140,0,7,216, + 0,3,240,0,3,224,0,1,240,0,0,248,0,1,248,0, + 3,124,0,6,62,0,4,31,0,12,31,0,24,15,128,48, + 7,192,252,31,240,18,18,54,18,0,0,255,15,192,60,3, + 0,30,2,0,30,6,0,15,4,0,15,12,0,7,136,0, + 7,152,0,3,208,0,3,240,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,7,248, + 0,15,18,36,17,1,0,127,254,112,62,96,124,64,120,64, + 248,0,240,1,224,3,224,3,192,7,128,15,128,15,0,30, + 0,62,2,60,2,120,6,248,14,255,254,6,21,21,8,1, + 253,252,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,252,10,18,36,12,1,0,192,0,224,0, + 224,0,112,0,112,0,56,0,56,0,28,0,28,0,14,0, + 14,0,7,0,7,0,3,128,3,128,1,192,1,192,0,192, + 6,21,21,8,1,253,252,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,252,10,10,20,15,2, + 8,12,0,12,0,30,0,30,0,51,0,51,0,97,128,97, + 128,192,192,192,192,12,2,4,12,0,252,255,240,255,240,5, + 5,5,7,1,13,224,224,112,48,24,14,12,24,15,0,0, + 127,128,241,224,240,240,96,240,1,240,14,240,120,240,240,240, + 240,240,240,240,249,252,126,56,16,18,36,16,255,0,252,0, + 60,0,60,0,60,0,60,0,60,0,61,240,63,28,62,30, + 60,14,60,15,60,15,60,15,60,15,60,14,60,30,62,28, + 39,240,13,12,24,14,0,0,15,240,56,120,120,120,112,48, + 240,0,240,0,240,0,240,0,120,8,120,8,60,48,31,224, + 16,18,36,17,0,0,0,252,0,60,0,60,0,60,0,60, + 0,60,15,188,56,252,120,124,112,60,240,60,240,60,240,60, + 240,60,112,60,120,124,56,252,15,191,14,12,24,15,0,0, + 15,192,56,112,120,120,112,56,240,60,255,252,240,0,240,0, + 120,8,120,8,60,48,15,224,12,18,36,10,0,0,7,224, + 28,240,28,240,60,96,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 255,0,13,18,36,15,1,251,0,56,31,248,121,224,240,240, + 240,240,240,240,240,240,121,224,63,128,96,0,224,0,255,192, + 127,240,127,248,96,56,192,24,224,48,127,224,17,18,54,18, + 0,0,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,248,0,61,252,0,62,62,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,254,63,128,8,18,18,9,0,0,24,60, + 60,24,0,0,252,60,60,60,60,60,60,60,60,60,60,255, + 8,23,23,7,253,251,6,15,15,6,0,0,63,15,15,15, + 15,15,15,15,15,15,15,15,15,15,206,206,120,17,18,54, + 17,0,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,254,0,60,56,0,60,48,0,60,96, + 0,60,192,0,63,192,0,63,224,0,60,240,0,60,120,0, + 60,60,0,60,30,0,255,127,128,8,18,18,9,0,0,252, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 255,24,12,36,25,0,0,252,240,240,61,249,248,62,126,124, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,254,126,127,17,12,36,18,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,12,24,15,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,16,17,34,16,255,251,253,240,63,28,60,30,60, + 14,60,15,60,15,60,15,60,15,60,14,62,30,63,28,61, + 240,60,0,60,0,60,0,60,0,255,0,16,17,34,16,0, + 251,15,132,60,236,120,60,112,60,240,60,240,60,240,60,240, + 60,112,60,120,124,56,252,15,188,0,60,0,60,0,60,0, + 60,0,255,12,12,24,12,0,0,252,224,61,240,62,240,60, + 96,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,10,12,24,11,0,0,62,128,99,128,193,128,224,128,252, + 0,255,128,127,192,15,192,129,192,192,192,225,128,191,0,10, + 17,34,10,0,0,4,0,12,0,12,0,28,0,60,0,255, + 128,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 64,60,64,31,128,15,0,17,12,36,18,0,0,254,126,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,31,222,0,15,159, + 128,16,12,24,15,255,0,255,31,60,4,30,12,30,8,15, + 24,15,16,7,176,7,160,3,224,3,192,1,192,1,128,23, + 12,36,22,255,0,255,63,62,60,30,8,60,30,8,30,63, + 24,30,47,16,30,47,16,15,103,176,15,71,160,7,195,224, + 7,131,192,3,129,192,3,1,128,17,12,36,16,255,0,255, + 31,0,62,12,0,31,24,0,15,176,0,7,224,0,3,192, + 0,1,224,0,3,240,0,6,248,0,12,124,0,24,62,0, + 124,127,128,16,17,34,15,255,251,254,63,60,12,30,8,30, + 24,15,16,15,48,7,160,7,224,3,192,3,192,1,192,1, + 128,1,128,97,0,243,0,254,0,120,0,11,12,24,12,0, + 0,255,224,225,224,195,224,135,192,143,128,15,0,30,0,62, + 32,124,32,248,96,240,224,255,224,6,21,21,8,1,253,28, + 48,112,112,112,112,112,112,112,96,192,96,112,112,112,112,112, + 112,112,48,28,3,18,18,15,6,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,6,21,21,8, + 1,253,224,48,56,56,56,56,56,56,56,24,12,24,56,56, + 56,56,56,56,56,48,224,12,5,10,15,1,4,56,32,126, + 112,255,240,231,224,65,192,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,7,0,1,5,18, + 18,7,1,251,112,248,248,112,0,0,32,32,112,112,112,112, + 112,112,248,248,248,112,12,15,30,14,1,255,0,32,0,64, + 15,192,56,240,121,240,113,96,242,0,242,0,244,0,244,0, + 120,16,120,16,60,96,47,192,64,0,14,18,36,15,0,0, + 3,224,15,48,14,120,30,120,30,48,30,0,30,0,30,0, + 127,224,15,0,15,0,15,0,7,0,7,4,126,12,207,252, + 207,248,113,240,12,12,24,14,1,2,207,48,255,240,127,224, + 112,224,224,112,224,112,224,112,224,112,112,224,127,224,255,240, + 207,48,19,18,54,19,0,0,255,143,224,62,3,0,62,3, + 0,31,6,0,31,6,0,15,140,0,15,140,0,7,216,0, + 7,248,0,31,254,0,1,224,0,1,224,0,31,254,0,1, + 224,0,1,224,0,1,224,0,3,240,0,15,252,0,3,18, + 18,14,6,0,224,224,224,224,224,224,224,0,0,0,224,224, + 224,224,224,224,224,224,11,20,40,13,1,254,31,0,35,128, + 99,128,99,0,120,0,62,0,63,128,71,192,193,224,224,224, + 240,96,124,96,63,64,15,128,3,128,1,128,48,128,112,128, + 113,0,62,0,10,4,8,12,1,14,97,128,243,192,243,192, + 97,128,19,18,54,21,1,0,3,248,0,15,254,0,60,7, + 128,48,1,128,97,248,192,103,24,192,198,8,96,206,0,96, + 206,0,96,206,0,96,206,0,96,199,4,96,103,136,192,97, + 240,192,48,1,128,60,7,128,15,254,0,3,248,0,8,10, + 10,10,1,8,120,206,6,126,198,206,119,0,0,255,11,7, + 14,13,1,3,28,224,57,192,115,128,231,0,115,128,57,192, + 28,224,11,6,12,13,1,4,255,224,255,224,0,96,0,96, + 0,96,0,96,6,3,3,8,1,5,252,252,252,19,18,54, + 21,1,0,3,248,0,15,254,0,60,7,128,48,1,128,103, + 240,192,99,24,192,195,24,96,195,24,96,195,240,96,195,96, + 96,195,48,96,195,48,96,99,24,192,103,156,192,48,1,128, + 60,7,128,15,254,0,3,248,0,8,2,2,10,1,15,255, + 255,8,7,7,9,0,11,60,102,195,195,195,102,60,12,11, + 22,14,1,1,6,0,6,0,6,0,255,240,255,240,6,0, + 6,0,6,0,0,0,255,240,255,240,7,11,11,8,0,7, + 124,206,198,198,14,12,24,48,98,254,254,7,11,11,8,0, + 7,124,206,198,6,12,60,14,6,198,206,124,5,5,5,7, + 1,14,24,56,112,96,192,17,17,51,18,0,251,254,63,128, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,63,222,0,39,159, + 128,48,0,0,48,0,0,120,0,0,120,0,0,48,0,0, + 16,18,36,18,1,0,31,255,127,156,127,156,255,156,255,156, + 255,156,127,156,127,156,31,156,3,156,3,156,3,156,3,156, + 3,156,3,156,3,156,3,156,15,255,3,4,4,7,2,5, + 224,224,224,224,5,6,6,7,1,251,16,32,112,56,24,240, + 6,11,11,8,0,7,48,240,48,48,48,48,48,48,48,48, + 252,9,10,20,11,1,8,28,0,99,0,227,128,227,128,227, + 128,99,0,28,0,0,0,0,0,255,128,11,7,14,13,1, + 3,231,0,115,128,57,192,28,224,57,192,115,128,231,0,18, + 18,54,21,1,0,48,6,0,240,6,0,48,12,0,48,24, + 0,48,24,0,48,48,0,48,96,0,48,99,0,48,199,0, + 49,135,0,253,143,0,3,27,0,6,19,0,6,51,0,12, + 99,0,24,127,192,24,3,0,48,7,128,18,18,54,21,1, + 0,48,6,0,240,6,0,48,12,0,48,24,0,48,24,0, + 48,48,0,48,96,0,48,111,128,48,201,192,49,152,192,253, + 152,192,3,1,192,6,1,128,6,3,0,12,6,0,24,12, + 64,24,31,192,48,31,192,19,18,54,21,0,0,124,3,0, + 206,3,0,198,6,0,6,12,0,12,12,0,56,24,0,12, + 48,0,6,49,128,198,99,128,206,195,128,124,197,128,1,141, + 128,3,25,128,3,25,128,6,49,128,12,63,224,12,1,128, + 24,3,192,11,18,36,13,1,251,7,0,15,128,15,128,7, + 0,0,0,0,0,3,0,3,0,6,0,28,0,56,0,112, + 0,240,0,240,192,241,224,241,224,120,192,31,128,19,24,72, + 19,0,0,6,0,0,7,0,0,3,128,0,1,192,0,0, + 96,0,0,0,0,0,96,0,0,96,0,0,240,0,0,240, + 0,1,120,0,1,120,0,3,60,0,2,60,0,2,60,0, + 6,30,0,4,30,0,7,254,0,12,15,0,8,15,0,8, + 15,0,24,7,128,56,7,128,254,31,224,19,24,72,19,0, + 0,0,6,0,0,14,0,0,28,0,0,48,0,0,96,0, + 0,0,0,0,96,0,0,96,0,0,240,0,0,240,0,1, + 120,0,1,120,0,3,60,0,2,60,0,2,60,0,6,30, + 0,4,30,0,7,254,0,12,15,0,8,15,0,8,15,0, + 24,7,128,56,7,128,254,31,224,19,23,69,19,0,0,0, + 96,0,0,240,0,1,152,0,3,12,0,0,0,0,0,96, + 0,0,96,0,0,240,0,0,240,0,1,120,0,1,120,0, + 3,60,0,2,60,0,2,60,0,6,30,0,4,30,0,7, + 254,0,12,15,0,8,15,0,8,15,0,24,7,128,56,7, + 128,254,31,224,19,22,66,19,0,0,0,226,0,1,252,0, + 2,56,0,0,0,0,0,96,0,0,96,0,0,240,0,0, + 240,0,1,120,0,1,120,0,3,60,0,2,60,0,2,60, + 0,6,30,0,4,30,0,7,254,0,12,15,0,8,15,0, + 8,15,0,24,7,128,56,7,128,254,31,224,19,23,69,19, + 0,0,3,156,0,3,156,0,3,156,0,0,0,0,0,0, + 0,0,96,0,0,96,0,0,240,0,0,240,0,1,120,0, + 1,120,0,3,60,0,2,60,0,2,60,0,6,30,0,4, + 30,0,7,254,0,12,15,0,8,15,0,8,15,0,24,7, + 128,56,7,128,254,31,224,19,24,72,19,0,0,0,240,0, + 1,152,0,1,8,0,1,152,0,0,240,0,0,0,0,0, + 96,0,0,96,0,0,240,0,0,240,0,1,120,0,1,120, + 0,3,60,0,2,60,0,2,60,0,6,30,0,4,30,0, + 7,254,0,12,15,0,8,15,0,8,15,0,24,7,128,56, + 7,128,254,31,224,25,18,72,26,0,0,1,255,255,128,0, + 111,3,128,0,111,1,128,0,207,0,128,0,207,0,128,1, + 143,8,128,1,143,8,0,3,15,24,0,3,15,248,0,6, + 15,24,0,7,255,8,0,12,15,8,0,12,15,0,128,24, + 15,0,128,24,15,0,128,48,15,1,128,112,15,3,128,252, + 63,255,128,17,23,69,19,1,251,3,249,128,15,15,128,60, + 3,128,60,1,128,120,1,128,120,0,128,248,0,128,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,120,0,128, + 120,0,128,60,1,0,60,1,0,15,6,0,3,248,0,0, + 128,0,1,192,0,0,224,0,0,96,0,3,192,0,15,24, + 48,18,1,0,12,0,14,0,7,0,1,128,0,192,0,0, + 255,254,60,30,60,6,60,2,60,2,60,34,60,32,60,96, + 63,224,60,96,60,32,60,32,60,2,60,2,60,2,60,6, + 60,30,255,254,15,24,48,18,1,0,0,24,0,56,0,112, + 0,192,1,128,0,0,255,254,60,30,60,6,60,2,60,2, + 60,34,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,2,60,6,60,30,255,254,15,23,46,18,1,0, + 1,128,3,192,6,96,12,48,0,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,23, + 46,18,1,0,14,112,14,112,14,112,0,0,0,0,255,254, + 60,30,60,6,60,2,60,2,60,34,60,32,60,96,63,224, + 60,96,60,32,60,32,60,2,60,2,60,2,60,6,60,30, + 255,254,8,24,24,10,1,0,192,224,112,24,12,0,255,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,255, + 8,24,24,10,1,0,3,7,14,24,48,0,255,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,255,8,23, + 23,10,1,0,24,60,102,195,0,255,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,255,8,23,23,10,1, + 0,231,231,231,0,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,255,135,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,20,22,66,22,1,0,0,226,0,1,252,0, + 2,56,0,0,0,0,252,7,240,62,1,192,31,0,128,31, + 128,128,31,192,128,23,224,128,19,240,128,17,240,128,16,248, + 128,16,124,128,16,126,128,16,63,128,16,31,128,16,15,128, + 16,7,128,16,3,128,56,1,128,254,0,128,19,24,72,21, + 1,0,6,0,0,7,0,0,3,128,0,0,192,0,0,96, + 0,0,0,0,3,248,0,15,30,0,60,7,128,60,7,128, + 120,3,192,120,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,120,3,192,120,3,192,60,7, + 128,60,7,128,15,30,0,3,248,0,19,23,69,21,1,0, + 0,24,0,0,56,0,0,96,0,0,192,0,0,0,0,3, + 248,0,15,30,0,60,7,128,60,7,128,120,3,192,120,3, + 192,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,120,3,192,120,3,192,60,7,128,60,7,128,15, + 30,0,3,248,0,19,23,69,21,1,0,0,96,0,0,240, + 0,1,152,0,3,12,0,0,0,0,3,248,0,15,30,0, + 60,7,128,60,7,128,120,3,192,120,3,192,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,120,3, + 192,120,3,192,60,7,128,60,7,128,15,30,0,3,248,0, + 19,22,66,21,1,0,0,226,0,1,252,0,2,56,0,0, + 0,0,3,248,0,15,30,0,60,7,128,60,7,128,120,3, + 192,120,3,192,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,120,3,192,120,3,192,60,7,128,60, + 7,128,15,30,0,3,248,0,19,23,69,21,1,0,7,28, + 0,7,28,0,7,28,0,0,0,0,0,0,0,3,248,0, + 15,30,0,60,7,128,60,7,128,120,3,192,120,3,192,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,120,3,192,120,3,192,60,7,128,60,7,128,15,30,0, + 3,248,0,12,12,24,14,1,1,192,48,224,112,112,224,57, + 192,31,128,15,0,15,0,31,128,57,192,112,224,224,112,192, + 48,20,18,54,21,0,0,1,252,48,7,143,96,30,3,192, + 30,3,192,60,7,224,60,13,224,124,25,240,124,49,240,124, + 97,240,124,193,240,125,129,240,127,1,240,62,1,224,60,1, + 224,62,3,192,126,3,192,199,143,0,129,252,0,19,24,72, + 21,1,0,3,0,0,3,128,0,1,192,0,0,96,0,0, + 48,0,0,0,0,255,15,224,60,3,128,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,30,2,0,31,142,0,7,248,0,19,24,72,21,1, + 0,0,6,0,0,14,0,0,28,0,0,48,0,0,96,0, + 0,0,0,255,15,224,60,3,128,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 30,2,0,31,142,0,7,248,0,19,23,69,21,1,0,0, + 96,0,0,240,0,1,152,0,3,12,0,0,0,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,30,2,0,31,142, + 0,7,248,0,19,23,69,21,1,0,7,28,0,7,28,0, + 7,28,0,0,0,0,0,0,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,30,2,0,31,142,0,7,248,0,18, + 24,72,18,0,0,0,6,0,0,14,0,0,28,0,0,48, + 0,0,96,0,0,0,0,255,15,192,60,3,0,30,6,0, + 30,6,0,15,12,0,15,12,0,7,152,0,7,152,0,3, + 240,0,3,240,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,7,248,0,16,18,36, + 18,1,0,255,128,60,0,60,0,60,0,63,248,60,62,60, + 30,60,31,60,31,60,31,60,31,60,30,60,62,63,240,60, + 0,60,0,60,0,255,128,15,18,36,15,255,0,7,224,30, + 120,28,60,60,60,60,60,60,56,60,112,61,224,60,60,60, + 30,60,30,60,30,60,30,60,30,60,30,60,28,61,60,253, + 240,14,18,36,15,0,0,12,0,14,0,7,0,3,0,1, + 128,0,0,127,128,241,224,240,240,96,240,1,240,14,240,120, + 240,240,240,240,240,240,240,249,252,126,56,14,18,36,15,0, + 0,1,128,3,128,7,0,6,0,12,0,0,0,127,128,241, + 224,240,240,96,240,1,240,14,240,120,240,240,240,240,240,240, + 240,249,252,126,56,14,18,36,15,0,0,2,0,7,0,15, + 128,24,192,48,96,0,0,127,128,241,224,240,240,96,240,1, + 240,14,240,120,240,240,240,240,240,240,240,249,252,126,56,14, + 17,34,15,0,0,14,32,31,192,35,128,0,0,0,0,127, + 128,241,224,240,240,96,240,1,240,14,240,120,240,240,240,240, + 240,240,240,249,252,126,56,14,17,34,15,0,0,56,224,56, + 224,56,224,0,0,0,0,127,128,241,224,240,240,96,240,1, + 240,14,240,120,240,240,240,240,240,240,240,249,252,126,56,14, + 18,36,15,0,0,7,0,13,128,8,128,13,128,7,0,0, + 0,127,128,241,224,240,240,96,240,1,240,14,240,120,240,240, + 240,240,240,240,240,249,252,126,56,22,12,36,23,0,0,31, + 207,192,121,248,112,112,248,120,112,240,56,1,240,60,14,255, + 252,120,240,0,240,240,0,240,248,8,240,248,8,249,188,48, + 126,15,224,13,17,34,14,0,251,15,240,56,120,120,120,112, + 48,240,0,240,0,240,0,240,0,120,8,120,8,60,48,31, + 224,2,0,7,0,3,128,1,128,15,0,14,18,36,15,0, + 0,12,0,14,0,7,0,3,0,1,128,0,0,15,192,56, + 112,120,120,112,56,240,60,255,252,240,0,240,0,120,8,120, + 8,60,48,15,224,14,18,36,15,0,0,0,96,0,224,1, + 192,3,128,6,0,0,0,15,192,56,112,120,120,112,56,240, + 60,255,252,240,0,240,0,120,8,120,8,60,48,15,224,14, + 18,36,15,0,0,2,0,7,0,15,128,24,192,48,96,0, + 0,15,192,56,112,120,120,112,56,240,60,255,252,240,0,240, + 0,120,8,120,8,60,48,15,224,14,17,34,15,0,0,28, + 112,28,112,28,112,0,0,0,0,15,192,56,112,120,120,112, + 56,240,60,255,252,240,0,240,0,120,8,120,8,60,48,15, + 224,8,18,18,9,0,0,96,112,56,24,12,0,252,60,60, + 60,60,60,60,60,60,60,60,255,8,18,18,9,0,0,12, + 28,56,48,96,0,252,60,60,60,60,60,60,60,60,60,60, + 255,9,18,36,9,0,0,8,0,28,0,62,0,99,0,193, + 128,0,0,252,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,255,0,8,17,17,9,0, + 0,231,231,231,0,0,252,60,60,60,60,60,60,60,60,60, + 60,255,14,18,36,15,0,0,192,0,57,192,15,0,15,0, + 49,192,0,224,15,240,56,112,120,120,112,56,240,60,240,60, + 240,60,240,60,112,56,120,120,56,112,15,192,17,17,51,18, + 0,0,3,136,0,7,240,0,8,224,0,0,0,0,0,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,18,36,15,0,0,12,0,14,0,7, + 0,3,0,1,128,0,0,15,192,56,112,120,120,112,56,240, + 60,240,60,240,60,240,60,112,56,120,120,56,112,15,192,14, + 18,36,15,0,0,0,96,0,224,1,192,3,0,6,0,0, + 0,15,192,56,112,120,120,112,56,240,60,240,60,240,60,240, + 60,112,56,120,120,56,112,15,192,14,18,36,15,0,0,2, + 0,7,0,15,128,24,192,48,96,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,14,17,34,15,0,0,7,16,15,224,17,192,0, + 0,0,0,15,192,56,112,120,120,112,56,240,60,240,60,240, + 60,240,60,112,56,120,120,56,112,15,192,14,17,34,15,0, + 0,56,224,56,224,56,224,0,0,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,12,12,24,14,1,1,6,0,6,0,6,0,0, + 0,0,0,255,240,255,240,0,0,0,0,6,0,6,0,6, + 0,14,18,36,15,0,253,0,16,0,16,0,32,15,224,56, + 112,120,120,112,184,240,188,241,60,241,60,242,60,114,56,124, + 120,60,112,15,192,8,0,16,0,16,0,17,18,54,18,0, + 0,3,0,0,3,128,0,1,192,0,0,192,0,0,96,0, + 0,0,0,254,63,128,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,62,62, + 0,31,222,0,15,159,128,17,18,54,18,0,0,0,96,0, + 0,224,0,1,192,0,1,128,0,3,0,0,0,0,0,254, + 63,128,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,62,62,0,31,222,0, + 15,159,128,17,18,54,18,0,0,0,128,0,1,192,0,3, + 224,0,6,48,0,12,24,0,0,0,0,254,63,128,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,62,62,0,31,222,0,15,159,128,17, + 17,51,18,0,0,14,56,0,14,56,0,14,56,0,0,0, + 0,0,0,0,254,63,128,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,62, + 62,0,31,222,0,15,159,128,16,23,46,15,255,251,0,48, + 0,112,0,224,0,192,1,128,0,0,254,63,60,12,30,8, + 30,24,15,16,15,48,7,160,7,224,3,192,3,192,1,192, + 1,128,1,128,97,0,243,0,254,0,120,0,16,23,46,16, + 255,251,252,0,60,0,60,0,60,0,60,0,60,0,61,240, + 63,28,60,30,60,14,60,15,60,15,60,15,60,15,60,14, + 62,30,63,28,61,240,60,0,60,0,60,0,60,0,255,0, + 16,22,44,15,255,251,14,56,14,56,14,56,0,0,0,0, + 254,63,60,12,30,8,30,24,15,16,15,48,7,160,7,224, + 3,192,3,192,1,192,1,128,1,128,97,0,243,0,254,0, + 120,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--25-180-100-100-P-149-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=23 x= 6 y=13 dx=26 dy= 0 ascent=20 len=72 + Font Bounding box w=33 h=40 x=-4 y=-10 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB18r[3736] U8G_SECTION(".progmem.u8g_font_ncenB18r") = { + 0,33,40,252,246,18,4,68,10,106,32,127,251,20,251,18, + 251,0,0,0,7,0,1,5,18,18,7,1,0,112,248,248, + 248,112,112,112,112,112,112,32,32,0,0,112,248,248,112,6, + 6,6,8,1,12,204,204,204,204,204,136,12,18,36,14,1, + 0,12,192,12,192,12,192,12,192,12,192,127,240,127,240,25, + 128,25,128,25,128,25,128,255,224,255,224,51,0,51,0,51, + 0,51,0,51,0,12,23,46,14,1,253,4,0,4,0,31, + 192,116,96,100,240,228,240,228,240,244,96,252,0,255,0,127, + 192,31,224,7,240,5,240,100,240,244,112,244,112,244,96,100, + 224,63,128,4,0,4,0,4,0,19,18,54,21,1,0,30, + 14,0,123,54,0,113,204,0,241,12,0,225,24,0,226,24, + 0,226,48,0,100,48,0,56,96,0,0,99,192,0,207,96, + 0,206,32,1,158,32,1,156,32,3,28,64,3,28,64,6, + 12,128,6,7,0,20,18,54,22,1,0,1,240,0,7,56, + 0,14,24,0,14,24,0,14,24,0,15,48,0,15,224,0, + 7,192,0,15,192,0,57,227,240,113,241,192,240,241,128,240, + 121,0,240,127,0,240,62,16,120,31,16,124,63,224,31,199, + 192,2,6,6,6,2,12,192,192,192,192,192,192,6,21,21, + 8,1,253,4,12,24,48,48,96,96,224,224,224,224,224,224, + 224,96,96,48,48,24,12,4,6,21,21,8,1,253,128,192, + 96,48,48,24,24,28,28,28,28,28,28,28,24,24,48,48, + 96,192,128,9,10,20,11,1,8,28,0,28,0,201,128,235, + 128,62,0,62,0,235,128,201,128,28,0,28,0,12,12,24, + 14,1,1,6,0,6,0,6,0,6,0,6,0,255,240,255, + 240,6,0,6,0,6,0,6,0,6,0,5,8,8,7,1, + 252,112,248,248,120,48,32,64,128,6,3,3,8,1,5,252, + 252,252,5,4,4,7,1,0,112,248,248,112,7,18,18,9, + 1,0,6,6,6,12,12,12,24,24,24,48,48,48,96,96, + 96,192,192,192,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,57,192,15,0,10,18, + 36,14,2,0,30,0,254,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,255,192,11,18,36,14,1,0,31,0, + 99,192,225,224,241,224,241,224,241,224,97,224,1,192,3,192, + 3,128,7,0,14,0,24,32,48,32,112,96,255,224,255,224, + 255,224,12,18,36,14,1,0,15,128,49,224,112,224,120,240, + 120,240,120,240,48,224,1,192,15,0,1,192,0,224,96,240, + 240,240,240,240,240,240,224,224,97,224,31,128,12,18,36,14, + 1,0,0,192,1,192,3,192,7,192,7,192,15,192,27,192, + 19,192,51,192,99,192,99,192,195,192,255,240,255,240,3,192, + 3,192,3,192,15,240,12,18,36,14,1,0,127,240,127,224, + 127,192,64,0,64,0,64,0,95,0,113,192,96,224,0,240, + 0,240,0,240,96,240,240,240,240,240,240,224,97,192,63,0, + 12,18,36,14,1,0,15,128,56,192,113,224,113,224,241,224, + 240,192,240,0,247,128,249,224,240,224,240,240,240,240,240,240, + 240,240,240,240,112,224,121,224,31,128,12,18,36,14,1,0, + 255,240,255,240,255,224,192,96,128,192,129,192,3,128,3,128, + 7,0,7,0,15,0,15,0,30,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,112,224,120,224,124,192,63,128,31,128,63,192,119,224, + 225,240,224,240,224,112,224,112,224,96,112,192,31,128,12,18, + 36,14,1,0,31,128,121,224,112,224,240,240,240,240,240,240, + 240,240,240,240,112,240,121,240,30,240,0,240,48,240,120,240, + 120,224,120,224,49,192,31,0,5,12,12,7,1,0,112,248, + 248,112,0,0,0,0,112,248,248,112,5,16,16,7,1,252, + 112,248,248,112,0,0,0,0,112,248,248,120,48,32,64,128, + 12,12,24,14,1,1,0,48,0,240,3,192,15,0,60,0, + 240,0,240,0,60,0,15,0,3,192,0,240,0,48,12,6, + 12,14,1,4,255,240,255,240,0,0,0,0,255,240,255,240, + 12,12,24,14,1,1,192,0,240,0,60,0,15,0,3,192, + 0,240,0,240,3,192,15,0,60,0,240,0,192,0,11,18, + 36,13,1,0,63,0,99,192,241,224,241,224,97,224,1,224, + 1,192,3,128,7,0,12,0,24,0,24,0,0,0,0,0, + 28,0,62,0,62,0,28,0,19,18,54,20,1,0,1,252, + 0,15,6,0,12,1,128,48,0,192,48,220,192,99,188,96, + 103,28,96,199,28,96,206,28,96,206,56,96,206,56,64,206, + 56,192,206,121,128,103,191,0,96,0,0,56,1,0,28,7, + 0,7,252,0,19,18,54,19,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,1,120,0,1,120,0,3,60,0,2, + 60,0,2,60,0,6,30,0,4,30,0,7,254,0,12,15, + 0,8,15,0,8,15,0,24,7,128,56,7,128,254,31,224, + 17,18,54,19,1,0,255,248,0,60,62,0,60,31,0,60, + 31,0,60,31,0,60,31,0,60,30,0,60,60,0,63,248, + 0,60,30,0,60,15,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,31,0,255,252,0,17,18,54,19, + 1,0,3,249,128,15,15,128,60,3,128,60,1,128,120,1, + 128,120,0,128,248,0,128,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,120,0,128,120,0,128,60,1,0,60, + 1,0,15,6,0,3,248,0,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,60,7,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,15,18,36,18,1,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,18, + 36,17,1,0,255,254,60,30,60,6,60,2,60,2,60,34, + 60,32,60,96,63,224,60,96,60,32,60,32,60,0,60,0, + 60,0,60,0,60,0,255,0,18,18,54,20,1,0,3,249, + 128,15,15,128,60,3,128,60,1,128,120,1,128,120,0,128, + 248,0,128,248,0,0,248,0,0,248,0,0,248,15,192,248, + 7,128,120,7,128,120,7,128,60,7,128,60,7,128,15,13, + 128,3,248,128,19,18,54,21,1,0,255,31,224,60,7,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,63,255,128,60,7,128,60,7,128,60,7,128,60,7, + 128,60,7,128,60,7,128,60,7,128,60,7,128,255,31,224, + 8,18,18,10,1,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,14,18,36,16,0,0,3,252, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,96,240,240,240,240,240,224,240,192,224,97,224, + 63,128,20,18,54,21,1,0,255,15,192,60,3,0,60,6, + 0,60,12,0,60,24,0,60,48,0,60,96,0,60,224,0, + 61,240,0,63,248,0,62,248,0,60,124,0,60,62,0,60, + 31,0,60,31,0,60,15,128,60,7,192,255,15,240,15,18, + 36,17,1,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,2, + 60,2,60,6,60,30,255,254,22,18,54,24,1,0,252,1, + 252,60,1,240,62,3,240,62,2,240,46,2,240,47,6,240, + 39,4,240,39,132,240,39,140,240,35,136,240,35,200,240,35, + 216,240,33,208,240,33,240,240,32,224,240,32,224,240,112,96, + 240,248,67,252,20,18,54,22,1,0,252,7,240,62,1,192, + 31,0,128,31,128,128,31,192,128,23,224,128,19,240,128,17, + 240,128,16,248,128,16,124,128,16,126,128,16,63,128,16,31, + 128,16,15,128,16,7,128,16,3,128,56,1,128,254,0,128, + 19,18,54,21,1,0,3,248,0,15,30,0,60,7,128,60, + 7,128,120,3,192,120,3,192,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,120,3,192,120,3,192, + 60,7,128,60,7,128,15,30,0,3,248,0,17,18,54,18, + 1,0,255,252,0,60,31,0,60,15,0,60,15,128,60,15, + 128,60,15,128,60,15,128,60,15,0,60,31,0,63,248,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,255,128,0,19,23,69,21,1,251,3,248, + 0,15,30,0,60,7,128,60,7,128,120,3,192,120,3,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,251, + 227,224,126,115,192,124,51,192,60,51,128,60,27,128,15,30, + 0,3,254,0,0,14,0,0,15,32,0,7,192,0,7,192, + 0,3,128,19,18,54,21,1,0,255,248,0,60,62,0,60, + 31,0,60,31,0,60,31,0,60,31,0,60,30,0,60,60, + 0,63,224,0,60,120,0,60,60,0,60,60,0,60,62,0, + 60,30,0,60,31,32,60,15,32,60,15,192,255,135,128,14, + 18,36,16,1,0,15,200,56,120,96,24,224,24,224,8,240, + 8,254,0,255,192,127,240,63,248,15,252,1,252,128,60,128, + 28,192,28,192,24,240,112,159,192,16,18,36,18,1,0,255, + 255,227,199,195,195,131,193,131,193,131,193,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,15,240,19,18,54,21,1,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,2,0,30,2,0,31,140,0,7,248,0,19, + 18,54,19,0,0,255,15,224,60,3,128,60,3,0,30,2, + 0,30,2,0,30,6,0,15,4,0,15,4,0,15,12,0, + 7,136,0,7,136,0,7,152,0,3,208,0,3,208,0,1, + 224,0,1,224,0,0,192,0,0,192,0,26,18,72,26,0, + 0,255,127,159,192,60,30,7,0,60,30,6,0,30,15,4, + 0,30,15,4,0,30,15,12,0,15,31,136,0,15,23,136, + 0,15,23,152,0,7,179,208,0,7,163,208,0,7,163,240, + 0,3,225,224,0,3,193,224,0,3,193,224,0,1,192,192, + 0,1,128,192,0,1,128,192,0,20,18,54,20,0,0,255, + 135,224,62,1,128,31,3,0,31,134,0,15,140,0,7,216, + 0,3,240,0,3,224,0,1,240,0,0,248,0,1,248,0, + 3,124,0,6,62,0,4,31,0,12,31,0,24,15,128,48, + 7,192,252,31,240,18,18,54,18,0,0,255,15,192,60,3, + 0,30,2,0,30,6,0,15,4,0,15,12,0,7,136,0, + 7,152,0,3,208,0,3,240,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,7,248, + 0,15,18,36,17,1,0,127,254,112,62,96,124,64,120,64, + 248,0,240,1,224,3,224,3,192,7,128,15,128,15,0,30, + 0,62,2,60,2,120,6,248,14,255,254,6,21,21,8,1, + 253,252,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,252,10,18,36,12,1,0,192,0,224,0, + 224,0,112,0,112,0,56,0,56,0,28,0,28,0,14,0, + 14,0,7,0,7,0,3,128,3,128,1,192,1,192,0,192, + 6,21,21,8,1,253,252,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,252,10,10,20,15,2, + 8,12,0,12,0,30,0,30,0,51,0,51,0,97,128,97, + 128,192,192,192,192,12,2,4,12,0,252,255,240,255,240,5, + 5,5,7,1,13,224,224,112,48,24,14,12,24,15,0,0, + 127,128,241,224,240,240,96,240,1,240,14,240,120,240,240,240, + 240,240,240,240,249,252,126,56,16,18,36,16,255,0,252,0, + 60,0,60,0,60,0,60,0,60,0,61,240,63,28,62,30, + 60,14,60,15,60,15,60,15,60,15,60,14,60,30,62,28, + 39,240,13,12,24,14,0,0,15,240,56,120,120,120,112,48, + 240,0,240,0,240,0,240,0,120,8,120,8,60,48,31,224, + 16,18,36,17,0,0,0,252,0,60,0,60,0,60,0,60, + 0,60,15,188,56,252,120,124,112,60,240,60,240,60,240,60, + 240,60,112,60,120,124,56,252,15,191,14,12,24,15,0,0, + 15,192,56,112,120,120,112,56,240,60,255,252,240,0,240,0, + 120,8,120,8,60,48,15,224,12,18,36,10,0,0,7,224, + 28,240,28,240,60,96,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 255,0,13,18,36,15,1,251,0,56,31,248,121,224,240,240, + 240,240,240,240,240,240,121,224,63,128,96,0,224,0,255,192, + 127,240,127,248,96,56,192,24,224,48,127,224,17,18,54,18, + 0,0,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,248,0,61,252,0,62,62,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,254,63,128,8,18,18,9,0,0,24,60, + 60,24,0,0,252,60,60,60,60,60,60,60,60,60,60,255, + 8,23,23,7,253,251,6,15,15,6,0,0,63,15,15,15, + 15,15,15,15,15,15,15,15,15,15,206,206,120,17,18,54, + 17,0,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,254,0,60,56,0,60,48,0,60,96, + 0,60,192,0,63,192,0,63,224,0,60,240,0,60,120,0, + 60,60,0,60,30,0,255,127,128,8,18,18,9,0,0,252, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 255,24,12,36,25,0,0,252,240,240,61,249,248,62,126,124, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,254,126,127,17,12,36,18,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,12,24,15,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,16,17,34,16,255,251,253,240,63,28,60,30,60, + 14,60,15,60,15,60,15,60,15,60,14,62,30,63,28,61, + 240,60,0,60,0,60,0,60,0,255,0,16,17,34,16,0, + 251,15,132,60,236,120,60,112,60,240,60,240,60,240,60,240, + 60,112,60,120,124,56,252,15,188,0,60,0,60,0,60,0, + 60,0,255,12,12,24,12,0,0,252,224,61,240,62,240,60, + 96,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,10,12,24,11,0,0,62,128,99,128,193,128,224,128,252, + 0,255,128,127,192,15,192,129,192,192,192,225,128,191,0,10, + 17,34,10,0,0,4,0,12,0,12,0,28,0,60,0,255, + 128,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 64,60,64,31,128,15,0,17,12,36,18,0,0,254,126,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,31,222,0,15,159, + 128,16,12,24,15,255,0,255,31,60,4,30,12,30,8,15, + 24,15,16,7,176,7,160,3,224,3,192,1,192,1,128,23, + 12,36,22,255,0,255,63,62,60,30,8,60,30,8,30,63, + 24,30,47,16,30,47,16,15,103,176,15,71,160,7,195,224, + 7,131,192,3,129,192,3,1,128,17,12,36,16,255,0,255, + 31,0,62,12,0,31,24,0,15,176,0,7,224,0,3,192, + 0,1,224,0,3,240,0,6,248,0,12,124,0,24,62,0, + 124,127,128,16,17,34,15,255,251,254,63,60,12,30,8,30, + 24,15,16,15,48,7,160,7,224,3,192,3,192,1,192,1, + 128,1,128,97,0,243,0,254,0,120,0,11,12,24,12,0, + 0,255,224,225,224,195,224,135,192,143,128,15,0,30,0,62, + 32,124,32,248,96,240,224,255,224,6,21,21,8,1,253,28, + 48,112,112,112,112,112,112,112,96,192,96,112,112,112,112,112, + 112,112,48,28,3,18,18,15,6,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,6,21,21,8, + 1,253,224,48,56,56,56,56,56,56,56,24,12,24,56,56, + 56,56,56,56,56,48,224,12,5,10,15,1,4,56,32,126, + 112,255,240,231,224,65,192,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=32 h=33 x= 8 y=18 dx=33 dy= 0 ascent=33 len=132 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =33 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24[12964] U8G_SECTION(".progmem.u8g_font_ncenB24") = { + 0,39,53,252,243,25,6,143,16,147,32,255,249,33,249,25, + 249,0,0,0,9,1,1,6,25,25,10,2,0,120,252,252, + 252,252,252,252,120,120,120,120,48,48,48,48,48,48,0,0, + 120,252,252,252,252,120,11,11,22,11,0,14,96,192,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,96,192, + 96,192,16,25,50,19,1,255,7,28,7,28,7,28,7,28, + 14,56,14,56,14,56,127,255,127,255,127,255,14,56,12,48, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,56,224, + 56,224,56,224,56,224,56,224,56,224,17,30,90,19,1,252, + 1,128,0,1,128,0,1,128,0,7,240,0,31,252,0,57, + 158,0,113,143,0,113,159,0,241,159,0,241,142,0,253,128, + 0,255,128,0,127,240,0,127,252,0,63,254,0,15,255,0, + 1,255,128,1,191,128,113,143,128,249,135,128,249,135,128,249, + 135,0,241,143,0,121,158,0,63,252,0,7,224,0,1,128, + 0,1,128,0,1,128,0,1,128,0,26,24,96,27,0,0, + 0,0,24,0,7,192,48,0,15,96,112,0,30,57,224,0, + 60,31,96,0,60,16,192,0,120,16,128,0,120,17,128,0, + 240,49,0,0,240,35,0,0,240,98,0,0,240,198,31,0, + 123,140,61,128,63,12,120,192,0,24,240,64,0,17,240,64, + 0,49,224,64,0,33,224,192,0,99,224,192,0,195,193,128, + 0,195,193,128,1,131,195,0,1,129,230,0,3,0,252,0, + 24,25,75,28,2,0,0,124,0,1,255,0,3,199,0,7, + 135,128,7,131,128,7,131,128,7,199,128,7,199,0,7,239, + 0,7,252,0,3,248,0,7,241,255,15,249,255,61,248,124, + 120,252,56,120,254,112,248,126,96,248,63,224,252,63,192,252, + 31,193,254,15,227,255,15,243,127,255,254,63,243,254,15,128, + 252,4,11,11,8,2,14,96,240,240,240,240,240,240,96,96, + 96,96,9,27,54,13,2,253,3,128,7,0,14,0,28,0, + 28,0,56,0,56,0,120,0,120,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 56,0,56,0,28,0,28,0,14,0,7,0,3,128,9,27, + 54,13,1,253,224,0,48,0,56,0,28,0,28,0,14,0, + 14,0,15,0,7,0,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,15,0,15,0,14,0,14,0, + 28,0,28,0,56,0,112,0,192,0,12,15,30,17,2,10, + 6,0,14,0,14,0,230,112,230,112,246,240,63,192,15,0, + 127,224,246,240,230,112,230,112,7,0,7,0,6,0,16,16, + 32,20,2,1,3,192,3,192,3,192,3,192,3,192,3,192, + 255,255,255,255,255,255,255,255,3,192,3,192,3,192,3,192, + 3,192,3,192,6,11,11,9,2,251,120,248,252,252,252,124, + 28,24,48,112,224,8,4,4,11,1,6,255,255,255,255,6, + 6,6,9,1,0,120,252,252,252,252,120,10,25,50,9,255, + 0,0,192,1,192,1,192,1,128,3,128,3,128,3,0,7, + 0,7,0,6,0,14,0,14,0,12,0,28,0,28,0,24, + 0,56,0,56,0,48,0,112,0,112,0,96,0,224,0,224, + 0,192,0,16,24,48,19,1,0,3,192,15,240,30,120,60, + 60,124,62,120,30,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,120,30,120,30,124, + 62,60,60,30,120,15,240,3,192,13,24,48,19,3,0,1, + 128,7,128,255,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,255,248,255,248,17, + 24,72,19,1,0,15,240,0,63,252,0,120,126,0,240,63, + 0,248,31,0,252,31,0,252,31,0,252,31,0,124,63,0, + 56,62,0,0,124,0,0,248,0,0,240,0,1,224,0,3, + 192,0,3,129,128,7,1,128,14,1,128,28,3,128,63,255, + 128,127,255,0,127,255,0,255,255,0,255,255,0,16,24,48, + 19,1,0,15,224,63,248,120,124,248,62,252,62,252,62,252, + 62,120,62,0,124,0,112,7,224,7,192,0,248,0,126,0, + 62,0,63,120,31,252,31,252,31,252,63,248,62,120,126,63, + 248,7,224,17,24,72,19,0,0,0,4,0,0,12,0,0, + 28,0,0,60,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,124,0,6,124,0,12,124,0,28,124,0,56,124,0, + 112,124,0,224,124,0,192,124,0,255,255,128,255,255,128,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,16,24,48,19,1,0,31,255,63,254,63,254,63,252,63, + 240,48,0,48,0,48,0,48,0,55,224,63,248,56,124,48, + 62,32,62,0,31,0,31,56,31,124,31,252,31,252,62,120, + 62,112,252,63,240,15,192,17,24,72,19,1,0,3,240,0, + 15,252,0,31,30,0,62,62,0,60,62,0,124,62,0,120, + 28,0,248,0,0,248,0,0,248,0,0,249,248,0,255,254, + 0,255,127,0,252,31,0,248,31,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,0,124,31,0,62,62,0,31, + 252,0,7,240,0,16,24,48,19,2,0,255,255,255,254,255, + 254,255,252,255,252,192,24,192,24,192,56,128,112,0,112,0, + 240,0,224,1,224,1,224,3,224,3,192,7,192,7,192,15, + 192,15,192,15,192,15,192,15,192,7,128,17,24,72,19,1, + 0,7,240,0,15,252,0,60,62,0,56,31,0,120,15,0, + 120,15,0,120,15,0,124,15,0,126,30,0,127,252,0,63, + 240,0,31,252,0,15,254,0,63,255,0,120,127,0,248,31, + 128,240,15,128,240,15,128,240,15,0,240,15,0,248,30,0, + 124,60,0,63,240,0,7,192,0,17,24,72,19,1,0,3, + 192,0,31,248,0,62,124,0,124,62,0,252,31,0,248,31, + 0,248,15,128,248,15,128,248,15,128,252,31,128,252,63,128, + 127,111,128,63,207,128,31,143,128,0,15,128,0,15,128,112, + 15,0,248,31,0,252,31,0,248,30,0,248,62,0,112,252, + 0,63,240,0,15,192,0,6,16,16,9,2,0,120,252,252, + 252,252,120,0,0,0,0,120,252,252,252,252,120,6,21,21, + 9,2,251,120,252,252,252,252,120,0,0,0,0,120,248,252, + 252,252,124,28,24,48,112,224,16,18,36,20,2,0,0,3, + 0,15,0,127,1,255,7,252,31,240,127,128,254,0,248,0, + 252,0,255,128,63,224,15,248,3,254,0,127,0,31,0,7, + 0,1,16,10,20,20,2,3,255,255,255,255,255,255,255,255, + 0,0,0,0,255,255,255,255,255,255,255,255,16,18,36,20, + 2,0,192,0,240,0,254,0,255,128,63,224,15,248,1,254, + 0,127,0,31,0,63,1,255,7,252,31,240,127,192,254,0, + 248,0,224,0,128,0,14,25,50,16,1,0,15,192,63,240, + 113,248,240,248,248,252,248,252,248,252,112,252,0,248,1,248, + 1,240,3,224,3,128,7,0,7,0,6,0,6,0,0,0, + 0,0,15,0,31,128,31,128,31,128,31,128,15,0,23,25, + 75,25,0,0,0,127,0,1,255,192,7,227,240,15,0,120, + 30,0,28,28,0,12,56,60,6,48,255,230,113,227,230,113, + 227,198,99,195,198,227,131,198,231,135,134,231,135,140,231,7, + 140,231,15,28,231,15,24,227,31,112,115,247,224,48,227,204, + 56,0,28,28,0,120,15,1,240,7,255,224,1,255,0,25, + 25,100,25,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,63,0,0,0,127,0,0,0,127,128, + 0,0,127,128,0,0,255,128,0,0,207,192,0,1,207,192, + 0,1,143,192,0,1,135,224,0,3,135,224,0,3,7,240, + 0,7,3,240,0,7,255,240,0,7,255,248,0,14,1,248, + 0,12,1,252,0,28,0,252,0,28,0,254,0,62,0,254, + 0,255,131,255,128,255,131,255,128,23,25,75,25,1,0,255, + 255,128,255,255,224,31,131,240,31,129,248,31,129,248,31,128, + 252,31,128,252,31,128,252,31,128,248,31,129,248,31,129,240, + 31,135,224,31,255,0,31,255,192,31,131,240,31,128,252,31, + 128,252,31,128,254,31,128,126,31,128,254,31,128,252,31,128, + 252,31,131,248,255,255,240,255,255,192,22,25,75,24,1,0, + 0,126,24,3,255,184,7,193,248,31,128,248,31,0,120,62, + 0,56,126,0,56,126,0,24,254,0,24,252,0,8,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 254,0,12,254,0,28,126,0,24,126,0,56,63,0,48,31, + 128,112,15,193,224,7,255,192,0,255,0,24,25,75,26,1, + 0,255,255,0,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,126,31,128,126,31,128,127,31,128,63,31,128,63,31, + 128,63,31,128,63,31,128,63,31,128,63,31,128,63,31,128, + 63,31,128,127,31,128,126,31,128,126,31,128,126,31,128,252, + 31,129,248,31,131,240,255,255,224,255,255,0,21,25,75,23, + 1,0,255,255,248,255,255,248,31,129,248,31,128,248,31,128, + 120,31,128,56,31,128,56,31,134,24,31,134,24,31,142,0, + 31,142,0,31,158,0,31,254,0,31,254,0,31,158,0,31, + 142,0,31,134,24,31,134,24,31,134,24,31,128,56,31,128, + 56,31,128,120,31,129,248,255,255,248,255,255,248,21,25,75, + 23,1,0,255,255,248,255,255,248,31,193,248,31,128,248,31, + 128,120,31,128,56,31,128,24,31,131,24,31,131,24,31,135, + 8,31,135,0,31,159,0,31,255,0,31,255,0,31,143,0, + 31,135,0,31,131,0,31,131,0,31,131,0,31,128,0,31, + 128,0,31,128,0,31,128,0,255,248,0,255,248,0,25,25, + 100,26,1,0,0,126,12,0,3,255,220,0,7,193,252,0, + 15,128,124,0,31,0,60,0,63,0,28,0,126,0,28,0, + 126,0,12,0,254,0,12,0,254,0,4,0,254,0,0,0, + 252,0,0,0,252,0,0,0,252,0,0,0,252,7,255,128, + 252,7,255,128,252,0,124,0,254,0,124,0,126,0,124,0, + 126,0,124,0,63,0,252,0,31,0,252,0,15,129,220,0, + 7,255,28,0,0,252,12,0,26,25,100,28,1,0,255,243, + 255,192,255,243,255,192,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,255, + 254,0,31,255,254,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,255,243,255,192,255,243, + 255,192,12,25,50,14,1,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,20,25,75,20,0,0, + 0,255,240,0,255,240,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,24,31,128,126,31,128,126,31,128, + 254,31,128,254,31,128,254,31,128,252,31,0,96,63,0,96, + 62,0,56,254,0,63,248,0,15,224,0,25,25,100,27,1, + 0,255,243,255,128,255,243,255,128,31,128,126,0,31,128,120, + 0,31,128,240,0,31,129,224,0,31,129,192,0,31,131,128, + 0,31,135,0,0,31,143,0,0,31,159,0,0,31,191,128, + 0,31,255,192,0,31,239,192,0,31,239,224,0,31,199,224, + 0,31,135,240,0,31,131,248,0,31,129,248,0,31,129,252, + 0,31,128,252,0,31,128,254,0,31,128,255,0,255,243,255, + 128,255,243,255,128,21,25,75,23,1,0,255,240,0,255,240, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,24,31,128, + 24,31,128,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,31,25,100,32,0,0,127,224,7,254, + 127,240,15,254,15,240,15,240,15,240,15,240,13,248,27,240, + 13,248,27,240,13,248,27,240,12,252,59,240,12,252,51,240, + 12,252,51,240,12,124,115,240,12,126,99,240,12,126,99,240, + 12,62,227,240,12,63,195,240,12,63,195,240,12,31,195,240, + 12,31,131,240,12,31,131,240,12,15,131,240,12,15,3,240, + 12,15,3,240,30,15,3,240,255,198,31,254,255,198,31,254, + 27,25,100,27,0,0,255,128,127,224,255,192,127,224,63,224, + 15,0,15,224,6,0,15,240,6,0,15,248,6,0,15,252, + 6,0,13,254,6,0,12,254,6,0,12,255,6,0,12,127, + 134,0,12,63,198,0,12,31,230,0,12,15,230,0,12,15, + 246,0,12,7,254,0,12,3,254,0,12,1,254,0,12,0, + 254,0,12,0,126,0,12,0,126,0,12,0,62,0,30,0, + 30,0,255,192,14,0,255,192,6,0,24,25,75,26,1,0, + 0,126,0,3,255,192,15,193,240,31,128,248,63,0,252,62, + 0,124,126,0,126,126,0,126,252,0,63,252,0,63,252,0, + 63,252,0,63,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,126,0,126,126,0,126,62,0,124,63,0,252,31, + 128,248,15,193,240,3,255,192,0,126,0,22,25,75,24,1, + 0,255,255,128,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,240,0,255,240,0,25,31,124,26, + 1,250,0,126,0,0,3,255,192,0,15,193,240,0,31,128, + 248,0,63,0,252,0,62,0,124,0,126,0,126,0,126,0, + 126,0,252,0,63,0,252,0,63,0,252,0,63,0,252,0, + 63,0,252,0,63,0,252,0,63,0,252,0,63,0,252,60, + 63,0,252,254,63,0,127,135,126,0,127,131,254,0,63,3, + 252,0,63,3,252,0,31,131,248,0,15,195,240,0,3,255, + 224,0,0,127,224,0,0,3,225,128,0,3,225,128,0,1, + 243,128,0,1,255,0,0,0,254,0,0,0,60,0,25,25, + 100,27,1,0,255,255,128,0,255,255,240,0,31,131,248,0, + 31,129,248,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,129,248,0,31,129,240,0, + 31,135,192,0,31,255,0,0,31,255,192,0,31,135,224,0, + 31,131,224,0,31,131,240,0,31,131,240,0,31,131,240,0, + 31,131,249,128,31,129,249,128,31,129,251,0,31,129,255,0, + 255,240,254,0,255,240,124,0,19,25,75,21,1,0,3,240, + 192,31,253,192,60,31,192,120,7,192,112,3,192,240,1,192, + 240,0,192,248,0,192,255,0,192,255,240,0,127,254,0,127, + 255,0,63,255,128,15,255,192,7,255,224,64,127,224,96,7, + 224,96,3,224,112,1,224,120,1,224,120,1,192,126,3,192, + 127,7,128,103,255,0,97,252,0,21,25,75,23,1,0,255, + 255,248,255,255,248,241,248,120,225,248,56,225,248,56,193,248, + 24,193,248,24,193,248,24,129,248,8,129,248,8,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,15,255,128,15,255,128,26,25,100,28,1,0, + 255,240,255,192,255,240,255,192,31,128,30,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,28,0, + 15,192,24,0,15,224,56,0,7,248,240,0,3,255,224,0, + 0,255,192,0,25,25,100,25,0,0,255,224,255,128,255,224, + 255,128,63,128,62,0,31,128,28,0,31,128,28,0,31,192, + 24,0,15,192,56,0,15,192,48,0,7,224,112,0,7,224, + 112,0,7,240,96,0,3,240,224,0,3,240,192,0,1,248, + 192,0,1,249,192,0,1,249,128,0,0,255,128,0,0,255, + 0,0,0,255,0,0,0,127,0,0,0,126,0,0,0,62, + 0,0,0,62,0,0,0,60,0,0,0,28,0,0,32,25, + 100,32,0,0,255,223,249,255,255,223,249,255,63,7,224,124, + 63,7,224,56,31,131,224,48,31,131,240,112,31,131,240,112, + 15,193,240,96,15,195,248,96,15,195,248,224,7,195,248,192, + 7,231,248,192,7,230,252,192,7,230,253,128,3,254,125,128, + 3,252,127,128,3,252,127,128,1,252,63,0,1,248,63,0, + 1,248,63,0,0,248,62,0,0,248,30,0,0,240,30,0, + 0,112,28,0,0,112,12,0,24,25,75,24,0,0,255,227, + 255,255,227,255,63,128,252,31,192,120,31,192,112,15,224,224, + 7,224,192,7,241,192,3,255,128,3,255,0,1,255,0,0, + 254,0,0,254,0,0,127,0,0,127,128,0,255,128,1,223, + 192,3,143,224,3,143,224,7,7,240,14,3,240,30,3,248, + 63,3,252,255,239,255,255,239,255,24,25,75,24,0,0,255, + 241,255,255,241,255,63,128,124,31,192,56,31,192,112,15,224, + 112,15,224,224,7,240,192,3,241,192,3,249,128,1,251,128, + 1,255,0,0,255,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,0,126,0,0,126,0,0,126, + 0,0,126,0,3,255,192,3,255,192,19,25,75,21,1,0, + 127,255,224,127,255,224,126,15,224,120,15,224,112,31,192,112, + 31,128,96,63,128,96,127,0,64,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,240,0,7,240,0,15,224,32, + 15,224,96,31,192,96,31,128,96,63,128,224,127,0,224,127, + 1,224,254,7,224,255,255,224,255,255,224,8,29,29,13,3, + 252,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,255,255,16,25, + 50,20,2,0,240,0,248,0,120,0,124,0,60,0,62,0, + 30,0,31,0,15,0,15,128,7,128,7,192,3,192,3,224, + 1,224,1,240,0,240,0,248,0,120,0,124,0,60,0,62, + 0,30,0,30,0,15,8,29,29,13,1,252,255,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,255,255,16,14,28,20,2,11,3, + 192,7,224,7,224,15,240,15,240,15,240,30,120,30,120,60, + 60,60,60,124,62,120,30,248,31,240,15,16,3,6,16,0, + 251,255,255,255,255,255,255,7,6,6,11,2,17,96,240,248, + 124,30,6,18,16,48,20,1,0,15,240,0,63,252,0,120, + 126,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,19,25,75,21,0,0,255, + 0,0,255,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,63,0,31,255,128, + 31,207,192,31,135,192,31,3,224,31,3,224,31,3,224,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 192,31,143,128,29,255,0,24,124,0,15,16,32,17,1,0, + 3,240,15,252,62,62,124,62,124,62,248,28,248,0,248,0, + 248,0,248,0,252,2,252,6,126,6,63,28,31,248,7,224, + 20,25,75,22,1,0,0,127,128,0,127,128,0,31,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,15,207,128,31,239,128,62,63,128,124,31,128,120,31,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,31,128,124,31,128,124,127,128,63,239,240,15,143, + 240,16,16,32,18,1,0,3,224,15,248,60,60,120,30,120, + 30,248,31,248,31,255,255,255,255,248,0,248,0,252,3,124, + 6,63,14,31,252,7,240,15,25,50,13,0,0,0,240,3, + 252,7,158,15,62,15,62,31,28,31,0,31,0,31,0,255, + 240,255,240,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,255,224,255,224,20, + 25,75,20,1,249,0,1,224,0,3,240,7,255,240,31,124, + 224,62,62,0,124,31,0,124,31,0,124,31,0,124,31,0, + 124,31,0,62,62,0,31,126,0,31,248,0,124,0,0,248, + 0,0,255,252,0,255,255,0,63,255,0,31,255,128,127,255, + 128,240,7,128,240,7,128,248,15,0,127,254,0,15,240,0, + 20,25,75,22,1,0,254,0,0,254,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,62,0,62,255,128,63,255,128,63,143,192,63,7,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,255,159,240,255,159, + 240,9,25,50,12,2,0,28,0,62,0,62,0,62,0,28, + 0,0,0,0,0,0,0,0,0,254,0,254,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,255,128,12,32,64,12,253,249,0, + 224,1,240,1,240,1,240,0,224,0,0,0,0,0,0,0, + 0,7,240,7,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,113,240,249,224,249,224,251,192,127,128,30,0,20, + 25,75,22,1,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,63,224,62,63,224,62,15,0,62,14,0,62,60,0,62, + 112,0,62,248,0,63,252,0,63,254,0,63,126,0,62,63, + 0,62,31,128,62,31,192,62,15,224,255,191,240,255,191,240, + 10,25,50,12,1,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,255,192,255,192,29,16,64,31,1,0,254,126, + 31,0,254,255,63,192,63,255,255,192,63,159,231,224,63,15, + 195,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,255,191,239,248,255,191,239,248,20,16, + 48,22,1,0,254,62,0,254,255,128,63,255,128,63,143,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,255,159, + 240,255,159,240,17,16,48,19,1,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,19,23,69,21,1,249, + 254,126,0,254,255,128,63,143,192,63,7,192,63,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,63,7,192,63,7,192,63,143,128,63,255,0,62,126,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,255, + 128,0,255,128,0,20,23,69,20,1,249,7,225,128,31,249, + 128,62,31,128,124,31,128,124,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,124,31,128,124, + 31,128,62,63,128,31,239,128,7,207,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,127,240,0,127,240, + 15,16,32,16,1,0,252,124,252,254,61,254,61,190,63,62, + 62,28,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,192,255,192,14,16,32,16,1,0,15,216,60,248, + 112,56,240,24,254,8,255,192,255,240,127,248,63,248,15,252, + 192,252,192,60,224,56,248,120,255,240,207,192,12,23,46,14, + 1,0,6,0,6,0,14,0,14,0,14,0,30,0,62,0, + 255,224,255,224,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,48,62,48,62,48,62,96,63,224,31,192,15,128, + 20,16,48,22,1,0,254,31,192,254,31,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,15,192,62,15,192,63,31,192,31,255,192, + 31,247,240,7,199,240,19,16,48,19,0,0,255,143,224,255, + 143,224,63,3,192,63,3,128,31,3,0,31,135,0,15,134, + 0,15,198,0,7,204,0,7,236,0,3,248,0,3,248,0, + 1,248,0,1,240,0,0,240,0,0,224,0,27,16,64,29, + 1,0,255,191,239,224,255,191,239,224,126,31,131,192,62,15, + 131,128,63,15,131,0,31,15,195,0,31,143,198,0,15,159, + 230,0,15,155,230,0,15,251,236,0,7,241,252,0,7,241, + 248,0,3,225,248,0,3,224,240,0,1,192,240,0,1,192, + 96,0,19,16,48,19,0,0,255,223,224,255,223,224,63,7, + 0,31,142,0,31,220,0,15,248,0,7,240,0,3,240,0, + 1,248,0,3,252,0,7,254,0,14,126,0,28,63,0,60, + 63,128,255,127,224,255,127,224,19,23,69,19,0,249,255,143, + 224,255,143,224,63,3,128,63,3,128,31,3,0,31,135,0, + 15,134,0,15,198,0,7,204,0,7,236,0,3,248,0,3, + 248,0,1,248,0,1,240,0,0,240,0,0,224,0,0,96, + 0,112,192,0,248,192,0,249,128,0,255,0,0,127,0,0, + 60,0,0,14,16,32,16,1,0,127,252,127,252,112,252,97, + 248,97,248,67,240,7,224,7,224,15,192,31,128,31,12,63, + 12,126,28,124,28,255,252,255,252,8,30,30,13,3,252,3, + 14,28,60,60,60,60,60,60,60,60,60,60,56,240,248,60, + 60,60,60,60,60,60,60,60,60,60,28,14,3,4,25,25, + 20,8,0,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,8,28,28,13, + 1,253,224,120,60,60,60,60,60,60,60,60,60,60,28,15, + 31,60,60,60,60,60,60,60,60,60,60,60,120,224,16,6, + 12,20,2,6,14,4,63,142,127,255,255,254,113,252,32,112, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,9,1,1,6,25,25,10,2,249,120,252,252, + 252,252,120,0,0,48,48,48,48,48,48,120,120,120,120,124, + 252,252,252,252,252,120,15,22,44,19,1,253,0,6,0,6, + 0,12,3,252,14,124,60,62,124,62,120,126,248,126,248,220, + 248,192,249,128,253,128,255,2,255,6,126,6,63,28,31,248, + 15,224,24,0,24,0,48,0,17,24,72,19,1,0,1,248, + 0,7,252,0,15,142,0,15,15,0,31,31,0,31,31,0, + 31,31,0,31,14,0,15,0,0,15,0,0,7,128,0,127, + 248,0,127,248,0,7,128,0,7,128,0,7,128,0,3,128, + 0,3,129,128,123,3,128,255,199,0,199,255,0,199,254,0, + 253,254,0,120,124,0,16,16,32,19,1,3,99,198,247,239, + 255,254,127,252,60,62,120,30,112,14,112,14,112,14,112,14, + 120,30,60,60,127,254,255,255,247,239,99,198,19,24,72,19, + 0,0,255,31,224,255,31,224,124,7,128,62,7,0,62,7, + 0,31,6,0,31,14,0,15,140,0,15,140,0,7,216,0, + 7,216,0,3,240,0,31,254,0,31,254,0,1,224,0,1, + 224,0,31,254,0,31,254,0,1,224,0,1,224,0,1,224, + 0,1,224,0,15,252,0,15,252,0,4,25,25,20,8,0, + 240,240,240,240,240,240,240,240,240,240,0,0,0,0,0,240, + 240,240,240,240,240,240,240,240,240,12,29,58,16,2,253,31, + 0,115,128,99,192,227,192,227,192,241,128,120,0,124,0,62, + 0,30,0,63,0,111,128,199,192,227,224,225,224,240,240,120, + 112,124,112,62,96,31,192,15,128,7,192,3,224,97,224,240, + 224,240,224,240,224,121,192,63,0,11,5,10,11,0,18,96, + 192,241,224,241,224,241,224,96,192,24,25,75,25,1,0,0, + 255,0,3,255,192,7,129,224,30,0,112,24,0,24,48,0, + 12,112,127,14,96,243,134,97,193,134,227,193,135,195,128,131, + 195,128,3,195,128,3,195,128,3,195,128,3,195,128,7,193, + 192,134,225,225,134,96,255,12,112,60,28,56,0,56,28,0, + 112,15,129,192,3,255,128,0,254,0,11,15,30,12,0,10, + 63,0,227,192,241,192,227,192,15,192,113,192,225,192,227,192, + 247,224,253,224,0,0,0,0,0,0,255,224,255,224,12,11, + 22,16,2,3,4,16,12,48,24,96,56,224,113,192,243,192, + 113,192,56,224,24,96,12,48,4,16,16,10,20,20,2,3, + 255,255,255,255,255,255,255,255,0,15,0,15,0,15,0,15, + 0,15,0,15,8,4,4,11,1,6,255,255,255,255,23,25, + 75,24,0,0,0,254,0,3,255,128,7,1,224,12,0,112, + 24,0,56,48,0,24,97,254,12,96,231,12,192,227,142,192, + 227,134,192,227,134,192,231,6,192,252,6,192,238,6,192,231, + 6,192,231,6,192,227,134,96,227,140,99,241,204,48,0,24, + 24,0,24,28,0,112,7,0,224,3,255,128,0,252,0,11, + 3,6,11,0,18,255,224,255,224,255,224,9,10,20,13,2, + 13,62,0,127,0,99,0,193,128,193,128,193,128,193,128,99, + 0,127,0,62,0,16,17,34,20,2,0,3,192,3,192,3, + 192,3,192,255,255,255,255,255,255,255,255,3,192,3,192,3, + 192,3,192,0,0,255,255,255,255,255,255,255,255,10,14,28, + 11,0,9,63,0,99,128,193,192,241,192,241,192,113,192,3, + 128,7,0,14,0,24,64,48,64,127,192,255,192,255,192,11, + 14,28,11,0,9,63,0,115,192,113,192,33,192,1,192,3, + 128,31,0,3,192,1,224,113,224,241,224,225,224,99,192,63, + 0,7,6,6,11,2,17,12,30,62,124,240,192,20,23,69, + 22,1,249,254,63,192,254,63,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,15,192,62,15,192,63,31,192,63,255,192,63,247,240, + 55,199,240,48,0,0,48,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,48,0,0,21,25,75,25,1,0,15,255, + 248,63,255,248,127,227,192,127,227,192,255,227,192,255,227,192, + 255,227,192,255,227,192,127,227,192,127,227,192,63,227,192,31, + 227,192,7,227,192,1,227,192,1,227,192,1,227,192,1,227, + 192,1,227,192,1,227,192,1,227,192,1,227,192,1,227,192, + 1,227,192,15,255,248,15,255,248,6,6,6,9,1,5,120, + 252,252,252,252,120,7,7,7,11,1,249,24,48,124,14,14, + 220,120,9,14,28,11,1,9,12,0,252,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,11,15,30,12,0,10,14,0,63,128,113,192, + 241,224,224,224,224,224,224,224,241,224,113,192,63,128,14,0, + 0,0,0,0,127,224,127,224,12,11,22,16,2,3,130,0, + 195,0,97,128,113,192,56,224,60,240,56,224,113,192,97,128, + 195,0,130,0,25,23,92,28,1,0,12,0,56,0,252,0, + 48,0,28,0,112,0,28,0,224,0,28,0,192,0,28,1, + 192,0,28,1,128,0,28,3,128,0,28,7,0,0,28,7, + 2,0,28,14,6,0,28,12,14,0,28,28,30,0,255,184, + 62,0,0,56,110,0,0,112,206,0,0,97,142,0,0,227, + 14,0,0,195,255,128,1,192,14,0,3,128,14,0,3,0, + 14,0,7,0,63,128,25,23,92,28,1,0,12,0,56,0, + 252,0,112,0,28,0,112,0,28,0,224,0,28,0,192,0, + 28,1,192,0,28,1,128,0,28,3,128,0,28,7,0,0, + 28,6,126,0,28,14,199,0,28,13,135,128,28,29,227,128, + 255,185,231,128,0,56,231,128,0,112,15,0,0,96,14,0, + 0,224,28,0,1,192,48,128,1,192,96,128,3,128,255,128, + 3,1,255,128,7,1,255,128,26,23,92,28,0,0,63,0, + 28,0,115,192,56,0,113,192,56,0,33,192,112,0,1,192, + 96,0,3,128,224,0,31,0,192,0,3,193,192,0,1,227, + 128,0,113,227,129,0,241,231,3,0,225,230,7,0,99,206, + 15,0,63,28,31,0,0,28,55,0,0,56,103,0,0,48, + 199,0,0,113,135,0,0,97,255,192,0,224,7,0,1,192, + 7,0,1,192,7,0,3,128,31,192,15,25,50,16,1,249, + 3,192,7,224,7,224,7,224,7,224,3,192,0,0,0,0, + 1,128,1,128,1,128,3,128,7,0,31,0,62,0,126,0, + 124,0,252,124,252,124,252,126,252,124,124,60,126,60,63,240, + 15,192,25,31,124,25,0,0,0,48,0,0,0,120,0,0, + 0,124,0,0,0,62,0,0,0,15,0,0,0,3,0,0, + 0,0,0,0,0,28,0,0,0,30,0,0,0,62,0,0, + 0,63,0,0,0,127,0,0,0,127,128,0,0,127,128,0, + 0,255,128,0,0,207,192,0,1,207,192,0,1,143,192,0, + 1,135,224,0,3,135,224,0,3,7,240,0,7,3,240,0, + 7,255,240,0,7,255,248,0,14,1,248,0,12,1,252,0, + 28,0,252,0,28,0,254,0,62,0,254,0,255,131,255,128, + 255,131,255,128,25,32,128,25,0,0,0,1,128,0,0,3, + 192,0,0,7,192,0,0,15,128,0,0,30,0,0,0,24, + 0,0,0,0,0,0,0,28,0,0,0,28,0,0,0,30, + 0,0,0,62,0,0,0,63,0,0,0,127,0,0,0,127, + 128,0,0,127,128,0,0,255,128,0,0,207,192,0,1,207, + 192,0,1,143,192,0,1,135,224,0,3,135,224,0,3,7, + 240,0,7,3,240,0,7,255,240,0,7,255,248,0,14,1, + 248,0,12,1,252,0,28,0,252,0,28,0,254,0,62,0, + 254,0,255,131,255,128,255,131,255,128,25,31,124,25,0,0, + 0,28,0,0,0,62,0,0,0,127,0,0,0,227,128,0, + 1,128,192,0,0,0,0,0,0,28,0,0,0,28,0,0, + 0,30,0,0,0,62,0,0,0,63,0,0,0,127,0,0, + 0,127,128,0,0,127,128,0,0,255,128,0,0,207,192,0, + 1,207,192,0,1,143,192,0,1,135,224,0,3,135,224,0, + 3,7,240,0,7,3,240,0,7,255,240,0,7,255,248,0, + 14,1,248,0,12,1,252,0,28,0,252,0,28,0,254,0, + 62,0,254,0,255,131,255,128,255,131,255,128,25,31,124,25, + 0,0,0,56,96,0,0,127,224,0,0,255,192,0,0,195, + 128,0,0,0,0,0,0,0,0,0,0,28,0,0,0,28, + 0,0,0,30,0,0,0,62,0,0,0,63,0,0,0,127, + 0,0,0,127,128,0,0,127,128,0,0,255,128,0,0,207, + 192,0,1,207,192,0,1,143,192,0,1,135,224,0,3,135, + 224,0,3,7,240,0,7,3,240,0,7,255,240,0,7,255, + 248,0,14,1,248,0,12,1,252,0,28,0,252,0,28,0, + 254,0,62,0,254,0,255,131,255,128,255,131,255,128,25,31, + 124,25,0,0,0,193,128,0,1,227,192,0,1,227,192,0, + 1,227,192,0,0,193,128,0,0,0,0,0,0,28,0,0, + 0,28,0,0,0,30,0,0,0,62,0,0,0,63,0,0, + 0,127,0,0,0,127,128,0,0,127,128,0,0,255,128,0, + 0,207,192,0,1,207,192,0,1,143,192,0,1,135,224,0, + 3,135,224,0,3,7,240,0,7,3,240,0,7,255,240,0, + 7,255,248,0,14,1,248,0,12,1,252,0,28,0,252,0, + 28,0,254,0,62,0,254,0,255,131,255,128,255,131,255,128, + 25,33,132,25,0,0,0,62,0,0,0,119,0,0,0,99, + 0,0,0,99,0,0,0,119,0,0,0,62,0,0,0,0, + 0,0,0,0,0,0,0,28,0,0,0,28,0,0,0,30, + 0,0,0,62,0,0,0,63,0,0,0,127,0,0,0,127, + 128,0,0,127,128,0,0,255,128,0,0,207,192,0,1,207, + 192,0,1,143,192,0,1,135,224,0,3,135,224,0,3,7, + 240,0,7,3,240,0,7,255,240,0,7,255,248,0,14,1, + 248,0,12,1,252,0,28,0,252,0,28,0,254,0,62,0, + 254,0,255,131,255,128,255,131,255,128,31,25,100,33,255,0, + 1,255,255,254,1,255,255,254,0,123,240,126,0,59,240,62, + 0,51,240,30,0,51,240,14,0,115,240,6,0,99,240,198, + 0,227,240,198,0,195,241,194,1,195,241,192,1,131,243,192, + 3,131,255,192,3,3,255,192,7,255,243,192,7,255,241,192, + 14,3,240,198,14,3,240,198,12,3,240,198,28,3,240,14, + 24,3,240,14,56,3,240,30,124,3,240,126,255,31,255,254, + 255,31,255,254,22,32,96,24,1,249,0,126,24,3,255,184, + 7,193,248,31,128,248,31,0,120,62,0,56,126,0,56,126, + 0,24,254,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,254,0,0,254,0,12,254,0,28, + 126,0,24,126,0,56,63,0,48,31,128,112,15,193,224,7, + 255,192,0,255,0,0,48,0,0,96,0,0,248,0,0,28, + 0,0,28,0,1,184,0,0,240,0,21,32,96,23,1,0, + 0,192,0,1,224,0,1,240,0,0,248,0,0,60,0,0, + 12,0,0,0,0,255,255,248,255,255,248,31,129,248,31,128, + 248,31,128,120,31,128,56,31,128,56,31,134,24,31,134,24, + 31,142,0,31,142,0,31,158,0,31,254,0,31,254,0,31, + 158,0,31,142,0,31,134,24,31,134,24,31,134,24,31,128, + 56,31,128,56,31,128,120,31,129,248,255,255,248,255,255,248, + 21,32,96,23,1,0,0,3,0,0,7,128,0,15,128,0, + 31,0,0,60,0,0,48,0,0,0,0,255,255,248,255,255, + 248,31,129,248,31,128,248,31,128,120,31,128,56,31,128,56, + 31,134,24,31,134,24,31,142,0,31,142,0,31,158,0,31, + 254,0,31,254,0,31,158,0,31,142,0,31,134,24,31,134, + 24,31,134,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,21,32,96,23,1,0,0,56,0,0, + 124,0,0,254,0,1,199,0,3,1,128,0,0,0,0,0, + 0,255,255,248,255,255,248,31,129,248,31,128,248,31,128,120, + 31,128,56,31,128,56,31,134,24,31,134,24,31,142,0,31, + 142,0,31,158,0,31,254,0,31,254,0,31,158,0,31,142, + 0,31,134,24,31,134,24,31,134,24,31,128,56,31,128,56, + 31,128,120,31,129,248,255,255,248,255,255,248,21,32,96,23, + 1,0,1,131,0,3,199,128,3,199,128,3,199,128,1,131, + 0,0,0,0,0,0,0,255,255,248,255,255,248,31,129,248, + 31,128,248,31,128,120,31,128,56,31,128,56,31,134,24,31, + 134,24,31,142,0,31,142,0,31,158,0,31,254,0,31,254, + 0,31,158,0,31,142,0,31,134,24,31,134,24,31,134,24, + 31,128,56,31,128,56,31,128,120,31,129,248,255,255,248,255, + 255,248,12,33,66,14,1,0,48,0,120,0,124,0,62,0, + 15,0,3,0,0,0,0,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,12,33,66,14,1,0, + 0,192,1,224,3,224,7,192,15,0,12,0,0,0,0,0, + 255,240,255,240,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,255,240, + 255,240,12,32,64,14,1,0,7,0,15,128,31,192,56,224, + 96,48,0,0,0,0,255,240,255,240,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,240,255,240,12,32,64,14,1,0,48,96, + 120,240,120,240,120,240,48,96,0,0,0,0,255,240,255,240, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,255,240,255,240,24,25, + 75,26,1,0,255,255,0,255,255,224,31,131,240,31,129,248, + 31,128,252,31,128,124,31,128,126,31,128,126,31,128,127,31, + 128,63,31,128,63,31,128,63,255,248,63,255,248,63,31,128, + 63,31,128,63,31,128,63,31,128,127,31,128,126,31,128,126, + 31,128,252,31,128,248,31,131,240,255,255,224,255,255,0,27, + 31,124,27,0,0,0,56,96,0,0,127,224,0,0,255,192, + 0,0,195,128,0,0,0,0,0,0,0,0,0,255,128,127, + 224,255,192,127,224,63,224,15,0,15,224,6,0,15,240,6, + 0,15,248,6,0,15,252,6,0,13,254,6,0,12,254,6, + 0,12,255,6,0,12,127,134,0,12,63,198,0,12,31,230, + 0,12,15,230,0,12,15,246,0,12,7,254,0,12,3,254, + 0,12,1,254,0,12,0,254,0,12,0,126,0,12,0,126, + 0,12,0,62,0,30,0,30,0,255,192,14,0,255,192,6, + 0,24,32,96,26,1,0,1,128,0,3,192,0,3,224,0, + 1,240,0,0,120,0,0,24,0,0,0,0,0,126,0,3, + 255,192,15,193,240,31,128,248,63,0,252,62,0,124,126,0, + 126,126,0,126,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,126, + 0,126,126,0,126,62,0,124,63,0,252,31,128,248,15,193, + 240,3,255,192,0,126,0,24,32,96,26,1,0,0,0,192, + 0,1,224,0,3,224,0,7,192,0,15,0,0,12,0,0, + 0,0,0,126,0,3,255,192,15,193,240,31,128,248,63,0, + 252,62,0,124,126,0,126,126,0,126,252,0,63,252,0,63, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,126,0,126,126,0,126,62,0,124,63,0, + 252,31,128,248,15,193,240,3,255,192,0,126,0,24,32,96, + 26,1,0,0,28,0,0,62,0,0,127,0,0,227,128,1, + 128,192,0,0,0,0,0,0,0,126,0,3,255,192,15,193, + 240,31,128,248,63,0,252,62,0,124,126,0,126,126,0,126, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,126,0,126,126,0, + 126,62,0,124,63,0,252,31,128,248,15,193,240,3,255,192, + 0,126,0,24,31,93,26,1,0,0,112,192,0,255,192,1, + 255,128,1,135,0,0,0,0,0,0,0,0,126,0,3,255, + 192,15,193,240,31,128,248,63,0,252,62,0,124,126,0,126, + 126,0,126,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,252,0,63,126,0, + 126,126,0,126,62,0,124,63,0,252,31,128,248,15,193,240, + 3,255,192,0,126,0,24,32,96,26,1,0,0,193,128,1, + 227,192,1,227,192,1,227,192,0,193,128,0,0,0,0,0, + 0,0,126,0,3,255,192,15,193,240,31,128,248,63,0,252, + 62,0,124,126,0,126,126,0,126,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,252,0,63,252,0, + 63,252,0,63,126,0,126,126,0,126,62,0,124,63,0,252, + 31,128,248,15,193,240,3,255,192,0,126,0,16,17,34,20, + 2,0,32,4,112,14,248,31,252,63,126,126,63,252,31,248, + 15,240,7,224,15,240,31,248,63,252,126,126,252,63,248,31, + 112,14,32,4,24,27,81,26,1,255,0,0,12,0,126,24, + 3,255,248,7,195,240,31,128,248,31,0,248,62,0,252,126, + 1,254,126,3,126,254,7,127,252,6,63,252,12,63,252,28, + 63,252,24,63,252,48,63,252,96,63,252,224,63,254,192,127, + 127,128,126,127,128,126,63,0,124,31,0,248,31,128,248,15, + 193,224,27,255,192,48,126,0,48,0,0,26,32,128,28,1, + 0,0,48,0,0,0,120,0,0,0,124,0,0,0,62,0, + 0,0,15,0,0,0,3,0,0,0,0,0,0,255,240,255, + 192,255,240,255,192,31,128,30,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,28,0,15,192,24, + 0,15,224,56,0,7,248,240,0,3,255,224,0,0,255,192, + 0,26,32,128,28,1,0,0,0,96,0,0,0,240,0,0, + 1,240,0,0,3,224,0,0,7,128,0,0,6,0,0,0, + 0,0,0,255,240,255,192,255,240,255,192,31,128,30,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,28,0,15,192,24,0,15,224,56,0,7,248,240,0,3, + 255,224,0,0,255,192,0,26,32,128,28,1,0,0,14,0, + 0,0,31,0,0,0,63,128,0,0,113,192,0,0,192,96, + 0,0,0,0,0,0,0,0,0,255,240,255,192,255,240,255, + 192,31,128,30,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,28,0,15,192,24,0,15,224,56, + 0,7,248,240,0,3,255,224,0,0,255,192,0,26,32,128, + 28,1,0,0,48,96,0,0,120,240,0,0,120,240,0,0, + 120,240,0,0,48,96,0,0,0,0,0,0,0,0,0,255, + 240,255,192,255,240,255,192,31,128,30,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,28,0,15, + 192,24,0,15,224,56,0,7,248,240,0,3,255,224,0,0, + 255,192,0,24,33,99,24,0,0,0,0,96,0,0,240,0, + 1,240,0,3,224,0,7,128,0,6,0,0,0,0,0,0, + 0,255,241,255,255,241,255,63,128,124,31,192,56,31,192,112, + 15,224,112,15,224,224,7,240,192,3,241,192,3,249,128,1, + 251,128,1,255,0,0,255,0,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,3,255,192,3,255,192,22,25,75,24, + 1,0,255,240,0,255,240,0,31,128,0,31,128,0,31,128, + 0,31,255,128,31,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,255,240,0,18,25,75, + 20,0,0,3,252,0,7,190,0,15,15,0,15,15,0,31, + 15,128,31,15,128,31,15,128,31,15,0,31,15,0,31,14, + 0,31,28,0,31,126,0,31,15,128,31,15,128,31,7,192, + 31,7,192,31,7,192,31,7,192,31,7,192,31,7,192,31, + 7,128,31,7,128,31,79,0,255,254,0,255,120,0,18,23, + 69,20,1,0,3,0,0,7,128,0,7,192,0,3,224,0, + 0,240,0,0,48,0,0,0,0,15,240,0,63,252,0,120, + 62,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,18,23,69,20,1,0,0, + 96,0,0,240,0,1,240,0,3,224,0,7,128,0,6,0, + 0,0,0,0,15,240,0,63,252,0,120,62,0,124,62,0, + 124,62,0,56,62,0,0,62,0,3,254,0,31,190,0,126, + 62,0,124,62,0,252,62,0,252,62,0,252,127,64,127,255, + 192,63,143,128,18,22,66,20,1,0,1,192,0,3,224,0, + 7,240,0,14,56,0,24,12,0,0,0,0,15,240,0,63, + 252,0,120,62,0,124,62,0,124,62,0,56,62,0,0,62, + 0,3,254,0,31,190,0,126,62,0,124,62,0,252,62,0, + 252,62,0,252,127,64,127,255,192,63,143,128,18,22,66,20, + 1,0,7,12,0,15,252,0,31,248,0,24,112,0,0,0, + 0,0,0,0,15,240,0,63,252,0,120,62,0,124,62,0, + 124,62,0,56,62,0,0,62,0,3,254,0,31,190,0,126, + 62,0,124,62,0,252,62,0,252,62,0,252,127,64,127,255, + 192,63,143,128,18,23,69,20,1,0,12,24,0,30,60,0, + 30,60,0,30,60,0,12,24,0,0,0,0,0,0,0,15, + 240,0,63,252,0,120,62,0,124,62,0,124,62,0,56,62, + 0,0,62,0,3,254,0,31,190,0,126,62,0,124,62,0, + 252,62,0,252,62,0,252,127,64,127,255,192,63,143,128,18, + 23,69,20,1,0,3,224,0,7,112,0,6,48,0,6,48, + 0,7,112,0,3,224,0,0,0,0,15,240,0,63,252,0, + 120,62,0,124,62,0,124,62,0,56,62,0,0,62,0,3, + 254,0,31,190,0,126,62,0,124,62,0,252,62,0,252,62, + 0,252,127,64,127,255,192,63,143,128,26,16,64,28,1,0, + 7,224,248,0,30,123,222,0,56,63,15,0,124,63,15,128, + 124,62,7,128,120,62,7,192,49,254,7,192,15,255,255,192, + 63,255,255,192,126,62,0,0,252,62,0,0,248,63,0,192, + 248,127,1,128,252,239,131,128,127,199,255,0,63,1,252,0, + 15,23,46,17,1,249,3,240,14,60,62,62,124,62,124,62, + 248,28,248,0,248,0,248,0,248,0,252,2,252,6,126,6, + 63,28,31,248,7,240,1,128,3,0,7,192,0,224,0,224, + 13,192,7,128,16,23,46,18,1,0,6,0,15,0,15,128, + 7,192,1,224,0,96,0,0,3,224,14,120,60,60,124,30, + 124,30,248,31,248,31,255,255,255,255,248,0,248,0,252,3, + 124,6,63,14,31,252,7,240,16,23,46,18,1,0,0,48, + 0,120,0,248,1,240,3,192,3,0,0,0,3,224,14,120, + 60,60,124,30,124,30,248,31,248,31,255,255,255,255,248,0, + 248,0,252,3,124,6,63,14,31,252,7,240,16,22,44,18, + 1,0,1,192,3,224,7,240,14,56,24,12,0,0,3,224, + 14,120,60,60,124,30,124,30,248,31,248,31,255,255,255,255, + 248,0,248,0,252,3,124,6,63,14,31,252,7,240,16,23, + 46,18,1,0,12,24,30,60,30,60,30,60,12,24,0,0, + 0,0,3,224,14,120,60,60,124,30,124,30,248,31,248,31, + 255,255,255,255,248,0,248,0,252,3,124,6,63,14,31,252, + 7,240,9,23,46,11,1,0,96,0,240,0,248,0,124,0, + 30,0,6,0,0,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,128,255,128,9,23,46,11,1,0,6,0,15,0, + 31,0,62,0,120,0,96,0,0,0,254,0,254,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,255,128,255,128,11,22,44,11,255,0, + 14,0,31,0,63,128,113,192,192,96,0,0,63,128,63,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,63,224,63,224,11,23,46,11, + 0,0,96,192,241,224,241,224,241,224,96,192,0,0,0,0, + 127,0,127,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,127,192,127,192, + 17,26,78,20,1,0,0,4,0,14,14,0,15,156,0,3, + 248,0,1,240,0,3,248,0,7,120,0,14,60,0,4,62, + 0,0,30,0,3,255,0,15,63,0,60,31,0,124,31,128, + 120,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,124,31,0,124,31,0,62,62,0,15,248, + 0,3,224,0,20,22,66,22,1,0,3,134,0,7,254,0, + 15,252,0,12,56,0,0,0,0,0,0,0,254,62,0,254, + 255,128,63,255,128,63,143,192,63,7,192,63,7,192,62,7, + 192,62,7,192,62,7,192,62,7,192,62,7,192,62,7,192, + 62,7,192,62,7,192,255,159,240,255,159,240,17,23,69,19, + 1,0,6,0,0,15,0,0,15,128,0,7,192,0,1,224, + 0,0,96,0,0,0,0,3,224,0,15,248,0,62,62,0, + 124,31,0,124,31,0,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,124,31,0,124,31,0,62,62, + 0,15,248,0,3,224,0,17,23,69,19,1,0,0,24,0, + 0,60,0,0,124,0,0,248,0,1,224,0,1,128,0,0, + 0,0,3,224,0,15,248,0,62,62,0,124,31,0,124,31, + 0,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,0,124,31,0,62,62,0,15,248,0,3, + 224,0,17,22,66,19,1,0,1,192,0,3,224,0,7,240, + 0,14,56,0,24,12,0,0,0,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,17,22,66,19,1,0, + 3,134,0,7,254,0,15,252,0,12,56,0,0,0,0,0, + 0,0,3,224,0,15,248,0,62,62,0,124,31,0,124,31, + 0,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,0,124,31,0,62,62,0,15,248,0,3, + 224,0,17,23,69,19,1,0,12,24,0,30,60,0,30,60, + 0,30,60,0,12,24,0,0,0,0,0,0,0,3,224,0, + 15,248,0,62,62,0,124,31,0,124,31,0,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 0,124,31,0,62,62,0,15,248,0,3,224,0,17,17,51, + 20,2,0,1,192,0,3,224,0,3,224,0,3,224,0,1, + 192,0,0,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,0,0,0,0,0,0,1,192,0,3,224,0,3,224,0, + 3,224,0,1,192,0,17,22,66,19,1,253,0,2,0,0, + 6,0,0,12,0,3,236,0,15,248,0,62,62,0,124,63, + 0,124,111,0,248,79,128,248,207,128,248,143,128,249,143,128, + 251,15,128,250,15,128,126,31,0,124,31,0,62,62,0,31, + 248,0,27,224,0,48,0,0,48,0,0,32,0,0,20,23, + 69,22,1,0,3,0,0,7,128,0,7,192,0,3,224,0, + 0,240,0,0,48,0,0,0,0,254,31,192,254,31,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,7,192,62,15,192,62,15,192,63,31,192, + 31,255,192,31,247,240,7,199,240,20,23,69,22,1,0,0, + 24,0,0,60,0,0,124,0,0,248,0,1,224,0,1,128, + 0,0,0,0,254,31,192,254,31,192,62,7,192,62,7,192, + 62,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,15,192,62,15,192,63,31,192,31,255,192,31,247, + 240,7,199,240,20,22,66,22,1,0,0,224,0,1,240,0, + 3,248,0,7,28,0,12,6,0,0,0,0,254,31,192,254, + 31,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,7,192,62,7,192,62,15,192,62,15,192, + 63,31,192,31,255,192,31,247,240,7,199,240,20,23,69,22, + 1,0,6,12,0,15,30,0,15,30,0,15,30,0,6,12, + 0,0,0,0,0,0,0,254,31,192,254,31,192,62,7,192, + 62,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,15,192,62,15,192,63,31,192,31,255, + 192,31,247,240,7,199,240,19,30,90,19,0,249,0,12,0, + 0,30,0,0,62,0,0,124,0,0,240,0,0,192,0,0, + 0,0,255,143,224,255,143,224,63,3,128,63,3,128,31,3, + 0,31,135,0,15,134,0,15,198,0,7,204,0,7,236,0, + 3,248,0,3,248,0,1,248,0,1,240,0,0,240,0,0, + 224,0,0,96,0,112,192,0,248,192,0,249,128,0,255,0, + 0,127,0,0,60,0,0,20,29,87,22,0,249,255,0,0, + 255,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 63,0,31,127,192,31,199,224,31,131,224,31,131,240,31,3, + 240,31,3,240,31,1,240,31,1,240,31,1,240,31,3,240, + 31,131,224,31,131,224,31,199,192,31,255,128,31,63,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,127,224, + 0,127,224,0,19,30,90,19,0,249,3,6,0,7,143,0, + 7,143,0,7,143,0,3,6,0,0,0,0,0,0,0,255, + 143,224,255,143,224,63,3,128,63,3,128,31,3,0,31,135, + 0,15,134,0,15,198,0,7,204,0,7,236,0,3,248,0, + 3,248,0,1,248,0,1,240,0,0,240,0,0,224,0,0, + 96,0,112,192,0,248,192,0,249,128,0,255,0,0,127,0, + 0,60,0,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=25 x= 3 y=10 dx=20 dy= 0 ascent=25 len=72 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =25 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24n[846] U8G_SECTION(".progmem.u8g_font_ncenB24n") = { + 0,39,53,252,243,24,0,0,0,0,42,57,0,25,251,24, + 0,12,15,30,17,2,10,6,0,14,0,14,0,230,112,230, + 112,246,240,63,192,15,0,127,224,246,240,230,112,230,112,7, + 0,7,0,6,0,16,16,32,20,2,1,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,6,11,11,9,2, + 251,120,248,252,252,252,124,28,24,48,112,224,8,4,4,11, + 1,6,255,255,255,255,6,6,6,9,1,0,120,252,252,252, + 252,120,10,25,50,9,255,0,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,7,0,6,0,14,0,14,0, + 12,0,28,0,28,0,24,0,56,0,56,0,48,0,112,0, + 112,0,96,0,224,0,224,0,192,0,16,24,48,19,1,0, + 3,192,15,240,30,120,60,60,124,62,120,30,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,120,30,120,30,124,62,60,60,30,120,15,240,3,192, + 13,24,48,19,3,0,1,128,7,128,255,128,255,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,255,248,255,248,17,24,72,19,1,0,15,240,0,63, + 252,0,120,126,0,240,63,0,248,31,0,252,31,0,252,31, + 0,252,31,0,124,63,0,56,62,0,0,124,0,0,248,0, + 0,240,0,1,224,0,3,192,0,3,129,128,7,1,128,14, + 1,128,28,3,128,63,255,128,127,255,0,127,255,0,255,255, + 0,255,255,0,16,24,48,19,1,0,15,224,63,248,120,124, + 248,62,252,62,252,62,252,62,120,62,0,124,0,112,7,224, + 7,192,0,248,0,126,0,62,0,63,120,31,252,31,252,31, + 252,63,248,62,120,126,63,248,7,224,17,24,72,19,0,0, + 0,4,0,0,12,0,0,28,0,0,60,0,0,124,0,0, + 252,0,1,252,0,1,252,0,3,124,0,6,124,0,12,124, + 0,28,124,0,56,124,0,112,124,0,224,124,0,192,124,0, + 255,255,128,255,255,128,0,124,0,0,124,0,0,124,0,0, + 124,0,3,255,128,3,255,128,16,24,48,19,1,0,31,255, + 63,254,63,254,63,252,63,240,48,0,48,0,48,0,48,0, + 55,224,63,248,56,124,48,62,32,62,0,31,0,31,56,31, + 124,31,252,31,252,62,120,62,112,252,63,240,15,192,17,24, + 72,19,1,0,3,240,0,15,252,0,31,30,0,62,62,0, + 60,62,0,124,62,0,120,28,0,248,0,0,248,0,0,248, + 0,0,249,248,0,255,254,0,255,127,0,252,31,0,248,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,124,31,0, + 124,31,0,62,62,0,31,252,0,7,240,0,16,24,48,19, + 2,0,255,255,255,254,255,254,255,252,255,252,192,24,192,24, + 192,56,128,112,0,112,0,240,0,224,1,224,1,224,3,224, + 3,192,7,192,7,192,15,192,15,192,15,192,15,192,15,192, + 7,128,17,24,72,19,1,0,7,240,0,15,252,0,60,62, + 0,56,31,0,120,15,0,120,15,0,120,15,0,124,15,0, + 126,30,0,127,252,0,63,240,0,31,252,0,15,254,0,63, + 255,0,120,127,0,248,31,128,240,15,128,240,15,128,240,15, + 0,240,15,0,248,30,0,124,60,0,63,240,0,7,192,0, + 17,24,72,19,1,0,3,192,0,31,248,0,62,124,0,124, + 62,0,252,31,0,248,31,0,248,15,128,248,15,128,248,15, + 128,252,31,128,252,63,128,127,111,128,63,207,128,31,143,128, + 0,15,128,0,15,128,112,15,0,248,31,0,252,31,0,248, + 30,0,248,62,0,112,252,0,63,240,0,15,192,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=32 h=32 x= 8 y=17 dx=32 dy= 0 ascent=26 len=124 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24r[5937] U8G_SECTION(".progmem.u8g_font_ncenB24r") = { + 0,39,53,252,243,25,6,143,16,147,32,127,249,26,249,25, + 249,0,0,0,9,1,1,6,25,25,10,2,0,120,252,252, + 252,252,252,252,120,120,120,120,48,48,48,48,48,48,0,0, + 120,252,252,252,252,120,11,11,22,11,0,14,96,192,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,96,192, + 96,192,16,25,50,19,1,255,7,28,7,28,7,28,7,28, + 14,56,14,56,14,56,127,255,127,255,127,255,14,56,12,48, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,56,224, + 56,224,56,224,56,224,56,224,56,224,17,30,90,19,1,252, + 1,128,0,1,128,0,1,128,0,7,240,0,31,252,0,57, + 158,0,113,143,0,113,159,0,241,159,0,241,142,0,253,128, + 0,255,128,0,127,240,0,127,252,0,63,254,0,15,255,0, + 1,255,128,1,191,128,113,143,128,249,135,128,249,135,128,249, + 135,0,241,143,0,121,158,0,63,252,0,7,224,0,1,128, + 0,1,128,0,1,128,0,1,128,0,26,24,96,27,0,0, + 0,0,24,0,7,192,48,0,15,96,112,0,30,57,224,0, + 60,31,96,0,60,16,192,0,120,16,128,0,120,17,128,0, + 240,49,0,0,240,35,0,0,240,98,0,0,240,198,31,0, + 123,140,61,128,63,12,120,192,0,24,240,64,0,17,240,64, + 0,49,224,64,0,33,224,192,0,99,224,192,0,195,193,128, + 0,195,193,128,1,131,195,0,1,129,230,0,3,0,252,0, + 24,25,75,28,2,0,0,124,0,1,255,0,3,199,0,7, + 135,128,7,131,128,7,131,128,7,199,128,7,199,0,7,239, + 0,7,252,0,3,248,0,7,241,255,15,249,255,61,248,124, + 120,252,56,120,254,112,248,126,96,248,63,224,252,63,192,252, + 31,193,254,15,227,255,15,243,127,255,254,63,243,254,15,128, + 252,4,11,11,8,2,14,96,240,240,240,240,240,240,96,96, + 96,96,9,27,54,13,2,253,3,128,7,0,14,0,28,0, + 28,0,56,0,56,0,120,0,120,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 56,0,56,0,28,0,28,0,14,0,7,0,3,128,9,27, + 54,13,1,253,224,0,48,0,56,0,28,0,28,0,14,0, + 14,0,15,0,7,0,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,15,0,15,0,14,0,14,0, + 28,0,28,0,56,0,112,0,192,0,12,15,30,17,2,10, + 6,0,14,0,14,0,230,112,230,112,246,240,63,192,15,0, + 127,224,246,240,230,112,230,112,7,0,7,0,6,0,16,16, + 32,20,2,1,3,192,3,192,3,192,3,192,3,192,3,192, + 255,255,255,255,255,255,255,255,3,192,3,192,3,192,3,192, + 3,192,3,192,6,11,11,9,2,251,120,248,252,252,252,124, + 28,24,48,112,224,8,4,4,11,1,6,255,255,255,255,6, + 6,6,9,1,0,120,252,252,252,252,120,10,25,50,9,255, + 0,0,192,1,192,1,192,1,128,3,128,3,128,3,0,7, + 0,7,0,6,0,14,0,14,0,12,0,28,0,28,0,24, + 0,56,0,56,0,48,0,112,0,112,0,96,0,224,0,224, + 0,192,0,16,24,48,19,1,0,3,192,15,240,30,120,60, + 60,124,62,120,30,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,120,30,120,30,124, + 62,60,60,30,120,15,240,3,192,13,24,48,19,3,0,1, + 128,7,128,255,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,255,248,255,248,17, + 24,72,19,1,0,15,240,0,63,252,0,120,126,0,240,63, + 0,248,31,0,252,31,0,252,31,0,252,31,0,124,63,0, + 56,62,0,0,124,0,0,248,0,0,240,0,1,224,0,3, + 192,0,3,129,128,7,1,128,14,1,128,28,3,128,63,255, + 128,127,255,0,127,255,0,255,255,0,255,255,0,16,24,48, + 19,1,0,15,224,63,248,120,124,248,62,252,62,252,62,252, + 62,120,62,0,124,0,112,7,224,7,192,0,248,0,126,0, + 62,0,63,120,31,252,31,252,31,252,63,248,62,120,126,63, + 248,7,224,17,24,72,19,0,0,0,4,0,0,12,0,0, + 28,0,0,60,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,124,0,6,124,0,12,124,0,28,124,0,56,124,0, + 112,124,0,224,124,0,192,124,0,255,255,128,255,255,128,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,16,24,48,19,1,0,31,255,63,254,63,254,63,252,63, + 240,48,0,48,0,48,0,48,0,55,224,63,248,56,124,48, + 62,32,62,0,31,0,31,56,31,124,31,252,31,252,62,120, + 62,112,252,63,240,15,192,17,24,72,19,1,0,3,240,0, + 15,252,0,31,30,0,62,62,0,60,62,0,124,62,0,120, + 28,0,248,0,0,248,0,0,248,0,0,249,248,0,255,254, + 0,255,127,0,252,31,0,248,31,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,0,124,31,0,62,62,0,31, + 252,0,7,240,0,16,24,48,19,2,0,255,255,255,254,255, + 254,255,252,255,252,192,24,192,24,192,56,128,112,0,112,0, + 240,0,224,1,224,1,224,3,224,3,192,7,192,7,192,15, + 192,15,192,15,192,15,192,15,192,7,128,17,24,72,19,1, + 0,7,240,0,15,252,0,60,62,0,56,31,0,120,15,0, + 120,15,0,120,15,0,124,15,0,126,30,0,127,252,0,63, + 240,0,31,252,0,15,254,0,63,255,0,120,127,0,248,31, + 128,240,15,128,240,15,128,240,15,0,240,15,0,248,30,0, + 124,60,0,63,240,0,7,192,0,17,24,72,19,1,0,3, + 192,0,31,248,0,62,124,0,124,62,0,252,31,0,248,31, + 0,248,15,128,248,15,128,248,15,128,252,31,128,252,63,128, + 127,111,128,63,207,128,31,143,128,0,15,128,0,15,128,112, + 15,0,248,31,0,252,31,0,248,30,0,248,62,0,112,252, + 0,63,240,0,15,192,0,6,16,16,9,2,0,120,252,252, + 252,252,120,0,0,0,0,120,252,252,252,252,120,6,21,21, + 9,2,251,120,252,252,252,252,120,0,0,0,0,120,248,252, + 252,252,124,28,24,48,112,224,16,18,36,20,2,0,0,3, + 0,15,0,127,1,255,7,252,31,240,127,128,254,0,248,0, + 252,0,255,128,63,224,15,248,3,254,0,127,0,31,0,7, + 0,1,16,10,20,20,2,3,255,255,255,255,255,255,255,255, + 0,0,0,0,255,255,255,255,255,255,255,255,16,18,36,20, + 2,0,192,0,240,0,254,0,255,128,63,224,15,248,1,254, + 0,127,0,31,0,63,1,255,7,252,31,240,127,192,254,0, + 248,0,224,0,128,0,14,25,50,16,1,0,15,192,63,240, + 113,248,240,248,248,252,248,252,248,252,112,252,0,248,1,248, + 1,240,3,224,3,128,7,0,7,0,6,0,6,0,0,0, + 0,0,15,0,31,128,31,128,31,128,31,128,15,0,23,25, + 75,25,0,0,0,127,0,1,255,192,7,227,240,15,0,120, + 30,0,28,28,0,12,56,60,6,48,255,230,113,227,230,113, + 227,198,99,195,198,227,131,198,231,135,134,231,135,140,231,7, + 140,231,15,28,231,15,24,227,31,112,115,247,224,48,227,204, + 56,0,28,28,0,120,15,1,240,7,255,224,1,255,0,25, + 25,100,25,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,63,0,0,0,127,0,0,0,127,128, + 0,0,127,128,0,0,255,128,0,0,207,192,0,1,207,192, + 0,1,143,192,0,1,135,224,0,3,135,224,0,3,7,240, + 0,7,3,240,0,7,255,240,0,7,255,248,0,14,1,248, + 0,12,1,252,0,28,0,252,0,28,0,254,0,62,0,254, + 0,255,131,255,128,255,131,255,128,23,25,75,25,1,0,255, + 255,128,255,255,224,31,131,240,31,129,248,31,129,248,31,128, + 252,31,128,252,31,128,252,31,128,248,31,129,248,31,129,240, + 31,135,224,31,255,0,31,255,192,31,131,240,31,128,252,31, + 128,252,31,128,254,31,128,126,31,128,254,31,128,252,31,128, + 252,31,131,248,255,255,240,255,255,192,22,25,75,24,1,0, + 0,126,24,3,255,184,7,193,248,31,128,248,31,0,120,62, + 0,56,126,0,56,126,0,24,254,0,24,252,0,8,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 254,0,12,254,0,28,126,0,24,126,0,56,63,0,48,31, + 128,112,15,193,224,7,255,192,0,255,0,24,25,75,26,1, + 0,255,255,0,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,126,31,128,126,31,128,127,31,128,63,31,128,63,31, + 128,63,31,128,63,31,128,63,31,128,63,31,128,63,31,128, + 63,31,128,127,31,128,126,31,128,126,31,128,126,31,128,252, + 31,129,248,31,131,240,255,255,224,255,255,0,21,25,75,23, + 1,0,255,255,248,255,255,248,31,129,248,31,128,248,31,128, + 120,31,128,56,31,128,56,31,134,24,31,134,24,31,142,0, + 31,142,0,31,158,0,31,254,0,31,254,0,31,158,0,31, + 142,0,31,134,24,31,134,24,31,134,24,31,128,56,31,128, + 56,31,128,120,31,129,248,255,255,248,255,255,248,21,25,75, + 23,1,0,255,255,248,255,255,248,31,193,248,31,128,248,31, + 128,120,31,128,56,31,128,24,31,131,24,31,131,24,31,135, + 8,31,135,0,31,159,0,31,255,0,31,255,0,31,143,0, + 31,135,0,31,131,0,31,131,0,31,131,0,31,128,0,31, + 128,0,31,128,0,31,128,0,255,248,0,255,248,0,25,25, + 100,26,1,0,0,126,12,0,3,255,220,0,7,193,252,0, + 15,128,124,0,31,0,60,0,63,0,28,0,126,0,28,0, + 126,0,12,0,254,0,12,0,254,0,4,0,254,0,0,0, + 252,0,0,0,252,0,0,0,252,0,0,0,252,7,255,128, + 252,7,255,128,252,0,124,0,254,0,124,0,126,0,124,0, + 126,0,124,0,63,0,252,0,31,0,252,0,15,129,220,0, + 7,255,28,0,0,252,12,0,26,25,100,28,1,0,255,243, + 255,192,255,243,255,192,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,255, + 254,0,31,255,254,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,255,243,255,192,255,243, + 255,192,12,25,50,14,1,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,20,25,75,20,0,0, + 0,255,240,0,255,240,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,24,31,128,126,31,128,126,31,128, + 254,31,128,254,31,128,254,31,128,252,31,0,96,63,0,96, + 62,0,56,254,0,63,248,0,15,224,0,25,25,100,27,1, + 0,255,243,255,128,255,243,255,128,31,128,126,0,31,128,120, + 0,31,128,240,0,31,129,224,0,31,129,192,0,31,131,128, + 0,31,135,0,0,31,143,0,0,31,159,0,0,31,191,128, + 0,31,255,192,0,31,239,192,0,31,239,224,0,31,199,224, + 0,31,135,240,0,31,131,248,0,31,129,248,0,31,129,252, + 0,31,128,252,0,31,128,254,0,31,128,255,0,255,243,255, + 128,255,243,255,128,21,25,75,23,1,0,255,240,0,255,240, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,24,31,128, + 24,31,128,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,31,25,100,32,0,0,127,224,7,254, + 127,240,15,254,15,240,15,240,15,240,15,240,13,248,27,240, + 13,248,27,240,13,248,27,240,12,252,59,240,12,252,51,240, + 12,252,51,240,12,124,115,240,12,126,99,240,12,126,99,240, + 12,62,227,240,12,63,195,240,12,63,195,240,12,31,195,240, + 12,31,131,240,12,31,131,240,12,15,131,240,12,15,3,240, + 12,15,3,240,30,15,3,240,255,198,31,254,255,198,31,254, + 27,25,100,27,0,0,255,128,127,224,255,192,127,224,63,224, + 15,0,15,224,6,0,15,240,6,0,15,248,6,0,15,252, + 6,0,13,254,6,0,12,254,6,0,12,255,6,0,12,127, + 134,0,12,63,198,0,12,31,230,0,12,15,230,0,12,15, + 246,0,12,7,254,0,12,3,254,0,12,1,254,0,12,0, + 254,0,12,0,126,0,12,0,126,0,12,0,62,0,30,0, + 30,0,255,192,14,0,255,192,6,0,24,25,75,26,1,0, + 0,126,0,3,255,192,15,193,240,31,128,248,63,0,252,62, + 0,124,126,0,126,126,0,126,252,0,63,252,0,63,252,0, + 63,252,0,63,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,126,0,126,126,0,126,62,0,124,63,0,252,31, + 128,248,15,193,240,3,255,192,0,126,0,22,25,75,24,1, + 0,255,255,128,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,240,0,255,240,0,25,31,124,26, + 1,250,0,126,0,0,3,255,192,0,15,193,240,0,31,128, + 248,0,63,0,252,0,62,0,124,0,126,0,126,0,126,0, + 126,0,252,0,63,0,252,0,63,0,252,0,63,0,252,0, + 63,0,252,0,63,0,252,0,63,0,252,0,63,0,252,60, + 63,0,252,254,63,0,127,135,126,0,127,131,254,0,63,3, + 252,0,63,3,252,0,31,131,248,0,15,195,240,0,3,255, + 224,0,0,127,224,0,0,3,225,128,0,3,225,128,0,1, + 243,128,0,1,255,0,0,0,254,0,0,0,60,0,25,25, + 100,27,1,0,255,255,128,0,255,255,240,0,31,131,248,0, + 31,129,248,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,129,248,0,31,129,240,0, + 31,135,192,0,31,255,0,0,31,255,192,0,31,135,224,0, + 31,131,224,0,31,131,240,0,31,131,240,0,31,131,240,0, + 31,131,249,128,31,129,249,128,31,129,251,0,31,129,255,0, + 255,240,254,0,255,240,124,0,19,25,75,21,1,0,3,240, + 192,31,253,192,60,31,192,120,7,192,112,3,192,240,1,192, + 240,0,192,248,0,192,255,0,192,255,240,0,127,254,0,127, + 255,0,63,255,128,15,255,192,7,255,224,64,127,224,96,7, + 224,96,3,224,112,1,224,120,1,224,120,1,192,126,3,192, + 127,7,128,103,255,0,97,252,0,21,25,75,23,1,0,255, + 255,248,255,255,248,241,248,120,225,248,56,225,248,56,193,248, + 24,193,248,24,193,248,24,129,248,8,129,248,8,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,15,255,128,15,255,128,26,25,100,28,1,0, + 255,240,255,192,255,240,255,192,31,128,30,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,28,0, + 15,192,24,0,15,224,56,0,7,248,240,0,3,255,224,0, + 0,255,192,0,25,25,100,25,0,0,255,224,255,128,255,224, + 255,128,63,128,62,0,31,128,28,0,31,128,28,0,31,192, + 24,0,15,192,56,0,15,192,48,0,7,224,112,0,7,224, + 112,0,7,240,96,0,3,240,224,0,3,240,192,0,1,248, + 192,0,1,249,192,0,1,249,128,0,0,255,128,0,0,255, + 0,0,0,255,0,0,0,127,0,0,0,126,0,0,0,62, + 0,0,0,62,0,0,0,60,0,0,0,28,0,0,32,25, + 100,32,0,0,255,223,249,255,255,223,249,255,63,7,224,124, + 63,7,224,56,31,131,224,48,31,131,240,112,31,131,240,112, + 15,193,240,96,15,195,248,96,15,195,248,224,7,195,248,192, + 7,231,248,192,7,230,252,192,7,230,253,128,3,254,125,128, + 3,252,127,128,3,252,127,128,1,252,63,0,1,248,63,0, + 1,248,63,0,0,248,62,0,0,248,30,0,0,240,30,0, + 0,112,28,0,0,112,12,0,24,25,75,24,0,0,255,227, + 255,255,227,255,63,128,252,31,192,120,31,192,112,15,224,224, + 7,224,192,7,241,192,3,255,128,3,255,0,1,255,0,0, + 254,0,0,254,0,0,127,0,0,127,128,0,255,128,1,223, + 192,3,143,224,3,143,224,7,7,240,14,3,240,30,3,248, + 63,3,252,255,239,255,255,239,255,24,25,75,24,0,0,255, + 241,255,255,241,255,63,128,124,31,192,56,31,192,112,15,224, + 112,15,224,224,7,240,192,3,241,192,3,249,128,1,251,128, + 1,255,0,0,255,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,0,126,0,0,126,0,0,126, + 0,0,126,0,3,255,192,3,255,192,19,25,75,21,1,0, + 127,255,224,127,255,224,126,15,224,120,15,224,112,31,192,112, + 31,128,96,63,128,96,127,0,64,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,240,0,7,240,0,15,224,32, + 15,224,96,31,192,96,31,128,96,63,128,224,127,0,224,127, + 1,224,254,7,224,255,255,224,255,255,224,8,29,29,13,3, + 252,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,255,255,16,25, + 50,20,2,0,240,0,248,0,120,0,124,0,60,0,62,0, + 30,0,31,0,15,0,15,128,7,128,7,192,3,192,3,224, + 1,224,1,240,0,240,0,248,0,120,0,124,0,60,0,62, + 0,30,0,30,0,15,8,29,29,13,1,252,255,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,255,255,16,14,28,20,2,11,3, + 192,7,224,7,224,15,240,15,240,15,240,30,120,30,120,60, + 60,60,60,124,62,120,30,248,31,240,15,16,3,6,16,0, + 251,255,255,255,255,255,255,7,6,6,11,2,17,96,240,248, + 124,30,6,18,16,48,20,1,0,15,240,0,63,252,0,120, + 126,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,19,25,75,21,0,0,255, + 0,0,255,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,63,0,31,255,128, + 31,207,192,31,135,192,31,3,224,31,3,224,31,3,224,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 192,31,143,128,29,255,0,24,124,0,15,16,32,17,1,0, + 3,240,15,252,62,62,124,62,124,62,248,28,248,0,248,0, + 248,0,248,0,252,2,252,6,126,6,63,28,31,248,7,224, + 20,25,75,22,1,0,0,127,128,0,127,128,0,31,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,15,207,128,31,239,128,62,63,128,124,31,128,120,31,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,31,128,124,31,128,124,127,128,63,239,240,15,143, + 240,16,16,32,18,1,0,3,224,15,248,60,60,120,30,120, + 30,248,31,248,31,255,255,255,255,248,0,248,0,252,3,124, + 6,63,14,31,252,7,240,15,25,50,13,0,0,0,240,3, + 252,7,158,15,62,15,62,31,28,31,0,31,0,31,0,255, + 240,255,240,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,255,224,255,224,20, + 25,75,20,1,249,0,1,224,0,3,240,7,255,240,31,124, + 224,62,62,0,124,31,0,124,31,0,124,31,0,124,31,0, + 124,31,0,62,62,0,31,126,0,31,248,0,124,0,0,248, + 0,0,255,252,0,255,255,0,63,255,0,31,255,128,127,255, + 128,240,7,128,240,7,128,248,15,0,127,254,0,15,240,0, + 20,25,75,22,1,0,254,0,0,254,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,62,0,62,255,128,63,255,128,63,143,192,63,7,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,255,159,240,255,159, + 240,9,25,50,12,2,0,28,0,62,0,62,0,62,0,28, + 0,0,0,0,0,0,0,0,0,254,0,254,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,255,128,12,32,64,12,253,249,0, + 224,1,240,1,240,1,240,0,224,0,0,0,0,0,0,0, + 0,7,240,7,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,113,240,249,224,249,224,251,192,127,128,30,0,20, + 25,75,22,1,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,63,224,62,63,224,62,15,0,62,14,0,62,60,0,62, + 112,0,62,248,0,63,252,0,63,254,0,63,126,0,62,63, + 0,62,31,128,62,31,192,62,15,224,255,191,240,255,191,240, + 10,25,50,12,1,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,255,192,255,192,29,16,64,31,1,0,254,126, + 31,0,254,255,63,192,63,255,255,192,63,159,231,224,63,15, + 195,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,255,191,239,248,255,191,239,248,20,16, + 48,22,1,0,254,62,0,254,255,128,63,255,128,63,143,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,255,159, + 240,255,159,240,17,16,48,19,1,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,19,23,69,21,1,249, + 254,126,0,254,255,128,63,143,192,63,7,192,63,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,63,7,192,63,7,192,63,143,128,63,255,0,62,126,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,255, + 128,0,255,128,0,20,23,69,20,1,249,7,225,128,31,249, + 128,62,31,128,124,31,128,124,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,124,31,128,124, + 31,128,62,63,128,31,239,128,7,207,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,127,240,0,127,240, + 15,16,32,16,1,0,252,124,252,254,61,254,61,190,63,62, + 62,28,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,192,255,192,14,16,32,16,1,0,15,216,60,248, + 112,56,240,24,254,8,255,192,255,240,127,248,63,248,15,252, + 192,252,192,60,224,56,248,120,255,240,207,192,12,23,46,14, + 1,0,6,0,6,0,14,0,14,0,14,0,30,0,62,0, + 255,224,255,224,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,48,62,48,62,48,62,96,63,224,31,192,15,128, + 20,16,48,22,1,0,254,31,192,254,31,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,15,192,62,15,192,63,31,192,31,255,192, + 31,247,240,7,199,240,19,16,48,19,0,0,255,143,224,255, + 143,224,63,3,192,63,3,128,31,3,0,31,135,0,15,134, + 0,15,198,0,7,204,0,7,236,0,3,248,0,3,248,0, + 1,248,0,1,240,0,0,240,0,0,224,0,27,16,64,29, + 1,0,255,191,239,224,255,191,239,224,126,31,131,192,62,15, + 131,128,63,15,131,0,31,15,195,0,31,143,198,0,15,159, + 230,0,15,155,230,0,15,251,236,0,7,241,252,0,7,241, + 248,0,3,225,248,0,3,224,240,0,1,192,240,0,1,192, + 96,0,19,16,48,19,0,0,255,223,224,255,223,224,63,7, + 0,31,142,0,31,220,0,15,248,0,7,240,0,3,240,0, + 1,248,0,3,252,0,7,254,0,14,126,0,28,63,0,60, + 63,128,255,127,224,255,127,224,19,23,69,19,0,249,255,143, + 224,255,143,224,63,3,128,63,3,128,31,3,0,31,135,0, + 15,134,0,15,198,0,7,204,0,7,236,0,3,248,0,3, + 248,0,1,248,0,1,240,0,0,240,0,0,224,0,0,96, + 0,112,192,0,248,192,0,249,128,0,255,0,0,127,0,0, + 60,0,0,14,16,32,16,1,0,127,252,127,252,112,252,97, + 248,97,248,67,240,7,224,7,224,15,192,31,128,31,12,63, + 12,126,28,124,28,255,252,255,252,8,30,30,13,3,252,3, + 14,28,60,60,60,60,60,60,60,60,60,60,56,240,248,60, + 60,60,60,60,60,60,60,60,60,60,28,14,3,4,25,25, + 20,8,0,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,8,28,28,13, + 1,253,224,120,60,60,60,60,60,60,60,60,60,60,28,15, + 31,60,60,60,60,60,60,60,60,60,60,60,120,224,16,6, + 12,20,2,6,14,4,63,142,127,255,255,254,113,252,32,112, + 255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=11 x= 2 y= 6 dx=12 dy= 0 ascent=11 len=16 + Font Bounding box w=14 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR08[2642] U8G_SECTION(".progmem.u8g_font_ncenR08") = { + 0,14,18,254,252,8,1,180,3,120,32,255,254,11,254,8, + 254,0,0,0,3,0,1,1,8,8,4,1,0,128,128,128, + 128,128,0,128,128,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,4,10,10,5, + 0,255,32,112,160,160,96,80,80,80,224,64,8,8,8,9, + 0,0,100,148,152,104,22,25,41,38,9,8,16,10,0,0, + 48,0,72,0,80,0,38,0,84,0,136,0,140,128,115,0, + 1,3,3,4,1,5,128,128,128,3,9,9,4,0,255,32, + 64,64,128,128,128,64,64,32,3,9,9,4,0,255,128,64, + 64,32,32,32,64,64,128,5,5,5,6,0,3,32,168,112, + 168,32,5,5,5,6,0,0,32,32,248,32,32,2,3,3, + 3,0,254,64,64,128,3,1,1,4,0,2,224,1,2,2, + 4,1,0,128,128,3,9,9,4,0,255,32,32,32,64,64, + 64,128,128,128,4,8,8,5,0,0,96,144,144,144,144,144, + 144,96,3,8,8,5,1,0,64,192,64,64,64,64,64,224, + 4,8,8,5,0,0,96,144,144,16,32,64,144,240,4,8, + 8,5,0,0,96,144,16,96,16,144,144,96,5,8,8,5, + 0,0,16,48,80,80,144,248,16,56,4,8,8,5,0,0, + 240,128,128,224,16,16,144,96,4,8,8,5,0,0,112,144, + 128,224,144,144,144,96,4,8,8,5,0,0,240,144,32,32, + 32,64,64,64,4,8,8,5,0,0,96,144,144,96,144,144, + 144,96,4,8,8,5,0,0,96,144,144,144,112,16,144,224, + 1,5,5,4,1,0,128,128,0,128,128,2,6,6,4,0, + 255,64,64,0,64,64,128,6,5,5,7,0,0,12,48,192, + 48,12,5,3,3,6,0,1,248,0,248,6,5,5,7,0, + 0,192,48,12,48,192,4,8,8,5,0,0,96,144,16,32, + 64,0,64,64,8,10,10,9,0,255,60,66,129,157,165,173, + 182,128,64,60,7,8,8,8,0,0,16,16,40,40,68,124, + 68,238,6,8,8,7,0,0,248,68,68,120,68,68,68,248, + 6,8,8,7,0,0,60,68,128,128,128,128,68,56,7,8, + 8,8,0,0,248,68,66,66,66,66,68,248,6,8,8,7, + 0,0,252,68,84,112,80,68,68,252,6,8,8,7,0,0, + 252,68,84,112,80,64,64,224,7,8,8,8,0,0,60,68, + 128,128,142,132,68,56,8,8,8,9,0,0,231,66,66,126, + 66,66,66,231,3,8,8,4,0,0,224,64,64,64,64,64, + 64,224,4,8,8,5,0,0,112,32,32,32,32,160,160,192, + 7,8,8,8,0,0,230,68,72,80,112,72,68,238,6,8, + 8,7,0,0,224,64,64,64,64,68,68,252,9,8,16,10, + 0,0,193,128,99,0,99,0,85,0,85,0,85,0,73,0, + 235,128,8,8,8,9,0,0,231,98,82,82,74,74,70,230, + 7,8,8,8,0,0,56,68,130,130,130,130,68,56,6,8, + 8,7,0,0,248,68,68,68,120,64,64,224,7,9,9,8, + 0,255,56,68,130,130,130,178,76,56,6,7,8,8,8,0, + 0,248,68,68,72,120,68,68,198,5,8,8,6,0,0,120, + 136,128,224,24,8,136,240,7,8,8,8,0,0,254,146,146, + 16,16,16,16,56,7,8,8,8,0,0,238,68,68,68,68, + 68,68,56,7,8,8,8,0,0,238,68,68,68,40,40,16, + 16,11,8,16,12,0,0,238,224,68,64,68,64,42,128,42, + 128,42,128,17,0,17,0,6,8,8,7,0,0,204,72,72, + 48,48,72,72,204,7,8,8,8,0,0,198,68,40,40,16, + 16,16,56,5,8,8,6,0,0,248,136,144,32,32,72,136, + 248,2,9,9,3,0,255,192,128,128,128,128,128,128,128,192, + 4,8,8,5,0,0,128,128,64,64,32,32,16,16,2,9, + 9,3,0,255,192,64,64,64,64,64,64,64,192,5,6,6, + 6,0,2,32,32,80,80,136,136,6,1,1,6,0,254,252, + 2,2,2,3,0,6,128,64,5,5,5,6,0,0,96,144, + 112,144,248,5,8,8,5,255,0,192,64,64,112,72,72,72, + 112,4,5,5,5,0,0,112,144,128,144,96,5,8,8,6, + 0,0,48,16,16,112,144,144,144,120,4,5,5,5,0,0, + 96,144,240,128,112,4,8,8,4,0,0,48,80,64,224,64, + 64,64,224,5,7,7,6,0,254,120,144,160,64,120,136,112, + 6,8,8,6,255,0,192,64,64,112,72,72,72,236,3,7, + 7,4,0,0,64,0,192,64,64,64,224,2,9,9,4,0, + 254,64,0,192,64,64,64,64,64,128,6,8,8,7,0,0, + 192,64,64,88,80,112,72,236,3,8,8,4,0,0,192,64, + 64,64,64,64,64,224,9,5,10,10,0,0,182,0,73,0, + 73,0,73,0,237,128,6,5,5,7,0,0,176,72,72,72, + 236,4,5,5,5,0,0,96,144,144,144,96,4,7,7,5, + 0,254,96,144,144,144,224,128,192,5,7,7,6,0,254,104, + 144,144,144,112,16,56,4,5,5,5,0,0,208,96,64,64, + 224,4,5,5,5,0,0,112,128,96,16,224,3,7,7,3, + 0,0,128,128,192,128,128,128,96,5,5,5,6,0,0,144, + 144,144,144,104,6,5,5,6,0,0,220,136,80,80,32,8, + 5,5,8,0,0,147,170,170,68,68,5,5,5,6,0,0, + 216,80,32,80,216,6,7,7,6,0,254,220,136,80,80,32, + 32,192,4,5,5,5,0,0,240,32,64,128,240,3,9,9, + 4,0,255,32,64,64,64,128,64,64,64,32,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,3,9,9,4,0,255, + 128,64,64,64,32,64,64,64,128,6,2,2,7,0,2,100, + 152,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,0,0,0,3,0,1,1,8,8,4,1,254,128,128, + 0,128,128,128,128,128,5,7,7,6,0,255,16,120,168,160, + 200,112,64,6,8,8,7,0,0,56,72,64,248,32,32,68, + 248,6,6,6,7,0,1,132,120,72,72,120,132,7,8,8, + 8,0,0,198,68,40,108,16,124,16,56,1,8,8,6,2, + 0,128,128,128,0,0,128,128,128,4,10,10,5,0,254,112, + 144,128,96,144,144,96,16,144,224,3,1,1,4,0,6,160, + 9,8,16,10,0,0,62,0,65,0,156,128,164,128,160,128, + 156,128,65,0,62,0,4,6,6,5,0,2,224,32,96,176, + 0,240,5,3,3,6,0,1,72,144,72,5,3,3,6,0, + 1,248,8,8,3,1,1,4,0,2,224,9,8,16,10,0, + 0,62,0,65,0,188,128,148,128,152,128,182,128,65,0,62, + 0,4,1,1,5,0,6,240,3,4,4,4,0,4,64,160, + 160,64,5,5,5,6,0,0,32,248,32,0,248,3,4,4, + 3,0,4,96,160,64,224,3,4,4,3,0,4,224,64,32, + 192,2,2,2,3,0,6,64,128,5,7,7,6,0,254,144, + 144,144,144,232,128,128,6,10,10,7,0,254,124,168,168,168, + 104,40,40,40,40,124,1,2,2,4,1,2,128,128,2,3, + 3,3,0,254,128,64,192,3,4,4,3,0,4,64,192,64, + 224,4,6,6,5,0,2,96,144,144,96,0,240,5,3,3, + 6,0,1,144,72,144,7,8,8,7,0,0,72,200,80,240, + 36,44,94,68,6,8,8,7,0,0,72,200,80,240,44,52, + 72,92,7,8,8,7,0,0,232,72,48,208,36,44,94,68, + 4,8,8,5,0,254,32,32,0,32,64,128,144,96,7,11, + 11,8,0,0,32,16,0,16,16,40,40,68,124,68,238,7, + 11,11,8,0,0,8,16,0,16,16,40,40,68,124,68,238, + 7,11,11,8,0,0,16,40,0,16,16,40,40,68,124,68, + 238,7,11,11,8,0,0,20,40,0,16,16,40,40,68,124, + 68,238,7,10,10,8,0,0,40,0,16,16,40,40,68,124, + 68,238,7,11,11,8,0,0,16,40,16,16,16,40,40,68, + 124,68,238,10,8,16,11,0,0,31,192,12,64,21,64,23, + 0,61,0,36,64,68,64,231,192,6,10,10,7,0,254,60, + 68,128,128,128,128,68,56,16,48,6,11,11,7,0,0,32, + 16,0,252,68,84,112,80,68,68,252,6,11,11,7,0,0, + 8,16,0,252,68,84,112,80,68,68,252,6,11,11,7,0, + 0,16,40,0,252,68,84,112,80,68,68,252,6,10,10,7, + 0,0,40,0,252,68,84,112,80,68,68,252,3,11,11,4, + 0,0,128,64,0,224,64,64,64,64,64,64,224,3,11,11, + 4,0,0,32,64,0,224,64,64,64,64,64,64,224,3,11, + 11,4,0,0,64,160,0,224,64,64,64,64,64,64,224,3, + 10,10,4,0,0,160,0,224,64,64,64,64,64,64,224,7, + 8,8,8,0,0,248,68,66,226,66,66,68,248,8,11,11, + 9,0,0,20,40,0,231,98,82,82,74,74,70,230,7,11, + 11,8,0,0,32,16,0,56,68,130,130,130,130,68,56,7, + 11,11,8,0,0,8,16,0,56,68,130,130,130,130,68,56, + 7,11,11,8,0,0,16,40,0,56,68,130,130,130,130,68, + 56,7,11,11,8,0,0,20,40,0,56,68,130,130,130,130, + 68,56,7,10,10,8,0,0,40,0,56,68,130,130,130,130, + 68,56,5,5,5,6,0,0,136,80,32,80,136,8,8,8, + 8,255,0,29,34,69,73,81,97,98,156,7,11,11,8,0, + 0,32,16,0,238,68,68,68,68,68,68,56,7,11,11,8, + 0,0,8,16,0,238,68,68,68,68,68,68,56,7,11,11, + 8,0,0,16,40,0,238,68,68,68,68,68,68,56,7,10, + 10,8,0,0,40,0,238,68,68,68,68,68,68,56,7,11, + 11,8,0,0,8,16,0,198,68,40,40,16,16,16,56,6, + 8,8,7,0,0,192,120,68,68,68,120,64,224,6,8,8, + 7,0,0,48,72,72,88,68,68,84,216,5,8,8,6,0, + 0,64,32,0,96,144,112,144,248,5,8,8,6,0,0,32, + 64,0,96,144,112,144,248,5,8,8,6,0,0,32,80,0, + 96,144,112,144,248,5,8,8,6,0,0,80,160,0,96,144, + 112,144,248,5,7,7,6,0,0,80,0,96,144,112,144,248, + 5,8,8,6,0,0,32,80,32,96,144,112,144,248,7,5, + 5,8,0,0,108,146,126,144,238,4,7,7,5,0,254,112, + 144,128,144,96,32,96,4,8,8,5,0,0,64,32,0,96, + 144,240,128,112,4,8,8,5,0,0,32,64,0,96,144,240, + 128,112,4,8,8,5,0,0,32,80,0,96,144,240,128,112, + 4,7,7,5,0,0,80,0,96,144,240,128,112,3,8,8, + 4,0,0,128,64,0,192,64,64,64,224,3,8,8,4,0, + 0,32,64,0,192,64,64,64,224,3,8,8,4,0,0,64, + 160,0,192,64,64,64,224,3,7,7,4,0,0,160,0,192, + 64,64,64,224,4,8,8,5,0,0,80,96,160,96,144,144, + 144,96,6,8,8,7,0,0,40,80,0,176,72,72,72,236, + 4,8,8,5,0,0,64,32,0,96,144,144,144,96,4,8, + 8,5,0,0,32,64,0,96,144,144,144,96,4,8,8,5, + 0,0,32,80,0,96,144,144,144,96,4,8,8,5,0,0, + 80,160,0,96,144,144,144,96,4,7,7,5,0,0,80,0, + 96,144,144,144,96,5,5,5,6,0,0,32,0,248,0,32, + 5,6,6,5,0,255,104,144,176,208,96,128,5,8,8,6, + 0,0,64,32,0,144,144,144,144,104,5,8,8,6,0,0, + 32,64,0,144,144,144,144,104,5,8,8,6,0,0,32,80, + 0,144,144,144,144,104,5,7,7,6,0,0,80,0,144,144, + 144,144,104,6,10,10,6,0,254,16,32,0,220,136,80,80, + 32,32,192,5,10,10,5,255,254,192,64,64,112,72,72,72, + 112,64,224,6,9,9,6,0,254,80,0,220,136,80,80,32, + 32,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=10 x= 2 y= 6 dx=12 dy= 0 ascent= 9 len=16 + Font Bounding box w=14 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR08r[1266] U8G_SECTION(".progmem.u8g_font_ncenR08r") = { + 0,14,18,254,252,8,1,180,3,120,32,127,254,9,254,8, + 254,0,0,0,3,0,1,1,8,8,4,1,0,128,128,128, + 128,128,0,128,128,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,4,10,10,5, + 0,255,32,112,160,160,96,80,80,80,224,64,8,8,8,9, + 0,0,100,148,152,104,22,25,41,38,9,8,16,10,0,0, + 48,0,72,0,80,0,38,0,84,0,136,0,140,128,115,0, + 1,3,3,4,1,5,128,128,128,3,9,9,4,0,255,32, + 64,64,128,128,128,64,64,32,3,9,9,4,0,255,128,64, + 64,32,32,32,64,64,128,5,5,5,6,0,3,32,168,112, + 168,32,5,5,5,6,0,0,32,32,248,32,32,2,3,3, + 3,0,254,64,64,128,3,1,1,4,0,2,224,1,2,2, + 4,1,0,128,128,3,9,9,4,0,255,32,32,32,64,64, + 64,128,128,128,4,8,8,5,0,0,96,144,144,144,144,144, + 144,96,3,8,8,5,1,0,64,192,64,64,64,64,64,224, + 4,8,8,5,0,0,96,144,144,16,32,64,144,240,4,8, + 8,5,0,0,96,144,16,96,16,144,144,96,5,8,8,5, + 0,0,16,48,80,80,144,248,16,56,4,8,8,5,0,0, + 240,128,128,224,16,16,144,96,4,8,8,5,0,0,112,144, + 128,224,144,144,144,96,4,8,8,5,0,0,240,144,32,32, + 32,64,64,64,4,8,8,5,0,0,96,144,144,96,144,144, + 144,96,4,8,8,5,0,0,96,144,144,144,112,16,144,224, + 1,5,5,4,1,0,128,128,0,128,128,2,6,6,4,0, + 255,64,64,0,64,64,128,6,5,5,7,0,0,12,48,192, + 48,12,5,3,3,6,0,1,248,0,248,6,5,5,7,0, + 0,192,48,12,48,192,4,8,8,5,0,0,96,144,16,32, + 64,0,64,64,8,10,10,9,0,255,60,66,129,157,165,173, + 182,128,64,60,7,8,8,8,0,0,16,16,40,40,68,124, + 68,238,6,8,8,7,0,0,248,68,68,120,68,68,68,248, + 6,8,8,7,0,0,60,68,128,128,128,128,68,56,7,8, + 8,8,0,0,248,68,66,66,66,66,68,248,6,8,8,7, + 0,0,252,68,84,112,80,68,68,252,6,8,8,7,0,0, + 252,68,84,112,80,64,64,224,7,8,8,8,0,0,60,68, + 128,128,142,132,68,56,8,8,8,9,0,0,231,66,66,126, + 66,66,66,231,3,8,8,4,0,0,224,64,64,64,64,64, + 64,224,4,8,8,5,0,0,112,32,32,32,32,160,160,192, + 7,8,8,8,0,0,230,68,72,80,112,72,68,238,6,8, + 8,7,0,0,224,64,64,64,64,68,68,252,9,8,16,10, + 0,0,193,128,99,0,99,0,85,0,85,0,85,0,73,0, + 235,128,8,8,8,9,0,0,231,98,82,82,74,74,70,230, + 7,8,8,8,0,0,56,68,130,130,130,130,68,56,6,8, + 8,7,0,0,248,68,68,68,120,64,64,224,7,9,9,8, + 0,255,56,68,130,130,130,178,76,56,6,7,8,8,8,0, + 0,248,68,68,72,120,68,68,198,5,8,8,6,0,0,120, + 136,128,224,24,8,136,240,7,8,8,8,0,0,254,146,146, + 16,16,16,16,56,7,8,8,8,0,0,238,68,68,68,68, + 68,68,56,7,8,8,8,0,0,238,68,68,68,40,40,16, + 16,11,8,16,12,0,0,238,224,68,64,68,64,42,128,42, + 128,42,128,17,0,17,0,6,8,8,7,0,0,204,72,72, + 48,48,72,72,204,7,8,8,8,0,0,198,68,40,40,16, + 16,16,56,5,8,8,6,0,0,248,136,144,32,32,72,136, + 248,2,9,9,3,0,255,192,128,128,128,128,128,128,128,192, + 4,8,8,5,0,0,128,128,64,64,32,32,16,16,2,9, + 9,3,0,255,192,64,64,64,64,64,64,64,192,5,6,6, + 6,0,2,32,32,80,80,136,136,6,1,1,6,0,254,252, + 2,2,2,3,0,6,128,64,5,5,5,6,0,0,96,144, + 112,144,248,5,8,8,5,255,0,192,64,64,112,72,72,72, + 112,4,5,5,5,0,0,112,144,128,144,96,5,8,8,6, + 0,0,48,16,16,112,144,144,144,120,4,5,5,5,0,0, + 96,144,240,128,112,4,8,8,4,0,0,48,80,64,224,64, + 64,64,224,5,7,7,6,0,254,120,144,160,64,120,136,112, + 6,8,8,6,255,0,192,64,64,112,72,72,72,236,3,7, + 7,4,0,0,64,0,192,64,64,64,224,2,9,9,4,0, + 254,64,0,192,64,64,64,64,64,128,6,8,8,7,0,0, + 192,64,64,88,80,112,72,236,3,8,8,4,0,0,192,64, + 64,64,64,64,64,224,9,5,10,10,0,0,182,0,73,0, + 73,0,73,0,237,128,6,5,5,7,0,0,176,72,72,72, + 236,4,5,5,5,0,0,96,144,144,144,96,4,7,7,5, + 0,254,96,144,144,144,224,128,192,5,7,7,6,0,254,104, + 144,144,144,112,16,56,4,5,5,5,0,0,208,96,64,64, + 224,4,5,5,5,0,0,112,128,96,16,224,3,7,7,3, + 0,0,128,128,192,128,128,128,96,5,5,5,6,0,0,144, + 144,144,144,104,6,5,5,6,0,0,220,136,80,80,32,8, + 5,5,8,0,0,147,170,170,68,68,5,5,5,6,0,0, + 216,80,32,80,216,6,7,7,6,0,254,220,136,80,80,32, + 32,192,4,5,5,5,0,0,240,32,64,128,240,3,9,9, + 4,0,255,32,64,64,64,128,64,64,64,32,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,3,9,9,4,0,255, + 128,64,64,64,32,64,64,64,128,6,2,2,7,0,2,100, + 152,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=14 x= 4 y= 8 dx=16 dy= 0 ascent=14 len=33 + Font Bounding box w=18 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR10[3813] U8G_SECTION(".progmem.u8g_font_ncenR10") = { + 0,18,24,254,250,11,2,24,5,38,32,255,253,14,253,11, + 253,0,0,0,4,0,1,1,11,11,3,1,0,128,128,128, + 128,128,128,128,128,0,128,128,3,4,4,5,1,7,160,160, + 160,160,8,11,11,8,0,0,18,18,18,127,36,36,36,254, + 72,72,72,6,14,14,8,1,254,32,120,164,172,160,224,120, + 28,20,212,148,120,16,16,11,11,22,12,0,0,51,0,77, + 0,138,0,138,0,148,0,100,192,9,32,10,32,18,32,18, + 64,33,128,11,11,22,13,1,0,28,0,50,0,34,0,52, + 0,24,0,57,224,76,128,135,0,131,32,197,192,120,192,1, + 4,4,3,1,7,128,128,128,128,4,13,13,5,0,254,16, + 32,64,64,128,128,128,128,128,64,64,32,16,4,13,13,6, + 1,254,128,64,32,32,16,16,16,16,16,32,32,64,128,5, + 5,5,7,1,6,32,168,112,168,32,7,7,7,9,1,0, + 16,16,16,254,16,16,16,2,4,4,4,0,254,192,64,64, + 128,4,1,1,5,0,3,240,1,2,2,4,1,0,128,128, + 4,11,11,4,0,0,16,16,16,32,32,32,64,64,64,128, + 128,6,11,11,8,1,0,120,204,132,132,132,132,132,132,132, + 204,120,5,11,11,8,1,0,32,224,32,32,32,32,32,32, + 32,32,248,6,11,11,8,1,0,120,140,196,4,4,8,16, + 32,68,132,252,6,11,11,8,1,0,120,140,196,4,8,56, + 12,4,196,140,120,7,11,11,8,0,0,12,28,20,36,68, + 68,132,254,4,4,14,6,11,11,8,1,0,252,128,128,184, + 204,132,4,4,196,140,120,6,11,11,8,1,0,56,68,140, + 128,184,204,132,132,132,204,120,6,11,11,8,1,0,252,132, + 136,8,16,16,16,32,32,32,32,6,11,11,8,1,0,120, + 204,132,196,104,120,140,132,132,204,120,6,11,11,8,1,0, + 120,204,132,132,132,204,116,4,196,136,112,1,7,7,4,1, + 0,128,128,0,0,0,128,128,2,9,9,4,0,254,64,64, + 0,0,0,192,64,64,128,8,7,7,10,1,0,3,12,48, + 192,48,12,3,7,4,4,9,1,2,254,0,0,254,8,7, + 7,10,1,0,192,48,12,3,12,48,192,5,11,11,6,0, + 0,112,152,136,8,16,32,32,32,0,32,32,12,11,22,13, + 0,0,31,224,32,16,70,144,137,144,144,144,145,16,145,16, + 147,48,141,192,64,16,63,224,11,11,22,10,255,0,4,0, + 4,0,10,0,10,0,10,0,17,0,17,0,63,128,32,128, + 32,128,251,224,9,11,22,10,0,0,254,0,35,0,33,0, + 33,0,34,0,63,0,33,128,32,128,32,128,33,128,255,0, + 9,11,22,11,1,0,30,128,97,128,64,128,192,128,128,0, + 128,0,128,0,192,128,64,128,97,0,30,0,10,11,22,11, + 0,0,255,0,32,128,32,192,32,64,32,64,32,64,32,64, + 32,64,32,192,32,128,255,0,9,11,22,10,0,0,255,128, + 32,128,32,128,36,0,36,0,60,0,36,0,36,0,32,128, + 32,128,255,128,9,11,22,10,0,0,255,128,32,128,32,128, + 36,0,36,0,60,0,36,0,36,0,32,0,32,0,248,0, + 10,11,22,11,0,0,30,128,97,128,64,128,192,128,128,0, + 128,0,135,192,192,128,64,128,97,128,30,128,11,11,22,12, + 0,0,251,224,32,128,32,128,32,128,32,128,63,128,32,128, + 32,128,32,128,32,128,251,224,5,11,11,6,0,0,248,32, + 32,32,32,32,32,32,32,32,248,7,11,11,7,0,0,62, + 8,8,8,8,8,8,200,136,136,112,11,11,22,11,0,0, + 251,192,33,0,34,0,36,0,40,0,56,0,52,0,38,0, + 35,0,33,128,251,224,9,11,22,10,0,0,248,0,32,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,128,32,128, + 255,128,15,11,22,16,0,0,240,30,48,24,40,40,40,40, + 44,72,36,72,38,136,34,136,35,136,33,8,249,62,12,11, + 22,13,0,0,225,240,48,64,56,64,40,64,44,64,38,64, + 35,64,33,64,33,192,32,192,248,64,10,11,22,11,0,0, + 30,0,97,128,64,128,192,192,128,64,128,64,128,64,192,192, + 64,128,97,128,30,0,9,11,22,10,0,0,255,0,33,128, + 32,128,32,128,33,0,62,0,32,0,32,0,32,0,32,0, + 248,0,11,13,26,11,0,254,30,0,97,128,64,128,192,192, + 128,64,128,64,128,64,220,192,98,128,99,128,31,0,1,32, + 0,192,11,11,22,11,0,0,255,0,33,128,32,128,32,128, + 33,0,62,0,35,0,33,0,33,32,33,160,248,192,7,11, + 11,8,0,0,122,198,130,130,224,56,14,130,130,198,188,9, + 11,22,10,0,0,255,128,136,128,136,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,62,0,12,11,22,13,0, + 0,249,240,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,48,128,31,0,11,11,22,10,255,0,251,224,32, + 128,48,128,17,0,17,0,25,0,10,0,10,0,10,0,4, + 0,4,0,17,11,33,16,255,0,251,239,128,32,131,0,48, + 194,0,17,194,0,17,68,0,25,100,0,11,40,0,10,40, + 0,14,56,0,6,16,0,4,16,0,12,11,22,13,0,0, + 253,240,48,64,24,128,13,0,5,0,6,0,11,0,9,0, + 17,128,32,192,251,240,11,11,22,10,255,0,251,224,96,128, + 49,0,17,0,26,0,10,0,4,0,4,0,4,0,4,0, + 31,0,8,11,11,9,0,0,255,131,134,12,8,24,48,32, + 97,193,255,3,13,13,4,0,254,224,128,128,128,128,128,128, + 128,128,128,128,128,224,6,11,11,8,1,0,128,128,64,64, + 32,32,16,16,8,8,4,3,13,13,4,0,254,224,32,32, + 32,32,32,32,32,32,32,32,32,224,5,6,6,7,1,5, + 32,32,80,80,136,136,7,1,1,7,0,254,254,3,3,3, + 5,1,8,128,64,32,7,7,7,8,0,0,56,76,4,60, + 196,140,118,7,11,11,7,255,0,192,64,64,64,92,102,66, + 66,66,102,92,6,7,7,7,0,0,120,204,128,128,128,196, + 120,7,11,11,8,0,0,12,4,4,4,116,204,132,132,132, + 204,118,6,7,7,7,0,0,120,204,132,252,128,196,120,5, + 11,11,5,0,0,56,72,64,64,240,64,64,64,64,64,224, + 7,10,10,8,0,253,118,204,132,204,120,128,124,198,130,124, + 8,11,11,9,0,0,192,64,64,64,92,102,66,66,66,66, + 231,3,10,10,4,0,0,64,64,0,192,64,64,64,64,64, + 224,3,13,13,4,255,253,32,32,0,96,32,32,32,32,32, + 32,32,160,192,8,11,11,9,0,0,192,64,64,64,94,72, + 80,120,76,70,239,3,11,11,4,0,0,192,64,64,64,64, + 64,64,64,64,64,224,13,7,14,14,0,0,220,224,103,48, + 66,16,66,16,66,16,66,16,231,56,8,7,7,9,0,0, + 220,102,66,66,66,66,231,6,7,7,7,0,0,120,204,132, + 132,132,204,120,7,10,10,8,0,253,220,102,66,66,66,102, + 92,64,64,224,7,10,10,7,0,253,116,204,132,132,132,204, + 116,4,4,14,6,7,7,7,0,0,220,100,64,64,64,64, + 224,5,7,7,6,0,0,120,136,192,112,24,136,240,5,9, + 9,5,0,0,64,64,240,64,64,64,64,72,48,8,7,7, + 9,0,0,231,66,66,66,66,102,59,7,7,7,8,0,0, + 238,68,68,40,40,16,16,11,7,14,12,0,0,238,224,68, + 64,68,64,42,128,42,128,17,0,17,0,7,7,7,8,0, + 0,206,100,56,16,56,76,230,7,10,10,8,0,253,238,68, + 68,40,40,16,16,32,160,192,6,7,7,7,0,0,252,140, + 152,48,100,196,252,3,13,13,4,0,254,32,64,64,64,64, + 64,128,64,64,64,64,64,32,1,11,11,9,4,0,128,128, + 128,128,128,128,128,128,128,128,128,3,13,13,5,1,254,128, + 64,64,64,64,64,32,64,64,64,64,64,128,7,2,2,9, + 1,3,114,140,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,4,0,1,1,11,11,4,1, + 253,128,128,0,128,128,128,128,128,128,128,128,6,11,11,8, + 1,254,4,4,120,204,144,144,160,228,120,128,128,7,11,11, + 8,0,0,60,98,70,64,32,252,16,16,96,178,206,7,7, + 7,8,0,2,186,68,130,130,130,68,186,9,11,22,8,0, + 0,227,128,65,0,34,0,34,0,20,0,20,0,62,0,8, + 0,62,0,8,0,28,0,1,11,11,9,4,0,128,128,128, + 128,0,0,128,128,128,128,128,5,13,13,7,1,254,120,136, + 128,192,112,152,136,200,112,24,8,136,240,4,2,2,6,1, + 8,144,144,12,11,22,14,1,0,15,0,48,192,79,32,89, + 32,144,16,144,16,152,144,79,32,64,32,48,192,15,0,5, + 7,7,6,0,4,96,144,112,144,248,0,248,6,5,5,7, + 0,1,36,72,144,72,36,7,4,4,9,0,1,254,2,2, + 2,4,1,1,5,0,3,240,12,11,22,14,1,0,15,0, + 48,192,94,32,73,32,137,16,142,16,139,16,89,160,64,32, + 48,192,15,0,5,1,1,5,0,8,248,4,4,4,6,1, + 7,96,144,144,96,7,7,7,9,1,0,16,16,254,16,16, + 0,254,4,6,6,5,0,5,96,144,32,64,144,240,4,6, + 6,5,0,5,96,144,32,16,144,96,3,3,3,5,1,8, + 32,64,128,8,10,10,9,0,253,231,66,66,66,66,102,123, + 64,96,64,7,13,13,9,1,254,126,212,212,212,212,116,20, + 20,20,20,20,20,62,2,2,2,4,1,3,192,192,3,4, + 4,5,0,253,64,64,32,192,3,6,6,5,1,5,64,192, + 64,64,64,224,4,7,7,5,0,4,96,144,144,144,96,0, + 240,6,5,5,7,0,1,144,72,36,72,144,10,11,22,12, + 0,0,65,0,193,0,66,0,66,0,68,0,228,128,9,128, + 18,128,20,128,39,192,32,128,10,11,22,12,0,0,65,0, + 193,0,66,0,66,0,68,0,229,128,10,64,16,128,17,0, + 34,64,35,192,10,11,22,12,0,0,97,0,145,0,34,0, + 18,0,148,0,100,128,9,128,18,128,20,128,39,192,32,128, + 5,11,11,6,0,253,32,32,0,32,32,32,64,128,136,200, + 112,11,14,28,10,255,0,8,0,4,0,0,0,4,0,4, + 0,10,0,10,0,10,0,17,0,17,0,63,128,32,128,32, + 128,251,224,11,14,28,10,255,0,2,0,4,0,0,0,4, + 0,4,0,10,0,10,0,10,0,17,0,17,0,63,128,32, + 128,32,128,251,224,11,14,28,10,255,0,4,0,10,0,17, + 0,4,0,4,0,10,0,10,0,10,0,17,0,17,0,63, + 128,32,128,32,128,251,224,11,14,28,10,255,0,12,128,19, + 0,0,0,4,0,4,0,10,0,10,0,10,0,17,0,17, + 0,63,128,32,128,32,128,251,224,11,13,26,10,255,0,17, + 0,17,0,4,0,4,0,10,0,10,0,10,0,17,0,17, + 0,63,128,32,128,32,128,251,224,11,14,28,10,255,0,12, + 0,18,0,12,0,4,0,4,0,10,0,10,0,10,0,17, + 0,17,0,63,128,32,128,32,128,251,224,14,11,22,15,0, + 0,15,252,5,4,9,4,9,32,17,32,17,224,63,32,33, + 32,65,4,65,4,227,252,9,14,28,11,1,253,30,128,97, + 128,64,128,192,128,128,0,128,0,128,0,192,128,64,128,97, + 0,30,0,8,0,4,0,24,0,9,14,28,10,0,0,16, + 0,8,0,0,0,255,128,32,128,32,128,36,0,36,0,60, + 0,36,0,36,0,32,128,32,128,255,128,9,14,28,10,0, + 0,4,0,8,0,0,0,255,128,32,128,32,128,36,0,36, + 0,60,0,36,0,36,0,32,128,32,128,255,128,9,14,28, + 10,0,0,12,0,18,0,0,0,255,128,32,128,32,128,36, + 0,36,0,60,0,36,0,36,0,32,128,32,128,255,128,9, + 14,28,10,0,0,18,0,18,0,0,0,255,128,32,128,32, + 128,36,0,36,0,60,0,36,0,36,0,32,128,32,128,255, + 128,5,14,14,6,0,0,64,32,0,248,32,32,32,32,32, + 32,32,32,32,248,5,14,14,6,0,0,16,32,0,248,32, + 32,32,32,32,32,32,32,32,248,5,14,14,6,0,0,48, + 72,0,248,32,32,32,32,32,32,32,32,32,248,5,14,14, + 6,0,0,80,80,0,248,32,32,32,32,32,32,32,32,32, + 248,10,11,22,11,0,0,255,0,32,128,32,192,32,64,32, + 64,248,64,32,64,32,64,32,192,32,128,255,0,12,14,28, + 13,0,0,12,128,19,0,0,0,225,240,48,64,48,64,40, + 64,44,64,38,64,35,64,33,64,32,192,32,64,248,64,10, + 14,28,11,0,0,8,0,4,0,0,0,30,0,97,128,64, + 128,192,192,128,64,128,64,128,64,192,192,64,128,97,128,30, + 0,10,14,28,11,0,0,2,0,4,0,0,0,30,0,97, + 128,64,128,192,192,128,64,128,64,128,64,192,192,64,128,97, + 128,30,0,10,14,28,11,0,0,12,0,18,0,0,0,30, + 0,97,128,64,128,192,192,128,64,128,64,128,64,192,192,64, + 128,97,128,30,0,10,14,28,11,0,0,25,0,38,0,0, + 0,30,0,97,128,64,128,192,192,128,64,128,64,128,64,192, + 192,64,128,97,128,30,0,10,14,28,11,0,0,18,0,18, + 0,0,0,30,0,97,128,64,128,192,192,128,64,128,64,128, + 64,192,192,64,128,97,128,30,0,7,7,7,9,1,0,130, + 68,40,16,40,68,130,11,11,22,11,255,0,15,32,48,192, + 32,192,97,96,66,32,68,32,72,32,112,96,32,64,112,192, + 143,0,12,14,28,13,0,0,8,0,4,0,0,0,249,240, + 32,64,32,64,32,64,32,64,32,64,32,64,32,64,32,64, + 48,128,31,0,12,14,28,13,0,0,1,0,2,0,0,0, + 249,240,32,64,32,64,32,64,32,64,32,64,32,64,32,64, + 32,64,48,128,31,0,12,14,28,13,0,0,6,0,9,0, + 0,0,249,240,32,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,48,128,31,0,12,14,28,13,0,0,9,0, + 9,0,0,0,249,240,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,48,128,31,0,11,14,28,10,255,0, + 2,0,4,0,0,0,251,224,96,128,49,0,17,0,26,0, + 10,0,4,0,4,0,4,0,4,0,31,0,9,11,22,10, + 0,0,248,0,32,0,63,0,33,128,32,128,32,128,33,0, + 62,0,32,0,32,0,248,0,7,11,11,8,0,0,56,100, + 68,76,88,68,66,66,66,86,220,7,11,11,8,0,0,32, + 16,8,0,56,76,4,60,196,140,118,7,11,11,8,0,0, + 8,16,32,0,56,76,4,60,196,140,118,7,11,11,8,0, + 0,16,40,68,0,56,76,4,60,196,140,118,7,10,10,8, + 0,0,50,76,0,56,76,4,60,196,140,118,7,10,10,8, + 0,0,72,72,0,56,76,4,60,196,140,118,7,11,11,8, + 0,0,48,72,48,0,56,76,4,60,196,140,118,11,7,14, + 12,0,0,59,192,78,96,4,32,63,224,196,0,142,32,115, + 192,6,10,10,7,0,253,120,204,128,128,128,196,120,32,16, + 96,6,11,11,7,0,0,64,32,16,0,120,204,132,252,128, + 196,120,6,11,11,7,0,0,8,16,32,0,120,204,132,252, + 128,196,120,6,11,11,7,0,0,16,40,68,0,120,204,132, + 252,128,196,120,6,10,10,7,0,0,72,72,0,120,204,132, + 252,128,196,120,3,11,11,4,0,0,128,64,32,0,192,64, + 64,64,64,64,224,3,11,11,4,0,0,32,64,128,0,192, + 64,64,64,64,64,224,5,11,11,4,255,0,32,80,136,0, + 96,32,32,32,32,32,112,4,10,10,4,255,0,144,144,0, + 96,32,32,32,32,32,112,7,11,11,7,255,0,76,48,208, + 8,60,102,66,66,66,102,60,8,10,10,9,0,0,50,76, + 0,220,102,66,66,66,66,231,6,11,11,7,0,0,64,32, + 16,0,120,204,132,132,132,204,120,6,11,11,7,0,0,16, + 32,64,0,120,204,132,132,132,204,120,6,11,11,7,0,0, + 32,80,136,0,120,204,132,132,132,204,120,6,10,10,7,0, + 0,100,152,0,120,204,132,132,132,204,120,6,10,10,7,0, + 0,72,72,0,120,204,132,132,132,204,120,7,7,7,9,1, + 0,16,16,0,254,0,16,16,6,9,9,7,0,255,8,120, + 220,148,164,164,204,120,64,8,11,11,9,0,0,32,16,8, + 0,231,66,66,66,66,102,59,8,11,11,9,0,0,2,4, + 8,0,231,66,66,66,66,102,59,8,11,11,9,0,0,8, + 20,34,0,231,66,66,66,66,102,59,8,10,10,9,0,0, + 36,36,0,231,66,66,66,66,102,59,7,14,14,8,0,253, + 4,8,16,0,238,68,68,40,40,16,16,32,160,192,7,14, + 14,8,0,253,192,64,64,64,92,102,66,66,66,102,92,64, + 64,224,7,13,13,8,0,253,72,72,0,238,68,68,40,40, + 16,16,32,160,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=14 x= 4 y= 8 dx=16 dy= 0 ascent=12 len=33 + Font Bounding box w=18 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR10r[1781] U8G_SECTION(".progmem.u8g_font_ncenR10r") = { + 0,18,24,254,250,11,2,24,5,38,32,127,253,12,253,11, + 253,0,0,0,4,0,1,1,11,11,3,1,0,128,128,128, + 128,128,128,128,128,0,128,128,3,4,4,5,1,7,160,160, + 160,160,8,11,11,8,0,0,18,18,18,127,36,36,36,254, + 72,72,72,6,14,14,8,1,254,32,120,164,172,160,224,120, + 28,20,212,148,120,16,16,11,11,22,12,0,0,51,0,77, + 0,138,0,138,0,148,0,100,192,9,32,10,32,18,32,18, + 64,33,128,11,11,22,13,1,0,28,0,50,0,34,0,52, + 0,24,0,57,224,76,128,135,0,131,32,197,192,120,192,1, + 4,4,3,1,7,128,128,128,128,4,13,13,5,0,254,16, + 32,64,64,128,128,128,128,128,64,64,32,16,4,13,13,6, + 1,254,128,64,32,32,16,16,16,16,16,32,32,64,128,5, + 5,5,7,1,6,32,168,112,168,32,7,7,7,9,1,0, + 16,16,16,254,16,16,16,2,4,4,4,0,254,192,64,64, + 128,4,1,1,5,0,3,240,1,2,2,4,1,0,128,128, + 4,11,11,4,0,0,16,16,16,32,32,32,64,64,64,128, + 128,6,11,11,8,1,0,120,204,132,132,132,132,132,132,132, + 204,120,5,11,11,8,1,0,32,224,32,32,32,32,32,32, + 32,32,248,6,11,11,8,1,0,120,140,196,4,4,8,16, + 32,68,132,252,6,11,11,8,1,0,120,140,196,4,8,56, + 12,4,196,140,120,7,11,11,8,0,0,12,28,20,36,68, + 68,132,254,4,4,14,6,11,11,8,1,0,252,128,128,184, + 204,132,4,4,196,140,120,6,11,11,8,1,0,56,68,140, + 128,184,204,132,132,132,204,120,6,11,11,8,1,0,252,132, + 136,8,16,16,16,32,32,32,32,6,11,11,8,1,0,120, + 204,132,196,104,120,140,132,132,204,120,6,11,11,8,1,0, + 120,204,132,132,132,204,116,4,196,136,112,1,7,7,4,1, + 0,128,128,0,0,0,128,128,2,9,9,4,0,254,64,64, + 0,0,0,192,64,64,128,8,7,7,10,1,0,3,12,48, + 192,48,12,3,7,4,4,9,1,2,254,0,0,254,8,7, + 7,10,1,0,192,48,12,3,12,48,192,5,11,11,6,0, + 0,112,152,136,8,16,32,32,32,0,32,32,12,11,22,13, + 0,0,31,224,32,16,70,144,137,144,144,144,145,16,145,16, + 147,48,141,192,64,16,63,224,11,11,22,10,255,0,4,0, + 4,0,10,0,10,0,10,0,17,0,17,0,63,128,32,128, + 32,128,251,224,9,11,22,10,0,0,254,0,35,0,33,0, + 33,0,34,0,63,0,33,128,32,128,32,128,33,128,255,0, + 9,11,22,11,1,0,30,128,97,128,64,128,192,128,128,0, + 128,0,128,0,192,128,64,128,97,0,30,0,10,11,22,11, + 0,0,255,0,32,128,32,192,32,64,32,64,32,64,32,64, + 32,64,32,192,32,128,255,0,9,11,22,10,0,0,255,128, + 32,128,32,128,36,0,36,0,60,0,36,0,36,0,32,128, + 32,128,255,128,9,11,22,10,0,0,255,128,32,128,32,128, + 36,0,36,0,60,0,36,0,36,0,32,0,32,0,248,0, + 10,11,22,11,0,0,30,128,97,128,64,128,192,128,128,0, + 128,0,135,192,192,128,64,128,97,128,30,128,11,11,22,12, + 0,0,251,224,32,128,32,128,32,128,32,128,63,128,32,128, + 32,128,32,128,32,128,251,224,5,11,11,6,0,0,248,32, + 32,32,32,32,32,32,32,32,248,7,11,11,7,0,0,62, + 8,8,8,8,8,8,200,136,136,112,11,11,22,11,0,0, + 251,192,33,0,34,0,36,0,40,0,56,0,52,0,38,0, + 35,0,33,128,251,224,9,11,22,10,0,0,248,0,32,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,128,32,128, + 255,128,15,11,22,16,0,0,240,30,48,24,40,40,40,40, + 44,72,36,72,38,136,34,136,35,136,33,8,249,62,12,11, + 22,13,0,0,225,240,48,64,56,64,40,64,44,64,38,64, + 35,64,33,64,33,192,32,192,248,64,10,11,22,11,0,0, + 30,0,97,128,64,128,192,192,128,64,128,64,128,64,192,192, + 64,128,97,128,30,0,9,11,22,10,0,0,255,0,33,128, + 32,128,32,128,33,0,62,0,32,0,32,0,32,0,32,0, + 248,0,11,13,26,11,0,254,30,0,97,128,64,128,192,192, + 128,64,128,64,128,64,220,192,98,128,99,128,31,0,1,32, + 0,192,11,11,22,11,0,0,255,0,33,128,32,128,32,128, + 33,0,62,0,35,0,33,0,33,32,33,160,248,192,7,11, + 11,8,0,0,122,198,130,130,224,56,14,130,130,198,188,9, + 11,22,10,0,0,255,128,136,128,136,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,62,0,12,11,22,13,0, + 0,249,240,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,48,128,31,0,11,11,22,10,255,0,251,224,32, + 128,48,128,17,0,17,0,25,0,10,0,10,0,10,0,4, + 0,4,0,17,11,33,16,255,0,251,239,128,32,131,0,48, + 194,0,17,194,0,17,68,0,25,100,0,11,40,0,10,40, + 0,14,56,0,6,16,0,4,16,0,12,11,22,13,0,0, + 253,240,48,64,24,128,13,0,5,0,6,0,11,0,9,0, + 17,128,32,192,251,240,11,11,22,10,255,0,251,224,96,128, + 49,0,17,0,26,0,10,0,4,0,4,0,4,0,4,0, + 31,0,8,11,11,9,0,0,255,131,134,12,8,24,48,32, + 97,193,255,3,13,13,4,0,254,224,128,128,128,128,128,128, + 128,128,128,128,128,224,6,11,11,8,1,0,128,128,64,64, + 32,32,16,16,8,8,4,3,13,13,4,0,254,224,32,32, + 32,32,32,32,32,32,32,32,32,224,5,6,6,7,1,5, + 32,32,80,80,136,136,7,1,1,7,0,254,254,3,3,3, + 5,1,8,128,64,32,7,7,7,8,0,0,56,76,4,60, + 196,140,118,7,11,11,7,255,0,192,64,64,64,92,102,66, + 66,66,102,92,6,7,7,7,0,0,120,204,128,128,128,196, + 120,7,11,11,8,0,0,12,4,4,4,116,204,132,132,132, + 204,118,6,7,7,7,0,0,120,204,132,252,128,196,120,5, + 11,11,5,0,0,56,72,64,64,240,64,64,64,64,64,224, + 7,10,10,8,0,253,118,204,132,204,120,128,124,198,130,124, + 8,11,11,9,0,0,192,64,64,64,92,102,66,66,66,66, + 231,3,10,10,4,0,0,64,64,0,192,64,64,64,64,64, + 224,3,13,13,4,255,253,32,32,0,96,32,32,32,32,32, + 32,32,160,192,8,11,11,9,0,0,192,64,64,64,94,72, + 80,120,76,70,239,3,11,11,4,0,0,192,64,64,64,64, + 64,64,64,64,64,224,13,7,14,14,0,0,220,224,103,48, + 66,16,66,16,66,16,66,16,231,56,8,7,7,9,0,0, + 220,102,66,66,66,66,231,6,7,7,7,0,0,120,204,132, + 132,132,204,120,7,10,10,8,0,253,220,102,66,66,66,102, + 92,64,64,224,7,10,10,7,0,253,116,204,132,132,132,204, + 116,4,4,14,6,7,7,7,0,0,220,100,64,64,64,64, + 224,5,7,7,6,0,0,120,136,192,112,24,136,240,5,9, + 9,5,0,0,64,64,240,64,64,64,64,72,48,8,7,7, + 9,0,0,231,66,66,66,66,102,59,7,7,7,8,0,0, + 238,68,68,40,40,16,16,11,7,14,12,0,0,238,224,68, + 64,68,64,42,128,42,128,17,0,17,0,7,7,7,8,0, + 0,206,100,56,16,56,76,230,7,10,10,8,0,253,238,68, + 68,40,40,16,16,32,160,192,6,7,7,7,0,0,252,140, + 152,48,100,196,252,3,13,13,4,0,254,32,64,64,64,64, + 64,128,64,64,64,64,64,32,1,11,11,9,4,0,128,128, + 128,128,128,128,128,128,128,128,128,3,13,13,5,1,254,128, + 64,64,64,64,64,32,64,64,64,64,64,128,7,2,2,9, + 1,3,114,140,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--17-120-100-100-P-91-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y= 9 dx=17 dy= 0 ascent=16 len=32 + Font Bounding box w=21 h=26 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =16 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR12[4247] U8G_SECTION(".progmem.u8g_font_ncenR12") = { + 0,21,26,253,250,12,2,59,5,140,32,255,253,16,253,12, + 253,0,0,0,4,1,1,2,12,12,5,1,0,192,192,192, + 192,192,128,128,128,128,0,192,192,4,4,4,6,1,8,144, + 144,144,144,8,12,12,9,0,0,18,18,18,18,127,36,36, + 254,72,72,72,72,7,15,15,9,1,254,16,16,60,82,150, + 150,240,124,30,210,210,148,120,16,16,12,12,24,14,1,0, + 56,128,103,128,69,0,197,0,138,0,138,224,117,144,5,16, + 11,16,10,32,18,32,17,192,12,12,24,13,0,0,30,0, + 51,0,49,0,51,0,26,0,28,240,44,96,102,64,198,128, + 195,144,231,144,124,224,1,4,4,3,1,8,128,128,128,128, + 4,14,14,6,1,254,16,32,64,64,128,128,128,128,128,128, + 64,64,32,16,4,14,14,6,0,254,128,64,32,32,16,16, + 16,16,16,16,32,32,64,128,7,7,7,8,0,5,16,84, + 214,56,214,84,16,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,2,5,5,4,1,253,192,192,64,64,128,4, + 1,1,5,0,3,240,2,2,2,4,1,0,192,192,5,12, + 12,5,0,0,8,8,16,16,16,32,32,64,64,64,128,128, + 8,12,12,9,0,0,60,102,66,195,195,195,195,195,195,66, + 102,60,6,12,12,9,1,0,16,240,48,48,48,48,48,48, + 48,48,48,252,7,12,12,9,1,0,56,68,134,198,198,12, + 8,16,34,66,254,254,7,12,12,9,1,0,120,140,198,198, + 12,56,12,6,198,198,140,120,8,12,12,9,0,0,4,12, + 28,44,44,76,76,140,255,12,12,63,7,12,12,9,1,0, + 126,120,64,64,120,204,134,6,198,198,140,120,8,12,12,9, + 0,0,60,102,70,192,192,252,230,195,195,195,102,60,7,12, + 12,9,1,0,254,254,132,132,8,8,16,16,16,48,48,48, + 8,12,12,9,0,0,60,102,66,98,118,60,110,199,195,195, + 102,60,8,12,12,9,0,0,60,102,195,195,195,103,63,3, + 3,98,102,56,2,8,8,4,1,0,192,192,0,0,0,0, + 192,192,2,11,11,4,1,253,192,192,0,0,0,0,192,192, + 64,64,128,8,8,8,10,1,0,3,12,48,192,192,48,12, + 3,8,4,4,10,1,2,255,0,0,255,8,8,8,10,0, + 0,192,48,12,3,3,12,48,192,7,12,12,7,0,0,56, + 76,230,70,6,12,24,16,16,0,48,48,13,13,26,12,255, + 255,7,128,24,96,32,16,70,208,77,144,152,144,153,144,145, + 32,155,32,76,200,64,16,48,96,15,128,11,12,24,12,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,11,12,24,12,0,0,255, + 128,49,192,48,192,48,192,49,128,63,192,48,224,48,96,48, + 96,48,96,48,192,255,128,10,12,24,12,1,0,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,12,12,24,13,0,0,255,0,49,192,48, + 96,48,96,48,48,48,48,48,48,48,48,48,96,48,96,49, + 192,255,0,10,12,24,12,0,0,255,192,48,192,48,64,50, + 64,50,0,62,0,54,0,50,0,50,64,48,64,48,192,255, + 192,10,12,24,11,0,0,255,192,48,192,48,64,50,64,50, + 0,62,0,54,0,50,0,50,0,48,0,48,0,252,0,11, + 12,24,13,1,0,31,64,112,192,96,64,224,64,192,64,192, + 0,195,224,192,192,224,192,96,192,113,192,30,64,13,12,24, + 14,0,0,253,248,48,96,48,96,48,96,48,96,63,224,48, + 96,48,96,48,96,48,96,48,96,253,248,6,12,12,7,0, + 0,252,48,48,48,48,48,48,48,48,48,48,252,9,12,24, + 9,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,70,0,230,0,198,0,132,0,120,0,12,12,24,13,0, + 0,253,240,48,192,48,128,49,0,50,0,54,0,59,0,51, + 128,49,128,48,192,48,224,253,240,10,12,24,11,0,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,64,48, + 64,48,64,48,192,255,192,15,12,24,16,0,0,248,62,56, + 56,56,56,44,88,44,88,46,88,38,152,38,152,35,152,35, + 24,35,24,249,62,13,12,24,13,0,0,240,248,56,32,60, + 32,44,32,46,32,39,32,35,160,33,160,32,224,32,224,32, + 96,248,32,11,12,24,13,1,0,14,0,49,128,96,192,96, + 192,192,96,192,96,192,96,192,96,96,192,96,192,49,128,14, + 0,11,12,24,11,0,0,255,128,48,192,48,96,48,96,48, + 96,48,192,63,128,48,0,48,0,48,0,48,0,252,0,11, + 15,30,13,1,253,14,0,49,128,96,192,96,192,192,96,192, + 96,192,96,204,96,82,64,115,192,51,128,15,0,3,64,3, + 64,1,128,12,12,24,12,0,0,255,0,48,192,48,96,48, + 96,48,192,63,0,51,128,48,192,48,192,48,208,48,208,252, + 96,8,12,12,10,1,0,61,99,193,193,224,124,62,135,131, + 131,198,188,10,12,24,11,0,0,255,192,204,192,140,64,140, + 64,140,64,12,0,12,0,12,0,12,0,12,0,12,0,63, + 0,13,12,24,13,0,0,252,248,48,32,48,32,48,32,48, + 32,48,32,48,32,48,32,48,32,48,32,24,64,15,128,11, + 12,24,12,0,0,248,224,112,64,48,64,48,128,24,128,25, + 0,25,0,13,0,14,0,14,0,4,0,4,0,15,12,24, + 16,0,0,247,206,99,4,99,4,49,136,49,136,57,200,26, + 208,26,208,10,80,12,96,4,32,4,32,11,12,24,11,0, + 0,241,224,96,192,48,128,25,0,30,0,12,0,6,0,15, + 0,19,0,33,128,96,192,241,224,12,12,24,12,0,0,252, + 240,48,64,24,128,24,128,13,0,13,0,6,0,6,0,6, + 0,6,0,6,0,31,128,9,12,24,10,0,0,127,128,97, + 128,67,0,67,0,6,0,12,0,12,0,24,128,48,128,48, + 128,97,128,255,128,3,14,14,6,1,254,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,12,12,10,2,0,128, + 128,64,64,32,32,16,16,8,8,4,4,3,14,14,6,1, + 254,224,32,32,32,32,32,32,32,32,32,32,32,32,224,8, + 7,7,10,1,5,24,24,60,36,102,66,195,8,1,1,8, + 0,254,255,3,3,3,5,0,9,128,64,32,7,8,8,9, + 1,0,120,204,204,28,108,204,204,118,8,12,12,9,0,0, + 224,96,96,96,124,102,99,99,99,99,102,92,6,8,8,7, + 0,0,56,108,204,192,192,192,108,56,8,12,12,10,1,0, + 14,6,6,6,62,102,198,198,198,198,102,59,7,8,8,8, + 0,0,56,68,198,254,192,192,102,60,6,12,12,6,0,0, + 56,108,96,96,248,96,96,96,96,96,96,248,9,11,22,9, + 0,253,61,128,102,128,102,0,102,0,102,0,60,0,64,0, + 126,0,195,0,195,0,126,0,9,12,24,10,0,0,224,0, + 96,0,96,0,96,0,110,0,119,0,99,0,99,0,99,0, + 99,0,99,0,247,128,4,12,12,5,0,0,96,96,0,0, + 224,96,96,96,96,96,96,240,4,15,15,5,255,253,48,48, + 0,0,112,48,48,48,48,48,48,48,48,176,224,9,12,24, + 10,0,0,224,0,96,0,96,0,96,0,111,128,102,0,108, + 0,120,0,124,0,102,0,99,0,247,128,4,12,12,5,0, + 0,224,96,96,96,96,96,96,96,96,96,96,240,14,8,16, + 15,0,0,238,112,115,152,99,24,99,24,99,24,99,24,99, + 24,247,188,9,8,16,10,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,7,8,8,8,0,0,56, + 108,198,198,198,198,108,56,8,11,11,9,0,253,220,102,99, + 99,99,99,102,124,96,96,240,8,11,11,9,0,253,57,102, + 198,198,198,198,102,62,6,6,15,7,8,8,7,0,0,236, + 118,102,96,96,96,96,240,6,8,8,8,0,0,116,204,196, + 112,56,140,204,184,6,11,11,7,0,0,32,32,96,248,96, + 96,96,96,100,100,56,9,8,16,10,0,0,231,0,99,0, + 99,0,99,0,99,0,99,0,99,0,61,128,9,8,16,9, + 0,0,247,128,99,0,50,0,54,0,28,0,28,0,8,0, + 8,0,13,8,16,13,0,0,239,120,102,48,51,32,51,96, + 29,192,29,192,8,128,8,128,8,8,8,9,0,0,247,98, + 52,56,28,44,70,239,8,11,11,9,0,253,247,98,54,52, + 28,28,8,8,24,208,224,6,8,8,8,1,0,252,140,152, + 48,48,100,196,252,3,14,14,6,1,254,32,64,64,64,64, + 64,128,64,64,64,64,64,64,32,1,12,12,10,4,0,128, + 128,128,128,128,128,128,128,128,128,128,128,3,14,14,6,1, + 254,128,64,64,64,64,64,32,64,64,64,64,64,64,128,8, + 2,2,10,1,3,115,206,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,1,1,2,12, + 12,5,1,253,192,192,0,64,64,64,64,192,192,192,192,192, + 6,12,12,9,1,254,4,4,56,76,204,144,144,228,100,56, + 64,64,9,12,24,9,0,0,30,0,49,0,35,0,35,0, + 48,0,16,0,254,0,16,0,16,0,112,128,191,0,78,0, + 7,8,8,9,1,2,186,108,198,130,130,198,108,186,9,12, + 24,9,0,0,243,128,97,0,34,0,50,0,20,0,20,0, + 62,0,8,0,62,0,8,0,8,0,62,0,1,12,12,10, + 4,0,128,128,128,128,128,0,0,128,128,128,128,128,6,15, + 15,8,1,253,56,72,64,96,48,88,140,132,196,104,48,24, + 8,72,112,5,2,2,5,0,9,216,216,12,12,24,12,0, + 0,31,128,48,192,71,32,205,176,152,144,144,16,144,16,152, + 144,205,176,71,32,48,192,31,128,5,7,7,6,0,5,224, + 144,112,144,232,0,240,6,5,5,7,0,1,36,72,216,72, + 36,8,5,5,10,1,1,255,1,1,1,1,4,1,1,5, + 0,3,240,12,12,24,12,0,0,31,128,48,192,95,32,201, + 176,137,144,143,16,137,16,137,144,200,176,92,224,48,192,31, + 128,5,1,1,5,0,9,248,5,5,5,7,1,7,112,136, + 136,136,112,7,9,9,10,1,0,16,16,16,254,16,16,16, + 0,254,5,7,7,6,0,5,112,216,136,16,32,72,248,5, + 7,7,6,0,5,112,216,136,48,136,216,112,3,3,3,5, + 0,9,32,96,128,10,11,22,10,0,253,231,0,99,0,99, + 0,99,0,99,0,99,0,99,0,125,192,96,0,96,0,96, + 0,8,15,15,10,0,253,127,234,202,202,202,234,122,10,10, + 10,10,10,10,10,31,2,2,2,5,1,3,192,192,3,4, + 4,5,1,253,64,64,32,192,3,7,7,6,1,5,64,192, + 64,64,64,64,224,4,7,7,5,0,5,96,144,144,144,96, + 0,240,6,5,5,7,0,1,144,72,108,72,144,11,12,24, + 14,1,0,64,64,192,192,65,128,65,0,66,0,70,64,236, + 192,9,64,18,64,51,224,96,64,64,224,11,12,24,13,1, + 0,64,128,193,128,67,0,66,0,68,0,77,192,251,96,18, + 32,32,192,97,0,195,32,131,224,13,12,24,14,0,0,112, + 24,216,48,136,96,48,192,136,128,217,144,115,48,6,80,4, + 144,12,248,24,16,48,56,7,12,12,7,0,253,24,24,0, + 16,16,48,96,192,196,206,100,56,11,16,32,12,0,0,24, + 0,12,0,2,0,0,0,4,0,4,0,14,0,14,0,22, + 0,19,0,19,0,63,128,33,128,65,128,64,192,243,224,11, + 16,32,12,0,0,3,0,6,0,8,0,0,0,4,0,4, + 0,14,0,14,0,22,0,19,0,19,0,63,128,33,128,65, + 128,64,192,243,224,11,16,32,12,0,0,4,0,14,0,17, + 0,0,0,4,0,4,0,14,0,14,0,22,0,19,0,19, + 0,63,128,33,128,65,128,64,192,243,224,11,15,30,12,0, + 0,29,0,46,0,0,0,4,0,4,0,14,0,14,0,22, + 0,19,0,19,0,63,128,33,128,65,128,64,192,243,224,11, + 15,30,12,0,0,18,0,18,0,0,0,4,0,4,0,14, + 0,14,0,22,0,19,0,19,0,63,128,33,128,65,128,64, + 192,243,224,11,16,32,12,0,0,12,0,18,0,12,0,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,16,12,24,17,0,0,15, + 255,2,195,2,193,4,193,4,200,8,248,8,216,31,201,16, + 193,32,193,32,195,251,255,10,15,30,12,1,253,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,8,0,4,0,24,0,10,16,32,12,0, + 0,24,0,12,0,2,0,0,0,255,192,48,192,48,64,48, + 64,50,0,62,0,54,0,50,0,48,64,48,64,48,192,255, + 192,10,16,32,12,0,0,3,0,6,0,8,0,0,0,255, + 192,48,192,48,64,48,64,50,0,62,0,54,0,50,0,48, + 64,48,64,48,192,255,192,10,16,32,12,0,0,4,0,14, + 0,17,0,0,0,255,192,48,192,48,64,48,64,50,0,62, + 0,54,0,50,0,48,64,48,64,48,192,255,192,10,15,30, + 12,0,0,17,0,17,0,0,0,255,192,48,192,48,64,48, + 64,50,0,62,0,54,0,50,0,48,64,48,64,48,192,255, + 192,6,16,16,7,0,0,192,96,16,0,252,48,48,48,48, + 48,48,48,48,48,48,252,6,16,16,7,0,0,12,24,32, + 0,252,48,48,48,48,48,48,48,48,48,48,252,6,16,16, + 7,0,0,32,112,136,0,252,48,48,48,48,48,48,48,48, + 48,48,252,6,15,15,7,0,0,72,72,0,252,48,48,48, + 48,48,48,48,48,48,48,252,12,12,24,13,0,0,255,0, + 49,192,48,96,48,96,48,48,124,48,48,48,48,48,48,96, + 48,96,49,192,255,0,13,15,30,13,0,0,14,64,19,128, + 0,0,240,248,56,32,60,32,44,32,46,32,39,32,35,160, + 33,160,32,224,32,224,32,96,248,32,11,16,32,13,1,0, + 24,0,12,0,2,0,0,0,14,0,49,128,96,192,96,192, + 192,96,192,96,192,96,192,96,96,192,96,192,49,128,14,0, + 11,16,32,13,1,0,1,128,3,0,4,0,0,0,14,0, + 49,128,96,192,96,192,192,96,192,96,192,96,192,96,96,192, + 96,192,49,128,14,0,11,16,32,13,1,0,4,0,14,0, + 17,0,0,0,14,0,49,128,96,192,96,192,192,96,192,96, + 192,96,192,96,96,192,96,192,49,128,14,0,11,15,30,13, + 1,0,14,128,23,0,0,0,14,0,49,128,96,192,96,192, + 192,96,192,96,192,96,192,96,96,192,96,192,49,128,14,0, + 11,15,30,13,1,0,17,0,17,0,0,0,14,0,49,128, + 96,192,96,192,192,96,192,96,192,96,192,96,96,192,96,192, + 49,128,14,0,8,8,8,10,1,0,129,66,36,24,24,36, + 66,129,11,14,28,13,1,255,0,32,14,64,49,128,97,192, + 97,64,194,96,196,96,196,96,200,96,80,192,112,192,49,128, + 78,0,128,0,13,16,32,13,0,0,12,0,6,0,1,0, + 0,0,252,248,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,48,32,48,32,24,64,15,128,13,16,32,13,0,0, + 0,192,1,128,2,0,0,0,252,248,48,32,48,32,48,32, + 48,32,48,32,48,32,48,32,48,32,48,32,24,64,15,128, + 13,16,32,13,0,0,2,0,7,0,8,128,0,0,252,248, + 48,32,48,32,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,24,64,15,128,13,15,30,13,0,0,8,128,8,128, + 0,0,252,248,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,48,32,48,32,24,64,15,128,12,16,32,12,0,0, + 1,128,3,0,4,0,0,0,252,240,48,64,24,128,24,128, + 13,0,13,0,6,0,6,0,6,0,6,0,6,0,31,128, + 11,12,24,11,0,0,252,0,48,0,48,0,63,128,48,192, + 48,96,48,96,48,192,63,128,48,0,48,0,252,0,8,12, + 12,10,1,0,60,102,99,99,102,124,102,99,99,99,118,236, + 7,12,12,9,1,0,64,96,16,0,120,204,204,28,108,204, + 204,118,7,12,12,9,1,0,4,12,16,0,120,204,204,28, + 108,204,204,118,7,12,12,9,1,0,16,56,68,0,120,204, + 204,28,108,204,204,118,7,11,11,9,1,0,52,88,0,120, + 204,204,28,108,204,204,118,7,11,11,9,1,0,72,72,0, + 120,204,204,28,108,204,204,118,7,13,13,9,1,0,48,72, + 72,48,0,120,204,204,28,108,204,204,118,12,8,16,13,0, + 0,121,192,206,32,198,48,31,240,102,0,198,16,207,32,121, + 192,6,11,11,7,0,253,56,108,204,192,192,196,108,56,32, + 16,96,7,12,12,8,0,0,32,48,8,0,56,68,198,254, + 192,192,102,60,7,12,12,8,0,0,4,12,16,0,56,68, + 198,254,192,192,102,60,7,12,12,8,0,0,16,56,68,0, + 56,68,198,254,192,192,102,60,7,11,11,8,0,0,36,36, + 0,56,68,198,254,192,192,102,60,4,12,12,5,0,0,128, + 192,32,0,224,96,96,96,96,96,96,240,4,12,12,5,0, + 0,16,48,64,0,224,96,96,96,96,96,96,240,5,12,12, + 5,255,0,32,112,136,0,112,48,48,48,48,48,48,120,4, + 11,11,5,0,0,144,144,0,224,96,96,96,96,96,96,240, + 7,13,13,8,0,0,64,38,24,104,12,60,110,198,198,198, + 198,108,56,9,11,22,10,0,0,26,0,44,0,0,0,238, + 0,115,0,99,0,99,0,99,0,99,0,99,0,247,128,7, + 12,12,8,0,0,64,96,16,0,56,108,198,198,198,198,108, + 56,7,12,12,8,0,0,4,12,16,0,56,108,198,198,198, + 198,108,56,7,12,12,8,0,0,16,56,68,0,56,108,198, + 198,198,198,108,56,7,11,11,8,0,0,52,88,0,56,108, + 198,198,198,198,108,56,7,11,11,8,0,0,72,72,0,56, + 108,198,198,198,198,108,56,8,7,7,10,1,1,24,24,0, + 255,0,24,24,7,10,10,8,0,255,2,60,100,206,214,214, + 230,76,120,128,9,12,24,10,0,0,32,0,48,0,8,0, + 0,0,231,0,99,0,99,0,99,0,99,0,99,0,99,0, + 61,128,9,12,24,10,0,0,2,0,6,0,8,0,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,61,128, + 9,12,24,10,0,0,8,0,28,0,34,0,0,0,231,0, + 99,0,99,0,99,0,99,0,99,0,99,0,61,128,9,11, + 22,10,0,0,36,0,36,0,0,0,231,0,99,0,99,0, + 99,0,99,0,99,0,99,0,61,128,8,15,15,9,0,253, + 2,6,8,0,247,98,54,52,28,24,8,24,16,208,224,8, + 14,14,9,0,253,224,96,96,124,102,99,99,99,99,102,124, + 96,96,240,8,14,14,9,0,253,36,36,0,247,98,54,52, + 28,24,8,24,16,208,224}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--17-120-100-100-P-91-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=15 h=15 x= 4 y= 9 dx=16 dy= 0 ascent=13 len=30 + Font Bounding box w=21 h=26 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =13 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR12r[1976] U8G_SECTION(".progmem.u8g_font_ncenR12r") = { + 0,21,26,253,250,12,2,59,5,140,32,127,253,13,253,12, + 253,0,0,0,4,1,1,2,12,12,5,1,0,192,192,192, + 192,192,128,128,128,128,0,192,192,4,4,4,6,1,8,144, + 144,144,144,8,12,12,9,0,0,18,18,18,18,127,36,36, + 254,72,72,72,72,7,15,15,9,1,254,16,16,60,82,150, + 150,240,124,30,210,210,148,120,16,16,12,12,24,14,1,0, + 56,128,103,128,69,0,197,0,138,0,138,224,117,144,5,16, + 11,16,10,32,18,32,17,192,12,12,24,13,0,0,30,0, + 51,0,49,0,51,0,26,0,28,240,44,96,102,64,198,128, + 195,144,231,144,124,224,1,4,4,3,1,8,128,128,128,128, + 4,14,14,6,1,254,16,32,64,64,128,128,128,128,128,128, + 64,64,32,16,4,14,14,6,0,254,128,64,32,32,16,16, + 16,16,16,16,32,32,64,128,7,7,7,8,0,5,16,84, + 214,56,214,84,16,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,2,5,5,4,1,253,192,192,64,64,128,4, + 1,1,5,0,3,240,2,2,2,4,1,0,192,192,5,12, + 12,5,0,0,8,8,16,16,16,32,32,64,64,64,128,128, + 8,12,12,9,0,0,60,102,66,195,195,195,195,195,195,66, + 102,60,6,12,12,9,1,0,16,240,48,48,48,48,48,48, + 48,48,48,252,7,12,12,9,1,0,56,68,134,198,198,12, + 8,16,34,66,254,254,7,12,12,9,1,0,120,140,198,198, + 12,56,12,6,198,198,140,120,8,12,12,9,0,0,4,12, + 28,44,44,76,76,140,255,12,12,63,7,12,12,9,1,0, + 126,120,64,64,120,204,134,6,198,198,140,120,8,12,12,9, + 0,0,60,102,70,192,192,252,230,195,195,195,102,60,7,12, + 12,9,1,0,254,254,132,132,8,8,16,16,16,48,48,48, + 8,12,12,9,0,0,60,102,66,98,118,60,110,199,195,195, + 102,60,8,12,12,9,0,0,60,102,195,195,195,103,63,3, + 3,98,102,56,2,8,8,4,1,0,192,192,0,0,0,0, + 192,192,2,11,11,4,1,253,192,192,0,0,0,0,192,192, + 64,64,128,8,8,8,10,1,0,3,12,48,192,192,48,12, + 3,8,4,4,10,1,2,255,0,0,255,8,8,8,10,0, + 0,192,48,12,3,3,12,48,192,7,12,12,7,0,0,56, + 76,230,70,6,12,24,16,16,0,48,48,13,13,26,12,255, + 255,7,128,24,96,32,16,70,208,77,144,152,144,153,144,145, + 32,155,32,76,200,64,16,48,96,15,128,11,12,24,12,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,11,12,24,12,0,0,255, + 128,49,192,48,192,48,192,49,128,63,192,48,224,48,96,48, + 96,48,96,48,192,255,128,10,12,24,12,1,0,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,12,12,24,13,0,0,255,0,49,192,48, + 96,48,96,48,48,48,48,48,48,48,48,48,96,48,96,49, + 192,255,0,10,12,24,12,0,0,255,192,48,192,48,64,50, + 64,50,0,62,0,54,0,50,0,50,64,48,64,48,192,255, + 192,10,12,24,11,0,0,255,192,48,192,48,64,50,64,50, + 0,62,0,54,0,50,0,50,0,48,0,48,0,252,0,11, + 12,24,13,1,0,31,64,112,192,96,64,224,64,192,64,192, + 0,195,224,192,192,224,192,96,192,113,192,30,64,13,12,24, + 14,0,0,253,248,48,96,48,96,48,96,48,96,63,224,48, + 96,48,96,48,96,48,96,48,96,253,248,6,12,12,7,0, + 0,252,48,48,48,48,48,48,48,48,48,48,252,9,12,24, + 9,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,70,0,230,0,198,0,132,0,120,0,12,12,24,13,0, + 0,253,240,48,192,48,128,49,0,50,0,54,0,59,0,51, + 128,49,128,48,192,48,224,253,240,10,12,24,11,0,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,64,48, + 64,48,64,48,192,255,192,15,12,24,16,0,0,248,62,56, + 56,56,56,44,88,44,88,46,88,38,152,38,152,35,152,35, + 24,35,24,249,62,13,12,24,13,0,0,240,248,56,32,60, + 32,44,32,46,32,39,32,35,160,33,160,32,224,32,224,32, + 96,248,32,11,12,24,13,1,0,14,0,49,128,96,192,96, + 192,192,96,192,96,192,96,192,96,96,192,96,192,49,128,14, + 0,11,12,24,11,0,0,255,128,48,192,48,96,48,96,48, + 96,48,192,63,128,48,0,48,0,48,0,48,0,252,0,11, + 15,30,13,1,253,14,0,49,128,96,192,96,192,192,96,192, + 96,192,96,204,96,82,64,115,192,51,128,15,0,3,64,3, + 64,1,128,12,12,24,12,0,0,255,0,48,192,48,96,48, + 96,48,192,63,0,51,128,48,192,48,192,48,208,48,208,252, + 96,8,12,12,10,1,0,61,99,193,193,224,124,62,135,131, + 131,198,188,10,12,24,11,0,0,255,192,204,192,140,64,140, + 64,140,64,12,0,12,0,12,0,12,0,12,0,12,0,63, + 0,13,12,24,13,0,0,252,248,48,32,48,32,48,32,48, + 32,48,32,48,32,48,32,48,32,48,32,24,64,15,128,11, + 12,24,12,0,0,248,224,112,64,48,64,48,128,24,128,25, + 0,25,0,13,0,14,0,14,0,4,0,4,0,15,12,24, + 16,0,0,247,206,99,4,99,4,49,136,49,136,57,200,26, + 208,26,208,10,80,12,96,4,32,4,32,11,12,24,11,0, + 0,241,224,96,192,48,128,25,0,30,0,12,0,6,0,15, + 0,19,0,33,128,96,192,241,224,12,12,24,12,0,0,252, + 240,48,64,24,128,24,128,13,0,13,0,6,0,6,0,6, + 0,6,0,6,0,31,128,9,12,24,10,0,0,127,128,97, + 128,67,0,67,0,6,0,12,0,12,0,24,128,48,128,48, + 128,97,128,255,128,3,14,14,6,1,254,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,12,12,10,2,0,128, + 128,64,64,32,32,16,16,8,8,4,4,3,14,14,6,1, + 254,224,32,32,32,32,32,32,32,32,32,32,32,32,224,8, + 7,7,10,1,5,24,24,60,36,102,66,195,8,1,1,8, + 0,254,255,3,3,3,5,0,9,128,64,32,7,8,8,9, + 1,0,120,204,204,28,108,204,204,118,8,12,12,9,0,0, + 224,96,96,96,124,102,99,99,99,99,102,92,6,8,8,7, + 0,0,56,108,204,192,192,192,108,56,8,12,12,10,1,0, + 14,6,6,6,62,102,198,198,198,198,102,59,7,8,8,8, + 0,0,56,68,198,254,192,192,102,60,6,12,12,6,0,0, + 56,108,96,96,248,96,96,96,96,96,96,248,9,11,22,9, + 0,253,61,128,102,128,102,0,102,0,102,0,60,0,64,0, + 126,0,195,0,195,0,126,0,9,12,24,10,0,0,224,0, + 96,0,96,0,96,0,110,0,119,0,99,0,99,0,99,0, + 99,0,99,0,247,128,4,12,12,5,0,0,96,96,0,0, + 224,96,96,96,96,96,96,240,4,15,15,5,255,253,48,48, + 0,0,112,48,48,48,48,48,48,48,48,176,224,9,12,24, + 10,0,0,224,0,96,0,96,0,96,0,111,128,102,0,108, + 0,120,0,124,0,102,0,99,0,247,128,4,12,12,5,0, + 0,224,96,96,96,96,96,96,96,96,96,96,240,14,8,16, + 15,0,0,238,112,115,152,99,24,99,24,99,24,99,24,99, + 24,247,188,9,8,16,10,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,7,8,8,8,0,0,56, + 108,198,198,198,198,108,56,8,11,11,9,0,253,220,102,99, + 99,99,99,102,124,96,96,240,8,11,11,9,0,253,57,102, + 198,198,198,198,102,62,6,6,15,7,8,8,7,0,0,236, + 118,102,96,96,96,96,240,6,8,8,8,0,0,116,204,196, + 112,56,140,204,184,6,11,11,7,0,0,32,32,96,248,96, + 96,96,96,100,100,56,9,8,16,10,0,0,231,0,99,0, + 99,0,99,0,99,0,99,0,99,0,61,128,9,8,16,9, + 0,0,247,128,99,0,50,0,54,0,28,0,28,0,8,0, + 8,0,13,8,16,13,0,0,239,120,102,48,51,32,51,96, + 29,192,29,192,8,128,8,128,8,8,8,9,0,0,247,98, + 52,56,28,44,70,239,8,11,11,9,0,253,247,98,54,52, + 28,28,8,8,24,208,224,6,8,8,8,1,0,252,140,152, + 48,48,100,196,252,3,14,14,6,1,254,32,64,64,64,64, + 64,128,64,64,64,64,64,64,32,1,12,12,10,4,0,128, + 128,128,128,128,128,128,128,128,128,128,128,3,14,14,6,1, + 254,128,64,64,64,64,64,32,64,64,64,64,64,64,128,8, + 2,2,10,1,3,115,206,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--20-140-100-100-P-103-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=19 x= 4 y=11 dx=19 dy= 0 ascent=19 len=42 + Font Bounding box w=27 h=30 x=-4 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =19 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR14[5319] U8G_SECTION(".progmem.u8g_font_ncenR14") = { + 0,27,30,252,249,14,3,41,7,30,32,255,252,19,252,14, + 252,0,0,0,5,0,1,2,14,14,5,1,0,192,192,192, + 192,192,192,192,128,128,128,0,0,192,192,4,5,5,7,1, + 9,144,144,144,144,144,10,13,26,11,0,0,9,0,9,0, + 9,0,9,0,127,192,18,0,18,0,18,0,255,128,36,0, + 36,0,36,0,36,0,9,17,34,10,0,254,8,0,8,0, + 63,0,105,128,201,128,200,0,232,0,120,0,30,0,15,0, + 11,128,9,128,201,128,203,0,126,0,8,0,8,0,15,14, + 28,16,0,0,28,32,50,32,99,192,98,64,196,128,196,128, + 201,28,113,50,2,98,2,98,4,196,4,196,8,200,8,112, + 13,14,28,14,0,0,30,0,51,0,33,0,35,0,54,0, + 28,0,57,248,124,96,238,64,199,128,195,128,193,200,227,240, + 124,96,1,5,5,4,1,9,128,128,128,128,128,6,17,17, + 7,0,253,4,24,48,96,96,192,192,192,192,192,192,192,96, + 96,48,24,4,6,17,17,7,0,253,128,96,48,24,24,12, + 12,12,12,12,12,12,24,24,48,96,128,7,7,7,10,1, + 7,16,146,214,56,214,146,16,9,9,18,10,0,1,8,0, + 8,0,8,0,8,0,255,128,8,0,8,0,8,0,8,0, + 3,5,5,5,0,253,96,96,32,64,128,5,1,1,6,0, + 5,248,2,2,2,5,1,0,192,192,5,14,14,6,0,0, + 8,8,8,16,16,16,32,32,32,64,64,64,128,128,9,14, + 28,10,0,0,28,0,99,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,193,128,193,128,99,0,99,0,28,0, + 8,14,14,10,1,0,24,248,24,24,24,24,24,24,24,24, + 24,24,24,255,9,14,28,10,0,0,30,0,99,0,193,128, + 193,128,1,128,1,128,3,0,6,0,12,0,24,0,48,128, + 96,128,255,128,255,128,9,14,28,10,0,0,62,0,99,0, + 97,128,1,128,1,128,3,0,30,0,3,0,1,128,1,128, + 1,128,193,128,195,0,126,0,10,14,28,10,0,0,3,0, + 7,0,11,0,11,0,19,0,19,0,35,0,35,0,67,0, + 67,0,255,192,3,0,3,0,15,128,9,14,28,10,0,0, + 127,128,127,0,64,0,64,0,64,0,94,0,99,0,65,128, + 1,128,1,128,1,128,193,128,195,0,126,0,9,14,28,10, + 0,0,15,0,49,128,97,128,96,0,192,0,206,0,223,0, + 227,128,193,128,193,128,193,128,193,128,99,0,62,0,9,14, + 28,10,0,0,255,128,255,128,129,0,131,0,2,0,6,0, + 6,0,12,0,12,0,24,0,24,0,24,0,24,0,24,0, + 9,14,28,10,0,0,62,0,99,0,65,0,65,0,97,0, + 114,0,62,0,47,0,67,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,10,0,0,62,0,99,0,193,128,193,128, + 193,128,193,128,227,128,125,128,57,128,1,128,3,0,195,0, + 198,0,120,0,2,9,9,5,1,0,192,192,0,0,0,0, + 0,192,192,3,12,12,5,0,253,96,96,0,0,0,0,0, + 96,96,32,64,128,9,9,18,10,0,1,0,128,3,128,14, + 0,56,0,224,0,56,0,14,0,3,128,0,128,9,4,8, + 10,0,4,255,128,0,0,0,0,255,128,9,9,18,10,0, + 1,128,0,224,0,56,0,14,0,3,128,14,0,56,0,224, + 0,128,0,7,14,14,8,0,0,60,206,198,6,6,4,8, + 8,16,16,0,0,48,48,13,14,28,14,0,0,7,128,24, + 96,32,16,70,208,77,200,140,200,152,200,153,144,153,144,155, + 160,76,192,64,16,32,96,31,128,14,14,28,13,255,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,12,14,28,13,0, + 0,255,128,48,192,48,96,48,96,48,96,48,192,63,128,48, + 96,48,48,48,48,48,48,48,48,48,96,255,192,12,14,28, + 13,0,0,15,144,56,112,96,48,96,16,192,16,192,0,192, + 0,192,0,192,0,192,0,96,16,96,16,56,96,15,192,14, + 14,28,15,0,0,255,192,48,112,48,24,48,24,48,12,48, + 12,48,12,48,12,48,12,48,12,48,24,48,24,48,112,255, + 192,11,14,28,12,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,14,28,12,0,0,255,224,48,96,48,32,48, + 32,49,32,49,0,63,0,49,0,49,0,48,0,48,0,48, + 0,48,0,252,0,14,14,28,15,0,0,15,200,56,120,96, + 24,96,8,192,8,192,0,192,0,192,0,192,124,192,24,96, + 24,96,24,56,120,15,200,15,14,28,16,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,63,248,48,24,48,24,48, + 24,48,24,48,24,48,24,252,126,6,14,14,7,0,0,252, + 48,48,48,48,48,48,48,48,48,48,48,48,252,9,14,28, + 10,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,198,0,198,0,132,0,120,0,15, + 14,28,15,0,0,252,248,48,96,48,64,48,128,49,0,50, + 0,54,0,63,0,51,128,49,192,48,224,48,112,48,56,252, + 254,11,14,28,12,0,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,32,48,32,48,32,48, + 96,255,224,17,14,42,18,0,0,248,15,128,56,14,0,44, + 22,0,44,22,0,44,22,0,38,38,0,38,38,0,38,38, + 0,35,70,0,35,70,0,35,70,0,33,134,0,33,134,0, + 249,159,128,14,14,28,15,0,0,240,124,48,16,56,16,60, + 16,46,16,38,16,35,16,35,144,33,144,32,208,32,240,32, + 112,32,48,248,16,14,14,28,15,0,0,15,192,56,112,96, + 24,96,24,192,12,192,12,192,12,192,12,192,12,192,12,96, + 24,96,24,56,112,15,192,11,14,28,12,0,0,255,128,48, + 192,48,96,48,96,48,96,48,96,48,192,63,0,48,0,48, + 0,48,0,48,0,48,0,252,0,15,18,36,15,0,252,15, + 192,56,112,96,24,96,24,192,12,192,12,192,12,192,12,192, + 12,207,12,113,152,96,152,56,240,15,224,0,96,0,114,0, + 62,0,28,14,14,28,14,0,0,255,128,48,192,48,96,48, + 96,48,96,48,192,63,0,49,128,48,192,48,192,48,224,48, + 96,48,116,248,56,10,14,28,11,0,0,62,128,97,128,192, + 128,192,128,192,0,240,0,126,0,31,128,3,192,128,192,128, + 192,192,192,225,128,191,0,12,14,28,13,0,0,255,240,198, + 48,134,16,134,16,134,16,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,31,128,14,14,28,15,0,0,252, + 124,48,16,48,16,48,16,48,16,48,16,48,16,48,16,48, + 16,48,16,48,16,48,16,24,32,15,192,14,14,28,13,255, + 0,252,124,48,16,48,16,24,32,24,32,24,32,12,64,12, + 64,12,64,6,128,6,128,6,128,3,0,3,0,20,14,42, + 19,255,0,253,249,240,48,96,64,48,96,64,24,112,128,24, + 112,128,24,112,128,12,153,0,12,153,0,12,153,0,5,9, + 0,7,14,0,7,14,0,3,6,0,3,6,0,13,14,28, + 14,1,0,248,240,48,64,56,192,24,128,13,128,15,0,6, + 0,7,0,15,128,9,128,16,192,48,224,32,96,249,248,14, + 14,28,13,255,0,252,124,48,16,24,32,24,32,12,64,12, + 64,6,128,7,128,3,0,3,0,3,0,3,0,3,0,15, + 192,10,14,28,11,0,0,255,192,192,192,129,128,131,128,131, + 0,6,0,14,0,28,0,24,0,48,64,112,64,96,64,192, + 192,255,192,4,17,17,6,1,253,240,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,240,7,14,14,10,1,0, + 128,128,192,64,96,32,48,16,24,8,12,4,6,2,4,17, + 17,6,0,253,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,240,9,9,18,10,0,5,8,0,8,0,28, + 0,20,0,54,0,34,0,99,0,65,0,193,128,9,1,2, + 9,0,254,255,128,4,3,3,6,1,10,192,96,16,9,9, + 18,10,0,0,28,0,98,0,99,0,3,0,31,0,99,0, + 195,0,199,0,121,128,10,14,28,10,255,0,224,0,96,0, + 96,0,96,0,96,0,111,0,113,128,96,192,96,192,96,192, + 96,192,96,192,113,128,79,0,8,9,9,9,0,0,60,99, + 195,192,192,192,193,99,62,10,14,28,11,0,0,3,128,1, + 128,1,128,1,128,1,128,61,128,99,128,193,128,193,128,193, + 128,193,128,193,128,99,128,61,192,8,9,9,9,0,0,60, + 102,195,195,255,192,193,99,62,8,14,14,7,0,0,14,27, + 51,48,48,252,48,48,48,48,48,48,48,120,10,14,28,11, + 0,252,0,192,31,192,51,0,97,128,97,128,51,0,62,0, + 64,0,127,0,63,128,65,192,128,192,193,128,127,0,10,14, + 28,11,0,0,224,0,96,0,96,0,96,0,96,0,111,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 4,13,13,5,0,0,96,96,0,0,224,96,96,96,96,96, + 96,96,240,6,17,17,5,253,252,12,12,0,0,28,12,12, + 12,12,12,12,12,12,12,204,200,112,10,14,28,10,0,0, + 224,0,96,0,96,0,96,0,96,0,103,128,98,0,100,0, + 104,0,120,0,108,0,102,0,99,0,247,192,4,14,14,5, + 0,0,224,96,96,96,96,96,96,96,96,96,96,96,96,240, + 16,9,18,17,0,0,239,60,115,206,97,134,97,134,97,134, + 97,134,97,134,97,134,243,207,10,9,18,11,0,0,239,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 9,9,18,10,0,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,99,0,62,0,10,13,26,11,0,252,239,0, + 113,128,96,192,96,192,96,192,96,192,96,192,113,128,111,0, + 96,0,96,0,96,0,240,0,10,13,26,10,0,252,60,128, + 99,128,193,128,193,128,193,128,193,128,193,128,99,128,61,128, + 1,128,1,128,1,128,3,192,7,9,9,8,0,0,230,110, + 114,96,96,96,96,96,240,7,9,9,8,0,0,122,198,130, + 224,124,14,130,198,188,6,12,12,6,0,0,96,96,96,248, + 96,96,96,96,96,96,100,56,10,9,18,11,0,0,227,128, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,61,192, + 10,9,18,11,0,0,241,192,96,128,96,128,49,0,49,0, + 26,0,30,0,12,0,12,0,15,9,18,16,0,0,247,222, + 97,132,97,132,50,200,50,200,52,208,28,112,28,112,8,32, + 9,9,18,10,0,0,243,128,97,0,50,0,28,0,8,0, + 28,0,38,0,67,0,231,128,10,13,26,11,0,252,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,8,0, + 8,0,16,0,208,0,224,0,7,9,9,8,0,0,254,134, + 140,24,24,48,98,198,254,5,17,17,6,0,253,24,32,96, + 96,96,96,96,64,128,64,96,96,96,96,96,32,24,2,14, + 14,11,4,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,5,17,17,6,0,253,192,32,48,48,48,48,48,16, + 8,16,48,48,48,48,48,32,192,10,3,6,11,0,4,56, + 192,109,128,199,0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,5,0,1,2,14,14,5, + 1,252,192,192,0,0,64,64,64,192,192,192,192,192,192,192, + 8,13,13,10,1,254,2,2,30,103,203,200,200,208,208,115, + 62,32,32,10,14,28,11,0,0,15,0,25,128,49,128,48, + 0,48,0,24,0,255,128,12,0,12,0,12,0,12,0,120, + 64,158,64,247,128,9,9,18,12,1,3,156,128,255,128,99, + 0,193,128,193,128,193,128,99,0,255,128,156,128,14,14,28, + 15,0,0,252,124,48,16,24,32,24,32,12,64,12,64,6, + 128,31,224,3,0,3,0,31,224,3,0,3,0,15,192,2, + 14,14,10,4,0,192,192,192,192,192,0,0,0,192,192,192, + 192,192,192,8,17,17,9,0,253,60,102,70,64,96,120,62, + 79,195,227,122,60,14,6,98,102,60,6,2,2,7,0,10, + 204,204,14,14,28,15,0,0,7,128,24,96,32,16,71,136, + 72,200,144,68,144,4,144,4,144,4,72,72,71,136,32,16, + 24,96,7,128,6,8,8,7,0,6,112,136,56,200,152,108, + 0,252,8,7,7,9,0,2,17,51,102,204,102,51,17,9, + 5,10,10,0,3,255,128,0,128,0,128,0,128,0,128,5, + 1,1,6,0,5,248,14,14,28,15,0,0,7,128,24,96, + 32,16,79,136,68,200,132,68,132,196,135,132,132,132,68,72, + 78,104,32,16,24,96,7,128,6,1,1,7,0,10,252,6, + 6,6,7,0,8,120,204,132,132,204,120,9,9,18,10,0, + 1,8,0,8,0,8,0,255,128,8,0,8,0,8,0,0, + 0,255,128,6,8,8,6,0,6,120,204,140,24,48,96,196, + 252,6,8,8,6,0,6,120,204,140,56,12,140,204,120,4, + 3,3,6,1,11,48,96,128,10,13,26,11,0,252,227,192, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,125,192, + 64,0,64,0,96,0,96,0,10,17,34,11,0,253,63,192, + 233,0,201,0,201,0,201,0,201,0,233,0,57,0,9,0, + 9,0,9,0,9,0,9,0,9,0,9,0,9,0,63,192, + 2,2,2,5,1,5,192,192,4,4,4,6,0,252,64,112, + 16,224,6,8,8,6,0,6,48,240,48,48,48,48,48,252, + 5,8,8,6,0,6,112,216,136,136,216,112,0,248,8,7, + 7,9,0,2,136,204,102,51,102,204,136,15,14,28,15,0, + 0,48,32,240,32,48,64,48,64,48,128,48,128,49,24,253, + 56,2,40,2,88,4,152,4,254,8,24,8,60,14,14,28, + 15,0,0,48,32,240,32,48,64,48,64,48,128,48,128,49, + 120,253,204,2,140,2,24,4,48,4,96,8,196,8,252,15, + 14,28,15,0,0,120,32,204,32,140,64,56,64,12,128,140, + 128,205,24,121,56,2,40,2,88,4,152,4,254,8,24,8, + 60,7,14,14,8,0,252,24,24,0,0,16,16,32,32,64, + 192,192,198,230,120,14,18,36,13,255,0,12,0,6,0,1, + 0,0,0,3,0,3,0,3,0,5,128,5,128,5,128,8, + 192,8,192,31,224,16,96,16,96,32,48,32,48,248,252,14, + 18,36,13,255,0,0,192,1,128,2,0,0,0,3,0,3, + 0,3,0,5,128,5,128,5,128,8,192,8,192,31,224,16, + 96,16,96,32,48,32,48,248,252,14,18,36,13,255,0,3, + 0,7,128,8,64,0,0,3,0,3,0,3,0,5,128,5, + 128,5,128,8,192,8,192,31,224,16,96,16,96,32,48,32, + 48,248,252,14,17,34,13,255,0,7,64,11,128,0,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,14,17,34,13,255, + 0,12,192,12,192,0,0,3,0,3,0,3,0,5,128,5, + 128,5,128,8,192,8,192,31,224,16,96,16,96,32,48,32, + 48,248,252,14,19,38,13,255,0,3,0,4,128,4,128,3, + 0,0,0,3,0,3,0,3,0,5,128,5,128,5,128,8, + 192,8,192,31,224,16,96,16,96,32,48,32,48,248,252,18, + 14,42,18,255,0,7,255,192,1,96,192,2,96,64,2,96, + 64,4,98,64,4,98,0,8,126,0,8,98,0,31,226,0, + 16,96,64,32,96,64,32,96,64,96,96,192,241,255,192,12, + 18,36,13,0,252,15,144,56,112,96,48,96,16,192,16,192, + 0,192,0,192,0,192,0,192,0,96,16,96,16,56,96,15, + 192,4,0,7,0,1,0,14,0,11,18,36,12,0,0,24, + 0,12,0,2,0,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,18,36,12,0,0,3,0,6,0,8,0,0, + 0,255,224,48,96,48,32,48,32,49,32,49,0,63,0,49, + 0,49,0,48,32,48,32,48,32,48,96,255,224,11,18,36, + 12,0,0,6,0,15,0,16,128,0,0,255,224,48,96,48, + 32,48,32,49,32,49,0,63,0,49,0,49,0,48,32,48, + 32,48,32,48,96,255,224,11,17,34,12,0,0,25,128,25, + 128,0,0,255,224,48,96,48,32,48,32,49,32,49,0,63, + 0,49,0,49,0,48,32,48,32,48,32,48,96,255,224,6, + 18,18,7,0,0,192,96,16,0,252,48,48,48,48,48,48, + 48,48,48,48,48,48,252,6,18,18,7,0,0,12,24,32, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,252,6, + 18,18,7,0,0,48,120,132,0,252,48,48,48,48,48,48, + 48,48,48,48,48,48,252,6,17,17,7,0,0,204,204,0, + 252,48,48,48,48,48,48,48,48,48,48,48,48,252,14,14, + 28,15,0,0,255,192,48,112,48,24,48,24,48,12,48,12, + 254,12,48,12,48,12,48,12,48,24,48,24,48,112,255,192, + 14,17,34,15,0,0,7,64,11,128,0,0,240,124,48,16, + 56,16,60,16,46,16,38,16,35,16,35,144,33,144,32,208, + 32,240,32,112,32,48,248,16,14,18,36,15,0,0,12,0, + 6,0,1,0,0,0,15,192,56,112,96,24,96,24,192,12, + 192,12,192,12,192,12,192,12,192,12,96,24,96,24,56,112, + 15,192,14,18,36,15,0,0,0,192,1,128,2,0,0,0, + 15,192,56,112,96,24,96,24,192,12,192,12,192,12,192,12, + 192,12,192,12,96,24,96,24,56,112,15,192,14,18,36,15, + 0,0,3,0,7,128,8,64,0,0,15,192,56,112,96,24, + 96,24,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 96,24,56,112,15,192,14,17,34,15,0,0,7,64,11,128, + 0,0,15,192,56,112,96,24,96,24,192,12,192,12,192,12, + 192,12,192,12,192,12,96,24,96,24,56,112,15,192,14,17, + 34,15,0,0,12,192,12,192,0,0,15,192,56,112,96,24, + 96,24,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 96,24,56,112,15,192,10,9,18,10,0,1,192,192,97,128, + 51,0,30,0,12,0,30,0,51,0,97,128,192,192,15,14, + 28,15,255,0,7,228,28,56,48,28,48,44,96,70,96,134, + 97,6,98,6,100,6,104,6,48,12,48,12,92,56,135,224, + 14,18,36,15,0,0,6,0,3,0,0,128,0,0,252,124, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,48,16,48,16,24,32,15,192,14,18,36,15,0,0, + 0,192,1,128,2,0,0,0,252,124,48,16,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 24,32,15,192,14,18,36,15,0,0,3,0,7,128,8,64, + 0,0,252,124,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,24,32,15,192,14,17, + 34,15,0,0,12,96,12,96,0,0,252,124,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,24,32,15,192,14,18,36,13,255,0,0,96,0,192, + 1,0,0,0,252,124,48,16,24,32,24,32,12,64,12,64, + 6,128,7,128,3,0,3,0,3,0,3,0,3,0,15,192, + 11,14,28,12,0,0,252,0,48,0,48,0,63,128,48,192, + 48,96,48,96,48,96,48,96,48,192,63,0,48,0,48,0, + 252,0,9,14,28,10,0,0,30,0,35,0,97,0,97,0, + 99,0,110,0,99,0,97,128,97,128,97,128,97,128,109,128, + 109,0,230,0,9,13,26,10,0,0,48,0,24,0,4,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,13,26,10,0,0,6,0,12,0,16,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,13,26,10,0,0,24,0,60,0,66,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,12,24,10,0,0,58,0,92,0,0,0, + 28,0,98,0,99,0,3,0,31,0,99,0,195,0,199,0, + 121,128,9,12,24,10,0,0,102,0,102,0,0,0,28,0, + 98,0,99,0,3,0,31,0,99,0,195,0,199,0,121,128, + 9,14,28,10,0,0,24,0,36,0,36,0,24,0,0,0, + 28,0,98,0,99,0,3,0,31,0,99,0,195,0,199,0, + 121,128,15,9,18,16,0,0,28,248,99,140,99,6,3,6, + 31,254,99,0,195,0,197,134,120,252,8,13,13,9,0,252, + 60,99,195,192,192,192,193,99,62,16,28,4,56,8,13,13, + 9,0,0,96,48,8,0,60,102,195,195,255,192,193,99,62, + 8,13,13,9,0,0,6,12,16,0,60,102,195,195,255,192, + 193,99,62,8,13,13,9,0,0,24,60,66,0,60,102,195, + 195,255,192,193,99,62,8,12,12,9,0,0,102,102,0,60, + 102,195,195,255,192,193,99,62,5,13,13,5,255,0,192,96, + 16,0,112,48,48,48,48,48,48,48,120,5,13,13,5,0, + 0,24,48,64,0,224,96,96,96,96,96,96,96,240,6,13, + 13,5,255,0,48,120,132,0,112,48,48,48,48,48,48,48, + 120,6,12,12,5,255,0,204,204,0,112,48,48,48,48,48, + 48,48,120,9,14,28,10,0,0,192,0,54,0,56,0,204, + 0,6,0,63,0,99,0,193,128,193,128,193,128,193,128,193, + 128,99,0,62,0,10,12,24,11,0,0,60,128,79,0,0, + 0,239,0,115,128,97,128,97,128,97,128,97,128,97,128,97, + 128,243,192,9,13,26,10,0,0,96,0,48,0,8,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,13,26,10,0,0,3,0,6,0,8,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,13,26,10,0,0,24,0,60,0,66,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,12,24,10,0,0,58,0,92,0,0,0,62, + 0,99,0,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,9,12,24,10,0,0,99,0,99,0,0,0,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,99,0,62,0,10, + 7,14,10,0,2,12,0,12,0,0,0,255,192,0,0,12, + 0,12,0,9,12,24,10,0,254,0,128,62,128,99,0,197, + 128,197,128,201,128,201,128,209,128,115,0,62,0,64,0,64, + 0,10,13,26,11,0,0,48,0,24,0,4,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,13,26,11,0,0,3,0,6,0,8,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,13,26,11,0,0,12,0,30,0,33,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,12,24,11,0,0,51,0,51,0,0,0,227,192,97, + 128,97,128,97,128,97,128,97,128,97,128,115,128,61,192,10, + 17,34,11,0,252,3,0,6,0,8,0,0,0,241,192,96, + 128,49,0,49,0,26,0,26,0,12,0,12,0,8,0,8, + 0,16,0,208,0,224,0,10,18,36,11,0,252,224,0,96, + 0,96,0,96,0,96,0,111,0,113,128,96,192,96,192,96, + 192,96,192,96,192,113,128,111,0,96,0,96,0,96,0,240, + 0,10,16,32,11,0,252,51,0,51,0,0,0,241,192,96, + 128,49,0,49,0,26,0,26,0,12,0,12,0,8,0,8, + 0,16,0,208,0,224,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--20-140-100-100-P-103-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=18 x= 4 y=10 dx=19 dy= 0 ascent=15 len=42 + Font Bounding box w=27 h=30 x=-4 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR14r[2534] U8G_SECTION(".progmem.u8g_font_ncenR14r") = { + 0,27,30,252,249,14,3,41,7,30,32,127,252,15,252,14, + 252,0,0,0,5,0,1,2,14,14,5,1,0,192,192,192, + 192,192,192,192,128,128,128,0,0,192,192,4,5,5,7,1, + 9,144,144,144,144,144,10,13,26,11,0,0,9,0,9,0, + 9,0,9,0,127,192,18,0,18,0,18,0,255,128,36,0, + 36,0,36,0,36,0,9,17,34,10,0,254,8,0,8,0, + 63,0,105,128,201,128,200,0,232,0,120,0,30,0,15,0, + 11,128,9,128,201,128,203,0,126,0,8,0,8,0,15,14, + 28,16,0,0,28,32,50,32,99,192,98,64,196,128,196,128, + 201,28,113,50,2,98,2,98,4,196,4,196,8,200,8,112, + 13,14,28,14,0,0,30,0,51,0,33,0,35,0,54,0, + 28,0,57,248,124,96,238,64,199,128,195,128,193,200,227,240, + 124,96,1,5,5,4,1,9,128,128,128,128,128,6,17,17, + 7,0,253,4,24,48,96,96,192,192,192,192,192,192,192,96, + 96,48,24,4,6,17,17,7,0,253,128,96,48,24,24,12, + 12,12,12,12,12,12,24,24,48,96,128,7,7,7,10,1, + 7,16,146,214,56,214,146,16,9,9,18,10,0,1,8,0, + 8,0,8,0,8,0,255,128,8,0,8,0,8,0,8,0, + 3,5,5,5,0,253,96,96,32,64,128,5,1,1,6,0, + 5,248,2,2,2,5,1,0,192,192,5,14,14,6,0,0, + 8,8,8,16,16,16,32,32,32,64,64,64,128,128,9,14, + 28,10,0,0,28,0,99,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,193,128,193,128,99,0,99,0,28,0, + 8,14,14,10,1,0,24,248,24,24,24,24,24,24,24,24, + 24,24,24,255,9,14,28,10,0,0,30,0,99,0,193,128, + 193,128,1,128,1,128,3,0,6,0,12,0,24,0,48,128, + 96,128,255,128,255,128,9,14,28,10,0,0,62,0,99,0, + 97,128,1,128,1,128,3,0,30,0,3,0,1,128,1,128, + 1,128,193,128,195,0,126,0,10,14,28,10,0,0,3,0, + 7,0,11,0,11,0,19,0,19,0,35,0,35,0,67,0, + 67,0,255,192,3,0,3,0,15,128,9,14,28,10,0,0, + 127,128,127,0,64,0,64,0,64,0,94,0,99,0,65,128, + 1,128,1,128,1,128,193,128,195,0,126,0,9,14,28,10, + 0,0,15,0,49,128,97,128,96,0,192,0,206,0,223,0, + 227,128,193,128,193,128,193,128,193,128,99,0,62,0,9,14, + 28,10,0,0,255,128,255,128,129,0,131,0,2,0,6,0, + 6,0,12,0,12,0,24,0,24,0,24,0,24,0,24,0, + 9,14,28,10,0,0,62,0,99,0,65,0,65,0,97,0, + 114,0,62,0,47,0,67,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,10,0,0,62,0,99,0,193,128,193,128, + 193,128,193,128,227,128,125,128,57,128,1,128,3,0,195,0, + 198,0,120,0,2,9,9,5,1,0,192,192,0,0,0,0, + 0,192,192,3,12,12,5,0,253,96,96,0,0,0,0,0, + 96,96,32,64,128,9,9,18,10,0,1,0,128,3,128,14, + 0,56,0,224,0,56,0,14,0,3,128,0,128,9,4,8, + 10,0,4,255,128,0,0,0,0,255,128,9,9,18,10,0, + 1,128,0,224,0,56,0,14,0,3,128,14,0,56,0,224, + 0,128,0,7,14,14,8,0,0,60,206,198,6,6,4,8, + 8,16,16,0,0,48,48,13,14,28,14,0,0,7,128,24, + 96,32,16,70,208,77,200,140,200,152,200,153,144,153,144,155, + 160,76,192,64,16,32,96,31,128,14,14,28,13,255,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,12,14,28,13,0, + 0,255,128,48,192,48,96,48,96,48,96,48,192,63,128,48, + 96,48,48,48,48,48,48,48,48,48,96,255,192,12,14,28, + 13,0,0,15,144,56,112,96,48,96,16,192,16,192,0,192, + 0,192,0,192,0,192,0,96,16,96,16,56,96,15,192,14, + 14,28,15,0,0,255,192,48,112,48,24,48,24,48,12,48, + 12,48,12,48,12,48,12,48,12,48,24,48,24,48,112,255, + 192,11,14,28,12,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,14,28,12,0,0,255,224,48,96,48,32,48, + 32,49,32,49,0,63,0,49,0,49,0,48,0,48,0,48, + 0,48,0,252,0,14,14,28,15,0,0,15,200,56,120,96, + 24,96,8,192,8,192,0,192,0,192,0,192,124,192,24,96, + 24,96,24,56,120,15,200,15,14,28,16,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,63,248,48,24,48,24,48, + 24,48,24,48,24,48,24,252,126,6,14,14,7,0,0,252, + 48,48,48,48,48,48,48,48,48,48,48,48,252,9,14,28, + 10,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,198,0,198,0,132,0,120,0,15, + 14,28,15,0,0,252,248,48,96,48,64,48,128,49,0,50, + 0,54,0,63,0,51,128,49,192,48,224,48,112,48,56,252, + 254,11,14,28,12,0,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,32,48,32,48,32,48, + 96,255,224,17,14,42,18,0,0,248,15,128,56,14,0,44, + 22,0,44,22,0,44,22,0,38,38,0,38,38,0,38,38, + 0,35,70,0,35,70,0,35,70,0,33,134,0,33,134,0, + 249,159,128,14,14,28,15,0,0,240,124,48,16,56,16,60, + 16,46,16,38,16,35,16,35,144,33,144,32,208,32,240,32, + 112,32,48,248,16,14,14,28,15,0,0,15,192,56,112,96, + 24,96,24,192,12,192,12,192,12,192,12,192,12,192,12,96, + 24,96,24,56,112,15,192,11,14,28,12,0,0,255,128,48, + 192,48,96,48,96,48,96,48,96,48,192,63,0,48,0,48, + 0,48,0,48,0,48,0,252,0,15,18,36,15,0,252,15, + 192,56,112,96,24,96,24,192,12,192,12,192,12,192,12,192, + 12,207,12,113,152,96,152,56,240,15,224,0,96,0,114,0, + 62,0,28,14,14,28,14,0,0,255,128,48,192,48,96,48, + 96,48,96,48,192,63,0,49,128,48,192,48,192,48,224,48, + 96,48,116,248,56,10,14,28,11,0,0,62,128,97,128,192, + 128,192,128,192,0,240,0,126,0,31,128,3,192,128,192,128, + 192,192,192,225,128,191,0,12,14,28,13,0,0,255,240,198, + 48,134,16,134,16,134,16,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,31,128,14,14,28,15,0,0,252, + 124,48,16,48,16,48,16,48,16,48,16,48,16,48,16,48, + 16,48,16,48,16,48,16,24,32,15,192,14,14,28,13,255, + 0,252,124,48,16,48,16,24,32,24,32,24,32,12,64,12, + 64,12,64,6,128,6,128,6,128,3,0,3,0,20,14,42, + 19,255,0,253,249,240,48,96,64,48,96,64,24,112,128,24, + 112,128,24,112,128,12,153,0,12,153,0,12,153,0,5,9, + 0,7,14,0,7,14,0,3,6,0,3,6,0,13,14,28, + 14,1,0,248,240,48,64,56,192,24,128,13,128,15,0,6, + 0,7,0,15,128,9,128,16,192,48,224,32,96,249,248,14, + 14,28,13,255,0,252,124,48,16,24,32,24,32,12,64,12, + 64,6,128,7,128,3,0,3,0,3,0,3,0,3,0,15, + 192,10,14,28,11,0,0,255,192,192,192,129,128,131,128,131, + 0,6,0,14,0,28,0,24,0,48,64,112,64,96,64,192, + 192,255,192,4,17,17,6,1,253,240,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,240,7,14,14,10,1,0, + 128,128,192,64,96,32,48,16,24,8,12,4,6,2,4,17, + 17,6,0,253,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,240,9,9,18,10,0,5,8,0,8,0,28, + 0,20,0,54,0,34,0,99,0,65,0,193,128,9,1,2, + 9,0,254,255,128,4,3,3,6,1,10,192,96,16,9,9, + 18,10,0,0,28,0,98,0,99,0,3,0,31,0,99,0, + 195,0,199,0,121,128,10,14,28,10,255,0,224,0,96,0, + 96,0,96,0,96,0,111,0,113,128,96,192,96,192,96,192, + 96,192,96,192,113,128,79,0,8,9,9,9,0,0,60,99, + 195,192,192,192,193,99,62,10,14,28,11,0,0,3,128,1, + 128,1,128,1,128,1,128,61,128,99,128,193,128,193,128,193, + 128,193,128,193,128,99,128,61,192,8,9,9,9,0,0,60, + 102,195,195,255,192,193,99,62,8,14,14,7,0,0,14,27, + 51,48,48,252,48,48,48,48,48,48,48,120,10,14,28,11, + 0,252,0,192,31,192,51,0,97,128,97,128,51,0,62,0, + 64,0,127,0,63,128,65,192,128,192,193,128,127,0,10,14, + 28,11,0,0,224,0,96,0,96,0,96,0,96,0,111,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 4,13,13,5,0,0,96,96,0,0,224,96,96,96,96,96, + 96,96,240,6,17,17,5,253,252,12,12,0,0,28,12,12, + 12,12,12,12,12,12,12,204,200,112,10,14,28,10,0,0, + 224,0,96,0,96,0,96,0,96,0,103,128,98,0,100,0, + 104,0,120,0,108,0,102,0,99,0,247,192,4,14,14,5, + 0,0,224,96,96,96,96,96,96,96,96,96,96,96,96,240, + 16,9,18,17,0,0,239,60,115,206,97,134,97,134,97,134, + 97,134,97,134,97,134,243,207,10,9,18,11,0,0,239,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 9,9,18,10,0,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,99,0,62,0,10,13,26,11,0,252,239,0, + 113,128,96,192,96,192,96,192,96,192,96,192,113,128,111,0, + 96,0,96,0,96,0,240,0,10,13,26,10,0,252,60,128, + 99,128,193,128,193,128,193,128,193,128,193,128,99,128,61,128, + 1,128,1,128,1,128,3,192,7,9,9,8,0,0,230,110, + 114,96,96,96,96,96,240,7,9,9,8,0,0,122,198,130, + 224,124,14,130,198,188,6,12,12,6,0,0,96,96,96,248, + 96,96,96,96,96,96,100,56,10,9,18,11,0,0,227,128, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,61,192, + 10,9,18,11,0,0,241,192,96,128,96,128,49,0,49,0, + 26,0,30,0,12,0,12,0,15,9,18,16,0,0,247,222, + 97,132,97,132,50,200,50,200,52,208,28,112,28,112,8,32, + 9,9,18,10,0,0,243,128,97,0,50,0,28,0,8,0, + 28,0,38,0,67,0,231,128,10,13,26,11,0,252,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,8,0, + 8,0,16,0,208,0,224,0,7,9,9,8,0,0,254,134, + 140,24,24,48,98,198,254,5,17,17,6,0,253,24,32,96, + 96,96,96,96,64,128,64,96,96,96,96,96,32,24,2,14, + 14,11,4,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,5,17,17,6,0,253,192,32,48,48,48,48,48,16, + 8,16,48,48,48,48,48,32,192,10,3,6,11,0,4,56, + 192,109,128,199,0,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--25-180-100-100-P-136-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=25 h=24 x= 6 y=15 dx=25 dy= 0 ascent=24 len=72 + Font Bounding box w=31 h=37 x=-3 y=-8 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR18[7488] U8G_SECTION(".progmem.u8g_font_ncenR18") = { + 0,31,37,253,248,18,4,33,9,197,32,255,251,24,251,18, + 251,0,0,0,7,0,1,3,18,18,7,2,0,64,224,224, + 224,224,224,224,224,224,224,224,64,64,64,0,224,224,224,6, + 6,6,10,2,12,204,204,204,204,204,204,13,16,32,15,1, + 1,12,96,12,96,12,96,12,96,12,96,127,248,24,192,24, + 192,24,192,24,192,255,240,49,128,49,128,49,128,49,128,49, + 128,11,22,44,13,1,254,4,0,4,0,31,0,101,128,68, + 192,196,192,197,192,197,128,228,0,252,0,127,0,31,192,7, + 192,4,224,100,96,228,96,196,96,196,64,100,192,63,0,4, + 0,4,0,18,19,57,20,1,255,30,24,0,51,40,0,97, + 216,0,97,16,0,193,48,0,193,32,0,194,96,0,194,64, + 0,196,199,128,120,140,192,1,152,64,1,24,64,3,48,64, + 2,48,64,6,48,128,4,48,128,12,49,0,8,30,0,8, + 0,0,18,18,54,20,1,0,7,192,0,12,224,0,24,96, + 0,24,96,0,24,96,0,24,192,0,13,128,0,14,0,0, + 30,63,128,103,30,0,99,140,0,193,200,0,192,232,0,192, + 112,0,224,56,64,112,124,64,127,207,128,31,7,0,2,6, + 6,6,2,12,192,192,192,192,192,192,7,21,21,9,1,253, + 2,12,24,48,48,96,96,192,192,192,192,192,192,192,96,96, + 48,48,24,12,2,7,21,21,8,0,253,128,96,48,24,24, + 12,12,6,6,6,6,6,6,6,12,12,24,24,48,96,128, + 7,9,9,9,1,9,16,56,146,214,56,214,146,56,16,12, + 12,24,14,1,1,6,0,6,0,6,0,6,0,6,0,255, + 240,255,240,6,0,6,0,6,0,6,0,6,0,4,7,7, + 6,1,252,96,240,240,48,32,64,128,6,2,2,8,1,6, + 252,252,3,3,3,7,2,0,224,224,224,7,18,18,8,0, + 0,6,6,6,12,12,12,24,24,24,48,48,48,96,96,96, + 192,192,192,11,18,36,13,1,0,14,0,17,0,49,128,32, + 128,96,192,96,192,224,224,224,224,224,224,224,224,224,224,224, + 224,96,192,96,192,32,128,49,128,17,0,14,0,8,18,18, + 13,3,0,8,56,248,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,11,18,36,13,1,0,31,0,113,192,64, + 192,224,224,224,224,64,224,0,192,1,192,1,128,3,0,6, + 0,12,0,24,0,48,32,96,32,192,96,255,224,255,224,11, + 18,36,13,1,0,31,0,99,128,193,192,225,192,225,192,65, + 128,1,128,3,0,31,0,1,128,0,192,0,224,64,224,224, + 224,224,192,193,192,97,128,30,0,12,18,36,13,0,0,0, + 64,0,192,1,192,3,192,6,192,12,192,8,192,24,192,48, + 192,96,192,64,192,192,192,128,192,255,240,0,192,0,192,0, + 192,3,240,11,18,36,13,1,0,127,192,127,128,64,0,64, + 0,64,0,64,0,64,0,95,0,99,128,0,192,0,192,0, + 224,96,224,224,224,224,192,64,192,97,128,31,0,11,18,36, + 13,1,0,15,128,56,224,32,224,96,96,96,0,96,0,224, + 0,239,0,241,128,224,192,224,192,224,224,224,224,96,224,96, + 192,96,192,49,128,31,0,10,18,36,13,2,0,255,192,255, + 192,128,128,129,128,1,0,3,0,3,0,2,0,6,0,6, + 0,4,0,12,0,12,0,12,0,28,0,28,0,28,0,8, + 0,11,18,36,13,1,0,31,0,49,128,32,128,96,192,96, + 192,112,192,57,128,63,0,31,0,55,128,97,192,192,224,192, + 96,192,96,192,96,96,192,113,192,31,0,11,18,36,13,1, + 0,31,0,49,128,112,192,96,192,224,224,224,224,224,224,96, + 224,112,224,49,224,30,224,0,224,0,192,0,192,193,192,225, + 128,227,128,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,7,2,252,224,224,224, + 0,0,0,0,0,0,96,240,240,48,32,64,128,12,12,24, + 14,1,1,0,48,0,240,3,192,15,0,60,0,240,0,240, + 0,60,0,15,0,3,192,0,240,0,48,12,6,12,15,1, + 4,255,240,255,240,0,0,0,0,255,240,255,240,12,12,24, + 14,1,1,192,0,240,0,60,0,15,0,3,192,0,240,0, + 240,3,192,15,0,60,0,240,0,192,0,10,18,36,12,1, + 0,30,0,99,128,193,192,225,192,225,192,1,192,3,128,7, + 0,14,0,12,0,24,0,16,0,16,0,0,0,0,0,56, + 0,56,0,56,0,17,18,54,19,1,0,1,248,0,6,6, + 0,24,3,0,16,1,128,96,216,128,99,56,128,198,24,128, + 198,24,128,204,24,128,204,49,0,204,49,0,204,114,0,196, + 180,0,195,56,0,96,1,0,96,2,0,24,12,0,31,248, + 0,19,18,54,19,0,0,0,64,0,0,96,0,0,224,0, + 0,240,0,1,48,0,1,56,0,2,24,0,2,28,0,4, + 12,0,4,12,0,8,14,0,15,254,0,16,6,0,16,7, + 0,32,3,0,32,3,128,96,3,128,248,15,224,14,18,36, + 18,2,0,255,192,48,112,48,48,48,56,48,56,48,56,48, + 48,48,96,63,240,48,56,48,24,48,28,48,28,48,28,48, + 28,48,24,48,56,255,224,15,18,36,17,1,0,7,242,28, + 30,56,6,48,2,112,2,96,2,224,0,224,0,224,0,224, + 0,224,0,224,0,96,2,112,2,48,6,56,4,28,28,7, + 240,16,18,36,20,2,0,255,224,48,56,48,12,48,12,48, + 6,48,6,48,7,48,7,48,7,48,7,48,7,48,7,48, + 6,48,6,48,12,48,12,48,56,255,224,13,18,36,16,1, + 0,255,248,48,56,48,24,48,8,48,8,48,136,48,128,49, + 128,63,128,49,128,48,128,48,128,48,8,48,8,48,8,48, + 24,48,56,255,248,13,18,36,16,1,0,255,248,48,56,48, + 24,48,8,48,8,48,136,48,128,49,128,63,128,49,128,48, + 128,48,128,48,0,48,0,48,0,48,0,48,0,252,0,17, + 18,54,18,1,0,7,250,0,28,30,0,48,6,0,48,6, + 0,112,2,0,96,2,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,63,128,224,6,0,96,6,0,112,6,0,48, + 6,0,48,14,0,28,30,0,7,242,0,17,18,54,21,2, + 0,252,31,128,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,63,254,0,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,252,31,128,6,18,18,9,2,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,11, + 18,36,14,1,0,7,224,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,97,128,241,128,225, + 128,193,128,193,128,99,0,62,0,18,18,54,20,2,0,252, + 127,0,48,28,0,48,24,0,48,48,0,48,96,0,48,192, + 0,49,128,0,51,0,0,55,0,0,63,128,0,57,192,0, + 48,224,0,48,112,0,48,56,0,48,28,0,48,14,0,48, + 7,0,252,31,192,13,18,36,16,2,0,254,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,8,48,24,48,56,255,248,20, + 18,54,23,1,0,252,1,240,60,1,192,30,3,192,22,2, + 192,23,2,192,19,2,192,19,4,192,19,132,192,17,132,192, + 17,136,192,17,200,192,16,200,192,16,208,192,16,240,192,16, + 112,192,16,96,192,56,96,192,254,35,240,19,18,54,21,1, + 0,248,15,224,60,3,128,28,1,0,30,1,0,23,1,0, + 19,129,0,17,129,0,16,193,0,16,225,0,16,97,0,16, + 49,0,16,57,0,16,29,0,16,15,0,16,7,0,16,7, + 0,56,3,0,254,1,0,17,18,54,19,1,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,13,18,36,16,2,0,255,192,48,112,48,48,48, + 56,48,56,48,56,48,56,48,48,48,112,63,192,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,17,22,66, + 19,1,252,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,227,195,128,100,99,0,104,39,0,56,54,0, + 56,22,0,28,28,0,7,248,0,0,24,128,0,12,128,0, + 15,0,0,6,0,15,18,36,18,2,0,255,192,48,112,48, + 48,48,56,48,56,48,56,48,48,48,96,63,128,49,192,48, + 224,48,96,48,112,48,112,48,50,48,50,48,60,252,28,13, + 18,36,15,1,0,31,144,112,240,64,48,192,48,192,16,224, + 16,120,0,62,0,15,128,3,224,0,240,0,56,128,24,128, + 24,192,24,192,48,240,112,159,192,14,18,36,17,1,0,255, + 252,227,28,195,12,131,4,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,224,16,18,36,19,2,0,252,31,48,14,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,56,12,24,8,30,56,7,224,18,18,54, + 18,0,0,254,7,192,56,1,0,24,1,0,28,2,0,28, + 2,0,12,2,0,14,4,0,6,4,0,7,8,0,7,8, + 0,3,8,0,3,144,0,1,144,0,1,160,0,1,224,0, + 0,224,0,0,192,0,0,64,0,25,18,72,25,0,0,254, + 63,143,128,56,14,2,0,56,14,2,0,24,14,2,0,24, + 22,4,0,28,23,4,0,12,19,4,0,12,19,4,0,14, + 35,136,0,6,33,136,0,6,33,136,0,7,65,208,0,3, + 64,208,0,3,192,240,0,3,128,240,0,1,128,96,0,1, + 128,96,0,0,128,32,0,19,18,54,19,0,0,127,143,128, + 30,6,0,14,4,0,7,8,0,7,16,0,3,144,0,1, + 160,0,1,192,0,0,224,0,0,224,0,1,112,0,1,56, + 0,2,28,0,4,28,0,4,14,0,8,7,0,24,7,128, + 252,31,224,16,18,36,17,0,0,252,63,56,12,24,8,28, + 24,12,16,14,48,6,32,7,96,3,64,3,192,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,7,224,14,18,36, + 16,1,0,127,252,112,24,96,56,64,48,64,96,0,224,0, + 192,1,128,3,128,3,0,6,0,14,0,28,0,24,4,48, + 4,112,12,96,28,255,252,5,21,21,7,2,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,248,10,18,36,11,0,0,192,0,192,0,96,0,96,0, + 48,0,48,0,24,0,24,0,12,0,12,0,6,0,6,0, + 3,0,3,0,1,128,1,128,0,192,0,192,5,21,21,7, + 0,253,248,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,248,10,10,20,12,1,8,12,0,12, + 0,30,0,30,0,51,0,51,0,97,128,97,128,192,192,192, + 192,12,2,4,12,0,253,255,240,255,240,5,4,4,8,1, + 14,192,224,48,8,12,12,24,13,1,0,31,0,113,128,112, + 192,96,192,0,192,7,192,56,192,96,192,192,192,192,192,225, + 240,126,96,13,18,36,14,0,0,240,0,48,0,48,0,48, + 0,48,0,48,0,55,192,60,112,56,48,48,56,48,24,48, + 24,48,24,48,24,48,56,56,48,60,112,39,192,10,12,24, + 12,1,0,31,0,113,192,97,192,224,192,192,0,192,0,192, + 0,192,0,224,0,96,64,112,192,31,128,13,18,36,14,1, + 0,1,224,0,96,0,96,0,96,0,96,0,96,30,96,113, + 224,96,224,224,96,192,96,192,96,192,96,192,96,224,96,96, + 224,113,224,31,120,11,12,24,13,1,0,31,0,113,192,96, + 192,224,224,192,96,255,224,192,0,192,0,224,0,96,64,112, + 192,31,128,9,18,36,8,1,0,15,0,25,128,49,128,48, + 0,48,0,48,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,13,17,34, + 12,0,251,31,56,49,216,96,192,96,192,96,192,96,192,49, + 128,31,0,48,0,96,0,63,0,31,192,96,224,192,96,192, + 96,224,192,127,128,14,18,36,14,0,0,240,0,48,0,48, + 0,48,0,48,0,48,0,49,192,55,224,56,112,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,6, + 18,18,8,1,0,48,48,48,0,0,0,240,48,48,48,48, + 48,48,48,48,48,48,252,7,23,23,8,254,251,6,6,6, + 0,0,0,30,6,6,6,6,6,6,6,6,6,6,6,6, + 6,198,204,120,14,18,36,15,1,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,240,48,192,49,128,51,0,54,0, + 62,0,55,0,51,128,49,192,48,224,48,112,252,252,6,18, + 18,8,1,0,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,22,12,36,22,0,0,241,193,192,55, + 231,224,56,120,112,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,252, + 14,12,24,14,0,0,241,192,55,224,56,112,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,11,12, + 24,13,1,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,13,17,34,14, + 0,251,247,192,60,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,56,56,48,60,112,55,192,48,0,48,0,48,0, + 48,0,252,0,13,17,34,14,1,251,30,32,113,224,96,224, + 224,96,192,96,192,96,192,96,192,96,224,96,96,224,113,224, + 31,96,0,96,0,96,0,96,0,96,1,248,10,12,24,10, + 0,0,243,128,53,192,56,192,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,9,12,24,11,1,0, + 61,0,103,0,195,0,193,0,224,0,124,0,31,0,3,128, + 129,128,193,128,227,0,190,0,8,16,16,10,1,0,16,16, + 48,112,255,48,48,48,48,48,48,48,49,49,57,30,14,12, + 24,14,0,0,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,56,112,31,176,14,60,15,12,24,13, + 255,0,252,126,48,24,48,16,56,48,24,32,28,96,12,64, + 14,192,6,128,7,128,3,0,3,0,19,12,36,17,255,0, + 252,243,224,48,96,128,48,96,128,48,112,128,56,177,0,24, + 177,0,24,177,0,29,58,0,13,26,0,13,26,0,14,28, + 0,6,12,0,13,12,24,12,0,0,248,240,112,96,56,192, + 25,128,15,0,7,0,7,0,13,128,24,192,48,224,96,112, + 240,248,13,17,34,12,255,251,120,56,48,16,56,32,24,32, + 24,96,28,64,12,192,14,128,6,128,7,128,3,0,3,0, + 2,0,2,0,196,0,236,0,120,0,9,12,24,11,1,0, + 255,128,195,128,135,0,134,0,12,0,28,0,24,0,48,0, + 112,128,224,128,193,128,255,128,6,21,21,8,1,253,12,16, + 48,48,48,48,48,48,48,32,192,32,48,48,48,48,48,48, + 48,16,12,2,18,18,15,6,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,21,21,7,1, + 253,192,32,48,48,48,48,48,48,48,16,12,16,48,48,48, + 48,48,48,48,32,192,12,4,8,14,1,6,60,48,126,112, + 231,224,195,192,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,7,0,1,3,19,19,7,2, + 251,224,224,224,0,0,64,64,64,224,224,224,224,224,224,224, + 224,224,224,64,10,18,36,14,2,253,0,64,0,64,0,128, + 31,128,113,192,97,192,226,192,194,0,196,0,196,0,200,0, + 232,0,112,64,112,192,63,0,32,0,64,0,64,0,13,18, + 36,14,0,0,3,192,14,48,12,112,28,112,28,32,28,0, + 28,0,14,0,127,192,7,0,7,0,7,0,7,0,7,0, + 118,8,140,8,143,240,115,224,13,12,24,15,1,4,71,16, + 255,248,112,112,32,32,96,48,96,48,96,48,96,48,32,32, + 112,112,255,248,71,16,16,18,36,17,0,0,252,63,56,12, + 24,8,28,24,12,16,14,48,6,32,7,96,3,64,3,192, + 31,248,1,128,1,128,31,248,1,128,1,128,1,128,15,240, + 2,18,18,15,6,0,192,192,192,192,192,192,192,0,0,0, + 192,192,192,192,192,192,192,192,10,22,44,12,1,252,31,0, + 35,128,97,128,97,128,120,0,60,0,31,0,47,128,67,192, + 193,192,192,192,224,192,240,192,124,128,63,0,15,0,3,128, + 1,128,97,128,97,128,113,0,62,0,6,2,2,8,1,15, + 204,204,18,18,54,20,1,0,3,240,0,12,12,0,16,2, + 0,32,1,0,67,240,128,70,24,128,140,8,64,140,0,64, + 140,0,64,140,0,64,140,0,64,140,8,64,70,24,128,67, + 224,128,32,1,0,16,2,0,12,12,0,3,240,0,7,10, + 10,9,1,8,120,76,4,124,196,204,118,0,0,254,10,7, + 14,12,1,3,24,192,49,128,99,0,198,0,99,0,49,128, + 24,192,12,7,14,14,1,3,255,240,255,240,0,48,0,48, + 0,48,0,48,0,48,6,2,2,8,1,6,252,252,18,18, + 54,20,1,0,3,240,0,12,12,0,16,2,0,32,1,0, + 71,240,128,67,24,128,131,24,64,131,24,64,131,16,64,131, + 224,64,131,48,64,131,24,64,67,12,128,71,142,128,32,1, + 0,16,2,0,12,12,0,3,240,0,7,1,1,9,1,15, + 254,8,7,7,9,0,11,60,102,195,195,195,102,60,12,11, + 22,14,1,2,6,0,6,0,6,0,255,240,255,240,6,0, + 6,0,6,0,0,0,255,240,255,240,7,11,11,8,0,7, + 124,198,198,6,12,24,48,96,192,194,254,7,11,11,8,0, + 7,124,198,198,6,12,60,6,6,198,198,124,5,4,4,8, + 2,15,24,56,96,128,14,17,34,14,0,251,240,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,112, + 63,176,46,60,32,0,32,0,112,0,112,0,32,0,13,22, + 44,15,1,252,31,248,115,48,227,48,227,48,227,48,227,48, + 227,48,227,48,115,48,31,48,3,48,3,48,3,48,3,48, + 3,48,3,48,3,48,3,48,3,48,3,48,3,48,7,248, + 3,3,3,7,2,5,224,224,224,4,4,4,7,1,252,64, + 112,16,224,6,11,11,8,1,7,16,48,240,48,48,48,48, + 48,48,48,252,7,10,10,9,1,8,56,68,198,198,198,68, + 56,0,0,254,10,7,14,12,1,3,198,0,99,0,49,128, + 24,192,49,128,99,0,198,0,18,18,54,19,0,0,16,4, + 0,48,12,0,240,8,0,48,24,0,48,16,0,48,48,0, + 48,32,0,48,99,0,48,71,0,48,207,0,252,139,0,1, + 155,0,1,19,0,3,51,0,2,99,0,6,127,192,4,3, + 0,12,7,128,18,18,54,19,0,0,16,8,0,48,24,0, + 240,16,0,48,48,0,48,32,0,48,96,0,48,64,0,48, + 207,128,48,152,192,49,152,192,253,0,192,3,1,128,2,3, + 0,6,6,0,4,12,0,12,24,0,8,24,64,24,31,192, + 18,18,54,19,0,0,124,4,0,198,12,0,198,8,0,6, + 24,0,12,16,0,60,48,0,6,32,0,6,99,0,198,71, + 0,198,207,0,124,139,0,1,155,0,1,19,0,3,51,0, + 2,99,0,6,127,192,4,3,0,12,7,128,10,18,36,12, + 1,252,7,0,7,0,7,0,0,0,0,0,2,0,2,0, + 6,0,12,0,28,0,56,0,112,0,224,0,225,192,225,192, + 224,192,113,128,30,0,19,23,69,19,0,0,3,0,0,3, + 128,0,0,192,0,0,32,0,0,0,0,0,64,0,0,96, + 0,0,224,0,0,240,0,1,48,0,1,56,0,2,24,0, + 2,28,0,4,12,0,4,12,0,8,14,0,15,254,0,16, + 6,0,16,7,0,32,3,0,32,3,128,96,3,128,248,15, + 224,19,23,69,19,0,0,0,24,0,0,56,0,0,96,0, + 0,128,0,0,0,0,0,64,0,0,96,0,0,224,0,0, + 240,0,1,48,0,1,56,0,2,24,0,2,28,0,4,12, + 0,4,12,0,8,14,0,15,254,0,16,6,0,16,7,0, + 32,3,0,32,3,128,96,3,128,248,15,224,19,23,69,19, + 0,0,0,96,0,0,240,0,1,152,0,2,4,0,0,0, + 0,0,64,0,0,96,0,0,224,0,0,240,0,1,48,0, + 1,56,0,2,24,0,2,28,0,4,12,0,4,12,0,8, + 14,0,15,254,0,16,6,0,16,7,0,32,3,0,32,3, + 128,96,3,128,248,15,224,19,22,66,19,0,0,1,196,0, + 3,248,0,4,112,0,0,0,0,0,64,0,0,96,0,0, + 224,0,0,240,0,1,48,0,1,56,0,2,24,0,2,28, + 0,4,12,0,4,12,0,8,14,0,15,254,0,16,6,0, + 16,7,0,32,3,0,32,3,128,96,3,128,248,15,224,19, + 22,66,19,0,0,3,24,0,3,24,0,0,0,0,0,0, + 0,0,64,0,0,96,0,0,224,0,0,240,0,1,48,0, + 1,56,0,2,24,0,2,28,0,4,12,0,4,12,0,8, + 14,0,15,254,0,16,6,0,16,7,0,32,3,0,32,3, + 128,96,3,128,248,15,224,19,24,72,19,0,0,0,224,0, + 1,16,0,1,16,0,1,16,0,0,224,0,0,0,0,0, + 64,0,0,96,0,0,224,0,0,240,0,1,48,0,1,56, + 0,2,24,0,2,28,0,4,12,0,4,12,0,8,14,0, + 15,254,0,16,6,0,16,7,0,32,3,0,32,3,128,96, + 3,128,248,15,224,24,18,54,25,0,0,1,255,255,0,38, + 7,0,102,3,0,70,1,0,198,1,0,134,17,1,134,16, + 1,6,48,3,7,240,2,6,48,7,254,16,4,6,16,12, + 6,1,8,6,1,24,6,1,16,6,3,48,6,7,252,31, + 255,15,23,46,17,1,251,7,242,28,30,56,6,48,2,112, + 2,96,2,224,0,224,0,224,0,224,0,224,0,224,0,96, + 2,112,2,48,6,56,4,28,28,7,240,3,224,1,0,1, + 192,0,64,3,128,13,23,46,16,1,0,24,0,28,0,6, + 0,1,0,0,0,255,248,48,56,48,24,48,8,48,8,48, + 136,48,128,49,128,63,128,49,128,48,128,48,128,48,8,48, + 8,48,8,48,24,48,56,255,248,13,23,46,16,1,0,0, + 96,0,224,1,128,2,0,0,0,255,248,48,56,48,24,48, + 8,48,8,48,136,48,128,49,128,63,128,49,128,48,128,48, + 128,48,8,48,8,48,8,48,24,48,56,255,248,13,23,46, + 16,1,0,3,0,7,128,12,192,16,32,0,0,255,248,48, + 56,48,24,48,8,48,8,48,136,48,128,49,128,63,128,49, + 128,48,128,48,128,48,8,48,8,48,8,48,24,48,56,255, + 248,13,22,44,16,1,0,12,96,12,96,0,0,0,0,255, + 248,48,56,48,24,48,8,48,8,48,136,48,128,49,128,63, + 128,49,128,48,128,48,128,48,8,48,8,48,8,48,24,48, + 56,255,248,6,23,23,9,2,0,192,224,48,8,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 7,23,23,9,2,0,6,14,24,32,0,252,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,8,23,23, + 9,1,0,24,60,102,129,0,126,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,126,7,22,22,9,2,0, + 198,198,0,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,16,18,36,20,2,0,255,224,48,56, + 48,12,48,12,48,6,48,6,48,7,48,7,254,7,48,7, + 48,7,48,7,48,6,48,6,48,12,48,12,48,56,255,224, + 19,22,66,21,1,0,1,196,0,3,248,0,4,112,0,0, + 0,0,248,15,224,60,3,128,28,1,0,30,1,0,23,1, + 0,19,129,0,17,129,0,16,193,0,16,225,0,16,97,0, + 16,49,0,16,57,0,16,29,0,16,15,0,16,7,0,16, + 7,0,56,3,0,254,1,0,17,23,69,19,1,0,12,0, + 0,14,0,0,3,0,0,0,128,0,0,0,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,17,23,69,19,1,0,0,24,0,0,56,0,0, + 96,0,0,128,0,0,0,0,7,240,0,28,28,0,48,6, + 0,48,6,0,112,7,0,96,3,0,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,96,3,0,112, + 7,0,48,6,0,48,6,0,28,28,0,7,240,0,17,23, + 69,19,1,0,0,192,0,1,224,0,3,48,0,4,8,0, + 0,0,0,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,96,3,0,112,7,0,48,6,0, + 48,6,0,28,28,0,7,240,0,17,22,66,19,1,0,3, + 136,0,7,240,0,8,224,0,0,0,0,7,240,0,28,28, + 0,48,6,0,48,6,0,112,7,0,96,3,0,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,224,3,128,96, + 3,0,112,7,0,48,6,0,48,6,0,28,28,0,7,240, + 0,17,22,66,19,1,0,6,48,0,6,48,0,0,0,0, + 0,0,0,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,96,3,0,112,7,0,48,6,0, + 48,6,0,28,28,0,7,240,0,13,12,24,14,1,1,192, + 24,96,48,48,96,24,192,13,128,7,0,7,0,13,128,24, + 192,48,96,96,48,192,24,17,19,57,19,1,0,0,3,0, + 7,246,0,28,28,0,48,14,0,48,30,0,96,51,0,96, + 99,0,224,67,128,224,195,128,225,131,128,227,3,128,226,3, + 128,230,3,128,108,3,0,120,3,0,48,6,0,48,6,0, + 124,28,0,199,240,0,16,23,46,19,2,0,6,0,7,0, + 1,128,0,64,0,0,252,31,48,14,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,56,12,24,8,30,56,7,224,16,23,46,19,2,0, + 0,48,0,112,0,192,1,0,0,0,252,31,48,14,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,56,12,24,8,30,56,7,224,16,23, + 46,19,2,0,1,128,3,192,6,96,8,16,0,0,252,31, + 48,14,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,56,12,24,8,30,56, + 7,224,16,22,44,19,2,0,6,48,6,48,0,0,0,0, + 252,31,48,14,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,56,12,24,8, + 30,56,7,224,16,23,46,17,0,0,0,48,0,112,0,192, + 1,0,0,0,252,63,56,12,24,8,28,24,12,16,14,48, + 6,32,7,96,3,64,3,192,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,7,224,13,18,36,16,2,0,252,0, + 48,0,48,0,48,0,63,128,48,224,48,48,48,56,48,56, + 48,56,48,56,48,48,48,224,63,128,48,0,48,0,48,0, + 252,0,12,18,36,14,1,0,15,128,24,192,48,96,48,96, + 48,96,48,96,48,192,51,192,48,96,48,48,48,48,48,48, + 48,48,48,48,54,48,54,48,54,96,243,192,12,18,36,13, + 1,0,24,0,28,0,6,0,1,0,0,0,0,0,31,0, + 113,128,112,192,96,192,0,192,7,192,56,192,96,192,192,192, + 192,192,225,240,126,96,12,18,36,13,1,0,1,128,3,128, + 6,0,8,0,0,0,0,0,31,0,113,128,112,192,96,192, + 0,192,7,192,56,192,96,192,192,192,192,192,225,240,126,96, + 12,18,36,13,1,0,6,0,15,0,25,128,32,64,0,0, + 0,0,31,0,113,128,112,192,96,192,0,192,7,192,56,192, + 96,192,192,192,192,192,225,240,126,96,12,17,34,13,1,0, + 28,64,63,128,71,0,0,0,0,0,31,0,113,128,112,192, + 96,192,0,192,7,192,56,192,96,192,192,192,192,192,225,240, + 126,96,12,16,32,13,1,0,25,128,25,128,0,0,0,0, + 31,0,113,128,112,192,96,192,0,192,7,192,56,192,96,192, + 192,192,192,192,225,240,126,96,12,19,38,13,1,0,14,0, + 17,0,17,0,17,0,14,0,0,0,0,0,31,0,113,128, + 112,192,96,192,0,192,7,192,56,192,96,192,192,192,192,192, + 225,240,126,96,19,12,36,21,1,0,31,31,0,113,241,192, + 96,224,192,0,224,224,0,192,96,7,255,224,56,192,0,96, + 192,0,192,224,0,192,224,64,227,112,192,124,31,128,10,16, + 32,12,1,252,31,0,113,192,97,192,224,192,192,0,192,0, + 192,0,192,0,224,0,96,64,112,192,31,128,8,0,14,0, + 2,0,28,0,11,18,36,13,1,0,24,0,28,0,6,0, + 1,0,0,0,0,0,31,0,113,192,96,192,224,224,192,96, + 255,224,192,0,192,0,224,0,96,64,112,192,31,128,11,18, + 36,13,1,0,1,128,3,128,6,0,8,0,0,0,0,0, + 31,0,113,192,96,192,224,224,192,96,255,224,192,0,192,0, + 224,0,96,64,112,192,31,128,11,18,36,13,1,0,6,0, + 15,0,25,128,32,64,0,0,0,0,31,0,113,192,96,192, + 224,224,192,96,255,224,192,0,192,0,224,0,96,64,112,192, + 31,128,11,16,32,13,1,0,49,128,49,128,0,0,0,0, + 31,0,113,192,96,192,224,224,192,96,255,224,192,0,192,0, + 224,0,96,64,112,192,31,128,6,18,18,8,1,0,192,224, + 48,8,0,0,240,48,48,48,48,48,48,48,48,48,48,252, + 6,18,18,8,1,0,24,56,96,128,0,0,240,48,48,48, + 48,48,48,48,48,48,48,252,8,18,18,8,0,0,24,60, + 102,129,0,0,120,24,24,24,24,24,24,24,24,24,24,126, + 6,16,16,8,1,0,204,204,0,0,240,48,48,48,48,48, + 48,48,48,48,48,252,11,18,36,13,1,0,192,0,51,0, + 28,0,28,0,102,0,3,0,31,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,31,0, + 14,17,34,14,0,0,7,16,15,224,17,192,0,0,0,0, + 241,192,55,224,56,112,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,252,11,18,36,13,1,0,24,0, + 28,0,6,0,1,0,0,0,0,0,31,0,113,192,96,192, + 224,224,192,96,192,96,192,96,192,96,224,224,96,192,113,192, + 31,0,11,18,36,13,1,0,1,128,3,128,6,0,8,0, + 0,0,0,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,11,18,36,13, + 1,0,14,0,31,0,49,128,64,64,0,0,0,0,31,0, + 113,192,96,192,224,224,192,96,192,96,192,96,192,96,224,224, + 96,192,113,192,31,0,11,17,34,13,1,0,28,64,63,128, + 71,0,0,0,0,0,31,0,113,192,96,192,224,224,192,96, + 192,96,192,96,192,96,224,224,96,192,113,192,31,0,11,16, + 32,13,1,0,49,128,49,128,0,0,0,0,31,0,113,192, + 96,192,224,224,192,96,192,96,192,96,192,96,224,224,96,192, + 113,192,31,0,12,10,20,14,1,2,6,0,6,0,0,0, + 0,0,255,240,255,240,0,0,0,0,6,0,6,0,11,16, + 32,13,1,254,0,64,0,128,31,128,113,192,98,192,226,224, + 196,96,196,96,196,96,200,96,200,224,80,192,113,192,63,0, + 32,0,64,0,14,18,36,14,0,0,12,0,14,0,3,0, + 0,128,0,0,0,0,240,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,56,112,31,176,14,60,14,18, + 36,14,0,0,0,192,1,192,3,0,4,0,0,0,0,0, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,176,14,60,14,18,36,14,0,0,3,0, + 7,128,12,192,16,32,0,0,0,0,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,56,112,31,176, + 14,60,14,16,32,14,0,0,12,192,12,192,0,0,0,0, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,176,14,60,13,23,46,12,255,251,0,96, + 0,224,1,128,2,0,0,0,0,0,120,56,48,16,56,48, + 24,32,24,32,12,96,12,64,6,192,6,128,7,128,3,0, + 3,0,2,0,2,0,196,0,236,0,120,0,13,23,46,14, + 0,251,240,0,48,0,48,0,48,0,48,0,48,0,55,192, + 60,112,56,48,48,56,48,24,48,24,48,24,48,24,48,56, + 56,48,60,112,55,192,48,0,48,0,48,0,48,0,252,0, + 13,21,42,12,255,251,12,96,12,96,0,0,0,0,120,56, + 48,16,56,48,24,32,24,32,12,96,12,64,6,192,6,128, + 7,128,3,0,3,0,2,0,2,0,196,0,236,0,120,0 + }; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--25-180-100-100-P-136-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=25 h=23 x= 6 y=14 dx=25 dy= 0 ascent=20 len=72 + Font Bounding box w=31 h=37 x=-3 y=-8 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR18r[3477] U8G_SECTION(".progmem.u8g_font_ncenR18r") = { + 0,31,37,253,248,18,4,33,9,197,32,127,251,20,251,18, + 251,0,0,0,7,0,1,3,18,18,7,2,0,64,224,224, + 224,224,224,224,224,224,224,224,64,64,64,0,224,224,224,6, + 6,6,10,2,12,204,204,204,204,204,204,13,16,32,15,1, + 1,12,96,12,96,12,96,12,96,12,96,127,248,24,192,24, + 192,24,192,24,192,255,240,49,128,49,128,49,128,49,128,49, + 128,11,22,44,13,1,254,4,0,4,0,31,0,101,128,68, + 192,196,192,197,192,197,128,228,0,252,0,127,0,31,192,7, + 192,4,224,100,96,228,96,196,96,196,64,100,192,63,0,4, + 0,4,0,18,19,57,20,1,255,30,24,0,51,40,0,97, + 216,0,97,16,0,193,48,0,193,32,0,194,96,0,194,64, + 0,196,199,128,120,140,192,1,152,64,1,24,64,3,48,64, + 2,48,64,6,48,128,4,48,128,12,49,0,8,30,0,8, + 0,0,18,18,54,20,1,0,7,192,0,12,224,0,24,96, + 0,24,96,0,24,96,0,24,192,0,13,128,0,14,0,0, + 30,63,128,103,30,0,99,140,0,193,200,0,192,232,0,192, + 112,0,224,56,64,112,124,64,127,207,128,31,7,0,2,6, + 6,6,2,12,192,192,192,192,192,192,7,21,21,9,1,253, + 2,12,24,48,48,96,96,192,192,192,192,192,192,192,96,96, + 48,48,24,12,2,7,21,21,8,0,253,128,96,48,24,24, + 12,12,6,6,6,6,6,6,6,12,12,24,24,48,96,128, + 7,9,9,9,1,9,16,56,146,214,56,214,146,56,16,12, + 12,24,14,1,1,6,0,6,0,6,0,6,0,6,0,255, + 240,255,240,6,0,6,0,6,0,6,0,6,0,4,7,7, + 6,1,252,96,240,240,48,32,64,128,6,2,2,8,1,6, + 252,252,3,3,3,7,2,0,224,224,224,7,18,18,8,0, + 0,6,6,6,12,12,12,24,24,24,48,48,48,96,96,96, + 192,192,192,11,18,36,13,1,0,14,0,17,0,49,128,32, + 128,96,192,96,192,224,224,224,224,224,224,224,224,224,224,224, + 224,96,192,96,192,32,128,49,128,17,0,14,0,8,18,18, + 13,3,0,8,56,248,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,11,18,36,13,1,0,31,0,113,192,64, + 192,224,224,224,224,64,224,0,192,1,192,1,128,3,0,6, + 0,12,0,24,0,48,32,96,32,192,96,255,224,255,224,11, + 18,36,13,1,0,31,0,99,128,193,192,225,192,225,192,65, + 128,1,128,3,0,31,0,1,128,0,192,0,224,64,224,224, + 224,224,192,193,192,97,128,30,0,12,18,36,13,0,0,0, + 64,0,192,1,192,3,192,6,192,12,192,8,192,24,192,48, + 192,96,192,64,192,192,192,128,192,255,240,0,192,0,192,0, + 192,3,240,11,18,36,13,1,0,127,192,127,128,64,0,64, + 0,64,0,64,0,64,0,95,0,99,128,0,192,0,192,0, + 224,96,224,224,224,224,192,64,192,97,128,31,0,11,18,36, + 13,1,0,15,128,56,224,32,224,96,96,96,0,96,0,224, + 0,239,0,241,128,224,192,224,192,224,224,224,224,96,224,96, + 192,96,192,49,128,31,0,10,18,36,13,2,0,255,192,255, + 192,128,128,129,128,1,0,3,0,3,0,2,0,6,0,6, + 0,4,0,12,0,12,0,12,0,28,0,28,0,28,0,8, + 0,11,18,36,13,1,0,31,0,49,128,32,128,96,192,96, + 192,112,192,57,128,63,0,31,0,55,128,97,192,192,224,192, + 96,192,96,192,96,96,192,113,192,31,0,11,18,36,13,1, + 0,31,0,49,128,112,192,96,192,224,224,224,224,224,224,96, + 224,112,224,49,224,30,224,0,224,0,192,0,192,193,192,225, + 128,227,128,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,7,2,252,224,224,224, + 0,0,0,0,0,0,96,240,240,48,32,64,128,12,12,24, + 14,1,1,0,48,0,240,3,192,15,0,60,0,240,0,240, + 0,60,0,15,0,3,192,0,240,0,48,12,6,12,15,1, + 4,255,240,255,240,0,0,0,0,255,240,255,240,12,12,24, + 14,1,1,192,0,240,0,60,0,15,0,3,192,0,240,0, + 240,3,192,15,0,60,0,240,0,192,0,10,18,36,12,1, + 0,30,0,99,128,193,192,225,192,225,192,1,192,3,128,7, + 0,14,0,12,0,24,0,16,0,16,0,0,0,0,0,56, + 0,56,0,56,0,17,18,54,19,1,0,1,248,0,6,6, + 0,24,3,0,16,1,128,96,216,128,99,56,128,198,24,128, + 198,24,128,204,24,128,204,49,0,204,49,0,204,114,0,196, + 180,0,195,56,0,96,1,0,96,2,0,24,12,0,31,248, + 0,19,18,54,19,0,0,0,64,0,0,96,0,0,224,0, + 0,240,0,1,48,0,1,56,0,2,24,0,2,28,0,4, + 12,0,4,12,0,8,14,0,15,254,0,16,6,0,16,7, + 0,32,3,0,32,3,128,96,3,128,248,15,224,14,18,36, + 18,2,0,255,192,48,112,48,48,48,56,48,56,48,56,48, + 48,48,96,63,240,48,56,48,24,48,28,48,28,48,28,48, + 28,48,24,48,56,255,224,15,18,36,17,1,0,7,242,28, + 30,56,6,48,2,112,2,96,2,224,0,224,0,224,0,224, + 0,224,0,224,0,96,2,112,2,48,6,56,4,28,28,7, + 240,16,18,36,20,2,0,255,224,48,56,48,12,48,12,48, + 6,48,6,48,7,48,7,48,7,48,7,48,7,48,7,48, + 6,48,6,48,12,48,12,48,56,255,224,13,18,36,16,1, + 0,255,248,48,56,48,24,48,8,48,8,48,136,48,128,49, + 128,63,128,49,128,48,128,48,128,48,8,48,8,48,8,48, + 24,48,56,255,248,13,18,36,16,1,0,255,248,48,56,48, + 24,48,8,48,8,48,136,48,128,49,128,63,128,49,128,48, + 128,48,128,48,0,48,0,48,0,48,0,48,0,252,0,17, + 18,54,18,1,0,7,250,0,28,30,0,48,6,0,48,6, + 0,112,2,0,96,2,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,63,128,224,6,0,96,6,0,112,6,0,48, + 6,0,48,14,0,28,30,0,7,242,0,17,18,54,21,2, + 0,252,31,128,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,63,254,0,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,252,31,128,6,18,18,9,2,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,11, + 18,36,14,1,0,7,224,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,97,128,241,128,225, + 128,193,128,193,128,99,0,62,0,18,18,54,20,2,0,252, + 127,0,48,28,0,48,24,0,48,48,0,48,96,0,48,192, + 0,49,128,0,51,0,0,55,0,0,63,128,0,57,192,0, + 48,224,0,48,112,0,48,56,0,48,28,0,48,14,0,48, + 7,0,252,31,192,13,18,36,16,2,0,254,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,8,48,24,48,56,255,248,20, + 18,54,23,1,0,252,1,240,60,1,192,30,3,192,22,2, + 192,23,2,192,19,2,192,19,4,192,19,132,192,17,132,192, + 17,136,192,17,200,192,16,200,192,16,208,192,16,240,192,16, + 112,192,16,96,192,56,96,192,254,35,240,19,18,54,21,1, + 0,248,15,224,60,3,128,28,1,0,30,1,0,23,1,0, + 19,129,0,17,129,0,16,193,0,16,225,0,16,97,0,16, + 49,0,16,57,0,16,29,0,16,15,0,16,7,0,16,7, + 0,56,3,0,254,1,0,17,18,54,19,1,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,13,18,36,16,2,0,255,192,48,112,48,48,48, + 56,48,56,48,56,48,56,48,48,48,112,63,192,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,17,22,66, + 19,1,252,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,227,195,128,100,99,0,104,39,0,56,54,0, + 56,22,0,28,28,0,7,248,0,0,24,128,0,12,128,0, + 15,0,0,6,0,15,18,36,18,2,0,255,192,48,112,48, + 48,48,56,48,56,48,56,48,48,48,96,63,128,49,192,48, + 224,48,96,48,112,48,112,48,50,48,50,48,60,252,28,13, + 18,36,15,1,0,31,144,112,240,64,48,192,48,192,16,224, + 16,120,0,62,0,15,128,3,224,0,240,0,56,128,24,128, + 24,192,24,192,48,240,112,159,192,14,18,36,17,1,0,255, + 252,227,28,195,12,131,4,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,224,16,18,36,19,2,0,252,31,48,14,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,56,12,24,8,30,56,7,224,18,18,54, + 18,0,0,254,7,192,56,1,0,24,1,0,28,2,0,28, + 2,0,12,2,0,14,4,0,6,4,0,7,8,0,7,8, + 0,3,8,0,3,144,0,1,144,0,1,160,0,1,224,0, + 0,224,0,0,192,0,0,64,0,25,18,72,25,0,0,254, + 63,143,128,56,14,2,0,56,14,2,0,24,14,2,0,24, + 22,4,0,28,23,4,0,12,19,4,0,12,19,4,0,14, + 35,136,0,6,33,136,0,6,33,136,0,7,65,208,0,3, + 64,208,0,3,192,240,0,3,128,240,0,1,128,96,0,1, + 128,96,0,0,128,32,0,19,18,54,19,0,0,127,143,128, + 30,6,0,14,4,0,7,8,0,7,16,0,3,144,0,1, + 160,0,1,192,0,0,224,0,0,224,0,1,112,0,1,56, + 0,2,28,0,4,28,0,4,14,0,8,7,0,24,7,128, + 252,31,224,16,18,36,17,0,0,252,63,56,12,24,8,28, + 24,12,16,14,48,6,32,7,96,3,64,3,192,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,7,224,14,18,36, + 16,1,0,127,252,112,24,96,56,64,48,64,96,0,224,0, + 192,1,128,3,128,3,0,6,0,14,0,28,0,24,4,48, + 4,112,12,96,28,255,252,5,21,21,7,2,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,248,10,18,36,11,0,0,192,0,192,0,96,0,96,0, + 48,0,48,0,24,0,24,0,12,0,12,0,6,0,6,0, + 3,0,3,0,1,128,1,128,0,192,0,192,5,21,21,7, + 0,253,248,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,248,10,10,20,12,1,8,12,0,12, + 0,30,0,30,0,51,0,51,0,97,128,97,128,192,192,192, + 192,12,2,4,12,0,253,255,240,255,240,5,4,4,8,1, + 14,192,224,48,8,12,12,24,13,1,0,31,0,113,128,112, + 192,96,192,0,192,7,192,56,192,96,192,192,192,192,192,225, + 240,126,96,13,18,36,14,0,0,240,0,48,0,48,0,48, + 0,48,0,48,0,55,192,60,112,56,48,48,56,48,24,48, + 24,48,24,48,24,48,56,56,48,60,112,39,192,10,12,24, + 12,1,0,31,0,113,192,97,192,224,192,192,0,192,0,192, + 0,192,0,224,0,96,64,112,192,31,128,13,18,36,14,1, + 0,1,224,0,96,0,96,0,96,0,96,0,96,30,96,113, + 224,96,224,224,96,192,96,192,96,192,96,192,96,224,96,96, + 224,113,224,31,120,11,12,24,13,1,0,31,0,113,192,96, + 192,224,224,192,96,255,224,192,0,192,0,224,0,96,64,112, + 192,31,128,9,18,36,8,1,0,15,0,25,128,49,128,48, + 0,48,0,48,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,13,17,34, + 12,0,251,31,56,49,216,96,192,96,192,96,192,96,192,49, + 128,31,0,48,0,96,0,63,0,31,192,96,224,192,96,192, + 96,224,192,127,128,14,18,36,14,0,0,240,0,48,0,48, + 0,48,0,48,0,48,0,49,192,55,224,56,112,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,6, + 18,18,8,1,0,48,48,48,0,0,0,240,48,48,48,48, + 48,48,48,48,48,48,252,7,23,23,8,254,251,6,6,6, + 0,0,0,30,6,6,6,6,6,6,6,6,6,6,6,6, + 6,198,204,120,14,18,36,15,1,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,240,48,192,49,128,51,0,54,0, + 62,0,55,0,51,128,49,192,48,224,48,112,252,252,6,18, + 18,8,1,0,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,22,12,36,22,0,0,241,193,192,55, + 231,224,56,120,112,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,252, + 14,12,24,14,0,0,241,192,55,224,56,112,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,11,12, + 24,13,1,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,13,17,34,14, + 0,251,247,192,60,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,56,56,48,60,112,55,192,48,0,48,0,48,0, + 48,0,252,0,13,17,34,14,1,251,30,32,113,224,96,224, + 224,96,192,96,192,96,192,96,192,96,224,96,96,224,113,224, + 31,96,0,96,0,96,0,96,0,96,1,248,10,12,24,10, + 0,0,243,128,53,192,56,192,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,9,12,24,11,1,0, + 61,0,103,0,195,0,193,0,224,0,124,0,31,0,3,128, + 129,128,193,128,227,0,190,0,8,16,16,10,1,0,16,16, + 48,112,255,48,48,48,48,48,48,48,49,49,57,30,14,12, + 24,14,0,0,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,56,112,31,176,14,60,15,12,24,13, + 255,0,252,126,48,24,48,16,56,48,24,32,28,96,12,64, + 14,192,6,128,7,128,3,0,3,0,19,12,36,17,255,0, + 252,243,224,48,96,128,48,96,128,48,112,128,56,177,0,24, + 177,0,24,177,0,29,58,0,13,26,0,13,26,0,14,28, + 0,6,12,0,13,12,24,12,0,0,248,240,112,96,56,192, + 25,128,15,0,7,0,7,0,13,128,24,192,48,224,96,112, + 240,248,13,17,34,12,255,251,120,56,48,16,56,32,24,32, + 24,96,28,64,12,192,14,128,6,128,7,128,3,0,3,0, + 2,0,2,0,196,0,236,0,120,0,9,12,24,11,1,0, + 255,128,195,128,135,0,134,0,12,0,28,0,24,0,48,0, + 112,128,224,128,193,128,255,128,6,21,21,8,1,253,12,16, + 48,48,48,48,48,48,48,32,192,32,48,48,48,48,48,48, + 48,16,12,2,18,18,15,6,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,21,21,7,1, + 253,192,32,48,48,48,48,48,48,48,16,12,16,48,48,48, + 48,48,48,48,32,192,12,4,8,14,1,6,60,48,126,112, + 231,224,195,192,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=31 h=32 x= 9 y=19 dx=32 dy= 0 ascent=32 len=128 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =32 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24[11729] U8G_SECTION(".progmem.u8g_font_ncenR24") = { + 0,39,50,250,245,25,5,159,15,28,32,255,249,32,249,25, + 249,0,0,0,9,1,1,4,25,25,10,3,0,96,240,240, + 240,240,240,240,96,96,96,96,96,96,96,96,96,96,96,0, + 0,0,96,240,240,96,9,8,16,13,2,17,227,128,227,128, + 227,128,227,128,65,0,65,0,65,0,65,0,16,23,46,19, + 2,0,3,12,3,12,3,12,7,28,6,24,6,24,6,24, + 127,255,127,255,6,24,14,56,12,56,12,48,255,254,255,254, + 12,48,12,48,28,112,28,112,24,96,24,96,24,96,24,96, + 14,31,62,18,2,252,2,0,2,0,2,0,15,192,63,240, + 114,112,226,56,194,120,194,120,194,48,194,0,226,0,250,0, + 127,0,63,192,31,240,3,248,2,124,2,60,98,28,242,12, + 242,12,226,28,194,24,226,120,127,240,31,192,2,0,2,0, + 2,0,2,0,24,25,75,27,1,255,3,128,32,15,192,224, + 28,227,192,56,127,192,56,97,128,112,97,128,112,99,0,240, + 99,0,224,102,0,224,196,0,224,204,0,225,136,28,115,24, + 126,62,16,227,0,49,195,0,99,195,0,99,131,0,199,131, + 0,199,3,1,135,6,1,135,6,3,7,12,2,3,152,6, + 1,240,4,0,0,22,25,75,27,2,0,1,248,0,7,188, + 0,6,28,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,15,112,0,7,224,0,7,128,0,15, + 199,252,59,193,240,113,224,224,113,240,192,224,240,192,224,249, + 128,224,125,128,240,63,4,240,30,4,248,15,12,126,63,248, + 63,243,248,31,193,224,3,8,8,7,2,17,224,224,224,224, + 64,64,64,64,8,29,29,11,2,252,1,7,6,12,24,48, + 48,48,96,96,96,96,224,224,224,224,224,96,96,96,96,48, + 48,16,24,12,6,7,3,8,29,29,11,2,252,192,224,96, + 48,24,8,12,12,6,6,6,6,7,7,7,7,7,6,6, + 6,6,12,12,28,24,48,96,192,192,12,14,28,17,2,11, + 6,0,6,0,6,0,198,112,230,112,127,224,31,128,31,0, + 127,192,230,112,198,112,6,0,6,0,6,0,16,17,34,20, + 2,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 255,255,255,255,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,5,10,10,9,2,250,112,248,248,120,24,24, + 48,96,224,128,8,3,3,11,1,7,255,255,255,4,4,4, + 9,2,0,96,240,240,96,10,25,50,9,255,0,0,192,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,6, + 0,6,0,6,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,96,0,192,0,16, + 24,48,18,2,0,3,192,15,240,28,56,24,24,56,28,120, + 30,112,14,240,15,240,15,240,15,240,15,240,15,240,15,240, + 15,240,15,240,15,240,15,112,14,120,30,56,28,24,24,28, + 56,15,240,3,192,13,24,48,18,3,0,3,0,7,0,255, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,15,128,255,248,15,24,48,18,1, + 0,7,224,31,248,56,28,96,30,112,14,120,14,120,14,120, + 14,48,30,0,28,0,28,0,56,0,120,0,112,0,224,1, + 192,3,128,7,2,14,2,28,6,56,6,127,254,255,254,255, + 254,15,24,48,18,1,0,7,224,31,248,56,56,112,28,120, + 28,120,28,48,28,0,28,0,56,0,112,1,224,15,240,0, + 248,0,60,0,28,0,30,96,14,240,14,240,14,240,30,224, + 28,120,124,63,240,15,192,16,24,48,18,1,0,0,48,0, + 48,0,112,0,240,1,240,1,240,3,112,6,112,6,112,12, + 112,24,112,24,112,48,112,96,112,96,112,192,112,255,255,255, + 255,0,112,0,112,0,112,0,112,0,248,3,254,14,24,48, + 18,2,0,56,8,63,248,63,240,63,224,48,0,48,0,32, + 0,96,0,99,192,111,240,124,120,112,56,96,60,0,28,0, + 28,0,28,96,28,240,28,240,28,240,60,224,56,112,120,127, + 240,31,128,15,24,48,18,1,0,3,240,15,252,28,62,56, + 30,56,30,48,12,112,0,112,0,112,0,241,224,247,248,254, + 60,252,28,248,30,240,14,240,14,240,14,112,14,112,14,112, + 30,56,28,56,60,31,240,7,192,13,24,48,18,3,0,255, + 248,255,248,255,248,192,16,192,48,128,32,128,96,128,64,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,7, + 0,7,0,7,0,15,0,15,0,15,0,15,0,6,0,15, + 24,48,18,1,0,7,224,31,248,60,56,56,28,112,28,112, + 12,112,12,120,24,60,56,63,112,31,224,7,240,7,248,29, + 252,56,124,112,30,112,30,224,14,224,14,224,14,112,28,120, + 60,63,248,15,224,15,24,48,18,1,0,15,192,63,240,120, + 120,112,56,240,60,224,28,224,28,224,30,224,30,240,30,240, + 62,120,126,120,126,63,222,31,158,0,30,0,28,0,28,96, + 56,240,56,240,112,241,224,127,192,63,0,4,16,16,9,3, + 0,96,240,240,96,0,0,0,0,0,0,0,0,96,240,240, + 96,5,21,21,9,1,251,48,120,120,48,0,0,0,0,0, + 0,0,0,48,120,120,56,24,16,48,96,192,16,18,36,20, + 2,255,0,1,0,7,0,31,0,124,1,240,7,192,31,0, + 124,0,240,0,240,0,124,0,31,0,7,192,1,240,0,124, + 0,31,0,7,0,1,16,8,16,20,2,4,255,255,255,255, + 0,0,0,0,0,0,0,0,255,255,255,255,16,18,36,20, + 2,255,128,0,224,0,248,0,62,0,15,128,3,224,0,248, + 0,62,0,15,0,15,0,62,0,248,3,224,15,128,62,0, + 248,0,224,0,128,0,12,25,50,14,1,0,63,128,115,224, + 192,224,192,240,224,112,224,112,224,112,0,240,0,240,1,224, + 1,192,3,128,3,0,6,0,4,0,4,0,12,0,12,0, + 0,0,0,0,0,0,12,0,30,0,30,0,12,0,22,25, + 75,25,1,0,0,254,0,3,255,128,15,135,192,30,0,224, + 28,0,112,48,0,56,48,0,24,96,251,152,97,207,140,227, + 143,140,199,135,140,199,7,12,207,7,12,207,15,8,206,15, + 24,206,14,24,206,30,48,102,62,96,103,126,192,51,231,152, + 56,0,56,28,0,112,15,129,224,7,255,128,0,254,0,23, + 25,75,23,0,0,0,16,0,0,56,0,0,56,0,0,120, + 0,0,124,0,0,124,0,0,220,0,0,222,0,1,158,0, + 1,142,0,1,143,0,3,7,0,3,7,128,3,7,128,6, + 3,128,7,255,192,7,255,192,12,1,192,12,1,224,12,1, + 224,24,0,240,24,0,240,56,0,248,124,1,252,254,3,254, + 20,25,75,23,1,0,255,254,0,63,255,128,14,7,192,14, + 1,192,14,1,224,14,1,224,14,1,224,14,1,224,14,1, + 192,14,1,192,14,3,128,15,255,0,15,252,0,14,15,128, + 14,3,192,14,1,224,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,240,14,1,224,14,3,224,63,255,192,255,255, + 0,20,25,75,22,1,0,1,252,96,7,255,96,14,3,224, + 28,1,224,60,0,224,56,0,224,120,0,96,120,0,96,240, + 0,32,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,48,120,0,48,120,0,48, + 120,0,96,60,0,96,28,0,192,15,3,128,7,255,0,1, + 252,0,22,25,75,25,1,0,255,254,0,63,255,192,14,3, + 224,14,0,240,14,0,112,14,0,120,14,0,120,14,0,60, + 14,0,60,14,0,60,14,0,60,14,0,60,14,0,60,14, + 0,60,14,0,60,14,0,60,14,0,60,14,0,60,14,0, + 56,14,0,120,14,0,112,14,0,224,14,3,224,63,255,192, + 255,254,0,20,25,75,24,1,0,255,255,240,63,255,240,14, + 1,240,14,0,112,14,0,112,14,0,48,14,4,48,14,4, + 16,14,4,16,14,12,0,14,60,0,15,252,0,15,252,0, + 14,60,0,14,12,0,14,12,0,14,4,16,14,4,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 240,255,255,240,20,25,75,22,1,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,48,14,0,48,14,0,16,14, + 4,16,14,4,16,14,12,0,14,12,0,14,60,0,15,252, + 0,15,252,0,14,28,0,14,12,0,14,4,0,14,4,0, + 14,4,0,14,0,0,14,0,0,14,0,0,14,0,0,63, + 128,0,255,224,0,24,25,75,24,1,0,1,254,48,7,255, + 176,15,3,240,30,0,240,60,0,112,56,0,112,120,0,48, + 112,0,48,112,0,16,240,0,16,240,0,0,240,0,0,240, + 0,0,240,0,0,240,7,255,240,0,248,240,0,112,112,0, + 112,112,0,112,120,0,112,56,0,240,28,0,240,15,1,176, + 7,255,48,1,254,16,25,25,100,27,1,0,255,227,255,128, + 63,128,254,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,15,255,248,0,15,255,248,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,63,128,254,0,255,227,255,128, + 11,25,50,13,1,0,255,224,63,128,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,63,128,255,224,17,25,75,18,0,0,3,255, + 128,0,124,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,112,56, + 0,248,56,0,248,56,0,248,56,0,240,56,0,192,120,0, + 224,112,0,127,240,0,31,192,0,25,25,100,25,1,0,255, + 227,255,0,63,129,252,0,14,0,240,0,14,0,224,0,14, + 1,192,0,14,1,128,0,14,3,0,0,14,6,0,0,14, + 14,0,0,14,28,0,0,14,56,0,0,14,124,0,0,14, + 254,0,0,15,222,0,0,15,143,0,0,15,7,128,0,14, + 7,192,0,14,3,192,0,14,1,224,0,14,1,240,0,14, + 0,240,0,14,0,120,0,14,0,124,0,63,0,62,0,255, + 192,255,128,20,25,75,22,1,0,255,224,0,63,128,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,16,14,0,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 224,255,255,224,29,25,100,30,0,0,127,128,15,248,31,128, + 15,192,15,128,15,128,15,192,15,128,13,192,27,128,13,192, + 27,128,13,224,19,128,12,224,51,128,12,224,51,128,12,240, + 35,128,12,112,99,128,12,112,99,128,12,120,99,128,12,56, + 195,128,12,56,195,128,12,60,195,128,12,28,131,128,12,29, + 131,128,12,31,131,128,12,31,3,128,12,15,3,128,12,15, + 3,128,12,14,3,128,63,6,15,224,255,198,63,248,26,25, + 100,28,1,0,255,0,255,192,31,0,63,0,15,128,12,0, + 15,192,12,0,15,192,12,0,13,224,12,0,13,240,12,0, + 12,248,12,0,12,120,12,0,12,124,12,0,12,62,12,0, + 12,30,12,0,12,31,12,0,12,15,140,0,12,7,140,0, + 12,7,204,0,12,3,204,0,12,1,236,0,12,0,236,0, + 12,0,252,0,12,0,124,0,12,0,60,0,12,0,60,0, + 63,0,28,0,255,192,12,0,22,25,75,24,1,0,1,254, + 0,7,255,128,15,3,192,28,0,224,60,0,240,56,0,112, + 120,0,120,112,0,56,240,0,60,240,0,60,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,240,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,28,0,224, + 15,3,192,7,255,128,1,254,0,20,25,75,22,1,0,255, + 254,0,63,255,128,14,7,192,14,1,224,14,0,240,14,0, + 240,14,0,112,14,0,112,14,0,240,14,0,240,14,1,224, + 14,7,192,15,255,128,15,254,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,63,128,0,255,224,0,23,31,93,24,1,250, + 0,254,0,3,255,128,15,1,224,30,0,240,60,0,120,56, + 0,56,120,0,60,112,0,28,240,0,30,240,0,30,224,0, + 14,224,0,14,224,0,14,224,0,14,240,0,30,240,0,30, + 112,124,28,121,222,60,121,135,56,61,3,112,29,3,112,31, + 3,224,15,131,192,3,255,128,0,255,192,0,3,198,0,1, + 198,0,1,228,0,1,252,0,0,248,0,0,112,21,25,75, + 23,1,0,255,254,0,63,255,128,14,7,192,14,1,192,14, + 1,224,14,0,224,14,0,224,14,1,224,14,1,224,14,1, + 192,14,3,192,14,15,0,15,252,0,15,254,0,14,15,0, + 14,7,0,14,7,128,14,3,128,14,3,128,14,3,136,14, + 3,136,14,3,136,14,3,216,63,129,240,255,225,224,17,25, + 75,20,2,0,15,241,0,63,251,0,112,31,0,96,7,0, + 224,7,0,224,3,0,224,1,0,240,1,0,240,0,0,126, + 0,0,127,224,0,31,252,0,7,254,0,0,127,0,0,15, + 128,128,7,128,128,3,128,192,3,128,192,3,128,192,3,128, + 224,7,128,240,7,0,248,14,0,223,252,0,135,240,0,19, + 25,75,21,1,0,255,255,224,255,255,224,240,227,224,224,224, + 224,192,224,96,192,224,96,128,224,32,128,224,32,128,224,32, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,3,248,0,15,254,0, + 26,25,100,26,0,0,255,224,255,192,63,128,63,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,15,0,24,0,7,0,24,0,7,128,48,0,3,224, + 240,0,1,255,192,0,0,127,0,0,23,25,75,23,0,0, + 255,195,254,62,0,248,30,0,112,30,0,112,14,0,96,15, + 0,96,15,0,64,7,0,192,7,128,192,7,128,128,3,129, + 128,3,193,128,3,193,0,1,195,0,1,227,0,1,226,0, + 0,230,0,0,246,0,0,244,0,0,124,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,16,0,31,25,100,31,0, + 0,255,31,241,254,126,7,192,124,60,3,128,56,28,3,128, + 48,30,3,192,48,30,3,192,96,14,3,192,96,14,3,224, + 96,15,3,224,96,7,6,224,192,7,6,224,192,7,132,240, + 192,7,140,112,192,3,140,113,128,3,140,121,128,3,200,57, + 128,1,216,57,0,1,248,63,0,1,248,31,0,0,240,31, + 0,0,240,30,0,0,240,30,0,0,224,14,0,0,96,12, + 0,0,96,12,0,23,25,75,22,0,0,255,199,252,63,1, + 240,31,0,224,15,1,192,15,129,128,7,131,128,3,195,0, + 3,230,0,1,238,0,0,252,0,0,248,0,0,120,0,0, + 124,0,0,124,0,0,254,0,1,223,0,1,143,0,3,135, + 128,3,7,128,6,3,192,14,3,224,12,1,224,28,0,240, + 62,0,248,255,135,254,23,25,75,23,0,0,255,131,254,126, + 0,248,62,0,112,30,0,96,15,0,224,15,0,192,7,129, + 128,7,193,128,3,195,0,3,227,0,1,230,0,0,246,0, + 0,252,0,0,124,0,0,120,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,254,0,3,255,128,17,25,75,19,1,0,127,255,128, + 127,255,128,120,15,0,112,15,0,96,30,0,96,62,0,96, + 60,0,64,124,0,64,120,0,0,240,0,0,240,0,1,224, + 0,3,224,0,3,192,0,7,128,0,7,128,128,15,0,128, + 31,0,128,30,1,128,62,1,128,60,1,128,120,3,128,120, + 7,128,255,255,128,255,255,128,7,29,29,11,3,252,254,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,254,15,25,50,20,2, + 0,224,0,112,0,112,0,56,0,56,0,28,0,28,0,14, + 0,14,0,7,0,7,0,3,128,3,128,3,128,1,192,1, + 192,0,224,0,224,0,112,0,112,0,56,0,56,0,28,0, + 28,0,14,7,29,29,11,1,252,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,254,16,13,26,20,2,12,3,192,3,192, + 7,224,7,224,14,112,14,112,28,56,28,56,56,28,56,28, + 112,14,112,14,224,7,16,2,4,16,0,252,255,255,255,255, + 7,6,6,11,1,17,192,224,112,56,12,6,16,16,32,17, + 1,0,15,192,63,240,120,120,112,56,96,56,0,56,1,248, + 15,248,60,56,112,56,224,56,224,56,224,120,241,253,127,159, + 62,14,15,25,50,17,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,57,224,59,248,62,28, + 60,28,60,14,56,14,56,14,56,14,56,14,56,14,56,14, + 60,14,60,28,62,28,55,248,33,224,12,16,32,14,1,0, + 7,128,31,224,56,112,112,240,112,240,224,96,224,0,224,0, + 224,0,224,0,224,0,112,16,112,48,56,96,63,192,15,128, + 16,25,50,18,1,0,0,12,0,124,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,7,156,31,220,56,124,112,60, + 112,60,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,60,120,124,31,220,7,159,14,16,32,16,1,0,7,192, + 31,240,56,120,112,56,96,28,224,28,224,28,255,252,224,0, + 224,0,224,0,240,4,112,12,120,56,63,240,15,192,14,25, + 50,11,0,0,1,248,7,28,14,28,12,28,28,8,28,0, + 28,0,28,0,28,0,255,192,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,255,192,16,23,46,17,1,249,7,159,31,251, + 56,115,112,56,112,56,112,56,112,56,112,56,56,112,31,224, + 55,128,96,0,96,0,127,224,127,248,63,252,48,62,96,14, + 224,14,224,14,248,60,127,248,15,192,19,25,75,20,0,0, + 12,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,112,0,29,252, + 0,31,30,0,30,14,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,255,63,224,9,24,48,10,1, + 0,24,0,60,0,60,0,24,0,0,0,0,0,0,0,0, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,255, + 128,9,31,62,10,254,249,3,0,7,128,7,128,3,0,0, + 0,0,0,0,0,0,0,3,128,31,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,67,128,227,0,227, + 0,230,0,124,0,19,25,75,20,0,0,12,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,127,128,28,30,0,28,24,0,28, + 48,0,28,96,0,28,192,0,29,192,0,31,224,0,30,240, + 0,28,120,0,28,60,0,28,28,0,28,14,0,28,15,0, + 28,7,128,255,31,224,9,25,50,11,1,0,12,0,28,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,27,16, + 64,27,0,0,28,240,120,0,253,252,254,0,31,29,142,0, + 30,15,7,0,30,15,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 255,63,159,224,19,16,48,19,0,0,28,120,0,253,254,0, + 31,142,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,255,31,224,14,16,32,16,1,0, + 7,128,31,224,56,112,112,56,112,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,112,56,56,112,31,224,7,128, + 16,23,46,19,1,249,25,240,251,252,62,30,60,14,60,7, + 56,7,56,7,56,7,56,7,56,7,56,7,60,14,60,14, + 62,28,59,252,57,240,56,0,56,0,56,0,56,0,56,0, + 124,0,255,0,16,23,46,17,1,249,7,196,31,236,56,60, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,60,56,124,63,220,15,156,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,14,16,32,15,0,0,28,120, + 253,252,31,60,30,60,30,24,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,11,16, + 32,15,2,0,30,192,127,192,225,192,192,192,192,192,240,64, + 254,0,127,128,63,192,7,224,128,224,192,96,192,96,224,224, + 255,192,159,0,12,23,46,13,0,0,4,0,4,0,12,0, + 12,0,28,0,28,0,60,0,255,224,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,16,28,16,28,48, + 28,48,30,96,15,224,7,192,18,16,48,20,0,0,28,7, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 15,0,28,15,0,30,63,0,15,247,192,7,199,0,17,16, + 48,17,0,0,255,31,128,124,7,0,60,6,0,30,6,0, + 30,12,0,14,12,0,15,8,0,7,24,0,7,24,0,7, + 176,0,3,176,0,3,224,0,1,224,0,1,224,0,0,192, + 0,0,192,0,24,16,48,24,0,0,254,127,63,120,60,14, + 56,28,12,60,28,28,28,30,24,28,30,24,14,54,16,14, + 39,48,15,103,48,7,103,96,7,67,96,3,195,192,3,195, + 192,3,129,192,1,129,128,1,129,128,16,16,32,19,1,0, + 255,127,60,28,30,24,14,48,15,48,7,96,3,192,3,192, + 1,224,3,224,6,112,12,120,28,56,56,60,120,30,254,127, + 18,23,69,20,1,249,255,31,192,60,7,0,60,6,0,28, + 6,0,30,12,0,14,12,0,15,8,0,7,24,0,7,24, + 0,7,176,0,3,176,0,3,224,0,1,224,0,1,224,0, + 0,192,0,0,192,0,1,128,0,1,128,0,99,0,0,243, + 0,0,230,0,0,252,0,0,112,0,0,13,16,32,15,1, + 0,127,248,120,120,96,240,96,224,65,224,67,192,3,128,7, + 128,15,0,14,0,30,8,60,8,56,24,120,56,240,248,255, + 248,6,30,30,11,3,252,12,28,56,48,48,48,48,48,48, + 48,48,48,48,112,224,224,112,48,48,48,48,48,48,48,48, + 48,48,56,28,12,2,25,25,20,9,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,6,30,30,11,2,252,192,224,112,48,48,48, + 48,48,48,48,48,48,48,56,28,28,56,48,48,48,48,48, + 48,48,48,48,48,112,224,192,16,4,8,20,2,6,30,3, + 127,135,225,254,192,120,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,9,1,1,4,25,25, + 10,3,249,96,240,240,96,0,0,0,96,96,96,96,96,96, + 96,96,96,96,96,240,240,240,240,240,240,96,13,24,48,18, + 2,252,0,24,0,24,0,16,0,48,7,224,31,240,56,112, + 112,112,112,240,224,224,224,128,225,128,225,0,227,0,227,0, + 242,16,118,48,60,96,31,224,15,128,8,0,24,0,16,0, + 16,0,16,23,46,19,1,0,1,240,7,252,14,14,12,14, + 28,30,28,30,28,28,28,0,30,0,14,0,14,0,255,248, + 15,0,7,0,7,0,7,0,6,0,6,0,126,3,223,7, + 143,142,223,252,112,240,16,17,34,19,1,3,67,194,239,247, + 127,254,60,60,112,14,112,14,224,7,224,7,224,7,224,7, + 224,7,112,14,112,14,60,60,127,254,239,247,3,192,17,23, + 69,19,0,0,255,31,128,60,15,0,28,6,0,30,6,0, + 14,4,0,15,12,0,7,8,0,7,24,0,3,144,0,3, + 176,0,1,224,0,0,224,0,7,252,0,7,252,0,0,224, + 0,0,224,0,7,252,0,7,252,0,0,224,0,0,224,0, + 0,224,0,7,248,0,7,248,0,2,25,25,20,9,0,192, + 192,192,192,192,192,192,192,192,192,0,0,0,0,0,192,192, + 192,192,192,192,192,192,192,192,12,30,60,17,2,251,15,0, + 57,192,48,192,113,192,113,192,112,128,56,0,60,0,30,0, + 15,0,63,128,99,192,193,224,192,240,192,112,224,48,240,48, + 120,48,60,96,31,192,15,0,7,128,3,192,1,192,16,224, + 56,224,56,224,48,192,57,192,15,0,9,3,6,11,1,19, + 99,0,247,128,99,0,24,25,75,25,0,0,0,126,0,3, + 255,128,7,129,224,14,0,112,24,0,56,48,0,28,48,127, + 12,96,227,134,97,129,134,67,128,134,195,0,131,199,0,3, + 199,0,3,199,0,3,199,0,3,195,0,3,67,128,6,97, + 193,134,97,227,140,48,126,12,24,0,24,28,0,112,7,1, + 224,3,255,128,0,126,0,11,14,28,11,0,11,63,0,99, + 128,97,128,99,128,15,128,121,128,225,128,193,128,227,128,125, + 224,0,0,0,0,0,0,255,192,11,11,22,14,1,2,4, + 32,12,96,24,192,49,128,115,128,231,0,115,128,49,128,24, + 192,12,96,4,32,16,9,18,20,1,3,255,255,255,255,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,8,3,3, + 11,1,7,255,255,255,24,24,72,25,0,0,0,126,0,3, + 255,192,15,1,240,28,0,56,56,0,24,51,252,12,96,199, + 14,96,195,6,64,195,6,192,195,3,192,198,3,192,252,3, + 192,204,3,192,206,3,192,198,3,96,199,6,96,195,6,96, + 195,142,51,227,204,24,0,24,28,0,112,7,0,224,3,255, + 192,0,126,0,10,2,4,11,0,19,255,192,255,192,9,9, + 18,13,2,14,62,0,119,0,193,128,193,128,128,128,193,128, + 193,128,119,0,62,0,16,16,32,20,2,0,1,128,1,128, + 1,128,1,128,255,255,255,255,1,128,1,128,1,128,1,128, + 1,128,0,0,0,0,0,0,255,255,255,255,10,14,28,11, + 0,9,63,0,115,128,97,128,113,128,113,128,1,128,3,0, + 7,0,14,0,28,0,56,64,112,64,255,192,255,192,9,14, + 28,11,1,9,62,0,99,0,113,128,97,128,1,128,7,0, + 62,0,7,0,3,0,97,128,225,128,195,128,231,0,126,0, + 7,6,6,11,2,19,6,14,28,56,96,192,17,23,69,20, + 1,249,56,14,0,248,62,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,30,0,56,30,0,60,126,0,63,238,0,47, + 143,128,32,0,0,32,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,32,0,0,17,30,90,20,2,251,15,255,128, + 63,255,128,120,198,0,240,198,0,240,198,0,240,198,0,240, + 198,0,240,198,0,240,198,0,240,198,0,120,198,0,124,198, + 0,63,198,0,15,198,0,0,198,0,0,198,0,0,198,0, + 0,198,0,0,198,0,0,198,0,0,198,0,0,198,0,0, + 198,0,0,198,0,0,198,0,0,198,0,0,198,0,0,198, + 0,3,255,128,3,255,128,4,4,4,9,2,6,96,240,240, + 96,6,7,7,11,1,249,16,32,120,12,12,140,120,8,14, + 14,11,1,9,56,248,24,24,24,24,24,24,24,24,24,24, + 24,255,11,14,28,10,255,11,14,0,59,128,96,192,224,224, + 192,96,192,96,224,224,96,192,59,128,14,0,0,0,0,0, + 0,0,127,192,11,11,22,14,1,2,132,0,198,0,99,0, + 49,128,57,192,28,224,57,192,49,128,99,0,198,0,132,0, + 25,23,92,28,1,0,56,0,24,0,248,0,48,0,24,0, + 48,0,24,0,96,0,24,0,192,0,24,0,128,0,24,1, + 128,0,24,3,0,0,24,6,0,0,24,6,4,0,24,12, + 12,0,24,24,28,0,24,24,60,0,255,48,108,0,0,96, + 76,0,0,192,204,0,0,193,140,0,1,131,12,0,3,3, + 255,128,3,0,12,0,6,0,12,0,12,0,12,0,8,0, + 63,0,25,23,92,28,1,0,56,0,24,0,248,0,48,0, + 24,0,32,0,24,0,96,0,24,0,192,0,24,1,128,0, + 24,1,128,0,24,3,0,0,24,6,0,0,24,6,62,0, + 24,12,99,0,24,24,193,128,24,48,193,128,255,48,225,128, + 0,96,195,0,0,192,7,0,0,192,14,0,1,128,28,0, + 3,0,56,0,3,0,112,128,6,0,224,128,12,1,255,128, + 8,1,255,128,25,23,92,28,1,0,62,0,8,0,99,0, + 24,0,113,128,48,0,97,128,48,0,1,128,96,0,7,0, + 192,0,30,1,128,0,7,1,128,0,3,131,0,0,97,134, + 4,0,225,134,12,0,195,140,28,0,231,24,60,0,126,48, + 108,0,0,48,204,0,0,96,204,0,0,193,140,0,0,195, + 12,0,1,131,255,128,3,0,12,0,6,0,12,0,6,0, + 12,0,12,0,63,0,12,25,50,14,1,249,3,0,7,128, + 7,128,3,0,0,0,0,0,0,0,3,0,3,0,2,0, + 2,0,6,0,12,0,28,0,56,0,120,0,112,0,240,0, + 224,112,224,112,224,112,240,48,112,48,60,224,31,192,23,32, + 96,23,0,0,6,0,0,7,0,0,3,128,0,1,192,0, + 0,96,0,0,48,0,0,0,0,0,16,0,0,56,0,0, + 56,0,0,120,0,0,124,0,0,124,0,0,220,0,0,222, + 0,1,158,0,1,142,0,1,143,0,3,7,0,3,7,128, + 3,7,128,6,3,128,7,255,192,7,255,192,12,1,192,12, + 1,224,12,1,224,24,0,240,24,0,240,56,0,248,124,1, + 252,254,3,254,23,32,96,23,0,0,0,1,128,0,3,128, + 0,7,0,0,14,0,0,24,0,0,48,0,0,0,0,0, + 16,0,0,56,0,0,56,0,0,120,0,0,124,0,0,124, + 0,0,220,0,0,222,0,1,158,0,1,142,0,1,143,0, + 3,7,0,3,7,128,3,7,128,6,3,128,7,255,192,7, + 255,192,12,1,192,12,1,224,12,1,224,24,0,240,24,0, + 240,56,0,248,124,1,252,254,3,254,23,31,93,23,0,0, + 0,24,0,0,60,0,0,126,0,0,195,0,1,129,128,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,30,90, + 23,0,0,0,241,128,1,255,0,3,30,0,0,0,0,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,30,90, + 23,0,0,1,134,0,3,207,0,1,134,0,0,0,0,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,32,96, + 23,0,0,0,120,0,0,204,0,0,132,0,0,132,0,0, + 204,0,0,120,0,0,0,0,0,16,0,0,56,0,0,56, + 0,0,120,0,0,124,0,0,124,0,0,220,0,0,222,0, + 1,158,0,1,142,0,1,143,0,3,7,0,3,7,128,3, + 7,128,6,3,128,7,255,192,7,255,192,12,1,192,12,1, + 224,12,1,224,24,0,240,24,0,240,56,0,248,124,1,252, + 254,3,254,30,25,100,32,0,0,1,255,255,252,0,127,255, + 252,0,29,192,124,0,25,192,28,0,25,192,28,0,49,192, + 12,0,49,192,140,0,97,192,132,0,97,193,132,0,193,193, + 128,0,193,195,128,1,129,255,128,1,129,255,128,3,1,195, + 128,3,255,193,128,7,255,193,128,6,1,192,132,12,1,192, + 132,12,1,192,4,24,1,192,12,24,1,192,12,48,1,192, + 28,48,1,192,124,120,7,255,252,254,31,255,252,20,32,96, + 22,1,249,0,248,96,3,255,96,15,7,224,28,1,224,60, + 0,224,56,0,224,120,0,96,120,0,96,240,0,96,240,0, + 32,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,48,120,0,48,120,0,32,120,0,96,60, + 0,96,28,0,192,14,1,128,7,207,0,1,254,0,0,32, + 0,0,64,0,0,240,0,0,24,0,0,24,0,1,24,0, + 0,240,0,20,32,96,24,1,0,3,0,0,3,128,0,1, + 192,0,0,224,0,0,48,0,0,24,0,0,0,0,255,255, + 240,63,255,240,14,1,240,14,0,112,14,0,112,14,0,48, + 14,4,48,14,4,16,14,4,16,14,12,0,14,60,0,15, + 252,0,15,252,0,14,60,0,14,12,0,14,12,0,14,4, + 16,14,4,16,14,0,16,14,0,48,14,0,48,14,0,112, + 14,1,240,63,255,240,255,255,240,20,32,96,24,1,0,0, + 1,128,0,3,128,0,7,0,0,14,0,0,24,0,0,48, + 0,0,0,0,255,255,240,63,255,240,14,1,240,14,0,112, + 14,0,112,14,0,48,14,4,48,14,4,16,14,4,16,14, + 12,0,14,60,0,15,252,0,15,252,0,14,60,0,14,12, + 0,14,12,0,14,4,16,14,4,16,14,0,16,14,0,48, + 14,0,48,14,0,112,14,1,240,63,255,240,255,255,240,20, + 32,96,24,1,0,0,48,0,0,120,0,0,252,0,1,134, + 0,3,3,0,0,0,0,0,0,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,112,14,0,48,14,4,48,14, + 4,16,14,4,16,14,12,0,14,60,0,15,252,0,15,252, + 0,14,60,0,14,12,0,14,12,0,14,4,16,14,4,16, + 14,0,16,14,0,48,14,0,48,14,0,112,14,1,240,63, + 255,240,255,255,240,20,30,90,24,1,0,0,198,0,1,239, + 0,0,198,0,0,0,0,0,0,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,112,14,0,48,14,4,48,14, + 4,16,14,4,16,14,12,0,14,60,0,15,252,0,15,252, + 0,14,60,0,14,12,0,14,12,0,14,4,16,14,4,16, + 14,0,16,14,0,48,14,0,48,14,0,112,14,1,240,63, + 255,240,255,255,240,11,32,64,13,1,0,96,0,112,0,56, + 0,28,0,6,0,3,0,0,0,255,224,63,128,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,63,128,255,224,11,32,64,13,1, + 0,0,192,1,192,3,128,7,0,12,0,24,0,0,0,255, + 224,63,128,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,63,128,255, + 224,11,31,62,13,1,0,6,0,15,0,31,128,48,192,96, + 96,0,0,255,224,63,128,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,63,128,255,224,11,30,60,13,1,0,49,128,123,192,49, + 128,0,0,0,0,255,224,63,128,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,63,128,255,224,22,25,75,24,1,0,255,252,0, + 255,255,128,30,7,192,14,1,224,14,0,240,14,0,112,14, + 0,120,14,0,120,14,0,56,14,0,60,14,0,60,14,0, + 60,127,224,60,127,224,60,14,0,60,14,0,60,14,0,60, + 14,0,56,14,0,120,14,0,120,14,0,112,14,0,224,14, + 1,192,255,255,128,255,254,0,26,30,120,28,1,0,0,30, + 48,0,0,63,224,0,0,99,192,0,0,0,0,0,0,0, + 0,0,255,0,255,192,31,0,63,0,15,128,12,0,15,192, + 12,0,15,192,12,0,13,224,12,0,13,240,12,0,12,248, + 12,0,12,120,12,0,12,124,12,0,12,62,12,0,12,30, + 12,0,12,31,12,0,12,15,140,0,12,7,140,0,12,7, + 204,0,12,3,204,0,12,1,236,0,12,0,236,0,12,0, + 252,0,12,0,124,0,12,0,60,0,12,0,60,0,63,0, + 28,0,255,192,12,0,22,32,96,24,1,0,6,0,0,7, + 0,0,3,128,0,1,192,0,0,96,0,0,48,0,0,0, + 0,1,254,0,7,255,128,15,3,192,28,0,224,60,0,240, + 56,0,112,120,0,120,120,0,120,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,56,120,0,120,120,0,120,56,0,112,60,0,240, + 28,0,224,15,3,192,7,255,128,1,254,0,22,32,96,24, + 1,0,0,3,0,0,7,0,0,14,0,0,28,0,0,48, + 0,0,96,0,0,0,0,1,254,0,7,255,128,15,3,192, + 28,0,224,60,0,240,56,0,112,120,0,120,120,0,120,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,56,120,0,120,120,0,120, + 56,0,112,60,0,240,28,0,224,15,3,192,7,255,128,1, + 254,0,22,31,93,24,1,0,0,48,0,0,120,0,0,252, + 0,1,134,0,3,3,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,22,30,90,24,1,0,0,241,128,1,255, + 0,3,30,0,0,0,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,22,30,90,24,1,0,0,198,0,1,239, + 0,0,198,0,0,0,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,17,15,45,20,2,1,224,3,128,112,7, + 0,56,14,0,28,28,0,14,56,0,7,112,0,3,224,0, + 1,192,0,3,224,0,7,112,0,14,56,0,28,28,0,56, + 14,0,112,7,0,224,3,128,22,28,84,24,1,254,0,0, + 24,1,254,48,7,255,176,14,3,224,28,0,224,60,1,240, + 56,1,240,120,3,120,120,6,120,240,6,60,240,12,60,240, + 24,60,240,56,60,240,48,60,240,96,60,240,224,60,240,192, + 60,113,128,56,123,0,120,123,0,120,62,0,112,60,0,240, + 30,1,224,31,3,192,55,255,128,113,254,0,96,0,0,192, + 0,0,26,32,128,26,0,0,0,48,0,0,0,56,0,0, + 0,28,0,0,0,14,0,0,0,3,0,0,0,1,128,0, + 0,0,0,0,255,224,255,192,63,128,63,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 15,0,24,0,7,0,24,0,7,128,48,0,3,224,240,0, + 1,255,192,0,0,127,0,0,26,32,128,26,0,0,0,0, + 48,0,0,0,112,0,0,0,224,0,0,1,192,0,0,3, + 0,0,0,6,0,0,0,0,0,0,255,224,255,192,63,128, + 63,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,15,0,24,0,7,0,24,0,7,128, + 48,0,3,224,240,0,1,255,192,0,0,127,0,0,26,31, + 124,26,0,0,0,6,0,0,0,15,0,0,0,31,128,0, + 0,48,192,0,0,96,96,0,0,0,0,0,255,224,255,192, + 63,128,63,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,15,0,24,0,7,0,24,0, + 7,128,48,0,3,224,240,0,1,255,192,0,0,127,0,0, + 26,30,120,26,0,0,0,48,192,0,0,121,224,0,0,48, + 192,0,0,0,0,0,0,0,0,0,255,224,255,192,63,128, + 63,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,15,0,24,0,7,0,24,0,7,128, + 48,0,3,224,240,0,1,255,192,0,0,127,0,0,23,32, + 96,23,0,0,0,1,128,0,3,128,0,7,0,0,14,0, + 0,24,0,0,48,0,0,0,0,255,131,254,126,0,248,62, + 0,112,30,0,96,15,0,224,15,0,192,7,129,128,7,193, + 128,3,195,0,3,227,0,1,230,0,0,246,0,0,252,0, + 0,124,0,0,120,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,254, + 0,3,255,128,20,25,75,22,1,0,255,224,0,31,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,15,254,0,15, + 255,128,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,3,224,15,255,192, + 15,255,0,14,0,0,14,0,0,14,0,0,14,0,0,31, + 0,0,255,224,0,17,26,78,19,0,255,3,248,0,7,156, + 0,14,14,0,14,15,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,14,0,28,14,0,28,248,0,28,248,0,28, + 14,0,28,7,0,28,7,0,28,7,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,231,128,28,231,0, + 60,231,0,252,254,0,0,56,0,16,23,46,17,1,0,12, + 0,14,0,7,0,3,128,0,192,0,96,0,0,7,192,31, + 240,120,120,112,56,112,56,112,56,1,248,15,248,60,56,112, + 56,224,56,224,56,224,120,240,253,127,159,63,14,16,23,46, + 17,1,0,0,48,0,112,0,224,1,192,3,0,6,0,0, + 0,7,192,31,240,120,120,112,56,112,56,112,56,1,248,15, + 248,60,56,112,56,224,56,224,56,224,120,240,253,127,159,63, + 14,16,22,44,17,1,0,3,0,7,128,15,192,24,96,48, + 48,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,21,42,17,1,0,15,24,31,240,49,224,0, + 0,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,21,42,17,1,0,12,96,30,240,12,96,0, + 0,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,23,46,17,1,0,7,128,12,192,8,64,8, + 64,12,192,7,128,0,0,7,192,31,240,120,120,112,56,112, + 56,112,56,1,248,15,248,60,56,112,56,224,56,224,56,224, + 120,240,253,127,159,62,14,23,16,48,25,1,0,15,195,224, + 63,231,248,112,124,28,112,60,12,112,56,14,112,56,14,1, + 248,14,15,255,254,60,56,0,112,56,0,240,56,0,224,60, + 2,224,124,6,240,254,28,127,207,248,63,3,240,12,23,46, + 14,1,249,7,128,31,224,56,112,112,240,112,240,224,96,224, + 0,224,0,224,0,224,0,240,0,240,16,120,48,124,96,63, + 192,15,0,2,0,4,0,15,0,1,128,1,128,17,128,15, + 0,14,23,46,16,1,0,24,0,28,0,14,0,7,0,1, + 128,0,192,0,0,7,192,31,240,56,56,112,24,112,28,240, + 28,240,28,255,252,224,0,224,0,240,0,240,4,120,12,60, + 56,31,240,7,192,14,23,46,16,1,0,0,24,0,56,0, + 112,0,224,1,128,3,0,0,0,7,192,31,240,56,120,112, + 56,96,28,224,28,224,28,255,252,224,0,224,0,240,0,240, + 4,120,12,60,56,31,240,7,192,14,22,44,16,1,0,3, + 0,7,128,15,192,24,96,48,48,0,0,7,192,31,240,56, + 56,112,24,112,28,240,28,240,28,255,252,224,0,224,0,240, + 0,240,4,120,12,60,56,31,240,7,192,14,21,42,16,1, + 0,12,96,30,240,12,96,0,0,0,0,7,192,31,240,56, + 56,112,24,112,28,240,28,240,28,255,252,224,0,224,0,240, + 0,240,4,120,12,60,24,31,240,7,192,9,23,46,11,1, + 0,192,0,224,0,112,0,56,0,12,0,6,0,0,0,252, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,9, + 23,46,11,1,0,1,128,3,128,7,0,14,0,24,0,48, + 0,0,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,255,128,10,22,44,11,0,0,12,0,30,0,63,0,97, + 128,192,192,0,0,126,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,127,192,9,21,42,11,1,0,99,0,247,128,99, + 0,0,0,0,0,252,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,255,128,14,25,50,17,1,0,48,0,60,0,14, + 224,7,192,15,128,13,192,0,224,0,240,0,112,7,248,31, + 248,56,120,112,60,112,60,224,28,224,28,224,28,224,28,224, + 28,224,28,240,60,112,56,120,120,63,240,15,192,19,21,63, + 19,0,0,3,198,0,7,252,0,12,120,0,0,0,0,0, + 0,0,28,120,0,253,254,0,31,158,0,30,15,0,30,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,255, + 31,224,14,23,46,16,1,0,48,0,56,0,28,0,14,0, + 3,0,1,128,0,0,7,128,31,224,56,112,112,56,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,240,60,112,56, + 120,120,31,224,7,128,14,23,46,16,1,0,0,24,0,56, + 0,112,0,224,1,128,3,0,0,0,7,128,31,224,56,112, + 112,56,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,56,120,120,31,224,7,128,14,22,44,16,1,0, + 3,0,7,128,15,192,24,96,48,48,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,14,21,42,16, + 1,0,15,24,31,240,49,224,0,0,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,14,21,42,16, + 1,0,24,192,61,224,24,192,0,0,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,16,16,32,20, + 2,0,1,128,3,192,3,192,1,128,0,0,0,0,0,0, + 255,255,255,255,0,0,0,0,0,0,1,128,3,192,3,192, + 1,128,14,22,44,16,1,253,0,24,0,24,0,48,7,240, + 31,240,56,112,112,248,112,216,225,156,225,156,227,28,227,28, + 230,28,230,28,236,56,124,56,120,112,63,224,63,128,48,0, + 96,0,96,0,18,23,69,20,0,0,6,0,0,7,0,0, + 3,128,0,1,192,0,0,96,0,0,48,0,0,0,0,28, + 7,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,15,0,28,15,0,14,63,0,15,247,192,7,199,0,18, + 23,69,20,0,0,0,12,0,0,28,0,0,56,0,0,112, + 0,0,192,0,1,128,0,0,0,0,28,7,0,252,63,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,15,0,28,15, + 0,14,63,0,15,247,192,7,199,0,18,22,66,20,0,0, + 0,192,0,1,224,0,3,240,0,6,24,0,12,12,0,0, + 0,0,28,7,0,252,63,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,15,0,28,15,0,14,63,0,15,247,192,7, + 199,0,18,21,63,20,0,0,3,24,0,7,188,0,3,24, + 0,0,0,0,0,0,0,28,7,0,252,63,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,15,0,28,15,0,14,63, + 0,15,247,192,7,199,0,17,30,90,19,1,249,0,12,0, + 0,28,0,0,56,0,0,112,0,0,192,0,1,128,0,0, + 0,0,255,31,128,124,7,0,60,6,0,28,6,0,30,12, + 0,14,12,0,15,8,0,7,24,0,7,24,0,7,176,0, + 3,176,0,3,224,0,1,224,0,1,224,0,0,192,0,0, + 192,0,1,128,0,1,128,0,99,0,0,227,0,0,230,0, + 0,252,0,0,112,0,0,16,29,58,19,1,249,56,0,248, + 0,56,0,56,0,56,0,56,0,56,240,59,252,63,30,60, + 14,60,15,56,7,56,7,56,7,56,7,56,7,56,7,60, + 15,60,14,62,30,59,252,57,240,56,0,56,0,56,0,56, + 0,56,0,56,0,255,0,18,28,84,20,1,249,3,24,0, + 7,188,0,3,24,0,0,0,0,0,0,0,255,31,192,124, + 7,0,60,6,0,28,6,0,30,12,0,14,12,0,15,8, + 0,7,24,0,7,24,0,7,176,0,3,176,0,3,224,0, + 1,224,0,1,224,0,0,192,0,0,192,0,1,128,0,1, + 128,0,99,0,0,227,0,0,230,0,0,252,0,0,112,0, + 0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=16 h=25 x= 3 y=11 dx=20 dy= 0 ascent=25 len=50 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24n[722] U8G_SECTION(".progmem.u8g_font_ncenR24n") = { + 0,39,50,250,245,24,0,0,0,0,42,57,0,25,250,24, + 0,12,14,28,17,2,11,6,0,6,0,6,0,198,112,230, + 112,127,224,31,128,31,0,127,192,230,112,198,112,6,0,6, + 0,6,0,16,17,34,20,2,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,255,255,255,255,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,5,10,10,9,2, + 250,112,248,248,120,24,24,48,96,224,128,8,3,3,11,1, + 7,255,255,255,4,4,4,9,2,0,96,240,240,96,10,25, + 50,9,255,0,0,192,0,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,48,0,48,0,48,0,96,0, + 96,0,96,0,192,0,16,24,48,18,2,0,3,192,15,240, + 28,56,24,24,56,28,120,30,112,14,240,15,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,112,14, + 120,30,56,28,24,24,28,56,15,240,3,192,13,24,48,18, + 3,0,3,0,7,0,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,15,128, + 255,248,15,24,48,18,1,0,7,224,31,248,56,28,96,30, + 112,14,120,14,120,14,120,14,48,30,0,28,0,28,0,56, + 0,120,0,112,0,224,1,192,3,128,7,2,14,2,28,6, + 56,6,127,254,255,254,255,254,15,24,48,18,1,0,7,224, + 31,248,56,56,112,28,120,28,120,28,48,28,0,28,0,56, + 0,112,1,224,15,240,0,248,0,60,0,28,0,30,96,14, + 240,14,240,14,240,30,224,28,120,124,63,240,15,192,16,24, + 48,18,1,0,0,48,0,48,0,112,0,240,1,240,1,240, + 3,112,6,112,6,112,12,112,24,112,24,112,48,112,96,112, + 96,112,192,112,255,255,255,255,0,112,0,112,0,112,0,112, + 0,248,3,254,14,24,48,18,2,0,56,8,63,248,63,240, + 63,224,48,0,48,0,32,0,96,0,99,192,111,240,124,120, + 112,56,96,60,0,28,0,28,0,28,96,28,240,28,240,28, + 240,60,224,56,112,120,127,240,31,128,15,24,48,18,1,0, + 3,240,15,252,28,62,56,30,56,30,48,12,112,0,112,0, + 112,0,241,224,247,248,254,60,252,28,248,30,240,14,240,14, + 240,14,112,14,112,14,112,30,56,28,56,60,31,240,7,192, + 13,24,48,18,3,0,255,248,255,248,255,248,192,16,192,48, + 128,32,128,96,128,64,0,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,7,0,7,0,7,0,15,0,15,0, + 15,0,15,0,6,0,15,24,48,18,1,0,7,224,31,248, + 60,56,56,28,112,28,112,12,112,12,120,24,60,56,63,112, + 31,224,7,240,7,248,29,252,56,124,112,30,112,30,224,14, + 224,14,224,14,112,28,120,60,63,248,15,224,15,24,48,18, + 1,0,15,192,63,240,120,120,112,56,240,60,224,28,224,28, + 224,30,224,30,240,30,240,62,120,126,120,126,63,222,31,158, + 0,30,0,28,0,28,96,56,240,56,240,112,241,224,127,192, + 63,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=31 h=31 x= 9 y=17 dx=31 dy= 0 ascent=27 len=100 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24r[5367] U8G_SECTION(".progmem.u8g_font_ncenR24r") = { + 0,39,50,250,245,25,5,159,15,28,32,127,249,27,249,25, + 249,0,0,0,9,1,1,4,25,25,10,3,0,96,240,240, + 240,240,240,240,96,96,96,96,96,96,96,96,96,96,96,0, + 0,0,96,240,240,96,9,8,16,13,2,17,227,128,227,128, + 227,128,227,128,65,0,65,0,65,0,65,0,16,23,46,19, + 2,0,3,12,3,12,3,12,7,28,6,24,6,24,6,24, + 127,255,127,255,6,24,14,56,12,56,12,48,255,254,255,254, + 12,48,12,48,28,112,28,112,24,96,24,96,24,96,24,96, + 14,31,62,18,2,252,2,0,2,0,2,0,15,192,63,240, + 114,112,226,56,194,120,194,120,194,48,194,0,226,0,250,0, + 127,0,63,192,31,240,3,248,2,124,2,60,98,28,242,12, + 242,12,226,28,194,24,226,120,127,240,31,192,2,0,2,0, + 2,0,2,0,24,25,75,27,1,255,3,128,32,15,192,224, + 28,227,192,56,127,192,56,97,128,112,97,128,112,99,0,240, + 99,0,224,102,0,224,196,0,224,204,0,225,136,28,115,24, + 126,62,16,227,0,49,195,0,99,195,0,99,131,0,199,131, + 0,199,3,1,135,6,1,135,6,3,7,12,2,3,152,6, + 1,240,4,0,0,22,25,75,27,2,0,1,248,0,7,188, + 0,6,28,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,15,112,0,7,224,0,7,128,0,15, + 199,252,59,193,240,113,224,224,113,240,192,224,240,192,224,249, + 128,224,125,128,240,63,4,240,30,4,248,15,12,126,63,248, + 63,243,248,31,193,224,3,8,8,7,2,17,224,224,224,224, + 64,64,64,64,8,29,29,11,2,252,1,7,6,12,24,48, + 48,48,96,96,96,96,224,224,224,224,224,96,96,96,96,48, + 48,16,24,12,6,7,3,8,29,29,11,2,252,192,224,96, + 48,24,8,12,12,6,6,6,6,7,7,7,7,7,6,6, + 6,6,12,12,28,24,48,96,192,192,12,14,28,17,2,11, + 6,0,6,0,6,0,198,112,230,112,127,224,31,128,31,0, + 127,192,230,112,198,112,6,0,6,0,6,0,16,17,34,20, + 2,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 255,255,255,255,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,5,10,10,9,2,250,112,248,248,120,24,24, + 48,96,224,128,8,3,3,11,1,7,255,255,255,4,4,4, + 9,2,0,96,240,240,96,10,25,50,9,255,0,0,192,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,6, + 0,6,0,6,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,96,0,192,0,16, + 24,48,18,2,0,3,192,15,240,28,56,24,24,56,28,120, + 30,112,14,240,15,240,15,240,15,240,15,240,15,240,15,240, + 15,240,15,240,15,240,15,112,14,120,30,56,28,24,24,28, + 56,15,240,3,192,13,24,48,18,3,0,3,0,7,0,255, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,15,128,255,248,15,24,48,18,1, + 0,7,224,31,248,56,28,96,30,112,14,120,14,120,14,120, + 14,48,30,0,28,0,28,0,56,0,120,0,112,0,224,1, + 192,3,128,7,2,14,2,28,6,56,6,127,254,255,254,255, + 254,15,24,48,18,1,0,7,224,31,248,56,56,112,28,120, + 28,120,28,48,28,0,28,0,56,0,112,1,224,15,240,0, + 248,0,60,0,28,0,30,96,14,240,14,240,14,240,30,224, + 28,120,124,63,240,15,192,16,24,48,18,1,0,0,48,0, + 48,0,112,0,240,1,240,1,240,3,112,6,112,6,112,12, + 112,24,112,24,112,48,112,96,112,96,112,192,112,255,255,255, + 255,0,112,0,112,0,112,0,112,0,248,3,254,14,24,48, + 18,2,0,56,8,63,248,63,240,63,224,48,0,48,0,32, + 0,96,0,99,192,111,240,124,120,112,56,96,60,0,28,0, + 28,0,28,96,28,240,28,240,28,240,60,224,56,112,120,127, + 240,31,128,15,24,48,18,1,0,3,240,15,252,28,62,56, + 30,56,30,48,12,112,0,112,0,112,0,241,224,247,248,254, + 60,252,28,248,30,240,14,240,14,240,14,112,14,112,14,112, + 30,56,28,56,60,31,240,7,192,13,24,48,18,3,0,255, + 248,255,248,255,248,192,16,192,48,128,32,128,96,128,64,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,7, + 0,7,0,7,0,15,0,15,0,15,0,15,0,6,0,15, + 24,48,18,1,0,7,224,31,248,60,56,56,28,112,28,112, + 12,112,12,120,24,60,56,63,112,31,224,7,240,7,248,29, + 252,56,124,112,30,112,30,224,14,224,14,224,14,112,28,120, + 60,63,248,15,224,15,24,48,18,1,0,15,192,63,240,120, + 120,112,56,240,60,224,28,224,28,224,30,224,30,240,30,240, + 62,120,126,120,126,63,222,31,158,0,30,0,28,0,28,96, + 56,240,56,240,112,241,224,127,192,63,0,4,16,16,9,3, + 0,96,240,240,96,0,0,0,0,0,0,0,0,96,240,240, + 96,5,21,21,9,1,251,48,120,120,48,0,0,0,0,0, + 0,0,0,48,120,120,56,24,16,48,96,192,16,18,36,20, + 2,255,0,1,0,7,0,31,0,124,1,240,7,192,31,0, + 124,0,240,0,240,0,124,0,31,0,7,192,1,240,0,124, + 0,31,0,7,0,1,16,8,16,20,2,4,255,255,255,255, + 0,0,0,0,0,0,0,0,255,255,255,255,16,18,36,20, + 2,255,128,0,224,0,248,0,62,0,15,128,3,224,0,248, + 0,62,0,15,0,15,0,62,0,248,3,224,15,128,62,0, + 248,0,224,0,128,0,12,25,50,14,1,0,63,128,115,224, + 192,224,192,240,224,112,224,112,224,112,0,240,0,240,1,224, + 1,192,3,128,3,0,6,0,4,0,4,0,12,0,12,0, + 0,0,0,0,0,0,12,0,30,0,30,0,12,0,22,25, + 75,25,1,0,0,254,0,3,255,128,15,135,192,30,0,224, + 28,0,112,48,0,56,48,0,24,96,251,152,97,207,140,227, + 143,140,199,135,140,199,7,12,207,7,12,207,15,8,206,15, + 24,206,14,24,206,30,48,102,62,96,103,126,192,51,231,152, + 56,0,56,28,0,112,15,129,224,7,255,128,0,254,0,23, + 25,75,23,0,0,0,16,0,0,56,0,0,56,0,0,120, + 0,0,124,0,0,124,0,0,220,0,0,222,0,1,158,0, + 1,142,0,1,143,0,3,7,0,3,7,128,3,7,128,6, + 3,128,7,255,192,7,255,192,12,1,192,12,1,224,12,1, + 224,24,0,240,24,0,240,56,0,248,124,1,252,254,3,254, + 20,25,75,23,1,0,255,254,0,63,255,128,14,7,192,14, + 1,192,14,1,224,14,1,224,14,1,224,14,1,224,14,1, + 192,14,1,192,14,3,128,15,255,0,15,252,0,14,15,128, + 14,3,192,14,1,224,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,240,14,1,224,14,3,224,63,255,192,255,255, + 0,20,25,75,22,1,0,1,252,96,7,255,96,14,3,224, + 28,1,224,60,0,224,56,0,224,120,0,96,120,0,96,240, + 0,32,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,48,120,0,48,120,0,48, + 120,0,96,60,0,96,28,0,192,15,3,128,7,255,0,1, + 252,0,22,25,75,25,1,0,255,254,0,63,255,192,14,3, + 224,14,0,240,14,0,112,14,0,120,14,0,120,14,0,60, + 14,0,60,14,0,60,14,0,60,14,0,60,14,0,60,14, + 0,60,14,0,60,14,0,60,14,0,60,14,0,60,14,0, + 56,14,0,120,14,0,112,14,0,224,14,3,224,63,255,192, + 255,254,0,20,25,75,24,1,0,255,255,240,63,255,240,14, + 1,240,14,0,112,14,0,112,14,0,48,14,4,48,14,4, + 16,14,4,16,14,12,0,14,60,0,15,252,0,15,252,0, + 14,60,0,14,12,0,14,12,0,14,4,16,14,4,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 240,255,255,240,20,25,75,22,1,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,48,14,0,48,14,0,16,14, + 4,16,14,4,16,14,12,0,14,12,0,14,60,0,15,252, + 0,15,252,0,14,28,0,14,12,0,14,4,0,14,4,0, + 14,4,0,14,0,0,14,0,0,14,0,0,14,0,0,63, + 128,0,255,224,0,24,25,75,24,1,0,1,254,48,7,255, + 176,15,3,240,30,0,240,60,0,112,56,0,112,120,0,48, + 112,0,48,112,0,16,240,0,16,240,0,0,240,0,0,240, + 0,0,240,0,0,240,7,255,240,0,248,240,0,112,112,0, + 112,112,0,112,120,0,112,56,0,240,28,0,240,15,1,176, + 7,255,48,1,254,16,25,25,100,27,1,0,255,227,255,128, + 63,128,254,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,15,255,248,0,15,255,248,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,63,128,254,0,255,227,255,128, + 11,25,50,13,1,0,255,224,63,128,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,63,128,255,224,17,25,75,18,0,0,3,255, + 128,0,124,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,112,56, + 0,248,56,0,248,56,0,248,56,0,240,56,0,192,120,0, + 224,112,0,127,240,0,31,192,0,25,25,100,25,1,0,255, + 227,255,0,63,129,252,0,14,0,240,0,14,0,224,0,14, + 1,192,0,14,1,128,0,14,3,0,0,14,6,0,0,14, + 14,0,0,14,28,0,0,14,56,0,0,14,124,0,0,14, + 254,0,0,15,222,0,0,15,143,0,0,15,7,128,0,14, + 7,192,0,14,3,192,0,14,1,224,0,14,1,240,0,14, + 0,240,0,14,0,120,0,14,0,124,0,63,0,62,0,255, + 192,255,128,20,25,75,22,1,0,255,224,0,63,128,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,16,14,0,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 224,255,255,224,29,25,100,30,0,0,127,128,15,248,31,128, + 15,192,15,128,15,128,15,192,15,128,13,192,27,128,13,192, + 27,128,13,224,19,128,12,224,51,128,12,224,51,128,12,240, + 35,128,12,112,99,128,12,112,99,128,12,120,99,128,12,56, + 195,128,12,56,195,128,12,60,195,128,12,28,131,128,12,29, + 131,128,12,31,131,128,12,31,3,128,12,15,3,128,12,15, + 3,128,12,14,3,128,63,6,15,224,255,198,63,248,26,25, + 100,28,1,0,255,0,255,192,31,0,63,0,15,128,12,0, + 15,192,12,0,15,192,12,0,13,224,12,0,13,240,12,0, + 12,248,12,0,12,120,12,0,12,124,12,0,12,62,12,0, + 12,30,12,0,12,31,12,0,12,15,140,0,12,7,140,0, + 12,7,204,0,12,3,204,0,12,1,236,0,12,0,236,0, + 12,0,252,0,12,0,124,0,12,0,60,0,12,0,60,0, + 63,0,28,0,255,192,12,0,22,25,75,24,1,0,1,254, + 0,7,255,128,15,3,192,28,0,224,60,0,240,56,0,112, + 120,0,120,112,0,56,240,0,60,240,0,60,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,240,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,28,0,224, + 15,3,192,7,255,128,1,254,0,20,25,75,22,1,0,255, + 254,0,63,255,128,14,7,192,14,1,224,14,0,240,14,0, + 240,14,0,112,14,0,112,14,0,240,14,0,240,14,1,224, + 14,7,192,15,255,128,15,254,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,63,128,0,255,224,0,23,31,93,24,1,250, + 0,254,0,3,255,128,15,1,224,30,0,240,60,0,120,56, + 0,56,120,0,60,112,0,28,240,0,30,240,0,30,224,0, + 14,224,0,14,224,0,14,224,0,14,240,0,30,240,0,30, + 112,124,28,121,222,60,121,135,56,61,3,112,29,3,112,31, + 3,224,15,131,192,3,255,128,0,255,192,0,3,198,0,1, + 198,0,1,228,0,1,252,0,0,248,0,0,112,21,25,75, + 23,1,0,255,254,0,63,255,128,14,7,192,14,1,192,14, + 1,224,14,0,224,14,0,224,14,1,224,14,1,224,14,1, + 192,14,3,192,14,15,0,15,252,0,15,254,0,14,15,0, + 14,7,0,14,7,128,14,3,128,14,3,128,14,3,136,14, + 3,136,14,3,136,14,3,216,63,129,240,255,225,224,17,25, + 75,20,2,0,15,241,0,63,251,0,112,31,0,96,7,0, + 224,7,0,224,3,0,224,1,0,240,1,0,240,0,0,126, + 0,0,127,224,0,31,252,0,7,254,0,0,127,0,0,15, + 128,128,7,128,128,3,128,192,3,128,192,3,128,192,3,128, + 224,7,128,240,7,0,248,14,0,223,252,0,135,240,0,19, + 25,75,21,1,0,255,255,224,255,255,224,240,227,224,224,224, + 224,192,224,96,192,224,96,128,224,32,128,224,32,128,224,32, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,3,248,0,15,254,0, + 26,25,100,26,0,0,255,224,255,192,63,128,63,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,15,0,24,0,7,0,24,0,7,128,48,0,3,224, + 240,0,1,255,192,0,0,127,0,0,23,25,75,23,0,0, + 255,195,254,62,0,248,30,0,112,30,0,112,14,0,96,15, + 0,96,15,0,64,7,0,192,7,128,192,7,128,128,3,129, + 128,3,193,128,3,193,0,1,195,0,1,227,0,1,226,0, + 0,230,0,0,246,0,0,244,0,0,124,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,16,0,31,25,100,31,0, + 0,255,31,241,254,126,7,192,124,60,3,128,56,28,3,128, + 48,30,3,192,48,30,3,192,96,14,3,192,96,14,3,224, + 96,15,3,224,96,7,6,224,192,7,6,224,192,7,132,240, + 192,7,140,112,192,3,140,113,128,3,140,121,128,3,200,57, + 128,1,216,57,0,1,248,63,0,1,248,31,0,0,240,31, + 0,0,240,30,0,0,240,30,0,0,224,14,0,0,96,12, + 0,0,96,12,0,23,25,75,22,0,0,255,199,252,63,1, + 240,31,0,224,15,1,192,15,129,128,7,131,128,3,195,0, + 3,230,0,1,238,0,0,252,0,0,248,0,0,120,0,0, + 124,0,0,124,0,0,254,0,1,223,0,1,143,0,3,135, + 128,3,7,128,6,3,192,14,3,224,12,1,224,28,0,240, + 62,0,248,255,135,254,23,25,75,23,0,0,255,131,254,126, + 0,248,62,0,112,30,0,96,15,0,224,15,0,192,7,129, + 128,7,193,128,3,195,0,3,227,0,1,230,0,0,246,0, + 0,252,0,0,124,0,0,120,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,254,0,3,255,128,17,25,75,19,1,0,127,255,128, + 127,255,128,120,15,0,112,15,0,96,30,0,96,62,0,96, + 60,0,64,124,0,64,120,0,0,240,0,0,240,0,1,224, + 0,3,224,0,3,192,0,7,128,0,7,128,128,15,0,128, + 31,0,128,30,1,128,62,1,128,60,1,128,120,3,128,120, + 7,128,255,255,128,255,255,128,7,29,29,11,3,252,254,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,254,15,25,50,20,2, + 0,224,0,112,0,112,0,56,0,56,0,28,0,28,0,14, + 0,14,0,7,0,7,0,3,128,3,128,3,128,1,192,1, + 192,0,224,0,224,0,112,0,112,0,56,0,56,0,28,0, + 28,0,14,7,29,29,11,1,252,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,254,16,13,26,20,2,12,3,192,3,192, + 7,224,7,224,14,112,14,112,28,56,28,56,56,28,56,28, + 112,14,112,14,224,7,16,2,4,16,0,252,255,255,255,255, + 7,6,6,11,1,17,192,224,112,56,12,6,16,16,32,17, + 1,0,15,192,63,240,120,120,112,56,96,56,0,56,1,248, + 15,248,60,56,112,56,224,56,224,56,224,120,241,253,127,159, + 62,14,15,25,50,17,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,57,224,59,248,62,28, + 60,28,60,14,56,14,56,14,56,14,56,14,56,14,56,14, + 60,14,60,28,62,28,55,248,33,224,12,16,32,14,1,0, + 7,128,31,224,56,112,112,240,112,240,224,96,224,0,224,0, + 224,0,224,0,224,0,112,16,112,48,56,96,63,192,15,128, + 16,25,50,18,1,0,0,12,0,124,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,7,156,31,220,56,124,112,60, + 112,60,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,60,120,124,31,220,7,159,14,16,32,16,1,0,7,192, + 31,240,56,120,112,56,96,28,224,28,224,28,255,252,224,0, + 224,0,224,0,240,4,112,12,120,56,63,240,15,192,14,25, + 50,11,0,0,1,248,7,28,14,28,12,28,28,8,28,0, + 28,0,28,0,28,0,255,192,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,255,192,16,23,46,17,1,249,7,159,31,251, + 56,115,112,56,112,56,112,56,112,56,112,56,56,112,31,224, + 55,128,96,0,96,0,127,224,127,248,63,252,48,62,96,14, + 224,14,224,14,248,60,127,248,15,192,19,25,75,20,0,0, + 12,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,112,0,29,252, + 0,31,30,0,30,14,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,255,63,224,9,24,48,10,1, + 0,24,0,60,0,60,0,24,0,0,0,0,0,0,0,0, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,255, + 128,9,31,62,10,254,249,3,0,7,128,7,128,3,0,0, + 0,0,0,0,0,0,0,3,128,31,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,67,128,227,0,227, + 0,230,0,124,0,19,25,75,20,0,0,12,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,127,128,28,30,0,28,24,0,28, + 48,0,28,96,0,28,192,0,29,192,0,31,224,0,30,240, + 0,28,120,0,28,60,0,28,28,0,28,14,0,28,15,0, + 28,7,128,255,31,224,9,25,50,11,1,0,12,0,28,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,27,16, + 64,27,0,0,28,240,120,0,253,252,254,0,31,29,142,0, + 30,15,7,0,30,15,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 255,63,159,224,19,16,48,19,0,0,28,120,0,253,254,0, + 31,142,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,255,31,224,14,16,32,16,1,0, + 7,128,31,224,56,112,112,56,112,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,112,56,56,112,31,224,7,128, + 16,23,46,19,1,249,25,240,251,252,62,30,60,14,60,7, + 56,7,56,7,56,7,56,7,56,7,56,7,60,14,60,14, + 62,28,59,252,57,240,56,0,56,0,56,0,56,0,56,0, + 124,0,255,0,16,23,46,17,1,249,7,196,31,236,56,60, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,60,56,124,63,220,15,156,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,14,16,32,15,0,0,28,120, + 253,252,31,60,30,60,30,24,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,11,16, + 32,15,2,0,30,192,127,192,225,192,192,192,192,192,240,64, + 254,0,127,128,63,192,7,224,128,224,192,96,192,96,224,224, + 255,192,159,0,12,23,46,13,0,0,4,0,4,0,12,0, + 12,0,28,0,28,0,60,0,255,224,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,16,28,16,28,48, + 28,48,30,96,15,224,7,192,18,16,48,20,0,0,28,7, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 15,0,28,15,0,30,63,0,15,247,192,7,199,0,17,16, + 48,17,0,0,255,31,128,124,7,0,60,6,0,30,6,0, + 30,12,0,14,12,0,15,8,0,7,24,0,7,24,0,7, + 176,0,3,176,0,3,224,0,1,224,0,1,224,0,0,192, + 0,0,192,0,24,16,48,24,0,0,254,127,63,120,60,14, + 56,28,12,60,28,28,28,30,24,28,30,24,14,54,16,14, + 39,48,15,103,48,7,103,96,7,67,96,3,195,192,3,195, + 192,3,129,192,1,129,128,1,129,128,16,16,32,19,1,0, + 255,127,60,28,30,24,14,48,15,48,7,96,3,192,3,192, + 1,224,3,224,6,112,12,120,28,56,56,60,120,30,254,127, + 18,23,69,20,1,249,255,31,192,60,7,0,60,6,0,28, + 6,0,30,12,0,14,12,0,15,8,0,7,24,0,7,24, + 0,7,176,0,3,176,0,3,224,0,1,224,0,1,224,0, + 0,192,0,0,192,0,1,128,0,1,128,0,99,0,0,243, + 0,0,230,0,0,252,0,0,112,0,0,13,16,32,15,1, + 0,127,248,120,120,96,240,96,224,65,224,67,192,3,128,7, + 128,15,0,14,0,30,8,60,8,56,24,120,56,240,248,255, + 248,6,30,30,11,3,252,12,28,56,48,48,48,48,48,48, + 48,48,48,48,112,224,224,112,48,48,48,48,48,48,48,48, + 48,48,56,28,12,2,25,25,20,9,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,6,30,30,11,2,252,192,224,112,48,48,48, + 48,48,48,48,48,48,48,56,28,28,56,48,48,48,48,48, + 48,48,48,48,48,112,224,192,16,4,8,20,2,6,30,3, + 127,135,225,254,192,120,255}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w=11 h= 9 x= 1 y= 4 dx=12 dy= 0 ascent= 9 len=10 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01[1535] U8G_SECTION(".progmem.u8g_font_orgv01") = { + 1,11,11,0,254,5,0,249,1,238,32,255,255,9,254,5, + 255,2,0,64,2,21,37,128,128,128,0,128,6,49,65,160, + 2,85,101,80,248,80,248,80,2,85,101,248,160,248,40,248, + 2,85,101,136,16,32,64,136,2,85,101,240,144,248,144,232, + 6,17,33,128,2,37,53,64,128,128,128,64,2,37,53,128, + 64,64,64,128,3,51,67,160,64,160,3,51,67,64,224,64, + 1,18,34,128,128,4,65,81,240,2,17,33,128,2,85,101, + 8,16,32,64,128,2,85,101,248,136,136,136,248,2,21,37, + 128,128,128,128,128,2,85,101,248,8,248,128,248,2,85,101, + 248,8,248,8,248,2,85,101,136,136,248,8,8,2,85,101, + 248,128,248,8,248,2,85,101,248,128,248,136,248,2,85,101, + 248,8,8,8,8,2,85,101,248,136,248,136,248,2,85,101, + 248,136,248,8,248,2,20,36,128,0,0,128,2,20,36,128, + 0,128,128,2,53,69,32,64,128,64,32,3,67,83,240,0, + 240,2,53,69,128,64,32,64,128,2,85,101,248,8,56,0, + 32,2,85,101,248,168,184,128,248,2,85,101,248,136,248,136, + 136,2,85,101,240,136,240,136,240,2,85,101,248,128,128,128, + 248,2,85,101,240,136,136,136,240,2,85,101,248,128,248,128, + 248,2,85,101,248,128,248,128,128,2,85,101,248,128,184,136, + 248,2,85,101,136,136,248,136,136,2,85,101,248,32,32,32, + 248,2,85,101,120,16,16,144,248,2,85,101,136,176,192,176, + 136,2,85,101,128,128,128,128,248,2,85,101,248,168,168,168, + 168,2,85,101,248,136,136,136,136,2,85,101,248,136,136,136, + 248,2,85,101,248,136,248,128,128,2,85,101,248,136,136,152, + 248,2,85,101,248,136,248,144,144,2,85,101,248,128,248,8, + 248,2,85,101,248,32,32,32,32,2,85,101,136,136,136,136, + 248,2,85,101,136,136,136,80,32,2,85,101,168,168,168,168, + 248,2,85,101,136,80,32,80,136,2,85,101,136,136,80,32, + 32,2,85,101,248,8,248,128,248,2,37,53,192,128,128,128, + 192,2,85,101,128,64,32,16,8,2,37,53,192,64,64,64, + 192,5,50,66,64,160,1,81,97,248,6,17,33,128,2,68, + 84,240,16,240,240,2,69,85,128,240,144,144,240,2,68,84, + 240,128,128,240,2,69,85,16,240,144,144,240,2,68,84,240, + 240,128,240,2,53,69,96,64,224,64,64,1,69,85,240,144, + 144,240,16,2,69,85,128,240,144,144,144,2,20,36,128,128, + 128,128,1,37,53,64,64,64,64,192,2,69,85,128,160,240, + 144,144,2,21,37,128,128,128,128,128,2,84,100,248,168,136, + 136,2,68,84,240,144,144,144,2,68,84,240,144,144,240,1, + 69,85,240,144,144,240,128,1,69,85,240,144,144,240,32,2, + 68,84,240,128,128,128,2,68,84,64,112,16,240,2,85,101, + 32,248,32,32,32,2,68,84,144,144,144,240,2,68,84,144, + 144,144,112,2,84,100,136,136,168,248,2,68,84,144,96,96, + 144,1,69,85,144,144,144,240,16,2,68,84,32,224,128,240, + 2,53,69,32,64,192,64,32,2,21,37,128,128,128,128,128, + 2,53,69,128,64,96,64,128,3,83,99,8,248,128,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 2,20,36,128,0,128,128,2,85,101,32,248,160,248,32,2, + 85,101,64,224,64,72,120,2,85,101,136,112,80,112,136,2, + 85,101,136,248,32,112,32,2,21,37,128,128,0,128,128,2, + 86,102,248,128,248,248,8,248,4,81,97,248,18,85,117,248, + 168,200,168,248,2,181,202,251,224,138,0,251,224,136,32,139, + 224,19,83,115,72,144,72,3,66,82,240,16,255,2,85,101, + 248,248,200,200,248,6,81,97,248,2,0,112,2,0,112,2, + 0,112,2,0,112,2,0,112,2,0,112,2,0,112,2,0, + 112,2,0,112,2,0,112,2,0,112,4,83,99,144,72,144, + 2,0,112,2,0,112,2,0,112,18,85,117,32,0,224,128, + 248,2,88,104,64,32,0,248,136,248,136,136,2,88,104,16, + 32,0,248,136,248,136,136,2,88,104,32,80,0,248,136,248, + 136,136,2,89,105,8,248,128,0,248,136,248,136,136,2,87, + 103,80,0,248,136,248,136,136,2,87,103,32,0,248,136,248, + 136,136,2,85,101,248,160,248,160,184,0,87,103,248,128,128, + 128,248,16,48,2,88,104,64,32,0,248,128,248,128,248,2, + 88,104,16,32,0,248,128,248,128,248,2,88,104,32,80,0, + 248,128,248,128,248,2,86,102,80,248,128,248,128,248,2,88, + 104,64,32,0,248,32,32,32,248,2,88,104,16,32,0,248, + 32,32,32,248,2,88,104,32,80,0,248,32,32,32,248,2, + 87,103,80,0,248,32,32,32,248,2,85,101,240,136,232,136, + 240,2,89,105,8,248,128,0,248,136,136,136,136,2,88,104, + 64,32,0,248,136,136,136,248,2,88,104,16,32,0,248,136, + 136,136,248,2,88,104,32,80,0,248,136,136,136,248,2,89, + 105,8,248,128,0,248,136,136,136,248,2,87,103,80,0,248, + 136,136,136,248,3,51,67,160,64,160,2,85,101,248,152,168, + 200,248,2,87,103,64,32,136,136,136,136,248,2,87,103,16, + 32,136,136,136,136,248,2,86,102,32,80,136,136,136,248,2, + 86,102,80,0,136,136,136,248,2,88,104,16,32,0,136,136, + 80,32,32,18,85,117,128,240,136,240,128,1,86,102,240,136, + 176,136,176,128,2,68,84,240,16,240,240,2,71,87,64,32, + 0,240,16,240,240,2,71,87,32,64,0,240,16,240,240,2, + 71,87,96,144,0,240,16,240,240,2,70,86,144,0,240,16, + 240,240,2,70,86,32,0,240,16,240,240,2,116,132,254,30, + 240,254,0,70,86,240,128,128,240,32,96,2,71,87,64,32, + 0,240,240,128,240,2,71,87,32,64,0,240,240,128,240,2, + 71,87,96,144,0,240,240,128,240,2,70,86,144,0,240,240, + 128,240,2,39,39,128,64,0,64,64,64,64,2,39,39,64, + 128,0,128,128,128,128,2,55,39,64,160,0,64,64,64,64, + 2,54,38,160,0,64,64,64,64,2,85,85,56,16,240,144, + 240,2,71,87,80,160,0,240,144,144,144,2,71,87,64,32, + 0,240,144,144,240,2,71,87,32,64,0,240,144,144,240,2, + 71,87,96,144,0,240,144,144,240,2,71,87,80,160,0,240, + 144,144,240,2,70,86,144,0,240,144,144,240,2,85,101,32, + 0,248,0,32,2,68,84,240,176,208,240,2,71,87,64,32, + 0,144,144,144,240,2,71,87,32,64,0,144,144,144,240,2, + 71,87,96,144,0,144,144,144,240,2,70,86,144,0,144,144, + 144,240,1,72,88,32,64,0,144,144,144,240,16,18,85,117, + 128,240,136,240,128,1,71,87,144,0,144,144,144,240,16}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01n[130] U8G_SECTION(".progmem.u8g_font_orgv01n") = { + 1,11,11,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,51,67,160,64,160,3,51,67,64,224,64,1,18,34, + 128,128,4,65,81,240,2,17,33,128,2,85,101,8,16,32, + 64,128,2,85,101,248,136,136,136,248,2,21,37,128,128,128, + 128,128,2,85,101,248,8,248,128,248,2,85,101,248,8,248, + 8,248,2,85,101,136,136,248,8,8,2,85,101,248,128,248, + 8,248,2,85,101,248,128,248,136,248,2,85,101,248,8,8, + 8,8,2,85,101,248,136,248,136,248,2,85,101,248,136,248, + 8,248}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01r[719] U8G_SECTION(".progmem.u8g_font_orgv01r") = { + 1,11,11,0,254,5,0,249,1,238,32,127,255,5,255,5, + 255,2,0,64,2,21,37,128,128,128,0,128,6,49,65,160, + 2,85,101,80,248,80,248,80,2,85,101,248,160,248,40,248, + 2,85,101,136,16,32,64,136,2,85,101,240,144,248,144,232, + 6,17,33,128,2,37,53,64,128,128,128,64,2,37,53,128, + 64,64,64,128,3,51,67,160,64,160,3,51,67,64,224,64, + 1,18,34,128,128,4,65,81,240,2,17,33,128,2,85,101, + 8,16,32,64,128,2,85,101,248,136,136,136,248,2,21,37, + 128,128,128,128,128,2,85,101,248,8,248,128,248,2,85,101, + 248,8,248,8,248,2,85,101,136,136,248,8,8,2,85,101, + 248,128,248,8,248,2,85,101,248,128,248,136,248,2,85,101, + 248,8,8,8,8,2,85,101,248,136,248,136,248,2,85,101, + 248,136,248,8,248,2,20,36,128,0,0,128,2,20,36,128, + 0,128,128,2,53,69,32,64,128,64,32,3,67,83,240,0, + 240,2,53,69,128,64,32,64,128,2,85,101,248,8,56,0, + 32,2,85,101,248,168,184,128,248,2,85,101,248,136,248,136, + 136,2,85,101,240,136,240,136,240,2,85,101,248,128,128,128, + 248,2,85,101,240,136,136,136,240,2,85,101,248,128,248,128, + 248,2,85,101,248,128,248,128,128,2,85,101,248,128,184,136, + 248,2,85,101,136,136,248,136,136,2,85,101,248,32,32,32, + 248,2,85,101,120,16,16,144,248,2,85,101,136,176,192,176, + 136,2,85,101,128,128,128,128,248,2,85,101,248,168,168,168, + 168,2,85,101,248,136,136,136,136,2,85,101,248,136,136,136, + 248,2,85,101,248,136,248,128,128,2,85,101,248,136,136,152, + 248,2,85,101,248,136,248,144,144,2,85,101,248,128,248,8, + 248,2,85,101,248,32,32,32,32,2,85,101,136,136,136,136, + 248,2,85,101,136,136,136,80,32,2,85,101,168,168,168,168, + 248,2,85,101,136,80,32,80,136,2,85,101,136,136,80,32, + 32,2,85,101,248,8,248,128,248,2,37,53,192,128,128,128, + 192,2,85,101,128,64,32,16,8,2,37,53,192,64,64,64, + 192,5,50,66,64,160,1,81,97,248,6,17,33,128,2,68, + 84,240,16,240,240,2,69,85,128,240,144,144,240,2,68,84, + 240,128,128,240,2,69,85,16,240,144,144,240,2,68,84,240, + 240,128,240,2,53,69,96,64,224,64,64,1,69,85,240,144, + 144,240,16,2,69,85,128,240,144,144,144,2,20,36,128,128, + 128,128,1,37,53,64,64,64,64,192,2,69,85,128,160,240, + 144,144,2,21,37,128,128,128,128,128,2,84,100,248,168,136, + 136,2,68,84,240,144,144,144,2,68,84,240,144,144,240,1, + 69,85,240,144,144,240,128,1,69,85,240,144,144,240,32,2, + 68,84,240,128,128,128,2,68,84,64,112,16,240,2,85,101, + 32,248,32,32,32,2,68,84,144,144,144,240,2,68,84,144, + 144,144,112,2,84,100,136,136,168,248,2,68,84,144,96,96, + 144,1,69,85,144,144,144,240,16,2,68,84,32,224,128,240, + 2,53,69,32,64,192,64,32,2,21,37,128,128,128,128,128, + 2,53,69,128,64,96,64,128,3,83,99,8,248,128,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 5 y=14 dx=27 dy= 0 ascent=24 len=72 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =18 descent=-6 + Max Font ascent =24 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18[7637] U8G_SECTION(".progmem.u8g_font_osb18") = { + 0,70,31,234,249,18,4,190,10,54,32,255,250,24,250,18, + 250,0,0,0,7,0,0,4,18,18,6,1,0,96,240,240, + 240,240,240,96,96,96,96,96,64,0,0,96,240,240,96,6, + 6,6,10,2,12,204,204,204,204,204,204,15,18,36,19,2, + 0,6,24,6,24,4,16,4,16,12,48,255,254,255,254,12, + 48,8,32,8,32,24,96,24,96,255,254,255,254,16,64,16, + 64,48,192,48,192,11,22,44,14,2,254,9,0,9,0,31, + 128,105,64,73,32,201,32,201,96,249,224,249,64,127,0,63, + 128,31,192,15,192,73,224,233,224,201,96,137,96,137,96,73, + 192,63,128,9,0,9,0,17,18,54,21,2,0,56,4,0, + 68,12,0,198,8,0,198,24,0,198,48,0,198,32,0,198, + 96,0,76,64,0,56,192,0,1,142,0,1,27,0,3,49, + 128,2,49,128,4,49,128,12,49,128,8,49,128,24,17,0, + 16,14,0,17,18,54,19,1,0,3,192,0,4,32,0,12, + 32,0,12,32,0,12,32,0,14,64,0,15,128,0,7,0, + 0,15,143,128,27,195,0,49,194,0,96,226,0,224,244,0, + 224,120,0,240,56,0,240,60,0,126,223,128,63,15,0,2, + 6,6,6,2,12,192,192,192,192,192,192,7,23,23,9,1, + 251,2,4,8,16,48,96,96,96,224,224,224,224,224,224,224, + 96,96,96,48,16,8,4,2,7,23,23,9,0,251,128,64, + 32,16,24,12,12,14,14,14,14,14,14,14,14,14,12,12, + 24,16,32,64,128,9,10,20,13,2,8,24,0,24,0,201, + 128,235,128,28,0,44,0,235,128,217,128,24,0,24,0,21, + 21,63,23,1,253,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,255,255,248,255,255,248,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,4,9,9,7,2,251,224,240,240,240,16,32, + 32,64,128,6,3,3,8,1,5,252,252,252,4,4,4,8, + 2,0,96,240,240,96,9,23,46,11,1,251,1,128,1,128, + 1,0,3,0,3,0,2,0,6,0,6,0,4,0,12,0, + 12,0,8,0,24,0,24,0,24,0,16,0,48,0,48,0, + 32,0,96,0,96,0,64,0,192,0,12,18,36,15,1,0, + 15,0,25,128,48,192,112,224,112,224,240,224,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,112,224,112,224,48,192, + 25,128,15,0,8,18,18,15,3,0,24,56,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,255,11,18,36,15, + 2,0,31,0,113,192,96,224,224,224,240,224,248,224,121,192, + 1,192,3,0,6,0,8,0,48,32,64,32,64,32,255,224, + 191,224,143,192,135,128,12,18,36,15,1,0,31,0,49,192, + 96,224,112,224,120,224,120,224,0,192,1,128,62,0,1,192, + 0,224,0,240,112,240,248,240,240,240,192,224,65,192,63,0, + 11,18,36,15,2,0,3,0,7,0,7,0,15,0,15,0, + 23,0,55,0,39,0,103,0,71,0,199,0,135,0,255,224, + 7,0,7,0,7,0,7,0,63,224,11,18,36,15,2,0, + 65,128,127,128,126,0,120,0,64,0,64,0,95,0,99,128, + 65,192,65,224,1,224,33,224,241,224,241,224,225,192,193,192, + 67,128,62,0,11,18,36,15,2,0,7,128,24,64,48,224, + 113,224,113,224,240,0,240,0,247,128,249,192,240,224,240,224, + 240,224,240,224,112,224,112,224,48,192,57,192,15,0,11,18, + 36,15,2,0,156,64,190,96,255,32,255,224,128,32,128,64, + 128,64,0,128,1,128,3,0,7,0,6,0,14,0,30,0, + 30,0,30,0,30,0,12,0,12,18,36,15,1,0,31,128, + 32,64,64,32,192,32,192,32,240,32,252,64,127,128,127,192, + 63,224,103,240,193,240,192,112,192,48,192,48,96,32,112,64, + 31,128,12,18,36,15,2,0,31,0,113,128,96,192,224,224, + 224,224,224,240,224,240,96,240,113,240,30,240,0,240,0,240, + 56,224,120,224,120,224,97,192,33,128,30,0,4,12,12,8, + 2,0,96,240,240,96,0,0,0,0,96,240,240,96,4,17, + 17,7,2,251,96,240,240,96,0,0,0,0,224,240,240,240, + 16,32,32,64,128,19,21,63,24,2,252,0,0,96,0,1, + 224,0,7,128,0,14,0,0,56,0,0,224,0,3,128,0, + 15,0,0,60,0,0,112,0,0,224,0,0,120,0,0,28, + 0,0,7,0,0,1,192,0,0,112,0,0,60,0,0,15, + 0,0,3,128,0,0,224,0,0,32,21,7,21,23,1,3, + 255,255,248,255,255,248,0,0,0,0,0,0,0,0,0,255, + 255,248,255,255,248,19,21,63,24,2,252,192,0,0,240,0, + 0,60,0,0,14,0,0,3,128,0,0,224,0,0,56,0, + 0,30,0,0,7,128,0,1,192,0,0,224,0,3,192,0, + 7,0,0,28,0,0,112,0,1,192,0,7,128,0,30,0, + 0,56,0,0,224,0,0,128,0,0,8,18,18,12,2,0, + 60,78,135,135,135,78,12,24,16,32,36,36,24,0,24,60, + 60,24,18,18,54,20,1,0,3,240,0,12,12,0,24,3, + 0,48,237,0,97,173,128,99,28,128,199,28,192,207,24,192, + 206,24,192,206,56,192,206,56,192,206,56,128,78,49,128,110, + 91,0,35,156,0,48,0,0,12,4,0,3,248,0,17,18, + 54,19,1,0,0,192,0,0,192,0,0,192,0,1,224,0, + 1,224,0,1,224,0,2,240,0,2,240,0,4,112,0,4, + 120,0,4,120,0,8,56,0,15,252,0,8,60,0,16,28, + 0,16,30,0,48,30,0,252,127,128,15,18,36,18,2,0, + 255,224,56,56,56,56,56,28,56,28,56,28,56,56,56,48, + 63,192,56,56,56,28,56,30,56,30,56,30,56,30,56,28, + 56,56,255,240,13,18,36,17,2,0,7,136,24,120,48,56, + 112,24,112,24,240,8,240,8,240,8,240,0,240,0,240,0, + 240,8,240,8,112,8,112,8,56,16,24,32,7,192,16,18, + 36,19,2,0,255,224,56,56,56,28,56,14,56,14,56,14, + 56,15,56,15,56,15,56,15,56,15,56,15,56,14,56,14, + 56,12,56,28,56,56,255,224,14,18,36,18,2,0,255,252, + 56,28,56,12,56,12,56,4,56,68,56,64,56,192,56,192, + 63,192,56,192,56,68,56,68,56,4,56,4,56,12,56,28, + 255,252,14,18,36,17,2,0,255,252,56,60,56,28,56,12, + 56,4,56,68,56,68,56,192,56,192,63,192,56,192,56,64, + 56,64,56,0,56,0,56,0,56,0,255,0,15,18,36,18, + 2,0,7,136,24,104,48,56,112,24,112,8,112,8,240,8, + 240,0,240,0,241,254,240,56,240,56,240,56,112,56,112,56, + 48,40,24,72,15,136,17,18,54,20,2,0,255,127,128,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,63,254,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,255, + 127,128,8,18,18,11,2,0,255,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,255,11,18,36,13,1,0, + 31,224,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,115,128,243,128,243,128,227,128,195,128, + 67,0,60,0,17,18,54,19,2,0,254,127,0,56,24,0, + 56,16,0,56,32,0,56,64,0,56,192,0,57,128,0,59, + 192,0,59,192,0,61,224,0,57,240,0,56,240,0,56,248, + 0,56,120,0,56,124,0,56,60,0,56,62,0,254,127,128, + 14,18,36,17,2,0,255,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,4,56,4,56,4, + 56,12,56,12,56,28,56,60,255,252,20,18,54,22,1,0, + 254,3,240,30,3,192,30,3,192,31,5,192,31,5,192,23, + 5,192,23,133,192,23,137,192,19,201,192,19,201,192,17,209, + 192,17,241,192,17,241,192,16,241,192,16,225,192,16,225,192, + 56,97,192,254,111,240,17,18,54,18,1,0,252,63,128,60, + 14,0,62,4,0,31,4,0,31,4,0,31,132,0,23,196, + 0,19,196,0,17,228,0,17,244,0,16,244,0,16,124,0, + 16,124,0,16,60,0,16,28,0,16,28,0,56,12,0,254, + 4,0,15,18,36,18,2,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,18,36,18, + 2,0,255,240,56,56,56,28,56,30,56,30,56,30,56,30, + 56,28,56,56,63,224,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,255,128,15,24,48,18,2,250,7,192,8,32, + 56,56,48,24,112,28,112,28,240,30,240,30,240,30,240,30, + 240,30,240,30,112,28,112,28,51,152,52,176,28,226,7,194, + 0,194,0,194,0,230,0,254,0,124,0,56,16,18,36,19, + 2,0,255,224,56,120,56,56,56,60,56,60,56,60,56,56, + 56,112,63,192,56,96,56,48,56,56,56,56,56,57,56,57, + 56,57,56,57,255,158,12,18,36,15,2,0,30,32,97,160, + 192,224,192,96,224,32,240,32,252,0,126,0,63,128,15,192, + 135,224,129,240,128,240,192,48,192,48,224,32,176,96,143,128, + 15,18,36,18,2,0,255,254,231,30,199,14,135,14,135,6, + 135,6,7,2,7,2,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,31,224,18,18,54,20,2,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,17,18,54,19,2,0,255,63,128,60, + 6,0,60,4,0,30,4,0,30,8,0,30,8,0,15,8, + 0,15,16,0,7,144,0,7,144,0,7,160,0,3,224,0, + 3,224,0,3,192,0,1,192,0,1,192,0,1,192,0,0, + 128,0,26,18,72,27,1,0,255,191,223,192,30,15,6,0, + 30,15,6,0,15,15,4,0,15,15,132,0,15,15,132,0, + 7,143,140,0,7,139,200,0,7,147,200,0,3,211,200,0, + 3,209,240,0,3,225,240,0,1,225,240,0,1,224,240,0, + 1,224,224,0,0,192,224,0,0,192,96,0,0,192,64,0, + 16,18,36,19,2,0,255,63,62,24,30,16,31,16,15,32, + 15,224,7,192,7,192,3,192,3,224,3,224,2,240,4,240, + 8,120,8,120,16,60,48,60,252,255,16,18,36,19,2,0, + 254,127,60,12,60,8,30,16,30,16,30,16,15,32,15,32, + 7,64,7,192,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,15,240,13,18,36,16,2,0,127,248,112,120,96,240, + 97,240,65,224,67,224,3,192,7,192,7,128,15,0,15,0, + 30,0,30,8,60,8,124,24,120,24,248,56,255,248,6,22, + 22,10,2,252,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,252,9,23,46,11,1,251, + 192,0,64,0,96,0,96,0,32,0,48,0,48,0,16,0, + 24,0,24,0,24,0,8,0,12,0,12,0,4,0,6,0, + 6,0,2,0,3,0,3,0,1,0,1,128,1,128,6,22, + 22,10,2,252,252,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,11,9,18,15,2,9, + 4,0,12,0,30,0,27,0,51,0,49,128,96,192,192,192, + 192,96,13,2,4,13,0,252,255,248,255,248,4,4,4,11, + 2,13,192,224,96,48,11,12,24,13,1,0,30,0,99,0, + 99,128,115,128,35,128,31,128,115,128,227,128,227,160,227,160, + 247,160,121,192,12,18,36,13,0,0,248,0,56,0,56,0, + 56,0,56,0,56,0,59,128,60,224,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,36,192,35,128,9,12, + 24,12,1,0,30,0,49,0,113,128,227,128,227,128,224,0, + 224,0,224,0,224,128,112,128,49,0,30,0,12,18,36,13, + 1,0,7,192,1,192,1,192,1,192,1,192,1,192,29,192, + 115,192,99,192,225,192,225,192,225,192,225,192,225,192,225,192, + 99,192,115,192,29,240,9,12,24,12,1,0,30,0,51,0, + 99,128,227,128,227,128,255,128,224,0,224,0,224,128,112,128, + 49,0,30,0,9,18,36,9,1,0,15,0,29,128,59,128, + 59,128,57,0,56,0,252,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,252,0,12,18, + 36,14,1,250,30,112,51,176,113,240,113,192,113,192,113,192, + 51,128,30,0,96,0,127,128,127,192,63,224,96,224,128,96, + 128,96,128,64,64,192,63,0,12,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,192,62,224,60,224, + 56,224,56,224,56,224,56,224,56,224,56,224,56,224,56,224, + 253,240,5,18,18,7,1,0,112,112,112,32,0,0,240,112, + 112,112,112,112,112,112,112,112,112,248,7,24,24,8,255,250, + 14,14,14,4,0,0,62,14,14,14,14,14,14,14,14,14, + 14,14,14,110,238,238,204,120,13,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,240,56,192,56,128, + 57,0,57,0,59,128,63,128,57,192,57,192,56,224,56,224, + 255,248,7,18,18,8,0,0,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,18,12,36,19,1,0, + 243,142,0,125,247,0,121,231,0,113,199,0,113,199,0,113, + 199,0,113,199,0,113,199,0,113,199,0,113,199,0,113,199, + 0,251,239,192,11,12,24,13,1,0,243,128,125,192,121,192, + 113,192,113,192,113,192,113,192,113,192,113,192,113,192,113,192, + 251,224,10,12,24,12,1,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 12,18,36,13,0,250,251,128,60,192,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,60,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,11,18,36,13,1,250, + 28,64,50,64,99,192,225,192,225,192,225,192,225,192,225,192, + 225,192,99,192,115,192,61,192,1,192,1,192,1,192,1,192, + 1,192,7,224,9,12,24,11,1,0,243,0,117,128,123,128, + 123,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 248,0,9,12,24,11,1,0,57,0,199,0,195,0,225,0, + 240,0,124,0,63,0,143,128,131,128,193,128,225,0,158,0, + 8,17,17,10,1,0,16,16,16,48,112,254,112,112,112,112, + 112,113,113,113,113,114,60,12,12,24,13,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,12,24,13,1,0,253,240,112,64,56, + 64,56,128,28,128,28,128,29,0,15,0,14,0,14,0,6, + 0,4,0,19,12,36,19,0,0,253,251,224,56,112,128,28, + 112,128,28,113,0,28,121,0,14,185,0,14,154,0,14,158, + 0,7,28,0,7,12,0,2,12,0,2,8,0,12,12,24, + 13,0,0,253,240,56,64,28,128,31,0,15,0,15,0,7, + 0,7,128,11,192,17,192,17,224,253,240,12,18,36,12,0, + 250,252,240,112,64,56,64,56,128,28,128,28,128,29,0,15, + 0,15,0,7,0,6,0,6,0,2,0,4,0,116,0,116, + 0,104,0,56,0,10,12,24,12,1,0,127,192,99,128,71, + 128,71,0,15,0,14,0,28,0,60,64,56,64,120,64,112, + 192,255,192,8,23,23,10,1,251,3,28,56,56,56,56,56, + 56,56,56,48,192,48,56,56,56,56,56,56,56,56,28,3, + 2,23,23,8,3,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,23,23, + 11,2,251,192,112,56,56,56,56,56,56,56,56,28,7,28, + 56,56,56,56,56,56,56,56,112,192,14,5,10,16,1,4, + 120,8,255,4,143,196,131,252,64,120,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,7,0, + 0,4,18,18,6,1,250,96,240,240,96,0,0,64,96,96, + 96,96,96,240,240,240,240,240,96,9,18,36,15,3,253,4, + 0,4,0,4,0,30,0,53,0,117,128,231,128,231,128,228, + 0,228,0,228,0,228,0,100,128,116,128,31,0,4,0,4, + 0,4,0,16,18,36,19,2,0,0,248,1,132,3,6,7, + 14,7,14,7,0,7,0,63,0,7,240,7,128,3,128,3, + 128,3,128,3,1,123,2,143,204,135,252,120,240,12,12,24, + 14,1,3,132,16,223,176,112,224,96,96,192,48,192,48,192, + 48,192,48,64,96,96,96,127,224,207,48,14,18,36,14,0, + 0,254,124,56,16,60,16,60,32,30,32,30,64,14,64,15, + 128,7,128,127,240,7,0,127,240,7,0,7,0,7,0,7, + 0,7,0,31,224,2,22,22,8,3,252,192,192,192,192,192, + 192,192,192,192,0,0,0,0,192,192,192,192,192,192,192,192, + 192,11,23,46,15,1,251,15,0,48,128,96,192,97,192,97, + 192,112,128,124,0,63,0,223,128,143,192,129,224,192,96,248, + 32,126,32,63,64,15,128,3,192,49,192,112,192,112,192,96, + 128,33,128,30,0,8,3,3,12,2,14,231,231,231,18,18, + 54,20,1,0,3,240,0,12,12,0,16,2,0,33,201,0, + 67,56,128,70,24,128,142,8,64,142,8,64,142,0,64,142, + 0,64,142,8,64,142,8,64,70,8,128,67,16,128,33,225, + 0,16,2,0,12,12,0,3,240,0,7,9,9,10,1,9, + 120,204,204,60,76,204,206,126,254,7,10,10,12,3,1,32, + 100,68,204,204,204,204,196,100,34,13,7,14,15,1,4,255, + 248,255,248,0,24,0,24,0,24,0,24,0,24,6,3,3, + 8,1,5,252,252,252,18,18,54,20,1,0,3,240,0,12, + 12,0,16,2,0,47,225,0,71,48,128,71,56,128,135,56, + 64,135,48,64,135,192,64,135,48,64,135,56,64,135,56,64, + 71,58,128,71,58,128,47,157,0,16,2,0,12,12,0,3, + 240,0,7,2,2,11,2,14,254,254,8,7,7,14,3,11, + 60,102,131,129,129,194,126,21,18,54,23,1,254,0,48,0, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,255, + 255,248,255,255,248,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,0,0,255,255,248, + 255,255,248,7,11,11,11,2,7,124,206,206,238,28,48,98, + 66,254,190,8,8,11,11,12,2,7,60,198,231,231,6,56, + 6,103,231,199,60,4,4,4,11,5,13,48,112,96,192,13, + 18,36,15,1,250,97,128,225,192,225,192,225,192,225,192,225, + 192,225,192,64,136,64,136,65,248,127,120,94,48,64,0,96, + 0,96,0,112,0,112,0,112,0,13,21,42,15,1,253,31, + 248,126,96,126,96,254,96,254,96,254,96,254,96,126,96,62, + 96,14,96,6,96,6,96,6,96,6,96,6,96,6,96,6, + 96,6,96,6,96,6,96,6,96,4,4,4,8,2,6,96, + 240,240,96,5,5,5,11,3,250,32,96,24,24,240,6,11, + 11,11,3,7,48,240,112,112,112,112,112,112,112,112,252,7, + 9,9,9,1,9,56,68,198,198,198,198,68,56,254,7,10, + 10,13,3,1,152,140,68,102,102,102,102,70,76,136,18,18, + 54,22,3,0,48,8,0,240,8,0,112,16,0,112,48,0, + 112,32,0,112,96,0,112,64,0,112,195,0,112,135,0,113, + 143,0,253,15,0,3,23,0,2,39,0,4,39,0,12,63, + 192,8,7,0,24,7,0,16,31,192,18,18,54,23,3,0, + 48,4,0,240,8,0,112,24,0,112,16,0,112,48,0,112, + 32,0,112,96,0,112,79,0,112,147,192,113,177,192,253,57, + 192,3,3,128,2,6,0,6,8,0,4,16,64,8,63,192, + 24,47,192,16,39,128,20,18,54,23,2,0,124,2,0,199, + 6,0,231,4,0,6,12,0,56,8,0,6,16,0,7,16, + 0,231,33,192,231,97,192,198,67,192,60,133,192,0,133,192, + 1,9,192,1,9,192,2,31,240,6,1,192,4,1,192,8, + 7,240,8,18,18,12,2,250,48,120,120,48,56,68,68,4, + 8,24,48,114,97,225,225,225,114,60,17,23,69,19,1,1, + 7,0,0,7,0,0,1,128,0,0,128,0,0,0,0,0, + 192,0,0,192,0,1,192,0,1,224,0,1,224,0,3,224, + 0,2,240,0,2,240,0,4,240,0,4,120,0,4,120,0, + 8,56,0,15,252,0,8,60,0,16,28,0,16,30,0,48, + 30,0,252,255,128,17,23,69,19,1,1,0,56,0,0,48, + 0,0,96,0,0,192,0,0,0,0,0,192,0,0,192,0, + 0,192,0,1,224,0,1,224,0,1,224,0,2,240,0,2, + 240,0,4,112,0,4,120,0,4,120,0,8,56,0,15,252, + 0,8,60,0,16,28,0,16,30,0,48,30,0,252,127,128, + 17,23,69,19,1,0,0,192,0,1,192,0,3,96,0,6, + 24,0,0,0,0,0,192,0,0,192,0,0,192,0,1,224, + 0,1,224,0,1,224,0,2,240,0,2,240,0,4,112,0, + 4,120,0,4,120,0,8,56,0,15,252,0,8,60,0,16, + 28,0,16,30,0,48,30,0,252,127,128,17,23,69,19,1, + 0,1,8,0,7,240,0,4,240,0,0,0,0,0,0,0, + 0,192,0,0,192,0,1,192,0,1,224,0,1,224,0,3, + 224,0,2,240,0,2,240,0,4,240,0,4,120,0,4,120, + 0,8,56,0,15,252,0,8,60,0,16,28,0,16,30,0, + 48,30,0,252,255,128,16,23,46,18,1,0,14,112,14,112, + 14,112,0,0,0,0,1,128,1,128,1,128,3,192,3,192, + 3,192,5,224,5,224,4,224,8,240,8,240,8,112,31,248, + 16,120,16,60,48,60,48,60,252,255,18,23,69,19,1,0, + 1,224,0,2,16,0,2,16,0,1,224,0,0,0,0,0, + 192,0,0,192,0,0,224,0,1,224,0,1,224,0,1,240, + 0,2,240,0,2,240,0,4,120,0,4,120,0,4,120,0, + 8,60,0,15,252,0,8,28,0,16,30,0,16,30,0,48, + 30,0,252,127,192,23,18,54,25,1,0,0,127,254,0,60, + 14,0,60,6,0,124,6,0,92,2,0,220,34,0,156,32, + 1,156,96,1,28,96,3,31,224,2,28,96,6,28,34,7, + 252,34,8,28,2,8,28,2,24,28,6,56,28,14,254,127, + 254,13,24,48,17,2,250,7,136,24,120,48,56,112,24,112, + 24,240,8,240,8,240,8,240,0,240,0,240,0,240,8,240, + 8,112,8,112,8,56,16,24,32,7,192,2,0,3,128,0, + 192,0,192,8,192,7,128,14,23,46,18,2,1,28,0,12, + 0,6,0,1,0,0,0,255,252,56,28,56,12,56,12,56, + 4,56,68,56,64,56,192,56,192,63,192,56,192,56,68,56, + 68,56,4,56,4,56,12,56,28,255,252,14,23,46,18,2, + 1,0,224,0,192,1,128,2,0,0,0,255,252,56,28,56, + 12,56,12,56,4,56,68,56,64,56,192,56,192,63,192,56, + 192,56,68,56,68,56,4,56,4,56,12,56,28,255,252,14, + 23,46,18,2,0,3,0,7,128,12,192,16,32,0,0,255, + 252,56,28,56,12,56,12,56,4,56,68,56,64,56,192,56, + 192,63,192,56,192,56,68,56,68,56,4,56,4,56,12,56, + 28,255,252,14,23,46,18,2,0,28,224,28,224,28,224,0, + 0,0,0,255,252,56,28,56,12,56,12,56,4,56,68,56, + 64,56,192,56,192,63,192,56,192,56,68,56,68,56,4,56, + 12,56,12,56,28,255,252,8,23,23,11,2,1,192,96,48, + 16,0,255,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,255,8,23,23,11,2,1,7,14,8,16,0,255, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 255,8,23,23,11,2,0,16,56,108,130,0,255,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,255,8,23, + 23,11,2,0,231,231,231,0,0,255,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,255,16,18,36,19,2, + 0,255,224,56,56,56,28,56,14,56,14,56,14,56,15,56, + 15,255,15,56,15,56,15,56,15,56,14,56,14,56,12,56, + 28,56,56,255,224,17,23,69,18,1,0,3,136,0,3,240, + 0,4,96,0,0,0,0,0,0,0,252,63,128,60,14,0, + 62,4,0,31,4,0,31,4,0,23,132,0,23,196,0,19, + 196,0,17,228,0,17,244,0,16,244,0,16,124,0,16,124, + 0,16,60,0,16,28,0,16,28,0,56,12,0,254,4,0, + 15,24,48,18,2,0,12,0,12,0,14,0,3,0,1,0, + 0,0,7,192,8,32,56,48,48,24,112,28,112,28,240,30, + 240,30,240,30,240,30,240,30,240,30,112,28,112,28,48,24, + 48,56,8,32,7,192,15,24,48,18,2,0,0,96,0,96, + 0,224,1,128,1,0,0,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,24,48,18, + 2,0,1,0,3,128,7,128,14,192,24,48,0,0,7,192, + 8,32,56,48,48,24,112,28,112,28,240,30,240,30,240,30, + 240,30,240,30,240,30,112,28,112,28,48,24,48,56,8,32, + 7,192,15,23,46,18,2,0,7,32,15,224,16,192,0,0, + 0,0,7,192,8,32,56,48,48,24,112,28,112,28,240,30, + 240,30,240,30,240,30,240,30,240,30,112,28,112,28,48,24, + 48,56,8,32,7,192,15,23,46,18,2,0,28,224,28,224, + 28,224,0,0,0,0,7,192,8,32,56,48,48,24,112,28, + 112,28,240,30,240,30,240,30,240,30,240,30,240,30,112,28, + 112,28,48,24,48,56,8,32,7,192,16,15,30,24,4,0, + 192,3,96,6,48,12,24,24,12,48,6,96,3,192,1,128, + 3,192,6,96,12,48,56,24,112,12,224,6,192,3,15,18, + 36,18,2,0,7,194,8,116,48,60,48,56,112,60,112,124, + 240,94,240,222,241,158,243,30,246,30,244,30,124,28,120,28, + 56,24,120,24,92,32,135,192,18,24,72,20,2,0,6,0, + 0,7,0,0,3,0,0,1,128,0,0,0,0,0,0,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,18,24,72,20,2,0,0,24,0,0, + 56,0,0,112,0,0,192,0,0,128,0,0,0,0,255,31, + 192,56,7,0,56,2,0,56,2,0,56,2,0,56,2,0, + 56,2,0,56,2,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,24,2,0,28,4,0,14,8, + 0,3,240,0,18,24,72,20,2,0,0,128,0,1,192,0, + 1,224,0,6,48,0,8,8,0,0,0,0,255,31,192,56, + 7,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,56,2,0,56,2,0, + 56,2,0,56,2,0,24,2,0,28,4,0,14,8,0,3, + 240,0,18,23,69,20,2,0,7,56,0,7,56,0,7,56, + 0,0,0,0,0,0,0,255,31,192,56,7,0,56,2,0, + 56,2,0,56,2,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,24,2,0,28,4,0,14,8,0,3,240,0,16,23,46, + 19,2,1,0,112,0,96,0,192,1,0,0,0,254,127,60, + 12,60,8,30,16,30,16,30,16,15,32,15,32,7,64,7, + 192,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 240,15,18,36,18,2,0,255,128,56,0,56,0,63,224,56, + 56,56,28,56,30,56,30,56,30,56,30,56,28,56,56,63, + 224,56,0,56,0,56,0,56,0,255,128,12,18,36,13,0, + 0,7,128,12,192,24,224,56,224,56,224,56,224,56,192,59, + 0,56,192,56,96,56,112,56,112,56,112,56,112,56,112,63, + 112,63,96,251,192,11,18,36,13,1,0,32,0,48,0,48, + 0,24,0,4,0,0,0,30,0,99,0,99,128,115,128,7, + 128,27,128,115,128,227,128,227,160,227,160,247,160,121,192,11, + 18,36,13,1,0,3,0,3,0,6,0,4,0,8,0,0, + 0,30,0,99,0,99,128,115,128,35,128,31,128,115,128,227, + 128,227,160,227,160,247,160,121,192,11,18,36,13,1,0,12, + 0,12,0,30,0,50,0,65,0,0,0,30,0,99,0,99, + 128,115,128,35,128,31,128,115,128,227,128,227,160,227,160,247, + 160,121,192,11,17,34,13,1,0,57,0,127,0,70,0,0, + 0,0,0,30,0,99,0,99,128,115,128,35,128,31,128,115, + 128,227,128,227,160,227,160,247,160,121,192,11,17,34,13,1, + 0,119,0,119,0,119,0,0,0,0,0,30,0,99,0,99, + 128,115,128,35,128,31,128,115,128,227,128,227,160,227,160,247, + 160,121,192,11,18,36,13,1,0,28,0,38,0,34,0,34, + 0,28,0,0,0,30,0,99,0,99,128,115,128,35,128,31, + 128,115,128,227,128,227,160,227,160,231,160,121,192,15,12,24, + 18,1,0,62,248,99,140,99,142,115,142,7,142,27,254,115, + 128,227,128,227,130,227,130,247,196,120,120,9,18,36,12,1, + 250,30,0,49,0,113,128,227,128,227,128,224,0,224,0,224, + 0,224,128,112,128,49,0,30,0,8,0,8,0,6,0,6, + 0,6,0,28,0,9,18,36,12,1,0,32,0,112,0,48, + 0,24,0,4,0,0,0,30,0,51,0,99,128,227,128,227, + 128,255,128,224,0,224,0,224,128,112,128,49,0,30,0,9, + 18,36,12,1,0,3,0,7,0,6,0,12,0,8,0,0, + 0,30,0,51,0,99,128,227,128,227,128,255,128,224,0,224, + 0,224,128,112,128,49,0,30,0,9,18,36,12,1,0,12, + 0,28,0,28,0,50,0,65,0,0,0,30,0,51,0,99, + 128,227,128,227,128,255,128,224,0,224,0,224,128,112,128,49, + 0,30,0,9,17,34,12,1,0,115,128,115,128,115,128,0, + 0,0,0,30,0,51,0,99,128,227,128,227,128,255,128,224, + 0,224,0,224,0,112,128,49,0,30,0,7,18,18,8,1, + 0,192,224,112,16,8,0,120,56,56,56,56,56,56,56,56, + 56,56,126,6,18,18,8,1,0,12,28,24,48,0,0,240, + 112,112,112,112,112,112,112,112,112,112,248,7,18,18,7,0, + 0,56,56,108,198,0,0,120,56,56,56,56,56,56,56,56, + 56,56,126,7,17,17,8,1,0,238,238,238,0,0,120,56, + 56,56,56,56,56,56,56,56,56,126,10,18,36,12,1,0, + 57,128,30,0,14,0,31,0,39,0,3,128,31,128,51,192, + 97,192,225,192,225,192,225,192,225,192,225,192,225,192,97,128, + 51,128,30,0,11,17,34,13,1,0,24,128,63,128,39,0, + 0,0,0,0,243,128,125,192,121,192,113,192,113,192,113,192, + 113,192,113,192,113,192,113,192,113,192,251,224,10,18,36,12, + 1,0,48,0,48,0,24,0,12,0,4,0,0,0,30,0, + 51,0,97,128,225,192,225,192,225,192,225,192,225,192,225,192, + 97,128,51,0,30,0,10,18,36,12,1,0,3,0,3,0, + 7,0,4,0,8,0,0,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 10,18,36,12,1,0,12,0,14,0,30,0,51,0,96,128, + 0,0,30,0,51,0,97,128,225,192,225,192,225,192,225,192, + 225,192,225,192,97,128,51,0,30,0,10,17,34,12,1,0, + 56,128,63,0,70,0,0,0,0,0,30,0,51,0,97,128, + 225,192,225,192,225,192,225,192,225,192,225,192,97,128,51,0, + 30,0,10,17,34,12,1,0,115,128,115,128,115,128,0,0, + 0,0,30,0,51,0,97,128,225,192,225,192,225,192,225,192, + 225,192,225,192,97,128,51,0,30,0,21,17,51,23,1,254, + 0,48,0,0,120,0,0,120,0,0,48,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,248,255,255,248,0,0, + 0,0,0,0,0,0,0,0,48,0,0,120,0,0,120,0, + 0,48,0,10,12,24,12,1,0,30,64,51,128,97,128,225, + 192,227,192,229,192,233,192,241,192,241,192,97,128,115,0,158, + 0,12,18,36,13,0,0,24,0,24,0,12,0,6,0,2, + 0,0,0,249,224,56,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,224,57,224,58,224,28,240,12,18,36,13,0, + 0,1,128,1,128,3,0,2,0,0,0,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,18,36,13,0,0,6,0,6,0,15, + 0,25,128,0,0,0,0,249,224,56,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,57,224,58,224,28,240,12, + 17,34,13,0,0,57,192,57,192,57,192,0,0,0,0,249, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 224,57,224,58,224,28,240,12,24,48,12,0,250,1,128,1, + 128,3,0,6,0,4,0,0,0,252,240,112,64,56,64,56, + 128,28,128,28,128,29,0,15,0,15,0,7,0,6,0,6, + 0,2,0,4,0,116,0,116,0,104,0,56,0,12,23,46, + 13,0,250,24,0,120,0,184,0,56,0,56,0,57,224,58, + 240,60,112,60,112,56,112,56,96,56,224,56,192,56,128,57, + 0,58,0,60,0,56,0,56,0,56,0,56,0,96,0,128, + 0,13,23,46,13,0,250,28,224,28,224,28,224,0,0,0, + 0,254,120,56,32,60,64,28,64,30,64,14,64,14,128,7, + 128,7,128,7,0,3,0,3,0,2,0,2,0,58,0,60, + 0,52,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 18 + Calculated Max Values w=21 h=23 x= 3 y= 8 dx=23 dy= 0 ascent=18 len=63 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18n[600] U8G_SECTION(".progmem.u8g_font_osb18n") = { + 0,70,31,234,249,18,0,0,0,0,42,57,0,18,251,18, + 0,9,10,20,13,2,8,24,0,24,0,201,128,235,128,28, + 0,44,0,235,128,217,128,24,0,24,0,21,21,63,23,1, + 253,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,255, + 255,248,255,255,248,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 4,9,9,7,2,251,224,240,240,240,16,32,32,64,128,6, + 3,3,8,1,5,252,252,252,4,4,4,8,2,0,96,240, + 240,96,9,23,46,11,1,251,1,128,1,128,1,0,3,0, + 3,0,2,0,6,0,6,0,4,0,12,0,12,0,8,0, + 24,0,24,0,24,0,16,0,48,0,48,0,32,0,96,0, + 96,0,64,0,192,0,12,18,36,15,1,0,15,0,25,128, + 48,192,112,224,112,224,240,224,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,48,192,25,128,15,0, + 8,18,18,15,3,0,24,56,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,255,11,18,36,15,2,0,31,0, + 113,192,96,224,224,224,240,224,248,224,121,192,1,192,3,0, + 6,0,8,0,48,32,64,32,64,32,255,224,191,224,143,192, + 135,128,12,18,36,15,1,0,31,0,49,192,96,224,112,224, + 120,224,120,224,0,192,1,128,62,0,1,192,0,224,0,240, + 112,240,248,240,240,240,192,224,65,192,63,0,11,18,36,15, + 2,0,3,0,7,0,7,0,15,0,15,0,23,0,55,0, + 39,0,103,0,71,0,199,0,135,0,255,224,7,0,7,0, + 7,0,7,0,63,224,11,18,36,15,2,0,65,128,127,128, + 126,0,120,0,64,0,64,0,95,0,99,128,65,192,65,224, + 1,224,33,224,241,224,241,224,225,192,193,192,67,128,62,0, + 11,18,36,15,2,0,7,128,24,64,48,224,113,224,113,224, + 240,0,240,0,247,128,249,192,240,224,240,224,240,224,240,224, + 112,224,112,224,48,192,57,192,15,0,11,18,36,15,2,0, + 156,64,190,96,255,32,255,224,128,32,128,64,128,64,0,128, + 1,128,3,0,7,0,6,0,14,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,15,1,0,31,128,32,64,64,32, + 192,32,192,32,240,32,252,64,127,128,127,192,63,224,103,240, + 193,240,192,112,192,48,192,48,96,32,112,64,31,128,12,18, + 36,15,2,0,31,0,113,128,96,192,224,224,224,224,224,240, + 224,240,96,240,113,240,30,240,0,240,0,240,56,224,120,224, + 120,224,97,192,33,128,30,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 3 y=13 dx=27 dy= 0 ascent=20 len=72 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =18 descent=-6 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18r[3611] U8G_SECTION(".progmem.u8g_font_osb18r") = { + 0,70,31,234,249,18,4,190,10,54,32,127,250,20,250,18, + 250,0,0,0,7,0,0,4,18,18,6,1,0,96,240,240, + 240,240,240,96,96,96,96,96,64,0,0,96,240,240,96,6, + 6,6,10,2,12,204,204,204,204,204,204,15,18,36,19,2, + 0,6,24,6,24,4,16,4,16,12,48,255,254,255,254,12, + 48,8,32,8,32,24,96,24,96,255,254,255,254,16,64,16, + 64,48,192,48,192,11,22,44,14,2,254,9,0,9,0,31, + 128,105,64,73,32,201,32,201,96,249,224,249,64,127,0,63, + 128,31,192,15,192,73,224,233,224,201,96,137,96,137,96,73, + 192,63,128,9,0,9,0,17,18,54,21,2,0,56,4,0, + 68,12,0,198,8,0,198,24,0,198,48,0,198,32,0,198, + 96,0,76,64,0,56,192,0,1,142,0,1,27,0,3,49, + 128,2,49,128,4,49,128,12,49,128,8,49,128,24,17,0, + 16,14,0,17,18,54,19,1,0,3,192,0,4,32,0,12, + 32,0,12,32,0,12,32,0,14,64,0,15,128,0,7,0, + 0,15,143,128,27,195,0,49,194,0,96,226,0,224,244,0, + 224,120,0,240,56,0,240,60,0,126,223,128,63,15,0,2, + 6,6,6,2,12,192,192,192,192,192,192,7,23,23,9,1, + 251,2,4,8,16,48,96,96,96,224,224,224,224,224,224,224, + 96,96,96,48,16,8,4,2,7,23,23,9,0,251,128,64, + 32,16,24,12,12,14,14,14,14,14,14,14,14,14,12,12, + 24,16,32,64,128,9,10,20,13,2,8,24,0,24,0,201, + 128,235,128,28,0,44,0,235,128,217,128,24,0,24,0,21, + 21,63,23,1,253,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,255,255,248,255,255,248,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,4,9,9,7,2,251,224,240,240,240,16,32, + 32,64,128,6,3,3,8,1,5,252,252,252,4,4,4,8, + 2,0,96,240,240,96,9,23,46,11,1,251,1,128,1,128, + 1,0,3,0,3,0,2,0,6,0,6,0,4,0,12,0, + 12,0,8,0,24,0,24,0,24,0,16,0,48,0,48,0, + 32,0,96,0,96,0,64,0,192,0,12,18,36,15,1,0, + 15,0,25,128,48,192,112,224,112,224,240,224,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,112,224,112,224,48,192, + 25,128,15,0,8,18,18,15,3,0,24,56,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,255,11,18,36,15, + 2,0,31,0,113,192,96,224,224,224,240,224,248,224,121,192, + 1,192,3,0,6,0,8,0,48,32,64,32,64,32,255,224, + 191,224,143,192,135,128,12,18,36,15,1,0,31,0,49,192, + 96,224,112,224,120,224,120,224,0,192,1,128,62,0,1,192, + 0,224,0,240,112,240,248,240,240,240,192,224,65,192,63,0, + 11,18,36,15,2,0,3,0,7,0,7,0,15,0,15,0, + 23,0,55,0,39,0,103,0,71,0,199,0,135,0,255,224, + 7,0,7,0,7,0,7,0,63,224,11,18,36,15,2,0, + 65,128,127,128,126,0,120,0,64,0,64,0,95,0,99,128, + 65,192,65,224,1,224,33,224,241,224,241,224,225,192,193,192, + 67,128,62,0,11,18,36,15,2,0,7,128,24,64,48,224, + 113,224,113,224,240,0,240,0,247,128,249,192,240,224,240,224, + 240,224,240,224,112,224,112,224,48,192,57,192,15,0,11,18, + 36,15,2,0,156,64,190,96,255,32,255,224,128,32,128,64, + 128,64,0,128,1,128,3,0,7,0,6,0,14,0,30,0, + 30,0,30,0,30,0,12,0,12,18,36,15,1,0,31,128, + 32,64,64,32,192,32,192,32,240,32,252,64,127,128,127,192, + 63,224,103,240,193,240,192,112,192,48,192,48,96,32,112,64, + 31,128,12,18,36,15,2,0,31,0,113,128,96,192,224,224, + 224,224,224,240,224,240,96,240,113,240,30,240,0,240,0,240, + 56,224,120,224,120,224,97,192,33,128,30,0,4,12,12,8, + 2,0,96,240,240,96,0,0,0,0,96,240,240,96,4,17, + 17,7,2,251,96,240,240,96,0,0,0,0,224,240,240,240, + 16,32,32,64,128,19,21,63,24,2,252,0,0,96,0,1, + 224,0,7,128,0,14,0,0,56,0,0,224,0,3,128,0, + 15,0,0,60,0,0,112,0,0,224,0,0,120,0,0,28, + 0,0,7,0,0,1,192,0,0,112,0,0,60,0,0,15, + 0,0,3,128,0,0,224,0,0,32,21,7,21,23,1,3, + 255,255,248,255,255,248,0,0,0,0,0,0,0,0,0,255, + 255,248,255,255,248,19,21,63,24,2,252,192,0,0,240,0, + 0,60,0,0,14,0,0,3,128,0,0,224,0,0,56,0, + 0,30,0,0,7,128,0,1,192,0,0,224,0,3,192,0, + 7,0,0,28,0,0,112,0,1,192,0,7,128,0,30,0, + 0,56,0,0,224,0,0,128,0,0,8,18,18,12,2,0, + 60,78,135,135,135,78,12,24,16,32,36,36,24,0,24,60, + 60,24,18,18,54,20,1,0,3,240,0,12,12,0,24,3, + 0,48,237,0,97,173,128,99,28,128,199,28,192,207,24,192, + 206,24,192,206,56,192,206,56,192,206,56,128,78,49,128,110, + 91,0,35,156,0,48,0,0,12,4,0,3,248,0,17,18, + 54,19,1,0,0,192,0,0,192,0,0,192,0,1,224,0, + 1,224,0,1,224,0,2,240,0,2,240,0,4,112,0,4, + 120,0,4,120,0,8,56,0,15,252,0,8,60,0,16,28, + 0,16,30,0,48,30,0,252,127,128,15,18,36,18,2,0, + 255,224,56,56,56,56,56,28,56,28,56,28,56,56,56,48, + 63,192,56,56,56,28,56,30,56,30,56,30,56,30,56,28, + 56,56,255,240,13,18,36,17,2,0,7,136,24,120,48,56, + 112,24,112,24,240,8,240,8,240,8,240,0,240,0,240,0, + 240,8,240,8,112,8,112,8,56,16,24,32,7,192,16,18, + 36,19,2,0,255,224,56,56,56,28,56,14,56,14,56,14, + 56,15,56,15,56,15,56,15,56,15,56,15,56,14,56,14, + 56,12,56,28,56,56,255,224,14,18,36,18,2,0,255,252, + 56,28,56,12,56,12,56,4,56,68,56,64,56,192,56,192, + 63,192,56,192,56,68,56,68,56,4,56,4,56,12,56,28, + 255,252,14,18,36,17,2,0,255,252,56,60,56,28,56,12, + 56,4,56,68,56,68,56,192,56,192,63,192,56,192,56,64, + 56,64,56,0,56,0,56,0,56,0,255,0,15,18,36,18, + 2,0,7,136,24,104,48,56,112,24,112,8,112,8,240,8, + 240,0,240,0,241,254,240,56,240,56,240,56,112,56,112,56, + 48,40,24,72,15,136,17,18,54,20,2,0,255,127,128,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,63,254,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,255, + 127,128,8,18,18,11,2,0,255,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,255,11,18,36,13,1,0, + 31,224,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,115,128,243,128,243,128,227,128,195,128, + 67,0,60,0,17,18,54,19,2,0,254,127,0,56,24,0, + 56,16,0,56,32,0,56,64,0,56,192,0,57,128,0,59, + 192,0,59,192,0,61,224,0,57,240,0,56,240,0,56,248, + 0,56,120,0,56,124,0,56,60,0,56,62,0,254,127,128, + 14,18,36,17,2,0,255,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,4,56,4,56,4, + 56,12,56,12,56,28,56,60,255,252,20,18,54,22,1,0, + 254,3,240,30,3,192,30,3,192,31,5,192,31,5,192,23, + 5,192,23,133,192,23,137,192,19,201,192,19,201,192,17,209, + 192,17,241,192,17,241,192,16,241,192,16,225,192,16,225,192, + 56,97,192,254,111,240,17,18,54,18,1,0,252,63,128,60, + 14,0,62,4,0,31,4,0,31,4,0,31,132,0,23,196, + 0,19,196,0,17,228,0,17,244,0,16,244,0,16,124,0, + 16,124,0,16,60,0,16,28,0,16,28,0,56,12,0,254, + 4,0,15,18,36,18,2,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,18,36,18, + 2,0,255,240,56,56,56,28,56,30,56,30,56,30,56,30, + 56,28,56,56,63,224,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,255,128,15,24,48,18,2,250,7,192,8,32, + 56,56,48,24,112,28,112,28,240,30,240,30,240,30,240,30, + 240,30,240,30,112,28,112,28,51,152,52,176,28,226,7,194, + 0,194,0,194,0,230,0,254,0,124,0,56,16,18,36,19, + 2,0,255,224,56,120,56,56,56,60,56,60,56,60,56,56, + 56,112,63,192,56,96,56,48,56,56,56,56,56,57,56,57, + 56,57,56,57,255,158,12,18,36,15,2,0,30,32,97,160, + 192,224,192,96,224,32,240,32,252,0,126,0,63,128,15,192, + 135,224,129,240,128,240,192,48,192,48,224,32,176,96,143,128, + 15,18,36,18,2,0,255,254,231,30,199,14,135,14,135,6, + 135,6,7,2,7,2,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,31,224,18,18,54,20,2,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,17,18,54,19,2,0,255,63,128,60, + 6,0,60,4,0,30,4,0,30,8,0,30,8,0,15,8, + 0,15,16,0,7,144,0,7,144,0,7,160,0,3,224,0, + 3,224,0,3,192,0,1,192,0,1,192,0,1,192,0,0, + 128,0,26,18,72,27,1,0,255,191,223,192,30,15,6,0, + 30,15,6,0,15,15,4,0,15,15,132,0,15,15,132,0, + 7,143,140,0,7,139,200,0,7,147,200,0,3,211,200,0, + 3,209,240,0,3,225,240,0,1,225,240,0,1,224,240,0, + 1,224,224,0,0,192,224,0,0,192,96,0,0,192,64,0, + 16,18,36,19,2,0,255,63,62,24,30,16,31,16,15,32, + 15,224,7,192,7,192,3,192,3,224,3,224,2,240,4,240, + 8,120,8,120,16,60,48,60,252,255,16,18,36,19,2,0, + 254,127,60,12,60,8,30,16,30,16,30,16,15,32,15,32, + 7,64,7,192,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,15,240,13,18,36,16,2,0,127,248,112,120,96,240, + 97,240,65,224,67,224,3,192,7,192,7,128,15,0,15,0, + 30,0,30,8,60,8,124,24,120,24,248,56,255,248,6,22, + 22,10,2,252,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,252,9,23,46,11,1,251, + 192,0,64,0,96,0,96,0,32,0,48,0,48,0,16,0, + 24,0,24,0,24,0,8,0,12,0,12,0,4,0,6,0, + 6,0,2,0,3,0,3,0,1,0,1,128,1,128,6,22, + 22,10,2,252,252,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,11,9,18,15,2,9, + 4,0,12,0,30,0,27,0,51,0,49,128,96,192,192,192, + 192,96,13,2,4,13,0,252,255,248,255,248,4,4,4,11, + 2,13,192,224,96,48,11,12,24,13,1,0,30,0,99,0, + 99,128,115,128,35,128,31,128,115,128,227,128,227,160,227,160, + 247,160,121,192,12,18,36,13,0,0,248,0,56,0,56,0, + 56,0,56,0,56,0,59,128,60,224,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,36,192,35,128,9,12, + 24,12,1,0,30,0,49,0,113,128,227,128,227,128,224,0, + 224,0,224,0,224,128,112,128,49,0,30,0,12,18,36,13, + 1,0,7,192,1,192,1,192,1,192,1,192,1,192,29,192, + 115,192,99,192,225,192,225,192,225,192,225,192,225,192,225,192, + 99,192,115,192,29,240,9,12,24,12,1,0,30,0,51,0, + 99,128,227,128,227,128,255,128,224,0,224,0,224,128,112,128, + 49,0,30,0,9,18,36,9,1,0,15,0,29,128,59,128, + 59,128,57,0,56,0,252,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,252,0,12,18, + 36,14,1,250,30,112,51,176,113,240,113,192,113,192,113,192, + 51,128,30,0,96,0,127,128,127,192,63,224,96,224,128,96, + 128,96,128,64,64,192,63,0,12,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,192,62,224,60,224, + 56,224,56,224,56,224,56,224,56,224,56,224,56,224,56,224, + 253,240,5,18,18,7,1,0,112,112,112,32,0,0,240,112, + 112,112,112,112,112,112,112,112,112,248,7,24,24,8,255,250, + 14,14,14,4,0,0,62,14,14,14,14,14,14,14,14,14, + 14,14,14,110,238,238,204,120,13,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,240,56,192,56,128, + 57,0,57,0,59,128,63,128,57,192,57,192,56,224,56,224, + 255,248,7,18,18,8,0,0,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,18,12,36,19,1,0, + 243,142,0,125,247,0,121,231,0,113,199,0,113,199,0,113, + 199,0,113,199,0,113,199,0,113,199,0,113,199,0,113,199, + 0,251,239,192,11,12,24,13,1,0,243,128,125,192,121,192, + 113,192,113,192,113,192,113,192,113,192,113,192,113,192,113,192, + 251,224,10,12,24,12,1,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 12,18,36,13,0,250,251,128,60,192,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,60,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,11,18,36,13,1,250, + 28,64,50,64,99,192,225,192,225,192,225,192,225,192,225,192, + 225,192,99,192,115,192,61,192,1,192,1,192,1,192,1,192, + 1,192,7,224,9,12,24,11,1,0,243,0,117,128,123,128, + 123,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 248,0,9,12,24,11,1,0,57,0,199,0,195,0,225,0, + 240,0,124,0,63,0,143,128,131,128,193,128,225,0,158,0, + 8,17,17,10,1,0,16,16,16,48,112,254,112,112,112,112, + 112,113,113,113,113,114,60,12,12,24,13,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,12,24,13,1,0,253,240,112,64,56, + 64,56,128,28,128,28,128,29,0,15,0,14,0,14,0,6, + 0,4,0,19,12,36,19,0,0,253,251,224,56,112,128,28, + 112,128,28,113,0,28,121,0,14,185,0,14,154,0,14,158, + 0,7,28,0,7,12,0,2,12,0,2,8,0,12,12,24, + 13,0,0,253,240,56,64,28,128,31,0,15,0,15,0,7, + 0,7,128,11,192,17,192,17,224,253,240,12,18,36,12,0, + 250,252,240,112,64,56,64,56,128,28,128,28,128,29,0,15, + 0,15,0,7,0,6,0,6,0,2,0,4,0,116,0,116, + 0,104,0,56,0,10,12,24,12,1,0,127,192,99,128,71, + 128,71,0,15,0,14,0,28,0,60,64,56,64,120,64,112, + 192,255,192,8,23,23,10,1,251,3,28,56,56,56,56,56, + 56,56,56,48,192,48,56,56,56,56,56,56,56,56,28,3, + 2,23,23,8,3,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,23,23, + 11,2,251,192,112,56,56,56,56,56,56,56,56,28,7,28, + 56,56,56,56,56,56,56,56,112,192,14,5,10,16,1,4, + 120,8,255,4,143,196,131,252,64,120,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=28 h=29 x= 5 y=17 dx=31 dy= 0 ascent=28 len=87 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21[9612] U8G_SECTION(".progmem.u8g_font_osb21") = { + 0,77,36,232,248,21,5,141,12,241,32,255,249,28,248,21, + 249,0,0,0,8,0,0,5,21,21,9,2,1,240,248,248, + 248,248,112,112,112,112,32,32,32,32,32,32,0,0,112,248, + 248,112,7,6,6,11,2,16,238,238,238,238,198,68,16,21, + 42,20,2,0,6,12,6,12,6,12,6,8,6,24,6,24, + 255,255,255,255,12,24,12,24,12,48,12,48,12,48,8,48, + 255,255,255,255,24,32,24,96,24,96,16,96,48,96,13,25, + 50,16,2,254,9,0,11,0,61,192,105,48,73,8,201,8, + 201,56,233,120,249,112,253,0,127,0,127,0,63,192,15,224, + 15,240,73,248,233,248,233,56,201,24,137,24,137,16,73,32, + 57,192,15,0,9,0,19,22,66,25,3,0,0,1,0,60, + 3,0,102,2,0,231,4,0,231,4,0,231,8,0,231,8, + 0,231,16,0,231,48,0,102,32,0,102,96,0,24,64,0, + 0,195,0,0,140,192,1,140,192,1,28,224,2,28,224,2, + 28,224,4,28,224,4,28,224,8,12,192,24,7,128,20,21, + 63,22,1,1,3,224,0,6,16,0,14,16,0,14,16,0, + 14,16,0,14,48,0,15,32,0,15,64,0,7,128,0,3, + 192,0,7,195,240,9,224,192,48,224,128,112,240,128,112,121, + 0,240,59,0,240,62,0,240,30,0,248,31,16,126,111,160, + 63,199,192,3,6,6,7,2,16,224,224,224,224,192,64,8, + 27,27,10,2,250,1,2,4,8,24,48,48,112,112,240,240, + 240,240,240,240,240,240,112,112,112,48,48,24,8,4,2,1, + 8,26,26,10,1,250,128,192,96,48,24,24,12,12,14,14, + 14,14,15,15,15,14,14,14,14,12,12,24,24,48,96,192, + 11,12,24,14,2,9,14,0,14,0,78,192,228,224,245,192, + 14,0,14,0,245,192,228,192,78,192,14,0,14,0,24,25, + 75,26,1,252,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,24,0,0,24,0,255,255,255,255,255,255,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,5, + 10,10,7,1,251,112,248,248,248,120,8,16,16,32,192,7, + 3,3,11,2,6,254,254,254,4,4,4,8,2,0,96,240, + 240,96,9,27,54,13,2,250,1,128,1,128,1,128,3,0, + 3,0,3,0,2,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,16,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,192,0,128,0,14,21, + 42,16,1,1,15,192,24,96,56,112,56,112,120,120,120,120, + 248,120,248,124,248,124,248,124,248,124,248,124,248,124,248,124, + 248,120,120,120,120,120,56,112,56,112,24,96,15,192,9,21, + 42,16,3,0,6,0,14,0,30,0,254,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,12,21, + 42,16,2,1,63,192,97,224,96,224,224,240,224,240,240,240, + 248,240,121,224,49,224,3,192,7,128,14,0,28,0,48,16, + 96,16,64,16,192,16,255,240,255,224,143,224,135,192,13,21, + 42,16,2,1,63,192,96,224,96,224,224,240,240,240,248,240, + 120,240,112,240,0,224,1,192,31,0,0,224,0,240,0,112, + 112,120,248,120,248,120,240,120,224,112,96,240,59,192,13,21, + 42,16,1,0,1,192,1,192,3,192,3,192,7,192,7,192, + 15,192,27,192,27,192,51,192,35,192,99,192,67,192,195,192, + 255,248,3,192,3,192,3,192,3,192,3,192,31,248,13,21, + 42,16,2,0,96,224,127,192,127,128,127,0,120,0,64,0, + 64,0,64,0,79,0,113,224,64,240,64,240,0,248,0,248, + 112,248,248,248,248,248,240,240,224,240,97,224,59,192,13,21, + 42,16,2,1,15,224,24,32,56,48,48,240,112,240,112,240, + 240,96,240,0,240,0,247,128,248,224,240,112,240,112,240,112, + 240,120,112,120,112,112,112,112,48,112,56,96,13,192,11,21, + 42,16,3,0,156,64,190,96,255,32,255,32,199,224,129,160, + 128,64,128,64,0,128,0,128,1,0,3,0,7,0,6,0, + 14,0,14,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,16,2,1,31,192,48,32,96,48,96,16,224,16,240,16, + 248,32,254,32,127,192,63,192,31,240,31,248,99,248,64,248, + 192,60,192,24,192,24,192,24,96,16,112,48,31,192,13,21, + 42,16,2,1,31,128,48,192,112,96,112,112,240,112,240,112, + 240,120,240,120,240,120,112,120,112,120,56,248,15,120,0,120, + 0,120,56,112,120,112,120,96,112,224,96,192,63,128,4,14, + 14,8,2,0,96,240,240,240,96,0,0,0,0,0,96,240, + 240,96,5,19,19,8,2,251,96,240,240,240,96,0,0,0, + 0,112,240,248,248,248,8,16,16,32,192,21,24,72,26,2, + 252,0,0,24,0,0,56,0,0,240,0,3,192,0,15,0, + 0,28,0,0,120,0,1,224,0,7,128,0,14,0,0,60, + 0,0,240,0,0,224,0,0,120,0,0,30,0,0,7,128, + 0,1,192,0,0,240,0,0,60,0,0,15,0,0,3,128, + 0,1,224,0,0,120,0,0,24,24,8,24,26,1,4,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,21,24,72,26,3,252,128,0,0, + 224,0,0,120,0,0,30,0,0,7,128,0,1,192,0,0, + 240,0,0,60,0,0,15,0,0,3,128,0,1,224,0,0, + 120,0,0,56,0,0,240,0,3,192,0,15,0,0,28,0, + 0,120,0,1,224,0,7,128,0,14,0,0,60,0,0,240, + 0,0,192,0,0,9,21,42,13,2,1,126,0,71,0,135, + 128,135,128,135,128,135,128,71,0,14,0,12,0,28,0,16, + 0,48,0,34,0,34,0,34,0,28,0,0,0,12,0,30, + 0,30,0,12,0,20,22,66,22,1,0,0,32,0,3,222, + 0,12,3,0,24,0,128,48,0,192,48,112,96,97,207,96, + 99,142,48,199,142,48,199,14,48,199,14,48,207,14,48,207, + 28,48,207,28,32,207,28,96,79,60,64,103,44,128,99,199, + 0,48,0,0,24,0,0,12,2,0,3,252,0,19,21,63, + 22,2,0,0,64,0,0,96,0,0,224,0,0,224,0,0, + 240,0,1,240,0,1,240,0,1,248,0,2,120,0,2,120, + 0,2,124,0,4,60,0,4,60,0,4,62,0,15,254,0, + 8,30,0,8,31,0,16,15,0,16,15,0,48,15,128,254, + 127,224,17,21,63,19,1,0,255,240,0,30,28,0,30,14, + 0,30,15,0,30,15,0,30,15,0,30,15,0,30,14,0, + 30,14,0,30,24,0,31,224,0,30,28,0,30,15,0,30, + 7,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 0,30,14,0,255,248,0,15,21,42,18,2,1,15,230,28, + 30,56,30,56,14,120,14,120,6,248,6,248,6,248,2,248, + 0,248,0,248,0,248,0,248,2,248,2,120,2,120,4,56, + 4,60,12,28,8,15,240,19,21,63,21,1,0,255,248,0, + 30,14,0,30,7,0,30,3,128,30,3,192,30,3,192,30, + 3,192,30,3,224,30,3,224,30,3,224,30,3,224,30,3, + 224,30,3,224,30,3,224,30,3,192,30,3,192,30,3,192, + 30,3,128,30,7,0,30,14,0,255,248,0,16,21,42,19, + 1,0,255,255,30,15,30,7,30,3,30,3,30,1,30,17, + 30,16,30,48,30,48,31,240,30,48,30,48,30,17,30,17, + 30,1,30,1,30,3,30,7,30,15,255,255,17,21,63,19, + 1,0,255,255,128,30,15,128,30,7,128,30,3,128,30,1, + 128,30,1,128,30,17,128,30,17,128,30,48,0,30,48,0, + 31,240,0,30,48,0,30,48,0,30,16,0,30,16,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,20,2,0,0,128,0,7,114,0,28,30,0, + 24,14,0,56,6,0,120,6,0,120,6,0,120,2,0,248, + 2,0,248,0,0,248,0,0,248,0,0,248,255,128,248,30, + 0,248,30,0,248,30,0,120,30,0,120,30,0,56,30,0, + 56,22,0,28,34,0,14,194,0,20,21,63,22,1,0,255, + 223,240,30,3,192,30,3,192,30,3,192,30,3,192,30,3, + 192,30,3,192,30,3,192,30,3,192,30,3,192,31,255,192, + 30,3,192,30,3,192,30,3,192,30,3,192,30,3,192,30, + 3,192,30,3,192,30,3,192,30,3,192,255,223,240,9,21, + 42,11,1,0,255,128,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,13,21, + 42,15,1,0,15,248,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,113,224, + 249,224,249,224,249,192,225,192,193,192,65,128,55,0,19,21, + 63,21,1,0,255,159,192,30,7,0,30,6,0,30,12,0, + 30,8,0,30,16,0,30,32,0,30,96,0,30,240,0,31, + 240,0,31,248,0,30,248,0,30,124,0,30,124,0,30,62, + 0,30,30,0,30,31,0,30,15,0,30,15,128,30,15,128, + 255,159,224,17,21,63,19,1,0,255,128,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,1,0, + 30,1,128,30,1,128,30,1,128,30,3,128,30,3,128,30, + 7,128,30,15,128,255,255,128,23,21,63,25,1,0,254,0, + 254,30,0,240,31,1,240,31,1,240,31,1,240,31,129,240, + 23,130,240,23,194,240,23,194,240,19,196,240,19,228,240,17, + 228,240,17,228,240,17,248,240,16,248,240,16,248,240,16,248, + 240,16,112,240,16,112,240,56,48,240,254,35,254,21,21,63, + 22,1,0,254,15,248,31,1,192,31,0,128,15,128,128,15, + 192,128,15,192,128,11,224,128,11,240,128,9,248,128,8,248, + 128,8,252,128,8,126,128,8,62,128,8,31,128,8,31,128, + 8,15,128,8,7,128,8,7,128,8,3,128,28,1,128,255, + 129,128,17,22,66,20,2,0,0,128,0,7,112,0,12,24, + 0,24,12,0,56,14,0,120,14,0,120,15,0,120,15,0, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,120,15,0,120,15,0,120,15,0,56,14, + 0,24,12,0,12,24,0,7,112,0,17,21,63,19,1,0, + 255,248,0,30,14,0,30,7,0,30,7,128,30,7,128,30, + 7,128,30,7,128,30,7,128,30,15,0,30,14,0,31,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,255,192,0,17, + 29,87,20,2,249,0,128,0,7,112,0,12,24,0,24,12, + 0,56,14,0,120,14,0,120,15,0,120,15,0,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,120,15,0,120,15,0,121,142,0,58,78,0,30,124, + 0,30,120,128,6,112,128,1,224,128,0,96,128,0,113,128, + 0,127,128,0,127,0,0,63,0,0,30,0,19,21,63,21, + 1,0,255,240,0,30,28,0,30,14,0,30,15,0,30,15, + 0,30,15,0,30,15,0,30,14,0,30,28,0,31,224,0, + 30,48,0,30,28,0,30,28,0,30,28,0,30,30,0,30, + 30,0,30,30,32,30,30,32,30,30,32,30,14,64,255,207, + 192,13,22,44,17,3,0,4,0,59,144,64,240,192,112,192, + 112,224,48,240,48,248,16,254,16,127,0,63,128,31,224,15, + 240,131,240,129,248,128,120,192,56,192,24,224,24,224,16,240, + 48,159,192,17,21,63,20,2,0,255,255,128,227,207,128,195, + 199,128,195,195,128,131,195,128,131,193,128,131,193,128,3,193, + 128,3,192,128,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,31,248,0,19,21,63,22,2,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,28,1,0,28,2,0,14,4,0,7,248,0,20,21,63, + 22,1,0,255,207,240,30,1,128,31,1,0,31,1,0,15, + 1,0,15,130,0,15,130,0,7,130,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,232,0,1,248,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 96,0,28,21,84,31,2,0,255,191,231,240,62,15,129,192, + 30,7,129,128,30,7,129,128,31,7,193,0,15,7,193,0, + 15,7,193,0,15,143,226,0,7,137,226,0,7,137,226,0, + 7,201,246,0,3,208,244,0,3,208,244,0,3,240,252,0, + 1,240,124,0,1,224,120,0,1,224,120,0,0,224,56,0, + 0,192,48,0,0,192,48,0,0,64,16,0,19,21,63,20, + 1,0,255,159,192,63,6,0,31,6,0,15,4,0,15,136, + 0,7,152,0,7,208,0,3,240,0,3,224,0,1,240,0, + 1,240,0,0,248,0,1,248,0,3,124,0,2,124,0,6, + 62,0,4,62,0,8,30,0,24,31,0,24,31,128,254,63, + 224,18,21,63,21,2,0,255,31,192,62,7,0,30,6,0, + 30,4,0,31,4,0,15,4,0,15,136,0,7,136,0,7, + 144,0,7,208,0,3,240,0,3,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,7,248,0,15,21,42,19,2,0,127,254,120,62, + 112,124,96,124,96,248,64,248,65,240,1,240,3,224,3,224, + 7,192,7,128,15,128,31,2,31,2,62,2,62,6,124,6, + 124,14,248,30,255,254,7,26,26,11,2,251,254,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,254,10,27,54,13,1,250,192,0,96,0, + 96,0,96,0,32,0,48,0,48,0,48,0,24,0,24,0, + 24,0,12,0,12,0,12,0,4,0,6,0,6,0,6,0, + 3,0,3,0,3,0,1,128,1,128,1,128,0,128,0,192, + 0,192,7,26,26,11,2,251,254,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,254,12,10,20,16,2,12,6,0,7,0,15,0,29,128, + 25,128,48,192,48,224,96,96,224,48,192,48,15,2,4,15, + 0,251,255,254,255,254,5,5,5,12,2,16,192,224,112,48, + 24,12,14,28,14,1,0,30,0,99,128,99,192,243,192,115, + 192,35,192,15,192,51,192,115,192,243,192,243,208,243,208,243, + 208,125,224,13,21,42,14,0,0,252,0,60,0,60,0,60, + 0,60,0,60,0,60,0,61,192,62,96,60,112,60,112,60, + 120,60,120,60,120,60,120,60,120,60,120,60,112,52,112,38, + 96,35,192,10,14,28,13,1,0,15,0,56,128,112,192,113, + 192,243,192,243,128,240,0,240,0,240,0,240,0,112,64,112, + 64,56,128,15,0,13,21,42,15,1,0,3,224,1,224,1, + 224,1,224,1,224,1,224,1,224,29,224,51,224,113,224,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,248,11,14,28,13,1,0,15,0,51,128,113, + 192,113,192,241,192,241,224,255,224,240,0,240,0,240,32,112, + 64,112,64,56,128,15,0,11,21,42,10,1,0,7,128,12, + 192,28,192,61,224,61,192,60,0,60,0,254,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,254,0,14,21,42,16,1,249,15,24,57, + 236,121,252,121,248,121,224,121,224,57,192,57,192,15,0,112, + 0,192,0,255,0,255,224,127,240,63,248,64,56,128,24,128, + 16,128,48,96,96,31,128,14,21,42,16,1,0,252,0,60, + 0,60,0,60,0,60,0,60,0,60,0,61,224,62,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,120,60,120,254,252,6,21,21,8,1,0,48,120,120, + 48,0,0,0,248,120,120,120,120,120,120,120,120,120,120,120, + 120,252,8,28,28,8,255,249,6,15,15,6,0,0,0,31, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,255, + 239,238,206,56,14,21,42,16,1,0,252,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,248,60,96,60,64,60,128, + 60,128,61,128,63,128,63,192,61,224,60,224,60,240,60,112, + 60,120,254,252,8,21,21,9,1,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,255,20, + 14,42,23,2,0,249,199,128,126,233,192,120,241,192,120,241, + 224,120,241,224,120,241,224,120,241,224,120,241,224,120,241,224, + 120,241,224,120,241,224,120,241,224,120,241,224,253,251,240,13, + 14,28,16,2,0,251,192,124,224,120,224,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,253, + 248,12,14,28,14,1,0,15,0,49,128,112,192,112,224,240, + 224,240,224,240,240,240,240,240,224,240,224,112,224,112,192,49, + 128,15,0,13,21,42,15,1,249,253,192,62,96,60,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,112,60, + 112,62,96,61,192,60,0,60,0,60,0,60,0,60,0,60, + 0,254,0,13,21,42,14,1,249,30,32,51,32,113,96,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,224,1,224,1,224,1,224,1,224,1,224,1, + 224,3,248,10,14,28,12,2,0,251,128,125,128,123,192,123, + 128,121,128,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,252,0,10,14,28,13,2,0,60,128,67,128,193, + 128,193,128,224,128,248,0,126,0,63,128,143,128,131,192,192, + 192,224,192,240,128,143,0,9,20,40,10,0,0,8,0,8, + 0,8,0,24,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,128,56,128,56,128,56,128,57, + 128,57,0,14,0,14,14,28,15,0,0,253,248,60,120,60, + 120,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,248,29,120,14,124,13,14,28,15,1,0,252,248,120, + 32,56,32,60,32,28,64,28,64,30,64,14,128,14,128,15, + 0,7,0,7,0,6,0,2,0,20,14,42,22,1,0,253, + 253,240,120,120,64,56,120,64,60,56,64,28,120,128,28,124, + 128,30,92,128,14,157,0,14,159,0,15,143,0,7,14,0, + 7,14,0,6,6,0,2,4,0,13,14,28,15,1,0,254, + 248,60,96,60,64,30,128,30,128,15,0,7,0,7,128,7, + 192,11,192,9,224,16,224,48,240,253,248,13,21,42,15,1, + 249,252,248,120,32,56,32,60,64,28,64,28,64,30,64,14, + 128,15,128,7,128,7,128,7,0,3,0,3,0,2,0,2, + 0,50,0,122,0,116,0,116,0,56,0,11,14,28,13,1, + 0,127,224,97,224,67,192,67,128,71,128,15,0,15,0,30, + 0,30,32,60,32,56,32,120,96,240,224,255,224,9,27,54, + 12,1,250,0,128,7,0,14,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,28,0,28,0,56,0,224,0,56, + 0,28,0,28,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,14,0,7,0,0,128,2,27,27,8,3,250,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,9,27,54,13,2,250, + 192,0,56,0,28,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,14,0,1,128,14,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,28,0, + 28,0,56,0,192,0,16,6,12,18,1,5,124,2,127,1, + 143,193,131,241,128,254,64,62,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,8,0,0,5, + 21,21,9,2,249,112,248,248,112,0,0,32,32,32,32,32, + 112,112,112,112,248,248,248,248,248,112,10,21,42,16,3,253, + 2,0,2,0,2,0,15,0,26,128,50,192,114,192,243,192, + 243,192,242,0,242,0,242,0,242,0,242,64,114,64,50,64, + 30,128,15,0,2,0,2,0,2,0,17,21,63,20,2,1, + 0,254,0,1,131,0,3,131,0,3,135,128,7,135,128,7, + 135,0,7,128,0,7,128,0,7,128,0,31,128,0,39,248, + 0,7,128,0,7,192,0,3,192,0,3,128,0,3,128,0, + 3,128,128,123,1,128,143,135,0,135,254,0,121,252,0,13, + 13,26,17,2,3,207,152,255,248,112,112,96,48,192,24,192, + 24,192,24,192,24,192,24,96,48,112,112,255,248,207,152,15, + 21,42,16,1,0,254,126,124,24,124,24,60,16,60,16,30, + 32,30,32,30,64,15,64,15,128,7,128,127,248,7,128,127, + 248,7,128,7,128,7,128,7,128,7,128,7,128,63,240,2, + 26,26,8,3,251,192,192,192,192,192,192,192,192,192,192,0, + 0,0,0,0,0,192,192,192,192,192,192,192,192,192,192,13, + 27,54,18,1,250,15,128,16,64,32,96,96,224,97,224,97, + 224,112,128,124,0,63,0,95,192,79,240,195,240,192,248,224, + 56,248,24,126,16,127,144,31,224,7,224,1,224,48,224,120, + 96,120,96,112,96,96,192,48,128,31,0,9,4,8,13,2, + 16,99,0,247,128,247,128,99,0,20,21,63,22,1,1,3, + 252,0,12,3,0,16,0,128,32,0,64,32,244,64,65,140, + 32,67,132,32,131,132,16,135,132,16,135,132,16,135,128,16, + 135,128,16,135,128,16,135,130,16,67,132,32,67,132,32,33, + 136,64,32,240,64,16,0,128,12,3,0,3,252,0,8,11, + 11,10,1,10,56,76,108,108,60,204,205,205,118,0,255,7, + 11,11,13,3,2,34,68,196,204,204,204,204,204,68,98,34, + 14,8,16,16,1,4,255,252,255,252,0,12,0,12,0,12, + 0,12,0,12,0,12,7,3,3,11,2,6,254,254,254,20, + 21,63,22,1,1,3,252,0,12,3,0,16,0,128,32,0, + 64,47,248,64,67,206,32,67,206,32,131,207,16,131,206,16, + 131,206,16,131,240,16,131,204,16,131,206,16,131,206,16,67, + 206,160,67,206,160,35,206,192,47,231,64,16,0,128,12,3, + 0,3,252,0,7,2,2,13,3,17,254,254,9,10,20,17, + 4,12,8,0,62,0,119,0,193,128,193,128,193,128,193,128, + 99,0,127,0,28,0,24,22,66,26,1,254,0,24,0,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,255,255,255,255,255,255,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,0,0,0,0,0,255,255,255,255,255,255,9,12, + 24,13,2,9,62,0,71,0,199,128,231,0,111,0,12,0, + 24,0,33,0,65,128,255,0,159,0,142,0,10,13,26,13, + 2,8,62,0,67,0,195,128,227,128,99,128,3,0,60,0, + 7,0,3,128,243,192,227,128,199,128,62,0,5,5,5,12, + 5,16,24,56,112,96,192,14,22,44,17,2,248,96,192,224, + 224,241,224,241,224,225,224,225,224,224,224,224,224,96,192,64, + 196,64,196,65,252,127,124,78,56,64,0,64,0,96,0,224, + 0,240,0,240,0,112,0,96,0,13,25,50,17,2,252,31, + 248,126,96,254,96,254,96,254,96,254,96,254,96,254,96,254, + 96,126,96,62,96,6,96,6,96,6,96,6,96,6,96,6, + 96,6,96,6,96,6,96,6,96,6,96,6,96,6,96,6, + 96,4,4,4,8,2,7,96,240,240,96,5,6,6,13,4, + 249,32,64,48,24,24,240,7,12,12,13,3,9,28,252,60, + 60,60,60,60,60,60,60,60,254,8,11,11,11,2,10,60, + 102,230,231,231,231,230,102,60,0,255,7,11,11,13,3,2, + 136,68,102,102,102,102,102,102,68,140,136,22,21,63,26,3, + 0,12,1,128,28,1,0,252,3,0,60,2,0,60,6,0, + 60,12,0,60,12,0,60,24,0,60,16,0,60,48,112,60, + 32,240,60,97,240,254,65,240,0,194,240,0,130,240,1,132, + 240,3,8,240,3,15,252,6,0,240,4,0,240,12,3,248, + 21,22,66,26,3,0,0,1,128,28,1,0,252,3,0,60, + 2,0,60,6,0,60,4,0,60,12,0,60,24,0,60,24, + 0,60,51,224,60,36,112,60,108,120,60,78,120,254,206,120, + 0,134,112,1,128,192,1,1,0,3,2,8,2,4,8,6, + 15,248,4,11,240,12,8,224,22,21,63,25,2,0,62,0, + 128,67,1,128,195,129,0,227,131,0,99,130,0,3,6,0, + 60,4,0,7,8,0,3,152,0,243,208,112,227,176,112,199, + 160,240,62,97,240,0,65,240,0,194,240,0,130,240,1,132, + 240,1,7,252,3,0,240,2,0,240,6,3,252,9,22,44, + 13,2,249,24,0,60,0,60,0,60,0,24,0,0,0,28, + 0,34,0,34,0,34,0,6,0,12,0,28,0,56,0,112, + 0,113,0,240,128,240,128,240,128,240,128,113,0,62,0,19, + 27,81,22,2,1,3,0,0,3,128,0,1,128,0,0,192, + 0,0,64,0,0,0,0,0,64,0,0,96,0,0,224,0, + 0,224,0,0,240,0,1,240,0,1,240,0,1,248,0,2, + 120,0,2,120,0,2,124,0,4,60,0,4,60,0,4,62, + 0,15,254,0,8,30,0,8,31,0,16,15,0,16,15,0, + 48,15,128,254,127,224,19,27,81,21,2,1,0,24,0,0, + 56,0,0,48,0,0,96,0,0,64,0,0,0,0,0,64, + 0,0,96,0,0,224,0,0,224,0,0,240,0,1,240,0, + 1,240,0,1,248,0,2,120,0,2,120,0,2,124,0,4, + 60,0,4,60,0,8,60,0,15,254,0,8,30,0,16,30, + 0,16,15,0,16,15,0,48,15,128,254,127,224,19,27,81, + 22,2,0,0,64,0,0,224,0,1,240,0,3,24,0,4, + 4,0,0,0,0,0,64,0,0,96,0,0,224,0,0,224, + 0,0,240,0,1,240,0,1,240,0,1,248,0,2,120,0, + 2,120,0,2,124,0,4,60,0,4,60,0,4,62,0,15, + 254,0,8,30,0,8,31,0,16,15,0,16,15,0,48,15, + 128,254,127,224,19,27,81,21,2,0,0,4,0,1,200,0, + 3,248,0,4,112,0,0,0,0,0,0,0,0,64,0,0, + 96,0,0,224,0,0,224,0,0,240,0,1,240,0,1,240, + 0,1,248,0,2,120,0,2,120,0,2,124,0,4,60,0, + 4,60,0,4,60,0,15,254,0,8,30,0,24,30,0,16, + 15,0,16,15,0,48,15,128,254,127,224,19,27,81,22,2, + 0,3,12,0,7,158,0,7,158,0,3,12,0,0,0,0, + 0,0,0,0,96,0,0,96,0,0,224,0,0,240,0,0, + 240,0,1,240,0,1,248,0,1,120,0,2,120,0,2,124, + 0,2,60,0,4,60,0,4,62,0,4,30,0,15,254,0, + 8,31,0,8,15,0,16,15,0,16,15,0,48,15,128,254, + 127,224,19,27,81,21,1,0,0,240,0,1,8,0,1,8, + 0,1,8,0,0,240,0,0,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 120,0,1,120,0,2,124,0,2,60,0,2,60,0,4,62, + 0,4,30,0,7,254,0,8,31,0,8,15,0,8,15,0, + 24,15,0,24,15,128,254,63,224,26,21,84,28,0,0,0, + 63,255,192,0,15,131,192,0,15,129,192,0,31,128,192,0, + 23,128,192,0,55,128,64,0,39,132,64,0,103,132,0,0, + 71,140,0,0,199,156,0,0,135,252,0,1,135,156,0,1, + 7,140,0,3,7,132,64,3,255,132,64,6,7,128,64,4, + 7,128,64,12,7,128,192,12,7,129,192,28,7,131,192,255, + 63,255,192,15,28,56,18,2,250,15,230,28,30,56,30,56, + 14,120,14,120,6,248,6,248,6,248,2,248,0,248,0,248, + 0,248,0,248,2,120,2,120,2,120,4,56,4,60,12,28, + 8,6,48,1,192,1,0,1,192,0,96,0,96,4,96,3, + 192,16,27,54,19,1,1,6,0,7,0,3,0,1,128,0, + 0,0,0,255,255,30,15,30,7,30,3,30,3,30,1,30, + 17,30,16,30,48,30,48,31,240,30,48,30,48,30,17,30, + 17,30,1,30,1,30,3,30,7,30,15,255,255,16,27,54, + 19,1,1,0,56,0,120,0,96,0,192,0,0,0,0,255, + 255,30,15,30,7,30,3,30,3,30,1,30,17,30,16,30, + 48,30,48,31,240,30,48,30,48,30,17,30,17,30,1,30, + 1,30,3,30,7,30,15,255,255,16,27,54,19,1,0,0, + 128,1,192,3,96,6,56,8,0,0,0,255,255,30,15,30, + 7,30,3,30,3,30,1,30,17,30,16,30,48,30,48,31, + 240,30,48,30,48,30,17,30,17,30,1,30,1,30,3,30, + 7,30,15,255,255,16,27,54,19,1,0,6,24,15,60,15, + 60,6,24,0,0,0,0,255,255,30,15,30,7,30,3,30, + 3,30,1,30,17,30,16,30,48,30,48,31,240,30,48,30, + 48,30,17,30,17,30,1,30,1,30,3,30,7,30,15,255, + 255,9,27,54,11,1,1,96,0,112,0,56,0,8,0,0, + 0,0,0,255,128,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,255,128,10,27,54, + 12,1,1,3,128,3,128,6,0,12,0,8,0,0,0,255, + 192,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,255,192,9,27,54,11,1,0,12, + 0,28,0,62,0,99,0,0,128,0,0,255,128,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,255,128,10,27,54,13,2,0,97,128,243,192,243, + 192,97,128,0,0,0,0,255,192,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,255, + 192,19,21,63,22,2,0,255,248,0,30,14,0,30,7,0, + 30,3,128,30,3,192,30,3,192,30,3,192,30,3,224,30, + 3,224,30,3,224,255,131,224,30,3,224,30,3,224,30,3, + 224,30,3,192,30,3,192,30,3,128,30,3,128,30,7,0, + 30,14,0,255,248,0,21,26,78,22,1,1,0,226,0,1, + 254,0,2,28,0,0,0,0,0,0,0,254,15,248,31,1, + 192,31,0,128,15,128,128,15,192,128,15,192,128,11,224,128, + 11,240,128,9,248,128,8,248,128,8,252,128,8,126,128,8, + 62,128,8,31,128,8,31,128,8,15,128,8,7,128,8,7, + 128,8,3,128,28,1,128,255,129,128,17,27,81,20,2,1, + 14,0,0,7,0,0,3,0,0,1,128,0,0,0,0,0, + 128,0,7,112,0,12,24,0,24,12,0,56,14,0,120,14, + 0,120,15,0,120,15,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,120,15,0,120, + 15,0,120,15,0,56,14,0,24,12,0,12,24,0,7,112, + 0,17,27,81,20,2,1,0,56,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,128,0,7,112,0,12,24,0,24, + 12,0,56,14,0,120,14,0,120,15,0,120,15,0,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,120,15,0,120,15,0,120,15,0,56,14,0,24, + 12,0,12,24,0,7,112,0,17,27,81,20,2,0,0,128, + 0,1,192,0,3,96,0,6,48,0,8,8,0,0,128,0, + 7,112,0,12,24,0,24,12,0,56,14,0,120,14,0,120, + 15,0,120,15,0,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,120,15,0,120,15,0, + 120,15,0,56,14,0,24,12,0,12,24,0,7,112,0,17, + 27,81,20,2,0,0,8,0,7,136,0,7,240,0,8,224, + 0,0,0,0,0,128,0,7,112,0,12,24,0,24,12,0, + 56,14,0,120,14,0,120,15,0,120,15,0,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,120,15,0,120,15,0,120,15,0,56,14,0,24,12,0, + 12,24,0,7,112,0,17,27,81,20,2,0,12,48,0,30, + 120,0,30,120,0,12,48,0,0,0,0,0,128,0,7,112, + 0,12,24,0,24,12,0,56,14,0,120,14,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,120,15,0,120,15,0,120,15, + 0,56,14,0,24,12,0,12,24,0,7,112,0,18,19,57, + 26,4,254,64,0,64,224,0,192,112,1,128,56,3,0,28, + 6,0,14,12,0,7,24,0,3,176,0,1,224,0,0,224, + 0,1,240,0,3,56,0,6,28,0,12,12,0,24,6,0, + 48,3,0,112,1,128,224,0,192,64,0,0,17,22,66,20, + 2,0,0,128,0,7,113,128,12,27,0,24,14,0,56,14, + 0,56,14,0,120,31,0,120,31,0,248,47,128,248,111,128, + 248,79,128,248,143,128,249,15,128,251,15,128,250,15,128,124, + 15,0,124,15,0,120,14,0,56,14,0,56,12,0,108,24, + 0,199,112,0,19,27,81,22,2,1,7,0,0,3,128,0, + 1,128,0,0,192,0,0,0,0,0,0,0,255,15,224,60, + 3,128,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,28, + 1,0,28,2,0,14,4,0,7,248,0,19,27,81,22,2, + 1,0,28,0,0,56,0,0,48,0,0,96,0,0,0,0, + 0,0,0,255,15,224,60,3,128,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,28,1,0,28,2,0,14,4,0,7, + 248,0,19,27,81,22,2,0,0,192,0,0,224,0,1,240, + 0,6,24,0,0,4,0,0,0,0,255,15,224,60,3,128, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,28,3,0, + 28,2,0,14,4,0,7,248,0,19,27,81,22,2,0,3, + 12,0,7,158,0,7,158,0,3,12,0,0,0,0,0,0, + 0,255,143,224,60,3,128,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,28,1,0,28,2,0,14,4,0,7,248,0, + 19,27,81,21,2,1,0,28,0,0,60,0,0,48,0,0, + 96,0,0,0,0,0,0,0,255,31,224,62,7,0,30,6, + 0,30,6,0,31,4,0,15,4,0,15,136,0,7,136,0, + 7,144,0,7,208,0,3,240,0,3,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,7,248,0,17,21,63,19,1,0,255,192,0, + 30,0,0,30,0,0,30,0,0,31,248,0,30,14,0,30, + 15,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 128,30,15,0,30,14,0,31,248,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,192,0,14,21,42,16, + 1,0,7,192,12,96,28,112,28,112,60,112,60,112,60,112, + 60,96,61,128,60,96,60,48,60,56,60,56,60,56,60,60, + 60,60,60,56,63,184,63,184,63,48,253,224,12,21,42,14, + 1,0,96,0,112,0,56,0,24,0,12,0,4,0,0,0, + 30,0,99,128,99,192,243,192,115,192,7,192,27,192,115,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,21,42,14, + 1,0,1,128,3,128,3,0,6,0,12,0,8,0,0,0, + 30,0,99,128,99,192,243,192,115,192,35,192,15,192,51,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,21,42,14, + 1,0,12,0,12,0,30,0,19,0,33,128,64,128,0,0, + 30,0,99,128,99,192,243,192,115,192,35,192,15,192,51,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,20,40,14, + 1,0,56,128,127,128,71,0,0,0,0,0,0,0,30,0, + 99,128,99,192,243,192,115,192,3,192,31,192,51,192,115,192, + 243,192,243,208,243,208,245,208,121,224,12,20,40,14,1,0, + 97,128,243,192,243,192,97,128,0,0,0,0,30,0,99,128, + 99,192,243,192,115,192,35,192,15,192,51,192,115,192,243,192, + 243,208,243,208,243,208,125,224,12,21,42,14,1,1,30,0, + 33,0,33,0,33,0,50,0,12,0,0,0,31,0,99,128, + 97,192,241,192,113,192,33,192,15,192,49,192,97,192,225,192, + 225,208,225,208,227,208,124,224,17,14,42,19,1,0,62,60, + 0,99,230,0,99,199,0,243,199,128,115,199,128,7,199,128, + 27,255,128,115,192,0,115,192,0,243,192,128,243,192,128,243, + 225,0,242,225,0,124,62,0,10,21,42,13,1,249,15,0, + 56,128,112,192,113,192,243,192,243,128,240,0,240,0,240,0, + 240,0,112,64,112,64,56,128,31,0,4,0,8,0,6,0, + 3,0,3,0,3,0,30,0,11,21,42,13,1,0,48,0, + 48,0,56,0,24,0,12,0,0,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,21,42,13,1,0,1,128, + 3,128,3,128,6,0,4,0,8,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,21,42,13,1,0,12,0, + 14,0,30,0,27,0,49,128,64,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,20,40,13,1,0,49,128, + 123,192,123,192,49,128,0,0,0,0,15,0,51,128,113,192, + 113,192,241,192,241,224,255,224,240,0,240,0,240,32,112,64, + 112,64,56,128,15,0,7,21,21,9,1,0,192,224,112,48, + 24,8,0,124,60,60,60,60,60,60,60,60,60,60,60,60, + 126,6,21,21,9,2,0,12,12,28,56,32,0,0,248,120, + 120,120,120,120,120,120,120,120,120,120,120,252,8,21,21,8, + 1,0,56,56,124,110,131,0,0,252,60,60,60,60,60,60, + 60,60,60,60,60,60,254,8,20,20,9,1,0,102,255,255, + 102,0,0,124,60,60,60,60,60,60,60,60,60,60,60,60, + 126,12,21,42,14,1,0,60,64,31,128,15,0,15,0,55, + 128,3,128,3,192,31,192,49,224,113,224,112,224,240,224,240, + 240,240,240,240,240,240,224,240,224,112,224,113,192,49,192,15, + 0,13,19,38,16,2,1,30,64,63,192,35,128,0,0,0, + 0,251,192,124,224,120,224,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,253,248,12,21,42, + 14,1,0,48,0,56,0,56,0,12,0,6,0,2,0,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,21,42, + 14,1,0,1,128,1,192,3,128,3,0,6,0,4,0,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,21,42, + 14,1,0,6,0,14,0,15,0,27,0,48,128,32,64,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,20,40, + 14,1,0,28,64,63,192,71,128,0,0,0,0,0,0,15, + 0,49,128,112,192,112,224,240,224,240,224,240,240,240,240,240, + 224,240,224,112,224,112,192,49,128,15,0,12,20,40,14,1, + 0,49,128,123,192,123,192,49,128,0,0,0,0,15,0,49, + 128,112,192,112,224,240,224,240,224,240,240,240,240,240,224,240, + 224,112,224,112,192,49,128,15,0,24,19,57,26,1,254,0, + 24,0,0,60,0,0,60,0,0,24,0,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0, + 0,0,0,0,0,0,0,0,0,0,24,0,0,60,0,0, + 60,0,0,60,0,0,24,0,12,14,28,14,1,0,15,16, + 49,160,113,192,112,224,241,224,243,224,242,240,244,240,248,224, + 240,224,112,224,112,192,121,128,143,0,14,21,42,15,0,0, + 24,0,28,0,12,0,6,0,3,0,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,248,60,248,29,120,14,124,14,21,42,15,0,0, + 0,192,0,192,1,192,1,128,3,0,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,120,60,248,29,120,14,124,14,21,42,15,0,0, + 3,0,7,0,7,128,12,128,24,64,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,120,60,248,29,120,14,124,14,20,40,15,0,0, + 24,192,61,224,61,224,24,192,0,0,0,0,253,248,60,120, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,248,29,120,14,124,13,28,56,15,1,249,0,192, + 0,192,1,192,3,128,2,0,0,0,0,0,252,248,120,32, + 56,32,60,64,28,64,28,64,30,64,14,128,15,128,7,128, + 7,0,7,0,3,0,3,0,2,0,2,0,50,0,124,0, + 116,0,116,0,56,0,13,26,52,15,1,250,28,0,124,0, + 188,0,60,0,60,0,60,0,60,240,63,120,60,120,60,120, + 60,120,60,120,60,112,60,112,60,96,60,192,60,128,61,0, + 62,0,60,0,60,0,60,0,60,0,60,0,48,0,192,0, + 13,27,54,15,1,249,24,96,60,240,60,240,24,96,0,0, + 0,0,254,120,120,48,56,32,60,32,28,32,30,64,30,64, + 14,64,15,128,7,128,7,128,7,0,3,0,3,0,1,0, + 2,0,50,0,122,0,116,0,116,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=24 h=27 x= 3 y= 9 dx=26 dy= 0 ascent=22 len=75 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21n[703] U8G_SECTION(".progmem.u8g_font_osb21n") = { + 0,77,36,232,248,21,0,0,0,0,42,57,0,22,250,21, + 0,11,12,24,14,2,9,14,0,14,0,78,192,228,224,245, + 192,14,0,14,0,245,192,228,192,78,192,14,0,14,0,24, + 25,75,26,1,252,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,255,255,255,255,255,255,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 5,10,10,7,1,251,112,248,248,248,120,8,16,16,32,192, + 7,3,3,11,2,6,254,254,254,4,4,4,8,2,0,96, + 240,240,96,9,27,54,13,2,250,1,128,1,128,1,128,3, + 0,3,0,3,0,2,0,6,0,6,0,6,0,12,0,12, + 0,12,0,24,0,24,0,24,0,16,0,48,0,48,0,48, + 0,96,0,96,0,96,0,192,0,192,0,192,0,128,0,14, + 21,42,16,1,1,15,192,24,96,56,112,56,112,120,120,120, + 120,248,120,248,124,248,124,248,124,248,124,248,124,248,124,248, + 124,248,120,120,120,120,120,56,112,56,112,24,96,15,192,9, + 21,42,16,3,0,6,0,14,0,30,0,254,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,255,128,12, + 21,42,16,2,1,63,192,97,224,96,224,224,240,224,240,240, + 240,248,240,121,224,49,224,3,192,7,128,14,0,28,0,48, + 16,96,16,64,16,192,16,255,240,255,224,143,224,135,192,13, + 21,42,16,2,1,63,192,96,224,96,224,224,240,240,240,248, + 240,120,240,112,240,0,224,1,192,31,0,0,224,0,240,0, + 112,112,120,248,120,248,120,240,120,224,112,96,240,59,192,13, + 21,42,16,1,0,1,192,1,192,3,192,3,192,7,192,7, + 192,15,192,27,192,27,192,51,192,35,192,99,192,67,192,195, + 192,255,248,3,192,3,192,3,192,3,192,3,192,31,248,13, + 21,42,16,2,0,96,224,127,192,127,128,127,0,120,0,64, + 0,64,0,64,0,79,0,113,224,64,240,64,240,0,248,0, + 248,112,248,248,248,248,248,240,240,224,240,97,224,59,192,13, + 21,42,16,2,1,15,224,24,32,56,48,48,240,112,240,112, + 240,240,96,240,0,240,0,247,128,248,224,240,112,240,112,240, + 112,240,120,112,120,112,112,112,112,48,112,56,96,13,192,11, + 21,42,16,3,0,156,64,190,96,255,32,255,32,199,224,129, + 160,128,64,128,64,0,128,0,128,1,0,3,0,7,0,6, + 0,14,0,14,0,30,0,30,0,30,0,30,0,30,0,14, + 21,42,16,2,1,31,192,48,32,96,48,96,16,224,16,240, + 16,248,32,254,32,127,192,63,192,31,240,31,248,99,248,64, + 248,192,60,192,24,192,24,192,24,96,16,112,48,31,192,13, + 21,42,16,2,1,31,128,48,192,112,96,112,112,240,112,240, + 112,240,120,240,120,240,120,112,120,112,120,56,248,15,120,0, + 120,0,120,56,112,120,112,120,96,112,224,96,192,63,128}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=28 h=29 x= 3 y=16 dx=31 dy= 0 ascent=23 len=87 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21r[4521] U8G_SECTION(".progmem.u8g_font_osb21r") = { + 0,77,36,232,248,21,5,141,12,241,32,127,249,23,249,21, + 249,0,0,0,8,0,0,5,21,21,9,2,1,240,248,248, + 248,248,112,112,112,112,32,32,32,32,32,32,0,0,112,248, + 248,112,7,6,6,11,2,16,238,238,238,238,198,68,16,21, + 42,20,2,0,6,12,6,12,6,12,6,8,6,24,6,24, + 255,255,255,255,12,24,12,24,12,48,12,48,12,48,8,48, + 255,255,255,255,24,32,24,96,24,96,16,96,48,96,13,25, + 50,16,2,254,9,0,11,0,61,192,105,48,73,8,201,8, + 201,56,233,120,249,112,253,0,127,0,127,0,63,192,15,224, + 15,240,73,248,233,248,233,56,201,24,137,24,137,16,73,32, + 57,192,15,0,9,0,19,22,66,25,3,0,0,1,0,60, + 3,0,102,2,0,231,4,0,231,4,0,231,8,0,231,8, + 0,231,16,0,231,48,0,102,32,0,102,96,0,24,64,0, + 0,195,0,0,140,192,1,140,192,1,28,224,2,28,224,2, + 28,224,4,28,224,4,28,224,8,12,192,24,7,128,20,21, + 63,22,1,1,3,224,0,6,16,0,14,16,0,14,16,0, + 14,16,0,14,48,0,15,32,0,15,64,0,7,128,0,3, + 192,0,7,195,240,9,224,192,48,224,128,112,240,128,112,121, + 0,240,59,0,240,62,0,240,30,0,248,31,16,126,111,160, + 63,199,192,3,6,6,7,2,16,224,224,224,224,192,64,8, + 27,27,10,2,250,1,2,4,8,24,48,48,112,112,240,240, + 240,240,240,240,240,240,112,112,112,48,48,24,8,4,2,1, + 8,26,26,10,1,250,128,192,96,48,24,24,12,12,14,14, + 14,14,15,15,15,14,14,14,14,12,12,24,24,48,96,192, + 11,12,24,14,2,9,14,0,14,0,78,192,228,224,245,192, + 14,0,14,0,245,192,228,192,78,192,14,0,14,0,24,25, + 75,26,1,252,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,24,0,0,24,0,255,255,255,255,255,255,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,5, + 10,10,7,1,251,112,248,248,248,120,8,16,16,32,192,7, + 3,3,11,2,6,254,254,254,4,4,4,8,2,0,96,240, + 240,96,9,27,54,13,2,250,1,128,1,128,1,128,3,0, + 3,0,3,0,2,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,16,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,192,0,128,0,14,21, + 42,16,1,1,15,192,24,96,56,112,56,112,120,120,120,120, + 248,120,248,124,248,124,248,124,248,124,248,124,248,124,248,124, + 248,120,120,120,120,120,56,112,56,112,24,96,15,192,9,21, + 42,16,3,0,6,0,14,0,30,0,254,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,12,21, + 42,16,2,1,63,192,97,224,96,224,224,240,224,240,240,240, + 248,240,121,224,49,224,3,192,7,128,14,0,28,0,48,16, + 96,16,64,16,192,16,255,240,255,224,143,224,135,192,13,21, + 42,16,2,1,63,192,96,224,96,224,224,240,240,240,248,240, + 120,240,112,240,0,224,1,192,31,0,0,224,0,240,0,112, + 112,120,248,120,248,120,240,120,224,112,96,240,59,192,13,21, + 42,16,1,0,1,192,1,192,3,192,3,192,7,192,7,192, + 15,192,27,192,27,192,51,192,35,192,99,192,67,192,195,192, + 255,248,3,192,3,192,3,192,3,192,3,192,31,248,13,21, + 42,16,2,0,96,224,127,192,127,128,127,0,120,0,64,0, + 64,0,64,0,79,0,113,224,64,240,64,240,0,248,0,248, + 112,248,248,248,248,248,240,240,224,240,97,224,59,192,13,21, + 42,16,2,1,15,224,24,32,56,48,48,240,112,240,112,240, + 240,96,240,0,240,0,247,128,248,224,240,112,240,112,240,112, + 240,120,112,120,112,112,112,112,48,112,56,96,13,192,11,21, + 42,16,3,0,156,64,190,96,255,32,255,32,199,224,129,160, + 128,64,128,64,0,128,0,128,1,0,3,0,7,0,6,0, + 14,0,14,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,16,2,1,31,192,48,32,96,48,96,16,224,16,240,16, + 248,32,254,32,127,192,63,192,31,240,31,248,99,248,64,248, + 192,60,192,24,192,24,192,24,96,16,112,48,31,192,13,21, + 42,16,2,1,31,128,48,192,112,96,112,112,240,112,240,112, + 240,120,240,120,240,120,112,120,112,120,56,248,15,120,0,120, + 0,120,56,112,120,112,120,96,112,224,96,192,63,128,4,14, + 14,8,2,0,96,240,240,240,96,0,0,0,0,0,96,240, + 240,96,5,19,19,8,2,251,96,240,240,240,96,0,0,0, + 0,112,240,248,248,248,8,16,16,32,192,21,24,72,26,2, + 252,0,0,24,0,0,56,0,0,240,0,3,192,0,15,0, + 0,28,0,0,120,0,1,224,0,7,128,0,14,0,0,60, + 0,0,240,0,0,224,0,0,120,0,0,30,0,0,7,128, + 0,1,192,0,0,240,0,0,60,0,0,15,0,0,3,128, + 0,1,224,0,0,120,0,0,24,24,8,24,26,1,4,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,21,24,72,26,3,252,128,0,0, + 224,0,0,120,0,0,30,0,0,7,128,0,1,192,0,0, + 240,0,0,60,0,0,15,0,0,3,128,0,1,224,0,0, + 120,0,0,56,0,0,240,0,3,192,0,15,0,0,28,0, + 0,120,0,1,224,0,7,128,0,14,0,0,60,0,0,240, + 0,0,192,0,0,9,21,42,13,2,1,126,0,71,0,135, + 128,135,128,135,128,135,128,71,0,14,0,12,0,28,0,16, + 0,48,0,34,0,34,0,34,0,28,0,0,0,12,0,30, + 0,30,0,12,0,20,22,66,22,1,0,0,32,0,3,222, + 0,12,3,0,24,0,128,48,0,192,48,112,96,97,207,96, + 99,142,48,199,142,48,199,14,48,199,14,48,207,14,48,207, + 28,48,207,28,32,207,28,96,79,60,64,103,44,128,99,199, + 0,48,0,0,24,0,0,12,2,0,3,252,0,19,21,63, + 22,2,0,0,64,0,0,96,0,0,224,0,0,224,0,0, + 240,0,1,240,0,1,240,0,1,248,0,2,120,0,2,120, + 0,2,124,0,4,60,0,4,60,0,4,62,0,15,254,0, + 8,30,0,8,31,0,16,15,0,16,15,0,48,15,128,254, + 127,224,17,21,63,19,1,0,255,240,0,30,28,0,30,14, + 0,30,15,0,30,15,0,30,15,0,30,15,0,30,14,0, + 30,14,0,30,24,0,31,224,0,30,28,0,30,15,0,30, + 7,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 0,30,14,0,255,248,0,15,21,42,18,2,1,15,230,28, + 30,56,30,56,14,120,14,120,6,248,6,248,6,248,2,248, + 0,248,0,248,0,248,0,248,2,248,2,120,2,120,4,56, + 4,60,12,28,8,15,240,19,21,63,21,1,0,255,248,0, + 30,14,0,30,7,0,30,3,128,30,3,192,30,3,192,30, + 3,192,30,3,224,30,3,224,30,3,224,30,3,224,30,3, + 224,30,3,224,30,3,224,30,3,192,30,3,192,30,3,192, + 30,3,128,30,7,0,30,14,0,255,248,0,16,21,42,19, + 1,0,255,255,30,15,30,7,30,3,30,3,30,1,30,17, + 30,16,30,48,30,48,31,240,30,48,30,48,30,17,30,17, + 30,1,30,1,30,3,30,7,30,15,255,255,17,21,63,19, + 1,0,255,255,128,30,15,128,30,7,128,30,3,128,30,1, + 128,30,1,128,30,17,128,30,17,128,30,48,0,30,48,0, + 31,240,0,30,48,0,30,48,0,30,16,0,30,16,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,20,2,0,0,128,0,7,114,0,28,30,0, + 24,14,0,56,6,0,120,6,0,120,6,0,120,2,0,248, + 2,0,248,0,0,248,0,0,248,0,0,248,255,128,248,30, + 0,248,30,0,248,30,0,120,30,0,120,30,0,56,30,0, + 56,22,0,28,34,0,14,194,0,20,21,63,22,1,0,255, + 223,240,30,3,192,30,3,192,30,3,192,30,3,192,30,3, + 192,30,3,192,30,3,192,30,3,192,30,3,192,31,255,192, + 30,3,192,30,3,192,30,3,192,30,3,192,30,3,192,30, + 3,192,30,3,192,30,3,192,30,3,192,255,223,240,9,21, + 42,11,1,0,255,128,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,13,21, + 42,15,1,0,15,248,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,113,224, + 249,224,249,224,249,192,225,192,193,192,65,128,55,0,19,21, + 63,21,1,0,255,159,192,30,7,0,30,6,0,30,12,0, + 30,8,0,30,16,0,30,32,0,30,96,0,30,240,0,31, + 240,0,31,248,0,30,248,0,30,124,0,30,124,0,30,62, + 0,30,30,0,30,31,0,30,15,0,30,15,128,30,15,128, + 255,159,224,17,21,63,19,1,0,255,128,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,1,0, + 30,1,128,30,1,128,30,1,128,30,3,128,30,3,128,30, + 7,128,30,15,128,255,255,128,23,21,63,25,1,0,254,0, + 254,30,0,240,31,1,240,31,1,240,31,1,240,31,129,240, + 23,130,240,23,194,240,23,194,240,19,196,240,19,228,240,17, + 228,240,17,228,240,17,248,240,16,248,240,16,248,240,16,248, + 240,16,112,240,16,112,240,56,48,240,254,35,254,21,21,63, + 22,1,0,254,15,248,31,1,192,31,0,128,15,128,128,15, + 192,128,15,192,128,11,224,128,11,240,128,9,248,128,8,248, + 128,8,252,128,8,126,128,8,62,128,8,31,128,8,31,128, + 8,15,128,8,7,128,8,7,128,8,3,128,28,1,128,255, + 129,128,17,22,66,20,2,0,0,128,0,7,112,0,12,24, + 0,24,12,0,56,14,0,120,14,0,120,15,0,120,15,0, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,120,15,0,120,15,0,120,15,0,56,14, + 0,24,12,0,12,24,0,7,112,0,17,21,63,19,1,0, + 255,248,0,30,14,0,30,7,0,30,7,128,30,7,128,30, + 7,128,30,7,128,30,7,128,30,15,0,30,14,0,31,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,255,192,0,17, + 29,87,20,2,249,0,128,0,7,112,0,12,24,0,24,12, + 0,56,14,0,120,14,0,120,15,0,120,15,0,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,120,15,0,120,15,0,121,142,0,58,78,0,30,124, + 0,30,120,128,6,112,128,1,224,128,0,96,128,0,113,128, + 0,127,128,0,127,0,0,63,0,0,30,0,19,21,63,21, + 1,0,255,240,0,30,28,0,30,14,0,30,15,0,30,15, + 0,30,15,0,30,15,0,30,14,0,30,28,0,31,224,0, + 30,48,0,30,28,0,30,28,0,30,28,0,30,30,0,30, + 30,0,30,30,32,30,30,32,30,30,32,30,14,64,255,207, + 192,13,22,44,17,3,0,4,0,59,144,64,240,192,112,192, + 112,224,48,240,48,248,16,254,16,127,0,63,128,31,224,15, + 240,131,240,129,248,128,120,192,56,192,24,224,24,224,16,240, + 48,159,192,17,21,63,20,2,0,255,255,128,227,207,128,195, + 199,128,195,195,128,131,195,128,131,193,128,131,193,128,3,193, + 128,3,192,128,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,31,248,0,19,21,63,22,2,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,28,1,0,28,2,0,14,4,0,7,248,0,20,21,63, + 22,1,0,255,207,240,30,1,128,31,1,0,31,1,0,15, + 1,0,15,130,0,15,130,0,7,130,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,232,0,1,248,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 96,0,28,21,84,31,2,0,255,191,231,240,62,15,129,192, + 30,7,129,128,30,7,129,128,31,7,193,0,15,7,193,0, + 15,7,193,0,15,143,226,0,7,137,226,0,7,137,226,0, + 7,201,246,0,3,208,244,0,3,208,244,0,3,240,252,0, + 1,240,124,0,1,224,120,0,1,224,120,0,0,224,56,0, + 0,192,48,0,0,192,48,0,0,64,16,0,19,21,63,20, + 1,0,255,159,192,63,6,0,31,6,0,15,4,0,15,136, + 0,7,152,0,7,208,0,3,240,0,3,224,0,1,240,0, + 1,240,0,0,248,0,1,248,0,3,124,0,2,124,0,6, + 62,0,4,62,0,8,30,0,24,31,0,24,31,128,254,63, + 224,18,21,63,21,2,0,255,31,192,62,7,0,30,6,0, + 30,4,0,31,4,0,15,4,0,15,136,0,7,136,0,7, + 144,0,7,208,0,3,240,0,3,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,7,248,0,15,21,42,19,2,0,127,254,120,62, + 112,124,96,124,96,248,64,248,65,240,1,240,3,224,3,224, + 7,192,7,128,15,128,31,2,31,2,62,2,62,6,124,6, + 124,14,248,30,255,254,7,26,26,11,2,251,254,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,254,10,27,54,13,1,250,192,0,96,0, + 96,0,96,0,32,0,48,0,48,0,48,0,24,0,24,0, + 24,0,12,0,12,0,12,0,4,0,6,0,6,0,6,0, + 3,0,3,0,3,0,1,128,1,128,1,128,0,128,0,192, + 0,192,7,26,26,11,2,251,254,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,254,12,10,20,16,2,12,6,0,7,0,15,0,29,128, + 25,128,48,192,48,224,96,96,224,48,192,48,15,2,4,15, + 0,251,255,254,255,254,5,5,5,12,2,16,192,224,112,48, + 24,12,14,28,14,1,0,30,0,99,128,99,192,243,192,115, + 192,35,192,15,192,51,192,115,192,243,192,243,208,243,208,243, + 208,125,224,13,21,42,14,0,0,252,0,60,0,60,0,60, + 0,60,0,60,0,60,0,61,192,62,96,60,112,60,112,60, + 120,60,120,60,120,60,120,60,120,60,120,60,112,52,112,38, + 96,35,192,10,14,28,13,1,0,15,0,56,128,112,192,113, + 192,243,192,243,128,240,0,240,0,240,0,240,0,112,64,112, + 64,56,128,15,0,13,21,42,15,1,0,3,224,1,224,1, + 224,1,224,1,224,1,224,1,224,29,224,51,224,113,224,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,248,11,14,28,13,1,0,15,0,51,128,113, + 192,113,192,241,192,241,224,255,224,240,0,240,0,240,32,112, + 64,112,64,56,128,15,0,11,21,42,10,1,0,7,128,12, + 192,28,192,61,224,61,192,60,0,60,0,254,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,254,0,14,21,42,16,1,249,15,24,57, + 236,121,252,121,248,121,224,121,224,57,192,57,192,15,0,112, + 0,192,0,255,0,255,224,127,240,63,248,64,56,128,24,128, + 16,128,48,96,96,31,128,14,21,42,16,1,0,252,0,60, + 0,60,0,60,0,60,0,60,0,60,0,61,224,62,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,120,60,120,254,252,6,21,21,8,1,0,48,120,120, + 48,0,0,0,248,120,120,120,120,120,120,120,120,120,120,120, + 120,252,8,28,28,8,255,249,6,15,15,6,0,0,0,31, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,255, + 239,238,206,56,14,21,42,16,1,0,252,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,248,60,96,60,64,60,128, + 60,128,61,128,63,128,63,192,61,224,60,224,60,240,60,112, + 60,120,254,252,8,21,21,9,1,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,255,20, + 14,42,23,2,0,249,199,128,126,233,192,120,241,192,120,241, + 224,120,241,224,120,241,224,120,241,224,120,241,224,120,241,224, + 120,241,224,120,241,224,120,241,224,120,241,224,253,251,240,13, + 14,28,16,2,0,251,192,124,224,120,224,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,253, + 248,12,14,28,14,1,0,15,0,49,128,112,192,112,224,240, + 224,240,224,240,240,240,240,240,224,240,224,112,224,112,192,49, + 128,15,0,13,21,42,15,1,249,253,192,62,96,60,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,112,60, + 112,62,96,61,192,60,0,60,0,60,0,60,0,60,0,60, + 0,254,0,13,21,42,14,1,249,30,32,51,32,113,96,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,224,1,224,1,224,1,224,1,224,1,224,1, + 224,3,248,10,14,28,12,2,0,251,128,125,128,123,192,123, + 128,121,128,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,252,0,10,14,28,13,2,0,60,128,67,128,193, + 128,193,128,224,128,248,0,126,0,63,128,143,128,131,192,192, + 192,224,192,240,128,143,0,9,20,40,10,0,0,8,0,8, + 0,8,0,24,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,128,56,128,56,128,56,128,57, + 128,57,0,14,0,14,14,28,15,0,0,253,248,60,120,60, + 120,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,248,29,120,14,124,13,14,28,15,1,0,252,248,120, + 32,56,32,60,32,28,64,28,64,30,64,14,128,14,128,15, + 0,7,0,7,0,6,0,2,0,20,14,42,22,1,0,253, + 253,240,120,120,64,56,120,64,60,56,64,28,120,128,28,124, + 128,30,92,128,14,157,0,14,159,0,15,143,0,7,14,0, + 7,14,0,6,6,0,2,4,0,13,14,28,15,1,0,254, + 248,60,96,60,64,30,128,30,128,15,0,7,0,7,128,7, + 192,11,192,9,224,16,224,48,240,253,248,13,21,42,15,1, + 249,252,248,120,32,56,32,60,64,28,64,28,64,30,64,14, + 128,15,128,7,128,7,128,7,0,3,0,3,0,2,0,2, + 0,50,0,122,0,116,0,116,0,56,0,11,14,28,13,1, + 0,127,224,97,224,67,192,67,128,71,128,15,0,15,0,30, + 0,30,32,60,32,56,32,120,96,240,224,255,224,9,27,54, + 12,1,250,0,128,7,0,14,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,28,0,28,0,56,0,224,0,56, + 0,28,0,28,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,14,0,7,0,0,128,2,27,27,8,3,250,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,9,27,54,13,2,250, + 192,0,56,0,28,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,14,0,1,128,14,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,28,0, + 28,0,56,0,192,0,16,6,12,18,1,5,124,2,127,1, + 143,193,131,241,128,254,64,62,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=34 h=33 x= 6 y=20 dx=36 dy= 0 ascent=34 len=125 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x=-2 y=-10 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =26 descent=-8 + Max Font ascent =34 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26[12640] U8G_SECTION(".progmem.u8g_font_osb26") = { + 0,95,44,227,246,26,7,105,16,163,32,255,248,34,246,26, + 248,0,0,0,10,0,0,6,25,25,10,2,1,120,252,252, + 252,252,252,120,120,120,120,48,48,48,48,48,48,48,0,0, + 0,120,252,252,252,120,8,8,8,12,2,18,231,231,231,231, + 231,231,66,66,20,25,75,24,2,0,3,131,0,3,131,0, + 3,3,0,3,3,0,3,3,0,3,7,0,3,7,0,255, + 255,240,255,255,240,6,6,0,6,6,0,6,6,0,6,14, + 0,6,14,0,14,12,0,12,12,0,12,12,0,255,255,224, + 255,255,224,12,28,0,12,24,0,28,24,0,24,24,0,24, + 24,0,24,24,0,16,31,62,20,2,253,2,32,2,32,2, + 32,15,248,26,38,50,34,114,35,114,35,114,47,122,47,126, + 46,126,46,63,160,63,224,31,240,15,248,7,252,3,254,2, + 126,114,63,250,47,250,47,242,39,226,39,194,38,98,38,50, + 44,30,56,3,224,2,32,2,32,23,26,78,29,3,0,8, + 0,48,54,0,32,99,0,96,99,0,192,227,128,192,227,129, + 128,227,129,0,227,131,0,227,130,0,227,134,0,99,12,0, + 54,8,0,28,24,0,0,16,112,0,48,216,0,97,140,0, + 97,140,0,195,142,0,131,142,1,131,142,1,3,142,3,3, + 142,6,3,142,4,1,140,12,1,140,8,0,248,24,25,75, + 26,1,1,1,252,0,3,4,0,3,2,0,7,2,0,7, + 2,0,7,6,0,7,132,0,7,200,0,3,240,0,3,224, + 0,1,240,0,3,240,127,6,248,28,12,124,8,24,60,24, + 56,62,16,112,31,16,240,15,32,240,15,224,248,7,192,248, + 3,192,252,3,225,126,7,242,127,253,254,31,240,124,3,8, + 8,7,2,18,224,224,224,224,224,224,64,64,10,31,62,12, + 2,250,0,192,1,0,2,0,6,0,12,0,24,0,56,0, + 56,0,120,0,112,0,112,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,112,0,112,0,112,0, + 56,0,56,0,24,0,28,0,12,0,6,0,3,0,1,128, + 9,32,64,12,1,250,192,0,96,0,48,0,24,0,28,0, + 12,0,14,0,6,0,7,0,7,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,0,7,0,7,0,14,0,14,0,12,0,24,0,48,0, + 96,0,192,0,128,0,12,14,28,17,3,11,14,0,14,0, + 14,0,196,112,228,240,245,224,14,0,14,0,245,224,228,240, + 196,112,14,0,14,0,14,0,29,30,120,31,1,251,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,255,255,255,248,255,255,255,248,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,7,11,11,10,2,249,120,252,254,254, + 126,6,4,12,8,48,224,9,4,8,13,2,7,255,128,255, + 128,255,128,255,128,5,5,5,9,2,0,112,248,248,248,112, + 12,33,66,15,2,249,0,112,0,96,0,96,0,224,0,192, + 0,192,1,192,1,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,6,0,14,0,12,0,12,0,28,0, + 24,0,24,0,56,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,192,0,16,25,50,20,2,1,7,224, + 14,112,28,56,60,60,60,60,124,62,124,62,124,62,252,63, + 252,63,252,63,252,63,252,63,252,63,252,63,252,63,252,63, + 124,62,124,62,124,62,60,60,60,60,28,56,14,112,7,224, + 12,25,50,20,4,0,7,0,7,0,31,0,255,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,240,15,25,50,20,2,1,31,240, + 48,120,96,60,96,62,224,62,240,62,248,62,252,62,124,124, + 56,124,0,248,1,240,1,224,3,128,7,0,12,2,24,2, + 48,2,32,2,76,6,127,254,127,252,71,252,67,252,65,248, + 15,26,52,20,2,0,1,0,14,240,56,120,48,60,112,62, + 120,62,124,62,124,62,60,62,24,60,0,120,0,112,31,192, + 0,240,0,120,0,60,0,60,56,62,124,62,252,62,252,62, + 248,62,224,60,96,124,96,120,31,224,16,25,50,20,2,0, + 0,120,0,120,0,248,1,248,1,248,3,248,3,248,6,248, + 6,248,12,248,12,248,24,248,56,248,48,248,96,248,96,248, + 192,248,255,255,0,248,0,248,0,248,0,248,0,248,0,248, + 15,255,15,26,52,20,3,0,0,8,48,56,63,240,63,224, + 63,128,62,0,32,0,32,0,32,0,32,0,39,192,56,112, + 48,120,32,60,32,60,0,62,0,62,56,62,120,62,252,62, + 248,62,248,60,224,60,96,120,112,112,31,224,16,25,50,20, + 2,1,7,240,12,8,28,12,56,60,56,124,120,124,120,120, + 120,48,248,0,248,0,251,224,252,56,252,60,248,30,248,31, + 248,31,248,31,248,31,120,31,120,31,120,31,56,30,28,30, + 12,60,7,240,15,25,50,20,3,0,79,28,95,156,127,198, + 127,230,127,254,224,246,192,4,192,12,128,12,128,24,0,16, + 0,48,0,96,0,224,1,192,1,192,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,7,0,17,25,75,20, + 2,1,7,240,0,24,12,0,48,12,0,48,6,0,112,6, + 0,112,6,0,120,6,0,124,4,0,127,12,0,127,152,0, + 63,224,0,31,248,0,15,252,0,15,254,0,49,255,0,96, + 127,0,64,31,0,192,15,128,192,7,0,192,7,0,192,3, + 0,96,6,0,96,6,0,56,12,0,14,240,0,15,25,50, + 20,2,1,31,192,60,112,120,48,120,56,248,60,248,60,248, + 60,248,62,248,62,248,62,248,62,120,62,124,126,60,126,15, + 190,0,62,0,62,12,60,30,60,62,60,62,56,60,56,48, + 112,16,96,15,192,5,17,17,9,2,0,112,248,248,248,112, + 0,0,0,0,0,0,0,112,248,248,248,112,6,23,23,9, + 2,249,112,248,248,248,112,0,0,0,0,0,0,0,112,248, + 252,252,252,12,12,8,16,48,192,26,29,116,32,3,251,0, + 0,1,192,0,0,3,192,0,0,15,0,0,0,62,0,0, + 0,248,0,0,1,224,0,0,7,128,0,0,31,0,0,0, + 124,0,0,0,240,0,0,3,192,0,0,15,128,0,0,62, + 0,0,0,120,0,0,0,224,0,0,0,120,0,0,0,62, + 0,0,0,15,128,0,0,3,192,0,0,0,240,0,0,0, + 124,0,0,0,31,0,0,0,7,128,0,0,1,224,0,0, + 0,248,0,0,0,62,0,0,0,15,0,0,0,3,192,0, + 0,1,192,29,9,36,33,2,5,255,255,255,248,255,255,255, + 248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,248,255,255,255,248,26,29,116, + 32,3,251,224,0,0,0,240,0,0,0,60,0,0,0,31, + 0,0,0,7,192,0,0,1,224,0,0,0,120,0,0,0, + 62,0,0,0,15,128,0,0,3,192,0,0,0,240,0,0, + 0,124,0,0,0,31,0,0,0,7,128,0,0,1,192,0, + 0,7,128,0,0,31,0,0,0,124,0,0,0,240,0,0, + 3,192,0,0,15,128,0,0,62,0,0,0,120,0,0,1, + 224,0,0,7,192,0,0,31,0,0,0,60,0,0,0,240, + 0,0,0,224,0,0,0,11,25,50,16,2,1,63,128,67, + 192,129,224,129,224,129,224,131,224,195,192,67,192,3,128,7, + 0,6,0,12,0,8,0,24,0,17,0,17,0,17,0,14, + 0,0,0,0,0,14,0,31,0,31,0,31,0,14,0,25, + 25,100,27,1,1,0,255,192,0,3,0,48,0,6,0,24, + 0,12,0,12,0,24,0,6,0,48,30,243,0,48,114,243, + 0,96,225,227,0,97,225,225,128,227,193,225,128,195,193,225, + 128,195,193,193,128,199,131,193,128,199,131,193,128,199,131,195, + 0,199,131,195,0,231,135,130,0,103,135,134,0,99,139,204, + 0,49,240,240,0,48,0,0,0,24,0,0,0,12,0,0, + 0,7,0,96,0,1,255,192,0,23,26,78,25,1,0,0, + 16,0,0,24,0,0,56,0,0,56,0,0,60,0,0,124, + 0,0,124,0,0,126,0,0,254,0,0,254,0,0,158,0, + 1,159,0,1,159,0,1,31,0,3,15,128,3,15,128,3, + 15,128,6,7,192,7,255,192,6,7,192,4,7,224,12,3, + 224,12,3,224,28,3,240,28,3,240,255,159,254,20,25,75, + 24,2,0,255,254,0,31,7,128,31,7,192,31,3,192,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 128,31,7,0,31,248,0,31,7,0,31,3,192,31,1,224, + 31,1,224,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,240,31,1,224,31,3,192,31,7,128,255,254,0,19,25, + 75,22,2,1,3,248,64,14,6,192,30,3,192,60,3,192, + 60,1,192,124,1,192,124,0,192,124,0,192,252,0,192,252, + 0,64,252,0,64,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,96,124,0,64,124,0,64,124,0,64, + 60,0,192,30,0,128,30,1,0,15,3,0,3,252,0,23, + 25,75,27,2,0,255,255,0,31,3,192,31,0,224,31,0, + 240,31,0,120,31,0,120,31,0,124,31,0,124,31,0,126, + 31,0,126,31,0,126,31,0,126,31,0,126,31,0,126,31, + 0,126,31,0,126,31,0,124,31,0,124,31,0,124,31,0, + 120,31,0,120,31,0,240,31,0,224,31,3,192,255,255,0, + 20,25,75,23,2,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,25,75,23,2,0,255,255,240,31,3,240,31,0,240, + 31,0,240,31,0,112,31,0,112,31,0,48,31,4,48,31, + 4,48,31,12,48,31,12,0,31,28,0,31,252,0,31,28, + 0,31,12,0,31,12,0,31,4,0,31,4,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,255, + 240,0,21,26,78,24,2,0,0,32,0,3,220,32,7,3, + 96,14,1,224,28,1,224,60,0,224,60,0,224,124,0,96, + 124,0,96,252,0,32,252,0,32,252,0,0,252,0,0,252, + 63,248,252,3,224,252,3,224,252,3,224,252,3,224,124,3, + 224,124,3,224,124,3,224,60,3,224,60,3,96,30,6,96, + 14,12,96,3,184,32,25,25,100,28,2,0,255,231,255,128, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,255,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,255,231,255,128, + 11,25,50,14,2,0,255,224,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,224,16,25,50,18,1,0,7,255, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,120,248, + 248,248,248,248,248,248,240,248,224,240,64,240,97,224,63,192, + 24,25,75,27,2,0,255,227,252,31,0,224,31,0,192,31, + 0,128,31,1,128,31,3,0,31,6,0,31,12,0,31,28, + 0,31,28,0,31,62,0,31,126,0,31,255,0,31,191,0, + 31,31,128,31,31,128,31,15,192,31,15,192,31,7,224,31, + 7,224,31,3,240,31,1,240,31,1,248,31,1,252,255,231, + 255,20,25,75,23,2,0,255,224,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,48,31,0,48,31,0,48,31,0,48,31,0,112, + 31,0,112,31,0,240,31,0,240,31,1,240,31,3,240,255, + 255,240,27,25,100,30,2,0,255,0,63,224,15,0,63,0, + 15,128,63,0,15,128,63,0,15,128,127,0,15,192,95,0, + 15,192,95,0,11,224,95,0,11,224,223,0,11,224,159,0, + 9,240,159,0,9,240,159,0,9,241,31,0,8,249,31,0, + 8,249,31,0,8,249,31,0,8,126,31,0,8,126,31,0, + 8,62,31,0,8,62,31,0,8,60,31,0,8,28,31,0, + 24,28,31,0,60,28,31,0,255,8,255,224,24,25,75,27, + 2,0,255,3,255,31,128,124,31,128,56,15,192,16,7,224, + 16,7,240,16,7,240,16,5,248,16,5,252,16,4,252,16, + 4,126,16,4,127,16,4,63,16,4,31,144,4,31,208,4, + 15,208,4,7,240,4,7,240,4,3,240,4,1,240,4,1, + 240,4,0,240,14,0,112,31,0,48,255,192,48,20,25,75, + 24,2,1,3,252,0,6,6,0,14,7,0,28,3,128,60, + 3,192,60,3,192,124,3,224,124,3,224,124,3,224,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,124,3,224,124,3,224,124,3,224,60,3,192,60, + 3,192,28,3,128,14,7,0,6,6,0,3,252,0,20,25, + 75,24,2,0,255,254,0,31,3,128,31,3,192,31,1,224, + 31,1,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,192,31,7,128,31,254,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,255,240,0,20, + 33,99,24,2,249,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,240,124,3,224,124,3,224,60,243, + 192,61,155,192,29,11,128,15,15,128,7,15,16,3,156,16, + 0,108,16,0,12,16,0,12,48,0,14,48,0,15,240,0, + 15,224,0,7,224,0,3,128,22,25,75,25,2,0,255,252, + 0,31,7,128,31,7,192,31,3,192,31,3,224,31,3,224, + 31,3,224,31,3,224,31,3,192,31,7,192,31,15,0,31, + 248,0,31,14,0,31,15,0,31,7,128,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,196,31,7,196,31,7,196, + 31,7,196,31,3,200,255,241,248,16,25,50,21,3,1,31, + 198,32,118,96,62,224,30,224,14,240,6,248,6,252,6,255, + 2,127,128,127,192,63,240,15,248,7,252,129,254,128,254,192, + 127,192,31,192,15,224,7,224,7,240,6,248,6,220,12,135, + 120,21,25,75,25,3,0,255,255,248,248,248,248,240,248,120, + 224,248,120,192,248,56,192,248,56,128,248,24,128,248,24,128, + 248,24,128,248,24,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,15, + 255,0,23,25,75,26,2,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,24,25,75,27,2,0,255,241,255,31,128,56,15, + 128,48,15,192,48,15,192,48,7,192,32,7,224,32,7,224, + 96,3,224,64,3,240,64,1,240,192,1,240,128,1,248,128, + 0,249,128,0,249,128,0,253,0,0,125,0,0,127,0,0, + 126,0,0,62,0,0,62,0,0,60,0,0,28,0,0,28, + 0,0,24,0,34,25,125,36,1,0,255,231,255,127,192,31, + 129,248,14,0,15,128,248,14,0,15,128,252,12,0,15,192, + 124,12,0,7,192,124,12,0,7,192,124,8,0,7,224,254, + 24,0,3,224,190,24,0,3,224,190,24,0,3,241,159,16, + 0,1,241,159,48,0,1,241,31,48,0,1,249,15,32,0, + 1,251,15,160,0,0,250,15,224,0,0,254,15,224,0,0, + 254,7,192,0,0,126,7,192,0,0,124,7,192,0,0,124, + 3,192,0,0,60,3,128,0,0,56,3,128,0,0,56,1, + 128,0,0,24,1,128,0,23,25,75,26,2,0,255,231,252, + 31,193,224,15,192,192,15,193,128,7,225,128,7,227,0,3, + 242,0,3,246,0,1,244,0,1,248,0,0,248,0,0,252, + 0,0,124,0,0,62,0,0,126,0,0,127,0,0,159,0, + 1,159,128,1,15,128,3,15,192,6,7,224,4,7,224,12, + 3,240,28,7,240,255,143,254,23,25,75,26,2,0,255,225, + 254,31,128,112,31,128,96,15,128,96,15,192,64,7,192,192, + 7,224,192,7,224,128,3,225,128,3,241,0,1,241,0,1, + 251,0,0,250,0,0,254,0,0,252,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,3,255,128,18,25,75,22,2,0,127, + 255,192,124,15,192,120,31,128,112,31,128,96,63,0,96,63, + 0,64,126,0,64,126,0,64,252,0,0,252,0,1,248,0, + 1,240,0,3,240,0,7,224,0,7,224,0,15,192,64,15, + 192,64,31,128,64,31,128,64,63,0,192,63,1,192,126,1, + 192,126,3,192,252,15,192,255,255,192,8,31,31,14,3,250, + 255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,255,11, + 33,66,15,2,249,192,0,192,0,224,0,96,0,96,0,96, + 0,112,0,48,0,48,0,56,0,24,0,24,0,28,0,12, + 0,12,0,12,0,14,0,6,0,6,0,7,0,3,0,3, + 0,3,0,3,128,1,128,1,128,1,192,0,192,0,192,0, + 224,0,96,0,96,0,96,8,31,31,13,2,250,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,255,16,12,24,20, + 2,14,1,128,3,128,3,192,7,224,14,96,14,112,28,56, + 24,56,56,28,112,12,96,14,224,7,18,2,6,18,0,250, + 255,255,192,255,255,192,6,7,7,15,3,18,224,224,240,120, + 24,12,4,15,17,34,18,2,0,15,128,49,224,96,240,112, + 240,120,240,120,240,32,240,7,240,28,240,56,240,120,240,240, + 240,240,242,240,242,240,242,121,252,62,120,15,25,50,18,1, + 0,252,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,240,61,56,62,60,62,28,62,30,62,30,60,30,60, + 30,60,30,60,30,60,30,62,30,62,30,62,28,50,60,35, + 56,33,224,13,17,34,16,2,0,7,128,28,96,56,32,120, + 112,120,240,248,240,240,224,240,64,240,0,240,0,240,0,240, + 8,120,16,120,16,56,16,28,32,7,192,17,25,75,20,2, + 0,1,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,15,60,0,28,188,0,56, + 124,0,120,124,0,120,60,0,240,60,0,240,60,0,240,60, + 0,240,60,0,240,60,0,240,60,0,240,60,0,120,60,0, + 120,124,0,56,124,0,28,188,0,15,63,128,13,17,34,17, + 2,0,7,128,24,224,56,240,120,240,120,240,240,120,240,120, + 240,120,255,248,240,0,240,0,240,8,120,8,120,24,56,16, + 28,32,7,192,12,25,50,12,1,0,3,192,14,112,30,112, + 28,240,60,240,60,240,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,255,128,17,25,75,19, + 1,248,7,199,0,28,249,128,60,115,128,120,123,128,120,123, + 0,120,120,0,120,120,0,120,120,0,60,112,0,28,224,0, + 7,192,0,56,0,0,96,0,0,127,192,0,127,248,0,127, + 252,0,63,254,0,63,254,0,64,14,0,128,6,0,128,6, + 0,128,4,0,64,12,0,32,56,0,31,224,0,17,25,75, + 19,1,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,120,0,61,188, + 0,61,28,0,62,30,0,62,30,0,62,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,255,127,128,8,25, + 25,11,2,0,56,124,124,124,56,0,0,0,252,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,10,33,66, + 10,254,248,3,128,7,192,7,192,7,192,3,128,0,0,0, + 0,0,0,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,99,192,243,192,243,192,243,128,231, + 128,103,0,62,0,17,25,75,19,1,0,252,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,127,0,60,24,0,60,16,0,60,48,0,60, + 32,0,60,64,0,60,192,0,60,224,0,61,224,0,62,240, + 0,62,240,0,60,120,0,60,124,0,60,60,0,60,62,0, + 60,62,0,255,127,128,9,25,50,11,1,0,252,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,255,128,25,17, + 68,28,1,0,252,120,120,0,61,188,158,0,61,31,30,0, + 62,31,30,0,62,30,31,0,62,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,255,127,191,128,17,17,51,19,1,0,252,120, + 0,61,188,0,61,28,0,62,30,0,62,30,0,62,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,255,127, + 128,14,17,34,18,2,0,7,128,28,224,56,112,120,120,120, + 120,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,56,112,24,224,7,128,15,25,50,18,1,248,252, + 240,61,56,62,60,62,28,62,30,62,30,60,30,60,30,60, + 30,60,30,60,30,62,30,62,30,62,28,62,60,61,56,60, + 240,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 128,16,25,50,19,2,248,15,132,28,196,56,100,120,124,120, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 124,120,124,56,124,28,188,15,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,1,255,12,17,34,14,1,0,252, + 224,61,112,62,240,62,240,62,240,62,96,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,11,17,34,14,2,0,60,64,99,64,193,192,192,192,224, + 192,240,64,252,0,127,0,63,128,31,192,135,224,129,224,192, + 224,224,96,224,96,144,192,143,128,11,24,48,13,1,0,12, + 0,12,0,12,0,12,0,12,0,28,0,60,0,255,192,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 32,60,32,60,32,60,32,60,96,60,64,31,192,15,128,17, + 17,51,19,1,0,252,126,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,60,62,0,60,62,0,60, + 94,0,30,158,0,15,31,128,17,17,51,18,0,0,255,159, + 128,30,6,0,30,4,0,30,4,0,15,12,0,15,8,0, + 15,8,0,7,152,0,7,144,0,3,208,0,3,240,0,3, + 224,0,1,224,0,1,192,0,1,192,0,0,192,0,0,128, + 0,25,17,68,26,0,0,255,63,207,128,30,15,6,0,30, + 15,6,0,30,15,4,0,15,7,132,0,15,15,132,0,7, + 143,136,0,7,139,200,0,7,147,200,0,3,211,208,0,3, + 209,240,0,3,225,240,0,1,225,224,0,1,224,224,0,1, + 192,224,0,0,192,192,0,0,192,64,0,16,17,34,18,1, + 0,255,126,62,24,30,16,31,16,15,32,15,192,7,192,3, + 192,3,192,1,224,3,240,2,240,4,248,8,120,8,124,24, + 126,254,127,17,25,75,18,0,248,255,159,128,62,6,0,30, + 4,0,31,4,0,15,8,0,15,8,0,15,136,0,7,136, + 0,7,144,0,3,208,0,3,208,0,3,224,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 128,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,13,17,34,16,1,0,127,248,112,248,96,240, + 97,224,67,224,67,192,7,192,7,128,15,128,15,0,31,8, + 30,8,60,24,124,24,120,56,248,120,255,248,11,33,66,15, + 2,249,0,32,3,192,7,0,15,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 56,0,224,0,56,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,14,0,7,0, + 3,192,0,32,2,32,32,10,4,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,11,33,66,15,3,249, + 128,0,240,0,60,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,15,0,7,0, + 1,224,7,0,15,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,60,0,240,0, + 128,0,19,7,21,23,2,6,62,0,64,127,128,32,255,240, + 32,135,252,32,129,255,224,128,63,192,64,15,128,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,10,0,0,6,26,26,10,2,248,120,252,252,252,120,0, + 0,0,32,48,48,48,48,48,48,120,120,120,120,252,252,252, + 252,252,252,120,13,25,50,19,3,252,1,0,1,0,1,0, + 1,0,15,192,29,32,57,48,121,112,121,112,249,112,241,96, + 241,0,241,0,241,0,241,0,241,8,121,16,121,16,57,16, + 29,32,15,192,1,0,1,0,1,0,1,0,21,26,78,24, + 2,0,0,2,0,0,61,192,0,112,96,0,240,112,1,224, + 112,1,224,240,3,224,240,3,224,224,3,224,0,3,224,0, + 3,224,0,31,224,0,35,225,0,1,254,0,1,240,0,1, + 240,0,0,240,0,0,240,0,0,240,0,0,224,0,0,224, + 8,60,192,16,199,192,48,131,255,224,131,255,192,124,63,128, + 18,17,51,20,1,3,64,0,128,227,241,192,127,255,128,60, + 15,0,56,7,0,48,3,0,112,3,128,96,1,128,96,1, + 128,96,1,128,96,1,128,112,3,128,48,3,0,56,7,0, + 62,31,0,127,255,128,99,241,128,18,25,75,20,1,0,255, + 143,192,63,3,128,63,3,0,31,3,0,31,130,0,15,130, + 0,15,196,0,15,196,0,7,196,0,7,232,0,3,232,0, + 3,248,0,3,240,0,63,255,128,1,240,0,1,240,0,63, + 255,128,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,31,254,0,2,32,32,10,4,250, + 192,192,192,192,192,192,192,192,192,192,192,192,192,0,0,0, + 0,0,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 15,32,64,22,2,249,7,224,28,24,56,24,48,28,112,124, + 112,124,112,124,120,56,124,0,63,0,31,224,127,240,71,252, + 193,252,192,126,224,30,248,14,254,6,127,134,63,228,31,248, + 7,248,1,248,0,124,60,60,60,28,124,28,124,28,112,24, + 48,56,24,112,15,192,11,4,8,15,2,19,113,192,241,224, + 241,224,113,192,24,25,75,28,2,1,1,255,128,6,0,64, + 12,0,48,24,0,24,48,60,136,32,227,132,65,193,134,65, + 193,130,195,192,130,131,192,131,131,192,129,131,192,1,131,192, + 1,131,192,1,131,192,65,131,192,131,195,192,130,65,192,130, + 65,193,134,32,227,4,48,60,8,16,0,24,12,0,48,6, + 0,64,1,255,128,10,13,26,13,1,12,60,0,70,0,199, + 0,231,0,71,0,63,0,103,0,231,0,231,64,231,64,123, + 128,0,0,255,128,9,15,30,17,4,1,8,0,24,128,48, + 128,97,0,99,0,227,0,227,0,227,0,227,0,227,0,227, + 0,97,0,49,128,48,128,8,0,16,9,18,20,2,5,255, + 255,255,255,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,9,4,8,13,2,7,255,128,255,128,255,128,255,128,24, + 25,75,28,2,1,1,255,128,6,0,64,12,0,48,24,0, + 24,55,254,8,33,227,132,65,227,198,65,227,194,193,227,194, + 129,227,195,129,231,129,129,252,1,129,231,1,129,227,129,129, + 227,193,129,227,195,193,227,210,65,227,210,65,227,214,33,227, + 212,55,249,232,16,0,24,12,0,48,6,0,64,1,255,128, + 9,2,4,15,3,20,255,128,255,128,11,10,20,19,4,16, + 63,128,123,192,224,192,192,96,192,96,192,96,192,224,97,192, + 63,128,31,0,29,26,104,33,2,254,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,255,255,255,248,255,255,255,248,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,0,0,0,0,0,0,0,255,255,255,240,255,255, + 255,240,10,16,32,15,3,9,31,0,103,128,195,192,195,192, + 227,192,243,128,7,128,14,0,28,0,48,64,64,64,64,64, + 255,192,255,192,159,128,135,0,11,16,32,15,2,9,31,0, + 35,128,99,192,115,192,115,192,51,128,3,0,28,0,3,128, + 3,192,97,224,241,224,241,224,227,224,99,192,63,0,6,7, + 7,15,6,18,28,28,60,120,96,192,128,17,27,81,20,2, + 246,96,48,0,112,120,0,240,120,0,240,120,0,240,120,0, + 240,120,0,240,120,0,240,120,0,240,120,0,96,56,0,96, + 48,128,96,48,128,96,113,128,32,127,128,48,255,128,95,207, + 0,71,143,0,64,0,0,96,0,0,96,0,0,112,0,0, + 112,0,0,120,0,0,120,0,0,120,0,0,120,0,0,48, + 0,0,17,30,90,20,2,251,15,255,128,63,140,0,127,140, + 0,127,140,0,255,140,0,255,140,0,255,140,0,255,140,0, + 255,140,0,127,140,0,127,140,0,63,140,0,31,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,5,5,5,9,2,9,112,248,248,248,112,7,7,7, + 15,4,249,32,32,24,14,14,14,252,8,15,15,16,4,10, + 12,28,252,60,60,60,60,60,60,60,60,60,60,60,255,9, + 13,26,13,2,12,28,0,103,0,99,0,227,128,227,128,227, + 128,227,128,227,128,99,0,103,0,28,0,0,0,255,128,9, + 14,28,17,4,2,132,0,198,0,99,0,99,0,115,128,115, + 128,115,128,115,128,115,128,99,128,99,0,195,0,134,0,12, + 0,25,26,104,31,4,0,0,0,48,0,12,0,48,0,28, + 0,96,0,252,0,96,0,60,0,192,0,60,0,128,0,60, + 1,128,0,60,3,0,0,60,3,0,0,60,6,0,0,60, + 6,0,0,60,12,14,0,60,12,30,0,60,24,30,0,60, + 16,62,0,255,48,62,0,0,96,94,0,0,96,158,0,0, + 192,158,0,0,193,30,0,1,131,30,0,1,131,255,128,3, + 0,30,0,2,0,30,0,6,0,30,0,12,0,255,128,25, + 26,104,31,4,0,0,0,48,0,28,0,32,0,252,0,96, + 0,60,0,64,0,60,0,192,0,60,1,128,0,60,1,128, + 0,60,3,0,0,60,3,0,0,60,6,0,0,60,4,62, + 0,60,12,207,0,60,9,135,128,60,25,135,128,60,49,199, + 128,255,49,231,0,0,96,207,0,0,96,28,0,0,192,56, + 0,0,128,96,0,1,128,64,128,3,0,128,128,3,1,255, + 128,6,1,255,128,6,1,63,0,12,1,14,0,26,26,104, + 30,2,0,0,0,24,0,31,0,24,0,35,128,48,0,99, + 192,48,0,115,192,96,0,115,192,64,0,51,128,192,0,3, + 0,128,0,28,1,128,0,3,131,0,0,3,195,0,0,113, + 230,7,0,241,228,15,0,227,236,15,0,99,200,31,0,63, + 24,31,0,0,16,47,0,0,48,79,0,0,96,79,0,0, + 96,143,0,0,192,143,0,0,129,255,192,1,128,15,0,1, + 0,15,0,3,0,15,0,2,0,127,192,11,26,52,16,2, + 248,28,0,62,0,62,0,62,0,28,0,0,0,0,0,30, + 0,49,0,33,0,33,0,1,0,2,0,6,0,14,0,28, + 0,60,0,120,192,120,64,248,32,240,32,240,32,240,32,120, + 64,120,64,31,128,23,33,99,25,1,0,1,128,0,1,192, + 0,0,224,0,0,96,0,0,48,0,0,16,0,0,0,0, + 0,16,0,0,24,0,0,56,0,0,56,0,0,60,0,0, + 124,0,0,124,0,0,126,0,0,254,0,0,254,0,0,158, + 0,1,159,0,1,159,0,1,31,0,3,15,128,3,15,128, + 3,15,128,6,7,192,7,255,192,6,7,192,4,7,224,12, + 3,224,12,3,224,28,3,240,28,3,240,255,159,254,23,33, + 99,25,1,0,0,3,0,0,7,128,0,7,0,0,14,0, + 0,28,0,0,16,0,0,0,0,0,16,0,0,24,0,0, + 56,0,0,56,0,0,60,0,0,124,0,0,124,0,0,126, + 0,0,254,0,0,254,0,0,159,0,1,159,0,1,159,0, + 1,31,128,3,15,128,3,15,128,3,15,128,6,7,192,7, + 255,192,6,7,192,12,7,224,12,3,224,12,3,224,28,3, + 240,60,3,248,255,159,254,23,33,99,25,1,0,0,16,0, + 0,56,0,0,56,0,0,124,0,0,199,0,1,129,128,0, + 0,0,0,16,0,0,24,0,0,56,0,0,56,0,0,60, + 0,0,124,0,0,124,0,0,126,0,0,254,0,0,254,0, + 0,158,0,1,159,0,1,159,0,1,31,0,3,15,128,3, + 15,128,3,15,128,6,7,192,7,255,192,6,7,192,4,7, + 224,12,3,224,12,3,224,28,3,240,28,3,240,255,159,254, + 23,32,96,25,1,0,0,112,128,0,249,0,1,191,0,1, + 14,0,0,0,0,0,0,0,0,0,0,0,24,0,0,56, + 0,0,56,0,0,60,0,0,124,0,0,124,0,0,126,0, + 0,254,0,0,254,0,0,159,0,1,159,0,1,159,0,1, + 31,128,3,15,128,3,15,128,3,15,128,6,7,192,7,255, + 192,6,7,192,12,7,224,12,3,224,12,3,224,28,3,240, + 60,3,248,255,159,254,23,32,96,25,1,0,1,195,128,3, + 199,128,3,199,128,1,195,128,0,0,0,0,0,0,0,24, + 0,0,56,0,0,56,0,0,56,0,0,60,0,0,124,0, + 0,124,0,0,126,0,0,254,0,0,254,0,0,159,0,1, + 159,0,1,159,0,1,15,128,3,15,128,2,15,128,2,15, + 192,6,7,192,7,255,192,4,7,192,4,3,224,8,3,224, + 8,3,224,24,1,240,24,3,240,255,159,254,23,33,99,25, + 1,0,0,60,0,0,126,0,0,195,0,0,195,0,0,199, + 0,0,126,0,0,60,0,0,0,0,0,24,0,0,56,0, + 0,56,0,0,60,0,0,124,0,0,124,0,0,126,0,0, + 254,0,0,254,0,0,159,0,1,159,0,1,159,0,1,15, + 0,3,15,128,3,15,128,2,15,128,2,7,192,7,255,192, + 4,7,192,4,3,224,12,3,224,8,3,224,24,1,240,28, + 1,240,255,159,254,32,25,100,34,1,0,0,15,255,255,0, + 3,240,31,0,7,240,15,0,7,240,7,0,5,240,7,0, + 13,240,3,0,9,240,3,0,25,240,35,0,25,240,32,0, + 49,240,96,0,49,240,96,0,97,240,224,0,97,255,224,0, + 193,240,224,0,193,240,96,1,129,240,96,1,129,240,33,3, + 255,240,33,3,1,240,3,6,1,240,3,6,1,240,7,12, + 1,240,7,12,1,240,15,62,1,240,63,255,143,255,255,19, + 33,99,22,2,249,3,248,192,14,6,192,30,3,192,60,3, + 192,60,1,192,124,1,192,124,0,192,124,0,192,252,0,192, + 252,0,64,252,0,64,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,96,124,0,64,124,0,64,124,0, + 64,60,0,192,62,0,128,30,1,0,15,2,0,3,156,0, + 0,224,0,0,128,0,0,240,0,0,56,0,0,56,0,0, + 56,0,2,48,0,1,224,0,20,33,99,23,2,0,3,0, + 0,7,128,0,3,128,0,1,192,0,0,224,0,0,32,0, + 0,0,0,0,0,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,33,99,23,2,0,0,6,0,0,14,0,0,30,0, + 0,28,0,0,48,0,0,96,0,0,0,0,0,0,0,255, + 255,224,31,1,224,31,0,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,4,32,31,4,0,31,12,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,12,48,31, + 4,48,31,4,48,31,0,48,31,0,112,31,0,112,31,0, + 240,31,0,240,31,3,240,255,255,240,20,33,99,23,2,0, + 0,32,0,0,96,0,0,240,0,1,248,0,3,140,0,6, + 3,0,0,0,0,0,0,0,255,255,224,31,1,224,31,0, + 224,31,0,224,31,0,96,31,0,96,31,0,32,31,4,32, + 31,4,0,31,12,0,31,12,0,31,28,0,31,252,0,31, + 28,0,31,12,0,31,12,48,31,4,48,31,4,48,31,0, + 48,31,0,112,31,0,112,31,0,240,31,1,240,31,3,240, + 255,255,240,20,32,96,23,2,0,7,14,0,7,143,0,7, + 143,0,7,14,0,0,0,0,0,0,0,0,0,0,255,255, + 224,31,1,224,31,0,224,31,0,224,31,0,96,31,0,96, + 31,0,32,31,4,32,31,4,0,31,12,0,31,12,0,31, + 28,0,31,252,0,31,28,0,31,12,0,31,12,48,31,4, + 48,31,4,48,31,0,48,31,0,112,31,0,112,31,0,240, + 31,0,240,31,3,240,255,255,240,11,33,66,14,2,0,96, + 0,112,0,120,0,56,0,28,0,4,0,0,0,0,0,255, + 224,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,255, + 224,11,33,66,14,2,0,0,192,1,192,3,192,3,128,7, + 0,4,0,0,0,0,0,255,224,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,255,224,11,33,66,14,2,0,4, + 0,14,0,14,0,31,0,113,128,192,96,0,0,0,0,255, + 224,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,255, + 224,11,32,64,15,2,0,112,224,241,224,241,224,112,224,0, + 0,0,0,0,0,255,224,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,255,224,23,25,75,27,2,0,255,255,0, + 31,3,192,31,0,224,31,0,240,31,0,120,31,0,120,31, + 0,124,31,0,124,31,0,126,31,0,126,31,0,126,255,224, + 126,31,0,126,31,0,126,31,0,126,31,0,126,31,0,124, + 31,0,124,31,0,124,31,0,120,31,0,120,31,0,240,31, + 0,224,31,3,192,255,255,0,24,32,96,27,2,0,0,112, + 64,0,252,192,0,159,128,0,135,0,0,0,0,0,0,0, + 0,0,0,255,3,255,31,128,124,31,128,56,15,192,16,7, + 224,16,7,240,16,7,240,16,5,248,16,5,252,16,4,252, + 16,4,126,16,4,127,16,4,63,16,4,31,144,4,31,208, + 4,15,208,4,7,240,4,7,240,4,3,240,4,1,240,4, + 1,240,4,0,240,14,0,112,31,0,48,255,192,48,20,33, + 99,24,2,1,7,0,0,7,128,0,3,128,0,1,192,0, + 0,192,0,0,96,0,0,0,0,0,0,0,3,252,0,6, + 6,0,14,7,0,28,3,128,60,3,192,60,3,192,124,3, + 224,124,3,224,124,3,224,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,252,3,240,252,3,240,124,3,224,124, + 3,224,124,3,224,60,3,192,60,3,192,28,3,128,14,7, + 0,6,6,0,3,252,0,20,33,99,24,2,1,0,14,0, + 0,30,0,0,28,0,0,56,0,0,48,0,0,96,0,0, + 0,0,0,0,0,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,224,124,3,224,124,3,224,60,3, + 192,60,3,192,28,3,128,14,7,0,6,6,0,3,252,0, + 20,33,99,24,2,0,0,96,0,0,96,0,0,240,0,1, + 248,0,3,156,0,6,6,0,0,0,0,0,0,0,3,252, + 0,6,6,0,14,7,0,28,3,128,60,3,192,60,3,192, + 124,3,224,124,3,224,124,3,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 224,124,3,224,124,3,224,60,3,192,60,3,192,28,3,128, + 14,7,0,6,6,0,3,252,0,20,32,96,24,2,0,1, + 194,0,3,230,0,6,124,0,4,56,0,0,0,0,0,0, + 0,0,0,0,3,252,0,6,6,0,14,7,0,28,3,128, + 60,3,192,60,3,192,124,3,224,124,3,224,124,3,224,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,124,3,224,60,3,192, + 60,3,192,28,3,128,14,7,0,6,6,0,3,252,0,20, + 32,96,24,2,0,7,14,0,7,143,0,7,143,0,7,14, + 0,0,0,0,0,0,0,0,0,0,3,252,0,6,6,0, + 14,7,0,28,3,128,60,3,192,60,3,192,124,3,224,124, + 3,224,124,3,224,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,252,3,240,124,3,224,124,3,224, + 124,3,224,60,3,192,60,3,192,28,3,128,14,7,0,6, + 6,0,3,252,0,22,23,69,32,5,254,64,0,8,224,0, + 28,240,0,60,120,0,120,56,0,240,28,0,224,14,1,192, + 7,3,128,3,135,0,1,206,0,0,252,0,0,120,0,0, + 120,0,0,252,0,1,206,0,3,135,0,7,3,128,14,1, + 192,28,0,224,56,0,112,112,0,56,224,0,28,64,0,8, + 20,25,75,24,2,1,3,252,48,6,6,96,14,3,192,28, + 3,128,60,3,192,60,3,192,124,3,224,124,7,224,124,15, + 224,252,11,240,252,19,240,252,35,240,252,99,240,252,67,240, + 252,131,240,253,3,240,127,3,224,126,3,224,124,3,224,60, + 3,192,60,3,192,28,3,128,60,7,0,102,6,0,195,252, + 0,23,33,99,26,2,1,1,192,0,1,224,0,0,224,0, + 0,112,0,0,56,0,0,8,0,0,0,0,0,0,0,255, + 225,254,31,0,120,31,0,48,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,15,0,32,15,0, + 32,7,128,64,3,192,192,1,255,0,23,33,99,26,2,1, + 0,3,128,0,3,128,0,7,128,0,14,0,0,12,0,0, + 24,0,0,0,0,0,0,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,23,33,99,26,2,0,0,8,0,0,24,0,0, + 60,0,0,126,0,0,227,0,1,128,192,0,0,0,0,0, + 0,255,225,254,31,0,120,31,0,48,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,15,0,48, + 15,128,32,7,128,64,3,192,192,1,255,0,23,32,96,26, + 2,0,1,195,128,1,227,192,1,227,192,1,195,128,0,0, + 0,0,0,0,0,0,0,255,225,254,31,0,120,31,0,48, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,15,0,32,15,0,32,7,128,64,3,192,192,1, + 255,0,23,33,99,26,2,0,0,1,128,0,3,128,0,7, + 128,0,7,0,0,12,0,0,8,0,0,0,0,0,0,0, + 255,225,254,31,128,112,31,128,96,15,128,96,15,192,64,7, + 192,192,7,224,192,7,224,128,3,225,128,3,241,0,1,241, + 0,1,251,0,0,250,0,0,254,0,0,252,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,3,255,128,20,25,75,24,2, + 0,255,240,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,254,0,31,7,128,31,3,192,31,1,224,31,1,240,31, + 1,240,31,1,240,31,1,240,31,1,240,31,1,224,31,3, + 192,31,7,128,31,254,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,255,240,0,16,25,50,19, + 1,0,3,224,6,120,14,60,30,60,28,60,60,60,60,60, + 60,56,60,112,61,192,60,48,60,28,60,30,60,30,60,15, + 60,15,60,15,60,15,60,15,60,15,61,207,63,222,63,158, + 61,156,252,248,15,25,50,18,2,0,48,0,56,0,60,0, + 28,0,14,0,2,0,0,0,0,0,15,128,49,224,96,240, + 112,240,120,240,120,240,48,240,3,240,28,240,56,240,120,240, + 240,240,240,242,240,242,240,242,121,252,62,120,15,25,50,18, + 2,0,0,224,0,224,1,224,1,192,3,0,6,0,4,0, + 0,0,15,128,49,224,96,240,112,240,120,240,120,240,32,240, + 7,240,28,240,56,240,120,240,240,240,240,242,240,242,240,242, + 121,252,62,120,15,25,50,18,2,0,7,0,7,0,15,0, + 13,128,24,192,112,96,0,0,0,0,15,128,49,224,96,240, + 112,240,120,240,120,240,32,240,7,240,28,240,56,240,120,240, + 240,240,240,242,240,242,240,242,121,252,62,120,15,24,48,18, + 2,0,28,32,63,32,103,224,65,192,0,0,0,0,0,0, + 15,128,49,224,96,240,112,240,120,240,120,240,48,240,7,240, + 28,240,56,240,120,240,240,240,240,242,240,242,240,242,121,252, + 62,120,15,24,48,18,2,0,112,224,120,240,120,240,112,224, + 0,0,0,0,0,0,15,128,49,224,96,240,112,240,120,240, + 120,240,32,240,7,240,28,240,56,240,120,240,240,240,240,242, + 240,242,240,242,121,252,62,120,15,25,50,18,2,1,15,128, + 25,192,16,192,16,192,24,192,15,128,7,0,0,0,15,128, + 49,224,96,240,112,240,120,240,120,240,32,240,7,240,24,240, + 56,240,112,240,240,240,240,242,240,242,240,242,121,252,62,120, + 21,17,51,25,2,0,31,143,128,49,248,224,96,248,240,112, + 248,112,120,248,120,120,240,120,48,240,120,3,240,120,28,255, + 248,56,240,0,120,240,0,240,240,8,240,248,8,240,248,8, + 240,248,16,121,188,48,62,15,192,13,24,48,16,2,249,7, + 128,28,96,56,32,120,112,120,240,248,240,240,224,240,64,240, + 0,240,0,240,0,240,8,120,16,120,16,56,16,28,32,15, + 192,2,0,4,0,3,128,1,192,1,192,17,192,15,128,13, + 25,50,17,2,0,48,0,56,0,60,0,28,0,6,0,3, + 0,0,0,0,0,7,128,24,224,56,240,120,240,120,240,240, + 120,240,120,240,120,255,248,240,0,240,0,240,8,120,8,120, + 24,56,16,28,32,7,192,13,25,50,17,2,0,0,96,0, + 224,1,224,1,192,3,128,6,0,0,0,0,0,7,128,24, + 224,56,240,120,240,120,240,240,120,240,120,240,120,255,248,240, + 0,240,0,240,8,120,8,120,24,56,16,28,32,7,192,13, + 25,50,17,2,0,7,0,7,0,15,128,13,128,24,192,48, + 112,0,0,0,0,7,128,24,224,56,240,120,240,120,240,240, + 120,240,120,240,120,255,248,240,0,240,0,240,8,120,8,120, + 24,56,16,28,32,7,192,13,24,48,17,2,0,56,224,120, + 240,120,240,56,224,0,0,0,0,0,0,7,128,24,224,56, + 240,120,240,120,240,240,120,240,120,240,120,255,248,240,0,240, + 0,240,8,120,8,120,24,56,16,28,32,7,192,8,25,25, + 10,1,0,192,224,240,112,24,12,0,0,252,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,255,8,25,25,10, + 1,0,3,7,7,14,28,16,0,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,255,10,25,50,10,0, + 0,28,0,30,0,30,0,55,0,97,128,192,192,0,0,0, + 0,126,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,127,128,10,24,48,11,1,0,115,128,243,192,243,192,115, + 128,0,0,0,0,0,0,126,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,127,128,14,25,50,18,2,0,30, + 48,15,96,15,128,7,128,15,192,49,224,1,224,0,240,15, + 248,28,248,56,120,120,120,120,124,240,124,240,60,240,60,240, + 60,240,60,240,60,240,124,120,120,120,120,56,112,28,224,7, + 192,17,23,69,19,1,1,7,136,0,15,248,0,16,240,0, + 0,0,0,0,0,0,0,0,0,252,120,0,61,188,0,61, + 28,0,62,30,0,62,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,255,127,128,14,25,50,18, + 2,0,24,0,60,0,28,0,14,0,7,0,3,0,0,0, + 0,0,7,128,28,224,56,112,120,120,120,120,240,60,240,60, + 240,60,240,60,240,60,240,60,240,60,120,120,120,120,56,112, + 24,224,7,128,14,25,50,18,2,0,0,96,0,240,0,224, + 1,192,3,128,3,0,0,0,0,0,7,128,28,224,56,112, + 120,120,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 240,60,120,120,120,120,56,112,24,224,7,128,14,25,50,18, + 2,0,3,0,7,128,7,128,15,192,28,224,48,48,32,16, + 0,0,7,128,28,224,56,112,120,120,120,120,240,60,240,60, + 240,60,240,60,240,60,240,60,240,60,120,120,120,120,56,112, + 24,224,7,128,14,24,48,18,2,0,14,16,31,144,39,224, + 33,224,0,0,0,0,0,0,7,128,28,224,56,112,120,120, + 120,120,240,60,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,120,120,56,112,24,224,7,128,14,24,48,18,2,0, + 56,112,60,240,60,240,56,112,0,0,0,0,0,0,7,128, + 28,224,56,112,120,120,120,120,240,60,240,60,240,60,240,60, + 240,60,240,60,240,60,120,120,120,120,56,112,24,224,7,128, + 29,23,92,31,1,254,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,7,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, + 255,248,255,255,255,248,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7, + 0,0,0,15,128,0,0,15,128,0,0,15,128,0,0,7, + 0,0,14,17,34,18,2,0,7,132,24,232,56,120,120,120, + 120,120,240,124,240,188,241,188,243,60,246,60,244,60,248,60, + 120,120,120,120,120,112,92,96,135,128,17,25,75,19,1,0, + 12,0,0,30,0,0,14,0,0,7,0,0,3,0,0,0, + 128,0,0,0,0,0,0,0,252,126,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,62,0,60,62,0,60, + 62,0,60,94,0,30,158,0,15,31,128,17,25,75,19,1, + 0,0,48,0,0,112,0,0,112,0,0,224,0,1,192,0, + 1,0,0,0,0,0,0,0,0,252,126,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,62,0,60,62,0, + 60,62,0,60,94,0,30,158,0,15,31,128,17,25,75,19, + 1,0,1,128,0,3,192,0,3,192,0,7,224,0,12,48, + 0,24,24,0,0,0,0,0,0,0,252,126,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,62,0,60,62, + 0,60,62,0,60,94,0,30,158,0,15,31,128,17,24,72, + 19,1,0,28,112,0,30,120,0,30,120,0,28,112,0,0, + 0,0,0,0,0,0,0,0,252,126,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,62,0,60,62,0,60, + 62,0,60,94,0,30,158,0,15,31,128,17,33,99,18,0, + 248,0,28,0,0,28,0,0,60,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,0,0,255,159,128,62,6,0,30, + 4,0,31,4,0,15,4,0,15,8,0,15,136,0,7,136, + 0,7,152,0,3,208,0,3,208,0,3,240,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 64,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,15,32,64,18,1,247,12,0,28,0,124,0, + 188,0,60,0,60,0,60,0,60,120,60,252,61,30,63,30, + 62,30,62,30,62,30,60,30,60,28,60,28,60,56,60,56, + 60,48,60,96,60,192,61,0,62,0,60,0,60,0,60,0, + 60,0,60,0,60,0,48,0,192,0,17,32,96,18,0,248, + 14,28,0,15,60,0,15,60,0,14,28,0,0,0,0,0, + 0,0,0,0,0,255,159,128,62,6,0,30,4,0,30,4, + 0,15,8,0,15,8,0,15,8,0,7,136,0,7,144,0, + 3,208,0,3,208,0,3,224,0,1,224,0,1,224,0,0, + 224,0,0,192,0,0,192,0,0,64,0,0,128,0,28,128, + 0,60,128,0,61,0,0,57,0,0,59,0,0,30,0,0 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=29 h=33 x= 4 y=11 dx=31 dy= 0 ascent=26 len=120 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26n[880] U8G_SECTION(".progmem.u8g_font_osb26n") = { + 0,95,44,227,246,25,0,0,0,0,42,57,0,26,249,25, + 0,12,14,28,17,3,11,14,0,14,0,14,0,196,112,228, + 240,245,224,14,0,14,0,245,224,228,240,196,112,14,0,14, + 0,14,0,29,30,120,31,1,251,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,255,255,255,248,255,255,255,248,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,7,11,11,10,2,249,120,252,254,254,126,6,4,12,8, + 48,224,9,4,8,13,2,7,255,128,255,128,255,128,255,128, + 5,5,5,9,2,0,112,248,248,248,112,12,33,66,15,2, + 249,0,112,0,96,0,96,0,224,0,192,0,192,1,192,1, + 192,1,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,56, + 0,56,0,48,0,48,0,112,0,96,0,96,0,224,0,192, + 0,192,0,16,25,50,20,2,1,7,224,14,112,28,56,60, + 60,60,60,124,62,124,62,124,62,252,63,252,63,252,63,252, + 63,252,63,252,63,252,63,252,63,252,63,124,62,124,62,124, + 62,60,60,60,60,28,56,14,112,7,224,12,25,50,20,4, + 0,7,0,7,0,31,0,255,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,255,240,15,25,50,20,2,1,31,240,48,120,96,60,96, + 62,224,62,240,62,248,62,252,62,124,124,56,124,0,248,1, + 240,1,224,3,128,7,0,12,2,24,2,48,2,32,2,76, + 6,127,254,127,252,71,252,67,252,65,248,15,26,52,20,2, + 0,1,0,14,240,56,120,48,60,112,62,120,62,124,62,124, + 62,60,62,24,60,0,120,0,112,31,192,0,240,0,120,0, + 60,0,60,56,62,124,62,252,62,252,62,248,62,224,60,96, + 124,96,120,31,224,16,25,50,20,2,0,0,120,0,120,0, + 248,1,248,1,248,3,248,3,248,6,248,6,248,12,248,12, + 248,24,248,56,248,48,248,96,248,96,248,192,248,255,255,0, + 248,0,248,0,248,0,248,0,248,0,248,15,255,15,26,52, + 20,3,0,0,8,48,56,63,240,63,224,63,128,62,0,32, + 0,32,0,32,0,32,0,39,192,56,112,48,120,32,60,32, + 60,0,62,0,62,56,62,120,62,252,62,248,62,248,60,224, + 60,96,120,112,112,31,224,16,25,50,20,2,1,7,240,12, + 8,28,12,56,60,56,124,120,124,120,120,120,48,248,0,248, + 0,251,224,252,56,252,60,248,30,248,31,248,31,248,31,248, + 31,120,31,120,31,120,31,56,30,28,30,12,60,7,240,15, + 25,50,20,3,0,79,28,95,156,127,198,127,230,127,254,224, + 246,192,4,192,12,128,12,128,24,0,16,0,48,0,96,0, + 224,1,192,1,192,3,192,7,128,7,128,15,128,15,128,15, + 128,15,128,15,128,7,0,17,25,75,20,2,1,7,240,0, + 24,12,0,48,12,0,48,6,0,112,6,0,112,6,0,120, + 6,0,124,4,0,127,12,0,127,152,0,63,224,0,31,248, + 0,15,252,0,15,254,0,49,255,0,96,127,0,64,31,0, + 192,15,128,192,7,0,192,7,0,192,3,0,96,6,0,96, + 6,0,56,12,0,14,240,0,15,25,50,20,2,1,31,192, + 60,112,120,48,120,56,248,60,248,60,248,60,248,62,248,62, + 248,62,248,62,120,62,124,126,60,126,15,190,0,62,0,62, + 12,60,30,60,62,60,62,56,60,56,48,112,16,96,15,192 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=34 h=33 x= 4 y=18 dx=36 dy= 0 ascent=28 len=125 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x=-2 y=-8 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =26 descent=-8 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26r[5950] U8G_SECTION(".progmem.u8g_font_osb26r") = { + 0,95,44,227,246,26,7,105,16,163,32,127,248,28,248,26, + 248,0,0,0,10,0,0,6,25,25,10,2,1,120,252,252, + 252,252,252,120,120,120,120,48,48,48,48,48,48,48,0,0, + 0,120,252,252,252,120,8,8,8,12,2,18,231,231,231,231, + 231,231,66,66,20,25,75,24,2,0,3,131,0,3,131,0, + 3,3,0,3,3,0,3,3,0,3,7,0,3,7,0,255, + 255,240,255,255,240,6,6,0,6,6,0,6,6,0,6,14, + 0,6,14,0,14,12,0,12,12,0,12,12,0,255,255,224, + 255,255,224,12,28,0,12,24,0,28,24,0,24,24,0,24, + 24,0,24,24,0,16,31,62,20,2,253,2,32,2,32,2, + 32,15,248,26,38,50,34,114,35,114,35,114,47,122,47,126, + 46,126,46,63,160,63,224,31,240,15,248,7,252,3,254,2, + 126,114,63,250,47,250,47,242,39,226,39,194,38,98,38,50, + 44,30,56,3,224,2,32,2,32,23,26,78,29,3,0,8, + 0,48,54,0,32,99,0,96,99,0,192,227,128,192,227,129, + 128,227,129,0,227,131,0,227,130,0,227,134,0,99,12,0, + 54,8,0,28,24,0,0,16,112,0,48,216,0,97,140,0, + 97,140,0,195,142,0,131,142,1,131,142,1,3,142,3,3, + 142,6,3,142,4,1,140,12,1,140,8,0,248,24,25,75, + 26,1,1,1,252,0,3,4,0,3,2,0,7,2,0,7, + 2,0,7,6,0,7,132,0,7,200,0,3,240,0,3,224, + 0,1,240,0,3,240,127,6,248,28,12,124,8,24,60,24, + 56,62,16,112,31,16,240,15,32,240,15,224,248,7,192,248, + 3,192,252,3,225,126,7,242,127,253,254,31,240,124,3,8, + 8,7,2,18,224,224,224,224,224,224,64,64,10,31,62,12, + 2,250,0,192,1,0,2,0,6,0,12,0,24,0,56,0, + 56,0,120,0,112,0,112,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,112,0,112,0,112,0, + 56,0,56,0,24,0,28,0,12,0,6,0,3,0,1,128, + 9,32,64,12,1,250,192,0,96,0,48,0,24,0,28,0, + 12,0,14,0,6,0,7,0,7,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,0,7,0,7,0,14,0,14,0,12,0,24,0,48,0, + 96,0,192,0,128,0,12,14,28,17,3,11,14,0,14,0, + 14,0,196,112,228,240,245,224,14,0,14,0,245,224,228,240, + 196,112,14,0,14,0,14,0,29,30,120,31,1,251,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,255,255,255,248,255,255,255,248,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,7,11,11,10,2,249,120,252,254,254, + 126,6,4,12,8,48,224,9,4,8,13,2,7,255,128,255, + 128,255,128,255,128,5,5,5,9,2,0,112,248,248,248,112, + 12,33,66,15,2,249,0,112,0,96,0,96,0,224,0,192, + 0,192,1,192,1,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,6,0,14,0,12,0,12,0,28,0, + 24,0,24,0,56,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,192,0,16,25,50,20,2,1,7,224, + 14,112,28,56,60,60,60,60,124,62,124,62,124,62,252,63, + 252,63,252,63,252,63,252,63,252,63,252,63,252,63,252,63, + 124,62,124,62,124,62,60,60,60,60,28,56,14,112,7,224, + 12,25,50,20,4,0,7,0,7,0,31,0,255,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,240,15,25,50,20,2,1,31,240, + 48,120,96,60,96,62,224,62,240,62,248,62,252,62,124,124, + 56,124,0,248,1,240,1,224,3,128,7,0,12,2,24,2, + 48,2,32,2,76,6,127,254,127,252,71,252,67,252,65,248, + 15,26,52,20,2,0,1,0,14,240,56,120,48,60,112,62, + 120,62,124,62,124,62,60,62,24,60,0,120,0,112,31,192, + 0,240,0,120,0,60,0,60,56,62,124,62,252,62,252,62, + 248,62,224,60,96,124,96,120,31,224,16,25,50,20,2,0, + 0,120,0,120,0,248,1,248,1,248,3,248,3,248,6,248, + 6,248,12,248,12,248,24,248,56,248,48,248,96,248,96,248, + 192,248,255,255,0,248,0,248,0,248,0,248,0,248,0,248, + 15,255,15,26,52,20,3,0,0,8,48,56,63,240,63,224, + 63,128,62,0,32,0,32,0,32,0,32,0,39,192,56,112, + 48,120,32,60,32,60,0,62,0,62,56,62,120,62,252,62, + 248,62,248,60,224,60,96,120,112,112,31,224,16,25,50,20, + 2,1,7,240,12,8,28,12,56,60,56,124,120,124,120,120, + 120,48,248,0,248,0,251,224,252,56,252,60,248,30,248,31, + 248,31,248,31,248,31,120,31,120,31,120,31,56,30,28,30, + 12,60,7,240,15,25,50,20,3,0,79,28,95,156,127,198, + 127,230,127,254,224,246,192,4,192,12,128,12,128,24,0,16, + 0,48,0,96,0,224,1,192,1,192,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,7,0,17,25,75,20, + 2,1,7,240,0,24,12,0,48,12,0,48,6,0,112,6, + 0,112,6,0,120,6,0,124,4,0,127,12,0,127,152,0, + 63,224,0,31,248,0,15,252,0,15,254,0,49,255,0,96, + 127,0,64,31,0,192,15,128,192,7,0,192,7,0,192,3, + 0,96,6,0,96,6,0,56,12,0,14,240,0,15,25,50, + 20,2,1,31,192,60,112,120,48,120,56,248,60,248,60,248, + 60,248,62,248,62,248,62,248,62,120,62,124,126,60,126,15, + 190,0,62,0,62,12,60,30,60,62,60,62,56,60,56,48, + 112,16,96,15,192,5,17,17,9,2,0,112,248,248,248,112, + 0,0,0,0,0,0,0,112,248,248,248,112,6,23,23,9, + 2,249,112,248,248,248,112,0,0,0,0,0,0,0,112,248, + 252,252,252,12,12,8,16,48,192,26,29,116,32,3,251,0, + 0,1,192,0,0,3,192,0,0,15,0,0,0,62,0,0, + 0,248,0,0,1,224,0,0,7,128,0,0,31,0,0,0, + 124,0,0,0,240,0,0,3,192,0,0,15,128,0,0,62, + 0,0,0,120,0,0,0,224,0,0,0,120,0,0,0,62, + 0,0,0,15,128,0,0,3,192,0,0,0,240,0,0,0, + 124,0,0,0,31,0,0,0,7,128,0,0,1,224,0,0, + 0,248,0,0,0,62,0,0,0,15,0,0,0,3,192,0, + 0,1,192,29,9,36,33,2,5,255,255,255,248,255,255,255, + 248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,248,255,255,255,248,26,29,116, + 32,3,251,224,0,0,0,240,0,0,0,60,0,0,0,31, + 0,0,0,7,192,0,0,1,224,0,0,0,120,0,0,0, + 62,0,0,0,15,128,0,0,3,192,0,0,0,240,0,0, + 0,124,0,0,0,31,0,0,0,7,128,0,0,1,192,0, + 0,7,128,0,0,31,0,0,0,124,0,0,0,240,0,0, + 3,192,0,0,15,128,0,0,62,0,0,0,120,0,0,1, + 224,0,0,7,192,0,0,31,0,0,0,60,0,0,0,240, + 0,0,0,224,0,0,0,11,25,50,16,2,1,63,128,67, + 192,129,224,129,224,129,224,131,224,195,192,67,192,3,128,7, + 0,6,0,12,0,8,0,24,0,17,0,17,0,17,0,14, + 0,0,0,0,0,14,0,31,0,31,0,31,0,14,0,25, + 25,100,27,1,1,0,255,192,0,3,0,48,0,6,0,24, + 0,12,0,12,0,24,0,6,0,48,30,243,0,48,114,243, + 0,96,225,227,0,97,225,225,128,227,193,225,128,195,193,225, + 128,195,193,193,128,199,131,193,128,199,131,193,128,199,131,195, + 0,199,131,195,0,231,135,130,0,103,135,134,0,99,139,204, + 0,49,240,240,0,48,0,0,0,24,0,0,0,12,0,0, + 0,7,0,96,0,1,255,192,0,23,26,78,25,1,0,0, + 16,0,0,24,0,0,56,0,0,56,0,0,60,0,0,124, + 0,0,124,0,0,126,0,0,254,0,0,254,0,0,158,0, + 1,159,0,1,159,0,1,31,0,3,15,128,3,15,128,3, + 15,128,6,7,192,7,255,192,6,7,192,4,7,224,12,3, + 224,12,3,224,28,3,240,28,3,240,255,159,254,20,25,75, + 24,2,0,255,254,0,31,7,128,31,7,192,31,3,192,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 128,31,7,0,31,248,0,31,7,0,31,3,192,31,1,224, + 31,1,224,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,240,31,1,224,31,3,192,31,7,128,255,254,0,19,25, + 75,22,2,1,3,248,64,14,6,192,30,3,192,60,3,192, + 60,1,192,124,1,192,124,0,192,124,0,192,252,0,192,252, + 0,64,252,0,64,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,96,124,0,64,124,0,64,124,0,64, + 60,0,192,30,0,128,30,1,0,15,3,0,3,252,0,23, + 25,75,27,2,0,255,255,0,31,3,192,31,0,224,31,0, + 240,31,0,120,31,0,120,31,0,124,31,0,124,31,0,126, + 31,0,126,31,0,126,31,0,126,31,0,126,31,0,126,31, + 0,126,31,0,126,31,0,124,31,0,124,31,0,124,31,0, + 120,31,0,120,31,0,240,31,0,224,31,3,192,255,255,0, + 20,25,75,23,2,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,25,75,23,2,0,255,255,240,31,3,240,31,0,240, + 31,0,240,31,0,112,31,0,112,31,0,48,31,4,48,31, + 4,48,31,12,48,31,12,0,31,28,0,31,252,0,31,28, + 0,31,12,0,31,12,0,31,4,0,31,4,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,255, + 240,0,21,26,78,24,2,0,0,32,0,3,220,32,7,3, + 96,14,1,224,28,1,224,60,0,224,60,0,224,124,0,96, + 124,0,96,252,0,32,252,0,32,252,0,0,252,0,0,252, + 63,248,252,3,224,252,3,224,252,3,224,252,3,224,124,3, + 224,124,3,224,124,3,224,60,3,224,60,3,96,30,6,96, + 14,12,96,3,184,32,25,25,100,28,2,0,255,231,255,128, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,255,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,255,231,255,128, + 11,25,50,14,2,0,255,224,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,224,16,25,50,18,1,0,7,255, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,120,248, + 248,248,248,248,248,248,240,248,224,240,64,240,97,224,63,192, + 24,25,75,27,2,0,255,227,252,31,0,224,31,0,192,31, + 0,128,31,1,128,31,3,0,31,6,0,31,12,0,31,28, + 0,31,28,0,31,62,0,31,126,0,31,255,0,31,191,0, + 31,31,128,31,31,128,31,15,192,31,15,192,31,7,224,31, + 7,224,31,3,240,31,1,240,31,1,248,31,1,252,255,231, + 255,20,25,75,23,2,0,255,224,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,48,31,0,48,31,0,48,31,0,48,31,0,112, + 31,0,112,31,0,240,31,0,240,31,1,240,31,3,240,255, + 255,240,27,25,100,30,2,0,255,0,63,224,15,0,63,0, + 15,128,63,0,15,128,63,0,15,128,127,0,15,192,95,0, + 15,192,95,0,11,224,95,0,11,224,223,0,11,224,159,0, + 9,240,159,0,9,240,159,0,9,241,31,0,8,249,31,0, + 8,249,31,0,8,249,31,0,8,126,31,0,8,126,31,0, + 8,62,31,0,8,62,31,0,8,60,31,0,8,28,31,0, + 24,28,31,0,60,28,31,0,255,8,255,224,24,25,75,27, + 2,0,255,3,255,31,128,124,31,128,56,15,192,16,7,224, + 16,7,240,16,7,240,16,5,248,16,5,252,16,4,252,16, + 4,126,16,4,127,16,4,63,16,4,31,144,4,31,208,4, + 15,208,4,7,240,4,7,240,4,3,240,4,1,240,4,1, + 240,4,0,240,14,0,112,31,0,48,255,192,48,20,25,75, + 24,2,1,3,252,0,6,6,0,14,7,0,28,3,128,60, + 3,192,60,3,192,124,3,224,124,3,224,124,3,224,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,124,3,224,124,3,224,124,3,224,60,3,192,60, + 3,192,28,3,128,14,7,0,6,6,0,3,252,0,20,25, + 75,24,2,0,255,254,0,31,3,128,31,3,192,31,1,224, + 31,1,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,192,31,7,128,31,254,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,255,240,0,20, + 33,99,24,2,249,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,240,124,3,224,124,3,224,60,243, + 192,61,155,192,29,11,128,15,15,128,7,15,16,3,156,16, + 0,108,16,0,12,16,0,12,48,0,14,48,0,15,240,0, + 15,224,0,7,224,0,3,128,22,25,75,25,2,0,255,252, + 0,31,7,128,31,7,192,31,3,192,31,3,224,31,3,224, + 31,3,224,31,3,224,31,3,192,31,7,192,31,15,0,31, + 248,0,31,14,0,31,15,0,31,7,128,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,196,31,7,196,31,7,196, + 31,7,196,31,3,200,255,241,248,16,25,50,21,3,1,31, + 198,32,118,96,62,224,30,224,14,240,6,248,6,252,6,255, + 2,127,128,127,192,63,240,15,248,7,252,129,254,128,254,192, + 127,192,31,192,15,224,7,224,7,240,6,248,6,220,12,135, + 120,21,25,75,25,3,0,255,255,248,248,248,248,240,248,120, + 224,248,120,192,248,56,192,248,56,128,248,24,128,248,24,128, + 248,24,128,248,24,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,15, + 255,0,23,25,75,26,2,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,24,25,75,27,2,0,255,241,255,31,128,56,15, + 128,48,15,192,48,15,192,48,7,192,32,7,224,32,7,224, + 96,3,224,64,3,240,64,1,240,192,1,240,128,1,248,128, + 0,249,128,0,249,128,0,253,0,0,125,0,0,127,0,0, + 126,0,0,62,0,0,62,0,0,60,0,0,28,0,0,28, + 0,0,24,0,34,25,125,36,1,0,255,231,255,127,192,31, + 129,248,14,0,15,128,248,14,0,15,128,252,12,0,15,192, + 124,12,0,7,192,124,12,0,7,192,124,8,0,7,224,254, + 24,0,3,224,190,24,0,3,224,190,24,0,3,241,159,16, + 0,1,241,159,48,0,1,241,31,48,0,1,249,15,32,0, + 1,251,15,160,0,0,250,15,224,0,0,254,15,224,0,0, + 254,7,192,0,0,126,7,192,0,0,124,7,192,0,0,124, + 3,192,0,0,60,3,128,0,0,56,3,128,0,0,56,1, + 128,0,0,24,1,128,0,23,25,75,26,2,0,255,231,252, + 31,193,224,15,192,192,15,193,128,7,225,128,7,227,0,3, + 242,0,3,246,0,1,244,0,1,248,0,0,248,0,0,252, + 0,0,124,0,0,62,0,0,126,0,0,127,0,0,159,0, + 1,159,128,1,15,128,3,15,192,6,7,224,4,7,224,12, + 3,240,28,7,240,255,143,254,23,25,75,26,2,0,255,225, + 254,31,128,112,31,128,96,15,128,96,15,192,64,7,192,192, + 7,224,192,7,224,128,3,225,128,3,241,0,1,241,0,1, + 251,0,0,250,0,0,254,0,0,252,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,3,255,128,18,25,75,22,2,0,127, + 255,192,124,15,192,120,31,128,112,31,128,96,63,0,96,63, + 0,64,126,0,64,126,0,64,252,0,0,252,0,1,248,0, + 1,240,0,3,240,0,7,224,0,7,224,0,15,192,64,15, + 192,64,31,128,64,31,128,64,63,0,192,63,1,192,126,1, + 192,126,3,192,252,15,192,255,255,192,8,31,31,14,3,250, + 255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,255,11, + 33,66,15,2,249,192,0,192,0,224,0,96,0,96,0,96, + 0,112,0,48,0,48,0,56,0,24,0,24,0,28,0,12, + 0,12,0,12,0,14,0,6,0,6,0,7,0,3,0,3, + 0,3,0,3,128,1,128,1,128,1,192,0,192,0,192,0, + 224,0,96,0,96,0,96,8,31,31,13,2,250,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,255,16,12,24,20, + 2,14,1,128,3,128,3,192,7,224,14,96,14,112,28,56, + 24,56,56,28,112,12,96,14,224,7,18,2,6,18,0,250, + 255,255,192,255,255,192,6,7,7,15,3,18,224,224,240,120, + 24,12,4,15,17,34,18,2,0,15,128,49,224,96,240,112, + 240,120,240,120,240,32,240,7,240,28,240,56,240,120,240,240, + 240,240,242,240,242,240,242,121,252,62,120,15,25,50,18,1, + 0,252,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,240,61,56,62,60,62,28,62,30,62,30,60,30,60, + 30,60,30,60,30,60,30,62,30,62,30,62,28,50,60,35, + 56,33,224,13,17,34,16,2,0,7,128,28,96,56,32,120, + 112,120,240,248,240,240,224,240,64,240,0,240,0,240,0,240, + 8,120,16,120,16,56,16,28,32,7,192,17,25,75,20,2, + 0,1,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,15,60,0,28,188,0,56, + 124,0,120,124,0,120,60,0,240,60,0,240,60,0,240,60, + 0,240,60,0,240,60,0,240,60,0,240,60,0,120,60,0, + 120,124,0,56,124,0,28,188,0,15,63,128,13,17,34,17, + 2,0,7,128,24,224,56,240,120,240,120,240,240,120,240,120, + 240,120,255,248,240,0,240,0,240,8,120,8,120,24,56,16, + 28,32,7,192,12,25,50,12,1,0,3,192,14,112,30,112, + 28,240,60,240,60,240,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,255,128,17,25,75,19, + 1,248,7,199,0,28,249,128,60,115,128,120,123,128,120,123, + 0,120,120,0,120,120,0,120,120,0,60,112,0,28,224,0, + 7,192,0,56,0,0,96,0,0,127,192,0,127,248,0,127, + 252,0,63,254,0,63,254,0,64,14,0,128,6,0,128,6, + 0,128,4,0,64,12,0,32,56,0,31,224,0,17,25,75, + 19,1,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,120,0,61,188, + 0,61,28,0,62,30,0,62,30,0,62,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,255,127,128,8,25, + 25,11,2,0,56,124,124,124,56,0,0,0,252,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,10,33,66, + 10,254,248,3,128,7,192,7,192,7,192,3,128,0,0,0, + 0,0,0,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,99,192,243,192,243,192,243,128,231, + 128,103,0,62,0,17,25,75,19,1,0,252,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,127,0,60,24,0,60,16,0,60,48,0,60, + 32,0,60,64,0,60,192,0,60,224,0,61,224,0,62,240, + 0,62,240,0,60,120,0,60,124,0,60,60,0,60,62,0, + 60,62,0,255,127,128,9,25,50,11,1,0,252,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,255,128,25,17, + 68,28,1,0,252,120,120,0,61,188,158,0,61,31,30,0, + 62,31,30,0,62,30,31,0,62,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,255,127,191,128,17,17,51,19,1,0,252,120, + 0,61,188,0,61,28,0,62,30,0,62,30,0,62,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,255,127, + 128,14,17,34,18,2,0,7,128,28,224,56,112,120,120,120, + 120,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,56,112,24,224,7,128,15,25,50,18,1,248,252, + 240,61,56,62,60,62,28,62,30,62,30,60,30,60,30,60, + 30,60,30,60,30,62,30,62,30,62,28,62,60,61,56,60, + 240,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 128,16,25,50,19,2,248,15,132,28,196,56,100,120,124,120, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 124,120,124,56,124,28,188,15,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,1,255,12,17,34,14,1,0,252, + 224,61,112,62,240,62,240,62,240,62,96,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,11,17,34,14,2,0,60,64,99,64,193,192,192,192,224, + 192,240,64,252,0,127,0,63,128,31,192,135,224,129,224,192, + 224,224,96,224,96,144,192,143,128,11,24,48,13,1,0,12, + 0,12,0,12,0,12,0,12,0,28,0,60,0,255,192,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 32,60,32,60,32,60,32,60,96,60,64,31,192,15,128,17, + 17,51,19,1,0,252,126,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,60,62,0,60,62,0,60, + 94,0,30,158,0,15,31,128,17,17,51,18,0,0,255,159, + 128,30,6,0,30,4,0,30,4,0,15,12,0,15,8,0, + 15,8,0,7,152,0,7,144,0,3,208,0,3,240,0,3, + 224,0,1,224,0,1,192,0,1,192,0,0,192,0,0,128, + 0,25,17,68,26,0,0,255,63,207,128,30,15,6,0,30, + 15,6,0,30,15,4,0,15,7,132,0,15,15,132,0,7, + 143,136,0,7,139,200,0,7,147,200,0,3,211,208,0,3, + 209,240,0,3,225,240,0,1,225,224,0,1,224,224,0,1, + 192,224,0,0,192,192,0,0,192,64,0,16,17,34,18,1, + 0,255,126,62,24,30,16,31,16,15,32,15,192,7,192,3, + 192,3,192,1,224,3,240,2,240,4,248,8,120,8,124,24, + 126,254,127,17,25,75,18,0,248,255,159,128,62,6,0,30, + 4,0,31,4,0,15,8,0,15,8,0,15,136,0,7,136, + 0,7,144,0,3,208,0,3,208,0,3,224,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 128,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,13,17,34,16,1,0,127,248,112,248,96,240, + 97,224,67,224,67,192,7,192,7,128,15,128,15,0,31,8, + 30,8,60,24,124,24,120,56,248,120,255,248,11,33,66,15, + 2,249,0,32,3,192,7,0,15,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 56,0,224,0,56,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,14,0,7,0, + 3,192,0,32,2,32,32,10,4,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,11,33,66,15,3,249, + 128,0,240,0,60,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,15,0,7,0, + 1,224,7,0,15,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,60,0,240,0, + 128,0,19,7,21,23,2,6,62,0,64,127,128,32,255,240, + 32,135,252,32,129,255,224,128,63,192,64,15,128,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=38 h=37 x= 7 y=23 dx=41 dy= 0 ascent=38 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =29 descent=-9 + Max Font ascent =38 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29[15818] U8G_SECTION(".progmem.u8g_font_osb29") = { + 0,107,49,223,245,29,9,166,21,115,32,255,247,38,245,29, + 247,0,0,0,11,0,0,6,28,28,10,2,1,120,252,252, + 252,252,252,252,120,120,120,120,120,48,48,48,48,48,48,48, + 48,0,0,120,252,252,252,252,120,10,9,18,16,3,20,243, + 192,243,192,243,192,243,192,243,192,243,192,97,128,97,128,97, + 128,22,28,84,28,3,0,1,192,224,1,192,224,1,192,224, + 1,192,224,1,128,192,1,128,192,1,128,192,3,129,252,255, + 255,252,255,255,252,3,129,128,3,1,128,3,1,128,7,3, + 128,7,3,128,7,3,128,7,3,128,6,3,0,255,255,252, + 255,255,252,255,255,252,14,7,0,14,7,0,14,6,0,12, + 6,0,12,6,0,28,14,0,28,14,0,18,34,102,22,2, + 253,1,16,0,1,16,0,1,16,0,7,252,0,29,19,0, + 57,17,128,49,16,192,113,16,192,113,17,192,113,19,192,121, + 23,192,127,23,128,127,19,0,63,144,0,63,240,0,31,240, + 0,15,252,0,7,254,0,1,255,0,1,255,128,1,63,128, + 121,31,192,249,23,192,249,19,192,249,17,192,225,17,192,193, + 17,192,97,17,128,97,19,0,57,22,0,15,60,0,1,208, + 0,1,16,0,1,16,0,26,29,116,32,3,0,4,0,12, + 0,27,0,8,0,49,128,24,0,113,192,16,0,113,192,48, + 0,241,224,96,0,241,224,96,0,241,224,192,0,241,224,128, + 0,241,225,128,0,241,225,0,0,113,195,0,0,113,194,0, + 0,59,134,0,0,30,12,0,0,0,12,28,0,0,24,119, + 0,0,16,227,128,0,48,227,128,0,33,227,192,0,97,227, + 192,0,65,227,192,0,193,227,192,1,129,227,192,1,129,227, + 192,3,1,227,128,2,0,227,128,6,0,99,0,4,0,62, + 0,27,28,112,31,2,1,0,254,0,0,1,195,0,0,3, + 129,0,0,7,129,128,0,7,129,128,0,7,129,128,0,7, + 131,128,0,7,195,0,0,7,198,0,0,3,236,0,0,3, + 248,0,0,1,240,0,0,0,248,0,0,1,252,31,224,7, + 124,3,128,14,62,3,0,28,63,3,0,56,31,134,0,120, + 15,134,0,120,7,196,0,248,7,232,0,248,3,248,0,248, + 1,240,0,252,1,248,0,254,0,248,32,127,1,252,64,63, + 254,127,192,31,248,31,128,4,9,9,10,3,20,240,240,240, + 240,240,240,96,96,96,11,35,70,13,2,249,0,96,0,192, + 1,128,3,0,6,0,12,0,28,0,24,0,56,0,56,0, + 120,0,120,0,120,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,120,0,120,0,120,0,120,0, + 56,0,56,0,28,0,12,0,14,0,7,0,3,0,1,128, + 0,96,11,36,72,14,1,249,192,0,96,0,48,0,24,0, + 12,0,14,0,7,0,7,0,3,128,3,128,3,192,3,192, + 3,192,3,192,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,192,3,192,3,192,3,128,3,128,7,0, + 7,0,6,0,12,0,28,0,56,0,112,0,192,0,128,0, + 14,16,32,19,3,12,3,0,7,128,7,128,199,24,227,60, + 242,124,122,248,7,128,7,128,250,248,242,124,227,60,199,24, + 7,128,7,128,3,0,33,33,165,37,2,251,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,7,13,13,10,2,249,120,252,252,254,254,126,6,4,4, + 8,24,96,192,10,4,8,14,2,8,255,192,255,192,255,192, + 255,192,6,6,6,10,2,0,120,252,252,252,252,120,13,37, + 74,17,2,248,0,24,0,56,0,56,0,48,0,112,0,112, + 0,96,0,96,0,224,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,128,3,0,7,0,7,0,6,0,14,0, + 14,0,12,0,12,0,28,0,28,0,24,0,56,0,56,0, + 48,0,112,0,112,0,112,0,96,0,224,0,224,0,18,28, + 84,22,2,1,3,240,0,14,28,0,14,28,0,28,14,0, + 60,15,0,60,15,0,124,15,128,124,15,128,124,15,128,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15, + 192,252,15,192,252,15,192,252,15,192,252,15,192,124,15,128, + 124,15,128,124,15,128,60,15,0,60,15,0,28,14,0,12, + 28,0,14,28,0,3,240,0,13,28,56,22,5,0,3,128, + 7,128,15,128,255,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,248,17,28,84,22,2,1,15,248,0,24, + 62,0,48,63,0,112,31,0,240,31,128,240,31,128,252,31, + 128,252,31,128,254,31,128,126,63,0,60,63,0,0,126,0, + 0,252,0,0,248,0,1,224,0,3,128,0,6,0,0,12, + 0,128,24,0,128,16,0,128,32,0,128,47,1,128,127,255, + 128,127,255,128,71,255,0,67,255,0,65,254,0,64,252,0, + 17,28,84,22,2,1,15,248,0,24,62,0,48,63,0,48, + 31,0,112,31,128,120,31,128,124,31,128,124,31,128,124,31, + 128,60,31,0,0,31,0,0,62,0,0,120,0,15,192,0, + 0,120,0,0,62,0,0,63,0,0,31,0,16,31,128,124, + 31,128,252,31,128,252,31,128,252,31,128,248,31,128,240,63, + 0,112,62,0,56,124,0,31,248,0,18,28,84,22,2,0, + 0,124,0,0,124,0,0,252,0,0,252,0,1,252,0,1, + 252,0,3,252,0,3,252,0,6,252,0,6,252,0,12,252, + 0,12,252,0,24,252,0,24,252,0,48,252,0,48,252,0, + 96,252,0,96,252,0,192,252,0,255,255,192,0,252,0,0, + 252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252, + 0,15,255,192,17,29,87,22,3,0,0,6,0,112,28,0, + 127,252,0,127,248,0,127,224,0,127,192,0,126,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,103,224,0,104,120, + 0,112,62,0,96,62,0,96,31,0,0,31,0,0,31,128, + 0,31,128,56,31,128,124,31,128,252,31,128,252,31,128,248, + 31,0,240,31,0,224,30,0,96,62,0,48,124,0,31,240, + 0,18,29,87,22,3,0,0,32,0,3,220,0,7,6,0, + 14,6,0,30,15,0,60,31,0,60,63,0,124,63,0,124, + 62,0,124,28,0,252,0,0,252,0,0,252,0,0,253,248, + 0,255,30,0,254,31,0,252,15,128,252,15,128,252,15,192, + 252,15,192,252,15,192,124,15,192,124,15,192,124,15,192,60, + 15,128,28,15,128,30,15,0,14,30,0,3,252,0,17,28, + 84,22,3,0,103,135,0,111,199,0,127,227,128,127,241,128, + 127,249,128,127,255,128,96,125,128,64,1,0,64,3,0,64, + 3,0,192,6,0,0,4,0,0,12,0,0,24,0,0,56, + 0,0,112,0,0,112,0,0,240,0,1,240,0,3,224,0, + 3,224,0,3,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,3,192,0,19,29,87,22,2,0,0,64, + 0,7,184,0,28,6,0,56,3,0,112,1,0,112,1,128, + 240,1,128,240,1,128,248,1,128,252,3,0,255,2,0,127, + 196,0,127,248,0,63,252,0,31,255,0,15,255,128,27,255, + 128,48,255,192,96,63,192,96,15,192,224,3,224,224,1,192, + 224,1,192,224,1,192,224,1,192,112,1,128,56,1,0,28, + 6,0,15,252,0,18,28,84,22,3,1,15,240,0,30,28, + 0,60,30,0,124,14,0,124,15,0,252,15,128,252,15,128, + 252,15,128,252,15,128,252,15,192,252,15,192,124,15,192,124, + 15,192,62,31,192,30,63,192,7,239,192,0,15,192,0,15, + 192,0,15,192,30,15,128,31,15,128,63,15,128,63,15,0, + 62,15,0,56,30,0,24,28,0,24,56,0,15,240,0,6, + 19,19,10,2,0,120,252,252,252,252,120,0,0,0,0,0, + 0,0,120,252,252,252,252,120,7,26,26,10,2,249,120,252, + 252,252,252,120,0,0,0,0,0,0,0,120,252,252,254,254, + 126,6,4,4,8,16,96,192,29,33,132,36,3,250,0,0, + 0,24,0,0,0,120,0,0,1,240,0,0,7,192,0,0, + 31,128,0,0,62,0,0,0,248,0,0,3,224,0,0,15, + 192,0,0,31,0,0,0,124,0,0,1,240,0,0,7,192, + 0,0,15,128,0,0,62,0,0,0,248,0,0,0,240,0, + 0,0,124,0,0,0,62,0,0,0,15,128,0,0,3,224, + 0,0,0,248,0,0,0,124,0,0,0,31,0,0,0,7, + 192,0,0,1,240,0,0,0,252,0,0,0,62,0,0,0, + 15,128,0,0,3,224,0,0,1,248,0,0,0,120,0,0, + 0,16,32,11,44,36,2,5,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255, + 255,255,255,255,29,33,132,36,4,250,192,0,0,0,240,0, + 0,0,124,0,0,0,31,0,0,0,15,192,0,0,3,224, + 0,0,0,248,0,0,0,62,0,0,0,31,128,0,0,7, + 192,0,0,1,240,0,0,0,124,0,0,0,31,0,0,0, + 15,128,0,0,3,224,0,0,0,248,0,0,0,120,0,0, + 1,240,0,0,3,224,0,0,15,128,0,0,62,0,0,0, + 248,0,0,1,240,0,0,7,192,0,0,31,0,0,0,124, + 0,0,1,248,0,0,3,224,0,0,15,128,0,0,62,0, + 0,0,252,0,0,0,240,0,0,0,64,0,0,0,12,28, + 56,18,3,1,63,128,119,224,65,224,129,240,129,240,129,240, + 129,240,129,224,193,224,67,192,3,128,7,0,6,0,12,0, + 8,0,24,0,16,64,16,64,16,64,24,128,15,0,0,0, + 7,128,15,192,15,192,15,192,15,192,7,128,28,29,116,32, + 2,0,0,2,0,0,0,125,240,0,1,192,28,0,3,0, + 6,0,6,0,3,0,12,0,1,128,24,15,61,192,56,28, + 188,192,48,56,248,224,112,112,120,224,112,240,120,96,225,224, + 120,112,225,224,248,112,225,224,240,112,227,224,240,112,227,192, + 240,112,227,192,240,112,227,193,224,96,227,193,224,224,99,193, + 224,192,99,195,224,192,115,194,225,128,49,228,227,0,56,120, + 124,0,28,0,0,0,12,0,0,0,7,0,0,0,3,128, + 24,0,0,255,224,0,26,29,116,29,2,0,0,4,0,0, + 0,6,0,0,0,14,0,0,0,14,0,0,0,15,0,0, + 0,31,0,0,0,31,0,0,0,31,128,0,0,63,128,0, + 0,47,128,0,0,47,192,0,0,111,192,0,0,79,192,0, + 0,71,192,0,0,199,224,0,0,135,224,0,0,131,224,0, + 1,131,240,0,1,3,240,0,3,1,240,0,3,255,248,0, + 2,1,248,0,6,0,248,0,6,0,252,0,4,0,252,0, + 12,0,252,0,12,0,124,0,30,0,254,0,255,199,255,192, + 22,28,84,27,3,0,255,255,0,31,131,192,31,131,224,31, + 129,240,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,240,31,129,240,31,131,192,31,131,128,31,252,0, + 31,131,128,31,129,224,31,128,240,31,128,248,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,248,31,128, + 248,31,129,240,31,131,224,255,255,128,21,28,84,26,3,1, + 1,254,48,7,3,48,14,1,240,30,0,240,60,0,240,60, + 0,112,124,0,112,124,0,48,124,0,48,252,0,48,252,0, + 48,252,0,16,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,24,252,0,24,124,0,16,124,0,16,124, + 0,16,60,0,48,60,0,32,30,0,96,14,0,192,7,1, + 128,1,254,0,25,28,112,30,3,0,255,255,128,0,31,128, + 224,0,31,128,112,0,31,128,56,0,31,128,60,0,31,128, + 30,0,31,128,30,0,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,0,31,128,31,0,31,128,31,0,31,128, + 30,0,31,128,30,0,31,128,60,0,31,128,56,0,31,128, + 112,0,31,128,224,0,255,255,128,0,22,28,84,26,2,0, + 255,255,252,15,192,124,15,192,60,15,192,28,15,192,28,15, + 192,12,15,192,12,15,192,12,15,193,4,15,193,0,15,195, + 0,15,195,0,15,199,0,15,255,0,15,199,0,15,195,0, + 15,195,0,15,193,4,15,193,4,15,193,4,15,192,12,15, + 192,12,15,192,12,15,192,28,15,192,28,15,192,60,15,192, + 252,255,255,252,22,28,84,25,2,0,255,255,252,31,128,252, + 31,128,124,31,128,60,31,128,28,31,128,28,31,128,28,31, + 128,12,31,129,12,31,129,12,31,131,12,31,131,0,31,135, + 0,31,255,0,31,143,0,31,135,0,31,131,0,31,129,0, + 31,129,0,31,129,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,255,252,0,24,29, + 87,28,3,0,0,16,0,1,239,24,3,3,152,14,0,248, + 30,0,248,28,0,120,60,0,56,60,0,56,124,0,24,124, + 0,24,124,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,31,255,252,1,248,252,1,248,252,1,248,252,1,248, + 124,1,248,124,1,248,124,1,248,60,1,248,60,1,248,30, + 3,152,14,3,24,7,6,24,1,220,24,27,28,112,31,2, + 0,255,251,255,224,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,255,255,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,255,251,255, + 224,13,28,56,17,2,0,255,248,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,255,248,18, + 28,84,20,1,0,7,255,192,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,16,126,0,124,126,0,252,126, + 0,252,126,0,252,126,0,248,126,0,240,124,0,224,124,0, + 96,120,0,32,240,0,31,224,0,26,28,112,29,2,0,255, + 241,255,0,31,128,120,0,31,128,112,0,31,128,96,0,31, + 128,64,0,31,128,192,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,134,0,0,31,142,0,0,31,159,0,0,31, + 191,0,0,31,255,128,0,31,223,128,0,31,159,192,0,31, + 143,192,0,31,143,224,0,31,135,224,0,31,135,240,0,31, + 131,240,0,31,131,248,0,31,129,248,0,31,129,252,0,31, + 128,252,0,31,128,254,0,31,128,254,0,255,243,255,192,22, + 28,84,25,2,0,255,248,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,12,31,128,12,31,128,12,31,128, + 12,31,128,28,31,128,28,31,128,60,31,128,60,31,128,124, + 31,128,252,31,129,252,255,255,252,31,28,112,34,2,0,255, + 128,15,254,15,128,15,224,15,192,15,224,15,192,15,224,15, + 192,15,224,15,224,23,224,15,224,23,224,15,240,23,224,13, + 240,23,224,13,240,39,224,13,248,39,224,12,248,39,224,12, + 248,39,224,12,252,71,224,12,124,71,224,12,124,71,224,12, + 126,71,224,12,62,135,224,12,63,135,224,12,63,135,224,12, + 31,135,224,12,31,7,224,12,31,7,224,12,15,7,224,12, + 15,7,224,28,14,7,224,62,6,7,224,255,134,63,254,27, + 28,112,30,2,0,255,128,255,224,31,192,63,0,31,192,30, + 0,15,224,12,0,7,240,12,0,7,240,12,0,7,248,12, + 0,7,248,12,0,6,252,12,0,6,254,12,0,6,126,12, + 0,6,63,12,0,6,63,140,0,6,31,140,0,6,31,204, + 0,6,15,236,0,6,7,236,0,6,7,252,0,6,3,252, + 0,6,1,252,0,6,1,252,0,6,0,252,0,6,0,252, + 0,6,0,124,0,6,0,60,0,15,0,60,0,31,128,28, + 0,255,224,12,0,22,28,84,27,3,1,1,254,0,3,3, + 0,6,1,128,14,1,192,28,0,224,60,0,240,60,0,240, + 124,0,248,124,0,248,124,0,248,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,124,0,248,124,0,248,124,0,248,60,0,240,60,0,240, + 28,0,224,14,1,192,6,1,128,3,3,0,1,254,0,23, + 28,84,27,2,0,255,255,128,31,129,240,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,248,0,22,37,111,27,3,248,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,56, + 240,60,76,240,30,133,224,14,135,224,7,135,192,3,135,132, + 1,238,4,0,22,4,0,6,4,0,7,12,0,7,12,0, + 7,252,0,7,248,0,7,248,0,3,240,0,1,224,25,28, + 112,28,2,0,255,255,0,0,31,135,192,0,31,131,224,0, + 31,129,240,0,31,129,248,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,240,0,31,131,224,0, + 31,135,192,0,31,254,0,0,31,135,128,0,31,131,192,0, + 31,129,240,0,31,129,240,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,248,128,31,129,248,128, + 31,129,248,128,31,129,248,128,31,129,249,0,31,128,249,0, + 255,248,126,0,18,29,87,23,3,0,1,0,0,31,225,128, + 48,57,128,96,31,128,96,15,128,224,7,128,240,3,128,240, + 3,128,248,1,128,254,1,128,255,1,128,127,192,0,127,224, + 0,63,248,0,31,252,0,7,255,0,3,255,0,128,255,128, + 128,127,128,192,31,192,192,15,192,192,7,192,224,3,192,224, + 1,192,240,1,128,248,1,128,248,3,0,206,2,0,135,188, + 0,24,28,84,27,2,0,255,255,255,252,126,63,248,126,31, + 240,126,15,224,126,15,224,126,7,192,126,7,192,126,3,192, + 126,3,192,126,3,128,126,3,128,126,2,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,7,255,224,26,28,112,30,3, + 0,255,240,127,192,31,128,31,0,31,128,14,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,15,128,12,0,15,192,12, + 0,7,192,24,0,7,224,56,0,1,252,240,0,0,255,192, + 0,27,28,112,30,2,0,255,248,127,224,31,192,15,0,15, + 192,6,0,15,192,6,0,7,224,4,0,7,224,12,0,7, + 224,8,0,3,240,8,0,3,240,8,0,3,240,24,0,1, + 248,16,0,1,248,16,0,1,252,48,0,0,252,32,0,0, + 252,32,0,0,254,96,0,0,126,64,0,0,126,64,0,0, + 127,192,0,0,63,128,0,0,63,128,0,0,63,128,0,0, + 31,0,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,14,0,0,38,28,140,41,2,0,255,243,255, + 207,252,31,192,126,1,224,15,192,126,0,192,15,192,62,0, + 192,7,192,63,0,128,7,224,63,0,128,7,224,63,1,128, + 7,224,63,129,0,3,240,63,129,0,3,240,127,131,0,3, + 240,111,195,0,1,248,79,194,0,1,248,207,194,0,1,248, + 199,230,0,0,252,135,230,0,0,252,135,228,0,0,253,131, + 244,0,0,127,131,252,0,0,127,3,248,0,0,127,3,248, + 0,0,127,1,248,0,0,63,1,248,0,0,62,1,240,0, + 0,62,0,240,0,0,30,0,240,0,0,28,0,240,0,0, + 28,0,96,0,0,12,0,96,0,26,28,112,29,2,0,255, + 241,255,128,31,224,124,0,15,224,56,0,15,224,48,0,7, + 240,96,0,7,240,96,0,3,248,192,0,3,248,128,0,1, + 253,128,0,0,255,0,0,0,254,0,0,0,126,0,0,0, + 127,0,0,0,63,0,0,0,63,128,0,0,31,128,0,0, + 63,192,0,0,111,192,0,0,79,224,0,0,199,224,0,1, + 135,240,0,1,131,240,0,3,3,248,0,2,1,248,0,6, + 1,252,0,14,0,252,0,30,1,254,0,255,199,255,192,25, + 28,112,28,2,0,255,240,255,128,31,192,60,0,31,192,24, + 0,15,192,24,0,15,224,24,0,7,224,16,0,7,224,48, + 0,3,240,32,0,3,240,32,0,1,248,96,0,1,248,64, + 0,1,252,64,0,0,252,192,0,0,254,128,0,0,127,128, + 0,0,127,128,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,1,255,224,0,20,28,84,25,3,0,127,255,240,126,7, + 240,124,7,224,120,15,224,112,15,192,96,31,192,96,31,128, + 96,63,128,64,63,0,64,127,0,0,254,0,0,254,0,1, + 252,0,1,248,0,3,248,0,3,240,0,7,240,0,7,224, + 16,15,224,16,15,192,16,31,192,48,31,128,48,63,128,112, + 63,0,112,127,0,240,126,1,240,254,7,240,255,255,240,9, + 35,70,15,3,249,255,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,128,13,37,74,17,2, + 248,192,0,224,0,224,0,96,0,112,0,112,0,48,0,56, + 0,56,0,24,0,24,0,28,0,28,0,12,0,14,0,14, + 0,6,0,6,0,7,0,7,0,3,0,3,128,3,128,1, + 128,1,192,1,192,0,192,0,192,0,224,0,224,0,96,0, + 112,0,112,0,48,0,48,0,56,0,56,9,35,70,15,3, + 249,255,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,18,14,42,22,2,15,0,192,0, + 0,192,0,1,224,0,3,240,0,3,240,0,7,56,0,7, + 56,0,14,28,0,28,14,0,28,14,0,56,7,0,56,7, + 0,112,3,128,224,1,192,20,3,9,20,0,249,255,255,240, + 255,255,240,255,255,240,7,7,7,17,3,21,224,240,240,120, + 60,12,6,17,19,57,20,2,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,18,28,84,20,0,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,60,0,31,78,0,31,143,0,31,135,128,31, + 7,128,31,7,128,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,128,31,7,128, + 31,135,0,25,143,0,16,206,0,16,120,0,14,19,38,18, + 2,0,7,224,14,48,60,24,60,28,120,60,120,124,248,124, + 248,120,248,48,248,0,248,0,248,0,248,0,120,4,120,4, + 56,4,28,8,14,16,7,224,18,28,84,21,2,0,0,254, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,15,62,0,28,190,0,60, + 126,0,120,126,0,120,62,0,120,62,0,248,62,0,248,62, + 0,248,62,0,248,62,0,248,62,0,248,62,0,248,62,0, + 120,62,0,120,62,0,120,126,0,60,126,0,28,190,0,15, + 63,192,14,19,38,18,2,0,7,192,28,224,56,112,56,120, + 120,120,120,124,248,124,248,124,248,124,255,252,248,0,248,0, + 248,0,120,4,120,4,56,8,60,8,30,16,7,224,14,28, + 56,13,1,0,1,240,7,24,15,28,30,60,30,124,62,124, + 62,56,62,0,62,0,255,192,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,192,19,28,84,22, + 2,247,7,225,192,30,118,96,60,60,224,60,60,224,124,62, + 192,124,62,0,124,62,0,124,62,0,60,60,0,60,60,0, + 30,120,0,7,224,0,56,0,0,96,0,0,96,0,0,127, + 224,0,127,254,0,127,255,0,63,255,128,31,255,128,96,7, + 128,192,3,128,128,3,128,128,3,0,128,3,0,64,6,0, + 48,28,0,15,240,0,20,28,84,22,1,0,255,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,30,0,31,111,0,31,135,128, + 31,135,192,31,135,192,31,7,192,31,7,192,31,7,192,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,192,255,223,240, + 8,28,28,12,2,0,60,126,126,126,126,60,0,0,0,252, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,255,12,37,74,13,254,247,1,224,3,240,3,240,3,240, + 3,240,1,224,0,0,0,0,0,0,15,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,123,224,251,224,251,224,243,192,227,192,103,128, + 30,0,20,28,84,21,1,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,31,192,31,7,0,31,6,0,31,4,0,31, + 8,0,31,16,0,31,16,0,31,48,0,31,120,0,31,248, + 0,31,188,0,31,60,0,31,30,0,31,31,0,31,15,0, + 31,15,128,31,15,128,31,15,192,255,223,240,11,28,56,12, + 1,0,255,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,255,224,27,19,76,30,2,0, + 254,60,30,0,62,222,111,0,63,31,143,0,63,31,143,128, + 63,31,143,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,255,63,223,224,19,19,57,22, + 2,0,254,60,0,62,222,0,63,15,0,63,15,128,63,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,255,191,224,16,19,38,20,2, + 0,7,192,12,112,28,56,56,60,120,30,120,30,248,30,248, + 31,248,31,248,31,248,31,248,31,248,30,120,30,120,30,56, + 60,28,56,12,112,7,192,18,28,84,21,1,247,255,60,0, + 31,78,0,31,143,0,31,135,128,31,7,128,31,7,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,128,31,7,128,31,135,128,31,143,0, + 31,78,0,31,60,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,255,192, + 0,17,28,84,20,2,247,7,130,0,28,194,0,60,102,0, + 120,126,0,120,62,0,120,62,0,248,62,0,248,62,0,248, + 62,0,248,62,0,248,62,0,248,62,0,248,62,0,120,62, + 0,120,62,0,120,126,0,60,126,0,28,190,0,15,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,255,128,14,19,38,17,2, + 0,254,48,62,120,62,188,63,60,63,124,62,124,62,56,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,13,19,38,16,2,0,31,16,97, + 208,96,112,224,48,224,48,240,16,248,0,126,0,127,128,63, + 224,15,240,135,240,193,248,192,120,224,56,224,24,240,16,156, + 48,135,192,12,27,54,14,1,0,6,0,6,0,6,0,6, + 0,6,0,14,0,30,0,62,0,255,224,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,16,62, + 16,62,16,62,16,62,16,62,32,62,32,31,192,7,128,19, + 19,57,21,1,0,254,63,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 31,128,62,31,128,30,47,128,30,79,128,7,143,224,18,19, + 57,20,1,0,255,143,192,62,3,0,30,2,0,30,2,0, + 31,2,0,15,4,0,15,4,0,15,132,0,7,136,0,7, + 200,0,7,216,0,3,208,0,3,240,0,3,240,0,1,224, + 0,1,224,0,0,224,0,0,192,0,0,192,0,28,19,76, + 30,1,0,255,63,231,240,62,15,129,192,30,7,129,128,30, + 7,129,128,31,7,193,0,15,7,193,0,15,7,195,0,15, + 143,226,0,7,137,226,0,7,137,230,0,7,217,244,0,3, + 208,244,0,3,240,248,0,3,240,248,0,1,224,248,0,1, + 224,112,0,1,192,112,0,0,192,112,0,0,192,32,0,18, + 19,57,20,1,0,255,63,128,126,14,0,62,12,0,31,8, + 0,31,16,0,15,176,0,15,160,0,7,192,0,3,192,0, + 3,224,0,1,240,0,3,240,0,2,248,0,4,248,0,12, + 124,0,8,126,0,24,62,0,56,63,0,254,127,192,19,28, + 84,20,0,247,255,207,224,63,3,128,31,3,0,31,2,0, + 15,2,0,15,130,0,15,130,0,7,196,0,7,196,0,3, + 196,0,3,232,0,3,232,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,112,0,0,96,0,0,96,0,0,32,0, + 0,64,0,12,64,0,30,64,0,62,64,0,62,128,0,60, + 128,0,29,0,0,14,0,0,14,19,38,17,1,0,127,252, + 120,124,112,248,96,248,65,240,65,224,67,224,3,192,7,192, + 7,128,15,128,31,4,31,4,62,4,62,12,124,12,120,28, + 248,60,255,252,12,35,70,16,2,249,1,240,7,128,15,0, + 15,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,30,0,30,0,56,0,224,0,56,0, + 30,0,30,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,15,0,15,0,7,128,1,240, + 3,36,36,11,4,248,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,12,37,74,16,2,248, + 128,0,240,0,28,0,15,0,15,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 7,128,3,192,0,112,3,192,7,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,0,15,0,28,0,248,0,128,0,21,8,24,25,2,6, + 62,0,48,127,192,16,255,240,8,135,252,8,129,255,24,128, + 127,248,192,31,240,96,3,224,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,11,0,0,6, + 29,29,10,2,247,120,252,252,252,252,120,0,0,32,48,48, + 48,48,48,48,48,112,120,120,120,120,252,252,252,252,252,252, + 120,120,14,28,56,22,4,251,1,128,1,128,1,128,1,128, + 3,192,15,176,29,152,61,152,121,184,121,184,249,184,249,184, + 249,128,249,128,249,128,249,128,249,128,249,132,121,132,121,132, + 61,136,29,152,15,176,3,192,1,128,1,128,1,128,1,128, + 23,29,87,27,2,0,0,1,0,0,30,224,0,120,16,0, + 248,24,0,240,28,1,240,60,1,240,124,3,240,124,3,240, + 120,3,240,0,3,240,0,3,240,0,3,240,0,31,240,64, + 1,255,128,1,248,0,0,248,0,0,248,0,0,248,0,0, + 120,0,0,120,0,0,112,0,0,112,6,60,112,4,127,224, + 28,131,255,248,129,255,240,195,63,224,124,31,192,18,20,60, + 21,2,3,0,0,128,195,225,128,239,249,192,255,255,128,120, + 15,0,112,7,0,96,3,0,224,1,128,192,1,128,192,1, + 128,192,1,128,192,1,128,224,1,128,96,3,0,112,7,0, + 120,15,0,255,255,128,239,249,192,195,225,128,0,0,128,21, + 28,84,23,1,0,255,195,248,63,0,224,63,0,192,31,128, + 192,31,128,128,31,192,128,15,193,0,15,193,0,7,227,0, + 7,226,0,7,246,0,3,244,0,3,252,0,1,248,0,63, + 255,192,1,248,0,1,248,0,1,248,0,63,255,192,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,15,255,128,3,35,35,11,4,249,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,0,0,0, + 0,0,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,17,36,108,24,2,248,1,240,0,6,12,0,12,6, + 0,24,7,0,56,31,0,56,63,0,56,63,0,56,62,0, + 60,28,0,63,0,0,63,192,0,31,224,0,63,248,0,103, + 254,0,67,255,0,192,255,0,192,63,128,224,15,128,248,3, + 128,254,1,128,127,129,128,127,225,0,63,249,0,15,254,0, + 3,254,0,0,254,0,0,63,0,14,15,0,31,7,0,63, + 7,0,63,7,0,62,7,0,56,6,0,24,12,0,12,24, + 0,7,240,0,12,5,10,16,2,22,112,224,249,240,249,240, + 249,240,112,224,28,28,112,32,2,1,0,127,224,0,1,128, + 24,0,6,0,12,0,12,0,3,0,24,0,1,0,16,30, + 33,128,48,113,160,192,96,224,224,64,97,224,96,96,97,224, + 96,96,193,224,32,32,195,224,32,48,195,224,32,48,195,224, + 0,48,195,224,0,48,195,224,0,48,195,224,16,48,193,224, + 16,32,65,224,48,96,97,224,32,96,96,240,96,64,48,112, + 192,192,16,31,1,128,24,0,1,0,12,0,3,0,6,0, + 12,0,1,128,24,0,0,127,224,0,11,14,28,15,2,14, + 30,0,35,0,99,128,115,128,115,128,15,128,51,128,99,128, + 227,128,227,160,227,160,125,192,0,0,255,224,10,16,32,18, + 4,1,24,64,48,192,112,128,97,128,225,128,227,128,227,128, + 227,128,227,128,227,128,227,128,97,128,97,128,48,192,24,64, + 8,0,19,11,33,22,2,5,255,255,224,255,255,224,255,255, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,10,4,8,14,2,8,255, + 192,255,192,255,192,255,192,28,28,112,32,2,1,0,127,224, + 0,1,128,24,0,6,0,12,0,12,0,3,0,24,0,1, + 0,19,255,193,128,48,249,224,192,96,248,240,64,96,248,248, + 96,96,248,248,96,192,248,248,32,192,248,240,48,192,249,224, + 48,192,254,0,48,192,249,192,48,192,249,224,48,192,249,240, + 48,192,249,240,32,64,249,242,96,96,249,242,96,96,249,242, + 64,48,249,246,192,19,254,253,128,24,0,121,0,12,0,3, + 0,6,0,12,0,1,128,24,0,0,127,224,0,10,3,6, + 16,3,23,255,192,255,192,255,192,12,11,22,22,5,18,31, + 128,127,224,112,96,224,48,192,48,192,48,192,48,224,112,112, + 224,63,192,31,128,32,29,116,36,2,254,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,255,255,255,255,255,255,255,255,255,255,255,255,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,0,0,0,0, + 0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,11, + 17,34,17,3,11,31,0,99,192,225,224,225,224,241,224,241, + 224,115,192,7,128,14,0,28,0,48,32,96,32,64,96,255, + 224,255,224,143,192,135,128,12,18,36,16,2,10,31,0,51, + 192,97,224,113,224,121,224,121,224,1,192,3,128,30,0,3, + 192,1,224,1,240,121,240,249,240,241,240,225,224,99,192,31, + 0,7,7,7,17,7,21,14,30,30,60,120,96,192,19,30, + 90,22,2,245,112,28,0,112,28,0,248,62,0,248,62,0, + 248,62,0,248,62,0,248,62,0,240,62,0,240,62,0,240, + 62,0,112,28,0,112,28,0,96,28,32,96,24,32,32,56, + 96,32,127,224,61,255,192,47,231,192,39,195,192,32,0,0, + 32,0,0,112,0,0,112,0,0,120,0,0,120,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,56,0,0,18,33, + 99,23,3,251,15,255,192,63,206,0,127,206,0,127,206,0, + 255,206,0,255,206,0,255,206,0,255,206,0,255,206,0,255, + 206,0,255,206,0,255,206,0,127,206,0,63,206,0,7,206, + 0,1,206,0,1,206,0,1,206,0,1,206,0,1,206,0, + 1,206,0,1,206,0,1,206,0,1,206,0,1,206,0,1, + 206,0,1,206,0,1,206,0,1,206,0,1,206,0,1,206, + 0,1,206,0,1,206,0,6,6,6,10,2,10,120,252,252, + 252,252,120,7,8,8,17,5,248,32,32,56,12,14,14,14, + 252,8,17,17,16,4,11,12,28,252,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,10,14,28,14,2,14,30,0, + 51,0,115,128,243,192,243,192,243,192,243,192,243,192,243,192, + 115,128,51,0,30,0,0,0,255,192,10,16,32,18,4,1, + 6,0,131,0,195,0,97,128,97,128,113,192,113,192,113,192, + 113,192,113,192,97,192,97,128,65,128,195,0,134,0,4,0, + 28,29,116,34,4,0,0,0,12,0,12,0,12,0,28,0, + 24,0,252,0,24,0,60,0,48,0,60,0,32,0,60,0, + 96,0,60,0,192,0,60,0,192,0,60,1,128,0,60,1, + 128,0,60,3,0,0,60,2,3,128,60,6,3,128,60,12, + 7,128,60,12,15,128,60,24,15,128,255,24,31,128,0,48, + 23,128,0,32,39,128,0,96,103,128,0,192,71,128,0,192, + 199,128,1,128,255,240,1,128,7,128,3,0,7,128,2,0, + 7,128,6,0,7,128,12,0,63,240,27,29,116,34,4,0, + 0,0,12,0,12,0,24,0,28,0,24,0,252,0,48,0, + 60,0,48,0,60,0,96,0,60,0,96,0,60,0,192,0, + 60,1,128,0,60,1,128,0,60,3,0,0,60,3,31,0, + 60,6,115,192,60,6,225,224,60,12,225,224,60,8,241,224, + 255,24,241,224,0,48,115,192,0,48,3,128,0,96,7,0, + 0,96,14,0,0,192,24,0,0,128,48,32,1,128,64,32, + 3,0,64,96,3,0,191,224,6,0,255,224,6,0,159,192, + 12,0,135,128,30,29,116,34,2,0,0,0,3,0,31,0, + 3,0,51,192,6,0,97,224,4,0,113,224,12,0,121,224, + 8,0,121,224,24,0,1,192,48,0,3,128,48,0,30,0, + 96,0,3,192,64,0,1,224,192,0,49,240,128,224,249,241, + 128,224,249,243,1,224,225,226,3,224,99,230,3,224,63,132, + 5,224,0,12,5,224,0,8,9,224,0,16,25,224,0,48, + 17,224,0,32,49,224,0,96,63,252,0,64,1,224,0,192, + 1,224,0,128,1,224,1,0,1,224,3,0,15,252,12,29, + 58,18,3,247,30,0,63,0,63,0,63,0,63,0,30,0, + 0,0,14,0,17,0,32,128,32,128,32,128,1,128,3,0, + 3,0,6,0,14,0,28,0,60,96,120,32,120,48,248,16, + 248,16,248,16,248,16,248,48,124,96,63,192,31,128,26,37, + 148,29,2,0,0,224,0,0,0,240,0,0,0,240,0,0, + 0,120,0,0,0,56,0,0,0,12,0,0,0,6,0,0, + 0,0,0,0,0,4,0,0,0,6,0,0,0,14,0,0, + 0,14,0,0,0,15,0,0,0,31,0,0,0,31,0,0, + 0,31,128,0,0,63,128,0,0,47,128,0,0,47,192,0, + 0,111,192,0,0,79,192,0,0,71,192,0,0,199,224,0, + 0,135,224,0,0,131,224,0,1,131,240,0,1,3,240,0, + 3,1,240,0,3,255,248,0,2,1,248,0,6,0,248,0, + 6,0,252,0,4,0,252,0,12,0,252,0,12,0,124,0, + 30,0,254,0,255,199,255,192,26,37,148,29,2,0,0,0, + 224,0,0,0,224,0,0,1,224,0,0,3,192,0,0,3, + 128,0,0,6,0,0,0,12,0,0,0,0,0,0,0,4, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,63,128,0,0,63, + 128,0,0,47,128,0,0,111,192,0,0,111,192,0,0,79, + 192,0,0,199,192,0,0,199,224,0,0,135,224,0,1,131, + 224,0,1,131,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,6,0,252,0,4,0, + 252,0,12,0,252,0,12,0,126,0,62,0,255,0,255,199, + 255,192,26,37,148,29,2,0,0,4,0,0,0,14,0,0, + 0,14,0,0,0,31,0,0,0,59,128,0,0,224,192,0, + 1,128,48,0,0,0,0,0,0,4,0,0,0,6,0,0, + 0,14,0,0,0,14,0,0,0,15,0,0,0,31,0,0, + 0,31,0,0,0,31,128,0,0,63,128,0,0,47,128,0, + 0,47,192,0,0,111,192,0,0,79,192,0,0,71,192,0, + 0,199,224,0,0,135,224,0,0,131,224,0,1,131,240,0, + 1,3,240,0,3,1,240,0,3,255,248,0,2,1,248,0, + 6,0,248,0,6,0,252,0,4,0,252,0,12,0,252,0, + 12,0,124,0,30,0,254,0,255,199,255,192,26,36,144,29, + 2,0,0,56,32,0,0,126,32,0,0,255,224,0,0,143, + 192,0,0,131,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,15, + 0,0,0,31,0,0,0,31,0,0,0,63,128,0,0,63, + 128,0,0,47,128,0,0,111,192,0,0,111,192,0,0,79, + 192,0,0,199,192,0,0,199,224,0,0,135,224,0,1,131, + 224,0,1,131,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,6,0,252,0,4,0, + 252,0,12,0,252,0,12,0,126,0,62,0,255,0,255,199, + 255,192,26,36,144,29,2,0,0,224,224,0,1,241,240,0, + 1,241,240,0,1,241,240,0,0,224,224,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,14,0,0,0,14,0,0, + 0,14,0,0,0,31,0,0,0,31,0,0,0,31,0,0, + 0,63,128,0,0,63,128,0,0,63,128,0,0,111,192,0, + 0,111,192,0,0,79,192,0,0,199,192,0,0,199,224,0, + 0,135,224,0,1,131,224,0,1,131,240,0,1,3,240,0, + 3,1,240,0,3,255,248,0,2,1,248,0,6,0,248,0, + 6,0,252,0,4,0,252,0,12,0,124,0,12,0,124,0, + 30,0,126,0,255,199,255,192,26,37,148,29,2,0,0,31, + 0,0,0,63,128,0,0,97,192,0,0,96,192,0,0,96, + 192,0,0,113,192,0,0,63,128,0,0,30,0,0,0,0, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,15, + 0,0,0,31,0,0,0,31,0,0,0,31,128,0,0,63, + 128,0,0,63,128,0,0,47,128,0,0,111,192,0,0,79, + 192,0,0,71,192,0,0,135,224,0,0,135,224,0,0,131, + 224,0,1,3,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,4,0,252,0,4,0, + 252,0,12,0,252,0,12,0,124,0,28,0,254,0,255,199, + 255,192,36,28,140,38,1,0,0,7,255,255,224,0,1,254, + 3,224,0,1,254,1,224,0,1,254,0,224,0,1,254,0, + 224,0,3,126,0,96,0,3,126,0,96,0,6,126,0,32, + 0,6,126,4,32,0,12,126,4,0,0,12,126,12,0,0, + 24,126,12,0,0,24,126,28,0,0,48,127,252,0,0,48, + 126,60,0,0,96,126,28,0,0,96,126,12,0,0,192,126, + 4,48,0,192,126,4,48,1,255,254,4,48,1,128,126,0, + 48,3,0,126,0,112,3,0,126,0,112,6,0,126,0,240, + 6,0,126,0,240,14,0,126,1,240,63,0,126,7,240,255, + 199,255,255,240,21,37,111,26,3,248,1,254,48,7,3,48, + 14,1,240,30,0,240,60,0,240,60,0,112,124,0,112,124, + 0,48,124,0,48,252,0,48,252,0,48,252,0,16,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,24, + 252,0,24,124,0,16,124,0,16,124,0,16,60,0,48,60, + 0,32,30,0,96,14,0,192,7,1,128,1,254,0,0,32, + 0,0,96,0,0,120,0,0,28,0,0,14,0,0,14,0, + 0,14,0,2,28,0,1,248,0,22,37,111,26,2,0,1, + 128,0,1,192,0,1,224,0,0,224,0,0,112,0,0,24, + 0,0,8,0,0,0,0,0,0,0,255,255,252,15,192,124, + 15,192,60,15,192,28,15,192,28,15,192,12,15,192,12,15, + 192,12,15,193,4,15,193,0,15,195,0,15,195,0,15,199, + 0,15,255,0,15,199,0,15,195,0,15,195,0,15,193,4, + 15,193,4,15,193,4,15,192,12,15,192,12,15,192,12,15, + 192,28,15,192,28,15,192,60,15,192,252,255,255,252,22,37, + 111,26,2,0,0,1,192,0,3,192,0,3,192,0,7,128, + 0,14,0,0,12,0,0,24,0,0,0,0,0,0,0,255, + 255,252,15,192,124,15,192,60,15,192,28,15,192,28,15,192, + 12,15,192,12,15,192,4,15,193,4,15,193,0,15,195,0, + 15,195,0,15,199,0,15,255,0,15,199,0,15,195,0,15, + 195,0,15,193,4,15,193,4,15,193,4,15,192,4,15,192, + 12,15,192,12,15,192,28,15,192,28,15,192,60,15,192,252, + 255,255,252,22,37,111,26,2,0,0,8,0,0,24,0,0, + 60,0,0,126,0,0,231,0,1,193,128,3,0,64,0,0, + 0,0,0,0,255,255,252,15,192,124,15,192,60,15,192,28, + 15,192,28,15,192,12,15,192,12,15,192,12,15,193,4,15, + 193,0,15,195,0,15,195,0,15,199,0,15,255,0,15,199, + 0,15,195,0,15,195,0,15,193,4,15,193,4,15,193,4, + 15,192,12,15,192,12,15,192,12,15,192,28,15,192,28,15, + 192,60,15,192,252,255,255,252,22,36,108,26,2,0,1,193, + 192,3,227,224,3,227,224,3,227,224,1,193,192,0,0,0, + 0,0,0,0,0,0,255,255,252,15,192,124,15,192,60,15, + 192,28,15,192,28,15,192,12,15,192,12,15,192,4,15,193, + 4,15,193,0,15,195,0,15,195,0,15,199,0,15,255,0, + 15,199,0,15,195,0,15,195,0,15,193,4,15,193,4,15, + 193,4,15,192,4,15,192,12,15,192,12,15,192,28,15,192, + 28,15,192,60,15,192,252,255,255,252,13,37,74,17,2,0, + 96,0,112,0,120,0,56,0,28,0,14,0,2,0,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,37,74,17,2,0, + 0,112,0,240,1,240,1,224,3,128,7,0,4,0,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,37,74,17,2,0, + 6,0,6,0,15,0,31,128,57,192,112,112,192,24,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,36,72,16,2,0, + 112,112,248,248,248,248,248,248,112,112,0,0,0,0,0,0, + 255,248,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,248,25,28,112,29,2,0,255,255, + 128,0,31,128,224,0,31,128,112,0,31,128,56,0,31,128, + 60,0,31,128,30,0,31,128,30,0,31,128,31,0,31,128, + 31,0,31,128,31,0,31,128,31,128,31,128,31,128,31,128, + 31,128,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,30,0,31,128,30,0,31,128,60,0,31,128, + 56,0,31,128,112,0,31,128,224,0,255,255,128,0,27,36, + 144,30,2,0,0,24,0,0,0,62,32,0,0,127,224,0, + 0,71,192,0,0,1,128,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,128,255,224,31,192,63,0,31,192,30,0, + 15,224,12,0,7,240,12,0,7,240,12,0,7,248,12,0, + 7,248,12,0,6,252,12,0,6,254,12,0,6,126,12,0, + 6,63,12,0,6,63,140,0,6,31,140,0,6,31,204,0, + 6,15,236,0,6,7,236,0,6,7,252,0,6,3,252,0, + 6,1,252,0,6,1,252,0,6,0,252,0,6,0,252,0, + 6,0,124,0,6,0,60,0,15,0,60,0,31,128,28,0, + 255,224,12,0,22,37,111,27,3,1,7,128,0,7,128,0, + 3,192,0,1,192,0,0,224,0,0,112,0,0,16,0,0, + 0,0,0,0,0,1,254,0,3,3,0,6,1,128,14,1, + 192,28,0,224,60,0,240,60,0,240,124,0,248,124,0,248, + 124,0,248,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,124,0,248,124,0, + 248,124,0,248,60,0,240,60,0,240,28,0,224,14,1,192, + 6,1,128,3,3,0,1,254,0,22,37,111,27,3,1,0, + 7,128,0,7,128,0,15,0,0,14,0,0,28,0,0,56, + 0,0,32,0,0,0,0,0,0,0,1,254,0,3,3,0, + 6,1,128,14,1,192,28,0,224,60,0,240,60,0,240,124, + 0,248,124,0,248,124,0,248,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,252,0,252,252,0,252, + 124,0,248,124,0,248,124,0,248,60,0,240,60,0,240,28, + 0,224,14,1,192,6,1,128,3,3,0,1,254,0,22,37, + 111,27,3,0,0,48,0,0,48,0,0,120,0,0,252,0, + 1,206,0,3,135,0,6,1,128,0,0,0,0,0,0,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,0, + 240,60,0,240,28,0,224,14,1,192,6,1,128,3,3,0, + 1,254,0,22,36,108,27,3,0,1,192,128,3,241,128,3, + 255,0,4,63,0,4,12,0,0,0,0,0,0,0,0,0, + 0,1,254,0,3,3,0,6,1,128,14,1,192,28,0,224, + 60,0,240,60,0,240,124,0,248,124,0,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,124,0,248,124,0,248,124,0,248, + 60,0,240,60,0,240,28,0,224,14,1,192,6,1,128,3, + 3,0,1,254,0,22,36,108,27,3,0,3,131,128,7,199, + 192,7,199,192,7,199,192,3,131,128,0,0,0,0,0,0, + 0,0,0,1,254,0,3,3,0,6,1,128,14,1,192,28, + 0,224,60,0,240,60,0,240,124,0,248,124,0,248,124,0, + 248,252,0,252,252,0,252,252,0,252,252,0,252,252,0,252, + 252,0,252,252,0,252,252,0,252,124,0,248,124,0,248,124, + 0,248,60,0,240,60,0,240,28,0,224,14,1,192,6,1, + 128,3,3,0,1,254,0,24,25,75,36,6,254,64,0,2, + 224,0,7,240,0,14,120,0,28,60,0,60,30,0,120,15, + 0,240,7,129,224,3,195,192,1,231,128,0,239,0,0,126, + 0,0,60,0,0,124,0,0,254,0,1,231,0,3,195,128, + 7,129,192,15,0,224,30,0,112,60,0,56,120,0,28,112, + 0,14,224,0,7,192,0,2,22,28,84,27,3,1,1,254, + 12,3,3,152,6,3,208,14,1,240,28,1,224,60,1,240, + 60,1,240,124,1,248,124,3,248,124,6,248,252,14,252,252, + 12,252,252,24,252,252,56,252,252,112,252,252,96,252,252,192, + 252,253,192,252,125,128,248,127,0,248,126,0,248,62,0,240, + 62,0,240,30,0,224,62,1,192,46,1,128,103,3,0,193, + 254,0,26,37,148,30,3,1,0,224,0,0,0,240,0,0, + 0,120,0,0,0,56,0,0,0,28,0,0,0,12,0,0, + 0,6,0,0,0,0,0,0,0,0,0,0,255,240,127,192, + 31,128,31,0,31,128,14,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,15,128,12,0,15,192,12,0,7,192,24,0, + 7,224,56,0,1,252,240,0,0,255,192,0,26,37,148,30, + 3,1,0,0,224,0,0,1,224,0,0,1,224,0,0,3, + 192,0,0,7,0,0,0,6,0,0,0,12,0,0,0,0, + 0,0,0,0,0,0,255,240,127,192,31,128,31,0,31,128, + 14,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,15,128, + 12,0,15,192,12,0,7,192,24,0,7,224,56,0,1,252, + 240,0,0,255,192,0,26,37,148,30,3,0,0,4,0,0, + 0,14,0,0,0,31,0,0,0,31,128,0,0,59,192,0, + 0,224,224,0,1,128,48,0,0,0,0,0,0,0,0,0, + 255,240,127,192,31,128,31,0,31,128,14,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,15,128,4,0,15,128,12,0, + 7,192,24,0,7,224,24,0,1,240,112,0,0,255,192,0, + 26,36,144,30,3,0,0,224,224,0,1,241,240,0,1,241, + 240,0,1,241,240,0,0,224,224,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,240,127,192,31,128,31,0,31,128, + 14,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,15,128, + 12,0,15,192,12,0,7,192,24,0,7,224,56,0,1,252, + 240,0,0,255,192,0,25,37,148,28,2,0,0,0,224,0, + 0,0,224,0,0,1,224,0,0,3,192,0,0,3,128,0, + 0,6,0,0,0,12,0,0,0,0,0,0,0,0,0,0, + 255,240,255,128,31,192,60,0,31,192,24,0,15,192,24,0, + 15,224,24,0,7,224,16,0,7,224,48,0,3,240,32,0, + 3,240,32,0,1,248,96,0,1,248,64,0,1,252,64,0, + 0,252,192,0,0,254,128,0,0,127,128,0,0,127,128,0, + 0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0, + 0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0, + 0,63,0,0,0,63,0,0,0,63,0,0,1,255,224,0, + 23,28,84,27,2,0,255,248,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,255,128,31,129,224,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,248,0,19,28,84,22,1,0, + 0,248,0,3,156,0,7,142,0,15,15,0,15,15,0,15, + 15,0,31,15,0,31,15,0,31,14,0,31,28,0,31,112, + 0,31,12,0,31,7,0,31,7,128,31,3,192,31,3,192, + 31,3,192,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,224,31,115,224,31,243,192,31,243,192,31,227,128,31,103, + 0,255,62,0,17,28,84,20,2,0,56,0,0,60,0,0, + 60,0,0,30,0,0,14,0,0,3,0,0,1,0,0,0, + 0,0,0,0,0,15,192,0,24,240,0,48,120,0,112,120, + 0,124,124,0,124,124,0,56,124,0,1,252,0,14,124,0, + 28,124,0,56,124,0,120,124,0,248,124,0,248,124,128,248, + 124,128,248,124,128,252,253,128,127,191,0,62,30,0,17,28, + 84,20,2,0,0,48,0,0,112,0,0,240,0,0,224,0, + 1,192,0,1,128,0,3,0,0,0,0,0,0,0,0,15, + 192,0,24,240,0,48,120,0,112,120,0,124,124,0,124,124, + 0,124,124,0,0,252,0,7,124,0,28,124,0,56,124,0, + 120,124,0,248,124,0,248,124,128,248,124,128,248,124,128,252, + 253,128,127,191,0,62,30,0,17,28,84,20,2,0,3,0, + 0,3,128,0,7,128,0,7,192,0,12,224,0,24,112,0, + 48,24,0,0,0,0,0,0,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,17,27,81,20,2,0,14,8,0,31,152,0,63,240, + 0,35,240,0,32,224,0,0,0,0,0,0,0,0,0,0, + 15,192,0,24,240,0,48,120,0,112,120,0,124,124,0,124, + 124,0,124,124,0,0,252,0,7,124,0,28,124,0,56,124, + 0,120,124,0,248,124,0,248,124,128,248,124,128,248,124,128, + 252,253,128,127,191,0,62,30,0,17,27,81,20,2,0,56, + 112,0,124,248,0,124,248,0,124,248,0,56,112,0,0,0, + 0,0,0,0,0,0,0,15,192,0,24,240,0,48,120,0, + 112,120,0,124,124,0,124,124,0,124,124,0,0,252,0,7, + 124,0,28,124,0,56,124,0,120,124,0,248,124,0,248,124, + 128,248,124,128,248,124,128,252,253,128,127,191,0,62,30,0, + 17,28,84,20,2,1,15,192,0,12,192,0,24,96,0,24, + 96,0,24,96,0,28,224,0,15,192,0,7,128,0,0,0, + 0,15,192,0,16,240,0,48,120,0,112,120,0,120,124,0, + 124,124,0,124,124,0,0,252,0,7,124,0,28,124,0,56, + 124,0,120,124,0,248,124,0,248,124,128,248,124,128,248,124, + 128,252,253,128,127,255,0,62,62,0,23,19,57,27,2,0, + 15,195,224,24,238,112,48,124,56,112,124,60,120,124,60,124, + 124,62,124,124,62,24,124,62,3,252,62,14,127,254,60,124, + 0,120,124,0,248,124,2,248,124,2,248,124,2,248,124,4, + 252,222,4,127,143,8,63,3,240,14,27,54,18,2,248,7, + 224,14,48,60,24,60,28,120,60,120,124,248,124,248,120,248, + 48,248,0,248,0,248,0,248,0,120,4,120,4,56,4,60, + 8,30,16,7,224,2,0,2,0,3,128,0,192,0,224,0, + 224,0,224,7,128,14,28,56,18,2,0,56,0,56,0,60, + 0,30,0,14,0,7,0,1,0,0,0,0,0,7,192,28, + 224,56,112,56,120,120,120,120,124,248,124,248,124,248,124,255, + 252,248,0,248,0,248,4,120,4,120,4,56,8,60,24,30, + 48,7,192,14,28,56,18,2,0,0,112,0,112,0,240,1, + 224,1,192,3,128,2,0,0,0,0,0,7,192,28,224,56, + 112,56,120,120,120,120,124,248,124,248,124,255,252,248,0,248, + 0,248,0,248,4,120,4,120,12,56,8,60,24,30,48,7, + 192,14,28,56,18,2,0,3,0,7,128,7,128,15,192,12, + 192,24,96,48,56,0,0,0,0,7,192,28,224,56,112,56, + 120,120,120,120,124,248,124,248,124,248,124,255,252,248,0,248, + 0,248,0,120,4,120,4,56,8,60,8,30,16,7,224,14, + 27,54,18,2,0,56,112,124,248,124,248,124,248,56,112,0, + 0,0,0,0,0,7,192,28,224,56,112,56,120,120,120,120, + 124,248,124,248,124,248,124,255,252,248,0,248,0,248,0,120, + 4,120,12,56,8,60,24,30,48,7,192,10,28,56,12,1, + 0,224,0,240,0,248,0,120,0,28,0,14,0,2,0,0, + 0,0,0,127,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,127,192,9,28,56,12,2,0,1, + 128,3,128,7,128,15,0,14,0,28,0,16,0,0,0,0, + 0,254,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,11,28,56,11,1,0,14,0,30, + 0,31,0,63,0,115,128,224,192,128,96,0,0,0,0,127, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,127,192,11,27,54,12,1,0,113,192,251,224,251, + 224,251,224,113,192,0,0,0,0,0,0,127,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,127, + 192,16,28,56,20,2,0,31,8,15,184,7,224,7,224,7, + 224,13,240,16,248,0,248,0,124,7,252,30,126,60,62,56, + 62,120,30,120,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,30,120,30,120,30,56,60,60,60,12,112,7,224,19, + 27,81,22,2,0,0,2,0,7,194,0,15,254,0,15,252, + 0,8,120,0,0,0,0,0,0,0,0,0,0,254,60,0, + 62,222,0,63,15,0,63,15,128,63,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,255,191,224,16,28,56,20,2,0,24,0,28,0, + 30,0,15,0,7,0,3,128,0,192,0,0,0,0,7,192, + 12,112,28,56,56,60,120,30,120,30,248,30,248,31,248,31, + 248,31,248,31,248,31,248,30,120,30,120,30,56,60,28,56, + 12,112,7,192,16,28,56,20,2,0,0,56,0,56,0,120, + 0,240,0,224,1,192,3,0,0,0,0,0,7,192,12,112, + 28,56,56,60,120,30,120,30,248,30,248,31,248,31,248,31, + 248,31,248,31,248,30,120,30,120,30,56,60,28,56,12,112, + 7,192,16,28,56,20,2,0,3,128,3,192,3,192,7,224, + 14,112,28,56,48,12,0,0,0,0,7,192,12,112,28,56, + 56,60,120,30,120,30,248,30,248,31,248,31,248,31,248,31, + 248,31,248,30,120,30,120,30,56,60,28,56,12,112,7,192, + 16,27,54,20,2,0,14,4,31,140,31,248,35,248,32,112, + 0,0,0,0,0,0,7,192,12,112,28,56,56,60,120,30, + 120,30,248,30,248,31,248,31,248,31,248,31,248,31,248,30, + 120,30,120,30,56,60,28,56,12,112,7,192,16,27,54,20, + 2,0,28,56,62,124,62,124,62,124,28,56,0,0,0,0, + 0,0,7,192,12,112,28,56,56,60,120,30,120,30,248,30, + 248,31,248,31,248,31,248,31,248,31,248,30,120,30,120,30, + 56,60,28,56,12,112,7,192,33,26,130,37,2,253,0,3, + 192,0,0,0,7,224,0,0,0,7,224,0,0,0,7,224, + 0,0,0,7,224,0,0,0,3,192,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,255,128,255,255,255,255,128,255, + 255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,3,192,0,0,0,7,224,0,0,0,7,224,0, + 0,0,7,224,0,0,0,7,224,0,0,0,3,192,0,0, + 16,19,38,20,2,0,7,225,12,114,28,60,56,60,120,62, + 120,62,248,126,248,95,248,223,249,159,251,31,254,31,252,30, + 124,30,120,30,60,28,124,56,78,48,135,192,19,28,84,21, + 1,0,12,0,0,30,0,0,15,0,0,7,0,0,3,128, + 0,1,192,0,0,64,0,0,0,0,0,0,0,254,63,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,31,128,62,31,128,30,47,128, + 31,79,128,7,143,224,19,28,84,21,1,0,0,28,0,0, + 60,0,0,60,0,0,120,0,0,224,0,0,192,0,1,128, + 0,0,0,0,0,0,0,254,63,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,31,128,62,31,128,30,47,128,30,79,128,7,143,224, + 19,28,84,21,1,0,1,192,0,1,224,0,3,224,0,3, + 240,0,7,56,0,12,28,0,24,4,0,0,0,0,0,0, + 0,254,63,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,31,128,62,31, + 128,30,47,128,30,79,128,7,143,224,19,27,81,21,1,0, + 28,28,0,62,62,0,62,62,0,62,62,0,28,28,0,0, + 0,0,0,0,0,0,0,0,254,63,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,31,128,62,31,128,30,47,128,30,79,128,7,143, + 224,18,37,111,19,0,247,0,14,0,0,30,0,0,30,0, + 0,60,0,0,48,0,0,96,0,0,192,0,0,0,0,0, + 0,0,255,207,192,63,3,0,31,3,0,31,2,0,15,2, + 0,15,130,0,15,132,0,7,196,0,7,196,0,3,196,0, + 3,232,0,3,232,0,1,248,0,1,240,0,0,240,0,0, + 240,0,0,96,0,0,96,0,0,96,0,0,32,0,0,64, + 0,12,64,0,30,64,0,62,128,0,62,128,0,60,128,0, + 29,0,0,14,0,0,18,36,108,20,0,247,3,0,0,15, + 0,0,63,0,0,223,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,31,0,31,63,128,31,71,128,31,135,192, + 31,135,192,31,7,192,31,7,192,31,7,192,31,7,128,31, + 7,128,31,15,0,31,15,0,31,14,0,31,12,0,31,24, + 0,31,48,0,31,96,0,31,128,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,30, + 0,0,56,0,0,224,0,0,19,36,108,20,0,247,7,14, + 0,15,159,0,15,159,0,15,159,0,7,14,0,0,0,0, + 0,0,0,0,0,0,255,207,224,63,3,0,31,3,0,31, + 2,0,15,2,0,15,130,0,15,132,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,248,0,1,240,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 32,0,0,64,0,12,64,0,30,64,0,62,64,0,62,128, + 0,60,128,0,29,0,0,14,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 28 + Calculated Max Values w=33 h=37 x= 5 y=12 dx=37 dy= 0 ascent=29 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =28 descent= 0 + X Font ascent =28 descent= 0 + Max Font ascent =29 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29n[1232] U8G_SECTION(".progmem.u8g_font_osb29n") = { + 0,107,49,223,245,28,0,0,0,0,42,57,0,29,248,28, + 0,14,16,32,19,3,12,3,0,7,128,7,128,199,24,227, + 60,242,124,122,248,7,128,7,128,250,248,242,124,227,60,199, + 24,7,128,7,128,3,0,33,33,165,37,2,251,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,255,255,255,255,128,255,255,255, + 255,128,255,255,255,255,128,0,1,192,0,0,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,7,13,13,10,2,249,120,252,252,254,254,126,6,4, + 4,8,24,96,192,10,4,8,14,2,8,255,192,255,192,255, + 192,255,192,6,6,6,10,2,0,120,252,252,252,252,120,13, + 37,74,17,2,248,0,24,0,56,0,56,0,48,0,112,0, + 112,0,96,0,96,0,224,0,224,0,192,1,192,1,192,1, + 128,3,128,3,128,3,128,3,0,7,0,7,0,6,0,14, + 0,14,0,12,0,12,0,28,0,28,0,24,0,56,0,56, + 0,48,0,112,0,112,0,112,0,96,0,224,0,224,0,18, + 28,84,22,2,1,3,240,0,14,28,0,14,28,0,28,14, + 0,60,15,0,60,15,0,124,15,128,124,15,128,124,15,128, + 252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,124,15, + 128,124,15,128,124,15,128,60,15,0,60,15,0,28,14,0, + 12,28,0,14,28,0,3,240,0,13,28,56,22,5,0,3, + 128,7,128,15,128,255,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,255,248,17,28,84,22,2,1,15,248,0, + 24,62,0,48,63,0,112,31,0,240,31,128,240,31,128,252, + 31,128,252,31,128,254,31,128,126,63,0,60,63,0,0,126, + 0,0,252,0,0,248,0,1,224,0,3,128,0,6,0,0, + 12,0,128,24,0,128,16,0,128,32,0,128,47,1,128,127, + 255,128,127,255,128,71,255,0,67,255,0,65,254,0,64,252, + 0,17,28,84,22,2,1,15,248,0,24,62,0,48,63,0, + 48,31,0,112,31,128,120,31,128,124,31,128,124,31,128,124, + 31,128,60,31,0,0,31,0,0,62,0,0,120,0,15,192, + 0,0,120,0,0,62,0,0,63,0,0,31,0,16,31,128, + 124,31,128,252,31,128,252,31,128,252,31,128,248,31,128,240, + 63,0,112,62,0,56,124,0,31,248,0,18,28,84,22,2, + 0,0,124,0,0,124,0,0,252,0,0,252,0,1,252,0, + 1,252,0,3,252,0,3,252,0,6,252,0,6,252,0,12, + 252,0,12,252,0,24,252,0,24,252,0,48,252,0,48,252, + 0,96,252,0,96,252,0,192,252,0,255,255,192,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,15,255,192,17,29,87,22,3,0,0,6,0,112,28, + 0,127,252,0,127,248,0,127,224,0,127,192,0,126,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,103,224,0,104, + 120,0,112,62,0,96,62,0,96,31,0,0,31,0,0,31, + 128,0,31,128,56,31,128,124,31,128,252,31,128,252,31,128, + 248,31,0,240,31,0,224,30,0,96,62,0,48,124,0,31, + 240,0,18,29,87,22,3,0,0,32,0,3,220,0,7,6, + 0,14,6,0,30,15,0,60,31,0,60,63,0,124,63,0, + 124,62,0,124,28,0,252,0,0,252,0,0,252,0,0,253, + 248,0,255,30,0,254,31,0,252,15,128,252,15,128,252,15, + 192,252,15,192,252,15,192,124,15,192,124,15,192,124,15,192, + 60,15,128,28,15,128,30,15,0,14,30,0,3,252,0,17, + 28,84,22,3,0,103,135,0,111,199,0,127,227,128,127,241, + 128,127,249,128,127,255,128,96,125,128,64,1,0,64,3,0, + 64,3,0,192,6,0,0,4,0,0,12,0,0,24,0,0, + 56,0,0,112,0,0,112,0,0,240,0,1,240,0,3,224, + 0,3,224,0,3,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,3,192,0,19,29,87,22,2,0,0, + 64,0,7,184,0,28,6,0,56,3,0,112,1,0,112,1, + 128,240,1,128,240,1,128,248,1,128,252,3,0,255,2,0, + 127,196,0,127,248,0,63,252,0,31,255,0,15,255,128,27, + 255,128,48,255,192,96,63,192,96,15,192,224,3,224,224,1, + 192,224,1,192,224,1,192,224,1,192,112,1,128,56,1,0, + 28,6,0,15,252,0,18,28,84,22,3,1,15,240,0,30, + 28,0,60,30,0,124,14,0,124,15,0,252,15,128,252,15, + 128,252,15,128,252,15,128,252,15,192,252,15,192,124,15,192, + 124,15,192,62,31,192,30,63,192,7,239,192,0,15,192,0, + 15,192,0,15,192,30,15,128,31,15,128,63,15,128,63,15, + 0,62,15,0,56,30,0,24,28,0,24,56,0,15,240,0 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=38 h=37 x= 5 y=21 dx=41 dy= 0 ascent=31 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x=-2 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =29 descent=-9 + Max Font ascent =31 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29r[7481] U8G_SECTION(".progmem.u8g_font_osb29r") = { + 0,107,49,223,245,29,9,166,21,115,32,127,247,31,247,29, + 247,0,0,0,11,0,0,6,28,28,10,2,1,120,252,252, + 252,252,252,252,120,120,120,120,120,48,48,48,48,48,48,48, + 48,0,0,120,252,252,252,252,120,10,9,18,16,3,20,243, + 192,243,192,243,192,243,192,243,192,243,192,97,128,97,128,97, + 128,22,28,84,28,3,0,1,192,224,1,192,224,1,192,224, + 1,192,224,1,128,192,1,128,192,1,128,192,3,129,252,255, + 255,252,255,255,252,3,129,128,3,1,128,3,1,128,7,3, + 128,7,3,128,7,3,128,7,3,128,6,3,0,255,255,252, + 255,255,252,255,255,252,14,7,0,14,7,0,14,6,0,12, + 6,0,12,6,0,28,14,0,28,14,0,18,34,102,22,2, + 253,1,16,0,1,16,0,1,16,0,7,252,0,29,19,0, + 57,17,128,49,16,192,113,16,192,113,17,192,113,19,192,121, + 23,192,127,23,128,127,19,0,63,144,0,63,240,0,31,240, + 0,15,252,0,7,254,0,1,255,0,1,255,128,1,63,128, + 121,31,192,249,23,192,249,19,192,249,17,192,225,17,192,193, + 17,192,97,17,128,97,19,0,57,22,0,15,60,0,1,208, + 0,1,16,0,1,16,0,26,29,116,32,3,0,4,0,12, + 0,27,0,8,0,49,128,24,0,113,192,16,0,113,192,48, + 0,241,224,96,0,241,224,96,0,241,224,192,0,241,224,128, + 0,241,225,128,0,241,225,0,0,113,195,0,0,113,194,0, + 0,59,134,0,0,30,12,0,0,0,12,28,0,0,24,119, + 0,0,16,227,128,0,48,227,128,0,33,227,192,0,97,227, + 192,0,65,227,192,0,193,227,192,1,129,227,192,1,129,227, + 192,3,1,227,128,2,0,227,128,6,0,99,0,4,0,62, + 0,27,28,112,31,2,1,0,254,0,0,1,195,0,0,3, + 129,0,0,7,129,128,0,7,129,128,0,7,129,128,0,7, + 131,128,0,7,195,0,0,7,198,0,0,3,236,0,0,3, + 248,0,0,1,240,0,0,0,248,0,0,1,252,31,224,7, + 124,3,128,14,62,3,0,28,63,3,0,56,31,134,0,120, + 15,134,0,120,7,196,0,248,7,232,0,248,3,248,0,248, + 1,240,0,252,1,248,0,254,0,248,32,127,1,252,64,63, + 254,127,192,31,248,31,128,4,9,9,10,3,20,240,240,240, + 240,240,240,96,96,96,11,35,70,13,2,249,0,96,0,192, + 1,128,3,0,6,0,12,0,28,0,24,0,56,0,56,0, + 120,0,120,0,120,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,120,0,120,0,120,0,120,0, + 56,0,56,0,28,0,12,0,14,0,7,0,3,0,1,128, + 0,96,11,36,72,14,1,249,192,0,96,0,48,0,24,0, + 12,0,14,0,7,0,7,0,3,128,3,128,3,192,3,192, + 3,192,3,192,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,192,3,192,3,192,3,128,3,128,7,0, + 7,0,6,0,12,0,28,0,56,0,112,0,192,0,128,0, + 14,16,32,19,3,12,3,0,7,128,7,128,199,24,227,60, + 242,124,122,248,7,128,7,128,250,248,242,124,227,60,199,24, + 7,128,7,128,3,0,33,33,165,37,2,251,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,7,13,13,10,2,249,120,252,252,254,254,126,6,4,4, + 8,24,96,192,10,4,8,14,2,8,255,192,255,192,255,192, + 255,192,6,6,6,10,2,0,120,252,252,252,252,120,13,37, + 74,17,2,248,0,24,0,56,0,56,0,48,0,112,0,112, + 0,96,0,96,0,224,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,128,3,0,7,0,7,0,6,0,14,0, + 14,0,12,0,12,0,28,0,28,0,24,0,56,0,56,0, + 48,0,112,0,112,0,112,0,96,0,224,0,224,0,18,28, + 84,22,2,1,3,240,0,14,28,0,14,28,0,28,14,0, + 60,15,0,60,15,0,124,15,128,124,15,128,124,15,128,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15, + 192,252,15,192,252,15,192,252,15,192,252,15,192,124,15,128, + 124,15,128,124,15,128,60,15,0,60,15,0,28,14,0,12, + 28,0,14,28,0,3,240,0,13,28,56,22,5,0,3,128, + 7,128,15,128,255,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,248,17,28,84,22,2,1,15,248,0,24, + 62,0,48,63,0,112,31,0,240,31,128,240,31,128,252,31, + 128,252,31,128,254,31,128,126,63,0,60,63,0,0,126,0, + 0,252,0,0,248,0,1,224,0,3,128,0,6,0,0,12, + 0,128,24,0,128,16,0,128,32,0,128,47,1,128,127,255, + 128,127,255,128,71,255,0,67,255,0,65,254,0,64,252,0, + 17,28,84,22,2,1,15,248,0,24,62,0,48,63,0,48, + 31,0,112,31,128,120,31,128,124,31,128,124,31,128,124,31, + 128,60,31,0,0,31,0,0,62,0,0,120,0,15,192,0, + 0,120,0,0,62,0,0,63,0,0,31,0,16,31,128,124, + 31,128,252,31,128,252,31,128,252,31,128,248,31,128,240,63, + 0,112,62,0,56,124,0,31,248,0,18,28,84,22,2,0, + 0,124,0,0,124,0,0,252,0,0,252,0,1,252,0,1, + 252,0,3,252,0,3,252,0,6,252,0,6,252,0,12,252, + 0,12,252,0,24,252,0,24,252,0,48,252,0,48,252,0, + 96,252,0,96,252,0,192,252,0,255,255,192,0,252,0,0, + 252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252, + 0,15,255,192,17,29,87,22,3,0,0,6,0,112,28,0, + 127,252,0,127,248,0,127,224,0,127,192,0,126,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,103,224,0,104,120, + 0,112,62,0,96,62,0,96,31,0,0,31,0,0,31,128, + 0,31,128,56,31,128,124,31,128,252,31,128,252,31,128,248, + 31,0,240,31,0,224,30,0,96,62,0,48,124,0,31,240, + 0,18,29,87,22,3,0,0,32,0,3,220,0,7,6,0, + 14,6,0,30,15,0,60,31,0,60,63,0,124,63,0,124, + 62,0,124,28,0,252,0,0,252,0,0,252,0,0,253,248, + 0,255,30,0,254,31,0,252,15,128,252,15,128,252,15,192, + 252,15,192,252,15,192,124,15,192,124,15,192,124,15,192,60, + 15,128,28,15,128,30,15,0,14,30,0,3,252,0,17,28, + 84,22,3,0,103,135,0,111,199,0,127,227,128,127,241,128, + 127,249,128,127,255,128,96,125,128,64,1,0,64,3,0,64, + 3,0,192,6,0,0,4,0,0,12,0,0,24,0,0,56, + 0,0,112,0,0,112,0,0,240,0,1,240,0,3,224,0, + 3,224,0,3,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,3,192,0,19,29,87,22,2,0,0,64, + 0,7,184,0,28,6,0,56,3,0,112,1,0,112,1,128, + 240,1,128,240,1,128,248,1,128,252,3,0,255,2,0,127, + 196,0,127,248,0,63,252,0,31,255,0,15,255,128,27,255, + 128,48,255,192,96,63,192,96,15,192,224,3,224,224,1,192, + 224,1,192,224,1,192,224,1,192,112,1,128,56,1,0,28, + 6,0,15,252,0,18,28,84,22,3,1,15,240,0,30,28, + 0,60,30,0,124,14,0,124,15,0,252,15,128,252,15,128, + 252,15,128,252,15,128,252,15,192,252,15,192,124,15,192,124, + 15,192,62,31,192,30,63,192,7,239,192,0,15,192,0,15, + 192,0,15,192,30,15,128,31,15,128,63,15,128,63,15,0, + 62,15,0,56,30,0,24,28,0,24,56,0,15,240,0,6, + 19,19,10,2,0,120,252,252,252,252,120,0,0,0,0,0, + 0,0,120,252,252,252,252,120,7,26,26,10,2,249,120,252, + 252,252,252,120,0,0,0,0,0,0,0,120,252,252,254,254, + 126,6,4,4,8,16,96,192,29,33,132,36,3,250,0,0, + 0,24,0,0,0,120,0,0,1,240,0,0,7,192,0,0, + 31,128,0,0,62,0,0,0,248,0,0,3,224,0,0,15, + 192,0,0,31,0,0,0,124,0,0,1,240,0,0,7,192, + 0,0,15,128,0,0,62,0,0,0,248,0,0,0,240,0, + 0,0,124,0,0,0,62,0,0,0,15,128,0,0,3,224, + 0,0,0,248,0,0,0,124,0,0,0,31,0,0,0,7, + 192,0,0,1,240,0,0,0,252,0,0,0,62,0,0,0, + 15,128,0,0,3,224,0,0,1,248,0,0,0,120,0,0, + 0,16,32,11,44,36,2,5,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255, + 255,255,255,255,29,33,132,36,4,250,192,0,0,0,240,0, + 0,0,124,0,0,0,31,0,0,0,15,192,0,0,3,224, + 0,0,0,248,0,0,0,62,0,0,0,31,128,0,0,7, + 192,0,0,1,240,0,0,0,124,0,0,0,31,0,0,0, + 15,128,0,0,3,224,0,0,0,248,0,0,0,120,0,0, + 1,240,0,0,3,224,0,0,15,128,0,0,62,0,0,0, + 248,0,0,1,240,0,0,7,192,0,0,31,0,0,0,124, + 0,0,1,248,0,0,3,224,0,0,15,128,0,0,62,0, + 0,0,252,0,0,0,240,0,0,0,64,0,0,0,12,28, + 56,18,3,1,63,128,119,224,65,224,129,240,129,240,129,240, + 129,240,129,224,193,224,67,192,3,128,7,0,6,0,12,0, + 8,0,24,0,16,64,16,64,16,64,24,128,15,0,0,0, + 7,128,15,192,15,192,15,192,15,192,7,128,28,29,116,32, + 2,0,0,2,0,0,0,125,240,0,1,192,28,0,3,0, + 6,0,6,0,3,0,12,0,1,128,24,15,61,192,56,28, + 188,192,48,56,248,224,112,112,120,224,112,240,120,96,225,224, + 120,112,225,224,248,112,225,224,240,112,227,224,240,112,227,192, + 240,112,227,192,240,112,227,193,224,96,227,193,224,224,99,193, + 224,192,99,195,224,192,115,194,225,128,49,228,227,0,56,120, + 124,0,28,0,0,0,12,0,0,0,7,0,0,0,3,128, + 24,0,0,255,224,0,26,29,116,29,2,0,0,4,0,0, + 0,6,0,0,0,14,0,0,0,14,0,0,0,15,0,0, + 0,31,0,0,0,31,0,0,0,31,128,0,0,63,128,0, + 0,47,128,0,0,47,192,0,0,111,192,0,0,79,192,0, + 0,71,192,0,0,199,224,0,0,135,224,0,0,131,224,0, + 1,131,240,0,1,3,240,0,3,1,240,0,3,255,248,0, + 2,1,248,0,6,0,248,0,6,0,252,0,4,0,252,0, + 12,0,252,0,12,0,124,0,30,0,254,0,255,199,255,192, + 22,28,84,27,3,0,255,255,0,31,131,192,31,131,224,31, + 129,240,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,240,31,129,240,31,131,192,31,131,128,31,252,0, + 31,131,128,31,129,224,31,128,240,31,128,248,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,248,31,128, + 248,31,129,240,31,131,224,255,255,128,21,28,84,26,3,1, + 1,254,48,7,3,48,14,1,240,30,0,240,60,0,240,60, + 0,112,124,0,112,124,0,48,124,0,48,252,0,48,252,0, + 48,252,0,16,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,24,252,0,24,124,0,16,124,0,16,124, + 0,16,60,0,48,60,0,32,30,0,96,14,0,192,7,1, + 128,1,254,0,25,28,112,30,3,0,255,255,128,0,31,128, + 224,0,31,128,112,0,31,128,56,0,31,128,60,0,31,128, + 30,0,31,128,30,0,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,0,31,128,31,0,31,128,31,0,31,128, + 30,0,31,128,30,0,31,128,60,0,31,128,56,0,31,128, + 112,0,31,128,224,0,255,255,128,0,22,28,84,26,2,0, + 255,255,252,15,192,124,15,192,60,15,192,28,15,192,28,15, + 192,12,15,192,12,15,192,12,15,193,4,15,193,0,15,195, + 0,15,195,0,15,199,0,15,255,0,15,199,0,15,195,0, + 15,195,0,15,193,4,15,193,4,15,193,4,15,192,12,15, + 192,12,15,192,12,15,192,28,15,192,28,15,192,60,15,192, + 252,255,255,252,22,28,84,25,2,0,255,255,252,31,128,252, + 31,128,124,31,128,60,31,128,28,31,128,28,31,128,28,31, + 128,12,31,129,12,31,129,12,31,131,12,31,131,0,31,135, + 0,31,255,0,31,143,0,31,135,0,31,131,0,31,129,0, + 31,129,0,31,129,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,255,252,0,24,29, + 87,28,3,0,0,16,0,1,239,24,3,3,152,14,0,248, + 30,0,248,28,0,120,60,0,56,60,0,56,124,0,24,124, + 0,24,124,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,31,255,252,1,248,252,1,248,252,1,248,252,1,248, + 124,1,248,124,1,248,124,1,248,60,1,248,60,1,248,30, + 3,152,14,3,24,7,6,24,1,220,24,27,28,112,31,2, + 0,255,251,255,224,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,255,255,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,255,251,255, + 224,13,28,56,17,2,0,255,248,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,255,248,18, + 28,84,20,1,0,7,255,192,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,16,126,0,124,126,0,252,126, + 0,252,126,0,252,126,0,248,126,0,240,124,0,224,124,0, + 96,120,0,32,240,0,31,224,0,26,28,112,29,2,0,255, + 241,255,0,31,128,120,0,31,128,112,0,31,128,96,0,31, + 128,64,0,31,128,192,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,134,0,0,31,142,0,0,31,159,0,0,31, + 191,0,0,31,255,128,0,31,223,128,0,31,159,192,0,31, + 143,192,0,31,143,224,0,31,135,224,0,31,135,240,0,31, + 131,240,0,31,131,248,0,31,129,248,0,31,129,252,0,31, + 128,252,0,31,128,254,0,31,128,254,0,255,243,255,192,22, + 28,84,25,2,0,255,248,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,12,31,128,12,31,128,12,31,128, + 12,31,128,28,31,128,28,31,128,60,31,128,60,31,128,124, + 31,128,252,31,129,252,255,255,252,31,28,112,34,2,0,255, + 128,15,254,15,128,15,224,15,192,15,224,15,192,15,224,15, + 192,15,224,15,224,23,224,15,224,23,224,15,240,23,224,13, + 240,23,224,13,240,39,224,13,248,39,224,12,248,39,224,12, + 248,39,224,12,252,71,224,12,124,71,224,12,124,71,224,12, + 126,71,224,12,62,135,224,12,63,135,224,12,63,135,224,12, + 31,135,224,12,31,7,224,12,31,7,224,12,15,7,224,12, + 15,7,224,28,14,7,224,62,6,7,224,255,134,63,254,27, + 28,112,30,2,0,255,128,255,224,31,192,63,0,31,192,30, + 0,15,224,12,0,7,240,12,0,7,240,12,0,7,248,12, + 0,7,248,12,0,6,252,12,0,6,254,12,0,6,126,12, + 0,6,63,12,0,6,63,140,0,6,31,140,0,6,31,204, + 0,6,15,236,0,6,7,236,0,6,7,252,0,6,3,252, + 0,6,1,252,0,6,1,252,0,6,0,252,0,6,0,252, + 0,6,0,124,0,6,0,60,0,15,0,60,0,31,128,28, + 0,255,224,12,0,22,28,84,27,3,1,1,254,0,3,3, + 0,6,1,128,14,1,192,28,0,224,60,0,240,60,0,240, + 124,0,248,124,0,248,124,0,248,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,124,0,248,124,0,248,124,0,248,60,0,240,60,0,240, + 28,0,224,14,1,192,6,1,128,3,3,0,1,254,0,23, + 28,84,27,2,0,255,255,128,31,129,240,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,248,0,22,37,111,27,3,248,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,56, + 240,60,76,240,30,133,224,14,135,224,7,135,192,3,135,132, + 1,238,4,0,22,4,0,6,4,0,7,12,0,7,12,0, + 7,252,0,7,248,0,7,248,0,3,240,0,1,224,25,28, + 112,28,2,0,255,255,0,0,31,135,192,0,31,131,224,0, + 31,129,240,0,31,129,248,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,240,0,31,131,224,0, + 31,135,192,0,31,254,0,0,31,135,128,0,31,131,192,0, + 31,129,240,0,31,129,240,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,248,128,31,129,248,128, + 31,129,248,128,31,129,248,128,31,129,249,0,31,128,249,0, + 255,248,126,0,18,29,87,23,3,0,1,0,0,31,225,128, + 48,57,128,96,31,128,96,15,128,224,7,128,240,3,128,240, + 3,128,248,1,128,254,1,128,255,1,128,127,192,0,127,224, + 0,63,248,0,31,252,0,7,255,0,3,255,0,128,255,128, + 128,127,128,192,31,192,192,15,192,192,7,192,224,3,192,224, + 1,192,240,1,128,248,1,128,248,3,0,206,2,0,135,188, + 0,24,28,84,27,2,0,255,255,255,252,126,63,248,126,31, + 240,126,15,224,126,15,224,126,7,192,126,7,192,126,3,192, + 126,3,192,126,3,128,126,3,128,126,2,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,7,255,224,26,28,112,30,3, + 0,255,240,127,192,31,128,31,0,31,128,14,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,15,128,12,0,15,192,12, + 0,7,192,24,0,7,224,56,0,1,252,240,0,0,255,192, + 0,27,28,112,30,2,0,255,248,127,224,31,192,15,0,15, + 192,6,0,15,192,6,0,7,224,4,0,7,224,12,0,7, + 224,8,0,3,240,8,0,3,240,8,0,3,240,24,0,1, + 248,16,0,1,248,16,0,1,252,48,0,0,252,32,0,0, + 252,32,0,0,254,96,0,0,126,64,0,0,126,64,0,0, + 127,192,0,0,63,128,0,0,63,128,0,0,63,128,0,0, + 31,0,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,14,0,0,38,28,140,41,2,0,255,243,255, + 207,252,31,192,126,1,224,15,192,126,0,192,15,192,62,0, + 192,7,192,63,0,128,7,224,63,0,128,7,224,63,1,128, + 7,224,63,129,0,3,240,63,129,0,3,240,127,131,0,3, + 240,111,195,0,1,248,79,194,0,1,248,207,194,0,1,248, + 199,230,0,0,252,135,230,0,0,252,135,228,0,0,253,131, + 244,0,0,127,131,252,0,0,127,3,248,0,0,127,3,248, + 0,0,127,1,248,0,0,63,1,248,0,0,62,1,240,0, + 0,62,0,240,0,0,30,0,240,0,0,28,0,240,0,0, + 28,0,96,0,0,12,0,96,0,26,28,112,29,2,0,255, + 241,255,128,31,224,124,0,15,224,56,0,15,224,48,0,7, + 240,96,0,7,240,96,0,3,248,192,0,3,248,128,0,1, + 253,128,0,0,255,0,0,0,254,0,0,0,126,0,0,0, + 127,0,0,0,63,0,0,0,63,128,0,0,31,128,0,0, + 63,192,0,0,111,192,0,0,79,224,0,0,199,224,0,1, + 135,240,0,1,131,240,0,3,3,248,0,2,1,248,0,6, + 1,252,0,14,0,252,0,30,1,254,0,255,199,255,192,25, + 28,112,28,2,0,255,240,255,128,31,192,60,0,31,192,24, + 0,15,192,24,0,15,224,24,0,7,224,16,0,7,224,48, + 0,3,240,32,0,3,240,32,0,1,248,96,0,1,248,64, + 0,1,252,64,0,0,252,192,0,0,254,128,0,0,127,128, + 0,0,127,128,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,1,255,224,0,20,28,84,25,3,0,127,255,240,126,7, + 240,124,7,224,120,15,224,112,15,192,96,31,192,96,31,128, + 96,63,128,64,63,0,64,127,0,0,254,0,0,254,0,1, + 252,0,1,248,0,3,248,0,3,240,0,7,240,0,7,224, + 16,15,224,16,15,192,16,31,192,48,31,128,48,63,128,112, + 63,0,112,127,0,240,126,1,240,254,7,240,255,255,240,9, + 35,70,15,3,249,255,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,128,13,37,74,17,2, + 248,192,0,224,0,224,0,96,0,112,0,112,0,48,0,56, + 0,56,0,24,0,24,0,28,0,28,0,12,0,14,0,14, + 0,6,0,6,0,7,0,7,0,3,0,3,128,3,128,1, + 128,1,192,1,192,0,192,0,192,0,224,0,224,0,96,0, + 112,0,112,0,48,0,48,0,56,0,56,9,35,70,15,3, + 249,255,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,18,14,42,22,2,15,0,192,0, + 0,192,0,1,224,0,3,240,0,3,240,0,7,56,0,7, + 56,0,14,28,0,28,14,0,28,14,0,56,7,0,56,7, + 0,112,3,128,224,1,192,20,3,9,20,0,249,255,255,240, + 255,255,240,255,255,240,7,7,7,17,3,21,224,240,240,120, + 60,12,6,17,19,57,20,2,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,18,28,84,20,0,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,60,0,31,78,0,31,143,0,31,135,128,31, + 7,128,31,7,128,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,128,31,7,128, + 31,135,0,25,143,0,16,206,0,16,120,0,14,19,38,18, + 2,0,7,224,14,48,60,24,60,28,120,60,120,124,248,124, + 248,120,248,48,248,0,248,0,248,0,248,0,120,4,120,4, + 56,4,28,8,14,16,7,224,18,28,84,21,2,0,0,254, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,15,62,0,28,190,0,60, + 126,0,120,126,0,120,62,0,120,62,0,248,62,0,248,62, + 0,248,62,0,248,62,0,248,62,0,248,62,0,248,62,0, + 120,62,0,120,62,0,120,126,0,60,126,0,28,190,0,15, + 63,192,14,19,38,18,2,0,7,192,28,224,56,112,56,120, + 120,120,120,124,248,124,248,124,248,124,255,252,248,0,248,0, + 248,0,120,4,120,4,56,8,60,8,30,16,7,224,14,28, + 56,13,1,0,1,240,7,24,15,28,30,60,30,124,62,124, + 62,56,62,0,62,0,255,192,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,192,19,28,84,22, + 2,247,7,225,192,30,118,96,60,60,224,60,60,224,124,62, + 192,124,62,0,124,62,0,124,62,0,60,60,0,60,60,0, + 30,120,0,7,224,0,56,0,0,96,0,0,96,0,0,127, + 224,0,127,254,0,127,255,0,63,255,128,31,255,128,96,7, + 128,192,3,128,128,3,128,128,3,0,128,3,0,64,6,0, + 48,28,0,15,240,0,20,28,84,22,1,0,255,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,30,0,31,111,0,31,135,128, + 31,135,192,31,135,192,31,7,192,31,7,192,31,7,192,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,192,255,223,240, + 8,28,28,12,2,0,60,126,126,126,126,60,0,0,0,252, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,255,12,37,74,13,254,247,1,224,3,240,3,240,3,240, + 3,240,1,224,0,0,0,0,0,0,15,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,123,224,251,224,251,224,243,192,227,192,103,128, + 30,0,20,28,84,21,1,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,31,192,31,7,0,31,6,0,31,4,0,31, + 8,0,31,16,0,31,16,0,31,48,0,31,120,0,31,248, + 0,31,188,0,31,60,0,31,30,0,31,31,0,31,15,0, + 31,15,128,31,15,128,31,15,192,255,223,240,11,28,56,12, + 1,0,255,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,255,224,27,19,76,30,2,0, + 254,60,30,0,62,222,111,0,63,31,143,0,63,31,143,128, + 63,31,143,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,255,63,223,224,19,19,57,22, + 2,0,254,60,0,62,222,0,63,15,0,63,15,128,63,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,255,191,224,16,19,38,20,2, + 0,7,192,12,112,28,56,56,60,120,30,120,30,248,30,248, + 31,248,31,248,31,248,31,248,31,248,30,120,30,120,30,56, + 60,28,56,12,112,7,192,18,28,84,21,1,247,255,60,0, + 31,78,0,31,143,0,31,135,128,31,7,128,31,7,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,128,31,7,128,31,135,128,31,143,0, + 31,78,0,31,60,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,255,192, + 0,17,28,84,20,2,247,7,130,0,28,194,0,60,102,0, + 120,126,0,120,62,0,120,62,0,248,62,0,248,62,0,248, + 62,0,248,62,0,248,62,0,248,62,0,248,62,0,120,62, + 0,120,62,0,120,126,0,60,126,0,28,190,0,15,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,255,128,14,19,38,17,2, + 0,254,48,62,120,62,188,63,60,63,124,62,124,62,56,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,13,19,38,16,2,0,31,16,97, + 208,96,112,224,48,224,48,240,16,248,0,126,0,127,128,63, + 224,15,240,135,240,193,248,192,120,224,56,224,24,240,16,156, + 48,135,192,12,27,54,14,1,0,6,0,6,0,6,0,6, + 0,6,0,14,0,30,0,62,0,255,224,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,16,62, + 16,62,16,62,16,62,16,62,32,62,32,31,192,7,128,19, + 19,57,21,1,0,254,63,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 31,128,62,31,128,30,47,128,30,79,128,7,143,224,18,19, + 57,20,1,0,255,143,192,62,3,0,30,2,0,30,2,0, + 31,2,0,15,4,0,15,4,0,15,132,0,7,136,0,7, + 200,0,7,216,0,3,208,0,3,240,0,3,240,0,1,224, + 0,1,224,0,0,224,0,0,192,0,0,192,0,28,19,76, + 30,1,0,255,63,231,240,62,15,129,192,30,7,129,128,30, + 7,129,128,31,7,193,0,15,7,193,0,15,7,195,0,15, + 143,226,0,7,137,226,0,7,137,230,0,7,217,244,0,3, + 208,244,0,3,240,248,0,3,240,248,0,1,224,248,0,1, + 224,112,0,1,192,112,0,0,192,112,0,0,192,32,0,18, + 19,57,20,1,0,255,63,128,126,14,0,62,12,0,31,8, + 0,31,16,0,15,176,0,15,160,0,7,192,0,3,192,0, + 3,224,0,1,240,0,3,240,0,2,248,0,4,248,0,12, + 124,0,8,126,0,24,62,0,56,63,0,254,127,192,19,28, + 84,20,0,247,255,207,224,63,3,128,31,3,0,31,2,0, + 15,2,0,15,130,0,15,130,0,7,196,0,7,196,0,3, + 196,0,3,232,0,3,232,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,112,0,0,96,0,0,96,0,0,32,0, + 0,64,0,12,64,0,30,64,0,62,64,0,62,128,0,60, + 128,0,29,0,0,14,0,0,14,19,38,17,1,0,127,252, + 120,124,112,248,96,248,65,240,65,224,67,224,3,192,7,192, + 7,128,15,128,31,4,31,4,62,4,62,12,124,12,120,28, + 248,60,255,252,12,35,70,16,2,249,1,240,7,128,15,0, + 15,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,30,0,30,0,56,0,224,0,56,0, + 30,0,30,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,15,0,15,0,7,128,1,240, + 3,36,36,11,4,248,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,12,37,74,16,2,248, + 128,0,240,0,28,0,15,0,15,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 7,128,3,192,0,112,3,192,7,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,0,15,0,28,0,248,0,128,0,21,8,24,25,2,6, + 62,0,48,127,192,16,255,240,8,135,252,8,129,255,24,128, + 127,248,192,31,240,96,3,224,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 9 y=28 dx=52 dy= 0 ascent=45 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x=-2 y=-12 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =35 descent=-10 + Max Font ascent =45 descent=-12 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35[22095] U8G_SECTION(".progmem.u8g_font_osb35") = { + 0,133,60,215,242,35,12,218,29,222,32,255,246,45,244,35, + 246,0,0,0,13,0,0,8,34,34,14,3,1,126,126,255, + 255,255,255,255,255,126,126,126,126,60,60,60,60,60,24,24, + 24,24,24,24,24,24,0,0,0,126,255,255,255,255,126,12, + 12,24,18,3,23,32,64,241,224,249,240,249,240,249,240,249, + 240,249,240,112,224,112,224,112,224,112,224,112,224,28,34,136, + 34,3,0,0,112,14,0,0,112,14,0,0,112,14,0,0, + 112,14,0,0,240,30,0,0,224,28,0,0,224,28,0,0, + 224,28,0,0,224,28,0,255,255,255,240,255,255,255,240,255, + 255,255,240,1,192,56,0,1,192,56,0,1,192,56,0,1, + 192,56,0,3,192,56,0,3,128,120,0,3,128,112,0,3, + 128,112,0,3,128,112,0,3,128,112,0,255,255,255,224,255, + 255,255,224,255,255,255,224,7,0,224,0,7,0,224,0,7, + 0,224,0,7,0,224,0,15,1,224,0,14,1,224,0,14, + 1,192,0,14,1,192,0,14,1,192,0,23,42,126,28,2, + 252,0,195,0,0,195,0,0,195,0,0,195,0,3,255,192, + 7,195,112,28,195,24,60,195,12,56,195,14,120,195,14,120, + 195,30,120,195,62,124,195,126,126,195,126,127,195,124,127,195, + 56,63,243,0,63,251,0,31,255,0,31,255,128,7,255,192, + 3,255,240,0,255,248,0,255,248,0,223,252,0,199,252,124, + 195,254,124,195,254,252,195,126,252,195,62,248,195,30,240,195, + 30,224,195,28,96,195,28,112,195,56,56,195,56,28,195,96, + 7,255,192,0,195,0,0,195,0,0,195,0,0,195,0,33, + 35,175,41,4,0,0,0,0,48,0,15,192,0,96,0,60, + 240,0,224,0,56,112,0,192,0,120,120,1,128,0,120,120, + 1,128,0,248,124,3,0,0,248,124,7,0,0,248,124,6, + 0,0,248,124,14,0,0,248,124,12,0,0,248,124,24,0, + 0,120,120,24,0,0,120,120,48,0,0,56,240,112,0,0, + 28,224,96,0,0,15,192,192,0,0,0,0,192,0,0,0, + 1,128,240,0,0,3,131,156,0,0,3,7,158,0,0,7, + 15,15,0,0,6,15,15,0,0,12,31,15,128,0,12,31, + 15,128,0,24,31,15,128,0,56,31,15,128,0,48,31,15, + 128,0,96,31,15,128,0,96,31,15,128,0,192,15,15,0, + 1,192,15,15,0,1,128,7,14,0,3,128,7,158,0,3, + 0,1,248,0,33,34,170,37,2,1,0,31,224,0,0,0, + 112,112,0,0,0,224,48,0,0,0,224,24,0,0,1,224, + 24,0,0,1,224,24,0,0,1,224,24,0,0,1,240,56, + 0,0,1,240,48,0,0,1,248,96,0,0,1,248,192,0, + 0,0,255,128,0,0,0,255,0,0,0,0,126,0,0,0, + 0,63,0,0,0,0,255,129,255,128,1,223,128,62,0,3, + 143,192,28,0,7,15,224,24,0,14,7,224,56,0,30,3, + 240,48,0,60,1,248,48,0,124,1,248,96,0,124,0,252, + 96,0,252,0,126,192,0,252,0,127,128,0,252,0,63,128, + 0,254,0,31,128,0,255,0,31,128,0,255,0,15,193,128, + 127,192,63,225,0,63,248,247,243,0,31,255,195,254,0,15, + 254,0,252,0,5,12,12,11,3,23,32,240,248,248,248,248, + 248,112,112,112,112,112,14,43,86,18,3,248,0,28,0,56, + 0,112,0,224,1,192,3,128,7,0,15,0,14,0,30,0, + 30,0,60,0,60,0,124,0,124,0,124,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 124,0,124,0,124,0,124,0,60,0,60,0,30,0,30,0, + 14,0,15,0,7,0,3,128,1,192,0,224,0,112,0,56, + 0,12,13,43,86,17,1,248,192,0,224,0,48,0,24,0, + 28,0,14,0,7,0,7,128,3,128,3,192,1,224,1,224, + 1,224,1,240,1,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 1,240,1,240,1,224,1,224,3,192,3,192,3,128,7,128, + 7,0,14,0,28,0,56,0,112,0,224,0,128,0,17,19, + 57,24,4,13,1,128,0,3,192,0,3,192,0,227,195,0, + 241,135,128,248,143,128,252,159,128,126,191,0,3,192,0,3, + 192,0,126,191,0,252,159,128,248,143,128,241,135,128,225,195, + 0,3,192,0,3,192,0,3,192,0,1,128,0,41,41,246, + 45,2,249,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,255,255,255,255,255,128,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,9,15,30,13,2,248,126, + 0,255,0,255,128,255,128,255,128,127,128,1,128,1,128,1, + 128,3,0,2,0,6,0,28,0,56,0,96,0,12,5,10, + 18,3,10,255,240,255,240,255,240,255,240,255,240,8,6,6, + 14,3,1,126,255,255,255,255,126,16,44,88,22,3,247,0, + 7,0,15,0,14,0,14,0,14,0,30,0,28,0,28,0, + 60,0,56,0,56,0,120,0,112,0,112,0,240,0,224,0, + 224,0,224,1,224,1,192,1,192,3,192,3,128,3,128,7, + 128,7,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,0,23,35,105,28,2,0,0,16,0, + 0,254,0,3,199,128,7,131,192,15,1,224,15,1,224,31, + 1,240,63,1,248,63,1,248,127,1,248,127,1,252,127,1, + 252,127,1,252,255,1,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,127,1,252,127,1,252,127,1,252,127,1,252,63,1, + 248,63,1,248,31,1,240,15,1,224,15,1,224,7,131,192, + 3,199,128,0,254,0,16,34,68,28,6,0,0,240,0,240, + 1,240,7,240,255,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,255,255,255,255, + 21,34,102,28,3,1,7,255,0,14,15,192,28,7,224,56, + 7,240,120,3,240,120,3,248,248,3,248,252,3,248,255,3, + 248,255,3,248,255,7,248,127,7,240,63,15,240,12,15,224, + 0,31,192,0,63,128,0,127,0,0,252,0,1,240,0,3, + 192,0,7,128,0,14,0,24,12,0,24,24,0,24,48,0, + 24,96,0,24,111,192,56,127,255,248,255,255,240,239,255,240, + 195,255,240,193,255,224,192,255,192,192,63,128,22,34,102,28, + 3,1,7,255,0,14,15,192,28,7,224,56,7,240,120,3, + 240,124,3,248,126,3,248,127,3,248,127,3,248,127,3,248, + 63,3,240,30,3,240,0,7,224,0,7,192,0,15,0,7, + 248,0,0,31,128,0,15,192,0,7,224,0,7,240,0,3, + 248,0,3,248,62,3,252,127,3,252,255,3,252,255,3,252, + 255,3,252,254,3,252,252,3,248,248,7,248,120,7,240,56, + 15,224,30,31,192,15,255,0,23,34,102,28,2,0,0,7, + 192,0,15,192,0,15,192,0,31,192,0,63,192,0,63,192, + 0,127,192,0,127,192,0,255,192,0,223,192,1,223,192,1, + 159,192,3,159,192,7,31,192,6,31,192,14,31,192,12,31, + 192,28,31,192,24,31,192,56,31,192,112,31,192,96,31,192, + 224,31,192,255,255,254,0,31,192,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,7,255, + 252,7,255,252,21,34,102,28,4,0,32,0,192,60,7,128, + 63,255,128,63,255,0,63,254,0,63,248,0,63,224,0,63, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,49,252,0,54,63,0,60,15,192,56,15,224,48,15,224, + 32,7,240,0,7,240,0,7,248,0,7,248,8,7,248,62, + 7,248,126,7,248,254,7,248,254,7,248,254,7,240,248,7, + 240,240,7,224,112,15,192,48,15,192,28,31,0,15,252,0, + 22,34,102,28,3,1,0,255,128,3,192,192,7,192,96,15, + 128,240,31,131,240,31,7,240,63,15,240,63,15,240,127,15, + 224,127,7,192,127,3,0,127,0,0,255,0,0,255,0,0, + 255,63,0,255,255,192,255,195,224,255,131,240,255,3,248,255, + 1,248,255,1,252,255,1,252,255,1,252,127,1,252,127,1, + 252,127,1,252,127,1,252,63,1,248,63,1,248,31,1,248, + 15,129,240,7,131,224,3,195,192,1,255,0,20,34,102,28, + 5,1,71,224,224,207,240,224,223,248,112,255,252,48,255,254, + 48,255,255,240,255,255,240,224,31,176,192,0,32,192,0,96, + 128,0,96,128,0,192,128,1,192,0,1,128,0,3,128,0, + 7,0,0,15,0,0,14,0,0,30,0,0,60,0,0,124, + 0,0,252,0,1,252,0,1,248,0,3,248,0,3,248,0, + 7,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,248,0,3,240,0,23,34,102,28,3,1,1,255, + 128,7,0,192,12,0,96,28,0,48,56,0,24,56,0,24, + 120,0,24,120,0,24,124,0,24,126,0,24,127,0,48,127, + 192,32,127,240,96,63,255,128,63,255,0,31,255,192,15,255, + 240,7,255,248,15,255,248,24,63,252,48,15,252,112,3,254, + 96,0,254,224,0,126,224,0,62,224,0,30,224,0,30,224, + 0,12,240,0,28,112,0,24,56,0,24,28,0,48,15,0, + 192,3,255,0,22,34,102,28,3,1,3,254,0,15,15,0, + 31,7,128,62,7,192,126,3,224,126,3,240,126,3,240,254, + 3,248,254,3,248,254,3,248,254,3,248,254,3,252,254,3, + 252,254,3,252,126,3,252,127,7,252,63,7,252,31,15,252, + 15,255,252,3,243,252,0,3,252,0,3,252,0,3,248,7, + 3,248,31,131,248,31,195,248,63,195,240,63,195,240,63,131, + 224,62,7,224,60,7,192,28,15,128,14,31,0,7,252,0, + 8,22,22,14,3,1,126,255,255,255,255,126,0,0,0,0, + 0,0,0,0,0,0,126,255,255,255,255,126,9,31,62,13, + 2,248,63,0,127,128,127,128,127,128,127,128,63,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,3,0,6,0,28,0,56,0,96,0, + 37,40,200,45,4,249,0,0,0,0,48,0,0,0,0,240, + 0,0,0,1,248,0,0,0,7,224,0,0,0,31,128,0, + 0,0,126,0,0,0,1,252,0,0,0,7,240,0,0,0, + 15,192,0,0,0,63,0,0,0,0,252,0,0,0,3,240, + 0,0,0,15,224,0,0,0,63,128,0,0,0,126,0,0, + 0,1,248,0,0,0,7,224,0,0,0,31,128,0,0,0, + 127,0,0,0,0,252,0,0,0,0,248,0,0,0,0,126, + 0,0,0,0,31,128,0,0,0,15,224,0,0,0,3,248, + 0,0,0,0,252,0,0,0,0,63,0,0,0,0,15,192, + 0,0,0,3,240,0,0,0,1,252,0,0,0,0,127,0, + 0,0,0,31,192,0,0,0,7,224,0,0,0,1,248,0, + 0,0,0,126,0,0,0,0,63,128,0,0,0,15,224,0, + 0,0,3,248,0,0,0,0,248,0,0,0,0,48,41,13, + 78,45,2,6,255,255,255,255,255,128,255,255,255,255,255,128, + 255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,37,40,200,45,4,249,96,0,0,0,0,120,0,0, + 0,0,252,0,0,0,0,63,0,0,0,0,15,192,0,0, + 0,3,240,0,0,0,1,252,0,0,0,0,127,0,0,0, + 0,31,128,0,0,0,7,224,0,0,0,1,248,0,0,0, + 0,126,0,0,0,0,63,128,0,0,0,15,224,0,0,0, + 3,240,0,0,0,0,252,0,0,0,0,63,0,0,0,0, + 15,192,0,0,0,7,240,0,0,0,1,248,0,0,0,0, + 248,0,0,0,3,240,0,0,0,15,192,0,0,0,63,128, + 0,0,0,254,0,0,0,1,248,0,0,0,7,224,0,0, + 0,31,128,0,0,0,126,0,0,0,1,252,0,0,0,7, + 240,0,0,0,31,192,0,0,0,63,0,0,0,0,252,0, + 0,0,3,240,0,0,0,15,224,0,0,0,63,128,0,0, + 0,254,0,0,0,0,248,0,0,0,0,96,0,0,0,0, + 15,34,68,22,3,1,31,240,59,248,96,252,96,252,192,126, + 192,126,192,126,192,126,192,126,64,252,96,252,48,248,1,240, + 1,224,3,192,3,128,7,0,7,0,14,0,12,16,12,16, + 12,16,12,16,6,32,3,192,0,0,0,0,0,128,3,224, + 7,240,7,240,7,240,7,240,3,224,35,34,170,39,2,1, + 0,15,255,0,0,0,56,1,224,0,0,224,0,112,0,1, + 128,0,28,0,7,0,0,14,0,14,0,0,7,0,12,0, + 248,3,0,28,3,205,243,128,56,7,135,241,128,56,15,7, + 225,192,112,31,7,225,192,112,62,7,224,224,112,62,7,224, + 224,224,124,7,192,224,224,124,7,192,224,224,124,7,192,224, + 224,252,15,192,224,224,248,15,128,224,224,248,15,128,224,224, + 248,15,129,192,224,248,31,129,192,224,248,31,129,128,112,248, + 31,3,128,112,248,63,3,0,112,120,111,6,0,56,60,199, + 140,0,56,31,3,240,0,28,0,0,0,0,14,0,0,0, + 0,7,0,0,0,0,3,128,0,0,0,1,192,0,96,0, + 0,120,1,192,0,0,31,255,0,0,33,35,175,36,2,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,2,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,31,0,15,252,0,255,240,255,255,128,28, + 34,136,33,3,0,255,255,240,0,15,224,126,0,15,224,31, + 0,15,224,31,128,15,224,15,192,15,224,15,192,15,224,15, + 224,15,224,15,224,15,224,15,224,15,224,15,224,15,224,15, + 224,15,224,15,192,15,224,15,192,15,224,31,128,15,224,30, + 0,15,224,60,0,15,255,224,0,15,224,124,0,15,224,63, + 0,15,224,31,128,15,224,15,192,15,224,15,224,15,224,15, + 240,15,224,15,240,15,224,15,240,15,224,15,240,15,224,15, + 240,15,224,15,240,15,224,15,224,15,224,15,224,15,224,31, + 192,15,224,31,128,15,224,126,0,255,255,248,0,26,34,136, + 31,3,1,0,127,193,128,1,224,241,128,3,192,63,128,15, + 128,31,128,15,128,15,128,31,0,15,128,63,0,7,128,63, + 0,7,128,127,0,3,128,127,0,3,128,127,0,3,128,127, + 0,1,128,255,0,1,128,255,0,1,128,255,0,1,128,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,192,127,0,0,192,127, + 0,0,192,127,0,0,128,63,0,1,128,63,0,1,128,63, + 0,1,128,31,128,3,0,15,128,3,0,7,128,6,0,3, + 192,12,0,1,224,56,0,0,127,224,0,32,34,136,37,3, + 0,255,255,248,0,15,224,31,0,15,224,7,128,15,224,3, + 224,15,224,1,240,15,224,1,240,15,224,0,248,15,224,0, + 252,15,224,0,252,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,254,15,224,0,252,15,224,0,252,15,224,0, + 248,15,224,1,240,15,224,1,224,15,224,3,192,15,224,7, + 128,15,224,30,0,255,255,248,0,27,34,136,33,3,0,255, + 255,255,224,15,224,31,224,15,224,7,224,15,224,3,224,15, + 224,1,224,15,224,1,224,15,224,0,224,15,224,0,224,15, + 224,0,96,15,224,48,96,15,224,48,96,15,224,48,0,15, + 224,112,0,15,224,112,0,15,224,240,0,15,225,240,0,15, + 255,240,0,15,225,240,0,15,224,240,0,15,224,112,0,15, + 224,112,32,15,224,48,96,15,224,48,96,15,224,48,96,15, + 224,0,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,1,224,15,224,3,224,15,224,3,224,15,224,15,224,255, + 255,255,224,255,255,255,224,28,34,136,32,3,0,255,255,255, + 240,7,240,15,240,7,240,3,240,7,240,1,240,7,240,1, + 240,7,240,0,240,7,240,0,240,7,240,0,112,7,240,0, + 112,7,240,24,48,7,240,24,48,7,240,24,48,7,240,56, + 48,7,240,56,0,7,240,120,0,7,240,248,0,7,255,248, + 0,7,240,248,0,7,240,120,0,7,240,56,0,7,240,56, + 0,7,240,24,0,7,240,24,0,7,240,24,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,128,0,30,34,136,35,3,1,0,127,224,192,0, + 224,120,192,3,192,31,192,7,128,15,192,15,128,7,192,31, + 0,7,192,31,0,3,192,63,0,3,192,63,0,1,192,127, + 0,1,192,127,0,1,192,127,0,0,192,255,0,0,192,255, + 0,0,192,255,0,0,0,255,0,0,0,255,0,0,0,255, + 3,255,252,255,3,255,252,255,0,31,192,255,0,31,192,255, + 0,31,192,127,0,31,192,127,0,31,192,127,0,31,192,127, + 0,31,192,63,0,31,192,63,0,31,192,31,0,31,192,15, + 128,57,192,15,128,49,192,7,192,96,192,1,224,192,192,0, + 127,128,192,34,34,170,39,3,0,255,255,63,255,192,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,255,255,252,0,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,255,255, + 63,255,192,16,34,68,21,3,0,255,255,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,255,255,23,34,102, + 26,2,0,1,255,254,0,15,224,0,15,224,0,15,224,0, + 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 224,0,15,224,0,15,224,0,15,224,0,15,224,0,15,224, + 0,15,224,0,15,224,0,15,224,0,15,224,0,15,224,0, + 15,224,30,15,224,126,15,224,127,15,224,255,15,224,255,15, + 224,254,15,224,254,15,224,248,15,192,112,15,192,96,15,128, + 48,31,0,24,30,0,15,248,0,33,34,170,37,3,0,255, + 255,31,254,0,7,240,7,240,0,7,240,3,192,0,7,240, + 3,128,0,7,240,3,0,0,7,240,7,0,0,7,240,14, + 0,0,7,240,12,0,0,7,240,24,0,0,7,240,48,0, + 0,7,240,96,0,0,7,240,224,0,0,7,240,224,0,0, + 7,241,240,0,0,7,243,240,0,0,7,247,248,0,0,7, + 255,252,0,0,7,255,252,0,0,7,249,254,0,0,7,241, + 254,0,0,7,240,255,0,0,7,240,255,0,0,7,240,127, + 128,0,7,240,127,128,0,7,240,63,192,0,7,240,63,192, + 0,7,240,31,224,0,7,240,31,224,0,7,240,15,240,0, + 7,240,15,240,0,7,240,7,248,0,7,240,7,248,0,7, + 240,7,252,0,255,255,63,255,128,28,34,136,32,3,0,255, + 255,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,48,7, + 240,0,48,7,240,0,48,7,240,0,112,7,240,0,112,7, + 240,0,112,7,240,0,240,7,240,0,240,7,240,0,240,7, + 240,1,240,7,240,3,240,7,240,3,240,7,240,7,240,255, + 255,255,240,255,255,255,240,39,34,170,43,2,0,255,240,0, + 63,254,7,240,0,63,192,7,248,0,63,192,7,248,0,63, + 192,7,248,0,127,192,7,252,0,127,192,7,252,0,95,192, + 7,252,0,95,192,7,254,0,223,192,6,254,0,223,192,6, + 255,0,159,192,6,127,0,159,192,6,127,1,159,192,6,127, + 129,159,192,6,63,129,31,192,6,63,129,31,192,6,63,195, + 31,192,6,31,194,31,192,6,31,226,31,192,6,15,226,31, + 192,6,15,230,31,192,6,15,244,31,192,6,7,244,31,192, + 6,7,244,31,192,6,7,252,31,192,6,3,248,31,192,6, + 3,248,31,192,6,1,248,31,192,6,1,248,31,192,6,1, + 240,31,192,6,0,240,31,192,15,0,240,31,192,63,192,240, + 31,192,255,240,97,255,254,34,35,175,37,2,255,255,224,15, + 255,192,31,240,3,255,0,15,240,0,252,0,15,248,0,120, + 0,7,252,0,48,0,3,254,0,48,0,3,254,0,48,0, + 3,255,0,48,0,3,255,128,48,0,3,255,128,48,0,3, + 127,192,48,0,3,63,224,48,0,3,31,224,48,0,3,31, + 240,48,0,3,15,248,48,0,3,7,248,48,0,3,7,252, + 48,0,3,3,254,48,0,3,1,255,48,0,3,1,255,48, + 0,3,0,255,176,0,3,0,127,240,0,3,0,127,240,0, + 3,0,63,240,0,3,0,31,240,0,3,0,15,240,0,3, + 0,15,240,0,3,0,7,240,0,3,0,3,240,0,3,0, + 3,240,0,7,128,1,240,0,15,192,0,240,0,63,240,0, + 240,0,255,252,0,112,0,0,0,0,48,0,28,34,136,33, + 3,1,0,63,192,0,0,224,112,0,3,192,56,0,7,128, + 30,0,15,128,30,0,15,0,15,0,31,0,15,128,63,0, + 15,192,63,0,15,192,127,0,15,192,127,0,15,224,127,0, + 15,224,127,0,15,224,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,127,0,15,192,63,0,15,192,63,0,15,192,31,0, + 15,128,15,0,15,0,15,128,31,0,7,128,30,0,3,192, + 60,0,0,224,112,0,0,63,192,0,29,34,136,34,3,0, + 255,255,248,0,7,240,63,0,7,240,15,192,7,240,15,224, + 7,240,15,240,7,240,7,240,7,240,7,248,7,240,7,248, + 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,248, + 7,240,7,240,7,240,15,240,7,240,15,224,7,240,15,192, + 7,240,31,0,7,255,252,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,255,255,128,0,28,45,180,33,3,246,0,63, + 192,0,0,224,112,0,3,192,56,0,7,128,30,0,15,128, + 30,0,15,0,15,0,31,0,15,128,63,0,15,128,63,0, + 15,192,127,0,15,192,127,0,15,224,127,0,15,224,127,0, + 15,224,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,63,0,15,192,63,15,15,192,31,17,143,128,15,160, + 223,0,15,160,223,0,7,160,254,0,3,224,252,16,0,240, + 248,16,0,127,224,16,0,0,224,16,0,0,224,16,0,0, + 224,48,0,0,240,48,0,0,248,112,0,0,255,240,0,0, + 255,224,0,0,127,224,0,0,127,192,0,0,63,128,0,0, + 31,0,32,36,144,36,3,254,255,255,240,0,7,240,126,0, + 7,240,63,0,7,240,63,128,7,240,31,192,7,240,31,192, + 7,240,31,224,7,240,31,224,7,240,31,224,7,240,31,224, + 7,240,31,224,7,240,31,192,7,240,63,192,7,240,63,0, + 7,240,126,0,7,255,240,0,7,240,240,0,7,240,62,0, + 7,240,63,0,7,240,31,128,7,240,31,128,7,240,31,192, + 7,240,31,192,7,240,31,192,7,240,31,192,7,240,31,195, + 7,240,31,195,7,240,31,195,7,240,31,195,7,240,31,195, + 7,240,31,198,7,240,31,198,7,240,15,238,255,255,135,252, + 0,0,3,248,0,0,0,96,23,34,102,29,4,1,7,252, + 24,24,15,24,56,3,248,112,1,248,112,0,248,240,0,120, + 248,0,120,248,0,56,252,0,24,254,0,24,255,128,24,255, + 224,8,127,240,0,127,252,0,63,254,0,31,255,128,15,255, + 192,3,255,240,1,255,248,128,127,248,192,31,252,192,15,252, + 192,3,254,224,1,254,224,0,126,224,0,62,240,0,30,248, + 0,30,248,0,28,252,0,28,254,0,24,239,0,48,195,128, + 96,193,255,128,29,34,136,34,3,0,255,255,255,248,255,63, + 231,248,252,31,193,248,248,31,192,248,248,31,192,248,240,31, + 192,120,224,31,192,56,224,31,192,56,224,31,192,56,192,31, + 192,24,192,31,192,24,192,31,192,24,192,31,192,24,128,31, + 192,8,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,3,255, + 254,0,33,34,170,38,3,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,34,34,170,37,2,0,255,255,135,255,192,15,248,0, + 126,0,7,248,0,56,0,7,248,0,56,0,3,248,0,48, + 0,3,252,0,48,0,3,252,0,48,0,1,254,0,96,0, + 1,254,0,96,0,0,254,0,96,0,0,255,0,192,0,0, + 255,0,192,0,0,127,0,192,0,0,127,129,128,0,0,127, + 129,128,0,0,63,129,128,0,0,63,195,0,0,0,63,195, + 0,0,0,31,195,0,0,0,31,230,0,0,0,15,230,0, + 0,0,15,246,0,0,0,15,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,248,0,0,0,3,248,0,0,0, + 3,248,0,0,0,3,240,0,0,0,1,240,0,0,0,1, + 240,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224, + 0,0,49,34,238,52,2,0,255,255,63,255,207,255,128,31, + 252,7,254,0,252,0,7,248,3,252,0,112,0,7,248,1, + 252,0,112,0,3,248,1,254,0,96,0,3,252,1,254,0, + 96,0,3,252,0,254,0,96,0,1,252,0,254,0,192,0, + 1,254,1,255,0,192,0,1,254,1,255,0,192,0,0,254, + 1,255,1,128,0,0,255,3,127,129,128,0,0,255,3,63, + 129,128,0,0,127,3,63,129,128,0,0,127,135,63,195,0, + 0,0,127,134,31,195,0,0,0,63,134,31,195,0,0,0, + 63,198,31,231,0,0,0,31,204,15,230,0,0,0,31,204, + 15,230,0,0,0,31,236,15,246,0,0,0,15,248,7,252, + 0,0,0,15,248,7,252,0,0,0,15,248,7,252,0,0, + 0,7,248,3,252,0,0,0,7,240,3,248,0,0,0,7, + 240,3,248,0,0,0,3,240,1,248,0,0,0,3,224,1, + 240,0,0,0,3,224,1,240,0,0,0,1,224,0,240,0, + 0,0,1,192,0,240,0,0,0,1,192,0,224,0,0,0, + 0,192,0,96,0,0,33,34,170,36,2,0,127,255,31,254, + 0,31,252,3,240,0,7,248,3,192,0,3,248,3,128,0, + 3,252,3,128,0,1,252,3,0,0,1,254,7,0,0,0, + 255,6,0,0,0,255,12,0,0,0,127,140,0,0,0,127, + 152,0,0,0,63,240,0,0,0,63,240,0,0,0,31,224, + 0,0,0,31,224,0,0,0,15,240,0,0,0,15,248,0, + 0,0,7,248,0,0,0,7,252,0,0,0,7,252,0,0, + 0,15,254,0,0,0,29,254,0,0,0,24,255,0,0,0, + 56,255,0,0,0,48,127,128,0,0,96,127,128,0,0,224, + 63,192,0,0,192,63,224,0,1,128,31,224,0,3,128,31, + 240,0,3,128,15,240,0,7,128,15,248,0,31,128,31,252, + 0,255,240,127,255,128,32,34,136,35,2,0,255,254,15,255, + 31,248,1,248,15,248,0,240,7,248,0,224,7,248,0,192, + 3,252,0,192,3,252,0,192,1,252,1,128,1,254,1,128, + 0,254,3,0,0,255,3,0,0,255,3,0,0,127,134,0, + 0,127,134,0,0,63,196,0,0,63,204,0,0,31,204,0, + 0,31,248,0,0,15,248,0,0,15,248,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,0,25,34,136,31,3,0,127,255,255,128,127,128, + 127,128,126,0,255,0,124,0,255,0,120,1,254,0,120,3, + 254,0,112,3,252,0,112,7,252,0,96,7,248,0,96,15, + 248,0,96,15,240,0,64,31,224,0,0,31,224,0,0,63, + 192,0,0,63,192,0,0,127,128,0,0,127,128,0,0,255, + 0,0,0,255,0,0,1,254,0,0,3,254,0,128,3,252, + 0,128,7,248,0,128,7,248,0,128,15,240,1,128,15,240, + 1,128,31,224,3,128,31,224,3,128,63,192,7,128,63,192, + 15,128,127,128,31,128,127,128,63,128,255,255,255,128,255,255, + 255,128,11,42,84,18,4,248,255,224,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,255,224,16,44,88,22, + 3,247,224,0,224,0,224,0,240,0,112,0,112,0,120,0, + 56,0,56,0,60,0,28,0,28,0,30,0,14,0,14,0, + 14,0,15,0,7,0,7,0,7,128,3,128,3,128,3,192, + 1,192,1,192,1,224,0,224,0,224,0,224,0,240,0,112, + 0,112,0,120,0,56,0,56,0,60,0,28,0,28,0,30, + 0,14,0,14,0,14,0,15,0,7,11,42,84,18,3,248, + 255,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,255,224,22,17,51,28,3,18,0,48,0,0,112,0, + 0,120,0,0,252,0,0,252,0,1,254,0,3,207,0,3, + 143,0,7,135,128,15,3,128,15,3,192,30,1,224,60,0, + 224,60,0,240,120,0,120,112,0,56,240,0,60,25,3,12, + 25,0,248,255,255,255,128,255,255,255,128,255,255,255,128,8, + 9,9,21,4,25,96,240,248,124,60,30,15,3,1,21,22, + 66,24,2,1,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,22,34,102,25,1,0,255,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,159,128,31,179,224,31,225,224,31,193,240,31,193,248,31, + 192,248,31,192,248,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,248, + 31,192,248,31,193,248,29,193,240,24,225,224,24,99,192,16, + 63,128,18,22,66,22,2,1,3,252,0,15,6,0,31,3, + 0,62,3,128,62,7,128,126,15,128,124,31,128,252,31,128, + 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,0, + 128,30,1,0,15,130,0,3,252,0,23,34,102,26,2,0, + 0,63,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,7,231,224,31,23,224,30,31,224,62,15,224, + 126,15,224,124,15,224,124,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, + 224,124,7,224,124,15,224,126,15,224,62,15,224,30,31,224, + 15,23,224,7,231,254,18,22,66,23,2,1,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,16,1,1,0,255,0,1,199,128,7,199,128,7,199,192, + 15,143,192,15,143,192,31,143,192,31,143,128,31,135,128,31, + 128,0,31,128,0,31,128,0,255,240,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,24,33,99,27,2,246, + 7,254,62,31,15,71,63,7,143,62,7,207,126,7,238,126, + 7,228,126,7,224,126,7,224,126,7,224,62,7,192,31,15, + 128,15,15,0,3,252,0,12,0,0,48,0,0,48,0,0, + 112,0,0,112,0,0,127,255,128,127,255,224,63,255,240,31, + 255,240,7,255,248,60,1,248,96,0,120,192,0,56,192,0, + 56,192,0,48,192,0,112,96,0,96,48,1,192,30,7,128, + 3,252,0,24,34,102,27,1,0,255,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,143,224, + 31,145,240,31,160,248,31,160,252,31,192,252,31,192,252,31, + 192,252,31,128,252,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,255,227,255,11, + 35,70,15,2,0,4,0,31,0,63,128,63,128,63,128,63, + 128,31,0,4,0,0,0,0,0,0,0,0,0,0,0,255, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,255,224,15,46,92,16,254, + 245,0,16,0,124,0,254,0,254,0,254,0,254,0,124,0, + 16,0,0,0,0,0,0,0,0,0,0,7,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,56,252,124,252,252, + 252,252,252,248,248,248,248,113,240,49,224,31,128,25,34,136, + 27,1,0,255,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,131,254,0,31,128,240,0,31,128,96,0,31, + 128,192,0,31,128,128,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,143,0,0,31,159,0,0,31,159,128,0,31, + 191,128,0,31,239,192,0,31,199,224,0,31,135,224,0,31, + 131,240,0,31,129,248,0,31,129,248,0,31,128,252,0,31, + 128,252,0,31,128,254,0,255,243,255,128,12,34,68,14,1, + 0,255,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,255,240,34,22,110,37,2,1,255,31,193,248,0, + 63,35,230,124,0,63,67,228,62,0,63,131,248,63,0,63, + 131,248,63,0,63,131,248,63,0,63,3,240,63,0,63,3, + 240,63,0,63,3,240,63,0,63,3,240,63,0,63,3,240, + 63,0,63,3,240,63,0,63,3,240,63,0,63,3,240,63, + 0,63,3,240,63,0,63,3,240,63,0,63,3,240,63,0, + 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, + 3,240,63,0,255,207,252,255,192,23,22,66,27,2,1,255, + 31,192,63,35,224,63,65,240,63,65,248,63,129,248,63,129, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,255,199, + 254,20,22,66,24,2,1,3,252,0,15,15,0,30,7,128, + 62,7,192,62,7,192,124,3,224,124,3,224,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,62,7,192,62,7,192, + 30,7,128,15,15,0,3,252,0,22,33,99,25,1,246,255, + 159,128,31,163,192,31,225,224,31,193,240,31,192,248,31,192, + 248,31,192,248,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,192,252,31, + 192,248,31,192,248,31,193,240,31,225,240,31,179,224,31,159, + 128,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,255, + 240,0,22,33,99,25,2,246,7,240,32,15,24,96,30,28, + 96,62,14,224,126,15,224,124,15,224,124,7,224,252,7,224, + 252,7,224,252,7,224,252,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,124,7,224,124,15,224,126,15,224,62,15, + 224,30,31,224,31,23,224,7,231,224,0,7,224,0,7,224, + 0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,63,252,17,22,66,20,2, + 1,255,31,0,63,63,128,63,79,128,63,79,128,63,159,128, + 63,159,128,63,159,0,63,14,0,63,0,0,63,0,0,63, + 0,0,63,0,0,63,0,0,63,0,0,63,0,0,63,0, + 0,63,0,0,63,0,0,63,0,0,63,0,0,63,0,0, + 255,192,0,16,22,44,21,3,1,31,196,48,116,96,60,224, + 28,224,28,240,12,248,4,254,4,127,128,127,224,63,240,31, + 252,7,254,129,254,192,127,192,31,224,15,224,7,240,7,248, + 6,204,14,135,248,15,32,64,17,1,0,1,128,1,128,1, + 128,1,128,1,128,3,128,3,128,7,128,15,128,63,128,255, + 248,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,130,31,130,31,130,31,130,31, + 134,31,134,31,132,15,196,15,248,7,240,24,22,66,26,1, + 0,255,143,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,131,248,31,131,248,31,133,248,15,133,248,15,201,248, + 7,241,255,23,23,69,25,1,255,255,241,254,63,192,120,31, + 128,48,15,192,48,15,192,32,7,192,96,7,224,96,7,224, + 64,3,224,192,3,240,128,3,240,128,1,241,128,1,249,0, + 0,249,0,0,255,0,0,254,0,0,126,0,0,126,0,0, + 124,0,0,60,0,0,60,0,0,24,0,0,24,0,35,23, + 115,37,1,255,255,231,255,31,224,63,129,252,7,128,31,128, + 252,3,0,15,128,252,2,0,15,192,124,2,0,15,192,124, + 6,0,7,192,126,4,0,7,224,254,4,0,3,224,191,12, + 0,3,224,191,8,0,3,241,159,24,0,1,241,31,144,0, + 1,241,31,144,0,1,251,31,176,0,0,250,15,224,0,0, + 250,15,224,0,0,254,15,224,0,0,124,7,192,0,0,124, + 7,192,0,0,60,7,192,0,0,56,3,128,0,0,56,3, + 128,0,0,24,3,0,0,23,22,66,25,1,0,255,231,252, + 63,192,240,31,192,224,15,192,192,15,225,128,7,227,0,3, + 242,0,3,254,0,1,252,0,1,252,0,0,252,0,0,126, + 0,0,127,0,0,127,0,0,223,128,1,159,192,3,15,192, + 2,15,224,6,7,224,14,7,240,30,7,248,255,207,254,23, + 33,99,25,1,245,255,241,254,63,192,120,31,128,48,15,192, + 32,15,192,32,15,192,96,7,224,64,7,224,64,3,240,192, + 3,240,128,1,248,128,1,249,128,0,249,0,0,253,0,0, + 253,0,0,126,0,0,126,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,12,0,0,8,0,0,8,0,0,8,0, + 15,16,0,31,16,0,63,144,0,63,32,0,62,32,0,62, + 64,0,31,192,0,15,0,0,18,22,66,22,2,0,127,255, + 192,124,15,192,120,31,128,112,63,0,96,63,0,96,126,0, + 64,126,0,64,252,0,1,248,0,1,248,0,3,240,0,3, + 240,0,7,224,64,15,192,64,15,192,64,31,128,192,31,0, + 192,63,1,192,126,1,192,126,3,192,252,15,192,255,255,192, + 14,43,86,20,3,247,0,60,0,240,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,0,15,0,28,0, + 240,0,60,0,30,0,15,0,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,7,128,7,128,3,192,0,240,0,60,3,44,44,13, + 5,247,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,15,43, + 86,20,3,247,240,0,60,0,15,0,7,128,7,128,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,3,192,3,192,0,240,0,62, + 0,240,1,224,3,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,128,7,128,15,0,60,0,240,0,27,9,36,31,2,8, + 31,128,1,128,63,240,0,192,127,254,0,96,255,255,128,96, + 193,255,240,96,192,63,255,224,192,15,255,192,96,1,255,128, + 48,0,63,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,13,0,0,8,35,35,14,3, + 245,60,126,255,255,255,126,60,0,0,0,24,24,24,24,24, + 24,24,24,60,60,60,60,126,126,126,126,254,255,255,255,255, + 255,255,126,60,18,34,102,28,5,250,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,1,240,0,7,236,0,15, + 103,0,30,99,0,62,99,128,126,103,128,126,111,128,124,111, + 128,252,111,128,252,103,0,252,96,0,252,96,0,252,96,0, + 252,96,0,252,96,0,252,96,0,124,96,192,124,96,192,62, + 96,128,62,97,128,30,97,0,15,99,0,7,252,0,0,248, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 29,34,136,34,3,1,0,1,255,0,0,7,129,192,0,31, + 0,224,0,31,0,224,0,63,0,240,0,126,1,240,0,126, + 3,240,0,254,3,240,0,254,3,224,0,254,1,192,0,254, + 0,0,0,254,0,0,0,254,0,0,0,254,0,0,15,254, + 0,0,24,126,6,0,0,127,252,0,0,127,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,31, + 0,0,0,31,0,0,0,30,0,0,0,30,0,24,30,28, + 0,56,127,220,0,112,195,248,0,224,128,255,255,224,128,127, + 255,192,128,255,255,128,193,207,255,0,127,3,252,0,24,22, + 66,28,2,5,96,126,6,243,255,207,127,255,254,63,129,252, + 30,0,120,60,0,60,56,0,28,56,0,28,112,0,14,112, + 0,14,112,0,14,112,0,14,112,0,14,112,0,14,56,0, + 28,56,0,28,60,0,60,30,0,120,63,129,252,127,255,254, + 243,255,207,96,126,6,26,34,136,28,1,0,255,248,63,192, + 63,224,15,0,31,224,14,0,31,224,12,0,31,224,12,0, + 15,240,8,0,15,240,8,0,7,240,24,0,7,248,16,0, + 3,248,48,0,3,252,32,0,3,252,96,0,1,254,64,0, + 1,254,192,0,0,254,128,0,0,255,128,0,0,255,0,0, + 63,255,254,0,0,127,0,0,0,127,0,0,0,127,0,0, + 0,127,0,0,63,255,254,0,0,127,0,0,0,127,0,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,127,0,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,127,0,0, + 7,255,248,0,3,42,42,13,5,248,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,22,43,129,30,2,248,1,255,0,7,1,192, + 14,0,224,28,0,224,28,1,240,60,3,240,60,7,240,60, + 7,240,62,7,224,62,3,192,63,0,0,31,192,0,31,248, + 0,15,254,0,31,255,128,55,255,192,97,255,240,96,127,248, + 224,31,248,224,7,252,240,1,252,252,0,124,255,0,60,255, + 192,28,127,240,24,63,252,24,31,255,16,15,255,160,3,255, + 192,0,255,224,0,63,224,0,15,240,6,3,240,31,129,240, + 63,128,240,63,128,240,63,128,240,63,0,240,62,0,224,28, + 1,192,28,3,192,15,7,0,3,252,0,15,6,12,21,3, + 26,120,60,252,126,252,126,252,126,252,126,120,60,35,34,170, + 39,2,1,0,15,254,0,0,0,112,3,192,0,0,192,0, + 96,0,3,128,0,56,0,6,0,0,28,0,12,0,0,6, + 0,24,3,225,134,0,24,15,25,131,0,48,30,15,129,128, + 48,62,7,129,128,96,60,3,128,192,96,124,3,128,192,96, + 124,1,128,192,192,252,1,128,96,192,252,1,128,96,192,252, + 0,0,96,192,252,0,0,96,192,252,0,0,96,192,252,0, + 0,96,192,252,0,128,96,192,252,0,128,96,64,124,0,128, + 192,96,124,1,128,192,96,60,1,0,192,48,62,3,1,128, + 48,30,2,1,128,24,15,12,3,0,24,3,248,6,0,12, + 0,0,6,0,6,0,0,12,0,3,128,0,56,0,0,192, + 0,96,0,0,112,1,192,0,0,15,254,0,0,14,17,34, + 18,2,17,31,0,51,192,97,224,113,224,121,224,57,224,7, + 224,57,224,113,224,241,224,241,228,241,228,241,228,126,248,0, + 0,127,252,127,252,13,20,40,23,5,1,4,0,28,24,24, + 48,56,112,112,96,112,224,241,224,241,224,241,224,241,224,241, + 224,241,224,241,224,112,224,112,224,112,96,56,48,24,16,12, + 0,4,0,23,13,39,27,2,6,255,255,254,255,255,254,255, + 255,254,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 12,5,10,18,3,10,255,240,255,240,255,240,255,240,255,240, + 35,34,170,39,2,1,0,15,254,0,0,0,112,3,192,0, + 0,192,0,96,0,3,128,0,56,0,6,0,0,28,0,12, + 0,0,6,0,24,255,252,6,0,24,62,31,3,0,48,62, + 15,129,128,48,62,15,193,128,96,62,15,192,192,96,62,15, + 192,192,96,62,15,192,192,192,62,15,128,96,192,62,31,0, + 96,192,63,248,0,96,192,62,60,0,96,192,62,30,0,96, + 192,62,15,0,96,192,62,15,128,96,192,62,15,128,96,64, + 62,15,128,192,96,62,15,136,192,96,62,15,136,192,48,62, + 15,137,128,48,62,15,145,128,24,255,231,243,0,24,0,3, + 230,0,12,0,0,6,0,6,0,0,12,0,3,128,0,56, + 0,0,192,0,96,0,0,112,1,192,0,0,15,254,0,0, + 12,3,6,20,4,28,255,240,255,240,255,240,16,15,30,28, + 6,20,15,240,31,248,62,124,120,30,240,14,224,7,224,7, + 224,7,224,7,224,14,112,14,124,60,63,252,31,240,3,192, + 41,36,216,45,2,253,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,255,255,255,255,255,128, + 255,255,255,255,255,128,255,255,255,255,255,128,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,0,255,255,255,255,255,0,255,255,255,255,255,0,14,21, + 42,21,4,14,31,240,48,248,96,124,224,124,240,124,248,124, + 248,120,120,248,1,240,1,224,3,128,6,0,12,4,16,4, + 32,4,32,12,127,252,127,252,79,248,71,248,1,224,16,21, + 42,22,3,14,31,224,48,248,112,124,112,124,124,124,124,124, + 60,124,0,120,0,224,15,128,0,240,0,124,0,62,16,63, + 124,63,252,63,252,63,240,63,112,126,112,252,31,240,8,9, + 9,21,9,25,6,15,31,62,60,120,240,192,128,24,35,105, + 29,3,244,120,3,192,124,3,192,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,248,7, + 224,248,7,224,120,7,192,112,3,192,112,3,193,112,3,129, + 48,3,131,48,7,135,48,7,255,56,15,254,62,62,254,47, + 252,126,35,248,60,32,0,0,48,0,0,112,0,0,112,0, + 0,120,0,0,120,0,0,124,0,0,124,0,0,126,0,0, + 126,0,0,126,0,0,62,0,0,28,0,0,23,41,123,28, + 3,249,3,255,254,15,240,224,63,240,224,127,240,224,127,240, + 224,255,240,224,255,240,224,255,240,224,255,240,224,255,240,224, + 255,240,224,255,240,224,255,240,224,255,240,224,127,240,224,63, + 240,224,31,240,224,7,240,224,0,112,224,0,112,224,0,112, + 224,0,112,224,0,112,224,0,112,224,0,112,224,0,112,224, + 0,112,224,0,112,224,0,112,224,0,112,224,0,112,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,112, + 224,0,112,224,0,112,224,0,112,224,0,112,224,8,7,7, + 14,3,12,60,126,255,255,255,126,60,10,10,20,21,5,246, + 8,0,8,0,24,0,15,0,7,128,3,192,3,192,3,192, + 199,128,63,0,11,20,40,21,5,14,7,0,15,0,255,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 255,224,13,17,34,19,3,17,15,128,24,192,56,224,112,112, + 112,112,240,120,240,120,240,120,240,120,240,120,240,120,112,112, + 112,224,56,224,15,128,0,0,255,248,13,20,40,23,5,1, + 1,0,193,128,96,192,112,224,48,112,56,112,56,120,60,120, + 60,120,60,120,60,120,60,120,60,120,56,112,56,112,48,112, + 96,224,64,192,1,128,1,0,36,36,180,44,5,255,0,0, + 0,48,0,7,0,0,48,0,7,0,0,96,0,31,0,0, + 224,0,255,0,0,192,0,31,0,1,192,0,31,0,1,128, + 0,31,0,3,0,0,31,0,7,0,0,31,0,6,0,0, + 31,0,14,0,0,31,0,12,0,0,31,0,24,0,0,31, + 0,24,0,0,31,0,48,0,0,31,0,112,15,0,31,0, + 96,31,0,31,0,224,31,0,31,0,192,63,0,31,1,128, + 127,0,255,227,128,127,0,0,3,0,223,0,0,7,1,159, + 0,0,6,1,159,0,0,12,3,31,0,0,12,2,31,0, + 0,24,6,31,0,0,56,12,31,0,0,48,15,255,240,0, + 112,0,31,0,0,96,0,31,0,0,192,0,31,0,1,192, + 0,31,0,1,128,0,31,0,3,128,1,255,224,3,0,0, + 0,0,35,36,180,43,5,255,0,0,0,56,0,7,0,0, + 48,0,7,0,0,112,0,31,0,0,224,0,255,0,0,192, + 0,31,0,1,192,0,31,0,1,128,0,31,0,3,128,0, + 31,0,3,0,0,31,0,7,0,0,31,0,14,0,0,31, + 0,12,0,0,31,0,28,0,0,31,0,24,0,0,31,0, + 56,126,0,31,0,113,143,128,31,0,99,7,192,31,0,231, + 3,224,31,0,199,3,224,31,1,199,131,224,255,227,135,195, + 224,0,3,3,199,192,0,7,1,135,128,0,6,0,15,0, + 0,14,0,30,0,0,12,0,56,0,0,24,0,96,0,0, + 56,0,128,32,0,48,1,0,32,0,112,2,0,32,0,96, + 2,255,224,0,192,7,255,224,1,192,6,255,192,1,128,4, + 127,192,3,128,4,63,128,3,0,0,0,0,38,36,180,44, + 3,255,0,0,0,12,0,31,224,0,12,0,48,248,0,24, + 0,112,124,0,56,0,112,124,0,48,0,124,124,0,112,0, + 124,124,0,96,0,60,124,0,192,0,0,120,1,192,0,0, + 224,1,128,0,15,128,3,128,0,0,240,3,0,0,0,124, + 7,0,0,0,62,6,0,0,16,63,12,0,0,124,63,28, + 3,192,252,63,24,7,192,252,63,56,7,192,240,63,48,15, + 192,112,126,112,31,192,112,252,224,31,192,31,240,192,55,192, + 0,1,192,103,192,0,1,128,103,192,0,3,128,199,192,0, + 3,0,135,192,0,6,1,135,192,0,14,3,7,192,0,12, + 3,255,252,0,28,0,7,192,0,24,0,7,192,0,56,0, + 7,192,0,112,0,7,192,0,96,0,7,192,0,224,0,127, + 248,0,192,0,0,0,16,35,70,23,3,245,7,0,15,128, + 31,192,31,192,31,192,15,128,7,0,0,0,0,0,7,128, + 12,224,16,48,16,48,16,48,16,48,0,96,0,224,0,192, + 3,192,7,128,15,128,31,0,31,4,62,4,126,6,124,2, + 252,3,252,3,252,3,252,3,252,6,126,6,63,12,31,248, + 7,224,33,45,225,36,2,0,0,56,0,0,0,0,60,0, + 0,0,0,62,0,0,0,0,62,0,0,0,0,31,0,0, + 0,0,7,0,0,0,0,3,128,0,0,0,1,192,0,0, + 0,0,64,0,0,0,0,0,0,0,0,0,192,0,0,0, + 1,192,0,0,0,1,224,0,0,0,1,224,0,0,0,3, + 224,0,0,0,3,240,0,0,0,3,240,0,0,0,7,240, + 0,0,0,7,248,0,0,0,7,248,0,0,0,15,248,0, + 0,0,15,252,0,0,0,15,252,0,0,0,25,252,0,0, + 0,25,254,0,0,0,25,254,0,0,0,48,254,0,0,0, + 48,255,0,0,0,32,255,0,0,0,96,127,0,0,0,96, + 127,128,0,0,64,127,128,0,0,192,63,128,0,0,192,63, + 192,0,0,255,255,192,0,1,255,255,192,0,1,128,31,224, + 0,1,0,31,224,0,3,0,15,224,0,3,0,15,240,0, + 2,0,15,240,0,6,0,7,240,0,15,0,7,248,0,31, + 0,15,252,0,255,240,255,255,128,33,45,225,36,2,0,0, + 0,14,0,0,0,0,15,0,0,0,0,31,0,0,0,0, + 62,0,0,0,0,60,0,0,0,0,120,0,0,0,0,240, + 0,0,0,0,192,0,0,0,0,128,0,0,0,0,0,0, + 0,0,0,192,0,0,0,1,192,0,0,0,1,224,0,0, + 0,1,224,0,0,0,3,224,0,0,0,3,240,0,0,0, + 3,240,0,0,0,7,240,0,0,0,7,248,0,0,0,7, + 248,0,0,0,15,248,0,0,0,15,252,0,0,0,15,252, + 0,0,0,25,252,0,0,0,25,254,0,0,0,25,254,0, + 0,0,48,254,0,0,0,48,255,0,0,0,32,255,0,0, + 0,96,127,0,0,0,96,127,128,0,0,64,127,128,0,0, + 192,63,128,0,0,192,63,192,0,0,255,255,192,0,1,255, + 255,192,0,1,128,31,224,0,1,0,31,224,0,3,0,15, + 224,0,3,0,15,240,0,6,0,15,240,0,6,0,7,240, + 0,15,0,7,248,0,255,240,255,255,128,255,240,255,255,128, + 33,44,220,36,2,0,0,1,192,0,0,0,1,224,0,0, + 0,3,224,0,0,0,7,240,0,0,0,15,120,0,0,0, + 30,30,0,0,0,120,7,0,0,0,64,1,128,0,0,0, + 0,0,0,0,0,192,0,0,0,1,192,0,0,0,1,224, + 0,0,0,1,224,0,0,0,3,224,0,0,0,3,240,0, + 0,0,3,240,0,0,0,7,240,0,0,0,7,248,0,0, + 0,7,248,0,0,0,15,248,0,0,0,15,252,0,0,0, + 15,252,0,0,0,25,252,0,0,0,25,254,0,0,0,25, + 254,0,0,0,48,254,0,0,0,48,255,0,0,0,32,255, + 0,0,0,96,127,0,0,0,96,127,128,0,0,64,127,128, + 0,0,192,63,128,0,0,192,63,192,0,0,255,255,192,0, + 1,255,255,192,0,1,128,31,224,0,1,0,31,224,0,3, + 0,15,224,0,3,0,15,240,0,2,0,15,240,0,6,0, + 7,240,0,15,0,7,248,0,31,0,15,252,0,255,240,255, + 255,128,33,43,215,36,2,0,0,15,1,0,0,0,31,227, + 0,0,0,63,254,0,0,0,33,254,0,0,0,32,124,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,6,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,255,240,255,255,128,255,240,255,255,128,33, + 43,215,36,2,0,0,60,15,0,0,0,126,31,128,0,0, + 126,31,128,0,0,126,31,128,0,0,126,31,128,0,0,60, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,3,240,0,0,0,3,240,0,0, + 0,3,240,0,0,0,7,248,0,0,0,7,248,0,0,0, + 7,248,0,0,0,15,252,0,0,0,15,252,0,0,0,25, + 252,0,0,0,25,254,0,0,0,24,254,0,0,0,48,254, + 0,0,0,48,255,0,0,0,48,127,0,0,0,96,127,0, + 0,0,96,127,128,0,0,96,63,128,0,0,192,63,128,0, + 0,192,63,192,0,0,255,255,192,0,1,255,255,192,0,1, + 128,31,224,0,1,128,15,224,0,3,0,15,224,0,3,0, + 15,240,0,3,0,7,240,0,7,0,7,240,0,15,0,7, + 248,0,31,128,15,252,0,255,240,255,255,128,33,45,225,36, + 2,0,0,1,224,0,0,0,7,248,0,0,0,14,28,0, + 0,0,12,12,0,0,0,12,12,0,0,0,12,12,0,0, + 0,14,28,0,0,0,7,248,0,0,0,3,240,0,0,0, + 0,0,0,0,0,0,192,0,0,0,1,192,0,0,0,1, + 224,0,0,0,1,224,0,0,0,3,224,0,0,0,3,240, + 0,0,0,3,240,0,0,0,7,240,0,0,0,7,248,0, + 0,0,7,248,0,0,0,15,248,0,0,0,13,252,0,0, + 0,13,252,0,0,0,29,252,0,0,0,25,254,0,0,0, + 24,254,0,0,0,56,254,0,0,0,48,255,0,0,0,48, + 127,0,0,0,112,127,0,0,0,96,127,128,0,0,96,63, + 128,0,0,224,63,128,0,0,192,63,192,0,0,255,255,192, + 0,1,255,255,192,0,1,128,31,224,0,1,128,31,224,0, + 3,0,15,224,0,3,0,15,240,0,3,0,15,240,0,7, + 0,7,240,0,15,0,7,248,0,31,128,15,252,0,255,240, + 255,255,128,45,34,204,48,1,0,0,0,127,255,255,240,0, + 0,31,248,7,240,0,0,15,248,1,240,0,0,15,248,0, + 240,0,0,31,248,0,240,0,0,27,248,0,112,0,0,59, + 248,0,112,0,0,51,248,0,48,0,0,115,248,0,48,0, + 0,99,248,12,48,0,0,227,248,12,16,0,0,195,248,12, + 0,0,1,195,248,28,0,0,1,131,248,28,0,0,3,131, + 248,60,0,0,3,3,248,124,0,0,7,3,255,252,0,0, + 6,3,248,124,0,0,14,3,248,60,0,0,12,3,248,28, + 0,0,28,3,248,28,0,0,24,3,248,12,24,0,56,3, + 248,12,24,0,63,255,248,12,24,0,96,3,248,0,56,0, + 224,3,248,0,56,0,192,3,248,0,56,1,192,3,248,0, + 120,1,128,3,248,0,120,3,128,3,248,0,248,7,128,3, + 248,1,248,15,128,3,248,3,248,255,248,127,255,255,248,255, + 248,127,255,255,248,26,45,180,31,3,246,0,127,193,128,1, + 224,241,128,3,192,63,128,7,128,31,128,15,128,15,128,31, + 0,15,128,63,0,7,128,63,0,7,128,63,0,3,128,127, + 0,3,128,127,0,1,128,127,0,1,128,255,0,1,128,255, + 0,1,128,255,0,1,128,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,192,127,0,0,192,127,0,0,192,127,0,0,128,63, + 0,0,128,63,0,1,128,63,0,1,128,31,128,3,0,15, + 128,3,0,7,128,6,0,3,192,12,0,1,224,56,0,0, + 127,224,0,0,12,0,0,0,8,0,0,0,30,0,0,0, + 31,128,0,0,3,192,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,129,192,0,0,199,192,0,0,63,0,0,27, + 45,180,33,3,0,0,224,0,0,1,240,0,0,1,240,0, + 0,0,248,0,0,0,124,0,0,0,60,0,0,0,14,0, + 0,0,6,0,0,0,2,0,0,0,0,0,0,0,0,0, + 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, + 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, + 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, + 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, + 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, + 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, + 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, + 224,255,255,255,224,255,255,255,224,27,45,180,33,3,0,0, + 0,56,0,0,0,120,0,0,0,248,0,0,0,248,0,0, + 1,240,0,0,3,192,0,0,3,128,0,0,6,0,0,0, + 4,0,0,0,0,0,0,0,0,0,0,255,255,255,224,15, + 224,31,224,15,224,7,224,15,224,3,224,15,224,1,224,15, + 224,1,224,15,224,0,224,15,224,0,224,15,224,0,96,15, + 224,48,96,15,224,48,96,15,224,48,0,15,224,112,0,15, + 224,112,0,15,224,240,0,15,225,240,0,15,255,240,0,15, + 225,240,0,15,224,240,0,15,224,112,0,15,224,112,32,15, + 224,48,96,15,224,48,96,15,224,48,96,15,224,0,96,15, + 224,0,224,15,224,0,224,15,224,0,224,15,224,1,224,15, + 224,3,224,15,224,3,224,15,224,15,224,255,255,255,224,255, + 255,255,224,27,44,176,33,3,0,0,6,0,0,0,15,0, + 0,0,15,128,0,0,31,192,0,0,57,224,0,0,240,112, + 0,3,192,28,0,0,0,4,0,0,0,0,0,0,0,0, + 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, + 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, + 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, + 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, + 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, + 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, + 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, + 224,255,255,255,224,255,255,255,224,27,43,172,33,3,0,1, + 224,120,0,3,240,252,0,3,240,252,0,3,240,252,0,3, + 240,252,0,1,224,120,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,255,224,15,224,31,224,15,224,7,224,15, + 224,3,224,15,224,1,224,15,224,1,224,15,224,0,224,15, + 224,0,224,15,224,0,224,15,224,48,96,15,224,48,96,15, + 224,48,0,15,224,112,0,15,224,112,0,15,224,240,0,15, + 225,240,0,15,255,240,0,15,225,240,0,15,224,240,0,15, + 224,112,0,15,224,112,96,15,224,48,96,15,224,48,96,15, + 224,48,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,0,224,15,224,1,224,15,224,3,224,15,224,3,224,15, + 224,15,224,255,255,255,224,255,255,255,224,16,45,90,21,3, + 0,56,0,124,0,124,0,62,0,31,0,15,0,3,128,1, + 192,0,0,0,0,0,0,255,255,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,255,255,16,45,90,21,3, + 0,0,14,0,30,0,62,0,60,0,120,0,240,0,224,1, + 192,0,0,0,0,0,0,255,255,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,255,255,16,44,88,21,3, + 0,1,192,3,192,3,224,7,240,31,120,60,28,240,7,0, + 1,0,0,0,0,255,255,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,255,255,255,255,16,43,86,21,3,0,120, + 30,252,63,252,63,252,63,252,63,120,30,0,0,0,0,0, + 0,255,255,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,255,255,32,34,136,37,3,0,255,255,248,0,7, + 240,31,0,7,240,7,128,7,240,3,224,7,240,1,240,7, + 240,1,240,7,240,0,248,7,240,0,252,7,240,0,252,7, + 240,0,254,7,240,0,254,7,240,0,254,7,240,0,255,7, + 240,0,255,7,240,0,255,7,240,0,255,255,255,0,255,7, + 240,0,255,7,240,0,255,7,240,0,255,7,240,0,255,7, + 240,0,254,7,240,0,254,7,240,0,254,7,240,0,254,7, + 240,0,252,7,240,0,252,7,240,0,248,7,240,1,240,7, + 240,1,224,7,240,3,192,7,240,7,128,7,240,31,0,255, + 255,248,0,34,44,220,37,2,255,0,7,128,128,0,0,15, + 241,128,0,0,31,255,0,0,0,16,255,0,0,0,16,60, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,224,15,255,192,31,240,3,255,0, + 15,240,0,252,0,15,248,0,120,0,7,252,0,48,0,3, + 254,0,48,0,3,254,0,48,0,3,255,0,48,0,3,255, + 128,48,0,3,255,128,48,0,3,127,192,48,0,3,63,224, + 48,0,3,31,224,48,0,3,31,240,48,0,3,15,248,48, + 0,3,7,248,48,0,3,7,252,48,0,3,3,254,48,0, + 3,1,255,48,0,3,1,255,48,0,3,0,255,176,0,3, + 0,127,240,0,3,0,127,240,0,3,0,63,240,0,3,0, + 31,240,0,3,0,15,240,0,3,0,15,240,0,3,0,7, + 240,0,3,0,3,240,0,3,0,3,240,0,7,128,1,240, + 0,15,192,0,240,0,63,240,0,240,0,255,252,0,112,0, + 0,0,0,48,0,28,45,180,33,3,0,0,192,0,0,1, + 224,0,0,1,240,0,0,0,248,0,0,0,120,0,0,0, + 60,0,0,0,28,0,0,0,6,0,0,0,2,0,0,0, + 0,0,0,0,0,0,0,0,63,192,0,0,224,112,0,3, + 192,56,0,7,128,30,0,15,128,30,0,15,0,15,0,31, + 0,15,128,63,0,15,192,63,0,15,192,127,0,15,192,127, + 0,15,224,127,0,15,224,127,0,15,224,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,127,0,15,224,127, + 0,15,224,127,0,15,224,127,0,15,192,63,0,15,192,63, + 0,15,192,31,0,15,128,15,0,15,0,15,128,31,0,7, + 128,30,0,3,192,60,0,0,224,112,0,0,63,192,0,28, + 45,180,33,3,0,0,0,48,0,0,0,120,0,0,0,248, + 0,0,1,240,0,0,1,224,0,0,3,192,0,0,3,128, + 0,0,6,0,0,0,4,0,0,0,0,0,0,0,0,0, + 0,0,63,192,0,0,224,112,0,3,192,56,0,7,128,30, + 0,15,128,30,0,15,0,15,0,31,0,15,128,63,0,15, + 192,63,0,15,192,127,0,15,192,127,0,15,224,127,0,15, + 224,127,0,15,224,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,127,0,15,224,127,0,15,224,127,0,15, + 224,127,0,15,192,63,0,15,192,63,0,15,192,31,0,15, + 128,15,0,15,0,15,128,31,0,7,128,30,0,3,192,60, + 0,0,224,112,0,0,63,192,0,28,45,180,33,3,0,0, + 6,0,0,0,14,0,0,0,15,0,0,0,31,128,0,0, + 63,192,0,0,121,224,0,0,240,240,0,3,192,60,0,3, + 0,12,0,0,0,0,0,0,0,0,0,0,63,192,0,0, + 224,112,0,3,192,56,0,7,128,30,0,15,128,30,0,15, + 0,15,0,31,0,15,128,63,0,15,192,63,0,15,192,127, + 0,15,192,127,0,15,224,127,0,15,224,127,0,15,224,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,127, + 0,15,224,127,0,15,224,127,0,15,224,127,0,15,192,63, + 0,15,192,63,0,15,192,31,0,15,128,15,0,15,0,15, + 128,31,0,7,128,30,0,3,192,60,0,0,224,112,0,0, + 63,192,0,28,44,176,33,3,0,0,0,8,0,0,126,24, + 0,0,255,248,0,1,255,240,0,1,7,224,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,63,192,0,0,224,112,0,3,192,56,0,7,128,30, + 0,15,128,30,0,15,0,15,0,31,0,15,128,63,0,15, + 192,63,0,15,192,127,0,15,192,127,0,15,224,127,0,15, + 224,127,0,15,224,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,127,0,15,224,127,0,15,224,127,0,15, + 224,127,0,15,192,63,0,15,192,63,0,15,192,31,0,15, + 128,15,0,15,0,15,128,31,0,7,128,30,0,3,192,60, + 0,0,224,112,0,0,63,192,0,28,44,176,33,3,0,1, + 224,120,0,3,240,252,0,3,240,252,0,3,240,252,0,3, + 240,252,0,1,224,120,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,63,192,0,0,224,112,0,3, + 192,56,0,7,128,30,0,15,128,30,0,15,0,15,0,31, + 0,15,128,63,0,15,192,63,0,15,192,127,0,15,192,127, + 0,15,224,127,0,15,224,127,0,15,224,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,127,0,15,224,127, + 0,15,224,127,0,15,224,127,0,15,192,63,0,15,192,63, + 0,15,192,31,0,15,128,15,0,15,0,15,128,31,0,7, + 128,30,0,3,192,60,0,0,224,112,0,0,63,192,0,31, + 30,120,45,7,253,32,0,0,0,112,0,0,12,248,0,0, + 30,124,0,0,60,62,0,0,120,31,0,1,240,15,128,3, + 224,7,192,7,192,3,224,15,128,1,240,31,0,0,248,62, + 0,0,124,124,0,0,62,248,0,0,31,240,0,0,15,224, + 0,0,7,192,0,0,15,224,0,0,31,240,0,0,62,248, + 0,0,124,60,0,0,248,30,0,1,240,15,0,3,224,7, + 128,7,192,3,192,15,128,1,224,31,0,0,240,62,0,0, + 120,124,0,0,60,248,0,0,30,112,0,0,12,28,34,136, + 33,3,1,0,63,224,48,0,224,112,96,1,192,60,192,7, + 128,31,192,15,128,31,128,15,0,15,0,31,0,15,128,63, + 0,15,192,63,0,31,192,63,0,31,224,127,0,63,224,127, + 0,111,224,127,0,239,224,255,0,207,240,255,1,143,240,255, + 3,15,240,255,7,15,240,255,14,15,240,255,12,15,240,255, + 24,15,240,255,48,15,240,255,112,15,224,127,96,15,224,127, + 192,15,224,127,128,15,192,63,128,15,192,63,0,15,192,31, + 0,15,128,15,0,15,0,31,128,30,0,63,128,30,0,51, + 192,56,0,96,224,112,0,192,127,192,0,33,45,225,38,3, + 0,0,24,0,0,0,0,60,0,0,0,0,62,0,0,0, + 0,31,0,0,0,0,15,128,0,0,0,7,128,0,0,0, + 1,192,0,0,0,0,224,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,33,45,225,38,3,0,0,0,7,0,0,0,0,15, + 0,0,0,0,15,0,0,0,0,31,0,0,0,0,60,0, + 0,0,0,56,0,0,0,0,112,0,0,0,0,224,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,7,255,128,15,224,1,254,0,15,224,0,120,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,7,224,0,48,0,7,224,0,96,0,7,240,0,96,0, + 3,240,0,192,0,1,248,1,192,0,0,252,3,128,0,0, + 127,159,0,0,0,31,252,0,0,33,45,225,38,3,0,0, + 0,64,0,0,0,0,224,0,0,0,1,240,0,0,0,3, + 240,0,0,0,7,248,0,0,0,15,28,0,0,0,30,15, + 0,0,0,112,3,128,0,0,0,0,128,0,0,0,0,0, + 0,0,0,0,0,0,255,255,7,255,128,15,224,1,254,0, + 15,224,0,120,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,7,224,0,48,0,7,224,0, + 96,0,7,240,0,96,0,3,240,0,192,0,1,248,1,192, + 0,0,252,3,128,0,0,127,159,0,0,0,31,252,0,0, + 33,44,220,38,3,0,0,60,15,0,0,0,126,31,128,0, + 0,126,31,128,0,0,126,31,128,0,0,126,31,128,0,0, + 60,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,254,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,32,45,180,35,2,0,0,0,7,0,0,0,15,0, + 0,0,31,0,0,0,31,0,0,0,60,0,0,0,120,0, + 0,0,112,0,0,0,192,0,0,0,128,0,0,0,0,0, + 0,0,0,0,255,254,15,255,31,248,1,248,15,248,0,240, + 7,248,0,224,7,248,0,192,3,252,0,192,3,252,0,192, + 1,252,1,128,1,254,1,128,0,254,3,0,0,255,3,0, + 0,255,3,0,0,127,134,0,0,127,134,0,0,63,196,0, + 0,63,204,0,0,31,204,0,0,31,248,0,0,15,248,0, + 0,15,248,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,255,255,0,29,34,136,34, + 3,0,255,255,128,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,255,248,0,7,240, + 63,0,7,240,15,192,7,240,15,224,7,240,15,240,7,240, + 7,240,7,240,7,248,7,240,7,248,7,240,7,248,7,240, + 7,248,7,240,7,248,7,240,7,248,7,240,7,240,7,240, + 15,240,7,240,15,224,7,240,15,192,7,240,31,0,7,255, + 252,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,255,255,128,0,23,34,102,27,2,0, + 0,127,0,1,227,128,3,195,224,7,193,224,7,193,240,15, + 129,240,15,129,240,15,129,240,31,129,240,31,129,224,31,129, + 224,31,129,192,31,131,128,31,188,0,31,131,0,31,129,192, + 31,128,240,31,128,248,31,128,248,31,128,124,31,128,124,31, + 128,126,31,128,126,31,128,126,31,128,126,31,128,126,31,128, + 126,31,184,126,31,252,124,31,252,124,31,248,252,31,248,248, + 31,184,240,255,159,224,21,34,102,24,2,0,24,0,0,60, + 0,0,62,0,0,30,0,0,15,0,0,7,128,0,3,128, + 0,1,192,0,0,192,0,0,0,0,0,0,0,0,0,0, + 15,248,0,24,62,0,56,63,0,120,31,0,124,31,128,126, + 31,128,126,31,128,60,31,128,0,127,128,3,223,128,15,31, + 128,30,31,128,62,31,128,124,31,128,252,31,128,252,31,128, + 252,31,136,252,31,136,252,31,152,254,63,144,127,127,240,63, + 143,224,21,34,102,24,2,0,0,12,0,0,30,0,0,62, + 0,0,62,0,0,124,0,0,120,0,0,224,0,0,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,15,248,0,24, + 62,0,56,63,0,120,31,0,124,31,128,126,31,128,126,31, + 128,62,31,128,8,63,128,1,255,128,7,159,128,30,31,128, + 62,31,128,124,31,128,124,31,128,252,31,128,252,31,136,252, + 31,136,252,31,152,254,63,144,127,127,240,63,143,224,21,34, + 102,24,2,0,1,192,0,1,224,0,3,224,0,3,224,0, + 7,240,0,7,56,0,14,28,0,28,14,0,48,7,0,0, + 0,0,0,0,0,0,0,0,15,248,0,24,62,0,56,63, + 0,120,31,0,124,31,128,126,31,128,126,31,128,62,31,128, + 8,63,128,1,255,128,7,159,128,30,31,128,62,31,128,124, + 31,128,124,31,128,252,31,128,252,31,136,252,31,136,252,31, + 152,254,63,144,127,127,240,63,143,224,21,32,96,24,2,0, + 15,3,0,31,195,0,63,254,0,49,252,0,32,120,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248, + 0,24,62,0,56,63,0,120,31,0,124,31,128,126,31,128, + 126,31,128,62,31,128,8,63,128,1,255,128,7,159,128,30, + 31,128,62,31,128,124,31,128,124,31,128,252,31,128,252,31, + 136,252,31,136,252,31,152,254,63,144,127,127,240,63,143,224, + 21,32,96,24,2,0,60,30,0,126,63,0,126,63,0,126, + 63,0,126,63,0,60,30,0,0,0,0,0,0,0,0,0, + 0,0,0,0,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,21,34,102,24,2,1,3,240,0,7, + 248,0,14,28,0,12,12,0,12,12,0,12,12,0,14,28, + 0,7,248,0,1,224,0,0,0,0,0,0,0,0,0,0, + 15,248,0,24,62,0,56,63,0,120,31,0,124,31,128,126, + 31,128,126,31,128,62,31,128,8,63,128,1,255,128,7,31, + 128,30,31,128,62,31,128,124,31,128,124,31,128,252,31,128, + 252,31,136,252,31,136,252,31,152,254,63,144,127,111,240,63, + 199,224,29,22,88,34,2,1,15,240,255,128,24,63,195,192, + 56,63,195,224,120,31,131,240,124,31,129,240,126,31,129,240, + 126,31,129,248,62,31,129,248,0,63,129,248,1,255,129,248, + 7,31,255,248,30,31,128,0,62,31,128,0,124,31,128,0, + 124,31,128,8,252,31,128,8,252,31,128,24,252,31,192,16, + 252,31,192,16,254,51,192,32,127,97,240,64,63,192,255,128, + 18,32,96,22,2,247,3,252,0,15,6,0,31,7,0,62, + 7,128,62,7,128,126,15,128,124,31,128,252,31,128,252,31, + 0,252,14,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,124,0,64,124,0,192,62,0,128,62,1,128,30, + 1,0,15,130,0,3,252,0,0,128,0,0,128,0,1,128, + 0,0,240,0,0,56,0,0,60,0,0,60,0,0,60,0, + 4,120,0,3,240,0,18,34,102,23,2,0,28,0,0,30, + 0,0,30,0,0,31,0,0,15,128,0,7,128,0,3,192, + 0,0,192,0,0,96,0,0,0,0,0,0,0,0,0,0, + 3,252,0,14,30,0,30,31,0,62,15,128,60,15,128,124, + 15,128,124,15,192,252,15,192,252,15,192,252,15,192,255,255, + 192,252,0,0,252,0,0,252,0,0,252,0,64,124,0,64, + 124,0,192,62,0,192,62,1,128,31,1,0,15,135,0,3, + 252,0,18,34,102,23,2,0,0,14,0,0,31,0,0,31, + 0,0,62,0,0,60,0,0,120,0,0,240,0,0,224,0, + 1,128,0,0,0,0,0,0,0,0,0,0,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,23,2,0,1,224,0,1,224,0,1,240,0,3,240,0, + 3,248,0,7,56,0,14,28,0,28,14,0,56,3,0,0, + 0,0,0,0,0,0,0,0,3,252,0,14,30,0,30,31, + 0,62,15,128,60,15,128,124,15,128,124,15,192,252,15,192, + 252,15,192,252,15,192,255,255,192,252,0,0,252,0,0,252, + 0,0,252,0,64,124,0,64,124,0,192,62,0,192,62,0, + 128,31,1,0,15,131,0,3,252,0,18,32,96,23,2,0, + 30,15,0,63,31,128,63,31,128,63,31,128,63,31,128,30, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,3,252, + 0,14,30,0,30,31,0,62,15,128,60,15,128,124,15,128, + 124,15,192,252,15,192,252,15,192,252,15,192,255,255,192,252, + 0,0,252,0,0,252,0,0,252,0,64,124,0,64,124,0, + 192,62,0,192,62,0,128,31,1,0,15,131,0,3,252,0, + 12,34,68,15,1,0,96,0,240,0,248,0,248,0,124,0, + 28,0,14,0,7,0,3,0,0,0,0,0,0,0,127,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,127,240,12,34,68,15,2,0, + 0,224,1,240,1,240,3,224,7,192,7,128,15,0,28,0, + 24,0,0,0,0,0,0,0,255,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,255,224,14,34,68,14,0,0,7,128,15,128,15,128, + 15,192,31,224,60,224,56,112,112,60,192,12,0,0,0,0, + 0,0,63,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,63,248,14,32, + 64,14,1,0,120,120,252,252,252,252,252,252,252,252,120,120, + 0,0,0,0,0,0,0,0,63,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,63,248,20,34,102,24,2,0,15,193,128,15,227,0, + 7,254,0,3,248,0,1,248,0,1,252,0,3,254,0,14, + 126,0,24,63,0,0,63,128,0,31,128,0,15,192,7,255, + 192,15,15,224,30,7,224,62,7,224,62,7,224,124,7,240, + 124,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,124,3,224,124,7, + 224,62,7,192,62,7,192,30,7,128,15,15,0,3,252,0, + 23,32,96,27,2,0,3,224,96,7,248,64,15,255,192,12, + 127,128,8,15,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,31,192,63,35,224,63,65,240,63,65,248, + 63,129,248,63,129,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,63,1, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,255,199,254,20,34,102,24,2,0,14,0,0,31, + 0,0,31,0,0,15,128,0,7,192,0,3,192,0,1,224, + 0,0,96,0,0,48,0,0,0,0,0,0,0,0,0,0, + 3,252,0,15,15,0,30,7,128,62,7,192,62,7,192,124, + 3,224,124,3,224,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,124,3,224, + 124,3,224,62,7,192,62,7,192,30,7,128,15,15,0,3, + 252,0,20,34,102,24,2,0,0,7,0,0,15,128,0,15, + 128,0,31,0,0,62,0,0,60,0,0,120,0,0,224,0, + 0,192,0,0,0,0,0,0,0,0,0,0,3,252,0,15, + 15,0,30,7,128,62,7,192,62,7,192,124,3,224,124,3, + 224,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,252,3,240,124,3,224,124,3,224,62, + 7,192,62,7,192,30,7,128,15,15,0,3,252,0,20,34, + 102,24,2,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,252,0,3,156,0,7,14,0,14,7,0,24,1,128,0, + 0,0,0,0,0,0,0,0,3,252,0,15,15,0,30,7, + 128,62,7,192,62,7,192,124,3,224,124,3,224,252,3,240, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,224,124,3,224,62,7,192,62,7, + 192,30,7,128,15,15,0,3,252,0,20,32,96,24,2,0, + 7,192,128,15,240,128,31,255,128,16,255,0,16,62,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,252, + 0,15,15,0,30,7,128,62,7,192,62,7,192,124,3,224, + 124,3,224,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,124,3,224,124,3, + 224,62,7,192,62,7,192,30,7,128,15,15,0,3,252,0, + 20,32,96,24,2,0,30,15,0,63,31,128,63,31,128,63, + 31,128,63,31,128,30,15,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,252,0,15,15,0,30,7,128,62,7,192, + 62,7,192,124,3,224,124,3,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,124,3,224,124,3,224,62,7,192,62,7,192,30,7,128, + 15,15,0,3,252,0,41,32,192,45,2,253,0,0,28,0, + 0,0,0,0,62,0,0,0,0,0,127,0,0,0,0,0, + 127,0,0,0,0,0,127,0,0,0,0,0,62,0,0,0, + 0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,28,0,0,0,0,0,62,0,0,0,0,0, + 127,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0, + 0,0,62,0,0,0,0,0,28,0,0,0,20,22,66,24, + 2,1,3,252,48,15,15,96,30,15,192,62,7,192,62,7, + 192,124,7,224,124,7,224,252,15,240,252,27,240,252,51,240, + 252,115,240,252,227,240,252,195,240,253,131,240,255,3,240,126, + 3,224,126,3,224,62,7,192,62,7,192,63,7,128,111,15, + 0,195,252,0,24,34,102,26,1,0,7,0,0,7,128,0, + 7,192,0,7,192,0,3,224,0,1,224,0,0,112,0,0, + 48,0,0,24,0,0,0,0,0,0,0,0,0,0,255,143, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,131, + 248,31,131,248,31,133,248,15,133,248,15,201,248,7,241,255, + 24,34,102,26,1,0,0,3,128,0,3,128,0,7,128,0, + 15,128,0,15,0,0,30,0,0,28,0,0,56,0,0,48, + 0,0,0,0,0,0,0,0,0,0,255,143,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,131,248,31,131,248, + 31,133,248,15,133,248,15,201,248,7,241,255,24,34,102,26, + 1,0,0,56,0,0,120,0,0,124,0,0,252,0,0,254, + 0,1,206,0,3,135,0,7,3,128,14,0,192,0,0,0, + 0,0,0,0,0,0,255,143,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,131,248,31,131,248,31,133,248,15, + 133,248,15,201,248,7,241,255,24,32,96,26,1,0,7,131, + 192,15,199,224,15,199,224,15,199,224,15,199,224,7,131,192, + 0,0,0,0,0,0,0,0,0,0,0,0,255,135,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,131,248,31, + 131,248,31,133,248,15,133,248,15,201,248,7,241,255,23,45, + 135,25,1,245,0,1,192,0,1,224,0,3,224,0,7,192, + 0,7,128,0,15,0,0,14,0,0,28,0,0,24,0,0, + 0,0,0,0,0,0,0,0,255,241,254,63,192,120,31,128, + 48,15,192,32,15,192,32,15,192,96,7,224,64,7,224,64, + 3,240,192,3,240,128,1,248,128,1,249,128,0,249,0,0, + 253,0,0,253,0,0,126,0,0,126,0,0,62,0,0,60, + 0,0,28,0,0,28,0,0,12,0,0,8,0,0,8,0, + 0,8,0,15,16,0,31,16,0,63,144,0,63,32,0,62, + 32,0,62,64,0,31,192,0,15,0,0,22,44,132,25,1, + 244,3,128,0,15,128,0,63,128,0,255,128,0,223,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 135,240,31,159,248,31,177,248,31,160,252,31,192,252,31,192, + 252,31,192,252,31,128,252,31,128,252,31,128,248,31,129,248, + 31,129,240,31,129,240,31,129,224,31,131,192,31,131,128,31, + 135,128,31,134,0,31,140,0,31,152,0,31,224,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,30,0,0,120,0,0,224, + 0,0,128,0,0,23,44,132,25,1,245,3,193,224,7,227, + 240,7,227,240,7,227,240,7,227,240,3,193,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,241,254,63, + 192,120,31,128,48,15,192,32,15,192,32,15,192,96,7,224, + 64,7,224,64,3,240,192,3,240,128,1,240,128,1,249,128, + 0,249,0,0,253,0,0,253,0,0,126,0,0,126,0,0, + 62,0,0,60,0,0,28,0,0,28,0,0,12,0,0,8, + 0,0,8,0,0,8,0,15,16,0,31,16,0,63,144,0, + 63,32,0,62,32,0,62,64,0,31,192,0,15,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 34 + Calculated Max Values w=41 h=44 x= 6 y=13 dx=45 dy= 0 ascent=35 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =34 descent= 0 + X Font ascent =34 descent= 0 + Max Font ascent =35 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35n[1539] U8G_SECTION(".progmem.u8g_font_osb35n") = { + 0,133,60,215,242,34,0,0,0,0,42,57,0,35,247,34, + 0,17,19,57,24,4,13,1,128,0,3,192,0,3,192,0, + 227,195,0,241,135,128,248,143,128,252,159,128,126,191,0,3, + 192,0,3,192,0,126,191,0,252,159,128,248,143,128,241,135, + 128,225,195,0,3,192,0,3,192,0,3,192,0,1,128,0, + 41,41,246,45,2,249,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,255,255,255,255,255,128,255,255, + 255,255,255,128,255,255,255,255,255,128,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,9,15,30,13, + 2,248,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,2,0,6,0,28,0,56,0,96,0, + 12,5,10,18,3,10,255,240,255,240,255,240,255,240,255,240, + 8,6,6,14,3,1,126,255,255,255,255,126,16,44,88,22, + 3,247,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,1,224,1,192,1,192,3,192,3,128, + 3,128,7,128,7,0,7,0,15,0,14,0,14,0,14,0, + 30,0,28,0,28,0,60,0,56,0,56,0,120,0,112,0, + 112,0,240,0,224,0,224,0,224,0,23,35,105,28,2,0, + 0,16,0,0,254,0,3,199,128,7,131,192,15,1,224,15, + 1,224,31,1,240,63,1,248,63,1,248,127,1,248,127,1, + 252,127,1,252,127,1,252,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,255,1,254,127,1,252,127,1,252,127,1,252,127,1, + 252,63,1,248,63,1,248,31,1,240,15,1,224,15,1,224, + 7,131,192,3,199,128,0,254,0,16,34,68,28,6,0,0, + 240,0,240,1,240,7,240,255,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,255, + 255,255,255,21,34,102,28,3,1,7,255,0,14,15,192,28, + 7,224,56,7,240,120,3,240,120,3,248,248,3,248,252,3, + 248,255,3,248,255,3,248,255,7,248,127,7,240,63,15,240, + 12,15,224,0,31,192,0,63,128,0,127,0,0,252,0,1, + 240,0,3,192,0,7,128,0,14,0,24,12,0,24,24,0, + 24,48,0,24,96,0,24,111,192,56,127,255,248,255,255,240, + 239,255,240,195,255,240,193,255,224,192,255,192,192,63,128,22, + 34,102,28,3,1,7,255,0,14,15,192,28,7,224,56,7, + 240,120,3,240,124,3,248,126,3,248,127,3,248,127,3,248, + 127,3,248,63,3,240,30,3,240,0,7,224,0,7,192,0, + 15,0,7,248,0,0,31,128,0,15,192,0,7,224,0,7, + 240,0,3,248,0,3,248,62,3,252,127,3,252,255,3,252, + 255,3,252,255,3,252,254,3,252,252,3,248,248,7,248,120, + 7,240,56,15,224,30,31,192,15,255,0,23,34,102,28,2, + 0,0,7,192,0,15,192,0,15,192,0,31,192,0,63,192, + 0,63,192,0,127,192,0,127,192,0,255,192,0,223,192,1, + 223,192,1,159,192,3,159,192,7,31,192,6,31,192,14,31, + 192,12,31,192,28,31,192,24,31,192,56,31,192,112,31,192, + 96,31,192,224,31,192,255,255,254,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,0,31, + 192,7,255,252,7,255,252,21,34,102,28,4,0,32,0,192, + 60,7,128,63,255,128,63,255,0,63,254,0,63,248,0,63, + 224,0,63,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,49,252,0,54,63,0,60,15,192,56,15,224, + 48,15,224,32,7,240,0,7,240,0,7,248,0,7,248,8, + 7,248,62,7,248,126,7,248,254,7,248,254,7,248,254,7, + 240,248,7,240,240,7,224,112,15,192,48,15,192,28,31,0, + 15,252,0,22,34,102,28,3,1,0,255,128,3,192,192,7, + 192,96,15,128,240,31,131,240,31,7,240,63,15,240,63,15, + 240,127,15,224,127,7,192,127,3,0,127,0,0,255,0,0, + 255,0,0,255,63,0,255,255,192,255,195,224,255,131,240,255, + 3,248,255,1,248,255,1,252,255,1,252,255,1,252,127,1, + 252,127,1,252,127,1,252,127,1,252,63,1,248,63,1,248, + 31,1,248,15,129,240,7,131,224,3,195,192,1,255,0,20, + 34,102,28,5,1,71,224,224,207,240,224,223,248,112,255,252, + 48,255,254,48,255,255,240,255,255,240,224,31,176,192,0,32, + 192,0,96,128,0,96,128,0,192,128,1,192,0,1,128,0, + 3,128,0,7,0,0,15,0,0,14,0,0,30,0,0,60, + 0,0,124,0,0,252,0,1,252,0,1,248,0,3,248,0, + 3,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,7,248,0,3,248,0,3,240,0,23,34,102,28,3, + 1,1,255,128,7,0,192,12,0,96,28,0,48,56,0,24, + 56,0,24,120,0,24,120,0,24,124,0,24,126,0,24,127, + 0,48,127,192,32,127,240,96,63,255,128,63,255,0,31,255, + 192,15,255,240,7,255,248,15,255,248,24,63,252,48,15,252, + 112,3,254,96,0,254,224,0,126,224,0,62,224,0,30,224, + 0,30,224,0,12,240,0,28,112,0,24,56,0,24,28,0, + 48,15,0,192,3,255,0,22,34,102,28,3,1,3,254,0, + 15,15,0,31,7,128,62,7,192,126,3,224,126,3,240,126, + 3,240,254,3,248,254,3,248,254,3,248,254,3,248,254,3, + 252,254,3,252,254,3,252,126,3,252,127,7,252,63,7,252, + 31,15,252,15,255,252,3,243,252,0,3,252,0,3,252,0, + 3,248,7,3,248,31,131,248,31,195,248,63,195,240,63,195, + 240,63,131,224,62,7,224,60,7,192,28,15,128,14,31,0, + 7,252,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 6 y=25 dx=52 dy= 0 ascent=38 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =35 descent=-10 + Max Font ascent =38 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35r[10245] U8G_SECTION(".progmem.u8g_font_osb35r") = { + 0,133,60,215,242,35,12,218,29,222,32,127,246,38,245,35, + 246,0,0,0,13,0,0,8,34,34,14,3,1,126,126,255, + 255,255,255,255,255,126,126,126,126,60,60,60,60,60,24,24, + 24,24,24,24,24,24,0,0,0,126,255,255,255,255,126,12, + 12,24,18,3,23,32,64,241,224,249,240,249,240,249,240,249, + 240,249,240,112,224,112,224,112,224,112,224,112,224,28,34,136, + 34,3,0,0,112,14,0,0,112,14,0,0,112,14,0,0, + 112,14,0,0,240,30,0,0,224,28,0,0,224,28,0,0, + 224,28,0,0,224,28,0,255,255,255,240,255,255,255,240,255, + 255,255,240,1,192,56,0,1,192,56,0,1,192,56,0,1, + 192,56,0,3,192,56,0,3,128,120,0,3,128,112,0,3, + 128,112,0,3,128,112,0,3,128,112,0,255,255,255,224,255, + 255,255,224,255,255,255,224,7,0,224,0,7,0,224,0,7, + 0,224,0,7,0,224,0,15,1,224,0,14,1,224,0,14, + 1,192,0,14,1,192,0,14,1,192,0,23,42,126,28,2, + 252,0,195,0,0,195,0,0,195,0,0,195,0,3,255,192, + 7,195,112,28,195,24,60,195,12,56,195,14,120,195,14,120, + 195,30,120,195,62,124,195,126,126,195,126,127,195,124,127,195, + 56,63,243,0,63,251,0,31,255,0,31,255,128,7,255,192, + 3,255,240,0,255,248,0,255,248,0,223,252,0,199,252,124, + 195,254,124,195,254,252,195,126,252,195,62,248,195,30,240,195, + 30,224,195,28,96,195,28,112,195,56,56,195,56,28,195,96, + 7,255,192,0,195,0,0,195,0,0,195,0,0,195,0,33, + 35,175,41,4,0,0,0,0,48,0,15,192,0,96,0,60, + 240,0,224,0,56,112,0,192,0,120,120,1,128,0,120,120, + 1,128,0,248,124,3,0,0,248,124,7,0,0,248,124,6, + 0,0,248,124,14,0,0,248,124,12,0,0,248,124,24,0, + 0,120,120,24,0,0,120,120,48,0,0,56,240,112,0,0, + 28,224,96,0,0,15,192,192,0,0,0,0,192,0,0,0, + 1,128,240,0,0,3,131,156,0,0,3,7,158,0,0,7, + 15,15,0,0,6,15,15,0,0,12,31,15,128,0,12,31, + 15,128,0,24,31,15,128,0,56,31,15,128,0,48,31,15, + 128,0,96,31,15,128,0,96,31,15,128,0,192,15,15,0, + 1,192,15,15,0,1,128,7,14,0,3,128,7,158,0,3, + 0,1,248,0,33,34,170,37,2,1,0,31,224,0,0,0, + 112,112,0,0,0,224,48,0,0,0,224,24,0,0,1,224, + 24,0,0,1,224,24,0,0,1,224,24,0,0,1,240,56, + 0,0,1,240,48,0,0,1,248,96,0,0,1,248,192,0, + 0,0,255,128,0,0,0,255,0,0,0,0,126,0,0,0, + 0,63,0,0,0,0,255,129,255,128,1,223,128,62,0,3, + 143,192,28,0,7,15,224,24,0,14,7,224,56,0,30,3, + 240,48,0,60,1,248,48,0,124,1,248,96,0,124,0,252, + 96,0,252,0,126,192,0,252,0,127,128,0,252,0,63,128, + 0,254,0,31,128,0,255,0,31,128,0,255,0,15,193,128, + 127,192,63,225,0,63,248,247,243,0,31,255,195,254,0,15, + 254,0,252,0,5,12,12,11,3,23,32,240,248,248,248,248, + 248,112,112,112,112,112,14,43,86,18,3,248,0,28,0,56, + 0,112,0,224,1,192,3,128,7,0,15,0,14,0,30,0, + 30,0,60,0,60,0,124,0,124,0,124,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 124,0,124,0,124,0,124,0,60,0,60,0,30,0,30,0, + 14,0,15,0,7,0,3,128,1,192,0,224,0,112,0,56, + 0,12,13,43,86,17,1,248,192,0,224,0,48,0,24,0, + 28,0,14,0,7,0,7,128,3,128,3,192,1,224,1,224, + 1,224,1,240,1,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 1,240,1,240,1,224,1,224,3,192,3,192,3,128,7,128, + 7,0,14,0,28,0,56,0,112,0,224,0,128,0,17,19, + 57,24,4,13,1,128,0,3,192,0,3,192,0,227,195,0, + 241,135,128,248,143,128,252,159,128,126,191,0,3,192,0,3, + 192,0,126,191,0,252,159,128,248,143,128,241,135,128,225,195, + 0,3,192,0,3,192,0,3,192,0,1,128,0,41,41,246, + 45,2,249,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,255,255,255,255,255,128,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,9,15,30,13,2,248,126, + 0,255,0,255,128,255,128,255,128,127,128,1,128,1,128,1, + 128,3,0,2,0,6,0,28,0,56,0,96,0,12,5,10, + 18,3,10,255,240,255,240,255,240,255,240,255,240,8,6,6, + 14,3,1,126,255,255,255,255,126,16,44,88,22,3,247,0, + 7,0,15,0,14,0,14,0,14,0,30,0,28,0,28,0, + 60,0,56,0,56,0,120,0,112,0,112,0,240,0,224,0, + 224,0,224,1,224,1,192,1,192,3,192,3,128,3,128,7, + 128,7,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,0,23,35,105,28,2,0,0,16,0, + 0,254,0,3,199,128,7,131,192,15,1,224,15,1,224,31, + 1,240,63,1,248,63,1,248,127,1,248,127,1,252,127,1, + 252,127,1,252,255,1,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,127,1,252,127,1,252,127,1,252,127,1,252,63,1, + 248,63,1,248,31,1,240,15,1,224,15,1,224,7,131,192, + 3,199,128,0,254,0,16,34,68,28,6,0,0,240,0,240, + 1,240,7,240,255,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,255,255,255,255, + 21,34,102,28,3,1,7,255,0,14,15,192,28,7,224,56, + 7,240,120,3,240,120,3,248,248,3,248,252,3,248,255,3, + 248,255,3,248,255,7,248,127,7,240,63,15,240,12,15,224, + 0,31,192,0,63,128,0,127,0,0,252,0,1,240,0,3, + 192,0,7,128,0,14,0,24,12,0,24,24,0,24,48,0, + 24,96,0,24,111,192,56,127,255,248,255,255,240,239,255,240, + 195,255,240,193,255,224,192,255,192,192,63,128,22,34,102,28, + 3,1,7,255,0,14,15,192,28,7,224,56,7,240,120,3, + 240,124,3,248,126,3,248,127,3,248,127,3,248,127,3,248, + 63,3,240,30,3,240,0,7,224,0,7,192,0,15,0,7, + 248,0,0,31,128,0,15,192,0,7,224,0,7,240,0,3, + 248,0,3,248,62,3,252,127,3,252,255,3,252,255,3,252, + 255,3,252,254,3,252,252,3,248,248,7,248,120,7,240,56, + 15,224,30,31,192,15,255,0,23,34,102,28,2,0,0,7, + 192,0,15,192,0,15,192,0,31,192,0,63,192,0,63,192, + 0,127,192,0,127,192,0,255,192,0,223,192,1,223,192,1, + 159,192,3,159,192,7,31,192,6,31,192,14,31,192,12,31, + 192,28,31,192,24,31,192,56,31,192,112,31,192,96,31,192, + 224,31,192,255,255,254,0,31,192,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,7,255, + 252,7,255,252,21,34,102,28,4,0,32,0,192,60,7,128, + 63,255,128,63,255,0,63,254,0,63,248,0,63,224,0,63, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,49,252,0,54,63,0,60,15,192,56,15,224,48,15,224, + 32,7,240,0,7,240,0,7,248,0,7,248,8,7,248,62, + 7,248,126,7,248,254,7,248,254,7,248,254,7,240,248,7, + 240,240,7,224,112,15,192,48,15,192,28,31,0,15,252,0, + 22,34,102,28,3,1,0,255,128,3,192,192,7,192,96,15, + 128,240,31,131,240,31,7,240,63,15,240,63,15,240,127,15, + 224,127,7,192,127,3,0,127,0,0,255,0,0,255,0,0, + 255,63,0,255,255,192,255,195,224,255,131,240,255,3,248,255, + 1,248,255,1,252,255,1,252,255,1,252,127,1,252,127,1, + 252,127,1,252,127,1,252,63,1,248,63,1,248,31,1,248, + 15,129,240,7,131,224,3,195,192,1,255,0,20,34,102,28, + 5,1,71,224,224,207,240,224,223,248,112,255,252,48,255,254, + 48,255,255,240,255,255,240,224,31,176,192,0,32,192,0,96, + 128,0,96,128,0,192,128,1,192,0,1,128,0,3,128,0, + 7,0,0,15,0,0,14,0,0,30,0,0,60,0,0,124, + 0,0,252,0,1,252,0,1,248,0,3,248,0,3,248,0, + 7,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,248,0,3,240,0,23,34,102,28,3,1,1,255, + 128,7,0,192,12,0,96,28,0,48,56,0,24,56,0,24, + 120,0,24,120,0,24,124,0,24,126,0,24,127,0,48,127, + 192,32,127,240,96,63,255,128,63,255,0,31,255,192,15,255, + 240,7,255,248,15,255,248,24,63,252,48,15,252,112,3,254, + 96,0,254,224,0,126,224,0,62,224,0,30,224,0,30,224, + 0,12,240,0,28,112,0,24,56,0,24,28,0,48,15,0, + 192,3,255,0,22,34,102,28,3,1,3,254,0,15,15,0, + 31,7,128,62,7,192,126,3,224,126,3,240,126,3,240,254, + 3,248,254,3,248,254,3,248,254,3,248,254,3,252,254,3, + 252,254,3,252,126,3,252,127,7,252,63,7,252,31,15,252, + 15,255,252,3,243,252,0,3,252,0,3,252,0,3,248,7, + 3,248,31,131,248,31,195,248,63,195,240,63,195,240,63,131, + 224,62,7,224,60,7,192,28,15,128,14,31,0,7,252,0, + 8,22,22,14,3,1,126,255,255,255,255,126,0,0,0,0, + 0,0,0,0,0,0,126,255,255,255,255,126,9,31,62,13, + 2,248,63,0,127,128,127,128,127,128,127,128,63,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,3,0,6,0,28,0,56,0,96,0, + 37,40,200,45,4,249,0,0,0,0,48,0,0,0,0,240, + 0,0,0,1,248,0,0,0,7,224,0,0,0,31,128,0, + 0,0,126,0,0,0,1,252,0,0,0,7,240,0,0,0, + 15,192,0,0,0,63,0,0,0,0,252,0,0,0,3,240, + 0,0,0,15,224,0,0,0,63,128,0,0,0,126,0,0, + 0,1,248,0,0,0,7,224,0,0,0,31,128,0,0,0, + 127,0,0,0,0,252,0,0,0,0,248,0,0,0,0,126, + 0,0,0,0,31,128,0,0,0,15,224,0,0,0,3,248, + 0,0,0,0,252,0,0,0,0,63,0,0,0,0,15,192, + 0,0,0,3,240,0,0,0,1,252,0,0,0,0,127,0, + 0,0,0,31,192,0,0,0,7,224,0,0,0,1,248,0, + 0,0,0,126,0,0,0,0,63,128,0,0,0,15,224,0, + 0,0,3,248,0,0,0,0,248,0,0,0,0,48,41,13, + 78,45,2,6,255,255,255,255,255,128,255,255,255,255,255,128, + 255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,37,40,200,45,4,249,96,0,0,0,0,120,0,0, + 0,0,252,0,0,0,0,63,0,0,0,0,15,192,0,0, + 0,3,240,0,0,0,1,252,0,0,0,0,127,0,0,0, + 0,31,128,0,0,0,7,224,0,0,0,1,248,0,0,0, + 0,126,0,0,0,0,63,128,0,0,0,15,224,0,0,0, + 3,240,0,0,0,0,252,0,0,0,0,63,0,0,0,0, + 15,192,0,0,0,7,240,0,0,0,1,248,0,0,0,0, + 248,0,0,0,3,240,0,0,0,15,192,0,0,0,63,128, + 0,0,0,254,0,0,0,1,248,0,0,0,7,224,0,0, + 0,31,128,0,0,0,126,0,0,0,1,252,0,0,0,7, + 240,0,0,0,31,192,0,0,0,63,0,0,0,0,252,0, + 0,0,3,240,0,0,0,15,224,0,0,0,63,128,0,0, + 0,254,0,0,0,0,248,0,0,0,0,96,0,0,0,0, + 15,34,68,22,3,1,31,240,59,248,96,252,96,252,192,126, + 192,126,192,126,192,126,192,126,64,252,96,252,48,248,1,240, + 1,224,3,192,3,128,7,0,7,0,14,0,12,16,12,16, + 12,16,12,16,6,32,3,192,0,0,0,0,0,128,3,224, + 7,240,7,240,7,240,7,240,3,224,35,34,170,39,2,1, + 0,15,255,0,0,0,56,1,224,0,0,224,0,112,0,1, + 128,0,28,0,7,0,0,14,0,14,0,0,7,0,12,0, + 248,3,0,28,3,205,243,128,56,7,135,241,128,56,15,7, + 225,192,112,31,7,225,192,112,62,7,224,224,112,62,7,224, + 224,224,124,7,192,224,224,124,7,192,224,224,124,7,192,224, + 224,252,15,192,224,224,248,15,128,224,224,248,15,128,224,224, + 248,15,129,192,224,248,31,129,192,224,248,31,129,128,112,248, + 31,3,128,112,248,63,3,0,112,120,111,6,0,56,60,199, + 140,0,56,31,3,240,0,28,0,0,0,0,14,0,0,0, + 0,7,0,0,0,0,3,128,0,0,0,1,192,0,96,0, + 0,120,1,192,0,0,31,255,0,0,33,35,175,36,2,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,2,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,31,0,15,252,0,255,240,255,255,128,28, + 34,136,33,3,0,255,255,240,0,15,224,126,0,15,224,31, + 0,15,224,31,128,15,224,15,192,15,224,15,192,15,224,15, + 224,15,224,15,224,15,224,15,224,15,224,15,224,15,224,15, + 224,15,224,15,192,15,224,15,192,15,224,31,128,15,224,30, + 0,15,224,60,0,15,255,224,0,15,224,124,0,15,224,63, + 0,15,224,31,128,15,224,15,192,15,224,15,224,15,224,15, + 240,15,224,15,240,15,224,15,240,15,224,15,240,15,224,15, + 240,15,224,15,240,15,224,15,224,15,224,15,224,15,224,31, + 192,15,224,31,128,15,224,126,0,255,255,248,0,26,34,136, + 31,3,1,0,127,193,128,1,224,241,128,3,192,63,128,15, + 128,31,128,15,128,15,128,31,0,15,128,63,0,7,128,63, + 0,7,128,127,0,3,128,127,0,3,128,127,0,3,128,127, + 0,1,128,255,0,1,128,255,0,1,128,255,0,1,128,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,192,127,0,0,192,127, + 0,0,192,127,0,0,128,63,0,1,128,63,0,1,128,63, + 0,1,128,31,128,3,0,15,128,3,0,7,128,6,0,3, + 192,12,0,1,224,56,0,0,127,224,0,32,34,136,37,3, + 0,255,255,248,0,15,224,31,0,15,224,7,128,15,224,3, + 224,15,224,1,240,15,224,1,240,15,224,0,248,15,224,0, + 252,15,224,0,252,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,254,15,224,0,252,15,224,0,252,15,224,0, + 248,15,224,1,240,15,224,1,224,15,224,3,192,15,224,7, + 128,15,224,30,0,255,255,248,0,27,34,136,33,3,0,255, + 255,255,224,15,224,31,224,15,224,7,224,15,224,3,224,15, + 224,1,224,15,224,1,224,15,224,0,224,15,224,0,224,15, + 224,0,96,15,224,48,96,15,224,48,96,15,224,48,0,15, + 224,112,0,15,224,112,0,15,224,240,0,15,225,240,0,15, + 255,240,0,15,225,240,0,15,224,240,0,15,224,112,0,15, + 224,112,32,15,224,48,96,15,224,48,96,15,224,48,96,15, + 224,0,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,1,224,15,224,3,224,15,224,3,224,15,224,15,224,255, + 255,255,224,255,255,255,224,28,34,136,32,3,0,255,255,255, + 240,7,240,15,240,7,240,3,240,7,240,1,240,7,240,1, + 240,7,240,0,240,7,240,0,240,7,240,0,112,7,240,0, + 112,7,240,24,48,7,240,24,48,7,240,24,48,7,240,56, + 48,7,240,56,0,7,240,120,0,7,240,248,0,7,255,248, + 0,7,240,248,0,7,240,120,0,7,240,56,0,7,240,56, + 0,7,240,24,0,7,240,24,0,7,240,24,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,128,0,30,34,136,35,3,1,0,127,224,192,0, + 224,120,192,3,192,31,192,7,128,15,192,15,128,7,192,31, + 0,7,192,31,0,3,192,63,0,3,192,63,0,1,192,127, + 0,1,192,127,0,1,192,127,0,0,192,255,0,0,192,255, + 0,0,192,255,0,0,0,255,0,0,0,255,0,0,0,255, + 3,255,252,255,3,255,252,255,0,31,192,255,0,31,192,255, + 0,31,192,127,0,31,192,127,0,31,192,127,0,31,192,127, + 0,31,192,63,0,31,192,63,0,31,192,31,0,31,192,15, + 128,57,192,15,128,49,192,7,192,96,192,1,224,192,192,0, + 127,128,192,34,34,170,39,3,0,255,255,63,255,192,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,255,255,252,0,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,255,255, + 63,255,192,16,34,68,21,3,0,255,255,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,255,255,23,34,102, + 26,2,0,1,255,254,0,15,224,0,15,224,0,15,224,0, + 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 224,0,15,224,0,15,224,0,15,224,0,15,224,0,15,224, + 0,15,224,0,15,224,0,15,224,0,15,224,0,15,224,0, + 15,224,30,15,224,126,15,224,127,15,224,255,15,224,255,15, + 224,254,15,224,254,15,224,248,15,192,112,15,192,96,15,128, + 48,31,0,24,30,0,15,248,0,33,34,170,37,3,0,255, + 255,31,254,0,7,240,7,240,0,7,240,3,192,0,7,240, + 3,128,0,7,240,3,0,0,7,240,7,0,0,7,240,14, + 0,0,7,240,12,0,0,7,240,24,0,0,7,240,48,0, + 0,7,240,96,0,0,7,240,224,0,0,7,240,224,0,0, + 7,241,240,0,0,7,243,240,0,0,7,247,248,0,0,7, + 255,252,0,0,7,255,252,0,0,7,249,254,0,0,7,241, + 254,0,0,7,240,255,0,0,7,240,255,0,0,7,240,127, + 128,0,7,240,127,128,0,7,240,63,192,0,7,240,63,192, + 0,7,240,31,224,0,7,240,31,224,0,7,240,15,240,0, + 7,240,15,240,0,7,240,7,248,0,7,240,7,248,0,7, + 240,7,252,0,255,255,63,255,128,28,34,136,32,3,0,255, + 255,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,48,7, + 240,0,48,7,240,0,48,7,240,0,112,7,240,0,112,7, + 240,0,112,7,240,0,240,7,240,0,240,7,240,0,240,7, + 240,1,240,7,240,3,240,7,240,3,240,7,240,7,240,255, + 255,255,240,255,255,255,240,39,34,170,43,2,0,255,240,0, + 63,254,7,240,0,63,192,7,248,0,63,192,7,248,0,63, + 192,7,248,0,127,192,7,252,0,127,192,7,252,0,95,192, + 7,252,0,95,192,7,254,0,223,192,6,254,0,223,192,6, + 255,0,159,192,6,127,0,159,192,6,127,1,159,192,6,127, + 129,159,192,6,63,129,31,192,6,63,129,31,192,6,63,195, + 31,192,6,31,194,31,192,6,31,226,31,192,6,15,226,31, + 192,6,15,230,31,192,6,15,244,31,192,6,7,244,31,192, + 6,7,244,31,192,6,7,252,31,192,6,3,248,31,192,6, + 3,248,31,192,6,1,248,31,192,6,1,248,31,192,6,1, + 240,31,192,6,0,240,31,192,15,0,240,31,192,63,192,240, + 31,192,255,240,97,255,254,34,35,175,37,2,255,255,224,15, + 255,192,31,240,3,255,0,15,240,0,252,0,15,248,0,120, + 0,7,252,0,48,0,3,254,0,48,0,3,254,0,48,0, + 3,255,0,48,0,3,255,128,48,0,3,255,128,48,0,3, + 127,192,48,0,3,63,224,48,0,3,31,224,48,0,3,31, + 240,48,0,3,15,248,48,0,3,7,248,48,0,3,7,252, + 48,0,3,3,254,48,0,3,1,255,48,0,3,1,255,48, + 0,3,0,255,176,0,3,0,127,240,0,3,0,127,240,0, + 3,0,63,240,0,3,0,31,240,0,3,0,15,240,0,3, + 0,15,240,0,3,0,7,240,0,3,0,3,240,0,3,0, + 3,240,0,7,128,1,240,0,15,192,0,240,0,63,240,0, + 240,0,255,252,0,112,0,0,0,0,48,0,28,34,136,33, + 3,1,0,63,192,0,0,224,112,0,3,192,56,0,7,128, + 30,0,15,128,30,0,15,0,15,0,31,0,15,128,63,0, + 15,192,63,0,15,192,127,0,15,192,127,0,15,224,127,0, + 15,224,127,0,15,224,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,127,0,15,192,63,0,15,192,63,0,15,192,31,0, + 15,128,15,0,15,0,15,128,31,0,7,128,30,0,3,192, + 60,0,0,224,112,0,0,63,192,0,29,34,136,34,3,0, + 255,255,248,0,7,240,63,0,7,240,15,192,7,240,15,224, + 7,240,15,240,7,240,7,240,7,240,7,248,7,240,7,248, + 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,248, + 7,240,7,240,7,240,15,240,7,240,15,224,7,240,15,192, + 7,240,31,0,7,255,252,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,255,255,128,0,28,45,180,33,3,246,0,63, + 192,0,0,224,112,0,3,192,56,0,7,128,30,0,15,128, + 30,0,15,0,15,0,31,0,15,128,63,0,15,128,63,0, + 15,192,127,0,15,192,127,0,15,224,127,0,15,224,127,0, + 15,224,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,63,0,15,192,63,15,15,192,31,17,143,128,15,160, + 223,0,15,160,223,0,7,160,254,0,3,224,252,16,0,240, + 248,16,0,127,224,16,0,0,224,16,0,0,224,16,0,0, + 224,48,0,0,240,48,0,0,248,112,0,0,255,240,0,0, + 255,224,0,0,127,224,0,0,127,192,0,0,63,128,0,0, + 31,0,32,36,144,36,3,254,255,255,240,0,7,240,126,0, + 7,240,63,0,7,240,63,128,7,240,31,192,7,240,31,192, + 7,240,31,224,7,240,31,224,7,240,31,224,7,240,31,224, + 7,240,31,224,7,240,31,192,7,240,63,192,7,240,63,0, + 7,240,126,0,7,255,240,0,7,240,240,0,7,240,62,0, + 7,240,63,0,7,240,31,128,7,240,31,128,7,240,31,192, + 7,240,31,192,7,240,31,192,7,240,31,192,7,240,31,195, + 7,240,31,195,7,240,31,195,7,240,31,195,7,240,31,195, + 7,240,31,198,7,240,31,198,7,240,15,238,255,255,135,252, + 0,0,3,248,0,0,0,96,23,34,102,29,4,1,7,252, + 24,24,15,24,56,3,248,112,1,248,112,0,248,240,0,120, + 248,0,120,248,0,56,252,0,24,254,0,24,255,128,24,255, + 224,8,127,240,0,127,252,0,63,254,0,31,255,128,15,255, + 192,3,255,240,1,255,248,128,127,248,192,31,252,192,15,252, + 192,3,254,224,1,254,224,0,126,224,0,62,240,0,30,248, + 0,30,248,0,28,252,0,28,254,0,24,239,0,48,195,128, + 96,193,255,128,29,34,136,34,3,0,255,255,255,248,255,63, + 231,248,252,31,193,248,248,31,192,248,248,31,192,248,240,31, + 192,120,224,31,192,56,224,31,192,56,224,31,192,56,192,31, + 192,24,192,31,192,24,192,31,192,24,192,31,192,24,128,31, + 192,8,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,3,255, + 254,0,33,34,170,38,3,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,34,34,170,37,2,0,255,255,135,255,192,15,248,0, + 126,0,7,248,0,56,0,7,248,0,56,0,3,248,0,48, + 0,3,252,0,48,0,3,252,0,48,0,1,254,0,96,0, + 1,254,0,96,0,0,254,0,96,0,0,255,0,192,0,0, + 255,0,192,0,0,127,0,192,0,0,127,129,128,0,0,127, + 129,128,0,0,63,129,128,0,0,63,195,0,0,0,63,195, + 0,0,0,31,195,0,0,0,31,230,0,0,0,15,230,0, + 0,0,15,246,0,0,0,15,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,248,0,0,0,3,248,0,0,0, + 3,248,0,0,0,3,240,0,0,0,1,240,0,0,0,1, + 240,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224, + 0,0,49,34,238,52,2,0,255,255,63,255,207,255,128,31, + 252,7,254,0,252,0,7,248,3,252,0,112,0,7,248,1, + 252,0,112,0,3,248,1,254,0,96,0,3,252,1,254,0, + 96,0,3,252,0,254,0,96,0,1,252,0,254,0,192,0, + 1,254,1,255,0,192,0,1,254,1,255,0,192,0,0,254, + 1,255,1,128,0,0,255,3,127,129,128,0,0,255,3,63, + 129,128,0,0,127,3,63,129,128,0,0,127,135,63,195,0, + 0,0,127,134,31,195,0,0,0,63,134,31,195,0,0,0, + 63,198,31,231,0,0,0,31,204,15,230,0,0,0,31,204, + 15,230,0,0,0,31,236,15,246,0,0,0,15,248,7,252, + 0,0,0,15,248,7,252,0,0,0,15,248,7,252,0,0, + 0,7,248,3,252,0,0,0,7,240,3,248,0,0,0,7, + 240,3,248,0,0,0,3,240,1,248,0,0,0,3,224,1, + 240,0,0,0,3,224,1,240,0,0,0,1,224,0,240,0, + 0,0,1,192,0,240,0,0,0,1,192,0,224,0,0,0, + 0,192,0,96,0,0,33,34,170,36,2,0,127,255,31,254, + 0,31,252,3,240,0,7,248,3,192,0,3,248,3,128,0, + 3,252,3,128,0,1,252,3,0,0,1,254,7,0,0,0, + 255,6,0,0,0,255,12,0,0,0,127,140,0,0,0,127, + 152,0,0,0,63,240,0,0,0,63,240,0,0,0,31,224, + 0,0,0,31,224,0,0,0,15,240,0,0,0,15,248,0, + 0,0,7,248,0,0,0,7,252,0,0,0,7,252,0,0, + 0,15,254,0,0,0,29,254,0,0,0,24,255,0,0,0, + 56,255,0,0,0,48,127,128,0,0,96,127,128,0,0,224, + 63,192,0,0,192,63,224,0,1,128,31,224,0,3,128,31, + 240,0,3,128,15,240,0,7,128,15,248,0,31,128,31,252, + 0,255,240,127,255,128,32,34,136,35,2,0,255,254,15,255, + 31,248,1,248,15,248,0,240,7,248,0,224,7,248,0,192, + 3,252,0,192,3,252,0,192,1,252,1,128,1,254,1,128, + 0,254,3,0,0,255,3,0,0,255,3,0,0,127,134,0, + 0,127,134,0,0,63,196,0,0,63,204,0,0,31,204,0, + 0,31,248,0,0,15,248,0,0,15,248,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,0,25,34,136,31,3,0,127,255,255,128,127,128, + 127,128,126,0,255,0,124,0,255,0,120,1,254,0,120,3, + 254,0,112,3,252,0,112,7,252,0,96,7,248,0,96,15, + 248,0,96,15,240,0,64,31,224,0,0,31,224,0,0,63, + 192,0,0,63,192,0,0,127,128,0,0,127,128,0,0,255, + 0,0,0,255,0,0,1,254,0,0,3,254,0,128,3,252, + 0,128,7,248,0,128,7,248,0,128,15,240,1,128,15,240, + 1,128,31,224,3,128,31,224,3,128,63,192,7,128,63,192, + 15,128,127,128,31,128,127,128,63,128,255,255,255,128,255,255, + 255,128,11,42,84,18,4,248,255,224,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,255,224,16,44,88,22, + 3,247,224,0,224,0,224,0,240,0,112,0,112,0,120,0, + 56,0,56,0,60,0,28,0,28,0,30,0,14,0,14,0, + 14,0,15,0,7,0,7,0,7,128,3,128,3,128,3,192, + 1,192,1,192,1,224,0,224,0,224,0,224,0,240,0,112, + 0,112,0,120,0,56,0,56,0,60,0,28,0,28,0,30, + 0,14,0,14,0,14,0,15,0,7,11,42,84,18,3,248, + 255,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,255,224,22,17,51,28,3,18,0,48,0,0,112,0, + 0,120,0,0,252,0,0,252,0,1,254,0,3,207,0,3, + 143,0,7,135,128,15,3,128,15,3,192,30,1,224,60,0, + 224,60,0,240,120,0,120,112,0,56,240,0,60,25,3,12, + 25,0,248,255,255,255,128,255,255,255,128,255,255,255,128,8, + 9,9,21,4,25,96,240,248,124,60,30,15,3,1,21,22, + 66,24,2,1,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,22,34,102,25,1,0,255,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,159,128,31,179,224,31,225,224,31,193,240,31,193,248,31, + 192,248,31,192,248,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,248, + 31,192,248,31,193,248,29,193,240,24,225,224,24,99,192,16, + 63,128,18,22,66,22,2,1,3,252,0,15,6,0,31,3, + 0,62,3,128,62,7,128,126,15,128,124,31,128,252,31,128, + 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,0, + 128,30,1,0,15,130,0,3,252,0,23,34,102,26,2,0, + 0,63,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,7,231,224,31,23,224,30,31,224,62,15,224, + 126,15,224,124,15,224,124,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, + 224,124,7,224,124,15,224,126,15,224,62,15,224,30,31,224, + 15,23,224,7,231,254,18,22,66,23,2,1,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,16,1,1,0,255,0,1,199,128,7,199,128,7,199,192, + 15,143,192,15,143,192,31,143,192,31,143,128,31,135,128,31, + 128,0,31,128,0,31,128,0,255,240,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,24,33,99,27,2,246, + 7,254,62,31,15,71,63,7,143,62,7,207,126,7,238,126, + 7,228,126,7,224,126,7,224,126,7,224,62,7,192,31,15, + 128,15,15,0,3,252,0,12,0,0,48,0,0,48,0,0, + 112,0,0,112,0,0,127,255,128,127,255,224,63,255,240,31, + 255,240,7,255,248,60,1,248,96,0,120,192,0,56,192,0, + 56,192,0,48,192,0,112,96,0,96,48,1,192,30,7,128, + 3,252,0,24,34,102,27,1,0,255,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,143,224, + 31,145,240,31,160,248,31,160,252,31,192,252,31,192,252,31, + 192,252,31,128,252,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,255,227,255,11, + 35,70,15,2,0,4,0,31,0,63,128,63,128,63,128,63, + 128,31,0,4,0,0,0,0,0,0,0,0,0,0,0,255, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,255,224,15,46,92,16,254, + 245,0,16,0,124,0,254,0,254,0,254,0,254,0,124,0, + 16,0,0,0,0,0,0,0,0,0,0,7,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,56,252,124,252,252, + 252,252,252,248,248,248,248,113,240,49,224,31,128,25,34,136, + 27,1,0,255,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,131,254,0,31,128,240,0,31,128,96,0,31, + 128,192,0,31,128,128,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,143,0,0,31,159,0,0,31,159,128,0,31, + 191,128,0,31,239,192,0,31,199,224,0,31,135,224,0,31, + 131,240,0,31,129,248,0,31,129,248,0,31,128,252,0,31, + 128,252,0,31,128,254,0,255,243,255,128,12,34,68,14,1, + 0,255,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,255,240,34,22,110,37,2,1,255,31,193,248,0, + 63,35,230,124,0,63,67,228,62,0,63,131,248,63,0,63, + 131,248,63,0,63,131,248,63,0,63,3,240,63,0,63,3, + 240,63,0,63,3,240,63,0,63,3,240,63,0,63,3,240, + 63,0,63,3,240,63,0,63,3,240,63,0,63,3,240,63, + 0,63,3,240,63,0,63,3,240,63,0,63,3,240,63,0, + 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, + 3,240,63,0,255,207,252,255,192,23,22,66,27,2,1,255, + 31,192,63,35,224,63,65,240,63,65,248,63,129,248,63,129, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,255,199, + 254,20,22,66,24,2,1,3,252,0,15,15,0,30,7,128, + 62,7,192,62,7,192,124,3,224,124,3,224,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,62,7,192,62,7,192, + 30,7,128,15,15,0,3,252,0,22,33,99,25,1,246,255, + 159,128,31,163,192,31,225,224,31,193,240,31,192,248,31,192, + 248,31,192,248,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,192,252,31, + 192,248,31,192,248,31,193,240,31,225,240,31,179,224,31,159, + 128,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,255, + 240,0,22,33,99,25,2,246,7,240,32,15,24,96,30,28, + 96,62,14,224,126,15,224,124,15,224,124,7,224,252,7,224, + 252,7,224,252,7,224,252,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,124,7,224,124,15,224,126,15,224,62,15, + 224,30,31,224,31,23,224,7,231,224,0,7,224,0,7,224, + 0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,63,252,17,22,66,20,2, + 1,255,31,0,63,63,128,63,79,128,63,79,128,63,159,128, + 63,159,128,63,159,0,63,14,0,63,0,0,63,0,0,63, + 0,0,63,0,0,63,0,0,63,0,0,63,0,0,63,0, + 0,63,0,0,63,0,0,63,0,0,63,0,0,63,0,0, + 255,192,0,16,22,44,21,3,1,31,196,48,116,96,60,224, + 28,224,28,240,12,248,4,254,4,127,128,127,224,63,240,31, + 252,7,254,129,254,192,127,192,31,224,15,224,7,240,7,248, + 6,204,14,135,248,15,32,64,17,1,0,1,128,1,128,1, + 128,1,128,1,128,3,128,3,128,7,128,15,128,63,128,255, + 248,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,130,31,130,31,130,31,130,31, + 134,31,134,31,132,15,196,15,248,7,240,24,22,66,26,1, + 0,255,143,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,131,248,31,131,248,31,133,248,15,133,248,15,201,248, + 7,241,255,23,23,69,25,1,255,255,241,254,63,192,120,31, + 128,48,15,192,48,15,192,32,7,192,96,7,224,96,7,224, + 64,3,224,192,3,240,128,3,240,128,1,241,128,1,249,0, + 0,249,0,0,255,0,0,254,0,0,126,0,0,126,0,0, + 124,0,0,60,0,0,60,0,0,24,0,0,24,0,35,23, + 115,37,1,255,255,231,255,31,224,63,129,252,7,128,31,128, + 252,3,0,15,128,252,2,0,15,192,124,2,0,15,192,124, + 6,0,7,192,126,4,0,7,224,254,4,0,3,224,191,12, + 0,3,224,191,8,0,3,241,159,24,0,1,241,31,144,0, + 1,241,31,144,0,1,251,31,176,0,0,250,15,224,0,0, + 250,15,224,0,0,254,15,224,0,0,124,7,192,0,0,124, + 7,192,0,0,60,7,192,0,0,56,3,128,0,0,56,3, + 128,0,0,24,3,0,0,23,22,66,25,1,0,255,231,252, + 63,192,240,31,192,224,15,192,192,15,225,128,7,227,0,3, + 242,0,3,254,0,1,252,0,1,252,0,0,252,0,0,126, + 0,0,127,0,0,127,0,0,223,128,1,159,192,3,15,192, + 2,15,224,6,7,224,14,7,240,30,7,248,255,207,254,23, + 33,99,25,1,245,255,241,254,63,192,120,31,128,48,15,192, + 32,15,192,32,15,192,96,7,224,64,7,224,64,3,240,192, + 3,240,128,1,248,128,1,249,128,0,249,0,0,253,0,0, + 253,0,0,126,0,0,126,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,12,0,0,8,0,0,8,0,0,8,0, + 15,16,0,31,16,0,63,144,0,63,32,0,62,32,0,62, + 64,0,31,192,0,15,0,0,18,22,66,22,2,0,127,255, + 192,124,15,192,120,31,128,112,63,0,96,63,0,96,126,0, + 64,126,0,64,252,0,1,248,0,1,248,0,3,240,0,3, + 240,0,7,224,64,15,192,64,15,192,64,31,128,192,31,0, + 192,63,1,192,126,1,192,126,3,192,252,15,192,255,255,192, + 14,43,86,20,3,247,0,60,0,240,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,0,15,0,28,0, + 240,0,60,0,30,0,15,0,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,7,128,7,128,3,192,0,240,0,60,3,44,44,13, + 5,247,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,15,43, + 86,20,3,247,240,0,60,0,15,0,7,128,7,128,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,3,192,3,192,0,240,0,62, + 0,240,1,224,3,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,128,7,128,15,0,60,0,240,0,27,9,36,31,2,8, + 31,128,1,128,63,240,0,192,127,254,0,96,255,255,128,96, + 193,255,240,96,192,63,255,224,192,15,255,192,96,1,255,128, + 48,0,63,0,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 5 y=15 dx=28 dy= 0 ascent=25 len=72 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =19 descent=-6 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_SECTION(".progmem.u8g_font_osr18") = { + 0,68,33,235,248,18,4,197,10,125,32,255,250,25,249,19, + 250,0,0,0,7,0,0,3,18,18,7,2,0,224,224,224, + 224,224,224,64,64,64,64,64,64,64,64,0,224,224,224,6, + 5,5,10,2,13,204,204,204,204,72,14,18,36,18,2,0, + 4,32,4,32,4,32,4,32,4,32,255,252,8,64,8,64, + 8,64,8,64,8,64,24,64,255,252,16,128,16,128,16,128, + 16,128,16,128,11,22,44,15,2,254,9,0,9,0,31,128, + 41,64,73,32,73,32,73,96,73,96,105,0,61,0,31,128, + 15,192,9,192,9,96,233,32,233,32,201,32,201,64,105,64, + 31,128,9,0,9,0,18,18,54,22,2,0,56,2,0,68, + 4,0,198,8,0,198,8,0,198,16,0,198,32,0,198,32, + 0,68,64,0,56,64,0,0,134,0,1,25,128,1,48,128, + 2,48,192,4,48,192,4,48,192,8,48,192,8,24,128,16, + 15,0,18,18,54,20,1,0,7,128,0,8,64,0,24,64, + 0,24,64,0,24,192,0,28,128,0,15,0,0,6,31,192, + 15,6,0,23,6,0,35,132,0,97,196,0,192,232,0,192, + 240,0,192,112,0,224,120,128,96,220,128,63,15,0,2,5, + 5,7,2,13,192,192,192,192,64,6,23,23,10,3,252,8, + 16,48,32,64,64,192,128,128,128,128,128,128,128,128,192,64, + 64,96,32,16,24,12,6,23,23,9,1,252,64,32,48,16, + 24,8,8,12,4,4,4,4,4,4,12,8,8,8,16,16, + 32,64,192,10,10,20,14,2,8,12,0,12,0,204,192,201, + 192,42,0,30,0,235,192,201,192,12,0,12,0,22,22,66, + 24,1,252,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,255,255,252,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,3,8,8,7,2,252,192,224,224,32,32, + 64,64,128,7,1,1,11,2,6,254,3,3,3,7,2,0, + 224,224,224,8,24,24,12,2,250,1,1,2,2,2,4,4, + 4,12,8,8,24,16,16,16,32,32,32,64,64,64,128,128, + 128,12,18,36,15,1,0,15,0,16,192,32,64,96,96,96, + 32,192,48,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,96,32,96,96,32,64,16,192,15,0,9,18,36,15,3, + 0,8,0,8,0,24,0,248,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,128,10,18,36,15,2,0,30,0,99,128,129, + 192,128,192,128,192,224,192,240,192,32,192,1,128,3,0,6, + 0,8,0,16,0,32,0,64,64,192,64,255,192,255,192,11, + 18,36,15,2,0,63,0,97,128,192,192,224,192,240,192,0, + 192,0,192,1,128,62,0,1,128,0,192,0,96,96,96,240, + 96,240,96,192,192,65,128,63,0,12,18,36,15,2,0,1, + 0,3,0,3,0,7,0,15,0,11,0,19,0,51,0,35, + 0,67,0,195,0,131,0,255,224,3,0,3,0,3,0,3, + 0,31,240,11,18,36,15,2,0,96,192,127,128,126,0,64, + 0,64,0,64,0,95,0,97,128,64,192,64,224,0,96,0, + 96,96,96,240,96,224,192,192,192,65,128,62,0,11,18,36, + 15,2,0,15,0,24,128,48,64,96,192,96,192,64,0,192, + 0,207,0,209,192,224,192,224,224,224,96,224,96,224,96,96, + 224,96,192,49,128,15,0,10,18,36,15,3,0,255,192,255, + 192,128,64,128,64,128,128,0,128,1,0,1,0,2,0,6, + 0,6,0,12,0,12,0,30,0,30,0,30,0,30,0,14, + 0,12,18,36,15,2,0,31,128,48,224,96,96,192,48,192, + 48,224,48,240,32,124,64,63,128,55,224,96,240,192,112,192, + 48,192,48,192,48,96,96,112,192,31,128,11,18,36,15,2, + 0,30,0,49,128,96,192,224,192,192,64,192,96,192,96,192, + 224,96,224,113,96,30,96,0,96,0,64,96,192,96,192,64, + 128,65,0,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,8,2,252,96,240,240, + 0,0,0,0,0,96,240,240,16,16,32,32,64,20,21,63, + 24,2,253,0,0,48,0,0,192,0,3,0,0,12,0,0, + 48,0,0,224,0,3,128,0,14,0,0,24,0,0,96,0, + 0,192,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,1,128,0,0,96,0, + 0,16,22,6,18,24,1,4,255,255,252,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,252,20,21,63,24,2,253, + 192,0,0,48,0,0,12,0,0,3,0,0,0,192,0,0, + 112,0,0,28,0,0,7,0,0,1,128,0,0,96,0,0, + 48,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 1,128,0,6,0,0,24,0,0,96,0,0,128,0,0,9, + 18,36,12,2,0,62,0,67,0,129,128,129,128,225,128,97, + 128,3,0,6,0,12,0,16,0,48,0,34,0,34,0,28, + 0,0,0,28,0,28,0,28,0,18,18,54,20,1,0,3, + 248,0,12,6,0,16,109,0,33,156,128,67,12,128,70,8, + 64,142,8,64,142,24,64,140,24,64,140,16,64,140,48,128, + 140,48,128,140,241,0,71,30,0,96,0,0,32,0,0,24, + 12,0,7,240,0,18,18,54,20,2,0,0,128,0,0,192, + 0,1,192,0,1,192,0,1,224,0,3,224,0,2,96,0, + 2,112,0,6,112,0,4,48,0,4,56,0,12,56,0,15, + 248,0,24,28,0,16,12,0,16,12,0,48,14,0,254,63, + 192,15,18,36,17,1,0,255,240,24,28,24,12,24,6,24, + 6,24,6,24,12,24,24,31,224,24,24,24,12,24,6,24, + 6,24,6,24,6,24,12,24,28,255,240,14,18,36,18,2, + 0,7,132,24,108,32,60,96,28,96,12,192,12,192,4,192, + 0,192,0,192,0,192,0,192,4,96,4,96,4,32,8,48, + 24,24,48,7,192,17,18,54,20,1,0,255,240,0,24,12, + 0,24,6,0,24,3,0,24,3,0,24,1,128,24,1,128, + 24,1,128,24,1,128,24,1,128,24,1,128,24,1,128,24, + 1,128,24,3,0,24,3,0,24,6,0,24,12,0,255,240, + 0,15,18,36,18,1,0,255,254,24,6,24,2,24,2,24, + 2,24,34,24,32,24,96,31,224,24,96,24,32,24,32,24, + 34,24,2,24,2,24,6,24,14,255,254,15,18,36,17,1, + 0,255,254,24,6,24,2,24,2,24,2,24,34,24,32,24, + 96,31,224,24,96,24,32,24,32,24,32,24,0,24,0,24, + 0,24,0,127,0,17,18,54,19,2,0,7,196,0,24,100, + 0,48,28,0,96,28,0,96,12,0,96,4,0,192,4,0, + 192,0,0,192,127,128,192,28,0,192,28,0,192,28,0,192, + 28,0,96,28,0,96,28,0,48,52,0,24,100,0,7,132, + 0,18,18,54,20,1,0,255,63,192,24,6,0,24,6,0, + 24,6,0,24,6,0,24,6,0,24,6,0,24,6,0,31, + 254,0,24,6,0,24,6,0,24,6,0,24,6,0,24,6, + 0,24,6,0,24,6,0,24,6,0,255,63,192,8,18,18, + 10,1,0,255,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,12,18,36,14,1,0,7,240,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,97,128,241,128,225,128,193,128,67,0,62,0,17, + 18,54,19,1,0,255,63,128,24,14,0,24,8,0,24,16, + 0,24,32,0,24,64,0,24,128,0,25,192,0,26,192,0, + 28,224,0,24,96,0,24,112,0,24,56,0,24,56,0,24, + 28,0,24,28,0,24,14,0,255,127,128,15,18,36,17,1, + 0,255,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,2,24,2,24,2,24,6,24, + 6,24,14,255,254,20,18,54,22,1,0,252,3,240,28,3, + 128,30,5,128,22,5,128,22,5,128,23,5,128,19,9,128, + 19,9,128,19,137,128,19,145,128,17,145,128,17,209,128,17, + 209,128,16,225,128,16,225,128,16,225,128,16,65,128,254,79, + 240,18,18,54,19,1,0,252,15,192,28,2,0,30,2,0, + 22,2,0,23,2,0,19,130,0,17,130,0,17,194,0,16, + 226,0,16,226,0,16,114,0,16,50,0,16,58,0,16,30, + 0,16,14,0,16,14,0,16,6,0,254,2,0,15,18,36, + 18,2,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,18,36,17,1,0,255,240,24, + 28,24,12,24,6,24,6,24,6,24,12,24,24,31,240,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,255, + 0,15,22,44,18,2,252,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,99,140,36,76,52,120,28,114,7,226,0,98,0,118,0, + 60,0,24,17,18,54,19,1,0,255,240,0,24,24,0,24, + 12,0,24,12,0,24,12,0,24,12,0,24,24,0,31,224, + 0,24,48,0,24,56,0,24,24,0,24,24,0,24,24,0, + 24,28,128,24,28,128,24,28,128,24,31,0,255,15,0,13, + 18,36,16,2,0,30,32,97,160,192,96,192,96,192,32,192, + 32,224,0,124,0,63,128,15,224,129,240,128,112,128,24,192, + 24,192,24,224,16,152,32,135,192,15,18,36,18,2,0,255, + 254,195,14,131,6,131,2,3,2,3,2,3,2,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,240,19,18,54,21,1,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,18, + 18,54,20,1,0,255,31,192,28,3,0,28,2,0,12,2, + 0,14,6,0,6,4,0,7,4,0,7,8,0,3,8,0, + 3,136,0,3,144,0,1,144,0,1,208,0,0,224,0,0, + 224,0,0,224,0,0,64,0,0,64,0,26,18,72,28,1, + 0,255,63,159,192,28,14,3,0,12,6,2,0,12,14,2, + 0,14,15,6,0,14,15,4,0,6,19,4,0,7,19,140, + 0,7,19,136,0,3,49,136,0,3,161,216,0,3,161,208, + 0,1,160,208,0,1,192,240,0,1,192,224,0,0,192,96, + 0,0,128,96,0,0,128,64,0,18,18,54,20,1,0,127, + 191,128,14,12,0,14,12,0,7,8,0,7,16,0,3,176, + 0,1,160,0,1,192,0,0,192,0,0,224,0,1,96,0, + 3,112,0,2,56,0,4,56,0,12,28,0,8,12,0,24, + 14,0,254,63,192,17,18,54,19,1,0,255,31,128,28,6, + 0,28,4,0,14,4,0,6,8,0,7,8,0,3,144,0, + 3,160,0,1,224,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,7,252, + 0,14,18,36,17,2,0,127,252,112,56,96,48,64,112,64, + 224,128,192,1,192,3,128,3,0,7,0,14,0,12,4,28, + 4,56,4,48,12,112,28,224,56,255,248,5,23,23,10,3, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,248,8,24,24,12,2,250,128,128, + 128,64,64,64,32,32,32,16,16,16,16,8,8,8,4,4, + 4,2,2,2,1,1,5,23,23,10,2,251,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,248,11,9,18,15,2,9,4,0,14,0,10,0,17, + 0,49,128,32,128,64,64,64,96,128,32,14,1,2,14,0, + 252,255,252,4,4,4,11,2,13,192,224,96,16,11,12,24, + 13,1,0,30,0,99,0,65,128,97,128,33,128,15,128,113, + 128,193,128,195,160,195,160,197,160,121,192,11,18,36,13,0, + 0,240,0,48,0,48,0,48,0,48,0,48,0,51,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,40,192,39,128,9,12,24,11,1,0,30,0,33,0,96, + 128,193,128,193,128,192,0,192,0,192,0,192,128,96,128,33, + 0,30,0,12,18,36,14,1,0,7,192,0,192,0,192,0, + 192,0,192,0,192,28,192,98,192,97,192,193,192,192,192,192, + 192,192,192,192,192,192,192,97,192,97,192,30,240,9,12,24, + 12,1,0,30,0,35,0,97,128,193,128,193,128,255,128,192, + 0,192,0,192,128,96,128,33,0,30,0,9,18,36,9,1, + 0,15,0,24,128,49,128,49,0,48,0,48,0,254,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,254,0,12,18,36,15,2,250,30,112,97,176,225, + 240,192,192,192,192,192,192,225,128,97,128,30,0,224,0,255, + 0,127,192,64,96,128,32,128,32,128,32,192,64,63,128,13, + 18,36,15,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,51,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,6,18,18,8,1,0,112, + 112,32,0,0,0,240,48,48,48,48,48,48,48,48,48,48, + 252,7,24,24,8,255,250,6,6,0,0,0,0,62,6,6, + 6,6,6,6,6,6,6,6,6,6,6,198,198,140,120,12, + 18,36,14,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,49,240,48,128,49,0,50,0,50,0,54,0,59,0,51, + 0,49,128,49,192,48,224,253,240,6,18,18,8,1,0,240, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,19,12,36,21,1,0,243,199,0,52,249,128,56,113,192, + 56,97,192,48,97,192,48,97,192,48,97,192,48,97,192,48, + 97,192,48,97,192,48,97,192,253,251,224,13,12,24,15,1, + 0,243,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,10,12,24,13,1,0,30, + 0,33,128,97,128,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,33,128,30,0,11,18,36,14,1,250,243,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,56,192,55,128,48,0,48,0,48,0,48,0,48,0,252, + 0,12,18,36,13,1,250,28,64,98,64,97,192,192,192,192, + 192,192,192,192,192,192,192,192,192,97,192,97,192,30,192,0, + 192,0,192,0,192,0,192,0,192,3,240,9,12,24,11,1, + 0,243,128,52,128,57,128,56,128,56,0,48,0,48,0,48, + 0,48,0,48,0,48,0,252,0,9,12,24,11,1,0,125, + 0,131,0,129,0,193,0,240,0,124,0,31,0,131,128,128, + 128,192,128,224,128,159,0,8,17,17,10,1,0,16,16,16, + 48,48,254,48,48,48,48,48,48,48,49,49,51,30,13,12, + 24,14,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,12,24,14, + 1,0,252,248,48,96,48,64,24,64,24,128,12,128,12,128, + 13,0,7,0,7,0,2,0,2,0,19,12,36,21,1,0, + 253,251,224,48,96,128,48,96,128,24,113,0,24,177,0,12, + 177,0,12,154,0,13,26,0,7,28,0,7,12,0,2,12, + 0,2,8,0,12,12,24,14,1,0,249,224,48,128,57,0, + 25,0,14,0,14,0,6,0,11,0,19,0,17,128,33,192, + 243,240,13,18,36,14,0,250,252,248,56,32,24,32,24,64, + 12,64,12,64,12,128,6,128,6,128,7,0,3,0,3,0, + 2,0,2,0,34,0,98,0,100,0,56,0,9,12,24,12, + 1,0,255,128,195,128,131,0,134,0,142,0,12,0,24,0, + 56,0,48,128,96,128,96,128,255,128,6,23,23,12,3,251, + 12,16,48,48,48,48,56,24,24,24,16,224,48,16,24,24, + 56,48,48,48,48,16,12,1,24,24,7,3,250,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,23,23,11,3,251,192,32,48,48,48, + 112,96,96,96,96,32,28,48,96,96,96,96,112,48,48,48, + 32,192,15,5,10,17,1,4,32,4,254,2,143,194,129,254, + 64,124,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,7,0,0,3,18,18,7,2,250,224, + 224,224,0,64,64,64,64,64,64,64,64,224,224,224,224,224, + 224,9,18,36,15,3,253,4,0,4,0,4,0,31,0,53, + 0,100,128,229,128,197,128,196,0,196,0,196,0,228,128,100, + 128,53,0,31,0,4,0,4,0,4,0,14,18,36,19,2, + 0,0,248,1,132,3,4,2,12,6,0,6,0,6,0,62, + 0,7,224,6,0,6,0,6,0,6,0,6,0,116,4,140, + 4,139,248,112,240,11,11,22,15,2,2,159,32,113,192,64, + 64,128,96,128,32,128,32,128,32,128,32,64,64,96,192,159, + 32,15,18,36,15,0,0,252,126,56,24,24,16,28,16,12, + 32,14,64,6,64,7,128,3,128,63,240,3,0,3,0,63, + 240,3,0,3,0,3,0,3,0,31,224,1,23,23,7,3, + 251,128,128,128,128,128,128,128,128,128,0,0,0,0,0,128, + 128,128,128,128,128,128,128,128,10,23,46,17,3,251,30,0, + 33,0,35,0,35,0,32,0,48,0,28,0,46,0,71,0, + 131,128,129,192,192,192,224,64,112,64,56,128,29,0,6,0, + 3,0,3,0,49,0,49,0,34,0,28,0,7,2,2,11, + 2,15,198,198,19,18,54,21,1,0,3,248,0,12,6,0, + 16,225,0,33,28,128,67,12,64,70,4,64,134,4,32,134, + 0,32,134,0,32,134,0,32,134,0,32,134,8,32,67,8, + 64,67,8,64,32,240,128,16,1,0,12,6,0,3,248,0, + 7,8,8,11,2,10,240,200,24,104,136,154,100,252,6,10, + 10,12,3,1,32,68,136,136,136,136,136,136,68,32,13,6, + 12,15,1,3,255,248,0,8,0,8,0,8,0,8,0,8, + 7,1,1,11,2,6,254,19,18,54,21,1,0,3,248,0, + 12,6,0,31,225,0,35,24,128,67,24,64,67,24,64,131, + 24,32,131,24,32,131,224,32,131,16,32,131,24,32,131,24, + 32,67,26,64,67,26,64,47,142,128,16,1,0,12,6,0, + 3,248,0,7,1,1,11,2,15,254,7,7,7,15,4,11, + 56,68,130,130,130,68,56,22,18,54,24,1,255,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,255,255,252,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,0,0,0,0,0, + 255,255,252,7,10,10,11,2,8,124,134,134,230,6,8,16, + 96,66,254,7,11,11,12,3,7,120,132,198,198,4,120,14, + 70,198,134,120,4,4,4,11,5,13,48,48,96,128,14,19, + 38,17,2,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,64,192,64,128,64,132,163,252,159,28,128,0,128,0, + 192,0,192,0,192,0,224,0,64,0,11,22,44,14,2,252, + 63,224,120,128,248,128,248,128,248,128,248,128,248,128,120,128, + 8,128,8,128,8,128,8,128,8,128,8,128,8,128,8,128, + 8,128,8,128,8,128,8,128,8,128,8,128,3,3,3,7, + 2,7,224,224,224,5,5,5,11,3,251,64,48,24,24,240, + 6,11,11,12,3,7,16,16,240,48,48,48,48,48,48,48, + 252,6,9,9,10,2,9,112,136,132,132,132,132,72,48,252, + 7,10,10,13,3,1,8,68,68,34,34,34,34,68,68,136, + 18,18,54,23,3,0,16,4,0,240,12,0,48,8,0,48, + 16,0,48,16,0,48,32,0,48,96,0,48,67,0,48,135, + 0,48,139,0,253,11,0,3,19,0,2,19,0,6,35,0, + 4,63,192,8,3,0,24,3,0,16,15,192,17,18,54,22, + 3,0,16,4,0,240,8,0,48,8,0,48,16,0,48,16, + 0,48,32,0,48,64,0,48,78,0,48,179,128,48,161,128, + 253,49,128,3,17,128,2,3,0,4,6,0,4,8,0,8, + 16,128,24,49,128,16,63,128,18,18,54,23,3,0,120,4, + 0,134,12,0,198,8,0,4,16,0,120,16,0,12,32,0, + 6,96,0,198,67,0,198,135,0,142,139,0,121,11,0,2, + 19,0,2,19,0,4,35,0,12,63,192,8,3,0,16,3, + 0,16,15,192,9,18,36,12,1,250,28,0,28,0,28,0, + 0,0,28,0,34,0,34,0,6,0,4,0,24,0,48,0, + 96,0,227,0,195,128,192,128,224,128,97,0,62,0,18,24, + 72,20,2,0,6,0,0,6,0,0,3,0,0,0,128,0, + 0,0,0,0,0,0,0,128,0,0,192,0,1,192,0,1, + 192,0,1,224,0,3,224,0,2,96,0,2,112,0,6,112, + 0,4,48,0,4,56,0,12,24,0,15,248,0,24,28,0, + 16,12,0,16,14,0,48,14,0,254,63,192,18,24,72,20, + 2,0,0,16,0,0,48,0,0,96,0,0,64,0,0,128, + 0,0,0,0,0,128,0,0,192,0,1,192,0,1,192,0, + 1,224,0,3,224,0,2,96,0,2,112,0,6,112,0,4, + 48,0,4,56,0,12,56,0,15,248,0,24,28,0,16,12, + 0,16,14,0,48,14,0,254,63,192,18,24,72,20,2,0, + 0,128,0,0,192,0,1,96,0,2,48,0,4,8,0,0, + 0,0,0,128,0,0,192,0,1,192,0,1,192,0,1,224, + 0,3,224,0,2,96,0,2,112,0,6,112,0,4,48,0, + 4,56,0,12,56,0,15,248,0,24,28,0,16,12,0,16, + 12,0,48,14,0,254,63,192,18,23,69,20,2,0,3,144, + 0,5,240,0,0,0,0,0,0,0,0,0,0,0,128,0, + 0,128,0,1,192,0,1,192,0,1,224,0,3,224,0,2, + 96,0,2,112,0,6,112,0,4,48,0,12,56,0,12,56, + 0,15,248,0,24,28,0,16,28,0,16,12,0,48,14,0, + 254,63,192,18,23,69,20,1,0,6,24,0,6,24,0,2, + 16,0,0,0,0,0,0,0,0,192,0,0,192,0,0,192, + 0,1,224,0,1,224,0,1,96,0,2,112,0,2,112,0, + 2,48,0,4,56,0,4,24,0,12,24,0,15,252,0,8, + 12,0,24,12,0,24,14,0,56,6,0,254,63,192,17,24, + 72,20,2,0,1,192,0,2,32,0,2,32,0,2,32,0, + 1,192,0,0,0,0,0,128,0,0,128,0,1,192,0,1, + 192,0,1,192,0,2,224,0,2,96,0,2,96,0,4,112, + 0,4,112,0,12,48,0,8,56,0,15,248,0,24,28,0, + 16,28,0,16,12,0,48,14,0,254,127,128,24,18,54,26, + 0,0,0,127,255,0,28,7,0,28,3,0,44,1,0,44, + 1,0,76,17,0,76,16,0,140,48,0,143,240,1,12,48, + 3,12,16,2,12,17,7,252,17,4,12,1,8,12,1,8, + 12,3,24,12,7,254,63,255,14,24,48,18,2,250,7,132, + 24,108,32,60,96,28,96,12,192,12,192,4,192,0,192,0, + 192,0,192,0,192,4,96,4,96,4,96,8,48,24,24,48, + 7,192,2,0,3,128,0,192,0,192,8,192,7,128,15,24, + 48,18,1,0,4,0,6,0,3,0,1,128,0,0,0,0, + 255,254,24,6,24,2,24,2,24,2,24,34,24,32,24,96, + 31,224,24,96,24,32,24,32,24,34,24,2,24,2,24,6, + 24,14,255,254,15,24,48,18,1,0,0,48,0,48,0,96, + 0,192,0,0,0,0,255,254,24,14,24,6,24,2,24,2, + 24,34,24,32,24,96,31,224,24,96,24,32,24,32,24,34, + 24,2,24,2,24,6,24,14,255,254,15,24,48,18,1,0, + 0,128,1,192,3,64,6,48,8,8,0,0,255,254,24,6, + 24,2,24,2,24,2,24,34,24,32,24,96,31,224,24,96, + 24,32,24,32,24,34,24,2,24,2,24,6,24,14,255,254, + 15,23,46,18,1,0,6,48,6,48,4,16,0,0,0,0, + 255,254,24,14,24,6,24,2,24,2,24,34,24,32,24,96, + 31,224,24,96,24,32,24,32,24,34,24,2,24,2,24,6, + 24,14,255,254,8,24,24,10,1,0,64,96,48,16,8,0, + 255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,255,8,24,24,10,1,0,3,3,6,8,0,0,255,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,255, + 8,24,24,10,1,0,8,24,52,66,129,0,255,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,255,8,23, + 23,10,1,0,195,195,66,0,0,255,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,255,17,18,54,19,1, + 0,255,240,0,24,12,0,24,6,0,24,3,0,24,3,0, + 24,1,128,24,1,128,24,1,128,127,1,128,24,1,128,24, + 1,128,24,1,128,24,1,128,24,3,0,24,3,0,24,6, + 0,24,12,0,255,240,0,18,24,72,19,1,0,3,200,0, + 2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 15,192,28,2,0,30,2,0,22,2,0,23,2,0,19,130, + 0,17,130,0,17,194,0,16,226,0,16,226,0,16,114,0, + 16,50,0,16,58,0,16,30,0,16,14,0,16,14,0,16, + 6,0,252,2,0,15,24,48,18,2,1,28,0,12,0,6, + 0,2,0,1,0,0,0,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,96,12,32,8,48,24,24,48,7,192,15,24,48,18,2, + 1,0,112,0,96,0,192,0,128,1,0,0,0,7,192,24, + 48,48,24,32,8,96,12,96,12,192,6,192,6,192,6,192, + 6,192,6,192,6,96,12,96,12,32,8,48,24,24,48,7, + 192,15,24,48,18,2,0,1,0,3,128,6,192,12,96,16, + 16,0,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,24,48,18,2,0,15,16,19, + 224,0,0,0,0,0,0,0,0,7,192,24,48,48,24,32, + 8,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,96,12,96,12,32,8,48,24,24,48,7,192,15,24,48, + 18,2,0,8,0,12,96,12,96,0,0,0,0,0,0,7, + 192,24,48,48,24,32,8,96,12,96,12,192,6,192,6,192, + 6,192,6,192,6,192,6,96,12,96,12,32,8,48,24,24, + 48,7,192,16,16,32,24,4,255,0,1,64,3,32,6,16, + 12,8,24,4,48,2,96,1,192,1,128,3,64,6,32,12, + 16,24,8,48,4,96,2,192,1,15,18,36,18,2,0,7, + 194,24,52,48,28,32,12,96,28,96,44,192,70,192,198,193, + 134,195,6,198,6,196,6,232,12,112,12,96,8,112,24,88, + 48,135,192,19,24,72,21,1,1,3,0,0,3,128,0,0, + 128,0,0,64,0,0,0,0,0,0,0,255,15,224,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,24,1,0,24, + 1,0,24,1,0,12,1,0,12,2,0,6,4,0,1,248, + 0,19,24,72,21,1,1,0,28,0,0,24,0,0,48,0, + 0,32,0,0,64,0,0,0,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,19, + 24,72,21,1,0,0,96,0,0,224,0,1,176,0,3,8, + 0,0,4,0,0,0,0,255,15,224,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,12,1,0,12,2,0,6,4,0,1,248,0,19,23,69, + 21,1,1,3,24,0,3,24,0,0,0,0,0,0,0,0, + 0,0,255,15,224,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,12,1,0,12, + 2,0,6,4,0,1,248,0,17,24,72,19,1,0,0,24, + 0,0,56,0,0,48,0,0,64,0,0,0,0,0,0,0, + 255,31,128,28,6,0,28,4,0,14,4,0,6,8,0,7, + 8,0,3,144,0,3,160,0,1,224,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,7,252,0,15,18,36,17,1,0,255,0,24,0, + 24,0,31,224,24,24,24,12,24,6,24,6,24,6,24,14, + 24,12,24,24,31,240,24,0,24,0,24,0,24,0,255,0, + 12,18,36,14,1,0,7,128,24,224,24,96,48,96,48,192, + 48,128,55,0,49,128,48,64,48,96,48,112,48,48,48,48, + 48,48,54,48,54,112,52,96,243,192,11,18,36,13,1,0, + 96,0,96,0,48,0,24,0,8,0,0,0,30,0,99,0, + 65,128,97,128,33,128,15,128,113,128,193,128,195,160,195,160, + 197,160,121,192,11,18,36,13,1,0,1,128,3,128,3,0, + 4,0,8,0,0,0,62,0,65,0,65,128,97,128,33,128, + 15,128,113,128,193,128,193,160,195,160,197,160,120,192,11,18, + 36,13,1,0,8,0,12,0,28,0,50,0,65,0,0,0, + 30,0,99,0,65,128,97,128,33,128,15,128,113,128,193,128, + 195,160,195,160,197,160,121,192,11,17,34,13,1,0,56,128, + 79,0,0,0,0,0,0,0,30,0,99,0,65,128,97,128, + 33,128,15,128,113,128,193,128,195,160,195,160,197,160,121,192, + 11,17,34,13,1,0,99,0,99,0,1,0,0,0,0,0, + 60,0,67,0,67,0,99,0,3,0,15,0,115,0,195,0, + 195,32,199,32,203,32,121,192,11,18,36,13,1,0,28,0, + 34,0,34,0,34,0,28,0,0,0,60,0,67,0,67,0, + 99,0,35,0,15,0,115,0,195,0,195,32,199,32,199,32, + 121,192,16,12,24,18,1,0,30,120,99,198,65,134,97,131, + 1,131,31,255,97,128,193,128,195,129,195,130,196,194,120,124, + 9,18,36,11,1,250,30,0,33,0,96,128,193,128,193,128, + 192,0,192,0,192,0,192,0,96,128,33,0,30,0,8,0, + 12,0,2,0,3,0,3,0,30,0,9,18,36,12,1,0, + 96,0,112,0,48,0,8,0,0,0,0,0,30,0,35,0, + 97,128,193,128,193,128,255,128,192,0,192,0,192,128,96,128, + 33,0,30,0,9,18,36,12,1,0,1,0,3,0,2,0, + 4,0,8,0,0,0,30,0,35,0,97,128,193,128,193,128, + 255,128,192,0,192,0,192,128,96,128,33,0,30,0,9,18, + 36,12,1,0,8,0,12,0,28,0,18,0,33,0,0,0, + 30,0,35,0,97,128,193,128,193,128,255,128,192,0,192,0, + 192,128,96,128,33,0,30,0,9,17,34,12,1,0,51,0, + 51,0,1,0,0,0,0,0,30,0,35,0,97,128,193,128, + 193,128,255,128,192,0,192,0,192,128,96,128,33,0,30,0, + 7,18,18,8,0,0,192,224,96,16,8,0,120,24,24,24, + 24,24,24,24,24,24,24,126,6,18,18,7,1,0,4,12, + 24,16,32,0,240,48,48,48,48,48,48,48,48,48,48,252, + 8,17,17,8,0,0,24,56,36,195,0,120,24,24,24,24, + 24,24,24,24,24,24,126,7,17,17,9,1,0,4,198,198, + 0,0,120,24,24,24,24,24,24,24,24,24,24,124,10,18, + 36,13,1,0,56,128,27,0,12,0,22,0,35,0,3,0, + 31,128,33,128,97,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,33,128,30,0,13,17,34,15,1,0,14,64, + 19,192,0,0,0,0,0,0,243,192,52,192,56,96,56,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,253,248, + 10,18,36,13,1,0,96,0,48,0,16,0,8,0,4,0, + 0,0,30,0,33,128,97,128,192,192,192,192,192,192,192,192, + 192,192,192,192,97,128,33,128,30,0,10,18,36,13,1,0, + 1,128,3,128,3,0,4,0,0,0,0,0,30,0,33,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,97,128, + 33,128,30,0,10,18,36,13,1,0,4,0,12,0,14,0, + 18,0,33,0,0,0,30,0,33,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,33,128,30,0,10,17, + 34,13,1,0,60,128,47,0,0,0,0,0,0,0,30,0, + 33,128,97,128,192,192,192,192,192,192,192,192,192,192,192,192, + 97,128,33,128,30,0,10,17,34,13,1,0,49,128,49,128, + 1,0,0,0,0,0,30,0,33,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,33,128,30,0,22,16, + 48,24,1,255,0,112,0,0,112,0,0,112,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,255,252,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112, + 0,0,112,0,10,12,24,13,1,0,30,64,33,128,96,128, + 193,192,194,192,196,192,200,192,208,192,208,192,97,128,97,128, + 158,0,13,18,36,14,0,0,16,0,24,0,12,0,4,0, + 2,0,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,18,36,14, + 0,0,0,192,0,192,1,128,2,0,0,0,0,0,241,224, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,224, + 48,224,57,96,30,120,13,18,36,14,0,0,2,0,6,0, + 5,0,8,128,16,0,0,0,241,224,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,224,48,224,57,96,30,120, + 13,17,34,14,0,0,24,192,24,192,0,0,0,0,0,0, + 240,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,224,48,224,57,96,30,120,13,24,48,14,0,250,0,96, + 0,224,0,192,1,0,0,0,0,0,252,248,56,32,24,32, + 24,64,12,64,12,64,12,128,6,128,6,128,7,0,3,0, + 3,0,3,0,2,0,34,0,98,0,100,0,56,0,11,24, + 48,14,1,250,48,0,240,0,48,0,48,0,48,0,48,0, + 49,192,54,224,52,96,56,96,56,96,48,96,48,192,48,192, + 49,128,49,0,50,0,60,0,48,0,48,0,48,0,48,0, + 48,0,96,0,13,23,46,14,0,250,8,64,12,96,12,96, + 0,0,0,0,252,120,24,32,24,32,24,64,12,64,12,64, + 14,128,6,128,6,128,7,0,3,0,3,0,2,0,2,0, + 34,0,114,0,100,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y= 8 dx=24 dy= 0 ascent=18 len=66 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =18 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18n[595] U8G_SECTION(".progmem.u8g_font_osr18n") = { + 0,68,33,235,248,18,0,0,0,0,42,57,0,18,250,18, + 0,10,10,20,14,2,8,12,0,12,0,204,192,201,192,42, + 0,30,0,235,192,201,192,12,0,12,0,22,22,66,24,1, + 252,0,16,0,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,255, + 255,252,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,3,8,8,7,2,252,192,224,224,32,32,64,64, + 128,7,1,1,11,2,6,254,3,3,3,7,2,0,224,224, + 224,8,24,24,12,2,250,1,1,2,2,2,4,4,4,12, + 8,8,24,16,16,16,32,32,32,64,64,64,128,128,128,12, + 18,36,15,1,0,15,0,16,192,32,64,96,96,96,32,192, + 48,192,48,192,48,192,48,192,48,192,48,192,48,192,48,96, + 32,96,96,32,64,16,192,15,0,9,18,36,15,3,0,8, + 0,8,0,24,0,248,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,255,128,10,18,36,15,2,0,30,0,99,128,129,192,128, + 192,128,192,224,192,240,192,32,192,1,128,3,0,6,0,8, + 0,16,0,32,0,64,64,192,64,255,192,255,192,11,18,36, + 15,2,0,63,0,97,128,192,192,224,192,240,192,0,192,0, + 192,1,128,62,0,1,128,0,192,0,96,96,96,240,96,240, + 96,192,192,65,128,63,0,12,18,36,15,2,0,1,0,3, + 0,3,0,7,0,15,0,11,0,19,0,51,0,35,0,67, + 0,195,0,131,0,255,224,3,0,3,0,3,0,3,0,31, + 240,11,18,36,15,2,0,96,192,127,128,126,0,64,0,64, + 0,64,0,95,0,97,128,64,192,64,224,0,96,0,96,96, + 96,240,96,224,192,192,192,65,128,62,0,11,18,36,15,2, + 0,15,0,24,128,48,64,96,192,96,192,64,0,192,0,207, + 0,209,192,224,192,224,224,224,96,224,96,224,96,96,224,96, + 192,49,128,15,0,10,18,36,15,3,0,255,192,255,192,128, + 64,128,64,128,128,0,128,1,0,1,0,2,0,6,0,6, + 0,12,0,12,0,30,0,30,0,30,0,30,0,14,0,12, + 18,36,15,2,0,31,128,48,224,96,96,192,48,192,48,224, + 48,240,32,124,64,63,128,55,224,96,240,192,112,192,48,192, + 48,192,48,96,96,112,192,31,128,11,18,36,15,2,0,30, + 0,49,128,96,192,224,192,192,64,192,96,192,96,192,224,96, + 224,113,96,30,96,0,96,0,64,96,192,96,192,64,128,65, + 0,62,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 3 y=13 dx=28 dy= 0 ascent=20 len=72 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =19 descent=-6 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_SECTION(".progmem.u8g_font_osr18r") = { + 0,68,33,235,248,18,4,197,10,125,32,127,250,20,250,19, + 250,0,0,0,7,0,0,3,18,18,7,2,0,224,224,224, + 224,224,224,64,64,64,64,64,64,64,64,0,224,224,224,6, + 5,5,10,2,13,204,204,204,204,72,14,18,36,18,2,0, + 4,32,4,32,4,32,4,32,4,32,255,252,8,64,8,64, + 8,64,8,64,8,64,24,64,255,252,16,128,16,128,16,128, + 16,128,16,128,11,22,44,15,2,254,9,0,9,0,31,128, + 41,64,73,32,73,32,73,96,73,96,105,0,61,0,31,128, + 15,192,9,192,9,96,233,32,233,32,201,32,201,64,105,64, + 31,128,9,0,9,0,18,18,54,22,2,0,56,2,0,68, + 4,0,198,8,0,198,8,0,198,16,0,198,32,0,198,32, + 0,68,64,0,56,64,0,0,134,0,1,25,128,1,48,128, + 2,48,192,4,48,192,4,48,192,8,48,192,8,24,128,16, + 15,0,18,18,54,20,1,0,7,128,0,8,64,0,24,64, + 0,24,64,0,24,192,0,28,128,0,15,0,0,6,31,192, + 15,6,0,23,6,0,35,132,0,97,196,0,192,232,0,192, + 240,0,192,112,0,224,120,128,96,220,128,63,15,0,2,5, + 5,7,2,13,192,192,192,192,64,6,23,23,10,3,252,8, + 16,48,32,64,64,192,128,128,128,128,128,128,128,128,192,64, + 64,96,32,16,24,12,6,23,23,9,1,252,64,32,48,16, + 24,8,8,12,4,4,4,4,4,4,12,8,8,8,16,16, + 32,64,192,10,10,20,14,2,8,12,0,12,0,204,192,201, + 192,42,0,30,0,235,192,201,192,12,0,12,0,22,22,66, + 24,1,252,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,255,255,252,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,3,8,8,7,2,252,192,224,224,32,32, + 64,64,128,7,1,1,11,2,6,254,3,3,3,7,2,0, + 224,224,224,8,24,24,12,2,250,1,1,2,2,2,4,4, + 4,12,8,8,24,16,16,16,32,32,32,64,64,64,128,128, + 128,12,18,36,15,1,0,15,0,16,192,32,64,96,96,96, + 32,192,48,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,96,32,96,96,32,64,16,192,15,0,9,18,36,15,3, + 0,8,0,8,0,24,0,248,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,128,10,18,36,15,2,0,30,0,99,128,129, + 192,128,192,128,192,224,192,240,192,32,192,1,128,3,0,6, + 0,8,0,16,0,32,0,64,64,192,64,255,192,255,192,11, + 18,36,15,2,0,63,0,97,128,192,192,224,192,240,192,0, + 192,0,192,1,128,62,0,1,128,0,192,0,96,96,96,240, + 96,240,96,192,192,65,128,63,0,12,18,36,15,2,0,1, + 0,3,0,3,0,7,0,15,0,11,0,19,0,51,0,35, + 0,67,0,195,0,131,0,255,224,3,0,3,0,3,0,3, + 0,31,240,11,18,36,15,2,0,96,192,127,128,126,0,64, + 0,64,0,64,0,95,0,97,128,64,192,64,224,0,96,0, + 96,96,96,240,96,224,192,192,192,65,128,62,0,11,18,36, + 15,2,0,15,0,24,128,48,64,96,192,96,192,64,0,192, + 0,207,0,209,192,224,192,224,224,224,96,224,96,224,96,96, + 224,96,192,49,128,15,0,10,18,36,15,3,0,255,192,255, + 192,128,64,128,64,128,128,0,128,1,0,1,0,2,0,6, + 0,6,0,12,0,12,0,30,0,30,0,30,0,30,0,14, + 0,12,18,36,15,2,0,31,128,48,224,96,96,192,48,192, + 48,224,48,240,32,124,64,63,128,55,224,96,240,192,112,192, + 48,192,48,192,48,96,96,112,192,31,128,11,18,36,15,2, + 0,30,0,49,128,96,192,224,192,192,64,192,96,192,96,192, + 224,96,224,113,96,30,96,0,96,0,64,96,192,96,192,64, + 128,65,0,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,8,2,252,96,240,240, + 0,0,0,0,0,96,240,240,16,16,32,32,64,20,21,63, + 24,2,253,0,0,48,0,0,192,0,3,0,0,12,0,0, + 48,0,0,224,0,3,128,0,14,0,0,24,0,0,96,0, + 0,192,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,1,128,0,0,96,0, + 0,16,22,6,18,24,1,4,255,255,252,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,252,20,21,63,24,2,253, + 192,0,0,48,0,0,12,0,0,3,0,0,0,192,0,0, + 112,0,0,28,0,0,7,0,0,1,128,0,0,96,0,0, + 48,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 1,128,0,6,0,0,24,0,0,96,0,0,128,0,0,9, + 18,36,12,2,0,62,0,67,0,129,128,129,128,225,128,97, + 128,3,0,6,0,12,0,16,0,48,0,34,0,34,0,28, + 0,0,0,28,0,28,0,28,0,18,18,54,20,1,0,3, + 248,0,12,6,0,16,109,0,33,156,128,67,12,128,70,8, + 64,142,8,64,142,24,64,140,24,64,140,16,64,140,48,128, + 140,48,128,140,241,0,71,30,0,96,0,0,32,0,0,24, + 12,0,7,240,0,18,18,54,20,2,0,0,128,0,0,192, + 0,1,192,0,1,192,0,1,224,0,3,224,0,2,96,0, + 2,112,0,6,112,0,4,48,0,4,56,0,12,56,0,15, + 248,0,24,28,0,16,12,0,16,12,0,48,14,0,254,63, + 192,15,18,36,17,1,0,255,240,24,28,24,12,24,6,24, + 6,24,6,24,12,24,24,31,224,24,24,24,12,24,6,24, + 6,24,6,24,6,24,12,24,28,255,240,14,18,36,18,2, + 0,7,132,24,108,32,60,96,28,96,12,192,12,192,4,192, + 0,192,0,192,0,192,0,192,4,96,4,96,4,32,8,48, + 24,24,48,7,192,17,18,54,20,1,0,255,240,0,24,12, + 0,24,6,0,24,3,0,24,3,0,24,1,128,24,1,128, + 24,1,128,24,1,128,24,1,128,24,1,128,24,1,128,24, + 1,128,24,3,0,24,3,0,24,6,0,24,12,0,255,240, + 0,15,18,36,18,1,0,255,254,24,6,24,2,24,2,24, + 2,24,34,24,32,24,96,31,224,24,96,24,32,24,32,24, + 34,24,2,24,2,24,6,24,14,255,254,15,18,36,17,1, + 0,255,254,24,6,24,2,24,2,24,2,24,34,24,32,24, + 96,31,224,24,96,24,32,24,32,24,32,24,0,24,0,24, + 0,24,0,127,0,17,18,54,19,2,0,7,196,0,24,100, + 0,48,28,0,96,28,0,96,12,0,96,4,0,192,4,0, + 192,0,0,192,127,128,192,28,0,192,28,0,192,28,0,192, + 28,0,96,28,0,96,28,0,48,52,0,24,100,0,7,132, + 0,18,18,54,20,1,0,255,63,192,24,6,0,24,6,0, + 24,6,0,24,6,0,24,6,0,24,6,0,24,6,0,31, + 254,0,24,6,0,24,6,0,24,6,0,24,6,0,24,6, + 0,24,6,0,24,6,0,24,6,0,255,63,192,8,18,18, + 10,1,0,255,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,12,18,36,14,1,0,7,240,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,97,128,241,128,225,128,193,128,67,0,62,0,17, + 18,54,19,1,0,255,63,128,24,14,0,24,8,0,24,16, + 0,24,32,0,24,64,0,24,128,0,25,192,0,26,192,0, + 28,224,0,24,96,0,24,112,0,24,56,0,24,56,0,24, + 28,0,24,28,0,24,14,0,255,127,128,15,18,36,17,1, + 0,255,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,2,24,2,24,2,24,6,24, + 6,24,14,255,254,20,18,54,22,1,0,252,3,240,28,3, + 128,30,5,128,22,5,128,22,5,128,23,5,128,19,9,128, + 19,9,128,19,137,128,19,145,128,17,145,128,17,209,128,17, + 209,128,16,225,128,16,225,128,16,225,128,16,65,128,254,79, + 240,18,18,54,19,1,0,252,15,192,28,2,0,30,2,0, + 22,2,0,23,2,0,19,130,0,17,130,0,17,194,0,16, + 226,0,16,226,0,16,114,0,16,50,0,16,58,0,16,30, + 0,16,14,0,16,14,0,16,6,0,254,2,0,15,18,36, + 18,2,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,18,36,17,1,0,255,240,24, + 28,24,12,24,6,24,6,24,6,24,12,24,24,31,240,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,255, + 0,15,22,44,18,2,252,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,99,140,36,76,52,120,28,114,7,226,0,98,0,118,0, + 60,0,24,17,18,54,19,1,0,255,240,0,24,24,0,24, + 12,0,24,12,0,24,12,0,24,12,0,24,24,0,31,224, + 0,24,48,0,24,56,0,24,24,0,24,24,0,24,24,0, + 24,28,128,24,28,128,24,28,128,24,31,0,255,15,0,13, + 18,36,16,2,0,30,32,97,160,192,96,192,96,192,32,192, + 32,224,0,124,0,63,128,15,224,129,240,128,112,128,24,192, + 24,192,24,224,16,152,32,135,192,15,18,36,18,2,0,255, + 254,195,14,131,6,131,2,3,2,3,2,3,2,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,240,19,18,54,21,1,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,18, + 18,54,20,1,0,255,31,192,28,3,0,28,2,0,12,2, + 0,14,6,0,6,4,0,7,4,0,7,8,0,3,8,0, + 3,136,0,3,144,0,1,144,0,1,208,0,0,224,0,0, + 224,0,0,224,0,0,64,0,0,64,0,26,18,72,28,1, + 0,255,63,159,192,28,14,3,0,12,6,2,0,12,14,2, + 0,14,15,6,0,14,15,4,0,6,19,4,0,7,19,140, + 0,7,19,136,0,3,49,136,0,3,161,216,0,3,161,208, + 0,1,160,208,0,1,192,240,0,1,192,224,0,0,192,96, + 0,0,128,96,0,0,128,64,0,18,18,54,20,1,0,127, + 191,128,14,12,0,14,12,0,7,8,0,7,16,0,3,176, + 0,1,160,0,1,192,0,0,192,0,0,224,0,1,96,0, + 3,112,0,2,56,0,4,56,0,12,28,0,8,12,0,24, + 14,0,254,63,192,17,18,54,19,1,0,255,31,128,28,6, + 0,28,4,0,14,4,0,6,8,0,7,8,0,3,144,0, + 3,160,0,1,224,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,7,252, + 0,14,18,36,17,2,0,127,252,112,56,96,48,64,112,64, + 224,128,192,1,192,3,128,3,0,7,0,14,0,12,4,28, + 4,56,4,48,12,112,28,224,56,255,248,5,23,23,10,3, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,248,8,24,24,12,2,250,128,128, + 128,64,64,64,32,32,32,16,16,16,16,8,8,8,4,4, + 4,2,2,2,1,1,5,23,23,10,2,251,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,248,11,9,18,15,2,9,4,0,14,0,10,0,17, + 0,49,128,32,128,64,64,64,96,128,32,14,1,2,14,0, + 252,255,252,4,4,4,11,2,13,192,224,96,16,11,12,24, + 13,1,0,30,0,99,0,65,128,97,128,33,128,15,128,113, + 128,193,128,195,160,195,160,197,160,121,192,11,18,36,13,0, + 0,240,0,48,0,48,0,48,0,48,0,48,0,51,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,40,192,39,128,9,12,24,11,1,0,30,0,33,0,96, + 128,193,128,193,128,192,0,192,0,192,0,192,128,96,128,33, + 0,30,0,12,18,36,14,1,0,7,192,0,192,0,192,0, + 192,0,192,0,192,28,192,98,192,97,192,193,192,192,192,192, + 192,192,192,192,192,192,192,97,192,97,192,30,240,9,12,24, + 12,1,0,30,0,35,0,97,128,193,128,193,128,255,128,192, + 0,192,0,192,128,96,128,33,0,30,0,9,18,36,9,1, + 0,15,0,24,128,49,128,49,0,48,0,48,0,254,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,254,0,12,18,36,15,2,250,30,112,97,176,225, + 240,192,192,192,192,192,192,225,128,97,128,30,0,224,0,255, + 0,127,192,64,96,128,32,128,32,128,32,192,64,63,128,13, + 18,36,15,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,51,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,6,18,18,8,1,0,112, + 112,32,0,0,0,240,48,48,48,48,48,48,48,48,48,48, + 252,7,24,24,8,255,250,6,6,0,0,0,0,62,6,6, + 6,6,6,6,6,6,6,6,6,6,6,198,198,140,120,12, + 18,36,14,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,49,240,48,128,49,0,50,0,50,0,54,0,59,0,51, + 0,49,128,49,192,48,224,253,240,6,18,18,8,1,0,240, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,19,12,36,21,1,0,243,199,0,52,249,128,56,113,192, + 56,97,192,48,97,192,48,97,192,48,97,192,48,97,192,48, + 97,192,48,97,192,48,97,192,253,251,224,13,12,24,15,1, + 0,243,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,10,12,24,13,1,0,30, + 0,33,128,97,128,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,33,128,30,0,11,18,36,14,1,250,243,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,56,192,55,128,48,0,48,0,48,0,48,0,48,0,252, + 0,12,18,36,13,1,250,28,64,98,64,97,192,192,192,192, + 192,192,192,192,192,192,192,192,192,97,192,97,192,30,192,0, + 192,0,192,0,192,0,192,0,192,3,240,9,12,24,11,1, + 0,243,128,52,128,57,128,56,128,56,0,48,0,48,0,48, + 0,48,0,48,0,48,0,252,0,9,12,24,11,1,0,125, + 0,131,0,129,0,193,0,240,0,124,0,31,0,131,128,128, + 128,192,128,224,128,159,0,8,17,17,10,1,0,16,16,16, + 48,48,254,48,48,48,48,48,48,48,49,49,51,30,13,12, + 24,14,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,12,24,14, + 1,0,252,248,48,96,48,64,24,64,24,128,12,128,12,128, + 13,0,7,0,7,0,2,0,2,0,19,12,36,21,1,0, + 253,251,224,48,96,128,48,96,128,24,113,0,24,177,0,12, + 177,0,12,154,0,13,26,0,7,28,0,7,12,0,2,12, + 0,2,8,0,12,12,24,14,1,0,249,224,48,128,57,0, + 25,0,14,0,14,0,6,0,11,0,19,0,17,128,33,192, + 243,240,13,18,36,14,0,250,252,248,56,32,24,32,24,64, + 12,64,12,64,12,128,6,128,6,128,7,0,3,0,3,0, + 2,0,2,0,34,0,98,0,100,0,56,0,9,12,24,12, + 1,0,255,128,195,128,131,0,134,0,142,0,12,0,24,0, + 56,0,48,128,96,128,96,128,255,128,6,23,23,12,3,251, + 12,16,48,48,48,48,56,24,24,24,16,224,48,16,24,24, + 56,48,48,48,48,16,12,1,24,24,7,3,250,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,23,23,11,3,251,192,32,48,48,48, + 112,96,96,96,96,32,28,48,96,96,96,96,112,48,48,48, + 32,192,15,5,10,17,1,4,32,4,254,2,143,194,129,254, + 64,124,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=29 h=28 x= 6 y=17 dx=32 dy= 0 ascent=28 len=88 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =22 descent=-7 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr21") = { + 0,76,38,232,247,21,5,131,12,189,32,255,249,28,248,22, + 249,0,0,0,8,0,0,4,21,21,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,64,0,96,240, + 240,96,7,5,5,11,2,17,238,204,204,204,68,15,21,42, + 19,2,0,2,16,6,16,6,16,4,16,4,48,4,48,255, + 254,4,32,12,32,12,32,8,32,8,96,8,96,8,64,255, + 254,24,64,24,64,16,192,16,192,16,128,16,128,13,25,50, + 17,2,254,5,0,5,0,15,128,53,96,37,16,69,24,69, + 24,69,56,69,56,117,48,61,0,63,0,15,192,7,224,5, + 240,5,48,101,24,229,24,229,24,197,24,69,48,69,32,61, + 192,7,0,5,0,19,21,63,25,3,0,60,1,0,70,2, + 0,66,2,0,195,4,0,195,8,0,195,8,0,195,16,0, + 195,16,0,66,32,0,102,32,0,56,64,0,0,67,0,0, + 140,192,1,8,64,1,24,96,2,24,96,2,24,96,4,24, + 96,4,24,96,8,8,64,8,7,128,20,21,63,23,2,0, + 3,128,0,12,64,0,8,32,0,24,32,0,24,32,0,24, + 96,0,28,64,0,12,128,0,15,0,0,7,15,240,15,1, + 128,27,129,0,51,193,0,97,194,0,96,226,0,224,244,0, + 224,124,0,224,56,0,224,60,0,96,60,32,59,198,192,3, + 5,5,7,2,17,224,192,192,192,64,6,28,28,10,3,250, + 4,12,24,16,32,32,64,64,64,128,128,128,128,128,128,128, + 128,128,128,192,64,64,32,32,16,24,8,4,6,28,28,11, + 2,250,128,192,64,32,48,16,24,8,8,8,4,4,4,4, + 4,4,4,4,12,8,8,24,16,48,32,96,192,128,10,12, + 24,14,2,9,12,0,14,0,204,64,228,192,53,0,14,0, + 63,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, + 1,252,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,255,255,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,4,8,8, + 8,2,251,224,240,240,16,16,16,32,64,7,2,2,11,2, + 7,254,254,4,4,4,8,2,0,96,240,240,96,9,28,56, + 13,2,250,0,128,0,128,1,128,1,0,1,0,1,0,2, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,16,0,16,0,16,0,32,0,32,0,32,0,64, + 0,64,0,64,0,192,0,128,0,128,0,14,21,42,17,1, + 0,7,128,24,64,48,32,32,48,96,16,96,24,96,24,224, + 24,224,24,224,24,224,28,224,28,224,24,224,24,224,24,96, + 24,96,24,96,48,48,32,16,96,15,192,10,21,42,17,3, + 0,2,0,6,0,6,0,14,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,255,192,12,21,42,17,2, + 0,31,0,32,192,64,96,128,112,128,112,192,112,240,112,112, + 112,32,96,0,224,0,192,1,0,6,0,12,0,24,0,48, + 16,96,16,64,16,224,112,255,240,255,240,12,21,42,17,2, + 0,31,0,97,192,192,224,224,96,240,96,112,112,0,96,0, + 96,0,224,48,192,63,0,0,192,0,96,0,112,0,112,96, + 112,240,112,240,112,192,96,192,192,127,128,14,21,42,17,2, + 0,0,64,0,192,1,192,1,192,3,192,7,192,5,192,13, + 192,9,192,17,192,49,192,33,192,65,192,193,192,255,252,1, + 192,1,192,1,192,1,192,1,192,15,252,12,21,42,17,2, + 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,79, + 0,112,192,64,96,64,96,0,112,0,112,0,112,96,112,240, + 112,240,112,224,96,192,224,64,192,63,128,12,21,42,17,2, + 0,7,128,24,64,16,96,48,224,96,224,96,192,96,0,224, + 0,231,128,232,192,240,96,240,96,224,112,224,112,224,112,224, + 112,96,112,96,96,112,96,48,192,31,128,11,21,42,17,3, + 0,255,224,255,224,192,32,128,32,128,64,128,64,0,64,0, + 128,1,0,1,0,2,0,6,0,6,0,12,0,12,0,12, + 0,30,0,30,0,30,0,30,0,30,0,14,21,42,17,2, + 0,15,128,48,96,96,48,224,24,224,24,224,24,224,24,240, + 16,124,32,63,192,15,224,51,240,96,248,224,56,224,28,224, + 28,224,24,224,24,96,24,112,48,31,192,12,21,42,17,2, + 0,15,0,48,128,96,64,96,96,224,96,224,96,224,112,224, + 112,224,112,96,112,96,240,49,176,14,48,0,48,0,32,48, + 96,112,96,112,64,96,192,96,128,63,0,4,14,14,8,2, + 0,96,240,240,96,0,0,0,0,0,0,96,240,240,96,4, + 18,18,8,2,251,96,240,240,96,0,0,0,0,0,0,224, + 240,240,16,16,16,32,64,22,24,72,27,2,251,0,0,12, + 0,0,56,0,0,96,0,1,128,0,7,0,0,28,0,0, + 112,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 0,224,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,3,128,0,0,224,0, + 0,56,0,0,12,24,7,21,26,1,5,255,255,255,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 22,24,72,27,3,251,192,0,0,112,0,0,24,0,0,6, + 0,0,3,128,0,0,224,0,0,56,0,0,12,0,0,3, + 0,0,0,192,0,0,112,0,0,28,0,0,28,0,0,48, + 0,0,192,0,3,128,0,14,0,0,56,0,0,96,0,1, + 128,0,7,0,0,28,0,0,112,0,0,192,0,0,11,21, + 42,14,2,0,30,0,97,128,128,192,128,192,240,224,240,192, + 97,192,1,128,3,128,6,0,12,0,8,0,17,0,17,0, + 17,0,14,0,0,0,12,0,30,0,30,0,12,0,21,21, + 63,25,2,1,3,255,0,12,0,128,24,0,64,48,0,32, + 32,59,144,64,199,16,65,135,8,131,7,8,135,6,8,134, + 6,8,142,14,8,142,14,8,142,12,16,142,28,16,142,28, + 32,70,44,64,67,199,128,32,0,0,16,0,0,8,1,128, + 7,222,0,20,21,63,22,1,0,0,32,0,0,96,0,0, + 96,0,0,112,0,0,240,0,0,240,0,0,184,0,1,56, + 0,1,56,0,3,28,0,3,28,0,2,28,0,6,14,0, + 6,14,0,7,254,0,12,7,0,12,7,0,8,7,0,24, + 3,128,24,3,128,255,31,240,16,21,42,20,2,0,255,240, + 28,12,28,6,28,7,28,7,28,7,28,7,28,6,28,12, + 31,240,28,28,28,6,28,6,28,7,28,7,28,7,28,7, + 28,7,28,6,28,12,255,240,15,21,42,19,2,1,15,226, + 16,54,48,30,32,14,96,6,96,6,224,6,224,2,224,0, + 224,0,224,0,224,0,224,0,224,2,96,2,96,2,96,4, + 32,4,48,12,24,8,7,240,19,21,63,22,2,0,255,248, + 0,28,6,0,28,3,0,28,1,128,28,1,128,28,1,192, + 28,0,192,28,0,192,28,0,192,28,0,224,28,0,224,28, + 0,224,28,0,192,28,0,192,28,0,192,28,1,192,28,1, + 128,28,1,0,28,3,0,28,6,0,255,248,0,17,21,63, + 20,2,0,255,255,128,28,3,128,28,3,128,28,1,128,28, + 1,128,28,0,128,28,32,128,28,32,0,28,32,0,28,96, + 0,31,224,0,28,96,0,28,32,0,28,32,128,28,32,128, + 28,0,128,28,1,128,28,1,128,28,3,128,28,7,128,255, + 255,128,17,21,63,20,2,0,255,255,128,28,3,128,28,3, + 128,28,1,128,28,1,128,28,0,128,28,32,128,28,32,0, + 28,32,0,28,96,0,31,224,0,28,96,0,28,32,0,28, + 32,0,28,32,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,21,63,21,2,1,15,226,0, + 24,26,0,48,14,0,32,14,0,96,6,0,96,6,0,224, + 2,0,224,2,0,224,0,0,224,0,0,224,127,192,224,14, + 0,224,14,0,224,14,0,224,14,0,96,14,0,96,14,0, + 32,14,0,48,26,0,16,50,0,15,226,0,20,21,63,23, + 2,0,255,15,240,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,31,255,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,15, + 240,8,21,21,12,2,0,255,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,255,13,21,42,15, + 1,0,7,248,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 112,224,240,192,240,192,192,192,65,128,127,0,19,21,63,22, + 2,0,255,31,224,28,7,0,28,6,0,28,12,0,28,8, + 0,28,16,0,28,32,0,28,64,0,28,192,0,29,224,0, + 30,224,0,28,112,0,28,112,0,28,56,0,28,28,0,28, + 28,0,28,14,0,28,14,0,28,7,0,28,7,0,255,63, + 224,16,21,42,20,2,0,255,128,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,1,28,1,28,1,28,1,28,3,28,3,28,15,255, + 255,21,21,63,25,2,0,252,1,248,30,1,224,30,1,224, + 30,2,224,22,2,224,23,2,224,23,2,224,19,4,224,19, + 132,224,19,132,224,17,132,224,17,200,224,17,200,224,16,200, + 224,16,208,224,16,240,224,16,240,224,16,112,224,16,96,224, + 16,96,224,254,39,248,20,21,63,23,2,0,252,7,240,28, + 0,128,30,0,128,31,0,128,23,0,128,19,128,128,19,192, + 128,17,192,128,16,224,128,16,240,128,16,112,128,16,56,128, + 16,56,128,16,28,128,16,30,128,16,14,128,16,7,128,16, + 7,128,16,3,128,16,1,128,254,1,128,17,22,66,20,2, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,21,63,20,2,0,255,248,0,28,14,0,28, + 7,0,28,3,0,28,3,0,28,3,128,28,3,0,28,3, + 0,28,6,0,28,12,0,31,240,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,255,128,0,17,27,81,20,2,251,0,128, + 0,7,112,0,24,8,0,16,12,0,48,6,0,96,6,0, + 96,3,0,96,3,0,224,3,0,224,3,0,224,3,0,224, + 3,128,224,3,128,224,3,0,224,3,0,96,3,0,96,3, + 0,97,198,0,51,38,0,26,60,0,14,60,0,7,48,128, + 0,241,0,0,49,0,0,57,0,0,31,0,0,14,0,18, + 21,63,21,2,0,255,248,0,28,14,0,28,6,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,6,0,28,12,0, + 31,240,0,28,24,0,28,24,0,28,12,0,28,12,0,28, + 12,0,28,14,0,28,14,64,28,14,64,28,14,64,28,7, + 128,255,131,128,14,21,42,18,3,1,63,144,96,208,192,112, + 192,48,192,16,192,16,224,16,240,16,124,0,63,128,31,224, + 7,240,128,248,128,56,128,28,128,12,192,12,224,12,224,8, + 144,16,142,224,17,21,63,21,2,0,255,255,128,225,195,128, + 193,193,128,193,193,128,193,192,128,129,192,128,129,192,128,129, + 192,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,15,248,0,20,21,63,23,2,0,255, + 7,240,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,12,0,128,12,1,0,6,2,0,3,252,0,20,22, + 66,23,2,255,255,143,240,28,1,192,28,1,128,14,1,128, + 14,1,0,14,1,0,7,3,0,7,2,0,7,2,0,3, + 134,0,3,132,0,3,132,0,1,196,0,1,200,0,1,200, + 0,0,232,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,32,0,0,32,0,29,22,88,32,2,255,255,63,231,248, + 28,7,0,192,28,7,0,128,28,7,0,128,12,7,128,128, + 14,15,129,128,14,11,129,0,6,9,129,0,7,9,195,0, + 7,25,194,0,7,17,194,0,3,16,230,0,3,144,228,0, + 3,176,228,0,1,160,108,0,1,224,120,0,1,224,120,0, + 1,192,120,0,0,192,48,0,0,192,48,0,0,192,48,0, + 0,128,16,0,19,21,63,22,2,0,255,159,224,14,7,0, + 14,6,0,7,4,0,7,12,0,3,136,0,3,208,0,1, + 208,0,1,224,0,0,224,0,0,112,0,0,240,0,1,184, + 0,1,56,0,2,28,0,6,28,0,4,14,0,8,14,0, + 24,7,0,24,7,0,255,31,224,19,21,63,21,1,0,255, + 143,224,30,3,128,14,3,0,14,2,0,7,2,0,7,4, + 0,3,132,0,1,200,0,1,200,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,7,254,0,15,21, + 42,19,2,0,63,254,56,14,112,28,96,56,64,56,64,112, + 64,240,0,224,1,192,1,192,3,128,7,128,7,0,14,2, + 14,2,28,2,60,2,56,6,112,6,240,14,255,254,6,27, + 27,11,3,250,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,252,9, + 28,56,13,2,250,128,0,128,0,192,0,64,0,64,0,64, + 0,32,0,32,0,32,0,16,0,16,0,16,0,24,0,8, + 0,8,0,12,0,4,0,4,0,4,0,2,0,2,0,2, + 0,1,0,1,0,1,0,1,128,0,128,0,128,6,27,27, + 11,2,250,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,252,13,11, + 22,17,2,10,2,0,2,0,5,0,13,128,8,128,24,192, + 16,64,32,32,96,48,64,16,192,24,15,1,2,15,0,251, + 255,254,5,5,5,13,2,16,192,224,96,48,8,13,14,28, + 15,1,0,31,0,33,128,97,192,113,192,113,192,1,192,15, + 192,49,192,97,192,225,192,225,200,225,200,226,216,60,240,13, + 21,42,15,1,0,248,0,56,0,56,0,56,0,56,0,56, + 0,56,0,59,192,60,96,56,48,56,48,56,48,56,48,56, + 56,56,56,56,48,56,48,56,48,56,32,44,96,35,192,10, + 14,28,12,1,0,31,0,48,128,96,64,96,192,225,192,224, + 128,224,0,224,0,224,0,224,0,96,64,96,128,48,128,31, + 0,13,21,42,15,1,0,3,224,0,224,0,224,0,224,0, + 224,0,224,0,224,30,224,49,224,97,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 248,10,14,28,13,1,0,30,0,49,128,97,128,96,192,224, + 192,224,192,255,192,224,0,224,0,224,64,96,64,96,64,48, + 128,31,0,10,21,42,10,1,0,15,0,24,128,57,192,57, + 128,56,0,56,0,56,0,254,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,254,0,14,21,42,16,2,249,31,56,113,200,96,220,224, + 248,224,224,224,224,224,224,96,192,49,128,31,0,96,0,128, + 0,224,0,127,224,56,112,64,16,128,16,128,16,128,48,64, + 96,63,128,14,21,42,16,1,0,248,0,56,0,56,0,56, + 0,56,0,56,0,56,0,57,192,62,96,60,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,252,252,6,21,21,7,1,0,112,112,112,0,0,0,0, + 240,112,112,112,112,112,112,112,112,112,112,112,112,252,8,28, + 28,9,255,249,6,7,6,0,0,0,0,31,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,70,230,198,204,120, + 13,21,42,15,1,0,248,0,56,0,56,0,56,0,56,0, + 56,0,56,0,57,248,56,192,56,128,57,0,57,0,58,0, + 63,0,63,0,59,128,57,192,56,192,56,224,56,224,253,248, + 7,21,21,8,1,0,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,254,21,14,42,23,1, + 0,249,195,192,62,100,224,60,120,96,56,120,96,56,112,96, + 56,112,96,56,112,96,56,112,96,56,112,96,56,112,96,56, + 112,96,56,112,96,56,112,96,252,253,248,14,14,28,16,1, + 0,249,192,62,96,60,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,252,252,12,14,28, + 14,1,0,15,0,48,128,96,192,96,96,224,96,224,96,224, + 112,224,112,224,96,224,96,96,96,96,192,48,128,15,0,13, + 21,42,15,1,249,251,192,60,96,56,48,56,48,56,48,56, + 48,56,56,56,56,56,48,56,48,56,48,56,48,60,96,59, + 192,56,0,56,0,56,0,56,0,56,0,56,0,252,0,13, + 21,42,15,1,249,30,32,49,32,96,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 224,0,224,0,224,0,224,0,224,0,224,0,224,3,248,10, + 14,28,12,1,0,249,128,58,64,60,192,60,192,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,252, + 0,10,14,28,13,2,0,60,128,195,128,129,128,128,128,192, + 128,240,0,62,0,15,128,131,192,128,192,192,64,192,64,160, + 128,159,0,8,20,20,10,1,0,16,16,16,16,48,48,254, + 48,48,48,48,48,48,48,48,49,49,49,59,30,14,14,28, + 16,1,0,248,240,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,240,25,112,14,124,15, + 14,28,15,0,0,254,126,56,16,24,16,28,16,12,32,12, + 32,6,32,6,64,7,64,3,64,3,128,1,128,1,128,1, + 0,22,14,42,22,0,0,254,252,252,56,56,32,24,56,32, + 28,56,32,12,56,64,12,60,64,6,76,64,6,76,128,7, + 70,128,3,134,128,3,135,0,1,131,0,1,131,0,1,2, + 0,14,14,28,16,1,0,124,248,56,96,24,64,12,128,14, + 128,7,0,7,0,3,128,5,128,5,192,8,192,16,224,16, + 96,249,252,15,21,42,15,0,249,254,126,24,16,24,16,28, + 16,12,32,12,32,14,32,6,64,6,64,6,64,3,128,3, + 128,3,128,1,128,1,0,1,0,1,0,98,0,114,0,100, + 0,56,0,10,14,28,13,1,0,255,192,193,192,129,128,131, + 0,135,0,6,0,14,0,28,0,24,0,56,64,48,64,112, + 64,224,192,255,192,6,27,27,12,3,250,12,24,48,48,48, + 48,48,56,24,24,24,16,48,192,48,16,24,24,24,56,48, + 48,48,48,48,16,12,1,28,28,8,4,250,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,27,27,12,3,250,128,96, + 32,48,48,48,112,96,96,96,96,96,32,28,48,96,96,96, + 96,96,112,48,48,48,32,96,192,16,6,12,18,1,5,56, + 2,126,1,143,193,131,241,128,255,64,62,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,8, + 0,0,4,21,21,8,2,249,96,240,240,96,0,64,64,96, + 96,96,96,96,96,96,96,240,240,240,240,240,96,10,21,42, + 17,3,253,4,0,4,0,4,0,4,0,31,0,52,128,100, + 64,100,192,229,192,228,128,228,0,228,0,228,0,228,0,100, + 64,100,64,52,128,31,0,4,0,4,0,4,0,16,21,42, + 21,2,0,0,60,0,194,0,131,1,135,1,135,3,130,3, + 128,3,128,3,128,63,128,3,240,3,128,3,128,3,128,3, + 0,3,0,123,1,142,1,135,3,135,254,120,252,13,13,26, + 17,2,4,143,136,112,112,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,64,16,96,48,112,112,143,136,16,21,42, + 17,1,0,252,63,56,8,56,8,24,16,28,16,28,32,14, + 32,14,64,6,64,7,128,3,128,63,248,3,128,3,128,63, + 248,3,128,3,128,3,128,3,128,3,128,31,240,1,27,27, + 8,4,251,128,128,128,128,128,128,128,128,128,128,128,0,0, + 0,0,0,128,128,128,128,128,128,128,128,128,128,128,11,27, + 54,19,3,250,30,0,49,0,97,128,99,128,97,0,112,0, + 56,0,60,0,62,0,79,0,131,128,129,192,128,224,192,96, + 224,32,112,32,56,64,28,128,15,0,7,0,3,0,1,128, + 33,128,113,128,97,128,35,0,28,0,8,3,3,12,2,16, + 195,231,195,21,22,66,23,1,0,0,32,0,3,222,0,12, + 1,128,24,0,192,48,114,96,33,142,32,67,6,16,67,2, + 16,135,2,8,135,0,8,135,0,8,135,0,8,135,0,8, + 135,0,8,135,2,8,67,2,16,67,4,16,33,132,32,48, + 120,96,24,0,192,12,1,128,3,222,0,8,9,9,12,2, + 12,120,196,12,52,68,197,205,118,254,7,12,12,14,3,1, + 16,34,98,68,196,196,196,196,196,66,34,16,14,6,12,16, + 1,5,255,252,0,4,0,4,0,4,0,4,0,4,7,2, + 2,11,2,7,254,254,21,22,66,23,1,0,0,32,0,3, + 222,0,12,1,128,24,0,192,63,248,96,35,140,32,67,142, + 16,67,142,16,131,142,8,131,140,8,131,240,8,131,140,8, + 131,140,8,131,142,8,131,142,72,67,142,80,67,134,80,47, + 195,160,48,0,96,24,0,192,12,1,128,3,222,0,8,1, + 1,14,3,17,255,8,8,8,16,4,13,60,66,129,129,129, + 129,66,60,24,21,63,26,1,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,255,255,255,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,0,8,0,0,8,0,0,8,0,0, + 0,0,0,0,0,255,255,255,8,13,13,13,3,8,60,198, + 135,199,231,6,12,24,48,65,193,255,255,9,13,26,13,3, + 8,60,0,70,0,67,0,99,0,3,0,6,0,120,0,7, + 0,3,0,227,128,227,0,135,0,124,0,5,5,5,13,6, + 16,24,56,48,96,128,15,22,44,18,2,248,192,64,192,96, + 224,224,192,224,192,224,192,96,192,96,192,96,64,96,64,64, + 64,66,192,194,177,190,143,12,128,0,128,0,192,0,192,0, + 192,0,224,0,224,0,96,0,12,26,52,16,2,251,31,240, + 124,64,252,64,252,64,252,64,252,64,252,64,124,64,60,64, + 4,64,4,64,4,64,4,64,4,64,4,64,4,64,4,64, + 4,64,4,64,4,64,4,64,4,64,4,64,4,64,4,64, + 4,64,4,4,4,8,2,8,96,240,240,96,6,7,7,13, + 3,250,32,32,48,8,12,140,120,6,12,12,13,4,9,16, + 48,240,48,48,48,48,48,48,48,48,252,7,10,10,11,2, + 11,56,68,198,198,198,198,198,68,56,254,8,12,12,14,3, + 1,8,132,70,66,35,35,35,35,34,70,68,8,19,21,63, + 25,4,0,16,3,0,48,2,0,240,4,0,48,4,0,48, + 8,0,48,8,0,48,16,0,48,48,0,48,32,0,48,65, + 128,48,67,128,48,131,128,252,133,128,1,9,128,3,9,128, + 2,17,128,4,31,224,4,1,128,8,1,128,8,1,128,16, + 7,224,19,21,63,25,4,0,16,2,0,48,2,0,240,4, + 0,48,4,0,48,8,0,48,16,0,48,16,0,48,32,0, + 48,39,128,48,72,192,48,80,224,48,144,224,252,156,224,1, + 12,192,2,0,192,2,1,0,4,6,0,4,12,32,8,8, + 32,8,31,224,16,31,224,20,21,63,25,3,0,60,1,0, + 70,1,0,67,2,0,99,2,0,3,4,0,6,12,0,120, + 8,0,7,16,0,3,16,0,227,160,192,227,33,192,135,65, + 192,124,130,192,0,132,192,1,4,192,1,8,192,2,15,240, + 2,0,192,4,0,192,8,0,192,8,3,240,11,21,42,14, + 1,249,12,0,30,0,30,0,12,0,0,0,14,0,17,0, + 17,0,17,0,2,0,6,0,28,0,56,0,112,0,224,192, + 225,224,225,224,224,32,96,32,112,64,31,128,20,28,84,22, + 1,0,3,0,0,3,128,0,1,128,0,0,192,0,0,64, + 0,0,0,0,0,0,0,0,32,0,0,96,0,0,96,0, + 0,112,0,0,240,0,0,240,0,0,184,0,1,56,0,1, + 56,0,3,28,0,3,28,0,2,28,0,6,14,0,6,14, + 0,7,254,0,12,7,0,12,7,0,8,7,0,24,3,128, + 24,3,128,255,31,240,20,28,84,22,1,0,0,4,0,0, + 12,0,0,24,0,0,48,0,0,32,0,0,0,0,0,0, + 0,0,32,0,0,96,0,0,96,0,0,112,0,0,240,0, + 0,240,0,1,184,0,1,56,0,1,56,0,3,28,0,3, + 28,0,2,28,0,6,14,0,6,14,0,7,254,0,12,7, + 0,12,7,0,8,7,0,24,3,128,24,3,128,255,31,240, + 20,28,84,22,1,0,0,32,0,0,96,0,0,240,0,1, + 152,0,3,4,0,0,0,0,0,0,0,0,32,0,0,96, + 0,0,96,0,0,112,0,0,240,0,0,240,0,0,184,0, + 1,56,0,1,56,0,3,28,0,3,28,0,2,28,0,6, + 14,0,6,14,0,7,254,0,12,7,0,12,7,0,8,7, + 0,24,3,128,24,3,128,255,31,240,20,27,81,22,1,0, + 1,228,0,3,252,0,2,56,0,0,0,0,0,0,0,0, + 0,0,0,32,0,0,96,0,0,96,0,0,112,0,0,240, + 0,0,240,0,0,184,0,1,184,0,1,56,0,3,28,0, + 3,28,0,2,28,0,6,14,0,6,14,0,7,254,0,12, + 7,0,12,7,0,8,7,0,24,3,128,24,3,128,255,31, + 240,19,27,81,22,2,0,6,24,0,7,28,0,6,24,0, + 0,0,0,0,0,0,0,0,0,0,64,0,0,192,0,0, + 224,0,0,224,0,1,224,0,1,224,0,1,112,0,3,112, + 0,2,48,0,2,56,0,6,56,0,4,24,0,4,28,0, + 12,28,0,15,252,0,8,14,0,24,14,0,24,6,0,24, + 7,0,56,7,0,254,31,224,20,28,84,23,2,0,0,96, + 0,1,152,0,1,8,0,1,8,0,1,152,0,0,96,0, + 0,0,0,0,96,0,0,96,0,0,96,0,0,240,0,0, + 240,0,0,240,0,1,184,0,1,56,0,1,56,0,3,28, + 0,2,28,0,2,28,0,6,14,0,4,14,0,15,254,0, + 8,7,0,8,7,0,24,7,0,24,3,128,56,3,128,255, + 31,240,27,21,84,30,1,0,0,63,255,224,0,15,0,224, + 0,15,0,96,0,31,0,96,0,23,0,32,0,55,0,32, + 0,39,8,32,0,103,8,0,0,71,8,0,0,199,24,0, + 0,135,248,0,1,7,24,0,3,7,8,0,2,7,8,32, + 7,255,8,32,4,7,0,32,12,7,0,32,8,7,0,96, + 24,7,0,96,56,7,1,224,255,63,255,224,15,28,56,19, + 2,250,15,226,16,54,48,30,32,14,96,6,96,6,224,6, + 224,2,224,0,224,0,224,0,224,0,224,0,224,2,96,2, + 96,2,96,4,32,4,48,12,24,8,6,112,1,128,1,0, + 1,192,0,96,0,112,8,96,7,192,17,28,84,20,2,0, + 4,0,0,6,0,0,3,0,0,1,0,0,0,128,0,0, + 0,0,0,0,0,255,255,128,28,3,128,28,3,128,28,1, + 128,28,1,128,28,0,128,28,32,128,28,32,0,28,32,0, + 28,96,0,31,224,0,28,96,0,28,32,0,28,32,128,28, + 32,128,28,0,128,28,1,128,28,1,128,28,3,128,28,7, + 128,255,255,128,17,28,84,20,2,0,0,24,0,0,56,0, + 0,48,0,0,96,0,0,128,0,0,0,0,0,0,0,255, + 255,128,28,3,128,28,3,128,28,1,128,28,1,128,28,0, + 128,28,32,128,28,32,0,28,32,0,28,96,0,31,224,0, + 28,96,0,28,32,0,28,32,128,28,32,128,28,0,128,28, + 1,128,28,1,128,28,3,128,28,7,128,255,255,128,17,28, + 84,20,2,0,0,128,0,0,192,0,1,192,0,2,32,0, + 4,24,0,0,0,0,0,0,0,255,255,128,28,3,128,28, + 3,128,28,1,128,28,1,128,28,0,128,28,32,128,28,32, + 0,28,32,0,28,96,0,31,224,0,28,96,0,28,32,0, + 28,32,128,28,32,128,28,0,128,28,1,128,28,1,128,28, + 3,128,28,7,128,255,255,128,17,27,81,20,2,0,6,48, + 0,7,56,0,6,48,0,0,0,0,0,0,0,0,0,0, + 255,255,128,28,7,128,28,3,128,28,1,128,28,1,128,28, + 1,128,28,32,128,28,32,0,28,32,0,28,96,0,31,224, + 0,28,96,0,28,32,0,28,32,128,28,32,128,28,1,0, + 28,1,128,28,1,128,28,3,128,28,7,128,255,255,128,8, + 28,28,12,2,0,192,224,96,48,24,0,0,255,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 255,9,28,56,12,2,0,1,0,3,0,6,0,4,0,8, + 0,0,0,0,0,255,128,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,8, + 28,28,12,2,0,8,24,28,38,193,0,0,255,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 255,9,27,54,11,2,0,195,0,227,128,195,0,0,0,0, + 0,0,0,255,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,0,19,21,63, + 22,2,0,255,248,0,28,6,0,28,3,0,28,1,128,28, + 1,192,28,0,192,28,0,192,28,0,224,28,0,224,255,128, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,192, + 28,0,192,28,1,128,28,1,128,28,3,0,28,6,0,255, + 248,0,20,27,81,23,2,0,1,226,0,3,254,0,2,28, + 0,0,0,0,0,0,0,0,0,0,252,7,240,28,0,128, + 30,0,128,31,0,128,23,0,128,19,128,128,19,192,128,17, + 192,128,16,224,128,16,240,128,16,112,128,16,56,128,16,56, + 128,16,28,128,16,30,128,16,14,128,16,7,128,16,7,128, + 16,3,128,16,1,128,254,1,128,17,28,84,20,2,0,12, + 0,0,14,0,0,6,0,0,3,0,0,1,128,0,0,0, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,28,84,20,2,0,0,24,0,0,56,0,0, + 112,0,0,64,0,0,128,0,0,0,0,0,128,0,7,112, + 0,24,8,0,16,12,0,48,6,0,96,6,0,96,3,0, + 96,3,0,224,3,0,224,3,0,224,3,0,224,3,128,224, + 3,128,224,3,0,224,3,0,96,3,0,96,3,0,96,6, + 0,48,6,0,16,12,0,24,8,0,7,240,0,17,28,84, + 20,2,0,0,128,0,1,128,0,3,192,0,6,32,0,12, + 16,0,0,8,0,0,128,0,7,112,0,24,8,0,16,12, + 0,48,6,0,96,6,0,96,3,0,96,3,0,224,3,0, + 224,3,0,224,3,0,224,3,128,224,3,128,224,3,0,224, + 3,0,96,3,0,96,3,0,96,6,0,48,6,0,16,12, + 0,24,8,0,7,240,0,17,27,81,20,2,0,7,136,0, + 15,248,0,8,112,0,0,0,0,0,0,0,0,128,0,7, + 112,0,24,8,0,16,12,0,48,6,0,96,6,0,96,3, + 0,96,3,0,224,3,0,224,3,0,224,3,0,224,3,128, + 224,3,128,224,3,0,224,3,0,96,3,0,96,3,0,96, + 6,0,48,6,0,16,12,0,24,8,0,7,240,0,17,27, + 81,20,2,0,12,48,0,14,56,0,12,48,0,0,0,0, + 0,0,0,0,128,0,7,112,0,24,8,0,16,12,0,48, + 6,0,96,6,0,96,3,0,96,3,0,224,3,0,224,3, + 0,224,3,0,224,3,128,224,3,128,224,3,0,224,3,0, + 96,3,0,96,3,0,96,6,0,48,6,0,16,12,0,24, + 8,0,7,240,0,18,18,54,27,5,255,128,0,192,192,1, + 128,96,3,0,48,6,0,24,12,0,12,24,0,6,48,0, + 3,96,0,1,192,0,1,192,0,3,96,0,6,48,0,12, + 24,0,24,12,0,48,6,0,96,3,0,64,1,128,128,0, + 192,17,21,63,20,2,1,7,241,0,8,15,0,16,14,0, + 48,6,0,96,14,0,96,27,0,96,19,0,224,35,0,224, + 99,0,224,195,128,225,131,128,225,3,0,226,3,0,230,3, + 0,236,3,0,104,3,0,112,6,0,112,6,0,112,12,0, + 88,8,0,143,240,0,20,28,84,23,2,0,3,0,0,3, + 128,0,1,128,0,0,192,0,0,32,0,0,0,0,0,0, + 0,255,7,240,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,12,0,128,12,1,0,6,2,0,3,252,0, + 20,28,84,23,2,0,0,4,0,0,12,0,0,24,0,0, + 16,0,0,32,0,0,0,0,0,0,0,255,7,240,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,12,0, + 128,12,1,0,6,2,0,3,252,0,20,28,84,23,2,0, + 0,32,0,0,96,0,0,112,0,0,136,0,3,4,0,0, + 0,0,0,0,0,255,7,240,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,12,1,128,12,1,0,6,2, + 0,3,252,0,20,27,81,23,2,0,1,134,0,3,142,0, + 1,134,0,0,0,0,0,0,0,0,0,0,255,131,240,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,12, + 0,128,12,1,0,6,2,0,3,252,0,19,28,84,21,1, + 0,0,4,0,0,12,0,0,24,0,0,16,0,0,32,0, + 0,0,0,0,0,0,255,143,224,30,3,128,14,3,0,14, + 2,0,7,2,0,7,4,0,3,132,0,1,200,0,1,200, + 0,0,240,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,254,0,17,21,63,20,2,0,255,128,0,28,0, + 0,28,0,0,31,240,0,28,12,0,28,6,0,28,3,0, + 28,3,0,28,3,128,28,3,128,28,3,0,28,3,0,28, + 6,0,28,12,0,31,240,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,255,128,0,13,21,42,15,1,0, + 7,192,12,96,24,112,56,112,56,112,56,96,56,192,59,0, + 56,192,56,96,56,48,56,48,56,56,56,56,56,56,56,56, + 58,56,63,56,62,48,60,48,251,192,13,21,42,15,1,0, + 96,0,96,0,48,0,24,0,8,0,4,0,0,0,31,0, + 97,128,65,192,97,192,113,192,1,192,15,192,49,192,97,192, + 193,192,193,200,195,200,196,216,56,240,13,21,42,15,1,0, + 0,192,1,192,1,128,3,0,6,0,4,0,0,0,31,0, + 33,128,96,192,112,192,112,192,0,192,7,192,56,192,96,192, + 224,192,224,200,225,200,226,216,60,112,13,21,42,15,1,0, + 4,0,12,0,14,0,26,0,17,0,32,128,0,0,31,0, + 33,128,97,192,113,192,113,192,1,192,15,192,49,192,97,192, + 225,192,225,200,225,200,226,216,60,240,13,20,40,15,1,0, + 24,0,63,128,71,128,0,0,0,0,0,0,31,0,33,128, + 97,192,113,192,113,192,1,192,15,192,49,192,97,192,225,192, + 225,200,225,200,226,216,60,240,13,20,40,15,1,0,97,128, + 97,192,97,128,0,0,0,0,0,0,30,0,97,128,64,128, + 96,128,96,192,0,192,15,192,48,192,96,192,192,192,193,200, + 194,200,194,216,60,112,13,21,42,15,1,0,14,0,49,0, + 33,0,33,0,19,0,14,0,0,0,30,0,33,128,97,128, + 97,128,113,192,1,192,15,192,113,192,97,192,225,192,225,200, + 227,200,229,216,120,240,18,14,42,20,1,0,31,30,0,97, + 227,0,65,227,0,97,193,128,113,193,128,1,193,128,15,255, + 192,113,192,0,65,192,0,193,192,128,193,192,128,194,224,128, + 194,97,0,60,62,0,10,20,40,12,1,250,31,0,48,128, + 96,192,96,192,225,192,224,128,224,0,224,0,224,0,224,64, + 96,64,96,128,48,128,31,0,8,0,12,0,3,0,3,0, + 3,0,30,0,10,21,42,13,1,0,96,0,112,0,56,0, + 24,0,4,0,0,0,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,21,42,13,1,0,0,192,1,192,1,128, + 3,0,6,0,0,0,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,21,42,13,1,0,4,0,4,0,14,0, + 11,0,17,0,32,128,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,20,40,13,1,0,49,128,113,192,49,128, + 0,0,0,0,0,0,30,0,49,128,97,128,96,192,224,192, + 224,192,255,192,224,0,224,0,224,64,96,64,96,64,48,128, + 31,0,7,21,21,8,0,0,192,192,96,48,24,0,0,124, + 28,28,28,28,28,28,28,28,28,28,28,28,126,7,21,21, + 8,1,0,6,14,12,24,16,0,0,248,56,56,56,56,56, + 56,56,56,56,56,56,56,252,7,20,20,9,1,0,48,48, + 104,132,2,0,248,56,56,56,56,56,56,56,56,56,56,56, + 56,252,8,19,19,9,1,0,198,231,198,0,0,124,28,28, + 28,28,28,28,28,28,28,28,28,28,126,12,21,42,14,1, + 0,56,64,29,128,14,0,15,0,19,0,33,128,1,192,15, + 192,48,224,96,224,96,96,224,96,224,112,224,112,224,96,224, + 96,224,96,96,96,96,192,48,128,15,0,14,20,40,16,1, + 0,14,32,15,32,19,192,16,192,0,0,0,0,249,192,62, + 96,60,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,252,252,12,21,42,14,1,0,32, + 0,48,0,24,0,8,0,4,0,0,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,21,42,14,1,0,0, + 192,1,192,1,128,3,0,2,0,4,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,21,42,14,1,0,4, + 0,6,0,14,0,11,0,16,128,32,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,20,40,14,1,0,28, + 64,63,192,39,128,0,0,0,0,0,0,15,0,48,128,96, + 192,96,96,224,96,224,96,224,112,224,112,224,96,224,96,96, + 96,96,192,48,128,15,0,12,20,40,14,1,0,48,192,57, + 192,48,192,0,0,0,0,0,0,15,0,48,128,96,192,96, + 96,224,96,224,96,224,112,224,112,224,96,224,96,96,96,96, + 192,48,128,15,0,24,19,57,26,1,254,0,24,0,0,60, + 0,0,60,0,0,24,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,24,0,0,60,0,0,60, + 0,0,24,0,12,14,28,14,1,0,15,32,48,160,96,192, + 96,224,225,96,227,96,226,112,228,112,232,96,240,96,96,96, + 96,192,112,128,143,0,14,21,42,16,1,0,24,0,24,0, + 12,0,6,0,2,0,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,21,42,16,1,0,0,96,0,224, + 0,192,1,128,1,0,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,21,42,16,1,0,2,0,3,0, + 7,0,4,128,8,64,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,20,40,16,1,0,24,96,28,224, + 24,96,0,0,0,0,0,0,248,240,56,112,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,240, + 25,112,14,124,14,28,56,15,0,249,0,48,0,112,0,96, + 0,192,1,128,0,0,0,0,254,124,24,16,24,16,28,16, + 12,32,12,32,14,32,6,64,6,64,6,64,3,128,3,128, + 3,128,1,128,1,0,1,0,1,0,98,0,114,0,100,0, + 56,0,12,28,56,14,1,249,56,0,248,0,56,0,56,0, + 56,0,56,0,56,0,57,224,62,112,60,112,56,112,56,112, + 56,112,56,96,56,96,56,192,56,128,57,128,58,0,60,0, + 56,0,56,0,56,0,56,0,56,0,56,0,48,0,192,0, + 14,26,52,15,0,249,12,48,14,112,12,48,0,0,0,0, + 254,60,24,16,24,16,28,32,12,32,12,32,14,32,6,64, + 6,64,7,64,3,128,3,128,3,128,1,0,1,0,1,0, + 1,0,114,0,114,0,116,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=24 h=28 x= 3 y= 9 dx=26 dy= 0 ascent=22 len=75 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21n[702] U8G_SECTION(".progmem.u8g_font_osr21n") = { + 0,76,38,232,247,21,0,0,0,0,42,57,0,22,250,21, + 0,10,12,24,14,2,9,12,0,14,0,204,64,228,192,53, + 0,14,0,63,0,229,192,196,192,12,0,14,0,12,0,24, + 25,75,26,1,252,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,0,8,0,255,255,255,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 4,8,8,8,2,251,224,240,240,16,16,16,32,64,7,2, + 2,11,2,7,254,254,4,4,4,8,2,0,96,240,240,96, + 9,28,56,13,2,250,0,128,0,128,1,128,1,0,1,0, + 1,0,2,0,2,0,2,0,6,0,4,0,4,0,12,0, + 8,0,8,0,24,0,16,0,16,0,16,0,32,0,32,0, + 32,0,64,0,64,0,64,0,192,0,128,0,128,0,14,21, + 42,17,1,0,7,128,24,64,48,32,32,48,96,16,96,24, + 96,24,224,24,224,24,224,24,224,28,224,28,224,24,224,24, + 224,24,96,24,96,24,96,48,48,32,16,96,15,192,10,21, + 42,17,3,0,2,0,6,0,6,0,14,0,254,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,255,192,12,21, + 42,17,2,0,31,0,32,192,64,96,128,112,128,112,192,112, + 240,112,112,112,32,96,0,224,0,192,1,0,6,0,12,0, + 24,0,48,16,96,16,64,16,224,112,255,240,255,240,12,21, + 42,17,2,0,31,0,97,192,192,224,224,96,240,96,112,112, + 0,96,0,96,0,224,48,192,63,0,0,192,0,96,0,112, + 0,112,96,112,240,112,240,112,192,96,192,192,127,128,14,21, + 42,17,2,0,0,64,0,192,1,192,1,192,3,192,7,192, + 5,192,13,192,9,192,17,192,49,192,33,192,65,192,193,192, + 255,252,1,192,1,192,1,192,1,192,1,192,15,252,12,21, + 42,17,2,0,96,64,127,128,127,0,64,0,64,0,64,0, + 64,0,79,0,112,192,64,96,64,96,0,112,0,112,0,112, + 96,112,240,112,240,112,224,96,192,224,64,192,63,128,12,21, + 42,17,2,0,7,128,24,64,16,96,48,224,96,224,96,192, + 96,0,224,0,231,128,232,192,240,96,240,96,224,112,224,112, + 224,112,224,112,96,112,96,96,112,96,48,192,31,128,11,21, + 42,17,3,0,255,224,255,224,192,32,128,32,128,64,128,64, + 0,64,0,128,1,0,1,0,2,0,6,0,6,0,12,0, + 12,0,12,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,17,2,0,15,128,48,96,96,48,224,24,224,24,224,24, + 224,24,240,16,124,32,63,192,15,224,51,240,96,248,224,56, + 224,28,224,28,224,24,224,24,96,24,112,48,31,192,12,21, + 42,17,2,0,15,0,48,128,96,64,96,96,224,96,224,96, + 224,112,224,112,224,112,96,112,96,240,49,176,14,48,0,48, + 0,32,48,96,112,96,112,64,96,192,96,128,63,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=29 h=28 x= 4 y=17 dx=32 dy= 0 ascent=23 len=88 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =22 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_osr21r") = { + 0,76,38,232,247,21,5,131,12,189,32,127,249,23,249,22, + 249,0,0,0,8,0,0,4,21,21,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,64,0,96,240, + 240,96,7,5,5,11,2,17,238,204,204,204,68,15,21,42, + 19,2,0,2,16,6,16,6,16,4,16,4,48,4,48,255, + 254,4,32,12,32,12,32,8,32,8,96,8,96,8,64,255, + 254,24,64,24,64,16,192,16,192,16,128,16,128,13,25,50, + 17,2,254,5,0,5,0,15,128,53,96,37,16,69,24,69, + 24,69,56,69,56,117,48,61,0,63,0,15,192,7,224,5, + 240,5,48,101,24,229,24,229,24,197,24,69,48,69,32,61, + 192,7,0,5,0,19,21,63,25,3,0,60,1,0,70,2, + 0,66,2,0,195,4,0,195,8,0,195,8,0,195,16,0, + 195,16,0,66,32,0,102,32,0,56,64,0,0,67,0,0, + 140,192,1,8,64,1,24,96,2,24,96,2,24,96,4,24, + 96,4,24,96,8,8,64,8,7,128,20,21,63,23,2,0, + 3,128,0,12,64,0,8,32,0,24,32,0,24,32,0,24, + 96,0,28,64,0,12,128,0,15,0,0,7,15,240,15,1, + 128,27,129,0,51,193,0,97,194,0,96,226,0,224,244,0, + 224,124,0,224,56,0,224,60,0,96,60,32,59,198,192,3, + 5,5,7,2,17,224,192,192,192,64,6,28,28,10,3,250, + 4,12,24,16,32,32,64,64,64,128,128,128,128,128,128,128, + 128,128,128,192,64,64,32,32,16,24,8,4,6,28,28,11, + 2,250,128,192,64,32,48,16,24,8,8,8,4,4,4,4, + 4,4,4,4,12,8,8,24,16,48,32,96,192,128,10,12, + 24,14,2,9,12,0,14,0,204,64,228,192,53,0,14,0, + 63,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, + 1,252,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,255,255,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,4,8,8, + 8,2,251,224,240,240,16,16,16,32,64,7,2,2,11,2, + 7,254,254,4,4,4,8,2,0,96,240,240,96,9,28,56, + 13,2,250,0,128,0,128,1,128,1,0,1,0,1,0,2, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,16,0,16,0,16,0,32,0,32,0,32,0,64, + 0,64,0,64,0,192,0,128,0,128,0,14,21,42,17,1, + 0,7,128,24,64,48,32,32,48,96,16,96,24,96,24,224, + 24,224,24,224,24,224,28,224,28,224,24,224,24,224,24,96, + 24,96,24,96,48,48,32,16,96,15,192,10,21,42,17,3, + 0,2,0,6,0,6,0,14,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,255,192,12,21,42,17,2, + 0,31,0,32,192,64,96,128,112,128,112,192,112,240,112,112, + 112,32,96,0,224,0,192,1,0,6,0,12,0,24,0,48, + 16,96,16,64,16,224,112,255,240,255,240,12,21,42,17,2, + 0,31,0,97,192,192,224,224,96,240,96,112,112,0,96,0, + 96,0,224,48,192,63,0,0,192,0,96,0,112,0,112,96, + 112,240,112,240,112,192,96,192,192,127,128,14,21,42,17,2, + 0,0,64,0,192,1,192,1,192,3,192,7,192,5,192,13, + 192,9,192,17,192,49,192,33,192,65,192,193,192,255,252,1, + 192,1,192,1,192,1,192,1,192,15,252,12,21,42,17,2, + 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,79, + 0,112,192,64,96,64,96,0,112,0,112,0,112,96,112,240, + 112,240,112,224,96,192,224,64,192,63,128,12,21,42,17,2, + 0,7,128,24,64,16,96,48,224,96,224,96,192,96,0,224, + 0,231,128,232,192,240,96,240,96,224,112,224,112,224,112,224, + 112,96,112,96,96,112,96,48,192,31,128,11,21,42,17,3, + 0,255,224,255,224,192,32,128,32,128,64,128,64,0,64,0, + 128,1,0,1,0,2,0,6,0,6,0,12,0,12,0,12, + 0,30,0,30,0,30,0,30,0,30,0,14,21,42,17,2, + 0,15,128,48,96,96,48,224,24,224,24,224,24,224,24,240, + 16,124,32,63,192,15,224,51,240,96,248,224,56,224,28,224, + 28,224,24,224,24,96,24,112,48,31,192,12,21,42,17,2, + 0,15,0,48,128,96,64,96,96,224,96,224,96,224,112,224, + 112,224,112,96,112,96,240,49,176,14,48,0,48,0,32,48, + 96,112,96,112,64,96,192,96,128,63,0,4,14,14,8,2, + 0,96,240,240,96,0,0,0,0,0,0,96,240,240,96,4, + 18,18,8,2,251,96,240,240,96,0,0,0,0,0,0,224, + 240,240,16,16,16,32,64,22,24,72,27,2,251,0,0,12, + 0,0,56,0,0,96,0,1,128,0,7,0,0,28,0,0, + 112,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 0,224,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,3,128,0,0,224,0, + 0,56,0,0,12,24,7,21,26,1,5,255,255,255,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 22,24,72,27,3,251,192,0,0,112,0,0,24,0,0,6, + 0,0,3,128,0,0,224,0,0,56,0,0,12,0,0,3, + 0,0,0,192,0,0,112,0,0,28,0,0,28,0,0,48, + 0,0,192,0,3,128,0,14,0,0,56,0,0,96,0,1, + 128,0,7,0,0,28,0,0,112,0,0,192,0,0,11,21, + 42,14,2,0,30,0,97,128,128,192,128,192,240,224,240,192, + 97,192,1,128,3,128,6,0,12,0,8,0,17,0,17,0, + 17,0,14,0,0,0,12,0,30,0,30,0,12,0,21,21, + 63,25,2,1,3,255,0,12,0,128,24,0,64,48,0,32, + 32,59,144,64,199,16,65,135,8,131,7,8,135,6,8,134, + 6,8,142,14,8,142,14,8,142,12,16,142,28,16,142,28, + 32,70,44,64,67,199,128,32,0,0,16,0,0,8,1,128, + 7,222,0,20,21,63,22,1,0,0,32,0,0,96,0,0, + 96,0,0,112,0,0,240,0,0,240,0,0,184,0,1,56, + 0,1,56,0,3,28,0,3,28,0,2,28,0,6,14,0, + 6,14,0,7,254,0,12,7,0,12,7,0,8,7,0,24, + 3,128,24,3,128,255,31,240,16,21,42,20,2,0,255,240, + 28,12,28,6,28,7,28,7,28,7,28,7,28,6,28,12, + 31,240,28,28,28,6,28,6,28,7,28,7,28,7,28,7, + 28,7,28,6,28,12,255,240,15,21,42,19,2,1,15,226, + 16,54,48,30,32,14,96,6,96,6,224,6,224,2,224,0, + 224,0,224,0,224,0,224,0,224,2,96,2,96,2,96,4, + 32,4,48,12,24,8,7,240,19,21,63,22,2,0,255,248, + 0,28,6,0,28,3,0,28,1,128,28,1,128,28,1,192, + 28,0,192,28,0,192,28,0,192,28,0,224,28,0,224,28, + 0,224,28,0,192,28,0,192,28,0,192,28,1,192,28,1, + 128,28,1,0,28,3,0,28,6,0,255,248,0,17,21,63, + 20,2,0,255,255,128,28,3,128,28,3,128,28,1,128,28, + 1,128,28,0,128,28,32,128,28,32,0,28,32,0,28,96, + 0,31,224,0,28,96,0,28,32,0,28,32,128,28,32,128, + 28,0,128,28,1,128,28,1,128,28,3,128,28,7,128,255, + 255,128,17,21,63,20,2,0,255,255,128,28,3,128,28,3, + 128,28,1,128,28,1,128,28,0,128,28,32,128,28,32,0, + 28,32,0,28,96,0,31,224,0,28,96,0,28,32,0,28, + 32,0,28,32,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,21,63,21,2,1,15,226,0, + 24,26,0,48,14,0,32,14,0,96,6,0,96,6,0,224, + 2,0,224,2,0,224,0,0,224,0,0,224,127,192,224,14, + 0,224,14,0,224,14,0,224,14,0,96,14,0,96,14,0, + 32,14,0,48,26,0,16,50,0,15,226,0,20,21,63,23, + 2,0,255,15,240,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,31,255,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,15, + 240,8,21,21,12,2,0,255,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,255,13,21,42,15, + 1,0,7,248,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 112,224,240,192,240,192,192,192,65,128,127,0,19,21,63,22, + 2,0,255,31,224,28,7,0,28,6,0,28,12,0,28,8, + 0,28,16,0,28,32,0,28,64,0,28,192,0,29,224,0, + 30,224,0,28,112,0,28,112,0,28,56,0,28,28,0,28, + 28,0,28,14,0,28,14,0,28,7,0,28,7,0,255,63, + 224,16,21,42,20,2,0,255,128,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,1,28,1,28,1,28,1,28,3,28,3,28,15,255, + 255,21,21,63,25,2,0,252,1,248,30,1,224,30,1,224, + 30,2,224,22,2,224,23,2,224,23,2,224,19,4,224,19, + 132,224,19,132,224,17,132,224,17,200,224,17,200,224,16,200, + 224,16,208,224,16,240,224,16,240,224,16,112,224,16,96,224, + 16,96,224,254,39,248,20,21,63,23,2,0,252,7,240,28, + 0,128,30,0,128,31,0,128,23,0,128,19,128,128,19,192, + 128,17,192,128,16,224,128,16,240,128,16,112,128,16,56,128, + 16,56,128,16,28,128,16,30,128,16,14,128,16,7,128,16, + 7,128,16,3,128,16,1,128,254,1,128,17,22,66,20,2, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,21,63,20,2,0,255,248,0,28,14,0,28, + 7,0,28,3,0,28,3,0,28,3,128,28,3,0,28,3, + 0,28,6,0,28,12,0,31,240,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,255,128,0,17,27,81,20,2,251,0,128, + 0,7,112,0,24,8,0,16,12,0,48,6,0,96,6,0, + 96,3,0,96,3,0,224,3,0,224,3,0,224,3,0,224, + 3,128,224,3,128,224,3,0,224,3,0,96,3,0,96,3, + 0,97,198,0,51,38,0,26,60,0,14,60,0,7,48,128, + 0,241,0,0,49,0,0,57,0,0,31,0,0,14,0,18, + 21,63,21,2,0,255,248,0,28,14,0,28,6,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,6,0,28,12,0, + 31,240,0,28,24,0,28,24,0,28,12,0,28,12,0,28, + 12,0,28,14,0,28,14,64,28,14,64,28,14,64,28,7, + 128,255,131,128,14,21,42,18,3,1,63,144,96,208,192,112, + 192,48,192,16,192,16,224,16,240,16,124,0,63,128,31,224, + 7,240,128,248,128,56,128,28,128,12,192,12,224,12,224,8, + 144,16,142,224,17,21,63,21,2,0,255,255,128,225,195,128, + 193,193,128,193,193,128,193,192,128,129,192,128,129,192,128,129, + 192,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,15,248,0,20,21,63,23,2,0,255, + 7,240,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,12,0,128,12,1,0,6,2,0,3,252,0,20,22, + 66,23,2,255,255,143,240,28,1,192,28,1,128,14,1,128, + 14,1,0,14,1,0,7,3,0,7,2,0,7,2,0,3, + 134,0,3,132,0,3,132,0,1,196,0,1,200,0,1,200, + 0,0,232,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,32,0,0,32,0,29,22,88,32,2,255,255,63,231,248, + 28,7,0,192,28,7,0,128,28,7,0,128,12,7,128,128, + 14,15,129,128,14,11,129,0,6,9,129,0,7,9,195,0, + 7,25,194,0,7,17,194,0,3,16,230,0,3,144,228,0, + 3,176,228,0,1,160,108,0,1,224,120,0,1,224,120,0, + 1,192,120,0,0,192,48,0,0,192,48,0,0,192,48,0, + 0,128,16,0,19,21,63,22,2,0,255,159,224,14,7,0, + 14,6,0,7,4,0,7,12,0,3,136,0,3,208,0,1, + 208,0,1,224,0,0,224,0,0,112,0,0,240,0,1,184, + 0,1,56,0,2,28,0,6,28,0,4,14,0,8,14,0, + 24,7,0,24,7,0,255,31,224,19,21,63,21,1,0,255, + 143,224,30,3,128,14,3,0,14,2,0,7,2,0,7,4, + 0,3,132,0,1,200,0,1,200,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,7,254,0,15,21, + 42,19,2,0,63,254,56,14,112,28,96,56,64,56,64,112, + 64,240,0,224,1,192,1,192,3,128,7,128,7,0,14,2, + 14,2,28,2,60,2,56,6,112,6,240,14,255,254,6,27, + 27,11,3,250,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,252,9, + 28,56,13,2,250,128,0,128,0,192,0,64,0,64,0,64, + 0,32,0,32,0,32,0,16,0,16,0,16,0,24,0,8, + 0,8,0,12,0,4,0,4,0,4,0,2,0,2,0,2, + 0,1,0,1,0,1,0,1,128,0,128,0,128,6,27,27, + 11,2,250,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,252,13,11, + 22,17,2,10,2,0,2,0,5,0,13,128,8,128,24,192, + 16,64,32,32,96,48,64,16,192,24,15,1,2,15,0,251, + 255,254,5,5,5,13,2,16,192,224,96,48,8,13,14,28, + 15,1,0,31,0,33,128,97,192,113,192,113,192,1,192,15, + 192,49,192,97,192,225,192,225,200,225,200,226,216,60,240,13, + 21,42,15,1,0,248,0,56,0,56,0,56,0,56,0,56, + 0,56,0,59,192,60,96,56,48,56,48,56,48,56,48,56, + 56,56,56,56,48,56,48,56,48,56,32,44,96,35,192,10, + 14,28,12,1,0,31,0,48,128,96,64,96,192,225,192,224, + 128,224,0,224,0,224,0,224,0,96,64,96,128,48,128,31, + 0,13,21,42,15,1,0,3,224,0,224,0,224,0,224,0, + 224,0,224,0,224,30,224,49,224,97,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 248,10,14,28,13,1,0,30,0,49,128,97,128,96,192,224, + 192,224,192,255,192,224,0,224,0,224,64,96,64,96,64,48, + 128,31,0,10,21,42,10,1,0,15,0,24,128,57,192,57, + 128,56,0,56,0,56,0,254,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,254,0,14,21,42,16,2,249,31,56,113,200,96,220,224, + 248,224,224,224,224,224,224,96,192,49,128,31,0,96,0,128, + 0,224,0,127,224,56,112,64,16,128,16,128,16,128,48,64, + 96,63,128,14,21,42,16,1,0,248,0,56,0,56,0,56, + 0,56,0,56,0,56,0,57,192,62,96,60,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,252,252,6,21,21,7,1,0,112,112,112,0,0,0,0, + 240,112,112,112,112,112,112,112,112,112,112,112,112,252,8,28, + 28,9,255,249,6,7,6,0,0,0,0,31,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,70,230,198,204,120, + 13,21,42,15,1,0,248,0,56,0,56,0,56,0,56,0, + 56,0,56,0,57,248,56,192,56,128,57,0,57,0,58,0, + 63,0,63,0,59,128,57,192,56,192,56,224,56,224,253,248, + 7,21,21,8,1,0,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,254,21,14,42,23,1, + 0,249,195,192,62,100,224,60,120,96,56,120,96,56,112,96, + 56,112,96,56,112,96,56,112,96,56,112,96,56,112,96,56, + 112,96,56,112,96,56,112,96,252,253,248,14,14,28,16,1, + 0,249,192,62,96,60,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,252,252,12,14,28, + 14,1,0,15,0,48,128,96,192,96,96,224,96,224,96,224, + 112,224,112,224,96,224,96,96,96,96,192,48,128,15,0,13, + 21,42,15,1,249,251,192,60,96,56,48,56,48,56,48,56, + 48,56,56,56,56,56,48,56,48,56,48,56,48,60,96,59, + 192,56,0,56,0,56,0,56,0,56,0,56,0,252,0,13, + 21,42,15,1,249,30,32,49,32,96,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 224,0,224,0,224,0,224,0,224,0,224,0,224,3,248,10, + 14,28,12,1,0,249,128,58,64,60,192,60,192,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,252, + 0,10,14,28,13,2,0,60,128,195,128,129,128,128,128,192, + 128,240,0,62,0,15,128,131,192,128,192,192,64,192,64,160, + 128,159,0,8,20,20,10,1,0,16,16,16,16,48,48,254, + 48,48,48,48,48,48,48,48,49,49,49,59,30,14,14,28, + 16,1,0,248,240,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,240,25,112,14,124,15, + 14,28,15,0,0,254,126,56,16,24,16,28,16,12,32,12, + 32,6,32,6,64,7,64,3,64,3,128,1,128,1,128,1, + 0,22,14,42,22,0,0,254,252,252,56,56,32,24,56,32, + 28,56,32,12,56,64,12,60,64,6,76,64,6,76,128,7, + 70,128,3,134,128,3,135,0,1,131,0,1,131,0,1,2, + 0,14,14,28,16,1,0,124,248,56,96,24,64,12,128,14, + 128,7,0,7,0,3,128,5,128,5,192,8,192,16,224,16, + 96,249,252,15,21,42,15,0,249,254,126,24,16,24,16,28, + 16,12,32,12,32,14,32,6,64,6,64,6,64,3,128,3, + 128,3,128,1,128,1,0,1,0,1,0,98,0,114,0,100, + 0,56,0,10,14,28,13,1,0,255,192,193,192,129,128,131, + 0,135,0,6,0,14,0,28,0,24,0,56,64,48,64,112, + 64,224,192,255,192,6,27,27,12,3,250,12,24,48,48,48, + 48,48,56,24,24,24,16,48,192,48,16,24,24,24,56,48, + 48,48,48,48,16,12,1,28,28,8,4,250,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,27,27,12,3,250,128,96, + 32,48,48,48,112,96,96,96,96,96,32,28,48,96,96,96, + 96,96,112,48,48,48,32,96,192,16,6,12,18,1,5,56, + 2,126,1,143,193,131,241,128,255,64,62,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=36 h=35 x= 7 y=21 dx=38 dy= 0 ascent=35 len=140 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x=-1 y=-10 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =27 descent=-8 + Max Font ascent =35 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_osr26") = { + 0,94,46,227,245,26,7,96,17,82,32,255,248,35,246,27, + 248,0,0,0,10,0,0,4,25,25,10,3,0,96,240,240, + 240,240,240,240,240,96,96,96,96,96,96,96,96,96,96,32, + 64,96,240,240,240,96,8,7,7,14,3,20,195,195,195,195, + 195,195,66,19,25,75,25,3,0,1,130,0,1,130,0,1, + 2,0,1,6,0,3,6,0,3,6,0,3,6,0,255,255, + 224,2,4,0,2,4,0,2,12,0,6,12,0,6,12,0, + 6,12,0,6,8,0,4,8,0,4,8,0,255,255,224,12, + 24,0,12,24,0,12,16,0,8,16,0,8,48,0,8,48, + 0,24,48,0,16,31,62,21,2,253,2,64,2,64,2,64, + 7,224,26,92,50,70,34,66,98,67,98,71,98,79,98,79, + 114,78,58,64,63,64,31,192,7,240,3,252,2,126,2,78, + 34,71,242,67,242,67,226,67,226,67,194,66,66,70,34,76, + 30,112,3,192,2,64,2,64,24,25,75,30,3,0,30,0, + 48,33,0,32,97,128,96,192,192,64,192,192,192,192,192,128, + 192,193,0,192,195,0,192,194,0,64,134,0,97,132,0,34, + 8,0,28,24,112,0,16,132,0,49,134,0,33,2,0,67, + 3,0,195,3,0,131,3,1,131,3,1,3,3,3,3,3, + 6,1,6,4,1,134,12,0,252,24,25,75,28,2,0,1, + 240,0,3,8,0,6,12,0,12,4,0,12,4,0,12,12, + 0,14,8,0,14,24,0,7,48,0,7,192,0,3,193,255, + 7,192,56,13,224,48,24,240,48,48,112,32,112,120,96,112, + 60,64,224,28,128,224,15,128,224,15,0,224,7,0,240,3, + 129,112,15,194,120,25,228,31,224,252,2,7,7,8,3,20, + 192,192,192,192,192,192,64,8,33,33,14,4,250,3,6,12, + 12,24,16,48,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,64,96,96,96,48,48,24,24,12,6,6,3,8,33, + 33,13,2,250,192,96,96,48,24,24,12,12,6,6,6,2, + 3,3,3,3,3,3,3,3,2,6,6,6,4,12,12,24, + 24,48,96,192,128,13,15,30,18,3,10,7,0,7,0,7, + 0,195,24,226,56,114,112,10,128,7,0,15,128,122,240,242, + 120,226,56,7,0,7,0,7,0,30,31,124,34,2,250,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,255,255,255,252,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,5,11,11,10,2, + 250,112,248,248,120,8,8,8,16,16,32,64,9,2,4,13, + 2,8,255,128,255,128,4,5,5,10,3,0,96,240,240,240, + 96,12,34,68,16,2,249,0,16,0,48,0,48,0,32,0, + 96,0,96,0,64,0,192,0,192,0,128,0,128,1,128,1, + 0,1,0,3,0,2,0,2,0,6,0,4,0,4,0,12, + 0,8,0,8,0,24,0,24,0,16,0,48,0,48,0,32, + 0,96,0,96,0,64,0,192,0,192,0,17,25,75,21,2, + 0,3,224,0,14,56,0,28,28,0,24,12,0,56,14,0, + 112,7,0,112,7,0,112,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,112,7,0,112,7,0,112,7,0,56,14,0, + 56,14,0,24,12,0,12,24,0,7,112,0,12,25,50,21, + 4,0,1,0,3,0,3,0,15,0,255,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,255,240,15,25,50,21,3,0,15,192,48,112,96,56, + 64,60,192,30,192,30,224,30,248,30,248,30,120,28,0,60, + 0,56,0,112,0,224,1,192,3,0,14,0,28,4,56,4, + 48,4,96,4,96,12,255,252,255,252,255,252,15,25,50,21, + 3,0,15,192,48,112,32,56,96,28,112,28,120,28,120,28, + 48,28,0,28,0,56,0,112,31,192,24,112,0,56,0,60, + 0,30,0,30,112,30,248,30,248,30,248,30,192,60,192,56, + 96,112,63,224,17,25,75,21,2,0,0,16,0,0,48,0, + 0,112,0,0,112,0,0,240,0,1,240,0,1,112,0,3, + 112,0,6,112,0,6,112,0,12,112,0,8,112,0,24,112, + 0,48,112,0,32,112,0,96,112,0,192,112,0,255,255,128, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,15,26,52,21,3,0,32,0,48,56,63, + 240,63,192,47,0,32,0,32,0,32,0,32,0,39,192,56, + 112,48,56,32,60,32,28,0,30,0,30,0,30,0,30,120, + 30,248,30,248,28,240,60,224,60,96,56,112,112,63,192,15, + 25,50,21,3,0,3,224,6,24,12,12,24,28,56,60,48, + 60,112,16,112,0,112,0,243,224,246,56,252,28,248,28,248, + 14,240,14,240,14,240,14,240,14,112,14,112,14,112,12,56, + 28,56,24,24,56,14,224,14,25,50,21,3,0,255,252,255, + 252,255,252,192,12,128,8,128,8,128,8,128,16,0,16,0, + 32,0,96,0,64,0,128,1,128,1,128,3,0,3,0,7, + 0,7,0,15,128,15,128,15,128,15,128,15,128,7,128,17, + 25,75,21,2,0,7,240,0,28,28,0,48,14,0,112,6, + 0,224,3,0,224,3,0,224,3,0,240,3,0,240,6,0, + 124,6,0,127,140,0,31,240,0,7,252,0,25,254,0,48, + 63,0,96,15,128,224,7,128,224,3,128,224,3,128,224,3, + 128,224,3,0,96,7,0,112,6,0,56,12,0,15,248,0, + 15,25,50,21,3,0,7,192,24,96,48,48,112,56,112,28, + 224,28,224,28,224,30,224,30,224,30,224,30,112,62,112,62, + 56,94,15,158,0,30,0,28,0,28,56,28,120,28,120,56, + 112,56,96,112,48,224,31,192,4,17,17,10,3,0,96,240, + 240,240,96,0,0,0,0,0,0,0,96,240,240,240,96,5, + 23,23,11,3,250,112,248,248,248,112,0,0,0,0,0,0, + 0,112,240,248,120,8,8,8,16,16,32,64,28,29,116,34, + 3,251,0,0,0,112,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,1,224,0,0,3,128,0,0,14, + 0,0,0,56,0,0,0,224,0,0,3,128,0,0,15,0, + 0,0,28,0,0,0,112,0,0,0,192,0,0,0,112,0, + 0,0,28,0,0,0,7,0,0,0,1,192,0,0,0,240, + 0,0,0,56,0,0,0,14,0,0,0,3,128,0,0,0, + 224,0,0,0,56,0,0,0,14,0,0,0,7,0,0,0, + 1,192,0,0,0,112,30,8,32,34,2,6,255,255,255,252, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,252,28,29,116,34, + 3,251,224,0,0,0,56,0,0,0,14,0,0,0,3,128, + 0,0,0,224,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,1,192,0,0,0,112,0,0,0,28,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,48,0,0, + 0,224,0,0,3,128,0,0,14,0,0,0,56,0,0,0, + 240,0,0,1,192,0,0,7,0,0,0,28,0,0,0,112, + 0,0,1,192,0,0,7,0,0,0,30,0,0,0,56,0, + 0,0,224,0,0,0,13,25,50,17,2,0,15,128,48,224, + 64,112,192,56,192,56,248,56,248,56,112,56,0,112,0,224, + 1,192,3,128,3,0,4,0,12,0,8,64,8,64,8,128, + 7,0,0,0,3,0,7,128,7,128,7,128,3,0,26,27, + 108,30,2,0,0,4,0,0,0,251,224,0,3,0,56,0, + 6,0,12,0,12,0,6,0,24,0,3,0,48,15,1,0, + 48,49,241,128,96,96,241,128,96,192,224,128,193,192,224,192, + 193,128,224,192,193,128,192,192,195,128,192,192,195,1,192,192, + 195,1,192,192,195,1,129,128,195,3,129,128,67,7,129,0, + 99,7,130,0,97,137,132,0,32,240,248,0,48,0,0,0, + 24,0,0,0,12,0,16,0,7,0,48,0,1,255,192,0, + 25,26,104,28,2,0,0,8,0,0,0,12,0,0,0,28, + 0,0,0,28,0,0,0,30,0,0,0,62,0,0,0,46, + 0,0,0,47,0,0,0,103,0,0,0,103,0,0,0,71, + 128,0,0,195,128,0,0,195,128,0,0,131,192,0,1,129, + 192,0,1,129,192,0,3,1,224,0,3,255,224,0,2,0, + 224,0,6,0,240,0,6,0,112,0,6,0,112,0,12,0, + 120,0,12,0,120,0,30,0,120,0,255,195,255,128,20,26, + 78,25,3,0,255,252,0,28,3,0,28,1,192,28,1,192, + 28,0,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 1,192,28,1,128,28,3,0,31,252,0,28,7,0,28,1, + 192,28,1,224,28,0,224,28,0,240,28,0,240,28,0,240, + 28,0,240,28,0,240,28,1,224,28,1,192,28,3,128,255, + 254,0,19,26,78,24,3,1,3,252,32,14,6,96,28,3, + 224,24,1,224,56,0,224,120,0,224,112,0,96,112,0,96, + 240,0,96,240,0,32,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,112,0,32,112,0, + 32,120,0,96,56,0,64,56,0,64,28,0,128,12,0,128, + 6,3,0,3,222,0,24,26,78,29,3,0,255,255,0,28, + 1,192,28,0,112,28,0,56,28,0,56,28,0,28,28,0, + 30,28,0,30,28,0,14,28,0,15,28,0,15,28,0,15, + 28,0,15,28,0,15,28,0,15,28,0,15,28,0,15,28, + 0,14,28,0,30,28,0,30,28,0,28,28,0,56,28,0, + 56,28,0,112,28,1,192,255,255,0,21,26,78,25,2,0, + 255,255,248,14,0,120,14,0,56,14,0,24,14,0,24,14, + 0,8,14,0,8,14,4,8,14,4,0,14,4,0,14,12, + 0,14,12,0,15,252,0,14,12,0,14,4,0,14,4,0, + 14,4,8,14,4,8,14,0,8,14,0,8,14,0,24,14, + 0,24,14,0,56,14,0,56,14,0,248,255,255,248,20,26, + 78,24,2,0,255,255,240,14,0,240,14,0,112,14,0,48, + 14,0,48,14,0,16,14,0,16,14,4,16,14,4,0,14, + 4,0,14,12,0,14,12,0,15,252,0,14,12,0,14,12, + 0,14,4,0,14,4,0,14,4,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,255, + 224,0,22,27,81,26,3,0,0,32,0,3,220,32,6,7, + 32,12,3,224,24,1,224,56,0,224,56,0,96,112,0,96, + 112,0,96,112,0,32,240,0,32,240,0,0,240,0,0,240, + 0,0,240,15,252,240,0,224,240,0,224,240,0,224,240,0, + 224,112,0,224,112,0,224,56,0,224,56,1,224,24,1,32, + 12,3,32,6,6,32,3,252,32,24,26,78,28,2,0,255, + 195,255,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,15,255,248,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,255,195,255,10,26,52, + 14,2,0,255,192,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,255,192,16,26,52,19,2,0,3,255,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,112,56,248,56,248,56,240,56,192,48,192,112,96,96,63, + 192,24,26,78,28,2,0,255,199,254,14,1,240,14,0,224, + 14,0,192,14,1,128,14,3,0,14,6,0,14,12,0,14, + 24,0,14,24,0,14,56,0,14,124,0,14,188,0,15,62, + 0,15,30,0,14,31,0,14,15,0,14,15,128,14,7,128, + 14,7,192,14,3,192,14,1,224,14,1,240,14,0,240,14, + 0,248,255,199,255,20,26,78,24,2,0,255,224,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,16,14,0, + 16,14,0,32,14,0,48,14,0,48,14,0,48,14,0,112, + 14,0,240,14,3,240,255,255,240,26,26,104,30,2,0,255, + 0,31,192,15,0,30,0,15,128,30,0,15,128,46,0,11, + 128,46,0,11,128,46,0,11,192,110,0,9,192,78,0,9, + 192,78,0,9,224,78,0,8,224,142,0,8,224,142,0,8, + 224,142,0,8,241,142,0,8,113,14,0,8,113,14,0,8, + 121,14,0,8,59,14,0,8,58,14,0,8,58,14,0,8, + 30,14,0,8,28,14,0,8,28,14,0,8,12,14,0,28, + 12,14,0,255,136,255,192,25,26,104,28,2,0,254,0,255, + 128,15,0,28,0,15,128,8,0,15,128,8,0,11,192,8, + 0,11,192,8,0,9,224,8,0,8,240,8,0,8,240,8, + 0,8,120,8,0,8,60,8,0,8,60,8,0,8,30,8, + 0,8,30,8,0,8,15,8,0,8,7,136,0,8,7,136, + 0,8,3,200,0,8,1,232,0,8,1,232,0,8,0,248, + 0,8,0,120,0,8,0,120,0,8,0,56,0,28,0,24, + 0,255,128,24,0,21,27,81,26,3,0,0,32,0,3,220, + 0,6,3,0,12,1,128,28,1,192,56,0,224,56,0,224, + 120,0,240,112,0,112,112,0,112,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,112,0,112,112,0,112,120,0,240,56,0,224,56,0,224, + 28,1,192,12,1,128,6,3,0,3,254,0,21,26,78,25, + 2,0,255,255,0,14,1,192,14,0,224,14,0,240,14,0, + 120,14,0,120,14,0,120,14,0,120,14,0,120,14,0,112, + 14,0,240,14,0,224,14,1,192,15,254,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,255,224,0, + 21,33,99,26,3,250,0,32,0,3,220,0,6,3,0,12, + 1,128,28,1,192,56,0,224,56,0,224,120,0,240,112,0, + 112,112,0,112,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,112,0,112,112, + 0,112,120,0,240,56,112,224,57,152,224,29,13,192,13,13, + 128,7,15,8,3,158,8,0,110,8,0,14,8,0,14,24, + 0,7,176,0,7,240,0,3,192,22,26,78,25,2,0,255, + 255,0,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,1,192,14,7,128, + 15,252,0,14,6,0,14,7,0,14,3,128,14,3,128,14, + 3,128,14,3,192,14,3,192,14,3,192,14,3,196,14,1, + 196,14,1,196,14,1,236,14,1,248,255,224,240,17,26,78, + 22,3,1,31,227,0,48,51,0,96,31,0,192,15,0,192, + 7,0,192,3,0,192,3,0,224,3,0,240,1,0,120,0, + 0,127,0,0,63,192,0,31,248,0,7,252,0,1,254,0, + 128,63,0,128,15,128,128,3,128,192,3,128,192,1,128,192, + 1,128,224,1,128,240,1,0,248,3,0,140,6,0,135,252, + 0,21,26,78,26,3,0,255,255,248,240,112,120,224,112,56, + 192,112,24,192,112,24,192,112,24,128,112,8,128,112,8,128, + 112,8,128,112,8,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,25,26,104,29,2,0,255,192,255,128,14, + 0,14,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,6, + 0,8,0,7,0,8,0,3,0,16,0,1,192,32,0,0, + 127,192,0,25,26,104,28,2,0,255,241,255,128,15,0,60, + 0,15,0,24,0,7,128,24,0,7,128,16,0,3,128,48, + 0,3,192,48,0,3,192,48,0,1,192,32,0,1,224,96, + 0,1,224,96,0,0,224,64,0,0,240,192,0,0,240,192, + 0,0,112,128,0,0,113,128,0,0,121,128,0,0,57,0, + 0,0,59,0,0,0,63,0,0,0,30,0,0,0,30,0, + 0,0,14,0,0,0,14,0,0,0,12,0,0,0,4,0, + 0,36,26,130,38,1,0,255,231,255,63,240,15,0,248,7, + 128,15,0,120,3,0,7,0,120,3,0,7,128,120,6,0, + 7,128,248,6,0,3,128,252,6,0,3,128,252,4,0,3, + 192,156,12,0,1,193,156,12,0,1,193,158,12,0,1,225, + 14,24,0,1,227,14,24,0,0,227,14,24,0,0,227,15, + 16,0,0,242,7,48,0,0,118,7,48,0,0,118,7,32, + 0,0,116,3,224,0,0,124,3,224,0,0,60,3,192,0, + 0,60,1,192,0,0,56,1,192,0,0,24,1,192,0,0, + 24,1,128,0,0,16,0,128,0,24,26,78,27,2,0,255, + 227,255,15,128,112,7,128,96,7,192,96,3,192,192,1,224, + 128,1,225,128,0,227,0,0,242,0,0,118,0,0,124,0, + 0,56,0,0,60,0,0,60,0,0,62,0,0,79,0,0, + 207,0,0,135,128,1,135,128,1,3,192,3,3,192,6,1, + 224,6,0,224,14,0,240,30,0,240,255,199,255,24,26,78, + 27,2,0,255,225,255,31,0,56,15,0,48,7,128,48,7, + 128,32,3,192,96,3,192,64,1,224,128,0,224,128,0,241, + 0,0,113,0,0,122,0,0,58,0,0,60,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,1,255, + 224,19,26,78,23,2,0,63,255,224,60,3,192,56,3,192, + 112,7,128,96,15,0,96,15,0,64,30,0,64,30,0,64, + 60,0,0,120,0,0,120,0,0,240,0,0,224,0,1,224, + 0,3,192,0,3,192,0,7,128,32,7,0,32,15,0,32, + 30,0,96,30,0,96,60,0,224,56,0,224,120,1,224,240, + 3,192,255,255,192,7,33,33,14,4,249,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,240,254,12,34,68,16, + 2,249,128,0,192,0,64,0,64,0,96,0,32,0,32,0, + 48,0,16,0,16,0,24,0,8,0,8,0,12,0,4,0, + 4,0,6,0,6,0,2,0,3,0,3,0,1,0,1,128, + 1,128,0,128,0,128,0,192,0,64,0,64,0,96,0,32, + 0,32,0,48,0,16,7,33,33,15,3,249,254,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,254,15,13,26, + 21,3,12,1,0,3,128,3,128,6,192,4,64,12,96,24, + 48,16,16,48,24,96,8,96,12,192,6,128,2,19,1,3, + 19,0,250,255,255,224,6,6,6,16,3,19,192,224,112,48, + 24,12,16,17,34,19,2,0,15,128,48,224,96,112,96,112, + 120,112,120,112,0,112,1,240,30,112,112,112,96,112,224,112, + 224,113,224,241,225,113,113,126,62,60,16,26,52,18,0,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,112,29,140,29,14,30,6,30,7,28,7,28,7, + 28,7,28,7,28,7,28,7,28,7,28,7,30,6,30,14, + 19,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, + 112,48,96,112,224,112,224,112,224,0,224,0,224,0,224,0, + 224,0,96,16,112,16,48,32,24,64,15,128,16,26,52,19, + 2,0,1,248,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,14,56,57,184,48,184,112,120,96,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,96,56,112,120, + 48,120,48,248,15,63,13,17,34,17,2,0,15,128,24,224, + 48,96,112,112,96,48,224,56,224,56,255,248,224,0,224,0, + 224,0,224,8,112,16,112,16,48,32,24,96,7,128,12,26, + 52,12,1,0,7,192,12,32,28,48,56,112,56,112,56,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,255,128,17,25,75,20,2,248,7,199, + 0,28,117,128,56,59,128,112,31,128,112,28,0,112,28,0, + 112,28,0,112,28,0,56,56,0,28,112,0,7,192,0,56, + 0,0,64,0,0,64,0,0,64,0,0,127,224,0,63,248, + 0,14,28,0,112,2,0,192,2,0,192,2,0,192,2,0, + 224,4,0,112,8,0,15,240,0,18,26,78,21,1,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,124,0,28,142,0, + 29,7,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,255,31,192,7,25,25, + 10,2,0,48,120,120,48,0,0,0,0,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,9,34,68,11, + 255,248,1,128,3,128,3,128,1,128,0,0,0,0,0,0, + 0,0,0,0,31,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,67,128,227,128,227,0, + 195,0,70,0,60,0,17,26,78,19,1,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,127,0,28,24,0,28,16,0, + 28,48,0,28,32,0,28,64,0,28,128,0,29,192,0,29, + 192,0,30,224,0,28,112,0,28,112,0,28,56,0,28,60, + 0,28,28,0,28,30,0,255,127,128,9,26,52,11,1,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,25,17,68,29,2,0,248,240,120,0,57,56, + 156,0,58,29,14,0,60,30,14,0,60,30,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,254,127,63,128,17,17, + 51,21,2,0,248,248,0,57,28,0,58,14,0,60,14,0, + 60,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,254,63,128,14,17,34,18,2,0,7,128,24, + 96,48,48,112,56,112,24,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,48,48,24,96,7,128,16, + 25,50,19,1,248,252,240,29,140,31,14,30,6,30,7,28, + 7,28,7,28,7,28,7,28,7,28,7,28,7,28,7,30, + 6,30,14,29,12,28,240,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,128,16,25,50,18,2,248,15,8,56, + 136,48,216,112,88,96,120,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,96,56,112,120,48,120,48,184,15,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,1,255,12, + 17,34,15,2,0,248,224,57,16,58,48,58,112,60,112,60, + 0,60,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,12,17,34,16,2,0,62,64,97, + 64,192,192,192,64,192,64,224,64,120,0,127,0,31,192,7, + 224,128,240,192,112,192,48,224,48,224,48,152,96,135,192,11, + 24,48,13,1,0,8,0,8,0,8,0,8,0,24,0,24, + 0,56,0,255,192,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,32,56,32,56,32,56, + 96,31,192,15,128,17,17,51,20,1,0,248,62,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 30,0,56,30,0,56,46,0,28,78,0,15,143,128,18,17, + 51,19,0,0,255,31,192,28,7,0,28,6,0,12,4,0, + 14,4,0,14,4,0,7,8,0,7,8,0,3,8,0,3, + 144,0,1,144,0,1,208,0,1,224,0,0,224,0,0,224, + 0,0,64,0,0,64,0,27,17,68,28,0,0,255,63,207, + 224,28,15,3,0,28,7,3,0,12,7,2,0,14,7,2, + 0,14,15,130,0,7,11,132,0,7,9,132,0,3,137,196, + 0,3,145,200,0,1,144,200,0,1,208,232,0,1,224,240, + 0,0,224,112,0,0,224,112,0,0,64,96,0,0,64,32, + 0,16,17,34,19,2,0,254,126,60,56,28,48,28,32,14, + 64,14,64,7,128,3,128,3,128,3,192,3,192,4,224,8, + 96,8,112,16,56,48,56,252,255,18,25,75,20,1,248,255, + 31,192,28,6,0,28,6,0,12,4,0,14,4,0,14,4, + 0,6,8,0,7,8,0,7,8,0,3,16,0,3,144,0, + 3,144,0,1,240,0,1,224,0,1,224,0,0,224,0,0, + 192,0,0,64,0,0,192,0,0,128,0,112,128,0,113,128, + 0,113,0,0,115,0,0,60,0,0,12,17,34,15,1,0, + 255,240,224,112,192,224,128,224,129,192,131,128,131,128,7,0, + 7,0,14,0,28,16,28,16,56,16,56,16,112,48,224,112, + 255,240,8,33,33,15,3,249,3,4,8,24,24,24,24,28, + 28,28,12,12,12,12,8,24,224,24,8,12,12,12,12,28, + 28,28,24,24,24,24,8,4,3,2,34,34,10,4,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,33,33,14,3,249,192,32,16,24,24,24,24,24,56, + 56,48,48,48,48,16,24,7,24,16,48,48,48,48,56,56, + 24,24,24,24,24,16,32,192,20,6,18,24,2,6,62,0, + 32,127,192,16,135,248,16,128,255,48,128,63,224,96,7,192, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,10,0,0,4,25,25,10,3,248,96,240,240, + 240,96,64,64,96,96,96,96,96,96,96,96,96,96,240,240, + 240,240,240,240,240,96,12,25,50,21,4,252,1,0,1,0, + 1,0,1,0,7,192,25,32,57,48,113,48,113,112,225,112, + 225,32,225,0,225,0,225,0,225,0,225,0,113,16,113,16, + 57,16,29,32,7,192,1,0,1,0,1,0,1,0,20,25, + 75,25,2,0,0,15,128,0,24,96,0,48,32,0,96,112, + 0,192,240,0,192,240,1,192,224,1,192,0,1,192,0,1, + 192,0,1,192,0,63,192,0,1,254,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,57,128,16, + 199,128,16,131,128,48,131,224,96,134,255,192,120,63,128,18, + 16,48,22,2,5,195,241,192,124,15,128,48,7,0,32,3, + 0,96,1,0,64,1,128,64,0,128,64,0,128,64,0,128, + 64,0,128,64,1,128,96,1,0,32,3,0,48,7,0,124, + 15,128,227,241,192,20,25,75,22,1,0,255,7,240,60,1, + 192,28,1,128,30,1,0,14,3,0,15,2,0,7,6,0, + 7,132,0,3,140,0,3,136,0,1,216,0,1,208,0,1, + 224,0,31,255,0,0,224,0,0,224,0,31,255,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,15,254,0,2,33,33,10,4,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,0,0,0,0,0,0,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,13,32,64, + 23,4,249,7,128,24,64,16,96,48,224,48,224,48,64,56, + 0,28,0,30,0,15,0,23,128,99,192,129,224,128,240,128, + 120,128,24,192,24,224,8,120,8,60,16,30,32,15,64,7, + 128,3,192,1,192,0,224,16,96,56,96,56,96,48,64,16, + 192,15,0,10,4,8,16,3,20,96,192,225,192,225,192,96, + 192,26,26,104,30,2,1,0,255,192,0,3,0,48,0,4, + 0,8,0,8,0,4,0,16,30,2,0,32,113,225,0,32, + 224,225,0,65,192,96,128,65,192,96,128,129,128,32,64,131, + 128,32,64,131,128,0,64,131,128,0,64,131,128,0,64,131, + 128,0,64,131,128,0,64,131,128,32,64,65,192,64,128,65, + 192,64,128,32,224,65,0,32,112,129,0,16,31,2,0,8, + 0,4,0,4,0,8,0,3,0,48,0,0,255,192,0,9, + 13,26,13,2,12,120,0,132,0,198,0,198,0,14,0,54, + 0,70,0,198,0,198,128,206,128,115,0,0,0,255,0,10, + 14,28,18,4,2,16,64,48,128,97,128,97,0,195,0,195, + 0,195,0,195,0,195,0,67,0,97,0,32,128,16,192,8, + 0,18,7,21,22,2,6,255,255,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,9,2,4,13, + 2,8,255,128,255,128,26,26,104,30,2,1,0,255,192,0, + 3,0,48,0,4,0,8,0,8,0,4,0,19,255,2,0, + 32,225,193,0,32,224,225,0,64,224,224,128,64,224,224,128, + 128,224,224,64,128,224,224,64,128,225,192,64,128,254,0,64, + 128,225,128,64,128,224,192,64,128,224,224,64,128,224,224,64, + 64,224,228,128,64,224,228,128,32,224,233,0,35,248,121,0, + 16,0,2,0,8,0,4,0,4,0,8,0,3,0,48,0, + 0,255,192,0,9,1,2,15,3,21,255,128,10,9,18,22, + 6,16,30,0,97,128,192,128,128,64,128,64,128,64,64,128, + 97,128,30,0,30,25,100,34,2,255,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,255,255,255,252,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,255,255,252,10,15, + 30,16,3,10,63,0,67,128,129,192,129,192,225,192,225,192, + 1,128,3,0,6,0,8,0,48,0,64,64,64,64,255,192, + 255,192,10,16,32,16,4,9,62,0,67,0,193,128,225,128, + 225,128,1,128,3,0,124,0,3,128,1,192,1,192,225,192, + 225,192,129,192,131,128,126,0,6,6,6,16,7,19,12,28, + 56,48,96,192,19,27,81,22,2,246,96,24,0,224,60,0, + 224,60,0,224,60,0,224,60,0,224,60,0,224,60,0,224, + 60,0,224,60,0,192,24,0,64,24,0,64,24,0,64,56, + 0,96,48,32,112,124,96,95,227,224,71,193,192,128,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,224,0,0,224, + 0,0,224,0,0,240,0,0,96,0,0,15,31,62,19,2, + 251,31,254,62,16,126,16,254,16,254,16,254,16,254,16,254, + 16,254,16,126,16,62,16,2,16,2,16,2,16,2,16,2, + 16,2,16,2,16,2,16,2,16,2,16,2,16,2,16,2, + 16,2,16,2,16,2,16,2,16,2,16,2,16,2,16,4, + 5,5,10,3,9,96,240,240,240,96,7,7,7,16,4,248, + 16,32,28,6,6,134,124,8,15,15,16,4,10,8,24,248, + 24,24,24,24,24,24,24,24,24,24,24,255,9,13,26,15, + 3,12,28,0,99,0,67,0,193,128,193,128,193,128,193,128, + 193,128,67,0,99,0,28,0,0,0,255,128,9,14,28,17, + 4,2,132,0,66,0,99,0,33,0,49,128,49,128,49,128, + 49,128,49,128,33,128,99,0,67,0,134,0,4,0,24,25, + 75,31,4,0,8,0,16,24,0,48,248,0,32,24,0,64, + 24,0,64,24,0,128,24,1,128,24,1,0,24,2,0,24, + 6,0,24,4,12,24,8,28,24,8,28,24,16,44,255,48, + 76,0,32,76,0,64,140,0,192,140,0,129,12,1,2,12, + 1,3,255,2,0,12,6,0,12,4,0,12,8,0,127,24, + 25,75,31,4,0,8,0,32,24,0,96,248,0,64,24,0, + 192,24,0,128,24,1,0,24,1,0,24,2,0,24,6,0, + 24,4,0,24,12,248,24,9,14,24,18,15,24,18,7,255, + 35,135,0,97,135,0,64,14,0,128,12,0,128,24,1,0, + 32,3,0,193,2,1,1,6,1,1,4,3,255,8,3,254, + 24,25,75,31,4,0,62,0,32,67,0,32,193,128,64,225, + 128,192,1,128,128,3,1,128,124,1,0,3,130,0,1,194, + 0,1,196,0,225,204,24,225,200,24,129,208,56,131,144,88, + 126,32,88,0,96,152,0,64,152,0,193,24,0,129,24,1, + 2,24,3,3,255,2,0,24,6,0,24,4,0,24,8,0, + 127,13,25,50,17,1,248,6,0,15,0,15,0,15,0,6, + 0,7,0,8,192,16,64,16,64,16,192,0,128,1,0,7, + 0,14,0,28,0,56,0,112,0,240,112,224,120,224,120,224, + 24,224,24,112,16,56,96,15,192,25,34,136,28,2,0,0, + 192,0,0,0,224,0,0,0,224,0,0,0,48,0,0,0, + 24,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,12,0,0,0,28,0,0,0,28,0,0,0, + 30,0,0,0,62,0,0,0,46,0,0,0,47,0,0,0, + 103,0,0,0,103,0,0,0,71,128,0,0,195,128,0,0, + 195,128,0,0,131,192,0,1,129,192,0,1,129,192,0,3, + 1,224,0,3,255,224,0,2,0,224,0,6,0,240,0,6, + 0,112,0,6,0,112,0,12,0,120,0,12,0,120,0,30, + 0,120,0,255,195,255,128,25,34,136,28,2,0,0,0,192, + 0,0,1,192,0,0,3,128,0,0,7,0,0,0,6,0, + 0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,12,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,46,0,0,0,47,0,0,0,103,0, + 0,0,103,0,0,0,71,128,0,0,195,128,0,0,195,128, + 0,1,131,192,0,1,129,192,0,1,129,192,0,3,1,224, + 0,3,255,224,0,2,0,224,0,6,0,240,0,6,0,112, + 0,4,0,112,0,12,0,120,0,12,0,56,0,30,0,124, + 0,255,195,255,128,25,34,136,28,2,0,0,8,0,0,0, + 28,0,0,0,30,0,0,0,51,0,0,0,65,128,0,1, + 128,64,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 12,0,0,0,28,0,0,0,28,0,0,0,30,0,0,0, + 62,0,0,0,46,0,0,0,47,0,0,0,103,0,0,0, + 103,0,0,0,71,128,0,0,195,128,0,0,195,128,0,0, + 131,192,0,1,129,192,0,1,129,192,0,3,1,224,0,3, + 255,224,0,2,0,224,0,6,0,240,0,6,0,112,0,6, + 0,112,0,12,0,120,0,12,0,120,0,30,0,120,0,255, + 195,255,128,25,33,132,28,2,0,0,112,64,0,0,252,64, + 0,0,159,192,0,1,7,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,12,0,0,0,28,0, + 0,0,28,0,0,0,30,0,0,0,62,0,0,0,46,0, + 0,0,47,0,0,0,103,0,0,0,103,0,0,0,71,128, + 0,0,195,128,0,0,195,128,0,1,131,192,0,1,129,192, + 0,1,129,192,0,3,1,224,0,3,255,224,0,2,0,224, + 0,6,0,240,0,6,0,112,0,4,0,112,0,12,0,120, + 0,12,0,56,0,30,0,124,0,255,195,255,128,25,33,132, + 28,2,0,0,193,128,0,1,193,192,0,1,193,192,0,0, + 193,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,24,0,0,0,28,0,0,0,28,0,0,0, + 60,0,0,0,62,0,0,0,62,0,0,0,110,0,0,0, + 79,0,0,0,71,0,0,0,199,0,0,0,199,128,0,0, + 131,128,0,1,131,128,0,1,129,192,0,1,1,192,0,3, + 1,192,0,3,255,224,0,2,0,224,0,6,0,224,0,6, + 0,112,0,4,0,112,0,12,0,112,0,12,0,120,0,30, + 0,120,0,255,195,255,128,25,35,140,28,2,0,0,28,0, + 0,0,34,0,0,0,65,0,0,0,65,0,0,0,65,0, + 0,0,65,0,0,0,34,0,0,0,28,0,0,0,0,0, + 0,0,8,0,0,0,12,0,0,0,28,0,0,0,28,0, + 0,0,30,0,0,0,62,0,0,0,46,0,0,0,47,0, + 0,0,111,0,0,0,71,0,0,0,71,128,0,0,199,128, + 0,0,131,128,0,1,131,192,0,1,131,192,0,1,1,192, + 0,3,1,224,0,3,255,224,0,2,0,224,0,6,0,240, + 0,6,0,240,0,4,0,112,0,12,0,120,0,12,0,120, + 0,28,0,120,0,255,195,255,128,33,26,130,36,1,0,0, + 7,255,255,128,0,1,224,7,128,0,1,224,3,128,0,3, + 224,1,128,0,2,224,1,128,0,6,224,0,128,0,4,224, + 0,128,0,12,224,32,128,0,8,224,32,0,0,24,224,32, + 0,0,16,224,96,0,0,48,224,96,0,0,48,255,224,0, + 0,96,224,96,0,0,96,224,96,0,0,192,224,32,0,0, + 192,224,32,128,1,255,224,32,128,1,0,224,0,128,3,0, + 224,0,128,2,0,224,1,128,6,0,224,1,128,6,0,224, + 1,128,14,0,224,3,128,30,0,224,15,128,255,199,255,255, + 128,19,34,102,24,3,249,3,252,64,14,6,96,28,3,224, + 24,1,224,56,0,224,120,0,224,112,0,96,112,0,96,240, + 0,96,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,32,112,0,32, + 120,0,96,56,0,64,56,0,64,24,0,128,12,0,128,6, + 3,0,3,204,0,0,112,0,0,64,0,0,240,0,0,28, + 0,0,28,0,0,28,0,2,28,0,1,240,0,21,34,102, + 25,2,0,3,0,0,3,128,0,1,192,0,0,192,0,0, + 96,0,0,16,0,0,0,0,0,0,0,255,255,248,14,0, + 120,14,0,56,14,0,24,14,0,24,14,0,8,14,0,8, + 14,4,8,14,4,0,14,4,0,14,12,0,14,12,0,15, + 252,0,14,12,0,14,4,0,14,4,0,14,4,8,14,4, + 8,14,0,8,14,0,8,14,0,24,14,0,24,14,0,56, + 14,0,56,14,0,248,255,255,248,21,34,102,25,2,0,0, + 3,0,0,7,128,0,7,0,0,12,0,0,24,0,0,48, + 0,0,0,0,0,0,0,255,255,248,14,0,120,14,0,56, + 14,0,24,14,0,24,14,0,8,14,0,8,14,4,8,14, + 4,0,14,4,0,14,12,0,14,12,0,15,252,0,14,12, + 0,14,4,0,14,4,0,14,4,8,14,4,8,14,0,8, + 14,0,8,14,0,24,14,0,24,14,0,56,14,0,56,14, + 0,248,255,255,248,21,34,102,25,2,0,0,48,0,0,48, + 0,0,120,0,0,204,0,1,134,0,2,1,128,0,0,0, + 0,0,0,255,255,248,14,0,120,14,0,56,14,0,24,14, + 0,24,14,0,8,14,0,8,14,4,8,14,4,0,14,4, + 0,14,12,0,14,12,0,15,252,0,14,12,0,14,4,0, + 14,4,0,14,4,8,14,4,8,14,0,8,14,0,8,14, + 0,24,14,0,24,14,0,56,14,0,56,14,0,248,255,255, + 248,21,33,99,25,2,0,1,131,0,3,135,0,3,135,0, + 1,131,0,0,0,0,0,0,0,0,0,0,255,255,248,14, + 0,120,14,0,56,14,0,24,14,0,24,14,0,8,14,0, + 8,14,4,8,14,4,0,14,4,0,14,12,0,14,12,0, + 15,252,0,14,12,0,14,4,0,14,4,0,14,4,8,14, + 4,8,14,0,8,14,0,8,14,0,24,14,0,24,14,0, + 56,14,0,56,14,0,248,255,255,248,10,34,68,14,2,0, + 192,0,224,0,112,0,56,0,8,0,4,0,0,0,0,0, + 255,192,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,192,10,34,68,14,2,0,0,192,1,192,1,128, + 3,0,6,0,4,0,0,0,0,0,255,192,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,255,192,10,34, + 68,14,2,0,4,0,14,0,30,0,59,0,97,128,128,64, + 0,0,0,0,255,192,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,255,192,11,33,66,14,2,0,96,192, + 224,224,224,224,96,192,0,0,0,0,0,0,127,224,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,127,224, + 24,26,78,27,2,0,255,255,0,14,0,192,14,0,112,14, + 0,56,14,0,60,14,0,28,14,0,30,14,0,30,14,0, + 14,14,0,15,14,0,15,14,0,15,255,224,15,14,0,15, + 14,0,15,14,0,15,14,0,15,14,0,14,14,0,30,14, + 0,30,14,0,28,14,0,56,14,0,56,14,0,112,14,0, + 192,255,255,0,25,33,132,28,2,0,0,120,32,0,0,254, + 96,0,0,143,192,0,0,131,128,0,0,0,0,0,0,0, + 0,0,0,0,0,0,254,0,255,128,15,0,28,0,15,128, + 8,0,15,128,8,0,11,192,8,0,11,192,8,0,9,224, + 8,0,8,240,8,0,8,240,8,0,8,120,8,0,8,60, + 8,0,8,60,8,0,8,30,8,0,8,30,8,0,8,15, + 8,0,8,7,136,0,8,7,136,0,8,3,200,0,8,1, + 232,0,8,1,232,0,8,0,248,0,8,0,120,0,8,0, + 120,0,8,0,56,0,28,0,24,0,255,128,24,0,21,34, + 102,26,3,0,3,0,0,7,0,0,3,128,0,1,192,0, + 0,64,0,0,32,0,0,0,0,0,32,0,3,220,0,6, + 3,0,12,1,128,28,1,192,56,0,224,56,0,224,120,0, + 240,112,0,112,112,0,112,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,240,0,120,112, + 0,112,112,0,112,120,0,240,56,0,224,56,0,224,28,1, + 192,12,1,128,6,3,0,3,254,0,21,34,102,26,3,0, + 0,6,0,0,7,0,0,14,0,0,28,0,0,16,0,0, + 32,0,0,0,0,0,32,0,3,220,0,6,3,0,12,1, + 128,28,1,192,56,0,224,56,0,224,120,0,240,112,0,112, + 112,0,112,240,0,120,240,0,120,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,112,0,112,112,0, + 112,120,0,240,56,0,224,56,0,224,28,1,192,12,1,128, + 6,3,0,3,254,0,21,34,102,26,3,0,0,32,0,0, + 112,0,0,112,0,0,216,0,1,4,0,6,3,0,0,0, + 0,0,32,0,3,220,0,6,3,0,12,1,128,28,1,192, + 56,0,224,56,0,224,120,0,240,112,0,112,112,0,112,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,240,0,120,240,0,120,112,0,112,112,0,112,120,0,240, + 56,0,224,56,0,224,28,1,192,12,1,128,6,3,0,3, + 254,0,21,33,99,26,3,0,3,225,0,3,255,0,4,62, + 0,0,0,0,0,0,0,0,0,0,0,32,0,3,220,0, + 6,3,0,12,1,128,28,1,192,56,0,224,56,0,224,120, + 0,240,112,0,112,112,0,112,240,0,120,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,120,240,0,120,240,0,120, + 112,0,112,112,0,112,120,0,240,56,0,224,56,0,224,28, + 1,192,12,1,128,6,3,0,3,254,0,21,33,99,26,3, + 0,3,6,0,7,7,0,7,7,0,3,6,0,0,0,0, + 0,0,0,0,32,0,3,220,0,6,3,0,12,1,128,28, + 1,192,56,0,224,56,0,224,120,0,240,112,0,112,112,0, + 112,240,0,120,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,112,0,112,112,0,112,120, + 0,240,56,0,224,56,0,224,28,1,192,12,1,128,6,3, + 0,3,254,0,22,23,69,34,6,254,128,0,4,192,0,12, + 96,0,24,48,0,48,24,0,96,12,0,192,6,1,128,3, + 3,0,1,134,0,0,204,0,0,120,0,0,48,0,0,120, + 0,0,204,0,1,134,0,3,3,0,6,1,128,12,0,192, + 24,0,96,48,0,48,96,0,24,192,0,12,128,0,0,21, + 27,81,26,3,0,0,32,0,3,222,24,6,3,48,12,1, + 224,28,1,192,56,0,224,56,1,224,120,3,240,112,2,112, + 112,6,112,240,12,120,240,24,120,240,16,120,240,48,120,240, + 96,120,240,192,120,240,192,120,241,128,120,115,0,112,114,0, + 112,126,0,240,60,0,224,56,0,224,28,1,192,60,1,128, + 102,3,0,195,222,0,25,34,136,29,2,0,0,192,0,0, + 0,224,0,0,0,224,0,0,0,48,0,0,0,16,0,0, + 0,8,0,0,0,0,0,0,0,0,0,0,255,192,255,128, + 14,0,14,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 6,0,8,0,7,0,8,0,3,0,16,0,1,192,32,0, + 0,127,192,0,25,34,136,29,2,0,0,0,192,0,0,1, + 192,0,0,3,128,0,0,7,0,0,0,4,0,0,0,8, + 0,0,0,0,0,0,0,0,0,0,255,192,255,128,14,0, + 14,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,6,0, + 8,0,7,0,8,0,3,0,16,0,1,192,32,0,0,127, + 192,0,25,34,136,29,2,0,0,8,0,0,0,28,0,0, + 0,30,0,0,0,55,0,0,0,65,128,0,1,128,96,0, + 0,0,0,0,0,0,0,0,255,192,255,128,14,0,14,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,6,0,8,0, + 7,0,8,0,3,128,16,0,1,192,96,0,0,127,192,0, + 25,33,132,29,2,0,0,192,192,0,0,225,192,0,0,225, + 192,0,0,192,192,0,0,0,0,0,0,0,0,0,0,0, + 0,0,255,192,255,128,14,0,14,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,6,0,8,0,7,0,8,0,3,0, + 16,0,1,192,32,0,0,127,192,0,24,34,102,27,2,0, + 0,0,192,0,1,192,0,3,128,0,7,0,0,4,0,0, + 8,0,0,0,0,0,0,0,255,225,255,31,0,56,15,0, + 48,7,128,48,7,128,32,3,192,96,3,192,64,1,224,128, + 0,224,128,0,241,0,0,113,0,0,122,0,0,58,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,1,255,224,21,26,78,25,2,0,255,224,0,14, + 0,0,14,0,0,14,0,0,14,0,0,15,255,0,14,1, + 192,14,0,224,14,0,240,14,0,120,14,0,120,14,0,120, + 14,0,120,14,0,120,14,0,240,14,0,224,14,1,192,15, + 255,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,255,224,0,16,26,52,19,1,0, + 1,240,3,28,6,14,14,14,28,14,28,14,28,12,28,28, + 28,48,29,192,28,48,28,24,28,12,28,14,28,6,28,7, + 28,7,28,7,28,7,28,7,28,135,29,199,29,199,29,142, + 29,140,252,120,16,25,50,19,2,1,112,0,112,0,56,0, + 28,0,12,0,2,0,0,0,0,0,15,128,48,224,32,112, + 96,112,120,112,120,112,0,112,1,240,30,112,112,112,96,112, + 224,112,224,113,224,241,225,113,113,126,62,60,16,25,50,19, + 2,1,0,112,0,240,0,224,1,128,3,0,2,0,0,0, + 0,0,15,128,48,224,96,112,96,112,120,112,120,112,0,112, + 1,240,30,112,112,112,96,112,224,112,224,113,224,241,225,113, + 113,126,62,60,16,25,50,19,2,0,6,0,7,0,7,0, + 13,128,24,192,48,96,0,0,0,0,15,128,48,224,96,112, + 96,112,120,112,120,112,0,112,1,240,30,112,112,112,96,112, + 224,112,224,113,224,241,225,113,113,126,62,60,16,24,48,19, + 2,0,30,48,63,224,35,192,0,0,0,0,0,0,0,0, + 15,128,48,224,96,112,96,112,120,112,120,112,0,112,1,240, + 30,112,112,112,96,112,224,112,224,113,224,241,225,113,113,126, + 62,60,16,24,48,19,2,0,48,96,112,224,112,224,48,96, + 0,0,0,0,0,0,15,0,48,192,96,96,96,96,112,96, + 112,96,0,96,1,224,30,96,112,96,96,96,224,96,224,97, + 224,225,225,99,113,126,62,60,16,25,50,19,2,0,7,0, + 24,192,16,64,16,64,24,192,7,0,0,0,0,0,15,128, + 48,224,96,112,96,112,120,112,120,112,0,112,1,240,30,112, + 112,112,96,112,224,112,224,113,224,241,225,113,113,126,62,60, + 22,17,51,26,2,0,15,135,192,48,236,112,96,120,48,112, + 120,56,120,112,24,56,112,28,0,112,28,7,255,252,56,112, + 0,112,112,0,224,112,0,224,112,4,224,248,8,224,184,8, + 225,56,16,113,28,48,62,7,192,12,24,48,16,2,249,15, + 128,24,96,48,48,112,48,96,112,224,112,224,112,224,0,224, + 0,224,0,224,0,224,0,96,16,112,16,48,32,24,96,15, + 128,2,0,6,0,1,128,0,192,0,192,16,192,15,128,13, + 25,50,17,2,1,48,0,56,0,28,0,12,0,6,0,3, + 0,0,0,0,0,15,128,24,224,48,96,112,112,96,48,224, + 56,224,56,255,248,224,0,224,0,224,0,224,8,112,16,112, + 16,48,16,24,96,7,128,13,25,50,17,2,1,0,112,0, + 112,0,224,0,192,1,128,3,0,0,0,0,0,15,128,24, + 224,48,96,112,112,96,48,224,56,224,56,255,248,224,0,224, + 0,224,0,224,8,112,16,112,16,48,16,24,96,7,128,13, + 25,50,17,2,0,3,0,3,0,7,128,5,128,8,64,16, + 32,0,0,0,0,15,128,24,224,48,96,112,112,96,48,224, + 56,224,56,255,248,224,0,224,0,224,0,224,8,112,16,112, + 16,48,32,24,96,7,128,13,24,48,17,2,0,24,96,56, + 112,56,112,24,96,0,0,0,0,0,0,15,128,24,224,48, + 96,112,48,96,48,224,56,224,56,255,248,224,0,224,0,224, + 0,224,8,112,16,112,16,48,32,24,96,7,128,9,25,50, + 11,0,0,192,0,224,0,112,0,56,0,8,0,4,0,0, + 0,0,0,62,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,63,128,8,25,25,10,2,0,3,7,7,12,24, + 48,0,0,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,9,25,50,11,1,0,24,0,28,0,60,0, + 54,0,99,0,128,128,0,0,0,0,124,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,127,0,9,24,48,11, + 1,0,97,128,227,128,227,128,97,128,0,0,0,0,0,0, + 126,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 127,128,14,26,52,18,2,0,28,16,14,48,15,192,7,128, + 7,128,13,192,48,224,0,224,0,112,7,240,24,120,48,56, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,112,24,112,56,48,48,24,96,7,128,17,24,72,21, + 2,0,7,4,0,15,204,0,9,248,0,8,112,0,0,0, + 0,0,0,0,0,0,0,248,248,0,57,28,0,58,14,0, + 60,14,0,60,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,254,63,128,14,25,50,18,2,1, + 56,0,56,0,28,0,12,0,6,0,3,0,0,0,0,0, + 7,128,24,96,48,48,112,56,112,24,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,112,24,112,56,48,48,24,96, + 7,128,14,25,50,18,2,1,0,48,0,112,0,224,0,192, + 1,128,1,0,0,0,0,0,7,128,24,96,48,48,112,56, + 112,24,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 112,24,112,56,48,48,24,96,7,128,14,25,50,18,2,0, + 3,0,3,0,7,128,4,128,8,64,16,32,0,0,0,0, + 7,128,24,96,48,48,112,56,112,24,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,112,24,112,56,48,48,24,96, + 7,128,14,24,48,18,2,0,30,16,31,240,33,224,0,0, + 0,0,0,0,0,0,7,128,24,96,48,48,112,56,112,24, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,112,24, + 112,56,48,48,24,96,7,128,14,24,48,18,2,0,24,48, + 56,112,56,112,24,48,0,0,0,0,0,0,7,128,24,96, + 48,48,112,56,112,24,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,112,24,112,56,48,48,24,96,7,128,30,23, + 92,34,2,254,0,3,0,0,0,7,128,0,0,7,128,0, + 0,7,128,0,0,3,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,7,128,0,0,7,128,0,0,7,128,0,0,3,0,0, + 14,17,34,18,2,0,7,132,24,104,48,56,112,56,112,56, + 224,92,224,156,225,156,227,28,226,28,228,28,232,28,120,24, + 112,56,48,48,88,96,135,192,17,25,75,20,1,1,28,0, + 0,28,0,0,14,0,0,3,0,0,1,0,0,0,128,0, + 0,0,0,0,0,0,248,62,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,30,0,56,30,0, + 56,46,0,28,78,0,15,143,128,17,25,75,20,1,1,0, + 28,0,0,60,0,0,48,0,0,96,0,0,192,0,0,128, + 0,0,0,0,0,0,0,248,62,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,30,0,56,30, + 0,56,46,0,28,78,0,15,143,128,17,25,75,20,1,0, + 0,128,0,1,192,0,1,192,0,3,96,0,4,48,0,8, + 8,0,0,0,0,0,0,0,248,62,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,30,0,56, + 30,0,56,46,0,28,78,0,15,143,128,17,24,72,20,1, + 0,12,48,0,28,56,0,28,56,0,12,48,0,0,0,0, + 0,0,0,0,0,0,248,62,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,30,0,56,30,0, + 56,46,0,28,78,0,15,143,128,18,33,99,19,1,249,0, + 12,0,0,28,0,0,24,0,0,48,0,0,96,0,0,64, + 0,0,0,0,0,0,0,255,31,192,28,6,0,28,4,0, + 12,4,0,14,4,0,14,4,0,6,8,0,7,8,0,7, + 8,0,3,16,0,3,144,0,3,144,0,1,224,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,64,0,0,128,0, + 0,128,0,112,128,0,113,128,0,113,0,0,114,0,0,60, + 0,0,16,34,68,19,1,247,12,0,60,0,92,0,28,0, + 28,0,28,0,28,0,28,0,28,60,28,126,28,143,29,7, + 30,7,30,7,30,7,28,6,28,14,28,14,28,12,28,24, + 28,16,28,32,28,64,29,128,31,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,224,0,17,32,96,19, + 1,248,6,12,0,7,28,0,7,28,0,6,12,0,0,0, + 0,0,0,0,0,0,0,255,31,128,28,6,0,28,4,0, + 14,4,0,14,4,0,14,8,0,7,8,0,7,8,0,7, + 16,0,3,144,0,3,144,0,3,160,0,1,224,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,64,0,0,128,0, + 0,128,0,112,128,0,121,0,0,121,0,0,114,0,0,60, + 0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=30 h=34 x= 4 y=10 dx=34 dy= 0 ascent=27 len=124 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26n[932] U8G_SECTION(".progmem.u8g_font_osr26n") = { + 0,94,46,227,245,25,0,0,0,0,42,57,0,27,249,25, + 0,13,15,30,18,3,10,7,0,7,0,7,0,195,24,226, + 56,114,112,10,128,7,0,15,128,122,240,242,120,226,56,7, + 0,7,0,7,0,30,31,124,34,2,250,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,255,255,255,252,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,5,11,11,10,2,250,112,248,248, + 120,8,8,8,16,16,32,64,9,2,4,13,2,8,255,128, + 255,128,4,5,5,10,3,0,96,240,240,240,96,12,34,68, + 16,2,249,0,16,0,48,0,48,0,32,0,96,0,96,0, + 64,0,192,0,192,0,128,0,128,1,128,1,0,1,0,3, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,24,0,16,0,48,0,48,0,32,0,96,0,96, + 0,64,0,192,0,192,0,17,25,75,21,2,0,3,224,0, + 14,56,0,28,28,0,24,12,0,56,14,0,112,7,0,112, + 7,0,112,7,0,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 112,7,0,112,7,0,112,7,0,56,14,0,56,14,0,24, + 12,0,12,24,0,7,112,0,12,25,50,21,4,0,1,0, + 3,0,3,0,15,0,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,255,240, + 15,25,50,21,3,0,15,192,48,112,96,56,64,60,192,30, + 192,30,224,30,248,30,248,30,120,28,0,60,0,56,0,112, + 0,224,1,192,3,0,14,0,28,4,56,4,48,4,96,4, + 96,12,255,252,255,252,255,252,15,25,50,21,3,0,15,192, + 48,112,32,56,96,28,112,28,120,28,120,28,48,28,0,28, + 0,56,0,112,31,192,24,112,0,56,0,60,0,30,0,30, + 112,30,248,30,248,30,248,30,192,60,192,56,96,112,63,224, + 17,25,75,21,2,0,0,16,0,0,48,0,0,112,0,0, + 112,0,0,240,0,1,240,0,1,112,0,3,112,0,6,112, + 0,6,112,0,12,112,0,8,112,0,24,112,0,48,112,0, + 32,112,0,96,112,0,192,112,0,255,255,128,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,7,255, + 128,15,26,52,21,3,0,32,0,48,56,63,240,63,192,47, + 0,32,0,32,0,32,0,32,0,39,192,56,112,48,56,32, + 60,32,28,0,30,0,30,0,30,0,30,120,30,248,30,248, + 28,240,60,224,60,96,56,112,112,63,192,15,25,50,21,3, + 0,3,224,6,24,12,12,24,28,56,60,48,60,112,16,112, + 0,112,0,243,224,246,56,252,28,248,28,248,14,240,14,240, + 14,240,14,240,14,112,14,112,14,112,12,56,28,56,24,24, + 56,14,224,14,25,50,21,3,0,255,252,255,252,255,252,192, + 12,128,8,128,8,128,8,128,16,0,16,0,32,0,96,0, + 64,0,128,1,128,1,128,3,0,3,0,7,0,7,0,15, + 128,15,128,15,128,15,128,15,128,7,128,17,25,75,21,2, + 0,7,240,0,28,28,0,48,14,0,112,6,0,224,3,0, + 224,3,0,224,3,0,240,3,0,240,6,0,124,6,0,127, + 140,0,31,240,0,7,252,0,25,254,0,48,63,0,96,15, + 128,224,7,128,224,3,128,224,3,128,224,3,128,224,3,0, + 96,7,0,112,6,0,56,12,0,15,248,0,15,25,50,21, + 3,0,7,192,24,96,48,48,112,56,112,28,224,28,224,28, + 224,30,224,30,224,30,224,30,112,62,112,62,56,94,15,158, + 0,30,0,28,0,28,56,28,120,28,120,56,112,56,96,112, + 48,224,31,192}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=36 h=34 x= 4 y=20 dx=38 dy= 0 ascent=28 len=130 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =27 descent=-8 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_SECTION(".progmem.u8g_font_osr26r") = { + 0,94,46,227,245,26,7,96,17,82,32,127,248,28,248,27, + 248,0,0,0,10,0,0,4,25,25,10,3,0,96,240,240, + 240,240,240,240,240,96,96,96,96,96,96,96,96,96,96,32, + 64,96,240,240,240,96,8,7,7,14,3,20,195,195,195,195, + 195,195,66,19,25,75,25,3,0,1,130,0,1,130,0,1, + 2,0,1,6,0,3,6,0,3,6,0,3,6,0,255,255, + 224,2,4,0,2,4,0,2,12,0,6,12,0,6,12,0, + 6,12,0,6,8,0,4,8,0,4,8,0,255,255,224,12, + 24,0,12,24,0,12,16,0,8,16,0,8,48,0,8,48, + 0,24,48,0,16,31,62,21,2,253,2,64,2,64,2,64, + 7,224,26,92,50,70,34,66,98,67,98,71,98,79,98,79, + 114,78,58,64,63,64,31,192,7,240,3,252,2,126,2,78, + 34,71,242,67,242,67,226,67,226,67,194,66,66,70,34,76, + 30,112,3,192,2,64,2,64,24,25,75,30,3,0,30,0, + 48,33,0,32,97,128,96,192,192,64,192,192,192,192,192,128, + 192,193,0,192,195,0,192,194,0,64,134,0,97,132,0,34, + 8,0,28,24,112,0,16,132,0,49,134,0,33,2,0,67, + 3,0,195,3,0,131,3,1,131,3,1,3,3,3,3,3, + 6,1,6,4,1,134,12,0,252,24,25,75,28,2,0,1, + 240,0,3,8,0,6,12,0,12,4,0,12,4,0,12,12, + 0,14,8,0,14,24,0,7,48,0,7,192,0,3,193,255, + 7,192,56,13,224,48,24,240,48,48,112,32,112,120,96,112, + 60,64,224,28,128,224,15,128,224,15,0,224,7,0,240,3, + 129,112,15,194,120,25,228,31,224,252,2,7,7,8,3,20, + 192,192,192,192,192,192,64,8,33,33,14,4,250,3,6,12, + 12,24,16,48,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,64,96,96,96,48,48,24,24,12,6,6,3,8,33, + 33,13,2,250,192,96,96,48,24,24,12,12,6,6,6,2, + 3,3,3,3,3,3,3,3,2,6,6,6,4,12,12,24, + 24,48,96,192,128,13,15,30,18,3,10,7,0,7,0,7, + 0,195,24,226,56,114,112,10,128,7,0,15,128,122,240,242, + 120,226,56,7,0,7,0,7,0,30,31,124,34,2,250,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,255,255,255,252,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,5,11,11,10,2, + 250,112,248,248,120,8,8,8,16,16,32,64,9,2,4,13, + 2,8,255,128,255,128,4,5,5,10,3,0,96,240,240,240, + 96,12,34,68,16,2,249,0,16,0,48,0,48,0,32,0, + 96,0,96,0,64,0,192,0,192,0,128,0,128,1,128,1, + 0,1,0,3,0,2,0,2,0,6,0,4,0,4,0,12, + 0,8,0,8,0,24,0,24,0,16,0,48,0,48,0,32, + 0,96,0,96,0,64,0,192,0,192,0,17,25,75,21,2, + 0,3,224,0,14,56,0,28,28,0,24,12,0,56,14,0, + 112,7,0,112,7,0,112,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,112,7,0,112,7,0,112,7,0,56,14,0, + 56,14,0,24,12,0,12,24,0,7,112,0,12,25,50,21, + 4,0,1,0,3,0,3,0,15,0,255,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,255,240,15,25,50,21,3,0,15,192,48,112,96,56, + 64,60,192,30,192,30,224,30,248,30,248,30,120,28,0,60, + 0,56,0,112,0,224,1,192,3,0,14,0,28,4,56,4, + 48,4,96,4,96,12,255,252,255,252,255,252,15,25,50,21, + 3,0,15,192,48,112,32,56,96,28,112,28,120,28,120,28, + 48,28,0,28,0,56,0,112,31,192,24,112,0,56,0,60, + 0,30,0,30,112,30,248,30,248,30,248,30,192,60,192,56, + 96,112,63,224,17,25,75,21,2,0,0,16,0,0,48,0, + 0,112,0,0,112,0,0,240,0,1,240,0,1,112,0,3, + 112,0,6,112,0,6,112,0,12,112,0,8,112,0,24,112, + 0,48,112,0,32,112,0,96,112,0,192,112,0,255,255,128, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,15,26,52,21,3,0,32,0,48,56,63, + 240,63,192,47,0,32,0,32,0,32,0,32,0,39,192,56, + 112,48,56,32,60,32,28,0,30,0,30,0,30,0,30,120, + 30,248,30,248,28,240,60,224,60,96,56,112,112,63,192,15, + 25,50,21,3,0,3,224,6,24,12,12,24,28,56,60,48, + 60,112,16,112,0,112,0,243,224,246,56,252,28,248,28,248, + 14,240,14,240,14,240,14,240,14,112,14,112,14,112,12,56, + 28,56,24,24,56,14,224,14,25,50,21,3,0,255,252,255, + 252,255,252,192,12,128,8,128,8,128,8,128,16,0,16,0, + 32,0,96,0,64,0,128,1,128,1,128,3,0,3,0,7, + 0,7,0,15,128,15,128,15,128,15,128,15,128,7,128,17, + 25,75,21,2,0,7,240,0,28,28,0,48,14,0,112,6, + 0,224,3,0,224,3,0,224,3,0,240,3,0,240,6,0, + 124,6,0,127,140,0,31,240,0,7,252,0,25,254,0,48, + 63,0,96,15,128,224,7,128,224,3,128,224,3,128,224,3, + 128,224,3,0,96,7,0,112,6,0,56,12,0,15,248,0, + 15,25,50,21,3,0,7,192,24,96,48,48,112,56,112,28, + 224,28,224,28,224,30,224,30,224,30,224,30,112,62,112,62, + 56,94,15,158,0,30,0,28,0,28,56,28,120,28,120,56, + 112,56,96,112,48,224,31,192,4,17,17,10,3,0,96,240, + 240,240,96,0,0,0,0,0,0,0,96,240,240,240,96,5, + 23,23,11,3,250,112,248,248,248,112,0,0,0,0,0,0, + 0,112,240,248,120,8,8,8,16,16,32,64,28,29,116,34, + 3,251,0,0,0,112,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,1,224,0,0,3,128,0,0,14, + 0,0,0,56,0,0,0,224,0,0,3,128,0,0,15,0, + 0,0,28,0,0,0,112,0,0,0,192,0,0,0,112,0, + 0,0,28,0,0,0,7,0,0,0,1,192,0,0,0,240, + 0,0,0,56,0,0,0,14,0,0,0,3,128,0,0,0, + 224,0,0,0,56,0,0,0,14,0,0,0,7,0,0,0, + 1,192,0,0,0,112,30,8,32,34,2,6,255,255,255,252, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,252,28,29,116,34, + 3,251,224,0,0,0,56,0,0,0,14,0,0,0,3,128, + 0,0,0,224,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,1,192,0,0,0,112,0,0,0,28,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,48,0,0, + 0,224,0,0,3,128,0,0,14,0,0,0,56,0,0,0, + 240,0,0,1,192,0,0,7,0,0,0,28,0,0,0,112, + 0,0,1,192,0,0,7,0,0,0,30,0,0,0,56,0, + 0,0,224,0,0,0,13,25,50,17,2,0,15,128,48,224, + 64,112,192,56,192,56,248,56,248,56,112,56,0,112,0,224, + 1,192,3,128,3,0,4,0,12,0,8,64,8,64,8,128, + 7,0,0,0,3,0,7,128,7,128,7,128,3,0,26,27, + 108,30,2,0,0,4,0,0,0,251,224,0,3,0,56,0, + 6,0,12,0,12,0,6,0,24,0,3,0,48,15,1,0, + 48,49,241,128,96,96,241,128,96,192,224,128,193,192,224,192, + 193,128,224,192,193,128,192,192,195,128,192,192,195,1,192,192, + 195,1,192,192,195,1,129,128,195,3,129,128,67,7,129,0, + 99,7,130,0,97,137,132,0,32,240,248,0,48,0,0,0, + 24,0,0,0,12,0,16,0,7,0,48,0,1,255,192,0, + 25,26,104,28,2,0,0,8,0,0,0,12,0,0,0,28, + 0,0,0,28,0,0,0,30,0,0,0,62,0,0,0,46, + 0,0,0,47,0,0,0,103,0,0,0,103,0,0,0,71, + 128,0,0,195,128,0,0,195,128,0,0,131,192,0,1,129, + 192,0,1,129,192,0,3,1,224,0,3,255,224,0,2,0, + 224,0,6,0,240,0,6,0,112,0,6,0,112,0,12,0, + 120,0,12,0,120,0,30,0,120,0,255,195,255,128,20,26, + 78,25,3,0,255,252,0,28,3,0,28,1,192,28,1,192, + 28,0,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 1,192,28,1,128,28,3,0,31,252,0,28,7,0,28,1, + 192,28,1,224,28,0,224,28,0,240,28,0,240,28,0,240, + 28,0,240,28,0,240,28,1,224,28,1,192,28,3,128,255, + 254,0,19,26,78,24,3,1,3,252,32,14,6,96,28,3, + 224,24,1,224,56,0,224,120,0,224,112,0,96,112,0,96, + 240,0,96,240,0,32,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,112,0,32,112,0, + 32,120,0,96,56,0,64,56,0,64,28,0,128,12,0,128, + 6,3,0,3,222,0,24,26,78,29,3,0,255,255,0,28, + 1,192,28,0,112,28,0,56,28,0,56,28,0,28,28,0, + 30,28,0,30,28,0,14,28,0,15,28,0,15,28,0,15, + 28,0,15,28,0,15,28,0,15,28,0,15,28,0,15,28, + 0,14,28,0,30,28,0,30,28,0,28,28,0,56,28,0, + 56,28,0,112,28,1,192,255,255,0,21,26,78,25,2,0, + 255,255,248,14,0,120,14,0,56,14,0,24,14,0,24,14, + 0,8,14,0,8,14,4,8,14,4,0,14,4,0,14,12, + 0,14,12,0,15,252,0,14,12,0,14,4,0,14,4,0, + 14,4,8,14,4,8,14,0,8,14,0,8,14,0,24,14, + 0,24,14,0,56,14,0,56,14,0,248,255,255,248,20,26, + 78,24,2,0,255,255,240,14,0,240,14,0,112,14,0,48, + 14,0,48,14,0,16,14,0,16,14,4,16,14,4,0,14, + 4,0,14,12,0,14,12,0,15,252,0,14,12,0,14,12, + 0,14,4,0,14,4,0,14,4,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,255, + 224,0,22,27,81,26,3,0,0,32,0,3,220,32,6,7, + 32,12,3,224,24,1,224,56,0,224,56,0,96,112,0,96, + 112,0,96,112,0,32,240,0,32,240,0,0,240,0,0,240, + 0,0,240,15,252,240,0,224,240,0,224,240,0,224,240,0, + 224,112,0,224,112,0,224,56,0,224,56,1,224,24,1,32, + 12,3,32,6,6,32,3,252,32,24,26,78,28,2,0,255, + 195,255,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,15,255,248,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,255,195,255,10,26,52, + 14,2,0,255,192,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,255,192,16,26,52,19,2,0,3,255,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,112,56,248,56,248,56,240,56,192,48,192,112,96,96,63, + 192,24,26,78,28,2,0,255,199,254,14,1,240,14,0,224, + 14,0,192,14,1,128,14,3,0,14,6,0,14,12,0,14, + 24,0,14,24,0,14,56,0,14,124,0,14,188,0,15,62, + 0,15,30,0,14,31,0,14,15,0,14,15,128,14,7,128, + 14,7,192,14,3,192,14,1,224,14,1,240,14,0,240,14, + 0,248,255,199,255,20,26,78,24,2,0,255,224,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,16,14,0, + 16,14,0,32,14,0,48,14,0,48,14,0,48,14,0,112, + 14,0,240,14,3,240,255,255,240,26,26,104,30,2,0,255, + 0,31,192,15,0,30,0,15,128,30,0,15,128,46,0,11, + 128,46,0,11,128,46,0,11,192,110,0,9,192,78,0,9, + 192,78,0,9,224,78,0,8,224,142,0,8,224,142,0,8, + 224,142,0,8,241,142,0,8,113,14,0,8,113,14,0,8, + 121,14,0,8,59,14,0,8,58,14,0,8,58,14,0,8, + 30,14,0,8,28,14,0,8,28,14,0,8,12,14,0,28, + 12,14,0,255,136,255,192,25,26,104,28,2,0,254,0,255, + 128,15,0,28,0,15,128,8,0,15,128,8,0,11,192,8, + 0,11,192,8,0,9,224,8,0,8,240,8,0,8,240,8, + 0,8,120,8,0,8,60,8,0,8,60,8,0,8,30,8, + 0,8,30,8,0,8,15,8,0,8,7,136,0,8,7,136, + 0,8,3,200,0,8,1,232,0,8,1,232,0,8,0,248, + 0,8,0,120,0,8,0,120,0,8,0,56,0,28,0,24, + 0,255,128,24,0,21,27,81,26,3,0,0,32,0,3,220, + 0,6,3,0,12,1,128,28,1,192,56,0,224,56,0,224, + 120,0,240,112,0,112,112,0,112,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,112,0,112,112,0,112,120,0,240,56,0,224,56,0,224, + 28,1,192,12,1,128,6,3,0,3,254,0,21,26,78,25, + 2,0,255,255,0,14,1,192,14,0,224,14,0,240,14,0, + 120,14,0,120,14,0,120,14,0,120,14,0,120,14,0,112, + 14,0,240,14,0,224,14,1,192,15,254,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,255,224,0, + 21,33,99,26,3,250,0,32,0,3,220,0,6,3,0,12, + 1,128,28,1,192,56,0,224,56,0,224,120,0,240,112,0, + 112,112,0,112,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,112,0,112,112, + 0,112,120,0,240,56,112,224,57,152,224,29,13,192,13,13, + 128,7,15,8,3,158,8,0,110,8,0,14,8,0,14,24, + 0,7,176,0,7,240,0,3,192,22,26,78,25,2,0,255, + 255,0,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,1,192,14,7,128, + 15,252,0,14,6,0,14,7,0,14,3,128,14,3,128,14, + 3,128,14,3,192,14,3,192,14,3,192,14,3,196,14,1, + 196,14,1,196,14,1,236,14,1,248,255,224,240,17,26,78, + 22,3,1,31,227,0,48,51,0,96,31,0,192,15,0,192, + 7,0,192,3,0,192,3,0,224,3,0,240,1,0,120,0, + 0,127,0,0,63,192,0,31,248,0,7,252,0,1,254,0, + 128,63,0,128,15,128,128,3,128,192,3,128,192,1,128,192, + 1,128,224,1,128,240,1,0,248,3,0,140,6,0,135,252, + 0,21,26,78,26,3,0,255,255,248,240,112,120,224,112,56, + 192,112,24,192,112,24,192,112,24,128,112,8,128,112,8,128, + 112,8,128,112,8,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,25,26,104,29,2,0,255,192,255,128,14, + 0,14,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,6, + 0,8,0,7,0,8,0,3,0,16,0,1,192,32,0,0, + 127,192,0,25,26,104,28,2,0,255,241,255,128,15,0,60, + 0,15,0,24,0,7,128,24,0,7,128,16,0,3,128,48, + 0,3,192,48,0,3,192,48,0,1,192,32,0,1,224,96, + 0,1,224,96,0,0,224,64,0,0,240,192,0,0,240,192, + 0,0,112,128,0,0,113,128,0,0,121,128,0,0,57,0, + 0,0,59,0,0,0,63,0,0,0,30,0,0,0,30,0, + 0,0,14,0,0,0,14,0,0,0,12,0,0,0,4,0, + 0,36,26,130,38,1,0,255,231,255,63,240,15,0,248,7, + 128,15,0,120,3,0,7,0,120,3,0,7,128,120,6,0, + 7,128,248,6,0,3,128,252,6,0,3,128,252,4,0,3, + 192,156,12,0,1,193,156,12,0,1,193,158,12,0,1,225, + 14,24,0,1,227,14,24,0,0,227,14,24,0,0,227,15, + 16,0,0,242,7,48,0,0,118,7,48,0,0,118,7,32, + 0,0,116,3,224,0,0,124,3,224,0,0,60,3,192,0, + 0,60,1,192,0,0,56,1,192,0,0,24,1,192,0,0, + 24,1,128,0,0,16,0,128,0,24,26,78,27,2,0,255, + 227,255,15,128,112,7,128,96,7,192,96,3,192,192,1,224, + 128,1,225,128,0,227,0,0,242,0,0,118,0,0,124,0, + 0,56,0,0,60,0,0,60,0,0,62,0,0,79,0,0, + 207,0,0,135,128,1,135,128,1,3,192,3,3,192,6,1, + 224,6,0,224,14,0,240,30,0,240,255,199,255,24,26,78, + 27,2,0,255,225,255,31,0,56,15,0,48,7,128,48,7, + 128,32,3,192,96,3,192,64,1,224,128,0,224,128,0,241, + 0,0,113,0,0,122,0,0,58,0,0,60,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,1,255, + 224,19,26,78,23,2,0,63,255,224,60,3,192,56,3,192, + 112,7,128,96,15,0,96,15,0,64,30,0,64,30,0,64, + 60,0,0,120,0,0,120,0,0,240,0,0,224,0,1,224, + 0,3,192,0,3,192,0,7,128,32,7,0,32,15,0,32, + 30,0,96,30,0,96,60,0,224,56,0,224,120,1,224,240, + 3,192,255,255,192,7,33,33,14,4,249,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,240,254,12,34,68,16, + 2,249,128,0,192,0,64,0,64,0,96,0,32,0,32,0, + 48,0,16,0,16,0,24,0,8,0,8,0,12,0,4,0, + 4,0,6,0,6,0,2,0,3,0,3,0,1,0,1,128, + 1,128,0,128,0,128,0,192,0,64,0,64,0,96,0,32, + 0,32,0,48,0,16,7,33,33,15,3,249,254,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,254,15,13,26, + 21,3,12,1,0,3,128,3,128,6,192,4,64,12,96,24, + 48,16,16,48,24,96,8,96,12,192,6,128,2,19,1,3, + 19,0,250,255,255,224,6,6,6,16,3,19,192,224,112,48, + 24,12,16,17,34,19,2,0,15,128,48,224,96,112,96,112, + 120,112,120,112,0,112,1,240,30,112,112,112,96,112,224,112, + 224,113,224,241,225,113,113,126,62,60,16,26,52,18,0,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,112,29,140,29,14,30,6,30,7,28,7,28,7, + 28,7,28,7,28,7,28,7,28,7,28,7,30,6,30,14, + 19,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, + 112,48,96,112,224,112,224,112,224,0,224,0,224,0,224,0, + 224,0,96,16,112,16,48,32,24,64,15,128,16,26,52,19, + 2,0,1,248,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,14,56,57,184,48,184,112,120,96,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,96,56,112,120, + 48,120,48,248,15,63,13,17,34,17,2,0,15,128,24,224, + 48,96,112,112,96,48,224,56,224,56,255,248,224,0,224,0, + 224,0,224,8,112,16,112,16,48,32,24,96,7,128,12,26, + 52,12,1,0,7,192,12,32,28,48,56,112,56,112,56,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,255,128,17,25,75,20,2,248,7,199, + 0,28,117,128,56,59,128,112,31,128,112,28,0,112,28,0, + 112,28,0,112,28,0,56,56,0,28,112,0,7,192,0,56, + 0,0,64,0,0,64,0,0,64,0,0,127,224,0,63,248, + 0,14,28,0,112,2,0,192,2,0,192,2,0,192,2,0, + 224,4,0,112,8,0,15,240,0,18,26,78,21,1,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,124,0,28,142,0, + 29,7,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,255,31,192,7,25,25, + 10,2,0,48,120,120,48,0,0,0,0,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,9,34,68,11, + 255,248,1,128,3,128,3,128,1,128,0,0,0,0,0,0, + 0,0,0,0,31,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,67,128,227,128,227,0, + 195,0,70,0,60,0,17,26,78,19,1,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,127,0,28,24,0,28,16,0, + 28,48,0,28,32,0,28,64,0,28,128,0,29,192,0,29, + 192,0,30,224,0,28,112,0,28,112,0,28,56,0,28,60, + 0,28,28,0,28,30,0,255,127,128,9,26,52,11,1,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,25,17,68,29,2,0,248,240,120,0,57,56, + 156,0,58,29,14,0,60,30,14,0,60,30,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,254,127,63,128,17,17, + 51,21,2,0,248,248,0,57,28,0,58,14,0,60,14,0, + 60,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,254,63,128,14,17,34,18,2,0,7,128,24, + 96,48,48,112,56,112,24,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,48,48,24,96,7,128,16, + 25,50,19,1,248,252,240,29,140,31,14,30,6,30,7,28, + 7,28,7,28,7,28,7,28,7,28,7,28,7,28,7,30, + 6,30,14,29,12,28,240,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,128,16,25,50,18,2,248,15,8,56, + 136,48,216,112,88,96,120,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,96,56,112,120,48,120,48,184,15,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,1,255,12, + 17,34,15,2,0,248,224,57,16,58,48,58,112,60,112,60, + 0,60,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,12,17,34,16,2,0,62,64,97, + 64,192,192,192,64,192,64,224,64,120,0,127,0,31,192,7, + 224,128,240,192,112,192,48,224,48,224,48,152,96,135,192,11, + 24,48,13,1,0,8,0,8,0,8,0,8,0,24,0,24, + 0,56,0,255,192,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,32,56,32,56,32,56, + 96,31,192,15,128,17,17,51,20,1,0,248,62,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 30,0,56,30,0,56,46,0,28,78,0,15,143,128,18,17, + 51,19,0,0,255,31,192,28,7,0,28,6,0,12,4,0, + 14,4,0,14,4,0,7,8,0,7,8,0,3,8,0,3, + 144,0,1,144,0,1,208,0,1,224,0,0,224,0,0,224, + 0,0,64,0,0,64,0,27,17,68,28,0,0,255,63,207, + 224,28,15,3,0,28,7,3,0,12,7,2,0,14,7,2, + 0,14,15,130,0,7,11,132,0,7,9,132,0,3,137,196, + 0,3,145,200,0,1,144,200,0,1,208,232,0,1,224,240, + 0,0,224,112,0,0,224,112,0,0,64,96,0,0,64,32, + 0,16,17,34,19,2,0,254,126,60,56,28,48,28,32,14, + 64,14,64,7,128,3,128,3,128,3,192,3,192,4,224,8, + 96,8,112,16,56,48,56,252,255,18,25,75,20,1,248,255, + 31,192,28,6,0,28,6,0,12,4,0,14,4,0,14,4, + 0,6,8,0,7,8,0,7,8,0,3,16,0,3,144,0, + 3,144,0,1,240,0,1,224,0,1,224,0,0,224,0,0, + 192,0,0,64,0,0,192,0,0,128,0,112,128,0,113,128, + 0,113,0,0,115,0,0,60,0,0,12,17,34,15,1,0, + 255,240,224,112,192,224,128,224,129,192,131,128,131,128,7,0, + 7,0,14,0,28,16,28,16,56,16,56,16,112,48,224,112, + 255,240,8,33,33,15,3,249,3,4,8,24,24,24,24,28, + 28,28,12,12,12,12,8,24,224,24,8,12,12,12,12,28, + 28,28,24,24,24,24,8,4,3,2,34,34,10,4,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,33,33,14,3,249,192,32,16,24,24,24,24,24,56, + 56,48,48,48,48,16,24,7,24,16,48,48,48,48,56,56, + 24,24,24,24,24,16,32,192,20,6,18,24,2,6,62,0, + 32,127,192,16,135,248,16,128,255,48,128,63,224,96,7,192, + 255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=41 h=39 x= 8 y=23 dx=44 dy= 0 ascent=39 len=174 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =30 descent=-9 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_SECTION(".progmem.u8g_font_osr29") = { + 0,107,51,223,244,29,9,148,21,166,32,255,247,39,245,30, + 247,0,0,0,11,0,0,5,28,28,11,3,0,112,248,248, + 248,248,248,248,248,112,112,112,112,112,112,112,112,32,32,32, + 32,32,32,0,112,248,248,248,112,9,8,16,17,4,22,227, + 128,227,128,227,128,227,128,193,128,65,128,65,0,65,0,22, + 28,84,28,3,0,0,192,192,0,192,192,0,192,192,0,192, + 128,0,129,128,1,129,128,1,129,128,1,129,128,255,255,252, + 255,255,252,1,129,0,3,3,0,3,3,0,3,3,0,3, + 3,0,3,3,0,2,2,0,6,6,0,255,255,252,255,255, + 252,6,6,0,6,6,0,6,4,0,4,12,0,12,12,0, + 12,12,0,12,12,0,12,12,0,18,34,102,24,3,253,1, + 16,0,1,16,0,1,16,0,3,248,0,13,22,0,25,17, + 0,49,16,128,97,16,192,97,16,192,97,17,192,97,19,192, + 97,19,192,113,19,128,61,16,0,63,144,0,31,240,0,15, + 252,0,3,254,0,1,127,0,1,31,128,1,19,128,33,17, + 192,113,16,192,249,16,192,241,16,192,241,16,192,225,16,128, + 97,17,128,97,17,0,49,19,0,15,188,0,1,240,0,1, + 16,0,1,16,0,28,28,112,36,4,0,31,0,6,0,49, + 128,4,0,96,192,12,0,96,192,8,0,224,224,24,0,224, + 224,48,0,224,224,32,0,224,224,96,0,224,224,64,0,224, + 224,128,0,96,193,128,0,96,193,0,0,49,131,0,0,31, + 6,0,0,0,4,15,0,0,12,48,128,0,8,48,192,0, + 16,96,96,0,48,96,96,0,32,224,112,0,96,224,112,0, + 64,224,112,0,128,224,112,1,128,224,112,1,0,96,96,2, + 0,96,96,6,0,48,192,4,0,31,128,28,28,112,32,2, + 0,0,248,0,0,3,140,0,0,7,4,0,0,6,2,0, + 0,14,2,0,0,14,2,0,0,14,6,0,0,14,4,0, + 0,15,12,0,0,7,24,0,0,7,176,0,0,3,224,0, + 0,1,224,63,240,3,224,7,128,6,240,7,0,12,120,6, + 0,24,124,6,0,48,60,4,0,112,30,12,0,112,31,24, + 0,240,15,144,0,240,7,176,0,240,7,224,0,240,3,224, + 0,240,3,240,32,120,6,248,32,60,12,124,192,31,240,63, + 128,3,8,8,10,4,22,224,224,224,224,192,64,64,64,9, + 37,74,15,4,249,1,128,3,0,6,0,14,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,96,0,96,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,0,96,0,96,0,48,0,48,0,56, + 0,24,0,12,0,12,0,6,0,3,0,3,128,1,128,9, + 37,74,15,2,249,192,0,96,0,48,0,56,0,24,0,12, + 0,12,0,6,0,6,0,3,0,3,0,3,0,3,0,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,3,128,3,0,3,0,3,0,6,0,6,0,14, + 0,12,0,24,0,24,0,48,0,96,0,224,0,192,0,15, + 17,34,21,3,11,3,128,3,192,3,128,3,128,225,142,241, + 30,249,62,29,112,3,128,3,128,29,112,249,62,241,30,227, + 142,3,128,3,192,3,128,35,34,170,39,2,250,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,5,12,12,11,3,249,112,240,248, + 248,24,8,8,16,16,32,32,64,10,2,4,14,2,9,255, + 192,255,192,5,5,5,11,3,0,112,248,248,248,112,14,38, + 76,18,2,248,0,12,0,12,0,12,0,8,0,24,0,24, + 0,16,0,48,0,48,0,32,0,96,0,96,0,64,0,192, + 0,192,0,128,1,128,1,128,1,0,3,0,3,0,2,0, + 6,0,6,0,4,0,12,0,12,0,8,0,24,0,24,0, + 16,0,48,0,48,0,32,0,96,0,96,0,64,0,192,0, + 20,28,84,24,2,0,1,248,0,7,12,0,12,7,0,28, + 3,128,24,1,128,56,1,192,56,1,192,112,0,224,112,0, + 224,112,0,224,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,112, + 0,224,112,0,224,112,0,224,56,1,192,56,1,192,24,1, + 128,12,3,0,6,6,0,3,252,0,14,28,56,24,5,0, + 1,128,1,128,3,128,7,128,255,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,255,252,17,28,84,24,3,0,7,224, + 0,24,60,0,32,30,0,64,15,0,192,15,0,192,7,128, + 192,7,128,240,7,128,252,7,128,252,7,128,124,7,128,24, + 15,0,0,14,0,0,28,0,0,56,0,0,112,0,0,224, + 0,1,192,0,3,0,0,6,0,0,12,0,128,24,0,128, + 48,0,128,48,1,128,112,1,128,127,255,128,127,255,128,127, + 255,128,17,28,84,24,3,0,15,224,0,48,56,0,96,28, + 0,96,14,0,240,15,0,248,15,0,248,15,0,120,15,0, + 0,15,0,0,15,0,0,14,0,0,28,0,28,56,0,31, + 224,0,0,60,0,0,30,0,0,15,0,0,7,0,0,7, + 128,0,7,128,120,7,128,248,7,128,248,7,128,248,7,0, + 192,15,0,192,14,0,96,28,0,31,240,0,19,28,84,24, + 2,0,0,12,0,0,12,0,0,28,0,0,60,0,0,60, + 0,0,124,0,0,252,0,0,252,0,1,188,0,3,60,0, + 3,60,0,6,60,0,12,60,0,12,60,0,24,60,0,48, + 60,0,32,60,0,96,60,0,192,60,0,255,255,224,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,7,255,224,17,29,87,24,4,0,0,2,0,120, + 12,0,127,248,0,127,240,0,111,192,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,103,224,0,104,60,0, + 112,30,0,96,14,0,96,15,0,96,7,0,0,7,128,0, + 7,128,0,7,128,16,7,128,120,7,128,252,7,128,252,7, + 128,248,15,0,224,15,0,224,14,0,96,28,0,48,56,0, + 31,240,0,17,28,84,24,3,0,1,248,0,3,12,0,12, + 6,0,28,7,0,24,15,0,56,31,0,48,31,0,112,14, + 0,112,0,0,112,0,0,240,0,0,241,240,0,246,28,0, + 252,14,0,248,7,0,248,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,112,7,128,112,7,128,112,7,0,48,7, + 0,56,7,0,24,14,0,12,28,0,7,248,0,16,28,56, + 24,4,0,255,255,255,255,255,255,192,3,128,2,128,2,128, + 6,128,4,0,12,0,8,0,24,0,48,0,32,0,96,0, + 192,0,192,1,128,3,128,3,128,7,128,7,128,7,128,15, + 192,15,192,15,192,15,192,15,192,7,192,20,28,84,24,2, + 0,3,248,0,14,14,0,56,7,0,112,3,128,112,1,192, + 240,1,192,240,1,192,240,1,192,240,1,192,248,1,128,126, + 3,128,127,131,0,63,252,0,15,252,0,7,255,0,24,127, + 192,48,15,224,112,3,224,224,1,240,224,0,240,224,0,240, + 224,0,224,224,0,224,224,0,224,112,1,192,48,1,128,28, + 7,0,15,252,0,17,28,84,24,3,0,7,224,0,12,56, + 0,56,12,0,56,14,0,112,14,0,112,7,0,240,7,0, + 240,7,0,240,7,128,240,7,128,240,7,128,240,7,128,112, + 15,128,112,15,128,56,27,128,28,51,128,7,199,128,0,7, + 128,0,7,0,0,7,0,56,7,0,124,7,0,124,14,0, + 120,14,0,112,12,0,112,24,0,48,48,0,31,224,0,5, + 19,19,11,3,0,112,248,248,248,112,0,0,0,0,0,0, + 0,0,0,112,248,248,248,112,5,26,26,11,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,240,248,120, + 8,8,8,16,16,32,96,64,32,34,136,39,3,250,0,0, + 0,2,0,0,0,7,0,0,0,28,0,0,0,112,0,0, + 1,224,0,0,7,128,0,0,30,0,0,0,120,0,0,1, + 224,0,0,3,128,0,0,14,0,0,0,56,0,0,0,240, + 0,0,3,192,0,0,15,0,0,0,60,0,0,0,240,0, + 0,0,224,0,0,0,120,0,0,0,30,0,0,0,7,128, + 0,0,1,192,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,3,192,0,0,0,240,0,0,0,60,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,56,0,0, + 0,14,0,0,0,6,35,10,50,39,2,6,255,255,255,255, + 224,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,224,255,255,255,255,224,32,34, + 136,39,3,250,64,0,0,0,224,0,0,0,56,0,0,0, + 14,0,0,0,7,128,0,0,1,224,0,0,0,120,0,0, + 0,30,0,0,0,7,128,0,0,1,192,0,0,0,112,0, + 0,0,28,0,0,0,15,0,0,0,3,192,0,0,0,240, + 0,0,0,60,0,0,0,15,0,0,0,7,0,0,0,30, + 0,0,0,120,0,0,1,224,0,0,3,128,0,0,14,0, + 0,0,56,0,0,0,224,0,0,3,192,0,0,15,0,0, + 0,60,0,0,0,240,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,0,96,0,0,0,15,28,56,20, + 3,0,15,192,48,112,64,60,192,28,192,30,248,30,248,30, + 112,30,0,28,0,60,0,120,0,240,1,192,3,128,6,0, + 12,0,8,32,8,32,8,32,12,64,7,128,0,0,0,0, + 3,128,7,192,7,192,7,192,3,128,29,29,116,33,2,1, + 0,63,248,0,1,192,14,0,3,0,3,0,6,0,1,128, + 12,0,0,192,24,7,206,96,48,12,124,32,48,56,60,48, + 96,112,60,16,96,224,56,24,96,224,56,24,193,192,56,24, + 193,192,56,24,193,192,48,24,195,192,112,24,195,128,112,24, + 195,128,112,48,195,128,224,48,195,128,224,48,67,129,224,96, + 97,130,224,192,97,196,225,128,48,120,62,0,48,0,0,0, + 24,0,0,0,12,0,0,0,6,0,4,0,3,128,28,0, + 0,127,240,0,29,29,116,32,2,0,0,2,0,0,0,6, + 0,0,0,7,0,0,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,31,192,0,0,19,192,0,0,51, + 192,0,0,49,224,0,0,33,224,0,0,97,224,0,0,96, + 240,0,0,64,240,0,0,192,240,0,0,192,120,0,0,128, + 120,0,1,128,120,0,1,255,252,0,1,0,60,0,3,0, + 28,0,3,0,30,0,6,0,30,0,6,0,15,0,6,0, + 15,0,14,0,15,0,30,0,15,128,255,224,255,248,23,29, + 87,28,3,0,255,255,128,15,0,224,15,0,120,15,0,60, + 15,0,28,15,0,28,15,0,30,15,0,30,15,0,28,15, + 0,28,15,0,56,15,0,48,15,0,224,15,255,0,15,0, + 224,15,0,112,15,0,56,15,0,60,15,0,30,15,0,30, + 15,0,30,15,0,30,15,0,30,15,0,30,15,0,60,15, + 0,60,15,0,120,15,0,224,255,255,128,22,29,87,28,3, + 1,1,254,8,7,3,152,12,0,248,28,0,248,24,0,120, + 56,0,56,120,0,56,112,0,24,112,0,24,240,0,8,240, + 0,8,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,12,112,0,12, + 120,0,12,56,0,24,56,0,24,28,0,24,12,0,48,6, + 0,96,3,0,192,0,255,128,27,29,116,32,3,0,255,255, + 192,0,15,0,112,0,15,0,28,0,15,0,14,0,15,0, + 7,0,15,0,7,128,15,0,3,128,15,0,3,192,15,0, + 3,192,15,0,1,192,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,3,192,15,0, + 3,192,15,0,3,192,15,0,3,128,15,0,7,0,15,0, + 7,0,15,0,14,0,15,0,28,0,15,0,112,0,255,255, + 192,0,23,29,87,29,3,0,255,255,254,15,0,62,15,0, + 14,15,0,14,15,0,6,15,0,6,15,0,2,15,0,2, + 15,1,2,15,1,0,15,1,0,15,1,0,15,3,0,15, + 7,0,15,255,0,15,7,0,15,3,0,15,1,0,15,1, + 2,15,1,2,15,1,2,15,0,2,15,0,6,15,0,6, + 15,0,6,15,0,14,15,0,30,15,0,126,255,255,254,23, + 29,87,28,3,0,255,255,254,15,0,62,15,0,14,15,0, + 14,15,0,6,15,0,6,15,0,2,15,0,2,15,1,2, + 15,1,0,15,1,0,15,1,0,15,3,0,15,7,0,15, + 255,0,15,7,0,15,3,0,15,1,0,15,1,0,15,1, + 0,15,1,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,255,240,0,25,30,120,29, + 3,0,0,16,0,0,1,254,8,0,6,3,152,0,12,0, + 248,0,28,0,248,0,24,0,120,0,56,0,56,0,56,0, + 56,0,112,0,24,0,112,0,24,0,112,0,8,0,240,0, + 8,0,240,0,0,0,240,0,0,0,240,0,0,0,240,7, + 255,128,240,0,120,0,240,0,120,0,240,0,120,0,240,0, + 120,0,112,0,120,0,112,0,120,0,112,0,120,0,56,0, + 120,0,56,0,120,0,24,0,248,0,28,0,200,0,12,1, + 136,0,6,3,8,0,1,254,8,0,28,29,116,33,3,0, + 255,240,255,240,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,255,255,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 255,240,255,240,12,29,58,17,3,0,255,240,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,255,240,19,29,87,22,2,0,1,255,224,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,120,30,0,248,30,0,248,30,0,248, + 30,0,192,28,0,192,28,0,64,24,0,96,48,0,31,224, + 0,27,29,116,32,3,0,255,241,255,192,15,0,126,0,15, + 0,60,0,15,0,56,0,15,0,112,0,15,0,96,0,15, + 0,192,0,15,1,128,0,15,3,0,0,15,6,0,0,15, + 14,0,0,15,30,0,0,15,63,0,0,15,111,0,0,15, + 207,128,0,15,135,128,0,15,7,192,0,15,3,192,0,15, + 3,224,0,15,3,224,0,15,1,240,0,15,1,240,0,15, + 0,248,0,15,0,248,0,15,0,124,0,15,0,124,0,15, + 0,62,0,15,0,63,0,255,241,255,224,23,29,87,28,3, + 0,255,248,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,2,15,0,2,15,0,6, + 15,0,6,15,0,6,15,0,14,15,0,14,15,0,30,15, + 0,62,15,0,254,255,255,254,30,29,116,35,3,0,255,128, + 3,252,15,128,7,192,15,192,7,192,15,192,7,192,15,192, + 15,192,13,192,11,192,13,224,11,192,13,224,11,192,12,224, + 27,192,12,240,19,192,12,240,19,192,12,112,51,192,12,112, + 35,192,12,120,35,192,12,120,35,192,12,56,99,192,12,60, + 67,192,12,60,67,192,12,28,195,192,12,28,131,192,12,30, + 131,192,12,14,131,192,12,15,131,192,12,15,3,192,12,15, + 3,192,12,7,3,192,12,6,3,192,30,6,3,192,255,194, + 63,252,28,29,116,32,3,0,255,0,63,240,15,128,7,128, + 15,128,3,0,15,192,3,0,15,224,3,0,13,224,3,0, + 13,240,3,0,12,248,3,0,12,120,3,0,12,124,3,0, + 12,60,3,0,12,30,3,0,12,31,3,0,12,15,3,0, + 12,7,131,0,12,7,131,0,12,3,195,0,12,3,227,0, + 12,1,227,0,12,0,243,0,12,0,251,0,12,0,123,0, + 12,0,63,0,12,0,63,0,12,0,31,0,12,0,31,0, + 12,0,15,0,30,0,7,0,255,192,7,0,24,29,87,29, + 3,1,0,255,0,3,0,192,6,0,96,12,0,48,28,0, + 56,56,0,28,56,0,28,120,0,30,112,0,14,112,0,14, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,112,0,14,112,0, + 14,120,0,30,56,0,28,56,0,28,28,0,56,12,0,48, + 6,0,96,3,0,192,0,255,0,23,29,87,28,3,0,255, + 255,128,15,0,224,15,0,120,15,0,60,15,0,60,15,0, + 30,15,0,30,15,0,30,15,0,30,15,0,30,15,0,60, + 15,0,60,15,0,120,15,0,224,15,255,128,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,255,248,0,24,36,108,29,3,250,0,255,0,3, + 0,192,6,0,96,12,0,48,28,0,56,56,0,28,56,0, + 28,120,0,30,112,0,14,112,0,14,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,112,0,14,120,0,30,120,0,30,56,60, + 28,56,99,28,28,195,56,14,193,184,6,193,240,3,193,225, + 0,247,193,0,9,193,0,1,193,0,1,195,0,1,226,0, + 1,254,0,0,252,0,0,56,25,29,116,29,3,0,255,255, + 128,0,15,1,240,0,15,0,120,0,15,0,120,0,15,0, + 60,0,15,0,60,0,15,0,60,0,15,0,60,0,15,0, + 60,0,15,0,120,0,15,0,240,0,15,1,224,0,15,255, + 0,0,15,3,128,0,15,1,192,0,15,0,224,0,15,0, + 224,0,15,0,240,0,15,0,240,0,15,0,240,0,15,0, + 240,0,15,0,240,0,15,0,248,128,15,0,120,128,15,0, + 120,128,15,0,121,128,15,0,127,0,15,0,63,0,255,248, + 30,0,19,29,87,25,4,1,15,240,192,48,28,192,96,15, + 192,96,7,192,192,3,192,192,1,192,192,1,192,192,0,192, + 224,0,192,240,0,192,120,0,64,127,0,0,63,192,0,31, + 248,0,15,254,0,1,255,128,128,127,128,128,15,192,128,3, + 224,128,1,224,192,0,224,192,0,96,224,0,96,224,0,96, + 240,0,96,248,0,192,156,0,128,134,1,0,131,254,0,24, + 29,87,29,3,0,255,255,255,248,60,31,240,60,15,224,60, + 7,192,60,3,192,60,3,192,60,3,128,60,1,128,60,1, + 128,60,1,128,60,1,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,7,255,224,29,29,116,34, + 3,0,255,240,31,248,15,0,3,192,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,7,0, + 1,0,7,0,3,0,3,128,2,0,1,192,6,0,0,224, + 24,0,0,63,240,0,29,29,116,32,2,0,255,248,63,248, + 15,128,3,192,7,128,3,128,7,128,3,0,3,192,3,0, + 3,192,3,0,3,192,2,0,1,224,6,0,1,224,6,0, + 1,240,4,0,0,240,12,0,0,240,12,0,0,248,8,0, + 0,120,24,0,0,120,24,0,0,60,16,0,0,60,48,0, + 0,60,48,0,0,30,32,0,0,30,96,0,0,31,96,0, + 0,15,64,0,0,15,192,0,0,15,192,0,0,7,128,0, + 0,7,128,0,0,7,128,0,0,3,0,0,0,3,0,0, + 41,29,174,44,2,0,255,241,255,227,255,128,15,128,63,0, + 124,0,7,128,30,0,56,0,7,128,30,0,48,0,7,128, + 31,0,48,0,3,192,31,0,48,0,3,192,31,0,96,0, + 3,192,55,0,96,0,1,224,55,128,96,0,1,224,55,128, + 64,0,1,224,39,128,192,0,1,224,99,192,192,0,0,240, + 99,192,128,0,0,240,67,193,128,0,0,240,193,193,128,0, + 0,120,193,225,0,0,0,120,193,227,0,0,0,120,129,227, + 0,0,0,125,128,242,0,0,0,61,128,246,0,0,0,61, + 0,246,0,0,0,61,0,116,0,0,0,31,0,124,0,0, + 0,31,0,124,0,0,0,30,0,60,0,0,0,14,0,56, + 0,0,0,14,0,56,0,0,0,12,0,56,0,0,0,12, + 0,16,0,0,28,29,116,31,2,0,255,248,255,224,7,192, + 30,0,7,192,28,0,3,224,24,0,1,224,24,0,1,240, + 48,0,0,240,32,0,0,248,96,0,0,120,192,0,0,124, + 128,0,0,61,128,0,0,63,0,0,0,30,0,0,0,15, + 0,0,0,15,0,0,0,15,128,0,0,31,128,0,0,51, + 192,0,0,51,224,0,0,97,224,0,0,193,240,0,0,192, + 240,0,1,128,248,0,3,0,120,0,3,0,124,0,6,0, + 60,0,14,0,62,0,31,0,63,0,255,225,255,240,27,29, + 116,30,2,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,22,29,87,27,3,0,63,255, + 252,62,0,120,60,0,248,56,0,240,48,1,224,48,3,224, + 96,3,192,96,7,128,64,15,128,64,15,0,0,31,0,0, + 62,0,0,60,0,0,124,0,0,120,0,0,240,0,1,240, + 0,1,224,0,3,224,4,7,192,4,7,128,12,15,128,12, + 31,0,12,31,0,28,62,0,28,60,0,60,124,0,120,248, + 0,248,255,255,248,8,37,37,16,5,248,255,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,255, + 14,38,76,18,2,248,192,0,64,0,96,0,96,0,32,0, + 48,0,48,0,16,0,24,0,24,0,8,0,12,0,12,0, + 4,0,4,0,6,0,2,0,2,0,3,0,3,0,1,0, + 1,128,1,128,0,128,0,192,0,192,0,64,0,96,0,96, + 0,32,0,48,0,48,0,16,0,24,0,24,0,8,0,12, + 0,12,8,37,37,16,3,248,255,15,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,15,255,18,14,42, + 24,3,15,0,192,0,1,192,0,1,224,0,3,48,0,3, + 48,0,6,24,0,12,12,0,12,12,0,24,6,0,48,6, + 0,48,3,0,96,1,128,224,1,128,192,0,192,21,2,6, + 21,0,250,255,255,248,255,255,248,7,7,7,18,3,21,192, + 224,112,56,24,12,2,18,19,57,21,2,0,15,192,0,56, + 112,0,32,56,0,96,28,0,120,28,0,120,28,0,56,28, + 0,0,28,0,0,252,0,15,28,0,56,28,0,112,28,0, + 224,28,0,224,28,64,224,60,64,224,60,64,224,92,192,112, + 159,128,31,15,0,18,29,87,21,1,0,252,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,120,0,28,142,0,29, + 7,0,30,3,128,30,3,128,28,3,128,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,192,28,3,192, + 28,3,128,28,3,128,30,3,128,27,7,0,17,142,0,16, + 248,0,15,19,38,18,2,0,7,224,28,16,56,8,48,12, + 112,28,112,60,240,60,240,24,240,0,240,0,240,0,240,0, + 240,6,112,4,112,4,48,12,56,8,12,48,7,224,18,29, + 87,21,2,0,0,254,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,15,142,0,28,78,0,56,46,0,112,30,0,112,30, + 0,112,14,0,240,14,0,240,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,0,112,14,0,112,14,0,112, + 30,0,56,62,0,24,110,0,7,207,192,15,19,38,19,2, + 0,7,192,12,112,56,56,48,28,112,28,112,28,240,30,240, + 30,255,254,240,0,240,0,240,0,240,6,112,4,112,4,56, + 4,56,8,28,16,7,224,14,29,58,14,1,0,1,240,7, + 24,14,24,12,60,28,60,28,56,28,0,28,0,28,0,28, + 0,255,192,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,192,20,28,84,22,2,247,7,225,192, + 28,58,96,56,30,240,112,30,240,112,14,224,240,15,0,240, + 15,0,240,15,0,112,14,0,112,30,0,56,28,0,28,56, + 0,7,224,0,56,0,0,64,0,0,192,0,0,240,0,0, + 255,254,0,63,255,0,15,7,128,112,1,192,64,0,192,192, + 0,192,192,0,192,192,1,128,96,1,128,56,6,0,7,248, + 0,20,29,87,22,1,0,252,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,60,0,28,199,0,29,3,0,29,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,8,28, + 28,11,1,0,24,60,60,24,0,0,0,0,0,252,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,255, + 11,37,74,14,255,247,0,192,1,224,1,224,0,192,0,0, + 0,0,0,0,0,0,0,0,15,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,224,224,240,224,224,192,193,128,99,128,62,0, + 19,29,87,21,1,0,252,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,63,192,28,14,0,28,12,0,28,8,0, + 28,16,0,28,48,0,28,96,0,28,192,0,28,224,0,29, + 224,0,30,240,0,30,120,0,28,60,0,28,60,0,28,30, + 0,28,15,0,28,15,0,28,15,128,255,63,224,9,29,58, + 11,1,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,31,19,76, + 33,1,0,252,124,15,128,28,199,24,192,29,7,32,224,31, + 3,224,112,30,3,192,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,255,159,243,254,20, + 19,57,22,1,0,252,60,0,28,199,0,29,3,0,31,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,17,19, + 57,21,2,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,18,28,84, + 21,1,247,252,120,0,29,142,0,31,7,0,30,3,128,30, + 3,128,28,3,128,28,3,192,28,3,192,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,128,28,3,128, + 30,3,128,31,7,0,29,134,0,28,120,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,28,84,21,2,247,7,130,0, + 28,98,0,56,54,0,112,22,0,112,30,0,112,14,0,240, + 14,0,240,14,0,240,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,112,14,0,112,14,0,112,30,0,56,62,0, + 24,110,0,7,206,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,127, + 192,15,19,38,16,1,0,252,56,28,196,28,142,29,30,31, + 28,30,12,30,0,30,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,14,19,38, + 18,2,0,31,16,96,208,64,112,192,48,192,16,224,16,240, + 0,126,0,63,128,31,224,3,248,128,252,192,28,192,12,224, + 12,224,12,240,8,140,24,131,224,12,27,54,14,1,0,4, + 0,4,0,4,0,4,0,4,0,12,0,12,0,28,0,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,16,28,16,28,16,28,48,30, + 32,15,224,7,192,20,19,57,22,1,0,252,31,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,7,128,28,7,128,28,15,128,12,11,128,14,51, + 128,3,195,240,20,19,57,21,1,0,255,15,240,60,3,128, + 28,3,0,28,3,0,14,2,0,14,2,0,15,6,0,7, + 4,0,7,4,0,3,140,0,3,136,0,3,200,0,1,216, + 0,1,208,0,0,240,0,0,240,0,0,96,0,0,96,0, + 0,96,0,30,19,76,31,1,0,255,31,243,252,60,7,128, + 224,28,3,128,192,28,3,128,192,14,3,192,128,14,3,192, + 128,15,7,193,128,7,5,225,0,7,4,225,0,3,140,227, + 0,3,136,114,0,1,200,114,0,1,216,118,0,1,240,60, + 0,0,240,60,0,0,240,60,0,0,96,24,0,0,96,24, + 0,0,32,24,0,18,19,57,21,1,0,255,31,192,30,14, + 0,30,12,0,14,8,0,15,24,0,7,16,0,3,160,0, + 3,224,0,1,192,0,1,224,0,1,224,0,1,112,0,3, + 120,0,2,56,0,4,28,0,12,28,0,24,14,0,24,15, + 0,254,63,192,20,28,84,22,1,247,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,14,19, + 38,18,2,0,255,252,224,60,192,56,192,120,128,240,128,224, + 129,224,1,192,3,128,7,128,7,0,15,0,30,4,28,4, + 60,4,56,12,112,12,240,28,255,252,10,37,74,17,4,248, + 1,192,6,0,12,0,8,0,24,0,24,0,24,0,28,0, + 28,0,12,0,14,0,14,0,14,0,6,0,6,0,6,0, + 4,0,8,0,240,0,24,0,12,0,4,0,6,0,6,0, + 14,0,14,0,14,0,12,0,28,0,28,0,24,0,24,0, + 24,0,8,0,12,0,6,0,1,192,2,38,38,12,5,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,10,37,74,17,3,248,224,0,24,0, + 12,0,4,0,6,0,6,0,6,0,14,0,14,0,12,0, + 28,0,28,0,28,0,24,0,24,0,24,0,8,0,4,0, + 3,192,6,0,8,0,24,0,24,0,24,0,28,0,28,0, + 28,0,12,0,14,0,14,0,6,0,6,0,6,0,4,0, + 12,0,24,0,224,0,23,8,24,27,2,7,30,0,8,127, + 192,4,255,240,2,199,254,2,128,255,134,128,63,254,192,15, + 252,96,1,248,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,11,0,0,5,28,28,11,3, + 247,112,248,248,248,112,0,32,32,32,32,32,32,112,112,112, + 112,112,112,112,112,248,248,248,248,248,248,248,112,14,28,56, + 24,5,252,0,128,0,128,0,128,0,128,0,128,7,224,12, + 152,24,136,56,140,112,156,112,188,240,188,240,152,240,128,240, + 128,240,128,240,128,240,132,112,132,112,132,56,132,24,136,14, + 144,3,224,0,128,0,128,0,128,0,128,23,28,84,30,3, + 0,0,3,240,0,6,24,0,28,12,0,24,14,0,48,62, + 0,112,62,0,112,62,0,112,24,0,112,0,0,240,0,0, + 240,0,0,240,0,31,240,0,32,255,128,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,224,0, + 0,224,0,62,224,2,67,192,2,128,224,4,129,127,60,194, + 63,248,60,15,240,20,20,60,24,2,4,64,0,32,225,248, + 112,119,254,224,62,7,192,24,1,128,48,0,192,48,0,192, + 96,0,96,96,0,96,96,0,96,96,0,96,96,0,96,96, + 0,96,48,0,192,48,0,192,24,1,128,62,7,192,119,254, + 224,225,248,112,64,0,32,22,28,84,24,1,0,255,131,252, + 62,0,112,30,0,96,14,0,64,15,0,64,15,0,128,7, + 128,128,7,129,0,3,193,0,3,194,0,1,226,0,1,228, + 0,0,252,0,0,248,0,0,120,0,31,255,192,0,120,0, + 0,120,0,31,255,192,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,7,255, + 128,2,37,37,12,5,249,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,0,0,0,0,0,0,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,15,36,72,26, + 4,248,7,192,12,32,24,48,48,120,48,120,48,112,56,0, + 56,0,28,0,30,0,15,0,31,192,35,224,97,240,64,248, + 192,60,192,30,192,14,224,6,240,6,120,6,60,4,31,12, + 15,152,7,224,3,224,0,224,0,112,0,112,0,56,56,56, + 60,56,56,48,48,48,24,96,7,128,12,4,8,18,3,22, + 96,96,240,240,240,240,96,96,30,29,116,34,2,1,0,127, + 248,0,1,192,14,0,3,0,3,0,4,0,0,128,8,0, + 0,64,16,7,196,32,32,24,108,16,32,48,60,16,64,112, + 28,8,64,224,12,8,192,224,12,8,129,224,4,4,129,224, + 0,4,129,224,0,4,129,224,0,4,129,224,0,4,129,224, + 0,4,129,224,4,4,192,224,4,8,64,224,8,8,64,112, + 8,8,32,112,24,16,48,24,48,48,16,15,192,32,8,0, + 0,64,4,0,0,128,3,0,3,0,1,192,14,0,0,127, + 248,0,11,14,28,16,3,14,60,0,102,0,67,0,99,0, + 99,0,7,0,27,0,99,0,195,0,195,32,231,32,121,192, + 0,0,127,192,10,16,32,19,4,1,24,64,48,192,32,128, + 97,128,97,0,195,0,195,0,195,0,195,0,195,0,195,0, + 97,128,97,128,48,128,16,64,8,0,20,8,24,24,2,7, + 255,255,240,255,255,240,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,48,0,0,48,10,2,4,14,2,9,255,192, + 255,192,30,29,116,34,2,1,0,127,248,0,1,192,14,0, + 3,0,3,0,4,0,0,128,8,0,0,64,19,255,192,32, + 32,112,240,48,32,112,120,16,64,112,120,8,64,112,120,8, + 192,112,120,8,128,112,112,4,128,112,224,4,128,127,128,4, + 128,112,224,4,128,112,112,4,128,112,112,4,128,112,120,4, + 128,112,120,8,64,112,120,136,64,112,120,136,32,112,56,144, + 32,112,57,16,19,252,30,32,8,0,0,64,4,0,0,128, + 3,0,3,0,1,192,14,0,0,127,248,0,11,2,4,19, + 4,23,255,224,255,224,11,10,20,23,6,18,31,0,96,128, + 64,64,128,32,128,32,128,32,128,32,64,64,96,128,31,0, + 35,28,140,39,2,254,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,192,255,255,255, + 255,192,11,17,34,18,4,11,31,0,99,192,129,192,128,224, + 192,224,224,224,112,224,1,192,1,128,3,0,12,0,24,0, + 32,32,64,32,64,96,255,224,255,224,11,17,34,18,5,11, + 31,0,97,192,192,192,224,224,240,224,0,224,0,192,97,128, + 126,0,1,128,0,192,0,224,224,224,240,224,224,192,129,192, + 127,0,7,7,7,18,8,21,6,14,28,56,48,96,128,21, + 30,90,25,3,245,96,6,0,224,15,0,240,15,0,240,15, + 0,240,15,0,224,15,0,224,15,0,224,15,0,224,15,0, + 224,15,0,224,6,0,64,6,0,64,6,0,64,6,0,96, + 12,8,96,14,24,88,59,248,79,241,248,67,224,240,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,224,0,0, + 224,0,0,240,0,0,240,0,0,112,0,0,112,0,0,17, + 35,105,23,3,250,15,255,128,63,140,0,127,140,0,127,140, + 0,255,140,0,255,140,0,255,140,0,255,140,0,255,140,0, + 127,140,0,127,140,0,63,140,0,7,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,5,5, + 5,11,3,10,112,248,248,248,112,8,8,8,18,5,248,48, + 32,60,6,7,7,15,252,9,17,34,19,5,11,4,0,12, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,10, + 14,28,16,3,14,30,0,51,0,97,128,192,192,192,192,192, + 192,192,192,192,192,193,192,97,128,35,0,30,0,0,0,255, + 192,10,16,32,20,5,1,134,0,195,0,65,0,97,128,32, + 192,48,192,48,192,48,192,48,192,48,192,48,192,97,128,97, + 128,67,0,130,0,4,0,27,28,112,35,5,0,4,0,12, + 0,12,0,8,0,28,0,24,0,252,0,16,0,28,0,32, + 0,28,0,96,0,28,0,64,0,28,0,192,0,28,0,128, + 0,28,1,128,0,28,3,0,0,28,2,0,0,28,6,7, + 0,28,4,15,0,28,12,15,0,28,24,23,0,255,144,23, + 0,0,48,39,0,0,32,71,0,0,96,71,0,0,192,135, + 0,0,129,7,0,1,129,255,224,1,0,7,0,3,0,7, + 0,6,0,7,0,6,0,7,0,12,0,63,224,27,28,112, + 35,5,0,4,0,4,0,12,0,12,0,28,0,8,0,252, + 0,16,0,28,0,48,0,28,0,32,0,28,0,96,0,28, + 0,64,0,28,0,128,0,28,1,128,0,28,1,0,0,28, + 3,31,0,28,6,99,192,28,4,129,192,28,12,128,224,28, + 8,192,224,255,152,224,224,0,48,240,224,0,32,1,192,0, + 96,1,128,0,64,3,0,0,192,12,0,1,128,24,0,1, + 0,32,32,3,0,64,32,2,0,64,96,6,0,255,224,12, + 0,255,224,28,28,112,36,5,0,31,0,6,0,97,192,4, + 0,192,224,8,0,224,224,24,0,240,224,16,0,0,192,48, + 0,1,128,96,0,126,0,64,0,97,128,192,0,0,192,128, + 0,0,225,128,0,96,227,3,128,240,226,3,128,224,230,7, + 128,129,196,7,128,67,136,11,128,62,24,19,128,0,16,19, + 128,0,48,35,128,0,96,99,128,0,64,67,128,0,192,131, + 128,0,128,255,240,1,128,3,128,3,0,3,128,2,0,3, + 128,6,0,3,128,4,0,31,240,15,28,56,19,1,247,3, + 128,7,192,7,192,7,192,3,128,0,0,3,128,4,64,8, + 32,8,32,8,96,0,96,0,192,1,128,7,0,14,0,28, + 0,56,0,120,0,240,60,240,62,240,62,240,6,240,6,112, + 6,120,12,28,24,7,224,29,38,152,32,2,0,0,224,0, + 0,0,240,0,0,0,112,0,0,0,56,0,0,0,12,0, + 0,0,6,0,0,0,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,6,0,0,0,7,0,0,0,7,0, + 0,0,15,128,0,0,15,128,0,0,15,128,0,0,31,192, + 0,0,19,192,0,0,51,192,0,0,49,224,0,0,33,224, + 0,0,97,224,0,0,96,240,0,0,64,240,0,0,192,240, + 0,0,192,120,0,0,128,120,0,1,128,120,0,1,255,252, + 0,1,0,60,0,3,0,28,0,3,0,30,0,6,0,30, + 0,6,0,15,0,6,0,15,0,14,0,15,0,30,0,15, + 128,255,224,255,248,29,38,152,32,2,0,0,0,48,0,0, + 0,112,0,0,0,240,0,0,0,224,0,0,1,128,0,0, + 3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0, + 15,128,0,0,15,128,0,0,15,128,0,0,31,192,0,0, + 19,192,0,0,51,192,0,0,49,224,0,0,33,224,0,0, + 97,224,0,0,96,240,0,0,64,240,0,0,192,240,0,0, + 192,120,0,0,128,120,0,1,128,120,0,1,255,252,0,3, + 0,60,0,3,0,30,0,3,0,30,0,6,0,30,0,6, + 0,15,0,6,0,15,0,14,0,15,0,31,0,31,192,255, + 224,255,248,29,38,152,32,2,0,0,6,0,0,0,7,0, + 0,0,15,128,0,0,29,128,0,0,56,192,0,0,96,48, + 0,0,128,8,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,6,0,0,0,7,0,0,0,7,0,0,0,15,128, + 0,0,15,128,0,0,15,128,0,0,31,192,0,0,19,192, + 0,0,51,192,0,0,49,224,0,0,33,224,0,0,97,224, + 0,0,96,240,0,0,64,240,0,0,192,240,0,0,192,120, + 0,0,128,120,0,1,128,120,0,1,255,252,0,1,0,60, + 0,3,0,28,0,3,0,30,0,6,0,30,0,6,0,15, + 0,6,0,15,0,14,0,15,0,30,0,15,128,255,224,255, + 248,29,37,148,32,2,0,0,60,8,0,0,127,24,0,0, + 207,240,0,0,129,240,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0, + 7,0,0,0,7,0,0,0,15,128,0,0,15,128,0,0, + 15,128,0,0,31,192,0,0,19,192,0,0,51,192,0,0, + 49,224,0,0,33,224,0,0,97,224,0,0,96,240,0,0, + 64,240,0,0,192,240,0,0,192,120,0,0,128,120,0,1, + 128,120,0,1,255,252,0,3,0,60,0,3,0,30,0,3, + 0,30,0,6,0,30,0,6,0,15,0,6,0,15,0,14, + 0,15,0,31,0,31,192,255,224,255,248,29,37,148,32,2, + 0,0,96,48,0,0,240,120,0,0,240,120,0,0,96,48, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,6,0,0,0,7,0,0,0,7,0, + 0,0,15,128,0,0,15,128,0,0,31,128,0,0,31,192, + 0,0,19,192,0,0,51,192,0,0,49,224,0,0,33,224, + 0,0,97,224,0,0,96,240,0,0,64,240,0,0,192,112, + 0,0,192,120,0,0,128,120,0,1,128,56,0,1,255,252, + 0,1,0,28,0,3,0,28,0,3,0,30,0,6,0,30, + 0,6,0,15,0,6,0,15,0,14,0,15,0,31,0,15, + 128,255,224,255,248,29,39,156,32,2,0,0,15,0,0,0, + 16,128,0,0,32,64,0,0,32,64,0,0,32,64,0,0, + 32,64,0,0,16,128,0,0,15,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,6,0,0,0,7,0,0,0, + 7,0,0,0,15,128,0,0,15,128,0,0,31,128,0,0, + 31,192,0,0,19,192,0,0,51,192,0,0,51,224,0,0, + 33,224,0,0,97,224,0,0,97,240,0,0,64,240,0,0, + 192,240,0,0,192,248,0,0,128,120,0,1,128,120,0,1, + 255,252,0,1,0,60,0,3,0,60,0,2,0,62,0,6, + 0,30,0,6,0,31,0,6,0,31,0,14,0,15,0,30, + 0,15,128,255,224,255,248,37,29,145,41,1,0,0,3,255, + 255,248,0,0,124,0,248,0,0,124,0,56,0,0,124,0, + 56,0,0,252,0,24,0,1,188,0,24,0,1,188,0,8, + 0,3,60,0,8,0,3,60,4,8,0,6,60,4,0,0, + 6,60,4,0,0,12,60,4,0,0,12,60,12,0,0,24, + 60,28,0,0,24,63,252,0,0,48,60,28,0,0,48,60, + 12,0,0,96,60,4,0,0,96,60,4,8,0,255,252,4, + 8,0,128,60,4,8,1,128,60,0,8,1,0,60,0,24, + 3,0,60,0,24,2,0,60,0,24,6,0,60,0,56,14, + 0,60,0,120,31,0,60,1,248,255,225,255,255,248,22,38, + 114,28,3,248,1,255,12,7,1,140,14,0,252,28,0,124, + 24,0,60,56,0,60,56,0,28,112,0,28,112,0,12,112, + 0,12,240,0,8,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,112,0,4, + 112,0,4,120,0,12,56,0,8,56,0,8,28,0,16,12, + 0,16,14,0,32,3,0,192,1,247,128,0,56,0,0,32, + 0,0,56,0,0,14,0,0,7,0,0,7,0,0,7,0, + 1,14,0,0,252,0,23,38,114,29,3,0,1,128,0,1, + 192,0,1,224,0,0,224,0,0,48,0,0,24,0,0,12, + 0,0,0,0,0,0,0,255,255,254,15,0,62,15,0,14, + 15,0,14,15,0,6,15,0,6,15,0,2,15,0,2,15, + 1,2,15,1,0,15,1,0,15,1,0,15,3,0,15,7, + 0,15,255,0,15,7,0,15,3,0,15,1,0,15,1,2, + 15,1,2,15,1,2,15,0,2,15,0,6,15,0,6,15, + 0,6,15,0,14,15,0,30,15,0,126,255,255,254,23,38, + 114,29,3,0,0,0,192,0,1,224,0,3,192,0,3,128, + 0,6,0,0,12,0,0,8,0,0,0,0,0,0,0,255, + 255,254,15,0,62,15,0,14,15,0,14,15,0,6,15,0, + 6,15,0,2,15,0,2,15,1,2,15,1,0,15,1,0, + 15,1,0,15,3,0,15,7,0,15,255,0,15,7,0,15, + 3,0,15,1,0,15,1,2,15,1,2,15,1,2,15,0, + 2,15,0,6,15,0,6,15,0,6,15,0,14,15,0,30, + 15,0,126,255,255,254,23,38,114,29,3,0,0,8,0,0, + 28,0,0,62,0,0,55,0,0,99,128,1,128,192,2,0, + 32,0,0,0,0,0,0,255,255,254,15,0,62,15,0,14, + 15,0,14,15,0,6,15,0,6,15,0,2,15,0,2,15, + 1,2,15,1,0,15,1,0,15,1,0,15,3,0,15,7, + 0,15,255,0,15,7,0,15,3,0,15,1,0,15,1,2, + 15,1,2,15,1,2,15,0,2,15,0,6,15,0,6,15, + 0,6,15,0,14,15,0,30,15,0,126,255,255,254,23,37, + 111,29,3,0,1,128,192,3,193,224,3,193,224,1,128,192, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,254,15, + 0,62,15,0,14,15,0,14,15,0,6,15,0,6,15,0, + 2,15,0,2,15,1,2,15,1,0,15,1,0,15,3,0, + 15,3,0,15,7,0,15,255,0,15,7,0,15,3,0,15, + 3,0,15,1,2,15,1,2,15,1,2,15,0,2,15,0, + 6,15,0,6,15,0,6,15,0,14,15,0,30,15,0,126, + 255,255,254,12,38,76,17,3,0,192,0,224,0,112,0,56, + 0,24,0,12,0,2,0,0,0,0,0,255,240,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,255,240,12,38,76,17,3,0,0,48,0,112,0, + 224,1,192,3,128,2,0,4,0,0,0,0,0,255,240,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,255,240,12,38,76,17,3,0,6,0,14, + 0,15,0,27,128,48,192,96,96,128,16,0,0,0,0,255, + 240,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,255,240,12,37,74,15,2,0,96, + 96,240,240,240,240,96,96,0,0,0,0,0,0,0,0,255, + 240,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,255,240,27,29,116,32,3,0,255, + 255,192,0,15,0,112,0,15,0,28,0,15,0,14,0,15, + 0,7,0,15,0,7,128,15,0,3,128,15,0,3,192,15, + 0,3,192,15,0,1,192,15,0,1,224,15,0,1,224,15, + 0,1,224,255,240,1,224,15,0,1,224,15,0,1,224,15, + 0,1,224,15,0,1,224,15,0,1,224,15,0,3,192,15, + 0,3,192,15,0,3,192,15,0,3,128,15,0,7,0,15, + 0,7,0,15,0,14,0,15,0,28,0,15,0,112,0,255, + 255,192,0,28,37,148,32,3,0,0,60,8,0,0,127,152, + 0,0,71,240,0,0,65,240,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,0,63,240,15,128,7, + 128,15,128,3,0,15,192,3,0,15,224,3,0,13,224,3, + 0,13,240,3,0,12,248,3,0,12,120,3,0,12,124,3, + 0,12,60,3,0,12,30,3,0,12,31,3,0,12,15,3, + 0,12,7,131,0,12,7,131,0,12,3,195,0,12,3,227, + 0,12,1,227,0,12,0,243,0,12,0,251,0,12,0,123, + 0,12,0,63,0,12,0,63,0,12,0,31,0,12,0,31, + 0,12,0,15,0,30,0,7,0,255,192,7,0,24,38,114, + 29,3,1,3,128,0,3,192,0,1,192,0,0,224,0,0, + 112,0,0,48,0,0,8,0,0,0,0,0,0,0,0,255, + 0,3,0,192,6,0,96,12,0,48,28,0,56,56,0,28, + 56,0,28,120,0,30,112,0,14,112,0,14,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,240,0,15,240,0,15,112,0,14,112,0,14,120,0,30, + 56,0,28,56,0,28,28,0,56,12,0,48,6,0,96,3, + 0,192,0,255,0,24,38,114,29,3,1,0,1,192,0,3, + 192,0,3,128,0,7,0,0,14,0,0,12,0,0,16,0, + 0,0,0,0,0,0,0,255,0,3,0,192,6,0,96,12, + 0,48,28,0,56,56,0,28,56,0,28,120,0,30,112,0, + 14,112,0,14,240,0,15,240,0,15,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,112, + 0,14,112,0,14,120,0,30,56,0,28,56,0,28,28,0, + 56,12,0,48,6,0,96,3,0,192,0,255,0,24,38,114, + 29,3,0,0,24,0,0,24,0,0,60,0,0,126,0,0, + 195,0,1,129,128,6,0,96,0,0,0,0,0,0,0,255, + 0,3,0,192,6,0,96,12,0,48,28,0,56,56,0,28, + 56,0,28,120,0,30,112,0,14,112,0,14,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,240,0,15,240,0,15,112,0,14,112,0,14,120,0,30, + 56,0,28,56,0,28,28,0,56,12,0,48,6,0,96,3, + 0,192,0,255,0,24,37,111,29,3,0,1,240,32,3,252, + 64,2,63,192,2,7,128,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,0,3,0,192,6,0,96,12,0,48,28, + 0,56,56,0,28,56,0,28,120,0,30,112,0,14,112,0, + 14,240,0,15,240,0,15,240,0,15,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,112,0,14,112, + 0,14,120,0,30,56,0,28,56,0,28,28,0,56,12,0, + 48,6,0,96,3,0,192,0,255,0,24,37,111,29,3,0, + 1,129,128,3,195,192,3,195,192,1,129,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,0,3,0,192,6,0, + 96,12,0,48,28,0,56,56,0,28,56,0,28,120,0,30, + 112,0,14,112,0,14,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,112,0,14,112,0,14,120,0,30,56,0,28,56,0,28, + 28,0,56,12,0,48,6,0,96,3,0,192,0,255,0,25, + 25,100,39,7,254,192,0,1,128,224,0,3,0,112,0,6, + 0,56,0,12,0,28,0,24,0,14,0,48,0,7,0,96, + 0,3,128,192,0,1,193,128,0,0,227,0,0,0,118,0, + 0,0,60,0,0,0,28,0,0,0,62,0,0,0,103,0, + 0,0,195,128,0,1,129,192,0,3,0,224,0,6,0,112, + 0,12,0,56,0,24,0,28,0,48,0,14,0,96,0,7, + 0,192,0,3,128,128,0,1,0,24,29,87,29,3,1,0, + 255,131,3,0,230,6,0,124,12,0,60,28,0,56,56,0, + 60,56,0,124,120,0,254,112,0,206,112,1,142,240,3,15, + 240,6,15,240,14,15,240,12,15,240,24,15,240,48,15,240, + 96,15,240,224,15,240,192,15,113,128,14,115,0,14,126,0, + 30,62,0,28,60,0,28,28,0,56,60,0,48,62,0,96, + 103,0,192,193,255,0,29,38,152,34,3,1,0,112,0,0, + 0,112,0,0,0,56,0,0,0,28,0,0,0,14,0,0, + 0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0, + 255,240,31,248,15,0,3,192,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,7,0,1,0, + 7,0,3,0,3,128,2,0,1,192,6,0,0,224,24,0, + 0,63,240,0,29,38,152,34,3,1,0,0,56,0,0,0, + 120,0,0,0,240,0,0,0,224,0,0,1,128,0,0,3, + 0,0,0,2,0,0,0,0,0,0,0,0,0,0,255,240, + 31,248,15,0,3,192,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,7,0,1,0,7,0, + 3,0,3,128,2,0,1,192,6,0,0,224,24,0,0,63, + 240,0,29,38,152,34,3,0,0,3,0,0,0,7,0,0, + 0,7,128,0,0,13,192,0,0,24,96,0,0,96,48,0, + 0,192,8,0,0,0,0,0,0,0,0,0,255,240,31,248, + 15,0,3,192,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,7,0,3,0,7,0,3,0, + 3,128,6,0,1,192,14,0,0,224,24,0,0,63,240,0, + 29,37,148,34,3,0,0,48,48,0,0,120,120,0,0,120, + 120,0,0,48,48,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,240,31,248,15,0,3,192,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,7,0,1,0,7,0,3,0,3,128,2,0,1,192, + 6,0,0,224,24,0,0,63,240,0,27,38,152,30,2,0, + 0,0,48,0,0,0,112,0,0,0,224,0,0,0,192,0, + 0,1,128,0,0,3,0,0,0,2,0,0,0,0,0,0, + 0,0,0,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,23,29,87,28,3,0,255,248, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,255,128, + 15,0,224,15,0,120,15,0,60,15,0,60,15,0,30,15, + 0,30,15,0,30,15,0,30,15,0,30,15,0,60,15,0, + 60,15,0,120,15,0,224,15,255,128,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,255,248,0,19,29,87,22,1,0,0,252,0,3,14, + 0,6,7,0,14,7,128,12,7,128,28,7,128,28,7,128, + 28,7,0,28,14,0,28,28,0,28,224,0,28,24,0,28, + 6,0,28,7,0,28,3,128,28,3,128,28,1,192,28,1, + 192,28,1,192,28,1,224,28,1,224,28,1,224,28,1,224, + 28,225,192,29,225,192,29,225,192,28,131,128,28,199,0,252, + 60,0,18,28,84,21,2,1,112,0,0,120,0,0,60,0, + 0,28,0,0,6,0,0,3,0,0,1,0,0,0,0,0, + 0,0,0,15,192,0,56,112,0,32,56,0,96,28,0,120, + 28,0,120,28,0,56,28,0,0,28,0,0,252,0,15,28, + 0,56,28,0,112,28,0,224,28,0,224,28,64,224,60,64, + 224,60,64,224,92,192,112,159,128,31,15,0,18,28,84,21, + 2,1,0,28,0,0,60,0,0,120,0,0,112,0,0,192, + 0,1,128,0,1,0,0,0,0,0,0,0,0,15,192,0, + 56,112,0,32,56,0,96,28,0,120,28,0,120,28,0,56, + 28,0,0,28,0,0,252,0,15,28,0,56,28,0,112,28, + 0,224,28,0,224,28,64,224,60,64,224,60,64,224,92,192, + 112,159,128,31,15,0,18,28,84,21,2,0,3,128,0,3, + 128,0,7,128,0,6,192,0,12,96,0,24,48,0,32,24, + 0,0,0,0,0,0,0,15,192,0,56,112,0,32,56,0, + 96,28,0,120,28,0,120,28,0,56,28,0,0,28,0,0, + 252,0,15,28,0,56,28,0,112,28,0,224,28,0,224,28, + 64,224,60,64,224,60,64,224,92,192,112,159,128,31,15,0, + 18,27,81,21,2,0,30,8,0,63,136,0,39,248,0,64, + 240,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192, + 0,56,112,0,32,56,0,96,28,0,120,28,0,120,28,0, + 56,28,0,0,28,0,0,252,0,15,28,0,56,28,0,112, + 28,0,224,28,0,224,28,64,224,60,64,224,60,64,224,92, + 192,112,159,128,31,15,0,18,27,81,21,2,0,56,48,0, + 120,120,0,120,120,0,56,48,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,192,0,24,112,0,32,56,0,96,28, + 0,112,28,0,120,28,0,56,28,0,0,28,0,0,252,0, + 15,28,0,56,28,0,112,28,0,224,28,0,224,28,64,224, + 60,64,224,60,64,224,92,192,112,159,128,31,15,0,18,28, + 84,21,2,0,7,128,0,8,64,0,16,32,0,16,32,0, + 16,32,0,8,64,0,7,128,0,0,0,0,0,0,0,15, + 192,0,56,112,0,32,56,0,96,28,0,112,28,0,120,28, + 0,56,28,0,0,28,0,0,252,0,15,28,0,56,28,0, + 112,28,0,224,28,0,224,28,64,224,60,64,224,92,64,224, + 156,192,112,159,128,31,15,0,25,19,76,29,2,0,15,193, + 240,0,56,115,28,0,32,30,14,0,96,30,7,0,120,28, + 7,0,120,28,7,0,56,28,7,128,0,28,7,128,3,255, + 255,128,28,28,0,0,112,28,0,0,112,28,0,0,224,28, + 1,128,224,28,1,0,224,62,1,0,224,46,1,0,224,70, + 2,0,112,131,4,0,31,0,248,0,15,27,54,18,2,248, + 7,224,28,16,56,8,48,12,112,28,112,60,240,60,240,24, + 240,0,240,0,240,0,240,0,240,6,112,4,112,4,48,12, + 56,8,28,48,7,224,1,0,2,0,1,192,0,96,0,112, + 0,112,8,240,7,192,15,28,56,19,2,1,56,0,60,0, + 28,0,14,0,7,0,3,0,0,128,0,0,0,0,7,192, + 12,112,56,56,48,28,112,28,112,28,240,30,240,30,255,254, + 240,0,240,0,240,0,240,2,112,4,112,4,56,4,56,8, + 28,16,7,224,15,28,56,19,2,1,0,28,0,60,0,56, + 0,112,0,224,0,192,1,0,0,0,0,0,7,192,12,112, + 56,56,48,28,112,28,112,28,240,30,240,30,255,254,240,0, + 240,0,240,0,240,2,112,4,112,4,56,4,56,8,28,16, + 7,224,15,28,56,19,2,0,1,128,3,128,3,192,7,192, + 6,96,8,48,16,8,0,0,0,0,7,192,12,112,56,56, + 48,28,112,28,112,28,240,30,240,30,255,254,240,0,240,0, + 240,0,240,6,112,4,112,4,56,4,56,8,28,16,7,224, + 15,27,54,19,2,0,24,24,60,60,60,60,24,24,0,0, + 0,0,0,0,0,0,7,192,12,112,56,56,48,28,112,28, + 112,28,240,14,240,14,255,254,240,0,240,0,240,0,240,2, + 112,4,112,4,56,4,56,8,28,16,7,224,10,28,56,11, + 0,0,192,0,224,0,224,0,112,0,24,0,12,0,4,0, + 0,0,0,0,126,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,127,192,10,28,56,11,1,0, + 0,192,1,192,3,128,7,0,6,0,12,0,16,0,0,0, + 0,0,252,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,255,128,11,28,56,11,0,0,12,0, + 12,0,30,0,31,0,51,0,96,128,128,96,0,0,0,0, + 126,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,127,192,11,26,52,13,1,0,96,192,241,224, + 241,224,96,192,0,0,0,0,0,0,62,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,63,192, + 17,29,87,21,2,0,30,4,0,15,12,0,7,176,0,3, + 224,0,1,224,0,6,224,0,12,240,0,16,120,0,0,56, + 0,0,28,0,3,254,0,12,62,0,24,30,0,56,15,0, + 112,15,0,112,7,0,240,7,0,240,7,128,240,7,128,240, + 7,128,240,7,0,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,20,26,78, + 22,1,0,3,225,0,7,254,0,4,126,0,0,0,0,0, + 0,0,0,0,0,0,0,0,252,60,0,28,199,0,29,3, + 0,31,3,128,30,3,128,30,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,159, + 240,17,28,84,21,2,1,56,0,0,60,0,0,30,0,0, + 14,0,0,3,0,0,1,128,0,0,128,0,0,0,0,0, + 0,0,3,224,0,12,56,0,24,28,0,56,14,0,112,14, + 0,112,7,0,240,7,0,240,7,0,240,7,128,240,7,128, + 240,7,128,240,7,0,240,7,0,112,7,0,112,14,0,56, + 14,0,24,28,0,12,56,0,3,224,0,17,28,84,21,2, + 1,0,28,0,0,28,0,0,56,0,0,112,0,0,96,0, + 0,192,0,1,128,0,0,0,0,0,0,0,3,224,0,12, + 56,0,24,28,0,56,14,0,112,14,0,112,7,0,240,7, + 0,240,7,0,240,7,128,240,7,128,240,7,128,240,7,0, + 240,7,0,112,7,0,112,14,0,56,14,0,24,28,0,12, + 56,0,3,224,0,17,28,84,21,2,0,1,128,0,1,192, + 0,3,192,0,3,96,0,6,32,0,12,16,0,16,12,0, + 0,0,0,0,0,0,3,224,0,12,56,0,24,28,0,56, + 14,0,112,14,0,112,7,0,240,7,0,240,7,0,240,7, + 128,240,7,128,240,7,128,240,7,0,240,7,0,112,7,0, + 112,14,0,56,14,0,24,28,0,12,56,0,3,224,0,17, + 27,81,21,2,0,15,4,0,31,204,0,19,248,0,16,240, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,224,0, + 12,56,0,24,28,0,56,14,0,112,14,0,112,7,0,240, + 7,0,240,7,0,240,7,128,240,7,128,240,7,128,240,7, + 0,240,7,0,112,7,0,112,14,0,56,14,0,24,28,0, + 12,56,0,3,224,0,17,27,81,21,2,0,24,24,0,60, + 60,0,60,60,0,24,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,35,26,130, + 39,2,254,0,0,224,0,0,0,1,240,0,0,0,1,240, + 0,0,0,1,240,0,0,0,0,224,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,255,255,224,255,255,255,255,224,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0, + 0,0,1,240,0,0,0,1,240,0,0,0,1,240,0,0, + 0,0,224,0,0,17,19,57,21,2,0,3,225,0,12,59, + 0,24,30,0,56,14,0,112,14,0,112,31,0,240,55,0, + 240,103,0,240,199,128,240,135,128,241,7,128,242,7,0,244, + 7,0,124,7,0,120,14,0,56,14,0,120,28,0,76,56, + 0,131,224,0,20,28,84,22,1,1,14,0,0,15,0,0, + 7,0,0,3,128,0,1,192,0,0,64,0,0,32,0,0, + 0,0,0,0,0,252,31,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,7,128,28, + 7,128,28,15,128,12,11,128,14,51,128,3,195,240,20,28, + 84,22,1,1,0,7,0,0,15,0,0,30,0,0,24,0, + 0,48,0,0,96,0,0,64,0,0,0,0,0,0,0,252, + 31,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,7,128,28,7,128,28,15,128,12, + 11,128,14,51,128,3,195,240,20,28,84,22,1,0,0,96, + 0,0,224,0,0,240,0,1,176,0,3,24,0,2,4,0, + 4,2,0,0,0,0,0,0,0,252,31,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,128,28,15,128,12,11,128,14,51,128,3, + 195,240,20,27,81,22,1,0,6,6,0,15,15,0,15,15, + 0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0, + 252,15,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,7,128,28,7,128,28,15,128, + 12,11,128,14,51,128,3,195,240,20,37,111,22,1,248,0, + 3,0,0,7,0,0,15,0,0,28,0,0,24,0,0,48, + 0,0,0,0,0,0,0,0,0,0,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,18,38, + 114,21,1,246,12,0,0,60,0,0,252,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 30,0,28,127,0,28,199,128,29,3,128,31,3,192,30,3, + 192,30,3,128,28,3,128,28,3,128,28,7,0,28,7,0, + 28,6,0,28,12,0,28,28,0,28,24,0,28,48,0,28, + 192,0,29,128,0,30,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 56,0,0,192,0,0,19,36,108,21,1,247,3,6,0,7, + 143,0,7,143,0,3,6,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,143,224,30,3,128,30,1,0,14,3,0, + 14,2,0,7,2,0,7,2,0,7,6,0,3,132,0,3, + 132,0,3,140,0,1,200,0,1,200,0,1,200,0,0,240, + 0,0,240,0,0,240,0,0,96,0,0,96,0,0,96,0, + 0,64,0,0,64,0,48,64,0,120,64,0,120,128,0,121, + 128,0,59,0,0,30,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 28 + Calculated Max Values w=35 h=38 x= 5 y=11 dx=39 dy= 0 ascent=30 len=170 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =28 descent= 0 + X Font ascent =28 descent= 0 + Max Font ascent =30 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29n[1201] U8G_SECTION(".progmem.u8g_font_osr29n") = { + 0,107,51,223,244,28,0,0,0,0,42,57,0,30,248,28, + 0,15,17,34,21,3,11,3,128,3,192,3,128,3,128,225, + 142,241,30,249,62,29,112,3,128,3,128,29,112,249,62,241, + 30,227,142,3,128,3,192,3,128,35,34,170,39,2,250,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,255, + 255,255,255,224,255,255,255,255,224,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,5,12,12,11,3,249,112, + 240,248,248,24,8,8,16,16,32,32,64,10,2,4,14,2, + 9,255,192,255,192,5,5,5,11,3,0,112,248,248,248,112, + 14,38,76,18,2,248,0,12,0,12,0,12,0,8,0,24, + 0,24,0,16,0,48,0,48,0,32,0,96,0,96,0,64, + 0,192,0,192,0,128,1,128,1,128,1,0,3,0,3,0, + 2,0,6,0,6,0,4,0,12,0,12,0,8,0,24,0, + 24,0,16,0,48,0,48,0,32,0,96,0,96,0,64,0, + 192,0,20,28,84,24,2,0,1,248,0,7,12,0,12,7, + 0,28,3,128,24,1,128,56,1,192,56,1,192,112,0,224, + 112,0,224,112,0,224,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,112,0,224,112,0,224,112,0,224,56,1,192,56,1,192, + 24,1,128,12,3,0,6,6,0,3,252,0,14,28,56,24, + 5,0,1,128,1,128,3,128,7,128,255,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,255,252,17,28,84,24,3,0, + 7,224,0,24,60,0,32,30,0,64,15,0,192,15,0,192, + 7,128,192,7,128,240,7,128,252,7,128,252,7,128,124,7, + 128,24,15,0,0,14,0,0,28,0,0,56,0,0,112,0, + 0,224,0,1,192,0,3,0,0,6,0,0,12,0,128,24, + 0,128,48,0,128,48,1,128,112,1,128,127,255,128,127,255, + 128,127,255,128,17,28,84,24,3,0,15,224,0,48,56,0, + 96,28,0,96,14,0,240,15,0,248,15,0,248,15,0,120, + 15,0,0,15,0,0,15,0,0,14,0,0,28,0,28,56, + 0,31,224,0,0,60,0,0,30,0,0,15,0,0,7,0, + 0,7,128,0,7,128,120,7,128,248,7,128,248,7,128,248, + 7,0,192,15,0,192,14,0,96,28,0,31,240,0,19,28, + 84,24,2,0,0,12,0,0,12,0,0,28,0,0,60,0, + 0,60,0,0,124,0,0,252,0,0,252,0,1,188,0,3, + 60,0,3,60,0,6,60,0,12,60,0,12,60,0,24,60, + 0,48,60,0,32,60,0,96,60,0,192,60,0,255,255,224, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,7,255,224,17,29,87,24,4,0,0,2, + 0,120,12,0,127,248,0,127,240,0,111,192,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,103,224,0,104, + 60,0,112,30,0,96,14,0,96,15,0,96,7,0,0,7, + 128,0,7,128,0,7,128,16,7,128,120,7,128,252,7,128, + 252,7,128,248,15,0,224,15,0,224,14,0,96,28,0,48, + 56,0,31,240,0,17,28,84,24,3,0,1,248,0,3,12, + 0,12,6,0,28,7,0,24,15,0,56,31,0,48,31,0, + 112,14,0,112,0,0,112,0,0,240,0,0,241,240,0,246, + 28,0,252,14,0,248,7,0,248,7,0,240,7,128,240,7, + 128,240,7,128,240,7,128,112,7,128,112,7,128,112,7,0, + 48,7,0,56,7,0,24,14,0,12,28,0,7,248,0,16, + 28,56,24,4,0,255,255,255,255,255,255,192,3,128,2,128, + 2,128,6,128,4,0,12,0,8,0,24,0,48,0,32,0, + 96,0,192,0,192,1,128,3,128,3,128,7,128,7,128,7, + 128,15,192,15,192,15,192,15,192,15,192,7,192,20,28,84, + 24,2,0,3,248,0,14,14,0,56,7,0,112,3,128,112, + 1,192,240,1,192,240,1,192,240,1,192,240,1,192,248,1, + 128,126,3,128,127,131,0,63,252,0,15,252,0,7,255,0, + 24,127,192,48,15,224,112,3,224,224,1,240,224,0,240,224, + 0,240,224,0,224,224,0,224,224,0,224,112,1,192,48,1, + 128,28,7,0,15,252,0,17,28,84,24,3,0,7,224,0, + 12,56,0,56,12,0,56,14,0,112,14,0,112,7,0,240, + 7,0,240,7,0,240,7,128,240,7,128,240,7,128,240,7, + 128,112,15,128,112,15,128,56,27,128,28,51,128,7,199,128, + 0,7,128,0,7,0,0,7,0,56,7,0,124,7,0,124, + 14,0,120,14,0,112,12,0,112,24,0,48,48,0,31,224, + 0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=41 h=38 x= 5 y=22 dx=44 dy= 0 ascent=31 len=174 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =30 descent=-9 + Max Font ascent =31 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29r[7573] U8G_SECTION(".progmem.u8g_font_osr29r") = { + 0,107,51,223,244,29,9,148,21,166,32,127,247,31,247,30, + 247,0,0,0,11,0,0,5,28,28,11,3,0,112,248,248, + 248,248,248,248,248,112,112,112,112,112,112,112,112,32,32,32, + 32,32,32,0,112,248,248,248,112,9,8,16,17,4,22,227, + 128,227,128,227,128,227,128,193,128,65,128,65,0,65,0,22, + 28,84,28,3,0,0,192,192,0,192,192,0,192,192,0,192, + 128,0,129,128,1,129,128,1,129,128,1,129,128,255,255,252, + 255,255,252,1,129,0,3,3,0,3,3,0,3,3,0,3, + 3,0,3,3,0,2,2,0,6,6,0,255,255,252,255,255, + 252,6,6,0,6,6,0,6,4,0,4,12,0,12,12,0, + 12,12,0,12,12,0,12,12,0,18,34,102,24,3,253,1, + 16,0,1,16,0,1,16,0,3,248,0,13,22,0,25,17, + 0,49,16,128,97,16,192,97,16,192,97,17,192,97,19,192, + 97,19,192,113,19,128,61,16,0,63,144,0,31,240,0,15, + 252,0,3,254,0,1,127,0,1,31,128,1,19,128,33,17, + 192,113,16,192,249,16,192,241,16,192,241,16,192,225,16,128, + 97,17,128,97,17,0,49,19,0,15,188,0,1,240,0,1, + 16,0,1,16,0,28,28,112,36,4,0,31,0,6,0,49, + 128,4,0,96,192,12,0,96,192,8,0,224,224,24,0,224, + 224,48,0,224,224,32,0,224,224,96,0,224,224,64,0,224, + 224,128,0,96,193,128,0,96,193,0,0,49,131,0,0,31, + 6,0,0,0,4,15,0,0,12,48,128,0,8,48,192,0, + 16,96,96,0,48,96,96,0,32,224,112,0,96,224,112,0, + 64,224,112,0,128,224,112,1,128,224,112,1,0,96,96,2, + 0,96,96,6,0,48,192,4,0,31,128,28,28,112,32,2, + 0,0,248,0,0,3,140,0,0,7,4,0,0,6,2,0, + 0,14,2,0,0,14,2,0,0,14,6,0,0,14,4,0, + 0,15,12,0,0,7,24,0,0,7,176,0,0,3,224,0, + 0,1,224,63,240,3,224,7,128,6,240,7,0,12,120,6, + 0,24,124,6,0,48,60,4,0,112,30,12,0,112,31,24, + 0,240,15,144,0,240,7,176,0,240,7,224,0,240,3,224, + 0,240,3,240,32,120,6,248,32,60,12,124,192,31,240,63, + 128,3,8,8,10,4,22,224,224,224,224,192,64,64,64,9, + 37,74,15,4,249,1,128,3,0,6,0,14,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,96,0,96,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,0,96,0,96,0,48,0,48,0,56, + 0,24,0,12,0,12,0,6,0,3,0,3,128,1,128,9, + 37,74,15,2,249,192,0,96,0,48,0,56,0,24,0,12, + 0,12,0,6,0,6,0,3,0,3,0,3,0,3,0,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,3,128,3,0,3,0,3,0,6,0,6,0,14, + 0,12,0,24,0,24,0,48,0,96,0,224,0,192,0,15, + 17,34,21,3,11,3,128,3,192,3,128,3,128,225,142,241, + 30,249,62,29,112,3,128,3,128,29,112,249,62,241,30,227, + 142,3,128,3,192,3,128,35,34,170,39,2,250,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,5,12,12,11,3,249,112,240,248, + 248,24,8,8,16,16,32,32,64,10,2,4,14,2,9,255, + 192,255,192,5,5,5,11,3,0,112,248,248,248,112,14,38, + 76,18,2,248,0,12,0,12,0,12,0,8,0,24,0,24, + 0,16,0,48,0,48,0,32,0,96,0,96,0,64,0,192, + 0,192,0,128,1,128,1,128,1,0,3,0,3,0,2,0, + 6,0,6,0,4,0,12,0,12,0,8,0,24,0,24,0, + 16,0,48,0,48,0,32,0,96,0,96,0,64,0,192,0, + 20,28,84,24,2,0,1,248,0,7,12,0,12,7,0,28, + 3,128,24,1,128,56,1,192,56,1,192,112,0,224,112,0, + 224,112,0,224,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,112, + 0,224,112,0,224,112,0,224,56,1,192,56,1,192,24,1, + 128,12,3,0,6,6,0,3,252,0,14,28,56,24,5,0, + 1,128,1,128,3,128,7,128,255,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,255,252,17,28,84,24,3,0,7,224, + 0,24,60,0,32,30,0,64,15,0,192,15,0,192,7,128, + 192,7,128,240,7,128,252,7,128,252,7,128,124,7,128,24, + 15,0,0,14,0,0,28,0,0,56,0,0,112,0,0,224, + 0,1,192,0,3,0,0,6,0,0,12,0,128,24,0,128, + 48,0,128,48,1,128,112,1,128,127,255,128,127,255,128,127, + 255,128,17,28,84,24,3,0,15,224,0,48,56,0,96,28, + 0,96,14,0,240,15,0,248,15,0,248,15,0,120,15,0, + 0,15,0,0,15,0,0,14,0,0,28,0,28,56,0,31, + 224,0,0,60,0,0,30,0,0,15,0,0,7,0,0,7, + 128,0,7,128,120,7,128,248,7,128,248,7,128,248,7,0, + 192,15,0,192,14,0,96,28,0,31,240,0,19,28,84,24, + 2,0,0,12,0,0,12,0,0,28,0,0,60,0,0,60, + 0,0,124,0,0,252,0,0,252,0,1,188,0,3,60,0, + 3,60,0,6,60,0,12,60,0,12,60,0,24,60,0,48, + 60,0,32,60,0,96,60,0,192,60,0,255,255,224,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,7,255,224,17,29,87,24,4,0,0,2,0,120, + 12,0,127,248,0,127,240,0,111,192,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,103,224,0,104,60,0, + 112,30,0,96,14,0,96,15,0,96,7,0,0,7,128,0, + 7,128,0,7,128,16,7,128,120,7,128,252,7,128,252,7, + 128,248,15,0,224,15,0,224,14,0,96,28,0,48,56,0, + 31,240,0,17,28,84,24,3,0,1,248,0,3,12,0,12, + 6,0,28,7,0,24,15,0,56,31,0,48,31,0,112,14, + 0,112,0,0,112,0,0,240,0,0,241,240,0,246,28,0, + 252,14,0,248,7,0,248,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,112,7,128,112,7,128,112,7,0,48,7, + 0,56,7,0,24,14,0,12,28,0,7,248,0,16,28,56, + 24,4,0,255,255,255,255,255,255,192,3,128,2,128,2,128, + 6,128,4,0,12,0,8,0,24,0,48,0,32,0,96,0, + 192,0,192,1,128,3,128,3,128,7,128,7,128,7,128,15, + 192,15,192,15,192,15,192,15,192,7,192,20,28,84,24,2, + 0,3,248,0,14,14,0,56,7,0,112,3,128,112,1,192, + 240,1,192,240,1,192,240,1,192,240,1,192,248,1,128,126, + 3,128,127,131,0,63,252,0,15,252,0,7,255,0,24,127, + 192,48,15,224,112,3,224,224,1,240,224,0,240,224,0,240, + 224,0,224,224,0,224,224,0,224,112,1,192,48,1,128,28, + 7,0,15,252,0,17,28,84,24,3,0,7,224,0,12,56, + 0,56,12,0,56,14,0,112,14,0,112,7,0,240,7,0, + 240,7,0,240,7,128,240,7,128,240,7,128,240,7,128,112, + 15,128,112,15,128,56,27,128,28,51,128,7,199,128,0,7, + 128,0,7,0,0,7,0,56,7,0,124,7,0,124,14,0, + 120,14,0,112,12,0,112,24,0,48,48,0,31,224,0,5, + 19,19,11,3,0,112,248,248,248,112,0,0,0,0,0,0, + 0,0,0,112,248,248,248,112,5,26,26,11,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,240,248,120, + 8,8,8,16,16,32,96,64,32,34,136,39,3,250,0,0, + 0,2,0,0,0,7,0,0,0,28,0,0,0,112,0,0, + 1,224,0,0,7,128,0,0,30,0,0,0,120,0,0,1, + 224,0,0,3,128,0,0,14,0,0,0,56,0,0,0,240, + 0,0,3,192,0,0,15,0,0,0,60,0,0,0,240,0, + 0,0,224,0,0,0,120,0,0,0,30,0,0,0,7,128, + 0,0,1,192,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,3,192,0,0,0,240,0,0,0,60,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,56,0,0, + 0,14,0,0,0,6,35,10,50,39,2,6,255,255,255,255, + 224,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,224,255,255,255,255,224,32,34, + 136,39,3,250,64,0,0,0,224,0,0,0,56,0,0,0, + 14,0,0,0,7,128,0,0,1,224,0,0,0,120,0,0, + 0,30,0,0,0,7,128,0,0,1,192,0,0,0,112,0, + 0,0,28,0,0,0,15,0,0,0,3,192,0,0,0,240, + 0,0,0,60,0,0,0,15,0,0,0,7,0,0,0,30, + 0,0,0,120,0,0,1,224,0,0,3,128,0,0,14,0, + 0,0,56,0,0,0,224,0,0,3,192,0,0,15,0,0, + 0,60,0,0,0,240,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,0,96,0,0,0,15,28,56,20, + 3,0,15,192,48,112,64,60,192,28,192,30,248,30,248,30, + 112,30,0,28,0,60,0,120,0,240,1,192,3,128,6,0, + 12,0,8,32,8,32,8,32,12,64,7,128,0,0,0,0, + 3,128,7,192,7,192,7,192,3,128,29,29,116,33,2,1, + 0,63,248,0,1,192,14,0,3,0,3,0,6,0,1,128, + 12,0,0,192,24,7,206,96,48,12,124,32,48,56,60,48, + 96,112,60,16,96,224,56,24,96,224,56,24,193,192,56,24, + 193,192,56,24,193,192,48,24,195,192,112,24,195,128,112,24, + 195,128,112,48,195,128,224,48,195,128,224,48,67,129,224,96, + 97,130,224,192,97,196,225,128,48,120,62,0,48,0,0,0, + 24,0,0,0,12,0,0,0,6,0,4,0,3,128,28,0, + 0,127,240,0,29,29,116,32,2,0,0,2,0,0,0,6, + 0,0,0,7,0,0,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,31,192,0,0,19,192,0,0,51, + 192,0,0,49,224,0,0,33,224,0,0,97,224,0,0,96, + 240,0,0,64,240,0,0,192,240,0,0,192,120,0,0,128, + 120,0,1,128,120,0,1,255,252,0,1,0,60,0,3,0, + 28,0,3,0,30,0,6,0,30,0,6,0,15,0,6,0, + 15,0,14,0,15,0,30,0,15,128,255,224,255,248,23,29, + 87,28,3,0,255,255,128,15,0,224,15,0,120,15,0,60, + 15,0,28,15,0,28,15,0,30,15,0,30,15,0,28,15, + 0,28,15,0,56,15,0,48,15,0,224,15,255,0,15,0, + 224,15,0,112,15,0,56,15,0,60,15,0,30,15,0,30, + 15,0,30,15,0,30,15,0,30,15,0,30,15,0,60,15, + 0,60,15,0,120,15,0,224,255,255,128,22,29,87,28,3, + 1,1,254,8,7,3,152,12,0,248,28,0,248,24,0,120, + 56,0,56,120,0,56,112,0,24,112,0,24,240,0,8,240, + 0,8,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,12,112,0,12, + 120,0,12,56,0,24,56,0,24,28,0,24,12,0,48,6, + 0,96,3,0,192,0,255,128,27,29,116,32,3,0,255,255, + 192,0,15,0,112,0,15,0,28,0,15,0,14,0,15,0, + 7,0,15,0,7,128,15,0,3,128,15,0,3,192,15,0, + 3,192,15,0,1,192,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,3,192,15,0, + 3,192,15,0,3,192,15,0,3,128,15,0,7,0,15,0, + 7,0,15,0,14,0,15,0,28,0,15,0,112,0,255,255, + 192,0,23,29,87,29,3,0,255,255,254,15,0,62,15,0, + 14,15,0,14,15,0,6,15,0,6,15,0,2,15,0,2, + 15,1,2,15,1,0,15,1,0,15,1,0,15,3,0,15, + 7,0,15,255,0,15,7,0,15,3,0,15,1,0,15,1, + 2,15,1,2,15,1,2,15,0,2,15,0,6,15,0,6, + 15,0,6,15,0,14,15,0,30,15,0,126,255,255,254,23, + 29,87,28,3,0,255,255,254,15,0,62,15,0,14,15,0, + 14,15,0,6,15,0,6,15,0,2,15,0,2,15,1,2, + 15,1,0,15,1,0,15,1,0,15,3,0,15,7,0,15, + 255,0,15,7,0,15,3,0,15,1,0,15,1,0,15,1, + 0,15,1,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,255,240,0,25,30,120,29, + 3,0,0,16,0,0,1,254,8,0,6,3,152,0,12,0, + 248,0,28,0,248,0,24,0,120,0,56,0,56,0,56,0, + 56,0,112,0,24,0,112,0,24,0,112,0,8,0,240,0, + 8,0,240,0,0,0,240,0,0,0,240,0,0,0,240,7, + 255,128,240,0,120,0,240,0,120,0,240,0,120,0,240,0, + 120,0,112,0,120,0,112,0,120,0,112,0,120,0,56,0, + 120,0,56,0,120,0,24,0,248,0,28,0,200,0,12,1, + 136,0,6,3,8,0,1,254,8,0,28,29,116,33,3,0, + 255,240,255,240,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,255,255,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 255,240,255,240,12,29,58,17,3,0,255,240,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,255,240,19,29,87,22,2,0,1,255,224,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,120,30,0,248,30,0,248,30,0,248, + 30,0,192,28,0,192,28,0,64,24,0,96,48,0,31,224, + 0,27,29,116,32,3,0,255,241,255,192,15,0,126,0,15, + 0,60,0,15,0,56,0,15,0,112,0,15,0,96,0,15, + 0,192,0,15,1,128,0,15,3,0,0,15,6,0,0,15, + 14,0,0,15,30,0,0,15,63,0,0,15,111,0,0,15, + 207,128,0,15,135,128,0,15,7,192,0,15,3,192,0,15, + 3,224,0,15,3,224,0,15,1,240,0,15,1,240,0,15, + 0,248,0,15,0,248,0,15,0,124,0,15,0,124,0,15, + 0,62,0,15,0,63,0,255,241,255,224,23,29,87,28,3, + 0,255,248,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,2,15,0,2,15,0,6, + 15,0,6,15,0,6,15,0,14,15,0,14,15,0,30,15, + 0,62,15,0,254,255,255,254,30,29,116,35,3,0,255,128, + 3,252,15,128,7,192,15,192,7,192,15,192,7,192,15,192, + 15,192,13,192,11,192,13,224,11,192,13,224,11,192,12,224, + 27,192,12,240,19,192,12,240,19,192,12,112,51,192,12,112, + 35,192,12,120,35,192,12,120,35,192,12,56,99,192,12,60, + 67,192,12,60,67,192,12,28,195,192,12,28,131,192,12,30, + 131,192,12,14,131,192,12,15,131,192,12,15,3,192,12,15, + 3,192,12,7,3,192,12,6,3,192,30,6,3,192,255,194, + 63,252,28,29,116,32,3,0,255,0,63,240,15,128,7,128, + 15,128,3,0,15,192,3,0,15,224,3,0,13,224,3,0, + 13,240,3,0,12,248,3,0,12,120,3,0,12,124,3,0, + 12,60,3,0,12,30,3,0,12,31,3,0,12,15,3,0, + 12,7,131,0,12,7,131,0,12,3,195,0,12,3,227,0, + 12,1,227,0,12,0,243,0,12,0,251,0,12,0,123,0, + 12,0,63,0,12,0,63,0,12,0,31,0,12,0,31,0, + 12,0,15,0,30,0,7,0,255,192,7,0,24,29,87,29, + 3,1,0,255,0,3,0,192,6,0,96,12,0,48,28,0, + 56,56,0,28,56,0,28,120,0,30,112,0,14,112,0,14, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,112,0,14,112,0, + 14,120,0,30,56,0,28,56,0,28,28,0,56,12,0,48, + 6,0,96,3,0,192,0,255,0,23,29,87,28,3,0,255, + 255,128,15,0,224,15,0,120,15,0,60,15,0,60,15,0, + 30,15,0,30,15,0,30,15,0,30,15,0,30,15,0,60, + 15,0,60,15,0,120,15,0,224,15,255,128,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,255,248,0,24,36,108,29,3,250,0,255,0,3, + 0,192,6,0,96,12,0,48,28,0,56,56,0,28,56,0, + 28,120,0,30,112,0,14,112,0,14,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,112,0,14,120,0,30,120,0,30,56,60, + 28,56,99,28,28,195,56,14,193,184,6,193,240,3,193,225, + 0,247,193,0,9,193,0,1,193,0,1,195,0,1,226,0, + 1,254,0,0,252,0,0,56,25,29,116,29,3,0,255,255, + 128,0,15,1,240,0,15,0,120,0,15,0,120,0,15,0, + 60,0,15,0,60,0,15,0,60,0,15,0,60,0,15,0, + 60,0,15,0,120,0,15,0,240,0,15,1,224,0,15,255, + 0,0,15,3,128,0,15,1,192,0,15,0,224,0,15,0, + 224,0,15,0,240,0,15,0,240,0,15,0,240,0,15,0, + 240,0,15,0,240,0,15,0,248,128,15,0,120,128,15,0, + 120,128,15,0,121,128,15,0,127,0,15,0,63,0,255,248, + 30,0,19,29,87,25,4,1,15,240,192,48,28,192,96,15, + 192,96,7,192,192,3,192,192,1,192,192,1,192,192,0,192, + 224,0,192,240,0,192,120,0,64,127,0,0,63,192,0,31, + 248,0,15,254,0,1,255,128,128,127,128,128,15,192,128,3, + 224,128,1,224,192,0,224,192,0,96,224,0,96,224,0,96, + 240,0,96,248,0,192,156,0,128,134,1,0,131,254,0,24, + 29,87,29,3,0,255,255,255,248,60,31,240,60,15,224,60, + 7,192,60,3,192,60,3,192,60,3,128,60,1,128,60,1, + 128,60,1,128,60,1,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,7,255,224,29,29,116,34, + 3,0,255,240,31,248,15,0,3,192,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,7,0, + 1,0,7,0,3,0,3,128,2,0,1,192,6,0,0,224, + 24,0,0,63,240,0,29,29,116,32,2,0,255,248,63,248, + 15,128,3,192,7,128,3,128,7,128,3,0,3,192,3,0, + 3,192,3,0,3,192,2,0,1,224,6,0,1,224,6,0, + 1,240,4,0,0,240,12,0,0,240,12,0,0,248,8,0, + 0,120,24,0,0,120,24,0,0,60,16,0,0,60,48,0, + 0,60,48,0,0,30,32,0,0,30,96,0,0,31,96,0, + 0,15,64,0,0,15,192,0,0,15,192,0,0,7,128,0, + 0,7,128,0,0,7,128,0,0,3,0,0,0,3,0,0, + 41,29,174,44,2,0,255,241,255,227,255,128,15,128,63,0, + 124,0,7,128,30,0,56,0,7,128,30,0,48,0,7,128, + 31,0,48,0,3,192,31,0,48,0,3,192,31,0,96,0, + 3,192,55,0,96,0,1,224,55,128,96,0,1,224,55,128, + 64,0,1,224,39,128,192,0,1,224,99,192,192,0,0,240, + 99,192,128,0,0,240,67,193,128,0,0,240,193,193,128,0, + 0,120,193,225,0,0,0,120,193,227,0,0,0,120,129,227, + 0,0,0,125,128,242,0,0,0,61,128,246,0,0,0,61, + 0,246,0,0,0,61,0,116,0,0,0,31,0,124,0,0, + 0,31,0,124,0,0,0,30,0,60,0,0,0,14,0,56, + 0,0,0,14,0,56,0,0,0,12,0,56,0,0,0,12, + 0,16,0,0,28,29,116,31,2,0,255,248,255,224,7,192, + 30,0,7,192,28,0,3,224,24,0,1,224,24,0,1,240, + 48,0,0,240,32,0,0,248,96,0,0,120,192,0,0,124, + 128,0,0,61,128,0,0,63,0,0,0,30,0,0,0,15, + 0,0,0,15,0,0,0,15,128,0,0,31,128,0,0,51, + 192,0,0,51,224,0,0,97,224,0,0,193,240,0,0,192, + 240,0,1,128,248,0,3,0,120,0,3,0,124,0,6,0, + 60,0,14,0,62,0,31,0,63,0,255,225,255,240,27,29, + 116,30,2,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,22,29,87,27,3,0,63,255, + 252,62,0,120,60,0,248,56,0,240,48,1,224,48,3,224, + 96,3,192,96,7,128,64,15,128,64,15,0,0,31,0,0, + 62,0,0,60,0,0,124,0,0,120,0,0,240,0,1,240, + 0,1,224,0,3,224,4,7,192,4,7,128,12,15,128,12, + 31,0,12,31,0,28,62,0,28,60,0,60,124,0,120,248, + 0,248,255,255,248,8,37,37,16,5,248,255,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,255, + 14,38,76,18,2,248,192,0,64,0,96,0,96,0,32,0, + 48,0,48,0,16,0,24,0,24,0,8,0,12,0,12,0, + 4,0,4,0,6,0,2,0,2,0,3,0,3,0,1,0, + 1,128,1,128,0,128,0,192,0,192,0,64,0,96,0,96, + 0,32,0,48,0,48,0,16,0,24,0,24,0,8,0,12, + 0,12,8,37,37,16,3,248,255,15,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,15,255,18,14,42, + 24,3,15,0,192,0,1,192,0,1,224,0,3,48,0,3, + 48,0,6,24,0,12,12,0,12,12,0,24,6,0,48,6, + 0,48,3,0,96,1,128,224,1,128,192,0,192,21,2,6, + 21,0,250,255,255,248,255,255,248,7,7,7,18,3,21,192, + 224,112,56,24,12,2,18,19,57,21,2,0,15,192,0,56, + 112,0,32,56,0,96,28,0,120,28,0,120,28,0,56,28, + 0,0,28,0,0,252,0,15,28,0,56,28,0,112,28,0, + 224,28,0,224,28,64,224,60,64,224,60,64,224,92,192,112, + 159,128,31,15,0,18,29,87,21,1,0,252,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,120,0,28,142,0,29, + 7,0,30,3,128,30,3,128,28,3,128,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,192,28,3,192, + 28,3,128,28,3,128,30,3,128,27,7,0,17,142,0,16, + 248,0,15,19,38,18,2,0,7,224,28,16,56,8,48,12, + 112,28,112,60,240,60,240,24,240,0,240,0,240,0,240,0, + 240,6,112,4,112,4,48,12,56,8,12,48,7,224,18,29, + 87,21,2,0,0,254,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,15,142,0,28,78,0,56,46,0,112,30,0,112,30, + 0,112,14,0,240,14,0,240,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,0,112,14,0,112,14,0,112, + 30,0,56,62,0,24,110,0,7,207,192,15,19,38,19,2, + 0,7,192,12,112,56,56,48,28,112,28,112,28,240,30,240, + 30,255,254,240,0,240,0,240,0,240,6,112,4,112,4,56, + 4,56,8,28,16,7,224,14,29,58,14,1,0,1,240,7, + 24,14,24,12,60,28,60,28,56,28,0,28,0,28,0,28, + 0,255,192,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,192,20,28,84,22,2,247,7,225,192, + 28,58,96,56,30,240,112,30,240,112,14,224,240,15,0,240, + 15,0,240,15,0,112,14,0,112,30,0,56,28,0,28,56, + 0,7,224,0,56,0,0,64,0,0,192,0,0,240,0,0, + 255,254,0,63,255,0,15,7,128,112,1,192,64,0,192,192, + 0,192,192,0,192,192,1,128,96,1,128,56,6,0,7,248, + 0,20,29,87,22,1,0,252,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,60,0,28,199,0,29,3,0,29,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,8,28, + 28,11,1,0,24,60,60,24,0,0,0,0,0,252,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,255, + 11,37,74,14,255,247,0,192,1,224,1,224,0,192,0,0, + 0,0,0,0,0,0,0,0,15,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,224,224,240,224,224,192,193,128,99,128,62,0, + 19,29,87,21,1,0,252,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,63,192,28,14,0,28,12,0,28,8,0, + 28,16,0,28,48,0,28,96,0,28,192,0,28,224,0,29, + 224,0,30,240,0,30,120,0,28,60,0,28,60,0,28,30, + 0,28,15,0,28,15,0,28,15,128,255,63,224,9,29,58, + 11,1,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,31,19,76, + 33,1,0,252,124,15,128,28,199,24,192,29,7,32,224,31, + 3,224,112,30,3,192,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,255,159,243,254,20, + 19,57,22,1,0,252,60,0,28,199,0,29,3,0,31,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,17,19, + 57,21,2,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,18,28,84, + 21,1,247,252,120,0,29,142,0,31,7,0,30,3,128,30, + 3,128,28,3,128,28,3,192,28,3,192,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,128,28,3,128, + 30,3,128,31,7,0,29,134,0,28,120,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,28,84,21,2,247,7,130,0, + 28,98,0,56,54,0,112,22,0,112,30,0,112,14,0,240, + 14,0,240,14,0,240,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,112,14,0,112,14,0,112,30,0,56,62,0, + 24,110,0,7,206,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,127, + 192,15,19,38,16,1,0,252,56,28,196,28,142,29,30,31, + 28,30,12,30,0,30,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,14,19,38, + 18,2,0,31,16,96,208,64,112,192,48,192,16,224,16,240, + 0,126,0,63,128,31,224,3,248,128,252,192,28,192,12,224, + 12,224,12,240,8,140,24,131,224,12,27,54,14,1,0,4, + 0,4,0,4,0,4,0,4,0,12,0,12,0,28,0,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,16,28,16,28,16,28,48,30, + 32,15,224,7,192,20,19,57,22,1,0,252,31,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,7,128,28,7,128,28,15,128,12,11,128,14,51, + 128,3,195,240,20,19,57,21,1,0,255,15,240,60,3,128, + 28,3,0,28,3,0,14,2,0,14,2,0,15,6,0,7, + 4,0,7,4,0,3,140,0,3,136,0,3,200,0,1,216, + 0,1,208,0,0,240,0,0,240,0,0,96,0,0,96,0, + 0,96,0,30,19,76,31,1,0,255,31,243,252,60,7,128, + 224,28,3,128,192,28,3,128,192,14,3,192,128,14,3,192, + 128,15,7,193,128,7,5,225,0,7,4,225,0,3,140,227, + 0,3,136,114,0,1,200,114,0,1,216,118,0,1,240,60, + 0,0,240,60,0,0,240,60,0,0,96,24,0,0,96,24, + 0,0,32,24,0,18,19,57,21,1,0,255,31,192,30,14, + 0,30,12,0,14,8,0,15,24,0,7,16,0,3,160,0, + 3,224,0,1,192,0,1,224,0,1,224,0,1,112,0,3, + 120,0,2,56,0,4,28,0,12,28,0,24,14,0,24,15, + 0,254,63,192,20,28,84,22,1,247,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,14,19, + 38,18,2,0,255,252,224,60,192,56,192,120,128,240,128,224, + 129,224,1,192,3,128,7,128,7,0,15,0,30,4,28,4, + 60,4,56,12,112,12,240,28,255,252,10,37,74,17,4,248, + 1,192,6,0,12,0,8,0,24,0,24,0,24,0,28,0, + 28,0,12,0,14,0,14,0,14,0,6,0,6,0,6,0, + 4,0,8,0,240,0,24,0,12,0,4,0,6,0,6,0, + 14,0,14,0,14,0,12,0,28,0,28,0,24,0,24,0, + 24,0,8,0,12,0,6,0,1,192,2,38,38,12,5,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,10,37,74,17,3,248,224,0,24,0, + 12,0,4,0,6,0,6,0,6,0,14,0,14,0,12,0, + 28,0,28,0,28,0,24,0,24,0,24,0,8,0,4,0, + 3,192,6,0,8,0,24,0,24,0,24,0,28,0,28,0, + 28,0,12,0,14,0,14,0,6,0,6,0,6,0,4,0, + 12,0,24,0,224,0,23,8,24,27,2,7,30,0,8,127, + 192,4,255,240,2,199,254,2,128,255,134,128,63,254,192,15, + 252,96,1,248,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=47 x=10 y=28 dx=52 dy= 0 ascent=47 len=252 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x=-2 y=-13 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =36 descent=-10 + Max Font ascent =47 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35[22370] U8G_SECTION(".progmem.u8g_font_osr35") = { + 0,128,62,216,241,35,12,236,30,116,32,255,246,47,243,36, + 246,0,0,0,14,0,0,6,34,34,14,4,0,120,252,252, + 252,252,252,252,252,252,120,120,120,120,120,120,48,48,48,48, + 48,48,48,48,48,48,48,0,0,0,120,252,252,252,120,11, + 10,20,19,4,26,224,224,224,224,224,224,224,224,224,224,224, + 224,64,64,64,64,64,64,64,64,26,34,136,34,4,0,0, + 48,24,0,0,48,24,0,0,112,24,0,0,96,24,0,0, + 96,56,0,0,96,56,0,0,96,48,0,0,96,48,0,0, + 96,48,0,0,224,48,0,255,255,255,192,255,255,255,192,0, + 192,96,0,0,192,96,0,0,192,96,0,1,192,96,0,1, + 128,96,0,1,128,224,0,1,128,192,0,1,128,192,0,1, + 128,192,0,3,128,192,0,255,255,255,192,255,255,255,192,3, + 1,128,0,3,1,128,0,3,1,128,0,7,1,128,0,7, + 1,128,0,6,1,128,0,6,3,128,0,6,3,0,0,6, + 3,0,0,6,3,0,0,22,41,123,29,3,252,0,204,0, + 0,204,0,0,204,0,1,254,0,7,207,192,12,204,96,24, + 204,48,48,204,24,32,204,24,96,204,28,96,204,60,96,204, + 124,96,204,124,112,204,120,120,204,120,62,204,0,63,204,0, + 31,252,0,15,252,0,7,255,128,1,255,192,0,255,224,0, + 207,240,0,205,248,0,204,120,48,204,60,120,204,28,248,204, + 28,248,204,12,240,204,12,240,204,8,224,204,24,96,204,24, + 96,204,48,48,204,96,28,205,192,7,255,128,0,204,0,0, + 204,0,0,204,0,0,204,0,33,34,170,43,5,0,15,128, + 0,48,0,24,192,0,96,0,48,96,0,64,0,112,112,0, + 192,0,96,48,1,128,0,224,56,1,128,0,224,56,3,0, + 0,224,56,2,0,0,224,56,6,0,0,224,56,12,0,0, + 224,56,12,0,0,224,56,24,0,0,96,48,48,0,0,96, + 112,48,0,0,48,96,96,0,0,24,192,64,0,0,15,128, + 192,0,0,0,1,128,248,0,0,1,129,140,0,0,3,3, + 6,0,0,2,6,7,0,0,6,6,3,0,0,12,14,3, + 128,0,8,14,3,128,0,24,14,3,128,0,48,14,3,128, + 0,48,14,3,128,0,96,14,3,128,0,64,14,3,128,0, + 192,6,3,0,1,128,6,3,0,1,128,7,7,0,3,0, + 3,14,0,6,0,1,252,0,33,34,170,39,3,0,0,63, + 0,0,0,0,227,128,0,0,1,128,192,0,0,3,128,64, + 0,0,3,0,96,0,0,7,0,96,0,0,7,0,96,0, + 0,7,0,224,0,0,7,0,192,0,0,7,129,192,0,0, + 7,131,128,0,0,3,199,0,0,0,3,238,0,0,0,1, + 248,0,0,0,0,248,7,255,128,1,248,0,252,0,3,252, + 0,112,0,7,62,0,112,0,14,63,0,96,0,28,31,0, + 96,0,60,15,128,192,0,56,7,192,192,0,120,7,193,128, + 0,120,3,225,128,0,240,1,243,0,0,240,1,254,0,0, + 240,0,254,0,0,240,0,124,0,0,248,0,62,0,0,248, + 0,62,1,0,120,0,127,1,0,60,0,207,130,0,30,3, + 135,252,0,15,254,1,248,0,3,10,10,11,4,26,224,224, + 224,224,224,224,64,64,64,64,11,46,92,18,5,246,0,64, + 0,224,1,192,3,128,3,0,6,0,14,0,12,0,28,0, + 24,0,56,0,48,0,48,0,112,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,224,0,96,0,96,0,96,0,112,0, + 48,0,48,0,56,0,24,0,28,0,12,0,14,0,6,0, + 3,0,3,128,1,192,0,224,0,64,11,45,90,18,2,246, + 64,0,96,0,112,0,56,0,28,0,12,0,14,0,6,0, + 3,0,3,0,3,128,1,128,1,192,0,192,0,192,0,192, + 0,224,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,224,0,192,0,192, + 0,192,1,128,1,128,3,128,3,0,7,0,6,0,14,0, + 12,0,24,0,56,0,112,0,224,0,18,20,60,25,4,14, + 0,224,0,1,224,0,1,224,0,1,224,0,96,195,128,240, + 135,192,248,143,192,124,159,128,7,248,0,1,224,0,1,224, + 0,6,184,0,124,143,128,248,135,192,240,195,192,97,193,128, + 1,224,0,1,224,0,1,224,0,0,224,0,41,41,246,45, + 2,248,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,255,255,255,255,255,128,255,255,255,255,255,128, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,7,15,15,14,4,247,120,252, + 252,254,126,6,6,6,4,12,8,24,48,96,64,12,3,6, + 18,3,11,255,240,255,240,255,240,6,5,5,14,4,1,120, + 252,252,252,120,16,46,92,22,3,246,0,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,128,1,128,1,128,3,0,3,0, + 3,0,6,0,6,0,6,0,12,0,12,0,12,0,24,0, + 24,0,24,0,48,0,48,0,48,0,96,0,96,0,96,0, + 96,0,192,0,192,0,23,34,102,28,2,0,0,124,0,1, + 199,0,7,1,128,6,0,192,14,0,224,28,0,112,60,0, + 120,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,120,0, + 60,120,0,60,120,0,60,120,0,60,60,0,120,60,0,120, + 28,0,112,28,0,112,14,0,224,7,1,192,3,131,128,0, + 254,0,17,34,102,28,6,0,0,64,0,0,64,0,0,192, + 0,0,192,0,1,192,0,7,192,0,255,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,255,255,128,255,255,128,21,34, + 102,28,4,0,3,252,0,14,31,0,16,7,192,32,3,224, + 96,1,240,64,1,240,192,0,240,192,0,248,224,0,248,252, + 0,248,254,0,248,126,0,248,126,0,240,62,1,240,0,1, + 224,0,3,192,0,3,128,0,7,0,0,14,0,0,28,0, + 0,112,0,0,224,0,1,192,0,3,0,0,6,0,16,12, + 0,16,24,0,16,16,0,16,48,0,48,48,0,112,127,255, + 240,127,255,240,127,255,240,127,255,240,21,34,102,28,4,0, + 3,248,0,14,31,0,24,7,128,48,3,192,112,3,192,120, + 1,224,124,1,224,126,1,224,126,1,224,60,1,224,0,1, + 224,0,3,192,0,3,192,0,7,128,0,14,0,15,248,0, + 31,143,0,14,3,128,0,3,224,0,1,224,0,1,240,0, + 0,248,0,0,248,0,0,248,60,0,248,126,0,248,254,0, + 248,254,0,248,252,1,240,224,1,240,224,3,224,96,3,192, + 48,15,0,15,254,0,23,34,102,28,3,0,0,1,128,0, + 1,128,0,3,128,0,7,128,0,7,128,0,15,128,0,31, + 128,0,31,128,0,55,128,0,119,128,0,231,128,0,199,128, + 1,199,128,3,135,128,3,7,128,6,7,128,14,7,128,12, + 7,128,24,7,128,56,7,128,48,7,128,96,7,128,224,7, + 128,255,255,254,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,3,255,254,3, + 255,254,21,35,105,28,4,0,48,0,64,60,3,192,63,255, + 128,63,255,0,63,252,0,55,240,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,51, + 254,0,60,7,128,56,3,192,48,1,224,48,1,240,48,1, + 240,0,0,240,0,0,248,0,0,248,0,0,248,0,0,248, + 60,0,248,126,0,248,254,0,248,254,0,240,252,1,240,248, + 1,224,240,1,224,112,3,192,112,7,128,60,31,0,15,252, + 0,21,34,102,28,4,0,0,126,0,1,193,128,3,128,192, + 7,0,64,14,0,224,28,1,224,28,3,224,56,3,224,56, + 3,192,120,0,0,120,0,0,120,0,0,120,0,0,240,126, + 0,241,255,128,243,131,192,247,1,224,254,1,240,252,0,240, + 252,0,240,248,0,248,248,0,120,248,0,120,248,0,120,120, + 0,120,120,0,120,120,0,248,120,0,240,56,0,240,60,0, + 224,28,1,224,14,3,192,7,7,128,1,254,0,19,34,102, + 28,5,0,255,255,224,255,255,224,255,255,224,255,255,224,224, + 0,224,192,0,64,128,0,64,128,0,192,128,0,128,128,1, + 128,0,1,128,0,3,0,0,2,0,0,6,0,0,12,0, + 0,24,0,0,24,0,0,48,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,224,0,1,224,0,3,224,0,3,224, + 0,3,224,0,7,240,0,7,240,0,7,240,0,7,240,0, + 7,240,0,3,240,0,3,224,0,23,34,102,28,3,0,1, + 254,0,7,135,128,30,1,192,56,0,224,120,0,112,112,0, + 112,240,0,56,240,0,56,240,0,56,240,0,56,248,0,56, + 252,0,112,126,0,112,127,192,224,63,241,192,31,255,0,7, + 255,128,7,255,224,12,63,248,56,7,252,112,1,252,112,0, + 126,224,0,62,224,0,62,224,0,62,224,0,30,224,0,30, + 224,0,28,96,0,60,112,0,56,48,0,120,24,0,240,14, + 1,192,3,255,0,21,34,102,28,4,0,1,248,0,7,142, + 0,14,3,0,28,1,128,56,1,192,120,1,224,120,0,224, + 120,0,240,240,0,240,240,0,240,240,0,240,240,0,248,240, + 0,248,248,0,248,120,1,248,120,1,248,120,3,248,60,7, + 120,30,14,120,15,252,120,3,240,120,0,0,240,0,0,240, + 0,0,240,0,0,240,60,0,224,124,0,224,124,1,192,124, + 1,192,120,3,128,112,3,0,56,6,0,28,28,0,15,248, + 0,6,22,22,14,4,1,120,252,252,252,120,0,0,0,0, + 0,0,0,0,0,0,0,0,120,252,252,252,120,7,31,31, + 14,4,248,120,252,252,252,120,0,0,0,0,0,0,0,0, + 0,0,0,120,252,252,254,126,14,6,6,4,12,8,24,48, + 96,64,38,40,200,46,4,249,0,0,0,0,28,0,0,0, + 0,120,0,0,0,1,240,0,0,0,7,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,192,0, + 0,0,15,0,0,0,0,62,0,0,0,0,248,0,0,0, + 1,224,0,0,0,7,128,0,0,0,30,0,0,0,0,120, + 0,0,0,1,224,0,0,0,7,192,0,0,0,31,0,0, + 0,0,60,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,124,0,0,0,0,31,0,0,0,0,7,128,0,0,0, + 1,224,0,0,0,0,120,0,0,0,0,30,0,0,0,0, + 7,128,0,0,0,3,224,0,0,0,0,248,0,0,0,0, + 60,0,0,0,0,15,0,0,0,0,3,192,0,0,0,0, + 240,0,0,0,0,60,0,0,0,0,31,0,0,0,0,7, + 192,0,0,0,1,224,0,0,0,0,120,0,0,0,0,28, + 41,11,66,45,2,7,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,128,255,255,255,255,255,128,38,40,200,46,4,249,224,0, + 0,0,0,120,0,0,0,0,62,0,0,0,0,15,128,0, + 0,0,3,192,0,0,0,0,240,0,0,0,0,60,0,0, + 0,0,15,0,0,0,0,3,192,0,0,0,1,240,0,0, + 0,0,124,0,0,0,0,30,0,0,0,0,7,128,0,0, + 0,1,224,0,0,0,0,120,0,0,0,0,30,0,0,0, + 0,15,128,0,0,0,3,224,0,0,0,0,240,0,0,0, + 0,60,0,0,0,0,60,0,0,0,0,248,0,0,0,3, + 224,0,0,0,7,128,0,0,0,30,0,0,0,0,120,0, + 0,0,1,224,0,0,0,7,128,0,0,0,31,0,0,0, + 0,124,0,0,0,0,240,0,0,0,3,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,224,0, + 0,0,15,128,0,0,0,30,0,0,0,0,120,0,0,0, + 0,224,0,0,0,0,18,34,102,23,3,0,7,240,0,28, + 60,0,48,15,0,96,7,128,192,7,128,192,3,192,192,3, + 192,248,3,192,252,3,192,124,7,192,56,7,128,0,15,128, + 0,31,0,0,62,0,0,124,0,0,240,0,0,224,0,1, + 192,0,3,0,0,6,0,0,14,8,0,12,8,0,12,8, + 0,12,8,0,6,16,0,3,224,0,0,0,0,0,0,0, + 0,0,0,1,224,0,3,240,0,3,240,0,3,240,0,1, + 224,0,35,36,180,40,2,0,0,3,254,0,0,0,30,7, + 192,0,0,112,0,112,0,1,192,0,24,0,3,128,0,12, + 0,7,0,0,6,0,14,0,0,3,0,28,0,120,1,0, + 24,1,196,225,128,56,7,7,224,128,48,14,3,224,192,112, + 12,3,192,192,96,28,3,192,64,96,56,3,192,96,224,56, + 3,192,96,192,120,3,128,96,192,112,7,128,96,192,112,7, + 128,96,192,240,7,128,96,192,224,7,0,96,192,224,15,0, + 224,192,224,15,0,192,192,224,14,0,192,96,224,30,1,128, + 96,224,62,1,128,96,224,62,3,0,96,96,78,6,0,48, + 49,143,12,0,48,31,7,240,0,24,0,0,0,0,12,0, + 0,0,0,6,0,0,0,0,3,0,0,0,0,1,192,0, + 112,0,0,112,1,192,0,0,31,255,0,0,34,35,175,37, + 2,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,15,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,0, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,28,35,140,34,3,0,255,255,240,0,7,192,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,1,224,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,3,192,7,128,3,128,7, + 128,7,0,7,128,30,0,7,255,240,0,7,128,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,3,224,7, + 128,1,224,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,3,224,7, + 128,3,224,7,128,7,192,7,128,15,128,7,192,62,0,255, + 255,240,0,26,36,144,32,3,0,0,63,0,128,0,225,224, + 128,3,128,113,128,7,0,63,128,14,0,31,128,30,0,15, + 128,28,0,7,128,60,0,3,128,60,0,3,128,124,0,3, + 128,120,0,1,128,120,0,1,128,120,0,0,128,248,0,0, + 128,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,120,0,0,192,120,0,0,192,120,0,0, + 192,60,0,0,192,60,0,0,128,60,0,1,128,28,0,1, + 128,14,0,3,0,14,0,3,0,7,0,6,0,3,128,12, + 0,0,224,56,0,0,127,224,0,33,35,175,38,3,0,255, + 255,252,0,0,7,192,15,0,0,7,128,3,192,0,7,128, + 0,224,0,7,128,0,112,0,7,128,0,120,0,7,128,0, + 60,0,7,128,0,62,0,7,128,0,30,0,7,128,0,31, + 0,7,128,0,31,0,7,128,0,15,0,7,128,0,15,0, + 7,128,0,15,128,7,128,0,15,128,7,128,0,15,128,7, + 128,0,15,128,7,128,0,15,128,7,128,0,15,128,7,128, + 0,15,128,7,128,0,15,128,7,128,0,15,128,7,128,0, + 15,0,7,128,0,31,0,7,128,0,31,0,7,128,0,30, + 0,7,128,0,30,0,7,128,0,60,0,7,128,0,60,0, + 7,128,0,120,0,7,128,0,112,0,7,128,0,224,0,7, + 128,3,192,0,7,192,15,0,0,255,255,252,0,0,28,35, + 140,34,3,0,255,255,255,240,7,192,7,240,7,128,1,240, + 7,128,0,240,7,128,0,112,7,128,0,112,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,16,7,128,32,16, + 7,128,32,16,7,128,32,0,7,128,96,0,7,128,96,0, + 7,128,96,0,7,128,224,0,7,255,224,0,7,129,224,0, + 7,128,96,0,7,128,96,0,7,128,96,0,7,128,32,16, + 7,128,32,16,7,128,32,16,7,128,0,16,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,112,7,128,0,112, + 7,128,0,240,7,128,1,240,255,255,255,240,255,255,255,240, + 27,35,140,34,4,0,255,255,255,224,15,128,15,224,7,128, + 3,224,7,128,1,224,7,128,0,224,7,128,0,224,7,128, + 0,96,7,128,0,96,7,128,0,96,7,128,0,32,7,128, + 32,32,7,128,32,32,7,128,32,0,7,128,96,0,7,128, + 96,0,7,128,96,0,7,128,224,0,7,255,224,0,7,129, + 224,0,7,128,96,0,7,128,96,0,7,128,96,0,7,128, + 32,0,7,128,32,0,7,128,32,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,15,128,0,0,255,254, + 0,0,30,36,144,34,3,0,0,63,128,192,0,224,224,192, + 3,128,56,192,7,0,29,192,14,0,15,192,14,0,7,192, + 28,0,7,192,60,0,3,192,60,0,3,192,124,0,1,192, + 120,0,1,192,120,0,0,192,120,0,0,192,248,0,0,192, + 248,0,0,0,248,0,0,0,248,0,0,0,248,0,0,0, + 248,0,255,252,248,0,255,252,248,0,7,192,248,0,7,192, + 248,0,7,192,248,0,7,192,120,0,7,192,120,0,7,192, + 124,0,7,192,60,0,7,192,60,0,7,192,28,0,15,192, + 30,0,15,192,14,0,28,192,7,0,24,192,3,0,48,192, + 1,192,224,192,0,127,128,192,33,35,175,38,3,0,255,252, + 31,255,128,7,192,0,248,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,255, + 255,240,0,7,128,0,240,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,128, + 0,240,0,7,192,0,248,0,255,252,31,255,128,14,35,70, + 19,3,0,255,252,7,192,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,192,255,252,23,35,105,27,2,0,0, + 127,254,0,7,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,60,3,192,126,3,192,254,3,192, + 254,3,192,252,3,192,224,3,128,224,7,128,96,7,0,112, + 14,0,56,28,0,15,248,0,32,35,140,37,3,0,255,252, + 63,254,7,192,15,240,7,128,7,192,7,128,3,128,7,128, + 7,0,7,128,6,0,7,128,12,0,7,128,28,0,7,128, + 56,0,7,128,112,0,7,128,224,0,7,129,192,0,7,129, + 128,0,7,131,128,0,7,135,128,0,7,143,192,0,7,155, + 224,0,7,179,224,0,7,225,240,0,7,193,240,0,7,128, + 248,0,7,128,248,0,7,128,124,0,7,128,124,0,7,128, + 62,0,7,128,62,0,7,128,31,0,7,128,31,0,7,128, + 15,128,7,128,15,192,7,128,7,192,7,128,7,224,7,128, + 3,224,7,192,7,248,255,252,127,255,27,35,140,33,3,0, + 255,254,0,0,7,192,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,32,7,128,0,96, + 7,128,0,96,7,128,0,96,7,128,0,96,7,128,0,224, + 7,128,0,224,7,128,0,224,7,128,1,224,7,128,3,224, + 7,128,7,224,255,255,255,224,255,255,255,224,36,35,175,41, + 3,0,255,224,0,63,240,7,224,0,62,0,7,224,0,126, + 0,7,240,0,94,0,7,240,0,94,0,6,240,0,222,0, + 6,248,0,222,0,6,248,0,158,0,6,120,0,158,0,6, + 120,1,158,0,6,124,1,158,0,6,60,1,30,0,6,60, + 1,30,0,6,62,3,30,0,6,62,3,30,0,6,30,2, + 30,0,6,30,2,30,0,6,31,6,30,0,6,15,4,30, + 0,6,15,4,30,0,6,15,140,30,0,6,7,140,30,0, + 6,7,136,30,0,6,7,200,30,0,6,7,216,30,0,6, + 3,216,30,0,6,3,208,30,0,6,3,240,30,0,6,1, + 240,30,0,6,1,240,30,0,6,1,224,30,0,6,0,224, + 30,0,15,0,224,30,0,31,128,192,62,0,255,240,195,255, + 240,33,36,180,38,3,255,255,192,7,255,128,7,192,0,252, + 0,7,224,0,120,0,7,240,0,48,0,7,240,0,48,0, + 7,248,0,48,0,6,248,0,48,0,6,124,0,48,0,6, + 126,0,48,0,6,62,0,48,0,6,31,0,48,0,6,31, + 0,48,0,6,15,128,48,0,6,15,192,48,0,6,7,192, + 48,0,6,3,224,48,0,6,3,224,48,0,6,1,240,48, + 0,6,1,248,48,0,6,0,248,48,0,6,0,124,48,0, + 6,0,124,48,0,6,0,62,48,0,6,0,63,48,0,6, + 0,31,48,0,6,0,15,176,0,6,0,15,176,0,6,0, + 7,240,0,6,0,7,240,0,6,0,3,240,0,6,0,1, + 240,0,6,0,1,240,0,15,0,0,240,0,31,128,0,112, + 0,255,240,0,112,0,0,0,0,48,0,28,36,144,33,3, + 0,0,31,128,0,0,240,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,28,0,3, + 128,60,0,3,192,60,0,3,192,124,0,3,224,120,0,1, + 224,120,0,1,224,248,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,124,0,3,224,124,0,3,224,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,15, + 0,7,0,14,0,3,128,28,0,0,224,112,0,0,127,224, + 0,28,35,140,33,3,0,255,255,240,0,7,192,30,0,7, + 128,7,128,7,128,7,192,7,128,3,224,7,128,3,224,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,3,224,7,128,3,224,7, + 128,7,192,7,128,7,128,7,128,30,0,7,255,248,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,192,0,0,255, + 254,0,0,28,44,176,33,3,248,0,31,128,0,0,240,240, + 0,1,192,56,0,3,128,28,0,7,0,14,0,14,0,7, + 0,30,0,7,128,28,0,3,128,60,0,3,192,60,0,3, + 192,124,0,3,224,120,0,1,224,120,0,1,224,248,0,1, + 224,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,120,0,1,224,120,0,1,224,124,0,3, + 224,124,0,3,224,60,15,3,192,60,25,195,192,30,48,199, + 128,14,96,231,128,15,96,111,0,7,96,126,0,3,224,124, + 16,0,240,120,16,0,127,240,16,0,0,112,16,0,0,112, + 16,0,0,120,48,0,0,120,32,0,0,124,96,0,0,63, + 192,0,0,63,192,0,0,15,0,30,35,140,35,3,0,255, + 255,248,0,7,192,62,0,7,128,15,128,7,128,7,192,7, + 128,7,192,7,128,3,224,7,128,3,224,7,128,3,224,7, + 128,3,224,7,128,3,224,7,128,3,192,7,128,7,192,7, + 128,7,128,7,128,15,0,7,128,60,0,7,255,224,0,7, + 128,240,0,7,128,56,0,7,128,28,0,7,128,30,0,7, + 128,30,0,7,128,31,0,7,128,15,0,7,128,15,0,7, + 128,15,0,7,128,15,0,7,128,15,128,7,128,15,132,7, + 128,15,132,7,128,15,132,7,128,15,132,7,128,15,140,7, + 128,7,248,7,192,7,248,255,254,3,240,23,36,108,30,4, + 0,3,240,0,14,28,24,56,7,24,48,3,248,112,1,248, + 96,0,248,224,0,120,224,0,56,224,0,56,224,0,56,224, + 0,24,240,0,24,248,0,8,126,0,8,127,192,0,63,240, + 0,31,252,0,15,255,128,3,255,224,0,255,240,128,63,248, + 128,7,252,128,1,252,192,0,126,192,0,62,192,0,30,224, + 0,14,224,0,14,240,0,14,240,0,14,248,0,12,252,0, + 28,222,0,24,199,0,48,195,128,96,128,255,192,28,35,140, + 35,4,0,255,255,255,240,254,15,131,240,248,15,1,240,240, + 15,0,240,224,15,0,112,192,15,0,112,192,15,0,48,192, + 15,0,48,192,15,0,48,128,15,0,16,128,15,0,16,128, + 15,0,16,128,15,0,16,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,128,0,3,255,254,0,34, + 35,175,39,3,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,34,36,180,37,2,255,255,255,7,255,192,15, + 240,0,126,0,3,224,0,56,0,3,224,0,56,0,3,240, + 0,48,0,1,240,0,48,0,1,240,0,48,0,0,248,0, + 96,0,0,248,0,96,0,0,248,0,96,0,0,124,0,192, + 0,0,124,0,192,0,0,124,0,192,0,0,62,0,192,0, + 0,62,1,128,0,0,62,1,128,0,0,31,1,128,0,0, + 31,3,0,0,0,31,3,0,0,0,15,131,0,0,0,15, + 134,0,0,0,15,134,0,0,0,7,198,0,0,0,7,204, + 0,0,0,3,204,0,0,0,3,236,0,0,0,3,232,0, + 0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0, + 0,0,240,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,96,0,0,0,0,96,0,0,0,0,96,0,0,49,36, + 252,52,2,255,255,254,127,255,15,255,128,15,240,15,248,1, + 248,0,3,224,3,240,0,240,0,3,224,3,224,0,96,0, + 3,224,3,240,0,96,0,1,240,3,240,0,96,0,1,240, + 3,240,0,192,0,1,240,3,240,0,192,0,0,240,7,248, + 0,192,0,0,248,6,248,0,128,0,0,248,6,248,1,128, + 0,0,248,6,124,1,128,0,0,120,14,124,1,128,0,0, + 124,12,124,3,0,0,0,124,12,62,3,0,0,0,60,28, + 62,3,0,0,0,60,24,62,6,0,0,0,60,24,30,6, + 0,0,0,62,24,31,6,0,0,0,30,56,31,12,0,0, + 0,30,48,31,12,0,0,0,30,48,15,140,0,0,0,15, + 48,15,152,0,0,0,15,112,15,152,0,0,0,15,96,7, + 216,0,0,0,15,96,7,208,0,0,0,7,224,7,240,0, + 0,0,7,192,3,240,0,0,0,7,192,3,240,0,0,0, + 3,192,3,224,0,0,0,3,192,3,224,0,0,0,3,128, + 1,224,0,0,0,1,128,1,192,0,0,0,1,128,1,192, + 0,0,0,1,128,0,192,0,0,0,1,0,0,128,0,0, + 33,35,175,36,2,0,127,255,31,255,0,3,240,3,240,0, + 1,240,1,224,0,1,240,1,192,0,0,248,1,128,0,0, + 120,3,0,0,0,124,3,0,0,0,60,6,0,0,0,62, + 14,0,0,0,31,12,0,0,0,31,24,0,0,0,15,152, + 0,0,0,15,176,0,0,0,7,224,0,0,0,7,224,0, + 0,0,3,224,0,0,0,3,224,0,0,0,1,240,0,0, + 0,3,240,0,0,0,3,248,0,0,0,6,248,0,0,0, + 14,124,0,0,0,12,124,0,0,0,24,62,0,0,0,56, + 62,0,0,0,48,31,0,0,0,96,31,0,0,0,224,15, + 128,0,0,192,15,128,0,1,128,7,192,0,3,128,7,192, + 0,3,128,3,224,0,7,128,3,240,0,31,192,3,248,0, + 255,248,63,255,128,32,35,140,35,2,0,255,254,15,255,15, + 224,1,248,7,224,0,240,3,224,0,96,3,240,0,64,1, + 240,0,192,1,248,0,128,0,248,0,128,0,252,1,0,0, + 124,3,0,0,62,2,0,0,62,6,0,0,31,4,0,0, + 31,12,0,0,15,136,0,0,7,216,0,0,7,208,0,0, + 3,240,0,0,3,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,240,0,0,127,255,192,26,35,140,32,3,0,63,255,255, + 192,63,128,15,128,62,0,31,128,60,0,31,0,56,0,62, + 0,56,0,62,0,48,0,124,0,48,0,252,0,96,0,248, + 0,96,1,240,0,64,3,240,0,64,3,224,0,0,7,192, + 0,0,7,192,0,0,15,128,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,252,0, + 0,0,248,0,64,1,240,0,64,3,240,0,64,3,224,0, + 192,7,192,0,192,7,192,0,192,15,128,1,192,31,128,1, + 192,31,0,3,192,62,0,3,192,126,0,7,192,124,0,15, + 128,248,0,63,128,255,255,255,128,10,45,90,19,6,247,255, + 192,254,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,254,0,255,192,16,46,92,22,3,246,192, + 0,192,0,192,0,96,0,96,0,96,0,48,0,48,0,48, + 0,24,0,24,0,24,0,12,0,12,0,12,0,6,0,6, + 0,6,0,2,0,3,0,3,0,3,0,1,128,1,128,1, + 128,0,192,0,192,0,192,0,96,0,96,0,96,0,48,0, + 48,0,48,0,24,0,24,0,24,0,12,0,12,0,12,0, + 6,0,6,0,6,0,3,0,3,0,3,10,45,90,19,3, + 247,255,192,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,31,192,255,192,22,18,54,28,3, + 17,0,16,0,0,48,0,0,56,0,0,120,0,0,108,0, + 0,206,0,1,198,0,1,131,0,3,3,0,7,1,128,6, + 1,192,14,0,192,28,0,96,24,0,112,56,0,48,48,0, + 56,96,0,24,224,0,12,25,2,8,25,0,248,255,255,255, + 128,255,255,255,128,8,9,9,22,4,25,224,240,240,120,60, + 12,6,3,1,21,22,66,24,2,1,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,22,35,105,25, + 1,0,255,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,31,128,15,32,224,15, + 64,240,15,192,112,15,128,120,15,128,120,15,0,120,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,60, + 15,0,60,15,0,60,15,0,120,15,0,120,15,128,120,13, + 128,112,12,192,224,12,96,224,8,63,128,17,22,66,21,2, + 1,7,252,0,14,6,0,28,3,0,56,3,0,56,3,128, + 120,15,128,120,15,128,240,15,128,240,7,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,56,1,0,56,1,0,28,2,0,14,6,0, + 7,248,0,22,35,105,25,2,0,0,63,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 15,227,192,28,19,192,60,11,192,56,15,192,120,7,192,120, + 7,192,120,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,120,3,192, + 120,3,192,120,7,192,56,7,192,60,15,192,28,27,192,7, + 243,252,18,22,66,22,2,1,7,248,0,14,28,0,28,14, + 0,56,15,0,56,7,128,120,7,128,120,7,128,240,7,192, + 240,7,192,240,7,192,255,255,192,240,0,0,240,0,0,240, + 0,0,240,0,128,120,0,128,120,0,128,120,1,128,56,1, + 0,28,3,0,14,6,0,7,252,0,16,35,70,16,1,0, + 0,248,3,198,7,3,15,7,14,15,14,15,30,15,30,6, + 30,0,30,0,30,0,30,0,30,0,255,240,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,255,240,23,33,99,27,3,246,7,252,124,30, + 14,206,60,7,142,124,7,158,120,3,222,120,3,192,120,3, + 192,120,3,192,120,3,192,120,3,192,60,7,128,28,7,128, + 14,14,0,3,248,0,28,0,0,96,0,0,192,0,0,192, + 0,0,224,0,0,255,255,128,127,255,224,15,255,240,28,0, + 112,48,0,56,96,0,24,192,0,24,192,0,24,192,0,24, + 192,0,48,96,0,48,120,0,96,30,7,192,3,254,0,24, + 35,105,27,1,0,255,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,15,192,15, + 48,240,15,32,112,15,64,120,15,128,120,15,128,120,15,0, + 120,15,0,120,15,0,120,15,0,120,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,120,15,0,120,15,0,120,15, + 0,120,15,0,120,15,0,120,15,0,120,255,195,255,10,34, + 68,14,2,0,28,0,62,0,62,0,62,0,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,255,192,13,45,90,16,254,245,0,112, + 0,248,0,248,0,248,0,112,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,248,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,240,120,240,120,240,112, + 224,240,96,224,115,192,31,0,22,35,105,24,1,0,254,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,15,252,30,3,224,30,1,128,30,3, + 0,30,6,0,30,6,0,30,12,0,30,24,0,30,48,0, + 30,120,0,30,248,0,30,188,0,31,190,0,31,30,0,30, + 15,0,30,15,128,30,7,128,30,3,192,30,3,224,30,1, + 224,30,3,240,255,207,252,11,35,70,13,1,0,254,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,255,224,36,22,110,40,2,1,254,63,129,252,0,30,97, + 195,14,0,30,193,230,15,0,30,128,228,7,128,31,0,248, + 7,128,31,0,248,7,128,30,0,240,7,128,30,0,240,7, + 128,30,0,240,7,128,30,0,240,7,128,30,0,240,7,128, + 30,0,240,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,255,199,254,63,240,23,22,66,27,2,1,254,31,128, + 30,97,224,30,192,224,30,128,240,31,0,240,31,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,255,199,254,19, + 22,66,24,2,1,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,22,33,99,25,1,246,254,63,128, + 30,97,192,30,192,224,31,128,112,31,0,120,31,0,120,30, + 0,120,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,120,30,0,120, + 31,0,120,31,0,112,31,128,224,30,192,192,30,127,128,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,255,224,0, + 22,33,99,25,2,246,7,240,64,28,24,192,28,12,192,56, + 12,192,120,7,192,120,7,192,120,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,120,3,192,120,3,192,120,7,192,56,7,192,60, + 15,192,28,27,192,7,243,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,31,252,17,22,66,20,2,1,254, + 31,0,30,35,128,30,67,128,30,207,128,30,143,128,31,143, + 0,31,2,0,31,0,0,31,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,22,3,1,31,226,0,112,50,0,96,30,0, + 192,14,0,192,6,0,224,2,0,240,2,0,252,0,0,127, + 0,0,63,192,0,31,248,0,7,254,0,128,255,0,192,31, + 0,192,7,128,224,3,128,224,1,128,240,1,128,240,1,128, + 248,3,0,198,7,0,131,252,0,14,32,64,17,1,0,2, + 0,2,0,2,0,2,0,2,0,6,0,6,0,6,0,14, + 0,30,0,255,248,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,4,30,4,30,4,30,12,15,8,15,248,7,240,23, + 22,66,27,2,0,254,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,30,1,240,30,1,240,30,2,240,14,6, + 240,15,12,240,3,240,254,24,23,69,26,1,255,255,225,255, + 31,0,124,15,0,48,15,0,48,15,0,32,7,128,96,7, + 128,96,3,192,64,3,192,192,1,192,192,1,224,128,1,225, + 128,0,241,128,0,241,0,0,113,0,0,123,0,0,58,0, + 0,62,0,0,62,0,0,28,0,0,28,0,0,12,0,0, + 8,0,36,23,115,38,1,255,255,231,255,31,240,31,1,248, + 7,128,31,0,240,3,0,15,0,120,3,0,15,0,120,2, + 0,7,128,120,6,0,7,128,252,6,0,3,128,252,4,0, + 3,192,188,12,0,3,192,158,12,0,1,225,158,8,0,1, + 225,14,24,0,0,225,15,24,0,0,243,15,16,0,0,242, + 7,48,0,0,114,7,176,0,0,126,7,160,0,0,62,3, + 224,0,0,60,3,192,0,0,28,1,192,0,0,28,1,192, + 0,0,24,1,128,0,0,8,0,128,0,22,22,66,26,2, + 0,255,207,248,31,3,192,31,3,128,15,3,0,7,131,0, + 7,198,0,3,196,0,1,236,0,1,248,0,0,240,0,0, + 112,0,0,120,0,0,124,0,0,220,0,1,158,0,1,15, + 0,3,15,0,6,7,128,4,7,192,12,3,192,28,3,224, + 255,15,252,24,33,99,26,1,245,255,225,255,31,0,120,15, + 0,48,15,0,48,7,0,32,7,128,96,7,128,96,3,192, + 64,3,192,192,3,192,192,1,224,128,1,225,128,0,225,128, + 0,241,128,0,241,0,0,115,0,0,123,0,0,122,0,0, + 62,0,0,62,0,0,60,0,0,28,0,0,28,0,0,24, + 0,0,24,0,0,24,0,24,48,0,60,48,0,60,48,0, + 60,96,0,56,96,0,31,192,0,15,0,0,17,22,66,22, + 2,0,255,255,128,248,7,128,224,15,0,224,31,0,192,30, + 0,192,60,0,128,124,0,128,120,0,0,240,0,1,240,0, + 1,224,0,3,192,0,7,192,0,7,128,128,15,0,128,31, + 0,128,30,0,128,60,1,128,124,1,128,120,3,128,240,15, + 128,255,255,128,11,45,90,21,6,247,0,224,1,128,7,0, + 14,0,12,0,28,0,28,0,28,0,28,0,30,0,30,0, + 14,0,14,0,15,0,15,0,7,0,7,0,7,0,7,0, + 6,0,4,0,24,0,224,0,56,0,12,0,6,0,6,0, + 7,0,7,0,7,0,15,0,15,0,15,0,14,0,30,0, + 30,0,28,0,28,0,28,0,28,0,12,0,12,0,6,0, + 3,128,0,224,2,46,46,14,6,246,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,45,90,20,4,247,192,0, + 112,0,28,0,12,0,6,0,7,0,7,0,7,0,7,0, + 15,0,15,0,14,0,30,0,30,0,30,0,28,0,28,0, + 28,0,28,0,12,0,4,0,3,0,0,224,3,0,6,0, + 12,0,28,0,28,0,28,0,28,0,30,0,30,0,30,0, + 14,0,15,0,15,0,7,0,7,0,7,0,7,0,6,0, + 6,0,12,0,56,0,224,0,28,9,36,32,2,8,31,128, + 0,192,127,240,0,96,127,252,0,48,227,255,0,48,192,127, + 224,48,192,31,248,112,192,3,255,224,96,0,255,192,48,0, + 31,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,14,0,0,6,33,33,14,4,246,120, + 252,252,252,120,0,0,48,48,48,48,48,48,48,48,48,48, + 48,120,120,120,120,120,120,248,252,252,252,252,252,252,252,120, + 17,34,102,28,5,250,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,7,252,0,14,198,0,28,195, + 0,56,195,128,120,195,128,120,207,128,120,207,128,248,207,128, + 240,199,0,240,192,0,240,192,0,240,192,0,240,192,0,240, + 192,0,248,192,128,120,192,128,120,192,128,120,193,128,56,193, + 0,28,195,0,14,198,0,7,252,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,28,34,136,35, + 3,0,0,0,126,0,0,1,227,128,0,3,128,192,0,7, + 0,192,0,14,0,224,0,14,1,224,0,28,3,224,0,28, + 3,224,0,60,3,192,0,60,0,128,0,60,0,0,0,60, + 0,0,0,60,0,0,0,60,0,0,0,60,0,0,31,252, + 0,0,0,127,248,0,0,124,0,0,0,124,0,0,0,60, + 0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60, + 0,0,0,56,0,0,0,56,0,16,62,56,0,32,99,240, + 0,32,193,240,0,96,128,120,0,64,128,254,0,192,128,159, + 255,128,193,7,255,0,126,1,254,0,24,24,72,28,2,5, + 64,0,2,224,126,7,115,255,206,63,129,252,30,0,120,28, + 0,56,56,0,24,48,0,12,48,0,12,96,0,6,96,0, + 6,96,0,6,96,0,6,96,0,6,96,0,6,112,0,12, + 48,0,12,56,0,28,28,0,56,30,0,120,63,129,252,115, + 255,206,224,126,7,64,0,2,27,33,132,29,1,0,255,224, + 127,224,31,0,15,0,15,0,6,0,15,128,6,0,7,128, + 12,0,7,192,12,0,3,192,24,0,3,224,24,0,1,224, + 48,0,1,240,32,0,0,240,96,0,0,248,64,0,0,248, + 192,0,0,124,128,0,0,125,128,0,0,63,0,0,0,63, + 0,0,15,255,252,0,0,30,0,0,0,30,0,0,0,30, + 0,0,15,255,252,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,31,0,0,3,255, + 240,0,2,44,44,14,6,248,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,18,43,129,31,5,247,1,240,0,6,24,0, + 12,12,0,24,30,0,56,62,0,56,62,0,56,62,0,56, + 8,0,60,0,0,30,0,0,31,0,0,15,128,0,7,192, + 0,15,224,0,25,240,0,48,252,0,96,126,0,64,63,0, + 192,15,128,192,7,128,192,3,192,224,1,192,240,0,192,120, + 0,192,124,0,192,62,0,128,31,1,128,15,131,0,7,198, + 0,3,248,0,1,240,0,0,248,0,0,124,0,0,60,0, + 0,30,0,0,14,0,30,14,0,62,14,0,62,14,0,60, + 12,0,24,28,0,12,56,0,7,224,0,14,5,10,22,4, + 27,112,56,248,124,248,124,248,124,112,56,35,36,180,40,3, + 0,0,7,252,0,0,0,60,7,128,0,0,224,0,192,0, + 1,128,0,48,0,3,0,0,24,0,4,0,0,12,0,8, + 0,0,6,0,24,1,240,131,0,48,7,28,129,0,32,30, + 7,128,128,96,28,3,128,128,64,56,1,128,64,64,120,1, + 128,64,192,120,0,128,64,128,120,0,128,96,128,248,0,0, + 32,128,240,0,0,32,128,240,0,0,32,128,240,0,0,32, + 128,240,0,0,32,128,240,0,0,32,128,240,0,0,32,128, + 248,0,128,96,64,120,0,128,64,64,120,0,128,64,96,56, + 1,128,192,32,60,1,0,128,48,30,3,1,128,16,15,14, + 3,0,24,3,248,2,0,12,0,0,6,0,6,0,0,12, + 0,3,128,0,56,0,0,192,0,96,0,0,120,3,192,0, + 0,31,254,0,0,13,17,34,19,3,17,62,0,99,0,193, + 128,225,128,225,128,3,128,13,128,49,128,113,128,225,128,225, + 136,225,136,247,152,120,240,0,0,0,0,255,240,13,19,38, + 23,5,1,4,0,12,24,24,48,48,32,112,96,96,96,96, + 192,224,192,224,192,224,192,224,192,224,192,224,192,96,192,112, + 96,48,96,56,48,24,16,12,0,23,10,30,29,3,8,255, + 255,254,255,255,254,0,0,6,0,0,6,0,0,6,0,0, + 6,0,0,6,0,0,6,0,0,6,0,0,6,12,3,6, + 18,3,11,255,240,255,240,255,240,35,36,180,40,3,0,0, + 7,252,0,0,0,60,7,128,0,0,224,0,192,0,1,128, + 0,48,0,3,0,0,24,0,4,0,0,12,0,8,0,0, + 6,0,25,255,248,3,0,48,60,30,1,0,32,60,15,0, + 128,96,60,7,128,128,64,60,7,128,64,64,60,7,128,64, + 192,60,7,128,64,128,60,7,128,96,128,60,15,0,32,128, + 60,30,0,32,128,63,240,0,32,128,60,28,0,32,128,60, + 14,0,32,128,60,7,0,32,128,60,7,0,32,128,60,7, + 128,96,64,60,7,128,64,64,60,7,132,64,64,60,7,132, + 192,32,60,7,136,128,48,60,3,201,128,17,255,129,241,0, + 24,0,0,2,0,12,0,0,6,0,6,0,0,12,0,3, + 0,0,24,0,0,192,0,96,0,0,112,1,192,0,0,31, + 254,0,0,13,2,4,21,4,28,255,248,255,248,14,13,26, + 29,8,21,15,192,56,96,112,48,96,24,192,8,192,12,192, + 12,192,12,192,12,96,24,96,24,56,112,15,192,41,34,204, + 45,2,254,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,255,255,255,255,255,128,255,255,255,255,255,128,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,255,255,255,128,255,255,255,255,255,128,14, + 21,42,22,4,13,15,192,49,240,96,120,192,124,192,60,224, + 60,248,60,120,60,48,120,0,112,0,224,1,192,3,128,6, + 0,12,0,48,4,32,4,96,12,127,248,255,248,255,248,14, + 21,42,22,5,13,15,192,56,224,96,112,96,56,112,56,120, + 56,48,56,0,112,0,224,63,128,56,224,0,120,0,56,0, + 60,112,60,248,60,240,60,192,56,192,120,96,240,31,192,8, + 9,9,22,10,25,7,15,15,30,60,48,96,192,128,25,36, + 144,29,3,243,112,1,192,0,240,3,192,0,240,3,224,0, + 240,3,224,0,240,3,224,0,240,3,224,0,240,3,224,0, + 240,3,224,0,240,3,224,0,240,3,224,0,224,3,224,0, + 224,1,192,0,224,1,192,0,96,1,192,0,96,1,192,0, + 96,1,192,0,96,1,128,0,96,3,129,128,112,7,193,128, + 88,15,127,128,79,254,63,128,67,252,31,0,64,0,0,0, + 192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0, + 192,0,0,0,224,0,0,0,224,0,0,0,240,0,0,0, + 240,0,0,0,240,0,0,0,248,0,0,0,120,0,0,0, + 120,0,0,0,20,42,126,26,3,249,7,255,240,31,193,128, + 63,193,128,127,193,128,127,193,128,255,193,128,255,193,128,255, + 193,128,255,193,128,255,193,128,255,193,128,127,193,128,127,193, + 128,63,193,128,15,193,128,0,193,128,0,193,128,0,193,128, + 0,193,128,0,193,128,0,193,128,0,193,128,0,193,128,0, + 193,128,0,193,128,0,193,128,0,193,128,0,193,128,0,193, + 128,0,193,128,0,193,128,0,193,128,0,193,128,0,193,128, + 0,193,128,0,193,128,0,193,128,0,193,128,0,193,128,0, + 193,128,0,193,128,0,193,128,6,6,6,14,4,12,120,252, + 252,252,252,120,10,10,20,21,5,246,8,0,8,0,24,0, + 15,0,3,128,1,192,1,192,1,192,195,128,63,0,11,20, + 40,21,5,14,2,0,6,0,14,0,254,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,255,224,12,17,34,18, + 3,17,15,0,57,192,112,192,96,224,224,96,224,112,224,112, + 224,112,224,112,224,112,96,96,112,224,49,192,31,0,0,0, + 0,0,255,240,13,19,38,23,5,1,1,0,193,128,96,192, + 32,96,48,112,48,48,24,48,24,56,24,56,24,56,24,56, + 24,56,24,56,24,48,48,112,48,96,96,224,64,192,1,128, + 33,35,175,42,5,255,2,0,0,96,0,6,0,0,64,0, + 14,0,0,192,0,254,0,1,128,0,14,0,1,0,0,14, + 0,3,0,0,14,0,2,0,0,14,0,6,0,0,14,0, + 12,0,0,14,0,8,0,0,14,0,24,0,0,14,0,16, + 0,0,14,0,48,0,0,14,0,96,0,0,14,0,96,56, + 0,14,0,192,120,0,14,0,128,120,0,14,1,128,248,0, + 14,3,0,184,0,255,227,1,56,0,0,6,1,56,0,0, + 4,2,56,0,0,12,2,56,0,0,8,4,56,0,0,24, + 12,56,0,0,48,8,56,0,0,32,24,56,0,0,96,31, + 255,128,0,64,0,56,0,0,192,0,56,0,1,128,0,56, + 0,1,128,0,56,0,3,0,0,56,0,2,0,1,255,128, + 6,0,0,0,0,33,35,175,42,5,255,2,0,0,96,0, + 6,0,0,64,0,6,0,0,192,0,14,0,1,128,0,254, + 0,1,128,0,14,0,3,0,0,14,0,2,0,0,14,0, + 6,0,0,14,0,4,0,0,14,0,12,0,0,14,0,24, + 0,0,14,0,16,0,0,14,0,48,0,0,14,0,33,248, + 0,14,0,102,62,0,14,0,204,15,0,14,0,152,15,128, + 14,1,152,7,128,14,1,24,7,128,255,227,31,7,128,0, + 6,31,7,128,0,4,15,7,0,0,12,0,14,0,0,8, + 0,28,0,0,24,0,56,0,0,48,0,112,0,0,48,0, + 192,0,0,96,1,128,0,0,64,2,0,128,0,192,4,0, + 128,1,128,12,1,128,1,128,15,255,0,3,0,15,255,0, + 2,0,31,255,0,6,0,0,0,0,33,35,175,42,5,255, + 15,192,0,48,0,56,224,0,96,0,96,112,0,96,0,96, + 56,0,192,0,112,56,0,128,0,120,56,1,128,0,48,56, + 3,0,0,0,112,3,0,0,0,224,6,0,0,63,128,4, + 0,0,56,224,12,0,0,0,120,24,0,0,0,56,24,0, + 0,0,60,48,0,0,112,60,32,28,0,248,60,96,28,0, + 240,60,192,60,0,192,120,192,92,0,96,241,128,92,0,63, + 193,0,156,0,0,3,1,156,0,0,6,1,28,0,0,6, + 2,28,0,0,12,6,28,0,0,8,4,28,0,0,24,8, + 28,0,0,48,24,28,0,0,48,31,255,128,0,96,0,28, + 0,0,64,0,28,0,0,192,0,28,0,1,128,0,28,0, + 1,128,0,28,0,3,0,1,255,128,2,0,0,0,0,18, + 33,99,24,2,246,1,224,0,3,240,0,3,240,0,3,240, + 0,1,224,0,0,0,0,0,0,0,1,224,0,2,48,0, + 4,24,0,4,24,0,4,24,0,4,24,0,0,48,0,0, + 112,0,0,224,0,1,192,0,7,128,0,15,0,0,30,0, + 0,60,0,0,124,0,0,120,15,0,248,31,128,240,31,192, + 240,15,192,240,0,192,240,0,192,120,0,192,120,1,128,60, + 3,0,15,14,0,3,248,0,34,46,230,37,2,0,0,56, + 0,0,0,0,60,0,0,0,0,60,0,0,0,0,30,0, + 0,0,0,15,0,0,0,0,3,128,0,0,0,1,128,0, + 0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,224,0,0,0,1,224,0,0,0,1,224,0,0,0,3, + 240,0,0,0,3,240,0,0,0,3,240,0,0,0,6,248, + 0,0,0,6,248,0,0,0,6,248,0,0,0,12,124,0, + 0,0,12,124,0,0,0,12,124,0,0,0,24,62,0,0, + 0,24,62,0,0,0,24,30,0,0,0,48,31,0,0,0, + 48,31,0,0,0,48,15,0,0,0,96,15,128,0,0,96, + 15,128,0,0,96,7,128,0,0,255,255,192,0,0,255,255, + 192,0,0,192,3,192,0,1,128,3,224,0,1,128,3,224, + 0,3,128,1,224,0,3,0,1,240,0,3,0,1,240,0, + 7,0,0,240,0,7,0,0,248,0,31,128,1,252,0,255, + 248,31,255,192,34,46,230,37,2,0,0,0,7,0,0,0, + 0,15,0,0,0,0,15,0,0,0,0,30,0,0,0,0, + 60,0,0,0,0,48,0,0,0,0,96,0,0,0,0,192, + 0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,3,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,6,248,0,0,0,6, + 248,0,0,0,6,248,0,0,0,12,124,0,0,0,12,124, + 0,0,0,12,124,0,0,0,24,62,0,0,0,24,62,0, + 0,0,24,30,0,0,0,48,31,0,0,0,48,31,0,0, + 0,48,15,0,0,0,96,15,128,0,0,96,15,128,0,0, + 224,7,128,0,0,255,255,192,0,0,255,255,192,0,1,192, + 3,192,0,1,128,3,224,0,1,128,3,224,0,3,128,1, + 224,0,3,0,1,240,0,3,0,1,240,0,7,0,0,240, + 0,15,128,0,248,0,255,248,31,255,192,255,248,31,255,192, + 34,45,225,37,2,0,0,0,192,0,0,0,1,224,0,0, + 0,3,240,0,0,0,7,56,0,0,0,14,28,0,0,0, + 28,14,0,0,0,48,3,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0, + 0,6,248,0,0,0,6,248,0,0,0,6,248,0,0,0, + 12,124,0,0,0,12,124,0,0,0,12,124,0,0,0,24, + 62,0,0,0,24,62,0,0,0,24,30,0,0,0,48,31, + 0,0,0,48,31,0,0,0,48,15,0,0,0,96,15,128, + 0,0,96,15,128,0,0,96,7,128,0,0,255,255,192,0, + 0,255,255,192,0,0,192,3,192,0,1,128,3,224,0,1, + 128,3,224,0,3,128,1,224,0,3,0,1,240,0,3,0, + 1,240,0,7,0,0,240,0,7,0,0,248,0,31,128,1, + 252,0,255,248,31,255,192,34,45,225,37,2,0,0,15,0, + 128,0,0,31,225,128,0,0,63,255,0,0,0,33,255,0, + 0,0,32,62,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,192,0,0,0,0,192,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,3,240,0,0,0,3,240, + 0,0,0,3,240,0,0,0,6,248,0,0,0,6,248,0, + 0,0,6,248,0,0,0,12,124,0,0,0,12,124,0,0, + 0,12,124,0,0,0,24,62,0,0,0,24,62,0,0,0, + 24,30,0,0,0,48,31,0,0,0,48,31,0,0,0,112, + 15,0,0,0,96,15,128,0,0,96,15,128,0,0,224,7, + 128,0,0,255,255,192,0,0,255,255,192,0,1,192,3,192, + 0,1,128,3,224,0,1,128,3,224,0,3,128,1,224,0, + 3,0,1,240,0,3,0,1,240,0,7,0,0,240,0,15, + 128,0,248,0,255,248,31,255,192,255,248,31,255,192,34,44, + 220,37,2,0,0,28,7,0,0,0,62,15,128,0,0,62, + 15,128,0,0,62,15,128,0,0,28,7,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,64,0,0,0,0,192,0,0,0,0,224,0,0, + 0,0,224,0,0,0,1,224,0,0,0,1,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,3,248,0,0,0,7, + 248,0,0,0,6,120,0,0,0,6,124,0,0,0,14,60, + 0,0,0,12,60,0,0,0,12,62,0,0,0,28,30,0, + 0,0,24,30,0,0,0,24,31,0,0,0,48,15,0,0, + 0,48,15,0,0,0,112,15,128,0,0,96,7,128,0,0, + 96,7,128,0,0,255,255,192,0,0,255,255,192,0,0,192, + 3,192,0,1,192,3,224,0,1,192,1,224,0,1,128,1, + 224,0,3,128,1,240,0,3,128,0,240,0,7,128,0,240, + 0,7,128,0,248,0,31,192,1,252,0,255,248,31,255,192, + 34,47,235,37,2,0,0,1,224,0,0,0,6,24,0,0, + 0,4,8,0,0,0,8,4,0,0,0,8,4,0,0,0, + 8,4,0,0,0,8,4,0,0,0,4,8,0,0,0,6, + 24,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,7,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,1, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,44,35,210,48,1,0,0,0,127,255,255,240,0,0,15, + 224,3,240,0,0,15,192,0,240,0,0,15,192,0,112,0, + 0,15,192,0,112,0,0,27,192,0,48,0,0,27,192,0, + 48,0,0,51,192,0,48,0,0,51,192,0,16,0,0,99, + 192,0,16,0,0,99,192,16,16,0,0,195,192,16,16,0, + 1,195,192,16,0,0,1,131,192,48,0,0,3,131,192,48, + 0,0,3,3,192,48,0,0,7,3,192,112,0,0,6,3, + 255,240,0,0,14,3,192,240,0,0,12,3,192,48,0,0, + 24,3,192,48,0,0,24,3,192,16,0,0,48,3,192,16, + 16,0,63,255,192,16,16,0,96,3,192,16,16,0,96,3, + 192,0,16,0,192,3,192,0,16,0,192,3,192,0,48,1, + 128,3,192,0,48,1,128,3,192,0,112,3,128,3,192,0, + 112,7,128,3,192,0,240,15,128,3,192,1,240,255,248,127, + 255,255,240,255,248,127,255,255,240,26,47,188,32,3,245,0, + 63,0,128,0,225,225,128,3,128,113,128,7,0,63,128,14, + 0,31,128,30,0,15,128,28,0,7,128,60,0,7,128,60, + 0,3,128,124,0,3,128,120,0,1,128,120,0,1,128,120, + 0,0,128,248,0,0,128,248,0,0,0,248,0,0,0,248, + 0,0,0,248,0,0,0,248,0,0,0,248,0,0,0,248, + 0,0,0,248,0,0,0,248,0,0,0,120,0,0,192,120, + 0,0,192,120,0,0,192,124,0,0,192,60,0,0,128,60, + 0,1,128,28,0,1,128,30,0,3,0,14,0,3,0,7, + 0,6,0,3,128,12,0,1,192,56,0,0,127,224,0,0, + 8,0,0,0,8,0,0,0,28,0,0,0,15,128,0,0, + 3,192,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 129,224,0,0,199,192,0,0,63,0,0,28,46,184,34,3, + 0,0,224,0,0,0,240,0,0,0,240,0,0,0,120,0, + 0,0,60,0,0,0,14,0,0,0,6,0,0,0,3,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 240,255,255,255,240,7,128,1,240,7,128,0,240,7,128,0, + 112,7,128,0,112,7,128,0,48,7,128,0,48,7,128,0, + 48,7,128,0,16,7,128,32,16,7,128,32,16,7,128,32, + 0,7,128,96,0,7,128,96,0,7,128,96,0,7,128,224, + 0,7,255,224,0,7,129,224,0,7,128,96,0,7,128,96, + 0,7,128,96,0,7,128,32,16,7,128,32,16,7,128,32, + 16,7,128,0,16,7,128,0,48,7,128,0,48,7,128,0, + 48,7,128,0,112,7,128,0,112,7,128,0,240,7,128,1, + 240,255,255,255,240,255,255,255,240,28,46,184,34,3,0,0, + 0,28,0,0,0,60,0,0,0,60,0,0,0,120,0,0, + 0,240,0,0,0,192,0,0,1,128,0,0,3,0,0,0, + 2,0,0,0,0,0,0,0,0,0,0,255,255,255,240,255, + 255,255,240,7,128,1,240,7,128,0,240,7,128,0,112,7, + 128,0,112,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,16,7,128,32,16,7,128,32,16,7,128,32,0,7, + 128,96,0,7,128,96,0,7,128,96,0,7,128,224,0,7, + 255,224,0,7,129,224,0,7,128,96,0,7,128,96,0,7, + 128,96,0,7,128,32,16,7,128,32,16,7,128,32,16,7, + 128,0,16,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,112,7,128,0,112,7,128,0,240,7,128,1,240,255, + 255,255,240,255,255,255,240,28,45,180,34,3,0,0,3,0, + 0,0,7,128,0,0,15,192,0,0,12,224,0,0,24,112, + 0,0,112,24,0,0,192,12,0,0,0,2,0,0,0,0, + 0,0,0,0,0,255,255,255,240,255,255,255,240,7,128,1, + 240,7,128,0,240,7,128,0,112,7,128,0,112,7,128,0, + 48,7,128,0,48,7,128,0,48,7,128,0,16,7,128,32, + 16,7,128,32,16,7,128,32,0,7,128,96,0,7,128,96, + 0,7,128,96,0,7,128,224,0,7,255,224,0,7,129,224, + 0,7,128,96,0,7,128,96,0,7,128,96,0,7,128,32, + 16,7,128,32,16,7,128,32,16,7,128,0,16,7,128,0, + 48,7,128,0,48,7,128,0,48,7,128,0,112,7,128,0, + 112,7,128,0,240,7,128,1,240,255,255,255,240,255,255,255, + 240,28,44,176,34,3,0,0,112,28,0,0,248,62,0,0, + 248,62,0,0,248,62,0,0,112,28,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,255,255,240,7, + 192,7,240,7,128,1,240,7,128,0,240,7,128,0,112,7, + 128,0,112,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,16,7,128,32,16,7,128,32,16,7,128,32,0,7, + 128,32,0,7,128,96,0,7,128,96,0,7,128,224,0,7, + 255,224,0,7,129,224,0,7,128,96,0,7,128,96,0,7, + 128,32,0,7,128,32,16,7,128,32,16,7,128,32,16,7, + 128,0,16,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,112,7,128,0,112,7,128,0,240,7,128,1,240,255, + 255,255,240,255,255,255,240,14,46,92,19,3,0,224,0,240, + 0,240,0,120,0,60,0,12,0,6,0,3,0,1,0,0, + 0,0,0,255,252,255,252,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,15,128,255,252,14,46,92,19,3,0,0, + 28,0,60,0,60,0,120,0,240,0,192,1,128,3,0,0, + 0,0,0,0,0,255,252,255,252,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,192,255,252,14,45,90,19,3, + 0,3,0,7,128,7,192,14,192,24,96,112,56,192,12,0, + 0,0,0,0,0,255,252,7,192,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,255,252,255,252,15,44,88,20,3, + 0,112,28,248,62,248,62,248,62,112,28,0,0,0,0,0, + 0,0,0,127,254,7,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,7,192,127,254,32,35,140,38,4,0,255, + 255,248,0,15,128,15,0,7,128,3,128,7,128,1,192,7, + 128,0,224,7,128,0,240,7,128,0,120,7,128,0,124,7, + 128,0,60,7,128,0,62,7,128,0,62,7,128,0,30,7, + 128,0,30,7,128,0,31,7,128,0,31,7,128,0,31,255, + 254,0,31,7,128,0,31,7,128,0,31,7,128,0,31,7, + 128,0,31,7,128,0,31,7,128,0,30,7,128,0,62,7, + 128,0,62,7,128,0,60,7,128,0,60,7,128,0,120,7, + 128,0,120,7,128,0,240,7,128,0,224,7,128,1,192,7, + 128,3,128,15,128,30,0,255,255,248,0,33,46,230,38,3, + 255,0,7,1,128,0,0,31,225,128,0,0,31,255,0,0, + 0,16,255,0,0,0,48,62,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,192,7,255,128,255,192,7,255,128,7,224,0, + 120,0,7,240,0,48,0,7,240,0,48,0,7,248,0,48, + 0,6,248,0,48,0,6,252,0,48,0,6,126,0,48,0, + 6,62,0,48,0,6,63,0,48,0,6,31,0,48,0,6, + 15,128,48,0,6,15,192,48,0,6,7,192,48,0,6,7, + 224,48,0,6,3,224,48,0,6,1,240,48,0,6,1,248, + 48,0,6,0,248,48,0,6,0,252,48,0,6,0,124,48, + 0,6,0,62,48,0,6,0,63,48,0,6,0,31,48,0, + 6,0,15,176,0,6,0,15,176,0,6,0,7,240,0,6, + 0,7,240,0,6,0,3,240,0,6,0,1,240,0,6,0, + 1,240,0,15,0,0,240,0,31,128,0,240,0,255,240,0, + 112,0,0,0,0,48,0,28,46,184,33,3,1,1,192,0, + 0,1,224,0,0,1,240,0,0,0,112,0,0,0,56,0, + 0,0,28,0,0,0,12,0,0,0,6,0,0,0,0,0, + 0,0,0,0,0,0,31,128,0,0,255,240,0,1,192,56, + 0,3,128,28,0,7,0,14,0,14,0,7,0,30,0,7, + 128,30,0,7,128,60,0,3,192,60,0,3,192,124,0,3, + 224,124,0,3,224,120,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,120,0,1,224,120,0,1,224,120,0,3,224,124,0,3, + 192,60,0,3,192,60,0,3,192,30,0,7,128,14,0,7, + 0,14,0,7,0,7,0,14,0,3,128,28,0,0,192,48, + 0,0,127,224,0,28,46,184,33,3,1,0,0,56,0,0, + 0,120,0,0,0,248,0,0,0,224,0,0,1,192,0,0, + 3,128,0,0,3,0,0,0,6,0,0,0,0,0,0,0, + 0,0,0,0,31,128,0,0,255,240,0,1,192,56,0,3, + 128,28,0,7,0,14,0,14,0,7,0,30,0,7,128,30, + 0,7,128,60,0,3,192,60,0,3,192,124,0,3,224,124, + 0,3,224,120,0,1,224,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,120, + 0,1,224,120,0,1,224,120,0,3,224,124,0,3,192,60, + 0,3,192,60,0,3,192,30,0,7,128,14,0,7,0,14, + 0,7,0,7,0,14,0,3,128,28,0,0,192,48,0,0, + 127,224,0,28,46,184,33,3,0,0,6,0,0,0,15,0, + 0,0,15,0,0,0,31,128,0,0,57,192,0,0,112,224, + 0,0,192,48,0,3,128,28,0,0,0,0,0,0,0,0, + 0,0,31,128,0,0,255,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,30,0,7, + 128,60,0,3,192,60,0,3,192,124,0,3,224,124,0,3, + 224,120,0,1,224,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,120,0,3,224,124,0,3,192,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,7, + 0,7,0,14,0,3,128,28,0,0,192,48,0,0,127,224, + 0,28,45,180,33,3,0,0,120,12,0,0,255,8,0,1, + 255,248,0,1,143,248,0,1,1,224,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0, + 255,240,0,1,192,56,0,3,128,28,0,7,0,14,0,14, + 0,7,0,30,0,7,128,30,0,7,128,60,0,3,192,60, + 0,3,192,124,0,3,224,124,0,3,224,120,0,1,224,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,120,0,1,224,120,0,1,224,120, + 0,3,224,124,0,3,192,60,0,3,192,60,0,3,192,30, + 0,7,128,14,0,7,0,14,0,7,0,7,0,14,0,3, + 128,28,0,0,192,48,0,0,127,224,0,28,45,180,33,3, + 0,0,224,56,0,1,240,124,0,1,240,124,0,1,240,124, + 0,0,224,56,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,31,128,0,0,240,240,0,1,192,56, + 0,3,128,28,0,7,0,14,0,14,0,7,0,30,0,7, + 128,28,0,3,128,60,0,3,192,60,0,3,192,124,0,3, + 224,120,0,1,224,120,0,1,224,248,0,1,224,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,120,0,1,224,120,0,1,224,124,0,3,224,124,0,3, + 224,60,0,3,192,60,0,3,192,30,0,7,128,14,0,7, + 0,14,0,15,0,7,0,14,0,3,128,28,0,0,224,112, + 0,0,127,224,0,30,30,120,46,8,254,192,0,0,12,224, + 0,0,28,112,0,0,56,56,0,0,112,28,0,0,224,14, + 0,1,192,7,0,3,128,3,128,7,0,1,192,14,0,0, + 224,28,0,0,112,56,0,0,56,112,0,0,28,224,0,0, + 15,192,0,0,7,128,0,0,7,128,0,0,15,192,0,0, + 28,224,0,0,56,112,0,0,112,56,0,0,224,28,0,1, + 192,14,0,3,128,7,0,7,0,3,128,14,0,1,192,28, + 0,0,224,56,0,0,112,112,0,0,56,224,0,0,28,192, + 0,0,12,28,36,144,33,3,0,0,31,128,32,0,240,240, + 96,1,192,56,224,3,128,30,192,7,0,15,128,14,0,7, + 128,30,0,7,128,28,0,7,128,60,0,15,192,60,0,31, + 192,124,0,59,224,120,0,49,224,120,0,97,224,248,0,225, + 240,248,1,193,240,248,1,129,240,248,3,1,240,248,7,1, + 240,248,6,1,240,248,12,1,240,248,28,1,240,248,56,1, + 240,248,48,1,240,120,96,1,224,120,224,1,224,121,192,3, + 224,125,128,3,192,63,0,3,192,63,0,3,192,30,0,7, + 128,30,0,7,0,30,0,15,0,63,0,14,0,51,128,28, + 0,97,192,112,0,192,127,224,0,34,46,230,39,3,1,0, + 28,0,0,0,0,28,0,0,0,0,30,0,0,0,0,15, + 0,0,0,0,7,0,0,0,0,1,128,0,0,0,0,192, + 0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0, + 0,255,252,3,255,192,255,252,3,255,192,7,192,0,126,0, + 7,128,0,60,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,3,192,0, + 24,0,3,192,0,48,0,1,192,0,48,0,1,224,0,96, + 0,0,224,0,96,0,0,112,0,192,0,0,60,3,128,0, + 0,15,254,0,0,34,46,230,39,3,1,0,0,7,0,0, + 0,0,15,0,0,0,0,30,0,0,0,0,28,0,0,0, + 0,56,0,0,0,0,112,0,0,0,0,96,0,0,0,0, + 128,0,0,0,0,0,0,0,0,0,0,0,0,255,252,3, + 255,192,255,252,3,255,192,7,192,0,126,0,7,128,0,60, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,3,192,0,24,0,3,192, + 0,48,0,1,192,0,48,0,1,224,0,96,0,0,224,0, + 96,0,0,112,0,192,0,0,60,3,128,0,0,15,254,0, + 0,34,46,230,39,3,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,3,240,0,0,0,3,56,0,0, + 0,6,28,0,0,0,28,6,0,0,0,48,3,128,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252, + 3,255,192,7,192,0,126,0,7,128,0,60,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,3,192,0,24,0,3,192,0,48,0,3, + 192,0,48,0,1,224,0,96,0,0,240,0,224,0,0,120, + 1,192,0,0,62,7,128,0,0,15,254,0,0,34,45,225, + 39,3,0,0,28,7,0,0,0,62,15,128,0,0,62,15, + 128,0,0,62,15,128,0,0,28,7,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,32,46,184,35,2,0,0,0,3,0,0,0, + 7,128,0,0,15,0,0,0,30,0,0,0,60,0,0,0, + 56,0,0,0,96,0,0,0,192,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,254,15,255,255,254,15,255,7,224, + 0,240,7,224,0,96,3,224,0,96,3,240,0,64,1,240, + 0,192,0,248,0,128,0,252,1,128,0,124,1,0,0,62, + 3,0,0,62,2,0,0,31,6,0,0,31,12,0,0,15, + 136,0,0,7,152,0,0,7,208,0,0,3,240,0,0,3, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,240,0,0,127, + 255,192,28,35,140,33,3,0,255,254,0,0,7,192,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,255,240,0,7,192,30,0,7,128,7,128,7,128,7,192, + 7,128,3,224,7,128,3,224,7,128,1,240,7,128,1,240, + 7,128,1,240,7,128,1,240,7,128,1,240,7,128,1,240, + 7,128,3,224,7,128,3,224,7,128,7,192,7,128,7,128, + 7,128,30,0,7,255,248,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,192,0,0, + 255,254,0,0,22,35,105,26,1,0,0,63,128,0,243,224, + 1,192,240,3,128,240,7,128,248,7,0,120,15,0,120,15, + 0,120,15,0,248,15,0,240,15,0,224,15,1,192,15,3, + 0,15,60,0,15,6,0,15,1,128,15,0,192,15,0,224, + 15,0,112,15,0,120,15,0,120,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,60,15,56, + 60,15,120,60,15,120,60,15,112,120,15,96,112,15,48,224, + 255,31,192,21,33,99,24,2,1,56,0,0,60,0,0,30, + 0,0,14,0,0,7,0,0,3,128,0,1,128,0,0,192, + 0,0,0,0,0,0,0,0,0,0,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,21,33,99,24, + 2,1,0,7,0,0,15,128,0,15,0,0,30,0,0,60, + 0,0,48,0,0,96,0,0,192,0,0,0,0,0,0,0, + 0,0,0,7,248,0,24,30,0,16,15,0,48,7,0,56, + 7,128,60,7,128,62,7,128,28,7,128,0,7,128,0,31, + 128,3,247,128,31,7,128,60,7,128,120,7,128,248,7,128, + 240,7,128,240,15,136,240,15,136,240,23,136,248,23,152,120, + 39,240,63,195,240,21,33,99,24,2,0,0,192,0,0,224, + 0,1,224,0,1,240,0,3,48,0,6,24,0,12,12,0, + 24,2,0,0,0,0,0,0,0,0,0,0,7,248,0,24, + 30,0,16,15,0,48,7,0,56,7,128,60,7,128,62,7, + 128,28,7,128,0,7,128,0,31,128,3,247,128,31,7,128, + 60,7,128,120,7,128,248,7,128,240,7,128,240,15,136,240, + 15,136,240,23,136,248,23,152,120,39,240,63,195,240,21,32, + 96,24,2,0,15,129,0,31,227,0,31,255,0,16,254,0, + 32,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,7,248,0,24,30,0,16,15,0,48,7,0,56,7, + 128,60,7,128,62,7,128,28,7,128,0,7,128,0,31,128, + 3,247,128,31,7,128,60,7,128,120,7,128,248,7,128,240, + 7,128,240,15,136,240,15,136,240,23,136,248,23,152,120,39, + 240,63,195,240,21,32,96,24,2,0,28,14,0,62,31,0, + 62,31,0,62,31,0,28,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,7,248,0,24,30,0,16,15, + 0,48,7,0,56,7,128,60,7,128,62,7,128,28,7,128, + 0,7,128,0,31,128,3,247,128,31,7,128,60,7,128,120, + 7,128,248,7,128,240,7,128,240,15,136,240,15,136,240,23, + 136,248,23,152,120,39,240,63,195,240,21,34,102,24,2,0, + 1,224,0,2,24,0,4,8,0,8,4,0,8,4,0,8, + 4,0,4,12,0,6,24,0,1,240,0,0,0,0,0,0, + 0,0,0,0,7,248,0,24,30,0,16,15,0,48,7,0, + 56,7,128,60,7,128,60,7,128,28,7,128,0,7,128,0, + 31,128,3,247,128,31,7,128,60,7,128,120,7,128,248,7, + 128,240,7,128,240,15,136,240,15,136,240,31,136,248,23,152, + 120,39,240,63,195,240,30,22,88,34,2,1,7,248,63,128, + 24,30,97,224,16,15,224,224,48,7,192,112,56,7,192,120, + 60,7,128,120,62,7,128,120,30,7,128,60,0,7,128,60, + 0,15,128,60,1,247,255,252,15,7,128,0,60,7,128,0, + 120,7,128,0,248,7,128,0,240,7,128,8,240,15,128,8, + 240,11,192,8,240,27,192,16,248,17,224,48,120,32,240,96, + 63,192,127,192,17,32,96,21,2,247,7,252,0,14,6,0, + 28,3,0,56,3,0,56,3,128,120,15,128,120,15,128,240, + 15,128,240,7,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,128,120,0,128,120,0,128,120,1,0, + 56,1,0,28,2,0,14,6,0,7,248,0,0,128,0,0, + 128,0,1,128,0,0,240,0,0,56,0,0,28,0,0,28, + 0,0,28,0,12,56,0,3,240,0,18,33,99,22,2,1, + 60,0,0,60,0,0,30,0,0,15,0,0,7,0,0,3, + 128,0,0,192,0,0,64,0,0,0,0,0,0,0,0,0, + 0,7,248,0,14,28,0,28,14,0,56,15,0,56,7,128, + 120,7,128,120,7,128,240,7,192,240,7,192,240,7,192,255, + 255,192,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,120,1,128,56,1,0,28,3,0,14,6,0, + 7,252,0,18,33,99,22,2,1,0,7,0,0,15,0,0, + 15,0,0,30,0,0,60,0,0,48,0,0,96,0,0,192, + 0,0,0,0,0,0,0,0,0,0,7,248,0,14,28,0, + 28,14,0,56,15,0,56,7,128,120,7,128,120,7,128,240, + 7,192,240,7,192,240,7,192,255,255,192,240,0,0,240,0, + 0,240,0,0,240,0,128,120,0,128,120,0,128,120,1,128, + 56,1,0,28,3,0,14,6,0,7,252,0,18,33,99,22, + 2,0,0,192,0,0,224,0,1,224,0,1,240,0,3,184, + 0,7,24,0,4,12,0,24,2,0,0,0,0,0,0,0, + 0,0,0,7,248,0,14,28,0,28,14,0,56,15,0,56, + 7,128,120,7,128,120,7,128,240,7,192,240,7,192,240,7, + 192,255,255,192,240,0,0,240,0,0,240,0,0,240,0,128, + 120,0,128,120,0,128,120,1,128,56,1,0,28,3,0,14, + 6,0,7,252,0,18,32,96,22,2,0,28,7,0,62,15, + 128,62,15,128,62,15,128,28,7,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,7,248,0,14,12,0,28, + 14,0,60,7,0,56,7,128,120,3,128,120,3,128,240,3, + 192,240,3,192,240,3,192,255,255,192,240,0,0,240,0,0, + 240,0,0,240,0,64,120,0,128,120,0,128,120,0,128,56, + 1,128,28,1,0,14,6,0,7,252,0,12,33,66,14,0, + 1,224,0,240,0,240,0,120,0,60,0,12,0,6,0,3, + 0,0,0,0,0,0,0,63,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,63,240,11,33,66,13,2,1,0,224,1,224,1,224,3, + 192,7,128,6,0,12,0,24,0,0,0,0,0,0,0,254, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,255,192,13,33,66,14,0, + 0,7,0,7,0,7,128,15,128,29,192,24,96,48,48,192, + 24,0,0,0,0,0,0,63,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,63,240,13,32,64,15,1,0,112,112,248,248,248,248,248, + 248,112,112,0,0,0,0,0,0,0,0,0,0,63,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,63,240,19,35,105,24,2,0,31, + 0,0,15,131,128,7,198,0,3,252,0,1,240,0,0,240, + 0,1,248,0,7,124,0,12,60,0,24,30,0,0,31,0, + 0,15,0,0,7,128,3,255,128,14,15,192,28,7,192,60, + 3,192,56,3,224,120,3,224,120,1,224,248,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,240,1,224,240,1,224, + 240,1,224,120,1,192,120,3,192,56,3,192,60,3,128,28, + 7,0,14,14,0,3,252,0,23,32,96,27,2,0,1,224, + 64,3,248,192,7,255,192,6,63,128,4,7,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,31,128,30, + 97,224,30,192,224,30,128,240,31,0,240,31,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,255,199,254,19,33, + 99,24,2,1,28,0,0,30,0,0,30,0,0,15,0,0, + 7,128,0,1,128,0,0,192,0,0,96,0,0,0,0,0, + 0,0,0,0,0,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,19,33,99,24,2,1,0,7,0, + 0,7,128,0,15,0,0,30,0,0,28,0,0,56,0,0, + 96,0,0,64,0,0,0,0,0,0,0,0,0,0,3,252, + 0,14,14,0,28,7,0,60,3,128,56,3,192,120,3,192, + 120,1,224,248,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,3, + 192,56,3,192,60,3,128,28,7,0,14,14,0,3,252,0, + 19,33,99,24,2,0,0,96,0,0,224,0,0,240,0,1, + 240,0,1,184,0,3,24,0,6,4,0,8,3,0,0,0, + 0,0,0,0,0,0,0,3,252,0,14,14,0,28,7,0, + 60,3,128,56,3,192,120,3,192,120,1,224,248,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,120,1,224,120,3,192,56,3,192,60,3,128, + 28,7,0,14,14,0,3,252,0,19,32,96,24,2,0,7, + 129,0,15,225,0,31,255,0,24,254,0,16,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,252,0, + 14,14,0,28,7,0,60,3,128,56,3,192,120,3,192,120, + 1,224,248,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,120,1,224,120,3,192, + 56,3,192,60,3,128,28,7,0,14,14,0,3,252,0,19, + 32,96,24,2,0,14,7,0,31,15,128,31,15,128,31,15, + 128,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,3,252,0,14,14,0,28,7,0,60,3,128,56, + 3,192,120,3,192,120,1,224,248,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,240,1,224,240,1,224, + 120,1,224,120,3,192,56,3,192,60,3,128,28,7,0,14, + 14,0,3,252,0,41,31,186,45,2,253,0,0,30,0,0, + 0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63, + 0,0,0,0,0,63,0,0,0,0,0,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,255,255,255,128,255,255,255,255,255,128,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,30,0,0,0,0,0,63,0,0,0,0,0,63, + 0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0, + 0,30,0,0,0,19,22,66,24,2,1,3,252,96,14,14, + 64,28,7,192,60,3,128,56,3,192,120,7,192,120,13,224, + 248,9,224,240,25,224,240,49,224,240,97,224,240,193,224,240, + 129,224,241,129,224,243,1,224,126,1,224,124,3,192,56,3, + 192,60,3,128,60,7,0,110,14,0,195,252,0,23,33,99, + 27,2,1,14,0,0,15,0,0,7,128,0,3,192,0,1, + 192,0,0,224,0,0,48,0,0,16,0,0,0,0,0,0, + 0,0,0,0,254,7,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,1,240,30,1,240,30,1,240,30,2,240,14,6,240, + 15,12,240,3,240,254,23,33,99,27,2,1,0,1,192,0, + 3,192,0,3,192,0,7,128,0,14,0,0,12,0,0,24, + 0,0,48,0,0,0,0,0,0,0,0,0,0,254,7,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,1,240,30,1,240, + 30,1,240,30,2,240,14,6,240,15,12,240,3,240,254,23, + 33,99,27,2,0,0,48,0,0,56,0,0,120,0,0,124, + 0,0,204,0,1,134,0,3,3,0,6,0,128,0,0,0, + 0,0,0,0,0,0,254,7,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,1,240,30,1,240,30,1,240,30,2,240,14, + 6,240,15,12,240,3,240,254,23,32,96,27,2,0,7,3, + 128,15,135,192,15,135,192,15,135,192,7,3,128,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,7,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,1,240,30,1,240,30, + 1,240,30,2,240,14,6,240,15,12,240,3,240,254,24,45, + 135,26,1,246,0,0,240,0,0,240,0,1,224,0,1,192, + 0,3,128,0,7,0,0,6,0,0,12,0,0,24,0,0, + 0,0,0,0,0,0,0,0,255,225,255,31,0,120,15,0, + 48,15,0,48,7,0,32,7,128,96,7,128,96,3,192,64, + 3,192,192,3,192,192,1,224,128,1,225,128,0,225,128,0, + 241,128,0,241,0,0,115,0,0,123,0,0,122,0,0,62, + 0,0,62,0,0,60,0,0,28,0,0,28,0,0,24,0, + 0,24,0,0,24,0,24,48,0,60,48,0,60,48,0,60, + 96,0,56,96,0,31,192,0,15,0,0,20,46,138,25,2, + 243,30,0,0,126,0,0,254,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,15,192,30,63,224,30,97,240,30,192,240,30,128, + 240,31,128,240,31,0,240,31,0,240,30,0,240,30,0,240, + 30,1,224,30,1,224,30,1,192,30,3,128,30,3,128,30, + 7,0,30,6,0,30,12,0,30,24,0,30,48,0,30,192, + 0,31,128,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,60,0,0,240,0,0,128,0,0,24,43,129,26,1, + 245,1,192,224,3,225,240,3,225,240,3,225,240,1,192,224, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 225,255,31,128,120,15,0,48,15,0,48,7,128,32,7,128, + 96,7,128,96,3,192,64,3,192,64,3,192,192,1,224,128, + 1,224,128,0,225,128,0,241,128,0,241,0,0,115,0,0, + 123,0,0,122,0,0,62,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,24,0,0,24,0,0,24,0,24,48,0, + 60,48,0,60,48,0,60,96,0,56,96,0,31,192,0,15, + 0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 34 + Calculated Max Values w=41 h=46 x= 6 y=14 dx=45 dy= 0 ascent=36 len=246 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x= 0 y=-10 dx= 0 dy= 0 + Pure Font ascent =34 descent= 0 + X Font ascent =34 descent= 0 + Max Font ascent =36 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35n[1560] U8G_SECTION(".progmem.u8g_font_osr35n") = { + 0,128,62,216,241,34,0,0,0,0,42,57,0,36,246,34, + 0,18,20,60,25,4,14,0,224,0,1,224,0,1,224,0, + 1,224,0,96,195,128,240,135,192,248,143,192,124,159,128,7, + 248,0,1,224,0,1,224,0,6,184,0,124,143,128,248,135, + 192,240,195,192,97,193,128,1,224,0,1,224,0,1,224,0, + 0,224,0,41,41,246,45,2,248,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,7, + 15,15,14,4,247,120,252,252,254,126,6,6,6,4,12,8, + 24,48,96,64,12,3,6,18,3,11,255,240,255,240,255,240, + 6,5,5,14,4,1,120,252,252,252,120,16,46,92,22,3, + 246,0,3,0,3,0,3,0,6,0,6,0,6,0,12,0, + 12,0,12,0,24,0,24,0,24,0,48,0,48,0,48,0, + 48,0,96,0,96,0,96,0,192,0,192,0,192,1,128,1, + 128,1,128,3,0,3,0,3,0,6,0,6,0,6,0,12, + 0,12,0,12,0,24,0,24,0,24,0,48,0,48,0,48, + 0,96,0,96,0,96,0,96,0,192,0,192,0,23,34,102, + 28,2,0,0,124,0,1,199,0,7,1,128,6,0,192,14, + 0,224,28,0,112,60,0,120,60,0,120,56,0,56,120,0, + 60,120,0,60,120,0,60,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,120,0,60,120,0,60,120,0,60,120,0, + 60,60,0,120,60,0,120,28,0,112,28,0,112,14,0,224, + 7,1,192,3,131,128,0,254,0,17,34,102,28,6,0,0, + 64,0,0,64,0,0,192,0,0,192,0,1,192,0,7,192, + 0,255,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,255, + 255,128,255,255,128,21,34,102,28,4,0,3,252,0,14,31, + 0,16,7,192,32,3,224,96,1,240,64,1,240,192,0,240, + 192,0,248,224,0,248,252,0,248,254,0,248,126,0,248,126, + 0,240,62,1,240,0,1,224,0,3,192,0,3,128,0,7, + 0,0,14,0,0,28,0,0,112,0,0,224,0,1,192,0, + 3,0,0,6,0,16,12,0,16,24,0,16,16,0,16,48, + 0,48,48,0,112,127,255,240,127,255,240,127,255,240,127,255, + 240,21,34,102,28,4,0,3,248,0,14,31,0,24,7,128, + 48,3,192,112,3,192,120,1,224,124,1,224,126,1,224,126, + 1,224,60,1,224,0,1,224,0,3,192,0,3,192,0,7, + 128,0,14,0,15,248,0,31,143,0,14,3,128,0,3,224, + 0,1,224,0,1,240,0,0,248,0,0,248,0,0,248,60, + 0,248,126,0,248,254,0,248,254,0,248,252,1,240,224,1, + 240,224,3,224,96,3,192,48,15,0,15,254,0,23,34,102, + 28,3,0,0,1,128,0,1,128,0,3,128,0,7,128,0, + 7,128,0,15,128,0,31,128,0,31,128,0,55,128,0,119, + 128,0,231,128,0,199,128,1,199,128,3,135,128,3,7,128, + 6,7,128,14,7,128,12,7,128,24,7,128,56,7,128,48, + 7,128,96,7,128,224,7,128,255,255,254,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,3,255,254,3,255,254,21,35,105,28,4,0,48, + 0,64,60,3,192,63,255,128,63,255,0,63,252,0,55,240, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,0, + 48,0,0,48,0,0,51,254,0,60,7,128,56,3,192,48, + 1,224,48,1,240,48,1,240,0,0,240,0,0,248,0,0, + 248,0,0,248,0,0,248,60,0,248,126,0,248,254,0,248, + 254,0,240,252,1,240,248,1,224,240,1,224,112,3,192,112, + 7,128,60,31,0,15,252,0,21,34,102,28,4,0,0,126, + 0,1,193,128,3,128,192,7,0,64,14,0,224,28,1,224, + 28,3,224,56,3,224,56,3,192,120,0,0,120,0,0,120, + 0,0,120,0,0,240,126,0,241,255,128,243,131,192,247,1, + 224,254,1,240,252,0,240,252,0,240,248,0,248,248,0,120, + 248,0,120,248,0,120,120,0,120,120,0,120,120,0,248,120, + 0,240,56,0,240,60,0,224,28,1,224,14,3,192,7,7, + 128,1,254,0,19,34,102,28,5,0,255,255,224,255,255,224, + 255,255,224,255,255,224,224,0,224,192,0,64,128,0,64,128, + 0,192,128,0,128,128,1,128,0,1,128,0,3,0,0,2, + 0,0,6,0,0,12,0,0,24,0,0,24,0,0,48,0, + 0,112,0,0,112,0,0,224,0,0,224,0,1,224,0,1, + 224,0,3,224,0,3,224,0,3,224,0,7,240,0,7,240, + 0,7,240,0,7,240,0,7,240,0,3,240,0,3,224,0, + 23,34,102,28,3,0,1,254,0,7,135,128,30,1,192,56, + 0,224,120,0,112,112,0,112,240,0,56,240,0,56,240,0, + 56,240,0,56,248,0,56,252,0,112,126,0,112,127,192,224, + 63,241,192,31,255,0,7,255,128,7,255,224,12,63,248,56, + 7,252,112,1,252,112,0,126,224,0,62,224,0,62,224,0, + 62,224,0,30,224,0,30,224,0,28,96,0,60,112,0,56, + 48,0,120,24,0,240,14,1,192,3,255,0,21,34,102,28, + 4,0,1,248,0,7,142,0,14,3,0,28,1,128,56,1, + 192,120,1,224,120,0,224,120,0,240,240,0,240,240,0,240, + 240,0,240,240,0,248,240,0,248,248,0,248,120,1,248,120, + 1,248,120,3,248,60,7,120,30,14,120,15,252,120,3,240, + 120,0,0,240,0,0,240,0,0,240,0,0,240,60,0,224, + 124,0,224,124,1,192,124,1,192,120,3,128,112,3,0,56, + 6,0,28,28,0,15,248,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 6 y=26 dx=52 dy= 0 ascent=37 len=252 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =36 descent=-10 + Max Font ascent =37 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35r[10371] U8G_SECTION(".progmem.u8g_font_osr35r") = { + 0,128,62,216,241,35,12,236,30,116,32,127,246,37,245,36, + 246,0,0,0,14,0,0,6,34,34,14,4,0,120,252,252, + 252,252,252,252,252,252,120,120,120,120,120,120,48,48,48,48, + 48,48,48,48,48,48,48,0,0,0,120,252,252,252,120,11, + 10,20,19,4,26,224,224,224,224,224,224,224,224,224,224,224, + 224,64,64,64,64,64,64,64,64,26,34,136,34,4,0,0, + 48,24,0,0,48,24,0,0,112,24,0,0,96,24,0,0, + 96,56,0,0,96,56,0,0,96,48,0,0,96,48,0,0, + 96,48,0,0,224,48,0,255,255,255,192,255,255,255,192,0, + 192,96,0,0,192,96,0,0,192,96,0,1,192,96,0,1, + 128,96,0,1,128,224,0,1,128,192,0,1,128,192,0,1, + 128,192,0,3,128,192,0,255,255,255,192,255,255,255,192,3, + 1,128,0,3,1,128,0,3,1,128,0,7,1,128,0,7, + 1,128,0,6,1,128,0,6,3,128,0,6,3,0,0,6, + 3,0,0,6,3,0,0,22,41,123,29,3,252,0,204,0, + 0,204,0,0,204,0,1,254,0,7,207,192,12,204,96,24, + 204,48,48,204,24,32,204,24,96,204,28,96,204,60,96,204, + 124,96,204,124,112,204,120,120,204,120,62,204,0,63,204,0, + 31,252,0,15,252,0,7,255,128,1,255,192,0,255,224,0, + 207,240,0,205,248,0,204,120,48,204,60,120,204,28,248,204, + 28,248,204,12,240,204,12,240,204,8,224,204,24,96,204,24, + 96,204,48,48,204,96,28,205,192,7,255,128,0,204,0,0, + 204,0,0,204,0,0,204,0,33,34,170,43,5,0,15,128, + 0,48,0,24,192,0,96,0,48,96,0,64,0,112,112,0, + 192,0,96,48,1,128,0,224,56,1,128,0,224,56,3,0, + 0,224,56,2,0,0,224,56,6,0,0,224,56,12,0,0, + 224,56,12,0,0,224,56,24,0,0,96,48,48,0,0,96, + 112,48,0,0,48,96,96,0,0,24,192,64,0,0,15,128, + 192,0,0,0,1,128,248,0,0,1,129,140,0,0,3,3, + 6,0,0,2,6,7,0,0,6,6,3,0,0,12,14,3, + 128,0,8,14,3,128,0,24,14,3,128,0,48,14,3,128, + 0,48,14,3,128,0,96,14,3,128,0,64,14,3,128,0, + 192,6,3,0,1,128,6,3,0,1,128,7,7,0,3,0, + 3,14,0,6,0,1,252,0,33,34,170,39,3,0,0,63, + 0,0,0,0,227,128,0,0,1,128,192,0,0,3,128,64, + 0,0,3,0,96,0,0,7,0,96,0,0,7,0,96,0, + 0,7,0,224,0,0,7,0,192,0,0,7,129,192,0,0, + 7,131,128,0,0,3,199,0,0,0,3,238,0,0,0,1, + 248,0,0,0,0,248,7,255,128,1,248,0,252,0,3,252, + 0,112,0,7,62,0,112,0,14,63,0,96,0,28,31,0, + 96,0,60,15,128,192,0,56,7,192,192,0,120,7,193,128, + 0,120,3,225,128,0,240,1,243,0,0,240,1,254,0,0, + 240,0,254,0,0,240,0,124,0,0,248,0,62,0,0,248, + 0,62,1,0,120,0,127,1,0,60,0,207,130,0,30,3, + 135,252,0,15,254,1,248,0,3,10,10,11,4,26,224,224, + 224,224,224,224,64,64,64,64,11,46,92,18,5,246,0,64, + 0,224,1,192,3,128,3,0,6,0,14,0,12,0,28,0, + 24,0,56,0,48,0,48,0,112,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,224,0,96,0,96,0,96,0,112,0, + 48,0,48,0,56,0,24,0,28,0,12,0,14,0,6,0, + 3,0,3,128,1,192,0,224,0,64,11,45,90,18,2,246, + 64,0,96,0,112,0,56,0,28,0,12,0,14,0,6,0, + 3,0,3,0,3,128,1,128,1,192,0,192,0,192,0,192, + 0,224,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,224,0,192,0,192, + 0,192,1,128,1,128,3,128,3,0,7,0,6,0,14,0, + 12,0,24,0,56,0,112,0,224,0,18,20,60,25,4,14, + 0,224,0,1,224,0,1,224,0,1,224,0,96,195,128,240, + 135,192,248,143,192,124,159,128,7,248,0,1,224,0,1,224, + 0,6,184,0,124,143,128,248,135,192,240,195,192,97,193,128, + 1,224,0,1,224,0,1,224,0,0,224,0,41,41,246,45, + 2,248,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,255,255,255,255,255,128,255,255,255,255,255,128, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,7,15,15,14,4,247,120,252, + 252,254,126,6,6,6,4,12,8,24,48,96,64,12,3,6, + 18,3,11,255,240,255,240,255,240,6,5,5,14,4,1,120, + 252,252,252,120,16,46,92,22,3,246,0,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,128,1,128,1,128,3,0,3,0, + 3,0,6,0,6,0,6,0,12,0,12,0,12,0,24,0, + 24,0,24,0,48,0,48,0,48,0,96,0,96,0,96,0, + 96,0,192,0,192,0,23,34,102,28,2,0,0,124,0,1, + 199,0,7,1,128,6,0,192,14,0,224,28,0,112,60,0, + 120,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,120,0, + 60,120,0,60,120,0,60,120,0,60,60,0,120,60,0,120, + 28,0,112,28,0,112,14,0,224,7,1,192,3,131,128,0, + 254,0,17,34,102,28,6,0,0,64,0,0,64,0,0,192, + 0,0,192,0,1,192,0,7,192,0,255,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,255,255,128,255,255,128,21,34, + 102,28,4,0,3,252,0,14,31,0,16,7,192,32,3,224, + 96,1,240,64,1,240,192,0,240,192,0,248,224,0,248,252, + 0,248,254,0,248,126,0,248,126,0,240,62,1,240,0,1, + 224,0,3,192,0,3,128,0,7,0,0,14,0,0,28,0, + 0,112,0,0,224,0,1,192,0,3,0,0,6,0,16,12, + 0,16,24,0,16,16,0,16,48,0,48,48,0,112,127,255, + 240,127,255,240,127,255,240,127,255,240,21,34,102,28,4,0, + 3,248,0,14,31,0,24,7,128,48,3,192,112,3,192,120, + 1,224,124,1,224,126,1,224,126,1,224,60,1,224,0,1, + 224,0,3,192,0,3,192,0,7,128,0,14,0,15,248,0, + 31,143,0,14,3,128,0,3,224,0,1,224,0,1,240,0, + 0,248,0,0,248,0,0,248,60,0,248,126,0,248,254,0, + 248,254,0,248,252,1,240,224,1,240,224,3,224,96,3,192, + 48,15,0,15,254,0,23,34,102,28,3,0,0,1,128,0, + 1,128,0,3,128,0,7,128,0,7,128,0,15,128,0,31, + 128,0,31,128,0,55,128,0,119,128,0,231,128,0,199,128, + 1,199,128,3,135,128,3,7,128,6,7,128,14,7,128,12, + 7,128,24,7,128,56,7,128,48,7,128,96,7,128,224,7, + 128,255,255,254,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,3,255,254,3, + 255,254,21,35,105,28,4,0,48,0,64,60,3,192,63,255, + 128,63,255,0,63,252,0,55,240,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,51, + 254,0,60,7,128,56,3,192,48,1,224,48,1,240,48,1, + 240,0,0,240,0,0,248,0,0,248,0,0,248,0,0,248, + 60,0,248,126,0,248,254,0,248,254,0,240,252,1,240,248, + 1,224,240,1,224,112,3,192,112,7,128,60,31,0,15,252, + 0,21,34,102,28,4,0,0,126,0,1,193,128,3,128,192, + 7,0,64,14,0,224,28,1,224,28,3,224,56,3,224,56, + 3,192,120,0,0,120,0,0,120,0,0,120,0,0,240,126, + 0,241,255,128,243,131,192,247,1,224,254,1,240,252,0,240, + 252,0,240,248,0,248,248,0,120,248,0,120,248,0,120,120, + 0,120,120,0,120,120,0,248,120,0,240,56,0,240,60,0, + 224,28,1,224,14,3,192,7,7,128,1,254,0,19,34,102, + 28,5,0,255,255,224,255,255,224,255,255,224,255,255,224,224, + 0,224,192,0,64,128,0,64,128,0,192,128,0,128,128,1, + 128,0,1,128,0,3,0,0,2,0,0,6,0,0,12,0, + 0,24,0,0,24,0,0,48,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,224,0,1,224,0,3,224,0,3,224, + 0,3,224,0,7,240,0,7,240,0,7,240,0,7,240,0, + 7,240,0,3,240,0,3,224,0,23,34,102,28,3,0,1, + 254,0,7,135,128,30,1,192,56,0,224,120,0,112,112,0, + 112,240,0,56,240,0,56,240,0,56,240,0,56,248,0,56, + 252,0,112,126,0,112,127,192,224,63,241,192,31,255,0,7, + 255,128,7,255,224,12,63,248,56,7,252,112,1,252,112,0, + 126,224,0,62,224,0,62,224,0,62,224,0,30,224,0,30, + 224,0,28,96,0,60,112,0,56,48,0,120,24,0,240,14, + 1,192,3,255,0,21,34,102,28,4,0,1,248,0,7,142, + 0,14,3,0,28,1,128,56,1,192,120,1,224,120,0,224, + 120,0,240,240,0,240,240,0,240,240,0,240,240,0,248,240, + 0,248,248,0,248,120,1,248,120,1,248,120,3,248,60,7, + 120,30,14,120,15,252,120,3,240,120,0,0,240,0,0,240, + 0,0,240,0,0,240,60,0,224,124,0,224,124,1,192,124, + 1,192,120,3,128,112,3,0,56,6,0,28,28,0,15,248, + 0,6,22,22,14,4,1,120,252,252,252,120,0,0,0,0, + 0,0,0,0,0,0,0,0,120,252,252,252,120,7,31,31, + 14,4,248,120,252,252,252,120,0,0,0,0,0,0,0,0, + 0,0,0,120,252,252,254,126,14,6,6,4,12,8,24,48, + 96,64,38,40,200,46,4,249,0,0,0,0,28,0,0,0, + 0,120,0,0,0,1,240,0,0,0,7,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,192,0, + 0,0,15,0,0,0,0,62,0,0,0,0,248,0,0,0, + 1,224,0,0,0,7,128,0,0,0,30,0,0,0,0,120, + 0,0,0,1,224,0,0,0,7,192,0,0,0,31,0,0, + 0,0,60,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,124,0,0,0,0,31,0,0,0,0,7,128,0,0,0, + 1,224,0,0,0,0,120,0,0,0,0,30,0,0,0,0, + 7,128,0,0,0,3,224,0,0,0,0,248,0,0,0,0, + 60,0,0,0,0,15,0,0,0,0,3,192,0,0,0,0, + 240,0,0,0,0,60,0,0,0,0,31,0,0,0,0,7, + 192,0,0,0,1,224,0,0,0,0,120,0,0,0,0,28, + 41,11,66,45,2,7,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,128,255,255,255,255,255,128,38,40,200,46,4,249,224,0, + 0,0,0,120,0,0,0,0,62,0,0,0,0,15,128,0, + 0,0,3,192,0,0,0,0,240,0,0,0,0,60,0,0, + 0,0,15,0,0,0,0,3,192,0,0,0,1,240,0,0, + 0,0,124,0,0,0,0,30,0,0,0,0,7,128,0,0, + 0,1,224,0,0,0,0,120,0,0,0,0,30,0,0,0, + 0,15,128,0,0,0,3,224,0,0,0,0,240,0,0,0, + 0,60,0,0,0,0,60,0,0,0,0,248,0,0,0,3, + 224,0,0,0,7,128,0,0,0,30,0,0,0,0,120,0, + 0,0,1,224,0,0,0,7,128,0,0,0,31,0,0,0, + 0,124,0,0,0,0,240,0,0,0,3,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,224,0, + 0,0,15,128,0,0,0,30,0,0,0,0,120,0,0,0, + 0,224,0,0,0,0,18,34,102,23,3,0,7,240,0,28, + 60,0,48,15,0,96,7,128,192,7,128,192,3,192,192,3, + 192,248,3,192,252,3,192,124,7,192,56,7,128,0,15,128, + 0,31,0,0,62,0,0,124,0,0,240,0,0,224,0,1, + 192,0,3,0,0,6,0,0,14,8,0,12,8,0,12,8, + 0,12,8,0,6,16,0,3,224,0,0,0,0,0,0,0, + 0,0,0,1,224,0,3,240,0,3,240,0,3,240,0,1, + 224,0,35,36,180,40,2,0,0,3,254,0,0,0,30,7, + 192,0,0,112,0,112,0,1,192,0,24,0,3,128,0,12, + 0,7,0,0,6,0,14,0,0,3,0,28,0,120,1,0, + 24,1,196,225,128,56,7,7,224,128,48,14,3,224,192,112, + 12,3,192,192,96,28,3,192,64,96,56,3,192,96,224,56, + 3,192,96,192,120,3,128,96,192,112,7,128,96,192,112,7, + 128,96,192,240,7,128,96,192,224,7,0,96,192,224,15,0, + 224,192,224,15,0,192,192,224,14,0,192,96,224,30,1,128, + 96,224,62,1,128,96,224,62,3,0,96,96,78,6,0,48, + 49,143,12,0,48,31,7,240,0,24,0,0,0,0,12,0, + 0,0,0,6,0,0,0,0,3,0,0,0,0,1,192,0, + 112,0,0,112,1,192,0,0,31,255,0,0,34,35,175,37, + 2,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,15,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,0, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,28,35,140,34,3,0,255,255,240,0,7,192,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,1,224,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,3,192,7,128,3,128,7, + 128,7,0,7,128,30,0,7,255,240,0,7,128,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,3,224,7, + 128,1,224,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,3,224,7, + 128,3,224,7,128,7,192,7,128,15,128,7,192,62,0,255, + 255,240,0,26,36,144,32,3,0,0,63,0,128,0,225,224, + 128,3,128,113,128,7,0,63,128,14,0,31,128,30,0,15, + 128,28,0,7,128,60,0,3,128,60,0,3,128,124,0,3, + 128,120,0,1,128,120,0,1,128,120,0,0,128,248,0,0, + 128,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,120,0,0,192,120,0,0,192,120,0,0, + 192,60,0,0,192,60,0,0,128,60,0,1,128,28,0,1, + 128,14,0,3,0,14,0,3,0,7,0,6,0,3,128,12, + 0,0,224,56,0,0,127,224,0,33,35,175,38,3,0,255, + 255,252,0,0,7,192,15,0,0,7,128,3,192,0,7,128, + 0,224,0,7,128,0,112,0,7,128,0,120,0,7,128,0, + 60,0,7,128,0,62,0,7,128,0,30,0,7,128,0,31, + 0,7,128,0,31,0,7,128,0,15,0,7,128,0,15,0, + 7,128,0,15,128,7,128,0,15,128,7,128,0,15,128,7, + 128,0,15,128,7,128,0,15,128,7,128,0,15,128,7,128, + 0,15,128,7,128,0,15,128,7,128,0,15,128,7,128,0, + 15,0,7,128,0,31,0,7,128,0,31,0,7,128,0,30, + 0,7,128,0,30,0,7,128,0,60,0,7,128,0,60,0, + 7,128,0,120,0,7,128,0,112,0,7,128,0,224,0,7, + 128,3,192,0,7,192,15,0,0,255,255,252,0,0,28,35, + 140,34,3,0,255,255,255,240,7,192,7,240,7,128,1,240, + 7,128,0,240,7,128,0,112,7,128,0,112,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,16,7,128,32,16, + 7,128,32,16,7,128,32,0,7,128,96,0,7,128,96,0, + 7,128,96,0,7,128,224,0,7,255,224,0,7,129,224,0, + 7,128,96,0,7,128,96,0,7,128,96,0,7,128,32,16, + 7,128,32,16,7,128,32,16,7,128,0,16,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,112,7,128,0,112, + 7,128,0,240,7,128,1,240,255,255,255,240,255,255,255,240, + 27,35,140,34,4,0,255,255,255,224,15,128,15,224,7,128, + 3,224,7,128,1,224,7,128,0,224,7,128,0,224,7,128, + 0,96,7,128,0,96,7,128,0,96,7,128,0,32,7,128, + 32,32,7,128,32,32,7,128,32,0,7,128,96,0,7,128, + 96,0,7,128,96,0,7,128,224,0,7,255,224,0,7,129, + 224,0,7,128,96,0,7,128,96,0,7,128,96,0,7,128, + 32,0,7,128,32,0,7,128,32,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,15,128,0,0,255,254, + 0,0,30,36,144,34,3,0,0,63,128,192,0,224,224,192, + 3,128,56,192,7,0,29,192,14,0,15,192,14,0,7,192, + 28,0,7,192,60,0,3,192,60,0,3,192,124,0,1,192, + 120,0,1,192,120,0,0,192,120,0,0,192,248,0,0,192, + 248,0,0,0,248,0,0,0,248,0,0,0,248,0,0,0, + 248,0,255,252,248,0,255,252,248,0,7,192,248,0,7,192, + 248,0,7,192,248,0,7,192,120,0,7,192,120,0,7,192, + 124,0,7,192,60,0,7,192,60,0,7,192,28,0,15,192, + 30,0,15,192,14,0,28,192,7,0,24,192,3,0,48,192, + 1,192,224,192,0,127,128,192,33,35,175,38,3,0,255,252, + 31,255,128,7,192,0,248,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,255, + 255,240,0,7,128,0,240,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,128, + 0,240,0,7,192,0,248,0,255,252,31,255,128,14,35,70, + 19,3,0,255,252,7,192,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,192,255,252,23,35,105,27,2,0,0, + 127,254,0,7,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,60,3,192,126,3,192,254,3,192, + 254,3,192,252,3,192,224,3,128,224,7,128,96,7,0,112, + 14,0,56,28,0,15,248,0,32,35,140,37,3,0,255,252, + 63,254,7,192,15,240,7,128,7,192,7,128,3,128,7,128, + 7,0,7,128,6,0,7,128,12,0,7,128,28,0,7,128, + 56,0,7,128,112,0,7,128,224,0,7,129,192,0,7,129, + 128,0,7,131,128,0,7,135,128,0,7,143,192,0,7,155, + 224,0,7,179,224,0,7,225,240,0,7,193,240,0,7,128, + 248,0,7,128,248,0,7,128,124,0,7,128,124,0,7,128, + 62,0,7,128,62,0,7,128,31,0,7,128,31,0,7,128, + 15,128,7,128,15,192,7,128,7,192,7,128,7,224,7,128, + 3,224,7,192,7,248,255,252,127,255,27,35,140,33,3,0, + 255,254,0,0,7,192,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,32,7,128,0,96, + 7,128,0,96,7,128,0,96,7,128,0,96,7,128,0,224, + 7,128,0,224,7,128,0,224,7,128,1,224,7,128,3,224, + 7,128,7,224,255,255,255,224,255,255,255,224,36,35,175,41, + 3,0,255,224,0,63,240,7,224,0,62,0,7,224,0,126, + 0,7,240,0,94,0,7,240,0,94,0,6,240,0,222,0, + 6,248,0,222,0,6,248,0,158,0,6,120,0,158,0,6, + 120,1,158,0,6,124,1,158,0,6,60,1,30,0,6,60, + 1,30,0,6,62,3,30,0,6,62,3,30,0,6,30,2, + 30,0,6,30,2,30,0,6,31,6,30,0,6,15,4,30, + 0,6,15,4,30,0,6,15,140,30,0,6,7,140,30,0, + 6,7,136,30,0,6,7,200,30,0,6,7,216,30,0,6, + 3,216,30,0,6,3,208,30,0,6,3,240,30,0,6,1, + 240,30,0,6,1,240,30,0,6,1,224,30,0,6,0,224, + 30,0,15,0,224,30,0,31,128,192,62,0,255,240,195,255, + 240,33,36,180,38,3,255,255,192,7,255,128,7,192,0,252, + 0,7,224,0,120,0,7,240,0,48,0,7,240,0,48,0, + 7,248,0,48,0,6,248,0,48,0,6,124,0,48,0,6, + 126,0,48,0,6,62,0,48,0,6,31,0,48,0,6,31, + 0,48,0,6,15,128,48,0,6,15,192,48,0,6,7,192, + 48,0,6,3,224,48,0,6,3,224,48,0,6,1,240,48, + 0,6,1,248,48,0,6,0,248,48,0,6,0,124,48,0, + 6,0,124,48,0,6,0,62,48,0,6,0,63,48,0,6, + 0,31,48,0,6,0,15,176,0,6,0,15,176,0,6,0, + 7,240,0,6,0,7,240,0,6,0,3,240,0,6,0,1, + 240,0,6,0,1,240,0,15,0,0,240,0,31,128,0,112, + 0,255,240,0,112,0,0,0,0,48,0,28,36,144,33,3, + 0,0,31,128,0,0,240,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,28,0,3, + 128,60,0,3,192,60,0,3,192,124,0,3,224,120,0,1, + 224,120,0,1,224,248,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,124,0,3,224,124,0,3,224,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,15, + 0,7,0,14,0,3,128,28,0,0,224,112,0,0,127,224, + 0,28,35,140,33,3,0,255,255,240,0,7,192,30,0,7, + 128,7,128,7,128,7,192,7,128,3,224,7,128,3,224,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,3,224,7,128,3,224,7, + 128,7,192,7,128,7,128,7,128,30,0,7,255,248,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,192,0,0,255, + 254,0,0,28,44,176,33,3,248,0,31,128,0,0,240,240, + 0,1,192,56,0,3,128,28,0,7,0,14,0,14,0,7, + 0,30,0,7,128,28,0,3,128,60,0,3,192,60,0,3, + 192,124,0,3,224,120,0,1,224,120,0,1,224,248,0,1, + 224,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,120,0,1,224,120,0,1,224,124,0,3, + 224,124,0,3,224,60,15,3,192,60,25,195,192,30,48,199, + 128,14,96,231,128,15,96,111,0,7,96,126,0,3,224,124, + 16,0,240,120,16,0,127,240,16,0,0,112,16,0,0,112, + 16,0,0,120,48,0,0,120,32,0,0,124,96,0,0,63, + 192,0,0,63,192,0,0,15,0,30,35,140,35,3,0,255, + 255,248,0,7,192,62,0,7,128,15,128,7,128,7,192,7, + 128,7,192,7,128,3,224,7,128,3,224,7,128,3,224,7, + 128,3,224,7,128,3,224,7,128,3,192,7,128,7,192,7, + 128,7,128,7,128,15,0,7,128,60,0,7,255,224,0,7, + 128,240,0,7,128,56,0,7,128,28,0,7,128,30,0,7, + 128,30,0,7,128,31,0,7,128,15,0,7,128,15,0,7, + 128,15,0,7,128,15,0,7,128,15,128,7,128,15,132,7, + 128,15,132,7,128,15,132,7,128,15,132,7,128,15,140,7, + 128,7,248,7,192,7,248,255,254,3,240,23,36,108,30,4, + 0,3,240,0,14,28,24,56,7,24,48,3,248,112,1,248, + 96,0,248,224,0,120,224,0,56,224,0,56,224,0,56,224, + 0,24,240,0,24,248,0,8,126,0,8,127,192,0,63,240, + 0,31,252,0,15,255,128,3,255,224,0,255,240,128,63,248, + 128,7,252,128,1,252,192,0,126,192,0,62,192,0,30,224, + 0,14,224,0,14,240,0,14,240,0,14,248,0,12,252,0, + 28,222,0,24,199,0,48,195,128,96,128,255,192,28,35,140, + 35,4,0,255,255,255,240,254,15,131,240,248,15,1,240,240, + 15,0,240,224,15,0,112,192,15,0,112,192,15,0,48,192, + 15,0,48,192,15,0,48,128,15,0,16,128,15,0,16,128, + 15,0,16,128,15,0,16,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,128,0,3,255,254,0,34, + 35,175,39,3,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,34,36,180,37,2,255,255,255,7,255,192,15, + 240,0,126,0,3,224,0,56,0,3,224,0,56,0,3,240, + 0,48,0,1,240,0,48,0,1,240,0,48,0,0,248,0, + 96,0,0,248,0,96,0,0,248,0,96,0,0,124,0,192, + 0,0,124,0,192,0,0,124,0,192,0,0,62,0,192,0, + 0,62,1,128,0,0,62,1,128,0,0,31,1,128,0,0, + 31,3,0,0,0,31,3,0,0,0,15,131,0,0,0,15, + 134,0,0,0,15,134,0,0,0,7,198,0,0,0,7,204, + 0,0,0,3,204,0,0,0,3,236,0,0,0,3,232,0, + 0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0, + 0,0,240,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,96,0,0,0,0,96,0,0,0,0,96,0,0,49,36, + 252,52,2,255,255,254,127,255,15,255,128,15,240,15,248,1, + 248,0,3,224,3,240,0,240,0,3,224,3,224,0,96,0, + 3,224,3,240,0,96,0,1,240,3,240,0,96,0,1,240, + 3,240,0,192,0,1,240,3,240,0,192,0,0,240,7,248, + 0,192,0,0,248,6,248,0,128,0,0,248,6,248,1,128, + 0,0,248,6,124,1,128,0,0,120,14,124,1,128,0,0, + 124,12,124,3,0,0,0,124,12,62,3,0,0,0,60,28, + 62,3,0,0,0,60,24,62,6,0,0,0,60,24,30,6, + 0,0,0,62,24,31,6,0,0,0,30,56,31,12,0,0, + 0,30,48,31,12,0,0,0,30,48,15,140,0,0,0,15, + 48,15,152,0,0,0,15,112,15,152,0,0,0,15,96,7, + 216,0,0,0,15,96,7,208,0,0,0,7,224,7,240,0, + 0,0,7,192,3,240,0,0,0,7,192,3,240,0,0,0, + 3,192,3,224,0,0,0,3,192,3,224,0,0,0,3,128, + 1,224,0,0,0,1,128,1,192,0,0,0,1,128,1,192, + 0,0,0,1,128,0,192,0,0,0,1,0,0,128,0,0, + 33,35,175,36,2,0,127,255,31,255,0,3,240,3,240,0, + 1,240,1,224,0,1,240,1,192,0,0,248,1,128,0,0, + 120,3,0,0,0,124,3,0,0,0,60,6,0,0,0,62, + 14,0,0,0,31,12,0,0,0,31,24,0,0,0,15,152, + 0,0,0,15,176,0,0,0,7,224,0,0,0,7,224,0, + 0,0,3,224,0,0,0,3,224,0,0,0,1,240,0,0, + 0,3,240,0,0,0,3,248,0,0,0,6,248,0,0,0, + 14,124,0,0,0,12,124,0,0,0,24,62,0,0,0,56, + 62,0,0,0,48,31,0,0,0,96,31,0,0,0,224,15, + 128,0,0,192,15,128,0,1,128,7,192,0,3,128,7,192, + 0,3,128,3,224,0,7,128,3,240,0,31,192,3,248,0, + 255,248,63,255,128,32,35,140,35,2,0,255,254,15,255,15, + 224,1,248,7,224,0,240,3,224,0,96,3,240,0,64,1, + 240,0,192,1,248,0,128,0,248,0,128,0,252,1,0,0, + 124,3,0,0,62,2,0,0,62,6,0,0,31,4,0,0, + 31,12,0,0,15,136,0,0,7,216,0,0,7,208,0,0, + 3,240,0,0,3,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,240,0,0,127,255,192,26,35,140,32,3,0,63,255,255, + 192,63,128,15,128,62,0,31,128,60,0,31,0,56,0,62, + 0,56,0,62,0,48,0,124,0,48,0,252,0,96,0,248, + 0,96,1,240,0,64,3,240,0,64,3,224,0,0,7,192, + 0,0,7,192,0,0,15,128,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,252,0, + 0,0,248,0,64,1,240,0,64,3,240,0,64,3,224,0, + 192,7,192,0,192,7,192,0,192,15,128,1,192,31,128,1, + 192,31,0,3,192,62,0,3,192,126,0,7,192,124,0,15, + 128,248,0,63,128,255,255,255,128,10,45,90,19,6,247,255, + 192,254,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,254,0,255,192,16,46,92,22,3,246,192, + 0,192,0,192,0,96,0,96,0,96,0,48,0,48,0,48, + 0,24,0,24,0,24,0,12,0,12,0,12,0,6,0,6, + 0,6,0,2,0,3,0,3,0,3,0,1,128,1,128,1, + 128,0,192,0,192,0,192,0,96,0,96,0,96,0,48,0, + 48,0,48,0,24,0,24,0,24,0,12,0,12,0,12,0, + 6,0,6,0,6,0,3,0,3,0,3,10,45,90,19,3, + 247,255,192,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,31,192,255,192,22,18,54,28,3, + 17,0,16,0,0,48,0,0,56,0,0,120,0,0,108,0, + 0,206,0,1,198,0,1,131,0,3,3,0,7,1,128,6, + 1,192,14,0,192,28,0,96,24,0,112,56,0,48,48,0, + 56,96,0,24,224,0,12,25,2,8,25,0,248,255,255,255, + 128,255,255,255,128,8,9,9,22,4,25,224,240,240,120,60, + 12,6,3,1,21,22,66,24,2,1,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,22,35,105,25, + 1,0,255,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,31,128,15,32,224,15, + 64,240,15,192,112,15,128,120,15,128,120,15,0,120,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,60, + 15,0,60,15,0,60,15,0,120,15,0,120,15,128,120,13, + 128,112,12,192,224,12,96,224,8,63,128,17,22,66,21,2, + 1,7,252,0,14,6,0,28,3,0,56,3,0,56,3,128, + 120,15,128,120,15,128,240,15,128,240,7,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,56,1,0,56,1,0,28,2,0,14,6,0, + 7,248,0,22,35,105,25,2,0,0,63,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 15,227,192,28,19,192,60,11,192,56,15,192,120,7,192,120, + 7,192,120,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,120,3,192, + 120,3,192,120,7,192,56,7,192,60,15,192,28,27,192,7, + 243,252,18,22,66,22,2,1,7,248,0,14,28,0,28,14, + 0,56,15,0,56,7,128,120,7,128,120,7,128,240,7,192, + 240,7,192,240,7,192,255,255,192,240,0,0,240,0,0,240, + 0,0,240,0,128,120,0,128,120,0,128,120,1,128,56,1, + 0,28,3,0,14,6,0,7,252,0,16,35,70,16,1,0, + 0,248,3,198,7,3,15,7,14,15,14,15,30,15,30,6, + 30,0,30,0,30,0,30,0,30,0,255,240,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,255,240,23,33,99,27,3,246,7,252,124,30, + 14,206,60,7,142,124,7,158,120,3,222,120,3,192,120,3, + 192,120,3,192,120,3,192,120,3,192,60,7,128,28,7,128, + 14,14,0,3,248,0,28,0,0,96,0,0,192,0,0,192, + 0,0,224,0,0,255,255,128,127,255,224,15,255,240,28,0, + 112,48,0,56,96,0,24,192,0,24,192,0,24,192,0,24, + 192,0,48,96,0,48,120,0,96,30,7,192,3,254,0,24, + 35,105,27,1,0,255,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,15,192,15, + 48,240,15,32,112,15,64,120,15,128,120,15,128,120,15,0, + 120,15,0,120,15,0,120,15,0,120,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,120,15,0,120,15,0,120,15, + 0,120,15,0,120,15,0,120,15,0,120,255,195,255,10,34, + 68,14,2,0,28,0,62,0,62,0,62,0,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,255,192,13,45,90,16,254,245,0,112, + 0,248,0,248,0,248,0,112,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,248,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,240,120,240,120,240,112, + 224,240,96,224,115,192,31,0,22,35,105,24,1,0,254,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,15,252,30,3,224,30,1,128,30,3, + 0,30,6,0,30,6,0,30,12,0,30,24,0,30,48,0, + 30,120,0,30,248,0,30,188,0,31,190,0,31,30,0,30, + 15,0,30,15,128,30,7,128,30,3,192,30,3,224,30,1, + 224,30,3,240,255,207,252,11,35,70,13,1,0,254,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,255,224,36,22,110,40,2,1,254,63,129,252,0,30,97, + 195,14,0,30,193,230,15,0,30,128,228,7,128,31,0,248, + 7,128,31,0,248,7,128,30,0,240,7,128,30,0,240,7, + 128,30,0,240,7,128,30,0,240,7,128,30,0,240,7,128, + 30,0,240,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,255,199,254,63,240,23,22,66,27,2,1,254,31,128, + 30,97,224,30,192,224,30,128,240,31,0,240,31,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,255,199,254,19, + 22,66,24,2,1,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,22,33,99,25,1,246,254,63,128, + 30,97,192,30,192,224,31,128,112,31,0,120,31,0,120,30, + 0,120,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,120,30,0,120, + 31,0,120,31,0,112,31,128,224,30,192,192,30,127,128,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,255,224,0, + 22,33,99,25,2,246,7,240,64,28,24,192,28,12,192,56, + 12,192,120,7,192,120,7,192,120,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,120,3,192,120,3,192,120,7,192,56,7,192,60, + 15,192,28,27,192,7,243,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,31,252,17,22,66,20,2,1,254, + 31,0,30,35,128,30,67,128,30,207,128,30,143,128,31,143, + 0,31,2,0,31,0,0,31,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,22,3,1,31,226,0,112,50,0,96,30,0, + 192,14,0,192,6,0,224,2,0,240,2,0,252,0,0,127, + 0,0,63,192,0,31,248,0,7,254,0,128,255,0,192,31, + 0,192,7,128,224,3,128,224,1,128,240,1,128,240,1,128, + 248,3,0,198,7,0,131,252,0,14,32,64,17,1,0,2, + 0,2,0,2,0,2,0,2,0,6,0,6,0,6,0,14, + 0,30,0,255,248,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,4,30,4,30,4,30,12,15,8,15,248,7,240,23, + 22,66,27,2,0,254,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,30,1,240,30,1,240,30,2,240,14,6, + 240,15,12,240,3,240,254,24,23,69,26,1,255,255,225,255, + 31,0,124,15,0,48,15,0,48,15,0,32,7,128,96,7, + 128,96,3,192,64,3,192,192,1,192,192,1,224,128,1,225, + 128,0,241,128,0,241,0,0,113,0,0,123,0,0,58,0, + 0,62,0,0,62,0,0,28,0,0,28,0,0,12,0,0, + 8,0,36,23,115,38,1,255,255,231,255,31,240,31,1,248, + 7,128,31,0,240,3,0,15,0,120,3,0,15,0,120,2, + 0,7,128,120,6,0,7,128,252,6,0,3,128,252,4,0, + 3,192,188,12,0,3,192,158,12,0,1,225,158,8,0,1, + 225,14,24,0,0,225,15,24,0,0,243,15,16,0,0,242, + 7,48,0,0,114,7,176,0,0,126,7,160,0,0,62,3, + 224,0,0,60,3,192,0,0,28,1,192,0,0,28,1,192, + 0,0,24,1,128,0,0,8,0,128,0,22,22,66,26,2, + 0,255,207,248,31,3,192,31,3,128,15,3,0,7,131,0, + 7,198,0,3,196,0,1,236,0,1,248,0,0,240,0,0, + 112,0,0,120,0,0,124,0,0,220,0,1,158,0,1,15, + 0,3,15,0,6,7,128,4,7,192,12,3,192,28,3,224, + 255,15,252,24,33,99,26,1,245,255,225,255,31,0,120,15, + 0,48,15,0,48,7,0,32,7,128,96,7,128,96,3,192, + 64,3,192,192,3,192,192,1,224,128,1,225,128,0,225,128, + 0,241,128,0,241,0,0,115,0,0,123,0,0,122,0,0, + 62,0,0,62,0,0,60,0,0,28,0,0,28,0,0,24, + 0,0,24,0,0,24,0,24,48,0,60,48,0,60,48,0, + 60,96,0,56,96,0,31,192,0,15,0,0,17,22,66,22, + 2,0,255,255,128,248,7,128,224,15,0,224,31,0,192,30, + 0,192,60,0,128,124,0,128,120,0,0,240,0,1,240,0, + 1,224,0,3,192,0,7,192,0,7,128,128,15,0,128,31, + 0,128,30,0,128,60,1,128,124,1,128,120,3,128,240,15, + 128,255,255,128,11,45,90,21,6,247,0,224,1,128,7,0, + 14,0,12,0,28,0,28,0,28,0,28,0,30,0,30,0, + 14,0,14,0,15,0,15,0,7,0,7,0,7,0,7,0, + 6,0,4,0,24,0,224,0,56,0,12,0,6,0,6,0, + 7,0,7,0,7,0,15,0,15,0,15,0,14,0,30,0, + 30,0,28,0,28,0,28,0,28,0,12,0,12,0,6,0, + 3,128,0,224,2,46,46,14,6,246,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,45,90,20,4,247,192,0, + 112,0,28,0,12,0,6,0,7,0,7,0,7,0,7,0, + 15,0,15,0,14,0,30,0,30,0,30,0,28,0,28,0, + 28,0,28,0,12,0,4,0,3,0,0,224,3,0,6,0, + 12,0,28,0,28,0,28,0,28,0,30,0,30,0,30,0, + 14,0,15,0,15,0,7,0,7,0,7,0,7,0,6,0, + 6,0,12,0,56,0,224,0,28,9,36,32,2,8,31,128, + 0,192,127,240,0,96,127,252,0,48,227,255,0,48,192,127, + 224,48,192,31,248,112,192,3,255,224,96,0,255,192,48,0, + 31,128,255}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 4, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 4 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01type[1163] U8G_SECTION(".progmem.u8g_font_p01type") = { + 0,5,6,0,254,4,1,81,2,129,32,255,254,4,254,5, + 254,0,0,0,4,0,0,1,5,5,3,1,255,128,128,128, + 0,128,3,2,2,4,0,2,160,160,5,5,5,6,0,255, + 80,248,80,248,80,255,4,4,4,5,0,0,144,32,64,144, + 4,5,5,5,0,255,64,128,80,160,80,1,2,2,2,0, + 2,128,128,2,5,5,3,0,255,64,128,128,128,64,2,5, + 5,3,0,255,128,64,64,64,128,3,3,3,4,0,0,160, + 64,160,3,3,3,4,0,0,64,224,64,2,2,2,3,0, + 255,64,128,3,1,1,4,0,1,224,1,1,1,2,0,0, + 128,4,4,4,5,0,255,16,32,64,128,3,5,5,4,0, + 255,96,160,160,160,192,1,5,5,2,0,255,128,128,128,128, + 128,3,5,5,4,0,255,192,32,224,128,96,3,5,5,4, + 0,255,192,32,192,32,192,3,5,5,4,0,255,160,160,224, + 32,32,3,5,5,4,0,255,96,128,224,32,192,3,5,5, + 4,0,255,96,128,224,160,192,3,5,5,4,0,255,224,32, + 32,64,64,3,5,5,4,0,255,96,160,224,160,192,3,5, + 5,4,0,255,96,160,224,32,192,1,3,3,2,0,0,128, + 0,128,2,4,4,3,0,255,64,0,64,128,3,5,5,4, + 0,255,32,64,128,64,32,3,3,3,4,0,0,224,0,224, + 3,5,5,4,0,255,128,64,32,64,128,4,5,5,5,0, + 255,224,16,96,0,64,4,5,5,5,0,255,112,144,176,128, + 224,4,4,4,5,0,0,112,144,240,144,4,5,5,5,0, + 255,112,144,224,144,224,4,4,4,5,0,0,112,128,128,240, + 4,4,4,5,0,0,224,144,144,240,4,5,5,5,0,255, + 112,128,224,128,112,4,4,4,5,0,0,240,128,224,128,4, + 4,4,5,0,0,112,128,144,224,4,4,4,5,0,0,144, + 144,240,144,1,4,4,2,0,0,128,128,128,128,2,4,4, + 3,0,0,64,64,64,128,4,4,4,5,0,0,144,144,224, + 144,4,4,4,5,0,0,128,128,128,112,4,4,4,5,0, + 0,144,240,144,144,4,4,4,5,0,0,144,208,176,144,4, + 4,4,5,0,0,112,144,144,224,4,4,4,5,0,0,112, + 144,224,128,4,4,4,5,0,0,112,144,160,208,4,4,4, + 5,0,0,112,144,224,144,4,5,5,5,0,255,112,128,240, + 16,224,5,4,4,6,0,0,248,32,32,32,4,4,4,5, + 0,0,144,144,144,224,4,4,4,5,0,0,144,144,144,96, + 5,4,4,6,0,0,168,168,168,216,4,4,4,5,0,0, + 144,144,96,144,4,4,4,5,0,0,144,240,16,224,4,4, + 4,5,0,0,240,32,64,240,2,5,5,3,0,255,192,128, + 128,128,192,4,4,4,5,0,255,128,64,32,16,2,5,5, + 3,0,255,192,64,64,64,192,255,4,1,1,5,0,255,240, + 255,3,3,3,4,0,0,96,160,224,3,4,4,4,0,0, + 128,224,160,192,3,3,3,4,0,0,96,128,224,3,4,4, + 4,0,0,32,96,160,224,3,5,5,4,0,254,96,160,224, + 128,96,3,4,4,4,0,0,96,64,224,64,3,5,5,4, + 0,254,96,160,224,32,192,3,4,4,4,0,0,128,192,160, + 160,1,3,3,2,0,0,128,128,128,2,5,5,3,0,254, + 64,64,64,64,128,3,4,4,4,0,0,128,160,192,160,1, + 4,4,2,0,0,128,128,128,128,5,3,3,6,0,0,80, + 168,168,3,3,3,4,0,0,192,160,160,3,3,3,4,0, + 0,96,160,192,3,5,5,4,0,254,96,160,192,128,128,3, + 5,5,4,0,254,192,160,96,32,32,3,3,3,4,0,0, + 96,128,128,3,5,5,4,0,254,96,128,224,32,192,3,4, + 4,4,0,0,64,224,64,32,3,3,3,4,0,0,160,160, + 96,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,5,5,4, + 0,254,160,160,96,32,192,3,3,3,4,0,0,224,64,224, + 3,5,5,4,0,255,96,64,128,64,96,1,5,5,2,0, + 255,128,128,128,128,128,3,5,5,4,0,255,192,64,32,64, + 192,4,2,2,5,0,1,80,160,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,1,5,5,2,0, + 255,128,0,128,128,128,255,255,255,255,1,5,5,3,1,255, + 128,128,0,128,128,255,255,255,255,5,5,5,6,0,255,40, + 80,160,80,40,3,2,2,4,0,0,224,32,3,1,1,4, + 0,1,224,255,255,255,3,5,5,4,0,255,64,224,64,0, + 224,255,255,255,255,255,1,1,1,2,0,1,128,255,255,255, + 5,5,5,6,0,255,160,80,40,80,160,255,255,255,4,5, + 5,5,0,255,32,0,96,128,112,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 3,3,3,4,0,0,160,64,160,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,3,5,5,4,0,255,64,0, + 224,0,64,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 5 x= 0 y= 1 dx= 5 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 4 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01typen[177] U8G_SECTION(".progmem.u8g_font_p01typen") = { + 0,5,6,0,254,5,0,0,0,0,42,57,0,4,255,5, + 0,3,3,3,4,0,0,160,64,160,3,3,3,4,0,0, + 64,224,64,2,2,2,3,0,255,64,128,3,1,1,4,0, + 1,224,1,1,1,2,0,0,128,4,4,4,5,0,255,16, + 32,64,128,3,5,5,4,0,255,96,160,160,160,192,1,5, + 5,2,0,255,128,128,128,128,128,3,5,5,4,0,255,192, + 32,224,128,96,3,5,5,4,0,255,192,32,192,32,192,3, + 5,5,4,0,255,160,160,224,32,32,3,5,5,4,0,255, + 96,128,224,32,192,3,5,5,4,0,255,96,128,224,160,192, + 3,5,5,4,0,255,224,32,32,64,64,3,5,5,4,0, + 255,96,160,224,160,192,3,5,5,4,0,255,96,160,224,32, + 192}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 4, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 4 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01typer[938] U8G_SECTION(".progmem.u8g_font_p01typer") = { + 0,5,6,0,254,4,1,81,2,129,32,127,254,4,254,5, + 254,0,0,0,4,0,0,1,5,5,3,1,255,128,128,128, + 0,128,3,2,2,4,0,2,160,160,5,5,5,6,0,255, + 80,248,80,248,80,255,4,4,4,5,0,0,144,32,64,144, + 4,5,5,5,0,255,64,128,80,160,80,1,2,2,2,0, + 2,128,128,2,5,5,3,0,255,64,128,128,128,64,2,5, + 5,3,0,255,128,64,64,64,128,3,3,3,4,0,0,160, + 64,160,3,3,3,4,0,0,64,224,64,2,2,2,3,0, + 255,64,128,3,1,1,4,0,1,224,1,1,1,2,0,0, + 128,4,4,4,5,0,255,16,32,64,128,3,5,5,4,0, + 255,96,160,160,160,192,1,5,5,2,0,255,128,128,128,128, + 128,3,5,5,4,0,255,192,32,224,128,96,3,5,5,4, + 0,255,192,32,192,32,192,3,5,5,4,0,255,160,160,224, + 32,32,3,5,5,4,0,255,96,128,224,32,192,3,5,5, + 4,0,255,96,128,224,160,192,3,5,5,4,0,255,224,32, + 32,64,64,3,5,5,4,0,255,96,160,224,160,192,3,5, + 5,4,0,255,96,160,224,32,192,1,3,3,2,0,0,128, + 0,128,2,4,4,3,0,255,64,0,64,128,3,5,5,4, + 0,255,32,64,128,64,32,3,3,3,4,0,0,224,0,224, + 3,5,5,4,0,255,128,64,32,64,128,4,5,5,5,0, + 255,224,16,96,0,64,4,5,5,5,0,255,112,144,176,128, + 224,4,4,4,5,0,0,112,144,240,144,4,5,5,5,0, + 255,112,144,224,144,224,4,4,4,5,0,0,112,128,128,240, + 4,4,4,5,0,0,224,144,144,240,4,5,5,5,0,255, + 112,128,224,128,112,4,4,4,5,0,0,240,128,224,128,4, + 4,4,5,0,0,112,128,144,224,4,4,4,5,0,0,144, + 144,240,144,1,4,4,2,0,0,128,128,128,128,2,4,4, + 3,0,0,64,64,64,128,4,4,4,5,0,0,144,144,224, + 144,4,4,4,5,0,0,128,128,128,112,4,4,4,5,0, + 0,144,240,144,144,4,4,4,5,0,0,144,208,176,144,4, + 4,4,5,0,0,112,144,144,224,4,4,4,5,0,0,112, + 144,224,128,4,4,4,5,0,0,112,144,160,208,4,4,4, + 5,0,0,112,144,224,144,4,5,5,5,0,255,112,128,240, + 16,224,5,4,4,6,0,0,248,32,32,32,4,4,4,5, + 0,0,144,144,144,224,4,4,4,5,0,0,144,144,144,96, + 5,4,4,6,0,0,168,168,168,216,4,4,4,5,0,0, + 144,144,96,144,4,4,4,5,0,0,144,240,16,224,4,4, + 4,5,0,0,240,32,64,240,2,5,5,3,0,255,192,128, + 128,128,192,4,4,4,5,0,255,128,64,32,16,2,5,5, + 3,0,255,192,64,64,64,192,255,4,1,1,5,0,255,240, + 255,3,3,3,4,0,0,96,160,224,3,4,4,4,0,0, + 128,224,160,192,3,3,3,4,0,0,96,128,224,3,4,4, + 4,0,0,32,96,160,224,3,5,5,4,0,254,96,160,224, + 128,96,3,4,4,4,0,0,96,64,224,64,3,5,5,4, + 0,254,96,160,224,32,192,3,4,4,4,0,0,128,192,160, + 160,1,3,3,2,0,0,128,128,128,2,5,5,3,0,254, + 64,64,64,64,128,3,4,4,4,0,0,128,160,192,160,1, + 4,4,2,0,0,128,128,128,128,5,3,3,6,0,0,80, + 168,168,3,3,3,4,0,0,192,160,160,3,3,3,4,0, + 0,96,160,192,3,5,5,4,0,254,96,160,192,128,128,3, + 5,5,4,0,254,192,160,96,32,32,3,3,3,4,0,0, + 96,128,128,3,5,5,4,0,254,96,128,224,32,192,3,4, + 4,4,0,0,64,224,64,32,3,3,3,4,0,0,160,160, + 96,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,5,5,4, + 0,254,160,160,96,32,192,3,3,3,4,0,0,224,64,224, + 3,5,5,4,0,255,96,64,128,64,96,1,5,5,2,0, + 255,128,128,128,128,128,3,5,5,4,0,255,192,64,32,64, + 192,4,2,2,5,0,1,80,160,255}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 4 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[1140] U8G_SECTION(".progmem.u8g_font_pixelle_micro") = { + 0,6,8,255,254,5,1,97,2,188,32,255,254,6,254,6, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,0, + 80,248,80,248,80,3,7,7,4,0,255,64,224,128,224,32, + 224,64,4,4,4,5,0,0,144,32,64,144,4,5,5,5, + 0,0,96,64,208,160,208,1,2,2,2,0,3,128,128,2, + 7,7,3,0,255,64,128,128,128,128,128,64,2,7,7,3, + 0,255,128,64,64,64,64,64,128,3,4,4,4,0,0,64, + 224,64,160,3,3,3,4,0,0,64,224,64,1,2,2,2, + 0,255,128,128,3,1,1,4,0,1,224,1,1,1,2,0, + 0,128,3,6,6,4,0,0,32,32,64,64,128,128,3,5, + 5,4,0,0,64,160,224,160,64,3,5,5,4,0,0,192, + 64,64,64,224,3,5,5,4,0,0,64,160,32,64,224,3, + 5,5,4,0,0,192,32,64,32,192,3,5,5,4,0,0, + 160,160,224,32,32,3,5,5,4,0,0,224,128,224,32,192, + 3,5,5,4,0,0,64,160,192,160,64,3,5,5,4,0, + 0,224,32,64,64,128,3,5,5,4,0,0,64,160,64,160, + 64,3,5,5,4,0,0,64,160,96,160,64,1,3,3,2, + 0,0,128,0,128,1,4,4,2,0,255,128,0,128,128,2, + 3,3,3,0,0,64,128,64,3,3,3,4,0,0,224,0, + 224,2,3,3,3,0,0,128,64,128,3,5,5,4,0,0, + 64,160,32,64,64,5,6,6,6,0,0,112,136,168,184,128, + 120,3,5,5,4,0,0,64,160,224,160,160,3,5,5,4, + 0,0,192,160,192,160,192,3,5,5,4,0,0,64,160,128, + 160,64,3,5,5,4,0,0,192,160,160,160,192,3,5,5, + 4,0,0,224,128,192,128,224,3,5,5,4,0,0,224,128, + 192,128,128,3,5,5,4,0,0,64,160,128,160,96,3,5, + 5,4,0,0,160,160,224,160,160,3,5,5,4,0,0,224, + 64,64,64,224,3,5,5,4,0,0,32,32,32,160,64,3, + 5,5,4,0,0,160,160,192,160,160,3,5,5,4,0,0, + 128,128,128,128,224,3,5,5,4,0,0,160,224,224,160,160, + 3,5,5,4,0,0,160,224,224,224,160,3,5,5,4,0, + 0,64,160,160,160,64,3,5,5,4,0,0,192,160,192,128, + 128,3,5,5,4,0,0,64,160,160,224,96,3,5,5,4, + 0,0,192,160,192,160,160,3,5,5,4,0,0,96,128,64, + 32,224,3,5,5,4,0,0,224,64,64,64,64,3,5,5, + 4,0,0,160,160,160,160,64,3,5,5,4,0,0,160,160, + 160,64,64,3,5,5,4,0,0,160,160,224,224,160,3,5, + 5,4,0,0,160,160,64,160,160,3,5,5,4,0,0,160, + 160,64,64,64,3,5,5,4,0,0,224,32,64,128,224,2, + 7,7,3,0,255,192,128,128,128,128,128,192,3,6,6,4, + 0,0,128,128,64,64,32,32,2,7,7,3,0,255,192,64, + 64,64,64,64,192,3,2,2,4,0,3,64,160,3,1,1, + 4,0,0,224,1,2,2,2,0,4,128,128,3,3,3,4, + 0,0,96,160,96,3,5,5,4,0,0,128,128,192,160,192, + 3,3,3,4,0,0,96,128,96,3,5,5,4,0,0,32, + 32,96,160,96,3,3,3,4,0,0,96,224,96,2,5,5, + 3,0,0,64,128,192,128,128,3,5,5,4,0,254,96,160, + 96,160,64,3,5,5,4,0,0,128,128,192,160,160,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,160,64,3,6,6,4,0,0,128,128,128,160, + 192,160,1,6,6,2,0,0,128,128,128,128,128,128,5,3, + 3,6,0,0,208,168,168,3,3,3,4,0,0,192,160,160, + 3,3,3,4,0,0,64,160,64,3,5,5,4,0,254,192, + 160,192,128,128,3,5,5,4,0,254,96,160,96,32,32,3, + 3,3,4,0,0,192,160,128,3,3,3,4,0,0,96,64, + 192,3,5,5,4,0,0,64,64,224,64,64,3,3,3,4, + 0,0,160,160,64,3,3,3,4,0,0,160,64,64,5,3, + 3,6,0,0,168,168,208,3,3,3,4,0,0,160,64,160, + 3,5,5,4,0,254,160,160,96,160,64,3,3,3,4,0, + 0,224,64,224,3,7,7,4,0,255,32,64,64,128,64,64, + 32,1,7,7,2,0,255,128,128,128,128,128,128,128,3,7, + 7,4,0,255,128,64,64,32,64,64,128,4,2,2,5,0, + 1,80,160,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 6 x= 0 y= 1 dx= 4 dy= 0 ascent= 6 len= 6 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[180] U8G_SECTION(".progmem.u8g_font_pixelle_micron") = { + 0,6,8,255,254,5,0,0,0,0,42,57,0,6,255,5, + 0,3,4,4,4,0,0,64,224,64,160,3,3,3,4,0, + 0,64,224,64,1,2,2,2,0,255,128,128,3,1,1,4, + 0,1,224,1,1,1,2,0,0,128,3,6,6,4,0,0, + 32,32,64,64,128,128,3,5,5,4,0,0,64,160,224,160, + 64,3,5,5,4,0,0,192,64,64,64,224,3,5,5,4, + 0,0,64,160,32,64,224,3,5,5,4,0,0,192,32,64, + 32,192,3,5,5,4,0,0,160,160,224,32,32,3,5,5, + 4,0,0,224,128,224,32,192,3,5,5,4,0,0,64,160, + 192,160,64,3,5,5,4,0,0,224,32,64,64,128,3,5, + 5,4,0,0,64,160,64,160,64,3,5,5,4,0,0,64, + 160,96,160,64}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 4 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[1012] U8G_SECTION(".progmem.u8g_font_pixelle_micror") = { + 0,6,8,255,254,5,1,97,2,188,32,127,254,6,254,6, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,0, + 80,248,80,248,80,3,7,7,4,0,255,64,224,128,224,32, + 224,64,4,4,4,5,0,0,144,32,64,144,4,5,5,5, + 0,0,96,64,208,160,208,1,2,2,2,0,3,128,128,2, + 7,7,3,0,255,64,128,128,128,128,128,64,2,7,7,3, + 0,255,128,64,64,64,64,64,128,3,4,4,4,0,0,64, + 224,64,160,3,3,3,4,0,0,64,224,64,1,2,2,2, + 0,255,128,128,3,1,1,4,0,1,224,1,1,1,2,0, + 0,128,3,6,6,4,0,0,32,32,64,64,128,128,3,5, + 5,4,0,0,64,160,224,160,64,3,5,5,4,0,0,192, + 64,64,64,224,3,5,5,4,0,0,64,160,32,64,224,3, + 5,5,4,0,0,192,32,64,32,192,3,5,5,4,0,0, + 160,160,224,32,32,3,5,5,4,0,0,224,128,224,32,192, + 3,5,5,4,0,0,64,160,192,160,64,3,5,5,4,0, + 0,224,32,64,64,128,3,5,5,4,0,0,64,160,64,160, + 64,3,5,5,4,0,0,64,160,96,160,64,1,3,3,2, + 0,0,128,0,128,1,4,4,2,0,255,128,0,128,128,2, + 3,3,3,0,0,64,128,64,3,3,3,4,0,0,224,0, + 224,2,3,3,3,0,0,128,64,128,3,5,5,4,0,0, + 64,160,32,64,64,5,6,6,6,0,0,112,136,168,184,128, + 120,3,5,5,4,0,0,64,160,224,160,160,3,5,5,4, + 0,0,192,160,192,160,192,3,5,5,4,0,0,64,160,128, + 160,64,3,5,5,4,0,0,192,160,160,160,192,3,5,5, + 4,0,0,224,128,192,128,224,3,5,5,4,0,0,224,128, + 192,128,128,3,5,5,4,0,0,64,160,128,160,96,3,5, + 5,4,0,0,160,160,224,160,160,3,5,5,4,0,0,224, + 64,64,64,224,3,5,5,4,0,0,32,32,32,160,64,3, + 5,5,4,0,0,160,160,192,160,160,3,5,5,4,0,0, + 128,128,128,128,224,3,5,5,4,0,0,160,224,224,160,160, + 3,5,5,4,0,0,160,224,224,224,160,3,5,5,4,0, + 0,64,160,160,160,64,3,5,5,4,0,0,192,160,192,128, + 128,3,5,5,4,0,0,64,160,160,224,96,3,5,5,4, + 0,0,192,160,192,160,160,3,5,5,4,0,0,96,128,64, + 32,224,3,5,5,4,0,0,224,64,64,64,64,3,5,5, + 4,0,0,160,160,160,160,64,3,5,5,4,0,0,160,160, + 160,64,64,3,5,5,4,0,0,160,160,224,224,160,3,5, + 5,4,0,0,160,160,64,160,160,3,5,5,4,0,0,160, + 160,64,64,64,3,5,5,4,0,0,224,32,64,128,224,2, + 7,7,3,0,255,192,128,128,128,128,128,192,3,6,6,4, + 0,0,128,128,64,64,32,32,2,7,7,3,0,255,192,64, + 64,64,64,64,192,3,2,2,4,0,3,64,160,3,1,1, + 4,0,0,224,1,2,2,2,0,4,128,128,3,3,3,4, + 0,0,96,160,96,3,5,5,4,0,0,128,128,192,160,192, + 3,3,3,4,0,0,96,128,96,3,5,5,4,0,0,32, + 32,96,160,96,3,3,3,4,0,0,96,224,96,2,5,5, + 3,0,0,64,128,192,128,128,3,5,5,4,0,254,96,160, + 96,160,64,3,5,5,4,0,0,128,128,192,160,160,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,160,64,3,6,6,4,0,0,128,128,128,160, + 192,160,1,6,6,2,0,0,128,128,128,128,128,128,5,3, + 3,6,0,0,208,168,168,3,3,3,4,0,0,192,160,160, + 3,3,3,4,0,0,64,160,64,3,5,5,4,0,254,192, + 160,192,128,128,3,5,5,4,0,254,96,160,96,32,32,3, + 3,3,4,0,0,192,160,128,3,3,3,4,0,0,96,64, + 192,3,5,5,4,0,0,64,64,224,64,64,3,3,3,4, + 0,0,160,160,64,3,3,3,4,0,0,160,64,64,5,3, + 3,6,0,0,168,168,208,3,3,3,4,0,0,160,64,160, + 3,5,5,4,0,254,160,160,96,160,64,3,3,3,4,0, + 0,224,64,224,3,7,7,4,0,255,32,64,64,128,64,64, + 32,1,7,7,2,0,255,128,128,128,128,128,128,128,3,7, + 7,4,0,255,128,64,64,32,64,64,128,4,2,2,5,0, + 1,80,160,255}; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 6, '1' Height: 5 + Calculated Max Values w= 7 h= 8 x= 0 y= 6 dx= 8 dy= 0 ascent=10 len= 8 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x=-1 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 1 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[1376] U8G_SECTION(".progmem.u8g_font_robot_de_niro") = { + 0,10,10,255,0,6,1,97,2,193,32,255,1,10,0,9, + 0,0,0,0,2,0,0,2,5,5,3,0,3,192,128,128, + 0,128,3,2,2,4,0,6,160,160,5,5,5,6,0,3, + 80,248,80,248,80,4,7,7,5,0,2,96,224,16,96,128, + 112,96,5,5,5,6,0,3,192,208,32,88,24,4,5,5, + 5,0,3,96,160,80,160,80,1,2,2,2,0,6,128,128, + 2,7,7,3,0,2,64,128,128,128,128,128,64,2,7,7, + 3,0,2,128,64,64,64,64,64,128,3,3,3,4,0,6, + 160,64,160,3,3,3,4,0,4,64,224,64,2,2,2,3, + 0,2,64,128,3,1,1,4,0,5,224,1,1,1,2,0, + 3,128,3,5,5,4,0,3,32,32,64,128,128,3,5,5, + 4,0,3,64,160,160,160,64,3,5,5,4,0,3,192,64, + 64,64,224,3,5,5,4,0,3,192,32,96,128,224,3,5, + 5,4,0,3,192,32,224,32,224,3,5,5,4,0,3,160, + 160,224,32,32,3,5,5,4,0,3,96,128,224,32,224,3, + 5,5,4,0,3,96,128,224,160,64,4,5,5,5,0,3, + 224,32,112,32,32,3,5,5,4,0,3,96,160,224,160,192, + 3,5,5,4,0,3,96,160,224,32,192,1,3,3,2,0, + 4,128,0,128,2,4,4,3,0,3,64,0,64,128,2,3, + 3,3,0,4,64,128,64,3,3,3,4,0,4,224,0,224, + 2,3,3,3,0,4,128,64,128,3,5,5,4,0,3,224, + 32,64,0,64,5,7,7,6,0,2,120,136,184,168,184,128, + 120,4,6,6,4,255,2,48,80,112,80,80,128,4,5,5, + 5,0,3,224,80,96,80,224,3,5,5,4,0,3,96,128, + 128,160,64,4,5,5,5,0,3,224,80,80,80,32,3,5, + 5,4,0,3,96,128,192,128,224,4,6,6,5,0,2,176, + 64,96,64,64,128,4,5,5,5,0,3,96,128,176,160,96, + 4,6,6,4,255,2,80,80,112,80,80,128,1,5,5,2, + 0,3,128,128,128,128,128,3,5,5,4,0,3,64,32,32, + 32,192,5,5,5,6,0,3,208,80,96,80,72,4,5,5, + 5,0,3,192,64,64,64,176,6,5,5,6,255,3,168,84, + 84,84,68,4,5,5,5,0,3,224,80,80,80,80,3,5, + 5,4,0,3,96,160,160,160,64,4,5,5,5,0,3,176, + 80,96,64,64,4,5,5,5,0,3,64,160,160,160,112,5, + 5,5,5,255,3,176,80,96,80,72,3,5,5,4,0,3, + 96,128,224,32,192,3,5,5,4,0,3,224,64,64,64,64, + 4,5,5,5,0,3,160,160,160,160,80,3,5,5,4,0, + 3,160,160,160,160,64,6,5,5,7,0,3,172,168,168,168, + 88,4,5,5,5,0,3,160,160,64,160,176,4,7,7,4, + 255,1,208,80,80,48,16,16,32,3,5,5,4,0,3,224, + 32,64,128,224,2,7,7,3,0,2,192,128,128,128,128,128, + 192,3,5,5,4,0,3,128,128,64,32,32,2,7,7,3, + 0,2,192,64,64,64,64,64,192,3,3,3,4,0,5,64, + 160,160,4,1,1,5,0,3,240,2,2,2,3,0,6,128, + 64,4,4,4,5,0,3,96,160,160,80,4,5,5,5,0, + 3,64,96,80,80,160,3,4,4,4,0,3,96,128,160,64, + 4,6,6,5,0,3,16,32,96,160,160,208,4,4,4,5, + 0,3,96,160,208,96,4,7,7,4,255,1,48,64,96,64, + 64,64,128,4,6,6,5,0,1,80,160,160,96,32,192,3, + 7,7,4,0,3,64,128,128,192,160,160,160,1,5,5,2, + 0,3,128,0,128,128,128,3,7,7,3,255,1,32,0,32, + 32,32,32,192,4,7,7,5,0,2,128,128,160,224,160,144, + 16,4,6,6,5,0,3,32,80,96,64,64,176,6,4,4, + 7,0,3,88,168,168,164,3,4,4,4,0,3,64,160,160, + 160,3,4,4,4,0,3,96,160,160,192,4,6,6,5,0, + 1,176,80,80,96,64,128,4,6,6,5,0,1,80,160,160, + 96,32,32,4,4,4,5,0,3,160,80,64,64,3,4,4, + 4,0,3,64,160,32,192,2,6,6,3,0,3,128,128,192, + 128,128,64,4,4,4,5,0,3,160,160,160,80,3,4,4, + 4,0,3,160,160,160,64,6,4,4,7,0,3,172,168,168, + 80,3,4,4,4,0,3,160,160,64,160,3,5,5,4,0, + 2,160,160,64,32,192,4,5,5,5,0,2,224,32,64,144, + 96,3,7,7,4,0,2,96,64,64,128,64,64,96,1,7, + 7,2,0,2,128,128,128,128,128,128,128,3,7,7,4,0, + 2,192,64,64,32,64,64,192,4,2,2,5,0,5,80,160, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,4,7,7,5,0,2,96,144,64,224,64,128, + 240,255,255,255,4,7,7,5,0,2,96,128,96,144,96,16, + 96,255,7,8,8,8,0,2,124,130,154,170,162,154,130,124, + 255,255,255,255,7,8,8,8,0,2,124,130,186,170,178,170, + 130,124,255,255,255,255,255,255,255,6,5,5,7,0,3,108, + 232,104,40,40,255,255,255,255,255,255,255,255,255,255,255,255, + 255,4,8,8,4,255,2,80,0,48,80,112,80,80,128,255, + 255,3,7,7,4,0,1,96,128,128,160,96,64,32,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,3,7,7,4, + 0,3,160,0,96,160,160,160,64,4,4,4,5,0,4,144, + 96,96,144,255,255,255,255,4,7,7,5,0,3,80,0,160, + 160,160,160,80,255,255,4,7,7,4,255,1,32,80,96,80, + 96,64,128,255,255,255,255,4,6,6,5,0,3,80,0,96, + 160,160,80,255,255,255,4,6,6,5,0,3,96,0,96,160, + 208,96,4,6,6,5,0,3,96,0,96,160,208,96,4,7, + 7,5,0,3,64,160,0,96,160,208,96,255,255,255,255,255, + 255,255,255,255,255,255,3,6,6,4,0,3,160,0,96,160, + 160,192,5,5,5,6,0,3,32,0,248,0,32,255,255,255, + 255,4,6,6,5,0,3,80,0,160,160,160,80,255,255,255 + }; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 5 x= 0 y= 6 dx= 5 dy= 0 ascent= 9 len= 5 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 9 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[178] U8G_SECTION(".progmem.u8g_font_robot_de_niron") = { + 0,10,10,255,0,5,0,0,0,0,42,57,0,9,0,5, + 0,3,3,3,4,0,6,160,64,160,3,3,3,4,0,4, + 64,224,64,2,2,2,3,0,2,64,128,3,1,1,4,0, + 5,224,1,1,1,2,0,3,128,3,5,5,4,0,3,32, + 32,64,128,128,3,5,5,4,0,3,64,160,160,160,64,3, + 5,5,4,0,3,192,64,64,64,224,3,5,5,4,0,3, + 192,32,96,128,224,3,5,5,4,0,3,192,32,224,32,224, + 3,5,5,4,0,3,160,160,224,32,32,3,5,5,4,0, + 3,96,128,224,32,224,3,5,5,4,0,3,96,128,224,160, + 64,4,5,5,5,0,3,224,32,112,32,32,3,5,5,4, + 0,3,96,160,224,160,192,3,5,5,4,0,3,96,160,224, + 32,192}; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 6, '1' Height: 5 + Calculated Max Values w= 6 h= 7 x= 0 y= 6 dx= 7 dy= 0 ascent=10 len= 7 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x=-1 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 1 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[1041] U8G_SECTION(".progmem.u8g_font_robot_de_niror") = { + 0,10,10,255,0,6,1,97,2,193,32,127,1,10,0,9, + 0,0,0,0,2,0,0,2,5,5,3,0,3,192,128,128, + 0,128,3,2,2,4,0,6,160,160,5,5,5,6,0,3, + 80,248,80,248,80,4,7,7,5,0,2,96,224,16,96,128, + 112,96,5,5,5,6,0,3,192,208,32,88,24,4,5,5, + 5,0,3,96,160,80,160,80,1,2,2,2,0,6,128,128, + 2,7,7,3,0,2,64,128,128,128,128,128,64,2,7,7, + 3,0,2,128,64,64,64,64,64,128,3,3,3,4,0,6, + 160,64,160,3,3,3,4,0,4,64,224,64,2,2,2,3, + 0,2,64,128,3,1,1,4,0,5,224,1,1,1,2,0, + 3,128,3,5,5,4,0,3,32,32,64,128,128,3,5,5, + 4,0,3,64,160,160,160,64,3,5,5,4,0,3,192,64, + 64,64,224,3,5,5,4,0,3,192,32,96,128,224,3,5, + 5,4,0,3,192,32,224,32,224,3,5,5,4,0,3,160, + 160,224,32,32,3,5,5,4,0,3,96,128,224,32,224,3, + 5,5,4,0,3,96,128,224,160,64,4,5,5,5,0,3, + 224,32,112,32,32,3,5,5,4,0,3,96,160,224,160,192, + 3,5,5,4,0,3,96,160,224,32,192,1,3,3,2,0, + 4,128,0,128,2,4,4,3,0,3,64,0,64,128,2,3, + 3,3,0,4,64,128,64,3,3,3,4,0,4,224,0,224, + 2,3,3,3,0,4,128,64,128,3,5,5,4,0,3,224, + 32,64,0,64,5,7,7,6,0,2,120,136,184,168,184,128, + 120,4,6,6,4,255,2,48,80,112,80,80,128,4,5,5, + 5,0,3,224,80,96,80,224,3,5,5,4,0,3,96,128, + 128,160,64,4,5,5,5,0,3,224,80,80,80,32,3,5, + 5,4,0,3,96,128,192,128,224,4,6,6,5,0,2,176, + 64,96,64,64,128,4,5,5,5,0,3,96,128,176,160,96, + 4,6,6,4,255,2,80,80,112,80,80,128,1,5,5,2, + 0,3,128,128,128,128,128,3,5,5,4,0,3,64,32,32, + 32,192,5,5,5,6,0,3,208,80,96,80,72,4,5,5, + 5,0,3,192,64,64,64,176,6,5,5,6,255,3,168,84, + 84,84,68,4,5,5,5,0,3,224,80,80,80,80,3,5, + 5,4,0,3,96,160,160,160,64,4,5,5,5,0,3,176, + 80,96,64,64,4,5,5,5,0,3,64,160,160,160,112,5, + 5,5,5,255,3,176,80,96,80,72,3,5,5,4,0,3, + 96,128,224,32,192,3,5,5,4,0,3,224,64,64,64,64, + 4,5,5,5,0,3,160,160,160,160,80,3,5,5,4,0, + 3,160,160,160,160,64,6,5,5,7,0,3,172,168,168,168, + 88,4,5,5,5,0,3,160,160,64,160,176,4,7,7,4, + 255,1,208,80,80,48,16,16,32,3,5,5,4,0,3,224, + 32,64,128,224,2,7,7,3,0,2,192,128,128,128,128,128, + 192,3,5,5,4,0,3,128,128,64,32,32,2,7,7,3, + 0,2,192,64,64,64,64,64,192,3,3,3,4,0,5,64, + 160,160,4,1,1,5,0,3,240,2,2,2,3,0,6,128, + 64,4,4,4,5,0,3,96,160,160,80,4,5,5,5,0, + 3,64,96,80,80,160,3,4,4,4,0,3,96,128,160,64, + 4,6,6,5,0,3,16,32,96,160,160,208,4,4,4,5, + 0,3,96,160,208,96,4,7,7,4,255,1,48,64,96,64, + 64,64,128,4,6,6,5,0,1,80,160,160,96,32,192,3, + 7,7,4,0,3,64,128,128,192,160,160,160,1,5,5,2, + 0,3,128,0,128,128,128,3,7,7,3,255,1,32,0,32, + 32,32,32,192,4,7,7,5,0,2,128,128,160,224,160,144, + 16,4,6,6,5,0,3,32,80,96,64,64,176,6,4,4, + 7,0,3,88,168,168,164,3,4,4,4,0,3,64,160,160, + 160,3,4,4,4,0,3,96,160,160,192,4,6,6,5,0, + 1,176,80,80,96,64,128,4,6,6,5,0,1,80,160,160, + 96,32,32,4,4,4,5,0,3,160,80,64,64,3,4,4, + 4,0,3,64,160,32,192,2,6,6,3,0,3,128,128,192, + 128,128,64,4,4,4,5,0,3,160,160,160,80,3,4,4, + 4,0,3,160,160,160,64,6,4,4,7,0,3,172,168,168, + 80,3,4,4,4,0,3,160,160,64,160,3,5,5,4,0, + 2,160,160,64,32,192,4,5,5,5,0,2,224,32,64,144, + 96,3,7,7,4,0,2,96,64,64,128,64,64,96,1,7, + 7,2,0,2,128,128,128,128,128,128,128,3,7,7,4,0, + 2,192,64,64,32,64,64,192,4,2,2,5,0,5,80,160, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--11-80-100-100-P-61-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=15 x= 3 y= 9 dx=11 dy= 0 ascent=11 len=15 + Font Bounding box w=11 h=15 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =11 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb08[2612] U8G_SECTION(".progmem.u8g_font_symb08") = { + 0,11,15,255,252,7,1,152,3,60,32,255,254,11,252,7, + 254,0,0,0,3,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,7,7,7,7,0,0,130,68,124,40,40,16, + 16,5,7,7,5,0,0,80,80,248,80,248,80,80,5,7, + 7,6,0,0,248,8,8,120,8,8,248,7,7,7,8,0, + 0,100,188,168,86,42,42,68,6,7,7,7,0,0,32,80, + 80,108,152,152,108,4,5,5,5,0,0,224,16,112,16,224, + 3,9,9,4,0,254,32,64,64,128,128,128,64,64,32,3, + 9,9,4,1,254,128,64,64,32,32,32,64,64,128,3,3, + 3,5,1,2,160,64,160,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,2,0,254,64,64,128,5,1,1,6,0, + 2,248,1,1,1,2,1,0,128,3,7,7,3,0,0,32, + 32,64,64,64,128,128,4,7,7,5,0,0,96,144,144,144, + 144,144,96,3,7,7,5,1,0,64,192,64,64,64,64,224, + 4,7,7,5,0,0,96,144,16,32,32,64,240,4,7,7, + 5,0,0,96,144,16,96,16,16,224,5,7,7,5,0,0, + 16,48,80,144,248,16,16,4,7,7,5,0,0,112,64,224, + 16,16,16,224,4,7,7,5,0,0,112,128,224,144,144,144, + 96,4,7,7,5,0,0,240,144,32,32,64,64,64,4,7, + 7,5,0,0,96,144,144,96,144,144,96,4,7,7,5,0, + 0,96,144,144,144,112,32,192,1,5,5,2,1,0,128,0, + 0,0,128,2,7,7,2,0,254,64,0,0,0,64,64,128, + 6,5,5,7,0,0,12,48,192,48,12,5,3,3,6,0, + 1,248,0,248,6,5,5,6,0,0,192,48,12,48,192,3, + 7,7,5,1,0,64,160,32,64,64,0,64,5,6,6,6, + 0,0,104,176,0,248,0,248,7,7,7,8,0,0,16,56, + 40,40,124,68,238,5,7,7,6,0,0,240,72,72,112,72, + 72,240,7,7,7,8,0,0,238,68,40,16,40,68,238,6, + 7,7,7,0,0,48,48,88,72,140,132,252,5,7,7,6, + 0,0,248,72,64,112,64,72,248,7,7,7,8,0,0,56, + 16,124,146,124,16,56,5,7,7,6,0,0,248,72,64,64, + 64,64,224,7,7,7,8,0,0,238,68,68,124,68,68,238, + 3,7,7,3,0,0,224,64,64,64,64,64,224,6,7,7, + 7,0,0,16,40,152,76,72,72,48,6,7,7,7,0,0, + 236,72,80,96,80,72,236,7,7,7,7,0,0,16,16,40, + 40,68,68,238,9,7,14,10,0,0,227,128,99,0,85,0, + 85,0,93,0,73,0,235,128,7,7,7,8,0,0,238,100, + 84,84,76,76,228,6,7,7,7,0,0,120,204,132,132,132, + 204,120,7,7,7,8,0,0,254,68,68,68,68,68,238,6, + 7,7,7,0,0,120,204,132,180,132,204,120,5,7,7,6, + 0,0,240,72,72,112,64,64,224,5,7,7,6,0,0,248, + 136,64,32,64,136,248,5,7,7,6,0,0,248,168,32,32, + 32,32,112,7,7,7,8,0,0,238,68,40,56,16,16,56, + 4,7,7,5,0,254,112,128,128,128,96,16,96,8,7,7, + 9,0,0,60,102,66,66,102,165,231,6,7,7,7,0,0, + 120,72,0,48,0,132,252,9,7,14,9,0,0,221,128,73, + 0,73,0,62,0,8,0,8,0,28,0,5,7,7,6,0, + 0,248,136,16,32,64,136,248,2,9,9,3,0,254,192,128, + 128,128,128,128,128,128,192,5,5,5,7,1,0,32,0,0, + 0,136,2,9,9,3,1,254,192,64,64,64,64,64,64,64, + 192,5,7,7,7,1,0,32,32,32,32,32,32,248,5,1, + 1,5,0,254,248,6,1,1,5,0,9,252,6,5,5,7, + 0,0,104,168,144,148,104,4,10,10,5,0,254,96,144,144, + 160,144,144,208,160,128,128,5,7,7,6,0,254,200,80,80, + 32,80,80,152,4,8,8,5,0,0,96,144,64,96,144,144, + 144,96,4,5,5,5,0,0,96,144,192,144,96,5,9,9, + 6,0,254,32,32,112,168,168,168,112,32,32,5,7,7,6, + 0,254,200,168,40,48,16,32,32,5,7,7,6,0,254,80, + 232,72,72,72,8,8,3,5,5,4,0,0,192,64,64,64, + 96,5,7,7,6,0,254,48,168,168,168,112,32,32,5,5, + 5,6,0,0,72,216,96,80,72,6,8,8,6,0,0,192, + 160,32,32,80,80,148,136,5,7,7,6,0,254,144,144,144, + 144,232,128,192,5,5,5,6,0,0,136,136,80,80,32,4, + 5,5,5,0,0,96,144,144,144,96,5,5,5,6,0,0, + 248,80,80,88,208,4,7,7,5,0,0,96,144,144,240,144, + 144,96,4,8,8,5,0,253,96,144,144,144,224,128,128,128, + 5,5,5,6,0,0,120,144,144,144,96,4,5,5,5,0, + 0,240,64,64,80,96,5,5,5,6,0,0,80,200,72,72, + 48,7,6,6,8,0,0,254,68,130,146,146,108,7,5,5, + 8,0,0,68,130,146,146,108,4,10,10,5,0,254,128,176, + 64,112,128,128,128,96,16,112,7,7,7,7,0,254,146,84, + 84,84,56,16,16,4,10,10,5,0,254,128,176,96,128,128, + 128,128,96,16,112,3,9,9,5,1,254,32,64,64,64,128, + 64,64,64,32,1,9,9,2,0,254,128,128,128,128,128,128, + 128,128,128,3,9,9,5,1,254,128,64,64,64,32,64,64, + 64,128,5,2,2,6,0,2,104,176,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,6,7,7,7, + 0,0,140,212,112,32,32,32,112,3,3,3,3,0,5,32, + 64,128,5,7,7,6,0,0,8,48,192,48,8,0,248,4, + 7,7,3,255,0,16,16,32,32,64,64,128,7,3,3,7, + 0,1,108,146,108,5,9,9,5,0,254,24,32,112,32,32, + 32,32,32,192,5,5,5,7,1,0,112,112,248,248,32,5, + 5,5,7,1,0,32,112,248,112,32,5,5,5,7,1,0, + 216,248,248,112,32,5,5,5,7,1,0,32,112,248,248,32, + 10,5,10,10,0,0,33,0,64,128,255,192,64,128,33,0, + 10,5,10,10,0,0,32,0,64,0,255,192,64,0,32,0, + 5,14,14,6,0,252,32,112,168,32,32,32,32,32,32,32, + 32,32,32,32,10,5,10,10,0,0,1,0,0,128,255,192, + 0,128,1,0,5,13,13,6,0,254,32,32,32,32,32,32, + 32,32,32,32,168,112,32,3,4,4,4,0,3,64,160,160, + 64,5,7,7,6,0,0,32,32,248,32,32,0,248,5,3, + 3,4,0,5,40,80,160,5,7,7,6,0,0,128,96,24, + 96,128,0,248,5,5,5,6,0,0,136,80,32,80,136,6, + 3,3,7,0,1,108,144,108,4,8,8,5,0,0,96,144, + 16,16,112,144,144,96,4,3,3,5,0,1,96,240,96,5, + 5,5,6,0,0,32,0,248,0,32,5,5,5,6,0,0, + 16,248,32,248,64,5,5,5,6,0,1,248,0,248,0,248, + 5,5,5,6,0,0,104,176,0,104,176,7,1,1,9,1, + 0,146,1,15,15,6,2,252,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,10,1,2,10,0,2,255,192,6, + 6,6,7,0,0,4,4,4,68,252,64,7,7,7,8,0, + 0,204,102,52,92,76,38,98,6,9,9,7,0,255,124,132, + 200,24,12,4,68,232,48,8,8,8,8,0,0,108,146,146, + 92,20,18,82,163,7,8,8,9,1,254,16,36,74,82,106, + 108,160,96,7,7,7,8,0,0,56,68,170,146,170,68,56, + 7,7,7,8,0,0,56,68,146,186,146,68,56,7,9,9, + 8,0,255,2,60,76,138,146,162,100,120,128,7,5,5,8, + 0,0,56,68,130,130,130,7,5,5,8,0,0,130,130,130, + 68,56,7,5,5,7,0,0,248,4,2,4,248,7,7,7, + 7,0,254,248,4,2,4,248,0,254,7,7,7,7,0,255, + 4,62,72,136,80,62,32,7,5,5,7,0,0,62,64,128, + 64,62,7,7,7,7,0,254,62,64,128,64,62,0,254,5, + 5,5,7,1,0,120,128,248,128,120,5,7,7,7,1,255, + 16,120,144,248,160,120,64,7,7,7,8,0,0,2,4,8, + 16,32,64,254,6,7,7,7,0,0,252,132,132,72,72,48, + 48,7,8,8,8,0,255,56,68,250,170,178,174,68,56,7, + 8,8,8,0,255,56,68,154,170,162,154,68,56,10,5,10, + 10,0,2,253,0,170,128,42,128,42,128,122,192,8,9,9, + 9,0,255,255,66,66,66,66,66,66,66,231,6,10,10,6, + 0,0,4,4,8,8,72,208,80,80,32,32,1,1,1,3, + 1,2,128,6,3,3,7,0,0,252,4,4,5,5,5,6, + 0,0,32,80,80,136,136,5,5,5,6,0,0,136,136,80, + 80,32,10,5,10,11,0,0,33,0,127,128,128,64,127,128, + 33,0,9,5,10,10,0,0,32,0,127,128,128,0,127,128, + 32,0,5,10,10,6,0,0,32,112,216,80,80,80,80,80, + 80,80,9,5,10,10,0,0,2,0,255,0,0,128,255,0, + 2,0,5,10,10,6,0,0,80,80,80,80,80,80,80,216, + 80,32,7,7,7,7,0,0,16,40,68,198,68,40,16,3, + 9,9,3,0,254,32,32,64,64,128,64,64,32,32,7,8, + 8,8,0,255,56,68,186,170,178,170,68,56,7,8,8,8, + 0,255,56,68,154,162,162,154,68,56,8,5,5,9,0,2, + 250,85,85,85,85,6,9,9,7,0,255,252,132,64,32,16, + 32,64,132,252,3,14,14,4,1,252,32,64,64,128,128,128, + 128,128,128,128,128,128,128,128,1,15,15,4,1,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,3,15,15, + 4,1,252,128,128,128,128,128,128,128,128,128,128,128,128,64, + 64,32,3,14,14,4,1,252,224,128,128,128,128,128,128,128, + 128,128,128,128,128,128,1,15,15,4,1,252,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,4,1, + 254,128,128,128,128,128,128,128,128,128,128,128,128,224,3,14, + 14,5,2,252,96,128,128,128,128,128,128,128,128,128,128,128, + 128,128,3,15,15,5,0,252,32,32,32,32,32,64,128,64, + 32,32,32,32,32,32,32,3,13,13,5,2,254,128,128,128, + 128,128,128,128,128,128,128,128,128,96,1,15,15,5,2,252, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255, + 3,9,9,3,0,254,128,128,64,64,32,64,64,128,128,3, + 12,12,3,0,254,32,64,64,64,64,64,64,64,64,64,64, + 128,4,14,14,7,3,252,48,80,128,128,128,128,128,128,128, + 128,128,128,128,128,1,15,15,7,0,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,4,13,13,7,0,254, + 16,16,16,16,16,16,16,16,16,16,16,160,192,3,14,14, + 4,0,252,128,64,64,32,32,32,32,32,32,32,32,32,32, + 32,1,15,15,4,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,3,15,15,4,0,252,32,32,32,32, + 32,32,32,32,32,32,32,32,64,64,128,3,14,14,4,0, + 252,224,32,32,32,32,32,32,32,32,32,32,32,32,32,1, + 15,15,4,2,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,13,13,4,0,254,32,32,32,32,32,32, + 32,32,32,32,32,32,224,3,14,14,5,0,252,192,32,32, + 32,32,32,32,32,32,32,32,32,32,32,3,15,15,5,2, + 252,128,128,128,128,128,64,32,64,128,128,128,128,128,128,128, + 3,13,13,5,0,254,32,32,32,32,32,32,32,32,32,32, + 32,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--11-80-100-100-P-61-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 9 h=10 x= 1 y= 9 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w=11 h=15 x=-1 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb08r[1211] U8G_SECTION(".progmem.u8g_font_symb08r") = { + 0,11,15,255,252,7,1,152,3,60,32,127,254,10,253,7, + 254,0,0,0,3,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,7,7,7,7,0,0,130,68,124,40,40,16, + 16,5,7,7,5,0,0,80,80,248,80,248,80,80,5,7, + 7,6,0,0,248,8,8,120,8,8,248,7,7,7,8,0, + 0,100,188,168,86,42,42,68,6,7,7,7,0,0,32,80, + 80,108,152,152,108,4,5,5,5,0,0,224,16,112,16,224, + 3,9,9,4,0,254,32,64,64,128,128,128,64,64,32,3, + 9,9,4,1,254,128,64,64,32,32,32,64,64,128,3,3, + 3,5,1,2,160,64,160,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,2,0,254,64,64,128,5,1,1,6,0, + 2,248,1,1,1,2,1,0,128,3,7,7,3,0,0,32, + 32,64,64,64,128,128,4,7,7,5,0,0,96,144,144,144, + 144,144,96,3,7,7,5,1,0,64,192,64,64,64,64,224, + 4,7,7,5,0,0,96,144,16,32,32,64,240,4,7,7, + 5,0,0,96,144,16,96,16,16,224,5,7,7,5,0,0, + 16,48,80,144,248,16,16,4,7,7,5,0,0,112,64,224, + 16,16,16,224,4,7,7,5,0,0,112,128,224,144,144,144, + 96,4,7,7,5,0,0,240,144,32,32,64,64,64,4,7, + 7,5,0,0,96,144,144,96,144,144,96,4,7,7,5,0, + 0,96,144,144,144,112,32,192,1,5,5,2,1,0,128,0, + 0,0,128,2,7,7,2,0,254,64,0,0,0,64,64,128, + 6,5,5,7,0,0,12,48,192,48,12,5,3,3,6,0, + 1,248,0,248,6,5,5,6,0,0,192,48,12,48,192,3, + 7,7,5,1,0,64,160,32,64,64,0,64,5,6,6,6, + 0,0,104,176,0,248,0,248,7,7,7,8,0,0,16,56, + 40,40,124,68,238,5,7,7,6,0,0,240,72,72,112,72, + 72,240,7,7,7,8,0,0,238,68,40,16,40,68,238,6, + 7,7,7,0,0,48,48,88,72,140,132,252,5,7,7,6, + 0,0,248,72,64,112,64,72,248,7,7,7,8,0,0,56, + 16,124,146,124,16,56,5,7,7,6,0,0,248,72,64,64, + 64,64,224,7,7,7,8,0,0,238,68,68,124,68,68,238, + 3,7,7,3,0,0,224,64,64,64,64,64,224,6,7,7, + 7,0,0,16,40,152,76,72,72,48,6,7,7,7,0,0, + 236,72,80,96,80,72,236,7,7,7,7,0,0,16,16,40, + 40,68,68,238,9,7,14,10,0,0,227,128,99,0,85,0, + 85,0,93,0,73,0,235,128,7,7,7,8,0,0,238,100, + 84,84,76,76,228,6,7,7,7,0,0,120,204,132,132,132, + 204,120,7,7,7,8,0,0,254,68,68,68,68,68,238,6, + 7,7,7,0,0,120,204,132,180,132,204,120,5,7,7,6, + 0,0,240,72,72,112,64,64,224,5,7,7,6,0,0,248, + 136,64,32,64,136,248,5,7,7,6,0,0,248,168,32,32, + 32,32,112,7,7,7,8,0,0,238,68,40,56,16,16,56, + 4,7,7,5,0,254,112,128,128,128,96,16,96,8,7,7, + 9,0,0,60,102,66,66,102,165,231,6,7,7,7,0,0, + 120,72,0,48,0,132,252,9,7,14,9,0,0,221,128,73, + 0,73,0,62,0,8,0,8,0,28,0,5,7,7,6,0, + 0,248,136,16,32,64,136,248,2,9,9,3,0,254,192,128, + 128,128,128,128,128,128,192,5,5,5,7,1,0,32,0,0, + 0,136,2,9,9,3,1,254,192,64,64,64,64,64,64,64, + 192,5,7,7,7,1,0,32,32,32,32,32,32,248,5,1, + 1,5,0,254,248,6,1,1,5,0,9,252,6,5,5,7, + 0,0,104,168,144,148,104,4,10,10,5,0,254,96,144,144, + 160,144,144,208,160,128,128,5,7,7,6,0,254,200,80,80, + 32,80,80,152,4,8,8,5,0,0,96,144,64,96,144,144, + 144,96,4,5,5,5,0,0,96,144,192,144,96,5,9,9, + 6,0,254,32,32,112,168,168,168,112,32,32,5,7,7,6, + 0,254,200,168,40,48,16,32,32,5,7,7,6,0,254,80, + 232,72,72,72,8,8,3,5,5,4,0,0,192,64,64,64, + 96,5,7,7,6,0,254,48,168,168,168,112,32,32,5,5, + 5,6,0,0,72,216,96,80,72,6,8,8,6,0,0,192, + 160,32,32,80,80,148,136,5,7,7,6,0,254,144,144,144, + 144,232,128,192,5,5,5,6,0,0,136,136,80,80,32,4, + 5,5,5,0,0,96,144,144,144,96,5,5,5,6,0,0, + 248,80,80,88,208,4,7,7,5,0,0,96,144,144,240,144, + 144,96,4,8,8,5,0,253,96,144,144,144,224,128,128,128, + 5,5,5,6,0,0,120,144,144,144,96,4,5,5,5,0, + 0,240,64,64,80,96,5,5,5,6,0,0,80,200,72,72, + 48,7,6,6,8,0,0,254,68,130,146,146,108,7,5,5, + 8,0,0,68,130,146,146,108,4,10,10,5,0,254,128,176, + 64,112,128,128,128,96,16,112,7,7,7,7,0,254,146,84, + 84,84,56,16,16,4,10,10,5,0,254,128,176,96,128,128, + 128,128,96,16,112,3,9,9,5,1,254,32,64,64,64,128, + 64,64,64,32,1,9,9,2,0,254,128,128,128,128,128,128, + 128,128,128,3,9,9,5,1,254,128,64,64,64,32,64,64, + 64,128,5,2,2,6,0,2,104,176,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=15 x= 7 y=11 dx=15 dy= 0 ascent=12 len=24 + Font Bounding box w=16 h=15 x=-1 y=-3 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb10[3433] U8G_SECTION(".progmem.u8g_font_symb10") = { + 0,16,15,255,253,10,2,6,4,121,32,255,253,12,253,10, + 253,0,0,0,4,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,9,10,20,9,0,0,128,128,65, + 0,65,0,62,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,10,10,7,0,0,20,20,20,126,40,40,252,80,80, + 80,6,10,10,8,1,0,252,4,4,4,252,4,4,4,4, + 252,9,10,20,12,1,0,121,128,151,0,146,0,148,0,108, + 0,27,0,20,128,36,128,68,128,195,0,9,10,20,11,1, + 0,48,0,72,0,72,0,112,0,39,0,114,0,202,0,132, + 0,206,128,123,0,5,7,7,6,0,0,224,16,8,120,8, + 16,224,3,13,13,5,1,253,32,64,64,128,128,128,128,128, + 128,128,64,64,32,3,13,13,5,1,253,128,64,64,32,32, + 32,32,32,32,32,64,64,128,5,6,6,7,1,2,32,168, + 112,112,168,32,7,7,7,8,0,0,16,16,16,254,16,16, + 16,2,4,4,3,0,254,64,64,64,128,7,1,1,8,0, + 3,254,1,2,2,3,1,0,128,128,4,10,10,4,0,0, + 16,16,32,32,32,64,64,64,128,128,6,10,10,7,0,0, + 120,204,132,132,132,132,132,132,204,120,5,10,10,7,1,0, + 32,224,32,32,32,32,32,32,32,248,6,10,10,7,0,0, + 112,216,136,8,24,16,32,64,196,252,6,10,10,7,0,0, + 120,204,132,12,56,12,4,4,204,120,6,10,10,7,0,0, + 8,24,24,40,104,72,136,252,8,8,5,10,10,7,1,0, + 120,64,128,224,48,24,8,8,144,224,6,10,10,7,0,0, + 28,48,64,64,248,140,132,132,204,120,6,10,10,7,0,0, + 252,132,8,8,16,16,32,32,64,64,5,10,10,7,1,0, + 112,216,136,216,112,136,136,136,216,112,6,10,10,7,0,0, + 120,204,132,132,204,120,24,16,96,192,1,7,7,4,2,0, + 128,128,0,0,0,128,128,2,9,9,4,1,254,64,64,0, + 0,0,64,64,64,128,7,7,7,8,1,0,2,12,48,192, + 48,12,2,7,3,3,8,0,2,254,0,254,7,7,7,8, + 0,0,128,96,24,6,24,96,128,5,10,10,6,1,0,112, + 136,136,8,16,32,32,0,32,32,7,7,7,8,0,0,114, + 156,0,254,0,0,254,9,10,20,11,1,0,8,0,28,0, + 20,0,20,0,34,0,34,0,62,0,99,0,65,0,227,128, + 7,10,10,9,1,0,252,70,66,70,124,70,66,66,70,252, + 9,10,20,11,1,0,227,128,65,0,34,0,20,0,8,0, + 20,0,34,0,34,0,65,0,227,128,7,10,10,9,1,0, + 16,16,40,40,40,68,68,68,130,254,7,10,10,9,1,0, + 254,66,64,68,124,68,64,66,66,254,9,10,20,11,1,0, + 28,0,8,0,127,0,201,128,136,128,136,128,201,128,127,0, + 8,0,28,0,7,10,10,9,1,0,254,66,64,64,64,64, + 64,64,64,224,9,10,20,11,1,0,227,128,65,0,65,0, + 65,0,127,0,65,0,65,0,65,0,65,0,227,128,3,10, + 10,5,1,0,224,64,64,64,64,64,64,64,64,224,8,10, + 10,9,0,0,12,10,10,102,163,34,34,34,54,28,8,10, + 10,10,1,0,238,68,72,80,112,80,72,68,70,231,9,10, + 20,10,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 34,0,65,0,65,0,227,128,11,10,20,13,1,0,224,224, + 96,192,81,64,81,64,91,64,74,64,74,64,78,64,68,64, + 228,224,9,10,20,11,1,0,227,128,97,0,81,0,89,0, + 73,0,77,0,69,0,69,0,67,0,227,0,8,10,10,10, + 1,0,60,102,66,129,129,129,129,66,102,60,9,10,20,11, + 1,0,255,128,65,0,65,0,65,0,65,0,65,0,65,0, + 65,0,65,0,227,128,8,10,10,10,1,0,60,102,66,165, + 189,165,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,10,10,9,1,0,254,194,96,48, + 24,16,32,64,193,255,7,10,10,9,1,0,254,146,146,16, + 16,16,16,16,16,56,9,10,20,9,0,0,227,128,65,0, + 34,0,34,0,20,0,8,0,8,0,8,0,8,0,28,0, + 6,10,10,7,1,253,56,192,128,128,128,96,56,4,36,56, + 10,10,20,11,0,0,12,0,51,0,33,0,64,128,64,128, + 64,128,33,0,51,0,146,64,243,192,9,10,20,9,0,0, + 127,0,65,0,0,0,34,0,62,0,34,0,0,0,0,0, + 128,128,255,128,11,10,20,11,0,0,206,96,100,192,36,128, + 36,128,31,0,4,0,4,0,4,0,4,0,14,0,7,10, + 10,9,1,0,254,134,4,8,16,16,32,64,194,254,3,13, + 13,5,1,253,224,128,128,128,128,128,128,128,128,128,128,128, + 224,8,7,7,10,1,0,24,24,0,0,0,195,195,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,9,10,20,10,0,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,255,128,7,1,1,7,0, + 253,254,8,1,1,7,7,11,255,8,7,7,9,1,0,118, + 212,136,136,136,213,102,6,14,14,8,1,253,120,204,132,140, + 152,140,132,132,132,204,184,128,128,128,8,10,10,8,0,253, + 195,166,36,60,24,56,40,100,69,195,5,11,11,7,1,0, + 112,152,128,64,112,152,136,136,136,216,112,5,7,7,6,1, + 0,120,200,128,96,128,200,112,7,13,13,9,1,253,16,16, + 16,56,84,146,146,146,84,56,16,16,16,6,10,10,6,0, + 253,196,164,36,40,40,24,24,16,48,48,7,10,10,8,0, + 253,108,178,34,34,34,34,34,2,2,2,5,7,7,5,0, + 0,96,160,32,32,32,40,48,7,10,10,9,1,253,24,84, + 210,146,146,84,56,16,16,16,7,7,7,8,0,0,70,202, + 80,112,88,76,70,8,10,10,8,0,0,96,80,16,16,40, + 40,72,68,133,131,8,9,9,8,0,254,68,68,68,68,68, + 77,123,64,192,7,7,7,8,0,0,198,66,34,34,20,20, + 8,6,7,7,8,1,0,120,204,132,132,132,204,120,8,7, + 7,8,0,0,126,164,36,36,36,37,102,5,10,10,7,1, + 0,112,216,136,136,248,136,136,136,216,112,6,10,10,8,1, + 253,120,204,132,132,132,204,184,128,128,128,7,7,7,8,1, + 0,126,200,132,132,132,204,120,5,7,7,6,0,0,120,160, + 32,32,32,40,48,7,7,7,8,0,0,100,162,34,34,34, + 38,28,10,8,16,11,0,0,127,192,160,128,68,64,68,64, + 68,64,68,64,100,192,59,128,9,7,14,11,1,0,99,0, + 136,128,136,128,136,128,136,128,201,128,119,0,6,15,15,7, + 1,253,32,64,56,32,64,120,32,64,128,128,192,120,4,36, + 56,9,10,20,9,0,253,136,128,73,0,73,0,73,0,107, + 0,62,0,28,0,8,0,8,0,8,0,6,14,14,7,1, + 253,32,68,60,16,32,64,64,128,128,192,120,4,36,56,5, + 13,13,7,1,253,24,32,32,32,32,64,128,64,32,32,32, + 32,24,1,13,13,3,1,253,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,13,13,7,1,253,192,32,32,32,32, + 16,8,16,32,32,32,32,192,6,2,2,8,1,3,100,152, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,8,10,10,9,0,0,198,105,43,16,16,16,16,16, + 16,56,4,3,3,4,0,7,48,96,128,7,9,9,8,0, + 0,2,12,48,192,48,12,2,0,254,5,10,10,4,255,0, + 8,8,16,16,32,32,64,64,128,128,9,4,8,10,0,2, + 119,0,152,128,140,128,119,0,7,13,13,7,0,253,6,10, + 8,8,60,16,16,16,32,32,32,160,192,9,7,14,11,1, + 0,28,0,28,0,28,0,235,128,255,128,235,128,8,0,7, + 7,7,11,2,0,16,56,124,254,124,56,16,7,7,7,11, + 2,0,108,254,254,254,124,56,16,9,7,14,11,1,0,8, + 0,28,0,62,0,127,0,255,128,107,0,8,0,13,7,14, + 15,1,0,16,64,32,32,64,16,255,248,64,16,32,32,16, + 64,14,7,14,14,0,0,16,0,32,0,64,0,255,252,64, + 0,32,0,16,0,7,15,15,9,1,253,16,56,84,146,16, + 16,16,16,16,16,16,16,16,16,16,14,7,14,14,0,0, + 0,32,0,16,0,8,255,252,0,8,0,16,0,32,7,15, + 15,9,1,253,16,16,16,16,16,16,16,16,16,16,16,146, + 84,56,16,4,4,4,6,1,6,96,144,144,96,7,9,9, + 8,0,0,16,16,16,254,16,16,16,0,254,7,3,3,6, + 0,7,54,108,144,7,9,9,8,0,0,128,96,24,6,24, + 96,128,0,254,7,7,7,8,0,0,130,68,40,16,40,68, + 130,8,4,4,10,0,2,119,136,136,119,6,11,11,7,0, + 0,112,136,4,4,4,116,204,132,132,200,112,5,5,5,7, + 1,1,112,248,248,248,112,7,7,7,8,0,0,16,16,0, + 254,0,16,16,7,7,7,8,0,0,4,8,254,16,254,32, + 64,7,5,5,8,0,1,254,0,254,0,254,7,5,5,8, + 0,2,114,156,0,114,156,11,2,4,15,2,0,132,32,132, + 32,1,15,15,9,4,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,15,1,2,15,0,3,255,254,8,9, + 9,10,0,0,1,1,1,1,1,1,65,255,64,8,10,10, + 12,2,0,136,206,102,36,116,156,140,70,99,225,8,12,12, + 10,1,255,63,97,66,70,36,6,3,1,97,241,26,12,10, + 11,22,12,1,0,115,0,157,128,137,128,139,0,206,0,106, + 0,41,0,9,0,9,0,105,0,176,192,9,12,24,12,1, + 253,16,0,35,0,69,128,72,128,144,128,212,128,105,0,107, + 0,182,0,144,0,144,0,96,0,9,9,18,11,1,0,28, + 0,99,0,99,0,148,128,136,128,148,128,99,0,99,0,28, + 0,9,9,18,11,1,0,28,0,99,0,73,0,136,128,190, + 128,136,128,73,0,99,0,28,0,11,11,22,12,0,0,31, + 32,96,192,64,192,129,32,130,32,132,32,136,32,144,32,96, + 64,96,192,159,0,10,7,14,10,0,0,30,0,97,128,64, + 128,128,64,128,64,128,64,128,64,10,7,14,10,0,0,128, + 64,128,64,128,64,128,64,64,128,97,128,30,0,9,7,14, + 10,0,0,254,0,1,0,0,128,0,128,0,128,1,0,254, + 0,9,9,18,10,1,254,254,0,1,0,0,128,0,128,0, + 128,1,0,254,0,0,0,255,128,9,9,18,10,0,255,1, + 0,63,128,66,0,130,0,132,0,132,0,72,0,63,128,16, + 0,9,7,14,10,1,0,63,128,64,0,128,0,128,0,128, + 0,64,0,63,128,9,9,18,10,0,254,63,128,64,0,128, + 0,128,0,128,0,64,0,63,128,0,0,255,128,7,7,7, + 10,1,0,62,64,128,254,128,64,62,7,9,9,10,0,255, + 4,62,72,144,254,144,96,62,64,11,10,20,11,0,0,0, + 64,0,128,1,0,2,0,4,0,8,0,16,0,32,0,64, + 0,255,224,9,11,22,10,0,0,255,128,128,128,65,0,65, + 0,34,0,34,0,34,0,20,0,20,0,8,0,8,0,10, + 10,20,12,1,0,30,0,33,0,124,128,146,64,146,64,156, + 64,146,64,121,128,33,0,30,0,10,10,20,12,1,0,30, + 0,33,0,78,128,146,64,144,64,144,64,146,64,76,128,33, + 0,30,0,11,6,12,11,0,4,250,128,170,128,38,192,37, + 64,37,64,118,224,10,12,24,12,1,255,255,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,64, + 128,225,192,8,12,12,8,0,0,1,1,1,2,2,98,164, + 36,20,20,8,8,1,2,2,4,1,3,128,128,9,5,10, + 10,0,0,255,128,0,128,0,128,0,128,0,128,8,7,7, + 9,0,0,24,24,36,36,66,66,129,8,7,7,9,0,0, + 129,66,66,36,36,24,24,13,7,14,15,1,0,16,64,32, + 32,127,240,192,24,127,240,32,32,16,64,13,7,14,14,0, + 0,16,0,32,0,127,248,192,0,127,248,32,0,16,0,7, + 12,12,9,1,0,16,56,108,170,40,40,40,40,40,40,40, + 40,13,7,14,14,1,0,0,64,0,32,255,240,0,24,255, + 240,0,32,0,64,7,12,12,9,1,0,40,40,40,40,40, + 40,40,40,170,108,56,16,7,11,11,7,0,0,16,40,40, + 68,68,130,68,68,40,40,16,4,15,15,5,0,253,16,32, + 32,64,64,64,128,128,128,64,64,64,32,32,16,10,10,20, + 12,1,0,30,0,33,0,92,128,146,64,146,64,156,64,146, + 64,82,128,33,0,30,0,10,10,20,12,1,0,30,0,33, + 0,76,128,146,64,144,64,144,64,146,64,76,128,33,0,30, + 0,10,6,12,11,0,4,250,128,34,128,38,192,37,64,37, + 64,36,64,9,12,24,10,0,255,255,0,129,0,64,0,32, + 0,16,0,8,0,8,0,16,0,32,0,64,0,128,128,255, + 128,4,15,15,6,1,253,16,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,1,15,15,6,1,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,128,128,128,128,128,128,128,128,128,128,128,64,64,32,16, + 4,15,15,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,1,15,15,6,1,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,4,15,15,6,1,253, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,240,4, + 15,15,7,3,253,48,64,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,15,15,7,1,253,32,32,32,32,32,32, + 64,128,64,32,32,32,32,32,32,4,15,15,7,3,253,128, + 128,128,128,128,128,128,128,128,128,128,128,128,64,48,1,15, + 15,7,3,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,255,4,15,15,5,1,253,128,64,64,32,32,32, + 16,16,16,32,32,32,64,64,128,5,13,13,4,0,255,24, + 40,32,32,32,32,32,32,32,32,32,160,192,5,15,15,10, + 5,253,56,88,64,128,128,128,128,128,128,128,128,128,128,128, + 128,1,15,15,10,5,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,5,15,15,10,1,253,8,8,8,8, + 8,8,8,8,8,8,8,8,16,208,224,4,15,15,6,1, + 253,128,64,32,32,16,16,16,16,16,16,16,16,16,16,16, + 1,15,15,6,4,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,4,15,15,6,1,253,16,16,16,16,16, + 16,16,16,16,16,16,32,32,64,128,4,15,15,6,1,253, + 240,16,16,16,16,16,16,16,16,16,16,16,16,16,16,1, + 15,15,6,4,253,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,4,15,15,6,1,253,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,240,4,15,15,7,0,253,192, + 32,16,16,16,16,16,16,16,16,16,16,16,16,16,3,15, + 15,7,3,253,128,128,128,128,128,128,64,32,64,128,128,128, + 128,128,128,4,15,15,7,0,253,16,16,16,16,16,16,16, + 16,16,16,16,16,16,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=11 h=15 x= 7 y=11 dx=13 dy= 0 ascent=12 len=20 + Font Bounding box w=16 h=15 x=-1 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb10r[1633] U8G_SECTION(".progmem.u8g_font_symb10r") = { + 0,16,15,255,253,10,2,6,4,121,32,127,253,12,253,10, + 253,0,0,0,4,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,9,10,20,9,0,0,128,128,65, + 0,65,0,62,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,10,10,7,0,0,20,20,20,126,40,40,252,80,80, + 80,6,10,10,8,1,0,252,4,4,4,252,4,4,4,4, + 252,9,10,20,12,1,0,121,128,151,0,146,0,148,0,108, + 0,27,0,20,128,36,128,68,128,195,0,9,10,20,11,1, + 0,48,0,72,0,72,0,112,0,39,0,114,0,202,0,132, + 0,206,128,123,0,5,7,7,6,0,0,224,16,8,120,8, + 16,224,3,13,13,5,1,253,32,64,64,128,128,128,128,128, + 128,128,64,64,32,3,13,13,5,1,253,128,64,64,32,32, + 32,32,32,32,32,64,64,128,5,6,6,7,1,2,32,168, + 112,112,168,32,7,7,7,8,0,0,16,16,16,254,16,16, + 16,2,4,4,3,0,254,64,64,64,128,7,1,1,8,0, + 3,254,1,2,2,3,1,0,128,128,4,10,10,4,0,0, + 16,16,32,32,32,64,64,64,128,128,6,10,10,7,0,0, + 120,204,132,132,132,132,132,132,204,120,5,10,10,7,1,0, + 32,224,32,32,32,32,32,32,32,248,6,10,10,7,0,0, + 112,216,136,8,24,16,32,64,196,252,6,10,10,7,0,0, + 120,204,132,12,56,12,4,4,204,120,6,10,10,7,0,0, + 8,24,24,40,104,72,136,252,8,8,5,10,10,7,1,0, + 120,64,128,224,48,24,8,8,144,224,6,10,10,7,0,0, + 28,48,64,64,248,140,132,132,204,120,6,10,10,7,0,0, + 252,132,8,8,16,16,32,32,64,64,5,10,10,7,1,0, + 112,216,136,216,112,136,136,136,216,112,6,10,10,7,0,0, + 120,204,132,132,204,120,24,16,96,192,1,7,7,4,2,0, + 128,128,0,0,0,128,128,2,9,9,4,1,254,64,64,0, + 0,0,64,64,64,128,7,7,7,8,1,0,2,12,48,192, + 48,12,2,7,3,3,8,0,2,254,0,254,7,7,7,8, + 0,0,128,96,24,6,24,96,128,5,10,10,6,1,0,112, + 136,136,8,16,32,32,0,32,32,7,7,7,8,0,0,114, + 156,0,254,0,0,254,9,10,20,11,1,0,8,0,28,0, + 20,0,20,0,34,0,34,0,62,0,99,0,65,0,227,128, + 7,10,10,9,1,0,252,70,66,70,124,70,66,66,70,252, + 9,10,20,11,1,0,227,128,65,0,34,0,20,0,8,0, + 20,0,34,0,34,0,65,0,227,128,7,10,10,9,1,0, + 16,16,40,40,40,68,68,68,130,254,7,10,10,9,1,0, + 254,66,64,68,124,68,64,66,66,254,9,10,20,11,1,0, + 28,0,8,0,127,0,201,128,136,128,136,128,201,128,127,0, + 8,0,28,0,7,10,10,9,1,0,254,66,64,64,64,64, + 64,64,64,224,9,10,20,11,1,0,227,128,65,0,65,0, + 65,0,127,0,65,0,65,0,65,0,65,0,227,128,3,10, + 10,5,1,0,224,64,64,64,64,64,64,64,64,224,8,10, + 10,9,0,0,12,10,10,102,163,34,34,34,54,28,8,10, + 10,10,1,0,238,68,72,80,112,80,72,68,70,231,9,10, + 20,10,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 34,0,65,0,65,0,227,128,11,10,20,13,1,0,224,224, + 96,192,81,64,81,64,91,64,74,64,74,64,78,64,68,64, + 228,224,9,10,20,11,1,0,227,128,97,0,81,0,89,0, + 73,0,77,0,69,0,69,0,67,0,227,0,8,10,10,10, + 1,0,60,102,66,129,129,129,129,66,102,60,9,10,20,11, + 1,0,255,128,65,0,65,0,65,0,65,0,65,0,65,0, + 65,0,65,0,227,128,8,10,10,10,1,0,60,102,66,165, + 189,165,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,10,10,9,1,0,254,194,96,48, + 24,16,32,64,193,255,7,10,10,9,1,0,254,146,146,16, + 16,16,16,16,16,56,9,10,20,9,0,0,227,128,65,0, + 34,0,34,0,20,0,8,0,8,0,8,0,8,0,28,0, + 6,10,10,7,1,253,56,192,128,128,128,96,56,4,36,56, + 10,10,20,11,0,0,12,0,51,0,33,0,64,128,64,128, + 64,128,33,0,51,0,146,64,243,192,9,10,20,9,0,0, + 127,0,65,0,0,0,34,0,62,0,34,0,0,0,0,0, + 128,128,255,128,11,10,20,11,0,0,206,96,100,192,36,128, + 36,128,31,0,4,0,4,0,4,0,4,0,14,0,7,10, + 10,9,1,0,254,134,4,8,16,16,32,64,194,254,3,13, + 13,5,1,253,224,128,128,128,128,128,128,128,128,128,128,128, + 224,8,7,7,10,1,0,24,24,0,0,0,195,195,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,9,10,20,10,0,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,255,128,7,1,1,7,0, + 253,254,8,1,1,7,7,11,255,8,7,7,9,1,0,118, + 212,136,136,136,213,102,6,14,14,8,1,253,120,204,132,140, + 152,140,132,132,132,204,184,128,128,128,8,10,10,8,0,253, + 195,166,36,60,24,56,40,100,69,195,5,11,11,7,1,0, + 112,152,128,64,112,152,136,136,136,216,112,5,7,7,6,1, + 0,120,200,128,96,128,200,112,7,13,13,9,1,253,16,16, + 16,56,84,146,146,146,84,56,16,16,16,6,10,10,6,0, + 253,196,164,36,40,40,24,24,16,48,48,7,10,10,8,0, + 253,108,178,34,34,34,34,34,2,2,2,5,7,7,5,0, + 0,96,160,32,32,32,40,48,7,10,10,9,1,253,24,84, + 210,146,146,84,56,16,16,16,7,7,7,8,0,0,70,202, + 80,112,88,76,70,8,10,10,8,0,0,96,80,16,16,40, + 40,72,68,133,131,8,9,9,8,0,254,68,68,68,68,68, + 77,123,64,192,7,7,7,8,0,0,198,66,34,34,20,20, + 8,6,7,7,8,1,0,120,204,132,132,132,204,120,8,7, + 7,8,0,0,126,164,36,36,36,37,102,5,10,10,7,1, + 0,112,216,136,136,248,136,136,136,216,112,6,10,10,8,1, + 253,120,204,132,132,132,204,184,128,128,128,7,7,7,8,1, + 0,126,200,132,132,132,204,120,5,7,7,6,0,0,120,160, + 32,32,32,40,48,7,7,7,8,0,0,100,162,34,34,34, + 38,28,10,8,16,11,0,0,127,192,160,128,68,64,68,64, + 68,64,68,64,100,192,59,128,9,7,14,11,1,0,99,0, + 136,128,136,128,136,128,136,128,201,128,119,0,6,15,15,7, + 1,253,32,64,56,32,64,120,32,64,128,128,192,120,4,36, + 56,9,10,20,9,0,253,136,128,73,0,73,0,73,0,107, + 0,62,0,28,0,8,0,8,0,8,0,6,14,14,7,1, + 253,32,68,60,16,32,64,64,128,128,192,120,4,36,56,5, + 13,13,7,1,253,24,32,32,32,32,64,128,64,32,32,32, + 32,24,1,13,13,3,1,253,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,13,13,7,1,253,192,32,32,32,32, + 16,8,16,32,32,32,32,192,6,2,2,8,1,3,100,152, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--17-120-100-100-P-95-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=16 h=17 x= 7 y=12 dx=17 dy= 0 ascent=13 len=30 + Font Bounding box w=20 h=17 x=-3 y=-4 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb12[4136] U8G_SECTION(".progmem.u8g_font_symb12") = { + 0,20,17,253,252,11,2,70,5,85,32,255,252,13,252,12, + 252,0,0,0,4,0,1,3,11,11,5,1,0,64,224,224, + 224,64,64,64,0,64,224,64,11,12,24,11,0,0,128,32, + 128,32,64,64,64,64,63,128,32,128,17,0,17,0,10,0, + 10,0,4,0,4,0,8,11,11,8,0,0,18,18,18,127, + 36,36,36,254,72,72,72,7,12,12,9,0,0,254,2,2, + 2,2,126,2,2,2,2,2,254,11,12,24,13,1,255,48, + 64,111,128,201,0,201,0,154,0,148,192,101,160,11,32,11, + 32,18,96,34,64,33,128,12,11,22,13,0,0,14,0,25, + 0,17,0,26,0,12,240,56,64,76,128,198,128,131,0,197, + 144,120,224,5,8,8,7,1,0,224,16,24,120,24,24,16, + 224,4,14,14,5,0,254,16,32,64,64,128,128,128,128,128, + 128,64,64,32,16,4,14,14,5,0,254,128,64,32,32,16, + 16,16,16,16,16,32,32,64,128,5,5,5,8,1,3,32, + 168,112,168,32,9,9,18,9,0,0,8,0,8,0,8,0, + 8,0,255,128,8,0,8,0,8,0,8,0,3,5,5,4, + 1,254,64,224,96,64,128,9,1,2,9,0,4,255,128,3, + 3,3,4,1,0,64,224,64,5,11,11,5,255,0,8,8, + 16,16,32,32,32,64,64,128,128,7,12,12,8,0,0,56, + 108,68,198,130,130,130,130,198,68,108,56,5,12,12,8,1, + 0,32,96,160,32,32,32,32,32,32,32,32,248,7,12,12, + 8,0,0,56,76,134,2,2,4,4,8,16,34,126,252,6, + 12,12,8,1,0,56,76,132,4,8,56,12,4,4,4,200, + 112,7,12,12,8,0,0,4,4,12,20,20,36,68,68,254, + 4,4,4,7,12,12,8,0,0,62,60,64,64,240,248,12, + 4,4,4,200,240,6,12,12,8,1,0,12,48,96,64,248, + 204,132,132,132,132,76,56,6,12,12,8,1,0,252,252,136, + 8,8,16,16,16,16,32,32,32,6,12,12,8,1,0,48, + 72,132,196,104,48,88,140,132,132,72,48,6,12,12,8,1, + 0,112,200,132,132,132,132,204,124,8,24,48,192,3,8,8, + 4,1,0,64,224,64,0,0,64,224,64,3,10,10,4,1, + 254,64,224,64,0,0,64,224,96,64,128,8,9,9,9,0, + 0,1,6,24,96,128,96,24,6,1,9,4,8,9,0,2, + 255,128,0,0,0,0,255,128,8,9,9,9,0,0,128,96, + 24,6,1,6,24,96,128,6,11,11,7,0,0,120,156,140, + 12,24,16,32,0,32,112,32,8,8,8,9,0,0,113,142, + 0,0,255,0,0,255,11,11,22,12,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,63,128,65,192,64,192, + 225,224,9,11,22,11,1,0,254,0,99,0,97,128,97,128, + 99,0,126,0,99,0,97,128,97,128,99,0,254,0,10,11, + 22,12,0,0,241,192,96,128,49,0,26,0,26,0,12,0, + 22,0,19,0,35,0,65,128,227,192,10,11,22,10,0,0, + 4,0,4,0,14,0,14,0,19,0,19,0,35,0,33,128, + 65,128,64,192,255,192,8,11,11,10,1,0,255,97,96,96, + 98,126,98,96,96,97,255,12,11,22,12,0,0,15,0,6, + 0,63,192,102,96,198,48,198,48,198,48,102,96,63,192,6, + 0,15,0,9,11,22,10,1,0,255,128,97,128,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,96,0,240,0,11, + 11,22,12,0,0,241,224,96,192,96,192,96,192,96,192,127, + 192,96,192,96,192,96,192,96,192,241,224,4,11,11,6,1, + 0,240,96,96,96,96,96,96,96,96,96,240,9,12,24,10, + 0,0,12,0,18,0,17,0,9,0,69,0,163,0,33,128, + 33,0,33,0,33,0,34,0,28,0,10,11,22,12,1,0, + 243,192,97,0,98,0,100,0,104,0,120,0,108,0,102,0, + 99,0,97,128,243,192,11,11,22,11,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,33,128,64,192,64,192, + 225,224,13,11,22,14,1,0,224,56,96,112,112,112,112,176, + 88,176,89,48,77,48,78,48,70,48,68,48,224,120,10,11, + 22,11,1,0,225,192,112,128,112,128,88,128,92,128,78,128, + 70,128,67,128,67,128,65,128,224,128,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,11,11,22,12,1,0,255,224,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,11,22,12,0,0,31,0,113,192,96,192,192,96, + 209,96,223,96,209,96,192,96,96,192,113,192,31,0,8,11, + 11,9,1,0,252,102,99,99,102,124,96,96,96,96,240,9, + 11,22,10,0,0,255,128,96,128,48,0,24,0,12,0,12, + 0,8,0,16,128,32,128,127,128,255,128,10,11,22,10,0, + 0,255,192,140,64,140,64,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,30,0,10,11,22,11,1,0,241,192,96, + 128,49,0,49,0,26,0,12,0,12,0,12,0,12,0,12, + 0,30,0,7,12,12,8,0,252,60,76,128,128,128,128,124, + 62,2,2,60,56,12,12,24,12,0,0,31,128,112,224,96, + 96,192,48,192,48,192,48,192,48,96,96,48,192,137,16,249, + 240,249,240,9,11,22,11,0,0,255,128,255,128,128,128,0, + 0,34,0,62,0,34,0,0,0,128,128,255,128,255,128,12, + 11,22,13,0,0,207,48,102,96,102,96,102,96,102,96,63, + 192,6,0,6,0,6,0,6,0,15,0,8,11,11,10,1, + 0,255,131,134,12,12,24,48,48,97,193,255,3,14,14,6, + 1,254,224,128,128,128,128,128,128,128,128,128,128,128,128,224, + 9,8,16,14,2,0,8,0,28,0,8,0,0,0,0,0, + 65,0,227,128,65,0,3,14,14,5,0,254,224,32,32,32, + 32,32,32,32,32,32,32,32,32,224,9,11,22,11,1,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,8,1,1,8,0,253,255,10,1,2, + 8,7,12,255,192,10,9,18,11,0,0,57,128,101,128,195, + 0,195,0,195,0,194,0,198,64,101,64,56,128,8,17,17, + 9,0,252,60,70,66,66,70,92,70,67,67,65,65,99,94, + 64,64,64,192,8,12,12,9,0,253,99,162,150,20,28,24, + 24,56,40,105,69,198,7,12,12,8,0,0,120,140,64,48, + 24,44,70,194,130,194,68,56,7,9,9,7,0,0,56,68, + 192,192,120,192,192,66,60,7,14,14,9,1,253,16,16,56, + 84,214,146,146,146,214,84,56,16,16,16,8,13,13,7,255, + 252,97,161,146,18,20,20,8,8,16,16,48,48,48,9,12, + 24,10,0,253,110,0,177,0,33,0,33,0,33,0,33,0, + 33,0,33,0,33,0,1,0,1,0,1,128,6,9,9,5, + 255,0,32,96,160,32,32,32,32,52,24,9,12,24,10,0, + 253,39,0,73,128,201,128,136,128,136,128,136,128,201,128,73, + 0,62,0,8,0,8,0,8,0,8,9,9,9,0,0,70, + 206,80,80,120,76,76,70,79,9,13,26,9,0,0,96,0, + 208,0,144,0,16,0,8,0,24,0,24,0,56,0,40,0, + 36,0,100,128,68,128,195,0,8,13,13,9,1,252,132,132, + 132,132,132,132,132,205,182,128,128,128,128,9,9,18,8,255, + 0,225,128,33,128,49,0,51,0,18,0,26,0,12,0,12, + 0,8,0,7,9,9,9,1,0,56,68,198,130,130,130,198, + 68,56,8,9,9,9,0,0,127,255,164,36,36,36,37,103, + 102,7,12,12,9,1,0,56,108,68,198,130,254,130,130,198, + 68,108,56,7,13,13,9,1,252,56,76,134,134,130,130,198, + 196,184,128,128,128,128,9,9,18,10,1,0,31,128,116,0, + 194,0,195,0,129,0,193,0,65,0,99,0,30,0,7,9, + 9,7,0,0,60,124,144,16,16,16,18,30,12,8,9,9, + 9,1,0,68,226,161,33,33,33,33,50,28,10,10,20,11, + 0,0,127,192,155,0,32,128,100,192,68,64,68,64,68,64, + 68,64,100,192,59,128,9,9,18,11,1,0,54,0,65,0, + 201,128,136,128,136,128,136,128,136,128,201,128,119,0,7,17, + 17,8,0,252,64,88,48,64,92,60,64,128,128,128,128,124, + 62,2,2,60,56,11,13,26,11,0,252,196,96,100,192,36, + 128,36,128,36,128,36,128,36,128,53,128,31,0,4,0,4, + 0,4,0,4,0,7,17,17,8,1,252,32,76,60,32,64, + 64,128,128,128,128,128,124,62,2,2,60,56,5,14,14,8, + 1,254,24,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,14,14,3,1,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,5,14,14,8,1,254,192,32,32,32,32,32, + 24,32,32,32,32,32,32,192,8,2,2,9,0,3,113,142, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,10,11,22,10,255,0,225,128,18,192,10,192,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,30,0,3,4, + 4,4,1,8,96,96,192,128,8,11,11,9,0,0,1,6, + 24,96,128,96,24,6,1,0,255,8,11,11,3,253,0,1, + 2,2,4,8,16,16,32,64,64,128,11,5,10,12,0,2, + 113,192,138,32,132,32,138,32,113,192,7,15,15,8,0,253, + 6,10,8,8,8,126,16,16,16,16,32,32,32,160,192,9, + 10,20,12,1,255,28,0,62,0,62,0,28,0,107,0,255, + 128,255,128,107,0,8,0,28,0,7,9,9,12,2,0,16, + 56,124,124,254,124,124,56,16,8,9,9,12,2,0,102,255, + 255,255,126,60,60,24,24,9,10,20,12,2,255,8,0,28, + 0,28,0,62,0,127,0,127,0,255,128,107,0,8,0,28, + 0,15,9,18,17,0,0,8,32,16,16,32,8,64,4,255, + 254,64,4,32,8,16,16,8,32,16,9,18,16,0,0,8, + 0,16,0,32,0,64,0,255,255,64,0,32,0,16,0,8, + 0,9,15,30,10,0,254,8,0,28,0,42,0,73,0,136, + 128,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,15,9,18,16,0,0,0,32,0,16,0, + 8,0,4,255,254,0,4,0,8,0,16,0,32,9,15,30, + 10,0,254,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,136,128,73,0,42,0,28,0,8, + 0,5,5,5,6,0,6,112,136,136,136,112,9,11,22,9, + 0,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,0,0,255,128,6,4,4,7,1,8,108,108, + 216,144,8,11,11,9,0,0,128,96,24,6,1,6,24,96, + 128,0,255,9,9,18,9,0,0,128,128,65,0,34,0,20, + 0,8,0,20,0,34,0,65,0,128,128,10,5,10,11,0, + 2,113,192,138,0,132,0,138,0,113,192,7,14,14,8,0, + 255,120,196,4,2,2,2,58,102,194,194,130,196,68,56,6, + 6,6,8,1,2,120,252,252,252,252,120,8,7,7,9,0, + 1,24,24,0,255,0,24,24,9,10,20,9,0,255,2,0, + 2,0,4,0,255,128,8,0,8,0,255,128,16,0,32,0, + 32,0,8,7,7,9,0,1,255,0,0,255,0,0,255,8, + 5,5,9,0,2,113,142,0,113,142,13,3,6,16,1,0, + 66,16,231,56,66,16,1,17,17,10,4,252,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,16,1,2, + 16,0,4,255,255,9,11,22,10,0,255,0,128,0,128,0, + 128,0,128,0,128,0,128,32,128,96,128,255,128,96,0,32, + 0,9,11,22,13,2,0,68,0,231,0,103,0,50,0,26, + 0,60,0,108,0,102,0,99,0,51,128,113,0,9,14,28, + 11,0,255,30,0,63,128,67,128,65,0,66,0,34,0,19, + 0,1,0,1,128,0,128,0,128,112,128,191,0,28,0,12, + 13,26,13,0,0,113,128,138,192,140,96,196,64,100,128,37, + 0,7,128,5,128,12,192,12,192,8,208,104,96,48,64,12, + 13,26,16,2,252,12,0,17,224,34,48,36,16,72,48,114, + 32,102,96,100,192,115,0,144,0,144,0,144,0,96,0,11, + 11,22,12,1,0,14,0,49,128,64,64,81,64,138,32,132, + 32,138,32,81,64,64,64,49,128,14,0,11,11,22,12,1, + 0,14,0,49,128,68,64,68,64,132,32,191,160,132,32,68, + 64,68,64,49,128,14,0,12,12,24,13,1,0,15,16,48, + 224,64,96,64,160,129,16,130,16,132,16,136,16,80,32,96, + 32,112,192,159,0,11,9,18,12,1,0,14,0,49,128,64, + 64,64,64,128,32,128,32,128,32,128,32,128,32,11,9,18, + 12,1,0,128,32,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,10,8,16,11,0,0,255,0,0,128,0, + 64,0,64,0,64,0,64,0,128,255,0,10,10,20,11,0, + 253,255,0,0,128,0,64,0,64,0,64,0,64,0,128,255, + 0,0,0,255,192,11,10,20,11,0,255,0,128,63,224,65, + 0,129,0,130,0,130,0,132,0,68,0,63,224,8,0,10, + 8,16,11,0,0,63,192,64,0,128,0,128,0,128,0,128, + 0,64,0,63,192,10,10,20,11,0,254,63,192,64,0,128, + 0,128,0,128,0,128,0,64,0,63,192,0,0,255,192,7, + 7,7,11,0,0,62,64,128,254,128,64,62,7,9,9,11, + 0,255,4,62,72,136,254,144,80,62,32,11,11,22,12,1, + 0,0,32,0,64,0,128,1,0,2,0,4,0,8,0,16, + 0,32,0,64,0,255,192,10,11,22,11,1,1,255,192,192, + 128,96,128,97,0,49,0,50,0,50,0,28,0,28,0,8, + 0,8,0,11,11,22,13,1,0,14,0,49,128,94,64,73, + 64,137,32,142,32,138,32,73,64,93,192,49,128,14,0,11, + 11,22,13,1,0,14,0,49,128,70,64,73,64,145,32,144, + 32,144,32,73,64,70,64,49,128,14,0,13,6,12,14,0, + 5,255,24,171,16,34,176,34,176,34,80,119,88,12,15,30, + 13,1,254,255,240,96,96,96,96,96,96,96,96,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,240, + 240,7,16,16,9,1,253,2,2,2,2,2,4,68,196,36, + 36,20,20,20,8,8,8,2,2,2,4,1,3,192,192,11, + 5,10,12,0,0,255,224,0,32,0,32,0,32,0,32,9, + 8,16,10,0,0,8,0,8,0,20,0,34,0,34,0,65, + 0,128,128,128,128,9,8,16,10,0,0,128,128,128,128,65, + 0,34,0,34,0,20,0,8,0,8,0,16,9,18,17,0, + 0,8,16,16,8,63,252,64,2,128,1,64,2,63,252,16, + 8,8,16,15,9,18,16,0,0,8,0,16,0,63,254,64, + 0,128,0,64,0,63,254,16,0,8,0,9,15,30,10,0, + 254,8,0,20,0,34,0,99,0,162,128,34,0,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,15, + 9,18,16,0,0,0,32,0,16,255,248,0,4,0,2,0, + 4,255,248,0,16,0,32,9,15,30,10,0,254,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,34, + 0,162,128,99,0,34,0,20,0,8,0,7,12,12,8,0, + 0,16,40,40,68,68,130,130,68,68,40,40,16,4,15,15, + 5,0,254,16,16,32,32,64,64,128,128,128,64,64,32,32, + 16,16,11,11,22,13,1,0,14,0,49,128,94,64,81,64, + 145,32,158,32,145,32,81,64,81,64,49,128,14,0,11,11, + 22,13,1,0,14,0,49,128,70,64,73,64,144,32,144,32, + 144,32,73,64,70,64,49,128,14,0,11,6,12,13,0,5, + 252,32,38,96,38,96,37,160,37,160,36,32,11,15,30,11, + 0,254,255,192,112,64,56,64,24,0,12,0,14,0,7,0, + 3,0,2,0,4,0,8,0,16,32,32,64,127,192,255,128, + 6,17,17,6,1,252,4,8,16,32,32,64,64,64,64,128, + 128,128,128,128,128,128,128,1,17,17,6,1,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,6,17, + 17,6,1,252,128,128,128,128,128,128,128,128,64,64,64,64, + 32,32,16,8,4,5,17,17,6,0,252,248,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,1,17,17,6, + 0,252,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,17,17,6,0,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,248,4,17,17,8,3,252, + 48,64,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,4,17,17,8,0,252,16,16,16,16,16,16,16,32,192, + 32,16,16,16,16,16,16,16,4,17,17,8,3,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,64,48,1, + 17,17,8,3,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,255,4,15,15,5,0,254,128,128,64, + 64,32,32,16,16,16,32,32,64,64,128,128,5,17,17,5, + 0,252,24,40,32,32,32,32,32,32,32,32,32,32,32,32, + 32,160,192,6,17,17,11,5,252,24,44,72,64,128,128,128, + 128,128,128,128,128,128,128,128,128,128,1,17,17,11,5,252, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,11,0,252,4,4,4,4,4,4,4,4,4, + 4,4,4,4,8,72,208,96,6,17,17,7,1,252,128,64, + 32,16,16,8,8,8,8,4,4,4,4,4,4,4,4,1, + 17,17,6,5,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,6,17,17,6,0,252,4,4,4,4, + 4,4,4,4,8,8,8,8,16,16,32,64,128,5,17,17, + 6,1,252,248,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,1,17,17,6,5,252,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,5,17,17,6,1, + 252,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,248,4,17,17,8,0,252,192,32,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,4,17,17,8,3,252,128, + 128,128,128,128,128,128,64,48,64,128,128,128,128,128,128,128, + 4,17,17,8,0,252,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--17-120-100-100-P-95-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=13 h=17 x= 7 y=12 dx=14 dy= 0 ascent=13 len=26 + Font Bounding box w=20 h=17 x=-3 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb12r[1985] U8G_SECTION(".progmem.u8g_font_symb12r") = { + 0,20,17,253,252,11,2,70,5,85,32,127,252,13,252,12, + 252,0,0,0,4,0,1,3,11,11,5,1,0,64,224,224, + 224,64,64,64,0,64,224,64,11,12,24,11,0,0,128,32, + 128,32,64,64,64,64,63,128,32,128,17,0,17,0,10,0, + 10,0,4,0,4,0,8,11,11,8,0,0,18,18,18,127, + 36,36,36,254,72,72,72,7,12,12,9,0,0,254,2,2, + 2,2,126,2,2,2,2,2,254,11,12,24,13,1,255,48, + 64,111,128,201,0,201,0,154,0,148,192,101,160,11,32,11, + 32,18,96,34,64,33,128,12,11,22,13,0,0,14,0,25, + 0,17,0,26,0,12,240,56,64,76,128,198,128,131,0,197, + 144,120,224,5,8,8,7,1,0,224,16,24,120,24,24,16, + 224,4,14,14,5,0,254,16,32,64,64,128,128,128,128,128, + 128,64,64,32,16,4,14,14,5,0,254,128,64,32,32,16, + 16,16,16,16,16,32,32,64,128,5,5,5,8,1,3,32, + 168,112,168,32,9,9,18,9,0,0,8,0,8,0,8,0, + 8,0,255,128,8,0,8,0,8,0,8,0,3,5,5,4, + 1,254,64,224,96,64,128,9,1,2,9,0,4,255,128,3, + 3,3,4,1,0,64,224,64,5,11,11,5,255,0,8,8, + 16,16,32,32,32,64,64,128,128,7,12,12,8,0,0,56, + 108,68,198,130,130,130,130,198,68,108,56,5,12,12,8,1, + 0,32,96,160,32,32,32,32,32,32,32,32,248,7,12,12, + 8,0,0,56,76,134,2,2,4,4,8,16,34,126,252,6, + 12,12,8,1,0,56,76,132,4,8,56,12,4,4,4,200, + 112,7,12,12,8,0,0,4,4,12,20,20,36,68,68,254, + 4,4,4,7,12,12,8,0,0,62,60,64,64,240,248,12, + 4,4,4,200,240,6,12,12,8,1,0,12,48,96,64,248, + 204,132,132,132,132,76,56,6,12,12,8,1,0,252,252,136, + 8,8,16,16,16,16,32,32,32,6,12,12,8,1,0,48, + 72,132,196,104,48,88,140,132,132,72,48,6,12,12,8,1, + 0,112,200,132,132,132,132,204,124,8,24,48,192,3,8,8, + 4,1,0,64,224,64,0,0,64,224,64,3,10,10,4,1, + 254,64,224,64,0,0,64,224,96,64,128,8,9,9,9,0, + 0,1,6,24,96,128,96,24,6,1,9,4,8,9,0,2, + 255,128,0,0,0,0,255,128,8,9,9,9,0,0,128,96, + 24,6,1,6,24,96,128,6,11,11,7,0,0,120,156,140, + 12,24,16,32,0,32,112,32,8,8,8,9,0,0,113,142, + 0,0,255,0,0,255,11,11,22,12,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,63,128,65,192,64,192, + 225,224,9,11,22,11,1,0,254,0,99,0,97,128,97,128, + 99,0,126,0,99,0,97,128,97,128,99,0,254,0,10,11, + 22,12,0,0,241,192,96,128,49,0,26,0,26,0,12,0, + 22,0,19,0,35,0,65,128,227,192,10,11,22,10,0,0, + 4,0,4,0,14,0,14,0,19,0,19,0,35,0,33,128, + 65,128,64,192,255,192,8,11,11,10,1,0,255,97,96,96, + 98,126,98,96,96,97,255,12,11,22,12,0,0,15,0,6, + 0,63,192,102,96,198,48,198,48,198,48,102,96,63,192,6, + 0,15,0,9,11,22,10,1,0,255,128,97,128,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,96,0,240,0,11, + 11,22,12,0,0,241,224,96,192,96,192,96,192,96,192,127, + 192,96,192,96,192,96,192,96,192,241,224,4,11,11,6,1, + 0,240,96,96,96,96,96,96,96,96,96,240,9,12,24,10, + 0,0,12,0,18,0,17,0,9,0,69,0,163,0,33,128, + 33,0,33,0,33,0,34,0,28,0,10,11,22,12,1,0, + 243,192,97,0,98,0,100,0,104,0,120,0,108,0,102,0, + 99,0,97,128,243,192,11,11,22,11,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,33,128,64,192,64,192, + 225,224,13,11,22,14,1,0,224,56,96,112,112,112,112,176, + 88,176,89,48,77,48,78,48,70,48,68,48,224,120,10,11, + 22,11,1,0,225,192,112,128,112,128,88,128,92,128,78,128, + 70,128,67,128,67,128,65,128,224,128,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,11,11,22,12,1,0,255,224,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,11,22,12,0,0,31,0,113,192,96,192,192,96, + 209,96,223,96,209,96,192,96,96,192,113,192,31,0,8,11, + 11,9,1,0,252,102,99,99,102,124,96,96,96,96,240,9, + 11,22,10,0,0,255,128,96,128,48,0,24,0,12,0,12, + 0,8,0,16,128,32,128,127,128,255,128,10,11,22,10,0, + 0,255,192,140,64,140,64,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,30,0,10,11,22,11,1,0,241,192,96, + 128,49,0,49,0,26,0,12,0,12,0,12,0,12,0,12, + 0,30,0,7,12,12,8,0,252,60,76,128,128,128,128,124, + 62,2,2,60,56,12,12,24,12,0,0,31,128,112,224,96, + 96,192,48,192,48,192,48,192,48,96,96,48,192,137,16,249, + 240,249,240,9,11,22,11,0,0,255,128,255,128,128,128,0, + 0,34,0,62,0,34,0,0,0,128,128,255,128,255,128,12, + 11,22,13,0,0,207,48,102,96,102,96,102,96,102,96,63, + 192,6,0,6,0,6,0,6,0,15,0,8,11,11,10,1, + 0,255,131,134,12,12,24,48,48,97,193,255,3,14,14,6, + 1,254,224,128,128,128,128,128,128,128,128,128,128,128,128,224, + 9,8,16,14,2,0,8,0,28,0,8,0,0,0,0,0, + 65,0,227,128,65,0,3,14,14,5,0,254,224,32,32,32, + 32,32,32,32,32,32,32,32,32,224,9,11,22,11,1,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,8,1,1,8,0,253,255,10,1,2, + 8,7,12,255,192,10,9,18,11,0,0,57,128,101,128,195, + 0,195,0,195,0,194,0,198,64,101,64,56,128,8,17,17, + 9,0,252,60,70,66,66,70,92,70,67,67,65,65,99,94, + 64,64,64,192,8,12,12,9,0,253,99,162,150,20,28,24, + 24,56,40,105,69,198,7,12,12,8,0,0,120,140,64,48, + 24,44,70,194,130,194,68,56,7,9,9,7,0,0,56,68, + 192,192,120,192,192,66,60,7,14,14,9,1,253,16,16,56, + 84,214,146,146,146,214,84,56,16,16,16,8,13,13,7,255, + 252,97,161,146,18,20,20,8,8,16,16,48,48,48,9,12, + 24,10,0,253,110,0,177,0,33,0,33,0,33,0,33,0, + 33,0,33,0,33,0,1,0,1,0,1,128,6,9,9,5, + 255,0,32,96,160,32,32,32,32,52,24,9,12,24,10,0, + 253,39,0,73,128,201,128,136,128,136,128,136,128,201,128,73, + 0,62,0,8,0,8,0,8,0,8,9,9,9,0,0,70, + 206,80,80,120,76,76,70,79,9,13,26,9,0,0,96,0, + 208,0,144,0,16,0,8,0,24,0,24,0,56,0,40,0, + 36,0,100,128,68,128,195,0,8,13,13,9,1,252,132,132, + 132,132,132,132,132,205,182,128,128,128,128,9,9,18,8,255, + 0,225,128,33,128,49,0,51,0,18,0,26,0,12,0,12, + 0,8,0,7,9,9,9,1,0,56,68,198,130,130,130,198, + 68,56,8,9,9,9,0,0,127,255,164,36,36,36,37,103, + 102,7,12,12,9,1,0,56,108,68,198,130,254,130,130,198, + 68,108,56,7,13,13,9,1,252,56,76,134,134,130,130,198, + 196,184,128,128,128,128,9,9,18,10,1,0,31,128,116,0, + 194,0,195,0,129,0,193,0,65,0,99,0,30,0,7,9, + 9,7,0,0,60,124,144,16,16,16,18,30,12,8,9,9, + 9,1,0,68,226,161,33,33,33,33,50,28,10,10,20,11, + 0,0,127,192,155,0,32,128,100,192,68,64,68,64,68,64, + 68,64,100,192,59,128,9,9,18,11,1,0,54,0,65,0, + 201,128,136,128,136,128,136,128,136,128,201,128,119,0,7,17, + 17,8,0,252,64,88,48,64,92,60,64,128,128,128,128,124, + 62,2,2,60,56,11,13,26,11,0,252,196,96,100,192,36, + 128,36,128,36,128,36,128,36,128,53,128,31,0,4,0,4, + 0,4,0,4,0,7,17,17,8,1,252,32,76,60,32,64, + 64,128,128,128,128,128,124,62,2,2,60,56,5,14,14,8, + 1,254,24,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,14,14,3,1,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,5,14,14,8,1,254,192,32,32,32,32,32, + 24,32,32,32,32,32,32,192,8,2,2,9,0,3,113,142, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=19 h=19 x= 9 y=13 dx=19 dy= 0 ascent=14 len=34 + Font Bounding box w=20 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb14[4665] U8G_SECTION(".progmem.u8g_font_symb14") = { + 0,20,19,255,251,13,2,127,6,16,32,255,252,14,251,13, + 252,0,0,0,5,0,1,2,13,13,6,2,0,192,192,192, + 192,192,192,192,64,64,0,0,192,192,13,13,26,13,0,0, + 192,24,192,24,96,48,96,48,63,224,48,96,24,192,24,192, + 8,128,13,128,5,0,7,0,2,0,10,13,26,9,255,0, + 9,0,9,0,9,0,9,0,127,192,18,0,18,0,18,0, + 255,128,36,0,36,0,36,0,36,0,8,13,13,10,1,0, + 255,3,3,3,3,3,127,3,3,3,3,3,255,13,13,26, + 15,1,0,56,96,103,224,196,192,197,128,233,128,115,0,6, + 0,6,112,12,200,25,136,25,136,49,208,48,224,12,13,26, + 13,1,0,28,0,54,0,34,0,38,0,60,0,57,224,124, + 192,238,128,199,128,195,0,195,144,103,240,60,224,6,9,9, + 8,1,0,240,56,28,12,124,12,28,56,240,4,17,17,6, + 1,252,16,48,96,96,192,192,192,192,192,192,192,192,192,96, + 96,48,16,4,17,17,6,1,252,128,192,96,96,48,48,48, + 48,48,48,48,48,48,96,96,192,128,7,7,7,9,1,3, + 16,214,124,56,124,214,16,8,8,8,10,1,1,24,24,24, + 255,255,24,24,24,3,5,5,5,1,253,96,96,32,96,192, + 7,2,2,9,1,4,254,254,2,2,2,4,1,0,192,192, + 5,13,13,5,0,0,24,24,24,48,48,48,96,96,96,96, + 192,192,192,8,13,13,9,0,0,60,102,102,195,195,195,195, + 195,195,195,102,102,60,6,13,13,9,1,0,48,240,176,48, + 48,48,48,48,48,48,48,120,252,7,13,13,9,1,0,60, + 126,206,134,6,6,12,28,24,48,98,254,254,7,13,13,9, + 1,0,124,206,134,6,12,56,60,14,6,6,6,204,248,8, + 13,13,9,0,0,6,14,14,30,54,54,102,198,198,255,6, + 6,6,7,13,13,9,1,0,126,124,192,192,240,60,12,14, + 6,6,12,220,240,8,13,13,9,0,0,14,56,48,96,96, + 252,198,195,195,195,195,102,60,8,13,13,9,0,0,127,255, + 134,6,12,12,12,24,24,24,48,48,48,8,13,13,9,0, + 0,60,102,102,102,116,60,126,102,195,195,195,102,60,8,13, + 13,9,0,0,60,110,199,195,195,195,227,127,58,6,12,56, + 224,2,9,9,5,2,0,192,192,0,0,0,0,0,192,192, + 3,12,12,5,1,253,96,96,0,0,0,0,0,96,96,32, + 96,192,9,9,18,10,0,0,3,128,15,0,60,0,240,0, + 192,0,240,0,60,0,15,0,3,128,8,5,5,10,1,2, + 255,255,0,255,255,9,9,18,10,0,0,224,0,120,0,30, + 0,7,128,1,128,7,128,30,0,120,0,224,0,6,13,13, + 8,1,0,120,220,204,204,12,12,24,48,48,48,0,48,48, + 8,9,9,10,1,0,115,255,206,0,255,255,0,255,255,12, + 13,26,14,1,0,4,0,14,0,14,0,11,0,27,0,19, + 0,17,128,49,128,63,192,32,192,96,192,96,224,241,240,9, + 13,26,11,1,0,252,0,102,0,99,0,99,0,99,0,102, + 0,126,0,99,0,97,128,97,128,97,128,99,128,255,0,12, + 13,26,14,1,0,240,112,112,96,56,192,24,192,29,128,15, + 0,6,0,15,0,27,128,49,128,49,192,96,224,224,240,11, + 13,26,11,0,0,4,0,6,0,14,0,11,0,19,0,19, + 0,17,128,33,128,33,192,64,192,64,192,128,96,255,224,9, + 13,26,11,1,0,255,128,97,128,96,128,96,0,96,0,97, + 0,127,0,97,0,96,0,96,0,96,128,97,128,255,128,12, + 13,26,14,1,0,15,0,6,0,31,128,102,96,198,48,198, + 48,198,48,198,48,198,48,102,96,31,128,6,0,15,0,10, + 13,26,11,0,0,255,192,112,192,48,64,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,0,11, + 13,26,13,1,0,241,224,96,192,96,192,96,192,96,192,96, + 192,127,192,96,192,96,192,96,192,96,192,96,192,241,224,4, + 13,13,6,1,0,240,96,96,96,96,96,96,96,96,96,96, + 96,240,11,13,26,12,1,0,6,0,11,0,9,128,5,128, + 99,128,241,128,177,192,49,160,49,128,49,128,49,128,59,0, + 30,0,11,13,26,14,1,0,243,192,97,128,99,0,102,0, + 108,0,120,0,120,0,108,0,102,0,99,0,99,128,97,192, + 241,224,12,13,26,13,0,0,6,0,6,0,15,0,11,0, + 11,0,25,128,17,128,17,128,48,192,32,192,32,96,96,96, + 240,240,14,13,26,16,1,0,224,28,112,56,112,56,88,120, + 88,88,88,216,76,152,76,152,77,152,71,24,71,24,67,24, + 226,60,11,13,26,13,1,0,224,224,112,64,112,64,88,64, + 76,64,76,64,70,64,67,64,67,192,65,192,64,192,64,192, + 224,64,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,192,96,192,96,192,96,192,96,224,224,96,192,49,128, + 14,0,11,13,26,13,1,0,255,224,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,209,96,223,96,209,96,192,96,224,224,96,192,49,128, + 14,0,8,13,13,10,1,0,254,103,99,99,99,103,126,96, + 96,96,96,96,240,10,13,26,11,0,0,255,128,193,128,96, + 128,48,0,24,0,12,0,12,0,8,0,16,0,32,64,64, + 192,255,128,255,128,10,13,26,12,1,0,255,192,204,192,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,30,0,12,13,26,13,0,0,248,240,112,96,48, + 192,24,192,29,128,15,0,15,0,6,0,6,0,6,0,6, + 0,6,0,15,0,6,13,13,8,1,252,60,124,192,128,128, + 128,192,120,60,4,4,60,56,13,13,26,14,0,0,7,0, + 24,192,48,96,112,112,96,48,96,48,96,48,96,48,48,96, + 56,224,136,136,248,248,248,248,10,13,26,12,1,0,127,128, + 127,128,64,128,0,0,33,0,63,0,63,0,33,0,0,0, + 128,64,128,64,255,192,255,192,14,13,26,15,0,0,199,140, + 99,24,99,24,99,24,99,24,51,48,31,224,3,0,3,0, + 3,0,3,0,3,0,7,128,9,13,26,11,1,0,255,128, + 195,128,131,0,7,0,6,0,14,0,28,0,24,0,56,0, + 112,0,96,128,225,128,255,128,4,17,17,6,1,252,240,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,240,10, + 9,18,14,2,0,12,0,12,0,0,0,0,0,0,0,0, + 0,0,0,192,192,192,192,4,17,17,6,1,252,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,10,13, + 26,12,1,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,9,2, + 4,9,0,252,255,128,255,128,10,1,2,9,9,13,255,192, + 11,9,18,12,1,0,60,192,101,128,195,0,195,0,195,0, + 195,0,195,0,101,32,56,192,8,18,18,10,1,252,60,70, + 198,198,198,204,198,195,195,195,195,195,230,220,192,192,192,192, + 10,13,26,10,0,252,96,192,241,192,145,128,19,0,23,0, + 14,0,12,0,28,0,26,0,50,0,98,64,227,192,193,128, + 7,14,14,9,1,0,56,76,64,96,48,56,108,198,198,198, + 198,198,108,56,6,9,9,8,1,0,120,236,204,192,112,192, + 192,228,120,9,16,32,11,1,252,8,0,8,0,8,0,62, + 0,107,0,201,128,201,128,201,128,201,128,201,128,107,0,62, + 0,8,0,8,0,8,0,8,0,8,13,13,8,0,252,195, + 227,163,38,38,22,20,28,12,24,24,24,24,9,13,26,11, + 1,252,103,0,233,128,177,128,49,128,49,128,49,128,49,128, + 49,128,49,128,1,128,1,128,1,128,1,128,5,9,9,6, + 1,0,96,224,96,96,96,96,96,104,112,9,13,26,11,1, + 252,102,0,207,0,201,128,201,128,201,128,201,128,73,0,107, + 0,62,0,8,0,8,0,8,0,8,0,9,9,18,10,0, + 0,99,128,229,128,104,0,112,0,120,0,108,0,102,0,99, + 0,97,128,10,14,28,10,0,0,48,0,120,0,72,0,8, + 0,8,0,8,0,24,0,28,0,52,0,52,0,102,0,98, + 64,195,192,193,128,9,13,26,11,2,252,66,0,198,0,198, + 0,198,0,198,0,198,0,198,128,251,128,123,0,64,0,192, + 0,192,0,192,0,8,9,9,10,1,0,195,195,97,98,50, + 52,28,24,8,8,9,9,10,1,0,60,102,195,195,195,195, + 195,102,60,9,9,18,10,0,0,127,128,255,128,146,0,18, + 0,18,0,18,0,50,128,115,128,99,0,8,13,13,10,1, + 0,60,102,195,195,195,195,255,195,195,195,195,102,60,8,13, + 13,10,1,252,60,70,195,195,195,195,195,230,220,192,192,192, + 192,10,9,18,11,1,0,31,192,127,192,102,0,195,0,195, + 0,195,0,195,0,102,0,60,0,7,9,9,8,0,0,126, + 254,144,16,16,16,18,30,28,9,9,18,11,1,0,99,0, + 241,128,177,128,49,128,49,128,49,128,49,128,59,0,30,0, + 11,11,22,12,0,0,63,224,127,224,153,128,48,192,32,64, + 102,96,102,96,102,96,102,96,54,192,57,192,10,9,18,12, + 1,0,51,0,97,128,64,128,204,192,204,192,204,192,204,192, + 109,128,115,128,7,19,19,9,1,251,96,142,252,32,64,64, + 124,120,192,128,128,128,192,252,126,2,2,30,28,13,13,26, + 13,0,252,226,56,114,112,50,96,50,96,50,96,50,96,26, + 192,26,192,15,128,2,0,2,0,2,0,2,0,7,19,19, + 9,1,251,96,134,158,120,96,64,128,128,128,128,128,128,192, + 252,126,2,2,30,28,7,17,17,9,1,252,14,24,48,48, + 48,48,48,96,192,96,48,48,48,48,48,24,14,2,17,17, + 4,1,252,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,7,17,17,9,1,252,224,48,24,24,24,24, + 24,12,6,12,24,24,24,24,24,48,224,8,3,3,10,1, + 4,115,255,206,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,11,13,26,12,0,0,225,192,115,32, + 58,96,28,96,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,30,0,4,5,5,5,1,9,48,112,96,192, + 128,9,12,24,10,0,0,3,128,15,0,60,0,240,0,192, + 0,240,0,60,0,15,0,3,128,0,0,255,128,255,128,8, + 13,13,5,255,0,3,6,6,12,12,24,24,48,48,96,96, + 192,192,12,5,10,13,0,3,121,224,207,48,134,16,207,48, + 121,224,9,17,34,9,0,252,3,128,5,128,12,0,12,0, + 12,0,127,0,24,0,24,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,208,0,224,0,10,9,18,14,2,0, + 12,0,30,0,30,0,30,0,109,128,255,192,255,192,109,128, + 12,0,9,9,18,13,2,0,8,0,28,0,62,0,127,0, + 255,128,127,0,62,0,28,0,8,0,9,9,18,13,2,0, + 99,0,247,128,255,128,255,128,127,0,127,0,62,0,28,0, + 8,0,10,9,18,14,2,0,12,0,30,0,63,0,127,128, + 255,192,255,192,109,128,12,0,12,0,17,8,24,19,1,1, + 24,12,0,48,6,0,96,3,0,255,255,128,255,255,128,96, + 3,0,48,6,0,24,12,0,18,8,24,18,0,1,24,0, + 0,48,0,0,96,0,0,255,255,192,255,255,192,96,0,0, + 48,0,0,24,0,0,8,19,19,10,1,251,24,60,126,219, + 153,24,24,24,24,24,24,24,24,24,24,24,24,24,24,18, + 8,24,18,0,1,0,6,0,0,3,0,0,1,128,255,255, + 192,255,255,192,0,1,128,0,3,0,0,6,0,8,19,19, + 10,1,251,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,153,219,126,60,24,5,6,6,7,1,7,112,248,216,216, + 248,112,8,11,11,10,1,0,24,24,24,255,255,24,24,24, + 0,255,255,8,5,5,8,0,9,51,119,102,204,136,9,12, + 24,10,0,0,224,0,120,0,30,0,7,128,1,128,7,128, + 30,0,120,0,224,0,0,0,255,128,255,128,10,9,18,10, + 0,0,225,192,115,128,51,0,30,0,12,0,30,0,51,0, + 115,128,225,192,11,5,10,12,0,3,121,224,207,0,134,0, + 207,0,121,224,7,14,14,9,1,0,120,204,134,6,6,6, + 62,102,198,198,198,196,236,120,5,6,6,9,2,2,112,248, + 248,248,248,112,8,8,8,10,1,1,24,24,0,255,255,0, + 24,24,8,9,9,10,1,0,12,12,255,255,24,255,255,48, + 48,8,8,8,10,1,1,255,255,0,255,255,0,255,255,8, + 7,7,10,1,2,115,255,206,0,115,255,206,14,2,4,18, + 2,0,195,12,195,12,2,19,19,10,4,251,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,19, + 2,6,19,0,4,255,255,224,255,255,224,9,12,24,12,1, + 0,1,128,1,128,1,128,1,128,1,128,1,128,33,128,97, + 128,255,128,255,128,96,0,32,0,11,13,26,13,1,0,194, + 0,227,192,113,224,56,224,57,128,125,0,207,0,199,0,227, + 0,115,128,49,192,112,192,240,64,10,15,30,13,1,255,31, + 192,63,192,96,128,65,0,66,0,34,0,19,0,3,128,1, + 192,0,192,0,192,112,192,248,128,31,0,14,0,13,14,28, + 15,1,0,121,192,254,224,142,112,134,48,198,96,118,128,54, + 64,38,96,6,96,6,96,6,96,6,96,108,120,184,48,12, + 15,30,14,1,252,12,0,24,0,49,224,103,48,204,48,216, + 48,214,48,246,96,100,224,119,192,179,128,152,0,152,0,216, + 0,112,0,12,13,26,14,1,0,31,128,57,192,96,96,217, + 176,221,176,143,16,134,16,143,16,219,176,217,176,96,96,57, + 192,31,128,12,13,26,14,1,0,31,128,57,192,102,96,198, + 48,198,48,191,208,191,208,134,16,198,48,198,48,96,96,57, + 192,31,128,12,13,26,14,1,0,31,176,57,240,96,96,192, + 240,193,176,131,16,134,16,140,16,216,48,240,48,96,96,249, + 192,223,128,12,9,18,14,1,0,31,128,57,192,96,96,224, + 112,192,48,192,48,192,48,192,48,192,48,12,9,18,14,1, + 0,192,48,192,48,192,48,192,48,192,48,224,112,96,96,57, + 192,31,128,12,9,18,13,1,0,255,128,255,224,0,96,0, + 48,0,48,0,48,0,96,255,224,255,128,12,12,24,13,0, + 253,255,128,255,224,0,96,0,48,0,48,0,48,0,96,255, + 224,255,128,0,0,255,240,255,240,12,13,26,13,0,254,0, + 96,0,192,31,240,127,240,97,128,195,0,195,0,198,0,102, + 0,127,240,31,240,24,0,48,0,12,9,18,13,0,0,31, + 240,127,240,96,0,192,0,192,0,192,0,96,0,127,240,31, + 240,12,12,24,13,0,253,31,240,127,240,96,0,192,0,192, + 0,192,0,96,0,127,240,31,240,0,0,255,240,255,240,9, + 9,18,12,1,0,31,128,127,128,224,0,192,0,255,128,192, + 0,224,0,127,128,31,128,10,11,22,12,1,255,0,128,31, + 192,127,192,226,0,196,0,255,128,200,0,240,0,127,192,63, + 192,64,0,13,13,26,14,0,0,0,24,0,48,0,96,0, + 192,1,128,3,0,6,0,12,0,24,0,48,0,96,0,192, + 0,255,248,11,13,26,13,1,0,255,224,224,32,96,96,96, + 64,112,192,48,128,48,128,57,128,25,0,27,0,14,0,14, + 0,4,0,13,13,26,15,1,0,31,192,56,224,96,48,223, + 24,205,152,205,152,205,152,207,24,205,152,220,216,96,48,56, + 224,31,192,13,13,26,15,1,0,31,192,56,224,96,48,199, + 152,205,152,204,152,204,24,204,24,204,152,199,24,96,48,56, + 224,31,192,14,8,16,16,1,5,251,28,171,24,35,24,34, + 168,34,168,34,168,34,72,119,92,14,16,32,15,0,254,255, + 252,120,120,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,120,120,252,252,9, + 14,28,10,0,0,0,128,0,128,0,128,0,128,48,128,113, + 0,217,0,25,0,25,0,13,0,14,0,6,0,6,0,6, + 0,2,2,2,4,1,4,192,192,11,6,12,13,1,0,255, + 224,255,224,0,96,0,96,0,96,0,96,10,9,18,11,0, + 0,12,0,12,0,30,0,51,0,51,0,97,128,97,128,192, + 192,192,192,10,9,18,11,0,0,192,192,192,192,97,128,97, + 128,51,0,51,0,30,0,12,0,12,0,18,9,27,18,0, + 0,8,4,0,24,6,0,63,255,0,127,255,128,224,1,192, + 127,255,128,63,255,0,24,6,0,8,4,0,16,9,18,18, + 1,0,8,0,24,0,63,255,127,255,224,0,127,255,63,255, + 24,0,8,0,9,17,34,11,1,253,8,0,28,0,54,0, + 119,0,247,128,54,0,54,0,54,0,54,0,54,0,54,0, + 54,0,54,0,54,0,54,0,54,0,54,0,16,9,18,18, + 1,0,0,16,0,24,255,252,255,254,0,7,255,254,255,252, + 0,24,0,16,9,17,34,11,1,253,54,0,54,0,54,0, + 54,0,54,0,54,0,54,0,54,0,54,0,54,0,54,0, + 54,0,247,128,119,0,54,0,28,0,8,0,9,14,28,9, + 0,0,28,0,28,0,54,0,54,0,99,0,99,0,193,128, + 193,128,99,0,99,0,54,0,54,0,28,0,28,0,5,17, + 17,6,0,253,24,24,48,48,96,96,192,192,128,192,192,96, + 96,48,48,24,24,13,13,26,15,1,0,31,192,56,224,96, + 48,207,24,205,152,205,152,207,24,205,152,205,152,205,152,96, + 48,56,224,31,192,13,13,26,15,1,0,31,192,56,224,96, + 48,199,24,204,152,204,24,204,24,204,24,204,152,199,24,96, + 48,56,224,31,192,13,8,16,15,1,5,251,24,35,24,35, + 24,34,168,34,168,34,168,34,72,34,72,12,16,32,13,0, + 254,255,224,224,96,112,32,56,0,28,0,14,0,7,0,3, + 0,6,0,12,0,24,0,48,0,96,16,192,48,255,240,255, + 240,6,19,19,7,1,251,4,12,24,24,48,48,96,96,96, + 96,192,192,192,192,192,192,192,192,192,2,19,19,7,1,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,6,19,19,7,1,251,192,192,192,192,192,192,192, + 192,192,224,96,96,96,48,48,24,24,12,4,5,19,19,7, + 1,251,248,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,2,19,19,7,1,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,5,19, + 19,7,1,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,5,19,19,9,4,251,56,96,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 5,19,19,9,1,251,24,24,24,24,24,24,16,48,96,192, + 96,48,16,24,24,24,24,24,24,5,19,19,9,4,251,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 96,56,2,19,19,9,4,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,255,5,17,17,6, + 0,253,192,192,96,96,48,48,24,24,8,24,24,48,48,96, + 96,192,192,6,19,19,6,0,251,28,28,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,224,224,7,19,19,13, + 5,251,28,126,102,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,2,19,19,13,5,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,7,19, + 19,13,0,251,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,204,252,112,6,19,19,7,0,251,128,192,96, + 96,48,48,24,24,24,24,12,12,12,12,12,12,12,12,12, + 2,19,19,7,4,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,6,19,19,7,0,251,12, + 12,12,12,12,12,12,12,12,24,24,24,24,48,48,96,96, + 192,128,5,19,19,7,1,251,248,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,2,19,19,7,4, + 251,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,5,19,19,7,1,251,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,5,19,19, + 9,1,251,224,48,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,5,19,19,9,4,251,192,192,192,192, + 192,192,64,96,48,24,48,96,64,192,192,192,192,192,192,5, + 19,19,9,1,251,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,48,224,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=14 h=19 x= 9 y=13 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=20 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb14r[2261] U8G_SECTION(".progmem.u8g_font_symb14r") = { + 0,20,19,255,251,13,2,127,6,16,32,127,252,14,251,13, + 252,0,0,0,5,0,1,2,13,13,6,2,0,192,192,192, + 192,192,192,192,64,64,0,0,192,192,13,13,26,13,0,0, + 192,24,192,24,96,48,96,48,63,224,48,96,24,192,24,192, + 8,128,13,128,5,0,7,0,2,0,10,13,26,9,255,0, + 9,0,9,0,9,0,9,0,127,192,18,0,18,0,18,0, + 255,128,36,0,36,0,36,0,36,0,8,13,13,10,1,0, + 255,3,3,3,3,3,127,3,3,3,3,3,255,13,13,26, + 15,1,0,56,96,103,224,196,192,197,128,233,128,115,0,6, + 0,6,112,12,200,25,136,25,136,49,208,48,224,12,13,26, + 13,1,0,28,0,54,0,34,0,38,0,60,0,57,224,124, + 192,238,128,199,128,195,0,195,144,103,240,60,224,6,9,9, + 8,1,0,240,56,28,12,124,12,28,56,240,4,17,17,6, + 1,252,16,48,96,96,192,192,192,192,192,192,192,192,192,96, + 96,48,16,4,17,17,6,1,252,128,192,96,96,48,48,48, + 48,48,48,48,48,48,96,96,192,128,7,7,7,9,1,3, + 16,214,124,56,124,214,16,8,8,8,10,1,1,24,24,24, + 255,255,24,24,24,3,5,5,5,1,253,96,96,32,96,192, + 7,2,2,9,1,4,254,254,2,2,2,4,1,0,192,192, + 5,13,13,5,0,0,24,24,24,48,48,48,96,96,96,96, + 192,192,192,8,13,13,9,0,0,60,102,102,195,195,195,195, + 195,195,195,102,102,60,6,13,13,9,1,0,48,240,176,48, + 48,48,48,48,48,48,48,120,252,7,13,13,9,1,0,60, + 126,206,134,6,6,12,28,24,48,98,254,254,7,13,13,9, + 1,0,124,206,134,6,12,56,60,14,6,6,6,204,248,8, + 13,13,9,0,0,6,14,14,30,54,54,102,198,198,255,6, + 6,6,7,13,13,9,1,0,126,124,192,192,240,60,12,14, + 6,6,12,220,240,8,13,13,9,0,0,14,56,48,96,96, + 252,198,195,195,195,195,102,60,8,13,13,9,0,0,127,255, + 134,6,12,12,12,24,24,24,48,48,48,8,13,13,9,0, + 0,60,102,102,102,116,60,126,102,195,195,195,102,60,8,13, + 13,9,0,0,60,110,199,195,195,195,227,127,58,6,12,56, + 224,2,9,9,5,2,0,192,192,0,0,0,0,0,192,192, + 3,12,12,5,1,253,96,96,0,0,0,0,0,96,96,32, + 96,192,9,9,18,10,0,0,3,128,15,0,60,0,240,0, + 192,0,240,0,60,0,15,0,3,128,8,5,5,10,1,2, + 255,255,0,255,255,9,9,18,10,0,0,224,0,120,0,30, + 0,7,128,1,128,7,128,30,0,120,0,224,0,6,13,13, + 8,1,0,120,220,204,204,12,12,24,48,48,48,0,48,48, + 8,9,9,10,1,0,115,255,206,0,255,255,0,255,255,12, + 13,26,14,1,0,4,0,14,0,14,0,11,0,27,0,19, + 0,17,128,49,128,63,192,32,192,96,192,96,224,241,240,9, + 13,26,11,1,0,252,0,102,0,99,0,99,0,99,0,102, + 0,126,0,99,0,97,128,97,128,97,128,99,128,255,0,12, + 13,26,14,1,0,240,112,112,96,56,192,24,192,29,128,15, + 0,6,0,15,0,27,128,49,128,49,192,96,224,224,240,11, + 13,26,11,0,0,4,0,6,0,14,0,11,0,19,0,19, + 0,17,128,33,128,33,192,64,192,64,192,128,96,255,224,9, + 13,26,11,1,0,255,128,97,128,96,128,96,0,96,0,97, + 0,127,0,97,0,96,0,96,0,96,128,97,128,255,128,12, + 13,26,14,1,0,15,0,6,0,31,128,102,96,198,48,198, + 48,198,48,198,48,198,48,102,96,31,128,6,0,15,0,10, + 13,26,11,0,0,255,192,112,192,48,64,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,0,11, + 13,26,13,1,0,241,224,96,192,96,192,96,192,96,192,96, + 192,127,192,96,192,96,192,96,192,96,192,96,192,241,224,4, + 13,13,6,1,0,240,96,96,96,96,96,96,96,96,96,96, + 96,240,11,13,26,12,1,0,6,0,11,0,9,128,5,128, + 99,128,241,128,177,192,49,160,49,128,49,128,49,128,59,0, + 30,0,11,13,26,14,1,0,243,192,97,128,99,0,102,0, + 108,0,120,0,120,0,108,0,102,0,99,0,99,128,97,192, + 241,224,12,13,26,13,0,0,6,0,6,0,15,0,11,0, + 11,0,25,128,17,128,17,128,48,192,32,192,32,96,96,96, + 240,240,14,13,26,16,1,0,224,28,112,56,112,56,88,120, + 88,88,88,216,76,152,76,152,77,152,71,24,71,24,67,24, + 226,60,11,13,26,13,1,0,224,224,112,64,112,64,88,64, + 76,64,76,64,70,64,67,64,67,192,65,192,64,192,64,192, + 224,64,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,192,96,192,96,192,96,192,96,224,224,96,192,49,128, + 14,0,11,13,26,13,1,0,255,224,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,209,96,223,96,209,96,192,96,224,224,96,192,49,128, + 14,0,8,13,13,10,1,0,254,103,99,99,99,103,126,96, + 96,96,96,96,240,10,13,26,11,0,0,255,128,193,128,96, + 128,48,0,24,0,12,0,12,0,8,0,16,0,32,64,64, + 192,255,128,255,128,10,13,26,12,1,0,255,192,204,192,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,30,0,12,13,26,13,0,0,248,240,112,96,48, + 192,24,192,29,128,15,0,15,0,6,0,6,0,6,0,6, + 0,6,0,15,0,6,13,13,8,1,252,60,124,192,128,128, + 128,192,120,60,4,4,60,56,13,13,26,14,0,0,7,0, + 24,192,48,96,112,112,96,48,96,48,96,48,96,48,48,96, + 56,224,136,136,248,248,248,248,10,13,26,12,1,0,127,128, + 127,128,64,128,0,0,33,0,63,0,63,0,33,0,0,0, + 128,64,128,64,255,192,255,192,14,13,26,15,0,0,199,140, + 99,24,99,24,99,24,99,24,51,48,31,224,3,0,3,0, + 3,0,3,0,3,0,7,128,9,13,26,11,1,0,255,128, + 195,128,131,0,7,0,6,0,14,0,28,0,24,0,56,0, + 112,0,96,128,225,128,255,128,4,17,17,6,1,252,240,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,240,10, + 9,18,14,2,0,12,0,12,0,0,0,0,0,0,0,0, + 0,0,0,192,192,192,192,4,17,17,6,1,252,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,10,13, + 26,12,1,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,9,2, + 4,9,0,252,255,128,255,128,10,1,2,9,9,13,255,192, + 11,9,18,12,1,0,60,192,101,128,195,0,195,0,195,0, + 195,0,195,0,101,32,56,192,8,18,18,10,1,252,60,70, + 198,198,198,204,198,195,195,195,195,195,230,220,192,192,192,192, + 10,13,26,10,0,252,96,192,241,192,145,128,19,0,23,0, + 14,0,12,0,28,0,26,0,50,0,98,64,227,192,193,128, + 7,14,14,9,1,0,56,76,64,96,48,56,108,198,198,198, + 198,198,108,56,6,9,9,8,1,0,120,236,204,192,112,192, + 192,228,120,9,16,32,11,1,252,8,0,8,0,8,0,62, + 0,107,0,201,128,201,128,201,128,201,128,201,128,107,0,62, + 0,8,0,8,0,8,0,8,0,8,13,13,8,0,252,195, + 227,163,38,38,22,20,28,12,24,24,24,24,9,13,26,11, + 1,252,103,0,233,128,177,128,49,128,49,128,49,128,49,128, + 49,128,49,128,1,128,1,128,1,128,1,128,5,9,9,6, + 1,0,96,224,96,96,96,96,96,104,112,9,13,26,11,1, + 252,102,0,207,0,201,128,201,128,201,128,201,128,73,0,107, + 0,62,0,8,0,8,0,8,0,8,0,9,9,18,10,0, + 0,99,128,229,128,104,0,112,0,120,0,108,0,102,0,99, + 0,97,128,10,14,28,10,0,0,48,0,120,0,72,0,8, + 0,8,0,8,0,24,0,28,0,52,0,52,0,102,0,98, + 64,195,192,193,128,9,13,26,11,2,252,66,0,198,0,198, + 0,198,0,198,0,198,0,198,128,251,128,123,0,64,0,192, + 0,192,0,192,0,8,9,9,10,1,0,195,195,97,98,50, + 52,28,24,8,8,9,9,10,1,0,60,102,195,195,195,195, + 195,102,60,9,9,18,10,0,0,127,128,255,128,146,0,18, + 0,18,0,18,0,50,128,115,128,99,0,8,13,13,10,1, + 0,60,102,195,195,195,195,255,195,195,195,195,102,60,8,13, + 13,10,1,252,60,70,195,195,195,195,195,230,220,192,192,192, + 192,10,9,18,11,1,0,31,192,127,192,102,0,195,0,195, + 0,195,0,195,0,102,0,60,0,7,9,9,8,0,0,126, + 254,144,16,16,16,18,30,28,9,9,18,11,1,0,99,0, + 241,128,177,128,49,128,49,128,49,128,49,128,59,0,30,0, + 11,11,22,12,0,0,63,224,127,224,153,128,48,192,32,64, + 102,96,102,96,102,96,102,96,54,192,57,192,10,9,18,12, + 1,0,51,0,97,128,64,128,204,192,204,192,204,192,204,192, + 109,128,115,128,7,19,19,9,1,251,96,142,252,32,64,64, + 124,120,192,128,128,128,192,252,126,2,2,30,28,13,13,26, + 13,0,252,226,56,114,112,50,96,50,96,50,96,50,96,26, + 192,26,192,15,128,2,0,2,0,2,0,2,0,7,19,19, + 9,1,251,96,134,158,120,96,64,128,128,128,128,128,128,192, + 252,126,2,2,30,28,7,17,17,9,1,252,14,24,48,48, + 48,48,48,96,192,96,48,48,48,48,48,24,14,2,17,17, + 4,1,252,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,7,17,17,9,1,252,224,48,24,24,24,24, + 24,12,6,12,24,24,24,24,24,48,224,8,3,3,10,1, + 4,115,255,206,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=25 h=24 x=13 y=18 dx=26 dy= 0 ascent=19 len=63 + Font Bounding box w=27 h=24 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb18[6604] U8G_SECTION(".progmem.u8g_font_symb18") = { + 0,27,24,255,251,17,3,215,8,151,32,255,251,19,251,17, + 251,0,0,0,6,0,1,3,17,17,7,2,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,15,17, + 34,17,1,0,192,6,192,6,96,12,96,12,63,248,63,248, + 48,24,24,48,24,48,12,96,12,96,12,96,6,192,6,192, + 3,128,3,128,3,128,11,17,34,13,1,0,8,128,8,128, + 8,128,8,128,8,128,127,224,127,224,17,0,17,0,17,0, + 255,192,255,192,34,0,34,0,34,0,34,0,34,0,11,17, + 34,13,1,0,255,224,255,224,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,0,96,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,18,17,51,20,1,0,31,6,0,57, + 254,0,113,12,0,99,24,0,227,24,0,198,48,0,206,96, + 0,220,96,0,120,199,128,1,142,192,1,156,192,3,56,192, + 6,48,192,6,49,128,12,51,128,24,55,0,24,30,0,15, + 17,34,17,1,0,7,128,12,192,24,64,24,64,24,192,29, + 128,15,62,30,28,62,24,103,48,195,160,193,224,192,192,193, + 224,227,114,126,62,60,28,8,13,13,11,2,0,248,62,14, + 7,3,3,127,3,3,7,14,62,248,6,22,22,8,1,251, + 12,24,48,32,96,96,64,192,192,192,192,192,192,192,192,64, + 96,96,32,48,24,12,6,22,22,8,1,251,192,96,48,16, + 24,24,8,12,12,12,12,12,12,12,12,8,24,24,16,48, + 96,192,8,10,10,12,2,7,24,24,195,231,24,24,231,195, + 24,24,10,10,20,12,1,2,12,0,12,0,12,0,12,0, + 255,192,255,192,12,0,12,0,12,0,12,0,3,6,6,6, + 1,252,96,96,32,96,192,128,11,2,4,13,1,6,255,224, + 255,224,2,2,2,6,2,0,192,192,7,17,17,7,0,0, + 6,6,6,12,12,12,24,24,48,48,48,96,96,96,192,192, + 192,10,17,34,12,1,0,30,0,51,0,97,128,97,128,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,97,128,51,0,30,0,6,17,17,12,3,0,48, + 112,240,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 10,17,34,12,1,0,28,0,127,0,103,0,131,128,129,128, + 1,128,1,128,3,128,3,0,7,0,12,0,12,0,24,0, + 48,0,96,64,255,192,255,128,9,17,34,12,1,0,28,0, + 126,0,71,0,131,0,131,0,6,0,12,0,30,0,7,0, + 3,0,1,128,1,128,1,128,3,0,199,0,254,0,120,0, + 10,17,34,12,1,0,3,0,7,0,7,0,15,0,11,0, + 27,0,19,0,51,0,35,0,99,0,67,0,255,192,255,192, + 3,0,3,0,3,0,3,0,10,17,34,12,1,0,31,192, + 63,128,96,0,96,0,192,0,240,0,252,0,30,0,7,0, + 3,128,1,128,1,128,1,128,1,128,195,0,254,0,124,0, + 10,17,34,12,1,0,3,192,14,0,56,0,112,0,96,0, + 224,0,207,0,243,128,225,128,192,192,192,192,192,192,192,192, + 224,192,97,192,115,128,31,0,10,17,34,12,1,0,127,192, + 255,192,192,192,129,128,1,128,3,0,3,0,3,0,6,0, + 6,0,6,0,12,0,12,0,12,0,24,0,24,0,24,0, + 10,17,34,12,1,0,30,0,51,0,97,128,97,128,97,128, + 51,0,30,0,30,0,55,0,115,128,225,192,192,192,192,192, + 192,192,225,192,115,128,30,0,10,17,34,12,1,0,30,0, + 115,128,97,128,192,192,192,192,192,192,192,192,192,192,97,192, + 115,192,30,192,1,128,3,128,7,0,14,0,60,0,240,0, + 2,11,11,6,2,0,192,192,0,0,0,0,0,0,0,192, + 192,3,15,15,6,1,252,96,96,0,0,0,0,0,0,0, + 96,96,32,96,192,128,12,12,24,13,0,1,0,112,1,224, + 7,128,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,112,10,5,10,12,1,4,255,192,255,192,0,0, + 255,192,255,192,12,12,24,13,0,1,224,0,120,0,30,0, + 7,128,1,224,0,112,0,112,1,224,7,128,30,0,120,0, + 224,0,8,17,17,11,2,0,124,198,131,195,199,6,14,12, + 28,24,24,16,16,0,0,48,48,11,12,24,13,1,1,56, + 32,124,96,199,192,131,128,0,0,0,0,255,224,255,224,0, + 0,0,0,255,224,255,224,17,17,51,18,0,0,0,128,0, + 1,192,0,1,192,0,1,64,0,3,96,0,2,96,0,2, + 48,0,6,48,0,4,48,0,12,24,0,8,24,0,15,252, + 0,24,12,0,16,12,0,48,6,0,48,6,0,248,15,128, + 13,17,34,15,1,0,255,192,48,224,48,112,48,48,48,48, + 48,48,48,48,48,96,63,192,48,112,48,56,48,24,48,24, + 48,24,48,56,48,112,255,192,16,17,34,18,1,0,248,31, + 112,14,56,12,28,24,12,48,14,96,7,192,3,128,3,128, + 7,192,6,96,12,112,24,48,24,24,48,28,112,14,248,31, + 15,17,34,15,0,0,3,0,3,0,3,128,5,128,4,192, + 12,192,8,96,8,96,24,48,16,48,48,24,32,24,32,12, + 96,12,64,6,192,6,255,254,13,17,34,15,1,0,255,240, + 48,48,48,16,48,0,48,0,48,0,48,32,48,32,63,224, + 48,32,48,32,48,0,48,0,48,0,48,8,48,24,255,248, + 16,17,34,19,1,0,7,224,1,128,1,128,15,240,57,156, + 97,134,225,135,193,131,193,131,193,131,225,135,97,134,57,156, + 15,240,1,128,1,128,7,224,13,17,34,15,1,0,255,248, + 48,24,48,8,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 16,17,34,18,1,0,252,63,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,17,17,8,1,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,14, + 17,34,16,1,0,3,192,6,224,4,96,6,96,3,48,113, + 176,248,240,152,60,24,48,24,48,48,48,48,48,48,48,48, + 96,56,96,28,192,15,128,15,17,34,17,1,0,252,124,48, + 48,48,96,48,192,49,128,51,0,54,0,62,0,63,0,51, + 128,49,128,49,192,48,224,48,112,48,56,48,28,252,62,15, + 17,34,17,1,0,3,0,3,0,3,128,5,128,4,192,4, + 192,12,192,8,96,8,96,24,96,16,48,16,48,48,48,32, + 24,32,24,96,28,248,62,20,17,51,22,1,0,240,1,240, + 56,1,192,56,3,192,60,2,192,44,2,192,46,6,192,38, + 4,192,39,12,192,35,8,192,35,136,192,33,152,192,33,208, + 192,32,208,192,32,240,192,32,96,192,32,96,192,248,67,240, + 16,17,34,18,1,0,240,31,56,4,56,4,44,4,46,4, + 38,4,35,4,35,4,33,132,33,196,32,196,32,100,32,100, + 32,52,32,60,32,28,248,12,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,96,6,112,14,56,28,28,56,7,224, + 16,17,34,18,1,0,255,255,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,200,19,200,19,207,243,207,243, + 200,19,200,19,192,3,96,6,112,14,56,28,28,56,7,224, + 12,17,34,14,1,0,255,128,48,224,48,96,48,48,48,48, + 48,48,48,96,48,224,63,128,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,252,0,12,17,34,14,1,0,255,240, + 224,16,112,16,56,0,28,0,14,0,7,0,3,128,3,0, + 6,0,12,0,24,0,48,0,96,16,192,16,255,240,255,240, + 14,17,34,16,1,0,255,252,195,12,131,4,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,16,17,34,16,0,0,248,31, + 112,14,48,12,24,24,28,16,12,48,14,96,6,96,3,192, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 9,18,36,11,1,251,31,128,63,128,96,0,96,0,192,0, + 192,0,192,0,192,0,192,0,192,0,96,0,127,0,31,128, + 0,128,0,128,1,128,15,0,14,0,16,17,34,18,1,0, + 7,224,30,120,56,28,112,14,96,6,192,3,192,3,192,3, + 192,3,192,3,96,6,48,12,24,24,140,49,196,35,252,63, + 252,63,14,17,34,16,1,0,127,248,127,248,64,8,64,8, + 0,0,16,32,16,32,31,224,31,224,16,32,16,32,0,0, + 0,0,128,4,128,4,255,252,255,252,18,17,51,20,1,0, + 227,241,192,112,195,128,48,195,0,48,195,0,56,199,0,56, + 199,0,24,198,0,28,206,0,7,248,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 3,240,0,12,17,34,15,1,0,255,240,192,112,128,96,0, + 224,1,192,1,128,3,128,7,0,6,0,14,0,28,0,56, + 0,56,0,112,0,96,16,224,48,255,240,5,22,22,8,2, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,12,10,20,18,3,0,6,0,6, + 0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,192, + 48,5,22,22,8,1,251,248,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,14,17,34, + 16,1,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,13,2,4,13,0,251,255,248,255,248,13, + 1,2,13,13,18,255,248,14,13,26,16,1,0,31,24,113, + 184,96,176,224,240,192,96,192,96,192,96,192,96,192,96,224, + 224,96,228,113,252,31,56,10,24,48,12,1,251,62,0,103, + 0,195,128,193,128,193,128,195,128,195,0,206,0,207,0,195, + 128,193,128,193,192,192,192,192,192,192,192,193,192,225,128,243, + 128,223,0,192,0,192,0,192,0,192,0,192,0,12,18,36, + 14,1,251,112,96,248,96,216,192,136,192,9,128,9,128,11, + 0,7,0,6,0,6,0,14,0,14,0,25,0,25,0,49, + 16,49,176,97,240,96,224,10,18,36,12,1,0,31,0,51, + 128,33,128,48,0,56,0,28,0,14,0,63,0,115,128,97, + 128,192,192,192,192,192,192,192,192,192,192,97,128,115,128,30, + 0,9,13,26,11,1,0,62,0,115,0,227,0,195,0,224, + 0,96,0,60,0,96,0,224,0,192,0,224,128,113,128,63, + 0,12,22,44,14,1,251,6,0,6,0,6,0,6,0,31, + 128,54,192,102,96,230,112,198,48,198,48,198,48,198,48,198, + 48,230,112,102,96,54,192,31,128,6,0,6,0,6,0,6, + 0,6,0,11,18,36,11,0,251,112,96,248,96,152,96,152, + 192,24,192,12,192,13,128,13,128,5,128,7,0,7,0,3, + 0,6,0,6,0,6,0,6,0,6,0,6,0,12,18,36, + 15,1,251,113,192,251,224,158,48,28,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,0,48,0, + 48,0,48,0,48,0,48,7,13,13,8,1,0,48,112,240, + 48,48,48,48,48,48,48,50,62,28,12,18,36,14,1,251, + 51,128,115,192,102,96,198,112,198,48,198,48,198,48,198,48, + 198,48,230,112,102,96,54,192,31,128,6,0,6,0,6,0, + 6,0,6,0,12,13,26,14,1,0,48,112,112,240,241,176, + 51,0,54,0,60,0,60,0,62,0,55,0,51,128,49,192, + 48,224,49,240,12,19,38,14,1,0,112,0,248,0,136,0, + 8,0,8,0,12,0,12,0,12,0,28,0,30,0,26,0, + 50,0,50,0,51,0,97,0,97,0,97,144,193,240,192,224, + 13,18,36,14,1,251,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,200,63,248,111,48, + 96,0,96,0,96,0,96,0,192,0,11,13,26,13,1,0, + 192,224,192,224,192,96,96,64,96,192,96,128,49,128,49,0, + 51,0,26,0,26,0,14,0,12,0,11,13,26,13,1,0, + 31,0,113,192,96,192,224,224,192,96,192,96,192,96,192,96, + 192,96,224,224,96,192,113,192,31,0,13,13,26,14,0,0, + 127,248,255,248,152,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,200,56,248,48,240,10,17,34,12,1,0, + 30,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 255,192,192,192,192,192,192,192,192,192,97,128,97,128,51,0, + 30,0,10,18,36,12,1,251,62,0,99,128,193,128,193,192, + 192,192,192,192,192,192,192,192,192,192,193,192,193,128,227,128, + 222,0,192,0,192,0,192,0,192,0,192,0,14,13,26,15, + 1,0,31,252,113,252,96,192,224,224,192,96,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,10,13,26,11, + 0,0,63,192,127,192,204,0,140,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,128,15,128,7,0,13,13,26,14, + 0,0,48,224,120,48,216,24,152,24,24,24,24,24,24,24, + 24,24,24,24,24,48,12,48,14,224,7,192,16,14,28,18, + 1,0,127,255,255,255,152,24,48,12,49,140,97,134,97,134, + 97,134,97,134,97,134,97,134,49,140,59,220,30,120,14,13, + 26,16,1,0,24,96,48,48,96,24,99,24,195,12,195,12, + 195,12,195,12,195,12,195,12,99,24,119,184,60,240,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,48,0,32,0, + 55,128,31,128,48,0,96,0,192,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,16,18,36,18,1,251,193,131,113,142,49,140, + 57,156,57,156,57,156,57,156,57,156,57,156,25,152,25,152, + 13,176,7,224,1,128,1,128,1,128,1,128,1,128,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,24,0,48,0, + 32,0,96,0,64,0,192,0,128,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,8,22,22,10,1,251,7,12,24,24,24,24, + 24,16,48,32,192,32,48,16,24,24,24,24,24,24,12,7, + 2,22,22,4,1,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,22,22,10, + 1,251,224,48,24,24,24,24,24,8,12,4,3,4,12,8, + 24,24,24,24,24,24,48,224,11,4,8,13,1,5,56,32, + 124,96,199,192,131,128,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,13,17,34,15,1,0,224,112, + 112,216,57,184,27,48,14,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 5,6,6,6,1,12,24,56,112,96,192,128,12,15,30,14, + 0,0,0,112,1,224,7,128,30,0,120,0,224,0,224,0, + 120,0,30,0,3,192,0,240,0,48,0,0,255,240,255,240, + 8,17,17,4,255,0,3,3,6,6,12,12,24,24,24,48, + 48,96,96,96,192,192,192,15,7,14,17,1,4,56,56,124, + 124,198,198,195,134,199,198,124,124,56,56,13,22,44,13,0, + 251,0,240,1,152,1,152,3,0,3,0,3,0,31,192,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,204,0,204,0,120,0,14,13,26, + 18,2,0,7,128,15,192,15,192,15,192,15,192,119,184,251, + 124,255,252,255,252,251,124,115,56,3,0,7,128,10,13,26, + 18,4,0,12,0,30,0,63,0,63,0,127,128,127,128,255, + 192,127,128,127,128,63,0,30,0,30,0,12,0,12,13,26, + 18,3,0,112,224,249,240,255,240,255,240,255,240,255,240,127, + 224,127,224,63,192,31,128,31,128,15,0,6,0,12,13,26, + 18,3,0,6,0,15,0,31,128,31,128,63,192,127,224,127, + 224,255,240,255,240,246,240,102,96,6,0,6,0,24,12,36, + 26,1,1,6,0,96,12,0,48,24,0,24,48,0,12,96, + 0,6,255,255,255,255,255,255,96,0,6,48,0,12,24,0, + 24,12,0,48,6,0,96,25,12,48,25,0,1,6,0,0, + 0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0, + 0,255,255,255,128,255,255,255,128,96,0,0,0,48,0,0, + 0,24,0,0,0,12,0,0,0,6,0,0,0,12,24,48, + 14,1,251,6,0,15,0,31,128,54,192,102,96,198,48,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,25,12,48,25,0,1,0,0,48,0,0,0,24, + 0,0,0,12,0,0,0,6,0,0,0,3,0,255,255,255, + 128,255,255,255,128,0,0,3,0,0,0,6,0,0,0,12, + 0,0,0,24,0,0,0,48,0,12,24,48,14,1,251,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,198,48,102,96,54,192,31,128,15,0,6,0,7, + 7,7,9,1,10,56,108,198,198,198,108,56,10,14,28,12, + 1,0,12,0,12,0,12,0,12,0,255,192,255,192,12,0, + 12,0,12,0,12,0,0,0,0,0,255,192,255,192,9,6, + 12,10,1,12,25,128,59,128,119,0,102,0,204,0,136,0, + 12,15,30,14,0,0,224,0,120,0,30,0,7,128,1,224, + 0,112,0,112,1,224,7,128,62,0,240,0,192,0,0,0, + 255,240,255,240,11,10,20,13,1,2,192,96,96,192,49,128, + 27,0,14,0,14,0,27,0,49,128,96,192,192,96,14,7, + 14,16,1,4,56,56,124,124,198,192,195,128,199,192,124,124, + 56,56,10,19,38,12,1,0,62,0,99,0,193,128,1,128, + 0,192,0,192,0,192,0,192,30,192,115,192,97,192,192,192, + 192,192,193,128,193,128,193,128,227,0,119,0,62,0,8,8, + 8,12,2,3,60,126,255,255,255,255,126,60,10,8,16,12, + 1,3,12,0,12,0,0,0,255,192,255,192,0,0,12,0, + 12,0,10,13,26,14,2,0,1,128,1,128,3,0,3,0, + 255,192,255,192,12,0,255,192,255,192,48,0,48,0,96,0, + 96,0,11,8,16,13,1,3,255,224,255,224,0,0,255,224, + 255,224,0,0,255,224,255,224,11,8,16,13,1,3,56,32, + 124,96,199,192,131,128,56,32,124,96,199,192,131,128,18,2, + 6,24,3,0,192,192,192,192,192,192,2,24,24,14,6,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,25,2,8,25,0,6,255,255, + 255,128,255,255,255,128,14,16,32,16,1,0,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 32,12,96,12,255,252,255,252,96,0,32,0,12,16,32,14, + 1,0,129,128,195,0,227,240,113,240,56,96,28,192,60,128, + 110,128,199,128,195,128,227,128,241,192,112,224,48,112,112,48, + 224,16,14,19,38,16,1,255,15,128,63,252,112,248,96,48, + 64,96,64,192,96,192,48,224,28,112,0,56,0,56,0,28, + 0,28,0,12,48,12,120,12,222,24,15,240,3,192,17,18, + 54,19,1,0,30,24,0,63,60,0,99,206,0,193,135,0, + 129,131,0,193,134,0,225,140,0,113,184,0,57,176,0,25, + 152,0,17,152,0,1,152,0,1,156,0,1,140,0,1,140, + 0,25,134,128,63,7,128,78,7,0,15,20,40,19,2,251, + 6,0,12,0,24,60,48,254,49,134,99,6,102,6,108,6, + 104,12,121,156,115,152,114,48,122,112,91,224,221,128,140,0, + 140,0,140,0,216,0,112,0,16,17,34,18,1,0,7,224, + 30,120,56,28,96,6,104,22,204,51,198,99,195,195,193,131, + 195,195,198,99,204,51,104,22,96,6,56,28,30,120,7,224, + 16,17,34,18,1,0,7,224,30,120,56,28,97,134,97,134, + 193,131,193,131,207,243,207,243,193,131,193,131,193,131,97,134, + 96,6,56,28,30,120,7,224,18,17,51,20,1,0,3,240, + 192,15,253,128,28,15,0,48,7,0,48,15,0,96,25,128, + 96,49,128,96,97,128,96,193,128,97,129,128,99,1,128,102, + 1,128,60,3,0,56,3,0,60,14,0,111,252,0,195,240, + 0,16,13,26,18,1,0,7,224,31,248,56,28,96,6,96, + 6,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,16,13,26,18,1,0,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,96,6,96,6,56,28,31,248,7, + 224,15,12,24,17,1,0,255,224,255,248,0,28,0,12,0, + 6,0,6,0,6,0,6,0,12,0,28,255,248,255,224,15, + 15,30,17,1,253,255,224,255,248,0,28,0,12,0,6,0, + 6,0,6,0,6,0,12,0,28,255,248,255,224,0,0,255, + 254,255,254,15,16,32,17,1,254,0,12,0,12,15,254,63, + 254,112,48,96,48,192,96,192,96,192,192,192,192,97,128,113, + 128,63,254,15,254,6,0,6,0,15,12,24,17,1,0,15, + 254,63,254,112,0,96,0,192,0,192,0,192,0,192,0,96, + 0,112,0,63,254,15,254,15,15,30,17,1,253,15,254,63, + 254,112,0,96,0,192,0,192,0,192,0,192,0,96,0,112, + 0,63,254,15,254,0,0,255,254,255,254,12,13,26,16,2, + 0,31,240,127,240,96,0,192,0,192,0,192,0,255,240,192, + 0,192,0,192,0,96,0,127,240,31,240,12,15,30,16,2, + 255,0,192,31,240,127,240,97,128,193,128,195,0,195,0,255, + 240,198,0,198,0,204,0,108,0,127,240,31,240,24,0,17, + 16,48,19,1,0,0,1,128,0,3,0,0,6,0,0,12, + 0,0,24,0,0,48,0,0,96,0,0,192,0,1,128,0, + 3,0,0,6,0,0,12,0,0,24,0,0,48,0,0,127, + 255,128,255,255,128,16,18,36,18,1,0,255,255,192,3,192, + 2,96,6,96,4,48,12,48,8,48,24,24,16,24,48,12, + 32,12,32,6,96,6,64,3,192,3,192,1,128,1,128,16, + 17,34,18,1,0,7,224,30,120,56,28,96,6,111,230,198, + 115,198,51,198,115,199,227,198,195,198,99,198,51,111,62,96, + 6,56,28,30,120,7,224,16,17,34,18,1,0,7,224,30, + 120,56,28,96,6,99,230,198,99,204,35,204,3,204,3,204, + 3,204,3,206,51,103,230,99,198,56,28,30,120,7,224,20, + 10,30,22,1,7,255,96,112,153,96,96,24,112,224,24,112, + 224,24,89,96,24,89,96,24,78,96,24,78,96,24,70,96, + 60,230,240,17,21,63,19,1,253,255,255,128,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,252,31,128,14,19,38,14,0,0,0,12, + 0,12,0,8,0,8,0,24,48,24,112,16,216,16,24,16, + 12,48,12,48,6,32,6,32,3,32,3,96,1,192,1,192, + 0,192,0,192,2,2,2,6,2,6,192,192,15,8,16,17, + 1,0,255,254,255,254,0,6,0,6,0,6,0,6,0,6, + 0,6,13,12,24,15,1,0,7,0,7,0,13,128,13,128, + 24,192,24,192,48,96,48,96,96,48,96,48,192,24,192,24, + 13,12,24,15,1,0,192,24,192,24,96,48,96,48,48,96, + 48,96,24,192,24,192,13,128,13,128,7,0,7,0,23,12, + 36,25,1,0,6,0,192,12,0,96,24,0,48,63,255,248, + 127,255,252,224,0,14,224,0,14,127,255,252,63,255,248,24, + 0,48,12,0,96,6,0,192,23,12,36,25,1,0,6,0, + 0,12,0,0,24,0,0,63,255,254,127,255,254,224,0,0, + 224,0,0,127,255,254,63,255,254,24,0,0,12,0,0,6, + 0,0,12,19,38,14,1,0,6,0,15,0,31,128,57,192, + 121,224,217,176,25,128,25,128,25,128,25,128,25,128,25,128, + 25,128,25,128,25,128,25,128,25,128,25,128,25,128,23,12, + 36,25,1,0,0,0,192,0,0,96,0,0,48,255,255,248, + 255,255,252,0,0,14,0,0,14,255,255,252,255,255,248,0, + 0,48,0,0,96,0,0,192,12,19,38,14,1,0,25,128, + 25,128,25,128,25,128,25,128,25,128,25,128,25,128,25,128, + 25,128,25,128,25,128,25,128,217,176,121,224,57,192,31,128, + 15,0,6,0,10,18,36,12,1,0,12,0,30,0,30,0, + 51,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 97,128,97,128,51,0,51,0,30,0,30,0,12,0,7,22, + 22,8,0,251,6,6,12,12,24,24,48,48,96,96,192,192, + 96,96,48,48,24,24,12,12,6,6,16,17,34,18,1,0, + 7,224,30,120,56,28,96,6,103,230,198,51,198,51,198,51, + 199,227,198,99,198,51,198,51,102,50,96,6,56,28,30,120, + 7,224,16,17,34,18,1,0,7,224,30,120,56,28,96,6, + 99,198,198,99,204,35,204,3,200,3,200,3,204,3,204,35, + 102,102,99,198,56,28,30,120,7,224,18,10,30,20,1,7, + 254,192,192,24,192,192,24,225,192,24,225,192,24,243,192,24, + 210,192,24,222,192,24,204,192,24,204,192,24,204,192,14,20, + 40,18,2,254,255,248,224,24,112,8,56,0,28,0,14,0, + 7,0,3,128,1,192,0,192,1,128,3,0,6,0,12,0, + 24,0,48,0,96,4,192,12,255,252,255,252,9,24,48,10, + 1,251,1,128,3,0,6,0,12,0,24,0,24,0,48,0, + 48,0,96,0,96,0,96,0,96,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,2,24,24,10,1,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 9,24,48,10,1,251,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,96,0,96,0,48,0,48,0,24,0,24,0,12,0, + 6,0,3,0,1,128,7,24,24,10,1,251,254,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,2,24,24,10,1,251,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,7,24,24,10,1,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,254, + 7,24,24,12,5,251,30,48,96,96,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,5,24, + 24,12,2,251,24,24,24,24,24,24,24,24,16,48,96,192, + 96,48,16,24,24,24,24,24,24,24,24,24,7,24,24,12, + 5,251,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,96,96,48,30,2,24,24,12,5,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,255,7,22,22,8,1,251,192, + 192,96,96,48,48,24,24,12,12,6,6,12,12,24,24,48, + 48,96,96,192,192,8,24,24,8,0,251,7,15,27,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 216,240,224,8,24,24,17,8,251,14,27,51,32,96,64,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,2,24,24,17,8,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,8, + 24,24,17,2,251,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,2,6,204,216,112,9,24,48, + 10,0,251,192,0,96,0,48,0,24,0,12,0,12,0,6, + 0,6,0,3,0,3,0,3,0,3,0,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,2,24,24,10,7,251,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,9,24,48,10,0,251,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3, + 0,3,0,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,48,0,96,0,192,0,7,24,24,10,2,251,254,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,2,24,24,10,7,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,7,24,24,10,2,251,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 254,7,24,24,12,0,251,240,24,12,12,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5, + 24,24,12,5,251,192,192,192,192,192,192,192,192,64,96,48, + 24,48,96,64,192,192,192,192,192,192,192,192,192,7,24,24, + 12,0,251,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,12,12,24,240,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=20 h=24 x=13 y=18 dx=22 dy= 0 ascent=19 len=51 + Font Bounding box w=27 h=24 x=-1 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb18r[3303] U8G_SECTION(".progmem.u8g_font_symb18r") = { + 0,27,24,255,251,17,3,215,8,151,32,127,251,19,251,17, + 251,0,0,0,6,0,1,3,17,17,7,2,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,15,17, + 34,17,1,0,192,6,192,6,96,12,96,12,63,248,63,248, + 48,24,24,48,24,48,12,96,12,96,12,96,6,192,6,192, + 3,128,3,128,3,128,11,17,34,13,1,0,8,128,8,128, + 8,128,8,128,8,128,127,224,127,224,17,0,17,0,17,0, + 255,192,255,192,34,0,34,0,34,0,34,0,34,0,11,17, + 34,13,1,0,255,224,255,224,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,0,96,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,18,17,51,20,1,0,31,6,0,57, + 254,0,113,12,0,99,24,0,227,24,0,198,48,0,206,96, + 0,220,96,0,120,199,128,1,142,192,1,156,192,3,56,192, + 6,48,192,6,49,128,12,51,128,24,55,0,24,30,0,15, + 17,34,17,1,0,7,128,12,192,24,64,24,64,24,192,29, + 128,15,62,30,28,62,24,103,48,195,160,193,224,192,192,193, + 224,227,114,126,62,60,28,8,13,13,11,2,0,248,62,14, + 7,3,3,127,3,3,7,14,62,248,6,22,22,8,1,251, + 12,24,48,32,96,96,64,192,192,192,192,192,192,192,192,64, + 96,96,32,48,24,12,6,22,22,8,1,251,192,96,48,16, + 24,24,8,12,12,12,12,12,12,12,12,8,24,24,16,48, + 96,192,8,10,10,12,2,7,24,24,195,231,24,24,231,195, + 24,24,10,10,20,12,1,2,12,0,12,0,12,0,12,0, + 255,192,255,192,12,0,12,0,12,0,12,0,3,6,6,6, + 1,252,96,96,32,96,192,128,11,2,4,13,1,6,255,224, + 255,224,2,2,2,6,2,0,192,192,7,17,17,7,0,0, + 6,6,6,12,12,12,24,24,48,48,48,96,96,96,192,192, + 192,10,17,34,12,1,0,30,0,51,0,97,128,97,128,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,97,128,51,0,30,0,6,17,17,12,3,0,48, + 112,240,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 10,17,34,12,1,0,28,0,127,0,103,0,131,128,129,128, + 1,128,1,128,3,128,3,0,7,0,12,0,12,0,24,0, + 48,0,96,64,255,192,255,128,9,17,34,12,1,0,28,0, + 126,0,71,0,131,0,131,0,6,0,12,0,30,0,7,0, + 3,0,1,128,1,128,1,128,3,0,199,0,254,0,120,0, + 10,17,34,12,1,0,3,0,7,0,7,0,15,0,11,0, + 27,0,19,0,51,0,35,0,99,0,67,0,255,192,255,192, + 3,0,3,0,3,0,3,0,10,17,34,12,1,0,31,192, + 63,128,96,0,96,0,192,0,240,0,252,0,30,0,7,0, + 3,128,1,128,1,128,1,128,1,128,195,0,254,0,124,0, + 10,17,34,12,1,0,3,192,14,0,56,0,112,0,96,0, + 224,0,207,0,243,128,225,128,192,192,192,192,192,192,192,192, + 224,192,97,192,115,128,31,0,10,17,34,12,1,0,127,192, + 255,192,192,192,129,128,1,128,3,0,3,0,3,0,6,0, + 6,0,6,0,12,0,12,0,12,0,24,0,24,0,24,0, + 10,17,34,12,1,0,30,0,51,0,97,128,97,128,97,128, + 51,0,30,0,30,0,55,0,115,128,225,192,192,192,192,192, + 192,192,225,192,115,128,30,0,10,17,34,12,1,0,30,0, + 115,128,97,128,192,192,192,192,192,192,192,192,192,192,97,192, + 115,192,30,192,1,128,3,128,7,0,14,0,60,0,240,0, + 2,11,11,6,2,0,192,192,0,0,0,0,0,0,0,192, + 192,3,15,15,6,1,252,96,96,0,0,0,0,0,0,0, + 96,96,32,96,192,128,12,12,24,13,0,1,0,112,1,224, + 7,128,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,112,10,5,10,12,1,4,255,192,255,192,0,0, + 255,192,255,192,12,12,24,13,0,1,224,0,120,0,30,0, + 7,128,1,224,0,112,0,112,1,224,7,128,30,0,120,0, + 224,0,8,17,17,11,2,0,124,198,131,195,199,6,14,12, + 28,24,24,16,16,0,0,48,48,11,12,24,13,1,1,56, + 32,124,96,199,192,131,128,0,0,0,0,255,224,255,224,0, + 0,0,0,255,224,255,224,17,17,51,18,0,0,0,128,0, + 1,192,0,1,192,0,1,64,0,3,96,0,2,96,0,2, + 48,0,6,48,0,4,48,0,12,24,0,8,24,0,15,252, + 0,24,12,0,16,12,0,48,6,0,48,6,0,248,15,128, + 13,17,34,15,1,0,255,192,48,224,48,112,48,48,48,48, + 48,48,48,48,48,96,63,192,48,112,48,56,48,24,48,24, + 48,24,48,56,48,112,255,192,16,17,34,18,1,0,248,31, + 112,14,56,12,28,24,12,48,14,96,7,192,3,128,3,128, + 7,192,6,96,12,112,24,48,24,24,48,28,112,14,248,31, + 15,17,34,15,0,0,3,0,3,0,3,128,5,128,4,192, + 12,192,8,96,8,96,24,48,16,48,48,24,32,24,32,12, + 96,12,64,6,192,6,255,254,13,17,34,15,1,0,255,240, + 48,48,48,16,48,0,48,0,48,0,48,32,48,32,63,224, + 48,32,48,32,48,0,48,0,48,0,48,8,48,24,255,248, + 16,17,34,19,1,0,7,224,1,128,1,128,15,240,57,156, + 97,134,225,135,193,131,193,131,193,131,225,135,97,134,57,156, + 15,240,1,128,1,128,7,224,13,17,34,15,1,0,255,248, + 48,24,48,8,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 16,17,34,18,1,0,252,63,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,17,17,8,1,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,14, + 17,34,16,1,0,3,192,6,224,4,96,6,96,3,48,113, + 176,248,240,152,60,24,48,24,48,48,48,48,48,48,48,48, + 96,56,96,28,192,15,128,15,17,34,17,1,0,252,124,48, + 48,48,96,48,192,49,128,51,0,54,0,62,0,63,0,51, + 128,49,128,49,192,48,224,48,112,48,56,48,28,252,62,15, + 17,34,17,1,0,3,0,3,0,3,128,5,128,4,192,4, + 192,12,192,8,96,8,96,24,96,16,48,16,48,48,48,32, + 24,32,24,96,28,248,62,20,17,51,22,1,0,240,1,240, + 56,1,192,56,3,192,60,2,192,44,2,192,46,6,192,38, + 4,192,39,12,192,35,8,192,35,136,192,33,152,192,33,208, + 192,32,208,192,32,240,192,32,96,192,32,96,192,248,67,240, + 16,17,34,18,1,0,240,31,56,4,56,4,44,4,46,4, + 38,4,35,4,35,4,33,132,33,196,32,196,32,100,32,100, + 32,52,32,60,32,28,248,12,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,96,6,112,14,56,28,28,56,7,224, + 16,17,34,18,1,0,255,255,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,200,19,200,19,207,243,207,243, + 200,19,200,19,192,3,96,6,112,14,56,28,28,56,7,224, + 12,17,34,14,1,0,255,128,48,224,48,96,48,48,48,48, + 48,48,48,96,48,224,63,128,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,252,0,12,17,34,14,1,0,255,240, + 224,16,112,16,56,0,28,0,14,0,7,0,3,128,3,0, + 6,0,12,0,24,0,48,0,96,16,192,16,255,240,255,240, + 14,17,34,16,1,0,255,252,195,12,131,4,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,16,17,34,16,0,0,248,31, + 112,14,48,12,24,24,28,16,12,48,14,96,6,96,3,192, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 9,18,36,11,1,251,31,128,63,128,96,0,96,0,192,0, + 192,0,192,0,192,0,192,0,192,0,96,0,127,0,31,128, + 0,128,0,128,1,128,15,0,14,0,16,17,34,18,1,0, + 7,224,30,120,56,28,112,14,96,6,192,3,192,3,192,3, + 192,3,192,3,96,6,48,12,24,24,140,49,196,35,252,63, + 252,63,14,17,34,16,1,0,127,248,127,248,64,8,64,8, + 0,0,16,32,16,32,31,224,31,224,16,32,16,32,0,0, + 0,0,128,4,128,4,255,252,255,252,18,17,51,20,1,0, + 227,241,192,112,195,128,48,195,0,48,195,0,56,199,0,56, + 199,0,24,198,0,28,206,0,7,248,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 3,240,0,12,17,34,15,1,0,255,240,192,112,128,96,0, + 224,1,192,1,128,3,128,7,0,6,0,14,0,28,0,56, + 0,56,0,112,0,96,16,224,48,255,240,5,22,22,8,2, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,12,10,20,18,3,0,6,0,6, + 0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,192, + 48,5,22,22,8,1,251,248,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,14,17,34, + 16,1,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,13,2,4,13,0,251,255,248,255,248,13, + 1,2,13,13,18,255,248,14,13,26,16,1,0,31,24,113, + 184,96,176,224,240,192,96,192,96,192,96,192,96,192,96,224, + 224,96,228,113,252,31,56,10,24,48,12,1,251,62,0,103, + 0,195,128,193,128,193,128,195,128,195,0,206,0,207,0,195, + 128,193,128,193,192,192,192,192,192,192,192,193,192,225,128,243, + 128,223,0,192,0,192,0,192,0,192,0,192,0,12,18,36, + 14,1,251,112,96,248,96,216,192,136,192,9,128,9,128,11, + 0,7,0,6,0,6,0,14,0,14,0,25,0,25,0,49, + 16,49,176,97,240,96,224,10,18,36,12,1,0,31,0,51, + 128,33,128,48,0,56,0,28,0,14,0,63,0,115,128,97, + 128,192,192,192,192,192,192,192,192,192,192,97,128,115,128,30, + 0,9,13,26,11,1,0,62,0,115,0,227,0,195,0,224, + 0,96,0,60,0,96,0,224,0,192,0,224,128,113,128,63, + 0,12,22,44,14,1,251,6,0,6,0,6,0,6,0,31, + 128,54,192,102,96,230,112,198,48,198,48,198,48,198,48,198, + 48,230,112,102,96,54,192,31,128,6,0,6,0,6,0,6, + 0,6,0,11,18,36,11,0,251,112,96,248,96,152,96,152, + 192,24,192,12,192,13,128,13,128,5,128,7,0,7,0,3, + 0,6,0,6,0,6,0,6,0,6,0,6,0,12,18,36, + 15,1,251,113,192,251,224,158,48,28,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,0,48,0, + 48,0,48,0,48,0,48,7,13,13,8,1,0,48,112,240, + 48,48,48,48,48,48,48,50,62,28,12,18,36,14,1,251, + 51,128,115,192,102,96,198,112,198,48,198,48,198,48,198,48, + 198,48,230,112,102,96,54,192,31,128,6,0,6,0,6,0, + 6,0,6,0,12,13,26,14,1,0,48,112,112,240,241,176, + 51,0,54,0,60,0,60,0,62,0,55,0,51,128,49,192, + 48,224,49,240,12,19,38,14,1,0,112,0,248,0,136,0, + 8,0,8,0,12,0,12,0,12,0,28,0,30,0,26,0, + 50,0,50,0,51,0,97,0,97,0,97,144,193,240,192,224, + 13,18,36,14,1,251,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,200,63,248,111,48, + 96,0,96,0,96,0,96,0,192,0,11,13,26,13,1,0, + 192,224,192,224,192,96,96,64,96,192,96,128,49,128,49,0, + 51,0,26,0,26,0,14,0,12,0,11,13,26,13,1,0, + 31,0,113,192,96,192,224,224,192,96,192,96,192,96,192,96, + 192,96,224,224,96,192,113,192,31,0,13,13,26,14,0,0, + 127,248,255,248,152,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,200,56,248,48,240,10,17,34,12,1,0, + 30,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 255,192,192,192,192,192,192,192,192,192,97,128,97,128,51,0, + 30,0,10,18,36,12,1,251,62,0,99,128,193,128,193,192, + 192,192,192,192,192,192,192,192,192,192,193,192,193,128,227,128, + 222,0,192,0,192,0,192,0,192,0,192,0,14,13,26,15, + 1,0,31,252,113,252,96,192,224,224,192,96,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,10,13,26,11, + 0,0,63,192,127,192,204,0,140,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,128,15,128,7,0,13,13,26,14, + 0,0,48,224,120,48,216,24,152,24,24,24,24,24,24,24, + 24,24,24,24,24,48,12,48,14,224,7,192,16,14,28,18, + 1,0,127,255,255,255,152,24,48,12,49,140,97,134,97,134, + 97,134,97,134,97,134,97,134,49,140,59,220,30,120,14,13, + 26,16,1,0,24,96,48,48,96,24,99,24,195,12,195,12, + 195,12,195,12,195,12,195,12,99,24,119,184,60,240,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,48,0,32,0, + 55,128,31,128,48,0,96,0,192,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,16,18,36,18,1,251,193,131,113,142,49,140, + 57,156,57,156,57,156,57,156,57,156,57,156,25,152,25,152, + 13,176,7,224,1,128,1,128,1,128,1,128,1,128,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,24,0,48,0, + 32,0,96,0,64,0,192,0,128,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,8,22,22,10,1,251,7,12,24,24,24,24, + 24,16,48,32,192,32,48,16,24,24,24,24,24,24,12,7, + 2,22,22,4,1,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,22,22,10, + 1,251,224,48,24,24,24,24,24,8,12,4,3,4,12,8, + 24,24,24,24,24,24,48,224,11,4,8,13,1,5,56,32, + 124,96,199,192,131,128,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=34 x=15 y=26 dx=34 dy= 0 ascent=27 len=108 + Font Bounding box w=40 h=34 x=-5 y=-7 + Calculated Min Values x=-5 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb24[10727] U8G_SECTION(".progmem.u8g_font_symb24") = { + 0,40,34,251,249,23,5,133,13,247,32,255,249,27,249,23, + 249,0,0,0,8,0,1,4,23,23,11,4,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,0,0,0, + 96,240,240,96,20,24,72,23,1,0,192,0,48,192,0,48, + 192,0,96,96,0,96,96,0,96,48,0,192,48,0,192,63, + 255,192,31,255,128,24,1,128,12,3,0,12,3,0,12,3, + 0,6,6,0,6,6,0,3,12,0,3,12,0,3,12,0, + 1,152,0,1,152,0,0,240,0,0,240,0,0,240,0,0, + 96,0,14,23,46,16,1,0,6,48,6,48,6,48,6,48, + 12,96,12,96,12,96,127,252,127,252,12,96,12,96,12,96, + 24,192,24,192,24,192,255,248,255,248,24,192,24,192,49,128, + 49,128,49,128,49,128,15,24,48,18,0,0,255,254,255,254, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,63,254,63,254,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,255,254,255,254,23,23,69,27, + 2,255,7,192,96,30,225,192,60,63,192,56,33,128,112,33, + 128,112,35,0,240,98,0,224,70,0,224,204,0,224,204,0, + 97,152,0,119,16,124,62,48,238,0,97,198,0,99,130,0, + 199,2,0,135,2,1,142,6,3,14,4,3,14,12,6,14, + 24,14,7,48,12,3,224,23,22,66,25,1,0,0,248,0, + 3,140,0,3,6,0,7,6,0,7,6,0,7,6,0,7, + 12,0,7,152,0,3,241,252,3,192,112,7,192,96,29,224, + 96,56,240,192,112,240,128,96,121,128,224,63,0,224,30,0, + 224,31,0,240,31,130,248,55,238,127,227,252,31,128,248,12, + 17,34,14,1,0,126,0,127,128,7,192,1,224,0,224,0, + 240,0,112,0,112,63,240,63,240,0,112,0,112,0,224,1, + 224,3,192,255,0,124,0,8,29,29,11,2,250,3,7,6, + 12,24,48,48,112,112,96,96,224,224,224,224,224,224,224,96, + 96,112,112,48,48,24,12,6,7,3,8,29,29,11,1,250, + 192,224,96,48,24,12,12,14,14,6,6,7,7,7,7,7, + 7,7,6,6,14,14,12,12,24,48,96,224,192,11,14,28, + 16,2,4,4,0,14,0,14,0,196,96,228,224,127,192,31, + 0,31,0,127,192,228,224,196,96,14,0,14,0,4,0,16, + 18,36,18,1,0,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,4,9,9,8,2,251,96, + 240,240,240,16,48,96,224,192,17,2,6,18,0,8,255,255, + 128,255,255,128,4,4,4,8,2,0,96,240,240,96,7,22, + 22,9,1,0,2,2,6,6,4,12,12,8,24,24,16,48, + 48,32,32,96,64,64,192,192,128,128,14,23,46,16,1,0, + 15,192,28,224,56,112,48,48,112,56,112,56,96,24,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 96,24,112,56,112,56,48,48,56,112,28,224,15,192,9,23, + 46,16,4,0,4,0,28,0,252,0,220,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,62,0, + 255,128,14,23,46,16,1,0,15,128,31,192,63,224,97,240, + 192,240,192,112,128,112,0,112,0,112,0,96,0,96,0,192, + 0,192,1,128,3,0,3,0,6,0,12,0,24,0,48,12, + 112,24,127,248,255,240,13,23,46,16,1,0,15,128,63,224, + 113,224,64,224,192,96,128,96,0,96,0,192,0,192,1,128, + 7,192,15,224,1,240,0,112,0,120,0,56,0,56,0,56, + 0,48,0,48,96,96,121,192,127,128,15,23,46,16,0,0, + 0,48,0,112,0,112,0,240,1,240,1,240,3,112,6,112, + 6,112,12,112,24,112,24,112,48,112,32,112,96,112,192,112, + 255,254,255,254,0,112,0,112,0,112,0,112,0,112,13,23, + 46,16,1,0,15,248,15,240,31,240,16,0,48,0,32,0, + 126,0,127,128,127,192,15,224,3,224,0,240,0,112,0,112, + 0,112,0,48,0,48,0,48,0,112,0,96,224,192,251,128, + 254,0,14,23,46,16,1,0,0,56,1,224,3,128,7,0, + 14,0,28,0,56,0,56,0,112,0,119,192,255,240,240,120, + 224,56,224,60,224,28,224,28,224,28,224,28,112,28,112,56, + 56,56,28,112,15,192,13,23,46,16,1,0,127,248,127,248, + 127,248,192,24,128,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,192,1,128,1,128,1,128,3,0, + 3,0,3,0,6,0,6,0,6,0,12,23,46,16,2,0, + 31,128,113,192,96,224,224,96,192,96,224,96,224,224,112,192, + 121,192,63,0,31,0,31,128,63,192,115,192,96,224,224,240, + 192,112,192,112,224,112,224,112,96,96,121,192,31,128,14,23, + 46,16,1,0,15,128,56,224,48,112,96,56,224,56,224,56, + 224,60,224,28,224,28,224,28,240,28,112,28,120,124,63,252, + 15,56,0,56,0,112,0,240,0,224,1,192,7,128,30,0, + 112,0,4,15,15,9,2,0,96,240,240,96,0,0,0,0, + 0,0,0,96,240,240,96,4,20,20,9,3,251,96,240,240, + 96,0,0,0,0,0,0,0,96,240,240,240,16,48,96,224, + 192,16,16,32,18,1,1,0,7,0,31,0,124,1,240,7, + 128,30,0,120,0,224,0,224,0,120,0,30,0,7,128,1, + 240,0,124,0,31,0,7,17,8,24,18,0,5,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,16,16,32,18,1,1,224,0,248,0,62, + 0,15,128,1,224,0,120,0,30,0,7,0,7,0,30,0, + 120,1,224,15,128,62,0,248,0,224,0,11,23,46,14,2, + 0,63,0,99,128,193,192,192,224,192,224,224,224,192,224,1, + 224,1,192,1,128,3,128,3,0,6,0,6,0,4,0,4, + 0,4,0,0,0,0,0,12,0,30,0,30,0,12,0,17, + 16,48,18,0,0,30,1,0,63,195,128,96,255,0,64,28, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,21,23,69,23,0,0,0,32,0,0,112, + 0,0,112,0,0,112,0,0,248,0,0,248,0,0,188,0, + 1,188,0,1,156,0,3,30,0,3,14,0,2,15,0,6, + 15,0,6,7,0,12,7,128,15,255,128,8,3,128,24,3, + 192,24,1,192,48,1,224,48,1,224,112,1,240,252,7,248, + 18,23,69,22,1,0,255,224,0,63,254,0,28,31,0,28, + 7,0,28,7,128,28,7,128,28,7,128,28,7,128,28,7, + 0,28,15,0,28,62,0,31,248,0,28,31,0,28,7,128, + 28,3,128,28,3,192,28,3,192,28,3,192,28,3,192,28, + 7,128,28,15,128,63,255,0,255,248,0,22,23,69,23,0, + 0,255,195,252,63,0,224,31,0,192,15,1,192,7,129,128, + 7,195,0,3,198,0,1,230,0,1,236,0,0,248,0,0, + 120,0,0,120,0,0,124,0,0,222,0,1,158,0,1,143, + 0,3,15,128,6,7,128,14,3,192,12,3,224,24,1,224, + 56,1,240,254,7,252,19,22,66,20,0,0,0,96,0,0, + 96,0,0,240,0,0,240,0,0,240,0,1,248,0,1,56, + 0,3,60,0,2,60,0,6,28,0,4,30,0,12,14,0, + 12,15,0,8,15,0,24,7,0,16,7,128,48,3,128,32, + 3,192,96,3,192,64,1,192,255,255,224,255,255,224,18,23, + 69,20,1,0,255,255,128,63,255,128,28,3,128,28,1,128, + 28,1,128,28,0,0,28,0,0,28,2,0,28,2,0,28, + 2,0,28,14,0,31,254,0,28,6,0,28,2,0,28,2, + 0,28,0,0,28,0,0,28,0,64,28,0,64,28,0,192, + 28,1,192,63,255,128,255,255,128,23,23,69,25,1,0,1, + 255,0,0,124,0,0,56,0,0,56,0,7,255,192,31,57, + 240,60,56,120,120,56,60,120,56,60,240,56,30,240,56,30, + 240,56,30,240,56,30,240,56,30,120,56,28,120,56,60,60, + 56,120,31,57,240,7,255,192,0,56,0,0,56,0,0,124, + 0,1,255,0,18,23,69,20,1,0,255,255,128,63,255,192, + 60,1,192,28,0,192,28,0,64,28,0,64,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,62,0,0,255,128,0,22, + 23,69,24,1,0,255,135,252,62,1,240,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 28,0,224,28,0,224,31,255,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,62,1,240,255,135,252,9,23,46,11,1,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,20,23, + 69,20,0,0,0,120,0,0,220,0,0,134,0,0,135,0, + 0,131,0,0,195,128,0,67,128,28,99,128,62,57,128,126, + 29,128,199,7,128,199,1,224,6,1,176,14,1,128,14,1, + 128,14,1,128,14,3,128,14,3,0,14,3,0,14,7,0, + 7,6,0,3,156,0,1,248,0,22,23,69,23,1,0,255, + 143,240,62,3,192,28,3,128,28,3,0,28,6,0,28,12, + 0,28,24,0,28,48,0,28,96,0,29,192,0,31,224,0, + 31,224,0,30,240,0,28,120,0,28,124,0,28,62,0,28, + 31,0,28,15,128,28,7,128,28,3,192,28,1,224,62,1, + 240,255,143,252,21,22,66,22,0,0,0,32,0,0,48,0, + 0,112,0,0,112,0,0,248,0,0,248,0,0,188,0,1, + 188,0,1,156,0,1,30,0,3,14,0,3,15,0,2,15, + 0,6,7,0,6,7,128,12,3,128,12,3,192,8,3,192, + 24,1,192,24,1,224,56,1,240,254,7,248,27,23,92,29, + 1,0,254,0,15,224,30,0,15,128,31,0,15,0,31,0, + 31,0,31,0,31,0,31,128,55,0,27,128,55,0,27,192, + 39,0,27,192,103,0,25,224,103,0,25,224,199,0,24,224, + 199,0,24,240,135,0,24,113,135,0,24,121,135,0,24,123, + 7,0,24,63,7,0,24,63,7,0,24,30,7,0,24,30, + 7,0,24,12,7,0,56,12,15,128,255,12,63,224,22,23, + 69,23,1,0,252,3,252,62,0,96,30,0,96,31,0,96, + 31,128,96,31,192,96,27,192,96,25,224,96,25,240,96,24, + 240,96,24,120,96,24,60,96,24,60,96,24,30,96,24,15, + 96,24,15,224,24,7,224,24,3,224,24,1,224,24,1,224, + 24,0,224,56,0,96,255,0,32,22,23,69,23,1,0,1, + 254,0,7,135,128,14,1,192,28,0,224,60,0,240,120,0, + 112,120,0,120,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,120, + 0,120,56,0,112,60,0,240,28,0,224,14,1,192,7,207, + 128,1,254,0,23,23,69,25,1,0,255,255,254,63,255,248, + 28,0,112,28,0,112,28,0,112,28,0,112,28,0,112,28, + 0,112,28,0,112,28,0,112,28,0,112,28,0,112,28,0, + 112,28,0,112,28,0,112,28,0,112,28,0,112,28,0,112, + 28,0,112,28,0,112,28,0,112,62,0,248,255,131,254,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,60,0,240,56,0,112,120,0,120,112,0,56,112,0,56, + 242,1,60,243,3,60,243,255,60,243,255,60,243,3,60,242, + 1,60,112,0,56,112,0,56,120,0,120,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,240,0,63,254,0,28,15,0,28,7,128,28,7,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,7,128,28,7, + 0,30,62,0,31,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,18,23,69,19,1,0,255,255,0,255,255, + 0,120,3,0,60,1,0,62,1,128,30,0,0,15,0,0, + 7,128,0,7,192,0,3,192,0,1,224,0,0,192,0,1, + 192,0,1,128,0,3,0,0,6,0,0,12,0,64,28,0, + 192,24,0,128,48,1,128,127,255,128,255,255,128,255,255,128, + 19,23,69,20,1,0,255,255,224,248,227,224,192,224,224,192, + 224,96,128,224,32,128,224,32,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,1,240,0,7,252,0,23,23,69,23,0, + 0,255,193,254,62,0,112,31,0,96,15,0,224,15,128,192, + 7,129,128,3,193,128,3,227,0,1,227,0,0,246,0,0, + 252,0,0,124,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,124,0,1,255,0,13,24,48,14,1,249,3,224,15,240, + 31,240,48,0,96,0,64,0,192,0,192,0,128,0,128,0, + 128,0,192,0,192,0,240,0,127,240,63,240,31,248,0,24, + 0,8,0,8,0,24,7,240,7,240,7,192,23,23,69,25, + 1,0,0,254,0,3,131,128,14,0,224,30,0,240,28,0, + 112,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 120,0,60,120,0,60,120,0,60,56,0,56,60,0,120,28, + 0,112,14,0,224,7,1,192,129,131,2,192,130,6,255,199, + 254,255,199,254,255,199,254,19,23,69,21,1,0,127,255,192, + 127,255,192,127,255,192,96,0,192,64,0,64,0,0,0,0, + 0,0,0,0,0,8,2,0,12,6,0,15,254,0,15,254, + 0,15,254,0,8,2,0,8,2,0,0,0,0,0,0,0, + 192,0,96,192,0,96,64,0,64,127,255,192,127,255,192,127, + 255,192,25,23,92,26,0,0,224,255,131,128,112,62,7,0, + 56,28,14,0,56,28,14,0,60,28,30,0,60,28,30,0, + 60,28,30,0,60,28,30,0,60,28,30,0,28,28,28,0, + 30,28,60,0,15,156,248,0,3,255,224,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,62,0,0, + 0,255,128,0,19,23,69,20,1,0,127,255,192,120,3,192, + 96,7,128,96,15,0,64,15,0,64,30,0,0,62,0,0, + 60,0,0,120,0,0,248,0,0,240,0,1,224,0,1,224, + 0,3,192,0,7,192,0,7,128,0,15,0,0,31,0,32, + 30,0,32,62,0,96,60,0,224,120,3,192,255,255,192,7, + 28,28,11,3,251,254,224,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 254,17,16,48,28,5,0,1,224,0,1,224,0,1,224,0, + 1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,240,7,128,240,7, + 128,240,7,128,240,7,128,7,28,28,11,1,251,254,14,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,14,254,20,23,69,21,1,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,255,255, + 240,255,255,240,16,2,4,16,0,249,255,255,255,255,20,1, + 3,17,15,26,255,255,240,19,17,51,20,1,0,15,193,128, + 28,225,128,56,51,128,112,19,128,112,23,0,240,31,0,224, + 15,0,224,14,0,224,14,0,224,14,0,224,28,0,240,30, + 0,240,30,32,112,58,32,120,115,224,60,225,192,15,193,192, + 14,32,64,18,2,249,15,128,25,224,48,224,112,112,96,112, + 96,112,96,112,96,112,96,112,96,96,103,192,103,224,96,112, + 96,56,96,56,96,60,96,28,96,28,96,28,96,28,96,28, + 96,56,120,120,111,240,99,192,96,0,96,0,96,0,96,0, + 224,0,224,0,224,0,17,25,75,18,0,249,24,0,0,60, + 14,0,126,14,0,70,30,0,194,28,0,195,60,0,3,56, + 0,1,112,0,1,112,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,128,0,7,192,0,7,192,0,15,64,0,14, + 64,0,30,96,0,28,97,128,60,97,128,56,51,0,120,63, + 0,112,62,0,112,30,0,14,25,50,16,1,0,15,128,31, + 224,48,240,32,120,48,48,56,0,28,0,14,0,7,128,3, + 192,7,240,28,240,56,120,112,56,240,60,224,28,224,28,224, + 28,224,28,240,28,240,56,112,56,120,112,31,224,7,128,12, + 18,36,14,1,255,31,128,57,224,112,224,224,224,224,64,224, + 0,112,0,120,0,31,128,120,0,240,0,224,0,224,0,224, + 16,240,48,120,48,63,224,15,128,15,30,60,17,1,249,1, + 0,1,0,1,0,1,0,1,0,1,0,15,192,29,112,57, + 56,113,28,113,28,225,30,225,14,225,14,225,14,225,14,225, + 14,241,14,113,12,113,28,57,24,29,112,7,224,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,15,24,48,13,254, + 249,56,14,124,14,124,14,198,28,134,28,130,28,3,56,3, + 56,1,48,1,48,1,96,1,224,1,192,0,192,0,192,1, + 128,1,192,1,192,3,192,3,192,3,192,3,192,3,128,1, + 128,17,24,72,20,0,249,24,56,0,124,254,0,223,222,0, + 207,15,0,143,7,0,14,7,0,14,7,0,14,7,0,14, + 7,0,14,7,0,14,7,0,14,7,0,14,7,0,14,7, + 0,14,7,0,14,7,0,14,7,0,0,7,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,3,0,0,3,128,10, + 17,34,11,0,0,4,0,124,0,252,0,60,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 64,28,192,15,192,15,0,18,24,72,20,1,249,6,60,0, + 30,126,0,56,255,0,112,199,128,112,195,128,240,195,192,224, + 193,192,224,193,192,224,193,192,224,193,192,240,193,192,240,193, + 128,112,195,128,120,195,0,56,199,0,30,220,0,7,248,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,17,17,51,18,1,0,8,7,0,248,31, + 128,248,63,128,56,99,0,24,192,0,25,128,0,27,0,0, + 31,128,0,31,128,0,27,192,0,25,224,0,24,240,0,24, + 240,0,24,120,0,24,60,0,24,62,0,24,127,128,17,25, + 75,18,1,0,56,0,0,124,0,0,126,0,0,198,0,0, + 195,0,0,131,0,0,1,0,0,1,0,0,1,128,0,3, + 128,0,3,128,0,7,128,0,7,192,0,15,192,0,14,192, + 0,30,64,0,28,96,0,28,96,0,56,96,0,56,96,128, + 112,48,128,112,57,128,224,63,0,224,31,0,224,14,0,17, + 24,72,19,1,249,112,56,0,112,56,0,112,56,0,112,56, + 0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0, + 112,56,0,112,56,0,112,56,0,112,120,0,120,120,128,127, + 253,128,127,159,128,110,30,0,96,0,0,96,0,0,96,0, + 0,224,0,0,224,0,0,224,0,0,96,0,0,16,17,34, + 17,255,0,24,6,248,7,60,7,28,7,28,7,30,6,14, + 6,14,12,7,12,7,24,7,152,3,176,3,160,1,224,1, + 192,1,192,0,128,15,17,34,18,1,0,7,192,28,112,48, + 56,112,60,112,28,224,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,28,56,56,30,112,15,224,17,17,51, + 18,0,0,15,255,128,63,255,128,63,255,128,102,56,0,198, + 56,0,6,48,0,6,48,0,6,48,0,6,48,0,6,48, + 0,4,48,0,12,48,0,12,48,128,28,57,128,60,63,0, + 60,31,0,56,30,0,14,23,46,17,1,0,7,128,28,224, + 24,112,48,48,112,56,112,56,240,60,224,28,224,28,224,28, + 224,28,255,252,255,252,224,28,224,28,224,28,224,28,112,56, + 112,56,112,56,56,112,28,224,15,192,14,25,50,18,2,249, + 7,192,31,224,48,240,96,120,96,120,224,60,224,60,224,28, + 224,28,224,28,224,28,224,24,224,24,224,56,240,112,248,224, + 239,192,231,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,18,18,54,20,1,0,3,255,192,15,255,192,63,255, + 192,124,48,0,120,24,0,240,28,0,240,14,0,224,15,0, + 224,7,0,224,7,0,240,7,0,112,7,0,112,15,0,56, + 14,0,60,30,0,30,56,0,7,240,0,1,192,0,14,17, + 34,14,0,0,15,252,63,252,63,252,99,128,195,128,195,128, + 3,0,3,0,3,0,3,0,3,0,3,8,3,136,3,152, + 3,248,1,240,1,224,17,18,54,19,0,0,0,16,0,60, + 24,0,124,28,0,252,6,0,206,7,0,142,3,0,14,3, + 0,14,3,128,14,3,128,14,3,128,14,3,128,14,3,128, + 14,3,0,14,7,0,7,7,0,7,14,0,3,156,0,1, + 248,0,21,19,57,23,0,0,31,255,248,63,255,248,127,255, + 248,231,131,128,222,0,192,60,0,224,56,56,112,120,56,112, + 120,56,56,120,56,56,112,56,56,112,56,56,112,56,56,112, + 16,56,120,16,56,120,56,112,56,40,112,28,236,224,15,135, + 192,20,17,51,22,1,0,15,14,0,28,7,128,56,1,192, + 112,97,224,112,224,224,224,224,240,224,224,240,224,224,112,224, + 224,112,224,224,112,224,224,112,224,64,112,224,224,240,112,224, + 224,113,177,224,63,31,192,30,15,0,14,33,66,16,1,249, + 48,0,96,192,99,224,103,192,63,128,24,0,48,0,32,0, + 32,0,48,0,49,240,31,240,31,224,48,0,96,0,64,0, + 192,0,128,0,128,0,128,0,192,0,192,0,248,0,127,240, + 63,252,31,252,0,12,0,4,0,4,0,12,3,248,3,248, + 1,224,22,24,72,22,0,249,240,48,60,120,48,120,60,48, + 240,28,48,224,28,48,224,28,48,224,28,48,224,28,48,224, + 30,48,224,30,49,224,30,49,224,14,49,192,14,49,192,6, + 49,192,7,51,128,3,183,0,1,254,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 13,32,64,16,2,249,24,0,56,112,48,240,51,224,63,192, + 14,0,12,0,24,0,16,0,48,0,32,0,96,0,64,0, + 64,0,192,0,192,0,192,0,192,0,192,0,224,0,96,0, + 127,192,63,240,31,248,15,248,0,24,0,8,0,8,0,24, + 3,248,7,240,3,224,11,29,58,16,2,250,7,224,14,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,28,0,28,0,112,0,192,0,112,0,28,0,28,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,14,0,7,224,2,28,28,7,2,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,29,58,16,2,250,252,0, + 14,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,7,0,7,0,1,192,0,96,1,192,7,0, + 7,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,14,0,252,0,15,4,8,18,1,7,24,0, + 127,134,227,254,192,56,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,20,23,69,20,0,0,240,1, + 192,124,7,224,15,12,112,7,12,240,3,152,224,1,208,224, + 1,208,0,1,240,0,1,240,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,1,240,0, + 7,252,0,6,9,9,8,1,16,24,60,60,120,112,96,224, + 192,128,16,21,42,18,1,0,0,7,0,31,0,124,1,240, + 7,192,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,120,0,30,0,7,0,1,0,0,0,0,255,255, + 255,255,15,23,46,6,251,0,0,2,0,6,0,12,0,12, + 0,24,0,48,0,48,0,96,0,192,0,192,1,128,3,0, + 3,0,6,0,12,0,12,0,24,0,48,0,48,0,96,0, + 192,0,192,0,128,0,21,10,30,23,1,4,28,3,192,127, + 15,224,99,158,48,193,248,24,192,240,24,192,240,24,192,248, + 24,99,156,48,127,15,240,28,3,192,16,29,58,16,0,250, + 0,30,0,51,0,103,0,98,0,224,0,224,0,192,0,192, + 0,192,15,252,1,192,1,192,1,192,1,192,1,128,1,128, + 1,128,3,128,3,128,3,128,3,0,3,0,3,0,3,0, + 2,0,102,0,230,0,236,0,120,0,18,18,54,24,3,0, + 1,224,0,3,240,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,240,0,1,224,0,124,207,128,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,252,207,192,120,199,128, + 0,192,0,1,224,0,14,18,36,24,5,0,3,0,7,128, + 7,192,15,192,31,224,63,240,127,248,127,248,255,252,255,252, + 127,248,127,248,63,240,31,224,15,192,7,192,7,128,3,0, + 16,18,36,24,4,0,124,62,254,127,254,127,255,255,255,255, + 255,255,255,255,127,254,127,254,63,252,63,252,31,248,15,240, + 15,240,7,224,3,192,1,128,1,128,16,18,36,24,4,0, + 1,128,1,192,3,192,7,224,7,240,15,240,31,248,63,252, + 63,252,127,254,255,255,255,255,255,255,253,191,249,159,249,159, + 113,142,3,192,32,16,64,34,1,0,1,128,1,128,3,0, + 0,192,7,0,0,224,14,0,0,112,28,0,0,56,56,0, + 0,28,112,0,0,14,255,255,255,255,255,255,255,255,112,0, + 0,14,56,0,0,28,28,0,0,56,14,0,0,112,7,0, + 0,224,3,0,0,192,1,128,1,128,29,16,64,32,1,0, + 1,128,0,0,3,0,0,0,6,0,0,0,14,0,0,0, + 28,0,0,0,56,0,0,0,112,0,0,0,255,255,255,248, + 255,255,255,248,112,0,0,0,56,0,0,0,28,0,0,0, + 14,0,0,0,6,0,0,0,3,0,0,0,1,128,0,0, + 16,27,54,20,2,0,1,128,3,192,7,224,15,240,29,184, + 57,156,113,142,225,135,193,131,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,29,16,64,32, + 2,0,0,0,12,0,0,0,14,0,0,0,7,0,0,0, + 3,128,0,0,1,192,0,0,0,224,0,0,0,112,255,255, + 255,248,255,255,255,248,0,0,0,112,0,0,0,224,0,0, + 1,192,0,0,3,128,0,0,7,0,0,0,14,0,0,0, + 12,0,16,27,54,20,2,0,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,193,131,225,135, + 113,142,57,156,29,184,15,240,7,224,3,192,1,128,9,10, + 20,13,2,13,28,0,99,0,65,0,128,128,128,128,128,128, + 128,128,65,0,99,0,28,0,16,22,44,18,1,0,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,255,255, + 255,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,0,0,0,0,255,255,255,255,12,9,18,13,1,15, + 28,112,28,112,60,240,56,224,113,192,113,192,227,128,195,0, + 130,0,16,21,42,18,1,0,224,0,248,0,62,0,15,128, + 1,224,0,120,0,30,0,7,0,7,0,30,0,120,1,224, + 7,128,30,0,120,0,224,0,128,0,0,0,0,0,255,255, + 255,255,16,16,32,18,1,1,192,3,224,7,112,14,56,28, + 28,56,14,112,7,224,3,192,3,192,7,224,14,112,28,56, + 56,28,112,14,224,7,192,3,19,10,30,23,1,4,28,3, + 192,63,15,224,99,156,0,193,248,0,192,240,0,192,240,0, + 193,248,0,99,156,0,127,15,224,28,3,192,14,27,54,16, + 1,0,30,0,63,128,32,224,0,112,0,48,0,24,0,24, + 0,24,0,28,0,28,0,28,15,28,31,252,56,124,120,60, + 112,60,240,56,224,56,224,56,224,56,224,112,224,112,96,96, + 112,224,57,192,31,128,15,0,11,12,24,15,2,4,14,0, + 63,128,127,192,127,192,255,224,255,224,255,224,255,224,127,192, + 127,192,63,128,14,0,16,13,26,18,1,2,1,128,3,192, + 3,192,1,128,0,0,255,255,255,255,0,0,0,0,1,128, + 3,192,3,192,1,128,17,19,57,18,1,255,0,12,0,0, + 24,0,0,24,0,0,48,0,0,48,0,255,255,128,255,255, + 128,0,192,0,0,192,0,1,128,0,1,128,0,3,0,0, + 255,255,128,255,255,128,6,0,0,12,0,0,12,0,0,24, + 0,0,24,0,0,17,12,36,18,0,3,255,255,128,255,255, + 128,0,0,0,0,0,0,0,0,0,255,255,128,255,255,128, + 0,0,0,0,0,0,0,0,0,255,255,128,255,255,128,16, + 9,18,18,1,4,28,0,127,135,225,254,64,56,0,0,28, + 0,127,135,225,254,192,56,26,4,16,33,3,0,96,12,1, + 128,240,30,3,192,240,30,3,192,96,12,1,128,2,34,34, + 20,9,249,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,32,2,8,32,0,7,255,255,255,255,255, + 255,255,255,18,21,63,21,1,0,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,16,0,192,112,0,192,255,255,192,255, + 255,192,112,0,0,16,0,0,16,22,44,27,5,0,0,32, + 96,96,240,126,240,127,248,127,124,63,60,15,62,12,31,24, + 31,152,55,240,115,240,97,240,225,240,240,248,240,124,120,62, + 124,30,124,31,60,15,124,7,252,6,18,27,81,22,1,254, + 7,240,0,31,254,0,63,255,128,56,63,128,96,7,0,96, + 7,0,64,6,0,64,12,0,64,12,0,96,28,0,48,28, + 0,28,14,0,14,14,0,0,15,0,0,7,0,0,7,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,192,60, + 1,128,255,1,128,159,195,0,7,254,0,3,248,0,0,240, + 0,23,24,72,26,1,0,15,128,192,63,225,240,97,247,248, + 192,252,124,128,120,62,128,120,28,128,56,56,192,56,112,224, + 56,192,120,57,192,62,59,192,14,57,224,6,56,224,6,56, + 224,0,56,240,0,56,240,0,56,112,0,112,112,0,112,112, + 0,96,120,30,192,122,63,128,62,47,128,60,6,0,16,23, + 26,78,32,5,249,0,192,0,1,192,0,3,0,112,6,3, + 252,6,14,30,12,24,30,28,48,14,24,96,14,56,192,30, + 57,128,30,59,0,30,62,0,28,62,48,60,60,120,56,30, + 112,120,62,64,240,47,65,224,111,99,192,71,63,0,199,0, + 0,135,0,0,131,0,0,131,0,0,199,0,0,102,0,0, + 60,0,0,22,23,69,25,1,0,0,252,0,3,255,0,15, + 3,192,28,0,224,56,0,112,50,1,48,103,3,152,99,135, + 24,193,134,8,192,204,12,192,120,12,192,48,12,192,120,12, + 192,204,12,193,134,12,99,135,24,103,3,152,50,1,48,56, + 0,112,28,0,224,15,3,192,3,255,0,0,252,0,22,23, + 69,25,1,0,0,252,0,3,255,0,15,3,192,28,48,224, + 24,48,96,48,48,48,96,48,24,96,48,24,96,48,24,192, + 48,12,192,48,12,223,255,236,223,255,236,192,48,12,192,48, + 12,96,48,24,96,48,24,48,48,48,56,48,112,28,48,224, + 15,3,192,3,255,0,0,252,0,24,24,72,27,1,0,0, + 126,2,3,255,198,7,129,238,14,0,124,24,0,56,48,0, + 124,112,0,238,96,1,198,96,3,134,192,7,3,192,14,3, + 192,28,3,192,56,3,192,112,3,192,224,3,97,192,6,99, + 128,6,119,0,14,62,0,12,28,0,24,62,0,112,119,129, + 224,227,255,192,192,126,0,22,17,51,25,1,0,0,252,0, + 3,255,0,15,3,192,28,0,224,56,0,112,48,0,48,96, + 0,24,96,0,24,192,0,12,192,0,12,192,0,12,192,0, + 12,192,0,12,192,0,12,192,0,12,192,0,12,192,0,12, + 22,17,51,25,1,0,192,0,12,192,0,12,192,0,12,192, + 0,12,192,0,12,192,0,12,192,0,12,192,0,12,192,0, + 12,96,0,24,96,0,24,48,0,48,56,0,112,28,0,224, + 15,3,192,3,255,0,0,252,0,21,16,48,23,1,0,255, + 255,0,255,255,192,0,1,224,0,0,112,0,0,48,0,0, + 56,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,48,0,0,112,0,0,224,255,255,192,255,255,0,21, + 20,60,23,1,252,255,255,0,255,255,192,0,0,224,0,0, + 112,0,0,48,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,48,0,0,112,0,0,224,255, + 255,192,255,255,0,0,0,0,0,0,0,255,255,240,255,255, + 240,21,20,60,23,1,254,0,0,96,0,0,192,7,255,248, + 15,255,248,56,1,128,112,3,0,96,3,0,224,6,0,192, + 6,0,192,12,0,192,12,0,192,24,0,224,24,0,96,48, + 0,112,48,0,60,96,0,31,255,248,7,255,248,0,192,0, + 1,128,0,21,16,48,23,1,0,7,255,248,31,255,248,56, + 0,0,112,0,0,96,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,224,0,0,96,0,0,112,0,0, + 60,0,0,31,255,248,7,255,248,21,20,60,23,1,252,7, + 255,248,31,255,248,56,0,0,112,0,0,96,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 96,0,0,112,0,0,56,0,0,31,255,248,7,255,248,0, + 0,0,0,0,0,127,255,248,127,255,248,15,16,32,23,1, + 0,7,254,31,254,56,0,112,0,96,0,192,0,192,0,255, + 254,255,254,192,0,192,0,96,0,112,0,56,0,31,254,7, + 254,15,20,40,23,1,254,0,24,0,24,7,254,31,254,56, + 96,112,96,96,192,64,192,193,128,255,254,255,254,195,0,70, + 0,110,0,124,0,60,0,31,254,55,254,48,0,32,0,22, + 22,66,25,1,0,0,0,12,0,0,28,0,0,56,0,0, + 112,0,0,224,0,1,192,0,3,128,0,7,0,0,14,0, + 0,28,0,0,56,0,0,112,0,0,96,0,0,192,0,1, + 128,0,3,0,0,7,0,0,14,0,0,28,0,0,56,0, + 0,127,255,248,255,255,248,20,24,72,23,1,0,255,255,240, + 127,255,240,120,0,48,120,0,32,60,0,96,60,0,64,28, + 0,192,30,0,192,30,1,128,15,1,128,15,1,0,7,3, + 0,7,130,0,7,134,0,3,196,0,3,204,0,3,204,0, + 1,248,0,1,248,0,0,240,0,0,240,0,0,224,0,0, + 96,0,0,64,0,21,22,66,25,2,0,1,252,0,7,7, + 0,12,1,192,24,0,192,51,248,96,97,142,48,65,134,16, + 193,134,24,193,134,24,129,140,8,129,248,8,129,184,8,129, + 152,8,193,156,24,193,142,24,65,135,16,103,195,176,48,0, + 96,24,0,192,28,1,192,7,7,0,1,252,0,21,23,69, + 25,2,0,1,252,0,7,207,0,14,1,128,24,0,192,48, + 0,96,48,0,48,96,125,48,65,199,16,195,3,24,195,1, + 24,134,0,8,134,0,8,134,0,8,134,0,8,134,0,8, + 199,0,24,67,3,24,97,199,16,32,252,48,48,0,96,28, + 0,192,7,135,128,1,254,0,27,13,52,29,1,10,255,220, + 1,224,204,206,3,128,140,78,3,128,12,15,7,128,12,11, + 5,128,12,11,141,128,12,9,141,128,12,9,201,128,12,8, + 217,128,12,8,241,128,12,8,113,128,12,8,97,128,62,30, + 39,224,25,27,108,27,1,0,255,255,255,128,63,255,254,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,63,0,126,0, + 255,193,255,128,17,27,81,18,0,0,0,0,128,0,0,128, + 0,0,128,0,0,128,0,1,128,0,1,0,0,1,0,0, + 3,0,0,2,0,8,2,0,56,2,0,236,6,0,12,4, + 0,6,4,0,6,4,0,3,4,0,3,12,0,1,140,0, + 1,136,0,0,200,0,0,200,0,0,104,0,0,120,0,0, + 56,0,0,48,0,0,16,0,0,16,0,3,3,3,8,2, + 7,224,224,224,21,10,30,23,1,0,255,255,248,255,255,248, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,16,15,30,20,2,0,1,128, + 1,128,3,192,3,192,6,96,14,112,12,48,28,56,24,24, + 48,12,48,12,96,6,224,7,192,3,128,1,16,15,30,20, + 2,0,128,1,192,3,224,7,96,6,48,12,48,12,24,24, + 28,56,12,48,6,96,6,96,3,192,3,192,1,128,1,128, + 32,18,72,34,1,0,0,128,1,0,1,128,1,128,3,0, + 0,192,6,0,0,96,15,255,255,240,31,255,255,248,56,0, + 0,28,112,0,0,14,224,0,0,7,224,0,0,7,112,0, + 0,14,56,0,0,28,31,255,255,248,15,255,255,240,6,0, + 0,96,3,0,0,192,1,128,1,128,0,128,1,0,29,17, + 68,32,1,0,0,128,0,0,1,128,0,0,3,0,0,0, + 6,0,0,0,15,255,255,248,31,255,255,248,56,0,0,0, + 112,0,0,0,224,0,0,0,112,0,0,0,56,0,0,0, + 31,255,255,248,15,255,255,248,6,0,0,0,3,0,0,0, + 1,128,0,0,0,128,0,0,17,27,81,20,1,0,0,128, + 0,1,192,0,3,224,0,7,112,0,14,56,0,28,28,0, + 60,30,0,124,31,0,236,27,128,12,24,0,12,24,0,12, + 24,0,12,24,0,12,24,0,12,24,0,12,24,0,12,24, + 0,12,24,0,12,24,0,12,24,0,12,24,0,12,24,0, + 12,24,0,12,24,0,12,24,0,12,24,0,12,24,0,29, + 17,68,32,2,0,0,0,8,0,0,0,12,0,0,0,6, + 0,0,0,3,0,255,255,255,128,255,255,255,192,0,0,0, + 224,0,0,0,112,0,0,0,56,0,0,0,112,0,0,0, + 224,255,255,255,192,255,255,255,128,0,0,3,0,0,0,6, + 0,0,0,12,0,0,0,8,0,17,27,81,20,1,0,12, + 24,0,12,24,0,12,24,0,12,24,0,12,24,0,12,24, + 0,12,24,0,12,24,0,12,24,0,12,24,0,12,24,0, + 12,24,0,12,24,0,12,24,0,12,24,0,12,24,0,12, + 24,0,12,24,0,236,27,128,124,31,0,60,30,0,28,28, + 0,14,56,0,7,112,0,3,224,0,1,192,0,0,128,0, + 14,25,50,16,1,0,3,0,7,128,7,128,12,192,12,192, + 24,96,24,96,48,48,48,48,96,24,96,24,192,12,192,12, + 224,28,96,24,96,24,48,48,48,48,24,96,24,96,12,192, + 12,192,7,128,7,128,3,0,9,30,60,11,1,250,1,128, + 3,0,3,0,6,0,6,0,14,0,12,0,28,0,24,0, + 56,0,48,0,48,0,96,0,96,0,192,0,192,0,96,0, + 96,0,48,0,48,0,56,0,24,0,28,0,12,0,14,0, + 6,0,6,0,3,0,3,0,1,128,21,22,66,26,2,0, + 1,252,0,7,15,0,12,1,128,24,0,192,48,0,96,99, + 254,48,67,6,16,195,3,24,195,3,24,195,3,24,131,6, + 8,131,252,8,131,6,8,195,3,24,195,3,24,67,3,16, + 99,3,48,32,0,32,48,0,96,28,1,192,7,15,0,3, + 252,0,21,23,69,26,2,0,1,252,0,7,223,0,14,3, + 128,24,0,192,48,0,96,32,0,32,96,252,48,65,206,16, + 195,6,24,195,3,24,194,0,8,134,0,8,134,0,8,134, + 0,8,134,3,24,195,3,24,67,6,24,97,206,48,32,248, + 48,48,0,96,28,0,192,15,135,128,3,254,0,22,13,39, + 25,1,10,255,56,28,24,56,28,24,56,28,24,60,60,24, + 60,60,24,52,44,24,54,108,24,54,108,24,50,76,24,51, + 204,24,51,204,24,49,140,24,49,140,21,28,84,23,1,255, + 255,255,224,120,3,224,124,0,96,60,0,96,30,0,32,15, + 0,0,15,128,0,7,128,0,3,192,0,3,224,0,1,240, + 0,0,240,0,0,120,0,0,120,0,0,56,0,0,48,0, + 0,96,0,0,192,0,1,128,0,3,128,0,3,0,0,6, + 0,8,12,0,24,24,0,24,48,0,48,127,255,240,127,255, + 240,255,255,240,13,34,68,13,1,249,0,24,0,120,0,224, + 1,192,3,128,3,0,6,0,12,0,12,0,24,0,24,0, + 56,0,48,0,48,0,48,0,96,0,96,0,96,0,96,0, + 96,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,2,34, + 34,13,1,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,34,68,13,1,249,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,0,96,0,96,0, + 96,0,48,0,48,0,48,0,56,0,24,0,24,0,12,0, + 12,0,6,0,3,0,3,128,1,192,0,224,0,120,0,24, + 11,34,68,13,0,249,255,224,255,224,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,2,34,34,13,0,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,11,34,68,13,0,249,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,255,224,255,224,8,34,34,16, + 6,249,7,31,56,112,96,96,224,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,9,34,68,16,255,249,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 3,0,3,0,6,0,12,0,56,0,224,0,120,0,12,0, + 6,0,3,0,3,0,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,8,34, + 34,16,6,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 96,96,112,56,31,7,2,34,34,16,6,249,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,255,9, + 30,60,11,1,250,192,0,96,0,96,0,48,0,48,0,56, + 0,24,0,28,0,12,0,14,0,6,0,6,0,3,0,3, + 0,1,128,1,128,3,0,3,0,6,0,6,0,14,0,12, + 0,28,0,24,0,56,0,48,0,48,0,96,0,96,0,192, + 0,9,33,66,9,0,250,3,0,7,128,7,128,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,248,0,248,0,112,0,12,34,68,23,10,249,1, + 224,3,240,6,112,12,240,8,96,24,0,24,0,48,0,48, + 0,48,0,112,0,96,0,96,0,96,0,96,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,3,34,34,22,10,249,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,12,34,68,22,1, + 249,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,96,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,1,128,1,128,97,0,243,0,230, + 0,252,0,120,0,13,34,68,13,0,249,192,0,240,0,56, + 0,24,0,12,0,6,0,3,0,1,0,1,128,0,192,0, + 192,0,192,0,96,0,96,0,96,0,48,0,48,0,48,0, + 48,0,48,0,16,0,16,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,2, + 34,34,13,11,249,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,13,34,68,13,0,249,0,24,0, + 24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,16,0,16,0,48,0,48,0,48,0, + 48,0,48,0,96,0,96,0,96,0,192,0,192,0,192,1, + 128,1,0,3,0,6,0,12,0,28,0,56,0,240,0,192, + 0,11,34,68,13,1,249,255,224,255,224,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,2,34,34,13,10, + 249,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,11,34,68,13,1,249,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,255,224,255,224,8,34,34, + 16,0,249,224,120,28,14,6,6,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,9,34,68,16,6,249,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,96,0,96,0,48,0,24,0,14,0,3,128,14,0,24, + 0,48,0,96,0,96,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,8, + 33,33,16,0,250,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 6,6,14,28,120,224,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=27 h=33 x=15 y=26 dx=29 dy= 0 ascent=27 len=92 + Font Bounding box w=40 h=34 x=-5 y=-7 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb24r[5335] U8G_SECTION(".progmem.u8g_font_symb24r") = { + 0,40,34,251,249,23,5,133,13,247,32,127,249,27,249,23, + 249,0,0,0,8,0,1,4,23,23,11,4,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,0,0,0, + 96,240,240,96,20,24,72,23,1,0,192,0,48,192,0,48, + 192,0,96,96,0,96,96,0,96,48,0,192,48,0,192,63, + 255,192,31,255,128,24,1,128,12,3,0,12,3,0,12,3, + 0,6,6,0,6,6,0,3,12,0,3,12,0,3,12,0, + 1,152,0,1,152,0,0,240,0,0,240,0,0,240,0,0, + 96,0,14,23,46,16,1,0,6,48,6,48,6,48,6,48, + 12,96,12,96,12,96,127,252,127,252,12,96,12,96,12,96, + 24,192,24,192,24,192,255,248,255,248,24,192,24,192,49,128, + 49,128,49,128,49,128,15,24,48,18,0,0,255,254,255,254, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,63,254,63,254,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,255,254,255,254,23,23,69,27, + 2,255,7,192,96,30,225,192,60,63,192,56,33,128,112,33, + 128,112,35,0,240,98,0,224,70,0,224,204,0,224,204,0, + 97,152,0,119,16,124,62,48,238,0,97,198,0,99,130,0, + 199,2,0,135,2,1,142,6,3,14,4,3,14,12,6,14, + 24,14,7,48,12,3,224,23,22,66,25,1,0,0,248,0, + 3,140,0,3,6,0,7,6,0,7,6,0,7,6,0,7, + 12,0,7,152,0,3,241,252,3,192,112,7,192,96,29,224, + 96,56,240,192,112,240,128,96,121,128,224,63,0,224,30,0, + 224,31,0,240,31,130,248,55,238,127,227,252,31,128,248,12, + 17,34,14,1,0,126,0,127,128,7,192,1,224,0,224,0, + 240,0,112,0,112,63,240,63,240,0,112,0,112,0,224,1, + 224,3,192,255,0,124,0,8,29,29,11,2,250,3,7,6, + 12,24,48,48,112,112,96,96,224,224,224,224,224,224,224,96, + 96,112,112,48,48,24,12,6,7,3,8,29,29,11,1,250, + 192,224,96,48,24,12,12,14,14,6,6,7,7,7,7,7, + 7,7,6,6,14,14,12,12,24,48,96,224,192,11,14,28, + 16,2,4,4,0,14,0,14,0,196,96,228,224,127,192,31, + 0,31,0,127,192,228,224,196,96,14,0,14,0,4,0,16, + 18,36,18,1,0,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,4,9,9,8,2,251,96, + 240,240,240,16,48,96,224,192,17,2,6,18,0,8,255,255, + 128,255,255,128,4,4,4,8,2,0,96,240,240,96,7,22, + 22,9,1,0,2,2,6,6,4,12,12,8,24,24,16,48, + 48,32,32,96,64,64,192,192,128,128,14,23,46,16,1,0, + 15,192,28,224,56,112,48,48,112,56,112,56,96,24,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 96,24,112,56,112,56,48,48,56,112,28,224,15,192,9,23, + 46,16,4,0,4,0,28,0,252,0,220,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,62,0, + 255,128,14,23,46,16,1,0,15,128,31,192,63,224,97,240, + 192,240,192,112,128,112,0,112,0,112,0,96,0,96,0,192, + 0,192,1,128,3,0,3,0,6,0,12,0,24,0,48,12, + 112,24,127,248,255,240,13,23,46,16,1,0,15,128,63,224, + 113,224,64,224,192,96,128,96,0,96,0,192,0,192,1,128, + 7,192,15,224,1,240,0,112,0,120,0,56,0,56,0,56, + 0,48,0,48,96,96,121,192,127,128,15,23,46,16,0,0, + 0,48,0,112,0,112,0,240,1,240,1,240,3,112,6,112, + 6,112,12,112,24,112,24,112,48,112,32,112,96,112,192,112, + 255,254,255,254,0,112,0,112,0,112,0,112,0,112,13,23, + 46,16,1,0,15,248,15,240,31,240,16,0,48,0,32,0, + 126,0,127,128,127,192,15,224,3,224,0,240,0,112,0,112, + 0,112,0,48,0,48,0,48,0,112,0,96,224,192,251,128, + 254,0,14,23,46,16,1,0,0,56,1,224,3,128,7,0, + 14,0,28,0,56,0,56,0,112,0,119,192,255,240,240,120, + 224,56,224,60,224,28,224,28,224,28,224,28,112,28,112,56, + 56,56,28,112,15,192,13,23,46,16,1,0,127,248,127,248, + 127,248,192,24,128,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,192,1,128,1,128,1,128,3,0, + 3,0,3,0,6,0,6,0,6,0,12,23,46,16,2,0, + 31,128,113,192,96,224,224,96,192,96,224,96,224,224,112,192, + 121,192,63,0,31,0,31,128,63,192,115,192,96,224,224,240, + 192,112,192,112,224,112,224,112,96,96,121,192,31,128,14,23, + 46,16,1,0,15,128,56,224,48,112,96,56,224,56,224,56, + 224,60,224,28,224,28,224,28,240,28,112,28,120,124,63,252, + 15,56,0,56,0,112,0,240,0,224,1,192,7,128,30,0, + 112,0,4,15,15,9,2,0,96,240,240,96,0,0,0,0, + 0,0,0,96,240,240,96,4,20,20,9,3,251,96,240,240, + 96,0,0,0,0,0,0,0,96,240,240,240,16,48,96,224, + 192,16,16,32,18,1,1,0,7,0,31,0,124,1,240,7, + 128,30,0,120,0,224,0,224,0,120,0,30,0,7,128,1, + 240,0,124,0,31,0,7,17,8,24,18,0,5,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,16,16,32,18,1,1,224,0,248,0,62, + 0,15,128,1,224,0,120,0,30,0,7,0,7,0,30,0, + 120,1,224,15,128,62,0,248,0,224,0,11,23,46,14,2, + 0,63,0,99,128,193,192,192,224,192,224,224,224,192,224,1, + 224,1,192,1,128,3,128,3,0,6,0,6,0,4,0,4, + 0,4,0,0,0,0,0,12,0,30,0,30,0,12,0,17, + 16,48,18,0,0,30,1,0,63,195,128,96,255,0,64,28, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,21,23,69,23,0,0,0,32,0,0,112, + 0,0,112,0,0,112,0,0,248,0,0,248,0,0,188,0, + 1,188,0,1,156,0,3,30,0,3,14,0,2,15,0,6, + 15,0,6,7,0,12,7,128,15,255,128,8,3,128,24,3, + 192,24,1,192,48,1,224,48,1,224,112,1,240,252,7,248, + 18,23,69,22,1,0,255,224,0,63,254,0,28,31,0,28, + 7,0,28,7,128,28,7,128,28,7,128,28,7,128,28,7, + 0,28,15,0,28,62,0,31,248,0,28,31,0,28,7,128, + 28,3,128,28,3,192,28,3,192,28,3,192,28,3,192,28, + 7,128,28,15,128,63,255,0,255,248,0,22,23,69,23,0, + 0,255,195,252,63,0,224,31,0,192,15,1,192,7,129,128, + 7,195,0,3,198,0,1,230,0,1,236,0,0,248,0,0, + 120,0,0,120,0,0,124,0,0,222,0,1,158,0,1,143, + 0,3,15,128,6,7,128,14,3,192,12,3,224,24,1,224, + 56,1,240,254,7,252,19,22,66,20,0,0,0,96,0,0, + 96,0,0,240,0,0,240,0,0,240,0,1,248,0,1,56, + 0,3,60,0,2,60,0,6,28,0,4,30,0,12,14,0, + 12,15,0,8,15,0,24,7,0,16,7,128,48,3,128,32, + 3,192,96,3,192,64,1,192,255,255,224,255,255,224,18,23, + 69,20,1,0,255,255,128,63,255,128,28,3,128,28,1,128, + 28,1,128,28,0,0,28,0,0,28,2,0,28,2,0,28, + 2,0,28,14,0,31,254,0,28,6,0,28,2,0,28,2, + 0,28,0,0,28,0,0,28,0,64,28,0,64,28,0,192, + 28,1,192,63,255,128,255,255,128,23,23,69,25,1,0,1, + 255,0,0,124,0,0,56,0,0,56,0,7,255,192,31,57, + 240,60,56,120,120,56,60,120,56,60,240,56,30,240,56,30, + 240,56,30,240,56,30,240,56,30,120,56,28,120,56,60,60, + 56,120,31,57,240,7,255,192,0,56,0,0,56,0,0,124, + 0,1,255,0,18,23,69,20,1,0,255,255,128,63,255,192, + 60,1,192,28,0,192,28,0,64,28,0,64,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,62,0,0,255,128,0,22, + 23,69,24,1,0,255,135,252,62,1,240,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 28,0,224,28,0,224,31,255,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,62,1,240,255,135,252,9,23,46,11,1,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,20,23, + 69,20,0,0,0,120,0,0,220,0,0,134,0,0,135,0, + 0,131,0,0,195,128,0,67,128,28,99,128,62,57,128,126, + 29,128,199,7,128,199,1,224,6,1,176,14,1,128,14,1, + 128,14,1,128,14,3,128,14,3,0,14,3,0,14,7,0, + 7,6,0,3,156,0,1,248,0,22,23,69,23,1,0,255, + 143,240,62,3,192,28,3,128,28,3,0,28,6,0,28,12, + 0,28,24,0,28,48,0,28,96,0,29,192,0,31,224,0, + 31,224,0,30,240,0,28,120,0,28,124,0,28,62,0,28, + 31,0,28,15,128,28,7,128,28,3,192,28,1,224,62,1, + 240,255,143,252,21,22,66,22,0,0,0,32,0,0,48,0, + 0,112,0,0,112,0,0,248,0,0,248,0,0,188,0,1, + 188,0,1,156,0,1,30,0,3,14,0,3,15,0,2,15, + 0,6,7,0,6,7,128,12,3,128,12,3,192,8,3,192, + 24,1,192,24,1,224,56,1,240,254,7,248,27,23,92,29, + 1,0,254,0,15,224,30,0,15,128,31,0,15,0,31,0, + 31,0,31,0,31,0,31,128,55,0,27,128,55,0,27,192, + 39,0,27,192,103,0,25,224,103,0,25,224,199,0,24,224, + 199,0,24,240,135,0,24,113,135,0,24,121,135,0,24,123, + 7,0,24,63,7,0,24,63,7,0,24,30,7,0,24,30, + 7,0,24,12,7,0,56,12,15,128,255,12,63,224,22,23, + 69,23,1,0,252,3,252,62,0,96,30,0,96,31,0,96, + 31,128,96,31,192,96,27,192,96,25,224,96,25,240,96,24, + 240,96,24,120,96,24,60,96,24,60,96,24,30,96,24,15, + 96,24,15,224,24,7,224,24,3,224,24,1,224,24,1,224, + 24,0,224,56,0,96,255,0,32,22,23,69,23,1,0,1, + 254,0,7,135,128,14,1,192,28,0,224,60,0,240,120,0, + 112,120,0,120,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,120, + 0,120,56,0,112,60,0,240,28,0,224,14,1,192,7,207, + 128,1,254,0,23,23,69,25,1,0,255,255,254,63,255,248, + 28,0,112,28,0,112,28,0,112,28,0,112,28,0,112,28, + 0,112,28,0,112,28,0,112,28,0,112,28,0,112,28,0, + 112,28,0,112,28,0,112,28,0,112,28,0,112,28,0,112, + 28,0,112,28,0,112,28,0,112,62,0,248,255,131,254,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,60,0,240,56,0,112,120,0,120,112,0,56,112,0,56, + 242,1,60,243,3,60,243,255,60,243,255,60,243,3,60,242, + 1,60,112,0,56,112,0,56,120,0,120,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,240,0,63,254,0,28,15,0,28,7,128,28,7,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,7,128,28,7, + 0,30,62,0,31,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,18,23,69,19,1,0,255,255,0,255,255, + 0,120,3,0,60,1,0,62,1,128,30,0,0,15,0,0, + 7,128,0,7,192,0,3,192,0,1,224,0,0,192,0,1, + 192,0,1,128,0,3,0,0,6,0,0,12,0,64,28,0, + 192,24,0,128,48,1,128,127,255,128,255,255,128,255,255,128, + 19,23,69,20,1,0,255,255,224,248,227,224,192,224,224,192, + 224,96,128,224,32,128,224,32,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,1,240,0,7,252,0,23,23,69,23,0, + 0,255,193,254,62,0,112,31,0,96,15,0,224,15,128,192, + 7,129,128,3,193,128,3,227,0,1,227,0,0,246,0,0, + 252,0,0,124,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,124,0,1,255,0,13,24,48,14,1,249,3,224,15,240, + 31,240,48,0,96,0,64,0,192,0,192,0,128,0,128,0, + 128,0,192,0,192,0,240,0,127,240,63,240,31,248,0,24, + 0,8,0,8,0,24,7,240,7,240,7,192,23,23,69,25, + 1,0,0,254,0,3,131,128,14,0,224,30,0,240,28,0, + 112,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 120,0,60,120,0,60,120,0,60,56,0,56,60,0,120,28, + 0,112,14,0,224,7,1,192,129,131,2,192,130,6,255,199, + 254,255,199,254,255,199,254,19,23,69,21,1,0,127,255,192, + 127,255,192,127,255,192,96,0,192,64,0,64,0,0,0,0, + 0,0,0,0,0,8,2,0,12,6,0,15,254,0,15,254, + 0,15,254,0,8,2,0,8,2,0,0,0,0,0,0,0, + 192,0,96,192,0,96,64,0,64,127,255,192,127,255,192,127, + 255,192,25,23,92,26,0,0,224,255,131,128,112,62,7,0, + 56,28,14,0,56,28,14,0,60,28,30,0,60,28,30,0, + 60,28,30,0,60,28,30,0,60,28,30,0,28,28,28,0, + 30,28,60,0,15,156,248,0,3,255,224,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,62,0,0, + 0,255,128,0,19,23,69,20,1,0,127,255,192,120,3,192, + 96,7,128,96,15,0,64,15,0,64,30,0,0,62,0,0, + 60,0,0,120,0,0,248,0,0,240,0,1,224,0,1,224, + 0,3,192,0,7,192,0,7,128,0,15,0,0,31,0,32, + 30,0,32,62,0,96,60,0,224,120,3,192,255,255,192,7, + 28,28,11,3,251,254,224,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 254,17,16,48,28,5,0,1,224,0,1,224,0,1,224,0, + 1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,240,7,128,240,7, + 128,240,7,128,240,7,128,7,28,28,11,1,251,254,14,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,14,254,20,23,69,21,1,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,255,255, + 240,255,255,240,16,2,4,16,0,249,255,255,255,255,20,1, + 3,17,15,26,255,255,240,19,17,51,20,1,0,15,193,128, + 28,225,128,56,51,128,112,19,128,112,23,0,240,31,0,224, + 15,0,224,14,0,224,14,0,224,14,0,224,28,0,240,30, + 0,240,30,32,112,58,32,120,115,224,60,225,192,15,193,192, + 14,32,64,18,2,249,15,128,25,224,48,224,112,112,96,112, + 96,112,96,112,96,112,96,112,96,96,103,192,103,224,96,112, + 96,56,96,56,96,60,96,28,96,28,96,28,96,28,96,28, + 96,56,120,120,111,240,99,192,96,0,96,0,96,0,96,0, + 224,0,224,0,224,0,17,25,75,18,0,249,24,0,0,60, + 14,0,126,14,0,70,30,0,194,28,0,195,60,0,3,56, + 0,1,112,0,1,112,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,128,0,7,192,0,7,192,0,15,64,0,14, + 64,0,30,96,0,28,97,128,60,97,128,56,51,0,120,63, + 0,112,62,0,112,30,0,14,25,50,16,1,0,15,128,31, + 224,48,240,32,120,48,48,56,0,28,0,14,0,7,128,3, + 192,7,240,28,240,56,120,112,56,240,60,224,28,224,28,224, + 28,224,28,240,28,240,56,112,56,120,112,31,224,7,128,12, + 18,36,14,1,255,31,128,57,224,112,224,224,224,224,64,224, + 0,112,0,120,0,31,128,120,0,240,0,224,0,224,0,224, + 16,240,48,120,48,63,224,15,128,15,30,60,17,1,249,1, + 0,1,0,1,0,1,0,1,0,1,0,15,192,29,112,57, + 56,113,28,113,28,225,30,225,14,225,14,225,14,225,14,225, + 14,241,14,113,12,113,28,57,24,29,112,7,224,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,15,24,48,13,254, + 249,56,14,124,14,124,14,198,28,134,28,130,28,3,56,3, + 56,1,48,1,48,1,96,1,224,1,192,0,192,0,192,1, + 128,1,192,1,192,3,192,3,192,3,192,3,192,3,128,1, + 128,17,24,72,20,0,249,24,56,0,124,254,0,223,222,0, + 207,15,0,143,7,0,14,7,0,14,7,0,14,7,0,14, + 7,0,14,7,0,14,7,0,14,7,0,14,7,0,14,7, + 0,14,7,0,14,7,0,14,7,0,0,7,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,3,0,0,3,128,10, + 17,34,11,0,0,4,0,124,0,252,0,60,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 64,28,192,15,192,15,0,18,24,72,20,1,249,6,60,0, + 30,126,0,56,255,0,112,199,128,112,195,128,240,195,192,224, + 193,192,224,193,192,224,193,192,224,193,192,240,193,192,240,193, + 128,112,195,128,120,195,0,56,199,0,30,220,0,7,248,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,17,17,51,18,1,0,8,7,0,248,31, + 128,248,63,128,56,99,0,24,192,0,25,128,0,27,0,0, + 31,128,0,31,128,0,27,192,0,25,224,0,24,240,0,24, + 240,0,24,120,0,24,60,0,24,62,0,24,127,128,17,25, + 75,18,1,0,56,0,0,124,0,0,126,0,0,198,0,0, + 195,0,0,131,0,0,1,0,0,1,0,0,1,128,0,3, + 128,0,3,128,0,7,128,0,7,192,0,15,192,0,14,192, + 0,30,64,0,28,96,0,28,96,0,56,96,0,56,96,128, + 112,48,128,112,57,128,224,63,0,224,31,0,224,14,0,17, + 24,72,19,1,249,112,56,0,112,56,0,112,56,0,112,56, + 0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0, + 112,56,0,112,56,0,112,56,0,112,120,0,120,120,128,127, + 253,128,127,159,128,110,30,0,96,0,0,96,0,0,96,0, + 0,224,0,0,224,0,0,224,0,0,96,0,0,16,17,34, + 17,255,0,24,6,248,7,60,7,28,7,28,7,30,6,14, + 6,14,12,7,12,7,24,7,152,3,176,3,160,1,224,1, + 192,1,192,0,128,15,17,34,18,1,0,7,192,28,112,48, + 56,112,60,112,28,224,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,28,56,56,30,112,15,224,17,17,51, + 18,0,0,15,255,128,63,255,128,63,255,128,102,56,0,198, + 56,0,6,48,0,6,48,0,6,48,0,6,48,0,6,48, + 0,4,48,0,12,48,0,12,48,128,28,57,128,60,63,0, + 60,31,0,56,30,0,14,23,46,17,1,0,7,128,28,224, + 24,112,48,48,112,56,112,56,240,60,224,28,224,28,224,28, + 224,28,255,252,255,252,224,28,224,28,224,28,224,28,112,56, + 112,56,112,56,56,112,28,224,15,192,14,25,50,18,2,249, + 7,192,31,224,48,240,96,120,96,120,224,60,224,60,224,28, + 224,28,224,28,224,28,224,24,224,24,224,56,240,112,248,224, + 239,192,231,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,18,18,54,20,1,0,3,255,192,15,255,192,63,255, + 192,124,48,0,120,24,0,240,28,0,240,14,0,224,15,0, + 224,7,0,224,7,0,240,7,0,112,7,0,112,15,0,56, + 14,0,60,30,0,30,56,0,7,240,0,1,192,0,14,17, + 34,14,0,0,15,252,63,252,63,252,99,128,195,128,195,128, + 3,0,3,0,3,0,3,0,3,0,3,8,3,136,3,152, + 3,248,1,240,1,224,17,18,54,19,0,0,0,16,0,60, + 24,0,124,28,0,252,6,0,206,7,0,142,3,0,14,3, + 0,14,3,128,14,3,128,14,3,128,14,3,128,14,3,128, + 14,3,0,14,7,0,7,7,0,7,14,0,3,156,0,1, + 248,0,21,19,57,23,0,0,31,255,248,63,255,248,127,255, + 248,231,131,128,222,0,192,60,0,224,56,56,112,120,56,112, + 120,56,56,120,56,56,112,56,56,112,56,56,112,56,56,112, + 16,56,120,16,56,120,56,112,56,40,112,28,236,224,15,135, + 192,20,17,51,22,1,0,15,14,0,28,7,128,56,1,192, + 112,97,224,112,224,224,224,224,240,224,224,240,224,224,112,224, + 224,112,224,224,112,224,224,112,224,64,112,224,224,240,112,224, + 224,113,177,224,63,31,192,30,15,0,14,33,66,16,1,249, + 48,0,96,192,99,224,103,192,63,128,24,0,48,0,32,0, + 32,0,48,0,49,240,31,240,31,224,48,0,96,0,64,0, + 192,0,128,0,128,0,128,0,192,0,192,0,248,0,127,240, + 63,252,31,252,0,12,0,4,0,4,0,12,3,248,3,248, + 1,224,22,24,72,22,0,249,240,48,60,120,48,120,60,48, + 240,28,48,224,28,48,224,28,48,224,28,48,224,28,48,224, + 30,48,224,30,49,224,30,49,224,14,49,192,14,49,192,6, + 49,192,7,51,128,3,183,0,1,254,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 13,32,64,16,2,249,24,0,56,112,48,240,51,224,63,192, + 14,0,12,0,24,0,16,0,48,0,32,0,96,0,64,0, + 64,0,192,0,192,0,192,0,192,0,192,0,224,0,96,0, + 127,192,63,240,31,248,15,248,0,24,0,8,0,8,0,24, + 3,248,7,240,3,224,11,29,58,16,2,250,7,224,14,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,28,0,28,0,112,0,192,0,112,0,28,0,28,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,14,0,7,224,2,28,28,7,2,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,29,58,16,2,250,252,0, + 14,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,7,0,7,0,1,192,0,96,1,192,7,0, + 7,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,14,0,252,0,15,4,8,18,1,7,24,0, + 127,134,227,254,192,56,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--11-80-100-100-P-57-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=11 x= 1 y= 6 dx=11 dy= 0 ascent=10 len=18 + Font Bounding box w=13 h=18 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-3 + X Font ascent = 7 descent=-3 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB08[2551] U8G_SECTION(".progmem.u8g_font_timB08") = { + 0,13,18,254,251,7,1,164,3,77,32,255,253,10,253,7, + 253,0,0,0,2,0,1,2,7,7,4,1,0,192,192,192, + 192,0,192,192,3,3,3,5,1,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,9,9,5,0,255, + 32,112,184,224,96,48,184,112,32,7,7,7,9,1,0,118, + 220,232,16,46,90,156,7,7,7,9,1,0,48,104,104,118, + 220,204,118,1,3,3,3,1,4,128,128,128,3,10,10,3, + 255,253,32,96,64,192,192,192,192,64,96,32,3,10,10,4, + 0,253,128,192,64,96,96,96,96,64,192,128,5,5,5,6, + 0,2,32,248,112,248,32,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,4,1,255,192,192,64,3,1,1,3,0, + 2,224,2,2,2,3,0,0,192,192,3,7,7,3,0,0, + 32,32,96,64,192,128,128,4,7,7,5,0,0,96,208,208, + 208,208,208,96,4,7,7,5,0,0,96,224,96,96,96,96, + 240,4,7,7,5,0,0,96,240,48,32,64,240,240,4,7, + 7,5,0,0,96,176,48,96,48,176,224,5,7,7,5,0, + 0,16,48,80,144,248,48,48,4,7,7,5,0,0,224,224, + 128,224,48,176,224,4,7,7,5,0,0,48,96,192,240,208, + 208,96,5,7,7,5,0,0,120,240,144,48,32,96,96,4, + 7,7,5,0,0,96,208,208,96,176,176,96,4,7,7,5, + 0,0,96,176,176,176,112,48,224,2,5,5,4,1,0,192, + 192,0,192,192,2,6,6,4,1,255,192,192,0,192,192,64, + 5,5,5,6,0,0,24,112,192,112,24,5,3,3,6,0, + 1,248,0,248,5,5,5,6,0,0,192,112,24,112,192,4, + 7,7,6,1,0,96,176,176,32,0,96,96,10,9,18,11, + 0,254,31,0,48,128,109,64,218,64,210,64,210,128,205,0, + 96,0,62,0,8,7,7,7,255,0,16,24,56,44,124,78, + 239,6,7,7,7,0,0,248,108,108,120,108,108,248,6,7, + 7,7,0,0,124,204,192,192,192,236,120,7,7,7,8,0, + 0,252,102,102,102,102,102,252,6,7,7,7,0,0,252,100, + 96,120,96,100,252,6,7,7,7,0,0,252,100,104,120,104, + 96,240,6,7,7,7,0,0,124,204,192,220,204,204,120,8, + 7,7,9,0,0,231,102,102,126,102,102,231,4,7,7,5, + 0,0,240,96,96,96,96,96,240,5,8,8,5,0,255,120, + 48,48,48,48,48,176,224,7,7,7,8,0,0,238,100,104, + 120,108,110,230,6,7,7,7,0,0,240,96,96,96,100,108, + 252,9,7,14,10,0,0,243,128,119,0,91,0,91,0,91, + 0,75,0,227,128,7,7,7,8,0,0,238,100,116,92,92, + 76,228,6,7,7,7,0,0,120,204,204,204,204,204,120,6, + 7,7,6,0,0,248,108,108,120,96,96,240,6,9,9,7, + 0,254,120,204,204,204,204,204,120,48,28,7,7,7,7,0, + 0,248,108,108,120,104,108,238,5,7,7,6,0,0,120,200, + 224,112,56,152,240,6,7,7,7,0,0,252,180,48,48,48, + 48,120,7,7,7,7,0,0,246,100,100,100,100,100,56,8, + 7,7,8,0,0,243,98,116,52,56,24,16,10,7,14,10, + 0,0,238,192,108,128,109,128,109,0,55,0,54,0,18,0, + 7,7,7,7,0,0,230,100,56,56,44,76,222,8,7,7, + 8,0,0,247,98,52,56,24,24,60,6,7,7,7,0,0, + 252,204,152,48,100,204,252,3,10,10,4,0,253,224,192,192, + 192,192,192,192,192,192,224,3,7,7,3,0,0,128,128,192, + 64,96,32,32,3,10,10,4,0,253,224,96,96,96,96,96, + 96,96,96,224,5,4,4,6,0,3,32,112,216,136,5,1, + 1,5,0,253,248,2,2,2,4,0,6,128,64,5,5,5, + 5,0,0,96,176,112,176,248,5,7,7,5,255,0,224,96, + 112,104,104,104,112,4,5,5,5,0,0,112,208,192,208,112, + 6,7,7,6,0,0,56,24,120,216,216,216,108,4,5,5, + 5,0,0,112,208,240,192,112,4,7,7,3,255,0,48,96, + 240,96,96,96,240,5,8,8,5,0,253,120,208,208,112,192, + 240,144,240,6,7,7,5,255,0,224,96,120,104,104,104,108, + 2,7,7,3,0,0,192,0,192,192,192,192,192,3,10,10, + 4,0,253,96,0,96,96,96,96,96,96,96,192,6,7,7, + 5,255,0,224,96,108,104,112,104,236,3,7,7,3,255,0, + 224,96,96,96,96,96,96,8,5,5,8,0,0,172,254,214, + 214,215,6,5,5,6,0,0,176,216,216,216,220,5,5,5, + 6,0,0,112,216,216,216,112,5,8,8,5,255,253,240,104, + 104,104,112,96,96,224,5,8,8,5,0,253,112,208,208,208, + 112,48,48,56,4,5,5,4,0,0,208,240,192,192,192,3, + 5,5,4,0,0,96,192,224,96,224,4,7,7,4,255,0, + 32,96,240,96,96,96,48,5,5,5,5,0,0,216,208,208, + 208,112,5,5,5,5,0,0,216,208,112,96,32,7,5,5, + 6,255,0,214,212,92,120,40,4,5,5,5,0,0,208,240, + 96,240,176,5,8,8,5,0,253,216,216,112,112,32,32,192, + 192,4,5,5,5,0,0,240,176,96,208,240,4,10,10,4, + 255,253,48,96,96,96,192,192,96,96,96,48,1,10,10,3, + 1,253,128,128,128,128,128,128,128,128,128,128,4,10,10,4, + 0,253,192,96,96,96,48,48,96,96,96,192,5,2,2,6, + 0,2,104,176,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,2,0,1,2,7,7,4,1, + 253,192,192,0,192,192,192,192,5,7,7,6,0,255,16,120, + 208,208,224,120,32,5,7,7,6,0,0,56,104,96,248,96, + 232,216,5,5,5,6,0,1,136,112,80,112,136,5,7,7, + 6,0,0,216,216,112,32,112,32,112,1,7,7,3,1,0, + 128,128,128,0,128,128,128,4,9,9,5,0,254,96,176,192, + 160,208,112,48,208,96,3,1,1,4,0,5,160,7,7,7, + 9,1,0,56,68,154,162,154,68,56,3,6,6,4,0,1, + 192,32,224,160,0,224,5,5,5,6,0,0,40,80,160,80, + 40,5,3,3,7,1,1,248,8,8,3,1,1,3,0,2, + 224,7,7,7,9,1,0,56,68,186,178,170,68,56,3,1, + 1,4,0,5,224,4,3,3,4,0,4,96,144,96,5,7, + 7,6,0,0,32,32,248,32,32,0,248,3,4,4,3,0, + 3,96,160,64,224,3,4,4,3,0,3,224,64,32,192,2, + 2,2,4,1,5,64,128,5,8,8,5,0,253,216,208,208, + 208,240,128,192,192,6,10,10,6,0,253,124,232,232,232,104, + 40,40,40,40,40,1,2,2,3,1,2,128,128,2,3,3, + 3,1,253,128,64,192,3,4,4,3,0,3,64,192,64,224, + 3,6,6,4,0,1,64,160,160,64,0,224,5,5,5,6, + 0,0,160,80,40,80,160,7,7,7,7,0,0,68,200,72, + 244,44,62,68,7,7,7,7,0,0,68,200,72,246,42,36, + 78,7,7,7,7,0,0,228,72,40,212,44,62,68,4,7, + 7,6,1,253,96,96,0,64,208,208,96,8,10,10,7,255, + 0,32,16,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,8,16,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,16,40,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,52,88,0,16,24,56,44,124,78,239,8,9,9,7,255, + 0,36,0,16,24,56,44,124,78,239,8,10,10,7,255,0, + 24,36,24,16,24,56,44,124,78,239,9,7,14,9,255,0, + 63,128,28,128,44,0,47,0,124,0,76,128,239,128,6,10, + 10,7,0,253,124,204,192,192,192,236,120,32,16,48,6,10, + 10,7,0,0,32,16,0,252,100,96,120,96,100,252,6,10, + 10,7,0,0,8,16,0,252,100,96,120,96,100,252,6,10, + 10,7,0,0,48,72,0,252,100,96,120,96,100,252,6,9, + 9,7,0,0,40,0,252,100,96,120,96,100,252,4,10,10, + 5,0,0,64,32,0,240,96,96,96,96,96,240,4,10,10, + 5,0,0,32,64,0,240,96,96,96,96,96,240,4,10,10, + 5,0,0,96,144,0,240,96,96,96,96,96,240,4,9,9, + 5,0,0,144,0,240,96,96,96,96,96,240,7,7,7,8, + 0,0,252,102,102,246,102,102,252,7,10,10,8,0,0,52, + 88,0,238,100,116,92,92,76,228,6,10,10,7,0,0,32, + 16,0,120,204,204,204,204,204,120,6,10,10,7,0,0,16, + 32,0,120,204,204,204,204,204,120,6,10,10,7,0,0,48, + 72,0,120,204,204,204,204,204,120,6,10,10,7,0,0,52, + 88,0,120,204,204,204,204,204,120,6,9,9,7,0,0,72, + 0,120,204,204,204,204,204,120,6,5,5,6,0,0,204,120, + 48,120,204,6,9,9,8,1,255,4,120,204,220,236,236,204, + 120,128,7,10,10,7,0,0,32,16,0,246,100,100,100,100, + 100,56,7,10,10,7,0,0,8,16,0,246,100,100,100,100, + 100,56,7,10,10,7,0,0,24,36,0,246,100,100,100,100, + 100,56,7,9,9,7,0,0,36,0,246,100,100,100,100,100, + 56,8,10,10,8,0,0,4,8,0,247,98,52,56,24,24, + 60,6,7,7,6,0,0,224,120,108,108,120,96,240,5,7, + 7,6,0,0,112,200,200,208,200,200,216,5,8,8,5,0, + 0,64,32,0,96,176,112,176,248,5,8,8,5,0,0,16, + 32,0,96,176,112,176,248,5,8,8,5,0,0,32,80,0, + 96,176,112,176,248,5,8,8,5,0,0,104,176,0,96,176, + 112,176,248,5,7,7,5,0,0,80,0,96,176,112,176,248, + 5,8,8,5,0,0,32,80,32,96,176,112,176,248,7,5, + 5,8,0,0,110,186,126,184,238,4,8,8,5,0,253,112, + 208,192,208,112,64,32,96,4,8,8,5,0,0,64,32,0, + 112,208,240,192,112,4,8,8,5,0,0,16,32,0,112,208, + 240,192,112,5,8,8,5,0,0,32,80,136,112,208,240,192, + 112,4,7,7,5,0,0,80,0,112,208,240,192,112,2,8, + 8,3,0,0,128,64,0,192,192,192,192,192,2,8,8,3, + 0,0,64,128,0,192,192,192,192,192,3,8,8,3,0,0, + 64,160,0,192,192,192,192,192,3,7,7,3,0,0,160,0, + 192,192,192,192,192,5,9,9,6,0,0,128,112,96,176,24, + 120,216,216,112,6,8,8,6,0,0,104,176,0,176,216,216, + 216,220,5,8,8,6,0,0,64,32,0,112,216,216,216,112, + 5,8,8,6,0,0,16,32,0,112,216,216,216,112,5,8, + 8,6,0,0,32,80,0,112,216,216,216,112,5,8,8,6, + 0,0,104,176,0,112,216,216,216,112,5,7,7,6,0,0, + 80,0,112,216,216,216,112,5,5,5,6,0,0,32,0,248, + 0,32,5,7,7,6,0,255,16,112,216,216,216,112,64,5, + 8,8,5,0,0,64,32,0,216,208,208,208,112,5,8,8, + 5,0,0,16,32,0,216,208,208,208,112,5,8,8,5,0, + 0,32,80,0,216,208,208,208,112,5,7,7,5,0,0,80, + 0,216,208,208,208,112,5,11,11,5,0,253,16,32,0,216, + 216,112,112,32,32,192,192,5,10,10,5,255,253,224,96,112, + 104,104,104,112,96,96,224,5,10,10,5,0,253,80,0,216, + 216,112,112,32,32,192,192}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--11-80-100-100-P-57-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=10 x= 1 y= 6 dx=11 dy= 0 ascent= 8 len=18 + Font Bounding box w=13 h=18 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-3 + X Font ascent = 7 descent=-3 + Max Font ascent = 8 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB08r[1221] U8G_SECTION(".progmem.u8g_font_timB08r") = { + 0,13,18,254,251,7,1,164,3,77,32,127,253,8,253,7, + 253,0,0,0,2,0,1,2,7,7,4,1,0,192,192,192, + 192,0,192,192,3,3,3,5,1,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,9,9,5,0,255, + 32,112,184,224,96,48,184,112,32,7,7,7,9,1,0,118, + 220,232,16,46,90,156,7,7,7,9,1,0,48,104,104,118, + 220,204,118,1,3,3,3,1,4,128,128,128,3,10,10,3, + 255,253,32,96,64,192,192,192,192,64,96,32,3,10,10,4, + 0,253,128,192,64,96,96,96,96,64,192,128,5,5,5,6, + 0,2,32,248,112,248,32,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,4,1,255,192,192,64,3,1,1,3,0, + 2,224,2,2,2,3,0,0,192,192,3,7,7,3,0,0, + 32,32,96,64,192,128,128,4,7,7,5,0,0,96,208,208, + 208,208,208,96,4,7,7,5,0,0,96,224,96,96,96,96, + 240,4,7,7,5,0,0,96,240,48,32,64,240,240,4,7, + 7,5,0,0,96,176,48,96,48,176,224,5,7,7,5,0, + 0,16,48,80,144,248,48,48,4,7,7,5,0,0,224,224, + 128,224,48,176,224,4,7,7,5,0,0,48,96,192,240,208, + 208,96,5,7,7,5,0,0,120,240,144,48,32,96,96,4, + 7,7,5,0,0,96,208,208,96,176,176,96,4,7,7,5, + 0,0,96,176,176,176,112,48,224,2,5,5,4,1,0,192, + 192,0,192,192,2,6,6,4,1,255,192,192,0,192,192,64, + 5,5,5,6,0,0,24,112,192,112,24,5,3,3,6,0, + 1,248,0,248,5,5,5,6,0,0,192,112,24,112,192,4, + 7,7,6,1,0,96,176,176,32,0,96,96,10,9,18,11, + 0,254,31,0,48,128,109,64,218,64,210,64,210,128,205,0, + 96,0,62,0,8,7,7,7,255,0,16,24,56,44,124,78, + 239,6,7,7,7,0,0,248,108,108,120,108,108,248,6,7, + 7,7,0,0,124,204,192,192,192,236,120,7,7,7,8,0, + 0,252,102,102,102,102,102,252,6,7,7,7,0,0,252,100, + 96,120,96,100,252,6,7,7,7,0,0,252,100,104,120,104, + 96,240,6,7,7,7,0,0,124,204,192,220,204,204,120,8, + 7,7,9,0,0,231,102,102,126,102,102,231,4,7,7,5, + 0,0,240,96,96,96,96,96,240,5,8,8,5,0,255,120, + 48,48,48,48,48,176,224,7,7,7,8,0,0,238,100,104, + 120,108,110,230,6,7,7,7,0,0,240,96,96,96,100,108, + 252,9,7,14,10,0,0,243,128,119,0,91,0,91,0,91, + 0,75,0,227,128,7,7,7,8,0,0,238,100,116,92,92, + 76,228,6,7,7,7,0,0,120,204,204,204,204,204,120,6, + 7,7,6,0,0,248,108,108,120,96,96,240,6,9,9,7, + 0,254,120,204,204,204,204,204,120,48,28,7,7,7,7,0, + 0,248,108,108,120,104,108,238,5,7,7,6,0,0,120,200, + 224,112,56,152,240,6,7,7,7,0,0,252,180,48,48,48, + 48,120,7,7,7,7,0,0,246,100,100,100,100,100,56,8, + 7,7,8,0,0,243,98,116,52,56,24,16,10,7,14,10, + 0,0,238,192,108,128,109,128,109,0,55,0,54,0,18,0, + 7,7,7,7,0,0,230,100,56,56,44,76,222,8,7,7, + 8,0,0,247,98,52,56,24,24,60,6,7,7,7,0,0, + 252,204,152,48,100,204,252,3,10,10,4,0,253,224,192,192, + 192,192,192,192,192,192,224,3,7,7,3,0,0,128,128,192, + 64,96,32,32,3,10,10,4,0,253,224,96,96,96,96,96, + 96,96,96,224,5,4,4,6,0,3,32,112,216,136,5,1, + 1,5,0,253,248,2,2,2,4,0,6,128,64,5,5,5, + 5,0,0,96,176,112,176,248,5,7,7,5,255,0,224,96, + 112,104,104,104,112,4,5,5,5,0,0,112,208,192,208,112, + 6,7,7,6,0,0,56,24,120,216,216,216,108,4,5,5, + 5,0,0,112,208,240,192,112,4,7,7,3,255,0,48,96, + 240,96,96,96,240,5,8,8,5,0,253,120,208,208,112,192, + 240,144,240,6,7,7,5,255,0,224,96,120,104,104,104,108, + 2,7,7,3,0,0,192,0,192,192,192,192,192,3,10,10, + 4,0,253,96,0,96,96,96,96,96,96,96,192,6,7,7, + 5,255,0,224,96,108,104,112,104,236,3,7,7,3,255,0, + 224,96,96,96,96,96,96,8,5,5,8,0,0,172,254,214, + 214,215,6,5,5,6,0,0,176,216,216,216,220,5,5,5, + 6,0,0,112,216,216,216,112,5,8,8,5,255,253,240,104, + 104,104,112,96,96,224,5,8,8,5,0,253,112,208,208,208, + 112,48,48,56,4,5,5,4,0,0,208,240,192,192,192,3, + 5,5,4,0,0,96,192,224,96,224,4,7,7,4,255,0, + 32,96,240,96,96,96,48,5,5,5,5,0,0,216,208,208, + 208,112,5,5,5,5,0,0,216,208,112,96,32,7,5,5, + 6,255,0,214,212,92,120,40,4,5,5,5,0,0,208,240, + 96,240,176,5,8,8,5,0,253,216,216,112,112,32,32,192, + 192,4,5,5,5,0,0,240,176,96,208,240,4,10,10,4, + 255,253,48,96,96,96,192,192,96,96,96,48,1,10,10,3, + 1,253,128,128,128,128,128,128,128,128,128,128,4,10,10,4, + 0,253,192,96,96,96,48,48,96,96,96,192,5,2,2,6, + 0,2,104,176,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=14 x= 1 y= 8 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB10[3539] U8G_SECTION(".progmem.u8g_font_timB10") = { + 0,17,24,254,250,10,2,6,4,148,32,255,253,14,253,10, + 253,0,0,0,3,0,1,2,10,10,4,1,0,192,192,192, + 192,192,192,192,0,192,192,5,4,4,7,1,6,216,216,216, + 72,7,10,10,7,255,0,20,20,20,126,40,40,252,80,80, + 80,6,12,12,7,0,255,16,120,212,212,240,120,60,28,148, + 212,120,16,13,10,20,14,0,0,56,192,103,192,197,128,201, + 0,115,0,6,112,4,200,13,136,25,144,24,224,10,10,20, + 12,1,0,60,0,102,0,102,0,60,0,57,192,108,128,205, + 128,199,0,239,128,123,0,2,4,4,4,1,6,192,192,192, + 64,3,13,13,5,1,253,32,96,64,192,192,192,192,192,192, + 192,64,96,32,3,13,13,5,0,253,128,192,64,96,96,96, + 96,96,96,96,64,192,128,5,6,6,7,1,4,32,168,112, + 112,168,32,7,7,7,8,0,0,16,16,16,254,16,16,16, + 2,4,4,3,0,254,192,192,64,128,3,1,1,4,0,3, + 224,2,2,2,3,0,0,192,192,4,10,10,4,0,0,16, + 16,48,32,96,64,64,192,128,128,6,10,10,7,0,0,120, + 72,204,204,204,204,204,204,72,120,6,10,10,7,0,0,48, + 240,48,48,48,48,48,48,48,252,6,10,10,7,0,0,56, + 124,140,12,12,24,48,64,252,252,6,10,10,7,0,0,56, + 124,140,12,56,28,12,196,236,120,6,10,10,7,0,0,24, + 56,56,88,152,152,252,252,24,24,6,10,10,7,0,0,124, + 124,64,120,124,12,4,196,204,120,6,10,10,7,0,0,28, + 48,96,224,248,204,204,204,204,120,6,10,10,7,0,0,252, + 252,140,8,24,16,16,32,32,96,6,10,10,7,0,0,120, + 204,204,236,120,120,204,204,204,120,6,10,10,7,0,0,120, + 204,204,204,204,124,24,56,112,192,2,7,7,4,1,0,192, + 192,0,0,0,192,192,2,9,9,4,1,254,192,192,0,0, + 0,192,192,64,128,7,7,7,8,0,0,6,28,112,192,112, + 28,6,7,3,3,8,0,2,254,0,254,7,7,7,8,0, + 0,192,112,28,6,28,112,192,5,10,10,7,1,0,112,216, + 216,24,48,96,96,0,96,96,11,12,24,14,1,254,15,128, + 56,192,96,96,69,32,143,32,155,32,155,32,159,96,141,192, + 64,0,96,0,31,128,10,10,20,10,0,0,12,0,12,0, + 30,0,22,0,51,0,35,0,63,0,97,128,65,128,227,192, + 8,10,10,9,0,0,254,99,99,99,126,99,99,99,99,254, + 8,10,10,10,1,0,61,99,193,193,192,192,192,193,99,62, + 9,10,20,10,0,0,254,0,99,0,97,128,97,128,97,128, + 97,128,97,128,97,128,99,0,254,0,8,10,10,9,0,0, + 255,99,97,100,124,100,96,97,99,255,8,10,10,8,0,0, + 255,99,97,100,124,100,100,96,96,240,9,10,20,11,1,0, + 61,0,99,0,193,0,193,0,192,0,199,128,195,0,195,0, + 99,0,62,0,10,10,20,11,0,0,243,192,97,128,97,128, + 97,128,127,128,97,128,97,128,97,128,97,128,243,192,4,10, + 10,5,0,0,240,96,96,96,96,96,96,96,96,240,6,11, + 11,7,0,255,60,24,24,24,24,24,24,24,216,216,112,10, + 10,20,11,1,0,247,192,99,0,98,0,100,0,120,0,124, + 0,110,0,103,0,99,128,247,192,8,10,10,9,0,0,240, + 96,96,96,96,96,97,97,99,255,12,10,20,13,0,0,240, + 240,112,224,112,224,89,96,89,96,90,96,78,96,78,96,68, + 96,228,240,10,10,20,10,0,0,225,192,112,128,112,128,88, + 128,76,128,76,128,70,128,67,128,67,128,225,128,9,10,20, + 11,1,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,8,10,10,9,0,0,254,103,99, + 99,99,126,96,96,96,240,9,13,26,11,1,253,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,28,0,14,0,3,128,10,10,20,10,0,0,254,0,103, + 0,99,0,99,0,102,0,124,0,110,0,103,0,99,128,241, + 192,7,10,10,8,0,0,122,198,194,224,120,28,14,134,198, + 252,8,10,10,9,0,0,255,219,153,24,24,24,24,24,24, + 60,9,10,20,10,0,0,243,128,97,0,97,0,97,0,97, + 0,97,0,97,0,97,0,115,0,62,0,10,10,20,10,0, + 0,241,192,96,128,97,128,49,0,51,0,50,0,26,0,30, + 0,12,0,12,0,15,10,20,14,255,0,247,158,99,12,99, + 8,49,136,49,144,51,144,26,208,28,224,12,96,12,96,11, + 10,20,10,0,0,241,192,112,128,57,0,30,0,12,0,14, + 0,23,0,35,128,65,192,227,224,10,10,20,10,0,0,249, + 192,112,128,49,0,57,0,26,0,30,0,12,0,12,0,12, + 0,30,0,8,10,10,9,0,0,255,199,134,140,24,24,49, + 97,227,255,4,13,13,5,0,253,240,192,192,192,192,192,192, + 192,192,192,192,192,240,4,10,10,4,0,0,128,128,192,64, + 96,32,32,48,16,16,4,13,13,5,0,253,240,48,48,48, + 48,48,48,48,48,48,48,48,240,5,5,5,8,1,5,32, + 112,80,216,136,7,1,1,7,0,253,254,3,3,3,5,1, + 8,128,192,32,7,7,7,7,0,0,120,204,12,124,204,204, + 118,7,10,10,8,0,0,224,96,96,124,102,102,102,102,102, + 92,5,7,7,6,0,0,48,88,200,192,192,232,112,7,10, + 10,7,0,0,28,12,12,124,204,204,204,204,204,118,6,7, + 7,6,0,0,56,76,204,252,192,228,120,5,10,10,5,0, + 0,56,104,96,240,96,96,96,96,96,240,7,10,10,7,0, + 253,126,204,204,204,120,64,124,254,130,124,8,10,10,8,0, + 0,224,96,96,108,118,102,102,102,102,231,4,10,10,4,0, + 0,96,96,0,224,96,96,96,96,96,240,4,13,13,4,255, + 253,48,48,0,112,48,48,48,48,48,48,48,176,224,8,10, + 10,8,0,0,224,96,96,110,100,104,120,108,102,231,4,10, + 10,4,0,0,224,96,96,96,96,96,96,96,96,240,12,7, + 14,12,0,0,236,192,119,96,102,96,102,96,102,96,102,96, + 247,112,8,7,7,8,0,0,236,118,102,102,102,102,231,6, + 7,7,7,0,0,120,204,204,204,204,204,120,7,10,10,8, + 0,253,236,118,102,102,102,102,124,96,96,240,7,10,10,7, + 0,253,108,220,204,204,204,204,124,12,12,30,6,7,7,6, + 0,0,220,108,96,96,96,96,240,5,7,7,6,0,0,120, + 200,224,112,56,152,240,5,9,9,5,0,0,32,96,240,96, + 96,96,104,112,48,8,7,7,7,255,0,238,102,102,102,102, + 102,59,8,7,7,7,255,0,247,98,98,52,52,24,24,10, + 7,14,10,0,0,238,192,100,128,118,128,55,0,59,0,59, + 0,18,0,7,7,7,7,0,0,238,108,56,56,56,108,238, + 8,10,10,7,255,253,247,98,50,52,28,28,8,8,56,48, + 6,7,7,6,0,0,252,156,24,48,100,228,252,5,13,13, + 7,1,253,24,48,48,48,48,96,192,96,48,48,48,48,24, + 1,12,12,3,1,254,128,128,128,128,128,128,128,128,128,128, + 128,128,5,13,13,7,0,253,192,96,96,96,96,48,24,48, + 96,96,96,96,192,7,4,4,8,0,3,96,242,158,12,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,3,0,1,2,10,10,4,1,253,192,192,0,192, + 192,192,192,192,192,192,6,11,11,7,0,254,8,8,120,212, + 208,208,240,228,120,32,32,7,10,10,8,0,0,60,118,102, + 96,48,248,48,48,246,222,7,6,6,8,0,2,56,238,68, + 68,238,56,8,10,10,8,0,0,247,98,118,52,60,24,60, + 24,24,60,1,12,12,3,1,254,128,128,128,128,128,0,0, + 128,128,128,128,128,5,12,12,7,1,254,112,216,200,96,240, + 152,200,120,48,152,216,112,3,2,2,5,1,8,160,160,10, + 10,20,12,1,0,30,0,97,128,78,128,146,64,144,64,144, + 64,146,64,76,128,97,128,30,0,4,7,7,5,0,3,96, + 16,112,144,112,0,240,7,5,5,9,1,1,54,108,216,108, + 54,7,4,4,9,1,1,254,2,2,2,3,1,1,4,0, + 3,224,10,10,20,12,1,0,30,0,97,128,92,128,146,64, + 146,64,156,64,148,64,82,128,97,128,30,0,4,1,1,5, + 0,8,240,4,4,4,6,1,6,96,144,144,96,7,9,9, + 8,0,0,16,16,16,254,16,16,16,0,254,4,6,6,4, + 0,4,96,176,48,96,192,240,4,6,6,4,0,4,96,176, + 96,48,176,96,3,3,3,5,1,8,32,96,128,8,10,10, + 7,255,253,238,102,102,102,102,102,123,64,96,96,7,13,13, + 8,0,253,126,244,244,244,244,116,20,20,20,20,20,20,20, + 2,2,2,4,0,4,192,192,3,3,3,5,1,253,64,32, + 224,4,6,6,4,0,4,32,224,96,96,96,240,4,7,7, + 5,0,3,96,144,144,144,96,0,240,7,5,5,9,1,1, + 216,108,54,108,216,10,10,20,10,0,0,33,0,226,0,98, + 0,100,0,100,128,249,128,11,128,22,128,23,192,33,128,10, + 10,20,10,0,0,33,0,226,0,98,0,100,0,101,128,250, + 192,8,192,17,128,19,0,35,192,10,10,20,10,0,0,97, + 0,178,0,98,0,52,0,180,128,105,128,11,128,22,128,23, + 192,33,128,5,10,10,7,1,253,48,48,0,48,48,96,192, + 216,216,112,10,14,28,10,0,0,16,0,24,0,4,0,0, + 0,12,0,12,0,30,0,22,0,51,0,35,0,63,0,97, + 128,65,128,227,192,10,14,28,10,0,0,2,0,6,0,8, + 0,0,0,12,0,12,0,30,0,22,0,51,0,35,0,63, + 0,97,128,65,128,227,192,10,14,28,10,0,0,8,0,28, + 0,34,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,13,26,10,0,0,26, + 0,44,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,13,26,10,0,0,18, + 0,18,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,14,28,10,0,0,12, + 0,18,0,12,0,0,0,12,0,12,0,30,0,22,0,51, + 0,35,0,63,0,97,128,65,128,227,192,13,10,20,14,0, + 0,31,248,15,24,11,8,27,32,19,224,63,32,35,40,99, + 8,67,24,231,248,8,13,13,10,1,253,61,99,193,193,192, + 192,192,193,99,62,16,8,56,8,14,14,9,0,0,32,48, + 8,0,255,99,97,100,124,100,101,97,99,255,8,14,14,9, + 0,0,4,12,16,0,255,99,97,100,124,100,101,97,99,255, + 8,14,14,9,0,0,8,28,34,0,255,99,97,100,124,100, + 101,97,99,255,8,13,13,9,0,0,36,36,0,255,99,97, + 100,124,100,101,97,99,255,4,14,14,5,0,0,128,192,32, + 0,240,96,96,96,96,96,96,96,96,240,4,14,14,5,0, + 0,16,48,64,0,240,96,96,96,96,96,96,96,96,240,5, + 14,14,5,0,0,32,112,136,0,240,96,96,96,96,96,96, + 96,96,240,4,13,13,5,0,0,144,144,0,240,96,96,96, + 96,96,96,96,96,240,9,10,20,11,1,0,254,0,99,0, + 97,128,97,128,241,128,97,128,97,128,97,128,99,0,254,0, + 10,13,26,10,0,0,26,0,44,0,0,0,225,192,112,128, + 112,128,88,128,76,128,76,128,70,128,67,128,67,128,225,128, + 9,14,28,11,1,0,16,0,24,0,4,0,0,0,62,0, + 99,0,193,128,193,128,193,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,11,1,0,4,0,12,0,16,0,0,0, + 62,0,99,0,193,128,193,128,193,128,193,128,193,128,193,128, + 99,0,62,0,9,14,28,11,1,0,8,0,28,0,34,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,9,13,26,11,1,0,26,0,44,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,9,13,26,11,1,0,34,0,34,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,8,7,7,8,0,0,195,102,60,24, + 60,102,195,9,12,24,11,1,255,0,128,61,0,99,0,195, + 128,197,128,201,128,201,128,209,128,225,128,99,0,94,0,128, + 0,9,14,28,10,0,0,16,0,24,0,4,0,0,0,243, + 128,97,0,97,0,97,0,97,0,97,0,97,0,97,0,115, + 0,62,0,9,14,28,10,0,0,4,0,12,0,16,0,0, + 0,243,128,97,0,97,0,97,0,97,0,97,0,97,0,97, + 0,115,0,62,0,9,14,28,10,0,0,8,0,28,0,34, + 0,0,0,243,128,97,0,97,0,97,0,97,0,97,0,97, + 0,97,0,115,0,62,0,9,13,26,10,0,0,18,0,18, + 0,0,0,243,128,97,0,97,0,97,0,97,0,97,0,97, + 0,97,0,115,0,62,0,10,14,28,10,0,0,1,0,3, + 0,4,0,0,0,249,192,112,128,49,0,57,0,26,0,30, + 0,12,0,12,0,12,0,30,0,8,10,10,9,0,0,240, + 96,126,103,99,99,99,126,96,240,7,10,10,8,0,0,56, + 108,100,108,120,108,102,102,102,236,7,11,11,7,0,0,32, + 48,8,0,120,204,12,124,204,204,118,7,11,11,7,0,0, + 8,24,32,0,120,204,12,124,204,204,118,7,11,11,7,0, + 0,16,56,68,0,120,204,12,124,204,204,118,7,10,10,7, + 0,0,52,88,0,120,204,12,124,204,204,118,7,10,10,7, + 0,0,40,40,0,120,204,12,124,204,204,118,7,11,11,7, + 0,0,48,72,48,0,120,204,12,124,204,204,118,10,7,14, + 11,0,0,123,128,204,192,204,192,63,192,204,0,204,192,119, + 128,6,10,10,7,0,253,56,76,204,192,192,228,120,32,16, + 112,6,11,11,7,0,0,64,96,16,0,56,76,204,252,192, + 228,120,6,11,11,7,0,0,8,24,32,0,56,76,204,252, + 192,228,120,6,11,11,7,0,0,16,56,68,0,56,76,204, + 252,192,228,120,6,10,10,7,0,0,80,80,0,56,76,204, + 252,192,228,120,4,11,11,4,0,0,128,192,32,0,224,96, + 96,96,96,96,240,4,11,11,4,0,0,32,96,128,0,224, + 96,96,96,96,96,240,5,11,11,4,0,0,32,112,136,0, + 224,96,96,96,96,96,240,4,10,10,4,0,0,160,160,0, + 224,96,96,96,96,96,240,6,10,10,7,0,0,204,112,152, + 120,204,204,204,204,204,120,8,10,10,8,0,0,52,88,0, + 236,118,102,102,102,102,231,6,11,11,7,0,0,32,48,8, + 0,120,204,204,204,204,204,120,6,11,11,7,0,0,8,24, + 32,0,120,204,204,204,204,204,120,6,11,11,7,0,0,32, + 112,136,0,120,204,204,204,204,204,120,6,10,10,7,0,0, + 104,176,0,120,204,204,204,204,204,120,6,10,10,7,0,0, + 80,80,0,120,204,204,204,204,204,120,6,7,7,8,0,0, + 48,48,0,252,0,48,48,6,9,9,7,0,255,4,120,204, + 220,236,236,204,120,128,8,11,11,7,255,0,32,48,8,0, + 238,102,102,102,102,102,59,8,11,11,7,255,0,4,12,16, + 0,238,102,102,102,102,102,59,8,11,11,7,255,0,16,56, + 68,0,238,102,102,102,102,102,59,8,10,10,7,255,0,40, + 40,0,238,102,102,102,102,102,59,8,14,14,7,255,253,2, + 6,8,0,247,98,50,52,28,28,8,8,56,48,7,13,13, + 8,0,253,224,96,96,108,118,102,102,102,102,124,96,96,240, + 8,13,13,7,255,253,34,34,0,247,98,50,52,28,28,8, + 8,56,48}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=13 x= 1 y= 8 dx=14 dy= 0 ascent=11 len=26 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB10r[1632] U8G_SECTION(".progmem.u8g_font_timB10r") = { + 0,17,24,254,250,10,2,6,4,148,32,127,253,11,253,10, + 253,0,0,0,3,0,1,2,10,10,4,1,0,192,192,192, + 192,192,192,192,0,192,192,5,4,4,7,1,6,216,216,216, + 72,7,10,10,7,255,0,20,20,20,126,40,40,252,80,80, + 80,6,12,12,7,0,255,16,120,212,212,240,120,60,28,148, + 212,120,16,13,10,20,14,0,0,56,192,103,192,197,128,201, + 0,115,0,6,112,4,200,13,136,25,144,24,224,10,10,20, + 12,1,0,60,0,102,0,102,0,60,0,57,192,108,128,205, + 128,199,0,239,128,123,0,2,4,4,4,1,6,192,192,192, + 64,3,13,13,5,1,253,32,96,64,192,192,192,192,192,192, + 192,64,96,32,3,13,13,5,0,253,128,192,64,96,96,96, + 96,96,96,96,64,192,128,5,6,6,7,1,4,32,168,112, + 112,168,32,7,7,7,8,0,0,16,16,16,254,16,16,16, + 2,4,4,3,0,254,192,192,64,128,3,1,1,4,0,3, + 224,2,2,2,3,0,0,192,192,4,10,10,4,0,0,16, + 16,48,32,96,64,64,192,128,128,6,10,10,7,0,0,120, + 72,204,204,204,204,204,204,72,120,6,10,10,7,0,0,48, + 240,48,48,48,48,48,48,48,252,6,10,10,7,0,0,56, + 124,140,12,12,24,48,64,252,252,6,10,10,7,0,0,56, + 124,140,12,56,28,12,196,236,120,6,10,10,7,0,0,24, + 56,56,88,152,152,252,252,24,24,6,10,10,7,0,0,124, + 124,64,120,124,12,4,196,204,120,6,10,10,7,0,0,28, + 48,96,224,248,204,204,204,204,120,6,10,10,7,0,0,252, + 252,140,8,24,16,16,32,32,96,6,10,10,7,0,0,120, + 204,204,236,120,120,204,204,204,120,6,10,10,7,0,0,120, + 204,204,204,204,124,24,56,112,192,2,7,7,4,1,0,192, + 192,0,0,0,192,192,2,9,9,4,1,254,192,192,0,0, + 0,192,192,64,128,7,7,7,8,0,0,6,28,112,192,112, + 28,6,7,3,3,8,0,2,254,0,254,7,7,7,8,0, + 0,192,112,28,6,28,112,192,5,10,10,7,1,0,112,216, + 216,24,48,96,96,0,96,96,11,12,24,14,1,254,15,128, + 56,192,96,96,69,32,143,32,155,32,155,32,159,96,141,192, + 64,0,96,0,31,128,10,10,20,10,0,0,12,0,12,0, + 30,0,22,0,51,0,35,0,63,0,97,128,65,128,227,192, + 8,10,10,9,0,0,254,99,99,99,126,99,99,99,99,254, + 8,10,10,10,1,0,61,99,193,193,192,192,192,193,99,62, + 9,10,20,10,0,0,254,0,99,0,97,128,97,128,97,128, + 97,128,97,128,97,128,99,0,254,0,8,10,10,9,0,0, + 255,99,97,100,124,100,96,97,99,255,8,10,10,8,0,0, + 255,99,97,100,124,100,100,96,96,240,9,10,20,11,1,0, + 61,0,99,0,193,0,193,0,192,0,199,128,195,0,195,0, + 99,0,62,0,10,10,20,11,0,0,243,192,97,128,97,128, + 97,128,127,128,97,128,97,128,97,128,97,128,243,192,4,10, + 10,5,0,0,240,96,96,96,96,96,96,96,96,240,6,11, + 11,7,0,255,60,24,24,24,24,24,24,24,216,216,112,10, + 10,20,11,1,0,247,192,99,0,98,0,100,0,120,0,124, + 0,110,0,103,0,99,128,247,192,8,10,10,9,0,0,240, + 96,96,96,96,96,97,97,99,255,12,10,20,13,0,0,240, + 240,112,224,112,224,89,96,89,96,90,96,78,96,78,96,68, + 96,228,240,10,10,20,10,0,0,225,192,112,128,112,128,88, + 128,76,128,76,128,70,128,67,128,67,128,225,128,9,10,20, + 11,1,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,8,10,10,9,0,0,254,103,99, + 99,99,126,96,96,96,240,9,13,26,11,1,253,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,28,0,14,0,3,128,10,10,20,10,0,0,254,0,103, + 0,99,0,99,0,102,0,124,0,110,0,103,0,99,128,241, + 192,7,10,10,8,0,0,122,198,194,224,120,28,14,134,198, + 252,8,10,10,9,0,0,255,219,153,24,24,24,24,24,24, + 60,9,10,20,10,0,0,243,128,97,0,97,0,97,0,97, + 0,97,0,97,0,97,0,115,0,62,0,10,10,20,10,0, + 0,241,192,96,128,97,128,49,0,51,0,50,0,26,0,30, + 0,12,0,12,0,15,10,20,14,255,0,247,158,99,12,99, + 8,49,136,49,144,51,144,26,208,28,224,12,96,12,96,11, + 10,20,10,0,0,241,192,112,128,57,0,30,0,12,0,14, + 0,23,0,35,128,65,192,227,224,10,10,20,10,0,0,249, + 192,112,128,49,0,57,0,26,0,30,0,12,0,12,0,12, + 0,30,0,8,10,10,9,0,0,255,199,134,140,24,24,49, + 97,227,255,4,13,13,5,0,253,240,192,192,192,192,192,192, + 192,192,192,192,192,240,4,10,10,4,0,0,128,128,192,64, + 96,32,32,48,16,16,4,13,13,5,0,253,240,48,48,48, + 48,48,48,48,48,48,48,48,240,5,5,5,8,1,5,32, + 112,80,216,136,7,1,1,7,0,253,254,3,3,3,5,1, + 8,128,192,32,7,7,7,7,0,0,120,204,12,124,204,204, + 118,7,10,10,8,0,0,224,96,96,124,102,102,102,102,102, + 92,5,7,7,6,0,0,48,88,200,192,192,232,112,7,10, + 10,7,0,0,28,12,12,124,204,204,204,204,204,118,6,7, + 7,6,0,0,56,76,204,252,192,228,120,5,10,10,5,0, + 0,56,104,96,240,96,96,96,96,96,240,7,10,10,7,0, + 253,126,204,204,204,120,64,124,254,130,124,8,10,10,8,0, + 0,224,96,96,108,118,102,102,102,102,231,4,10,10,4,0, + 0,96,96,0,224,96,96,96,96,96,240,4,13,13,4,255, + 253,48,48,0,112,48,48,48,48,48,48,48,176,224,8,10, + 10,8,0,0,224,96,96,110,100,104,120,108,102,231,4,10, + 10,4,0,0,224,96,96,96,96,96,96,96,96,240,12,7, + 14,12,0,0,236,192,119,96,102,96,102,96,102,96,102,96, + 247,112,8,7,7,8,0,0,236,118,102,102,102,102,231,6, + 7,7,7,0,0,120,204,204,204,204,204,120,7,10,10,8, + 0,253,236,118,102,102,102,102,124,96,96,240,7,10,10,7, + 0,253,108,220,204,204,204,204,124,12,12,30,6,7,7,6, + 0,0,220,108,96,96,96,96,240,5,7,7,6,0,0,120, + 200,224,112,56,152,240,5,9,9,5,0,0,32,96,240,96, + 96,96,104,112,48,8,7,7,7,255,0,238,102,102,102,102, + 102,59,8,7,7,7,255,0,247,98,98,52,52,24,24,10, + 7,14,10,0,0,238,192,100,128,118,128,55,0,59,0,59, + 0,18,0,7,7,7,7,0,0,238,108,56,56,56,108,238, + 8,10,10,7,255,253,247,98,50,52,28,28,8,8,56,48, + 6,7,7,6,0,0,252,156,24,48,100,228,252,5,13,13, + 7,1,253,24,48,48,48,48,96,192,96,48,48,48,48,24, + 1,12,12,3,1,254,128,128,128,128,128,128,128,128,128,128, + 128,128,5,13,13,7,0,253,192,96,96,96,96,48,24,48, + 96,96,96,96,192,7,4,4,8,0,3,96,242,158,12,255 + }; +/* + Fontname: -Adobe-Times-Bold-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=16 x= 2 y= 9 dx=17 dy= 0 ascent=16 len=33 + Font Bounding box w=19 h=27 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB12[3887] U8G_SECTION(".progmem.u8g_font_timB12") = { + 0,19,27,254,249,11,2,42,5,41,32,255,252,16,252,11, + 252,0,0,0,5,0,1,2,11,11,6,2,0,192,192,192, + 192,192,128,128,0,0,192,192,5,5,5,9,1,6,216,216, + 216,144,144,8,11,11,8,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,13,13,8,0,255,16,122,150,210,240,120, + 60,30,22,146,210,188,16,12,12,24,16,2,0,48,128,111, + 0,201,0,201,0,202,0,210,96,100,208,9,144,9,144,17, + 144,17,160,32,192,10,11,22,14,2,0,28,0,38,0,38, + 0,52,0,57,192,120,128,156,128,141,0,198,64,231,192,123, + 128,2,5,5,5,2,6,192,192,192,128,128,4,14,14,6, + 1,253,16,32,96,64,192,192,192,192,192,192,64,96,32,16, + 4,14,14,6,0,253,128,64,96,32,48,48,48,48,48,48, + 32,96,64,128,5,7,7,8,1,4,32,168,248,112,248,168, + 32,7,8,8,9,1,0,16,16,16,254,254,16,16,16,2, + 5,5,4,1,253,192,192,64,64,128,4,2,2,5,0,3, + 240,240,2,2,2,4,1,0,192,192,4,11,11,5,0,0, + 16,48,32,32,96,64,64,64,192,128,128,6,11,11,8,1, + 0,48,72,204,204,204,204,204,204,204,72,48,6,11,11,8, + 1,0,16,240,48,48,48,48,48,48,48,48,252,7,11,11, + 8,0,0,56,124,156,12,12,8,24,16,34,124,252,7,11, + 11,8,0,0,56,124,140,8,16,60,14,6,198,204,120,7, + 11,11,8,0,0,4,12,28,44,44,76,140,254,254,12,12, + 8,11,11,8,0,0,31,62,32,56,124,14,6,6,198,204, + 112,6,11,11,8,1,0,12,48,96,96,240,204,204,204,204, + 72,48,7,11,11,8,0,0,126,126,132,4,12,8,8,24, + 16,48,32,7,11,11,8,0,0,56,68,198,228,120,60,78, + 198,198,68,56,6,11,11,8,1,0,48,72,204,204,204,204, + 124,24,24,48,192,2,7,7,5,1,0,192,192,0,0,0, + 192,192,2,10,10,5,1,253,192,192,0,0,0,192,192,64, + 64,128,8,8,8,9,0,0,3,14,56,192,192,56,14,3, + 7,5,5,9,1,2,254,254,0,254,254,8,8,8,9,0, + 0,192,112,28,3,3,28,112,192,6,11,11,8,1,0,56, + 204,204,12,12,8,16,32,0,96,96,13,13,26,16,1,254, + 7,128,28,96,48,16,103,80,204,200,216,200,216,136,217,144, + 217,176,78,224,32,0,24,96,7,128,11,11,22,12,0,0, + 4,0,14,0,14,0,27,0,19,0,51,0,33,128,127,128, + 64,192,192,192,225,224,9,11,22,10,1,0,252,0,102,0, + 99,0,99,0,102,0,126,0,99,0,97,128,97,128,99,0, + 254,0,9,11,22,11,1,0,30,128,99,128,65,128,192,128, + 192,0,192,0,192,0,192,0,96,128,115,0,62,0,9,11, + 22,11,1,0,252,0,102,0,99,0,97,128,97,128,97,128, + 97,128,97,128,99,0,102,0,252,0,8,11,11,10,1,0, + 255,99,97,96,98,126,98,96,97,99,255,8,11,11,10,1, + 0,255,99,97,96,98,126,98,96,96,96,248,10,11,22,12, + 1,0,30,128,99,128,65,128,192,128,192,0,192,0,199,192, + 193,128,193,128,97,128,63,0,10,11,22,12,1,0,243,192, + 97,128,97,128,97,128,97,128,127,128,97,128,97,128,97,128, + 97,128,243,192,4,11,11,6,1,0,240,96,96,96,96,96, + 96,96,96,96,240,6,13,13,8,1,254,60,24,24,24,24, + 24,24,24,24,24,216,208,96,11,11,22,13,1,0,251,192, + 97,0,98,0,100,0,104,0,120,0,108,0,102,0,99,0, + 97,128,251,224,9,11,22,11,1,0,240,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,128,96,128,97,128,255,128, + 14,11,22,15,0,0,224,28,112,24,112,56,120,56,88,88, + 76,88,76,152,70,152,71,24,67,24,226,60,10,11,22,12, + 1,0,241,192,112,128,88,128,88,128,76,128,70,128,71,128, + 67,128,65,128,65,128,224,128,10,11,22,12,1,0,30,0, + 97,128,64,128,192,192,192,192,192,192,192,192,192,192,64,128, + 97,128,30,0,8,11,11,10,1,0,254,103,99,99,102,124, + 96,96,96,96,240,10,14,28,12,1,253,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,63, + 0,14,0,6,0,1,128,10,11,22,12,1,0,254,0,103, + 0,99,0,99,0,102,0,124,0,108,0,102,0,99,0,97, + 128,243,192,8,11,11,9,0,0,61,67,193,224,120,60,14, + 7,131,194,188,10,11,22,11,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,30,0, + 10,11,22,12,1,0,241,192,96,128,96,128,96,128,96,128, + 96,128,96,128,96,128,96,128,33,0,30,0,11,11,22,12, + 0,0,248,224,48,64,48,64,24,128,24,128,13,0,13,0, + 7,0,6,0,2,0,2,0,17,11,33,17,0,0,251,239, + 128,112,195,0,48,194,0,56,226,0,25,230,0,29,100,0, + 13,124,0,15,56,0,6,56,0,6,16,0,2,16,0,10, + 11,22,12,1,0,251,192,113,0,58,0,58,0,28,0,14, + 0,30,0,23,0,35,0,67,128,231,192,11,11,22,12,0, + 0,248,224,112,64,56,128,24,128,29,0,15,0,6,0,6, + 0,6,0,6,0,15,0,10,11,22,11,0,0,255,192,193, + 192,131,128,7,0,14,0,14,0,28,0,56,0,112,64,240, + 192,255,192,3,14,14,6,1,253,224,192,192,192,192,192,192, + 192,192,192,192,192,192,224,4,11,11,5,0,0,128,192,64, + 64,96,32,32,32,48,16,16,3,14,14,6,1,253,224,96, + 96,96,96,96,96,96,96,96,96,96,96,224,7,7,7,9, + 1,4,16,56,40,108,68,198,130,8,1,1,8,0,252,255, + 3,3,3,6,2,9,192,64,32,8,8,8,8,0,0,56, + 204,204,28,108,204,205,118,8,11,11,9,0,0,224,96,96, + 108,118,99,99,99,99,118,236,6,8,8,7,0,0,56,108, + 204,192,192,192,100,56,8,11,11,9,0,0,14,6,6,54, + 110,198,198,198,198,78,55,6,8,8,7,0,0,56,108,204, + 252,192,192,100,56,6,11,11,6,0,0,24,108,96,240,96, + 96,96,96,96,96,240,7,12,12,8,0,252,50,78,204,204, + 200,112,64,252,126,130,132,120,8,11,11,9,0,0,224,96, + 96,108,118,102,102,102,102,102,239,4,11,11,5,0,0,96, + 96,0,224,96,96,96,96,96,96,240,5,15,15,5,254,252, + 24,24,0,56,24,24,24,24,24,24,24,24,216,208,96,9, + 11,22,9,0,0,224,0,96,0,96,0,111,0,100,0,104, + 0,120,0,124,0,110,0,103,0,247,128,4,11,11,5,0, + 0,224,96,96,96,96,96,96,96,96,96,240,12,8,16,13, + 0,0,237,192,119,96,102,96,102,96,102,96,102,96,102,96, + 246,240,8,8,8,9,0,0,236,126,102,102,102,102,102,247, + 7,8,8,8,0,0,56,108,198,198,198,198,108,56,8,12, + 12,9,0,252,236,118,99,99,99,99,118,108,96,96,96,240, + 8,12,12,9,0,252,50,110,198,198,198,198,110,54,6,6, + 6,15,6,8,8,7,0,0,236,124,96,96,96,96,96,240, + 5,8,8,6,0,0,120,200,224,112,56,152,216,176,5,11, + 11,6,0,0,32,32,96,240,96,96,96,96,96,104,48,8, + 8,8,9,0,0,238,102,102,102,102,102,111,54,8,8,8, + 8,0,0,247,98,98,100,52,56,24,16,12,8,16,12,0, + 0,239,112,102,32,102,32,119,64,55,64,57,128,25,128,17, + 0,7,8,8,8,0,0,246,116,56,56,24,60,76,238,8, + 12,12,8,0,252,247,98,98,52,52,28,24,24,16,16,224, + 192,7,8,8,7,0,0,254,140,152,24,48,114,98,254,4, + 14,14,7,1,253,48,96,96,96,96,64,128,64,96,96,96, + 96,96,48,1,14,14,4,1,253,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,4,14,14,7,1,253,192,96,96, + 96,96,32,16,32,96,96,96,96,96,192,9,4,8,9,0, + 4,48,0,120,128,159,0,14,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,5,0,1, + 2,12,12,6,2,252,192,192,0,0,64,64,64,192,192,192, + 192,192,6,12,12,8,1,254,4,4,56,76,204,208,208,224, + 100,56,64,64,8,11,11,8,0,0,28,38,38,48,48,124, + 48,16,113,158,110,6,7,7,8,1,1,180,120,204,132,204, + 120,180,8,11,11,8,0,0,227,98,50,52,28,126,24,126, + 24,24,126,1,15,15,4,1,253,128,128,128,128,128,128,0, + 0,0,128,128,128,128,128,128,6,15,15,8,1,252,56,76, + 76,96,48,120,156,204,228,120,56,24,200,200,112,5,2,2, + 6,0,9,216,216,12,11,22,12,255,0,15,0,48,192,71, + 32,72,160,152,16,152,16,152,16,72,160,71,32,48,192,15, + 0,5,7,7,5,0,4,96,144,112,176,216,0,248,7,7, + 7,8,0,0,18,54,108,216,108,54,18,7,6,6,9,1, + 1,254,254,2,2,2,2,4,2,2,5,0,3,240,240,12, + 11,22,12,0,0,15,0,48,192,78,32,73,32,137,16,142, + 16,138,16,73,32,93,32,48,192,15,0,5,1,1,6,0, + 9,248,4,5,5,7,1,6,96,144,144,144,96,7,9,9, + 9,1,0,16,16,254,254,16,16,0,254,254,4,7,7,5, + 0,4,96,240,176,32,64,240,240,4,7,7,5,0,4,96, + 176,48,96,48,176,96,3,3,3,6,1,9,96,64,128,8, + 11,11,9,0,253,238,102,102,102,102,102,111,118,64,96,96, + 7,15,15,9,1,252,62,116,244,244,244,244,116,52,20,20, + 20,20,20,20,20,2,2,2,4,1,4,192,192,5,4,4, + 6,0,252,32,48,136,112,4,7,7,5,1,4,96,224,96, + 96,96,96,240,4,7,7,6,1,4,96,144,144,144,96,0, + 240,7,7,7,8,0,0,144,216,108,54,108,216,144,11,11, + 22,12,0,0,96,128,225,0,97,0,98,0,100,64,100,192, + 249,192,10,192,19,224,32,192,32,192,10,11,22,12,0,0, + 97,0,225,0,98,0,98,0,100,0,107,128,254,192,16,128, + 17,0,35,192,39,192,11,11,22,12,0,0,96,128,177,0, + 49,0,98,0,52,64,180,192,105,192,10,192,19,224,32,192, + 32,192,6,11,11,8,1,253,24,24,0,16,32,64,192,192, + 204,204,112,11,15,30,12,0,0,48,0,24,0,4,0,0, + 0,4,0,14,0,14,0,27,0,19,0,51,0,33,128,127, + 128,64,192,192,192,225,224,11,15,30,12,0,0,1,128,3, + 0,4,0,0,0,4,0,14,0,14,0,27,0,19,0,51, + 0,33,128,127,128,64,192,192,192,225,224,11,15,30,12,0, + 0,4,0,14,0,17,0,0,0,4,0,14,0,14,0,27, + 0,19,0,51,0,33,128,127,128,64,192,192,192,225,224,11, + 14,28,12,0,0,29,0,46,0,0,0,4,0,14,0,14, + 0,27,0,19,0,51,0,33,128,127,128,64,192,192,192,225, + 224,11,14,28,12,0,0,27,0,27,0,0,0,4,0,14, + 0,14,0,27,0,19,0,51,0,33,128,127,128,64,192,192, + 192,225,224,11,16,32,12,0,0,6,0,9,0,9,0,6, + 0,0,0,4,0,14,0,14,0,27,0,19,0,51,0,33, + 128,127,128,64,192,192,192,225,224,14,11,22,16,1,0,15, + 248,7,24,11,8,11,0,19,32,31,224,35,32,35,0,67, + 4,67,12,231,252,9,15,30,11,1,252,30,128,99,128,65, + 128,192,128,192,0,192,0,192,0,192,0,96,128,115,0,62, + 0,8,0,12,0,34,0,28,0,8,15,15,10,1,0,96, + 48,8,0,255,99,97,96,98,126,98,96,97,99,255,8,15, + 15,10,1,0,6,12,16,0,255,99,97,96,98,126,98,96, + 97,99,255,8,15,15,10,1,0,8,28,34,0,255,99,97, + 96,98,126,98,96,97,99,255,8,14,14,10,1,0,102,102, + 0,255,99,97,96,98,126,98,96,97,99,255,5,15,15,6, + 0,0,192,96,16,0,120,48,48,48,48,48,48,48,48,48, + 120,4,15,15,6,1,0,48,96,128,0,240,96,96,96,96, + 96,96,96,96,96,240,5,15,15,6,0,0,32,112,136,0, + 120,48,48,48,48,48,48,48,48,48,120,6,14,14,6,0, + 0,204,204,0,120,48,48,48,48,48,48,48,48,48,120,9, + 11,22,11,1,0,252,0,102,0,99,0,97,128,97,128,249, + 128,97,128,97,128,99,0,102,0,252,0,10,14,28,12,1, + 0,29,0,46,0,0,0,241,192,112,128,88,128,88,128,76, + 128,70,128,71,128,67,128,65,128,65,128,224,128,10,15,30, + 12,1,0,48,0,24,0,4,0,0,0,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,30, + 0,10,15,30,12,1,0,3,0,6,0,8,0,0,0,30, + 0,97,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,128,30,0,10,15,30,12,1,0,4,0,14,0,17, + 0,0,0,30,0,97,128,64,128,192,192,192,192,192,192,192, + 192,192,192,64,128,97,128,30,0,10,14,28,12,1,0,29, + 0,46,0,0,0,30,0,97,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,128,30,0,10,14,28,12,1, + 0,51,0,51,0,0,0,30,0,97,128,64,128,192,192,192, + 192,192,192,192,192,192,192,64,128,97,128,30,0,7,8,8, + 9,1,0,130,198,108,56,56,108,198,130,10,13,26,13,1, + 255,0,64,30,128,97,128,65,128,194,192,194,192,196,192,200, + 192,200,192,80,128,97,128,62,0,64,0,10,15,30,12,1, + 0,48,0,24,0,4,0,0,0,241,192,96,128,96,128,96, + 128,96,128,96,128,96,128,96,128,96,128,33,0,30,0,10, + 15,30,12,1,0,3,0,6,0,8,0,0,0,241,192,96, + 128,96,128,96,128,96,128,96,128,96,128,96,128,96,128,33, + 0,30,0,10,15,30,12,1,0,4,0,14,0,17,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,33,0,30,0,10,14,28,12,1,0,51,0,51, + 0,0,0,241,192,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,96,128,33,0,30,0,11,15,30,12,0,0,1, + 128,3,0,4,0,0,0,248,224,112,64,56,128,24,128,29, + 0,15,0,6,0,6,0,6,0,6,0,15,0,8,11,11, + 10,1,0,240,96,126,103,99,99,103,126,96,96,240,8,11, + 11,9,0,0,24,38,102,102,108,98,99,99,99,98,236,8, + 12,12,8,0,0,48,16,8,0,56,204,204,28,108,204,205, + 118,8,12,12,8,0,0,24,16,32,0,56,204,204,28,108, + 204,205,118,8,12,12,8,0,0,16,56,68,0,56,204,204, + 28,108,204,205,118,8,11,11,8,0,0,52,88,0,56,204, + 204,28,108,204,205,118,8,11,11,8,0,0,108,108,0,56, + 204,204,28,108,204,205,118,8,13,13,8,0,0,16,40,40, + 16,0,56,204,204,28,108,204,205,118,10,8,16,12,1,0, + 51,128,206,192,204,192,31,192,108,0,204,0,214,64,99,128, + 6,12,12,7,0,252,56,108,204,192,192,192,100,56,32,48, + 136,112,6,12,12,7,0,0,48,16,8,0,56,108,204,252, + 192,192,100,56,6,12,12,7,0,0,24,16,32,0,56,108, + 204,252,192,192,100,56,6,12,12,7,0,0,16,56,68,0, + 56,108,204,252,192,192,100,56,6,11,11,7,0,0,108,108, + 0,56,108,204,252,192,192,100,56,4,12,12,5,0,0,192, + 64,32,0,224,96,96,96,96,96,96,240,4,12,12,5,0, + 0,48,32,64,0,224,96,96,96,96,96,96,240,5,12,12, + 5,255,0,32,112,136,0,112,48,48,48,48,48,48,120,5, + 11,11,5,255,0,216,216,0,112,48,48,48,48,48,48,120, + 7,11,11,8,0,0,108,48,216,60,108,198,198,198,198,108, + 56,8,11,11,9,0,0,52,88,0,236,126,102,102,102,102, + 102,247,7,12,12,8,0,0,48,16,8,0,56,108,198,198, + 198,198,108,56,7,12,12,8,0,0,24,16,32,0,56,108, + 198,198,198,198,108,56,7,12,12,8,0,0,16,56,68,0, + 56,108,198,198,198,198,108,56,7,11,11,8,0,0,52,88, + 0,56,108,198,198,198,198,108,56,7,11,11,8,0,0,108, + 108,0,56,108,198,198,198,198,108,56,8,8,8,9,0,0, + 24,24,0,255,255,0,24,24,7,10,10,8,0,255,2,60, + 108,206,214,214,230,108,120,128,8,12,12,9,0,0,48,16, + 8,0,238,102,102,102,102,102,111,54,8,12,12,9,0,0, + 12,8,16,0,238,102,102,102,102,102,111,54,8,12,12,9, + 0,0,16,56,68,0,238,102,102,102,102,102,111,54,8,11, + 11,9,0,0,108,108,0,238,102,102,102,102,102,111,54,8, + 16,16,8,0,252,12,8,16,0,247,98,98,52,52,28,24, + 24,16,16,224,192,8,15,15,9,0,252,224,96,96,108,118, + 99,99,99,99,114,108,96,96,96,240,8,15,15,8,0,252, + 108,108,0,247,98,98,52,52,28,24,24,16,16,224,192}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=15 x= 2 y= 9 dx=17 dy= 0 ascent=12 len=33 + Font Bounding box w=19 h=27 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB12r[1834] U8G_SECTION(".progmem.u8g_font_timB12r") = { + 0,19,27,254,249,11,2,42,5,41,32,127,252,12,252,11, + 252,0,0,0,5,0,1,2,11,11,6,2,0,192,192,192, + 192,192,128,128,0,0,192,192,5,5,5,9,1,6,216,216, + 216,144,144,8,11,11,8,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,13,13,8,0,255,16,122,150,210,240,120, + 60,30,22,146,210,188,16,12,12,24,16,2,0,48,128,111, + 0,201,0,201,0,202,0,210,96,100,208,9,144,9,144,17, + 144,17,160,32,192,10,11,22,14,2,0,28,0,38,0,38, + 0,52,0,57,192,120,128,156,128,141,0,198,64,231,192,123, + 128,2,5,5,5,2,6,192,192,192,128,128,4,14,14,6, + 1,253,16,32,96,64,192,192,192,192,192,192,64,96,32,16, + 4,14,14,6,0,253,128,64,96,32,48,48,48,48,48,48, + 32,96,64,128,5,7,7,8,1,4,32,168,248,112,248,168, + 32,7,8,8,9,1,0,16,16,16,254,254,16,16,16,2, + 5,5,4,1,253,192,192,64,64,128,4,2,2,5,0,3, + 240,240,2,2,2,4,1,0,192,192,4,11,11,5,0,0, + 16,48,32,32,96,64,64,64,192,128,128,6,11,11,8,1, + 0,48,72,204,204,204,204,204,204,204,72,48,6,11,11,8, + 1,0,16,240,48,48,48,48,48,48,48,48,252,7,11,11, + 8,0,0,56,124,156,12,12,8,24,16,34,124,252,7,11, + 11,8,0,0,56,124,140,8,16,60,14,6,198,204,120,7, + 11,11,8,0,0,4,12,28,44,44,76,140,254,254,12,12, + 8,11,11,8,0,0,31,62,32,56,124,14,6,6,198,204, + 112,6,11,11,8,1,0,12,48,96,96,240,204,204,204,204, + 72,48,7,11,11,8,0,0,126,126,132,4,12,8,8,24, + 16,48,32,7,11,11,8,0,0,56,68,198,228,120,60,78, + 198,198,68,56,6,11,11,8,1,0,48,72,204,204,204,204, + 124,24,24,48,192,2,7,7,5,1,0,192,192,0,0,0, + 192,192,2,10,10,5,1,253,192,192,0,0,0,192,192,64, + 64,128,8,8,8,9,0,0,3,14,56,192,192,56,14,3, + 7,5,5,9,1,2,254,254,0,254,254,8,8,8,9,0, + 0,192,112,28,3,3,28,112,192,6,11,11,8,1,0,56, + 204,204,12,12,8,16,32,0,96,96,13,13,26,16,1,254, + 7,128,28,96,48,16,103,80,204,200,216,200,216,136,217,144, + 217,176,78,224,32,0,24,96,7,128,11,11,22,12,0,0, + 4,0,14,0,14,0,27,0,19,0,51,0,33,128,127,128, + 64,192,192,192,225,224,9,11,22,10,1,0,252,0,102,0, + 99,0,99,0,102,0,126,0,99,0,97,128,97,128,99,0, + 254,0,9,11,22,11,1,0,30,128,99,128,65,128,192,128, + 192,0,192,0,192,0,192,0,96,128,115,0,62,0,9,11, + 22,11,1,0,252,0,102,0,99,0,97,128,97,128,97,128, + 97,128,97,128,99,0,102,0,252,0,8,11,11,10,1,0, + 255,99,97,96,98,126,98,96,97,99,255,8,11,11,10,1, + 0,255,99,97,96,98,126,98,96,96,96,248,10,11,22,12, + 1,0,30,128,99,128,65,128,192,128,192,0,192,0,199,192, + 193,128,193,128,97,128,63,0,10,11,22,12,1,0,243,192, + 97,128,97,128,97,128,97,128,127,128,97,128,97,128,97,128, + 97,128,243,192,4,11,11,6,1,0,240,96,96,96,96,96, + 96,96,96,96,240,6,13,13,8,1,254,60,24,24,24,24, + 24,24,24,24,24,216,208,96,11,11,22,13,1,0,251,192, + 97,0,98,0,100,0,104,0,120,0,108,0,102,0,99,0, + 97,128,251,224,9,11,22,11,1,0,240,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,128,96,128,97,128,255,128, + 14,11,22,15,0,0,224,28,112,24,112,56,120,56,88,88, + 76,88,76,152,70,152,71,24,67,24,226,60,10,11,22,12, + 1,0,241,192,112,128,88,128,88,128,76,128,70,128,71,128, + 67,128,65,128,65,128,224,128,10,11,22,12,1,0,30,0, + 97,128,64,128,192,192,192,192,192,192,192,192,192,192,64,128, + 97,128,30,0,8,11,11,10,1,0,254,103,99,99,102,124, + 96,96,96,96,240,10,14,28,12,1,253,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,63, + 0,14,0,6,0,1,128,10,11,22,12,1,0,254,0,103, + 0,99,0,99,0,102,0,124,0,108,0,102,0,99,0,97, + 128,243,192,8,11,11,9,0,0,61,67,193,224,120,60,14, + 7,131,194,188,10,11,22,11,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,30,0, + 10,11,22,12,1,0,241,192,96,128,96,128,96,128,96,128, + 96,128,96,128,96,128,96,128,33,0,30,0,11,11,22,12, + 0,0,248,224,48,64,48,64,24,128,24,128,13,0,13,0, + 7,0,6,0,2,0,2,0,17,11,33,17,0,0,251,239, + 128,112,195,0,48,194,0,56,226,0,25,230,0,29,100,0, + 13,124,0,15,56,0,6,56,0,6,16,0,2,16,0,10, + 11,22,12,1,0,251,192,113,0,58,0,58,0,28,0,14, + 0,30,0,23,0,35,0,67,128,231,192,11,11,22,12,0, + 0,248,224,112,64,56,128,24,128,29,0,15,0,6,0,6, + 0,6,0,6,0,15,0,10,11,22,11,0,0,255,192,193, + 192,131,128,7,0,14,0,14,0,28,0,56,0,112,64,240, + 192,255,192,3,14,14,6,1,253,224,192,192,192,192,192,192, + 192,192,192,192,192,192,224,4,11,11,5,0,0,128,192,64, + 64,96,32,32,32,48,16,16,3,14,14,6,1,253,224,96, + 96,96,96,96,96,96,96,96,96,96,96,224,7,7,7,9, + 1,4,16,56,40,108,68,198,130,8,1,1,8,0,252,255, + 3,3,3,6,2,9,192,64,32,8,8,8,8,0,0,56, + 204,204,28,108,204,205,118,8,11,11,9,0,0,224,96,96, + 108,118,99,99,99,99,118,236,6,8,8,7,0,0,56,108, + 204,192,192,192,100,56,8,11,11,9,0,0,14,6,6,54, + 110,198,198,198,198,78,55,6,8,8,7,0,0,56,108,204, + 252,192,192,100,56,6,11,11,6,0,0,24,108,96,240,96, + 96,96,96,96,96,240,7,12,12,8,0,252,50,78,204,204, + 200,112,64,252,126,130,132,120,8,11,11,9,0,0,224,96, + 96,108,118,102,102,102,102,102,239,4,11,11,5,0,0,96, + 96,0,224,96,96,96,96,96,96,240,5,15,15,5,254,252, + 24,24,0,56,24,24,24,24,24,24,24,24,216,208,96,9, + 11,22,9,0,0,224,0,96,0,96,0,111,0,100,0,104, + 0,120,0,124,0,110,0,103,0,247,128,4,11,11,5,0, + 0,224,96,96,96,96,96,96,96,96,96,240,12,8,16,13, + 0,0,237,192,119,96,102,96,102,96,102,96,102,96,102,96, + 246,240,8,8,8,9,0,0,236,126,102,102,102,102,102,247, + 7,8,8,8,0,0,56,108,198,198,198,198,108,56,8,12, + 12,9,0,252,236,118,99,99,99,99,118,108,96,96,96,240, + 8,12,12,9,0,252,50,110,198,198,198,198,110,54,6,6, + 6,15,6,8,8,7,0,0,236,124,96,96,96,96,96,240, + 5,8,8,6,0,0,120,200,224,112,56,152,216,176,5,11, + 11,6,0,0,32,32,96,240,96,96,96,96,96,104,48,8, + 8,8,9,0,0,238,102,102,102,102,102,111,54,8,8,8, + 8,0,0,247,98,98,100,52,56,24,16,12,8,16,12,0, + 0,239,112,102,32,102,32,119,64,55,64,57,128,25,128,17, + 0,7,8,8,8,0,0,246,116,56,56,24,60,76,238,8, + 12,12,8,0,252,247,98,98,52,52,28,24,24,16,16,224, + 192,7,8,8,7,0,0,254,140,152,24,48,114,98,254,4, + 14,14,7,1,253,48,96,96,96,96,64,128,64,96,96,96, + 96,96,48,1,14,14,4,1,253,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,4,14,14,7,1,253,192,96,96, + 96,96,32,16,32,96,96,96,96,96,192,9,4,8,9,0, + 4,48,0,120,128,159,0,14,0,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=11 dx=19 dy= 0 ascent=17 len=39 + Font Bounding box w=22 h=28 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =17 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB14[4851] U8G_SECTION(".progmem.u8g_font_timB14") = { + 0,22,28,254,249,13,2,178,6,78,32,255,252,17,252,13, + 252,0,0,0,5,0,1,3,13,13,6,1,0,64,224,224, + 224,224,224,224,64,64,0,224,224,224,6,6,6,10,2,7, + 204,204,204,204,136,136,10,12,24,9,0,0,25,128,25,128, + 25,128,127,192,127,192,51,0,51,0,255,128,255,128,102,0, + 102,0,102,0,8,16,16,9,0,254,24,126,219,219,216,248, + 124,62,31,31,27,219,219,126,24,24,14,13,26,18,1,0, + 60,24,119,240,226,96,226,64,228,192,253,128,115,120,6,236, + 6,196,13,196,25,200,49,248,48,224,13,13,26,16,2,0, + 30,0,51,0,51,0,51,0,58,0,28,240,60,96,94,64, + 207,128,199,128,227,192,255,248,120,240,2,6,6,5,1,7, + 192,192,192,192,128,128,5,17,17,6,1,252,8,16,48,96, + 96,224,192,192,192,192,192,224,96,96,48,16,8,5,17,17, + 6,0,252,128,64,96,48,48,56,24,24,24,24,24,56,48, + 32,96,64,128,8,9,9,9,0,4,24,24,219,255,60,255, + 219,24,24,10,10,20,11,0,0,12,0,12,0,12,0,12, + 0,255,192,255,192,12,0,12,0,12,0,12,0,4,6,6, + 5,0,253,112,112,112,48,96,192,5,3,3,6,0,4,248, + 248,248,3,3,3,5,1,0,224,224,224,5,13,13,6,0, + 0,24,24,24,48,48,48,32,96,96,96,192,192,192,8,13, + 13,9,0,0,60,102,103,231,231,231,231,231,231,231,102,102, + 60,8,13,13,9,0,0,28,60,252,28,28,28,28,28,28, + 28,28,28,127,8,13,13,9,0,0,60,126,207,135,7,7, + 6,12,24,49,99,255,255,9,13,26,9,0,0,60,0,126, + 0,143,0,7,0,14,0,28,0,62,0,15,0,7,128,3, + 128,195,0,230,0,124,0,8,13,13,9,0,0,14,30,30, + 46,46,78,206,142,255,255,14,14,14,9,13,26,9,0,0, + 63,0,63,0,62,0,64,0,120,0,126,0,63,0,7,128, + 3,128,3,128,195,0,230,0,252,0,8,13,13,9,0,0, + 7,28,56,112,96,252,230,231,231,231,231,102,60,8,13,13, + 9,0,0,255,255,254,134,12,12,12,24,24,56,48,48,112, + 8,13,13,9,0,0,60,102,227,227,246,124,60,126,207,199, + 195,231,126,8,13,13,9,0,0,60,102,231,231,231,231,103, + 63,7,6,14,60,240,3,9,9,5,1,0,224,224,224,0, + 0,0,224,224,224,4,12,12,5,0,253,112,112,112,0,0, + 0,112,112,112,48,96,192,9,9,18,11,1,0,3,128,15, + 0,60,0,240,0,192,0,240,0,60,0,15,0,3,128,9, + 6,12,11,1,2,255,128,255,128,0,0,0,0,255,128,255, + 128,9,9,18,11,1,0,224,0,120,0,30,0,7,128,1, + 128,7,128,30,0,120,0,224,0,7,13,13,9,1,0,124, + 206,238,238,78,12,24,16,16,0,56,56,56,15,16,32,17, + 1,253,3,224,15,56,56,12,48,4,115,182,103,118,231,118, + 238,102,238,102,238,236,239,252,103,184,112,0,56,0,30,0, + 7,240,14,13,26,14,0,0,3,0,3,128,7,128,5,192, + 13,192,8,192,24,224,16,96,31,240,48,112,32,56,96,56, + 248,252,10,13,26,13,1,0,254,0,115,128,113,192,113,192, + 113,192,115,128,126,0,115,128,113,192,113,192,113,192,115,128, + 255,0,12,13,26,14,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,0,224,0,224,0,112,0,112,48,60,224, + 15,128,12,13,26,14,1,0,255,0,113,192,112,224,112,96, + 112,112,112,112,112,112,112,112,112,112,112,96,112,224,113,192, + 255,0,10,13,26,13,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,64,112,192, + 255,192,10,13,26,12,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,0,112,0, + 248,0,13,13,26,15,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,248,224,112,224,112,112,112,112,112,56,240, + 15,192,13,13,26,15,1,0,248,248,112,112,112,112,112,112, + 112,112,112,112,127,240,112,112,112,112,112,112,112,112,112,112, + 249,248,5,13,13,7,1,0,248,112,112,112,112,112,112,112, + 112,112,112,112,248,8,15,15,9,0,254,31,14,14,14,14, + 14,14,14,14,14,14,14,238,236,120,12,13,26,15,2,0, + 249,240,112,192,113,128,115,0,118,0,124,0,124,0,126,0, + 119,0,119,128,115,192,113,224,248,240,10,13,26,13,2,0, + 248,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,64,112,192,255,192,15,13,26,18,2,0, + 240,30,112,28,120,60,120,60,124,92,92,92,94,220,78,156, + 79,156,71,28,71,28,67,28,226,62,12,13,26,14,1,0, + 240,112,120,32,120,32,124,32,94,32,78,32,79,32,71,160, + 67,160,67,224,65,224,64,224,224,224,13,13,26,15,1,0, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,10,13,26,12,1,0, + 255,0,115,128,113,192,113,192,113,192,115,128,127,0,112,0, + 112,0,112,0,112,0,112,0,248,0,13,17,34,15,1,252, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,15,0,7,128,3,224, + 0,248,12,13,26,14,1,0,255,0,115,128,113,192,113,192, + 113,192,115,128,127,0,119,0,115,128,113,192,113,192,112,224, + 248,240,9,13,26,11,1,0,30,128,99,128,225,128,224,0, + 248,0,124,0,63,0,15,128,7,128,3,128,195,128,231,0, + 188,0,11,13,26,13,1,0,255,224,206,96,142,32,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,12,13,26,14,1,0,248,240,112,32,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,96,56,192, + 31,128,14,13,26,14,0,0,252,124,120,24,56,16,60,48, + 28,32,30,96,30,64,14,192,15,128,7,128,7,0,3,0, + 2,0,18,13,39,19,1,0,253,247,192,121,225,128,56,225, + 0,60,227,0,60,226,0,28,114,0,30,118,0,14,116,0, + 14,188,0,15,60,0,7,60,0,6,24,0,6,24,0,14, + 13,26,14,0,0,248,120,120,48,60,96,28,192,15,128,7, + 0,7,128,7,192,13,192,24,224,48,112,96,120,240,252,13, + 13,26,14,1,0,252,120,120,48,56,96,60,64,30,192,14, + 128,15,128,7,0,7,0,7,0,7,0,7,0,31,192,10, + 13,26,13,2,0,255,192,195,192,131,128,7,128,15,0,14, + 0,30,0,60,0,56,0,120,0,240,64,224,192,255,192,4, + 16,16,6,1,253,240,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,240,5,13,13,5,0,0,192,192,192,96,96, + 96,32,48,48,48,24,24,24,4,16,16,6,1,253,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,8,7, + 7,11,1,6,24,24,60,36,102,195,195,9,2,4,9,0, + 252,255,128,255,128,5,3,3,6,0,10,224,112,24,8,9, + 9,9,0,0,124,206,206,30,110,206,206,254,119,9,13,26, + 9,255,0,240,0,112,0,112,0,112,0,118,0,127,0,115, + 128,115,128,115,128,115,128,115,128,115,0,110,0,7,9,9, + 8,0,0,62,118,230,224,224,224,224,118,60,9,13,26,10, + 0,0,15,0,7,0,7,0,7,0,55,0,127,0,231,0, + 231,0,231,0,231,0,231,0,119,0,59,128,7,9,9,8, + 0,0,60,118,230,254,224,224,224,118,60,7,13,13,6,0, + 0,62,118,118,112,252,112,112,112,112,112,112,112,248,9,13, + 26,9,0,252,63,128,231,0,231,0,231,0,230,0,120,0, + 96,0,254,0,255,128,227,128,193,128,227,0,126,0,10,13, + 26,11,0,0,240,0,112,0,112,0,112,0,119,0,127,128, + 115,128,115,128,115,128,115,128,115,128,115,128,251,192,5,13, + 13,5,0,0,96,96,96,0,240,112,112,112,112,112,112,112, + 248,6,17,17,5,254,252,24,24,24,0,60,28,28,28,28, + 28,28,28,28,28,220,216,112,10,13,26,10,0,0,240,0, + 112,0,112,0,112,0,115,128,115,0,118,0,124,0,124,0, + 126,0,119,0,115,128,247,192,5,13,13,6,0,0,240,112, + 112,112,112,112,112,112,112,112,112,112,248,15,9,18,16,0, + 0,247,56,123,220,115,156,115,156,115,156,115,156,115,156,115, + 156,251,222,10,9,18,11,0,0,231,0,127,128,115,128,115, + 128,115,128,115,128,115,128,115,128,251,192,8,9,9,9,0, + 0,60,102,231,231,231,231,231,102,60,9,13,26,10,0,252, + 230,0,127,0,115,128,115,128,115,128,115,128,115,128,123,0, + 118,0,112,0,112,0,112,0,248,0,9,13,26,9,0,252, + 57,0,119,0,231,0,231,0,231,0,231,0,231,0,127,0, + 55,0,7,0,7,0,7,0,15,128,7,9,9,8,0,0, + 238,118,112,112,112,112,112,112,248,6,9,9,7,0,0,124, + 204,228,240,120,60,156,204,248,6,11,11,7,0,0,16,48, + 252,112,112,112,112,112,112,116,56,10,9,18,11,0,0,247, + 128,115,128,115,128,115,128,115,128,115,128,115,128,127,128,61, + 192,10,9,18,9,255,0,251,192,113,128,121,0,59,0,59, + 0,30,0,30,0,12,0,12,0,14,9,18,12,255,0,247, + 156,119,24,115,144,59,176,57,160,29,224,31,224,12,192,12, + 192,9,9,18,9,0,0,243,128,115,0,122,0,60,0,28, + 0,30,0,55,0,103,128,227,128,10,13,26,9,255,252,251, + 192,113,128,121,0,59,0,58,0,30,0,30,0,12,0,12, + 0,12,0,200,0,216,0,240,0,7,9,9,8,0,0,254, + 206,142,28,56,112,114,230,254,7,17,17,8,0,252,30,56, + 48,48,48,48,48,96,192,96,48,48,48,48,48,56,30,2, + 16,16,4,1,253,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,7,17,17,8,1,252,240,56,24,24,24, + 24,24,12,6,12,24,24,24,24,24,56,240,8,4,4,10, + 1,3,112,249,159,14,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,5,0,1,3,13,13, + 6,1,252,224,224,224,0,64,64,224,224,224,224,224,224,64, + 8,13,13,9,0,254,1,3,62,119,239,236,216,216,240,115, + 62,96,64,14,13,26,9,0,0,31,0,59,0,59,0,56, + 0,56,0,56,0,254,0,56,4,56,0,48,0,240,128,191, + 128,239,0,8,8,8,9,0,2,219,255,102,195,195,102,255, + 219,9,13,26,9,0,0,251,128,113,0,115,0,58,0,58, + 0,28,0,127,0,28,0,127,0,28,0,28,0,28,0,127, + 0,2,16,16,4,1,253,192,192,192,192,192,192,0,0,0, + 0,192,192,192,192,192,192,7,16,16,9,1,253,60,102,70, + 96,48,120,220,206,230,118,60,28,12,196,204,120,6,2,2, + 6,0,10,204,204,13,13,26,15,1,0,15,128,56,224,96, + 48,79,208,220,216,152,72,152,8,152,8,220,216,79,144,96, + 48,56,224,15,128,6,8,8,6,0,5,112,216,56,216,216, + 236,0,252,9,7,14,11,1,1,25,128,51,0,102,0,204, + 0,102,0,51,0,25,128,9,6,12,11,1,1,255,128,255, + 128,1,128,1,128,1,128,1,128,5,3,3,6,0,4,248, + 248,248,13,13,26,15,1,0,15,128,56,224,96,48,95,144, + 204,216,140,200,143,136,141,136,204,216,94,240,96,48,56,224, + 15,128,6,1,1,6,0,11,252,6,5,5,7,0,8,120, + 204,204,204,120,8,11,11,11,1,0,24,24,24,255,255,24, + 24,24,0,255,255,5,8,8,5,0,5,112,152,24,48,32, + 64,248,240,5,8,8,5,0,5,112,152,24,112,56,24,152, + 112,5,3,3,6,0,10,56,112,192,10,13,26,11,0,252, + 247,128,115,128,115,128,115,128,115,128,115,128,115,128,127,128, + 125,192,96,0,224,0,240,0,96,0,9,17,34,10,0,252, + 63,128,127,128,251,0,251,0,251,0,251,0,123,0,59,0, + 27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0, + 27,0,3,3,3,5,1,4,224,224,224,5,4,4,6,1, + 252,32,24,152,112,6,8,8,5,0,5,48,240,48,48,48, + 48,48,252,6,8,8,6,0,5,120,204,204,204,204,120,0, + 252,9,7,14,11,1,1,204,0,102,0,51,0,25,128,51, + 0,102,0,204,0,13,13,26,13,0,0,48,96,240,192,48, + 192,49,128,49,128,51,16,51,48,254,112,6,176,13,176,13, + 248,24,48,24,48,13,13,26,13,0,0,48,96,240,192,48, + 192,49,128,49,128,51,112,51,152,254,24,6,48,12,32,12, + 64,24,248,24,240,13,13,26,13,0,0,112,96,152,192,24, + 192,113,128,57,128,27,16,155,48,118,112,6,176,13,176,13, + 248,24,48,24,48,7,13,13,9,1,252,56,56,56,0,16, + 16,48,96,228,238,238,230,124,14,17,34,14,0,0,14,0, + 7,0,1,128,0,0,3,0,3,128,7,128,5,192,13,192, + 8,192,24,224,16,96,31,240,48,112,32,56,96,56,248,252, + 14,17,34,14,0,0,3,128,7,0,12,0,0,0,3,0, + 3,128,7,128,5,192,13,192,8,192,24,224,16,96,31,240, + 48,112,32,56,96,56,248,252,14,17,34,14,0,0,3,0, + 7,128,12,192,0,0,3,0,3,128,7,128,5,192,13,192, + 8,192,24,224,16,96,31,240,48,112,32,56,96,56,248,252, + 14,17,34,14,0,0,6,64,15,192,9,128,0,0,3,0, + 3,128,7,128,5,192,13,192,8,192,24,224,16,96,31,240, + 48,112,32,56,96,56,248,252,14,16,32,14,0,0,12,192, + 12,192,0,0,3,0,3,128,7,128,5,192,13,192,8,192, + 24,224,16,96,31,240,48,112,32,56,96,56,248,252,14,17, + 34,14,0,0,7,0,13,128,13,128,7,0,3,0,3,128, + 7,128,5,192,13,192,8,192,24,224,16,96,31,240,48,112, + 32,56,96,56,248,252,17,13,39,19,0,0,7,255,128,3, + 225,128,2,224,128,6,224,0,4,224,0,12,226,0,8,254, + 0,31,226,0,16,224,0,48,224,0,32,224,128,96,225,128, + 249,255,128,12,17,34,14,1,252,15,144,56,240,112,112,112, + 48,224,0,224,0,224,0,224,0,224,0,112,0,112,48,60, + 224,15,128,4,0,3,0,19,0,14,0,10,17,34,13,2, + 0,56,0,28,0,6,0,0,0,255,192,112,192,112,64,112, + 0,112,0,113,0,127,0,113,0,112,0,112,0,112,64,112, + 192,255,192,10,17,34,13,2,0,14,0,28,0,48,0,0, + 0,255,192,112,192,112,64,112,0,112,0,113,0,127,0,113, + 0,112,0,112,0,112,64,112,192,255,192,10,17,34,13,2, + 0,12,0,30,0,51,0,0,0,255,192,112,192,112,64,112, + 0,112,0,113,0,127,0,113,0,112,0,112,0,112,64,112, + 192,255,192,10,16,32,13,2,0,51,0,51,0,0,0,255, + 192,112,192,112,64,112,0,112,0,113,0,127,0,113,0,112, + 0,112,0,112,64,112,192,255,192,5,17,17,7,1,0,224, + 112,24,0,248,112,112,112,112,112,112,112,112,112,112,112,248, + 5,17,17,7,1,0,56,112,192,0,248,112,112,112,112,112, + 112,112,112,112,112,112,248,6,17,17,7,1,0,48,120,204, + 0,248,112,112,112,112,112,112,112,112,112,112,112,248,6,16, + 16,7,1,0,204,204,0,248,112,112,112,112,112,112,112,112, + 112,112,112,248,13,13,26,14,0,0,127,128,56,224,56,112, + 56,48,56,56,56,56,254,56,56,56,56,56,56,48,56,112, + 56,224,127,128,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,240,112,120,32,120,32,124,32,94,32,78,32,79,32, + 71,160,67,160,67,224,65,224,64,224,224,224,13,17,34,15, + 1,0,14,0,7,0,1,128,0,0,15,128,56,224,112,112, + 112,112,224,56,224,56,224,56,224,56,224,56,112,112,112,112, + 56,224,15,128,13,17,34,15,1,0,3,128,7,0,12,0, + 0,0,15,128,56,224,112,112,112,112,224,56,224,56,224,56, + 224,56,224,56,112,112,112,112,56,224,15,128,13,17,34,15, + 1,0,6,0,15,0,25,128,0,0,15,128,56,224,112,112, + 112,112,224,56,224,56,224,56,224,56,224,56,112,112,112,112, + 56,224,15,128,13,17,34,15,1,0,12,128,31,128,19,0, + 0,0,15,128,56,224,112,112,112,112,224,56,224,56,224,56, + 224,56,224,56,112,112,112,112,56,224,15,128,13,16,32,15, + 1,0,25,128,25,128,0,0,15,128,56,224,112,112,112,112, + 224,56,224,56,224,56,224,56,224,56,112,112,112,112,56,224, + 15,128,9,8,16,11,1,1,193,128,99,0,54,0,28,0, + 28,0,54,0,99,0,193,128,13,15,30,15,1,255,0,96, + 15,192,56,224,112,176,113,176,225,56,227,56,226,56,230,56, + 228,56,108,112,104,112,56,224,31,128,48,0,12,17,34,14, + 1,0,28,0,14,0,3,0,0,0,248,240,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,32,112,96, + 56,192,31,128,12,17,34,14,1,0,1,192,3,128,6,0, + 0,0,248,240,112,32,112,32,112,32,112,32,112,32,112,32, + 112,32,112,32,112,32,112,96,56,192,31,128,12,17,34,14, + 1,0,6,0,15,0,25,128,0,0,248,240,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,32,112,96, + 56,192,31,128,12,16,32,14,1,0,25,128,25,128,0,0, + 248,240,112,32,112,32,112,32,112,32,112,32,112,32,112,32, + 112,32,112,32,112,96,56,192,31,128,13,17,34,14,1,0, + 0,224,1,192,3,0,0,0,252,120,120,48,56,96,60,64, + 30,192,14,128,15,128,7,0,7,0,7,0,7,0,7,0, + 31,192,10,13,26,11,1,0,248,0,112,0,112,0,127,0, + 115,128,113,192,113,192,113,192,115,128,127,0,112,0,112,0, + 248,0,9,13,26,10,0,0,30,0,59,0,115,128,115,128, + 115,128,119,0,114,0,115,0,115,128,115,128,115,128,115,128, + 247,0,8,13,13,9,0,0,112,56,12,0,124,206,206,30, + 110,206,206,254,119,8,13,13,9,0,0,14,28,48,0,124, + 206,206,30,110,206,206,254,119,8,13,13,9,0,0,24,60, + 102,0,124,206,206,30,110,206,206,254,119,8,13,13,9,0, + 0,50,126,76,0,124,206,206,30,110,206,206,254,119,8,12, + 12,9,0,0,102,102,0,124,206,206,30,110,206,206,254,119, + 8,13,13,9,0,0,56,108,108,56,124,206,206,30,110,206, + 206,254,119,12,9,18,13,0,0,125,224,231,176,199,48,15, + 240,127,0,231,0,199,0,239,176,121,224,7,13,13,8,0, + 252,62,118,230,224,224,224,224,118,60,16,12,76,56,7,13, + 13,8,0,0,112,56,12,0,60,118,230,254,224,224,224,118, + 60,8,13,13,8,0,0,7,14,24,0,60,118,230,254,224, + 224,224,118,60,7,13,13,8,0,0,24,60,102,0,60,118, + 230,254,224,224,224,118,60,7,12,12,8,0,0,102,102,0, + 60,118,230,254,224,224,224,118,60,5,13,13,5,0,0,224, + 112,24,0,240,112,112,112,112,112,112,112,248,5,13,13,5, + 0,0,56,112,192,0,240,112,112,112,112,112,112,112,248,6, + 13,13,5,0,0,48,120,204,0,240,112,112,112,112,112,112, + 112,248,6,12,12,5,0,0,204,204,0,240,112,112,112,112, + 112,112,112,248,8,13,13,9,0,0,96,54,56,76,62,102, + 231,231,231,231,231,102,60,10,13,26,11,0,0,25,0,63, + 0,38,0,0,0,231,0,127,128,115,128,115,128,115,128,115, + 128,115,128,115,128,251,192,8,13,13,9,0,0,112,56,12, + 0,60,102,231,231,231,231,231,102,60,8,13,13,9,0,0, + 7,14,24,0,60,102,231,231,231,231,231,102,60,8,13,13, + 9,0,0,24,60,102,0,60,102,231,231,231,231,231,102,60, + 8,13,13,9,0,0,50,126,76,0,60,102,231,231,231,231, + 231,102,60,8,12,12,9,0,0,102,102,0,60,102,231,231, + 231,231,231,102,60,8,8,8,11,1,1,24,24,0,255,255, + 0,24,24,10,11,22,9,255,255,0,64,30,128,51,0,115, + 128,115,128,119,128,123,128,113,128,51,0,94,0,128,0,10, + 13,26,11,0,0,56,0,28,0,6,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 13,26,11,0,0,14,0,28,0,48,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 13,26,11,0,0,12,0,30,0,51,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 12,24,11,0,0,51,0,51,0,0,0,247,128,115,128,115, + 128,115,128,115,128,115,128,115,128,127,128,61,192,10,17,34, + 9,255,252,3,128,7,0,12,0,0,0,251,192,113,128,121, + 0,59,0,58,0,30,0,30,0,12,0,12,0,12,0,8, + 0,216,0,240,0,9,17,34,10,0,252,240,0,112,0,112, + 0,112,0,118,0,127,0,115,128,115,128,115,128,115,128,115, + 128,123,0,118,0,112,0,112,0,112,0,248,0,10,16,32, + 9,255,252,51,0,51,0,0,0,251,192,113,128,121,0,59, + 0,58,0,30,0,30,0,12,0,12,0,12,0,8,0,216, + 0,240,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=10 dx=19 dy= 0 ascent=14 len=39 + Font Bounding box w=22 h=28 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB14r[2295] U8G_SECTION(".progmem.u8g_font_timB14r") = { + 0,22,28,254,249,13,2,178,6,78,32,127,252,14,252,13, + 252,0,0,0,5,0,1,3,13,13,6,1,0,64,224,224, + 224,224,224,224,64,64,0,224,224,224,6,6,6,10,2,7, + 204,204,204,204,136,136,10,12,24,9,0,0,25,128,25,128, + 25,128,127,192,127,192,51,0,51,0,255,128,255,128,102,0, + 102,0,102,0,8,16,16,9,0,254,24,126,219,219,216,248, + 124,62,31,31,27,219,219,126,24,24,14,13,26,18,1,0, + 60,24,119,240,226,96,226,64,228,192,253,128,115,120,6,236, + 6,196,13,196,25,200,49,248,48,224,13,13,26,16,2,0, + 30,0,51,0,51,0,51,0,58,0,28,240,60,96,94,64, + 207,128,199,128,227,192,255,248,120,240,2,6,6,5,1,7, + 192,192,192,192,128,128,5,17,17,6,1,252,8,16,48,96, + 96,224,192,192,192,192,192,224,96,96,48,16,8,5,17,17, + 6,0,252,128,64,96,48,48,56,24,24,24,24,24,56,48, + 32,96,64,128,8,9,9,9,0,4,24,24,219,255,60,255, + 219,24,24,10,10,20,11,0,0,12,0,12,0,12,0,12, + 0,255,192,255,192,12,0,12,0,12,0,12,0,4,6,6, + 5,0,253,112,112,112,48,96,192,5,3,3,6,0,4,248, + 248,248,3,3,3,5,1,0,224,224,224,5,13,13,6,0, + 0,24,24,24,48,48,48,32,96,96,96,192,192,192,8,13, + 13,9,0,0,60,102,103,231,231,231,231,231,231,231,102,102, + 60,8,13,13,9,0,0,28,60,252,28,28,28,28,28,28, + 28,28,28,127,8,13,13,9,0,0,60,126,207,135,7,7, + 6,12,24,49,99,255,255,9,13,26,9,0,0,60,0,126, + 0,143,0,7,0,14,0,28,0,62,0,15,0,7,128,3, + 128,195,0,230,0,124,0,8,13,13,9,0,0,14,30,30, + 46,46,78,206,142,255,255,14,14,14,9,13,26,9,0,0, + 63,0,63,0,62,0,64,0,120,0,126,0,63,0,7,128, + 3,128,3,128,195,0,230,0,252,0,8,13,13,9,0,0, + 7,28,56,112,96,252,230,231,231,231,231,102,60,8,13,13, + 9,0,0,255,255,254,134,12,12,12,24,24,56,48,48,112, + 8,13,13,9,0,0,60,102,227,227,246,124,60,126,207,199, + 195,231,126,8,13,13,9,0,0,60,102,231,231,231,231,103, + 63,7,6,14,60,240,3,9,9,5,1,0,224,224,224,0, + 0,0,224,224,224,4,12,12,5,0,253,112,112,112,0,0, + 0,112,112,112,48,96,192,9,9,18,11,1,0,3,128,15, + 0,60,0,240,0,192,0,240,0,60,0,15,0,3,128,9, + 6,12,11,1,2,255,128,255,128,0,0,0,0,255,128,255, + 128,9,9,18,11,1,0,224,0,120,0,30,0,7,128,1, + 128,7,128,30,0,120,0,224,0,7,13,13,9,1,0,124, + 206,238,238,78,12,24,16,16,0,56,56,56,15,16,32,17, + 1,253,3,224,15,56,56,12,48,4,115,182,103,118,231,118, + 238,102,238,102,238,236,239,252,103,184,112,0,56,0,30,0, + 7,240,14,13,26,14,0,0,3,0,3,128,7,128,5,192, + 13,192,8,192,24,224,16,96,31,240,48,112,32,56,96,56, + 248,252,10,13,26,13,1,0,254,0,115,128,113,192,113,192, + 113,192,115,128,126,0,115,128,113,192,113,192,113,192,115,128, + 255,0,12,13,26,14,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,0,224,0,224,0,112,0,112,48,60,224, + 15,128,12,13,26,14,1,0,255,0,113,192,112,224,112,96, + 112,112,112,112,112,112,112,112,112,112,112,96,112,224,113,192, + 255,0,10,13,26,13,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,64,112,192, + 255,192,10,13,26,12,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,0,112,0, + 248,0,13,13,26,15,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,248,224,112,224,112,112,112,112,112,56,240, + 15,192,13,13,26,15,1,0,248,248,112,112,112,112,112,112, + 112,112,112,112,127,240,112,112,112,112,112,112,112,112,112,112, + 249,248,5,13,13,7,1,0,248,112,112,112,112,112,112,112, + 112,112,112,112,248,8,15,15,9,0,254,31,14,14,14,14, + 14,14,14,14,14,14,14,238,236,120,12,13,26,15,2,0, + 249,240,112,192,113,128,115,0,118,0,124,0,124,0,126,0, + 119,0,119,128,115,192,113,224,248,240,10,13,26,13,2,0, + 248,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,64,112,192,255,192,15,13,26,18,2,0, + 240,30,112,28,120,60,120,60,124,92,92,92,94,220,78,156, + 79,156,71,28,71,28,67,28,226,62,12,13,26,14,1,0, + 240,112,120,32,120,32,124,32,94,32,78,32,79,32,71,160, + 67,160,67,224,65,224,64,224,224,224,13,13,26,15,1,0, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,10,13,26,12,1,0, + 255,0,115,128,113,192,113,192,113,192,115,128,127,0,112,0, + 112,0,112,0,112,0,112,0,248,0,13,17,34,15,1,252, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,15,0,7,128,3,224, + 0,248,12,13,26,14,1,0,255,0,115,128,113,192,113,192, + 113,192,115,128,127,0,119,0,115,128,113,192,113,192,112,224, + 248,240,9,13,26,11,1,0,30,128,99,128,225,128,224,0, + 248,0,124,0,63,0,15,128,7,128,3,128,195,128,231,0, + 188,0,11,13,26,13,1,0,255,224,206,96,142,32,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,12,13,26,14,1,0,248,240,112,32,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,96,56,192, + 31,128,14,13,26,14,0,0,252,124,120,24,56,16,60,48, + 28,32,30,96,30,64,14,192,15,128,7,128,7,0,3,0, + 2,0,18,13,39,19,1,0,253,247,192,121,225,128,56,225, + 0,60,227,0,60,226,0,28,114,0,30,118,0,14,116,0, + 14,188,0,15,60,0,7,60,0,6,24,0,6,24,0,14, + 13,26,14,0,0,248,120,120,48,60,96,28,192,15,128,7, + 0,7,128,7,192,13,192,24,224,48,112,96,120,240,252,13, + 13,26,14,1,0,252,120,120,48,56,96,60,64,30,192,14, + 128,15,128,7,0,7,0,7,0,7,0,7,0,31,192,10, + 13,26,13,2,0,255,192,195,192,131,128,7,128,15,0,14, + 0,30,0,60,0,56,0,120,0,240,64,224,192,255,192,4, + 16,16,6,1,253,240,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,240,5,13,13,5,0,0,192,192,192,96,96, + 96,32,48,48,48,24,24,24,4,16,16,6,1,253,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,8,7, + 7,11,1,6,24,24,60,36,102,195,195,9,2,4,9,0, + 252,255,128,255,128,5,3,3,6,0,10,224,112,24,8,9, + 9,9,0,0,124,206,206,30,110,206,206,254,119,9,13,26, + 9,255,0,240,0,112,0,112,0,112,0,118,0,127,0,115, + 128,115,128,115,128,115,128,115,128,115,0,110,0,7,9,9, + 8,0,0,62,118,230,224,224,224,224,118,60,9,13,26,10, + 0,0,15,0,7,0,7,0,7,0,55,0,127,0,231,0, + 231,0,231,0,231,0,231,0,119,0,59,128,7,9,9,8, + 0,0,60,118,230,254,224,224,224,118,60,7,13,13,6,0, + 0,62,118,118,112,252,112,112,112,112,112,112,112,248,9,13, + 26,9,0,252,63,128,231,0,231,0,231,0,230,0,120,0, + 96,0,254,0,255,128,227,128,193,128,227,0,126,0,10,13, + 26,11,0,0,240,0,112,0,112,0,112,0,119,0,127,128, + 115,128,115,128,115,128,115,128,115,128,115,128,251,192,5,13, + 13,5,0,0,96,96,96,0,240,112,112,112,112,112,112,112, + 248,6,17,17,5,254,252,24,24,24,0,60,28,28,28,28, + 28,28,28,28,28,220,216,112,10,13,26,10,0,0,240,0, + 112,0,112,0,112,0,115,128,115,0,118,0,124,0,124,0, + 126,0,119,0,115,128,247,192,5,13,13,6,0,0,240,112, + 112,112,112,112,112,112,112,112,112,112,248,15,9,18,16,0, + 0,247,56,123,220,115,156,115,156,115,156,115,156,115,156,115, + 156,251,222,10,9,18,11,0,0,231,0,127,128,115,128,115, + 128,115,128,115,128,115,128,115,128,251,192,8,9,9,9,0, + 0,60,102,231,231,231,231,231,102,60,9,13,26,10,0,252, + 230,0,127,0,115,128,115,128,115,128,115,128,115,128,123,0, + 118,0,112,0,112,0,112,0,248,0,9,13,26,9,0,252, + 57,0,119,0,231,0,231,0,231,0,231,0,231,0,127,0, + 55,0,7,0,7,0,7,0,15,128,7,9,9,8,0,0, + 238,118,112,112,112,112,112,112,248,6,9,9,7,0,0,124, + 204,228,240,120,60,156,204,248,6,11,11,7,0,0,16,48, + 252,112,112,112,112,112,112,116,56,10,9,18,11,0,0,247, + 128,115,128,115,128,115,128,115,128,115,128,115,128,127,128,61, + 192,10,9,18,9,255,0,251,192,113,128,121,0,59,0,59, + 0,30,0,30,0,12,0,12,0,14,9,18,12,255,0,247, + 156,119,24,115,144,59,176,57,160,29,224,31,224,12,192,12, + 192,9,9,18,9,0,0,243,128,115,0,122,0,60,0,28, + 0,30,0,55,0,103,128,227,128,10,13,26,9,255,252,251, + 192,113,128,121,0,59,0,58,0,30,0,30,0,12,0,12, + 0,12,0,200,0,216,0,240,0,7,9,9,8,0,0,254, + 206,142,28,56,112,114,230,254,7,17,17,8,0,252,30,56, + 48,48,48,48,48,96,192,96,48,48,48,48,48,56,30,2, + 16,16,4,1,253,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,7,17,17,8,1,252,240,56,24,24,24, + 24,24,12,6,12,24,24,24,24,24,56,240,8,4,4,10, + 1,3,112,249,159,14,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--25-180-100-100-P-132-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=24 h=23 x= 3 y=14 dx=25 dy= 0 ascent=23 len=69 + Font Bounding box w=27 h=38 x=-2 y=-10 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =23 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB18[7223] U8G_SECTION(".progmem.u8g_font_timB18") = { + 0,27,38,254,246,17,4,47,9,109,32,255,251,23,250,17, + 251,0,0,0,6,0,1,4,17,17,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,0,0,96,240,240,96,8,8, + 8,12,2,9,231,231,231,231,231,231,66,66,12,17,34,13, + 0,0,12,192,12,192,12,192,12,192,127,240,127,240,25,128, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,10,20,40,12,1,254,8,0,8,0,63,0, + 107,128,233,128,233,128,248,128,124,0,126,0,63,0,31,128, + 15,128,11,192,137,192,201,192,201,128,235,128,62,0,8,0, + 8,0,17,17,51,19,1,0,30,12,0,59,252,0,113,24, + 0,225,48,0,226,48,0,226,96,0,244,96,0,120,192,0, + 0,192,0,1,143,0,1,157,128,3,56,128,3,112,128,6, + 113,0,6,113,0,12,122,0,12,60,0,17,17,51,21,1, + 0,3,224,0,6,112,0,14,48,0,14,48,0,14,112,0, + 7,224,0,15,15,128,31,135,0,51,194,0,97,230,0,225, + 252,0,224,248,0,224,120,0,240,124,0,248,255,128,127,159, + 0,63,14,0,3,8,8,7,2,9,224,224,224,224,224,224, + 64,64,5,21,21,8,1,252,8,24,48,48,112,96,96,224, + 224,224,224,224,224,224,96,96,112,48,48,24,8,5,21,21, + 8,1,252,128,192,96,96,48,48,48,56,56,56,56,56,56, + 56,48,48,48,96,96,192,128,10,11,22,13,1,6,12,0, + 12,0,76,128,237,192,127,128,30,0,127,128,237,192,76,128, + 12,0,12,0,12,12,24,14,1,0,6,0,6,0,6,0, + 6,0,6,0,255,240,255,240,6,0,6,0,6,0,6,0, + 6,0,4,9,9,6,1,251,96,240,240,112,48,96,96,192, + 128,6,3,3,8,1,5,252,252,252,4,4,4,6,1,0, + 96,240,240,96,7,17,17,7,0,0,6,6,4,12,12,8, + 24,24,16,48,48,32,96,96,64,192,192,11,17,34,12,0, + 0,14,0,59,128,49,128,113,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,224,113,192,113,192,113,192,49,128,59, + 128,14,0,9,17,34,12,2,0,12,0,60,0,252,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,62,0,255,128,10,17,34,12,1, + 0,30,0,63,0,127,128,199,128,131,128,3,128,3,128,3, + 0,7,0,6,0,12,0,12,0,24,64,48,64,127,192,255, + 192,255,128,11,17,34,12,0,0,15,0,63,128,99,192,65, + 192,1,192,3,128,7,0,31,0,7,192,1,224,1,224,0, + 224,0,224,96,224,241,192,251,128,126,0,11,17,34,12,0, + 0,1,128,3,128,7,128,7,128,15,128,27,128,51,128,51, + 128,99,128,195,128,255,224,255,224,255,224,3,128,3,128,3, + 128,3,128,11,17,34,12,0,0,31,224,31,192,63,192,48, + 0,32,0,112,0,127,0,127,128,127,192,7,192,1,192,0, + 192,0,192,96,192,241,128,251,128,126,0,11,17,34,12,1, + 0,1,224,7,128,30,0,60,0,56,0,120,0,119,0,123, + 128,241,192,241,224,241,224,241,224,241,224,113,192,113,192,59, + 128,30,0,11,17,34,12,0,0,63,224,127,224,127,192,192, + 192,129,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,14,0,14,0,12,0,28,0,28,0,11,17,34,12,0, + 0,31,0,59,128,113,192,113,192,113,192,121,128,59,0,63, + 0,31,128,55,192,99,192,225,224,225,224,225,224,241,192,123, + 128,62,0,11,17,34,12,0,0,14,0,59,128,113,192,113, + 192,241,224,241,224,241,224,241,224,113,224,59,192,31,192,3, + 192,3,128,7,128,15,0,60,0,240,0,4,12,12,8,2, + 0,96,240,240,96,0,0,0,0,96,240,240,96,4,17,17, + 8,2,251,96,240,240,96,0,0,0,0,96,240,240,112,48, + 96,96,192,128,11,12,24,14,1,0,0,96,1,224,7,192, + 31,0,60,0,224,0,224,0,60,0,31,0,7,192,1,224, + 0,96,11,6,12,14,1,3,255,224,255,224,0,0,0,0, + 255,224,255,224,11,12,24,14,1,0,192,0,240,0,124,0, + 31,0,7,128,0,224,0,224,7,128,31,0,124,0,240,0, + 192,0,9,17,34,12,1,0,62,0,111,0,231,128,231,128, + 71,128,7,128,15,0,14,0,28,0,24,0,24,0,0,0, + 0,0,24,0,60,0,60,0,24,0,20,21,63,23,1,252, + 0,124,0,3,247,128,15,128,192,30,0,96,60,0,32,56, + 59,48,112,255,16,113,231,16,241,199,16,227,198,16,227,142, + 16,227,142,48,227,142,32,243,158,96,241,254,192,112,243,128, + 120,0,0,56,0,0,30,0,0,7,131,0,1,252,0,17, + 17,51,18,0,0,1,128,0,1,192,0,3,192,0,3,224, + 0,3,224,0,6,224,0,6,240,0,4,112,0,12,112,0, + 8,120,0,8,56,0,31,248,0,16,60,0,48,60,0,48, + 30,0,112,30,0,248,127,128,14,17,34,16,0,0,255,192, + 60,240,60,120,60,120,60,120,60,120,60,112,60,192,63,224, + 60,120,60,60,60,60,60,60,60,60,60,56,60,120,255,224, + 15,17,34,18,1,0,3,242,30,62,60,14,120,6,120,2, + 240,2,240,0,240,0,240,0,240,0,240,0,240,0,120,0, + 120,2,60,14,31,60,7,240,16,17,34,18,1,0,255,224, + 60,120,60,60,60,30,60,30,60,15,60,15,60,15,60,15, + 60,15,60,15,60,14,60,30,60,28,60,60,60,120,255,224, + 15,17,34,17,1,0,255,252,60,28,60,12,60,4,60,4, + 60,32,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,6,60,14,255,254,14,17,34,15,0,0,255,252, + 60,28,60,12,60,4,60,4,60,32,60,32,60,96,63,224, + 60,96,60,32,60,32,60,0,60,0,60,0,60,0,255,0, + 17,17,51,19,1,0,3,242,0,30,62,0,60,14,0,120, + 6,0,120,2,0,240,2,0,240,0,0,240,0,0,240,0, + 0,240,127,128,240,30,0,240,30,0,120,30,0,120,30,0, + 56,30,0,30,30,0,7,248,0,18,17,51,19,0,0,255, + 63,192,60,15,0,60,15,0,60,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,63,255,0,60,15,0,60,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,255, + 63,192,8,17,17,10,0,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,11,19,38,12,0,254,31, + 224,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,231,128,231,128,231, + 0,231,0,60,0,18,17,51,19,0,0,255,63,128,60,30, + 0,60,24,0,60,48,0,60,96,0,60,192,0,61,128,0, + 63,192,0,63,192,0,61,224,0,60,240,0,60,248,0,60, + 124,0,60,62,0,60,31,0,60,15,128,255,31,192,15,17, + 34,16,0,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,6, + 60,12,60,28,255,252,21,17,51,24,1,0,252,1,248,60, + 3,224,62,3,224,62,7,224,47,5,224,47,13,224,39,9, + 224,39,137,224,39,153,224,35,145,224,35,241,224,35,241,224, + 33,225,224,33,225,224,32,193,224,32,193,224,248,7,248,17, + 17,51,18,0,0,248,15,128,124,7,0,62,2,0,63,2, + 0,63,130,0,47,194,0,39,226,0,35,226,0,33,242,0, + 32,250,0,32,126,0,32,62,0,32,30,0,32,30,0,32, + 14,0,96,6,0,248,2,0,16,17,34,19,1,0,7,224, + 28,56,56,28,120,30,112,14,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,112,14,120,30,56,28,28,56,7,224, + 14,17,34,15,0,0,255,224,60,120,60,60,60,60,60,60, + 60,60,60,60,60,120,63,224,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,255,0,17,22,66,19,1,251,7,224, + 0,28,56,0,56,28,0,120,30,0,112,14,0,240,15,0, + 240,15,0,240,15,0,240,15,0,240,15,0,240,15,0,240, + 15,0,240,14,0,120,30,0,120,28,0,60,56,0,31,224, + 0,7,192,0,1,224,0,1,240,0,0,252,0,0,63,128, + 16,17,34,18,1,0,255,224,60,120,60,56,60,60,60,60, + 60,60,60,56,60,112,63,192,61,224,60,240,60,240,60,120, + 60,124,60,60,60,30,255,31,12,17,34,14,1,0,63,160, + 113,224,224,224,224,96,224,32,248,0,126,0,127,128,63,192, + 15,224,7,224,129,240,128,240,192,240,224,224,249,224,191,128, + 14,17,34,16,1,0,255,252,231,156,199,140,135,132,135,132, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,31,224,17,17,51,18,0,0,255,15, + 128,126,7,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,6,0,30,4,0,31,12,0,7,248, + 0,17,17,51,18,0,0,255,31,128,60,6,0,60,4,0, + 30,4,0,30,12,0,15,8,0,15,24,0,15,24,0,7, + 144,0,7,176,0,3,224,0,3,224,0,3,224,0,1,192, + 0,1,192,0,0,128,0,0,128,0,24,17,51,25,0,0, + 255,127,159,60,30,6,60,30,4,30,15,12,30,31,8,30, + 31,24,15,23,152,15,55,144,15,39,176,7,227,176,7,195, + 224,7,195,224,3,193,224,3,129,192,3,129,192,1,0,128, + 1,0,128,16,17,34,18,1,0,255,63,62,12,30,8,31, + 24,15,48,15,160,7,224,3,192,3,224,3,224,3,240,6, + 240,12,120,8,124,24,60,56,62,252,255,18,17,51,18,0, + 0,255,143,192,62,3,0,30,2,0,15,6,0,15,12,0, + 7,140,0,7,152,0,3,208,0,3,240,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,7,248,0,14,17,34,17,1,0,255,248,224,248,193,240, + 193,240,131,224,3,192,7,192,7,128,15,128,15,0,30,0, + 62,4,60,4,124,12,120,28,248,60,255,248,5,21,21,8, + 1,252,248,224,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,224,248,7,17,17,7,0,0,192,192,64, + 96,96,32,48,48,16,24,24,8,12,12,4,6,6,5,21, + 21,8,1,252,248,56,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,56,248,8,10,10,15,3,7,24, + 24,60,36,102,102,102,195,195,129,12,2,4,12,0,251,255, + 240,255,240,5,4,4,8,1,13,224,112,48,24,10,12,24, + 12,1,0,62,0,119,0,227,128,227,128,67,128,15,128,115, + 128,227,128,227,128,231,128,255,192,113,128,11,17,34,13,1, + 0,240,0,112,0,112,0,112,0,112,0,119,0,127,192,113, + 192,112,224,112,224,112,224,112,224,112,224,112,224,113,192,123, + 192,103,0,9,12,24,11,1,0,30,0,115,0,115,128,227, + 128,225,0,224,0,224,0,224,0,240,0,120,128,127,0,30, + 0,12,17,34,14,1,0,1,224,0,224,0,224,0,224,0, + 224,30,224,127,224,113,224,224,224,224,224,224,224,224,224,224, + 224,240,224,113,224,126,224,28,112,9,12,24,11,1,0,30, + 0,115,0,115,128,227,128,227,128,255,128,224,0,224,0,240, + 0,120,128,127,0,30,0,8,17,17,8,1,0,30,51,115, + 112,112,252,112,112,112,112,112,112,112,112,112,112,248,10,17, + 34,12,1,251,62,192,119,192,227,128,227,128,227,128,227,128, + 115,0,62,0,96,0,224,0,255,128,255,192,127,192,193,192, + 192,192,225,128,127,0,12,17,34,14,1,0,240,0,112,0, + 112,0,112,0,112,0,115,192,127,224,120,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,5,17, + 17,7,1,0,112,112,112,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,7,22,22,8,255,251,14,14,14,0,0, + 30,14,14,14,14,14,14,14,14,14,14,14,14,206,206,204, + 120,13,17,34,15,1,0,240,0,112,0,112,0,112,0,112, + 0,115,240,112,192,113,128,115,0,118,0,126,0,127,0,119, + 128,115,192,113,224,112,240,251,248,5,17,17,7,1,0,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,248, + 19,12,36,21,1,0,243,199,128,119,223,192,120,241,192,112, + 225,192,112,225,192,112,225,192,112,225,192,112,225,192,112,225, + 192,112,225,192,112,225,192,249,243,224,12,12,24,14,1,0, + 243,192,119,224,120,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,249,240,11,12,24,13,1,0,31,0, + 113,192,113,192,224,224,224,224,224,224,224,224,224,224,224,224, + 113,192,113,192,31,0,12,17,34,14,1,251,227,192,119,224, + 120,224,112,112,112,112,112,112,112,112,112,112,112,112,120,224, + 119,224,115,128,112,0,112,0,112,0,112,0,252,0,12,17, + 34,14,1,251,14,96,63,224,113,224,112,224,224,224,224,224, + 224,224,224,224,224,224,113,224,126,224,28,224,0,224,0,224, + 0,224,0,224,1,240,9,12,24,11,1,0,239,0,127,128, + 115,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,248,0,8,12,12,10,1,0,62,102,226,224,248,124, + 62,31,135,135,198,252,8,16,16,8,0,0,8,24,56,120, + 255,56,56,56,56,56,56,56,56,57,62,28,12,12,24,14, + 1,0,241,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,113,224,126,240,60,224,12,12,24,12,0,0, + 252,240,112,96,120,64,56,192,56,128,28,128,29,128,31,0, + 15,0,15,0,6,0,6,0,17,12,36,18,0,0,253,247, + 128,120,227,0,56,227,0,56,226,0,60,230,0,29,118,0, + 29,116,0,31,60,0,14,56,0,14,56,0,4,16,0,4, + 16,0,12,12,24,12,0,0,252,240,120,96,60,192,29,128, + 31,0,15,0,15,0,31,128,27,192,49,192,97,224,243,240, + 12,17,34,12,0,251,253,240,120,96,56,64,56,192,60,128, + 28,128,29,128,31,0,15,0,15,0,6,0,6,0,6,0, + 100,0,236,0,248,0,112,0,9,12,24,11,1,0,255,128, + 199,0,143,0,142,0,30,0,28,0,60,0,56,0,120,128, + 113,128,241,128,255,128,7,21,21,10,1,252,14,24,48,48, + 48,48,48,48,48,96,192,96,48,48,48,48,48,48,48,24, + 14,2,22,22,6,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,7,21,21, + 10,1,252,224,48,24,24,24,24,24,24,24,12,6,12,24, + 24,24,24,24,24,24,48,224,12,6,12,13,0,6,24,0, + 126,16,255,16,143,240,135,224,1,128,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,6,0, + 1,4,17,17,8,2,251,96,240,240,96,0,0,96,96,96, + 96,96,240,240,240,240,240,96,10,18,36,13,1,253,0,128, + 1,128,1,0,31,128,115,192,115,192,230,128,228,0,228,0, + 236,0,232,0,248,0,120,128,127,128,62,0,48,0,96,0, + 96,0,11,17,34,13,0,0,15,192,30,96,60,224,60,224, + 60,64,28,0,28,0,255,128,255,128,28,0,28,0,28,0, + 12,32,124,96,207,224,255,224,115,192,11,12,24,13,0,3, + 192,96,238,224,127,192,59,128,113,192,96,192,96,192,113,192, + 59,128,127,192,238,224,192,96,14,17,34,13,0,0,254,124, + 56,48,60,32,28,96,30,64,14,192,15,128,7,128,7,0, + 31,192,7,0,31,192,7,0,7,0,7,0,7,0,31,192, + 2,22,22,6,2,251,192,192,192,192,192,192,192,192,192,0, + 0,0,0,192,192,192,192,192,192,192,192,192,7,20,20,11, + 2,253,60,110,206,198,224,112,120,92,142,134,194,226,116,60, + 28,14,198,230,236,120,6,2,2,8,1,14,204,204,17,17, + 51,19,1,0,3,224,0,15,248,0,60,30,0,48,6,0, + 97,243,0,99,51,0,198,17,128,198,1,128,198,1,128,198, + 1,128,198,1,128,99,51,0,97,227,0,48,6,0,60,30, + 0,15,248,0,3,224,0,7,10,10,8,0,7,120,220,12, + 124,236,204,126,0,254,254,11,10,20,13,1,1,12,96,24, + 192,49,128,115,128,231,0,231,0,115,128,49,128,24,192,12, + 96,11,7,14,15,2,2,255,224,255,224,0,96,0,96,0, + 96,0,96,0,96,6,3,3,8,1,5,252,252,252,17,17, + 51,19,1,0,3,224,0,15,248,0,60,30,0,48,6,0, + 103,227,0,99,51,0,195,49,128,195,49,128,195,225,128,195, + 97,128,195,49,128,99,51,0,103,187,0,48,6,0,60,30, + 0,15,248,0,3,224,0,6,1,1,8,1,14,252,8,7, + 7,9,0,10,60,102,195,195,195,102,60,12,13,26,14,1, + 0,6,0,6,0,6,0,6,0,255,240,255,240,6,0,6, + 0,6,0,6,0,0,0,255,240,255,240,6,10,10,7,0, + 7,56,124,140,12,24,16,32,64,252,252,6,10,10,7,0, + 7,56,124,140,12,56,28,12,140,248,112,5,4,4,8,2, + 13,56,112,96,192,12,17,34,14,1,251,241,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,113,224,126, + 240,108,224,96,0,96,0,224,0,240,0,96,0,11,22,44, + 14,1,251,31,224,127,224,126,64,254,64,254,64,254,64,254, + 64,254,64,254,64,126,64,126,64,30,64,2,64,2,64,2, + 64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,3, + 3,3,6,1,6,224,224,224,6,6,6,8,1,250,16,48, + 56,12,140,120,6,10,10,7,0,7,48,240,48,48,48,48, + 48,48,48,252,7,10,10,8,0,7,56,108,198,198,198,108, + 56,0,254,254,11,10,20,13,1,1,198,0,99,0,49,128, + 57,192,28,224,28,224,57,192,51,128,99,0,198,0,17,17, + 51,18,0,0,48,4,0,240,12,0,48,24,0,48,24,0, + 48,48,0,48,32,0,48,96,0,48,66,0,48,198,0,252, + 142,0,1,142,0,1,22,0,3,54,0,6,38,0,6,127, + 128,12,6,0,8,6,0,17,17,51,18,0,0,48,4,0, + 240,12,0,48,24,0,48,24,0,48,48,0,48,32,0,48, + 96,0,48,71,0,48,207,128,252,145,128,1,129,128,1,3, + 0,3,2,0,6,4,0,6,8,0,12,31,128,8,31,128, + 17,17,51,18,1,0,56,4,0,124,12,0,140,24,0,12, + 24,0,56,48,0,28,32,0,12,96,0,140,66,0,248,198, + 0,113,14,0,3,14,0,2,22,0,6,54,0,12,38,0, + 12,127,128,24,6,0,16,6,0,9,17,34,12,1,251,12, + 0,30,0,30,0,12,0,0,0,0,0,12,0,12,0,28, + 0,56,0,120,0,240,0,241,0,243,128,243,128,123,0,62, + 0,17,22,66,18,0,0,3,128,0,1,192,0,0,192,0, + 0,96,0,0,0,0,1,128,0,1,192,0,3,192,0,3, + 224,0,3,224,0,6,224,0,6,240,0,4,112,0,12,112, + 0,8,120,0,8,56,0,31,248,0,16,60,0,48,60,0, + 48,30,0,112,30,0,248,127,128,17,22,66,18,0,0,0, + 224,0,1,192,0,1,128,0,3,0,0,0,0,0,1,128, + 0,1,192,0,3,192,0,3,224,0,3,224,0,6,224,0, + 6,240,0,4,112,0,12,112,0,8,120,0,8,56,0,31, + 248,0,16,60,0,48,60,0,48,30,0,112,30,0,248,127, + 128,17,22,66,18,0,0,1,128,0,3,192,0,6,96,0, + 0,0,0,0,0,0,1,128,0,1,192,0,3,192,0,3, + 224,0,3,224,0,6,224,0,6,240,0,4,112,0,12,112, + 0,8,120,0,8,56,0,31,248,0,16,60,0,48,60,0, + 48,30,0,112,30,0,248,127,128,17,21,63,18,0,0,3, + 16,0,7,224,0,8,192,0,0,0,0,1,128,0,1,192, + 0,3,192,0,3,224,0,3,224,0,6,224,0,6,240,0, + 4,112,0,12,112,0,8,120,0,8,56,0,31,248,0,16, + 60,0,48,60,0,48,30,0,112,30,0,248,127,128,17,21, + 63,18,0,0,6,96,0,6,96,0,0,0,0,0,0,0, + 1,128,0,1,192,0,3,192,0,3,224,0,3,224,0,6, + 224,0,6,240,0,4,112,0,12,112,0,8,120,0,8,56, + 0,31,248,0,16,60,0,48,60,0,48,30,0,112,30,0, + 248,127,128,17,23,69,18,0,0,1,128,0,3,192,0,6, + 96,0,6,96,0,3,192,0,1,128,0,1,128,0,1,192, + 0,3,192,0,3,224,0,3,224,0,6,224,0,6,240,0, + 4,112,0,12,112,0,8,120,0,8,56,0,31,248,0,16, + 60,0,48,60,0,48,30,0,112,30,0,248,127,128,23,17, + 51,25,0,0,1,255,252,0,124,28,0,252,12,0,188,4, + 1,188,4,1,60,32,3,60,32,2,60,96,6,63,224,7, + 252,96,12,60,32,8,60,32,24,60,2,16,60,2,48,60, + 6,112,60,14,248,255,254,15,23,46,18,1,250,3,242,30, + 62,60,14,120,6,120,2,240,2,240,0,240,0,240,0,240, + 0,240,0,240,0,120,0,120,2,60,14,31,60,7,240,1, + 0,3,0,3,128,0,192,8,192,7,128,15,22,44,17,1, + 0,7,0,3,128,1,128,0,192,0,0,255,252,60,28,60, + 12,60,4,60,4,60,32,60,32,60,96,63,224,60,96,60, + 32,60,32,60,2,60,2,60,6,60,14,255,254,15,22,44, + 17,1,0,1,192,3,128,3,0,6,0,0,0,255,252,60, + 28,60,12,60,4,60,4,60,32,60,32,60,96,63,224,60, + 96,60,32,60,32,60,2,60,2,60,6,60,14,255,254,15, + 22,44,17,1,0,3,0,7,128,12,192,0,0,0,0,255, + 252,60,28,60,12,60,4,60,4,60,32,60,32,60,96,63, + 224,60,96,60,32,60,32,60,2,60,2,60,6,60,14,255, + 254,15,21,42,17,1,0,12,192,12,192,0,0,0,0,255, + 252,60,28,60,12,60,4,60,4,60,32,60,32,60,96,63, + 224,60,96,60,32,60,32,60,2,60,2,60,6,60,14,255, + 254,8,22,22,10,0,0,112,56,24,12,0,255,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,8,22,22, + 10,0,0,14,28,24,48,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,8,22,22,10,0,0,24, + 60,102,0,0,255,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,255,8,21,21,10,0,0,102,102,0,0,255, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,255, + 16,17,34,18,1,0,255,224,60,120,60,60,60,30,60,30, + 60,15,60,15,255,143,255,143,60,15,60,15,60,14,60,30, + 60,28,60,60,60,120,255,224,17,22,66,18,0,0,1,136, + 0,3,240,0,4,96,0,0,0,0,0,0,0,248,15,128, + 124,7,0,62,2,0,63,2,0,63,130,0,47,194,0,39, + 226,0,35,226,0,33,242,0,32,250,0,32,126,0,32,62, + 0,32,30,0,32,14,0,32,14,0,96,6,0,248,2,0, + 16,22,44,19,1,0,7,0,3,128,1,128,0,192,0,0, + 7,224,30,120,60,60,120,30,120,30,240,15,240,15,240,15, + 240,15,240,15,240,15,240,15,120,30,120,30,60,60,30,120, + 7,224,16,22,44,19,1,0,0,112,0,224,0,192,1,128, + 0,0,7,224,30,120,60,60,120,30,120,30,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,120,30,120,30,60,60, + 30,120,7,224,16,22,44,19,1,0,1,128,3,192,6,96, + 0,0,0,0,7,224,30,120,60,60,120,30,120,30,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,120,30,120,30, + 60,60,30,120,7,224,16,22,44,19,1,0,3,16,7,224, + 8,192,0,0,0,0,7,224,30,120,60,60,120,30,120,30, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,120,30, + 120,30,60,60,30,120,7,224,16,21,42,19,1,0,12,96, + 12,96,0,0,0,0,7,224,30,120,60,60,120,30,120,30, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,120,30, + 120,30,60,60,30,120,7,224,12,12,24,14,1,0,192,48, + 224,112,112,224,57,192,31,128,15,0,15,0,31,128,57,192, + 112,224,224,112,192,48,16,19,38,19,1,255,0,4,7,236, + 30,120,56,28,120,62,120,62,240,111,240,207,240,207,241,143, + 243,15,243,15,246,15,124,30,124,30,56,28,62,120,55,224, + 96,0,17,22,66,18,0,0,3,128,0,1,192,0,0,192, + 0,0,96,0,0,0,0,255,15,128,62,6,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,2,0,60,2,0,60,2,0,60,6, + 0,30,4,0,31,28,0,7,248,0,17,22,66,18,0,0, + 0,56,0,0,112,0,0,96,0,0,192,0,0,0,0,255, + 15,128,62,6,0,60,2,0,60,2,0,60,2,0,60,2, + 0,60,2,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,6,0,30,4,0,31,28,0,7, + 248,0,17,22,66,18,0,0,0,96,0,0,240,0,1,152, + 0,0,0,0,0,0,0,255,15,128,62,6,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,2,0,60,2,0,60,2,0,60,6, + 0,30,4,0,31,28,0,7,248,0,17,21,63,18,0,0, + 3,24,0,3,24,0,0,0,0,0,0,0,255,15,128,62, + 6,0,60,2,0,60,2,0,60,2,0,60,2,0,60,2, + 0,60,2,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,6,0,30,4,0,31,28,0,7,248,0,18, + 23,69,18,0,0,0,14,0,0,28,0,0,24,0,0,48, + 0,0,0,0,0,0,0,255,143,192,62,3,0,30,2,0, + 15,6,0,15,12,0,7,140,0,7,152,0,3,208,0,3, + 240,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,7,248,0,14,17,34,15,0,0, + 255,0,60,0,60,0,60,0,63,224,60,120,60,60,60,60, + 60,60,60,60,60,60,60,120,63,224,60,0,60,0,60,0, + 255,0,11,17,34,14,1,0,31,0,57,128,113,192,113,192, + 113,192,113,192,115,128,119,0,115,128,113,192,112,224,112,224, + 112,224,112,224,112,224,112,192,243,128,10,17,34,12,1,0, + 56,0,28,0,12,0,6,0,0,0,62,0,119,0,227,128, + 227,128,67,128,15,128,115,128,227,128,227,128,231,128,255,192, + 113,128,10,17,34,12,1,0,14,0,28,0,24,0,48,0, + 0,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,10,17,34,12,1,0, + 12,0,30,0,51,0,0,0,0,0,62,0,119,0,227,128, + 227,128,67,128,15,128,115,128,227,128,227,128,231,128,255,192, + 113,128,10,17,34,12,1,0,24,128,63,0,70,0,0,0, + 0,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,10,16,32,12,1,0, + 51,0,51,0,0,0,0,0,62,0,119,0,227,128,227,128, + 67,128,15,128,115,128,227,128,227,128,231,128,255,192,113,128, + 10,18,36,12,1,0,12,0,30,0,51,0,51,0,30,0, + 12,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,15,12,24,17,1,0, + 62,120,119,204,227,206,99,142,3,142,31,254,115,128,227,128, + 227,192,231,226,254,252,124,120,9,18,36,11,1,250,30,0, + 115,0,115,128,227,128,225,0,224,0,224,0,224,0,240,0, + 120,128,127,0,30,0,8,0,24,0,28,0,6,0,70,0, + 60,0,9,17,34,11,1,0,56,0,28,0,12,0,6,0, + 0,0,30,0,115,0,115,128,227,128,227,128,255,128,224,0, + 224,0,240,0,120,128,127,0,30,0,9,17,34,11,1,0, + 14,0,28,0,24,0,48,0,0,0,30,0,115,0,115,128, + 227,128,227,128,255,128,224,0,224,0,240,0,120,128,127,0, + 30,0,9,17,34,11,1,0,24,0,60,0,102,0,0,0, + 0,0,30,0,115,0,115,128,227,128,227,128,255,128,224,0, + 224,0,240,0,120,128,127,0,30,0,9,16,32,11,1,0, + 51,0,51,0,0,0,0,0,30,0,115,0,115,128,227,128, + 227,128,255,128,224,0,224,0,240,0,120,128,127,0,30,0, + 5,17,17,7,1,0,224,112,48,24,0,240,112,112,112,112, + 112,112,112,112,112,112,248,6,17,17,7,1,0,28,56,48, + 96,0,240,112,112,112,112,112,112,112,112,112,112,248,6,17, + 17,7,1,0,48,120,204,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,6,16,16,7,1,0,204,204,0,0,240, + 112,112,112,112,112,112,112,112,112,112,248,11,17,34,13,1, + 0,96,0,56,192,15,0,30,0,99,0,31,128,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,12,17,34,14,1,0,12,64,31,128,35,0,0, + 0,0,0,243,192,119,224,120,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,249,240,11,17,34,13,1, + 0,28,0,14,0,6,0,3,0,0,0,31,0,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,11,17,34,13,1,0,3,128,7,0,6,0,12, + 0,0,0,31,0,123,192,113,192,224,224,224,224,224,224,224, + 224,224,224,224,224,113,192,123,192,31,0,11,17,34,13,1, + 0,12,0,30,0,51,0,0,0,0,0,31,0,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,11,17,34,13,1,0,24,128,63,0,70,0,0, + 0,0,0,31,0,123,192,113,192,224,224,224,224,224,224,224, + 224,224,224,224,224,113,192,123,192,31,0,11,16,32,13,1, + 0,49,128,49,128,0,0,0,0,31,0,123,192,113,192,224, + 224,224,224,224,224,224,224,224,224,224,224,113,192,123,192,31, + 0,12,12,24,14,1,0,6,0,6,0,6,0,0,0,0, + 0,255,240,255,240,0,0,0,0,6,0,6,0,6,0,11, + 16,32,13,1,254,0,64,0,64,30,128,121,192,113,192,226, + 224,226,224,228,224,228,224,232,224,232,224,113,192,123,192,63, + 0,64,0,64,0,12,17,34,14,1,0,28,0,14,0,6, + 0,3,0,0,0,241,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,113,224,126,240,60,224,12,17,34, + 14,1,0,7,0,14,0,12,0,24,0,0,0,241,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,113, + 224,126,240,60,224,12,17,34,14,1,0,6,0,15,0,25, + 128,0,0,0,0,241,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,113,224,126,240,60,224,12,16,32, + 14,1,0,25,128,25,128,0,0,0,0,241,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,113,224,126, + 240,60,224,12,22,44,12,0,251,1,192,3,128,3,0,6, + 0,0,0,253,240,120,96,56,64,56,192,60,128,28,128,29, + 128,31,0,15,0,15,0,6,0,6,0,6,0,100,0,236, + 0,248,0,112,0,12,22,44,14,1,251,240,0,112,0,112, + 0,112,0,112,0,115,128,119,224,124,224,120,112,112,112,112, + 112,112,112,112,112,112,112,120,224,119,224,115,128,112,0,112, + 0,112,0,112,0,252,0,12,21,42,12,0,251,25,128,25, + 128,0,0,0,0,253,240,120,96,56,64,56,192,60,128,28, + 128,29,128,31,0,15,0,15,0,6,0,6,0,6,0,100, + 0,236,0,248,0,112,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--25-180-100-100-P-132-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=24 h=22 x= 3 y=13 dx=25 dy= 0 ascent=18 len=66 + Font Bounding box w=27 h=38 x=-2 y=-10 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB18r[3355] U8G_SECTION(".progmem.u8g_font_timB18r") = { + 0,27,38,254,246,17,4,47,9,109,32,127,251,18,251,17, + 251,0,0,0,6,0,1,4,17,17,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,0,0,96,240,240,96,8,8, + 8,12,2,9,231,231,231,231,231,231,66,66,12,17,34,13, + 0,0,12,192,12,192,12,192,12,192,127,240,127,240,25,128, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,10,20,40,12,1,254,8,0,8,0,63,0, + 107,128,233,128,233,128,248,128,124,0,126,0,63,0,31,128, + 15,128,11,192,137,192,201,192,201,128,235,128,62,0,8,0, + 8,0,17,17,51,19,1,0,30,12,0,59,252,0,113,24, + 0,225,48,0,226,48,0,226,96,0,244,96,0,120,192,0, + 0,192,0,1,143,0,1,157,128,3,56,128,3,112,128,6, + 113,0,6,113,0,12,122,0,12,60,0,17,17,51,21,1, + 0,3,224,0,6,112,0,14,48,0,14,48,0,14,112,0, + 7,224,0,15,15,128,31,135,0,51,194,0,97,230,0,225, + 252,0,224,248,0,224,120,0,240,124,0,248,255,128,127,159, + 0,63,14,0,3,8,8,7,2,9,224,224,224,224,224,224, + 64,64,5,21,21,8,1,252,8,24,48,48,112,96,96,224, + 224,224,224,224,224,224,96,96,112,48,48,24,8,5,21,21, + 8,1,252,128,192,96,96,48,48,48,56,56,56,56,56,56, + 56,48,48,48,96,96,192,128,10,11,22,13,1,6,12,0, + 12,0,76,128,237,192,127,128,30,0,127,128,237,192,76,128, + 12,0,12,0,12,12,24,14,1,0,6,0,6,0,6,0, + 6,0,6,0,255,240,255,240,6,0,6,0,6,0,6,0, + 6,0,4,9,9,6,1,251,96,240,240,112,48,96,96,192, + 128,6,3,3,8,1,5,252,252,252,4,4,4,6,1,0, + 96,240,240,96,7,17,17,7,0,0,6,6,4,12,12,8, + 24,24,16,48,48,32,96,96,64,192,192,11,17,34,12,0, + 0,14,0,59,128,49,128,113,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,224,113,192,113,192,113,192,49,128,59, + 128,14,0,9,17,34,12,2,0,12,0,60,0,252,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,62,0,255,128,10,17,34,12,1, + 0,30,0,63,0,127,128,199,128,131,128,3,128,3,128,3, + 0,7,0,6,0,12,0,12,0,24,64,48,64,127,192,255, + 192,255,128,11,17,34,12,0,0,15,0,63,128,99,192,65, + 192,1,192,3,128,7,0,31,0,7,192,1,224,1,224,0, + 224,0,224,96,224,241,192,251,128,126,0,11,17,34,12,0, + 0,1,128,3,128,7,128,7,128,15,128,27,128,51,128,51, + 128,99,128,195,128,255,224,255,224,255,224,3,128,3,128,3, + 128,3,128,11,17,34,12,0,0,31,224,31,192,63,192,48, + 0,32,0,112,0,127,0,127,128,127,192,7,192,1,192,0, + 192,0,192,96,192,241,128,251,128,126,0,11,17,34,12,1, + 0,1,224,7,128,30,0,60,0,56,0,120,0,119,0,123, + 128,241,192,241,224,241,224,241,224,241,224,113,192,113,192,59, + 128,30,0,11,17,34,12,0,0,63,224,127,224,127,192,192, + 192,129,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,14,0,14,0,12,0,28,0,28,0,11,17,34,12,0, + 0,31,0,59,128,113,192,113,192,113,192,121,128,59,0,63, + 0,31,128,55,192,99,192,225,224,225,224,225,224,241,192,123, + 128,62,0,11,17,34,12,0,0,14,0,59,128,113,192,113, + 192,241,224,241,224,241,224,241,224,113,224,59,192,31,192,3, + 192,3,128,7,128,15,0,60,0,240,0,4,12,12,8,2, + 0,96,240,240,96,0,0,0,0,96,240,240,96,4,17,17, + 8,2,251,96,240,240,96,0,0,0,0,96,240,240,112,48, + 96,96,192,128,11,12,24,14,1,0,0,96,1,224,7,192, + 31,0,60,0,224,0,224,0,60,0,31,0,7,192,1,224, + 0,96,11,6,12,14,1,3,255,224,255,224,0,0,0,0, + 255,224,255,224,11,12,24,14,1,0,192,0,240,0,124,0, + 31,0,7,128,0,224,0,224,7,128,31,0,124,0,240,0, + 192,0,9,17,34,12,1,0,62,0,111,0,231,128,231,128, + 71,128,7,128,15,0,14,0,28,0,24,0,24,0,0,0, + 0,0,24,0,60,0,60,0,24,0,20,21,63,23,1,252, + 0,124,0,3,247,128,15,128,192,30,0,96,60,0,32,56, + 59,48,112,255,16,113,231,16,241,199,16,227,198,16,227,142, + 16,227,142,48,227,142,32,243,158,96,241,254,192,112,243,128, + 120,0,0,56,0,0,30,0,0,7,131,0,1,252,0,17, + 17,51,18,0,0,1,128,0,1,192,0,3,192,0,3,224, + 0,3,224,0,6,224,0,6,240,0,4,112,0,12,112,0, + 8,120,0,8,56,0,31,248,0,16,60,0,48,60,0,48, + 30,0,112,30,0,248,127,128,14,17,34,16,0,0,255,192, + 60,240,60,120,60,120,60,120,60,120,60,112,60,192,63,224, + 60,120,60,60,60,60,60,60,60,60,60,56,60,120,255,224, + 15,17,34,18,1,0,3,242,30,62,60,14,120,6,120,2, + 240,2,240,0,240,0,240,0,240,0,240,0,240,0,120,0, + 120,2,60,14,31,60,7,240,16,17,34,18,1,0,255,224, + 60,120,60,60,60,30,60,30,60,15,60,15,60,15,60,15, + 60,15,60,15,60,14,60,30,60,28,60,60,60,120,255,224, + 15,17,34,17,1,0,255,252,60,28,60,12,60,4,60,4, + 60,32,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,6,60,14,255,254,14,17,34,15,0,0,255,252, + 60,28,60,12,60,4,60,4,60,32,60,32,60,96,63,224, + 60,96,60,32,60,32,60,0,60,0,60,0,60,0,255,0, + 17,17,51,19,1,0,3,242,0,30,62,0,60,14,0,120, + 6,0,120,2,0,240,2,0,240,0,0,240,0,0,240,0, + 0,240,127,128,240,30,0,240,30,0,120,30,0,120,30,0, + 56,30,0,30,30,0,7,248,0,18,17,51,19,0,0,255, + 63,192,60,15,0,60,15,0,60,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,63,255,0,60,15,0,60,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,255, + 63,192,8,17,17,10,0,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,11,19,38,12,0,254,31, + 224,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,231,128,231,128,231, + 0,231,0,60,0,18,17,51,19,0,0,255,63,128,60,30, + 0,60,24,0,60,48,0,60,96,0,60,192,0,61,128,0, + 63,192,0,63,192,0,61,224,0,60,240,0,60,248,0,60, + 124,0,60,62,0,60,31,0,60,15,128,255,31,192,15,17, + 34,16,0,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,6, + 60,12,60,28,255,252,21,17,51,24,1,0,252,1,248,60, + 3,224,62,3,224,62,7,224,47,5,224,47,13,224,39,9, + 224,39,137,224,39,153,224,35,145,224,35,241,224,35,241,224, + 33,225,224,33,225,224,32,193,224,32,193,224,248,7,248,17, + 17,51,18,0,0,248,15,128,124,7,0,62,2,0,63,2, + 0,63,130,0,47,194,0,39,226,0,35,226,0,33,242,0, + 32,250,0,32,126,0,32,62,0,32,30,0,32,30,0,32, + 14,0,96,6,0,248,2,0,16,17,34,19,1,0,7,224, + 28,56,56,28,120,30,112,14,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,112,14,120,30,56,28,28,56,7,224, + 14,17,34,15,0,0,255,224,60,120,60,60,60,60,60,60, + 60,60,60,60,60,120,63,224,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,255,0,17,22,66,19,1,251,7,224, + 0,28,56,0,56,28,0,120,30,0,112,14,0,240,15,0, + 240,15,0,240,15,0,240,15,0,240,15,0,240,15,0,240, + 15,0,240,14,0,120,30,0,120,28,0,60,56,0,31,224, + 0,7,192,0,1,224,0,1,240,0,0,252,0,0,63,128, + 16,17,34,18,1,0,255,224,60,120,60,56,60,60,60,60, + 60,60,60,56,60,112,63,192,61,224,60,240,60,240,60,120, + 60,124,60,60,60,30,255,31,12,17,34,14,1,0,63,160, + 113,224,224,224,224,96,224,32,248,0,126,0,127,128,63,192, + 15,224,7,224,129,240,128,240,192,240,224,224,249,224,191,128, + 14,17,34,16,1,0,255,252,231,156,199,140,135,132,135,132, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,31,224,17,17,51,18,0,0,255,15, + 128,126,7,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,6,0,30,4,0,31,12,0,7,248, + 0,17,17,51,18,0,0,255,31,128,60,6,0,60,4,0, + 30,4,0,30,12,0,15,8,0,15,24,0,15,24,0,7, + 144,0,7,176,0,3,224,0,3,224,0,3,224,0,1,192, + 0,1,192,0,0,128,0,0,128,0,24,17,51,25,0,0, + 255,127,159,60,30,6,60,30,4,30,15,12,30,31,8,30, + 31,24,15,23,152,15,55,144,15,39,176,7,227,176,7,195, + 224,7,195,224,3,193,224,3,129,192,3,129,192,1,0,128, + 1,0,128,16,17,34,18,1,0,255,63,62,12,30,8,31, + 24,15,48,15,160,7,224,3,192,3,224,3,224,3,240,6, + 240,12,120,8,124,24,60,56,62,252,255,18,17,51,18,0, + 0,255,143,192,62,3,0,30,2,0,15,6,0,15,12,0, + 7,140,0,7,152,0,3,208,0,3,240,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,7,248,0,14,17,34,17,1,0,255,248,224,248,193,240, + 193,240,131,224,3,192,7,192,7,128,15,128,15,0,30,0, + 62,4,60,4,124,12,120,28,248,60,255,248,5,21,21,8, + 1,252,248,224,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,224,248,7,17,17,7,0,0,192,192,64, + 96,96,32,48,48,16,24,24,8,12,12,4,6,6,5,21, + 21,8,1,252,248,56,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,56,248,8,10,10,15,3,7,24, + 24,60,36,102,102,102,195,195,129,12,2,4,12,0,251,255, + 240,255,240,5,4,4,8,1,13,224,112,48,24,10,12,24, + 12,1,0,62,0,119,0,227,128,227,128,67,128,15,128,115, + 128,227,128,227,128,231,128,255,192,113,128,11,17,34,13,1, + 0,240,0,112,0,112,0,112,0,112,0,119,0,127,192,113, + 192,112,224,112,224,112,224,112,224,112,224,112,224,113,192,123, + 192,103,0,9,12,24,11,1,0,30,0,115,0,115,128,227, + 128,225,0,224,0,224,0,224,0,240,0,120,128,127,0,30, + 0,12,17,34,14,1,0,1,224,0,224,0,224,0,224,0, + 224,30,224,127,224,113,224,224,224,224,224,224,224,224,224,224, + 224,240,224,113,224,126,224,28,112,9,12,24,11,1,0,30, + 0,115,0,115,128,227,128,227,128,255,128,224,0,224,0,240, + 0,120,128,127,0,30,0,8,17,17,8,1,0,30,51,115, + 112,112,252,112,112,112,112,112,112,112,112,112,112,248,10,17, + 34,12,1,251,62,192,119,192,227,128,227,128,227,128,227,128, + 115,0,62,0,96,0,224,0,255,128,255,192,127,192,193,192, + 192,192,225,128,127,0,12,17,34,14,1,0,240,0,112,0, + 112,0,112,0,112,0,115,192,127,224,120,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,5,17, + 17,7,1,0,112,112,112,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,7,22,22,8,255,251,14,14,14,0,0, + 30,14,14,14,14,14,14,14,14,14,14,14,14,206,206,204, + 120,13,17,34,15,1,0,240,0,112,0,112,0,112,0,112, + 0,115,240,112,192,113,128,115,0,118,0,126,0,127,0,119, + 128,115,192,113,224,112,240,251,248,5,17,17,7,1,0,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,248, + 19,12,36,21,1,0,243,199,128,119,223,192,120,241,192,112, + 225,192,112,225,192,112,225,192,112,225,192,112,225,192,112,225, + 192,112,225,192,112,225,192,249,243,224,12,12,24,14,1,0, + 243,192,119,224,120,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,249,240,11,12,24,13,1,0,31,0, + 113,192,113,192,224,224,224,224,224,224,224,224,224,224,224,224, + 113,192,113,192,31,0,12,17,34,14,1,251,227,192,119,224, + 120,224,112,112,112,112,112,112,112,112,112,112,112,112,120,224, + 119,224,115,128,112,0,112,0,112,0,112,0,252,0,12,17, + 34,14,1,251,14,96,63,224,113,224,112,224,224,224,224,224, + 224,224,224,224,224,224,113,224,126,224,28,224,0,224,0,224, + 0,224,0,224,1,240,9,12,24,11,1,0,239,0,127,128, + 115,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,248,0,8,12,12,10,1,0,62,102,226,224,248,124, + 62,31,135,135,198,252,8,16,16,8,0,0,8,24,56,120, + 255,56,56,56,56,56,56,56,56,57,62,28,12,12,24,14, + 1,0,241,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,113,224,126,240,60,224,12,12,24,12,0,0, + 252,240,112,96,120,64,56,192,56,128,28,128,29,128,31,0, + 15,0,15,0,6,0,6,0,17,12,36,18,0,0,253,247, + 128,120,227,0,56,227,0,56,226,0,60,230,0,29,118,0, + 29,116,0,31,60,0,14,56,0,14,56,0,4,16,0,4, + 16,0,12,12,24,12,0,0,252,240,120,96,60,192,29,128, + 31,0,15,0,15,0,31,128,27,192,49,192,97,224,243,240, + 12,17,34,12,0,251,253,240,120,96,56,64,56,192,60,128, + 28,128,29,128,31,0,15,0,15,0,6,0,6,0,6,0, + 100,0,236,0,248,0,112,0,9,12,24,11,1,0,255,128, + 199,0,143,0,142,0,30,0,28,0,60,0,56,0,120,128, + 113,128,241,128,255,128,7,21,21,10,1,252,14,24,48,48, + 48,48,48,48,48,96,192,96,48,48,48,48,48,48,48,24, + 14,2,22,22,6,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,7,21,21, + 10,1,252,224,48,24,24,24,24,24,24,24,12,6,12,24, + 24,24,24,24,24,24,48,224,12,6,12,13,0,6,24,0, + 126,16,255,16,143,240,135,224,1,128,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=30 x= 4 y=18 dx=33 dy= 0 ascent=30 len=108 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =30 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24[10820] U8G_SECTION(".progmem.u8g_font_timB24") = { + 0,38,49,251,244,23,5,149,13,202,32,255,249,30,249,23, + 249,0,0,0,8,0,1,5,23,23,11,3,0,112,248,248, + 248,248,248,248,112,112,112,112,32,32,32,32,0,0,0,112, + 248,248,248,112,11,11,22,19,2,12,96,192,241,224,241,224, + 241,224,241,224,241,224,241,224,96,192,96,192,96,192,96,192, + 16,23,46,17,0,0,3,12,3,12,7,28,7,28,6,24, + 6,24,127,255,127,255,14,56,12,48,12,48,12,48,12,48, + 28,112,255,254,255,254,24,96,24,96,24,96,56,224,56,224, + 48,192,48,192,15,28,56,16,1,253,3,0,3,0,15,232, + 63,248,115,56,99,24,227,8,227,8,243,0,251,0,127,0, + 127,128,63,224,15,240,3,248,3,252,3,124,131,62,131,30, + 131,30,195,28,195,60,243,120,255,224,131,0,3,0,3,0, + 3,0,24,23,69,33,4,0,7,128,32,15,192,224,30,127, + 192,60,32,192,124,33,128,120,33,128,248,99,0,240,71,0, + 240,198,0,240,206,0,241,140,60,127,24,126,60,25,243,0, + 49,225,0,51,193,0,99,193,0,231,195,0,199,130,1,199, + 134,1,135,134,3,3,140,3,3,248,6,1,224,22,23,69, + 28,2,0,1,240,0,3,188,0,7,30,0,7,14,0,15, + 14,0,15,14,0,15,140,0,7,216,0,7,240,0,3,224, + 252,7,240,112,29,240,48,57,248,96,112,252,64,240,252,192, + 240,127,128,248,63,0,248,31,128,252,31,192,254,63,228,127, + 243,252,127,193,252,31,0,120,4,11,11,9,2,12,96,240, + 240,240,240,240,240,96,96,96,96,8,29,29,11,2,250,3, + 6,12,24,24,48,48,112,96,224,224,224,224,224,224,224,224, + 224,224,224,96,112,48,48,24,24,12,6,3,8,29,29,11, + 0,250,192,96,48,24,24,12,12,14,6,7,7,7,7,7, + 7,7,7,7,7,7,6,14,12,12,24,24,48,96,192,13, + 14,28,17,1,9,3,0,7,0,7,0,231,56,242,120,122, + 240,15,128,15,128,122,240,242,120,231,56,7,0,7,0,6, + 0,15,15,30,19,2,0,3,128,3,128,3,128,3,128,3, + 128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3, + 128,3,128,3,128,6,11,11,8,1,250,56,124,124,124,60, + 12,8,24,48,96,192,8,4,4,11,1,6,255,255,255,255, + 5,5,5,8,1,0,112,248,248,248,112,9,25,50,9,0, + 0,1,128,1,128,1,0,3,0,3,0,3,0,6,0,6, + 0,6,0,4,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,48,0,96,0,96,0,96,0,192, + 0,192,0,14,23,46,16,1,0,7,128,31,224,28,224,56, + 112,120,112,120,120,120,120,248,124,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,120,120,120,120,120,120,56, + 112,28,224,15,192,7,128,13,23,46,16,2,0,1,128,7, + 128,31,128,255,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,31,192,255,248,16,23,46,16,0, + 0,3,192,15,240,31,248,63,248,48,252,96,124,64,124,0, + 124,0,120,0,120,0,120,0,240,0,224,1,192,1,128,3, + 0,7,1,14,3,28,6,63,254,127,254,255,252,255,252,14, + 23,46,16,1,0,7,192,31,240,63,240,48,248,96,120,64, + 120,0,120,0,112,0,192,3,224,15,240,15,248,3,248,0, + 252,0,124,0,60,0,60,0,60,96,56,240,56,248,112,127, + 192,31,0,14,23,46,16,1,0,0,112,0,240,0,240,1, + 240,3,240,6,240,6,240,12,240,24,240,24,240,48,240,96, + 240,96,240,192,240,255,252,255,252,255,252,255,252,0,240,0, + 240,0,240,0,240,0,240,13,23,46,16,1,0,31,248,31, + 248,31,248,31,248,48,0,48,0,32,0,62,0,127,128,127, + 224,127,240,127,240,3,248,0,248,0,120,0,56,0,56,0, + 56,96,48,240,48,248,96,127,192,31,0,14,23,46,16,1, + 0,0,28,0,240,3,192,7,128,15,0,30,0,62,0,60, + 0,124,0,127,224,253,240,248,248,248,120,248,124,248,124,248, + 124,248,124,120,124,120,120,120,120,56,112,28,224,15,192,13, + 23,46,16,2,0,127,248,127,248,255,248,255,248,192,48,128, + 112,128,112,0,96,0,224,0,224,0,192,1,192,1,192,3, + 128,3,128,3,128,7,0,7,0,7,0,14,0,14,0,14, + 0,28,0,14,23,46,16,1,0,15,224,62,240,60,120,120, + 120,120,56,120,56,124,56,126,112,63,224,63,128,31,192,15, + 224,63,240,113,248,112,252,224,124,224,60,224,60,224,60,240, + 56,120,120,127,240,31,192,14,23,46,16,1,0,15,192,28, + 224,56,112,120,120,120,120,248,120,248,124,248,124,248,124,248, + 124,120,124,124,124,62,252,31,248,0,248,0,240,1,240,1, + 224,3,192,7,128,15,0,60,0,224,0,5,16,16,11,3, + 0,112,248,248,248,112,0,0,0,0,0,0,112,248,248,248, + 112,6,22,22,11,2,250,56,124,124,124,56,0,0,0,0, + 0,0,56,124,124,124,60,12,8,24,48,96,192,16,15,30, + 19,1,0,0,3,0,15,0,127,1,252,15,224,63,128,252, + 0,240,0,252,0,63,128,15,224,1,252,0,127,0,15,0, + 3,15,10,20,19,2,3,255,254,255,254,255,254,0,0,0, + 0,0,0,0,0,255,254,255,254,255,254,16,15,30,19,2, + 0,192,0,240,0,254,0,63,128,7,240,1,252,0,63,0, + 15,0,63,1,252,7,240,63,128,254,0,240,0,192,0,12, + 23,46,16,2,0,63,0,115,192,225,224,225,240,241,240,241, + 240,97,240,1,224,1,224,3,192,3,128,3,0,6,0,4, + 0,4,0,0,0,0,0,0,0,14,0,31,0,31,0,31, + 0,14,0,26,27,108,31,2,251,0,31,224,0,0,252,60, + 0,3,224,14,0,7,128,3,0,15,0,1,0,30,0,1, + 128,62,15,56,128,60,31,248,192,124,124,248,64,120,120,120, + 64,248,248,240,64,248,240,240,64,241,240,240,64,241,240,240, + 64,241,224,240,192,241,225,224,128,241,225,225,128,241,227,227, + 0,113,243,227,0,120,254,254,0,120,120,120,0,60,0,0, + 0,28,0,0,0,14,0,1,128,7,128,7,0,1,224,60, + 0,0,63,224,0,21,23,69,24,1,0,0,32,0,0,96, + 0,0,112,0,0,240,0,0,248,0,0,248,0,1,248,0, + 1,124,0,1,124,0,3,62,0,2,62,0,6,62,0,6, + 31,0,4,31,0,12,15,0,15,255,128,24,15,128,24,7, + 192,16,7,192,48,3,224,48,3,224,112,7,240,252,31,248, + 19,23,69,22,1,0,255,252,0,63,31,0,31,15,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 128,31,15,128,31,62,0,31,252,0,31,15,128,31,7,192, + 31,7,224,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,192,31,7,192,63,15,0,255,252,0,19,23,69,24,2, + 0,1,252,32,7,255,96,15,7,224,30,1,224,60,0,224, + 124,0,96,124,0,96,248,0,32,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,124,0,0,124,0,0,60,0,32,30,0,96,15,129,192, + 3,255,128,0,254,0,22,23,69,24,0,0,255,252,0,63, + 255,128,31,7,224,31,1,240,31,1,240,31,0,248,31,0, + 248,31,0,252,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,248,31,0,248,31, + 0,248,31,1,240,31,1,224,31,7,192,63,255,0,255,252, + 0,21,23,69,22,0,0,255,255,224,63,255,224,31,0,224, + 31,0,96,31,0,96,31,0,32,31,0,32,31,4,0,31, + 4,0,31,12,0,31,28,0,31,252,0,31,28,0,31,12, + 0,31,4,0,31,4,0,31,0,8,31,0,24,31,0,48, + 31,0,112,31,1,240,63,255,224,255,255,224,19,23,69,20, + 0,0,255,255,224,63,255,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,0,32,31,4,0,31,4,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,4,0,31, + 4,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,63,128,0,255,224,0,22,23,69,25,2,0,1,252,32, + 7,255,96,15,7,224,30,1,224,60,0,224,124,0,96,124, + 0,96,248,0,32,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,31,252,248,7,240,248,3,224,124,3,224, + 124,3,224,60,3,224,62,3,224,30,7,224,15,143,224,3, + 255,0,24,23,69,25,0,0,255,231,255,63,129,252,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,255,248,31,255,248,31,0,248,31, + 0,248,31,0,248,31,0,248,31,0,248,31,0,248,31,0, + 248,31,0,248,31,0,248,63,129,252,255,231,255,11,23,46, + 13,1,0,255,224,63,128,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,63,128,255, + 224,15,26,52,16,0,253,15,254,3,248,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,97,240,241, + 240,241,240,243,224,227,224,127,192,31,0,24,23,69,25,1, + 0,255,207,252,127,3,224,62,1,192,62,3,128,62,7,0, + 62,14,0,62,28,0,62,56,0,62,112,0,62,224,0,63, + 240,0,63,248,0,63,252,0,62,254,0,62,127,0,62,63, + 128,62,31,192,62,15,224,62,7,240,62,3,248,62,1,252, + 127,0,254,255,195,255,20,23,69,22,1,0,255,224,0,63, + 128,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,16,31, + 0,48,31,0,96,31,0,224,31,129,224,63,255,192,255,255, + 192,28,23,92,31,1,0,255,0,15,240,63,0,31,192,31, + 128,31,128,31,128,63,128,23,192,63,128,23,192,47,128,23, + 192,111,128,19,224,79,128,19,224,207,128,19,224,207,128,17, + 240,143,128,17,241,143,128,16,249,15,128,16,251,15,128,16, + 251,15,128,16,126,15,128,16,126,15,128,16,124,15,128,16, + 60,15,128,16,60,15,128,16,24,15,128,56,24,31,192,254, + 24,63,240,22,23,69,24,1,0,254,1,252,127,0,112,63, + 128,32,31,128,32,31,192,32,31,224,32,23,240,32,19,248, + 32,17,248,32,17,252,32,16,254,32,16,127,32,16,63,32, + 16,31,160,16,31,224,16,15,224,16,7,224,16,3,224,16, + 3,224,16,1,224,16,0,224,56,0,96,254,0,32,21,23, + 69,25,2,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,19,23,69,20,0,0,255, + 252,0,63,31,128,31,15,192,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,192,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,63,128, + 0,255,224,0,22,27,81,26,2,252,1,252,0,7,255,0, + 15,143,128,30,3,192,60,1,224,124,1,240,120,0,240,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,124,1,240, + 124,1,240,62,3,224,31,7,192,7,255,0,1,252,0,0, + 254,0,0,127,132,0,31,248,0,7,224,22,23,69,24,1, + 0,255,252,0,63,31,128,31,7,192,31,7,224,31,3,224, + 31,3,224,31,3,224,31,3,224,31,7,224,31,7,192,31, + 31,128,31,252,0,31,126,0,31,62,0,31,63,0,31,31, + 128,31,31,128,31,15,192,31,7,224,31,7,224,31,3,240, + 63,129,248,255,225,252,15,23,46,18,1,0,15,196,56,124, + 112,60,112,28,240,12,240,12,248,4,252,0,255,0,127,192, + 63,240,31,248,15,252,3,252,1,254,128,126,128,62,192,30, + 192,30,224,28,240,28,248,56,143,224,19,23,69,22,1,0, + 255,255,224,249,243,224,225,240,224,193,240,96,129,240,32,129, + 240,32,129,240,32,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,3, + 248,0,15,254,0,23,23,69,24,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,23,69,24,1,0,255,195,252,127,0,240,62,0,96,63, + 0,64,31,0,192,31,128,192,15,128,128,15,129,128,15,193, + 0,7,193,0,7,195,0,3,226,0,3,230,0,3,246,0, + 1,244,0,1,252,0,0,248,0,0,248,0,0,248,0,0, + 112,0,0,112,0,0,32,0,0,32,0,32,23,92,33,0, + 0,255,239,255,63,127,3,248,14,63,1,248,12,31,1,248, + 12,31,1,248,8,31,129,252,24,15,129,252,24,15,129,124, + 16,15,195,124,48,7,194,126,48,7,198,62,32,7,230,62, + 96,3,228,62,96,3,236,31,64,3,248,31,192,1,248,31, + 192,1,248,15,128,1,240,15,128,0,240,15,128,0,224,7, + 0,0,224,7,0,0,224,7,0,0,64,2,0,21,23,69, + 24,1,0,255,207,224,127,3,0,63,2,0,31,134,0,31, + 132,0,15,204,0,15,200,0,7,248,0,3,240,0,3,240, + 0,1,248,0,0,248,0,1,252,0,1,124,0,3,62,0, + 2,63,0,6,31,0,4,31,128,12,15,192,8,15,192,24, + 7,224,56,7,240,254,63,248,22,23,69,24,1,0,255,195, + 252,127,0,240,63,0,96,63,0,96,31,128,192,31,128,128, + 15,193,128,15,195,0,7,227,0,3,230,0,3,244,0,1, + 252,0,1,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,1,252,0, + 7,255,0,19,23,69,22,1,0,63,255,192,126,15,128,120, + 31,128,112,31,0,96,63,0,64,126,0,0,126,0,0,252, + 0,0,252,0,1,248,0,1,240,0,3,240,0,3,224,0, + 7,224,0,7,192,0,15,192,32,31,128,32,31,128,96,63, + 0,96,63,0,224,126,1,224,126,7,192,255,255,192,7,28, + 28,11,2,251,254,240,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,254, + 8,26,26,9,0,0,128,192,192,192,96,96,96,96,48,48, + 48,24,24,24,24,12,12,12,4,6,6,6,3,3,3,3, + 7,28,28,11,1,251,254,30,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 30,254,11,13,26,19,4,10,14,0,14,0,31,0,31,0, + 27,0,59,128,59,128,113,192,113,192,97,192,224,224,224,224, + 192,96,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,11,1,17,192,224,112,56,12,2,14,16,32,16,1,0, + 31,128,49,224,112,240,120,240,120,240,48,240,1,240,7,240, + 28,240,56,240,120,240,240,240,249,240,255,244,126,252,60,120, + 17,22,66,18,0,0,252,0,0,124,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,120,0,61,254,0,63,254, + 0,62,31,0,60,31,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,15,128,60,15,0,60,31,0,62, + 62,0,55,252,0,33,240,0,14,16,32,15,1,0,7,240, + 30,120,60,60,124,60,120,24,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,124,0,62,24,31,240,15,224,16,22, + 44,18,1,0,0,252,0,124,0,60,0,60,0,60,0,60, + 15,188,63,252,124,60,120,60,248,60,240,60,240,60,240,60, + 240,60,240,60,240,60,240,60,120,60,124,126,63,255,15,184, + 14,16,32,15,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,12,23,46,11,0,0,7,224,30,112, + 28,240,60,240,60,96,60,0,60,0,255,128,255,128,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,126,0,255,0,14,23,46,16,1,249, + 15,192,61,252,112,252,240,240,240,120,240,120,240,120,240,120, + 120,248,63,240,31,192,60,0,96,0,224,0,255,224,255,248, + 127,252,48,60,96,28,192,12,224,28,127,248,31,224,17,22, + 66,18,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,120,0,61,252,0,63,254,0,62, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 126,63,0,255,127,128,8,23,23,9,0,0,24,60,60,60, + 24,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,10,30,60,11,254,249,1,128,3,192,3,192,3, + 192,1,128,0,0,0,0,15,192,7,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,99,192,243,192,243, + 128,119,128,62,0,18,22,66,18,0,0,252,0,0,124,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,31,0, + 60,14,0,60,12,0,60,24,0,60,48,0,60,96,0,60, + 192,0,61,192,0,63,224,0,61,240,0,60,248,0,60,124, + 0,60,62,0,60,31,0,126,15,128,255,31,192,8,22,22, + 9,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,26,16,64,27,0,0,252, + 120,60,0,125,254,254,0,63,63,159,0,62,63,31,0,62, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,126,63,31,128,255,127,191,192,17, + 16,48,18,0,0,252,120,0,125,252,0,63,62,0,62,30, + 0,62,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,14,16,32,17,1,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,23,69,18,0, + 249,252,248,0,125,254,0,63,31,0,62,15,0,60,15,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,60,7,128,62,15,0,63,15,0,63,254,0,60,248, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 126,0,0,255,0,0,16,23,46,18,1,249,15,196,62,236, + 124,60,120,60,248,60,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,120,60,120,124,63,252,15,60,0,60,0,60, + 0,60,0,60,0,60,0,126,0,255,13,16,32,15,1,0, + 252,112,124,248,63,248,63,120,62,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,126,0,255,0, + 10,16,32,13,1,0,31,64,113,192,96,192,224,192,240,64, + 252,0,127,0,127,128,63,128,15,192,3,192,129,192,193,192, + 193,192,227,128,191,0,10,21,42,11,0,0,4,0,12,0, + 28,0,28,0,60,0,127,128,255,128,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,64, + 62,192,63,128,30,0,17,16,48,18,0,0,252,126,0,124, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,62,0,62,95,0,31,223,128,7,140,0,15,16,32,17, + 0,0,255,62,124,12,60,8,62,24,30,16,31,16,31,48, + 15,32,15,32,7,224,7,192,7,192,3,128,3,128,1,0, + 1,0,23,16,48,24,0,0,255,127,190,126,62,28,60,30, + 8,62,30,24,30,31,16,31,31,48,31,63,48,15,47,160, + 15,231,224,7,231,192,7,199,192,7,195,192,3,131,128,3, + 131,128,1,1,0,1,1,0,16,16,32,17,0,0,255,62, + 126,24,62,24,31,48,31,96,15,192,15,192,7,192,3,224, + 3,224,7,240,13,248,24,248,24,124,48,124,252,255,15,23, + 46,17,0,249,255,190,126,12,62,8,62,8,31,24,31,16, + 15,16,15,176,15,160,7,160,7,224,7,192,3,192,3,192, + 1,128,1,128,1,128,1,0,115,0,243,0,246,0,254,0, + 120,0,12,16,32,15,1,0,255,240,227,240,195,224,135,224, + 135,192,15,128,15,128,31,0,31,0,62,0,62,16,124,16, + 124,48,248,48,248,240,255,240,10,27,54,13,1,252,7,192, + 14,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,56,0,112,0,224,0,112,0,56,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 14,0,7,192,2,30,30,7,3,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,10,27,54,13,1,252,248,0, + 28,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,7,0,3,128,1,192,3,128,7,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 28,0,248,0,15,8,16,17,1,8,28,0,63,0,127,130, + 255,198,143,254,131,252,1,248,0,112,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,8,0, + 1,5,23,23,11,3,249,112,248,248,248,112,0,0,0,32, + 32,32,32,112,112,112,112,248,248,248,248,248,248,112,13,25, + 50,17,1,251,0,8,0,8,0,24,0,16,7,240,28,224, + 56,240,120,240,240,240,240,224,240,128,241,128,241,0,243,0, + 242,0,250,16,126,48,127,224,63,192,15,0,8,0,16,0, + 16,0,32,0,32,0,16,23,46,17,1,0,0,240,3,252, + 7,30,14,30,14,30,30,12,30,0,30,0,31,0,15,0, + 15,0,127,240,127,240,7,128,7,128,7,128,55,128,127,1, + 239,3,199,135,199,255,238,254,124,124,14,15,30,17,1,4, + 96,24,247,188,255,252,127,248,60,240,120,120,112,56,112,56, + 112,56,120,120,60,240,127,248,255,252,247,188,96,24,18,23, + 69,17,1,0,255,135,192,62,3,128,62,3,0,31,3,0, + 31,6,0,31,134,0,15,132,0,15,140,0,7,200,0,7, + 216,0,7,208,0,3,240,0,31,252,0,31,252,0,3,224, + 0,31,252,0,31,252,0,1,224,0,1,224,0,1,224,0, + 1,224,0,3,240,0,15,252,0,2,30,30,7,3,249,192, + 192,192,192,192,192,192,192,192,192,192,192,0,0,0,0,0, + 0,192,192,192,192,192,192,192,192,192,192,192,192,12,28,56, + 17,2,251,15,128,24,192,48,224,113,224,113,224,120,192,60, + 0,62,0,31,0,15,128,63,192,99,224,193,224,192,240,224, + 112,240,48,120,48,124,96,63,192,31,128,7,128,3,192,49, + 224,120,224,120,224,112,192,49,128,31,0,8,4,4,11,2, + 18,66,231,231,66,22,23,69,25,1,0,1,254,0,7,255, + 128,15,3,192,28,0,224,56,0,112,48,254,48,113,199,56, + 99,131,24,231,131,28,199,0,12,199,0,12,199,0,12,199, + 0,12,199,128,12,195,195,12,227,230,28,96,252,24,112,0, + 56,56,0,112,28,0,224,15,3,192,7,255,128,1,254,0, + 9,14,28,10,0,9,60,0,102,0,103,0,103,0,31,0, + 103,0,199,0,199,0,239,128,115,0,0,0,0,0,255,128, + 255,128,14,14,28,17,2,1,2,4,6,12,14,28,28,56, + 56,112,112,224,225,192,225,192,112,224,56,112,28,56,14,28, + 6,12,2,4,16,9,18,19,1,3,255,255,255,255,255,255, + 0,7,0,7,0,7,0,7,0,7,0,7,8,4,4,11, + 1,6,255,255,255,255,22,23,69,25,2,0,1,254,0,7, + 255,128,15,3,192,28,0,224,56,0,112,51,252,48,113,206, + 56,96,199,24,224,199,28,192,199,12,192,206,12,192,248,12, + 192,220,12,192,206,12,192,198,12,224,199,28,97,195,152,115, + 227,248,56,0,112,28,0,224,15,3,192,7,255,128,1,254, + 0,9,2,4,11,1,18,255,128,255,128,9,10,20,13,2, + 13,28,0,127,0,99,0,193,128,193,128,193,128,193,128,99, + 0,127,0,60,0,15,19,38,19,2,0,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,0,0,255,254,255,254,255, + 254,10,14,28,10,1,9,62,0,127,0,199,128,131,128,3, + 128,3,128,3,0,6,0,12,0,24,0,48,64,127,192,255, + 128,255,128,9,14,28,10,1,9,30,0,63,0,103,128,67, + 128,3,0,6,0,31,0,7,128,3,128,3,128,3,128,195, + 128,231,0,126,0,7,6,6,11,3,17,6,14,28,56,96, + 128,16,22,44,19,2,250,248,252,120,124,120,60,120,60,120, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 124,124,252,127,191,95,56,64,0,224,0,224,0,224,0,224, + 0,224,0,16,29,58,18,1,250,15,255,63,255,63,140,127, + 140,255,140,255,140,255,140,255,140,255,140,255,140,255,140,127, + 140,63,140,63,140,15,140,1,140,1,140,1,140,1,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,4,4,4,8,2,9,96,240,240,96,7,7,7, + 11,1,249,6,12,28,14,198,238,124,9,14,28,10,0,9, + 12,0,124,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,255,128,9,14,28,11, + 1,9,28,0,119,0,99,0,227,128,227,128,227,128,227,128, + 99,0,119,0,28,0,0,0,0,0,255,128,255,128,14,14, + 28,17,1,1,129,0,193,128,225,192,112,224,56,112,28,56, + 14,28,14,28,28,56,56,112,112,224,225,192,193,128,129,0, + 23,23,69,25,0,0,12,0,8,124,0,24,28,0,48,28, + 0,48,28,0,96,28,0,96,28,0,192,28,1,128,28,1, + 128,28,3,12,28,6,28,28,6,60,28,12,124,255,152,252, + 0,24,220,0,49,156,0,99,156,0,99,28,0,199,254,1, + 199,254,1,128,28,3,0,28,3,0,28,23,23,69,25,0, + 0,12,0,48,124,0,96,28,0,96,28,0,192,28,0,128, + 28,1,128,28,3,0,28,2,0,28,6,0,28,12,240,28, + 25,248,28,27,60,28,50,28,255,176,28,0,96,28,0,96, + 24,0,192,48,1,128,96,1,128,192,3,1,130,6,3,254, + 6,7,252,12,15,252,22,23,69,25,1,0,30,0,16,63, + 0,48,103,128,96,67,128,96,3,0,192,6,0,192,31,1, + 128,7,131,0,3,131,0,3,134,24,3,140,56,195,140,120, + 231,24,248,126,49,248,0,49,184,0,99,56,0,199,56,0, + 198,56,1,143,252,3,143,252,3,0,56,6,0,56,6,0, + 56,12,23,46,16,2,249,7,0,15,128,15,128,15,128,7, + 0,0,0,0,0,0,0,2,0,2,0,6,0,12,0,28, + 0,60,0,120,0,120,0,248,96,248,240,248,240,248,112,120, + 112,60,224,31,192,21,30,90,24,1,0,6,0,0,7,0, + 0,3,128,0,1,192,0,0,96,0,0,0,0,0,32,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,30,90,24,1,0,0,3,0,0,7, + 0,0,14,0,0,28,0,0,48,0,0,64,0,0,0,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,30,90,24,1,0,0,96,0,0,240, + 0,1,248,0,1,152,0,3,12,0,2,4,0,0,0,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,29,87,24,1,0,0,194,0,1,246, + 0,3,124,0,2,24,0,0,0,0,0,0,0,0,32,0, + 0,96,0,0,112,0,0,240,0,0,248,0,0,248,0,1, + 248,0,1,124,0,1,124,0,3,62,0,2,62,0,6,62, + 0,6,31,0,4,31,0,12,15,0,15,255,128,24,15,128, + 24,7,192,16,7,192,48,3,224,48,3,224,112,7,240,252, + 31,248,21,29,87,24,1,0,1,8,0,3,156,0,3,156, + 0,1,8,0,0,0,0,0,0,0,0,32,0,0,96,0, + 0,112,0,0,240,0,0,248,0,0,248,0,1,248,0,1, + 124,0,1,124,0,3,62,0,2,62,0,6,62,0,6,31, + 0,4,31,0,12,15,0,15,255,128,24,15,128,24,7,192, + 16,7,192,48,3,224,48,3,224,112,7,240,252,31,248,21, + 30,90,24,1,0,0,224,0,1,176,0,3,24,0,2,8, + 0,3,24,0,1,176,0,0,224,0,0,0,0,0,96,0, + 0,112,0,0,240,0,0,248,0,0,248,0,1,248,0,1, + 124,0,1,124,0,3,62,0,2,62,0,6,62,0,6,31, + 0,4,31,0,12,15,0,15,255,128,24,15,128,24,7,192, + 16,7,192,48,3,224,48,3,224,112,7,240,252,31,248,32, + 23,92,33,0,0,3,255,255,252,0,255,255,252,0,99,224, + 28,0,99,224,12,0,195,224,12,0,195,224,4,1,131,224, + 4,1,131,224,128,3,3,224,128,3,3,225,128,2,3,227, + 128,7,255,255,128,7,255,227,128,12,3,225,128,12,3,224, + 128,24,3,224,128,24,3,224,1,56,3,224,3,48,3,224, + 6,112,3,224,14,112,3,224,62,248,7,255,252,254,31,255, + 252,19,30,90,24,2,249,1,252,32,7,255,96,15,7,224, + 30,1,224,60,0,224,124,0,96,124,0,96,248,0,32,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,124,0,0,124,0,0,60,0,32, + 30,0,96,15,129,192,3,255,128,0,254,0,0,24,0,0, + 48,0,0,112,0,0,56,0,3,24,0,3,184,0,1,240, + 0,21,30,90,22,0,0,6,0,0,7,0,0,3,128,0, + 1,192,0,0,96,0,0,48,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,30,90,22,0,0,0,1,128,0,3,128,0,7,0, + 0,14,0,0,24,0,0,48,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,30,90,22,0,0,0,48,0,0,120,0,0,252,0, + 0,204,0,1,134,0,1,2,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,29,87,22,0,0,0,132,0,1,206,0,1,206,0, + 0,132,0,0,0,0,0,0,0,255,255,224,63,255,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,0,32,31,4, + 0,31,4,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,4,0,31,4,0,31,0,8,31,0,24,31, + 0,48,31,0,112,31,1,240,63,255,224,255,255,224,11,30, + 60,13,1,0,192,0,224,0,112,0,56,0,12,0,6,0, + 0,0,255,224,63,128,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,63,128,255,224, + 12,30,60,13,1,0,0,48,0,112,0,224,1,192,3,0, + 6,0,0,0,255,224,63,128,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,63,128, + 255,224,11,30,60,13,1,0,6,0,15,0,31,128,25,128, + 48,192,32,64,0,0,255,224,63,128,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 63,128,255,224,11,29,58,13,1,0,16,128,57,192,57,192, + 16,128,0,0,0,0,255,224,63,128,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 63,128,255,224,22,23,69,24,0,0,255,254,0,63,15,128, + 31,3,224,31,1,240,31,1,240,31,0,248,31,0,248,31, + 0,252,31,0,252,31,0,252,255,240,124,255,240,124,255,240, + 124,31,0,124,31,0,252,31,0,248,31,0,248,31,0,248, + 31,1,240,31,1,224,31,3,192,63,15,128,127,254,0,22, + 29,87,24,1,0,0,97,0,0,251,0,1,190,0,1,12, + 0,0,0,0,0,0,0,254,1,252,127,0,112,63,128,32, + 31,128,32,31,192,32,31,224,32,23,240,32,19,248,32,17, + 248,32,17,252,32,16,254,32,16,127,32,16,63,32,16,31, + 160,16,31,224,16,15,224,16,7,224,16,3,224,16,3,224, + 16,1,224,16,0,224,56,0,96,254,0,32,21,30,90,25, + 2,0,6,0,0,7,0,0,3,128,0,1,192,0,0,96, + 0,0,48,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,30,90,25, + 2,0,0,3,128,0,7,0,0,14,0,0,24,0,0,48, + 0,0,96,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,30,90,25, + 2,0,0,48,0,0,120,0,0,252,0,0,204,0,1,134, + 0,1,2,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,29,87,25, + 2,0,0,194,0,1,246,0,3,124,0,2,24,0,0,0, + 0,0,0,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,21,29,87,25,2,0,0, + 132,0,1,206,0,1,206,0,0,132,0,0,0,0,0,0, + 0,1,252,0,7,255,0,15,143,128,30,3,192,60,1,224, + 124,1,240,120,0,240,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,120,0,240,124,1,240,60,1,224,30,3,192,15,143,128, + 7,255,0,1,252,0,15,16,32,19,2,0,64,4,224,14, + 240,30,120,60,60,120,30,240,15,224,7,192,7,192,15,224, + 30,240,60,120,120,60,240,30,224,14,64,4,21,27,81,26, + 2,254,0,0,48,0,0,96,1,252,64,7,143,192,14,3, + 128,30,1,192,60,3,224,124,6,240,120,4,240,248,12,248, + 248,24,248,248,24,248,248,48,248,248,32,248,248,96,248,248, + 192,248,248,128,248,249,128,248,123,0,240,126,1,240,62,1, + 224,28,3,192,14,7,128,31,254,0,17,248,0,48,0,0, + 96,0,0,23,30,90,24,0,0,0,192,0,0,224,0,0, + 112,0,0,56,0,0,12,0,0,2,0,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,30,90,24,0,0,0,0,192,0,1,192,0, + 3,128,0,7,0,0,12,0,0,16,0,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,30,90,24,0,0,0,12,0,0,30,0,0, + 63,0,0,51,0,0,97,128,0,64,128,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,29,87,24,0,0,0,33,0,0,115,128,0, + 115,128,0,33,0,0,0,0,0,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 48,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,30,90,24,1,0,0,0,192,0,1,192,0,3,128,0, + 7,0,0,12,0,0,16,0,0,0,0,255,195,252,127,0, + 240,63,0,96,63,0,96,31,128,192,31,128,128,15,193,128, + 15,195,0,7,227,0,3,230,0,3,244,0,1,252,0,1, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,1,252,0,7,255,0, + 19,23,69,20,0,0,255,224,0,63,128,0,31,0,0,31, + 0,0,31,254,0,31,15,128,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,224,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,63,128,0,255,224,0,17,23,69,19,0, + 0,3,240,0,14,60,0,30,62,0,28,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,28,0,60,56,0,60, + 224,0,60,60,0,60,30,0,60,15,0,60,15,0,60,15, + 128,60,15,128,60,15,128,60,15,128,60,15,0,60,15,0, + 60,30,0,252,124,0,14,23,46,16,1,0,48,0,56,0, + 28,0,14,0,3,0,0,128,0,0,31,128,49,224,112,240, + 120,240,120,240,48,240,1,240,7,240,28,240,56,240,120,240, + 240,240,249,240,255,244,126,252,60,120,14,23,46,16,1,0, + 0,48,0,112,0,224,1,192,3,0,4,0,0,0,31,128, + 49,224,112,240,120,240,120,240,48,240,1,240,7,240,28,240, + 56,240,120,240,240,240,249,240,255,244,126,252,60,120,14,23, + 46,16,1,0,3,0,7,128,15,192,12,192,24,96,16,32, + 0,0,31,128,49,224,112,240,120,240,120,240,48,240,1,240, + 7,240,28,240,56,240,120,240,240,240,249,240,255,244,126,252, + 60,120,14,22,44,16,1,0,12,32,31,96,55,192,33,128, + 0,0,0,0,31,128,49,224,112,240,120,240,120,240,48,240, + 1,240,7,240,28,240,56,240,120,240,240,240,249,240,255,244, + 126,252,60,120,14,22,44,16,1,0,8,64,28,224,28,224, + 8,64,0,0,0,0,31,128,49,224,112,240,120,240,120,240, + 48,240,1,240,7,240,28,240,56,240,120,240,240,240,249,240, + 255,244,126,252,60,120,14,25,50,16,1,0,7,0,13,128, + 24,192,16,64,24,192,13,128,7,0,0,0,0,0,31,128, + 49,224,112,240,120,240,120,240,48,240,1,240,7,240,28,240, + 56,240,120,240,240,240,249,240,255,244,126,252,60,120,21,16, + 48,24,1,0,31,135,192,49,238,224,112,252,112,120,248,112, + 120,248,56,48,248,56,1,248,56,7,255,248,28,248,0,56, + 248,0,120,252,0,248,252,8,248,254,24,255,255,240,126,63, + 224,60,15,192,13,23,46,15,1,249,7,224,30,240,60,120, + 120,120,120,48,240,0,240,0,240,0,240,0,240,0,248,0, + 120,0,120,0,60,48,31,224,15,192,3,0,6,0,6,0, + 3,128,49,128,59,128,31,0,14,23,46,15,0,0,48,0, + 56,0,28,0,14,0,3,0,0,128,0,0,7,192,30,240, + 60,112,120,56,120,60,248,60,248,60,255,252,248,0,248,0, + 248,0,120,0,124,0,62,24,31,240,7,224,14,23,46,15, + 0,0,0,24,0,56,0,112,0,224,1,128,2,0,0,0, + 7,192,30,240,60,112,120,56,120,60,248,60,248,60,255,252, + 248,0,248,0,248,0,120,0,124,0,62,24,31,240,7,224, + 14,23,46,15,0,0,3,0,7,128,15,192,12,192,24,96, + 16,32,0,0,7,192,30,240,60,112,120,56,120,60,248,60, + 248,60,255,252,248,0,248,0,248,0,120,0,124,0,62,24, + 31,240,7,224,14,22,44,15,0,0,4,32,14,112,14,112, + 4,32,0,0,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,8,23,23,9,0,0,192,224,112,56, + 12,2,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,8,23,23,9,0,0,3,7,14,28,48,64,0, + 252,124,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 8,23,23,9,0,0,24,60,126,102,195,129,0,252,124,60, + 60,60,60,60,60,60,60,60,60,60,60,126,255,8,22,22, + 9,0,0,66,231,231,66,0,0,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,14,22,44,17,1,0,56, + 48,62,248,15,248,255,128,251,192,97,224,15,240,60,248,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,22,66,18,0, + 0,3,8,0,7,216,0,13,240,0,8,96,0,0,0,0, + 0,0,0,252,120,0,125,252,0,63,62,0,62,30,0,62, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,126,63,0, + 255,127,128,14,23,46,17,1,0,48,0,56,0,28,0,14, + 0,3,0,0,128,0,0,15,192,60,240,120,120,120,120,240, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,60,240,15,192,14,23,46,17,1,0,0,24,0, + 56,0,112,0,224,1,128,2,0,0,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,14,23,46,17,1, + 0,3,0,7,128,15,192,12,192,24,96,16,32,0,0,15, + 192,60,240,120,120,120,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,60,120,120,120,120,60,240,15,192,14, + 22,44,17,1,0,12,32,31,96,55,192,33,128,0,0,0, + 0,15,192,60,240,120,120,120,120,240,60,240,60,240,60,240, + 60,240,60,240,60,240,60,240,60,120,120,120,120,60,240,15, + 192,14,22,44,17,1,0,8,64,28,224,28,224,8,64,0, + 0,0,0,15,192,60,240,120,120,120,120,240,60,240,60,240, + 60,240,60,240,60,240,60,240,60,240,60,120,120,120,120,60, + 240,15,192,14,15,30,19,2,1,3,0,7,128,7,128,3, + 0,0,0,0,0,255,252,255,252,255,252,0,0,0,0,3, + 0,7,128,7,128,3,0,14,22,44,17,1,253,0,8,0, + 24,0,24,15,240,60,240,120,120,120,120,240,252,241,188,241, + 60,243,60,242,60,246,60,252,60,248,60,120,120,120,120,60, + 240,111,192,96,0,192,0,128,0,17,23,69,18,0,0,24, + 0,0,28,0,0,14,0,0,7,0,0,1,128,0,0,64, + 0,0,0,0,252,126,0,124,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,62,0,62,127,0,31,223, + 128,7,140,0,17,23,69,18,0,0,0,12,0,0,28,0, + 0,56,0,0,112,0,0,192,0,1,0,0,0,0,0,252, + 126,0,124,62,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,62,0,62,127,0,31,223,128,7,140,0,17, + 23,69,18,0,0,1,128,0,3,192,0,7,224,0,6,96, + 0,12,48,0,8,16,0,0,0,0,252,126,0,124,62,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,62, + 0,62,127,0,31,223,128,7,140,0,17,22,66,18,0,0, + 4,32,0,14,112,0,14,112,0,4,32,0,0,0,0,0, + 0,0,252,126,0,124,62,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,62,127,0,31,223,128,7, + 140,0,15,30,60,17,0,249,0,12,0,28,0,56,0,112, + 0,192,1,0,0,0,255,190,126,12,62,8,62,8,31,24, + 31,16,15,16,15,176,15,160,7,160,7,224,7,192,3,192, + 3,192,1,128,1,128,1,128,1,0,115,0,243,0,246,0, + 254,0,120,0,15,29,58,19,1,249,252,0,124,0,60,0, + 60,0,60,0,60,0,60,224,63,248,62,124,60,60,60,62, + 60,30,60,30,60,30,60,30,60,30,60,30,60,30,60,60, + 62,60,63,248,60,224,60,0,60,0,60,0,60,0,60,0, + 126,0,255,0,15,29,58,17,0,249,4,32,14,112,14,112, + 4,32,0,0,0,0,255,190,126,12,62,8,62,8,31,24, + 31,16,15,16,15,176,15,160,7,160,7,224,7,192,3,192, + 3,192,1,128,1,128,1,128,1,0,115,0,243,0,246,0, + 254,0,120,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=16 h=25 x= 2 y= 9 dx=19 dy= 0 ascent=25 len=50 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24n[701] U8G_SECTION(".progmem.u8g_font_timB24n") = { + 0,38,49,251,244,23,0,0,0,0,42,57,0,25,250,23, + 0,13,14,28,17,1,9,3,0,7,0,7,0,231,56,242, + 120,122,240,15,128,15,128,122,240,242,120,231,56,7,0,7, + 0,6,0,15,15,30,19,2,0,3,128,3,128,3,128,3, + 128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,11,11,8,1,250,56,124,124, + 124,60,12,8,24,48,96,192,8,4,4,11,1,6,255,255, + 255,255,5,5,5,8,1,0,112,248,248,248,112,9,25,50, + 9,0,0,1,128,1,128,1,0,3,0,3,0,3,0,6, + 0,6,0,6,0,4,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,14,23,46,16,1,0,7,128,31,224,28, + 224,56,112,120,112,120,120,120,120,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,248,124,120,120,120,120,120, + 120,56,112,28,224,15,192,7,128,13,23,46,16,2,0,1, + 128,7,128,31,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,31,192,255,248,16,23,46, + 16,0,0,3,192,15,240,31,248,63,248,48,252,96,124,64, + 124,0,124,0,120,0,120,0,120,0,240,0,224,1,192,1, + 128,3,0,7,1,14,3,28,6,63,254,127,254,255,252,255, + 252,14,23,46,16,1,0,7,192,31,240,63,240,48,248,96, + 120,64,120,0,120,0,112,0,192,3,224,15,240,15,248,3, + 248,0,252,0,124,0,60,0,60,0,60,96,56,240,56,248, + 112,127,192,31,0,14,23,46,16,1,0,0,112,0,240,0, + 240,1,240,3,240,6,240,6,240,12,240,24,240,24,240,48, + 240,96,240,96,240,192,240,255,252,255,252,255,252,255,252,0, + 240,0,240,0,240,0,240,0,240,13,23,46,16,1,0,31, + 248,31,248,31,248,31,248,48,0,48,0,32,0,62,0,127, + 128,127,224,127,240,127,240,3,248,0,248,0,120,0,56,0, + 56,0,56,96,48,240,48,248,96,127,192,31,0,14,23,46, + 16,1,0,0,28,0,240,3,192,7,128,15,0,30,0,62, + 0,60,0,124,0,127,224,253,240,248,248,248,120,248,124,248, + 124,248,124,248,124,120,124,120,120,120,120,56,112,28,224,15, + 192,13,23,46,16,2,0,127,248,127,248,255,248,255,248,192, + 48,128,112,128,112,0,96,0,224,0,224,0,192,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,14,0,28,0,14,23,46,16,1,0,15,224,62,240,60, + 120,120,120,120,56,120,56,124,56,126,112,63,224,63,128,31, + 192,15,224,63,240,113,248,112,252,224,124,224,60,224,60,224, + 60,240,56,120,120,127,240,31,192,14,23,46,16,1,0,15, + 192,28,224,56,112,120,120,120,120,248,120,248,124,248,124,248, + 124,248,124,120,124,124,124,62,252,31,248,0,248,0,240,1, + 240,1,224,3,192,7,128,15,0,60,0,224,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=30 x= 4 y=17 dx=33 dy= 0 ascent=26 len=108 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24r[5003] U8G_SECTION(".progmem.u8g_font_timB24r") = { + 0,38,49,251,244,23,5,149,13,202,32,127,249,26,249,23, + 249,0,0,0,8,0,1,5,23,23,11,3,0,112,248,248, + 248,248,248,248,112,112,112,112,32,32,32,32,0,0,0,112, + 248,248,248,112,11,11,22,19,2,12,96,192,241,224,241,224, + 241,224,241,224,241,224,241,224,96,192,96,192,96,192,96,192, + 16,23,46,17,0,0,3,12,3,12,7,28,7,28,6,24, + 6,24,127,255,127,255,14,56,12,48,12,48,12,48,12,48, + 28,112,255,254,255,254,24,96,24,96,24,96,56,224,56,224, + 48,192,48,192,15,28,56,16,1,253,3,0,3,0,15,232, + 63,248,115,56,99,24,227,8,227,8,243,0,251,0,127,0, + 127,128,63,224,15,240,3,248,3,252,3,124,131,62,131,30, + 131,30,195,28,195,60,243,120,255,224,131,0,3,0,3,0, + 3,0,24,23,69,33,4,0,7,128,32,15,192,224,30,127, + 192,60,32,192,124,33,128,120,33,128,248,99,0,240,71,0, + 240,198,0,240,206,0,241,140,60,127,24,126,60,25,243,0, + 49,225,0,51,193,0,99,193,0,231,195,0,199,130,1,199, + 134,1,135,134,3,3,140,3,3,248,6,1,224,22,23,69, + 28,2,0,1,240,0,3,188,0,7,30,0,7,14,0,15, + 14,0,15,14,0,15,140,0,7,216,0,7,240,0,3,224, + 252,7,240,112,29,240,48,57,248,96,112,252,64,240,252,192, + 240,127,128,248,63,0,248,31,128,252,31,192,254,63,228,127, + 243,252,127,193,252,31,0,120,4,11,11,9,2,12,96,240, + 240,240,240,240,240,96,96,96,96,8,29,29,11,2,250,3, + 6,12,24,24,48,48,112,96,224,224,224,224,224,224,224,224, + 224,224,224,96,112,48,48,24,24,12,6,3,8,29,29,11, + 0,250,192,96,48,24,24,12,12,14,6,7,7,7,7,7, + 7,7,7,7,7,7,6,14,12,12,24,24,48,96,192,13, + 14,28,17,1,9,3,0,7,0,7,0,231,56,242,120,122, + 240,15,128,15,128,122,240,242,120,231,56,7,0,7,0,6, + 0,15,15,30,19,2,0,3,128,3,128,3,128,3,128,3, + 128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3, + 128,3,128,3,128,6,11,11,8,1,250,56,124,124,124,60, + 12,8,24,48,96,192,8,4,4,11,1,6,255,255,255,255, + 5,5,5,8,1,0,112,248,248,248,112,9,25,50,9,0, + 0,1,128,1,128,1,0,3,0,3,0,3,0,6,0,6, + 0,6,0,4,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,48,0,96,0,96,0,96,0,192, + 0,192,0,14,23,46,16,1,0,7,128,31,224,28,224,56, + 112,120,112,120,120,120,120,248,124,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,120,120,120,120,120,120,56, + 112,28,224,15,192,7,128,13,23,46,16,2,0,1,128,7, + 128,31,128,255,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,31,192,255,248,16,23,46,16,0, + 0,3,192,15,240,31,248,63,248,48,252,96,124,64,124,0, + 124,0,120,0,120,0,120,0,240,0,224,1,192,1,128,3, + 0,7,1,14,3,28,6,63,254,127,254,255,252,255,252,14, + 23,46,16,1,0,7,192,31,240,63,240,48,248,96,120,64, + 120,0,120,0,112,0,192,3,224,15,240,15,248,3,248,0, + 252,0,124,0,60,0,60,0,60,96,56,240,56,248,112,127, + 192,31,0,14,23,46,16,1,0,0,112,0,240,0,240,1, + 240,3,240,6,240,6,240,12,240,24,240,24,240,48,240,96, + 240,96,240,192,240,255,252,255,252,255,252,255,252,0,240,0, + 240,0,240,0,240,0,240,13,23,46,16,1,0,31,248,31, + 248,31,248,31,248,48,0,48,0,32,0,62,0,127,128,127, + 224,127,240,127,240,3,248,0,248,0,120,0,56,0,56,0, + 56,96,48,240,48,248,96,127,192,31,0,14,23,46,16,1, + 0,0,28,0,240,3,192,7,128,15,0,30,0,62,0,60, + 0,124,0,127,224,253,240,248,248,248,120,248,124,248,124,248, + 124,248,124,120,124,120,120,120,120,56,112,28,224,15,192,13, + 23,46,16,2,0,127,248,127,248,255,248,255,248,192,48,128, + 112,128,112,0,96,0,224,0,224,0,192,1,192,1,192,3, + 128,3,128,3,128,7,0,7,0,7,0,14,0,14,0,14, + 0,28,0,14,23,46,16,1,0,15,224,62,240,60,120,120, + 120,120,56,120,56,124,56,126,112,63,224,63,128,31,192,15, + 224,63,240,113,248,112,252,224,124,224,60,224,60,224,60,240, + 56,120,120,127,240,31,192,14,23,46,16,1,0,15,192,28, + 224,56,112,120,120,120,120,248,120,248,124,248,124,248,124,248, + 124,120,124,124,124,62,252,31,248,0,248,0,240,1,240,1, + 224,3,192,7,128,15,0,60,0,224,0,5,16,16,11,3, + 0,112,248,248,248,112,0,0,0,0,0,0,112,248,248,248, + 112,6,22,22,11,2,250,56,124,124,124,56,0,0,0,0, + 0,0,56,124,124,124,60,12,8,24,48,96,192,16,15,30, + 19,1,0,0,3,0,15,0,127,1,252,15,224,63,128,252, + 0,240,0,252,0,63,128,15,224,1,252,0,127,0,15,0, + 3,15,10,20,19,2,3,255,254,255,254,255,254,0,0,0, + 0,0,0,0,0,255,254,255,254,255,254,16,15,30,19,2, + 0,192,0,240,0,254,0,63,128,7,240,1,252,0,63,0, + 15,0,63,1,252,7,240,63,128,254,0,240,0,192,0,12, + 23,46,16,2,0,63,0,115,192,225,224,225,240,241,240,241, + 240,97,240,1,224,1,224,3,192,3,128,3,0,6,0,4, + 0,4,0,0,0,0,0,0,0,14,0,31,0,31,0,31, + 0,14,0,26,27,108,31,2,251,0,31,224,0,0,252,60, + 0,3,224,14,0,7,128,3,0,15,0,1,0,30,0,1, + 128,62,15,56,128,60,31,248,192,124,124,248,64,120,120,120, + 64,248,248,240,64,248,240,240,64,241,240,240,64,241,240,240, + 64,241,224,240,192,241,225,224,128,241,225,225,128,241,227,227, + 0,113,243,227,0,120,254,254,0,120,120,120,0,60,0,0, + 0,28,0,0,0,14,0,1,128,7,128,7,0,1,224,60, + 0,0,63,224,0,21,23,69,24,1,0,0,32,0,0,96, + 0,0,112,0,0,240,0,0,248,0,0,248,0,1,248,0, + 1,124,0,1,124,0,3,62,0,2,62,0,6,62,0,6, + 31,0,4,31,0,12,15,0,15,255,128,24,15,128,24,7, + 192,16,7,192,48,3,224,48,3,224,112,7,240,252,31,248, + 19,23,69,22,1,0,255,252,0,63,31,0,31,15,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 128,31,15,128,31,62,0,31,252,0,31,15,128,31,7,192, + 31,7,224,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,192,31,7,192,63,15,0,255,252,0,19,23,69,24,2, + 0,1,252,32,7,255,96,15,7,224,30,1,224,60,0,224, + 124,0,96,124,0,96,248,0,32,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,124,0,0,124,0,0,60,0,32,30,0,96,15,129,192, + 3,255,128,0,254,0,22,23,69,24,0,0,255,252,0,63, + 255,128,31,7,224,31,1,240,31,1,240,31,0,248,31,0, + 248,31,0,252,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,248,31,0,248,31, + 0,248,31,1,240,31,1,224,31,7,192,63,255,0,255,252, + 0,21,23,69,22,0,0,255,255,224,63,255,224,31,0,224, + 31,0,96,31,0,96,31,0,32,31,0,32,31,4,0,31, + 4,0,31,12,0,31,28,0,31,252,0,31,28,0,31,12, + 0,31,4,0,31,4,0,31,0,8,31,0,24,31,0,48, + 31,0,112,31,1,240,63,255,224,255,255,224,19,23,69,20, + 0,0,255,255,224,63,255,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,0,32,31,4,0,31,4,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,4,0,31, + 4,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,63,128,0,255,224,0,22,23,69,25,2,0,1,252,32, + 7,255,96,15,7,224,30,1,224,60,0,224,124,0,96,124, + 0,96,248,0,32,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,31,252,248,7,240,248,3,224,124,3,224, + 124,3,224,60,3,224,62,3,224,30,7,224,15,143,224,3, + 255,0,24,23,69,25,0,0,255,231,255,63,129,252,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,255,248,31,255,248,31,0,248,31, + 0,248,31,0,248,31,0,248,31,0,248,31,0,248,31,0, + 248,31,0,248,31,0,248,63,129,252,255,231,255,11,23,46, + 13,1,0,255,224,63,128,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,63,128,255, + 224,15,26,52,16,0,253,15,254,3,248,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,97,240,241, + 240,241,240,243,224,227,224,127,192,31,0,24,23,69,25,1, + 0,255,207,252,127,3,224,62,1,192,62,3,128,62,7,0, + 62,14,0,62,28,0,62,56,0,62,112,0,62,224,0,63, + 240,0,63,248,0,63,252,0,62,254,0,62,127,0,62,63, + 128,62,31,192,62,15,224,62,7,240,62,3,248,62,1,252, + 127,0,254,255,195,255,20,23,69,22,1,0,255,224,0,63, + 128,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,16,31, + 0,48,31,0,96,31,0,224,31,129,224,63,255,192,255,255, + 192,28,23,92,31,1,0,255,0,15,240,63,0,31,192,31, + 128,31,128,31,128,63,128,23,192,63,128,23,192,47,128,23, + 192,111,128,19,224,79,128,19,224,207,128,19,224,207,128,17, + 240,143,128,17,241,143,128,16,249,15,128,16,251,15,128,16, + 251,15,128,16,126,15,128,16,126,15,128,16,124,15,128,16, + 60,15,128,16,60,15,128,16,24,15,128,56,24,31,192,254, + 24,63,240,22,23,69,24,1,0,254,1,252,127,0,112,63, + 128,32,31,128,32,31,192,32,31,224,32,23,240,32,19,248, + 32,17,248,32,17,252,32,16,254,32,16,127,32,16,63,32, + 16,31,160,16,31,224,16,15,224,16,7,224,16,3,224,16, + 3,224,16,1,224,16,0,224,56,0,96,254,0,32,21,23, + 69,25,2,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,19,23,69,20,0,0,255, + 252,0,63,31,128,31,15,192,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,192,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,63,128, + 0,255,224,0,22,27,81,26,2,252,1,252,0,7,255,0, + 15,143,128,30,3,192,60,1,224,124,1,240,120,0,240,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,124,1,240, + 124,1,240,62,3,224,31,7,192,7,255,0,1,252,0,0, + 254,0,0,127,132,0,31,248,0,7,224,22,23,69,24,1, + 0,255,252,0,63,31,128,31,7,192,31,7,224,31,3,224, + 31,3,224,31,3,224,31,3,224,31,7,224,31,7,192,31, + 31,128,31,252,0,31,126,0,31,62,0,31,63,0,31,31, + 128,31,31,128,31,15,192,31,7,224,31,7,224,31,3,240, + 63,129,248,255,225,252,15,23,46,18,1,0,15,196,56,124, + 112,60,112,28,240,12,240,12,248,4,252,0,255,0,127,192, + 63,240,31,248,15,252,3,252,1,254,128,126,128,62,192,30, + 192,30,224,28,240,28,248,56,143,224,19,23,69,22,1,0, + 255,255,224,249,243,224,225,240,224,193,240,96,129,240,32,129, + 240,32,129,240,32,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,3, + 248,0,15,254,0,23,23,69,24,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,23,69,24,1,0,255,195,252,127,0,240,62,0,96,63, + 0,64,31,0,192,31,128,192,15,128,128,15,129,128,15,193, + 0,7,193,0,7,195,0,3,226,0,3,230,0,3,246,0, + 1,244,0,1,252,0,0,248,0,0,248,0,0,248,0,0, + 112,0,0,112,0,0,32,0,0,32,0,32,23,92,33,0, + 0,255,239,255,63,127,3,248,14,63,1,248,12,31,1,248, + 12,31,1,248,8,31,129,252,24,15,129,252,24,15,129,124, + 16,15,195,124,48,7,194,126,48,7,198,62,32,7,230,62, + 96,3,228,62,96,3,236,31,64,3,248,31,192,1,248,31, + 192,1,248,15,128,1,240,15,128,0,240,15,128,0,224,7, + 0,0,224,7,0,0,224,7,0,0,64,2,0,21,23,69, + 24,1,0,255,207,224,127,3,0,63,2,0,31,134,0,31, + 132,0,15,204,0,15,200,0,7,248,0,3,240,0,3,240, + 0,1,248,0,0,248,0,1,252,0,1,124,0,3,62,0, + 2,63,0,6,31,0,4,31,128,12,15,192,8,15,192,24, + 7,224,56,7,240,254,63,248,22,23,69,24,1,0,255,195, + 252,127,0,240,63,0,96,63,0,96,31,128,192,31,128,128, + 15,193,128,15,195,0,7,227,0,3,230,0,3,244,0,1, + 252,0,1,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,1,252,0, + 7,255,0,19,23,69,22,1,0,63,255,192,126,15,128,120, + 31,128,112,31,0,96,63,0,64,126,0,0,126,0,0,252, + 0,0,252,0,1,248,0,1,240,0,3,240,0,3,224,0, + 7,224,0,7,192,0,15,192,32,31,128,32,31,128,96,63, + 0,96,63,0,224,126,1,224,126,7,192,255,255,192,7,28, + 28,11,2,251,254,240,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,254, + 8,26,26,9,0,0,128,192,192,192,96,96,96,96,48,48, + 48,24,24,24,24,12,12,12,4,6,6,6,3,3,3,3, + 7,28,28,11,1,251,254,30,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 30,254,11,13,26,19,4,10,14,0,14,0,31,0,31,0, + 27,0,59,128,59,128,113,192,113,192,97,192,224,224,224,224, + 192,96,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,11,1,17,192,224,112,56,12,2,14,16,32,16,1,0, + 31,128,49,224,112,240,120,240,120,240,48,240,1,240,7,240, + 28,240,56,240,120,240,240,240,249,240,255,244,126,252,60,120, + 17,22,66,18,0,0,252,0,0,124,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,120,0,61,254,0,63,254, + 0,62,31,0,60,31,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,15,128,60,15,0,60,31,0,62, + 62,0,55,252,0,33,240,0,14,16,32,15,1,0,7,240, + 30,120,60,60,124,60,120,24,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,124,0,62,24,31,240,15,224,16,22, + 44,18,1,0,0,252,0,124,0,60,0,60,0,60,0,60, + 15,188,63,252,124,60,120,60,248,60,240,60,240,60,240,60, + 240,60,240,60,240,60,240,60,120,60,124,126,63,255,15,184, + 14,16,32,15,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,12,23,46,11,0,0,7,224,30,112, + 28,240,60,240,60,96,60,0,60,0,255,128,255,128,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,126,0,255,0,14,23,46,16,1,249, + 15,192,61,252,112,252,240,240,240,120,240,120,240,120,240,120, + 120,248,63,240,31,192,60,0,96,0,224,0,255,224,255,248, + 127,252,48,60,96,28,192,12,224,28,127,248,31,224,17,22, + 66,18,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,120,0,61,252,0,63,254,0,62, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 126,63,0,255,127,128,8,23,23,9,0,0,24,60,60,60, + 24,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,10,30,60,11,254,249,1,128,3,192,3,192,3, + 192,1,128,0,0,0,0,15,192,7,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,99,192,243,192,243, + 128,119,128,62,0,18,22,66,18,0,0,252,0,0,124,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,31,0, + 60,14,0,60,12,0,60,24,0,60,48,0,60,96,0,60, + 192,0,61,192,0,63,224,0,61,240,0,60,248,0,60,124, + 0,60,62,0,60,31,0,126,15,128,255,31,192,8,22,22, + 9,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,26,16,64,27,0,0,252, + 120,60,0,125,254,254,0,63,63,159,0,62,63,31,0,62, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,126,63,31,128,255,127,191,192,17, + 16,48,18,0,0,252,120,0,125,252,0,63,62,0,62,30, + 0,62,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,14,16,32,17,1,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,23,69,18,0, + 249,252,248,0,125,254,0,63,31,0,62,15,0,60,15,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,60,7,128,62,15,0,63,15,0,63,254,0,60,248, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 126,0,0,255,0,0,16,23,46,18,1,249,15,196,62,236, + 124,60,120,60,248,60,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,120,60,120,124,63,252,15,60,0,60,0,60, + 0,60,0,60,0,60,0,126,0,255,13,16,32,15,1,0, + 252,112,124,248,63,248,63,120,62,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,126,0,255,0, + 10,16,32,13,1,0,31,64,113,192,96,192,224,192,240,64, + 252,0,127,0,127,128,63,128,15,192,3,192,129,192,193,192, + 193,192,227,128,191,0,10,21,42,11,0,0,4,0,12,0, + 28,0,28,0,60,0,127,128,255,128,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,64, + 62,192,63,128,30,0,17,16,48,18,0,0,252,126,0,124, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,62,0,62,95,0,31,223,128,7,140,0,15,16,32,17, + 0,0,255,62,124,12,60,8,62,24,30,16,31,16,31,48, + 15,32,15,32,7,224,7,192,7,192,3,128,3,128,1,0, + 1,0,23,16,48,24,0,0,255,127,190,126,62,28,60,30, + 8,62,30,24,30,31,16,31,31,48,31,63,48,15,47,160, + 15,231,224,7,231,192,7,199,192,7,195,192,3,131,128,3, + 131,128,1,1,0,1,1,0,16,16,32,17,0,0,255,62, + 126,24,62,24,31,48,31,96,15,192,15,192,7,192,3,224, + 3,224,7,240,13,248,24,248,24,124,48,124,252,255,15,23, + 46,17,0,249,255,190,126,12,62,8,62,8,31,24,31,16, + 15,16,15,176,15,160,7,160,7,224,7,192,3,192,3,192, + 1,128,1,128,1,128,1,0,115,0,243,0,246,0,254,0, + 120,0,12,16,32,15,1,0,255,240,227,240,195,224,135,224, + 135,192,15,128,15,128,31,0,31,0,62,0,62,16,124,16, + 124,48,248,48,248,240,255,240,10,27,54,13,1,252,7,192, + 14,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,56,0,112,0,224,0,112,0,56,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 14,0,7,192,2,30,30,7,3,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,10,27,54,13,1,252,248,0, + 28,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,7,0,3,128,1,192,3,128,7,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 28,0,248,0,15,8,16,17,1,8,28,0,63,0,127,130, + 255,198,143,254,131,252,1,248,0,112,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--11-80-100-100-P-54-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=11 h=10 x= 1 y= 6 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w=12 h=17 x=-2 y=-4 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR08[2512] U8G_SECTION(".progmem.u8g_font_timR08") = { + 0,12,17,254,252,7,1,147,3,56,32,255,254,10,253,7, + 254,0,0,0,2,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,3,2,2,4,0,5,160,160,5,7,7,5, + 0,0,80,80,248,80,248,80,80,4,9,9,5,0,255,32, + 112,144,128,96,16,144,224,32,7,7,7,8,0,0,126,164, + 168,86,42,42,68,8,7,7,8,0,0,48,80,110,116,152, + 141,118,1,2,2,2,0,5,128,128,3,9,9,4,0,254, + 32,64,64,128,128,128,64,64,32,3,9,9,4,0,254,128, + 64,64,32,32,32,64,64,128,3,3,3,5,1,4,160,64, + 160,5,5,5,6,0,0,32,32,248,32,32,2,2,2,3, + 0,255,192,64,3,1,1,4,0,2,224,1,1,1,3,1, + 0,128,3,7,7,3,0,0,32,32,64,64,64,128,128,4, + 7,7,5,0,0,96,144,144,144,144,144,96,3,7,7,5, + 1,0,64,192,64,64,64,64,224,4,7,7,5,0,0,96, + 144,16,32,32,64,240,4,7,7,5,0,0,96,144,16,96, + 16,16,224,5,7,7,5,0,0,16,48,80,144,248,16,16, + 4,7,7,5,0,0,112,64,224,16,16,16,224,4,7,7, + 5,0,0,48,64,224,144,144,144,96,4,7,7,5,0,0, + 240,144,32,32,64,64,64,4,7,7,5,0,0,96,144,144, + 96,144,144,96,4,7,7,5,0,0,96,144,144,144,112,32, + 192,1,5,5,3,1,0,128,0,0,0,128,2,6,6,3, + 0,255,64,0,0,0,192,64,3,5,5,5,1,0,32,64, + 128,64,32,5,3,3,6,0,1,248,0,248,3,5,5,5, + 0,0,128,64,32,64,128,3,7,7,4,0,0,224,160,32, + 64,64,0,64,8,9,9,9,0,254,60,66,157,165,165,173, + 146,64,62,7,7,7,8,0,0,16,56,40,40,124,68,238, + 5,7,7,6,0,0,240,72,72,112,72,72,240,6,7,7, + 7,0,0,124,196,128,128,128,196,120,6,7,7,7,0,0, + 248,76,68,68,68,76,248,5,7,7,6,0,0,248,72,64, + 112,64,72,248,5,7,7,6,0,0,248,72,64,112,64,64, + 224,6,7,7,7,0,0,124,196,128,156,132,196,120,7,7, + 7,8,0,0,238,68,68,124,68,68,238,3,7,7,4,0, + 0,224,64,64,64,64,64,224,4,7,7,4,0,0,112,32, + 32,32,32,160,192,6,7,7,7,0,0,236,72,80,96,80, + 72,236,5,7,7,6,0,0,224,64,64,64,64,72,248,9, + 7,14,10,0,0,227,128,99,0,85,0,85,0,93,0,73, + 0,235,128,7,7,7,8,0,0,238,100,84,84,76,76,228, + 6,7,7,7,0,0,120,204,132,132,132,204,120,5,7,7, + 6,0,0,240,72,72,112,64,64,224,6,9,9,7,0,254, + 120,204,132,132,132,204,112,24,12,6,7,7,7,0,0,240, + 72,72,112,80,72,236,4,7,7,5,0,0,112,144,192,96, + 16,144,224,5,7,7,6,0,0,248,168,32,32,32,32,112, + 7,7,7,8,0,0,238,68,68,68,68,108,56,7,7,7, + 8,0,0,238,68,108,40,40,16,16,11,7,14,10,255,0, + 238,224,68,64,100,192,46,128,42,128,17,0,17,0,7,7, + 7,8,0,0,238,68,40,16,40,68,238,7,7,7,8,0, + 0,238,68,40,56,16,16,56,5,7,7,6,0,0,248,136, + 16,32,64,136,248,2,9,9,3,0,254,192,128,128,128,128, + 128,128,128,192,3,7,7,3,0,0,128,128,64,64,64,32, + 32,2,9,9,3,0,254,192,64,64,64,64,64,64,64,192, + 3,3,3,5,1,4,64,160,160,5,1,1,5,0,253,248, + 2,2,2,3,0,6,128,64,3,5,5,4,0,0,192,32, + 96,160,224,5,7,7,5,255,0,192,64,112,72,72,72,112, + 3,5,5,4,0,0,96,128,128,128,96,5,7,7,5,0, + 0,48,16,112,144,144,144,104,3,5,5,4,0,0,96,160, + 192,128,96,4,7,7,4,0,0,48,64,224,64,64,64,224, + 4,7,7,5,0,254,112,160,160,64,96,144,224,6,7,7, + 5,255,0,192,64,112,72,72,72,108,2,7,7,3,0,0, + 64,0,192,64,64,64,64,3,9,9,3,255,254,32,0,96, + 32,32,32,32,32,192,6,7,7,5,255,0,192,64,72,80, + 112,72,76,3,7,7,4,0,0,192,64,64,64,64,64,224, + 8,5,5,8,0,0,236,146,146,146,219,5,5,5,5,0, + 0,224,144,144,144,216,4,5,5,5,0,0,96,144,144,144, + 96,5,8,8,5,255,253,240,72,72,72,112,64,64,224,5, + 8,8,5,0,253,112,144,144,144,112,16,16,56,3,5,5, + 4,0,0,160,96,64,64,224,3,5,5,4,0,0,96,128, + 64,32,224,4,6,6,4,0,0,64,224,64,64,64,48,5, + 5,5,5,0,0,216,144,144,144,104,6,5,5,5,255,0, + 236,72,40,48,16,9,5,10,8,255,0,237,128,73,0,42, + 0,54,0,20,0,5,5,5,6,0,0,216,80,32,80,216, + 6,7,7,5,255,254,220,72,80,48,32,96,192,4,5,5, + 5,0,0,240,32,64,144,240,3,9,9,4,0,254,32,64, + 64,64,128,64,64,64,32,1,9,9,2,0,254,128,128,128, + 128,128,128,128,128,128,3,9,9,4,0,254,128,64,64,64, + 32,64,64,64,128,6,2,2,7,0,2,100,152,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,2,0,1,1,7,7,3,1,254,128,0,128,128,128,128, + 128,4,7,7,5,0,255,32,112,144,128,144,96,64,5,7, + 7,5,0,0,48,80,64,224,64,200,240,5,6,6,5,0, + 1,136,112,80,80,112,136,5,7,7,5,0,0,136,80,216, + 32,248,32,112,1,7,7,2,0,0,128,128,128,0,128,128, + 128,4,9,9,5,0,254,112,144,64,160,144,80,32,144,224, + 3,1,1,5,1,5,160,7,7,7,9,1,0,56,68,154, + 162,154,68,56,3,5,5,4,0,2,192,32,160,0,224,4, + 4,4,5,0,1,80,160,160,80,5,2,2,7,1,1,248, + 8,3,1,1,4,0,2,224,7,7,7,9,1,0,56,68, + 186,178,170,68,56,3,1,1,4,0,5,224,4,4,4,4, + 0,3,96,144,144,96,5,7,7,6,0,0,32,32,248,32, + 32,0,248,3,4,4,3,0,3,96,160,64,224,3,4,4, + 3,0,3,224,64,32,192,2,2,2,3,0,5,64,128,5, + 7,7,5,0,254,144,144,144,144,232,128,128,6,9,9,6, + 0,254,124,232,232,232,104,40,40,40,40,1,1,1,2,0, + 2,128,3,3,3,4,0,253,64,32,192,3,4,4,3,0, + 3,64,192,64,224,3,5,5,4,0,2,64,160,64,0,224, + 4,4,4,5,0,1,160,80,80,160,7,7,7,8,0,0, + 68,200,72,244,44,62,68,7,7,7,8,0,0,68,200,72, + 246,42,36,78,7,7,7,8,0,0,228,72,40,212,44,62, + 68,3,7,7,4,0,254,64,0,64,64,128,160,224,7,10, + 10,8,0,0,32,16,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,8,16,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,16,40,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,20,40,0,16,56,40,40,124,68,238,7,9, + 9,8,0,0,40,0,16,56,40,40,124,68,238,7,10,10, + 8,0,0,16,40,16,16,56,40,40,124,68,238,8,7,7, + 9,0,0,31,57,40,46,120,73,239,6,10,10,7,0,253, + 124,196,128,128,128,196,120,32,16,96,5,10,10,6,0,0, + 64,32,0,248,72,64,112,64,72,248,5,10,10,6,0,0, + 16,32,0,248,72,64,112,64,72,248,5,10,10,6,0,0, + 32,80,0,248,72,64,112,64,72,248,5,9,9,6,0,0, + 80,0,248,72,64,112,64,72,248,3,10,10,4,0,0,128, + 64,0,224,64,64,64,64,64,224,3,10,10,4,0,0,32, + 64,0,224,64,64,64,64,64,224,3,10,10,4,0,0,64, + 160,0,224,64,64,64,64,64,224,3,9,9,4,0,0,160, + 0,224,64,64,64,64,64,224,6,7,7,7,0,0,248,76, + 68,228,68,76,248,7,10,10,8,0,0,20,40,0,206,100, + 100,84,84,76,228,6,10,10,7,0,0,32,16,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,16,32,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,16,40,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,40,80,0,120,204, + 132,132,132,204,120,6,9,9,7,0,0,72,0,120,204,132, + 132,132,204,120,5,5,5,6,0,0,136,80,32,80,136,8, + 9,9,8,255,255,1,62,102,74,66,82,102,124,128,7,10, + 10,8,0,0,32,16,0,238,68,68,68,68,108,56,7,10, + 10,8,0,0,8,16,0,238,68,68,68,68,108,56,7,10, + 10,8,0,0,16,40,0,238,68,68,68,68,108,56,7,9, + 9,8,0,0,40,0,238,68,68,68,68,108,56,7,10,10, + 8,0,0,8,16,0,198,68,40,56,16,16,56,5,7,7, + 6,0,0,224,64,112,72,112,64,224,4,7,7,5,0,0, + 32,80,80,96,80,80,224,3,8,8,4,0,0,128,64,0, + 192,32,96,160,224,3,8,8,4,0,0,32,64,0,192,32, + 96,160,224,3,8,8,4,0,0,64,160,0,192,32,96,160, + 224,4,8,8,4,0,0,80,160,0,192,32,96,160,224,3, + 7,7,4,0,0,160,0,192,32,96,160,224,3,8,8,4, + 0,0,64,160,64,192,32,96,160,224,5,5,5,6,0,0, + 216,40,112,160,216,3,8,8,4,0,253,96,128,128,128,96, + 64,32,192,3,8,8,4,0,0,128,64,0,96,160,192,128, + 96,3,8,8,4,0,0,32,64,0,96,160,192,128,96,3, + 8,8,4,0,0,64,160,0,96,160,192,128,96,3,7,7, + 4,0,0,160,0,96,160,192,128,96,2,8,8,3,0,0, + 128,64,0,192,64,64,64,64,3,8,8,3,0,0,32,64, + 0,192,64,64,64,64,3,8,8,3,0,0,64,160,0,192, + 64,64,64,64,3,7,7,3,0,0,160,0,192,64,64,64, + 64,4,8,8,5,0,0,64,112,160,112,144,144,144,96,5, + 8,8,5,0,0,80,160,0,224,144,144,144,216,4,8,8, + 5,0,0,64,32,0,96,144,144,144,96,4,8,8,5,0, + 0,32,64,0,96,144,144,144,96,4,8,8,5,0,0,64, + 160,0,96,144,144,144,96,4,8,8,5,0,0,80,160,0, + 96,144,144,144,96,4,7,7,5,0,0,160,0,96,144,144, + 144,96,5,5,5,6,0,0,32,0,248,0,32,6,7,7, + 5,255,255,4,56,72,72,72,112,128,5,8,8,5,0,0, + 64,32,0,144,144,144,144,104,5,8,8,5,0,0,32,64, + 0,144,144,144,144,104,5,8,8,5,0,0,32,80,0,144, + 144,144,144,104,5,7,7,5,0,0,80,0,144,144,144,144, + 104,6,10,10,5,255,254,16,32,0,220,72,80,48,32,96, + 192,5,10,10,5,255,253,192,64,112,72,72,72,112,64,64, + 224,6,9,9,5,255,254,80,0,220,72,80,48,32,96,192 + }; +/* + Fontname: -Adobe-Times-Medium-R-Normal--11-80-100-100-P-54-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=11 h= 9 x= 1 y= 6 dx=10 dy= 0 ascent= 8 len=14 + Font Bounding box w=12 h=17 x=-2 y=-4 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR08r[1198] U8G_SECTION(".progmem.u8g_font_timR08r") = { + 0,12,17,254,252,7,1,147,3,56,32,127,254,8,253,7, + 254,0,0,0,2,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,3,2,2,4,0,5,160,160,5,7,7,5, + 0,0,80,80,248,80,248,80,80,4,9,9,5,0,255,32, + 112,144,128,96,16,144,224,32,7,7,7,8,0,0,126,164, + 168,86,42,42,68,8,7,7,8,0,0,48,80,110,116,152, + 141,118,1,2,2,2,0,5,128,128,3,9,9,4,0,254, + 32,64,64,128,128,128,64,64,32,3,9,9,4,0,254,128, + 64,64,32,32,32,64,64,128,3,3,3,5,1,4,160,64, + 160,5,5,5,6,0,0,32,32,248,32,32,2,2,2,3, + 0,255,192,64,3,1,1,4,0,2,224,1,1,1,3,1, + 0,128,3,7,7,3,0,0,32,32,64,64,64,128,128,4, + 7,7,5,0,0,96,144,144,144,144,144,96,3,7,7,5, + 1,0,64,192,64,64,64,64,224,4,7,7,5,0,0,96, + 144,16,32,32,64,240,4,7,7,5,0,0,96,144,16,96, + 16,16,224,5,7,7,5,0,0,16,48,80,144,248,16,16, + 4,7,7,5,0,0,112,64,224,16,16,16,224,4,7,7, + 5,0,0,48,64,224,144,144,144,96,4,7,7,5,0,0, + 240,144,32,32,64,64,64,4,7,7,5,0,0,96,144,144, + 96,144,144,96,4,7,7,5,0,0,96,144,144,144,112,32, + 192,1,5,5,3,1,0,128,0,0,0,128,2,6,6,3, + 0,255,64,0,0,0,192,64,3,5,5,5,1,0,32,64, + 128,64,32,5,3,3,6,0,1,248,0,248,3,5,5,5, + 0,0,128,64,32,64,128,3,7,7,4,0,0,224,160,32, + 64,64,0,64,8,9,9,9,0,254,60,66,157,165,165,173, + 146,64,62,7,7,7,8,0,0,16,56,40,40,124,68,238, + 5,7,7,6,0,0,240,72,72,112,72,72,240,6,7,7, + 7,0,0,124,196,128,128,128,196,120,6,7,7,7,0,0, + 248,76,68,68,68,76,248,5,7,7,6,0,0,248,72,64, + 112,64,72,248,5,7,7,6,0,0,248,72,64,112,64,64, + 224,6,7,7,7,0,0,124,196,128,156,132,196,120,7,7, + 7,8,0,0,238,68,68,124,68,68,238,3,7,7,4,0, + 0,224,64,64,64,64,64,224,4,7,7,4,0,0,112,32, + 32,32,32,160,192,6,7,7,7,0,0,236,72,80,96,80, + 72,236,5,7,7,6,0,0,224,64,64,64,64,72,248,9, + 7,14,10,0,0,227,128,99,0,85,0,85,0,93,0,73, + 0,235,128,7,7,7,8,0,0,238,100,84,84,76,76,228, + 6,7,7,7,0,0,120,204,132,132,132,204,120,5,7,7, + 6,0,0,240,72,72,112,64,64,224,6,9,9,7,0,254, + 120,204,132,132,132,204,112,24,12,6,7,7,7,0,0,240, + 72,72,112,80,72,236,4,7,7,5,0,0,112,144,192,96, + 16,144,224,5,7,7,6,0,0,248,168,32,32,32,32,112, + 7,7,7,8,0,0,238,68,68,68,68,108,56,7,7,7, + 8,0,0,238,68,108,40,40,16,16,11,7,14,10,255,0, + 238,224,68,64,100,192,46,128,42,128,17,0,17,0,7,7, + 7,8,0,0,238,68,40,16,40,68,238,7,7,7,8,0, + 0,238,68,40,56,16,16,56,5,7,7,6,0,0,248,136, + 16,32,64,136,248,2,9,9,3,0,254,192,128,128,128,128, + 128,128,128,192,3,7,7,3,0,0,128,128,64,64,64,32, + 32,2,9,9,3,0,254,192,64,64,64,64,64,64,64,192, + 3,3,3,5,1,4,64,160,160,5,1,1,5,0,253,248, + 2,2,2,3,0,6,128,64,3,5,5,4,0,0,192,32, + 96,160,224,5,7,7,5,255,0,192,64,112,72,72,72,112, + 3,5,5,4,0,0,96,128,128,128,96,5,7,7,5,0, + 0,48,16,112,144,144,144,104,3,5,5,4,0,0,96,160, + 192,128,96,4,7,7,4,0,0,48,64,224,64,64,64,224, + 4,7,7,5,0,254,112,160,160,64,96,144,224,6,7,7, + 5,255,0,192,64,112,72,72,72,108,2,7,7,3,0,0, + 64,0,192,64,64,64,64,3,9,9,3,255,254,32,0,96, + 32,32,32,32,32,192,6,7,7,5,255,0,192,64,72,80, + 112,72,76,3,7,7,4,0,0,192,64,64,64,64,64,224, + 8,5,5,8,0,0,236,146,146,146,219,5,5,5,5,0, + 0,224,144,144,144,216,4,5,5,5,0,0,96,144,144,144, + 96,5,8,8,5,255,253,240,72,72,72,112,64,64,224,5, + 8,8,5,0,253,112,144,144,144,112,16,16,56,3,5,5, + 4,0,0,160,96,64,64,224,3,5,5,4,0,0,96,128, + 64,32,224,4,6,6,4,0,0,64,224,64,64,64,48,5, + 5,5,5,0,0,216,144,144,144,104,6,5,5,5,255,0, + 236,72,40,48,16,9,5,10,8,255,0,237,128,73,0,42, + 0,54,0,20,0,5,5,5,6,0,0,216,80,32,80,216, + 6,7,7,5,255,254,220,72,80,48,32,96,192,4,5,5, + 5,0,0,240,32,64,144,240,3,9,9,4,0,254,32,64, + 64,64,128,64,64,64,32,1,9,9,2,0,254,128,128,128, + 128,128,128,128,128,128,3,9,9,4,0,254,128,64,64,64, + 32,64,64,64,128,6,2,2,7,0,2,100,152,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=13 h=14 x= 2 y= 8 dx=13 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR10[3359] U8G_SECTION(".progmem.u8g_font_timR10") = { + 0,17,24,254,250,10,2,4,4,92,32,255,253,14,253,10, + 253,0,0,0,3,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,3,3,3,6,1,7,160,160,160, + 7,10,10,7,0,0,20,20,126,40,40,40,252,80,80,80, + 5,12,12,7,1,255,32,120,168,160,160,112,40,40,40,168, + 240,32,9,10,20,12,1,0,113,128,223,0,146,0,148,0, + 104,0,11,0,22,128,36,128,68,128,67,0,10,10,20,11, + 1,0,24,0,36,0,36,0,56,0,19,128,121,0,202,0, + 132,0,206,64,115,128,1,3,3,3,1,7,128,128,128,3, + 13,13,5,1,253,32,32,64,64,128,128,128,128,128,64,64, + 32,32,3,13,13,5,1,253,128,128,64,64,32,32,32,32, + 32,64,64,128,128,5,6,6,7,1,4,32,168,112,112,168, + 32,7,7,7,8,0,0,16,16,16,254,16,16,16,2,3, + 3,4,1,254,192,64,128,3,1,1,4,0,3,224,2,1, + 1,4,1,0,192,4,12,12,4,0,254,16,16,16,32,32, + 32,64,64,64,128,128,128,6,10,10,7,1,0,120,204,132, + 132,132,132,132,132,204,120,5,10,10,7,1,0,32,224,32, + 32,32,32,32,32,32,248,5,10,10,7,1,0,112,216,136, + 8,24,16,32,64,136,248,6,10,10,7,0,0,120,140,4, + 8,48,56,4,4,204,120,6,10,10,7,0,0,8,24,24, + 40,104,72,136,252,8,8,5,10,10,7,1,0,120,64,128, + 224,48,24,8,8,144,224,6,10,10,7,0,0,12,16,32, + 64,120,204,132,132,204,120,6,10,10,7,0,0,252,132,8, + 8,16,16,32,32,64,64,5,10,10,7,1,0,112,152,136, + 200,112,152,136,136,136,112,6,10,10,7,1,0,120,204,132, + 132,204,120,8,16,32,192,2,7,7,4,1,0,192,0,0, + 0,0,0,192,2,9,9,4,1,254,192,0,0,0,0,0, + 192,64,128,7,7,7,8,0,0,6,24,96,192,96,24,6, + 7,3,3,8,0,2,254,0,254,7,7,7,8,0,0,192, + 48,12,6,12,48,192,5,10,10,6,0,0,112,136,136,8, + 16,32,32,0,32,32,12,12,24,13,0,254,15,128,48,96, + 96,32,70,144,137,16,145,16,145,16,147,32,205,192,64,0, + 48,192,15,0,9,10,20,11,1,0,8,0,8,0,20,0, + 20,0,34,0,34,0,62,0,65,0,65,0,227,128,7,10, + 10,9,1,0,252,70,66,70,124,70,66,66,70,252,8,10, + 10,10,1,0,61,99,65,129,128,128,128,193,98,60,9,10, + 20,10,0,0,254,0,35,0,33,0,32,128,32,128,32,128, + 32,128,33,0,35,0,254,0,7,10,10,9,1,0,254,66, + 64,68,124,68,64,66,66,254,7,10,10,8,1,0,254,66, + 64,68,124,68,64,64,64,224,9,10,20,11,1,0,61,0, + 99,0,65,0,129,0,128,0,135,128,129,0,193,0,99,0, + 62,0,8,10,10,10,1,0,231,66,66,66,126,66,66,66, + 66,231,3,10,10,5,1,0,224,64,64,64,64,64,64,64, + 64,224,4,10,10,6,1,0,112,32,32,32,32,32,32,32, + 160,192,8,10,10,10,1,0,238,68,72,80,112,80,72,68, + 70,231,7,10,10,9,1,0,224,64,64,64,64,64,64,64, + 66,254,11,10,20,13,1,0,224,224,96,192,81,64,81,64, + 91,64,74,64,74,64,78,64,68,64,228,224,9,10,20,11, + 1,0,227,128,97,0,81,0,89,0,73,0,77,0,69,0, + 69,0,67,0,227,0,8,10,10,10,1,0,60,102,66,129, + 129,129,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,13,13,10,1,253,60,102,66,129, + 129,129,129,66,102,60,8,6,3,9,10,20,9,0,0,252, + 0,38,0,34,0,34,0,38,0,60,0,36,0,34,0,35, + 0,241,128,6,10,10,8,1,0,116,204,132,192,112,24,4, + 132,204,184,7,10,10,9,1,0,254,146,146,16,16,16,16, + 16,16,56,8,10,10,10,1,0,231,66,66,66,66,66,66, + 66,102,60,9,10,20,9,0,0,227,128,65,0,99,0,34, + 0,34,0,54,0,20,0,28,0,8,0,8,0,13,10,20, + 13,0,0,231,56,66,16,98,48,34,32,37,32,53,96,21, + 64,24,192,8,128,8,128,10,10,20,10,0,0,115,128,33, + 0,18,0,18,0,12,0,12,0,18,0,33,0,97,128,243, + 192,9,10,20,9,0,0,227,128,65,0,34,0,34,0,20, + 0,8,0,8,0,8,0,8,0,28,0,8,10,10,8,0, + 0,127,67,2,4,8,16,32,64,193,255,3,13,13,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,224,4,10, + 10,4,0,0,128,128,64,64,64,32,32,32,16,16,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,7,1,5,32,80,80,136,136,7,1,1,7, + 0,253,254,3,3,3,5,1,8,128,192,32,6,7,7,7, + 1,0,112,200,24,104,136,200,116,6,10,10,7,0,0,192, + 64,64,88,108,68,68,68,76,120,6,7,7,7,1,0,120, + 204,128,128,128,196,120,6,10,10,7,1,0,24,8,8,120, + 200,136,136,136,216,116,6,7,7,7,1,0,112,136,248,128, + 128,196,120,5,10,10,4,0,0,56,96,64,248,64,64,64, + 64,64,240,6,10,10,7,1,253,120,208,136,200,112,64,120, + 132,204,112,7,10,10,7,0,0,192,64,64,88,108,68,68, + 68,68,238,3,10,10,3,0,0,64,64,0,192,64,64,64, + 64,64,224,3,13,13,4,0,253,32,32,0,96,32,32,32, + 32,32,32,32,160,192,7,10,10,7,0,0,192,64,64,76, + 72,112,80,72,76,230,3,10,10,3,0,0,192,64,64,64, + 64,64,64,64,64,224,11,7,14,11,0,0,219,128,110,192, + 68,64,68,64,68,64,68,64,238,224,7,7,7,7,0,0, + 216,108,68,68,68,68,238,5,7,7,7,1,0,112,216,136, + 136,136,216,112,6,10,10,7,0,253,216,108,68,68,68,108, + 88,64,64,224,6,10,10,7,1,253,120,200,136,136,136,216, + 104,8,8,28,5,7,7,5,0,0,184,96,64,64,64,64, + 224,4,7,7,6,1,0,112,144,192,96,48,144,224,4,8, + 8,4,0,0,64,240,64,64,64,64,64,48,7,7,7,7, + 0,0,204,68,68,68,68,108,54,7,7,7,7,0,0,238, + 68,68,40,40,16,16,11,7,14,11,0,0,238,224,68,64, + 68,64,36,128,59,128,17,0,17,0,7,7,7,7,0,0, + 238,68,56,16,56,68,238,7,10,10,7,0,253,238,68,68, + 40,40,16,48,32,160,192,6,7,7,6,0,0,252,136,24, + 48,96,196,252,5,13,13,7,1,253,24,32,32,32,32,64, + 128,64,32,32,32,32,24,1,10,10,3,1,0,128,128,128, + 128,128,128,128,128,128,128,5,13,13,7,1,253,192,32,32, + 32,32,16,8,16,32,32,32,32,192,7,2,2,8,0,3, + 98,156,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,3,0,1,1,10,10,5,2,253,128, + 128,0,128,128,128,128,128,128,128,6,9,9,7,0,255,4, + 124,204,144,144,160,228,120,128,7,10,10,8,0,0,28,52, + 32,32,248,32,32,32,226,188,5,7,7,7,1,1,136,112, + 136,136,136,112,136,7,10,10,7,0,0,238,68,108,40,124, + 16,124,16,16,56,1,10,10,3,1,0,128,128,128,128,0, + 0,128,128,128,128,5,13,13,7,1,253,56,88,64,96,112, + 152,136,200,112,48,16,208,224,3,2,2,5,1,8,160,160, + 10,10,20,12,1,0,30,0,97,128,78,128,146,64,144,64, + 144,64,146,64,76,128,97,128,30,0,3,6,6,4,0,4, + 224,32,160,224,0,224,6,6,6,7,0,0,36,72,144,144, + 72,36,7,4,4,9,1,2,254,2,2,2,3,1,1,4, + 0,3,224,10,10,20,12,1,0,30,0,97,128,92,128,146, + 64,156,64,148,64,146,64,82,128,97,128,30,0,4,1,1, + 4,0,8,240,4,4,4,6,1,6,96,144,144,96,7,7, + 7,8,0,0,16,16,254,16,16,0,254,4,6,6,4,0, + 4,96,144,16,32,64,240,4,6,6,4,0,4,96,144,32, + 16,144,96,3,3,3,5,1,8,32,96,128,7,10,10,7, + 0,253,204,68,68,68,68,108,118,64,64,96,7,13,13,7, + 0,253,62,116,244,244,244,116,52,20,20,20,20,20,20,1, + 2,2,4,2,3,128,128,3,3,3,5,1,253,64,32,192, + 3,6,6,4,0,4,64,192,64,64,64,224,4,6,6,5, + 0,4,96,144,144,96,0,240,6,6,6,7,1,0,144,72, + 36,36,72,144,10,10,20,10,0,0,65,0,194,0,66,0, + 68,0,68,128,233,128,10,128,20,128,23,192,32,128,10,10, + 20,10,0,0,65,0,194,0,66,0,68,0,69,128,234,64, + 8,64,16,128,17,0,35,192,10,10,20,10,0,0,97,0, + 146,0,34,0,20,0,148,128,105,128,10,128,20,128,23,192, + 32,128,5,10,10,6,0,253,32,32,0,32,32,64,128,136, + 136,112,9,14,28,11,1,0,16,0,24,0,4,0,0,0, + 8,0,8,0,20,0,20,0,34,0,34,0,62,0,65,0, + 65,0,227,128,9,14,28,11,1,0,4,0,12,0,16,0, + 0,0,8,0,8,0,20,0,20,0,34,0,34,0,62,0, + 65,0,65,0,227,128,9,14,28,11,1,0,8,0,28,0, + 34,0,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 62,0,65,0,65,0,227,128,9,14,28,11,1,0,18,0, + 42,0,36,0,0,0,8,0,8,0,20,0,20,0,34,0, + 34,0,62,0,65,0,65,0,227,128,9,13,26,11,1,0, + 36,0,36,0,0,0,8,0,8,0,20,0,20,0,34,0, + 34,0,62,0,65,0,65,0,227,128,9,14,28,11,1,0, + 24,0,36,0,24,0,0,0,8,0,8,0,20,0,20,0, + 34,0,34,0,62,0,65,0,65,0,227,128,11,10,20,13, + 1,0,31,224,12,32,20,0,20,64,39,192,36,64,60,0, + 68,32,68,32,239,224,8,13,13,10,1,253,61,99,65,129, + 128,128,128,193,98,60,8,4,24,7,14,14,9,1,0,32, + 48,8,0,254,66,64,68,124,68,64,66,66,254,7,14,14, + 9,1,0,4,12,16,0,254,66,64,68,124,68,64,66,66, + 254,7,14,14,9,1,0,16,56,68,0,254,66,64,68,124, + 68,64,66,66,254,7,13,13,9,1,0,36,36,0,254,66, + 64,68,124,68,64,66,66,254,3,14,14,5,1,0,128,192, + 32,0,224,64,64,64,64,64,64,64,64,224,3,14,14,5, + 1,0,32,96,128,0,224,64,64,64,64,64,64,64,64,224, + 5,14,14,5,0,0,32,112,136,0,112,32,32,32,32,32, + 32,32,32,112,3,13,13,5,1,0,160,160,0,224,64,64, + 64,64,64,64,64,64,224,9,10,20,10,0,0,254,0,35, + 0,33,0,32,128,248,128,32,128,32,128,33,0,35,0,254, + 0,9,14,28,11,1,0,18,0,42,0,36,0,0,0,227, + 128,97,0,81,0,89,0,73,0,77,0,69,0,69,0,67, + 0,227,0,8,14,14,10,1,0,32,48,8,0,60,102,66, + 129,129,129,129,66,102,60,8,14,14,10,1,0,4,12,16, + 0,60,102,66,129,129,129,129,66,102,60,8,14,14,10,1, + 0,16,56,68,0,60,102,66,129,129,129,129,66,102,60,8, + 14,14,10,1,0,36,84,72,0,60,102,66,129,129,129,129, + 66,102,60,8,13,13,10,1,0,36,36,0,60,102,66,129, + 129,129,129,66,102,60,7,7,7,8,1,0,130,68,40,16, + 40,68,130,9,12,24,10,0,255,0,128,31,0,49,0,35, + 0,68,128,76,128,72,128,80,128,49,0,99,0,94,0,128, + 0,8,14,14,10,1,0,32,48,8,0,231,66,66,66,66, + 66,66,66,102,60,8,14,14,10,1,0,4,12,16,0,231, + 66,66,66,66,66,66,66,102,60,8,14,14,10,1,0,16, + 56,68,0,231,66,66,66,66,66,66,66,102,60,8,13,13, + 10,1,0,36,36,0,231,66,66,66,66,66,66,66,102,60, + 9,14,28,9,0,0,2,0,6,0,8,0,0,0,227,128, + 65,0,34,0,34,0,20,0,8,0,8,0,8,0,8,0, + 28,0,6,10,10,8,1,0,224,64,120,76,68,68,76,120, + 64,224,6,10,10,7,0,0,56,108,68,72,112,88,76,68, + 84,216,6,11,11,7,1,0,64,96,16,0,112,200,24,104, + 136,200,116,6,11,11,7,1,0,8,24,32,0,112,200,24, + 104,136,200,116,6,11,11,7,1,0,32,112,136,0,112,200, + 24,104,136,200,116,6,11,11,7,1,0,72,168,144,0,112, + 200,24,104,136,200,116,6,10,10,7,1,0,80,80,0,112, + 200,24,104,136,200,116,6,11,11,7,1,0,48,72,48,0, + 112,200,24,104,136,200,116,9,7,14,11,1,0,127,0,201, + 128,31,0,104,0,136,0,204,128,119,0,6,10,10,7,1, + 253,112,200,128,128,128,196,120,32,16,96,6,11,11,7,1, + 0,64,96,16,0,112,136,248,128,128,196,120,6,11,11,7, + 1,0,8,24,32,0,112,136,248,128,128,196,120,6,11,11, + 7,1,0,32,112,136,0,112,136,248,128,128,196,120,6,10, + 10,7,1,0,80,80,0,112,136,248,128,128,196,120,3,11, + 11,3,0,0,128,192,32,0,192,64,64,64,64,64,224,3, + 11,11,3,0,0,32,96,128,0,192,64,64,64,64,64,224, + 5,11,11,3,255,0,32,112,136,0,96,32,32,32,32,32, + 112,3,10,10,3,0,0,160,160,0,192,64,64,64,64,64, + 224,5,10,10,7,1,0,216,96,144,120,216,136,136,136,216, + 112,7,11,11,7,0,0,36,84,72,0,216,108,68,68,68, + 68,238,5,11,11,7,1,0,64,96,16,0,112,216,136,136, + 136,216,112,5,11,11,7,1,0,16,48,64,0,112,216,136, + 136,136,216,112,5,11,11,7,1,0,32,112,136,0,112,216, + 136,136,136,216,112,5,11,11,7,1,0,72,168,144,0,112, + 216,136,136,136,216,112,5,10,10,7,1,0,80,80,0,112, + 216,136,136,136,216,112,7,7,7,8,1,0,16,16,0,254, + 0,16,16,7,9,9,7,0,255,2,60,108,68,68,68,108, + 120,128,7,11,11,7,0,0,32,48,8,0,204,68,68,68, + 68,108,54,7,11,11,7,0,0,8,24,32,0,204,68,68, + 68,68,108,54,7,11,11,7,0,0,16,56,68,0,204,68, + 68,68,68,108,54,7,10,10,7,0,0,40,40,0,204,68, + 68,68,68,108,54,7,14,14,7,0,253,4,12,16,0,238, + 68,68,40,40,16,48,32,160,192,6,13,13,7,0,253,192, + 64,64,88,108,68,68,68,108,88,64,64,224,7,13,13,7, + 0,253,40,40,0,238,68,68,40,40,16,48,32,160,192}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=13 h=13 x= 2 y= 8 dx=13 dy= 0 ascent=11 len=24 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR10r[1571] U8G_SECTION(".progmem.u8g_font_timR10r") = { + 0,17,24,254,250,10,2,4,4,92,32,127,253,11,253,10, + 253,0,0,0,3,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,3,3,3,6,1,7,160,160,160, + 7,10,10,7,0,0,20,20,126,40,40,40,252,80,80,80, + 5,12,12,7,1,255,32,120,168,160,160,112,40,40,40,168, + 240,32,9,10,20,12,1,0,113,128,223,0,146,0,148,0, + 104,0,11,0,22,128,36,128,68,128,67,0,10,10,20,11, + 1,0,24,0,36,0,36,0,56,0,19,128,121,0,202,0, + 132,0,206,64,115,128,1,3,3,3,1,7,128,128,128,3, + 13,13,5,1,253,32,32,64,64,128,128,128,128,128,64,64, + 32,32,3,13,13,5,1,253,128,128,64,64,32,32,32,32, + 32,64,64,128,128,5,6,6,7,1,4,32,168,112,112,168, + 32,7,7,7,8,0,0,16,16,16,254,16,16,16,2,3, + 3,4,1,254,192,64,128,3,1,1,4,0,3,224,2,1, + 1,4,1,0,192,4,12,12,4,0,254,16,16,16,32,32, + 32,64,64,64,128,128,128,6,10,10,7,1,0,120,204,132, + 132,132,132,132,132,204,120,5,10,10,7,1,0,32,224,32, + 32,32,32,32,32,32,248,5,10,10,7,1,0,112,216,136, + 8,24,16,32,64,136,248,6,10,10,7,0,0,120,140,4, + 8,48,56,4,4,204,120,6,10,10,7,0,0,8,24,24, + 40,104,72,136,252,8,8,5,10,10,7,1,0,120,64,128, + 224,48,24,8,8,144,224,6,10,10,7,0,0,12,16,32, + 64,120,204,132,132,204,120,6,10,10,7,0,0,252,132,8, + 8,16,16,32,32,64,64,5,10,10,7,1,0,112,152,136, + 200,112,152,136,136,136,112,6,10,10,7,1,0,120,204,132, + 132,204,120,8,16,32,192,2,7,7,4,1,0,192,0,0, + 0,0,0,192,2,9,9,4,1,254,192,0,0,0,0,0, + 192,64,128,7,7,7,8,0,0,6,24,96,192,96,24,6, + 7,3,3,8,0,2,254,0,254,7,7,7,8,0,0,192, + 48,12,6,12,48,192,5,10,10,6,0,0,112,136,136,8, + 16,32,32,0,32,32,12,12,24,13,0,254,15,128,48,96, + 96,32,70,144,137,16,145,16,145,16,147,32,205,192,64,0, + 48,192,15,0,9,10,20,11,1,0,8,0,8,0,20,0, + 20,0,34,0,34,0,62,0,65,0,65,0,227,128,7,10, + 10,9,1,0,252,70,66,70,124,70,66,66,70,252,8,10, + 10,10,1,0,61,99,65,129,128,128,128,193,98,60,9,10, + 20,10,0,0,254,0,35,0,33,0,32,128,32,128,32,128, + 32,128,33,0,35,0,254,0,7,10,10,9,1,0,254,66, + 64,68,124,68,64,66,66,254,7,10,10,8,1,0,254,66, + 64,68,124,68,64,64,64,224,9,10,20,11,1,0,61,0, + 99,0,65,0,129,0,128,0,135,128,129,0,193,0,99,0, + 62,0,8,10,10,10,1,0,231,66,66,66,126,66,66,66, + 66,231,3,10,10,5,1,0,224,64,64,64,64,64,64,64, + 64,224,4,10,10,6,1,0,112,32,32,32,32,32,32,32, + 160,192,8,10,10,10,1,0,238,68,72,80,112,80,72,68, + 70,231,7,10,10,9,1,0,224,64,64,64,64,64,64,64, + 66,254,11,10,20,13,1,0,224,224,96,192,81,64,81,64, + 91,64,74,64,74,64,78,64,68,64,228,224,9,10,20,11, + 1,0,227,128,97,0,81,0,89,0,73,0,77,0,69,0, + 69,0,67,0,227,0,8,10,10,10,1,0,60,102,66,129, + 129,129,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,13,13,10,1,253,60,102,66,129, + 129,129,129,66,102,60,8,6,3,9,10,20,9,0,0,252, + 0,38,0,34,0,34,0,38,0,60,0,36,0,34,0,35, + 0,241,128,6,10,10,8,1,0,116,204,132,192,112,24,4, + 132,204,184,7,10,10,9,1,0,254,146,146,16,16,16,16, + 16,16,56,8,10,10,10,1,0,231,66,66,66,66,66,66, + 66,102,60,9,10,20,9,0,0,227,128,65,0,99,0,34, + 0,34,0,54,0,20,0,28,0,8,0,8,0,13,10,20, + 13,0,0,231,56,66,16,98,48,34,32,37,32,53,96,21, + 64,24,192,8,128,8,128,10,10,20,10,0,0,115,128,33, + 0,18,0,18,0,12,0,12,0,18,0,33,0,97,128,243, + 192,9,10,20,9,0,0,227,128,65,0,34,0,34,0,20, + 0,8,0,8,0,8,0,8,0,28,0,8,10,10,8,0, + 0,127,67,2,4,8,16,32,64,193,255,3,13,13,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,224,4,10, + 10,4,0,0,128,128,64,64,64,32,32,32,16,16,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,7,1,5,32,80,80,136,136,7,1,1,7, + 0,253,254,3,3,3,5,1,8,128,192,32,6,7,7,7, + 1,0,112,200,24,104,136,200,116,6,10,10,7,0,0,192, + 64,64,88,108,68,68,68,76,120,6,7,7,7,1,0,120, + 204,128,128,128,196,120,6,10,10,7,1,0,24,8,8,120, + 200,136,136,136,216,116,6,7,7,7,1,0,112,136,248,128, + 128,196,120,5,10,10,4,0,0,56,96,64,248,64,64,64, + 64,64,240,6,10,10,7,1,253,120,208,136,200,112,64,120, + 132,204,112,7,10,10,7,0,0,192,64,64,88,108,68,68, + 68,68,238,3,10,10,3,0,0,64,64,0,192,64,64,64, + 64,64,224,3,13,13,4,0,253,32,32,0,96,32,32,32, + 32,32,32,32,160,192,7,10,10,7,0,0,192,64,64,76, + 72,112,80,72,76,230,3,10,10,3,0,0,192,64,64,64, + 64,64,64,64,64,224,11,7,14,11,0,0,219,128,110,192, + 68,64,68,64,68,64,68,64,238,224,7,7,7,7,0,0, + 216,108,68,68,68,68,238,5,7,7,7,1,0,112,216,136, + 136,136,216,112,6,10,10,7,0,253,216,108,68,68,68,108, + 88,64,64,224,6,10,10,7,1,253,120,200,136,136,136,216, + 104,8,8,28,5,7,7,5,0,0,184,96,64,64,64,64, + 224,4,7,7,6,1,0,112,144,192,96,48,144,224,4,8, + 8,4,0,0,64,240,64,64,64,64,64,48,7,7,7,7, + 0,0,204,68,68,68,68,108,54,7,7,7,7,0,0,238, + 68,68,40,40,16,16,11,7,14,11,0,0,238,224,68,64, + 68,64,36,128,59,128,17,0,17,0,7,7,7,7,0,0, + 238,68,56,16,56,68,238,7,10,10,7,0,253,238,68,68, + 40,40,16,48,32,160,192,6,7,7,6,0,0,252,136,24, + 48,96,196,252,5,13,13,7,1,253,24,32,32,32,32,64, + 128,64,32,32,32,32,24,1,10,10,3,1,0,128,128,128, + 128,128,128,128,128,128,128,5,13,13,7,1,253,192,32,32, + 32,32,16,8,16,32,32,32,32,192,7,2,2,8,0,3, + 98,156,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--17-120-100-100-P-84-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=16 x= 2 y= 9 dx=16 dy= 0 ascent=15 len=30 + Font Bounding box w=19 h=26 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR12[3905] U8G_SECTION(".progmem.u8g_font_timR12") = { + 0,19,26,254,249,11,2,36,5,11,32,255,252,15,252,11, + 252,0,0,0,4,0,1,1,11,11,5,2,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,7,1,8,144,144, + 144,8,11,11,8,0,0,18,18,18,127,36,36,254,72,72, + 72,72,7,13,13,8,0,255,16,124,146,146,144,80,56,20, + 18,146,146,124,16,11,11,22,14,1,0,57,0,79,0,139, + 0,138,0,150,0,100,224,13,32,10,32,26,32,18,64,17, + 128,12,11,22,13,0,0,12,0,18,0,18,0,18,0,12, + 224,56,64,68,128,131,0,130,16,69,32,56,192,1,3,3, + 3,1,8,128,128,128,4,14,14,5,0,253,16,32,64,64, + 128,128,128,128,128,128,64,64,32,16,4,14,14,5,255,253, + 128,64,32,32,16,16,16,16,16,16,32,32,64,128,5,6, + 6,8,1,5,32,168,112,112,168,32,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,3,3,4,1,255,64,64,128, + 4,1,1,5,0,4,240,1,2,2,4,1,0,128,128,5, + 13,13,5,0,254,8,8,8,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,68,68,130,130,130,130,130, + 68,68,56,4,11,11,8,1,0,32,96,160,32,32,32,32, + 32,32,32,112,7,11,11,8,0,0,56,68,130,2,2,4, + 8,16,32,66,252,7,11,11,8,0,0,56,68,132,8,16, + 56,4,2,2,196,120,8,11,11,8,255,0,2,6,10,10, + 18,34,34,66,255,2,2,7,11,11,8,0,0,62,32,32, + 64,120,4,2,2,2,140,112,7,11,11,8,0,0,14,48, + 64,64,152,228,130,130,130,68,56,7,11,11,8,0,0,254, + 130,132,4,8,8,16,16,16,32,32,6,11,11,8,0,0, + 48,72,132,132,72,48,72,132,132,72,48,7,11,11,8,0, + 0,56,68,130,130,130,70,58,4,4,24,224,1,8,8,4, + 1,0,128,128,0,0,0,0,128,128,2,9,9,4,0,255, + 64,64,0,0,0,0,64,64,128,8,9,9,9,0,0,3, + 12,16,96,128,96,16,12,3,7,4,4,9,0,2,254,0, + 0,254,8,9,9,9,1,0,192,48,8,6,1,6,8,48, + 192,5,11,11,7,1,0,112,136,136,8,16,32,32,0,0, + 32,32,14,14,28,15,0,253,7,192,24,48,32,8,65,168, + 70,100,132,68,136,68,136,68,136,200,137,72,70,48,32,0, + 24,48,7,192,12,11,22,12,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 8,11,11,11,1,0,252,70,66,66,68,124,70,65,65,67, + 254,10,11,22,11,0,0,31,64,96,192,64,64,128,64,128, + 0,128,0,128,0,128,0,64,64,97,128,30,0,10,11,22, + 12,0,0,252,0,67,0,64,128,64,64,64,64,64,64,64, + 64,64,64,64,128,67,0,252,0,9,11,22,10,0,0,255, + 0,65,0,64,0,64,0,66,0,126,0,66,0,64,0,64, + 0,64,128,255,0,8,11,11,9,0,0,255,65,64,64,66, + 126,66,64,64,64,224,11,11,22,12,0,0,15,64,48,192, + 64,64,128,0,128,0,129,224,128,64,128,64,64,64,48,192, + 15,0,10,11,22,12,0,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,225,192,3,11, + 11,5,0,0,224,64,64,64,64,64,64,64,64,64,224,5, + 11,11,6,0,0,56,16,16,16,16,16,16,16,144,144,96, + 10,11,22,12,1,0,243,192,65,0,66,0,68,0,72,0, + 112,0,72,0,68,0,66,0,65,0,243,192,8,11,11,10, + 0,0,224,64,64,64,64,64,64,64,64,65,254,13,11,22, + 15,0,0,224,56,96,48,80,80,80,80,72,144,72,144,72, + 144,69,16,69,16,66,16,226,56,10,11,22,12,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,11,22,12,1,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,8,11,11,9,0,0,252,66,65,65,66,124,64,64,64, + 64,224,10,14,28,12,1,253,28,0,99,0,65,0,128,128, + 128,128,128,128,128,128,128,128,65,0,99,0,60,0,12,0, + 6,0,1,192,10,11,22,11,0,0,252,0,66,0,65,0, + 65,0,66,0,124,0,72,0,68,0,66,0,65,0,225,192, + 8,11,11,9,0,0,58,70,130,128,96,28,2,1,129,194, + 188,9,11,22,10,0,0,255,128,136,128,136,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,28,0,10,11,22, + 12,0,0,225,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,11,11,22,12,0,0,224, + 224,64,64,32,128,32,128,17,0,17,0,17,0,10,0,10, + 0,4,0,4,0,15,11,22,16,0,0,231,14,66,4,33, + 8,33,8,17,136,18,144,18,144,10,80,10,80,4,32,4, + 32,11,11,22,12,0,0,224,224,64,64,32,128,17,0,10, + 0,4,0,10,0,17,0,32,128,64,64,224,224,11,11,22, + 12,0,0,224,224,64,64,32,128,17,0,17,0,10,0,4, + 0,4,0,4,0,4,0,14,0,9,11,22,10,0,0,255, + 128,129,0,130,0,4,0,4,0,8,0,16,0,32,0,32, + 0,64,128,255,0,3,14,14,5,1,253,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,11,11,5,255,0,128, + 64,64,32,32,16,16,8,8,4,4,3,14,14,5,0,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,224,7,7, + 7,8,0,4,16,40,40,68,68,130,130,8,1,1,8,0, + 254,255,3,3,3,6,1,8,128,64,32,7,8,8,7,1, + 0,112,136,136,56,200,136,154,108,7,11,11,8,0,0,64, + 192,64,92,100,66,66,66,66,100,56,6,8,8,7,0,0, + 56,68,132,128,128,128,68,56,7,11,11,8,0,0,4,12, + 4,52,76,132,132,132,132,78,52,6,8,8,7,0,0,56, + 68,132,252,128,128,68,56,5,11,11,6,1,0,48,72,64, + 64,240,64,64,64,64,64,240,7,12,12,8,0,252,54,76, + 132,132,72,112,128,124,130,130,196,120,8,11,11,8,0,0, + 64,192,64,92,102,66,66,66,66,66,231,3,11,11,5,1, + 0,64,64,0,64,192,64,64,64,64,64,224,3,15,15,4, + 0,252,32,32,0,32,96,32,32,32,32,32,32,32,32,160, + 192,7,11,11,8,1,0,64,192,64,92,72,80,96,80,72, + 68,238,3,11,11,5,1,0,64,192,64,64,64,64,64,64, + 64,64,224,11,8,16,13,1,0,89,128,230,64,68,64,68, + 64,68,64,68,64,68,64,238,224,8,8,8,8,0,0,92, + 230,66,66,66,66,66,231,7,8,8,8,0,0,56,68,130, + 130,130,130,68,56,7,12,12,8,0,252,92,230,66,66,66, + 66,98,92,64,64,64,224,7,12,12,8,1,252,116,204,132, + 132,132,132,204,116,4,4,4,14,5,8,8,6,0,0,88, + 232,64,64,64,64,64,224,5,8,8,6,0,0,120,136,128, + 112,8,136,200,176,4,10,10,5,0,0,64,64,240,64,64, + 64,64,64,80,32,8,8,8,8,0,0,198,66,66,66,66, + 66,71,58,8,8,8,8,0,0,231,66,66,36,36,20,24, + 8,12,8,16,12,0,0,238,112,68,32,68,32,34,64,34, + 64,21,64,8,128,8,128,7,8,8,8,0,0,238,68,40, + 16,40,40,68,238,8,12,12,8,0,252,247,66,66,36,36, + 20,8,8,16,16,160,192,6,8,8,7,0,0,252,132,8, + 16,32,64,132,252,4,14,14,8,2,253,48,64,64,64,64, + 64,128,64,64,64,64,64,64,48,1,11,11,3,0,0,128, + 128,128,128,128,128,128,128,128,128,128,4,14,14,8,0,253, + 192,32,32,32,32,32,16,32,32,32,32,32,32,192,8,3, + 3,9,0,3,113,153,142,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,1,1,11, + 11,5,2,253,128,128,0,0,128,128,128,128,128,128,128,7, + 12,12,8,0,254,4,4,60,74,138,136,144,146,84,56,32, + 32,8,11,11,8,0,0,12,18,34,32,32,252,16,16,113, + 145,110,8,9,9,8,0,1,153,102,66,129,129,129,66,102, + 153,9,11,22,8,255,0,227,128,65,0,34,0,20,0,8, + 0,62,0,8,0,62,0,8,0,8,0,28,0,1,11,11, + 3,0,0,128,128,128,128,128,0,128,128,128,128,128,7,14, + 14,8,0,253,56,68,76,32,80,136,132,66,34,20,8,100, + 68,56,4,2,2,6,1,9,144,144,11,11,22,13,0,0, + 14,0,49,128,64,64,78,64,145,32,144,32,144,32,81,64, + 78,64,49,128,14,0,4,6,6,5,0,5,96,16,112,144, + 80,240,7,7,7,8,0,0,18,36,72,144,72,36,18,8, + 5,5,9,0,0,255,1,1,1,1,4,1,1,5,0,4, + 240,11,11,22,13,0,0,14,0,49,128,64,64,78,64,137, + 32,142,32,138,32,74,64,73,64,49,128,14,0,5,1,1, + 6,0,9,248,5,5,5,7,1,6,112,136,136,136,112,7, + 9,9,9,1,0,16,16,16,254,16,16,16,0,254,5,7, + 7,5,0,4,112,136,8,16,32,72,248,6,7,7,5,255, + 4,56,68,4,24,4,132,120,3,3,3,6,2,8,32,64, + 128,8,11,11,8,0,253,198,66,66,66,66,66,71,122,64, + 64,64,7,15,15,8,0,252,62,116,244,244,244,116,52,20, + 20,20,20,20,20,20,20,1,2,2,4,1,4,128,128,4, + 4,4,6,0,252,32,112,16,224,3,7,7,5,1,4,64, + 192,64,64,64,64,224,4,6,6,5,0,5,96,144,144,144, + 96,240,7,7,7,8,0,0,144,72,36,18,36,72,144,11, + 11,22,13,1,0,64,128,193,0,67,0,66,0,68,64,76, + 192,233,64,25,64,18,64,39,224,64,64,12,11,22,13,0, + 0,64,128,193,0,67,0,66,0,68,224,77,16,232,16,24, + 32,16,64,32,144,65,240,13,11,22,13,255,0,56,32,68, + 64,4,192,24,128,5,16,135,48,122,80,6,80,4,144,9, + 248,8,16,5,11,11,7,1,253,32,32,0,0,32,32,64, + 128,136,136,112,12,15,30,12,0,0,8,0,4,0,2,0, + 0,0,4,0,6,0,10,0,11,0,17,0,17,128,32,128, + 63,128,64,192,64,64,224,240,12,15,30,12,0,0,1,0, + 2,0,4,0,0,0,4,0,6,0,10,0,11,0,17,0, + 17,128,32,128,63,128,64,192,64,64,224,240,12,15,30,12, + 0,0,4,0,10,0,17,0,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 12,14,28,12,0,0,13,0,22,0,0,0,4,0,6,0, + 10,0,11,0,17,0,17,128,32,128,63,128,64,192,64,64, + 224,240,12,14,28,12,0,0,9,0,9,0,0,0,4,0, + 6,0,10,0,11,0,17,0,17,128,32,128,63,128,64,192, + 64,64,224,240,12,14,28,12,0,0,6,0,9,0,9,0, + 6,0,6,0,10,0,11,0,17,0,17,128,32,128,63,128, + 64,192,64,64,224,240,14,11,22,15,0,0,7,248,3,8, + 5,8,9,0,9,16,17,240,31,16,33,0,33,0,65,4, + 243,248,10,15,30,11,0,252,15,64,48,192,64,64,128,64, + 128,0,128,0,128,0,128,0,64,64,49,128,14,0,4,0, + 14,0,2,0,28,0,9,15,30,10,0,0,32,0,16,0, + 8,0,0,0,255,0,65,0,64,0,64,0,66,0,126,0, + 66,0,64,0,64,0,64,128,255,0,9,15,30,10,0,0, + 2,0,4,0,8,0,0,0,255,0,65,0,65,0,64,0, + 66,0,126,0,66,0,64,0,64,0,64,128,255,0,9,15, + 30,10,0,0,8,0,20,0,34,0,0,0,255,0,65,0, + 64,0,64,0,66,0,126,0,66,0,64,0,64,0,64,128, + 255,0,9,14,28,10,0,0,36,0,36,0,0,0,255,0, + 65,0,64,0,64,0,66,0,126,0,66,0,64,0,64,0, + 64,128,255,0,4,15,15,5,255,0,128,64,32,0,112,32, + 32,32,32,32,32,32,32,32,112,5,15,15,5,0,0,8, + 16,32,0,224,64,64,64,64,64,64,64,64,64,224,5,15, + 15,5,255,0,32,80,136,0,112,32,32,32,32,32,32,32, + 32,32,112,3,14,14,5,0,0,160,160,0,224,64,64,64, + 64,64,64,64,64,64,224,10,11,22,12,1,0,252,0,67, + 0,64,128,64,64,64,64,248,64,64,64,64,64,64,128,67, + 0,252,0,10,14,28,12,0,0,13,0,22,0,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,15,30,12,1,0,32,0,16,0,8, + 0,0,0,28,0,99,0,65,0,128,128,128,128,128,128,128, + 128,128,128,65,0,99,0,28,0,9,15,30,12,1,0,2, + 0,4,0,8,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,15,30, + 12,1,0,8,0,20,0,34,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,14,28,12,1,0,26,0,44,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,9,14,28,12,1,0,34,0,34,0,0,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,7,7,9,1,0,130,68,40,16,40, + 68,130,11,13,26,12,0,255,0,64,14,64,49,128,65,64, + 130,32,132,32,132,32,136,32,144,32,80,64,49,128,78,0, + 64,0,10,15,30,12,0,0,16,0,8,0,4,0,0,0, + 225,192,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,33,0,30,0,10,15,30,12,0,0,1,0,2,0, + 4,0,0,0,225,192,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,15,30,12,0,0, + 4,0,10,0,17,0,0,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,10,14, + 28,12,0,0,18,0,18,0,0,0,225,192,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,33,0,30,0, + 11,15,30,12,0,0,0,128,1,0,2,0,0,0,224,224, + 64,64,32,128,17,0,17,0,10,0,4,0,4,0,4,0, + 4,0,14,0,8,11,11,9,0,0,224,64,124,66,65,65, + 66,124,64,64,224,7,11,11,8,0,0,56,68,68,68,72, + 88,68,66,66,82,204,7,12,12,7,1,0,64,32,16,0, + 112,136,136,56,200,136,154,100,7,12,12,7,1,0,8,16, + 32,0,112,136,136,56,200,136,154,100,7,12,12,7,1,0, + 32,80,136,0,112,136,136,56,200,136,154,100,7,11,11,7, + 1,0,104,176,0,112,136,136,56,200,136,154,100,7,11,11, + 7,1,0,72,72,0,112,136,136,56,200,136,154,100,7,12, + 12,7,1,0,32,80,80,32,112,136,136,56,200,136,154,100, + 9,8,16,11,1,0,115,0,140,128,136,128,63,128,200,0, + 136,0,156,128,99,0,6,12,12,7,0,252,56,68,132,128, + 128,128,68,56,16,56,8,112,6,12,12,7,0,0,64,32, + 16,0,56,68,132,252,128,128,68,56,6,12,12,7,0,0, + 4,8,16,0,56,68,132,252,128,128,68,56,6,12,12,7, + 0,0,16,40,68,0,56,68,132,252,128,128,68,56,6,11, + 11,7,0,0,72,72,0,56,68,132,252,128,128,68,56,3, + 12,12,5,0,0,128,64,32,0,64,192,64,64,64,64,64, + 224,3,12,12,5,0,0,32,64,128,0,64,192,64,64,64, + 64,64,224,5,12,12,5,255,0,32,80,136,0,32,96,32, + 32,32,32,32,112,3,11,11,5,0,0,160,160,0,64,192, + 64,64,64,64,64,224,7,11,11,8,0,0,108,48,200,60, + 68,130,130,130,130,68,56,8,11,11,8,255,0,52,88,0, + 92,230,66,66,66,66,66,231,7,12,12,8,0,0,32,16, + 8,0,56,68,130,130,130,130,68,56,7,12,12,8,0,0, + 4,8,16,0,56,68,130,130,130,130,68,56,7,12,12,8, + 0,0,16,40,68,0,56,68,130,130,130,130,68,56,7,11, + 11,8,0,0,52,88,0,56,68,130,130,130,130,68,56,7, + 11,11,8,0,0,72,72,0,56,68,130,130,130,130,68,56, + 9,9,18,9,255,0,8,0,8,0,0,0,0,0,255,128, + 0,0,0,0,8,0,8,0,7,12,12,8,0,254,2,2, + 60,68,138,146,146,162,100,56,64,64,8,12,12,8,255,0, + 32,16,8,0,198,66,66,66,66,66,70,59,8,12,12,8, + 255,0,4,8,16,0,198,66,66,66,66,66,70,59,8,12, + 12,8,255,0,16,40,68,0,198,66,66,66,66,66,70,59, + 8,11,11,8,255,0,36,36,0,198,66,66,66,66,66,70, + 59,8,16,16,8,255,252,2,4,8,0,247,66,66,36,36, + 20,8,8,16,16,160,192,8,15,15,8,255,252,64,192,64, + 92,98,65,65,65,65,98,92,64,64,64,224,8,15,15,8, + 255,252,36,36,0,247,66,98,36,52,20,24,8,16,16,160, + 192}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--17-120-100-100-P-84-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=15 x= 2 y= 8 dx=16 dy= 0 ascent=12 len=28 + Font Bounding box w=19 h=26 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR12r[1784] U8G_SECTION(".progmem.u8g_font_timR12r") = { + 0,19,26,254,249,11,2,36,5,11,32,127,252,12,252,11, + 252,0,0,0,4,0,1,1,11,11,5,2,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,7,1,8,144,144, + 144,8,11,11,8,0,0,18,18,18,127,36,36,254,72,72, + 72,72,7,13,13,8,0,255,16,124,146,146,144,80,56,20, + 18,146,146,124,16,11,11,22,14,1,0,57,0,79,0,139, + 0,138,0,150,0,100,224,13,32,10,32,26,32,18,64,17, + 128,12,11,22,13,0,0,12,0,18,0,18,0,18,0,12, + 224,56,64,68,128,131,0,130,16,69,32,56,192,1,3,3, + 3,1,8,128,128,128,4,14,14,5,0,253,16,32,64,64, + 128,128,128,128,128,128,64,64,32,16,4,14,14,5,255,253, + 128,64,32,32,16,16,16,16,16,16,32,32,64,128,5,6, + 6,8,1,5,32,168,112,112,168,32,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,3,3,4,1,255,64,64,128, + 4,1,1,5,0,4,240,1,2,2,4,1,0,128,128,5, + 13,13,5,0,254,8,8,8,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,68,68,130,130,130,130,130, + 68,68,56,4,11,11,8,1,0,32,96,160,32,32,32,32, + 32,32,32,112,7,11,11,8,0,0,56,68,130,2,2,4, + 8,16,32,66,252,7,11,11,8,0,0,56,68,132,8,16, + 56,4,2,2,196,120,8,11,11,8,255,0,2,6,10,10, + 18,34,34,66,255,2,2,7,11,11,8,0,0,62,32,32, + 64,120,4,2,2,2,140,112,7,11,11,8,0,0,14,48, + 64,64,152,228,130,130,130,68,56,7,11,11,8,0,0,254, + 130,132,4,8,8,16,16,16,32,32,6,11,11,8,0,0, + 48,72,132,132,72,48,72,132,132,72,48,7,11,11,8,0, + 0,56,68,130,130,130,70,58,4,4,24,224,1,8,8,4, + 1,0,128,128,0,0,0,0,128,128,2,9,9,4,0,255, + 64,64,0,0,0,0,64,64,128,8,9,9,9,0,0,3, + 12,16,96,128,96,16,12,3,7,4,4,9,0,2,254,0, + 0,254,8,9,9,9,1,0,192,48,8,6,1,6,8,48, + 192,5,11,11,7,1,0,112,136,136,8,16,32,32,0,0, + 32,32,14,14,28,15,0,253,7,192,24,48,32,8,65,168, + 70,100,132,68,136,68,136,68,136,200,137,72,70,48,32,0, + 24,48,7,192,12,11,22,12,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 8,11,11,11,1,0,252,70,66,66,68,124,70,65,65,67, + 254,10,11,22,11,0,0,31,64,96,192,64,64,128,64,128, + 0,128,0,128,0,128,0,64,64,97,128,30,0,10,11,22, + 12,0,0,252,0,67,0,64,128,64,64,64,64,64,64,64, + 64,64,64,64,128,67,0,252,0,9,11,22,10,0,0,255, + 0,65,0,64,0,64,0,66,0,126,0,66,0,64,0,64, + 0,64,128,255,0,8,11,11,9,0,0,255,65,64,64,66, + 126,66,64,64,64,224,11,11,22,12,0,0,15,64,48,192, + 64,64,128,0,128,0,129,224,128,64,128,64,64,64,48,192, + 15,0,10,11,22,12,0,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,225,192,3,11, + 11,5,0,0,224,64,64,64,64,64,64,64,64,64,224,5, + 11,11,6,0,0,56,16,16,16,16,16,16,16,144,144,96, + 10,11,22,12,1,0,243,192,65,0,66,0,68,0,72,0, + 112,0,72,0,68,0,66,0,65,0,243,192,8,11,11,10, + 0,0,224,64,64,64,64,64,64,64,64,65,254,13,11,22, + 15,0,0,224,56,96,48,80,80,80,80,72,144,72,144,72, + 144,69,16,69,16,66,16,226,56,10,11,22,12,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,11,22,12,1,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,8,11,11,9,0,0,252,66,65,65,66,124,64,64,64, + 64,224,10,14,28,12,1,253,28,0,99,0,65,0,128,128, + 128,128,128,128,128,128,128,128,65,0,99,0,60,0,12,0, + 6,0,1,192,10,11,22,11,0,0,252,0,66,0,65,0, + 65,0,66,0,124,0,72,0,68,0,66,0,65,0,225,192, + 8,11,11,9,0,0,58,70,130,128,96,28,2,1,129,194, + 188,9,11,22,10,0,0,255,128,136,128,136,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,28,0,10,11,22, + 12,0,0,225,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,11,11,22,12,0,0,224, + 224,64,64,32,128,32,128,17,0,17,0,17,0,10,0,10, + 0,4,0,4,0,15,11,22,16,0,0,231,14,66,4,33, + 8,33,8,17,136,18,144,18,144,10,80,10,80,4,32,4, + 32,11,11,22,12,0,0,224,224,64,64,32,128,17,0,10, + 0,4,0,10,0,17,0,32,128,64,64,224,224,11,11,22, + 12,0,0,224,224,64,64,32,128,17,0,17,0,10,0,4, + 0,4,0,4,0,4,0,14,0,9,11,22,10,0,0,255, + 128,129,0,130,0,4,0,4,0,8,0,16,0,32,0,32, + 0,64,128,255,0,3,14,14,5,1,253,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,11,11,5,255,0,128, + 64,64,32,32,16,16,8,8,4,4,3,14,14,5,0,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,224,7,7, + 7,8,0,4,16,40,40,68,68,130,130,8,1,1,8,0, + 254,255,3,3,3,6,1,8,128,64,32,7,8,8,7,1, + 0,112,136,136,56,200,136,154,108,7,11,11,8,0,0,64, + 192,64,92,100,66,66,66,66,100,56,6,8,8,7,0,0, + 56,68,132,128,128,128,68,56,7,11,11,8,0,0,4,12, + 4,52,76,132,132,132,132,78,52,6,8,8,7,0,0,56, + 68,132,252,128,128,68,56,5,11,11,6,1,0,48,72,64, + 64,240,64,64,64,64,64,240,7,12,12,8,0,252,54,76, + 132,132,72,112,128,124,130,130,196,120,8,11,11,8,0,0, + 64,192,64,92,102,66,66,66,66,66,231,3,11,11,5,1, + 0,64,64,0,64,192,64,64,64,64,64,224,3,15,15,4, + 0,252,32,32,0,32,96,32,32,32,32,32,32,32,32,160, + 192,7,11,11,8,1,0,64,192,64,92,72,80,96,80,72, + 68,238,3,11,11,5,1,0,64,192,64,64,64,64,64,64, + 64,64,224,11,8,16,13,1,0,89,128,230,64,68,64,68, + 64,68,64,68,64,68,64,238,224,8,8,8,8,0,0,92, + 230,66,66,66,66,66,231,7,8,8,8,0,0,56,68,130, + 130,130,130,68,56,7,12,12,8,0,252,92,230,66,66,66, + 66,98,92,64,64,64,224,7,12,12,8,1,252,116,204,132, + 132,132,132,204,116,4,4,4,14,5,8,8,6,0,0,88, + 232,64,64,64,64,64,224,5,8,8,6,0,0,120,136,128, + 112,8,136,200,176,4,10,10,5,0,0,64,64,240,64,64, + 64,64,64,80,32,8,8,8,8,0,0,198,66,66,66,66, + 66,71,58,8,8,8,8,0,0,231,66,66,36,36,20,24, + 8,12,8,16,12,0,0,238,112,68,32,68,32,34,64,34, + 64,21,64,8,128,8,128,7,8,8,8,0,0,238,68,40, + 16,40,40,68,238,8,12,12,8,0,252,247,66,66,36,36, + 20,8,8,16,16,160,192,6,8,8,7,0,0,252,132,8, + 16,32,64,132,252,4,14,14,8,2,253,48,64,64,64,64, + 64,128,64,64,64,64,64,64,48,1,11,11,3,0,0,128, + 128,128,128,128,128,128,128,128,128,128,4,14,14,8,0,253, + 192,32,32,32,32,32,16,32,32,32,32,32,32,192,8,3, + 3,9,0,3,113,153,142,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--20-140-100-100-P-96-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=18 x= 2 y=10 dx=18 dy= 0 ascent=18 len=39 + Font Bounding box w=22 h=29 x=-3 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR14[4577] U8G_SECTION(".progmem.u8g_font_timR14") = { + 0,22,29,253,249,13,2,131,6,16,32,255,252,18,252,13, + 252,0,0,0,5,0,1,2,13,13,4,1,0,192,192,192, + 192,192,192,64,64,64,0,0,192,192,6,4,4,8,1,9, + 204,204,204,136,12,11,22,10,255,1,12,192,12,192,12,192, + 127,240,25,128,25,128,25,128,255,224,51,0,51,0,51,0, + 7,16,16,9,1,254,16,124,214,210,208,240,120,60,28,22, + 22,150,214,124,16,16,13,13,26,15,1,0,56,48,111,224, + 196,64,196,128,205,128,251,0,114,112,6,216,13,136,9,136, + 25,152,49,240,32,224,12,13,26,14,1,0,28,0,50,0, + 50,0,50,0,52,0,25,224,56,192,109,128,207,0,199,0, + 199,128,237,240,120,224,2,4,4,4,1,9,192,192,192,128, + 5,17,17,7,1,252,24,48,96,96,64,192,192,192,192,192, + 192,192,64,96,96,48,24,5,17,17,7,1,252,192,96,48, + 48,16,24,24,24,24,24,24,24,16,48,48,96,192,7,7, + 7,9,1,6,16,214,84,56,214,146,16,8,8,8,10,1, + 1,24,24,24,255,255,24,24,24,3,5,5,4,0,253,96, + 96,32,96,192,5,2,2,6,0,3,248,248,2,2,2,4, + 1,0,192,192,7,17,17,5,255,252,2,2,6,4,12,12, + 8,24,24,16,48,48,32,96,96,64,192,8,13,13,9,1, + 0,60,102,102,195,195,195,195,195,195,195,102,102,60,6,13, + 13,9,2,0,48,112,240,48,48,48,48,48,48,48,48,120, + 252,7,13,13,9,1,0,60,126,206,134,6,6,12,12,24, + 48,98,254,254,7,13,13,9,1,0,124,206,134,6,12,56, + 60,14,6,6,6,204,248,8,13,13,9,0,0,2,6,14, + 14,22,38,70,70,255,255,6,6,6,7,13,13,9,1,0, + 126,124,192,192,240,60,12,14,6,6,12,220,240,8,13,13, + 9,1,0,7,28,48,96,96,252,198,195,195,195,227,118,60, + 8,13,13,9,1,0,127,255,130,6,4,12,12,8,24,24, + 16,48,48,8,13,13,9,1,0,60,102,194,230,124,56,60, + 110,199,195,195,102,60,8,13,13,9,1,0,60,110,198,195, + 195,195,227,127,54,6,12,56,224,2,9,9,5,1,0,192, + 192,0,0,0,0,0,192,192,3,12,12,5,0,253,96,96, + 0,0,0,0,0,96,96,32,96,192,9,9,18,11,1,0, + 1,128,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,128,9,5,10,11,1,2,255,128,255,128,0,0,255,128, + 255,128,9,9,18,11,1,0,192,0,112,0,28,0,7,0, + 1,128,7,0,28,0,112,0,192,0,6,13,13,8,1,0, + 120,140,196,204,12,24,24,48,32,32,0,48,48,14,16,32, + 17,1,253,7,224,14,48,56,24,48,8,99,236,103,228,198, + 100,204,100,204,204,204,200,205,216,103,112,96,0,48,0,28, + 48,7,224,13,13,26,14,1,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,10,13,26,13,2,0,255,0,99,128,97,128,97, + 128,97,128,99,0,127,128,97,192,96,192,96,192,96,192,97, + 128,255,0,11,13,26,13,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,11,13,26,14,2,0,255,0,99,128,96,192,96, + 192,96,96,96,96,96,96,96,96,96,96,96,192,96,192,99, + 128,255,0,9,13,26,12,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,13,26,11,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,0,96, + 0,240,0,12,13,26,14,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,240,192,96,192,96,96,96,96,96,57, + 192,15,0,12,13,26,14,1,0,240,240,96,96,96,96,96, + 96,96,96,96,96,127,224,96,96,96,96,96,96,96,96,96, + 96,240,240,4,13,13,6,1,0,240,96,96,96,96,96,96, + 96,96,96,96,96,240,6,13,13,7,0,0,60,24,24,24, + 24,24,24,24,24,24,24,216,240,12,13,26,14,1,0,243, + 224,97,128,99,0,102,0,108,0,120,0,120,0,124,0,110, + 0,103,0,99,128,97,192,240,240,10,13,26,12,1,0,240, + 0,96,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,64,96,192,255,192,14,13,26,17,1,0,224, + 28,112,56,112,56,120,120,88,88,88,216,92,216,76,152,77, + 152,71,24,71,24,66,24,226,60,12,13,26,14,1,0,224, + 112,96,32,112,32,120,32,92,32,76,32,78,32,71,32,67, + 160,65,224,64,224,64,96,224,32,12,13,26,14,1,0,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,9,13,26,11,1,0,255, + 0,99,128,97,128,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,96,0,96,0,240,0,12,17,34,14,1,252,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,6,0,3,0,1,192,0, + 240,11,13,26,13,1,0,255,0,99,128,97,128,97,128,97, + 128,99,0,126,0,110,0,102,0,99,0,97,128,96,192,240, + 224,8,13,13,11,2,0,58,70,194,192,224,120,60,14,7, + 3,131,198,184,10,13,26,12,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,30,0,11,13,26,14,2,0,240,224,96,64,96,64, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,112,192, + 57,128,31,0,13,13,26,14,0,0,248,120,112,48,48,32, + 56,32,24,96,24,64,28,64,12,192,14,128,6,128,7,128, + 3,0,3,0,18,13,39,18,0,0,249,227,192,112,193,128, + 48,193,0,56,225,0,24,99,0,24,226,0,24,226,0,29, + 166,0,13,52,0,15,60,0,14,56,0,6,24,0,6,24, + 0,12,13,26,14,1,0,240,112,112,96,56,192,25,128,13, + 0,14,0,6,0,15,0,27,0,17,128,49,192,96,224,240, + 240,12,13,26,14,1,0,240,240,112,96,48,192,24,128,25, + 0,15,0,6,0,6,0,6,0,6,0,6,0,6,0,15, + 0,10,13,26,12,1,0,127,192,97,192,65,128,3,128,7, + 0,6,0,14,0,28,0,56,0,48,0,112,64,224,192,255, + 192,4,16,16,6,2,253,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,5,13,13,5,0,0,128,128,192, + 64,96,96,32,48,48,16,24,8,8,4,16,16,6,0,253, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,240, + 7,7,7,9,1,6,16,56,40,108,68,198,130,9,2,4, + 9,0,252,255,128,255,128,4,3,3,4,0,10,192,96,16, + 7,9,9,9,1,0,120,200,204,28,108,204,204,252,102,8, + 13,13,9,0,0,96,224,96,96,110,119,99,99,99,99,99, + 102,92,7,9,9,8,0,0,60,102,192,192,192,192,192,102, + 60,8,13,13,9,0,0,6,14,6,6,62,102,198,198,198, + 198,198,102,63,7,9,9,8,0,0,60,102,194,254,192,192, + 192,102,60,6,13,13,6,0,0,28,52,32,96,248,96,96, + 96,96,96,96,96,240,8,13,13,9,0,252,62,204,196,196, + 204,120,64,124,127,131,193,226,124,9,13,26,10,0,0,96, + 0,224,0,96,0,96,0,102,0,111,0,115,0,99,0,99, + 0,99,0,99,0,99,0,243,128,4,13,13,5,0,0,96, + 96,0,0,96,224,96,96,96,96,96,96,240,4,17,17,5, + 255,252,48,48,0,0,48,112,48,48,48,48,48,48,48,48, + 48,224,192,10,13,26,9,0,0,96,0,224,0,96,0,96, + 0,103,0,98,0,100,0,104,0,120,0,108,0,110,0,103, + 0,227,192,4,13,13,5,0,0,96,224,96,96,96,96,96, + 96,96,96,96,96,240,14,9,18,15,0,0,102,48,239,120, + 115,152,99,24,99,24,99,24,99,24,99,24,247,188,9,9, + 18,10,0,0,102,0,239,0,115,0,99,0,99,0,99,0, + 99,0,99,0,243,128,8,9,9,9,0,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,252,110,247,99,99,99, + 99,99,118,124,96,96,96,240,8,13,13,9,0,252,62,102, + 198,198,198,198,198,102,62,6,6,6,15,6,9,9,7,0, + 0,108,236,112,96,96,96,96,96,240,5,9,9,7,1,0, + 104,152,200,224,112,56,152,200,176,6,11,11,6,0,0,32, + 96,248,96,96,96,96,96,96,116,56,9,9,18,10,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,119,0, + 59,128,9,9,18,9,255,0,243,128,99,0,98,0,50,0, + 54,0,20,0,28,0,8,0,8,0,13,9,18,14,0,0, + 231,56,102,48,98,96,54,96,55,96,29,64,29,192,8,128, + 8,128,9,9,18,9,0,0,225,128,99,0,54,0,28,0, + 28,0,28,0,54,0,99,0,195,128,8,13,13,9,0,252, + 243,99,114,50,54,28,28,12,8,24,16,240,224,7,9,9, + 8,0,0,254,206,140,24,48,48,98,230,254,7,17,17,9, + 1,252,14,24,48,48,48,48,48,96,192,96,48,48,48,48, + 48,24,14,1,13,13,3,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,128,7,17,17,9,1,252,224,48,24,24, + 24,24,24,12,6,12,24,24,24,24,24,48,224,9,4,8, + 11,1,3,48,0,121,128,207,0,6,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,5, + 0,1,2,13,13,4,1,252,192,192,0,0,128,128,128,192, + 192,192,192,192,192,7,14,14,9,1,253,6,4,60,110,200, + 216,208,208,240,114,124,64,192,128,10,13,26,11,0,0,15, + 0,25,128,25,128,24,0,24,0,24,0,126,0,24,0,24, + 0,16,0,120,64,191,192,231,128,9,7,14,11,1,3,221, + 128,247,128,99,0,65,0,99,0,247,128,221,128,8,13,13, + 9,0,0,247,98,98,118,52,52,126,24,126,24,24,24,126, + 1,13,13,3,1,0,128,128,128,128,128,0,0,0,128,128, + 128,128,128,8,16,16,10,1,253,60,102,102,112,56,124,142, + 199,227,113,62,28,14,102,102,60,5,2,2,5,0,10,216, + 216,13,13,26,15,1,0,15,128,48,96,64,16,71,144,136, + 136,144,8,144,8,144,8,136,136,71,16,64,16,48,96,15, + 128,5,8,8,5,0,5,96,144,16,112,144,232,0,248,8, + 7,7,10,1,1,17,51,102,204,102,51,17,9,5,10,11, + 1,2,255,128,255,128,1,128,1,128,1,128,5,2,2,6, + 0,3,248,248,13,13,26,15,1,0,15,128,48,96,64,16, + 95,16,136,136,136,136,143,8,137,8,136,136,92,208,64,16, + 48,96,15,128,5,2,2,5,0,10,248,248,5,5,5,7, + 1,8,112,136,136,136,112,8,11,11,10,1,0,24,24,24, + 255,255,24,24,24,0,255,255,5,8,8,6,0,5,112,152, + 24,16,32,32,64,248,5,8,8,6,0,5,112,136,24,112, + 24,8,136,112,4,3,3,4,0,10,48,96,128,9,13,26, + 9,255,252,231,0,99,0,99,0,99,0,99,0,99,0,99, + 0,119,0,123,128,64,0,64,0,96,0,96,0,7,17,17, + 8,1,252,62,116,244,244,244,244,244,116,20,20,20,20,20, + 20,20,20,20,2,2,2,4,1,4,192,192,4,5,5,6, + 1,252,32,32,16,176,112,3,8,8,6,1,5,64,192,64, + 64,64,64,64,224,5,8,8,6,0,5,112,216,136,136,216, + 112,0,248,8,7,7,10,1,1,136,204,102,51,102,204,136, + 11,13,26,13,1,0,64,128,193,128,65,0,67,0,70,0, + 68,64,76,192,233,64,27,64,50,64,39,224,96,64,64,64, + 11,13,26,13,1,0,64,128,193,128,65,0,67,0,70,0, + 69,192,78,96,232,96,24,64,48,128,32,128,97,0,67,224, + 13,13,26,13,255,0,112,32,136,96,24,64,112,192,25,128, + 9,16,139,48,114,80,6,208,12,144,9,248,24,16,16,16, + 6,13,13,8,1,252,48,48,0,16,16,48,96,96,192,204, + 140,196,120,13,17,34,14,1,0,24,0,12,0,2,0,0, + 0,2,0,7,0,7,0,5,0,13,128,9,128,25,192,16, + 192,31,192,48,224,32,96,96,112,240,248,13,17,34,14,1, + 0,0,192,1,128,2,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,13,17,34,14,1,0,2,0,7,0,13,128,0, + 0,2,0,7,0,7,0,5,0,13,128,9,128,25,192,16, + 192,31,192,48,224,32,96,96,112,240,248,13,17,34,14,1, + 0,12,128,31,128,19,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,13,16,32,14,1,0,13,128,13,128,0,0,2, + 0,7,0,7,0,5,0,13,128,9,128,25,192,16,192,31, + 192,48,224,32,96,96,112,240,248,13,18,36,14,1,0,6, + 0,9,0,9,0,6,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,15,13,26,17,1,0,15,252,7,140,5,132,5, + 128,13,128,9,136,25,248,31,136,17,128,49,128,33,130,97, + 134,247,254,11,17,34,13,1,252,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,4,0,2,0,22,0,14,0,9,17,34,12,1, + 0,48,0,24,0,4,0,0,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,17,34,12,1,0,3,0,6,0,8,0,0, + 0,255,128,97,128,96,128,96,0,96,0,97,0,127,0,97, + 0,96,0,96,0,96,128,97,128,255,128,9,17,34,12,1, + 0,8,0,28,0,54,0,0,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,16,32,12,1,0,54,0,54,0,0,0,255, + 128,97,128,96,128,96,0,96,0,97,0,127,0,97,0,96, + 0,96,0,96,128,97,128,255,128,6,17,17,6,255,0,192, + 96,16,0,60,24,24,24,24,24,24,24,24,24,24,24,60, + 6,17,17,6,1,0,12,24,32,0,240,96,96,96,96,96, + 96,96,96,96,96,96,240,5,17,17,6,1,0,32,112,216, + 0,240,96,96,96,96,96,96,96,96,96,96,96,240,5,16, + 16,6,1,0,216,216,0,240,96,96,96,96,96,96,96,96, + 96,96,96,240,12,13,26,13,0,0,127,128,49,192,48,96, + 48,96,48,48,48,48,252,48,48,48,48,48,48,96,48,96, + 49,192,127,128,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,224,112,96,32,112,32,120,32,92,32,76,32,78,32, + 71,32,67,160,65,224,64,224,64,96,224,32,12,17,34,14, + 1,0,48,0,24,0,4,0,0,0,15,0,48,192,96,96, + 96,96,192,48,192,48,192,48,192,48,192,48,96,96,96,96, + 48,192,15,0,12,17,34,14,1,0,0,192,1,128,2,0, + 0,0,15,0,48,192,96,96,96,96,192,48,192,48,192,48, + 192,48,192,48,96,96,96,96,48,192,15,0,12,17,34,14, + 1,0,4,0,14,0,27,0,0,0,15,0,48,192,96,96, + 96,96,192,48,192,48,192,48,192,48,192,48,96,96,96,96, + 48,192,15,0,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,15,0,48,192,96,96,96,96,192,48,192,48,192,48, + 192,48,192,48,96,96,96,96,48,192,15,0,12,16,32,14, + 1,0,27,0,27,0,0,0,15,0,48,192,96,96,96,96, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 15,0,8,7,7,10,1,1,195,102,60,24,60,102,195,12, + 15,30,14,1,255,0,48,15,96,48,192,96,224,97,160,195, + 48,195,48,198,48,204,48,204,48,88,96,112,96,48,192,111, + 0,192,0,11,17,34,14,2,0,48,0,24,0,4,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,112,192,57,128,31,0,11,17,34,14,2, + 0,0,192,1,128,2,0,0,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,112,192,57, + 128,31,0,11,17,34,14,2,0,4,0,14,0,27,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,112,192,57,128,31,0,11,16,32,14,2, + 0,27,0,27,0,0,0,240,224,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,112,192,57,128,31, + 0,12,17,34,14,1,0,0,192,1,128,2,0,0,0,240, + 240,112,96,48,192,24,128,25,0,15,0,6,0,6,0,6, + 0,6,0,6,0,6,0,15,0,9,13,26,10,1,0,240, + 0,96,0,96,0,127,0,99,128,97,128,97,128,97,128,99, + 0,126,0,96,0,96,0,240,0,8,13,13,9,0,0,28, + 50,99,99,102,110,124,102,99,99,107,111,238,7,13,13,9, + 1,0,192,96,16,0,120,200,204,28,108,204,204,252,102,7, + 13,13,9,1,0,12,24,32,0,120,200,204,28,108,204,204, + 252,102,7,13,13,9,1,0,16,56,108,0,120,200,204,28, + 108,204,204,252,102,7,13,13,9,1,0,100,252,152,0,120, + 200,204,28,108,204,204,252,102,7,12,12,9,1,0,108,108, + 0,120,200,204,28,108,204,204,252,102,7,14,14,9,1,0, + 48,72,72,48,0,120,200,204,28,108,204,204,252,102,11,9, + 18,12,0,0,123,192,206,96,204,32,31,224,108,0,204,0, + 204,0,254,96,99,192,7,13,13,8,0,252,60,102,192,192, + 192,192,192,102,60,16,8,88,56,7,13,13,8,0,0,192, + 96,16,0,60,102,194,254,192,192,192,102,60,7,13,13,8, + 0,0,6,12,16,0,60,102,194,254,192,192,192,102,60,7, + 13,13,8,0,0,16,56,108,0,60,102,194,254,192,192,192, + 102,60,7,12,12,8,0,0,108,108,0,60,102,194,254,192, + 192,192,102,60,6,13,13,5,254,0,192,96,16,0,24,56, + 24,24,24,24,24,24,60,6,13,13,5,0,0,12,24,32, + 0,96,224,96,96,96,96,96,96,240,5,13,13,5,0,0, + 32,112,216,0,96,224,96,96,96,96,96,96,240,5,12,12, + 5,0,0,216,216,0,96,224,96,96,96,96,96,96,240,8, + 13,13,9,0,0,96,54,56,76,62,102,195,195,195,195,195, + 102,60,9,13,26,10,0,0,50,0,126,0,76,0,0,0, + 102,0,239,0,115,0,99,0,99,0,99,0,99,0,99,0, + 243,128,8,13,13,9,0,0,48,24,4,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,0,6,12,16,0,60, + 102,195,195,195,195,195,102,60,8,13,13,9,0,0,16,56, + 108,0,60,102,195,195,195,195,195,102,60,8,13,13,9,0, + 0,50,126,76,0,60,102,195,195,195,195,195,102,60,8,12, + 12,9,0,0,108,108,0,60,102,195,195,195,195,195,102,60, + 8,8,8,10,1,1,24,24,0,255,255,0,24,24,8,11, + 11,9,0,255,1,63,102,207,203,219,211,243,102,124,192,9, + 13,26,10,0,0,96,0,48,0,8,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 13,26,10,0,0,6,0,12,0,16,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 13,26,10,0,0,8,0,28,0,54,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 12,24,10,0,0,54,0,54,0,0,0,231,0,99,0,99, + 0,99,0,99,0,99,0,99,0,119,0,59,128,8,17,17, + 8,255,252,3,6,8,0,243,99,114,50,54,28,28,12,8, + 24,16,240,224,8,17,17,9,0,252,96,224,96,96,110,119, + 99,99,99,99,99,118,124,96,96,96,240,8,16,16,9,0, + 252,54,54,0,243,99,114,50,54,28,28,12,8,24,16,240, + 224}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--20-140-100-100-P-96-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=10 dx=18 dy= 0 ascent=14 len=39 + Font Bounding box w=22 h=29 x=-3 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR14r[2156] U8G_SECTION(".progmem.u8g_font_timR14r") = { + 0,22,29,253,249,13,2,131,6,16,32,127,252,14,252,13, + 252,0,0,0,5,0,1,2,13,13,4,1,0,192,192,192, + 192,192,192,64,64,64,0,0,192,192,6,4,4,8,1,9, + 204,204,204,136,12,11,22,10,255,1,12,192,12,192,12,192, + 127,240,25,128,25,128,25,128,255,224,51,0,51,0,51,0, + 7,16,16,9,1,254,16,124,214,210,208,240,120,60,28,22, + 22,150,214,124,16,16,13,13,26,15,1,0,56,48,111,224, + 196,64,196,128,205,128,251,0,114,112,6,216,13,136,9,136, + 25,152,49,240,32,224,12,13,26,14,1,0,28,0,50,0, + 50,0,50,0,52,0,25,224,56,192,109,128,207,0,199,0, + 199,128,237,240,120,224,2,4,4,4,1,9,192,192,192,128, + 5,17,17,7,1,252,24,48,96,96,64,192,192,192,192,192, + 192,192,64,96,96,48,24,5,17,17,7,1,252,192,96,48, + 48,16,24,24,24,24,24,24,24,16,48,48,96,192,7,7, + 7,9,1,6,16,214,84,56,214,146,16,8,8,8,10,1, + 1,24,24,24,255,255,24,24,24,3,5,5,4,0,253,96, + 96,32,96,192,5,2,2,6,0,3,248,248,2,2,2,4, + 1,0,192,192,7,17,17,5,255,252,2,2,6,4,12,12, + 8,24,24,16,48,48,32,96,96,64,192,8,13,13,9,1, + 0,60,102,102,195,195,195,195,195,195,195,102,102,60,6,13, + 13,9,2,0,48,112,240,48,48,48,48,48,48,48,48,120, + 252,7,13,13,9,1,0,60,126,206,134,6,6,12,12,24, + 48,98,254,254,7,13,13,9,1,0,124,206,134,6,12,56, + 60,14,6,6,6,204,248,8,13,13,9,0,0,2,6,14, + 14,22,38,70,70,255,255,6,6,6,7,13,13,9,1,0, + 126,124,192,192,240,60,12,14,6,6,12,220,240,8,13,13, + 9,1,0,7,28,48,96,96,252,198,195,195,195,227,118,60, + 8,13,13,9,1,0,127,255,130,6,4,12,12,8,24,24, + 16,48,48,8,13,13,9,1,0,60,102,194,230,124,56,60, + 110,199,195,195,102,60,8,13,13,9,1,0,60,110,198,195, + 195,195,227,127,54,6,12,56,224,2,9,9,5,1,0,192, + 192,0,0,0,0,0,192,192,3,12,12,5,0,253,96,96, + 0,0,0,0,0,96,96,32,96,192,9,9,18,11,1,0, + 1,128,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,128,9,5,10,11,1,2,255,128,255,128,0,0,255,128, + 255,128,9,9,18,11,1,0,192,0,112,0,28,0,7,0, + 1,128,7,0,28,0,112,0,192,0,6,13,13,8,1,0, + 120,140,196,204,12,24,24,48,32,32,0,48,48,14,16,32, + 17,1,253,7,224,14,48,56,24,48,8,99,236,103,228,198, + 100,204,100,204,204,204,200,205,216,103,112,96,0,48,0,28, + 48,7,224,13,13,26,14,1,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,10,13,26,13,2,0,255,0,99,128,97,128,97, + 128,97,128,99,0,127,128,97,192,96,192,96,192,96,192,97, + 128,255,0,11,13,26,13,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,11,13,26,14,2,0,255,0,99,128,96,192,96, + 192,96,96,96,96,96,96,96,96,96,96,96,192,96,192,99, + 128,255,0,9,13,26,12,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,13,26,11,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,0,96, + 0,240,0,12,13,26,14,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,240,192,96,192,96,96,96,96,96,57, + 192,15,0,12,13,26,14,1,0,240,240,96,96,96,96,96, + 96,96,96,96,96,127,224,96,96,96,96,96,96,96,96,96, + 96,240,240,4,13,13,6,1,0,240,96,96,96,96,96,96, + 96,96,96,96,96,240,6,13,13,7,0,0,60,24,24,24, + 24,24,24,24,24,24,24,216,240,12,13,26,14,1,0,243, + 224,97,128,99,0,102,0,108,0,120,0,120,0,124,0,110, + 0,103,0,99,128,97,192,240,240,10,13,26,12,1,0,240, + 0,96,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,64,96,192,255,192,14,13,26,17,1,0,224, + 28,112,56,112,56,120,120,88,88,88,216,92,216,76,152,77, + 152,71,24,71,24,66,24,226,60,12,13,26,14,1,0,224, + 112,96,32,112,32,120,32,92,32,76,32,78,32,71,32,67, + 160,65,224,64,224,64,96,224,32,12,13,26,14,1,0,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,9,13,26,11,1,0,255, + 0,99,128,97,128,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,96,0,96,0,240,0,12,17,34,14,1,252,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,6,0,3,0,1,192,0, + 240,11,13,26,13,1,0,255,0,99,128,97,128,97,128,97, + 128,99,0,126,0,110,0,102,0,99,0,97,128,96,192,240, + 224,8,13,13,11,2,0,58,70,194,192,224,120,60,14,7, + 3,131,198,184,10,13,26,12,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,30,0,11,13,26,14,2,0,240,224,96,64,96,64, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,112,192, + 57,128,31,0,13,13,26,14,0,0,248,120,112,48,48,32, + 56,32,24,96,24,64,28,64,12,192,14,128,6,128,7,128, + 3,0,3,0,18,13,39,18,0,0,249,227,192,112,193,128, + 48,193,0,56,225,0,24,99,0,24,226,0,24,226,0,29, + 166,0,13,52,0,15,60,0,14,56,0,6,24,0,6,24, + 0,12,13,26,14,1,0,240,112,112,96,56,192,25,128,13, + 0,14,0,6,0,15,0,27,0,17,128,49,192,96,224,240, + 240,12,13,26,14,1,0,240,240,112,96,48,192,24,128,25, + 0,15,0,6,0,6,0,6,0,6,0,6,0,6,0,15, + 0,10,13,26,12,1,0,127,192,97,192,65,128,3,128,7, + 0,6,0,14,0,28,0,56,0,48,0,112,64,224,192,255, + 192,4,16,16,6,2,253,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,5,13,13,5,0,0,128,128,192, + 64,96,96,32,48,48,16,24,8,8,4,16,16,6,0,253, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,240, + 7,7,7,9,1,6,16,56,40,108,68,198,130,9,2,4, + 9,0,252,255,128,255,128,4,3,3,4,0,10,192,96,16, + 7,9,9,9,1,0,120,200,204,28,108,204,204,252,102,8, + 13,13,9,0,0,96,224,96,96,110,119,99,99,99,99,99, + 102,92,7,9,9,8,0,0,60,102,192,192,192,192,192,102, + 60,8,13,13,9,0,0,6,14,6,6,62,102,198,198,198, + 198,198,102,63,7,9,9,8,0,0,60,102,194,254,192,192, + 192,102,60,6,13,13,6,0,0,28,52,32,96,248,96,96, + 96,96,96,96,96,240,8,13,13,9,0,252,62,204,196,196, + 204,120,64,124,127,131,193,226,124,9,13,26,10,0,0,96, + 0,224,0,96,0,96,0,102,0,111,0,115,0,99,0,99, + 0,99,0,99,0,99,0,243,128,4,13,13,5,0,0,96, + 96,0,0,96,224,96,96,96,96,96,96,240,4,17,17,5, + 255,252,48,48,0,0,48,112,48,48,48,48,48,48,48,48, + 48,224,192,10,13,26,9,0,0,96,0,224,0,96,0,96, + 0,103,0,98,0,100,0,104,0,120,0,108,0,110,0,103, + 0,227,192,4,13,13,5,0,0,96,224,96,96,96,96,96, + 96,96,96,96,96,240,14,9,18,15,0,0,102,48,239,120, + 115,152,99,24,99,24,99,24,99,24,99,24,247,188,9,9, + 18,10,0,0,102,0,239,0,115,0,99,0,99,0,99,0, + 99,0,99,0,243,128,8,9,9,9,0,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,252,110,247,99,99,99, + 99,99,118,124,96,96,96,240,8,13,13,9,0,252,62,102, + 198,198,198,198,198,102,62,6,6,6,15,6,9,9,7,0, + 0,108,236,112,96,96,96,96,96,240,5,9,9,7,1,0, + 104,152,200,224,112,56,152,200,176,6,11,11,6,0,0,32, + 96,248,96,96,96,96,96,96,116,56,9,9,18,10,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,119,0, + 59,128,9,9,18,9,255,0,243,128,99,0,98,0,50,0, + 54,0,20,0,28,0,8,0,8,0,13,9,18,14,0,0, + 231,56,102,48,98,96,54,96,55,96,29,64,29,192,8,128, + 8,128,9,9,18,9,0,0,225,128,99,0,54,0,28,0, + 28,0,28,0,54,0,99,0,195,128,8,13,13,9,0,252, + 243,99,114,50,54,28,28,12,8,24,16,240,224,7,9,9, + 8,0,0,254,206,140,24,48,48,98,230,254,7,17,17,9, + 1,252,14,24,48,48,48,48,48,96,192,96,48,48,48,48, + 48,24,14,1,13,13,3,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,128,7,17,17,9,1,252,224,48,24,24, + 24,24,24,12,6,12,24,24,24,24,24,48,224,9,4,8, + 11,1,3,48,0,121,128,207,0,6,0,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--25-180-100-100-P-125-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=23 x= 3 y=14 dx=23 dy= 0 ascent=23 len=69 + Font Bounding box w=29 h=37 x=-4 y=-9 + Calculated Min Values x=-2 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =17 descent=-6 + Max Font ascent =23 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR18[6850] U8G_SECTION(".progmem.u8g_font_timR18") = { + 0,29,37,252,247,17,4,9,8,241,32,255,250,23,250,17, + 250,0,0,0,6,0,1,3,17,17,8,3,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,6,5, + 5,10,1,12,204,204,204,204,136,11,17,34,13,1,0,8, + 128,8,128,8,128,8,128,8,128,127,224,127,224,17,0,17, + 0,17,0,255,192,255,192,34,0,34,0,34,0,34,0,34, + 0,11,21,42,12,0,254,4,0,4,0,63,0,101,192,196, + 192,196,64,196,64,228,0,124,0,30,0,7,128,5,192,4, + 224,4,96,132,96,132,96,196,192,229,192,63,0,4,0,4, + 0,17,16,48,19,1,0,30,12,0,51,252,0,97,24,0, + 193,16,0,193,48,0,194,96,0,228,64,0,120,192,0,1, + 143,0,1,25,128,3,48,128,6,96,128,4,96,128,12,97, + 0,24,114,0,16,60,0,17,17,51,19,1,0,7,192,0, + 8,96,0,24,32,0,24,32,0,24,96,0,12,192,0,15, + 158,0,7,12,0,15,8,0,51,136,0,97,144,0,192,208, + 0,192,224,0,192,96,0,224,240,128,127,191,0,62,14,0, + 2,5,5,6,2,12,192,192,192,192,128,6,22,22,8,1, + 251,4,8,16,48,32,96,96,192,192,192,192,192,192,192,192, + 96,96,32,48,16,8,4,6,22,22,8,1,251,128,64,32, + 48,16,24,24,12,12,12,12,12,12,12,12,24,24,16,48, + 32,64,128,9,9,18,12,2,8,28,0,28,0,201,128,235, + 128,28,0,235,128,201,128,28,0,28,0,12,12,24,12,0, + 0,6,0,6,0,6,0,6,0,6,0,255,240,255,240,6, + 0,6,0,6,0,6,0,6,0,3,5,5,7,2,253,192, + 224,32,96,192,6,2,2,8,0,5,252,252,2,2,2,6, + 2,0,192,192,9,21,42,7,254,252,1,128,1,128,1,0, + 3,0,3,0,2,0,6,0,6,0,4,0,12,0,12,0, + 8,0,24,0,24,0,16,0,48,0,48,0,96,0,96,0, + 64,0,192,0,10,17,34,12,1,0,30,0,51,0,97,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,225,192,97,128,97,128,51,0,30,0,8,17,17,12, + 2,0,8,24,120,24,24,24,24,24,24,24,24,24,24,24, + 24,24,255,10,17,34,12,1,0,28,0,127,0,67,128,129, + 128,129,128,1,128,1,128,3,0,3,0,6,0,4,0,12, + 0,24,0,48,0,96,64,255,192,255,128,9,17,34,12,1, + 0,28,0,126,0,71,0,131,0,131,0,6,0,12,0,30, + 0,7,0,3,128,1,128,1,128,1,128,1,0,195,0,230, + 0,120,0,10,17,34,12,1,0,3,0,7,0,7,0,11, + 0,27,0,19,0,51,0,35,0,99,0,67,0,195,0,255, + 192,255,192,3,0,3,0,3,0,3,0,10,17,34,12,1, + 0,31,192,31,128,32,0,32,0,96,0,120,0,126,0,15, + 128,3,128,1,192,0,192,0,192,0,192,0,192,193,128,227, + 128,126,0,10,17,34,12,1,0,3,192,14,0,24,0,48, + 0,112,0,96,0,238,0,243,128,193,128,192,192,192,192,192, + 192,192,192,224,192,97,128,123,128,30,0,10,17,34,12,1, + 0,127,192,255,192,192,192,129,128,1,128,1,0,3,0,3, + 0,2,0,6,0,6,0,4,0,12,0,12,0,12,0,24, + 0,24,0,10,17,34,12,1,0,30,0,51,0,97,128,97, + 128,97,128,115,0,62,0,30,0,63,0,99,128,65,192,192, + 192,192,192,192,192,225,128,115,128,30,0,10,17,34,12,1, + 0,30,0,119,128,97,128,193,192,192,192,192,192,192,192,192, + 192,97,192,115,192,29,128,1,128,3,128,3,0,6,0,28, + 0,240,0,2,11,11,6,2,0,192,192,0,0,0,0,0, + 0,0,192,192,3,14,14,7,2,253,192,192,0,0,0,0, + 0,0,0,192,224,32,96,192,11,11,22,14,1,0,0,96, + 1,192,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,192,0,96,9,5,10,13,2,3,255,128,255,128,0,0, + 255,128,255,128,11,11,22,13,1,0,192,0,112,0,28,0, + 7,0,1,192,0,96,1,192,7,0,28,0,112,0,192,0, + 8,17,17,11,2,0,124,198,131,195,195,7,14,12,28,24, + 24,16,16,0,0,48,48,18,20,60,22,2,253,3,248,0, + 15,14,0,28,3,0,56,1,128,112,0,128,96,236,192,225, + 252,64,195,140,64,195,12,64,198,12,64,198,24,64,198,24, + 192,198,24,128,198,57,128,99,123,0,97,222,0,48,0,0, + 24,0,0,14,12,0,3,240,0,17,17,51,17,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,14,17,34,16,1,0,255,192,48,112,48,48,48,24, + 48,24,48,24,48,48,48,64,63,224,48,56,48,24,48,12, + 48,12,48,12,48,24,48,120,255,224,14,17,34,16,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,4,56,8,30,56, + 7,224,15,17,34,17,1,0,255,192,48,112,48,56,48,12, + 48,12,48,6,48,6,48,6,48,6,48,6,48,6,48,6, + 48,12,48,12,48,56,48,112,255,192,13,17,34,15,1,0, + 255,240,48,48,48,16,48,16,48,0,48,0,48,64,48,64, + 63,192,48,64,48,64,48,0,48,0,48,8,48,8,48,24, + 255,248,12,17,34,14,1,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,32,48,32,63,224,48,32,48,32,48,0, + 48,0,48,0,48,0,48,0,252,0,16,17,34,18,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,63,192,12,192,12,96,12,96,12,56,28,30,56, + 7,224,17,17,51,19,1,0,252,31,128,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 63,254,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,48,6,0,252,31,128,6,17,17,8,1, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,9,17,34,11,1,0,31,128,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,198,0,204,0,120,0,16,17,34,17,1,0, + 252,126,48,24,48,48,48,96,48,192,49,128,51,0,62,0, + 63,0,51,128,49,192,48,224,48,112,48,56,48,28,48,14, + 252,31,13,17,34,14,1,0,252,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,21,17,51,22,1,0, + 240,0,248,48,0,224,56,1,96,56,1,96,44,2,96,44, + 2,96,38,2,96,38,4,96,35,4,96,35,8,96,33,136, + 96,33,136,96,32,208,96,32,208,96,32,96,96,32,96,96, + 248,97,248,16,17,34,18,1,0,240,31,48,4,56,4,56, + 4,44,4,38,4,38,4,35,4,33,132,33,132,32,196,32, + 100,32,100,32,52,32,28,32,28,248,12,16,17,34,18,1, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,13,17,34,15,1,0,255,192,48,112,48,48,48, + 24,48,24,48,24,48,48,48,112,63,192,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,252,0,16,22,44,18,1, + 251,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,1,192,0,224,0,112,0,56,0,15,15,17,34, + 16,1,0,255,192,48,112,48,48,48,24,48,24,48,24,48, + 48,48,112,63,192,51,128,49,128,48,192,48,96,48,112,48, + 56,48,28,252,30,11,17,34,13,1,0,30,64,99,192,192, + 192,192,64,192,64,224,0,120,0,30,0,15,128,3,192,0, + 224,0,96,128,96,128,96,192,192,241,128,158,0,14,17,34, + 16,1,0,255,252,195,12,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,15,192,16,17,34,18,1,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,17,17,51, + 17,0,0,252,31,128,48,6,0,48,4,0,24,12,0,24, + 8,0,24,8,0,12,24,0,12,16,0,6,48,0,6,32, + 0,6,32,0,3,96,0,3,64,0,3,192,0,1,128,0, + 1,128,0,1,128,0,23,17,51,23,0,0,252,126,126,48, + 24,24,48,24,16,24,24,16,24,24,48,24,44,32,12,44, + 32,12,44,96,6,76,96,6,76,64,6,70,64,3,70,192, + 3,70,128,3,135,128,1,131,128,1,131,0,1,131,0,18, + 17,51,18,0,0,126,15,128,28,6,0,14,12,0,6,8, + 0,3,16,0,1,160,0,1,192,0,0,192,0,0,224,0, + 1,112,0,2,56,0,6,24,0,4,12,0,8,14,0,24, + 7,0,48,3,128,252,15,192,16,17,34,18,1,0,252,63, + 48,12,56,8,24,24,28,16,12,48,6,32,6,96,3,64, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 13,17,34,15,1,0,255,240,192,112,128,224,128,192,1,192, + 3,128,3,0,7,0,6,0,14,0,28,0,24,0,56,0, + 48,8,112,8,224,24,255,248,5,21,21,8,2,252,248,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,248,7,17,17,7,0,0,192,192,64,96,96,32,48, + 48,16,24,24,8,12,12,4,6,6,5,21,21,8,1,252, + 248,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,248,9,9,18,11,1,8,8,0,28,0,20, + 0,54,0,34,0,99,0,65,0,193,128,128,128,12,2,4, + 12,0,251,255,240,255,240,5,4,4,8,1,13,192,224,112, + 24,9,12,24,11,1,0,62,0,103,0,99,0,3,0,15, + 0,59,0,99,0,195,0,195,0,199,0,251,0,113,128,11, + 17,34,12,0,0,48,0,240,0,48,0,48,0,48,0,55, + 0,57,192,48,192,48,96,48,96,48,96,48,96,48,96,48, + 96,48,192,57,192,47,0,9,12,24,11,1,0,31,0,99, + 128,65,128,192,0,192,0,192,0,192,0,192,0,224,0,112, + 128,127,0,30,0,10,17,34,12,1,0,1,128,7,128,1, + 128,1,128,1,128,29,128,115,128,97,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,128,127,128,25,192,9,12,24, + 11,1,0,30,0,99,0,65,128,193,128,255,128,192,0,192, + 0,192,0,224,0,112,128,127,0,30,0,7,17,17,7,0, + 0,14,22,48,48,48,254,48,48,48,48,48,48,48,48,48, + 48,120,11,18,36,12,1,250,30,192,35,192,97,0,97,128, + 97,128,97,128,97,128,51,0,60,0,64,0,96,0,127,128, + 63,192,64,224,192,96,192,96,225,192,127,0,12,17,34,13, + 0,0,48,0,240,0,48,0,48,0,48,0,51,128,55,192, + 56,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,120,240,4,17,17,6,1,0,96,96,0,0,0,96, + 224,96,96,96,96,96,96,96,96,96,240,6,23,23,6,254, + 250,12,12,0,0,0,12,28,12,12,12,12,12,12,12,12, + 12,12,12,12,12,204,200,112,12,17,34,12,0,0,48,0, + 240,0,48,0,48,0,48,0,51,224,49,128,51,0,50,0, + 52,0,60,0,54,0,55,0,51,128,49,192,48,224,121,240, + 5,17,17,6,0,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,120,18,12,36,20,1,0,103,14,0, + 239,159,0,113,227,128,96,193,128,96,193,128,96,193,128,96, + 193,128,96,193,128,96,193,128,96,193,128,96,193,128,241,227, + 192,11,12,24,13,1,0,103,0,239,128,113,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,241,224,10, + 12,24,12,1,0,30,0,115,128,97,128,192,192,192,192,192, + 192,192,192,192,192,192,192,97,128,115,128,30,0,10,18,36, + 12,1,250,110,0,243,128,97,128,96,192,96,192,96,192,96, + 192,96,192,96,192,97,128,115,128,110,0,96,0,96,0,96, + 0,96,0,96,0,240,0,10,18,36,12,1,250,29,128,115, + 128,97,128,193,128,193,128,193,128,193,128,193,128,193,128,97, + 128,115,128,29,128,1,128,1,128,1,128,1,128,1,128,3, + 192,6,12,12,8,1,0,108,236,112,96,96,96,96,96,96, + 96,96,240,8,12,12,10,1,0,62,70,194,224,112,124,30, + 7,3,131,198,248,7,15,15,7,0,0,16,48,112,254,48, + 48,48,48,48,48,48,48,48,50,28,11,12,24,13,1,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,12,24,11,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,17,12,36,17,0,0,241,231,128,96, + 195,0,96,194,0,48,194,0,48,194,0,49,100,0,25,100, + 0,26,100,0,26,40,0,14,56,0,14,56,0,4,16,0, + 11,12,24,13,1,0,241,224,96,192,49,128,57,0,26,0, + 12,0,14,0,27,0,51,128,33,128,96,192,241,224,12,18, + 36,11,255,250,120,240,48,96,48,64,24,64,24,64,24,128, + 12,128,12,128,13,0,7,0,7,0,2,0,6,0,4,0, + 12,0,200,0,240,0,96,0,8,12,12,10,1,0,255,195, + 134,14,28,24,56,48,112,97,195,255,8,22,22,10,1,251, + 7,12,24,24,24,24,24,16,48,32,192,32,48,16,24,24, + 24,24,24,24,12,7,2,17,17,5,1,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,22,22, + 10,1,251,224,48,24,24,24,24,24,8,12,4,3,4,12, + 8,24,24,24,24,24,24,48,224,11,4,8,13,1,4,56, + 32,124,96,199,192,131,128,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,6,0,1,3,17, + 17,8,3,251,96,96,0,0,0,64,64,64,64,224,224,224, + 224,224,224,224,64,9,16,32,12,1,254,2,0,2,0,15, + 0,51,128,101,128,196,0,196,0,200,0,200,0,200,0,208, + 0,112,128,113,0,62,0,64,0,64,0,10,17,34,12,1, + 0,15,0,25,128,49,128,48,0,48,0,48,0,48,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,64,190, + 192,231,128,11,12,24,13,1,3,192,96,238,224,127,192,49, + 128,96,192,96,192,96,192,96,192,49,128,127,192,238,224,192, + 96,14,17,34,14,0,0,248,124,112,48,48,32,24,96,24, + 64,12,192,12,128,7,128,3,0,31,224,3,0,31,224,3, + 0,3,0,3,0,3,0,15,192,2,17,17,6,2,0,192, + 192,192,192,192,192,192,0,0,0,192,192,192,192,192,192,192, + 8,20,20,12,2,253,28,38,70,96,112,56,60,78,135,131, + 195,226,116,56,28,14,6,98,100,56,6,2,2,8,1,14, + 204,204,17,17,51,19,1,0,7,240,0,28,28,0,48,6, + 0,97,227,0,71,49,0,196,25,128,140,0,128,136,0,128, + 136,0,128,136,0,128,140,0,128,196,25,128,71,113,0,97, + 195,0,48,6,0,28,28,0,7,240,0,7,9,9,8,0, + 8,120,204,12,124,204,204,118,0,254,9,10,20,13,1,1, + 8,128,25,128,51,0,102,0,204,0,204,0,102,0,51,0, + 25,128,8,128,11,7,14,15,2,1,255,224,255,224,0,96, + 0,96,0,96,0,96,0,96,6,2,2,8,0,5,252,252, + 17,17,51,19,1,0,7,240,0,28,28,0,48,6,0,103, + 227,0,66,49,0,194,17,128,130,16,128,130,48,128,131,224, + 128,130,64,128,130,32,128,194,49,128,71,25,0,96,3,0, + 48,6,0,28,28,0,7,240,0,7,2,2,8,1,14,254, + 254,7,7,7,9,1,10,56,68,130,130,130,68,56,10,11, + 22,14,2,0,12,0,12,0,12,0,255,192,255,192,12,0, + 12,0,12,0,0,0,255,192,255,192,6,10,10,7,0,7, + 56,76,140,12,8,16,48,32,68,252,6,10,10,7,0,7, + 56,76,140,8,48,8,12,140,136,112,5,4,4,8,2,13, + 24,56,112,192,11,17,34,13,1,251,225,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,113,192,126,192, + 92,224,64,0,192,0,192,0,224,0,64,0,9,21,42,11, + 1,252,31,128,57,0,121,0,121,0,249,0,249,0,249,0, + 121,0,121,0,57,0,25,0,9,0,9,0,9,0,9,0, + 9,0,9,0,9,0,9,0,9,0,9,0,2,3,3,6, + 2,5,192,192,192,6,6,6,8,1,250,16,48,60,12,204, + 120,5,10,10,7,1,7,32,96,160,32,32,32,32,32,32, + 248,7,9,9,8,0,8,56,68,198,198,198,68,56,0,254, + 9,10,20,12,2,1,136,0,204,0,102,0,51,0,25,128, + 25,128,51,0,102,0,204,0,136,0,16,17,34,18,1,0, + 32,24,96,24,160,48,32,96,32,96,32,192,32,192,33,132, + 35,12,251,28,6,20,6,36,12,100,24,68,24,255,48,4, + 48,4,15,17,34,18,1,0,32,24,96,24,160,48,32,96, + 32,96,32,192,32,192,33,156,35,38,251,70,6,6,6,4, + 12,8,24,24,24,16,48,34,48,126,17,17,51,18,0,0, + 56,12,0,76,12,0,140,24,0,8,48,0,48,48,0,8, + 96,0,12,96,0,140,194,0,137,134,0,113,142,0,3,10, + 0,3,18,0,6,50,0,12,34,0,12,127,128,24,2,0, + 24,2,0,8,17,17,11,1,251,12,12,0,0,8,8,24, + 24,56,48,112,224,195,195,193,99,62,17,22,66,17,0,0, + 12,0,0,14,0,0,7,0,0,1,128,0,0,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,17,22,66,17,0,0,0,24,0,0,56,0,0,112, + 0,0,192,0,0,0,0,0,128,0,1,192,0,1,192,0, + 1,96,0,2,96,0,2,48,0,6,48,0,4,48,0,4, + 24,0,12,24,0,15,248,0,8,12,0,24,12,0,16,12, + 0,16,6,0,48,6,0,252,31,128,17,22,66,17,0,0, + 1,128,0,3,192,0,6,96,0,4,32,0,0,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,17,21,63,17,0,0,3,32,0,7,224,0,4,192, + 0,0,0,0,0,128,0,1,192,0,1,192,0,1,96,0, + 2,96,0,2,48,0,6,48,0,4,48,0,4,24,0,12, + 24,0,15,248,0,8,12,0,24,12,0,16,12,0,16,6, + 0,48,6,0,252,31,128,17,21,63,17,0,0,6,96,0, + 6,96,0,0,0,0,0,0,0,0,128,0,1,192,0,1, + 192,0,1,96,0,2,96,0,2,48,0,6,48,0,4,48, + 0,4,24,0,12,24,0,15,248,0,8,12,0,24,12,0, + 16,12,0,16,6,0,48,6,0,252,31,128,17,23,69,17, + 0,0,1,192,0,2,32,0,2,32,0,2,32,0,1,192, + 0,0,0,0,0,128,0,1,192,0,1,192,0,1,96,0, + 2,96,0,2,48,0,6,48,0,4,48,0,4,24,0,12, + 24,0,15,248,0,8,12,0,24,12,0,16,12,0,16,6, + 0,48,6,0,252,31,128,21,17,51,22,0,0,3,255,240, + 0,240,48,1,176,16,1,48,16,3,48,0,2,48,0,6, + 48,64,4,48,64,4,63,192,12,48,64,15,240,64,8,48, + 0,24,48,0,16,48,8,48,48,8,32,48,24,248,255,248, + 14,23,46,16,1,250,7,228,28,60,56,12,96,4,96,4, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,4,56,8,30,56,7,224,1,0,3,0,3,192,0,192, + 12,192,7,128,13,22,44,15,1,0,24,0,28,0,14,0, + 3,0,0,0,255,240,48,48,48,16,48,16,48,0,48,0, + 48,64,48,64,63,192,48,64,48,64,48,0,48,0,48,8, + 48,8,48,24,255,248,13,22,44,15,1,0,0,96,0,224, + 1,192,3,0,0,0,255,240,48,48,48,16,48,16,48,0, + 48,0,48,64,48,64,63,192,48,64,48,64,48,0,48,0, + 48,8,48,8,48,24,255,248,13,22,44,15,1,0,6,0, + 15,0,25,128,16,128,0,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,64,48,64,63,192,48,64,48,64,48,0, + 48,0,48,8,48,8,48,24,255,248,13,21,42,15,1,0, + 25,128,25,128,0,0,0,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,64,48,64,63,192,48,64,48,64,48,0, + 48,0,48,8,48,8,48,24,255,248,7,22,22,8,0,0, + 192,224,112,24,0,126,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,126,7,22,22,8,1,0,6,14,28,48, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,6,22,22,8,1,0,48,120,204,132,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,6,21, + 21,8,1,0,204,204,0,0,252,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,16,17,34,17,0,0,127, + 224,24,56,24,28,24,6,24,6,24,3,24,3,255,3,255, + 3,24,3,24,3,24,3,24,6,24,6,24,28,24,56,127, + 224,16,21,42,18,1,0,3,32,7,224,4,192,0,0,240, + 31,48,4,56,4,56,4,44,4,38,4,38,4,35,4,33, + 132,33,132,32,196,32,100,32,100,32,52,32,28,32,28,248, + 12,16,22,44,18,1,0,12,0,14,0,7,0,1,128,0, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,16,22,44,18,1,0,0,48,0,112,0,224,1, + 128,0,0,7,224,28,56,56,28,96,6,96,6,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,96,6,96,6,56, + 28,28,56,7,224,16,22,44,18,1,0,1,128,3,192,6, + 96,4,32,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,16,21,42,18,1,0,3,32,7, + 224,4,192,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,16,21,42,18,1,0,6,96,6, + 96,0,0,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,10,9,18,12,1,1,192,192,97, + 128,51,0,30,0,12,0,30,0,51,0,97,128,192,192,16, + 19,38,18,1,255,0,4,7,228,28,56,56,28,96,38,96, + 70,192,67,192,131,192,131,193,3,193,3,194,3,194,3,100, + 6,104,6,56,28,28,56,39,224,32,0,16,22,44,18,1, + 0,6,0,7,0,3,128,0,192,0,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,16,22,44, + 18,1,0,0,48,0,112,0,224,1,128,0,0,252,31,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,8,24,8,28,48,7,224,16, + 22,44,18,1,0,1,128,3,192,6,96,4,32,0,0,252, + 31,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,4,48,8,24,8,28,48,7, + 224,16,21,42,18,1,0,6,96,6,96,0,0,0,0,252, + 31,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,4,48,8,24,8,28,48,7, + 224,16,22,44,18,1,0,0,48,0,112,0,224,1,128,0, + 0,252,63,48,12,56,8,24,24,28,16,12,48,6,32,6, + 96,3,64,3,192,1,128,1,128,1,128,1,128,1,128,1, + 128,7,224,13,17,34,15,1,0,252,0,48,0,48,0,48, + 0,63,192,48,112,48,48,48,24,48,24,48,24,48,48,48, + 112,63,192,48,0,48,0,48,0,252,0,10,17,34,12,1, + 0,30,0,51,0,97,128,97,128,97,128,97,128,99,0,108, + 0,103,0,99,128,97,128,97,192,96,192,96,192,108,192,108, + 128,231,0,9,17,34,11,1,0,96,0,112,0,56,0,12, + 0,0,0,62,0,103,0,99,0,3,0,15,0,59,0,99, + 0,195,0,195,0,199,0,251,0,113,128,9,17,34,11,1, + 0,3,0,7,0,14,0,24,0,0,0,62,0,103,0,99, + 0,3,0,15,0,59,0,99,0,195,0,195,0,199,0,251, + 0,113,128,9,17,34,11,1,0,12,0,30,0,51,0,33, + 0,0,0,62,0,103,0,99,0,3,0,15,0,59,0,99, + 0,195,0,195,0,199,0,251,0,113,128,9,16,32,11,1, + 0,50,0,126,0,76,0,0,0,62,0,103,0,99,0,3, + 0,15,0,59,0,99,0,195,0,195,0,199,0,251,0,113, + 128,9,16,32,11,1,0,102,0,102,0,0,0,0,0,62, + 0,103,0,99,0,3,0,15,0,59,0,99,0,195,0,195, + 0,199,0,251,0,113,128,9,18,36,11,1,0,28,0,34, + 0,34,0,34,0,28,0,0,0,62,0,103,0,99,0,3, + 0,15,0,59,0,99,0,195,0,195,0,199,0,251,0,113, + 128,14,12,24,16,1,0,60,240,103,152,99,12,3,12,15, + 252,59,0,99,0,195,0,195,0,199,132,251,248,112,240,9, + 18,36,11,1,250,31,0,99,128,65,128,192,0,192,0,192, + 0,192,0,192,0,224,0,112,128,127,0,30,0,8,0,24, + 0,30,0,6,0,102,0,60,0,9,17,34,11,1,0,96, + 0,112,0,56,0,12,0,0,0,30,0,99,0,65,128,193, + 128,255,128,192,0,192,0,192,0,224,0,112,128,127,0,30, + 0,9,17,34,11,1,0,3,0,7,0,14,0,24,0,0, + 0,30,0,99,0,65,128,193,128,255,128,192,0,192,0,192, + 0,224,0,112,128,127,0,30,0,9,17,34,11,1,0,12, + 0,30,0,51,0,33,0,0,0,30,0,99,0,65,128,193, + 128,255,128,192,0,192,0,192,0,224,0,112,128,127,0,30, + 0,9,16,32,11,1,0,51,0,51,0,0,0,0,0,30, + 0,99,0,65,128,193,128,255,128,192,0,192,0,192,0,224, + 0,112,128,127,0,30,0,6,17,17,6,255,0,192,224,112, + 24,0,56,24,24,24,24,24,24,24,24,24,24,60,5,17, + 17,6,1,0,24,56,112,192,0,96,224,96,96,96,96,96, + 96,96,96,96,240,6,17,17,6,0,0,48,120,204,132,0, + 48,112,48,48,48,48,48,48,48,48,48,120,6,16,16,6, + 0,0,204,204,0,0,112,48,48,48,48,48,48,48,48,48, + 48,120,10,17,34,12,1,0,192,0,113,128,30,0,60,0, + 198,0,31,0,115,128,97,128,192,192,192,192,192,192,192,192, + 192,192,192,192,97,128,115,128,30,0,11,16,32,13,1,0, + 25,0,63,0,38,0,0,0,103,0,239,128,113,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,241,224, + 10,17,34,12,1,0,96,0,112,0,56,0,12,0,0,0, + 30,0,115,128,97,128,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,17,34,12,1,0,3,0, + 7,0,14,0,24,0,0,0,30,0,115,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,97,128,115,128,30,0, + 10,17,34,12,1,0,12,0,30,0,51,0,33,0,0,0, + 30,0,115,128,97,128,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,16,32,12,1,0,25,0, + 63,0,38,0,0,0,30,0,115,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,115,128,30,0,10,16, + 32,12,1,0,51,0,51,0,0,0,0,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,97,128, + 115,128,30,0,10,10,20,12,1,1,12,0,12,0,0,0, + 0,0,255,192,255,192,0,0,0,0,12,0,12,0,10,14, + 28,12,1,255,0,192,30,192,115,128,99,128,198,192,196,192, + 204,192,200,192,216,192,208,192,113,128,115,128,222,0,192,0, + 11,17,34,13,1,0,96,0,112,0,56,0,12,0,0,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,17,34,13,1,0,1,128, + 3,128,7,0,12,0,0,0,225,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,192,62,192,28,224, + 11,17,34,13,1,0,12,0,30,0,51,0,33,0,0,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,16,32,13,1,0,51,0, + 51,0,0,0,0,0,225,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,113,192,62,192,28,224,11,22, + 44,11,0,251,1,128,3,128,7,0,12,0,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,12,0,8,0,24,0,240,0,224,0, + 10,22,44,12,1,251,96,0,224,0,96,0,96,0,96,0, + 110,0,115,128,97,128,96,192,96,192,96,192,96,192,96,192, + 96,192,97,128,115,128,110,0,96,0,96,0,96,0,96,0, + 240,0,11,21,42,11,0,251,51,0,51,0,0,0,0,0, + 241,224,96,192,96,128,48,128,48,128,49,0,25,0,25,0, + 26,0,14,0,14,0,4,0,12,0,8,0,24,0,240,0, + 224,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--25-180-100-100-P-125-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=23 x= 3 y=13 dx=23 dy= 0 ascent=19 len=60 + Font Bounding box w=29 h=37 x=-4 y=-9 + Calculated Min Values x=-2 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =17 descent=-6 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR18r[3208] U8G_SECTION(".progmem.u8g_font_timR18r") = { + 0,29,37,252,247,17,4,9,8,241,32,127,250,19,250,17, + 250,0,0,0,6,0,1,3,17,17,8,3,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,6,5, + 5,10,1,12,204,204,204,204,136,11,17,34,13,1,0,8, + 128,8,128,8,128,8,128,8,128,127,224,127,224,17,0,17, + 0,17,0,255,192,255,192,34,0,34,0,34,0,34,0,34, + 0,11,21,42,12,0,254,4,0,4,0,63,0,101,192,196, + 192,196,64,196,64,228,0,124,0,30,0,7,128,5,192,4, + 224,4,96,132,96,132,96,196,192,229,192,63,0,4,0,4, + 0,17,16,48,19,1,0,30,12,0,51,252,0,97,24,0, + 193,16,0,193,48,0,194,96,0,228,64,0,120,192,0,1, + 143,0,1,25,128,3,48,128,6,96,128,4,96,128,12,97, + 0,24,114,0,16,60,0,17,17,51,19,1,0,7,192,0, + 8,96,0,24,32,0,24,32,0,24,96,0,12,192,0,15, + 158,0,7,12,0,15,8,0,51,136,0,97,144,0,192,208, + 0,192,224,0,192,96,0,224,240,128,127,191,0,62,14,0, + 2,5,5,6,2,12,192,192,192,192,128,6,22,22,8,1, + 251,4,8,16,48,32,96,96,192,192,192,192,192,192,192,192, + 96,96,32,48,16,8,4,6,22,22,8,1,251,128,64,32, + 48,16,24,24,12,12,12,12,12,12,12,12,24,24,16,48, + 32,64,128,9,9,18,12,2,8,28,0,28,0,201,128,235, + 128,28,0,235,128,201,128,28,0,28,0,12,12,24,12,0, + 0,6,0,6,0,6,0,6,0,6,0,255,240,255,240,6, + 0,6,0,6,0,6,0,6,0,3,5,5,7,2,253,192, + 224,32,96,192,6,2,2,8,0,5,252,252,2,2,2,6, + 2,0,192,192,9,21,42,7,254,252,1,128,1,128,1,0, + 3,0,3,0,2,0,6,0,6,0,4,0,12,0,12,0, + 8,0,24,0,24,0,16,0,48,0,48,0,96,0,96,0, + 64,0,192,0,10,17,34,12,1,0,30,0,51,0,97,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,225,192,97,128,97,128,51,0,30,0,8,17,17,12, + 2,0,8,24,120,24,24,24,24,24,24,24,24,24,24,24, + 24,24,255,10,17,34,12,1,0,28,0,127,0,67,128,129, + 128,129,128,1,128,1,128,3,0,3,0,6,0,4,0,12, + 0,24,0,48,0,96,64,255,192,255,128,9,17,34,12,1, + 0,28,0,126,0,71,0,131,0,131,0,6,0,12,0,30, + 0,7,0,3,128,1,128,1,128,1,128,1,0,195,0,230, + 0,120,0,10,17,34,12,1,0,3,0,7,0,7,0,11, + 0,27,0,19,0,51,0,35,0,99,0,67,0,195,0,255, + 192,255,192,3,0,3,0,3,0,3,0,10,17,34,12,1, + 0,31,192,31,128,32,0,32,0,96,0,120,0,126,0,15, + 128,3,128,1,192,0,192,0,192,0,192,0,192,193,128,227, + 128,126,0,10,17,34,12,1,0,3,192,14,0,24,0,48, + 0,112,0,96,0,238,0,243,128,193,128,192,192,192,192,192, + 192,192,192,224,192,97,128,123,128,30,0,10,17,34,12,1, + 0,127,192,255,192,192,192,129,128,1,128,1,0,3,0,3, + 0,2,0,6,0,6,0,4,0,12,0,12,0,12,0,24, + 0,24,0,10,17,34,12,1,0,30,0,51,0,97,128,97, + 128,97,128,115,0,62,0,30,0,63,0,99,128,65,192,192, + 192,192,192,192,192,225,128,115,128,30,0,10,17,34,12,1, + 0,30,0,119,128,97,128,193,192,192,192,192,192,192,192,192, + 192,97,192,115,192,29,128,1,128,3,128,3,0,6,0,28, + 0,240,0,2,11,11,6,2,0,192,192,0,0,0,0,0, + 0,0,192,192,3,14,14,7,2,253,192,192,0,0,0,0, + 0,0,0,192,224,32,96,192,11,11,22,14,1,0,0,96, + 1,192,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,192,0,96,9,5,10,13,2,3,255,128,255,128,0,0, + 255,128,255,128,11,11,22,13,1,0,192,0,112,0,28,0, + 7,0,1,192,0,96,1,192,7,0,28,0,112,0,192,0, + 8,17,17,11,2,0,124,198,131,195,195,7,14,12,28,24, + 24,16,16,0,0,48,48,18,20,60,22,2,253,3,248,0, + 15,14,0,28,3,0,56,1,128,112,0,128,96,236,192,225, + 252,64,195,140,64,195,12,64,198,12,64,198,24,64,198,24, + 192,198,24,128,198,57,128,99,123,0,97,222,0,48,0,0, + 24,0,0,14,12,0,3,240,0,17,17,51,17,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,14,17,34,16,1,0,255,192,48,112,48,48,48,24, + 48,24,48,24,48,48,48,64,63,224,48,56,48,24,48,12, + 48,12,48,12,48,24,48,120,255,224,14,17,34,16,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,4,56,8,30,56, + 7,224,15,17,34,17,1,0,255,192,48,112,48,56,48,12, + 48,12,48,6,48,6,48,6,48,6,48,6,48,6,48,6, + 48,12,48,12,48,56,48,112,255,192,13,17,34,15,1,0, + 255,240,48,48,48,16,48,16,48,0,48,0,48,64,48,64, + 63,192,48,64,48,64,48,0,48,0,48,8,48,8,48,24, + 255,248,12,17,34,14,1,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,32,48,32,63,224,48,32,48,32,48,0, + 48,0,48,0,48,0,48,0,252,0,16,17,34,18,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,63,192,12,192,12,96,12,96,12,56,28,30,56, + 7,224,17,17,51,19,1,0,252,31,128,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 63,254,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,48,6,0,252,31,128,6,17,17,8,1, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,9,17,34,11,1,0,31,128,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,198,0,204,0,120,0,16,17,34,17,1,0, + 252,126,48,24,48,48,48,96,48,192,49,128,51,0,62,0, + 63,0,51,128,49,192,48,224,48,112,48,56,48,28,48,14, + 252,31,13,17,34,14,1,0,252,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,21,17,51,22,1,0, + 240,0,248,48,0,224,56,1,96,56,1,96,44,2,96,44, + 2,96,38,2,96,38,4,96,35,4,96,35,8,96,33,136, + 96,33,136,96,32,208,96,32,208,96,32,96,96,32,96,96, + 248,97,248,16,17,34,18,1,0,240,31,48,4,56,4,56, + 4,44,4,38,4,38,4,35,4,33,132,33,132,32,196,32, + 100,32,100,32,52,32,28,32,28,248,12,16,17,34,18,1, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,13,17,34,15,1,0,255,192,48,112,48,48,48, + 24,48,24,48,24,48,48,48,112,63,192,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,252,0,16,22,44,18,1, + 251,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,1,192,0,224,0,112,0,56,0,15,15,17,34, + 16,1,0,255,192,48,112,48,48,48,24,48,24,48,24,48, + 48,48,112,63,192,51,128,49,128,48,192,48,96,48,112,48, + 56,48,28,252,30,11,17,34,13,1,0,30,64,99,192,192, + 192,192,64,192,64,224,0,120,0,30,0,15,128,3,192,0, + 224,0,96,128,96,128,96,192,192,241,128,158,0,14,17,34, + 16,1,0,255,252,195,12,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,15,192,16,17,34,18,1,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,17,17,51, + 17,0,0,252,31,128,48,6,0,48,4,0,24,12,0,24, + 8,0,24,8,0,12,24,0,12,16,0,6,48,0,6,32, + 0,6,32,0,3,96,0,3,64,0,3,192,0,1,128,0, + 1,128,0,1,128,0,23,17,51,23,0,0,252,126,126,48, + 24,24,48,24,16,24,24,16,24,24,48,24,44,32,12,44, + 32,12,44,96,6,76,96,6,76,64,6,70,64,3,70,192, + 3,70,128,3,135,128,1,131,128,1,131,0,1,131,0,18, + 17,51,18,0,0,126,15,128,28,6,0,14,12,0,6,8, + 0,3,16,0,1,160,0,1,192,0,0,192,0,0,224,0, + 1,112,0,2,56,0,6,24,0,4,12,0,8,14,0,24, + 7,0,48,3,128,252,15,192,16,17,34,18,1,0,252,63, + 48,12,56,8,24,24,28,16,12,48,6,32,6,96,3,64, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 13,17,34,15,1,0,255,240,192,112,128,224,128,192,1,192, + 3,128,3,0,7,0,6,0,14,0,28,0,24,0,56,0, + 48,8,112,8,224,24,255,248,5,21,21,8,2,252,248,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,248,7,17,17,7,0,0,192,192,64,96,96,32,48, + 48,16,24,24,8,12,12,4,6,6,5,21,21,8,1,252, + 248,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,248,9,9,18,11,1,8,8,0,28,0,20, + 0,54,0,34,0,99,0,65,0,193,128,128,128,12,2,4, + 12,0,251,255,240,255,240,5,4,4,8,1,13,192,224,112, + 24,9,12,24,11,1,0,62,0,103,0,99,0,3,0,15, + 0,59,0,99,0,195,0,195,0,199,0,251,0,113,128,11, + 17,34,12,0,0,48,0,240,0,48,0,48,0,48,0,55, + 0,57,192,48,192,48,96,48,96,48,96,48,96,48,96,48, + 96,48,192,57,192,47,0,9,12,24,11,1,0,31,0,99, + 128,65,128,192,0,192,0,192,0,192,0,192,0,224,0,112, + 128,127,0,30,0,10,17,34,12,1,0,1,128,7,128,1, + 128,1,128,1,128,29,128,115,128,97,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,128,127,128,25,192,9,12,24, + 11,1,0,30,0,99,0,65,128,193,128,255,128,192,0,192, + 0,192,0,224,0,112,128,127,0,30,0,7,17,17,7,0, + 0,14,22,48,48,48,254,48,48,48,48,48,48,48,48,48, + 48,120,11,18,36,12,1,250,30,192,35,192,97,0,97,128, + 97,128,97,128,97,128,51,0,60,0,64,0,96,0,127,128, + 63,192,64,224,192,96,192,96,225,192,127,0,12,17,34,13, + 0,0,48,0,240,0,48,0,48,0,48,0,51,128,55,192, + 56,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,120,240,4,17,17,6,1,0,96,96,0,0,0,96, + 224,96,96,96,96,96,96,96,96,96,240,6,23,23,6,254, + 250,12,12,0,0,0,12,28,12,12,12,12,12,12,12,12, + 12,12,12,12,12,204,200,112,12,17,34,12,0,0,48,0, + 240,0,48,0,48,0,48,0,51,224,49,128,51,0,50,0, + 52,0,60,0,54,0,55,0,51,128,49,192,48,224,121,240, + 5,17,17,6,0,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,120,18,12,36,20,1,0,103,14,0, + 239,159,0,113,227,128,96,193,128,96,193,128,96,193,128,96, + 193,128,96,193,128,96,193,128,96,193,128,96,193,128,241,227, + 192,11,12,24,13,1,0,103,0,239,128,113,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,241,224,10, + 12,24,12,1,0,30,0,115,128,97,128,192,192,192,192,192, + 192,192,192,192,192,192,192,97,128,115,128,30,0,10,18,36, + 12,1,250,110,0,243,128,97,128,96,192,96,192,96,192,96, + 192,96,192,96,192,97,128,115,128,110,0,96,0,96,0,96, + 0,96,0,96,0,240,0,10,18,36,12,1,250,29,128,115, + 128,97,128,193,128,193,128,193,128,193,128,193,128,193,128,97, + 128,115,128,29,128,1,128,1,128,1,128,1,128,1,128,3, + 192,6,12,12,8,1,0,108,236,112,96,96,96,96,96,96, + 96,96,240,8,12,12,10,1,0,62,70,194,224,112,124,30, + 7,3,131,198,248,7,15,15,7,0,0,16,48,112,254,48, + 48,48,48,48,48,48,48,48,50,28,11,12,24,13,1,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,12,24,11,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,17,12,36,17,0,0,241,231,128,96, + 195,0,96,194,0,48,194,0,48,194,0,49,100,0,25,100, + 0,26,100,0,26,40,0,14,56,0,14,56,0,4,16,0, + 11,12,24,13,1,0,241,224,96,192,49,128,57,0,26,0, + 12,0,14,0,27,0,51,128,33,128,96,192,241,224,12,18, + 36,11,255,250,120,240,48,96,48,64,24,64,24,64,24,128, + 12,128,12,128,13,0,7,0,7,0,2,0,6,0,4,0, + 12,0,200,0,240,0,96,0,8,12,12,10,1,0,255,195, + 134,14,28,24,56,48,112,97,195,255,8,22,22,10,1,251, + 7,12,24,24,24,24,24,16,48,32,192,32,48,16,24,24, + 24,24,24,24,12,7,2,17,17,5,1,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,22,22, + 10,1,251,224,48,24,24,24,24,24,8,12,4,3,4,12, + 8,24,24,24,24,24,24,48,224,11,4,8,13,1,4,56, + 32,124,96,199,192,131,128,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=31 h=30 x= 4 y=18 dx=32 dy= 0 ascent=30 len=112 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =30 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24[10419] U8G_SECTION(".progmem.u8g_font_timR24") = { + 0,38,48,251,245,23,5,140,13,213,32,255,249,30,249,23, + 249,0,0,0,8,0,1,4,23,23,11,3,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,96,0,0, + 96,240,240,96,9,7,14,14,2,16,227,128,227,128,227,128, + 227,128,65,0,65,0,65,0,16,23,46,17,0,0,6,24, + 6,24,6,24,6,24,6,24,6,24,6,24,6,24,127,255, + 127,255,12,48,12,48,12,48,12,48,255,254,255,254,24,96, + 24,96,24,96,24,96,24,96,24,96,24,96,13,28,56,16, + 2,253,2,0,2,0,15,192,58,112,50,56,98,24,98,8, + 98,8,114,0,122,0,62,0,63,0,31,128,7,192,3,224, + 2,240,2,112,2,56,2,56,130,24,130,24,194,56,226,48, + 114,96,31,192,2,0,2,0,2,0,23,23,69,27,2,0, + 15,0,64,29,131,192,56,252,128,112,65,128,112,67,0,224, + 66,0,224,70,0,224,196,0,192,140,0,193,136,0,193,24, + 120,102,16,236,60,49,198,0,99,130,0,67,130,0,199,2, + 0,135,2,1,135,6,1,6,4,3,6,12,2,6,8,6, + 3,48,4,1,224,23,23,69,26,2,0,0,248,0,1,140, + 0,3,14,0,3,6,0,7,6,0,7,6,0,7,12,0, + 7,140,0,3,152,0,3,241,252,3,192,112,7,192,96,29, + 224,64,56,240,192,112,112,128,96,121,128,224,63,0,224,30, + 0,224,15,0,240,31,130,120,51,252,127,225,248,31,128,240, + 3,8,8,6,1,15,224,224,224,224,64,64,64,64,8,28, + 28,11,2,251,3,6,12,24,56,48,112,112,96,224,224,224, + 224,224,224,224,224,224,224,96,112,112,48,56,24,12,6,3, + 8,28,28,11,1,251,192,96,48,24,28,12,14,14,6,7, + 7,7,7,7,7,7,7,7,7,6,14,14,12,28,24,48, + 96,192,12,13,26,17,2,10,6,0,15,0,6,0,198,48, + 246,240,118,224,15,0,118,224,246,240,198,48,6,0,15,0, + 6,0,16,16,32,19,1,1,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,255,255,255,255,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,4,7,7,8,2,253,96,240, + 240,112,16,32,64,8,2,2,11,1,7,255,255,4,4,4, + 8,2,0,96,240,240,96,10,26,52,9,0,253,0,192,0, + 192,1,128,1,128,3,128,3,0,3,0,3,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,24, + 0,48,0,48,0,48,0,112,0,96,0,96,0,192,0,192, + 0,14,23,46,16,1,0,7,128,28,224,56,112,48,48,112, + 56,112,56,96,24,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,24,112,56,112,56,48,48,56, + 112,28,224,7,128,9,23,46,16,4,0,12,0,28,0,124, + 0,220,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,128,15,23,46,16,0,0,7, + 224,15,240,28,248,48,60,32,60,96,28,64,28,0,28,0, + 28,0,24,0,56,0,48,0,96,0,96,0,192,1,128,3, + 0,6,0,12,2,24,6,63,252,127,248,255,248,12,23,46, + 16,2,0,15,128,63,192,97,224,192,224,128,224,0,224,0, + 192,0,192,1,128,3,0,7,192,31,224,1,240,0,112,0, + 112,0,48,0,48,0,48,0,112,0,96,224,192,243,128,127, + 0,14,23,46,16,1,0,0,96,0,224,0,224,1,224,1, + 96,3,96,6,96,4,96,12,96,24,96,16,96,48,96,96, + 96,64,96,255,252,255,252,255,252,0,96,0,96,0,96,0, + 96,0,96,0,96,13,23,46,16,1,0,15,248,31,240,31, + 224,16,0,48,0,32,0,126,0,127,128,127,192,7,224,1, + 224,0,240,0,112,0,112,0,48,0,48,0,48,0,48,0, + 96,0,96,224,192,243,128,126,0,14,23,46,16,1,0,0, + 120,1,192,3,128,15,0,30,0,28,0,56,0,120,0,112, + 0,115,192,247,240,248,120,224,56,224,60,224,28,224,28,224, + 28,224,28,112,28,112,24,56,56,28,96,7,192,14,23,46, + 16,1,0,63,252,127,252,96,24,192,24,128,56,0,48,0, + 48,0,48,0,96,0,96,0,96,0,224,0,192,0,192,1, + 192,1,128,1,128,1,128,3,0,3,0,3,0,7,0,6, + 0,13,23,46,16,2,0,31,128,56,224,112,112,224,48,224, + 48,224,48,224,112,240,96,124,192,63,0,31,128,15,192,27, + 224,113,240,96,240,224,120,192,120,192,56,192,56,224,56,96, + 112,112,224,31,192,14,23,46,16,1,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,240, + 28,112,28,120,60,62,252,15,184,0,56,0,112,0,112,0, + 224,1,192,3,128,15,0,120,0,4,15,15,9,2,0,96, + 240,240,96,0,0,0,0,0,0,0,96,240,240,96,4,18, + 18,9,2,253,96,240,240,96,0,0,0,0,0,0,0,96, + 240,240,112,16,32,64,16,18,36,19,1,0,0,1,0,7, + 0,31,0,124,1,240,7,192,31,0,124,0,240,0,240,0, + 124,0,31,0,7,192,1,240,0,124,0,31,0,7,0,1, + 16,9,18,19,1,4,255,255,255,255,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,16,18,36,19,2,0,128,0, + 224,0,248,0,62,0,15,128,3,224,0,248,0,62,0,15, + 0,15,0,62,0,248,3,224,15,128,62,0,248,0,224,0, + 128,0,11,23,46,14,2,0,31,0,115,128,193,192,193,192, + 224,224,224,224,96,224,1,192,1,192,1,128,3,128,3,0, + 6,0,4,0,12,0,8,0,8,0,0,0,0,0,12,0, + 30,0,30,0,12,0,27,28,112,31,2,251,0,31,240,0, + 0,248,60,0,1,224,6,0,7,128,3,0,14,0,1,128, + 28,0,0,192,28,0,0,192,56,7,140,96,112,31,92,96, + 112,28,124,32,112,56,56,32,224,112,56,32,224,112,48,32, + 224,112,112,32,224,224,112,96,224,224,112,64,224,224,224,192, + 224,224,224,128,112,225,225,128,112,119,115,0,112,60,62,0, + 56,0,0,0,24,0,0,0,28,0,0,0,14,0,0,0, + 7,128,6,0,1,240,60,0,0,127,240,0,22,23,69,24, + 1,0,0,48,0,0,48,0,0,112,0,0,120,0,0,120, + 0,0,252,0,0,220,0,0,156,0,1,142,0,1,14,0, + 3,15,0,3,7,0,2,7,0,6,7,128,6,3,128,15, + 255,192,12,3,192,24,1,192,24,1,224,48,1,224,48,0, + 240,112,0,240,252,3,252,20,23,69,22,1,0,255,254,0, + 62,15,128,28,3,192,28,1,192,28,1,224,28,0,224,28, + 0,224,28,1,224,28,1,192,28,3,192,28,15,128,31,254, + 0,28,7,128,28,1,224,28,0,224,28,0,240,28,0,112, + 28,0,112,28,0,240,28,0,224,28,1,224,62,7,192,255, + 255,0,20,23,69,22,1,0,1,255,16,7,131,240,14,0, + 240,28,0,112,56,0,48,56,0,48,112,0,16,112,0,16, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,112,0,0,112,0,0,56,0,0,56,0, + 16,28,0,48,14,0,96,7,131,192,1,255,0,22,23,69, + 24,1,0,255,254,0,62,7,128,28,1,192,28,0,224,28, + 0,112,28,0,112,28,0,56,28,0,56,28,0,60,28,0, + 60,28,0,60,28,0,60,28,0,60,28,0,60,28,0,60, + 28,0,56,28,0,56,28,0,112,28,0,112,28,0,224,28, + 1,192,62,7,128,255,254,0,19,23,69,20,1,0,255,255, + 192,62,3,192,28,0,192,28,0,64,28,0,64,28,0,0, + 28,0,0,28,0,0,28,1,0,28,1,0,28,3,0,31, + 255,0,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,32,28,0,32,28,0,96,28,0,192,62,3,192, + 255,255,192,17,23,69,18,1,0,255,255,128,62,7,128,28, + 1,128,28,0,128,28,0,128,28,0,0,28,0,0,28,0, + 0,28,2,0,28,2,0,28,6,0,31,254,0,28,6,0, + 28,2,0,28,2,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,62,0,0,255,128,0,22,23, + 69,24,1,0,1,255,48,7,135,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,0,240,0,0,240, + 0,0,240,0,0,240,3,252,240,0,248,240,0,112,240,0, + 112,112,0,112,112,0,112,56,0,112,56,0,112,28,0,112, + 14,0,112,7,129,224,1,255,128,22,23,69,24,1,0,255, + 135,252,62,1,240,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 31,255,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,62,1, + 240,255,135,252,9,23,46,11,1,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,12,23,46,13,1,0,31,240, + 7,192,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,195,128,227,0,231,0,124,0,23,23,69,24, + 1,0,255,199,248,62,1,224,28,1,128,28,3,0,28,6, + 0,28,12,0,28,24,0,28,48,0,28,96,0,28,192,0, + 31,192,0,31,224,0,31,240,0,30,120,0,28,60,0,28, + 30,0,28,15,0,28,7,128,28,3,192,28,1,224,28,0, + 240,62,0,248,255,199,254,19,23,69,20,1,0,255,128,0, + 62,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,32,28,0,32,28,0,96,28,0,192,62,3,192,255, + 255,192,28,23,92,30,1,0,252,0,7,240,62,0,7,192, + 30,0,15,128,31,0,15,128,31,0,11,128,23,0,27,128, + 23,128,27,128,19,128,51,128,19,192,51,128,19,192,35,128, + 17,224,99,128,17,224,99,128,16,224,195,128,16,240,195,128, + 16,112,131,128,16,121,131,128,16,121,3,128,16,61,3,128, + 16,63,3,128,16,30,3,128,16,30,3,128,56,12,7,192, + 254,12,31,240,22,23,69,24,1,0,248,1,252,60,0,112, + 30,0,32,31,0,32,31,0,32,23,128,32,19,192,32,19, + 192,32,17,224,32,16,240,32,16,248,32,16,120,32,16,60, + 32,16,30,32,16,31,32,16,15,32,16,7,160,16,3,224, + 16,1,224,16,1,224,16,0,224,56,0,96,254,0,32,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,56,0,112,56,0,112,112,0,56,112,0,56,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,112,0,56,112,0,56,56,0,112,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,248,0,60,62,0,28,15,0,28,7,0,28,7,128,28, + 3,128,28,3,128,28,3,128,28,7,128,28,7,0,28,15, + 0,28,62,0,31,240,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,22,29,87,24,1,250,1,254,0,7,135, + 128,14,1,192,28,0,224,56,0,112,56,0,112,112,0,56, + 112,0,56,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,112,0,56,112,0,56,56,0, + 112,56,0,112,28,0,224,14,1,192,7,135,128,1,254,0, + 0,124,0,0,62,0,0,31,0,0,15,128,0,3,224,0, + 0,124,21,23,69,22,1,0,255,248,0,60,62,0,28,15, + 0,28,7,128,28,7,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,0,28,30,0,31,248,0,28,240,0,28, + 120,0,28,60,0,28,60,0,28,30,0,28,15,0,28,15, + 128,28,7,128,28,3,192,62,1,224,255,129,248,15,23,46, + 18,1,0,7,228,28,60,56,28,112,12,112,4,112,6,120, + 0,124,0,62,0,31,128,15,224,7,240,1,248,0,124,0, + 62,0,30,128,14,128,14,192,14,224,12,112,28,124,120,103, + 240,19,23,69,20,1,0,255,255,224,240,225,224,192,224,96, + 192,224,96,128,224,32,128,224,32,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,1,240,0,7,252,0,22,23,69,24, + 1,0,255,129,252,62,0,112,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,30,0,96,14,0,64,15,0, + 192,7,195,128,1,254,0,22,23,69,23,1,0,255,1,252, + 124,0,112,60,0,96,30,0,64,30,0,192,14,0,192,15, + 0,128,15,1,128,7,1,128,7,129,0,3,131,0,3,195, + 0,3,194,0,1,198,0,1,230,0,0,228,0,0,236,0, + 0,124,0,0,120,0,0,120,0,0,56,0,0,48,0,0, + 16,0,31,23,92,32,1,0,255,63,224,254,124,15,128,120, + 60,7,0,48,28,7,128,48,30,7,128,96,30,3,128,96, + 14,3,192,96,15,3,192,192,7,3,224,192,7,135,224,192, + 7,134,225,128,3,132,241,128,3,204,241,128,3,204,115,0, + 1,216,123,0,1,216,59,0,1,248,62,0,0,240,62,0, + 0,240,28,0,0,224,28,0,0,96,28,0,0,96,8,0, + 0,64,8,0,22,23,69,24,1,0,255,195,252,63,0,240, + 31,0,224,15,0,192,7,129,128,7,131,0,3,198,0,1, + 230,0,1,236,0,0,248,0,0,120,0,0,120,0,0,124, + 0,0,222,0,1,158,0,1,143,0,3,15,128,6,7,128, + 14,3,192,12,3,224,24,1,224,56,1,240,254,7,252,22, + 23,69,24,1,0,255,192,252,63,0,56,30,0,48,15,0, + 96,15,128,192,7,128,128,3,193,128,3,195,0,1,227,0, + 0,246,0,0,252,0,0,124,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,124,0,1,255,0,19,23,69,20,1,0, + 63,255,224,56,3,192,96,7,128,96,7,128,64,15,0,64, + 30,0,0,30,0,0,60,0,0,120,0,0,120,0,0,240, + 0,1,224,0,1,224,0,3,192,0,3,192,0,7,128,0, + 15,0,0,15,0,32,30,0,32,60,0,96,60,0,96,120, + 1,192,255,255,192,7,28,28,11,3,251,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,240,254,13,23,46,9,254,0,192,0,224, + 0,96,0,112,0,48,0,56,0,24,0,28,0,12,0,14, + 0,6,0,7,0,3,0,3,128,1,128,1,192,0,192,0, + 224,0,96,0,112,0,48,0,56,0,24,7,28,28,11,1, + 251,254,30,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,30,254,13,13,26, + 16,1,10,7,0,7,0,15,128,13,128,24,192,24,192,48, + 96,48,96,112,112,96,48,224,56,192,24,192,24,17,2,6, + 17,0,251,255,255,128,255,255,128,7,6,6,11,1,17,192, + 224,112,24,12,6,13,15,30,15,1,0,31,128,49,192,112, + 224,112,224,96,224,3,224,14,224,24,224,48,224,96,224,224, + 224,225,224,242,232,126,248,60,112,15,23,46,16,0,0,24, + 0,248,0,56,0,56,0,56,0,56,0,56,0,56,0,57, + 240,59,248,60,124,56,28,56,30,56,14,56,14,56,14,56, + 14,56,14,56,12,56,28,56,24,60,112,15,224,12,15,30, + 15,1,0,15,128,56,192,112,224,96,224,224,96,192,0,192, + 0,192,0,192,0,224,0,224,16,112,48,124,96,63,192,31, + 0,15,23,46,16,1,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,15,184,24,248,48,120,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,190,15,48,12,15,30,15,1,0,15,128,57,192,96, + 224,96,112,192,112,255,240,192,0,192,0,192,0,224,0,224, + 16,112,48,124,96,63,192,15,0,12,23,46,11,0,0,3, + 224,6,112,12,112,12,48,28,0,28,0,28,0,28,0,255, + 192,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,62,0,255,128,14,22,44, + 16,1,249,15,192,24,252,48,124,112,48,112,48,112,48,112, + 48,56,112,28,224,15,128,24,0,48,0,120,0,127,224,63, + 248,31,252,96,12,192,12,192,28,240,56,127,224,31,128,16, + 23,46,16,0,0,24,0,248,0,56,0,56,0,56,0,56, + 0,56,0,56,0,57,240,59,248,62,60,60,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,254,127,7,23,23,9,1,0,56,56,56,0,0,0,0, + 0,56,248,56,56,56,56,56,56,56,56,56,56,56,56,254, + 8,30,30,9,255,249,7,7,7,0,0,0,0,0,3,31, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 6,198,236,120,16,23,46,16,0,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,254,56,112,56,96, + 56,192,57,128,63,0,62,0,63,0,59,128,57,192,56,224, + 56,240,56,120,56,60,254,127,7,23,23,9,1,0,24,248, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,25,15,60,26,0,0,24,240,120,0,251, + 249,252,0,62,63,30,0,60,30,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,254,127,63,128,16,15,30,16,0,0,24,240,251, + 248,60,60,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,254,127,14,15,30,16,1, + 0,7,128,24,224,48,112,112,56,96,56,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,56,48,28,96,7,128,15, + 22,44,17,0,249,25,224,251,248,60,124,56,28,56,30,56, + 14,56,14,56,14,56,14,56,14,56,12,56,28,60,24,62, + 112,59,192,56,0,56,0,56,0,56,0,56,0,56,0,255, + 0,15,22,44,17,1,249,15,200,28,120,48,56,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,184,31,56,0,56,0,56,0,56,0,56,0,56,0, + 56,1,254,10,15,30,11,1,0,25,128,251,192,63,192,60, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,10,15,30,13,1,0,62,128,99, + 128,193,128,192,128,224,128,240,0,124,0,63,0,15,128,3, + 192,129,192,128,192,192,192,225,128,191,0,9,19,38,9,0, + 0,8,0,8,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,128,63,0,28,0,16,15,30,17,0,0,248,124,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,60,60,92,31,223,15,140,15,15,30,17,1, + 0,254,62,120,12,56,8,60,24,28,24,28,16,14,48,14, + 32,7,96,7,64,7,192,3,192,3,128,1,128,1,0,21, + 15,45,24,1,0,253,252,120,112,112,48,112,112,48,56,48, + 32,56,56,96,24,56,64,28,120,64,28,92,192,12,204,128, + 14,143,128,15,143,0,7,7,0,7,7,0,3,6,0,2, + 2,0,14,15,30,17,1,0,252,248,56,96,60,192,28,128, + 30,128,15,0,7,0,7,128,15,128,11,192,25,224,16,224, + 48,112,96,120,240,252,15,22,44,17,1,249,254,30,120,12, + 56,12,60,8,28,24,30,24,14,16,14,48,7,32,7,32, + 3,224,3,192,1,192,1,128,1,128,1,0,1,0,3,0, + 2,0,62,0,124,0,56,0,13,15,30,15,1,0,127,240, + 96,240,64,224,65,224,3,192,3,128,7,128,7,0,14,0, + 30,0,28,8,56,8,120,8,112,24,255,240,8,28,28,16, + 4,251,15,28,56,56,56,56,56,56,56,56,56,56,56,48, + 224,48,56,56,56,56,56,56,56,56,56,24,28,15,2,23, + 23,7,2,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,8,28,28,16,4, + 251,240,56,28,28,28,28,28,28,28,28,28,28,28,12,7, + 12,28,28,28,28,28,28,28,28,28,24,56,240,16,4,8, + 18,1,7,62,3,127,135,225,254,192,124,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,8, + 0,1,4,22,22,11,3,249,96,240,240,96,0,0,96,96, + 96,96,96,96,96,96,96,96,96,240,240,240,240,96,12,23, + 46,17,2,252,0,64,0,64,0,128,0,128,15,128,56,224, + 113,112,97,112,225,48,195,0,194,0,194,0,230,0,228,0, + 116,16,124,48,63,224,31,192,31,0,16,0,48,0,32,0, + 32,0,15,23,46,17,1,0,1,240,3,152,6,28,6,28, + 14,24,14,0,14,0,14,0,14,0,14,0,255,224,255,224, + 15,0,7,0,7,0,7,0,7,0,6,0,6,2,126,6, + 199,252,207,248,120,240,16,17,34,17,0,3,199,227,255,255, + 62,124,120,30,112,14,224,7,224,7,192,3,192,3,192,3, + 224,7,224,7,112,14,120,30,62,124,255,255,199,227,17,23, + 69,17,0,0,254,31,128,120,7,0,56,6,0,60,4,0, + 28,12,0,30,8,0,14,24,0,15,16,0,7,48,0,7, + 160,0,3,224,0,3,192,0,63,254,0,1,192,0,1,192, + 0,1,192,0,63,254,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,7,240,0,2,23,23,7,2,0,192, + 192,192,192,192,192,192,192,192,0,0,0,0,0,192,192,192, + 192,192,192,192,192,192,12,28,56,17,2,251,31,128,49,192, + 97,192,97,192,113,128,56,0,60,0,30,0,15,0,63,128, + 99,192,193,224,192,224,192,112,224,48,112,48,120,48,60,96, + 31,192,15,0,7,128,3,192,1,192,24,224,56,96,56,96, + 56,192,31,128,9,3,6,11,1,18,227,128,227,128,227,128, + 22,23,69,25,1,0,0,252,0,3,255,0,14,1,192,24, + 0,96,48,0,48,96,0,24,96,127,24,193,199,12,195,131, + 12,195,1,12,199,0,12,199,0,12,199,0,12,199,0,12, + 199,128,12,67,129,24,97,230,24,96,124,48,48,0,48,24, + 0,96,14,1,192,7,255,0,1,252,0,9,13,26,9,0, + 10,60,0,78,0,198,0,198,0,30,0,102,0,198,0,198, + 0,239,128,123,0,0,0,0,0,255,0,13,13,26,17,1, + 1,2,8,6,24,12,48,24,96,56,224,113,192,227,128,113, + 192,56,224,24,96,12,48,6,24,2,8,16,9,18,18,1, + 4,255,255,255,255,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,8,2,2,11,1,7,255,255,22,23,69,25,1, + 0,0,254,0,3,255,0,14,1,192,24,0,96,48,0,48, + 35,252,24,96,199,24,192,195,12,192,195,12,192,195,12,192, + 198,12,192,248,12,192,220,12,192,204,12,192,206,12,64,198, + 8,96,199,24,35,227,208,48,0,48,24,0,96,14,1,192, + 3,255,0,0,252,0,10,2,4,11,0,18,255,192,255,192, + 10,10,20,13,1,13,30,0,63,0,97,128,192,192,192,192, + 192,192,192,192,97,128,63,0,30,0,16,20,40,19,1,0, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,255,255, + 255,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,0,0,255,255,255,255,9,14,28,10,0,9,60,0, + 78,0,135,0,3,0,3,0,7,0,6,0,12,0,24,0, + 16,0,32,0,64,128,255,0,254,0,9,14,28,10,0,9, + 62,0,71,0,131,0,3,0,3,0,6,0,60,0,7,0, + 3,128,1,128,1,128,193,128,227,0,126,0,7,6,6,11, + 3,17,6,14,28,48,96,192,16,22,44,17,0,249,248,124, + 56,28,56,28,56,28,56,28,56,28,56,28,56,28,56,28, + 56,28,56,28,56,60,60,124,63,223,47,152,32,0,112,0, + 112,0,112,0,112,0,112,0,32,0,13,29,58,15,1,250, + 7,248,30,32,62,32,126,32,126,32,254,32,254,32,254,32, + 254,32,126,32,126,32,62,32,30,32,14,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,4,4,4,8,2,7, + 96,240,240,96,6,7,7,11,2,249,32,96,120,28,12,28, + 248,6,14,14,10,2,9,48,240,48,48,48,48,48,48,48, + 48,48,48,48,252,9,13,26,10,0,10,62,0,99,0,195, + 128,193,128,193,128,193,128,193,128,225,128,99,0,62,0,0, + 0,0,0,255,128,13,13,26,16,2,1,130,0,195,0,97, + 128,48,192,56,224,28,112,14,56,28,112,56,224,48,192,97, + 128,195,0,130,0,22,23,69,25,2,0,48,0,96,240,0, + 96,48,0,192,48,1,192,48,1,128,48,3,0,48,3,0, + 48,6,0,48,14,0,48,12,16,48,24,48,48,24,112,48, + 48,112,252,96,240,0,97,176,0,193,48,1,194,48,1,134, + 48,3,12,48,3,31,252,6,0,48,12,0,48,12,0,48, + 23,23,69,25,1,0,48,0,192,240,0,192,48,1,128,48, + 3,128,48,3,0,48,6,0,48,6,0,48,12,0,48,28, + 0,48,24,240,48,49,56,48,50,28,48,96,12,252,224,12, + 0,192,28,1,128,24,3,128,48,3,0,96,6,0,64,6, + 0,128,12,1,2,24,3,252,24,3,248,24,23,69,25,0, + 0,62,0,24,71,0,24,131,0,48,3,0,112,3,0,96, + 6,0,192,60,0,192,7,1,128,3,131,128,1,131,4,1, + 134,12,193,134,28,227,12,28,126,24,60,0,24,108,0,48, + 76,0,112,140,0,97,140,0,195,12,0,199,255,1,128,12, + 3,0,12,3,0,12,11,22,44,14,1,249,6,0,15,0, + 15,0,6,0,0,0,2,0,2,0,6,0,4,0,12,0, + 24,0,56,0,48,0,112,0,112,0,224,192,224,224,224,224, + 112,96,112,96,57,192,31,0,22,30,90,24,1,0,6,0, + 0,7,0,0,3,128,0,0,192,0,0,96,0,0,48,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,30,90,24,1,0,0,1, + 128,0,3,128,0,7,0,0,12,0,0,24,0,0,48,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,30,90,24,1,0,0,48, + 0,0,120,0,0,252,0,1,206,0,3,3,0,2,1,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,28,84,24,1,0,0,224, + 128,1,249,128,3,63,0,2,14,0,0,0,0,0,48,0, + 0,48,0,0,112,0,0,120,0,0,120,0,0,252,0,0, + 220,0,0,156,0,1,142,0,1,14,0,3,15,0,3,7, + 0,2,7,0,6,7,128,6,3,128,15,255,192,12,3,192, + 24,1,192,24,1,224,48,1,224,48,0,240,112,0,240,252, + 3,252,22,28,84,24,1,0,1,199,0,1,199,0,1,199, + 0,0,0,0,0,0,0,0,48,0,0,48,0,0,112,0, + 0,120,0,0,120,0,0,252,0,0,220,0,0,156,0,1, + 142,0,1,14,0,3,15,0,3,7,0,2,7,0,6,7, + 128,6,3,128,15,255,192,12,3,192,24,1,192,24,1,224, + 48,1,224,48,0,240,112,0,240,252,3,252,22,30,90,24, + 1,0,0,112,0,0,248,0,1,140,0,1,4,0,1,140, + 0,0,248,0,0,112,0,0,0,0,0,48,0,0,48,0, + 0,120,0,0,120,0,0,252,0,0,220,0,0,156,0,1, + 142,0,1,14,0,3,15,0,3,7,0,2,7,0,6,7, + 128,6,3,128,15,255,192,12,3,192,24,1,192,24,1,224, + 48,1,224,48,0,240,112,0,240,252,3,252,28,23,92,30, + 1,0,0,255,255,224,0,31,129,224,0,31,0,96,0,55, + 0,32,0,55,0,32,0,103,0,0,0,103,0,0,0,71, + 0,128,0,199,0,128,0,199,1,128,1,135,3,128,1,135, + 255,128,3,7,3,128,3,7,1,128,7,255,0,128,6,7, + 0,128,12,7,0,0,12,7,0,16,24,7,0,16,24,7, + 0,48,48,7,0,96,48,15,129,224,254,63,255,224,20,30, + 90,22,1,249,1,255,16,7,131,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,16,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,56,0,0,56,0,16,28,0,48, + 14,0,96,7,131,192,1,255,0,0,64,0,0,192,0,0, + 240,0,0,56,0,0,24,0,0,56,0,1,240,0,19,30, + 90,20,1,0,3,0,0,3,128,0,1,192,0,0,96,0, + 0,48,0,0,24,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,30, + 90,20,1,0,0,6,0,0,14,0,0,28,0,0,48,0, + 0,96,0,0,192,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,30, + 90,20,1,0,0,48,0,0,120,0,0,252,0,1,206,0, + 3,3,0,2,1,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,28, + 84,20,1,0,3,142,0,3,142,0,3,142,0,0,0,0, + 0,0,0,255,255,192,62,3,192,28,0,192,28,0,64,28, + 0,64,28,0,0,28,0,0,28,0,0,28,1,0,28,1, + 0,28,3,0,31,255,0,28,3,0,28,1,0,28,1,0, + 28,0,0,28,0,0,28,0,32,28,0,32,28,0,96,28, + 0,192,62,3,192,255,255,192,9,30,60,11,1,0,96,0, + 112,0,56,0,12,0,6,0,3,0,0,0,255,128,62,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,62,0,255,128,9,30,60,11,1,0, + 1,128,3,128,7,0,12,0,24,0,48,0,0,0,255,128, + 62,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,10,30,60,11, + 1,0,12,0,30,0,63,0,115,128,192,192,128,64,0,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,9,28, + 56,11,1,0,227,128,227,128,227,128,0,0,0,0,255,128, + 62,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,22,23,69,24, + 1,0,255,254,0,62,7,128,28,1,192,28,0,224,28,0, + 112,28,0,112,28,0,56,28,0,56,28,0,60,28,0,60, + 28,0,60,255,192,60,255,192,60,28,0,60,28,0,60,28, + 0,56,28,0,56,28,0,112,28,0,112,28,0,224,28,1, + 192,62,7,128,255,254,0,22,29,87,24,1,0,0,224,128, + 1,249,128,3,63,0,2,14,0,0,0,0,0,0,0,248, + 1,252,60,0,112,30,0,32,31,0,32,31,0,32,23,128, + 32,19,192,32,19,192,32,17,224,32,16,240,32,16,248,32, + 16,120,32,16,60,32,16,30,32,16,31,32,16,15,32,16, + 7,160,16,3,224,16,1,224,16,1,224,16,0,224,56,0, + 96,254,0,32,22,30,90,24,1,0,3,0,0,3,128,0, + 1,192,0,0,96,0,0,48,0,0,24,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,30,90,24,1,0,0,1,128,0,3,128, + 0,7,0,0,12,0,0,24,0,0,48,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,30,90,24,1,0,0,48,0,0,120,0, + 0,252,0,1,206,0,3,3,0,2,1,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,28,84,24,1,0,0,224,128,1,249,128, + 3,63,0,2,14,0,0,0,0,1,254,0,7,135,128,14, + 1,192,28,0,224,56,0,112,56,0,112,112,0,56,112,0, + 56,240,0,60,240,0,60,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,112,0,56,112,0,56,56,0,112,56, + 0,112,28,0,224,14,1,192,7,135,128,1,254,0,22,28, + 84,24,1,0,1,199,0,1,199,0,1,199,0,0,0,0, + 0,0,0,1,254,0,7,135,128,14,1,192,28,0,224,56, + 0,112,56,0,112,112,0,56,112,0,56,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,60,240,0,60, + 112,0,56,112,0,56,56,0,112,56,0,112,28,0,224,14, + 1,192,7,135,128,1,254,0,16,16,32,19,1,0,64,2, + 224,7,112,14,56,28,28,56,14,112,7,224,3,192,3,192, + 7,224,14,112,28,56,56,28,112,14,224,7,64,2,22,27, + 81,24,1,254,0,0,16,0,0,48,1,254,96,7,135,192, + 14,1,192,28,1,224,56,3,112,56,2,112,112,6,56,112, + 12,56,240,8,60,240,24,60,240,48,60,240,96,60,240,64, + 60,240,192,60,240,128,60,113,128,56,115,0,56,58,0,112, + 62,0,112,28,0,224,30,1,192,55,135,128,33,254,0,96, + 0,0,64,0,0,22,30,90,24,1,0,0,192,0,0,224, + 0,0,112,0,0,24,0,0,12,0,0,6,0,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,30,90,24,1,0,0,1,128,0,3, + 128,0,7,0,0,12,0,0,24,0,0,48,0,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,30,90,24,1,0,0,24,0,0,60, + 0,0,126,0,0,231,0,1,129,128,1,0,128,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,28,84,24,1,0,1,199,0,1,199, + 0,1,199,0,0,0,0,0,0,0,255,129,252,62,0,112, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,96, + 30,0,96,14,0,64,15,0,192,7,195,128,1,254,0,22, + 30,90,24,1,0,0,0,192,0,1,192,0,3,128,0,6, + 0,0,12,0,0,24,0,0,0,0,255,192,252,63,0,56, + 30,0,48,15,0,96,15,128,192,7,128,128,3,193,128,3, + 195,0,1,227,0,0,246,0,0,252,0,0,124,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,124,0,1,255,0,18, + 23,69,19,1,0,255,128,0,62,0,0,28,0,0,28,0, + 0,28,0,0,31,252,0,28,31,0,28,7,128,28,3,128, + 28,3,192,28,1,192,28,1,192,28,1,192,28,3,192,28, + 3,128,28,7,128,28,31,0,31,252,0,28,0,0,28,0, + 0,28,0,0,62,0,0,255,128,0,15,23,46,17,1,0, + 7,192,12,112,24,56,24,56,56,56,56,56,56,56,56,56, + 56,48,56,96,57,192,56,120,56,28,56,30,56,14,56,14, + 56,14,56,14,56,14,59,12,59,156,59,152,249,240,13,23, + 46,15,1,0,24,0,28,0,14,0,3,0,1,128,0,192, + 0,0,0,0,31,128,49,192,112,224,112,224,96,224,3,224, + 14,224,24,224,48,224,96,224,224,224,225,224,242,232,126,248, + 60,112,13,23,46,15,1,0,0,192,1,192,3,128,6,0, + 12,0,24,0,0,0,0,0,31,128,49,192,112,224,112,224, + 96,224,3,224,14,224,24,224,48,224,96,224,224,224,225,224, + 242,232,126,248,60,112,13,23,46,15,1,0,6,0,15,0, + 31,128,57,192,96,96,64,32,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,21,42,15,1,0, + 28,16,62,48,99,224,65,192,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,21,42,15,1,0, + 56,224,56,224,56,224,0,0,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,23,46,15,1,0, + 7,0,15,128,24,192,16,64,24,192,15,128,7,0,0,0, + 31,128,49,192,112,224,112,224,96,224,3,224,14,224,24,224, + 48,224,96,224,224,224,225,224,242,232,126,248,60,112,19,15, + 45,22,1,0,31,159,0,49,249,192,112,224,192,112,224,224, + 96,224,224,3,255,224,14,224,0,24,224,0,48,224,0,96, + 224,0,224,224,32,225,240,96,243,120,192,126,63,128,60,31, + 0,12,22,44,15,1,249,15,128,56,192,112,224,96,224,224, + 96,192,0,192,0,192,0,192,0,224,0,224,16,112,48,124, + 96,63,192,15,0,4,0,12,0,15,0,3,128,1,128,3, + 128,31,0,12,23,46,15,1,0,48,0,56,0,28,0,6, + 0,3,0,1,128,0,0,0,0,15,128,57,192,96,224,96, + 112,192,112,255,240,192,0,192,0,192,0,224,0,224,16,112, + 48,124,96,63,192,15,0,12,23,46,15,1,0,1,128,3, + 128,7,0,12,0,24,0,48,0,0,0,0,0,15,128,57, + 192,96,224,96,112,192,112,255,240,192,0,192,0,192,0,224, + 0,224,16,112,48,124,96,63,192,15,0,12,23,46,15,1, + 0,6,0,15,0,31,128,57,192,96,96,64,32,0,0,0, + 0,15,128,57,192,96,224,96,112,192,112,255,240,192,0,192, + 0,192,0,224,0,224,16,112,48,124,96,63,192,15,0,12, + 21,42,15,1,0,56,224,56,224,56,224,0,0,0,0,0, + 0,15,128,57,192,96,224,96,112,192,112,255,240,192,0,192, + 0,192,0,224,0,224,16,112,48,124,96,63,192,15,0,7, + 23,23,9,1,0,192,224,112,24,12,6,0,0,24,248,56, + 56,56,56,56,56,56,56,56,56,56,56,254,7,23,23,9, + 1,0,6,14,28,48,96,192,0,0,24,248,56,56,56,56, + 56,56,56,56,56,56,56,56,254,10,23,46,9,0,0,12, + 0,30,0,63,0,115,128,192,192,128,64,0,0,0,0,12, + 0,124,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,127,0,9,21,42, + 9,0,0,227,128,227,128,227,128,0,0,0,0,0,0,12, + 0,124,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,127,0,14,23,46, + 17,1,0,16,0,56,0,28,112,15,240,15,0,127,128,49, + 192,0,224,7,240,24,240,48,120,112,56,96,60,224,28,224, + 28,224,28,224,28,224,28,112,24,112,56,56,48,28,96,7, + 128,16,21,42,16,0,0,14,8,31,24,49,240,32,224,0, + 0,0,0,24,240,251,248,62,60,60,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,254, + 127,14,23,46,16,1,0,24,0,28,0,14,0,3,0,1, + 128,0,192,0,0,0,0,7,128,24,224,48,112,112,56,96, + 56,224,28,224,28,224,28,224,28,224,28,112,24,112,56,56, + 48,28,96,7,128,14,23,46,16,1,0,0,192,1,192,3, + 128,6,0,12,0,24,0,0,0,0,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,112, + 24,112,56,56,48,28,96,7,128,14,23,46,16,1,0,3, + 0,7,128,15,192,28,224,48,48,32,16,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,14,21,42, + 16,1,0,28,16,62,48,99,224,65,192,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,14,21,42, + 16,1,0,56,224,56,224,56,224,0,0,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,16,17,34, + 19,1,0,1,128,3,192,3,192,1,128,0,0,0,0,0, + 0,255,255,255,255,0,0,0,0,0,0,0,0,1,128,3, + 192,3,192,1,128,14,21,42,17,1,253,0,24,0,16,0, + 48,7,160,24,224,48,240,112,184,97,184,225,28,225,28,227, + 28,226,28,230,28,116,24,116,56,60,48,28,96,31,128,48, + 0,32,0,96,0,16,23,46,17,0,0,12,0,14,0,7, + 0,1,128,0,192,0,96,0,0,0,0,248,124,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,60,60,124,31,223,15,152,16,23,46,17,0,0,0, + 96,0,224,1,192,3,0,6,0,12,0,0,0,0,0,248, + 124,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,60,60,124,31,223,15,152,16,23,46, + 17,0,0,1,128,3,192,7,224,14,112,24,24,16,8,0, + 0,0,0,248,124,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,60,60,124,31,223,15, + 152,16,21,42,17,0,0,28,112,28,112,28,112,0,0,0, + 0,0,0,248,124,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,60,60,124,31,223,15, + 152,15,30,60,17,0,249,0,24,0,56,0,112,0,192,1, + 128,3,0,0,0,0,0,254,30,120,12,56,12,60,8,28, + 24,30,24,14,16,14,48,7,32,7,32,3,224,3,192,1, + 192,1,128,1,128,1,128,1,0,3,0,2,0,62,0,124, + 0,56,0,15,30,60,17,0,249,24,0,248,0,56,0,56, + 0,56,0,56,0,56,0,56,0,57,240,59,248,62,124,60, + 28,56,30,56,14,56,14,56,14,56,14,56,14,56,12,56, + 28,60,24,62,48,59,224,56,0,56,0,56,0,56,0,56, + 0,56,0,255,0,15,28,56,17,1,249,28,112,28,112,28, + 112,0,0,0,0,0,0,254,30,120,12,56,12,60,8,28, + 24,30,24,14,16,14,48,7,32,7,32,3,224,3,192,1, + 192,1,128,1,128,1,0,1,0,3,0,2,0,62,0,124, + 0,56,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=16 h=26 x= 4 y=10 dx=19 dy= 0 ascent=23 len=52 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =23 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24n[696] U8G_SECTION(".progmem.u8g_font_timR24n") = { + 0,38,48,251,245,23,0,0,0,0,42,57,0,23,253,23, + 0,12,13,26,17,2,10,6,0,15,0,6,0,198,48,246, + 240,118,224,15,0,118,224,246,240,198,48,6,0,15,0,6, + 0,16,16,32,19,1,1,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,4,7,7,8,2,253,96,240,240, + 112,16,32,64,8,2,2,11,1,7,255,255,4,4,4,8, + 2,0,96,240,240,96,10,26,52,9,0,253,0,192,0,192, + 1,128,1,128,3,128,3,0,3,0,3,0,6,0,6,0, + 6,0,14,0,12,0,12,0,28,0,24,0,24,0,24,0, + 48,0,48,0,48,0,112,0,96,0,96,0,192,0,192,0, + 14,23,46,16,1,0,7,128,28,224,56,112,48,48,112,56, + 112,56,96,24,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,24,112,56,112,56,48,48,56,112, + 28,224,7,128,9,23,46,16,4,0,12,0,28,0,124,0, + 220,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,15,23,46,16,0,0,7,224, + 15,240,28,248,48,60,32,60,96,28,64,28,0,28,0,28, + 0,24,0,56,0,48,0,96,0,96,0,192,1,128,3,0, + 6,0,12,2,24,6,63,252,127,248,255,248,12,23,46,16, + 2,0,15,128,63,192,97,224,192,224,128,224,0,224,0,192, + 0,192,1,128,3,0,7,192,31,224,1,240,0,112,0,112, + 0,48,0,48,0,48,0,112,0,96,224,192,243,128,127,0, + 14,23,46,16,1,0,0,96,0,224,0,224,1,224,1,96, + 3,96,6,96,4,96,12,96,24,96,16,96,48,96,96,96, + 64,96,255,252,255,252,255,252,0,96,0,96,0,96,0,96, + 0,96,0,96,13,23,46,16,1,0,15,248,31,240,31,224, + 16,0,48,0,32,0,126,0,127,128,127,192,7,224,1,224, + 0,240,0,112,0,112,0,48,0,48,0,48,0,48,0,96, + 0,96,224,192,243,128,126,0,14,23,46,16,1,0,0,120, + 1,192,3,128,15,0,30,0,28,0,56,0,120,0,112,0, + 115,192,247,240,248,120,224,56,224,60,224,28,224,28,224,28, + 224,28,112,28,112,24,56,56,28,96,7,192,14,23,46,16, + 1,0,63,252,127,252,96,24,192,24,128,56,0,48,0,48, + 0,48,0,96,0,96,0,96,0,224,0,192,0,192,1,192, + 1,128,1,128,1,128,3,0,3,0,3,0,7,0,6,0, + 13,23,46,16,2,0,31,128,56,224,112,112,224,48,224,48, + 224,48,224,112,240,96,124,192,63,0,31,128,15,192,27,224, + 113,240,96,240,224,120,192,120,192,56,192,56,224,56,96,112, + 112,224,31,192,14,23,46,16,1,0,7,128,24,224,48,112, + 112,56,96,56,224,28,224,28,224,28,224,28,224,28,240,28, + 112,28,120,60,62,252,15,184,0,56,0,112,0,112,0,224, + 1,192,3,128,15,0,120,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=31 h=30 x= 4 y=17 dx=32 dy= 0 ascent=25 len=112 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24r[4764] U8G_SECTION(".progmem.u8g_font_timR24r") = { + 0,38,48,251,245,23,5,140,13,213,32,127,249,25,249,23, + 249,0,0,0,8,0,1,4,23,23,11,3,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,96,0,0, + 96,240,240,96,9,7,14,14,2,16,227,128,227,128,227,128, + 227,128,65,0,65,0,65,0,16,23,46,17,0,0,6,24, + 6,24,6,24,6,24,6,24,6,24,6,24,6,24,127,255, + 127,255,12,48,12,48,12,48,12,48,255,254,255,254,24,96, + 24,96,24,96,24,96,24,96,24,96,24,96,13,28,56,16, + 2,253,2,0,2,0,15,192,58,112,50,56,98,24,98,8, + 98,8,114,0,122,0,62,0,63,0,31,128,7,192,3,224, + 2,240,2,112,2,56,2,56,130,24,130,24,194,56,226,48, + 114,96,31,192,2,0,2,0,2,0,23,23,69,27,2,0, + 15,0,64,29,131,192,56,252,128,112,65,128,112,67,0,224, + 66,0,224,70,0,224,196,0,192,140,0,193,136,0,193,24, + 120,102,16,236,60,49,198,0,99,130,0,67,130,0,199,2, + 0,135,2,1,135,6,1,6,4,3,6,12,2,6,8,6, + 3,48,4,1,224,23,23,69,26,2,0,0,248,0,1,140, + 0,3,14,0,3,6,0,7,6,0,7,6,0,7,12,0, + 7,140,0,3,152,0,3,241,252,3,192,112,7,192,96,29, + 224,64,56,240,192,112,112,128,96,121,128,224,63,0,224,30, + 0,224,15,0,240,31,130,120,51,252,127,225,248,31,128,240, + 3,8,8,6,1,15,224,224,224,224,64,64,64,64,8,28, + 28,11,2,251,3,6,12,24,56,48,112,112,96,224,224,224, + 224,224,224,224,224,224,224,96,112,112,48,56,24,12,6,3, + 8,28,28,11,1,251,192,96,48,24,28,12,14,14,6,7, + 7,7,7,7,7,7,7,7,7,6,14,14,12,28,24,48, + 96,192,12,13,26,17,2,10,6,0,15,0,6,0,198,48, + 246,240,118,224,15,0,118,224,246,240,198,48,6,0,15,0, + 6,0,16,16,32,19,1,1,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,255,255,255,255,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,4,7,7,8,2,253,96,240, + 240,112,16,32,64,8,2,2,11,1,7,255,255,4,4,4, + 8,2,0,96,240,240,96,10,26,52,9,0,253,0,192,0, + 192,1,128,1,128,3,128,3,0,3,0,3,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,24, + 0,48,0,48,0,48,0,112,0,96,0,96,0,192,0,192, + 0,14,23,46,16,1,0,7,128,28,224,56,112,48,48,112, + 56,112,56,96,24,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,24,112,56,112,56,48,48,56, + 112,28,224,7,128,9,23,46,16,4,0,12,0,28,0,124, + 0,220,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,128,15,23,46,16,0,0,7, + 224,15,240,28,248,48,60,32,60,96,28,64,28,0,28,0, + 28,0,24,0,56,0,48,0,96,0,96,0,192,1,128,3, + 0,6,0,12,2,24,6,63,252,127,248,255,248,12,23,46, + 16,2,0,15,128,63,192,97,224,192,224,128,224,0,224,0, + 192,0,192,1,128,3,0,7,192,31,224,1,240,0,112,0, + 112,0,48,0,48,0,48,0,112,0,96,224,192,243,128,127, + 0,14,23,46,16,1,0,0,96,0,224,0,224,1,224,1, + 96,3,96,6,96,4,96,12,96,24,96,16,96,48,96,96, + 96,64,96,255,252,255,252,255,252,0,96,0,96,0,96,0, + 96,0,96,0,96,13,23,46,16,1,0,15,248,31,240,31, + 224,16,0,48,0,32,0,126,0,127,128,127,192,7,224,1, + 224,0,240,0,112,0,112,0,48,0,48,0,48,0,48,0, + 96,0,96,224,192,243,128,126,0,14,23,46,16,1,0,0, + 120,1,192,3,128,15,0,30,0,28,0,56,0,120,0,112, + 0,115,192,247,240,248,120,224,56,224,60,224,28,224,28,224, + 28,224,28,112,28,112,24,56,56,28,96,7,192,14,23,46, + 16,1,0,63,252,127,252,96,24,192,24,128,56,0,48,0, + 48,0,48,0,96,0,96,0,96,0,224,0,192,0,192,1, + 192,1,128,1,128,1,128,3,0,3,0,3,0,7,0,6, + 0,13,23,46,16,2,0,31,128,56,224,112,112,224,48,224, + 48,224,48,224,112,240,96,124,192,63,0,31,128,15,192,27, + 224,113,240,96,240,224,120,192,120,192,56,192,56,224,56,96, + 112,112,224,31,192,14,23,46,16,1,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,240, + 28,112,28,120,60,62,252,15,184,0,56,0,112,0,112,0, + 224,1,192,3,128,15,0,120,0,4,15,15,9,2,0,96, + 240,240,96,0,0,0,0,0,0,0,96,240,240,96,4,18, + 18,9,2,253,96,240,240,96,0,0,0,0,0,0,0,96, + 240,240,112,16,32,64,16,18,36,19,1,0,0,1,0,7, + 0,31,0,124,1,240,7,192,31,0,124,0,240,0,240,0, + 124,0,31,0,7,192,1,240,0,124,0,31,0,7,0,1, + 16,9,18,19,1,4,255,255,255,255,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,16,18,36,19,2,0,128,0, + 224,0,248,0,62,0,15,128,3,224,0,248,0,62,0,15, + 0,15,0,62,0,248,3,224,15,128,62,0,248,0,224,0, + 128,0,11,23,46,14,2,0,31,0,115,128,193,192,193,192, + 224,224,224,224,96,224,1,192,1,192,1,128,3,128,3,0, + 6,0,4,0,12,0,8,0,8,0,0,0,0,0,12,0, + 30,0,30,0,12,0,27,28,112,31,2,251,0,31,240,0, + 0,248,60,0,1,224,6,0,7,128,3,0,14,0,1,128, + 28,0,0,192,28,0,0,192,56,7,140,96,112,31,92,96, + 112,28,124,32,112,56,56,32,224,112,56,32,224,112,48,32, + 224,112,112,32,224,224,112,96,224,224,112,64,224,224,224,192, + 224,224,224,128,112,225,225,128,112,119,115,0,112,60,62,0, + 56,0,0,0,24,0,0,0,28,0,0,0,14,0,0,0, + 7,128,6,0,1,240,60,0,0,127,240,0,22,23,69,24, + 1,0,0,48,0,0,48,0,0,112,0,0,120,0,0,120, + 0,0,252,0,0,220,0,0,156,0,1,142,0,1,14,0, + 3,15,0,3,7,0,2,7,0,6,7,128,6,3,128,15, + 255,192,12,3,192,24,1,192,24,1,224,48,1,224,48,0, + 240,112,0,240,252,3,252,20,23,69,22,1,0,255,254,0, + 62,15,128,28,3,192,28,1,192,28,1,224,28,0,224,28, + 0,224,28,1,224,28,1,192,28,3,192,28,15,128,31,254, + 0,28,7,128,28,1,224,28,0,224,28,0,240,28,0,112, + 28,0,112,28,0,240,28,0,224,28,1,224,62,7,192,255, + 255,0,20,23,69,22,1,0,1,255,16,7,131,240,14,0, + 240,28,0,112,56,0,48,56,0,48,112,0,16,112,0,16, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,112,0,0,112,0,0,56,0,0,56,0, + 16,28,0,48,14,0,96,7,131,192,1,255,0,22,23,69, + 24,1,0,255,254,0,62,7,128,28,1,192,28,0,224,28, + 0,112,28,0,112,28,0,56,28,0,56,28,0,60,28,0, + 60,28,0,60,28,0,60,28,0,60,28,0,60,28,0,60, + 28,0,56,28,0,56,28,0,112,28,0,112,28,0,224,28, + 1,192,62,7,128,255,254,0,19,23,69,20,1,0,255,255, + 192,62,3,192,28,0,192,28,0,64,28,0,64,28,0,0, + 28,0,0,28,0,0,28,1,0,28,1,0,28,3,0,31, + 255,0,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,32,28,0,32,28,0,96,28,0,192,62,3,192, + 255,255,192,17,23,69,18,1,0,255,255,128,62,7,128,28, + 1,128,28,0,128,28,0,128,28,0,0,28,0,0,28,0, + 0,28,2,0,28,2,0,28,6,0,31,254,0,28,6,0, + 28,2,0,28,2,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,62,0,0,255,128,0,22,23, + 69,24,1,0,1,255,48,7,135,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,0,240,0,0,240, + 0,0,240,0,0,240,3,252,240,0,248,240,0,112,240,0, + 112,112,0,112,112,0,112,56,0,112,56,0,112,28,0,112, + 14,0,112,7,129,224,1,255,128,22,23,69,24,1,0,255, + 135,252,62,1,240,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 31,255,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,62,1, + 240,255,135,252,9,23,46,11,1,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,12,23,46,13,1,0,31,240, + 7,192,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,195,128,227,0,231,0,124,0,23,23,69,24, + 1,0,255,199,248,62,1,224,28,1,128,28,3,0,28,6, + 0,28,12,0,28,24,0,28,48,0,28,96,0,28,192,0, + 31,192,0,31,224,0,31,240,0,30,120,0,28,60,0,28, + 30,0,28,15,0,28,7,128,28,3,192,28,1,224,28,0, + 240,62,0,248,255,199,254,19,23,69,20,1,0,255,128,0, + 62,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,32,28,0,32,28,0,96,28,0,192,62,3,192,255, + 255,192,28,23,92,30,1,0,252,0,7,240,62,0,7,192, + 30,0,15,128,31,0,15,128,31,0,11,128,23,0,27,128, + 23,128,27,128,19,128,51,128,19,192,51,128,19,192,35,128, + 17,224,99,128,17,224,99,128,16,224,195,128,16,240,195,128, + 16,112,131,128,16,121,131,128,16,121,3,128,16,61,3,128, + 16,63,3,128,16,30,3,128,16,30,3,128,56,12,7,192, + 254,12,31,240,22,23,69,24,1,0,248,1,252,60,0,112, + 30,0,32,31,0,32,31,0,32,23,128,32,19,192,32,19, + 192,32,17,224,32,16,240,32,16,248,32,16,120,32,16,60, + 32,16,30,32,16,31,32,16,15,32,16,7,160,16,3,224, + 16,1,224,16,1,224,16,0,224,56,0,96,254,0,32,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,56,0,112,56,0,112,112,0,56,112,0,56,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,112,0,56,112,0,56,56,0,112,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,248,0,60,62,0,28,15,0,28,7,0,28,7,128,28, + 3,128,28,3,128,28,3,128,28,7,128,28,7,0,28,15, + 0,28,62,0,31,240,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,22,29,87,24,1,250,1,254,0,7,135, + 128,14,1,192,28,0,224,56,0,112,56,0,112,112,0,56, + 112,0,56,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,112,0,56,112,0,56,56,0, + 112,56,0,112,28,0,224,14,1,192,7,135,128,1,254,0, + 0,124,0,0,62,0,0,31,0,0,15,128,0,3,224,0, + 0,124,21,23,69,22,1,0,255,248,0,60,62,0,28,15, + 0,28,7,128,28,7,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,0,28,30,0,31,248,0,28,240,0,28, + 120,0,28,60,0,28,60,0,28,30,0,28,15,0,28,15, + 128,28,7,128,28,3,192,62,1,224,255,129,248,15,23,46, + 18,1,0,7,228,28,60,56,28,112,12,112,4,112,6,120, + 0,124,0,62,0,31,128,15,224,7,240,1,248,0,124,0, + 62,0,30,128,14,128,14,192,14,224,12,112,28,124,120,103, + 240,19,23,69,20,1,0,255,255,224,240,225,224,192,224,96, + 192,224,96,128,224,32,128,224,32,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,1,240,0,7,252,0,22,23,69,24, + 1,0,255,129,252,62,0,112,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,30,0,96,14,0,64,15,0, + 192,7,195,128,1,254,0,22,23,69,23,1,0,255,1,252, + 124,0,112,60,0,96,30,0,64,30,0,192,14,0,192,15, + 0,128,15,1,128,7,1,128,7,129,0,3,131,0,3,195, + 0,3,194,0,1,198,0,1,230,0,0,228,0,0,236,0, + 0,124,0,0,120,0,0,120,0,0,56,0,0,48,0,0, + 16,0,31,23,92,32,1,0,255,63,224,254,124,15,128,120, + 60,7,0,48,28,7,128,48,30,7,128,96,30,3,128,96, + 14,3,192,96,15,3,192,192,7,3,224,192,7,135,224,192, + 7,134,225,128,3,132,241,128,3,204,241,128,3,204,115,0, + 1,216,123,0,1,216,59,0,1,248,62,0,0,240,62,0, + 0,240,28,0,0,224,28,0,0,96,28,0,0,96,8,0, + 0,64,8,0,22,23,69,24,1,0,255,195,252,63,0,240, + 31,0,224,15,0,192,7,129,128,7,131,0,3,198,0,1, + 230,0,1,236,0,0,248,0,0,120,0,0,120,0,0,124, + 0,0,222,0,1,158,0,1,143,0,3,15,128,6,7,128, + 14,3,192,12,3,224,24,1,224,56,1,240,254,7,252,22, + 23,69,24,1,0,255,192,252,63,0,56,30,0,48,15,0, + 96,15,128,192,7,128,128,3,193,128,3,195,0,1,227,0, + 0,246,0,0,252,0,0,124,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,124,0,1,255,0,19,23,69,20,1,0, + 63,255,224,56,3,192,96,7,128,96,7,128,64,15,0,64, + 30,0,0,30,0,0,60,0,0,120,0,0,120,0,0,240, + 0,1,224,0,1,224,0,3,192,0,3,192,0,7,128,0, + 15,0,0,15,0,32,30,0,32,60,0,96,60,0,96,120, + 1,192,255,255,192,7,28,28,11,3,251,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,240,254,13,23,46,9,254,0,192,0,224, + 0,96,0,112,0,48,0,56,0,24,0,28,0,12,0,14, + 0,6,0,7,0,3,0,3,128,1,128,1,192,0,192,0, + 224,0,96,0,112,0,48,0,56,0,24,7,28,28,11,1, + 251,254,30,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,30,254,13,13,26, + 16,1,10,7,0,7,0,15,128,13,128,24,192,24,192,48, + 96,48,96,112,112,96,48,224,56,192,24,192,24,17,2,6, + 17,0,251,255,255,128,255,255,128,7,6,6,11,1,17,192, + 224,112,24,12,6,13,15,30,15,1,0,31,128,49,192,112, + 224,112,224,96,224,3,224,14,224,24,224,48,224,96,224,224, + 224,225,224,242,232,126,248,60,112,15,23,46,16,0,0,24, + 0,248,0,56,0,56,0,56,0,56,0,56,0,56,0,57, + 240,59,248,60,124,56,28,56,30,56,14,56,14,56,14,56, + 14,56,14,56,12,56,28,56,24,60,112,15,224,12,15,30, + 15,1,0,15,128,56,192,112,224,96,224,224,96,192,0,192, + 0,192,0,192,0,224,0,224,16,112,48,124,96,63,192,31, + 0,15,23,46,16,1,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,15,184,24,248,48,120,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,190,15,48,12,15,30,15,1,0,15,128,57,192,96, + 224,96,112,192,112,255,240,192,0,192,0,192,0,224,0,224, + 16,112,48,124,96,63,192,15,0,12,23,46,11,0,0,3, + 224,6,112,12,112,12,48,28,0,28,0,28,0,28,0,255, + 192,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,62,0,255,128,14,22,44, + 16,1,249,15,192,24,252,48,124,112,48,112,48,112,48,112, + 48,56,112,28,224,15,128,24,0,48,0,120,0,127,224,63, + 248,31,252,96,12,192,12,192,28,240,56,127,224,31,128,16, + 23,46,16,0,0,24,0,248,0,56,0,56,0,56,0,56, + 0,56,0,56,0,57,240,59,248,62,60,60,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,254,127,7,23,23,9,1,0,56,56,56,0,0,0,0, + 0,56,248,56,56,56,56,56,56,56,56,56,56,56,56,254, + 8,30,30,9,255,249,7,7,7,0,0,0,0,0,3,31, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 6,198,236,120,16,23,46,16,0,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,254,56,112,56,96, + 56,192,57,128,63,0,62,0,63,0,59,128,57,192,56,224, + 56,240,56,120,56,60,254,127,7,23,23,9,1,0,24,248, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,25,15,60,26,0,0,24,240,120,0,251, + 249,252,0,62,63,30,0,60,30,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,254,127,63,128,16,15,30,16,0,0,24,240,251, + 248,60,60,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,254,127,14,15,30,16,1, + 0,7,128,24,224,48,112,112,56,96,56,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,56,48,28,96,7,128,15, + 22,44,17,0,249,25,224,251,248,60,124,56,28,56,30,56, + 14,56,14,56,14,56,14,56,14,56,12,56,28,60,24,62, + 112,59,192,56,0,56,0,56,0,56,0,56,0,56,0,255, + 0,15,22,44,17,1,249,15,200,28,120,48,56,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,184,31,56,0,56,0,56,0,56,0,56,0,56,0, + 56,1,254,10,15,30,11,1,0,25,128,251,192,63,192,60, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,10,15,30,13,1,0,62,128,99, + 128,193,128,192,128,224,128,240,0,124,0,63,0,15,128,3, + 192,129,192,128,192,192,192,225,128,191,0,9,19,38,9,0, + 0,8,0,8,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,128,63,0,28,0,16,15,30,17,0,0,248,124,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,60,60,92,31,223,15,140,15,15,30,17,1, + 0,254,62,120,12,56,8,60,24,28,24,28,16,14,48,14, + 32,7,96,7,64,7,192,3,192,3,128,1,128,1,0,21, + 15,45,24,1,0,253,252,120,112,112,48,112,112,48,56,48, + 32,56,56,96,24,56,64,28,120,64,28,92,192,12,204,128, + 14,143,128,15,143,0,7,7,0,7,7,0,3,6,0,2, + 2,0,14,15,30,17,1,0,252,248,56,96,60,192,28,128, + 30,128,15,0,7,0,7,128,15,128,11,192,25,224,16,224, + 48,112,96,120,240,252,15,22,44,17,1,249,254,30,120,12, + 56,12,60,8,28,24,30,24,14,16,14,48,7,32,7,32, + 3,224,3,192,1,192,1,128,1,128,1,0,1,0,3,0, + 2,0,62,0,124,0,56,0,13,15,30,15,1,0,127,240, + 96,240,64,224,65,224,3,192,3,128,7,128,7,0,14,0, + 30,0,28,8,56,8,120,8,112,24,255,240,8,28,28,16, + 4,251,15,28,56,56,56,56,56,56,56,56,56,56,56,48, + 224,48,56,56,56,56,56,56,56,56,56,24,28,15,2,23, + 23,7,2,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,8,28,28,16,4, + 251,240,56,28,28,28,28,28,28,28,28,28,28,28,12,7, + 12,28,28,28,28,28,28,28,28,28,24,56,240,16,4,8, + 18,1,7,62,3,127,135,225,254,192,124,255}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=11 h=13 x= 1 y=10 dx=12 dy= 0 ascent=13 len=18 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssb[2656] U8G_SECTION(".progmem.u8g_font_tpssb") = { + 0,11,17,0,252,9,1,205,3,159,32,255,252,13,252,9, + 252,0,0,0,4,0,0,2,9,9,4,1,0,192,192,192, + 192,192,192,0,192,192,5,2,2,7,1,7,216,216,5,5, + 5,7,1,0,80,248,80,248,80,7,9,9,9,1,0,124, + 146,144,124,18,18,146,146,124,8,9,9,10,1,0,198,204, + 12,24,24,24,48,51,99,9,9,18,11,1,0,124,0,198, + 0,198,0,124,0,198,0,198,0,198,0,199,128,62,0,2, + 2,2,4,1,7,192,192,5,9,9,7,1,0,24,48,96, + 96,224,96,96,48,24,5,9,9,7,1,0,192,96,48,48, + 56,48,48,96,192,5,7,7,7,1,1,32,168,112,32,112, + 168,32,6,6,6,8,1,1,48,48,252,252,48,48,3,2, + 2,5,1,255,96,192,5,2,2,7,1,3,248,248,2,1, + 1,4,1,0,192,6,9,9,8,1,0,12,24,24,48,48, + 48,96,96,192,6,9,9,7,0,0,120,204,204,204,204,204, + 204,204,120,6,9,9,7,0,0,48,112,240,48,48,48,48, + 48,252,6,9,9,7,0,0,120,204,204,12,24,48,96,192, + 252,6,9,9,7,0,0,120,204,12,56,12,12,12,204,120, + 6,9,9,7,0,0,12,204,204,252,12,12,12,12,12,6, + 9,9,7,0,0,252,192,192,248,12,12,12,204,120,6,9, + 9,7,0,0,120,204,192,248,204,204,204,204,120,6,9,9, + 7,0,0,252,12,24,48,96,96,96,96,96,6,9,9,7, + 0,0,120,204,204,120,204,204,204,204,120,6,9,9,7,0, + 0,120,204,204,204,124,12,12,204,120,2,4,4,4,1,0, + 192,0,0,192,3,5,5,5,1,255,96,0,0,96,192,6, + 9,9,8,1,0,12,24,48,96,192,96,48,24,12,6,5, + 5,8,1,1,252,252,0,252,252,6,9,9,8,1,0,192, + 96,48,24,12,24,48,96,192,6,9,9,8,1,0,120,204, + 12,24,48,48,0,48,48,10,8,16,12,1,0,63,0,64, + 128,204,192,210,192,210,128,205,0,64,64,63,128,6,9,9, + 7,0,0,120,204,204,252,204,204,204,204,204,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,248,6,9,9,7,0, + 0,120,204,192,192,192,192,192,204,120,6,9,9,7,0,0, + 248,204,204,204,204,204,204,204,248,6,9,9,7,0,0,252, + 192,192,248,192,192,192,192,252,6,9,9,7,0,0,252,192, + 192,248,192,192,192,192,192,6,9,9,7,0,0,120,204,192, + 220,204,204,204,204,120,6,9,9,7,0,0,204,204,204,252, + 204,204,204,204,204,2,9,9,3,0,0,192,192,192,192,192, + 192,192,192,192,6,9,9,7,0,0,12,12,12,12,12,12, + 12,204,120,6,9,9,7,0,0,204,204,216,240,224,240,216, + 204,204,6,9,9,7,0,0,192,192,192,192,192,192,192,192, + 252,7,9,9,9,1,0,130,238,254,146,130,130,130,130,130, + 6,9,9,7,0,0,204,236,252,220,204,204,204,204,204,6, + 9,9,7,0,0,120,204,204,204,204,204,204,204,120,6,9, + 9,7,0,0,248,204,204,248,192,192,192,192,192,7,9,9, + 8,0,0,124,130,130,130,130,146,146,146,124,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,204,6,9,9,7,0, + 0,120,204,192,120,12,12,204,204,120,6,9,9,7,0,0, + 252,48,48,48,48,48,48,48,48,6,9,9,7,0,0,204, + 204,204,204,204,204,204,204,120,7,9,9,8,0,0,198,198, + 198,108,108,108,56,56,56,9,9,18,11,1,0,128,128,128, + 128,128,128,105,128,105,128,105,128,127,0,127,0,127,0,6, + 9,9,7,0,0,204,204,120,48,48,120,204,204,204,6,9, + 9,7,0,0,204,204,120,48,48,48,48,48,48,6,9,9, + 7,0,0,252,12,12,24,48,96,192,192,252,4,9,9,6, + 1,0,240,192,192,192,192,192,192,192,240,6,7,7,8,1, + 0,192,96,96,48,24,24,12,4,9,9,6,1,0,240,48, + 48,48,48,48,48,48,240,4,2,2,6,1,10,96,144,6, + 2,2,8,1,0,252,252,2,2,2,4,1,10,64,128,6, + 6,6,7,0,0,120,204,204,204,204,124,6,9,9,7,0, + 0,192,192,192,248,204,204,204,204,120,6,6,6,7,0,0, + 120,204,192,192,204,120,6,9,9,7,0,0,12,12,12,124, + 204,204,204,204,124,6,6,6,7,0,0,120,204,252,192,204, + 120,6,9,9,7,0,0,56,108,96,240,96,96,96,96,96, + 6,10,10,7,0,252,120,204,204,204,204,124,12,12,204,120, + 6,9,9,7,0,0,192,192,192,248,236,204,204,204,204,2, + 9,9,3,0,0,192,192,0,192,192,192,192,192,192,3,13, + 13,4,0,252,96,96,0,96,96,96,96,96,96,96,96,96, + 192,6,9,9,7,0,0,192,192,192,216,240,224,240,216,204, + 2,9,9,3,0,0,192,192,192,192,192,192,192,192,192,7, + 6,6,9,1,0,254,146,146,146,146,146,6,6,6,7,0, + 0,248,236,204,204,204,204,6,6,6,7,0,0,120,204,204, + 204,204,120,6,10,10,7,0,252,120,204,204,204,204,248,192, + 192,192,192,7,10,10,7,0,252,124,204,204,204,204,124,12, + 30,12,12,5,6,6,6,0,0,248,240,192,192,192,192,6, + 6,6,7,0,0,120,224,120,12,204,120,5,9,9,6,0, + 0,96,96,96,248,96,96,96,96,96,6,6,6,7,0,0, + 204,204,204,204,204,120,6,6,6,7,0,0,204,204,120,120, + 48,48,9,6,12,10,0,0,128,128,128,128,107,0,107,0, + 127,0,127,0,6,6,6,7,0,0,204,120,48,48,120,204, + 6,10,10,7,0,252,204,204,204,204,204,124,12,12,204,120, + 6,6,6,7,0,0,124,204,24,48,96,252,6,9,9,8, + 1,0,12,24,48,48,240,48,48,24,12,2,9,9,4,1, + 0,192,192,192,192,192,192,192,192,192,6,9,9,8,1,0, + 192,96,48,48,28,48,48,96,192,5,2,2,6,0,10,232, + 184,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,2,9,9,3,0,0,192,192,0,192,192,192,192, + 192,192,5,7,7,7,1,0,32,112,168,160,168,112,32,6, + 9,9,7,0,0,192,192,248,192,192,192,204,204,252,5,5, + 5,7,1,1,136,112,80,112,136,6,9,9,8,1,0,204, + 204,120,48,48,120,48,120,48,2,9,9,4,1,0,192,192, + 192,0,0,0,192,192,192,8,10,10,10,1,0,124,192,126, + 195,126,3,3,3,195,62,5,1,1,7,1,3,216,9,7, + 14,11,1,0,62,0,65,0,221,128,209,128,221,128,65,0, + 62,0,7,8,8,9,1,0,120,204,204,204,204,126,0,254, + 7,3,3,9,1,2,102,204,102,5,3,3,7,1,1,248, + 248,24,255,9,7,14,11,1,0,62,0,65,0,221,128,209, + 128,209,128,65,0,62,0,5,1,1,6,0,6,248,3,3, + 3,5,1,2,224,160,224,5,7,7,7,1,0,32,32,248, + 32,32,0,248,255,255,255,255,255,255,255,255,255,7,3,3, + 9,1,2,204,102,204,255,255,255,255,6,12,12,7,0,0, + 96,48,0,120,204,204,252,204,204,204,204,204,6,12,12,7, + 0,0,24,48,0,120,204,204,252,204,204,204,204,204,6,12, + 12,7,0,0,48,72,0,120,204,204,252,204,204,204,204,204, + 6,12,12,7,0,0,232,184,0,120,204,204,252,204,204,204, + 204,204,6,11,11,7,0,0,72,0,120,204,204,252,204,204, + 204,204,204,6,13,13,7,0,0,48,72,48,0,120,204,204, + 252,204,204,204,204,204,11,9,18,12,0,0,127,224,206,0, + 206,0,255,192,206,0,206,0,206,0,206,0,207,224,6,11, + 11,7,0,254,120,204,192,192,192,192,192,204,120,48,96,6, + 12,12,7,0,0,96,48,0,252,192,192,248,192,192,192,192, + 252,6,12,12,7,0,0,24,48,0,252,192,192,248,192,192, + 192,192,252,6,12,12,7,0,0,48,72,0,252,192,192,248, + 192,192,192,192,252,6,11,11,7,0,0,204,0,252,192,192, + 248,192,192,192,192,252,3,12,12,4,0,0,192,96,0,96, + 96,96,96,96,96,96,96,96,3,12,12,4,0,0,96,192, + 0,192,192,192,192,192,192,192,192,192,4,12,12,5,0,0, + 96,144,0,96,96,96,96,96,96,96,96,96,6,11,11,7, + 0,0,204,0,48,48,48,48,48,48,48,48,48,6,9,9, + 7,0,0,248,204,204,236,204,204,204,204,248,6,12,12,7, + 0,0,232,184,0,204,236,252,220,204,204,204,204,204,6,12, + 12,7,0,0,96,48,0,120,204,204,204,204,204,204,204,120, + 6,12,12,7,0,0,24,48,0,120,204,204,204,204,204,204, + 204,120,6,12,12,7,0,0,48,72,0,120,204,204,204,204, + 204,204,204,120,6,12,12,7,0,0,232,184,0,120,204,204, + 204,204,204,204,204,120,6,11,11,7,0,0,204,0,120,204, + 204,204,204,204,204,204,120,3,3,3,6,1,2,160,64,160, + 6,9,9,7,0,0,120,204,220,220,236,236,236,204,120,6, + 12,12,7,0,0,96,48,0,204,204,204,204,204,204,204,204, + 120,6,12,12,7,0,0,24,48,0,204,204,204,204,204,204, + 204,204,120,6,12,12,7,0,0,48,72,0,204,204,204,204, + 204,204,204,204,120,6,11,11,7,0,0,204,0,204,204,204, + 204,204,204,204,204,120,6,12,12,7,0,0,24,48,0,204, + 204,120,48,48,48,48,48,48,7,9,9,8,0,0,192,192, + 252,198,252,192,192,192,192,7,11,11,8,0,254,252,198,220, + 198,198,198,220,192,192,192,192,6,9,9,7,0,0,96,48, + 0,120,204,204,204,204,124,6,9,9,7,0,0,24,48,0, + 120,204,204,204,204,124,6,9,9,7,0,0,48,72,0,120, + 204,204,204,204,124,6,9,9,7,0,0,232,184,0,120,204, + 204,204,204,124,6,8,8,7,0,0,204,0,120,204,204,204, + 204,124,6,10,10,7,0,0,48,72,48,0,120,204,204,204, + 204,124,9,6,12,11,1,0,127,128,136,128,143,128,136,0, + 136,128,127,128,6,8,8,7,0,254,120,204,192,192,204,120, + 48,96,6,9,9,7,0,0,96,48,0,120,204,252,192,204, + 120,6,9,9,7,0,0,24,48,0,120,204,252,192,204,120, + 6,9,9,7,0,0,48,72,0,120,204,252,192,204,120,6, + 8,8,7,0,0,204,0,120,204,252,192,204,120,3,12,12, + 4,0,0,192,96,0,96,96,96,96,96,96,96,96,96,3, + 12,12,4,0,0,96,192,0,192,192,192,192,192,192,192,192, + 192,4,12,12,5,0,0,96,144,0,96,96,96,96,96,96, + 96,96,96,6,11,11,7,0,0,204,0,48,48,48,48,48, + 48,48,48,48,6,9,9,7,0,0,12,60,12,124,204,204, + 204,204,124,6,9,9,7,0,0,232,184,0,248,236,204,204, + 204,204,6,9,9,7,0,0,96,48,0,120,204,204,204,204, + 120,6,9,9,7,0,0,24,48,0,120,204,204,204,204,120, + 6,9,9,7,0,0,48,72,0,120,204,204,204,204,120,6, + 9,9,7,0,0,232,184,0,120,204,204,204,204,120,6,8, + 8,7,0,0,204,0,120,204,204,204,204,120,6,6,6,7, + 0,1,48,0,252,252,0,48,6,6,6,7,0,0,120,220, + 220,236,236,120,6,9,9,7,0,0,96,48,0,204,204,204, + 204,204,120,6,9,9,7,0,0,24,48,0,204,204,204,204, + 204,120,6,9,9,7,0,0,48,72,0,204,204,204,204,204, + 120,6,8,8,7,0,0,204,0,204,204,204,204,204,120,6, + 13,13,7,0,252,24,48,0,204,204,204,204,204,124,12,12, + 204,120,6,6,6,7,0,0,192,248,204,248,192,192,6,12, + 12,7,0,252,204,0,204,204,204,204,204,124,12,12,204,120 + }; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 6 h= 9 x= 1 y= 3 dx= 8 dy= 0 ascent= 9 len= 9 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssbn[230] U8G_SECTION(".progmem.u8g_font_tpssbn") = { + 0,11,17,0,252,9,0,0,0,0,42,57,0,9,255,9, + 0,5,7,7,7,1,1,32,168,112,32,112,168,32,6,6, + 6,8,1,1,48,48,252,252,48,48,3,2,2,5,1,255, + 96,192,5,2,2,7,1,3,248,248,2,1,1,4,1,0, + 192,6,9,9,8,1,0,12,24,24,48,48,48,96,96,192, + 6,9,9,7,0,0,120,204,204,204,204,204,204,204,120,6, + 9,9,7,0,0,48,112,240,48,48,48,48,48,252,6,9, + 9,7,0,0,120,204,204,12,24,48,96,192,252,6,9,9, + 7,0,0,120,204,12,56,12,12,12,204,120,6,9,9,7, + 0,0,12,204,204,252,12,12,12,12,12,6,9,9,7,0, + 0,252,192,192,248,12,12,12,204,120,6,9,9,7,0,0, + 120,204,192,248,204,204,204,204,120,6,9,9,7,0,0,252, + 12,24,48,96,96,96,96,96,6,9,9,7,0,0,120,204, + 204,120,204,204,204,204,120,6,9,9,7,0,0,120,204,204, + 204,124,12,12,204,120}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=10 h=13 x= 1 y=10 dx=12 dy= 0 ascent=12 len=18 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssbr[1346] U8G_SECTION(".progmem.u8g_font_tpssbr") = { + 0,11,17,0,252,9,1,205,3,159,32,127,252,12,252,9, + 252,0,0,0,4,0,0,2,9,9,4,1,0,192,192,192, + 192,192,192,0,192,192,5,2,2,7,1,7,216,216,5,5, + 5,7,1,0,80,248,80,248,80,7,9,9,9,1,0,124, + 146,144,124,18,18,146,146,124,8,9,9,10,1,0,198,204, + 12,24,24,24,48,51,99,9,9,18,11,1,0,124,0,198, + 0,198,0,124,0,198,0,198,0,198,0,199,128,62,0,2, + 2,2,4,1,7,192,192,5,9,9,7,1,0,24,48,96, + 96,224,96,96,48,24,5,9,9,7,1,0,192,96,48,48, + 56,48,48,96,192,5,7,7,7,1,1,32,168,112,32,112, + 168,32,6,6,6,8,1,1,48,48,252,252,48,48,3,2, + 2,5,1,255,96,192,5,2,2,7,1,3,248,248,2,1, + 1,4,1,0,192,6,9,9,8,1,0,12,24,24,48,48, + 48,96,96,192,6,9,9,7,0,0,120,204,204,204,204,204, + 204,204,120,6,9,9,7,0,0,48,112,240,48,48,48,48, + 48,252,6,9,9,7,0,0,120,204,204,12,24,48,96,192, + 252,6,9,9,7,0,0,120,204,12,56,12,12,12,204,120, + 6,9,9,7,0,0,12,204,204,252,12,12,12,12,12,6, + 9,9,7,0,0,252,192,192,248,12,12,12,204,120,6,9, + 9,7,0,0,120,204,192,248,204,204,204,204,120,6,9,9, + 7,0,0,252,12,24,48,96,96,96,96,96,6,9,9,7, + 0,0,120,204,204,120,204,204,204,204,120,6,9,9,7,0, + 0,120,204,204,204,124,12,12,204,120,2,4,4,4,1,0, + 192,0,0,192,3,5,5,5,1,255,96,0,0,96,192,6, + 9,9,8,1,0,12,24,48,96,192,96,48,24,12,6,5, + 5,8,1,1,252,252,0,252,252,6,9,9,8,1,0,192, + 96,48,24,12,24,48,96,192,6,9,9,8,1,0,120,204, + 12,24,48,48,0,48,48,10,8,16,12,1,0,63,0,64, + 128,204,192,210,192,210,128,205,0,64,64,63,128,6,9,9, + 7,0,0,120,204,204,252,204,204,204,204,204,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,248,6,9,9,7,0, + 0,120,204,192,192,192,192,192,204,120,6,9,9,7,0,0, + 248,204,204,204,204,204,204,204,248,6,9,9,7,0,0,252, + 192,192,248,192,192,192,192,252,6,9,9,7,0,0,252,192, + 192,248,192,192,192,192,192,6,9,9,7,0,0,120,204,192, + 220,204,204,204,204,120,6,9,9,7,0,0,204,204,204,252, + 204,204,204,204,204,2,9,9,3,0,0,192,192,192,192,192, + 192,192,192,192,6,9,9,7,0,0,12,12,12,12,12,12, + 12,204,120,6,9,9,7,0,0,204,204,216,240,224,240,216, + 204,204,6,9,9,7,0,0,192,192,192,192,192,192,192,192, + 252,7,9,9,9,1,0,130,238,254,146,130,130,130,130,130, + 6,9,9,7,0,0,204,236,252,220,204,204,204,204,204,6, + 9,9,7,0,0,120,204,204,204,204,204,204,204,120,6,9, + 9,7,0,0,248,204,204,248,192,192,192,192,192,7,9,9, + 8,0,0,124,130,130,130,130,146,146,146,124,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,204,6,9,9,7,0, + 0,120,204,192,120,12,12,204,204,120,6,9,9,7,0,0, + 252,48,48,48,48,48,48,48,48,6,9,9,7,0,0,204, + 204,204,204,204,204,204,204,120,7,9,9,8,0,0,198,198, + 198,108,108,108,56,56,56,9,9,18,11,1,0,128,128,128, + 128,128,128,105,128,105,128,105,128,127,0,127,0,127,0,6, + 9,9,7,0,0,204,204,120,48,48,120,204,204,204,6,9, + 9,7,0,0,204,204,120,48,48,48,48,48,48,6,9,9, + 7,0,0,252,12,12,24,48,96,192,192,252,4,9,9,6, + 1,0,240,192,192,192,192,192,192,192,240,6,7,7,8,1, + 0,192,96,96,48,24,24,12,4,9,9,6,1,0,240,48, + 48,48,48,48,48,48,240,4,2,2,6,1,10,96,144,6, + 2,2,8,1,0,252,252,2,2,2,4,1,10,64,128,6, + 6,6,7,0,0,120,204,204,204,204,124,6,9,9,7,0, + 0,192,192,192,248,204,204,204,204,120,6,6,6,7,0,0, + 120,204,192,192,204,120,6,9,9,7,0,0,12,12,12,124, + 204,204,204,204,124,6,6,6,7,0,0,120,204,252,192,204, + 120,6,9,9,7,0,0,56,108,96,240,96,96,96,96,96, + 6,10,10,7,0,252,120,204,204,204,204,124,12,12,204,120, + 6,9,9,7,0,0,192,192,192,248,236,204,204,204,204,2, + 9,9,3,0,0,192,192,0,192,192,192,192,192,192,3,13, + 13,4,0,252,96,96,0,96,96,96,96,96,96,96,96,96, + 192,6,9,9,7,0,0,192,192,192,216,240,224,240,216,204, + 2,9,9,3,0,0,192,192,192,192,192,192,192,192,192,7, + 6,6,9,1,0,254,146,146,146,146,146,6,6,6,7,0, + 0,248,236,204,204,204,204,6,6,6,7,0,0,120,204,204, + 204,204,120,6,10,10,7,0,252,120,204,204,204,204,248,192, + 192,192,192,7,10,10,7,0,252,124,204,204,204,204,124,12, + 30,12,12,5,6,6,6,0,0,248,240,192,192,192,192,6, + 6,6,7,0,0,120,224,120,12,204,120,5,9,9,6,0, + 0,96,96,96,248,96,96,96,96,96,6,6,6,7,0,0, + 204,204,204,204,204,120,6,6,6,7,0,0,204,204,120,120, + 48,48,9,6,12,10,0,0,128,128,128,128,107,0,107,0, + 127,0,127,0,6,6,6,7,0,0,204,120,48,48,120,204, + 6,10,10,7,0,252,204,204,204,204,204,124,12,12,204,120, + 6,6,6,7,0,0,124,204,24,48,96,252,6,9,9,8, + 1,0,12,24,48,48,240,48,48,24,12,2,9,9,4,1, + 0,192,192,192,192,192,192,192,192,192,6,9,9,8,1,0, + 192,96,48,48,28,48,48,96,192,5,2,2,6,0,10,232, + 184,255}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 1 y=10 dx=11 dy= 0 ascent=13 len=18 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpss[2605] U8G_SECTION(".progmem.u8g_font_tpss") = { + 0,11,17,255,252,9,1,192,3,136,32,255,252,13,252,9, + 252,0,0,0,4,0,0,1,9,9,3,1,0,128,128,128, + 128,128,128,0,128,128,3,2,2,5,1,7,160,160,5,5, + 5,7,1,0,80,248,80,248,80,5,9,9,7,1,0,112, + 168,160,112,40,40,168,168,112,5,9,9,7,1,0,136,144, + 16,32,32,32,64,72,136,7,9,9,9,1,0,112,136,136, + 112,136,136,136,138,116,1,2,2,3,1,7,128,128,5,9, + 9,7,1,0,24,32,64,64,128,64,64,32,24,5,9,9, + 7,1,0,192,32,16,16,8,16,16,32,192,5,7,7,7, + 1,1,32,168,112,32,112,168,32,5,5,5,7,1,1,32, + 32,248,32,32,2,2,2,4,1,255,64,128,5,1,1,7, + 1,3,248,1,1,1,3,1,0,128,5,9,9,7,1,0, + 8,16,16,32,32,32,64,64,128,5,9,9,6,0,0,112, + 136,136,136,136,136,136,136,112,5,9,9,6,0,0,32,96, + 160,32,32,32,32,32,248,5,9,9,6,0,0,112,136,136, + 8,16,32,64,128,248,5,9,9,6,0,0,112,136,8,48, + 8,8,8,136,112,5,9,9,6,0,0,8,136,136,248,8, + 8,8,8,8,5,9,9,6,0,0,248,128,128,248,8,8, + 8,136,112,5,9,9,6,0,0,112,136,128,240,136,136,136, + 136,112,5,9,9,6,0,0,248,8,16,32,64,64,64,64, + 64,5,9,9,6,0,0,112,136,136,112,136,136,136,136,112, + 5,9,9,6,0,0,112,136,136,136,120,8,8,136,112,1, + 4,4,3,1,0,128,0,0,128,2,5,5,4,1,255,64, + 0,0,64,128,5,9,9,7,1,0,8,16,32,64,128,64, + 32,16,8,5,3,3,7,1,2,248,0,248,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,5,9,9,7,1, + 0,112,136,8,16,32,32,0,32,32,9,8,16,11,1,0, + 126,0,129,0,153,0,165,0,165,0,154,0,128,128,127,0, + 5,9,9,6,0,0,112,136,136,248,136,136,136,136,136,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,240,5,9, + 9,6,0,0,112,136,128,128,128,128,128,136,112,5,9,9, + 6,0,0,240,136,136,136,136,136,136,136,240,5,9,9,6, + 0,0,248,128,128,240,128,128,128,128,248,5,9,9,6,0, + 0,248,128,128,240,128,128,128,128,128,5,9,9,6,0,0, + 112,136,128,184,136,136,136,136,112,5,9,9,6,0,0,136, + 136,136,248,136,136,136,136,136,1,9,9,2,0,0,128,128, + 128,128,128,128,128,128,128,5,9,9,6,0,0,8,8,8, + 8,8,8,8,136,112,5,9,9,6,0,0,136,136,144,160, + 192,160,144,136,136,5,9,9,6,0,0,128,128,128,128,128, + 128,128,128,248,7,9,9,8,0,0,130,198,170,146,130,130, + 130,130,130,5,9,9,6,0,0,136,200,168,152,136,136,136, + 136,136,5,9,9,6,0,0,112,136,136,136,136,136,136,136, + 112,5,9,9,6,0,0,240,136,136,240,128,128,128,128,128, + 5,9,9,6,0,0,112,136,136,136,136,168,168,168,112,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,136,5,9, + 9,6,0,0,112,136,128,112,8,8,136,136,112,5,9,9, + 6,0,0,248,32,32,32,32,32,32,32,32,5,9,9,6, + 0,0,136,136,136,136,136,136,136,136,112,5,9,9,6,0, + 0,136,136,136,80,80,80,80,32,32,7,9,9,8,0,0, + 130,130,130,84,84,84,40,40,40,5,9,9,6,0,0,136, + 136,80,32,32,80,136,136,136,5,9,9,6,0,0,136,136, + 80,32,32,32,32,32,32,5,9,9,6,0,0,248,8,8, + 16,32,64,128,128,248,3,9,9,5,1,0,224,128,128,128, + 128,128,128,128,224,5,7,7,7,1,0,128,64,64,32,16, + 16,8,3,9,9,5,1,0,224,32,32,32,32,32,32,32, + 224,3,2,2,5,1,10,64,160,6,1,1,8,1,0,252, + 2,2,2,4,1,10,64,128,5,6,6,6,0,0,112,136, + 136,136,136,120,5,9,9,6,0,0,128,128,128,240,136,136, + 136,136,112,5,6,6,6,0,0,112,136,128,128,136,112,5, + 9,9,6,0,0,8,8,8,120,136,136,136,136,120,5,6, + 6,6,0,0,112,136,248,128,136,112,5,9,9,6,0,0, + 48,72,64,224,64,64,64,64,64,5,10,10,6,0,252,112, + 136,136,136,136,120,8,8,136,112,5,9,9,6,0,0,128, + 128,128,176,200,136,136,136,136,1,9,9,2,0,0,128,128, + 0,128,128,128,128,128,128,2,13,13,3,0,252,64,64,0, + 64,64,64,64,64,64,64,64,64,128,5,9,9,6,0,0, + 128,128,128,144,160,192,160,144,136,1,9,9,2,0,0,128, + 128,128,128,128,128,128,128,128,7,6,6,8,0,0,182,218, + 146,146,146,146,5,6,6,6,0,0,176,200,136,136,136,136, + 5,6,6,6,0,0,112,136,136,136,136,112,5,10,10,6, + 0,252,112,136,136,136,136,240,128,128,128,128,6,10,10,7, + 0,252,120,136,136,136,136,120,8,28,8,8,4,6,6,5, + 0,0,176,192,128,128,128,128,5,6,6,6,0,0,112,128, + 112,8,136,112,4,9,9,5,0,0,64,64,64,240,64,64, + 64,64,64,5,6,6,6,0,0,136,136,136,136,136,112,5, + 6,6,6,0,0,136,136,80,80,32,32,7,6,6,8,0, + 0,130,130,84,84,40,40,5,6,6,6,0,0,136,80,32, + 32,80,136,5,10,10,6,0,252,136,136,136,136,136,120,8, + 8,136,112,5,6,6,6,0,0,120,136,16,32,64,248,6, + 9,9,8,1,0,12,16,32,32,192,32,32,16,12,1,9, + 9,3,1,0,128,128,128,128,128,128,128,128,128,6,9,9, + 8,1,0,192,32,16,16,12,16,16,32,192,5,2,2,6, + 0,10,232,184,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,1,9,9,2,0,0,128,128,0,128, + 128,128,128,128,128,5,7,7,7,1,0,32,112,168,160,168, + 112,32,5,9,9,7,1,0,128,128,240,128,128,128,136,136, + 248,5,5,5,7,1,1,136,112,80,112,136,5,9,9,7, + 1,0,136,136,80,32,32,248,32,248,32,1,9,9,3,1, + 0,128,128,128,0,0,0,128,128,128,6,10,10,8,1,0, + 120,128,120,132,120,4,4,4,132,120,5,1,1,7,1,3, + 136,7,7,7,9,1,0,124,130,186,162,186,130,124,6,8, + 8,8,1,0,112,136,136,136,136,116,0,252,5,3,3,7, + 1,2,72,144,72,5,2,2,7,1,2,248,8,0,0,0, + 8,0,0,7,7,7,9,1,0,124,130,186,162,162,130,124, + 5,1,1,6,0,6,248,3,3,3,5,1,2,64,160,64, + 5,7,7,7,1,0,32,32,248,32,32,0,248,255,255,255, + 0,0,0,8,0,0,255,0,0,0,8,0,0,255,255,255, + 5,3,3,7,1,2,144,72,144,255,255,255,255,5,12,12, + 6,0,0,64,32,0,112,136,136,248,136,136,136,136,136,5, + 12,12,6,0,0,16,32,0,112,136,136,248,136,136,136,136, + 136,5,12,12,6,0,0,32,80,0,112,136,136,248,136,136, + 136,136,136,5,12,12,6,0,0,232,184,0,112,136,136,248, + 136,136,136,136,136,5,11,11,6,0,0,80,0,112,136,136, + 248,136,136,136,136,136,5,13,13,6,0,0,32,80,32,0, + 112,136,136,248,136,136,136,136,136,9,9,18,10,0,0,127, + 128,136,0,136,0,255,0,136,0,136,0,136,0,136,0,143, + 128,5,9,9,6,0,254,112,136,128,128,128,136,112,32,96, + 5,12,12,6,0,0,64,32,0,248,128,128,240,128,128,128, + 128,248,5,12,12,6,0,0,16,32,0,248,128,128,240,128, + 128,128,128,248,5,12,12,6,0,0,32,80,0,248,128,128, + 240,128,128,128,128,248,5,11,11,6,0,0,80,0,248,128, + 128,240,128,128,128,128,248,2,12,12,2,0,0,128,64,0, + 64,64,64,64,64,64,64,64,64,2,12,12,2,0,0,64, + 128,0,128,128,128,128,128,128,128,128,128,3,12,12,2,255, + 0,64,160,0,64,64,64,64,64,64,64,64,64,3,11,11, + 2,255,0,160,0,64,64,64,64,64,64,64,64,64,5,9, + 9,6,0,0,240,136,136,232,136,136,136,136,240,5,12,12, + 6,0,0,232,184,0,136,136,136,200,168,152,136,136,136,5, + 12,12,6,0,0,64,32,0,112,136,136,136,136,136,136,136, + 112,5,12,12,6,0,0,16,32,0,112,136,136,136,136,136, + 136,136,112,5,12,12,6,0,0,32,80,0,112,136,136,136, + 136,136,136,136,112,5,12,12,6,0,0,232,184,0,112,136, + 136,136,136,136,136,136,112,5,11,11,6,0,0,80,0,112, + 136,136,136,136,136,136,136,112,3,3,3,6,1,2,160,64, + 160,7,9,9,8,0,0,58,68,76,84,84,84,100,68,184, + 5,12,12,6,0,0,64,32,0,136,136,136,136,136,136,136, + 136,112,5,12,12,6,0,0,16,32,0,136,136,136,136,136, + 136,136,136,112,5,12,12,6,0,0,32,80,0,136,136,136, + 136,136,136,136,136,112,5,11,11,6,0,0,80,0,136,136, + 136,136,136,136,136,136,112,5,12,12,6,0,0,16,32,0, + 136,136,80,32,32,32,32,32,32,5,9,9,6,0,0,128, + 128,240,136,240,128,128,128,128,5,11,11,6,0,254,240,136, + 176,136,136,136,176,128,128,128,128,5,9,9,6,0,0,64, + 32,0,112,136,136,136,136,120,5,9,9,6,0,0,16,32, + 0,112,136,136,136,136,120,5,9,9,6,0,0,32,80,0, + 112,136,136,136,136,120,5,9,9,6,0,0,232,184,0,112, + 136,136,136,136,120,5,8,8,6,0,0,80,0,112,136,136, + 136,136,120,5,10,10,6,0,0,32,80,32,0,112,136,136, + 136,136,120,9,6,12,10,0,0,119,0,136,128,143,128,136, + 0,136,128,119,0,5,8,8,6,0,254,112,136,128,128,136, + 112,32,64,5,6,6,6,0,0,112,136,248,128,136,112,5, + 6,6,6,0,0,112,136,248,128,136,112,5,6,6,6,0, + 0,112,136,248,128,136,112,5,6,6,6,0,0,112,136,248, + 128,136,112,2,10,10,3,0,0,128,64,0,0,64,64,64, + 64,64,64,2,10,10,3,0,0,64,128,0,0,128,128,128, + 128,128,128,3,10,10,4,0,0,64,160,0,0,64,64,64, + 64,64,64,3,9,9,4,0,0,160,0,0,64,64,64,64, + 64,64,5,9,9,6,0,0,8,56,8,120,136,136,136,136, + 120,5,9,9,6,0,0,232,184,0,176,200,136,136,136,136, + 5,9,9,6,0,0,64,32,0,112,136,136,136,136,112,5, + 9,9,6,0,0,16,32,0,112,136,136,136,136,112,5,9, + 9,6,0,0,32,80,0,112,136,136,136,136,112,5,9,9, + 6,0,0,232,184,0,112,136,136,136,136,112,5,8,8,6, + 0,0,80,0,112,136,136,136,136,112,5,5,5,6,0,1, + 32,0,248,0,32,5,6,6,6,0,0,112,152,168,168,200, + 112,5,9,9,6,0,0,64,32,0,136,136,136,136,136,112, + 5,9,9,6,0,0,16,32,0,136,136,136,136,136,112,5, + 9,9,6,0,0,32,80,0,136,136,136,136,136,112,5,8, + 8,6,0,0,80,0,136,136,136,136,136,112,5,13,13,6, + 0,252,16,32,0,136,136,136,136,136,120,8,8,136,112,5, + 6,6,5,0,0,128,240,136,240,128,128,5,12,12,6,0, + 252,80,0,136,136,136,136,136,120,8,8,136,112}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 5 h= 9 x= 1 y= 3 dx= 7 dy= 0 ascent= 9 len= 9 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssn[228] U8G_SECTION(".progmem.u8g_font_tpssn") = { + 0,11,17,255,252,9,0,0,0,0,42,57,0,9,255,9, + 0,5,7,7,7,1,1,32,168,112,32,112,168,32,5,5, + 5,7,1,1,32,32,248,32,32,2,2,2,4,1,255,64, + 128,5,1,1,7,1,3,248,1,1,1,3,1,0,128,5, + 9,9,7,1,0,8,16,16,32,32,32,64,64,128,5,9, + 9,6,0,0,112,136,136,136,136,136,136,136,112,5,9,9, + 6,0,0,32,96,160,32,32,32,32,32,248,5,9,9,6, + 0,0,112,136,136,8,16,32,64,128,248,5,9,9,6,0, + 0,112,136,8,48,8,8,8,136,112,5,9,9,6,0,0, + 8,136,136,248,8,8,8,8,8,5,9,9,6,0,0,248, + 128,128,248,8,8,8,136,112,5,9,9,6,0,0,112,136, + 128,240,136,136,136,136,112,5,9,9,6,0,0,248,8,16, + 32,64,64,64,64,64,5,9,9,6,0,0,112,136,136,112, + 136,136,136,136,112,5,9,9,6,0,0,112,136,136,136,120, + 8,8,136,112}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 1 y=10 dx=11 dy= 0 ascent=12 len=16 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssr[1317] U8G_SECTION(".progmem.u8g_font_tpssr") = { + 0,11,17,255,252,9,1,192,3,136,32,127,252,12,252,9, + 252,0,0,0,4,0,0,1,9,9,3,1,0,128,128,128, + 128,128,128,0,128,128,3,2,2,5,1,7,160,160,5,5, + 5,7,1,0,80,248,80,248,80,5,9,9,7,1,0,112, + 168,160,112,40,40,168,168,112,5,9,9,7,1,0,136,144, + 16,32,32,32,64,72,136,7,9,9,9,1,0,112,136,136, + 112,136,136,136,138,116,1,2,2,3,1,7,128,128,5,9, + 9,7,1,0,24,32,64,64,128,64,64,32,24,5,9,9, + 7,1,0,192,32,16,16,8,16,16,32,192,5,7,7,7, + 1,1,32,168,112,32,112,168,32,5,5,5,7,1,1,32, + 32,248,32,32,2,2,2,4,1,255,64,128,5,1,1,7, + 1,3,248,1,1,1,3,1,0,128,5,9,9,7,1,0, + 8,16,16,32,32,32,64,64,128,5,9,9,6,0,0,112, + 136,136,136,136,136,136,136,112,5,9,9,6,0,0,32,96, + 160,32,32,32,32,32,248,5,9,9,6,0,0,112,136,136, + 8,16,32,64,128,248,5,9,9,6,0,0,112,136,8,48, + 8,8,8,136,112,5,9,9,6,0,0,8,136,136,248,8, + 8,8,8,8,5,9,9,6,0,0,248,128,128,248,8,8, + 8,136,112,5,9,9,6,0,0,112,136,128,240,136,136,136, + 136,112,5,9,9,6,0,0,248,8,16,32,64,64,64,64, + 64,5,9,9,6,0,0,112,136,136,112,136,136,136,136,112, + 5,9,9,6,0,0,112,136,136,136,120,8,8,136,112,1, + 4,4,3,1,0,128,0,0,128,2,5,5,4,1,255,64, + 0,0,64,128,5,9,9,7,1,0,8,16,32,64,128,64, + 32,16,8,5,3,3,7,1,2,248,0,248,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,5,9,9,7,1, + 0,112,136,8,16,32,32,0,32,32,9,8,16,11,1,0, + 126,0,129,0,153,0,165,0,165,0,154,0,128,128,127,0, + 5,9,9,6,0,0,112,136,136,248,136,136,136,136,136,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,240,5,9, + 9,6,0,0,112,136,128,128,128,128,128,136,112,5,9,9, + 6,0,0,240,136,136,136,136,136,136,136,240,5,9,9,6, + 0,0,248,128,128,240,128,128,128,128,248,5,9,9,6,0, + 0,248,128,128,240,128,128,128,128,128,5,9,9,6,0,0, + 112,136,128,184,136,136,136,136,112,5,9,9,6,0,0,136, + 136,136,248,136,136,136,136,136,1,9,9,2,0,0,128,128, + 128,128,128,128,128,128,128,5,9,9,6,0,0,8,8,8, + 8,8,8,8,136,112,5,9,9,6,0,0,136,136,144,160, + 192,160,144,136,136,5,9,9,6,0,0,128,128,128,128,128, + 128,128,128,248,7,9,9,8,0,0,130,198,170,146,130,130, + 130,130,130,5,9,9,6,0,0,136,200,168,152,136,136,136, + 136,136,5,9,9,6,0,0,112,136,136,136,136,136,136,136, + 112,5,9,9,6,0,0,240,136,136,240,128,128,128,128,128, + 5,9,9,6,0,0,112,136,136,136,136,168,168,168,112,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,136,5,9, + 9,6,0,0,112,136,128,112,8,8,136,136,112,5,9,9, + 6,0,0,248,32,32,32,32,32,32,32,32,5,9,9,6, + 0,0,136,136,136,136,136,136,136,136,112,5,9,9,6,0, + 0,136,136,136,80,80,80,80,32,32,7,9,9,8,0,0, + 130,130,130,84,84,84,40,40,40,5,9,9,6,0,0,136, + 136,80,32,32,80,136,136,136,5,9,9,6,0,0,136,136, + 80,32,32,32,32,32,32,5,9,9,6,0,0,248,8,8, + 16,32,64,128,128,248,3,9,9,5,1,0,224,128,128,128, + 128,128,128,128,224,5,7,7,7,1,0,128,64,64,32,16, + 16,8,3,9,9,5,1,0,224,32,32,32,32,32,32,32, + 224,3,2,2,5,1,10,64,160,6,1,1,8,1,0,252, + 2,2,2,4,1,10,64,128,5,6,6,6,0,0,112,136, + 136,136,136,120,5,9,9,6,0,0,128,128,128,240,136,136, + 136,136,112,5,6,6,6,0,0,112,136,128,128,136,112,5, + 9,9,6,0,0,8,8,8,120,136,136,136,136,120,5,6, + 6,6,0,0,112,136,248,128,136,112,5,9,9,6,0,0, + 48,72,64,224,64,64,64,64,64,5,10,10,6,0,252,112, + 136,136,136,136,120,8,8,136,112,5,9,9,6,0,0,128, + 128,128,176,200,136,136,136,136,1,9,9,2,0,0,128,128, + 0,128,128,128,128,128,128,2,13,13,3,0,252,64,64,0, + 64,64,64,64,64,64,64,64,64,128,5,9,9,6,0,0, + 128,128,128,144,160,192,160,144,136,1,9,9,2,0,0,128, + 128,128,128,128,128,128,128,128,7,6,6,8,0,0,182,218, + 146,146,146,146,5,6,6,6,0,0,176,200,136,136,136,136, + 5,6,6,6,0,0,112,136,136,136,136,112,5,10,10,6, + 0,252,112,136,136,136,136,240,128,128,128,128,6,10,10,7, + 0,252,120,136,136,136,136,120,8,28,8,8,4,6,6,5, + 0,0,176,192,128,128,128,128,5,6,6,6,0,0,112,128, + 112,8,136,112,4,9,9,5,0,0,64,64,64,240,64,64, + 64,64,64,5,6,6,6,0,0,136,136,136,136,136,112,5, + 6,6,6,0,0,136,136,80,80,32,32,7,6,6,8,0, + 0,130,130,84,84,40,40,5,6,6,6,0,0,136,80,32, + 32,80,136,5,10,10,6,0,252,136,136,136,136,136,120,8, + 8,136,112,5,6,6,6,0,0,120,136,16,32,64,248,6, + 9,9,8,1,0,12,16,32,32,192,32,32,16,12,1,9, + 9,3,1,0,128,128,128,128,128,128,128,128,128,6,9,9, + 8,1,0,192,32,16,16,12,16,16,32,192,5,2,2,6, + 0,10,232,184,255}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_square[1236] U8G_SECTION(".progmem.u8g_font_trixel_square") = { + 0,5,9,0,254,5,1,91,2,177,32,255,254,7,254,5, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,255, + 80,248,80,248,80,3,6,6,4,0,0,64,224,192,96,224, + 64,3,5,5,4,0,0,160,32,224,128,160,5,5,5,6, + 0,0,224,160,240,160,248,1,2,2,2,0,3,128,128,2, + 5,5,3,0,0,192,128,128,128,192,2,5,5,3,0,0, + 192,64,64,64,192,3,3,3,4,0,2,160,64,160,3,3, + 3,4,0,0,64,224,64,1,2,2,2,0,255,128,128,3, + 1,1,4,0,1,224,1,1,1,2,0,0,128,3,5,5, + 4,0,0,32,96,64,192,128,3,5,5,4,0,0,224,160, + 160,160,224,2,5,5,3,0,0,64,192,64,64,64,3,5, + 5,4,0,0,224,160,96,192,224,3,5,5,4,0,0,224, + 32,96,32,224,3,5,5,4,0,0,160,160,224,32,32,3, + 5,5,4,0,0,224,128,224,32,224,3,5,5,4,0,0, + 224,128,224,160,224,3,5,5,4,0,0,224,32,32,32,32, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,160,224,32,224,1,3,3,2,0,0,128,0,128,1, + 4,4,2,0,255,128,0,128,128,3,3,3,4,0,0,96, + 192,96,3,3,3,4,0,0,224,0,224,3,3,3,4,0, + 0,192,96,192,3,5,5,4,0,0,224,32,96,0,64,5, + 6,6,6,0,255,248,136,168,184,128,248,3,5,5,4,0, + 0,224,160,224,160,160,3,5,5,4,0,0,224,160,224,160, + 224,3,5,5,4,0,0,224,160,128,160,224,3,5,5,4, + 0,0,224,160,160,160,224,3,5,5,4,0,0,224,128,192, + 128,224,3,5,5,4,0,0,224,128,192,128,128,3,5,5, + 4,0,0,224,128,160,160,224,3,5,5,4,0,0,160,160, + 224,160,160,1,5,5,2,0,0,128,128,128,128,128,3,5, + 5,4,0,0,224,32,32,32,224,3,5,5,4,0,0,160, + 160,192,160,160,3,5,5,4,0,0,128,128,128,128,224,5, + 5,5,6,0,0,216,216,168,168,136,4,5,5,5,0,0, + 208,208,176,176,144,3,5,5,4,0,0,224,160,160,160,224, + 3,5,5,4,0,0,224,160,224,128,128,4,5,5,5,0, + 0,224,160,160,160,240,3,5,5,4,0,0,224,160,192,160, + 160,3,5,5,4,0,0,224,128,224,32,224,3,5,5,4, + 0,0,224,64,64,64,64,3,5,5,4,0,0,160,160,160, + 160,224,3,5,5,4,0,0,160,160,160,224,64,5,5,5, + 6,0,0,136,136,168,168,248,3,5,5,4,0,0,160,224, + 64,224,160,3,5,5,4,0,0,160,160,224,64,64,3,5, + 5,4,0,0,224,32,224,128,224,3,5,5,4,0,0,224, + 128,128,128,224,3,5,5,4,0,0,128,192,64,96,32,3, + 5,5,4,0,0,224,32,32,32,224,3,2,2,4,0,3, + 224,160,3,1,1,4,0,0,224,2,2,2,3,0,3,192, + 64,4,3,3,5,0,0,224,160,240,3,5,5,4,0,0, + 128,128,224,160,224,3,3,3,4,0,0,224,128,224,3,5, + 5,4,0,0,32,32,224,160,224,3,3,3,4,0,0,224, + 192,224,2,5,5,3,0,0,192,128,192,128,128,3,5,5, + 4,0,254,224,160,224,32,224,3,5,5,4,0,0,128,128, + 224,160,160,1,5,5,2,0,0,128,0,128,128,128,2,7, + 7,3,0,254,64,0,64,64,64,64,192,3,5,5,4,0, + 0,128,128,160,224,160,2,5,5,3,0,0,128,128,128,128, + 192,5,3,3,6,0,0,248,168,168,3,3,3,4,0,0, + 224,160,160,3,3,3,4,0,0,224,160,224,3,5,5,4, + 0,254,224,160,224,128,128,3,5,5,4,0,254,224,160,224, + 32,32,2,3,3,3,0,0,192,128,128,3,3,3,4,0, + 0,96,64,192,2,5,5,3,0,0,128,192,128,128,192,3, + 3,3,4,0,0,160,160,224,3,3,3,4,0,0,160,224, + 64,5,3,3,6,0,0,168,168,248,3,3,3,4,0,0, + 160,64,160,3,5,5,4,0,254,160,160,224,32,224,3,3, + 3,4,0,0,224,64,224,3,5,5,4,0,0,96,64,192, + 64,96,1,5,5,2,0,0,128,128,128,128,128,3,5,5, + 4,0,0,192,64,96,64,192,3,3,3,4,0,1,32,224, + 128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,4,5,5,5,0,0,112,64,96,64,240, + 255,255,255,3,7,7,4,0,254,224,128,224,160,224,32,224, + 255,255,255,3,2,2,4,0,1,160,160,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,3,2,2,4,0,1, + 160,160,255,255,255,255,255,255,255,255,3,7,7,4,0,0, + 160,0,224,160,224,160,160,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,3,7,7,4,0,0,160,0, + 224,160,160,160,224,255,255,255,255,255,3,7,7,4,0,0, + 160,0,160,160,160,160,224,255,255,3,7,7,4,0,254,224, + 160,224,160,224,128,128,255,255,255,255,4,5,5,5,0,0, + 160,0,224,160,240,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,3,5,5,4,0,0,160,0,224,160, + 224,255,255,255,255,255,3,5,5,4,0,0,160,0,160,160, + 224,255,255,255}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[178] U8G_SECTION(".progmem.u8g_font_trixel_squaren") = { + 0,5,9,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,3,3,4,0,2,160,64,160,3,3,3,4,0,0, + 64,224,64,1,2,2,2,0,255,128,128,3,1,1,4,0, + 1,224,1,1,1,2,0,0,128,3,5,5,4,0,0,32, + 96,64,192,128,3,5,5,4,0,0,224,160,160,160,224,2, + 5,5,3,0,0,64,192,64,64,64,3,5,5,4,0,0, + 224,160,96,192,224,3,5,5,4,0,0,224,32,96,32,224, + 3,5,5,4,0,0,160,160,224,32,32,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,128,224,160, + 224,3,5,5,4,0,0,224,32,32,32,32,3,5,5,4, + 0,0,224,160,224,160,224,3,5,5,4,0,0,224,160,224, + 32,224}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[994] U8G_SECTION(".progmem.u8g_font_trixel_squarer") = { + 0,5,9,0,254,5,1,91,2,177,32,127,254,6,254,5, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,255, + 80,248,80,248,80,3,6,6,4,0,0,64,224,192,96,224, + 64,3,5,5,4,0,0,160,32,224,128,160,5,5,5,6, + 0,0,224,160,240,160,248,1,2,2,2,0,3,128,128,2, + 5,5,3,0,0,192,128,128,128,192,2,5,5,3,0,0, + 192,64,64,64,192,3,3,3,4,0,2,160,64,160,3,3, + 3,4,0,0,64,224,64,1,2,2,2,0,255,128,128,3, + 1,1,4,0,1,224,1,1,1,2,0,0,128,3,5,5, + 4,0,0,32,96,64,192,128,3,5,5,4,0,0,224,160, + 160,160,224,2,5,5,3,0,0,64,192,64,64,64,3,5, + 5,4,0,0,224,160,96,192,224,3,5,5,4,0,0,224, + 32,96,32,224,3,5,5,4,0,0,160,160,224,32,32,3, + 5,5,4,0,0,224,128,224,32,224,3,5,5,4,0,0, + 224,128,224,160,224,3,5,5,4,0,0,224,32,32,32,32, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,160,224,32,224,1,3,3,2,0,0,128,0,128,1, + 4,4,2,0,255,128,0,128,128,3,3,3,4,0,0,96, + 192,96,3,3,3,4,0,0,224,0,224,3,3,3,4,0, + 0,192,96,192,3,5,5,4,0,0,224,32,96,0,64,5, + 6,6,6,0,255,248,136,168,184,128,248,3,5,5,4,0, + 0,224,160,224,160,160,3,5,5,4,0,0,224,160,224,160, + 224,3,5,5,4,0,0,224,160,128,160,224,3,5,5,4, + 0,0,224,160,160,160,224,3,5,5,4,0,0,224,128,192, + 128,224,3,5,5,4,0,0,224,128,192,128,128,3,5,5, + 4,0,0,224,128,160,160,224,3,5,5,4,0,0,160,160, + 224,160,160,1,5,5,2,0,0,128,128,128,128,128,3,5, + 5,4,0,0,224,32,32,32,224,3,5,5,4,0,0,160, + 160,192,160,160,3,5,5,4,0,0,128,128,128,128,224,5, + 5,5,6,0,0,216,216,168,168,136,4,5,5,5,0,0, + 208,208,176,176,144,3,5,5,4,0,0,224,160,160,160,224, + 3,5,5,4,0,0,224,160,224,128,128,4,5,5,5,0, + 0,224,160,160,160,240,3,5,5,4,0,0,224,160,192,160, + 160,3,5,5,4,0,0,224,128,224,32,224,3,5,5,4, + 0,0,224,64,64,64,64,3,5,5,4,0,0,160,160,160, + 160,224,3,5,5,4,0,0,160,160,160,224,64,5,5,5, + 6,0,0,136,136,168,168,248,3,5,5,4,0,0,160,224, + 64,224,160,3,5,5,4,0,0,160,160,224,64,64,3,5, + 5,4,0,0,224,32,224,128,224,3,5,5,4,0,0,224, + 128,128,128,224,3,5,5,4,0,0,128,192,64,96,32,3, + 5,5,4,0,0,224,32,32,32,224,3,2,2,4,0,3, + 224,160,3,1,1,4,0,0,224,2,2,2,3,0,3,192, + 64,4,3,3,5,0,0,224,160,240,3,5,5,4,0,0, + 128,128,224,160,224,3,3,3,4,0,0,224,128,224,3,5, + 5,4,0,0,32,32,224,160,224,3,3,3,4,0,0,224, + 192,224,2,5,5,3,0,0,192,128,192,128,128,3,5,5, + 4,0,254,224,160,224,32,224,3,5,5,4,0,0,128,128, + 224,160,160,1,5,5,2,0,0,128,0,128,128,128,2,7, + 7,3,0,254,64,0,64,64,64,64,192,3,5,5,4,0, + 0,128,128,160,224,160,2,5,5,3,0,0,128,128,128,128, + 192,5,3,3,6,0,0,248,168,168,3,3,3,4,0,0, + 224,160,160,3,3,3,4,0,0,224,160,224,3,5,5,4, + 0,254,224,160,224,128,128,3,5,5,4,0,254,224,160,224, + 32,32,2,3,3,3,0,0,192,128,128,3,3,3,4,0, + 0,96,64,192,2,5,5,3,0,0,128,192,128,128,192,3, + 3,3,4,0,0,160,160,224,3,3,3,4,0,0,160,224, + 64,5,3,3,6,0,0,168,168,248,3,3,3,4,0,0, + 160,64,160,3,5,5,4,0,254,160,160,224,32,224,3,3, + 3,4,0,0,224,64,224,3,5,5,4,0,0,96,64,192, + 64,96,1,5,5,2,0,0,128,128,128,128,128,3,5,5, + 4,0,0,192,64,96,64,192,3,3,3,4,0,1,32,224, + 128,255}; +/* + Fontname: u8glib_4 + Copyright: public domain + Capital A Height: 4, '1' Height: 4 + Calculated Max Values w= 8 h= 7 x= 1 y= 4 dx= 9 dy= 0 ascent= 6 len= 7 + Font Bounding box w=10 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_u8glib_4[1660] U8G_SECTION(".progmem.u8g_font_u8glib_4") = { + 1,10,6,0,255,4,0,233,1,198,32,255,255,6,255,5, + 255,2,0,32,2,20,36,128,128,0,128,5,50,66,160,160, + 1,85,101,80,248,80,248,80,1,86,102,32,120,224,56,240, + 32,2,68,84,144,32,64,144,2,69,85,64,160,64,160,240, + 5,18,34,128,128,1,38,54,64,128,128,128,128,64,1,38, + 54,128,64,64,64,64,128,3,34,50,192,192,2,51,67,64, + 224,64,1,18,34,128,128,3,49,65,224,2,17,33,128,2, + 68,84,16,32,64,128,2,52,68,224,160,160,224,2,36,52, + 64,192,64,64,2,52,68,224,32,64,224,2,52,68,224,64, + 32,224,2,52,68,128,160,224,32,2,52,68,224,192,32,224, + 2,52,68,224,128,224,224,2,52,68,224,32,64,128,2,52, + 68,224,224,160,224,2,52,68,224,224,32,224,2,19,35,128, + 0,128,1,20,36,128,0,128,128,2,35,51,64,128,64,2, + 51,67,224,0,224,2,35,51,128,64,128,2,36,52,192,64, + 0,64,2,68,84,240,176,128,240,2,68,84,96,144,240,144, + 2,68,84,224,240,144,240,2,52,68,96,128,128,96,2,68, + 84,224,144,144,224,2,68,84,240,224,128,240,2,68,84,240, + 128,224,128,2,68,84,240,128,176,240,2,68,84,144,240,144, + 144,2,20,36,128,128,128,128,2,52,68,224,32,32,192,2, + 68,84,144,224,144,144,2,52,68,128,128,128,224,2,84,100, + 136,216,168,136,2,68,84,144,208,176,144,2,68,84,96,144, + 144,96,2,68,84,224,144,224,128,2,84,100,240,144,144,232, + 2,68,84,240,240,160,144,2,68,84,112,192,48,224,2,52, + 68,224,64,64,64,2,68,84,144,144,144,240,2,68,84,144, + 144,144,96,2,84,100,136,168,168,80,2,52,68,160,64,64, + 160,2,68,84,144,240,16,240,2,68,84,240,32,64,240,1, + 38,54,192,128,128,128,128,192,2,68,84,128,64,32,16,1, + 38,54,192,64,64,64,64,192,5,50,66,64,160,1,65,81, + 240,5,34,50,128,64,2,51,67,96,160,224,2,52,68,128, + 192,160,192,2,35,51,192,128,192,2,52,68,32,96,160,96, + 2,51,67,224,192,224,2,52,68,32,64,224,64,1,52,68, + 224,224,32,96,2,52,68,128,192,160,160,2,20,36,128,0, + 128,128,1,37,53,64,0,64,64,128,2,52,68,128,160,192, + 160,2,20,36,128,128,128,128,2,83,99,208,168,168,2,51, + 67,192,160,160,2,51,67,224,160,224,1,52,68,192,160,192, + 128,1,52,68,96,160,96,32,2,35,51,192,128,128,2,51, + 67,96,64,192,2,52,68,64,224,64,96,2,51,67,160,160, + 224,2,51,67,160,160,64,2,83,99,136,168,80,2,51,67, + 160,64,160,1,52,68,160,224,32,224,2,51,67,192,64,96, + 1,54,70,96,64,128,128,64,96,1,22,38,128,128,128,128, + 128,128,1,54,70,192,64,32,32,64,192,5,66,82,80,160, + 2,69,85,240,144,144,144,240,2,0,32,2,53,69,160,0, + 160,160,224,2,54,70,64,128,0,224,192,224,2,54,70,64, + 160,0,96,160,224,2,53,69,160,0,96,160,224,2,54,70, + 64,32,0,96,160,224,2,54,70,64,160,64,96,160,224,1, + 36,52,192,128,192,192,2,54,70,64,160,0,224,192,224,2, + 53,69,160,0,224,192,224,2,54,70,64,32,0,224,192,224, + 2,52,68,160,0,64,64,2,53,149,64,160,0,64,64,2, + 37,53,128,64,0,64,64,2,69,85,144,96,144,240,144,2, + 70,86,96,144,96,144,240,144,2,70,86,32,64,240,224,128, + 240,2,83,99,120,176,248,2,132,148,31,46,120,143,2,54, + 70,64,160,0,224,160,224,2,53,69,160,0,224,160,224,2, + 54,70,128,64,0,224,160,224,2,54,70,64,160,0,160,160, + 224,2,54,70,64,32,0,160,160,224,1,54,70,160,0,160, + 224,32,96,2,69,85,144,96,144,144,96,2,69,85,144,0, + 144,144,240,2,0,64,2,0,64,2,0,64,2,0,64,2, + 0,64,2,54,70,64,128,0,96,160,224,2,37,53,64,128, + 0,128,128,2,54,70,32,64,0,224,160,224,2,54,70,32, + 64,0,160,160,224,2,70,70,80,160,0,192,160,160,2,70, + 86,80,160,144,208,176,144,2,21,37,128,128,0,128,128,1, + 54,70,224,128,224,224,32,224,6,65,81,144,1,119,151,124, + 130,186,162,186,130,124,2,0,144,2,51,67,96,192,96,3, + 50,66,224,32,2,0,144,1,119,151,124,130,186,178,170,130, + 124,6,65,81,240,4,51,67,224,160,224,2,52,148,64,224, + 64,224,4,51,67,192,64,96,4,35,51,192,64,192,5,34, + 50,64,128,1,52,148,160,160,224,128,1,101,117,124,244,116, + 20,20,19,17,49,128,2,0,144,4,35,51,192,64,64,4, + 51,67,224,160,224,2,51,67,192,96,192,1,118,134,196,72, + 80,40,78,132,1,118,134,196,72,80,44,68,134,1,118,150, + 196,72,208,40,78,132,2,0,64,2,70,86,64,32,96,144, + 240,144,2,70,86,32,64,96,144,240,144,2,70,86,96,144, + 96,144,240,144,2,70,86,80,160,96,144,240,144,2,69,85, + 144,96,144,240,144,2,70,86,96,0,96,144,240,144,2,132, + 148,31,46,120,143,1,69,85,240,128,240,32,96,2,70,86, + 64,32,240,224,128,240,2,70,86,32,64,240,224,128,240,2, + 70,86,96,144,240,224,128,240,2,70,86,144,0,240,224,128, + 240,2,38,54,128,64,128,128,128,128,2,38,54,64,128,64, + 64,64,64,2,54,70,64,160,64,64,64,64,2,53,69,160, + 64,64,64,64,2,84,100,112,232,72,112,2,70,86,80,160, + 0,144,208,176,2,70,86,64,32,96,144,144,96,2,70,86, + 32,64,96,144,144,96,2,70,86,96,144,96,144,144,96,2, + 70,86,80,160,96,144,144,96,2,69,85,144,96,144,144,96, + 2,51,67,160,64,160,1,102,118,4,56,88,104,112,128,2, + 70,86,64,32,144,144,144,240,2,70,86,32,64,144,144,144, + 240,2,70,86,96,144,0,144,144,240,2,69,85,144,0,144, + 144,240,2,70,86,32,64,144,240,16,240,1,70,86,128,224, + 144,144,224,128,1,53,69,192,192,160,192,128,2,54,70,64, + 32,0,96,160,224,2,54,70,64,128,0,96,160,224,2,54, + 70,64,160,0,96,160,224,2,70,70,80,160,0,96,160,224, + 2,53,69,160,0,96,160,224,2,54,70,64,160,64,96,160, + 224,2,83,99,120,176,248,1,36,52,192,128,192,192,2,54, + 70,64,32,0,224,192,224,2,54,70,64,128,0,224,192,224, + 2,54,70,64,160,0,224,192,224,2,53,69,160,0,224,192, + 224,2,37,53,128,64,0,64,64,2,37,53,64,128,0,128, + 128,2,53,69,64,160,0,64,64,2,52,68,160,0,64,64, + 2,70,86,96,96,16,112,144,96,2,70,70,80,160,0,192, + 160,160,2,54,70,64,32,0,224,160,224,2,54,70,64,128, + 0,224,160,224,2,54,70,64,160,0,224,160,224,2,70,70, + 80,160,0,224,160,224,2,53,69,160,0,224,160,224,2,53, + 69,64,0,224,0,64,1,85,101,8,112,80,112,128,2,54, + 70,64,32,0,160,160,224,2,54,70,64,128,0,160,160,224, + 2,54,70,64,160,0,160,160,224,2,53,69,160,0,160,160, + 224,1,55,71,64,128,0,160,224,32,96,1,53,69,128,192, + 160,192,128,1,54,150,160,0,160,224,32,96}; +/* + Fontname: u8glib_4 + Copyright: public domain + Capital A Height: 4, '1' Height: 4 + Calculated Max Values w= 5 h= 6 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w=10 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[664] U8G_SECTION(".progmem.u8g_font_u8glib_4r") = { + 1,10,6,0,255,4,0,233,1,198,32,127,255,5,255,5, + 255,2,0,32,2,20,36,128,128,0,128,5,50,66,160,160, + 1,85,101,80,248,80,248,80,1,86,102,32,120,224,56,240, + 32,2,68,84,144,32,64,144,2,69,85,64,160,64,160,240, + 5,18,34,128,128,1,38,54,64,128,128,128,128,64,1,38, + 54,128,64,64,64,64,128,3,34,50,192,192,2,51,67,64, + 224,64,1,18,34,128,128,3,49,65,224,2,17,33,128,2, + 68,84,16,32,64,128,2,52,68,224,160,160,224,2,36,52, + 64,192,64,64,2,52,68,224,32,64,224,2,52,68,224,64, + 32,224,2,52,68,128,160,224,32,2,52,68,224,192,32,224, + 2,52,68,224,128,224,224,2,52,68,224,32,64,128,2,52, + 68,224,224,160,224,2,52,68,224,224,32,224,2,19,35,128, + 0,128,1,20,36,128,0,128,128,2,35,51,64,128,64,2, + 51,67,224,0,224,2,35,51,128,64,128,2,36,52,192,64, + 0,64,2,68,84,240,176,128,240,2,68,84,96,144,240,144, + 2,68,84,224,240,144,240,2,52,68,96,128,128,96,2,68, + 84,224,144,144,224,2,68,84,240,224,128,240,2,68,84,240, + 128,224,128,2,68,84,240,128,176,240,2,68,84,144,240,144, + 144,2,20,36,128,128,128,128,2,52,68,224,32,32,192,2, + 68,84,144,224,144,144,2,52,68,128,128,128,224,2,84,100, + 136,216,168,136,2,68,84,144,208,176,144,2,68,84,96,144, + 144,96,2,68,84,224,144,224,128,2,84,100,240,144,144,232, + 2,68,84,240,240,160,144,2,68,84,112,192,48,224,2,52, + 68,224,64,64,64,2,68,84,144,144,144,240,2,68,84,144, + 144,144,96,2,84,100,136,168,168,80,2,52,68,160,64,64, + 160,2,68,84,144,240,16,240,2,68,84,240,32,64,240,1, + 38,54,192,128,128,128,128,192,2,68,84,128,64,32,16,1, + 38,54,192,64,64,64,64,192,5,50,66,64,160,1,65,81, + 240,5,34,50,128,64,2,51,67,96,160,224,2,52,68,128, + 192,160,192,2,35,51,192,128,192,2,52,68,32,96,160,96, + 2,51,67,224,192,224,2,52,68,32,64,224,64,1,52,68, + 224,224,32,96,2,52,68,128,192,160,160,2,20,36,128,0, + 128,128,1,37,53,64,0,64,64,128,2,52,68,128,160,192, + 160,2,20,36,128,128,128,128,2,83,99,208,168,168,2,51, + 67,192,160,160,2,51,67,224,160,224,1,52,68,192,160,192, + 128,1,52,68,96,160,96,32,2,35,51,192,128,128,2,51, + 67,96,64,192,2,52,68,64,224,64,96,2,51,67,160,160, + 224,2,51,67,160,160,64,2,83,99,136,168,80,2,51,67, + 160,64,160,1,52,68,160,224,32,224,2,51,67,192,64,96, + 1,54,70,96,64,128,128,64,96,1,22,38,128,128,128,128, + 128,128,1,54,70,192,64,32,32,64,192,5,66,82,80,160, + 2,69,85,240,144,144,144,240}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[4239] U8G_SECTION(".progmem.u8g_font_unifont_0_8") = { + 0,16,16,0,254,10,1,231,3,213,32,255,254,14,254,11, + 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,157,202,82,115, + 211,194,82,66,93,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,73,157,202,82,122,93,202,80,73,145,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,147,202,82,115,159,202,18,114, + 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,147,234, + 82,91,159,202,82,75,147,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,116,185,166,164,37,165,164,164,116,185,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,75,209,234,16,91,209,202, + 16,75,223,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 205,194,18,49,159,136,82,115,147,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,121,205,194,18,121,159,192,82,123,147,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,75,157,201,32,121, + 25,201,4,73,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,75,185,201,8,121,9,201,8,73,49,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,205,196,144,68,137,168,132,16, + 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,114,29,202, + 18,114,19,194,18,67,221,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,19,202,18,114,19,194,18,67,205,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,14,33,137,32,14,33,138, + 32,9,33,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 221,194,2,49,141,136,80,115,159,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,57,221,194,2,49,141,136,66,115,157,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,207,202,16,74, + 13,202,2,113,221,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,69,202,76,114,69,194,68,65,143,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,114,93,202,66,114,77,194,80,65, + 159,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,157,193, + 32,49,25,137,4,113,57,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,211,194,18,66,31,194,18,57,211,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,69,17,237,16,85,81,197, + 176,69,17,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, + 141,194,82,51,159,138,18,114,19,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,123,141,194,82,123,159,194,18,122,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,57,143,194,80,50, + 77,138,66,113,157,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,155,196,34,37,163,148,162,99,155,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,221,194,8,50,9,138,8,113, + 221,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,57,221,194, + 8,65,137,192,72,59,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,14,249,144,32,12,33,130,32,28,33,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,49,207,202,16,73,145,200, + 80,51,143,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, + 33,203,96,114,161,194,32,66,33,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,51,143,202,80,123,145,202,16,74,15,128, + 0,0,1,128,0,0,1,128,0,85,85,6,13,13,8,1, + 0,96,24,0,252,128,128,128,248,128,128,128,128,252,6,14, + 14,8,1,0,72,72,0,0,252,128,128,128,248,128,128,128, + 128,252,7,10,10,8,1,0,252,32,32,32,60,34,34,34, + 34,44,6,14,14,8,1,0,24,96,0,0,252,128,128,128, + 128,128,128,128,128,128,6,10,10,8,1,0,56,68,128,128, + 248,128,128,128,68,56,6,10,10,8,1,0,120,132,132,128, + 96,24,4,132,132,120,5,10,10,8,2,0,248,32,32,32, + 32,32,32,32,32,248,5,14,14,8,2,0,144,144,0,0, + 248,32,32,32,32,32,32,32,32,248,6,10,10,8,1,0, + 28,8,8,8,8,8,8,136,136,112,8,10,10,8,0,0, + 120,72,72,72,78,73,73,73,73,142,7,10,10,8,1,0, + 144,144,144,144,252,146,146,146,146,156,7,10,10,8,1,0, + 252,32,32,32,60,34,34,34,34,34,6,14,14,8,1,0, + 24,96,0,0,128,140,144,160,192,192,160,144,136,132,6,13, + 13,8,1,0,96,24,0,132,140,140,148,148,164,164,196,196, + 132,7,14,14,8,1,0,132,132,120,0,130,130,68,68,40, + 40,16,16,32,96,7,10,10,8,1,0,130,130,130,130,130, + 130,254,16,16,16,6,10,10,8,1,0,48,72,72,132,132, + 132,252,132,132,132,6,10,10,8,1,0,248,128,128,128,248, + 132,132,132,132,248,6,10,10,8,1,0,248,132,132,132,248, + 132,132,132,132,248,6,10,10,8,1,0,252,128,128,128,128, + 128,128,128,128,128,8,12,12,8,0,254,14,18,18,18,34, + 34,34,66,66,255,129,129,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,7,10,10,8,1,0,146,146,84, + 84,56,56,84,84,146,146,6,10,10,8,1,0,120,132,4, + 4,120,8,4,4,132,120,6,10,10,8,1,0,132,140,140, + 148,148,164,164,196,196,132,6,13,13,8,1,0,72,48,0, + 132,140,140,148,148,164,164,196,196,132,6,10,10,8,1,0, + 128,140,144,160,192,192,160,144,136,132,6,10,10,8,1,0, + 60,36,36,36,36,36,36,68,68,132,6,10,10,8,1,0, + 132,132,204,204,180,180,132,132,132,132,6,10,10,8,1,0, + 132,132,132,132,252,132,132,132,132,132,6,10,10,8,1,0, + 120,132,132,132,132,132,132,132,132,120,6,10,10,8,1,0, + 252,132,132,132,132,132,132,132,132,132,6,10,10,8,1,0, + 248,132,132,132,248,128,128,128,128,128,6,10,10,8,1,0, + 120,132,132,128,128,128,128,132,132,120,7,10,10,8,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,8,1,0, + 130,130,68,68,40,40,16,16,32,96,7,11,11,8,1,0, + 16,124,146,146,146,146,146,124,16,16,16,6,10,10,8,1, + 0,132,132,72,72,48,48,72,72,132,132,7,12,12,8,1, + 254,132,132,132,132,132,132,132,132,132,254,2,2,6,10,10, + 8,1,0,132,132,132,132,132,252,4,4,4,4,7,10,10, + 8,1,0,146,146,146,146,146,146,146,146,146,254,8,12,12, + 8,0,254,146,146,146,146,146,146,146,146,146,255,1,1,7, + 10,10,8,1,0,224,32,32,32,60,34,34,34,34,60,6, + 10,10,8,1,0,132,132,132,132,228,148,148,148,148,228,6, + 10,10,8,1,0,128,128,128,128,248,132,132,132,132,248,6, + 10,10,8,1,0,112,136,4,4,124,4,4,4,136,112,6, + 10,10,8,1,0,152,164,164,164,228,164,164,164,164,152,6, + 10,10,8,1,0,124,132,132,132,124,36,68,68,132,132,6, + 8,8,8,1,0,120,132,4,124,132,132,140,116,6,12,12, + 8,1,0,4,56,64,128,248,132,132,132,132,132,132,120,6, + 8,8,8,1,0,248,132,132,248,132,132,132,248,6,8,8, + 8,1,0,252,128,128,128,128,128,128,128,7,9,9,8,1, + 255,60,36,68,68,132,132,132,254,130,6,8,8,8,1,0, + 120,132,132,252,128,128,132,120,7,8,8,8,1,0,146,146, + 84,56,56,84,146,146,6,8,8,8,1,0,120,132,4,120, + 8,4,132,120,6,8,8,8,1,0,140,140,148,148,164,164, + 196,196,6,12,12,8,1,0,72,48,0,0,140,140,148,148, + 164,164,196,196,6,8,8,8,1,0,140,144,160,192,160,144, + 136,132,6,8,8,8,1,0,60,36,36,36,36,68,68,132, + 6,8,8,8,1,0,132,204,204,180,180,132,132,132,6,8, + 8,8,1,0,132,132,132,252,132,132,132,132,6,8,8,8, + 1,0,120,132,132,132,132,132,132,120,6,8,8,8,1,0, + 252,132,132,132,132,132,132,132,6,10,10,8,1,254,248,132, + 132,132,132,248,128,128,128,128,6,8,8,8,1,0,120,132, + 128,128,128,128,132,120,7,8,8,8,1,0,254,16,16,16, + 16,16,16,16,6,10,10,8,1,254,132,132,72,72,48,48, + 32,32,64,192,7,10,10,8,1,255,16,16,124,146,146,146, + 146,124,16,16,6,8,8,8,1,0,132,132,72,48,48,72, + 132,132,7,10,10,8,1,254,132,132,132,132,132,132,132,254, + 2,2,6,8,8,8,1,0,132,132,132,132,252,4,4,4, + 7,8,8,8,1,0,146,146,146,146,146,146,146,254,8,10, + 10,8,0,254,146,146,146,146,146,146,146,255,1,1,7,8, + 8,8,1,0,224,32,32,60,34,34,34,60,6,8,8,8, + 1,0,132,132,132,228,148,148,148,228,6,8,8,8,1,0, + 128,128,128,248,132,132,132,248,6,8,8,8,1,0,112,136, + 4,124,4,4,136,112,6,8,8,8,1,0,152,164,164,228, + 164,164,164,152,6,8,8,8,1,0,124,132,132,132,124,36, + 68,132,6,12,12,8,1,0,96,24,0,0,120,132,132,252, + 128,128,132,120,6,12,12,8,1,0,72,72,0,0,120,132, + 132,252,128,128,132,120,6,11,11,8,1,255,64,64,240,64, + 64,120,68,68,68,68,24,6,12,12,8,1,0,24,96,0, + 0,252,128,128,128,128,128,128,128,6,8,8,8,1,0,56, + 68,128,248,128,128,68,56,6,8,8,8,1,0,120,132,128, + 96,24,4,132,120,5,11,11,8,2,0,32,32,0,96,32, + 32,32,32,32,32,248,5,11,11,8,2,0,144,144,0,96, + 32,32,32,32,32,32,248,5,13,13,8,1,254,8,8,0, + 24,8,8,8,8,8,8,8,144,96,8,8,8,8,0,0, + 120,72,72,78,73,73,73,142,7,8,8,8,1,0,144,144, + 144,252,146,146,146,156,6,10,10,8,1,0,64,64,240,64, + 64,88,100,68,68,68,6,12,12,8,1,0,24,96,0,0, + 140,144,160,192,160,144,136,132,6,12,12,8,1,0,96,24, + 0,0,140,140,148,148,164,164,196,196,6,15,15,8,1,254, + 132,132,120,0,0,132,132,72,72,48,48,32,32,64,192,5, + 10,10,8,2,254,136,136,136,136,136,136,248,32,32,32}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 8, '1' Height: 7 + Calculated Max Values w=16 h=16 x= 9 y=11 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 2 + X Font ascent =13 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[3934] U8G_SECTION(".progmem.u8g_font_unifont_12_13") = { + 0,16,16,0,254,8,4,93,5,214,0,255,2,14,254,13, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,85,85,128, + 0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128, + 4,42,13,170,12,53,245,128,0,0,1,170,170,16,16,32, + 16,0,254,85,85,128,0,0,1,128,0,0,1,128,0,0, + 1,128,0,0,1,142,0,14,25,135,224,0,1,128,0,0, + 1,170,170,16,16,32,16,0,254,85,85,128,0,0,1,128, + 0,0,1,128,0,0,25,128,36,0,69,129,68,1,73,158, + 240,0,1,128,0,0,1,170,170,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,12,14,28,16,1,255,1,80,225,80,33,160,17,0,17, + 0,9,0,8,0,4,224,4,128,2,128,3,0,3,0,2, + 0,2,0,11,15,30,16,1,255,0,64,0,128,225,0,33, + 64,16,128,17,32,8,192,8,0,4,224,4,128,2,128,3, + 0,3,0,2,0,2,0,12,7,14,16,2,3,1,144,58, + 96,202,192,17,64,16,64,32,128,31,0,5,10,10,8,1, + 1,8,8,80,16,32,32,64,64,136,160,7,10,10,8,1, + 1,8,8,80,16,32,32,64,66,136,160,10,10,20,16,3, + 2,48,0,48,0,6,0,9,0,7,0,1,0,14,0,240, + 128,0,64,0,64,2,4,4,8,3,3,64,128,192,192,5, + 4,4,8,1,2,24,48,64,128,12,4,8,16,3,1,112, + 0,136,0,136,48,127,192,7,11,11,16,2,0,24,32,32, + 24,32,76,82,98,36,88,128,6,4,4,8,2,9,24,36, + 228,88,9,6,12,16,4,7,3,0,4,0,39,128,56,0, + 64,0,128,0,10,5,10,16,3,8,252,64,16,64,32,128, + 71,0,64,0,11,4,8,16,2,9,24,32,36,32,228,64, + 89,128,10,4,8,16,3,8,0,64,254,64,1,64,0,128, + 7,4,4,16,4,9,64,92,98,252,8,6,6,16,3,8, + 40,40,40,104,128,127,3,5,5,16,6,8,32,0,32,32, + 192,4,2,2,16,6,10,48,192,5,5,5,16,5,8,16, + 40,48,96,144,4,13,13,16,6,254,240,0,0,0,0,0, + 0,0,0,0,0,48,192,2,5,5,8,3,2,64,128,192, + 0,192,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,3,3,3,16,7,0, + 64,0,160,7,9,9,8,1,2,124,130,128,64,32,16,16, + 0,16,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,4,5,5,8,2,2,112,128,240,64, + 128,7,10,10,8,1,3,2,124,128,16,16,16,16,16,16, + 16,3,11,11,8,2,3,96,128,96,128,32,32,32,32,32, + 32,32,6,13,13,8,1,255,24,32,24,32,0,24,36,36, + 60,4,8,144,96,3,12,12,8,3,254,64,64,64,64,64, + 64,64,0,96,128,96,128,6,11,11,8,1,255,48,64,48, + 64,0,140,144,144,140,132,120,1,8,8,8,4,3,128,128, + 128,128,128,128,128,128,6,7,7,8,1,0,8,68,132,120, + 0,0,16,5,8,8,8,2,3,144,0,0,96,144,136,136, + 112,6,7,7,8,1,3,40,0,0,8,68,132,120,6,9, + 9,8,1,3,32,0,80,0,0,8,68,132,120,6,8,8, + 8,1,254,252,32,64,128,144,128,68,56,6,8,8,8,1, + 254,252,32,64,128,128,128,68,56,6,11,11,8,1,254,32, + 0,0,252,32,64,128,128,128,68,56,6,5,5,8,1,3, + 16,8,4,132,248,6,7,7,8,1,3,64,0,16,8,4, + 132,248,6,7,7,8,1,255,8,4,4,4,8,144,96,6, + 10,10,8,1,255,32,0,0,8,4,4,4,8,144,96,7, + 7,7,8,1,255,2,42,42,188,144,144,96,7,12,12,8, + 1,255,16,0,36,0,0,2,42,42,188,144,144,96,7,6, + 6,8,1,0,12,50,156,144,144,96,7,9,9,8,1,0, + 8,0,0,12,50,156,144,144,96,6,8,8,8,1,3,64, + 64,64,64,88,100,68,248,6,8,8,8,1,3,64,72,64, + 64,88,100,68,248,6,9,9,8,1,254,48,72,64,56,64, + 128,128,132,120,6,12,12,8,1,254,16,0,0,48,72,64, + 56,64,128,128,132,120,7,9,9,8,0,3,80,4,8,16, + 32,64,60,130,126,7,12,12,8,0,255,4,8,16,32,64, + 60,130,126,0,40,0,16,6,10,10,8,1,255,64,160,160, + 8,148,144,136,132,132,120,6,9,9,8,1,255,160,0,8, + 148,144,136,132,132,120,6,10,10,8,1,255,64,0,160,8, + 148,144,136,132,132,120,8,1,1,8,0,3,255,6,8,8, + 8,1,3,16,0,12,20,12,132,132,120,6,10,10,8,1, + 0,72,0,0,56,36,20,76,132,136,112,6,8,8,8,1, + 3,4,20,36,20,68,132,132,120,6,11,11,8,1,0,4, + 4,4,4,4,4,68,132,132,136,120,5,8,8,8,2,254, + 112,24,120,128,128,128,128,128,6,9,9,8,1,0,32,0, + 0,8,68,132,132,136,112,10,9,18,16,1,1,4,0,3, + 0,6,128,10,64,10,64,6,64,25,128,96,0,128,0,6, + 8,8,8,1,255,24,36,36,60,4,8,144,96,6,7,7, + 8,1,255,8,148,144,136,132,132,120,6,8,8,8,1,254, + 8,148,144,136,132,120,0,80,4,4,4,8,2,9,48,192, + 48,192,5,5,5,8,2,8,24,24,200,80,224,4,4,4, + 8,2,0,32,192,48,192,4,2,2,8,2,9,48,192,4, + 6,6,8,2,6,64,160,160,112,64,128,4,2,2,8,2, + 254,48,192,5,4,4,8,1,7,8,40,176,192,4,4,4, + 8,2,7,96,144,144,96,7,3,3,8,1,9,2,124,128, + 3,4,4,8,2,10,96,128,96,128,3,4,4,8,2,254, + 96,128,96,128,2,3,3,16,9,254,128,64,64,5,5,5, + 16,5,9,8,16,32,224,96,4,3,3,16,6,9,144,144, + 96,4,1,1,16,6,10,240,5,4,4,16,5,9,136,80, + 32,32,5,4,4,16,5,9,32,32,80,136,2,2,2,16, + 7,0,192,192,5,5,5,16,5,9,96,224,32,16,8,4, + 4,4,16,6,9,144,96,96,144,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,3,3,3, + 8,2,5,64,224,64,4,9,9,8,2,2,128,128,64,64, + 32,32,16,16,16,5,9,9,8,2,2,136,144,96,64,32, + 32,16,16,16,7,9,9,8,1,2,146,164,120,64,32,32, + 16,16,16,6,9,9,8,1,2,8,16,32,64,48,64,128, + 132,120,6,9,9,8,1,2,48,72,72,132,132,132,132,72, + 48,7,9,9,8,1,2,128,120,8,8,4,4,4,2,2, + 7,9,9,8,1,2,130,130,68,68,40,40,16,16,16,7, + 9,9,8,1,2,16,16,16,40,40,68,68,130,130,7,9, + 9,8,1,2,48,72,136,152,104,4,4,2,2,5,10,10, + 8,1,2,8,8,144,144,32,32,72,72,128,128,2,4,4, + 8,3,1,192,192,64,128,2,4,4,8,3,7,192,192,64, + 128,7,6,6,8,1,3,16,16,254,56,108,68,6,4,4, + 8,1,3,8,68,132,120,8,7,7,16,1,3,6,9,9, + 7,65,130,124,1,4,4,8,4,7,128,128,128,128,5,11, + 11,8,2,3,16,40,120,128,32,32,32,32,32,32,32,6, + 11,11,8,1,3,12,16,76,176,0,16,16,16,16,16,16, + 6,12,12,8,1,254,16,16,16,16,16,16,16,0,12,16, + 76,176,3,4,4,8,2,10,96,128,96,128,5,11,11,8, + 2,3,24,32,24,32,128,128,128,128,128,128,128,7,13,13, + 8,1,255,6,8,6,8,0,24,36,36,60,4,8,144,96, + 7,13,13,8,1,255,102,104,38,72,128,24,36,36,60,4, + 8,144,96,7,11,11,8,1,255,6,8,6,8,0,140,144, + 144,140,132,120,6,9,9,8,1,3,64,64,112,112,0,8, + 68,132,120,6,9,9,8,1,3,32,0,32,0,0,8,68, + 132,120,6,8,8,8,1,255,8,68,132,120,0,16,0,16, + 6,10,10,8,1,0,40,0,0,8,68,132,120,16,40,16, + 6,9,9,8,1,3,80,0,32,0,0,8,68,132,120,6, + 8,8,8,1,255,8,68,132,120,0,40,0,16,6,9,9, + 8,1,3,80,0,80,0,0,8,68,132,120,6,8,8,8, + 1,255,8,68,132,120,0,40,0,40,6,13,13,8,1,254, + 48,64,48,64,0,252,32,64,128,128,128,68,56,6,13,13, + 8,1,254,32,0,32,0,0,252,32,64,128,128,128,68,56, + 6,8,8,8,1,254,252,32,64,128,168,128,68,56,6,8, + 8,8,1,254,252,32,64,144,128,144,68,56,6,13,13,8, + 1,254,32,0,72,0,0,252,32,64,128,128,128,68,56,6, + 8,8,8,1,254,252,64,128,168,128,144,68,56,6,8,8, + 8,1,254,252,64,128,168,128,168,68,56,6,10,10,8,1, + 3,64,64,112,112,0,16,8,4,132,248,6,8,8,8,1, + 0,16,8,4,132,248,16,40,16,6,7,7,8,1,1,16, + 8,4,132,248,0,16,6,12,12,8,1,1,64,64,112,112, + 0,16,8,4,132,248,0,16,6,8,8,8,1,3,80,0, + 0,16,8,4,132,248,6,7,7,8,1,1,16,8,4,132, + 248,0,80,6,9,9,8,1,3,32,0,80,0,16,8,4, + 132,248,6,9,9,8,1,3,80,0,32,0,16,8,4,132, + 248,6,9,9,8,1,3,80,0,80,0,16,8,4,132,248, + 6,13,13,8,1,255,16,16,28,28,0,0,8,4,4,4, + 8,144,96,7,13,13,8,1,255,34,20,8,8,0,0,8, + 4,4,4,8,144,96,6,8,8,8,1,254,8,4,4,4, + 8,152,116,8,6,7,7,8,1,255,8,4,4,4,8,144, + 100,7,8,8,8,1,254,16,8,8,8,16,144,106,4,6, + 7,7,8,1,255,8,4,4,36,8,144,100,6,10,10,8, + 1,255,36,0,0,8,4,4,4,8,144,96,6,12,12,8, + 1,255,16,0,40,0,0,8,4,4,4,8,144,96,6,12, + 12,8,1,255,36,0,36,0,0,8,4,4,4,8,144,96, + 7,10,10,8,1,0,8,0,0,2,42,42,188,144,148,96, + 7,8,8,8,1,255,2,42,42,188,160,170,64,4,7,13, + 13,8,1,255,16,0,36,0,0,2,42,42,188,160,170,64, + 4,7,6,6,8,1,0,12,50,156,160,170,64,7,11,11, + 8,1,0,16,0,36,0,0,12,50,156,144,144,96,6,8, + 8,8,1,3,72,64,84,64,88,100,68,248,6,14,14,8, + 1,254,32,0,72,0,0,48,72,64,56,64,128,128,132,120, + 6,6,6,8,1,3,12,20,12,132,132,120,6,8,8,8, + 1,1,12,20,12,132,132,120,0,16,6,11,11,8,1,1, + 8,0,0,12,20,12,132,132,120,0,16,6,10,10,8,1, + 3,16,0,36,0,12,20,12,132,132,120,6,10,10,8,1, + 255,12,20,12,132,132,120,0,72,0,32,6,10,10,8,1, + 3,20,0,20,0,12,20,12,132,132,120,6,10,10,8,1, + 0,8,0,0,56,36,20,76,132,136,112,6,12,12,8,1, + 0,32,0,72,0,0,56,36,20,76,132,136,112,7,8,8, + 8,0,3,4,8,16,32,64,60,130,126,14,8,16,16,1, + 3,0,48,0,192,3,0,12,0,16,0,15,248,128,4,127, + 248,7,8,8,8,0,3,4,12,26,36,64,60,130,126,6, + 10,10,8,1,3,16,0,4,20,36,20,68,132,132,120,6, + 11,11,8,1,3,32,0,80,4,20,36,20,68,132,132,120, + 6,12,12,8,1,255,4,20,36,20,68,132,132,120,0,40, + 0,16,7,10,10,8,0,3,8,16,36,72,16,32,64,60, + 130,126,7,10,10,8,0,3,8,16,36,76,26,36,64,60, + 130,126,7,10,10,8,0,3,80,6,24,98,12,48,64,60, + 130,126,7,12,12,8,0,1,8,16,36,72,16,32,64,60, + 130,126,0,40,7,14,14,8,0,255,8,16,36,72,16,32, + 64,60,130,126,0,16,0,16,7,11,11,8,0,3,64,0, + 166,24,98,12,48,64,60,130,126,7,14,14,8,1,0,34, + 20,8,8,0,4,4,4,4,68,132,132,136,120,6,13,13, + 8,1,0,4,0,4,4,4,4,4,4,68,132,132,136,120, + 7,14,14,8,1,0,8,0,18,0,4,4,4,4,4,68, + 132,132,136,120,6,13,13,8,1,254,4,4,4,4,4,4, + 68,132,120,0,40,0,16,6,11,11,8,1,254,16,0,0, + 8,68,132,132,136,112,0,16,6,6,6,8,1,0,8,68, + 132,132,136,112,6,12,12,8,1,0,32,32,56,56,0,0, + 8,68,132,132,136,112,6,11,11,8,1,254,16,0,0,8, + 68,132,132,136,120,20,8,6,11,11,8,1,0,32,0,72, + 0,0,8,68,132,132,136,112,6,6,6,8,1,2,32,88, + 84,52,72,128,6,11,11,8,1,254,32,0,0,252,64,128, + 168,128,144,68,56,4,10,10,8,2,3,96,128,96,128,0, + 64,96,144,144,240,6,3,3,8,1,2,32,92,128,6,8, + 8,8,1,2,48,64,48,64,0,32,92,128,6,6,6,8, + 1,2,80,0,0,32,92,128,6,8,8,8,1,255,24,36, + 36,28,68,164,72,240,6,8,8,8,1,255,24,36,36,60, + 4,56,144,96,6,13,13,8,1,255,68,40,16,16,0,24, + 36,36,60,4,8,144,96,6,14,14,8,1,255,32,80,80, + 56,32,64,152,36,36,60,4,8,144,96,6,12,12,8,1, + 255,16,8,8,0,24,36,36,60,4,8,144,96,6,12,12, + 8,1,255,16,40,68,0,24,36,36,60,4,8,144,96,6, + 11,11,8,1,255,40,0,0,24,36,36,60,4,8,144,96, + 6,13,13,8,1,255,16,0,36,0,0,24,36,36,60,4, + 8,144,96,6,7,7,8,1,255,8,148,144,136,132,132,120, + 7,7,7,8,0,255,4,42,104,164,34,34,28,6,12,12, + 8,1,255,136,80,32,32,0,8,148,144,136,132,132,120,6, + 11,11,8,1,255,16,0,0,24,36,36,60,4,8,144,96, + 6,9,9,8,1,254,24,164,144,136,112,0,32,0,32,6, + 9,9,8,1,254,24,164,144,136,112,0,80,0,32,7,6, + 6,8,1,255,16,40,32,64,128,254,7,10,10,8,1,255, + 96,128,96,128,16,40,32,64,128,254,4,1,1,8,2,3, + 240,4,5,5,8,2,3,64,96,144,144,240,11,5,10,16, + 3,9,16,64,18,224,127,224,128,0,254,0,10,5,10,16, + 3,9,18,64,17,0,127,0,128,0,254,0,6,4,4,16, + 5,9,8,20,60,192,5,5,5,16,4,9,136,72,48,16, + 48,8,5,5,16,3,9,252,32,72,33,30,3,3,3,16, + 4,8,160,0,128,9,4,8,16,4,9,18,128,159,128,144, + 0,96,0,16,16,32,16,0,254,85,85,128,0,1,193,134, + 48,11,233,140,24,16,5,144,4,16,5,140,24,11,233,134, + 48,1,193,128,0,0,1,170,170,15,15,30,16,1,254,1, + 0,2,128,63,248,40,40,48,24,35,136,100,76,164,74,100, + 76,35,136,48,24,40,40,63,248,2,128,1,0,3,4,4, + 16,6,9,96,160,160,96,4,5,5,16,6,9,96,144,144, + 144,96,6,3,3,16,5,10,252,48,64,3,5,5,16,6, + 9,96,224,128,128,64,9,4,8,16,4,254,18,128,159,128, + 144,0,96,0,6,2,2,16,5,10,12,240,5,4,4,8, + 2,9,24,24,16,224,7,4,4,8,1,9,32,64,128,254, + 7,4,4,16,3,9,32,64,128,254,6,4,4,16,5,9, + 16,132,132,124,15,15,30,16,1,254,1,0,2,128,5,64, + 10,160,21,80,42,168,84,84,42,168,42,168,42,168,43,168, + 40,40,47,232,96,12,255,254,5,5,5,16,5,9,32,80, + 136,80,32,5,5,5,16,5,254,32,80,136,80,32,2,2, + 2,16,7,11,192,192,2,4,4,16,7,254,192,128,128,64, + 6,9,9,8,1,3,16,40,68,0,16,8,4,132,248,7, + 11,11,8,1,255,8,20,34,0,8,4,4,4,8,144,96, + 3,3,3,8,2,5,64,224,64,4,9,9,8,2,2,128, + 128,64,64,32,32,16,16,16,5,9,9,8,2,2,136,144, + 96,64,32,32,16,16,16,7,9,9,8,1,2,146,164,120, + 64,32,32,16,16,16,6,9,9,8,1,2,48,72,192,228, + 88,64,32,32,32,7,9,9,8,1,1,16,16,40,40,68, + 68,146,170,198,6,8,8,8,1,2,56,68,64,64,48,12, + 48,192,7,9,9,8,1,2,130,130,68,68,40,40,16,16, + 16,7,9,9,8,1,2,16,16,16,40,40,68,68,130,130, + 7,9,9,8,1,2,48,72,136,152,104,4,4,2,2,7, + 12,12,8,1,0,16,0,36,0,0,2,42,42,188,144,148, + 96,7,9,9,8,1,0,8,0,0,12,50,156,144,148,96, + 6,12,12,8,1,254,16,0,0,48,72,64,56,64,144,128, + 132,120,4,10,10,8,2,254,112,128,240,64,128,0,80,80, + 80,80,6,8,8,8,1,254,56,12,124,128,148,148,148,148, + 10,12,24,16,1,1,4,0,10,0,17,0,4,0,3,0, + 6,128,10,64,10,64,6,64,25,128,96,0,128,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 3, '1' Height: 12 + Calculated Max Values w=16 h=16 x=12 y=11 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent=-2 + X Font ascent =12 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[6498] U8G_SECTION(".progmem.u8g_font_unifont_18_19") = { + 0,16,16,0,254,3,7,129,10,5,0,255,254,14,254,12, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,8,4,4,16,4,9,152,91,35, + 28,2,2,2,16,7,11,192,192,2,5,5,16,12,3,192, + 192,0,192,192,14,15,30,16,2,255,32,0,31,0,0,128, + 57,252,68,192,4,192,12,192,56,192,8,192,135,192,134,192, + 78,192,60,192,0,192,0,64,15,12,24,16,1,255,57,254, + 68,192,4,192,12,192,56,192,8,192,135,192,134,192,78,192, + 60,192,0,192,0,64,15,12,24,16,1,255,57,254,68,204, + 4,204,12,204,56,204,8,204,135,204,134,204,78,204,60,204, + 0,204,0,68,16,13,26,16,0,254,255,255,0,192,0,192, + 15,192,24,0,24,0,15,224,0,48,3,48,5,176,7,224, + 0,64,0,32,16,16,32,16,0,254,3,192,6,32,1,0, + 255,255,0,192,0,192,15,192,24,0,24,0,15,224,0,48, + 3,48,5,176,7,224,0,64,0,32,16,12,24,16,0,255, + 255,255,1,128,0,192,0,192,1,192,15,128,65,128,64,192, + 32,192,16,192,9,192,7,128,16,12,24,16,0,255,255,255, + 1,128,0,192,0,192,1,192,15,156,65,178,64,226,32,194, + 16,198,9,196,7,128,16,13,26,16,0,254,255,255,1,128, + 57,128,101,152,3,152,7,248,31,136,57,136,33,156,1,184, + 1,160,0,160,0,30,16,12,24,16,0,255,255,255,0,32, + 0,32,56,32,116,248,99,204,99,12,48,12,16,120,12,192, + 2,128,0,124,16,16,32,16,0,254,0,152,0,112,0,0, + 255,255,12,48,12,48,12,48,12,48,12,96,4,0,2,0, + 1,128,0,96,0,16,0,24,0,24,16,16,32,16,0,254, + 16,0,15,224,0,16,255,255,12,48,12,48,12,48,12,48, + 12,96,4,0,2,0,1,128,0,96,0,16,0,24,0,24, + 16,13,26,16,0,254,255,255,12,48,12,48,12,48,12,48, + 12,96,4,0,2,0,1,128,0,96,0,16,0,24,0,24, + 16,16,32,16,0,254,15,0,0,128,0,64,255,255,12,48, + 12,48,12,48,12,48,12,96,4,0,2,0,1,128,0,96, + 0,16,0,24,0,24,15,15,30,16,1,255,0,76,0,60, + 0,0,57,254,68,204,4,204,12,204,56,204,8,204,135,204, + 134,204,78,204,60,204,0,204,0,68,15,15,30,16,1,255, + 2,0,1,240,0,8,57,254,68,204,4,204,12,204,56,204, + 8,204,135,204,134,204,78,204,60,204,0,204,0,68,15,15, + 30,16,1,255,1,192,0,32,0,16,57,254,68,204,4,204, + 12,204,56,204,8,204,135,204,134,204,78,204,60,204,0,204, + 0,68,15,15,30,16,1,255,0,224,1,208,0,40,57,254, + 68,204,4,204,12,204,56,204,8,204,135,204,134,204,78,204, + 60,204,0,204,0,68,16,12,24,16,0,255,255,255,1,128, + 1,128,29,128,51,224,35,144,39,152,29,152,1,152,1,152, + 1,128,0,128,16,12,24,16,0,255,255,255,8,24,8,24, + 9,216,59,56,58,24,18,56,17,216,8,24,6,24,1,152, + 0,8,16,12,24,16,0,255,255,255,1,152,1,152,1,152, + 1,152,7,152,3,152,1,152,0,152,0,24,0,24,0,8, + 16,12,24,16,0,255,255,255,12,24,12,24,7,216,2,24, + 4,24,4,56,4,120,3,216,0,24,0,24,0,8,16,11, + 22,16,0,0,255,255,0,96,0,96,15,224,24,0,24,4, + 15,206,0,100,16,96,8,96,7,192,16,12,24,16,0,255, + 255,255,0,24,0,24,0,24,31,248,3,24,6,56,6,120, + 3,216,0,24,0,24,0,8,16,13,26,16,0,254,255,255, + 0,16,0,16,60,120,112,228,96,196,32,68,31,44,12,24, + 24,56,24,100,7,134,0,6,16,12,24,16,0,255,255,255, + 0,24,0,24,0,24,3,248,17,152,8,216,8,216,7,152, + 0,24,0,24,0,8,16,12,24,16,0,255,255,255,3,24, + 3,24,31,24,48,24,48,24,31,248,1,24,13,24,22,24, + 29,24,0,136,16,12,24,16,0,255,255,255,0,24,0,24, + 7,24,5,152,33,184,33,248,33,216,19,152,15,24,0,24, + 0,8,16,11,22,16,0,0,255,255,0,192,0,192,0,192, + 7,192,12,0,24,0,24,0,24,0,12,16,7,224,16,12, + 24,16,0,255,255,255,1,128,1,128,1,128,3,128,7,96, + 12,16,8,24,8,24,8,56,4,112,3,224,16,11,22,16, + 0,0,255,255,0,24,0,24,3,248,6,0,6,0,3,240, + 0,24,4,24,2,24,1,240,16,12,24,16,0,255,255,255, + 0,96,0,96,7,224,12,0,24,0,24,192,25,160,9,16, + 5,16,3,48,1,224,16,12,24,16,0,255,255,255,25,152, + 25,152,25,152,25,152,25,152,9,152,7,24,0,24,0,24, + 0,24,0,8,16,12,24,16,0,255,255,255,0,24,0,24, + 0,24,7,248,14,24,12,24,12,24,6,24,2,24,1,24, + 0,136,13,12,24,16,3,255,227,248,216,192,204,192,76,192, + 28,192,120,192,97,192,35,192,30,192,0,192,0,192,0,64, + 16,12,24,16,0,255,255,255,0,24,0,24,0,24,1,248, + 2,0,6,0,6,24,2,40,1,240,0,8,0,4,13,12, + 24,16,3,255,115,248,200,192,192,192,192,192,96,192,28,192, + 48,192,96,192,97,192,99,192,30,192,0,64,16,12,24,16, + 0,255,255,255,0,24,0,24,0,24,7,248,6,24,6,24, + 2,24,0,24,0,24,0,24,0,8,16,12,24,16,0,255, + 255,255,0,24,0,24,0,24,7,248,6,24,6,24,2,24, + 0,24,1,24,3,152,1,8,16,12,24,16,0,255,255,255, + 6,24,6,24,6,24,6,24,6,24,2,56,1,216,0,24, + 0,24,0,24,0,8,16,12,24,16,0,255,255,255,49,128, + 49,128,49,128,49,240,49,200,19,132,15,132,1,132,1,140, + 1,140,0,128,16,12,24,16,0,255,255,255,0,24,0,24, + 7,216,14,120,13,24,12,152,12,120,7,248,0,24,0,24, + 0,8,14,12,24,16,2,255,227,252,216,96,200,96,76,96, + 60,96,12,96,31,224,28,96,12,96,0,96,0,96,0,32, + 16,12,24,16,0,255,255,255,6,24,6,24,6,24,6,24, + 6,24,15,248,6,24,2,24,0,24,0,24,0,8,16,12, + 24,16,0,255,255,255,3,24,3,24,3,24,3,24,6,24, + 4,56,4,120,3,216,0,24,0,24,0,8,16,12,24,16, + 0,255,255,255,0,192,0,192,0,192,3,192,3,128,3,128, + 1,0,0,128,0,64,0,32,0,24,16,12,24,16,0,255, + 255,255,0,192,0,192,0,192,3,192,3,128,3,128,1,0, + 0,128,4,64,14,32,4,24,16,12,24,16,0,255,255,255, + 0,24,0,24,28,56,58,248,49,216,49,152,24,24,8,24, + 4,24,3,24,0,8,16,11,22,16,0,0,255,255,0,48, + 0,48,0,112,14,200,25,140,49,140,49,140,49,152,19,112, + 14,0,16,13,26,16,0,254,255,255,0,48,0,48,0,112, + 14,200,25,140,49,140,49,140,49,152,19,112,14,0,0,192, + 0,192,16,12,24,16,0,255,255,255,0,24,0,24,3,216, + 15,56,12,24,12,56,4,120,3,216,0,24,0,24,0,8, + 16,12,24,16,0,255,255,255,6,24,6,24,31,24,1,152, + 1,152,25,152,21,24,30,24,2,24,1,24,0,136,16,12, + 24,16,0,255,255,255,12,24,14,24,13,24,12,152,12,88, + 12,56,6,56,1,216,0,24,0,24,0,8,16,12,24,16, + 0,255,255,255,3,24,3,24,3,24,11,24,15,24,14,248, + 4,24,4,24,2,24,1,24,0,136,16,12,24,16,0,255, + 255,255,0,24,0,24,7,248,12,0,12,0,6,240,1,152, + 3,16,3,0,1,128,0,252,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 2,2,2,16,7,255,192,192,9,11,22,16,7,0,63,128, + 64,0,64,0,96,0,48,0,24,0,8,0,12,0,12,0, + 156,0,120,0,6,13,13,16,10,254,252,48,48,48,48,48, + 48,48,48,48,48,48,16,8,14,14,16,0,0,60,98,49, + 252,48,48,48,48,48,48,48,48,48,16,9,16,32,16,7, + 254,120,0,132,0,132,0,31,128,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,2, + 0,6,3,3,16,4,255,152,68,56,6,3,3,16,6,255, + 112,136,100,4,3,3,16,6,255,96,128,112,3,5,5,16, + 6,255,96,128,96,128,96,5,3,3,16,5,10,136,72,48, + 5,3,3,16,4,10,128,112,8,5,3,3,16,4,10,224, + 16,8,6,4,4,16,3,9,112,8,228,28,6,16,16,16, + 10,254,136,120,0,252,48,48,48,48,48,48,48,48,48,48, + 48,16,8,16,16,16,8,254,128,120,4,63,12,12,12,12, + 12,12,12,12,12,12,12,4,8,16,16,16,8,254,240,8, + 4,63,12,12,12,12,12,12,12,12,12,12,12,4,9,16, + 32,16,7,254,120,0,244,0,10,0,31,128,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,2,0,5,3,3,16,6,255,224,16,8,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,14,14,28,16,1,0,0,96,0,96,0, + 0,113,8,248,240,4,0,4,24,24,60,48,36,8,36,132, + 124,135,216,121,128,48,0,1,3,3,16,8,10,128,128,128, + 4,1,1,16,6,0,240,3,3,3,16,6,10,128,64,32, + 3,3,3,16,7,10,32,64,128,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,13,26,16,0,254,255,255,0,192,0, + 192,14,192,25,248,17,200,19,204,14,204,0,204,0,204,4, + 192,14,64,4,0,16,13,26,16,0,254,255,255,8,24,8, + 24,9,216,59,56,58,24,18,56,17,216,8,24,4,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,1,152,1, + 152,1,152,1,152,7,152,3,152,1,152,0,152,0,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,0,24,0, + 24,0,24,3,248,17,152,8,216,8,216,7,152,0,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,0,24,0, + 24,3,248,6,0,6,0,3,240,0,24,4,24,3,240,0, + 0,0,192,0,192,16,13,26,16,0,254,255,255,0,96,0, + 96,7,224,12,0,24,224,25,144,25,16,13,48,7,224,0, + 0,1,128,1,128,16,13,26,16,0,254,255,255,49,128,49, + 128,49,128,49,240,49,200,19,132,15,132,1,132,1,140,9, + 140,28,128,8,0,16,13,26,16,0,254,255,255,3,24,3, + 24,3,24,3,24,6,24,4,56,4,120,3,216,0,24,1, + 24,3,136,1,0,16,13,26,16,0,254,255,255,3,0,3, + 0,51,24,75,40,7,240,15,24,51,8,67,24,3,48,3, + 28,1,16,0,14,16,13,26,16,0,254,255,255,0,32,0, + 32,30,112,49,152,49,152,16,48,8,96,4,192,0,60,0, + 192,0,192,0,60,8,5,5,16,4,255,72,146,130,68,3, + 8,6,6,16,4,254,72,146,132,67,4,3,2,12,12,16, + 7,255,128,192,192,192,192,192,192,192,192,192,192,64,5,12, + 12,16,6,255,144,216,216,216,216,216,216,216,216,216,216,72, + 8,7,7,16,4,2,60,78,199,195,227,114,60,6,13,13, + 16,5,254,112,232,204,204,76,60,24,48,96,32,16,8,4, + 9,13,26,16,4,254,252,0,226,0,1,0,1,0,1,0, + 3,0,54,0,44,0,56,0,4,0,2,0,1,0,0,128, + 8,13,13,16,4,254,252,226,2,2,60,2,1,51,46,60, + 4,2,1,12,12,24,16,2,255,128,16,64,48,32,96,16, + 192,9,128,7,0,6,0,13,0,9,128,9,128,9,128,7, + 0,8,13,13,16,4,254,192,195,195,67,62,12,12,104,88, + 120,4,2,1,8,13,13,16,4,254,60,192,128,192,124,16, + 32,35,51,15,4,4,2,11,11,22,16,3,0,128,0,135, + 0,142,192,140,64,68,96,67,224,64,32,32,32,32,64,24, + 192,7,0,10,10,20,16,3,1,255,192,32,0,64,0,128, + 0,128,0,131,0,135,128,124,128,56,128,0,128,8,12,12, + 16,4,255,56,100,98,97,32,56,72,192,192,192,32,31,5, + 4,4,16,6,3,112,136,136,112,2,2,2,16,8,6,192, + 192,15,15,30,16,1,255,2,0,1,32,0,192,57,254,68, + 192,4,192,12,192,56,192,8,192,135,192,134,192,78,192,60, + 192,0,192,0,64,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,12,24,16,0,255,255,255,1,152,1, + 152,1,152,1,152,7,152,3,152,1,152,0,152,0,24,0, + 24,15,248,16,12,24,16,0,255,255,255,0,24,0,24,0, + 24,3,248,17,152,8,216,8,216,7,152,0,24,0,24,31, + 248,8,13,13,16,4,254,124,226,193,1,1,3,62,60,48, + 48,48,48,16,16,13,26,16,0,254,255,255,0,24,0,24, + 3,248,6,0,6,0,3,240,0,24,4,24,2,24,1,240, + 0,0,15,254,16,12,24,16,0,255,255,255,0,24,0,24, + 7,216,14,120,13,24,12,152,12,120,7,248,0,24,0,24, + 15,248,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,4,4,16,5,9,48,180,132,120, + 5,8,8,16,11,0,96,144,96,0,192,96,48,8,4,7, + 7,16,11,1,96,144,96,0,96,144,96,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,16, + 12,24,16,0,255,255,255,0,12,64,12,67,140,71,204,71, + 236,99,44,32,108,48,124,24,220,15,140,0,4,16,13,26, + 16,0,255,0,6,255,247,0,110,64,102,70,102,79,102,79, + 102,69,102,65,102,97,102,51,230,30,102,0,34,16,15,30, + 16,0,255,32,0,31,192,0,32,255,255,0,0,15,192,24, + 96,60,48,60,48,24,48,0,96,63,192,7,0,1,192,0, + 124,16,15,30,16,0,255,32,0,31,240,0,8,255,255,30, + 0,63,12,59,30,25,56,1,248,1,240,3,144,79,16,60, + 16,16,24,0,14,16,15,30,16,0,255,16,0,15,224,0, + 16,255,255,3,0,3,0,67,0,67,16,67,56,99,108,33, + 204,48,12,24,12,14,24,3,240,16,15,30,16,0,255,16, + 0,15,224,0,16,255,255,3,0,3,0,83,0,83,16,83, + 56,83,108,73,204,40,12,36,12,18,24,15,240,15,14,28, + 16,1,255,64,0,228,0,230,206,133,204,121,204,3,204,14, + 204,120,204,96,236,120,252,14,220,3,204,1,204,0,68,14, + 14,28,16,1,255,64,0,128,0,128,0,64,0,127,192,31, + 240,0,56,15,12,24,140,56,76,56,76,56,76,16,216,3, + 240,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,14,13,26,16,1,255,0, + 48,0,248,1,140,3,12,135,140,135,140,131,12,128,12,192, + 12,64,108,96,156,51,12,14,4,14,15,30,16,1,255,0, + 8,0,16,0,16,0,216,3,236,6,52,140,52,158,52,158, + 52,140,56,192,48,65,176,98,112,60,48,24,16,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,14,13,26,16,1,255,0,240,3,24,6, + 12,14,12,142,12,134,120,192,248,64,120,96,12,48,12,24, + 12,12,24,7,240,14,15,30,16,1,255,0,8,0,16,0, + 16,7,216,8,108,28,52,28,52,156,52,137,228,131,248,193, + 224,64,48,96,48,48,112,31,224,16,12,24,16,0,255,255, + 255,0,96,0,96,1,248,7,100,60,98,48,98,60,110,7, + 108,1,224,0,224,0,32,14,13,26,16,2,255,64,0,226, + 60,227,48,197,48,121,48,1,48,6,48,120,48,126,48,1, + 176,0,112,0,48,0,16,14,12,24,16,2,255,62,124,113, + 96,224,224,224,96,252,96,70,96,6,96,6,96,28,96,120, + 96,32,96,0,32,16,12,24,16,0,255,255,255,24,24,48, + 24,56,24,31,152,1,152,6,24,12,24,31,24,1,216,0, + 56,0,8,12,13,26,16,2,255,32,0,35,192,22,64,12, + 64,15,128,140,0,136,32,136,112,199,176,64,48,96,48,48, + 96,31,128,16,12,24,16,0,255,255,255,24,0,24,0,28, + 0,27,0,24,252,24,12,24,12,24,12,24,24,28,48,15, + 192,16,12,24,16,0,255,255,255,24,0,24,0,28,0,27, + 224,24,56,24,104,28,200,15,16,0,96,1,248,0,14,16, + 12,24,16,0,255,255,255,1,240,3,28,70,15,76,2,76, + 196,79,36,102,44,32,44,48,100,24,196,15,131,16,12,24, + 16,0,255,255,231,0,102,0,102,1,230,7,102,60,102,48, + 102,60,102,7,126,1,238,0,230,0,34,14,13,26,16,1, + 255,7,0,13,128,25,176,49,248,57,204,185,140,145,184,129, + 140,193,204,199,248,111,176,121,128,48,128,16,15,30,16,0, + 255,16,0,15,192,0,32,255,255,24,0,24,0,24,0,24, + 96,24,240,24,112,24,48,24,96,24,192,15,128,7,0,16, + 15,30,16,0,255,16,0,15,0,0,128,255,255,0,128,0, + 128,0,192,1,192,1,96,35,48,58,24,20,24,24,24,12, + 48,7,224,16,12,24,16,0,255,255,255,3,0,3,0,67, + 0,67,16,67,56,99,108,33,204,48,12,24,12,14,24,3, + 240,16,12,24,16,0,255,255,255,24,0,24,0,24,0,24, + 96,24,240,24,112,24,48,24,96,24,192,15,128,7,0,13, + 13,26,16,3,255,28,96,62,120,97,96,192,224,192,224,224, + 96,224,96,64,96,0,96,0,96,0,96,0,96,0,32,16, + 12,24,16,0,255,255,255,0,0,65,248,67,12,67,132,67, + 134,99,134,33,6,48,6,24,12,12,28,7,240,15,13,26, + 16,1,255,60,0,98,62,241,48,241,48,97,48,1,48,6, + 48,120,48,126,48,1,176,0,112,0,48,0,16,16,12,24, + 16,0,255,255,255,12,0,12,0,12,120,12,240,13,224,13, + 96,15,96,14,96,14,96,12,48,8,28,12,13,26,16,4, + 255,96,0,240,240,224,192,128,192,99,192,30,192,56,192,224, + 192,248,192,14,192,3,192,1,192,0,64,16,12,24,16,0, + 255,255,255,0,24,0,24,0,24,0,24,30,24,63,152,60, + 216,56,120,0,56,0,24,0,8,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,15,13,26, + 16,1,255,14,48,31,190,48,240,96,112,240,240,155,176,14, + 48,24,48,32,48,0,48,0,48,0,48,0,16,16,12,24, + 16,0,255,255,255,16,0,56,120,12,100,6,98,12,98,24, + 110,48,108,63,96,1,224,0,96,0,32,16,12,24,16,0, + 255,255,255,0,24,0,24,0,120,3,216,7,24,28,24,31, + 24,1,216,0,120,0,56,0,8,16,12,24,16,0,255,255, + 255,0,0,66,16,71,8,71,12,70,20,99,230,32,6,48, + 6,24,12,12,28,7,240,16,12,24,16,0,255,255,255,12, + 24,28,24,14,24,3,24,3,24,3,24,15,216,30,120,12, + 56,0,24,0,8,16,12,24,16,0,255,255,255,8,48,28, + 48,6,48,3,48,6,48,12,48,24,48,31,176,0,240,0, + 48,0,16,16,12,24,16,0,255,255,255,0,24,0,120,3, + 216,7,24,28,24,31,24,1,216,2,120,7,56,7,24,2, + 8,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,12,24,16,0,255,255,255,0,6,0, + 6,28,22,62,62,99,102,65,198,65,198,64,134,124,6,60, + 6,24,2,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,15, + 13,26,16,1,255,112,204,249,238,143,60,143,28,31,140,63, + 204,25,140,0,12,0,12,0,12,0,12,0,12,0,4,16, + 12,24,16,0,255,255,255,28,24,14,24,7,152,1,216,6, + 120,28,24,31,24,1,216,0,120,0,56,0,8,16,12,24, + 16,0,255,255,255,16,12,56,12,28,12,6,12,2,204,1, + 236,3,28,102,12,60,12,24,12,0,4,16,12,24,16,0, + 255,255,255,0,0,15,192,24,96,60,48,60,48,24,48,0, + 96,63,192,7,0,1,192,0,124,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,2,2,2,16,7,255,192,192,14,12,24,16,0,255,240, + 0,8,0,15,192,28,96,60,48,60,48,24,48,0,96,63, + 192,7,0,1,192,0,124,5,10,10,16,11,255,48,184,112, + 48,48,48,48,48,48,16,13,14,28,16,0,255,15,128,63, + 224,96,16,96,8,32,0,248,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,16,0,12,14,28,16,4,255,63, + 0,65,128,128,192,190,64,65,64,1,240,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,64,6,5,5,16,5, + 254,4,104,144,104,4,6,5,5,16,6,254,96,128,112,8, + 4,5,5,5,16,5,254,24,96,128,96,24,3,5,5,16, + 6,255,96,128,96,128,64,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,5, + 9,9,16,0,255,248,24,48,96,64,64,64,88,56,5,12, + 12,16,0,255,128,112,8,248,24,48,96,64,64,64,88,56, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,16,10,20,16,0,255,0,6, + 248,23,24,14,48,6,96,6,64,6,64,6,64,6,88,6, + 56,2,16,13,26,16,0,255,0,128,0,112,0,8,0,4, + 248,23,24,14,48,6,96,6,64,6,64,6,64,6,88,6, + 56,2,5,3,3,16,6,0,192,48,8,8,12,12,16,4, + 255,56,92,204,236,216,192,96,56,12,6,3,1,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,8,13,13, + 16,8,255,128,112,8,4,23,14,6,6,6,6,6,6,2, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 16,13,26,16,0,254,255,255,3,0,67,16,67,56,99,108, + 35,204,49,140,24,12,14,24,3,240,0,0,0,192,0,192, + 16,13,26,16,0,254,255,255,12,0,12,0,12,0,12,48, + 12,120,12,56,12,48,7,224,3,192,0,0,1,128,1,128, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,16,13,26,16,0,254,255,255,4,24,14,24, + 3,24,1,152,3,24,6,24,12,24,15,216,0,120,1,24, + 3,136,1,0,15,15,30,16,1,254,64,0,228,0,230,206, + 133,204,121,204,3,204,14,204,120,204,96,236,120,252,14,220, + 123,204,97,204,120,68,14,0,8,14,14,16,4,255,128,124, + 3,121,197,205,158,128,124,3,121,197,205,158,7,5,5,16, + 5,255,124,2,114,202,220,10,6,12,16,5,255,3,128,112, + 64,10,64,77,64,173,128,176,0,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,10,11,22,16,3,0,30,0,63,0,97,128,192,192,192, + 192,192,192,192,192,192,192,97,128,63,0,30,0,9,12,24, + 16,4,0,64,0,64,0,96,0,56,0,14,0,3,0,1, + 128,97,128,225,128,225,128,195,0,126,0,10,11,22,16,3, + 0,224,0,56,0,14,0,3,0,3,0,227,0,126,0,28, + 0,6,0,1,128,0,64,12,12,24,16,2,255,131,192,132, + 96,136,48,140,48,142,48,142,48,134,48,64,48,64,96,32, + 96,17,192,15,0,11,13,26,16,2,255,31,0,63,128,96, + 192,64,64,96,192,49,128,31,0,96,192,192,96,192,96,224, + 224,127,192,31,0,11,13,26,16,2,255,7,0,30,0,57, + 96,112,192,97,128,195,0,198,0,198,0,198,0,198,0,99, + 96,48,192,31,128,12,12,24,16,2,255,28,0,12,0,12, + 0,140,0,140,96,140,160,141,176,199,48,64,48,96,48,48, + 96,31,192,9,13,26,16,4,255,60,0,126,0,195,0,195, + 0,199,0,127,0,59,0,3,0,3,0,3,0,3,0,3, + 0,1,128,13,13,26,16,1,255,224,0,96,0,96,0,96, + 8,103,240,127,192,112,96,96,96,96,96,96,96,112,192,63, + 128,30,0,12,15,30,16,2,254,128,0,128,0,96,0,60, + 0,15,0,3,192,0,224,0,48,60,48,66,48,225,48,225, + 48,225,96,65,192,1,0,16,12,24,16,0,255,255,255,0, + 24,0,24,0,120,3,216,7,152,28,120,31,24,1,216,0, + 120,0,56,0,8,16,13,26,16,0,254,255,255,0,24,0, + 24,0,120,3,216,7,24,28,24,31,24,1,216,28,120,7, + 56,1,136,0,64,9,8,16,16,3,3,224,0,248,0,124, + 0,14,0,3,0,1,0,0,128,0,128,12,13,26,16,1, + 255,48,0,120,0,204,0,12,0,31,240,12,0,12,96,12, + 240,12,240,12,48,12,96,7,192,3,128,9,8,16,16,3, + 2,0,128,0,128,1,0,3,0,14,0,124,0,248,0,224, + 0,12,9,18,16,2,2,56,16,124,16,226,32,242,96,242, + 192,98,192,7,128,15,0,14,0,12,13,26,16,2,255,0, + 16,0,16,0,16,56,16,124,16,126,16,62,16,6,48,12, + 96,248,224,193,192,127,128,30,0,2,13,13,16,8,255,128, + 192,192,192,192,192,192,192,192,192,192,192,64,11,13,26,16, + 2,255,224,0,96,0,96,192,97,192,99,192,98,192,102,192, + 108,192,120,192,112,192,96,192,0,192,0,96,11,10,20,16, + 3,1,31,0,63,128,96,192,192,96,192,96,192,96,192,96, + 96,192,63,128,31,0,14,9,18,16,1,255,0,4,2,4, + 135,8,135,8,66,16,96,48,48,96,31,192,15,0,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255, + 168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 8 + Calculated Max Values w=16 h=16 x= 4 y= 1 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[4628] U8G_SECTION(".progmem.u8g_font_unifont_2_3") = { + 0,16,16,0,254,10,4,220,7,27,0,255,0,14,254,14, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,6,11,11,8,1,0,120,0,0, + 120,132,4,124,132,132,140,116,6,14,14,8,1,0,132,132, + 120,0,48,72,72,132,132,252,132,132,132,132,6,13,13,8, + 1,0,132,132,120,0,0,120,132,4,124,132,132,140,116,7, + 12,12,8,1,254,48,72,72,132,132,252,132,132,132,132,8, + 6,7,10,10,8,1,254,120,132,4,124,132,132,140,116,8, + 6,6,14,14,8,1,0,24,96,0,0,120,132,132,128,128, + 128,128,132,132,120,6,12,12,8,1,0,24,96,0,0,120, + 132,128,128,128,128,132,120,6,14,14,8,1,0,48,72,0, + 0,120,132,132,128,128,128,128,132,132,120,6,12,12,8,1, + 0,48,72,0,0,120,132,128,128,128,128,132,120,6,14,14, + 8,1,0,32,32,0,0,120,132,132,128,128,128,128,132,132, + 120,6,12,12,8,1,0,32,32,0,0,120,132,128,128,128, + 128,132,120,6,14,14,8,1,0,72,48,0,0,120,132,132, + 128,128,128,128,132,132,120,6,12,12,8,1,0,72,48,0, + 0,120,132,128,128,128,128,132,120,6,14,14,8,1,0,144, + 96,0,0,240,136,132,132,132,132,132,132,136,240,6,14,14, + 8,1,0,72,48,0,4,4,4,116,140,132,132,132,132,140, + 116,7,10,10,8,0,0,120,68,66,66,242,66,66,66,68, + 120,7,12,12,8,1,0,4,30,4,4,116,140,132,132,132, + 132,140,116,6,13,13,8,1,0,120,0,0,252,128,128,128, + 248,128,128,128,128,252,6,11,11,8,1,0,120,0,0,120, + 132,132,252,128,128,132,120,6,14,14,8,1,0,132,132,120, + 0,252,128,128,128,248,128,128,128,128,252,6,12,12,8,1, + 0,132,132,120,0,120,132,132,252,128,128,132,120,6,14,14, + 8,1,0,32,32,0,0,252,128,128,128,248,128,128,128,128, + 252,6,12,12,8,1,0,32,32,0,0,120,132,132,252,128, + 128,132,120,6,12,12,8,1,254,252,128,128,128,248,128,128, + 128,128,252,16,12,6,10,10,8,1,254,120,132,132,252,128, + 128,132,120,32,24,6,14,14,8,1,0,72,48,0,0,252, + 128,128,128,248,128,128,128,128,252,6,12,12,8,1,0,72, + 48,0,0,120,132,132,252,128,128,132,120,6,14,14,8,1, + 0,48,72,0,0,120,132,132,128,128,156,132,132,140,116,6, + 14,14,8,1,254,48,72,0,4,116,136,136,136,112,64,120, + 132,132,120,6,14,14,8,1,0,132,132,120,0,120,132,132, + 128,128,156,132,132,140,116,6,15,15,8,1,254,132,132,120, + 0,4,116,136,136,136,112,64,120,132,132,120,6,14,14,8, + 1,0,32,32,0,0,120,132,132,128,128,156,132,132,140,116, + 6,14,14,8,1,254,32,32,0,4,116,136,136,136,112,64, + 120,132,132,120,6,12,12,8,1,254,120,132,132,128,128,156, + 132,132,140,116,16,96,6,14,14,8,1,254,24,32,0,4, + 116,136,136,136,112,64,120,132,132,120,6,14,14,8,1,0, + 48,72,0,0,132,132,132,132,252,132,132,132,132,132,6,14, + 14,8,1,0,96,144,0,128,128,128,184,196,132,132,132,132, + 132,132,8,10,10,8,0,0,66,66,255,66,66,126,66,66, + 66,66,7,11,11,8,0,1,64,240,64,64,92,98,66,66, + 66,66,66,6,14,14,8,1,0,100,152,0,0,124,16,16, + 16,16,16,16,16,16,124,6,12,12,8,1,0,100,152,0, + 0,48,16,16,16,16,16,16,124,5,13,13,8,2,0,240, + 0,0,248,32,32,32,32,32,32,32,32,248,5,11,11,8, + 2,0,240,0,0,96,32,32,32,32,32,32,248,6,14,14, + 8,1,0,132,132,120,0,124,16,16,16,16,16,16,16,16, + 124,6,12,12,8,1,0,132,132,120,0,48,16,16,16,16, + 16,16,124,5,12,12,8,2,254,248,32,32,32,32,32,32, + 32,32,248,32,24,5,13,13,8,2,254,32,32,0,96,32, + 32,32,32,32,32,248,32,24,5,14,14,8,2,0,32,32, + 0,0,248,32,32,32,32,32,32,32,32,248,5,8,8,8, + 2,0,96,32,32,32,32,32,32,248,6,10,10,8,1,0, + 132,132,132,132,132,132,4,4,132,120,5,14,14,8,2,254, + 136,136,0,0,136,136,136,136,136,136,104,8,136,112,7,14, + 14,8,1,0,24,36,0,0,62,8,8,8,8,8,8,136, + 136,112,6,14,14,8,1,254,24,36,0,0,24,8,8,8, + 8,8,8,8,144,96,7,12,12,8,0,254,66,68,72,80, + 96,96,80,72,68,66,32,192,7,12,12,8,0,254,64,64, + 68,72,80,96,80,72,68,66,32,192,6,8,8,8,1,0, + 132,136,144,224,224,144,136,132,6,14,14,8,1,0,48,192, + 0,0,128,128,128,128,128,128,128,128,128,252,5,14,14,8, + 2,0,48,192,0,0,96,32,32,32,32,32,32,32,32,248, + 6,12,12,8,1,254,128,128,128,128,128,128,128,128,128,252, + 16,96,5,12,12,8,2,254,96,32,32,32,32,32,32,32, + 32,248,32,192,6,14,14,8,1,0,72,48,0,0,128,128, + 128,128,128,128,128,128,128,252,5,14,14,8,2,0,144,96, + 0,0,96,32,32,32,32,32,32,32,32,248,6,10,10,8, + 1,0,128,128,128,128,136,136,128,128,128,252,5,10,10,8, + 1,0,96,32,32,32,40,40,32,32,32,248,7,10,10,8, + 0,0,64,64,72,80,96,192,64,64,64,126,5,10,10,8, + 2,0,96,32,40,48,96,160,32,32,32,248,6,14,14,8, + 1,0,24,96,0,0,132,196,196,164,164,148,148,140,140,132, + 6,12,12,8,1,0,24,96,0,0,184,196,132,132,132,132, + 132,132,7,12,12,8,0,254,66,98,98,82,82,74,74,70, + 70,66,32,192,7,10,10,8,0,254,92,98,66,66,66,66, + 66,66,32,192,6,14,14,8,1,0,72,48,0,0,132,196, + 196,164,164,148,148,140,140,132,6,12,12,8,1,0,72,48, + 0,0,184,196,132,132,132,132,132,132,6,13,13,8,1,0, + 192,64,64,128,0,184,196,132,132,132,132,132,132,6,10,10, + 8,1,0,184,196,132,132,132,132,132,132,132,152,6,10,10, + 8,1,254,184,196,132,132,132,132,132,132,4,24,6,13,13, + 8,1,0,120,0,0,120,132,132,132,132,132,132,132,132,120, + 6,11,11,8,1,0,120,0,0,120,132,132,132,132,132,132, + 120,6,14,14,8,1,0,132,132,120,0,120,132,132,132,132, + 132,132,132,132,120,6,12,12,8,1,0,132,132,120,0,120, + 132,132,132,132,132,132,120,7,14,14,8,1,0,102,136,0, + 0,120,132,132,132,132,132,132,132,132,120,7,12,12,8,1, + 0,102,136,0,0,120,132,132,132,132,132,132,120,7,10,10, + 8,1,0,110,144,144,144,156,144,144,144,144,110,7,8,8, + 8,1,0,108,146,146,158,144,144,146,108,6,14,14,8,1, + 0,24,96,0,0,248,132,132,132,248,144,136,136,132,132,6, + 12,12,8,1,0,24,96,0,0,184,196,132,128,128,128,128, + 128,7,12,12,8,0,254,124,66,66,66,124,72,68,68,66, + 66,32,192,7,10,10,8,0,254,92,98,66,64,64,64,64, + 64,32,192,6,14,14,8,1,0,72,48,0,0,248,132,132, + 132,248,144,136,136,132,132,6,12,12,8,1,0,72,48,0, + 0,184,196,132,128,128,128,128,128,6,14,14,8,1,0,24, + 96,0,0,120,132,132,128,96,24,4,132,132,120,6,12,12, + 8,1,0,24,96,0,0,120,132,128,96,24,132,132,120,6, + 14,14,8,1,0,48,72,0,0,120,132,132,128,96,24,4, + 132,132,120,6,12,12,8,1,0,48,72,0,0,120,132,128, + 96,24,4,132,120,6,12,12,8,1,254,120,132,132,128,96, + 24,4,132,132,120,16,96,6,10,10,8,1,254,120,132,128, + 96,24,4,132,120,16,96,6,14,14,8,1,0,72,48,0, + 0,120,132,132,128,96,24,4,132,132,120,6,12,12,8,1, + 0,72,48,0,0,120,132,128,96,24,4,132,120,7,12,12, + 8,1,254,254,16,16,16,16,16,16,16,16,16,16,96,5, + 12,12,8,1,254,32,32,248,32,32,32,32,32,32,24,16, + 96,7,14,14,8,1,0,72,48,0,0,254,16,16,16,16, + 16,16,16,16,16,5,14,14,8,1,0,72,48,0,0,32, + 32,248,32,32,32,32,32,32,24,7,10,10,8,1,0,254, + 16,16,20,24,48,80,16,16,16,5,10,10,8,1,0,32, + 32,248,32,40,48,96,160,32,24,6,14,14,8,1,0,100, + 152,0,0,132,132,132,132,132,132,132,132,132,120,6,12,12, + 8,1,0,100,152,0,0,132,132,132,132,132,132,140,116,6, + 13,13,8,1,0,120,0,0,132,132,132,132,132,132,132,132, + 132,120,6,11,11,8,1,0,120,0,0,132,132,132,132,132, + 132,140,116,6,14,14,8,1,0,132,132,120,0,132,132,132, + 132,132,132,132,132,132,120,6,13,13,8,1,0,132,132,120, + 0,0,132,132,132,132,132,132,140,116,6,14,14,8,1,0, + 48,72,48,0,132,132,132,132,132,132,132,132,132,120,6,12, + 12,8,1,0,48,72,48,0,132,132,132,132,132,132,140,116, + 7,14,14,8,1,0,102,136,0,0,132,132,132,132,132,132, + 132,132,132,120,7,12,12,8,1,0,102,136,0,0,132,132, + 132,132,132,132,140,116,6,12,12,8,1,254,132,132,132,132, + 132,132,132,132,132,120,32,24,7,10,10,8,1,254,132,132, + 132,132,132,132,140,116,8,6,6,14,14,8,1,0,48,72, + 0,0,132,132,132,132,180,180,204,204,132,132,7,12,12,8, + 1,0,48,72,0,0,130,146,146,146,146,146,146,108,7,14, + 14,8,1,0,48,72,0,0,130,130,68,68,40,16,16,16, + 16,16,6,14,14,8,1,254,48,72,0,0,132,132,132,132, + 132,76,52,4,4,120,7,14,14,8,1,0,72,72,0,0, + 130,130,68,68,40,16,16,16,16,16,6,14,14,8,1,0, + 24,96,0,0,252,4,4,8,16,32,64,128,128,252,6,12, + 12,8,1,0,24,96,0,0,252,4,8,16,32,64,128,252, + 6,14,14,8,1,0,32,32,0,0,252,4,4,8,16,32, + 64,128,128,252,6,12,12,8,1,0,32,32,0,0,252,4, + 8,16,32,64,128,252,6,14,14,8,1,0,72,48,0,0, + 252,4,4,8,16,32,64,128,128,252,6,12,12,8,1,0, + 72,48,0,0,252,4,8,16,32,64,128,252,4,11,11,8, + 2,0,48,64,64,64,192,64,64,64,64,64,64,7,11,11, + 8,0,0,64,240,64,92,98,66,66,66,66,98,92,7,10, + 10,8,0,0,124,162,162,34,60,34,34,34,34,60,6,10, + 10,8,1,0,252,128,128,128,248,132,132,132,132,248,6,10, + 10,8,1,0,252,128,128,184,196,132,132,132,196,184,6,10, + 10,8,1,0,192,64,64,64,120,68,68,68,68,120,6,8, + 8,8,1,0,192,64,64,64,120,68,68,120,6,10,10,8, + 1,0,120,132,132,4,4,4,4,132,132,248,7,12,12,8, + 1,0,6,8,120,136,136,128,128,128,128,136,136,112,7,10, + 10,8,1,0,6,8,120,136,128,128,128,128,136,112,7,10, + 10,8,0,0,120,68,66,66,242,66,66,66,68,120,7,10, + 10,8,0,0,120,164,162,34,34,34,34,34,36,56,6,10, + 10,8,1,0,252,4,4,4,124,132,132,132,132,124,6,10, + 10,8,1,0,252,4,4,116,140,132,132,132,140,116,6,10, + 10,8,1,254,120,132,132,132,132,72,48,8,8,112,6,10, + 10,8,1,0,252,4,4,4,124,4,4,4,4,252,6,10, + 10,8,1,0,48,72,132,4,4,252,132,132,72,48,6,10, + 10,8,1,0,120,132,132,128,112,128,128,132,132,120,7,11, + 11,8,1,255,62,32,32,32,60,32,32,32,32,32,192,5, + 12,12,8,1,255,24,32,32,32,248,32,32,32,32,32,32, + 192,7,11,11,8,1,0,6,120,136,136,128,128,184,136,136, + 152,104,6,10,10,8,1,0,132,132,132,72,72,48,48,72, + 72,48,6,11,11,8,1,0,128,128,128,128,228,148,148,148, + 148,148,136,5,10,10,8,1,0,224,32,32,32,32,32,32, + 32,32,24,5,10,10,8,2,0,248,32,32,32,248,32,32, + 32,32,248,6,10,10,8,1,0,140,148,160,160,192,192,160, + 144,136,132,6,11,11,8,1,0,96,128,128,136,144,160,192, + 160,144,136,132,5,10,10,8,2,0,96,32,32,32,248,32, + 32,32,32,248,6,10,10,8,1,0,72,80,32,96,144,48, + 72,72,132,132,7,10,10,8,1,0,146,146,146,146,146,146, + 146,146,146,110,7,11,11,8,0,255,34,34,50,50,42,42, + 38,38,34,34,192,6,10,10,8,1,254,184,196,132,132,132, + 132,132,132,4,4,6,10,10,8,1,0,120,132,132,132,252, + 132,132,132,132,120,6,11,11,8,1,0,4,116,136,136,136, + 136,136,136,136,136,112,6,9,9,8,1,0,4,116,136,136, + 136,136,136,136,112,6,12,12,8,1,254,108,148,148,148,148, + 148,148,148,148,100,4,4,6,10,10,8,1,254,108,148,148, + 148,148,148,148,100,4,4,7,10,10,8,1,0,124,162,162, + 34,60,32,32,32,32,32,7,11,11,8,1,254,6,184,200, + 136,136,136,136,200,176,128,128,7,10,10,8,1,0,224,64, + 120,68,68,120,80,72,68,66,6,10,10,8,1,0,120,132, + 132,4,24,96,128,132,132,120,6,8,8,8,1,0,120,132, + 4,24,96,128,132,120,6,10,10,8,1,0,252,128,64,32, + 16,16,32,64,128,252,5,12,12,8,1,255,64,160,160,96, + 32,32,32,32,32,32,32,24,5,12,12,8,1,254,32,32, + 248,32,32,32,32,32,32,24,8,48,7,10,10,8,1,0, + 126,144,144,16,16,16,16,16,16,16,5,11,11,8,1,0, + 24,32,32,32,248,32,32,32,32,32,24,7,11,11,8,1, + 255,254,16,16,16,16,16,16,16,16,16,12,7,12,12,8, + 1,0,2,2,140,136,136,136,136,136,136,136,136,112,7,10, + 10,8,1,0,2,2,140,136,136,136,136,136,152,104,6,10, + 10,8,1,0,132,72,72,132,132,132,132,132,72,48,6,10, + 10,8,1,0,152,132,132,132,132,132,132,136,144,96,7,10, + 10,8,1,0,98,162,34,20,20,8,8,8,8,8,7,11, + 11,8,1,254,6,136,136,136,136,136,72,56,8,8,112,6, + 10,10,8,1,0,252,4,8,16,120,32,64,128,128,252,6, + 8,8,8,1,0,252,8,16,120,32,64,128,252,6,10,10, + 8,1,0,252,8,16,32,56,4,4,4,140,120,6,10,10, + 8,1,0,252,64,32,16,112,128,128,128,196,120,6,10,10, + 8,1,254,248,64,32,16,112,128,128,128,132,120,6,10,10, + 8,1,254,124,8,16,56,4,4,120,128,132,120,6,10,10, + 8,1,0,120,132,132,8,16,252,64,128,128,252,6,10,10, + 8,1,0,252,64,64,64,120,4,4,4,132,120,6,8,8, + 8,1,0,252,64,64,120,4,4,132,120,5,10,10,8,1, + 0,32,32,248,32,32,48,8,8,136,112,6,10,10,8,1, + 254,184,196,132,132,136,144,160,192,128,128,1,11,11,8,3, + 0,128,128,128,128,128,128,128,128,128,128,128,3,11,11,8, + 2,0,160,160,160,160,160,160,160,160,160,160,160,5,11,11, + 8,1,0,32,32,32,32,248,32,248,32,32,32,32,1,10, + 10,8,4,0,128,128,128,128,128,128,128,0,128,128,7,14, + 14,8,1,0,10,4,0,0,206,162,162,162,164,164,168,168, + 168,206,7,12,12,8,1,0,10,4,192,160,174,162,162,164, + 164,168,168,206,7,12,12,8,1,0,10,36,32,32,110,162, + 162,164,164,168,168,110,7,10,10,8,1,0,142,130,130,130, + 130,130,130,146,146,236,7,13,13,8,1,254,2,130,128,134, + 130,130,130,130,130,130,242,4,24,8,13,13,8,0,254,1, + 97,32,35,33,33,33,33,33,33,249,2,12,7,10,10,8, + 1,0,150,146,146,210,210,178,178,154,154,148,7,13,13,8, + 1,254,2,146,144,214,210,210,178,178,178,146,146,36,24,7, + 13,13,8,1,254,2,2,0,166,210,146,146,146,146,146,146, + 36,24,6,14,14,8,1,0,72,48,0,0,48,72,72,132, + 132,252,132,132,132,132,6,12,12,8,1,0,72,48,0,0, + 120,132,4,124,132,132,140,116,5,14,14,8,2,0,144,96, + 0,0,248,32,32,32,32,32,32,32,32,248,5,12,12,8, + 2,0,144,96,0,0,96,32,32,32,32,32,32,248,6,14, + 14,8,1,0,72,48,0,0,120,132,132,132,132,132,132,132, + 132,120,6,12,12,8,1,0,72,48,0,0,120,132,132,132, + 132,132,132,120,6,14,14,8,1,0,72,48,0,0,132,132, + 132,132,132,132,132,132,132,120,6,12,12,8,1,0,72,48, + 0,0,132,132,132,132,132,132,140,116,6,14,14,8,1,0, + 120,0,72,0,132,132,132,132,132,132,132,132,132,120,6,13, + 13,8,1,0,120,0,72,72,0,132,132,132,132,132,132,140, + 116,6,14,14,8,1,0,24,96,0,72,0,132,132,132,132, + 132,132,132,132,120,6,14,14,8,1,0,24,96,0,72,72, + 0,132,132,132,132,132,132,140,116,6,14,14,8,1,0,72, + 48,0,72,0,132,132,132,132,132,132,132,132,120,6,14,14, + 8,1,0,72,48,0,72,72,0,132,132,132,132,132,132,140, + 116,6,14,14,8,1,0,96,24,0,72,0,132,132,132,132, + 132,132,132,132,120,6,14,14,8,1,0,96,24,0,72,72, + 0,132,132,132,132,132,132,140,116,6,8,8,8,1,0,120, + 132,4,4,252,132,132,120,6,14,14,8,1,0,120,0,72, + 0,48,72,72,132,132,252,132,132,132,132,6,13,13,8,1, + 0,120,0,72,72,0,120,132,4,124,132,132,140,116,6,14, + 14,8,1,0,120,0,48,0,48,72,72,132,132,252,132,132, + 132,132,6,13,13,8,1,0,120,0,32,32,0,120,132,4, + 124,132,132,140,116,7,13,13,8,1,0,120,0,0,62,80, + 144,144,254,144,144,144,144,158,7,11,11,8,1,0,120,0, + 0,124,146,18,126,144,144,146,124,7,10,10,8,1,0,120, + 132,132,128,128,156,132,158,132,124,7,11,11,8,1,254,4, + 116,136,136,136,112,64,120,158,132,120,6,14,14,8,1,0, + 72,48,0,0,120,132,132,128,128,156,132,132,140,116,6,14, + 14,8,1,254,72,48,0,4,116,136,136,136,112,64,120,132, + 132,120,6,14,14,8,1,0,72,48,0,0,132,136,144,160, + 192,192,160,144,136,132,6,14,14,8,1,0,144,96,0,0, + 128,128,136,144,160,192,160,144,136,132,6,12,12,8,1,254, + 120,132,132,132,132,132,132,132,132,120,32,24,6,10,10,8, + 1,254,120,132,132,132,132,132,132,120,32,24,6,15,15,8, + 1,254,120,0,0,120,132,132,132,132,132,132,132,132,120,32, + 24,6,13,13,8,1,254,120,0,0,120,132,132,132,132,132, + 132,120,32,24,6,14,14,8,1,0,72,48,0,0,252,8, + 16,32,56,4,4,4,140,120,6,14,14,8,1,254,72,48, + 0,0,124,8,16,32,56,4,4,4,132,120,6,14,14,8, + 1,254,36,24,0,0,24,8,8,8,8,8,8,8,144,96, + 7,10,10,8,1,0,206,162,162,162,164,164,168,168,168,206, + 7,10,10,8,1,0,192,160,174,162,162,164,164,168,168,206, + 7,11,11,8,1,0,32,32,32,110,162,162,164,164,168,168, + 110,6,14,14,8,1,0,24,96,0,0,120,132,132,128,128, + 156,132,132,140,116,6,14,14,8,1,254,24,96,0,4,116, + 136,136,136,112,64,120,132,132,120,6,10,10,8,1,0,144, + 144,144,148,244,148,148,148,148,136,6,11,11,8,1,255,184, + 196,132,132,136,144,160,192,128,128,128,6,13,13,8,1,0, + 96,24,0,132,196,196,164,164,148,148,140,140,132,6,11,11, + 8,1,0,96,24,0,184,196,132,132,132,132,132,132,6,14, + 14,8,1,0,24,96,48,72,48,48,72,72,132,252,132,132, + 132,132,6,14,14,8,1,0,24,96,0,48,72,48,0,120, + 132,4,124,132,140,116,7,14,14,8,1,0,12,48,0,0, + 62,80,144,144,254,144,144,144,144,158,7,12,12,8,1,0, + 12,48,0,0,124,146,18,126,144,144,146,124,6,15,15,8, + 1,255,24,96,0,4,116,136,140,148,148,164,164,196,68,184, + 128,6,13,13,8,1,255,24,96,0,4,120,140,148,148,164, + 164,196,120,128}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y=10 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =12 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[3783] U8G_SECTION(".progmem.u8g_font_unifont_4_5") = { + 0,16,16,0,254,10,4,176,6,163,0,255,0,14,254,12, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,7,12,12,8,0,0,204,34,0, + 0,60,66,2,62,66,66,70,58,6,14,14,8,1,0,120, + 132,132,0,48,72,72,132,132,252,132,132,132,132,6,12,12, + 8,1,0,120,132,132,0,120,132,4,124,132,132,140,116,7, + 14,14,8,0,0,204,34,0,0,126,64,64,64,124,64,64, + 64,64,126,7,12,12,8,0,0,204,34,0,0,60,66,66, + 126,64,64,66,60,6,14,14,8,1,0,120,132,132,0,252, + 128,128,128,248,128,128,128,128,252,6,12,12,8,1,0,120, + 132,132,0,120,132,132,252,128,128,132,120,7,14,14,8,0, + 0,204,34,0,0,62,8,8,8,8,8,8,8,8,62,7, + 12,12,8,0,0,204,34,0,0,24,8,8,8,8,8,8, + 62,6,14,14,8,1,0,120,132,132,0,124,16,16,16,16, + 16,16,16,16,124,6,12,12,8,1,0,120,132,132,0,48, + 16,16,16,16,16,16,124,7,14,14,8,0,0,204,34,0, + 0,60,66,66,66,66,66,66,66,66,60,7,12,12,8,0, + 0,204,34,0,0,60,66,66,66,66,66,66,60,6,14,14, + 8,1,0,120,132,132,0,120,132,132,132,132,132,132,132,132, + 120,6,12,12,8,1,0,120,132,132,0,120,132,132,132,132, + 132,132,120,7,14,14,8,0,0,204,34,0,0,124,66,66, + 66,124,72,68,68,66,66,7,12,12,8,0,0,204,34,0, + 0,92,98,66,64,64,64,64,64,6,14,14,8,1,0,120, + 132,132,0,248,132,132,132,248,144,136,136,132,132,6,12,12, + 8,1,0,120,132,132,0,184,196,132,128,128,128,128,128,7, + 14,14,8,0,0,204,34,0,0,66,66,66,66,66,66,66, + 66,66,60,7,12,12,8,0,0,204,34,0,0,66,66,66, + 66,66,66,70,58,6,14,14,8,1,0,120,132,132,0,132, + 132,132,132,132,132,132,132,132,120,6,12,12,8,1,0,120, + 132,132,0,132,132,132,132,132,132,140,116,6,12,12,8,1, + 254,120,132,132,128,96,24,4,132,132,120,16,32,6,10,10, + 8,1,254,120,132,128,96,24,4,132,120,16,32,7,12,12, + 8,1,254,254,16,16,16,16,16,16,16,16,16,4,8,5, + 12,12,8,1,254,32,32,248,32,32,32,32,32,32,24,64, + 128,6,10,10,8,1,0,120,132,132,4,24,104,4,4,4, + 120,6,8,8,8,1,0,120,132,4,24,100,4,24,96,6, + 13,13,8,1,0,72,48,0,132,132,132,132,252,132,132,132, + 132,132,6,13,13,8,1,0,72,48,0,128,128,128,184,196, + 132,132,132,132,132,6,10,10,8,1,254,184,196,132,132,132, + 132,132,132,4,4,7,13,13,8,1,254,4,4,4,116,140, + 132,132,132,132,142,118,4,8,6,10,10,8,1,0,16,72, + 132,132,72,120,132,132,132,120,5,8,8,8,2,0,72,136, + 144,96,144,136,136,112,6,12,12,8,1,254,252,4,4,8, + 16,32,64,128,128,252,4,8,6,10,10,8,1,254,252,4, + 8,16,32,64,128,252,4,8,6,12,12,8,1,0,16,0, + 48,72,72,132,132,252,132,132,132,132,6,10,10,8,1,0, + 16,0,120,132,4,124,132,132,140,116,6,12,12,8,1,254, + 252,128,128,128,248,128,128,128,128,252,16,96,6,10,10,8, + 1,254,120,132,132,252,128,128,132,120,16,96,6,14,14,8, + 1,0,120,0,72,0,120,132,132,132,132,132,132,132,132,120, + 6,12,12,8,1,0,120,0,72,0,120,132,132,132,132,132, + 132,120,6,14,14,8,1,0,120,0,100,152,0,120,132,132, + 132,132,132,132,132,120,6,13,13,8,1,0,120,0,100,152, + 0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,16, + 0,120,132,132,132,132,132,132,132,132,120,6,10,10,8,1, + 0,16,0,120,132,132,132,132,132,132,120,6,14,14,8,1, + 0,120,0,16,0,120,132,132,132,132,132,132,132,132,120,6, + 12,12,8,1,0,120,0,16,0,120,132,132,132,132,132,132, + 120,7,12,12,8,1,0,124,0,130,130,68,68,40,16,16, + 16,16,16,6,12,12,8,1,254,120,0,132,132,132,132,132, + 76,52,4,4,120,4,12,12,8,2,254,96,32,32,32,32, + 32,32,32,48,48,64,128,7,10,10,8,1,254,184,196,132, + 132,132,132,134,134,4,8,6,12,12,8,1,254,32,32,248, + 32,32,32,32,32,44,28,16,32,5,10,10,8,1,254,24, + 8,8,8,8,8,8,8,144,96,7,11,11,8,0,0,16, + 16,16,84,186,146,146,146,146,186,84,7,10,10,8,0,254, + 84,186,146,146,146,146,186,84,16,16,7,11,11,8,0,0, + 2,26,36,44,74,82,126,98,66,66,194,7,12,12,8,0, + 255,2,60,70,74,72,80,80,96,98,66,124,128,7,11,11, + 8,0,255,2,4,60,74,80,80,96,96,66,124,128,6,10, + 10,8,1,0,64,64,64,64,240,64,64,64,64,124,7,12, + 12,8,1,0,2,4,254,24,24,16,16,48,48,80,80,144, + 7,10,10,8,1,254,120,132,128,96,24,4,132,120,18,12, + 6,10,10,8,1,254,252,4,8,16,32,64,128,192,32,28, + 6,10,10,8,1,0,120,132,132,4,8,16,16,16,16,16, + 6,8,8,8,1,0,120,132,132,4,8,16,16,16,6,10, + 10,8,1,0,120,68,68,68,120,68,244,68,68,120,7,10, + 10,8,0,0,68,68,68,68,68,254,68,68,68,56,6,10, + 10,8,1,0,48,48,48,72,72,72,72,132,132,132,6,14, + 14,8,1,254,8,8,252,144,144,160,248,160,160,192,192,252, + 128,128,7,10,10,8,0,255,2,60,70,74,126,80,96,66, + 124,128,7,10,10,8,1,0,62,8,8,8,8,62,8,136, + 136,112,7,13,13,8,1,254,8,8,0,24,8,8,62,8, + 8,8,8,144,96,7,12,12,8,1,254,112,136,136,136,136, + 136,136,136,152,104,8,6,7,10,10,8,1,254,104,152,136, + 136,136,136,152,104,8,6,6,10,10,8,1,0,120,68,68, + 68,248,80,72,72,68,68,6,8,8,8,1,0,88,100,68, + 224,64,64,64,64,7,10,10,8,1,0,130,130,68,254,40, + 16,16,16,16,16,7,10,10,8,1,254,68,68,68,254,68, + 36,28,4,4,56,6,8,8,8,1,0,184,196,132,132,248, + 128,132,120,6,8,8,8,1,0,116,140,132,132,132,140,148, + 100,6,8,8,8,1,0,152,164,196,132,132,132,196,184,6, + 11,11,8,1,0,112,128,128,184,196,132,132,132,132,196,184, + 6,8,8,8,1,0,120,132,4,4,4,4,132,120,6,9, + 9,8,1,255,120,132,128,128,128,152,164,120,128,7,12,12, + 8,1,255,8,8,8,104,152,136,136,136,136,152,104,6,7, + 11,11,8,1,0,6,8,8,104,152,136,136,136,136,152,104, + 6,8,8,8,1,0,120,132,132,252,4,4,132,120,6,8, + 8,8,1,0,120,132,4,4,252,132,132,120,7,8,8,8, + 1,0,114,140,8,8,248,136,136,112,6,8,8,8,1,0, + 120,132,128,120,128,128,132,120,6,8,8,8,1,0,120,132, + 4,120,4,4,132,120,7,8,8,8,1,0,114,140,8,112, + 8,8,136,112,6,8,8,8,1,0,120,132,132,184,132,132, + 132,120,7,10,10,8,1,254,24,8,8,8,62,8,8,8, + 144,96,7,11,11,8,1,254,6,104,152,136,136,136,152,104, + 8,136,112,6,10,10,8,1,254,116,140,132,132,132,140,116, + 4,132,120,6,8,8,8,1,0,120,132,128,128,156,132,132, + 124,6,10,10,8,1,254,132,132,132,72,72,48,48,72,72, + 48,6,8,8,8,1,0,132,132,72,72,48,48,72,48,6, + 11,11,8,1,254,132,132,132,132,132,132,140,116,4,4,4, + 6,11,11,8,1,0,112,128,128,184,196,132,132,132,132,132, + 132,6,11,11,8,1,0,112,128,128,184,196,132,132,132,132, + 132,152,5,11,11,8,2,0,32,32,0,96,32,32,248,32, + 32,32,248,3,8,8,8,3,0,128,128,128,128,128,128,128, + 96,5,8,8,8,2,0,248,32,32,32,32,32,32,248,6, + 10,10,8,1,0,48,16,16,16,116,152,16,16,16,124,6, + 10,10,8,1,0,48,16,16,112,144,124,16,16,16,124,4, + 11,11,8,3,255,192,64,64,64,64,64,64,64,64,64,48, + 7,12,12,8,1,254,96,32,62,34,36,40,44,34,34,250, + 18,12,7,8,8,8,1,0,146,146,146,146,146,146,146,110, + 7,10,10,8,1,254,146,146,146,146,146,146,146,110,2,2, + 7,9,9,8,1,255,236,146,146,146,146,146,146,130,12,7, + 9,9,8,1,255,44,50,34,34,34,34,34,34,192,7,9, + 9,8,1,255,176,200,136,136,136,136,136,136,6,6,8,8, + 8,1,0,132,132,196,164,148,140,132,132,6,8,8,8,1, + 0,120,132,132,252,132,132,132,120,7,8,8,8,1,0,110, + 144,144,156,144,144,144,110,7,8,8,8,1,0,124,130,130, + 146,146,146,146,108,7,12,12,8,1,254,16,16,124,146,146, + 146,146,146,146,124,16,16,6,8,8,8,1,0,4,4,4, + 4,4,132,140,116,6,10,10,8,1,0,4,4,4,4,4, + 4,4,132,140,116,7,9,9,8,1,255,8,8,8,8,8, + 136,152,104,6,6,10,10,8,1,254,184,196,132,128,128,128, + 128,128,128,128,6,9,9,8,1,255,184,196,132,128,128,128, + 128,128,96,6,8,8,8,1,0,120,132,132,128,128,128,128, + 128,6,8,8,8,1,0,120,132,132,4,4,4,4,4,6, + 8,8,8,1,0,248,132,132,248,136,132,132,132,6,8,8, + 8,1,0,132,132,132,136,248,132,132,248,6,10,10,8,1, + 254,120,132,128,96,24,4,132,248,128,96,5,12,12,8,1, + 255,24,32,32,32,32,32,32,32,32,32,32,192,5,12,12, + 8,1,255,24,32,32,32,32,32,32,248,32,32,32,192,5, + 9,9,8,1,255,192,32,32,32,32,32,32,32,24,6,12, + 12,8,1,255,12,16,16,16,16,16,16,16,16,112,156,96, + 5,10,10,8,1,0,192,32,32,32,32,32,32,248,32,32, + 6,11,11,8,1,255,32,32,248,32,32,32,32,32,32,32, + 28,7,8,8,8,1,0,68,68,68,254,68,68,76,52,6, + 8,8,8,1,0,132,72,132,132,132,132,72,48,6,8,8, + 8,1,0,152,132,132,132,132,136,144,96,6,8,8,8,1, + 0,48,48,72,72,72,132,132,132,7,8,8,8,1,0,108, + 146,146,146,146,146,146,130,6,10,10,8,1,254,120,128,128, + 176,200,132,132,132,132,132,7,8,8,8,1,0,130,130,68, + 40,16,16,16,16,7,10,10,8,1,254,248,16,16,32,32, + 64,64,248,8,6,7,9,9,8,1,255,252,4,8,16,32, + 76,146,252,32,6,10,10,8,1,254,124,8,16,32,56,4, + 4,4,132,120,6,10,10,8,1,254,124,8,16,32,56,4, + 4,100,148,120,6,10,10,8,1,0,120,132,132,4,8,16, + 16,16,16,16,6,10,10,8,1,0,120,132,132,128,64,32, + 32,32,32,32,6,10,10,8,1,0,16,16,16,16,16,8, + 4,132,132,120,6,10,10,8,1,254,120,132,128,128,128,128, + 128,128,132,120,6,8,8,8,1,0,120,132,132,180,180,132, + 132,120,6,8,8,8,1,0,248,132,132,248,132,132,132,248, + 6,8,8,8,1,0,120,132,132,116,132,132,132,120,7,8, + 8,8,1,0,118,136,128,128,152,136,136,120,5,8,8,8, + 2,0,136,136,136,248,136,136,136,136,6,13,13,8,1,254, + 8,8,0,24,8,8,8,8,8,8,124,144,96,6,10,10, + 8,1,254,132,68,36,20,12,20,36,68,4,4,6,8,8, + 8,1,0,128,128,128,128,128,128,128,252,7,11,11,8,1, + 254,6,104,152,136,136,136,136,152,104,8,8,6,10,10,8, + 1,0,120,132,132,4,8,16,16,124,16,16,6,10,10,8, + 1,0,120,132,132,128,64,32,32,248,32,32,7,11,11,8, + 1,0,32,32,32,126,162,164,164,168,168,176,126,7,13,13, + 8,1,254,32,32,32,126,162,164,168,172,162,162,98,18,12, + 7,12,12,8,1,255,32,32,32,126,162,164,168,176,180,170, + 124,8,7,10,10,8,1,0,64,64,236,80,80,72,68,66, + 66,60,7,13,13,8,1,254,6,72,72,248,72,72,72,72, + 72,72,56,8,48,7,11,11,8,1,255,64,64,236,82,80, + 80,80,84,90,60,8,7,12,12,8,1,254,96,144,128,220, + 162,162,162,162,162,162,4,24,6,10,10,8,2,0,128,128, + 128,156,160,160,152,132,132,248,6,10,10,8,1,0,128,128, + 128,128,252,136,144,160,192,252,7,11,11,8,1,0,130,146, + 146,146,108,0,130,146,146,146,108,6,10,10,8,1,0,252, + 132,132,132,0,0,252,132,132,132,5,10,10,8,1,254,200, + 72,72,72,72,72,88,40,8,8,7,10,10,8,1,254,200, + 72,72,72,72,72,88,40,8,6,5,6,6,8,2,4,128, + 128,176,200,136,136,5,7,7,8,2,4,112,136,128,176,200, + 136,136,4,7,7,8,2,4,16,0,16,16,16,144,96,5, + 5,5,8,2,5,176,200,128,128,128,5,5,5,8,1,5, + 8,8,8,152,104,7,6,6,8,1,4,8,8,8,152,104, + 6,5,6,6,8,1,4,136,144,240,136,136,240,5,4,4, + 8,1,6,136,168,168,80,5,5,5,8,1,5,136,136,120, + 8,112,3,3,3,8,2,7,32,64,128,6,3,3,8,1, + 7,36,72,144,2,4,4,8,3,6,64,128,128,192,2,4, + 4,8,3,6,192,64,64,128,2,4,4,8,3,6,192,128, + 128,64,4,6,6,8,2,5,192,32,16,16,32,192,4,6, + 6,8,2,5,48,64,128,128,64,48,6,7,7,8,1,4, + 120,132,4,4,56,32,32,6,7,7,8,1,4,120,132,128, + 128,112,16,16,4,7,7,8,2,4,16,32,64,128,64,32, + 16,4,7,7,8,2,4,128,64,32,16,32,64,128,7,4, + 4,8,1,6,16,40,68,130,7,4,4,8,1,6,130,68, + 40,16,4,2,2,8,2,8,96,144,4,2,2,8,2,8, + 144,96,1,3,3,8,4,7,128,128,128,4,1,1,8,2, + 9,240,4,2,2,8,2,8,48,192,4,2,2,8,2,8, + 192,48,1,4,4,8,4,0,128,128,128,128,4,1,1,8, + 2,0,240,4,2,2,8,2,255,192,48,4,2,2,8,2, + 255,48,192,3,6,6,8,2,1,224,64,0,0,64,224,3, + 2,2,8,2,4,224,64,4,6,6,8,2,2,192,32,16, + 16,32,192,4,6,6,8,2,2,48,64,128,128,64,48,5, + 5,5,8,1,2,32,32,32,32,248,5,5,5,8,1,2, + 248,32,32,32,32,5,5,5,8,1,2,32,32,248,32,32, + 5,1,1,8,1,4,248,6,3,3,8,1,9,132,132,120, + 2,2,2,8,3,10,192,192,4,3,3,8,2,9,96,144, + 96,3,2,2,8,4,254,128,96,6,2,2,8,1,10,100, + 152,7,2,2,8,1,10,102,136,7,4,4,8,0,3,32, + 96,162,28,6,5,5,8,1,5,132,72,48,72,132,5,6, + 6,8,1,4,136,80,32,80,80,32,3,6,6,8,2,6, + 192,64,64,64,64,224,5,5,5,8,1,5,120,128,112,8, + 240,5,5,5,8,1,5,136,80,32,80,136,5,5,5,8, + 1,7,120,128,128,112,16,5,11,11,8,1,0,248,8,8, + 8,8,8,8,8,8,8,8,5,11,11,8,1,0,8,8, + 248,8,8,8,8,8,8,8,8,5,11,11,8,1,0,8, + 8,8,8,8,248,8,8,8,8,8,5,11,11,8,1,0, + 8,8,8,8,8,8,8,8,248,8,8,5,11,11,8,1, + 0,8,8,8,8,8,8,8,8,8,8,248,5,6,6,8, + 1,0,128,128,128,128,128,248,4,7,7,8,1,0,128,128, + 128,240,128,128,128,5,3,3,8,1,0,136,80,32,6,3, + 3,8,1,9,252,0,252,6,4,4,8,1,8,204,68,68, + 136,5,3,3,8,1,255,136,80,32,5,3,3,8,1,255, + 32,80,136,3,5,5,8,3,255,32,64,128,64,32,3,5, + 5,8,3,255,128,64,32,64,128,4,3,3,8,2,255,96, + 144,96,3,3,3,8,2,9,128,64,32,6,3,3,8,1, + 9,144,72,36,6,3,3,8,1,9,36,72,144,6,2,2, + 8,1,254,100,152,2,7,7,8,3,4,192,192,0,0,0, + 192,192,3,4,4,8,2,7,224,128,128,128,3,4,4,8, + 2,7,224,32,32,32,3,4,4,8,2,0,128,128,128,224, + 3,4,4,8,2,0,32,32,32,224,6,3,3,8,1,254, + 132,132,252,6,3,3,8,1,254,128,128,252,6,5,5,8, + 1,3,32,64,252,64,32}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w=16 h=16 x=14 y=12 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[3556] U8G_SECTION(".progmem.u8g_font_unifont_67_75") = { + 0,16,16,0,254,3,2,120,4,26,16,255,0,14,254,10, + 0,6,5,5,8,1,4,32,64,252,64,32,5,6,6,8, + 2,3,32,112,168,32,32,32,6,5,5,8,1,3,16,8, + 252,8,16,5,6,6,8,2,3,32,32,32,168,112,32,8, + 5,5,8,0,3,36,66,255,66,36,5,9,9,8,2,1, + 32,112,168,32,32,32,168,112,32,6,6,6,8,1,3,240, + 192,160,144,8,4,6,6,6,8,1,3,60,12,20,36,64, + 128,6,6,6,8,1,3,128,64,36,20,12,60,6,6,6, + 8,1,2,4,8,144,160,192,240,7,9,9,8,1,1,8, + 8,40,72,254,72,40,8,8,7,9,9,8,1,1,32,32, + 40,36,254,36,40,32,32,7,5,5,8,1,3,32,76,242, + 64,32,7,5,5,8,1,3,8,100,158,4,8,8,5,5, + 8,0,3,36,72,255,72,36,5,9,9,8,2,1,32,112, + 168,32,112,168,32,32,32,8,5,5,8,0,3,36,18,255, + 18,36,5,9,9,8,2,1,32,32,32,168,112,32,168,112, + 32,7,5,5,8,1,3,34,68,248,68,34,7,5,5,8, + 1,3,136,68,62,68,136,6,5,5,8,1,3,36,68,252, + 68,36,5,6,6,8,2,3,32,112,168,32,32,248,6,5, + 5,8,1,3,144,136,252,136,144,5,6,6,8,2,3,248, + 32,32,168,112,32,5,10,10,8,2,0,32,112,168,32,32, + 32,168,112,32,248,7,6,6,8,1,3,4,34,66,252,64, + 32,7,6,6,8,1,3,64,136,132,126,4,8,7,6,6, + 8,1,3,4,42,74,252,72,40,7,6,6,8,1,3,64, + 168,164,126,36,40,8,5,5,8,0,3,36,90,231,66,36, + 8,9,9,8,0,1,8,8,44,74,255,74,44,8,8,6, + 10,10,8,1,0,128,128,144,176,208,144,16,84,56,16,5, + 10,10,8,1,0,32,64,240,72,40,8,8,8,8,8,5, + 10,10,8,2,0,32,16,120,144,160,128,128,128,128,128,5, + 10,10,8,1,0,8,8,8,8,8,40,72,240,64,32,5, + 10,10,8,2,0,128,128,128,128,128,160,144,120,16,32,7, + 5,5,8,1,1,248,8,42,28,8,5,8,8,8,1,2, + 8,8,8,40,72,248,64,32,8,5,5,8,0,3,30,33, + 169,113,32,8,5,5,8,0,3,120,132,149,142,4,6,8, + 8,8,1,3,252,0,240,192,160,144,8,4,6,11,11,8, + 1,0,160,192,252,192,160,0,20,12,252,12,20,6,6,6, + 8,1,2,92,152,148,132,132,120,6,6,6,8,1,2,232, + 100,164,132,132,120,6,3,3,8,1,5,32,64,252,6,3, + 3,8,1,3,252,64,32,3,6,6,8,4,3,128,192,160, + 128,128,128,3,6,6,8,2,3,32,96,160,32,32,32,6, + 3,3,8,1,5,16,8,252,6,3,3,8,1,3,252,8, + 16,3,6,6,8,4,2,128,128,128,160,192,128,3,6,6, + 8,2,3,32,32,32,160,96,32,6,11,11,8,1,0,16, + 8,252,8,16,0,32,64,252,64,32,8,6,6,8,0,3, + 36,116,164,37,46,36,6,11,11,8,1,0,32,64,252,64, + 32,0,16,8,252,8,16,6,11,11,8,1,0,32,64,252, + 64,32,0,32,64,252,64,32,8,6,6,8,0,3,36,126, + 165,36,36,36,6,11,11,8,1,0,16,8,252,8,16,0, + 16,8,252,8,16,8,6,6,8,0,3,36,36,36,165,126, + 36,6,7,7,8,1,2,32,64,252,0,252,8,16,6,7, + 7,8,1,2,16,8,252,0,252,64,32,7,9,9,8,0, + 1,8,8,40,126,136,126,40,8,8,8,9,9,8,0,1, + 8,8,44,126,137,126,44,8,8,7,9,9,8,1,1,32, + 32,40,252,34,252,40,32,32,6,5,5,8,1,3,32,124, + 128,124,32,5,6,6,8,2,3,32,80,216,80,80,80,6, + 5,5,8,1,3,16,248,4,248,16,5,6,6,8,2,3, + 80,80,80,216,80,32,8,5,5,8,0,3,36,126,129,126, + 36,5,8,8,8,2,2,32,80,216,80,80,216,80,32,6, + 6,6,8,1,3,240,160,208,168,20,8,6,6,6,8,1, + 3,60,20,44,84,160,64,6,6,6,8,1,3,8,20,168, + 208,160,240,6,6,6,8,1,3,64,160,84,44,20,60,7, + 7,7,8,0,2,16,62,64,254,64,62,16,7,7,7,8, + 1,2,16,248,4,254,4,248,16,8,5,5,8,0,3,32, + 66,245,72,32,8,5,5,8,0,3,4,66,175,18,4,5, + 10,10,8,2,0,32,112,168,32,32,248,32,248,32,32,5, + 10,10,8,2,0,32,32,248,32,248,32,32,168,112,32,7, + 5,5,8,1,3,32,64,238,64,32,5,10,10,8,2,0, + 32,112,168,0,32,32,32,0,32,32,7,5,5,8,1,3, + 8,4,238,4,8,5,10,10,8,2,0,32,32,0,32,32, + 32,0,168,112,32,6,5,5,8,1,3,160,192,252,192,160, + 6,5,5,8,1,3,20,12,252,12,20,8,7,7,8,0, + 2,16,48,95,129,95,48,16,7,10,10,8,1,0,16,40, + 68,238,40,40,40,40,40,56,8,7,7,8,0,2,8,12, + 250,129,250,12,8,7,10,10,8,1,0,56,40,40,40,40, + 40,238,68,40,16,7,12,12,8,1,0,16,40,68,238,40, + 40,40,40,56,0,56,56,7,12,12,8,1,0,16,40,68, + 198,68,68,68,68,68,198,130,254,7,12,12,8,1,0,16, + 40,124,198,68,68,68,68,68,198,130,254,7,12,12,8,1, + 0,16,56,84,214,84,84,84,84,84,214,146,254,7,14,14, + 8,1,0,16,40,84,238,68,198,68,68,68,68,68,68,68, + 124,7,14,14,8,1,0,16,40,84,238,68,198,68,68,68, + 68,68,198,130,254,7,7,7,8,1,2,16,216,244,130,244, + 216,16,7,9,9,8,1,0,254,128,184,176,168,132,130,128, + 128,7,9,9,8,1,0,2,2,130,66,42,26,58,2,254, + 5,11,11,8,2,0,32,80,216,80,80,80,80,80,216,80, + 32,13,5,10,16,1,3,14,32,17,16,255,248,17,16,14, + 32,8,10,10,8,0,0,36,46,53,36,36,36,36,172,116, + 36,8,15,15,8,0,254,4,2,255,2,4,4,2,255,2, + 4,4,2,255,2,4,8,5,5,8,0,3,36,68,255,68, + 36,8,5,5,8,0,3,36,34,255,34,36,11,5,10,16, + 2,3,36,128,68,64,255,224,68,64,36,128,12,5,10,16, + 1,3,37,0,69,0,255,240,69,0,37,0,12,5,10,16, + 2,3,10,64,10,32,255,240,10,32,10,64,13,5,10,16, + 1,3,37,32,69,16,255,248,69,16,37,32,8,5,5,8, + 0,3,32,96,191,96,32,8,5,5,8,0,3,4,6,253, + 6,4,12,5,10,16,2,3,32,64,96,96,191,208,96,96, + 32,64,16,8,16,16,0,6,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,16,2,4,16,0,254,255,255, + 255,255,16,4,8,16,0,254,255,255,255,255,255,255,255,255, + 16,6,12,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,16,8,16,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,16,10,20,16,0,254,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,16,12,24,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 16,14,28,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,16,16,32,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,14,16,32,16,0,254,255,252, + 255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,252, + 255,252,255,252,255,252,255,252,255,252,255,252,255,252,12,16, + 32,16,0,254,255,240,255,240,255,240,255,240,255,240,255,240, + 255,240,255,240,255,240,255,240,255,240,255,240,255,240,255,240, + 255,240,255,240,10,16,32,16,0,254,255,192,255,192,255,192, + 255,192,255,192,255,192,255,192,255,192,255,192,255,192,255,192, + 255,192,255,192,255,192,255,192,255,192,8,16,16,16,0,254, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 6,16,16,16,0,254,252,252,252,252,252,252,252,252,252,252, + 252,252,252,252,252,252,4,16,16,16,0,254,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,2,16,16,16, + 0,254,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,8,16,16,16,8,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,15,16,32,16,0,254,136,136, + 34,34,136,136,34,34,136,136,34,34,136,136,34,34,136,136, + 34,34,136,136,34,34,136,136,34,34,136,136,34,34,16,16, + 32,16,0,254,170,170,85,85,170,170,85,85,170,170,85,85, + 170,170,85,85,170,170,85,85,170,170,85,85,170,170,85,85, + 170,170,85,85,16,16,32,16,0,254,238,238,187,187,238,238, + 187,187,238,238,187,187,238,238,187,187,238,238,187,187,238,238, + 187,187,238,238,187,187,238,238,187,187,16,2,4,16,0,12, + 255,255,255,255,2,16,16,16,14,254,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,8,8,8,16,0,254, + 255,255,255,255,255,255,255,255,8,8,8,16,8,254,255,255, + 255,255,255,255,255,255,8,8,8,16,0,6,255,255,255,255, + 255,255,255,255,16,16,32,16,0,254,255,0,255,0,255,0, + 255,0,255,0,255,0,255,0,255,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,16,16,32,16,0,254, + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, + 16,16,32,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,255,0,255,0,255,0,255,0, + 255,0,255,0,255,0,16,16,32,16,0,254,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,255,0,255, + 0,255,0,255,0,255,0,255,0,255,0,255,8,8,8,16, + 8,6,255,255,255,255,255,255,255,255,16,16,32,16,0,254, + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + 16,16,32,16,0,254,0,255,0,255,0,255,0,255,0,255, + 0,255,0,255,0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,7,7,7,8,1,1,254,254,254,254, + 254,254,254,7,7,7,8,1,1,254,130,130,130,130,130,254, + 7,7,7,8,1,1,124,130,130,130,130,130,124,7,7,7, + 8,1,1,254,130,186,186,186,130,254,7,7,7,8,1,1, + 254,130,254,130,254,130,254,7,7,7,8,1,1,254,170,170, + 170,170,170,254,7,7,7,8,1,1,254,170,254,170,254,170, + 254,7,7,7,8,1,1,254,166,146,202,166,146,254,7,7, + 7,8,1,1,254,202,146,166,202,146,254,7,7,7,8,1, + 1,254,170,214,170,214,170,254,4,4,4,8,2,4,240,240, + 240,240,4,4,4,8,2,4,240,144,144,240,7,4,4,8, + 1,4,254,254,254,254,7,4,4,8,1,4,254,130,130,254, + 4,7,7,8,2,2,240,240,240,240,240,240,240,4,7,7, + 8,2,2,240,144,144,144,144,144,240,8,3,3,8,0,4, + 63,126,252,8,3,3,8,0,4,63,66,252,6,6,6,8, + 1,3,48,48,120,120,252,252,6,6,6,8,1,3,48,48, + 72,72,132,252,6,3,3,8,1,3,48,120,252,6,3,3, + 8,1,3,48,72,252,6,6,6,8,1,3,192,240,252,252, + 240,192,6,6,6,8,1,3,192,176,140,140,176,192,4,4, + 4,8,2,4,192,240,240,192,4,4,4,8,2,4,192,176, + 176,192,6,5,5,8,1,3,192,240,252,240,192,6,5,5, + 8,1,3,192,176,140,176,192,6,6,6,8,1,3,252,252, + 120,120,48,48,6,6,6,8,1,3,252,132,72,72,48,48, + 6,3,3,8,1,3,252,120,48,6,3,3,8,1,3,252, + 72,48,6,6,6,8,1,3,12,60,252,252,60,12,6,6, + 6,8,1,3,12,52,196,196,52,12,4,4,4,8,2,4, + 48,240,240,48,4,4,4,8,2,4,48,208,208,48,6,5, + 5,8,1,3,12,60,252,60,12,6,5,5,8,1,3,12, + 52,196,52,12,7,7,7,8,1,2,16,56,124,254,124,56, + 16,7,7,7,8,1,2,16,40,68,130,68,40,16,7,7, + 7,8,1,2,16,40,84,186,84,40,16,7,7,7,8,1, + 2,56,68,178,186,154,68,56,6,10,10,8,1,1,48,48, + 72,72,132,132,72,72,48,48,7,7,7,8,1,2,56,68, + 130,130,130,68,56,7,7,7,8,1,2,40,0,130,0,130, + 0,40,7,7,7,8,1,2,56,108,170,170,170,108,56,7, + 7,7,8,1,2,56,68,146,170,146,68,56,7,7,7,8, + 1,2,56,124,254,254,254,124,56,7,7,7,8,1,2,56, + 100,226,226,226,100,56,7,7,7,8,1,2,56,76,142,142, + 142,76,56,7,7,7,8,1,2,56,68,130,130,254,124,56, + 7,7,7,8,1,2,56,124,254,130,130,68,56,7,7,7, + 8,1,2,56,92,158,158,130,68,56,7,7,7,8,1,2, + 56,76,142,142,254,124,56,4,7,7,8,1,2,48,112,240, + 240,240,112,48,4,7,7,8,4,2,192,224,240,240,240,224, + 192,8,16,16,8,0,254,255,255,255,255,255,255,231,195,195, + 231,255,255,255,255,255,255,8,16,16,8,0,254,255,255,255, + 255,255,231,219,189,189,219,231,255,255,255,255,255,8,8,8, + 8,0,6,255,255,255,255,255,231,219,189,8,8,8,8,0, + 254,189,219,231,255,255,255,255,255,4,4,4,8,1,5,48, + 64,128,128,4,4,4,8,4,5,192,32,16,16,4,4,4, + 8,4,2,16,16,32,192,4,4,4,8,1,2,128,128,64, + 48,7,4,4,8,1,5,56,68,130,130,7,4,4,8,1, + 2,130,130,68,56,6,6,6,8,1,255,4,12,28,60,124, + 252,6,6,6,8,1,255,128,192,224,240,248,252,6,6,6, + 8,1,6,252,248,240,224,192,128,6,6,6,8,1,6,252, + 124,60,28,12,4,5,5,5,8,1,2,112,136,136,136,112, + 6,6,6,8,1,3,252,228,228,228,228,252,6,6,6,8, + 1,3,252,156,156,156,156,252,6,6,6,8,1,3,252,244, + 228,196,132,252,6,6,6,8,1,3,252,132,140,156,188,252, + 7,6,6,8,1,3,254,146,146,146,146,254,7,7,7,8, + 1,2,16,40,40,68,84,130,254,6,6,6,8,1,2,48, + 48,104,104,228,252,6,7,7,8,1,2,48,48,88,88,156, + 156,252,8,8,8,8,0,2,60,66,129,129,129,129,66,60, + 6,6,6,8,1,0,252,164,228,132,132,252,6,6,6,8, + 1,0,252,132,132,228,164,252,6,6,6,8,1,0,252,132, + 132,156,148,252,6,6,6,8,1,0,252,148,156,132,132,252, + 8,8,8,8,0,0,60,82,145,241,129,129,66,60,8,8, + 8,8,0,0,60,66,129,129,241,145,82,60,8,8,8,8, + 0,0,60,66,129,129,143,137,74,60,8,8,8,8,0,0, + 60,74,137,143,129,129,66,60,6,6,6,8,1,6,252,136, + 144,160,192,128,6,6,6,8,1,6,252,68,36,20,12,4, + 6,6,6,8,1,255,128,192,160,144,136,252,6,6,6,8, + 1,255,252,132,132,132,132,252,6,6,6,8,1,255,252,252, + 252,252,252,252,4,4,4,8,2,0,240,144,144,240,4,4, + 4,8,2,0,240,240,240,240,6,6,6,8,1,255,4,12, + 20,36,68,252}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 14 + Calculated Max Values w=16 h=16 x= 4 y= 5 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-1 + X Font ascent =14 descent=-1 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[7240] U8G_SECTION(".progmem.u8g_font_unifont_72_73") = { + 0,16,16,0,254,10,4,144,6,240,0,255,255,14,254,14, + 255,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,14,5,10,16,1,4,115,36,132, + 164,100,188,20,164,227,36,13,5,10,16,1,4,119,72,130, + 72,98,48,18,72,226,72,13,5,10,16,1,4,247,72,130, + 72,242,48,130,72,242,72,14,5,10,16,1,4,243,124,132, + 144,244,144,132,144,243,16,14,5,10,16,1,4,244,152,132, + 164,246,164,133,172,244,156,13,5,10,16,1,4,99,72,148, + 80,244,96,148,80,147,72,14,5,10,16,1,4,231,160,148, + 32,231,160,148,32,231,188,10,5,10,16,1,4,241,192,138, + 0,241,128,136,64,243,128,11,5,10,16,1,4,139,224,136, + 128,248,128,136,128,136,128,11,5,10,16,1,4,131,224,130, + 0,131,224,130,0,250,0,11,5,10,16,1,4,139,224,136, + 128,136,128,80,128,32,128,11,5,10,16,1,4,251,224,130, + 0,251,224,130,0,130,0,11,5,10,16,1,4,123,192,130, + 32,131,192,130,64,122,32,11,5,10,16,1,4,121,192,130, + 32,114,32,10,32,241,192,11,5,10,16,1,4,123,224,128, + 128,112,128,8,128,243,224,12,5,10,16,1,4,228,112,148, + 64,148,112,148,64,231,112,13,5,10,16,1,4,227,16,148, + 48,148,16,148,16,227,56,13,5,10,16,1,4,227,48,148, + 8,148,16,148,32,227,56,13,5,10,16,1,4,227,48,148, + 8,148,48,148,8,227,48,13,5,10,16,1,4,227,8,148, + 24,148,40,148,56,227,8,14,5,10,16,1,4,147,36,212, + 168,212,176,183,168,148,164,14,5,10,16,1,4,104,164,133, + 52,98,44,18,36,226,36,13,5,10,16,1,4,247,112,130, + 72,242,112,130,72,242,112,13,5,10,16,1,4,102,72,137, + 104,143,88,137,72,105,72,11,5,10,16,1,4,250,32,131, + 96,250,160,130,32,250,32,14,5,10,16,1,4,116,184,132, + 164,100,184,20,164,227,56,14,5,10,16,1,4,243,156,132, + 32,243,32,128,160,247,28,9,5,10,16,1,4,243,128,132, + 0,243,0,128,128,135,0,9,5,10,16,1,4,115,128,132, + 0,179,0,144,128,119,0,9,5,10,16,1,4,227,128,148, + 0,227,0,160,128,151,0,9,5,10,16,1,4,147,128,148, + 0,147,0,144,128,103,0,9,5,10,16,1,4,119,0,132, + 128,103,0,20,0,228,0,14,5,10,16,1,4,231,160,148, + 32,151,160,148,32,231,188,6,10,10,8,1,0,40,48,32, + 96,184,36,36,36,36,56,6,2,2,8,1,0,132,252,6, + 9,9,8,1,1,144,208,176,144,0,32,32,32,60,7,7, + 7,8,1,2,2,20,42,84,168,80,128,6,11,11,8,1, + 0,120,132,132,128,64,32,16,16,0,16,16,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 5,10,10,8,2,0,56,40,40,40,32,32,160,160,160,224, + 5,10,10,8,2,0,8,8,8,8,8,248,136,136,136,136, + 5,10,10,8,2,0,136,136,136,136,136,248,32,32,32,32, + 5,10,10,8,2,0,32,32,32,32,32,248,136,136,136,136, + 5,10,10,8,2,0,248,168,168,168,32,32,168,168,168,248, + 5,5,5,8,2,5,136,216,168,216,136,6,8,8,8,1, + 1,28,220,220,192,192,220,220,28,8,10,10,8,0,0,3, + 3,3,27,24,24,216,192,192,192,7,10,10,8,1,0,14, + 174,174,160,160,160,160,160,160,160,7,9,9,8,1,0,218, + 218,218,218,218,218,218,218,218,8,10,10,8,0,0,160,160, + 80,40,40,20,20,10,5,5,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,15,15,30,16, + 0,255,7,192,24,48,32,8,65,4,67,4,133,2,129,2, + 129,2,129,2,129,2,65,4,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,72,36, + 128,34,128,34,128,194,131,2,132,2,72,36,79,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,72,36,128,34,128,34,128,194,128,34,128,34,72,36, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,68,64,196,129,66,130,66,132,66,136,66, + 159,242,64,68,65,244,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,228,72,4,136,2,143,194, + 128,34,128,34,128,34,72,36,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,72,36, + 136,2,136,2,143,194,136,34,136,34,72,36,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,72,36,128,66,128,66,128,130,129,2,129,2,66,4, + 66,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,72,36,136,34,136,34,135,194,136,34, + 136,34,72,36,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,71,196,72,36,136,34,136,34, + 135,226,128,34,128,34,72,36,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,72,228,89,20, + 137,18,137,18,137,18,137,18,137,18,73,20,92,228,32,8, + 24,48,7,192,14,14,28,16,1,255,31,224,32,16,72,72, + 152,196,136,68,136,68,136,68,136,68,136,68,136,68,156,228, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 73,200,154,36,139,36,136,36,136,196,137,4,138,4,138,20, + 159,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 32,16,73,200,154,36,136,36,136,36,136,196,136,36,138,36, + 138,36,157,196,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,32,16,72,72,152,196,136,196,137,68,137,68,138,68, + 143,244,136,68,156,228,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,75,40,154,196,138,4,138,196,139,36, + 136,36,136,36,138,36,157,196,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,16,72,200,153,36,138,4,138,196, + 139,36,138,36,138,36,138,36,157,196,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,75,232,154,36,136,36, + 136,68,136,132,136,132,136,132,136,132,157,196,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,73,200,154,36, + 138,36,138,36,137,196,138,36,138,36,138,36,157,196,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,73,200, + 154,36,138,36,138,36,137,228,136,36,136,36,138,36,157,196, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 88,200,165,36,133,36,133,36,137,36,145,36,161,36,165,36, + 188,196,64,8,32,16,31,224,15,14,28,16,0,255,64,4, + 129,2,129,2,129,2,129,2,129,2,129,2,129,2,129,2, + 129,2,129,2,129,2,129,2,64,4,15,14,28,16,0,255, + 64,4,135,130,136,66,136,66,128,66,128,66,128,66,128,130, + 131,2,132,2,136,66,136,66,143,194,64,4,15,14,28,16, + 0,255,64,4,135,130,136,66,136,66,128,66,128,130,131,2, + 128,130,128,66,128,66,136,66,136,66,135,130,64,4,15,14, + 28,16,0,255,65,132,130,130,130,130,130,130,132,130,132,130, + 136,130,136,130,143,226,128,130,128,130,128,130,128,130,64,4, + 15,14,28,16,0,255,64,4,143,194,136,2,136,2,136,2, + 139,130,140,66,136,66,128,66,128,66,136,66,136,66,135,130, + 64,4,15,14,28,16,0,255,64,4,135,130,136,66,136,66, + 136,2,136,2,139,130,140,66,136,66,136,66,136,66,136,66, + 135,130,64,4,15,14,28,16,0,255,64,4,143,226,136,34, + 136,34,128,66,128,130,128,130,128,130,129,2,129,2,129,2, + 129,2,129,2,64,4,15,14,28,16,0,255,64,4,135,130, + 136,66,136,66,136,66,136,66,135,130,136,66,136,66,136,66, + 136,66,136,66,135,130,64,4,15,14,28,16,0,255,64,4, + 135,130,136,66,136,66,136,66,136,66,136,194,135,66,128,66, + 128,66,136,66,136,66,135,130,64,4,15,14,28,16,0,255, + 64,4,136,226,137,18,137,18,137,18,137,18,137,18,137,18, + 137,18,137,18,137,18,137,18,136,226,64,4,15,14,28,16, + 0,255,64,4,136,34,136,34,136,34,136,34,136,34,136,34, + 136,34,136,34,136,34,136,34,136,34,136,34,64,4,15,14, + 28,16,0,255,64,4,145,226,146,18,146,18,144,18,144,18, + 144,34,144,194,145,2,146,2,146,18,146,18,147,242,64,4, + 15,14,28,16,0,255,64,4,145,226,146,18,146,18,144,18, + 144,34,144,194,144,34,144,18,144,18,146,18,146,18,145,226, + 64,4,15,14,28,16,0,255,64,4,144,98,144,162,144,162, + 144,162,145,34,145,34,146,34,146,34,147,250,144,34,144,34, + 144,34,64,4,15,14,28,16,0,255,64,4,147,242,146,2, + 146,2,146,2,146,226,147,18,146,18,144,18,144,18,146,18, + 146,18,145,226,64,4,15,14,28,16,0,255,64,4,145,226, + 146,18,146,18,146,2,146,2,146,226,147,18,146,18,146,18, + 146,18,146,18,145,226,64,4,15,14,28,16,0,255,64,4, + 147,242,146,18,146,18,144,34,144,66,144,66,144,66,144,130, + 144,130,144,130,144,130,144,130,64,4,15,14,28,16,0,255, + 64,4,145,226,146,18,146,18,146,18,146,18,145,226,146,18, + 146,18,146,18,146,18,146,18,145,226,64,4,15,14,28,16, + 0,255,64,4,145,226,146,18,146,18,146,18,146,18,146,50, + 145,210,144,18,144,18,146,18,146,18,145,226,64,4,15,14, + 28,16,0,255,64,4,156,114,162,138,162,138,130,138,130,138, + 132,138,136,138,144,138,160,138,162,138,162,138,190,114,64,4, + 6,14,14,16,4,255,32,96,160,32,32,32,32,32,32,32, + 32,32,32,36,9,14,28,16,3,255,120,0,132,0,132,0, + 4,0,4,0,4,0,8,0,48,0,64,0,128,0,128,0, + 132,0,132,0,252,128,9,14,28,16,3,255,120,0,132,0, + 132,0,4,0,4,0,8,0,48,0,8,0,4,0,4,0, + 132,0,132,0,132,0,120,128,10,15,30,16,3,254,24,0, + 40,0,40,0,40,0,72,0,72,0,72,0,136,0,136,0, + 254,0,8,0,8,0,8,0,8,64,8,0,9,14,28,16, + 3,255,252,0,128,0,128,0,128,0,128,0,128,0,184,0, + 196,0,132,0,4,0,4,0,132,0,132,0,120,128,9,14, + 28,16,3,255,120,0,132,0,132,0,132,0,128,0,128,0, + 184,0,196,0,132,0,132,0,132,0,132,0,132,0,120,128, + 10,14,28,16,3,255,254,0,130,0,130,0,4,0,8,0, + 8,0,8,0,16,0,16,0,16,0,16,0,16,0,16,0, + 16,64,9,14,28,16,3,255,120,0,132,0,132,0,132,0, + 132,0,72,0,48,0,72,0,132,0,132,0,132,0,132,0, + 132,0,120,128,9,14,28,16,3,255,120,0,132,0,132,0, + 132,0,132,0,132,0,140,0,116,0,4,0,4,0,132,0, + 132,0,132,0,120,128,13,14,28,16,0,255,35,192,100,32, + 164,32,36,32,36,32,36,32,36,32,36,32,36,32,36,32, + 36,32,36,32,36,32,35,200,12,14,28,16,0,255,32,128, + 97,128,162,128,32,128,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,32,128,32,144,14,14,28,16,0,255, + 35,192,100,32,164,32,32,32,32,32,32,32,32,64,33,128, + 34,0,36,0,36,0,36,32,36,32,39,228,14,14,28,16, + 0,255,35,192,100,32,164,32,32,32,32,32,32,64,33,128, + 32,64,32,32,32,32,36,32,36,32,36,32,35,196,13,14, + 28,16,0,255,32,192,97,64,161,64,33,64,34,64,34,64, + 34,64,36,64,36,64,39,240,32,64,32,64,32,64,32,72, + 14,14,28,16,0,255,39,224,100,0,164,0,36,0,36,0, + 36,0,37,192,38,32,36,32,32,32,32,32,36,32,36,32, + 35,196,14,14,28,16,0,255,35,192,100,32,164,32,36,32, + 36,0,36,0,37,192,38,32,36,32,36,32,36,32,36,32, + 36,32,35,196,14,14,28,16,0,255,39,240,100,16,164,16, + 32,32,32,64,32,64,32,64,32,128,32,128,32,128,32,128, + 32,128,32,128,32,132,14,14,28,16,0,255,35,192,100,32, + 164,32,36,32,36,32,34,64,33,128,34,64,36,32,36,32, + 36,32,36,32,36,32,35,196,14,14,28,16,0,255,35,192, + 100,32,164,32,36,32,36,32,36,32,36,96,35,160,32,32, + 32,32,36,32,36,32,36,32,35,196,13,14,28,16,1,255, + 113,192,138,32,138,32,10,32,10,32,10,32,50,32,66,32, + 130,32,130,32,130,32,138,32,138,32,249,200,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,135,132,136,68,128,68, + 135,196,136,68,136,68,135,180,128,4,64,8,48,48,14,14, + 28,16,1,255,48,48,72,8,152,4,136,4,139,132,140,68, + 136,36,136,36,136,36,140,68,155,132,128,4,64,8,48,48, + 14,14,28,16,1,255,48,48,64,8,128,4,128,4,135,132, + 136,68,144,4,144,4,144,36,136,68,135,132,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,64,72,128,196,128,68, + 135,68,136,196,144,68,144,68,144,68,136,196,135,100,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,143,132,144,68,144,68,159,196,144,4,144,68,143,132, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,65,136, + 130,196,130,4,143,132,130,4,130,4,130,4,130,4,130,4, + 135,4,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,100,135,132,136,68,136,68,159,132,144,4, + 143,196,144,36,144,36,79,200,48,48,14,14,28,16,1,255, + 48,48,72,8,152,4,136,4,137,196,142,68,136,68,136,68, + 136,68,136,68,156,228,128,4,64,8,48,48,14,14,28,16, + 1,255,49,48,65,8,128,4,128,4,129,4,131,4,129,4, + 129,4,129,4,129,4,131,132,128,4,64,8,48,48,14,14, + 28,16,1,255,49,48,65,8,128,4,128,4,129,4,131,4, + 129,4,129,4,129,4,129,4,129,4,137,4,70,8,48,48, + 14,14,28,16,1,255,48,48,72,8,152,4,136,4,137,196, + 136,132,137,4,143,4,137,132,136,196,156,228,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,66,8,134,4,130,4, + 130,4,130,4,130,4,130,4,130,4,130,4,135,4,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,150,196,187,68,146,68,146,68,146,68,146,68,187,100, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,64,8, + 128,4,128,4,137,196,158,68,136,68,136,68,136,68,136,68, + 156,228,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,4,143,132,144,68,144,68,144,68,144,68, + 144,68,143,132,128,4,64,8,48,48,14,14,28,16,1,255, + 48,48,64,8,128,4,128,4,139,132,156,68,136,36,136,36, + 136,36,140,68,139,132,136,4,92,8,48,48,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,135,68,136,196,144,68, + 144,68,144,68,136,196,135,68,128,68,64,232,48,48,14,14, + 28,16,1,255,48,48,64,8,128,4,128,4,137,196,158,100, + 136,4,136,4,136,4,136,4,156,4,128,4,64,8,48,48, + 14,14,28,16,1,255,48,48,64,8,128,4,128,4,135,196, + 136,36,136,4,135,196,128,36,136,36,135,196,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,64,8,128,4,130,4, + 130,4,143,132,130,4,130,4,130,4,130,68,131,132,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,136,68,152,196,136,68,136,68,136,68,136,196,143,100, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,64,8, + 128,4,128,4,156,116,136,36,132,68,132,68,130,132,130,132, + 129,4,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,4,191,116,146,36,146,36,137,68,139,68, + 132,132,132,132,128,4,64,8,48,48,14,14,28,16,1,255, + 48,48,64,8,128,4,128,4,156,228,136,68,132,132,131,4, + 132,132,136,68,156,228,128,4,64,8,48,48,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,184,228,144,68,136,132, + 133,4,130,4,130,4,135,4,128,4,64,8,48,48,14,14, + 28,16,1,255,48,48,64,8,128,4,128,4,135,228,132,68, + 136,132,129,4,130,4,132,36,143,196,128,4,64,8,48,48, + 15,15,30,16,0,255,7,192,24,48,33,8,66,132,68,68, + 132,66,132,66,135,194,132,66,132,66,68,68,76,100,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,132,68,68,132,34,132,66,135,130,132,66,132,34,68,68, + 79,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,196,68,36,132,2,132,2,132,2,132,2, + 132,2,68,36,67,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,132,68,68,132,34,132,34, + 132,34,132,34,132,34,68,68,79,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,79,228,68,36, + 132,2,132,2,135,130,132,2,132,2,68,36,79,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,68,36,132,2,132,2,135,130,132,2,132,2,68,4, + 78,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,196,68,36,132,2,132,2,132,226,132,34, + 132,34,68,100,67,164,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,228,68,68,132,66,132,66, + 135,194,132,66,132,66,68,68,78,228,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,67,132,65,4, + 129,2,129,2,129,2,129,2,129,2,65,4,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 65,196,64,132,128,130,128,130,128,130,128,130,128,130,72,132, + 71,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,78,100,68,68,132,130,133,2,134,2,133,2, + 132,130,68,68,78,100,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,4,68,4,132,2,132,2, + 132,2,132,2,132,2,68,36,79,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,76,100,70,196, + 134,194,133,66,133,66,132,66,132,66,68,68,78,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 76,100,68,68,134,66,134,66,133,66,133,66,132,194,68,196, + 76,100,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,132,68,68,136,34,136,34,136,34,136,34, + 136,34,68,68,67,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,132,68,68,132,66,132,66, + 135,130,132,2,132,2,68,4,78,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,67,132,68,68, + 136,34,136,34,136,34,136,34,137,162,68,68,67,164,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,132,68,68,132,66,132,66,135,130,133,2,132,130,68,68, + 78,36,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,132,68,68,132,2,132,2,131,130,128,66, + 128,66,68,68,67,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,228,73,36,129,2,129,2, + 129,2,129,2,129,2,65,4,67,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,78,228,68,68, + 132,66,132,66,132,66,132,66,132,66,68,68,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 76,100,68,68,132,66,132,66,130,130,130,130,130,130,65,4, + 65,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,76,100,69,68,133,66,133,66,133,66,133,66, + 134,194,68,68,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,228,68,68,132,66,130,130, + 129,2,130,130,132,66,68,68,78,228,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,78,228,68,68, + 132,66,130,130,129,2,129,2,129,2,65,4,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,72,36,128,66,128,130,129,2,130,2,132,2,72,36, + 79,228,32,8,24,48,7,192,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,143,132,144,68,128,68,143,196,144,68, + 144,68,143,180,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,40,16,88,8,136,4,139,132,140,68,136,36,136,36, + 136,36,140,68,155,132,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,64,8,128,4,135,132,136,68,144,4, + 144,4,144,4,136,100,135,132,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,80,64,200,128,68,135,68,136,196, + 144,68,144,68,144,68,144,68,143,164,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,135,132, + 136,68,144,36,159,228,144,4,136,36,135,196,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,35,144,66,200,130,4, + 143,132,130,4,130,4,130,4,130,4,130,4,135,4,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,196,135,132,136,68,136,68,143,132,144,4,159,196,144,36, + 80,40,47,208,31,224,14,14,28,16,1,255,31,224,40,16, + 88,8,136,4,139,196,140,68,136,68,136,68,136,68,136,68, + 156,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 33,16,65,8,128,4,129,4,131,4,129,4,129,4,129,4, + 129,4,131,132,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,33,16,65,8,128,4,129,4,131,4,129,4,129,4, + 129,4,129,4,129,4,89,8,38,16,31,224,14,14,28,16, + 1,255,31,224,40,16,88,8,136,4,137,228,136,132,139,4, + 141,132,136,196,136,100,156,244,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,34,16,70,8,130,4,130,4,130,4, + 130,4,130,4,130,4,130,4,135,4,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,150,196, + 187,68,146,68,146,68,146,68,146,68,187,100,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,64,8,128,4, + 139,196,156,68,136,68,136,68,136,68,136,68,156,228,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,4,135,196,136,36,136,36,136,36,136,36,136,36,135,196, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 64,8,128,4,139,132,156,68,136,36,136,36,136,36,140,68, + 139,132,72,8,40,16,31,224,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,135,68,136,196,144,68,144,68,144,68, + 136,196,135,68,64,72,32,80,31,224,14,14,28,16,1,255, + 31,224,32,16,64,8,128,4,137,196,158,100,136,4,136,4, + 136,4,136,4,156,4,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,64,8,128,4,135,196,136,36,140,4, + 131,132,128,100,136,36,135,196,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,16,64,8,130,4,130,4,143,132, + 130,4,130,4,130,4,130,68,131,132,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,136,68, + 152,196,136,68,136,68,136,68,136,68,143,164,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,64,8,128,4, + 156,116,136,36,132,68,132,68,130,132,130,132,129,4,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,4,247,116,162,36,162,36,147,68,149,68,136,132,136,132, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 64,8,128,4,184,228,136,132,133,4,130,4,133,4,136,132, + 184,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,184,228,144,68,136,132,133,4,130,4, + 130,4,135,4,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,32,16,64,8,128,4,143,196,136,68,144,132,131,4, + 132,4,136,68,159,132,64,8,32,16,31,224,16,15,30,16, + 0,254,7,224,24,24,32,4,67,194,68,34,132,33,132,33, + 132,33,132,33,132,33,68,34,67,194,32,4,24,24,7,224, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,188, + 231,60,247,188,247,188,227,28,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 231,220,247,188,247,124,227,28,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 231,220,247,60,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,246,188, + 230,188,246,28,247,188,227,188,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,28, + 231,124,247,60,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,252,246,60,246,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,246,60, + 231,188,247,188,247,124,227,124,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,220,247,60,246,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,220,247,28,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,231,156, + 251,108,247,108,239,108,227,156,127,248,127,248,63,240,15,192, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 144,137,161,133,160,133,160,133,145,201,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,145,137,160,69,160,133,161,5,145,201,80,10, + 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, + 24,24,35,196,76,50,80,10,145,137,160,69,161,133,160,69, + 145,137,80,10,76,50,35,196,24,24,7,224,16,15,30,16, + 0,254,7,224,24,24,35,196,76,50,80,10,146,137,162,133, + 163,197,160,133,144,137,80,10,76,50,35,196,24,24,7,224, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 145,201,161,5,161,133,160,69,145,137,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,145,137,162,5,163,133,162,69,145,137,80,10, + 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, + 24,24,35,196,76,50,80,10,145,201,160,69,160,69,160,133, + 144,137,80,10,76,50,35,196,24,24,7,224,16,15,30,16, + 0,254,7,224,24,24,35,196,76,50,80,10,145,137,162,69, + 161,133,162,69,145,137,80,10,76,50,35,196,24,24,7,224, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 145,137,162,69,161,197,160,69,145,137,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,146,105,166,149,162,149,162,149,151,105,80,10, + 76,50,35,196,24,24,7,224,14,13,26,16,1,255,15,192, + 63,240,127,248,127,248,252,252,251,124,251,124,251,124,252,252, + 127,248,127,248,63,240,15,192}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 6, '1' Height: 3 + Calculated Max Values w= 8 h=10 x= 2 y= 4 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent =11 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_75r[580] U8G_SECTION(".progmem.u8g_font_unifont_75r") = { + 0,16,16,0,254,6,1,137,0,0,32,79,0,11,0,8, + 0,7,7,7,8,1,1,254,254,254,254,254,254,254,7,7, + 7,8,1,1,254,130,130,130,130,130,254,7,7,7,8,1, + 1,124,130,130,130,130,130,124,7,7,7,8,1,1,254,130, + 186,186,186,130,254,7,7,7,8,1,1,254,130,254,130,254, + 130,254,7,7,7,8,1,1,254,170,170,170,170,170,254,7, + 7,7,8,1,1,254,170,254,170,254,170,254,7,7,7,8, + 1,1,254,166,146,202,166,146,254,7,7,7,8,1,1,254, + 202,146,166,202,146,254,7,7,7,8,1,1,254,170,214,170, + 214,170,254,4,4,4,8,2,4,240,240,240,240,4,4,4, + 8,2,4,240,144,144,240,7,4,4,8,1,4,254,254,254, + 254,7,4,4,8,1,4,254,130,130,254,4,7,7,8,2, + 2,240,240,240,240,240,240,240,4,7,7,8,2,2,240,144, + 144,144,144,144,240,8,3,3,8,0,4,63,126,252,8,3, + 3,8,0,4,63,66,252,6,6,6,8,1,3,48,48,120, + 120,252,252,6,6,6,8,1,3,48,48,72,72,132,252,6, + 3,3,8,1,3,48,120,252,6,3,3,8,1,3,48,72, + 252,6,6,6,8,1,3,192,240,252,252,240,192,6,6,6, + 8,1,3,192,176,140,140,176,192,4,4,4,8,2,4,192, + 240,240,192,4,4,4,8,2,4,192,176,176,192,6,5,5, + 8,1,3,192,240,252,240,192,6,5,5,8,1,3,192,176, + 140,176,192,6,6,6,8,1,3,252,252,120,120,48,48,6, + 6,6,8,1,3,252,132,72,72,48,48,6,3,3,8,1, + 3,252,120,48,6,3,3,8,1,3,252,72,48,6,6,6, + 8,1,3,12,60,252,252,60,12,6,6,6,8,1,3,12, + 52,196,196,52,12,4,4,4,8,2,4,48,240,240,48,4, + 4,4,8,2,4,48,208,208,48,6,5,5,8,1,3,12, + 60,252,60,12,6,5,5,8,1,3,12,52,196,52,12,7, + 7,7,8,1,2,16,56,124,254,124,56,16,7,7,7,8, + 1,2,16,40,68,130,68,40,16,7,7,7,8,1,2,16, + 40,84,186,84,40,16,7,7,7,8,1,2,56,68,178,186, + 154,68,56,6,10,10,8,1,1,48,48,72,72,132,132,72, + 72,48,48,7,7,7,8,1,2,56,68,130,130,130,68,56, + 7,7,7,8,1,2,40,0,130,0,130,0,40,7,7,7, + 8,1,2,56,108,170,170,170,108,56,7,7,7,8,1,2, + 56,68,146,170,146,68,56,7,7,7,8,1,2,56,124,254, + 254,254,124,56}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 8 + Calculated Max Values w=16 h=16 x= 3 y= 6 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_76[2532] U8G_SECTION(".progmem.u8g_font_unifont_76") = { + 0,16,16,0,254,10,2,68,4,220,32,159,0,14,254,10, + 0,7,12,12,8,1,0,16,146,68,0,56,124,124,56,0, + 68,146,16,8,4,4,8,0,6,32,118,255,126,7,8,8, + 8,1,2,56,124,254,16,16,16,16,32,16,16,32,16,0, + 254,139,200,3,192,47,241,4,36,138,80,40,18,10,80,73, + 148,4,33,71,224,8,16,16,136,120,30,16,136,8,16,7, + 224,7,11,11,8,1,0,68,68,72,72,80,82,4,96,144, + 144,96,7,6,6,8,1,3,16,16,254,56,108,68,7,7, + 7,8,1,3,16,16,238,68,84,108,68,5,9,9,8,2, + 0,8,16,32,64,128,64,40,24,56,6,8,8,8,1,0, + 252,132,136,144,160,148,140,156,8,8,8,8,0,0,60,66, + 129,153,153,129,66,60,8,6,6,8,0,2,24,36,36,102, + 165,66,8,6,6,8,0,2,66,165,102,36,36,24,5,6, + 6,8,1,2,8,16,96,144,144,96,7,9,9,8,1,0, + 12,18,18,12,16,96,144,144,96,7,6,6,8,1,1,124, + 198,0,84,198,254,7,7,7,8,1,1,124,130,186,124,146, + 130,254,7,7,7,8,1,0,254,130,130,130,130,130,254,7, + 8,8,8,1,0,8,254,138,138,202,178,130,254,7,7,7, + 8,1,0,254,130,170,146,170,130,254,5,10,10,8,2,0, + 136,136,80,80,32,32,80,80,136,136,7,12,12,8,1,2, + 10,160,8,130,56,124,254,16,16,16,16,32,12,13,26,16, + 2,0,36,128,73,0,73,0,36,128,36,128,73,0,0,0, + 127,32,255,208,191,80,128,80,128,224,127,0,11,13,26,16, + 2,0,4,0,10,0,17,0,32,128,64,64,128,32,128,32, + 128,32,128,32,128,32,128,32,128,32,255,224,11,13,26,16, + 2,0,4,0,14,0,31,0,63,128,127,192,255,224,255,224, + 255,224,255,224,255,224,255,224,255,224,255,224,13,13,26,16, + 1,255,5,0,15,128,15,128,103,48,242,120,127,240,242,120, + 98,48,4,0,4,0,4,0,8,0,16,0,14,15,30,16, + 1,254,102,24,79,24,223,176,159,160,255,160,255,32,255,56, + 126,228,127,36,127,40,63,152,63,144,31,176,15,32,6,0, + 7,4,4,8,1,2,252,62,62,28,7,4,4,8,1,2, + 126,248,248,112,7,4,4,8,1,2,252,34,50,28,4,7, + 7,8,2,2,16,16,112,208,144,144,96,7,4,4,8,1, + 2,126,136,152,112,4,7,7,8,2,0,96,144,144,208,112, + 16,16,8,12,12,8,0,0,231,165,126,129,165,165,129,90, + 90,66,189,231,4,10,10,8,2,0,224,16,16,32,32,64, + 64,128,128,112,13,13,26,16,1,0,31,192,32,32,69,16, + 141,136,157,200,189,232,255,248,130,8,135,8,143,136,95,208, + 32,32,31,192,15,13,26,16,0,255,4,64,8,32,16,16, + 16,16,19,144,12,96,62,248,68,68,133,66,131,130,2,128, + 4,64,24,48,13,15,30,16,1,254,6,0,2,0,255,248, + 71,16,63,224,2,0,26,192,34,32,31,192,18,64,15,128, + 10,128,7,0,10,128,2,0,5,8,8,8,2,0,112,136, + 80,32,248,32,32,32,5,9,9,8,2,0,32,112,32,248, + 32,48,96,32,32,6,10,10,8,1,0,56,36,36,56,32, + 168,112,32,112,168,5,9,9,8,2,0,32,112,32,248,32, + 32,32,32,32,7,7,7,8,1,0,56,16,146,254,146,16, + 56,8,9,9,8,0,1,30,33,64,194,199,194,64,33,30, + 11,11,22,16,2,0,21,0,27,0,0,0,85,64,164,160, + 164,160,164,160,149,32,78,64,31,0,4,0,11,12,24,16, + 3,255,4,0,21,0,36,128,78,64,213,96,213,96,206,96, + 228,224,223,96,142,32,21,0,4,0,8,8,8,8,0,0, + 12,2,57,121,13,62,99,193,7,8,8,8,1,0,124,146, + 146,146,186,214,146,124,13,12,24,16,1,0,31,192,32,32, + 64,16,64,16,152,72,188,8,254,24,239,56,255,248,127,240, + 63,224,31,192,13,10,20,16,1,0,255,248,255,248,0,0, + 0,0,255,248,255,248,0,0,0,0,255,248,255,248,13,10, + 20,16,1,0,248,248,248,248,0,0,0,0,255,248,255,248, + 0,0,0,0,255,248,255,248,13,10,20,16,1,0,255,248, + 255,248,0,0,0,0,248,248,248,248,0,0,0,0,255,248, + 255,248,13,10,20,16,1,0,248,248,248,248,0,0,0,0, + 248,248,248,248,0,0,0,0,255,248,255,248,13,10,20,16, + 1,0,255,248,255,248,0,0,0,0,255,248,255,248,0,0, + 0,0,248,248,248,248,13,10,20,16,1,0,248,248,248,248, + 0,0,0,0,255,248,255,248,0,0,0,0,248,248,248,248, + 13,10,20,16,1,0,255,248,255,248,0,0,0,0,248,248, + 248,248,0,0,0,0,248,248,248,248,13,10,20,16,1,0, + 248,248,248,248,0,0,0,0,248,248,248,248,0,0,0,0, + 248,248,248,248,7,7,7,8,1,0,146,124,124,238,124,124, + 146,8,10,10,8,0,1,60,66,129,165,129,153,165,129,66, + 60,8,9,9,8,0,1,60,66,129,165,129,165,153,66,60, + 8,9,9,8,0,1,60,126,255,219,255,219,231,126,60,7, + 7,7,8,1,2,146,84,56,238,56,84,146,6,10,10,8, + 2,0,224,48,24,20,20,20,20,24,48,224,6,10,10,8, + 1,0,28,48,96,160,160,160,160,96,48,28,5,11,11,8, + 2,0,136,136,112,136,136,136,112,32,248,32,32,5,9,9, + 8,2,0,112,136,136,136,112,32,248,32,32,5,10,10,8, + 2,1,32,32,248,32,32,112,136,136,136,112,7,8,8,8, + 1,1,14,6,10,112,136,136,136,112,6,10,10,8,1,0, + 4,4,4,116,140,12,20,252,4,4,6,10,10,8,1,0, + 64,64,224,64,88,100,68,72,72,72,7,9,9,8,1,0, + 214,84,124,84,214,16,56,40,56,8,11,11,8,0,255,8, + 89,203,73,73,73,62,8,62,8,8,6,10,10,8,1,0, + 248,132,132,132,248,128,128,128,128,252,7,10,10,8,1,0, + 68,170,40,40,16,16,16,16,16,16,7,7,7,8,1,0, + 130,68,56,68,68,68,56,7,10,10,8,1,0,130,124,40, + 40,40,40,40,40,124,130,7,8,8,8,1,0,124,146,144, + 96,12,18,146,124,8,9,9,8,0,0,28,34,34,18,116, + 148,148,101,2,7,10,10,8,1,0,168,248,170,174,170,170, + 170,170,12,248,7,6,6,8,1,1,56,68,68,238,0,254, + 7,10,10,8,1,0,168,248,168,168,168,168,168,168,170,6, + 7,7,7,8,1,0,30,6,138,82,32,80,136,6,10,10, + 8,1,0,128,240,144,144,156,20,28,16,16,96,6,6,6, + 8,1,2,84,168,0,0,84,168,6,9,9,8,1,0,132, + 132,72,72,252,72,72,132,132,7,13,13,8,1,0,16,56, + 146,186,198,130,68,68,68,130,130,130,254,7,11,11,8,1, + 0,16,56,198,130,68,68,68,130,130,130,254,7,9,9,8, + 1,0,170,254,130,130,68,68,130,130,254,7,10,10,8,1, + 0,16,40,68,68,68,68,40,238,130,254,6,11,11,8,1, + 0,4,60,68,132,132,116,36,68,132,132,252,6,8,8,8, + 1,0,48,72,72,48,72,72,132,252,7,13,13,8,1,0, + 16,56,146,186,254,254,124,124,124,254,254,254,254,7,11,11, + 8,1,0,16,56,254,238,124,124,124,254,254,254,254,7,8, + 8,8,1,0,170,254,254,124,124,254,254,254,7,10,10,8, + 1,0,16,56,108,68,108,124,56,254,254,254,6,11,11,8, + 1,0,4,60,108,252,252,124,60,124,252,252,252,6,8,8, + 8,1,0,48,120,120,48,120,120,252,252,7,10,10,8,1, + 0,16,16,56,124,254,254,254,124,16,56,7,9,9,8,1, + 0,108,146,130,130,130,68,40,16,16,5,10,10,8,2,0, + 32,32,80,80,136,136,80,80,32,32,7,10,10,8,1,0, + 56,56,56,16,254,254,214,16,16,56,7,10,10,8,1,0, + 16,16,40,68,130,130,130,124,16,56,7,9,9,8,1,0, + 108,254,254,254,254,124,56,16,16,5,10,10,8,2,0,32, + 32,112,112,248,248,112,112,32,32,7,10,10,8,1,0,56, + 40,56,16,238,186,214,16,16,56,8,11,11,8,0,0,8, + 81,146,146,146,73,73,73,82,129,126,4,10,10,8,1,0, + 16,16,16,16,16,16,16,112,240,224,6,10,10,8,1,0, + 16,24,20,20,16,16,16,112,240,224,8,11,11,8,0,0, + 28,23,17,17,17,17,113,241,231,15,14,8,11,11,8,0, + 0,28,23,17,29,23,17,113,241,231,15,14,6,12,12,8, + 1,0,128,128,128,128,128,184,204,140,136,144,160,192,6,11, + 11,8,1,0,128,128,156,252,228,132,156,252,228,4,4,6, + 13,13,8,1,255,8,72,76,124,248,200,72,76,124,248,200, + 72,64,7,10,10,8,1,0,40,16,16,146,124,146,16,16, + 16,40,7,10,10,8,1,0,56,40,16,214,186,214,16,16, + 40,16,16,16,32,16,0,254,3,184,4,165,8,179,5,9, + 18,5,40,9,68,31,238,0,40,15,48,73,36,201,13,101, + 22,19,37,120,60,192,0,64,15,16,32,16,0,254,3,128, + 4,64,4,64,8,32,0,40,57,24,27,56,41,0,33,8, + 67,132,64,4,128,34,128,66,126,252,0,64,0,32,15,16, + 32,16,0,254,3,128,4,64,4,64,8,32,0,40,59,24, + 24,184,41,0,34,8,67,132,64,4,128,34,128,66,126,252, + 0,64,0,32,15,16,32,16,0,254,3,128,4,64,4,64, + 8,32,0,40,57,24,24,184,43,0,32,136,67,4,64,4, + 128,34,128,66,126,252,0,64,0,32,15,16,32,16,0,254, + 3,128,4,64,4,64,8,32,0,40,58,152,26,184,43,128, + 32,136,64,132,64,4,128,34,128,66,126,252,0,64,0,32, + 15,16,32,16,0,254,3,128,4,64,4,64,8,32,0,40, + 59,152,26,56,43,0,32,136,67,4,64,4,128,34,128,66, + 126,252,0,64,0,32,15,16,32,16,0,254,3,128,4,64, + 4,64,8,32,0,40,57,152,26,56,43,128,34,72,65,132, + 64,4,128,34,128,66,126,252,0,64,0,32,15,16,32,16, + 0,254,3,128,4,64,4,64,8,32,0,40,59,152,24,184, + 41,0,33,8,65,4,64,4,128,34,128,66,126,252,0,64, + 0,32,15,16,32,16,0,254,3,128,4,64,4,64,8,32, + 0,40,56,24,24,56,40,0,32,8,64,4,64,4,128,34, + 128,66,126,252,0,64,0,32,16,16,32,16,0,254,3,184, + 7,189,15,191,7,15,18,7,56,15,124,31,254,0,56,15, + 48,79,36,207,13,231,31,243,61,248,60,192,0,64,15,16, + 32,16,0,254,7,192,15,224,60,120,123,188,119,172,127,204, + 199,142,231,254,215,238,223,238,111,108,118,220,124,60,62,248, + 15,96,7,192,15,16,32,16,0,254,7,192,24,48,32,8, + 67,132,68,84,64,52,184,114,152,2,168,18,160,18,80,148, + 73,36,67,196,33,8,24,176,7,192,13,12,24,16,0,255, + 7,0,24,192,32,32,64,16,77,144,146,72,146,72,77,144, + 64,16,32,32,24,192,7,0,12,11,22,16,2,0,24,0, + 24,0,16,0,30,0,16,0,95,128,128,128,128,64,129,64, + 66,48,60,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 4 y= 4 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent=-1 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_77[1587] U8G_SECTION(".progmem.u8g_font_unifont_77") = { + 0,16,16,0,254,11,3,99,5,215,32,99,0,14,254,11, + 255,9,9,18,16,3,1,255,128,128,128,128,128,128,128,136, + 128,128,128,128,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,128,128,160,128,128,128,130,128,128,128,128,128,255, + 128,9,9,18,16,3,1,255,128,128,128,160,128,128,128,136, + 128,128,128,130,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,162,128,128,128,128,128,128,128,162,128,128,128,255, + 128,9,9,18,16,3,1,255,128,128,128,162,128,128,128,136, + 128,128,128,162,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,162,128,128,128,162,128,128,128,162,128,128,128,255, + 128,13,12,24,16,0,255,7,0,24,192,32,32,64,16,64, + 16,128,200,128,200,64,16,64,16,32,32,24,192,7,0,13, + 12,24,16,0,255,7,0,24,192,32,32,64,16,64,16,152, + 200,152,200,64,16,64,16,32,32,24,192,7,0,13,12,24, + 16,0,255,7,0,31,192,63,224,127,240,127,240,255,56,255, + 56,127,240,127,240,63,224,15,128,7,0,13,12,24,16,0, + 255,7,0,31,192,63,224,127,240,127,240,231,56,231,56,127, + 240,127,240,63,224,15,128,7,0,13,2,4,16,1,4,255, + 248,255,248,13,2,4,16,1,4,248,248,248,248,13,6,12, + 16,1,2,255,248,255,248,0,0,0,0,255,248,255,248,13, + 6,12,16,1,2,248,248,248,248,0,0,0,0,255,248,255, + 248,13,6,12,16,1,2,255,248,255,248,0,0,0,0,248, + 248,248,248,13,6,12,16,1,2,248,248,248,248,0,0,0, + 0,248,248,248,248,6,11,11,8,1,0,224,156,132,132,228, + 156,128,128,128,128,128,6,11,11,8,1,0,224,252,252,252, + 252,156,128,128,128,128,128,16,14,28,16,0,255,7,50,95, + 124,62,126,124,31,248,39,116,67,34,129,1,0,2,128,4, + 64,8,32,16,16,32,8,64,4,14,12,24,16,1,0,3, + 128,4,64,4,64,3,128,1,0,7,192,1,0,65,8,225, + 28,65,8,33,16,31,224,13,13,26,16,1,0,128,8,64, + 16,32,32,16,64,8,128,5,0,2,0,5,0,8,128,80, + 80,32,32,80,80,128,8,9,14,28,16,3,255,8,0,8, + 0,127,128,137,128,136,0,126,0,9,0,9,0,62,0,72, + 0,60,0,10,0,28,0,8,0,15,11,22,16,0,0,1, + 0,17,16,127,252,57,56,84,84,84,84,146,146,146,146,254, + 254,124,124,56,56,11,8,16,16,2,0,63,128,95,192,143, + 192,135,128,128,0,15,128,18,64,34,32,11,13,26,16,2, + 255,14,0,17,0,17,0,17,0,14,0,4,0,228,224,245, + 224,117,192,53,128,14,0,4,0,4,0,13,13,26,16,1, + 255,2,0,66,16,47,160,16,64,32,32,32,32,226,56,32, + 32,32,32,16,64,47,160,66,16,2,0,15,13,26,16,0, + 0,1,0,2,128,57,56,127,252,253,126,5,64,3,128,1, + 0,1,0,1,0,1,0,1,0,1,0,13,15,30,16,1, + 254,2,0,117,112,141,136,141,136,138,136,77,144,40,160,26, + 192,40,160,77,144,138,136,141,136,141,136,117,112,2,0,15, + 16,32,16,0,254,1,0,2,128,58,184,68,68,132,66,242, + 158,138,162,6,192,6,192,8,32,6,192,6,192,10,160,50, + 152,70,196,121,60,15,15,30,16,0,255,1,0,2,128,4, + 64,4,64,8,0,107,252,136,2,136,34,96,36,24,16,6, + 80,0,136,33,8,38,72,24,48,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,13,14,28,16,1,255,2,0,5,0,5,0,8,128,8, + 128,18,64,18,64,34,32,34,32,66,16,64,16,130,8,128, + 8,255,248,6,11,11,8,1,255,4,8,16,32,64,252,8, + 16,32,64,128,11,9,18,16,2,0,59,128,68,64,138,32, + 138,32,68,64,59,128,17,0,59,128,17,0,11,11,22,16, + 2,0,7,0,3,0,5,0,56,224,68,96,142,160,149,0, + 104,128,48,128,17,0,14,0,10,14,28,16,3,255,1,192, + 0,192,1,64,14,0,17,0,56,128,84,128,139,0,134,0, + 68,0,56,0,16,0,56,0,16,0,8,12,12,16,4,254, + 7,3,5,56,68,130,130,68,56,16,56,16,11,10,20,16, + 2,0,0,224,0,96,2,160,1,0,58,128,68,0,130,0, + 130,0,68,0,56,0,15,13,26,16,0,254,224,14,192,6, + 168,10,16,16,43,160,4,64,8,32,8,32,4,64,3,128, + 1,0,3,128,1,0,7,12,12,8,0,0,16,56,84,16, + 56,16,56,68,130,130,68,56,14,7,14,16,0,255,56,0, + 68,16,130,136,131,252,130,136,68,16,56,0,7,7,7,8, + 0,255,56,68,130,130,130,68,56,7,7,7,8,0,255,56, + 124,254,254,254,124,56,5,5,5,8,2,0,112,136,136,136, + 112,11,6,12,16,2,0,59,128,68,64,138,32,138,32,68, + 64,59,128,11,7,14,16,3,255,4,0,117,192,142,32,142, + 32,142,32,117,192,4,0,13,5,10,16,1,0,112,112,136, + 136,143,136,136,136,112,112,14,10,20,16,2,0,24,0,39, + 128,64,124,128,0,128,0,128,0,128,0,64,124,39,128,24, + 0,11,13,26,16,2,0,31,0,10,0,63,128,64,64,128, + 32,128,32,64,64,64,64,64,64,32,128,32,128,32,128,31, + 0,7,9,9,8,0,254,56,68,130,130,68,56,16,16,16, + 6,9,9,8,0,254,112,136,4,4,8,48,32,248,32,7, + 10,10,8,0,254,16,40,68,130,68,40,16,16,124,16,7, + 10,10,8,0,254,146,84,56,254,56,84,146,16,124,16,13, + 11,22,16,1,0,2,0,2,0,2,0,2,0,114,112,8, + 128,5,0,242,120,8,128,5,0,2,0,6,11,11,8,1, + 0,36,40,48,40,36,32,112,136,136,136,112,6,10,10,8, + 1,254,56,112,224,224,224,112,56,16,124,16,8,7,7,8, + 0,3,66,36,24,255,24,36,66,7,8,8,8,0,0,68, + 68,68,40,40,40,16,254,7,8,8,8,0,0,254,16,40, + 40,40,68,68,68,7,8,8,8,1,0,252,132,132,132,148, + 252,16,30,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,12, + 9,18,16,2,0,31,128,96,96,134,16,134,16,224,112,191, + 208,169,80,105,96,31,128,12,12,24,16,2,0,31,128,96, + 96,134,16,134,16,224,112,191,208,169,80,233,112,191,208,169, + 80,105,96,31,128,14,11,22,16,1,255,31,224,112,56,207, + 204,188,244,188,244,143,196,160,20,171,84,203,76,112,56,31, + 224,14,14,28,16,1,255,31,224,112,56,207,204,188,244,188, + 244,143,196,160,20,171,84,139,68,160,20,171,84,203,76,112, + 56,31,224}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 15, '1' Height: 13 + Calculated Max Values w=16 h=15 x= 7 y= 4 dx=16 dy= 0 ascent=14 len=30 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =15 descent=-2 + X Font ascent =15 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[6975] U8G_SECTION(".progmem.u8g_font_unifont_78_79") = { + 0,16,16,0,254,15,7,255,11,108,1,255,254,14,254,15, + 254,15,11,22,16,0,2,56,0,124,0,108,0,124,0,60, + 0,14,0,127,252,255,254,217,192,248,224,112,0,14,11,22, + 16,0,1,112,8,248,60,216,120,254,240,127,224,7,192,127, + 224,254,240,216,120,248,60,112,8,15,11,22,16,0,255,112, + 0,248,224,217,192,255,254,127,252,14,0,60,0,124,0,108, + 0,124,0,56,0,15,11,22,16,0,1,112,12,136,50,174, + 68,129,136,121,16,6,32,120,80,129,136,174,68,136,50,112, + 12,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,15,15,30,16,0,255,7,192,24,48,32, + 8,65,196,71,228,143,242,143,114,158,98,156,2,159,2,79, + 4,70,4,32,8,24,48,7,192,15,15,30,16,0,255,7, + 192,25,48,35,136,67,132,65,4,131,130,135,194,135,194,135, + 194,139,162,92,116,88,52,32,8,24,48,7,192,15,14,28, + 16,0,255,8,0,15,0,6,0,7,192,195,128,227,192,127, + 254,127,254,227,192,195,128,7,192,6,0,15,0,8,0,14, + 7,14,16,1,3,255,252,192,12,176,52,140,196,179,52,192, + 12,255,252,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,15,15,30,16,0, + 255,24,48,36,72,34,136,18,144,17,16,9,32,8,32,124, + 252,146,130,146,114,146,34,146,66,124,4,32,8,31,240,15, + 13,26,16,1,0,0,16,0,56,0,112,7,238,25,234,35, + 154,71,10,142,10,223,202,36,10,95,250,224,10,192,14,12, + 12,24,16,1,0,48,0,76,0,170,0,149,0,226,128,81, + 64,40,160,20,80,10,80,5,144,2,48,1,240,15,7,14, + 16,0,3,63,240,80,40,143,244,168,22,143,244,80,40,63, + 240,12,12,24,16,1,0,1,240,2,48,5,144,10,80,20, + 80,40,160,81,64,226,128,149,0,170,0,76,0,48,0,15, + 7,14,16,0,3,0,240,121,8,134,108,128,254,134,108,121, + 8,0,240,15,7,14,16,0,3,0,224,121,240,255,56,255, + 14,255,56,121,240,0,224,13,10,20,16,1,255,0,8,0, + 16,0,32,128,64,128,128,65,0,66,0,36,0,40,0,16, + 0,15,11,22,16,0,255,0,4,0,14,64,28,224,56,224, + 112,112,224,113,192,59,128,63,0,30,0,12,0,11,11,22, + 16,2,1,64,64,224,224,113,192,59,128,31,0,14,0,31, + 0,59,128,113,192,224,224,64,64,15,15,30,16,0,255,16, + 16,56,56,124,124,254,254,127,252,63,248,31,240,15,224,31, + 240,63,248,127,252,254,254,124,124,56,56,16,16,12,13,26, + 16,1,0,192,48,96,192,99,128,54,0,28,0,28,0,54, + 0,51,0,97,128,96,192,192,96,192,48,64,0,12,14,28, + 16,1,255,192,48,224,224,99,192,119,0,62,0,28,0,62, + 0,55,0,115,128,97,192,224,224,192,112,192,32,64,0,15, + 15,30,16,0,255,7,192,4,64,5,64,5,64,5,64,253, + 126,129,2,191,250,129,2,253,126,5,64,5,64,5,64,4, + 64,7,192,15,15,30,16,0,255,7,192,7,192,7,192,7, + 192,7,192,255,254,255,254,255,254,255,254,255,254,7,192,7, + 192,7,192,7,192,7,192,15,15,30,16,0,255,3,128,3, + 128,3,128,3,128,3,128,3,128,252,126,252,126,252,126,3, + 128,3,128,3,128,3,128,3,128,3,128,15,15,30,16,0, + 255,7,192,7,192,7,192,7,192,7,192,248,62,248,62,248, + 62,248,62,248,62,7,192,7,192,7,192,7,192,7,192,9, + 11,22,16,3,1,28,0,28,0,28,0,255,128,255,128,255, + 128,28,0,28,0,28,0,28,0,28,0,13,15,30,16,1, + 255,15,0,9,128,9,128,9,128,249,240,128,24,128,24,249, + 248,121,248,9,128,9,128,9,128,9,128,15,128,7,128,13, + 14,28,16,1,255,31,192,16,64,247,120,135,8,191,232,191, + 232,191,232,135,8,247,120,23,64,23,64,23,64,16,64,31, + 192,15,15,30,16,0,255,31,240,7,192,3,128,131,130,131, + 130,195,134,255,254,255,254,255,254,195,134,131,130,131,130,3, + 128,7,192,31,240,15,15,30,16,0,255,1,0,2,128,4, + 64,4,64,255,254,80,20,80,20,32,8,80,20,80,20,255, + 254,4,64,4,64,2,128,1,0,15,15,30,16,0,255,3, + 128,7,192,7,192,3,128,3,128,97,12,249,62,255,254,249, + 62,97,12,3,128,3,128,7,192,7,192,3,128,15,15,30, + 16,0,255,3,128,7,192,7,192,7,192,3,128,113,28,249, + 62,255,254,249,62,113,28,3,128,7,192,7,192,7,192,3, + 128,15,15,30,16,0,255,7,192,15,224,15,224,7,192,99, + 140,243,158,255,254,255,254,255,254,243,158,99,140,7,192,15, + 224,15,224,7,192,16,15,30,16,0,255,1,0,3,128,7, + 192,7,192,1,0,49,12,113,14,255,255,113,14,49,12,1, + 0,7,192,7,192,3,128,1,0,15,15,30,16,0,255,1, + 0,3,128,3,128,7,192,7,192,31,240,127,252,255,254,127, + 252,31,240,7,192,7,192,3,128,3,128,1,0,15,15,30, + 16,0,255,1,0,2,128,2,128,4,64,4,64,24,48,96, + 12,128,2,96,12,24,48,4,64,4,64,2,128,2,128,1, + 0,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,15,12,24,16,0,1,1,0,2,128,2, + 128,252,126,64,4,56,56,8,32,16,16,17,16,38,200,40, + 40,48,24,15,15,30,16,0,255,7,192,31,240,62,248,126, + 252,124,124,192,6,240,30,248,62,240,30,241,30,103,204,111, + 236,63,248,31,240,7,192,15,12,24,16,0,1,1,0,3, + 128,3,128,255,254,124,124,56,56,8,32,28,112,31,240,62, + 248,56,56,48,24,15,12,24,16,0,1,1,0,2,128,2, + 128,252,126,67,132,39,200,23,208,19,144,16,16,39,200,40, + 40,48,24,15,12,24,16,0,1,1,0,2,128,28,112,225, + 14,79,228,35,136,23,208,20,80,17,16,34,136,44,104,48, + 24,15,12,24,16,0,1,1,0,2,128,29,112,227,142,95, + 244,47,232,23,208,22,208,21,80,34,136,44,104,48,24,15, + 13,26,16,0,0,1,0,3,128,5,192,249,254,93,140,39, + 184,19,240,15,208,29,144,25,208,50,232,44,120,48,24,16, + 13,26,16,0,0,1,0,2,128,2,192,255,254,68,71,56, + 62,8,60,22,208,17,24,39,200,47,44,60,28,24,12,15, + 13,26,16,0,0,3,128,3,128,3,128,67,132,243,158,63, + 252,15,240,63,252,243,158,67,132,3,128,3,128,3,128,15, + 13,26,16,0,0,3,128,3,128,3,128,67,132,243,158,60, + 124,8,48,60,124,243,158,67,132,3,128,3,128,3,128,15, + 15,30,16,0,255,1,0,1,0,33,8,17,16,13,96,15, + 224,7,192,255,254,7,192,15,224,13,96,17,16,33,8,1, + 0,1,0,15,15,30,16,0,255,1,0,1,0,33,8,27, + 176,31,240,15,224,31,224,255,254,31,240,15,224,31,240,27, + 176,33,8,1,0,1,0,15,15,30,16,0,255,1,0,2, + 128,60,248,44,200,38,152,50,184,125,76,131,134,77,124,58, + 152,50,200,38,104,62,120,2,128,1,0,13,13,26,16,1, + 0,2,0,2,0,2,0,135,8,119,112,63,224,31,192,63, + 224,119,112,135,8,2,0,2,0,2,0,15,15,30,16,0, + 255,8,32,8,32,12,96,6,192,230,206,59,184,31,240,7, + 192,31,240,59,184,230,206,6,192,12,96,8,32,8,32,15, + 15,30,16,0,255,8,32,12,96,14,224,15,224,255,254,127, + 252,63,248,31,240,63,248,127,252,255,254,15,224,14,224,12, + 96,8,32,15,15,30,16,0,255,1,0,25,48,15,224,79, + 228,127,252,63,248,63,248,255,254,63,248,63,248,127,252,79, + 228,15,224,25,48,1,0,15,15,30,16,0,255,9,32,73, + 36,37,72,21,80,203,166,55,216,15,224,255,254,15,224,55, + 216,203,166,21,80,37,72,73,36,9,32,15,15,30,16,0, + 255,1,0,3,128,3,128,3,128,225,14,113,28,13,96,3, + 128,13,96,113,28,225,14,3,128,3,128,3,128,1,0,15, + 15,30,16,0,255,3,128,7,192,7,192,99,140,241,30,243, + 158,60,120,8,32,60,120,243,158,241,30,99,140,7,192,7, + 192,3,128,15,15,30,16,0,255,3,128,7,192,7,192,99, + 140,243,158,241,30,61,120,7,192,61,120,241,30,243,158,99, + 140,7,192,7,192,3,128,15,15,30,16,0,255,3,128,4, + 64,4,64,116,92,252,126,254,254,127,252,33,8,67,132,135, + 194,143,226,119,220,7,192,7,192,3,128,15,14,28,16,0, + 0,3,128,7,192,15,224,119,220,255,254,252,126,240,30,112, + 28,24,48,62,248,127,252,126,252,126,252,60,120,15,14,28, + 16,0,0,3,128,4,64,9,32,121,60,133,66,179,154,143, + 226,111,236,23,208,39,200,73,36,82,148,66,132,60,120,15, + 15,30,16,0,255,3,128,60,120,69,68,81,20,77,100,111, + 236,134,194,188,122,134,194,111,236,77,100,81,20,69,68,60, + 120,3,128,15,15,30,16,0,255,7,192,30,240,62,248,92, + 116,103,204,252,126,232,46,136,34,232,46,252,126,103,204,92, + 116,62,248,30,240,7,192,15,15,30,16,0,255,3,128,4, + 192,4,192,116,220,188,230,159,158,79,60,63,248,114,100,230, + 114,206,122,118,92,6,64,6,64,3,128,15,13,26,16,0, + 0,1,0,5,64,3,128,201,38,49,24,77,100,3,128,77, + 100,49,24,201,38,3,128,5,64,1,0,15,13,26,16,0, + 0,1,0,5,64,11,160,201,38,49,24,77,100,131,130,77, + 100,49,24,201,38,11,160,5,64,1,0,15,15,30,16,0, + 255,9,32,13,96,7,192,19,144,201,38,49,24,237,110,3, + 128,237,110,49,24,201,38,17,16,7,192,13,96,9,32,14, + 14,28,16,1,255,7,128,71,136,39,144,19,32,11,64,224, + 28,251,124,251,124,224,28,11,64,19,32,39,144,71,136,7, + 128,15,15,30,16,0,255,7,192,71,196,39,200,19,144,11, + 160,224,14,251,190,251,190,251,190,224,14,11,160,19,144,39, + 200,71,196,7,192,15,15,30,16,0,255,3,128,7,192,7, + 192,119,220,251,190,249,62,125,124,7,192,125,124,249,62,251, + 190,119,220,7,192,7,192,3,128,15,15,30,16,0,255,1, + 0,3,128,51,152,49,24,9,32,5,64,99,140,255,254,99, + 140,5,64,9,32,49,24,51,152,3,128,1,0,15,15,30, + 16,0,255,1,0,3,128,51,152,59,184,25,48,7,192,119, + 220,255,254,119,220,7,192,25,48,59,184,51,152,3,128,1, + 0,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,13,13,26,16,2,255,15,0,48,192,64, + 32,64,48,128,16,128,24,128,24,128,24,64,56,64,48,48, + 240,15,224,7,128,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,12,12,24,16,3,1,255, + 192,128,64,128,112,128,112,128,112,128,112,128,112,128,112,128, + 112,255,240,63,240,63,240,12,12,24,16,3,1,63,240,63, + 240,255,240,128,112,128,112,128,112,128,112,128,112,128,112,128, + 112,128,64,255,192,12,12,24,16,3,1,255,192,128,96,128, + 112,128,112,128,112,128,112,128,112,128,112,128,112,255,240,127, + 240,63,240,12,12,24,16,3,1,63,240,127,240,255,240,128, + 112,128,112,128,112,128,112,128,112,128,112,128,112,128,96,255, + 192,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,13,13,26, + 16,1,0,2,0,7,0,15,128,7,0,34,32,112,112,248, + 248,112,112,34,32,7,0,15,128,7,0,2,0,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,2,15,15,16,7,255,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,4,15,15,16,6,255,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,8,15,15,16,4, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 7,10,10,16,4,4,28,112,192,248,252,254,254,254,124,56, + 7,10,10,16,4,4,56,124,254,254,254,126,62,6,28,112, + 15,10,20,16,0,4,28,28,112,112,192,192,248,248,252,252, + 254,254,254,254,254,254,124,124,56,56,15,10,20,16,0,4, + 56,56,124,124,254,254,254,254,254,254,126,126,62,62,6,6, + 28,28,112,112,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,14,14,28,16, + 1,255,0,32,0,32,31,252,127,240,252,32,252,32,126,32, + 31,224,0,32,96,96,240,64,240,192,99,128,62,0,9,15, + 30,16,3,255,28,0,127,0,255,128,255,128,255,128,127,0, + 28,0,8,0,8,0,0,0,28,0,62,0,62,0,62,0, + 28,0,9,13,26,16,3,0,119,0,255,128,255,128,255,128, + 127,0,28,0,8,0,0,0,28,0,62,0,62,0,62,0, + 28,0,15,13,26,16,0,255,60,120,126,252,255,254,255,254, + 255,254,127,252,127,252,63,248,31,240,15,224,7,192,3,128, + 1,0,13,15,30,16,1,255,56,0,126,0,255,0,255,128, + 255,192,255,224,127,240,63,248,127,240,255,224,255,192,255,128, + 255,0,126,0,56,0,15,14,28,16,0,255,3,0,12,134, + 56,142,103,248,1,0,57,56,126,252,255,254,255,254,127,252, + 63,248,31,226,7,238,0,248,14,15,30,16,1,254,97,152, + 99,200,55,236,23,228,23,252,19,252,115,252,157,248,147,248, + 83,248,103,240,39,240,55,224,19,192,1,128,4,12,12,8, + 3,255,16,32,96,192,192,192,192,192,192,96,32,16,4,12, + 12,8,2,255,128,64,96,48,48,48,48,48,48,96,64,128, + 5,12,12,8,2,255,24,48,112,224,224,224,224,224,224,112, + 48,24,5,12,12,8,2,255,192,96,112,56,56,56,56,56, + 56,112,96,192,5,12,12,8,2,255,24,48,48,96,96,192, + 192,96,96,48,48,24,5,12,12,8,2,255,192,96,96,48, + 48,24,24,48,48,96,96,192,6,12,12,8,2,255,28,56, + 56,112,112,224,224,112,112,56,56,28,6,12,12,8,1,255, + 224,112,112,56,56,28,28,56,56,112,112,224,7,12,12,8, + 1,255,30,60,60,120,120,240,240,120,120,60,60,30,7,12, + 12,8,0,255,240,120,120,60,60,30,30,60,60,120,120,240, + 3,12,12,8,3,255,32,64,128,128,128,128,128,128,128,128, + 64,32,3,12,12,8,2,255,128,64,32,32,32,32,32,32, + 32,32,64,128,6,12,12,8,1,255,60,112,96,96,48,48, + 224,48,48,96,112,60,6,12,12,8,1,255,240,56,24,24, + 48,48,28,48,48,24,56,240,15,15,30,16,0,255,7,192, + 31,240,63,248,126,252,124,252,250,254,254,254,254,254,254,254, + 254,254,126,252,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,119,220,255,222,255,222, + 255,62,252,254,251,254,119,220,112,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,120,60,119,220, + 255,222,255,222,255,62,255,222,255,222,119,220,120,60,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 127,188,127,60,254,190,253,190,251,190,247,190,224,14,127,188, + 126,12,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,112,28,119,252,247,254,240,62,255,222,255,222, + 255,222,119,220,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,119,220,247,254,247,254, + 240,62,247,222,247,222,119,220,120,60,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,112,28,119,220, + 255,190,255,190,255,126,254,254,254,254,125,252,125,252,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 120,60,119,220,247,222,247,222,248,62,247,222,247,222,119,220, + 120,60,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,120,60,119,220,247,222,247,222,248,30,255,222, + 255,222,119,220,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,119,28,102,236,246,238,246,238, + 246,238,246,238,246,238,118,236,99,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,132,65,132, + 131,130,129,130,129,130,129,130,129,130,65,132,65,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,79,228,140,98,128,98,129,194,135,2,140,2,79,228, + 79,228,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,79,228,140,98,128,98,129,194,128,98, + 140,98,79,228,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,228,65,228,131,98,134,98, + 140,98,159,242,159,242,64,100,64,100,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,79,228,79,228, + 140,2,143,194,143,226,128,98,140,98,79,228,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,79,228,140,2,143,194,143,226,140,98,140,98,79,228, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,79,228,79,228,128,98,128,98,128,194,131,130, + 134,2,70,4,70,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,71,196,79,228,140,98,140,98, + 135,194,140,98,140,98,79,228,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,79,228, + 140,98,140,98,143,226,135,226,128,98,79,228,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,228,77,244,157,178,141,178,141,178,141,178,141,178,77,244, + 76,228,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,127,124,126,124,252,126,254,126,254,126,254,126, + 254,126,126,124,126,124,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,112,28,243,158,255,158, + 254,62,248,254,243,254,112,28,112,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,120,60,112,28, + 243,158,255,158,254,62,255,158,243,158,112,28,120,60,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 127,28,126,28,252,158,249,158,243,158,224,14,224,14,127,156, + 127,156,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,112,28,112,28,243,254,240,62,240,30,255,158, + 243,158,112,28,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,112,28,243,254,240,62, + 240,30,243,158,243,158,112,28,120,60,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,112,28,112,28, + 255,158,255,158,255,62,252,126,249,254,121,252,121,252,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 120,60,112,28,243,158,243,158,248,62,243,158,243,158,112,28, + 120,60,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,120,60,112,28,243,158,243,158,240,30,248,30, + 255,158,112,28,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,123,28,114,12,226,78,242,78, + 242,78,242,78,242,78,114,12,115,28,63,248,31,240,7,192, + 15,13,26,16,0,0,31,128,15,192,7,224,3,240,255,248, + 255,252,255,254,255,252,255,248,3,240,7,224,15,192,31,128, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,11,11,22,16, + 2,1,32,0,112,0,248,0,120,0,60,128,12,128,3,128, + 3,192,15,192,1,192,0,32,15,9,18,16,0,2,1,0, + 1,128,224,192,252,240,255,254,252,240,224,192,1,128,1,0, + 11,11,22,16,2,0,0,32,1,192,15,192,3,192,3,128, + 12,128,60,128,120,0,248,0,112,0,32,0,15,9,18,16, + 0,2,2,0,1,0,1,192,0,240,255,254,0,240,1,192, + 1,0,2,0,15,13,26,16,0,0,0,192,1,224,1,240, + 0,248,127,252,255,254,255,254,255,254,127,252,0,248,1,240, + 1,224,0,192,15,11,22,16,0,1,0,16,0,16,0,24, + 0,24,255,252,255,254,255,252,0,24,0,24,0,16,0,16, + 15,13,26,16,0,0,0,16,0,16,0,24,0,24,255,252, + 255,252,255,254,255,252,255,252,0,24,0,24,0,16,0,16, + 15,9,18,16,0,2,0,32,0,48,0,56,170,252,170,254, + 170,252,0,56,0,48,0,32,15,9,18,16,0,2,0,32, + 0,48,170,248,170,252,170,254,170,252,170,248,0,48,0,32, + 15,9,18,16,0,2,0,32,0,48,0,56,255,252,255,254, + 255,252,0,56,0,48,0,32,14,15,30,16,1,255,128,0, + 224,0,88,0,70,0,33,128,32,96,16,24,15,252,31,248, + 63,224,63,128,126,0,120,0,224,0,128,0,14,15,30,16, + 1,255,128,0,224,0,120,0,126,0,63,128,63,224,31,248, + 15,252,16,24,32,96,33,128,70,0,88,0,224,0,128,0, + 14,15,30,16,1,255,128,0,224,0,120,0,126,0,63,128, + 63,224,31,248,15,252,31,248,63,224,63,128,126,0,120,0, + 224,0,128,0,15,8,16,16,0,3,128,0,128,16,192,24, + 127,252,127,254,63,252,0,24,0,16,15,8,16,16,0,2, + 0,16,0,24,63,252,127,254,127,252,192,24,128,16,128,0, + 7,13,13,16,5,0,16,16,24,248,252,252,254,252,252,248, + 24,16,16,15,9,18,16,0,2,0,64,0,64,255,224,255, + 240,255,254,255,240,255,224,0,64,0,64,14,9,18,16,1, + 2,0,192,0,224,255,176,128,24,128,12,128,24,255,176,0, + 224,0,192,14,9,18,16,1,2,0,192,0,224,255,208,192, + 8,192,4,192,8,255,208,0,224,0,192,15,13,26,16,0, + 255,0,8,0,24,0,36,0,68,63,130,64,2,128,6,255, + 30,254,124,5,240,15,192,15,0,12,0,15,13,26,16,0, + 0,12,0,15,0,15,192,5,240,254,124,255,30,128,6,64, + 2,63,130,0,68,0,36,0,24,0,8,15,12,24,16,0, + 0,0,128,0,192,255,160,128,16,128,8,128,4,128,14,128, + 28,255,184,127,240,0,224,0,64,15,12,24,16,0,1,0, + 64,0,224,127,240,255,184,128,28,128,14,128,4,128,8,128, + 16,255,160,0,192,0,128,16,12,24,16,0,0,0,64,0, + 96,0,80,255,200,64,4,64,2,64,7,255,206,127,220,0, + 120,0,112,0,32,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,16,12,24,16,0,1,0, + 32,0,112,0,120,127,220,255,206,64,7,64,2,64,4,255, + 200,0,80,0,96,0,64,14,15,30,16,1,255,15,128,63, + 224,126,240,254,120,254,56,0,28,0,12,0,4,0,12,0, + 28,254,56,254,120,126,240,63,224,15,128,15,7,14,16,0, + 3,254,0,73,8,36,140,31,254,36,140,73,8,254,0,11, + 11,22,16,2,1,16,0,24,0,28,0,252,0,124,0,60, + 32,2,32,1,96,0,224,1,224,7,224,14,5,10,16,1, + 4,248,16,124,24,63,252,124,24,248,16,11,11,22,16,2, + 0,7,224,1,224,0,224,1,96,2,32,60,32,124,0,252, + 0,28,0,24,0,16,0,11,11,22,16,2,1,8,0,12, + 0,14,0,14,0,254,32,126,32,63,96,3,224,1,224,3, + 224,15,224,15,9,18,16,0,2,0,32,252,16,126,24,63, + 252,31,254,63,252,126,24,252,16,0,32,11,11,22,16,2, + 0,15,224,3,224,1,224,3,224,63,96,126,32,254,32,14, + 0,14,0,12,0,8,0,15,11,22,16,0,1,0,96,0, + 240,0,240,120,56,255,12,255,254,255,12,120,56,0,240,0, + 240,0,96,15,9,18,16,0,2,0,64,96,224,120,240,252, + 120,255,254,252,120,120,240,96,224,0,64,15,7,14,16,0, + 3,248,16,124,24,62,28,31,254,62,28,124,24,248,16,15, + 9,18,16,0,2,248,96,252,112,126,120,127,252,63,254,127, + 252,126,120,252,112,248,96,15,9,18,16,0,2,2,32,1, + 16,0,136,255,196,0,2,255,196,0,136,1,16,2,32,6, + 14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,168, + 84,168,84,6,6,6,8,1,0,128,136,144,160,192,252,11, + 12,24,16,2,0,4,0,10,0,10,0,17,0,17,0,36, + 128,42,128,74,64,81,64,159,32,128,32,255,224,5,6,6, + 8,1,0,32,32,32,32,32,248,10,8,16,16,3,1,63, + 192,64,0,129,128,130,64,130,64,129,128,64,0,63,192,10, + 8,16,16,3,1,255,0,0,128,96,64,144,64,144,64,96, + 64,0,128,255,0,5,10,10,8,2,0,112,136,136,16,16, + 32,32,64,64,56,5,10,10,8,2,0,112,136,136,64,64, + 32,32,16,16,224,7,8,8,8,0,0,130,130,84,68,40, + 40,16,16,14,8,16,16,1,1,129,252,130,0,68,0,68, + 0,36,0,36,0,18,0,17,252,14,8,16,16,1,1,254, + 4,1,4,0,136,0,136,0,144,0,144,1,32,254,32,3, + 10,10,8,2,0,64,64,64,64,224,64,64,64,64,64,6, + 14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,168, + 84,168,84,12,14,28,16,2,254,255,240,128,0,64,0,64, + 0,32,0,32,0,32,0,32,0,32,0,32,0,64,0,64, + 0,128,0,128,0,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,9,9,18,16,4,0,8,0,20,0,34,0,65,0,136, + 128,65,0,34,0,20,0,8,0,7,8,8,8,0,0,16, + 16,40,40,68,84,130,130,9,10,20,16,3,0,136,128,136, + 128,136,128,136,128,136,128,136,128,136,128,136,128,73,0,62, + 0,6,6,6,8,1,0,4,4,36,4,4,252,6,6,6, + 8,1,0,252,128,128,144,128,128,12,10,20,16,2,0,224, + 16,48,48,40,80,36,144,35,16,35,16,36,144,40,80,48, + 48,224,16,12,10,20,16,2,0,128,112,192,192,161,64,146, + 64,140,64,140,64,146,64,161,64,192,192,128,112,14,10,20, + 16,1,0,224,28,48,48,40,80,36,144,35,16,35,16,36, + 144,40,80,48,48,224,28,9,12,24,16,3,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,255,128,9,12,24,16,3,0,255,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,13,7,14,16,1,2,5,0,5,0,253,248,5, + 0,253,248,5,0,5,0,13,7,14,16,1,2,5,0,5, + 0,5,0,253,248,5,0,5,0,5,0,14,3,6,16,1, + 4,64,0,191,252,64,0,14,3,6,16,1,4,128,0,255, + 252,128,0,14,3,6,16,1,4,0,4,255,252,0,4,3, + 11,11,16,7,255,64,160,64,64,64,64,64,64,64,64,224, + 7,11,11,8,0,0,16,40,40,68,68,254,68,68,40,40, + 16,13,13,26,16,1,0,2,0,5,0,5,0,8,128,16, + 64,96,48,128,8,96,48,16,64,8,128,5,0,5,0,2, + 0,15,13,26,16,0,0,0,128,1,64,1,64,2,32,4, + 16,24,12,224,2,24,12,4,16,2,32,1,64,1,64,0, + 128,15,13,26,16,1,0,2,0,5,0,5,0,8,128,16, + 64,96,48,128,14,96,48,16,64,8,128,5,0,5,0,2, + 0,15,13,26,16,0,0,31,254,16,2,16,2,16,2,16, + 2,16,2,240,2,16,2,16,2,16,2,16,2,16,2,31, + 254,15,13,26,16,1,0,255,240,128,16,128,16,128,16,128, + 16,128,16,128,30,128,16,128,16,128,16,128,16,128,16,255, + 240,5,13,13,8,2,0,248,160,160,160,160,160,160,160,160, + 160,160,160,248,5,13,13,8,1,0,248,40,40,40,40,40, + 40,40,40,40,40,40,248,4,12,12,8,2,0,16,32,32, + 64,64,128,128,64,64,32,32,16,4,12,12,8,2,0,128, + 64,64,32,32,16,16,32,32,64,64,128,6,12,12,8,1, + 0,20,40,40,80,80,160,160,80,80,40,40,20,6,12,12, + 8,1,0,160,80,80,40,40,20,20,40,40,80,80,160,4, + 12,12,8,3,255,16,32,96,160,160,160,160,160,160,96,32, + 16,4,12,12,8,1,255,128,64,96,80,80,80,80,80,80, + 96,64,128,3,12,12,8,4,255,32,64,128,128,128,128,128, + 128,128,128,64,32,3,12,12,8,1,255,128,64,32,32,32, + 32,32,32,32,32,64,128,11,12,24,16,2,0,4,0,10, + 0,27,0,42,128,106,192,170,160,42,128,42,128,42,128,42, + 128,42,128,42,128,11,12,24,16,2,0,42,128,42,128,42, + 128,42,128,42,128,42,128,170,160,106,192,42,128,27,0,10, + 0,4,0,12,10,20,16,2,1,7,128,8,64,16,32,32, + 16,168,16,112,16,32,16,0,32,8,64,7,128,12,10,20, + 16,2,1,30,0,33,0,64,128,128,64,129,80,128,224,128, + 64,64,0,33,0,30,0,15,7,14,16,0,2,3,128,5, + 72,9,36,255,254,9,36,5,72,3,128,15,5,10,16,0, + 3,32,0,64,0,255,254,64,0,32,0,15,5,10,16,0, + 3,0,8,0,4,255,254,0,4,0,8,14,5,10,16,0, + 3,32,16,64,8,255,252,64,8,32,16,15,7,14,16,0, + 2,16,0,32,0,127,254,128,0,127,254,32,0,16,0,15, + 7,14,16,0,2,0,16,0,8,255,252,0,2,255,252,0, + 8,0,16,14,7,14,16,0,2,16,32,32,16,127,248,128, + 4,127,248,32,16,16,32,14,5,10,16,0,3,32,4,64, + 4,255,252,64,4,32,4,14,5,10,16,1,3,128,16,128, + 8,255,252,128,8,128,16,14,7,14,16,0,2,16,4,32, + 4,127,252,128,4,127,252,32,4,16,4,14,7,14,16,1, + 2,128,32,128,16,255,248,128,4,255,248,128,16,128,32,15, + 5,10,16,0,3,0,8,34,36,213,94,8,132,0,8}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 11, '1' Height: 6 + Calculated Max Values w=15 h=15 x= 3 y= 3 dx=16 dy= 0 ascent=13 len=30 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 3 + X Font ascent =11 descent= 0 + Max Font ascent =13 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_86[1876] U8G_SECTION(".progmem.u8g_font_unifont_86") = { + 0,16,16,0,254,11,3,37,5,106,32,116,3,13,254,11, + 0,11,11,22,16,2,0,7,224,4,32,2,32,4,32,8, + 160,17,96,34,0,68,0,136,0,80,0,32,0,11,11,22, + 16,2,0,252,0,132,0,136,0,132,0,162,0,209,0,8, + 128,4,64,2,32,1,64,0,128,11,11,22,16,2,0,32, + 0,80,0,136,0,68,0,34,0,17,96,8,160,4,32,2, + 32,4,32,7,224,11,11,22,16,2,0,0,128,1,64,2, + 32,4,64,8,128,209,0,162,0,132,0,136,0,132,0,252, + 0,14,7,14,16,1,0,16,32,48,48,95,232,128,4,95, + 232,48,48,16,32,13,7,14,16,1,0,16,0,48,0,127, + 248,255,248,127,248,48,0,16,0,7,11,11,8,0,0,16, + 56,124,254,56,56,56,56,56,56,56,7,11,11,8,0,0, + 56,56,56,56,56,56,56,254,124,56,16,11,11,22,16,2, + 0,7,224,7,224,3,224,7,224,15,224,31,96,62,0,124, + 0,248,0,112,0,32,0,11,11,22,16,2,0,252,0,252, + 0,248,0,252,0,254,0,223,0,15,128,7,192,3,224,1, + 192,0,128,11,11,22,16,2,0,32,0,112,0,248,0,124, + 0,62,0,31,96,15,224,7,224,3,224,7,224,7,224,11, + 11,22,16,2,0,0,128,1,192,3,224,7,192,15,128,223, + 0,254,0,252,0,248,0,252,0,252,0,14,7,14,16,1, + 0,16,32,48,48,127,248,255,252,127,248,48,48,16,32,7, + 12,12,8,0,255,16,56,124,254,56,56,56,56,254,124,56, + 16,14,6,12,16,1,0,255,240,0,16,0,16,0,84,0, + 56,0,16,14,6,12,16,1,0,0,16,0,56,0,84,0, + 16,0,16,255,240,14,6,12,16,1,0,63,252,32,0,32, + 0,168,0,112,0,32,0,14,6,12,16,1,0,32,0,112, + 0,168,0,32,0,32,0,63,252,10,10,20,16,3,255,255, + 192,255,192,255,192,255,192,255,192,128,64,128,64,128,64,128, + 64,255,192,10,10,20,16,3,255,255,192,128,64,128,64,128, + 64,128,64,255,192,255,192,255,192,255,192,255,192,10,10,20, + 16,3,255,255,192,255,192,191,192,159,192,143,192,135,192,131, + 192,129,192,128,192,255,192,10,10,20,16,3,255,255,192,192, + 64,224,64,240,64,248,64,252,64,254,64,255,64,255,192,255, + 192,10,10,20,16,3,255,12,0,26,0,57,0,120,128,248, + 64,248,64,120,128,57,0,26,0,12,0,10,10,20,16,3, + 255,12,0,22,0,39,0,71,128,135,192,135,192,71,128,39, + 0,22,0,12,0,10,10,20,16,3,255,12,0,30,0,63, + 0,127,128,255,192,128,64,64,128,33,0,18,0,12,0,10, + 10,20,16,3,255,12,0,18,0,33,0,64,128,128,64,255, + 192,127,128,63,0,30,0,12,0,11,11,22,16,2,0,170, + 160,0,0,128,32,0,0,128,32,0,0,128,32,0,0,128, + 32,0,0,170,160,14,14,28,16,1,255,255,252,255,252,255, + 252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255, + 252,255,252,255,252,255,252,14,14,28,16,1,255,255,252,128, + 4,128,4,128,4,128,4,128,4,128,4,128,4,128,4,128, + 4,128,4,128,4,128,4,255,252,4,4,4,8,2,2,240, + 240,240,240,4,4,4,8,2,2,240,144,144,240,12,11,22, + 16,2,0,6,0,15,0,31,128,63,192,127,224,255,240,127, + 224,127,224,63,192,63,192,31,128,12,11,22,16,2,0,6, + 0,9,0,16,128,32,64,64,32,128,16,64,32,64,32,32, + 64,32,64,31,128,11,11,22,16,2,255,4,0,27,0,96, + 192,128,32,128,32,128,32,128,32,128,32,96,192,27,0,4, + 0,11,11,22,16,2,255,4,0,31,0,127,192,255,224,255, + 224,255,224,255,224,255,224,127,192,31,0,4,0,14,10,20, + 16,1,0,15,192,31,224,63,240,127,248,255,252,255,252,127, + 248,63,240,31,224,15,192,14,13,26,16,1,254,31,224,63, + 240,127,248,255,252,255,252,255,252,255,252,255,252,255,252,255, + 252,127,248,63,240,31,224,7,7,7,8,0,0,16,56,124, + 254,124,56,16,7,7,7,8,0,0,16,40,68,130,68,40, + 16,7,11,11,8,0,0,16,56,56,124,124,254,124,124,56, + 56,16,7,11,11,8,0,0,16,40,40,68,68,130,68,68, + 40,40,16,5,5,5,8,1,3,32,112,248,112,32,5,7, + 7,8,1,0,32,112,112,248,112,112,32,5,7,7,8,1, + 0,32,80,80,136,80,80,32,15,6,12,16,0,0,15,224, + 127,252,255,254,255,254,127,252,15,224,15,6,12,16,0,0, + 15,224,112,28,128,2,128,2,112,28,15,224,6,13,13,8, + 1,0,48,120,120,120,252,252,252,252,252,120,120,120,48,6, + 13,13,8,1,0,48,72,72,72,132,132,132,132,132,72,72, + 72,48,14,5,10,16,1,3,33,192,66,32,255,252,66,32, + 33,192,14,15,30,16,1,254,32,0,64,0,255,252,64,0, + 32,0,32,0,64,0,255,252,64,0,32,0,32,0,64,0, + 255,252,64,0,32,0,14,5,10,16,1,3,33,192,66,160, + 255,252,66,160,33,192,14,5,10,16,1,3,34,32,69,80, + 245,92,72,128,32,0,14,5,10,16,1,3,40,64,80,64, + 255,252,80,64,40,64,14,5,10,16,1,3,40,160,80,160, + 255,252,80,160,40,160,14,5,10,16,1,3,40,4,80,4, + 255,252,80,4,40,4,14,5,10,16,1,3,40,4,80,8, + 253,176,80,8,40,4,14,5,10,16,1,3,32,0,64,0, + 213,84,64,0,32,0,14,5,10,16,1,3,32,132,64,136, + 255,240,64,136,32,132,14,5,10,16,1,3,33,68,65,72, + 255,240,65,72,33,68,14,5,10,16,1,3,40,4,80,8, + 255,240,80,8,40,4,14,5,10,16,1,3,40,132,80,136, + 255,240,80,136,40,132,14,5,10,16,1,3,41,68,81,72, + 255,240,81,72,41,68,14,5,10,16,1,3,40,144,80,96, + 255,252,80,96,40,144,14,5,10,16,1,3,32,240,65,8, + 254,4,64,0,32,0,14,7,14,16,1,3,3,240,0,0, + 35,240,64,0,255,252,64,0,32,0,14,7,14,16,1,3, + 0,112,8,136,39,0,64,0,255,252,64,0,32,0,14,10, + 20,16,1,254,32,0,64,0,255,252,64,0,32,112,8,136, + 7,0,0,112,8,136,7,0,14,9,18,16,1,1,224,0, + 24,0,6,16,1,8,31,252,1,8,6,16,24,0,224,0, + 14,11,22,16,1,0,252,0,2,0,1,0,0,144,0,136, + 255,252,0,136,0,144,1,0,2,0,252,0,15,11,22,16, + 0,1,4,0,8,0,31,254,32,0,127,254,128,0,127,254, + 32,0,31,254,8,0,4,0,15,11,22,16,0,1,0,64, + 0,32,255,240,0,8,255,252,0,2,255,252,0,8,255,240, + 0,32,0,64,14,7,14,16,1,3,3,128,68,64,56,16, + 0,8,255,252,0,8,0,16,14,10,20,16,1,254,0,16, + 0,8,255,252,0,8,3,144,68,64,56,0,3,128,68,64, + 56,0,14,7,14,16,1,3,7,0,8,136,32,112,64,0, + 255,252,64,0,32,0,14,10,20,16,1,254,32,0,64,0, + 255,252,64,0,39,0,8,136,0,112,7,0,8,136,0,112, + 14,7,14,16,1,1,32,0,64,0,255,252,64,0,32,112, + 8,136,7,0,14,7,14,16,1,1,0,16,0,8,255,252, + 0,8,3,144,68,64,56,0,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,13,13,26,16,1,0,2,0,2,0,5,0, + 5,0,248,248,64,16,32,32,16,64,8,128,16,64,34,32, + 77,144,112,112,11,10,20,16,2,1,4,0,14,0,14,0, + 255,224,127,192,63,128,63,128,123,192,241,224,192,96,11,10, + 20,16,2,1,4,0,10,0,10,0,241,224,64,64,32,128, + 36,128,74,64,177,160,192,96,11,12,24,16,3,0,4,0, + 30,0,127,0,255,128,255,192,255,224,255,224,255,192,255,128, + 127,0,30,0,4,0,11,12,24,16,3,0,4,0,26,0, + 97,0,128,128,128,64,128,32,128,32,128,64,128,128,97,0, + 26,0,4,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 8, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 3 y=10 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[4272] U8G_SECTION(".progmem.u8g_font_unifont_8_9") = { + 0,16,16,0,254,8,4,65,6,56,0,255,0,14,254,12, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,6,14,14,8,1,0,72,72,0, + 0,252,128,128,128,248,128,128,128,128,252,7,10,10,8,1, + 0,252,32,32,32,60,34,34,34,34,44,6,14,14,8,1, + 0,24,96,0,0,252,128,128,128,128,128,128,128,128,128,6, + 10,10,8,1,0,56,68,128,128,248,128,128,128,68,56,6, + 10,10,8,1,0,120,132,132,128,96,24,4,132,132,120,5, + 10,10,8,2,0,248,32,32,32,32,32,32,32,32,248,5, + 14,14,8,2,0,144,144,0,0,248,32,32,32,32,32,32, + 32,32,248,6,10,10,8,1,0,28,8,8,8,8,8,8, + 136,136,112,8,10,10,8,0,0,120,72,72,72,78,73,73, + 73,73,142,7,10,10,8,1,0,144,144,144,144,252,146,146, + 146,146,156,7,10,10,8,1,0,252,32,32,32,60,34,34, + 34,34,34,6,14,14,8,1,0,24,96,0,0,128,140,144, + 160,192,192,160,144,136,132,6,13,13,8,1,0,96,24,0, + 132,140,140,148,148,164,164,196,196,132,7,14,14,8,1,0, + 132,132,120,0,130,130,68,68,40,40,16,16,32,96,7,10, + 10,8,1,0,130,130,130,130,130,130,254,16,16,16,6,10, + 10,8,1,0,48,72,72,132,132,132,252,132,132,132,6,10, + 10,8,1,0,248,128,128,128,248,132,132,132,132,248,6,10, + 10,8,1,0,248,132,132,132,248,132,132,132,132,248,6,10, + 10,8,1,0,252,128,128,128,128,128,128,128,128,128,8,12, + 12,8,0,254,14,18,18,18,34,34,34,66,66,255,129,129, + 6,10,10,8,1,0,252,128,128,128,248,128,128,128,128,252, + 7,10,10,8,1,0,146,146,84,84,56,56,84,84,146,146, + 6,10,10,8,1,0,120,132,4,4,120,8,4,4,132,120, + 6,10,10,8,1,0,132,140,140,148,148,164,164,196,196,132, + 6,13,13,8,1,0,72,48,0,132,140,140,148,148,164,164, + 196,196,132,6,10,10,8,1,0,128,140,144,160,192,192,160, + 144,136,132,6,10,10,8,1,0,60,36,36,36,36,36,36, + 68,68,132,6,10,10,8,1,0,132,132,204,204,180,180,132, + 132,132,132,6,10,10,8,1,0,132,132,132,132,252,132,132, + 132,132,132,6,10,10,8,1,0,120,132,132,132,132,132,132, + 132,132,120,6,10,10,8,1,0,252,132,132,132,132,132,132, + 132,132,132,6,10,10,8,1,0,248,132,132,132,248,128,128, + 128,128,128,6,10,10,8,1,0,120,132,132,128,128,128,128, + 132,132,120,7,10,10,8,1,0,254,16,16,16,16,16,16, + 16,16,16,7,10,10,8,1,0,130,130,68,68,40,40,16, + 16,32,96,7,11,11,8,1,0,16,124,146,146,146,146,146, + 124,16,16,16,6,10,10,8,1,0,132,132,72,72,48,48, + 72,72,132,132,7,12,12,8,1,254,132,132,132,132,132,132, + 132,132,132,254,2,2,6,10,10,8,1,0,132,132,132,132, + 132,252,4,4,4,4,7,10,10,8,1,0,146,146,146,146, + 146,146,146,146,146,254,8,12,12,8,0,254,146,146,146,146, + 146,146,146,146,146,255,1,1,7,10,10,8,1,0,224,32, + 32,32,60,34,34,34,34,60,6,10,10,8,1,0,132,132, + 132,132,228,148,148,148,148,228,6,10,10,8,1,0,128,128, + 128,128,248,132,132,132,132,248,6,10,10,8,1,0,112,136, + 4,4,124,4,4,4,136,112,6,10,10,8,1,0,152,164, + 164,164,228,164,164,164,164,152,6,10,10,8,1,0,124,132, + 132,132,124,36,68,68,132,132,6,8,8,8,1,0,120,132, + 4,124,132,132,140,116,6,12,12,8,1,0,4,56,64,128, + 248,132,132,132,132,132,132,120,6,8,8,8,1,0,248,132, + 132,248,132,132,132,248,6,8,8,8,1,0,252,128,128,128, + 128,128,128,128,7,9,9,8,1,255,60,36,68,68,132,132, + 132,254,130,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,7,8,8,8,1,0,146,146,84,56,56,84,146,146,6, + 8,8,8,1,0,120,132,4,120,8,4,132,120,6,8,8, + 8,1,0,140,140,148,148,164,164,196,196,6,12,12,8,1, + 0,72,48,0,0,140,140,148,148,164,164,196,196,6,8,8, + 8,1,0,140,144,160,192,160,144,136,132,6,8,8,8,1, + 0,60,36,36,36,36,68,68,132,6,8,8,8,1,0,132, + 204,204,180,180,132,132,132,6,8,8,8,1,0,132,132,132, + 252,132,132,132,132,6,8,8,8,1,0,120,132,132,132,132, + 132,132,120,6,8,8,8,1,0,252,132,132,132,132,132,132, + 132,6,10,10,8,1,254,248,132,132,132,132,248,128,128,128, + 128,6,8,8,8,1,0,120,132,128,128,128,128,132,120,7, + 8,8,8,1,0,254,16,16,16,16,16,16,16,6,10,10, + 8,1,254,132,132,72,72,48,48,32,32,64,192,7,10,10, + 8,1,255,16,16,124,146,146,146,146,124,16,16,6,8,8, + 8,1,0,132,132,72,48,48,72,132,132,7,10,10,8,1, + 254,132,132,132,132,132,132,132,254,2,2,6,8,8,8,1, + 0,132,132,132,132,252,4,4,4,7,8,8,8,1,0,146, + 146,146,146,146,146,146,254,8,10,10,8,0,254,146,146,146, + 146,146,146,146,255,1,1,7,8,8,8,1,0,224,32,32, + 60,34,34,34,60,6,8,8,8,1,0,132,132,132,228,148, + 148,148,228,6,8,8,8,1,0,128,128,128,248,132,132,132, + 248,6,8,8,8,1,0,112,136,4,124,4,4,136,112,6, + 8,8,8,1,0,152,164,164,228,164,164,164,152,6,8,8, + 8,1,0,124,132,132,132,124,36,68,132,6,12,12,8,1, + 0,96,24,0,0,120,132,132,252,128,128,132,120,6,12,12, + 8,1,0,72,72,0,0,120,132,132,252,128,128,132,120,6, + 11,11,8,1,255,64,64,240,64,64,120,68,68,68,68,24, + 6,12,12,8,1,0,24,96,0,0,252,128,128,128,128,128, + 128,128,6,8,8,8,1,0,56,68,128,248,128,128,68,56, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,11, + 11,8,2,0,32,32,0,96,32,32,32,32,32,32,248,5, + 11,11,8,2,0,144,144,0,96,32,32,32,32,32,32,248, + 5,13,13,8,1,254,8,8,0,24,8,8,8,8,8,8, + 8,144,96,8,8,8,8,0,0,120,72,72,78,73,73,73, + 142,7,8,8,8,1,0,144,144,144,252,146,146,146,156,6, + 10,10,8,1,0,64,64,240,64,64,88,100,68,68,68,6, + 12,12,8,1,0,24,96,0,0,140,144,160,192,160,144,136, + 132,6,12,12,8,1,0,96,24,0,0,140,140,148,148,164, + 164,196,196,6,15,15,8,1,254,132,132,120,0,0,132,132, + 72,72,48,48,32,32,64,192,5,10,10,8,2,254,136,136, + 136,136,136,136,248,32,32,32,7,10,10,8,1,0,108,130, + 130,130,130,146,146,146,146,108,7,8,8,8,1,0,68,130, + 130,146,146,146,146,108,7,10,10,8,1,0,32,248,32,32, + 60,34,34,34,34,60,6,10,10,8,1,0,64,64,240,64, + 64,120,68,68,68,120,7,10,10,8,1,0,140,146,160,160, + 252,160,160,160,146,140,7,8,8,8,1,0,140,146,160,252, + 160,160,146,140,7,10,10,8,1,0,16,16,40,40,68,108, + 84,146,146,146,7,8,8,8,1,0,16,40,40,68,108,146, + 146,146,7,10,10,8,1,0,144,144,168,168,164,236,212,146, + 146,146,7,8,8,8,1,0,144,168,168,164,236,146,146,146, + 7,10,10,8,1,0,124,68,68,40,16,56,84,146,146,146, + 7,8,8,8,1,0,124,68,40,16,124,146,146,146,7,10, + 10,8,1,0,190,162,162,148,232,156,170,170,170,170,7,8, + 8,8,1,0,190,162,148,232,156,170,170,170,6,14,14,8, + 1,254,72,48,120,132,4,4,120,8,4,4,4,120,128,128, + 6,13,13,8,1,254,72,48,0,120,132,4,120,8,4,4, + 120,128,128,7,10,10,8,1,0,146,146,146,146,146,124,16, + 16,16,16,7,8,8,8,1,254,146,146,146,146,146,124,16, + 16,6,10,10,8,1,0,120,132,132,132,252,132,132,132,132, + 120,6,8,8,8,1,0,120,132,132,252,132,132,132,120,7, + 10,10,8,1,0,134,136,136,136,80,80,80,32,32,32,6, + 8,8,8,1,0,140,144,144,80,80,80,32,32,7,14,14, + 8,1,0,204,34,0,0,134,136,136,136,80,80,80,32,32, + 32,7,12,12,8,1,0,204,34,0,0,140,144,144,80,80, + 80,32,32,7,12,12,8,1,254,64,160,178,178,178,170,172, + 168,168,72,16,16,7,10,10,8,1,254,82,178,178,170,172, + 168,168,72,16,16,7,12,12,8,1,255,16,124,146,130,130, + 130,130,130,130,146,124,16,7,10,10,8,1,255,16,124,146, + 130,130,130,130,146,124,16,7,14,14,8,1,0,120,134,48, + 0,108,130,130,130,130,146,146,146,146,108,7,12,12,8,1, + 0,120,134,48,0,68,130,130,146,146,146,146,108,7,14,14, + 8,1,0,254,16,0,0,108,130,130,130,130,146,146,146,146, + 108,7,12,12,8,1,0,254,16,0,0,68,130,130,146,146, + 146,146,108,6,12,12,8,1,254,120,132,132,128,128,128,128, + 128,120,8,8,8,6,10,10,8,1,254,120,132,132,128,128, + 128,120,8,8,8,7,7,7,8,1,1,36,24,136,84,34, + 48,72,4,3,3,8,1,10,16,240,128,5,4,4,8,0, + 9,16,40,72,128,4,3,3,8,1,10,128,240,128,4,3, + 3,8,1,10,16,240,16,8,3,3,8,0,10,48,76,131, + 14,14,28,16,0,254,1,0,2,128,16,16,40,40,0,0, + 0,0,64,8,160,20,0,0,0,0,0,0,16,16,41,40, + 2,128,14,14,28,16,1,254,1,0,33,8,19,16,24,96, + 0,0,0,0,0,16,224,28,32,0,0,0,0,0,25,176, + 17,16,33,8,7,15,15,8,1,254,72,48,0,132,140,140, + 148,148,164,164,196,196,134,4,8,7,14,14,8,1,254,72, + 48,0,0,140,140,148,148,164,164,196,198,4,8,6,10,10, + 8,1,0,64,224,64,64,64,120,68,68,76,120,6,7,7, + 8,1,0,64,224,64,120,68,68,120,6,10,10,8,1,0, + 248,132,148,136,244,128,128,128,128,128,6,10,10,8,1,254, + 184,196,132,132,132,148,200,180,128,128,6,12,12,8,1,0, + 4,4,252,128,128,128,128,128,128,128,128,128,6,10,10,8, + 1,0,4,4,252,128,128,128,128,128,128,128,7,10,10,8, + 1,0,62,32,32,32,32,248,32,32,32,32,7,8,8,8, + 1,0,62,32,32,32,248,32,32,32,6,11,11,8,1,255, + 252,128,128,128,128,248,132,132,132,132,24,6,9,9,8,1, + 255,252,128,128,128,248,132,132,132,24,7,12,12,8,1,254, + 146,146,84,84,56,56,84,84,146,146,2,2,7,10,10,8, + 1,254,146,146,84,56,56,84,146,146,2,2,6,12,12,8, + 1,254,120,132,4,4,120,8,4,4,132,120,16,96,6,10, + 10,8,1,254,120,132,4,120,8,4,132,120,16,96,6,12, + 12,8,1,254,128,140,144,160,192,192,160,144,136,132,4,4, + 6,10,10,8,1,254,140,144,160,192,160,144,136,132,4,4, + 7,10,10,8,1,0,128,134,168,168,240,168,168,168,132,130, + 7,8,8,8,1,0,134,168,168,240,168,168,132,130,7,10, + 10,8,1,0,64,230,72,80,96,96,80,72,68,66,7,8, + 8,8,1,0,70,232,80,96,80,72,68,66,8,10,10,8, + 0,0,224,35,36,40,48,48,40,36,34,33,8,8,8,8, + 0,0,227,36,40,48,40,36,34,33,7,12,12,8,1,254, + 132,132,132,132,252,132,132,132,132,134,2,2,7,10,10,8, + 1,254,132,132,132,252,132,132,132,134,2,2,7,10,10,8, + 1,0,142,136,136,136,248,136,136,136,136,136,7,8,8,8, + 1,0,142,136,136,248,136,136,136,136,7,12,12,8,1,254, + 240,144,144,144,144,156,146,146,146,146,2,12,7,10,10,8, + 1,254,240,144,144,144,156,146,146,146,2,12,6,11,11,8, + 1,255,56,64,128,152,164,164,164,164,88,48,12,6,9,9, + 8,1,255,56,64,152,164,164,164,88,48,12,6,12,12,8, + 1,254,120,132,132,128,128,128,128,132,132,120,32,24,6,10, + 10,8,1,254,120,132,132,128,128,132,132,120,32,24,7,12, + 12,8,1,254,254,16,16,16,16,16,16,16,16,24,8,8, + 7,10,10,8,1,254,254,16,16,16,16,16,16,24,8,8, + 7,10,10,8,1,0,130,130,68,68,40,16,16,16,16,16, + 5,10,10,8,2,254,136,136,136,80,80,32,32,32,32,32, + 7,10,10,8,1,0,130,130,68,68,40,16,16,124,16,16, + 5,8,8,8,2,0,136,136,136,80,32,32,248,32,7,12, + 12,8,1,254,132,132,72,72,48,48,72,72,132,134,2,2, + 7,10,10,8,1,254,132,132,72,48,48,72,132,134,2,2, + 8,12,12,8,0,254,250,34,34,34,34,34,34,34,34,63, + 1,1,8,10,10,8,0,254,250,34,34,34,34,34,34,63, + 1,1,7,12,12,8,1,254,132,132,132,132,132,140,116,4, + 4,6,2,2,7,10,10,8,1,254,132,132,132,132,140,116, + 4,6,2,2,6,10,10,8,1,0,132,132,132,132,164,172, + 116,36,36,4,6,8,8,8,1,0,132,132,132,164,172,116, + 36,4,6,10,10,8,1,0,128,128,128,184,196,132,132,132, + 132,132,6,8,8,8,1,0,128,128,184,196,132,132,132,132, + 6,10,10,8,1,0,152,164,164,164,124,32,32,36,36,24, + 6,8,8,8,1,0,152,164,164,124,32,32,36,24,6,12, + 12,8,1,254,152,164,164,164,124,32,32,36,36,24,16,12, + 6,10,10,8,1,254,152,164,164,124,32,32,36,24,16,12, + 5,10,10,8,2,0,248,32,32,32,32,32,32,32,32,248, + 7,14,14,8,1,0,130,130,124,0,146,146,84,84,56,56, + 84,84,146,146,7,13,13,8,1,0,68,68,56,0,0,146, + 146,84,56,56,84,146,146,6,12,12,8,1,254,128,140,144, + 160,192,248,132,132,132,132,4,24,6,10,10,8,1,254,140, + 144,160,192,248,132,132,132,4,24,7,12,12,8,1,254,60, + 36,36,36,36,36,36,68,68,134,4,8,7,10,10,8,1, + 254,60,36,36,36,36,68,68,134,4,8,6,12,12,8,1, + 254,132,132,132,132,252,132,132,132,132,132,4,24,6,10,10, + 8,1,254,132,132,132,252,132,132,132,132,4,24,7,12,12, + 8,1,254,132,132,132,132,252,132,132,132,132,134,4,8,7, + 10,10,8,1,254,132,132,132,252,132,132,132,134,4,8,6, + 12,12,8,1,254,132,132,132,132,132,140,116,4,4,12,8, + 8,6,10,10,8,1,254,132,132,132,132,140,116,4,12,8, + 8,7,12,12,8,1,254,132,132,204,204,180,180,132,132,132, + 134,4,8,7,10,10,8,1,254,132,204,204,180,180,132,132, + 134,4,8,3,10,10,8,3,0,224,64,64,64,64,64,64, + 64,64,224,6,14,14,8,1,0,132,132,120,0,48,72,72, + 132,132,252,132,132,132,132,6,13,13,8,1,0,132,132,120, + 0,0,120,132,4,124,132,132,140,116,6,14,14,8,1,0, + 72,72,0,0,48,72,72,132,132,252,132,132,132,132,6,12, + 12,8,1,0,72,72,0,0,120,132,4,124,132,132,140,116, + 7,10,10,8,1,0,62,80,144,144,254,144,144,144,144,158, + 7,8,8,8,1,0,124,146,18,126,144,144,146,124,6,14, + 14,8,1,0,132,132,120,0,252,128,128,128,248,128,128,128, + 128,252,6,12,12,8,1,0,132,132,120,0,120,132,132,252, + 128,128,132,120,6,10,10,8,1,0,48,72,132,4,4,252, + 132,132,72,48,6,8,8,8,1,0,120,132,4,4,252,132, + 132,120,6,14,14,8,1,0,72,72,0,0,48,72,132,4, + 4,252,132,132,72,48,6,12,12,8,1,0,72,72,0,0, + 120,132,4,4,252,132,132,120,7,14,14,8,1,0,72,72, + 0,0,146,146,84,84,56,56,84,84,146,146,7,12,12,8, + 1,0,72,72,0,0,146,146,84,56,56,84,146,146,6,14, + 14,8,1,0,72,72,0,0,120,132,4,4,120,8,4,4, + 132,120,6,12,12,8,1,0,72,72,0,0,120,132,4,120, + 8,4,132,120,6,10,10,8,1,0,252,8,16,32,56,4, + 4,4,140,120,6,10,10,8,1,254,124,8,16,32,56,4, + 4,4,132,120,6,13,13,8,1,0,120,0,0,132,140,140, + 148,148,164,164,196,196,132,6,11,11,8,1,0,120,0,0, + 140,140,148,148,164,164,196,196,6,14,14,8,1,0,72,72, + 0,0,132,140,140,148,148,164,164,196,196,132,6,12,12,8, + 1,0,72,72,0,0,140,140,148,148,164,164,196,196,6,14, + 14,8,1,0,72,72,0,0,120,132,132,132,132,132,132,132, + 132,120,6,12,12,8,1,0,72,72,0,0,120,132,132,132, + 132,132,132,120,6,10,10,8,1,0,120,132,132,132,252,132, + 132,132,132,120,6,8,8,8,1,0,120,132,132,252,132,132, + 132,120,6,14,14,8,1,0,72,72,0,0,120,132,132,132, + 252,132,132,132,132,120,6,12,12,8,1,0,72,72,0,0, + 120,132,132,252,132,132,132,120,6,12,12,8,1,0,72,0, + 120,132,4,4,124,4,4,4,132,120,6,10,10,8,1,0, + 72,0,120,132,4,60,4,4,132,120,7,13,13,8,1,0, + 124,0,0,130,130,68,68,40,40,16,16,32,96,6,13,13, + 8,1,254,120,0,0,132,132,72,72,48,48,32,32,64,192, + 7,14,14,8,1,0,72,72,0,0,130,130,68,68,40,40, + 16,16,32,96,6,14,14,8,1,254,72,72,0,0,132,132, + 72,72,48,48,32,32,64,192,7,14,14,8,1,0,102,136, + 0,0,130,130,68,68,40,40,16,16,32,96,7,14,14,8, + 1,254,102,136,0,0,132,132,72,72,48,48,32,32,64,192, + 6,14,14,8,1,0,72,72,0,0,132,132,132,132,132,140, + 116,4,4,4,6,12,12,8,1,0,72,72,0,0,132,132, + 132,132,140,116,4,4,6,12,12,8,1,254,252,128,128,128, + 128,128,128,128,128,224,96,32,6,10,10,8,1,254,252,128, + 128,128,128,128,128,224,96,32,6,14,14,8,1,0,72,72, + 0,0,132,132,132,132,228,148,148,148,148,228,6,12,12,8, + 1,0,72,72,0,0,132,132,132,228,148,148,148,228,6,12, + 12,8,1,254,252,128,128,128,248,128,128,128,128,192,64,192, + 5,10,10,8,1,254,248,128,128,240,128,128,128,192,64,192, + 6,12,12,8,1,254,132,132,72,72,48,48,72,72,132,132, + 4,8,6,10,10,8,1,254,132,132,72,48,48,72,132,132, + 4,8,6,10,10,8,1,0,132,132,72,72,48,252,72,72, + 132,132,6,8,8,8,1,0,132,132,72,48,252,72,132,132 + }; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont[5516] U8G_SECTION(".progmem.u8g_font_unifont") = { + 0,16,16,0,254,10,6,167,8,149,0,255,254,14,254,11, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,147,194,82,50,95,138,82,113, + 147,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,165,193, + 36,49,25,137,36,113,37,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,123,165,193,36,121,25,193,36,121,37,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,121,191,194,72,122,73,194, + 72,121,137,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,122, + 77,194,82,123,83,194,214,122,79,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,49,165,202,40,122,49,202,40,73,165,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,115,209,202,16,115, + 209,202,16,115,223,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,120,225,197,0,120,193,196,32,121,193,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,241,196,64,124,65,196,64,68, + 65,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,65,241,193, + 0,65,241,193,0,125,1,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,69,241,196,64,68,65,168,64,16,65,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,125,241,193,0,125,241,193, + 0,65,1,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,61, + 225,193,16,65,225,193,32,61,17,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,60,225,193,16,57,17,133,16,120,225,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,61,241,192,64,56, + 65,132,64,121,241,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,57,202,32,74,57,202,32,115,185,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,113,137,202,24,74,9,202,8,113, + 157,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,113,153,202, + 4,74,9,202,16,113,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,113,153,202,4,74,25,202,4,113,153,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,113,133,202,12,74,21,202, + 28,113,133,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,73, + 147,234,84,106,89,219,212,74,83,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,52,83,194,154,49,23,137,18,113,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,123,185,193,36,121, + 57,193,36,121,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,37,196,180,71,173,196,164,52,165,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,125,17,193,176,125,81,193,16,125, + 17,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,58,93,194, + 82,50,93,138,82,113,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,121,207,194,16,121,145,192,80,123,143,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,121,193,194,0,121,129,192, + 64,67,129,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 193,194,0,89,129,200,64,59,129,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,113,193,202,0,113,129,208,64,75,129,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,73,193,202,0,73, + 129,200,64,51,129,128,0,0,1,128,0,0,1,128,0,85, + 85,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,157,202,82,115, + 211,194,82,66,93,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,73,157,202,82,122,93,202,80,73,145,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,147,202,82,115,159,202,18,114, + 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,147,234, + 82,91,159,202,82,75,147,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,116,185,166,164,37,165,164,164,116,185,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,75,209,234,16,91,209,202, + 16,75,223,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 205,194,18,49,159,136,82,115,147,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,121,205,194,18,121,159,192,82,123,147,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,75,157,201,32,121, + 25,201,4,73,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,75,185,201,8,121,9,201,8,73,49,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,205,196,144,68,137,168,132,16, + 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,114,29,202, + 18,114,19,194,18,67,221,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,19,202,18,114,19,194,18,67,205,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,14,33,137,32,14,33,138, + 32,9,33,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 221,194,2,49,141,136,80,115,159,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,57,221,194,2,49,141,136,66,115,157,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,207,202,16,74, + 13,202,2,113,221,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,69,202,76,114,69,194,68,65,143,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,114,93,202,66,114,77,194,80,65, + 159,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,157,193, + 32,49,25,137,4,113,57,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,211,194,18,66,31,194,18,57,211,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,69,17,237,16,85,81,197, + 176,69,17,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, + 141,194,82,51,159,138,18,114,19,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,123,141,194,82,123,159,194,18,122,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,57,143,194,80,50, + 77,138,66,113,157,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,155,196,34,37,163,148,162,99,155,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,221,194,8,50,9,138,8,113, + 221,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,57,221,194, + 8,65,137,192,72,59,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,14,249,144,32,12,33,130,32,28,33,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,49,207,202,16,73,145,200, + 80,51,143,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, + 33,203,96,114,161,194,32,66,33,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,51,143,202,80,123,145,202,16,74,15,128, + 0,0,1,128,0,0,1,128,0,85,85,0,0,0,8,0, + 14,1,10,10,8,4,0,128,128,0,128,128,128,128,128,128, + 128,7,10,10,8,1,0,16,16,124,146,144,144,146,124,16, + 16,7,10,10,8,1,0,28,32,32,32,248,32,32,32,124, + 194,6,8,8,8,1,1,132,72,120,72,72,120,72,132,7, + 10,10,8,1,0,130,68,40,16,254,16,254,16,16,16,1, + 10,10,8,4,0,128,128,128,128,0,0,128,128,128,128,6, + 10,10,8,1,0,120,132,128,120,132,132,120,4,132,120,4, + 2,2,8,2,12,144,144,8,10,10,8,0,0,60,66,153, + 165,161,161,165,153,66,60,5,7,7,8,2,5,112,8,120, + 136,120,0,248,6,9,9,8,1,0,36,36,72,72,144,72, + 72,36,36,6,4,4,8,1,0,252,4,4,4,6,1,1, + 8,1,4,252,8,10,10,8,0,0,60,66,185,165,165,185, + 169,165,66,60,6,1,1,8,1,11,252,3,4,4,8,2, + 10,64,160,160,64,7,9,9,8,1,1,16,16,16,254,16, + 16,16,0,254,5,7,7,8,2,5,112,136,8,112,128,128, + 248,5,7,7,8,2,5,112,136,8,112,8,136,112,3,3, + 3,8,3,10,32,64,128,5,8,8,8,2,254,136,136,136, + 136,216,168,128,128,6,12,12,8,1,255,124,244,244,244,244, + 116,20,20,20,20,20,28,2,2,2,8,3,4,192,192,3, + 2,2,8,2,254,32,192,3,7,7,8,2,5,32,96,160, + 32,32,32,32,5,7,7,8,2,5,112,136,136,136,112,0, + 248,6,9,9,8,1,0,144,144,72,72,36,72,72,144,144, + 6,10,10,8,1,0,68,196,72,80,80,36,44,84,156,132, + 6,10,10,8,1,0,68,196,72,80,80,40,52,68,136,156, + 6,10,10,8,1,0,196,36,72,48,208,36,44,84,156,132, + 6,10,10,8,1,0,16,16,0,16,16,96,132,132,132,120, + 6,14,14,8,1,0,96,24,0,0,48,72,72,132,132,252, + 132,132,132,132,6,14,14,8,1,0,24,96,0,0,48,72, + 72,132,132,252,132,132,132,132,6,14,14,8,1,0,48,72, + 0,0,48,72,72,132,132,252,132,132,132,132,6,14,14,8, + 1,0,100,152,0,0,48,72,72,132,132,252,132,132,132,132, + 6,14,14,8,1,0,72,72,0,0,48,72,72,132,132,252, + 132,132,132,132,6,14,14,8,1,0,48,72,48,0,48,72, + 72,132,132,252,132,132,132,132,7,10,10,8,1,0,62,80, + 144,144,254,144,144,144,144,158,6,12,12,8,1,254,120,132, + 132,128,128,128,128,132,132,120,16,96,6,14,14,8,1,0, + 96,24,0,0,252,128,128,128,248,128,128,128,128,252,6,14, + 14,8,1,0,24,96,0,0,252,128,128,128,248,128,128,128, + 128,252,6,14,14,8,1,0,48,72,0,0,252,128,128,128, + 248,128,128,128,128,252,6,14,14,8,1,0,72,72,0,0, + 252,128,128,128,248,128,128,128,128,252,5,14,14,8,2,0, + 96,24,0,0,248,32,32,32,32,32,32,32,32,248,5,14, + 14,8,2,0,48,192,0,0,248,32,32,32,32,32,32,32, + 32,248,5,14,14,8,2,0,96,144,0,0,248,32,32,32, + 32,32,32,32,32,248,5,14,14,8,2,0,144,144,0,0, + 248,32,32,32,32,32,32,32,32,248,7,10,10,8,0,0, + 120,68,66,66,242,66,66,66,68,120,6,14,14,8,1,0, + 100,152,0,0,132,196,196,164,164,148,148,140,140,132,6,14, + 14,8,1,0,96,24,0,0,120,132,132,132,132,132,132,132, + 132,120,6,14,14,8,1,0,24,96,0,0,120,132,132,132, + 132,132,132,132,132,120,6,14,14,8,1,0,48,72,0,0, + 120,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0, + 100,152,0,0,120,132,132,132,132,132,132,132,132,120,6,14, + 14,8,1,0,72,72,0,0,120,132,132,132,132,132,132,132, + 132,120,6,5,5,8,1,2,132,72,48,72,132,6,12,12, + 8,1,255,4,116,136,140,148,148,164,164,196,68,184,128,6, + 14,14,8,1,0,96,24,0,0,132,132,132,132,132,132,132, + 132,132,120,6,14,14,8,1,0,24,96,0,0,132,132,132, + 132,132,132,132,132,132,120,6,14,14,8,1,0,48,72,0, + 0,132,132,132,132,132,132,132,132,132,120,6,14,14,8,1, + 0,72,72,0,0,132,132,132,132,132,132,132,132,132,120,7, + 14,14,8,1,0,24,96,0,0,130,130,68,68,40,16,16, + 16,16,16,6,11,11,8,1,0,128,128,240,136,132,132,136, + 240,128,128,128,6,10,10,8,1,0,112,136,136,136,248,132, + 132,132,196,184,6,12,12,8,1,0,96,24,0,0,120,132, + 4,124,132,132,140,116,6,12,12,8,1,0,24,96,0,0, + 120,132,4,124,132,132,140,116,6,12,12,8,1,0,48,72, + 0,0,120,132,4,124,132,132,140,116,6,12,12,8,1,0, + 100,152,0,0,120,132,4,124,132,132,140,116,6,12,12,8, + 1,0,72,72,0,0,120,132,4,124,132,132,140,116,6,13, + 13,8,1,0,48,72,48,0,0,120,132,4,124,132,132,140, + 116,7,8,8,8,1,0,124,146,18,126,144,144,146,124,6, + 10,10,8,1,254,120,132,128,128,128,128,132,120,16,96,6, + 12,12,8,1,0,96,24,0,0,120,132,132,252,128,128,132, + 120,6,12,12,8,1,0,24,96,0,0,120,132,132,252,128, + 128,132,120,6,12,12,8,1,0,48,72,0,0,120,132,132, + 252,128,128,132,120,6,12,12,8,1,0,72,72,0,0,120, + 132,132,252,128,128,132,120,5,12,12,8,2,0,192,48,0, + 0,96,32,32,32,32,32,32,248,5,12,12,8,2,0,48, + 192,0,0,96,32,32,32,32,32,32,248,5,12,12,8,2, + 0,96,144,0,0,96,32,32,32,32,32,32,248,5,12,12, + 8,2,0,144,144,0,0,96,32,32,32,32,32,32,248,6, + 12,12,8,1,0,100,24,40,68,4,124,132,132,132,132,132, + 120,6,12,12,8,1,0,100,152,0,0,184,196,132,132,132, + 132,132,132,6,12,12,8,1,0,96,24,0,0,120,132,132, + 132,132,132,132,120,6,12,12,8,1,0,24,96,0,0,120, + 132,132,132,132,132,132,120,6,12,12,8,1,0,48,72,0, + 0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,100, + 152,0,0,120,132,132,132,132,132,132,120,6,12,12,8,1, + 0,72,72,0,0,120,132,132,132,132,132,132,120,6,7,7, + 8,1,1,48,0,0,252,0,0,48,6,10,10,8,1,255, + 4,120,140,148,148,164,164,196,120,128,6,12,12,8,1,0, + 96,24,0,0,132,132,132,132,132,132,140,116,6,12,12,8, + 1,0,24,96,0,0,132,132,132,132,132,132,140,116,6,12, + 12,8,1,0,48,72,0,0,132,132,132,132,132,132,140,116, + 6,12,12,8,1,0,72,72,0,0,132,132,132,132,132,132, + 140,116,6,14,14,8,1,254,24,96,0,0,132,132,132,132, + 132,76,52,4,4,120,5,12,12,8,2,254,128,128,240,136, + 136,136,144,160,192,128,128,128,6,14,14,8,1,254,72,72, + 0,0,132,132,132,132,132,76,52,4,4,120}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=14 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifontr[1483] U8G_SECTION(".progmem.u8g_font_unifontr") = { + 0,16,16,0,254,10,1,231,3,213,32,127,254,14,254,11, + 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85}; diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_line.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_line.c new file mode 100644 index 000000000..30b309723 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_line.c @@ -0,0 +1,81 @@ +/* + + u8g_line.h + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2) +{ + u8g_uint_t tmp; + u8g_uint_t x,y; + u8g_uint_t dx, dy; + u8g_int_t err; + u8g_int_t ystep; + + uint8_t swapxy = 0; + + /* no BBX intersection check at the moment, should be added... */ + + if ( x1 > x2 ) dx = x1-x2; else dx = x2-x1; + if ( y1 > y2 ) dy = y1-y2; else dy = y2-y1; + + if ( dy > dx ) + { + swapxy = 1; + tmp = dx; dx =dy; dy = tmp; + tmp = x1; x1 =y1; y1 = tmp; + tmp = x2; x2 =y2; y2 = tmp; + } + if ( x1 > x2 ) + { + tmp = x1; x1 =x2; x2 = tmp; + tmp = y1; y1 =y2; y2 = tmp; + } + err = dx >> 1; + if ( y2 > y1 ) ystep = 1; else ystep = -1; + y = y1; + for( x = x1; x <= x2; x++ ) + { + if ( swapxy == 0 ) + u8g_DrawPixel(u8g, x, y); + else + u8g_DrawPixel(u8g, y, x); + err -= (uint8_t)dy; + if ( err < 0 ) + { + y += (u8g_uint_t)ystep; + err += (u8g_uint_t)dx; + } + } +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_ll_api.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_ll_api.c new file mode 100644 index 000000000..41c7fada1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_ll_api.c @@ -0,0 +1,456 @@ +/* + + u8g_ll_api.c + + low level api + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include +#include "u8g.h" + +uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + return dev->dev_fn(u8g, dev, msg, arg); +} + +/*====================================================================*/ + +uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t r; + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + r = u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_INIT, NULL); + u8g->state_cb(U8G_STATE_MSG_BACKUP_U8G); + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); + return r; +} + +void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + u8g->state_cb(U8G_STATE_MSG_RESTORE_U8G); + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_PAGE_FIRST, NULL); + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); +} + +uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t r; + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + u8g->state_cb(U8G_STATE_MSG_RESTORE_U8G); + r = u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_PAGE_NEXT, NULL); + if ( r != 0 ) + { + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); + } + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); + return r; +} + +uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_CONTRAST, &contrast); +} + +void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y) +{ + u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel); + arg->x = x; + arg->y = y; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_PIXEL, arg); +} + +void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel); + arg->x = x; + arg->y = y; + arg->dir = dir; + arg->pixel = pixel; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_8PIXEL, arg); +} + +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION +uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_IS_BBX_INTERSECTION, &arg); +} +#endif + + + +u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_uint_t r; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_WIDTH, &r); + return r; +} + +u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_uint_t r; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_HEIGHT, &r); + return r; +} + +u8g_uint_t u8g_GetModeLL(u8g_t *u8g, u8g_dev_t *dev) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_MODE, NULL); +} + + + +/*====================================================================*/ + +void u8g_UpdateDimension(u8g_t *u8g) +{ + u8g->width = u8g_GetWidthLL(u8g, u8g->dev); + u8g->height = u8g_GetHeightLL(u8g, u8g->dev); + u8g->mode = u8g_GetModeLL(u8g, u8g->dev); + /* 9 Dec 2012: u8g_scale.c requires update of current page */ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); +} + +static void u8g_init_data(u8g_t *u8g) +{ + uint8_t i; + u8g->font = NULL; + u8g->cursor_font = NULL; + u8g->cursor_bg_color = 0; + u8g->cursor_fg_color = 1; + u8g->cursor_encoding = 34; + u8g->cursor_fn = (u8g_draw_cursor_fn)0; + + for( i = 0; i < U8G_PIN_LIST_LEN; i++ ) + u8g->pin_list[i] = U8G_PIN_NONE; + + u8g_SetColorIndex(u8g, 1); + + u8g_SetFontPosBaseline(u8g); + + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_XTEXT; + u8g->font_ref_ascent = 0; + u8g->font_ref_descent = 0; + u8g->font_line_spacing_factor = 64; /* 64 = 1.0, 77 = 1.2 line spacing factor */ + u8g->line_spacing = 0; + + u8g->state_cb = u8g_state_dummy_cb; + +} + +uint8_t u8g_Begin(u8g_t *u8g) +{ + /* call and init low level driver and com device */ + if ( u8g_InitLL(u8g, u8g->dev) == 0 ) + return 0; + /* fetch width and height from the low level */ + u8g_UpdateDimension(u8g); + return 1; +} + +uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_init_data(u8g); + u8g->dev = dev; + + /* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */ + /* if - in future releases - this is removed, then still call u8g_UpdateDimension() */ + /* if Arduino call u8g_UpdateDimension else u8g_Begin */ + /* issue 146 */ + return u8g_Begin(u8g); +} + +uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + u8g->pin_list[U8G_PI_SCK] = sck; + u8g->pin_list[U8G_PI_MOSI] = mosi; + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_RESET] = reset; + + /* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */ + /* if - in future releases - this is removed, then still call u8g_UpdateDimension() */ + /* if Arduino call u8g_UpdateDimension else u8g_Begin */ + /* issue 146 */ + return u8g_Begin(u8g); +} + +uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) +{ + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + + /* assign user pins */ + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options) +{ + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + u8g->pin_list[U8G_PI_I2C_OPTION] = options; + + return u8g_Begin(u8g); +} + + +uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_EN] = en; + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_DI] = di; + u8g->pin_list[U8G_PI_RW] = rw; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_D0] = d0; + u8g->pin_list[U8G_PI_D1] = d1; + u8g->pin_list[U8G_PI_D2] = d2; + u8g->pin_list[U8G_PI_D3] = d3; + u8g->pin_list[U8G_PI_D4] = d4; + u8g->pin_list[U8G_PI_D5] = d5; + u8g->pin_list[U8G_PI_D6] = d6; + u8g->pin_list[U8G_PI_D7] = d7; + + u8g->pin_list[U8G_PI_EN] = en; + u8g->pin_list[U8G_PI_CS1] = cs1; + u8g->pin_list[U8G_PI_CS2] = cs2; + u8g->pin_list[U8G_PI_DI] = di; + u8g->pin_list[U8G_PI_RW] = rw; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +/* + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS 14 + PIN_A0 15 + PIN_RESET 16 + PIN_WR 17 + PIN_RD 18 + + u8g_InitRW8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + u8g_InitRW8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16) + +*/ + +uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_D0] = d0; + u8g->pin_list[U8G_PI_D1] = d1; + u8g->pin_list[U8G_PI_D2] = d2; + u8g->pin_list[U8G_PI_D3] = d3; + u8g->pin_list[U8G_PI_D4] = d4; + u8g->pin_list[U8G_PI_D5] = d5; + u8g->pin_list[U8G_PI_D6] = d6; + u8g->pin_list[U8G_PI_D7] = d7; + + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_WR] = wr; + u8g->pin_list[U8G_PI_RD] = rd; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +void u8g_FirstPage(u8g_t *u8g) +{ + u8g_FirstPageLL(u8g, u8g->dev); +} + +uint8_t u8g_NextPage(u8g_t *u8g) +{ + if ( u8g->cursor_fn != (u8g_draw_cursor_fn)0 ) + { + u8g->cursor_fn(u8g); + } + return u8g_NextPageLL(u8g, u8g->dev); +} + +uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast) +{ + return u8g_SetContrastLL(u8g, u8g->dev, contrast); +} + +void u8g_SleepOn(u8g_t *u8g) +{ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SLEEP_ON, NULL); +} + +void u8g_SleepOff(u8g_t *u8g) +{ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SLEEP_OFF, NULL); +} + + +void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y) +{ + u8g_DrawPixelLL(u8g, u8g->dev, x, y); +} + +void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_Draw8PixelLL(u8g, u8g->dev, x, y, dir, pixel); +} + +/* u8g_IsBBXIntersection() has been moved to u8g_clip.c */ +#ifdef OBSOLETE_CODE +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + /* new code */ + u8g_dev_arg_bbx_t arg; + arg.x = x; + arg.y = y; + arg.w = w; + arg.h = h; + return u8g_is_box_bbx_intersection(&(u8g->current_page), &arg); + + /* old code */ + //return u8g_IsBBXIntersectionLL(u8g, u8g->dev, x, y, w, h); +} +#endif + +void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx) +{ + u8g->arg_pixel.color = idx; + /*u8g->color_index = idx; */ /* must be removed */ +} + +uint8_t u8g_GetColorIndex(u8g_t *u8g) +{ + return u8g->arg_pixel.color; +} + +uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g) +{ + uint8_t mode; + mode = u8g_GetMode(u8g); + if ( mode == U8G_MODE_R3G3B2 ) + return 255; /* white */ + else if ( u8g_GetMode(u8g) == U8G_MODE_GRAY2BIT ) + return 3; /* max intensity */ + else /* if ( u8g.getMode() == U8G_MODE_BW ) */ + return 1; /* pixel on */ + return 1; +} + +void u8g_SetDefaultForegroundColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultForegroundColor(u8g)); +} + +uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g) +{ + return 0; +} + +void u8g_SetDefaultBackgroundColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultBackgroundColor(u8g)); /* pixel on / black */ +} + +uint8_t u8g_GetDefaultMidColor(u8g_t *u8g) +{ + uint8_t mode; + mode = u8g_GetMode(u8g); + if ( mode == U8G_MODE_R3G3B2 ) + return 0x06d; /* gray: 01101101 */ + else if ( u8g_GetMode(u8g) == U8G_MODE_GRAY2BIT ) + return 1; /* low mid intensity */ + else /* if ( u8g.getMode() == U8G_MODE_BW ) */ + return 1; /* pixel on */ + return 1; /* default */ +} + +void u8g_SetDefaultMidColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultMidColor(u8g)); +} + + + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_page.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_page.c new file mode 100644 index 000000000..1a3eb21ed --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_page.c @@ -0,0 +1,81 @@ +/* + + u8g_page.c + + page helper functions, only called by the dev handler. + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* + setup page count structure + conditions: page_height <= total_height +*/ +void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) +{ + p->page_height = page_height; + p->total_height = total_height; + p->page = 0; + u8g_page_First(p); +} + +void u8g_page_First(u8g_page_t *p) +{ + p->page_y0 = 0; + p->page_y1 = p->page_height; + p->page_y1--; + p->page = 0; +} + +uint8_t u8g_page_Next(u8g_page_t * p) +{ + register u8g_uint_t y1; + p->page_y0 += p->page_height; + if ( p->page_y0 >= p->total_height ) + return 0; + p->page++; + y1 = p->page_y1; + y1 += p->page_height; + if ( y1 >= p->total_height ) + { + y1 = p->total_height; + y1--; + } + p->page_y1 = y1; + + return 1; +} + + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb.c new file mode 100644 index 000000000..a94647361 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb.c @@ -0,0 +1,191 @@ +/* + + u8g_pb.c + + common procedures for the page buffer + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_pb_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* the following procedure does not work. why? Can be checked with descpic */ +/* +void u8g_pb_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t cnt = b->width; + do + { + *ptr++ = 0; + cnt--; + } while( cnt != 0 ); +} +*/ + +/* + intersection assumptions: + a1 <= a2 is always true +*/ + /* + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + */ +/* +uint8_t u8g_pb8v1_IsYIntersection___Old(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c0, c1, c; + c0 = v0 <= b->p.page_y1; + c1 = v1 >= b->p.page_y0; + c = v0 > v1; + if ( c0 && c1 ) return 1; + if ( c0 && c ) return 1; + if ( c1 && c ) return 1; + return 0; +} +*/ + +uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c1, c2, c3, tmp; + c1 = v0 <= pb->p.page_y1; + c2 = v1 >= pb->p.page_y0; + c3 = v0 > v1; + /* + if ( c1 && c2 ) + return 1; + if ( c1 && c3 ) + return 1; + if ( c2 && c3 ) + return 1; + return 0; + */ + + tmp = c1; + c1 &= c2; + c2 &= c3; + c3 &= tmp; + c1 |= c2; + c1 |= c3; + return c1 & 1; +} + + +uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t /*c0, c1, */ c2, c3; + /* + conditions: b->p.page_y0 < b->p.page_y1 + there are no restriction on v0 and v1. If v0 > v1, then warp around unsigned is assumed + */ + /* + c0 = v0 < 0; + c1 = v1 < 0; + */ + c2 = v0 > b->width; + c3 = v1 > b->width; + /*if ( c0 && c1 ) return 0;*/ + if ( c2 && c3 ) return 0; + /*if ( c1 && c2 ) return 0;*/ + return 1; +} + +uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx) +{ + u8g_uint_t tmp; + + tmp = bbx->y; + tmp += bbx->h; + tmp--; + + if ( u8g_pb_IsYIntersection(pb, bbx->y, tmp) == 0 ) + return 0; + + /* maybe this one can be skiped... probability is very high to have an intersection, so it would be ok to always return 1 */ + tmp = bbx->x; + tmp += bbx->w; + tmp--; + + return u8g_pb_IsXIntersection(pb, bbx->x, tmp); +} + +void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box) +{ + box->x0 = 0; + box->y0 = pb->p.page_y0; + box->x1 = pb->width; + box->x1--; + box->y1 = pb->p.page_y1; +} + + +uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + u8g_uint_t v0, v1; + v0 = arg_pixel->y; + v1 = v0; + switch( arg_pixel->dir ) + { + case 0: + break; + case 1: + v1 += 8; /* this is independent from the page height */ + break; + case 2: + break; + case 3: + v0 -= 8; + break; + } + return u8g_pb_IsYIntersection(b, v0, v1); +} + + + +uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev) +{ + return u8g_WriteSequence(u8g, dev, b->width, b->buf); +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb14v1.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb14v1.c new file mode 100644 index 000000000..dbcd0215f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb14v1.c @@ -0,0 +1,200 @@ +/* + + u8g_pb14v1.c + + 14bit height monochrom (1 bit) page buffer, + byte has vertical orientation, 7 bits per byte + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb14v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb14v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb14v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb14v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + + +void u8g_pb14v1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb14v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb14v1_Clear(b); +} + +void u8g_pb14v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 7 ) + { + ptr += b->width; + y -= 7; + } + mask = 1; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb14v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb14v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb14v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb14v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb14v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb14v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb14v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb14v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb14v1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb14v1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16h1.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16h1.c new file mode 100644 index 000000000..6f1502ed7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16h1.c @@ -0,0 +1,213 @@ +/* + + u8g_pb16h1.c + + 2x 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 2*256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb16h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb16h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb16h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +void u8g_pb16h1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + + +void u8g_pb16h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16h1_Clear(b); +} + + +/* limitation: total buffer must not exceed 2*256 bytes */ +void u8g_pb16h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 8 ) + { + ptr += b->width; + y &= 0x07; + } + tmp = b->width; + tmp >>= 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } + +} + + +void u8g_pb16h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb16h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb16h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb16h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb16h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16h1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16h1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16h2.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16h2.c new file mode 100644 index 000000000..d694efbec --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16h2.c @@ -0,0 +1,182 @@ +/* + + u8g_pb16h2.c + + 2 bit per pixel page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb16h2_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + + /* two bits per pixel, 16 bits height --> 8 pixel --> 4 pixel per byte */ + end_ptr += b->width; + end_ptr += b->width; + + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +void u8g_pb16h2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16h2_Clear(b); +} + +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + register uint16_t tmp; + + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 2; + tmp *= (uint8_t)y; + ptr += tmp; + + tmp = x; + tmp >>= 2; + ptr += tmp; + + tmp = x; + tmp &= 3; + tmp <<= 1; + mask = 3; + mask <<= tmp; + mask = ~mask; + color_index &= 3; + color_index <<= tmp; + + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb16h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16h2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb16h2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16h2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb16h2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_page_First(&(pb->p)); + u8g_pb16h2_Clear(pb); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16h2_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16v1.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16v1.c new file mode 100644 index 000000000..774aaec70 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16v1.c @@ -0,0 +1,200 @@ +/* + + u8g_pb16v1.c + + 16bit height monochrom (1 bit) page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb16v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb16v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb16v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + + +void u8g_pb16v1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb16v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16v1_Clear(b); +} + +void u8g_pb16v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 8 ) + { + ptr += b->width; + y &= 0x07; + } + mask = 1; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb16v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb16v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb16v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb16v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb16v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16v1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16v1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16v2.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16v2.c new file mode 100644 index 000000000..3d40ddad7 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb16v2.c @@ -0,0 +1,172 @@ +/* + + u8g_pb16v2.c + + 16 bit height 2 bit per pixel page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16v2_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + + /* two bits per pixel, 16 bits height --> 8 pixel --> 4 pixel per byte */ + end_ptr += b->width; + end_ptr += b->width; + + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +void u8g_pb16v2Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16v2_Clear(b); +} + +void u8g_pb16v2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + if ( y >= 4 ) + { + ptr += b->width; + } + mask = 0x03; + y &= 0x03; + y <<= 1; + mask <<= y; + mask ^=0xff; + color_index &= 3; + color_index <<= y; + ptr += x; + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb16v2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16v2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb16v2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16v2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb16v2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16v2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16v2_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16v2_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb32h1.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb32h1.c new file mode 100644 index 000000000..6ac100f32 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb32h1.c @@ -0,0 +1,208 @@ +/* + + u8g_pb32h1.c + + 2x 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 2*256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb32h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb32h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb32h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb32h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +void u8g_pb32h1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*4; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + + +void u8g_pb32h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb32h1_Clear(b); +} + + +/* limitation: total buffer must not exceed 2*256 bytes */ +void u8g_pb32h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint16_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width; + tmp >>= 3; + tmp *= y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } + +} + + +void u8g_pb32h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb32h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb32h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb32h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb32h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb32h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb32h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb32h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb32h1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb32h1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h1.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h1.c new file mode 100644 index 000000000..8a13e0b7b --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h1.c @@ -0,0 +1,389 @@ +/* + + u8g_pb8h1.c + + 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 256 bytes because of the calculation inside the set pixel procedure + + 23. Sep 2012: Bug with down procedure, see FPS 1st page --> fixed (bug located in u8g_clip.c) + +*/ + +#include "u8g.h" +#include + +#ifdef __unix__ +#include +#endif + +/* NEW_CODE disabled, because the performance increase was too slow and not worth compared */ +/* to the increase of code size */ +/* #define NEW_CODE */ + +#ifdef __unix__ +void *u8g_buf_lower_limit; +void *u8g_buf_upper_limit; +#endif + +void u8g_pb8h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +#ifdef NEW_CODE +struct u8g_pb_h1_struct +{ + u8g_uint_t x; + u8g_uint_t y; + uint8_t *ptr; + uint8_t mask; + uint8_t line_byte_len; + uint8_t cnt; +}; + +static uint8_t u8g_pb8h1_bitmask[8] = { 0x080, 0x040, 0x020, 0x010, 0x008, 0x004, 0x002, 0x001 }; + +static void u8g_pb8h1_state_right(struct u8g_pb_h1_struct *s) U8G_NOINLINE; +static void u8g_pb8h1_state_right(struct u8g_pb_h1_struct *s) +{ + register u8g_uint_t x; + x = s->x; + x++; + s->x = x; + x &= 7; + s->mask = u8g_pb8h1_bitmask[x]; + if ( x == 0 ) + s->ptr++; +} + +static void u8g_pb8h1_state_left(struct u8g_pb_h1_struct *s) +{ + register u8g_uint_t x; + x = s->x; + x--; + s->x = x; + x &= 7; + s->mask = u8g_pb8h1_bitmask[x]; + if ( x == 7 ) + s->ptr--; +} + +static void u8g_pb8h1_state_down(struct u8g_pb_h1_struct *s) +{ + s->y++; + s->ptr += s->line_byte_len; +} + +static void u8g_pb8h1_state_up(struct u8g_pb_h1_struct *s) +{ + s->y--; + s->ptr -= s->line_byte_len; +} + +static void u8g_pb8h1_state_init(struct u8g_pb_h1_struct *s, u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y) U8G_NOINLINE; +static void u8g_pb8h1_state_init(struct u8g_pb_h1_struct *s, u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y) +{ + u8g_uint_t tmp; + + uint8_t *ptr = b->buf; + + s->x = x; + s->y = y; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 3; + s->line_byte_len = tmp; + + /* assume negative y values, can be down to -7, subtract this from the pointer and add correction of 8 to y */ + ptr -= tmp*8; + y+=8; + /* it is important that the result of tmp*y can be 16 bit value also for 8 bit mode */ + ptr += tmp*y; + + s->mask = u8g_pb8h1_bitmask[x & 7]; + + /* assume negative x values (to -7), subtract 8 pixel from the pointer and add 8 to x */ + ptr--; + x += 8; + x >>= 3; + ptr += x; + s->ptr = ptr; +} + +static void u8g_pb8h1_state_set_pixel(struct u8g_pb_h1_struct *s, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb8h1_state_set_pixel(struct u8g_pb_h1_struct *s, uint8_t color_index) +{ + +#ifdef __unix__ + assert( s->ptr >= u8g_buf_lower_limit ); + assert( s->ptr < u8g_buf_upper_limit ); +#endif + + if ( color_index ) + { + *s->ptr |= s->mask; + } + else + { + uint8_t mask = s->mask; + mask ^=0xff; + *s->ptr &= mask; + } +} +#endif + + +void u8g_pb8h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +/* limitation: total buffer must not exceed 256 bytes */ +void u8g_pb8h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ +#ifdef NEW_CODE + struct u8g_pb_h1_struct s; + u8g_pb8h1_state_init(&s, b, x, y); + u8g_pb8h1_state_set_pixel(&s, color_index); + +// u8g_pb8h1_state_up(&s); +// if ( s.y > b->p.page_y1 ) +// return; +// if ( s.x > b->width ) +// return; +// u8g_pb8h1_state_set_pixel(&s, color_index); +#else + register uint8_t mask; + u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width; + tmp >>= 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +#endif +} + + +void u8g_pb8h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb8h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + +#ifdef NEW_CODE +static void u8g_pb8h1_Set8PixelState(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + struct u8g_pb_h1_struct s; + uint8_t cnt; + u8g_pb8h1_state_init(&s, b, arg_pixel->x, arg_pixel->y); + cnt = 8; + switch( arg_pixel->dir ) + { + case 0: + do + { + if ( s.x < b->width ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_right(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 1: + do + { + if ( s.y >= b->p.page_y0 ) + if ( s.y <= b->p.page_y1 ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_down(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 2: + do + { + if ( s.x < b->width ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_left(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 3: + do + { + if ( s.y >= b->p.page_y0 ) + if ( s.y <= b->p.page_y1 ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_up(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + } +} +#endif + +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: +#ifdef NEW_CODE + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1_Set8PixelState(pb, (u8g_dev_arg_pixel_t *)arg); +#else + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); +#endif + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h1f.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h1f.c new file mode 100644 index 000000000..ffc90c2a3 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h1f.c @@ -0,0 +1,194 @@ +/* + + u8g_pb8h1f.c + + 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation, same as u8g_pb8h1, but byte is flipped + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb8h1f_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8h1f_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8h1f_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8h1f_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +void u8g_pb8h1f_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +/* limitation: total buffer must not exceed 256 bytes, 20 nov 2012: extended to >256 bytes */ +void u8g_pb8h1f_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + /*register uint8_t mask, tmp;*/ + register uint8_t mask; + register u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width >> 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 1; + mask <<= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb8h1f_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h1f_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8h1f_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h1f_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb8h1f_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h1f_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1f_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h1f_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h2.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h2.c new file mode 100644 index 000000000..0e37f211f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h2.c @@ -0,0 +1,167 @@ +/* + + u8g_pb8h2.c + + 8bit height 2 bit per pixel page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb8h2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +static void u8g_pb8h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb8h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + register uint16_t tmp; + + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 2; + tmp *= (uint8_t)y; + ptr += tmp; + + tmp = x; + tmp >>= 2; + ptr += tmp; + + tmp = x; + tmp &= 3; + tmp <<= 1; + mask = 3; + mask <<= tmp; + mask = ~mask; + color_index &= 3; + color_index <<= tmp; + + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb8h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8h2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb8h2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h8.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h8.c new file mode 100644 index 000000000..5753645d1 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8h8.c @@ -0,0 +1,179 @@ +/* + + u8g_pb8h8.c + + 8 bits per pixel, horizontal + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +struct _u8g_pb_t +{ + u8g_page_t p; + u8g_uint_t width; + void *buf; +}; +typedef struct _u8g_pb_t u8g_pb_t; + + +uint8_t u8g_index_color_8h8_buf[WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_index_color_8h8_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_index_color_8h8_buff}; +u8g_dev_t name = { dev_fn, &u8g_index_color_8h8_pb, com_fn } + +*/ + +#include "u8g.h" + +#define WIDTH_BITS 7 +#define WIDTH (1<buf; + uint8_t *end_ptr = ptr; + uint8_t cnt = b->p.page_height; + do + { + end_ptr += b->width; + cnt--; + } while( cnt > 0 ); + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + +void u8g_pb8h8_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb8h8_Clear(b); +} + +static void u8g_pb8h8_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + ptr += tmp; + *ptr = color_index; +} + +void u8g_pb8h8_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h8_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8h8_Set8Pixel(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h8_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h8_Set8Pixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h8_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb8h8_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb8h8_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_R3G3B2; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8v1.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8v1.c new file mode 100644 index 000000000..37352fd11 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8v1.c @@ -0,0 +1,184 @@ +/* + + u8g_pb8v1.c + + 8bit height monochrom (1 bit) page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +void u8g_pb8v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + mask = 1; + y &= 0x07; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb8v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb8v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8v2.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8v2.c new file mode 100644 index 000000000..3656511db --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_pb8v2.c @@ -0,0 +1,153 @@ +/* + + u8g_pb8v2.c + + 8bit height 2 bit per pixel page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb8v2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +void u8g_pb8v2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + mask = 0x03; + y &= 0x03; + y <<= 1; + mask <<= y; + mask ^=0xff; + color_index &= 3; + color_index <<= y; + ptr += x; + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb8v2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8v2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8v2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8v2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); + +} + + + +uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb8v2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8v2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_rect.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_rect.c new file mode 100644 index 000000000..139a43a24 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_rect.c @@ -0,0 +1,232 @@ +/* + + u8g_rect.c + + U8G high level interface for horizontal and vertical things + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_draw_hline(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + uint8_t pixel = 0x0ff; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, pixel); + w-=8; + x+=8; + } + if ( w != 0 ) + { + w ^=7; + w++; + pixel <<= w&7; + u8g_Draw8Pixel(u8g, x, y, 0, pixel); + } +} + +void u8g_draw_vline(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t h) +{ + uint8_t pixel = 0x0ff; + while( h >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 1, pixel); + h-=8; + y+=8; + } + if ( h != 0 ) + { + h ^=7; + h++; + pixel <<= h&7; + u8g_Draw8Pixel(u8g, x, y, 1, pixel); + } +} + +void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, w, 1) == 0 ) + return; + u8g_draw_hline(u8g, x, y, w); +} + +void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, 1, w) == 0 ) + return; + u8g_draw_vline(u8g, x, y, w); +} + +/* restrictions: w > 0 && h > 0 */ +void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + u8g_uint_t xtmp = x; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + + u8g_draw_hline(u8g, x, y, w); + u8g_draw_vline(u8g, x, y, h); + x+=w; + x--; + u8g_draw_vline(u8g, x, y, h); + y+=h; + y--; + u8g_draw_hline(u8g, xtmp, y, w); +} + +void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + do + { + u8g_draw_hline(u8g, x, y, w); + y++; + h--; + } while( h != 0 ); +} + +/* restrictions: h > 0 */ +void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + u8g_draw_box(u8g, x, y, w, h); +} + + +void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) +{ + u8g_uint_t xl, yu; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + xl = x; + xl += r; + yu = y; + yu += r; + + { + u8g_uint_t yl, xr; + + xr = x; + xr += w; + xr -= r; + xr -= 1; + + yl = y; + yl += h; + yl -= r; + yl -= 1; + + u8g_draw_circle(u8g, xl, yu, r, U8G_DRAW_UPPER_LEFT); + u8g_draw_circle(u8g, xr, yu, r, U8G_DRAW_UPPER_RIGHT); + u8g_draw_circle(u8g, xl, yl, r, U8G_DRAW_LOWER_LEFT); + u8g_draw_circle(u8g, xr, yl, r, U8G_DRAW_LOWER_RIGHT); + } + + { + u8g_uint_t ww, hh; + + ww = w; + ww -= r; + ww -= r; + ww -= 2; + hh = h; + hh -= r; + hh -= r; + hh -= 2; + + xl++; + yu++; + h--; + w--; + u8g_draw_hline(u8g, xl, y, ww); + u8g_draw_hline(u8g, xl, y+h, ww); + u8g_draw_vline(u8g, x, yu, hh); + u8g_draw_vline(u8g, x+w, yu, hh); + } +} + +void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) +{ + u8g_uint_t xl, yu; + u8g_uint_t yl, xr; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + xl = x; + xl += r; + yu = y; + yu += r; + + xr = x; + xr += w; + xr -= r; + xr -= 1; + + yl = y; + yl += h; + yl -= r; + yl -= 1; + + u8g_draw_disc(u8g, xl, yu, r, U8G_DRAW_UPPER_LEFT); + u8g_draw_disc(u8g, xr, yu, r, U8G_DRAW_UPPER_RIGHT); + u8g_draw_disc(u8g, xl, yl, r, U8G_DRAW_LOWER_LEFT); + u8g_draw_disc(u8g, xr, yl, r, U8G_DRAW_LOWER_RIGHT); + + { + u8g_uint_t ww, hh; + + ww = w; + ww -= r; + ww -= r; + ww -= 2; + hh = h; + hh -= r; + hh -= r; + hh -= 2; + + xl++; + yu++; + h--; + u8g_draw_box(u8g, xl, y, ww, r+1); + u8g_draw_box(u8g, xl, yl, ww, r+1); + //u8g_draw_hline(u8g, xl, y+h, ww); + u8g_draw_box(u8g, x, yu, w, hh); + //u8g_draw_vline(u8g, x+w, yu, hh); + } +} diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_rot.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_rot.c new file mode 100644 index 000000000..c581104cb --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_rot.c @@ -0,0 +1,398 @@ +/* + + u8g_rot.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); +uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); +uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +u8g_dev_t u8g_dev_rot = { u8g_dev_rot90_fn, NULL, NULL }; + + +void u8g_UndoRotation(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + return; + u8g->dev = u8g_dev_rot.dev_mem; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot90(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot90_fn; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot180(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot180_fn; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot270(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot270_fn; + u8g_UpdateDimension(u8g); +} + +uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y, tmp; + + /* transform the reference point */ + y = bbx->x; + x = u8g->height; + /* x = u8g_GetWidthLL(u8g, rotation_chain); */ + x -= bbx->y; + x--; + + /* adjust point to be the uppler left corner again */ + x -= bbx->h; + x++; + + /* swap box dimensions */ + tmp = bbx->w; + bbx->w = bbx->h; + bbx->h = tmp; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + //new_box.x0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + //new_box.x1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + + new_box.x0 = ((u8g_box_t *)arg)->y0; + new_box.x1 = ((u8g_box_t *)arg)->y1; + new_box.y0 = ((u8g_box_t *)arg)->x0; + new_box.y1 = ((u8g_box_t *)arg)->x1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + y = ((u8g_dev_arg_pixel_t *)arg)->x; + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + //uint16_t x,y; + y = ((u8g_dev_arg_pixel_t *)arg)->x; + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=1; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + +uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y; + + /* transform the reference point */ + //y = u8g_GetHeightLL(u8g, rotation_chain); + y = u8g->height; + y -= bbx->y; + y--; + + //x = u8g_GetWidthLL(u8g, rotation_chain); + x = u8g->width; + x -= bbx->x; + x--; + + /* adjust point to be the uppler left corner again */ + y -= bbx->h; + y++; + + x -= bbx->w; + x++; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + + new_box.x0 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x1 - 1; + new_box.x1 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x0 - 1; + new_box.y0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + new_box.y1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->y; + y--; + + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->x; + x--; + + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->y; + y--; + + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->x; + x--; + + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=2; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + +uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y, tmp; + + /* transform the reference point */ + x = bbx->y; + + y = u8g->width; + /* y = u8g_GetHeightLL(u8g, rotation_chain); */ + y -= bbx->x; + y--; + + /* adjust point to be the uppler left corner again */ + y -= bbx->w; + y++; + + /* swap box dimensions */ + tmp = bbx->w; + bbx->w = bbx->h; + bbx->h = tmp; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + + new_box.x0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + new_box.x1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + new_box.y0 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x1 - 1; + new_box.y1 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x0 - 1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + x = ((u8g_dev_arg_pixel_t *)arg)->y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->x; + y--; + + /* + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + */ + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + x = ((u8g_dev_arg_pixel_t *)arg)->y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->x; + y--; + + /* + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + */ + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=3; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_scale.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_scale.c new file mode 100644 index 000000000..e5b4b634f --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_scale.c @@ -0,0 +1,188 @@ +/* + + u8g_scale.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Scale screen by some constant factors. Usefull for making bigger fonts wiht less + memory consumption + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_scale_2x2_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +u8g_dev_t u8g_dev_scale = { u8g_dev_scale_2x2_fn, NULL, NULL }; + +void u8g_UndoScale(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_scale ) + return; + u8g->dev = u8g_dev_scale.dev_mem; + u8g_UpdateDimension(u8g); +} + +void u8g_SetScale2x2(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_scale ) + { + u8g_dev_scale.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_scale; + } + u8g_dev_scale.dev_fn = u8g_dev_scale_2x2_fn; + u8g_UpdateDimension(u8g); +} + + +uint8_t u8g_dev_scale_2x2_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *chain = (u8g_dev_t *)(dev->dev_mem); + uint8_t pixel; + uint16_t scaled_pixel; + uint8_t i; + uint8_t dir; + u8g_uint_t x, y, xx,yy; + + switch(msg) + { + default: + return u8g_call_dev_fn(u8g, chain, msg, arg); + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, chain) / 2; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g, chain) / 2; + break; + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, chain, msg, arg); + ((u8g_box_t *)arg)->x0 /= 2; + ((u8g_box_t *)arg)->x1 /= 2; + ((u8g_box_t *)arg)->y0 /= 2; + ((u8g_box_t *)arg)->y1 /= 2; + return 1; + case U8G_DEV_MSG_SET_PIXEL: + x = ((u8g_dev_arg_pixel_t *)arg)->x; + x *= 2; + y = ((u8g_dev_arg_pixel_t *)arg)->y; + y *= 2; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + x++; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + y++; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + pixel = ((u8g_dev_arg_pixel_t *)arg)->pixel; + dir = ((u8g_dev_arg_pixel_t *)arg)->dir; + scaled_pixel = 0; + for( i = 0; i < 8; i++ ) + { + scaled_pixel<<=2; + if ( pixel & 128 ) + { + scaled_pixel |= 3; + } + pixel<<=1; + } + x = ((u8g_dev_arg_pixel_t *)arg)->x; + x *= 2; + xx = x; + y = ((u8g_dev_arg_pixel_t *)arg)->y; + y *= 2; + yy = y; + if ( ((u8g_dev_arg_pixel_t *)arg)->dir & 1 ) + { + xx++; + } + else + { + yy++; + } + + ((u8g_dev_arg_pixel_t *)arg)->pixel = scaled_pixel>>8; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + + ((u8g_dev_arg_pixel_t *)arg)->x = xx; + ((u8g_dev_arg_pixel_t *)arg)->y = yy; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + ((u8g_dev_arg_pixel_t *)arg)->pixel = scaled_pixel&255; + //((u8g_dev_arg_pixel_t *)arg)->pixel = 0x00; + switch(dir) + { + case 0: + x+=8; + xx+=8; + break; + case 1: + y+=8; + yy+=8; + break; + case 2: + x-=8; + xx-=8; + break; + case 3: + y-=8; + yy-=8; + break; + } + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + ((u8g_dev_arg_pixel_t *)arg)->x = xx; + ((u8g_dev_arg_pixel_t *)arg)->y = yy; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_state.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_state.c new file mode 100644 index 000000000..3ae3eee4a --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_state.c @@ -0,0 +1,102 @@ +/* + + u8g_state.c + + backup and restore hardware state + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + state callback: backup env U8G_STATE_MSG_BACKUP_ENV + device callback: DEV_MSG_INIT + state callback: backup u8g U8G_STATE_MSG_BACKUP_U8G + state callback: restore env U8G_STATE_MSG_RESTORE_ENV + + state callback: backup env U8G_STATE_MSG_BACKUP_ENV + state callback: retore u8g U8G_STATE_MSG_RESTORE_U8G + DEV_MSG_PAGE_FIRST or DEV_MSG_PAGE_NEXT + state callback: restore env U8G_STATE_MSG_RESTORE_ENV + +*/ + +#include +#include "u8g.h" + +void u8g_state_dummy_cb(uint8_t msg) +{ + /* the dummy procedure does nothing */ +} + +void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb) +{ + u8g->state_cb = backup_cb; + /* in most cases the init message was already sent, so this will backup the */ + /* current u8g state */ + backup_cb(U8G_STATE_MSG_BACKUP_U8G); +} + + +/*===============================================================*/ +/* AVR */ + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif +#endif + +#if defined(U8G_ATMEGA_HW_SPI) +#include +static uint8_t u8g_state_avr_spi_memory[2]; + +void u8g_backup_avr_spi(uint8_t msg) +{ + if ( U8G_STATE_MSG_IS_BACKUP(msg) ) + { + u8g_state_avr_spi_memory[U8G_STATE_MSG_GET_IDX(msg)] = SPCR; + } + else + { + uint8_t tmp = SREG; + cli(); + SPCR = 0; + SPCR = u8g_state_avr_spi_memory[U8G_STATE_MSG_GET_IDX(msg)]; + SREG = tmp; + } +} + +#endif + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_u16toa.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_u16toa.c new file mode 100644 index 000000000..f1d1803cf --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_u16toa.c @@ -0,0 +1,68 @@ +/* + + u8g_u16toa.c + + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "u8g.h" + +const char *u8g_u16toap(char * dest, uint16_t v) +{ + uint8_t pos; + uint8_t d; + uint16_t c; + c = 10000; + for( pos = 0; pos < 5; pos++ ) + { + d = '0'; + while( v >= c ) + { + v -= c; + d++; + } + dest[pos] = d; + c /= 10; + } + dest[5] = '\0'; + return dest; +} + +/* v = value, d = number of digits */ +const char *u8g_u16toa(uint16_t v, uint8_t d) +{ + static char buf[6]; + d = 5-d; + return u8g_u16toap(buf, v) + d; +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_u8toa.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_u8toa.c new file mode 100644 index 000000000..f3a2c06fa --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_u8toa.c @@ -0,0 +1,68 @@ +/* + + u8g_u8toa.c + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "u8g.h" + +static const unsigned char u8g_u8toa_tab[3] = { 100, 10, 1 } ; +const char *u8g_u8toap(char * dest, uint8_t v) +{ + uint8_t pos; + uint8_t d; + uint8_t c; + for( pos = 0; pos < 3; pos++ ) + { + d = '0'; + c = *(u8g_u8toa_tab+pos); + while( v >= c ) + { + v -= c; + d++; + } + dest[pos] = d; + } + dest[3] = '\0'; + return dest; +} + +/* v = value, d = number of digits */ +const char *u8g_u8toa(uint8_t v, uint8_t d) +{ + static char buf[4]; + d = 3-d; + return u8g_u8toap(buf, v) + d; +} + diff --git a/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_virtual_screen.c b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_virtual_screen.c new file mode 100644 index 000000000..8000506b4 --- /dev/null +++ b/ArduinoAddons/Arduino_0.xx/libraries/U8glib/utility/u8g_virtual_screen.c @@ -0,0 +1,145 @@ +/* + + u8g_virtual_screen.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +struct _u8g_vs_t +{ + u8g_uint_t x; + u8g_uint_t y; + u8g_t *u8g; +}; +typedef struct _u8g_vs_t u8g_vs_t; + +#define U8g_VS_MAX 4 +uint8_t u8g_vs_cnt = 0; +u8g_vs_t u8g_vs_list[U8g_VS_MAX]; +uint8_t u8g_vs_current; +u8g_uint_t u8g_vs_width; +u8g_uint_t u8g_vs_height; + +uint8_t u8g_dev_vs_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + default: + { + uint8_t i; + for( i = 0; i < u8g_vs_cnt; i++ ) + { + u8g_call_dev_fn(u8g_vs_list[i].u8g, u8g_vs_list[i].u8g->dev, msg, arg); + } + } + return 1; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_vs_current = 0; + if ( u8g_vs_cnt != 0 ) + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + return 0; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t ret = 0; + if ( u8g_vs_cnt != 0 ) + ret = u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + if ( ret != 0 ) + return ret; + u8g_vs_current++; /* next device */ + if ( u8g_vs_current >= u8g_vs_cnt ) /* reached end? */ + return 0; + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, U8G_DEV_MSG_PAGE_FIRST, arg); + } + return 0; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_vs_width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_vs_height; + break; + case U8G_DEV_MSG_GET_PAGE_BOX: + if ( u8g_vs_current < u8g_vs_cnt ) + { + u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + ((u8g_box_t *)arg)->x0 += u8g_vs_list[u8g_vs_current].x; + ((u8g_box_t *)arg)->x1 += u8g_vs_list[u8g_vs_current].x; + ((u8g_box_t *)arg)->y0 += u8g_vs_list[u8g_vs_current].y; + ((u8g_box_t *)arg)->y1 += u8g_vs_list[u8g_vs_current].y; + } + else + { + ((u8g_box_t *)arg)->x0 = 0; + ((u8g_box_t *)arg)->x1 = 0; + ((u8g_box_t *)arg)->y0 = 0; + ((u8g_box_t *)arg)->y1 = 0; + } + return 1; + case U8G_DEV_MSG_SET_PIXEL: + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_vs_current < u8g_vs_cnt ) + { + ((u8g_dev_arg_pixel_t *)arg)->x -= u8g_vs_list[u8g_vs_current].x; + ((u8g_dev_arg_pixel_t *)arg)->y -= u8g_vs_list[u8g_vs_current].y; + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + } + break; + } + return 1; +} + + + +u8g_dev_t u8g_dev_vs = { u8g_dev_vs_fn, NULL, NULL }; + +void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height) +{ + if ( vs_u8g->dev != &u8g_dev_vs ) + return; /* abort if there is no a virtual screen device */ + u8g_vs_width = width; + u8g_vs_height = height; +} + +uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g) +{ + if ( vs_u8g->dev != &u8g_dev_vs ) + return 0; /* abort if there is no a virtual screen device */ + if ( u8g_vs_cnt >= U8g_VS_MAX ) + return 0; /* maximum number of child u8g's reached */ + u8g_vs_list[u8g_vs_cnt].u8g = child_u8g; + u8g_vs_list[u8g_vs_cnt].x = x; + u8g_vs_list[u8g_vs_cnt].y = y; + u8g_vs_cnt++; + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/boards.txt b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/boards.txt new file mode 100644 index 000000000..363d61552 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/boards.txt @@ -0,0 +1,23 @@ +############################################################## + +omc.name=OMC with Atmega644 at 20Mhz + +omc.upload.maximum_size=63488 +omc.upload.maximum_data_size=4096 + +omc.upload.protocol=stk500v2 +omc.upload.speed=115200 +omc.bootloader.path=OMC +omc.bootloader.file=bootloader-644-20MHz.hex + +omc.bootloader.low_fuses=0xE7 +omc.bootloader.high_fuses=0xD4 +omc.bootloader.extended_fuses=0xFC +omc.bootloader.unlock_bits=0x3F +omc.bootloader.lock_bits=0x0F + +omc.build.mcu=atmega644 +omc.build.f_cpu=20000000L +omc.build.board=AVR_OMC +omc.build.core=arduino:arduino +omc.build.variant=sanguino \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/OMC/bootloader-644-20MHz.hex b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/OMC/bootloader-644-20MHz.hex new file mode 100644 index 000000000..d216c65f9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/OMC/bootloader-644-20MHz.hex @@ -0,0 +1,75 @@ +:10F800008FEF90E19EBF8DBF11241FBE5A9A00C09A +:10F81000CDB7DEB7CD51D140DEBFCDBF1092C50010 +:10F820008AE08093C40088E18093C100EE24FF2425 +:10F8300020E0552400E010E039E0432E9BE0292E23 +:10F84000312C2C0E3D1ECFC14150504060407040C5 +:10F8500011F43FE206C08091C00087FFF5CF3091E0 +:10F86000C600933021F1943028F4913099F0923011 +:10F87000C8F407C0953049F1953000F19630D1F5C4 +:10F8800035C03B3119F491E02BE134C03F3291F5A2 +:10F890003983BBC1313011F0351559F52327532E6B +:10F8A00092E028C0B32FA0E0232793E023C0832F4A +:10F8B00090E0A82BB92B232794E01CC03E30C9F45C +:10F8C000232795E0EE24FF2415C0E1E0F0E0EC0FE3 +:10F8D000FD1FEE0DFF1D30830894E11CF11C232752 +:10F8E000EA16FB0639F4D70196E004C0321709F492 +:10F8F0008CC190E041ED5AE363E570E0ACCF90E05D +:10F9000044C08D81803311F090E00AC08F8188233C +:10F9100011F49EE105C0813011F099E001C096E933 +:10F920001A821B828D818C838E818D839E831F82A0 +:10F9300047E050E0F4C01A8288E08B8381E48C8336 +:10F9400086E58D8382E58E8389E48F8383E58887CE +:10F9500080E589878FE58A8782E38B874BE050E0DB +:10F96000DEC08A81813941F0823941F0803911F459 +:10F970008FE005C080E003C082E001C08AE01A8207 +:10F980008B8343E050E0CBC091E01A8242E050E02C +:10F99000C7C08D81882311F48EE124C0813011F01D +:10F9A00089E020C086E91EC01A82E1E0F0E04092C2 +:10F9B0005700849118C08B81803579F48C81883010 +:10F9C00031F4E2E0F0E04092570084910BC0E0E0B7 +:10F9D000F0E040925700849105C0E3E0F0E04092EF +:10F9E000570084911A828B831C8244E050E097C0B8 +:10F9F000BC80AA248D81082F10E00A291B29000F42 +:10FA0000111F1A828AC09A8088248B81682F70E027 +:10FA100068297929933109F033C0F7EF0F3F1F07A9 +:10FA200010F0A8013FC023E0F80120935700E895AB +:10FA300007B600FCFDCFA801D1018C9111962C9145 +:10FA400011971296D22ECC2490E08C299D2921E08A +:10FA5000FA010C0120935700E89511244E5F5F4F87 +:10FA60006250704051F725E0F80120935700E89567 +:10FA700007B600FCFDCF81E180935700E89512C0E6 +:10FA8000A801FB01D10141BD52BD4F5F5F4F8D9178 +:10FA900080BDFA9AF99AF999FECF3197A1F7A8019A +:10FAA000460F571F1A828A0138C07A8066248B81DC +:10FAB000A82FB0E0A629B7291A828981843191F450 +:10FAC000BD019E012D5F3F4FF80185919491F90191 +:10FAD000808391832E5F3F4F0E5F1F4F62507040B7 +:10FAE00099F713C0A801BD019E012D5F3F4F41BD95 +:10FAF00052BD4F5F5F4FF89A80B5F90181939F0126 +:10FB000061507040A1F70A0F1B1FAD014D5F5F4FA1 +:10FB1000F901108204C080EC8A8342E050E090E05A +:10FB2000FBE1F093C6008091C00086FFFCCF80917E +:10FB3000C00080648093C0005092C6008091C000D5 +:10FB400086FFFCCF8091C00080648093C000652F49 +:10FB50005093C6008091C00086FFFCCF8091C0000A +:10FB600080648093C000342F4093C6008091C00011 +:10FB700086FFFCCF8091C00080648093C0008EE03F +:10FB80008093C6008091C00086FFFCCF8091C000AA +:10FB900080648093C00025E1252523272627FE01C8 +:10FBA000319610C030813093C6008091C00086FF2E +:10FBB000FCCF31968091C00080648093C0002327E1 +:10FBC000415050404115510569F72093C60080917E +:10FBD000C00086FFFCCF8091C00080648093C0008D +:10FBE000992349F4539441ED5AE363E570E090E0C2 +:10FBF000A0E0B0E030CE5A9881E180935700E895BC +:10FC000011241F921F920895FFCF9981933109F417 +:10FC1000FACE9431C8F4963009F4EACE973050F415 +:10FC2000923009F46CCE933009F49BCE913009F0F8 +:10FC300072CF81CE913109F4A7CE923108F0E1CE96 +:10FC4000903109F068CF5BCE983109F4B4CE993188 +:10FC500050F4953109F4D7CE953108F426CF96317A +:10FC600009F059CF22CF9B3109F493CE9C3120F477 +:10FC70009A3109F050CF98CE9D3109F442CE9F328F +:06FC800009F049CFB8CFE6 +:040000030000F80001 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/atmega644p/ATmegaBOOT.c b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/atmega644p/ATmegaBOOT.c new file mode 100644 index 000000000..171101445 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/atmega644p/ATmegaBOOT.c @@ -0,0 +1,713 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega644 and ATmega644P */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* 20090131: Added 324P support from Alex Leone */ +/* Marius Kintel */ +/* 20080915: applied ADABoot mods for Sanguino 644P */ +/* Brian Riley */ +/* 20080711: hacked for Sanguino by Zach Smith */ +/* and Justin Day */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +#ifdef ADABOOT + #define NUM_LED_FLASHES 3 + #define ADABOOT_VER 1 +#endif + + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20080711: hack by Zach Hoeken */ +#define BAUD_RATE 38400 + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( +#if defined(__AVR_ATmega644P__) +#define SIG2 0x96 +#define SIG3 0x0A +#elif defined(__AVR_ATmega644__) +#define SIG2 0x96 +#define SIG3 0x09 +#elif defined(__AVR_ATmega324P__) +#define SIG2 0x95 +#define SIG3 0x08 +#endif +#define PAGE_SIZE 0x080U //128 words +#define PAGE_SIZE_BYTES 0x100U //256 bytes + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union +{ + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union +{ + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct +{ + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; + +uint8_t error_count = 0; +uint8_t sreg; + +void (*app_start)(void) = 0x0000; + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + uint16_t i; + + asm volatile("nop\n\t"); + +#ifdef ADABOOT // BBR/LF 10/8/2007 & 9/13/2008 + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if its a not an external reset... + app_start(); // skip bootloader +#endif + + + //initialize our serial port. + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1< 0x85) + getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') + { + ch2 = getch(); + if(ch2 == 0x80) + byte_response(HW_VER); // Hardware version + else if(ch2==0x81) + byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) + byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) + byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else + byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') + { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') + { + getNch(5); + nothing_response(); + } + + + /* Enter programming mode */ + else if(ch=='P') + { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') + { + nothing_response(); +#ifdef ADABOOT + // autoreset via watchdog (sneaky!) BBR/LF 9/13/2008 + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') + { + nothing_response(); + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') + { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') + { + getNch(4); + byte_response(0x00); + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') + { + length.byte[1] = getch(); + length.byte[0] = getch(); + + flags.eeprom = 0; + if (getch() == 'E') + flags.eeprom = 1; + + for (i=0; i byte location + address.word = address.word << 1; + + //Even up an odd number of bytes + if ((length.byte[0] & 0x01)) + length.word++; + + // HACKME: EEPE used to be EEWE + //Wait for previous EEPROM writes to complete + //while(bit_is_set(EECR,EEPE)); + while(EECR & (1< byte location + } + + // Command terminator + if (getch() == ' ') + { + putch(0x14); + for (w=0; w= 'a') + ah = ah - 'a' + 0x0a; + else if(ah >= '0') + ah -= '0'; + if(al >= 'a') + al = al - 'a' + 0x0a; + else if(al >= '0') + al -= '0'; + + return (ah << 4) + al; +} + + +void puthex(char ch) +{ + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) + ah = ah - 0x0a + 'a'; + else + ah += '0'; + + al = (ch & 0x0f); + if(al >= 0x0a) + al = al - 0x0a + 'a'; + else + al += '0'; + + putch(ah); + putch(al); +} + + +void putch(char ch) +{ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +} + + + + +char getch(void) +{ + uint32_t count = 0; + +#ifdef ADABOOT + LED_PORT &= ~_BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + while(!(UCSR0A & _BV(RXC0))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + +#ifdef ADABOOT + LED_PORT |= _BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + return UDR0; +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/atmega644p/README.txt b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/atmega644p/README.txt new file mode 100644 index 000000000..828600785 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/bootloaders/atmega644p/README.txt @@ -0,0 +1,3 @@ +Note: This bootloader support ATmega644, ATmega644P and ATmega324P. +To build, set PROGRAM and MCU_TARGET in the Makefile according to your target device. + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/variants/sanguino/pins_arduino.h b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/variants/sanguino/pins_arduino.h new file mode 100644 index 000000000..f4298d868 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/OMC_tkj/variants/sanguino/pins_arduino.h @@ -0,0 +1,269 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ + + Changelog + ----------- + 11/25/11 - ryan@ryanmsutton.com - Add pins for Sanguino 644P and 1284P + 07/15/12 - ryan@ryanmsutton.com - Updated for arduino0101 + + Improvements by Kristian Lauszus, kristianl@tkjelectronics.dk +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +const static uint8_t SS = 4; +const static uint8_t MOSI = 5; +const static uint8_t MISO = 6; +const static uint8_t SCK = 7; + +static const uint8_t SDA = 17; +static const uint8_t SCL = 16; + +#define LED_BUILTIN 0 + +static const uint8_t A0 = 31; +static const uint8_t A1 = 30; +static const uint8_t A2 = 29; +static const uint8_t A3 = 28; +static const uint8_t A4 = 27; +static const uint8_t A5 = 26; +static const uint8_t A6 = 25; +static const uint8_t A7 = 24; + +// ATMEL ATMEGA644/ATMEGA1284 / SANGUINO +// +// +---\/---+ +// (D 0) PB0 1| |40 PA0 (AI 0 / D31) +// (D 1) PB1 2| |39 PA1 (AI 1 / D30) +// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) +// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) +// SS PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) +// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) +// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) +// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) +// RST 9| |32 AREF +// VCC 10| |31 GND +// GND 11| |30 AVCC +// XTAL2 12| |29 PC7 (D 23) +// XTAL1 13| |28 PC6 (D 22) +// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI +// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO +// INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS +// INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK +// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA +// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL +// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM +// +--------+ +// +#define NUM_DIGITAL_PINS 24 +#define NUM_ANALOG_INPUTS 8 + +#define analogInputToDigitalPin(p) ((p < 8) ? 31 - (p): -1) +#define analogPinToChannel(p) ((p < 8) ? (p) : 31 - (p)) + +#define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 12 || (p) == 13 || (p) == 14 || (p) == 15 ) + +#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) ) + +#define digitalPinToPCICRbit(p) ( (((p) >= 24) && ((p) <= 31)) ? 0 : \ + ( (((p) >= 0) && ((p) <= 7)) ? 1 : \ + ( (((p) >= 16) && ((p) <= 23)) ? 2 : \ + ( (((p) >= 8) && ((p) <= 15)) ? 3 : \ + 0 ) ) ) ) + +#define digitalPinToPCMSK(p) ( (((p) >= 24) && ((p) <= 31)) ? (&PCMSK0) : \ + ( (((p) >= 0) && ((p) <= 7)) ? (&PCMSK1) : \ + ( (((p) >= 16) && ((p) <= 23)) ? (&PCMSK2) : \ + ( (((p) >= 8) && ((p) <= 15)) ? (&PCMSK3) : \ + ((uint8_t *)0) ) ) ) ) + + +#define digitalPinToPCMSKbit(p) ( (((p) >= 24) && ((p) <= 31)) ? (31 - (p)) : \ + ( (((p) >= 0) && ((p) <= 7)) ? (p) : \ + ( (((p) >= 16) && ((p) <= 23)) ? ((p) - 16) : \ + ( (((p) >= 8) && ((p) <= 15)) ? ((p) - 8) : \ + 0 ) ) ) ) + +#define digitalPinToInterrupt(p) ((p) == 10 ? 0 : ((p) == 11 ? 1 : ((p) == 2 ? 2 : NOT_AN_INTERRUPT))) + +#ifdef ARDUINO_MAIN +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &DDRA, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &PORTA, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, +}; +const uint16_t PROGMEM port_to_input_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, +}; +const uint8_t PROGMEM digital_pin_to_port_PGM[] = +{ + PB, /* 0 */ + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PD, /* 8 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PC, /* 16 */ + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PA, /* 24 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA /* 31 */ +}; +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = +{ + _BV(0), /* 0, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 16, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(7), /* 24, port A */ + _BV(6), + _BV(5), + _BV(4), + _BV(3), + _BV(2), + _BV(1), + _BV(0) +}; +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = +{ + NOT_ON_TIMER, /* 0 - PB0 */ + NOT_ON_TIMER, /* 1 - PB1 */ + NOT_ON_TIMER, /* 2 - PB2 */ + TIMER0A, /* 3 - PB3 */ + TIMER0B, /* 4 - PB4 */ + NOT_ON_TIMER, /* 5 - PB5 */ + NOT_ON_TIMER, /* 6 - PB6 */ + NOT_ON_TIMER, /* 7 - PB7 */ + NOT_ON_TIMER, /* 8 - PD0 */ + NOT_ON_TIMER, /* 9 - PD1 */ + NOT_ON_TIMER, /* 10 - PD2 */ + NOT_ON_TIMER, /* 11 - PD3 */ + TIMER1B, /* 12 - PD4 */ + TIMER1A, /* 13 - PD5 */ + TIMER2B, /* 14 - PD6 */ + TIMER2A, /* 15 - PD7 */ + NOT_ON_TIMER, /* 16 - PC0 */ + NOT_ON_TIMER, /* 17 - PC1 */ + NOT_ON_TIMER, /* 18 - PC2 */ + NOT_ON_TIMER, /* 19 - PC3 */ + NOT_ON_TIMER, /* 20 - PC4 */ + NOT_ON_TIMER, /* 21 - PC5 */ + NOT_ON_TIMER, /* 22 - PC6 */ + NOT_ON_TIMER, /* 23 - PC7 */ + NOT_ON_TIMER, /* 24 - PA0 */ + NOT_ON_TIMER, /* 25 - PA1 */ + NOT_ON_TIMER, /* 26 - PA2 */ + NOT_ON_TIMER, /* 27 - PA3 */ + NOT_ON_TIMER, /* 28 - PA4 */ + NOT_ON_TIMER, /* 29 - PA5 */ + NOT_ON_TIMER, /* 30 - PA6 */ + NOT_ON_TIMER /* 31 - PA7 */ +}; +#endif + +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. + +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_HARDWARE Serial +#define SERIAL_PORT_HARDWARE1 Serial1 +#define SERIAL_PORT_HARDWARE_OPEN Serial1 + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/boards.txt b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/boards.txt new file mode 100644 index 000000000..2bec14eab --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/boards.txt @@ -0,0 +1,83 @@ +############################################################ + +atmega644.name=Sanguino W/ ATmega644P + +atmega644.upload.protocol=stk500 +atmega644.upload.maximum_size=63488 +atmega644.upload.speed=57600 + +atmega644.bootloader.low_fuses=0xFF +atmega644.bootloader.high_fuses=0x9A +atmega644.bootloader.extended_fuses=0xFF +atmega644.bootloader.path=atmega +atmega644.bootloader.file=ATmegaBOOT_168_atmega644p.hex +#atmega644.bootloader.file=ATmegaBOOT_644P.hex +atmega644.bootloader.unlock_bits=0x3F +atmega644.bootloader.lock_bits=0x0F + +atmega644.build.mcu=atmega644p +atmega644.build.f_cpu=16000000L +atmega644.build.core=arduino +atmega644.build.variant=standard +############################################################## + +atmega12848m.name=Sanguino W/ ATmega1284p 8mhz + +atmega12848m.upload.protocol=stk500 +atmega12848m.upload.maximum_size=131072 +atmega12848m.upload.speed=19200 + +atmega1284.bootloader.low_fuses=0xD6 +atmega1284.bootloader.high_fuses=0xDA +atmega1284.bootloader.extended_fuses=0xFD +atmega12848m.bootloader.path=atmega +atmega12848m.bootloader.file=ATmegaBOOT_168_atmega1284p_8m.hex +atmega12848m.bootloader.unlock_bits=0x3F +atmega12848m.bootloader.lock_bits=0x0F + +atmega12848m.build.mcu=atmega1284p +atmega12848m.build.f_cpu=8000000L +atmega12848m.build.core=arduino +atmega12848m.build.variant=standard + +############################################################## + +atmega1284.name=Sanguino W/ ATmega1284p 16mhz + +atmega1284.upload.protocol=stk500 +atmega1284.upload.maximum_size=131072 +atmega1284.upload.speed=57600 + +atmega1284.bootloader.low_fuses=0xD6 +atmega1284.bootloader.high_fuses=0xDA +atmega1284.bootloader.extended_fuses=0xFD +atmega1284.bootloader.path=atmega +atmega1284.bootloader.file=ATmegaBOOT_168_atmega1284p.hex +atmega1284.bootloader.unlock_bits=0x3F +atmega1284.bootloader.lock_bits=0x0F + +atmega1284.build.mcu=atmega1284p +atmega1284.build.f_cpu=16000000L +atmega1284.build.core=arduino +atmega1284.build.variant=standard +############################################################## + +atmega1284m.name=Sanguino W/ ATmega1284p 20mhz + +atmega1284m.upload.protocol=stk500 +atmega1284m.upload.maximum_size=131072 +atmega1284m.upload.speed=57600 + +atmega1284m.bootloader.low_fuses=0xD6 +atmega1284m.bootloader.high_fuses=0xDA +atmega1284m.bootloader.extended_fuses=0xFD +atmega1284m.bootloader.path=atmega +atmega1284m.bootloader.file=ATmegaBOOT_168_atmega1284p.hex +atmega1284m.bootloader.unlock_bits=0x3F +atmega1284m.bootloader.lock_bits=0x0F + +atmega1284m.build.mcu=atmega1284p +atmega1284m.build.f_cpu=20000000L +atmega1284m.build.core=arduino +atmega1284m.build.variant=standard +# diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168.c b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168.c new file mode 100644 index 000000000..1df3f0311 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168.c @@ -0,0 +1,1071 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega8, ATmega128 and ATmega168 */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* */ +/* 20090308: integrated Mega changes into main bootloader */ +/* source by D. Mellis */ +/* 20080930: hacked for Arduino Mega (with the 1280 */ +/* processor, backwards compatible) */ +/* by D. Cuartielles */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) +#include +#endif + +/* Use the F_CPU defined in Makefile */ + +/* 20060803: hacked by DojoCorp */ +/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ +/* set the waiting time for the bootloader */ +/* get this from the Makefile instead */ +/* #define MAX_TIME_COUNT (F_CPU>>4) */ + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +//#define BAUD_RATE 115200 +#ifndef BAUD_RATE +#define BAUD_RATE 19200 +#endif + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* ATmega1280 has four UARTS, but for Arduino Mega, we will only use RXD0 to get code */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#elif defined __AVR_ATmega1280__ +/* we just don't do anything for the MEGA and enter bootloader on reset anyway*/ +#elif defined __AVR_ATmega1284P_ || defined __AVR_ATmega644P__ + +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#if defined __AVR_ATmega128__ || defined __AVR_ATmega1280__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128, Arduino Mega) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#elif defined __AVR_ATmega1284P__ || defined __AVR_ATmega644P__ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 +#else +/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duomilanuove */ +/* other boards like e.g. Crumb8, Crumb168 are using PB2 */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) +#define MONITOR 1 +#endif + + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega1280__ +#define SIG2 0x97 +#define SIG3 0x03 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega1284P__ +#define SIG2 0x97 +#define SIG3 0x05 +#define PAGE_SIZE 0x080U //128 words + +#elif defined __AVR_ATmega1281__ +#define SIG2 0x97 +#define SIG3 0x04 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega644P__ +#define SIG2 0x96 +#define SIG3 0x0A +#define PAGE_SIZE 0x080U //128 words + +#elif defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega328P__ +#define SIG2 0x95 +#define SIG3 0x0F +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +uint8_t bootuart = 0; + +uint8_t error_count = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + +#ifdef WATCHDOG_MODS + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if it's a not an external reset... + app_start(); // skip bootloader +#else + asm volatile("nop\n\t"); +#endif + + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + /* We run the bootloader regardless of the state of this pin. Thus, don't + put it in a different state than the other pins. --DAM, 070709 + This also applies to Arduino Mega -- DC, 080930 + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); + */ +#endif + + +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) { + bootuart = 2; + } +#endif + +#if defined __AVR_ATmega1280__ || defined __AVR_ATmega1284P__ || defined __AVR_ATmega644P__ + /* the mega1280 chip has four serial ports ... we could eventually use any of them, or not? */ + /* however, we don't wanna confuse people, to avoid making a mess, we will stick to RXD0, TXD0 */ + bootuart = 1; +#endif + + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) { + +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } + +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) { + bootuart = 1; + } +#endif + + + /* initialize UART(s) depending on CPU defined */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if(bootuart == 1) { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + +#ifdef DOUBLE_SPEED + UCSR0A = (1<> 8; +#else + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; +#endif + + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif + +#if defined __AVR_ATmega1280__ + /* Enable internal pull-up resistor on pin D0 (RX), in order + to supress line noise that prevents the bootloader from + timing out (DAM: 20070509) */ + /* feature added to the Arduino Mega --DC: 080930 */ + DDRE &= ~_BV(PINE0); + PORTE |= _BV(PINE0); +#endif + + + /* set LED pin as output */ + LED_DDR |= _BV(LED); + + + /* flash onboard LED to signal entering of bootloader */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + // 4x for UART0, 5x for UART1 + flash_led(NUM_LED_FLASHES + bootuart); +#else + flash_led(NUM_LED_FLASHES); +#endif + + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + + /* forever loop */ + for (;;) { + + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + + /* P: Enter programming mode */ + /* R: Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='P' || ch=='R') { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); +#ifdef WATCHDOG_MODS + // autoreset via watchdog (sneaky!) + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + if (getch() == 0x30) { + getch(); + ch = getch(); + getch(); + if (ch == 0) { + byte_response(SIG1); + } else if (ch == 1) { + byte_response(SIG2); + } else { + byte_response(SIG3); + } + } else { + getNch(3); + byte_response(0x00); + } + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete +#else + while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete +#endif + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ || __AVR_ATmega328P__ || __AVR_ATmega128__ || __AVR_ATmega1280__ || __AVR_ATmega1281__ || __AVR_ATmega1284P__ || __AVR_ATmega644P__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + address.word = address.word << 1; // address * 2 -> byte location + if (getch() == 'E') flags.eeprom = 1; + else flags.eeprom = 0; + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while(EECR & (1<= 'a') { + return (a - 'a' + 0x0a); + } else if(a >= '0') { + return(a - '0'); + } + return a; +} + + +char gethex(void) { + return (gethexnib() << 4) + gethexnib(); +} + + +void puthex(char ch) { + char ah; + + ah = ch >> 4; + if(ah >= 0x0a) { + ah = ah - 0x0a + 'a'; + } else { + ah += '0'; + } + + ch &= 0x0f; + if(ch >= 0x0a) { + ch = ch - 0x0a + 'a'; + } else { + ch += '0'; + } + + putch(ah); + putch(ch); +} + + +void putch(char ch) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if(bootuart == 1) { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + uint32_t count = 0; + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))) { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + + return UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))) { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + + return UDR1; + } + return 0; +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + while(count--) { +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))); + UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))); + UDR1; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + getch(); +#else + /* m8,16,32,169,8515,8535,163 */ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + //while(!(UCSRA & _BV(RXC))); + //UDR; + getch(); // need to handle time out +#endif + } +} + + +void byte_response(uint8_t val) +{ + if (getch() == ' ') { + putch(0x14); + putch(val); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + + +void nothing_response(void) +{ + if (getch() == ' ') { + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + +void flash_led(uint8_t count) +{ + while (count--) { + LED_PORT |= _BV(LED); + _delay_ms(100); + LED_PORT &= ~_BV(LED); + _delay_ms(100); + } +} + + +/* end of file ATmegaBOOT.c */ diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega1284p.hex b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega1284p.hex new file mode 100644 index 000000000..a63dc8dd0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega1284p.hex @@ -0,0 +1,130 @@ +:020000021000EC +:10F000000C9446F80C9465F80C9465F80C9465F82B +:10F010000C9465F80C9465F80C9465F80C9465F8FC +:10F020000C9465F80C9465F80C9465F80C9465F8EC +:10F030000C9465F80C9465F80C9465F80C9465F8DC +:10F040000C9465F80C9465F80C9465F80C9465F8CC +:10F050000C9465F80C9465F80C9465F80C9465F8BC +:10F060000C9465F80C9465F80C9465F80C9465F8AC +:10F070000C9465F80C9465F80C9465F80C9465F89C +:10F080000C9465F80C9465F80C9465F811241FBE77 +:10F09000CFEFD0E4DEBFCDBF11E0A0E0B1E0E8EDFE +:10F0A000F7EF01E00BBF02C007900D92A230B1074D +:10F0B000D9F712E0A2E0B1E001C01D92AD30B10776 +:10F0C000E1F70E947EF90C94EAFB0C9400F8909111 +:10F0D0000201913019F0923041F008959091C000F2 +:10F0E00095FFFCCF8093C60008959091C80095FFCE +:10F0F000FCCF8093CE0008951F93982F95959595FA +:10F1000095959595905D182F1F701A304CF4105DF1 +:10F11000892F0E9467F8812F0E9467F81F91089538 +:10F12000195A892F0E9467F8812F0E9467F81F9152 +:10F130000895EF92FF920F931F9380910201813007 +:10F1400069F1823031F080E01F910F91FF90EF90D4 +:10F150000895EE24FF2487018091C80087FD17C021 +:10F160000894E11CF11C011D111D81E4E81682E4E4 +:10F17000F8068FE0080780E0180770F3E0910401BB +:10F18000F091050109958091C80087FFE9CF809132 +:10F19000CE001F910F91FF90EF900895EE24FF2471 +:10F1A00087018091C00087FD17C00894E11CF11C05 +:10F1B000011D111D81E4E81682E4F8068FE00807BE +:10F1C00080E0180770F3E0910401F09105010995C2 +:10F1D0008091C00087FFE9CF8091C6001F910F91F9 +:10F1E000FF90EF9008951F930E9499F8182F0E94A6 +:10F1F00067F8113634F410330CF01053812F1F913F +:10F2000008951755812F1F9108951F930E94F3F8B9 +:10F21000182F0E94F3F81295107F810F1F91089507 +:10F2200020910201882339F0213031F0223061F041 +:10F2300081508823C9F708959091C00097FFFCCFB3 +:10F240009091C6008150F5CF9091C80097FFFCCFF8 +:10F250009091CE008150EDCF1F93182F0E9499F806 +:10F26000803281F0809103018F5F809303018530AC +:10F2700011F01F910895E0910401F09105010995A5 +:10F280001F91089584E10E9467F8812F0E9467F81A +:10F2900080E10E9467F8EDCF0E9499F8803271F00A +:10F2A000809103018F5F80930301853009F00895F9 +:10F2B000E0910401F09105010995089584E10E940F +:10F2C00067F880E10E9467F8089515C0289A2FEF2B +:10F2D00031EE44E0215030404040E1F700C00000F2 +:10F2E00028982FEF31EE44E0215030404040E1F7C4 +:10F2F00000C000008150882349F70895EF92FF92E3 +:10F300000F931F93CF93DF93000081E0809302015E +:10F3100080E18093C4001092C5001092C00086E086 +:10F320008093C20088E18093C100209A81E00E940E +:10F3300065F90E9499F88033B1F18133B9F18034D5 +:10F3400009F454C0813409F45AC0823409F469C004 +:10F35000853409F46CC0803531F1823521F1813575 +:10F3600011F1853509F469C0863509F471C0843618 +:10F3700009F47AC0843709F4E1C0853709F43FC144 +:10F38000863709F44AC0809103018F5F809303019F +:10F39000853079F6E0910401F091050109950E940C +:10F3A00099F8803351F60E944CF9C3CF0E9499F826 +:10F3B000803249F784E10E9467F881E40E9467F88F +:10F3C00086E50E9467F882E50E9467F880E20E9465 +:10F3D00067F889E40E9467F883E50E9467F880E592 +:10F3E0000E9467F880E10E9467F8A3CF0E9499F815 +:10F3F0008638C8F20E9499F80E944CF99ACF0E9470 +:10F4000099F8803809F414C1813809F415C182389B +:10F4100009F416C1883909F407C180E00E942CF96B +:10F4200088CF84E10E9410F90E944CF982CF85E0D8 +:10F430000E9410F90E944CF97CCF0E9499F88093A9 +:10F4400006010E9499F8809307010E944CF971CF40 +:10F450000E9499F8803309F405C183E00E9410F9F5 +:10F4600080E00E942CF965CF0E9499F880930902F0 +:10F470000E9499F88093080280910C028E7F8093FD +:10F480000C020E9499F8853409F4FDC080910802AD +:10F49000909109020097A1F068E0E62E61E0F62E57 +:10F4A00000E010E00E9499F8F70181937F010F5F5F +:10F4B0001F4F80910802909109020817190790F3D5 +:10F4C0000E9499F8803209F05ECF80910C0280FF93 +:10F4D000ECC08091060190910701880F991F9093CD +:10F4E000070180930601209108023091090221153D +:10F4F0003105E9F048E0E42E41E0F42E00E010E0B0 +:10F50000F70161917F010E94DCFB809106019091DF +:10F510000701019690930701809306010F5F1F4F2B +:10F5200020910802309109020217130748F384E181 +:10F530000E9467F880E10E9467F8FBCE0E9499F86C +:10F54000809309020E9499F8809308028091060135 +:10F550009091070197FDA3C020910C022D7F20936D +:10F560000C02880F991F90930701809306010E9457 +:10F5700099F8853409F48DC080910C028E7F8093B8 +:10F580000C020E9499F8803209F0D3CE84E10E94E7 +:10F5900067F88091080290910902009709F440C031 +:10F5A00000E010E0809106019091070116C0FC0177 +:10F5B00084910E9467F8809106019091070101965D +:10F5C00090930701809306010F5F1F4F209108025F +:10F5D000309109020217130718F520910C0220FD43 +:10F5E00033C021FFE4CFA0E0B0E080509040AF4FA7 +:10F5F000BF4FABBFFC0187910E9467F8DCCF0E9430 +:10F6000099F8803209F0BFCE84E10E9467F88EE15C +:10F610000E9467F887E90E9467F885E00E9467F812 +:10F6200080E10E9467F885CE83E00E942CF981CEAC +:10F6300082E00E942CF97DCE81E00E942CF979CEE7 +:10F6400080E10E942CF975CE0E94D4FB0E9467F8DD +:10F650008091060190910701019690930701809394 +:10F660000601B2CF0E9499F80E9499F8082F0E94D3 +:10F6700099F8002309F48BC0013009F48CC085E0AF +:10F680000E942CF956CE80910C02816080930C026E +:10F69000FDCE80910C02816080930C0272CF20918C +:10F6A0000C02226020930C025CCF8091070187FD41 +:10F6B00076C010920B0280E08BBF80910601909182 +:10F6C0000701880F991F909307018093060180918D +:10F6D000080280FF09C080910802909109020196FA +:10F6E0009093090280930802F894F999FECF1127AC +:10F6F000E0910601F0910701C8E0D1E08091080295 +:10F7000090910902103091F400915700017001307E +:10F71000D9F303E000935700E8950091570001707A +:10F720000130D9F301E100935700E8950990199051 +:10F730000091570001700130D9F301E000935700A8 +:10F74000E8951395103898F0112700915700017033 +:10F750000130D9F305E000935700E8950091570078 +:10F7600001700130D9F301E100935700E89532961A +:10F77000029709F0C7CF103011F00296E5CF11249F +:10F7800084E10E9467F880E10E9467F8D2CD8EE1A3 +:10F790000E942CF9CECD87E90E942CF9CACDF1E068 +:10F7A000F0930B0281E088CFF999FECF92BD81BD25 +:10F7B000F89A992780B50895262FF999FECF1FBA98 +:10F7C00092BD81BD20BD0FB6F894FA9AF99A0FBE8A +:08F7D00001960895F894FFCFA3 +:02F7D8008000AF +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega1284p_8m.hex b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega1284p_8m.hex new file mode 100644 index 000000000..7f5f3f3d4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega1284p_8m.hex @@ -0,0 +1,130 @@ +:020000021000EC +:10F000000C9446F80C9465F80C9465F80C9465F82B +:10F010000C9465F80C9465F80C9465F80C9465F8FC +:10F020000C9465F80C9465F80C9465F80C9465F8EC +:10F030000C9465F80C9465F80C9465F80C9465F8DC +:10F040000C9465F80C9465F80C9465F80C9465F8CC +:10F050000C9465F80C9465F80C9465F80C9465F8BC +:10F060000C9465F80C9465F80C9465F80C9465F8AC +:10F070000C9465F80C9465F80C9465F80C9465F89C +:10F080000C9465F80C9465F80C9465F811241FBE77 +:10F09000CFEFD0E4DEBFCDBF11E0A0E0B1E0E8EDFE +:10F0A000F7EF01E00BBF02C007900D92A230B1074D +:10F0B000D9F712E0A2E0B1E001C01D92AD30B10776 +:10F0C000E1F70E947EF90C94EAFB0C9400F8909111 +:10F0D0000201913019F0923041F008959091C000F2 +:10F0E00095FFFCCF8093C60008959091C80095FFCE +:10F0F000FCCF8093CE0008951F93982F95959595FA +:10F1000095959595905D182F1F701A304CF4105DF1 +:10F11000892F0E9467F8812F0E9467F81F91089538 +:10F12000195A892F0E9467F8812F0E9467F81F9152 +:10F130000895EF92FF920F931F9380910201813007 +:10F1400069F1823031F080E01F910F91FF90EF90D4 +:10F150000895EE24FF2487018091C80087FD17C021 +:10F160000894E11CF11C011D111D81E2E81681EAE1 +:10F17000F80687E0080780E0180770F3E0910401C3 +:10F18000F091050109958091C80087FFE9CF809132 +:10F19000CE001F910F91FF90EF900895EE24FF2471 +:10F1A00087018091C00087FD17C00894E11CF11C05 +:10F1B000011D111D81E2E81681EAF80687E00807C3 +:10F1C00080E0180770F3E0910401F09105010995C2 +:10F1D0008091C00087FFE9CF8091C6001F910F91F9 +:10F1E000FF90EF9008951F930E9499F8182F0E94A6 +:10F1F00067F8113634F410330CF01053812F1F913F +:10F2000008951755812F1F9108951F930E94F3F8B9 +:10F21000182F0E94F3F81295107F810F1F91089507 +:10F2200020910201882339F0213031F0223061F041 +:10F2300081508823C9F708959091C00097FFFCCFB3 +:10F240009091C6008150F5CF9091C80097FFFCCFF8 +:10F250009091CE008150EDCF1F93182F0E9499F806 +:10F26000803281F0809103018F5F809303018530AC +:10F2700011F01F910895E0910401F09105010995A5 +:10F280001F91089584E10E9467F8812F0E9467F81A +:10F2900080E10E9467F8EDCF0E9499F8803271F00A +:10F2A000809103018F5F80930301853009F00895F9 +:10F2B000E0910401F09105010995089584E10E940F +:10F2C00067F880E10E9467F8089515C0289A2FEF2B +:10F2D00030E742E0215030404040E1F700C00000FC +:10F2E00028982FEF30E742E0215030404040E1F7CE +:10F2F00000C000008150882349F70895EF92FF92E3 +:10F300000F931F93CF93DF93000081E0809302015E +:10F3100089E18093C4001092C5001092C00086E07D +:10F320008093C20088E18093C100209A81E00E940E +:10F3300065F90E9499F88033B1F18133B9F18034D5 +:10F3400009F454C0813409F45AC0823409F469C004 +:10F35000853409F46CC0803531F1823521F1813575 +:10F3600011F1853509F469C0863509F471C0843618 +:10F3700009F47AC0843709F4E1C0853709F43FC144 +:10F38000863709F44AC0809103018F5F809303019F +:10F39000853079F6E0910401F091050109950E940C +:10F3A00099F8803351F60E944CF9C3CF0E9499F826 +:10F3B000803249F784E10E9467F881E40E9467F88F +:10F3C00086E50E9467F882E50E9467F880E20E9465 +:10F3D00067F889E40E9467F883E50E9467F880E592 +:10F3E0000E9467F880E10E9467F8A3CF0E9499F815 +:10F3F0008638C8F20E9499F80E944CF99ACF0E9470 +:10F4000099F8803809F414C1813809F415C182389B +:10F4100009F416C1883909F407C180E00E942CF96B +:10F4200088CF84E10E9410F90E944CF982CF85E0D8 +:10F430000E9410F90E944CF97CCF0E9499F88093A9 +:10F4400006010E9499F8809307010E944CF971CF40 +:10F450000E9499F8803309F405C183E00E9410F9F5 +:10F4600080E00E942CF965CF0E9499F880930902F0 +:10F470000E9499F88093080280910C028E7F8093FD +:10F480000C020E9499F8853409F4FDC080910802AD +:10F49000909109020097A1F068E0E62E61E0F62E57 +:10F4A00000E010E00E9499F8F70181937F010F5F5F +:10F4B0001F4F80910802909109020817190790F3D5 +:10F4C0000E9499F8803209F05ECF80910C0280FF93 +:10F4D000ECC08091060190910701880F991F9093CD +:10F4E000070180930601209108023091090221153D +:10F4F0003105E9F048E0E42E41E0F42E00E010E0B0 +:10F50000F70161917F010E94DCFB809106019091DF +:10F510000701019690930701809306010F5F1F4F2B +:10F5200020910802309109020217130748F384E181 +:10F530000E9467F880E10E9467F8FBCE0E9499F86C +:10F54000809309020E9499F8809308028091060135 +:10F550009091070197FDA3C020910C022D7F20936D +:10F560000C02880F991F90930701809306010E9457 +:10F5700099F8853409F48DC080910C028E7F8093B8 +:10F580000C020E9499F8803209F0D3CE84E10E94E7 +:10F5900067F88091080290910902009709F440C031 +:10F5A00000E010E0809106019091070116C0FC0177 +:10F5B00084910E9467F8809106019091070101965D +:10F5C00090930701809306010F5F1F4F209108025F +:10F5D000309109020217130718F520910C0220FD43 +:10F5E00033C021FFE4CFA0E0B0E080509040AF4FA7 +:10F5F000BF4FABBFFC0187910E9467F8DCCF0E9430 +:10F6000099F8803209F0BFCE84E10E9467F88EE15C +:10F610000E9467F887E90E9467F885E00E9467F812 +:10F6200080E10E9467F885CE83E00E942CF981CEAC +:10F6300082E00E942CF97DCE81E00E942CF979CEE7 +:10F6400080E10E942CF975CE0E94D4FB0E9467F8DD +:10F650008091060190910701019690930701809394 +:10F660000601B2CF0E9499F80E9499F8082F0E94D3 +:10F6700099F8002309F48BC0013009F48CC085E0AF +:10F680000E942CF956CE80910C02816080930C026E +:10F69000FDCE80910C02816080930C0272CF20918C +:10F6A0000C02226020930C025CCF8091070187FD41 +:10F6B00076C010920B0280E08BBF80910601909182 +:10F6C0000701880F991F909307018093060180918D +:10F6D000080280FF09C080910802909109020196FA +:10F6E0009093090280930802F894F999FECF1127AC +:10F6F000E0910601F0910701C8E0D1E08091080295 +:10F7000090910902103091F400915700017001307E +:10F71000D9F303E000935700E8950091570001707A +:10F720000130D9F301E100935700E8950990199051 +:10F730000091570001700130D9F301E000935700A8 +:10F74000E8951395103898F0112700915700017033 +:10F750000130D9F305E000935700E8950091570078 +:10F7600001700130D9F301E100935700E89532961A +:10F77000029709F0C7CF103011F00296E5CF11249F +:10F7800084E10E9467F880E10E9467F8D2CD8EE1A3 +:10F790000E942CF9CECD87E90E942CF9CACDF1E068 +:10F7A000F0930B0281E088CFF999FECF92BD81BD25 +:10F7B000F89A992780B50895262FF999FECF1FBA98 +:10F7C00092BD81BD20BD0FB6F894FA9AF99A0FBE8A +:08F7D00001960895F894FFCFA3 +:02F7D8008000AF +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega644p.hex b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega644p.hex new file mode 100644 index 000000000..2edf9c677 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/ATmegaBOOT_168_atmega644p.hex @@ -0,0 +1,126 @@ +:10F800000C943E7C0C945B7C0C945B7C0C945B7C39 +:10F810000C945B7C0C945B7C0C945B7C0C945B7C0C +:10F820000C945B7C0C945B7C0C945B7C0C945B7CFC +:10F830000C945B7C0C945B7C0C945B7C0C945B7CEC +:10F840000C945B7C0C945B7C0C945B7C0C945B7CDC +:10F850000C945B7C0C945B7C0C945B7C0C945B7CCC +:10F860000C945B7C0C945B7C0C945B7C0C945B7CBC +:10F870000C945B7C0C945B7C0C945B7C11241FBE11 +:10F88000CFEFD0E1DEBFCDBF11E0A0E0B1E0EAEA0A +:10F89000FFEF02C005900D92A230B107D9F712E038 +:10F8A000A2E0B1E001C01D92AD30B107E1F70E94C6 +:10F8B000747D0C94D37F0C94007C90910201913064 +:10F8C00019F0923041F008959091C00095FFFCCF5F +:10F8D0008093C60008959091C80095FFFCCF809357 +:10F8E000CE0008951F93982F95959595959595958C +:10F8F000905D182F1F701A304CF4105D892F0E94F4 +:10F900005D7C812F0E945D7C1F910895195A892F7B +:10F910000E945D7C812F0E945D7C1F910895EF9273 +:10F92000FF920F931F9380910201813069F1823021 +:10F9300031F080E01F910F91FF90EF900895EE2439 +:10F94000FF2487018091C80087FD17C00894E11C3F +:10F95000F11C011D111D81E4E81682E4F8068FE018 +:10F96000080780E0180770F3E0910401F0910501A9 +:10F9700009958091C80087FFE9CF8091CE001F9143 +:10F980000F91FF90EF900895EE24FF24870180915E +:10F99000C00087FD17C00894E11CF11C011D111D5A +:10F9A00081E4E81682E4F8068FE0080780E0180793 +:10F9B00070F3E0910401F091050109958091C00078 +:10F9C00087FFE9CF8091C6001F910F91FF90EF90C4 +:10F9D00008951F930E948F7C182F0E945D7C113622 +:10F9E00034F410330CF01053812F1F9108951755E4 +:10F9F000812F1F9108951F930E94E97C182F0E9468 +:10FA0000E97C1295107F810F1F91089520910201CA +:10FA1000882339F0213031F0223061F08150882381 +:10FA2000C9F708959091C00097FFFCCF9091C60050 +:10FA30008150F5CF9091C80097FFFCCF9091CE00F8 +:10FA40008150EDCF1F93182F0E948F7C803281F060 +:10FA5000809103018F5F80930301853011F01F9126 +:10FA60000895E0910401F091050109951F91089511 +:10FA700084E10E945D7C812F0E945D7C80E10E9478 +:10FA80005D7CEDCF0E948F7C803271F0809103010C +:10FA90008F5F80930301853009F00895E0910401A0 +:10FAA000F09105010995089584E10E945D7C80E153 +:10FAB0000E945D7C089515C0289A2FEF31EE44E036 +:10FAC000215030404040E1F700C0000028982FEF5F +:10FAD00031EE44E0215030404040E1F700C00000EA +:10FAE0008150882349F70895EF92FF920F931F9357 +:10FAF000CF93DF93000081E08093020180E1809347 +:10FB0000C4001092C5001092C00086E08093C2002D +:10FB100088E18093C100209A81E00E945B7D0E9471 +:10FB20008F7C8033B1F18133B9F1803409F454C052 +:10FB3000813409F45AC0823409F469C0853409F467 +:10FB40006CC0803531F1823521F1813511F1853577 +:10FB500009F469C0863509F471C0843609F47AC0A5 +:10FB6000843709F4E1C0853709F439C1863709F4CF +:10FB70004AC0809103018F5F80930301853079F63D +:10FB8000E0910401F091050109950E948F7C80337A +:10FB900051F60E94427DC3CF0E948F7C803249F78C +:10FBA00084E10E945D7C81E40E945D7C86E50E9488 +:10FBB0005D7C82E50E945D7C80E20E945D7C89E440 +:10FBC0000E945D7C83E50E945D7C80E50E945D7CF7 +:10FBD00080E10E945D7CA3CF0E948F7C8638C8F2B2 +:10FBE0000E948F7C0E94427D9ACF0E948F7C803839 +:10FBF00009F40EC1813809F40FC1823809F410C12B +:10FC0000883909F401C180E00E94227D88CF84E117 +:10FC10000E94067D0E94427D82CF85E00E94067D83 +:10FC20000E94427D7CCF0E948F7C809306010E94BF +:10FC30008F7C809307010E94427D71CF0E948F7C50 +:10FC4000803309F4F1C083E00E94067D80E00E94C9 +:10FC5000227D65CF0E948F7C809309020E948F7C59 +:10FC60008093080280910C028E7F80930C020E9488 +:10FC70008F7C853409F4E9C08091080290910902D3 +:10FC80000097A1F068E0E62E61E0F62E00E010E0BB +:10FC90000E948F7CF70181937F010F5F1F4F80913E +:10FCA0000802909109020817190790F30E948F7CAF +:10FCB000803209F05ECF80910C0280FFE5C0809118 +:10FCC000060190910701880F991F90930701809377 +:10FCD0000601209108023091090221153105E9F051 +:10FCE00048E0E42E41E0F42E00E010E0F7016191DD +:10FCF0007F010E94C57F80910601909107010196C6 +:10FD000090930701809306010F5F1F4F2091080217 +:10FD1000309109020217130748F384E10E945D7CC9 +:10FD200080E10E945D7CFBCE0E948F7C8093090263 +:10FD30000E948F7C809308028091060190910701B8 +:10FD400097FD9CC020910C022D7F20930C02880F00 +:10FD5000991F90930701809306010E948F7C853440 +:10FD600009F486C080910C028E7F80930C020E9461 +:10FD70008F7C803209F0D3CE84E10E945D7C20919B +:10FD800008023091090221153105D1F100E010E09F +:10FD900080910601909107010CC041FF5CC0019663 +:10FDA00090930701809306010F5F1F4F02171307FF +:10FDB00038F540910C0240FFF0CF0E94BD7F0E94B9 +:10FDC0005D7C809106019091070101969093070157 +:10FDD000809306012091080230910902E5CF0E942C +:10FDE0008F7C803209F0C5CE84E10E945D7C8EE17B +:10FDF0000E945D7C86E90E945D7C8AE00E945D7CB9 +:10FE000080E10E945D7C8BCE83E00E94227D87CEC4 +:10FE100082E00E94227D83CE81E00E94227D7FCEFF +:10FE200080E10E94227D7BCE0E948F7C0E948F7C8D +:10FE3000082F0E948F7C002309F497C0013009F439 +:10FE400098C08AE00E94227D6ACE80910C02816077 +:10FE500080930C0211CFFC0184910E945D7C209163 +:10FE6000080230910902809106019091070197CF15 +:10FE700080910C02816080930C0279CF20910C025A +:10FE8000226020930C0263CF80910701880F880BBA +:10FE9000817080930B028091060190910701880F79 +:10FEA000991F90930701809306018091080280FFBB +:10FEB00009C080910802909109020196909309026D +:10FEC00080930802F894F999FECF1127E09106017A +:10FED000F0910701C8E0D1E08091080290910902F9 +:10FEE000103091F40091570001700130D9F303E014 +:10FEF00000935700E8950091570001700130D9F345 +:10FF000001E100935700E89509901990009157007E +:10FF100001700130D9F301E000935700E895139583 +:10FF2000103898F011270091570001700130D9F373 +:10FF300005E000935700E8950091570001700130EB +:10FF4000D9F301E100935700E8953296029709F042 +:10FF5000C7CF103011F00296E5CF112484E10E9442 +:10FF60005D7C80E10E945D7CDACD8EE10E94227D85 +:10FF7000D6CD86E90E94227DD2CDF999FECF92BDE1 +:10FF800081BDF89A992780B50895262FF999FECF5B +:10FF90001FBA92BD81BD20BD0FB6F894FA9AF99AA6 +:0AFFA0000FBE01960895F894FFCFFC +:02FFAA008000D5 +:040000030000F80001 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/Makefile b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/Makefile new file mode 100644 index 000000000..3f2bb6156 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega/Makefile @@ -0,0 +1,254 @@ +# Makefile for ATmegaBOOT +# E.Lins, 18.7.2005 +# $Id$ +# +# Instructions +# +# To make bootloader .hex file: +# make diecimila +# make lilypad +# make ng +# etc... +# +# To burn bootloader .hex file: +# make diecimila_isp +# make lilypad_isp +# make ng_isp +# etc... + +# program name should not be changed... +PROGRAM = ATmegaBOOT_168 + +# enter the parameters for the avrdude isp tool +ISPTOOL = stk500v2 +ISPPORT = usb +ISPSPEED = -b 115200 + +MCU_TARGET = atmega168 +LDSECTION = --section-start=.text=0x3800 + +# the efuse should really be 0xf8; since, however, only the lower +# three bits of that byte are used on the atmega168, avrdude gets +# confused if you specify 1's for the higher bits, see: +# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/ +# +# similarly, the lock bits should be 0xff instead of 0x3f (to +# unlock the bootloader section) and 0xcf instead of 0x0f (to +# lock it), but since the high two bits of the lock byte are +# unused, avrdude would get confused. + +ISPFUSES = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +-e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m +ISPFLASH = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +-U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m + +STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" +STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ +-lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt +STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt + + +OBJ = $(PROGRAM).o +OPTIMIZE = -O2 + +DEFS = +LIBS = + +CC = avr-gcc + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) +override LDFLAGS = -Wl,$(LDSECTION) +#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION) + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: + +lilypad: TARGET = lilypad +lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +lilypad: AVR_FREQ = 8000000L +lilypad: $(PROGRAM)_lilypad.hex + +lilypad_isp: lilypad +lilypad_isp: TARGET = lilypad +lilypad_isp: HFUSE = DD +lilypad_isp: LFUSE = E2 +lilypad_isp: EFUSE = 00 +lilypad_isp: isp + +lilypad_resonator: TARGET = lilypad_resonator +lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3' +lilypad_resonator: AVR_FREQ = 8000000L +lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex + +lilypad_resonator_isp: lilypad_resonator +lilypad_resonator_isp: TARGET = lilypad_resonator +lilypad_resonator_isp: HFUSE = DD +lilypad_resonator_isp: LFUSE = C6 +lilypad_resonator_isp: EFUSE = 00 +lilypad_resonator_isp: isp + +pro8: TARGET = pro_8MHz +pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro8: AVR_FREQ = 8000000L +pro8: $(PROGRAM)_pro_8MHz.hex + +pro8_isp: pro8 +pro8_isp: TARGET = pro_8MHz +pro8_isp: HFUSE = DD +pro8_isp: LFUSE = C6 +pro8_isp: EFUSE = 00 +pro8_isp: isp + +pro16: TARGET = pro_16MHz +pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro16: AVR_FREQ = 16000000L +pro16: $(PROGRAM)_pro_16MHz.hex + +pro16_isp: pro16 +pro16_isp: TARGET = pro_16MHz +pro16_isp: HFUSE = DD +pro16_isp: LFUSE = C6 +pro16_isp: EFUSE = 00 +pro16_isp: isp + +pro20: TARGET = pro_20mhz +pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro20: AVR_FREQ = 20000000L +pro20: $(PROGRAM)_pro_20mhz.hex + +pro20_isp: pro20 +pro20_isp: TARGET = pro_20mhz +pro20_isp: HFUSE = DD +pro20_isp: LFUSE = C6 +pro20_isp: EFUSE = 00 +pro20_isp: isp + +diecimila: TARGET = diecimila +diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' +diecimila: AVR_FREQ = 16000000L +diecimila: $(PROGRAM)_diecimila.hex + +diecimila_isp: diecimila +diecimila_isp: TARGET = diecimila +diecimila_isp: HFUSE = DD +diecimila_isp: LFUSE = FF +diecimila_isp: EFUSE = 00 +diecimila_isp: isp + +ng: TARGET = ng +ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +ng: AVR_FREQ = 16000000L +ng: $(PROGRAM)_ng.hex + +ng_isp: ng +ng_isp: TARGET = ng +ng_isp: HFUSE = DD +ng_isp: LFUSE = FF +ng_isp: EFUSE = 00 +ng_isp: isp + +atmega328: TARGET = atmega328 +atmega328: MCU_TARGET = atmega328p +atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 +atmega328: AVR_FREQ = 16000000L +atmega328: LDSECTION = --section-start=.text=0x7800 +atmega328: $(PROGRAM)_atmega328.hex + +atmega328_isp: atmega328 +atmega328_isp: TARGET = atmega328 +atmega328_isp: MCU_TARGET = atmega328p +atmega328_isp: HFUSE = DA +atmega328_isp: LFUSE = FF +atmega328_isp: EFUSE = 05 +atmega328_isp: isp + +atmega328_pro8: TARGET = atmega328_pro_8MHz +atmega328_pro8: MCU_TARGET = atmega328p +atmega328_pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DDOUBLE_SPEED +atmega328_pro8: AVR_FREQ = 8000000L +atmega328_pro8: LDSECTION = --section-start=.text=0x7800 +atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex + +atmega328_pro8_isp: atmega328_pro8 +atmega328_pro8_isp: TARGET = atmega328_pro_8MHz +atmega328_pro8_isp: MCU_TARGET = atmega328p +atmega328_pro8_isp: HFUSE = DA +atmega328_pro8_isp: LFUSE = FF +atmega328_pro8_isp: EFUSE = 05 +atmega328_pro8_isp: isp + +mega: TARGET = atmega1280 +mega: MCU_TARGET = atmega1280 +mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600 +mega: AVR_FREQ = 16000000L +mega: LDSECTION = --section-start=.text=0x1F000 +mega: $(PROGRAM)_atmega1280.hex + +mega_isp: mega +mega_isp: TARGET = atmega1280 +mega_isp: MCU_TARGET = atmega1280 +mega_isp: HFUSE = DA +mega_isp: LFUSE = FF +mega_isp: EFUSE = F5 +mega_isp: isp + +atmega1284p: TARGET = atmega1284p +atmega1284p: MCU_TARGET = atmega1284p +atmega1284p: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=57600' +atmega1284p: AVR_FREQ = 16000000L +atmega1284p: LDSECTION = --section-start=.text=0x1F000 +atmega1284p: $(PROGRAM)_atmega1284p.hex + +atmega1284p_8m: TARGET = atmega1284p +atmega1284p_8m: MCU_TARGET = atmega1284p +atmega1284p_8m: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=19200' +atmega1284p_8m: AVR_FREQ = 8000000L +atmega1284p_8m: LDSECTION = --section-start=.text=0x1F000 +atmega1284p_8m: $(PROGRAM)_atmega1284p_8m.hex + +atmega644p: TARGET = atmega644p +atmega644p: MCU_TARGET = atmega644p +atmega644p: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=57600' +atmega644p: AVR_FREQ = 16000000L +atmega644p: LDSECTION = --section-start=.text=0xF800 +atmega644p: $(PROGRAM)_atmega644p.hex + + +atmega1284p_isp: atmega1284p +atmega1284p_isp: TARGET = atmega1284p +atmega1284p_isp: MCU_TARGET = atmega1284p +atmega1284p_isp: HFUSE = DC +atmega1284p_isp: LFUSE = FF +atmega1284p_isp: EFUSE = FD +atmega1284p_isp: isp + +isp: $(TARGET) + $(ISPFUSES) + $(ISPFLASH) + +isp-stk500: $(PROGRAM)_$(TARGET).hex + $(STK500-1) + $(STK500-2) + +%.elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega644p/ATmegaBOOT.c b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega644p/ATmegaBOOT.c new file mode 100644 index 000000000..51bd8d5f8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega644p/ATmegaBOOT.c @@ -0,0 +1,717 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega644 and ATmega644P */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* 20090131: Added 324P support from Alex Leone */ +/* Marius Kintel */ +/* 20080915: applied ADABoot mods for Sanguino 644P */ +/* Brian Riley */ +/* 20080711: hacked for Sanguino by Zach Smith */ +/* and Justin Day */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +#ifdef ADABOOT + #define NUM_LED_FLASHES 3 + #define ADABOOT_VER 1 +#endif + + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20080711: hack by Zach Hoeken */ +#define BAUD_RATE 38400 + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( +#if defined(__AVR_ATmega1284P__) +#define SIG2 0x97 +#define SIG3 0x05 +#elif defined(__AVR_ATmega644P__) +#define SIG2 0x96 +#define SIG3 0x0A +#elif defined(__AVR_ATmega644__) +#define SIG2 0x96 +#define SIG3 0x09 +#elif defined(__AVR_ATmega324P__) +#define SIG2 0x95 +#define SIG3 0x08 +#endif + +#define PAGE_SIZE 0x080U //128 words +#define PAGE_SIZE_BYTES 0x100U //256 bytes + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union +{ + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union +{ + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct +{ + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; + +uint8_t error_count = 0; +uint8_t sreg; + +void (*app_start)(void) = 0x0000; + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + uint16_t i; + + asm volatile("nop\n\t"); + +#ifdef ADABOOT // BBR/LF 10/8/2007 & 9/13/2008 + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if it's a not an external reset... + app_start(); // skip bootloader +#endif + + + //initialize our serial port. + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1< 0x85) + getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') + { + ch2 = getch(); + if(ch2 == 0x80) + byte_response(HW_VER); // Hardware version + else if(ch2==0x81) + byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) + byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) + byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else + byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') + { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') + { + getNch(5); + nothing_response(); + } + + + /* Enter programming mode */ + else if(ch=='P') + { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') + { + nothing_response(); +#ifdef ADABOOT + // autoreset via watchdog (sneaky!) BBR/LF 9/13/2008 + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + + + /* Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='R') + { + nothing_response(); + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') + { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') + { + getNch(4); + byte_response(0x00); + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') + { + length.byte[1] = getch(); + length.byte[0] = getch(); + + flags.eeprom = 0; + if (getch() == 'E') + flags.eeprom = 1; + + for (i=0; i byte location + address.word = address.word << 1; + + //Even up an odd number of bytes + if ((length.byte[0] & 0x01)) + length.word++; + + // HACKME: EEPE used to be EEWE + //Wait for previous EEPROM writes to complete + //while(bit_is_set(EECR,EEPE)); + while(EECR & (1< byte location + } + + // Command terminator + if (getch() == ' ') + { + putch(0x14); + for (w=0; w= 'a') + ah = ah - 'a' + 0x0a; + else if(ah >= '0') + ah -= '0'; + if(al >= 'a') + al = al - 'a' + 0x0a; + else if(al >= '0') + al -= '0'; + + return (ah << 4) + al; +} + + +void puthex(char ch) +{ + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) + ah = ah - 0x0a + 'a'; + else + ah += '0'; + + al = (ch & 0x0f); + if(al >= 0x0a) + al = al - 0x0a + 'a'; + else + al += '0'; + + putch(ah); + putch(al); +} + + +void putch(char ch) +{ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +} + + + + +char getch(void) +{ + uint32_t count = 0; + +#ifdef ADABOOT + LED_PORT &= ~_BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + while(!(UCSR0A & _BV(RXC0))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + +#ifdef ADABOOT + LED_PORT |= _BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + return UDR0; +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i +#include +#include +#include +#include +#include +#include + +#ifdef ADABOOT + #define NUM_LED_FLASHES 3 + #define ADABOOT_VER 1 +#endif + + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20080711: hack by Zach Hoeken */ +#define BAUD_RATE 38400 + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( +#if defined(__AVR_ATmega1284P__) +#define SIG2 0x97 +#define SIG3 0x05 +#elif defined(__AVR_ATmega644P__) +#define SIG2 0x96 +#define SIG3 0x0A +#elif defined(__AVR_ATmega644__) +#define SIG2 0x96 +#define SIG3 0x09 +#elif defined(__AVR_ATmega324P__) +#define SIG2 0x95 +#define SIG3 0x08 +#endif +#define PAGE_SIZE 0x080U //128 words +#define PAGE_SIZE_BYTES 0x100U //256 bytes + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union +{ + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union +{ + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct +{ + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; + +uint8_t error_count = 0; +uint8_t sreg; + +void (*app_start)(void) = 0x0000; + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + uint16_t i; + + asm volatile("nop\n\t"); + +#ifdef ADABOOT // BBR/LF 10/8/2007 & 9/13/2008 + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if it's a not an external reset... + app_start(); // skip bootloader +#endif + + + //initialize our serial port. + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0B = (1<= 'a') + ah = ah - 'a' + 0x0a; + else if(ah >= '0') + ah -= '0'; + if(al >= 'a') + al = al - 'a' + 0x0a; + else if(al >= '0') + al -= '0'; + + return (ah << 4) + al; +} + + +void puthex(char ch) +{ + char ah,al; + + ah = (ch & 0xf0) >> 4; + if(ah >= 0x0a) + ah = ah - 0x0a + 'a'; + else + ah += '0'; + + al = (ch & 0x0f); + if(al >= 0x0a) + al = al - 0x0a + 'a'; + else + al += '0'; + + putch(ah); + putch(al); +} + + +void putch(char ch) +{ + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +} + + + + +char getch(void) +{ + uint32_t count = 0; + +#ifdef ADABOOT + LED_PORT &= ~_BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + while(!(UCSR0A & _BV(RXC0))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + +#ifdef ADABOOT + LED_PORT |= _BV(LED); // toggle LED to show activity - BBR/LF 10/3/2007 & 9/13/2008 +#endif + + return UDR0; +} + + +void getNch(uint8_t count) +{ + uint8_t i; + for(i=0;i $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega644p/README.txt b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega644p/README.txt new file mode 100644 index 000000000..828600785 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/bootloaders/atmega644p/README.txt @@ -0,0 +1,3 @@ +Note: This bootloader support ATmega644, ATmega644P and ATmega324P. +To build, set PROGRAM and MCU_TARGET in the Makefile according to your target device. + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Arduino.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Arduino.h new file mode 100644 index 000000000..b26582589 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Arduino.h @@ -0,0 +1,215 @@ +#ifndef Arduino_h +#define Arduino_h + +#include +#include +#include + +#include +#include +#include + +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 +#define INPUT_PULLUP 0x2 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) +#define DEFAULT 0 +#define EXTERNAL 1 +#define INTERNAL 2 +#else +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 +#endif + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() ) +#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. + +#define analogInPinToBit(P) (P) + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#ifdef ARDUINO_MAIN +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 +#endif + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER4D 14 +#define TIMER5A 15 +#define TIMER5B 16 +#define TIMER5C 17 + +#ifdef __cplusplus +} // extern "C" +#endif + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#endif + +#include "pins_arduino.h" + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/CDC.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/CDC.cpp new file mode 100644 index 000000000..701e48398 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/CDC.cpp @@ -0,0 +1,239 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include + +#if defined(USBCON) +#ifdef CDC_ENABLED + +#if (RAMEND < 1000) +#define SERIAL_BUFFER_SIZE 16 +#else +#define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile int head; + volatile int tail; +}; + +ring_buffer cdc_rx_buffer = { { 0 }, 0, 0}; + +typedef struct +{ + u32 dwDTERate; + u8 bCharFormat; + u8 bParityType; + u8 bDataBits; + u8 lineState; +} LineInfo; + +static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; + +#define WEAK __attribute__ ((weak)) + +extern const CDCDescriptor _cdcInterface PROGMEM; +const CDCDescriptor _cdcInterface = +{ + D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1), + + // CDC communication interface + D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0), + D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd) + D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management (not) + D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,6), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported + D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0 + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40), + + // CDC data interface + D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0), + D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0), + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0) +}; + +int WEAK CDC_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 2; // uses 2 + return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface)); +} + +bool WEAK CDC_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (CDC_GET_LINE_CODING == r) + { + USB_SendControl(0,(void*)&_usbLineInfo,7); + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (CDC_SET_LINE_CODING == r) + { + USB_RecvControl((void*)&_usbLineInfo,7); + return true; + } + + if (CDC_SET_CONTROL_LINE_STATE == r) + { + _usbLineInfo.lineState = setup.wValueL; + + // auto-reset into the bootloader is triggered when the port, already + // open at 1200 bps, is closed. this is the signal to start the watchdog + // with a relatively long period so it can finish housekeeping tasks + // like servicing endpoints before the sketch ends + if (1200 == _usbLineInfo.dwDTERate) { + // We check DTR state to determine if host port is open (bit 0 of lineState). + if ((_usbLineInfo.lineState & 0x01) == 0) { + *(uint16_t *)0x0800 = 0x7777; + wdt_enable(WDTO_120MS); + } else { + // Most OSs do some intermediate steps when configuring ports and DTR can + // twiggle more than once before stabilizing. + // To avoid spurious resets we set the watchdog to 250ms and eventually + // cancel if DTR goes back high. + + wdt_disable(); + wdt_reset(); + *(uint16_t *)0x0800 = 0x0; + } + } + return true; + } + } + return false; +} + + +int _serialPeek = -1; +void Serial_::begin(uint16_t baud_count) +{ +} + +void Serial_::end(void) +{ +} + +void Serial_::accept(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + + // while we have room to store a byte + while (i != buffer->tail) { + int c = USB_Recv(CDC_RX); + if (c == -1) + break; // no more data + buffer->buffer[buffer->head] = c; + buffer->head = i; + + i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE; + } +} + +int Serial_::available(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + return (unsigned int)(SERIAL_BUFFER_SIZE + buffer->head - buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int Serial_::peek(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + if (buffer->head == buffer->tail) { + return -1; + } else { + return buffer->buffer[buffer->tail]; + } +} + +int Serial_::read(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + // if the head isn't ahead of the tail, we don't have any characters + if (buffer->head == buffer->tail) { + return -1; + } else { + unsigned char c = buffer->buffer[buffer->tail]; + buffer->tail = (unsigned int)(buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void Serial_::flush(void) +{ + USB_Flush(CDC_TX); +} + +size_t Serial_::write(uint8_t c) +{ + /* only try to send bytes if the high-level CDC connection itself + is open (not just the pipe) - the OS should set lineState when the port + is opened and clear lineState when the port is closed. + bytes sent before the user opens the connection or after + the connection is closed are lost - just like with a UART. */ + + // TODO - ZE - check behavior on different OSes and test what happens if an + // open connection isn't broken cleanly (cable is yanked out, host dies + // or locks up, or host virtual serial port hangs) + if (_usbLineInfo.lineState > 0) { + int r = USB_Send(CDC_TX,&c,1); + if (r > 0) { + return r; + } else { + setWriteError(); + return 0; + } + } + setWriteError(); + return 0; +} + +// This operator is a convenient way for a sketch to check whether the +// port has actually been configured and opened by the host (as opposed +// to just being connected to the host). It can be used, for example, in +// setup() before printing to ensure that an application on the host is +// actually ready to receive and display the data. +// We add a short delay before returning to fix a bug observed by Federico +// where the port is configured (lineState != 0) but not quite opened. +Serial_::operator bool() { + bool result = false; + if (_usbLineInfo.lineState > 0) + result = true; + delay(10); + return result; +} + +Serial_ Serial; + +#endif +#endif /* if defined(USBCON) */ diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Client.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Client.h new file mode 100644 index 000000000..ea134838a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Client.h @@ -0,0 +1,26 @@ +#ifndef client_h +#define client_h +#include "Print.h" +#include "Stream.h" +#include "IPAddress.h" + +class Client : public Stream { + +public: + virtual int connect(IPAddress ip, uint16_t port) =0; + virtual int connect(const char *host, uint16_t port) =0; + virtual size_t write(uint8_t) =0; + virtual size_t write(const uint8_t *buf, size_t size) =0; + virtual int available() = 0; + virtual int read() = 0; + virtual int read(uint8_t *buf, size_t size) = 0; + virtual int peek() = 0; + virtual void flush() = 0; + virtual void stop() = 0; + virtual uint8_t connected() = 0; + virtual operator bool() = 0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HID.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HID.cpp new file mode 100644 index 000000000..ac6360844 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HID.cpp @@ -0,0 +1,520 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) +#ifdef HID_ENABLED + +//#define RAWHID_ENABLED + +// Singletons for mouse and keyboard + +Mouse_ Mouse; +Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ + +// HID report descriptor + +#define LSB(_x) ((_x) & 0xFF) +#define MSB(_x) ((_x) >> 8) + +#define RAWHID_USAGE_PAGE 0xFFC0 +#define RAWHID_USAGE 0x0C00 +#define RAWHID_TX_SIZE 64 +#define RAWHID_RX_SIZE 64 + +extern const u8 _hidReportDescriptor[] PROGMEM; +const u8 _hidReportDescriptor[] = { + + // Mouse + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54 + 0x09, 0x02, // USAGE (Mouse) + 0xa1, 0x01, // COLLECTION (Application) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x85, 0x01, // REPORT_ID (1) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x01, // USAGE_MINIMUM (Button 1) + 0x29, 0x03, // USAGE_MAXIMUM (Button 3) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x95, 0x03, // REPORT_COUNT (3) + 0x75, 0x01, // REPORT_SIZE (1) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x05, // REPORT_SIZE (5) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x30, // USAGE (X) + 0x09, 0x31, // USAGE (Y) + 0x09, 0x38, // USAGE (Wheel) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) + 0x75, 0x08, // REPORT_SIZE (8) + 0x95, 0x03, // REPORT_COUNT (3) + 0x81, 0x06, // INPUT (Data,Var,Rel) + 0xc0, // END_COLLECTION + 0xc0, // END_COLLECTION + + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, 0x02, // REPORT_ID (2) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x65, // LOGICAL_MAXIMUM (101) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0, // END_COLLECTION + +#if RAWHID_ENABLED + // RAW HID + 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 + 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), + + 0xA1, 0x01, // Collection 0x01 + 0x85, 0x03, // REPORT_ID (3) + 0x75, 0x08, // report size = 8 bits + 0x15, 0x00, // logical minimum = 0 + 0x26, 0xFF, 0x00, // logical maximum = 255 + + 0x95, 64, // report count TX + 0x09, 0x01, // usage + 0x81, 0x02, // Input (array) + + 0x95, 64, // report count RX + 0x09, 0x02, // usage + 0x91, 0x02, // Output (array) + 0xC0 // end collection +#endif +}; + +extern const HIDDescriptor _hidInterface PROGMEM; +const HIDDescriptor _hidInterface = +{ + D_INTERFACE(HID_INTERFACE,1,3,0,0), + D_HIDREPORT(sizeof(_hidReportDescriptor)), + D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01) +}; + +//================================================================================ +//================================================================================ +// Driver + +u8 _hid_protocol = 1; +u8 _hid_idle = 1; + +#define WEAK __attribute__ ((weak)) + +int WEAK HID_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 1; // uses 1 + return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface)); +} + +int WEAK HID_GetDescriptor(int i) +{ + return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor)); +} + +void WEAK HID_SendReport(u8 id, const void* data, int len) +{ + USB_Send(HID_TX, &id, 1); + USB_Send(HID_TX | TRANSFER_RELEASE,data,len); +} + +bool WEAK HID_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (HID_GET_REPORT == r) + { + //HID_GetReport(); + return true; + } + if (HID_GET_PROTOCOL == r) + { + //Send8(_hid_protocol); // TODO + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (HID_SET_PROTOCOL == r) + { + _hid_protocol = setup.wValueL; + return true; + } + + if (HID_SET_IDLE == r) + { + _hid_idle = setup.wValueL; + return true; + } + } + return false; +} + +//================================================================================ +//================================================================================ +// Mouse + +Mouse_::Mouse_(void) : _buttons(0) +{ +} + +void Mouse_::begin(void) +{ +} + +void Mouse_::end(void) +{ +} + +void Mouse_::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void Mouse_::move(signed char x, signed char y, signed char wheel) +{ + u8 m[4]; + m[0] = _buttons; + m[1] = x; + m[2] = y; + m[3] = wheel; + HID_SendReport(1,m,4); +} + +void Mouse_::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void Mouse_::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void Mouse_::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool Mouse_::isPressed(uint8_t b) +{ + if ((b & _buttons) > 0) + return true; + return false; +} + +//================================================================================ +//================================================================================ +// Keyboard + +Keyboard_::Keyboard_(void) +{ +} + +void Keyboard_::begin(void) +{ +} + +void Keyboard_::end(void) +{ +} + +void Keyboard_::sendReport(KeyReport* keys) +{ + HID_SendReport(2,keys,sizeof(KeyReport)); +} + +extern +const uint8_t _asciimap[128] PROGMEM; + +#define SHIFT 0x80 +const uint8_t _asciimap[128] = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + +uint8_t USBPutChar(uint8_t c); + +// press() adds the specified key (printing, non-printing, or modifier) +// to the persistent key report and sends the report. Because of the way +// USB HID works, the host acts like the key remains pressed until we +// call release(), releaseAll(), or otherwise clear the report and resend. +size_t Keyboard_::press(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers |= (1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + setWriteError(); + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers |= 0x02; // the left shift modifier + k &= 0x7F; + } + } + + // Add k to the key report only if it's not already present + // and if there is an empty slot. + if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && + _keyReport.keys[2] != k && _keyReport.keys[3] != k && + _keyReport.keys[4] != k && _keyReport.keys[5] != k) { + + for (i=0; i<6; i++) { + if (_keyReport.keys[i] == 0x00) { + _keyReport.keys[i] = k; + break; + } + } + if (i == 6) { + setWriteError(); + return 0; + } + } + sendReport(&_keyReport); + return 1; +} + +// release() takes the specified key out of the persistent key report and +// sends the report. This tells the OS the key is no longer pressed and that +// it shouldn't be repeated any more. +size_t Keyboard_::release(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers &= ~(1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers &= ~(0x02); // the left shift modifier + k &= 0x7F; + } + } + + // Test the key report to see if k is present. Clear it if it exists. + // Check all positions in case the key is present more than once (which it shouldn't be) + for (i=0; i<6; i++) { + if (0 != k && _keyReport.keys[i] == k) { + _keyReport.keys[i] = 0x00; + } + } + + sendReport(&_keyReport); + return 1; +} + +void Keyboard_::releaseAll(void) +{ + _keyReport.keys[0] = 0; + _keyReport.keys[1] = 0; + _keyReport.keys[2] = 0; + _keyReport.keys[3] = 0; + _keyReport.keys[4] = 0; + _keyReport.keys[5] = 0; + _keyReport.modifiers = 0; + sendReport(&_keyReport); +} + +size_t Keyboard_::write(uint8_t c) +{ + uint8_t p = press(c); // Keydown + uint8_t r = release(c); // Keyup + return (p); // just return the result of press() since release() almost always returns 1 +} + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HardwareSerial.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HardwareSerial.cpp new file mode 100644 index 000000000..794a7be89 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,519 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#include +#include +#include +#include +#include "Arduino.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +/* + * on ATmega8, the uart and its bits are not numbered, so there is no "TXC0" + * definition. + */ +#if !defined(TXC0) +#if defined(TXC) +#define TXC0 TXC +#elif defined(TXC1) +// Some devices have uart1 but no uart0 +#define TXC0 TXC1 +#else +#error TXC0 not definable in HardwareSerial.h +#endif +#endif + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which head is the index of the location +// to which to write the next incoming character and tail is the index of the +// location from which to read. +#if (RAMEND < 1000) + #define SERIAL_BUFFER_SIZE 16 +#else + #define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile unsigned int head; + volatile unsigned int tail; +}; + +#if defined(USBCON) + ring_buffer rx_buffer = { { 0 }, 0, 0}; + ring_buffer tx_buffer = { { 0 }, 0, 0}; +#endif +#if defined(UBRRH) || defined(UBRR0H) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; + ring_buffer tx_buffer = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR1H) + ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer1 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR2H) + ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer2 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR3H) + ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *buffer) +{ + int i = (unsigned int)(buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != buffer->tail) { + buffer->buffer[buffer->head] = c; + buffer->head = i; + } +} + +#if !defined(USART0_RX_vect) && defined(USART1_RX_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(USART_RX_vect) && !defined(SIG_USART0_RECV) && \ + !defined(SIG_UART0_RECV) && !defined(USART0_RX_vect) && \ + !defined(SIG_UART_RECV) + #error "Don't know what the Data Received vector is called for the first UART" +#else + void serialEvent() __attribute__((weak)); + void serialEvent() {} + #define serialEvent_implemented +#if defined(USART_RX_vect) + SIGNAL(USART_RX_vect) +#elif defined(SIG_USART0_RECV) + SIGNAL(SIG_USART0_RECV) +#elif defined(SIG_UART0_RECV) + SIGNAL(SIG_UART0_RECV) +#elif defined(USART0_RX_vect) + SIGNAL(USART0_RX_vect) +#elif defined(SIG_UART_RECV) + SIGNAL(SIG_UART_RECV) +#endif + { + #if defined(UDR0) + if (bit_is_clear(UCSR0A, UPE0)) { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } else { + unsigned char c = UDR0; + }; + #elif defined(UDR) + if (bit_is_clear(UCSRA, PE)) { + unsigned char c = UDR; + store_char(c, &rx_buffer); + } else { + unsigned char c = UDR; + }; + #else + #error UDR not defined + #endif + } +#endif +#endif + +#if defined(USART1_RX_vect) + void serialEvent1() __attribute__((weak)); + void serialEvent1() {} + #define serialEvent1_implemented + SIGNAL(USART1_RX_vect) + { + if (bit_is_clear(UCSR1A, UPE1)) { + unsigned char c = UDR1; + store_char(c, &rx_buffer1); + } else { + unsigned char c = UDR1; + }; + } +#elif defined(SIG_USART1_RECV) + #error SIG_USART1_RECV +#endif + +#if defined(USART2_RX_vect) && defined(UDR2) + void serialEvent2() __attribute__((weak)); + void serialEvent2() {} + #define serialEvent2_implemented + SIGNAL(USART2_RX_vect) + { + if (bit_is_clear(UCSR2A, UPE2)) { + unsigned char c = UDR2; + store_char(c, &rx_buffer2); + } else { + unsigned char c = UDR2; + }; + } +#elif defined(SIG_USART2_RECV) + #error SIG_USART2_RECV +#endif + +#if defined(USART3_RX_vect) && defined(UDR3) + void serialEvent3() __attribute__((weak)); + void serialEvent3() {} + #define serialEvent3_implemented + SIGNAL(USART3_RX_vect) + { + if (bit_is_clear(UCSR3A, UPE3)) { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } else { + unsigned char c = UDR3; + }; + } +#elif defined(SIG_USART3_RECV) + #error SIG_USART3_RECV +#endif + +void serialEventRun(void) +{ +#ifdef serialEvent_implemented + if (Serial.available()) serialEvent(); +#endif +#ifdef serialEvent1_implemented + if (Serial1.available()) serialEvent1(); +#endif +#ifdef serialEvent2_implemented + if (Serial2.available()) serialEvent2(); +#endif +#ifdef serialEvent3_implemented + if (Serial3.available()) serialEvent3(); +#endif +} + + +#if !defined(USART0_UDRE_vect) && defined(USART1_UDRE_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(UART0_UDRE_vect) && !defined(UART_UDRE_vect) && !defined(USART0_UDRE_vect) && !defined(USART_UDRE_vect) + #error "Don't know what the Data Register Empty vector is called for the first UART" +#else +#if defined(UART0_UDRE_vect) +ISR(UART0_UDRE_vect) +#elif defined(UART_UDRE_vect) +ISR(UART_UDRE_vect) +#elif defined(USART0_UDRE_vect) +ISR(USART0_UDRE_vect) +#elif defined(USART_UDRE_vect) +ISR(USART_UDRE_vect) +#endif +{ + if (tx_buffer.head == tx_buffer.tail) { + // Buffer empty, so disable interrupts +#if defined(UCSR0B) + cbi(UCSR0B, UDRIE0); +#else + cbi(UCSRB, UDRIE); +#endif + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer.buffer[tx_buffer.tail]; + tx_buffer.tail = (tx_buffer.tail + 1) % SERIAL_BUFFER_SIZE; + + #if defined(UDR0) + UDR0 = c; + #elif defined(UDR) + UDR = c; + #else + #error UDR not defined + #endif + } +} +#endif +#endif + +#ifdef USART1_UDRE_vect +ISR(USART1_UDRE_vect) +{ + if (tx_buffer1.head == tx_buffer1.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR1B, UDRIE1); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer1.buffer[tx_buffer1.tail]; + tx_buffer1.tail = (tx_buffer1.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR1 = c; + } +} +#endif + +#ifdef USART2_UDRE_vect +ISR(USART2_UDRE_vect) +{ + if (tx_buffer2.head == tx_buffer2.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR2B, UDRIE2); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer2.buffer[tx_buffer2.tail]; + tx_buffer2.tail = (tx_buffer2.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR2 = c; + } +} +#endif + +#ifdef USART3_UDRE_vect +ISR(USART3_UDRE_vect) +{ + if (tx_buffer3.head == tx_buffer3.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR3B, UDRIE3); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer3.buffer[tx_buffer3.tail]; + tx_buffer3.tail = (tx_buffer3.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR3 = c; + } +} +#endif + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _tx_buffer = tx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _ucsrc = ucsrc; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udrie = udrie; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(unsigned long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + transmitting = false; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::begin(unsigned long baud, byte config) +{ + uint16_t baud_setting; + uint8_t current_config; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + //set the data bits, parity, and stop bits +#if defined(__AVR_ATmega8__) + config |= 0x80; // select UCSRC register (shared with UBRRH) +#endif + *_ucsrc = config; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::end() +{ + // wait for transmission of outgoing data + while (_tx_buffer->head != _tx_buffer->tail) + ; + + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); + + // clear any received data + _rx_buffer->head = _rx_buffer->tail; +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(SERIAL_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // UDR is kept full while the buffer is not empty, so TXC triggers when EMPTY && SENT + while (transmitting && ! (*_ucsra & _BV(TXC0))); + transmitting = false; +} + +size_t HardwareSerial::write(uint8_t c) +{ + int i = (_tx_buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // If the output buffer is full, there's nothing for it other than to + // wait for the interrupt handler to empty it a bit + // ???: return 0 here instead? + while (i == _tx_buffer->tail) + ; + + _tx_buffer->buffer[_tx_buffer->head] = c; + _tx_buffer->head = i; + + sbi(*_ucsrb, _udrie); + // clear the TXC bit -- "can be cleared by writing a one to its bit location" + transmitting = true; + sbi(*_ucsra, TXC0); + + return 1; +} + +HardwareSerial::operator bool() { + return true; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UCSR0C, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0); +#elif defined(USBCON) + // do nothing - Serial object and buffers are initialized in CDC code +#else + #error no serial port defined (port 0) +#endif + +#if defined(UBRR1H) + HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UCSR2C, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); +#endif + +#endif // whole file + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HardwareSerial.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HardwareSerial.h new file mode 100644 index 000000000..a73117f56 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/HardwareSerial.h @@ -0,0 +1,115 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + ring_buffer *_tx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_ucsrc; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udrie; + uint8_t _u2x; + bool transmitting; + public: + HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x); + void begin(unsigned long); + void begin(unsigned long, uint8_t); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + inline size_t write(unsigned long n) { return write((uint8_t)n); } + inline size_t write(long n) { return write((uint8_t)n); } + inline size_t write(unsigned int n) { return write((uint8_t)n); } + inline size_t write(int n) { return write((uint8_t)n); } + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); +}; + +// Define config for Serial.begin(baud, config); +#define SERIAL_5N1 0x00 +#define SERIAL_6N1 0x02 +#define SERIAL_7N1 0x04 +#define SERIAL_8N1 0x06 +#define SERIAL_5N2 0x08 +#define SERIAL_6N2 0x0A +#define SERIAL_7N2 0x0C +#define SERIAL_8N2 0x0E +#define SERIAL_5E1 0x20 +#define SERIAL_6E1 0x22 +#define SERIAL_7E1 0x24 +#define SERIAL_8E1 0x26 +#define SERIAL_5E2 0x28 +#define SERIAL_6E2 0x2A +#define SERIAL_7E2 0x2C +#define SERIAL_8E2 0x2E +#define SERIAL_5O1 0x30 +#define SERIAL_6O1 0x32 +#define SERIAL_7O1 0x34 +#define SERIAL_8O1 0x36 +#define SERIAL_5O2 0x38 +#define SERIAL_6O2 0x3A +#define SERIAL_7O2 0x3C +#define SERIAL_8O2 0x3E + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "USBAPI.h" +// extern HardwareSerial Serial_; +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +extern void serialEventRun(void) __attribute__((weak)); + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/IPAddress.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/IPAddress.cpp new file mode 100644 index 000000000..fe3deb77a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/IPAddress.cpp @@ -0,0 +1,56 @@ + +#include +#include + +IPAddress::IPAddress() +{ + memset(_address, 0, sizeof(_address)); +} + +IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet) +{ + _address[0] = first_octet; + _address[1] = second_octet; + _address[2] = third_octet; + _address[3] = fourth_octet; +} + +IPAddress::IPAddress(uint32_t address) +{ + memcpy(_address, &address, sizeof(_address)); +} + +IPAddress::IPAddress(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); +} + +IPAddress& IPAddress::operator=(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); + return *this; +} + +IPAddress& IPAddress::operator=(uint32_t address) +{ + memcpy(_address, (const uint8_t *)&address, sizeof(_address)); + return *this; +} + +bool IPAddress::operator==(const uint8_t* addr) +{ + return memcmp(addr, _address, sizeof(_address)) == 0; +} + +size_t IPAddress::printTo(Print& p) const +{ + size_t n = 0; + for (int i =0; i < 3; i++) + { + n += p.print(_address[i], DEC); + n += p.print('.'); + } + n += p.print(_address[3], DEC); + return n; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/IPAddress.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/IPAddress.h new file mode 100644 index 000000000..2585aec0e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/IPAddress.h @@ -0,0 +1,76 @@ +/* + * + * MIT License: + * Copyright (c) 2011 Adrian McEwen + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * adrianm@mcqn.com 1/1/2011 + */ + +#ifndef IPAddress_h +#define IPAddress_h + +#include + +// A class to make it easier to handle and pass around IP addresses + +class IPAddress : public Printable { +private: + uint8_t _address[4]; // IPv4 address + // Access the raw byte array containing the address. Because this returns a pointer + // to the internal structure rather than a copy of the address this function should only + // be used when you know that the usage of the returned uint8_t* will be transient and not + // stored. + uint8_t* raw_address() { return _address; }; + +public: + // Constructors + IPAddress(); + IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet); + IPAddress(uint32_t address); + IPAddress(const uint8_t *address); + + // Overloaded cast operator to allow IPAddress objects to be used where a pointer + // to a four-byte uint8_t array is expected + operator uint32_t() { return *((uint32_t*)_address); }; + bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); }; + bool operator==(const uint8_t* addr); + + // Overloaded index operator to allow getting and setting individual octets of the address + uint8_t operator[](int index) const { return _address[index]; }; + uint8_t& operator[](int index) { return _address[index]; }; + + // Overloaded copy operators to allow initialisation of IPAddress objects from other types + IPAddress& operator=(const uint8_t *address); + IPAddress& operator=(uint32_t address); + + virtual size_t printTo(Print& p) const; + + friend class EthernetClass; + friend class UDP; + friend class Client; + friend class Server; + friend class DhcpClass; + friend class DNSClient; +}; + +const IPAddress INADDR_NONE(0,0,0,0); + + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Platform.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Platform.h new file mode 100644 index 000000000..8b8f74277 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Platform.h @@ -0,0 +1,23 @@ + +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#include +#include +#include +#include +#include + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; + +#include "Arduino.h" + +#if defined(USBCON) + #include "USBDesc.h" + #include "USBCore.h" + #include "USBAPI.h" +#endif /* if defined(USBCON) */ + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Print.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Print.cpp new file mode 100644 index 000000000..53961ec47 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Print.cpp @@ -0,0 +1,268 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "Arduino.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +size_t Print::write(const uint8_t *buffer, size_t size) +{ + size_t n = 0; + while (size--) { + n += write(*buffer++); + } + return n; +} + +size_t Print::print(const __FlashStringHelper *ifsh) +{ + const char PROGMEM *p = (const char PROGMEM *)ifsh; + size_t n = 0; + while (1) { + unsigned char c = pgm_read_byte(p++); + if (c == 0) break; + n += write(c); + } + return n; +} + +size_t Print::print(const String &s) +{ + size_t n = 0; + for (uint16_t i = 0; i < s.length(); i++) { + n += write(s[i]); + } + return n; +} + +size_t Print::print(const char str[]) +{ + return write(str); +} + +size_t Print::print(char c) +{ + return write(c); +} + +size_t Print::print(unsigned char b, int base) +{ + return print((unsigned long) b, base); +} + +size_t Print::print(int n, int base) +{ + return print((long) n, base); +} + +size_t Print::print(unsigned int n, int base) +{ + return print((unsigned long) n, base); +} + +size_t Print::print(long n, int base) +{ + if (base == 0) { + return write(n); + } else if (base == 10) { + if (n < 0) { + int t = print('-'); + n = -n; + return printNumber(n, 10) + t; + } + return printNumber(n, 10); + } else { + return printNumber(n, base); + } +} + +size_t Print::print(unsigned long n, int base) +{ + if (base == 0) return write(n); + else return printNumber(n, base); +} + +size_t Print::print(double n, int digits) +{ + return printFloat(n, digits); +} + +size_t Print::println(const __FlashStringHelper *ifsh) +{ + size_t n = print(ifsh); + n += println(); + return n; +} + +size_t Print::print(const Printable& x) +{ + return x.printTo(*this); +} + +size_t Print::println(void) +{ + size_t n = print('\r'); + n += print('\n'); + return n; +} + +size_t Print::println(const String &s) +{ + size_t n = print(s); + n += println(); + return n; +} + +size_t Print::println(const char c[]) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(char c) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(unsigned char b, int base) +{ + size_t n = print(b, base); + n += println(); + return n; +} + +size_t Print::println(int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(double num, int digits) +{ + size_t n = print(num, digits); + n += println(); + return n; +} + +size_t Print::println(const Printable& x) +{ + size_t n = print(x); + n += println(); + return n; +} + +// Private Methods ///////////////////////////////////////////////////////////// + +size_t Print::printNumber(unsigned long n, uint8_t base) { + char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte. + char *str = &buf[sizeof(buf) - 1]; + + *str = '\0'; + + // prevent crash if called with base == 1 + if (base < 2) base = 10; + + do { + unsigned long m = n; + n /= base; + char c = m - base * n; + *--str = c < 10 ? c + '0' : c + 'A' - 10; + } while(n); + + return write(str); +} + +size_t Print::printFloat(double number, uint8_t digits) +{ + size_t n = 0; + + if (isnan(number)) return print("nan"); + if (isinf(number)) return print("inf"); + if (number > 4294967040.0) return print ("ovf"); // constant determined empirically + if (number <-4294967040.0) return print ("ovf"); // constant determined empirically + + // Handle negative numbers + if (number < 0.0) + { + n += print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) { + n += print("."); + } + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + n += print(toPrint); + remainder -= toPrint; + } + + return n; +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Print.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Print.h new file mode 100644 index 000000000..dc7615087 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Print.h @@ -0,0 +1,81 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#include "WString.h" +#include "Printable.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 + +class Print +{ + private: + int write_error; + size_t printNumber(unsigned long, uint8_t); + size_t printFloat(double, uint8_t); + protected: + void setWriteError(int err = 1) { write_error = err; } + public: + Print() : write_error(0) {} + + int getWriteError() { return write_error; } + void clearWriteError() { setWriteError(0); } + + virtual size_t write(uint8_t) = 0; + size_t write(const char *str) { + if (str == NULL) return 0; + return write((const uint8_t *)str, strlen(str)); + } + virtual size_t write(const uint8_t *buffer, size_t size); + + size_t print(const __FlashStringHelper *); + size_t print(const String &); + size_t print(const char[]); + size_t print(char); + size_t print(unsigned char, int = DEC); + size_t print(int, int = DEC); + size_t print(unsigned int, int = DEC); + size_t print(long, int = DEC); + size_t print(unsigned long, int = DEC); + size_t print(double, int = 2); + size_t print(const Printable&); + + size_t println(const __FlashStringHelper *); + size_t println(const String &s); + size_t println(const char[]); + size_t println(char); + size_t println(unsigned char, int = DEC); + size_t println(int, int = DEC); + size_t println(unsigned int, int = DEC); + size_t println(long, int = DEC); + size_t println(unsigned long, int = DEC); + size_t println(double, int = 2); + size_t println(const Printable&); + size_t println(void); +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Printable.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Printable.h new file mode 100644 index 000000000..d03c9af62 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Printable.h @@ -0,0 +1,40 @@ +/* + Printable.h - Interface class that allows printing of complex types + Copyright (c) 2011 Adrian McEwen. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Printable_h +#define Printable_h + +#include + +class Print; + +/** The Printable class provides a way for new classes to allow themselves to be printed. + By deriving from Printable and implementing the printTo method, it will then be possible + for users to print out instances of this class by passing them into the usual + Print::print and Print::println methods. +*/ + +class Printable +{ + public: + virtual size_t printTo(Print& p) const = 0; +}; + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Server.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Server.h new file mode 100644 index 000000000..9674c7626 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Server.h @@ -0,0 +1,9 @@ +#ifndef server_h +#define server_h + +class Server : public Print { +public: + virtual void begin() =0; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Stream.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Stream.cpp new file mode 100644 index 000000000..aafb7fcf9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Stream.cpp @@ -0,0 +1,270 @@ +/* + Stream.cpp - adds parsing methods to Stream class + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Created July 2011 + parsing functions based on TextFinder library by Michael Margolis + */ + +#include "Arduino.h" +#include "Stream.h" + +#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait +#define NO_SKIP_CHAR 1 // a magic char not found in a valid ASCII numeric field + +// private method to read stream with timeout +int Stream::timedRead() +{ + int c; + _startMillis = millis(); + do { + c = read(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// private method to peek stream with timeout +int Stream::timedPeek() +{ + int c; + _startMillis = millis(); + do { + c = peek(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// returns peek of the next digit in the stream or -1 if timeout +// discards non-numeric characters +int Stream::peekNextDigit() +{ + int c; + while (1) { + c = timedPeek(); + if (c < 0) return c; // timeout + if (c == '-') return c; + if (c >= '0' && c <= '9') return c; + read(); // discard non-numeric + } +} + +// Public Methods +////////////////////////////////////////////////////////////// + +void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait +{ + _timeout = timeout; +} + + // find returns true if the target string is found +bool Stream::find(char *target) +{ + return findUntil(target, NULL); +} + +// reads data from the stream until the target string of given length is found +// returns true if target string is found, false if timed out +bool Stream::find(char *target, size_t length) +{ + return findUntil(target, length, NULL, 0); +} + +// as find but search ends if the terminator string is found +bool Stream::findUntil(char *target, char *terminator) +{ + return findUntil(target, strlen(target), terminator, strlen(terminator)); +} + +// reads data from the stream until the target string of the given length is found +// search terminated if the terminator string is found +// returns true if target string is found, false if terminated or timed out +bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen) +{ + size_t index = 0; // maximum target string length is 64k bytes! + size_t termIndex = 0; + int c; + + if( *target == 0) + return true; // return true if target is a null string + while( (c = timedRead()) > 0){ + + if(c != target[index]) + index = 0; // reset index if any char does not match + + if( c == target[index]){ + //////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1); + if(++index >= targetLen){ // return true if all chars in the target match + return true; + } + } + + if(termLen > 0 && c == terminator[termIndex]){ + if(++termIndex >= termLen) + return false; // return false if terminate string found before target string + } + else + termIndex = 0; + } + return false; +} + + +// returns the first valid (long) integer value from the current position. +// initial characters that are not digits (or the minus sign) are skipped +// function is terminated by the first character that is not a digit. +long Stream::parseInt() +{ + return parseInt(NO_SKIP_CHAR); // terminate on first non-digit character (or timeout) +} + +// as above but a given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +long Stream::parseInt(char skipChar) +{ + boolean isNegative = false; + long value = 0; + int c; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore this charactor + else if(c == '-') + isNegative = true; + else if(c >= '0' && c <= '9') // is c a digit? + value = value * 10 + c - '0'; + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == skipChar ); + + if(isNegative) + value = -value; + return value; +} + + +// as parseInt but returns a floating point value +float Stream::parseFloat() +{ + return parseFloat(NO_SKIP_CHAR); +} + +// as above but the given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +float Stream::parseFloat(char skipChar){ + boolean isNegative = false; + boolean isFraction = false; + long value = 0; + char c; + float fraction = 1.0; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore + else if(c == '-') + isNegative = true; + else if (c == '.') + isFraction = true; + else if(c >= '0' && c <= '9') { // is c a digit? + value = value * 10 + c - '0'; + if(isFraction) + fraction *= 0.1; + } + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == '.' || c == skipChar ); + + if(isNegative) + value = -value; + if(isFraction) + return value * fraction; + else + return value; +} + +// read characters from stream into buffer +// terminates if length characters have been read, or timeout (see setTimeout) +// returns the number of characters placed in the buffer +// the buffer is NOT null terminated. +// +size_t Stream::readBytes(char *buffer, size_t length) +{ + size_t count = 0; + while (count < length) { + int c = timedRead(); + if (c < 0) break; + *buffer++ = (char)c; + count++; + } + return count; +} + + +// as readBytes with terminator character +// terminates if length characters have been read, timeout, or if the terminator character detected +// returns the number of characters placed in the buffer (0 means no valid data found) + +size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) +{ + if (length < 1) return 0; + size_t index = 0; + while (index < length) { + int c = timedRead(); + if (c < 0 || c == terminator) break; + *buffer++ = (char)c; + index++; + } + return index; // return number of characters, not including null terminator +} + +String Stream::readString() +{ + String ret; + int c = timedRead(); + while (c >= 0) + { + ret += (char)c; + c = timedRead(); + } + return ret; +} + +String Stream::readStringUntil(char terminator) +{ + String ret; + int c = timedRead(); + while (c >= 0 && c != terminator) + { + ret += (char)c; + c = timedRead(); + } + return ret; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Stream.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Stream.h new file mode 100644 index 000000000..58bbf752f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Stream.h @@ -0,0 +1,96 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + parsing functions based on TextFinder library by Michael Margolis +*/ + +#ifndef Stream_h +#define Stream_h + +#include +#include "Print.h" + +// compatability macros for testing +/* +#define getInt() parseInt() +#define getInt(skipChar) parseInt(skipchar) +#define getFloat() parseFloat() +#define getFloat(skipChar) parseFloat(skipChar) +#define getString( pre_string, post_string, buffer, length) +readBytesBetween( pre_string, terminator, buffer, length) +*/ + +class Stream : public Print +{ + private: + unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read + unsigned long _startMillis; // used for timeout measurement + int timedRead(); // private method to read stream with timeout + int timedPeek(); // private method to peek stream with timeout + int peekNextDigit(); // returns the next numeric digit in the stream or -1 if timeout + + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; + + Stream() {_timeout=1000;} + +// parsing methods + + void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second + + bool find(char *target); // reads data from the stream until the target string is found + // returns true if target string is found, false if timed out (see setTimeout) + + bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found + // returns true if target string is found, false if timed out + + bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found + + bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found + + + long parseInt(); // returns the first valid (long) integer value from the current position. + // initial characters that are not digits (or the minus sign) are skipped + // integer is terminated by the first character that is not a digit. + + float parseFloat(); // float version of parseInt + + size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer + // terminates if length characters have been read or timeout (see setTimeout) + // returns the number of characters placed in the buffer (0 means no valid data found) + + size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character + // terminates if length characters have been read, timeout, or if the terminator character detected + // returns the number of characters placed in the buffer (0 means no valid data found) + + // Arduino String functions to be added here + String readString(); + String readStringUntil(char terminator); + + protected: + long parseInt(char skipChar); // as above but the given skipChar is ignored + // as above but the given skipChar is ignored + // this allows format characters (typically commas) in values to be ignored + + float parseFloat(char skipChar); // as above but the given skipChar is ignored +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Tone.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Tone.cpp new file mode 100644 index 000000000..9bb6fe721 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Tone.cpp @@ -0,0 +1,616 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY +*************************************************/ + +#include +#include +#include "Arduino.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#elif defined(__AVR_ATmega32U4__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER3 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#ifdef USE_TIMER0 +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER1 +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER2 +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER3 +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER4 +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER5 +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBAPI.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBAPI.h new file mode 100644 index 000000000..eb2e5937d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBAPI.h @@ -0,0 +1,196 @@ + + +#ifndef __USBAPI__ +#define __USBAPI__ + +#if defined(USBCON) + +//================================================================================ +//================================================================================ +// USB + +class USBDevice_ +{ +public: + USBDevice_(); + bool configured(); + + void attach(); + void detach(); // Serial port goes down too... + void poll(); +}; +extern USBDevice_ USBDevice; + +//================================================================================ +//================================================================================ +// Serial over CDC (Serial1 is the physical port) + +class Serial_ : public Stream +{ +private: + ring_buffer *_cdc_rx_buffer; +public: + void begin(uint16_t baud_count); + void end(void); + + virtual int available(void); + virtual void accept(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); +}; +extern Serial_ Serial; + +//================================================================================ +//================================================================================ +// Mouse + +#define MOUSE_LEFT 1 +#define MOUSE_RIGHT 2 +#define MOUSE_MIDDLE 4 +#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) + +class Mouse_ +{ +private: + uint8_t _buttons; + void buttons(uint8_t b); +public: + Mouse_(void); + void begin(void); + void end(void); + void click(uint8_t b = MOUSE_LEFT); + void move(signed char x, signed char y, signed char wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default +}; +extern Mouse_ Mouse; + +//================================================================================ +//================================================================================ +// Keyboard + +#define KEY_LEFT_CTRL 0x80 +#define KEY_LEFT_SHIFT 0x81 +#define KEY_LEFT_ALT 0x82 +#define KEY_LEFT_GUI 0x83 +#define KEY_RIGHT_CTRL 0x84 +#define KEY_RIGHT_SHIFT 0x85 +#define KEY_RIGHT_ALT 0x86 +#define KEY_RIGHT_GUI 0x87 + +#define KEY_UP_ARROW 0xDA +#define KEY_DOWN_ARROW 0xD9 +#define KEY_LEFT_ARROW 0xD8 +#define KEY_RIGHT_ARROW 0xD7 +#define KEY_BACKSPACE 0xB2 +#define KEY_TAB 0xB3 +#define KEY_RETURN 0xB0 +#define KEY_ESC 0xB1 +#define KEY_INSERT 0xD1 +#define KEY_DELETE 0xD4 +#define KEY_PAGE_UP 0xD3 +#define KEY_PAGE_DOWN 0xD6 +#define KEY_HOME 0xD2 +#define KEY_END 0xD5 +#define KEY_CAPS_LOCK 0xC1 +#define KEY_F1 0xC2 +#define KEY_F2 0xC3 +#define KEY_F3 0xC4 +#define KEY_F4 0xC5 +#define KEY_F5 0xC6 +#define KEY_F6 0xC7 +#define KEY_F7 0xC8 +#define KEY_F8 0xC9 +#define KEY_F9 0xCA +#define KEY_F10 0xCB +#define KEY_F11 0xCC +#define KEY_F12 0xCD + +// Low level key report: up to 6 keys and shift, ctrl etc at once +typedef struct +{ + uint8_t modifiers; + uint8_t reserved; + uint8_t keys[6]; +} KeyReport; + +class Keyboard_ : public Print +{ +private: + KeyReport _keyReport; + void sendReport(KeyReport* keys); +public: + Keyboard_(void); + void begin(void); + void end(void); + virtual size_t write(uint8_t k); + virtual size_t press(uint8_t k); + virtual size_t release(uint8_t k); + virtual void releaseAll(void); +}; +extern Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ +// Low level API + +typedef struct +{ + uint8_t bmRequestType; + uint8_t bRequest; + uint8_t wValueL; + uint8_t wValueH; + uint16_t wIndex; + uint16_t wLength; +} Setup; + +//================================================================================ +//================================================================================ +// HID 'Driver' + +int HID_GetInterface(uint8_t* interfaceNum); +int HID_GetDescriptor(int i); +bool HID_Setup(Setup& setup); +void HID_SendReport(uint8_t id, const void* data, int len); + +//================================================================================ +//================================================================================ +// MSC 'Driver' + +int MSC_GetInterface(uint8_t* interfaceNum); +int MSC_GetDescriptor(int i); +bool MSC_Setup(Setup& setup); +bool MSC_Data(uint8_t rx,uint8_t tx); + +//================================================================================ +//================================================================================ +// CSC 'Driver' + +int CDC_GetInterface(uint8_t* interfaceNum); +int CDC_GetDescriptor(int i); +bool CDC_Setup(Setup& setup); + +//================================================================================ +//================================================================================ + +#define TRANSFER_PGM 0x80 +#define TRANSFER_RELEASE 0x40 +#define TRANSFER_ZERO 0x20 + +int USB_SendControl(uint8_t flags, const void* d, int len); +int USB_RecvControl(void* d, int len); + +uint8_t USB_Available(uint8_t ep); +int USB_Send(uint8_t ep, const void* data, int len); // blocking +int USB_Recv(uint8_t ep, void* data, int len); // non-blocking +int USB_Recv(uint8_t ep); // non-blocking +void USB_Flush(uint8_t ep); + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBCore.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBCore.cpp new file mode 100644 index 000000000..d3e017065 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBCore.cpp @@ -0,0 +1,684 @@ + + +/* Copyright (c) 2010, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) + +#define EP_TYPE_CONTROL 0x00 +#define EP_TYPE_BULK_IN 0x81 +#define EP_TYPE_BULK_OUT 0x80 +#define EP_TYPE_INTERRUPT_IN 0xC1 +#define EP_TYPE_INTERRUPT_OUT 0xC0 +#define EP_TYPE_ISOCHRONOUS_IN 0x41 +#define EP_TYPE_ISOCHRONOUS_OUT 0x40 + +/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ +#define TX_RX_LED_PULSE_MS 100 +volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ +volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ + +//================================================================== +//================================================================== + +extern const u16 STRING_LANGUAGE[] PROGMEM; +extern const u16 STRING_IPRODUCT[] PROGMEM; +extern const u16 STRING_IMANUFACTURER[] PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM; + +const u16 STRING_LANGUAGE[2] = { + (3<<8) | (2+2), + 0x0409 // English +}; + +const u16 STRING_IPRODUCT[17] = { + (3<<8) | (2+2*16), +#if USB_PID == 0x8036 + 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o' +#elif USB_PID == 0x8037 + 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' ' +#elif USB_PID == 0x803C + 'A','r','d','u','i','n','o',' ','E','s','p','l','o','r','a',' ' +#elif USB_PID == 0x9208 + 'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' ' +#else + 'U','S','B',' ','I','O',' ','B','o','a','r','d',' ',' ',' ',' ' +#endif +}; + +const u16 STRING_IMANUFACTURER[12] = { + (3<<8) | (2+2*11), +#if USB_VID == 0x2341 + 'A','r','d','u','i','n','o',' ','L','L','C' +#elif USB_VID == 0x1b4f + 'S','p','a','r','k','F','u','n',' ',' ',' ' +#else + 'U','n','k','n','o','w','n',' ',' ',' ',' ' +#endif +}; + +#ifdef CDC_ENABLED +#define DEVICE_CLASS 0x02 +#else +#define DEVICE_CLASS 0x00 +#endif + +// DEVICE DESCRIPTOR +const DeviceDescriptor USB_DeviceDescriptor = + D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +const DeviceDescriptor USB_DeviceDescriptorA = + D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +//================================================================== +//================================================================== + +volatile u8 _usbConfiguration = 0; + +static inline void WaitIN(void) +{ + while (!(UEINTX & (1< len) + n = len; + len -= n; + { + LockEP lock(ep); + if (ep & TRANSFER_ZERO) + { + while (n--) + Send8(0); + } + else if (ep & TRANSFER_PGM) + { + while (n--) + Send8(pgm_read_byte(data++)); + } + else + { + while (n--) + Send8(*data++); + } + if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer + ReleaseTX(); + } + } + TXLED1; // light the TX LED + TxLEDPulse = TX_RX_LED_PULSE_MS; + return r; +} + +extern const u8 _initEndpoints[] PROGMEM; +const u8 _initEndpoints[] = +{ + 0, + +#ifdef CDC_ENABLED + EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM + EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT + EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED + EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT +#endif +}; + +#define EP_SINGLE_64 0x32 // EP0 +#define EP_DOUBLE_64 0x36 // Other endpoints + +static +void InitEP(u8 index, u8 type, u8 size) +{ + UENUM = index; + UECONX = 1; + UECFG0X = type; + UECFG1X = size; +} + +static +void InitEndpoints() +{ + for (u8 i = 1; i < sizeof(_initEndpoints); i++) + { + UENUM = i; + UECONX = 1; + UECFG0X = pgm_read_byte(_initEndpoints+i); + UECFG1X = EP_DOUBLE_64; + } + UERST = 0x7E; // And reset them + UERST = 0; +} + +// Handle CLASS_INTERFACE requests +static +bool ClassInterfaceRequest(Setup& setup) +{ + u8 i = setup.wIndex; + +#ifdef CDC_ENABLED + if (CDC_ACM_INTERFACE == i) + return CDC_Setup(setup); +#endif + +#ifdef HID_ENABLED + if (HID_INTERFACE == i) + return HID_Setup(setup); +#endif + return false; +} + +int _cmark; +int _cend; +void InitControl(int end) +{ + SetEP(0); + _cmark = 0; + _cend = end; +} + +static +bool SendControl(u8 d) +{ + if (_cmark < _cend) + { + if (!WaitForINOrOUT()) + return false; + Send8(d); + if (!((_cmark + 1) & 0x3F)) + ClearIN(); // Fifo is full, release this packet + } + _cmark++; + return true; +}; + +// Clipped by _cmark/_cend +int USB_SendControl(u8 flags, const void* d, int len) +{ + int sent = len; + const u8* data = (const u8*)d; + bool pgm = flags & TRANSFER_PGM; + while (len--) + { + u8 c = pgm ? pgm_read_byte(data++) : *data++; + if (!SendControl(c)) + return -1; + } + return sent; +} + +// Does not timeout or cross fifo boundaries +// Will only work for transfers <= 64 bytes +// TODO +int USB_RecvControl(void* d, int len) +{ + WaitOUT(); + Recv((u8*)d,len); + ClearOUT(); + return len; +} + +int SendInterfaces() +{ + int total = 0; + u8 interfaces = 0; + +#ifdef CDC_ENABLED + total = CDC_GetInterface(&interfaces); +#endif + +#ifdef HID_ENABLED + total += HID_GetInterface(&interfaces); +#endif + + return interfaces; +} + +// Construct a dynamic configuration descriptor +// This really needs dynamic endpoint allocation etc +// TODO +static +bool SendConfiguration(int maxlen) +{ + // Count and measure interfaces + InitControl(0); + int interfaces = SendInterfaces(); + ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); + + // Now send them + InitControl(maxlen); + USB_SendControl(0,&config,sizeof(ConfigDescriptor)); + SendInterfaces(); + return true; +} + +u8 _cdcComposite = 0; + +static +bool SendDescriptor(Setup& setup) +{ + u8 t = setup.wValueH; + if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) + return SendConfiguration(setup.wLength); + + InitControl(setup.wLength); +#ifdef HID_ENABLED + if (HID_REPORT_DESCRIPTOR_TYPE == t) + return HID_GetDescriptor(t); +#endif + + u8 desc_length = 0; + const u8* desc_addr = 0; + if (USB_DEVICE_DESCRIPTOR_TYPE == t) + { + if (setup.wLength == 8) + _cdcComposite = 1; + desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor; + } + else if (USB_STRING_DESCRIPTOR_TYPE == t) + { + if (setup.wValueL == 0) + desc_addr = (const u8*)&STRING_LANGUAGE; + else if (setup.wValueL == IPRODUCT) + desc_addr = (const u8*)&STRING_IPRODUCT; + else if (setup.wValueL == IMANUFACTURER) + desc_addr = (const u8*)&STRING_IMANUFACTURER; + else + return false; + } + + if (desc_addr == 0) + return false; + if (desc_length == 0) + desc_length = pgm_read_byte(desc_addr); + + USB_SendControl(TRANSFER_PGM,desc_addr,desc_length); + return true; +} + +// Endpoint 0 interrupt +ISR(USB_COM_vect) +{ + SetEP(0); + if (!ReceivedSetupInt()) + return; + + Setup setup; + Recv((u8*)&setup,8); + ClearSetupInt(); + + u8 requestType = setup.bmRequestType; + if (requestType & REQUEST_DEVICETOHOST) + WaitIN(); + else + ClearIN(); + + bool ok = true; + if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) + { + // Standard Requests + u8 r = setup.bRequest; + if (GET_STATUS == r) + { + Send8(0); // TODO + Send8(0); + } + else if (CLEAR_FEATURE == r) + { + } + else if (SET_FEATURE == r) + { + } + else if (SET_ADDRESS == r) + { + WaitIN(); + UDADDR = setup.wValueL | (1<> 8) & 0xFF) + +#define CDC_V1_10 0x0110 +#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 + +#define CDC_CALL_MANAGEMENT 0x01 +#define CDC_ABSTRACT_CONTROL_MODEL 0x02 +#define CDC_HEADER 0x00 +#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 +#define CDC_UNION 0x06 +#define CDC_CS_INTERFACE 0x24 +#define CDC_CS_ENDPOINT 0x25 +#define CDC_DATA_INTERFACE_CLASS 0x0A + +#define MSC_SUBCLASS_SCSI 0x06 +#define MSC_PROTOCOL_BULK_ONLY 0x50 + +#define HID_HID_DESCRIPTOR_TYPE 0x21 +#define HID_REPORT_DESCRIPTOR_TYPE 0x22 +#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 + + +// Device +typedef struct { + u8 len; // 18 + u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE + u16 usbVersion; // 0x200 + u8 deviceClass; + u8 deviceSubClass; + u8 deviceProtocol; + u8 packetSize0; // Packet 0 + u16 idVendor; + u16 idProduct; + u16 deviceVersion; // 0x100 + u8 iManufacturer; + u8 iProduct; + u8 iSerialNumber; + u8 bNumConfigurations; +} DeviceDescriptor; + +// Config +typedef struct { + u8 len; // 9 + u8 dtype; // 2 + u16 clen; // total length + u8 numInterfaces; + u8 config; + u8 iconfig; + u8 attributes; + u8 maxPower; +} ConfigDescriptor; + +// String + +// Interface +typedef struct +{ + u8 len; // 9 + u8 dtype; // 4 + u8 number; + u8 alternate; + u8 numEndpoints; + u8 interfaceClass; + u8 interfaceSubClass; + u8 protocol; + u8 iInterface; +} InterfaceDescriptor; + +// Endpoint +typedef struct +{ + u8 len; // 7 + u8 dtype; // 5 + u8 addr; + u8 attr; + u16 packetSize; + u8 interval; +} EndpointDescriptor; + +// Interface Association Descriptor +// Used to bind 2 interfaces together in CDC compostite device +typedef struct +{ + u8 len; // 8 + u8 dtype; // 11 + u8 firstInterface; + u8 interfaceCount; + u8 functionClass; + u8 funtionSubClass; + u8 functionProtocol; + u8 iInterface; +} IADDescriptor; + +// CDC CS interface descriptor +typedef struct +{ + u8 len; // 5 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; + u8 d1; +} CDCCSInterfaceDescriptor; + +typedef struct +{ + u8 len; // 4 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; +} CDCCSInterfaceDescriptor4; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; + u8 bDataInterface; +} CMFunctionalDescriptor; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; +} ACMFunctionalDescriptor; + +typedef struct +{ + // IAD + IADDescriptor iad; // Only needed on compound device + + // Control + InterfaceDescriptor cif; // + CDCCSInterfaceDescriptor header; + CMFunctionalDescriptor callManagement; // Call Management + ACMFunctionalDescriptor controlManagement; // ACM + CDCCSInterfaceDescriptor functionalDescriptor; // CDC_UNION + EndpointDescriptor cifin; + + // Data + InterfaceDescriptor dif; + EndpointDescriptor in; + EndpointDescriptor out; +} CDCDescriptor; + +typedef struct +{ + InterfaceDescriptor msc; + EndpointDescriptor in; + EndpointDescriptor out; +} MSCDescriptor; + +typedef struct +{ + u8 len; // 9 + u8 dtype; // 0x21 + u8 addr; + u8 versionL; // 0x101 + u8 versionH; // 0x101 + u8 country; + u8 desctype; // 0x22 report + u8 descLenL; + u8 descLenH; +} HIDDescDescriptor; + +typedef struct +{ + InterfaceDescriptor hid; + HIDDescDescriptor desc; + EndpointDescriptor in; +} HIDDescriptor; + + +#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ + { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } + +#define D_CONFIG(_totalLength,_interfaces) \ + { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) } + +#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ + { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } + +#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ + { 7, 5, _addr,_attr,_packetSize, _interval } + +#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ + { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } + +#define D_HIDREPORT(_descriptorLength) \ + { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } + +#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } +#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 } + + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBDesc.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBDesc.h new file mode 100644 index 000000000..900713e0f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/USBDesc.h @@ -0,0 +1,63 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#define CDC_ENABLED +#define HID_ENABLED + + +#ifdef CDC_ENABLED +#define CDC_INTERFACE_COUNT 2 +#define CDC_ENPOINT_COUNT 3 +#else +#define CDC_INTERFACE_COUNT 0 +#define CDC_ENPOINT_COUNT 0 +#endif + +#ifdef HID_ENABLED +#define HID_INTERFACE_COUNT 1 +#define HID_ENPOINT_COUNT 1 +#else +#define HID_INTERFACE_COUNT 0 +#define HID_ENPOINT_COUNT 0 +#endif + +#define CDC_ACM_INTERFACE 0 // CDC ACM +#define CDC_DATA_INTERFACE 1 // CDC Data +#define CDC_FIRST_ENDPOINT 1 +#define CDC_ENDPOINT_ACM (CDC_FIRST_ENDPOINT) // CDC First +#define CDC_ENDPOINT_OUT (CDC_FIRST_ENDPOINT+1) +#define CDC_ENDPOINT_IN (CDC_FIRST_ENDPOINT+2) + +#define HID_INTERFACE (CDC_ACM_INTERFACE + CDC_INTERFACE_COUNT) // HID Interface +#define HID_FIRST_ENDPOINT (CDC_FIRST_ENDPOINT + CDC_ENPOINT_COUNT) +#define HID_ENDPOINT_INT (HID_FIRST_ENDPOINT) + +#define INTERFACE_COUNT (MSC_INTERFACE + MSC_INTERFACE_COUNT) + +#ifdef CDC_ENABLED +#define CDC_RX CDC_ENDPOINT_OUT +#define CDC_TX CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED +#define HID_TX HID_ENDPOINT_INT +#endif + +#define IMANUFACTURER 1 +#define IPRODUCT 2 + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Udp.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Udp.h new file mode 100644 index 000000000..dc5644b9d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/Udp.h @@ -0,0 +1,88 @@ +/* + * Udp.cpp: Library to send/receive UDP packets. + * + * NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these) + * 1) UDP does not guarantee the order in which assembled UDP packets are received. This + * might not happen often in practice, but in larger network topologies, a UDP + * packet can be received out of sequence. + * 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being + * aware of it. Again, this may not be a concern in practice on small local networks. + * For more information, see http://www.cafeaulait.org/course/week12/35.html + * + * MIT License: + * Copyright (c) 2008 Bjoern Hartmann + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * bjoern@cs.stanford.edu 12/30/2008 + */ + +#ifndef udp_h +#define udp_h + +#include +#include + +class UDP : public Stream { + +public: + virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use + virtual void stop() =0; // Finish with the UDP socket + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) =0; + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port) =0; + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() =0; + // Write a single byte into the packet + virtual size_t write(uint8_t) =0; + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size) =0; + + // Start processing the next available incoming packet + // Returns the size of the packet in bytes, or 0 if no packets are available + virtual int parsePacket() =0; + // Number of bytes remaining in the current packet + virtual int available() =0; + // Read a single byte from the current packet + virtual int read() =0; + // Read up to len bytes from the current packet and place them into buffer + // Returns the number of bytes read, or 0 if none are available + virtual int read(unsigned char* buffer, size_t len) =0; + // Read up to len characters from the current packet and place them into buffer + // Returns the number of characters read, or 0 if none are available + virtual int read(char* buffer, size_t len) =0; + // Return the next byte from the current packet without moving on to the next byte + virtual int peek() =0; + virtual void flush() =0; // Finish reading the current packet + + // Return the IP address of the host who sent the current incoming packet + virtual IPAddress remoteIP() =0; + // Return the port of the host who sent the current incoming packet + virtual uint16_t remotePort() =0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WCharacter.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WInterrupts.c b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WInterrupts.c new file mode 100644 index 000000000..62efc9cad --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WInterrupts.c @@ -0,0 +1,322 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include + +#include "wiring_private.h" + +static volatile voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(__AVR_ATmega32U4__) + // I hate doing this, but the register assignment differs between the 1280/2560 + // and the 32U4. Since avrlib defines registers PCMSK1 and PCMSK2 that aren't + // even present on the 32U4 this is the only way to distinguish between them. + case 0: + EICRA = (EICRA & ~((1<= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WString.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WString.cpp new file mode 100644 index 000000000..c6839fc0d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WString.cpp @@ -0,0 +1,645 @@ +/* + WString.cpp - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "WString.h" + + +/*********************************************/ +/* Constructors */ +/*********************************************/ + +String::String(const char *cstr) +{ + init(); + if (cstr) copy(cstr, strlen(cstr)); +} + +String::String(const String &value) +{ + init(); + *this = value; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String::String(String &&rval) +{ + init(); + move(rval); +} +String::String(StringSumHelper &&rval) +{ + init(); + move(rval); +} +#endif + +String::String(char c) +{ + init(); + char buf[2]; + buf[0] = c; + buf[1] = 0; + *this = buf; +} + +String::String(unsigned char value, unsigned char base) +{ + init(); + char buf[9]; + utoa(value, buf, base); + *this = buf; +} + +String::String(int value, unsigned char base) +{ + init(); + char buf[18]; + itoa(value, buf, base); + *this = buf; +} + +String::String(unsigned int value, unsigned char base) +{ + init(); + char buf[17]; + utoa(value, buf, base); + *this = buf; +} + +String::String(long value, unsigned char base) +{ + init(); + char buf[34]; + ltoa(value, buf, base); + *this = buf; +} + +String::String(unsigned long value, unsigned char base) +{ + init(); + char buf[33]; + ultoa(value, buf, base); + *this = buf; +} + +String::~String() +{ + free(buffer); +} + +/*********************************************/ +/* Memory Management */ +/*********************************************/ + +inline void String::init(void) +{ + buffer = NULL; + capacity = 0; + len = 0; + flags = 0; +} + +void String::invalidate(void) +{ + if (buffer) free(buffer); + buffer = NULL; + capacity = len = 0; +} + +unsigned char String::reserve(unsigned int size) +{ + if (buffer && capacity >= size) return 1; + if (changeBuffer(size)) { + if (len == 0) buffer[0] = 0; + return 1; + } + return 0; +} + +unsigned char String::changeBuffer(unsigned int maxStrLen) +{ + char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); + if (newbuffer) { + buffer = newbuffer; + capacity = maxStrLen; + return 1; + } + return 0; +} + +/*********************************************/ +/* Copy and Move */ +/*********************************************/ + +String & String::copy(const char *cstr, unsigned int length) +{ + if (!reserve(length)) { + invalidate(); + return *this; + } + len = length; + strcpy(buffer, cstr); + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +void String::move(String &rhs) +{ + if (buffer) { + if (capacity >= rhs.len) { + strcpy(buffer, rhs.buffer); + len = rhs.len; + rhs.len = 0; + return; + } else { + free(buffer); + } + } + buffer = rhs.buffer; + capacity = rhs.capacity; + len = rhs.len; + rhs.buffer = NULL; + rhs.capacity = 0; + rhs.len = 0; +} +#endif + +String & String::operator = (const String &rhs) +{ + if (this == &rhs) return *this; + + if (rhs.buffer) copy(rhs.buffer, rhs.len); + else invalidate(); + + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String & String::operator = (String &&rval) +{ + if (this != &rval) move(rval); + return *this; +} + +String & String::operator = (StringSumHelper &&rval) +{ + if (this != &rval) move(rval); + return *this; +} +#endif + +String & String::operator = (const char *cstr) +{ + if (cstr) copy(cstr, strlen(cstr)); + else invalidate(); + + return *this; +} + +/*********************************************/ +/* concat */ +/*********************************************/ + +unsigned char String::concat(const String &s) +{ + return concat(s.buffer, s.len); +} + +unsigned char String::concat(const char *cstr, unsigned int length) +{ + unsigned int newlen = len + length; + if (!cstr) return 0; + if (length == 0) return 1; + if (!reserve(newlen)) return 0; + strcpy(buffer + len, cstr); + len = newlen; + return 1; +} + +unsigned char String::concat(const char *cstr) +{ + if (!cstr) return 0; + return concat(cstr, strlen(cstr)); +} + +unsigned char String::concat(char c) +{ + char buf[2]; + buf[0] = c; + buf[1] = 0; + return concat(buf, 1); +} + +unsigned char String::concat(unsigned char num) +{ + char buf[4]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(int num) +{ + char buf[7]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned int num) +{ + char buf[6]; + utoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(long num) +{ + char buf[12]; + ltoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned long num) +{ + char buf[11]; + ultoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +/*********************************************/ +/* Concatenate */ +/*********************************************/ + +StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(rhs.buffer, rhs.len)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr) +{ + StringSumHelper &a = const_cast(lhs); + if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, char c) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(c)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +/*********************************************/ +/* Comparison */ +/*********************************************/ + +int String::compareTo(const String &s) const +{ + if (!buffer || !s.buffer) { + if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer; + if (buffer && len > 0) return *(unsigned char *)buffer; + return 0; + } + return strcmp(buffer, s.buffer); +} + +unsigned char String::equals(const String &s2) const +{ + return (len == s2.len && compareTo(s2) == 0); +} + +unsigned char String::equals(const char *cstr) const +{ + if (len == 0) return (cstr == NULL || *cstr == 0); + if (cstr == NULL) return buffer[0] == 0; + return strcmp(buffer, cstr) == 0; +} + +unsigned char String::operator<(const String &rhs) const +{ + return compareTo(rhs) < 0; +} + +unsigned char String::operator>(const String &rhs) const +{ + return compareTo(rhs) > 0; +} + +unsigned char String::operator<=(const String &rhs) const +{ + return compareTo(rhs) <= 0; +} + +unsigned char String::operator>=(const String &rhs) const +{ + return compareTo(rhs) >= 0; +} + +unsigned char String::equalsIgnoreCase( const String &s2 ) const +{ + if (this == &s2) return 1; + if (len != s2.len) return 0; + if (len == 0) return 1; + const char *p1 = buffer; + const char *p2 = s2.buffer; + while (*p1) { + if (tolower(*p1++) != tolower(*p2++)) return 0; + } + return 1; +} + +unsigned char String::startsWith( const String &s2 ) const +{ + if (len < s2.len) return 0; + return startsWith(s2, 0); +} + +unsigned char String::startsWith( const String &s2, unsigned int offset ) const +{ + if (offset > len - s2.len || !buffer || !s2.buffer) return 0; + return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0; +} + +unsigned char String::endsWith( const String &s2 ) const +{ + if ( len < s2.len || !buffer || !s2.buffer) return 0; + return strcmp(&buffer[len - s2.len], s2.buffer) == 0; +} + +/*********************************************/ +/* Character Access */ +/*********************************************/ + +char String::charAt(unsigned int loc) const +{ + return operator[](loc); +} + +void String::setCharAt(unsigned int loc, char c) +{ + if (loc < len) buffer[loc] = c; +} + +char & String::operator[](unsigned int index) +{ + static char dummy_writable_char; + if (index >= len || !buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return buffer[index]; +} + +char String::operator[]( unsigned int index ) const +{ + if (index >= len || !buffer) return 0; + return buffer[index]; +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const +{ + if (!bufsize || !buf) return; + if (index >= len) { + buf[0] = 0; + return; + } + unsigned int n = bufsize - 1; + if (n > len - index) n = len - index; + strncpy((char *)buf, buffer + index, n); + buf[n] = 0; +} + +/*********************************************/ +/* Search */ +/*********************************************/ + +int String::indexOf(char c) const +{ + return indexOf(c, 0); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if (fromIndex >= len) return -1; + const char* temp = strchr(buffer + fromIndex, ch); + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::indexOf(const String &s2) const +{ + return indexOf(s2, 0); +} + +int String::indexOf(const String &s2, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + const char *found = strstr(buffer + fromIndex, s2.buffer); + if (found == NULL) return -1; + return found - buffer; +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf(theChar, len - 1); +} + +int String::lastIndexOf(char ch, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + char tempchar = buffer[fromIndex + 1]; + buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( buffer, ch ); + buffer[fromIndex + 1] = tempchar; + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::lastIndexOf(const String &s2) const +{ + return lastIndexOf(s2, len - s2.len); +} + +int String::lastIndexOf(const String &s2, unsigned int fromIndex) const +{ + if (s2.len == 0 || len == 0 || s2.len > len) return -1; + if (fromIndex >= len) fromIndex = len - 1; + int found = -1; + for (char *p = buffer; p <= buffer + fromIndex; p++) { + p = strstr(p, s2.buffer); + if (!p) break; + if ((unsigned int)(p - buffer) <= fromIndex) found = p - buffer; + } + return found; +} + +String String::substring( unsigned int left ) const +{ + return substring(left, len); +} + +String String::substring(unsigned int left, unsigned int right) const +{ + if (left > right) { + unsigned int temp = right; + right = left; + left = temp; + } + String out; + if (left > len) return out; + if (right > len) right = len; + char temp = buffer[right]; // save the replaced character + buffer[right] = '\0'; + out = buffer + left; // pointer arithmetic + buffer[right] = temp; //restore character + return out; +} + +/*********************************************/ +/* Modification */ +/*********************************************/ + +void String::replace(char find, char replace) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + if (*p == find) *p = replace; + } +} + +void String::replace(const String& find, const String& replace) +{ + if (len == 0 || find.len == 0) return; + int diff = replace.len - find.len; + char *readFrom = buffer; + char *foundAt; + if (diff == 0) { + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + memcpy(foundAt, replace.buffer, replace.len); + readFrom = foundAt + replace.len; + } + } else if (diff < 0) { + char *writeTo = buffer; + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + unsigned int n = foundAt - readFrom; + memcpy(writeTo, readFrom, n); + writeTo += n; + memcpy(writeTo, replace.buffer, replace.len); + writeTo += replace.len; + readFrom = foundAt + find.len; + len += diff; + } + strcpy(writeTo, readFrom); + } else { + unsigned int size = len; // compute size needed for result + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + readFrom = foundAt + find.len; + size += diff; + } + if (size == len) return; + if (size > capacity && !changeBuffer(size)) return; // XXX: tell user! + int index = len - 1; + while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) { + readFrom = buffer + index + find.len; + memmove(readFrom + diff, readFrom, len - (readFrom - buffer)); + len += diff; + buffer[len] = 0; + memcpy(buffer + index, replace.buffer, replace.len); + index--; + } + } +} + +void String::toLowerCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = tolower(*p); + } +} + +void String::toUpperCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = toupper(*p); + } +} + +void String::trim(void) +{ + if (!buffer || len == 0) return; + char *begin = buffer; + while (isspace(*begin)) begin++; + char *end = buffer + len - 1; + while (isspace(*end) && end >= begin) end--; + len = end + 1 - begin; + if (begin > buffer) memcpy(buffer, begin, len); + buffer[len] = 0; +} + +/*********************************************/ +/* Parsing / Conversion */ +/*********************************************/ + +long String::toInt(void) const +{ + if (buffer) return atol(buffer); + return 0; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WString.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WString.h new file mode 100644 index 000000000..947325e5f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/WString.h @@ -0,0 +1,205 @@ +/* + WString.h - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_class_h +#define String_class_h +#ifdef __cplusplus + +#include +#include +#include +#include + +// When compiling programs with this class, the following gcc parameters +// dramatically increase performance and memory (RAM) efficiency, typically +// with little or no increase in code size. +// -felide-constructors +// -std=c++0x + +class __FlashStringHelper; +#define F(string_literal) (reinterpret_cast(PSTR(string_literal))) + +// An inherited class for holding the result of a concatenation. These +// result objects are assumed to be writable by subsequent concatenations. +class StringSumHelper; + +// The string class +class String +{ + // use a function pointer to allow for "if (s)" without the + // complications of an operator bool(). for more information, see: + // http://www.artima.com/cppsource/safebool.html + typedef void (String::*StringIfHelperType)() const; + void StringIfHelper() const {} + +public: + // constructors + // creates a copy of the initial value. + // if the initial value is null or invalid, or if memory allocation + // fails, the string will be marked as invalid (i.e. "if (s)" will + // be false). + String(const char *cstr = ""); + String(const String &str); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String(String &&rval); + String(StringSumHelper &&rval); + #endif + explicit String(char c); + explicit String(unsigned char, unsigned char base=10); + explicit String(int, unsigned char base=10); + explicit String(unsigned int, unsigned char base=10); + explicit String(long, unsigned char base=10); + explicit String(unsigned long, unsigned char base=10); + ~String(void); + + // memory management + // return true on success, false on failure (in which case, the string + // is left unchanged). reserve(0), if successful, will validate an + // invalid string (i.e., "if (s)" will be true afterwards) + unsigned char reserve(unsigned int size); + inline unsigned int length(void) const {return len;} + + // creates a copy of the assigned value. if the value is null or + // invalid, or if the memory allocation fails, the string will be + // marked as invalid ("if (s)" will be false). + String & operator = (const String &rhs); + String & operator = (const char *cstr); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String & operator = (String &&rval); + String & operator = (StringSumHelper &&rval); + #endif + + // concatenate (works w/ built-in types) + + // returns true on success, false on failure (in which case, the string + // is left unchanged). if the argument is null or invalid, the + // concatenation is considered unsucessful. + unsigned char concat(const String &str); + unsigned char concat(const char *cstr); + unsigned char concat(char c); + unsigned char concat(unsigned char c); + unsigned char concat(int num); + unsigned char concat(unsigned int num); + unsigned char concat(long num); + unsigned char concat(unsigned long num); + + // if there's not enough memory for the concatenated value, the string + // will be left unchanged (but this isn't signalled in any way) + String & operator += (const String &rhs) {concat(rhs); return (*this);} + String & operator += (const char *cstr) {concat(cstr); return (*this);} + String & operator += (char c) {concat(c); return (*this);} + String & operator += (unsigned char num) {concat(num); return (*this);} + String & operator += (int num) {concat(num); return (*this);} + String & operator += (unsigned int num) {concat(num); return (*this);} + String & operator += (long num) {concat(num); return (*this);} + String & operator += (unsigned long num) {concat(num); return (*this);} + + friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs); + friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr); + friend StringSumHelper & operator + (const StringSumHelper &lhs, char c); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, long num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num); + + // comparison (only works w/ Strings and "strings") + operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; } + int compareTo(const String &s) const; + unsigned char equals(const String &s) const; + unsigned char equals(const char *cstr) const; + unsigned char operator == (const String &rhs) const {return equals(rhs);} + unsigned char operator == (const char *cstr) const {return equals(cstr);} + unsigned char operator != (const String &rhs) const {return !equals(rhs);} + unsigned char operator != (const char *cstr) const {return !equals(cstr);} + unsigned char operator < (const String &rhs) const; + unsigned char operator > (const String &rhs) const; + unsigned char operator <= (const String &rhs) const; + unsigned char operator >= (const String &rhs) const; + unsigned char equalsIgnoreCase(const String &s) const; + unsigned char startsWith( const String &prefix) const; + unsigned char startsWith(const String &prefix, unsigned int offset) const; + unsigned char endsWith(const String &suffix) const; + + // character acccess + char charAt(unsigned int index) const; + void setCharAt(unsigned int index, char c); + char operator [] (unsigned int index) const; + char& operator [] (unsigned int index); + void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const; + void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const + {getBytes((unsigned char *)buf, bufsize, index);} + + // search + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + + // modification + void replace(char find, char replace); + void replace(const String& find, const String& replace); + void toLowerCase(void); + void toUpperCase(void); + void trim(void); + + // parsing/conversion + long toInt(void) const; + +protected: + char *buffer; // the actual char array + unsigned int capacity; // the array length minus one (for the '\0') + unsigned int len; // the String length (not counting the '\0') + unsigned char flags; // unused, for future features +protected: + void init(void); + void invalidate(void); + unsigned char changeBuffer(unsigned int maxStrLen); + unsigned char concat(const char *cstr, unsigned int length); + + // copy and move + String & copy(const char *cstr, unsigned int length); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + void move(String &rhs); + #endif +}; + +class StringSumHelper : public String +{ +public: + StringSumHelper(const String &s) : String(s) {} + StringSumHelper(const char *p) : String(p) {} + StringSumHelper(char c) : String(c) {} + StringSumHelper(unsigned char num) : String(num) {} + StringSumHelper(int num) : String(num) {} + StringSumHelper(unsigned int num) : String(num) {} + StringSumHelper(long num) : String(num) {} + StringSumHelper(unsigned long num) : String(num) {} +}; + +#endif // __cplusplus +#endif // String_class_h diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/binary.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/main.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/main.cpp new file mode 100644 index 000000000..3d4e079d2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/main.cpp @@ -0,0 +1,20 @@ +#include + +int main(void) +{ + init(); + +#if defined(USBCON) + USBDevice.attach(); +#endif + + setup(); + + for (;;) { + loop(); + if (serialEventRun) serialEventRun(); + } + + return 0; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/new.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/new.cpp new file mode 100644 index 000000000..0f6d4220e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/new.cpp @@ -0,0 +1,18 @@ +#include + +void * operator new(size_t size) +{ + return malloc(size); +} + +void operator delete(void * ptr) +{ + free(ptr); +} + +int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; +void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; +void __cxa_guard_abort (__guard *) {}; + +void __cxa_pure_virtual(void) {}; + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/new.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/new.h new file mode 100644 index 000000000..cd940ce8b --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/new.h @@ -0,0 +1,22 @@ +/* Header to define new/delete operators as they aren't provided by avr-gcc by default + Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453 + */ + +#ifndef NEW_H +#define NEW_H + +#include + +void * operator new(size_t size); +void operator delete(void * ptr); + +__extension__ typedef int __guard __attribute__((mode (__DI__))); + +extern "C" int __cxa_guard_acquire(__guard *); +extern "C" void __cxa_guard_release (__guard *); +extern "C" void __cxa_guard_abort (__guard *); + +extern "C" void __cxa_pure_virtual(void); + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring.c b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring.c new file mode 100644 index 000000000..ac8bb6f9b --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring.c @@ -0,0 +1,324 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) +SIGNAL(TIM0_OVF_vect) +#else +SIGNAL(TIMER0_OVF_vect) +#endif +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); +#if F_CPU >= 20000000L + // for the 20 MHz clock on rare Arduino boards + + // for a one-microsecond delay, simply wait 2 cycle and return. The overhead + // of the function call yields a delay of exactly a one microsecond. + __asm__ __volatile__ ( + "nop" "\n\t" + "nop"); //just waiting 2 cycle + if (--us == 0) + return; + + // the following loop takes a 1/5 of a microsecond (4 cycles) + // per iteration, so execute it five times for each microsecond of + // delay requested. + us = (us<<2) + us; // x5 us + + // account for the time taken in the preceeding commands. + us -= 2; + +#elif F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + TCCR1B = 0; + + // set timer 1 prescale factor to 64 + sbi(TCCR1B, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1B, CS10); +#endif +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1, CS10); +#endif +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4A) && defined(TCCR4B) && defined(TCCR4D) /* beginning of timer4 block for 32U4 and similar */ + sbi(TCCR4B, CS42); // set timer4 prescale factor to 64 + sbi(TCCR4B, CS41); + sbi(TCCR4B, CS40); + sbi(TCCR4D, WGM40); // put timer 4 in phase- and frequency-correct PWM mode + sbi(TCCR4A, PWM4A); // enable PWM mode for comparator OCR4A + sbi(TCCR4C, PWM4D); // enable PWM mode for comparator OCR4D +#else /* beginning of timer4 block for ATMEGA1280 and ATMEGA2560 */ +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif +#endif /* end timer4 block for ATMEGA1280/2560 and similar */ + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_analog.c b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_analog.c new file mode 100644 index 000000000..23b01c65a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_analog.c @@ -0,0 +1,282 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#elif defined(__AVR_ATmega32U4__) + if (pin >= 18) pin -= 18; // allow for channel or pin numbers +#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if (pin >= 24) pin -= 24; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(__AVR_ATmega32U4__) + pin = analogPinToChannel(pin); + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#elif defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) + case TIMER4A: + //connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + #if defined(COM4A0) // only used on 32U4 + cbi(TCCR4A, COM4A0); + #endif + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4C) && defined(COM4D1) + case TIMER4D: + // connect pwm to pin on timer 4, channel D + sbi(TCCR4C, COM4D1); + #if defined(COM4D0) // only used on 32U4 + cbi(TCCR4C, COM4D0); + #endif + OCR4D = val; // set pwm duty + break; + #endif + + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_digital.c b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_digital.c new file mode 100644 index 000000000..be323b1df --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_digital.c @@ -0,0 +1,178 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#define ARDUINO_MAIN +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg, *out; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + out = portOutputRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + *out &= ~bit; + SREG = oldSREG; + } else if (mode == INPUT_PULLUP) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + *out |= bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +//static inline void turnOffPWM(uint8_t timer) +static void turnOffPWM(uint8_t timer) +{ + switch (timer) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR4C) && defined(COM4D1) + case TIMER4D: cbi(TCCR4C, COM4D1); break; + #endif + + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + uint8_t oldSREG = SREG; + cli(); + + if (val == LOW) { + *out &= ~bit; + } else { + *out |= bit; + } + + SREG = oldSREG; +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_private.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_private.h new file mode 100644 index 000000000..f67826567 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_private.h @@ -0,0 +1,71 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) +#define EXTERNAL_NUM_INTERRUPTS 3 +#elif defined(__AVR_ATmega32U4__) +#define EXTERNAL_NUM_INTERRUPTS 4 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_pulse.c b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_pulse.c new file mode 100644 index 000000000..0d968865d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_shift.c b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_shift.c new file mode 100644 index 000000000..cfe786758 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/cores/arduino/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/variants/standard/pins_arduino.h b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/variants/standard/pins_arduino.h new file mode 100644 index 000000000..499952dc9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/Sanguino/variants/standard/pins_arduino.h @@ -0,0 +1,285 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ + + Changelog + ----------- + 11/25/11 - ryan@ryanmsutton.com - Add pins for Sanguino 644P and 1284P + 07/15/12 - ryan@ryanmsutton.com - Updated for arduino0101 +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER5A 14 +#define TIMER5B 15 +#define TIMER5C 16 + +const static uint8_t SS = 4; +const static uint8_t MOSI = 5; +const static uint8_t MISO = 6; +const static uint8_t SCK = 7; + +static const uint8_t SDA = 17; +static const uint8_t SCL = 16; +static const uint8_t LED_BUILTIN = 13; + +static const uint8_t A0 = 31; +static const uint8_t A1 = 30; +static const uint8_t A2 = 29; +static const uint8_t A3 = 28; +static const uint8_t A4 = 27; +static const uint8_t A5 = 26; +static const uint8_t A6 = 25; +static const uint8_t A7 = 24; + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +// extern const uint16_t PROGMEM port_to_mode_PGM[]; +// extern const uint16_t PROGMEM port_to_input_PGM[]; +// extern const uint16_t PROGMEM port_to_output_PGM[]; + +// extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// ATMEL ATMEGA644P / SANGUINO +// +// +---\/---+ +// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31) +// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30) +// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) +// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) +// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) +// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) +// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) +// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) +// RST 9| |32 AREF +// VCC 10| |31 GND +// GND 11| |30 AVCC +// XTAL2 12| |29 PC7 (D 23) +// XTAL1 13| |28 PC6 (D 22) +// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI +// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO +// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS +// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK +// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA +// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL +// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM +// +--------+ +// +#define NUM_DIGITAL_PINS 24 +#define NUM_ANALOG_INPUTS 8 +#define analogInputToDigitalPin(p) ((p < 7) ? (p) + 24 : -1) + +#define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 12 || (p) == 13 || (p) == 14 || (p) == 15 ) + +#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) ) + +#define digitalPinToPCICRbit(p) ( (((p) >= 24) && ((p) <= 31)) ? 0 : \ + ( (((p) >= 0) && ((p) <= 7)) ? 1 : \ + ( (((p) >= 16) && ((p) <= 23)) ? 2 : \ + ( (((p) >= 8) && ((p) <= 15)) ? 3 : \ + 0 ) ) ) ) + +#define digitalPinToPCMSK(p) ( (((p) >= 24) && ((p) <= 31)) ? (&PCMSK0) : \ + ( (((p) >= 0) && ((p) <= 7)) ? (&PCMSK1) : \ + ( (((p) >= 16) && ((p) <= 23)) ? (&PCMSK2) : \ + ( (((p) >= 8) && ((p) <= 15)) ? (&PCMSK3) : \ + ((uint8_t *)0) ) ) ) ) + + +#define digitalPinToPCMSKbit(p) ( (((p) >= 24) && ((p) <= 31)) ? (31 - (p)) : \ + ( (((p) >= 0) && ((p) <= 7)) ? (p) : \ + ( (((p) >= 16) && ((p) <= 23)) ? ((p) - 16) : \ + ( (((p) >= 8) && ((p) <= 15)) ? ((p) - 8) : \ + 0 ) ) ) ) + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 + +#ifdef ARDUINO_MAIN +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &DDRA, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &PORTA, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, +}; +const uint16_t PROGMEM port_to_input_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, +}; +const uint8_t PROGMEM digital_pin_to_port_PGM[] = +{ + PB, /* 0 */ + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PD, /* 8 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PC, /* 16 */ + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PA, /* 24 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA /* 31 */ +}; +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = +{ + _BV(0), /* 0, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 16, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(7), /* 24, port A */ + _BV(6), + _BV(5), + _BV(4), + _BV(3), + _BV(2), + _BV(1), + _BV(0) +}; +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = +{ + NOT_ON_TIMER, /* 0 - PB0 */ + NOT_ON_TIMER, /* 1 - PB1 */ + NOT_ON_TIMER, /* 2 - PB2 */ + TIMER0A, /* 3 - PB3 */ + TIMER0B, /* 4 - PB4 */ + NOT_ON_TIMER, /* 5 - PB5 */ + NOT_ON_TIMER, /* 6 - PB6 */ + NOT_ON_TIMER, /* 7 - PB7 */ + NOT_ON_TIMER, /* 8 - PD0 */ + NOT_ON_TIMER, /* 9 - PD1 */ + NOT_ON_TIMER, /* 10 - PD2 */ + NOT_ON_TIMER, /* 11 - PD3 */ + TIMER1B, /* 12 - PD4 */ + TIMER1A, /* 13 - PD5 */ + TIMER2B, /* 14 - PD6 */ + TIMER2A, /* 15 - PD7 */ + NOT_ON_TIMER, /* 16 - PC0 */ + NOT_ON_TIMER, /* 17 - PC1 */ + NOT_ON_TIMER, /* 18 - PC2 */ + NOT_ON_TIMER, /* 19 - PC3 */ + NOT_ON_TIMER, /* 20 - PC4 */ + NOT_ON_TIMER, /* 21 - PC5 */ + NOT_ON_TIMER, /* 22 - PC6 */ + NOT_ON_TIMER, /* 23 - PC7 */ + NOT_ON_TIMER, /* 24 - PA0 */ + NOT_ON_TIMER, /* 25 - PA1 */ + NOT_ON_TIMER, /* 26 - PA2 */ + NOT_ON_TIMER, /* 27 - PA3 */ + NOT_ON_TIMER, /* 28 - PA4 */ + NOT_ON_TIMER, /* 29 - PA5 */ + NOT_ON_TIMER, /* 30 - PA6 */ + NOT_ON_TIMER /* 31 - PA7 */ +}; +#endif +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/boards.txt b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/boards.txt new file mode 100644 index 000000000..d0901653c --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/boards.txt @@ -0,0 +1,22 @@ +# See: http://code.google.com/p/arduino/wiki/Platforms + +############################################################## + +mega2560.name=RAMBo + +mega2560.upload.protocol=wiring +mega2560.upload.maximum_size=258048 +mega2560.upload.speed=115200 + +mega2560.bootloader.low_fuses=0xFF +mega2560.bootloader.high_fuses=0xD8 +mega2560.bootloader.extended_fuses=0xFD +mega2560.bootloader.path=stk500v2 +mega2560.bootloader.file=stk500boot_v2_mega2560.hex +mega2560.bootloader.unlock_bits=0x3F +mega2560.bootloader.lock_bits=0x0F + +mega2560.build.mcu=atmega2560 +mega2560.build.f_cpu=16000000L +mega2560.build.core=arduino +mega2560.build.variant=standard diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Arduino.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Arduino.h new file mode 100644 index 000000000..b26582589 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Arduino.h @@ -0,0 +1,215 @@ +#ifndef Arduino_h +#define Arduino_h + +#include +#include +#include + +#include +#include +#include + +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 +#define INPUT_PULLUP 0x2 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) +#define DEFAULT 0 +#define EXTERNAL 1 +#define INTERNAL 2 +#else +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 +#endif + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() ) +#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. + +#define analogInPinToBit(P) (P) + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#ifdef ARDUINO_MAIN +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 +#endif + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER4D 14 +#define TIMER5A 15 +#define TIMER5B 16 +#define TIMER5C 17 + +#ifdef __cplusplus +} // extern "C" +#endif + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#endif + +#include "pins_arduino.h" + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/CDC.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/CDC.cpp new file mode 100644 index 000000000..701e48398 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/CDC.cpp @@ -0,0 +1,239 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include + +#if defined(USBCON) +#ifdef CDC_ENABLED + +#if (RAMEND < 1000) +#define SERIAL_BUFFER_SIZE 16 +#else +#define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile int head; + volatile int tail; +}; + +ring_buffer cdc_rx_buffer = { { 0 }, 0, 0}; + +typedef struct +{ + u32 dwDTERate; + u8 bCharFormat; + u8 bParityType; + u8 bDataBits; + u8 lineState; +} LineInfo; + +static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; + +#define WEAK __attribute__ ((weak)) + +extern const CDCDescriptor _cdcInterface PROGMEM; +const CDCDescriptor _cdcInterface = +{ + D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1), + + // CDC communication interface + D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0), + D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd) + D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management (not) + D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,6), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported + D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0 + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40), + + // CDC data interface + D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0), + D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0), + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0) +}; + +int WEAK CDC_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 2; // uses 2 + return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface)); +} + +bool WEAK CDC_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (CDC_GET_LINE_CODING == r) + { + USB_SendControl(0,(void*)&_usbLineInfo,7); + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (CDC_SET_LINE_CODING == r) + { + USB_RecvControl((void*)&_usbLineInfo,7); + return true; + } + + if (CDC_SET_CONTROL_LINE_STATE == r) + { + _usbLineInfo.lineState = setup.wValueL; + + // auto-reset into the bootloader is triggered when the port, already + // open at 1200 bps, is closed. this is the signal to start the watchdog + // with a relatively long period so it can finish housekeeping tasks + // like servicing endpoints before the sketch ends + if (1200 == _usbLineInfo.dwDTERate) { + // We check DTR state to determine if host port is open (bit 0 of lineState). + if ((_usbLineInfo.lineState & 0x01) == 0) { + *(uint16_t *)0x0800 = 0x7777; + wdt_enable(WDTO_120MS); + } else { + // Most OSs do some intermediate steps when configuring ports and DTR can + // twiggle more than once before stabilizing. + // To avoid spurious resets we set the watchdog to 250ms and eventually + // cancel if DTR goes back high. + + wdt_disable(); + wdt_reset(); + *(uint16_t *)0x0800 = 0x0; + } + } + return true; + } + } + return false; +} + + +int _serialPeek = -1; +void Serial_::begin(uint16_t baud_count) +{ +} + +void Serial_::end(void) +{ +} + +void Serial_::accept(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + + // while we have room to store a byte + while (i != buffer->tail) { + int c = USB_Recv(CDC_RX); + if (c == -1) + break; // no more data + buffer->buffer[buffer->head] = c; + buffer->head = i; + + i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE; + } +} + +int Serial_::available(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + return (unsigned int)(SERIAL_BUFFER_SIZE + buffer->head - buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int Serial_::peek(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + if (buffer->head == buffer->tail) { + return -1; + } else { + return buffer->buffer[buffer->tail]; + } +} + +int Serial_::read(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + // if the head isn't ahead of the tail, we don't have any characters + if (buffer->head == buffer->tail) { + return -1; + } else { + unsigned char c = buffer->buffer[buffer->tail]; + buffer->tail = (unsigned int)(buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void Serial_::flush(void) +{ + USB_Flush(CDC_TX); +} + +size_t Serial_::write(uint8_t c) +{ + /* only try to send bytes if the high-level CDC connection itself + is open (not just the pipe) - the OS should set lineState when the port + is opened and clear lineState when the port is closed. + bytes sent before the user opens the connection or after + the connection is closed are lost - just like with a UART. */ + + // TODO - ZE - check behavior on different OSes and test what happens if an + // open connection isn't broken cleanly (cable is yanked out, host dies + // or locks up, or host virtual serial port hangs) + if (_usbLineInfo.lineState > 0) { + int r = USB_Send(CDC_TX,&c,1); + if (r > 0) { + return r; + } else { + setWriteError(); + return 0; + } + } + setWriteError(); + return 0; +} + +// This operator is a convenient way for a sketch to check whether the +// port has actually been configured and opened by the host (as opposed +// to just being connected to the host). It can be used, for example, in +// setup() before printing to ensure that an application on the host is +// actually ready to receive and display the data. +// We add a short delay before returning to fix a bug observed by Federico +// where the port is configured (lineState != 0) but not quite opened. +Serial_::operator bool() { + bool result = false; + if (_usbLineInfo.lineState > 0) + result = true; + delay(10); + return result; +} + +Serial_ Serial; + +#endif +#endif /* if defined(USBCON) */ diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Client.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Client.h new file mode 100644 index 000000000..ea134838a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Client.h @@ -0,0 +1,26 @@ +#ifndef client_h +#define client_h +#include "Print.h" +#include "Stream.h" +#include "IPAddress.h" + +class Client : public Stream { + +public: + virtual int connect(IPAddress ip, uint16_t port) =0; + virtual int connect(const char *host, uint16_t port) =0; + virtual size_t write(uint8_t) =0; + virtual size_t write(const uint8_t *buf, size_t size) =0; + virtual int available() = 0; + virtual int read() = 0; + virtual int read(uint8_t *buf, size_t size) = 0; + virtual int peek() = 0; + virtual void flush() = 0; + virtual void stop() = 0; + virtual uint8_t connected() = 0; + virtual operator bool() = 0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HID.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HID.cpp new file mode 100644 index 000000000..ac6360844 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HID.cpp @@ -0,0 +1,520 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) +#ifdef HID_ENABLED + +//#define RAWHID_ENABLED + +// Singletons for mouse and keyboard + +Mouse_ Mouse; +Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ + +// HID report descriptor + +#define LSB(_x) ((_x) & 0xFF) +#define MSB(_x) ((_x) >> 8) + +#define RAWHID_USAGE_PAGE 0xFFC0 +#define RAWHID_USAGE 0x0C00 +#define RAWHID_TX_SIZE 64 +#define RAWHID_RX_SIZE 64 + +extern const u8 _hidReportDescriptor[] PROGMEM; +const u8 _hidReportDescriptor[] = { + + // Mouse + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54 + 0x09, 0x02, // USAGE (Mouse) + 0xa1, 0x01, // COLLECTION (Application) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x85, 0x01, // REPORT_ID (1) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x01, // USAGE_MINIMUM (Button 1) + 0x29, 0x03, // USAGE_MAXIMUM (Button 3) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x95, 0x03, // REPORT_COUNT (3) + 0x75, 0x01, // REPORT_SIZE (1) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x05, // REPORT_SIZE (5) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x30, // USAGE (X) + 0x09, 0x31, // USAGE (Y) + 0x09, 0x38, // USAGE (Wheel) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) + 0x75, 0x08, // REPORT_SIZE (8) + 0x95, 0x03, // REPORT_COUNT (3) + 0x81, 0x06, // INPUT (Data,Var,Rel) + 0xc0, // END_COLLECTION + 0xc0, // END_COLLECTION + + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, 0x02, // REPORT_ID (2) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x65, // LOGICAL_MAXIMUM (101) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0, // END_COLLECTION + +#if RAWHID_ENABLED + // RAW HID + 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 + 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), + + 0xA1, 0x01, // Collection 0x01 + 0x85, 0x03, // REPORT_ID (3) + 0x75, 0x08, // report size = 8 bits + 0x15, 0x00, // logical minimum = 0 + 0x26, 0xFF, 0x00, // logical maximum = 255 + + 0x95, 64, // report count TX + 0x09, 0x01, // usage + 0x81, 0x02, // Input (array) + + 0x95, 64, // report count RX + 0x09, 0x02, // usage + 0x91, 0x02, // Output (array) + 0xC0 // end collection +#endif +}; + +extern const HIDDescriptor _hidInterface PROGMEM; +const HIDDescriptor _hidInterface = +{ + D_INTERFACE(HID_INTERFACE,1,3,0,0), + D_HIDREPORT(sizeof(_hidReportDescriptor)), + D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01) +}; + +//================================================================================ +//================================================================================ +// Driver + +u8 _hid_protocol = 1; +u8 _hid_idle = 1; + +#define WEAK __attribute__ ((weak)) + +int WEAK HID_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 1; // uses 1 + return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface)); +} + +int WEAK HID_GetDescriptor(int i) +{ + return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor)); +} + +void WEAK HID_SendReport(u8 id, const void* data, int len) +{ + USB_Send(HID_TX, &id, 1); + USB_Send(HID_TX | TRANSFER_RELEASE,data,len); +} + +bool WEAK HID_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (HID_GET_REPORT == r) + { + //HID_GetReport(); + return true; + } + if (HID_GET_PROTOCOL == r) + { + //Send8(_hid_protocol); // TODO + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (HID_SET_PROTOCOL == r) + { + _hid_protocol = setup.wValueL; + return true; + } + + if (HID_SET_IDLE == r) + { + _hid_idle = setup.wValueL; + return true; + } + } + return false; +} + +//================================================================================ +//================================================================================ +// Mouse + +Mouse_::Mouse_(void) : _buttons(0) +{ +} + +void Mouse_::begin(void) +{ +} + +void Mouse_::end(void) +{ +} + +void Mouse_::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void Mouse_::move(signed char x, signed char y, signed char wheel) +{ + u8 m[4]; + m[0] = _buttons; + m[1] = x; + m[2] = y; + m[3] = wheel; + HID_SendReport(1,m,4); +} + +void Mouse_::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void Mouse_::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void Mouse_::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool Mouse_::isPressed(uint8_t b) +{ + if ((b & _buttons) > 0) + return true; + return false; +} + +//================================================================================ +//================================================================================ +// Keyboard + +Keyboard_::Keyboard_(void) +{ +} + +void Keyboard_::begin(void) +{ +} + +void Keyboard_::end(void) +{ +} + +void Keyboard_::sendReport(KeyReport* keys) +{ + HID_SendReport(2,keys,sizeof(KeyReport)); +} + +extern +const uint8_t _asciimap[128] PROGMEM; + +#define SHIFT 0x80 +const uint8_t _asciimap[128] = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + +uint8_t USBPutChar(uint8_t c); + +// press() adds the specified key (printing, non-printing, or modifier) +// to the persistent key report and sends the report. Because of the way +// USB HID works, the host acts like the key remains pressed until we +// call release(), releaseAll(), or otherwise clear the report and resend. +size_t Keyboard_::press(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers |= (1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + setWriteError(); + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers |= 0x02; // the left shift modifier + k &= 0x7F; + } + } + + // Add k to the key report only if it's not already present + // and if there is an empty slot. + if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && + _keyReport.keys[2] != k && _keyReport.keys[3] != k && + _keyReport.keys[4] != k && _keyReport.keys[5] != k) { + + for (i=0; i<6; i++) { + if (_keyReport.keys[i] == 0x00) { + _keyReport.keys[i] = k; + break; + } + } + if (i == 6) { + setWriteError(); + return 0; + } + } + sendReport(&_keyReport); + return 1; +} + +// release() takes the specified key out of the persistent key report and +// sends the report. This tells the OS the key is no longer pressed and that +// it shouldn't be repeated any more. +size_t Keyboard_::release(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers &= ~(1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers &= ~(0x02); // the left shift modifier + k &= 0x7F; + } + } + + // Test the key report to see if k is present. Clear it if it exists. + // Check all positions in case the key is present more than once (which it shouldn't be) + for (i=0; i<6; i++) { + if (0 != k && _keyReport.keys[i] == k) { + _keyReport.keys[i] = 0x00; + } + } + + sendReport(&_keyReport); + return 1; +} + +void Keyboard_::releaseAll(void) +{ + _keyReport.keys[0] = 0; + _keyReport.keys[1] = 0; + _keyReport.keys[2] = 0; + _keyReport.keys[3] = 0; + _keyReport.keys[4] = 0; + _keyReport.keys[5] = 0; + _keyReport.modifiers = 0; + sendReport(&_keyReport); +} + +size_t Keyboard_::write(uint8_t c) +{ + uint8_t p = press(c); // Keydown + uint8_t r = release(c); // Keyup + return (p); // just return the result of press() since release() almost always returns 1 +} + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HardwareSerial.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HardwareSerial.cpp new file mode 100644 index 000000000..794a7be89 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,519 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#include +#include +#include +#include +#include "Arduino.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +/* + * on ATmega8, the uart and its bits are not numbered, so there is no "TXC0" + * definition. + */ +#if !defined(TXC0) +#if defined(TXC) +#define TXC0 TXC +#elif defined(TXC1) +// Some devices have uart1 but no uart0 +#define TXC0 TXC1 +#else +#error TXC0 not definable in HardwareSerial.h +#endif +#endif + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which head is the index of the location +// to which to write the next incoming character and tail is the index of the +// location from which to read. +#if (RAMEND < 1000) + #define SERIAL_BUFFER_SIZE 16 +#else + #define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile unsigned int head; + volatile unsigned int tail; +}; + +#if defined(USBCON) + ring_buffer rx_buffer = { { 0 }, 0, 0}; + ring_buffer tx_buffer = { { 0 }, 0, 0}; +#endif +#if defined(UBRRH) || defined(UBRR0H) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; + ring_buffer tx_buffer = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR1H) + ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer1 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR2H) + ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer2 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR3H) + ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *buffer) +{ + int i = (unsigned int)(buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != buffer->tail) { + buffer->buffer[buffer->head] = c; + buffer->head = i; + } +} + +#if !defined(USART0_RX_vect) && defined(USART1_RX_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(USART_RX_vect) && !defined(SIG_USART0_RECV) && \ + !defined(SIG_UART0_RECV) && !defined(USART0_RX_vect) && \ + !defined(SIG_UART_RECV) + #error "Don't know what the Data Received vector is called for the first UART" +#else + void serialEvent() __attribute__((weak)); + void serialEvent() {} + #define serialEvent_implemented +#if defined(USART_RX_vect) + SIGNAL(USART_RX_vect) +#elif defined(SIG_USART0_RECV) + SIGNAL(SIG_USART0_RECV) +#elif defined(SIG_UART0_RECV) + SIGNAL(SIG_UART0_RECV) +#elif defined(USART0_RX_vect) + SIGNAL(USART0_RX_vect) +#elif defined(SIG_UART_RECV) + SIGNAL(SIG_UART_RECV) +#endif + { + #if defined(UDR0) + if (bit_is_clear(UCSR0A, UPE0)) { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } else { + unsigned char c = UDR0; + }; + #elif defined(UDR) + if (bit_is_clear(UCSRA, PE)) { + unsigned char c = UDR; + store_char(c, &rx_buffer); + } else { + unsigned char c = UDR; + }; + #else + #error UDR not defined + #endif + } +#endif +#endif + +#if defined(USART1_RX_vect) + void serialEvent1() __attribute__((weak)); + void serialEvent1() {} + #define serialEvent1_implemented + SIGNAL(USART1_RX_vect) + { + if (bit_is_clear(UCSR1A, UPE1)) { + unsigned char c = UDR1; + store_char(c, &rx_buffer1); + } else { + unsigned char c = UDR1; + }; + } +#elif defined(SIG_USART1_RECV) + #error SIG_USART1_RECV +#endif + +#if defined(USART2_RX_vect) && defined(UDR2) + void serialEvent2() __attribute__((weak)); + void serialEvent2() {} + #define serialEvent2_implemented + SIGNAL(USART2_RX_vect) + { + if (bit_is_clear(UCSR2A, UPE2)) { + unsigned char c = UDR2; + store_char(c, &rx_buffer2); + } else { + unsigned char c = UDR2; + }; + } +#elif defined(SIG_USART2_RECV) + #error SIG_USART2_RECV +#endif + +#if defined(USART3_RX_vect) && defined(UDR3) + void serialEvent3() __attribute__((weak)); + void serialEvent3() {} + #define serialEvent3_implemented + SIGNAL(USART3_RX_vect) + { + if (bit_is_clear(UCSR3A, UPE3)) { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } else { + unsigned char c = UDR3; + }; + } +#elif defined(SIG_USART3_RECV) + #error SIG_USART3_RECV +#endif + +void serialEventRun(void) +{ +#ifdef serialEvent_implemented + if (Serial.available()) serialEvent(); +#endif +#ifdef serialEvent1_implemented + if (Serial1.available()) serialEvent1(); +#endif +#ifdef serialEvent2_implemented + if (Serial2.available()) serialEvent2(); +#endif +#ifdef serialEvent3_implemented + if (Serial3.available()) serialEvent3(); +#endif +} + + +#if !defined(USART0_UDRE_vect) && defined(USART1_UDRE_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(UART0_UDRE_vect) && !defined(UART_UDRE_vect) && !defined(USART0_UDRE_vect) && !defined(USART_UDRE_vect) + #error "Don't know what the Data Register Empty vector is called for the first UART" +#else +#if defined(UART0_UDRE_vect) +ISR(UART0_UDRE_vect) +#elif defined(UART_UDRE_vect) +ISR(UART_UDRE_vect) +#elif defined(USART0_UDRE_vect) +ISR(USART0_UDRE_vect) +#elif defined(USART_UDRE_vect) +ISR(USART_UDRE_vect) +#endif +{ + if (tx_buffer.head == tx_buffer.tail) { + // Buffer empty, so disable interrupts +#if defined(UCSR0B) + cbi(UCSR0B, UDRIE0); +#else + cbi(UCSRB, UDRIE); +#endif + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer.buffer[tx_buffer.tail]; + tx_buffer.tail = (tx_buffer.tail + 1) % SERIAL_BUFFER_SIZE; + + #if defined(UDR0) + UDR0 = c; + #elif defined(UDR) + UDR = c; + #else + #error UDR not defined + #endif + } +} +#endif +#endif + +#ifdef USART1_UDRE_vect +ISR(USART1_UDRE_vect) +{ + if (tx_buffer1.head == tx_buffer1.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR1B, UDRIE1); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer1.buffer[tx_buffer1.tail]; + tx_buffer1.tail = (tx_buffer1.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR1 = c; + } +} +#endif + +#ifdef USART2_UDRE_vect +ISR(USART2_UDRE_vect) +{ + if (tx_buffer2.head == tx_buffer2.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR2B, UDRIE2); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer2.buffer[tx_buffer2.tail]; + tx_buffer2.tail = (tx_buffer2.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR2 = c; + } +} +#endif + +#ifdef USART3_UDRE_vect +ISR(USART3_UDRE_vect) +{ + if (tx_buffer3.head == tx_buffer3.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR3B, UDRIE3); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer3.buffer[tx_buffer3.tail]; + tx_buffer3.tail = (tx_buffer3.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR3 = c; + } +} +#endif + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _tx_buffer = tx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _ucsrc = ucsrc; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udrie = udrie; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(unsigned long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + transmitting = false; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::begin(unsigned long baud, byte config) +{ + uint16_t baud_setting; + uint8_t current_config; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + //set the data bits, parity, and stop bits +#if defined(__AVR_ATmega8__) + config |= 0x80; // select UCSRC register (shared with UBRRH) +#endif + *_ucsrc = config; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::end() +{ + // wait for transmission of outgoing data + while (_tx_buffer->head != _tx_buffer->tail) + ; + + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); + + // clear any received data + _rx_buffer->head = _rx_buffer->tail; +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(SERIAL_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // UDR is kept full while the buffer is not empty, so TXC triggers when EMPTY && SENT + while (transmitting && ! (*_ucsra & _BV(TXC0))); + transmitting = false; +} + +size_t HardwareSerial::write(uint8_t c) +{ + int i = (_tx_buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // If the output buffer is full, there's nothing for it other than to + // wait for the interrupt handler to empty it a bit + // ???: return 0 here instead? + while (i == _tx_buffer->tail) + ; + + _tx_buffer->buffer[_tx_buffer->head] = c; + _tx_buffer->head = i; + + sbi(*_ucsrb, _udrie); + // clear the TXC bit -- "can be cleared by writing a one to its bit location" + transmitting = true; + sbi(*_ucsra, TXC0); + + return 1; +} + +HardwareSerial::operator bool() { + return true; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UCSR0C, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0); +#elif defined(USBCON) + // do nothing - Serial object and buffers are initialized in CDC code +#else + #error no serial port defined (port 0) +#endif + +#if defined(UBRR1H) + HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UCSR2C, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); +#endif + +#endif // whole file + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HardwareSerial.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HardwareSerial.h new file mode 100644 index 000000000..a73117f56 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/HardwareSerial.h @@ -0,0 +1,115 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + ring_buffer *_tx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_ucsrc; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udrie; + uint8_t _u2x; + bool transmitting; + public: + HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x); + void begin(unsigned long); + void begin(unsigned long, uint8_t); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + inline size_t write(unsigned long n) { return write((uint8_t)n); } + inline size_t write(long n) { return write((uint8_t)n); } + inline size_t write(unsigned int n) { return write((uint8_t)n); } + inline size_t write(int n) { return write((uint8_t)n); } + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); +}; + +// Define config for Serial.begin(baud, config); +#define SERIAL_5N1 0x00 +#define SERIAL_6N1 0x02 +#define SERIAL_7N1 0x04 +#define SERIAL_8N1 0x06 +#define SERIAL_5N2 0x08 +#define SERIAL_6N2 0x0A +#define SERIAL_7N2 0x0C +#define SERIAL_8N2 0x0E +#define SERIAL_5E1 0x20 +#define SERIAL_6E1 0x22 +#define SERIAL_7E1 0x24 +#define SERIAL_8E1 0x26 +#define SERIAL_5E2 0x28 +#define SERIAL_6E2 0x2A +#define SERIAL_7E2 0x2C +#define SERIAL_8E2 0x2E +#define SERIAL_5O1 0x30 +#define SERIAL_6O1 0x32 +#define SERIAL_7O1 0x34 +#define SERIAL_8O1 0x36 +#define SERIAL_5O2 0x38 +#define SERIAL_6O2 0x3A +#define SERIAL_7O2 0x3C +#define SERIAL_8O2 0x3E + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "USBAPI.h" +// extern HardwareSerial Serial_; +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +extern void serialEventRun(void) __attribute__((weak)); + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/IPAddress.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/IPAddress.cpp new file mode 100644 index 000000000..fe3deb77a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/IPAddress.cpp @@ -0,0 +1,56 @@ + +#include +#include + +IPAddress::IPAddress() +{ + memset(_address, 0, sizeof(_address)); +} + +IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet) +{ + _address[0] = first_octet; + _address[1] = second_octet; + _address[2] = third_octet; + _address[3] = fourth_octet; +} + +IPAddress::IPAddress(uint32_t address) +{ + memcpy(_address, &address, sizeof(_address)); +} + +IPAddress::IPAddress(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); +} + +IPAddress& IPAddress::operator=(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); + return *this; +} + +IPAddress& IPAddress::operator=(uint32_t address) +{ + memcpy(_address, (const uint8_t *)&address, sizeof(_address)); + return *this; +} + +bool IPAddress::operator==(const uint8_t* addr) +{ + return memcmp(addr, _address, sizeof(_address)) == 0; +} + +size_t IPAddress::printTo(Print& p) const +{ + size_t n = 0; + for (int i =0; i < 3; i++) + { + n += p.print(_address[i], DEC); + n += p.print('.'); + } + n += p.print(_address[3], DEC); + return n; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/IPAddress.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/IPAddress.h new file mode 100644 index 000000000..2585aec0e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/IPAddress.h @@ -0,0 +1,76 @@ +/* + * + * MIT License: + * Copyright (c) 2011 Adrian McEwen + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * adrianm@mcqn.com 1/1/2011 + */ + +#ifndef IPAddress_h +#define IPAddress_h + +#include + +// A class to make it easier to handle and pass around IP addresses + +class IPAddress : public Printable { +private: + uint8_t _address[4]; // IPv4 address + // Access the raw byte array containing the address. Because this returns a pointer + // to the internal structure rather than a copy of the address this function should only + // be used when you know that the usage of the returned uint8_t* will be transient and not + // stored. + uint8_t* raw_address() { return _address; }; + +public: + // Constructors + IPAddress(); + IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet); + IPAddress(uint32_t address); + IPAddress(const uint8_t *address); + + // Overloaded cast operator to allow IPAddress objects to be used where a pointer + // to a four-byte uint8_t array is expected + operator uint32_t() { return *((uint32_t*)_address); }; + bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); }; + bool operator==(const uint8_t* addr); + + // Overloaded index operator to allow getting and setting individual octets of the address + uint8_t operator[](int index) const { return _address[index]; }; + uint8_t& operator[](int index) { return _address[index]; }; + + // Overloaded copy operators to allow initialisation of IPAddress objects from other types + IPAddress& operator=(const uint8_t *address); + IPAddress& operator=(uint32_t address); + + virtual size_t printTo(Print& p) const; + + friend class EthernetClass; + friend class UDP; + friend class Client; + friend class Server; + friend class DhcpClass; + friend class DNSClient; +}; + +const IPAddress INADDR_NONE(0,0,0,0); + + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Platform.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Platform.h new file mode 100644 index 000000000..8b8f74277 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Platform.h @@ -0,0 +1,23 @@ + +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#include +#include +#include +#include +#include + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; + +#include "Arduino.h" + +#if defined(USBCON) + #include "USBDesc.h" + #include "USBCore.h" + #include "USBAPI.h" +#endif /* if defined(USBCON) */ + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Print.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Print.cpp new file mode 100644 index 000000000..53961ec47 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Print.cpp @@ -0,0 +1,268 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "Arduino.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +size_t Print::write(const uint8_t *buffer, size_t size) +{ + size_t n = 0; + while (size--) { + n += write(*buffer++); + } + return n; +} + +size_t Print::print(const __FlashStringHelper *ifsh) +{ + const char PROGMEM *p = (const char PROGMEM *)ifsh; + size_t n = 0; + while (1) { + unsigned char c = pgm_read_byte(p++); + if (c == 0) break; + n += write(c); + } + return n; +} + +size_t Print::print(const String &s) +{ + size_t n = 0; + for (uint16_t i = 0; i < s.length(); i++) { + n += write(s[i]); + } + return n; +} + +size_t Print::print(const char str[]) +{ + return write(str); +} + +size_t Print::print(char c) +{ + return write(c); +} + +size_t Print::print(unsigned char b, int base) +{ + return print((unsigned long) b, base); +} + +size_t Print::print(int n, int base) +{ + return print((long) n, base); +} + +size_t Print::print(unsigned int n, int base) +{ + return print((unsigned long) n, base); +} + +size_t Print::print(long n, int base) +{ + if (base == 0) { + return write(n); + } else if (base == 10) { + if (n < 0) { + int t = print('-'); + n = -n; + return printNumber(n, 10) + t; + } + return printNumber(n, 10); + } else { + return printNumber(n, base); + } +} + +size_t Print::print(unsigned long n, int base) +{ + if (base == 0) return write(n); + else return printNumber(n, base); +} + +size_t Print::print(double n, int digits) +{ + return printFloat(n, digits); +} + +size_t Print::println(const __FlashStringHelper *ifsh) +{ + size_t n = print(ifsh); + n += println(); + return n; +} + +size_t Print::print(const Printable& x) +{ + return x.printTo(*this); +} + +size_t Print::println(void) +{ + size_t n = print('\r'); + n += print('\n'); + return n; +} + +size_t Print::println(const String &s) +{ + size_t n = print(s); + n += println(); + return n; +} + +size_t Print::println(const char c[]) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(char c) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(unsigned char b, int base) +{ + size_t n = print(b, base); + n += println(); + return n; +} + +size_t Print::println(int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(double num, int digits) +{ + size_t n = print(num, digits); + n += println(); + return n; +} + +size_t Print::println(const Printable& x) +{ + size_t n = print(x); + n += println(); + return n; +} + +// Private Methods ///////////////////////////////////////////////////////////// + +size_t Print::printNumber(unsigned long n, uint8_t base) { + char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte. + char *str = &buf[sizeof(buf) - 1]; + + *str = '\0'; + + // prevent crash if called with base == 1 + if (base < 2) base = 10; + + do { + unsigned long m = n; + n /= base; + char c = m - base * n; + *--str = c < 10 ? c + '0' : c + 'A' - 10; + } while(n); + + return write(str); +} + +size_t Print::printFloat(double number, uint8_t digits) +{ + size_t n = 0; + + if (isnan(number)) return print("nan"); + if (isinf(number)) return print("inf"); + if (number > 4294967040.0) return print ("ovf"); // constant determined empirically + if (number <-4294967040.0) return print ("ovf"); // constant determined empirically + + // Handle negative numbers + if (number < 0.0) + { + n += print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) { + n += print("."); + } + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + n += print(toPrint); + remainder -= toPrint; + } + + return n; +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Print.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Print.h new file mode 100644 index 000000000..dc7615087 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Print.h @@ -0,0 +1,81 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#include "WString.h" +#include "Printable.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 + +class Print +{ + private: + int write_error; + size_t printNumber(unsigned long, uint8_t); + size_t printFloat(double, uint8_t); + protected: + void setWriteError(int err = 1) { write_error = err; } + public: + Print() : write_error(0) {} + + int getWriteError() { return write_error; } + void clearWriteError() { setWriteError(0); } + + virtual size_t write(uint8_t) = 0; + size_t write(const char *str) { + if (str == NULL) return 0; + return write((const uint8_t *)str, strlen(str)); + } + virtual size_t write(const uint8_t *buffer, size_t size); + + size_t print(const __FlashStringHelper *); + size_t print(const String &); + size_t print(const char[]); + size_t print(char); + size_t print(unsigned char, int = DEC); + size_t print(int, int = DEC); + size_t print(unsigned int, int = DEC); + size_t print(long, int = DEC); + size_t print(unsigned long, int = DEC); + size_t print(double, int = 2); + size_t print(const Printable&); + + size_t println(const __FlashStringHelper *); + size_t println(const String &s); + size_t println(const char[]); + size_t println(char); + size_t println(unsigned char, int = DEC); + size_t println(int, int = DEC); + size_t println(unsigned int, int = DEC); + size_t println(long, int = DEC); + size_t println(unsigned long, int = DEC); + size_t println(double, int = 2); + size_t println(const Printable&); + size_t println(void); +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Printable.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Printable.h new file mode 100644 index 000000000..d03c9af62 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Printable.h @@ -0,0 +1,40 @@ +/* + Printable.h - Interface class that allows printing of complex types + Copyright (c) 2011 Adrian McEwen. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Printable_h +#define Printable_h + +#include + +class Print; + +/** The Printable class provides a way for new classes to allow themselves to be printed. + By deriving from Printable and implementing the printTo method, it will then be possible + for users to print out instances of this class by passing them into the usual + Print::print and Print::println methods. +*/ + +class Printable +{ + public: + virtual size_t printTo(Print& p) const = 0; +}; + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Server.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Server.h new file mode 100644 index 000000000..9674c7626 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Server.h @@ -0,0 +1,9 @@ +#ifndef server_h +#define server_h + +class Server : public Print { +public: + virtual void begin() =0; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Stream.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Stream.cpp new file mode 100644 index 000000000..aafb7fcf9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Stream.cpp @@ -0,0 +1,270 @@ +/* + Stream.cpp - adds parsing methods to Stream class + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Created July 2011 + parsing functions based on TextFinder library by Michael Margolis + */ + +#include "Arduino.h" +#include "Stream.h" + +#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait +#define NO_SKIP_CHAR 1 // a magic char not found in a valid ASCII numeric field + +// private method to read stream with timeout +int Stream::timedRead() +{ + int c; + _startMillis = millis(); + do { + c = read(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// private method to peek stream with timeout +int Stream::timedPeek() +{ + int c; + _startMillis = millis(); + do { + c = peek(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// returns peek of the next digit in the stream or -1 if timeout +// discards non-numeric characters +int Stream::peekNextDigit() +{ + int c; + while (1) { + c = timedPeek(); + if (c < 0) return c; // timeout + if (c == '-') return c; + if (c >= '0' && c <= '9') return c; + read(); // discard non-numeric + } +} + +// Public Methods +////////////////////////////////////////////////////////////// + +void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait +{ + _timeout = timeout; +} + + // find returns true if the target string is found +bool Stream::find(char *target) +{ + return findUntil(target, NULL); +} + +// reads data from the stream until the target string of given length is found +// returns true if target string is found, false if timed out +bool Stream::find(char *target, size_t length) +{ + return findUntil(target, length, NULL, 0); +} + +// as find but search ends if the terminator string is found +bool Stream::findUntil(char *target, char *terminator) +{ + return findUntil(target, strlen(target), terminator, strlen(terminator)); +} + +// reads data from the stream until the target string of the given length is found +// search terminated if the terminator string is found +// returns true if target string is found, false if terminated or timed out +bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen) +{ + size_t index = 0; // maximum target string length is 64k bytes! + size_t termIndex = 0; + int c; + + if( *target == 0) + return true; // return true if target is a null string + while( (c = timedRead()) > 0){ + + if(c != target[index]) + index = 0; // reset index if any char does not match + + if( c == target[index]){ + //////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1); + if(++index >= targetLen){ // return true if all chars in the target match + return true; + } + } + + if(termLen > 0 && c == terminator[termIndex]){ + if(++termIndex >= termLen) + return false; // return false if terminate string found before target string + } + else + termIndex = 0; + } + return false; +} + + +// returns the first valid (long) integer value from the current position. +// initial characters that are not digits (or the minus sign) are skipped +// function is terminated by the first character that is not a digit. +long Stream::parseInt() +{ + return parseInt(NO_SKIP_CHAR); // terminate on first non-digit character (or timeout) +} + +// as above but a given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +long Stream::parseInt(char skipChar) +{ + boolean isNegative = false; + long value = 0; + int c; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore this charactor + else if(c == '-') + isNegative = true; + else if(c >= '0' && c <= '9') // is c a digit? + value = value * 10 + c - '0'; + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == skipChar ); + + if(isNegative) + value = -value; + return value; +} + + +// as parseInt but returns a floating point value +float Stream::parseFloat() +{ + return parseFloat(NO_SKIP_CHAR); +} + +// as above but the given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +float Stream::parseFloat(char skipChar){ + boolean isNegative = false; + boolean isFraction = false; + long value = 0; + char c; + float fraction = 1.0; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore + else if(c == '-') + isNegative = true; + else if (c == '.') + isFraction = true; + else if(c >= '0' && c <= '9') { // is c a digit? + value = value * 10 + c - '0'; + if(isFraction) + fraction *= 0.1; + } + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == '.' || c == skipChar ); + + if(isNegative) + value = -value; + if(isFraction) + return value * fraction; + else + return value; +} + +// read characters from stream into buffer +// terminates if length characters have been read, or timeout (see setTimeout) +// returns the number of characters placed in the buffer +// the buffer is NOT null terminated. +// +size_t Stream::readBytes(char *buffer, size_t length) +{ + size_t count = 0; + while (count < length) { + int c = timedRead(); + if (c < 0) break; + *buffer++ = (char)c; + count++; + } + return count; +} + + +// as readBytes with terminator character +// terminates if length characters have been read, timeout, or if the terminator character detected +// returns the number of characters placed in the buffer (0 means no valid data found) + +size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) +{ + if (length < 1) return 0; + size_t index = 0; + while (index < length) { + int c = timedRead(); + if (c < 0 || c == terminator) break; + *buffer++ = (char)c; + index++; + } + return index; // return number of characters, not including null terminator +} + +String Stream::readString() +{ + String ret; + int c = timedRead(); + while (c >= 0) + { + ret += (char)c; + c = timedRead(); + } + return ret; +} + +String Stream::readStringUntil(char terminator) +{ + String ret; + int c = timedRead(); + while (c >= 0 && c != terminator) + { + ret += (char)c; + c = timedRead(); + } + return ret; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Stream.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Stream.h new file mode 100644 index 000000000..58bbf752f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Stream.h @@ -0,0 +1,96 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + parsing functions based on TextFinder library by Michael Margolis +*/ + +#ifndef Stream_h +#define Stream_h + +#include +#include "Print.h" + +// compatability macros for testing +/* +#define getInt() parseInt() +#define getInt(skipChar) parseInt(skipchar) +#define getFloat() parseFloat() +#define getFloat(skipChar) parseFloat(skipChar) +#define getString( pre_string, post_string, buffer, length) +readBytesBetween( pre_string, terminator, buffer, length) +*/ + +class Stream : public Print +{ + private: + unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read + unsigned long _startMillis; // used for timeout measurement + int timedRead(); // private method to read stream with timeout + int timedPeek(); // private method to peek stream with timeout + int peekNextDigit(); // returns the next numeric digit in the stream or -1 if timeout + + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; + + Stream() {_timeout=1000;} + +// parsing methods + + void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second + + bool find(char *target); // reads data from the stream until the target string is found + // returns true if target string is found, false if timed out (see setTimeout) + + bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found + // returns true if target string is found, false if timed out + + bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found + + bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found + + + long parseInt(); // returns the first valid (long) integer value from the current position. + // initial characters that are not digits (or the minus sign) are skipped + // integer is terminated by the first character that is not a digit. + + float parseFloat(); // float version of parseInt + + size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer + // terminates if length characters have been read or timeout (see setTimeout) + // returns the number of characters placed in the buffer (0 means no valid data found) + + size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character + // terminates if length characters have been read, timeout, or if the terminator character detected + // returns the number of characters placed in the buffer (0 means no valid data found) + + // Arduino String functions to be added here + String readString(); + String readStringUntil(char terminator); + + protected: + long parseInt(char skipChar); // as above but the given skipChar is ignored + // as above but the given skipChar is ignored + // this allows format characters (typically commas) in values to be ignored + + float parseFloat(char skipChar); // as above but the given skipChar is ignored +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Tone.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Tone.cpp new file mode 100644 index 000000000..9bb6fe721 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Tone.cpp @@ -0,0 +1,616 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY +*************************************************/ + +#include +#include +#include "Arduino.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#elif defined(__AVR_ATmega32U4__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER3 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#ifdef USE_TIMER0 +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER1 +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER2 +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER3 +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER4 +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER5 +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBAPI.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBAPI.h new file mode 100644 index 000000000..eb2e5937d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBAPI.h @@ -0,0 +1,196 @@ + + +#ifndef __USBAPI__ +#define __USBAPI__ + +#if defined(USBCON) + +//================================================================================ +//================================================================================ +// USB + +class USBDevice_ +{ +public: + USBDevice_(); + bool configured(); + + void attach(); + void detach(); // Serial port goes down too... + void poll(); +}; +extern USBDevice_ USBDevice; + +//================================================================================ +//================================================================================ +// Serial over CDC (Serial1 is the physical port) + +class Serial_ : public Stream +{ +private: + ring_buffer *_cdc_rx_buffer; +public: + void begin(uint16_t baud_count); + void end(void); + + virtual int available(void); + virtual void accept(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); +}; +extern Serial_ Serial; + +//================================================================================ +//================================================================================ +// Mouse + +#define MOUSE_LEFT 1 +#define MOUSE_RIGHT 2 +#define MOUSE_MIDDLE 4 +#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) + +class Mouse_ +{ +private: + uint8_t _buttons; + void buttons(uint8_t b); +public: + Mouse_(void); + void begin(void); + void end(void); + void click(uint8_t b = MOUSE_LEFT); + void move(signed char x, signed char y, signed char wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default +}; +extern Mouse_ Mouse; + +//================================================================================ +//================================================================================ +// Keyboard + +#define KEY_LEFT_CTRL 0x80 +#define KEY_LEFT_SHIFT 0x81 +#define KEY_LEFT_ALT 0x82 +#define KEY_LEFT_GUI 0x83 +#define KEY_RIGHT_CTRL 0x84 +#define KEY_RIGHT_SHIFT 0x85 +#define KEY_RIGHT_ALT 0x86 +#define KEY_RIGHT_GUI 0x87 + +#define KEY_UP_ARROW 0xDA +#define KEY_DOWN_ARROW 0xD9 +#define KEY_LEFT_ARROW 0xD8 +#define KEY_RIGHT_ARROW 0xD7 +#define KEY_BACKSPACE 0xB2 +#define KEY_TAB 0xB3 +#define KEY_RETURN 0xB0 +#define KEY_ESC 0xB1 +#define KEY_INSERT 0xD1 +#define KEY_DELETE 0xD4 +#define KEY_PAGE_UP 0xD3 +#define KEY_PAGE_DOWN 0xD6 +#define KEY_HOME 0xD2 +#define KEY_END 0xD5 +#define KEY_CAPS_LOCK 0xC1 +#define KEY_F1 0xC2 +#define KEY_F2 0xC3 +#define KEY_F3 0xC4 +#define KEY_F4 0xC5 +#define KEY_F5 0xC6 +#define KEY_F6 0xC7 +#define KEY_F7 0xC8 +#define KEY_F8 0xC9 +#define KEY_F9 0xCA +#define KEY_F10 0xCB +#define KEY_F11 0xCC +#define KEY_F12 0xCD + +// Low level key report: up to 6 keys and shift, ctrl etc at once +typedef struct +{ + uint8_t modifiers; + uint8_t reserved; + uint8_t keys[6]; +} KeyReport; + +class Keyboard_ : public Print +{ +private: + KeyReport _keyReport; + void sendReport(KeyReport* keys); +public: + Keyboard_(void); + void begin(void); + void end(void); + virtual size_t write(uint8_t k); + virtual size_t press(uint8_t k); + virtual size_t release(uint8_t k); + virtual void releaseAll(void); +}; +extern Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ +// Low level API + +typedef struct +{ + uint8_t bmRequestType; + uint8_t bRequest; + uint8_t wValueL; + uint8_t wValueH; + uint16_t wIndex; + uint16_t wLength; +} Setup; + +//================================================================================ +//================================================================================ +// HID 'Driver' + +int HID_GetInterface(uint8_t* interfaceNum); +int HID_GetDescriptor(int i); +bool HID_Setup(Setup& setup); +void HID_SendReport(uint8_t id, const void* data, int len); + +//================================================================================ +//================================================================================ +// MSC 'Driver' + +int MSC_GetInterface(uint8_t* interfaceNum); +int MSC_GetDescriptor(int i); +bool MSC_Setup(Setup& setup); +bool MSC_Data(uint8_t rx,uint8_t tx); + +//================================================================================ +//================================================================================ +// CSC 'Driver' + +int CDC_GetInterface(uint8_t* interfaceNum); +int CDC_GetDescriptor(int i); +bool CDC_Setup(Setup& setup); + +//================================================================================ +//================================================================================ + +#define TRANSFER_PGM 0x80 +#define TRANSFER_RELEASE 0x40 +#define TRANSFER_ZERO 0x20 + +int USB_SendControl(uint8_t flags, const void* d, int len); +int USB_RecvControl(void* d, int len); + +uint8_t USB_Available(uint8_t ep); +int USB_Send(uint8_t ep, const void* data, int len); // blocking +int USB_Recv(uint8_t ep, void* data, int len); // non-blocking +int USB_Recv(uint8_t ep); // non-blocking +void USB_Flush(uint8_t ep); + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBCore.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBCore.cpp new file mode 100644 index 000000000..d3e017065 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBCore.cpp @@ -0,0 +1,684 @@ + + +/* Copyright (c) 2010, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) + +#define EP_TYPE_CONTROL 0x00 +#define EP_TYPE_BULK_IN 0x81 +#define EP_TYPE_BULK_OUT 0x80 +#define EP_TYPE_INTERRUPT_IN 0xC1 +#define EP_TYPE_INTERRUPT_OUT 0xC0 +#define EP_TYPE_ISOCHRONOUS_IN 0x41 +#define EP_TYPE_ISOCHRONOUS_OUT 0x40 + +/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ +#define TX_RX_LED_PULSE_MS 100 +volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ +volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ + +//================================================================== +//================================================================== + +extern const u16 STRING_LANGUAGE[] PROGMEM; +extern const u16 STRING_IPRODUCT[] PROGMEM; +extern const u16 STRING_IMANUFACTURER[] PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM; + +const u16 STRING_LANGUAGE[2] = { + (3<<8) | (2+2), + 0x0409 // English +}; + +const u16 STRING_IPRODUCT[17] = { + (3<<8) | (2+2*16), +#if USB_PID == 0x8036 + 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o' +#elif USB_PID == 0x8037 + 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' ' +#elif USB_PID == 0x803C + 'A','r','d','u','i','n','o',' ','E','s','p','l','o','r','a',' ' +#elif USB_PID == 0x9208 + 'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' ' +#else + 'U','S','B',' ','I','O',' ','B','o','a','r','d',' ',' ',' ',' ' +#endif +}; + +const u16 STRING_IMANUFACTURER[12] = { + (3<<8) | (2+2*11), +#if USB_VID == 0x2341 + 'A','r','d','u','i','n','o',' ','L','L','C' +#elif USB_VID == 0x1b4f + 'S','p','a','r','k','F','u','n',' ',' ',' ' +#else + 'U','n','k','n','o','w','n',' ',' ',' ',' ' +#endif +}; + +#ifdef CDC_ENABLED +#define DEVICE_CLASS 0x02 +#else +#define DEVICE_CLASS 0x00 +#endif + +// DEVICE DESCRIPTOR +const DeviceDescriptor USB_DeviceDescriptor = + D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +const DeviceDescriptor USB_DeviceDescriptorA = + D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +//================================================================== +//================================================================== + +volatile u8 _usbConfiguration = 0; + +static inline void WaitIN(void) +{ + while (!(UEINTX & (1< len) + n = len; + len -= n; + { + LockEP lock(ep); + if (ep & TRANSFER_ZERO) + { + while (n--) + Send8(0); + } + else if (ep & TRANSFER_PGM) + { + while (n--) + Send8(pgm_read_byte(data++)); + } + else + { + while (n--) + Send8(*data++); + } + if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer + ReleaseTX(); + } + } + TXLED1; // light the TX LED + TxLEDPulse = TX_RX_LED_PULSE_MS; + return r; +} + +extern const u8 _initEndpoints[] PROGMEM; +const u8 _initEndpoints[] = +{ + 0, + +#ifdef CDC_ENABLED + EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM + EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT + EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED + EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT +#endif +}; + +#define EP_SINGLE_64 0x32 // EP0 +#define EP_DOUBLE_64 0x36 // Other endpoints + +static +void InitEP(u8 index, u8 type, u8 size) +{ + UENUM = index; + UECONX = 1; + UECFG0X = type; + UECFG1X = size; +} + +static +void InitEndpoints() +{ + for (u8 i = 1; i < sizeof(_initEndpoints); i++) + { + UENUM = i; + UECONX = 1; + UECFG0X = pgm_read_byte(_initEndpoints+i); + UECFG1X = EP_DOUBLE_64; + } + UERST = 0x7E; // And reset them + UERST = 0; +} + +// Handle CLASS_INTERFACE requests +static +bool ClassInterfaceRequest(Setup& setup) +{ + u8 i = setup.wIndex; + +#ifdef CDC_ENABLED + if (CDC_ACM_INTERFACE == i) + return CDC_Setup(setup); +#endif + +#ifdef HID_ENABLED + if (HID_INTERFACE == i) + return HID_Setup(setup); +#endif + return false; +} + +int _cmark; +int _cend; +void InitControl(int end) +{ + SetEP(0); + _cmark = 0; + _cend = end; +} + +static +bool SendControl(u8 d) +{ + if (_cmark < _cend) + { + if (!WaitForINOrOUT()) + return false; + Send8(d); + if (!((_cmark + 1) & 0x3F)) + ClearIN(); // Fifo is full, release this packet + } + _cmark++; + return true; +}; + +// Clipped by _cmark/_cend +int USB_SendControl(u8 flags, const void* d, int len) +{ + int sent = len; + const u8* data = (const u8*)d; + bool pgm = flags & TRANSFER_PGM; + while (len--) + { + u8 c = pgm ? pgm_read_byte(data++) : *data++; + if (!SendControl(c)) + return -1; + } + return sent; +} + +// Does not timeout or cross fifo boundaries +// Will only work for transfers <= 64 bytes +// TODO +int USB_RecvControl(void* d, int len) +{ + WaitOUT(); + Recv((u8*)d,len); + ClearOUT(); + return len; +} + +int SendInterfaces() +{ + int total = 0; + u8 interfaces = 0; + +#ifdef CDC_ENABLED + total = CDC_GetInterface(&interfaces); +#endif + +#ifdef HID_ENABLED + total += HID_GetInterface(&interfaces); +#endif + + return interfaces; +} + +// Construct a dynamic configuration descriptor +// This really needs dynamic endpoint allocation etc +// TODO +static +bool SendConfiguration(int maxlen) +{ + // Count and measure interfaces + InitControl(0); + int interfaces = SendInterfaces(); + ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); + + // Now send them + InitControl(maxlen); + USB_SendControl(0,&config,sizeof(ConfigDescriptor)); + SendInterfaces(); + return true; +} + +u8 _cdcComposite = 0; + +static +bool SendDescriptor(Setup& setup) +{ + u8 t = setup.wValueH; + if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) + return SendConfiguration(setup.wLength); + + InitControl(setup.wLength); +#ifdef HID_ENABLED + if (HID_REPORT_DESCRIPTOR_TYPE == t) + return HID_GetDescriptor(t); +#endif + + u8 desc_length = 0; + const u8* desc_addr = 0; + if (USB_DEVICE_DESCRIPTOR_TYPE == t) + { + if (setup.wLength == 8) + _cdcComposite = 1; + desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor; + } + else if (USB_STRING_DESCRIPTOR_TYPE == t) + { + if (setup.wValueL == 0) + desc_addr = (const u8*)&STRING_LANGUAGE; + else if (setup.wValueL == IPRODUCT) + desc_addr = (const u8*)&STRING_IPRODUCT; + else if (setup.wValueL == IMANUFACTURER) + desc_addr = (const u8*)&STRING_IMANUFACTURER; + else + return false; + } + + if (desc_addr == 0) + return false; + if (desc_length == 0) + desc_length = pgm_read_byte(desc_addr); + + USB_SendControl(TRANSFER_PGM,desc_addr,desc_length); + return true; +} + +// Endpoint 0 interrupt +ISR(USB_COM_vect) +{ + SetEP(0); + if (!ReceivedSetupInt()) + return; + + Setup setup; + Recv((u8*)&setup,8); + ClearSetupInt(); + + u8 requestType = setup.bmRequestType; + if (requestType & REQUEST_DEVICETOHOST) + WaitIN(); + else + ClearIN(); + + bool ok = true; + if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) + { + // Standard Requests + u8 r = setup.bRequest; + if (GET_STATUS == r) + { + Send8(0); // TODO + Send8(0); + } + else if (CLEAR_FEATURE == r) + { + } + else if (SET_FEATURE == r) + { + } + else if (SET_ADDRESS == r) + { + WaitIN(); + UDADDR = setup.wValueL | (1<> 8) & 0xFF) + +#define CDC_V1_10 0x0110 +#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 + +#define CDC_CALL_MANAGEMENT 0x01 +#define CDC_ABSTRACT_CONTROL_MODEL 0x02 +#define CDC_HEADER 0x00 +#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 +#define CDC_UNION 0x06 +#define CDC_CS_INTERFACE 0x24 +#define CDC_CS_ENDPOINT 0x25 +#define CDC_DATA_INTERFACE_CLASS 0x0A + +#define MSC_SUBCLASS_SCSI 0x06 +#define MSC_PROTOCOL_BULK_ONLY 0x50 + +#define HID_HID_DESCRIPTOR_TYPE 0x21 +#define HID_REPORT_DESCRIPTOR_TYPE 0x22 +#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 + + +// Device +typedef struct { + u8 len; // 18 + u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE + u16 usbVersion; // 0x200 + u8 deviceClass; + u8 deviceSubClass; + u8 deviceProtocol; + u8 packetSize0; // Packet 0 + u16 idVendor; + u16 idProduct; + u16 deviceVersion; // 0x100 + u8 iManufacturer; + u8 iProduct; + u8 iSerialNumber; + u8 bNumConfigurations; +} DeviceDescriptor; + +// Config +typedef struct { + u8 len; // 9 + u8 dtype; // 2 + u16 clen; // total length + u8 numInterfaces; + u8 config; + u8 iconfig; + u8 attributes; + u8 maxPower; +} ConfigDescriptor; + +// String + +// Interface +typedef struct +{ + u8 len; // 9 + u8 dtype; // 4 + u8 number; + u8 alternate; + u8 numEndpoints; + u8 interfaceClass; + u8 interfaceSubClass; + u8 protocol; + u8 iInterface; +} InterfaceDescriptor; + +// Endpoint +typedef struct +{ + u8 len; // 7 + u8 dtype; // 5 + u8 addr; + u8 attr; + u16 packetSize; + u8 interval; +} EndpointDescriptor; + +// Interface Association Descriptor +// Used to bind 2 interfaces together in CDC compostite device +typedef struct +{ + u8 len; // 8 + u8 dtype; // 11 + u8 firstInterface; + u8 interfaceCount; + u8 functionClass; + u8 funtionSubClass; + u8 functionProtocol; + u8 iInterface; +} IADDescriptor; + +// CDC CS interface descriptor +typedef struct +{ + u8 len; // 5 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; + u8 d1; +} CDCCSInterfaceDescriptor; + +typedef struct +{ + u8 len; // 4 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; +} CDCCSInterfaceDescriptor4; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; + u8 bDataInterface; +} CMFunctionalDescriptor; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; +} ACMFunctionalDescriptor; + +typedef struct +{ + // IAD + IADDescriptor iad; // Only needed on compound device + + // Control + InterfaceDescriptor cif; // + CDCCSInterfaceDescriptor header; + CMFunctionalDescriptor callManagement; // Call Management + ACMFunctionalDescriptor controlManagement; // ACM + CDCCSInterfaceDescriptor functionalDescriptor; // CDC_UNION + EndpointDescriptor cifin; + + // Data + InterfaceDescriptor dif; + EndpointDescriptor in; + EndpointDescriptor out; +} CDCDescriptor; + +typedef struct +{ + InterfaceDescriptor msc; + EndpointDescriptor in; + EndpointDescriptor out; +} MSCDescriptor; + +typedef struct +{ + u8 len; // 9 + u8 dtype; // 0x21 + u8 addr; + u8 versionL; // 0x101 + u8 versionH; // 0x101 + u8 country; + u8 desctype; // 0x22 report + u8 descLenL; + u8 descLenH; +} HIDDescDescriptor; + +typedef struct +{ + InterfaceDescriptor hid; + HIDDescDescriptor desc; + EndpointDescriptor in; +} HIDDescriptor; + + +#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ + { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } + +#define D_CONFIG(_totalLength,_interfaces) \ + { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) } + +#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ + { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } + +#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ + { 7, 5, _addr,_attr,_packetSize, _interval } + +#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ + { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } + +#define D_HIDREPORT(_descriptorLength) \ + { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } + +#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } +#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 } + + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBDesc.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBDesc.h new file mode 100644 index 000000000..900713e0f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/USBDesc.h @@ -0,0 +1,63 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#define CDC_ENABLED +#define HID_ENABLED + + +#ifdef CDC_ENABLED +#define CDC_INTERFACE_COUNT 2 +#define CDC_ENPOINT_COUNT 3 +#else +#define CDC_INTERFACE_COUNT 0 +#define CDC_ENPOINT_COUNT 0 +#endif + +#ifdef HID_ENABLED +#define HID_INTERFACE_COUNT 1 +#define HID_ENPOINT_COUNT 1 +#else +#define HID_INTERFACE_COUNT 0 +#define HID_ENPOINT_COUNT 0 +#endif + +#define CDC_ACM_INTERFACE 0 // CDC ACM +#define CDC_DATA_INTERFACE 1 // CDC Data +#define CDC_FIRST_ENDPOINT 1 +#define CDC_ENDPOINT_ACM (CDC_FIRST_ENDPOINT) // CDC First +#define CDC_ENDPOINT_OUT (CDC_FIRST_ENDPOINT+1) +#define CDC_ENDPOINT_IN (CDC_FIRST_ENDPOINT+2) + +#define HID_INTERFACE (CDC_ACM_INTERFACE + CDC_INTERFACE_COUNT) // HID Interface +#define HID_FIRST_ENDPOINT (CDC_FIRST_ENDPOINT + CDC_ENPOINT_COUNT) +#define HID_ENDPOINT_INT (HID_FIRST_ENDPOINT) + +#define INTERFACE_COUNT (MSC_INTERFACE + MSC_INTERFACE_COUNT) + +#ifdef CDC_ENABLED +#define CDC_RX CDC_ENDPOINT_OUT +#define CDC_TX CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED +#define HID_TX HID_ENDPOINT_INT +#endif + +#define IMANUFACTURER 1 +#define IPRODUCT 2 + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Udp.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Udp.h new file mode 100644 index 000000000..dc5644b9d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/Udp.h @@ -0,0 +1,88 @@ +/* + * Udp.cpp: Library to send/receive UDP packets. + * + * NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these) + * 1) UDP does not guarantee the order in which assembled UDP packets are received. This + * might not happen often in practice, but in larger network topologies, a UDP + * packet can be received out of sequence. + * 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being + * aware of it. Again, this may not be a concern in practice on small local networks. + * For more information, see http://www.cafeaulait.org/course/week12/35.html + * + * MIT License: + * Copyright (c) 2008 Bjoern Hartmann + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * bjoern@cs.stanford.edu 12/30/2008 + */ + +#ifndef udp_h +#define udp_h + +#include +#include + +class UDP : public Stream { + +public: + virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use + virtual void stop() =0; // Finish with the UDP socket + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) =0; + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port) =0; + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() =0; + // Write a single byte into the packet + virtual size_t write(uint8_t) =0; + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size) =0; + + // Start processing the next available incoming packet + // Returns the size of the packet in bytes, or 0 if no packets are available + virtual int parsePacket() =0; + // Number of bytes remaining in the current packet + virtual int available() =0; + // Read a single byte from the current packet + virtual int read() =0; + // Read up to len bytes from the current packet and place them into buffer + // Returns the number of bytes read, or 0 if none are available + virtual int read(unsigned char* buffer, size_t len) =0; + // Read up to len characters from the current packet and place them into buffer + // Returns the number of characters read, or 0 if none are available + virtual int read(char* buffer, size_t len) =0; + // Return the next byte from the current packet without moving on to the next byte + virtual int peek() =0; + virtual void flush() =0; // Finish reading the current packet + + // Return the IP address of the host who sent the current incoming packet + virtual IPAddress remoteIP() =0; + // Return the port of the host who sent the current incoming packet + virtual uint16_t remotePort() =0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WCharacter.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WInterrupts.c b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WInterrupts.c new file mode 100644 index 000000000..62efc9cad --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WInterrupts.c @@ -0,0 +1,322 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include + +#include "wiring_private.h" + +static volatile voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(__AVR_ATmega32U4__) + // I hate doing this, but the register assignment differs between the 1280/2560 + // and the 32U4. Since avrlib defines registers PCMSK1 and PCMSK2 that aren't + // even present on the 32U4 this is the only way to distinguish between them. + case 0: + EICRA = (EICRA & ~((1<= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WString.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WString.cpp new file mode 100644 index 000000000..c6839fc0d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WString.cpp @@ -0,0 +1,645 @@ +/* + WString.cpp - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "WString.h" + + +/*********************************************/ +/* Constructors */ +/*********************************************/ + +String::String(const char *cstr) +{ + init(); + if (cstr) copy(cstr, strlen(cstr)); +} + +String::String(const String &value) +{ + init(); + *this = value; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String::String(String &&rval) +{ + init(); + move(rval); +} +String::String(StringSumHelper &&rval) +{ + init(); + move(rval); +} +#endif + +String::String(char c) +{ + init(); + char buf[2]; + buf[0] = c; + buf[1] = 0; + *this = buf; +} + +String::String(unsigned char value, unsigned char base) +{ + init(); + char buf[9]; + utoa(value, buf, base); + *this = buf; +} + +String::String(int value, unsigned char base) +{ + init(); + char buf[18]; + itoa(value, buf, base); + *this = buf; +} + +String::String(unsigned int value, unsigned char base) +{ + init(); + char buf[17]; + utoa(value, buf, base); + *this = buf; +} + +String::String(long value, unsigned char base) +{ + init(); + char buf[34]; + ltoa(value, buf, base); + *this = buf; +} + +String::String(unsigned long value, unsigned char base) +{ + init(); + char buf[33]; + ultoa(value, buf, base); + *this = buf; +} + +String::~String() +{ + free(buffer); +} + +/*********************************************/ +/* Memory Management */ +/*********************************************/ + +inline void String::init(void) +{ + buffer = NULL; + capacity = 0; + len = 0; + flags = 0; +} + +void String::invalidate(void) +{ + if (buffer) free(buffer); + buffer = NULL; + capacity = len = 0; +} + +unsigned char String::reserve(unsigned int size) +{ + if (buffer && capacity >= size) return 1; + if (changeBuffer(size)) { + if (len == 0) buffer[0] = 0; + return 1; + } + return 0; +} + +unsigned char String::changeBuffer(unsigned int maxStrLen) +{ + char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); + if (newbuffer) { + buffer = newbuffer; + capacity = maxStrLen; + return 1; + } + return 0; +} + +/*********************************************/ +/* Copy and Move */ +/*********************************************/ + +String & String::copy(const char *cstr, unsigned int length) +{ + if (!reserve(length)) { + invalidate(); + return *this; + } + len = length; + strcpy(buffer, cstr); + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +void String::move(String &rhs) +{ + if (buffer) { + if (capacity >= rhs.len) { + strcpy(buffer, rhs.buffer); + len = rhs.len; + rhs.len = 0; + return; + } else { + free(buffer); + } + } + buffer = rhs.buffer; + capacity = rhs.capacity; + len = rhs.len; + rhs.buffer = NULL; + rhs.capacity = 0; + rhs.len = 0; +} +#endif + +String & String::operator = (const String &rhs) +{ + if (this == &rhs) return *this; + + if (rhs.buffer) copy(rhs.buffer, rhs.len); + else invalidate(); + + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String & String::operator = (String &&rval) +{ + if (this != &rval) move(rval); + return *this; +} + +String & String::operator = (StringSumHelper &&rval) +{ + if (this != &rval) move(rval); + return *this; +} +#endif + +String & String::operator = (const char *cstr) +{ + if (cstr) copy(cstr, strlen(cstr)); + else invalidate(); + + return *this; +} + +/*********************************************/ +/* concat */ +/*********************************************/ + +unsigned char String::concat(const String &s) +{ + return concat(s.buffer, s.len); +} + +unsigned char String::concat(const char *cstr, unsigned int length) +{ + unsigned int newlen = len + length; + if (!cstr) return 0; + if (length == 0) return 1; + if (!reserve(newlen)) return 0; + strcpy(buffer + len, cstr); + len = newlen; + return 1; +} + +unsigned char String::concat(const char *cstr) +{ + if (!cstr) return 0; + return concat(cstr, strlen(cstr)); +} + +unsigned char String::concat(char c) +{ + char buf[2]; + buf[0] = c; + buf[1] = 0; + return concat(buf, 1); +} + +unsigned char String::concat(unsigned char num) +{ + char buf[4]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(int num) +{ + char buf[7]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned int num) +{ + char buf[6]; + utoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(long num) +{ + char buf[12]; + ltoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned long num) +{ + char buf[11]; + ultoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +/*********************************************/ +/* Concatenate */ +/*********************************************/ + +StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(rhs.buffer, rhs.len)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr) +{ + StringSumHelper &a = const_cast(lhs); + if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, char c) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(c)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +/*********************************************/ +/* Comparison */ +/*********************************************/ + +int String::compareTo(const String &s) const +{ + if (!buffer || !s.buffer) { + if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer; + if (buffer && len > 0) return *(unsigned char *)buffer; + return 0; + } + return strcmp(buffer, s.buffer); +} + +unsigned char String::equals(const String &s2) const +{ + return (len == s2.len && compareTo(s2) == 0); +} + +unsigned char String::equals(const char *cstr) const +{ + if (len == 0) return (cstr == NULL || *cstr == 0); + if (cstr == NULL) return buffer[0] == 0; + return strcmp(buffer, cstr) == 0; +} + +unsigned char String::operator<(const String &rhs) const +{ + return compareTo(rhs) < 0; +} + +unsigned char String::operator>(const String &rhs) const +{ + return compareTo(rhs) > 0; +} + +unsigned char String::operator<=(const String &rhs) const +{ + return compareTo(rhs) <= 0; +} + +unsigned char String::operator>=(const String &rhs) const +{ + return compareTo(rhs) >= 0; +} + +unsigned char String::equalsIgnoreCase( const String &s2 ) const +{ + if (this == &s2) return 1; + if (len != s2.len) return 0; + if (len == 0) return 1; + const char *p1 = buffer; + const char *p2 = s2.buffer; + while (*p1) { + if (tolower(*p1++) != tolower(*p2++)) return 0; + } + return 1; +} + +unsigned char String::startsWith( const String &s2 ) const +{ + if (len < s2.len) return 0; + return startsWith(s2, 0); +} + +unsigned char String::startsWith( const String &s2, unsigned int offset ) const +{ + if (offset > len - s2.len || !buffer || !s2.buffer) return 0; + return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0; +} + +unsigned char String::endsWith( const String &s2 ) const +{ + if ( len < s2.len || !buffer || !s2.buffer) return 0; + return strcmp(&buffer[len - s2.len], s2.buffer) == 0; +} + +/*********************************************/ +/* Character Access */ +/*********************************************/ + +char String::charAt(unsigned int loc) const +{ + return operator[](loc); +} + +void String::setCharAt(unsigned int loc, char c) +{ + if (loc < len) buffer[loc] = c; +} + +char & String::operator[](unsigned int index) +{ + static char dummy_writable_char; + if (index >= len || !buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return buffer[index]; +} + +char String::operator[]( unsigned int index ) const +{ + if (index >= len || !buffer) return 0; + return buffer[index]; +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const +{ + if (!bufsize || !buf) return; + if (index >= len) { + buf[0] = 0; + return; + } + unsigned int n = bufsize - 1; + if (n > len - index) n = len - index; + strncpy((char *)buf, buffer + index, n); + buf[n] = 0; +} + +/*********************************************/ +/* Search */ +/*********************************************/ + +int String::indexOf(char c) const +{ + return indexOf(c, 0); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if (fromIndex >= len) return -1; + const char* temp = strchr(buffer + fromIndex, ch); + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::indexOf(const String &s2) const +{ + return indexOf(s2, 0); +} + +int String::indexOf(const String &s2, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + const char *found = strstr(buffer + fromIndex, s2.buffer); + if (found == NULL) return -1; + return found - buffer; +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf(theChar, len - 1); +} + +int String::lastIndexOf(char ch, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + char tempchar = buffer[fromIndex + 1]; + buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( buffer, ch ); + buffer[fromIndex + 1] = tempchar; + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::lastIndexOf(const String &s2) const +{ + return lastIndexOf(s2, len - s2.len); +} + +int String::lastIndexOf(const String &s2, unsigned int fromIndex) const +{ + if (s2.len == 0 || len == 0 || s2.len > len) return -1; + if (fromIndex >= len) fromIndex = len - 1; + int found = -1; + for (char *p = buffer; p <= buffer + fromIndex; p++) { + p = strstr(p, s2.buffer); + if (!p) break; + if ((unsigned int)(p - buffer) <= fromIndex) found = p - buffer; + } + return found; +} + +String String::substring( unsigned int left ) const +{ + return substring(left, len); +} + +String String::substring(unsigned int left, unsigned int right) const +{ + if (left > right) { + unsigned int temp = right; + right = left; + left = temp; + } + String out; + if (left > len) return out; + if (right > len) right = len; + char temp = buffer[right]; // save the replaced character + buffer[right] = '\0'; + out = buffer + left; // pointer arithmetic + buffer[right] = temp; //restore character + return out; +} + +/*********************************************/ +/* Modification */ +/*********************************************/ + +void String::replace(char find, char replace) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + if (*p == find) *p = replace; + } +} + +void String::replace(const String& find, const String& replace) +{ + if (len == 0 || find.len == 0) return; + int diff = replace.len - find.len; + char *readFrom = buffer; + char *foundAt; + if (diff == 0) { + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + memcpy(foundAt, replace.buffer, replace.len); + readFrom = foundAt + replace.len; + } + } else if (diff < 0) { + char *writeTo = buffer; + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + unsigned int n = foundAt - readFrom; + memcpy(writeTo, readFrom, n); + writeTo += n; + memcpy(writeTo, replace.buffer, replace.len); + writeTo += replace.len; + readFrom = foundAt + find.len; + len += diff; + } + strcpy(writeTo, readFrom); + } else { + unsigned int size = len; // compute size needed for result + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + readFrom = foundAt + find.len; + size += diff; + } + if (size == len) return; + if (size > capacity && !changeBuffer(size)) return; // XXX: tell user! + int index = len - 1; + while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) { + readFrom = buffer + index + find.len; + memmove(readFrom + diff, readFrom, len - (readFrom - buffer)); + len += diff; + buffer[len] = 0; + memcpy(buffer + index, replace.buffer, replace.len); + index--; + } + } +} + +void String::toLowerCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = tolower(*p); + } +} + +void String::toUpperCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = toupper(*p); + } +} + +void String::trim(void) +{ + if (!buffer || len == 0) return; + char *begin = buffer; + while (isspace(*begin)) begin++; + char *end = buffer + len - 1; + while (isspace(*end) && end >= begin) end--; + len = end + 1 - begin; + if (begin > buffer) memcpy(buffer, begin, len); + buffer[len] = 0; +} + +/*********************************************/ +/* Parsing / Conversion */ +/*********************************************/ + +long String::toInt(void) const +{ + if (buffer) return atol(buffer); + return 0; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WString.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WString.h new file mode 100644 index 000000000..947325e5f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/WString.h @@ -0,0 +1,205 @@ +/* + WString.h - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_class_h +#define String_class_h +#ifdef __cplusplus + +#include +#include +#include +#include + +// When compiling programs with this class, the following gcc parameters +// dramatically increase performance and memory (RAM) efficiency, typically +// with little or no increase in code size. +// -felide-constructors +// -std=c++0x + +class __FlashStringHelper; +#define F(string_literal) (reinterpret_cast(PSTR(string_literal))) + +// An inherited class for holding the result of a concatenation. These +// result objects are assumed to be writable by subsequent concatenations. +class StringSumHelper; + +// The string class +class String +{ + // use a function pointer to allow for "if (s)" without the + // complications of an operator bool(). for more information, see: + // http://www.artima.com/cppsource/safebool.html + typedef void (String::*StringIfHelperType)() const; + void StringIfHelper() const {} + +public: + // constructors + // creates a copy of the initial value. + // if the initial value is null or invalid, or if memory allocation + // fails, the string will be marked as invalid (i.e. "if (s)" will + // be false). + String(const char *cstr = ""); + String(const String &str); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String(String &&rval); + String(StringSumHelper &&rval); + #endif + explicit String(char c); + explicit String(unsigned char, unsigned char base=10); + explicit String(int, unsigned char base=10); + explicit String(unsigned int, unsigned char base=10); + explicit String(long, unsigned char base=10); + explicit String(unsigned long, unsigned char base=10); + ~String(void); + + // memory management + // return true on success, false on failure (in which case, the string + // is left unchanged). reserve(0), if successful, will validate an + // invalid string (i.e., "if (s)" will be true afterwards) + unsigned char reserve(unsigned int size); + inline unsigned int length(void) const {return len;} + + // creates a copy of the assigned value. if the value is null or + // invalid, or if the memory allocation fails, the string will be + // marked as invalid ("if (s)" will be false). + String & operator = (const String &rhs); + String & operator = (const char *cstr); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String & operator = (String &&rval); + String & operator = (StringSumHelper &&rval); + #endif + + // concatenate (works w/ built-in types) + + // returns true on success, false on failure (in which case, the string + // is left unchanged). if the argument is null or invalid, the + // concatenation is considered unsucessful. + unsigned char concat(const String &str); + unsigned char concat(const char *cstr); + unsigned char concat(char c); + unsigned char concat(unsigned char c); + unsigned char concat(int num); + unsigned char concat(unsigned int num); + unsigned char concat(long num); + unsigned char concat(unsigned long num); + + // if there's not enough memory for the concatenated value, the string + // will be left unchanged (but this isn't signalled in any way) + String & operator += (const String &rhs) {concat(rhs); return (*this);} + String & operator += (const char *cstr) {concat(cstr); return (*this);} + String & operator += (char c) {concat(c); return (*this);} + String & operator += (unsigned char num) {concat(num); return (*this);} + String & operator += (int num) {concat(num); return (*this);} + String & operator += (unsigned int num) {concat(num); return (*this);} + String & operator += (long num) {concat(num); return (*this);} + String & operator += (unsigned long num) {concat(num); return (*this);} + + friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs); + friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr); + friend StringSumHelper & operator + (const StringSumHelper &lhs, char c); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, long num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num); + + // comparison (only works w/ Strings and "strings") + operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; } + int compareTo(const String &s) const; + unsigned char equals(const String &s) const; + unsigned char equals(const char *cstr) const; + unsigned char operator == (const String &rhs) const {return equals(rhs);} + unsigned char operator == (const char *cstr) const {return equals(cstr);} + unsigned char operator != (const String &rhs) const {return !equals(rhs);} + unsigned char operator != (const char *cstr) const {return !equals(cstr);} + unsigned char operator < (const String &rhs) const; + unsigned char operator > (const String &rhs) const; + unsigned char operator <= (const String &rhs) const; + unsigned char operator >= (const String &rhs) const; + unsigned char equalsIgnoreCase(const String &s) const; + unsigned char startsWith( const String &prefix) const; + unsigned char startsWith(const String &prefix, unsigned int offset) const; + unsigned char endsWith(const String &suffix) const; + + // character acccess + char charAt(unsigned int index) const; + void setCharAt(unsigned int index, char c); + char operator [] (unsigned int index) const; + char& operator [] (unsigned int index); + void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const; + void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const + {getBytes((unsigned char *)buf, bufsize, index);} + + // search + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + + // modification + void replace(char find, char replace); + void replace(const String& find, const String& replace); + void toLowerCase(void); + void toUpperCase(void); + void trim(void); + + // parsing/conversion + long toInt(void) const; + +protected: + char *buffer; // the actual char array + unsigned int capacity; // the array length minus one (for the '\0') + unsigned int len; // the String length (not counting the '\0') + unsigned char flags; // unused, for future features +protected: + void init(void); + void invalidate(void); + unsigned char changeBuffer(unsigned int maxStrLen); + unsigned char concat(const char *cstr, unsigned int length); + + // copy and move + String & copy(const char *cstr, unsigned int length); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + void move(String &rhs); + #endif +}; + +class StringSumHelper : public String +{ +public: + StringSumHelper(const String &s) : String(s) {} + StringSumHelper(const char *p) : String(p) {} + StringSumHelper(char c) : String(c) {} + StringSumHelper(unsigned char num) : String(num) {} + StringSumHelper(int num) : String(num) {} + StringSumHelper(unsigned int num) : String(num) {} + StringSumHelper(long num) : String(num) {} + StringSumHelper(unsigned long num) : String(num) {} +}; + +#endif // __cplusplus +#endif // String_class_h diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/binary.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/main.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/main.cpp new file mode 100644 index 000000000..3d4e079d2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/main.cpp @@ -0,0 +1,20 @@ +#include + +int main(void) +{ + init(); + +#if defined(USBCON) + USBDevice.attach(); +#endif + + setup(); + + for (;;) { + loop(); + if (serialEventRun) serialEventRun(); + } + + return 0; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/new.cpp b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/new.cpp new file mode 100644 index 000000000..0f6d4220e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/new.cpp @@ -0,0 +1,18 @@ +#include + +void * operator new(size_t size) +{ + return malloc(size); +} + +void operator delete(void * ptr) +{ + free(ptr); +} + +int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; +void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; +void __cxa_guard_abort (__guard *) {}; + +void __cxa_pure_virtual(void) {}; + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/new.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/new.h new file mode 100644 index 000000000..cd940ce8b --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/new.h @@ -0,0 +1,22 @@ +/* Header to define new/delete operators as they aren't provided by avr-gcc by default + Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453 + */ + +#ifndef NEW_H +#define NEW_H + +#include + +void * operator new(size_t size); +void operator delete(void * ptr); + +__extension__ typedef int __guard __attribute__((mode (__DI__))); + +extern "C" int __cxa_guard_acquire(__guard *); +extern "C" void __cxa_guard_release (__guard *); +extern "C" void __cxa_guard_abort (__guard *); + +extern "C" void __cxa_pure_virtual(void); + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring.c b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring.c new file mode 100644 index 000000000..ac8bb6f9b --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring.c @@ -0,0 +1,324 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) +SIGNAL(TIM0_OVF_vect) +#else +SIGNAL(TIMER0_OVF_vect) +#endif +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); +#if F_CPU >= 20000000L + // for the 20 MHz clock on rare Arduino boards + + // for a one-microsecond delay, simply wait 2 cycle and return. The overhead + // of the function call yields a delay of exactly a one microsecond. + __asm__ __volatile__ ( + "nop" "\n\t" + "nop"); //just waiting 2 cycle + if (--us == 0) + return; + + // the following loop takes a 1/5 of a microsecond (4 cycles) + // per iteration, so execute it five times for each microsecond of + // delay requested. + us = (us<<2) + us; // x5 us + + // account for the time taken in the preceeding commands. + us -= 2; + +#elif F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + TCCR1B = 0; + + // set timer 1 prescale factor to 64 + sbi(TCCR1B, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1B, CS10); +#endif +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1, CS10); +#endif +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4A) && defined(TCCR4B) && defined(TCCR4D) /* beginning of timer4 block for 32U4 and similar */ + sbi(TCCR4B, CS42); // set timer4 prescale factor to 64 + sbi(TCCR4B, CS41); + sbi(TCCR4B, CS40); + sbi(TCCR4D, WGM40); // put timer 4 in phase- and frequency-correct PWM mode + sbi(TCCR4A, PWM4A); // enable PWM mode for comparator OCR4A + sbi(TCCR4C, PWM4D); // enable PWM mode for comparator OCR4D +#else /* beginning of timer4 block for ATMEGA1280 and ATMEGA2560 */ +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif +#endif /* end timer4 block for ATMEGA1280/2560 and similar */ + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_analog.c b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_analog.c new file mode 100644 index 000000000..23b01c65a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_analog.c @@ -0,0 +1,282 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#elif defined(__AVR_ATmega32U4__) + if (pin >= 18) pin -= 18; // allow for channel or pin numbers +#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if (pin >= 24) pin -= 24; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(__AVR_ATmega32U4__) + pin = analogPinToChannel(pin); + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#elif defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) + case TIMER4A: + //connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + #if defined(COM4A0) // only used on 32U4 + cbi(TCCR4A, COM4A0); + #endif + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4C) && defined(COM4D1) + case TIMER4D: + // connect pwm to pin on timer 4, channel D + sbi(TCCR4C, COM4D1); + #if defined(COM4D0) // only used on 32U4 + cbi(TCCR4C, COM4D0); + #endif + OCR4D = val; // set pwm duty + break; + #endif + + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} + diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_digital.c b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_digital.c new file mode 100644 index 000000000..be323b1df --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_digital.c @@ -0,0 +1,178 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#define ARDUINO_MAIN +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg, *out; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + out = portOutputRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + *out &= ~bit; + SREG = oldSREG; + } else if (mode == INPUT_PULLUP) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + *out |= bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +//static inline void turnOffPWM(uint8_t timer) +static void turnOffPWM(uint8_t timer) +{ + switch (timer) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR4C) && defined(COM4D1) + case TIMER4D: cbi(TCCR4C, COM4D1); break; + #endif + + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + uint8_t oldSREG = SREG; + cli(); + + if (val == LOW) { + *out &= ~bit; + } else { + *out |= bit; + } + + SREG = oldSREG; +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_private.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_private.h new file mode 100644 index 000000000..f67826567 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_private.h @@ -0,0 +1,71 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) +#define EXTERNAL_NUM_INTERRUPTS 3 +#elif defined(__AVR_ATmega32U4__) +#define EXTERNAL_NUM_INTERRUPTS 4 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_pulse.c b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_pulse.c new file mode 100644 index 000000000..0d968865d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_shift.c b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_shift.c new file mode 100644 index 000000000..cfe786758 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/cores/arduino/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/ArduinoAddons/Arduino_1.0.x/hardware/rambo/variants/standard/pins_arduino.h b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/variants/standard/pins_arduino.h new file mode 100644 index 000000000..f49a23fc0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/hardware/rambo/variants/standard/pins_arduino.h @@ -0,0 +1,411 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NUM_DIGITAL_PINS 82 +#define NUM_ANALOG_INPUTS 16 +#define analogInputToDigitalPin(p) ((p < 16) ? (p) + 54 : -1) +#define digitalPinHasPWM(p) (((p) >= 2 && (p) <= 13) || ((p) >= 44 && (p)<= 46)) + +static const uint8_t SS = 53; +static const uint8_t MOSI = 51; +static const uint8_t MISO = 50; +static const uint8_t SCK = 52; + +static const uint8_t SDA = 20; +static const uint8_t SCL = 21; +static const uint8_t LED_BUILTIN = 13; + +static const uint8_t A0 = 54; +static const uint8_t A1 = 55; +static const uint8_t A2 = 56; +static const uint8_t A3 = 57; +static const uint8_t A4 = 58; +static const uint8_t A5 = 59; +static const uint8_t A6 = 60; +static const uint8_t A7 = 61; +static const uint8_t A8 = 62; +static const uint8_t A9 = 63; +static const uint8_t A10 = 64; +static const uint8_t A11 = 65; +static const uint8_t A12 = 66; +static const uint8_t A13 = 67; +static const uint8_t A14 = 68; +static const uint8_t A15 = 69; + +// A majority of the pins are NOT PCINTs, SO BE WARNED (i.e. you cannot use them as receive pins) +// Only pins available for RECEIVE (TRANSMIT can be on any pin): +// (I've deliberately left out pin mapping to the Hardware USARTs - seems senseless to me) +// Pins: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 + +#define digitalPinToPCICR(p) ( (((p) >= 10) && ((p) <= 13)) || \ + (((p) >= 50) && ((p) <= 53)) || \ + (((p) >= 62) && ((p) <= 69)) ? (&PCICR) : ((uint8_t *)0) ) + +#define digitalPinToPCICRbit(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? 0 : \ + ( (((p) >= 62) && ((p) <= 69)) ? 2 : \ + 0 ) ) + +#define digitalPinToPCMSK(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? (&PCMSK0) : \ + ( (((p) >= 62) && ((p) <= 69)) ? (&PCMSK2) : \ + ((uint8_t *)0) ) ) + +#define digitalPinToPCMSKbit(p) ( (((p) >= 10) && ((p) <= 13)) ? ((p) - 6) : \ + ( ((p) == 50) ? 3 : \ + ( ((p) == 51) ? 2 : \ + ( ((p) == 52) ? 1 : \ + ( ((p) == 53) ? 0 : \ + ( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \ + 0 ) ) ) ) ) ) + +#ifdef ARDUINO_MAIN + +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + (uint16_t) &DDRA, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, + (uint16_t) &DDRE, + (uint16_t) &DDRF, + (uint16_t) &DDRG, + (uint16_t) &DDRH, + NOT_A_PORT, + (uint16_t) &DDRJ, + (uint16_t) &DDRK, + (uint16_t) &DDRL, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + (uint16_t) &PORTA, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, + (uint16_t) &PORTE, + (uint16_t) &PORTF, + (uint16_t) &PORTG, + (uint16_t) &PORTH, + NOT_A_PORT, + (uint16_t) &PORTJ, + (uint16_t) &PORTK, + (uint16_t) &PORTL, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PIN, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, + (uint16_t) &PINF, + (uint16_t) &PING, + (uint16_t) &PINH, + NOT_A_PIN, + (uint16_t) &PINJ, + (uint16_t) &PINK, + (uint16_t) &PINL, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 + PG , // PG 4 ** 70 ** D70 + PG , // PG 3 ** 71 ** D71 + PJ , // PJ 2 ** 72 ** D72 + PJ , // PJ 3 ** 73 ** D73 + PJ , // PJ 7 ** 74 ** D74 + PJ , // PJ 4 ** 75 ** D75 + PJ , // PJ 5 ** 76 ** D76 + PJ , // PJ 6 ** 77 ** D77 + PE , // PE 2 ** 78 ** D78 + PE , // PE 6 ** 79 ** D79 + PE , // PE 7 ** 80 ** D80 + PD , // PD 4 ** 81 ** D81 + PD , // PD 5 ** 82 ** D82 + PD , // PD 6 ** 83 ** D83 + PH , // PH 2 ** 84 ** D84 + PH , // PH 7 ** 85 ** D85 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 + _BV( 4 ) , // PG 4 ** 70 ** D70 + _BV( 3 ) , // PG 3 ** 71 ** D71 + _BV( 2 ) , // PJ 2 ** 72 ** D72 + _BV( 3 ) , // PJ 3 ** 73 ** D73 + _BV( 7 ) , // PJ 7 ** 74 ** D74 + _BV( 4 ) , // PJ 4 ** 75 ** D75 + _BV( 5 ) , // PJ 5 ** 76 ** D76 + _BV( 6 ) , // PJ 6 ** 77 ** D77 + _BV( 2 ) , // PE 2 ** 78 ** D78 + _BV( 6 ) , // PE 6 ** 79 ** D79 + _BV( 7 ) , // PE 7 ** 80 ** D80 + _BV( 4 ) , // PD 4 ** 81 ** D81 + _BV( 5 ) , // PD 5 ** 82 ** D82 + _BV( 6 ) , // PD 6 ** 83 ** D83 + _BV( 2 ) , // PH 2 ** 84 ** D84 + _BV( 7 ) , // PH 7 ** 85 ** D85 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 + NOT_ON_TIMER , // PG 4 ** 70 ** D70 + NOT_ON_TIMER , // PG 3 ** 71 ** D71 + NOT_ON_TIMER , // PJ 2 ** 72 ** D72 + NOT_ON_TIMER , // PJ 3 ** 73 ** D73 + NOT_ON_TIMER , // PJ 7 ** 74 ** D74 + NOT_ON_TIMER , // PJ 4 ** 75 ** D75 + NOT_ON_TIMER , // PJ 5 ** 76 ** D76 + NOT_ON_TIMER , // PJ 6 ** 77 ** D77 + NOT_ON_TIMER , // PE 2 ** 78 ** D78 + NOT_ON_TIMER , // PE 6 ** 79 ** D79 + NOT_ON_TIMER , // PE 7 ** 80 ** D80 + NOT_ON_TIMER , // PD 4 ** 81 ** D81 + NOT_ON_TIMER , // PD 5 ** 82 ** D82 + NOT_ON_TIMER , // PD 6 ** 83 ** D83 + NOT_ON_TIMER , // PH 2 ** 84 ** D84 + NOT_ON_TIMER , // PH 7 ** 85 ** D85 +}; + +#endif + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/LiquidCrystal.cpp b/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/LiquidCrystal.cpp new file mode 100644 index 000000000..61efca46e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/LiquidCrystal.cpp @@ -0,0 +1,310 @@ +#include "LiquidCrystal.h" + +#include +#include +#include +#include "Arduino.h" + +// When the display powers up, it is configured as follows: +// +// 1. Display clear +// 2. Function set: +// DL = 1; 8-bit interface data +// N = 0; 1-line display +// F = 0; 5x8 dot character font +// 3. Display on/off control: +// D = 0; Display off +// C = 0; Cursor off +// B = 0; Blinking off +// 4. Entry mode set: +// I/D = 1; Increment by 1 +// S = 0; No shift +// +// Note, however, that resetting the Arduino doesn't reset the LCD, so we +// can't assume that it's in that state when a sketch starts (and the +// LiquidCrystal constructor is called). + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + init(0, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +{ + init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +{ + init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0); +} + +void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + _rs_pin = rs; + _rw_pin = rw; + _enable_pin = enable; + + _data_pins[0] = d0; + _data_pins[1] = d1; + _data_pins[2] = d2; + _data_pins[3] = d3; + _data_pins[4] = d4; + _data_pins[5] = d5; + _data_pins[6] = d6; + _data_pins[7] = d7; + + pinMode(_rs_pin, OUTPUT); + // we can save 1 pin by not using RW. Indicate by passing 255 instead of pin# + if (_rw_pin != 255) { + pinMode(_rw_pin, OUTPUT); + } + pinMode(_enable_pin, OUTPUT); + + if (fourbitmode) + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + else + _displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS; + + begin(16, 1); +} + +void LiquidCrystal::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) { + if (lines > 1) { + _displayfunction |= LCD_2LINE; + } + _numlines = lines; + _currline = 0; + + // for some 1 line displays you can select a 10 pixel high font + if ((dotsize != 0) && (lines == 1)) { + _displayfunction |= LCD_5x10DOTS; + } + + // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! + // according to datasheet, we need at least 40ms after power rises above 2.7V + // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50 + delayMicroseconds(50000); + // Now we pull both RS and R/W low to begin commands + digitalWrite(_rs_pin, LOW); + digitalWrite(_enable_pin, LOW); + if (_rw_pin != 255) { + digitalWrite(_rw_pin, LOW); + } + + //put the LCD into 4 bit or 8 bit mode + if (! (_displayfunction & LCD_8BITMODE)) { + // this is according to the hitachi HD44780 datasheet + // figure 24, pg 46 + + // we start in 8bit mode, try to set 4 bit mode + write4bits(0x03); + delayMicroseconds(4500); // wait min 4.1ms + + // second try + write4bits(0x03); + delayMicroseconds(4500); // wait min 4.1ms + + // third go! + write4bits(0x03); + delayMicroseconds(150); + + // finally, set to 4-bit interface + write4bits(0x02); + } else { + // this is according to the hitachi HD44780 datasheet + // page 45 figure 23 + + // Send function set command sequence + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(4500); // wait more than 4.1ms + + // second try + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(150); + + // third go + command(LCD_FUNCTIONSET | _displayfunction); + } + + // finally, set # lines, font size, etc. + command(LCD_FUNCTIONSET | _displayfunction); + + // turn the display on with no cursor or blinking default + _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; + display(); + + // clear it off + clear(); + + // Initialize to default text direction (for romance languages) + _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; + // set the entry mode + command(LCD_ENTRYMODESET | _displaymode); + +} + +/********** high level commands, for the user! */ +void LiquidCrystal::clear() +{ + command(LCD_CLEARDISPLAY); // clear display, set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal::home() +{ + command(LCD_RETURNHOME); // set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal::setCursor(uint8_t col, uint8_t row) +{ + int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; + if ( row >= _numlines ) { + row = _numlines-1; // we count rows starting w/0 + } + + command(LCD_SETDDRAMADDR | (col + row_offsets[row])); +} + +// Turn the display on/off (quickly) +void LiquidCrystal::noDisplay() { + _displaycontrol &= ~LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal::display() { + _displaycontrol |= LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turns the underline cursor on/off +void LiquidCrystal::noCursor() { + _displaycontrol &= ~LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal::cursor() { + _displaycontrol |= LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turn on and off the blinking cursor +void LiquidCrystal::noBlink() { + _displaycontrol &= ~LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal::blink() { + _displaycontrol |= LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// These commands scroll the display without changing the RAM +void LiquidCrystal::scrollDisplayLeft(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); +} +void LiquidCrystal::scrollDisplayRight(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); +} + +// This is for text that flows Left to Right +void LiquidCrystal::leftToRight(void) { + _displaymode |= LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This is for text that flows Right to Left +void LiquidCrystal::rightToLeft(void) { + _displaymode &= ~LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'right justify' text from the cursor +void LiquidCrystal::autoscroll(void) { + _displaymode |= LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'left justify' text from the cursor +void LiquidCrystal::noAutoscroll(void) { + _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// Allows us to fill the first 8 CGRAM locations +// with custom characters +void LiquidCrystal::createChar(uint8_t location, uint8_t charmap[]) { + location &= 0x7; // we only have 8 locations 0-7 + command(LCD_SETCGRAMADDR | (location << 3)); + for (int i=0; i<8; i++) { + write(charmap[i]); + } +} + +/*********** mid level commands, for sending data/cmds */ + +inline void LiquidCrystal::command(uint8_t value) { + send(value, LOW); +} + +inline size_t LiquidCrystal::write(uint8_t value) { + send(value, HIGH); + return 1; // assume sucess +} + +/************ low level data pushing commands **********/ + +// write either command or data, with automatic 4/8-bit selection +void LiquidCrystal::send(uint8_t value, uint8_t mode) { + digitalWrite(_rs_pin, mode); + + // if there is a RW pin indicated, set it low to Write + if (_rw_pin != 255) { + digitalWrite(_rw_pin, LOW); + } + + if (_displayfunction & LCD_8BITMODE) { + write8bits(value); + } else { + write4bits(value>>4); + write4bits(value); + } +} + +void LiquidCrystal::pulseEnable(void) { + digitalWrite(_enable_pin, LOW); + delayMicroseconds(1); + digitalWrite(_enable_pin, HIGH); + delayMicroseconds(1); // enable pulse must be >450ns + digitalWrite(_enable_pin, LOW); + delayMicroseconds(100); // commands need > 37us to settle +} + +void LiquidCrystal::write4bits(uint8_t value) { + for (int i = 0; i < 4; i++) { + pinMode(_data_pins[i], OUTPUT); + digitalWrite(_data_pins[i], (value >> i) & 0x01); + } + + pulseEnable(); +} + +void LiquidCrystal::write8bits(uint8_t value) { + for (int i = 0; i < 8; i++) { + pinMode(_data_pins[i], OUTPUT); + digitalWrite(_data_pins[i], (value >> i) & 0x01); + } + + pulseEnable(); +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/LiquidCrystal.h b/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/LiquidCrystal.h new file mode 100644 index 000000000..24ec5afdf --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/LiquidCrystal.h @@ -0,0 +1,106 @@ +#ifndef LiquidCrystal_h +#define LiquidCrystal_h + +#include +#include "Print.h" + +// commands +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x20 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off control +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_2LINE 0x08 +#define LCD_1LINE 0x00 +#define LCD_5x10DOTS 0x04 +#define LCD_5x8DOTS 0x00 + +class LiquidCrystal : public Print { +public: + LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3); + LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3); + + void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + + void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); + + void clear(); + void home(); + + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void leftToRight(); + void rightToLeft(); + void autoscroll(); + void noAutoscroll(); + + void createChar(uint8_t, uint8_t[]); + void setCursor(uint8_t, uint8_t); + virtual size_t write(uint8_t); + void command(uint8_t); + + using Print::write; +private: + void send(uint8_t, uint8_t); + void write4bits(uint8_t); + void write8bits(uint8_t); + void pulseEnable(); + + uint8_t _rs_pin; // LOW: command. HIGH: character. + uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD. + uint8_t _enable_pin; // activated by a HIGH pulse. + uint8_t _data_pins[8]; + + uint8_t _displayfunction; + uint8_t _displaycontrol; + uint8_t _displaymode; + + uint8_t _initialized; + + uint8_t _numlines,_currline; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/keywords.txt b/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/keywords.txt new file mode 100644 index 000000000..132845cb6 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/LiquidCrystal/keywords.txt @@ -0,0 +1,37 @@ +####################################### +# Syntax Coloring Map For LiquidCrystal +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +LiquidCrystal KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +clear KEYWORD2 +home KEYWORD2 +print KEYWORD2 +setCursor KEYWORD2 +cursor KEYWORD2 +noCursor KEYWORD2 +blink KEYWORD2 +noBlink KEYWORD2 +display KEYWORD2 +noDisplay KEYWORD2 +autoscroll KEYWORD2 +noAutoscroll KEYWORD2 +leftToRight KEYWORD2 +rightToLeft KEYWORD2 +scrollDisplayLeft KEYWORD2 +scrollDisplayRight KEYWORD2 +createChar KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/SPI/SPI.cpp b/ArduinoAddons/Arduino_1.0.x/libraries/SPI/SPI.cpp new file mode 100644 index 000000000..5e48073f7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/SPI/SPI.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2010 by Cristian Maglie + * SPI Master library for arduino. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of either the GNU General Public License version 2 + * or the GNU Lesser General Public License version 2.1, both as + * published by the Free Software Foundation. + */ + +#include "pins_arduino.h" +#include "SPI.h" + +SPIClass SPI; + +void SPIClass::begin() { + + // Set SS to high so a connected chip will be "deselected" by default + digitalWrite(SS, HIGH); + + // When the SS pin is set as OUTPUT, it can be used as + // a general purpose output port (it doesn't influence + // SPI operations). + pinMode(SS, OUTPUT); + + // Warning: if the SS pin ever becomes a LOW INPUT then SPI + // automatically switches to Slave, so the data direction of + // the SS pin MUST be kept as OUTPUT. + SPCR |= _BV(MSTR); + SPCR |= _BV(SPE); + + // Set direction register for SCK and MOSI pin. + // MISO pin automatically overrides to INPUT. + // By doing this AFTER enabling SPI, we avoid accidentally + // clocking in a single bit since the lines go directly + // from "input" to SPI control. + // http://code.google.com/p/arduino/issues/detail?id=888 + pinMode(SCK, OUTPUT); + pinMode(MOSI, OUTPUT); +} + + +void SPIClass::end() { + SPCR &= ~_BV(SPE); +} + +void SPIClass::setBitOrder(uint8_t bitOrder) +{ + if(bitOrder == LSBFIRST) { + SPCR |= _BV(DORD); + } else { + SPCR &= ~(_BV(DORD)); + } +} + +void SPIClass::setDataMode(uint8_t mode) +{ + SPCR = (SPCR & ~SPI_MODE_MASK) | mode; +} + +void SPIClass::setClockDivider(uint8_t rate) +{ + SPCR = (SPCR & ~SPI_CLOCK_MASK) | (rate & SPI_CLOCK_MASK); + SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((rate >> 2) & SPI_2XCLOCK_MASK); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/SPI/SPI.h b/ArduinoAddons/Arduino_1.0.x/libraries/SPI/SPI.h new file mode 100644 index 000000000..f647d5c89 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/SPI/SPI.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2010 by Cristian Maglie + * SPI Master library for arduino. + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of either the GNU General Public License version 2 + * or the GNU Lesser General Public License version 2.1, both as + * published by the Free Software Foundation. + */ + +#ifndef _SPI_H_INCLUDED +#define _SPI_H_INCLUDED + +#include +#include +#include + +#define SPI_CLOCK_DIV4 0x00 +#define SPI_CLOCK_DIV16 0x01 +#define SPI_CLOCK_DIV64 0x02 +#define SPI_CLOCK_DIV128 0x03 +#define SPI_CLOCK_DIV2 0x04 +#define SPI_CLOCK_DIV8 0x05 +#define SPI_CLOCK_DIV32 0x06 +//#define SPI_CLOCK_DIV64 0x07 + +#define SPI_MODE0 0x00 +#define SPI_MODE1 0x04 +#define SPI_MODE2 0x08 +#define SPI_MODE3 0x0C + +#define SPI_MODE_MASK 0x0C // CPOL = bit 3, CPHA = bit 2 on SPCR +#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR +#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR + +class SPIClass { +public: + inline static byte transfer(byte _data); + + // SPI Configuration methods + + inline static void attachInterrupt(); + inline static void detachInterrupt(); // Default + + static void begin(); // Default + static void end(); + + static void setBitOrder(uint8_t); + static void setDataMode(uint8_t); + static void setClockDivider(uint8_t); +}; + +extern SPIClass SPI; + +byte SPIClass::transfer(byte _data) { + SPDR = _data; + while (!(SPSR & _BV(SPIF))) + ; + return SPDR; +} + +void SPIClass::attachInterrupt() { + SPCR |= _BV(SPIE); +} + +void SPIClass::detachInterrupt() { + SPCR &= ~_BV(SPIE); +} + +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/SPI/keywords.txt b/ArduinoAddons/Arduino_1.0.x/libraries/SPI/keywords.txt new file mode 100644 index 000000000..fa7616581 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/SPI/keywords.txt @@ -0,0 +1,36 @@ +####################################### +# Syntax Coloring Map SPI +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +SPI KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +begin KEYWORD2 +end KEYWORD2 +transfer KEYWORD2 +setBitOrder KEYWORD2 +setDataMode KEYWORD2 +setClockDivider KEYWORD2 + + +####################################### +# Constants (LITERAL1) +####################################### +SPI_CLOCK_DIV4 LITERAL1 +SPI_CLOCK_DIV16 LITERAL1 +SPI_CLOCK_DIV64 LITERAL1 +SPI_CLOCK_DIV128 LITERAL1 +SPI_CLOCK_DIV2 LITERAL1 +SPI_CLOCK_DIV8 LITERAL1 +SPI_CLOCK_DIV32 LITERAL1 +SPI_CLOCK_DIV64 LITERAL1 +SPI_MODE0 LITERAL1 +SPI_MODE1 LITERAL1 +SPI_MODE2 LITERAL1 +SPI_MODE3 LITERAL1 \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/ChangeLog b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/ChangeLog new file mode 100644 index 000000000..1ee88d6cf --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/ChangeLog @@ -0,0 +1,114 @@ + +u8glib ChangeLog + +2012-01-01 v0.01 Oliver Kraus + * first beta release for Arduino IDE with simple SSD1325 support +2012-01-04 v0.02 Oliver Kraus + * support for some more display types +2012-01-07 v0.03 Oliver Kraus + * fixed some bugs, added more examples +2012-01-07 v0.04 Oliver Kraus + * single font file +2012-01-08 v0.05 Oliver Kraus + * Cleanup + * More examples + * SSD1325 graylevel support +2012-01-15 v0.06 Oliver Kraus + * LM6063 support +2012-01-17 v0.07 Oliver Kraus + * LM6063 support (update) +2012-01-19 v0.08 Oliver Kraus + * ST7920 beta device +2012-01-21 v0.09 Oliver Kraus + * ST7920 fixed (192x32) + * fixed bug in com layer if pins are none + * str reference position +2012-01-22 v0.10 Oliver Kraus + * Experimental LM6059 +2012-01-24 v0.11 Oliver Kraus + * new st7920 memory layout for 128x64 lcd + * experimental st7920 SPI +2012-01-25 v0.12 Oliver Kraus + * fixed st7920 memory layout for 128x64 lcd + * ST7920 SPI performance improvement +2012-01-27 v0.13 Oliver Kraus + * LM6059 (Adafruit Display) fixed +2012-02-01 v0.14 Oliver Kraus + * undoRotation() + * setRot..() can be used without restrictions + * Class U8GLIB derived from Print class. New function "print" + * Fixed memory index bug in the page management procedures +2012-02-12 v1.00 Oliver Kraus + * XBM support + * F() macro support + * str-rotation commands support ref-height and ref-position +2012-03-17 v1.02 Oliver Kraus + * U8GLIB_ST7687_C144MVGD spi experimental + * U8GLIB_LC7981_160X80 8bit + * Intersection test for frame and box procedures + * 4L double memory architecture + * setContrast infrastructure implemented, but not available for all devices + * drawCircle, drawDisc + * Bugfix for drawStr270 + * New examples: Chess (ported from dogm128 lib) and GraphicsTest +2012-03-31 v1.03 Oliver Kraus + * experimental parallel mode atmega + * more unifont code pages + * double memory, for NHD OLED and DOGXL160 + * "Menu" example + * drawLine +2012-04-13 v1.04 Oliver Kraus + * Adjust U8grelease: Same version number with AVR and Arduino variant +2012-06-10 v1.05 Oliver Kraus + * m2icon font + * experimental lc7981_240x64 device + * experimental ssd1306 + * experimental ssd1322 + * Hardware state backup/restore procedure +2012-06-15 v1.06 Oliver Kraus + * SBN1661 (SED1520?) support + * SSD1306 support + * U8G_PROGMEM bugfix +2012-07-04 v1.07 Oliver Kraus + * Added Makefiles for AVR release (issue 77) + * Fixed examples for Arduino Environment (issue 78) +2012-10-02 v1.08 Oliver Kraus + * Improved delay calculation for strobe pulse (issue 20) + * Support Chipkit (issue 39) + * Improved speed for ST7920 parallel mode (issue 79) + * Overall speed optimization (new page intersection algorithm) + * Support for Displays Newhaven NHD-C12864, CrystalFontz GFAG20232, Seeedstudio 96x96 OLED + * Added SPI support for ST7920 with plain AVR (issue 85) + * Add more LC7981 devices +2012-12-23 v1.09 Oliver Kraus + * Support for Displaytech 64128n + * Support for MINI12864 + * HW SPI for ST7920 + * Add delay after sending a byte with (ST7920 com) + * Support ATTiny + * Support I2C for SSD1306 + * bdf2u8g, Windows executable released + * LC7981 320x64 + * Scalue up: u8g::setScale2x2 + * Added more bitmap fonts + * u8g::drawRBox(), u8g::drawRFrame() + * Support for CFAG20232 (st7920_202x32) + * Fixed ST7920 SW SPI for ChipKit + * Support for tls8204 +2013-02-02 v1.10 Oliver Kraus + * Support for SSD1309 + * Support for NHD-C12832A1Z + * Bugfix: Fixed reset controll in parallel modes + * Bugfix: Fixed calculation of cursor position + * Bugfix: ST7920 parallel mode +2013-03-2 v1.11 Oliver Kraus + * Support for T6963 + * Support for Arduino Due + * Sleep Mode + * 4x mode for ST7920 + * New C++ interface for ST7920 + + + + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/INSTALL.TXT b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/INSTALL.TXT new file mode 100644 index 000000000..d87f97128 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/INSTALL.TXT @@ -0,0 +1,21 @@ + +U8GLIB +http://code.google.com/p/u8glib/ + + +Install instructions for the Arduino environment. + + 1. Unzip u8glib_arduino_vX.XX.zip into the "libraries" folder + 2. Start Arduino IDE + +Install instructions for the Chipkit (Arduino) environment. + + 1. cd /libraries + 2. unzip u8glib_arduino_vX.XX.zip + 3. cd ///hardware/pic32/libraries + 4. again: u8glib_arduino_vX.XX.zip + 5. Open hardware/pic32/cores/pic32/Print.h + Remove line + #define BYTE 0 + from the file, use PRINT_BYTE instead of BYTE. + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.cpp b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.cpp new file mode 100644 index 000000000..aa870b114 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.cpp @@ -0,0 +1,80 @@ +/* + + U8glib.cpp + + C++ Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "U8glib.h" + + + +uint8_t U8GLIB::initSPI(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) +{ + prepare(); + return u8g_InitSPI(&u8g, dev, sck, mosi, cs, a0, reset); +} + +uint8_t U8GLIB::initHWSPI(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) +{ + prepare(); + return u8g_InitHWSPI(&u8g, dev, cs, a0, reset); +} + +uint8_t U8GLIB::initI2C(u8g_dev_t *dev, uint8_t options) +{ + prepare(); + return u8g_InitI2C(&u8g, dev, options); +} + +uint8_t U8GLIB::init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) +{ + prepare(); + return u8g_Init8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset); +} + +uint8_t U8GLIB::init8BitFixedPort(u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset) +{ + prepare(); + return u8g_Init8BitFixedPort(&u8g, dev, en, cs, di, rw, reset); +} + +uint8_t U8GLIB::initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) +{ + prepare(); + return u8g_InitRW8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.h b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.h new file mode 100644 index 000000000..a77444425 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/U8glib.h @@ -0,0 +1,826 @@ +/* + + U8glib.h + + C++ Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef _CPP_U8GLIB +#define _CPP_U8GLIB + +#include +#include "utility/u8g.h" + + +class U8GLIB : public Print +{ + private: + u8g_t u8g; + u8g_uint_t tx, ty; // current position for the Print base class procedures + uint8_t is_begin; + + void prepare(void) { tx = 0; ty = 0; is_begin = 0; } + void cbegin(void) { if ( is_begin == 0 ) { is_begin = 1; u8g_Begin(&u8g); } } + uint8_t initSPI(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE); + uint8_t initHWSPI(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE); + uint8_t initI2C(u8g_dev_t *dev, uint8_t options); + protected: + uint8_t init8BitFixedPort(u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset); + private: + uint8_t init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE); + uint8_t initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset); + public: + + /* constructor */ + U8GLIB(void) + { } + U8GLIB(u8g_dev_t *dev) + { prepare(); u8g_Init(&u8g, dev); } + U8GLIB(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) + { initSPI(dev, sck, mosi, cs, a0, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) + { initHWSPI(dev, cs, a0, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t options) + { initI2C(dev, options); } + U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) + { init8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) + { initRW8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); } + + uint8_t begin(void) { is_begin = 1; return u8g_Begin(&u8g); } + + void setPrintPos(u8g_uint_t x, u8g_uint_t y) { tx = x; ty = y; } + u8g_t *getU8g(void) { return &u8g; } + + + /* implementation of the write interface to the print class */ +#if defined(ARDUINO) && ARDUINO >= 100 + size_t write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); return 1;} +#else + void write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); } +#endif + + /* screen rotation */ + void undoRotation(void) { u8g_UndoRotation(&u8g); } + void setRot90(void) { u8g_SetRot90(&u8g); } + void setRot180(void) { u8g_SetRot180(&u8g); } + void setRot270(void) { u8g_SetRot270(&u8g); } + + /* screen scaling */ + void undoScale(void) { u8g_UndoScale(&u8g); } + void setScale2x2(void) { u8g_SetScale2x2(&u8g); } + + /* picture loop */ + void firstPage(void) { cbegin(); u8g_FirstPage(&u8g); } + uint8_t nextPage(void) { return u8g_NextPage(&u8g); } + + /* system commands */ + uint8_t setContrast(uint8_t contrast) { cbegin(); return u8g_SetContrast(&u8g, contrast); } + void sleepOn(void) { u8g_SleepOn(&u8g); } + void sleepOff(void) { u8g_SleepOff(&u8g); } + + /* graphic primitives */ + void setColorIndex(uint8_t color_index) { u8g_SetColorIndex(&u8g, color_index); } + uint8_t getColorIndex(void) { return u8g_GetColorIndex(&u8g); } + + void setDefaultForegroundColor(void) { u8g_SetDefaultForegroundColor(&u8g); } + void setDefaultBackgroundColor(void) { u8g_SetDefaultBackgroundColor(&u8g); } + void setDefaultMidColor(void) { u8g_SetDefaultMidColor(&u8g); } + + u8g_uint_t getWidth(void) { return u8g_GetWidth(&u8g); } + u8g_uint_t getHeight(void) { return u8g_GetHeight(&u8g); } + uint8_t getMode(void) { return u8g_GetMode(&u8g); } + + void drawPixel(u8g_uint_t x, u8g_uint_t y) { return u8g_DrawPixel(&u8g, x, y); } + void drawHLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) { u8g_DrawHLine(&u8g, x, y, w); } + void drawVLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t h) { u8g_DrawVLine(&u8g, x, y, h); } + void drawLine(u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2) { u8g_DrawLine(&u8g, x1, y1, x2, y2); } + + void drawFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { u8g_DrawFrame(&u8g, x, y, w, h); } + void drawRFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) { u8g_DrawRFrame(&u8g, x, y, w, h,r); } + void drawBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { u8g_DrawBox(&u8g, x, y, w, h); } + void drawRBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) { u8g_DrawRBox(&u8g, x, y, w, h,r); } + + void drawCircle(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawCircle(&u8g, x0, y0, rad, opt); } + void drawDisc(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawDisc(&u8g, x0, y0, rad, opt); } + + /* bitmap handling */ + void drawBitmap(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap) + { u8g_DrawBitmap(&u8g, x, y, cnt, h, bitmap); } + void drawBitmapP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) + { u8g_DrawBitmapP(&u8g, x, y, cnt, h, bitmap); } + + void drawXBM(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap) + { u8g_DrawXBM(&u8g, x, y, w, h, bitmap); } + void drawXBMP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) + { u8g_DrawXBMP(&u8g, x, y, w, h, bitmap); } + + + /* font handling */ + void setFont(const u8g_fntpgm_uint8_t *font) {u8g_SetFont(&u8g, font); } + int8_t getFontAscent(void) { return u8g_GetFontAscent(&u8g); } + int8_t getFontDescent(void) { return u8g_GetFontDescent(&u8g); } + int8_t getFontLineSpacing(void) { return u8g_GetFontLineSpacing(&u8g); } + + u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr(&u8g, x, y, s); } + u8g_uint_t drawStr90(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr90(&u8g, x, y, s); } + u8g_uint_t drawStr180(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr180(&u8g, x, y, s); } + u8g_uint_t drawStr270(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr270(&u8g, x, y, s); } + u8g_uint_t drawStrP(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStrP(&u8g, x, y, s); } + u8g_uint_t drawStr90P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr90P(&u8g, x, y, s); } + u8g_uint_t drawStr180P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr180P(&u8g, x, y, s); } + u8g_uint_t drawStr270P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr270P(&u8g, x, y, s); } + + void setFontPosBaseline(void) { u8g_SetFontPosBaseline(&u8g); } + void setFontPosBottom(void) { u8g_SetFontPosBottom(&u8g); } + void setFontPosCenter(void) { u8g_SetFontPosCenter(&u8g); } + void setFontPosTop(void) { u8g_SetFontPosTop(&u8g); } + + void setFontRefHeightText(void) { u8g_SetFontRefHeightText(&u8g); } + void setFontRefHeightExtendedText(void) { u8g_SetFontRefHeightExtendedText(&u8g); } + void setFontRefHeightAll(void) { u8g_SetFontRefHeightAll(&u8g); } + void setFontLineSpacingFactor(uint8_t factor) { u8g_SetFontLineSpacingFactor(&u8g, factor); } + + + u8g_uint_t getStrPixelWidth(const char *s) { return u8g_GetStrPixelWidth(&u8g, s); } + u8g_uint_t getStrPixelWidthP(u8g_pgm_uint8_t *s) { return u8g_GetStrPixelWidthP(&u8g, s); } + u8g_uint_t getStrWidth(const char *s) { return u8g_GetStrWidth(&u8g, s); } + u8g_uint_t getStrWidthP(u8g_pgm_uint8_t *s) { return u8g_GetStrWidthP(&u8g, s); } + + void setHardwareBackup(u8g_state_cb backup_cb) { u8g_SetHardwareBackup(&u8g, backup_cb); } + +#if defined(ARDUINO) && ARDUINO >= 100 + // support for the F() macro + + u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStrP(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr90(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr90P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr180(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr180P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr270(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr270P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + + u8g_uint_t getStrPixelWidth(const __FlashStringHelper *s) { return u8g_GetStrPixelWidthP(&u8g, (u8g_pgm_uint8_t *)s); } + u8g_uint_t getStrWidth(const __FlashStringHelper *s) { return u8g_GetStrWidthP(&u8g, (u8g_pgm_uint8_t *)s); } +#endif + + /* cursor handling */ + void setCursorFont(const u8g_pgm_uint8_t *cursor_font) { u8g_SetCursorFont(&u8g, cursor_font); } + void setCursorStyle(uint8_t encoding) { u8g_SetCursorStyle(&u8g, encoding); } + void setCursorPos(u8g_uint_t cursor_x, u8g_uint_t cursor_y) { u8g_SetCursorPos(&u8g, cursor_x, cursor_y); } + void setCursorColor(uint8_t fg, uint8_t bg) { u8g_SetCursorColor(&u8g, fg, bg); } + void enableCursor(void) { u8g_EnableCursor(&u8g); } + void disableCursor(void) { u8g_DisableCursor(&u8g); } + void drawCursor(void) { u8g_DrawCursor(&u8g); } + + /* virtual screen */ + + void setVirtualScreenDimension(u8g_uint_t width, u8g_uint_t height) { u8g_SetVirtualScreenDimension(&u8g, width, height); } + uint8_t addToVirtualScreen(u8g_uint_t x, u8g_uint_t y, U8GLIB &child_u8g) { return u8g_AddToVirtualScreen(&u8g, x, y, &child_u8g.u8g); } + +}; + + +class U8GLIB_DOGS102 : public U8GLIB +{ + public: + U8GLIB_DOGS102(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGS102(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_MINI12864 : public U8GLIB +{ + public: + U8GLIB_MINI12864(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_MINI12864(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGM132 : public U8GLIB +{ + public: + U8GLIB_DOGM132(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm132_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGM132(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm132_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD_C12832 : public U8GLIB +{ + public: + U8GLIB_NHD_C12832(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD_C12832(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD_C12832(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_DOGM128 : public U8GLIB +{ + public: + U8GLIB_DOGM128(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGM128(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_LM6059 : public U8GLIB +{ + public: + U8GLIB_LM6059(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6059(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_LM6063 : public U8GLIB +{ + public: + U8GLIB_LM6063(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6063(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_64128N : public U8GLIB +{ + public: + U8GLIB_64128N(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_64128N(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD_C12864 : public U8GLIB +{ + public: + U8GLIB_NHD_C12864(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD_C12864(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_ST7920_128X64 : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_128X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } + // U8GLIB_ST7920_128X64(uint8_t cs) + // : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, cs, U8G_PIN_NONE, U8G_PIN_NONE) + // { } +}; + +class U8GLIB_ST7920_128X64_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_128X64_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + + +class U8GLIB_ST7920_192X32 : public U8GLIB // OBSOLETE, use U8GLIB_ST7920_192X32_1X instead +{ + public: + U8GLIB_ST7920_192X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_192X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_192X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_ST7920_192X32_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_192X32_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_192X32_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_192X32_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + +class U8GLIB_ST7920_202X32 : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_202X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_202X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_ST7920_202X32_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_202X32_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + +class U8GLIB_LC7981_160X80 : public U8GLIB +{ + public: + U8GLIB_LC7981_160X80(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_160x80_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_LC7981_240X64 : public U8GLIB +{ + public: + U8GLIB_LC7981_240X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_240x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_LC7981_240X128 : public U8GLIB +{ + public: + U8GLIB_LC7981_240X128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_240x128_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +// 16 bit mode required: Remove comment from "#define U8G_16BIT 1" in utility/u8g.h +class U8GLIB_LC7981_320X64 : public U8GLIB +{ + public: + U8GLIB_LC7981_320X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_320x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + + + +class U8GLIB_DOGXL160_BW : public U8GLIB +{ + public: + U8GLIB_DOGXL160_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_GR : public U8GLIB +{ + public: + U8GLIB_DOGXL160_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_2X_BW : public U8GLIB +{ + public: + U8GLIB_DOGXL160_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_2X_GR : public U8GLIB +{ + public: + U8GLIB_DOGXL160_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_gr_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_NHD27OLED_BW : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_BW(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_NHD27OLED_2X_BW : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_BW(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_NHD31OLED_BW : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_2X_BW : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_GR : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_2X_GR : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_SSD1306_128X64 : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_i2c, options) + { } + +}; + +class U8GLIB_SSD1309_128X64 : public U8GLIB +{ + public: + U8GLIB_SSD1309_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1309_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1309_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_i2c, options) + { } + +}; + +class U8GLIB_SSD1306_128X32 : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_i2c, options) + { } + +}; + + +class U8GLIB_NHD27OLED_GR : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD27OLED_2X_GR : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1327_96X96_GR : public U8GLIB +{ + public: + U8GLIB_SSD1327_96X96_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_GR(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_i2c, options) + { } +}; + +class U8GLIB_SSD1327_96X96_2X_GR : public U8GLIB +{ + public: + U8GLIB_SSD1327_96X96_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_2X_GR(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_i2c, options) + { } +}; + +class U8GLIB_PCF8812 : public U8GLIB +{ + public: + U8GLIB_PCF8812(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcf8812_96x65_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_PCD8544 : public U8GLIB +{ + public: + U8GLIB_PCD8544(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcd8544_84x48_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_TLS8204_84X48 : public U8GLIB +{ + public: + U8GLIB_TLS8204_84X48(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_tls8204_84x48_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_KS0108_128 : public U8GLIB +{ + public: + U8GLIB_KS0108_128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ks0108_128x64_fast, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_SBN1661_122X32 : public U8GLIB +{ + public: + U8GLIB_SBN1661_122X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sbn1661_122x32, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_T6963_240X128 : public U8GLIB +{ + public: + U8GLIB_T6963_240X128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_240x128_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + +class U8GLIB_T6963_240X64 : public U8GLIB +{ + public: + U8GLIB_T6963_240X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_240x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + +class U8GLIB_T6963_128X64 : public U8GLIB +{ + public: + U8GLIB_T6963_128X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + + +class U8GLIB_ST7687_C144MVGD: public U8GLIB +{ + public: + U8GLIB_ST7687_C144MVGD(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7687_c144mvgd_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7687_C144MVGD(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs, uint8_t a0, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ks0108_128x64_fast, d0, d1, d2, d3, d4, d5, d6, d7, en, cs, U8G_PIN_NONE, a0, rw, reset) + { } +}; + +class U8GLIB_ILI9325D_320x240 : public U8GLIB +{ + public: + /* + U8GLIB_ILI9325D_320x240(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ili9325d_320x240_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } + */ + U8GLIB_ILI9325D_320x240( uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + { init8BitFixedPort(&u8g_dev_ili9325d_320x240_8bit, en, cs1, di, rw, reset); } +}; + +class U8GLIB_FLIPDISC_2X7 : public U8GLIB +{ + public: + U8GLIB_FLIPDISC_2X7(void) : U8GLIB(&u8g_dev_flipdisc_2x7) + { } +}; + +class U8GLIB_VS : public U8GLIB +{ + public: + U8GLIB_VS(void) : U8GLIB(&u8g_dev_vs) + { } +}; + + +#endif /* _CPP_U8GLIB */ diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.pde new file mode 100644 index 000000000..53fbe1b21 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Bitmap/Bitmap.pde @@ -0,0 +1,130 @@ +/* + + Bitmap.pde + + Show simple bitmap + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +const uint8_t rook_bitmap[] PROGMEM = { + 0x00, // 00000000 + 0x55, // 01010101 + 0x7f, // 01111111 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x7f // 01111111 +}; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.drawBitmapP( 0, 0, 1, 8, rook_bitmap); +} + +void setup(void) { +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(1000); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.pde new file mode 100644 index 000000000..3cef35398 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Chess/Chess.pde @@ -0,0 +1,180 @@ +/* + + Chess.pde + + Little Rook Chess + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +// DOGS102 shield configuration values +uint8_t uiKeyPrev = 2; +uint8_t uiKeyNext = 4; +uint8_t uiKeySelect = 5; +uint8_t uiKeyBack = 3; + +// DOGM128-Shield configuration values +// DOGXL60-Shield configuration values +//uint8_t uiKeyPrev = 7; +//uint8_t uiKeyNext = 3; +//uint8_t uiKeySelect = 2; +//uint8_t uiKeyBack = 8; + +uint8_t uiKeyCodeFirst = CHESS_KEY_NONE; +uint8_t uiKeyCodeSecond = CHESS_KEY_NONE; +uint8_t uiKeyCode = CHESS_KEY_NONE; + + +void uiSetup(void) { + // configure input keys + + pinMode(uiKeyPrev, INPUT); // set pin to input + digitalWrite(uiKeyPrev, HIGH); // turn on pullup resistors + pinMode(uiKeyNext, INPUT); // set pin to input + digitalWrite(uiKeyNext, HIGH); // turn on pullup resistors + pinMode(uiKeySelect, INPUT); // set pin to input + digitalWrite(uiKeySelect, HIGH); // turn on pullup resistors + pinMode(uiKeyBack, INPUT); // set pin to input + digitalWrite(uiKeyBack, HIGH); // turn on pullup resistors +} + +void uiStep(void) +{ + uiKeyCodeSecond = uiKeyCodeFirst; + if ( digitalRead(uiKeyPrev) == LOW ) + uiKeyCodeFirst = CHESS_KEY_PREV; + else if ( digitalRead(uiKeyNext) == LOW ) + uiKeyCodeFirst = CHESS_KEY_NEXT; + else if ( digitalRead(uiKeySelect) == LOW ) + uiKeyCodeFirst = CHESS_KEY_SELECT; + else if ( digitalRead(uiKeyBack) == LOW ) + uiKeyCodeFirst = CHESS_KEY_BACK; + else + uiKeyCodeFirst = CHESS_KEY_NONE; + + if ( uiKeyCodeSecond == uiKeyCodeFirst ) + uiKeyCode = uiKeyCodeFirst; + else + uiKeyCode = CHESS_KEY_NONE; +} + + +void setup() { + // rotate screen, if required + u8g.setRot180(); + + uiSetup(); + chess_Init(u8g.getU8g(), 0); +} + +void loop() { + uint8_t keyCode = CHESS_KEY_NONE; + + u8g.firstPage(); + do { + chess_Draw(); + uiStep(); + if ( uiKeyCode != CHESS_KEY_NONE ) + keyCode = uiKeyCode; + } while( u8g.nextPage() ); + + u8g_Delay(10); + chess_Step(keyCode); + uiStep(); + keyCode = uiKeyCode; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.pde new file mode 100644 index 000000000..fcf4b74c5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Console/Console.pde @@ -0,0 +1,230 @@ +/* + + Console.pde + + Read from serial monitor, output to display + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +// setup input buffer +#define LINE_MAX 30 +uint8_t line_buf[LINE_MAX] = "U8GLIB Console"; +uint8_t line_pos = 0; + +// setup a text screen to support scrolling +#define ROW_MAX 12 + + +uint8_t screen[ROW_MAX][LINE_MAX]; +uint8_t rows, cols; + +// line height, which matches the selected font (5x7) +#define LINE_PIXEL_HEIGHT 7 + +// clear entire screen, called during setup +void clear_screen(void) { + uint8_t i, j; + for( i = 0; i < ROW_MAX; i++ ) + for( j = 0; j < LINE_MAX; j++ ) + screen[i][j] = 0; +} + +// append a line to the screen, scroll up +void add_line_to_screen(void) { + uint8_t i, j; + for( j = 0; j < LINE_MAX; j++ ) + for( i = 0; i < rows-1; i++ ) + screen[i][j] = screen[i+1][j]; + + for( j = 0; j < LINE_MAX; j++ ) + screen[rows-1][j] = line_buf[j]; +} + +// U8GLIB draw procedure: output the screen +void draw(void) { + uint8_t i, y; + // graphic commands to redraw the complete screen are placed here + y = 0; // reference is the top left -1 position of the string + y--; // correct the -1 position of the drawStr + for( i = 0; i < rows; i++ ) + { + u8g.drawStr( 0, y, (char *)(screen[i])); + y += u8g.getFontLineSpacing(); + } +} + +void exec_line(void) { + // echo line to the serial monitor + Serial.println((const char *)line_buf); + + // add the line to the screen + add_line_to_screen(); + + // U8GLIB picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); +} + +// clear current input buffer +void reset_line(void) { + line_pos = 0; + line_buf[line_pos] = '\0'; +} + +// add a single character to the input buffer +void char_to_line(uint8_t c) { + line_buf[line_pos] = c; + line_pos++; + line_buf[line_pos] = '\0'; +} + +// check serial in and handle the character +void read_line(void) { + if ( Serial.available() ) + { + uint8_t c; + c = Serial.read(); + if ( line_pos >= cols-1 ) { + exec_line(); + reset_line(); + char_to_line(c); + } + else if ( c == '\n' ) { + // ignore '\n' + } + else if ( c == '\r' ) { + exec_line(); + reset_line(); + } + else { + char_to_line(c); + } + } +} + +// Arduino master setup +void setup(void) { + // set font for the console window + u8g.setFont(u8g_font_5x7); + //u8g.setFont(u8g_font_9x15); + + // set upper left position for the string draw procedure + u8g.setFontPosTop(); + + // calculate the number of rows for the display + rows = u8g.getHeight() / u8g.getFontLineSpacing(); + if ( rows > ROW_MAX ) + rows = ROW_MAX; + + // estimate the number of columns for the display + cols = u8g.getWidth() / u8g.getStrWidth("m"); + if ( cols > LINE_MAX-1 ) + cols = LINE_MAX-1; + + clear_screen(); // clear screen + delay(1000); // do some delay + Serial.begin(9600); // init serial + exec_line(); // place the input buffer into the screen + reset_line(); // clear input buffer +} + +// Arduino main loop +void loop(void) { + read_line(); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.pde new file mode 100644 index 000000000..4cb3b20b7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/F/F.pde @@ -0,0 +1,139 @@ +/* + + F.pde + + Example code for the F() macro. + + >>> This example requires Arduino 1.0 and above. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + + // assign default font + u8g.setFont(u8g_font_unifont); + + // pointer to strings in flash memory can be stored in a special type + const __FlashStringHelper *flash_ptr; + + // the result of the F() macro can be assigned to this pointer + flash_ptr = F("Hello World!"); + + // this pointer can be used as argument to the draw procedures + u8g.drawStr( 0+1, 20+1, flash_ptr); + u8g.drawStr( 0, 20, flash_ptr); + + // of course, the F() macro can be used directly + u8g.drawStr( 0, 40, F("PROGMEM")); + +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde new file mode 100644 index 000000000..4e9135209 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde @@ -0,0 +1,223 @@ +/* + + GraphicsTest.pde + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void u8g_prepare(void) { + u8g.setFont(u8g_font_6x10); + u8g.setFontRefHeightExtendedText(); + u8g.setDefaultForegroundColor(); + u8g.setFontPosTop(); +} + +void u8g_box_frame(uint8_t a) { + u8g.drawStr( 0, 0, "drawBox"); + u8g.drawBox(5,10,20,10); + u8g.drawBox(10+a,15,30,7); + u8g.drawStr( 0, 30, "drawFrame"); + u8g.drawFrame(5,10+30,20,10); + u8g.drawFrame(10+a,15+30,30,7); +} + +void u8g_disc_circle(uint8_t a) { + u8g.drawStr( 0, 0, "drawDisc"); + u8g.drawDisc(10,18,9); + u8g.drawDisc(24+a,16,7); + u8g.drawStr( 0, 30, "drawCircle"); + u8g.drawCircle(10,18+30,9); + u8g.drawCircle(24+a,16+30,7); +} + +void u8g_r_frame(uint8_t a) { + u8g.drawStr( 0, 0, "drawRFrame/Box"); + u8g.drawRFrame(5, 10,40,30, a+1); + u8g.drawRBox(50, 10,25,40, a+1); +} + +void u8g_string(uint8_t a) { + u8g.drawStr(30+a,31, " 0"); + u8g.drawStr90(30,31+a, " 90"); + u8g.drawStr180(30-a,31, " 180"); + u8g.drawStr270(30,31-a, " 270"); +} + +void u8g_line(uint8_t a) { + u8g.drawStr( 0, 0, "drawLine"); + u8g.drawLine(7+a, 10, 40, 55); + u8g.drawLine(7+a*2, 10, 60, 55); + u8g.drawLine(7+a*3, 10, 80, 55); + u8g.drawLine(7+a*4, 10, 100, 55); +} + +void u8g_ascii_1() { + char s[2] = " "; + uint8_t x, y; + u8g.drawStr( 0, 0, "ASCII page 1"); + for( y = 0; y < 6; y++ ) { + for( x = 0; x < 16; x++ ) { + s[0] = y*16 + x + 32; + u8g.drawStr(x*7, y*10+10, s); + } + } +} + +void u8g_ascii_2() { + char s[2] = " "; + uint8_t x, y; + u8g.drawStr( 0, 0, "ASCII page 2"); + for( y = 0; y < 6; y++ ) { + for( x = 0; x < 16; x++ ) { + s[0] = y*16 + x + 160; + u8g.drawStr(x*7, y*10+10, s); + } + } +} + + +uint8_t draw_state = 0; + +void draw(void) { + u8g_prepare(); + switch(draw_state >> 3) { + case 0: u8g_box_frame(draw_state&7); break; + case 1: u8g_disc_circle(draw_state&7); break; + case 2: u8g_r_frame(draw_state&7); break; + case 3: u8g_string(draw_state&7); break; + case 4: u8g_line(draw_state&7); break; + case 5: u8g_ascii_1(); break; + case 6: u8g_ascii_2(); break; + } +} + +void setup(void) { + + // flip screen, if required + //u8g.setRot180(); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on + + //u8g.setContrast(0x30); + + pinMode(13, OUTPUT); + digitalWrite(13, HIGH); +} + +void loop(void) { + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // increase the state + draw_state++; + if ( draw_state >= 7*8 ) + draw_state = 0; + + // rebuild the picture after some delay + delay(150); + +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.pde new file mode 100644 index 000000000..5a00939a3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/HelloWorld/HelloWorld.pde @@ -0,0 +1,136 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + //u8g.setFont(u8g_font_osb21); + u8g.drawStr( 0, 22, "Hello World!"); +} + +void setup(void) { + + // flip screen, if required + // u8g.setRot180(); + + // set SPI backup if required + //u8g.setHardwareBackup(u8g_backup_avr_spi); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.pde new file mode 100644 index 000000000..fbb0af034 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Menu/Menu.pde @@ -0,0 +1,234 @@ +/* + + Menu.pde + + Simple Menu Selection + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +#define KEY_NONE 0 +#define KEY_PREV 1 +#define KEY_NEXT 2 +#define KEY_SELECT 3 +#define KEY_BACK 4 + +// DOGS102 shield configuration values +//uint8_t uiKeyPrev = 2; +//uint8_t uiKeyNext = 4; +//uint8_t uiKeySelect = 5; +//uint8_t uiKeyBack = 3; + +// DOGM128-Shield configuration values +// DOGXL60-Shield configuration values +uint8_t uiKeyPrev = 7; +uint8_t uiKeyNext = 3; +uint8_t uiKeySelect = 2; +uint8_t uiKeyBack = 8; + +uint8_t uiKeyCodeFirst = KEY_NONE; +uint8_t uiKeyCodeSecond = KEY_NONE; +uint8_t uiKeyCode = KEY_NONE; + + +void uiSetup(void) { + // configure input keys + + pinMode(uiKeyPrev, INPUT); // set pin to input + digitalWrite(uiKeyPrev, HIGH); // turn on pullup resistors + pinMode(uiKeyNext, INPUT); // set pin to input + digitalWrite(uiKeyNext, HIGH); // turn on pullup resistors + pinMode(uiKeySelect, INPUT); // set pin to input + digitalWrite(uiKeySelect, HIGH); // turn on pullup resistors + pinMode(uiKeyBack, INPUT); // set pin to input + digitalWrite(uiKeyBack, HIGH); // turn on pullup resistors +} + +void uiStep(void) { + uiKeyCodeSecond = uiKeyCodeFirst; + if ( digitalRead(uiKeyPrev) == LOW ) + uiKeyCodeFirst = KEY_PREV; + else if ( digitalRead(uiKeyNext) == LOW ) + uiKeyCodeFirst = KEY_NEXT; + else if ( digitalRead(uiKeySelect) == LOW ) + uiKeyCodeFirst = KEY_SELECT; + else if ( digitalRead(uiKeyBack) == LOW ) + uiKeyCodeFirst = KEY_BACK; + else + uiKeyCodeFirst = KEY_NONE; + + if ( uiKeyCodeSecond == uiKeyCodeFirst ) + uiKeyCode = uiKeyCodeFirst; + else + uiKeyCode = KEY_NONE; +} + + +#define MENU_ITEMS 4 +char *menu_strings[MENU_ITEMS] = { "First Line", "Second Item", "3333333", "abcdefg" }; + +uint8_t menu_current = 0; +uint8_t menu_redraw_required = 0; +uint8_t last_key_code = KEY_NONE; + + +void drawMenu(void) { + uint8_t i, h; + u8g_uint_t w, d; + + u8g.setFont(u8g_font_6x13); + u8g.setFontRefHeightText(); + u8g.setFontPosTop(); + + h = u8g.getFontAscent()-u8g.getFontDescent(); + w = u8g.getWidth(); + for( i = 0; i < MENU_ITEMS; i++ ) { + d = (w-u8g.getStrWidth(menu_strings[i]))/2; + u8g.setDefaultForegroundColor(); + if ( i == menu_current ) { + u8g.drawBox(0, i*h+1, w, h); + u8g.setDefaultBackgroundColor(); + } + u8g.drawStr(d, i*h, menu_strings[i]); + } +} + +void updateMenu(void) { + if ( uiKeyCode != KEY_NONE && last_key_code == uiKeyCode ) { + return; + } + last_key_code = uiKeyCode; + + switch ( uiKeyCode ) { + case KEY_NEXT: + menu_current++; + if ( menu_current >= MENU_ITEMS ) + menu_current = 0; + menu_redraw_required = 1; + break; + case KEY_PREV: + if ( menu_current == 0 ) + menu_current = MENU_ITEMS; + menu_current--; + menu_redraw_required = 1; + break; + } +} + + +void setup() { + // rotate screen, if required + // u8g.setRot180(); + + uiSetup(); // setup key detection and debounce algorithm + menu_redraw_required = 1; // force initial redraw +} + +void loop() { + + uiStep(); // check for key press + + if ( menu_redraw_required != 0 ) { + u8g.firstPage(); + do { + drawMenu(); + } while( u8g.nextPage() ); + menu_redraw_required = 0; + } + + updateMenu(); // update menu bar + +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.pde new file mode 100644 index 000000000..7535c22f1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/PrintTest/PrintTest.pde @@ -0,0 +1,124 @@ +/* + + PrintTest.pde + + How to use the base class "Print" + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.setPrintPos(0, 20); + // call procedure from base class, http://arduino.cc/en/Serial/Print + u8g.print("Hello World!"); +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.pde new file mode 100644 index 000000000..424b7bfb6 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Rotation/Rotation.pde @@ -0,0 +1,152 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +uint8_t offset = 0; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.drawStr( 0+0, 20+0, "Hello!"); + u8g.drawStr( 0+2, 20+16, "Hello!"); + + u8g.drawBox(0, 0, 3, 3); + u8g.drawBox(u8g.getWidth()-6, 0, 6, 6); + u8g.drawBox(u8g.getWidth()-9, u8g.getHeight()-9, 9, 9); + u8g.drawBox(0, u8g.getHeight()-12, 12, 12); +} + +void setup(void) { +} + + +void rotate(void) { + static uint8_t dir = 0; + static unsigned long next_rotation = 0; + + if ( next_rotation < millis() ) + { + switch(dir) { + case 0: u8g.undoRotation(); break; + case 1: u8g.setRot90(); break; + case 2: u8g.setRot180(); break; + case 3: u8g.setRot270(); offset = ( offset + 1 ) & 0x0f; break; + } + + dir++; + dir &= 3; + next_rotation = millis(); + next_rotation += 1000; + } +} + +void loop(void) { + // screen rotation + rotate(); + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(100); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.pde new file mode 100644 index 000000000..ce87c76fa --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/Scale/Scale.pde @@ -0,0 +1,141 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.setFontPosTop(); + u8g.drawStr(0, 1, "Hello"); + u8g.drawHLine(0, 1+14, 40); + u8g.setScale2x2(); // Scale up all draw procedures + u8g.drawStr(0, 12, "Hello"); // actual display position is (0,24) + u8g.drawHLine(0, 12+14, 40); // All other procedures are also affected + u8g.undoScale(); // IMPORTANT: Switch back to normal mode +} + +void setup(void) { + + // flip screen, if required + u8g.setRot180(); + + // set SPI backup if required + //u8g.setHardwareBackup(u8g_backup_avr_spi); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.pde new file mode 100644 index 000000000..718fd821c --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/TextRotX/TextRotX.pde @@ -0,0 +1,154 @@ +/* + + TextRotX.pde + + Text rotation example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +// graphic commands to redraw the complete screen should be placed here +void draw(void) { + u8g_uint_t mx, my; + + mx = u8g.getWidth(); + mx >>= 1; + + my = u8g.getHeight(); + my >>= 1; + + u8g.drawStr( mx, my, "Ag"); + u8g.drawStr90( mx, my, "Ag"); + u8g.drawStr180( mx, my, "Ag"); + u8g.drawStr270( mx, my, "Ag"); +} + +void setup(void) { + u8g.setFont(u8g_font_9x18); +} + +void change_font_pos(void) { + static uint8_t dir = 0; + static unsigned long next = 0; + + if ( next < millis() ) + { + switch(dir) { + case 0: u8g.setFontPosBottom(); break; + case 1: u8g.setFontPosBaseline(); break; + case 2: u8g.setFontPosCenter(); break; + case 3: u8g.setFontPosTop(); break; + } + + dir++; + dir &= 3; + next = millis(); + next += 1000; + } +} + +void loop(void) { + // change the font position + change_font_pos(); + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(100); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.pde new file mode 100644 index 000000000..78c866f0f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/U8gLogo/U8gLogo.pde @@ -0,0 +1,179 @@ +/* + + U8gLogo.pde + + Put the U8GLIB logo on the display. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void drawColorBox(void) +{ + u8g_uint_t w,h; + u8g_uint_t r, g, b; + + w = u8g.getWidth()/32; + h = u8g.getHeight()/8; + for( b = 0; b < 4; b++ ) + for( g = 0; g < 8; g++ ) + for( r = 0; r < 8; r++ ) + { + u8g.setColorIndex((r<<5) | (g<<2) | b ); + u8g.drawBox(g*w + b*w*8, r*h, w, h); + } +} + +void drawLogo(uint8_t d) +{ + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(0+d, 30+d, "U"); + u8g.setFont(u8g_font_gdr30n); + u8g.drawStr90(23+d,10+d,"8"); + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(53+d,30+d,"g"); + + u8g.drawHLine(2+d, 35+d, 47); + u8g.drawVLine(45+d, 32+d, 12); +} + +void drawURL(void) +{ + u8g.setFont(u8g_font_4x6); + if ( u8g.getHeight() < 59 ) + { + u8g.drawStr(53,9,"code.google.com"); + u8g.drawStr(77,18,"/p/u8glib"); + } + else + { + u8g.drawStr(1,54,"code.google.com/p/u8glib"); + } +} + + +void draw(void) { + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { + drawColorBox(); + } + u8g.setColorIndex(1); + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g.getMode()) > 1 ) { + drawLogo(2); + u8g.setColorIndex(2); + drawLogo(1); + u8g.setColorIndex(3); + } + drawLogo(0); + drawURL(); + +} + +void setup(void) { + // flip screen, if required + //u8g.setRot180(); +} + +void loop(void) { + + // picture loop + u8g.firstPage(); + do { + draw(); + u8g.setColorIndex(1); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(200); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.pde b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.pde new file mode 100644 index 000000000..44dd720d9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/examples/XBM/XBM.pde @@ -0,0 +1,136 @@ +/* + + XBM.pde + + drawXBM example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +#define u8g_logo_width 38 +#define u8g_logo_height 24 +//static unsigned char u8g_logo_bits[] = { +static unsigned char u8g_logo_bits[] U8G_PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xe0, + 0xff, 0xff, 0x3f, 0xe3, 0xe1, 0xff, 0xff, 0x3f, 0xf3, 0xf1, 0xff, 0xff, + 0x3f, 0xf3, 0xf1, 0xfe, 0xbf, 0x37, 0xf3, 0x11, 0x1c, 0x1f, 0x30, 0xf3, + 0x01, 0x08, 0x8c, 0x20, 0xf3, 0x01, 0x00, 0xc0, 0x39, 0xf3, 0x81, 0xc7, + 0xc1, 0x39, 0xf3, 0xc1, 0xc7, 0xc9, 0x38, 0xf3, 0xc1, 0xc3, 0x19, 0x3c, + 0xe3, 0x89, 0x01, 0x98, 0x3f, 0xc7, 0x18, 0x00, 0x08, 0x3e, 0x0f, 0x3c, + 0x70, 0x1c, 0x30, 0x3f, 0xff, 0xfc, 0x87, 0x31, 0xff, 0xff, 0xbf, 0xc7, + 0x23, 0x01, 0x00, 0x00, 0xc6, 0x23, 0x03, 0x00, 0x00, 0x0e, 0x30, 0xff, + 0xff, 0x3f, 0x1f, 0x3c, 0xff, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0xff, 0x3f, + 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f }; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, u8g_logo_bits); +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/license.txt b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/license.txt new file mode 100644 index 000000000..c9eea75c4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/license.txt @@ -0,0 +1,80 @@ + +The U8glib code (http://code.google.com/p/u8glib/) is licensed under the terms of +the new-bsd license (two-clause bsd license). +See also: http://www.opensource.org/licenses/bsd-license.php + +The repository and optionally the releases contain icons, which are +derived from the WPZOOM Developer Icon Set: +http://www.wpzoom.com/wpzoom/new-freebie-wpzoom-developer-icon-set-154-free-icons/ +WPZOOM Developer Icon Set by WPZOOM is licensed under a Creative Commons +Attribution-ShareAlike 3.0 Unported License. + +Fonts are licensed under different conditions. +See http://code.google.com/p/u8glib/wiki/fontgroup for +detailed information on the licensing conditions for each font. + +============ X11 Fonts COUR, HELV, NCEN, TIM, SYMB ============ + +For fonts derived from the following files, the license below applies. +COURB08.BDF COURB10.BDF COURB12.BDF COURB14.BDF COURB18.BDF +COURB24.BDF COURR08.BDF COURR10.BDF COURR12.BDF COURR14.BDF +COURR18.BDF COURR24.BDF HELVB08.BDF HELVB10.BDF HELVB12.BDF HELVB14.BDF +HELVB18.BDF HELVB24.BDF HELVR08.BDF HELVR10.BDF HELVR12.BDF HELVR14.BDF +HELVR18.BDF HELVR24.BDF NCENB08.BDF NCENB10.BDF NCENB12.BDF +NCENB14.BDF NCENB18.BDF NCENB24.BDF NCENR08.BDF NCENR10.BDF +NCENR12.BDF NCENR14.BDF NCENR18.BDF NCENR24.BDF SYMB08.BDF SYMB10.BDF +SYMB12.BDF SYMB14.BDF SYMB18.BDF SYMB24.BDF TIMB08.BDF TIMB10.BDF +TIMB12.BDF TIMB14.BDF TIMB18.BDF TIMB24.BDF TIMR08.BDF TIMR10.BDF +TIMR12.BDF TIMR14.BDF TIMR18.BDF TIMR24.BDF + +Copyright 1984-1989, 1994 Adobe Systems Incorporated. +Copyright 1988, 1994 Digital Equipment Corporation. + +Adobe is a trademark of Adobe Systems Incorporated which may be +registered in certain jurisdictions. +Permission to use these trademarks is hereby granted only in +association with the images described in this file. + +Permission to use, copy, modify, distribute and sell this software +and its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notices appear in all +copies and that both those copyright notices and this permission +notice appear in supporting documentation, and that the names of +Adobe Systems and Digital Equipment Corporation not be used in +advertising or publicity pertaining to distribution of the software +without specific, written prior permission. Adobe Systems and +Digital Equipment Corporation make no representations about the +suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + + +============ BSD License for U8glib Code ============ + +Universal 8bit Graphics Library (http://code.google.com/p/u8glib/) + +Copyright (c) 2011, olikraus@gmail.com +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/chessengine.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/chessengine.c new file mode 100644 index 000000000..4a8758c38 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/chessengine.c @@ -0,0 +1,2392 @@ +/* + chessengine.c + + "Little Rook Chess" (lrc) + + Port to u8g library + + chess for embedded 8-Bit controllers + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Note: + UNIX_MAIN --> unix console executable + + Current Rule Limitation + - no minor promotion, only "Queening" of the pawn + - threefold repetition is not detected (same board situation appears three times) + Note: Could be implemented, but requires tracking of the complete game + - Fifty-move rule is not checked (no pawn move, no capture within last 50 moves) + + Words + Ply a half move + + General Links + http://chessprogramming.wikispaces.com/ + + Arduino specific + http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1260055596 + + Prefixes + chess_ Generic Chess Application Interface + ce_ Chess engine, used internally, these function should not be called directly + cu_ Chess utility function + stack_ Internal function for stack handling + + Issues + 10.01.2011 + - castling to the right does not move the rook + --> done + - castling to the left: King can only move two squares + --> done + + 11.01.2011 + Next Steps: + - replace stack_NextCurrentPos with cu_NextPos, cleanup code according to the loop variable + --> done + - Castling: Need to check for fields under attack + --> done + + - Check for WIN / LOSE situation, perhaps call ce_Eval() once on the top-level board setup + just after the real move + - cleanup cu_Move + --> almost done + - add some heuristics to the eval procedure + - add right side menu + --> done + - clean up chess_ManualMove + --> done + - finish menu (consider is_game_end, undo move) + - end condition: if KING is under attack and if KING can not move to a field which is under attack... + then the game is lost. What will be returned by the Eval procedure? is it -INF? + --> finished + + - reduce the use of variable color, all should be reduced to board_orientation and ply&1 + + - chess_GetNextMarked shoud make use of cu_NextPos + --> done + - chess_ManualMove: again cleanup, solve draw issue (KING is not in check and no legal moves are available) + --> done + 22.01.2011 + - simplify eval_t ce_Eval(void) + - position eval does not work, still moves side pawn :-( + maybe because all pieces are considered + --> done + +*/ + +#include "u8g.h" + +//#ifndef __unix__ +//#else +//#include +//#define U8G_NOINLINE +//#endif + +/* +SAN identifies each piece by a single upper case letter. The standard English +values: pawn = "P", knight = "N", bishop = "B", rook = "R", queen = "Q", and +king = "K". +*/ + +/* numbers for the various pieces */ +#define PIECE_NONE 0 +#define PIECE_PAWN 1 +#define PIECE_KNIGHT 2 +#define PIECE_BISHOP 3 +#define PIECE_ROOK 4 +#define PIECE_QUEEN 5 +#define PIECE_KING 6 + +/* color definitions */ +#define COLOR_WHITE 0 +#define COLOR_BLACK 1 + +/* a mask, which includes COLOR and PIECE number */ +#define COLOR_PIECE_MASK 0x01f + +#define CP_MARK_MASK 0x20 + +#define ILLEGAL_POSITION 255 + +/* This is the build in upper limit of the search stack */ +/* This value defines the amount of memory allocated for the search stack */ +/* The search depth of this chess engine can never exceed this value */ +#define STACK_MAX_SIZE 5 + +/* chess half move stack: twice the number of undo's, a user can do */ +#define CHM_USER_SIZE 6 + +/* the CHM_LIST_SIZE must be larger than the maximum search depth */ +/* the overall size of ste half move stack */ +#define CHM_LIST_SIZE (STACK_MAX_SIZE+CHM_USER_SIZE+2) + +typedef int16_t eval_t; /* a variable type to store results from the evaluation */ +//#define EVAL_T_LOST -32768 +#define EVAL_T_MIN -32767 +#define EVAL_T_MAX 32767 +//#define EVAL_T_WIN 32767 + +/* for maintainance of our own stack: this is the definition of one element on the stack */ +struct _stack_element_struct +{ + /* the current source position which is investigated */ + uint8_t current_pos; + uint8_t current_cp; + uint8_t current_color; /* COLOR_WHITE or COLOR_BLACK: must be predefines */ + + /* the move which belongs to that value, both values are game positions */ + uint8_t best_from_pos; + uint8_t best_to_pos; + /* the best value, which has been dicovered so far */ + eval_t best_eval; +}; +typedef struct _stack_element_struct stack_element_t; +typedef struct _stack_element_struct *stack_element_p; + +/* chess half move history */ +struct _chm_struct +{ + uint8_t main_cp; /* the main piece, which is moved */ + uint8_t main_src; /* the source position of the main piece */ + uint8_t main_dest; /* the destination of the main piece */ + + uint8_t other_cp; /* another piece: the captured one, the ROOK in case of castling or PIECE_NONE */ + uint8_t other_src; /* the delete position of other_cp. Often identical to main_dest except for e.p. and castling */ + uint8_t other_dest; /* only used for castling: ROOK destination pos */ + + /* the position of the last pawn, which did a double move forward */ + /* this is required to check en passant conditions */ + /* this array can be indexed by the color of the current player */ + /* this is the condition BEFORE the move was done */ + uint8_t pawn_dbl_move[2]; + + /* flags for the movement of rook and king; required for castling */ + /* a 1 means: castling is (still) possible */ + /* a 0 means: castling not possible */ + /* bit 0 left side white */ + /* bit 1 right side white */ + /* bit 2 left side black */ + /* bit 3 right side black */ + /* this is the condition BEFORE the move was done */ + uint8_t castling_possible; +}; + +typedef struct _chm_struct chm_t; +typedef struct _chm_struct *chm_p; + +/* little rook chess, main structure */ +struct _lrc_struct +{ + /* half-move (ply) counter: Counts the number of half-moves so far. Starts with 0 */ + /* the lowest bit is used to derive the color of the current player */ + /* will be set to zero in chess_SetupBoard() */ + uint8_t ply_count; + + /* the half move stack position counter, counts the number of elements in chm_list */ + uint8_t chm_pos; + + /* each element contains a colored piece, empty fields have value 0 */ + /* the field with index 0 is black (lower left) */ + uint8_t board[64]; + /* the position of the last pawn, which did a double move forward */ + /* this is required to check en passant conditions */ + /* this array can be indexed by the color of the current player */ + uint8_t pawn_dbl_move[2]; + + /* flags for the movement of rook and king; required for castling */ + /* a 1 means: castling is (still) possible */ + /* a 0 means: castling not possible */ + /* bit 0 left side white */ + /* bit 1 right side white */ + /* bit 2 left side black */ + /* bit 3 right side black */ + uint8_t castling_possible; + + /* board orientation */ + /* 0: white is below COLOR_WHITE */ + /* 1: black is below COLOR_BLACK */ + /* bascially, this can be used as a color */ + uint8_t orientation; + + /* exchange colors of the pieces */ + /* 0: white has an empty body, use this for bright background color */ + /* 1: black has an empty body, use this for dark backround color */ + uint8_t strike_out_color; + + /* 0, when the game is ongoing */ + /* 1, when the game is stopped (lost or draw) */ + uint8_t is_game_end; + /* the color of the side which lost the game */ + /* this value is only valid, when is_game_end is not 0 */ + /* values 0 and 1 represent WHITE and BLACK, 2 means a draw */ + uint8_t lost_side_color; + + + + /* checks are executed in ce_LoopRecur */ + /* these checks will put some marks on the board */ + /* this will be used by the interface to find out */ + /* legal moves */ + uint8_t check_src_pos; + uint8_t check_mode; /* CHECK_MODE_NONE, CHECK_MODE_MOVEABLE, CHECK_MODE_TARGET_MOVE */ + + + /* count of the attacking pieces, indexed by color */ + uint8_t find_piece_cnt[2]; + + /* sum of the attacking pieces, indexed by color */ + uint8_t find_piece_weight[2]; + + /* points to the current element of the search stack */ + /* this stack is NEVER empty. The value 0 points to the first element of the stack */ + /* actually "curr_depth" represent half-moves (plies) */ + uint8_t curr_depth; + uint8_t max_depth; + stack_element_p curr_element; + + /* allocated memory for the search stack */ + stack_element_t stack_memory[STACK_MAX_SIZE]; + + /* the half move stack, used for move undo and depth search, size is stored in chm_pos */ + chm_t chm_list[CHM_LIST_SIZE]; +}; +typedef struct _lrc_struct lrc_t; + +#define CHECK_MODE_NONE 0 +#define CHECK_MODE_MOVEABLE 1 +#define CHECK_MODE_TARGET_MOVE 2 + + + +/*==============================================================*/ +/* global variables */ +/*==============================================================*/ + +u8g_t *lrc_u8g; + +lrc_t lrc_obj; + + +/*==============================================================*/ +/* forward declarations */ +/*==============================================================*/ + +/* + apply no inline to some of the functions: + avr-gcc very often inlines functions, however not inline saves a lot of program memory! + On the other hand there are some really short procedures which should be inlined (like cp_GetColor) + These procedures are marked static to prevent the generation of the expanded procedure, which + also saves space. +*/ + +uint8_t stack_Push(uint8_t color) U8G_NOINLINE; +void stack_Pop(void) U8G_NOINLINE; +void stack_InitCurrElement(void) U8G_NOINLINE; +void stack_Init(uint8_t max) U8G_NOINLINE; +void stack_SetMove(eval_t val, uint8_t to_pos) U8G_NOINLINE; +uint8_t cu_NextPos(uint8_t pos) U8G_NOINLINE; +static uint8_t cu_gpos2bpos(uint8_t gpos); +static uint8_t cp_Construct(uint8_t color, uint8_t piece); +static uint8_t cp_GetPiece(uint8_t cp); +static uint8_t cp_GetColor(uint8_t cp); +uint8_t cp_GetFromBoard(uint8_t pos) U8G_NOINLINE; +void cp_SetOnBoard(uint8_t pos, uint8_t cp) U8G_NOINLINE; + +void cu_ClearBoard(void) U8G_NOINLINE; +void chess_SetupBoard(void) U8G_NOINLINE; +eval_t ce_Eval(void); + +void cu_ClearMoveHistory(void) U8G_NOINLINE; +void cu_ReduceHistoryByFullMove(void) U8G_NOINLINE; +void cu_UndoHalfMove(void) U8G_NOINLINE; +chm_p cu_PushHalfMove(void) U8G_NOINLINE; + + +void ce_CalculatePositionWeight(uint8_t pos); +uint8_t ce_GetPositionAttackWeight(uint8_t pos, uint8_t color); + +void chess_Thinking(void); +void ce_LoopPieces(void); + + +/*==============================================================*/ +/* search stack */ +/*==============================================================*/ + +/* get current element from stack */ +stack_element_p stack_GetCurrElement(void) +{ + return lrc_obj.curr_element; +} + +uint8_t stack_Push(uint8_t color) +{ + if ( lrc_obj.curr_depth == lrc_obj.max_depth ) + return 0; + lrc_obj.curr_depth++; + lrc_obj.curr_element = lrc_obj.stack_memory+lrc_obj.curr_depth; + + /* change view for the evaluation */ + color ^= 1; + stack_GetCurrElement()->current_color = color; + + return 1; +} + +void stack_Pop(void) +{ + lrc_obj.curr_depth--; + lrc_obj.curr_element = lrc_obj.stack_memory+lrc_obj.curr_depth; +} + +/* reset the current element on the stack */ +void stack_InitCurrElement(void) +{ + stack_element_p e = stack_GetCurrElement(); + e->best_eval = EVAL_T_MIN; + e->best_from_pos = ILLEGAL_POSITION; + e->best_to_pos = ILLEGAL_POSITION; +} + +/* resets the search stack (and the check mode) */ +void stack_Init(uint8_t max) +{ + lrc_obj.curr_depth = 0; + lrc_obj.curr_element = lrc_obj.stack_memory; + lrc_obj.max_depth = max; + lrc_obj.check_mode = CHECK_MODE_NONE; + stack_InitCurrElement(); + stack_GetCurrElement()->current_color = lrc_obj.ply_count; + stack_GetCurrElement()->current_color &= 1; +} + +/* assign evaluation value and store the move, if this is the best move */ +/* assumes, that current_pos contains the source position */ +void stack_SetMove(eval_t val, uint8_t to_pos) +{ + stack_element_p e = stack_GetCurrElement(); + if ( e->best_eval < val ) + { + e->best_eval = val; + e->best_from_pos = e->current_pos; + e->best_to_pos = to_pos; + } +} + +/* + calculate next position on a 0x88 board + loop is constructed in this way: + i = 0; + do + { + ... + i = cu_NextPos(i); + } while( i != 0 ); + + next pos might be started with an illegal position like 255 +*/ +uint8_t cu_NextPos(uint8_t pos) +{ + /* calculate next gpos */ + pos++; + if ( ( pos & 0x08 ) != 0 ) + { + pos+= 0x10; + pos&= 0xf0; + } + if ( ( pos & 0x80 ) != 0 ) + pos = 0; + return pos; +} + +uint8_t cu_PrevPos(uint8_t pos) +{ + /* calculate prev gpos */ + pos--; + if ( ( pos & 0x80 ) != 0 ) + pos = 0x077; + else if ( ( pos & 0x08 ) != 0 ) + { + pos &= 0xf0; + pos |= 0x07; + } + return pos; +} + + +/*==============================================================*/ +/* position transltion */ +/*==============================================================*/ +/* + there are two positions + 1. game position (gpos): BCD encoded x-y values + 2. board position (bpos): a number between 0 and 63, only used to access the board. +*/ +/* + gpos: game position value + returns: board position + note: does not do any checks +*/ +static uint8_t cu_gpos2bpos(uint8_t gpos) +{ + uint8_t bpos = gpos; + bpos &= 0xf0; + bpos >>= 1; + gpos &= 0x0f; + bpos |= gpos; + return bpos; +} + +#define gpos_IsIllegal(gpos) ((gpos) & 0x088) + + +/*==============================================================*/ +/* colored piece handling */ +/*==============================================================*/ + +#define cp_IsMarked(cp) ((cp) & CP_MARK_MASK) + + +/* + piece: one of PIECE_xxx + color: COLOR_WHITE or COLOR_BLACK + + returns: A colored piece +*/ +static uint8_t cp_Construct(uint8_t color, uint8_t piece) +{ + color <<= 4; + color |= piece; + return color; +} + +/* inline is better than a macro */ +static uint8_t cp_GetPiece(uint8_t cp) +{ + cp &= 0x0f; + return cp; +} + +/* + we could use a macro: + #define cp_GetColor(cp) (((cp) >> 4)&1) + however, inlined functions are sometimes much better +*/ +static uint8_t cp_GetColor(uint8_t cp) +{ + cp >>= 4; + cp &= 1; + return cp; +} + +/* + pos: game position + returns the colored piece at the given position +*/ +uint8_t cp_GetFromBoard(uint8_t pos) +{ + return lrc_obj.board[cu_gpos2bpos(pos)]; +} + +/* + pos: game position + cp: colored piece +*/ +void cp_SetOnBoard(uint8_t pos, uint8_t cp) +{ + /*printf("cp_SetOnBoard gpos:%02x cp:%02x\n", pos, cp);*/ + lrc_obj.board[cu_gpos2bpos(pos)] = cp; +} + +/*==============================================================*/ +/* global board access */ +/*==============================================================*/ + +void cu_ClearBoard(void) +{ + uint8_t i; + /* clear the board */ + for( i = 0; i < 64; i++ ) + lrc_obj.board[i] = PIECE_NONE; + + lrc_obj.ply_count = 0; + lrc_obj.orientation = COLOR_WHITE; + + lrc_obj.pawn_dbl_move[0] = ILLEGAL_POSITION; + lrc_obj.pawn_dbl_move[1] = ILLEGAL_POSITION; + + lrc_obj.castling_possible = 0x0f; + + lrc_obj.is_game_end = 0; + lrc_obj.lost_side_color = 0; + + /* clear half move history */ + cu_ClearMoveHistory(); + +} + +/* + test setup + white wins in one move +*/ +void chess_SetupBoardTest01(void) +{ + cu_ClearBoard(); + lrc_obj.board[7+7*8] = cp_Construct(COLOR_BLACK, PIECE_KING); + lrc_obj.board[7+5*8] = cp_Construct(COLOR_WHITE, PIECE_PAWN); + lrc_obj.board[3] = cp_Construct(COLOR_WHITE, PIECE_KING); + lrc_obj.board[0+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + lrc_obj.board[6] = cp_Construct(COLOR_WHITE, PIECE_QUEEN); +} + +/* setup the global board */ +void chess_SetupBoard(void) +{ + uint8_t i; + register uint8_t bp, wp; + + /* clear the board */ + cu_ClearBoard(); + + /* precronstruct pawns */ + wp = cp_Construct(COLOR_WHITE, PIECE_PAWN); + bp = cp_Construct(COLOR_BLACK, PIECE_PAWN); + + /* setup pawn */ + for( i = 0; i < 8; i++ ) + { + lrc_obj.board[i+8] = wp; + lrc_obj.board[i+6*8] = bp; + } + + /* assign remaining pieces */ + + lrc_obj.board[0] = cp_Construct(COLOR_WHITE, PIECE_ROOK); + lrc_obj.board[1] = cp_Construct(COLOR_WHITE, PIECE_KNIGHT); + lrc_obj.board[2] = cp_Construct(COLOR_WHITE, PIECE_BISHOP); + lrc_obj.board[3] = cp_Construct(COLOR_WHITE, PIECE_QUEEN); + lrc_obj.board[4] = cp_Construct(COLOR_WHITE, PIECE_KING); + lrc_obj.board[5] = cp_Construct(COLOR_WHITE, PIECE_BISHOP); + lrc_obj.board[6] = cp_Construct(COLOR_WHITE, PIECE_KNIGHT); + lrc_obj.board[7] = cp_Construct(COLOR_WHITE, PIECE_ROOK); + + lrc_obj.board[0+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + lrc_obj.board[1+7*8] = cp_Construct(COLOR_BLACK, PIECE_KNIGHT); + lrc_obj.board[2+7*8] = cp_Construct(COLOR_BLACK, PIECE_BISHOP); + lrc_obj.board[3+7*8] = cp_Construct(COLOR_BLACK, PIECE_QUEEN); + lrc_obj.board[4+7*8] = cp_Construct(COLOR_BLACK, PIECE_KING); + lrc_obj.board[5+7*8] = cp_Construct(COLOR_BLACK, PIECE_BISHOP); + lrc_obj.board[6+7*8] = cp_Construct(COLOR_BLACK, PIECE_KNIGHT); + lrc_obj.board[7+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + + //chess_SetupBoardTest01(); + +} + + + +/*==============================================================*/ +/* checks */ +/*==============================================================*/ + +/* + checks if the position is somehow illegal +*/ +uint8_t cu_IsIllegalPosition(uint8_t pos, uint8_t my_color) +{ + uint8_t board_cp; + /* check, if the position is offboard */ + if ( gpos_IsIllegal(pos) != 0 ) + return 1; + /* get the piece from the board */ + board_cp = cp_GetFromBoard(pos); + /* check if hit our own pieces */ + if ( board_cp != 0 ) + if ( cp_GetColor(board_cp) == my_color ) + return 1; + /* all ok, we could go to this position */ + return 0; +} + +/*==============================================================*/ +/* evaluation procedure */ +/*==============================================================*/ + +/* + basic idea is to return a value between EVAL_T_MIN and EVAL_T_MAX +*/ + +/* + the weight table uses the PIECE number as index: + #define PIECE_NONE 0 + #define PIECE_PAWN 1 + #define PIECE_KNIGHT 2 + #define PIECE_BISHOP 3 + #define PIECE_ROOK 4 + #define PIECE_QUEEN 5 + #define PIECE_KING 6 + the king itself is not counted +*/ +uint8_t ce_piece_weight[] = { 0, 1, 3, 3, 5, 9, 0 }; +uint8_t ce_pos_weight[] = { 0, 1, 1, 2, 2, 1, 1, 0}; +/* + evaluate the current situation on the global board +*/ +eval_t ce_Eval(void) +{ + uint8_t cp; + uint8_t is_my_king_present = 0; + uint8_t is_opposit_king_present = 0; + eval_t material_my_color = 0; + eval_t material_opposit_color = 0; + eval_t position_my_color = 0; + eval_t position_opposit_color = 0; + eval_t result; + uint8_t pos; + + pos = 0; + do + { + /* get colored piece from the board */ + cp = cp_GetFromBoard(pos); + + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + if ( stack_GetCurrElement()->current_color == cp_GetColor(cp) ) + { + /* this is our color */ + /* check if we found our king */ + if ( cp_GetPiece(cp) == PIECE_KING ) + is_my_king_present = 1; + material_my_color += ce_piece_weight[cp_GetPiece(cp)]; + if ( cp_GetPiece(cp) == PIECE_PAWN || cp_GetPiece(cp) == PIECE_KNIGHT ) + { + position_my_color += ce_pos_weight[pos&7]*ce_pos_weight[(pos>>4)&7]; + } + } + else + { + /* this is the opposit color */ + if ( cp_GetPiece(cp) == PIECE_KING ) + is_opposit_king_present = 1; + material_opposit_color += ce_piece_weight[cp_GetPiece(cp)]; + if ( cp_GetPiece(cp) == PIECE_PAWN || cp_GetPiece(cp) == PIECE_KNIGHT ) + { + position_opposit_color += ce_pos_weight[pos&7]*ce_pos_weight[(pos>>4)&7]; + } + } + } + pos = cu_NextPos(pos); + } while( pos != 0 ); + + + /* decide if we lost or won the game */ + if ( is_my_king_present == 0 ) + return EVAL_T_MIN; /*_LOST*/ + if ( is_opposit_king_present == 0 ) + return EVAL_T_MAX; /*_WIN*/ + + /* here is the evaluation function */ + + result = material_my_color - material_opposit_color; + result <<= 3; + result += position_my_color - position_opposit_color; + return result; +} + +/*==============================================================*/ +/* move backup and restore */ +/*==============================================================*/ + + +/* this procedure must be called to keep the size as low as possible */ +/* if the chm_list is large enough, it could hold the complete history */ +/* but for an embedded controler... it is deleted for every engine search */ +void cu_ClearMoveHistory(void) +{ + lrc_obj.chm_pos = 0; +} + +void cu_ReduceHistoryByFullMove(void) +{ + uint8_t i; + while( lrc_obj.chm_pos > CHM_USER_SIZE ) + { + i = 0; + for(;;) + { + if ( i+2 >= lrc_obj.chm_pos ) + break; + lrc_obj.chm_list[i] = lrc_obj.chm_list[i+2]; + i++; + } + lrc_obj.chm_pos -= 2; + } +} + +void cu_UndoHalfMove(void) +{ + chm_p chm; + + if ( lrc_obj.chm_pos == 0 ) + return; + + lrc_obj.chm_pos--; + + chm = lrc_obj.chm_list+lrc_obj.chm_pos; + + lrc_obj.pawn_dbl_move[0] = chm->pawn_dbl_move[0]; + lrc_obj.pawn_dbl_move[1] = chm->pawn_dbl_move[1]; + lrc_obj.castling_possible = chm->castling_possible; + + cp_SetOnBoard(chm->main_src, chm->main_cp); + cp_SetOnBoard(chm->main_dest, PIECE_NONE); + + if ( chm->other_src != ILLEGAL_POSITION ) + cp_SetOnBoard(chm->other_src, chm->other_cp); + if ( chm->other_dest != ILLEGAL_POSITION ) + cp_SetOnBoard(chm->other_dest, PIECE_NONE); + +} + +/* + assumes, that the following members of the returned chm structure are filled + uint8_t main_cp; the main piece, which is moved + uint8_t main_src; the source position of the main piece + uint8_t main_dest; the destination of the main piece + + uint8_t other_cp; another piece: the captured one, the ROOK in case of castling or PIECE_NONE + uint8_t other_src; the delete position of other_cp. Often identical to main_dest except for e.p. and castling + uint8_t other_dest; only used for castling: ROOK destination pos + +*/ +chm_p cu_PushHalfMove(void) +{ + chm_p chm; + + chm = lrc_obj.chm_list+lrc_obj.chm_pos; + if ( lrc_obj.chm_pos < CHM_LIST_SIZE-1) + lrc_obj.chm_pos++; + + chm->pawn_dbl_move[0] = lrc_obj.pawn_dbl_move[0]; + chm->pawn_dbl_move[1] = lrc_obj.pawn_dbl_move[1]; + chm->castling_possible = lrc_obj.castling_possible; + return chm; +} + + +char chess_piece_to_char[] = "NBRQK"; + +/* + simple moves on empty field: Ka1-b2 + capture moves: Ka1xb2 + castling: 0-0 or 0-0-0 +*/ + +static void cu_add_pos(char *s, uint8_t pos) U8G_NOINLINE; + +static void cu_add_pos(char *s, uint8_t pos) +{ + *s = pos; + *s >>= 4; + *s += 'a'; + s++; + *s = pos; + *s &= 15; + *s += '1'; +} + +const char *cu_GetHalfMoveStr(uint8_t idx) +{ + chm_p chm; + static char buf[7]; /*Ka1-b2*/ + char *p = buf; + chm = lrc_obj.chm_list+idx; + + if ( cp_GetPiece(chm->main_cp) != PIECE_NONE ) + { + if ( cp_GetPiece(chm->main_cp) > PIECE_PAWN ) + { + *p++ = chess_piece_to_char[cp_GetPiece(chm->main_cp)-2]; + } + cu_add_pos(p, chm->main_src); + p+=2; + if ( cp_GetPiece(chm->other_cp) == PIECE_NONE ) + *p++ = '-'; + else + *p++ = 'x'; + cu_add_pos(p, chm->main_dest); + p+=2; + } + *p = '\0'; + return buf; +} + + + + + +/*==============================================================*/ +/* move */ +/*==============================================================*/ + +/* + Move a piece from source position to a destination on the board + This function + - does not perform any checking + - however it processes "en passant" and casteling + - backup the move and allow 1x undo + + 2011-02-05: + - fill pawn_dbl_move[] for double pawn moves + --> done + - Implement casteling + --> done + - en passant + --> done + - pawn conversion/promotion + --> done + - half-move backup + --> done + - cleanup everything, minimize variables + --> done +*/ + +void cu_Move(uint8_t src, uint8_t dest) +{ + /* start backup structure */ + chm_p chm = cu_PushHalfMove(); + + /* these are the values from the board at the positions, provided as arguments to this function */ + uint8_t cp_src, cp_dest; + + /* Maybe a second position is cleared and one additional location is set */ + uint8_t clr_pos2; + uint8_t set_pos2; + uint8_t set_cp2; + + /* get values from board */ + cp_src = cp_GetFromBoard(src); + cp_dest = cp_GetFromBoard(dest); + + /* fill backup structure */ + + chm->main_cp = cp_src; + chm->main_src = src; + chm->main_dest = dest; + + chm->other_cp = cp_dest; /* prepace capture backup */ + chm->other_src = dest; + chm->other_dest = ILLEGAL_POSITION; + + /* setup results as far as possible with some suitable values */ + + clr_pos2 = ILLEGAL_POSITION; /* for en passant and castling, two positions might be cleared */ + set_pos2 = ILLEGAL_POSITION; /* only used for castling */ + set_cp2 = PIECE_NONE; /* ROOK for castling */ + + /* check for PAWN */ + if ( cp_GetPiece(cp_src) == PIECE_PAWN ) + { + + /* double step: is the distance 2 rows */ + if ( (src - dest == 32) || ( dest - src == 32 ) ) + { + /* remember the destination position */ + lrc_obj.pawn_dbl_move[cp_GetColor(cp_src)] = dest; + } + + /* check if the PAWN is able to promote */ + else if ( (dest>>4) == 0 || (dest>>4) == 7 ) + { + /* do simple "queening" */ + cp_src &= ~PIECE_PAWN; + cp_src |= PIECE_QUEEN; + } + + /* is it en passant capture? */ + /* check for side move */ + else if ( ((src + dest) & 1) != 0 ) + { + /* check, if target field is empty */ + if ( cp_GetPiece(cp_dest) == PIECE_NONE ) + { + /* this is en passant */ + /* no further checking required, because legal moves are assumed here */ + /* however... the captured pawn position must be valid */ + clr_pos2 = lrc_obj.pawn_dbl_move[cp_GetColor(cp_src) ^ 1]; + chm->other_src = clr_pos2; + chm->other_cp = cp_GetFromBoard(clr_pos2); + } + } + } + + /* check for the KING */ + else if ( cp_GetPiece(cp_src) == PIECE_KING ) + { + /* disallow castling, if the KING has moved */ + if ( cp_GetColor(cp_src) == COLOR_WHITE ) + { + /* if white KING has moved, disallow castling for white */ + lrc_obj.castling_possible &= 0x0c; + } + else + { + /* if black KING has moved, disallow castling for black */ + lrc_obj.castling_possible &= 0x03; + } + + /* has it been castling to the left? */ + if ( src - dest == 2 ) + { + /* let the ROOK move to pos2 */ + set_pos2 = src-1; + set_cp2 = cp_GetFromBoard(src-4); + + /* the ROOK must be cleared from the original position */ + clr_pos2 = src-4; + + chm->other_cp = set_cp2; + chm->other_src = clr_pos2; + chm->other_dest = set_pos2; + } + + /* has it been castling to the right? */ + else if ( dest - src == 2 ) + { + /* let the ROOK move to pos2 */ + set_pos2 = src+1; + set_cp2 = cp_GetFromBoard(src+3); + + /* the ROOK must be cleared from the original position */ + clr_pos2 = src+3; + + chm->other_cp = set_cp2; + chm->other_src = clr_pos2; + chm->other_dest = set_pos2; + + } + + } + + /* check for the ROOK */ + else if ( cp_GetPiece(cp_src) == PIECE_ROOK ) + { + /* disallow white left castling */ + if ( src == 0x00 ) + lrc_obj.castling_possible &= ~0x01; + /* disallow white right castling */ + if ( src == 0x07 ) + lrc_obj.castling_possible &= ~0x02; + /* disallow black left castling */ + if ( src == 0x70 ) + lrc_obj.castling_possible &= ~0x04; + /* disallow black right castling */ + if ( src == 0x77 ) + lrc_obj.castling_possible &= ~0x08; + } + + + /* apply new board situation */ + + cp_SetOnBoard(dest, cp_src); + + if ( set_pos2 != ILLEGAL_POSITION ) + cp_SetOnBoard(set_pos2, set_cp2); + + cp_SetOnBoard(src, PIECE_NONE); + + if ( clr_pos2 != ILLEGAL_POSITION ) + cp_SetOnBoard(clr_pos2, PIECE_NONE); + + +} + +/* + this subprocedure decides for evaluation of the current board situation or further (deeper) investigation + Argument pos is the new target position if the current piece + +*/ +uint8_t ce_LoopRecur(uint8_t pos) +{ + eval_t eval; + + /* 1. check if target position is occupied by the same player (my_color) */ + /* of if pos is somehow illegal or not valid */ + if ( cu_IsIllegalPosition(pos, stack_GetCurrElement()->current_color) != 0 ) + return 0; + + /* 2. move piece to the specified position, capture opponent piece if required */ + cu_Move(stack_GetCurrElement()->current_pos, pos); + + + /* 3. */ + /* if depth reached: evaluate */ + /* else: go down next level */ + /* no eval if there had been any valid half-moves, so the default value (MIN) will be returned. */ + if ( stack_Push(stack_GetCurrElement()->current_color) == 0 ) + { + eval = ce_Eval(); + } + else + { + /* init the element, which has been pushed */ + stack_InitCurrElement(); + /* start over with ntext level */ + ce_LoopPieces(); + /* get the best move from opponents view, so invert the result */ + eval = -stack_GetCurrElement()->best_eval; + stack_Pop(); + } + + /* 4. store result */ + stack_SetMove(eval, pos); + + /* 5. undo the move */ + cu_UndoHalfMove(); + + /* 6. check special modes */ + /* the purpose of these checks is to mark special pieces and positions on the board */ + /* these marks can be checked by the user interface to highlight special positions */ + if ( lrc_obj.check_mode != 0 ) + { + stack_element_p e = stack_GetCurrElement(); + if ( lrc_obj.check_mode == CHECK_MODE_MOVEABLE ) + { + cp_SetOnBoard(e->current_pos, e->current_cp | CP_MARK_MASK ); + } + else if ( lrc_obj.check_mode == CHECK_MODE_TARGET_MOVE ) + { + if ( e->current_pos == lrc_obj.check_src_pos ) + { + cp_SetOnBoard(pos, cp_GetFromBoard(pos) | CP_MARK_MASK ); + } + } + } + return 1; +} + +/*==============================================================*/ +/* move pieces which can move one or more steps into a direction */ +/*==============================================================*/ + +/* + subprocedure to generate various target positions for some pieces + special cases are handled in the piece specific sub-procedure + + Arguments: + d: a list of potential directions + is_multi_step: if the piece can only do one step (zero for KING and KNIGHT) +*/ +static const uint8_t ce_dir_offset_rook[] PROGMEM = { 1, 16, -16, -1, 0 }; +static const uint8_t ce_dir_offset_bishop[] PROGMEM = { 15, 17, -17, -15, 0 }; +static const uint8_t ce_dir_offset_queen[] PROGMEM = { 1, 16, -16, -1, 15, 17, -17, -15, 0 }; +static const uint8_t ce_dir_offset_knight[] PROGMEM = {14, -14, 18, -18, 31, -31, 33, -33, 0}; + +void ce_LoopDirsSingleMultiStep(const uint8_t *d, uint8_t is_multi_step) +{ + uint8_t loop_pos; + + /* with all directions */ + for(;;) + { + if ( u8g_pgm_read(d) == 0 ) + break; + + /* start again from the initial position */ + loop_pos = stack_GetCurrElement()->current_pos; + + /* check direction */ + do + { + /* check next position into one direction */ + loop_pos += u8g_pgm_read(d); + + /* + go further to ce_LoopRecur() + 0 will be returned if the target position is illegal or a piece of the own color + this is used to stop walking into one direction + */ + if ( ce_LoopRecur(loop_pos) == 0 ) + break; + + /* stop if we had hit another piece */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) != PIECE_NONE ) + break; + } while( is_multi_step ); + d++; + } +} + +void ce_LoopRook(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_rook, 1); +} + +void ce_LoopBishop(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_bishop, 1); +} + +void ce_LoopQueen(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_queen, 1); +} + +void ce_LoopKnight(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_knight, 0); +} + + + +/*==============================================================*/ +/* move king */ +/*==============================================================*/ + +uint8_t cu_IsKingCastling(uint8_t mask, int8_t direction, uint8_t cnt) U8G_NOINLINE; + +/* + checks, if the king can do castling + + Arguments: + mask: the bit-mask for the global "castling possible" flag + direction: left castling: -1, right castling 1 + cnt: number of fields to be checked: 3 or 2 +*/ +uint8_t cu_IsKingCastling(uint8_t mask, int8_t direction, uint8_t cnt) +{ + uint8_t pos; + uint8_t opponent_color; + + /* check if the current board state allows castling */ + if ( (lrc_obj.castling_possible & mask) == 0 ) + return 0; /* castling not allowed */ + + /* get the position of the KING, could be white or black king */ + pos = stack_GetCurrElement()->current_pos; + + /* calculate the color of the opponent */ + opponent_color = 1; + opponent_color -= stack_GetCurrElement()->current_color; + + /* if the KING itself is given check... */ + if ( ce_GetPositionAttackWeight(pos, opponent_color) > 0 ) + return 0; + + + /* check if fields in the desired direction are emtpy */ + for(;;) + { + /* go to the next field */ + pos += direction; + /* check for a piece */ + if ( cp_GetPiece(cp_GetFromBoard(pos)) != PIECE_NONE ) + return 0; /* castling not allowed */ + + /* if some of the fields are under attack */ + if ( ce_GetPositionAttackWeight(pos, opponent_color) > 0 ) + return 0; + + cnt--; + if ( cnt == 0 ) + break; + } + return 1; /* castling allowed */ +} + +void ce_LoopKing(void) +{ + /* + there is an interessting timing problem in this procedure + it must be checked for castling first and as second step the normal + KING movement. If we would first check for normal moves, than + any marks might be overwritten by the ROOK in the case of castling. + */ + + /* castling (this must be done before checking normal moves (see above) */ + if ( stack_GetCurrElement()->current_color == COLOR_WHITE ) + { + /* white left castling */ + if ( cu_IsKingCastling(1, -1, 3) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos-2); + } + /* white right castling */ + if ( cu_IsKingCastling(2, 1, 2) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos+2); + } + } + else + { + /* black left castling */ + if ( cu_IsKingCastling(4, -1, 3) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos-2); + } + /* black right castling */ + if ( cu_IsKingCastling(8, 1, 2) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos+2); + } + } + + /* reuse queen directions */ + ce_LoopDirsSingleMultiStep(ce_dir_offset_queen, 0); +} + + +/*==============================================================*/ +/* move pawn */ +/*==============================================================*/ + +/* + doppelschritt: nur von der grundlinie aus, beide (!) felder vor dem bauern müssen frei sein + en passant: nur unmittelbar nachdem ein doppelschritt ausgeführt wurde. +*/ +void ce_LoopPawnSideCapture(uint8_t loop_pos) +{ + if ( gpos_IsIllegal(loop_pos) == 0 ) + { + /* get the piece from the board */ + /* if the field is NOT empty */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) != PIECE_NONE ) + { + /* normal capture */ + ce_LoopRecur(loop_pos); + /* TODO: check for pawn conversion/promotion */ + } + else + { + /* check conditions for en passant capture */ + if ( stack_GetCurrElement()->current_color == COLOR_WHITE ) + { + if ( lrc_obj.pawn_dbl_move[COLOR_BLACK]+16 == loop_pos ) + { + ce_LoopRecur(loop_pos); + /* note: pawn conversion/promotion can not occur */ + } + } + else + { + if ( lrc_obj.pawn_dbl_move[COLOR_WHITE] == loop_pos+16 ) + { + ce_LoopRecur(loop_pos); + /* note: pawn conversion/promotion can not occur */ + } + } + } + } +} + +void ce_LoopPawn(void) +{ + uint8_t initial_pos = stack_GetCurrElement()->current_pos; + uint8_t my_color = stack_GetCurrElement()->current_color; + + uint8_t loop_pos; + uint8_t line; + + /* one step forward */ + + loop_pos = initial_pos; + line = initial_pos; + line >>= 4; + if ( my_color == COLOR_WHITE ) + loop_pos += 16; + else + loop_pos -= 16; + if ( gpos_IsIllegal(loop_pos) == 0 ) + { + /* if the field is empty */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) == PIECE_NONE ) + { + /* TODO: check for and loop through piece conversion/promotion */ + ce_LoopRecur(loop_pos); + + /* second step forward */ + + /* if pawn is on his starting line */ + if ( (my_color == COLOR_WHITE && line == 1) || (my_color == COLOR_BLACK && line == 6 ) ) + { + /* the place before the pawn is not occupied, so we can do double moves, see above */ + + if ( my_color == COLOR_WHITE ) + loop_pos += 16; + else + loop_pos -= 16; + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) == PIECE_NONE ) + { + /* this is a special case, other promotions of the pawn can not occur */ + ce_LoopRecur(loop_pos); + } + } + } + } + + /* capture */ + + loop_pos = initial_pos; + if ( my_color == COLOR_WHITE ) + loop_pos += 15; + else + loop_pos -= 15; + ce_LoopPawnSideCapture(loop_pos); + + + loop_pos = initial_pos; + if ( my_color == COLOR_WHITE ) + loop_pos += 17; + else + loop_pos -= 17; + ce_LoopPawnSideCapture(loop_pos); +} + +/*==============================================================*/ +/* attacked */ +/*==============================================================*/ + +/* + from a starting position, search for a piece, that might jump to that postion. + return: + the two global variables + lrc_obj.find_piece_weight[0]; + lrc_obj.find_piece_weight[1]; + will be increased by the weight of the attacked pieces of that color. + it is usually required to reset these global variables to zero, before using + this function. +*/ + +void ce_FindPieceByStep(uint8_t start_pos, uint8_t piece, const uint8_t *d, uint8_t is_multi_step) +{ + uint8_t loop_pos, cp; + + /* with all directions */ + for(;;) + { + if ( u8g_pgm_read(d) == 0 ) + break; + + /* start again from the initial position */ + loop_pos = start_pos; + + /* check direction */ + do + { + /* check next position into one direction */ + loop_pos += u8g_pgm_read(d); + + /* check if the board boundary has been crossed */ + if ( (loop_pos & 0x088) != 0 ) + break; + + /* get the colored piece from the board */ + cp = cp_GetFromBoard(loop_pos); + + /* stop if we had hit another piece */ + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + /* if it is the piece we are looking for, then add the weight */ + if ( cp_GetPiece(cp) == piece ) + { + lrc_obj.find_piece_weight[cp_GetColor(cp)] += ce_piece_weight[piece]; + lrc_obj.find_piece_cnt[cp_GetColor(cp)]++; + } + /* in any case, break out of the inner loop */ + break; + } + } while( is_multi_step ); + d++; + } +} + +void ce_FindPawnPiece(uint8_t dest_pos, uint8_t color) +{ + uint8_t cp; + /* check if the board boundary has been crossed */ + if ( (dest_pos & 0x088) == 0 ) + { + /* get the colored piece from the board */ + cp = cp_GetFromBoard(dest_pos); + /* only if there is a pawn of the matching color */ + if ( cp_GetPiece(cp) == PIECE_PAWN ) + { + if ( cp_GetColor(cp) == color ) + { + /* the weight of the PAWN */ + lrc_obj.find_piece_weight[color] += 1; + lrc_obj.find_piece_cnt[color]++; + } + } + } +} + + +/* + find out, which pieces do attack a specified field + used to + - check if the KING can do castling + - check if the KING must move + + may be used in the eval procedure ... once... + + the result is stored in the global array + uint8_t lrc_obj.find_piece_weight[2]; + which is indexed with the color. + lrc_obj.find_piece_weight[COLOR_WHITE] is the sum of all white pieces + which can directly move to this field. + + example: + if the black KING is at "pos" and lrc_obj.find_piece_weight[COLOR_WHITE] is not zero + (after executing ce_CalculatePositionWeight(pos)) then the KING must be protected or moveed, because + the KING was given check. +*/ + +void ce_CalculatePositionWeight(uint8_t pos) +{ + + lrc_obj.find_piece_weight[0] = 0; + lrc_obj.find_piece_weight[1] = 0; + lrc_obj.find_piece_cnt[0] = 0; + lrc_obj.find_piece_cnt[1] = 0; + + if ( (pos & 0x088) != 0 ) + return; + + ce_FindPieceByStep(pos, PIECE_ROOK, ce_dir_offset_rook, 1); + ce_FindPieceByStep(pos, PIECE_BISHOP, ce_dir_offset_bishop, 1); + ce_FindPieceByStep(pos, PIECE_QUEEN, ce_dir_offset_queen, 1); + ce_FindPieceByStep(pos, PIECE_KNIGHT, ce_dir_offset_knight, 0); + ce_FindPieceByStep(pos, PIECE_KING, ce_dir_offset_queen, 0); + + ce_FindPawnPiece(pos+17, COLOR_BLACK); + ce_FindPawnPiece(pos+15, COLOR_BLACK); + ce_FindPawnPiece(pos-17, COLOR_WHITE); + ce_FindPawnPiece(pos-15, COLOR_WHITE); +} + +/* + calculate the summed weight of pieces with specified color which can move to a specified position + + argument: + pos: the position which should be analysed + color: the color of those pieces which should be analysed + e.g. if a black piece is at 'pos' and 'color' is white then this procedure returns the white atting count +*/ +uint8_t ce_GetPositionAttackWeight(uint8_t pos, uint8_t color) +{ + ce_CalculatePositionWeight(pos); + return lrc_obj.find_piece_weight[color]; +} + +uint8_t ce_GetPositionAttackCount(uint8_t pos, uint8_t color) +{ + ce_CalculatePositionWeight(pos); + return lrc_obj.find_piece_cnt[color]; +} + + +/*==============================================================*/ +/* depth search starts here: loop over all pieces of the current color on the board */ +/*==============================================================*/ + +void ce_LoopPieces(void) +{ + stack_element_p e = stack_GetCurrElement(); + /* start with lower left position (A1) */ + e->current_pos = 0; + do + { + e->current_cp = cp_GetFromBoard(e->current_pos); + /* check if the position on the board is empty */ + if ( e->current_cp != 0 ) + { + /* only generate moves for the current color */ + if ( e->current_color == cp_GetColor(e->current_cp) ) + { + chess_Thinking(); + + /* find out which piece is used */ + switch(cp_GetPiece(e->current_cp)) + { + case PIECE_NONE: + break; + case PIECE_PAWN: + ce_LoopPawn(); + break; + case PIECE_KNIGHT: + ce_LoopKnight(); + break; + case PIECE_BISHOP: + ce_LoopBishop(); + break; + case PIECE_ROOK: + ce_LoopRook(); + break; + case PIECE_QUEEN: + ce_LoopQueen(); + break; + case PIECE_KING: + ce_LoopKing(); + break; + } + } + } + e->current_pos = cu_NextPos(e->current_pos); + } while( e->current_pos != 0 ); +} + +/*==============================================================*/ +/* user interface */ +/*==============================================================*/ + +/* +eval_t chess_EvalCurrBoard(uint8_t color) +{ + stack_Init(0); + stack_GetCurrElement()->current_color = color; + ce_LoopPieces(); + return stack_GetCurrElement()->best_eval; +} +*/ + +/* clear any marks on the board */ +void chess_ClearMarks(void) +{ + uint8_t i; + for( i = 0; i < 64; i++ ) + lrc_obj.board[i] &= ~CP_MARK_MASK; +} + +/* + Mark all pieces which can do moves. This is done by setting flags on the global board +*/ +void chess_MarkMovable(void) +{ + stack_Init(0); + //stack_GetCurrElement()->current_color = color; + lrc_obj.check_mode = CHECK_MODE_MOVEABLE; + ce_LoopPieces(); +} + +/* + Checks, if the piece can move from src_pos to dest_pos + + src_pos: The game position of a piece on the chess board +*/ +void chess_MarkTargetMoves(uint8_t src_pos) +{ + stack_Init(0); + stack_GetCurrElement()->current_color = cp_GetColor(cp_GetFromBoard(src_pos)); + lrc_obj.check_src_pos = src_pos; + lrc_obj.check_mode = CHECK_MODE_TARGET_MOVE; + ce_LoopPieces(); +} + +/* + first call should start with 255 + this procedure will return 255 if + - there are no marks at all + - it has looped over all marks once +*/ +uint8_t chess_GetNextMarked(uint8_t arg, uint8_t is_prev) +{ + uint8_t i; + uint8_t pos = arg; + for(i = 0; i < 64; i++) + { + if ( is_prev != 0 ) + pos = cu_PrevPos(pos); + else + pos = cu_NextPos(pos); + if ( arg != 255 && pos == 0 ) + return 255; + if ( cp_IsMarked(cp_GetFromBoard(pos)) ) + return pos; + } + return 255; +} + + +/* make a manual move: this is a little bit more than cu_Move() */ +void chess_ManualMove(uint8_t src, uint8_t dest) +{ + uint8_t cp; + + /* printf("chess_ManualMove %02x -> %02x\n", src, dest); */ + + /* if all other things fail, this is the place where the game is to be decided: */ + /* ... if the KING is captured */ + cp = cp_GetFromBoard(dest); + if ( cp_GetPiece(cp) == PIECE_KING ) + { + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = cp_GetColor(cp); + } + + /* clear ply history here, to avoid memory overflow */ + /* may be the last X moves can be kept here */ + cu_ReduceHistoryByFullMove(); + /* perform the move on the board */ + cu_Move(src, dest); + + /* update en passant double move positions: en passant position is removed after two half moves */ + lrc_obj.pawn_dbl_move[lrc_obj.ply_count&1] = ILLEGAL_POSITION; + + /* update the global half move counter */ + lrc_obj.ply_count++; + + + /* make a small check about the end of the game */ + /* use at least depth 1, because we must know if the king can still move */ + /* this is: King moves at level 0 and will be captured at level 1 */ + /* so we check if the king can move and will not be captured at search level 1 */ + + stack_Init(1); + ce_LoopPieces(); + + /* printf("chess_ManualMove/analysis best_from_pos %02x -> best_to_pos %02x\n", stack_GetCurrElement()->best_from_pos, stack_GetCurrElement()->best_to_pos); */ + + /* analyse the eval result */ + + /* check if the other player has any moves left */ + if ( stack_GetCurrElement()->best_from_pos == ILLEGAL_POSITION ) + { + uint8_t color; + /* conditions: */ + /* 1. no King, should never happen, opposite color has won */ + /* this is already checked above at the beginning if this procedure */ + /* 2. King is under attack, opposite color has won */ + /* 3. King is not under attack, game is a draw */ + + uint8_t i = 0; + color = lrc_obj.ply_count; + color &= 1; + do + { + cp = cp_GetFromBoard(i); + /* look for the King */ + if ( cp_GetPiece(cp) == PIECE_KING ) + { + if ( cp_GetColor(cp) == color ) + { + /* check if KING is attacked */ + if ( ce_GetPositionAttackCount(i, color^1) != 0 ) + { + /* KING is under attack (check) and can not move: Game is lost */ + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = color; + } + else + { + /* KING is NOT under attack (check) but can not move: Game is a draw */ + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = 2; + } + /* break out of the loop */ + break; + } + } + i = cu_NextPos(i); + } while( i != 0 ); + } +} + +/* let the computer do a move */ +void chess_ComputerMove(uint8_t depth) +{ + stack_Init(depth); + + //stack_GetCurrElement()->current_color = lrc_obj.ply_count; + //stack_GetCurrElement()->current_color &= 1; + + cu_ReduceHistoryByFullMove(); + ce_LoopPieces(); + + chess_ManualMove(stack_GetCurrElement()->best_from_pos, stack_GetCurrElement()->best_to_pos); +} + + +/*==============================================================*/ +/* unix code */ +/*==============================================================*/ + +#ifdef UNIX_MAIN + +#include +#include + +char *piece_str[] = { + /* 0x00 */ + " ", + "wP", + "wN", + "wB", + + /* 0x04 */ + "wR", + "wQ", + "wK", + "w?", + + /* 0x08 */ + "w?", + "w?", + "w?", + "w?", + + /* 0x0c */ + "w?", + "w?", + "w?", + "w?", + + /* 0x10 */ + "b ", + "bP", + "bN", + "bB", + "bR", + "bQ", + "bK", + "b?", + + "b?", + "b?", + "b?", + "b?", + "b?", + "b?", + "b?", + "b?" +}; + +void chess_Thinking(void) +{ + uint8_t i; + uint8_t cp = cp_GetPiece(stack_GetCurrElement()->current_cp); + + printf("Thinking: ", piece_str[cp], stack_GetCurrElement()->current_pos); + + for( i = 0; i <= lrc_obj.curr_depth; i++ ) + printf("%s ", piece_str[(lrc_obj.stack_memory+i)->current_cp]); + + printf(" \r"); +} + +void board_Show(void) +{ + uint8_t i, j, cp; + char buf[10]; + for ( i = 0; i < 8; i++ ) + { + printf("%1d ", 7-i); + for ( j = 0; j < 8; j++ ) + { + /* get piece from global board */ + cp = lrc_obj.board[(7-i)*8+j]; + strcpy(buf, piece_str[cp&COLOR_PIECE_MASK]); + + if ( (cp & CP_MARK_MASK) != 0 ) + { + buf[0] = '#'; + } + + /* mask out any bits except color and piece index */ + cp &= COLOR_PIECE_MASK; + printf("%s %02x ", buf, cp); + + } + printf("\n"); + } +} + +int main(void) +{ + uint8_t depth = 3; + chess_SetupBoard(); + board_Show(); + puts(""); + + + /* + chess_ClearMarks(); + chess_MarkMovable(COLOR_WHITE); + board_Show(); + */ + + chess_ManualMove(0x006, 0x066); + + printf("lrc_obj.is_game_end: %d\n" , lrc_obj.is_game_end); + printf("lrc_obj.lost_side_color: %d\n" , lrc_obj.lost_side_color); + + chess_ComputerMove(2); + + printf("lrc_obj.is_game_end: %d\n" , lrc_obj.is_game_end); + printf("lrc_obj.lost_side_color: %d\n" , lrc_obj.lost_side_color); + + board_Show(); + +} + + + +#else + +/*==============================================================*/ +/* display menu */ +/*==============================================================*/ + +//#define MNU_FONT font_5x7 +#define MNU_FONT u8g_font_5x8r +//#define MNU_FONT font_6x9 +#define MNU_ENTRY_HEIGHT 9 + +char *mnu_title = "Little Rook Chess"; +char *mnu_list[] = { "New Game (White)", "New Game (Black)", "Undo Move", "Return" }; +uint8_t mnu_pos = 0; +uint8_t mnu_max = 4; + +void mnu_DrawHome(uint8_t is_highlight) +{ + uint8_t x = lrc_u8g->width - 35; + uint8_t y = (lrc_u8g->height-1); + uint8_t t; + + u8g_SetFont(lrc_u8g, u8g_font_5x7r); + u8g_SetDefaultForegroundColor(lrc_u8g); + t = u8g_DrawStrP(lrc_u8g, x, y -1, U8G_PSTR("Options")); + + if ( is_highlight ) + u8g_DrawFrame(lrc_u8g, x-1, y - MNU_ENTRY_HEIGHT +1, t, MNU_ENTRY_HEIGHT); +} + +void mnu_DrawEntry(uint8_t y, char *str, uint8_t is_clr_background, uint8_t is_highlight) +{ + uint8_t t, x; + u8g_SetFont(lrc_u8g, MNU_FONT); + t = u8g_GetStrWidth(lrc_u8g, str); + x = u8g_GetWidth(lrc_u8g); + x -= t; + x >>= 1; + + if ( is_clr_background ) + { + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBox(lrc_u8g, x-3, (lrc_u8g->height-1) - (y+MNU_ENTRY_HEIGHT-1+2), t+5, MNU_ENTRY_HEIGHT+4); + } + + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawStr(lrc_u8g, x, (lrc_u8g->height-1) - y, str); + + if ( is_highlight ) + { + u8g_DrawFrame(lrc_u8g, x-1, (lrc_u8g->height-1) - y -MNU_ENTRY_HEIGHT +1, t, MNU_ENTRY_HEIGHT); + } +} + +void mnu_Draw(void) +{ + uint8_t i; + uint8_t t,y; + /* calculate hight of the complete menu */ + y = mnu_max; + y++; /* consider also some space for the title */ + y++; /* consider also some space for the title */ + y *= MNU_ENTRY_HEIGHT; + + /* calculate how much space will be left */ + t = u8g_GetHeight(lrc_u8g); + t -= y; + + /* topmost pos start half of that empty space from the top */ + t >>= 1; + y = u8g_GetHeight(lrc_u8g); + y -= t; + + y -= MNU_ENTRY_HEIGHT; + mnu_DrawEntry(y, mnu_title, 0, 0); + + y -= MNU_ENTRY_HEIGHT; + + + for( i = 0; i < mnu_max; i++ ) + { + y -= MNU_ENTRY_HEIGHT; + mnu_DrawEntry(y, mnu_list[i], 0, i == mnu_pos); + } +} + +void mnu_Step(uint8_t key_cmd) +{ + if ( key_cmd == CHESS_KEY_NEXT ) + { + if ( mnu_pos+1 < mnu_max ) + mnu_pos++; + } + else if ( key_cmd == CHESS_KEY_PREV ) + { + if ( mnu_pos > 0 ) + mnu_pos--; + } +} + + + + +uint8_t chess_key_code = 0; +uint8_t chess_key_cmd = 0; +#define CHESS_STATE_MENU 0 +#define CHESS_STATE_SELECT_START 1 +#define CHESS_STATE_SELECT_PIECE 2 +#define CHESS_STATE_SELECT_TARGET_POS 3 +#define CHESS_STATE_THINKING 4 +#define CHESS_STATE_GAME_END 5 +uint8_t chess_state = CHESS_STATE_MENU; +uint8_t chess_source_pos = 255; +uint8_t chess_target_pos = 255; + +const uint8_t chess_pieces_body_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, /* 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, */ + /* KNIGHT */ 0x00, 0x00, 0x1c, 0x2c, 0x04, 0x04, 0x0e, 0x00, + /* BISHOP */ 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x08, 0x00, 0x00, /* 0x00, 0x00, 0x08, 0x1c, 0x1c, 0x08, 0x00, 0x00, */ + /* ROOK */ 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, + /* QUEEN */ 0x00, 0x00, 0x14, 0x1c, 0x08, 0x1c, 0x08, 0x00, + /* KING */ 0x00, 0x00, 0x00, 0x08, 0x3e, 0x1c, 0x08, 0x00, +}; + +#ifdef NOT_REQUIRED +/* white pieces are constructed by painting black pieces and cutting out the white area */ +const uint8_t chess_white_pieces_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0x1e, 0x00, + /* KNIGHT */ 0x00, 0x1c, 0x22, 0x52, 0x6a, 0x0a, 0x11, 0x1f, + /* BISHOP */ 0x00, 0x08, 0x14, 0x22, 0x22, 0x14, 0x08, 0x7f, + /* ROOK */ 0x00, 0x55, 0x7f, 0x22, 0x22, 0x22, 0x22, 0x7f, + /* QUEEN */ 0x00, 0x55, 0x2a, 0x22, 0x14, 0x22, 0x14, 0x7f, + /* KING */ 0x08, 0x1c, 0x49, 0x77, 0x41, 0x22, 0x14, 0x7f, +}; +#endif + +const uint8_t chess_black_pieces_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x3c, 0x00, /* 0x00, 0x00, 0x0c, 0x1e, 0x1e, 0x0c, 0x1e, 0x00, */ + /* KNIGHT */ 0x00, 0x1c, 0x3e, 0x7e, 0x6e, 0x0e, 0x1f, 0x1f, + /* BISHOP */ 0x00, 0x1c, 0x2e, 0x3e, 0x3e, 0x1c, 0x08, 0x7f, /*0x00, 0x08, 0x1c, 0x3e, 0x3e, 0x1c, 0x08, 0x7f,*/ + /* ROOK */ 0x00, 0x55, 0x7f, 0x3e, 0x3e, 0x3e, 0x3e, 0x7f, + /* QUEEN */ 0x00, 0x55, 0x3e, 0x3e, 0x1c, 0x3e, 0x1c, 0x7f, + /* KING -*/ 0x08, 0x1c, 0x49, 0x7f, 0x7f, 0x3e, 0x1c, 0x7f, +}; + + +#if defined(DOGXL160_HW_GR) +#define BOXSIZE 13 +#define BOXOFFSET 3 +#else +#define BOXSIZE 8 +#define BOXOFFSET 1 +#endif + +u8g_uint_t chess_low_edge; +uint8_t chess_boxsize = 8; +uint8_t chess_boxoffset = 1; + + +void chess_DrawFrame(uint8_t pos, uint8_t is_bold) +{ + u8g_uint_t x0, y0; + + x0 = pos; + x0 &= 15; + if ( lrc_obj.orientation != COLOR_WHITE ) + x0 ^= 7; + + y0 = pos; + y0>>= 4; + if ( lrc_obj.orientation != COLOR_WHITE ) + y0 ^= 7; + + x0 *= chess_boxsize; + y0 *= chess_boxsize; + + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawFrame(lrc_u8g, x0, chess_low_edge - y0 - chess_boxsize+1, chess_boxsize, chess_boxsize); + + + if ( is_bold ) + { + x0--; + y0++; + + u8g_DrawFrame(lrc_u8g, x0, chess_low_edge - y0 - chess_boxsize +1, chess_boxsize+2, chess_boxsize+2); + } +} + + +void chess_DrawBoard(void) +{ + uint8_t i, j, cp; + const uint8_t *ptr; /* pointer into PROGMEM */ + + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(lrc_u8g)) > 1 ) + { + for( i = 0; i < 8; i++ ) + for( j = 0; j < 8; j++ ) + { + uint8_t x,y; + x = i; + x*=chess_boxsize; + y = j; + y*=chess_boxsize; + if ( ((i^j) & 1) == 0 ) + u8g_SetDefaultMidColor(lrc_u8g); + else + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBox(lrc_u8g, x,chess_low_edge-y-chess_boxsize+1,chess_boxsize,chess_boxsize); + } + //u8g_SetDefaultForegroundColor(lrc_u8g); + } + else + { + uint8_t x_offset = 1; + u8g_SetDefaultForegroundColor(lrc_u8g); + for( i = 0; i < 8*8; i+=8 ) + { + for( j = 0; j < 8*8; j+=8 ) + { + if ( ((i^j) & 8) == 0 ) + { + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-2); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-4); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+2+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+2+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+4+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+4+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-2); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-4); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-6); + } + } + } + } + + for ( i = 0; i < 8; i++ ) + { + for ( j = 0; j < 8; j++ ) + { + /* get piece from global board */ + if ( lrc_obj.orientation == COLOR_WHITE ) + { + cp = lrc_obj.board[i*8+j]; + } + else + { + cp = lrc_obj.board[(7-i)*8+7-j]; + } + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + ptr = chess_black_pieces_bm; + ptr += (cp_GetPiece(cp)-1)*8; + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawBitmapP(lrc_u8g, j*chess_boxsize+chess_boxoffset-1, chess_low_edge - (i*chess_boxsize+chess_boxsize-chess_boxoffset), 1, 8, ptr); + + if ( cp_GetColor(cp) == lrc_obj.strike_out_color ) + { + ptr = chess_pieces_body_bm; + ptr += (cp_GetPiece(cp)-1)*8; + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBitmapP(lrc_u8g, j*chess_boxsize+chess_boxoffset-1, chess_low_edge - (i*chess_boxsize+chess_boxsize-chess_boxoffset), 1, 8, ptr); + } + } + } + } + + if ( (chess_source_pos & 0x88) == 0 ) + { + chess_DrawFrame(chess_source_pos, 1); + } + + if ( (chess_target_pos & 0x88) == 0 ) + { + chess_DrawFrame(chess_target_pos, 0); + } + +} + + +void chess_Thinking(void) +{ +} + +void chess_Init(u8g_t *u8g, uint8_t body_color) +{ + lrc_u8g = u8g; + + chess_low_edge = u8g_GetHeight(lrc_u8g); + chess_low_edge--; + + + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(lrc_u8g)) == 1 ) + { + + chess_boxsize = 8; + chess_boxoffset = 1; + } + else + { + + /* + if ( u8g_GetHeight(lrc_u8g) >= 12*8 ) + { + chess_boxsize = 12; + chess_boxoffset = 3; + } + else */ if ( u8g_GetHeight(lrc_u8g) >= 11*8 ) + { + chess_boxsize = 10; + chess_boxoffset = 2; + } + else + { + chess_boxsize = 8; + chess_boxoffset = 1; + } + + if ( u8g_GetHeight(lrc_u8g) > 64 ) + chess_low_edge -= (u8g_GetHeight(lrc_u8g)-chess_boxsize*8) / 2; + + } + + lrc_obj.strike_out_color = body_color; + chess_SetupBoard(); +} + + + +void chess_Draw(void) +{ + if ( chess_state == CHESS_STATE_MENU ) + { + if ( lrc_obj.ply_count == 0) + mnu_max = 2; + else + mnu_max = 4; + mnu_Draw(); + } + else + { + chess_DrawBoard(); + + { + uint8_t i; + uint8_t entries = lrc_obj.chm_pos; + if ( entries > 4 ) + entries = 4; + + u8g_SetFont(lrc_u8g, u8g_font_5x7); + u8g_SetDefaultForegroundColor(lrc_u8g); + for( i = 0; i < entries; i++ ) + { + +#if defined(DOGXL160_HW_GR) || defined(DOGXL160_HW_BW) + dog_DrawStr(u8g_GetWidth(lrc_u8g)-35, u8g_GetHeight(lrc_u8g)-8*(i+1), font_5x7, cu_GetHalfMoveStr(lrc_obj.chm_pos-entries+i)); +#else + u8g_DrawStr(lrc_u8g, u8g_GetWidth(lrc_u8g)-35, 8*(i+1), cu_GetHalfMoveStr(lrc_obj.chm_pos-entries+i)); +#endif + + } + + } + + if ( chess_state == CHESS_STATE_SELECT_PIECE ) + mnu_DrawHome(chess_source_pos == 255); + else if ( chess_state == CHESS_STATE_SELECT_TARGET_POS ) + mnu_DrawHome(chess_target_pos == 255); + else + mnu_DrawHome(0); + + if ( chess_state == CHESS_STATE_GAME_END ) + { + switch( lrc_obj.lost_side_color ) + { + case COLOR_WHITE: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "Black wins", 1, 1); + break; + case COLOR_BLACK: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "White wins", 1, 1); + break; + default: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "Stalemate", 1, 1); + break; + } + } + } +} + + +void chess_Step(uint8_t keycode) +{ + if ( keycode == CHESS_KEY_NONE ) + { + chess_key_cmd = chess_key_code; + chess_key_code = CHESS_KEY_NONE; + } + else + { + chess_key_cmd = CHESS_KEY_NONE; + chess_key_code = keycode; + } + //chess_ComputerMove(2); + switch(chess_state) + { + case CHESS_STATE_MENU: + mnu_Step(chess_key_cmd); + if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + if ( mnu_pos == 0 ) + { + chess_SetupBoard(); + lrc_obj.orientation = 0; + chess_state = CHESS_STATE_SELECT_START; + } + else if ( mnu_pos == 1 ) + { + chess_SetupBoard(); + lrc_obj.orientation = 1; + chess_state = CHESS_STATE_THINKING; + } + else if ( mnu_pos == 2 ) + { + if ( lrc_obj.ply_count >= 2 ) + { + cu_UndoHalfMove(); + cu_UndoHalfMove(); + lrc_obj.ply_count-=2; + if ( lrc_obj.ply_count == 0 ) + mnu_pos = 0; + } + chess_state = CHESS_STATE_SELECT_START; + } + else if ( mnu_pos == 3 ) + { + chess_state = CHESS_STATE_SELECT_START; + } + } + break; + case CHESS_STATE_SELECT_START: + chess_ClearMarks(); + chess_MarkMovable(); + chess_source_pos = chess_GetNextMarked(255, 0); + chess_target_pos = ILLEGAL_POSITION; + chess_state = CHESS_STATE_SELECT_PIECE; + break; + + case CHESS_STATE_SELECT_PIECE: + if ( chess_key_cmd == CHESS_KEY_NEXT ) + { + chess_source_pos = chess_GetNextMarked(chess_source_pos, 0); + } + else if ( chess_key_cmd == CHESS_KEY_PREV ) + { + chess_source_pos = chess_GetNextMarked(chess_source_pos, 1); + } + else if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + if ( chess_source_pos == 255 ) + { + chess_state = CHESS_STATE_MENU; + } + else + { + chess_ClearMarks(); + chess_MarkTargetMoves(chess_source_pos); + chess_target_pos = chess_GetNextMarked(255, 0); + chess_state = CHESS_STATE_SELECT_TARGET_POS; + } + } + break; + case CHESS_STATE_SELECT_TARGET_POS: + if ( chess_key_cmd == CHESS_KEY_NEXT ) + { + chess_target_pos = chess_GetNextMarked(chess_target_pos, 0); + } + else if ( chess_key_cmd == CHESS_KEY_PREV ) + { + chess_target_pos = chess_GetNextMarked(chess_target_pos, 1); + } + else if ( chess_key_cmd == CHESS_KEY_BACK ) + { + chess_ClearMarks(); + chess_MarkMovable(); + chess_target_pos = ILLEGAL_POSITION; + chess_state = CHESS_STATE_SELECT_PIECE; + } + else if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + chess_ManualMove(chess_source_pos, chess_target_pos); + if ( lrc_obj.is_game_end != 0 ) + chess_state = CHESS_STATE_GAME_END; + else + chess_state = CHESS_STATE_THINKING; + /* clear marks as some kind of feedback to the user... it simply looks better */ + chess_source_pos = ILLEGAL_POSITION; + chess_target_pos = ILLEGAL_POSITION; + chess_ClearMarks(); + } + break; + case CHESS_STATE_THINKING: + chess_ComputerMove(2); + if ( lrc_obj.is_game_end != 0 ) + chess_state = CHESS_STATE_GAME_END; + else + chess_state = CHESS_STATE_SELECT_START; + break; + case CHESS_STATE_GAME_END: + if ( chess_key_cmd != CHESS_KEY_NONE ) + { + chess_state = CHESS_STATE_MENU; + chess_SetupBoard(); + } + break; + } + +} + +#endif + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g.h b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g.h new file mode 100644 index 000000000..f5a0230ac --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g.h @@ -0,0 +1,1607 @@ +/* + + u8g.h + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef _U8G_H +#define _U8G_H + +//#define U8G_16BIT 1 + +#include + +#ifdef __18CXX +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef unsigned short uint16_t; +typedef signed short int16_t; +#else +#include +#endif + +#if defined(__AVR__) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/*===============================================================*/ +#ifdef __GNUC__ +#define U8G_NOINLINE __attribute__((noinline)) +#define U8G_PURE __attribute__ ((pure)) +#define U8G_NOCOMMON __attribute__ ((nocommon)) +#define U8G_SECTION(name) __attribute__ ((section (name))) +#else +#define U8G_NOINLINE +#define U8G_PURE +#define U8G_NOCOMMON +#define U8G_SECTION(name) +#endif + +/*===============================================================*/ +/* flash memory access */ + +#if defined(__AVR__) +/* U8G_PROGMEM is used by the XBM example */ +#define U8G_PROGMEM U8G_SECTION(".progmem.data") +typedef uint8_t PROGMEM u8g_pgm_uint8_t; +typedef uint8_t u8g_fntpgm_uint8_t; +#define u8g_pgm_read(adr) pgm_read_byte_near(adr) +#define U8G_PSTR(s) ((u8g_pgm_uint8_t *)PSTR(s)) +#else +#define U8G_PROGMEM +#define PROGMEM +typedef uint8_t u8g_pgm_uint8_t; +typedef uint8_t u8g_fntpgm_uint8_t; +#define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr)) +#define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s)) +#endif + +/*===============================================================*/ +/* forward */ +typedef struct _u8g_t u8g_t; +typedef struct _u8g_dev_t u8g_dev_t; + +typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; +typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; +typedef struct _u8g_box_t u8g_box_t; + + +/*===============================================================*/ +/* generic */ +#if defined(U8G_16BIT) +typedef uint16_t u8g_uint_t; +typedef int16_t u8g_int_t; +#else +typedef uint8_t u8g_uint_t; +typedef int8_t u8g_int_t; +#endif + +#ifdef OBSOLETE +struct _u8g_box_t +{ + u8g_uint_t x0, y0, x1, y1; +}; +typedef struct _u8g_box_t u8g_box_t; +#endif /* OBSOLETE */ + + +/*===============================================================*/ +/* device structure */ + +#ifdef __XC8 +/* device prototype */ +typedef uint8_t (*u8g_dev_fnptr)(void *u8g, void *dev, uint8_t msg, void *arg); + +/* com prototype */ +typedef uint8_t (*u8g_com_fnptr)(void *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +#else +/* device prototype */ +typedef uint8_t (*u8g_dev_fnptr)(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* com prototype */ +typedef uint8_t (*u8g_com_fnptr)(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +#endif + + + +struct _u8g_dev_t +{ + u8g_dev_fnptr dev_fn; /* device procedure */ + void *dev_mem; /* device memory */ + u8g_com_fnptr com_fn; /* communication procedure */ +}; + + +/*===============================================================*/ +/* device list */ + +/* Size: 128x64 SDL, u8g_dev_sdl.c */ +extern u8g_dev_t u8g_dev_sdl_1bit; +extern u8g_dev_t u8g_dev_sdl_1bit_h; +extern u8g_dev_t u8g_dev_sdl_2bit; +extern u8g_dev_t u8g_dev_sdl_2bit_double_mem; +extern u8g_dev_t u8g_dev_sdl_8bit; +int u8g_sdl_get_key(void); + +/* Size: 70x30 monochrom, stdout */ +extern u8g_dev_t u8g_dev_stdout; + +/* Size: monochrom, writes "u8g.pbm" */ +extern u8g_dev_t u8g_dev_pbm; +extern u8g_dev_t u8g_dev_pbm_8h1; +extern u8g_dev_t u8g_dev_pbm_8h2; /* grayscale simulation */ + +/* Size: 128x64 monochrom, no output, used for performance measure */ +extern u8g_dev_t u8g_dev_gprof; + +/* Display: EA DOGS102, Size: 102x64 monochrom */ +extern u8g_dev_t u8g_dev_uc1701_dogs102_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_dogs102_hw_spi; + +/* Display: Mini12864 (dealextreme), Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_uc1701_mini12864_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_mini12864_hw_spi; + +/* Display: EA DOGM132, Size: 128x32 monochrom */ +extern u8g_dev_t u8g_dev_st7565_dogm132_sw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm132_hw_spi; + +/* Display: EA DOGM128, Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_st7565_dogm128_sw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm128_hw_spi; +/* Display: Topway LM6063 128x64 */ +extern u8g_dev_t u8g_dev_st7565_lm6063_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6063_hw_spi; +/* Display: Topway LM6059 128x64 (Adafruit) */ +extern u8g_dev_t u8g_dev_st7565_lm6059_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6059_hw_spi; +/* Display: Newhaven NHD-C12864 */ +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_sw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_hw_spi; +/* Display: Newhaven NHD-C12832 */ +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_sw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_parallel; +/* Display: Displaytech 64128N */ +extern u8g_dev_t u8g_dev_st7565_64128n_sw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_hw_spi; + +/* dfrobot 128x64 Graphic LCD (SKU:FIT0021) */ +extern u8g_dev_t u8g_dev_st7920_128x64_sw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_hw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_8bit; + +extern u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_4x_8bit; + +/* NHD-19232WG */ +extern u8g_dev_t u8g_dev_st7920_192x32_sw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_hw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_8bit; + +extern u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_4x_8bit; + +/* CrystalFontz CFAG20232 */ +extern u8g_dev_t u8g_dev_st7920_202x32_sw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_hw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_8bit; + +extern u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_4x_8bit; + +/* LC7981 160x80 display */ +extern u8g_dev_t u8g_dev_lc7981_160x80_8bit; +/* LC7981 240x64 display */ +extern u8g_dev_t u8g_dev_lc7981_240x64_8bit; +/* LC7981 240x128 display */ +extern u8g_dev_t u8g_dev_lc7981_240x128_8bit; +/* LC7981 320x64 display */ +extern u8g_dev_t u8g_dev_lc7981_320x64_8bit; + +/* T6963, all t6963 devices have double page (2x) */ +extern u8g_dev_t u8g_dev_t6963_240x128_8bit; +extern u8g_dev_t u8g_dev_t6963_240x64_8bit; +extern u8g_dev_t u8g_dev_t6963_128x64_8bit; + +/* Display: EA DOGXL160, Size: 160x104 monochrom & gray level */ +extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_hw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_hw_spi; + +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi; + +/* Display: Generic KS0108b, Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_ks0108_128x64; /* official Arduino Library interface */ +extern u8g_dev_t u8g_dev_ks0108_128x64_fast; /* faster, but uses private tables from the Arduino Library */ + +/* Nokia 84x48 Display with PCD8544 */ +extern u8g_dev_t u8g_dev_pcd8544_84x48_sw_spi; +extern u8g_dev_t u8g_dev_tls8204_84x48_sw_spi; + +/* Nokia 96x65 Display with PCF8812 */ +extern u8g_dev_t u8g_dev_pcf8812_96x65_sw_spi; + +/* NHD-2.7-12864UCY3 OLED Display with SSD1325 Controller */ +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_parallel; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_hw_spi; + +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi; + +/* LY120 OLED with SSD1327 Controller (tested with Seeedstudio module) */ +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_i2c; + +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c; + +/* NHD-3.12-25664 OLED Display with SSD1322 Controller */ +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi; + +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi; + +/* OLED 128x64 Display with SSD1306 Controller */ +extern u8g_dev_t u8g_dev_ssd1306_128x64_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_i2c; + +/* OLED 128x64 Display with SSD1309 Controller */ +extern u8g_dev_t u8g_dev_ssd1309_128x64_sw_spi; +extern u8g_dev_t u8g_dev_ssd1309_128x64_hw_spi; +extern u8g_dev_t u8g_dev_ssd1309_128x64_i2c; + +/* OLED 128x32 Display with SSD1306 Controller */ +extern u8g_dev_t u8g_dev_ssd1306_128x32_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_i2c; + +/* experimental 65K TFT with st7687 controller */ +extern u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi; +extern u8g_dev_t u8g_dev_st7687_c144mvgd_8bit; + +/* SBN1661/SED1520 display with 122x32 */ +extern u8g_dev_t u8g_dev_sbn1661_122x32; + +/* flip disc matrix */ +extern u8g_dev_t u8g_dev_flipdisc_2x7; +void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2)); + +/* ILI9325D based TFT */ +extern u8g_dev_t u8g_dev_ili9325d_320x240_8bit; + +/* u8g_virtual_screen.c */ +extern u8g_dev_t u8g_dev_vs; + + +/*===============================================================*/ +/* device messages */ + +struct _u8g_dev_arg_pixel_t +{ + u8g_uint_t x, y; /* will be modified */ + uint8_t pixel; /* will be modified */ + uint8_t dir; + uint8_t color; +}; +/* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */ /* forward decl */ + +struct _u8g_dev_arg_bbx_t +{ + u8g_uint_t x, y, w, h; +}; +/* typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; */ /* forward decl */ + +struct _u8g_box_t +{ + u8g_uint_t x0, y0, x1, y1; +}; +/* typedef struct _u8g_box_t u8g_box_t; */ /* forward decl */ + + +#define U8G_DEV_MSG_INIT 10 +#define U8G_DEV_MSG_STOP 11 + +/* arg: pointer to uint8_t, contranst value between 0 and 255 */ +#define U8G_DEV_MSG_CONTRAST 15 + +#define U8G_DEV_MSG_SLEEP_ON 16 +#define U8G_DEV_MSG_SLEEP_OFF 17 + +#define U8G_DEV_MSG_PAGE_FIRST 20 +#define U8G_DEV_MSG_PAGE_NEXT 21 + +/* arg: u8g_dev_arg_bbx_t * */ +/* new algorithm with U8G_DEV_MSG_GET_PAGE_BOX makes this msg obsolete */ +/* #define U8G_DEV_MSG_IS_BBX_INTERSECTION 22 */ + +/* arg: u8g_box_t *, fill structure with current page properties */ +#define U8G_DEV_MSG_GET_PAGE_BOX 23 + +/* +#define U8G_DEV_MSG_PRIMITIVE_START 30 +#define U8G_DEV_MSG_PRIMITIVE_END 31 +*/ + +/* arg: u8g_dev_arg_pixel_t * */ +#define U8G_DEV_MSG_SET_PIXEL 50 +#define U8G_DEV_MSG_SET_8PIXEL 59 + +#define U8G_DEV_MSG_SET_COLOR_INDEX 60 + +#define U8G_DEV_MSG_SET_XY_CB 61 + +#define U8G_DEV_MSG_GET_WIDTH 70 +#define U8G_DEV_MSG_GET_HEIGHT 71 +#define U8G_DEV_MSG_GET_MODE 72 + +/*===============================================================*/ +/* device modes */ +#define U8G_MODE(is_color, bits_per_pixel) (((is_color)<<4)|(bits_per_pixel)) + +#define U8G_MODE_UNKNOWN 0 +#define U8G_MODE_BW U8G_MODE(0, 1) +#define U8G_MODE_GRAY2BIT U8G_MODE(0, 2) +#define U8G_MODE_R3G3B2 U8G_MODE(1, 8) + +#define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&15) +#define U8G_MODE_IS_COLOR(mode) (((mode)&16)==0?0:1) + + +/*===============================================================*/ +/* com options */ + +/* uncomment the following line for Atmega HW SPI double speed, issue 89 */ +/* #define U8G_HW_SPI_2X 1 */ + +/* com messages */ + +#define U8G_COM_MSG_STOP 0 +#define U8G_COM_MSG_INIT 1 + +#define U8G_COM_MSG_ADDRESS 2 + +/* CHIP_SELECT argument: number of the chip which needs to be activated, so this is more like high active */ +#define U8G_COM_MSG_CHIP_SELECT 3 + +#define U8G_COM_MSG_RESET 4 + +#define U8G_COM_MSG_WRITE_BYTE 5 +#define U8G_COM_MSG_WRITE_SEQ 6 +#define U8G_COM_MSG_WRITE_SEQ_P 7 + + +/* com driver */ +uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_null.c */ +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_std_sw_spi.c */ +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_sw_spi.c */ +uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_hw_spi.c */ +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_spi.c */ +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_hw_spi.c */ +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_parallel.c */ +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_fast_parallel.c */ +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_port_d_wr.c */ +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_no_en_parallel.c */ +uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_ssd_i2c.c */ +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_t6963.c */ + + +uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_hw_spi.c */ +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_sw_spi.c */ +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_st7920_spi.c */ +uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_parallel.c */ + + +/* + Translation of system specific com drives to generic com names + At the moment, the following generic com drives are available + U8G_COM_HW_SPI + U8G_COM_SW_SPI + U8G_COM_PARALLEL + U8G_COM_T6963 + U8G_COM_FAST_PARALLEL + U8G_COM_SSD_I2C + +defined(__18CXX) || defined(__PIC32MX) + +*/ +/* ==== HW SPI, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn +#elif defined(__18CXX) || defined(__PIC32MX) +#define U8G_COM_HW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#endif +#endif +/* ==== HW SPI, not Arduino ====*/ +#ifndef U8G_COM_HW_SPI +#if defined(__AVR__) +#define U8G_COM_HW_SPI u8g_com_atmega_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_atmega_st7920_hw_spi_fn +#endif +#endif +#ifndef U8G_COM_HW_SPI +#define U8G_COM_HW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#endif + +/* ==== SW SPI, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#elif defined(__18CXX) || defined(__PIC32MX) +#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#elif defined(__arm__) /* Arduino Due */ +#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#endif +#endif + +#ifndef U8G_COM_SW_SPI +/* ==== SW SPI, not Arduino ====*/ +#if defined(__AVR__) +#define U8G_COM_SW_SPI u8g_com_atmega_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_atmega_st7920_sw_spi_fn +#endif +#endif +#ifndef U8G_COM_SW_SPI +#define U8G_COM_SW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_null_fn +#endif + +/* ==== Parallel iinterface, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_arduino_fast_parallel_fn +#define U8G_COM_T6963 u8g_com_arduino_t6963_fn +#else /* Arduino Due, Chipkit PIC32 */ +#define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif +#endif +#ifndef U8G_COM_PARALLEL +#if defined(__AVR__) +#define U8G_COM_PARALLEL u8g_com_atmega_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_atmega_parallel_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif +#endif +#ifndef U8G_COM_PARALLEL +#define U8G_COM_PARALLEL u8g_com_null_fn +#define U8G_COM_FAST_PARALLEL u8g_com_null_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif + +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn +#endif +#endif + +#ifndef U8G_COM_SSD_I2C +#if defined(__AVR__) +/* AVR variant can use the arduino version at the moment */ +#define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn +#endif +#endif +#ifndef U8G_COM_SSD_I2C +#define U8G_COM_SSD_I2C u8g_com_null_fn +#endif + + + +/*===============================================================*/ +/* com api */ +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev); +void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev); +void u8g_EnableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */ +void u8g_DisableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */ +void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs); +void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev); +void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev); +void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address); +uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val); +uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq); +uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq); + + + +#define U8G_ESC_DLY(x) 255, ((x) & 0x7f) +#define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f)) +#define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f)) +#define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f)) +#define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01)) +#define U8G_ESC_END 255, 254 +#define U8G_ESC_255 255, 255 +//uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, u8g_pgm_uint8_t *esc_seq); +uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq); + + +/* u8g_com_api_16gr.c */ +uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b); +uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr); +uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b); +uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr); + + +/*===============================================================*/ +/* u8g_arduino_common.c */ +void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value); +void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g); + +/*===============================================================*/ +/* u8g_com_io.c */ + +/* create internal number from port and pin */ +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos); +#define PN(port,bitpos) u8g_Pin(port,bitpos) + +/* low level procedures */ +void u8g_SetPinOutput(uint8_t internal_pin_number); +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level); +void u8g_SetPinInput(uint8_t internal_pin_number); +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number); + +/* u8g level procedures, expect U8G_PI_xxx macro */ +void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi); +void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level); + + +/*===============================================================*/ +/* page */ +struct _u8g_page_t +{ + u8g_uint_t page_height; + u8g_uint_t total_height; + u8g_uint_t page_y0; + u8g_uint_t page_y1; + uint8_t page; +}; +typedef struct _u8g_page_t u8g_page_t; + +void u8g_page_First(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */ +void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) U8G_NOINLINE; /* u8g_page.c */ +uint8_t u8g_page_Next(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */ + +/*===============================================================*/ +/* page buffer (pb) */ + +struct _u8g_pb_t +{ + u8g_page_t p; + u8g_uint_t width; /* pixel width */ + void *buf; +}; +typedef struct _u8g_pb_t u8g_pb_t; + + +/* u8g_pb.c */ +void u8g_pb_Clear(u8g_pb_t *b); +uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx); +void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box); +uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel); +uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev); + +/* + note on __attribute__ ((nocommon)) + AVR scripts often use --gc-sections on the linker to remove unused section. + This works fine for initialed data and text sections. In principle .bss is also + handled, but the name##_pb definition is not removed. Reason is, that + array definitions are placed in the COMMON section, by default + The attribute "nocommon" removes this automatic assignment to the + COMMON section and directly puts it into .bss. As a result, if more + than one buffer is defined in one file, then it will be removed with --gc-sections + + .. not sure if Arduino IDE uses -fno-common... if yes, then the attribute is + redundant. +*/ +#define U8G_PB_DEV(name, width, height, page_height, dev_fn, com_fn) \ +uint8_t name##_buf[width] U8G_NOCOMMON ; \ +u8g_pb_t name##_pb = { {page_height, height, 0, 0, 0}, width, name##_buf}; \ +u8g_dev_t name = { dev_fn, &name##_pb, com_fn } + + +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8v1_Clear(u8g_pb_t *b) U8G_NOINLINE; + +uint8_t u8g_pb8v1_IsYIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb8v1_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb8v1_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev); + +uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16v1.c */ +uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb14v1.c */ +uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb8v2.c */ +uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16v2.c (double memory of pb8v2) */ +uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +/* u8g_pb8h1.c */ +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16h1.c */ +uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb32h1.c */ +uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +/* u8g_pb8h2.c 8 pixel rows, byte has horzontal orientation */ +uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16h2.c */ +uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + + +/* u8g_pb8h1f.c */ +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb8h8.c */ +uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + + +/*===============================================================*/ +/* u8g_ll_api.c */ + +/* cursor draw callback */ +typedef void (*u8g_draw_cursor_fn)(u8g_t *u8g); + +/* vertical reference point calculation callback */ +typedef u8g_uint_t (*u8g_font_calc_vref_fnptr)(u8g_t *u8g); + +/* state backup and restore procedure */ +typedef void (*u8g_state_cb)(uint8_t msg); + + +/* PI = Pin Index */ + +/* reset pin, usually optional */ +#define U8G_PI_RESET 0 + +/* address / data or instruction */ +#define U8G_PI_A0 1 +#define U8G_PI_DI 1 + +/* chip select line */ +#define U8G_PI_CS 2 +#define U8G_PI_CS1 2 +#define U8G_PI_CS2 3 +/* Feb 2013: A0 state moved from 7 to 3 for t6963 controller*/ +#define U8G_PI_A0_STATE 3 + +/* enable / clock signal */ +#define U8G_PI_EN 4 +#define U8G_PI_CS_STATE 4 +#define U8G_PI_SCK 4 +#define U8G_PI_SCL 4 +#define U8G_PI_RD 4 + + +/* data pins, shared with SPI and I2C pins */ +#define U8G_PI_D0 5 +#define U8G_PI_MOSI 5 +#define U8G_PI_SDA 5 +#define U8G_PI_D1 6 +#define U8G_PI_MISO 6 +#define U8G_PI_D2 7 +#define U8G_PI_D3 8 +#define U8G_PI_SET_A0 8 +#define U8G_PI_D4 9 +#define U8G_PI_D5 10 +#define U8G_PI_I2C_OPTION 11 +#define U8G_PI_D6 11 +#define U8G_PI_D7 12 + +/* read/write pin, must be the last pin in the list, this means U8G_PIN_LIST_LEN = U8G_PI_RW + 1*/ +#define U8G_PI_WR 13 +#define U8G_PI_RW 13 + +#define U8G_PIN_LIST_LEN 14 + + +#define U8G_PIN_NONE 255 + +#define U8G_FONT_HEIGHT_MODE_TEXT 0 +#define U8G_FONT_HEIGHT_MODE_XTEXT 1 +#define U8G_FONT_HEIGHT_MODE_ALL 2 + +struct _u8g_t +{ + u8g_uint_t width; + u8g_uint_t height; + + + u8g_dev_t *dev; /* first device in the device chain */ + const u8g_pgm_uint8_t *font; /* regular font for all text procedures */ + const u8g_pgm_uint8_t *cursor_font; /* special font for cursor procedures */ + uint8_t cursor_fg_color, cursor_bg_color; + uint8_t cursor_encoding; + uint8_t mode; /* display mode, one of U8G_MODE_xxx */ + u8g_uint_t cursor_x; + u8g_uint_t cursor_y; + u8g_draw_cursor_fn cursor_fn; + + int8_t glyph_dx; + int8_t glyph_x; + int8_t glyph_y; + uint8_t glyph_width; + uint8_t glyph_height; + + u8g_font_calc_vref_fnptr font_calc_vref; + uint8_t font_height_mode; + int8_t font_ref_ascent; + int8_t font_ref_descent; + uint8_t font_line_spacing_factor; /* line_spacing = factor * (ascent - descent) / 64 */ + uint8_t line_spacing; + + u8g_dev_arg_pixel_t arg_pixel; + /* uint8_t color_index; */ + + uint8_t pin_list[U8G_PIN_LIST_LEN]; + + u8g_state_cb state_cb; + + u8g_box_t current_page; /* current box of the visible page */ + +}; + +#define u8g_GetFontAscent(u8g) ((u8g)->font_ref_ascent) +#define u8g_GetFontDescent(u8g) ((u8g)->font_ref_descent) +#define u8g_GetFontLineSpacing(u8g) ((u8g)->line_spacing) + +uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev); +void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev); +uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev); +uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast); +void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y); +void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); +uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); /* obsolete */ +u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev); +u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev); + +void u8g_UpdateDimension(u8g_t *u8g); +uint8_t u8g_Begin(u8g_t *u8g); /* reset device, put it into default state and call u8g_UpdateDimension() */ +uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev); /* only usefull if the device only as hardcoded ports */ +uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset); +uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset); +uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options); /* use U8G_I2C_OPT_NONE as options */ +uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset); +uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset); +uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset); +void u8g_FirstPage(u8g_t *u8g); +uint8_t u8g_NextPage(u8g_t *u8g); +uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast); +void u8g_SleepOn(u8g_t *u8g); +void u8g_SleepOff(u8g_t *u8g); +void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y); +void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); + +uint8_t u8g_Stop(u8g_t *u8g); +void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx); +uint8_t u8g_GetColorIndex(u8g_t *u8g); + +uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g); +void u8g_SetDefaultForegroundColor(u8g_t *u8g); + +uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g); +void u8g_SetDefaultBackgroundColor(u8g_t *u8g); + +uint8_t u8g_GetDefaultMidColor(u8g_t *u8g); +void u8g_SetDefaultMidColor(u8g_t *u8g); + +#define u8g_GetWidth(u8g) ((u8g)->width) +#define u8g_GetHeight(u8g) ((u8g)->height) +#define u8g_GetMode(u8g) ((u8g)->mode) +/* + U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(u8g)) + U8G_MODE_IS_COLOR(u8g_GetMode(u8g)) +*/ + +/* u8g_state.c */ +#define U8G_STATE_ENV_IDX 0 +#define U8G_STATE_U8G_IDX 1 +#define U8G_STATE_RESTORE 0 +#define U8G_STATE_BACKUP 1 +#define U8G_STATE_MSG_COMPOSE(cmd,idx) (((cmd)<<1) | (idx)) + +#define U8G_STATE_MSG_RESTORE_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_ENV_IDX) +#define U8G_STATE_MSG_BACKUP_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_ENV_IDX) +#define U8G_STATE_MSG_RESTORE_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_U8G_IDX) +#define U8G_STATE_MSG_BACKUP_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_U8G_IDX) + +#define U8G_STATE_MSG_GET_IDX(msg) ((msg)&1) +#define U8G_STATE_MSG_IS_BACKUP(msg) ((msg)&2) + + + +void u8g_state_dummy_cb(uint8_t msg); +void u8g_backup_avr_spi(uint8_t msg); /* backup SPI state on atmel avr controller */ + +void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb); + +/* u8g_clip.c */ + +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); + + +/* u8g_rot.c */ + +void u8g_UndoRotation(u8g_t *u8g); +void u8g_SetRot90(u8g_t *u8g); +void u8g_SetRot180(u8g_t *u8g); +void u8g_SetRot270(u8g_t *u8g); + +/* u8g_scale.c */ + +void u8g_UndoScale(u8g_t *u8g); +void u8g_SetScale2x2(u8g_t *u8g); + + +/* u8g_font.c */ + +size_t u8g_font_GetSize(const void *font); +uint8_t u8g_font_GetFontStartEncoding(const void *font) U8G_NOINLINE; +uint8_t u8g_font_GetFontEndEncoding(const void *font) U8G_NOINLINE; + +void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font); + +uint8_t u8g_GetFontBBXWidth(u8g_t *u8g); +uint8_t u8g_GetFontBBXHeight(u8g_t *u8g); +int8_t u8g_GetFontBBXOffX(u8g_t *u8g); +int8_t u8g_GetFontBBXOffY(u8g_t *u8g); +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g); + +uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding); +int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding); + +int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); /* used by u8g_cursor.c */ + +int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding); +int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding); + +u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); + +u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s); + + +u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); + + +void u8g_SetFontRefHeightText(u8g_t *u8g); +void u8g_SetFontRefHeightExtendedText(u8g_t *u8g); +void u8g_SetFontRefHeightAll(u8g_t *u8g); +void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor); + +u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g); + +void u8g_SetFontPosBaseline(u8g_t *u8g); +void u8g_SetFontPosBottom(u8g_t *u8g); +void u8g_SetFontPosCenter(u8g_t *u8g); +void u8g_SetFontPosTop(u8g_t *u8g); + + +u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s); +u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s); +int8_t u8g_GetStrX(u8g_t *u8g, const char *s); +int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s); +u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s); + +u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s); + +void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); +void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); + +/* u8g_rect.c */ + +void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; + +void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w); +void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w); +void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); +void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); + +void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r); +void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r); + +/* u8g_bitmap.c */ + +void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap); +void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap); +void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap); +void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap); + +void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap); +void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap); + + +/* u8g_line.c */ +void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2); + + +/* u8g_circle.c */ + +/* the following, commented code has been rewritten or is not yet finished +#define U8G_CIRC_UPPER_RIGHT 0x01 +#define U8G_CIRC_UPPER_LEFT 0x02 +#define U8G_CIRC_LOWER_LEFT 0x04 +#define U8G_CIRC_LOWER_RIGHT 0x08 +#define U8G_CIRC_ALL (U8G_CIRC_UPPER_RIGHT|U8G_CIRC_UPPER_LEFT|U8G_CIRC_LOWER_RIGHT|U8G_CIRC_LOWER_LEFT) +void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1); +*/ + +#define U8G_DRAW_UPPER_RIGHT 0x01 +#define U8G_DRAW_UPPER_LEFT 0x02 +#define U8G_DRAW_LOWER_LEFT 0x04 +#define U8G_DRAW_LOWER_RIGHT 0x08 +#define U8G_DRAW_ALL (U8G_DRAW_UPPER_RIGHT|U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_RIGHT|U8G_DRAW_LOWER_LEFT) + +void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE; +void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE; + +void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); + +/* u8g_clip.c */ +uint8_t u8g_is_box_bbx_intersection(u8g_box_t *box, u8g_dev_arg_bbx_t *bbx); + + +/* u8g_cursor.c */ +void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font); +void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding); +void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y); +void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg); +void u8g_EnableCursor(u8g_t *u8g); +void u8g_DisableCursor(u8g_t *u8g); +void u8g_DrawCursor(u8g_t *u8g); + + + +/*===============================================================*/ +/* u8g_virtual_screen.c */ +void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height); +uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g); + +/*===============================================================*/ +void st_Draw(uint8_t fps); +void st_Step(uint8_t player_pos, uint8_t is_auto_fire, uint8_t is_fire); + +/*===============================================================*/ +/* u8g_com_i2c.c */ + +/* options for u8g_i2c_init() */ +#define U8G_I2C_OPT_NONE 0 + +/* retrun values from u8g_twi_get_error() */ +#define U8G_I2C_ERR_NONE 0x00 +/* the following values are bit masks */ +#define U8G_I2C_ERR_TIMEOUT 0x01 +#define U8G_I2C_ERR_BUS 0x02 + +void u8g_i2c_clear_error(void) U8G_NOINLINE; +uint8_t u8g_i2c_get_error(void) U8G_NOINLINE; +uint8_t u8g_i2c_get_err_pos(void) U8G_NOINLINE; +void u8g_i2c_init(uint8_t options) U8G_NOINLINE; /* use U8G_I2C_OPT_NONE as options */ +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) U8G_NOINLINE; +uint8_t u8g_i2c_start(uint8_t sla) U8G_NOINLINE; +uint8_t u8g_i2c_send_byte(uint8_t data) U8G_NOINLINE; +void u8g_i2c_stop(void) U8G_NOINLINE; + + +/*===============================================================*/ +/* u8g_u8toa.c */ +/* v = value, d = number of digits */ +const char *u8g_u8toa(uint8_t v, uint8_t d); + +/* u8g_u8toa.c */ +/* v = value, d = number of digits */ +const char *u8g_u16toa(uint16_t v, uint8_t d); + +/*===============================================================*/ +/* u8g_delay.c */ + +/* delay by the specified number of milliseconds */ +void u8g_Delay(uint16_t val); + +/* delay by one microsecond */ +void u8g_MicroDelay(void); + +/* delay by 10 microseconds */ +void u8g_10MicroDelay(void); + +/*===============================================================*/ +/* chessengine.c */ +#define CHESS_KEY_NONE 0 +#define CHESS_KEY_NEXT 1 +#define CHESS_KEY_PREV 2 +#define CHESS_KEY_SELECT 3 +#define CHESS_KEY_BACK 4 + +void chess_Init(u8g_t *u8g, uint8_t empty_body_color); +void chess_Draw(void); +void chess_Step(uint8_t keycode); + +/*===============================================================*/ +/* font definitions */ + +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_5[] U8G_SECTION(".progmem.u8g_font_m2icon_5"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_SECTION(".progmem.u8g_font_m2icon_7"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_SECTION(".progmem.u8g_font_m2icon_9"); + +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_SECTION(".progmem.u8g_font_u8glib_4"); +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_SECTION(".progmem.u8g_font_u8glib_4r"); + + +extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_SECTION(".progmem.u8g_font_6x12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_SECTION(".progmem.u8g_font_6x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_SECTION(".progmem.u8g_font_7x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_SECTION(".progmem.u8g_font_8x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_SECTION(".progmem.u8g_font_9x15_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_SECTION(".progmem.u8g_font_9x18_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_SECTION(".progmem.u8g_font_cu12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_SECTION(".progmem.u8g_font_unifont_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_SECTION(".progmem.u8g_font_10x20_75r"); + +extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_SECTION(".progmem.u8g_font_10x20_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_SECTION(".progmem.u8g_font_10x20_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_SECTION(".progmem.u8g_font_10x20"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_SECTION(".progmem.u8g_font_10x20r"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_SECTION(".progmem.u8g_font_4x6"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_SECTION(".progmem.u8g_font_4x6r"); +//extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_SECTION(".progmem.u8g_font_4x6n"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_SECTION(".progmem.u8g_font_5x7"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_SECTION(".progmem.u8g_font_5x7r"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_SECTION(".progmem.u8g_font_5x8"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_SECTION(".progmem.u8g_font_5x8r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_SECTION(".progmem.u8g_font_6x10"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_SECTION(".progmem.u8g_font_6x10r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_SECTION(".progmem.u8g_font_6x12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_SECTION(".progmem.u8g_font_6x12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_SECTION(".progmem.u8g_font_6x12"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_SECTION(".progmem.u8g_font_6x12r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_SECTION(".progmem.u8g_font_6x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_SECTION(".progmem.u8g_font_6x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_SECTION(".progmem.u8g_font_6x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_SECTION(".progmem.u8g_font_6x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_SECTION(".progmem.u8g_font_6x13"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_SECTION(".progmem.u8g_font_6x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_SECTION(".progmem.u8g_font_6x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_SECTION(".progmem.u8g_font_6x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_SECTION(".progmem.u8g_font_7x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_SECTION(".progmem.u8g_font_7x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_SECTION(".progmem.u8g_font_7x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_SECTION(".progmem.u8g_font_7x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_SECTION(".progmem.u8g_font_7x13"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_SECTION(".progmem.u8g_font_7x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_SECTION(".progmem.u8g_font_7x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_SECTION(".progmem.u8g_font_7x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_SECTION(".progmem.u8g_font_7x14B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_SECTION(".progmem.u8g_font_7x14Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_SECTION(".progmem.u8g_font_7x14"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_SECTION(".progmem.u8g_font_7x14r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_SECTION(".progmem.u8g_font_8x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_SECTION(".progmem.u8g_font_8x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_SECTION(".progmem.u8g_font_8x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_SECTION(".progmem.u8g_font_8x13"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_SECTION(".progmem.u8g_font_8x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_SECTION(".progmem.u8g_font_8x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_SECTION(".progmem.u8g_font_8x13Or"); + +extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_SECTION(".progmem.u8g_font_9x15_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_SECTION(".progmem.u8g_font_9x15_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_SECTION(".progmem.u8g_font_9x15B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_SECTION(".progmem.u8g_font_9x15Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_SECTION(".progmem.u8g_font_9x15"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_SECTION(".progmem.u8g_font_9x15r"); + +extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_SECTION(".progmem.u8g_font_9x18_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_SECTION(".progmem.u8g_font_9x18_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_SECTION(".progmem.u8g_font_9x18B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_SECTION(".progmem.u8g_font_9x18"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_SECTION(".progmem.u8g_font_9x18Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_SECTION(".progmem.u8g_font_9x18r"); + +extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_SECTION(".progmem.u8g_font_cursor"); +extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_SECTION(".progmem.u8g_font_cursorr"); +extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_SECTION(".progmem.u8g_font_micro"); + +extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_SECTION(".progmem.u8g_font_cu12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_SECTION(".progmem.u8g_font_cu12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_SECTION(".progmem.u8g_font_cu12"); + +/* + Free-Universal Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_fub11[] U8G_SECTION(".progmem.u8g_font_fub11"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_SECTION(".progmem.u8g_font_fub11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_SECTION(".progmem.u8g_font_fub11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_SECTION(".progmem.u8g_font_fub14"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_SECTION(".progmem.u8g_font_fub14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_SECTION(".progmem.u8g_font_fub14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_SECTION(".progmem.u8g_font_fub17"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_SECTION(".progmem.u8g_font_fub17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_SECTION(".progmem.u8g_font_fub17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_SECTION(".progmem.u8g_font_fub20"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_SECTION(".progmem.u8g_font_fub20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_SECTION(".progmem.u8g_font_fub20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_SECTION(".progmem.u8g_font_fub25"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_SECTION(".progmem.u8g_font_fub25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_SECTION(".progmem.u8g_font_fub25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_SECTION(".progmem.u8g_font_fub30"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_SECTION(".progmem.u8g_font_fub30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_SECTION(".progmem.u8g_font_fub30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_SECTION(".progmem.u8g_font_fub35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_SECTION(".progmem.u8g_font_fub42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_SECTION(".progmem.u8g_font_fub49n"); + +/* + Free-Universal Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_fur11[] U8G_SECTION(".progmem.u8g_font_fur11"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_SECTION(".progmem.u8g_font_fur11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_SECTION(".progmem.u8g_font_fur11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_SECTION(".progmem.u8g_font_fur14"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_SECTION(".progmem.u8g_font_fur14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_SECTION(".progmem.u8g_font_fur14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_SECTION(".progmem.u8g_font_fur17"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_SECTION(".progmem.u8g_font_fur17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_SECTION(".progmem.u8g_font_fur17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_SECTION(".progmem.u8g_font_fur20"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_SECTION(".progmem.u8g_font_fur20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_SECTION(".progmem.u8g_font_fur20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_SECTION(".progmem.u8g_font_fur25"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_SECTION(".progmem.u8g_font_fur25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_SECTION(".progmem.u8g_font_fur25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_SECTION(".progmem.u8g_font_fur30"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_SECTION(".progmem.u8g_font_fur30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_SECTION(".progmem.u8g_font_fur30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_SECTION(".progmem.u8g_font_fur35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_SECTION(".progmem.u8g_font_fur42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_SECTION(".progmem.u8g_font_fur49n"); + +/* + Gentium Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11[] U8G_SECTION(".progmem.u8g_font_gdb11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_SECTION(".progmem.u8g_font_gdb12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_SECTION(".progmem.u8g_font_gdb14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_SECTION(".progmem.u8g_font_gdb17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_SECTION(".progmem.u8g_font_gdb20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_SECTION(".progmem.u8g_font_gdb25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_SECTION(".progmem.u8g_font_gdb30"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_SECTION(".progmem.u8g_font_gdb11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_SECTION(".progmem.u8g_font_gdb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_SECTION(".progmem.u8g_font_gdb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_SECTION(".progmem.u8g_font_gdb17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_SECTION(".progmem.u8g_font_gdb20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_SECTION(".progmem.u8g_font_gdb25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_SECTION(".progmem.u8g_font_gdb30r"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_SECTION(".progmem.u8g_font_gdb11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_SECTION(".progmem.u8g_font_gdb12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_SECTION(".progmem.u8g_font_gdb14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_SECTION(".progmem.u8g_font_gdb17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_SECTION(".progmem.u8g_font_gdb20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_SECTION(".progmem.u8g_font_gdb25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_SECTION(".progmem.u8g_font_gdb30n"); + +/* + Gentium Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9[] U8G_SECTION(".progmem.u8g_font_gdr9"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_SECTION(".progmem.u8g_font_gdr10"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_SECTION(".progmem.u8g_font_gdr11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_SECTION(".progmem.u8g_font_gdr12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_SECTION(".progmem.u8g_font_gdr14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_SECTION(".progmem.u8g_font_gdr17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_SECTION(".progmem.u8g_font_gdr20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_SECTION(".progmem.u8g_font_gdr25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_SECTION(".progmem.u8g_font_gdr30"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_SECTION(".progmem.u8g_font_gdr9r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_SECTION(".progmem.u8g_font_gdr10r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_SECTION(".progmem.u8g_font_gdr11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_SECTION(".progmem.u8g_font_gdr12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_SECTION(".progmem.u8g_font_gdr14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_SECTION(".progmem.u8g_font_gdr17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_SECTION(".progmem.u8g_font_gdr20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_SECTION(".progmem.u8g_font_gdr25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_SECTION(".progmem.u8g_font_gdr30r"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_SECTION(".progmem.u8g_font_gdr9n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_SECTION(".progmem.u8g_font_gdr10n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_SECTION(".progmem.u8g_font_gdr11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_SECTION(".progmem.u8g_font_gdr12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_SECTION(".progmem.u8g_font_gdr14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_SECTION(".progmem.u8g_font_gdr17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_SECTION(".progmem.u8g_font_gdr20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_SECTION(".progmem.u8g_font_gdr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_SECTION(".progmem.u8g_font_gdr30n"); + +/* + Old-Standard Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_osb18[] U8G_SECTION(".progmem.u8g_font_osb18"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_SECTION(".progmem.u8g_font_osb21"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_SECTION(".progmem.u8g_font_osb26"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_SECTION(".progmem.u8g_font_osb29"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_SECTION(".progmem.u8g_font_osb35"); + +extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_SECTION(".progmem.u8g_font_osb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_SECTION(".progmem.u8g_font_osb21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_SECTION(".progmem.u8g_font_osb26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_SECTION(".progmem.u8g_font_osb29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_SECTION(".progmem.u8g_font_osb35r"); + +extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_SECTION(".progmem.u8g_font_osb18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_SECTION(".progmem.u8g_font_osb21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_SECTION(".progmem.u8g_font_osb26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_SECTION(".progmem.u8g_font_osb29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_SECTION(".progmem.u8g_font_osb35n"); + +/* + Old-Standard Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_osr18[] U8G_SECTION(".progmem.u8g_font_osr18"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_SECTION(".progmem.u8g_font_osr21"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_SECTION(".progmem.u8g_font_osr26"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_SECTION(".progmem.u8g_font_osr29"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_SECTION(".progmem.u8g_font_osr35"); + +extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_SECTION(".progmem.u8g_font_osr18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_SECTION(".progmem.u8g_font_osr21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_SECTION(".progmem.u8g_font_osr26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_SECTION(".progmem.u8g_font_osr29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_SECTION(".progmem.u8g_font_osr35r"); + +extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_SECTION(".progmem.u8g_font_osr18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_SECTION(".progmem.u8g_font_osr21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_SECTION(".progmem.u8g_font_osr26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_SECTION(".progmem.u8g_font_osr29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_SECTION(".progmem.u8g_font_osr35n"); + +//extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_SECTION(".progmem.u8g_font_osr41"); + +/* GNU unifont */ + +extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_SECTION(".progmem.u8g_font_unifont_18_19"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_SECTION(".progmem.u8g_font_unifont_72_73"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_SECTION(".progmem.u8g_font_unifont_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_SECTION(".progmem.u8g_font_unifont_76"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_SECTION(".progmem.u8g_font_unifont_77"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_SECTION(".progmem.u8g_font_unifont_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_SECTION(".progmem.u8g_font_unifont_86"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_SECTION(".progmem.u8g_font_unifont"); +extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_SECTION(".progmem.u8g_font_unifontr"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_SECTION(".progmem.u8g_font_unifont_0_8"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_SECTION(".progmem.u8g_font_unifont_2_3"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_SECTION(".progmem.u8g_font_unifont_4_5"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_SECTION(".progmem.u8g_font_unifont_8_9"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_SECTION(".progmem.u8g_font_unifont_12_13"); + + +/* 04b fonts */ + +extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_SECTION(".progmem.u8g_font_04b_03b"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_SECTION(".progmem.u8g_font_04b_03bn"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_SECTION(".progmem.u8g_font_04b_03br"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_SECTION(".progmem.u8g_font_04b_03"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_SECTION(".progmem.u8g_font_04b_03n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_SECTION(".progmem.u8g_font_04b_03r"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_SECTION(".progmem.u8g_font_04b_24"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_SECTION(".progmem.u8g_font_04b_24n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_SECTION(".progmem.u8g_font_04b_24r"); + +/* orgdot fonts */ + +extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_SECTION(".progmem.u8g_font_orgv01"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_SECTION(".progmem.u8g_font_orgv01r"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_SECTION(".progmem.u8g_font_orgv01n"); + +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_SECTION(".progmem.u8g_font_fixed_v0"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_SECTION(".progmem.u8g_font_fixed_v0r"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_SECTION(".progmem.u8g_font_fixed_v0n"); + +extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_SECTION(".progmem.u8g_font_tpssb"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_SECTION(".progmem.u8g_font_tpssbr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_SECTION(".progmem.u8g_font_tpssbn"); + +extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_SECTION(".progmem.u8g_font_tpss"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_SECTION(".progmem.u8g_font_tpssr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_SECTION(".progmem.u8g_font_tpssn"); + +/* contributed */ + +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_SECTION(".progmem.u8g_font_freedoomr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_SECTION(".progmem.u8g_font_freedoomr10r"); + +/* adobe X11 */ +extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_SECTION(".progmem.u8g_font_courB08"); +extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_SECTION(".progmem.u8g_font_courB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_SECTION(".progmem.u8g_font_courB10"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_SECTION(".progmem.u8g_font_courB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_SECTION(".progmem.u8g_font_courB12"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_SECTION(".progmem.u8g_font_courB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_SECTION(".progmem.u8g_font_courB14"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_SECTION(".progmem.u8g_font_courB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_SECTION(".progmem.u8g_font_courB18"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_SECTION(".progmem.u8g_font_courB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_SECTION(".progmem.u8g_font_courB24"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_SECTION(".progmem.u8g_font_courB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_SECTION(".progmem.u8g_font_courB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_SECTION(".progmem.u8g_font_courR08"); +extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_SECTION(".progmem.u8g_font_courR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_SECTION(".progmem.u8g_font_courR10"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_SECTION(".progmem.u8g_font_courR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_SECTION(".progmem.u8g_font_courR12"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_SECTION(".progmem.u8g_font_courR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_SECTION(".progmem.u8g_font_courR14"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_SECTION(".progmem.u8g_font_courR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_SECTION(".progmem.u8g_font_courR18"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_SECTION(".progmem.u8g_font_courR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_SECTION(".progmem.u8g_font_courR24"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_SECTION(".progmem.u8g_font_courR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_SECTION(".progmem.u8g_font_courR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_SECTION(".progmem.u8g_font_helvB08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_SECTION(".progmem.u8g_font_helvB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_SECTION(".progmem.u8g_font_helvB10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_SECTION(".progmem.u8g_font_helvB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_SECTION(".progmem.u8g_font_helvB12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_SECTION(".progmem.u8g_font_helvB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_SECTION(".progmem.u8g_font_helvB14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_SECTION(".progmem.u8g_font_helvB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_SECTION(".progmem.u8g_font_helvB18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_SECTION(".progmem.u8g_font_helvB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_SECTION(".progmem.u8g_font_helvB24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_SECTION(".progmem.u8g_font_helvB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_SECTION(".progmem.u8g_font_helvB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_SECTION(".progmem.u8g_font_helvR08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_SECTION(".progmem.u8g_font_helvR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_SECTION(".progmem.u8g_font_helvR10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_SECTION(".progmem.u8g_font_helvR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_SECTION(".progmem.u8g_font_helvR12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_SECTION(".progmem.u8g_font_helvR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_SECTION(".progmem.u8g_font_helvR14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_SECTION(".progmem.u8g_font_helvR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_SECTION(".progmem.u8g_font_helvR18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_SECTION(".progmem.u8g_font_helvR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_SECTION(".progmem.u8g_font_helvR24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_SECTION(".progmem.u8g_font_helvR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_SECTION(".progmem.u8g_font_helvR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_SECTION(".progmem.u8g_font_ncenB08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_SECTION(".progmem.u8g_font_ncenB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_SECTION(".progmem.u8g_font_ncenB10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_SECTION(".progmem.u8g_font_ncenB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_SECTION(".progmem.u8g_font_ncenB12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_SECTION(".progmem.u8g_font_ncenB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_SECTION(".progmem.u8g_font_ncenB14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_SECTION(".progmem.u8g_font_ncenB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_SECTION(".progmem.u8g_font_ncenB18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_SECTION(".progmem.u8g_font_ncenB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_SECTION(".progmem.u8g_font_ncenB24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_SECTION(".progmem.u8g_font_ncenB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_SECTION(".progmem.u8g_font_ncenB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_SECTION(".progmem.u8g_font_ncenR08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_SECTION(".progmem.u8g_font_ncenR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_SECTION(".progmem.u8g_font_ncenR10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_SECTION(".progmem.u8g_font_ncenR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_SECTION(".progmem.u8g_font_ncenR12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_SECTION(".progmem.u8g_font_ncenR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_SECTION(".progmem.u8g_font_ncenR14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_SECTION(".progmem.u8g_font_ncenR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_SECTION(".progmem.u8g_font_ncenR18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_SECTION(".progmem.u8g_font_ncenR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_SECTION(".progmem.u8g_font_ncenR24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_SECTION(".progmem.u8g_font_ncenR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_SECTION(".progmem.u8g_font_ncenR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_SECTION(".progmem.u8g_font_symb08"); +extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_SECTION(".progmem.u8g_font_symb08r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_SECTION(".progmem.u8g_font_symb10"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_SECTION(".progmem.u8g_font_symb10r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_SECTION(".progmem.u8g_font_symb12"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_SECTION(".progmem.u8g_font_symb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_SECTION(".progmem.u8g_font_symb14"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_SECTION(".progmem.u8g_font_symb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_SECTION(".progmem.u8g_font_symb18"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_SECTION(".progmem.u8g_font_symb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_SECTION(".progmem.u8g_font_symb24"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_SECTION(".progmem.u8g_font_symb24r"); + +extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_SECTION(".progmem.u8g_font_timB08"); +extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_SECTION(".progmem.u8g_font_timB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_SECTION(".progmem.u8g_font_timB10"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_SECTION(".progmem.u8g_font_timB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_SECTION(".progmem.u8g_font_timB12"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_SECTION(".progmem.u8g_font_timB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_SECTION(".progmem.u8g_font_timB14"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_SECTION(".progmem.u8g_font_timB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_SECTION(".progmem.u8g_font_timB18"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_SECTION(".progmem.u8g_font_timB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_SECTION(".progmem.u8g_font_timB24"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_SECTION(".progmem.u8g_font_timB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_SECTION(".progmem.u8g_font_timB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_SECTION(".progmem.u8g_font_timR08"); +extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_SECTION(".progmem.u8g_font_timR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_SECTION(".progmem.u8g_font_timR10"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_SECTION(".progmem.u8g_font_timR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_SECTION(".progmem.u8g_font_timR12"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_SECTION(".progmem.u8g_font_timR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_SECTION(".progmem.u8g_font_timR14"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_SECTION(".progmem.u8g_font_timR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_SECTION(".progmem.u8g_font_timR18"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_SECTION(".progmem.u8g_font_timR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_SECTION(".progmem.u8g_font_timR24"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_SECTION(".progmem.u8g_font_timR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_SECTION(".progmem.u8g_font_timR24n"); + +/* fontstruct */ + +extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_SECTION(".progmem.u8g_font_p01type"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_SECTION(".progmem.u8g_font_p01typer"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_SECTION(".progmem.u8g_font_p01typen"); + +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternate"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternater"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternaten"); + +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfont[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfont"); +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfontr[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfontr"); +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfontn[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfontn"); + +extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_SECTION(".progmem.u8g_font_chikita"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_SECTION(".progmem.u8g_font_chikitar"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_SECTION(".progmem.u8g_font_chikitan"); + +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_SECTION(".progmem.u8g_font_pixelle_micro"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_SECTION(".progmem.u8g_font_pixelle_micror"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_SECTION(".progmem.u8g_font_pixelle_micron"); + +extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_SECTION(".progmem.u8g_font_trixel_square"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_SECTION(".progmem.u8g_font_trixel_squarer"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_SECTION(".progmem.u8g_font_trixel_squaren"); + +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_SECTION(".progmem.u8g_font_robot_de_niro"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_SECTION(".progmem.u8g_font_robot_de_niror"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_SECTION(".progmem.u8g_font_robot_de_niron"); + +extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_SECTION(".progmem.u8g_font_baby"); +extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_SECTION(".progmem.u8g_font_babyr"); +extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_SECTION(".progmem.u8g_font_babyn"); + +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_SECTION(".progmem.u8g_font_blipfest_07"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_SECTION(".progmem.u8g_font_blipfest_07r"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_SECTION(".progmem.u8g_font_blipfest_07n"); + +extern const u8g_fntpgm_uint8_t u8g_font_6x10_marlin[] U8G_SECTION(".progmem.u8g_font_6x10_marlin"); +extern const u8g_fntpgm_uint8_t u8g_font_6x9[] U8G_SECTION(".progmem.u8g_font_6x9"); + +#ifdef __cplusplus +} +#endif + +#endif /* _U8G_H */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_bitmap.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_bitmap.c new file mode 100644 index 000000000..dc742d1d7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_bitmap.c @@ -0,0 +1,177 @@ +/* + + u8g_bitmap.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap) +{ + while( cnt > 0 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, *bitmap); + bitmap++; + cnt--; + x+=8; + } +} + +void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, cnt*8, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHBitmap(u8g, x, y, cnt, bitmap); + bitmap += cnt; + y++; + h--; + } +} + + +void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap) +{ + while( cnt > 0 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, u8g_pgm_read(bitmap)); + bitmap++; + cnt--; + x+=8; + } +} + +void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, cnt*8, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHBitmapP(u8g, x, y, cnt, bitmap); + bitmap += cnt; + y++; + h--; + } +} + +/*=========================================================================*/ + +static void u8g_DrawHXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, const uint8_t *bitmap) +{ + uint8_t d; + x+=7; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 2, *bitmap); + bitmap++; + w-= 8; + x+=8; + } + if ( w > 0 ) + { + d = *bitmap; + x -= 7; + do + { + if ( d & 1 ) + u8g_DrawPixel(u8g, x, y); + x++; + w--; + d >>= 1; + } while ( w > 0 ); + } +} + +void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap) +{ + u8g_uint_t b; + b = w; + b += 7; + b >>= 3; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + while( h > 0 ) + { + u8g_DrawHXBM(u8g, x, y, w, bitmap); + bitmap += b; + y++; + h--; + } +} + +static void u8g_DrawHXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, const u8g_pgm_uint8_t *bitmap) +{ + uint8_t d; + x+=7; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 2, u8g_pgm_read(bitmap)); + bitmap++; + w-= 8; + x+=8; + } + if ( w > 0 ) + { + d = u8g_pgm_read(bitmap); + x -= 7; + do + { + if ( d & 1 ) + u8g_DrawPixel(u8g, x, y); + x++; + w--; + d >>= 1; + } while ( w > 0 ); + } +} + +void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) +{ + u8g_uint_t b; + b = w; + b += 7; + b >>= 3; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHXBMP(u8g, x, y, w, bitmap); + bitmap += b; + y++; + h--; + } +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_circle.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_circle.c new file mode 100644 index 000000000..8f4a0525d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_circle.c @@ -0,0 +1,382 @@ +/* + + u8g_circle.c + + Utility to draw empty and filled circles. + + Universal 8bit Graphics Library + + Copyright (c) 2011, bjthom@gmail.com + u8g_DrawCircle & u8g_DrawDisc by olikraus@gmail.com + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Addition to the U8G Library 02/25/12 + + +*/ + +#include "u8g.h" + +#ifdef OLD_CODE + +void circ_upperRight(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 + x, y0 - y); + u8g_DrawPixel(u8g, x0 + y, y0 - x); +} + +void circ_upperLeft(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 - x, y0 - y); + u8g_DrawPixel(u8g, x0 - y, y0 - x); +} + +void circ_lowerRight(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 + x, y0 + y); + u8g_DrawPixel(u8g, x0 + y, y0 + x); +} + +void circ_lowerLeft(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 - x, y0 + y); + u8g_DrawPixel(u8g, x0 - y, y0 + x); +} + +void circ_all(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + circ_upperRight(u8g, x, y, x0, y0); + circ_upperLeft(u8g, x, y, x0, y0); + circ_lowerRight(u8g, x, y, x0, y0); + circ_lowerLeft(u8g, x, y, x0, y0); +} + +void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + if ( u8g_IsBBXIntersection(u8g, x0-rad-1, y0-rad-1, 2*rad+1, 2*rad+1) == 0) + return; + + int f = 1 - rad; + int ddF_x = 1; + int ddF_y = -2*rad; + uint8_t x = 0; + uint8_t y = rad; + + void ( *circ_util )(u8g_t *, u8g_uint_t, u8g_uint_t, u8g_uint_t, u8g_uint_t); + + switch (option) + { + case U8G_CIRC_UPPER_RIGHT: + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + circ_util = circ_upperRight; + break; + case U8G_CIRC_UPPER_LEFT: + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_upperLeft; + break; + case U8G_CIRC_LOWER_RIGHT: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + circ_util = circ_lowerRight; + break; + case U8G_CIRC_LOWER_LEFT: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_lowerLeft; + break; + default: + case U8G_CIRC_ALL: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_all; + break; + } + + while( x < y ) + { + if(f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + circ_util(u8g, x, y, x0, y0); + } +} + + +void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + if ( u8g_IsBBXIntersection(u8g, x0-rad-1, y0-rad-1, 2*rad+1, 2*rad+1) == 0) + return; + + int f = 1 - rad; + int ddF_x = 1; + int ddF_y = -2*rad; + uint8_t x = 0; + uint8_t y = rad; + + // Draw vertical diameter at the horiz. center + // u8g_DrawVLine(u8g, x0, y0 - rad, 2*rad+1); + + if (option == U8G_CIRC_UPPER_LEFT || option == U8G_CIRC_UPPER_RIGHT) { + u8g_DrawVLine(u8g, x0, y0 - rad, rad+1); + } + else if (option == U8G_CIRC_LOWER_LEFT || option == U8G_CIRC_LOWER_RIGHT) { + u8g_DrawVLine(u8g, x0, y0, rad+1); + } + else { + u8g_DrawVLine(u8g, x0, y0 - rad, 2*rad+1); + } + + while( x < y ) + { + if(f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + //Draw vertical lines from one point to another + + switch (option) + { + case U8G_CIRC_UPPER_RIGHT: + u8g_DrawVLine(u8g, x0+x, y0-y, y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, x+1); + break; + case U8G_CIRC_UPPER_LEFT: + u8g_DrawVLine(u8g, x0-x, y0-y, y+1); + u8g_DrawVLine(u8g, x0-y, y0-x, x+1); + break; + case U8G_CIRC_LOWER_RIGHT: + u8g_DrawVLine(u8g, x0+x, y0, y+1); + u8g_DrawVLine(u8g, x0+y, y0, x+1); + break; + case U8G_CIRC_LOWER_LEFT: + u8g_DrawVLine(u8g, x0-x, y0, y+1); + u8g_DrawVLine(u8g, x0-y, y0, x+1); + break; + case U8G_CIRC_ALL: + u8g_DrawVLine(u8g, x0+x, y0-y, 2*y+1); + u8g_DrawVLine(u8g, x0-x, y0-y, 2*y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, 2*x+1); + u8g_DrawVLine(u8g, x0-y, y0-x, 2*x+1); + break; + } + } +} + +#endif + +/*=========================================================================*/ + +static void u8g_draw_circle_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) U8G_NOINLINE; + +static void u8g_draw_circle_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) +{ + /* upper right */ + if ( option & U8G_DRAW_UPPER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 - y); + u8g_DrawPixel(u8g, x0 + y, y0 - x); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 - y); + u8g_DrawPixel(u8g, x0 - y, y0 - x); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 + y); + u8g_DrawPixel(u8g, x0 + y, y0 + x); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 + y); + u8g_DrawPixel(u8g, x0 - y, y0 + x); + } +} + +void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + u8g_int_t f; + u8g_int_t ddF_x; + u8g_int_t ddF_y; + u8g_uint_t x; + u8g_uint_t y; + + f = 1; + f -= rad; + ddF_x = 1; + ddF_y = 0; + ddF_y -= rad; + ddF_y *= 2; + x = 0; + y = rad; + + u8g_draw_circle_section(u8g, x, y, x0, y0, option); + + while ( x < y ) + { + if (f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + u8g_draw_circle_section(u8g, x, y, x0, y0, option); + } +} + +void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t radp, radp2; + + radp = rad; + radp++; + radp2 = radp; + radp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-radp, y0-radp, radp2, radp2) == 0) + return; + } + + /* draw circle */ + u8g_draw_circle(u8g, x0, y0, rad, option); +} + +static void u8g_draw_disc_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) U8G_NOINLINE; + +static void u8g_draw_disc_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) +{ + /* upper right */ + if ( option & U8G_DRAW_UPPER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0-y, y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, x+1); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0-y, y+1); + u8g_DrawVLine(u8g, x0-y, y0-x, x+1); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0, y+1); + u8g_DrawVLine(u8g, x0+y, y0, x+1); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0, y+1); + u8g_DrawVLine(u8g, x0-y, y0, x+1); + } +} + +void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + u8g_int_t f; + u8g_int_t ddF_x; + u8g_int_t ddF_y; + u8g_uint_t x; + u8g_uint_t y; + + f = 1; + f -= rad; + ddF_x = 1; + ddF_y = 0; + ddF_y -= rad; + ddF_y *= 2; + x = 0; + y = rad; + + u8g_draw_disc_section(u8g, x, y, x0, y0, option); + + while ( x < y ) + { + if (f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + u8g_draw_disc_section(u8g, x, y, x0, y0, option); + } +} + +void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t radp, radp2; + + radp = rad; + radp++; + radp2 = radp; + radp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-radp, y0-radp, radp2, radp2) == 0) + return; + } + + /* draw disc */ + u8g_draw_disc(u8g, x0, y0, rad, option); +} + + + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_clip.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_clip.c new file mode 100644 index 000000000..71abef2e7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_clip.c @@ -0,0 +1,156 @@ +/* + + u8g_clip.c + + procedures for clipping + taken over from procs in u8g_pb.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Notes + + This is one of the most critical parts of u8glib. It must be fast, but still reliable. + Based on the intersection program (see tools folder), there is minimized version of + the condition for the intersaction test: + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + It includes the assumption, that a1 <= a2 is always true (correct, because + a1, a2 are the page dimensions. + + The direct implementation of the above result is done in: + uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) + However, this is slower than a decision tree version: + static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) + Also suprising is, that he the macro implementation is slower than the inlined version. + + The decision tree is based on the expansion of the truth table. + +*/ + +#include "u8g.h" + +#ifdef __GNUC__ +#define U8G_ALWAYS_INLINE __attribute__((always_inline)) +#else +#define U8G_ALWAYS_INLINE + #endif + +/* + intersection assumptions: + a1 <= a2 is always true + + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + */ + +#ifdef OLD_CODE_WHICH_IS_TOO_SLOW +static uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c1, c2, c3, tmp; + c1 = v0 <= a1; + c2 = v1 >= a0; + c3 = v0 > v1; + + tmp = c1; + c1 &= c2; + c2 &= c3; + c3 &= tmp; + c1 |= c2; + c1 |= c3; + return c1 & 1; +} +#endif + +#define U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1) ((uint8_t)( (v0) <= (a1) ) ? ( ( (v1) >= (a0) ) ? ( 1 ) : ( (v0) > (v1) ) ) : ( ( (v1) >= (a0) ) ? ( (v0) > (v1) ) : ( 0 ) )) + +static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) U8G_ALWAYS_INLINE; +static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) +{ + /* surprisingly the macro leads to larger code */ + /* return U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1); */ + if ( v0 <= a1 ) + { + if ( v1 >= a0 ) + { + return 1; + } + else + { + if ( v0 > v1 ) + { + return 1; + } + else + { + return 0; + } + } + } + else + { + if ( v1 >= a0 ) + { + if ( v0 > v1 ) + { + return 1; + } + else + { + return 0; + } + } + else + { + return 0; + } + } +} + + +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + register u8g_uint_t tmp; + tmp = y; + tmp += h; + tmp--; + if ( u8g_is_intersection_decision_tree(u8g->current_page.y0, u8g->current_page.y1, y, tmp) == 0 ) + return 0; + + tmp = x; + tmp += w; + tmp--; + return u8g_is_intersection_decision_tree(u8g->current_page.x0, u8g->current_page.x1, x, tmp); +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api.c new file mode 100644 index 000000000..2dd49b126 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api.c @@ -0,0 +1,173 @@ +/* + + u8g_com_api.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev) +{ + return dev->com_fn(u8g, U8G_COM_MSG_INIT, 0, NULL); +} + +void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_STOP, 0, NULL); +} + +/* cs contains the chip number, which should be enabled */ +void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs) +{ + dev->com_fn(u8g, U8G_COM_MSG_CHIP_SELECT, cs, NULL); +} + +void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_RESET, 0, NULL); +} + +void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_RESET, 1, NULL); +} + + +void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address) +{ + dev->com_fn(u8g, U8G_COM_MSG_ADDRESS, address, NULL); +} + +uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, val, NULL); +} + +uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ, cnt, seq); +} + +uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ_P, cnt, (void *)seq); +} + +/* + sequence := { direct_value | escape_sequence } + direct_value := 0..254 + escape_sequence := value_255 | sequence_end | delay | adr | cs | not_used + value_255 := 255 255 + sequence_end = 255 254 + delay := 255 0..127 + adr := 255 0x0e0 .. 0x0ef + cs := 255 0x0d0 .. 0x0df + not_used := 255 101..254 + +#define U8G_ESC_DLY(x) 255, ((x) & 0x7f) +#define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f)) +#define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f)) +#define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01)) +#define U8G_ESC_END 255, 254 +#define U8G_ESC_255 255, 255 +#define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f)) + +*/ +uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq) +{ + uint8_t is_escape = 0; + uint8_t value; + for(;;) + { + value = u8g_pgm_read(esc_seq); + if ( is_escape == 0 ) + { + if ( value != 255 ) + { + if ( u8g_WriteByte(u8g, dev, value) == 0 ) + return 0; + } + else + { + is_escape = 1; + } + } + else + { + if ( value == 255 ) + { + if ( u8g_WriteByte(u8g, dev, value) == 0 ) + return 0; + } + else if ( value == 254 ) + { + break; + } + else if ( value >= 0x0f0 ) + { + /* not yet used, do nothing */ + } + else if ( value >= 0xe0 ) + { + u8g_SetAddress(u8g, dev, value & 0x0f); + } + else if ( value >= 0xd0 ) + { + u8g_SetChipSelect(u8g, dev, value & 0x0f); + } + else if ( value >= 0xc0 ) + { + u8g_SetResetLow(u8g, dev); + value &= 0x0f; + value <<= 4; + value+=2; + u8g_Delay(value); + u8g_SetResetHigh(u8g, dev); + u8g_Delay(value); + } + else if ( value >= 0xbe ) + { + /* not yet implemented */ + /* u8g_SetVCC(u8g, dev, value & 0x01); */ + } + else if ( value <= 127 ) + { + u8g_Delay(value); + } + is_escape = 0; + } + esc_seq++; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api_16gr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api_16gr.c new file mode 100644 index 000000000..7ff03d865 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_api_16gr.c @@ -0,0 +1,94 @@ +/* + + u8g_com_api_16gr.c + + Extension of the com api for devices with 16 graylevels (4 bit per pixel). + This should fit to the 8h and 16h architectures (pb8v1, pb8v2, pb16v1, pb16v2), + mainly intended for SSD OLEDs + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* interpret b as a monochrome bit pattern, write value 15 for high bit and value 0 for a low bit */ +/* topbit (msb) is sent last */ +/* example: b = 0x083 will send 0xff, 0x00, 0x00, 0xf0 */ +uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b) +{ + static uint8_t buf[4]; + static uint8_t map[4] = { 0, 0x00f, 0x0f0, 0x0ff }; + buf [3] = map[b & 3]; + b>>=2; + buf [2] = map[b & 3]; + b>>=2; + buf [1] = map[b & 3]; + b>>=2; + buf [0] = map[b & 3]; + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ, 4, buf); +} + +uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr) +{ + do + { + if ( u8g_WriteByteBWTo16GrDevice(u8g, dev, *ptr++) == 0 ) + return 0; + cnt--; + } while( cnt != 0 ); + return 1; +} + +/* interpret b as a 4L bit pattern, write values 0x000, 0x004, 0x008, 0x00c */ +uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b) +{ + //static uint8_t map[16] = { 0x000, 0x004, 0x008, 0x00c, 0x040, 0x044, 0x048, 0x04c, 0x080, 0x084, 0x088, 0x08c, 0x0c0, 0x0c4, 0x0c8, 0x0cc}; + //static uint8_t map[16] = { 0x000, 0x004, 0x00a, 0x00f, 0x040, 0x044, 0x04a, 0x04f, 0x0a0, 0x0a4, 0x0aa, 0x0af, 0x0f0, 0x0f4, 0x0fa, 0x0ff}; + static uint8_t map[16] = { 0x000, 0x040, 0x0a0, 0x0f0, 0x004, 0x044, 0x0a4, 0x0f4, 0x00a, 0x04a, 0x0aa, 0x0fa, 0x00f, 0x04f, 0x0af, 0x0ff}; + uint8_t bb; + bb = b; + bb &= 15; + b>>=4; + dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, map[bb], NULL); + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, map[b], NULL); +} + +uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr) +{ + do + { + if ( u8g_WriteByte4LTo16GrDevice(u8g, dev, *ptr++) == 0 ) + return 0; + cnt--; + } while( cnt != 0 ); + return 1; +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_common.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_common.c new file mode 100644 index 000000000..ef0b2366e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_common.c @@ -0,0 +1,75 @@ +/* + + u8g_com_arduino_common.c + + shared procedures for the arduino communication procedures + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value) +{ + uint8_t pin; + pin = u8g->pin_list[pin_index]; + if ( pin != U8G_PIN_NONE ) + digitalWrite(pin, value); +} + +/* this procedure does not set the RW pin */ +void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g) +{ + uint8_t i; + /* skip the RW pin, which is the last pin in the list */ + for( i = 0; i < U8G_PIN_LIST_LEN-1; i++ ) + { + if ( u8g->pin_list[i] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[i], OUTPUT); + digitalWrite(u8g->pin_list[i], HIGH); + } + } +} + + +#endif + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c new file mode 100644 index 000000000..91a32e6f0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c @@ -0,0 +1,245 @@ +/* + + u8g_arduino_fast_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + + +#define PIN_D0 8 +#define PIN_D1 9 +#define PIN_D2 10 +#define PIN_D3 11 +#define PIN_D4 4 +#define PIN_D5 5 +#define PIN_D6 6 +#define PIN_D7 7 + +#define PIN_CS1 14 +#define PIN_CS2 15 +#define PIN_RW 16 +#define PIN_DI 17 +#define PIN_EN 18 + +//#define PIN_RESET + + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_data_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_data_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_fast_parallel_init(u8g_t *u8g) +{ + u8g_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + u8g_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + u8g_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + u8g_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + u8g_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + u8g_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + u8g_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +void u8g_com_arduino_fast_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_data_port[pin] &= ~u8g_data_mask[pin]; +} + + +void u8g_com_arduino_fast_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_fast_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_fast_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 7, val&1 ); + val >>= 1; + + /* EN cycle time must be 1 micro second */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + u8g_10MicroDelay(); /* ST7920 commands: 72us */ +} + + +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_fast_parallel_init(u8g); + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_fast_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_fast_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_fast_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c new file mode 100644 index 000000000..7d7f91000 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c @@ -0,0 +1,191 @@ +/* + + u8g_com_arduino_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if defined(__AVR__) + +#include +#include + +#if ARDUINO < 100 +#include + +/* fixed pins */ +#if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) // Sanguino.cc board +#define PIN_SCK 7 +#define PIN_MISO 6 +#define PIN_MOSI 5 +#define PIN_CS 4 +#else // Arduino Board +#define PIN_SCK 13 +#define PIN_MISO 12 +#define PIN_MOSI 11 +#define PIN_CS 10 +#endif // (__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) + +#else + +#include + +/* use Arduino pin definitions */ +#define PIN_SCK SCK +#define PIN_MISO MISO +#define PIN_MOSI MOSI +#define PIN_CS SS + +#endif + + + +//static uint8_t u8g_spi_out(uint8_t data) U8G_NOINLINE; +static uint8_t u8g_spi_out(uint8_t data) +{ + /* unsigned char x = 100; */ + /* send data */ + SPDR = data; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_spi_out(arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +/* #elif defined(__18CXX) || defined(__PIC32MX) */ + +#else /* __AVR__ */ + +#endif /* __AVR__ */ + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c new file mode 100644 index 000000000..49038c36c --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c @@ -0,0 +1,221 @@ +/* + + u8g_arduino_no_en_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + +//#define PIN_RESET + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_data_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_data_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_no_en_parallel_init(u8g_t *u8g) +{ + u8g_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + u8g_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + u8g_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + u8g_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + u8g_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + u8g_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + u8g_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +void u8g_com_arduino_no_en_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_data_port[pin] &= ~u8g_data_mask[pin]; +} + + +void u8g_com_arduino_no_en_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_no_en_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_no_en_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 7, val&1 ); + val >>= 1; + + /* EN cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + if ( u8g->pin_list[U8G_PI_CS_STATE] == 1 ) + { + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_MicroDelay(); + } + else if ( u8g->pin_list[U8G_PI_CS_STATE] == 2 ) + { + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + u8g_MicroDelay(); + } +} + + +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_no_en_parallel_init(u8g); + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + /* + 0: nothing selected + 1: CS1 will be used as enable line + 2: CS2 will be used as enable line + this will be used in the u8g_com_arduino_no_en_parallel_write() procedure + */ + u8g->pin_list[U8G_PI_CS_STATE] = arg_val; + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_no_en_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_no_en_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_no_en_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_parallel.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_parallel.c new file mode 100644 index 000000000..a73bc0dbe --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_parallel.c @@ -0,0 +1,187 @@ +/* + + u8g_arduino_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + + + + + + +void u8g_com_arduino_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_D0, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D1, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D2, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D3, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D4, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D5, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D6, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D7, val&1); + + /* EN cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + //u8g_Delay(1); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + //u8g_Delay(1); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + //u8g_Delay(2); +} + + +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c new file mode 100644 index 000000000..cfaf71f9f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c @@ -0,0 +1,168 @@ +/* + + u8g_arduino_port_d_wr.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Assumes PORTD for 8 bit data transfer. + EN is assumed to be a low active write signal (WR) + + ILI9325D_320x240 from iteadstudio.com + RS=19, WR=18, CS=17, RST=16 + + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) && defined(PORTD) + +#if ARDUINO < 100 +#include +#else +#include +#endif + + + + + + +static void u8g_com_arduino_port_d_8bit_wr(u8g_t *u8g, uint8_t val) +{ + PORTD = val; + + /* WR cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); +} + + +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + + switch(msg) + { + case U8G_COM_MSG_INIT: + +#ifdef UCSR0B + UCSR0B = 0; // disable USART 0 +#endif + DDRD = 0x0ff; + PORTD = 0x0ff; + + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, HIGH); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_port_d_8bit_wr(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_port_d_8bit_wr(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_port_d_8bit_wr(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO && PORTD */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c new file mode 100644 index 000000000..afcb4088a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c @@ -0,0 +1,201 @@ +/* + + u8g_com_arduino_ssd_i2c.c + + com interface for arduino (AND atmega) and the SSDxxxx chip (SOLOMON) variant + I2C protocol + + ToDo: Rename this to u8g_com_avr_ssd_i2c.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Special pin usage: + U8G_PI_I2C_OPTION additional options + U8G_PI_A0_STATE used to store the last value of the command/data register selection + U8G_PI_SET_A0 1: Signal request to update I2C device with new A0_STATE, 0: Do nothing, A0_STATE matches I2C device + U8G_PI_SCL clock line (NOT USED) + U8G_PI_SDA data line (NOT USED) + + U8G_PI_RESET reset line (currently disabled, see below) + + Protocol: + SLA, Cmd/Data Selection, Arguments + The command/data register is selected by a special instruction byte, which is sent after SLA + + The continue bit is always 0 so that a (re)start is equired for the change from cmd to/data mode +*/ + +#include "u8g.h" + +#define I2C_SLA (0x3c*2) +//#define I2C_CMD_MODE 0x080 +#define I2C_CMD_MODE 0x000 +#define I2C_DATA_MODE 0x040 + + +uint8_t u8g_com_arduino_ssd_start_sequence(u8g_t *u8g) +{ + /* are we requested to set the a0 state? */ + if ( u8g->pin_list[U8G_PI_SET_A0] == 0 ) + return 1; + + /* setup bus, might be a repeated start */ + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + if ( u8g_i2c_send_byte(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) + return 0; + } + + + u8g->pin_list[U8G_PI_SET_A0] = 0; + return 1; +} + +uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCL, HIGH); + //u8g_com_arduino_digital_write(u8g, U8G_PI_SDA, HIGH); + //u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: unknown mode */ + + u8g_i2c_init(u8g->pin_list[U8G_PI_I2C_OPTION]); + + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + /* Currently disabled, but it could be enable. Previous restrictions have been removed */ + /* u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); */ + break; + + case U8G_COM_MSG_CHIP_SELECT: + u8g->pin_list[U8G_PI_A0_STATE] = 0; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again, also forces start condition */ + if ( arg_val == 0 ) + { + /* disable chip, send stop condition */ + u8g_i2c_stop(); + } + else + { + /* enable, do nothing: any byte writing will trigger the i2c start */ + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + if ( u8g_i2c_send_byte(arg_val) == 0 ) + return u8g_i2c_stop(), 0; + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(*ptr++) == 0 ) + return u8g_i2c_stop(), 0; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(u8g_pgm_read(ptr)) == 0 ) + return 0; + ptr++; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again */ + +#ifdef OLD_CODE + if ( i2c_state != 0 ) + { + u8g_i2c_stop(); + i2c_state = 0; + } + + if ( u8g_com_arduino_ssd_start_sequence(arg_val) == 0 ) + return 0; + + /* setup bus, might be a repeated start */ + /* + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( arg_val == 0 ) + { + i2c_state = 1; + + if ( u8g_i2c_send_byte(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + i2c_state = 2; + if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) + return 0; + } + */ +#endif + break; + } + return 1; +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c new file mode 100644 index 000000000..d5a041386 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c @@ -0,0 +1,220 @@ +/* + + u8g_com_arduino_st7920_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special HW SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) +#define U8G_ARDUINO_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif + +#endif + + +#if defined(U8G_ARDUINO_ATMEGA_HW_SPI) + +#include +#include + +static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + /* send data */ + SPDR = val; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr) ); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + } + return 1; +} + +#else + +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} +#endif + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c new file mode 100644 index 000000000..a73398868 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c @@ -0,0 +1,295 @@ +/* + + u8g_com_arduino_st7920_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) + +uint8_t u8g_bitData, u8g_bitNotData; +uint8_t u8g_bitClock, u8g_bitNotClock; +volatile uint8_t *u8g_outData; +volatile uint8_t *u8g_outClock; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_outData = portOutputRegister(digitalPinToPort(dataPin)); + u8g_outClock = portOutputRegister(digitalPinToPort(clockPin)); + u8g_bitData = digitalPinToBitMask(dataPin); + u8g_bitClock = digitalPinToBitMask(clockPin); + + u8g_bitNotClock = u8g_bitClock; + u8g_bitNotClock ^= 0x0ff; + + u8g_bitNotData = u8g_bitData; + u8g_bitNotData ^= 0x0ff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) U8G_NOINLINE; +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + uint8_t bitData = u8g_bitData; + uint8_t bitNotData = u8g_bitNotData; + uint8_t bitClock = u8g_bitClock; + uint8_t bitNotClock = u8g_bitNotClock; + volatile uint8_t *outData = u8g_outData; + volatile uint8_t *outClock = u8g_outClock; + do + { + if ( val & 128 ) + *outData |= bitData; + else + *outData &= bitNotData; + + /* + *outClock |= bitClock; + val <<= 1; + cnt--; + *outClock &= bitNotClock; + */ + + val <<= 1; + *outClock &= bitNotClock; + cnt--; + // removed micro delays, because AVRs are too slow and the delay is not required + //u8g_MicroDelay(); + *outClock |= bitClock; + //u8g_MicroDelay(); + } while( cnt != 0 ); +} + +#elif defined(__18CXX) || defined(__PIC32MX) + +uint16_t dog_bitData, dog_bitNotData; +uint16_t dog_bitClock, dog_bitNotClock; +volatile uint32_t *dog_outData; +volatile uint32_t *dog_outClock; +volatile uint32_t dog_pic32_spi_tmp; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + dog_outData = portOutputRegister(digitalPinToPort(dataPin)); + dog_outClock = portOutputRegister(digitalPinToPort(clockPin)); + dog_bitData = digitalPinToBitMask(dataPin); + dog_bitClock = digitalPinToBitMask(clockPin); + + dog_bitNotClock = dog_bitClock; + dog_bitNotClock ^= 0x0ffff; + + dog_bitNotData = dog_bitData; + dog_bitNotData ^= 0x0ffff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + *dog_outData |= dog_bitData; + else + *dog_outData &= dog_bitNotData; + val <<= 1; + //u8g_MicroDelay(); + //*dog_outClock |= dog_bitClock; + *dog_outClock &= dog_bitNotClock; + cnt--; + u8g_MicroDelay(); + //*dog_outClock &= dog_bitNotClock; + *dog_outClock |= dog_bitClock; + u8g_MicroDelay(); + + } while( cnt != 0 ); +} + +#else + +/* default interface, Arduino DUE (__arm__) */ + +uint8_t u8g_data_pin; +uint8_t u8g_clock_pin; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_data_pin = dataPin; + u8g_clock_pin = clockPin; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + digitalWrite(u8g_data_pin, HIGH); + else + digitalWrite(u8g_data_pin, LOW); + val <<= 1; + //u8g_MicroDelay(); + digitalWrite(u8g_clock_pin, LOW); + cnt--; + u8g_MicroDelay(); + digitalWrite(u8g_clock_pin, HIGH); + u8g_MicroDelay(); + } while( cnt != 0 ); +} + +#endif + + + + +static void u8g_com_arduino_st7920_write_byte(uint8_t rs, uint8_t val) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_com_arduino_do_shift_out_msb_first(0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_com_arduino_do_shift_out_msb_first(0x0fa); + } + + u8g_com_arduino_do_shift_out_msb_first(val & 0x0f0); + u8g_com_arduino_do_shift_out_msb_first(val << 4); + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); + +} + + + +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + // u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_st7920_write_byte( u8g->pin_list[U8G_PI_A0_STATE], arg_val); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte(u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte(u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr) ); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c new file mode 100644 index 000000000..1251ef2e5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c @@ -0,0 +1,144 @@ +/* + + u8g_arduino_std_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +void u8g_arduino_sw_spi_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) +{ + uint8_t i = 8; + do + { + if ( val & 128 ) + digitalWrite(dataPin, HIGH); + else + digitalWrite(dataPin, LOW); + val <<= 1; + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + digitalWrite(clockPin, HIGH); + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + digitalWrite(clockPin, LOW); + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + i--; + } while( i != 0 ); +} + +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c new file mode 100644 index 000000000..846baeb90 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c @@ -0,0 +1,239 @@ +/* + + u8g_arduino_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) + +uint8_t u8g_bitData, u8g_bitNotData; +uint8_t u8g_bitClock, u8g_bitNotClock; +volatile uint8_t *u8g_outData; +volatile uint8_t *u8g_outClock; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_outData = portOutputRegister(digitalPinToPort(dataPin)); + u8g_outClock = portOutputRegister(digitalPinToPort(clockPin)); + u8g_bitData = digitalPinToBitMask(dataPin); + u8g_bitClock = digitalPinToBitMask(clockPin); + + u8g_bitNotClock = u8g_bitClock; + u8g_bitNotClock ^= 0x0ff; + + u8g_bitNotData = u8g_bitData; + u8g_bitNotData ^= 0x0ff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) U8G_NOINLINE; +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + uint8_t bitData = u8g_bitData; + uint8_t bitNotData = u8g_bitNotData; + uint8_t bitClock = u8g_bitClock; + uint8_t bitNotClock = u8g_bitNotClock; + volatile uint8_t *outData = u8g_outData; + volatile uint8_t *outClock = u8g_outClock; + do + { + if ( val & 128 ) + *outData |= bitData; + else + *outData &= bitNotData; + + *outClock |= bitClock; + val <<= 1; + cnt--; + *outClock &= bitNotClock; + } while( cnt != 0 ); +} + +#elif defined(__18CXX) || defined(__PIC32MX) + +uint16_t dog_bitData, dog_bitNotData; +uint16_t dog_bitClock, dog_bitNotClock; +volatile uint32_t *dog_outData; +volatile uint32_t *dog_outClock; +volatile uint32_t dog_pic32_spi_tmp; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + dog_outData = portOutputRegister(digitalPinToPort(dataPin)); + dog_outClock = portOutputRegister(digitalPinToPort(clockPin)); + dog_bitData = digitalPinToBitMask(dataPin); + dog_bitClock = digitalPinToBitMask(clockPin); + + dog_bitNotClock = dog_bitClock; + dog_bitNotClock ^= 0x0ffff; + + dog_bitNotData = dog_bitData; + dog_bitNotData ^= 0x0ffff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + *dog_outData |= dog_bitData; + else + *dog_outData &= dog_bitNotData; + val <<= 1; + /* + There must be some delay here. However + fetching the adress dog_outClock is enough delay, so + do not place dog_outClock in a local variable. This will + break the procedure + */ + *dog_outClock |= dog_bitClock; + cnt--; + *dog_outClock &= dog_bitNotClock; + /* + little additional delay after clk pulse, done by 3x32bit reads + from I/O. Optimized for PIC32 with 80 MHz. + */ + dog_pic32_spi_tmp = *dog_outClock; + dog_pic32_spi_tmp = *dog_outClock; + dog_pic32_spi_tmp = *dog_outClock; + } while( cnt != 0 ); +} + +#else +/* empty interface */ + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ +} + +#endif + + +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_do_shift_out_msb_first( arg_val ); + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first(*ptr++); + // u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first( u8g_pgm_read(ptr) ); + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_t6963.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_t6963.c new file mode 100644 index 000000000..d6a817867 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_arduino_t6963.c @@ -0,0 +1,385 @@ +/* + + u8g_com_arduino_t6963.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS 14 + PIN_A0 15 + PIN_RESET 16 + PIN_WR 17 + PIN_RD 18 + + u8g_InitRW8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + u8g_InitRW8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_output_data_port[8]; +static volatile uint32_t *u8g_input_data_port[8]; +static volatile uint32_t *u8g_mode_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_output_data_port[8]; +static volatile uint8_t *u8g_input_data_port[8]; +static volatile uint8_t *u8g_mode_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_t6963_init(u8g_t *u8g) +{ + u8g_output_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_input_data_port[0] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_mode_port[0] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + + u8g_output_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_input_data_port[1] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_mode_port[1] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + + u8g_output_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_input_data_port[2] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_mode_port[2] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + + u8g_output_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_input_data_port[3] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_mode_port[3] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_output_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_input_data_port[4] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_mode_port[4] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + + u8g_output_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_input_data_port[5] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_mode_port[5] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + + u8g_output_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_input_data_port[6] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_mode_port[6] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + + u8g_output_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_input_data_port[7] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_mode_port[7] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +static void u8g_com_arduino_t6963_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_output_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_output_data_port[pin] &= ~u8g_data_mask[pin]; +} + +static void u8g_com_arduino_t6963_set_port_output(void) +{ + uint8_t i; + for( i = 0; i < 8; i++ ) + { +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ + *u8g_mode_port[i] |= u8g_data_mask[i]; +#elif defined(__AVR__) + *u8g_mode_port[i] |= u8g_data_mask[i]; +#else + /* TODO: use generic Arduino API */ + *u8g_mode_port[i] |= u8g_data_mask[i]; +#endif + + } +} + +static void u8g_com_arduino_t6963_set_port_input(void) +{ + uint8_t i; + for( i = 0; i < 8; i++ ) + { +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; +#elif defined(__AVR__) +/* avr */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; + *u8g_output_data_port[i] &= ~u8g_data_mask[i]; // no pullup +#else + /* TODO: use generic Arduino API */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; + *u8g_output_data_port[i] &= ~u8g_data_mask[i]; // no pullup +#endif + } +} + + +static void u8g_com_arduino_t6963_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_t6963_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_t6963_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 7, val&1 ); + val >>= 1; + + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, 0); + u8g_MicroDelay(); /* 80ns, reference: t6963 datasheet */ + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, 1); + u8g_MicroDelay(); /* 10ns, reference: t6963 datasheet */ +} + +static uint8_t u8g_com_arduino_t6963_read(u8g_t *u8g) +{ + uint8_t val = 0; + + u8g_com_arduino_digital_write(u8g, U8G_PI_RD, 0); + u8g_MicroDelay(); /* 150ns, reference: t6963 datasheet */ + + /* only read bits 0, 1 and 3 */ + if ( (*u8g_input_data_port[3] & u8g_data_mask[3]) != 0 ) + val++; + val <<= 1; + val <<= 1; + if ( (*u8g_input_data_port[1] & u8g_data_mask[1]) != 0 ) + val++; + val <<= 1; + if ( (*u8g_input_data_port[0] & u8g_data_mask[0]) != 0 ) + val++; + + u8g_com_arduino_digital_write(u8g, U8G_PI_RD, 1); + u8g_MicroDelay(); /* 10ns, reference: t6963 datasheet */ + + return val; +} + +#define U8G_STATUS_TIMEOUT 50 + +static uint8_t u8g_com_arduino_t6963_until_01_ok(u8g_t *u8g) +{ + long x; + + u8g_com_arduino_t6963_set_port_input(); + x = millis(); + x += U8G_STATUS_TIMEOUT; + + for(;;) + { + if ( (u8g_com_arduino_t6963_read(u8g) & 3) == 3 ) + break; + if ( x < millis() ) + return 0; + } + u8g_com_arduino_t6963_set_port_output(); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_until_3_ok(u8g_t *u8g) +{ + long x; + + u8g_com_arduino_t6963_set_port_input(); + x = millis(); + x += U8G_STATUS_TIMEOUT; + + for(;;) + { + if ( (u8g_com_arduino_t6963_read(u8g) & 8) == 8 ) + break; + if ( x < millis() ) + return 0; + } + u8g_com_arduino_t6963_set_port_output(); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_cmd(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_01_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_data(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_01_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 0); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_auto_data(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_3_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 0); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + + +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g->pin_list[U8G_PI_A0_STATE] = 0; + u8g_com_arduino_t6963_init(u8g); + /* setup the RW (equal to WR) pin as output and force it to high */ + if ( u8g->pin_list[U8G_PI_WR] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_WR], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, HIGH); + } + /* set all pins (except WR pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, active low chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + u8g_com_arduino_t6963_write_data(u8g, arg_val); + } + else + { + u8g_com_arduino_t6963_write_cmd(u8g, arg_val); + } + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b0); /* auto write */ + while( arg_val > 0 ) + { + if ( u8g_com_arduino_t6963_write_auto_data(u8g, *ptr++) == 0 ) + break; + arg_val--; + } + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b2); /* auto reset */ + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b0); /* auto write */ + while( arg_val > 0 ) + { + if ( u8g_com_arduino_t6963_write_auto_data(u8g, u8g_pgm_read(ptr)) == 0 ) + break; + ptr++; + arg_val--; + } + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b2); /* auto reset */ + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 1) or data mode (arg_val = 0) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + //u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c new file mode 100644 index 000000000..30ee808ea --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c @@ -0,0 +1,174 @@ +/* + + u8g_com_atmega_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Assumes, that + MOSI is at PORTB, Pin 3 + and + SCK is at PORTB, Pin 5 + +*/ + +#include "u8g.h" + + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif +#endif + + +#if defined(U8G_ATMEGA_HW_SPI) + +#include +#include + + +static uint8_t u8g_atmega_spi_out(uint8_t data) +{ + /* unsigned char x = 100; */ + /* send data */ + SPDR = data; + /* wait for transmission */ + while (!(SPSR & (1< 0 ) + { + u8g_atmega_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + +uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_parallel.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_parallel.c new file mode 100644 index 000000000..603082da2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_parallel.c @@ -0,0 +1,183 @@ +/* + + u8g_atmega_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_com_atmega_parallel_write(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_com_atmega_parallel_write(u8g_t *u8g, uint8_t val) +{ + + u8g_SetPILevel(u8g, U8G_PI_D0, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D1, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D2, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D3, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D4, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D5, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D6, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D7, val&1); + + /* EN cycle time must be 1 micro second */ + u8g_SetPILevel(u8g, U8G_PI_EN, 1); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_SetPILevel(u8g, U8G_PI_EN, 0); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + u8g_10MicroDelay(); /* ST7920 commands: 72us */ +} + + +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + /* setup the RW pin as output and force it to low */ + u8g_SetPIOutput(u8g, U8G_PI_RW); + u8g_SetPILevel(u8g, U8G_PI_RW, 0); + + u8g_SetPIOutput(u8g, U8G_PI_D0); + u8g_SetPIOutput(u8g, U8G_PI_D1); + u8g_SetPIOutput(u8g, U8G_PI_D2); + u8g_SetPIOutput(u8g, U8G_PI_D3); + u8g_SetPIOutput(u8g, U8G_PI_D4); + u8g_SetPIOutput(u8g, U8G_PI_D5); + u8g_SetPIOutput(u8g, U8G_PI_D6); + u8g_SetPIOutput(u8g, U8G_PI_D7); + u8g_SetPIOutput(u8g, U8G_PI_EN); + u8g_SetPIOutput(u8g, U8G_PI_CS1); + u8g_SetPIOutput(u8g, U8G_PI_CS2); + u8g_SetPIOutput(u8g, U8G_PI_DI); + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 0); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 0); + } + else + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 0); + u8g_SetPILevel(u8g, U8G_PI_CS2, 0); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_SetPILevel(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c new file mode 100644 index 000000000..52858a61e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c @@ -0,0 +1,205 @@ +/* + + u8g_com_atmega_st7920_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller with HW SPI Support + + Assumes, that + MOSI is at PORTB, Pin 3 + and + SCK is at PORTB, Pin 5 + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif + +#endif + +#if defined(U8G_ATMEGA_HW_SPI) + +#include +#include + +static uint8_t u8g_atmega_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static uint8_t u8g_atmega_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + /* send data */ + SPDR = val; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); + } + else + { + /* u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); */ + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); /* CS = 1 (high active) */ + } + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr)); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c new file mode 100644 index 000000000..24e06028a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c @@ -0,0 +1,170 @@ +/* + + u8g_com_atmega_st7920_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_atmega_st7920_sw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_atmega_st7920_sw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + uint8_t i = 8; + do + { + u8g_SetPILevel(u8g, U8G_PI_MOSI, val & 128 ); + val <<= 1; + u8g_SetPILevel(u8g, U8G_PI_SCK, 1 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + i--; + } while( i != 0 ); +} + +static void u8g_com_atmega_st7920_write_byte(u8g_t *u8g, uint8_t rs, uint8_t val) U8G_NOINLINE; +static void u8g_com_atmega_st7920_write_byte(u8g_t *u8g, uint8_t rs, uint8_t val) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_atmega_st7920_sw_spi_shift_out(u8g, 0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_atmega_st7920_sw_spi_shift_out(u8g, 0x0fa); + } + + u8g_atmega_st7920_sw_spi_shift_out(u8g, val & 0x0f0); + u8g_atmega_st7920_sw_spi_shift_out(u8g, val << 4); + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + + +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_SetPIOutput(u8g, U8G_PI_SCK); + u8g_SetPIOutput(u8g, U8G_PI_MOSI); + /* u8g_SetPIOutput(u8g, U8G_PI_A0); */ + u8g_SetPIOutput(u8g, U8G_PI_CS); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_SetPILevel(u8g, U8G_PI_MOSI, 0 ); + u8g_SetPILevel(u8g, U8G_PI_CS, 0 ); + /* u8g_SetPILevel(u8g, U8G_PI_A0, 0); */ + + u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); + } + else + { + /* u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); */ + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); /* CS = 1 (high active) */ + } + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr)); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c new file mode 100644 index 000000000..fde3153a5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c @@ -0,0 +1,141 @@ +/* + + u8g_com_atmega_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_atmega_sw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_atmega_sw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + uint8_t i = 8; + do + { + u8g_SetPILevel(u8g, U8G_PI_MOSI, val & 128 ); + val <<= 1; + u8g_SetPILevel(u8g, U8G_PI_SCK, 1 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + i--; + } while( i != 0 ); +} + +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_SetPIOutput(u8g, U8G_PI_SCK); + u8g_SetPIOutput(u8g, U8G_PI_MOSI); + u8g_SetPIOutput(u8g, U8G_PI_A0); + u8g_SetPIOutput(u8g, U8G_PI_CS); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_SetPILevel(u8g, U8G_PI_MOSI, 0 ); + u8g_SetPILevel(u8g, U8G_PI_CS, 1 ); + u8g_SetPILevel(u8g, U8G_PI_A0, 0); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_SetPILevel(u8g, U8G_PI_A0, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + + if ( arg_val == 0 ) + { + /* disable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); + } + else + { + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); /* CS = 0 (low active) */ + } + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_atmega_sw_spi_shift_out(u8g, arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_sw_spi_shift_out(u8g, *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_sw_spi_shift_out(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_i2c.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_i2c.c new file mode 100644 index 000000000..144c7d720 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_i2c.c @@ -0,0 +1,249 @@ +/* + + u8g_com_i2c.c + + generic i2c interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +static uint8_t u8g_i2c_err_code; + +/* + position values + 1: start condition + 2: sla transfer +*/ +static uint8_t u8g_i2c_err_pos; + + +void u8g_i2c_clear_error(void) +{ + u8g_i2c_err_code = U8G_I2C_ERR_NONE; + u8g_i2c_err_pos = 0; +} + +uint8_t u8g_i2c_get_error(void) +{ + return u8g_i2c_err_code; +} + +uint8_t u8g_i2c_get_err_pos(void) +{ + return u8g_i2c_err_pos; +} + +static void u8g_i2c_set_error(uint8_t code, uint8_t pos) +{ + if ( u8g_i2c_err_code > 0 ) + return; + u8g_i2c_err_code |= code; + u8g_i2c_err_pos = pos; +} + + + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_TWI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_TWI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_TWI +#endif +#endif + +#if defined(U8G_ATMEGA_HW_TWI) + +#include +#include + + + +void u8g_i2c_init(uint8_t options) +{ + /* + TWBR: bit rate register + TWSR: status register (contains preselector bits) + + prescalar + 0 1 + 1 4 + 2 16 + 3 64 + + f = F_CPU/(16+2*TWBR*prescalar) + + F_CPU = 16MHz + TWBR = 152; + TWSR = 0; + --> 50KHz + + TWBR = 72; + TWSR = 0; + --> 100KHz + + F_CPU/(2*100000)-8 --> calculate TWBR value for 100KHz +*/ + TWSR = 0; + TWBR = F_CPU/(2*100000)-8; + u8g_i2c_clear_error(); +} + +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) +{ + volatile uint16_t cnt = 2000; /* timout value should be > 280 for 50KHz Bus and 16 Mhz CPU, however the start condition might need longer */ + while( !(TWCR & mask) ) + { + if ( cnt == 0 ) + { + u8g_i2c_set_error(U8G_I2C_ERR_TIMEOUT, pos); + return 0; /* error */ + } + cnt--; + } + return 1; /* all ok */ +} + +/* sla includes all 8 bits (with r/w bit), assums master transmit */ +uint8_t u8g_i2c_start(uint8_t sla) +{ + register uint8_t status; + + /* send start */ + TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); + + /* wait */ + if ( u8g_i2c_wait(_BV(TWINT), 1) == 0 ) + return 0; + + status = TW_STATUS; + + /* check status after start */ + if ( status != TW_START && status != TW_REP_START ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 1); + return 0; + } + + /* set slave address */ + TWDR = sla; + + /* enable sla transfer */ + TWCR = _BV(TWINT) | _BV(TWEN); + + /* wait */ + if ( u8g_i2c_wait(_BV(TWINT), 2) == 0 ) + return 0; + status = TW_STATUS; + + /* check status after sla */ + if ( status != TW_MT_SLA_ACK ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 2); + return 0; + } + + return 1; +} + +uint8_t u8g_i2c_send_byte(uint8_t data) +{ + register uint8_t status; + TWDR = data; + TWCR = _BV(TWINT) | _BV(TWEN); + if ( u8g_i2c_wait(_BV(TWINT), 3) == 0 ) + return 0; + status = TW_STATUS; + + if ( status != TW_MT_DATA_ACK ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 3); + return 0; + } + + return 1; +} + +void u8g_i2c_stop(void) +{ + /* write stop */ + TWCR = _BV(TWINT) | _BV(TWEN) | _BV(TWSTO); + + /* no error is checked for the stop condition */ + u8g_i2c_wait(_BV(TWSTO), 4); + +} + +/* +void twi_send(uint8_t adr, uint8_t data1, uint8_t data2) +{ + u8g_i2c_start(adr<<1); + u8g_i2c_send_byte(data1); + u8g_i2c_send_byte(data2); + u8g_i2c_stop(); +} +*/ + +#else + +/* empty interface */ + +void u8g_i2c_init(uint8_t options) +{ + u8g_i2c_clear_error(); +} + +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) +{ + return 1; +} + +uint8_t u8g_i2c_start(uint8_t sla) +{ + return 1; +} +uint8_t u8g_i2c_send_byte(uint8_t data) +{ + return 1; +} + +void u8g_i2c_stop(void) +{ +} + + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_io.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_io.c new file mode 100644 index 000000000..50d26c93d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_io.c @@ -0,0 +1,218 @@ +/* + + u8g_com_io.c + + abstraction layer for low level i/o + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +#include +#include + +typedef volatile uint8_t * IO_PTR; + +/* create internal pin number */ +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) +{ + port <<= 3; + port += bitpos; + return port; +} + +const IO_PTR u8g_avr_ddr_P[] PROGMEM = { +#ifdef DDRA + &DDRA, +#else + 0, +#endif + &DDRB, +#ifdef DDRC + &DDRC, +#ifdef DDRD + &DDRD, +#ifdef DDRE + &DDRE, +#ifdef DDRF + &DDRF, +#ifdef DDRG + &DDRG, +#ifdef DDRH + &DDRH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + + +const IO_PTR u8g_avr_port_P[] PROGMEM = { +#ifdef PORTA + &PORTA, +#else + 0, +#endif + &PORTB, +#ifdef PORTC + &PORTC, +#ifdef PORTD + &PORTD, +#ifdef PORTE + &PORTE, +#ifdef PORTF + &PORTF, +#ifdef PORTG + &PORTG, +#ifdef PORTH + &PORTH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + +const IO_PTR u8g_avr_pin_P[] PROGMEM = { +#ifdef PINA + &PINA, +#else + 0, +#endif + &PINB, +#ifdef PINC + &PINC, +#ifdef PIND + &PIND, +#ifdef PINE + &PINE, +#ifdef PINF + &PINF, +#ifdef PING + &PING, +#ifdef PINH + &PINH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + +static volatile uint8_t *u8g_get_avr_io_ptr(const IO_PTR *base, uint8_t offset) +{ + volatile uint8_t * tmp; + base += offset; + memcpy_P(&tmp, base, sizeof(volatile uint8_t * PROGMEM)); + return tmp; +} + +/* set direction to output of the specified pin (internal pin number) */ +void u8g_SetPinOutput(uint8_t internal_pin_number) +{ + *u8g_get_avr_io_ptr(u8g_avr_ddr_P, internal_pin_number>>3) |= _BV(internal_pin_number&7); +} + +void u8g_SetPinInput(uint8_t internal_pin_number) +{ + *u8g_get_avr_io_ptr(u8g_avr_ddr_P, internal_pin_number>>3) &= ~_BV(internal_pin_number&7); +} + +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) +{ + volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_port_P, internal_pin_number>>3); + + if ( level == 0 ) + *tmp &= ~_BV(internal_pin_number&7); + else + *tmp |= _BV(internal_pin_number&7); +} + +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) +{ + volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_pin_P, internal_pin_number>>3); + if ( ((*tmp) & _BV(internal_pin_number&7)) != 0 ) + return 1; + return 0; +} + +#else + +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) +{ + port <<= 3; + port += bitpos; + return port; +} + +void u8g_SetPinOutput(uint8_t internal_pin_number) +{ +} + +void u8g_SetPinInput(uint8_t internal_pin_number) +{ +} + +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) +{ +} + +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) +{ + return 0; +} + +#endif + + +void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi) +{ + uint8_t pin; + pin = u8g->pin_list[pi]; + if ( pin != U8G_PIN_NONE ) + u8g_SetPinOutput(pin); +} + +void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level) +{ + uint8_t pin; + pin = u8g->pin_list[pi]; + if ( pin != U8G_PIN_NONE ) + u8g_SetPinLevel(pin, level); +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_null.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_null.c new file mode 100644 index 000000000..1d9deebff --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_com_null.c @@ -0,0 +1,63 @@ +/* + + u8g_com_null.c + + communication null device + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + break; + case U8G_COM_MSG_STOP: + break; + + + case U8G_COM_MSG_CHIP_SELECT: + /* arg_val contains the chip number, which should be enabled */ + break; + + + case U8G_COM_MSG_WRITE_BYTE: + break; + case U8G_COM_MSG_WRITE_SEQ: + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_cursor.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_cursor.c new file mode 100644 index 000000000..62075ba6e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_cursor.c @@ -0,0 +1,99 @@ +/* + + u8g_cursor.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font) +{ + u8g->cursor_font = cursor_font; +} + +void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding) +{ + u8g->cursor_encoding = encoding; +} + +void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg) +{ + u8g->cursor_bg_color = bg; + u8g->cursor_fg_color = fg; +} + +void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y) +{ + u8g->cursor_x = cursor_x; + u8g->cursor_y = cursor_y; +} + +void u8g_EnableCursor(u8g_t *u8g) +{ + u8g->cursor_fn = u8g_DrawCursor; +} + +void u8g_DisableCursor(u8g_t *u8g) +{ + u8g->cursor_fn = (u8g_draw_cursor_fn)0; +} + +void u8g_DrawCursor(u8g_t *u8g) +{ + const u8g_pgm_uint8_t *font; + uint8_t color; + uint8_t encoding = u8g->cursor_encoding; + + /* get current values */ + color = u8g_GetColorIndex(u8g); + font = u8g->font; + + /* draw cursor */ + u8g->font = u8g->cursor_font; + encoding++; + u8g_SetColorIndex(u8g, u8g->cursor_bg_color); + /* 27. Jan 2013: replaced call to u8g_DrawGlyph with call to u8g_draw_glyph */ + /* required, because y adjustment should not happen to the cursor fonts */ + u8g_draw_glyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); + encoding--; + u8g_SetColorIndex(u8g, u8g->cursor_fg_color); + /* 27. Jan 2013: replaced call to u8g_DrawGlyph with call to u8g_draw_glyph */ + /* required, because y adjustment should not happen to the cursor fonts */ + /* u8g_DrawGlyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); */ + u8g_draw_glyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); + + /* restore previous values */ + u8g->font = font; + u8g_SetColorIndex(u8g, color); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_delay.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_delay.c new file mode 100644 index 000000000..e6a0661b3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_delay.c @@ -0,0 +1,215 @@ +/* + + u8g_delay.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "u8g.h" + +/*==== Part 1: Derive suitable delay procedure ====*/ + +#if defined(ARDUINO) +# if defined(__AVR__) +# define USE_AVR_DELAY +# elif defined(__PIC32MX) +# define USE_PIC32_DELAY +# elif defined(__arm__) /* Arduino Due */ +# define USE_ARDUINO_DELAY +# else +# define USE_ARDUINO_DELAY +# endif +#elif defined(__AVR__) +# define USE_AVR_DELAY +#elif defined(__18CXX) +# define USE_PIC18_DELAY +#else +# define USE_DUMMY_DELAY +#endif + + + +/*==== Part 2: Definition of the delay procedures ====*/ + +/*== AVR Delay ==*/ + +#if defined(USE_AVR_DELAY) +#include +#include +#include + +/* + Delay by the provided number of milliseconds. + Thus, a 16 bit value will allow a delay of 0..65 seconds + Makes use of the _delay_loop_2 + + _delay_loop_2 will do a delay of n * 4 prozessor cycles. + with f = F_CPU cycles per second, + n = f / (1000 * 4 ) + with f = 16000000 the result is 4000 + with f = 1000000 the result is 250 + + the millisec loop, gcc requires the following overhead: + - movev 1 + - subwi 2x2 + - bne i 2 + ==> 7 cycles + ==> must be devided by 4, rounded up 7/4 = 2 +*/ +void u8g_Delay(uint16_t val) +{ + /* old version did a call to the arduino lib: delay(val); */ + while( val != 0 ) + { + _delay_loop_2( (F_CPU / 4000 ) -2); + val--; + } +} + +/* delay by one micro second */ +void u8g_MicroDelay(void) +{ +#if (F_CPU / 4000000 ) > 0 + _delay_loop_2( (F_CPU / 4000000 ) ); +#endif +} + +/* delay by 10 micro seconds */ +void u8g_10MicroDelay(void) +{ +#if (F_CPU / 400000 ) > 0 + _delay_loop_2( (F_CPU / 400000 ) ); +#endif +} + +#endif + + +/*== Delay for PIC18 (not tested) ==*/ + +#if defined(USE_PIC18_DELAY) +#include +#define GetSystemClock() (64000000ul) // Hz +#define GetInstructionClock() (GetSystemClock()/4) + +void u8g_Delay(uint16_t val) +{/* + unsigned int _iTemp = (val); + while(_iTemp--) + Delay1KTCYx((GetInstructionClock()+999999)/1000000); + */ +} +void u8g_MicroDelay(void) +{ + /* not implemented */ +} +void u8g_10MicroDelay(void) +{ + /* not implemented */ +} +#endif + + +/*== Arduino Delay ==*/ +#if defined(USE_ARDUINO_DELAY) +void u8g_Delay(uint16_t val) +{ + delay(val); +} +void u8g_MicroDelay(void) +{ + delayMicroseconds(1); +} +void u8g_10MicroDelay(void) +{ + delayMicroseconds(10); +} +#endif + +#if defined(USE_PIC32_DELAY) +/* + Assume chipkit here with F_CPU correctly defined + The problem was, that u8g_Delay() is called within the constructor. + It seems that the chipkit is not fully setup at this time, so a + call to delay() will not work. So here is my own implementation. + +*/ +#define CPU_COUNTS_PER_SECOND (F_CPU/2UL) +#define TICKS_PER_MILLISECOND (CPU_COUNTS_PER_SECOND/1000UL) +#include "plib.h" +void u8g_Delay(uint16_t val) +{ + uint32_t d; + uint32_t s; + d = val; + d *= TICKS_PER_MILLISECOND; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +void u8g_MicroDelay(void) +{ + uint32_t d; + uint32_t s; + d = TICKS_PER_MILLISECOND/1000; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +void u8g_10MicroDelay(void) +{ + uint32_t d; + uint32_t s; + d = TICKS_PER_MILLISECOND/100; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +#endif + +/*== Any other systems: Dummy Delay ==*/ +#if defined(USE_DUMMY_DELAY) +void u8g_Delay(uint16_t val) +{ + /* do not know how to delay... */ +} +void u8g_MicroDelay(void) +{ +} +void u8g_10MicroDelay(void) +{ +} +#endif diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c new file mode 100644 index 000000000..bb368de43 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c @@ -0,0 +1,92 @@ +/* + + u8g_dev_flipdisc.c + + 1-Bit (BW) Driver for flip disc matrix + 2x 7 pixel height + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +#define WIDTH 28 +#define HEIGHT 14 +#define PAGE_HEIGHT 14 + +/* + Write data to the flip disc matrix. + This procedure must be implemented by the user. + Arguments: + id: Id for the matrix. Currently always 0. + page: A page has a height of 14 pixel. For a matrix with HEIGHT == 14 this will be always 0 + width: The width of the flip disc matrix. Always equal to WIDTH + row1: first data line (7 pixel per byte) + row2: first data line (7 pixel per byte) +*/ +void writeFlipDiscMatrix(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2); + + + +void (*u8g_write_flip_disc_matrix)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2); + +void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2)) +{ + u8g_write_flip_disc_matrix = cb; +} + +uint8_t u8g_dev_flipdisc_2x7_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + /* current page: pb->p.page */ + /* ptr to the buffer: pb->buf */ + + (*u8g_write_flip_disc_matrix)(0, pb->p.page, WIDTH, pb->buf, pb->buf+WIDTH); + } + break; + case U8G_DEV_MSG_CONTRAST: + return 1; + } + return u8g_dev_pb14v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_flipdisc_2x7_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_flipdisc_2x7_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_flipdisc_2x7_bw_buf}; +u8g_dev_t u8g_dev_flipdisc_2x7 = { u8g_dev_flipdisc_2x7_bw_fn, &u8g_dev_flipdisc_2x7_bw_pb, u8g_com_null_fn }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_gprof.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_gprof.c new file mode 100644 index 000000000..a486a2143 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_gprof.c @@ -0,0 +1,130 @@ +/* + + u8g_dev_gprof.c + + Device for performance measurement with gprof. + Does not write any data, but uses a buffer. + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +*/ + +#include "u8g.h" + + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +uint8_t u8g_dev_gprof_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +uint8_t u8g_pb_dev_gprof_buf[WIDTH]; +u8g_pb_t u8g_pb_dev_gprof = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_pb_dev_gprof_buf }; + +u8g_dev_t u8g_dev_gprof = { u8g_dev_gprof_fn, &u8g_pb_dev_gprof, NULL }; + +uint8_t u8g_dev_gprof_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + switch(msg) + { + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + /* + { + uint8_t i, j; + uint8_t page_height; + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( j = 0; j < page_height; j++ ) + { + printf("%02d ", j); + for( i = 0; i < WIDTH; i++ ) + { + if ( (u8g_pb_dev_stdout_buf[i] & (1<p)) == 0 ) + { + //printf("\n"); + return 0; + } + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x2, y2; + + y2 = bbx->y; + y2 += bbx->h; + y2--; + + if ( u8g_pb_IsYIntersection(pb, bbx->y, y2) == 0 ) + return 0; + + /* maybe this one can be skiped... probability is very high to have an intersection, so it would be ok to always return 1 */ + x2 = bbx->x; + x2 += bbx->w; + x2--; + + if ( u8g_pb_IsXIntersection(pb, bbx->x, x2) == 0 ) + return 0; + } + return 1; +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c new file mode 100644 index 000000000..e30ae6a71 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c @@ -0,0 +1,326 @@ +/* + + u8g_dev_ili9325d_320x240.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Color format + Red: 5 Bit + Green: 6 Bit + Blue: 5 Bit + + +*/ + +#include "u8g.h" + +#define WIDTH 240 + +#if defined(U8G_16BIT) +#define HEIGHT 320 +#else +/* if the user tries to compile the 8Bit version of the lib, then restrict the height to something which fits to 8Bit */ +#define HEIGHT 240 +#endif +#define PAGE_HEIGHT 4 + + +/* + reference board for this device: + http://iteadstudio.com/store/index.php?main_page=product_info&cPath=57_58&products_id=55 + documentation: + http://iteadstudio.com/Downloadfile/ITDB02_material.rar + datasheet + http://www.newhavendisplay.com/app_notes/ILI9325D.pdf + other libs + http://henningkarlsen.com/electronics/library.php + init sequence + http://code.google.com/p/itdb02/, ITDB02.cpp, iteadstudio.com +*/ + +static const uint8_t u8g_dev_ili9325d_320x240_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + //U8G_ESC_ADR(0), 0x000, 0x0E5, /* only used for none D version: set SRAM internal timing */ + //U8G_ESC_ADR(1), 0x078, 0x0f0, + U8G_ESC_ADR(0), 0x000, 0x001, /* Driver Output Control, bits 8 & 10 */ + U8G_ESC_ADR(1), 0x001, 0x000, + U8G_ESC_ADR(0), 0x000, 0x002, /* LCD Driving Wave Control, bit 9: Set line inversion */ + U8G_ESC_ADR(1), 0x002, 0x000, /* ITDB02 none D verion: 0x007, 0x000 */ + U8G_ESC_ADR(0), 0x000, 0x003, /* Entry Mode, GRAM write direction and BGR=1 */ + U8G_ESC_ADR(1), 0x010, 0x030, + U8G_ESC_ADR(0), 0x000, 0x004, /* Resize register */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x008, /* Display Control 2: set the back porch and front porch */ + U8G_ESC_ADR(1), 0x002, 0x007, + + U8G_ESC_ADR(0), 0x000, 0x009, /* Display Control 3 */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x00a, /* Display Control 4: FMARK */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00c, /* RGB Display Interface Control 1 */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00d, /* Frame Maker Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00f, /* RGB Display Interface Control 2 */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x010, /* Power Control 1: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x011, /* Power Control 2: DC1[2:0], DC0[2:0], VC[2:0] */ + U8G_ESC_ADR(1), 0x000, 0x007, + U8G_ESC_ADR(0), 0x000, 0x012, /* Power Control 3: VREG1OUT voltage */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x013, /* Power Control 4: VDV[4:0] for VCOM amplitude */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x007, /* Display Control 1: Operate, but do not display */ + U8G_ESC_ADR(1), 0x000, 0x001, + + U8G_ESC_DLY(100), /* delay 100 ms */ /* ITDB02 none D verion: 50ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), 0x000, 0x010, /* Power Control 1: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x016, 0x090, /* ITDB02 none D verion: 0x010, 0x090 */ + U8G_ESC_ADR(0), 0x000, 0x011, /* Power Control 2: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x002, 0x027, + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x012, /* Power Control 3: VCI: External, VCI*1.80 */ + U8G_ESC_ADR(1), 0x000, 0x00d, /* ITDB02 none D verion: 0x000, 0x01f */ + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x013, /* Power Control 4: VDV[4:0] for VCOM amplitude */ + U8G_ESC_ADR(1), 0x012, 0x000, /* ITDB02 none D verion: 0x015, 0x000 */ + U8G_ESC_ADR(0), 0x000, 0x029, /* Power Control 7 */ + U8G_ESC_ADR(1), 0x000, 0x00a, /* ITDB02 none D verion: 0x000, 0x027 */ + U8G_ESC_ADR(0), 0x000, 0x02b, /* Frame Rate: 83 */ + U8G_ESC_ADR(1), 0x000, 0x00d, + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + + /* gamma control */ + U8G_ESC_ADR(0), 0x000, 0x030, + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x031, + U8G_ESC_ADR(1), 0x004, 0x004, + U8G_ESC_ADR(0), 0x000, 0x032, + U8G_ESC_ADR(1), 0x000, 0x003, + U8G_ESC_ADR(0), 0x000, 0x035, + U8G_ESC_ADR(1), 0x004, 0x005, + U8G_ESC_ADR(0), 0x000, 0x036, + U8G_ESC_ADR(1), 0x008, 0x008, + U8G_ESC_ADR(0), 0x000, 0x037, + U8G_ESC_ADR(1), 0x004, 0x007, + U8G_ESC_ADR(0), 0x000, 0x038, + U8G_ESC_ADR(1), 0x003, 0x003, + U8G_ESC_ADR(0), 0x000, 0x039, + U8G_ESC_ADR(1), 0x007, 0x007, + U8G_ESC_ADR(0), 0x000, 0x03c, + U8G_ESC_ADR(1), 0x005, 0x004, + U8G_ESC_ADR(0), 0x000, 0x03d, + U8G_ESC_ADR(1), 0x008, 0x008, + + U8G_ESC_ADR(0), 0x000, 0x050, /* Horizontal GRAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x051, /* Horizontal GRAM End Address: 239 */ + U8G_ESC_ADR(1), 0x000, 0x0EF, + U8G_ESC_ADR(0), 0x000, 0x052, /* Vertical GRAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x053, /* Vertical GRAM End Address: 319 */ + U8G_ESC_ADR(1), 0x001, 0x03F, + + U8G_ESC_ADR(0), 0x000, 0x060, /* Driver Output Control 2 */ + U8G_ESC_ADR(1), 0x0a7, 0x000, + U8G_ESC_ADR(0), 0x000, 0x061, /* Base Image Display Control: NDL,VLE, REV */ + U8G_ESC_ADR(1), 0x000, 0x001, + U8G_ESC_ADR(0), 0x000, 0x06a, /* Vertical Scroll Control */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x080, /* Partial Image 1 Display Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x081, /* Partial Image 1 RAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x082, /* Partial Image 1 RAM End Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x083, /* Partial Image 2 Display Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x084, /* Partial Image 2 RAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x085, /* Partial Image 2 RAM End Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x090, /* Panel Interface Control 1 */ + U8G_ESC_ADR(1), 0x000, 0x010, + U8G_ESC_ADR(0), 0x000, 0x092, /* Panel Interface Control 2 */ + U8G_ESC_ADR(1), 0x000, 0x000, /* 0x006, 0x000 */ + + U8G_ESC_ADR(0), 0x000, 0x007, /* Display Control 1: Operate, display ON */ + U8G_ESC_ADR(1), 0x001, 0x033, + + U8G_ESC_DLY(10), /* delay 10 ms */ + + /* write test pattern */ + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x010, + U8G_ESC_ADR(0), 0x000, 0x022, /* Write Data to GRAM */ + U8G_ESC_ADR(1), 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +static const uint8_t u8g_dev_ili9325d_320x240_page_seq[] PROGMEM = { + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), + U8G_ESC_END /* end of sequence */ +}; + +/* convert the internal RGB 332 to 65K high byte */ +static uint8_t u8g_dev_ili9325d_get_65K_high_byte(uint8_t color) +{ + uint8_t h; + h = color; + h &= 0x0e0; + h |= h>>3; + h &= 0x0f8; + color>>=2; + color &= 7; + h |= color; + return h; +} + +/* convert the internal RGB 332 to 65K high byte */ +static uint8_t u8g_dev_ili9325d_get_65K_low_byte(uint8_t color) +{ + uint8_t l; + l = color; + l <<= 3; + color &= 3; + color <<= 1; + l |= color; + return l; +} + + +uint8_t u8g_dev_ili9325d_320x240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + //for(;;) + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_init_seq); + + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + uint16_t y, j; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < pb->p.page_height; i ++ ) + { + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_page_seq); + u8g_WriteByte(u8g, dev, y >> 8 ); /* display ram (cursor) address high byte */ + u8g_WriteByte(u8g, dev, y & 255 ); /* display ram (cursor) address low byte */ + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0 ); + u8g_WriteByte(u8g, dev, 0x022 ); /* start gram data */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + + for( j = 0; j < pb->width; j++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_ili9325d_get_65K_high_byte(*ptr) ); + u8g_WriteByte(u8g, dev, u8g_dev_ili9325d_get_65K_low_byte(*ptr) ); + + ptr++; + } + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_ili9325d_320x240_8h8_buf[WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_ili9325d_320x240_8h8_pb U8G_NOCOMMON = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_ili9325d_320x240_8h8_buf}; +u8g_dev_t u8g_dev_ili9325d_320x240_8bit U8G_NOCOMMON = { u8g_dev_ili9325d_320x240_fn, &u8g_ili9325d_320x240_8h8_pb, u8g_com_arduino_port_d_wr_fn }; +//u8g_dev_t u8g_dev_ili9325d_320x240_8bit = { u8g_dev_ili9325d_320x240_fn, &u8g_ili9325d_320x240_8h8_pb, u8g_com_arduino_parallel_fn }; + +//U8G_PB_DEV(u8g_dev_ili9325d_320x240_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ili9325d_320x240_fn, U8G_COM_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c new file mode 100644 index 000000000..47ba18d4e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c @@ -0,0 +1,110 @@ +/* + + u8g_dev_ks0108_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + ADDRESS = 0 (Command Mode) + 0x03f Display On + 0x0c0 Start Display at line 0 + 0x040 | y write to y address (y:0..63) + 0x0b8 | x write to page [0..7] + + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_ks0108_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip 1 */ + 0x03f, /* display on */ + 0x0c0, /* start at line 0 */ + U8G_ESC_DLY(20), /* delay 20 ms */ + U8G_ESC_CS(2), /* enable chip 2 */ + 0x03f, /* display on */ + 0x0c0, /* start at line 0 */ + U8G_ESC_DLY(20), /* delay 20 ms */ + U8G_ESC_CS(0), /* disable all chips */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_ks0108_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ks0108_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 2); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (KS0108b) */ + u8g_WriteByte(u8g, dev, 0x040 ); /* set address 0 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, 64, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (KS0108b) */ + u8g_WriteByte(u8g, dev, 0x040 ); /* set address 0 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, 64, 64+(uint8_t *)pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + } + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ks0108_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ks0108_128x64_fn, U8G_COM_PARALLEL); +U8G_PB_DEV(u8g_dev_ks0108_128x64_fast, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ks0108_128x64_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c new file mode 100644 index 000000000..b7bf6755e --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c @@ -0,0 +1,147 @@ +/* + + u8g_dev_lc7981_160x80.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 160 +#define HEIGHT 80 +#define PAGE_HEIGHT 8 + + +/* + code ideas: + https://github.com/vsergeev/embedded-drivers/tree/master/avr-lc7981 + data sheets: + http://www.lcd-module.de/eng/pdf/zubehoer/lc7981.pdf + http://www.lcd-module.de/pdf/grafik/w160-6.pdf +*/ + +static const uint8_t u8g_dev_lc7981_160x80_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_160x80_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_160x80_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_160x80_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_160x80_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c new file mode 100644 index 000000000..272b7c4cb --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_240x128.c + + Hitachi Display SP14N002 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + + +/* + http://www.mark-products.com/graphics.htm#240x128%20Pixel%20Format +*/ + +static const uint8_t u8g_dev_lc7981_240x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_240x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_240x128_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_240x128_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c new file mode 100644 index 000000000..781f1d90a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_240x64.c + + Tested with Nan Ya LM_J6_003_ + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +static const uint8_t u8g_dev_lc7981_240x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_240x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_240x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_240x64_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c new file mode 100644 index 000000000..d9ae9369f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_320x64.c + + Note: Requires 16 bit mode (Must be enabled in u8g.h) + + Tested with Varitronix MGLS32064-03.pdf + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 320 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* + http://www.gaw.ru/pdf/lcd/lcm/Varitronix/graf/MGLS32064-03.pdf +*/ + +static const uint8_t u8g_dev_lc7981_320x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_320x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_320x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_320x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_320x64_fn, U8G_COM_FAST_PARALLEL); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_null.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_null.c new file mode 100644 index 000000000..0e3907749 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_null.c @@ -0,0 +1,67 @@ +/* + + u8g_dev_null.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_null(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: /* most often used command */ + break; + case U8G_DEV_MSG_SET_PIXEL: + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + break; + case U8G_DEV_MSG_PAGE_NEXT: + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return 1; +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + } + return 1; +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c new file mode 100644 index 000000000..4cc011379 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c @@ -0,0 +1,110 @@ +/* + + u8g_dev_pcd8544_84x48.c + + Display: Nokia 84x48 + + Status: Tested with PCF8812 Display + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 84 +#define HEIGHT 48 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_pcd8544_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x013, /* bias system 1:48 */ + 0x0c0, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_pcd8544_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcd8544_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_pcd8544_84x48_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcd8544_fn, U8G_COM_SW_SPI); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c new file mode 100644 index 000000000..3ac57884f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c @@ -0,0 +1,123 @@ +/* + + u8g_dev_pcf8812_96x65.c + + Display: Nokia 96x65 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + om6206 comaptible to pcf8812 ? + + Status: Tested + + + Display Controller Seen in + LPH7366 (9 pins, 84x48) PCD8544 Nokia 5110 / 5120 / 5130 / 5160 / 6110 / 6150 + LPH7677 (8 pins, 84x48) PCD8544 Nokia 3210 + LPH7779 (8 pins, 84x48) PCD8544 Nokia 3310 / 3315 / 3330 / 3110, also 3410? + ??? PCD8544 Nokia 5110 / 6110 + LPH7690 ? (96x65) PCF8455/OM6202 Nokia 3410 + LPH7690 ? (96x65?) SED1565/S1D15605 Nokia 7110 / 3510? + LPH7690 ??? Nokia 6210 + + + +*/ + +#include "u8g.h" + +#define WIDTH 96 +#define HEIGHT 65 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_pcf8812_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x013, /* bias system 1:48 */ + 0x080 | 0x040, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_pcf8812_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcf8812_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +/* u8g_com_arduino_sw_spi_fn does not work, too fast??? */ +U8G_PB_DEV(u8g_dev_pcf8812_96x65_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcf8812_fn, U8G_COM_SW_SPI); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c new file mode 100644 index 000000000..3b0bcd625 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c @@ -0,0 +1,107 @@ +/* + + u8g_dev_sbn1661_122x32.c + + WG12232 display with 2xSBN1661 / SED1520 controller (122x32 display) + At the moment only available in the Arduino Environment + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 122 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_sbn1661_122x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip 1 */ + 0x0af, /* display on */ + 0x0c0, /* display start at line 0 */ + 0x0a0, /* a0: ADC forward, a1: ADC reverse */ + 0x0a9, /* a8: 1/16, a9: 1/32 duty */ + U8G_ESC_CS(2), /* enable chip 2 */ + 0x0af, /* display on */ + 0x0c0, /* display start at line 0 */ + 0x0a0, /* a0: ADC forward, a1: ADC reverse */ + 0x0a9, /* a8: 1/16, a9: 1/32 duty */ + + U8G_ESC_CS(0), /* disable chip */ + + + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_sbn1661_122x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_sbn1661_122x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (SBN1661/SED1520) */ + u8g_WriteByte(u8g, dev, 0x000 ); /* set X address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/2, pb->buf); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 2); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (SBN1661/SED1520) */ + u8g_WriteByte(u8g, dev, 0x000 ); /* set X address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/2, WIDTH/2+(uint8_t *)pb->buf); + + u8g_SetChipSelect(u8g, dev, 0); + + } + break; + case U8G_DEV_MSG_CONTRAST: + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +/* u8g_com_arduino_sw_spi_fn does not work, too fast??? */ +U8G_PB_DEV(u8g_dev_sbn1661_122x32 , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sbn1661_122x32_fn, u8g_com_arduino_no_en_parallel_fn); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c new file mode 100644 index 000000000..8f294374b --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c @@ -0,0 +1,247 @@ +/* + + u8g_dev_ssd1306_128x32.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + 23 Feb 2013: Fixed, Issue 147 + +*/ + + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +/* init sequence adafruit 128x32 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit1_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x010, /* [1] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* [1] set contrast control */ + 0x0d9, 0x022, /* [1] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence adafruit 128x32 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit2_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence adafruit 128x32 OLED (TESTED - WORKING 23.02.13), like adafruit3, but with page addressing mode */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit3_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x01f, /* Feb 23, 2013: 128x32 OLED: 0x01f, 128x64 OLED 0x03f */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5), Feb 23, 2013: 128x32 OLED: 0x002, 128x64 OLED 0x012 */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence Univision datasheet (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_univision_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* multiplex ratio */ + 0x0d3, 0x000, /* display offset */ + 0x040, /* start line */ + 0x08d, 0x010, /* charge pump setting (p62): 0x014 enable, 0x010 disable */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* set contrast control */ + 0x0d9, 0x022, /* pre-charge period */ + 0x0db, 0x040, /* vcomh deselect level */ + 0x022, 0x000, /* page addressing mode WRONG: 3 byte cmd! */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* select one init sequence here */ +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_univision_init_seq +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit1_init_seq +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit2_init_seq +#define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit3_init_seq + + +static const uint8_t u8g_dev_ssd1306_128x32_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr. to 0 */ + 0x000, /* set lower 4 bit of the col adr. to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1306_128x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; +} + + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1306_128x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x32_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_SSD_I2C); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c new file mode 100644 index 000000000..a49b2d806 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c @@ -0,0 +1,237 @@ +/* + + u8g_dev_ssd1306_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence adafruit 128x64 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit1_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x010, /* [1] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* [1] set contrast control */ + 0x0d9, 0x022, /* [1] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence adafruit 128x64 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit2_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence adafruit 128x64 OLED (NOT TESTED), like adafruit3, but with page addressing mode */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit3_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x002, /* 2012-05-27: page addressing mode */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence Univision datasheet (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_univision_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* multiplex ratio */ + 0x0d3, 0x000, /* display offset */ + 0x040, /* start line */ + 0x08d, 0x010, /* charge pump setting (p62): 0x014 enable, 0x010 disable */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* set contrast control */ + 0x0d9, 0x022, /* pre-charge period */ + 0x0db, 0x040, /* vcomh deselect level */ + 0x022, 0x000, /* page addressing mode WRONG: 3 byte cmd! */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* select one init sequence here */ +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_univision_init_seq +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit1_init_seq +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit2_init_seq +#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit3_init_seq + + +static const uint8_t u8g_dev_ssd1306_128x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1306_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1306_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_SSD_I2C); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c new file mode 100644 index 000000000..d16013fb7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c @@ -0,0 +1,144 @@ +/* + + u8g_dev_ssd1309_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* ssd1309 ini sequence*/ +static const uint8_t u8g_dev_ssd1309_128x64_init_seq[] PROGMEM={ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0xfd,0x12, /*Command Lock */ + 0xae, /*Set Display Off */ + 0xd5,0xa0, /*set Display Clock Divide Ratio/Oscillator Frequency */ + 0xa8,0x3f, /*Set Multiplex Ratio */ + 0x3d,0x00, /*Set Display Offset*/ + 0x40, /*Set Display Start Line*/ + 0xa1, /*Set Segment Re-Map*/ + 0xc8, /*Set COM Output Scan Direction*/ + 0xda,0x12, /*Set COM Pins Hardware Configuration*/ + 0x81,0xdf, /*Set Current Control */ + 0xd9,0x82, /*Set Pre-Charge Period */ + 0xdb,0x34, /*Set VCOMH Deselect Level */ + 0xa4, /*Set Entire Display On/Off */ + 0xa6, /*Set Normal/Inverse Display*/ + U8G_ESC_VCC(1), /*Power up VCC & Stabilized */ + U8G_ESC_DLY(50), + 0xaf, /*Set Display On */ + U8G_ESC_DLY(50), + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* select one init sequence here */ + #define u8g_dev_ssd1309_128x64_init_seq u8g_dev_ssd1309_128x64_init_seq + + + static const uint8_t u8g_dev_ssd1309_128x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1309_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1309_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1309_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1309_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_SSD_I2C); + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c new file mode 100644 index 000000000..24b94ffc7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c @@ -0,0 +1,334 @@ +/* + + u8g_dev_ssd1322_nhd31oled_bw.c + + 1-Bit (BW) Driver for SSD1322 Controller (OLED Display) + Tested with NHD-3.12-25664 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#if defined(U8G_16BIT) +#define WIDTH 256 +#else +#define WIDTH 248 +#endif +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* + http://www.newhavendisplay.com/app_notes/OLED_25664.txt + http://www.newhavendisplay.com/forum/viewtopic.php?f=15&t=3758 +*/ + +static const uint8_t u8g_dev_ssd1322_1bit_nhd_312_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0fd, /* lock command */ + U8G_ESC_ADR(1), /* data mode */ + 0x012, /* unlock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ae, /* display off, sleep mode */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b3, + U8G_ESC_ADR(1), /* data mode */ + 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 80 frames/sec) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ca, /* multiplex ratio */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, /* 1/64 Duty (0x0F~0x3F) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a2, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display offset, shift mapping ram counter */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a1, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display start line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a0, /* Set Re-Map / Dual COM Line Mode */ + U8G_ESC_ADR(1), /* data mode */ + 0x014, /* was 0x014 */ + 0x011, /* was 0x011 */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ab, + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* Enable Internal VDD Regulator */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b4, /* Display Enhancement A */ + U8G_ESC_ADR(1), /* data mode */ + 0x0a0, + 0x005|0x0fd, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c1, /* contrast */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c7, /* Set Scale Factor of Segment Output Current Control */ + U8G_ESC_ADR(1), /* data mode */ + 0x00f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b9, /* linear gray scale */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b1, /* Phase 1 (Reset) & Phase 2 (Pre-Charge) Period Adjustment */ + U8G_ESC_ADR(1), /* data mode */ + 0x0e2, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0d1, /* Display Enhancement B */ + U8G_ESC_ADR(1), /* data mode */ + 0x082|0x020, + 0x020, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0bb, /* precharge voltage */ + U8G_ESC_ADR(1), /* data mode */ + 0x01f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b6, /* precharge period */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0be, /* vcomh */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a6, /* normal display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a9, /* exit partial display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0af, /* display on */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1322_1bit_nhd_312_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + U8G_ESC_ADR(1), /* data mode */ + 0x01c, /* start at column 0 */ + 0x05b, /* end column */ + U8G_ESC_ADR(0), /* instruction mode */ + 0x075, /* row address... */ + U8G_ESC_ADR(1), /* data mode */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1322_1bit_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_ssd1322_nhd31oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_1bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_1bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_HW_SPI); + +#define DWIDTH (WIDTH*2) +uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1322_nhd31oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1322_nhd31oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi = { u8g_dev_ssd1322_nhd31oled_2x_bw_fn, &u8g_dev_ssd1322_nhd31oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi = { u8g_dev_ssd1322_nhd31oled_2x_bw_fn, &u8g_dev_ssd1322_nhd31oled_2x_bw_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c new file mode 100644 index 000000000..5b509641c --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c @@ -0,0 +1,333 @@ +/* + + u8g_dev_ssd1322_nhd31oled_gr.c + + 2-Bit (4L) Driver for SSD1322 Controller (OLED Display) + Tested with NHD-3.12-25664 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#if defined(U8G_16BIT) +#define WIDTH 256 +#else +#define WIDTH 248 +#endif +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* + http://www.newhavendisplay.com/app_notes/OLED_25664.txt + http://www.newhavendisplay.com/forum/viewtopic.php?f=15&t=3758 +*/ + +static const uint8_t u8g_dev_ssd1322_2bit_nhd_312_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0fd, /* lock command */ + U8G_ESC_ADR(1), /* data mode */ + 0x012, /* unlock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ae, /* display off, sleep mode */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b3, + U8G_ESC_ADR(1), /* data mode */ + 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 80 frames/sec) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ca, /* multiplex ratio */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, /* 1/64 Duty (0x0F~0x3F) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a2, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display offset, shift mapping ram counter */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a1, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display start line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a0, /* Set Re-Map / Dual COM Line Mode */ + U8G_ESC_ADR(1), /* data mode */ + 0x014, /* was 0x014 */ + 0x011, /* was 0x011 */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ab, + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* Enable Internal VDD Regulator */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b4, /* Display Enhancement A */ + U8G_ESC_ADR(1), /* data mode */ + 0x0a0, + 0x005|0x0fd, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c1, /* contrast */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c7, /* Set Scale Factor of Segment Output Current Control */ + U8G_ESC_ADR(1), /* data mode */ + 0x00f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b9, /* linear gray scale */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b1, /* Phase 1 (Reset) & Phase 2 (Pre-Charge) Period Adjustment */ + U8G_ESC_ADR(1), /* data mode */ + 0x0e2, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0d1, /* Display Enhancement B */ + U8G_ESC_ADR(1), /* data mode */ + 0x082|0x020, + 0x020, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0bb, /* precharge voltage */ + U8G_ESC_ADR(1), /* data mode */ + 0x01f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b6, /* precharge period */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0be, /* vcomh */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a6, /* normal display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a9, /* exit partial display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0af, /* display on */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1322_2bit_nhd_312_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + U8G_ESC_ADR(1), /* data mode */ + 0x01c, /* start at column 0 */ + 0x05b, /* end column */ + U8G_ESC_ADR(0), /* instruction mode */ + 0x075, /* row address... */ + U8G_ESC_ADR(1), /* data mode */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1322_2bit_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1322_nhd31oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_2bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h2_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_2bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h2_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_HW_SPI); + +#define DWIDTH (WIDTH*2) +uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1322_nhd31oled_2x_gr_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1322_nhd31oled_2x_gr_buf}; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi = { u8g_dev_ssd1322_nhd31oled_2x_gr_fn, &u8g_dev_ssd1322_nhd31oled_2x_gr_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi = { u8g_dev_ssd1322_nhd31oled_2x_gr_fn, &u8g_dev_ssd1322_nhd31oled_2x_gr_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c new file mode 100644 index 000000000..95853bdf2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c @@ -0,0 +1,263 @@ +/* + + u8g_dev_ssd1325_nhd27oled_bw.c + + 1-Bit (BW) Driver for SSD1325 Controller (OLED Display) + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#ifdef OBSOLETE_CODE + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x056, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1325_1bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 3; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 7; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1325_1bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 1; + page += is_odd; + + page <<= 3; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 7; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +#ifdef OLD +static void _OLD_u8g_dev_ssd1325_1bit_write_16_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, cnt; + cnt = 8; + do + { + d = 0; + if ( left & 1 ) + d |= 0x0f0; + if ( right & 1 ) + d |= 0x00f; + u8g_WriteByte(u8g, dev, d); + left >>= 1; + right >>= 1; + cnt--; + }while ( cnt > 0 ); +} +#endif + +static void u8g_dev_ssd1325_1bit_write_16_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, cnt; + static uint8_t buf[8]; + cnt = 8; + do + { + d = 0; + if ( left & 128 ) + d |= 0x0f0; + if ( right & 128 ) + d |= 0x00f; + cnt--; + buf[cnt] = d; + left <<= 1; + right <<= 1; + }while ( cnt > 0 ); + u8g_WriteSequence(u8g, dev, 8, buf); +} + +static void u8g_dev_ssd1325_1bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_1bit_write_16_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +uint8_t u8g_dev_ssd1325_nhd27oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_1bit_prepare_page(u8g, dev); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 0); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_1bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 0); + u8g_dev_ssd1325_1bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +/* disabled, see bw_new.c */ +/* +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_parallel , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_FAST_PARALLEL); +*/ + +/* +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_FAST_PARALLEL }; +*/ + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c new file mode 100644 index 000000000..c9f4a51ad --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c @@ -0,0 +1,232 @@ +/* + + u8g_dev_ssd1325_nhd27oled_bw.c + + 1-Bit (BW) Driver for SSD1325 Controller (OLED Display) + Horizontal architecture, completly rewritten + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_nhd_27_12864_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x052, /* remap configuration, horizontal address increment (bit 2 = 0), enable nibble remap (upper nibble is left, bit 1 = 1) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a4, /* normal display mode */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_prepare_row_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1325_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_prepare_row_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + //u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + //u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +static uint8_t u8g_dev_ssd1325_nhd27oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + //case U8G_DEV_MSG_IS_BBX_INTERSECTION: + // return u8g_pb_IsIntersection((u8g_pb_t *)(dev->dev_mem), (u8g_dev_arg_bbx_t *)arg); + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_nhd_27_12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_nhd_27_12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + + + +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_sw_spi , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_hw_spi , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_parallel , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_FAST_PARALLEL); + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_FAST_PARALLEL }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c new file mode 100644 index 000000000..d00d18ec4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c @@ -0,0 +1,255 @@ +/* + + u8g_dev_ssd1325_nhd27oled_gr.c + + 2-Bit (gray level) Driver for SSD1325 Controller (OLED Display) + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#ifdef OBSOLETE_CODE + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x056, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1325_2bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1325_2bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 1; + page += is_odd; + + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +static void u8g_dev_ssd1325_2bit_write_4_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, tmp, cnt; + cnt = 4; + do + { + d = left; + d &= 3; + d <<= 4; + tmp = right; + tmp &= 3; + d |= tmp; + d <<= 2; + u8g_WriteByte(u8g, dev, d); + left >>= 2; + right >>= 2; + cnt--; + }while ( cnt > 0 ); +} + +static void u8g_dev_ssd1325_2bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + cnt = pb->width; + cnt >>= 1; + ptr = pb->buf; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static void u8g_dev_ssd1325_2bit_2x_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_2bit_prepare_page(u8g, dev); + u8g_dev_ssd1325_2bit_write_buffer(u8g, dev); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_2bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1325_2bit_2x_write_buffer(u8g, dev, 0); + u8g_dev_ssd1325_2bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1325_2bit_2x_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +//U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_SW_SPI); +//U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_HW_SPI); + +//uint8_t u8g_dev_ssd1325_nhd27oled_2x_buf[WIDTH*2] U8G_NOCOMMON ; +//u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_buf}; +//u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_SW_SPI }; +//u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_HW_SPI }; + + +#endif /* OBSOLETE_CODE */ diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c new file mode 100644 index 000000000..2e61d9a57 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c @@ -0,0 +1,227 @@ +/* + + u8g_dev_ssd1325_nhd27oled_gr.c + + 2-Bit (gray level) Driver for SSD1325 Controller (OLED Display) + Rewritten with new architecture + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x052, /* remap configuration, horizontal address increment (bit 2 = 0), enable nibble remap (upper nibble is left, bit 1 = 1), old values: 0x0a0 0x0a6 */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a4, /* normal display mode */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1325_gr_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + //u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + //u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + + +static uint8_t u8g_dev_ssd1325_nhd27oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_gr_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h2_base_fn(u8g, dev, msg, arg); +} + + + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_gr_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c new file mode 100644 index 000000000..5e3b44674 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c @@ -0,0 +1,299 @@ +/* + + u8g_dev_ssd1327_96x96_gr.c + + 2-Bit (graylevel) Driver for SSD1327 Controller (OLED Display) + Tested with Seedstudio 96x96 Oled (LY120) + http://www.seeedstudio.com/wiki/index.php?title=Twig_-_OLED_96x96 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +#define WIDTH 96 +#define HEIGHT 96 +#define XOFFSET 8 + +/* + http://www.seeedstudio.com/wiki/index.php?title=Twig_-_OLED_96x96 +*/ +static const uint8_t u8g_dev_ssd1327_2bit_96x96_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0fd, 0x012, /* unlock display, usually not required because the display is unlocked after reset */ + 0x0ae, /* display off, sleep mode */ + 0x0a8, 0x05f, /* multiplex ratio: 0x05f * 1/64 duty */ + 0x0a1, 0x000, /* display start line */ + 0x0a2, 0x060, /* display offset, shift mapping ram counter */ + //0x0a2, 0x04c, /* NHD: display offset, shift mapping ram counter */ + 0x0a0, 0x046, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + //0x0a0, 0x056, /* NHD: remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x0ab, 0x001, /* Enable internal VDD regulator (RESET) */ + 0x081, 0x053, /* contrast, brightness, 0..128, Newhaven: 0x040, LY120 0x053, 0x070 seems also ok */ + 0x0b1, 0x051, /* phase length */ + 0x0b3, 0x001, /* set display clock divide ratio/oscillator frequency */ + 0x0b9, /* use linear lookup table */ +#if 0 + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 +#endif + 0x0bc, 0x008, /* pre-charge voltage level */ + 0x0be, 0x007, /* VCOMH voltage */ + 0x0b6, 0x001, /* second precharge */ + 0x0d5, 0x062, /* enable second precharge, internal vsl (bit0 = 0) */ + +#if 0 + // the following commands are not used by the SeeedGrayOLED sequence */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ +#endif + + 0x0a5, /* all pixel on */ + //0x02e, /* no scroll (according to SeeedGrayOLED sequence) */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + + 0x015, /* column address... */ + 0x008, /* start at column 8, special for the LY120 ??? */ + 0x037, /* end at column 55, note: there are two pixel in one column */ + + 0x075, /* row address... */ + 0x008, + 0x05f, + + U8G_ESC_ADR(1), /* data mode */ + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1327_2bit_96x96_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + XOFFSET, /* start at column 8, special for the LY120 ??? */ + 0x037, /* end at column 55, note: there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1327_2bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_prepare_page_seq); + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1327_2bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_prepare_page_seq); + + page <<= 1; + page += is_odd; + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +static void u8g_dev_ssd1327_2bit_write_4_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, tmp, cnt; + static uint8_t buf[4]; + buf[0] = 0; + buf[1] = 0; + buf[2] = 0; + buf[3] = 0; + cnt = 0; + do + { + if ( left == 0 && right == 0 ) + break; + d = left; + d &= 3; + d <<= 4; + tmp = right; + tmp &= 3; + d |= tmp; + d <<= 2; + buf[cnt] = d; + left >>= 2; + right >>= 2; + cnt++; + }while ( cnt < 4 ); + u8g_WriteSequence(u8g, dev, 4, buf); +} + +static void u8g_dev_ssd1327_2bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + cnt = pb->width; + cnt >>= 1; + ptr = pb->buf; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1327_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static void u8g_dev_ssd1327_2bit_2x_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1327_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +uint8_t u8g_dev_ssd1327_96x96_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1327_2bit_prepare_page(u8g, dev); + u8g_dev_ssd1327_2bit_write_buffer(u8g, dev); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1327_96x96_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1327_2bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1327_2bit_2x_write_buffer(u8g, dev, 0); + u8g_dev_ssd1327_2bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1327_2bit_2x_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_i2c , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_SSD_I2C); + +#define DWIDTH (2*WIDTH) +uint8_t u8g_dev_ssd1327_96x96_2x_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1327_96x96_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1327_96x96_2x_buf}; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_SSD_I2C }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_64128n.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_64128n.c new file mode 100644 index 000000000..01fc9fc0c --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_64128n.c @@ -0,0 +1,153 @@ +/* + + u8g_dev_st7565_64128n.c (Displaytech) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_64128n_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0A2, /* 0x0a2: LCD bias 1/9 (according to Displaytech 64128N datasheet) */ + 0x0A0, /* Normal ADC Select (according to Displaytech 64128N datasheet) */ + + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x040, /* Display start line for Displaytech 64128N */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x010, /* Set V0 voltage resistor ratio. Setting for controlling brightness of Displaytech 64128N */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x01e, /* Contrast value. Setting for controlling brightness of Displaytech 64128N */ + + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0x10 */ + 0x000, /* set lower 4 bit of the col adr to 0x00. Changed for DisplayTech 64128N */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_64128n_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_64128n_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_64128n_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_HW_SPI); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c new file mode 100644 index 000000000..095ef369c --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c @@ -0,0 +1,140 @@ +/* + + u8g_dev_st7565_dogm128.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +const uint8_t u8g_dev_st7565_dogm128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode: set scan direction normal operation */ + 0x0a6, /* display normal (none reverse) */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value, EA default: 0x016 */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0a4, /* normal display (not all on) */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_dogm128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_dogm128_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_dogm128_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c new file mode 100644 index 000000000..a76d54b3f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c @@ -0,0 +1,157 @@ +/* + + u8g_dev_st7565_dogm132.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 132 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_st7565_dogm132_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x01f, /* contrast value, EA default: 0x01f */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + +#ifdef OBSOLETE_DOGM128 + 0x040, /* set display start line */ + 0x0c8, /* set scan direction inverse operation */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value, EA default: 0x016 */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ +#endif + + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_dogm132_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_dogm132_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm132_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_dogm132_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm132_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c new file mode 100644 index 000000000..ab8ed39b6 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c @@ -0,0 +1,157 @@ +/* + + u8g_dev_st7565_lm6059.c (Adafruit display) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_lm6059_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0a3, /* 0x0a2: LCD bias 1/9 (suggested for the LM6063), 0x0a3: Used by Adafruit, 0x0a2 does not work */ + /* the LM6059 vs LM6063, ADC and SHL have inverted settings */ + 0x0a0, /* 0x0a1: ADC set to normal (suggested for the LM6059), 0x0a0: Used by Adafruit -> normal mode */ + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x060, /* set display start line */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x026, /* set V0 voltage resistor ratio to 6 (Adafruit Value, no info from LM6063 Manual) */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + + /*0x0ac,*/ /* indicator */ + /*0x000,*/ /* disable */ + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x001, /* set lower 4 bit of the col adr */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_st7565_lm6059_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_lm6059_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6059_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_lm6059_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6059_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c new file mode 100644 index 000000000..47ccb1ec7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c @@ -0,0 +1,188 @@ +/* + + u8g_dev_st7565_lm6063.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +#ifdef OLD_ADAFRUIT_CODE +static const uint8_t OLD_u8g_dev_st7565_lm6063_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select / 17 Jan: seems to be a bug, must be 0x0c0 */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + /*0x0f8,*/ /* set booster ratio to */ + /*0x000, */ /* 4x */ + /*0x027,*/ /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; +#endif + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_lm6063_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0a3, /* 0x0a2: LCD bias 1/9 (suggested for the LM6063), 0x0a3: Used by Adafruit */ + 0x0a1, /* 0x0a1: ADC set to reverse (suggested for the LM6063), 0x0a0: Used by Adafruit -> normal mode */ + 0x0c0, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x040, /* set display start line */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x026, /* set V0 voltage resistor ratio to 6 (Adafruit Value, no info from LM6063 Manual) */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + + /*0x0ac,*/ /* indicator */ + /*0x000,*/ /* disable */ + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6063_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_st7565_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_st7565_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_st7565_lm6063_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_st7565_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_st7565_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_lm6063_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6063_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_lm6063_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6063_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c new file mode 100644 index 000000000..ed80a0693 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c @@ -0,0 +1,143 @@ +/* + + u8g_dev_st7565_nhd_c12832.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_st7565_c12832_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a0, /* ADC set, values: a0=normal, a1=reverse */ + 0x0c8, /* common output mode: c0=normal, c8=reverse */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x00a, /* contrast value */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_c12832_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_PARALLEL); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c new file mode 100644 index 000000000..5e3f8b9fe --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_st7565_nhd_c12864.c + + Support for the NHD-C12864A1Z-FSB-FBW (Newhaven Display) + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +const uint8_t u8g_dev_st7565_nhd_c12864_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(10), /* do reset low pulse with (10*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode: set scan direction normal operation */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x008, /* contrast: 0x008 is a good value for NHD C12864, Nov 2012: User reports that 0x1a is much better */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_nhd_c12864_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x004, /* set lower 4 bit of the col adr to 4 (NHD C12864) */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12864_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12864_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_nhd_c12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12864_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12864_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_nhd_c12864_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_nhd_c12864_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12864_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_nhd_c12864_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c new file mode 100644 index 000000000..4851017aa --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c @@ -0,0 +1,420 @@ +/* + + u8g_dev_st7687_c144mvgd.c (1.44" TFT) + + Status: Started, but not finished + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + + +#ifdef FIRST_VERSION +/* +see also: read.pudn.com/downloads115/sourcecode/app/484503/LCM_Display.c__.htm +http://en.pudn.com/downloads115/sourcecode/app/detail484503_en.html +*/ + +static const uint8_t u8g_dev_st7687_c144mvgd_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x001, /* A0=0, SW reset */ + U8G_ESC_DLY(200), /* delay 200 ms */ + + 0x0d7, /* EEPROM data auto re-load control */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, /* ARD = 1 */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0e0, /* EEPROM control in */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + +#ifdef NOT_REQUIRED + 0x0fa, /* EEPROM function selection 8.1.66 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ +#endif + + 0x0e3, /* Read from EEPROM, 8.1.55 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0e1, /* EEPROM control out, 8.1.53 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + //0x028, /* display off */ + 0x011, /* Sleep out & booster on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0c0, /* Vop setting, 8.1.42 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x001, /* 3.6 + 256*0.04 = 13.84 Volt */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0c3, /* Bias selection, 8.1.45 */ + U8G_ESC_ADR(1), /* data mode */ + 0x003, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c4, /* Booster setting 8.1.46 */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c5, /* ??? */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0cb, /* FV3 with Booster x2 control, 8.1.47 */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x036, /* Memory data access control, 8.1.28 */ + U8G_ESC_ADR(1), /* data mode */ + 0x080, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b5, /* N-line control, 8.1.37 */ + U8G_ESC_ADR(1), /* data mode */ + 0x089, + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0d0, /* Analog circuit setting, 8.1.49 */ + U8G_ESC_ADR(1), /* data mode */ + 0x01d, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b7, /* Com/Seg Scan Direction, 8.1.38 */ + U8G_ESC_ADR(1), /* data mode */ + 0x040, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x025, /* Write contrast, 8.1.17 */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x03a, /* Interface pixel format, 8.1.32 */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, /* 3: 12 bit per pixel Type A, 4: 12 bit Type B, 5: 16bit per pixel */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b0, /* Display Duty setting, 8.1.34 */ + U8G_ESC_ADR(1), /* data mode */ + 0x07f, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f0, /* Frame Freq. in Temp range A,B,C and D, 8.1.59 */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + 0x00c, + 0x00c, + 0x015, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f9, /* Frame RGB Value, 8.1.65 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, + 0x005, + 0x008, + 0x00a, + 0x00c, + 0x00e, + 0x010, + 0x011, + 0x012, + 0x013, + 0x014, + 0x015, + 0x016, + 0x018, + 0x01a, + 0x01b, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f9, /* Frame RGB Value, 8.1.65 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, + 0x000, + 0x000, + 0x000, + 0x033, + 0x055, + 0x055, + 0x055, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x029, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ + +}; + +#else + +/* +http://www.waitingforfriday.com/images/e/e3/FTM144D01N_test.zip +*/ + +static const uint8_t u8g_dev_st7687_c144mvgd_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x011, /* Sleep out & booster on */ + U8G_ESC_DLY(5), /* delay 5 ms */ + + 0x03a, /* Interface pixel format, 8.1.32 */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, /* 3: 12 bit per pixel Type A, 4: 12 bit Type B, 5: 16bit per pixel */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x026, /* SET_GAMMA_CURVE */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f2, /* GAM_R_SEL */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* enable gamma adj */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0e0, /* POSITIVE_GAMMA_CORRECT */ + U8G_ESC_ADR(1), /* data mode */ + 0x3f, + 0x25, + 0x1c, + 0x1e, + 0x20, + 0x12, + 0x2a, + 0x90, + 0x24, + 0x11, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0e1, /* NEGATIVE_GAMMA_CORRECT */ + U8G_ESC_ADR(1), /* data mode */ + 0x20, + 0x20, + 0x20, + 0x20, + 0x05, + 0x00, + 0x15, + 0xa7, + 0x3d, + 0x18, + 0x25, + 0x2a, + 0x2b, + 0x2b, + 0x3a, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b1, /* FRAME_RATE_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, /* DIVA = 8 */ + 0x008, /* VPA = 8 */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0b4, /* DISPLAY_INVERSION */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, /* NLA = 1, NLB = 1, NLC = 1 (all on Frame Inversion) */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c0, /* POWER_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x00a, /* VRH = 10: GVDD = 4.30 */ + 0x002, /* VC = 2: VCI1 = 2.65 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c1, /* POWER_CONTROL2 */ + U8G_ESC_ADR(1), /* data mode */ + 0x002, /* BT = 2: AVDD = 2xVCI1, VCL = -1xVCI1, VGH = 5xVCI1, VGL = -2xVCI1 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c5, /* VCOM_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x050, /* VMH = 80: VCOMH voltage = 4.5 */ + 0x05b, /* VML = 91: VCOML voltage = -0.225 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c7, /* VCOM_OFFSET_CONTROL */ + U8G_ESC_ADR(1), /* data mode */ + 0x040, /* nVM = 0, VMF = 64: VCOMH output = VMH, VCOML output = VML */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x02a, /* SET_COLUMN_ADDRESS */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x000, /* */ + 0x000, /* */ + 0x07f, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x02b, /* SET_PAGE_ADDRESS */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x000, /* */ + 0x000, /* */ + 0x07f, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x036, /* SET_ADDRESS_MODE */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* Select display orientation */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x029, /* display on */ + + 0x02c, /* write start */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ + +}; + +#endif + + + + +/* calculate bytes for Type B 4096 color display */ +static uint8_t get_byte_1(uint8_t v) +{ + v >>= 4; + v &= 0x0e; + return v; +} + +static uint8_t get_byte_2(uint8_t v) +{ + uint8_t w; + w = v; + w &= 3; + w = (w<<2) | w; + v <<= 3; + v &= 0x0e0; + w |= v; + return w; +} + +uint8_t u8g_dev_st7687_c144mvgd_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7687_c144mvgd_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i, j; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02a ); /* Column address set 8.1.20 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, 0x000 ); /* x0 */ + u8g_WriteByte(u8g, dev, WIDTH-1 ); /* x1 */ + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02b ); /* Row address set 8.1.21 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, y ); /* y0 */ + u8g_WriteByte(u8g, dev, y+PAGE_HEIGHT-1 ); /* y1 */ + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02c ); /* Memory write 8.1.22 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + + for( j = 0; j < WIDTH; j ++ ) + { + u8g_WriteByte(u8g, dev, get_byte_1(*ptr) ); + u8g_WriteByte(u8g, dev, get_byte_2(*ptr) ); + ptr++; + } + } + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_st7687_c144mvgd_8h8_buf[WIDTH*8] U8G_NOCOMMON ; +u8g_pb_t u8g_st7687_c144mvgd_8h8_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_st7687_c144mvgd_8h8_buf}; + +u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi = { u8g_dev_st7687_c144mvgd_fn, &u8g_st7687_c144mvgd_8h8_pb, u8g_com_arduino_sw_spi_fn }; + +u8g_dev_t u8g_dev_st7687_c144mvgd_8bit = { u8g_dev_st7687_c144mvgd_fn, &u8g_st7687_c144mvgd_8h8_pb, U8G_COM_PARALLEL }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_128x64.c new file mode 100644 index 000000000..b0b18d34d --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_128x64.c @@ -0,0 +1,171 @@ +/* + + u8g_dev_st7565_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + + if ( y < 32 ) + { + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + } + else + { + u8g_WriteByte(u8g, dev, 0x080 | (y-32) ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 | 8); /* set x pos to 64*/ + } + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_128x64_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + + if ( y < 32 ) + { + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + } + else + { + u8g_WriteByte(u8g, dev, 0x080 | (y-32) ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 | 8); /* set x pos to 64*/ + } + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7920_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_128x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_FAST_PARALLEL); + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_128x64_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_128x64_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_128x64_4x_buf}; +u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_128x64_4x_8bit = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_FAST_PARALLEL }; + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_192x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_192x32.c new file mode 100644 index 000000000..28535e0cd --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_192x32.c @@ -0,0 +1,151 @@ +/* + + u8g_dev_st7920_192x32.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 192 +#define HEIGHT 32 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_192x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_192x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_192x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_192x32_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_192x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_st7920_192x32_sw_spi, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_192x32_hw_spi, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_192x32_8bit, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_FAST_PARALLEL); + + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_192x32_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_192x32_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_192x32_4x_buf}; +u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_192x32_4x_8bit = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_FAST_PARALLEL }; + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_202x32.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_202x32.c new file mode 100644 index 000000000..129fc748f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_st7920_202x32.c @@ -0,0 +1,154 @@ +/* + + u8g_dev_st7920_202x32.c + tested with CFAG20232 + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 202 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_202x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_202x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_202x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_202x32_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_202x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_st7920_202x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_202x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_202x32_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_FAST_PARALLEL); + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_202x32_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_202x32_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_202x32_4x_buf}; +u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_202x32_4x_8bit = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_FAST_PARALLEL }; + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x64.c new file mode 100644 index 000000000..c1626ccc1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_128x64.c @@ -0,0 +1,191 @@ +/* + + u8g_dev_t6963_128x64.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 16 + + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_128x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_128x64_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_128x64_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_128x64_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_128x64_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_128x64_8bit = { u8g_dev_t6963_128x64_fn, &u8g_dev_t6963_128x64_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x128.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x128.c new file mode 100644 index 000000000..4a28edbcf --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x128.c @@ -0,0 +1,195 @@ +/* + + u8g_dev_t6963_240x128.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 16 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_240x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_240x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_240x128_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_240x128_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_240x128_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_240x128_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_240x128_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_240x128_8bit = { u8g_dev_t6963_240x128_fn, &u8g_dev_t6963_240x128_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x64.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x64.c new file mode 100644 index 000000000..6d209d212 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_t6963_240x64.c @@ -0,0 +1,195 @@ +/* + + u8g_dev_t6963_240x64.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 16 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_240x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_240x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_240x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_240x64_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_240x64_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_240x64_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_240x64_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_240x64_8bit = { u8g_dev_t6963_240x64_fn, &u8g_dev_t6963_240x64_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c new file mode 100644 index 000000000..17689dc4a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c @@ -0,0 +1,115 @@ +/* + + u8g_dev_tls8204_84x48.c + + Display: Nokia 84x48 + + Status: Tested with TLS8204V12 Display by Olimex MOD-LCD3310 + + Contributed: http://code.google.com/p/u8glib/issues/detail?id=126 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 84 +#define HEIGHT 48 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_tls8204_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x04 | !!((66-1)&(1u<<6)), + 0x40 | ((66-2) & ((1u<<6)-1)), + 0x013, /* bias system 1:48 */ + 0x0c0, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_tls8204_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_tls8204_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_WriteByte(u8g, dev, 0x020); /* command mode, extended function set */ + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_tls8204_84x48_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_tls8204_fn, U8G_COM_SW_SPI); + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c new file mode 100644 index 000000000..b7111d5c8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c @@ -0,0 +1,290 @@ +/* + + u8g_dev_uc1610_dogxl160.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 160 +#define HEIGHT 104 + +static const uint8_t u8g_dev_uc1610_dogxl160_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0f1, /* set display height-1 */ + 0x067, /* */ + 0x0c0, /* SEG & COM normal */ + 0x040, /* set display start line */ + 0x050, /* */ + 0x02b, /* set panelloading */ + 0x0eb, /* set bias 1/2 */ + 0x081, /* set contrast */ + 0x05f, /* */ + 0x089, /* set auto increment */ + 0x0a6, /* normal pixel mode */ + 0x0d3, /* 0xd3=40% RMS separation for gray levels */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565, UC1610 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1610_dogxl160_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static uint8_t u8g_dev_1to2(uint8_t n) +{ + register uint8_t a,b,c; + a = n; + a &= 1; + n <<= 1; + b = n; + b &= 4; + n <<= 1; + c = n; + c &= 16; + n <<= 1; + n &= 64; + n |= a; + n |= b; + n |= c; + n |= n << 1; + return n; +} + +uint8_t u8g_dev_uc1610_dogxl160_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + int i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2+1) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] >> 4 ) ); + } + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + int i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+1) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] >> 4 ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+2) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf+WIDTH))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+3) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf+WIDTH))[i] >> 4 ) ); + } + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_WriteSequence(u8g, dev, WIDTH, pb->buf) == 0 ) + return 0; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2+1) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_WriteSequence(u8g, dev, WIDTH, pb->buf+WIDTH) == 0 ) + return 0; + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_bw_sw_spi, WIDTH, HEIGHT, 8, u8g_dev_uc1610_dogxl160_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_bw_hw_spi, WIDTH, HEIGHT, 8, u8g_dev_uc1610_dogxl160_bw_fn, U8G_COM_HW_SPI); + +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_gr_sw_spi, WIDTH, HEIGHT, 4, u8g_dev_uc1610_dogxl160_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_gr_hw_spi, WIDTH, HEIGHT, 4, u8g_dev_uc1610_dogxl160_gr_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1610_dogxl160_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1610_dogxl160_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1610_dogxl160_2x_bw_buf}; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi = { u8g_dev_uc1610_dogxl160_2x_bw_fn, &u8g_dev_uc1610_dogxl160_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi = { u8g_dev_uc1610_dogxl160_2x_bw_fn, &u8g_dev_uc1610_dogxl160_2x_bw_pb, U8G_COM_HW_SPI }; + +uint8_t u8g_dev_uc1610_dogxl160_2x_gr_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1610_dogxl160_2x_gr_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1610_dogxl160_2x_gr_buf}; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi = { u8g_dev_uc1610_dogxl160_2x_gr_fn, &u8g_dev_uc1610_dogxl160_2x_gr_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi = { u8g_dev_uc1610_dogxl160_2x_gr_fn, &u8g_dev_uc1610_dogxl160_2x_gr_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c new file mode 100644 index 000000000..853d8c034 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c @@ -0,0 +1,113 @@ +/* + + u8g_dev_uc1701_dogs102.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 102 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_dogs102_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x040, /* set display start line to 0 */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x027, /* regulator, booster and follower */ + 0x081, /* set contrast */ + 0x00e, /* contrast value, EA default: 0x010, previous value for S102: 0x0e */ + 0x0fa, /* Set Temp compensation */ + 0x090, /* 0.11 deg/c WP Off WC Off*/ + 0x0a4, /* normal display */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565, UC1610 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_dogs102_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_dogs102_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1701_dogs102_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_dogs102_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1701_dogs102_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_dogs102_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c new file mode 100644 index 000000000..55b2f9b71 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c @@ -0,0 +1,114 @@ +/* + + u8g_dev_uc1701_mini12864.c (dealextreme) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_uc1701_mini12864_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a0, /* ADC set to reverse */ + 0x0c8, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x027, /* contrast value */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1701_mini12864_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1701_mini12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1701_mini12864_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1701_mini12864_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ellipse.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ellipse.c new file mode 100644 index 000000000..6c35fdf23 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ellipse.c @@ -0,0 +1,100 @@ +/* + + u8g_ellipse.c + + Utility to draw empty and filled ellipses. + + Universal 8bit Graphics Library + + Copyright (c) 2011, bjthom@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Addition to the U8G Library as of 02/29/12 + Adapted from Bresenham's Algorithm and the following websites: + http://free.pages.at/easyfilter/bresenham.html + http://homepage.smc.edu/kennedy_john/belipse.pdf + +*/ + +#include "u8g.h" + + +#ifdef WORK_IN_PROGRESS + +void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1) +{ + int a = abs(x1 - x0); + int b = abs(y1 - y0); //get diameters + int b1 = b&1; + long dx = 4*(1-a)*b*b; + long dy = 4*(b1+1)*a*a; + long err = dx+dy+b1*a*a; + long e2; + + if (x0 > x1) { x0 = x1; x1 += a; } + if (y0 > y1) { y0 = y1; } + y0 += (b+1)/2; + y1 = y0-b1; + a *= 8*a; + b1 = 8*b*b; + + do { + u8g_DrawPixel(u8g, x1, y0); + u8g_DrawPixel(u8g, x0, y0); + u8g_DrawPixel(u8g, x0, y1); + u8g_DrawPixel(u8g, x1, y1); + e2 = 2*err; + if (e2 >= dx) { + x0++; + x1--; + err += dx += b1; + } + if (e2 <= dy) { + y0++; + y1--; + err += dy += a; + } + } while (x0 <= x1); + + while (y0-y1 < b) { + u8g_DrawPixel(u8g, x0-1, y0); + u8g_DrawPixel(u8g, x1+1, y0++); + u8g_DrawPixel(u8g, x0-1, y1); + u8g_DrawPixel(u8g, x1+1, y1--); + } +} + +void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t xr, u8g_uint_t yr) +{ + u8g_DrawPixel(u8g, x0, y0+yr); + u8g_DrawPixel(u8g, x0, y0-yr); + u8g_DrawPixel(u8g, x0+xr, y0); + u8g_DrawPixel(u8g, x0-xr, y0); +} + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font.c new file mode 100644 index 000000000..bfdc0b28a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font.c @@ -0,0 +1,1422 @@ +/* + + u8g_font.c + + U8G Font High Level Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* font api */ + +/* pointer to the start adress of the glyph, points to progmem area */ +typedef void * u8g_glyph_t; + +/* size of the font data structure, there is no struct or class... */ +#define U8G_FONT_DATA_STRUCT_SIZE 17 + +/* + ... instead the fields of the font data structure are accessed directly by offset + font information + offset + 0 font format + 1 FONTBOUNDINGBOX width unsigned + 2 FONTBOUNDINGBOX height unsigned + 3 FONTBOUNDINGBOX x-offset signed + 4 FONTBOUNDINGBOX y-offset signed + 5 capital A height unsigned + 6 start 'A' + 8 start 'a' + 10 encoding start + 11 encoding end + 12 descent 'g' negative: below baseline + 13 font max ascent + 14 font min decent negative: below baseline + 15 font xascent + 16 font xdecent negative: below baseline + +*/ + +/* use case: What is the width and the height of the minimal box into which string s fints? */ +void u8g_font_GetStrSize(const void *font, const char *s, u8g_uint_t *width, u8g_uint_t *height); +void u8g_font_GetStrSizeP(const void *font, const char *s, u8g_uint_t *width, u8g_uint_t *height); + +/* use case: lower left edge of a minimal box is known, what is the correct x, y position for the string draw procedure */ +void u8g_font_AdjustXYToDraw(const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y); +void u8g_font_AdjustXYToDrawP(const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y); + +/* use case: Baseline origin known, return minimal box */ +void u8g_font_GetStrMinBox(u8g_t *u8g, const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); + +/* procedures */ + +/*========================================================================*/ +/* low level byte and word access */ + +/* removed NOINLINE, because it leads to smaller code, might also be faster */ +//static uint8_t u8g_font_get_byte(const u8g_fntpgm_uint8_t *font, uint8_t offset) U8G_NOINLINE; +static uint8_t u8g_font_get_byte(const u8g_fntpgm_uint8_t *font, uint8_t offset) +{ + font += offset; + return u8g_pgm_read( (u8g_pgm_uint8_t *)font ); +} + +static uint16_t u8g_font_get_word(const u8g_fntpgm_uint8_t *font, uint8_t offset) U8G_NOINLINE; +static uint16_t u8g_font_get_word(const u8g_fntpgm_uint8_t *font, uint8_t offset) +{ + uint16_t pos; + font += offset; + pos = u8g_pgm_read( (u8g_pgm_uint8_t *)font ); + font++; + pos <<= 8; + pos += u8g_pgm_read( (u8g_pgm_uint8_t *)font); + return pos; +} + +/*========================================================================*/ +/* direct access on the font */ + +static uint8_t u8g_font_GetFormat(const u8g_fntpgm_uint8_t *font) U8G_NOINLINE; +static uint8_t u8g_font_GetFormat(const u8g_fntpgm_uint8_t *font) +{ + return u8g_font_get_byte(font, 0); +} + +static uint8_t u8g_font_GetFontGlyphStructureSize(const u8g_fntpgm_uint8_t *font) U8G_NOINLINE; +static uint8_t u8g_font_GetFontGlyphStructureSize(const u8g_fntpgm_uint8_t *font) +{ + switch(u8g_font_GetFormat(font)) + { + case 0: return 6; + case 1: return 3; + } + return 3; +} + +static uint8_t u8g_font_GetBBXWidth(const void *font) +{ + return u8g_font_get_byte(font, 1); +} + +static uint8_t u8g_font_GetBBXHeight(const void *font) +{ + return u8g_font_get_byte(font, 2); +} + +static int8_t u8g_font_GetBBXOffX(const void *font) +{ + return u8g_font_get_byte(font, 3); +} + +static int8_t u8g_font_GetBBXOffY(const void *font) +{ + return u8g_font_get_byte(font, 4); +} + +uint8_t u8g_font_GetCapitalAHeight(const void *font) +{ + return u8g_font_get_byte(font, 5); +} + +uint16_t u8g_font_GetEncoding65Pos(const void *font) U8G_NOINLINE; +uint16_t u8g_font_GetEncoding65Pos(const void *font) +{ + return u8g_font_get_word(font, 6); +} + +uint16_t u8g_font_GetEncoding97Pos(const void *font) U8G_NOINLINE; +uint16_t u8g_font_GetEncoding97Pos(const void *font) +{ + return u8g_font_get_word(font, 8); +} + +uint8_t u8g_font_GetFontStartEncoding(const void *font) +{ + return u8g_font_get_byte(font, 10); +} + +uint8_t u8g_font_GetFontEndEncoding(const void *font) +{ + return u8g_font_get_byte(font, 11); +} + +int8_t u8g_font_GetLowerGDescent(const void *font) +{ + return u8g_font_get_byte(font, 12); +} + +int8_t u8g_font_GetFontAscent(const void *font) +{ + return u8g_font_get_byte(font, 13); +} + +int8_t u8g_font_GetFontDescent(const void *font) +{ + return u8g_font_get_byte(font, 14); +} + +int8_t u8g_font_GetFontXAscent(const void *font) +{ + return u8g_font_get_byte(font, 15); +} + +int8_t u8g_font_GetFontXDescent(const void *font) +{ + return u8g_font_get_byte(font, 16); +} + + +/* return the data start for a font and the glyph pointer */ +static uint8_t *u8g_font_GetGlyphDataStart(const void *font, u8g_glyph_t g) +{ + return ((u8g_fntpgm_uint8_t *)g) + u8g_font_GetFontGlyphStructureSize(font); +} + +/* calculate the overall length of the font, only used to create the picture for the google wiki */ +size_t u8g_font_GetSize(const void *font) +{ + uint8_t *p = (uint8_t *)(font); + uint8_t font_format = u8g_font_GetFormat(font); + uint8_t data_structure_size = u8g_font_GetFontGlyphStructureSize(font); + uint8_t start, end; + uint8_t i; + uint8_t mask = 255; + + start = u8g_font_GetFontStartEncoding(font); + end = u8g_font_GetFontEndEncoding(font); + + if ( font_format == 1 ) + mask = 15; + + p += U8G_FONT_DATA_STRUCT_SIZE; /* skip font general information */ + + i = start; + for(;;) + { + if ( u8g_pgm_read((u8g_pgm_uint8_t *)(p)) == 255 ) + { + p += 1; + } + else + { + p += u8g_pgm_read( ((u8g_pgm_uint8_t *)(p)) + 2 ) & mask; + p += data_structure_size; + } + if ( i == end ) + break; + i++; + } + + return p - (uint8_t *)font; +} + +/*========================================================================*/ +/* u8g interface, font access */ + +uint8_t u8g_GetFontBBXWidth(u8g_t *u8g) +{ + return u8g_font_GetBBXWidth(u8g->font); +} + +uint8_t u8g_GetFontBBXHeight(u8g_t *u8g) +{ + return u8g_font_GetBBXHeight(u8g->font); +} + +int8_t u8g_GetFontBBXOffX(u8g_t *u8g) U8G_NOINLINE; +int8_t u8g_GetFontBBXOffX(u8g_t *u8g) +{ + return u8g_font_GetBBXOffX(u8g->font); +} + +int8_t u8g_GetFontBBXOffY(u8g_t *u8g) U8G_NOINLINE; +int8_t u8g_GetFontBBXOffY(u8g_t *u8g) +{ + return u8g_font_GetBBXOffY(u8g->font); +} + +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g) U8G_NOINLINE; +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g) +{ + return u8g_font_GetCapitalAHeight(u8g->font); +} + +/*========================================================================*/ +/* glyph handling */ + +static void u8g_CopyGlyphDataToCache(u8g_t *u8g, u8g_glyph_t g) +{ + uint8_t tmp; + switch( u8g_font_GetFormat(u8g->font) ) + { + case 0: + /* + format 0 + glyph information + offset + 0 BBX width unsigned + 1 BBX height unsigned + 2 data size unsigned (BBX width + 7)/8 * BBX height + 3 DWIDTH signed + 4 BBX xoffset signed + 5 BBX yoffset signed + byte 0 == 255 indicates empty glyph + */ + u8g->glyph_width = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 0 ); + u8g->glyph_height = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 1 ); + u8g->glyph_dx = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 3 ); + u8g->glyph_x = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 4 ); + u8g->glyph_y = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 5 ); + break; + case 1: + default: + /* +format 1 + 0 BBX xoffset signed --> upper 4 Bit + 0 BBX yoffset signed --> lower 4 Bit + 1 BBX width unsigned --> upper 4 Bit + 1 BBX height unsigned --> lower 4 Bit + 2 data size unsigned -(BBX width + 7)/8 * BBX height --> lower 4 Bit + 2 DWIDTH signed --> upper 4 Bit + byte 0 == 255 indicates empty glyph + */ + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 0 ); + u8g->glyph_y = tmp & 15; + u8g->glyph_y-=2; + tmp >>= 4; + u8g->glyph_x = tmp; + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 1 ); + u8g->glyph_height = tmp & 15; + tmp >>= 4; + u8g->glyph_width = tmp; + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 2 ); + tmp >>= 4; + u8g->glyph_dx = tmp; + + + break; + } +} + +//void u8g_FillEmptyGlyphCache(u8g_t *u8g) U8G_NOINLINE; +static void u8g_FillEmptyGlyphCache(u8g_t *u8g) +{ + u8g->glyph_dx = 0; + u8g->glyph_width = 0; + u8g->glyph_height = 0; + u8g->glyph_x = 0; + u8g->glyph_y = 0; +} + +/* + Find (with some speed optimization) and return a pointer to the glyph data structure + Also uncompress (format 1) and copy the content of the data structure to the u8g structure +*/ +u8g_glyph_t u8g_GetGlyph(u8g_t *u8g, uint8_t requested_encoding) +{ + uint8_t *p = (uint8_t *)(u8g->font); + uint8_t font_format = u8g_font_GetFormat(u8g->font); + uint8_t data_structure_size = u8g_font_GetFontGlyphStructureSize(u8g->font); + uint8_t start, end; + uint16_t pos; + uint8_t i; + uint8_t mask = 255; + + if ( font_format == 1 ) + mask = 15; + + start = u8g_font_GetFontStartEncoding(u8g->font); + end = u8g_font_GetFontEndEncoding(u8g->font); + + pos = u8g_font_GetEncoding97Pos(u8g->font); + if ( requested_encoding >= 97 && pos > 0 ) + { + p+= pos; + start = 97; + } + else + { + pos = u8g_font_GetEncoding65Pos(u8g->font); + if ( requested_encoding >= 65 && pos > 0 ) + { + p+= pos; + start = 65; + } + else + p += U8G_FONT_DATA_STRUCT_SIZE; /* skip font general information */ + } + + if ( requested_encoding > end ) + { + u8g_FillEmptyGlyphCache(u8g); + return NULL; /* not found */ + } + + i = start; + if ( i <= end ) + { + for(;;) + { + if ( u8g_pgm_read((u8g_pgm_uint8_t *)(p)) == 255 ) + { + p += 1; + } + else + { + if ( i == requested_encoding ) + { + u8g_CopyGlyphDataToCache(u8g, p); + return p; + } + p += u8g_pgm_read( ((u8g_pgm_uint8_t *)(p)) + 2 ) & mask; + p += data_structure_size; + } + if ( i == end ) + break; + i++; + } + } + + u8g_FillEmptyGlyphCache(u8g); + + return NULL; +} + +uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding) +{ + if ( u8g_GetGlyph(u8g, requested_encoding) != NULL ) + return 1; + return 0; +} + +int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding) +{ + if ( u8g_GetGlyph(u8g, requested_encoding) == NULL ) + return 0; /* should never happen, so return something */ + return u8g->glyph_dx; +} + + +/*========================================================================*/ +/* glyph drawing procedures */ + +#ifdef OBSOLETE +/* + Draw a glyph + x,y: left baseline position of the glyph +*/ +int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + u8g_glyph_t g; + uint8_t w, h, i, j; + const u8g_pgm_uint8_t *data; + uint8_t bytes_per_line; + u8g_uint_t ix, iy; + + g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + w = u8g->glyph_width; + h = u8g->glyph_height; + + bytes_per_line = w; + bytes_per_line += 7; + bytes_per_line /= 8; + + data = u8g_font_GetGlyphDataStart(u8g->font, g); + + switch(dir) + { + case 0: + x += u8g->glyph_x; + y -= u8g->glyph_y; + y--; + //u8g_DrawFrame(u8g, x, y-h+1, w, h); + if ( u8g_IsBBXIntersection(u8g, x, y-h+1, w, h) == 0 ) + return u8g->glyph_dx; + + iy = y; + iy -= h; + iy++; + + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + ix+=8; + } + iy++; + } + break; + case 1: + x += u8g->glyph_y; + x++; + y += u8g->glyph_x; + //printf("enc %d, dir %d, x %d, y %d, w %d, h %d\n", encoding, dir, x, y, w, h); + //u8g_DrawFrame(u8g, x, y, h, w); + if ( u8g_IsBBXIntersection(u8g, x, y, h, w) == 0 ) + return u8g->glyph_dx; + + ix = x; + ix += h; + ix--; + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + iy+=8; + } + ix--; + } + break; + case 2: + x -= u8g->glyph_x; + y += u8g->glyph_y; + y++; + if ( u8g_IsBBXIntersection(u8g, x-w-1, y, w, h) == 0 ) + return u8g->glyph_dx; + + iy = y; + iy += h; + iy--; + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + ix-=8; + } + iy--; + } + break; + case 3: + x -= u8g->glyph_y; + x--; + y -= u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x-h-1, y-w-1, h, w) == 0 ) + return u8g->glyph_dx; + + ix = x; + ix -= h; + ix++; + + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + iy-=8; + } + ix++; + } + break; + } + return u8g->glyph_dx; +} +#endif + +int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x += u8g->glyph_x; + y -= u8g->glyph_y; + y--; + + if ( u8g_IsBBXIntersection(u8g, x, y-h+1, w, h) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + iy = y; + iy -= h; + iy++; + + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 0, u8g_pgm_read(data)); + data++; + ix+=8; + } + iy++; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + y += u8g->font_calc_vref(u8g); + return u8g_draw_glyph(u8g, x, y, encoding); +} + +int8_t u8g_draw_glyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x += u8g->glyph_y; + x++; + y += u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x, y, h, w) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + ix = x; + ix += h; + ix--; + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 1, u8g_pgm_read(data)); + data++; + iy+=8; + } + ix--; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + x -= u8g->font_calc_vref(u8g); + return u8g_draw_glyph90(u8g, x, y, encoding); +} + + +int8_t u8g_draw_glyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x -= u8g->glyph_x; + y += u8g->glyph_y; + y++; + + if ( u8g_IsBBXIntersection(u8g, x-(w-1), y, w, h) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + iy = y; + iy += h; + iy--; + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 2, u8g_pgm_read(data)); + data++; + ix-=8; + } + iy--; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + y -= u8g->font_calc_vref(u8g); + return u8g_draw_glyph180(u8g, x, y, encoding); +} + + +int8_t u8g_draw_glyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x -= u8g->glyph_y; + x--; + y -= u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x-(h-1), y-(w-1), h, w) == 0 ) + return u8g->glyph_dx; + + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + ix = x; + ix -= h; + ix++; + + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 3, u8g_pgm_read(data)); + data++; + iy-=8; + } + ix++; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + x += u8g->font_calc_vref(u8g); + return u8g_draw_glyph270(u8g, x, y, encoding); +} + + + +#ifdef OBSOLETE +/* + Draw a glyph + x,y: lower left corner of the font bounding box +*/ +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + /* TODO: apply "dir" */ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + return u8g_DrawGlyphDir(u8g, x, y, dir, encoding); +} +#endif + +/*========================================================================*/ +/* string drawing procedures */ + + +u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + //u8g_uint_t u8g_GetStrWidth(u8g, s); + //u8g_font_GetFontAscent(u8g->font)-u8g_font_GetFontDescent(u8g->font); + + y += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph(u8g, x, y, *s); + x += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph90(u8g, x, y, *s); + y += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + y -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph180(u8g, x, y, *s); + x -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph270(u8g, x, y, *s); + y -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s) +{ + switch(dir) + { + case 0: + return u8g_DrawStr(u8g, x, y, s); + case 1: + return u8g_DrawStr90(u8g, x, y, s); + case 2: + return u8g_DrawStr180(u8g, x, y, s); + case 3: + return u8g_DrawStr270(u8g, x, y, s); + } + return 0; +} + +u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + uint8_t c; + + y += u8g->font_calc_vref(u8g); + + for(;;) + { + c = u8g_pgm_read(s); + if ( c == '\0' ) + break; + d = u8g_draw_glyph(u8g, x, y, c); + x += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph90(u8g, x, y, u8g_pgm_read(s)); + y += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + y -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph180(u8g, x, y, u8g_pgm_read(s)); + x -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph270(u8g, x, y, u8g_pgm_read(s)); + y -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s) +{ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + return u8g_DrawStrDir(u8g, x, y, dir, s); +} + +/* still used by picgen.c, dir argument is ignored */ +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + u8g_draw_glyph(u8g, x, y, encoding); +} + + +/*========================================================================*/ +/* set ascent/descent for reference point calculation */ + +void u8g_UpdateRefHeight(u8g_t *u8g) +{ + uint16_t ls; + if ( u8g->font == NULL ) + return; + if ( u8g->font_height_mode == U8G_FONT_HEIGHT_MODE_TEXT ) + { + u8g->font_ref_ascent = u8g_font_GetCapitalAHeight(u8g->font); + u8g->font_ref_descent = u8g_font_GetLowerGDescent(u8g->font); + } + else if ( u8g->font_height_mode == U8G_FONT_HEIGHT_MODE_XTEXT ) + { + u8g->font_ref_ascent = u8g_font_GetFontXAscent(u8g->font); + u8g->font_ref_descent = u8g_font_GetFontXDescent(u8g->font); + } + else + { + u8g->font_ref_ascent = u8g_font_GetFontAscent(u8g->font); + u8g->font_ref_descent = u8g_font_GetFontDescent(u8g->font); + } + + ls = u8g->font_ref_ascent - u8g->font_ref_descent; + if ( u8g->font_line_spacing_factor != 64 ) + { + ls &= 255; + ls *= u8g->font_line_spacing_factor; + ls >>= 6; + } + u8g->line_spacing = ls; +} + +void u8g_SetFontRefHeightText(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_TEXT; + u8g_UpdateRefHeight(u8g); +} + +void u8g_SetFontRefHeightExtendedText(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_XTEXT; + u8g_UpdateRefHeight(u8g); +} + + +void u8g_SetFontRefHeightAll(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_ALL; + u8g_UpdateRefHeight(u8g); +} + +/* factor = 64: linespaceing == ascent and descent */ +void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor) +{ + u8g->font_line_spacing_factor = factor; + u8g_UpdateRefHeight(u8g); +} + + + +/*========================================================================*/ +/* callback procedures to correct the y position */ + +u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g) +{ + return 0; +} + +void u8g_SetFontPosBaseline(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_font; +} + + +u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g) +{ + /* y += (u8g_uint_t)(u8g_int_t)(u8g->font_ref_descent); */ + return (u8g_uint_t)(u8g_int_t)(u8g->font_ref_descent); +} + +void u8g_SetFontPosBottom(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_bottom; +} + +u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g) +{ + u8g_uint_t tmp; + /* reference pos is one pixel above the upper edge of the reference glyph */ + + /* + y += (u8g_uint_t)(u8g_int_t)(u8g->font_ref_ascent); + y++; + */ + tmp = (u8g_uint_t)(u8g_int_t)(u8g->font_ref_ascent); + tmp++; + return tmp; +} + +void u8g_SetFontPosTop(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_top; +} + +u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g) +{ + int8_t tmp; + tmp = u8g->font_ref_ascent; + tmp -= u8g->font_ref_descent; + tmp /= 2; + tmp += u8g->font_ref_descent; + /* y += (u8g_uint_t)(u8g_int_t)(tmp); */ + return tmp; +} + +void u8g_SetFontPosCenter(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_center; +} + +/*========================================================================*/ +/* string pixel width calculation */ + +char u8g_font_get_char(const void *s) +{ + return *(const char *)(s); +} + +char u8g_font_get_charP(const void *s) +{ + return u8g_pgm_read(s); +} + +typedef char (*u8g_font_get_char_fn)(const void *s); + + +u8g_uint_t u8g_font_calc_str_pixel_width(u8g_t *u8g, const char *s, u8g_font_get_char_fn get_char ) +{ + u8g_uint_t w; + uint8_t enc; + + /* reset the total minimal width to zero, this will be expanded during calculation */ + w = 0; + + enc = get_char(s); + + /* check for empty string, width is already 0 */ + if ( enc == '\0' ) + { + return w; + } + + /* get the glyph information of the first char. This must be valid, because we already checked for the empty string */ + /* if *s is not inside the font, then the cached parameters of the glyph are all zero */ + u8g_GetGlyph(u8g, enc); + + /* strlen(s) == 1: width = width(s[0]) */ + /* strlen(s) == 2: width = - offx(s[0]) + deltax(s[0]) + offx(s[1]) + width(s[1]) */ + /* strlen(s) == 3: width = - offx(s[0]) + deltax(s[0]) + deltax(s[1]) + offx(s[2]) + width(s[2]) */ + + /* assume that the string has size 2 or more, than start with negative offset-x */ + /* for string with size 1, this will be nullified after the loop */ + w = -u8g->glyph_x; + for(;;) + { + + /* check and stop if the end of the string is reached */ + s++; + if ( get_char(s) == '\0' ) + break; + + /* if there are still more characters, add the delta to the next glyph */ + w += u8g->glyph_dx; + + /* store the encoding in a local variable, used also after the for(;;) loop */ + enc = get_char(s); + + /* load the next glyph information */ + u8g_GetGlyph(u8g, enc); + } + + /* finally calculate the width of the last char */ + /* here is another exception, if the last char is a black, use the dx value instead */ + if ( enc != ' ' ) + { + /* if g was not updated in the for loop (strlen() == 1), then the initial offset x gets removed */ + w += u8g->glyph_width; + w += u8g->glyph_x; + } + else + { + w += u8g->glyph_dx; + } + + + return w; +} + +u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s) +{ + return u8g_font_calc_str_pixel_width(u8g, s, u8g_font_get_char); +} + +u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + return u8g_font_calc_str_pixel_width(u8g, (const char *)s, u8g_font_get_charP); +} + +int8_t u8g_GetStrX(u8g_t *u8g, const char *s) +{ + u8g_GetGlyph(u8g, *s); + return u8g->glyph_x; +} + +int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + u8g_GetGlyph(u8g, u8g_pgm_read(s)); + return u8g->glyph_x; +} + +/*========================================================================*/ +/* string width calculation */ + +u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s) +{ + u8g_uint_t w; + uint8_t encoding; + + /* reset the total width to zero, this will be expanded during calculation */ + w = 0; + + for(;;) + { + encoding = *s; + if ( encoding == 0 ) + break; + + /* load glyph information */ + u8g_GetGlyph(u8g, encoding); + w += u8g->glyph_dx; + + /* goto next char */ + s++; + } + + return w; +} + + +u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t w; + uint8_t encoding; + + /* reset the total width to zero, this will be expanded during calculation */ + w = 0; + + for(;;) + { + encoding = u8g_pgm_read(s); + if ( encoding == 0 ) + break; + + /* load glyph information */ + u8g_GetGlyph(u8g, encoding); + w += u8g->glyph_dx; + + /* goto next char */ + s++; + } + + return w; +} + + +/*========================================================================*/ +/* calculation of font/glyph/string characteristics */ + + +/* + Description: + Calculate parameter for the minimal bounding box on a given string + Output + buf->y_min extend of the lower left edge if the string below (y_min<0) or above (y_min>0) baseline (descent) + buf->y_max extend of the upper left edge if the string below (y_min<0) or above (y_min>0) baseline (ascent) + buf->w the width of the string +*/ +struct u8g_str_size_struct +{ + int8_t y_min; /* descent */ + int8_t y_max; /* ascent */ + int8_t x, y; /* the reference point of the font (negated!) */ + u8g_uint_t w; /* width of the overall string */ +}; +typedef struct u8g_str_size_struct u8g_str_size_t; + +static void u8g_font_calc_str_min_box(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + /* u8g_glyph_t g; */ + int8_t tmp; + + /* reset the total minimal width to zero, this will be expanded during calculation */ + buf->w = 0; + + /* check for empty string, width is already 0, but also reset y_min and y_max to 0 */ + if ( *s == '\0' ) + { + buf->y_min = 0; + buf->y_max = 0; + buf->x = 0; + buf->y = 0; + return; + } + + /* reset y_min to the largest possible value. Later we search for the smallest value */ + /* y_min contains the position [pixel] of the lower left edge of the glyph above (y_min>0) or below (y_min<0) baseline */ + buf->y_min = 127; + /* reset y_max to the smallest possible value. Later we search for the highest value */ + /* y_max contains the position [pixel] of the upper left edge of the glyph above (y_max>0) or below (y_max<0) baseline */ + buf->y_max = -128; + + /* get the glyph information of the first char. This must be valid, because we already checked for the empty string */ + u8g_GetGlyph(u8g, *s); + + /* strlen(s) == 1: width = width(s[0]) */ + /* strlen(s) == 2: width = - offx(s[0]) + deltax(s[0]) + offx(s[1]) + width(s[1]) */ + /* strlen(s) == 3: width = - offx(s[0]) + deltax(s[0]) + deltax(s[1]) + offx(s[2]) + width(s[2]) */ + + /* assume that the string has size 2 or more, than start with negative offset-x */ + /* for string with size 1, this will be nullified after the loop */ + // buf->w = - u8g_font_GetGlyphBBXOffX(u8g->font, g); + buf->w = - u8g->glyph_x; + + /* Also copy the position of the first glyph. This is the reference point of the string (negated) */ + buf->x = u8g->glyph_x; + buf->y = u8g->glyph_y; + + for(;;) + { + + /* calculated y position of the upper left corner (y_max) and lower left corner (y_min) of the string */ + /* relative to the base line */ + + tmp = u8g->glyph_y; + if ( buf->y_min > tmp ) + buf->y_min = tmp; + + tmp +=u8g->glyph_height; + if ( buf->y_max < tmp ) + buf->y_max = tmp; + + /* check and stop if the end of the string is reached */ + s++; + if ( *s == '\0' ) + break; + + /* if there are still more characters, add the delta to the next glyph */ + buf->w += u8g->glyph_dx; + + /* load the next glyph information */ + u8g_GetGlyph(u8g, *s); + } + + /* finally calculate the width of the last char */ + /* if g was not updated in the for loop (strlen() == 1), then the initial offset x gets removed */ + buf->w += u8g->glyph_width; + // buf->w += u8g_font_GetGlyphBBXOffX(u8g->font, g); + + buf->w += u8g->glyph_x; +} + +/* calculate minimal box */ +void u8g_font_box_min(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + u8g_font_calc_str_min_box(u8g, s, buf); +} + +/* calculate gA box, but do not calculate the overall width */ +void u8g_font_box_left_gA(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + +} + +/* calculate gA box, including overall width */ +void u8g_font_box_all_gA(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + +} + + +static void u8g_font_get_str_box_fill_args(u8g_t *u8g, const char *s, u8g_str_size_t *buf, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + /* + u8g_glyph_t g; + g = + */ + u8g_GetGlyph(u8g, *s); + *x += u8g->glyph_x; + *width = buf->w; + *y -= buf->y_max; + /* +1 because y_max is a height, this compensates the next step */ + //*y += 1; + /* because the reference point is one below the string, this compensates the previous step */ + //*y -= 1; + *height = buf->y_max; + *height -= buf->y_min; +} + + +void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + u8g_str_size_t buf; + + if ( *s == '\0' ) + { + *width= 0; + *height = 0; + return; + } + + u8g_font_calc_str_min_box(u8g, s, &buf); + u8g_font_get_str_box_fill_args(u8g, s, &buf, x, y, width, height); +} + + +void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + u8g_str_size_t buf; + uint8_t cap_a; + + if ( *s == '\0' ) + { + *width= 0; + *height = 0; + return; + } + + cap_a = u8g_font_GetCapitalAHeight(u8g->font); + u8g_font_calc_str_min_box(u8g, s, &buf); + if ( buf.y_max < cap_a ) + buf.y_max = cap_a; + u8g_font_get_str_box_fill_args(u8g, s, &buf, x, y, width, height); +} + +void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font) +{ + if ( u8g->font != font ) + { + u8g->font = font; + u8g_UpdateRefHeight(u8g); + u8g_SetFontPosBaseline(u8g); + } +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font_data.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font_data.c new file mode 100644 index 000000000..dca21c5a3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_font_data.c @@ -0,0 +1,84486 @@ +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03b[826] U8G_SECTION(".progmem.u8g_font_04b_03b") = { + 1,5,6,0,255,5,0,250,1,240,32,255,255,5,255,5, + 255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80, + 224,2,85,101,200,208,32,88,152,2,85,101,224,128,248,144, + 240,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 85,101,8,16,32,64,128,2,69,85,240,144,144,144,240,2, + 37,53,192,64,64,64,64,2,69,85,240,16,240,128,240,2, + 69,85,240,16,240,16,240,2,69,85,144,144,144,240,16,2, + 69,85,240,128,240,16,240,2,69,85,224,128,240,144,240,2, + 69,85,240,16,32,64,64,2,69,85,240,144,240,144,240,2, + 69,85,240,144,240,16,112,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,69,85,240,16,112, + 0,64,2,85,101,248,136,184,168,240,2,69,85,240,144,240, + 144,144,2,69,85,224,160,240,144,240,2,69,85,240,128,128, + 128,240,2,69,85,224,144,144,144,224,2,69,85,240,128,240, + 128,240,2,69,85,240,128,240,128,128,2,69,85,240,128,176, + 144,240,2,69,85,144,144,240,144,144,2,53,69,224,64,64, + 64,224,2,69,85,48,16,16,144,240,2,69,85,144,144,224, + 144,144,2,69,85,128,128,128,128,240,2,85,101,248,168,168, + 168,168,2,69,85,144,208,176,144,144,2,69,85,240,144,144, + 144,240,2,69,85,240,144,144,240,128,2,69,85,240,144,144, + 176,240,2,69,85,240,144,240,160,176,2,69,85,240,128,240, + 16,240,2,53,69,224,64,64,64,64,2,69,85,144,144,144, + 144,240,2,69,85,144,144,160,160,64,2,85,101,168,168,168, + 168,248,2,69,85,144,144,96,144,144,2,69,85,144,144,240, + 16,240,2,69,85,240,16,96,128,240,2,37,53,192,128,128, + 128,192,2,85,101,128,64,32,16,8,2,37,53,192,64,64, + 64,192,5,50,66,64,160,2,65,81,240,5,34,50,128,64, + 2,67,83,112,144,240,2,68,84,128,240,144,240,2,51,67, + 224,128,224,2,68,84,16,240,144,240,2,67,83,240,160,112, + 2,68,84,112,64,240,64,1,68,84,240,144,240,32,2,68, + 84,128,240,144,144,2,20,36,128,0,128,128,1,21,37,128, + 0,128,128,128,2,68,84,128,144,224,144,2,20,36,128,128, + 128,128,2,83,99,248,168,168,2,67,83,240,144,144,2,67, + 83,240,144,240,1,68,84,240,144,240,128,1,68,84,240,144, + 240,16,2,51,67,224,128,128,2,67,83,240,64,240,2,52, + 68,64,224,64,96,2,67,83,144,144,240,2,67,83,144,144, + 96,2,83,99,168,168,248,2,51,67,160,64,160,1,68,84, + 144,144,240,16,2,67,83,240,32,240,2,53,69,96,64,128, + 64,96,2,21,37,128,128,128,128,128,2,53,69,192,64,32, + 64,192,5,66,82,80,160,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,2,0,64,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03bn[130] U8G_SECTION(".progmem.u8g_font_04b_03bn") = { + 1,5,6,0,255,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32, + 64,128,2,69,85,240,144,144,144,240,2,37,53,192,64,64, + 64,64,2,69,85,240,16,240,128,240,2,69,85,240,16,240, + 16,240,2,69,85,144,144,144,240,16,2,69,85,240,128,240, + 16,240,2,69,85,224,128,240,144,240,2,69,85,240,16,32, + 64,64,2,69,85,240,144,240,144,240,2,69,85,240,144,240, + 16,112}; +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03br[696] U8G_SECTION(".progmem.u8g_font_04b_03br") = { + 1,5,6,0,255,5,0,250,1,240,32,127,255,5,255,5, + 255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80, + 224,2,85,101,200,208,32,88,152,2,85,101,224,128,248,144, + 240,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 85,101,8,16,32,64,128,2,69,85,240,144,144,144,240,2, + 37,53,192,64,64,64,64,2,69,85,240,16,240,128,240,2, + 69,85,240,16,240,16,240,2,69,85,144,144,144,240,16,2, + 69,85,240,128,240,16,240,2,69,85,224,128,240,144,240,2, + 69,85,240,16,32,64,64,2,69,85,240,144,240,144,240,2, + 69,85,240,144,240,16,112,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,69,85,240,16,112, + 0,64,2,85,101,248,136,184,168,240,2,69,85,240,144,240, + 144,144,2,69,85,224,160,240,144,240,2,69,85,240,128,128, + 128,240,2,69,85,224,144,144,144,224,2,69,85,240,128,240, + 128,240,2,69,85,240,128,240,128,128,2,69,85,240,128,176, + 144,240,2,69,85,144,144,240,144,144,2,53,69,224,64,64, + 64,224,2,69,85,48,16,16,144,240,2,69,85,144,144,224, + 144,144,2,69,85,128,128,128,128,240,2,85,101,248,168,168, + 168,168,2,69,85,144,208,176,144,144,2,69,85,240,144,144, + 144,240,2,69,85,240,144,144,240,128,2,69,85,240,144,144, + 176,240,2,69,85,240,144,240,160,176,2,69,85,240,128,240, + 16,240,2,53,69,224,64,64,64,64,2,69,85,144,144,144, + 144,240,2,69,85,144,144,160,160,64,2,85,101,168,168,168, + 168,248,2,69,85,144,144,96,144,144,2,69,85,144,144,240, + 16,240,2,69,85,240,16,96,128,240,2,37,53,192,128,128, + 128,192,2,85,101,128,64,32,16,8,2,37,53,192,64,64, + 64,192,5,50,66,64,160,2,65,81,240,5,34,50,128,64, + 2,67,83,112,144,240,2,68,84,128,240,144,240,2,51,67, + 224,128,224,2,68,84,16,240,144,240,2,67,83,240,160,112, + 2,68,84,112,64,240,64,1,68,84,240,144,240,32,2,68, + 84,128,240,144,144,2,20,36,128,0,128,128,1,21,37,128, + 0,128,128,128,2,68,84,128,144,224,144,2,20,36,128,128, + 128,128,2,83,99,248,168,168,2,67,83,240,144,144,2,67, + 83,240,144,240,1,68,84,240,144,240,128,1,68,84,240,144, + 240,16,2,51,67,224,128,128,2,67,83,240,64,240,2,52, + 68,64,224,64,96,2,67,83,144,144,240,2,67,83,144,144, + 96,2,83,99,168,168,248,2,51,67,160,64,160,1,68,84, + 144,144,240,16,2,67,83,240,32,240,2,53,69,96,64,128, + 64,96,2,21,37,128,128,128,128,128,2,53,69,192,64,32, + 64,192,5,66,82,80,160,255}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 5 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03[859] U8G_SECTION(".progmem.u8g_font_04b_03") = { + 1,5,7,0,254,5,0,251,1,242,32,255,254,5,254,5, + 254,2,0,64,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,1,70,86,32,112,192,48, + 224,32,2,85,101,144,16,32,64,72,2,85,101,96,128,104, + 144,104,5,18,34,128,128,2,37,53,64,128,128,128,64,2, + 37,53,128,64,64,64,128,4,51,67,160,64,160,3,51,67, + 64,224,64,1,34,50,64,128,4,49,65,224,2,17,33,128, + 2,85,101,8,16,32,64,128,2,69,85,96,144,144,144,96, + 2,37,53,192,64,64,64,64,2,69,85,224,16,96,128,240, + 2,69,85,224,16,96,16,224,2,69,85,32,96,160,240,32, + 2,69,85,240,128,224,16,224,2,69,85,96,128,224,144,96, + 2,69,85,240,16,32,64,64,2,69,85,96,144,96,144,96, + 2,69,85,96,144,112,16,96,3,19,35,128,0,128,2,20, + 36,128,0,128,128,2,53,69,32,64,128,64,32,3,51,67, + 224,0,224,2,53,69,128,64,32,64,128,2,69,85,224,16, + 96,0,64,2,85,101,112,136,184,168,112,2,69,85,96,144, + 144,240,144,2,69,85,224,144,224,144,224,2,53,69,96,128, + 128,128,96,2,69,85,224,144,144,144,224,2,53,69,224,128, + 224,128,224,2,53,69,224,128,224,128,128,2,69,85,112,128, + 176,144,112,2,69,85,144,144,240,144,144,2,53,69,224,64, + 64,64,224,2,69,85,48,16,16,144,96,2,69,85,144,160, + 192,160,144,2,53,69,128,128,128,128,224,2,85,101,136,216, + 168,136,136,2,69,85,144,208,176,144,144,2,69,85,96,144, + 144,144,96,2,69,85,224,144,144,224,128,1,70,86,96,144, + 144,144,96,16,2,69,85,224,144,144,224,144,2,69,85,112, + 128,96,16,224,2,53,69,224,64,64,64,64,2,69,85,144, + 144,144,144,96,2,69,85,144,144,160,160,64,2,85,101,136, + 168,168,168,80,2,69,85,144,144,96,144,144,2,69,85,144, + 144,112,16,96,2,53,69,224,32,64,128,224,2,37,53,192, + 128,128,128,192,2,85,101,128,64,32,16,8,2,37,53,192, + 64,64,64,192,5,50,66,64,160,2,65,81,240,5,34,50, + 128,64,2,68,84,112,144,144,112,2,69,85,128,224,144,144, + 224,2,52,68,96,128,128,96,2,69,85,16,112,144,144,112, + 2,68,84,96,176,192,96,2,53,69,32,64,224,64,64,0, + 70,86,112,144,144,112,16,96,2,69,85,128,224,144,144,144, + 2,21,37,128,0,128,128,128,0,39,55,64,0,64,64,64, + 64,128,2,69,85,128,144,160,224,144,2,21,37,128,128,128, + 128,128,2,84,100,240,168,168,168,2,68,84,224,144,144,144, + 2,68,84,96,144,144,96,0,70,86,224,144,144,224,128,128, + 0,70,86,112,144,144,112,16,16,2,52,68,160,192,128,128, + 2,68,84,112,192,48,224,2,53,69,64,224,64,64,32,2, + 68,84,144,144,144,112,2,68,84,144,144,160,64,2,84,100, + 168,168,80,80,2,52,68,160,64,64,160,0,70,86,144,144, + 144,112,16,96,2,68,84,240,32,64,240,2,53,69,96,64, + 128,64,96,2,21,37,128,128,128,128,128,2,53,69,192,64, + 32,64,192,5,66,82,80,160,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,2,0,64,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03n[130] U8G_SECTION(".progmem.u8g_font_04b_03n") = { + 1,5,7,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32, + 64,128,2,69,85,96,144,144,144,96,2,37,53,192,64,64, + 64,64,2,69,85,224,16,96,128,240,2,69,85,224,16,96, + 16,224,2,69,85,32,96,160,240,32,2,69,85,240,128,224, + 16,224,2,69,85,96,128,224,144,96,2,69,85,240,16,32, + 64,64,2,69,85,96,144,96,144,96,2,69,85,96,144,112, + 16,96}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 5 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03r[729] U8G_SECTION(".progmem.u8g_font_04b_03r") = { + 1,5,7,0,254,5,0,251,1,242,32,127,254,5,254,5, + 254,2,0,64,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,1,70,86,32,112,192,48, + 224,32,2,85,101,144,16,32,64,72,2,85,101,96,128,104, + 144,104,5,18,34,128,128,2,37,53,64,128,128,128,64,2, + 37,53,128,64,64,64,128,4,51,67,160,64,160,3,51,67, + 64,224,64,1,34,50,64,128,4,49,65,224,2,17,33,128, + 2,85,101,8,16,32,64,128,2,69,85,96,144,144,144,96, + 2,37,53,192,64,64,64,64,2,69,85,224,16,96,128,240, + 2,69,85,224,16,96,16,224,2,69,85,32,96,160,240,32, + 2,69,85,240,128,224,16,224,2,69,85,96,128,224,144,96, + 2,69,85,240,16,32,64,64,2,69,85,96,144,96,144,96, + 2,69,85,96,144,112,16,96,3,19,35,128,0,128,2,20, + 36,128,0,128,128,2,53,69,32,64,128,64,32,3,51,67, + 224,0,224,2,53,69,128,64,32,64,128,2,69,85,224,16, + 96,0,64,2,85,101,112,136,184,168,112,2,69,85,96,144, + 144,240,144,2,69,85,224,144,224,144,224,2,53,69,96,128, + 128,128,96,2,69,85,224,144,144,144,224,2,53,69,224,128, + 224,128,224,2,53,69,224,128,224,128,128,2,69,85,112,128, + 176,144,112,2,69,85,144,144,240,144,144,2,53,69,224,64, + 64,64,224,2,69,85,48,16,16,144,96,2,69,85,144,160, + 192,160,144,2,53,69,128,128,128,128,224,2,85,101,136,216, + 168,136,136,2,69,85,144,208,176,144,144,2,69,85,96,144, + 144,144,96,2,69,85,224,144,144,224,128,1,70,86,96,144, + 144,144,96,16,2,69,85,224,144,144,224,144,2,69,85,112, + 128,96,16,224,2,53,69,224,64,64,64,64,2,69,85,144, + 144,144,144,96,2,69,85,144,144,160,160,64,2,85,101,136, + 168,168,168,80,2,69,85,144,144,96,144,144,2,69,85,144, + 144,112,16,96,2,53,69,224,32,64,128,224,2,37,53,192, + 128,128,128,192,2,85,101,128,64,32,16,8,2,37,53,192, + 64,64,64,192,5,50,66,64,160,2,65,81,240,5,34,50, + 128,64,2,68,84,112,144,144,112,2,69,85,128,224,144,144, + 224,2,52,68,96,128,128,96,2,69,85,16,112,144,144,112, + 2,68,84,96,176,192,96,2,53,69,32,64,224,64,64,0, + 70,86,112,144,144,112,16,96,2,69,85,128,224,144,144,144, + 2,21,37,128,0,128,128,128,0,39,55,64,0,64,64,64, + 64,128,2,69,85,128,144,160,224,144,2,21,37,128,128,128, + 128,128,2,84,100,240,168,168,168,2,68,84,224,144,144,144, + 2,68,84,96,144,144,96,0,70,86,224,144,144,224,128,128, + 0,70,86,112,144,144,112,16,16,2,52,68,160,192,128,128, + 2,68,84,112,192,48,224,2,53,69,64,224,64,64,32,2, + 68,84,144,144,144,112,2,68,84,144,144,160,64,2,84,100, + 168,168,80,80,2,52,68,160,64,64,160,0,70,86,144,144, + 144,112,16,96,2,68,84,240,32,64,240,2,53,69,96,64, + 128,64,96,2,21,37,128,128,128,128,128,2,53,69,192,64, + 32,64,192,5,66,82,80,160,255}; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 6 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24[912] U8G_SECTION(".progmem.u8g_font_04b_24") = { + 1,5,6,0,255,5,0,250,1,241,32,255,0,5,255,5, + 0,2,0,32,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,53,69,64,224,64,224,64,2,53,69,96,192,64,96, + 192,2,53,69,160,32,64,128,160,2,69,85,96,128,112,160, + 96,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 53,69,32,32,64,128,128,2,53,69,224,160,160,160,224,2, + 37,53,192,64,64,64,64,2,53,69,224,32,224,128,224,2, + 53,69,224,32,224,32,224,2,53,69,160,160,160,224,32,2, + 53,69,224,128,224,32,224,2,53,69,128,224,160,160,224,2, + 53,69,224,32,32,64,128,2,53,69,224,160,224,160,224,2, + 53,69,224,160,160,224,32,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,53,69,224,32,96, + 0,64,2,85,101,112,136,232,168,96,2,53,69,224,160,160, + 224,160,2,53,69,224,160,224,160,224,2,53,69,224,128,128, + 128,224,2,53,69,192,160,160,160,224,2,53,69,224,128,224, + 128,224,2,53,69,224,128,224,128,128,2,53,69,224,128,160, + 160,224,2,53,69,160,160,224,160,160,2,21,37,128,128,128, + 128,128,2,53,69,32,32,160,160,224,2,53,69,160,160,192, + 160,160,2,53,69,128,128,128,128,224,2,53,69,160,224,160, + 160,160,2,53,69,224,160,160,160,160,2,53,69,224,160,160, + 160,224,2,53,69,224,160,160,224,128,1,54,70,224,160,160, + 160,224,64,2,53,69,224,160,160,192,160,2,53,69,224,128, + 224,32,224,2,53,69,224,64,64,64,64,2,53,69,160,160, + 160,160,224,2,53,69,160,160,160,160,192,2,53,69,160,160, + 160,224,160,2,53,69,160,160,64,160,160,2,53,69,160,160, + 64,64,64,2,53,69,224,32,64,128,224,2,37,53,192,128, + 128,128,192,2,53,69,128,128,64,32,32,2,37,53,192,64, + 64,64,192,5,50,66,64,160,2,49,65,224,5,34,50,128, + 64,2,53,69,64,160,160,224,160,2,53,69,192,160,192,160, + 192,2,53,69,96,128,128,128,96,2,53,69,192,160,160,160, + 192,2,53,69,96,128,224,128,96,2,53,69,96,128,224,128, + 128,2,53,69,96,128,160,160,96,2,53,69,160,160,224,160, + 160,2,21,37,128,128,128,128,128,2,53,69,32,32,160,160, + 64,2,53,69,160,160,192,160,160,2,53,69,128,128,128,128, + 96,2,53,69,160,224,160,160,160,2,53,69,192,160,160,160, + 160,2,53,69,64,160,160,160,64,2,53,69,192,160,160,192, + 128,1,54,70,64,160,160,160,64,64,2,53,69,192,160,160, + 192,160,2,53,69,96,128,64,32,192,2,53,69,224,64,64, + 64,64,2,53,69,160,160,160,160,64,2,53,69,160,160,160, + 160,192,2,53,69,160,160,160,224,160,2,53,69,160,160,64, + 160,160,2,53,69,160,160,64,64,64,2,53,69,224,32,64, + 128,224,2,53,69,96,64,192,64,96,2,21,37,128,128,128, + 128,128,2,53,69,192,64,96,64,192,6,33,49,192,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 2,37,53,128,64,64,64,64,2,53,69,160,160,160,96,32, + 2,53,69,192,32,192,32,192,255,255,255,2,53,69,128,192, + 160,160,64,255,255,2,53,69,64,160,160,96,32,255,255,255, + 255,255,255,255,255,255,255,255,2,53,69,224,32,32,64,128, + 255,255,255,2,53,69,64,160,160,160,64,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 + }; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24n[130] U8G_SECTION(".progmem.u8g_font_04b_24n") = { + 1,5,6,0,255,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,53,69,32,32,64, + 128,128,2,53,69,224,160,160,160,224,2,37,53,192,64,64, + 64,64,2,53,69,224,32,224,128,224,2,53,69,224,32,224, + 32,224,2,53,69,160,160,160,224,32,2,53,69,224,128,224, + 32,224,2,53,69,128,224,160,160,224,2,53,69,224,32,32, + 64,128,2,53,69,224,160,224,160,224,2,53,69,224,160,160, + 224,32}; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 6 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24r[735] U8G_SECTION(".progmem.u8g_font_04b_24r") = { + 1,5,6,0,255,5,0,250,1,241,32,127,0,5,255,5, + 0,2,0,32,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,53,69,64,224,64,224,64,2,53,69,96,192,64,96, + 192,2,53,69,160,32,64,128,160,2,69,85,96,128,112,160, + 96,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 53,69,32,32,64,128,128,2,53,69,224,160,160,160,224,2, + 37,53,192,64,64,64,64,2,53,69,224,32,224,128,224,2, + 53,69,224,32,224,32,224,2,53,69,160,160,160,224,32,2, + 53,69,224,128,224,32,224,2,53,69,128,224,160,160,224,2, + 53,69,224,32,32,64,128,2,53,69,224,160,224,160,224,2, + 53,69,224,160,160,224,32,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,53,69,224,32,96, + 0,64,2,85,101,112,136,232,168,96,2,53,69,224,160,160, + 224,160,2,53,69,224,160,224,160,224,2,53,69,224,128,128, + 128,224,2,53,69,192,160,160,160,224,2,53,69,224,128,224, + 128,224,2,53,69,224,128,224,128,128,2,53,69,224,128,160, + 160,224,2,53,69,160,160,224,160,160,2,21,37,128,128,128, + 128,128,2,53,69,32,32,160,160,224,2,53,69,160,160,192, + 160,160,2,53,69,128,128,128,128,224,2,53,69,160,224,160, + 160,160,2,53,69,224,160,160,160,160,2,53,69,224,160,160, + 160,224,2,53,69,224,160,160,224,128,1,54,70,224,160,160, + 160,224,64,2,53,69,224,160,160,192,160,2,53,69,224,128, + 224,32,224,2,53,69,224,64,64,64,64,2,53,69,160,160, + 160,160,224,2,53,69,160,160,160,160,192,2,53,69,160,160, + 160,224,160,2,53,69,160,160,64,160,160,2,53,69,160,160, + 64,64,64,2,53,69,224,32,64,128,224,2,37,53,192,128, + 128,128,192,2,53,69,128,128,64,32,32,2,37,53,192,64, + 64,64,192,5,50,66,64,160,2,49,65,224,5,34,50,128, + 64,2,53,69,64,160,160,224,160,2,53,69,192,160,192,160, + 192,2,53,69,96,128,128,128,96,2,53,69,192,160,160,160, + 192,2,53,69,96,128,224,128,96,2,53,69,96,128,224,128, + 128,2,53,69,96,128,160,160,96,2,53,69,160,160,224,160, + 160,2,21,37,128,128,128,128,128,2,53,69,32,32,160,160, + 64,2,53,69,160,160,192,160,160,2,53,69,128,128,128,128, + 96,2,53,69,160,224,160,160,160,2,53,69,192,160,160,160, + 160,2,53,69,64,160,160,160,64,2,53,69,192,160,160,192, + 128,1,54,70,64,160,160,160,64,64,2,53,69,192,160,160, + 192,160,2,53,69,96,128,64,32,192,2,53,69,224,64,64, + 64,64,2,53,69,160,160,160,160,64,2,53,69,160,160,160, + 160,192,2,53,69,160,160,160,224,160,2,53,69,160,160,64, + 160,160,2,53,69,160,160,64,64,64,2,53,69,224,32,64, + 128,224,2,53,69,96,64,192,64,96,2,21,37,128,128,128, + 128,128,2,53,69,192,64,96,64,192,6,33,49,192,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 13 + Calculated Max Values w=10 h=20 x= 9 y=13 dx=10 dy= 0 ascent=16 len=40 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent =13 descent= 0 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[4734] U8G_SECTION(".progmem.u8g_font_10x20_67_75") = { + 0,10,20,0,252,5,2,211,5,193,32,255,0,16,252,13, + 0,9,6,12,10,0,3,54,0,27,0,255,128,255,128,27, + 0,54,0,8,13,13,10,1,0,24,24,24,24,153,219,126, + 60,153,219,126,60,24,9,8,16,10,0,2,25,128,51,0, + 102,0,252,0,252,0,102,0,51,0,25,128,9,8,16,10, + 0,2,204,0,102,0,51,0,31,128,31,128,51,0,102,0, + 204,0,9,8,16,10,0,2,25,128,49,128,97,128,255,128, + 255,128,97,128,49,128,25,128,8,13,13,10,1,0,24,60, + 126,219,153,24,24,24,24,24,24,255,255,9,8,16,10,0, + 2,204,0,198,0,195,0,255,128,255,128,195,0,198,0,204, + 0,8,13,13,10,1,0,255,255,24,24,24,24,24,24,153, + 219,126,60,24,8,13,13,10,1,0,24,60,126,219,153,24, + 153,219,126,60,24,255,255,9,8,16,10,0,2,27,0,51, + 128,97,128,255,128,255,0,96,0,48,0,24,0,9,8,16, + 10,0,2,108,0,230,0,195,0,255,128,127,128,3,0,6, + 0,12,0,9,8,16,10,0,2,25,0,51,128,98,128,255, + 128,255,0,98,0,50,0,24,0,9,8,16,10,0,2,76, + 0,230,0,163,0,255,128,127,128,35,0,38,0,12,0,10, + 8,16,10,0,2,18,0,51,0,109,128,255,192,243,192,97, + 128,51,0,18,0,10,8,16,10,0,2,18,0,55,0,101, + 128,255,192,255,192,105,128,59,0,18,0,10,15,30,10,0, + 0,1,192,3,128,7,0,14,0,28,0,63,192,127,192,3, + 128,7,0,206,0,220,0,248,0,240,0,252,0,252,0,8, + 13,13,10,1,0,48,96,255,255,99,51,3,3,3,3,3, + 3,3,8,13,13,10,1,0,12,6,255,255,198,204,192,192, + 192,192,192,192,192,8,13,13,10,1,0,3,3,3,3,3, + 3,3,51,99,255,255,96,48,8,13,13,10,1,0,192,192, + 192,192,192,192,192,204,198,255,255,6,12,8,13,13,10,1, + 0,252,252,12,12,12,12,12,12,12,45,63,30,12,8,9, + 9,10,1,1,3,3,3,51,99,255,255,96,48,9,8,16, + 10,0,0,14,0,31,0,59,128,49,128,181,128,253,128,121, + 128,49,128,9,8,16,10,0,0,56,0,124,0,238,0,198, + 0,214,128,223,128,207,0,198,0,9,13,26,10,0,0,255, + 128,255,128,32,0,124,0,127,0,122,0,216,0,204,0,140, + 0,6,0,6,0,3,0,3,0,9,13,26,10,0,0,204, + 0,216,0,255,128,255,128,216,0,204,0,0,0,25,128,13, + 128,255,128,255,128,13,128,25,128,9,10,20,10,0,2,31, + 0,31,0,30,0,31,0,219,128,193,128,193,128,227,128,127, + 0,62,0,9,10,20,10,0,2,124,0,124,0,60,0,124, + 0,237,128,193,128,193,128,227,128,127,0,62,0,9,5,10, + 10,0,5,24,0,48,0,96,0,255,128,255,128,9,5,10, + 10,0,2,255,128,255,128,96,0,48,0,24,0,5,13,13, + 10,4,0,192,224,240,216,200,192,192,192,192,192,192,192,192, + 5,13,13,10,1,0,24,56,120,216,152,24,24,24,24,24, + 24,24,24,9,5,10,10,0,5,12,0,6,0,3,0,255, + 128,255,128,9,5,10,10,0,2,255,128,255,128,3,0,6, + 0,12,0,5,13,13,10,4,0,192,192,192,192,192,192,192, + 192,200,216,240,224,192,5,13,13,10,1,0,24,24,24,24, + 24,24,24,24,152,216,120,56,24,9,11,22,10,0,1,6, + 0,3,0,255,128,255,128,3,0,54,0,96,0,255,128,255, + 128,96,0,48,0,10,13,26,10,0,0,51,0,123,0,255, + 0,183,0,51,0,51,0,51,0,51,0,51,0,59,64,63, + 192,55,128,51,0,9,11,22,10,0,1,48,0,96,0,255, + 128,255,128,96,0,54,0,3,0,255,128,255,128,3,0,6, + 0,9,11,22,10,0,1,48,0,96,0,255,128,255,128,96, + 0,48,0,96,0,255,128,255,128,96,0,48,0,9,13,26, + 10,0,0,34,0,119,0,170,128,34,0,34,0,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,9,11,22, + 10,0,1,6,0,3,0,255,128,255,128,3,0,6,0,3, + 0,255,128,255,128,3,0,6,0,9,13,26,10,0,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,34, + 0,34,0,170,128,119,0,34,0,8,9,9,10,1,2,48, + 96,255,255,0,255,255,6,12,8,9,9,10,1,2,12,6, + 255,255,0,255,255,96,48,8,7,7,10,1,2,2,34,127, + 132,127,40,8,10,7,14,10,0,2,4,0,37,0,127,128, + 140,64,127,128,41,0,8,0,8,7,7,10,1,2,16,20, + 254,33,254,68,64,9,9,18,10,0,2,12,0,24,0,63, + 128,127,128,192,0,127,128,63,128,24,0,12,0,9,13,26, + 10,0,0,8,0,28,0,54,0,119,0,247,128,182,128,54, + 0,54,0,54,0,54,0,54,0,54,0,54,0,9,9,18, + 10,0,2,24,0,12,0,254,0,255,0,1,128,255,0,254, + 0,12,0,24,0,9,13,26,10,0,0,54,0,54,0,54, + 0,54,0,54,0,54,0,54,0,182,128,247,128,119,0,54, + 0,28,0,8,0,10,9,18,10,0,2,18,0,51,0,127, + 128,255,192,128,192,255,192,127,128,51,0,18,0,9,13,26, + 10,0,0,8,0,28,0,54,0,119,0,247,128,182,128,54, + 0,182,128,247,128,119,0,54,0,28,0,8,0,9,9,18, + 10,0,2,254,0,254,0,204,0,198,0,227,0,241,128,216, + 128,12,0,6,0,9,9,18,10,0,2,63,128,63,128,25, + 128,49,128,99,128,199,128,141,128,24,0,48,0,9,9,18, + 10,0,2,48,0,24,0,141,128,199,128,99,128,49,128,25, + 128,63,128,63,128,9,9,18,10,0,2,6,0,12,0,216, + 128,241,128,227,0,198,0,204,0,254,0,254,0,9,11,22, + 10,0,1,4,0,8,0,16,0,63,128,64,0,255,128,64, + 0,63,128,16,0,8,0,4,0,9,11,22,10,0,1,16, + 0,8,0,4,0,254,0,1,0,255,128,1,0,254,0,4, + 0,8,0,16,0,9,5,10,10,0,3,32,0,66,0,245, + 128,72,0,32,0,9,5,10,10,0,3,2,0,33,0,215, + 128,9,0,2,0,8,13,13,10,1,0,24,60,126,219,153, + 24,126,126,24,126,126,24,24,8,13,13,10,1,0,24,24, + 126,126,24,126,126,24,153,219,126,60,24,9,8,16,10,0, + 2,24,0,48,0,96,0,237,128,237,128,96,0,48,0,24, + 0,8,13,13,10,1,0,24,60,126,219,129,24,24,0,24, + 24,0,24,24,9,8,16,10,0,2,12,0,6,0,3,0, + 219,128,219,128,3,0,6,0,12,0,8,13,13,10,1,0, + 24,24,0,24,24,0,24,24,129,219,126,60,24,9,8,16, + 10,0,2,198,0,204,0,216,0,255,128,255,128,216,0,204, + 0,198,0,9,8,16,10,0,2,49,128,25,128,13,128,255, + 128,255,128,13,128,25,128,49,128,9,8,16,10,0,2,24, + 0,40,0,79,128,128,128,128,128,79,128,40,0,24,0,8, + 13,13,10,1,0,24,36,66,129,231,36,36,36,36,36,36, + 36,60,9,8,16,10,0,2,12,0,10,0,249,0,128,128, + 128,128,249,0,10,0,12,0,8,13,13,10,1,0,60,36, + 36,36,36,36,36,36,231,129,66,36,24,8,13,13,10,1, + 0,24,36,66,129,231,36,36,60,0,60,36,36,60,8,13, + 13,10,1,0,24,36,66,129,231,36,36,36,36,36,231,129, + 255,8,13,13,10,1,0,24,36,126,129,231,36,36,36,36, + 36,231,129,255,9,14,28,10,0,0,8,0,28,0,42,0, + 73,0,136,128,235,128,42,0,42,0,42,0,42,0,42,0, + 235,128,136,128,255,128,8,13,13,10,1,0,24,36,90,231, + 66,231,36,36,36,36,36,36,60,8,13,13,10,1,0,24, + 36,90,231,66,231,36,36,36,36,231,129,255,9,8,16,10, + 0,2,236,0,170,0,185,0,128,128,128,128,185,0,170,0, + 236,0,8,8,8,10,1,2,255,128,188,168,184,164,130,129, + 8,8,8,10,1,2,129,65,37,29,21,61,1,255,8,13, + 13,10,1,0,24,36,66,231,36,36,36,36,36,231,66,36, + 24,9,6,12,10,0,3,38,0,83,0,255,128,255,128,83, + 0,38,0,10,13,26,10,0,0,51,0,55,128,63,192,59, + 64,51,0,51,0,51,0,51,0,51,0,183,0,255,0,123, + 0,51,0,9,16,32,10,0,254,6,0,3,0,255,128,255, + 128,3,0,6,0,3,0,255,128,255,128,3,0,6,0,3, + 0,255,128,255,128,3,0,6,0,9,8,16,10,0,2,22, + 0,54,0,102,0,255,128,255,128,102,0,54,0,22,0,9, + 8,16,10,0,2,52,0,54,0,51,0,255,128,255,128,51, + 0,54,0,52,0,10,6,12,10,0,3,45,0,109,128,255, + 192,255,192,109,128,45,0,9,6,12,10,0,3,42,0,106, + 0,255,128,255,128,106,0,42,0,9,6,12,10,0,3,42, + 0,43,0,255,128,255,128,43,0,42,0,9,6,12,10,0, + 3,85,0,213,128,255,128,255,128,213,128,85,0,9,8,16, + 10,0,2,16,0,48,0,112,0,223,128,223,128,112,0,48, + 0,16,0,9,8,16,10,0,2,4,0,6,0,7,0,253, + 128,253,128,7,0,6,0,4,0,10,8,16,10,0,2,18, + 0,51,0,115,128,222,192,222,192,115,128,51,0,18,0,10, + 10,20,10,0,6,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,10,3,6,10,0,252,255, + 192,255,192,255,192,10,5,10,10,0,252,255,192,255,192,255, + 192,255,192,255,192,10,8,16,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,10,10,20,10,0, + 252,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,10,12,24,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,10,15,30,10,0,252,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,10,17,34,10,0,252,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,10, + 20,40,10,0,252,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,9,20,40, + 10,0,252,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,7,20,20,10,0, + 252,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, + 254,254,254,254,254,6,20,20,10,0,252,252,252,252,252,252, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,5, + 20,20,10,0,252,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,4,20,20,10,0,252,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,3,20,20,10,0,252,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,1,20,20, + 10,0,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,5,20,20,10,5,252,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,10,19,38,10,0,253,85,64,0,0,170,128,0,0,85, + 64,0,0,170,128,0,0,85,64,0,0,170,128,0,0,85, + 64,0,0,170,128,0,0,85,64,0,0,170,128,10,20,40, + 10,0,252,85,64,170,128,85,64,170,128,85,64,170,128,85, + 64,170,128,85,64,170,128,85,64,170,128,85,64,170,128,85, + 64,170,128,85,64,170,128,85,64,170,128,10,20,40,10,0, + 252,85,64,255,192,170,128,255,192,85,64,255,192,170,128,255, + 192,85,64,255,192,170,128,255,192,85,64,255,192,170,128,255, + 192,85,64,255,192,170,128,255,192,10,3,6,10,0,13,255, + 192,255,192,255,192,1,20,20,10,9,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,5, + 10,10,10,0,252,248,248,248,248,248,248,248,248,248,248,5, + 10,10,10,5,252,248,248,248,248,248,248,248,248,248,248,5, + 10,10,10,0,6,248,248,248,248,248,248,248,248,248,248,10, + 20,40,10,0,252,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,10,20,40, + 10,0,252,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,10,20,40,10,0, + 252,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,10,20,40,10,0,252,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,5,10,10,10,5,6,248,248,248, + 248,248,248,248,248,248,248,10,20,40,10,0,252,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,10,20,40,10,0,252,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,8,8,8,10,1,1,255,255,255,255,255,255,255, + 255,8,8,8,10,1,1,255,129,129,129,129,129,129,255,8, + 8,8,10,1,1,126,129,129,129,129,129,129,126,8,8,8, + 10,1,1,255,129,189,189,189,189,129,255,9,9,18,10,0, + 0,255,128,128,128,255,128,128,128,255,128,128,128,255,128,128, + 128,255,128,9,9,18,10,0,0,255,128,170,128,170,128,170, + 128,170,128,170,128,170,128,170,128,255,128,9,9,18,10,0, + 0,255,128,170,128,255,128,170,128,255,128,170,128,255,128,170, + 128,255,128,8,8,8,10,1,1,255,201,165,147,201,165,147, + 255,8,8,8,10,1,1,255,147,165,201,147,165,201,255,8, + 8,8,10,1,1,255,171,197,171,145,171,197,255,4,4,4, + 10,3,3,240,240,240,240,4,4,4,10,3,3,240,144,144, + 240,8,6,6,10,1,3,255,255,255,255,255,255,8,6,6, + 10,1,3,255,129,129,129,129,255,6,13,13,10,2,0,252, + 252,252,252,252,252,252,252,252,252,252,252,252,6,13,13,10, + 2,0,252,132,132,132,132,132,132,132,132,132,132,132,252,8, + 4,4,10,1,3,31,62,124,248,8,4,4,10,1,3,31, + 34,68,248,8,8,8,10,1,2,24,24,60,60,126,126,255, + 255,8,8,8,10,1,2,24,24,36,36,66,66,129,255,5, + 5,5,10,3,3,32,112,112,248,248,5,5,5,10,3,3, + 32,80,80,136,248,8,8,8,10,1,2,192,240,252,255,255, + 252,240,192,8,8,8,10,1,2,192,176,140,131,131,140,176, + 192,5,5,5,10,3,3,192,240,248,240,192,5,5,5,10, + 3,3,192,176,136,176,192,8,5,5,10,1,4,224,252,255, + 252,224,8,5,5,10,1,4,224,156,131,156,224,8,8,8, + 10,1,2,255,255,126,126,60,60,24,24,8,8,8,10,1, + 2,255,129,66,66,36,36,24,24,5,5,5,10,3,3,248, + 248,112,112,32,5,5,5,10,3,3,248,136,80,80,32,8, + 8,8,10,1,2,3,15,63,255,255,63,15,3,8,8,8, + 10,1,2,3,13,49,193,193,49,13,3,5,5,5,10,3, + 3,24,120,248,120,24,5,5,5,10,3,3,24,104,136,104, + 24,8,5,5,10,1,4,7,63,255,63,7,8,5,5,10, + 1,4,7,57,193,57,7,8,8,8,10,1,2,24,60,126, + 255,255,126,60,24,8,8,8,10,1,2,24,36,66,129,129, + 66,36,24,8,8,8,10,1,2,24,36,90,189,189,90,36, + 24,8,8,8,10,1,1,60,66,153,189,189,153,66,60,9, + 15,30,10,1,255,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,65,0,65,0,34,0,34,0,20,0,20, + 0,8,0,8,8,8,10,1,1,60,66,129,129,129,129,66, + 60,7,7,7,10,1,2,40,0,130,0,130,0,40,7,7, + 7,10,1,2,56,108,170,170,170,108,56,8,8,8,10,1, + 1,60,66,153,165,165,153,66,60,8,8,8,10,1,1,60, + 126,255,255,255,255,126,60,8,8,8,10,1,1,60,114,241, + 241,241,241,114,60,8,8,8,10,1,1,60,78,143,143,143, + 143,78,60,8,8,8,10,1,1,60,66,129,129,255,255,126, + 60,8,8,8,10,1,1,60,126,255,255,129,129,66,60,8, + 8,8,10,1,1,60,78,143,143,129,129,66,60,8,8,8, + 10,1,1,60,78,143,143,255,255,126,60,4,8,8,10,1, + 1,48,112,240,240,240,240,112,48,4,8,8,10,5,1,192, + 224,240,240,240,240,224,192,10,20,40,10,0,252,255,192,255, + 192,255,192,255,192,255,192,255,192,225,192,192,192,128,64,128, + 64,128,64,128,64,192,192,225,192,255,192,255,192,255,192,255, + 192,255,192,255,192,10,20,40,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,225,192,222,192,191,64,191,64,191, + 64,191,64,222,192,225,192,255,192,255,192,255,192,255,192,255, + 192,255,192,10,10,20,10,0,6,255,192,255,192,255,192,255, + 192,255,192,255,192,225,192,222,192,191,64,191,64,10,10,20, + 10,0,252,191,64,191,64,222,192,225,192,255,192,255,192,255, + 192,255,192,255,192,255,192,4,4,4,10,1,5,48,64,128, + 128,4,4,4,10,5,5,192,32,16,16,4,4,4,10,5, + 1,16,16,32,192,4,4,4,10,1,1,128,128,64,48,8, + 4,4,10,1,5,60,66,129,129,8,4,4,10,1,1,129, + 129,66,60,10,19,38,10,0,252,0,64,0,64,0,192,0, + 192,1,192,1,192,3,192,3,192,7,192,7,192,15,192,15, + 192,31,192,31,192,63,192,63,192,127,192,127,192,255,192,10, + 19,38,10,0,252,128,0,128,0,192,0,192,0,224,0,224, + 0,240,0,240,0,248,0,248,0,252,0,252,0,254,0,254, + 0,255,0,255,0,255,128,255,128,255,192,10,19,38,10,0, + 253,255,192,255,128,255,128,255,0,255,0,254,0,254,0,252, + 0,252,0,248,0,248,0,240,0,240,0,224,0,224,0,192, + 0,192,0,128,0,128,0,10,19,38,10,0,253,255,192,127, + 192,127,192,63,192,63,192,31,192,31,192,15,192,15,192,7, + 192,7,192,3,192,3,192,1,192,1,192,0,192,0,192,0, + 64,0,64,5,5,5,10,3,4,112,136,136,136,112,8,8, + 8,10,1,1,255,241,241,241,241,241,241,255,8,8,8,10, + 1,1,255,143,143,143,143,143,143,255,8,8,8,10,1,1, + 255,253,249,241,225,193,129,255,8,8,8,10,1,1,255,129, + 131,135,143,159,191,255,9,9,18,10,0,0,255,128,136,128, + 136,128,136,128,136,128,136,128,136,128,136,128,255,128,8,8, + 8,10,1,2,24,24,36,36,90,90,129,255,8,8,8,10, + 1,2,24,24,52,52,114,114,241,255,8,8,8,10,1,2, + 24,24,44,44,78,78,143,255,10,10,20,10,0,0,30,0, + 33,0,64,128,128,64,128,64,128,64,128,64,64,128,33,0, + 30,0,9,9,18,10,0,0,255,128,136,128,136,128,136,128, + 248,128,128,128,128,128,128,128,255,128,9,9,18,10,0,0, + 255,128,128,128,128,128,128,128,248,128,136,128,136,128,136,128, + 255,128,9,9,18,10,0,0,255,128,128,128,128,128,128,128, + 143,128,136,128,136,128,136,128,255,128,9,9,18,10,0,0, + 255,128,136,128,136,128,136,128,143,128,128,128,128,128,128,128, + 255,128,9,9,18,10,0,0,62,0,73,0,136,128,136,128, + 248,128,128,128,128,128,65,0,62,0,9,9,18,10,0,0, + 62,0,65,0,128,128,128,128,248,128,136,128,136,128,73,0, + 62,0,9,9,18,10,0,0,62,0,65,0,128,128,128,128, + 143,128,136,128,136,128,73,0,62,0,9,9,18,10,0,0, + 62,0,73,0,136,128,136,128,143,128,128,128,128,128,65,0, + 62,0,6,6,6,10,2,2,252,136,144,160,192,128,6,6, + 6,10,2,2,252,68,36,20,12,4,6,6,6,10,2,2, + 128,192,160,144,136,252,6,6,6,10,2,2,252,132,132,132, + 132,252,6,6,6,10,2,2,252,252,252,252,252,252,4,4, + 4,10,3,3,240,144,144,240,4,4,4,10,3,3,240,240, + 240,240,6,6,6,10,2,2,4,12,20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 8, '1' Height: 4 + Calculated Max Values w= 9 h=15 x= 3 y= 4 dx=10 dy= 0 ascent=14 len=30 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =14 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_75r[693] U8G_SECTION(".progmem.u8g_font_10x20_75r") = { + 0,10,20,0,252,8,1,219,0,0,32,79,0,14,255,9, + 0,8,8,8,10,1,1,255,255,255,255,255,255,255,255,8, + 8,8,10,1,1,255,129,129,129,129,129,129,255,8,8,8, + 10,1,1,126,129,129,129,129,129,129,126,8,8,8,10,1, + 1,255,129,189,189,189,189,129,255,9,9,18,10,0,0,255, + 128,128,128,255,128,128,128,255,128,128,128,255,128,128,128,255, + 128,9,9,18,10,0,0,255,128,170,128,170,128,170,128,170, + 128,170,128,170,128,170,128,255,128,9,9,18,10,0,0,255, + 128,170,128,255,128,170,128,255,128,170,128,255,128,170,128,255, + 128,8,8,8,10,1,1,255,201,165,147,201,165,147,255,8, + 8,8,10,1,1,255,147,165,201,147,165,201,255,8,8,8, + 10,1,1,255,171,197,171,145,171,197,255,4,4,4,10,3, + 3,240,240,240,240,4,4,4,10,3,3,240,144,144,240,8, + 6,6,10,1,3,255,255,255,255,255,255,8,6,6,10,1, + 3,255,129,129,129,129,255,6,13,13,10,2,0,252,252,252, + 252,252,252,252,252,252,252,252,252,252,6,13,13,10,2,0, + 252,132,132,132,132,132,132,132,132,132,132,132,252,8,4,4, + 10,1,3,31,62,124,248,8,4,4,10,1,3,31,34,68, + 248,8,8,8,10,1,2,24,24,60,60,126,126,255,255,8, + 8,8,10,1,2,24,24,36,36,66,66,129,255,5,5,5, + 10,3,3,32,112,112,248,248,5,5,5,10,3,3,32,80, + 80,136,248,8,8,8,10,1,2,192,240,252,255,255,252,240, + 192,8,8,8,10,1,2,192,176,140,131,131,140,176,192,5, + 5,5,10,3,3,192,240,248,240,192,5,5,5,10,3,3, + 192,176,136,176,192,8,5,5,10,1,4,224,252,255,252,224, + 8,5,5,10,1,4,224,156,131,156,224,8,8,8,10,1, + 2,255,255,126,126,60,60,24,24,8,8,8,10,1,2,255, + 129,66,66,36,36,24,24,5,5,5,10,3,3,248,248,112, + 112,32,5,5,5,10,3,3,248,136,80,80,32,8,8,8, + 10,1,2,3,15,63,255,255,63,15,3,8,8,8,10,1, + 2,3,13,49,193,193,49,13,3,5,5,5,10,3,3,24, + 120,248,120,24,5,5,5,10,3,3,24,104,136,104,24,8, + 5,5,10,1,4,7,63,255,63,7,8,5,5,10,1,4, + 7,57,193,57,7,8,8,8,10,1,2,24,60,126,255,255, + 126,60,24,8,8,8,10,1,2,24,36,66,129,129,66,36, + 24,8,8,8,10,1,2,24,36,90,189,189,90,36,24,8, + 8,8,10,1,1,60,66,153,189,189,153,66,60,9,15,30, + 10,1,255,8,0,20,0,20,0,34,0,34,0,65,0,65, + 0,128,128,65,0,65,0,34,0,34,0,20,0,20,0,8, + 0,8,8,8,10,1,1,60,66,129,129,129,129,66,60,7, + 7,7,10,1,2,40,0,130,0,130,0,40,7,7,7,10, + 1,2,56,108,170,170,170,108,56,8,8,8,10,1,1,60, + 66,153,165,165,153,66,60,8,8,8,10,1,1,60,126,255, + 255,255,255,126,60}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w=10 h=13 x= 4 y= 5 dx=10 dy= 0 ascent=13 len=24 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =13 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[2638] U8G_SECTION(".progmem.u8g_font_10x20_78_79") = { + 0,10,20,0,252,9,1,212,2,205,32,255,0,13,0,11, + 0,9,9,18,10,0,0,54,0,28,0,136,128,201,128,119, + 0,201,128,136,128,28,0,54,0,9,9,18,10,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,10,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,10,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,10,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,10,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,10,0,0,8,0,28,0,28,0,127,0,255, + 128,127,0,28,0,28,0,8,0,9,9,18,10,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,10,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,10,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,10,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,127,0,119,0,99,0,255,255,255,255, + 255,8,9,9,10,0,0,24,219,255,126,24,126,255,219,24, + 8,9,9,10,0,0,24,219,255,102,36,102,255,219,24,9, + 9,18,10,0,0,8,0,73,0,42,0,28,0,255,128,28, + 0,42,0,73,0,8,0,9,9,18,10,0,0,8,0,73, + 0,62,0,62,0,255,128,62,0,62,0,73,0,8,0,7, + 7,7,10,1,0,16,146,124,56,124,146,16,9,9,18,10, + 0,0,34,0,20,0,148,128,127,0,28,0,127,0,148,128, + 20,0,34,0,255,255,255,255,9,11,22,10,0,0,28,0, + 28,0,201,128,201,128,62,0,28,0,62,0,201,128,201,128, + 28,0,28,0,9,11,22,10,0,0,28,0,28,0,201,128, + 201,128,62,0,28,0,62,0,201,128,201,128,28,0,28,0, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 9,8,16,10,0,1,62,0,67,0,129,128,129,128,129,128, + 129,128,67,0,62,0,255,9,9,18,10,0,0,254,0,130, + 0,131,128,131,128,131,128,131,128,255,128,63,128,63,128,9, + 9,18,10,0,0,63,128,63,128,255,128,131,128,131,128,131, + 128,131,128,130,0,254,0,8,8,8,10,0,0,254,131,131, + 131,131,131,255,127,8,8,8,10,0,0,127,255,131,131,131, + 131,131,254,255,255,255,9,9,18,10,0,0,8,0,28,0, + 28,0,107,0,247,128,107,0,28,0,28,0,8,0,255,1, + 10,10,10,4,0,128,128,128,128,128,128,128,128,128,128,2, + 10,10,10,3,0,192,192,192,192,192,192,192,192,192,192,3, + 10,10,10,3,0,224,224,224,224,224,224,224,224,224,224,4, + 6,6,10,3,5,112,128,224,240,240,96,4,6,6,10,3, + 5,96,240,240,112,16,224,9,6,12,10,0,5,115,128,132, + 0,231,0,247,128,247,128,99,0,9,6,12,10,0,5,99, + 0,247,128,247,128,115,128,16,128,231,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,9,9,18,10,0,0,127,0,247,128,231,128,247,128, + 247,128,247,128,247,128,227,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,253,128,251,128,247,128,237,128,193,128, + 127,0,9,9,18,10,0,0,127,0,227,128,221,128,253,128, + 243,128,253,128,221,128,227,128,127,0,9,9,18,10,0,0, + 127,0,243,128,235,128,219,128,193,128,251,128,251,128,241,128, + 127,0,9,9,18,10,0,0,127,0,193,128,223,128,223,128, + 195,128,253,128,253,128,195,128,127,0,9,9,18,10,0,0, + 127,0,225,128,223,128,223,128,195,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,193,128,253,128,251,128, + 251,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,221,128,227,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,225,128,221,128,221,128, + 225,128,253,128,253,128,227,128,127,0,9,9,18,10,0,0, + 127,0,219,128,213,128,213,128,213,128,213,128,213,128,219,128, + 127,0,9,9,18,10,0,0,127,0,128,128,136,128,152,128, + 136,128,136,128,156,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,152,128,132,128,132,128,136,128,156,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,152,128,132,128, + 136,128,132,128,152,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,136,128,152,128,168,128,188,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,156,128,144,128, + 152,128,132,128,152,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,140,128,144,128,152,128,148,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,156,128,132,128, + 136,128,136,128,136,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,136,128,148,128,136,128,148,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,136,128,148,128, + 140,128,132,128,136,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,164,128,170,128,170,128,170,128,164,128,128,128, + 127,0,9,9,18,10,0,0,127,0,247,128,231,128,247,128, + 247,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,253,128,251,128,247,128,239,128,193,128, + 127,0,9,9,18,10,0,0,127,0,227,128,221,128,253,128, + 243,128,253,128,221,128,227,128,127,0,9,9,18,10,0,0, + 127,0,243,128,235,128,219,128,193,128,251,128,251,128,251,128, + 127,0,9,9,18,10,0,0,127,0,193,128,223,128,223,128, + 195,128,253,128,253,128,195,128,127,0,9,9,18,10,0,0, + 127,0,225,128,223,128,223,128,195,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,193,128,253,128,251,128, + 251,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,221,128,227,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,225,128,221,128,221,128, + 225,128,253,128,253,128,227,128,127,0,9,9,18,10,0,0, + 127,0,219,128,213,128,213,128,213,128,213,128,213,128,219,128, + 127,0,7,8,8,10,1,1,48,24,12,254,254,12,24,48, + 255,255,255,7,5,5,10,1,1,224,250,62,14,30,8,7, + 7,10,1,1,8,12,230,255,230,12,8,7,5,5,10,1, + 1,30,14,62,250,224,9,7,14,10,0,0,48,0,28,0, + 31,0,255,128,31,0,28,0,48,0,9,9,18,10,0,0, + 28,0,30,0,15,0,255,128,255,128,255,128,15,0,30,0, + 28,0,9,5,10,10,0,1,2,0,3,0,255,128,3,0, + 2,0,9,7,14,10,0,0,4,0,6,0,255,0,255,128, + 255,0,6,0,4,0,9,5,10,10,0,1,2,0,183,0, + 183,128,183,0,2,0,9,5,10,10,0,1,2,0,171,0, + 171,128,171,0,2,0,9,5,10,10,0,1,2,0,255,0, + 255,128,255,0,2,0,9,8,16,10,0,1,128,0,112,0, + 78,0,33,128,31,128,62,0,112,0,128,0,9,8,16,10, + 0,1,128,0,112,0,62,0,31,128,33,128,78,0,112,0, + 128,0,9,8,16,10,0,1,128,0,112,0,62,0,31,128, + 31,128,62,0,112,0,128,0,9,7,14,10,0,0,132,0, + 134,0,255,0,255,128,127,0,6,0,4,0,9,7,14,10, + 0,0,4,0,6,0,127,0,255,128,255,0,134,0,132,0, + 6,9,9,10,2,0,16,16,248,248,252,248,248,16,16,8, + 9,9,10,0,1,4,4,254,254,255,254,254,4,4,9,9, + 18,10,0,0,24,0,28,0,22,0,243,0,129,128,243,0, + 22,0,28,0,24,0,9,9,18,10,0,0,24,0,28,0, + 26,0,249,0,192,128,249,0,26,0,28,0,24,0,9,9, + 18,10,0,0,0,128,1,128,62,128,64,128,129,128,243,0, + 238,0,60,0,56,0,9,9,18,10,0,0,56,0,60,0, + 238,0,243,0,129,128,64,128,62,128,1,128,0,128,8,9, + 9,10,0,1,16,24,20,242,129,243,118,28,24,8,9,9, + 10,0,1,24,28,118,243,129,242,20,24,16,9,8,16,10, + 0,1,4,0,250,0,129,0,64,128,129,128,251,0,6,0, + 4,0,255,9,8,16,10,0,2,4,0,6,0,251,0,129, + 128,64,128,129,0,250,0,4,0,9,9,18,10,0,1,28, + 0,127,0,251,128,1,128,0,128,1,128,251,128,127,0,28, + 0,9,5,10,10,0,3,210,0,43,0,127,128,43,0,210, + 0,9,9,18,10,0,0,16,0,56,0,92,0,236,0,116, + 0,60,0,2,128,1,128,3,128,9,5,10,10,0,2,242, + 0,123,0,7,128,123,0,242,0,9,9,18,10,0,0,3, + 128,1,128,2,128,60,0,116,0,236,0,92,0,56,0,16, + 0,9,9,18,10,0,0,16,0,24,0,28,0,252,0,124, + 0,60,0,2,128,1,128,3,128,9,5,10,10,0,2,242, + 0,123,0,127,128,123,0,242,0,9,9,18,10,0,0,3, + 128,1,128,2,128,60,0,124,0,252,0,28,0,24,0,16, + 0,255,255,255,255,9,7,14,10,0,1,20,0,10,0,253, + 0,0,128,253,0,10,0,20,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,9, + 12,24,10,0,0,224,128,49,128,49,128,42,128,42,128,36, + 128,36,128,42,128,42,128,49,128,49,128,224,128,9,12,24, + 10,0,0,131,128,198,0,198,0,170,0,170,0,146,0,146, + 0,170,0,170,0,198,0,198,0,131,128,9,12,24,10,0, + 0,193,128,99,0,99,0,85,0,85,0,73,0,73,0,85, + 0,85,0,99,0,99,0,193,128,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,8,13,13,10,1,0,255,216,216, + 216,216,216,216,216,216,216,216,216,255,8,13,13,10,1,0, + 255,27,27,27,27,27,27,27,27,27,27,27,255,4,13,13, + 10,4,0,16,48,32,96,64,192,128,192,64,96,32,48,16, + 4,13,13,10,4,0,128,192,64,96,32,48,16,48,32,96, + 64,192,128,7,13,13,10,1,0,18,54,36,108,72,216,144, + 216,72,108,36,54,18,7,13,13,10,2,0,144,216,72,108, + 36,54,18,54,36,108,72,216,144,255,255,255,255,255,255,255, + 255,255,10,8,16,10,0,2,24,0,48,0,96,0,255,192, + 255,192,96,0,48,0,24,0,10,8,16,10,0,2,6,0, + 3,0,1,128,255,192,255,192,1,128,3,0,6,0,10,8, + 16,10,0,2,18,0,51,0,97,128,255,192,255,192,97,128, + 51,0,18,0,10,9,18,10,0,2,12,0,24,0,63,192, + 127,192,192,0,127,192,63,192,24,0,12,0,10,9,18,10, + 0,2,12,0,6,0,255,0,255,128,0,192,255,128,255,0, + 6,0,12,0,10,9,18,10,0,2,18,0,51,0,127,128, + 255,192,128,192,255,192,127,128,51,0,18,0,10,8,16,10, + 0,2,24,192,48,192,96,192,255,192,255,192,96,192,48,192, + 24,192,10,8,16,10,0,2,198,0,195,0,193,128,255,192, + 255,192,193,128,195,0,198,0,10,9,18,10,0,2,12,64, + 24,64,63,192,127,192,192,64,127,192,63,192,24,64,12,64, + 10,9,18,10,0,2,140,0,134,0,255,0,255,128,128,192, + 255,128,255,0,134,0,140,0,10,8,16,10,0,2,6,0, + 3,0,171,128,170,192,85,192,85,128,3,0,6,0}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w= 9 h=17 x= 4 y=16 dx=10 dy= 0 ascent=16 len=26 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20[3453] U8G_SECTION(".progmem.u8g_font_10x20") = { + 0,10,20,0,252,13,2,74,4,153,32,255,252,16,252,13, + 252,0,0,0,10,0,16,2,13,13,10,4,0,192,192,192, + 192,192,192,192,192,192,192,0,192,192,6,4,4,10,2,9, + 204,204,204,72,9,11,22,10,1,1,27,0,27,0,27,0, + 127,128,54,0,54,0,54,0,255,0,108,0,108,0,108,0, + 8,13,13,10,1,0,24,126,219,216,216,216,126,27,27,27, + 219,126,24,9,12,24,10,1,0,115,0,219,0,222,0,118, + 0,12,0,12,0,24,0,24,0,55,0,61,128,109,128,103, + 0,9,13,26,10,1,0,56,0,108,0,108,0,108,0,120, + 0,48,0,112,0,216,0,205,128,199,0,198,0,239,0,121, + 128,2,5,5,10,4,8,192,192,192,192,128,5,13,13,10, + 3,0,24,48,96,96,192,192,192,192,192,96,96,48,24,5, + 13,13,10,2,0,192,96,48,48,24,24,24,24,24,48,48, + 96,192,8,7,7,10,1,3,102,102,60,255,60,102,102,8, + 7,7,10,1,3,24,24,24,255,24,24,24,4,3,3,10, + 3,255,112,112,224,8,1,1,10,1,6,255,3,3,3,10, + 4,0,224,224,224,7,12,12,10,2,0,6,6,12,12,24, + 24,48,48,96,96,192,192,8,13,13,10,1,0,24,60,102, + 102,195,195,195,195,195,102,102,60,24,8,13,13,10,1,0, + 24,56,120,216,24,24,24,24,24,24,24,24,255,8,13,13, + 10,1,0,60,102,195,195,3,3,6,28,48,96,192,192,255, + 8,13,13,10,1,0,60,102,195,195,3,6,28,6,3,195, + 195,102,60,8,13,13,10,1,0,2,6,14,30,54,102,198, + 198,255,6,6,6,6,8,13,13,10,1,0,255,192,192,192, + 192,220,230,3,3,3,195,102,60,8,13,13,10,1,0,60, + 102,194,192,192,220,230,195,195,195,195,102,60,8,13,13,10, + 1,0,255,3,3,6,6,12,12,24,24,48,48,96,96,8, + 13,13,10,1,0,60,102,195,195,195,102,60,102,195,195,195, + 102,60,8,13,13,10,1,0,60,102,195,195,195,195,103,59, + 3,3,67,102,60,3,8,8,10,4,0,224,224,0,0,0, + 0,224,224,4,9,9,10,3,255,112,112,0,0,0,0,112, + 112,224,7,13,13,10,1,0,2,6,12,24,48,96,192,96, + 48,24,12,6,2,8,6,6,10,1,3,255,0,0,0,0, + 255,7,13,13,10,2,0,128,192,96,48,24,12,6,12,24, + 48,96,192,128,8,13,13,10,1,0,60,102,195,195,195,6, + 12,24,24,24,0,24,24,8,13,13,10,1,0,60,102,195, + 207,223,219,219,219,222,204,192,99,62,8,13,13,10,1,0, + 24,60,102,102,195,195,195,255,195,195,195,195,195,8,13,13, + 10,1,0,248,204,198,198,198,204,252,198,195,195,195,198,252, + 8,13,13,10,1,0,60,102,195,192,192,192,192,192,192,192, + 195,102,60,8,13,13,10,1,0,252,198,195,195,195,195,195, + 195,195,195,195,198,252,8,13,13,10,1,0,255,192,192,192, + 192,192,252,192,192,192,192,192,255,8,13,13,10,1,0,255, + 192,192,192,192,192,252,192,192,192,192,192,192,8,13,13,10, + 1,0,60,102,195,192,192,192,207,195,195,195,195,103,61,8, + 13,13,10,1,0,195,195,195,195,195,195,255,195,195,195,195, + 195,195,8,13,13,10,1,0,255,24,24,24,24,24,24,24, + 24,24,24,24,255,9,13,26,10,1,0,31,128,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,198,0,198, + 0,108,0,56,0,8,13,13,10,1,0,195,195,198,198,204, + 204,248,204,204,198,198,195,195,8,13,13,10,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,255,8,13,13,10,1, + 0,195,195,231,231,255,219,219,219,219,195,195,195,195,8,13, + 13,10,1,0,195,227,227,243,243,219,219,207,207,199,199,195, + 195,8,13,13,10,1,0,60,102,195,195,195,195,195,195,195, + 195,195,102,60,8,13,13,10,1,0,252,198,195,195,195,195, + 198,252,192,192,192,192,192,8,14,14,10,1,255,60,102,195, + 195,195,195,195,195,195,219,207,102,62,3,8,13,13,10,1, + 0,252,198,195,195,195,195,198,252,204,198,198,195,195,8,13, + 13,10,1,0,60,102,195,192,192,96,60,6,3,3,195,102, + 60,8,13,13,10,1,0,255,24,24,24,24,24,24,24,24, + 24,24,24,24,8,13,13,10,1,0,195,195,195,195,195,195, + 195,195,195,195,195,102,60,8,13,13,10,1,0,195,195,195, + 195,102,102,102,60,60,60,24,24,24,8,13,13,10,1,0, + 195,195,195,195,195,219,219,219,219,231,231,195,195,8,13,13, + 10,1,0,195,195,102,102,60,60,24,60,60,102,102,195,195, + 8,13,13,10,1,0,195,195,102,102,60,60,24,24,24,24, + 24,24,24,8,13,13,10,1,0,255,3,3,6,12,12,24, + 48,48,96,192,192,255,6,13,13,10,2,0,252,192,192,192, + 192,192,192,192,192,192,192,192,252,7,12,12,10,2,0,192, + 192,96,96,48,48,24,24,12,12,6,6,6,13,13,10,2, + 0,252,12,12,12,12,12,12,12,12,12,12,12,252,8,4, + 4,10,1,9,24,60,102,195,9,1,2,10,1,255,255,128, + 4,3,3,10,3,10,192,96,48,8,8,8,10,1,0,62, + 99,3,127,195,195,195,125,8,13,13,10,1,0,192,192,192, + 192,192,220,230,195,195,195,195,230,220,8,8,8,10,1,0, + 62,99,192,192,192,192,99,62,8,13,13,10,1,0,3,3, + 3,3,3,59,103,195,195,195,195,103,59,8,8,8,10,1, + 0,60,102,195,255,192,192,99,62,8,13,13,10,1,0,30, + 51,51,48,48,252,48,48,48,48,48,48,48,8,12,12,10, + 1,252,125,199,198,198,198,124,192,126,195,195,195,126,8,13, + 13,10,1,0,192,192,192,192,192,220,230,195,195,195,195,195, + 195,8,11,11,10,1,0,24,24,0,120,24,24,24,24,24, + 24,255,7,15,15,10,2,252,6,6,0,30,6,6,6,6, + 6,6,6,198,198,198,124,8,13,13,10,1,0,192,192,192, + 192,192,198,204,216,240,248,204,198,195,8,13,13,10,1,0, + 120,24,24,24,24,24,24,24,24,24,24,24,255,8,8,8, + 10,1,0,182,255,219,219,219,219,219,219,8,8,8,10,1, + 0,220,230,195,195,195,195,195,195,8,8,8,10,1,0,60, + 102,195,195,195,195,102,60,8,12,12,10,1,252,220,230,195, + 195,195,195,230,220,192,192,192,192,8,12,12,10,1,252,59, + 103,195,195,195,195,103,59,3,3,3,3,8,8,8,10,1, + 0,222,115,96,96,96,96,96,96,8,8,8,10,1,0,126, + 195,192,126,3,3,195,126,8,11,11,10,1,0,48,48,48, + 252,48,48,48,48,48,51,30,8,8,8,10,1,0,195,195, + 195,195,195,195,103,59,8,8,8,10,1,0,195,195,102,102, + 60,60,24,24,8,8,8,10,1,0,195,195,195,219,219,219, + 255,102,8,8,8,10,1,0,195,102,60,24,24,60,102,195, + 8,12,12,10,1,252,195,195,195,195,195,195,103,59,3,195, + 102,60,7,8,8,10,2,0,254,6,12,24,48,96,192,254, + 8,13,13,10,1,0,15,24,24,24,24,24,240,24,24,24, + 24,24,15,2,13,13,10,4,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,8,13,13,10,1,0,240,24,24,24, + 24,24,15,24,24,24,24,24,240,8,3,3,10,1,10,115, + 219,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,10,0,16,2,13,13,10,4,0,192, + 192,0,192,192,192,192,192,192,192,192,192,192,7,12,12,10, + 1,0,24,24,60,102,194,192,192,194,102,60,24,24,9,12, + 24,10,1,0,30,0,51,0,51,0,48,0,48,0,252,0, + 48,0,48,0,48,0,248,0,173,128,231,0,9,9,18,10, + 0,1,128,128,221,128,127,0,99,0,99,0,99,0,127,0, + 221,128,128,128,8,11,11,10,1,0,129,195,102,60,126,24, + 126,24,24,24,24,2,13,13,10,4,0,192,192,192,192,192, + 0,0,0,192,192,192,192,192,8,13,13,10,1,0,60,102, + 198,96,120,204,102,51,30,6,99,102,60,6,2,2,10,2, + 11,204,204,8,11,11,10,1,0,60,102,195,189,165,161,165, + 189,195,102,60,8,9,9,10,1,4,62,67,3,127,195,195, + 125,0,255,9,11,22,10,0,0,4,128,13,128,27,0,54, + 0,108,0,216,0,108,0,54,0,27,0,13,128,4,128,8, + 4,4,10,1,4,255,255,3,3,6,1,1,10,2,6,252, + 8,11,11,10,1,0,60,102,195,189,165,189,169,173,195,102, + 60,8,1,1,10,1,13,255,6,6,6,10,2,7,48,120, + 204,204,120,48,8,7,7,10,1,2,24,24,255,24,24,0, + 255,5,7,7,10,2,6,112,216,24,48,96,192,248,5,7, + 7,10,2,6,112,216,24,48,24,216,112,4,3,3,10,3, + 10,48,96,192,7,10,10,10,1,253,198,198,198,198,198,238, + 250,192,192,192,8,13,13,10,1,0,127,255,251,251,251,123, + 27,27,27,27,27,27,27,3,3,3,10,4,5,224,224,224, + 5,4,4,10,2,252,48,24,216,112,4,7,7,10,2,6, + 96,224,96,96,96,96,240,7,9,9,10,1,4,56,108,198, + 198,198,108,56,0,254,9,11,22,10,1,0,144,0,216,0, + 108,0,54,0,27,0,13,128,27,0,54,0,108,0,216,0, + 144,0,8,12,12,10,1,1,64,192,65,66,228,8,18,38, + 74,158,2,2,8,12,12,10,1,1,64,192,65,66,228,8, + 22,41,65,130,4,15,8,12,12,10,1,1,224,16,97,18, + 228,8,18,38,74,159,2,2,8,13,13,10,1,0,24,24, + 0,24,24,24,48,96,195,195,195,102,60,8,15,15,10,1, + 0,96,48,24,0,24,60,102,195,195,195,255,195,195,195,195, + 8,15,15,10,1,0,6,12,24,0,24,60,102,195,195,195, + 255,195,195,195,195,8,15,15,10,1,0,24,60,102,0,24, + 60,102,195,195,195,255,195,195,195,195,8,15,15,10,1,0, + 50,126,76,0,24,60,102,195,195,195,255,195,195,195,195,8, + 15,15,10,1,0,102,102,0,24,60,102,102,195,195,195,255, + 195,195,195,195,8,16,16,10,1,0,60,102,102,60,0,24, + 60,102,195,195,195,255,195,195,195,195,8,13,13,10,1,0, + 31,60,108,108,204,204,255,204,204,204,204,204,207,8,17,17, + 10,1,252,60,102,195,192,192,192,192,192,192,192,195,102,60, + 24,12,108,56,8,15,15,10,1,0,96,48,24,0,255,192, + 192,192,192,252,192,192,192,192,255,8,15,15,10,1,0,12, + 24,48,0,255,192,192,192,192,252,192,192,192,192,255,8,15, + 15,10,1,0,24,60,102,0,255,192,192,192,192,252,192,192, + 192,192,255,8,15,15,10,1,0,102,102,0,0,255,192,192, + 192,192,252,192,192,192,192,255,6,15,15,10,2,0,96,48, + 24,0,252,48,48,48,48,48,48,48,48,48,252,6,15,15, + 10,2,0,24,48,96,0,252,48,48,48,48,48,48,48,48, + 48,252,6,15,15,10,2,0,48,120,204,0,252,48,48,48, + 48,48,48,48,48,48,252,6,15,15,10,2,0,204,204,0, + 252,48,48,48,48,48,48,48,48,48,48,252,9,13,26,10, + 0,0,126,0,99,0,97,128,97,128,97,128,97,128,249,128, + 97,128,97,128,97,128,97,128,99,0,126,0,8,15,15,10, + 1,0,50,126,76,0,195,227,243,243,219,219,207,207,199,195, + 195,8,15,15,10,1,0,48,24,12,0,60,102,195,195,195, + 195,195,195,195,102,60,8,15,15,10,1,0,12,24,48,0, + 60,102,195,195,195,195,195,195,195,102,60,8,15,15,10,1, + 0,24,60,102,0,60,102,195,195,195,195,195,195,195,102,60, + 8,15,15,10,1,0,50,126,76,0,60,102,195,195,195,195, + 195,195,195,102,60,8,15,15,10,1,0,102,102,0,60,102, + 195,195,195,195,195,195,195,195,102,60,7,8,8,10,1,0, + 130,198,108,56,56,108,198,130,8,15,15,10,1,255,1,62, + 102,199,199,203,203,203,211,211,211,227,102,124,128,8,15,15, + 10,1,0,48,24,12,0,195,195,195,195,195,195,195,195,195, + 102,60,8,15,15,10,1,0,12,24,48,0,195,195,195,195, + 195,195,195,195,195,102,60,8,15,15,10,1,0,24,60,102, + 0,195,195,195,195,195,195,195,195,195,102,60,8,15,15,10, + 1,0,102,102,0,195,195,195,195,195,195,195,195,195,195,102, + 60,8,15,15,10,1,0,12,24,48,0,195,195,102,102,60, + 60,24,24,24,24,24,7,13,13,10,2,0,192,192,192,252, + 198,198,198,198,198,252,192,192,192,8,13,13,10,1,0,28, + 54,99,99,102,236,108,102,99,99,99,102,108,8,12,12,10, + 1,0,48,24,12,0,126,195,3,127,195,195,195,125,8,12, + 12,10,1,0,12,24,48,0,126,195,3,127,195,195,195,125, + 8,12,12,10,1,0,24,60,102,0,126,195,3,127,195,195, + 195,125,8,12,12,10,1,0,50,126,76,0,126,195,3,127, + 195,195,195,125,8,11,11,10,1,0,102,102,0,126,195,3, + 127,195,195,195,125,8,13,13,10,1,0,60,102,102,60,0, + 126,195,3,127,195,195,195,125,8,8,8,10,1,0,118,155, + 27,30,120,216,217,110,8,12,12,10,1,252,62,99,192,192, + 192,192,99,62,24,12,108,56,8,12,12,10,1,0,96,48, + 24,0,60,102,195,255,192,192,99,62,8,12,12,10,1,0, + 6,12,24,0,60,102,195,255,192,192,99,62,8,12,12,10, + 1,0,24,60,102,0,60,102,195,255,192,192,99,62,8,11, + 11,10,1,0,102,102,0,60,102,195,255,192,192,99,62,8, + 12,12,10,1,0,96,48,24,0,120,24,24,24,24,24,24, + 255,8,12,12,10,1,0,12,24,48,0,120,24,24,24,24, + 24,24,255,8,12,12,10,1,0,24,60,102,0,120,24,24, + 24,24,24,24,255,8,11,11,10,1,0,102,102,0,120,24, + 24,24,24,24,24,255,8,13,13,10,1,0,136,216,112,112, + 216,140,62,103,195,195,195,102,60,8,12,12,10,1,0,50, + 126,76,0,220,230,195,195,195,195,195,195,8,12,12,10,1, + 0,96,48,24,0,60,102,195,195,195,195,102,60,8,12,12, + 10,1,0,6,12,24,0,60,102,195,195,195,195,102,60,8, + 12,12,10,1,0,24,60,102,0,60,102,195,195,195,195,102, + 60,8,12,12,10,1,0,50,126,76,0,60,102,195,195,195, + 195,102,60,8,11,11,10,1,0,102,102,0,60,102,195,195, + 195,195,102,60,8,10,10,10,1,1,24,24,0,0,255,255, + 0,0,24,24,8,10,10,10,1,255,1,62,102,203,203,211, + 211,102,124,128,8,12,12,10,1,0,48,24,12,0,195,195, + 195,195,195,195,103,59,8,12,12,10,1,0,6,12,24,0, + 195,195,195,195,195,195,103,59,8,12,12,10,1,0,24,60, + 102,0,195,195,195,195,195,195,103,59,8,11,11,10,1,0, + 102,102,0,195,195,195,195,195,195,103,59,8,16,16,10,1, + 252,12,24,48,0,195,195,195,195,195,195,103,59,3,195,102, + 60,7,17,17,10,2,252,192,192,192,192,192,192,248,204,198, + 198,198,204,248,192,192,192,192,8,15,15,10,1,252,102,102, + 0,195,195,195,195,195,195,103,59,3,195,102,60}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w= 9 h=15 x= 4 y=16 dx=10 dy= 0 ascent=16 len=26 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20r[1667] U8G_SECTION(".progmem.u8g_font_10x20r") = { + 0,10,20,0,252,13,2,74,4,153,32,127,252,16,252,13, + 252,0,0,0,10,0,16,2,13,13,10,4,0,192,192,192, + 192,192,192,192,192,192,192,0,192,192,6,4,4,10,2,9, + 204,204,204,72,9,11,22,10,1,1,27,0,27,0,27,0, + 127,128,54,0,54,0,54,0,255,0,108,0,108,0,108,0, + 8,13,13,10,1,0,24,126,219,216,216,216,126,27,27,27, + 219,126,24,9,12,24,10,1,0,115,0,219,0,222,0,118, + 0,12,0,12,0,24,0,24,0,55,0,61,128,109,128,103, + 0,9,13,26,10,1,0,56,0,108,0,108,0,108,0,120, + 0,48,0,112,0,216,0,205,128,199,0,198,0,239,0,121, + 128,2,5,5,10,4,8,192,192,192,192,128,5,13,13,10, + 3,0,24,48,96,96,192,192,192,192,192,96,96,48,24,5, + 13,13,10,2,0,192,96,48,48,24,24,24,24,24,48,48, + 96,192,8,7,7,10,1,3,102,102,60,255,60,102,102,8, + 7,7,10,1,3,24,24,24,255,24,24,24,4,3,3,10, + 3,255,112,112,224,8,1,1,10,1,6,255,3,3,3,10, + 4,0,224,224,224,7,12,12,10,2,0,6,6,12,12,24, + 24,48,48,96,96,192,192,8,13,13,10,1,0,24,60,102, + 102,195,195,195,195,195,102,102,60,24,8,13,13,10,1,0, + 24,56,120,216,24,24,24,24,24,24,24,24,255,8,13,13, + 10,1,0,60,102,195,195,3,3,6,28,48,96,192,192,255, + 8,13,13,10,1,0,60,102,195,195,3,6,28,6,3,195, + 195,102,60,8,13,13,10,1,0,2,6,14,30,54,102,198, + 198,255,6,6,6,6,8,13,13,10,1,0,255,192,192,192, + 192,220,230,3,3,3,195,102,60,8,13,13,10,1,0,60, + 102,194,192,192,220,230,195,195,195,195,102,60,8,13,13,10, + 1,0,255,3,3,6,6,12,12,24,24,48,48,96,96,8, + 13,13,10,1,0,60,102,195,195,195,102,60,102,195,195,195, + 102,60,8,13,13,10,1,0,60,102,195,195,195,195,103,59, + 3,3,67,102,60,3,8,8,10,4,0,224,224,0,0,0, + 0,224,224,4,9,9,10,3,255,112,112,0,0,0,0,112, + 112,224,7,13,13,10,1,0,2,6,12,24,48,96,192,96, + 48,24,12,6,2,8,6,6,10,1,3,255,0,0,0,0, + 255,7,13,13,10,2,0,128,192,96,48,24,12,6,12,24, + 48,96,192,128,8,13,13,10,1,0,60,102,195,195,195,6, + 12,24,24,24,0,24,24,8,13,13,10,1,0,60,102,195, + 207,223,219,219,219,222,204,192,99,62,8,13,13,10,1,0, + 24,60,102,102,195,195,195,255,195,195,195,195,195,8,13,13, + 10,1,0,248,204,198,198,198,204,252,198,195,195,195,198,252, + 8,13,13,10,1,0,60,102,195,192,192,192,192,192,192,192, + 195,102,60,8,13,13,10,1,0,252,198,195,195,195,195,195, + 195,195,195,195,198,252,8,13,13,10,1,0,255,192,192,192, + 192,192,252,192,192,192,192,192,255,8,13,13,10,1,0,255, + 192,192,192,192,192,252,192,192,192,192,192,192,8,13,13,10, + 1,0,60,102,195,192,192,192,207,195,195,195,195,103,61,8, + 13,13,10,1,0,195,195,195,195,195,195,255,195,195,195,195, + 195,195,8,13,13,10,1,0,255,24,24,24,24,24,24,24, + 24,24,24,24,255,9,13,26,10,1,0,31,128,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,198,0,198, + 0,108,0,56,0,8,13,13,10,1,0,195,195,198,198,204, + 204,248,204,204,198,198,195,195,8,13,13,10,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,255,8,13,13,10,1, + 0,195,195,231,231,255,219,219,219,219,195,195,195,195,8,13, + 13,10,1,0,195,227,227,243,243,219,219,207,207,199,199,195, + 195,8,13,13,10,1,0,60,102,195,195,195,195,195,195,195, + 195,195,102,60,8,13,13,10,1,0,252,198,195,195,195,195, + 198,252,192,192,192,192,192,8,14,14,10,1,255,60,102,195, + 195,195,195,195,195,195,219,207,102,62,3,8,13,13,10,1, + 0,252,198,195,195,195,195,198,252,204,198,198,195,195,8,13, + 13,10,1,0,60,102,195,192,192,96,60,6,3,3,195,102, + 60,8,13,13,10,1,0,255,24,24,24,24,24,24,24,24, + 24,24,24,24,8,13,13,10,1,0,195,195,195,195,195,195, + 195,195,195,195,195,102,60,8,13,13,10,1,0,195,195,195, + 195,102,102,102,60,60,60,24,24,24,8,13,13,10,1,0, + 195,195,195,195,195,219,219,219,219,231,231,195,195,8,13,13, + 10,1,0,195,195,102,102,60,60,24,60,60,102,102,195,195, + 8,13,13,10,1,0,195,195,102,102,60,60,24,24,24,24, + 24,24,24,8,13,13,10,1,0,255,3,3,6,12,12,24, + 48,48,96,192,192,255,6,13,13,10,2,0,252,192,192,192, + 192,192,192,192,192,192,192,192,252,7,12,12,10,2,0,192, + 192,96,96,48,48,24,24,12,12,6,6,6,13,13,10,2, + 0,252,12,12,12,12,12,12,12,12,12,12,12,252,8,4, + 4,10,1,9,24,60,102,195,9,1,2,10,1,255,255,128, + 4,3,3,10,3,10,192,96,48,8,8,8,10,1,0,62, + 99,3,127,195,195,195,125,8,13,13,10,1,0,192,192,192, + 192,192,220,230,195,195,195,195,230,220,8,8,8,10,1,0, + 62,99,192,192,192,192,99,62,8,13,13,10,1,0,3,3, + 3,3,3,59,103,195,195,195,195,103,59,8,8,8,10,1, + 0,60,102,195,255,192,192,99,62,8,13,13,10,1,0,30, + 51,51,48,48,252,48,48,48,48,48,48,48,8,12,12,10, + 1,252,125,199,198,198,198,124,192,126,195,195,195,126,8,13, + 13,10,1,0,192,192,192,192,192,220,230,195,195,195,195,195, + 195,8,11,11,10,1,0,24,24,0,120,24,24,24,24,24, + 24,255,7,15,15,10,2,252,6,6,0,30,6,6,6,6, + 6,6,6,198,198,198,124,8,13,13,10,1,0,192,192,192, + 192,192,198,204,216,240,248,204,198,195,8,13,13,10,1,0, + 120,24,24,24,24,24,24,24,24,24,24,24,255,8,8,8, + 10,1,0,182,255,219,219,219,219,219,219,8,8,8,10,1, + 0,220,230,195,195,195,195,195,195,8,8,8,10,1,0,60, + 102,195,195,195,195,102,60,8,12,12,10,1,252,220,230,195, + 195,195,195,230,220,192,192,192,192,8,12,12,10,1,252,59, + 103,195,195,195,195,103,59,3,3,3,3,8,8,8,10,1, + 0,222,115,96,96,96,96,96,96,8,8,8,10,1,0,126, + 195,192,126,3,3,195,126,8,11,11,10,1,0,48,48,48, + 252,48,48,48,48,48,51,30,8,8,8,10,1,0,195,195, + 195,195,195,195,103,59,8,8,8,10,1,0,195,195,102,102, + 60,60,24,24,8,8,8,10,1,0,195,195,195,219,219,219, + 255,102,8,8,8,10,1,0,195,102,60,24,24,60,102,195, + 8,12,12,10,1,252,195,195,195,195,195,195,103,59,3,195, + 102,60,7,8,8,10,2,0,254,6,12,24,48,96,192,254, + 8,13,13,10,1,0,15,24,24,24,24,24,240,24,24,24, + 24,24,15,2,13,13,10,4,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,8,13,13,10,1,0,240,24,24,24, + 24,24,15,24,24,24,24,24,240,8,3,3,10,1,10,115, + 219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--6-60-75-75-C-40-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 4 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_4x6[1500] U8G_SECTION(".progmem.u8g_font_4x6") = { + 1,4,6,0,255,5,1,3,1,250,32,255,255,5,255,5, + 255,7,0,64,18,21,69,128,128,128,0,128,5,50,66,160, + 160,2,69,69,160,240,160,240,160,1,54,70,64,224,192,32, + 224,64,2,53,69,128,32,64,128,32,2,69,69,64,160,64, + 160,80,21,18,66,128,128,17,38,70,64,128,128,128,128,64, + 1,38,70,128,64,64,64,64,128,2,53,69,160,64,224,64, + 160,2,53,69,64,64,224,64,64,1,34,66,64,128,4,49, + 65,224,18,17,65,128,2,53,69,32,32,64,128,128,2,53, + 69,64,160,224,160,64,2,53,69,64,192,64,64,224,2,53, + 69,64,160,32,64,224,2,53,69,224,32,64,32,192,2,53, + 69,160,160,224,32,32,2,53,69,224,128,192,32,192,2,53, + 69,96,128,192,160,64,2,53,69,224,32,64,128,128,2,53, + 69,96,160,64,160,192,2,53,69,64,160,96,32,192,18,20, + 68,128,0,0,128,1,37,69,64,0,0,64,128,2,53,69, + 32,64,128,64,32,3,51,67,224,0,224,2,53,69,128,64, + 32,64,128,2,53,69,192,32,64,0,64,2,53,69,96,160, + 160,128,96,2,53,69,64,160,224,160,160,2,53,69,192,160, + 192,160,192,2,53,69,64,160,128,160,64,2,53,69,192,160, + 160,160,192,2,53,69,224,128,192,128,224,2,53,69,224,128, + 192,128,128,2,53,69,96,128,160,160,96,2,53,69,160,160, + 224,160,160,2,53,69,224,64,64,64,224,2,53,69,32,32, + 32,160,64,2,53,69,160,160,192,160,160,2,53,69,128,128, + 128,128,224,2,53,69,160,224,224,160,160,2,53,69,32,160, + 224,160,128,2,53,69,64,160,160,160,64,2,53,69,192,160, + 192,128,128,1,54,70,64,160,160,160,64,32,2,53,69,192, + 160,192,160,160,2,53,69,96,128,64,32,192,2,53,69,224, + 64,64,64,64,2,53,69,160,160,160,160,224,2,53,69,160, + 160,160,224,64,2,53,69,160,160,224,224,160,2,53,69,160, + 160,64,160,160,2,53,69,160,160,64,64,64,2,53,69,224, + 32,64,128,224,18,37,69,192,128,128,128,192,2,53,69,128, + 128,64,32,32,2,37,69,192,64,64,64,192,5,50,66,64, + 160,1,49,65,224,21,34,66,128,64,2,52,68,96,160,160, + 96,2,53,69,128,192,160,160,192,2,52,68,96,128,128,96, + 2,53,69,32,96,160,160,96,2,52,68,64,160,192,96,2, + 53,69,32,64,224,64,64,1,53,69,96,160,96,32,192,2, + 53,69,128,192,160,160,160,2,53,69,64,0,192,64,224,1, + 54,70,32,0,32,32,32,192,2,53,69,128,160,192,160,160, + 2,53,69,192,64,64,64,224,2,52,68,160,224,160,160,2, + 52,68,192,160,160,160,2,52,68,64,160,160,64,1,53,69, + 192,160,192,128,128,1,53,69,96,160,160,96,32,2,52,68, + 160,192,128,128,2,52,68,96,192,32,192,2,53,69,64,224, + 64,64,32,2,52,68,160,160,160,96,2,52,68,160,160,160, + 64,2,52,68,160,160,224,160,2,52,68,160,64,64,160,1, + 53,69,160,160,96,32,192,2,52,68,224,32,64,224,1,54, + 70,32,64,192,64,64,32,18,21,69,128,128,128,128,128,1, + 54,70,128,64,96,64,64,128,5,66,66,80,160,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0, + 64,18,21,69,128,0,128,128,128,2,53,69,64,224,128,224, + 64,2,53,69,32,64,96,64,160,2,68,68,144,96,96,144, + 2,53,69,160,64,224,64,64,18,21,69,128,128,0,128,128, + 1,54,70,96,192,160,96,32,192,6,49,65,160,1,70,70, + 96,144,208,208,144,96,2,53,69,96,160,96,0,224,3,67, + 67,80,160,80,3,50,66,224,32,4,49,65,224,3,68,68, + 96,240,208,96,6,49,65,224,4,51,67,64,160,64,2,53, + 69,64,224,64,0,224,3,36,68,192,64,128,192,2,37,69, + 192,64,128,64,128,21,34,66,64,128,1,53,69,160,160,160, + 192,128,2,69,69,112,208,208,80,80,20,17,65,128,18,34, + 66,64,128,3,36,68,64,192,64,64,2,53,69,64,160,64, + 0,224,3,67,67,160,80,160,1,70,70,128,128,128,80,112, + 16,1,70,70,128,128,176,16,32,48,1,70,70,192,64,128, + 80,176,16,2,53,69,64,0,64,128,96,2,53,69,128,64, + 160,224,160,2,53,69,32,64,160,224,160,2,53,69,192,64, + 160,224,160,2,53,69,96,192,160,224,160,2,53,69,160,64, + 160,224,160,2,53,69,64,64,160,224,160,2,69,69,112,160, + 240,160,176,1,54,70,64,160,128,160,64,128,2,53,69,128, + 224,192,128,224,2,53,69,32,224,192,128,224,2,53,69,96, + 224,192,128,224,2,53,69,160,224,192,128,224,2,53,69,128, + 224,64,64,224,2,53,69,32,224,64,64,224,2,53,69,64, + 224,64,64,224,2,53,69,160,64,64,64,224,2,69,69,224, + 80,208,80,224,2,69,69,80,160,224,224,160,2,53,69,128, + 64,160,160,64,2,53,69,32,64,160,160,64,2,53,69,64, + 64,160,160,64,2,69,69,112,224,160,160,64,2,53,69,160, + 64,160,160,64,3,51,67,160,64,160,2,53,69,96,160,224, + 160,192,2,53,69,128,64,160,160,224,2,53,69,32,64,160, + 160,224,2,53,69,64,0,160,160,224,2,53,69,160,0,160, + 160,224,2,53,69,32,0,160,64,64,2,53,69,128,192,160, + 192,128,1,54,70,64,160,192,160,224,128,2,53,69,128,64, + 96,160,96,2,53,69,32,64,96,160,96,2,53,69,96,0, + 96,160,96,2,69,69,80,160,96,160,96,2,53,69,160,0, + 96,160,96,2,53,69,64,0,96,160,96,2,68,68,112,176, + 160,112,1,53,69,64,160,128,96,64,2,53,69,128,64,160, + 192,96,2,53,69,32,64,160,192,96,2,53,69,192,64,160, + 192,96,2,53,69,160,64,160,192,96,2,53,69,128,64,64, + 64,224,2,53,69,32,192,64,64,224,2,53,69,64,160,64, + 64,224,2,53,69,160,0,192,64,224,2,53,69,160,64,96, + 160,64,2,69,69,80,160,192,160,160,2,53,69,128,64,64, + 160,64,2,53,69,32,64,64,160,64,2,53,69,64,0,64, + 160,64,2,53,69,224,0,64,160,64,2,53,69,160,0,64, + 160,64,2,53,69,64,0,224,0,64,2,52,68,96,160,160, + 192,2,53,69,128,64,160,160,96,2,53,69,32,64,160,160, + 96,2,53,69,64,0,160,160,96,2,53,69,160,0,160,160, + 96,1,54,70,32,64,160,224,32,192,1,54,70,128,128,192, + 160,192,128,1,54,70,160,0,160,224,32,192}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--6-60-75-75-C-40-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 4 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_4x6r[734] U8G_SECTION(".progmem.u8g_font_4x6r") = { + 1,4,6,0,255,5,1,3,1,250,32,127,255,5,255,5, + 255,7,0,64,18,21,69,128,128,128,0,128,5,50,66,160, + 160,2,69,69,160,240,160,240,160,1,54,70,64,224,192,32, + 224,64,2,53,69,128,32,64,128,32,2,69,69,64,160,64, + 160,80,21,18,66,128,128,17,38,70,64,128,128,128,128,64, + 1,38,70,128,64,64,64,64,128,2,53,69,160,64,224,64, + 160,2,53,69,64,64,224,64,64,1,34,66,64,128,4,49, + 65,224,18,17,65,128,2,53,69,32,32,64,128,128,2,53, + 69,64,160,224,160,64,2,53,69,64,192,64,64,224,2,53, + 69,64,160,32,64,224,2,53,69,224,32,64,32,192,2,53, + 69,160,160,224,32,32,2,53,69,224,128,192,32,192,2,53, + 69,96,128,192,160,64,2,53,69,224,32,64,128,128,2,53, + 69,96,160,64,160,192,2,53,69,64,160,96,32,192,18,20, + 68,128,0,0,128,1,37,69,64,0,0,64,128,2,53,69, + 32,64,128,64,32,3,51,67,224,0,224,2,53,69,128,64, + 32,64,128,2,53,69,192,32,64,0,64,2,53,69,96,160, + 160,128,96,2,53,69,64,160,224,160,160,2,53,69,192,160, + 192,160,192,2,53,69,64,160,128,160,64,2,53,69,192,160, + 160,160,192,2,53,69,224,128,192,128,224,2,53,69,224,128, + 192,128,128,2,53,69,96,128,160,160,96,2,53,69,160,160, + 224,160,160,2,53,69,224,64,64,64,224,2,53,69,32,32, + 32,160,64,2,53,69,160,160,192,160,160,2,53,69,128,128, + 128,128,224,2,53,69,160,224,224,160,160,2,53,69,32,160, + 224,160,128,2,53,69,64,160,160,160,64,2,53,69,192,160, + 192,128,128,1,54,70,64,160,160,160,64,32,2,53,69,192, + 160,192,160,160,2,53,69,96,128,64,32,192,2,53,69,224, + 64,64,64,64,2,53,69,160,160,160,160,224,2,53,69,160, + 160,160,224,64,2,53,69,160,160,224,224,160,2,53,69,160, + 160,64,160,160,2,53,69,160,160,64,64,64,2,53,69,224, + 32,64,128,224,18,37,69,192,128,128,128,192,2,53,69,128, + 128,64,32,32,2,37,69,192,64,64,64,192,5,50,66,64, + 160,1,49,65,224,21,34,66,128,64,2,52,68,96,160,160, + 96,2,53,69,128,192,160,160,192,2,52,68,96,128,128,96, + 2,53,69,32,96,160,160,96,2,52,68,64,160,192,96,2, + 53,69,32,64,224,64,64,1,53,69,96,160,96,32,192,2, + 53,69,128,192,160,160,160,2,53,69,64,0,192,64,224,1, + 54,70,32,0,32,32,32,192,2,53,69,128,160,192,160,160, + 2,53,69,192,64,64,64,224,2,52,68,160,224,160,160,2, + 52,68,192,160,160,160,2,52,68,64,160,160,64,1,53,69, + 192,160,192,128,128,1,53,69,96,160,160,96,32,2,52,68, + 160,192,128,128,2,52,68,96,192,32,192,2,53,69,64,224, + 64,64,32,2,52,68,160,160,160,96,2,52,68,160,160,160, + 64,2,52,68,160,160,224,160,2,52,68,160,64,64,160,1, + 53,69,160,160,96,32,192,2,52,68,224,32,64,224,1,54, + 70,32,64,192,64,64,32,18,21,69,128,128,128,128,128,1, + 54,70,128,64,96,64,64,128,5,66,66,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 7 x= 2 y= 6 dx= 5 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x7[1624] U8G_SECTION(".progmem.u8g_font_5x7") = { + 1,5,7,0,255,6,1,21,2,39,32,255,255,6,255,6, + 255,8,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,85,85,80,248,80,248,80,2,85,85,112,160, + 112,40,112,2,70,86,128,144,32,64,144,16,2,69,85,64, + 160,64,160,80,37,19,83,128,128,128,18,38,86,64,128,128, + 128,128,64,18,38,86,128,64,64,64,64,128,18,53,85,160, + 64,224,64,160,2,85,85,32,32,248,32,32,17,51,83,96, + 64,128,4,65,81,240,18,34,82,192,192,3,68,84,16,32, + 64,128,18,54,86,64,160,160,160,160,64,18,54,86,64,192, + 64,64,64,224,2,70,86,96,144,16,32,64,240,2,70,86, + 240,16,96,16,144,96,2,70,86,32,96,160,240,32,32,2, + 70,86,240,128,224,16,144,96,2,70,86,96,128,224,144,144, + 96,2,70,86,240,16,32,32,64,64,2,70,86,96,144,96, + 144,144,96,2,70,86,96,144,144,112,16,96,18,37,85,192, + 192,0,192,192,1,54,86,96,96,0,96,64,128,18,53,85, + 32,64,128,64,32,3,67,83,240,0,240,18,53,85,128,64, + 32,64,128,18,54,86,64,160,32,64,0,64,2,70,86,96, + 144,176,176,128,96,2,70,86,96,144,144,240,144,144,2,70, + 86,224,144,224,144,144,224,2,70,86,96,144,128,128,144,96, + 2,70,86,224,144,144,144,144,224,2,70,86,240,128,224,128, + 128,240,2,70,86,240,128,224,128,128,128,2,70,86,96,144, + 128,176,144,112,2,70,86,144,144,240,144,144,144,18,54,86, + 224,64,64,64,64,224,2,70,86,16,16,16,16,144,96,2, + 70,86,144,160,192,192,160,144,2,70,86,128,128,128,128,128, + 240,2,70,86,144,240,240,144,144,144,2,70,86,144,208,208, + 176,176,144,2,70,86,96,144,144,144,144,96,2,70,86,224, + 144,144,224,128,128,1,71,87,96,144,144,144,208,96,16,2, + 70,86,224,144,144,224,160,144,2,70,86,96,144,64,32,144, + 96,18,54,86,224,64,64,64,64,64,2,70,86,144,144,144, + 144,144,96,2,70,86,144,144,144,144,96,96,2,70,86,144, + 144,144,240,240,144,2,70,86,144,144,96,96,144,144,18,54, + 86,160,160,160,64,64,64,2,70,86,240,16,32,64,128,240, + 18,54,86,224,128,128,128,128,224,3,68,84,128,64,32,16, + 18,54,86,224,32,32,32,32,224,22,50,82,64,160,2,65, + 81,240,22,34,82,128,64,2,68,84,112,144,176,80,2,70, + 86,128,128,224,144,144,224,2,52,84,96,128,128,96,2,70, + 86,16,16,112,144,144,112,2,68,84,96,176,192,96,2,70, + 86,32,80,64,224,64,64,1,69,85,112,144,96,128,112,2, + 70,86,128,128,224,144,144,144,18,54,86,64,0,192,64,64, + 224,17,55,87,32,0,32,32,32,160,64,2,70,86,128,128, + 160,192,160,144,18,54,86,192,64,64,64,64,224,2,68,84, + 160,240,144,144,2,68,84,224,144,144,144,2,68,84,96,144, + 144,96,1,69,85,224,144,144,224,128,1,69,85,112,144,144, + 112,16,2,68,84,224,144,128,128,2,68,84,112,192,48,224, + 2,70,86,64,64,224,64,64,48,2,68,84,144,144,144,112, + 18,52,84,160,160,160,64,2,68,84,144,144,240,240,2,68, + 84,144,96,96,144,1,69,85,144,144,80,32,64,2,68,84, + 240,32,64,240,18,54,86,32,64,192,64,64,32,34,22,86, + 128,128,128,128,128,128,18,54,86,128,64,96,64,64,128,6, + 66,82,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,8,0,80,34,22,86,128,0,128,128,128, + 128,1,70,86,32,112,160,160,112,32,2,69,85,48,64,224, + 64,176,2,85,85,136,112,80,112,136,18,54,86,160,160,64, + 224,64,64,34,21,85,128,128,0,128,128,17,55,87,96,128, + 192,160,96,32,192,23,49,81,160,1,87,87,112,136,168,200, + 168,136,112,5,51,83,96,160,96,3,83,83,72,144,72,3, + 66,82,240,16,20,49,81,224,1,87,87,112,136,232,200,200, + 136,112,7,65,81,240,21,51,83,64,160,64,2,86,86,32, + 32,248,32,32,248,20,36,84,192,64,128,192,20,36,84,192, + 192,64,192,22,34,82,64,128,1,69,85,144,144,144,224,128, + 2,70,86,112,208,208,80,80,80,20,34,82,192,192,17,34, + 82,64,128,20,52,84,64,192,64,224,5,51,83,64,160,64, + 3,83,83,144,72,144,1,71,87,128,128,128,144,48,112,16, + 1,71,87,128,128,128,176,16,32,48,1,71,87,192,192,64, + 208,48,112,16,18,54,86,64,0,64,128,160,64,2,70,86, + 96,144,144,240,144,144,2,70,86,96,144,144,240,144,144,2, + 70,86,96,144,144,240,144,144,2,70,86,96,144,144,240,144, + 144,2,70,86,144,96,144,240,144,144,2,70,86,96,96,144, + 240,144,144,2,70,86,112,160,176,224,160,176,1,71,87,96, + 144,128,128,144,96,64,2,70,86,240,128,224,128,128,240,2, + 70,86,240,128,224,128,128,240,2,70,86,240,128,224,128,128, + 240,2,70,86,240,128,224,128,128,240,18,54,86,224,64,64, + 64,64,224,18,54,86,224,64,64,64,64,224,18,54,86,224, + 64,64,64,64,224,18,54,86,224,64,64,64,64,224,2,70, + 86,224,80,208,80,80,224,2,70,86,176,144,208,176,176,144, + 2,70,86,96,144,144,144,144,96,2,70,86,96,144,144,144, + 144,96,2,70,86,96,144,144,144,144,96,2,70,86,96,144, + 144,144,144,96,2,70,86,144,96,144,144,144,96,2,68,84, + 144,96,96,144,2,70,86,112,176,176,208,208,224,2,70,86, + 144,144,144,144,144,96,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,144,96,2,70,86,144,0,144,144,144, + 96,18,54,86,160,160,160,64,64,64,2,70,86,128,224,144, + 224,128,128,2,70,86,96,144,160,144,144,160,2,70,86,64, + 32,112,144,176,80,2,70,86,32,64,112,144,176,80,2,70, + 86,32,80,112,144,176,80,2,70,86,80,160,112,144,176,80, + 2,70,86,80,0,112,144,176,80,2,70,86,96,96,112,144, + 176,80,2,68,84,112,176,160,112,17,53,85,96,128,128,96, + 64,2,70,86,64,32,96,176,192,96,2,70,86,32,64,96, + 176,192,96,2,70,86,64,160,96,176,192,96,2,70,86,160, + 0,96,176,192,96,18,54,86,128,64,192,64,64,224,18,54, + 86,64,128,192,64,64,224,18,54,86,64,160,192,64,64,224, + 18,54,86,160,0,192,64,64,224,2,70,86,64,48,96,144, + 144,96,2,70,86,80,160,224,144,144,144,2,70,86,64,32, + 96,144,144,96,2,70,86,32,64,96,144,144,96,2,70,86, + 96,0,96,144,144,96,2,70,86,80,160,96,144,144,96,2, + 70,86,80,0,96,144,144,96,2,69,85,96,0,240,0,96, + 2,68,84,112,176,208,224,2,70,86,64,32,144,144,144,112, + 2,70,86,32,64,144,144,144,112,2,70,86,96,0,144,144, + 144,112,2,70,86,80,0,144,144,144,112,1,71,87,32,64, + 144,144,80,32,64,1,70,86,128,224,144,144,224,128,1,71, + 87,80,0,144,144,80,32,64}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 7 x= 2 y= 6 dx= 5 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x7r[789] U8G_SECTION(".progmem.u8g_font_5x7r") = { + 1,5,7,0,255,6,1,21,2,39,32,127,255,6,255,6, + 255,8,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,85,85,80,248,80,248,80,2,85,85,112,160, + 112,40,112,2,70,86,128,144,32,64,144,16,2,69,85,64, + 160,64,160,80,37,19,83,128,128,128,18,38,86,64,128,128, + 128,128,64,18,38,86,128,64,64,64,64,128,18,53,85,160, + 64,224,64,160,2,85,85,32,32,248,32,32,17,51,83,96, + 64,128,4,65,81,240,18,34,82,192,192,3,68,84,16,32, + 64,128,18,54,86,64,160,160,160,160,64,18,54,86,64,192, + 64,64,64,224,2,70,86,96,144,16,32,64,240,2,70,86, + 240,16,96,16,144,96,2,70,86,32,96,160,240,32,32,2, + 70,86,240,128,224,16,144,96,2,70,86,96,128,224,144,144, + 96,2,70,86,240,16,32,32,64,64,2,70,86,96,144,96, + 144,144,96,2,70,86,96,144,144,112,16,96,18,37,85,192, + 192,0,192,192,1,54,86,96,96,0,96,64,128,18,53,85, + 32,64,128,64,32,3,67,83,240,0,240,18,53,85,128,64, + 32,64,128,18,54,86,64,160,32,64,0,64,2,70,86,96, + 144,176,176,128,96,2,70,86,96,144,144,240,144,144,2,70, + 86,224,144,224,144,144,224,2,70,86,96,144,128,128,144,96, + 2,70,86,224,144,144,144,144,224,2,70,86,240,128,224,128, + 128,240,2,70,86,240,128,224,128,128,128,2,70,86,96,144, + 128,176,144,112,2,70,86,144,144,240,144,144,144,18,54,86, + 224,64,64,64,64,224,2,70,86,16,16,16,16,144,96,2, + 70,86,144,160,192,192,160,144,2,70,86,128,128,128,128,128, + 240,2,70,86,144,240,240,144,144,144,2,70,86,144,208,208, + 176,176,144,2,70,86,96,144,144,144,144,96,2,70,86,224, + 144,144,224,128,128,1,71,87,96,144,144,144,208,96,16,2, + 70,86,224,144,144,224,160,144,2,70,86,96,144,64,32,144, + 96,18,54,86,224,64,64,64,64,64,2,70,86,144,144,144, + 144,144,96,2,70,86,144,144,144,144,96,96,2,70,86,144, + 144,144,240,240,144,2,70,86,144,144,96,96,144,144,18,54, + 86,160,160,160,64,64,64,2,70,86,240,16,32,64,128,240, + 18,54,86,224,128,128,128,128,224,3,68,84,128,64,32,16, + 18,54,86,224,32,32,32,32,224,22,50,82,64,160,2,65, + 81,240,22,34,82,128,64,2,68,84,112,144,176,80,2,70, + 86,128,128,224,144,144,224,2,52,84,96,128,128,96,2,70, + 86,16,16,112,144,144,112,2,68,84,96,176,192,96,2,70, + 86,32,80,64,224,64,64,1,69,85,112,144,96,128,112,2, + 70,86,128,128,224,144,144,144,18,54,86,64,0,192,64,64, + 224,17,55,87,32,0,32,32,32,160,64,2,70,86,128,128, + 160,192,160,144,18,54,86,192,64,64,64,64,224,2,68,84, + 160,240,144,144,2,68,84,224,144,144,144,2,68,84,96,144, + 144,96,1,69,85,224,144,144,224,128,1,69,85,112,144,144, + 112,16,2,68,84,224,144,128,128,2,68,84,112,192,48,224, + 2,70,86,64,64,224,64,64,48,2,68,84,144,144,144,112, + 18,52,84,160,160,160,64,2,68,84,144,144,240,240,2,68, + 84,144,96,96,144,1,69,85,144,144,80,32,64,2,68,84, + 240,32,64,240,18,54,86,32,64,192,64,64,32,34,22,86, + 128,128,128,128,128,128,18,54,86,128,64,96,64,64,128,6, + 66,82,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 5 dy= 0 ascent= 7 len= 8 + Font Bounding box w= 5 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x8[1693] U8G_SECTION(".progmem.u8g_font_5x8") = { + 1,5,8,0,255,6,1,33,2,53,32,255,255,7,255,6, + 255,9,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,87,87,80,80,248,80,248,80,80,2,87,87, + 32,112,160,112,40,112,32,19,53,85,128,160,64,160,32,2, + 71,87,64,160,160,64,160,160,80,37,19,83,128,128,128,18, + 38,86,64,128,128,128,128,64,18,38,86,128,64,64,64,64, + 128,2,69,85,144,96,240,96,144,2,85,85,32,32,248,32, + 32,17,51,83,96,64,128,4,65,81,240,17,51,83,64,224, + 64,2,70,86,16,16,32,64,128,128,18,54,86,64,160,160, + 160,160,64,18,54,86,64,192,64,64,64,224,2,70,86,96, + 144,16,96,128,240,2,70,86,240,32,96,16,144,96,2,70, + 86,32,96,160,240,32,32,2,70,86,240,128,224,16,144,96, + 2,70,86,96,128,224,144,144,96,2,70,86,240,16,32,32, + 64,64,2,70,86,96,144,96,144,144,96,2,70,86,96,144, + 144,112,16,96,18,37,85,192,192,0,192,192,17,54,86,96, + 96,0,96,64,128,18,54,86,32,64,128,128,64,32,3,67, + 83,240,0,240,18,54,86,128,64,32,32,64,128,18,54,86, + 64,160,32,64,0,64,1,88,88,48,72,152,168,168,144,64, + 48,2,70,86,96,144,144,240,144,144,2,70,86,224,144,224, + 144,144,224,2,70,86,96,144,128,128,144,96,2,70,86,224, + 144,144,144,144,224,2,70,86,240,128,224,128,128,240,2,70, + 86,240,128,224,128,128,128,2,70,86,96,144,128,176,144,96, + 2,70,86,144,144,240,144,144,144,18,54,86,224,64,64,64, + 64,224,2,70,86,112,32,32,32,160,64,2,70,86,144,160, + 192,160,160,144,2,70,86,128,128,128,128,128,240,2,70,86, + 144,240,240,144,144,144,2,70,86,144,208,240,176,176,144,2, + 70,86,96,144,144,144,144,96,2,70,86,224,144,144,224,128, + 128,1,71,87,96,144,144,208,176,96,16,2,70,86,224,144, + 144,224,144,144,2,70,86,96,144,64,32,144,96,18,54,86, + 224,64,64,64,64,64,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,96,96,2,70,86,144,144,144,240,240, + 144,2,70,86,144,144,96,96,144,144,2,86,86,136,136,80, + 32,32,32,2,70,86,240,16,32,64,128,240,18,54,86,224, + 128,128,128,128,224,2,70,86,128,128,64,32,16,16,18,54, + 86,224,32,32,32,32,224,22,50,82,64,160,1,65,81,240, + 22,34,82,128,64,2,68,84,112,144,144,112,2,70,86,128, + 128,224,144,144,224,18,52,84,96,128,128,96,2,70,86,16, + 16,112,144,144,112,2,68,84,96,176,192,96,2,70,86,32, + 80,64,224,64,64,1,69,85,96,144,112,16,96,2,70,86, + 128,128,224,144,144,144,18,54,86,64,0,192,64,64,224,17, + 55,87,32,0,32,32,32,160,64,2,70,86,128,128,144,224, + 144,144,18,54,86,192,64,64,64,64,224,2,84,84,208,168, + 168,168,2,68,84,224,144,144,144,2,68,84,96,144,144,96, + 1,69,85,224,144,224,128,128,1,69,85,112,144,112,16,16, + 2,68,84,160,208,128,128,18,52,84,96,192,32,192,2,70, + 86,64,64,224,64,80,32,2,68,84,144,144,144,112,18,52, + 84,160,160,160,64,2,84,84,136,168,168,80,2,68,84,144, + 96,96,144,1,69,85,144,144,112,144,96,2,68,84,240,32, + 64,240,2,71,87,48,64,32,192,32,64,48,34,22,86,128, + 128,128,128,128,128,2,71,87,192,32,64,48,64,32,192,6, + 66,82,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,9,0,80,34,22,86,128,0,128,128,128, + 128,1,70,86,32,112,160,160,112,32,2,70,86,32,80,224, + 64,80,160,2,85,85,136,112,80,112,136,2,86,86,136,80, + 248,32,248,32,34,23,87,128,128,128,0,128,128,128,2,71, + 87,112,128,224,144,112,16,224,23,49,81,160,2,86,86,112, + 168,200,200,168,112,20,53,85,96,160,96,0,224,3,67,83, + 80,160,80,18,51,83,224,32,32,20,49,81,224,2,86,86, + 112,232,216,232,216,112,23,49,81,224,21,51,83,64,160,64, + 18,53,85,64,224,64,0,224,20,53,85,64,160,32,64,224, + 20,53,85,192,32,192,32,192,22,34,82,64,128,1,69,85, + 144,144,144,224,128,2,86,86,120,232,232,104,40,40,36,17, + 81,128,17,34,82,64,128,20,53,85,64,192,64,64,224,20, + 53,85,64,160,64,0,224,3,67,83,160,80,160,2,71,87, + 128,128,128,160,96,240,32,2,71,87,128,128,160,208,16,32, + 112,2,71,87,128,64,128,96,160,240,32,18,54,86,64,0, + 64,128,160,64,2,71,87,64,32,96,144,240,144,144,2,71, + 87,32,64,96,144,240,144,144,2,71,87,96,144,96,144,240, + 144,144,2,71,87,80,160,96,144,240,144,144,2,71,87,144, + 0,96,144,240,144,144,2,71,87,96,144,96,144,240,144,144, + 2,70,86,112,160,160,240,160,176,1,71,87,96,144,128,128, + 144,96,64,2,71,87,64,32,240,128,224,128,240,2,71,87, + 32,64,240,128,224,128,240,2,71,87,96,144,240,128,224,128, + 240,2,71,87,144,0,240,128,224,128,240,18,55,87,128,64, + 224,64,64,64,224,18,55,87,32,64,224,64,64,64,224,18, + 55,87,64,160,224,64,64,64,224,18,55,87,160,0,224,64, + 64,64,224,2,86,86,112,72,232,72,72,112,2,71,87,80, + 160,144,208,176,144,144,2,71,87,64,32,96,144,144,144,96, + 2,71,87,32,64,96,144,144,144,96,2,71,87,96,144,96, + 144,144,144,96,2,71,87,80,160,96,144,144,144,96,2,71, + 87,144,0,96,144,144,144,96,18,51,83,160,64,160,2,70, + 86,112,176,176,208,208,224,2,71,87,64,32,144,144,144,144, + 96,2,71,87,32,64,144,144,144,144,96,2,71,87,96,144, + 144,144,144,144,96,2,71,87,144,0,144,144,144,144,96,2, + 87,87,16,32,136,80,32,32,32,2,70,86,128,224,144,144, + 224,128,2,70,86,96,144,160,160,144,160,2,71,87,64,32, + 0,112,144,144,112,2,71,87,32,64,0,112,144,144,112,2, + 71,87,32,80,0,112,144,144,112,2,71,87,80,160,0,112, + 144,144,112,2,70,86,80,0,112,144,144,112,2,71,87,96, + 144,96,112,144,144,112,2,84,84,240,104,176,120,17,53,85, + 96,128,128,96,64,2,71,87,64,32,0,96,176,192,96,2, + 71,87,32,64,0,96,176,192,96,2,71,87,96,144,0,96, + 176,192,96,2,70,86,80,0,96,176,192,96,18,55,87,128, + 64,0,192,64,64,224,18,55,87,32,64,0,192,64,64,224, + 18,55,87,64,160,0,192,64,64,224,18,54,86,160,0,192, + 64,64,224,2,71,87,160,64,160,16,112,144,96,2,71,87, + 80,160,0,224,144,144,144,2,71,87,64,32,0,96,144,144, + 96,2,71,87,32,64,0,96,144,144,96,2,71,87,96,144, + 0,96,144,144,96,2,71,87,80,160,0,96,144,144,96,2, + 70,86,144,0,96,144,144,96,18,53,85,64,0,224,0,64, + 2,68,84,112,176,208,224,2,71,87,64,32,0,144,144,144, + 112,2,71,87,32,64,0,144,144,144,112,2,71,87,96,144, + 0,144,144,144,112,2,70,86,144,0,144,144,144,112,1,72, + 88,32,64,0,144,144,112,144,96,1,71,87,128,128,224,144, + 224,128,128,1,71,87,144,0,144,144,112,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 5 dy= 0 ascent= 7 len= 8 + Font Bounding box w= 5 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x8r[805] U8G_SECTION(".progmem.u8g_font_5x8r") = { + 1,5,8,0,255,6,1,33,2,53,32,127,255,7,255,6, + 255,9,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,87,87,80,80,248,80,248,80,80,2,87,87, + 32,112,160,112,40,112,32,19,53,85,128,160,64,160,32,2, + 71,87,64,160,160,64,160,160,80,37,19,83,128,128,128,18, + 38,86,64,128,128,128,128,64,18,38,86,128,64,64,64,64, + 128,2,69,85,144,96,240,96,144,2,85,85,32,32,248,32, + 32,17,51,83,96,64,128,4,65,81,240,17,51,83,64,224, + 64,2,70,86,16,16,32,64,128,128,18,54,86,64,160,160, + 160,160,64,18,54,86,64,192,64,64,64,224,2,70,86,96, + 144,16,96,128,240,2,70,86,240,32,96,16,144,96,2,70, + 86,32,96,160,240,32,32,2,70,86,240,128,224,16,144,96, + 2,70,86,96,128,224,144,144,96,2,70,86,240,16,32,32, + 64,64,2,70,86,96,144,96,144,144,96,2,70,86,96,144, + 144,112,16,96,18,37,85,192,192,0,192,192,17,54,86,96, + 96,0,96,64,128,18,54,86,32,64,128,128,64,32,3,67, + 83,240,0,240,18,54,86,128,64,32,32,64,128,18,54,86, + 64,160,32,64,0,64,1,88,88,48,72,152,168,168,144,64, + 48,2,70,86,96,144,144,240,144,144,2,70,86,224,144,224, + 144,144,224,2,70,86,96,144,128,128,144,96,2,70,86,224, + 144,144,144,144,224,2,70,86,240,128,224,128,128,240,2,70, + 86,240,128,224,128,128,128,2,70,86,96,144,128,176,144,96, + 2,70,86,144,144,240,144,144,144,18,54,86,224,64,64,64, + 64,224,2,70,86,112,32,32,32,160,64,2,70,86,144,160, + 192,160,160,144,2,70,86,128,128,128,128,128,240,2,70,86, + 144,240,240,144,144,144,2,70,86,144,208,240,176,176,144,2, + 70,86,96,144,144,144,144,96,2,70,86,224,144,144,224,128, + 128,1,71,87,96,144,144,208,176,96,16,2,70,86,224,144, + 144,224,144,144,2,70,86,96,144,64,32,144,96,18,54,86, + 224,64,64,64,64,64,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,96,96,2,70,86,144,144,144,240,240, + 144,2,70,86,144,144,96,96,144,144,2,86,86,136,136,80, + 32,32,32,2,70,86,240,16,32,64,128,240,18,54,86,224, + 128,128,128,128,224,2,70,86,128,128,64,32,16,16,18,54, + 86,224,32,32,32,32,224,22,50,82,64,160,1,65,81,240, + 22,34,82,128,64,2,68,84,112,144,144,112,2,70,86,128, + 128,224,144,144,224,18,52,84,96,128,128,96,2,70,86,16, + 16,112,144,144,112,2,68,84,96,176,192,96,2,70,86,32, + 80,64,224,64,64,1,69,85,96,144,112,16,96,2,70,86, + 128,128,224,144,144,144,18,54,86,64,0,192,64,64,224,17, + 55,87,32,0,32,32,32,160,64,2,70,86,128,128,144,224, + 144,144,18,54,86,192,64,64,64,64,224,2,84,84,208,168, + 168,168,2,68,84,224,144,144,144,2,68,84,96,144,144,96, + 1,69,85,224,144,224,128,128,1,69,85,112,144,112,16,16, + 2,68,84,160,208,128,128,18,52,84,96,192,32,192,2,70, + 86,64,64,224,64,80,32,2,68,84,144,144,144,112,18,52, + 84,160,160,160,64,2,84,84,136,168,168,80,2,68,84,144, + 96,96,144,1,69,85,144,144,112,144,96,2,68,84,240,32, + 64,240,2,71,87,48,64,32,192,32,64,48,34,22,86,128, + 128,128,128,128,128,2,71,87,192,32,64,48,64,32,192,6, + 66,82,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h= 9 x= 2 y= 8 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w= 6 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x10[1866] U8G_SECTION(".progmem.u8g_font_6x10") = { + 1,6,10,0,254,7,1,54,2,104,32,255,254,8,254,7, + 254,10,0,96,34,23,103,128,128,128,128,128,0,128,22,51, + 99,160,160,160,2,87,103,80,80,248,80,248,80,80,2,87, + 103,32,112,160,112,40,112,32,2,87,103,72,168,80,32,80, + 168,144,2,87,103,64,160,160,64,168,144,104,38,19,99,128, + 128,128,18,55,103,32,64,128,128,128,64,32,18,55,103,128, + 64,32,32,32,64,128,3,85,101,136,80,248,80,136,3,85, + 101,32,32,248,32,32,17,51,99,96,64,128,5,81,97,248, + 17,51,99,64,224,64,2,87,103,8,8,16,32,64,128,128, + 2,87,103,32,80,136,136,136,80,32,2,87,103,32,96,160, + 32,32,32,248,2,87,103,112,136,8,48,64,128,248,2,87, + 103,248,8,16,48,8,136,112,2,87,103,16,48,80,144,248, + 16,16,2,87,103,248,128,176,200,8,136,112,2,87,103,48, + 64,128,176,200,136,112,2,87,103,248,8,16,16,32,64,64, + 2,87,103,112,136,136,112,136,136,112,2,87,103,112,136,152, + 104,8,16,96,17,55,103,64,224,64,0,64,224,64,17,55, + 103,64,224,64,0,96,64,128,18,71,103,16,32,64,128,64, + 32,16,4,83,99,248,0,248,18,71,103,128,64,32,16,32, + 64,128,2,87,103,112,136,16,32,32,0,32,2,87,103,112, + 136,152,168,176,128,112,2,87,103,32,80,136,136,248,136,136, + 2,87,103,240,72,72,112,72,72,240,2,87,103,112,136,128, + 128,128,136,112,2,87,103,240,72,72,72,72,72,240,2,87, + 103,248,128,128,240,128,128,248,2,87,103,248,128,128,240,128, + 128,128,2,87,103,112,136,128,128,152,136,112,2,87,103,136, + 136,136,248,136,136,136,18,55,103,224,64,64,64,64,64,224, + 2,87,103,56,16,16,16,16,144,96,2,87,103,136,144,160, + 192,160,144,136,2,87,103,128,128,128,128,128,128,248,2,87, + 103,136,136,216,168,136,136,136,2,87,103,136,136,200,168,152, + 136,136,2,87,103,112,136,136,136,136,136,112,2,87,103,240, + 136,136,240,128,128,128,1,88,104,112,136,136,136,136,168,112, + 8,2,87,103,240,136,136,240,160,144,136,2,87,103,112,136, + 128,112,8,136,112,2,87,103,248,32,32,32,32,32,32,2, + 87,103,136,136,136,136,136,136,112,2,87,103,136,136,136,80, + 80,80,32,2,87,103,136,136,136,168,168,216,136,2,87,103, + 136,136,80,32,80,136,136,2,87,103,136,136,80,32,32,32, + 32,2,87,103,248,8,16,32,64,128,248,18,55,103,224,128, + 128,128,128,128,224,2,87,103,128,128,64,32,16,8,8,18, + 55,103,224,32,32,32,32,32,224,6,83,99,32,80,136,1, + 81,97,248,40,34,98,128,64,2,85,101,112,8,120,136,120, + 2,87,103,128,128,176,200,136,200,176,2,85,101,112,136,128, + 136,112,2,87,103,8,8,104,152,136,152,104,2,85,101,112, + 136,248,128,112,2,87,103,48,72,64,240,64,64,64,0,87, + 103,120,136,136,120,8,136,112,2,87,103,128,128,176,200,136, + 136,136,18,55,103,64,0,192,64,64,64,224,16,73,105,16, + 0,48,16,16,16,144,144,96,2,87,103,128,128,136,144,224, + 144,136,18,55,103,192,64,64,64,64,64,224,2,85,101,208, + 168,168,168,136,2,85,101,176,200,136,136,136,2,85,101,112, + 136,136,136,112,0,87,103,176,200,136,200,176,128,128,0,87, + 103,104,152,136,152,104,8,8,2,85,101,176,200,128,128,128, + 2,85,101,112,128,112,8,240,2,87,103,64,64,240,64,64, + 72,48,2,85,101,136,136,136,152,104,2,85,101,136,136,80, + 80,32,2,85,101,136,136,168,168,80,2,85,101,136,80,32, + 80,136,0,87,103,136,136,152,104,8,136,112,2,85,101,248, + 16,32,64,248,18,71,103,48,64,32,192,32,64,48,34,23, + 103,128,128,128,128,128,128,128,18,71,103,192,32,64,48,64, + 32,192,6,83,99,72,168,144,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,10,0,96,34,23,103,128, + 0,128,128,128,128,128,1,87,103,32,120,160,160,160,120,32, + 2,87,103,48,72,64,224,64,72,176,2,85,101,136,112,80, + 112,136,1,88,104,136,136,80,32,248,32,32,32,34,23,103, + 128,128,128,0,128,128,128,1,88,104,112,128,224,144,72,56, + 8,112,25,49,97,160,2,87,103,112,136,168,200,168,136,112, + 19,70,102,112,144,176,80,0,240,2,101,101,36,72,144,72, + 36,20,66,98,240,16,21,65,97,240,2,87,103,112,136,232, + 200,200,136,112,9,81,97,248,22,51,99,64,160,64,2,86, + 102,32,32,248,32,32,248,21,69,101,96,144,32,64,240,21, + 69,101,224,16,96,16,224,40,34,98,64,128,1,86,102,136, + 136,136,200,176,128,2,87,103,120,232,232,104,40,40,40,37, + 17,97,128,32,34,98,64,128,21,53,101,64,192,64,64,224, + 19,70,102,96,144,144,96,0,240,2,101,101,144,72,36,72, + 144,1,105,105,64,192,64,64,228,12,20,60,4,1,105,105, + 64,192,64,64,232,20,4,8,28,1,89,105,192,32,64,32, + 200,24,40,120,8,2,87,103,32,0,32,32,64,136,112,2, + 88,104,64,32,112,136,136,248,136,136,2,88,104,16,32,112, + 136,136,248,136,136,2,88,104,32,80,112,136,136,248,136,136, + 2,88,104,72,176,112,136,136,248,136,136,2,88,104,80,0, + 112,136,136,248,136,136,2,88,104,32,80,112,136,136,248,136, + 136,2,103,103,60,80,144,156,240,144,156,0,89,105,112,136, + 128,128,128,136,112,32,64,2,88,104,64,248,128,128,240,128, + 128,248,2,88,104,16,248,128,128,240,128,128,248,2,88,104, + 32,248,128,128,240,128,128,248,2,88,104,80,248,128,128,240, + 128,128,248,18,56,104,128,64,224,64,64,64,64,224,18,56, + 104,32,64,224,64,64,64,64,224,18,56,104,64,160,224,64, + 64,64,64,224,18,56,104,160,0,224,64,64,64,64,224,2, + 87,103,240,72,72,232,72,72,240,2,88,104,40,80,136,200, + 168,152,136,136,2,88,104,64,32,112,136,136,136,136,112,2, + 88,104,16,32,112,136,136,136,136,112,2,88,104,32,80,112, + 136,136,136,136,112,2,88,104,40,80,112,136,136,136,136,112, + 2,88,104,80,0,112,136,136,136,136,112,2,85,101,136,80, + 32,80,136,2,87,103,112,152,152,168,200,200,112,2,88,104, + 64,32,136,136,136,136,136,112,2,88,104,16,32,136,136,136, + 136,136,112,2,88,104,32,80,0,136,136,136,136,112,2,88, + 104,80,0,136,136,136,136,136,112,2,88,104,16,32,136,136, + 80,32,32,32,2,87,103,128,240,136,240,128,128,128,2,87, + 103,112,136,144,160,144,136,176,2,88,104,64,32,0,112,8, + 120,136,120,2,88,104,16,32,0,112,8,120,136,120,2,88, + 104,32,80,0,112,8,120,136,120,2,88,104,40,80,0,112, + 8,120,136,120,2,87,103,80,0,112,8,120,136,120,2,88, + 104,32,80,32,112,8,120,136,120,2,101,101,120,20,124,144, + 124,0,87,103,112,136,128,136,112,32,64,2,88,104,64,32, + 0,112,136,248,128,112,2,88,104,16,32,0,112,136,248,128, + 112,2,88,104,32,80,0,112,136,248,128,112,2,87,103,80, + 0,112,136,248,128,112,18,56,104,128,64,0,192,64,64,64, + 224,18,56,104,64,128,0,192,64,64,64,224,18,56,104,64, + 160,0,192,64,64,64,224,18,55,103,160,0,192,64,64,64, + 224,2,87,103,192,48,112,136,136,136,112,2,88,104,40,80, + 0,176,200,136,136,136,2,88,104,64,32,0,112,136,136,136, + 112,2,88,104,16,32,0,112,136,136,136,112,2,88,104,32, + 80,0,112,136,136,136,112,2,88,104,40,80,0,112,136,136, + 136,112,2,87,103,80,0,112,136,136,136,112,3,85,101,32, + 0,248,0,32,2,85,101,120,152,168,200,240,2,88,104,64, + 32,0,136,136,136,152,104,2,88,104,16,32,0,136,136,136, + 152,104,2,88,104,32,80,0,136,136,136,152,104,2,87,103, + 80,0,136,136,136,152,104,0,89,105,16,32,136,136,152,104, + 8,136,112,0,88,104,128,240,136,136,136,240,128,128,0,89, + 105,80,0,136,136,152,104,8,136,112}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 5 h= 9 x= 2 y= 8 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w= 6 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x10r[889] U8G_SECTION(".progmem.u8g_font_6x10r") = { + 1,6,10,0,254,7,1,54,2,104,32,127,254,8,254,7, + 254,10,0,96,34,23,103,128,128,128,128,128,0,128,22,51, + 99,160,160,160,2,87,103,80,80,248,80,248,80,80,2,87, + 103,32,112,160,112,40,112,32,2,87,103,72,168,80,32,80, + 168,144,2,87,103,64,160,160,64,168,144,104,38,19,99,128, + 128,128,18,55,103,32,64,128,128,128,64,32,18,55,103,128, + 64,32,32,32,64,128,3,85,101,136,80,248,80,136,3,85, + 101,32,32,248,32,32,17,51,99,96,64,128,5,81,97,248, + 17,51,99,64,224,64,2,87,103,8,8,16,32,64,128,128, + 2,87,103,32,80,136,136,136,80,32,2,87,103,32,96,160, + 32,32,32,248,2,87,103,112,136,8,48,64,128,248,2,87, + 103,248,8,16,48,8,136,112,2,87,103,16,48,80,144,248, + 16,16,2,87,103,248,128,176,200,8,136,112,2,87,103,48, + 64,128,176,200,136,112,2,87,103,248,8,16,16,32,64,64, + 2,87,103,112,136,136,112,136,136,112,2,87,103,112,136,152, + 104,8,16,96,17,55,103,64,224,64,0,64,224,64,17,55, + 103,64,224,64,0,96,64,128,18,71,103,16,32,64,128,64, + 32,16,4,83,99,248,0,248,18,71,103,128,64,32,16,32, + 64,128,2,87,103,112,136,16,32,32,0,32,2,87,103,112, + 136,152,168,176,128,112,2,87,103,32,80,136,136,248,136,136, + 2,87,103,240,72,72,112,72,72,240,2,87,103,112,136,128, + 128,128,136,112,2,87,103,240,72,72,72,72,72,240,2,87, + 103,248,128,128,240,128,128,248,2,87,103,248,128,128,240,128, + 128,128,2,87,103,112,136,128,128,152,136,112,2,87,103,136, + 136,136,248,136,136,136,18,55,103,224,64,64,64,64,64,224, + 2,87,103,56,16,16,16,16,144,96,2,87,103,136,144,160, + 192,160,144,136,2,87,103,128,128,128,128,128,128,248,2,87, + 103,136,136,216,168,136,136,136,2,87,103,136,136,200,168,152, + 136,136,2,87,103,112,136,136,136,136,136,112,2,87,103,240, + 136,136,240,128,128,128,1,88,104,112,136,136,136,136,168,112, + 8,2,87,103,240,136,136,240,160,144,136,2,87,103,112,136, + 128,112,8,136,112,2,87,103,248,32,32,32,32,32,32,2, + 87,103,136,136,136,136,136,136,112,2,87,103,136,136,136,80, + 80,80,32,2,87,103,136,136,136,168,168,216,136,2,87,103, + 136,136,80,32,80,136,136,2,87,103,136,136,80,32,32,32, + 32,2,87,103,248,8,16,32,64,128,248,18,55,103,224,128, + 128,128,128,128,224,2,87,103,128,128,64,32,16,8,8,18, + 55,103,224,32,32,32,32,32,224,6,83,99,32,80,136,1, + 81,97,248,40,34,98,128,64,2,85,101,112,8,120,136,120, + 2,87,103,128,128,176,200,136,200,176,2,85,101,112,136,128, + 136,112,2,87,103,8,8,104,152,136,152,104,2,85,101,112, + 136,248,128,112,2,87,103,48,72,64,240,64,64,64,0,87, + 103,120,136,136,120,8,136,112,2,87,103,128,128,176,200,136, + 136,136,18,55,103,64,0,192,64,64,64,224,16,73,105,16, + 0,48,16,16,16,144,144,96,2,87,103,128,128,136,144,224, + 144,136,18,55,103,192,64,64,64,64,64,224,2,85,101,208, + 168,168,168,136,2,85,101,176,200,136,136,136,2,85,101,112, + 136,136,136,112,0,87,103,176,200,136,200,176,128,128,0,87, + 103,104,152,136,152,104,8,8,2,85,101,176,200,128,128,128, + 2,85,101,112,128,112,8,240,2,87,103,64,64,240,64,64, + 72,48,2,85,101,136,136,136,152,104,2,85,101,136,136,80, + 80,32,2,85,101,136,136,168,168,80,2,85,101,136,80,32, + 80,136,0,87,103,136,136,152,104,8,136,112,2,85,101,248, + 16,32,64,248,18,71,103,48,64,32,192,32,64,48,34,23, + 103,128,128,128,128,128,128,128,18,71,103,192,32,64,48,64, + 32,192,6,83,99,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 3, '1' Height: 8 + Calculated Max Values w= 6 h=12 x= 5 y= 8 dx= 6 dy= 0 ascent=10 len=12 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[2382] U8G_SECTION(".progmem.u8g_font_6x12_67_75") = { + 1,6,12,0,254,3,2,41,3,99,0,255,0,10,254,8, + 0,2,87,103,168,0,136,0,136,0,168,2,87,103,240,136, + 232,168,232,136,240,2,87,103,112,168,248,168,248,168,112,2, + 87,103,112,136,8,8,8,136,112,18,69,101,96,144,16,144, + 96,1,88,104,112,136,128,128,136,120,8,8,2,87,103,32, + 32,32,32,168,112,32,2,103,103,248,252,252,156,252,252,248, + 2,87,103,112,248,248,168,248,248,112,255,255,255,255,255,255, + 255,3,85,101,32,64,248,64,32,2,87,103,32,112,168,32, + 32,32,32,3,85,101,32,16,248,16,32,2,87,103,32,32, + 32,32,168,112,32,4,83,99,80,248,80,2,87,103,32,112, + 168,32,168,112,32,2,89,105,192,240,224,160,32,16,16,8, + 8,2,89,105,24,120,56,40,32,64,64,128,128,2,89,105, + 128,128,64,64,32,40,56,120,24,2,89,105,8,8,16,16, + 32,160,224,240,192,3,101,101,40,72,252,80,48,3,101,101, + 48,40,252,72,80,4,99,99,192,216,100,4,99,99,12,108, + 152,3,101,101,40,80,252,80,40,2,88,104,32,112,168,112, + 168,32,32,32,3,101,101,80,40,252,40,80,2,88,104,32, + 32,32,168,112,168,112,32,3,101,101,36,72,240,72,36,3, + 101,101,144,72,60,72,144,3,85,101,40,72,248,72,40,2, + 87,103,32,112,168,32,32,32,248,3,85,101,160,144,248,144, + 160,2,87,103,248,32,32,32,168,112,32,2,87,103,32,112, + 168,32,168,112,248,3,101,101,40,68,248,64,32,3,101,101, + 80,136,124,8,16,3,101,101,32,76,252,72,40,3,101,101, + 16,200,252,72,80,3,100,100,72,220,236,72,3,101,101,8, + 88,252,104,64,2,87,103,128,144,176,208,144,56,16,2,88, + 104,32,64,248,72,40,8,8,8,2,88,104,32,16,248,144, + 160,128,128,128,2,88,104,8,8,8,40,72,248,64,32,2, + 87,103,128,128,160,144,248,16,32,3,84,100,240,16,56,16, + 3,85,101,8,8,72,248,64,3,85,101,48,72,72,232,72, + 3,85,101,96,144,144,184,16,2,88,104,248,128,224,192,160, + 32,16,16,2,89,105,160,192,248,192,168,24,248,24,40,2, + 86,102,56,48,168,136,136,112,2,86,102,224,96,168,136,136, + 112,5,83,99,32,64,248,3,83,99,248,64,32,34,56,104, + 128,192,160,128,128,128,128,128,2,56,104,32,96,160,32,32, + 32,32,32,5,83,99,32,16,248,3,83,99,248,16,32,34, + 56,104,128,128,128,128,128,160,192,128,2,56,104,32,32,32, + 32,32,160,96,32,2,89,105,32,16,248,16,32,64,248,64, + 32,2,88,104,80,240,80,80,80,80,120,80,2,89,105,32, + 64,248,64,32,16,248,16,32,2,89,105,32,64,248,64,32, + 64,248,64,32,2,88,104,80,248,80,80,80,80,80,80,2, + 89,105,32,16,248,16,32,16,248,16,32,2,88,104,80,80, + 80,80,80,80,248,80,2,87,103,32,64,248,0,248,16,32, + 2,87,103,32,16,248,0,248,64,32,2,103,103,20,40,124, + 144,124,32,80,2,103,103,8,88,252,164,252,104,64,2,103, + 103,160,80,248,36,248,16,40,3,85,101,32,120,128,120,32, + 2,87,103,32,80,216,80,80,80,80,3,85,101,32,240,8, + 240,32,2,87,103,80,80,80,80,216,80,32,3,101,101,72, + 252,132,252,72,2,88,104,32,80,216,80,80,216,80,32,2, + 102,102,248,160,208,168,148,8,2,102,102,124,20,44,84,164, + 64,2,102,102,64,164,84,44,20,124,2,102,102,8,148,168, + 208,160,248,2,103,103,16,60,64,252,64,60,16,2,103,103, + 32,240,8,252,8,240,32,3,100,100,64,232,212,64,3,100, + 100,8,92,172,8,2,88,104,32,112,168,32,112,32,112,32, + 2,88,104,32,112,32,112,32,168,112,32,3,101,101,32,64, + 212,64,32,2,88,104,32,112,136,32,0,32,0,32,3,101, + 101,16,8,172,8,16,2,88,104,32,0,32,0,32,136,112, + 32,3,85,101,160,192,248,192,160,3,85,101,40,24,248,24, + 40,3,85,101,32,120,136,120,32,2,88,104,32,80,216,80, + 80,80,80,112,3,85,101,32,240,136,240,32,2,88,104,112, + 80,80,80,80,216,80,32,2,89,105,32,80,216,80,112,0, + 112,80,112,2,89,105,32,80,216,80,80,80,216,136,248,2, + 89,105,32,80,248,136,80,80,216,136,248,2,89,105,32,112, + 248,112,112,112,248,168,248,2,89,105,32,80,216,80,216,80, + 80,80,112,2,89,105,32,80,216,80,216,80,216,136,248,3, + 85,101,160,240,136,240,160,2,88,104,248,128,176,160,144,16, + 8,8,2,88,104,128,128,64,72,40,104,8,248,2,88,104, + 32,80,216,80,80,216,80,32,3,101,101,16,104,252,104,16, + 2,88,104,80,120,80,80,80,80,240,80,2,89,105,16,248, + 16,16,248,16,16,248,16,3,101,101,40,72,252,72,40,3, + 101,101,80,72,252,72,80,3,101,101,48,120,252,120,48,3, + 101,101,56,88,252,88,56,3,101,101,112,104,252,104,112,3, + 101,101,48,120,252,120,48,3,85,101,32,96,184,96,32,3, + 85,101,32,48,232,48,32,3,101,101,48,120,180,120,48,6, + 102,102,252,252,252,252,252,252,0,98,98,252,252,0,99,99, + 252,252,252,0,101,101,252,252,252,252,252,0,102,102,252,252, + 252,252,252,252,0,104,104,252,252,252,252,252,252,252,252,0, + 105,105,252,252,252,252,252,252,252,252,252,0,107,107,252,252, + 252,252,252,252,252,252,252,252,252,0,108,108,252,252,252,252, + 252,252,252,252,252,252,252,252,0,92,108,248,248,248,248,248, + 248,248,248,248,248,248,248,0,76,108,240,240,240,240,240,240, + 240,240,240,240,240,240,0,76,108,240,240,240,240,240,240,240, + 240,240,240,240,240,0,60,108,224,224,224,224,224,224,224,224, + 224,224,224,224,0,44,108,192,192,192,192,192,192,192,192,192, + 192,192,192,0,44,108,192,192,192,192,192,192,192,192,192,192, + 192,192,0,28,108,128,128,128,128,128,128,128,128,128,128,128, + 128,48,60,108,224,224,224,224,224,224,224,224,224,224,224,224, + 1,107,107,168,0,84,0,168,0,84,0,168,0,84,0,108, + 108,168,84,168,84,168,84,168,84,168,84,168,84,0,108,108, + 84,252,168,252,84,252,168,252,84,252,168,252,10,98,98,252, + 252,80,28,108,128,128,128,128,128,128,128,128,128,128,128,128, + 0,54,102,224,224,224,224,224,224,48,54,102,224,224,224,224, + 224,224,6,54,102,224,224,224,224,224,224,0,108,108,224,224, + 224,224,224,224,252,252,252,252,252,252,0,108,108,224,224,224, + 224,224,224,28,28,28,28,28,28,0,108,108,252,252,252,252, + 252,252,224,224,224,224,224,224,0,108,108,252,252,252,252,252, + 252,28,28,28,28,28,28,54,54,102,224,224,224,224,224,224, + 0,108,108,28,28,28,28,28,28,224,224,224,224,224,224,0, + 108,108,28,28,28,28,28,28,252,252,252,252,252,252,2,85, + 101,248,248,248,248,248,2,85,101,248,136,136,136,248,2,85, + 101,112,136,136,136,112,2,85,101,248,136,168,136,248,2,85, + 101,248,136,248,136,248,2,85,101,248,168,168,168,248,2,85, + 101,248,168,248,168,248,2,85,101,248,200,168,152,248,2,85, + 101,248,152,168,200,248,2,85,101,248,216,168,216,248,20,51, + 99,224,224,224,20,51,99,224,160,224,3,101,101,252,252,252, + 252,252,3,101,101,252,132,132,132,252,17,74,106,240,240,240, + 240,240,240,240,240,240,240,17,74,106,240,144,144,144,144,144, + 144,144,144,240,4,99,99,60,120,240,4,99,99,60,72,240, + 2,87,103,32,32,112,112,248,248,248,2,87,103,32,32,80, + 80,136,136,248,3,85,101,32,32,112,112,248,3,85,101,32, + 32,80,80,248,18,71,103,128,192,224,240,224,192,128,18,71, + 103,128,192,160,144,160,192,128,19,53,101,128,192,224,192,128, + 19,53,101,128,192,160,192,128,3,101,101,192,240,252,240,192, + 3,101,101,192,176,140,176,192,2,87,103,248,248,248,112,112, + 32,32,2,87,103,248,136,136,80,80,32,32,2,85,101,248, + 112,112,32,32,2,85,101,248,80,80,32,32,18,71,103,16, + 48,112,240,112,48,16,18,71,103,16,48,80,144,80,48,16, + 19,53,101,32,96,224,96,32,19,53,101,32,96,160,96,32, + 3,101,101,12,60,252,60,12,3,101,101,12,52,196,52,12, + 3,85,101,32,112,248,112,32,3,85,101,32,80,136,80,32, + 3,85,101,32,80,168,80,32,2,102,102,48,72,180,180,72, + 48,2,87,103,32,80,80,136,80,80,32,2,102,102,48,72, + 132,132,72,48,2,102,102,32,8,128,4,64,16,2,85,101, + 112,168,168,168,112,2,87,103,112,136,168,216,168,136,112,2, + 102,102,48,120,252,252,120,48,2,102,102,48,104,228,228,104, + 48,2,102,102,48,88,156,156,88,48,2,102,102,48,72,132, + 252,120,48,2,102,102,48,120,252,132,72,48,2,102,102,48, + 88,156,132,72,48,2,102,102,48,104,228,132,72,48,18,89, + 105,8,56,120,120,248,120,120,56,8,2,89,105,128,224,240, + 240,248,240,240,224,128,0,108,108,252,252,252,252,204,132,132, + 204,252,252,252,252,0,108,108,252,252,252,204,180,120,120,180, + 204,252,252,252,6,102,102,252,252,252,204,180,120,0,102,102, + 120,180,204,252,252,252,5,51,99,32,64,128,53,51,99,128, + 64,32,50,51,99,32,64,128,2,51,99,128,64,32,5,99, + 99,48,72,132,2,99,99,132,72,48,2,85,101,8,24,56, + 120,248,2,85,101,128,192,224,240,248,2,85,101,248,240,224, + 192,128,2,85,101,248,120,56,24,8,2,85,101,112,136,136, + 136,112,2,85,101,248,232,232,232,248,2,85,101,248,184,184, + 184,248,2,85,101,248,248,232,200,248,2,85,101,248,152,184, + 248,248,2,85,101,248,168,168,168,248,2,87,103,32,32,80, + 112,168,136,248,2,87,103,32,32,112,112,232,232,248,2,87, + 103,32,32,112,112,184,184,248,2,103,103,48,72,132,132,132, + 72,48,2,85,101,248,168,232,136,248,2,85,101,248,136,232, + 168,248,2,85,101,248,136,184,168,248,2,85,101,248,168,184, + 136,248,2,85,101,112,168,232,136,112,2,85,101,112,136,232, + 168,112,2,85,101,112,136,184,168,112,2,85,101,112,168,184, + 136,112,3,85,101,248,144,160,192,128,3,85,101,248,72,40, + 24,8,3,85,101,128,192,160,144,248,20,68,100,240,144,144, + 240,19,68,100,240,240,240,240,20,68,100,240,144,144,240,20, + 68,100,240,240,240,240,3,85,101,8,24,40,72,248}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 3 + Calculated Max Values w= 6 h=10 x= 1 y= 2 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_75r[427] U8G_SECTION(".progmem.u8g_font_6x12_75r") = { + 1,6,12,0,254,7,1,41,0,0,32,79,0,9,255,7, + 0,2,85,101,248,248,248,248,248,2,85,101,248,136,136,136, + 248,2,85,101,112,136,136,136,112,2,85,101,248,136,168,136, + 248,2,85,101,248,136,248,136,248,2,85,101,248,168,168,168, + 248,2,85,101,248,168,248,168,248,2,85,101,248,200,168,152, + 248,2,85,101,248,152,168,200,248,2,85,101,248,216,168,216, + 248,20,51,99,224,224,224,20,51,99,224,160,224,3,101,101, + 252,252,252,252,252,3,101,101,252,132,132,132,252,17,74,106, + 240,240,240,240,240,240,240,240,240,240,17,74,106,240,144,144, + 144,144,144,144,144,144,240,4,99,99,60,120,240,4,99,99, + 60,72,240,2,87,103,32,32,112,112,248,248,248,2,87,103, + 32,32,80,80,136,136,248,3,85,101,32,32,112,112,248,3, + 85,101,32,32,80,80,248,18,71,103,128,192,224,240,224,192, + 128,18,71,103,128,192,160,144,160,192,128,19,53,101,128,192, + 224,192,128,19,53,101,128,192,160,192,128,3,101,101,192,240, + 252,240,192,3,101,101,192,176,140,176,192,2,87,103,248,248, + 248,112,112,32,32,2,87,103,248,136,136,80,80,32,32,2, + 85,101,248,112,112,32,32,2,85,101,248,80,80,32,32,18, + 71,103,16,48,112,240,112,48,16,18,71,103,16,48,80,144, + 80,48,16,19,53,101,32,96,224,96,32,19,53,101,32,96, + 160,96,32,3,101,101,12,60,252,60,12,3,101,101,12,52, + 196,52,12,3,85,101,32,112,248,112,32,3,85,101,32,80, + 136,80,32,3,85,101,32,80,168,80,32,2,102,102,48,72, + 180,180,72,48,2,87,103,32,80,80,136,80,80,32,2,102, + 102,48,72,132,132,72,48,2,102,102,32,8,128,4,64,16, + 2,85,101,112,168,168,168,112,2,87,103,112,136,168,216,168, + 136,112,2,102,102,48,120,252,252,120,48}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 6 h=12 x= 2 y= 4 dx= 6 dy= 0 ascent=10 len=12 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[2316] U8G_SECTION(".progmem.u8g_font_6x12_78_79") = { + 1,6,12,0,254,6,2,80,3,53,0,255,0,10,254,9, + 0,2,87,103,168,0,136,0,136,0,168,3,101,101,144,252, + 32,64,96,3,101,101,196,200,48,200,196,3,101,101,96,64, + 32,252,144,2,103,103,204,148,232,48,232,148,204,255,1,105, + 105,120,132,180,180,164,180,180,132,120,1,105,105,120,132,180, + 132,180,132,204,132,120,3,101,101,32,176,252,176,32,2,101, + 101,252,204,180,132,252,255,255,18,72,104,144,144,80,112,240, + 240,240,112,3,102,102,4,56,124,124,64,128,2,102,102,64, + 224,80,40,20,12,3,99,99,248,140,248,2,102,102,12,20, + 40,80,224,64,3,100,100,248,132,132,248,4,99,99,248,244, + 248,2,87,103,8,8,16,16,160,224,64,2,103,103,12,12, + 28,216,248,112,48,2,85,101,136,80,32,80,136,3,85,101, + 216,248,32,248,216,2,86,102,136,80,32,80,136,128,1,103, + 103,204,204,120,112,252,204,192,1,103,103,120,204,164,244,164, + 204,120,2,102,102,48,48,252,252,48,48,3,85,101,32,32, + 216,32,32,2,102,102,48,48,204,204,48,48,2,87,103,32, + 32,248,32,32,32,32,1,90,106,112,80,216,136,216,80,80, + 80,80,112,2,105,105,120,220,188,220,88,88,88,120,120,2, + 87,103,112,32,168,248,168,32,112,2,87,103,32,248,80,80, + 80,248,32,3,85,101,32,32,248,32,32,3,102,102,48,48, + 252,252,48,48,2,104,104,48,120,48,252,252,48,120,48,2, + 87,103,32,112,168,248,168,112,32,3,85,101,32,112,248,112, + 32,3,85,101,32,112,216,112,32,255,3,85,101,32,216,80, + 32,80,2,87,103,112,216,136,216,168,248,112,3,86,102,32, + 32,248,80,112,136,3,86,102,32,32,216,32,80,136,3,86, + 102,32,32,248,112,112,136,3,86,102,32,32,248,112,112,136, + 3,86,102,32,32,232,48,80,136,2,102,102,48,88,140,88, + 172,88,2,86,102,32,168,112,112,168,32,2,87,103,32,168, + 112,80,112,168,32,2,87,103,32,168,112,248,112,168,32,2, + 87,103,32,168,112,248,112,168,32,2,87,103,32,168,112,248, + 112,168,32,2,86,102,32,168,112,112,168,32,1,88,104,80, + 32,168,112,112,168,32,80,1,88,104,80,32,168,112,112,168, + 32,80,2,103,103,80,248,124,248,124,248,80,2,103,103,80, + 168,116,248,116,168,80,2,86,102,32,168,112,112,168,32,2, + 87,103,32,168,112,80,112,168,32,2,86,102,32,168,112,112, + 168,32,2,103,103,168,216,80,168,116,168,32,3,87,103,32, + 112,248,216,112,248,216,3,87,103,32,112,216,168,80,248,216, + 3,86,102,32,112,216,112,248,32,2,87,103,112,248,168,216, + 168,248,112,2,86,102,32,168,112,112,168,32,2,86,102,32, + 168,112,112,168,32,2,86,102,32,168,112,112,168,32,2,86, + 102,32,168,112,112,168,32,2,87,103,32,168,112,248,112,168, + 32,2,87,103,32,168,112,248,112,168,32,2,87,103,32,168, + 112,248,112,168,32,2,87,103,32,168,112,248,112,168,32,2, + 87,103,32,168,112,248,112,168,32,255,3,101,101,120,140,140, + 140,120,255,2,102,102,248,140,140,140,252,124,2,102,102,124, + 252,140,140,140,248,2,102,102,248,140,140,140,252,124,2,102, + 102,124,252,140,140,140,248,255,255,255,2,103,103,16,56,84, + 236,84,56,16,255,34,23,103,128,128,128,128,128,128,128,18, + 39,103,192,192,192,192,192,192,192,18,71,103,240,240,240,240, + 240,240,240,22,69,101,96,128,224,240,96,22,69,101,96,240, + 112,16,96,6,101,101,72,144,216,252,72,6,101,101,72,252, + 108,36,72,255,255,1,106,106,8,124,200,200,200,120,8,200, + 136,112,2,89,105,112,248,248,112,32,0,32,112,32,2,88, + 104,216,248,112,32,0,32,112,32,2,85,101,216,248,248,112, + 32,2,87,103,96,240,240,120,240,240,96,2,104,104,100,184, + 32,216,248,240,228,120,2,102,102,128,88,120,220,152,64,18, + 56,104,32,64,192,192,192,192,64,32,18,56,104,128,64,96, + 96,96,96,64,128,18,40,104,64,192,192,192,192,192,192,64, + 18,40,104,128,192,192,192,192,192,192,128,17,73,105,48,48, + 96,96,192,96,96,48,48,17,73,105,192,192,96,96,48,96, + 96,192,192,2,87,103,24,48,96,192,96,48,24,2,87,103, + 192,96,48,24,48,96,192,1,89,105,56,56,112,112,224,112, + 112,56,56,1,89,105,224,224,112,112,56,112,112,224,224,17, + 57,105,32,64,128,128,128,128,128,64,32,17,57,105,128,64, + 32,32,32,32,32,64,128,17,73,105,48,96,96,96,192,96, + 96,96,48,17,73,105,192,96,96,96,48,96,96,96,192,2, + 89,105,112,248,216,152,216,216,136,248,112,2,89,105,112,248, + 216,168,232,216,136,248,112,2,89,105,112,248,152,232,216,232, + 152,248,112,2,89,105,112,248,184,184,152,136,216,248,112,2, + 89,105,112,248,136,184,152,232,152,248,112,2,89,105,112,248, + 200,184,152,168,216,248,112,2,89,105,112,248,136,232,216,216, + 216,248,112,2,89,105,112,248,216,168,216,168,216,248,112,2, + 89,105,112,248,216,168,200,232,152,248,112,2,105,105,120,252, + 172,148,148,148,172,252,120,2,89,105,112,136,168,232,168,168, + 248,136,112,2,89,105,112,136,168,216,152,168,248,136,112,2, + 89,105,112,136,232,152,168,152,232,136,112,2,89,105,112,136, + 200,200,232,248,168,136,112,2,89,105,112,136,248,200,232,152, + 232,136,112,2,89,105,112,136,184,200,232,216,168,136,112,2, + 89,105,112,136,248,152,168,168,168,136,112,2,89,105,112,136, + 168,216,168,216,168,136,112,2,89,105,112,136,168,216,184,152, + 232,136,112,2,105,105,120,132,212,236,236,236,212,132,120,2, + 89,105,112,248,216,152,216,216,216,248,112,2,89,105,112,248, + 216,168,232,216,136,248,112,2,89,105,112,248,152,232,216,232, + 152,248,112,2,89,105,112,248,184,184,152,136,216,248,112,2, + 89,105,112,248,136,184,152,232,152,248,112,2,89,105,112,248, + 200,184,152,168,216,248,112,2,89,105,112,248,136,232,216,216, + 216,248,112,2,89,105,112,248,216,168,216,168,216,248,112,2, + 89,105,112,248,216,168,200,232,152,248,112,2,105,105,120,252, + 172,148,148,148,172,252,120,3,101,101,48,24,252,24,48,255, + 255,255,2,85,101,128,64,40,24,56,3,85,101,32,48,248, + 48,32,2,85,101,56,24,40,64,128,3,101,101,64,48,252, + 48,64,2,102,102,48,56,252,252,56,48,4,99,99,8,252, + 8,2,102,102,16,24,252,252,24,16,3,99,99,8,188,8, + 2,102,102,16,24,188,188,24,16,3,101,101,16,248,252,248, + 16,2,103,103,192,176,72,60,120,240,192,2,103,103,192,240, + 120,60,72,176,192,3,101,101,224,120,60,120,224,3,102,102, + 128,144,248,252,120,16,2,102,102,16,120,252,248,144,128,2, + 103,103,32,240,248,252,248,240,32,3,101,101,32,240,252,240, + 32,3,101,101,16,232,132,232,16,3,101,101,16,232,132,232, + 16,3,101,101,16,232,132,232,16,3,101,101,16,232,132,232, + 16,2,102,102,16,232,132,132,232,16,2,102,102,16,232,132, + 132,232,16,3,101,101,16,232,132,232,16,255,3,101,101,16, + 232,132,232,16,2,103,103,120,220,12,4,12,220,120,3,99, + 99,232,124,232,2,102,102,64,224,96,16,12,12,3,99,99, + 232,124,232,2,102,102,12,12,16,96,224,64,2,102,102,96, + 224,224,20,12,28,2,101,101,192,232,124,232,192,2,102,102, + 28,12,20,224,224,96,2,101,101,16,200,252,200,16,2,101, + 101,16,200,252,200,16,3,99,99,232,124,232,3,100,100,232, + 252,252,232,2,101,101,80,232,4,232,80,255,2,85,101,136, + 144,160,192,248,2,86,102,32,32,80,112,168,248,2,86,102, + 32,32,32,32,32,248,2,87,103,120,128,144,168,144,128,120, + 2,87,103,240,8,72,168,72,8,240,18,73,105,64,160,160, + 32,32,64,64,64,48,18,73,105,32,80,80,64,64,32,32, + 32,192,2,87,103,136,168,136,80,80,32,32,2,104,104,128, + 156,160,160,160,92,64,64,2,104,104,4,228,20,20,20,232, + 8,8,18,55,103,64,64,64,224,64,64,64,255,2,103,103, + 252,64,32,32,32,32,64,255,255,255,3,85,101,32,80,168, + 80,32,2,87,103,32,32,80,80,136,168,136,2,87,103,168, + 168,168,168,168,168,112,3,85,101,8,8,40,8,248,3,85, + 101,248,128,160,128,128,3,101,101,196,108,84,108,196,3,101, + 101,140,216,168,216,140,2,101,101,204,120,72,120,204,2,87, + 103,32,32,32,32,32,32,248,2,87,103,248,32,32,32,32, + 32,32,3,85,101,80,216,80,216,80,3,85,101,80,80,216, + 80,80,4,99,99,64,188,64,4,99,99,128,252,128,4,99, + 99,4,252,4,18,55,103,64,160,64,64,64,64,224,3,85, + 101,32,80,248,80,32,3,85,101,32,80,136,80,32,3,101, + 101,16,40,196,40,16,3,101,101,32,80,140,80,32,3,101, + 101,124,68,196,68,124,3,101,101,248,136,140,136,248,1,90, + 106,248,160,160,160,160,160,160,160,160,248,1,90,106,248,40, + 40,40,40,40,40,40,40,248,17,57,105,32,32,64,64,128, + 64,64,32,32,17,57,105,128,128,64,64,32,64,64,128,128, + 0,107,107,20,40,40,80,80,160,80,80,40,40,20,0,107, + 107,160,80,80,40,40,20,40,40,80,80,160,16,75,107,16, + 32,96,160,160,160,160,160,96,32,16,16,76,108,128,64,96, + 80,80,80,80,80,80,96,64,128,17,41,105,128,64,64,64, + 64,64,64,64,128,17,41,105,64,128,128,128,128,128,128,128, + 64,2,87,103,32,112,168,168,168,168,168,2,87,103,168,168, + 168,168,168,112,32,2,103,103,56,68,228,68,4,68,56,2, + 103,103,112,136,156,136,128,136,112,4,99,99,104,252,104,3, + 101,101,32,64,252,64,32,3,101,101,16,8,252,8,16,4, + 99,99,72,252,72,2,103,103,16,32,124,128,124,32,16,2, + 103,103,32,16,248,4,248,16,32,3,101,101,72,252,132,252, + 72,3,101,101,36,68,252,68,36,3,101,101,144,136,252,136, + 144,2,103,103,20,36,124,132,124,36,20,2,103,103,160,144, + 248,132,248,144,160,3,100,100,8,92,172,8}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h=10 x= 2 y=10 dx= 6 dy= 0 ascent=10 len=10 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12[1933] U8G_SECTION(".progmem.u8g_font_6x12") = { + 1,6,12,0,254,7,1,53,2,107,32,255,254,10,254,8, + 254,12,0,96,34,23,103,128,128,128,128,128,0,128,23,51, + 99,160,160,160,2,86,102,80,248,80,80,248,80,1,89,105, + 32,112,168,160,112,40,168,112,32,2,87,103,200,200,16,32, + 64,152,152,2,87,103,64,160,160,64,168,144,104,39,19,99, + 128,128,128,17,57,105,32,64,64,128,128,128,64,64,32,17, + 57,105,128,64,64,32,32,32,64,64,128,2,87,103,32,168, + 112,32,112,168,32,3,85,101,32,32,248,32,32,1,51,99, + 96,96,192,5,81,97,248,18,34,98,192,192,2,87,103,8, + 16,16,32,64,64,128,18,71,103,96,144,144,144,144,144,96, + 18,55,103,64,192,64,64,64,64,224,2,87,103,112,136,8, + 16,32,64,248,2,87,103,248,8,16,48,8,136,112,2,87, + 103,16,48,80,144,248,16,16,2,87,103,248,128,240,8,8, + 136,112,2,87,103,48,64,128,240,136,136,112,2,87,103,248, + 8,16,16,32,32,32,2,87,103,112,136,136,112,136,136,112, + 2,87,103,112,136,136,120,8,16,96,18,37,101,192,192,0, + 192,192,1,54,102,96,96,0,96,96,192,19,53,101,32,64, + 128,64,32,4,83,99,248,0,248,19,53,101,128,64,32,64, + 128,2,87,103,112,136,16,32,32,0,32,2,87,103,112,136, + 184,168,184,128,112,2,87,103,112,136,136,248,136,136,136,2, + 87,103,240,72,72,112,72,72,240,2,87,103,112,136,128,128, + 128,136,112,2,87,103,240,72,72,72,72,72,240,2,87,103, + 248,128,128,240,128,128,248,2,87,103,248,128,128,240,128,128, + 128,2,87,103,112,136,128,128,152,136,112,2,87,103,136,136, + 136,248,136,136,136,18,55,103,224,64,64,64,64,64,224,2, + 87,103,56,16,16,16,16,144,96,2,87,103,136,144,160,192, + 160,144,136,2,87,103,128,128,128,128,128,128,248,2,87,103, + 136,216,168,136,136,136,136,2,87,103,136,136,200,168,152,136, + 136,2,87,103,112,136,136,136,136,136,112,2,87,103,240,136, + 136,240,128,128,128,2,87,103,112,136,136,136,168,144,104,2, + 87,103,240,136,136,240,160,144,136,2,87,103,112,136,128,112, + 8,136,112,2,87,103,248,32,32,32,32,32,32,2,87,103, + 136,136,136,136,136,136,112,2,87,103,136,136,136,136,80,80, + 32,2,87,103,136,136,136,136,168,168,80,2,87,103,136,136, + 80,32,80,136,136,2,87,103,136,136,80,32,32,32,32,2, + 87,103,248,8,16,32,64,128,248,17,57,105,224,128,128,128, + 128,128,128,128,224,2,87,103,128,64,64,32,16,16,8,17, + 57,105,224,32,32,32,32,32,32,32,224,7,83,99,32,80, + 136,0,81,97,248,23,51,99,128,64,32,2,85,101,112,8, + 120,136,120,2,87,103,128,128,240,136,136,136,240,2,85,101, + 112,136,128,136,112,2,87,103,8,8,120,136,136,136,120,2, + 85,101,112,136,240,128,112,2,87,103,48,72,64,224,64,64, + 64,0,87,103,112,136,136,136,120,8,112,2,87,103,128,128, + 240,136,136,136,136,18,55,103,64,0,192,64,64,64,224,16, + 73,105,16,0,48,16,16,16,16,144,96,2,87,103,128,128, + 136,144,224,144,136,18,55,103,192,64,64,64,64,64,224,2, + 85,101,208,168,168,168,168,2,85,101,176,200,136,136,136,2, + 85,101,112,136,136,136,112,0,87,103,240,136,136,136,240,128, + 128,0,87,103,120,136,136,136,120,8,8,2,85,101,176,200, + 128,128,128,2,85,101,120,128,112,8,240,2,87,103,32,32, + 248,32,32,32,24,2,85,101,136,136,136,152,104,2,85,101, + 136,136,136,80,32,2,85,101,136,136,168,168,80,2,85,101, + 136,80,32,80,136,0,87,103,136,136,136,80,32,64,128,2, + 85,101,248,16,32,64,248,17,57,105,32,64,64,64,128,64, + 64,64,32,33,25,105,128,128,128,128,128,128,128,128,128,17, + 57,105,128,64,64,64,32,64,64,64,128,4,83,99,72,168, + 144,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,12,0,96,34,23,103,128,0,128,128,128,128,128,1, + 87,103,32,112,168,160,168,112,32,2,87,103,48,72,64,224, + 64,72,176,2,85,101,168,80,136,80,168,2,87,103,136,80, + 248,32,248,32,32,34,23,103,128,128,128,0,128,128,128,18, + 72,104,112,128,96,144,144,96,16,224,25,49,97,160,2,103, + 103,120,132,148,164,148,132,120,22,53,101,96,160,96,0,224, + 2,85,101,40,80,160,80,40,3,83,99,248,8,8,21,49, + 97,224,2,103,103,120,132,180,164,164,132,120,9,81,97,248, + 23,68,100,96,144,144,96,2,87,103,32,32,248,32,32,0, + 248,23,53,101,64,160,32,64,224,23,53,101,192,32,64,32, + 192,23,51,99,32,64,128,0,87,103,136,136,136,152,232,128, + 128,2,88,104,120,232,232,232,104,40,40,40,37,34,98,192, + 192,16,50,98,32,192,23,53,101,64,192,64,64,224,23,53, + 101,64,160,64,0,224,2,85,101,160,80,40,80,160,2,90, + 106,64,192,64,64,80,48,80,120,16,16,2,90,106,64,192, + 64,64,80,40,8,16,32,56,2,90,106,192,32,64,32,208, + 48,80,120,16,16,2,87,103,32,0,32,32,64,136,112,2, + 90,106,64,32,0,112,136,136,248,136,136,136,2,90,106,16, + 32,0,112,136,136,248,136,136,136,2,90,106,32,80,0,112, + 136,136,248,136,136,136,2,90,106,104,176,0,112,136,136,248, + 136,136,136,2,89,105,80,0,112,136,136,248,136,136,136,2, + 90,106,32,80,32,112,136,136,248,136,136,136,2,87,103,120, + 160,160,240,160,160,184,0,89,105,112,136,128,128,128,136,112, + 16,96,2,90,106,64,32,0,248,128,128,240,128,128,248,2, + 90,106,16,32,0,248,128,128,240,128,128,248,2,90,106,32, + 80,0,248,128,128,240,128,128,248,2,89,105,80,0,248,128, + 128,240,128,128,248,18,58,106,128,64,0,224,64,64,64,64, + 64,224,18,58,106,32,64,0,224,64,64,64,64,64,224,18, + 58,106,64,160,0,224,64,64,64,64,64,224,18,57,105,160, + 0,224,64,64,64,64,64,224,2,87,103,112,72,72,232,72, + 72,112,2,90,106,104,176,0,136,136,200,168,152,136,136,2, + 90,106,64,32,0,112,136,136,136,136,136,112,2,90,106,16, + 32,0,112,136,136,136,136,136,112,2,90,106,32,80,0,112, + 136,136,136,136,136,112,2,90,106,104,176,0,112,136,136,136, + 136,136,112,2,89,105,80,0,112,136,136,136,136,136,112,3, + 85,101,136,80,32,80,136,1,89,105,8,112,152,168,168,168, + 200,112,128,2,90,106,64,32,0,136,136,136,136,136,136,112, + 2,90,106,16,32,0,136,136,136,136,136,136,112,2,90,106, + 32,80,0,136,136,136,136,136,136,112,2,89,105,80,0,136, + 136,136,136,136,136,112,2,90,106,16,32,0,136,136,80,32, + 32,32,32,18,71,103,128,224,144,144,144,224,128,2,87,103, + 112,136,144,160,144,136,176,2,88,104,64,32,0,112,8,120, + 136,120,2,88,104,16,32,0,112,8,120,136,120,2,88,104, + 32,80,0,112,8,120,136,120,2,88,104,104,176,0,112,8, + 120,136,120,2,87,103,80,0,112,8,120,136,120,2,88,104, + 32,80,32,112,8,120,136,120,2,85,101,112,40,112,160,120, + 0,87,103,112,136,128,136,112,16,96,2,88,104,64,32,0, + 112,136,240,128,112,2,88,104,16,32,0,112,136,240,128,112, + 2,88,104,32,80,0,112,136,240,128,112,2,87,103,80,0, + 112,136,240,128,112,18,56,104,128,64,0,192,64,64,64,224, + 18,56,104,32,64,0,192,64,64,64,224,18,56,104,64,160, + 0,192,64,64,64,224,18,55,103,160,0,192,64,64,64,224, + 2,89,105,80,32,80,8,120,136,136,136,112,2,88,104,104, + 176,0,176,200,136,136,136,2,88,104,64,32,0,112,136,136, + 136,112,2,88,104,16,32,0,112,136,136,136,112,2,88,104, + 32,80,0,112,136,136,136,112,2,88,104,104,176,0,112,136, + 136,136,112,2,87,103,80,0,112,136,136,136,112,3,85,101, + 32,0,248,0,32,2,85,101,120,152,168,200,240,2,88,104, + 64,32,0,136,136,136,136,112,2,88,104,16,32,0,136,136, + 136,136,112,2,88,104,32,80,0,136,136,136,136,112,2,87, + 103,80,0,136,136,136,136,112,0,90,106,16,32,0,136,136, + 136,80,32,64,128,0,89,105,128,128,240,136,136,136,240,128, + 128,0,89,105,80,0,136,136,136,80,32,64,128}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 5 h= 9 x= 2 y=10 dx= 6 dy= 0 ascent=10 len= 9 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12r[898] U8G_SECTION(".progmem.u8g_font_6x12r") = { + 1,6,12,0,254,7,1,53,2,107,32,127,254,10,254,8, + 254,12,0,96,34,23,103,128,128,128,128,128,0,128,23,51, + 99,160,160,160,2,86,102,80,248,80,80,248,80,1,89,105, + 32,112,168,160,112,40,168,112,32,2,87,103,200,200,16,32, + 64,152,152,2,87,103,64,160,160,64,168,144,104,39,19,99, + 128,128,128,17,57,105,32,64,64,128,128,128,64,64,32,17, + 57,105,128,64,64,32,32,32,64,64,128,2,87,103,32,168, + 112,32,112,168,32,3,85,101,32,32,248,32,32,1,51,99, + 96,96,192,5,81,97,248,18,34,98,192,192,2,87,103,8, + 16,16,32,64,64,128,18,71,103,96,144,144,144,144,144,96, + 18,55,103,64,192,64,64,64,64,224,2,87,103,112,136,8, + 16,32,64,248,2,87,103,248,8,16,48,8,136,112,2,87, + 103,16,48,80,144,248,16,16,2,87,103,248,128,240,8,8, + 136,112,2,87,103,48,64,128,240,136,136,112,2,87,103,248, + 8,16,16,32,32,32,2,87,103,112,136,136,112,136,136,112, + 2,87,103,112,136,136,120,8,16,96,18,37,101,192,192,0, + 192,192,1,54,102,96,96,0,96,96,192,19,53,101,32,64, + 128,64,32,4,83,99,248,0,248,19,53,101,128,64,32,64, + 128,2,87,103,112,136,16,32,32,0,32,2,87,103,112,136, + 184,168,184,128,112,2,87,103,112,136,136,248,136,136,136,2, + 87,103,240,72,72,112,72,72,240,2,87,103,112,136,128,128, + 128,136,112,2,87,103,240,72,72,72,72,72,240,2,87,103, + 248,128,128,240,128,128,248,2,87,103,248,128,128,240,128,128, + 128,2,87,103,112,136,128,128,152,136,112,2,87,103,136,136, + 136,248,136,136,136,18,55,103,224,64,64,64,64,64,224,2, + 87,103,56,16,16,16,16,144,96,2,87,103,136,144,160,192, + 160,144,136,2,87,103,128,128,128,128,128,128,248,2,87,103, + 136,216,168,136,136,136,136,2,87,103,136,136,200,168,152,136, + 136,2,87,103,112,136,136,136,136,136,112,2,87,103,240,136, + 136,240,128,128,128,2,87,103,112,136,136,136,168,144,104,2, + 87,103,240,136,136,240,160,144,136,2,87,103,112,136,128,112, + 8,136,112,2,87,103,248,32,32,32,32,32,32,2,87,103, + 136,136,136,136,136,136,112,2,87,103,136,136,136,136,80,80, + 32,2,87,103,136,136,136,136,168,168,80,2,87,103,136,136, + 80,32,80,136,136,2,87,103,136,136,80,32,32,32,32,2, + 87,103,248,8,16,32,64,128,248,17,57,105,224,128,128,128, + 128,128,128,128,224,2,87,103,128,64,64,32,16,16,8,17, + 57,105,224,32,32,32,32,32,32,32,224,7,83,99,32,80, + 136,0,81,97,248,23,51,99,128,64,32,2,85,101,112,8, + 120,136,120,2,87,103,128,128,240,136,136,136,240,2,85,101, + 112,136,128,136,112,2,87,103,8,8,120,136,136,136,120,2, + 85,101,112,136,240,128,112,2,87,103,48,72,64,224,64,64, + 64,0,87,103,112,136,136,136,120,8,112,2,87,103,128,128, + 240,136,136,136,136,18,55,103,64,0,192,64,64,64,224,16, + 73,105,16,0,48,16,16,16,16,144,96,2,87,103,128,128, + 136,144,224,144,136,18,55,103,192,64,64,64,64,64,224,2, + 85,101,208,168,168,168,168,2,85,101,176,200,136,136,136,2, + 85,101,112,136,136,136,112,0,87,103,240,136,136,136,240,128, + 128,0,87,103,120,136,136,136,120,8,8,2,85,101,176,200, + 128,128,128,2,85,101,120,128,112,8,240,2,87,103,32,32, + 248,32,32,32,24,2,85,101,136,136,136,152,104,2,85,101, + 136,136,136,80,32,2,85,101,136,136,168,168,80,2,85,101, + 136,80,32,80,136,0,87,103,136,136,136,80,32,64,128,2, + 85,101,248,16,32,64,248,17,57,105,32,64,64,64,128,64, + 64,64,32,33,25,105,128,128,128,128,128,128,128,128,128,17, + 57,105,128,64,64,64,32,64,64,64,128,4,83,99,72,168, + 144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 9 + Calculated Max Values w= 6 h=13 x= 5 y= 9 dx= 6 dy= 0 ascent=11 len=13 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[2236] U8G_SECTION(".progmem.u8g_font_6x13_67_75") = { + 1,6,13,0,254,3,1,73,2,147,32,255,0,11,254,9, + 0,3,101,101,80,40,252,40,80,2,89,105,32,32,32,32, + 168,112,168,112,32,3,101,101,36,72,240,72,36,3,101,101, + 144,72,60,72,144,3,85,101,32,72,248,72,32,2,89,105, + 32,112,168,32,32,32,32,32,248,3,85,101,32,144,248,144, + 32,2,89,105,248,32,32,32,32,32,168,112,32,2,89,105, + 32,112,168,32,32,168,112,32,248,3,101,101,40,68,248,64, + 32,3,101,101,80,136,124,8,16,3,101,101,32,76,252,72, + 40,3,101,101,16,200,252,72,80,4,100,100,72,220,236,72, + 3,101,101,8,88,252,104,64,2,89,105,128,128,144,176,208, + 144,16,56,16,2,89,105,32,64,248,72,40,8,8,8,8, + 2,89,105,32,16,248,144,160,128,128,128,128,2,89,105,8, + 8,8,8,40,72,248,64,32,2,89,105,128,128,128,128,160, + 144,248,16,32,3,85,101,240,16,16,56,16,3,86,102,8, + 8,8,72,248,64,3,85,101,48,72,72,232,72,3,85,101, + 96,144,144,184,144,2,89,105,248,128,224,192,160,32,16,16, + 8,2,89,105,160,192,248,192,168,24,248,24,40,3,86,102, + 56,48,168,136,136,112,3,86,102,224,96,168,136,136,112,5, + 83,99,32,64,248,3,83,99,248,64,32,34,57,105,128,192, + 160,128,128,128,128,128,128,2,57,105,32,96,160,32,32,32, + 32,32,32,5,83,99,32,16,248,3,83,99,248,16,32,34, + 57,105,128,128,128,128,128,128,160,192,128,2,57,105,32,32, + 32,32,32,32,160,96,32,2,89,105,32,16,248,16,32,64, + 248,64,32,2,89,105,80,240,80,80,80,80,80,120,80,2, + 89,105,32,64,248,64,32,16,248,16,32,2,89,105,32,64, + 248,64,32,64,248,64,32,2,89,105,80,248,80,80,80,80, + 80,80,80,2,89,105,32,16,248,16,32,16,248,16,32,2, + 89,105,80,80,80,80,80,80,80,248,80,2,87,103,32,64, + 248,0,248,16,32,2,87,103,32,16,248,0,248,64,32,2, + 103,103,20,40,124,144,124,32,80,2,103,103,8,88,252,164, + 252,104,64,2,103,103,160,80,248,36,248,16,40,2,103,103, + 16,32,124,128,124,32,16,2,89,105,32,80,216,80,80,80, + 80,80,80,2,103,103,32,16,248,4,248,16,32,2,89,105, + 80,80,80,80,80,80,216,80,32,3,101,101,72,252,132,252, + 72,2,89,105,32,80,216,80,80,80,216,80,32,3,102,102, + 248,160,208,168,148,8,3,102,102,124,20,44,84,164,64,3, + 102,102,64,164,84,44,20,124,3,102,102,8,148,168,208,160, + 248,2,103,103,16,60,64,252,64,60,16,2,103,103,32,240, + 8,252,8,240,32,4,100,100,64,232,212,64,4,100,100,8, + 92,172,8,2,89,105,32,112,168,32,112,32,112,32,32,2, + 89,105,32,32,112,32,112,32,168,112,32,3,85,101,32,64, + 168,64,32,2,89,105,32,112,168,0,32,32,0,32,32,3, + 85,101,32,16,168,16,32,2,89,105,32,32,0,32,32,0, + 168,112,32,3,85,101,160,192,248,192,160,3,85,101,40,24, + 248,24,40,3,85,101,32,120,136,120,32,2,89,105,32,80, + 216,80,80,80,80,80,112,3,85,101,32,240,136,240,32,2, + 89,105,112,80,80,80,80,80,216,80,32,2,90,106,32,80, + 216,80,80,112,0,112,80,112,2,89,105,32,80,216,80,80, + 80,216,136,248,2,89,105,32,80,248,136,80,80,216,136,248, + 2,89,105,32,112,248,112,112,112,248,168,248,2,89,105,32, + 80,216,80,216,80,80,80,112,2,89,105,32,80,216,80,216, + 80,216,136,248,3,85,101,160,240,136,240,160,3,88,104,248, + 128,176,224,144,16,8,8,2,88,104,128,128,64,72,56,104, + 8,248,2,89,105,32,80,216,80,80,80,216,80,32,3,101, + 101,16,104,252,104,16,2,89,105,80,120,80,80,80,80,80, + 240,80,2,89,105,16,248,16,16,248,16,16,248,16,3,101, + 101,40,72,252,72,40,3,101,101,80,72,252,72,80,4,101, + 101,48,120,252,120,48,3,101,101,56,88,252,88,56,3,101, + 101,112,104,252,104,112,4,101,101,48,120,252,120,48,3,85, + 101,32,96,184,96,32,3,85,101,32,48,232,48,32,4,101, + 101,48,120,180,120,48,7,102,102,252,252,252,252,252,252,0, + 98,98,252,252,0,99,99,252,252,252,0,101,101,252,252,252, + 252,252,0,103,103,252,252,252,252,252,252,252,0,104,104,252, + 252,252,252,252,252,252,252,0,106,106,252,252,252,252,252,252, + 252,252,252,252,0,107,107,252,252,252,252,252,252,252,252,252, + 252,252,0,109,109,252,252,252,252,252,252,252,252,252,252,252, + 252,252,0,93,109,248,248,248,248,248,248,248,248,248,248,248, + 248,248,0,77,109,240,240,240,240,240,240,240,240,240,240,240, + 240,240,0,77,109,240,240,240,240,240,240,240,240,240,240,240, + 240,240,0,61,109,224,224,224,224,224,224,224,224,224,224,224, + 224,224,0,45,109,192,192,192,192,192,192,192,192,192,192,192, + 192,192,0,45,109,192,192,192,192,192,192,192,192,192,192,192, + 192,192,0,29,109,128,128,128,128,128,128,128,128,128,128,128, + 128,128,48,61,109,224,224,224,224,224,224,224,224,224,224,224, + 224,224,0,109,109,168,0,84,0,168,0,84,0,168,0,84, + 0,168,0,109,109,168,84,168,84,168,84,168,84,168,84,168, + 84,168,0,109,109,84,252,168,252,84,252,168,252,84,252,168, + 252,84,11,98,98,252,252,80,29,109,128,128,128,128,128,128, + 128,128,128,128,128,128,128,0,55,103,224,224,224,224,224,224, + 224,48,55,103,224,224,224,224,224,224,224,7,54,102,224,224, + 224,224,224,224,0,109,109,224,224,224,224,224,224,252,252,252, + 252,252,252,252,0,109,109,224,224,224,224,224,224,28,28,28, + 28,28,28,28,0,109,109,252,252,252,252,252,252,224,224,224, + 224,224,224,224,0,109,109,252,252,252,252,252,252,28,28,28, + 28,28,28,28,55,54,102,224,224,224,224,224,224,0,109,109, + 28,28,28,28,28,28,224,224,224,224,224,224,224,0,109,109, + 28,28,28,28,28,28,252,252,252,252,252,252,252,3,85,101, + 248,248,248,248,248,3,85,101,248,136,136,136,248,3,85,101, + 112,136,136,136,112,3,85,101,248,136,168,136,248,2,85,101, + 248,136,248,136,248,2,85,101,248,168,168,168,248,2,85,101, + 248,168,248,168,248,2,85,101,248,200,168,152,248,2,85,101, + 248,152,168,200,248,2,85,101,248,216,168,216,248,21,51,99, + 224,224,224,21,51,99,224,160,224,4,101,101,252,252,252,252, + 252,4,101,101,252,132,132,132,252,17,75,107,240,240,240,240, + 240,240,240,240,240,240,240,17,75,107,240,144,144,144,144,144, + 144,144,144,144,240,5,99,99,60,120,240,5,99,99,60,72, + 240,2,89,105,32,32,32,112,112,112,248,248,248,2,89,105, + 32,32,32,80,80,80,136,136,248,4,85,101,32,32,112,112, + 248,4,85,101,32,32,80,80,248,2,89,105,128,192,224,240, + 248,240,224,192,128,2,89,105,128,192,160,144,136,144,160,192, + 128,20,53,101,128,192,224,192,128,20,53,101,128,192,160,192, + 128,4,101,101,192,240,252,240,192,4,101,101,192,176,140,176, + 192,2,89,105,248,248,248,112,112,112,32,32,32,2,89,105, + 248,136,136,80,80,80,32,32,32,3,85,101,248,112,112,32, + 32,3,85,101,248,80,80,32,32,2,89,105,8,24,56,120, + 248,120,56,24,8,2,89,105,8,24,40,72,136,72,40,24, + 8,20,53,101,32,96,224,96,32,20,53,101,32,96,160,96, + 32,4,101,101,12,60,252,60,12,4,101,101,12,52,196,52, + 12,4,85,101,32,112,248,112,32,4,85,101,32,80,136,80, + 32,4,85,101,32,80,168,80,32,3,102,102,48,72,180,180, + 72,48,2,89,105,32,32,80,80,136,80,80,32,32,3,102, + 102,48,72,132,132,72,48,3,102,102,32,8,128,4,64,16, + 2,85,101,112,168,168,168,112,2,87,103,112,136,168,216,168, + 136,112,3,102,102,48,120,252,252,120,48,3,102,102,48,104, + 228,228,104,48,3,102,102,48,88,156,156,88,48,3,102,102, + 48,72,132,252,120,48,3,102,102,48,120,252,132,72,48,3, + 102,102,48,88,156,132,72,48,3,102,102,48,88,156,252,120, + 48,18,90,106,8,56,120,120,248,248,120,120,56,8,2,90, + 106,128,224,240,240,248,248,240,240,224,128,0,109,109,252,252, + 252,252,252,204,132,132,204,252,252,252,252,0,109,109,252,252, + 252,252,204,180,120,120,180,204,252,252,252,6,103,103,252,252, + 252,252,204,180,120,0,102,102,120,180,204,252,252,252,6,51, + 99,32,64,128,54,51,99,128,64,32,51,51,99,32,64,128, + 3,51,99,128,64,32,6,99,99,48,72,132,3,99,99,132, + 72,48,3,85,101,8,24,56,120,248,3,85,101,128,192,224, + 240,248,3,85,101,248,240,224,192,128,3,85,101,248,120,56, + 24,8,4,85,101,112,136,136,136,112,3,85,101,248,232,232, + 232,248,3,85,101,248,184,184,184,248,3,85,101,248,248,232, + 200,248,3,85,101,248,152,184,248,248,3,85,101,248,168,168, + 168,248,2,89,105,32,32,32,80,80,112,168,136,248,2,89, + 105,32,32,32,112,112,112,232,232,248,2,89,105,32,32,32, + 112,112,112,184,184,248,2,103,103,48,72,132,132,132,72,48, + 3,85,101,248,168,232,136,248,3,85,101,248,136,232,168,248, + 3,85,101,248,136,184,168,248,3,85,101,248,168,184,136,248, + 3,85,101,112,168,232,136,112,3,85,101,112,136,232,168,112, + 3,85,101,112,136,184,168,112,3,85,101,112,168,184,136,112, + 3,85,101,248,144,160,192,128,3,85,101,248,72,40,24,8, + 3,85,101,128,192,160,144,248,20,68,100,240,144,144,240,20, + 68,100,240,240,240,240,20,68,100,240,144,144,240,20,68,100, + 240,240,240,240,3,85,101,8,24,40,72,248}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 3 + Calculated Max Values w= 6 h=11 x= 1 y= 3 dx= 6 dy= 0 ascent=10 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_75r[447] U8G_SECTION(".progmem.u8g_font_6x13_75r") = { + 1,6,13,0,254,9,1,57,0,0,32,79,0,10,255,9, + 0,3,85,101,248,248,248,248,248,3,85,101,248,136,136,136, + 248,3,85,101,112,136,136,136,112,3,85,101,248,136,168,136, + 248,2,85,101,248,136,248,136,248,2,85,101,248,168,168,168, + 248,2,85,101,248,168,248,168,248,2,85,101,248,200,168,152, + 248,2,85,101,248,152,168,200,248,2,85,101,248,216,168,216, + 248,21,51,99,224,224,224,21,51,99,224,160,224,4,101,101, + 252,252,252,252,252,4,101,101,252,132,132,132,252,17,75,107, + 240,240,240,240,240,240,240,240,240,240,240,17,75,107,240,144, + 144,144,144,144,144,144,144,144,240,5,99,99,60,120,240,5, + 99,99,60,72,240,2,89,105,32,32,32,112,112,112,248,248, + 248,2,89,105,32,32,32,80,80,80,136,136,248,4,85,101, + 32,32,112,112,248,4,85,101,32,32,80,80,248,2,89,105, + 128,192,224,240,248,240,224,192,128,2,89,105,128,192,160,144, + 136,144,160,192,128,20,53,101,128,192,224,192,128,20,53,101, + 128,192,160,192,128,4,101,101,192,240,252,240,192,4,101,101, + 192,176,140,176,192,2,89,105,248,248,248,112,112,112,32,32, + 32,2,89,105,248,136,136,80,80,80,32,32,32,3,85,101, + 248,112,112,32,32,3,85,101,248,80,80,32,32,2,89,105, + 8,24,56,120,248,120,56,24,8,2,89,105,8,24,40,72, + 136,72,40,24,8,20,53,101,32,96,224,96,32,20,53,101, + 32,96,160,96,32,4,101,101,12,60,252,60,12,4,101,101, + 12,52,196,52,12,4,85,101,32,112,248,112,32,4,85,101, + 32,80,136,80,32,4,85,101,32,80,168,80,32,3,102,102, + 48,72,180,180,72,48,2,89,105,32,32,80,80,136,80,80, + 32,32,3,102,102,48,72,132,132,72,48,3,102,102,32,8, + 128,4,64,16,2,85,101,112,168,168,168,112,2,87,103,112, + 136,168,216,168,136,112,3,102,102,48,120,252,252,120,48}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 6 h=13 x= 2 y= 5 dx= 6 dy= 0 ascent=11 len=13 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[1470] U8G_SECTION(".progmem.u8g_font_6x13_78_79") = { + 1,6,13,0,254,7,1,42,2,11,32,255,0,11,254,10, + 0,2,87,103,112,32,168,248,168,32,112,255,2,104,104,48, + 48,48,252,252,48,48,48,2,89,105,32,112,32,168,248,168, + 32,112,32,2,89,105,32,112,32,168,248,168,32,112,32,2, + 89,105,32,112,32,168,248,168,32,112,32,4,85,101,32,112, + 248,112,32,4,85,101,32,80,136,80,32,255,4,86,102,32, + 32,248,80,112,136,2,89,105,112,216,216,0,136,136,112,248, + 112,4,86,102,32,32,248,80,112,136,4,86,102,32,32,248, + 112,112,136,4,86,102,32,32,248,112,112,136,4,86,102,32, + 32,248,112,112,136,4,86,102,32,32,248,112,112,136,4,102, + 102,48,48,252,88,120,204,3,87,103,32,168,112,112,112,168, + 32,3,87,103,32,168,112,80,112,168,32,3,87,103,32,168, + 112,248,112,168,32,3,87,103,32,168,112,248,112,168,32,3, + 87,103,32,168,112,248,112,168,32,3,87,103,32,168,112,112, + 112,168,32,3,87,103,80,80,248,32,248,80,80,3,87,103, + 80,112,248,112,248,112,80,255,255,3,87,103,32,168,168,112, + 168,168,32,3,87,103,32,168,168,80,168,168,32,3,87,103, + 32,168,168,112,168,168,32,3,87,103,32,168,168,80,168,168, + 32,4,85,101,32,248,80,112,216,255,255,255,3,87,103,32, + 168,168,112,168,168,32,3,87,103,32,168,168,112,168,168,32, + 3,87,103,32,168,168,112,168,168,32,3,87,103,32,168,168, + 112,168,168,32,3,87,103,32,168,112,248,112,168,32,3,87, + 103,32,168,112,248,112,168,32,3,87,103,32,168,168,112,168, + 168,32,3,87,103,32,168,112,248,112,168,32,3,87,103,32, + 168,112,248,112,168,32,255,2,102,102,120,140,140,140,140,120, + 255,2,102,102,248,136,140,140,252,60,2,102,102,60,252,140, + 140,136,248,2,102,102,248,140,140,140,252,124,2,102,102,124, + 252,140,140,140,248,255,255,255,2,89,105,32,112,32,80,248, + 80,32,112,32,255,34,25,105,128,128,128,128,128,128,128,128, + 128,18,57,105,224,224,224,224,224,224,224,224,224,2,89,105, + 248,248,248,248,248,248,248,248,248,23,53,101,96,128,224,224, + 64,23,53,101,64,224,224,32,192,7,101,101,108,144,252,252, + 72,7,101,101,72,252,252,36,216,255,255,2,106,106,8,124, + 232,232,120,8,104,104,72,48,18,57,105,64,224,224,64,64, + 0,64,224,64,2,89,105,80,248,248,112,32,0,32,112,32, + 2,87,103,80,248,248,248,112,32,32,2,103,103,96,240,248, + 124,248,240,96,2,89,105,104,176,16,216,248,240,96,104,48, + 2,104,104,64,144,184,124,92,188,184,80,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,2,89,105,112,248,216,152, + 216,216,136,248,112,2,89,105,112,248,216,168,232,216,136,248, + 112,2,89,105,112,248,216,168,216,232,152,248,112,2,89,105, + 112,248,184,184,152,136,216,248,112,2,89,105,112,248,136,184, + 152,232,152,248,112,2,89,105,112,248,200,184,152,168,216,248, + 112,2,89,105,112,248,136,232,216,216,216,248,112,2,89,105, + 112,248,216,168,216,168,216,248,112,2,89,105,112,248,216,168, + 200,232,152,248,112,2,105,105,120,252,172,148,148,148,172,252, + 120,2,89,105,112,136,168,232,168,168,168,136,112,2,89,105, + 112,136,168,216,152,168,248,136,112,2,89,105,112,136,168,216, + 168,152,232,136,112,2,89,105,112,136,200,200,232,248,168,136, + 112,2,89,105,112,136,248,200,232,152,232,136,112,2,89,105, + 112,136,184,200,232,216,168,136,112,2,89,105,112,136,248,152, + 168,168,168,136,112,2,89,105,112,136,168,216,168,216,168,136, + 112,2,89,105,112,136,168,216,184,152,232,136,112,2,105,105, + 120,132,212,236,236,236,212,132,120,2,89,105,112,248,216,152, + 216,216,216,248,112,2,89,105,112,248,216,168,232,216,136,248, + 112,2,89,105,112,248,216,168,216,232,152,248,112,2,89,105, + 112,248,184,184,152,136,216,248,112,2,89,105,112,248,136,184, + 152,232,152,248,112,2,89,105,112,248,200,184,152,168,216,248, + 112,2,89,105,112,248,136,232,216,216,216,248,112,2,89,105, + 112,248,216,168,216,168,216,248,112,2,89,105,112,248,216,168, + 200,232,152,248,112,2,105,105,120,252,172,148,148,148,172,252, + 120,4,102,102,48,24,252,252,24,48,255,255,255,4,85,101, + 128,64,40,24,56,4,85,101,32,48,248,48,32,4,85,101, + 56,24,40,64,128,3,103,103,64,32,48,252,48,32,64,3, + 104,104,32,48,24,252,252,24,48,32,4,101,101,16,24,252, + 24,16,4,102,102,16,24,252,252,24,16,4,102,102,16,24, + 188,188,24,16,3,103,103,32,48,184,188,184,48,32,3,103, + 103,32,48,248,252,248,48,32,255,255,4,101,101,192,112,60, + 112,192,3,103,103,32,176,248,252,120,48,32,3,103,103,32, + 48,120,252,248,176,32,0,109,109,32,32,48,240,248,248,252, + 248,248,240,48,32,32,255,255,255,255,255,255,255,255,255,255, + 1,107,107,120,252,220,204,4,0,4,204,220,248,120,255,4, + 102,102,32,32,224,20,12,28,4,101,101,144,200,124,200,144, + 4,102,102,28,12,20,224,32,32,4,102,102,32,32,224,20, + 12,28,4,101,101,144,200,124,200,144,4,102,102,28,12,20, + 224,32,32,4,101,101,16,8,252,8,16,4,101,101,16,200, + 252,200,16,5,99,99,232,124,232,4,101,101,208,216,124,216, + 208,2,105,105,160,80,40,244,4,244,40,80,160,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,1,91,107,248,160,160,160,160,160,160,160,160, + 160,248,1,91,107,248,40,40,40,40,40,40,40,40,40,248, + 17,75,107,16,32,32,64,64,128,64,64,32,32,16,17,75, + 107,128,64,64,32,32,16,32,32,64,64,128,1,107,107,20, + 40,40,80,80,160,80,80,40,40,20,1,107,107,160,80,80, + 40,40,20,40,40,80,80,160,255,255,255,255,255,255,255,255, + 255,3,101,101,32,64,252,64,32,3,101,101,16,8,252,8, + 16,4,99,99,72,252,72,2,103,103,16,32,124,128,124,32, + 16,2,103,103,32,16,248,4,248,16,32,3,101,101,72,252, + 132,252,72,3,101,101,36,68,252,68,36,3,101,101,144,136, + 252,136,144,2,103,103,20,36,124,132,124,36,20,2,103,103, + 160,144,248,132,248,144,160,4,100,100,8,92,172,8}; +/* + Fontname: -Misc-Fixed-Bold-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13B[2171] U8G_SECTION(".progmem.u8g_font_6x13B") = { + 1,6,13,0,254,9,1,99,2,211,32,255,254,11,254,10, + 254,13,0,96,34,41,105,192,192,192,192,192,192,192,0,192, + 8,83,99,216,216,216,3,103,103,120,120,252,120,252,120,120, + 3,103,103,48,120,240,120,60,120,48,2,105,105,108,252,120, + 24,48,96,120,252,216,2,103,103,96,240,240,96,252,216,124, + 40,35,99,192,192,192,17,75,107,48,96,96,192,192,192,192, + 192,96,96,48,17,75,107,192,96,96,48,48,48,48,48,96, + 96,192,4,101,101,204,120,252,120,204,4,101,101,48,48,252, + 48,48,17,67,99,112,96,192,6,97,97,252,17,67,99,96, + 240,96,2,105,105,12,12,24,24,48,96,96,192,192,2,105, + 105,48,120,204,204,204,204,204,120,48,2,105,105,48,112,240, + 48,48,48,48,48,252,2,105,105,120,204,204,12,24,48,96, + 192,252,2,105,105,252,12,24,48,120,12,12,204,120,2,105, + 105,24,24,56,120,88,216,252,24,24,2,105,105,252,192,192, + 248,236,12,12,204,120,2,105,105,56,96,192,192,248,236,204, + 204,120,2,105,105,252,12,24,24,48,48,96,96,96,2,105, + 105,120,204,204,204,120,204,204,204,120,2,105,105,120,204,204, + 220,124,12,12,24,112,18,72,104,96,240,96,0,0,96,240, + 96,17,72,104,96,240,96,0,0,112,96,192,2,105,105,12, + 24,48,96,192,96,48,24,12,4,100,100,252,0,0,252,2, + 105,105,192,96,48,24,12,24,48,96,192,2,105,105,120,204, + 204,12,24,48,48,0,48,2,105,105,120,204,204,220,252,252, + 248,192,124,2,105,105,48,120,204,204,204,252,204,204,204,2, + 105,105,248,108,108,108,120,108,108,108,248,2,105,105,120,204, + 192,192,192,192,192,204,120,2,105,105,248,108,108,108,108,108, + 108,108,248,2,105,105,252,192,192,192,248,192,192,192,252,2, + 105,105,252,192,192,192,248,192,192,192,192,2,105,105,120,204, + 192,192,192,220,204,204,120,2,105,105,204,204,204,204,252,204, + 204,204,204,18,73,105,240,96,96,96,96,96,96,96,240,2, + 105,105,60,12,12,12,12,12,12,204,120,2,105,105,204,204, + 216,240,224,240,216,204,204,2,105,105,192,192,192,192,192,192, + 192,192,252,2,105,105,204,204,252,252,252,204,204,204,204,2, + 105,105,204,236,236,252,252,220,220,204,204,2,105,105,120,204, + 204,204,204,204,204,204,120,2,105,105,248,204,204,204,248,192, + 192,192,192,1,106,106,120,204,204,204,204,204,204,252,120,12, + 2,105,105,248,204,204,204,248,240,216,204,204,2,105,105,120, + 204,192,192,120,12,12,204,120,2,105,105,252,48,48,48,48, + 48,48,48,48,2,105,105,204,204,204,204,204,204,204,204,120, + 2,105,105,204,204,204,204,120,120,120,48,48,2,105,105,204, + 204,204,204,252,252,252,252,204,2,105,105,204,204,120,120,48, + 120,120,204,204,2,105,105,204,204,120,120,48,48,48,48,48, + 2,105,105,252,12,24,24,48,96,96,192,252,17,75,107,240, + 192,192,192,192,192,192,192,192,192,240,2,105,105,192,192,96, + 96,48,24,24,12,12,17,75,107,240,48,48,48,48,48,48, + 48,48,48,240,8,99,99,48,120,204,1,97,97,252,26,50, + 98,192,96,2,102,102,120,12,124,204,220,108,2,105,105,192, + 192,192,216,236,204,204,236,216,2,102,102,120,204,192,192,204, + 120,2,105,105,12,12,12,108,220,204,204,220,108,2,102,102, + 120,204,252,192,192,120,2,105,105,56,108,96,96,248,96,96, + 96,96,0,104,104,124,216,216,112,192,120,204,120,2,105,105, + 192,192,192,216,236,204,204,204,204,18,73,105,96,96,0,224, + 96,96,96,96,240,0,91,107,24,24,0,56,24,24,24,24, + 216,216,112,2,105,105,192,192,192,216,240,224,240,216,204,18, + 73,105,224,96,96,96,96,96,96,96,240,2,102,102,248,252, + 252,252,252,204,2,102,102,216,236,204,204,204,204,2,102,102, + 120,204,204,204,204,120,0,104,104,216,236,204,236,216,192,192, + 192,0,104,104,108,220,204,220,108,12,12,12,2,102,102,216, + 236,192,192,192,192,2,102,102,120,204,112,24,204,120,2,104, + 104,96,96,248,96,96,96,108,56,2,102,102,204,204,204,204, + 220,108,2,102,102,204,204,204,120,120,48,2,102,102,204,204, + 252,252,252,72,2,102,102,204,120,48,48,120,204,0,104,104, + 204,204,204,220,108,12,204,120,2,102,102,252,24,48,96,192, + 252,1,91,107,56,96,96,96,48,224,48,96,96,96,56,34, + 41,105,192,192,192,192,192,192,192,192,192,1,91,107,224,48, + 48,48,96,56,96,48,48,48,224,8,83,99,104,248,144,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 13,0,96,34,42,106,192,192,0,192,192,192,192,192,192,192, + 3,104,104,16,120,212,208,208,212,120,16,2,105,105,56,108, + 96,96,248,96,96,100,248,3,102,102,204,252,72,72,252,204, + 2,105,105,204,204,120,120,252,48,252,48,48,34,42,106,192, + 192,192,192,0,0,192,192,192,192,2,106,106,120,204,192,120, + 204,204,120,12,204,120,9,98,98,204,204,2,105,105,120,204, + 180,236,228,236,180,204,120,4,103,103,248,12,252,140,252,0, + 252,3,103,103,52,104,208,160,208,104,52,4,100,100,252,252, + 4,4,22,65,97,240,2,105,105,120,204,188,172,188,180,172, + 204,120,9,82,98,248,248,7,100,100,120,204,204,120,2,105, + 105,48,48,252,252,48,48,0,252,252,6,70,102,224,176,48, + 96,192,240,6,70,102,224,176,96,48,176,224,26,50,98,96, + 192,0,104,104,204,204,204,204,204,252,128,128,2,105,105,124, + 252,244,244,244,116,52,52,52,38,34,98,192,192,16,50,98, + 96,192,6,70,102,96,224,96,96,96,240,5,87,103,112,248, + 136,248,112,0,248,3,103,103,176,88,44,20,44,88,176,2, + 106,106,96,224,96,96,100,252,28,52,60,12,2,106,106,96, + 224,96,96,120,236,12,24,48,60,2,106,106,224,176,96,48, + 180,236,28,52,60,12,2,106,106,48,48,0,48,48,96,192, + 204,204,120,2,106,106,96,48,0,48,120,204,204,252,204,204, + 2,106,106,24,48,0,48,120,204,204,252,204,204,2,106,106, + 56,108,0,48,120,204,204,252,204,204,2,106,106,52,88,0, + 48,120,204,204,252,204,204,2,106,106,204,204,0,48,120,204, + 204,252,204,204,2,106,106,48,72,120,48,120,204,204,252,204, + 204,2,105,105,124,176,176,176,184,240,240,176,188,0,107,107, + 120,204,192,192,192,192,192,204,120,48,96,2,106,106,96,48, + 0,252,192,192,248,192,192,252,2,106,106,24,48,0,252,192, + 192,248,192,192,252,2,106,106,56,108,0,252,192,192,248,192, + 192,252,2,106,106,204,204,0,252,192,192,248,192,192,252,18, + 74,106,192,96,0,240,96,96,96,96,96,240,18,74,106,48, + 96,0,240,96,96,96,96,96,240,2,90,106,112,216,0,120, + 48,48,48,48,48,120,2,106,106,204,204,0,120,48,48,48, + 48,48,120,2,105,105,248,108,108,108,236,108,108,108,248,2, + 106,106,52,88,0,204,236,236,252,220,220,204,2,106,106,96, + 48,0,120,204,204,204,204,204,120,2,106,106,24,48,0,120, + 204,204,204,204,204,120,2,106,106,56,108,0,120,204,204,204, + 204,204,120,2,106,106,52,88,0,120,204,204,204,204,204,120, + 2,106,106,204,204,0,120,204,204,204,204,204,120,3,101,101, + 204,120,48,120,204,1,105,105,4,120,220,220,204,236,236,120, + 128,2,106,106,96,48,0,204,204,204,204,204,204,120,2,106, + 106,24,48,0,204,204,204,204,204,204,120,2,106,106,56,108, + 0,204,204,204,204,204,204,120,2,106,106,108,108,0,204,204, + 204,204,204,204,120,2,106,106,24,48,0,204,72,120,48,48, + 48,48,2,105,105,192,248,204,204,204,248,192,192,192,1,105, + 105,120,204,204,248,204,204,204,248,128,2,105,105,96,48,0, + 120,12,124,204,220,108,2,105,105,24,48,0,120,12,124,204, + 220,108,2,105,105,56,108,0,120,12,124,204,220,108,2,105, + 105,52,88,0,120,12,124,204,220,108,2,105,105,108,108,0, + 120,12,124,204,220,108,2,106,106,56,40,56,0,120,12,124, + 204,220,108,2,102,102,120,52,120,176,180,104,0,104,104,120, + 204,192,192,204,120,48,96,2,105,105,96,48,0,120,204,252, + 192,192,120,2,105,105,24,48,0,120,204,252,192,192,120,2, + 105,105,56,108,0,120,204,252,192,192,120,2,105,105,108,108, + 0,120,204,252,192,192,120,18,73,105,192,96,0,224,96,96, + 96,96,240,18,73,105,48,96,0,224,96,96,96,96,240,2, + 89,105,112,216,0,112,48,48,48,48,120,2,89,105,216,216, + 0,112,48,48,48,48,120,2,106,106,216,112,240,152,120,204, + 204,204,204,120,2,105,105,52,88,0,216,236,204,204,204,204, + 2,105,105,96,48,0,120,204,204,204,204,120,2,105,105,24, + 48,0,120,204,204,204,204,120,2,105,105,56,108,0,120,204, + 204,204,204,120,2,105,105,52,88,0,120,204,204,204,204,120, + 2,105,105,204,204,0,120,204,204,204,204,120,3,103,103,48, + 48,0,252,0,48,48,1,105,105,4,120,204,220,204,236,204, + 120,128,2,105,105,96,48,0,204,204,204,204,220,108,2,105, + 105,24,48,0,204,204,204,204,220,108,2,105,105,56,108,0, + 204,204,204,204,220,108,2,105,105,204,204,0,204,204,204,204, + 220,108,0,107,107,24,48,0,204,204,204,220,108,12,204,120, + 0,106,106,192,192,216,236,204,236,216,192,192,192,0,107,107, + 204,204,0,204,204,204,220,108,12,204,120}; +/* + Fontname: -Misc-Fixed-Bold-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13Br[1040] U8G_SECTION(".progmem.u8g_font_6x13Br") = { + 1,6,13,0,254,9,1,99,2,211,32,127,254,11,254,10, + 254,13,0,96,34,41,105,192,192,192,192,192,192,192,0,192, + 8,83,99,216,216,216,3,103,103,120,120,252,120,252,120,120, + 3,103,103,48,120,240,120,60,120,48,2,105,105,108,252,120, + 24,48,96,120,252,216,2,103,103,96,240,240,96,252,216,124, + 40,35,99,192,192,192,17,75,107,48,96,96,192,192,192,192, + 192,96,96,48,17,75,107,192,96,96,48,48,48,48,48,96, + 96,192,4,101,101,204,120,252,120,204,4,101,101,48,48,252, + 48,48,17,67,99,112,96,192,6,97,97,252,17,67,99,96, + 240,96,2,105,105,12,12,24,24,48,96,96,192,192,2,105, + 105,48,120,204,204,204,204,204,120,48,2,105,105,48,112,240, + 48,48,48,48,48,252,2,105,105,120,204,204,12,24,48,96, + 192,252,2,105,105,252,12,24,48,120,12,12,204,120,2,105, + 105,24,24,56,120,88,216,252,24,24,2,105,105,252,192,192, + 248,236,12,12,204,120,2,105,105,56,96,192,192,248,236,204, + 204,120,2,105,105,252,12,24,24,48,48,96,96,96,2,105, + 105,120,204,204,204,120,204,204,204,120,2,105,105,120,204,204, + 220,124,12,12,24,112,18,72,104,96,240,96,0,0,96,240, + 96,17,72,104,96,240,96,0,0,112,96,192,2,105,105,12, + 24,48,96,192,96,48,24,12,4,100,100,252,0,0,252,2, + 105,105,192,96,48,24,12,24,48,96,192,2,105,105,120,204, + 204,12,24,48,48,0,48,2,105,105,120,204,204,220,252,252, + 248,192,124,2,105,105,48,120,204,204,204,252,204,204,204,2, + 105,105,248,108,108,108,120,108,108,108,248,2,105,105,120,204, + 192,192,192,192,192,204,120,2,105,105,248,108,108,108,108,108, + 108,108,248,2,105,105,252,192,192,192,248,192,192,192,252,2, + 105,105,252,192,192,192,248,192,192,192,192,2,105,105,120,204, + 192,192,192,220,204,204,120,2,105,105,204,204,204,204,252,204, + 204,204,204,18,73,105,240,96,96,96,96,96,96,96,240,2, + 105,105,60,12,12,12,12,12,12,204,120,2,105,105,204,204, + 216,240,224,240,216,204,204,2,105,105,192,192,192,192,192,192, + 192,192,252,2,105,105,204,204,252,252,252,204,204,204,204,2, + 105,105,204,236,236,252,252,220,220,204,204,2,105,105,120,204, + 204,204,204,204,204,204,120,2,105,105,248,204,204,204,248,192, + 192,192,192,1,106,106,120,204,204,204,204,204,204,252,120,12, + 2,105,105,248,204,204,204,248,240,216,204,204,2,105,105,120, + 204,192,192,120,12,12,204,120,2,105,105,252,48,48,48,48, + 48,48,48,48,2,105,105,204,204,204,204,204,204,204,204,120, + 2,105,105,204,204,204,204,120,120,120,48,48,2,105,105,204, + 204,204,204,252,252,252,252,204,2,105,105,204,204,120,120,48, + 120,120,204,204,2,105,105,204,204,120,120,48,48,48,48,48, + 2,105,105,252,12,24,24,48,96,96,192,252,17,75,107,240, + 192,192,192,192,192,192,192,192,192,240,2,105,105,192,192,96, + 96,48,24,24,12,12,17,75,107,240,48,48,48,48,48,48, + 48,48,48,240,8,99,99,48,120,204,1,97,97,252,26,50, + 98,192,96,2,102,102,120,12,124,204,220,108,2,105,105,192, + 192,192,216,236,204,204,236,216,2,102,102,120,204,192,192,204, + 120,2,105,105,12,12,12,108,220,204,204,220,108,2,102,102, + 120,204,252,192,192,120,2,105,105,56,108,96,96,248,96,96, + 96,96,0,104,104,124,216,216,112,192,120,204,120,2,105,105, + 192,192,192,216,236,204,204,204,204,18,73,105,96,96,0,224, + 96,96,96,96,240,0,91,107,24,24,0,56,24,24,24,24, + 216,216,112,2,105,105,192,192,192,216,240,224,240,216,204,18, + 73,105,224,96,96,96,96,96,96,96,240,2,102,102,248,252, + 252,252,252,204,2,102,102,216,236,204,204,204,204,2,102,102, + 120,204,204,204,204,120,0,104,104,216,236,204,236,216,192,192, + 192,0,104,104,108,220,204,220,108,12,12,12,2,102,102,216, + 236,192,192,192,192,2,102,102,120,204,112,24,204,120,2,104, + 104,96,96,248,96,96,96,108,56,2,102,102,204,204,204,204, + 220,108,2,102,102,204,204,204,120,120,48,2,102,102,204,204, + 252,252,252,72,2,102,102,204,120,48,48,120,204,0,104,104, + 204,204,204,220,108,12,204,120,2,102,102,252,24,48,96,192, + 252,1,91,107,56,96,96,96,48,224,48,96,96,96,56,34, + 41,105,192,192,192,192,192,192,192,192,192,1,91,107,224,48, + 48,48,96,56,96,48,48,48,224,8,83,99,104,248,144,255 + }; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 5 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13[2160] U8G_SECTION(".progmem.u8g_font_6x13") = { + 1,6,13,0,254,9,1,102,2,214,32,255,254,11,254,10, + 254,13,0,96,34,25,105,128,128,128,128,128,128,128,0,128, + 24,51,99,160,160,160,3,87,103,80,80,248,80,248,80,80, + 2,89,105,32,120,160,160,112,40,40,240,32,2,89,105,72, + 168,80,16,32,64,80,168,144,2,88,104,64,160,160,64,160, + 152,144,104,40,19,99,128,128,128,17,59,107,32,64,64,128, + 128,128,128,128,64,64,32,17,59,107,128,64,64,32,32,32, + 32,32,64,64,128,6,85,101,32,168,112,168,32,4,85,101, + 32,32,248,32,32,17,51,99,96,64,128,6,81,97,248,17, + 51,99,64,224,64,2,89,105,8,8,16,16,32,64,64,128, + 128,2,89,105,32,80,136,136,136,136,136,80,32,2,89,105, + 32,96,160,32,32,32,32,32,248,2,89,105,112,136,136,8, + 16,32,64,128,248,2,89,105,248,8,16,32,112,8,8,136, + 112,2,89,105,16,16,48,80,80,144,248,16,16,2,89,105, + 248,128,128,176,200,8,8,136,112,2,89,105,112,136,128,128, + 240,136,136,136,112,2,89,105,248,8,16,16,32,32,64,64, + 64,2,89,105,112,136,136,136,112,136,136,136,112,2,89,105, + 112,136,136,136,120,8,8,136,112,17,56,104,64,224,64,0, + 0,64,224,64,17,56,104,64,224,64,0,0,96,64,128,2, + 89,105,8,16,32,64,128,64,32,16,8,4,84,100,248,0, + 0,248,2,89,105,128,64,32,16,8,16,32,64,128,2,89, + 105,112,136,136,8,16,32,32,0,32,2,89,105,112,136,136, + 152,168,168,176,128,120,2,89,105,32,80,136,136,136,248,136, + 136,136,2,89,105,240,72,72,72,112,72,72,72,240,2,89, + 105,112,136,128,128,128,128,128,136,112,2,89,105,240,72,72, + 72,72,72,72,72,240,2,89,105,248,128,128,128,240,128,128, + 128,248,2,89,105,248,128,128,128,240,128,128,128,128,2,89, + 105,112,136,128,128,128,152,136,136,112,2,89,105,136,136,136, + 136,248,136,136,136,136,18,57,105,224,64,64,64,64,64,64, + 64,224,2,89,105,56,16,16,16,16,16,16,144,96,2,89, + 105,136,136,144,160,192,160,144,136,136,2,89,105,128,128,128, + 128,128,128,128,128,248,2,89,105,136,136,216,168,168,136,136, + 136,136,2,89,105,136,200,200,168,168,152,152,136,136,2,89, + 105,112,136,136,136,136,136,136,136,112,2,89,105,240,136,136, + 136,240,128,128,128,128,1,90,106,112,136,136,136,136,136,136, + 168,112,8,2,89,105,240,136,136,136,240,160,144,136,136,2, + 89,105,112,136,128,128,112,8,8,136,112,2,89,105,248,32, + 32,32,32,32,32,32,32,2,89,105,136,136,136,136,136,136, + 136,136,112,2,89,105,136,136,136,136,80,80,80,32,32,2, + 89,105,136,136,136,136,168,168,168,168,80,2,89,105,136,136, + 80,80,32,80,80,136,136,2,89,105,136,136,80,80,32,32, + 32,32,32,2,89,105,248,8,16,16,32,64,64,128,248,17, + 59,107,224,128,128,128,128,128,128,128,128,128,224,2,89,105, + 128,128,64,64,32,16,16,8,8,17,59,107,224,32,32,32, + 32,32,32,32,32,32,224,8,83,99,32,80,136,1,81,97, + 248,42,34,98,128,64,2,86,102,112,8,120,136,152,104,2, + 89,105,128,128,128,240,136,136,136,136,240,2,86,102,112,136, + 128,128,136,112,2,89,105,8,8,8,120,136,136,136,136,120, + 2,86,102,112,136,248,128,136,112,2,89,105,48,72,64,64, + 240,64,64,64,64,0,88,104,112,136,136,136,120,8,136,112, + 2,89,105,128,128,128,176,200,136,136,136,136,18,56,104,64, + 0,192,64,64,64,64,224,0,74,106,16,0,48,16,16,16, + 16,144,144,96,2,89,105,128,128,128,144,160,192,160,144,136, + 18,57,105,192,64,64,64,64,64,64,64,224,2,86,102,208, + 168,168,168,168,136,2,86,102,176,200,136,136,136,136,2,86, + 102,112,136,136,136,136,112,0,88,104,240,136,136,136,240,128, + 128,128,0,88,104,120,136,136,136,120,8,8,8,2,86,102, + 176,200,128,128,128,128,2,86,102,112,136,96,16,136,112,2, + 88,104,64,64,240,64,64,64,72,48,2,86,102,136,136,136, + 136,152,104,2,86,102,136,136,136,80,80,32,2,86,102,136, + 136,168,168,168,80,2,86,102,136,80,32,32,80,136,0,88, + 104,136,136,136,152,104,8,136,112,2,86,102,248,16,32,64, + 128,248,1,91,107,24,32,32,32,32,192,32,32,32,32,24, + 34,25,105,128,128,128,128,128,128,128,128,128,1,91,107,192, + 32,32,32,32,24,32,32,32,32,192,8,83,99,72,168,144, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,13,0,96,34,25,105,128,0,128,128,128,128,128,128,128, + 3,88,104,32,112,168,160,160,168,112,32,2,89,105,48,72, + 64,64,224,64,64,72,176,3,86,102,136,112,80,80,112,136, + 2,89,105,136,136,80,80,248,32,248,32,32,34,25,105,128, + 128,128,128,0,128,128,128,128,18,74,106,96,144,128,96,144, + 144,96,16,144,96,26,50,98,160,160,3,89,105,112,136,168, + 216,200,216,168,136,112,4,87,103,112,8,120,136,120,0,248, + 3,86,102,40,80,160,160,80,40,4,83,99,248,8,8,22, + 49,97,224,3,89,105,112,136,232,216,216,232,216,136,112,10, + 81,97,248,23,68,100,96,144,144,96,3,87,103,32,32,248, + 32,32,0,248,7,53,101,64,160,32,64,224,7,53,101,64, + 160,64,32,192,42,34,98,64,128,0,88,104,136,136,136,136, + 152,232,128,128,2,89,105,120,232,232,232,232,104,40,40,40, + 38,33,97,192,32,34,98,64,128,7,53,101,64,192,64,64, + 224,4,87,103,112,136,136,136,112,0,248,3,86,102,160,80, + 40,40,80,160,2,90,106,64,192,64,64,224,8,24,40,56, + 8,2,90,106,64,192,64,64,224,16,40,8,16,56,2,90, + 106,64,160,64,32,160,72,24,40,56,8,2,89,105,32,0, + 32,32,64,128,136,136,112,2,90,106,64,32,0,32,80,136, + 136,248,136,136,2,90,106,16,32,0,32,80,136,136,248,136, + 136,2,90,106,48,72,0,32,80,136,136,248,136,136,2,90, + 106,40,80,0,32,80,136,136,248,136,136,2,90,106,80,80, + 0,32,80,136,136,248,136,136,2,90,106,32,80,32,32,80, + 136,136,248,136,136,2,89,105,88,160,160,160,176,224,160,160, + 184,0,91,107,112,136,128,128,128,128,128,136,112,32,64,2, + 90,106,64,32,0,248,128,128,240,128,128,248,2,90,106,16, + 32,0,248,128,128,240,128,128,248,2,90,106,48,72,0,248, + 128,128,240,128,128,248,2,90,106,80,80,0,248,128,128,240, + 128,128,248,18,58,106,128,64,0,224,64,64,64,64,64,224, + 18,58,106,32,64,0,224,64,64,64,64,64,224,18,74,106, + 96,144,0,224,64,64,64,64,64,224,18,58,106,160,160,0, + 224,64,64,64,64,64,224,2,89,105,240,72,72,72,232,72, + 72,72,240,2,90,106,40,80,0,136,136,200,168,152,136,136, + 2,90,106,64,32,0,112,136,136,136,136,136,112,2,90,106, + 16,32,0,112,136,136,136,136,136,112,2,90,106,48,72,0, + 112,136,136,136,136,136,112,2,90,106,40,80,0,112,136,136, + 136,136,136,112,2,90,106,80,80,0,112,136,136,136,136,136, + 112,3,85,101,136,80,32,80,136,1,91,107,8,112,152,152, + 168,168,168,200,200,112,128,2,90,106,64,32,0,136,136,136, + 136,136,136,112,2,90,106,16,32,0,136,136,136,136,136,136, + 112,2,90,106,48,72,0,136,136,136,136,136,136,112,2,90, + 106,80,80,0,136,136,136,136,136,136,112,2,90,106,16,32, + 0,136,136,80,32,32,32,32,2,89,105,128,240,136,136,136, + 240,128,128,128,2,89,105,96,144,144,160,160,144,136,136,176, + 2,89,105,64,32,0,112,8,120,136,152,104,2,89,105,16, + 32,0,112,8,120,136,152,104,2,89,105,48,72,0,112,8, + 120,136,152,104,2,89,105,40,80,0,112,8,120,136,152,104, + 2,89,105,80,80,0,112,8,120,136,152,104,2,90,106,48, + 72,48,0,112,8,120,136,152,104,2,86,102,112,40,112,160, + 168,80,0,88,104,112,136,128,128,136,112,32,64,2,89,105, + 64,32,0,112,136,248,128,136,112,2,89,105,16,32,0,112, + 136,248,128,136,112,2,89,105,48,72,0,112,136,248,128,136, + 112,2,89,105,80,80,0,112,136,248,128,136,112,18,57,105, + 128,64,0,192,64,64,64,64,224,18,57,105,32,64,0,192, + 64,64,64,64,224,18,73,105,96,144,0,192,64,64,64,64, + 224,18,57,105,160,160,0,192,64,64,64,64,224,2,90,106, + 80,32,96,16,112,136,136,136,136,112,2,89,105,40,80,0, + 176,200,136,136,136,136,2,89,105,64,32,0,112,136,136,136, + 136,112,2,89,105,16,32,0,112,136,136,136,136,112,2,89, + 105,48,72,0,112,136,136,136,136,112,2,89,105,40,80,0, + 112,136,136,136,136,112,2,89,105,80,80,0,112,136,136,136, + 136,112,3,87,103,32,32,0,248,0,32,32,1,88,104,8, + 112,152,168,168,200,112,128,2,89,105,64,32,0,136,136,136, + 136,152,104,2,89,105,16,32,0,136,136,136,136,152,104,2, + 89,105,48,72,0,136,136,136,136,152,104,2,89,105,80,80, + 0,136,136,136,136,152,104,0,91,107,16,32,0,136,136,136, + 152,104,8,136,112,0,90,106,128,128,176,200,136,136,200,176, + 128,128,0,91,107,80,80,0,136,136,136,152,104,8,136,112 + }; +/* + Fontname: -Misc-Fixed-Medium-O-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13O[2162] U8G_SECTION(".progmem.u8g_font_6x13O") = { + 1,6,13,0,254,9,1,104,2,216,32,255,254,11,254,10, + 254,13,0,96,34,41,105,64,64,64,64,128,128,128,0,128, + 40,67,99,80,80,160,3,103,103,40,40,124,40,248,80,80, + 2,105,105,16,60,80,80,56,36,40,240,32,2,105,105,36, + 84,40,8,16,32,80,168,144,2,104,104,16,40,40,48,80, + 148,152,104,56,35,99,64,64,128,17,75,107,16,32,64,64, + 128,128,128,128,64,64,32,17,75,107,64,32,32,16,16,16, + 16,32,32,64,128,3,103,103,16,84,124,56,124,168,32,20, + 69,101,32,32,240,64,64,17,51,99,96,64,128,22,65,97, + 240,17,51,99,64,224,64,2,105,105,4,4,8,16,16,32, + 64,128,128,2,105,105,16,40,68,68,68,136,136,80,32,2, + 89,105,16,48,80,16,16,32,32,32,248,2,105,105,56,68, + 68,8,16,32,64,128,248,2,105,105,124,4,8,16,56,4, + 8,136,112,2,89,105,8,8,24,40,40,72,248,16,16,2, + 105,105,124,64,64,88,100,4,8,136,112,2,105,105,56,68, + 64,64,112,136,136,136,112,18,89,105,248,8,16,16,32,64, + 64,128,128,2,105,105,56,68,68,68,120,136,136,136,112,2, + 105,105,56,68,68,68,56,8,8,136,112,17,72,104,32,112, + 32,0,0,64,224,64,17,72,104,32,112,32,0,0,96,64, + 128,18,89,105,8,16,32,64,128,64,64,32,16,4,100,100, + 124,0,0,248,2,105,105,64,32,16,8,4,8,48,64,128, + 18,89,105,112,136,136,8,16,32,64,0,64,2,105,105,56, + 68,68,88,168,168,144,128,120,2,105,105,16,40,68,68,68, + 248,136,136,136,2,105,105,120,36,36,36,56,72,72,72,240, + 2,105,105,56,68,64,64,64,128,128,136,112,2,105,105,120, + 36,36,36,36,72,72,72,240,2,105,105,124,64,64,64,120, + 128,128,128,248,2,105,105,124,64,64,64,120,128,128,128,128, + 2,105,105,56,68,64,64,64,152,136,136,112,2,105,105,68, + 68,68,68,124,136,136,136,136,18,73,105,112,32,32,32,32, + 64,64,64,224,2,105,105,28,8,8,8,8,16,16,144,96, + 2,105,105,68,68,72,80,96,160,144,136,136,2,89,105,64, + 64,64,64,64,128,128,128,248,2,105,105,68,68,108,84,84, + 136,136,136,136,2,105,105,68,100,100,84,84,152,136,136,136, + 2,105,105,56,68,68,68,68,136,136,136,112,2,105,105,120, + 68,68,68,120,128,128,128,128,1,106,106,56,68,68,68,68, + 136,136,168,112,8,2,105,105,120,68,68,68,120,144,144,136, + 136,2,105,105,56,68,64,64,48,8,8,136,112,18,89,105, + 248,32,32,32,32,64,64,64,64,2,105,105,68,68,68,68, + 68,136,136,136,112,18,89,105,136,136,136,136,144,144,160,160, + 64,2,105,105,68,68,68,68,168,168,168,168,80,2,105,105, + 68,68,40,40,16,48,72,136,136,18,89,105,136,136,80,80, + 32,32,64,64,64,2,105,105,124,4,8,8,16,32,64,128, + 248,1,91,107,56,32,32,32,64,64,64,128,128,128,224,18, + 73,105,128,128,64,64,64,32,32,16,16,1,91,107,56,8, + 8,8,16,16,16,32,32,32,224,24,83,99,32,80,136,1, + 81,97,248,58,34,98,128,64,2,102,102,56,4,124,136,152, + 104,2,105,105,64,64,64,120,68,136,136,136,240,2,102,102, + 56,68,128,128,136,112,2,105,105,4,4,4,60,68,136,136, + 136,120,2,102,102,56,68,124,128,136,112,18,89,105,48,72, + 64,64,240,64,128,128,128,0,104,104,56,68,68,136,120,8, + 136,112,2,105,105,32,32,32,88,100,68,136,136,136,18,56, + 104,32,0,96,32,32,64,64,224,0,90,106,8,0,24,8, + 8,16,16,144,144,96,2,89,105,32,32,32,72,80,96,160, + 144,136,18,73,105,48,16,16,32,32,32,64,64,224,2,102, + 102,104,84,84,168,168,136,2,102,102,88,100,68,136,136,136, + 2,102,102,56,68,68,136,136,112,0,104,104,120,68,68,136, + 240,128,128,128,0,104,104,60,68,132,136,120,8,16,16,2, + 102,102,88,100,64,128,128,128,2,102,102,56,68,32,16,136, + 112,18,72,104,32,32,240,64,64,128,144,96,2,102,102,68, + 68,136,136,152,104,18,86,102,136,136,136,144,160,64,2,102, + 102,68,68,84,168,168,80,2,102,102,68,40,16,32,80,136, + 0,104,104,68,68,136,152,104,8,144,96,2,102,102,124,8, + 16,96,128,248,1,91,107,24,32,32,32,32,192,32,64,64, + 64,48,34,41,105,64,64,64,64,64,128,128,128,128,1,107, + 107,96,16,16,16,16,12,16,32,32,32,192,24,83,99,72, + 168,144,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,13,0,96,34,41,105,64,0,64,64,64,128,128, + 128,128,3,104,104,16,56,84,80,160,168,112,32,2,105,105, + 24,36,32,32,112,32,64,72,176,3,102,102,68,56,40,80, + 112,136,2,105,105,68,68,40,40,124,32,248,32,32,34,41, + 105,64,64,64,64,0,128,128,128,128,18,90,106,48,72,64, + 48,72,72,48,16,144,96,58,50,98,160,160,2,105,105,56, + 68,84,108,100,216,168,136,112,4,103,103,56,4,124,136,120, + 0,248,19,86,102,40,80,160,160,160,80,20,83,99,248,8, + 16,38,49,97,224,3,105,105,56,68,116,108,108,232,216,136, + 112,26,81,97,248,23,68,100,96,144,144,96,19,71,103,32, + 32,240,64,64,0,240,23,69,101,32,80,32,64,224,23,69, + 101,96,16,96,32,192,58,34,98,64,128,0,104,104,36,36, + 68,72,88,168,128,128,18,89,105,120,232,232,232,232,80,80, + 80,80,54,33,97,192,32,34,98,64,128,23,53,101,32,96, + 64,64,224,4,103,103,56,68,68,136,112,0,248,19,86,102, + 80,40,40,40,80,160,18,90,106,32,96,64,64,224,8,56, + 80,112,16,18,90,106,32,96,64,64,224,16,40,16,32,112, + 18,90,106,96,16,96,32,192,8,56,80,112,16,2,89,105, + 16,0,16,16,32,64,136,136,112,2,106,106,32,16,0,16, + 40,68,68,248,136,136,2,106,106,8,16,0,16,40,68,68, + 248,136,136,2,106,106,24,36,0,16,40,68,68,248,136,136, + 2,106,106,20,40,0,16,40,68,68,248,136,136,2,106,106, + 40,40,0,16,40,68,68,248,136,136,2,106,106,16,40,16, + 16,40,68,68,248,136,136,2,105,105,44,80,80,80,88,224, + 160,160,184,0,107,107,56,68,64,64,64,128,128,136,112,32, + 64,2,106,106,32,16,0,124,64,64,120,128,128,248,2,106, + 106,8,16,0,124,64,64,120,128,128,248,2,106,106,24,36, + 0,124,64,64,120,128,128,248,2,106,106,40,40,0,124,64, + 64,120,128,128,248,18,74,106,64,32,0,112,32,32,32,64, + 64,224,18,74,106,16,32,0,112,32,32,32,64,64,224,18, + 90,106,48,72,0,112,32,32,32,64,64,224,18,74,106,80, + 80,0,112,32,32,32,64,64,224,2,105,105,120,36,36,36, + 116,36,72,72,240,2,106,106,20,40,0,68,68,100,88,136, + 136,136,2,106,106,32,16,0,56,68,68,68,136,136,112,2, + 106,106,8,16,0,56,68,68,68,136,136,112,2,106,106,24, + 36,0,56,68,68,68,136,136,112,2,106,106,20,40,0,56, + 68,68,68,136,136,112,2,106,106,40,40,0,56,68,68,68, + 136,136,112,3,101,101,68,40,48,80,136,1,107,107,4,60, + 76,76,84,84,168,232,232,112,128,2,106,106,32,16,0,68, + 68,68,136,136,136,112,2,106,106,8,16,0,68,68,68,136, + 136,136,112,2,106,106,24,36,0,68,68,68,136,136,136,112, + 2,106,106,40,40,0,68,68,68,136,136,136,112,18,90,106, + 16,32,0,136,136,80,32,64,64,64,2,105,105,64,120,68, + 68,72,240,128,128,128,2,89,105,48,72,72,80,80,144,136, + 136,176,2,105,105,32,16,0,56,4,124,136,152,104,2,105, + 105,8,16,0,56,4,124,136,152,104,2,105,105,24,36,0, + 56,4,124,136,152,104,2,105,105,20,40,0,56,4,124,136, + 152,104,2,105,105,40,40,0,56,4,124,136,152,104,2,106, + 106,24,36,24,0,56,4,124,136,152,104,2,102,102,56,20, + 120,160,168,80,0,104,104,56,68,64,128,136,112,32,64,2, + 105,105,32,16,0,56,68,124,128,136,112,2,105,105,8,16, + 0,56,68,124,128,136,112,2,105,105,24,36,0,56,68,124, + 128,136,112,2,105,105,40,40,0,56,68,124,128,136,112,18, + 57,105,64,32,0,96,32,32,64,64,224,18,73,105,16,32, + 0,96,32,32,64,64,224,18,89,105,48,72,0,96,32,32, + 64,64,224,18,73,105,80,80,0,96,32,32,64,64,224,2, + 106,106,32,24,48,8,56,68,68,136,136,112,2,105,105,20, + 40,0,88,100,68,136,136,136,2,105,105,32,16,0,56,68, + 68,136,136,112,2,105,105,8,16,0,56,68,68,136,136,112, + 2,105,105,24,36,0,56,68,68,136,136,112,2,105,105,20, + 40,0,56,68,68,136,136,112,2,105,105,40,40,0,56,68, + 68,136,136,112,19,87,103,32,32,0,248,0,64,64,1,104, + 104,4,56,76,84,168,200,112,128,2,105,105,32,16,0,68, + 68,68,136,152,104,2,105,105,8,16,0,68,68,68,136,152, + 104,2,105,105,24,36,0,68,68,68,136,152,104,2,105,105, + 40,40,0,68,68,68,136,152,104,0,107,107,8,16,0,68, + 68,136,152,104,8,144,96,0,106,106,64,64,88,100,68,136, + 200,176,128,128,0,107,107,40,40,0,68,68,136,152,104,8, + 144,96}; +/* + Fontname: -Misc-Fixed-Medium-O-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13Or[1043] U8G_SECTION(".progmem.u8g_font_6x13Or") = { + 1,6,13,0,254,9,1,104,2,216,32,127,254,11,254,10, + 254,13,0,96,34,41,105,64,64,64,64,128,128,128,0,128, + 40,67,99,80,80,160,3,103,103,40,40,124,40,248,80,80, + 2,105,105,16,60,80,80,56,36,40,240,32,2,105,105,36, + 84,40,8,16,32,80,168,144,2,104,104,16,40,40,48,80, + 148,152,104,56,35,99,64,64,128,17,75,107,16,32,64,64, + 128,128,128,128,64,64,32,17,75,107,64,32,32,16,16,16, + 16,32,32,64,128,3,103,103,16,84,124,56,124,168,32,20, + 69,101,32,32,240,64,64,17,51,99,96,64,128,22,65,97, + 240,17,51,99,64,224,64,2,105,105,4,4,8,16,16,32, + 64,128,128,2,105,105,16,40,68,68,68,136,136,80,32,2, + 89,105,16,48,80,16,16,32,32,32,248,2,105,105,56,68, + 68,8,16,32,64,128,248,2,105,105,124,4,8,16,56,4, + 8,136,112,2,89,105,8,8,24,40,40,72,248,16,16,2, + 105,105,124,64,64,88,100,4,8,136,112,2,105,105,56,68, + 64,64,112,136,136,136,112,18,89,105,248,8,16,16,32,64, + 64,128,128,2,105,105,56,68,68,68,120,136,136,136,112,2, + 105,105,56,68,68,68,56,8,8,136,112,17,72,104,32,112, + 32,0,0,64,224,64,17,72,104,32,112,32,0,0,96,64, + 128,18,89,105,8,16,32,64,128,64,64,32,16,4,100,100, + 124,0,0,248,2,105,105,64,32,16,8,4,8,48,64,128, + 18,89,105,112,136,136,8,16,32,64,0,64,2,105,105,56, + 68,68,88,168,168,144,128,120,2,105,105,16,40,68,68,68, + 248,136,136,136,2,105,105,120,36,36,36,56,72,72,72,240, + 2,105,105,56,68,64,64,64,128,128,136,112,2,105,105,120, + 36,36,36,36,72,72,72,240,2,105,105,124,64,64,64,120, + 128,128,128,248,2,105,105,124,64,64,64,120,128,128,128,128, + 2,105,105,56,68,64,64,64,152,136,136,112,2,105,105,68, + 68,68,68,124,136,136,136,136,18,73,105,112,32,32,32,32, + 64,64,64,224,2,105,105,28,8,8,8,8,16,16,144,96, + 2,105,105,68,68,72,80,96,160,144,136,136,2,89,105,64, + 64,64,64,64,128,128,128,248,2,105,105,68,68,108,84,84, + 136,136,136,136,2,105,105,68,100,100,84,84,152,136,136,136, + 2,105,105,56,68,68,68,68,136,136,136,112,2,105,105,120, + 68,68,68,120,128,128,128,128,1,106,106,56,68,68,68,68, + 136,136,168,112,8,2,105,105,120,68,68,68,120,144,144,136, + 136,2,105,105,56,68,64,64,48,8,8,136,112,18,89,105, + 248,32,32,32,32,64,64,64,64,2,105,105,68,68,68,68, + 68,136,136,136,112,18,89,105,136,136,136,136,144,144,160,160, + 64,2,105,105,68,68,68,68,168,168,168,168,80,2,105,105, + 68,68,40,40,16,48,72,136,136,18,89,105,136,136,80,80, + 32,32,64,64,64,2,105,105,124,4,8,8,16,32,64,128, + 248,1,91,107,56,32,32,32,64,64,64,128,128,128,224,18, + 73,105,128,128,64,64,64,32,32,16,16,1,91,107,56,8, + 8,8,16,16,16,32,32,32,224,24,83,99,32,80,136,1, + 81,97,248,58,34,98,128,64,2,102,102,56,4,124,136,152, + 104,2,105,105,64,64,64,120,68,136,136,136,240,2,102,102, + 56,68,128,128,136,112,2,105,105,4,4,4,60,68,136,136, + 136,120,2,102,102,56,68,124,128,136,112,18,89,105,48,72, + 64,64,240,64,128,128,128,0,104,104,56,68,68,136,120,8, + 136,112,2,105,105,32,32,32,88,100,68,136,136,136,18,56, + 104,32,0,96,32,32,64,64,224,0,90,106,8,0,24,8, + 8,16,16,144,144,96,2,89,105,32,32,32,72,80,96,160, + 144,136,18,73,105,48,16,16,32,32,32,64,64,224,2,102, + 102,104,84,84,168,168,136,2,102,102,88,100,68,136,136,136, + 2,102,102,56,68,68,136,136,112,0,104,104,120,68,68,136, + 240,128,128,128,0,104,104,60,68,132,136,120,8,16,16,2, + 102,102,88,100,64,128,128,128,2,102,102,56,68,32,16,136, + 112,18,72,104,32,32,240,64,64,128,144,96,2,102,102,68, + 68,136,136,152,104,18,86,102,136,136,136,144,160,64,2,102, + 102,68,68,84,168,168,80,2,102,102,68,40,16,32,80,136, + 0,104,104,68,68,136,152,104,8,144,96,2,102,102,124,8, + 16,96,128,248,1,91,107,24,32,32,32,32,192,32,64,64, + 64,48,34,41,105,64,64,64,64,64,128,128,128,128,1,107, + 107,96,16,16,16,16,12,16,32,32,32,192,24,83,99,72, + 168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 5 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13r[1041] U8G_SECTION(".progmem.u8g_font_6x13r") = { + 1,6,13,0,254,9,1,102,2,214,32,127,254,11,254,10, + 254,13,0,96,34,25,105,128,128,128,128,128,128,128,0,128, + 24,51,99,160,160,160,3,87,103,80,80,248,80,248,80,80, + 2,89,105,32,120,160,160,112,40,40,240,32,2,89,105,72, + 168,80,16,32,64,80,168,144,2,88,104,64,160,160,64,160, + 152,144,104,40,19,99,128,128,128,17,59,107,32,64,64,128, + 128,128,128,128,64,64,32,17,59,107,128,64,64,32,32,32, + 32,32,64,64,128,6,85,101,32,168,112,168,32,4,85,101, + 32,32,248,32,32,17,51,99,96,64,128,6,81,97,248,17, + 51,99,64,224,64,2,89,105,8,8,16,16,32,64,64,128, + 128,2,89,105,32,80,136,136,136,136,136,80,32,2,89,105, + 32,96,160,32,32,32,32,32,248,2,89,105,112,136,136,8, + 16,32,64,128,248,2,89,105,248,8,16,32,112,8,8,136, + 112,2,89,105,16,16,48,80,80,144,248,16,16,2,89,105, + 248,128,128,176,200,8,8,136,112,2,89,105,112,136,128,128, + 240,136,136,136,112,2,89,105,248,8,16,16,32,32,64,64, + 64,2,89,105,112,136,136,136,112,136,136,136,112,2,89,105, + 112,136,136,136,120,8,8,136,112,17,56,104,64,224,64,0, + 0,64,224,64,17,56,104,64,224,64,0,0,96,64,128,2, + 89,105,8,16,32,64,128,64,32,16,8,4,84,100,248,0, + 0,248,2,89,105,128,64,32,16,8,16,32,64,128,2,89, + 105,112,136,136,8,16,32,32,0,32,2,89,105,112,136,136, + 152,168,168,176,128,120,2,89,105,32,80,136,136,136,248,136, + 136,136,2,89,105,240,72,72,72,112,72,72,72,240,2,89, + 105,112,136,128,128,128,128,128,136,112,2,89,105,240,72,72, + 72,72,72,72,72,240,2,89,105,248,128,128,128,240,128,128, + 128,248,2,89,105,248,128,128,128,240,128,128,128,128,2,89, + 105,112,136,128,128,128,152,136,136,112,2,89,105,136,136,136, + 136,248,136,136,136,136,18,57,105,224,64,64,64,64,64,64, + 64,224,2,89,105,56,16,16,16,16,16,16,144,96,2,89, + 105,136,136,144,160,192,160,144,136,136,2,89,105,128,128,128, + 128,128,128,128,128,248,2,89,105,136,136,216,168,168,136,136, + 136,136,2,89,105,136,200,200,168,168,152,152,136,136,2,89, + 105,112,136,136,136,136,136,136,136,112,2,89,105,240,136,136, + 136,240,128,128,128,128,1,90,106,112,136,136,136,136,136,136, + 168,112,8,2,89,105,240,136,136,136,240,160,144,136,136,2, + 89,105,112,136,128,128,112,8,8,136,112,2,89,105,248,32, + 32,32,32,32,32,32,32,2,89,105,136,136,136,136,136,136, + 136,136,112,2,89,105,136,136,136,136,80,80,80,32,32,2, + 89,105,136,136,136,136,168,168,168,168,80,2,89,105,136,136, + 80,80,32,80,80,136,136,2,89,105,136,136,80,80,32,32, + 32,32,32,2,89,105,248,8,16,16,32,64,64,128,248,17, + 59,107,224,128,128,128,128,128,128,128,128,128,224,2,89,105, + 128,128,64,64,32,16,16,8,8,17,59,107,224,32,32,32, + 32,32,32,32,32,32,224,8,83,99,32,80,136,1,81,97, + 248,42,34,98,128,64,2,86,102,112,8,120,136,152,104,2, + 89,105,128,128,128,240,136,136,136,136,240,2,86,102,112,136, + 128,128,136,112,2,89,105,8,8,8,120,136,136,136,136,120, + 2,86,102,112,136,248,128,136,112,2,89,105,48,72,64,64, + 240,64,64,64,64,0,88,104,112,136,136,136,120,8,136,112, + 2,89,105,128,128,128,176,200,136,136,136,136,18,56,104,64, + 0,192,64,64,64,64,224,0,74,106,16,0,48,16,16,16, + 16,144,144,96,2,89,105,128,128,128,144,160,192,160,144,136, + 18,57,105,192,64,64,64,64,64,64,64,224,2,86,102,208, + 168,168,168,168,136,2,86,102,176,200,136,136,136,136,2,86, + 102,112,136,136,136,136,112,0,88,104,240,136,136,136,240,128, + 128,128,0,88,104,120,136,136,136,120,8,8,8,2,86,102, + 176,200,128,128,128,128,2,86,102,112,136,96,16,136,112,2, + 88,104,64,64,240,64,64,64,72,48,2,86,102,136,136,136, + 136,152,104,2,86,102,136,136,136,80,80,32,2,86,102,136, + 136,168,168,168,80,2,86,102,136,80,32,32,80,136,0,88, + 104,136,136,136,152,104,8,136,112,2,86,102,248,16,32,64, + 128,248,1,91,107,24,32,32,32,32,192,32,32,32,32,24, + 34,25,105,128,128,128,128,128,128,128,128,128,1,91,107,192, + 32,32,32,32,24,32,32,32,32,192,8,83,99,72,168,144, + 255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w= 7 h=13 x= 6 y= 9 dx= 7 dy= 0 ascent=11 len=13 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[2197] U8G_SECTION(".progmem.u8g_font_7x13_67_75") = { + 1,7,13,0,254,3,1,91,2,178,32,255,0,11,254,10, + 0,4,117,117,72,36,254,36,72,18,89,121,32,32,32,168, + 112,32,168,112,32,4,101,117,36,72,248,72,36,4,101,117, + 144,72,124,72,144,4,101,117,36,68,252,68,36,18,89,121, + 32,112,168,32,32,32,32,32,248,4,101,117,144,136,252,136, + 144,18,89,121,248,32,32,32,32,32,168,112,32,18,89,121, + 32,112,168,32,32,168,112,32,248,4,117,117,36,66,252,64, + 32,4,117,117,72,132,126,4,8,4,117,117,36,74,252,72, + 40,4,117,117,72,164,126,36,40,4,117,117,40,84,238,68, + 40,4,117,117,40,84,254,84,40,2,106,122,64,64,128,152, + 104,8,16,84,56,16,2,106,122,32,64,252,68,36,4,4, + 4,4,4,2,106,122,16,8,252,136,144,128,128,128,128,128, + 2,106,122,4,4,4,4,4,36,68,252,64,32,2,106,122, + 128,128,128,128,128,144,136,252,8,16,2,104,120,240,16,16, + 16,16,84,56,16,2,90,122,8,8,8,8,8,40,72,248, + 64,32,4,119,119,28,34,34,34,170,112,32,4,119,119,112, + 136,136,136,170,28,8,2,120,120,254,0,224,192,160,16,8, + 4,2,121,121,144,160,254,160,146,10,254,10,18,4,119,119, + 72,156,170,136,136,136,112,4,119,119,36,114,170,34,34,34, + 28,6,99,115,32,64,252,4,99,115,252,64,32,50,57,121, + 128,192,160,128,128,128,128,128,128,18,57,121,32,96,160,32, + 32,32,32,32,32,6,99,115,16,8,252,4,99,115,252,8, + 16,50,57,121,128,128,128,128,128,128,160,192,128,18,57,121, + 32,32,32,32,32,32,160,96,32,2,105,121,16,8,252,8, + 48,64,252,64,32,2,122,122,40,120,168,40,40,40,40,42, + 60,40,2,105,121,32,64,252,64,48,8,252,8,16,2,105, + 121,32,64,252,64,32,64,252,64,32,2,121,121,68,238,68, + 68,68,68,68,68,68,2,105,121,16,8,252,8,16,8,252, + 8,16,2,122,122,68,68,68,68,68,68,68,68,238,68,3, + 103,119,32,64,252,0,252,8,16,3,103,119,16,8,252,0, + 252,64,32,3,119,119,16,34,126,132,126,40,16,4,117,117, + 40,124,146,124,40,3,119,119,16,40,252,66,252,136,16,3, + 119,119,16,32,126,128,126,32,16,2,121,121,16,40,108,170, + 40,40,40,40,40,3,119,119,16,8,252,2,252,8,16,2, + 121,121,40,40,40,40,40,170,108,40,16,4,117,117,40,124, + 130,124,40,2,122,122,16,40,108,170,40,40,170,108,40,16, + 2,119,119,252,144,136,196,162,144,8,2,119,119,126,18,34, + 70,138,18,32,2,119,119,32,18,138,70,34,18,126,2,119, + 119,8,144,162,196,136,144,252,2,121,121,8,16,62,64,254, + 64,62,16,8,2,121,121,32,16,248,4,254,4,248,16,32, + 4,117,117,32,72,254,68,32,4,117,117,8,36,254,68,8, + 18,89,121,32,112,168,32,248,32,248,32,32,18,89,121,32, + 32,248,32,248,32,168,112,32,3,119,119,16,32,64,182,64, + 32,16,2,122,122,16,40,84,146,0,16,16,0,16,16,3, + 119,119,16,8,4,218,4,8,16,2,122,122,16,16,0,16, + 16,0,146,84,40,16,4,117,117,144,160,254,160,144,4,117, + 117,18,10,254,10,18,3,119,119,16,48,94,130,94,48,16, + 2,121,121,16,40,68,238,40,40,40,40,56,3,119,119,16, + 24,244,130,244,24,16,2,121,121,56,40,40,40,40,238,68, + 40,16,1,124,124,16,40,68,238,40,40,40,56,0,56,40, + 56,1,122,122,16,40,68,238,40,40,40,108,68,124,1,122, + 122,16,40,68,254,40,40,40,108,68,124,1,122,122,16,40, + 68,254,56,56,56,124,68,124,2,121,121,16,40,68,238,68, + 238,40,40,56,1,122,122,16,40,68,238,68,238,40,108,68, + 124,3,119,119,144,152,244,130,244,152,144,2,119,119,254,128, + 188,176,168,164,130,2,119,119,130,74,42,26,122,2,254,2, + 121,121,16,40,68,238,40,238,68,40,16,255,255,255,255,255, + 255,255,255,255,255,255,255,7,118,118,254,254,254,254,254,254, + 0,114,114,254,254,0,115,115,254,254,254,0,117,117,254,254, + 254,254,254,0,119,119,254,254,254,254,254,254,254,0,120,120, + 254,254,254,254,254,254,254,254,0,122,122,254,254,254,254,254, + 254,254,254,254,254,0,123,123,254,254,254,254,254,254,254,254, + 254,254,254,0,125,125,254,254,254,254,254,254,254,254,254,254, + 254,254,254,0,109,125,252,252,252,252,252,252,252,252,252,252, + 252,252,252,0,93,125,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,77,125,240,240,240,240,240,240,240,240,240,240, + 240,240,240,0,77,125,240,240,240,240,240,240,240,240,240,240, + 240,240,240,0,61,125,224,224,224,224,224,224,224,224,224,224, + 224,224,224,0,45,125,192,192,192,192,192,192,192,192,192,192, + 192,192,192,0,29,125,128,128,128,128,128,128,128,128,128,128, + 128,128,128,64,61,125,224,224,224,224,224,224,224,224,224,224, + 224,224,224,1,123,123,84,0,170,0,84,0,170,0,84,0, + 170,0,125,125,170,84,170,84,170,84,170,84,170,84,170,84, + 170,0,125,125,254,84,254,170,254,84,254,170,254,84,254,170, + 254,11,114,114,254,254,96,29,125,128,128,128,128,128,128,128, + 128,128,128,128,128,128,0,71,119,240,240,240,240,240,240,240, + 64,55,119,224,224,224,224,224,224,224,7,70,118,240,240,240, + 240,240,240,0,125,125,240,240,240,240,240,240,254,254,254,254, + 254,254,254,0,125,125,240,240,240,240,240,240,14,14,14,14, + 14,14,14,0,125,125,254,254,254,254,254,254,240,240,240,240, + 240,240,240,0,125,125,254,254,254,254,254,254,14,14,14,14, + 14,14,14,71,54,118,224,224,224,224,224,224,0,125,125,14, + 14,14,14,14,14,240,240,240,240,240,240,240,0,125,125,14, + 14,14,14,14,14,254,254,254,254,254,254,254,3,119,119,254, + 254,254,254,254,254,254,3,119,119,254,130,130,130,130,130,254, + 3,119,119,124,130,130,130,130,130,124,3,119,119,254,130,186, + 186,186,130,254,3,119,119,254,130,254,130,254,130,254,3,119, + 119,254,170,170,170,170,170,254,3,119,119,254,170,254,170,254, + 170,254,3,119,119,254,146,138,198,162,146,254,3,119,119,254, + 146,162,198,138,146,254,3,119,119,254,214,170,214,170,214,254, + 20,85,117,248,248,248,248,248,20,85,117,248,136,136,136,248, + 4,117,117,254,254,254,254,254,4,117,117,254,130,130,130,254, + 19,87,119,248,248,248,248,248,248,248,19,87,119,248,136,136, + 136,136,136,248,4,117,117,62,126,254,252,248,4,117,117,62, + 66,130,132,248,2,120,120,16,16,56,56,124,124,254,254,2, + 120,120,16,16,40,40,68,68,130,254,19,86,118,32,32,112, + 112,248,248,19,86,118,32,32,80,80,136,248,3,119,119,128, + 224,248,254,248,224,128,3,119,119,128,224,152,134,152,224,128, + 4,101,117,192,240,252,240,192,4,101,117,192,176,140,176,192, + 4,117,117,128,240,254,240,128,4,117,117,128,240,142,240,128, + 2,120,120,254,254,124,124,56,56,16,16,2,120,120,254,130, + 68,68,40,40,16,16,19,86,118,248,248,112,112,32,32,19, + 86,118,248,136,80,80,32,32,3,119,119,2,14,62,254,62, + 14,2,3,119,119,2,14,50,194,50,14,2,4,101,117,12, + 60,252,60,12,4,101,117,12,52,196,52,12,4,117,117,2, + 30,254,30,2,4,117,117,2,30,226,30,2,2,119,119,16, + 56,124,254,124,56,16,2,119,119,16,40,68,130,68,40,16, + 2,119,119,16,40,84,186,84,40,16,3,119,119,56,68,146, + 186,146,68,56,18,89,121,32,32,80,80,136,80,80,32,32, + 3,119,119,56,68,130,130,130,68,56,3,119,119,40,0,130, + 0,130,0,40,3,119,119,56,108,170,170,170,108,56,3,119, + 119,56,68,146,170,146,68,56,3,119,119,56,124,254,254,254, + 124,56,3,119,119,56,116,242,242,242,116,56,3,119,119,56, + 92,158,158,158,92,56,3,119,119,56,68,130,254,254,124,56, + 3,119,119,56,124,254,254,130,68,56,3,119,119,56,92,158, + 158,130,68,56,3,119,119,56,76,142,142,254,124,56,51,71, + 119,192,224,240,240,240,224,192,3,71,119,48,112,240,240,240, + 112,48,0,125,125,254,254,254,254,198,130,130,130,198,254,254, + 254,254,0,125,125,254,254,254,254,198,186,186,186,198,254,254, + 254,254,6,119,119,254,254,254,254,198,186,186,0,119,119,186, + 186,198,254,254,254,254,6,68,116,48,64,128,128,54,68,116, + 192,32,16,16,51,68,116,16,16,32,192,3,68,116,128,128, + 64,48,6,116,116,56,68,130,130,3,116,116,130,130,68,56, + 3,119,119,2,6,14,30,62,126,254,3,119,119,128,192,224, + 240,248,252,254,3,119,119,254,252,248,240,224,192,128,3,119, + 119,254,126,62,30,14,6,2,20,85,117,112,136,136,136,112, + 3,119,119,254,226,226,226,226,226,254,3,119,119,254,142,142, + 142,142,142,254,3,119,119,254,254,250,242,226,194,254,3,119, + 119,254,134,142,158,190,254,254,3,119,119,254,146,146,146,146, + 146,254,2,120,120,16,16,40,40,84,124,146,254,2,120,120, + 16,16,56,56,116,116,242,254,2,120,120,16,16,56,56,92, + 92,158,254,3,119,119,56,68,130,130,130,68,56,2,119,119, + 254,146,146,242,130,130,254,2,119,119,254,130,130,242,146,146, + 254,2,119,119,254,130,130,158,146,146,254,2,119,119,254,146, + 146,158,130,130,254,2,119,119,56,84,146,242,130,68,56,2, + 119,119,56,68,130,242,146,84,56,2,119,119,56,68,130,158, + 146,84,56,2,119,119,56,84,146,158,130,68,56,255,255,255, + 255,255,255,255,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 7, '1' Height: 5 + Calculated Max Values w= 7 h= 9 x= 1 y= 2 dx= 7 dy= 0 ascent= 9 len= 9 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent = 9 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13_75r[471] U8G_SECTION(".progmem.u8g_font_7x13_75r") = { + 1,7,13,0,254,7,1,71,0,0,32,79,0,9,0,8, + 0,3,119,119,254,254,254,254,254,254,254,3,119,119,254,130, + 130,130,130,130,254,3,119,119,124,130,130,130,130,130,124,3, + 119,119,254,130,186,186,186,130,254,3,119,119,254,130,254,130, + 254,130,254,3,119,119,254,170,170,170,170,170,254,3,119,119, + 254,170,254,170,254,170,254,3,119,119,254,146,138,198,162,146, + 254,3,119,119,254,146,162,198,138,146,254,3,119,119,254,214, + 170,214,170,214,254,20,85,117,248,248,248,248,248,20,85,117, + 248,136,136,136,248,4,117,117,254,254,254,254,254,4,117,117, + 254,130,130,130,254,19,87,119,248,248,248,248,248,248,248,19, + 87,119,248,136,136,136,136,136,248,4,117,117,62,126,254,252, + 248,4,117,117,62,66,130,132,248,2,120,120,16,16,56,56, + 124,124,254,254,2,120,120,16,16,40,40,68,68,130,254,19, + 86,118,32,32,112,112,248,248,19,86,118,32,32,80,80,136, + 248,3,119,119,128,224,248,254,248,224,128,3,119,119,128,224, + 152,134,152,224,128,4,101,117,192,240,252,240,192,4,101,117, + 192,176,140,176,192,4,117,117,128,240,254,240,128,4,117,117, + 128,240,142,240,128,2,120,120,254,254,124,124,56,56,16,16, + 2,120,120,254,130,68,68,40,40,16,16,19,86,118,248,248, + 112,112,32,32,19,86,118,248,136,80,80,32,32,3,119,119, + 2,14,62,254,62,14,2,3,119,119,2,14,50,194,50,14, + 2,4,101,117,12,60,252,60,12,4,101,117,12,52,196,52, + 12,4,117,117,2,30,254,30,2,4,117,117,2,30,226,30, + 2,2,119,119,16,56,124,254,124,56,16,2,119,119,16,40, + 68,130,68,40,16,2,119,119,16,40,84,186,84,40,16,3, + 119,119,56,68,146,186,146,68,56,18,89,121,32,32,80,80, + 136,80,80,32,32,3,119,119,56,68,130,130,130,68,56,3, + 119,119,40,0,130,0,130,0,40,3,119,119,56,108,170,170, + 170,108,56,3,119,119,56,68,146,170,146,68,56,3,119,119, + 56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13B[2172] U8G_SECTION(".progmem.u8g_font_7x13B") = { + 1,7,13,0,254,9,1,105,2,216,32,255,254,11,254,9, + 254,13,0,112,34,41,121,192,192,192,192,192,192,0,192,192, + 24,83,115,216,216,216,18,89,121,80,80,248,248,80,248,248, + 80,80,2,105,121,48,120,180,176,120,52,180,120,48,2,105, + 121,228,172,232,24,48,96,92,212,156,2,105,121,112,216,216, + 216,112,212,220,216,116,39,36,116,192,192,192,192,18,73,121, + 48,96,96,192,192,192,96,96,48,18,73,121,192,96,96,48, + 48,48,96,96,192,3,102,118,72,48,252,252,48,72,3,102, + 118,48,48,252,252,48,48,17,68,116,112,112,96,192,5,97, + 113,252,17,67,115,96,240,96,2,105,121,12,12,24,24,48, + 96,96,192,192,2,105,121,48,72,204,204,204,204,204,72,48, + 2,105,121,48,112,176,48,48,48,48,48,252,2,105,121,120, + 204,204,12,56,96,192,192,252,2,105,121,252,12,24,48,120, + 12,12,204,120,2,105,121,12,28,60,108,204,204,252,12,12, + 2,105,121,252,192,192,248,204,12,12,204,120,2,105,121,120, + 204,192,192,248,204,204,204,120,2,105,121,252,12,12,24,24, + 48,48,96,96,2,105,121,120,204,204,204,120,204,204,204,120, + 2,105,121,120,204,204,204,124,12,12,204,120,17,72,120,96, + 240,96,0,0,96,240,96,17,72,120,96,240,96,0,112,112, + 96,192,2,105,121,12,24,48,96,192,96,48,24,12,4,100, + 116,252,0,0,252,2,105,121,192,96,48,24,12,24,48,96, + 192,2,105,121,120,204,204,12,56,48,0,48,48,2,105,121, + 120,140,140,188,172,188,128,140,120,2,105,121,120,204,204,204, + 252,204,204,204,204,2,105,121,248,204,204,204,248,204,204,204, + 248,2,105,121,120,204,192,192,192,192,192,204,120,2,105,121, + 248,204,204,204,204,204,204,204,248,2,105,121,252,192,192,192, + 248,192,192,192,252,2,105,121,252,192,192,192,248,192,192,192, + 192,2,105,121,120,204,192,192,220,204,204,204,124,2,105,121, + 204,204,204,204,252,204,204,204,204,2,105,121,252,48,48,48, + 48,48,48,48,252,2,105,121,12,12,12,12,12,12,12,204, + 120,2,105,121,196,204,216,240,224,240,216,204,196,2,105,121, + 192,192,192,192,192,192,192,192,252,2,105,121,132,204,252,252, + 204,204,204,204,204,2,105,121,204,204,236,236,252,220,220,204, + 204,2,105,121,120,204,204,204,204,204,204,204,120,2,105,121, + 248,204,204,204,248,192,192,192,192,1,106,122,120,204,204,204, + 204,204,236,220,120,12,2,105,121,248,204,204,204,248,240,216, + 204,196,2,105,121,120,204,192,192,120,12,12,204,120,2,105, + 121,252,48,48,48,48,48,48,48,48,2,105,121,204,204,204, + 204,204,204,204,204,120,2,105,121,204,204,204,72,72,120,48, + 48,48,2,105,121,204,204,204,204,204,252,252,204,132,2,105, + 121,132,204,72,120,48,120,72,204,132,2,105,121,204,204,120, + 120,48,48,48,48,48,2,105,121,252,12,12,24,48,96,192, + 192,252,18,73,121,240,192,192,192,192,192,192,192,240,2,105, + 121,192,192,96,96,48,24,24,12,12,18,73,121,240,48,48, + 48,48,48,48,48,240,7,100,116,48,120,204,132,1,98,114, + 252,252,25,67,115,192,96,48,2,102,118,120,12,124,204,204, + 124,2,105,121,192,192,192,248,204,204,204,204,248,2,102,118, + 120,204,192,192,204,120,2,105,121,12,12,12,124,204,204,204, + 204,124,2,102,118,120,204,252,192,204,120,2,105,121,56,108, + 96,96,240,96,96,96,96,0,104,120,116,204,204,120,192,120, + 204,120,2,105,121,192,192,192,248,204,204,204,204,204,2,105, + 121,48,48,0,112,48,48,48,48,252,0,107,123,12,12,0, + 12,12,12,12,12,12,204,120,2,105,121,192,192,192,204,216, + 240,240,216,204,2,105,121,112,48,48,48,48,48,48,48,252, + 2,102,118,216,252,252,204,204,204,2,102,118,248,204,204,204, + 204,204,2,102,118,120,204,204,204,204,120,0,104,120,248,204, + 204,204,248,192,192,192,0,104,120,124,204,204,204,124,12,12, + 12,2,102,118,248,204,192,192,192,192,2,102,118,120,204,96, + 24,204,120,2,104,120,96,96,248,96,96,96,108,56,2,102, + 118,204,204,204,204,204,124,2,102,118,204,204,204,120,120,48, + 2,102,118,204,204,204,252,252,72,2,102,118,204,204,120,120, + 204,204,0,104,120,204,204,204,204,124,12,204,120,2,102,118, + 252,12,24,96,192,252,18,73,121,112,192,192,96,192,96,192, + 192,112,34,41,121,192,192,192,192,192,192,192,192,192,18,73, + 121,224,48,48,96,48,96,48,48,224,8,99,115,100,252,152, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,13,0,112,34,42,122,192,192,0,192,192,192,192,192,192, + 192,3,104,120,16,124,212,208,208,212,124,16,2,105,121,56, + 108,96,96,248,96,96,108,184,3,102,118,204,252,72,72,252, + 204,2,105,121,204,204,120,120,252,48,252,48,48,34,42,122, + 192,192,192,192,0,0,192,192,192,192,2,106,122,120,204,192, + 120,204,204,120,12,204,120,26,82,114,216,216,2,106,122,120, + 204,132,180,228,228,180,132,204,120,20,87,119,240,24,248,152, + 248,0,248,3,103,119,52,104,208,160,208,104,52,3,100,116, + 252,12,12,12,21,65,113,240,2,106,122,120,204,132,188,172, + 188,180,172,204,120,27,81,113,248,7,100,116,120,204,204,120, + 3,103,119,48,48,252,48,48,0,252,6,70,118,224,176,48, + 96,192,240,6,70,118,224,176,96,48,176,224,25,67,115,48, + 96,192,1,103,119,204,204,204,204,204,252,128,2,105,121,124, + 252,244,244,244,116,52,52,52,38,34,114,192,192,16,50,114, + 96,192,6,70,118,96,224,96,96,96,240,21,87,119,112,248, + 136,248,112,0,248,3,103,119,176,88,44,20,44,88,176,2, + 106,122,96,224,96,96,100,252,28,52,60,12,2,106,122,96, + 224,96,96,120,236,12,24,48,60,2,106,122,224,176,96,48, + 180,236,28,52,60,12,2,106,122,48,48,0,48,48,96,192, + 204,204,120,2,106,122,96,48,0,48,120,204,204,252,204,204, + 2,106,122,24,48,0,48,120,204,204,252,204,204,2,106,122, + 56,108,0,48,120,204,204,252,204,204,2,106,122,52,88,0, + 48,120,204,204,252,204,204,2,106,122,204,204,0,48,120,204, + 204,252,204,204,2,106,122,120,72,120,48,120,204,204,252,204, + 204,2,105,121,124,248,216,216,220,248,216,216,220,0,107,123, + 120,204,192,192,192,192,192,204,120,48,96,2,106,122,96,48, + 0,252,192,192,240,192,192,252,2,106,122,24,48,0,252,192, + 192,240,192,192,252,2,106,122,56,108,0,252,192,192,240,192, + 192,252,2,106,122,204,204,0,252,192,192,240,192,192,252,2, + 106,122,96,48,0,252,48,48,48,48,48,252,2,106,122,24, + 48,0,252,48,48,48,48,48,252,2,106,122,56,108,0,252, + 48,48,48,48,48,252,2,106,122,204,204,0,252,48,48,48, + 48,48,252,2,105,121,248,108,108,108,236,108,108,108,248,2, + 106,122,52,88,0,204,204,236,252,220,204,204,2,106,122,96, + 48,0,120,204,204,204,204,204,120,2,106,122,24,48,0,120, + 204,204,204,204,204,120,2,106,122,56,108,0,120,204,204,204, + 204,204,120,2,106,122,52,88,0,120,204,204,204,204,204,120, + 2,106,122,204,204,0,120,204,204,204,204,204,120,3,101,117, + 204,120,48,120,204,1,106,122,4,120,220,220,220,236,236,236, + 120,128,2,106,122,96,48,0,204,204,204,204,204,204,120,2, + 106,122,24,48,0,204,204,204,204,204,204,120,2,106,122,56, + 108,0,204,204,204,204,204,204,120,2,106,122,204,204,0,204, + 204,204,204,204,204,120,2,106,122,24,48,0,204,72,120,48, + 48,48,48,2,105,121,192,248,204,204,204,248,192,192,192,2, + 105,121,120,204,204,216,216,204,204,204,216,2,105,121,48,24, + 0,120,12,124,204,220,124,2,105,121,24,48,0,120,12,124, + 204,220,124,2,105,121,56,108,0,120,12,124,204,220,124,2, + 105,121,52,88,0,120,12,124,204,220,124,2,105,121,108,108, + 0,120,12,124,204,220,124,2,106,122,56,40,56,0,120,12, + 124,204,220,124,2,102,118,120,52,124,176,180,104,0,104,120, + 120,204,192,192,204,120,48,96,2,105,121,48,24,0,120,204, + 252,192,204,120,2,105,121,24,48,0,120,204,252,192,204,120, + 2,105,121,56,108,0,120,204,252,192,204,120,2,105,121,108, + 108,0,120,204,252,192,204,120,18,73,121,192,96,0,224,96, + 96,96,96,240,18,73,121,48,96,0,224,96,96,96,96,240, + 2,89,121,112,216,0,112,48,48,48,48,120,18,89,121,216, + 216,0,224,96,96,96,96,240,2,106,122,104,48,120,12,124, + 204,204,204,204,120,2,105,121,52,88,0,248,236,204,204,204, + 204,2,105,121,96,48,0,120,204,204,204,204,120,2,105,121, + 24,48,0,120,204,204,204,204,120,2,105,121,56,108,0,120, + 204,204,204,204,120,2,105,121,52,88,0,120,204,204,204,204, + 120,2,105,121,108,108,0,120,204,204,204,204,120,3,103,119, + 48,48,0,252,0,48,48,1,105,121,4,120,204,220,204,236, + 204,120,128,2,105,121,96,48,0,204,204,204,204,220,124,2, + 105,121,24,48,0,204,204,204,204,220,124,2,105,121,56,108, + 0,204,204,204,204,220,124,2,105,121,108,108,0,204,204,204, + 204,220,124,0,107,123,24,48,0,204,204,204,220,124,12,204, + 120,0,106,122,192,192,216,236,204,204,236,216,192,192,0,107, + 123,108,108,0,204,204,204,220,108,12,204,120}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13Br[1041] U8G_SECTION(".progmem.u8g_font_7x13Br") = { + 1,7,13,0,254,9,1,105,2,216,32,127,254,11,254,9, + 254,13,0,112,34,41,121,192,192,192,192,192,192,0,192,192, + 24,83,115,216,216,216,18,89,121,80,80,248,248,80,248,248, + 80,80,2,105,121,48,120,180,176,120,52,180,120,48,2,105, + 121,228,172,232,24,48,96,92,212,156,2,105,121,112,216,216, + 216,112,212,220,216,116,39,36,116,192,192,192,192,18,73,121, + 48,96,96,192,192,192,96,96,48,18,73,121,192,96,96,48, + 48,48,96,96,192,3,102,118,72,48,252,252,48,72,3,102, + 118,48,48,252,252,48,48,17,68,116,112,112,96,192,5,97, + 113,252,17,67,115,96,240,96,2,105,121,12,12,24,24,48, + 96,96,192,192,2,105,121,48,72,204,204,204,204,204,72,48, + 2,105,121,48,112,176,48,48,48,48,48,252,2,105,121,120, + 204,204,12,56,96,192,192,252,2,105,121,252,12,24,48,120, + 12,12,204,120,2,105,121,12,28,60,108,204,204,252,12,12, + 2,105,121,252,192,192,248,204,12,12,204,120,2,105,121,120, + 204,192,192,248,204,204,204,120,2,105,121,252,12,12,24,24, + 48,48,96,96,2,105,121,120,204,204,204,120,204,204,204,120, + 2,105,121,120,204,204,204,124,12,12,204,120,17,72,120,96, + 240,96,0,0,96,240,96,17,72,120,96,240,96,0,112,112, + 96,192,2,105,121,12,24,48,96,192,96,48,24,12,4,100, + 116,252,0,0,252,2,105,121,192,96,48,24,12,24,48,96, + 192,2,105,121,120,204,204,12,56,48,0,48,48,2,105,121, + 120,140,140,188,172,188,128,140,120,2,105,121,120,204,204,204, + 252,204,204,204,204,2,105,121,248,204,204,204,248,204,204,204, + 248,2,105,121,120,204,192,192,192,192,192,204,120,2,105,121, + 248,204,204,204,204,204,204,204,248,2,105,121,252,192,192,192, + 248,192,192,192,252,2,105,121,252,192,192,192,248,192,192,192, + 192,2,105,121,120,204,192,192,220,204,204,204,124,2,105,121, + 204,204,204,204,252,204,204,204,204,2,105,121,252,48,48,48, + 48,48,48,48,252,2,105,121,12,12,12,12,12,12,12,204, + 120,2,105,121,196,204,216,240,224,240,216,204,196,2,105,121, + 192,192,192,192,192,192,192,192,252,2,105,121,132,204,252,252, + 204,204,204,204,204,2,105,121,204,204,236,236,252,220,220,204, + 204,2,105,121,120,204,204,204,204,204,204,204,120,2,105,121, + 248,204,204,204,248,192,192,192,192,1,106,122,120,204,204,204, + 204,204,236,220,120,12,2,105,121,248,204,204,204,248,240,216, + 204,196,2,105,121,120,204,192,192,120,12,12,204,120,2,105, + 121,252,48,48,48,48,48,48,48,48,2,105,121,204,204,204, + 204,204,204,204,204,120,2,105,121,204,204,204,72,72,120,48, + 48,48,2,105,121,204,204,204,204,204,252,252,204,132,2,105, + 121,132,204,72,120,48,120,72,204,132,2,105,121,204,204,120, + 120,48,48,48,48,48,2,105,121,252,12,12,24,48,96,192, + 192,252,18,73,121,240,192,192,192,192,192,192,192,240,2,105, + 121,192,192,96,96,48,24,24,12,12,18,73,121,240,48,48, + 48,48,48,48,48,240,7,100,116,48,120,204,132,1,98,114, + 252,252,25,67,115,192,96,48,2,102,118,120,12,124,204,204, + 124,2,105,121,192,192,192,248,204,204,204,204,248,2,102,118, + 120,204,192,192,204,120,2,105,121,12,12,12,124,204,204,204, + 204,124,2,102,118,120,204,252,192,204,120,2,105,121,56,108, + 96,96,240,96,96,96,96,0,104,120,116,204,204,120,192,120, + 204,120,2,105,121,192,192,192,248,204,204,204,204,204,2,105, + 121,48,48,0,112,48,48,48,48,252,0,107,123,12,12,0, + 12,12,12,12,12,12,204,120,2,105,121,192,192,192,204,216, + 240,240,216,204,2,105,121,112,48,48,48,48,48,48,48,252, + 2,102,118,216,252,252,204,204,204,2,102,118,248,204,204,204, + 204,204,2,102,118,120,204,204,204,204,120,0,104,120,248,204, + 204,204,248,192,192,192,0,104,120,124,204,204,204,124,12,12, + 12,2,102,118,248,204,192,192,192,192,2,102,118,120,204,96, + 24,204,120,2,104,120,96,96,248,96,96,96,108,56,2,102, + 118,204,204,204,204,204,124,2,102,118,204,204,204,120,120,48, + 2,102,118,204,204,204,252,252,72,2,102,118,204,204,120,120, + 204,204,0,104,120,204,204,204,204,124,12,204,120,2,102,118, + 252,12,24,96,192,252,18,73,121,112,192,192,96,192,96,192, + 192,112,34,41,121,192,192,192,192,192,192,192,192,192,18,73, + 121,224,48,48,96,48,96,48,48,224,8,99,115,100,252,152, + 255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13[2157] U8G_SECTION(".progmem.u8g_font_7x13") = { + 1,7,13,0,254,9,1,95,2,207,32,255,254,11,254,10, + 254,13,0,112,50,25,121,128,128,128,128,128,128,128,0,128, + 40,51,115,160,160,160,19,87,119,80,80,248,80,248,80,80, + 19,87,119,32,120,160,112,40,240,32,2,105,121,68,164,72, + 16,16,32,72,148,136,2,103,119,96,144,144,96,148,136,116, + 56,19,115,128,128,128,34,57,121,32,64,64,128,128,128,64, + 64,32,34,57,121,128,64,64,32,32,32,64,64,128,4,101, + 117,72,48,252,48,72,20,85,117,32,32,248,32,32,17,67, + 115,112,96,128,22,81,113,248,33,51,115,64,224,64,18,89, + 121,8,8,16,16,32,64,64,128,128,2,105,121,48,72,132, + 132,132,132,132,72,48,18,89,121,32,96,160,32,32,32,32, + 32,248,2,105,121,120,132,132,4,8,48,64,128,252,2,105, + 121,252,4,8,16,56,4,4,132,120,2,105,121,8,24,40, + 72,136,136,252,8,8,2,105,121,252,128,128,184,196,4,4, + 132,120,2,105,121,56,64,128,128,184,196,132,132,120,2,105, + 121,252,4,8,16,16,32,32,64,64,2,105,121,120,132,132, + 132,120,132,132,132,120,2,105,121,120,132,132,140,116,4,4, + 8,112,33,56,120,64,224,64,0,0,64,224,64,17,72,120, + 32,112,32,0,0,112,96,128,18,89,121,8,16,32,64,128, + 64,32,16,8,4,100,116,252,0,0,252,18,89,121,128,64, + 32,16,8,16,32,64,128,2,105,121,120,132,132,4,8,16, + 16,0,16,2,105,121,120,132,132,156,164,172,148,128,120,2, + 105,121,48,72,132,132,132,252,132,132,132,2,105,121,248,68, + 68,68,120,68,68,68,248,2,105,121,120,132,128,128,128,128, + 128,132,120,2,105,121,248,68,68,68,68,68,68,68,248,2, + 105,121,252,128,128,128,240,128,128,128,252,2,105,121,252,128, + 128,128,240,128,128,128,128,2,105,121,120,132,128,128,128,156, + 132,140,116,2,105,121,132,132,132,132,252,132,132,132,132,18, + 89,121,248,32,32,32,32,32,32,32,248,2,105,121,28,8, + 8,8,8,8,8,136,112,2,105,121,132,136,144,160,192,160, + 144,136,132,2,105,121,128,128,128,128,128,128,128,128,252,2, + 105,121,132,204,204,180,180,132,132,132,132,2,105,121,132,132, + 196,164,148,140,132,132,132,2,105,121,120,132,132,132,132,132, + 132,132,120,2,105,121,248,132,132,132,248,128,128,128,128,1, + 106,122,120,132,132,132,132,132,164,148,120,4,2,105,121,248, + 132,132,132,248,160,144,136,132,2,105,121,120,132,128,128,120, + 4,4,132,120,18,89,121,248,32,32,32,32,32,32,32,32, + 2,105,121,132,132,132,132,132,132,132,132,120,2,105,121,132, + 132,132,72,72,72,48,48,48,2,105,121,132,132,132,132,180, + 180,204,204,132,2,105,121,132,132,72,72,48,72,72,132,132, + 18,89,121,136,136,80,80,32,32,32,32,32,2,105,121,252, + 4,8,16,48,32,64,128,252,17,75,123,240,128,128,128,128, + 128,128,128,128,128,240,18,89,121,128,128,64,64,32,16,16, + 8,8,17,75,123,240,16,16,16,16,16,16,16,16,16,240, + 24,83,115,32,80,136,1,97,113,252,42,34,114,128,64,2, + 102,118,120,4,124,132,140,116,2,105,121,128,128,128,184,196, + 132,132,196,184,2,102,118,120,132,128,128,132,120,2,105,121, + 4,4,4,116,140,132,132,140,116,2,102,118,120,132,252,128, + 132,120,2,105,121,56,68,64,64,240,64,64,64,64,0,104, + 120,116,136,136,112,128,120,132,120,2,105,121,128,128,128,184, + 196,132,132,132,132,18,88,120,32,0,96,32,32,32,32,248, + 16,90,122,8,0,24,8,8,8,8,136,136,112,2,105,121, + 128,128,128,136,144,224,144,136,132,18,89,121,96,32,32,32, + 32,32,32,32,248,18,86,118,208,168,168,168,168,136,2,102, + 118,184,196,132,132,132,132,2,102,118,120,132,132,132,132,120, + 0,104,120,184,196,132,196,184,128,128,128,0,104,120,116,140, + 132,140,116,4,4,4,2,102,118,184,68,64,64,64,64,2, + 102,118,120,132,96,24,132,120,2,104,120,64,64,240,64,64, + 64,68,56,2,102,118,132,132,132,132,140,116,18,86,118,136, + 136,136,80,80,32,18,86,118,136,136,168,168,168,80,2,102, + 118,132,72,48,48,72,132,0,104,120,132,132,132,140,116,4, + 132,120,2,102,118,252,8,16,32,64,252,17,91,123,56,64, + 64,64,32,192,32,64,64,64,56,50,25,121,128,128,128,128, + 128,128,128,128,128,17,91,123,224,16,16,16,32,24,32,16, + 16,16,224,24,83,115,72,168,144,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,13,0,112,50,25,121, + 128,0,128,128,128,128,128,128,128,19,88,120,32,112,168,160, + 160,168,112,32,2,105,121,56,68,64,64,224,64,64,68,184, + 3,102,118,132,120,72,72,120,132,2,89,121,136,136,80,80, + 248,32,248,32,32,50,25,121,128,128,128,128,0,128,128,128, + 128,18,74,122,96,144,128,96,144,144,96,16,144,96,25,66, + 114,144,144,2,105,121,120,132,180,164,164,164,180,132,120,20, + 87,119,112,8,120,136,120,0,248,3,103,119,20,40,80,160, + 80,40,20,20,83,115,248,8,8,22,65,113,240,2,105,121, + 120,132,180,172,172,180,172,132,120,26,81,113,248,23,68,116, + 96,144,144,96,19,87,119,32,32,248,32,32,0,248,22,54, + 118,64,160,32,64,128,224,22,54,118,224,32,64,32,160,64, + 42,34,114,64,128,1,103,119,132,132,132,132,204,180,128,2, + 105,121,124,232,232,232,104,40,40,40,40,38,33,113,192,32, + 34,114,64,128,22,54,118,64,192,64,64,64,224,21,70,118, + 96,144,144,96,0,240,3,103,119,160,80,40,20,40,80,160, + 2,106,122,64,192,64,64,68,236,20,20,28,4,2,106,122, + 64,192,64,64,72,244,4,8,16,28,2,106,122,224,32,64, + 32,164,76,20,20,28,4,2,105,121,32,0,32,32,64,128, + 132,132,120,2,106,122,32,16,0,48,72,132,132,252,132,132, + 2,106,122,16,32,0,48,72,132,132,252,132,132,2,106,122, + 48,72,0,48,72,132,132,252,132,132,2,106,122,100,152,0, + 48,72,132,132,252,132,132,2,106,122,72,72,0,48,72,132, + 132,252,132,132,2,106,122,48,72,48,48,72,132,132,252,132, + 132,2,105,121,92,160,160,160,184,224,160,160,188,0,107,123, + 120,132,128,128,128,128,128,132,120,16,32,2,106,122,32,16, + 0,252,128,128,240,128,128,252,2,106,122,16,32,0,252,128, + 128,240,128,128,252,2,106,122,48,72,0,252,128,128,240,128, + 128,252,2,106,122,72,72,0,252,128,128,240,128,128,252,18, + 90,122,64,32,0,248,32,32,32,32,32,248,18,90,122,32, + 64,0,248,32,32,32,32,32,248,18,90,122,32,80,0,248, + 32,32,32,32,32,248,18,90,122,136,136,0,248,32,32,32, + 32,32,248,2,105,121,248,68,68,68,228,68,68,68,248,2, + 106,122,100,152,0,132,196,164,164,148,140,132,2,106,122,32, + 16,0,120,132,132,132,132,132,120,2,106,122,16,32,0,120, + 132,132,132,132,132,120,2,106,122,48,72,0,120,132,132,132, + 132,132,120,2,106,122,100,152,0,120,132,132,132,132,132,120, + 2,106,122,72,72,0,120,132,132,132,132,132,120,3,102,118, + 132,72,48,48,72,132,1,107,123,4,120,140,148,148,164,164, + 164,196,120,128,2,106,122,32,16,0,132,132,132,132,132,132, + 120,2,106,122,16,32,0,132,132,132,132,132,132,120,2,106, + 122,48,72,0,132,132,132,132,132,132,120,2,106,122,72,72, + 0,132,132,132,132,132,132,120,18,90,122,16,32,0,136,136, + 80,32,32,32,32,2,105,121,128,248,132,132,132,248,128,128, + 128,18,89,121,96,144,144,160,160,144,136,136,176,2,105,121, + 32,16,0,120,4,124,132,140,116,2,105,121,16,32,0,120, + 4,124,132,140,116,2,105,121,48,72,0,120,4,124,132,140, + 116,2,105,121,100,152,0,120,4,124,132,140,116,2,105,121, + 72,72,0,120,4,124,132,140,116,2,106,122,48,72,48,0, + 120,4,124,132,140,116,2,102,118,104,20,124,144,148,104,0, + 104,120,120,132,128,128,132,120,16,32,2,105,121,32,16,0, + 120,132,252,128,132,120,2,105,121,16,32,0,120,132,252,128, + 132,120,2,105,121,48,72,0,120,132,252,128,132,120,2,105, + 121,72,72,0,120,132,252,128,132,120,18,89,121,64,32,0, + 96,32,32,32,32,248,18,89,121,32,64,0,96,32,32,32, + 32,248,18,89,121,96,144,0,96,32,32,32,32,248,18,89, + 121,144,144,0,96,32,32,32,32,248,2,106,122,72,48,80, + 8,120,132,132,132,132,120,2,105,121,100,152,0,184,196,132, + 132,132,132,2,105,121,32,16,0,120,132,132,132,132,120,2, + 105,121,16,32,0,120,132,132,132,132,120,2,105,121,48,72, + 0,120,132,132,132,132,120,2,105,121,100,152,0,120,132,132, + 132,132,120,2,105,121,72,72,0,120,132,132,132,132,120,19, + 87,119,32,32,0,248,0,32,32,1,104,120,4,120,140,148, + 164,196,120,128,2,105,121,32,16,0,132,132,132,132,140,116, + 2,105,121,16,32,0,132,132,132,132,140,116,2,105,121,48, + 72,0,132,132,132,132,140,116,2,105,121,72,72,0,132,132, + 132,132,140,116,0,107,123,16,32,0,132,132,132,140,116,4, + 132,120,0,106,122,128,128,184,196,132,132,196,184,128,128,0, + 107,123,72,72,0,132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13O[2158] U8G_SECTION(".progmem.u8g_font_7x13O") = { + 1,7,13,0,254,9,1,96,2,208,32,255,254,11,254,10, + 254,13,0,112,34,41,121,64,64,64,64,128,128,128,0,128, + 40,51,115,160,160,160,3,103,119,40,40,124,40,248,80,80, + 3,103,119,16,60,80,56,40,240,32,2,121,121,34,82,36, + 8,16,32,72,148,136,2,104,120,24,36,36,56,80,148,136, + 116,56,19,115,128,128,128,18,73,121,16,32,64,64,128,128, + 64,64,32,18,73,121,64,32,32,16,16,32,32,64,128,20, + 85,117,72,48,248,96,144,20,69,117,32,32,240,64,64,17, + 67,115,112,96,128,22,81,113,248,33,51,115,64,224,64,2, + 105,121,4,4,8,16,16,32,64,128,128,2,121,121,24,36, + 66,66,66,132,132,72,48,18,89,121,16,48,80,16,16,32, + 32,32,248,2,121,121,60,66,66,2,12,48,64,128,252,2, + 121,121,126,2,4,8,24,4,4,132,120,2,105,121,4,12, + 20,36,72,136,252,8,8,2,121,121,62,32,32,92,98,2, + 4,132,120,2,105,121,28,32,64,64,120,132,132,132,120,2, + 105,121,252,4,8,16,32,64,64,128,128,2,121,121,60,66, + 66,66,124,132,132,132,120,2,105,121,120,132,132,140,116,8, + 8,16,224,17,72,120,32,112,32,0,0,64,224,64,17,88, + 120,16,56,16,0,0,112,96,128,18,89,121,8,16,32,64, + 128,128,64,32,16,4,116,116,126,0,0,252,18,89,121,64, + 32,16,8,8,16,32,64,128,2,105,121,120,132,132,8,16, + 32,32,0,32,2,121,121,60,66,66,78,82,172,148,128,120, + 2,121,121,24,36,66,66,66,124,132,132,132,2,121,121,124, + 34,34,34,60,68,68,68,248,2,121,121,60,66,64,64,64, + 128,128,132,120,2,121,121,124,34,34,34,34,68,68,68,248, + 2,121,121,126,64,64,64,120,128,128,128,252,2,121,121,126, + 64,64,64,120,128,128,128,128,2,121,121,60,66,64,64,64, + 156,132,140,116,2,121,121,66,66,66,66,124,132,132,132,132, + 2,105,121,124,16,16,16,16,32,32,32,248,2,121,121,14, + 4,4,4,4,8,8,136,112,2,121,121,66,68,72,80,96, + 160,144,136,132,2,105,121,64,64,64,64,64,128,128,128,252, + 2,121,121,66,102,102,90,90,132,132,132,132,2,121,121,66, + 66,98,82,74,140,132,132,132,2,121,121,60,66,66,66,66, + 132,132,132,120,2,121,121,124,66,66,66,124,128,128,128,128, + 1,122,122,60,66,66,66,66,132,164,148,120,4,2,121,121, + 124,66,66,66,124,160,144,136,132,2,121,121,60,66,64,64, + 56,4,4,132,120,18,89,121,248,32,32,32,32,64,64,64, + 64,2,121,121,66,66,66,66,66,132,132,132,120,2,105,121, + 132,132,136,136,80,80,96,96,96,2,121,121,66,66,66,66, + 90,180,204,204,132,2,121,121,66,68,36,40,16,40,72,68, + 132,18,89,121,136,136,80,80,32,32,64,64,64,2,121,121, + 126,2,4,8,16,32,64,128,252,17,91,123,120,64,64,64, + 64,64,128,128,128,128,240,18,73,121,128,128,64,64,32,32, + 32,16,16,17,91,123,120,8,8,8,8,8,16,16,16,16, + 240,24,83,115,32,80,136,1,97,113,252,42,34,114,128,64, + 2,118,118,60,2,124,132,140,116,2,121,121,64,64,64,92, + 98,66,132,196,184,2,118,118,60,66,128,128,132,120,2,121, + 121,2,2,2,58,68,132,132,140,116,2,118,118,60,66,124, + 128,132,120,2,105,121,56,68,64,64,240,64,128,128,128,0, + 120,120,58,68,136,112,128,120,132,120,2,121,121,32,32,64, + 92,98,66,132,132,132,18,88,120,16,0,48,16,16,32,32, + 248,0,106,122,4,0,12,4,4,8,8,136,136,112,2,105, + 121,64,64,64,68,88,96,144,136,132,18,89,121,48,16,16, + 16,16,32,32,32,248,2,102,118,104,84,84,168,168,136,2, + 118,118,92,98,66,132,132,132,2,118,118,60,66,66,132,132, + 120,0,120,120,92,98,66,196,184,128,128,128,0,120,120,58, + 70,130,140,116,4,4,4,2,102,118,184,68,64,128,128,128, + 2,118,118,60,66,32,24,132,120,18,88,120,64,64,240,64, + 128,128,136,112,2,118,118,66,66,66,132,140,116,18,86,118, + 136,136,144,144,160,64,2,102,118,68,68,84,168,168,80,2, + 118,118,66,36,24,48,72,132,0,120,120,66,66,132,140,116, + 4,132,120,2,118,118,126,4,24,32,64,252,17,91,123,56, + 64,64,64,32,192,64,128,128,128,112,34,41,121,64,64,64, + 64,64,128,128,128,128,1,107,123,112,8,8,8,16,28,32, + 16,16,16,224,24,83,115,72,168,144,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,13,0,112,34,41, + 121,64,0,64,64,64,128,128,128,128,3,104,120,16,56,84, + 80,160,168,112,32,2,121,121,28,34,32,32,112,32,64,68, + 184,3,118,118,66,60,36,72,120,132,2,105,121,68,68,40, + 40,124,16,248,32,32,34,41,121,64,64,64,64,0,128,128, + 128,128,2,106,122,24,36,32,48,72,72,48,16,144,96,25, + 66,114,144,144,2,121,121,60,66,90,82,82,164,180,132,120, + 4,103,119,56,4,60,68,60,0,248,3,103,119,20,40,80, + 160,160,80,40,20,83,115,248,16,16,22,65,113,240,2,121, + 121,60,66,90,86,172,180,172,132,120,26,81,113,248,23,68, + 116,96,144,144,96,19,87,119,16,16,120,32,32,0,248,22, + 70,118,32,80,16,96,128,224,22,70,118,96,16,96,32,160, + 64,42,34,114,64,128,1,119,119,66,66,66,132,204,180,128, + 2,105,121,124,232,232,232,40,80,80,80,80,38,33,113,192, + 32,34,114,64,128,38,54,118,32,96,32,64,64,224,21,86, + 118,48,72,72,48,0,240,3,103,119,80,40,20,20,40,80, + 160,2,106,122,32,96,32,64,68,236,20,40,56,8,2,106, + 122,32,96,32,64,72,244,4,24,32,56,2,106,122,96,16, + 96,32,164,76,20,40,56,8,2,105,121,16,0,16,16,32, + 64,132,132,120,2,122,122,16,8,0,24,36,66,66,124,132, + 132,2,122,122,8,16,0,24,36,66,66,124,132,132,2,122, + 122,24,36,0,24,36,66,66,124,132,132,2,122,122,50,76, + 0,24,36,66,66,124,132,132,2,122,122,36,36,0,24,36, + 66,66,124,132,132,2,122,122,24,36,24,24,36,66,66,124, + 132,132,2,121,121,46,80,80,80,124,160,160,160,188,0,123, + 123,60,66,64,64,64,128,128,132,120,16,32,2,122,122,16, + 8,0,126,64,64,112,128,128,252,2,122,122,8,16,0,126, + 64,64,112,128,128,252,2,122,122,24,36,0,126,64,64,112, + 128,128,252,2,122,122,36,36,0,126,64,64,112,128,128,252, + 2,106,122,32,16,0,124,16,16,32,32,32,248,2,106,122, + 16,32,0,124,16,16,32,32,32,248,2,106,122,16,40,0, + 124,16,16,32,32,32,248,2,106,122,68,68,0,124,16,16, + 32,32,32,248,2,121,121,124,34,34,34,242,68,68,68,248, + 2,122,122,50,76,0,66,98,82,82,140,140,132,2,122,122, + 16,8,0,60,66,66,132,132,132,120,2,122,122,8,16,0, + 60,66,66,132,132,132,120,2,122,122,24,36,0,60,66,66, + 132,132,132,120,2,122,122,50,76,0,60,66,66,132,132,132, + 120,2,122,122,36,36,0,60,66,66,132,132,132,120,3,118, + 118,66,36,24,48,72,132,1,123,123,2,60,70,74,74,82, + 164,164,196,120,128,2,122,122,16,8,0,66,66,66,132,132, + 132,120,2,122,122,8,16,0,66,66,66,132,132,132,120,2, + 122,122,24,36,0,66,66,66,132,132,132,120,2,122,122,36, + 36,0,66,66,66,132,132,132,120,18,90,122,16,32,0,136, + 136,80,32,32,64,64,2,121,121,64,124,66,66,66,124,128, + 128,128,18,89,121,48,72,72,80,80,144,136,136,176,2,121, + 121,16,8,0,60,2,124,132,140,116,2,121,121,8,16,0, + 60,2,124,132,140,116,2,121,121,24,36,0,60,2,124,132, + 140,116,2,121,121,50,76,0,60,2,124,132,140,116,2,121, + 121,36,36,0,60,2,124,132,140,116,2,122,122,24,36,24, + 0,60,2,124,132,140,116,2,118,118,52,10,124,144,148,104, + 0,120,120,60,66,128,128,132,120,16,32,2,121,121,16,8, + 0,60,66,124,128,132,120,2,121,121,8,16,0,60,66,124, + 128,132,120,2,121,121,24,36,0,60,66,124,128,132,120,2, + 121,121,36,36,0,60,66,124,128,132,120,18,89,121,32,16, + 0,48,16,32,32,32,248,18,89,121,16,32,0,48,16,32, + 32,32,248,18,89,121,48,72,0,48,16,32,32,32,248,18, + 89,121,72,72,0,48,16,32,32,32,248,2,122,122,36,24, + 40,4,60,66,66,132,132,120,2,121,121,50,76,0,92,98, + 66,132,132,132,2,121,121,16,8,0,60,66,66,132,132,120, + 2,121,121,8,16,0,60,66,66,132,132,120,2,121,121,24, + 36,0,60,66,66,132,132,120,2,121,121,50,76,0,60,66, + 66,132,132,120,2,121,121,36,36,0,60,66,66,132,132,120, + 19,71,119,32,32,0,240,0,64,64,1,120,120,2,60,74, + 82,164,196,120,128,2,121,121,16,8,0,66,66,66,132,140, + 116,2,121,121,8,16,0,66,66,66,132,140,116,2,121,121, + 24,36,0,66,66,66,132,140,116,2,121,121,36,36,0,66, + 66,66,132,140,116,0,123,123,8,16,0,66,66,132,140,116, + 4,132,120,0,122,122,64,64,92,98,66,132,196,184,128,128, + 0,123,123,36,36,0,66,66,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13Or[1035] U8G_SECTION(".progmem.u8g_font_7x13Or") = { + 1,7,13,0,254,9,1,96,2,208,32,127,254,11,254,10, + 254,13,0,112,34,41,121,64,64,64,64,128,128,128,0,128, + 40,51,115,160,160,160,3,103,119,40,40,124,40,248,80,80, + 3,103,119,16,60,80,56,40,240,32,2,121,121,34,82,36, + 8,16,32,72,148,136,2,104,120,24,36,36,56,80,148,136, + 116,56,19,115,128,128,128,18,73,121,16,32,64,64,128,128, + 64,64,32,18,73,121,64,32,32,16,16,32,32,64,128,20, + 85,117,72,48,248,96,144,20,69,117,32,32,240,64,64,17, + 67,115,112,96,128,22,81,113,248,33,51,115,64,224,64,2, + 105,121,4,4,8,16,16,32,64,128,128,2,121,121,24,36, + 66,66,66,132,132,72,48,18,89,121,16,48,80,16,16,32, + 32,32,248,2,121,121,60,66,66,2,12,48,64,128,252,2, + 121,121,126,2,4,8,24,4,4,132,120,2,105,121,4,12, + 20,36,72,136,252,8,8,2,121,121,62,32,32,92,98,2, + 4,132,120,2,105,121,28,32,64,64,120,132,132,132,120,2, + 105,121,252,4,8,16,32,64,64,128,128,2,121,121,60,66, + 66,66,124,132,132,132,120,2,105,121,120,132,132,140,116,8, + 8,16,224,17,72,120,32,112,32,0,0,64,224,64,17,88, + 120,16,56,16,0,0,112,96,128,18,89,121,8,16,32,64, + 128,128,64,32,16,4,116,116,126,0,0,252,18,89,121,64, + 32,16,8,8,16,32,64,128,2,105,121,120,132,132,8,16, + 32,32,0,32,2,121,121,60,66,66,78,82,172,148,128,120, + 2,121,121,24,36,66,66,66,124,132,132,132,2,121,121,124, + 34,34,34,60,68,68,68,248,2,121,121,60,66,64,64,64, + 128,128,132,120,2,121,121,124,34,34,34,34,68,68,68,248, + 2,121,121,126,64,64,64,120,128,128,128,252,2,121,121,126, + 64,64,64,120,128,128,128,128,2,121,121,60,66,64,64,64, + 156,132,140,116,2,121,121,66,66,66,66,124,132,132,132,132, + 2,105,121,124,16,16,16,16,32,32,32,248,2,121,121,14, + 4,4,4,4,8,8,136,112,2,121,121,66,68,72,80,96, + 160,144,136,132,2,105,121,64,64,64,64,64,128,128,128,252, + 2,121,121,66,102,102,90,90,132,132,132,132,2,121,121,66, + 66,98,82,74,140,132,132,132,2,121,121,60,66,66,66,66, + 132,132,132,120,2,121,121,124,66,66,66,124,128,128,128,128, + 1,122,122,60,66,66,66,66,132,164,148,120,4,2,121,121, + 124,66,66,66,124,160,144,136,132,2,121,121,60,66,64,64, + 56,4,4,132,120,18,89,121,248,32,32,32,32,64,64,64, + 64,2,121,121,66,66,66,66,66,132,132,132,120,2,105,121, + 132,132,136,136,80,80,96,96,96,2,121,121,66,66,66,66, + 90,180,204,204,132,2,121,121,66,68,36,40,16,40,72,68, + 132,18,89,121,136,136,80,80,32,32,64,64,64,2,121,121, + 126,2,4,8,16,32,64,128,252,17,91,123,120,64,64,64, + 64,64,128,128,128,128,240,18,73,121,128,128,64,64,32,32, + 32,16,16,17,91,123,120,8,8,8,8,8,16,16,16,16, + 240,24,83,115,32,80,136,1,97,113,252,42,34,114,128,64, + 2,118,118,60,2,124,132,140,116,2,121,121,64,64,64,92, + 98,66,132,196,184,2,118,118,60,66,128,128,132,120,2,121, + 121,2,2,2,58,68,132,132,140,116,2,118,118,60,66,124, + 128,132,120,2,105,121,56,68,64,64,240,64,128,128,128,0, + 120,120,58,68,136,112,128,120,132,120,2,121,121,32,32,64, + 92,98,66,132,132,132,18,88,120,16,0,48,16,16,32,32, + 248,0,106,122,4,0,12,4,4,8,8,136,136,112,2,105, + 121,64,64,64,68,88,96,144,136,132,18,89,121,48,16,16, + 16,16,32,32,32,248,2,102,118,104,84,84,168,168,136,2, + 118,118,92,98,66,132,132,132,2,118,118,60,66,66,132,132, + 120,0,120,120,92,98,66,196,184,128,128,128,0,120,120,58, + 70,130,140,116,4,4,4,2,102,118,184,68,64,128,128,128, + 2,118,118,60,66,32,24,132,120,18,88,120,64,64,240,64, + 128,128,136,112,2,118,118,66,66,66,132,140,116,18,86,118, + 136,136,144,144,160,64,2,102,118,68,68,84,168,168,80,2, + 118,118,66,36,24,48,72,132,0,120,120,66,66,132,140,116, + 4,132,120,2,118,118,126,4,24,32,64,252,17,91,123,56, + 64,64,64,32,192,64,128,128,128,112,34,41,121,64,64,64, + 64,64,128,128,128,128,1,107,123,112,8,8,8,16,28,32, + 16,16,16,224,24,83,115,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13r[1034] U8G_SECTION(".progmem.u8g_font_7x13r") = { + 1,7,13,0,254,9,1,95,2,207,32,127,254,11,254,10, + 254,13,0,112,50,25,121,128,128,128,128,128,128,128,0,128, + 40,51,115,160,160,160,19,87,119,80,80,248,80,248,80,80, + 19,87,119,32,120,160,112,40,240,32,2,105,121,68,164,72, + 16,16,32,72,148,136,2,103,119,96,144,144,96,148,136,116, + 56,19,115,128,128,128,34,57,121,32,64,64,128,128,128,64, + 64,32,34,57,121,128,64,64,32,32,32,64,64,128,4,101, + 117,72,48,252,48,72,20,85,117,32,32,248,32,32,17,67, + 115,112,96,128,22,81,113,248,33,51,115,64,224,64,18,89, + 121,8,8,16,16,32,64,64,128,128,2,105,121,48,72,132, + 132,132,132,132,72,48,18,89,121,32,96,160,32,32,32,32, + 32,248,2,105,121,120,132,132,4,8,48,64,128,252,2,105, + 121,252,4,8,16,56,4,4,132,120,2,105,121,8,24,40, + 72,136,136,252,8,8,2,105,121,252,128,128,184,196,4,4, + 132,120,2,105,121,56,64,128,128,184,196,132,132,120,2,105, + 121,252,4,8,16,16,32,32,64,64,2,105,121,120,132,132, + 132,120,132,132,132,120,2,105,121,120,132,132,140,116,4,4, + 8,112,33,56,120,64,224,64,0,0,64,224,64,17,72,120, + 32,112,32,0,0,112,96,128,18,89,121,8,16,32,64,128, + 64,32,16,8,4,100,116,252,0,0,252,18,89,121,128,64, + 32,16,8,16,32,64,128,2,105,121,120,132,132,4,8,16, + 16,0,16,2,105,121,120,132,132,156,164,172,148,128,120,2, + 105,121,48,72,132,132,132,252,132,132,132,2,105,121,248,68, + 68,68,120,68,68,68,248,2,105,121,120,132,128,128,128,128, + 128,132,120,2,105,121,248,68,68,68,68,68,68,68,248,2, + 105,121,252,128,128,128,240,128,128,128,252,2,105,121,252,128, + 128,128,240,128,128,128,128,2,105,121,120,132,128,128,128,156, + 132,140,116,2,105,121,132,132,132,132,252,132,132,132,132,18, + 89,121,248,32,32,32,32,32,32,32,248,2,105,121,28,8, + 8,8,8,8,8,136,112,2,105,121,132,136,144,160,192,160, + 144,136,132,2,105,121,128,128,128,128,128,128,128,128,252,2, + 105,121,132,204,204,180,180,132,132,132,132,2,105,121,132,132, + 196,164,148,140,132,132,132,2,105,121,120,132,132,132,132,132, + 132,132,120,2,105,121,248,132,132,132,248,128,128,128,128,1, + 106,122,120,132,132,132,132,132,164,148,120,4,2,105,121,248, + 132,132,132,248,160,144,136,132,2,105,121,120,132,128,128,120, + 4,4,132,120,18,89,121,248,32,32,32,32,32,32,32,32, + 2,105,121,132,132,132,132,132,132,132,132,120,2,105,121,132, + 132,132,72,72,72,48,48,48,2,105,121,132,132,132,132,180, + 180,204,204,132,2,105,121,132,132,72,72,48,72,72,132,132, + 18,89,121,136,136,80,80,32,32,32,32,32,2,105,121,252, + 4,8,16,48,32,64,128,252,17,75,123,240,128,128,128,128, + 128,128,128,128,128,240,18,89,121,128,128,64,64,32,16,16, + 8,8,17,75,123,240,16,16,16,16,16,16,16,16,16,240, + 24,83,115,32,80,136,1,97,113,252,42,34,114,128,64,2, + 102,118,120,4,124,132,140,116,2,105,121,128,128,128,184,196, + 132,132,196,184,2,102,118,120,132,128,128,132,120,2,105,121, + 4,4,4,116,140,132,132,140,116,2,102,118,120,132,252,128, + 132,120,2,105,121,56,68,64,64,240,64,64,64,64,0,104, + 120,116,136,136,112,128,120,132,120,2,105,121,128,128,128,184, + 196,132,132,132,132,18,88,120,32,0,96,32,32,32,32,248, + 16,90,122,8,0,24,8,8,8,8,136,136,112,2,105,121, + 128,128,128,136,144,224,144,136,132,18,89,121,96,32,32,32, + 32,32,32,32,248,18,86,118,208,168,168,168,168,136,2,102, + 118,184,196,132,132,132,132,2,102,118,120,132,132,132,132,120, + 0,104,120,184,196,132,196,184,128,128,128,0,104,120,116,140, + 132,140,116,4,4,4,2,102,118,184,68,64,64,64,64,2, + 102,118,120,132,96,24,132,120,2,104,120,64,64,240,64,64, + 64,68,56,2,102,118,132,132,132,132,140,116,18,86,118,136, + 136,136,80,80,32,18,86,118,136,136,168,168,168,80,2,102, + 118,132,72,48,48,72,132,0,104,120,132,132,132,140,116,4, + 132,120,2,102,118,252,8,16,32,64,252,17,91,123,56,64, + 64,64,32,192,32,64,64,64,56,50,25,121,128,128,128,128, + 128,128,128,128,128,17,91,123,224,16,16,16,32,24,32,16, + 16,16,224,24,83,115,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=14 x= 2 y=12 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14B[2390] U8G_SECTION(".progmem.u8g_font_7x14B") = { + 1,7,14,0,254,10,1,137,3,30,32,255,254,12,254,11, + 254,14,0,112,34,42,122,192,192,192,192,192,192,192,0,192, + 192,25,84,116,216,216,216,216,2,106,122,120,120,120,252,120, + 120,252,120,120,120,1,107,123,48,120,180,180,112,56,52,180, + 180,120,48,2,106,122,108,220,216,112,16,32,56,108,236,216, + 2,106,122,56,108,108,108,56,108,220,216,216,108,41,36,116, + 192,192,192,192,16,93,125,24,48,96,96,192,192,192,192,192, + 96,96,48,24,16,93,125,192,96,48,48,24,24,24,24,24, + 48,48,96,192,5,103,119,180,180,120,48,120,180,180,3,103, + 119,48,48,48,252,48,48,48,32,52,116,224,96,96,192,6, + 97,113,252,34,34,114,192,192,0,109,125,12,12,12,24,24, + 48,48,48,96,96,192,192,192,2,106,122,120,204,204,204,204, + 204,204,204,204,120,2,106,122,48,112,240,48,48,48,48,48, + 48,252,2,106,122,120,204,204,12,24,24,48,96,192,252,2, + 106,122,120,204,204,12,56,12,12,204,204,120,2,106,122,8, + 24,24,56,120,216,216,252,24,24,2,106,122,252,192,192,248, + 204,12,12,204,204,120,2,106,122,56,108,204,192,248,204,204, + 204,204,120,2,106,122,252,204,216,24,48,48,48,48,48,48, + 2,106,122,120,204,204,204,120,120,204,204,204,120,2,106,122, + 120,204,204,204,204,124,12,204,216,112,35,39,119,192,192,0, + 0,0,192,192,33,57,121,96,96,0,0,0,224,96,96,192, + 2,105,121,12,24,48,96,192,96,48,24,12,4,100,116,252, + 0,0,252,2,105,121,192,96,48,24,12,24,48,96,192,2, + 106,122,120,204,204,24,48,48,48,0,48,48,2,106,122,56, + 108,220,244,244,244,244,220,96,60,2,106,122,120,252,204,204, + 204,204,252,204,204,204,2,106,122,248,204,204,200,248,204,204, + 204,204,248,2,106,122,120,204,204,192,192,192,192,204,204,120, + 2,106,122,240,216,204,204,204,204,204,204,216,240,2,106,122, + 252,192,192,192,248,192,192,192,192,252,2,106,122,252,192,192, + 192,248,192,192,192,192,192,2,106,122,120,204,204,192,192,220, + 204,204,204,120,2,106,122,204,204,204,204,252,204,204,204,204, + 204,2,106,122,252,48,48,48,48,48,48,48,48,252,2,106, + 122,12,12,12,12,12,12,12,204,216,112,2,106,122,204,216, + 240,224,224,240,240,216,204,204,2,106,122,192,192,192,192,192, + 192,192,192,192,252,2,106,122,132,204,204,252,252,204,204,204, + 204,204,2,106,122,204,204,236,236,236,220,220,220,204,204,2, + 106,122,120,204,204,204,204,204,204,204,204,120,2,106,122,248, + 204,204,204,204,248,192,192,192,192,0,108,124,120,204,204,204, + 204,204,236,220,204,120,12,4,2,106,122,248,204,204,204,248, + 216,204,204,204,204,2,106,122,120,204,204,96,48,48,24,204, + 204,120,2,106,122,252,48,48,48,48,48,48,48,48,48,2, + 106,122,204,204,204,204,204,204,204,204,204,120,2,106,122,204, + 204,204,204,204,204,204,120,120,48,2,106,122,204,204,204,204, + 204,252,252,252,252,72,2,106,122,204,204,120,120,48,48,120, + 120,204,204,2,106,122,204,204,204,120,120,48,48,48,48,48, + 2,106,122,252,12,24,24,48,48,96,96,192,252,16,93,125, + 248,192,192,192,192,192,192,192,192,192,192,192,248,0,109,125, + 192,192,192,96,96,48,48,48,24,24,12,12,12,16,93,125, + 248,24,24,24,24,24,24,24,24,24,24,24,248,11,99,115, + 48,120,204,0,98,114,252,252,26,67,115,192,96,48,2,103, + 119,120,204,28,108,204,204,124,2,106,122,192,192,192,248,204, + 204,204,204,204,248,2,103,119,120,204,192,192,192,204,120,2, + 106,122,12,12,12,124,204,204,204,204,204,124,2,103,119,120, + 204,204,252,192,204,120,2,106,122,24,60,48,48,252,48,48, + 48,48,48,0,105,121,116,220,216,216,112,64,248,204,120,2, + 106,122,192,192,192,248,204,204,204,204,204,204,34,42,122,192, + 192,0,192,192,192,192,192,192,192,16,92,124,24,24,0,24, + 24,24,24,24,24,24,216,112,2,106,122,192,192,192,200,216, + 240,240,216,204,196,34,42,122,192,192,192,192,192,192,192,192, + 192,192,2,103,119,216,252,252,252,252,252,204,2,103,119,248, + 204,204,204,204,204,204,2,103,119,120,204,204,204,204,204,120, + 0,105,121,248,204,204,204,204,204,248,192,192,0,105,121,124, + 204,204,204,204,204,124,12,12,2,103,119,248,204,204,192,192, + 192,192,2,103,119,120,204,96,48,24,204,120,2,106,122,48, + 48,48,252,48,48,48,48,48,28,2,103,119,204,204,204,204, + 204,204,124,2,103,119,204,204,204,120,120,48,48,2,103,119, + 204,204,252,252,252,252,72,2,103,119,204,204,120,48,120,204, + 204,0,105,121,204,204,108,108,56,56,24,216,112,2,103,119, + 252,12,24,48,96,192,252,16,93,125,56,96,96,96,96,96, + 192,96,96,96,96,96,56,32,45,125,192,192,192,192,192,192, + 192,192,192,192,192,192,192,16,93,125,224,48,48,48,48,48, + 24,48,48,48,48,48,224,9,100,116,68,244,188,136,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,14, + 0,112,34,42,122,192,192,0,192,192,192,192,192,192,192,1, + 105,121,48,124,180,176,176,176,180,124,48,2,105,121,56,108, + 96,96,240,96,96,248,108,4,102,118,204,120,104,88,120,204, + 2,106,122,132,204,120,252,48,48,252,48,48,48,34,42,122, + 192,192,192,192,0,0,192,192,192,192,2,107,123,120,204,96, + 48,120,204,120,48,24,204,120,27,82,114,216,216,2,107,123, + 120,204,252,236,236,236,236,236,252,204,120,21,88,120,112,216, + 120,216,216,120,0,248,2,103,119,28,60,120,240,120,60,28, + 2,101,117,252,252,12,12,12,22,65,113,240,2,107,123,120, + 204,252,236,236,252,236,236,236,204,120,28,81,113,248,25,84, + 116,112,216,216,112,2,102,118,48,48,252,48,48,252,22,87, + 119,112,216,24,48,96,192,248,22,87,119,112,216,24,112,24, + 216,112,26,67,115,48,96,192,0,104,120,204,204,204,204,220, + 252,192,192,0,108,124,124,236,236,236,236,108,44,44,44,44, + 44,60,39,34,114,192,192,32,51,115,96,96,192,22,54,118, + 96,224,96,96,96,96,22,86,118,112,216,216,112,0,248,2, + 103,119,224,112,56,28,56,112,224,2,106,122,100,236,104,120, + 120,52,108,92,220,140,2,106,122,100,236,104,120,120,56,116, + 76,216,156,2,106,122,196,108,232,120,240,60,108,220,156,12, + 0,107,123,96,96,0,96,96,96,96,96,204,204,120,2,108, + 124,96,48,0,120,252,204,204,204,252,204,204,204,2,108,124, + 24,48,0,120,252,204,204,204,252,204,204,204,2,108,124,48, + 120,0,120,252,204,204,204,252,204,204,204,2,108,124,104,176, + 0,120,252,204,204,204,252,204,204,204,2,108,124,204,204,0, + 120,252,204,204,204,252,204,204,204,2,108,124,48,72,48,0, + 120,252,204,204,252,204,204,204,2,122,122,126,216,216,216,220, + 248,216,216,216,222,0,108,124,120,204,204,192,192,192,192,204, + 204,120,48,96,2,108,124,96,48,0,252,192,192,192,248,192, + 192,192,252,2,108,124,24,48,0,252,192,192,192,248,192,192, + 192,252,2,108,124,48,120,0,252,192,192,192,248,192,192,192, + 252,2,108,124,204,204,0,252,192,192,192,248,192,192,192,252, + 2,108,124,96,48,0,252,48,48,48,48,48,48,48,252,2, + 108,124,24,48,0,252,48,48,48,48,48,48,48,252,2,108, + 124,48,120,0,252,48,48,48,48,48,48,48,252,2,108,124, + 204,204,0,252,48,48,48,48,48,48,48,252,2,122,122,120, + 108,102,102,254,102,102,102,108,120,2,108,124,104,176,0,204, + 236,236,236,220,220,220,204,204,2,108,124,96,48,0,120,204, + 204,204,204,204,204,204,120,2,108,124,24,48,0,120,204,204, + 204,204,204,204,204,120,2,108,124,48,120,0,120,204,204,204, + 204,204,204,204,120,2,108,124,104,176,0,120,204,204,204,204, + 204,204,204,120,2,108,124,204,204,0,120,204,204,204,204,204, + 204,204,120,2,119,119,198,108,56,56,108,198,130,0,110,126, + 4,4,120,220,220,220,220,236,236,236,236,120,128,128,2,108, + 124,96,48,0,204,204,204,204,204,204,204,204,120,2,108,124, + 24,48,0,204,204,204,204,204,204,204,204,120,2,108,124,48, + 120,0,204,204,204,204,204,204,204,204,120,2,108,124,204,204, + 0,204,204,204,204,204,204,204,204,120,2,108,124,24,48,0, + 204,204,204,120,120,120,48,48,48,2,106,122,192,192,248,204, + 204,204,204,248,192,192,2,106,122,56,108,108,108,120,108,108, + 108,108,248,2,106,122,96,48,0,120,204,60,108,204,204,124, + 2,106,122,24,48,0,120,204,60,108,204,204,124,2,106,122, + 48,120,0,120,204,60,108,204,204,124,2,106,122,104,176,0, + 120,204,60,108,204,204,124,2,106,122,204,204,0,120,204,60, + 108,204,204,124,2,107,123,48,72,48,0,120,204,60,108,204, + 204,124,2,119,119,124,218,58,94,216,222,124,0,105,121,120, + 204,192,192,192,204,120,48,96,2,106,122,96,48,0,120,204, + 204,252,192,204,120,2,106,122,24,48,0,120,204,204,252,192, + 204,120,2,106,122,48,120,0,120,204,204,252,192,204,120,2, + 106,122,204,204,0,120,204,204,252,192,204,120,34,58,122,192, + 96,0,96,96,96,96,96,96,96,34,58,122,96,192,0,192, + 192,192,192,192,192,192,18,74,122,96,240,0,96,96,96,96, + 96,96,96,2,106,122,204,204,0,48,48,48,48,48,48,48, + 2,107,123,216,112,240,152,12,124,204,204,204,204,120,2,106, + 122,104,176,0,248,204,204,204,204,204,204,2,106,122,96,48, + 0,120,204,204,204,204,204,120,2,106,122,24,48,0,120,204, + 204,204,204,204,120,2,106,122,48,120,0,120,204,204,204,204, + 204,120,2,106,122,104,176,0,120,204,204,204,204,204,120,2, + 106,122,204,204,0,120,204,204,204,204,204,120,2,104,120,48, + 48,0,252,252,0,48,48,0,107,123,4,8,120,220,220,236, + 236,204,120,128,128,2,106,122,96,48,0,204,204,204,204,204, + 204,124,2,106,122,24,48,0,204,204,204,204,204,204,124,2, + 106,122,48,120,0,204,204,204,204,204,204,124,2,106,122,204, + 204,0,204,204,204,204,204,204,124,0,108,124,24,48,0,204, + 204,204,120,56,56,48,240,96,0,108,124,192,192,192,248,204, + 204,204,204,204,248,192,192,0,108,124,204,204,0,204,204,204, + 120,56,56,48,240,96}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 6 h=13 x= 2 y=12 dx= 7 dy= 0 ascent=12 len=13 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14Br[1151] U8G_SECTION(".progmem.u8g_font_7x14Br") = { + 1,7,14,0,254,10,1,137,3,30,32,127,254,12,254,11, + 254,14,0,112,34,42,122,192,192,192,192,192,192,192,0,192, + 192,25,84,116,216,216,216,216,2,106,122,120,120,120,252,120, + 120,252,120,120,120,1,107,123,48,120,180,180,112,56,52,180, + 180,120,48,2,106,122,108,220,216,112,16,32,56,108,236,216, + 2,106,122,56,108,108,108,56,108,220,216,216,108,41,36,116, + 192,192,192,192,16,93,125,24,48,96,96,192,192,192,192,192, + 96,96,48,24,16,93,125,192,96,48,48,24,24,24,24,24, + 48,48,96,192,5,103,119,180,180,120,48,120,180,180,3,103, + 119,48,48,48,252,48,48,48,32,52,116,224,96,96,192,6, + 97,113,252,34,34,114,192,192,0,109,125,12,12,12,24,24, + 48,48,48,96,96,192,192,192,2,106,122,120,204,204,204,204, + 204,204,204,204,120,2,106,122,48,112,240,48,48,48,48,48, + 48,252,2,106,122,120,204,204,12,24,24,48,96,192,252,2, + 106,122,120,204,204,12,56,12,12,204,204,120,2,106,122,8, + 24,24,56,120,216,216,252,24,24,2,106,122,252,192,192,248, + 204,12,12,204,204,120,2,106,122,56,108,204,192,248,204,204, + 204,204,120,2,106,122,252,204,216,24,48,48,48,48,48,48, + 2,106,122,120,204,204,204,120,120,204,204,204,120,2,106,122, + 120,204,204,204,204,124,12,204,216,112,35,39,119,192,192,0, + 0,0,192,192,33,57,121,96,96,0,0,0,224,96,96,192, + 2,105,121,12,24,48,96,192,96,48,24,12,4,100,116,252, + 0,0,252,2,105,121,192,96,48,24,12,24,48,96,192,2, + 106,122,120,204,204,24,48,48,48,0,48,48,2,106,122,56, + 108,220,244,244,244,244,220,96,60,2,106,122,120,252,204,204, + 204,204,252,204,204,204,2,106,122,248,204,204,200,248,204,204, + 204,204,248,2,106,122,120,204,204,192,192,192,192,204,204,120, + 2,106,122,240,216,204,204,204,204,204,204,216,240,2,106,122, + 252,192,192,192,248,192,192,192,192,252,2,106,122,252,192,192, + 192,248,192,192,192,192,192,2,106,122,120,204,204,192,192,220, + 204,204,204,120,2,106,122,204,204,204,204,252,204,204,204,204, + 204,2,106,122,252,48,48,48,48,48,48,48,48,252,2,106, + 122,12,12,12,12,12,12,12,204,216,112,2,106,122,204,216, + 240,224,224,240,240,216,204,204,2,106,122,192,192,192,192,192, + 192,192,192,192,252,2,106,122,132,204,204,252,252,204,204,204, + 204,204,2,106,122,204,204,236,236,236,220,220,220,204,204,2, + 106,122,120,204,204,204,204,204,204,204,204,120,2,106,122,248, + 204,204,204,204,248,192,192,192,192,0,108,124,120,204,204,204, + 204,204,236,220,204,120,12,4,2,106,122,248,204,204,204,248, + 216,204,204,204,204,2,106,122,120,204,204,96,48,48,24,204, + 204,120,2,106,122,252,48,48,48,48,48,48,48,48,48,2, + 106,122,204,204,204,204,204,204,204,204,204,120,2,106,122,204, + 204,204,204,204,204,204,120,120,48,2,106,122,204,204,204,204, + 204,252,252,252,252,72,2,106,122,204,204,120,120,48,48,120, + 120,204,204,2,106,122,204,204,204,120,120,48,48,48,48,48, + 2,106,122,252,12,24,24,48,48,96,96,192,252,16,93,125, + 248,192,192,192,192,192,192,192,192,192,192,192,248,0,109,125, + 192,192,192,96,96,48,48,48,24,24,12,12,12,16,93,125, + 248,24,24,24,24,24,24,24,24,24,24,24,248,11,99,115, + 48,120,204,0,98,114,252,252,26,67,115,192,96,48,2,103, + 119,120,204,28,108,204,204,124,2,106,122,192,192,192,248,204, + 204,204,204,204,248,2,103,119,120,204,192,192,192,204,120,2, + 106,122,12,12,12,124,204,204,204,204,204,124,2,103,119,120, + 204,204,252,192,204,120,2,106,122,24,60,48,48,252,48,48, + 48,48,48,0,105,121,116,220,216,216,112,64,248,204,120,2, + 106,122,192,192,192,248,204,204,204,204,204,204,34,42,122,192, + 192,0,192,192,192,192,192,192,192,16,92,124,24,24,0,24, + 24,24,24,24,24,24,216,112,2,106,122,192,192,192,200,216, + 240,240,216,204,196,34,42,122,192,192,192,192,192,192,192,192, + 192,192,2,103,119,216,252,252,252,252,252,204,2,103,119,248, + 204,204,204,204,204,204,2,103,119,120,204,204,204,204,204,120, + 0,105,121,248,204,204,204,204,204,248,192,192,0,105,121,124, + 204,204,204,204,204,124,12,12,2,103,119,248,204,204,192,192, + 192,192,2,103,119,120,204,96,48,24,204,120,2,106,122,48, + 48,48,252,48,48,48,48,48,28,2,103,119,204,204,204,204, + 204,204,124,2,103,119,204,204,204,120,120,48,48,2,103,119, + 204,204,252,252,252,252,72,2,103,119,204,204,120,48,120,204, + 204,0,105,121,204,204,108,108,56,56,24,216,112,2,103,119, + 252,12,24,48,96,192,252,16,93,125,56,96,96,96,96,96, + 192,96,96,96,96,96,56,32,45,125,192,192,192,192,192,192, + 192,192,192,192,192,192,192,16,93,125,224,48,48,48,48,48, + 24,48,48,48,48,48,224,9,100,116,68,244,188,136,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=14 x= 3 y=12 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14[2374] U8G_SECTION(".progmem.u8g_font_7x14") = { + 1,7,14,0,254,10,1,138,3,30,32,255,254,12,254,11, + 254,14,0,112,50,26,122,128,128,128,128,128,128,128,0,128, + 128,41,52,116,160,160,160,160,18,90,122,80,80,80,248,80, + 80,248,80,80,80,1,107,123,16,120,148,148,80,56,20,148, + 148,120,16,2,106,122,100,148,152,112,16,32,56,100,164,152, + 2,106,122,48,72,72,72,48,100,148,136,152,100,57,20,116, + 128,128,128,128,32,77,125,16,32,64,64,128,128,128,128,128, + 64,64,32,16,16,77,125,128,64,32,32,16,16,16,16,16, + 32,32,64,128,19,87,119,32,168,112,32,112,168,32,19,87, + 119,32,32,32,248,32,32,32,32,36,116,192,64,64,128,22, + 81,113,248,33,51,115,64,224,64,0,109,125,4,4,8,8, + 16,16,16,32,32,64,64,128,128,2,106,122,48,72,132,132, + 132,132,132,132,72,48,18,90,122,32,96,160,32,32,32,32, + 32,32,248,2,106,122,120,132,132,4,8,8,16,32,64,252, + 2,106,122,252,4,8,16,56,4,4,132,132,120,2,106,122, + 8,24,40,40,72,72,136,252,8,8,2,106,122,252,128,128, + 248,132,4,4,132,132,120,2,106,122,56,64,128,128,184,196, + 132,132,132,120,2,106,122,252,4,8,8,16,16,32,32,64, + 64,2,106,122,120,132,132,72,48,72,132,132,132,120,2,106, + 122,120,132,132,132,140,116,4,132,136,112,34,56,120,64,224, + 64,0,0,64,224,64,33,40,120,192,192,0,0,192,64,64, + 128,18,89,121,8,16,32,64,128,64,32,16,8,5,100,116, + 252,0,0,252,18,89,121,128,64,32,16,8,16,32,64,128, + 2,106,122,120,132,132,8,16,16,16,0,16,16,2,106,122, + 56,68,156,164,164,164,164,156,64,60,2,106,122,48,72,132, + 132,132,252,132,132,132,132,2,106,122,240,136,132,136,240,136, + 132,132,136,240,2,106,122,120,132,132,128,128,128,128,132,132, + 120,2,106,122,240,136,132,132,132,132,132,132,136,240,2,106, + 122,252,128,128,128,240,128,128,128,128,252,2,106,122,252,128, + 128,128,240,128,128,128,128,128,2,106,122,120,132,132,128,128, + 156,132,132,140,116,2,106,122,132,132,132,132,252,132,132,132, + 132,132,18,90,122,248,32,32,32,32,32,32,32,32,248,2, + 106,122,28,8,8,8,8,8,8,136,136,112,2,106,122,132, + 136,144,160,192,160,144,136,132,132,2,106,122,128,128,128,128, + 128,128,128,128,128,252,2,106,122,132,204,204,180,180,132,132, + 132,132,132,2,106,122,132,132,196,196,164,148,140,140,132,132, + 2,106,122,120,132,132,132,132,132,132,132,132,120,2,106,122, + 248,132,132,132,132,248,128,128,128,128,0,108,124,120,132,132, + 132,132,132,228,148,140,120,8,4,2,106,122,248,132,132,132, + 132,248,144,136,132,132,2,106,122,120,132,132,128,96,24,4, + 132,132,120,2,122,122,254,16,16,16,16,16,16,16,16,16, + 2,106,122,132,132,132,132,132,132,132,132,132,120,2,106,122, + 132,132,132,132,72,72,72,48,48,48,18,90,122,136,136,136, + 136,136,136,168,168,168,80,2,106,122,132,132,72,72,48,48, + 72,72,132,132,18,90,122,136,136,136,80,80,32,32,32,32, + 32,2,106,122,252,4,8,16,16,32,64,64,128,252,32,77, + 125,240,128,128,128,128,128,128,128,128,128,128,128,240,0,109, + 125,128,128,64,64,32,32,32,16,16,8,8,4,4,16,77, + 125,240,16,16,16,16,16,16,16,16,16,16,16,240,10,99, + 115,48,72,132,0,97,113,252,42,51,115,128,64,32,2,103, + 119,120,132,4,124,132,132,124,2,106,122,128,128,128,184,196, + 132,132,132,196,184,2,103,119,120,132,128,128,128,132,120,2, + 106,122,4,4,4,116,140,132,132,132,140,116,2,103,119,120, + 132,132,252,128,132,120,2,106,122,24,36,32,32,248,32,32, + 32,32,32,0,105,121,116,136,136,136,112,64,184,132,120,2, + 106,122,128,128,128,184,196,132,132,132,132,132,18,90,122,32, + 32,0,96,32,32,32,32,32,248,16,92,124,8,8,0,24, + 8,8,8,8,8,136,136,112,2,106,122,128,128,128,136,144, + 160,224,144,136,132,18,90,122,96,32,32,32,32,32,32,32, + 32,248,18,87,119,208,168,168,168,168,168,136,2,103,119,184, + 196,132,132,132,132,132,2,103,119,120,132,132,132,132,132,120, + 0,105,121,184,196,132,132,132,196,184,128,128,0,105,121,116, + 140,132,132,132,140,116,4,4,2,103,119,184,196,132,128,128, + 128,128,2,103,119,120,132,64,48,8,132,120,2,106,122,32, + 32,32,248,32,32,32,32,36,24,2,103,119,132,132,132,132, + 132,140,116,18,87,119,136,136,136,80,80,32,32,18,87,119, + 136,136,168,168,168,168,80,2,103,119,132,132,72,48,72,132, + 132,0,105,121,132,132,132,132,140,116,4,132,120,2,103,119, + 252,8,16,32,32,64,252,32,77,125,48,64,64,64,64,64, + 128,64,64,64,64,64,48,48,29,125,128,128,128,128,128,128, + 128,128,128,128,128,128,128,16,77,125,192,32,32,32,32,32, + 16,32,32,32,32,32,192,9,100,116,64,164,148,8,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,14, + 0,112,50,26,122,128,128,0,128,128,128,128,128,128,128,1, + 105,121,32,120,164,160,160,160,164,120,32,18,89,121,48,72, + 64,64,240,64,64,240,72,4,102,118,132,120,72,72,120,132, + 18,90,122,136,80,80,32,248,32,248,32,32,32,50,26,122, + 128,128,128,128,0,0,128,128,128,128,2,107,123,120,132,64, + 48,72,132,72,48,8,132,120,27,66,114,144,144,2,107,123, + 120,132,180,204,196,196,196,204,180,132,120,21,88,120,112,136, + 120,136,152,104,0,248,2,103,119,20,40,80,160,80,40,20, + 18,84,116,248,8,8,8,22,65,113,240,2,107,123,120,132, + 244,204,204,244,204,204,204,132,120,27,81,113,248,25,68,116, + 96,144,144,96,18,86,118,32,32,248,32,32,248,22,71,119, + 96,144,16,32,64,128,240,22,71,119,96,144,16,96,16,144, + 96,42,51,115,32,64,128,16,88,120,136,136,136,136,216,168, + 128,128,16,92,124,120,168,168,168,168,104,40,40,40,40,40, + 56,55,17,113,128,32,35,115,64,64,128,38,55,119,64,192, + 64,64,64,64,224,22,70,118,96,144,144,96,0,240,2,103, + 119,160,80,40,20,40,80,160,2,106,122,64,196,72,72,80, + 36,44,84,156,132,2,106,122,64,196,72,72,80,40,52,68, + 136,156,2,106,122,196,36,72,48,208,36,76,84,156,4,0, + 107,123,32,32,0,32,32,32,32,64,132,132,120,2,108,124, + 32,16,0,48,72,132,132,252,132,132,132,132,2,108,124,16, + 32,0,48,72,132,132,252,132,132,132,132,2,108,124,48,72, + 0,48,72,132,132,252,132,132,132,132,2,108,124,100,152,0, + 48,72,132,132,252,132,132,132,132,2,107,123,72,0,48,72, + 132,132,252,132,132,132,132,2,107,123,48,72,48,72,132,132, + 252,132,132,132,132,2,106,122,60,80,144,144,252,144,144,144, + 144,156,0,108,124,120,132,132,128,128,128,128,132,132,120,16, + 32,2,108,124,32,16,0,252,128,128,128,248,128,128,128,252, + 2,108,124,16,32,0,252,128,128,128,248,128,128,128,252,2, + 108,124,48,72,0,252,128,128,128,248,128,128,128,252,2,107, + 123,72,0,252,128,128,128,248,128,128,128,252,18,92,124,64, + 32,0,248,32,32,32,32,32,32,32,248,18,92,124,16,32, + 0,248,32,32,32,32,32,32,32,248,18,92,124,32,80,0, + 248,32,32,32,32,32,32,32,248,18,91,123,80,0,248,32, + 32,32,32,32,32,32,248,2,122,122,120,68,66,66,242,66, + 66,66,68,120,2,108,124,100,152,0,196,196,164,164,148,148, + 148,140,140,2,108,124,32,16,0,120,132,132,132,132,132,132, + 132,120,2,108,124,16,32,0,120,132,132,132,132,132,132,132, + 120,2,108,124,48,72,0,120,132,132,132,132,132,132,132,120, + 2,108,124,100,152,0,120,132,132,132,132,132,132,132,120,2, + 107,123,72,0,120,132,132,132,132,132,132,132,120,2,119,119, + 130,68,40,16,40,68,130,0,110,126,4,4,120,140,148,148, + 148,164,164,164,196,120,128,128,2,108,124,32,16,0,132,132, + 132,132,132,132,132,132,120,2,108,124,16,32,0,132,132,132, + 132,132,132,132,132,120,2,108,124,48,72,0,132,132,132,132, + 132,132,132,132,120,2,107,123,72,0,132,132,132,132,132,132, + 132,132,120,18,92,124,16,32,0,136,136,80,80,32,32,32, + 32,32,2,106,122,128,128,248,132,132,132,132,248,128,128,2, + 106,122,48,72,72,72,112,72,68,68,68,248,2,106,122,32, + 16,0,120,132,4,124,132,132,124,2,106,122,8,16,0,120, + 132,4,124,132,132,124,2,106,122,48,72,0,120,132,4,124, + 132,132,124,2,106,122,100,152,0,120,132,4,124,132,132,124, + 2,105,121,72,0,120,132,4,124,132,132,124,2,107,123,48, + 72,48,0,120,132,4,124,132,132,124,2,119,119,124,146,50, + 94,144,146,124,0,105,121,120,132,128,128,128,132,120,16,32, + 2,106,122,32,16,0,120,132,132,252,128,132,120,2,106,122, + 16,32,0,120,132,132,252,128,132,120,2,106,122,48,72,0, + 120,132,132,252,128,132,120,2,105,121,72,0,120,132,132,252, + 128,132,120,18,90,122,64,32,0,96,32,32,32,32,32,248, + 18,90,122,16,32,0,96,32,32,32,32,32,248,18,90,122, + 96,144,0,96,32,32,32,32,32,248,18,89,121,80,0,96, + 32,32,32,32,32,248,18,91,123,80,32,80,8,120,136,136, + 136,136,136,112,2,106,122,100,152,0,184,196,132,132,132,132, + 132,2,106,122,32,16,0,120,132,132,132,132,132,120,2,106, + 122,16,32,0,120,132,132,132,132,132,120,2,106,122,48,72, + 0,120,132,132,132,132,132,120,2,106,122,100,152,0,120,132, + 132,132,132,132,120,2,105,121,72,0,120,132,132,132,132,132, + 120,2,101,117,48,0,252,0,48,0,107,123,4,8,120,148, + 148,164,164,196,120,128,128,2,106,122,32,16,0,132,132,132, + 132,132,140,116,2,106,122,16,32,0,132,132,132,132,132,140, + 116,2,106,122,48,72,0,132,132,132,132,132,140,116,2,105, + 121,72,0,132,132,132,132,132,140,116,0,108,124,16,32,0, + 132,132,68,72,40,56,16,144,96,0,108,124,128,128,128,184, + 196,132,132,132,196,184,128,128,0,107,123,72,0,132,132,68, + 72,40,56,16,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=13 x= 3 y=12 dx= 7 dy= 0 ascent=12 len=13 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14r[1151] U8G_SECTION(".progmem.u8g_font_7x14r") = { + 1,7,14,0,254,10,1,138,3,30,32,127,254,12,254,11, + 254,14,0,112,50,26,122,128,128,128,128,128,128,128,0,128, + 128,41,52,116,160,160,160,160,18,90,122,80,80,80,248,80, + 80,248,80,80,80,1,107,123,16,120,148,148,80,56,20,148, + 148,120,16,2,106,122,100,148,152,112,16,32,56,100,164,152, + 2,106,122,48,72,72,72,48,100,148,136,152,100,57,20,116, + 128,128,128,128,32,77,125,16,32,64,64,128,128,128,128,128, + 64,64,32,16,16,77,125,128,64,32,32,16,16,16,16,16, + 32,32,64,128,19,87,119,32,168,112,32,112,168,32,19,87, + 119,32,32,32,248,32,32,32,32,36,116,192,64,64,128,22, + 81,113,248,33,51,115,64,224,64,0,109,125,4,4,8,8, + 16,16,16,32,32,64,64,128,128,2,106,122,48,72,132,132, + 132,132,132,132,72,48,18,90,122,32,96,160,32,32,32,32, + 32,32,248,2,106,122,120,132,132,4,8,8,16,32,64,252, + 2,106,122,252,4,8,16,56,4,4,132,132,120,2,106,122, + 8,24,40,40,72,72,136,252,8,8,2,106,122,252,128,128, + 248,132,4,4,132,132,120,2,106,122,56,64,128,128,184,196, + 132,132,132,120,2,106,122,252,4,8,8,16,16,32,32,64, + 64,2,106,122,120,132,132,72,48,72,132,132,132,120,2,106, + 122,120,132,132,132,140,116,4,132,136,112,34,56,120,64,224, + 64,0,0,64,224,64,33,40,120,192,192,0,0,192,64,64, + 128,18,89,121,8,16,32,64,128,64,32,16,8,5,100,116, + 252,0,0,252,18,89,121,128,64,32,16,8,16,32,64,128, + 2,106,122,120,132,132,8,16,16,16,0,16,16,2,106,122, + 56,68,156,164,164,164,164,156,64,60,2,106,122,48,72,132, + 132,132,252,132,132,132,132,2,106,122,240,136,132,136,240,136, + 132,132,136,240,2,106,122,120,132,132,128,128,128,128,132,132, + 120,2,106,122,240,136,132,132,132,132,132,132,136,240,2,106, + 122,252,128,128,128,240,128,128,128,128,252,2,106,122,252,128, + 128,128,240,128,128,128,128,128,2,106,122,120,132,132,128,128, + 156,132,132,140,116,2,106,122,132,132,132,132,252,132,132,132, + 132,132,18,90,122,248,32,32,32,32,32,32,32,32,248,2, + 106,122,28,8,8,8,8,8,8,136,136,112,2,106,122,132, + 136,144,160,192,160,144,136,132,132,2,106,122,128,128,128,128, + 128,128,128,128,128,252,2,106,122,132,204,204,180,180,132,132, + 132,132,132,2,106,122,132,132,196,196,164,148,140,140,132,132, + 2,106,122,120,132,132,132,132,132,132,132,132,120,2,106,122, + 248,132,132,132,132,248,128,128,128,128,0,108,124,120,132,132, + 132,132,132,228,148,140,120,8,4,2,106,122,248,132,132,132, + 132,248,144,136,132,132,2,106,122,120,132,132,128,96,24,4, + 132,132,120,2,122,122,254,16,16,16,16,16,16,16,16,16, + 2,106,122,132,132,132,132,132,132,132,132,132,120,2,106,122, + 132,132,132,132,72,72,72,48,48,48,18,90,122,136,136,136, + 136,136,136,168,168,168,80,2,106,122,132,132,72,72,48,48, + 72,72,132,132,18,90,122,136,136,136,80,80,32,32,32,32, + 32,2,106,122,252,4,8,16,16,32,64,64,128,252,32,77, + 125,240,128,128,128,128,128,128,128,128,128,128,128,240,0,109, + 125,128,128,64,64,32,32,32,16,16,8,8,4,4,16,77, + 125,240,16,16,16,16,16,16,16,16,16,16,16,240,10,99, + 115,48,72,132,0,97,113,252,42,51,115,128,64,32,2,103, + 119,120,132,4,124,132,132,124,2,106,122,128,128,128,184,196, + 132,132,132,196,184,2,103,119,120,132,128,128,128,132,120,2, + 106,122,4,4,4,116,140,132,132,132,140,116,2,103,119,120, + 132,132,252,128,132,120,2,106,122,24,36,32,32,248,32,32, + 32,32,32,0,105,121,116,136,136,136,112,64,184,132,120,2, + 106,122,128,128,128,184,196,132,132,132,132,132,18,90,122,32, + 32,0,96,32,32,32,32,32,248,16,92,124,8,8,0,24, + 8,8,8,8,8,136,136,112,2,106,122,128,128,128,136,144, + 160,224,144,136,132,18,90,122,96,32,32,32,32,32,32,32, + 32,248,18,87,119,208,168,168,168,168,168,136,2,103,119,184, + 196,132,132,132,132,132,2,103,119,120,132,132,132,132,132,120, + 0,105,121,184,196,132,132,132,196,184,128,128,0,105,121,116, + 140,132,132,132,140,116,4,4,2,103,119,184,196,132,128,128, + 128,128,2,103,119,120,132,64,48,8,132,120,2,106,122,32, + 32,32,248,32,32,32,32,36,24,2,103,119,132,132,132,132, + 132,140,116,18,87,119,136,136,136,80,80,32,32,18,87,119, + 136,136,168,168,168,168,80,2,103,119,132,132,72,48,72,132, + 132,0,105,121,132,132,132,132,140,116,4,132,120,2,103,119, + 252,8,16,32,32,64,252,32,77,125,48,64,64,64,64,64, + 128,64,64,64,64,64,48,48,29,125,128,128,128,128,128,128, + 128,128,128,128,128,128,128,16,77,125,192,32,32,32,32,32, + 16,32,32,32,32,32,192,9,100,116,64,164,148,8,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 7 y= 9 dx= 8 dy= 0 ascent=11 len=13 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[2420] U8G_SECTION(".progmem.u8g_font_8x13_67_75") = { + 1,8,13,0,254,3,1,94,2,193,32,255,0,11,254,10, + 0,3,133,133,36,18,255,18,36,18,88,136,32,32,168,112, + 32,168,112,32,2,119,135,16,34,68,248,68,34,16,18,119, + 135,16,136,68,62,68,136,16,3,133,133,32,65,255,65,32, + 18,89,137,32,112,168,32,32,32,32,32,112,3,133,133,4, + 130,255,130,4,18,89,137,112,32,32,32,32,32,168,112,32, + 2,122,138,16,56,84,16,16,16,84,56,16,254,3,133,133, + 34,65,254,64,32,3,133,133,68,130,127,2,4,3,133,133, + 34,69,254,68,36,3,133,133,68,162,127,34,36,3,133,133, + 36,90,231,66,36,3,133,133,36,82,255,82,36,18,106,138, + 64,64,128,152,104,8,16,84,56,16,18,106,138,32,64,252, + 68,36,4,4,4,4,4,18,106,138,16,8,252,136,144,128, + 128,128,128,128,18,106,138,4,4,4,4,4,36,68,252,64, + 32,18,106,138,128,128,128,128,128,144,136,252,8,16,18,104, + 136,240,16,16,16,16,84,56,16,18,90,138,8,8,8,8, + 8,40,72,248,64,32,4,135,135,12,18,33,33,169,112,32, + 4,135,135,48,72,132,132,149,14,4,2,136,136,255,0,112, + 96,80,8,4,2,2,136,136,136,144,190,144,9,125,9,17, + 4,135,135,100,142,149,132,132,72,48,4,135,135,38,113,169, + 33,33,18,12,5,131,131,32,64,255,3,131,131,255,64,32, + 50,57,137,128,192,160,128,128,128,128,128,128,34,57,137,32, + 96,160,32,32,32,32,32,32,5,131,131,4,2,255,3,131, + 131,255,2,4,50,57,137,128,128,128,128,128,128,160,192,128, + 34,57,137,32,32,32,32,32,32,160,96,32,2,121,137,8, + 4,254,4,40,64,254,64,32,2,138,138,36,116,172,36,36, + 36,36,53,46,36,2,121,137,32,64,254,64,40,4,254,4, + 8,2,139,139,32,64,255,64,32,0,32,64,255,64,32,2, + 122,138,68,238,68,68,68,68,68,68,68,68,2,139,139,4, + 2,255,2,4,0,4,2,255,2,4,2,122,138,68,68,68, + 68,68,68,68,68,238,68,2,119,135,32,64,254,0,254,4, + 8,2,119,135,8,4,254,0,254,64,32,2,135,135,16,33, + 127,130,127,36,16,3,133,133,36,126,153,126,36,2,135,135, + 8,36,254,65,254,132,8,2,135,135,16,32,127,128,127,32, + 16,18,121,137,16,40,108,170,40,40,40,40,40,2,135,135, + 8,4,254,1,254,4,8,2,121,137,40,40,40,40,40,170, + 108,40,16,3,133,133,36,126,129,126,36,2,123,139,16,40, + 108,170,40,40,40,170,108,40,16,2,119,135,252,144,136,196, + 162,144,8,18,119,135,126,18,34,70,138,18,32,18,119,135, + 32,18,138,70,34,18,126,2,119,135,8,144,162,196,136,144, + 252,2,137,137,8,16,63,64,255,64,63,16,8,2,137,137, + 16,8,252,2,255,2,252,8,16,2,135,135,16,32,72,245, + 66,32,16,2,135,135,8,4,18,175,66,4,8,2,122,138, + 16,56,84,146,16,124,16,124,16,16,2,122,138,16,16,124, + 16,124,16,146,84,56,16,2,119,135,16,32,64,182,64,32, + 16,2,122,138,16,40,84,146,0,16,16,0,16,16,18,119, + 135,16,8,4,218,4,8,16,2,122,138,16,16,0,16,16, + 0,146,84,40,16,3,117,133,144,160,254,160,144,19,117,133, + 18,10,254,10,18,2,135,135,16,48,95,129,95,48,16,2, + 121,137,16,40,68,238,40,40,40,40,56,2,135,135,8,12, + 250,129,250,12,8,2,121,137,56,40,40,40,40,238,68,40, + 16,1,123,139,16,40,68,238,40,40,56,0,56,40,56,1, + 122,138,16,40,68,238,40,40,40,108,68,124,1,122,138,16, + 40,68,254,40,40,40,108,68,124,1,122,138,16,40,68,254, + 56,56,56,124,68,124,2,121,137,16,40,68,238,68,238,40, + 40,56,1,122,138,16,40,68,238,68,238,40,108,68,124,2, + 135,135,136,140,250,129,250,140,136,2,119,135,254,128,188,176, + 168,164,130,2,119,135,130,74,42,26,122,2,254,2,121,137, + 16,40,68,238,40,238,68,40,16,4,133,133,36,82,255,82, + 36,2,138,138,36,46,53,36,36,36,36,172,116,36,0,141, + 141,4,2,255,2,4,2,255,2,4,2,255,2,4,4,117, + 133,40,72,254,72,40,20,117,133,40,36,254,36,40,4,117, + 133,16,84,254,84,16,4,133,133,42,74,255,74,42,4,133, + 133,84,82,255,82,84,4,133,133,24,90,255,90,24,3,135, + 135,16,48,80,159,80,48,16,3,135,135,8,12,10,249,10, + 12,8,4,133,133,36,102,189,102,36,7,134,134,255,255,255, + 255,255,255,0,130,130,255,255,0,131,131,255,255,255,0,133, + 133,255,255,255,255,255,0,135,135,255,255,255,255,255,255,255, + 0,136,136,255,255,255,255,255,255,255,255,0,138,138,255,255, + 255,255,255,255,255,255,255,255,0,139,139,255,255,255,255,255, + 255,255,255,255,255,255,0,141,141,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,125,141,254,254,254,254,254,254,254, + 254,254,254,254,254,254,0,109,141,252,252,252,252,252,252,252, + 252,252,252,252,252,252,0,93,141,248,248,248,248,248,248,248, + 248,248,248,248,248,248,0,77,141,240,240,240,240,240,240,240, + 240,240,240,240,240,240,0,61,141,224,224,224,224,224,224,224, + 224,224,224,224,224,224,0,45,141,192,192,192,192,192,192,192, + 192,192,192,192,192,192,0,29,141,128,128,128,128,128,128,128, + 128,128,128,128,128,128,64,77,141,240,240,240,240,240,240,240, + 240,240,240,240,240,240,1,139,139,85,0,170,0,85,0,170, + 0,85,0,170,0,141,141,170,85,170,85,170,85,170,85,170, + 85,170,85,170,0,141,141,255,85,255,170,255,85,255,170,255, + 85,255,170,255,11,130,130,255,255,112,29,141,128,128,128,128, + 128,128,128,128,128,128,128,128,128,0,71,135,240,240,240,240, + 240,240,240,64,71,135,240,240,240,240,240,240,240,7,70,134, + 240,240,240,240,240,240,0,141,141,240,240,240,240,240,240,255, + 255,255,255,255,255,255,0,141,141,240,240,240,240,240,240,15, + 15,15,15,15,15,15,0,141,141,255,255,255,255,255,255,240, + 240,240,240,240,240,240,0,141,141,255,255,255,255,255,255,15, + 15,15,15,15,15,15,71,70,134,240,240,240,240,240,240,0, + 141,141,15,15,15,15,15,15,240,240,240,240,240,240,240,0, + 141,141,15,15,15,15,15,15,255,255,255,255,255,255,255,2, + 119,135,254,254,254,254,254,254,254,2,119,135,254,130,130,130, + 130,130,254,2,119,135,124,130,130,130,130,130,124,2,119,135, + 254,130,186,186,186,130,254,2,119,135,254,130,254,130,254,130, + 254,2,119,135,254,170,170,170,170,170,254,2,119,135,254,170, + 254,170,254,170,254,2,119,135,254,146,138,198,162,146,254,2, + 119,135,254,146,162,198,138,146,254,2,119,135,254,214,170,214, + 170,214,254,37,51,131,224,224,224,37,51,131,224,160,224,21, + 100,132,252,252,252,252,21,100,132,252,132,132,252,18,89,137, + 248,248,248,248,248,248,248,248,248,18,89,137,248,136,136,136, + 136,136,136,136,248,5,132,132,31,62,124,248,5,132,132,31, + 34,68,248,2,136,136,24,24,60,60,126,126,255,255,2,136, + 136,24,24,36,36,66,66,129,255,18,102,134,48,48,120,120, + 252,252,18,102,134,48,48,72,72,132,252,18,107,139,128,192, + 224,240,248,252,248,240,224,192,128,18,107,139,128,192,160,144, + 136,132,136,144,160,192,128,20,101,133,192,240,252,240,192,20, + 101,133,192,176,140,176,192,3,119,135,128,224,248,254,248,224, + 128,3,119,135,128,224,152,134,152,224,128,2,136,136,255,255, + 126,126,60,60,24,24,2,136,136,255,129,66,66,36,36,24, + 24,18,102,134,252,252,120,120,48,48,18,102,134,252,132,72, + 72,48,48,18,107,139,4,12,28,60,124,252,124,60,28,12, + 4,18,107,139,4,12,20,36,68,132,68,36,20,12,4,20, + 101,133,12,60,252,60,12,20,101,133,12,52,196,52,12,3, + 119,135,2,14,62,254,62,14,2,3,119,135,2,14,50,194, + 50,14,2,3,119,135,16,56,124,254,124,56,16,3,119,135, + 16,40,68,130,68,40,16,3,119,135,16,40,84,186,84,40, + 16,3,119,135,56,68,146,186,146,68,56,18,105,137,48,48, + 72,72,132,72,72,48,48,2,136,136,60,66,129,129,129,129, + 66,60,2,136,136,24,66,0,129,129,0,66,24,2,136,136, + 60,106,171,171,171,171,106,60,2,136,136,60,66,153,165,165, + 153,66,60,2,136,136,60,126,255,255,255,255,126,60,2,136, + 136,60,114,241,241,241,241,114,60,2,136,136,60,78,143,143, + 143,143,78,60,2,136,136,60,66,129,129,255,255,126,60,2, + 136,136,60,126,255,255,129,129,66,60,2,136,136,60,78,143, + 143,129,129,66,60,2,136,136,60,78,143,143,255,255,126,60, + 2,72,136,48,112,240,240,240,240,112,48,66,72,136,192,224, + 240,240,240,240,224,192,0,141,141,255,255,255,255,195,129,129, + 129,129,195,255,255,255,0,141,141,255,255,255,255,195,153,189, + 189,153,195,255,255,255,6,135,135,255,255,255,255,195,153,189, + 0,134,134,189,153,195,255,255,255,6,68,132,48,64,128,128, + 70,68,132,192,32,16,16,66,68,132,16,16,32,192,2,68, + 132,128,128,64,48,6,132,132,60,66,129,129,2,132,132,129, + 129,66,60,2,136,136,1,3,7,15,31,63,127,255,2,136, + 136,128,192,224,240,248,252,254,255,2,136,136,255,254,252,248, + 240,224,192,128,2,136,136,255,127,63,31,15,7,3,1,20, + 85,133,112,136,136,136,112,2,120,136,254,226,226,226,226,226, + 226,254,2,120,136,254,142,142,142,142,142,142,254,2,120,136, + 254,254,250,242,226,194,130,254,2,120,136,254,130,134,142,158, + 190,254,254,2,120,136,254,146,146,146,146,146,146,254,2,122, + 138,16,16,40,40,68,84,124,146,130,254,2,122,138,16,16, + 56,56,116,116,116,242,242,254,2,122,138,16,16,56,56,92, + 92,92,158,158,254,2,136,136,60,66,129,129,129,129,66,60, + 2,119,135,254,146,146,242,130,130,254,2,119,135,254,130,130, + 242,146,146,254,2,119,135,254,130,130,158,146,146,254,2,119, + 135,254,146,146,158,130,130,254,2,119,135,124,146,146,242,130, + 130,124,2,119,135,124,130,130,242,146,146,124,2,119,135,124, + 130,130,158,146,146,124,2,119,135,124,146,146,158,130,130,124, + 19,102,134,252,136,144,160,192,128,19,102,134,252,68,36,20, + 12,4,19,102,134,128,192,160,144,136,252,19,102,134,252,132, + 132,132,132,252,19,102,134,252,252,252,252,252,252,37,68,132, + 240,144,144,240,37,68,132,240,240,240,240,19,102,134,4,12, + 20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 11, '1' Height: 4 + Calculated Max Values w= 8 h=11 x= 2 y= 3 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13_75r[496] U8G_SECTION(".progmem.u8g_font_8x13_75r") = { + 1,8,13,0,254,11,1,83,0,0,32,79,0,11,0,11, + 0,2,119,135,254,254,254,254,254,254,254,2,119,135,254,130, + 130,130,130,130,254,2,119,135,124,130,130,130,130,130,124,2, + 119,135,254,130,186,186,186,130,254,2,119,135,254,130,254,130, + 254,130,254,2,119,135,254,170,170,170,170,170,254,2,119,135, + 254,170,254,170,254,170,254,2,119,135,254,146,138,198,162,146, + 254,2,119,135,254,146,162,198,138,146,254,2,119,135,254,214, + 170,214,170,214,254,37,51,131,224,224,224,37,51,131,224,160, + 224,21,100,132,252,252,252,252,21,100,132,252,132,132,252,18, + 89,137,248,248,248,248,248,248,248,248,248,18,89,137,248,136, + 136,136,136,136,136,136,248,5,132,132,31,62,124,248,5,132, + 132,31,34,68,248,2,136,136,24,24,60,60,126,126,255,255, + 2,136,136,24,24,36,36,66,66,129,255,18,102,134,48,48, + 120,120,252,252,18,102,134,48,48,72,72,132,252,18,107,139, + 128,192,224,240,248,252,248,240,224,192,128,18,107,139,128,192, + 160,144,136,132,136,144,160,192,128,20,101,133,192,240,252,240, + 192,20,101,133,192,176,140,176,192,3,119,135,128,224,248,254, + 248,224,128,3,119,135,128,224,152,134,152,224,128,2,136,136, + 255,255,126,126,60,60,24,24,2,136,136,255,129,66,66,36, + 36,24,24,18,102,134,252,252,120,120,48,48,18,102,134,252, + 132,72,72,48,48,18,107,139,4,12,28,60,124,252,124,60, + 28,12,4,18,107,139,4,12,20,36,68,132,68,36,20,12, + 4,20,101,133,12,60,252,60,12,20,101,133,12,52,196,52, + 12,3,119,135,2,14,62,254,62,14,2,3,119,135,2,14, + 50,194,50,14,2,3,119,135,16,56,124,254,124,56,16,3, + 119,135,16,40,68,130,68,40,16,3,119,135,16,40,84,186, + 84,40,16,3,119,135,56,68,146,186,146,68,56,18,105,137, + 48,48,72,72,132,72,72,48,48,2,136,136,60,66,129,129, + 129,129,66,60,2,136,136,24,66,0,129,129,0,66,24,2, + 136,136,60,106,171,171,171,171,106,60,2,136,136,60,66,153, + 165,165,153,66,60,2,136,136,60,126,255,255,255,255,126,60 + }; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=12 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=12 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13B[2302] U8G_SECTION(".progmem.u8g_font_8x13B") = { + 1,8,13,0,254,10,1,127,3,12,32,255,254,11,254,10, + 254,13,0,128,50,42,138,192,192,192,192,192,192,192,0,192, + 192,24,84,132,216,216,216,216,2,121,137,108,108,254,254,108, + 254,254,108,108,1,123,139,16,124,214,208,240,124,30,22,214, + 124,16,2,122,138,230,166,236,24,24,48,48,110,202,206,2, + 119,135,120,204,204,120,206,204,126,56,36,132,192,192,192,192, + 17,91,139,24,48,96,96,192,192,192,96,96,48,24,17,91, + 139,192,96,48,48,24,24,24,48,48,96,192,3,119,135,16, + 16,254,56,56,108,68,20,102,134,48,48,252,252,48,48,33, + 69,133,240,112,112,96,192,22,97,129,252,34,67,131,96,240, + 96,2,122,138,2,6,6,12,24,48,96,192,192,128,2,122, + 138,56,108,198,198,198,198,198,198,108,56,18,106,138,48,112, + 240,48,48,48,48,48,48,252,2,122,138,124,198,198,6,12, + 24,48,96,192,254,2,122,138,254,6,12,24,60,6,6,6, + 198,124,2,122,138,12,28,60,108,204,204,254,12,12,12,2, + 122,138,254,192,192,252,230,6,6,6,198,124,2,122,138,60, + 96,192,192,252,230,198,198,230,124,2,122,138,254,6,6,12, + 24,24,48,48,48,48,2,122,138,124,198,198,198,124,198,198, + 198,198,124,2,122,138,124,206,198,198,206,126,6,6,12,120, + 34,72,136,96,240,96,0,0,96,240,96,33,73,137,96,240, + 96,0,240,112,112,96,192,18,105,137,12,24,48,96,192,96, + 48,24,12,20,100,132,252,0,0,252,18,105,137,192,96,48, + 24,12,24,48,96,192,2,122,138,124,198,198,6,12,24,24, + 0,24,24,2,121,137,124,254,206,222,210,210,222,224,126,2, + 122,138,56,124,198,198,198,254,198,198,198,198,2,122,138,252, + 102,102,102,124,102,102,102,102,252,2,122,138,124,230,198,192, + 192,192,192,198,230,124,2,122,138,252,102,102,102,102,102,102, + 102,102,252,2,122,138,254,192,192,192,248,192,192,192,192,254, + 2,122,138,254,192,192,192,248,192,192,192,192,192,2,122,138, + 124,198,198,192,192,192,206,198,198,124,2,122,138,198,198,198, + 198,254,198,198,198,198,198,34,74,138,240,96,96,96,96,96, + 96,96,96,240,2,122,138,14,6,6,6,6,6,6,198,198, + 124,2,122,138,198,198,204,216,240,240,216,204,198,198,2,122, + 138,192,192,192,192,192,192,192,192,194,254,2,122,138,198,198, + 238,254,214,198,198,198,198,198,2,122,138,198,198,230,230,246, + 222,206,206,198,198,2,122,138,124,198,198,198,198,198,198,198, + 198,124,2,122,138,252,198,198,198,198,252,192,192,192,192,1, + 123,139,124,198,198,198,198,198,198,198,222,124,6,2,122,138, + 252,198,198,198,252,248,204,204,198,198,2,122,138,124,198,198, + 192,124,6,6,198,198,124,18,106,138,252,48,48,48,48,48, + 48,48,48,48,2,122,138,198,198,198,198,198,198,198,198,198, + 124,2,122,138,198,198,198,198,68,108,108,56,56,16,2,122, + 138,198,198,198,198,198,198,214,214,254,108,2,122,138,198,198, + 108,108,56,56,108,108,198,198,18,106,138,204,204,204,120,120, + 48,48,48,48,48,2,122,138,254,6,6,12,24,48,96,192, + 192,254,17,91,139,248,192,192,192,192,192,192,192,192,192,248, + 2,122,138,128,192,192,96,48,24,12,6,6,2,17,91,139, + 248,24,24,24,24,24,24,24,24,24,248,8,116,132,16,56, + 108,198,1,113,129,254,41,67,131,192,96,48,2,119,135,124, + 6,126,198,198,206,118,2,122,138,192,192,192,220,230,198,198, + 198,230,220,2,119,135,124,230,192,192,192,230,124,2,122,138, + 6,6,6,118,206,198,198,198,206,118,2,119,135,124,198,198, + 254,192,198,124,2,122,138,60,102,96,96,96,252,96,96,96, + 96,0,121,137,126,204,204,204,120,240,124,198,124,2,122,138, + 192,192,192,220,230,198,198,198,198,198,34,73,137,96,96,0, + 224,96,96,96,96,240,0,123,139,6,6,0,14,6,6,6, + 6,198,198,124,2,122,138,192,192,192,204,216,240,240,216,204, + 198,34,74,138,224,96,96,96,96,96,96,96,96,240,2,119, + 135,108,254,214,214,198,198,198,2,119,135,220,230,198,198,198, + 198,198,2,119,135,124,198,198,198,198,198,124,0,121,137,220, + 230,198,198,198,230,220,192,192,0,121,137,118,206,198,198,198, + 206,118,6,6,2,119,135,220,230,192,192,192,192,192,2,119, + 135,124,198,96,56,12,198,124,2,122,138,96,96,96,96,252, + 96,96,96,102,60,2,119,135,198,198,198,198,198,206,118,2, + 119,135,198,198,198,198,108,108,56,2,119,135,198,198,198,214, + 214,254,108,2,119,135,198,198,108,56,108,198,198,0,121,137, + 198,198,198,198,206,118,6,198,124,2,119,135,254,12,24,48, + 96,192,254,17,107,139,60,96,96,96,48,224,48,96,96,96, + 60,50,42,138,192,192,192,192,192,192,192,192,192,192,17,107, + 139,240,24,24,24,48,28,48,24,24,24,240,8,115,131,114, + 254,156,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,13,0,128,50,42,138,192,192,0,192,192,192,192, + 192,192,192,3,104,136,16,124,212,208,208,212,124,16,1,123, + 139,60,102,96,96,252,96,96,96,240,190,224,3,119,135,198, + 254,108,68,108,254,198,18,106,138,204,204,204,120,120,252,48, + 252,48,48,50,42,138,192,192,192,192,0,0,192,192,192,192, + 18,106,138,120,204,192,120,204,204,120,12,204,120,26,82,130, + 216,216,3,121,137,124,198,186,234,226,234,186,198,124,21,87, + 135,240,24,248,152,248,0,248,3,119,135,54,108,216,176,216, + 108,54,3,101,133,252,252,4,4,4,22,81,129,248,3,121, + 137,124,198,186,170,186,178,170,198,124,28,97,129,252,24,100, + 132,120,204,204,120,19,103,135,48,48,252,48,48,0,252,22, + 70,134,224,176,48,96,192,240,22,70,134,224,176,96,48,176, + 224,41,67,131,48,96,192,0,121,137,198,198,198,198,198,238, + 252,192,192,1,123,139,62,122,202,202,202,122,58,10,10,10, + 14,54,34,130,192,192,16,67,131,48,144,96,22,70,134,96, + 224,96,96,96,240,21,87,135,112,248,136,248,112,0,248,3, + 119,135,216,108,54,26,54,108,216,2,122,138,96,224,96,96, + 98,246,14,26,30,6,2,122,138,96,224,96,96,124,246,6, + 12,24,30,2,122,138,224,176,96,48,178,230,14,26,30,6, + 18,106,138,48,48,0,48,48,96,192,204,204,120,2,122,138, + 48,24,0,56,124,198,198,254,198,198,2,122,138,24,48,0, + 56,124,198,198,254,198,198,2,122,138,56,108,0,56,124,198, + 198,254,198,198,2,122,138,52,88,0,56,124,198,198,254,198, + 198,2,122,138,108,108,0,56,124,198,198,254,198,198,2,123, + 139,24,36,24,0,56,124,198,198,254,198,198,2,122,138,126, + 248,216,216,216,252,216,216,216,222,0,124,140,124,230,192,192, + 192,192,192,230,124,24,72,48,2,122,138,48,24,0,254,192, + 192,248,192,192,254,2,122,138,24,48,0,254,192,192,248,192, + 192,254,2,122,138,56,108,0,254,192,192,248,192,192,254,2, + 122,138,108,108,0,254,192,192,248,192,192,254,34,74,138,192, + 96,0,240,96,96,96,96,96,240,34,74,138,48,96,0,240, + 96,96,96,96,96,240,34,90,138,112,216,0,240,96,96,96, + 96,96,240,34,90,138,216,216,0,240,96,96,96,96,96,240, + 2,120,136,252,102,102,246,102,102,102,252,2,122,138,52,88, + 0,198,230,246,214,222,206,198,2,123,139,48,24,0,124,198, + 198,198,198,198,198,124,2,123,139,24,48,0,124,198,198,198, + 198,198,198,124,2,123,139,56,108,0,124,198,198,198,198,198, + 198,124,2,123,139,52,88,0,124,198,198,198,198,198,198,124, + 2,123,139,108,108,0,124,198,198,198,198,198,198,124,2,119, + 135,198,198,124,56,124,198,198,1,122,138,2,124,206,214,214, + 214,214,230,124,128,2,122,138,48,24,0,198,198,198,198,198, + 198,124,2,122,138,24,48,0,198,198,198,198,198,198,124,2, + 122,138,56,108,0,198,198,198,198,198,198,124,2,122,138,108, + 108,0,198,198,198,198,198,198,124,18,106,138,24,48,0,204, + 72,120,48,48,48,48,2,121,137,192,252,198,198,198,252,192, + 192,192,2,122,138,60,102,102,108,236,108,102,102,102,108,2, + 122,138,48,24,0,124,6,126,198,198,206,118,2,122,138,24, + 48,0,124,6,126,198,198,206,118,2,122,138,56,108,0,124, + 6,126,198,198,206,118,2,122,138,52,88,0,124,6,126,198, + 198,206,118,2,122,138,108,108,0,124,6,126,198,198,206,118, + 2,123,139,24,36,24,0,124,6,126,198,198,206,118,2,119, + 135,108,218,26,124,216,218,108,0,122,138,124,230,192,192,192, + 230,124,24,72,48,2,122,138,48,24,0,124,198,198,254,192, + 198,124,2,122,138,24,48,0,124,198,198,254,192,198,124,2, + 122,138,56,108,0,124,198,198,254,192,198,124,2,122,138,108, + 108,0,124,198,198,254,192,198,124,34,74,138,192,96,0,224, + 96,96,96,96,96,240,34,74,138,96,192,0,224,96,96,96, + 96,96,240,18,90,138,112,216,0,112,48,48,48,48,48,120, + 18,90,138,216,216,0,112,48,48,48,48,48,120,2,122,138, + 108,56,120,12,126,198,198,198,198,124,2,122,138,52,88,0, + 220,230,198,198,198,198,198,2,122,138,48,24,0,124,198,198, + 198,198,198,124,2,122,138,24,48,0,124,198,198,198,198,198, + 124,2,122,138,56,108,0,124,198,198,198,198,198,124,2,122, + 138,52,88,0,124,198,198,198,198,198,124,2,122,138,108,108, + 0,124,198,198,198,198,198,124,19,103,135,48,48,0,252,0, + 48,48,1,121,137,2,124,206,214,214,214,230,124,128,2,122, + 138,48,24,0,198,198,198,198,198,206,118,2,122,138,24,48, + 0,198,198,198,198,198,206,118,2,122,138,56,108,0,198,198, + 198,198,198,206,118,2,122,138,108,108,0,198,198,198,198,198, + 206,118,0,124,140,24,48,0,198,198,198,198,206,118,6,198, + 124,0,123,139,192,192,220,230,198,198,198,230,220,192,192,0, + 124,140,108,108,0,198,198,198,198,206,118,6,198,124}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13Br[1123] U8G_SECTION(".progmem.u8g_font_8x13Br") = { + 1,8,13,0,254,10,1,127,3,12,32,127,254,11,254,10, + 254,13,0,128,50,42,138,192,192,192,192,192,192,192,0,192, + 192,24,84,132,216,216,216,216,2,121,137,108,108,254,254,108, + 254,254,108,108,1,123,139,16,124,214,208,240,124,30,22,214, + 124,16,2,122,138,230,166,236,24,24,48,48,110,202,206,2, + 119,135,120,204,204,120,206,204,126,56,36,132,192,192,192,192, + 17,91,139,24,48,96,96,192,192,192,96,96,48,24,17,91, + 139,192,96,48,48,24,24,24,48,48,96,192,3,119,135,16, + 16,254,56,56,108,68,20,102,134,48,48,252,252,48,48,33, + 69,133,240,112,112,96,192,22,97,129,252,34,67,131,96,240, + 96,2,122,138,2,6,6,12,24,48,96,192,192,128,2,122, + 138,56,108,198,198,198,198,198,198,108,56,18,106,138,48,112, + 240,48,48,48,48,48,48,252,2,122,138,124,198,198,6,12, + 24,48,96,192,254,2,122,138,254,6,12,24,60,6,6,6, + 198,124,2,122,138,12,28,60,108,204,204,254,12,12,12,2, + 122,138,254,192,192,252,230,6,6,6,198,124,2,122,138,60, + 96,192,192,252,230,198,198,230,124,2,122,138,254,6,6,12, + 24,24,48,48,48,48,2,122,138,124,198,198,198,124,198,198, + 198,198,124,2,122,138,124,206,198,198,206,126,6,6,12,120, + 34,72,136,96,240,96,0,0,96,240,96,33,73,137,96,240, + 96,0,240,112,112,96,192,18,105,137,12,24,48,96,192,96, + 48,24,12,20,100,132,252,0,0,252,18,105,137,192,96,48, + 24,12,24,48,96,192,2,122,138,124,198,198,6,12,24,24, + 0,24,24,2,121,137,124,254,206,222,210,210,222,224,126,2, + 122,138,56,124,198,198,198,254,198,198,198,198,2,122,138,252, + 102,102,102,124,102,102,102,102,252,2,122,138,124,230,198,192, + 192,192,192,198,230,124,2,122,138,252,102,102,102,102,102,102, + 102,102,252,2,122,138,254,192,192,192,248,192,192,192,192,254, + 2,122,138,254,192,192,192,248,192,192,192,192,192,2,122,138, + 124,198,198,192,192,192,206,198,198,124,2,122,138,198,198,198, + 198,254,198,198,198,198,198,34,74,138,240,96,96,96,96,96, + 96,96,96,240,2,122,138,14,6,6,6,6,6,6,198,198, + 124,2,122,138,198,198,204,216,240,240,216,204,198,198,2,122, + 138,192,192,192,192,192,192,192,192,194,254,2,122,138,198,198, + 238,254,214,198,198,198,198,198,2,122,138,198,198,230,230,246, + 222,206,206,198,198,2,122,138,124,198,198,198,198,198,198,198, + 198,124,2,122,138,252,198,198,198,198,252,192,192,192,192,1, + 123,139,124,198,198,198,198,198,198,198,222,124,6,2,122,138, + 252,198,198,198,252,248,204,204,198,198,2,122,138,124,198,198, + 192,124,6,6,198,198,124,18,106,138,252,48,48,48,48,48, + 48,48,48,48,2,122,138,198,198,198,198,198,198,198,198,198, + 124,2,122,138,198,198,198,198,68,108,108,56,56,16,2,122, + 138,198,198,198,198,198,198,214,214,254,108,2,122,138,198,198, + 108,108,56,56,108,108,198,198,18,106,138,204,204,204,120,120, + 48,48,48,48,48,2,122,138,254,6,6,12,24,48,96,192, + 192,254,17,91,139,248,192,192,192,192,192,192,192,192,192,248, + 2,122,138,128,192,192,96,48,24,12,6,6,2,17,91,139, + 248,24,24,24,24,24,24,24,24,24,248,8,116,132,16,56, + 108,198,1,113,129,254,41,67,131,192,96,48,2,119,135,124, + 6,126,198,198,206,118,2,122,138,192,192,192,220,230,198,198, + 198,230,220,2,119,135,124,230,192,192,192,230,124,2,122,138, + 6,6,6,118,206,198,198,198,206,118,2,119,135,124,198,198, + 254,192,198,124,2,122,138,60,102,96,96,96,252,96,96,96, + 96,0,121,137,126,204,204,204,120,240,124,198,124,2,122,138, + 192,192,192,220,230,198,198,198,198,198,34,73,137,96,96,0, + 224,96,96,96,96,240,0,123,139,6,6,0,14,6,6,6, + 6,198,198,124,2,122,138,192,192,192,204,216,240,240,216,204, + 198,34,74,138,224,96,96,96,96,96,96,96,96,240,2,119, + 135,108,254,214,214,198,198,198,2,119,135,220,230,198,198,198, + 198,198,2,119,135,124,198,198,198,198,198,124,0,121,137,220, + 230,198,198,198,230,220,192,192,0,121,137,118,206,198,198,198, + 206,118,6,6,2,119,135,220,230,192,192,192,192,192,2,119, + 135,124,198,96,56,12,198,124,2,122,138,96,96,96,96,252, + 96,96,96,102,60,2,119,135,198,198,198,198,198,206,118,2, + 119,135,198,198,198,198,108,108,56,2,119,135,198,198,198,214, + 214,254,108,2,119,135,198,198,108,56,108,198,198,0,121,137, + 198,198,198,198,206,118,6,198,124,2,119,135,254,12,24,48, + 96,192,254,17,107,139,60,96,96,96,48,224,48,96,96,96, + 60,50,42,138,192,192,192,192,192,192,192,192,192,192,17,107, + 139,240,24,24,24,48,28,48,24,24,24,240,8,115,131,114, + 254,156,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13[2152] U8G_SECTION(".progmem.u8g_font_8x13") = { + 1,8,13,0,254,9,1,97,2,205,32,255,254,11,254,9, + 254,13,0,128,50,25,137,128,128,128,128,128,128,128,0,128, + 40,67,131,144,144,144,19,103,135,72,72,252,72,252,72,72, + 18,89,137,32,120,160,160,112,40,40,240,32,18,105,137,68, + 164,72,16,16,32,72,84,136,18,103,135,96,144,144,96,148, + 136,116,56,19,131,128,128,128,50,57,137,32,64,64,128,128, + 128,64,64,32,34,57,137,128,64,64,32,32,32,64,64,128, + 22,101,133,72,48,252,48,72,20,85,133,32,32,248,32,32, + 17,67,131,112,96,128,22,81,129,248,33,51,131,64,224,64, + 2,121,137,2,2,4,8,16,32,64,128,128,18,105,137,48, + 72,132,132,132,132,132,72,48,18,89,137,32,96,160,32,32, + 32,32,32,248,18,105,137,120,132,132,4,8,48,64,128,252, + 18,105,137,252,4,8,16,56,4,4,132,120,18,105,137,8, + 24,40,72,136,136,252,8,8,18,105,137,252,128,128,184,196, + 4,4,132,120,18,105,137,56,64,128,128,184,196,132,132,120, + 18,105,137,252,4,8,16,16,32,32,64,64,18,105,137,120, + 132,132,132,120,132,132,132,120,18,105,137,120,132,132,140,116, + 4,4,8,112,33,56,136,64,224,64,0,0,64,224,64,17, + 72,136,32,112,32,0,0,112,96,128,34,89,137,8,16,32, + 64,128,64,32,16,8,20,100,132,252,0,0,252,18,89,137, + 128,64,32,16,8,16,32,64,128,18,105,137,120,132,132,4, + 8,16,16,0,16,18,105,137,120,132,132,156,164,172,148,128, + 120,18,105,137,48,72,132,132,132,252,132,132,132,18,105,137, + 240,136,132,136,240,136,132,136,240,18,105,137,120,132,128,128, + 128,128,128,132,120,18,105,137,240,136,132,132,132,132,132,136, + 240,18,105,137,252,128,128,128,240,128,128,128,252,18,105,137, + 252,128,128,128,240,128,128,128,128,18,105,137,120,132,128,128, + 128,156,132,140,116,18,105,137,132,132,132,132,252,132,132,132, + 132,18,89,137,248,32,32,32,32,32,32,32,248,18,121,137, + 62,8,8,8,8,8,8,136,112,18,105,137,132,136,144,160, + 192,160,144,136,132,18,105,137,128,128,128,128,128,128,128,128, + 252,2,121,137,130,130,198,170,146,146,130,130,130,18,105,137, + 132,132,196,164,148,140,132,132,132,18,105,137,120,132,132,132, + 132,132,132,132,120,18,105,137,248,132,132,132,248,128,128,128, + 128,17,106,138,120,132,132,132,132,132,164,148,120,4,18,105, + 137,248,132,132,132,248,160,144,136,132,18,105,137,120,132,128, + 128,120,4,4,132,120,2,121,137,254,16,16,16,16,16,16, + 16,16,18,105,137,132,132,132,132,132,132,132,132,120,2,121, + 137,130,130,68,68,68,40,40,40,16,2,121,137,130,130,130, + 130,146,146,146,170,68,2,121,137,130,130,68,40,16,40,68, + 130,130,2,121,137,130,130,68,40,16,16,16,16,16,18,105, + 137,252,4,8,16,32,64,128,128,252,34,73,137,240,128,128, + 128,128,128,128,128,240,2,121,137,128,128,64,32,16,8,4, + 2,2,18,73,137,240,16,16,16,16,16,16,16,240,24,83, + 131,32,80,136,1,113,129,254,58,34,130,128,64,18,102,134, + 120,4,124,132,140,116,18,105,137,128,128,128,184,196,132,132, + 196,184,18,102,134,120,132,128,128,132,120,18,105,137,4,4, + 4,116,140,132,132,140,116,18,102,134,120,132,252,128,132,120, + 18,105,137,56,68,64,64,248,64,64,64,64,16,104,136,116, + 136,136,112,128,120,132,120,18,105,137,128,128,128,184,196,132, + 132,132,132,18,88,136,32,0,96,32,32,32,32,248,16,90, + 138,8,0,24,8,8,8,8,136,136,112,18,105,137,128,128, + 128,136,144,224,144,136,132,18,89,137,96,32,32,32,32,32, + 32,32,248,2,118,134,236,146,146,146,146,130,18,102,134,184, + 196,132,132,132,132,18,102,134,120,132,132,132,132,120,16,104, + 136,184,196,132,196,184,128,128,128,16,104,136,116,140,132,140, + 116,4,4,4,18,102,134,184,68,64,64,64,64,18,102,134, + 120,132,96,24,132,120,18,104,136,64,64,248,64,64,64,68, + 56,18,102,134,136,136,136,136,136,116,18,86,134,136,136,136, + 80,80,32,2,118,134,130,130,146,146,170,68,18,102,134,132, + 72,48,48,72,132,16,104,136,132,132,132,140,116,4,132,120, + 18,102,134,252,8,16,32,64,252,34,89,137,56,64,64,32, + 192,32,64,64,56,50,25,137,128,128,128,128,128,128,128,128, + 128,18,89,137,224,16,16,32,24,32,16,16,224,24,83,131, + 72,168,144,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,13,0,128,50,25,137,128,0,128,128,128,128, + 128,128,128,19,88,136,32,112,168,160,160,168,112,32,2,121, + 137,28,34,32,112,32,32,32,98,220,19,102,134,132,120,72, + 72,120,132,2,121,137,130,130,68,40,124,16,124,16,16,50, + 25,137,128,128,128,128,0,128,128,128,128,34,74,138,96,144, + 128,96,144,144,96,16,144,96,42,66,130,144,144,3,121,137, + 56,68,146,170,162,170,146,68,56,20,87,135,112,8,120,136, + 120,0,248,3,119,135,18,36,72,144,72,36,18,19,100,132, + 252,4,4,4,38,65,129,240,3,121,137,56,68,146,170,170, + 178,170,68,56,26,97,129,252,39,68,132,96,144,144,96,19, + 87,135,32,32,248,32,32,0,248,22,70,134,96,144,16,96, + 128,240,22,70,134,96,144,32,16,144,96,58,34,130,64,128, + 17,103,135,132,132,132,132,204,180,128,18,105,137,124,232,232, + 232,104,40,40,40,40,54,33,129,192,48,34,130,64,192,22, + 54,134,64,192,64,64,64,224,21,70,134,96,144,144,96,0, + 240,3,119,135,144,72,36,18,36,72,144,2,122,138,64,192, + 64,64,66,230,10,18,26,6,2,122,138,64,192,64,64,76, + 242,2,12,16,30,2,122,138,96,144,32,16,146,102,10,18, + 26,6,18,105,137,32,0,32,32,64,128,132,132,120,18,106, + 138,32,16,0,48,72,132,132,252,132,132,18,106,138,16,32, + 0,48,72,132,132,252,132,132,18,106,138,48,72,0,48,72, + 132,132,252,132,132,18,106,138,100,152,0,48,72,132,132,252, + 132,132,18,106,138,72,72,0,48,72,132,132,252,132,132,18, + 106,138,48,72,48,48,72,132,132,252,132,132,2,121,137,110, + 144,144,144,156,240,144,144,158,16,107,139,120,132,128,128,128, + 128,128,132,120,16,32,18,106,138,32,16,0,252,128,128,240, + 128,128,252,18,106,138,16,32,0,252,128,128,240,128,128,252, + 18,106,138,48,72,0,252,128,128,240,128,128,252,18,106,138, + 72,72,0,252,128,128,240,128,128,252,18,90,138,64,32,0, + 248,32,32,32,32,32,248,18,90,138,16,32,0,248,32,32, + 32,32,32,248,18,90,138,48,72,0,248,32,32,32,32,32, + 248,18,90,138,136,136,0,248,32,32,32,32,32,248,2,121, + 137,120,68,66,66,226,66,66,68,120,2,122,138,100,152,0, + 130,194,162,146,138,134,130,2,122,138,32,16,0,124,130,130, + 130,130,130,124,2,122,138,8,16,0,124,130,130,130,130,130, + 124,2,122,138,24,36,0,124,130,130,130,130,130,124,2,122, + 138,100,152,0,124,130,130,130,130,130,124,2,122,138,68,68, + 0,124,130,130,130,130,130,124,19,102,134,132,72,48,48,72, + 132,17,107,139,4,120,140,148,148,164,164,164,196,120,128,18, + 106,138,64,32,0,132,132,132,132,132,132,120,18,106,138,16, + 32,0,132,132,132,132,132,132,120,18,106,138,48,72,0,132, + 132,132,132,132,132,120,18,106,138,72,72,0,132,132,132,132, + 132,132,120,18,90,138,16,32,0,136,136,80,32,32,32,32, + 18,105,137,128,248,132,132,132,248,128,128,128,18,105,137,112, + 136,136,144,160,152,132,132,184,18,105,137,32,16,0,120,4, + 124,132,140,116,18,105,137,8,16,0,120,4,124,132,140,116, + 18,105,137,48,72,0,120,4,124,132,140,116,18,105,137,100, + 152,0,120,4,124,132,140,116,18,105,137,72,72,0,120,4, + 124,132,140,116,18,106,138,48,72,48,0,120,4,124,132,140, + 116,2,118,134,108,18,124,144,146,108,16,104,136,120,132,128, + 128,132,120,16,32,18,105,137,32,16,0,120,132,252,128,132, + 120,18,105,137,16,32,0,120,132,252,128,132,120,18,105,137, + 48,72,0,120,132,252,128,132,120,18,105,137,72,72,0,120, + 132,252,128,132,120,18,89,137,64,32,0,96,32,32,32,32, + 248,18,89,137,32,64,0,96,32,32,32,32,248,18,89,137, + 96,144,0,96,32,32,32,32,248,18,89,137,144,144,0,96, + 32,32,32,32,248,18,106,138,72,48,80,8,120,132,132,132, + 132,120,18,105,137,100,152,0,184,196,132,132,132,132,18,105, + 137,64,32,0,120,132,132,132,132,120,18,105,137,16,32,0, + 120,132,132,132,132,120,18,105,137,48,72,0,120,132,132,132, + 132,120,18,105,137,100,152,0,120,132,132,132,132,120,18,105, + 137,72,72,0,120,132,132,132,132,120,19,87,135,32,32,0, + 248,0,32,32,17,104,136,4,120,140,148,164,196,120,128,18, + 105,137,64,32,0,136,136,136,136,136,116,18,105,137,16,32, + 0,136,136,136,136,136,116,18,105,137,48,72,0,136,136,136, + 136,136,116,18,105,137,80,80,0,136,136,136,136,136,116,16, + 107,139,16,32,0,132,132,132,140,116,4,132,120,16,106,138, + 128,128,184,196,132,132,196,184,128,128,16,107,139,72,72,0, + 132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 8 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13O[2153] U8G_SECTION(".progmem.u8g_font_8x13O") = { + 1,8,13,0,254,9,1,98,2,206,32,255,254,11,254,9, + 254,13,0,128,50,41,137,64,64,64,64,128,128,128,0,128, + 40,67,131,144,144,144,3,119,135,36,36,126,36,252,72,72, + 18,105,137,16,60,80,80,56,40,40,240,32,2,121,137,34, + 82,36,8,16,32,72,148,136,18,104,136,24,36,40,48,84, + 136,152,100,56,19,131,128,128,128,34,73,137,16,32,64,64, + 128,128,64,64,32,34,73,137,64,32,32,16,16,32,32,64, + 128,20,101,133,72,48,252,96,144,20,85,133,32,32,248,64, + 64,33,67,131,112,96,128,22,81,129,248,33,51,131,64,224, + 64,2,137,137,1,1,2,4,24,32,64,128,128,2,121,137, + 24,36,66,66,66,132,132,72,48,18,89,137,16,48,80,16, + 16,32,32,32,248,2,121,137,60,66,66,2,12,48,64,128, + 252,2,121,137,126,2,4,8,24,4,4,132,120,18,105,137, + 4,12,20,36,72,136,252,16,16,2,121,137,62,32,32,92, + 98,2,4,132,120,2,121,137,28,34,64,64,120,132,132,132, + 120,18,105,137,252,4,8,16,32,64,64,128,128,2,121,137, + 60,66,66,66,124,132,132,132,120,18,105,137,120,132,132,140, + 116,8,8,16,224,33,72,136,32,112,32,0,0,64,224,64, + 17,88,136,16,56,16,0,0,112,96,128,18,89,137,8,16, + 32,64,128,128,64,32,16,4,116,132,126,0,0,252,18,89, + 137,64,32,16,8,8,16,32,64,128,18,105,137,56,68,132, + 8,16,32,32,0,32,2,121,137,60,66,66,78,82,166,152, + 128,120,2,121,137,24,36,66,66,66,252,132,132,132,2,121, + 137,120,68,66,68,120,136,132,136,240,2,121,137,60,66,64, + 64,64,128,128,132,120,2,121,137,120,68,66,66,66,132,132, + 136,240,2,121,137,126,64,64,64,120,128,128,128,252,2,121, + 137,126,64,64,64,120,128,128,128,128,2,121,137,60,66,64, + 64,64,156,132,140,116,2,121,137,66,66,66,66,124,132,132, + 132,132,18,105,137,124,16,16,16,16,32,32,32,248,2,121, + 137,30,4,4,4,4,8,8,136,112,2,121,137,66,68,72, + 80,96,160,144,136,132,18,105,137,64,64,64,64,64,128,128, + 128,252,2,137,137,65,65,99,85,73,130,130,130,130,2,121, + 137,66,66,98,82,74,140,132,132,132,2,121,137,60,66,66, + 66,66,132,132,132,120,2,121,137,124,66,66,66,124,128,128, + 128,128,1,122,138,60,66,66,66,132,132,164,148,120,4,2, + 121,137,124,66,66,66,124,160,144,136,132,2,121,137,60,66, + 64,64,56,4,4,132,120,2,121,137,254,16,16,16,16,32, + 32,32,32,2,121,137,66,66,66,66,132,132,132,132,120,2, + 121,137,130,130,132,68,72,72,80,80,32,2,137,137,65,65, + 65,65,73,146,146,170,68,2,137,137,65,65,34,20,24,40, + 68,130,130,2,121,137,130,130,68,40,16,16,32,32,32,2, + 121,137,126,2,4,8,16,32,64,128,252,18,89,137,120,64, + 64,64,64,128,128,128,240,18,105,137,128,128,64,32,16,16, + 8,4,4,18,89,137,120,8,8,8,8,16,16,16,240,24, + 83,131,32,80,136,1,113,129,254,58,34,130,128,64,2,118, + 134,60,2,124,132,140,116,2,121,137,64,64,64,92,98,66, + 132,196,184,2,118,134,60,66,128,128,132,120,2,121,137,2, + 2,2,58,68,132,132,140,116,2,118,134,60,66,124,128,132, + 120,18,105,137,56,68,64,64,248,64,128,128,128,0,120,136, + 58,68,136,112,128,120,132,120,2,121,137,32,32,64,92,98, + 66,132,132,132,18,88,136,16,0,48,16,16,32,32,248,16, + 106,138,4,0,12,4,4,8,8,136,136,112,18,105,137,64, + 64,64,68,88,96,144,136,132,18,89,137,48,16,16,16,16, + 32,32,32,248,2,134,134,118,73,73,146,146,130,2,118,134, + 92,98,66,132,132,132,2,118,134,60,66,66,132,132,120,0, + 136,136,46,49,33,98,92,64,128,128,0,120,136,58,70,132, + 140,116,4,8,8,18,102,134,184,68,64,128,128,128,2,118, + 134,60,66,32,24,132,120,18,88,136,64,64,248,64,128,128, + 136,112,18,102,134,68,68,68,136,136,116,18,86,134,136,136, + 144,160,160,64,2,134,134,65,65,146,146,170,68,2,118,134, + 66,36,24,48,72,132,0,120,136,66,66,132,140,116,4,132, + 120,2,118,134,126,4,24,32,64,252,18,89,137,56,64,64, + 32,192,64,128,128,112,50,41,137,64,64,64,64,64,128,128, + 128,128,18,89,137,112,8,8,16,24,32,16,16,224,24,83, + 131,72,168,144,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,13,0,128,50,41,137,64,0,64,64,64, + 128,128,128,128,19,104,136,16,56,84,80,160,168,112,32,2, + 137,137,14,17,16,56,16,32,32,98,220,3,118,134,66,60, + 36,72,120,132,2,121,137,130,130,68,40,124,16,248,32,32, + 50,41,137,64,64,64,64,0,128,128,128,128,18,90,138,48, + 72,64,48,72,144,96,16,144,96,42,66,130,144,144,2,137, + 137,28,34,73,85,162,170,146,68,56,20,103,135,56,4,120, + 136,120,0,248,3,119,135,18,36,72,144,144,72,36,19,100, + 132,252,4,8,8,38,65,129,240,2,137,137,28,34,89,85, + 170,178,170,68,56,26,97,129,252,39,68,132,96,144,144,96, + 19,103,135,16,16,124,32,32,0,248,22,86,134,48,72,8, + 112,128,240,22,86,134,112,8,48,16,144,96,58,34,130,64, + 128,1,119,135,66,66,66,132,204,180,128,18,105,137,124,232, + 232,232,104,80,80,80,80,54,33,129,192,48,34,130,64,192, + 38,54,134,32,96,32,64,64,224,21,102,134,24,36,72,48, + 0,240,3,119,135,72,36,18,18,36,72,144,18,106,138,32, + 96,32,64,68,236,20,40,60,8,2,122,138,32,96,32,64, + 76,242,4,24,32,60,18,106,138,112,8,48,16,148,108,20, + 40,60,8,18,105,137,16,0,16,16,32,64,132,136,112,2, + 122,138,16,8,0,24,36,66,66,124,132,132,2,122,138,8, + 16,0,24,36,66,66,124,132,132,2,122,138,24,36,0,24, + 36,66,66,124,132,132,2,122,138,50,76,0,24,36,66,66, + 124,132,132,2,122,138,36,36,0,24,36,66,66,124,132,132, + 2,122,138,24,36,24,24,36,66,66,124,132,132,2,137,137, + 55,72,72,72,78,112,144,144,158,0,123,139,60,66,64,64, + 64,128,128,132,120,16,32,2,122,138,16,8,0,126,64,64, + 112,128,128,252,2,122,138,8,16,0,126,64,64,112,128,128, + 252,2,122,138,24,36,0,126,64,64,112,128,128,252,2,122, + 138,36,36,0,126,64,64,112,128,128,252,18,106,138,32,16, + 0,124,16,16,32,32,32,248,18,106,138,8,16,0,124,16, + 16,32,32,32,248,18,106,138,24,36,0,124,16,16,32,32, + 32,248,18,106,138,68,68,0,124,16,16,32,32,32,248,2, + 121,137,120,68,66,66,226,68,132,136,240,2,138,138,50,76, + 0,65,97,81,146,138,134,130,2,138,138,16,8,0,62,65, + 65,130,130,130,124,2,138,138,4,8,0,62,65,65,130,130, + 130,124,2,138,138,12,18,0,62,65,65,130,130,130,124,2, + 138,138,50,76,0,62,65,65,130,130,130,124,2,138,138,34, + 34,0,62,65,65,130,130,130,124,3,118,134,66,36,24,48, + 72,132,1,123,139,2,60,70,74,74,82,164,164,196,120,128, + 2,122,138,32,16,0,66,66,66,132,132,132,120,2,122,138, + 8,16,0,66,66,66,132,132,132,120,2,122,138,24,36,0, + 66,66,66,132,132,132,120,2,122,138,36,36,0,66,66,66, + 132,132,132,120,18,90,138,16,32,0,136,136,80,96,64,64, + 64,2,121,137,64,124,66,66,66,124,128,128,128,18,105,137, + 56,68,68,72,80,136,132,132,184,2,121,137,16,8,0,60, + 2,124,132,140,116,2,121,137,4,8,0,60,2,124,132,140, + 116,2,121,137,24,36,0,60,2,124,132,140,116,2,121,137, + 50,76,0,60,2,124,132,140,116,2,121,137,36,36,0,60, + 2,124,132,140,116,2,122,138,24,36,24,0,60,2,124,132, + 140,116,2,134,134,54,9,126,144,146,108,0,120,136,60,66, + 128,128,132,120,16,32,2,121,137,16,8,0,60,66,124,128, + 132,120,2,121,137,8,16,0,60,66,124,128,132,120,2,121, + 137,24,36,0,60,66,124,128,132,120,2,121,137,36,36,0, + 60,66,124,128,132,120,18,89,137,32,16,0,48,16,16,32, + 32,248,18,89,137,16,32,0,48,16,16,32,32,248,18,89, + 137,48,72,0,48,16,16,32,32,248,18,89,137,72,72,0, + 48,16,16,32,32,248,2,122,138,36,24,40,4,60,66,66, + 132,132,120,2,121,137,50,76,0,92,98,66,132,132,132,2, + 121,137,32,16,0,60,66,66,132,132,120,2,121,137,8,16, + 0,60,66,66,132,132,120,2,121,137,24,36,0,60,66,66, + 132,132,120,2,121,137,50,76,0,60,66,66,132,132,120,2, + 121,137,36,36,0,60,66,66,132,132,120,19,103,135,16,16, + 0,252,0,32,32,1,120,136,2,60,70,90,164,196,120,128, + 18,105,137,32,16,0,68,68,68,136,136,116,18,105,137,8, + 16,0,68,68,68,136,136,116,18,105,137,24,36,0,68,68, + 68,136,136,116,18,105,137,40,40,0,68,68,68,136,136,116, + 0,123,139,8,16,0,66,66,132,140,116,4,132,120,0,122, + 138,64,64,92,98,66,132,196,184,128,128,0,123,139,36,36, + 0,66,66,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 8 h=10 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13Or[1029] U8G_SECTION(".progmem.u8g_font_8x13Or") = { + 1,8,13,0,254,9,1,98,2,206,32,127,254,11,254,9, + 254,13,0,128,50,41,137,64,64,64,64,128,128,128,0,128, + 40,67,131,144,144,144,3,119,135,36,36,126,36,252,72,72, + 18,105,137,16,60,80,80,56,40,40,240,32,2,121,137,34, + 82,36,8,16,32,72,148,136,18,104,136,24,36,40,48,84, + 136,152,100,56,19,131,128,128,128,34,73,137,16,32,64,64, + 128,128,64,64,32,34,73,137,64,32,32,16,16,32,32,64, + 128,20,101,133,72,48,252,96,144,20,85,133,32,32,248,64, + 64,33,67,131,112,96,128,22,81,129,248,33,51,131,64,224, + 64,2,137,137,1,1,2,4,24,32,64,128,128,2,121,137, + 24,36,66,66,66,132,132,72,48,18,89,137,16,48,80,16, + 16,32,32,32,248,2,121,137,60,66,66,2,12,48,64,128, + 252,2,121,137,126,2,4,8,24,4,4,132,120,18,105,137, + 4,12,20,36,72,136,252,16,16,2,121,137,62,32,32,92, + 98,2,4,132,120,2,121,137,28,34,64,64,120,132,132,132, + 120,18,105,137,252,4,8,16,32,64,64,128,128,2,121,137, + 60,66,66,66,124,132,132,132,120,18,105,137,120,132,132,140, + 116,8,8,16,224,33,72,136,32,112,32,0,0,64,224,64, + 17,88,136,16,56,16,0,0,112,96,128,18,89,137,8,16, + 32,64,128,128,64,32,16,4,116,132,126,0,0,252,18,89, + 137,64,32,16,8,8,16,32,64,128,18,105,137,56,68,132, + 8,16,32,32,0,32,2,121,137,60,66,66,78,82,166,152, + 128,120,2,121,137,24,36,66,66,66,252,132,132,132,2,121, + 137,120,68,66,68,120,136,132,136,240,2,121,137,60,66,64, + 64,64,128,128,132,120,2,121,137,120,68,66,66,66,132,132, + 136,240,2,121,137,126,64,64,64,120,128,128,128,252,2,121, + 137,126,64,64,64,120,128,128,128,128,2,121,137,60,66,64, + 64,64,156,132,140,116,2,121,137,66,66,66,66,124,132,132, + 132,132,18,105,137,124,16,16,16,16,32,32,32,248,2,121, + 137,30,4,4,4,4,8,8,136,112,2,121,137,66,68,72, + 80,96,160,144,136,132,18,105,137,64,64,64,64,64,128,128, + 128,252,2,137,137,65,65,99,85,73,130,130,130,130,2,121, + 137,66,66,98,82,74,140,132,132,132,2,121,137,60,66,66, + 66,66,132,132,132,120,2,121,137,124,66,66,66,124,128,128, + 128,128,1,122,138,60,66,66,66,132,132,164,148,120,4,2, + 121,137,124,66,66,66,124,160,144,136,132,2,121,137,60,66, + 64,64,56,4,4,132,120,2,121,137,254,16,16,16,16,32, + 32,32,32,2,121,137,66,66,66,66,132,132,132,132,120,2, + 121,137,130,130,132,68,72,72,80,80,32,2,137,137,65,65, + 65,65,73,146,146,170,68,2,137,137,65,65,34,20,24,40, + 68,130,130,2,121,137,130,130,68,40,16,16,32,32,32,2, + 121,137,126,2,4,8,16,32,64,128,252,18,89,137,120,64, + 64,64,64,128,128,128,240,18,105,137,128,128,64,32,16,16, + 8,4,4,18,89,137,120,8,8,8,8,16,16,16,240,24, + 83,131,32,80,136,1,113,129,254,58,34,130,128,64,2,118, + 134,60,2,124,132,140,116,2,121,137,64,64,64,92,98,66, + 132,196,184,2,118,134,60,66,128,128,132,120,2,121,137,2, + 2,2,58,68,132,132,140,116,2,118,134,60,66,124,128,132, + 120,18,105,137,56,68,64,64,248,64,128,128,128,0,120,136, + 58,68,136,112,128,120,132,120,2,121,137,32,32,64,92,98, + 66,132,132,132,18,88,136,16,0,48,16,16,32,32,248,16, + 106,138,4,0,12,4,4,8,8,136,136,112,18,105,137,64, + 64,64,68,88,96,144,136,132,18,89,137,48,16,16,16,16, + 32,32,32,248,2,134,134,118,73,73,146,146,130,2,118,134, + 92,98,66,132,132,132,2,118,134,60,66,66,132,132,120,0, + 136,136,46,49,33,98,92,64,128,128,0,120,136,58,70,132, + 140,116,4,8,8,18,102,134,184,68,64,128,128,128,2,118, + 134,60,66,32,24,132,120,18,88,136,64,64,248,64,128,128, + 136,112,18,102,134,68,68,68,136,136,116,18,86,134,136,136, + 144,160,160,64,2,134,134,65,65,146,146,170,68,2,118,134, + 66,36,24,48,72,132,0,120,136,66,66,132,140,116,4,132, + 120,2,118,134,126,4,24,32,64,252,18,89,137,56,64,64, + 32,192,64,128,128,112,50,41,137,64,64,64,64,64,128,128, + 128,128,18,89,137,112,8,8,16,24,32,16,16,224,24,83, + 131,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=10 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13r[1028] U8G_SECTION(".progmem.u8g_font_8x13r") = { + 1,8,13,0,254,9,1,97,2,205,32,127,254,11,254,9, + 254,13,0,128,50,25,137,128,128,128,128,128,128,128,0,128, + 40,67,131,144,144,144,19,103,135,72,72,252,72,252,72,72, + 18,89,137,32,120,160,160,112,40,40,240,32,18,105,137,68, + 164,72,16,16,32,72,84,136,18,103,135,96,144,144,96,148, + 136,116,56,19,131,128,128,128,50,57,137,32,64,64,128,128, + 128,64,64,32,34,57,137,128,64,64,32,32,32,64,64,128, + 22,101,133,72,48,252,48,72,20,85,133,32,32,248,32,32, + 17,67,131,112,96,128,22,81,129,248,33,51,131,64,224,64, + 2,121,137,2,2,4,8,16,32,64,128,128,18,105,137,48, + 72,132,132,132,132,132,72,48,18,89,137,32,96,160,32,32, + 32,32,32,248,18,105,137,120,132,132,4,8,48,64,128,252, + 18,105,137,252,4,8,16,56,4,4,132,120,18,105,137,8, + 24,40,72,136,136,252,8,8,18,105,137,252,128,128,184,196, + 4,4,132,120,18,105,137,56,64,128,128,184,196,132,132,120, + 18,105,137,252,4,8,16,16,32,32,64,64,18,105,137,120, + 132,132,132,120,132,132,132,120,18,105,137,120,132,132,140,116, + 4,4,8,112,33,56,136,64,224,64,0,0,64,224,64,17, + 72,136,32,112,32,0,0,112,96,128,34,89,137,8,16,32, + 64,128,64,32,16,8,20,100,132,252,0,0,252,18,89,137, + 128,64,32,16,8,16,32,64,128,18,105,137,120,132,132,4, + 8,16,16,0,16,18,105,137,120,132,132,156,164,172,148,128, + 120,18,105,137,48,72,132,132,132,252,132,132,132,18,105,137, + 240,136,132,136,240,136,132,136,240,18,105,137,120,132,128,128, + 128,128,128,132,120,18,105,137,240,136,132,132,132,132,132,136, + 240,18,105,137,252,128,128,128,240,128,128,128,252,18,105,137, + 252,128,128,128,240,128,128,128,128,18,105,137,120,132,128,128, + 128,156,132,140,116,18,105,137,132,132,132,132,252,132,132,132, + 132,18,89,137,248,32,32,32,32,32,32,32,248,18,121,137, + 62,8,8,8,8,8,8,136,112,18,105,137,132,136,144,160, + 192,160,144,136,132,18,105,137,128,128,128,128,128,128,128,128, + 252,2,121,137,130,130,198,170,146,146,130,130,130,18,105,137, + 132,132,196,164,148,140,132,132,132,18,105,137,120,132,132,132, + 132,132,132,132,120,18,105,137,248,132,132,132,248,128,128,128, + 128,17,106,138,120,132,132,132,132,132,164,148,120,4,18,105, + 137,248,132,132,132,248,160,144,136,132,18,105,137,120,132,128, + 128,120,4,4,132,120,2,121,137,254,16,16,16,16,16,16, + 16,16,18,105,137,132,132,132,132,132,132,132,132,120,2,121, + 137,130,130,68,68,68,40,40,40,16,2,121,137,130,130,130, + 130,146,146,146,170,68,2,121,137,130,130,68,40,16,40,68, + 130,130,2,121,137,130,130,68,40,16,16,16,16,16,18,105, + 137,252,4,8,16,32,64,128,128,252,34,73,137,240,128,128, + 128,128,128,128,128,240,2,121,137,128,128,64,32,16,8,4, + 2,2,18,73,137,240,16,16,16,16,16,16,16,240,24,83, + 131,32,80,136,1,113,129,254,58,34,130,128,64,18,102,134, + 120,4,124,132,140,116,18,105,137,128,128,128,184,196,132,132, + 196,184,18,102,134,120,132,128,128,132,120,18,105,137,4,4, + 4,116,140,132,132,140,116,18,102,134,120,132,252,128,132,120, + 18,105,137,56,68,64,64,248,64,64,64,64,16,104,136,116, + 136,136,112,128,120,132,120,18,105,137,128,128,128,184,196,132, + 132,132,132,18,88,136,32,0,96,32,32,32,32,248,16,90, + 138,8,0,24,8,8,8,8,136,136,112,18,105,137,128,128, + 128,136,144,224,144,136,132,18,89,137,96,32,32,32,32,32, + 32,32,248,2,118,134,236,146,146,146,146,130,18,102,134,184, + 196,132,132,132,132,18,102,134,120,132,132,132,132,120,16,104, + 136,184,196,132,196,184,128,128,128,16,104,136,116,140,132,140, + 116,4,4,4,18,102,134,184,68,64,64,64,64,18,102,134, + 120,132,96,24,132,120,18,104,136,64,64,248,64,64,64,68, + 56,18,102,134,136,136,136,136,136,116,18,86,134,136,136,136, + 80,80,32,2,118,134,130,130,146,146,170,68,18,102,134,132, + 72,48,48,72,132,16,104,136,132,132,132,140,116,4,132,120, + 18,102,134,252,8,16,32,64,252,34,89,137,56,64,64,32, + 192,32,64,64,56,50,25,137,128,128,128,128,128,128,128,128, + 128,18,89,137,224,16,16,32,24,32,16,16,224,24,83,131, + 72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 4, '1' Height: 10 + Calculated Max Values w= 9 h=15 x= 8 y=10 dx= 9 dy= 0 ascent=12 len=30 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 4 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[3804] U8G_SECTION(".progmem.u8g_font_9x15_67_75") = { + 0,9,15,0,253,4,1,255,4,34,32,255,0,12,253,10, + 0,8,7,7,9,0,1,72,36,18,255,18,36,72,7,10, + 10,9,1,0,16,16,16,146,84,56,146,84,56,16,7,7, + 7,9,1,1,16,34,68,248,68,34,16,7,7,7,9,1, + 1,16,136,68,62,68,136,16,7,7,7,9,1,1,16,34, + 66,254,66,34,16,7,10,10,9,1,0,16,56,84,146,16, + 16,16,16,16,124,7,7,7,9,1,1,16,136,132,254,132, + 136,16,7,10,10,9,1,0,124,16,16,16,16,16,146,84, + 56,16,7,10,10,9,1,0,16,56,84,146,16,146,84,56, + 16,254,8,7,7,9,0,1,16,34,65,254,64,32,16,8, + 7,7,9,0,1,8,68,130,127,2,4,8,8,7,7,9, + 0,1,16,34,69,254,68,36,16,8,7,7,9,0,1,8, + 68,162,127,34,36,8,9,5,10,9,0,2,34,0,73,0, + 247,128,65,0,34,0,9,5,10,9,0,2,34,0,73,0, + 255,128,73,0,34,0,5,10,10,9,2,0,32,64,72,184, + 200,16,16,160,120,32,6,10,10,9,1,0,32,64,252,68, + 36,4,4,4,4,4,7,10,10,9,1,0,8,4,254,132, + 136,128,128,128,128,128,6,10,10,9,1,0,4,4,4,4, + 4,36,68,252,64,32,7,10,10,9,1,0,128,128,128,128, + 128,136,132,254,4,8,7,8,8,9,1,0,248,8,8,8, + 8,42,28,8,7,8,8,9,1,1,2,2,2,34,66,254, + 64,32,9,7,14,9,0,2,14,0,17,0,32,128,32,128, + 168,128,112,0,32,0,9,7,14,9,0,2,56,0,68,0, + 130,0,130,0,138,128,7,0,2,0,7,10,10,9,1,0, + 254,64,112,96,80,8,8,4,2,2,7,9,9,9,1,0, + 144,160,254,160,146,10,254,10,18,9,7,14,9,0,1,50, + 0,71,0,138,128,130,0,130,0,68,0,56,0,9,7,14, + 9,0,1,38,0,113,0,168,128,32,128,32,128,17,0,14, + 0,7,4,4,9,1,3,16,32,64,254,7,4,4,9,1, + 0,254,64,32,16,4,10,10,9,4,0,128,192,160,144,128, + 128,128,128,128,128,4,10,10,9,1,0,16,48,80,144,16, + 16,16,16,16,16,7,4,4,9,1,3,16,8,4,254,7, + 4,4,9,1,0,254,4,8,16,4,10,10,9,4,0,128, + 128,128,128,128,128,144,160,192,128,4,10,10,9,1,0,16, + 16,16,16,16,16,144,80,48,16,7,9,9,9,1,0,8, + 4,254,4,40,64,254,64,32,9,10,20,9,0,0,34,0, + 114,0,170,0,34,0,34,0,34,0,34,0,42,128,39,0, + 34,0,7,9,9,9,1,0,32,64,254,64,40,4,254,4, + 8,7,10,10,9,1,0,32,64,254,64,32,32,64,254,64, + 32,9,10,20,9,0,0,34,0,119,0,170,128,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,7,10,10,9,1, + 0,8,4,254,4,8,8,4,254,4,8,9,10,20,9,0, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,170, + 128,119,0,34,0,7,7,7,9,1,1,32,64,254,0,254, + 4,8,7,7,7,9,1,1,8,4,254,0,254,64,32,9, + 7,14,9,0,1,16,0,33,0,127,128,130,0,127,128,36, + 0,16,0,9,7,14,9,0,1,20,0,34,0,127,0,136, + 128,127,0,34,0,20,0,9,7,14,9,0,1,4,0,18, + 0,255,0,32,128,255,0,66,0,4,0,9,7,14,9,0, + 1,16,0,32,0,127,128,128,0,127,128,32,0,16,0,7, + 10,10,9,1,0,16,40,108,170,40,40,40,40,40,40,9, + 7,14,9,0,1,4,0,2,0,255,0,0,128,255,0,2, + 0,4,0,7,10,10,9,1,0,40,40,40,40,40,40,170, + 108,40,16,9,7,14,9,0,1,20,0,34,0,127,0,128, + 128,127,0,34,0,20,0,7,10,10,9,1,0,16,40,108, + 170,40,40,170,108,40,16,7,7,7,9,1,1,252,144,136, + 196,162,144,8,7,7,7,9,1,1,126,18,34,70,138,18, + 32,7,7,7,9,1,1,32,18,138,70,34,18,126,7,7, + 7,9,1,1,8,144,162,196,136,144,252,9,9,18,9,0, + 0,8,0,16,0,63,128,64,0,255,128,64,0,63,128,16, + 0,8,0,9,9,18,9,0,0,8,0,4,0,254,0,1, + 0,255,128,1,0,254,0,4,0,8,0,8,7,7,9,0, + 1,16,32,72,245,66,32,16,8,7,7,9,0,1,8,4, + 18,175,66,4,8,7,10,10,9,1,0,16,56,84,146,16, + 124,16,124,16,16,7,10,10,9,1,0,16,16,124,16,124, + 16,146,84,56,16,7,7,7,9,1,1,16,32,64,182,64, + 32,16,7,10,10,9,1,0,16,40,84,146,0,16,16,0, + 16,16,7,7,7,9,1,1,16,8,4,218,4,8,16,7, + 10,10,9,1,0,16,16,0,16,16,0,146,84,40,16,7, + 5,5,9,1,2,144,160,254,160,144,7,5,5,9,1,2, + 18,10,254,10,18,9,7,14,9,0,1,16,0,48,0,95, + 128,128,128,95,128,48,0,16,0,7,10,10,9,1,0,16, + 40,68,238,40,40,40,40,40,56,9,7,14,9,0,1,4, + 0,6,0,253,0,128,128,253,0,6,0,4,0,7,10,10, + 9,1,0,56,40,40,40,40,40,238,68,40,16,7,11,11, + 9,1,0,16,40,68,238,40,40,56,0,56,40,56,7,11, + 11,9,1,255,16,40,68,238,40,40,40,40,108,68,124,7, + 11,11,9,1,255,16,40,68,254,40,40,40,40,108,68,124, + 7,11,11,9,1,255,16,40,68,254,56,56,56,56,124,68, + 124,7,11,11,9,1,255,16,40,68,238,68,238,40,40,40, + 40,56,7,11,11,9,1,255,16,40,68,238,68,238,40,40, + 108,68,124,9,7,14,9,0,1,132,0,134,0,253,0,128, + 128,253,0,134,0,132,0,7,7,7,9,1,0,254,128,188, + 176,168,164,130,7,7,7,9,1,0,130,74,42,26,122,2, + 254,7,11,11,9,1,255,16,40,68,238,40,40,40,238,68, + 40,16,9,7,14,9,0,1,4,0,50,0,73,0,255,128, + 73,0,50,0,4,0,9,10,20,9,0,0,34,0,39,0, + 42,128,34,0,34,0,34,0,34,0,170,0,114,0,34,0, + 7,13,13,9,1,254,8,4,254,4,8,4,254,4,8,4, + 254,4,8,8,5,5,9,0,2,36,68,255,68,36,8,5, + 5,9,0,2,36,34,255,34,36,9,5,10,9,0,2,42, + 0,73,0,255,128,73,0,42,0,8,5,5,9,0,2,42, + 74,255,74,42,8,5,5,9,0,2,84,82,255,82,84,9, + 5,10,9,0,2,85,0,148,128,255,128,148,128,85,0,7, + 7,7,9,1,1,16,48,80,158,80,48,16,7,7,7,9, + 1,1,16,24,20,242,20,24,16,8,5,5,9,0,2,36, + 102,189,102,36,9,7,14,9,0,5,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,9,2,4,9,0,253,255,128, + 255,128,9,4,8,9,0,253,255,128,255,128,255,128,255,128, + 9,6,12,9,0,253,255,128,255,128,255,128,255,128,255,128, + 255,128,9,8,16,9,0,253,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,9,9,18,9,0,253,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 9,11,22,9,0,253,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,13,26,9, + 0,253,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,15,30,9, + 0,253,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 8,15,15,9,0,253,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,7,15,15,9,0,253,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,254,6,15,15,9,0,253, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,5, + 15,15,9,0,253,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,3,15,15,9,0,253,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,2,15,15,9,0,253,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,1,15, + 15,9,0,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,4,15,15,9,5,253,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,9,15,30,9,0,253,170,128, + 0,0,85,0,0,0,170,128,0,0,85,0,0,0,170,128, + 0,0,85,0,0,0,170,128,0,0,85,0,9,15,30,9, + 0,253,170,128,85,0,170,128,85,0,170,128,85,0,170,128, + 85,0,170,128,85,0,170,128,85,0,170,128,85,0,170,128, + 9,15,30,9,0,253,255,128,85,0,255,128,170,128,255,128, + 85,0,255,128,170,128,255,128,85,0,255,128,170,128,255,128, + 85,0,255,128,9,2,4,9,0,10,255,128,255,128,1,15, + 15,9,8,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,8,8,9,0,253,248,248,248,248,248,248,248, + 248,4,8,8,9,5,253,240,240,240,240,240,240,240,240,5, + 7,7,9,0,5,248,248,248,248,248,248,248,9,15,30,9, + 0,253,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 9,15,30,9,0,253,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,9,15,30,9,0,253,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,9,15,30,9,0,253,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,4,7,7,9, + 5,5,240,240,240,240,240,240,240,9,15,30,9,0,253,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,9,15,30, + 9,0,253,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56,7,7,7,9,1,1,56,116, + 242,242,242,116,56,7,7,7,9,1,1,56,92,158,158,158, + 92,56,7,7,7,9,1,1,56,68,130,254,254,124,56,7, + 7,7,9,1,1,56,124,254,254,130,68,56,7,7,7,9, + 1,1,56,92,158,158,130,68,56,7,7,7,9,1,1,56, + 92,158,254,254,124,56,4,7,7,9,1,1,48,112,240,240, + 240,112,48,4,7,7,9,4,1,192,224,240,240,240,224,192, + 9,15,30,9,0,253,255,128,255,128,255,128,255,128,255,128, + 227,128,193,128,193,128,193,128,227,128,255,128,255,128,255,128, + 255,128,255,128,9,15,30,9,0,253,255,128,255,128,255,128, + 255,128,227,128,221,128,190,128,190,128,190,128,221,128,227,128, + 255,128,255,128,255,128,255,128,9,8,16,9,0,4,255,128, + 255,128,255,128,255,128,227,128,221,128,190,128,190,128,9,8, + 16,9,0,253,190,128,190,128,221,128,227,128,255,128,255,128, + 255,128,255,128,4,4,4,9,1,4,48,64,128,128,4,4, + 4,9,4,4,192,32,16,16,4,4,4,9,4,1,16,16, + 32,192,4,4,4,9,1,1,128,128,64,48,7,4,4,9, + 1,4,56,68,130,130,7,4,4,9,1,1,130,130,68,56, + 7,7,7,9,1,1,2,6,14,30,62,126,254,7,7,7, + 9,1,1,128,192,224,240,248,252,254,7,7,7,9,1,1, + 254,252,248,240,224,192,128,7,7,7,9,1,1,254,126,62, + 30,14,6,2,5,5,5,9,2,2,112,136,136,136,112,7, + 7,7,9,1,1,254,242,242,242,242,242,254,7,7,7,9, + 1,1,254,158,158,158,158,158,254,7,7,7,9,1,1,254, + 254,250,242,226,194,254,7,7,7,9,1,1,254,134,142,158, + 190,254,254,7,7,7,9,1,1,254,146,146,146,146,146,254, + 9,10,20,9,0,0,8,0,8,0,20,0,20,0,34,0, + 42,0,93,0,73,0,128,128,255,128,9,10,20,9,0,0, + 8,0,8,0,28,0,28,0,58,0,58,0,121,0,121,0, + 248,128,255,128,9,10,20,9,0,0,8,0,8,0,28,0, + 28,0,46,0,46,0,79,0,79,0,143,128,255,128,9,9, + 18,9,0,0,62,0,65,0,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,7,7,7,9,1,1,254,146,146,242, + 130,130,254,7,7,7,9,1,1,254,130,130,242,146,146,254, + 7,7,7,9,1,1,254,130,130,158,146,146,254,7,7,7, + 9,1,1,254,146,146,158,130,130,254,7,7,7,9,1,1, + 124,146,146,242,130,130,124,7,7,7,9,1,1,124,130,130, + 242,146,146,124,7,7,7,9,1,1,124,130,130,158,146,146, + 124,7,7,7,9,1,1,124,146,146,158,130,130,124,6,6, + 6,9,1,1,252,136,144,160,192,128,6,6,6,9,1,1, + 252,68,36,20,12,4,6,6,6,9,1,1,128,192,160,144, + 136,252,6,6,6,9,1,1,252,132,132,132,132,252,6,6, + 6,9,1,1,252,252,252,252,252,252,5,5,5,9,2,1, + 248,136,136,136,248,5,5,5,9,2,1,248,248,248,248,248, + 6,6,6,9,1,1,4,12,20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 5 + Calculated Max Values w= 9 h=10 x= 3 y= 3 dx= 9 dy= 0 ascent=10 len=20 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_75r[792] U8G_SECTION(".progmem.u8g_font_9x15_75r") = { + 0,9,15,0,253,9,2,33,0,0,32,79,0,10,0,9, + 0,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 4 y= 5 dx= 9 dy= 0 ascent=12 len=26 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[3795] U8G_SECTION(".progmem.u8g_font_9x15_78_79") = { + 0,9,15,0,253,9,2,231,4,175,32,255,0,12,254,11, + 0,9,9,18,9,0,0,62,0,28,0,136,128,201,128,247, + 128,201,128,136,128,28,0,62,0,9,9,18,9,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,9,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,8,0,28,0,62,0,255, + 128,62,0,28,0,8,0,8,0,9,9,18,9,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,9,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,9,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,9,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,62,0,119,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 235,128,93,0,42,0,34,0,127,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 247,128,73,0,54,0,42,0,127,0,65,0,8,7,7,9, + 0,2,24,24,44,199,46,60,102,8,9,9,9,0,0,24, + 219,255,126,24,126,255,219,24,8,9,9,9,0,0,24,219, + 255,102,36,102,255,219,24,9,9,18,9,0,0,8,0,73, + 0,42,0,28,0,255,128,28,0,42,0,73,0,8,0,9, + 9,18,9,0,0,8,0,73,0,62,0,62,0,255,128,62, + 0,62,0,73,0,8,0,9,9,18,9,0,0,8,0,73, + 0,54,0,62,0,213,128,62,0,54,0,73,0,8,0,9, + 9,18,9,0,0,8,0,136,128,107,0,62,0,28,0,62, + 0,107,0,136,128,8,0,9,9,18,9,0,0,34,0,20, + 0,148,128,127,0,28,0,127,0,148,128,20,0,34,0,9, + 9,18,9,0,0,34,0,54,0,255,128,127,0,62,0,127, + 0,255,128,54,0,34,0,9,9,18,9,0,0,42,0,42, + 0,221,128,62,0,255,128,62,0,221,128,42,0,42,0,9, + 9,18,9,0,0,42,0,42,0,221,128,42,0,255,128,42, + 0,221,128,42,0,42,0,9,11,22,9,0,0,28,0,28, + 0,201,128,201,128,34,0,8,0,34,0,201,128,201,128,28, + 0,28,0,9,11,22,9,0,0,28,0,28,0,201,128,201, + 128,62,0,20,0,62,0,201,128,201,128,28,0,28,0,9, + 11,22,9,0,0,28,0,28,0,201,128,201,128,62,0,28, + 0,62,0,201,128,201,128,28,0,28,0,9,11,22,9,0, + 0,28,0,20,0,201,128,201,128,62,0,20,0,127,0,170, + 128,201,128,28,0,28,0,8,9,9,9,0,0,24,24,219, + 255,36,36,126,231,66,255,255,255,8,9,9,9,0,0,24, + 203,189,110,24,118,189,211,24,9,12,24,9,0,0,8,0, + 42,0,93,0,170,128,107,0,221,128,221,128,107,0,170,128, + 93,0,42,0,8,0,9,12,24,9,0,0,8,0,42,0, + 93,0,170,128,107,0,221,128,221,128,107,0,170,128,93,0, + 42,0,8,0,9,12,24,9,0,0,8,0,42,0,93,0, + 170,128,107,0,221,128,221,128,107,0,170,128,93,0,42,0, + 8,0,9,9,18,9,0,0,8,0,73,0,42,0,20,0, + 235,128,20,0,42,0,73,0,8,0,9,9,18,9,0,0, + 8,0,73,0,42,0,20,0,235,128,20,0,42,0,73,0, + 8,0,8,9,9,9,0,0,24,219,203,60,24,60,211,219, + 24,9,9,18,9,0,0,8,0,73,0,42,0,0,0,235, + 128,0,0,42,0,73,0,8,0,9,9,18,9,0,0,8, + 0,73,0,42,0,28,0,255,128,28,0,42,0,73,0,8, + 0,255,9,8,16,9,0,1,62,0,67,0,129,128,129,128, + 129,128,129,128,67,0,62,0,255,9,9,18,9,0,0,254, + 0,130,0,131,128,131,128,131,128,131,128,255,128,63,128,63, + 128,9,9,18,9,0,0,63,128,63,128,255,128,131,128,131, + 128,131,128,131,128,130,0,254,0,8,8,8,9,0,0,254, + 131,131,131,131,131,255,127,8,8,8,9,0,0,127,255,131, + 131,131,131,131,254,255,255,255,9,9,18,9,0,0,8,0, + 28,0,8,0,65,0,227,128,65,0,8,0,28,0,8,0, + 255,1,10,10,9,4,0,128,128,128,128,128,128,128,128,128, + 128,2,10,10,9,3,0,192,192,192,192,192,192,192,192,192, + 192,3,10,10,9,3,0,224,224,224,224,224,224,224,224,224, + 224,4,6,6,9,3,5,112,128,224,240,240,96,4,6,6, + 9,3,5,96,240,240,112,16,224,9,6,12,9,0,5,115, + 128,132,0,231,0,247,128,247,128,99,0,9,6,12,9,0, + 5,99,0,247,128,247,128,115,128,16,128,231,0,255,255,7, + 10,10,9,1,0,4,126,228,228,228,124,4,100,104,48,5, + 10,10,9,2,0,112,248,248,112,32,32,0,32,112,32,5, + 10,10,9,2,0,80,248,248,112,32,32,0,32,112,32,9, + 9,18,9,0,0,99,0,247,128,255,128,255,128,127,0,62, + 0,28,0,8,0,8,0,9,9,18,9,0,0,112,0,248, + 0,252,0,126,0,63,128,126,0,252,0,248,0,112,0,9, + 12,24,9,0,0,8,0,116,128,149,0,14,0,4,0,107, + 0,247,128,255,128,127,0,62,0,28,0,8,0,9,12,24, + 9,0,0,16,0,41,0,82,0,156,0,32,0,88,0,124, + 0,60,0,254,0,254,128,255,0,126,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,227,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,237,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,152,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,152,128,132,128,132, + 128,136,128,156,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,152,128,132,128,136,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,152,128,168, + 128,188,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,144,128,152,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,140,128,144,128,152, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,132,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,148,128,136, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,148,128,140,128,132,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,164,128,170,128,170, + 128,170,128,164,128,128,128,127,0,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,239,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,7,8,8,9,1,1,48, + 24,12,254,254,12,24,48,255,255,255,7,5,5,9,1,1, + 224,250,62,14,30,8,7,7,9,1,1,8,12,230,255,230, + 12,8,7,5,5,9,1,1,30,14,62,250,224,9,7,14, + 9,0,0,48,0,28,0,31,0,255,128,31,0,28,0,48, + 0,9,9,18,9,0,0,28,0,30,0,15,0,255,128,255, + 128,255,128,15,0,30,0,28,0,9,5,10,9,0,1,2, + 0,3,0,255,128,3,0,2,0,9,7,14,9,0,0,4, + 0,6,0,255,0,255,128,255,0,6,0,4,0,9,5,10, + 9,0,1,2,0,183,0,183,128,183,0,2,0,9,5,10, + 9,0,1,2,0,171,0,171,128,171,0,2,0,9,5,10, + 9,0,1,2,0,255,0,255,128,255,0,2,0,9,8,16, + 9,0,1,128,0,112,0,78,0,33,128,31,128,62,0,112, + 0,128,0,9,8,16,9,0,1,128,0,112,0,62,0,31, + 128,33,128,78,0,112,0,128,0,9,8,16,9,0,1,128, + 0,112,0,62,0,31,128,31,128,62,0,112,0,128,0,9, + 7,14,9,0,0,132,0,134,0,255,0,255,128,127,0,6, + 0,4,0,9,7,14,9,0,0,4,0,6,0,127,0,255, + 128,255,0,134,0,132,0,6,9,9,9,2,0,16,16,248, + 248,252,248,248,16,16,8,9,9,9,0,1,4,4,254,254, + 255,254,254,4,4,9,9,18,9,0,0,24,0,28,0,22, + 0,243,0,129,128,243,0,22,0,28,0,24,0,9,9,18, + 9,0,0,24,0,28,0,26,0,249,0,192,128,249,0,26, + 0,28,0,24,0,9,9,18,9,0,0,0,128,1,128,62, + 128,64,128,129,128,243,0,238,0,60,0,56,0,9,9,18, + 9,0,0,56,0,60,0,238,0,243,0,129,128,64,128,62, + 128,1,128,0,128,8,9,9,9,0,1,16,24,20,242,129, + 243,118,28,24,8,9,9,9,0,1,24,28,118,243,129,242, + 20,24,16,9,7,14,9,0,2,4,0,250,0,129,0,64, + 128,129,128,251,0,6,0,255,9,7,14,9,0,2,6,0, + 251,0,129,128,64,128,129,0,250,0,4,0,9,9,18,9, + 0,1,28,0,127,0,251,128,1,128,0,128,1,128,251,128, + 127,0,28,0,9,5,10,9,0,3,210,0,43,0,127,128, + 43,0,210,0,9,9,18,9,0,0,16,0,56,0,92,0, + 236,0,116,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,7,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,116,0,236,0,92,0, + 56,0,16,0,9,9,18,9,0,0,16,0,24,0,28,0, + 252,0,124,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,127,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,124,0,252,0,28,0, + 24,0,16,0,9,7,14,9,0,1,3,0,3,0,113,0, + 255,128,113,0,3,0,3,0,9,7,14,9,0,1,2,0, + 115,0,121,0,255,128,121,0,115,0,2,0,9,5,10,9, + 0,2,242,0,123,0,63,128,123,0,242,0,9,7,14,9, + 0,1,226,0,242,0,123,0,63,128,123,0,242,0,226,0, + 9,7,14,9,0,1,20,0,10,0,253,0,0,128,253,0, + 10,0,20,0,255,7,7,7,9,1,0,130,132,136,144,160, + 192,254,9,10,20,9,0,0,8,0,8,0,20,0,20,0, + 42,0,42,0,85,0,93,0,128,128,255,128,7,10,10,9, + 1,0,16,16,16,16,16,16,16,16,16,254,7,7,7,9, + 1,1,62,64,132,138,132,64,62,7,7,7,9,1,1,248, + 4,66,162,66,4,248,5,12,12,9,2,255,112,136,136,16, + 16,32,32,64,64,128,128,112,5,12,12,9,2,255,112,136, + 136,64,64,32,32,16,16,8,8,112,7,8,8,9,1,0, + 130,146,84,68,40,40,16,16,8,10,10,9,0,255,128,143, + 144,80,80,80,80,47,32,32,8,10,10,9,0,255,1,241, + 9,10,10,10,10,244,4,4,3,10,10,9,3,0,64,64, + 64,64,224,64,64,64,64,64,255,255,255,255,255,9,9,18, + 9,0,0,8,0,20,0,34,0,65,0,136,128,65,0,34, + 0,20,0,8,0,7,8,8,9,1,0,16,16,40,40,68, + 84,146,130,7,7,7,9,1,1,146,146,146,146,146,84,56, + 7,7,7,9,1,1,2,2,2,18,2,2,254,7,7,7, + 9,1,1,254,128,128,144,128,128,128,8,11,11,9,0,255, + 193,99,99,85,85,73,85,85,99,99,193,8,11,11,9,1, + 255,131,198,198,170,170,146,170,170,198,198,131,9,11,22,9, + 0,255,193,128,99,0,99,0,85,0,85,0,73,0,85,0, + 85,0,99,0,99,0,193,128,9,13,26,9,0,254,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,9,13,26,9,0,254,255,128, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,7,7,7,9,1,1,40,40, + 238,40,238,40,40,7,7,7,9,1,1,40,40,40,238,40, + 40,40,7,3,3,9,1,3,64,190,64,9,5,10,9,0, + 2,128,0,128,0,255,128,128,0,128,0,9,5,10,9,0, + 2,0,128,0,128,255,128,0,128,0,128,5,10,10,9,2, + 0,32,80,32,32,32,32,32,32,32,248,5,9,9,9,2, + 0,32,32,80,80,248,80,80,32,32,7,9,9,9,1,0, + 16,16,16,40,198,40,16,16,16,8,9,9,9,0,0,8, + 8,8,20,227,20,8,8,8,8,9,9,9,1,0,16,16, + 16,40,199,40,16,16,16,8,7,7,9,0,1,127,65,65, + 193,65,65,127,8,7,7,9,1,1,254,130,130,131,130,130, + 254,5,12,12,9,2,255,248,160,160,160,160,160,160,160,160, + 160,160,248,5,12,12,9,2,255,248,40,40,40,40,40,40, + 40,40,40,40,248,3,10,10,9,3,0,32,32,64,64,128, + 128,64,64,32,32,3,10,10,9,3,0,128,128,64,64,32, + 32,64,64,128,128,6,10,10,9,1,0,36,36,72,72,144, + 144,72,72,36,36,6,10,10,9,2,0,144,144,72,72,36, + 36,72,72,144,144,255,255,255,255,9,11,22,9,0,0,8, + 0,20,0,54,0,85,0,213,128,85,0,85,0,85,0,85, + 0,85,0,85,0,9,11,22,9,0,255,85,0,85,0,85, + 0,85,0,85,0,85,0,213,128,85,0,54,0,20,0,8, + 0,8,8,8,9,0,0,28,34,169,113,33,1,34,28,8, + 8,8,9,0,0,56,68,149,142,132,128,68,56,9,5,10, + 9,0,2,114,0,169,0,255,128,169,0,114,0,9,5,10, + 9,0,2,32,0,64,0,255,128,64,0,32,0,9,5,10, + 9,0,2,2,0,1,0,255,128,1,0,2,0,9,5,10, + 9,0,2,34,0,65,0,255,128,65,0,34,0,9,7,14, + 9,0,1,16,0,32,0,127,128,128,0,127,128,32,0,16, + 0,9,7,14,9,0,1,4,0,2,0,255,0,0,128,255, + 0,2,0,4,0,9,7,14,9,0,1,20,0,34,0,127, + 0,128,128,127,0,34,0,20,0,9,5,10,9,0,2,32, + 128,64,128,255,128,64,128,32,128,9,5,10,9,0,2,130, + 0,129,0,255,128,129,0,130,0,9,7,14,9,0,1,16, + 128,32,128,127,128,128,128,127,128,32,128,16,128,9,7,14, + 9,0,1,132,0,130,0,255,0,128,128,255,0,130,0,132, + 0,9,6,12,9,0,1,2,0,1,0,85,128,170,128,1, + 0,2,0}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=14 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=20 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15B[2990] U8G_SECTION(".progmem.u8g_font_9x15B") = { + 0,9,15,0,253,10,1,232,3,214,32,255,253,12,253,11, + 253,0,0,0,9,0,12,2,10,10,9,3,0,192,192,192, + 192,192,192,192,192,0,192,5,3,3,9,2,7,216,216,216, + 7,8,8,9,1,1,108,108,254,108,108,254,108,108,7,11, + 11,9,1,255,16,124,214,208,240,124,30,22,214,124,16,8, + 10,10,9,0,0,67,230,230,76,24,24,50,103,103,194,8, + 10,10,9,0,0,56,108,108,120,48,121,207,198,206,123,2, + 4,4,9,3,6,192,192,192,192,5,12,12,9,2,255,24, + 48,96,96,192,192,192,192,96,96,48,24,5,12,12,9,2, + 255,192,96,48,48,24,24,24,24,48,48,96,192,7,5,5, + 9,1,2,108,56,254,56,108,8,7,7,9,0,1,24,24, + 24,255,24,24,24,3,5,5,9,3,253,224,224,96,96,192, + 8,1,1,9,0,4,255,4,3,3,9,2,255,96,240,96, + 8,10,10,9,0,0,3,6,6,12,24,24,48,96,96,192, + 8,10,10,9,0,0,24,60,102,195,195,195,195,102,60,24, + 6,10,10,9,1,0,48,112,240,48,48,48,48,48,48,252, + 8,10,10,9,0,0,60,102,195,3,6,12,24,48,96,255, + 8,10,10,9,0,0,124,198,3,6,28,6,3,3,198,124, + 8,10,10,9,0,0,6,14,30,54,102,198,255,6,6,6, + 8,10,10,9,0,0,254,192,192,220,230,3,3,195,102,60, + 8,10,10,9,0,0,60,102,194,192,220,230,195,195,102,60, + 8,10,10,9,0,0,255,3,3,6,12,12,24,24,24,24, + 8,10,10,9,0,0,60,102,195,102,60,102,195,195,102,60, + 8,10,10,9,0,0,60,102,195,195,103,59,3,67,102,60, + 4,8,8,9,2,255,96,240,96,0,0,96,240,96,4,10, + 10,9,2,253,96,240,96,0,0,112,112,48,48,96,6,10, + 10,9,1,0,12,24,48,96,192,192,96,48,24,12,8,4, + 4,9,0,2,255,0,0,255,6,10,10,9,1,0,192,96, + 48,24,12,12,24,48,96,192,7,10,10,9,1,0,124,198, + 198,6,12,24,48,0,48,48,8,10,10,9,0,0,60,102, + 195,207,219,219,206,192,99,62,8,10,10,9,0,0,24,60, + 102,195,195,195,255,195,195,195,8,10,10,9,0,0,252,198, + 195,198,252,198,195,195,198,252,8,10,10,9,0,0,62,99, + 193,192,192,192,192,193,99,62,8,10,10,9,0,0,252,198, + 195,195,195,195,195,195,198,252,7,10,10,9,1,0,254,192, + 192,192,252,192,192,192,192,254,8,10,10,9,0,0,255,192, + 192,192,252,192,192,192,192,192,8,10,10,9,0,0,62,99, + 192,192,192,199,195,195,99,62,8,10,10,9,0,0,195,195, + 195,195,255,195,195,195,195,195,6,10,10,9,1,0,252,48, + 48,48,48,48,48,48,48,252,6,10,10,9,1,0,60,12, + 12,12,12,12,12,140,216,112,8,10,10,9,0,0,195,198, + 204,216,240,240,216,204,198,195,7,10,10,9,1,0,192,192, + 192,192,192,192,192,192,192,254,8,10,10,9,0,0,195,231, + 255,219,219,219,195,195,195,195,8,10,10,9,0,0,195,227, + 243,243,219,219,207,199,199,195,8,10,10,9,0,0,60,102, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,254,195, + 195,195,254,192,192,192,192,192,8,10,10,9,0,0,60,102, + 195,195,195,195,219,207,102,61,8,10,10,9,0,0,254,195, + 195,195,254,248,204,198,195,195,8,10,10,9,0,0,126,195, + 192,192,126,3,3,3,195,126,8,10,10,9,0,0,255,24, + 24,24,24,24,24,24,24,24,8,10,10,9,0,0,195,195, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,195,195, + 195,102,102,102,60,60,24,24,8,10,10,9,0,0,195,195, + 195,195,219,219,219,255,231,195,8,10,10,9,0,0,195,195, + 102,60,24,24,60,102,195,195,8,10,10,9,0,0,195,195, + 102,60,24,24,24,24,24,24,7,10,10,9,1,0,254,6, + 6,12,24,48,96,192,192,254,5,12,12,9,2,255,248,192, + 192,192,192,192,192,192,192,192,192,248,8,10,10,9,0,0, + 192,96,96,48,24,24,12,6,6,3,5,12,12,9,2,255, + 248,24,24,24,24,24,24,24,24,24,24,248,6,4,4,9, + 1,6,48,120,204,132,8,1,1,9,0,255,255,4,3,3, + 9,2,8,192,96,48,8,7,7,9,0,0,62,99,3,127, + 195,199,123,8,10,10,9,0,0,192,192,192,220,230,195,195, + 195,230,220,8,7,7,9,0,0,62,99,192,192,192,99,62, + 8,10,10,9,0,0,3,3,3,59,103,195,195,195,103,59, + 8,7,7,9,0,0,60,102,195,255,192,99,62,8,10,10, + 9,0,0,30,51,51,48,48,252,48,48,48,48,8,10,10, + 9,0,253,125,199,198,198,124,192,126,195,195,126,8,10,10, + 9,0,0,192,192,192,220,230,195,195,195,195,195,6,10,10, + 9,1,0,48,48,0,112,48,48,48,48,48,252,7,13,13, + 9,1,253,6,6,0,30,6,6,6,6,6,198,198,198,124, + 7,10,10,9,1,0,192,192,192,204,216,240,240,216,204,198, + 6,10,10,9,1,0,112,48,48,48,48,48,48,48,48,252, + 8,7,7,9,0,0,182,219,219,219,219,219,219,8,7,7, + 9,0,0,220,230,195,195,195,195,195,8,7,7,9,0,0, + 60,102,195,195,195,102,60,8,10,10,9,0,253,220,230,195, + 195,195,230,220,192,192,192,8,10,10,9,0,253,59,103,195, + 195,195,103,59,3,3,3,8,7,7,9,0,0,222,115,96, + 96,96,96,96,8,7,7,9,0,0,126,195,192,126,3,195, + 126,8,9,9,9,0,0,48,48,252,48,48,48,48,51,30, + 8,7,7,9,0,0,195,195,195,195,195,103,59,8,7,7, + 9,0,0,195,195,102,102,60,60,24,8,7,7,9,0,0, + 195,195,219,219,219,255,102,8,7,7,9,0,0,195,102,60, + 24,60,102,195,8,10,10,9,0,253,195,195,195,195,195,103, + 59,3,198,124,6,7,7,9,1,0,252,12,24,48,96,192, + 252,5,12,12,9,2,255,56,96,96,96,96,192,192,96,96, + 96,96,56,2,10,10,9,3,0,192,192,192,192,192,192,192, + 192,192,192,5,12,12,9,2,255,224,48,48,48,48,24,24, + 48,48,48,48,224,8,3,3,9,0,7,115,219,206,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,12,2,10,10,9,4,0,192,0,192,192,192, + 192,192,192,192,192,7,8,8,9,1,0,4,124,206,208,208, + 230,124,64,8,10,10,9,0,255,30,51,48,48,124,48,48, + 248,191,224,7,7,7,9,1,2,198,254,108,68,108,254,198, + 8,10,10,9,0,0,195,195,102,60,126,24,126,24,24,24, + 2,11,11,9,4,255,192,192,192,192,192,0,0,192,192,192, + 192,6,11,11,9,1,255,120,204,192,120,204,204,204,120,12, + 204,120,6,2,2,9,1,9,204,204,8,11,11,9,0,0, + 60,126,195,189,165,161,165,189,195,126,60,5,7,7,9,1, + 3,240,24,248,152,248,0,248,8,8,8,9,0,1,27,54, + 108,216,216,108,54,27,7,5,5,9,1,2,254,254,6,6, + 6,6,1,1,9,1,4,252,8,11,11,9,0,0,60,126, + 195,189,165,189,169,173,195,126,60,6,2,2,9,1,9,252, + 252,6,4,4,9,2,6,120,204,204,120,8,10,10,9,0, + 0,24,24,24,255,255,24,24,24,255,255,5,7,7,9,1, + 4,112,152,24,48,96,192,248,5,7,7,9,1,4,112,152, + 24,48,24,152,112,4,3,3,9,2,8,48,96,192,7,10, + 10,9,1,253,198,198,198,198,198,238,250,192,192,192,7,10, + 10,9,1,0,126,254,246,246,246,118,54,54,54,54,3,3, + 3,9,3,3,64,224,64,5,3,3,9,2,253,24,216,112, + 4,7,7,9,1,4,96,224,96,96,96,96,240,5,6,6, + 9,1,4,112,216,216,112,0,248,8,8,8,9,0,1,216, + 108,54,27,27,54,108,216,8,11,11,9,0,0,96,224,96, + 96,97,99,247,15,27,31,3,8,11,11,9,0,0,96,224, + 96,96,110,115,243,6,12,24,31,8,11,11,9,0,0,112, + 152,24,48,25,155,119,15,27,31,3,7,10,10,9,1,0, + 24,24,0,24,48,96,192,198,198,124,8,12,12,9,0,0, + 96,48,24,0,60,102,195,195,255,195,195,195,8,12,12,9, + 0,0,6,12,24,0,60,102,195,195,255,195,195,195,8,12, + 12,9,0,0,24,60,102,0,60,102,195,195,255,195,195,195, + 8,12,12,9,0,0,50,126,76,0,60,102,195,195,255,195, + 195,195,8,11,11,9,0,0,102,102,0,60,102,195,195,255, + 195,195,195,8,12,12,9,0,0,24,36,36,24,60,102,195, + 195,255,195,195,195,8,10,10,9,0,0,31,60,108,108,204, + 255,204,204,204,207,8,13,13,9,0,253,62,99,193,192,192, + 192,192,193,99,62,12,108,56,7,12,12,9,1,0,96,48, + 24,0,254,192,192,252,192,192,192,254,7,12,12,9,1,0, + 12,24,48,0,254,192,192,252,192,192,192,254,7,12,12,9, + 1,0,24,60,102,0,254,192,192,252,192,192,192,254,7,11, + 11,9,1,0,102,102,0,254,192,192,252,192,192,192,254,6, + 12,12,9,1,0,192,96,48,0,252,48,48,48,48,48,48, + 252,6,12,12,9,1,0,24,48,96,0,252,48,48,48,48, + 48,48,252,6,12,12,9,1,0,48,120,204,0,252,48,48, + 48,48,48,48,252,6,11,11,9,1,0,204,204,0,252,48, + 48,48,48,48,48,252,9,10,20,9,0,0,126,0,99,0, + 97,128,97,128,249,128,249,128,97,128,97,128,99,0,126,0, + 8,12,12,9,0,0,50,126,76,0,195,227,243,251,223,207, + 199,195,8,12,12,9,0,0,96,48,24,0,60,102,195,195, + 195,195,102,60,8,12,12,9,0,0,6,12,24,0,60,102, + 195,195,195,195,102,60,8,12,12,9,0,0,24,60,102,0, + 60,102,195,195,195,195,102,60,8,12,12,9,0,0,50,126, + 76,0,60,102,195,195,195,195,102,60,8,11,11,9,0,0, + 102,102,0,60,102,195,195,195,195,102,60,7,8,8,9,1, + 0,130,198,108,56,56,108,198,130,8,12,12,9,0,255,1, + 63,102,199,203,203,211,211,227,102,252,128,8,12,12,9,0, + 0,96,48,24,0,195,195,195,195,195,195,102,60,8,12,12, + 9,0,0,6,12,24,0,195,195,195,195,195,195,102,60,8, + 12,12,9,0,0,24,60,102,0,195,195,195,195,195,195,102, + 60,8,11,11,9,0,0,102,102,0,195,195,195,195,195,195, + 102,60,8,12,12,9,0,0,6,12,24,0,195,102,60,24, + 24,24,24,24,7,10,10,9,1,0,240,96,124,102,102,102, + 124,96,96,240,7,10,10,9,1,0,60,102,198,204,216,204, + 198,198,198,220,8,11,11,9,0,0,96,48,24,0,62,67, + 3,127,195,199,123,8,11,11,9,0,0,12,24,48,0,62, + 67,3,127,195,199,123,8,11,11,9,0,0,24,60,102,0, + 62,67,3,127,195,199,123,8,11,11,9,0,0,50,126,76, + 0,62,67,3,127,195,199,123,8,10,10,9,0,0,102,102, + 0,62,67,3,127,195,199,123,8,11,11,9,0,0,24,36, + 36,24,62,67,3,127,195,199,123,8,7,7,9,0,0,118, + 155,27,126,216,217,110,8,10,10,9,0,253,62,99,192,192, + 192,99,62,12,108,56,8,11,11,9,0,0,96,48,24,0, + 60,102,195,255,192,99,62,8,11,11,9,0,0,12,24,48, + 0,60,102,195,255,192,99,62,8,11,11,9,0,0,24,60, + 102,0,60,102,195,255,192,99,62,8,10,10,9,0,0,102, + 102,0,60,102,195,255,192,99,62,6,11,11,9,1,0,192, + 96,48,0,112,48,48,48,48,48,252,6,11,11,9,1,0, + 24,48,96,0,112,48,48,48,48,48,252,6,11,11,9,1, + 0,48,120,204,0,112,48,48,48,48,48,252,6,10,10,9, + 1,0,204,204,0,112,48,48,48,48,48,252,8,12,12,9, + 0,0,136,216,112,112,216,140,62,103,195,195,102,60,8,11, + 11,9,0,0,50,126,76,0,220,230,195,195,195,195,195,8, + 11,11,9,0,0,96,48,24,0,60,102,195,195,195,102,60, + 8,11,11,9,0,0,12,24,48,0,60,102,195,195,195,102, + 60,8,11,11,9,0,0,24,60,102,0,60,102,195,195,195, + 102,60,8,11,11,9,0,0,50,126,76,0,60,102,195,195, + 195,102,60,8,10,10,9,0,0,102,102,0,60,102,195,195, + 195,102,60,8,10,10,9,0,0,24,24,0,0,255,255,0, + 0,24,24,8,9,9,9,0,255,1,63,102,207,219,243,102, + 252,128,8,11,11,9,0,0,96,48,24,0,195,195,195,195, + 195,103,59,8,11,11,9,0,0,12,24,48,0,195,195,195, + 195,195,103,59,8,11,11,9,0,0,24,60,102,0,195,195, + 195,195,195,103,59,8,10,10,9,0,0,102,102,0,195,195, + 195,195,195,103,59,8,14,14,9,0,253,12,24,48,0,195, + 195,195,195,195,103,59,3,198,124,7,12,12,9,1,253,224, + 96,96,124,102,102,102,102,124,96,96,224,8,13,13,9,0, + 253,102,102,0,195,195,195,195,195,103,59,3,198,124}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 3 y=12 dx= 9 dy= 0 ascent=12 len=13 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15Br[1423] U8G_SECTION(".progmem.u8g_font_9x15Br") = { + 0,9,15,0,253,10,1,232,3,214,32,127,253,12,253,11, + 253,0,0,0,9,0,12,2,10,10,9,3,0,192,192,192, + 192,192,192,192,192,0,192,5,3,3,9,2,7,216,216,216, + 7,8,8,9,1,1,108,108,254,108,108,254,108,108,7,11, + 11,9,1,255,16,124,214,208,240,124,30,22,214,124,16,8, + 10,10,9,0,0,67,230,230,76,24,24,50,103,103,194,8, + 10,10,9,0,0,56,108,108,120,48,121,207,198,206,123,2, + 4,4,9,3,6,192,192,192,192,5,12,12,9,2,255,24, + 48,96,96,192,192,192,192,96,96,48,24,5,12,12,9,2, + 255,192,96,48,48,24,24,24,24,48,48,96,192,7,5,5, + 9,1,2,108,56,254,56,108,8,7,7,9,0,1,24,24, + 24,255,24,24,24,3,5,5,9,3,253,224,224,96,96,192, + 8,1,1,9,0,4,255,4,3,3,9,2,255,96,240,96, + 8,10,10,9,0,0,3,6,6,12,24,24,48,96,96,192, + 8,10,10,9,0,0,24,60,102,195,195,195,195,102,60,24, + 6,10,10,9,1,0,48,112,240,48,48,48,48,48,48,252, + 8,10,10,9,0,0,60,102,195,3,6,12,24,48,96,255, + 8,10,10,9,0,0,124,198,3,6,28,6,3,3,198,124, + 8,10,10,9,0,0,6,14,30,54,102,198,255,6,6,6, + 8,10,10,9,0,0,254,192,192,220,230,3,3,195,102,60, + 8,10,10,9,0,0,60,102,194,192,220,230,195,195,102,60, + 8,10,10,9,0,0,255,3,3,6,12,12,24,24,24,24, + 8,10,10,9,0,0,60,102,195,102,60,102,195,195,102,60, + 8,10,10,9,0,0,60,102,195,195,103,59,3,67,102,60, + 4,8,8,9,2,255,96,240,96,0,0,96,240,96,4,10, + 10,9,2,253,96,240,96,0,0,112,112,48,48,96,6,10, + 10,9,1,0,12,24,48,96,192,192,96,48,24,12,8,4, + 4,9,0,2,255,0,0,255,6,10,10,9,1,0,192,96, + 48,24,12,12,24,48,96,192,7,10,10,9,1,0,124,198, + 198,6,12,24,48,0,48,48,8,10,10,9,0,0,60,102, + 195,207,219,219,206,192,99,62,8,10,10,9,0,0,24,60, + 102,195,195,195,255,195,195,195,8,10,10,9,0,0,252,198, + 195,198,252,198,195,195,198,252,8,10,10,9,0,0,62,99, + 193,192,192,192,192,193,99,62,8,10,10,9,0,0,252,198, + 195,195,195,195,195,195,198,252,7,10,10,9,1,0,254,192, + 192,192,252,192,192,192,192,254,8,10,10,9,0,0,255,192, + 192,192,252,192,192,192,192,192,8,10,10,9,0,0,62,99, + 192,192,192,199,195,195,99,62,8,10,10,9,0,0,195,195, + 195,195,255,195,195,195,195,195,6,10,10,9,1,0,252,48, + 48,48,48,48,48,48,48,252,6,10,10,9,1,0,60,12, + 12,12,12,12,12,140,216,112,8,10,10,9,0,0,195,198, + 204,216,240,240,216,204,198,195,7,10,10,9,1,0,192,192, + 192,192,192,192,192,192,192,254,8,10,10,9,0,0,195,231, + 255,219,219,219,195,195,195,195,8,10,10,9,0,0,195,227, + 243,243,219,219,207,199,199,195,8,10,10,9,0,0,60,102, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,254,195, + 195,195,254,192,192,192,192,192,8,10,10,9,0,0,60,102, + 195,195,195,195,219,207,102,61,8,10,10,9,0,0,254,195, + 195,195,254,248,204,198,195,195,8,10,10,9,0,0,126,195, + 192,192,126,3,3,3,195,126,8,10,10,9,0,0,255,24, + 24,24,24,24,24,24,24,24,8,10,10,9,0,0,195,195, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,195,195, + 195,102,102,102,60,60,24,24,8,10,10,9,0,0,195,195, + 195,195,219,219,219,255,231,195,8,10,10,9,0,0,195,195, + 102,60,24,24,60,102,195,195,8,10,10,9,0,0,195,195, + 102,60,24,24,24,24,24,24,7,10,10,9,1,0,254,6, + 6,12,24,48,96,192,192,254,5,12,12,9,2,255,248,192, + 192,192,192,192,192,192,192,192,192,248,8,10,10,9,0,0, + 192,96,96,48,24,24,12,6,6,3,5,12,12,9,2,255, + 248,24,24,24,24,24,24,24,24,24,24,248,6,4,4,9, + 1,6,48,120,204,132,8,1,1,9,0,255,255,4,3,3, + 9,2,8,192,96,48,8,7,7,9,0,0,62,99,3,127, + 195,199,123,8,10,10,9,0,0,192,192,192,220,230,195,195, + 195,230,220,8,7,7,9,0,0,62,99,192,192,192,99,62, + 8,10,10,9,0,0,3,3,3,59,103,195,195,195,103,59, + 8,7,7,9,0,0,60,102,195,255,192,99,62,8,10,10, + 9,0,0,30,51,51,48,48,252,48,48,48,48,8,10,10, + 9,0,253,125,199,198,198,124,192,126,195,195,126,8,10,10, + 9,0,0,192,192,192,220,230,195,195,195,195,195,6,10,10, + 9,1,0,48,48,0,112,48,48,48,48,48,252,7,13,13, + 9,1,253,6,6,0,30,6,6,6,6,6,198,198,198,124, + 7,10,10,9,1,0,192,192,192,204,216,240,240,216,204,198, + 6,10,10,9,1,0,112,48,48,48,48,48,48,48,48,252, + 8,7,7,9,0,0,182,219,219,219,219,219,219,8,7,7, + 9,0,0,220,230,195,195,195,195,195,8,7,7,9,0,0, + 60,102,195,195,195,102,60,8,10,10,9,0,253,220,230,195, + 195,195,230,220,192,192,192,8,10,10,9,0,253,59,103,195, + 195,195,103,59,3,3,3,8,7,7,9,0,0,222,115,96, + 96,96,96,96,8,7,7,9,0,0,126,195,192,126,3,195, + 126,8,9,9,9,0,0,48,48,252,48,48,48,48,51,30, + 8,7,7,9,0,0,195,195,195,195,195,103,59,8,7,7, + 9,0,0,195,195,102,102,60,60,24,8,7,7,9,0,0, + 195,195,219,219,219,255,102,8,7,7,9,0,0,195,102,60, + 24,60,102,195,8,10,10,9,0,253,195,195,195,195,195,103, + 59,3,198,124,6,7,7,9,1,0,252,12,24,48,96,192, + 252,5,12,12,9,2,255,56,96,96,96,96,192,192,96,96, + 96,96,56,2,10,10,9,3,0,192,192,192,192,192,192,192, + 192,192,192,5,12,12,9,2,255,224,48,48,48,48,24,24, + 48,48,48,48,224,8,3,3,9,0,7,115,219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=14 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=14 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15[2959] U8G_SECTION(".progmem.u8g_font_9x15") = { + 0,9,15,0,253,10,1,232,3,216,32,255,253,12,253,11, + 253,0,0,0,9,0,12,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,9,3,7,144,144, + 144,6,8,8,9,1,1,72,72,252,72,72,252,72,72,7, + 11,11,9,1,255,16,124,146,144,80,56,20,18,146,124,16, + 7,10,10,9,1,0,66,164,164,72,16,16,36,74,74,132, + 7,10,10,9,1,0,96,144,144,144,96,98,148,136,148,98, + 1,3,3,9,4,7,128,128,128,3,12,12,9,3,255,32, + 64,64,128,128,128,128,128,128,64,64,32,3,12,12,9,3, + 255,128,64,64,32,32,32,32,32,32,64,64,128,7,7,7, + 9,1,3,16,146,84,56,84,146,16,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,5,5,9,4,253,192,192,64, + 64,128,7,1,1,9,1,4,254,2,2,2,9,4,0,192, + 192,7,10,10,9,1,0,2,4,4,8,16,16,32,64,64, + 128,7,10,10,9,1,0,56,68,130,130,130,130,130,130,68, + 56,7,10,10,9,1,0,16,48,80,144,16,16,16,16,16, + 254,7,10,10,9,1,0,124,130,130,4,8,16,32,64,128, + 254,7,10,10,9,1,0,254,2,4,8,28,2,2,2,130, + 124,7,10,10,9,1,0,4,12,20,36,68,132,254,4,4, + 4,7,10,10,9,1,0,254,128,128,188,194,2,2,2,130, + 124,7,10,10,9,1,0,60,64,128,128,188,194,130,130,130, + 124,7,10,10,9,1,0,254,2,4,4,8,8,16,16,32, + 32,7,10,10,9,1,0,56,68,130,68,56,68,130,130,68, + 56,7,10,10,9,1,0,124,130,130,130,134,122,2,2,4, + 120,2,7,7,9,4,0,192,192,0,0,0,192,192,2,10, + 10,9,4,253,192,192,0,0,0,192,192,64,64,128,5,10, + 10,9,2,0,8,16,32,64,128,128,64,32,16,8,7,4, + 4,9,1,2,254,0,0,254,5,10,10,9,2,0,128,64, + 32,16,8,8,16,32,64,128,7,10,10,9,1,0,124,130, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,124,130, + 130,158,162,166,154,128,128,124,7,10,10,9,1,0,16,40, + 68,130,130,130,254,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,124,130, + 128,128,128,128,128,128,130,124,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,124,130, + 128,128,128,142,130,130,130,124,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,8,10,10,9,1,0,31,4, + 4,4,4,4,4,4,132,120,7,10,10,9,1,0,130,132, + 136,144,224,160,144,136,132,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,170,146,146,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,252,130, + 130,130,252,128,128,128,128,128,7,12,12,9,1,254,124,130, + 130,130,130,130,130,162,146,124,8,6,7,10,10,9,1,0, + 252,130,130,130,252,144,136,132,130,130,7,10,10,9,1,0, + 124,130,130,128,112,12,2,130,130,124,7,10,10,9,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,9,1,0, + 130,130,130,130,130,130,130,130,130,124,7,10,10,9,1,0, + 130,130,130,68,68,68,40,40,40,16,7,10,10,9,1,0, + 130,130,130,130,146,146,146,146,170,68,7,10,10,9,1,0, + 130,130,68,40,16,16,40,68,130,130,7,10,10,9,1,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 254,2,4,8,16,32,64,128,128,254,4,12,12,9,3,255, + 240,128,128,128,128,128,128,128,128,128,128,240,7,10,10,9, + 1,0,128,64,64,32,16,16,8,4,4,2,4,12,12,9, + 2,255,240,16,16,16,16,16,16,16,16,16,16,240,7,4, + 4,9,1,6,16,40,68,130,8,1,1,9,0,255,255,3, + 3,3,9,3,8,128,64,32,7,7,7,9,1,0,124,2, + 2,126,130,134,122,7,10,10,9,1,0,128,128,128,188,194, + 130,130,130,194,188,7,7,7,9,1,0,124,130,128,128,128, + 130,124,7,10,10,9,1,0,2,2,2,122,134,130,130,130, + 134,122,7,7,7,9,1,0,124,130,130,254,128,128,124,7, + 10,10,9,1,0,28,34,34,32,32,248,32,32,32,32,7, + 10,10,9,1,253,122,132,132,132,120,128,124,130,130,124,7, + 10,10,9,1,0,128,128,128,188,194,130,130,130,130,130,5, + 10,10,9,2,0,96,0,0,224,32,32,32,32,32,248,6, + 13,13,9,1,253,12,0,0,28,4,4,4,4,4,132,132, + 132,120,7,10,10,9,1,0,128,128,128,130,140,176,192,176, + 140,130,5,10,10,9,2,0,224,32,32,32,32,32,32,32, + 32,248,7,7,7,9,1,0,236,146,146,146,146,146,130,7, + 7,7,9,1,0,188,194,130,130,130,130,130,7,7,7,9, + 1,0,124,130,130,130,130,130,124,7,10,10,9,1,253,188, + 194,130,130,130,194,188,128,128,128,7,10,10,9,1,253,122, + 134,130,130,130,134,122,2,2,2,7,7,7,9,1,0,156, + 98,66,64,64,64,64,7,7,7,9,1,0,124,130,128,124, + 2,130,124,7,9,9,9,1,0,32,32,252,32,32,32,32, + 34,28,7,7,7,9,1,0,132,132,132,132,132,132,122,7, + 7,7,9,1,0,130,130,68,68,40,40,16,7,7,7,9, + 1,0,130,130,146,146,146,170,68,7,7,7,9,1,0,130, + 68,40,16,40,68,130,6,10,10,9,1,253,132,132,132,132, + 132,140,116,4,132,120,7,7,7,9,1,0,254,4,8,16, + 32,64,254,5,12,12,9,3,255,56,64,64,64,32,192,192, + 32,64,64,64,56,1,12,12,9,4,255,128,128,128,128,128, + 128,128,128,128,128,128,128,5,12,12,9,1,255,224,16,16, + 16,32,24,24,32,16,16,16,224,7,3,3,9,1,7,98, + 146,140,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,9,0,12,1,11,11,9,4,0,128, + 128,0,0,128,128,128,128,128,128,128,6,8,8,9,1,0, + 8,120,148,144,160,164,120,64,7,10,10,9,1,0,28,34, + 32,32,248,32,32,96,162,92,7,6,6,9,1,3,130,124, + 68,68,124,130,7,10,10,9,1,0,130,130,68,40,124,16, + 124,16,16,16,1,11,11,9,4,255,128,128,128,128,128,0, + 128,128,128,128,128,4,11,11,9,2,255,96,144,128,96,144, + 144,144,96,16,144,96,5,2,2,9,2,9,136,136,8,9, + 9,9,0,1,60,66,153,165,161,165,153,66,60,5,7,7, + 9,1,3,96,144,112,144,120,0,248,7,8,8,9,1,1, + 18,36,72,144,144,72,36,18,6,4,4,9,1,2,252,4, + 4,4,5,1,1,9,2,4,248,8,9,9,9,0,1,60, + 66,185,165,185,169,165,66,60,6,1,1,9,1,9,252,4, + 4,4,9,3,6,96,144,144,96,7,9,9,9,1,1,16, + 16,16,254,16,16,16,0,254,4,6,6,9,1,4,96,144, + 16,96,128,240,4,6,6,9,1,4,96,144,32,16,144,96, + 3,3,3,9,3,8,32,64,128,7,9,9,9,1,254,130, + 130,130,130,130,198,186,128,128,7,10,10,9,1,0,126,138, + 138,138,122,10,10,10,10,10,2,2,2,9,4,4,192,192, + 4,3,3,9,2,253,48,144,96,3,6,6,9,1,4,64, + 192,64,64,64,224,5,6,6,9,1,4,112,136,136,112,0, + 248,7,8,8,9,1,1,144,72,36,18,18,36,72,144,7, + 10,10,9,1,0,64,192,64,64,66,230,10,18,26,6,7, + 10,10,9,1,0,64,192,64,64,76,242,2,12,16,30,7, + 10,10,9,1,0,96,144,32,16,146,102,10,18,26,6,7, + 10,10,9,1,0,16,0,16,16,32,64,128,130,130,124,7, + 12,12,9,1,0,64,32,16,0,56,68,130,130,254,130,130, + 130,7,12,12,9,1,0,4,8,16,0,56,68,130,130,254, + 130,130,130,7,12,12,9,1,0,16,40,68,0,56,68,130, + 130,254,130,130,130,7,11,11,9,1,0,98,156,0,56,68, + 130,130,254,130,130,130,7,11,11,9,1,0,68,68,0,56, + 68,130,130,254,130,130,130,7,11,11,9,1,0,56,68,56, + 40,68,130,130,254,130,130,130,7,10,10,9,1,0,110,144, + 144,144,144,252,144,144,144,158,7,13,13,9,1,253,124,130, + 128,128,128,128,128,128,130,124,24,72,48,7,12,12,9,1, + 0,64,32,16,0,254,64,64,120,64,64,64,254,7,12,12, + 9,1,0,4,8,16,0,254,64,64,120,64,64,64,254,7, + 12,12,9,1,0,16,40,68,0,254,64,64,120,64,64,64, + 254,7,11,11,9,1,0,68,68,0,254,64,64,120,64,64, + 64,254,5,12,12,9,2,0,128,64,32,0,248,32,32,32, + 32,32,32,248,5,12,12,9,2,0,8,16,32,0,248,32, + 32,32,32,32,32,248,5,12,12,9,2,0,32,80,136,0, + 248,32,32,32,32,32,32,248,5,11,11,9,2,0,136,136, + 0,248,32,32,32,32,32,32,248,8,10,10,9,0,0,124, + 66,65,65,225,65,65,65,66,124,7,11,11,9,1,0,98, + 156,0,130,194,162,146,146,138,134,130,7,12,12,9,1,0, + 64,32,16,0,124,130,130,130,130,130,130,124,7,12,12,9, + 1,0,4,8,16,0,124,130,130,130,130,130,130,124,7,12, + 12,9,1,0,16,40,68,0,124,130,130,130,130,130,130,124, + 7,11,11,9,1,0,98,156,0,124,130,130,130,130,130,130, + 124,7,11,11,9,1,0,68,68,0,124,130,130,130,130,130, + 130,124,7,7,7,9,1,1,130,68,40,16,40,68,130,7, + 12,12,9,1,255,2,124,134,138,138,146,146,162,162,194,124, + 128,7,12,12,9,1,0,64,32,16,0,130,130,130,130,130, + 130,130,124,7,12,12,9,1,0,4,8,16,0,130,130,130, + 130,130,130,130,124,7,12,12,9,1,0,16,40,68,0,130, + 130,130,130,130,130,130,124,7,11,11,9,1,0,68,68,0, + 130,130,130,130,130,130,130,124,7,12,12,9,1,0,4,8, + 16,0,130,130,68,40,16,16,16,16,7,10,10,9,1,0, + 128,128,252,130,130,130,252,128,128,128,6,10,10,9,1,0, + 56,68,68,72,208,72,68,68,68,88,7,11,11,9,1,0, + 32,16,8,0,124,2,2,126,130,134,122,7,11,11,9,1, + 0,4,8,16,0,124,2,2,126,130,134,122,7,11,11,9, + 1,0,16,40,68,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,50,76,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,68,68,0,124,2,2,126,130,134,122,7,11,11, + 9,1,0,24,36,24,0,124,2,2,126,130,134,122,7,7, + 7,9,1,0,108,146,18,124,144,146,110,7,10,10,9,1, + 253,124,130,128,128,128,130,124,24,72,48,7,11,11,9,1, + 0,64,32,16,0,124,130,130,254,128,128,124,7,11,11,9, + 1,0,4,8,16,0,124,130,130,254,128,128,124,7,11,11, + 9,1,0,16,40,68,0,124,130,130,254,128,128,124,7,10, + 10,9,1,0,68,68,0,124,130,130,254,128,128,124,5,11, + 11,9,2,0,128,64,32,0,224,32,32,32,32,32,248,5, + 11,11,9,2,0,16,32,64,0,224,32,32,32,32,32,248, + 6,11,11,9,1,0,32,80,136,0,112,16,16,16,16,16, + 124,5,10,10,9,2,0,144,144,0,224,32,32,32,32,32, + 248,7,11,11,9,1,0,72,48,80,8,124,130,130,130,130, + 130,124,7,10,10,9,1,0,98,156,0,188,194,130,130,130, + 130,130,7,11,11,9,1,0,64,32,16,0,124,130,130,130, + 130,130,124,7,11,11,9,1,0,4,8,16,0,124,130,130, + 130,130,130,124,7,11,11,9,1,0,16,40,68,0,124,130, + 130,130,130,130,124,7,10,10,9,1,0,98,156,0,124,130, + 130,130,130,130,124,7,10,10,9,1,0,68,68,0,124,130, + 130,130,130,130,124,7,9,9,9,1,0,16,56,16,0,254, + 0,16,56,16,7,9,9,9,1,255,2,124,138,138,146,162, + 162,124,128,7,11,11,9,1,0,64,32,16,0,132,132,132, + 132,132,132,122,7,11,11,9,1,0,4,8,16,0,132,132, + 132,132,132,132,122,7,11,11,9,1,0,16,40,68,0,132, + 132,132,132,132,132,122,7,10,10,9,1,0,72,72,0,132, + 132,132,132,132,132,122,6,14,14,9,1,253,8,16,32,0, + 132,132,132,132,132,140,116,4,132,120,7,12,12,9,1,253, + 128,128,128,188,194,130,130,194,188,128,128,128,6,13,13,9, + 1,253,72,72,0,132,132,132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=13 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15r[1427] U8G_SECTION(".progmem.u8g_font_9x15r") = { + 0,9,15,0,253,10,1,232,3,216,32,127,253,12,253,11, + 253,0,0,0,9,0,12,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,9,3,7,144,144, + 144,6,8,8,9,1,1,72,72,252,72,72,252,72,72,7, + 11,11,9,1,255,16,124,146,144,80,56,20,18,146,124,16, + 7,10,10,9,1,0,66,164,164,72,16,16,36,74,74,132, + 7,10,10,9,1,0,96,144,144,144,96,98,148,136,148,98, + 1,3,3,9,4,7,128,128,128,3,12,12,9,3,255,32, + 64,64,128,128,128,128,128,128,64,64,32,3,12,12,9,3, + 255,128,64,64,32,32,32,32,32,32,64,64,128,7,7,7, + 9,1,3,16,146,84,56,84,146,16,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,5,5,9,4,253,192,192,64, + 64,128,7,1,1,9,1,4,254,2,2,2,9,4,0,192, + 192,7,10,10,9,1,0,2,4,4,8,16,16,32,64,64, + 128,7,10,10,9,1,0,56,68,130,130,130,130,130,130,68, + 56,7,10,10,9,1,0,16,48,80,144,16,16,16,16,16, + 254,7,10,10,9,1,0,124,130,130,4,8,16,32,64,128, + 254,7,10,10,9,1,0,254,2,4,8,28,2,2,2,130, + 124,7,10,10,9,1,0,4,12,20,36,68,132,254,4,4, + 4,7,10,10,9,1,0,254,128,128,188,194,2,2,2,130, + 124,7,10,10,9,1,0,60,64,128,128,188,194,130,130,130, + 124,7,10,10,9,1,0,254,2,4,4,8,8,16,16,32, + 32,7,10,10,9,1,0,56,68,130,68,56,68,130,130,68, + 56,7,10,10,9,1,0,124,130,130,130,134,122,2,2,4, + 120,2,7,7,9,4,0,192,192,0,0,0,192,192,2,10, + 10,9,4,253,192,192,0,0,0,192,192,64,64,128,5,10, + 10,9,2,0,8,16,32,64,128,128,64,32,16,8,7,4, + 4,9,1,2,254,0,0,254,5,10,10,9,2,0,128,64, + 32,16,8,8,16,32,64,128,7,10,10,9,1,0,124,130, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,124,130, + 130,158,162,166,154,128,128,124,7,10,10,9,1,0,16,40, + 68,130,130,130,254,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,124,130, + 128,128,128,128,128,128,130,124,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,124,130, + 128,128,128,142,130,130,130,124,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,8,10,10,9,1,0,31,4, + 4,4,4,4,4,4,132,120,7,10,10,9,1,0,130,132, + 136,144,224,160,144,136,132,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,170,146,146,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,252,130, + 130,130,252,128,128,128,128,128,7,12,12,9,1,254,124,130, + 130,130,130,130,130,162,146,124,8,6,7,10,10,9,1,0, + 252,130,130,130,252,144,136,132,130,130,7,10,10,9,1,0, + 124,130,130,128,112,12,2,130,130,124,7,10,10,9,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,9,1,0, + 130,130,130,130,130,130,130,130,130,124,7,10,10,9,1,0, + 130,130,130,68,68,68,40,40,40,16,7,10,10,9,1,0, + 130,130,130,130,146,146,146,146,170,68,7,10,10,9,1,0, + 130,130,68,40,16,16,40,68,130,130,7,10,10,9,1,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 254,2,4,8,16,32,64,128,128,254,4,12,12,9,3,255, + 240,128,128,128,128,128,128,128,128,128,128,240,7,10,10,9, + 1,0,128,64,64,32,16,16,8,4,4,2,4,12,12,9, + 2,255,240,16,16,16,16,16,16,16,16,16,16,240,7,4, + 4,9,1,6,16,40,68,130,8,1,1,9,0,255,255,3, + 3,3,9,3,8,128,64,32,7,7,7,9,1,0,124,2, + 2,126,130,134,122,7,10,10,9,1,0,128,128,128,188,194, + 130,130,130,194,188,7,7,7,9,1,0,124,130,128,128,128, + 130,124,7,10,10,9,1,0,2,2,2,122,134,130,130,130, + 134,122,7,7,7,9,1,0,124,130,130,254,128,128,124,7, + 10,10,9,1,0,28,34,34,32,32,248,32,32,32,32,7, + 10,10,9,1,253,122,132,132,132,120,128,124,130,130,124,7, + 10,10,9,1,0,128,128,128,188,194,130,130,130,130,130,5, + 10,10,9,2,0,96,0,0,224,32,32,32,32,32,248,6, + 13,13,9,1,253,12,0,0,28,4,4,4,4,4,132,132, + 132,120,7,10,10,9,1,0,128,128,128,130,140,176,192,176, + 140,130,5,10,10,9,2,0,224,32,32,32,32,32,32,32, + 32,248,7,7,7,9,1,0,236,146,146,146,146,146,130,7, + 7,7,9,1,0,188,194,130,130,130,130,130,7,7,7,9, + 1,0,124,130,130,130,130,130,124,7,10,10,9,1,253,188, + 194,130,130,130,194,188,128,128,128,7,10,10,9,1,253,122, + 134,130,130,130,134,122,2,2,2,7,7,7,9,1,0,156, + 98,66,64,64,64,64,7,7,7,9,1,0,124,130,128,124, + 2,130,124,7,9,9,9,1,0,32,32,252,32,32,32,32, + 34,28,7,7,7,9,1,0,132,132,132,132,132,132,122,7, + 7,7,9,1,0,130,130,68,68,40,40,16,7,7,7,9, + 1,0,130,130,146,146,146,170,68,7,7,7,9,1,0,130, + 68,40,16,40,68,130,6,10,10,9,1,253,132,132,132,132, + 132,140,116,4,132,120,7,7,7,9,1,0,254,4,8,16, + 32,64,254,5,12,12,9,3,255,56,64,64,64,32,192,192, + 32,64,64,64,56,1,12,12,9,4,255,128,128,128,128,128, + 128,128,128,128,128,128,128,5,12,12,9,1,255,224,16,16, + 16,32,24,24,32,16,16,16,224,7,3,3,9,1,7,98, + 146,140,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 4, '1' Height: 10 + Calculated Max Values w= 9 h=18 x= 8 y=12 dx= 9 dy= 0 ascent=14 len=36 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 4 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[3936] U8G_SECTION(".progmem.u8g_font_9x18_67_75") = { + 0,9,18,0,252,4,1,255,4,34,32,255,0,14,252,10, + 0,8,7,7,9,0,1,72,36,18,255,18,36,72,7,10, + 10,9,1,0,16,16,16,146,84,56,146,84,56,16,7,7, + 7,9,1,1,16,34,68,248,68,34,16,7,7,7,9,1, + 1,16,136,68,62,68,136,16,7,7,7,9,1,1,16,34, + 66,254,66,34,16,7,10,10,9,1,0,16,56,84,146,16, + 16,16,16,16,124,7,7,7,9,1,1,16,136,132,254,132, + 136,16,7,10,10,9,1,0,124,16,16,16,16,16,146,84, + 56,16,7,10,10,9,1,0,16,56,84,146,16,146,84,56, + 16,254,8,7,7,9,0,1,16,34,65,254,64,32,16,8, + 7,7,9,0,1,8,68,130,127,2,4,8,8,7,7,9, + 0,1,16,34,69,254,68,36,16,8,7,7,9,0,1,8, + 68,162,127,34,36,8,9,5,10,9,0,2,34,0,73,0, + 247,128,65,0,34,0,9,5,10,9,0,2,34,0,73,0, + 255,128,73,0,34,0,5,10,10,9,2,0,32,64,72,184, + 200,16,16,160,120,32,6,10,10,9,1,0,32,64,252,68, + 36,4,4,4,4,4,7,10,10,9,1,0,8,4,254,132, + 136,128,128,128,128,128,6,10,10,9,1,0,4,4,4,4, + 4,36,68,252,64,32,7,10,10,9,1,0,128,128,128,128, + 128,136,132,254,4,8,7,8,8,9,1,0,248,8,8,8, + 8,42,28,8,7,8,8,9,1,1,2,2,2,34,66,254, + 64,32,9,7,14,9,0,2,14,0,17,0,32,128,32,128, + 168,128,112,0,32,0,9,7,14,9,0,2,56,0,68,0, + 130,0,130,0,138,128,7,0,2,0,7,10,10,9,1,0, + 254,64,112,96,80,8,8,4,2,2,7,9,9,9,1,0, + 144,160,254,160,146,10,254,10,18,9,7,14,9,0,1,50, + 0,71,0,138,128,130,0,130,0,68,0,56,0,9,7,14, + 9,0,1,38,0,113,0,168,128,32,128,32,128,17,0,14, + 0,7,4,4,9,1,3,16,32,64,254,7,4,4,9,1, + 0,254,64,32,16,4,10,10,9,4,0,128,192,160,144,128, + 128,128,128,128,128,4,10,10,9,1,0,16,48,80,144,16, + 16,16,16,16,16,7,4,4,9,1,3,16,8,4,254,7, + 4,4,9,1,0,254,4,8,16,4,10,10,9,4,0,128, + 128,128,128,128,128,144,160,192,128,4,10,10,9,1,0,16, + 16,16,16,16,16,144,80,48,16,7,9,9,9,1,0,8, + 4,254,4,40,64,254,64,32,9,10,20,9,0,0,34,0, + 114,0,170,0,34,0,34,0,34,0,34,0,42,128,39,0, + 34,0,7,9,9,9,1,0,32,64,254,64,40,4,254,4, + 8,7,10,10,9,1,0,32,64,254,64,32,32,64,254,64, + 32,9,10,20,9,0,0,34,0,119,0,170,128,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,7,10,10,9,1, + 0,8,4,254,4,8,8,4,254,4,8,9,10,20,9,0, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,170, + 128,119,0,34,0,7,7,7,9,1,1,32,64,254,0,254, + 4,8,7,7,7,9,1,1,8,4,254,0,254,64,32,9, + 7,14,9,0,1,16,0,33,0,127,128,130,0,127,128,36, + 0,16,0,9,7,14,9,0,1,20,0,34,0,127,0,136, + 128,127,0,34,0,20,0,9,7,14,9,0,1,4,0,18, + 0,255,0,32,128,255,0,66,0,4,0,9,7,14,9,0, + 1,16,0,32,0,127,128,128,0,127,128,32,0,16,0,7, + 10,10,9,1,0,16,40,108,170,40,40,40,40,40,40,9, + 7,14,9,0,1,4,0,2,0,255,0,0,128,255,0,2, + 0,4,0,7,10,10,9,1,0,40,40,40,40,40,40,170, + 108,40,16,9,7,14,9,0,1,20,0,34,0,127,0,128, + 128,127,0,34,0,20,0,7,10,10,9,1,0,16,40,108, + 170,40,40,170,108,40,16,7,7,7,9,1,1,252,144,136, + 196,162,144,8,7,7,7,9,1,1,126,18,34,70,138,18, + 32,7,7,7,9,1,1,32,18,138,70,34,18,126,7,7, + 7,9,1,1,8,144,162,196,136,144,252,9,9,18,9,0, + 0,8,0,16,0,63,128,64,0,255,128,64,0,63,128,16, + 0,8,0,9,9,18,9,0,0,8,0,4,0,254,0,1, + 0,255,128,1,0,254,0,4,0,8,0,8,7,7,9,0, + 1,16,32,72,245,66,32,16,8,7,7,9,0,1,8,4, + 18,175,66,4,8,7,10,10,9,1,0,16,56,84,146,16, + 124,16,124,16,16,7,10,10,9,1,0,16,16,124,16,124, + 16,146,84,56,16,7,7,7,9,1,1,16,32,64,182,64, + 32,16,7,10,10,9,1,0,16,40,84,146,0,16,16,0, + 16,16,7,7,7,9,1,1,16,8,4,218,4,8,16,7, + 10,10,9,1,0,16,16,0,16,16,0,146,84,40,16,7, + 5,5,9,1,2,144,160,254,160,144,7,5,5,9,1,2, + 18,10,254,10,18,9,7,14,9,0,1,16,0,48,0,95, + 128,128,128,95,128,48,0,16,0,7,10,10,9,1,0,16, + 40,68,238,40,40,40,40,40,56,9,7,14,9,0,1,4, + 0,6,0,253,0,128,128,253,0,6,0,4,0,7,10,10, + 9,1,0,56,40,40,40,40,40,238,68,40,16,7,11,11, + 9,1,0,16,40,68,238,40,40,56,0,56,40,56,7,11, + 11,9,1,255,16,40,68,238,40,40,40,40,108,68,124,7, + 11,11,9,1,255,16,40,68,254,40,40,40,40,108,68,124, + 7,11,11,9,1,255,16,40,68,254,56,56,56,56,124,68, + 124,7,10,10,9,1,0,16,40,68,238,68,238,40,40,40, + 56,7,11,11,9,1,255,16,40,68,238,68,238,40,40,108, + 68,124,9,7,14,9,0,1,132,0,134,0,253,0,128,128, + 253,0,134,0,132,0,7,7,7,9,1,0,252,128,184,176, + 168,132,2,7,7,7,9,1,0,128,66,42,26,58,2,126, + 7,11,11,9,1,255,16,40,68,238,40,40,40,238,68,40, + 16,9,7,14,9,0,1,4,0,50,0,73,0,255,128,73, + 0,50,0,4,0,9,10,20,9,0,0,34,0,39,0,42, + 128,34,0,34,0,34,0,34,0,170,0,114,0,34,0,7, + 13,13,9,1,254,8,4,254,4,8,4,254,4,8,4,254, + 4,8,8,5,5,9,0,2,36,68,255,68,36,8,5,5, + 9,0,2,36,34,255,34,36,9,5,10,9,0,2,42,0, + 73,0,255,128,73,0,42,0,8,5,5,9,0,2,42,74, + 255,74,42,8,5,5,9,0,2,84,82,255,82,84,9,5, + 10,9,0,2,85,0,148,128,255,128,148,128,85,0,7,7, + 7,9,1,1,16,48,80,158,80,48,16,7,7,7,9,1, + 1,16,24,20,242,20,24,16,8,5,5,9,0,2,36,102, + 189,102,36,9,9,18,9,0,5,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,9,2,4,9,0, + 252,255,128,255,128,9,4,8,9,0,252,255,128,255,128,255, + 128,255,128,9,7,14,9,0,252,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,9,9,18,9,0,252,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,9, + 11,22,9,0,252,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,9,14,28,9,0, + 252,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,9,16,32, + 9,0,252,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,9,18,36,9,0,252,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,8,18,18, + 9,0,252,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,7,18,18,9,0,252,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,254,254,254,254,6,18,18, + 9,0,252,252,252,252,252,252,252,252,252,252,252,252,252,252, + 252,252,252,252,252,5,18,18,9,0,252,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,3,18,18, + 9,0,252,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,2,18,18,9,0,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,1,18,18, + 9,0,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,4,18,18,9,5,252,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,9,17,34, + 9,0,253,85,0,0,0,170,128,0,0,85,0,0,0,170, + 128,0,0,85,0,0,0,170,128,0,0,85,0,0,0,170, + 128,0,0,85,0,9,18,36,9,0,252,170,128,85,0,170, + 128,85,0,170,128,85,0,170,128,85,0,170,128,85,0,170, + 128,85,0,170,128,85,0,170,128,85,0,170,128,85,0,9, + 18,36,9,0,252,255,128,170,128,255,128,85,0,255,128,170, + 128,255,128,85,0,255,128,170,128,255,128,85,0,255,128,170, + 128,255,128,85,0,255,128,170,128,9,2,4,9,0,12,255, + 128,255,128,1,18,18,9,8,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,5,9,9,9,0, + 252,248,248,248,248,248,248,248,248,248,4,9,9,9,5,252, + 240,240,240,240,240,240,240,240,240,5,9,9,9,0,5,248, + 248,248,248,248,248,248,248,248,9,18,36,9,0,252,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,9,18,36,9,0,252,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,9,18,36,9, + 0,252,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,9,18,36,9,0,252,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 4,9,9,9,5,5,240,240,240,240,240,240,240,240,240,9, + 18,36,9,0,252,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,9,18,36,9,0,252,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,7,7,7,9,1,1,254,254,254,254,254,254,254, + 7,7,7,9,1,1,254,130,130,130,130,130,254,7,7,7, + 9,1,1,124,130,130,130,130,130,124,7,7,7,9,1,1, + 254,130,186,186,186,130,254,7,7,7,9,1,1,254,130,254, + 130,254,130,254,7,7,7,9,1,1,254,170,170,170,170,170, + 254,7,7,7,9,1,1,254,170,254,170,254,170,254,7,7, + 7,9,1,1,254,146,138,198,162,146,254,7,7,7,9,1, + 1,254,146,162,198,138,146,254,7,7,7,9,1,1,254,214, + 138,214,162,214,254,3,3,3,9,3,3,224,224,224,3,3, + 3,9,3,3,224,160,224,9,5,10,9,0,2,255,128,255, + 128,255,128,255,128,255,128,9,5,10,9,0,2,255,128,128, + 128,128,128,128,128,255,128,5,9,9,9,2,0,248,248,248, + 248,248,248,248,248,248,5,9,9,9,2,0,248,136,136,136, + 136,136,136,136,248,9,5,10,9,0,2,127,128,127,128,255, + 128,255,0,255,0,9,5,10,9,0,2,127,128,64,128,128, + 128,129,0,255,0,9,10,20,9,0,0,8,0,8,0,28, + 0,28,0,62,0,62,0,127,0,127,0,255,128,255,128,9, + 10,20,9,0,0,8,0,8,0,20,0,20,0,34,0,34, + 0,65,0,65,0,128,128,255,128,7,7,7,9,1,1,16, + 16,56,56,124,124,254,7,7,7,9,1,1,16,16,40,40, + 68,68,254,9,9,18,9,0,0,192,0,240,0,252,0,255, + 0,255,128,255,0,252,0,240,0,192,0,9,9,18,9,0, + 0,192,0,176,0,140,0,131,0,128,128,131,0,140,0,176, + 0,192,0,7,7,7,9,1,1,128,224,248,254,248,224,128, + 7,7,7,9,1,1,128,224,152,134,152,224,128,9,5,10, + 9,0,2,224,0,252,0,255,128,252,0,224,0,9,5,10, + 9,0,2,224,0,156,0,131,128,156,0,224,0,9,10,20, + 9,0,0,255,128,255,128,127,0,127,0,62,0,62,0,28, + 0,28,0,8,0,8,0,9,10,20,9,0,0,255,128,128, + 128,65,0,65,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,7,7,9,1,1,254,124,124,56,56,16,16,7,7, + 7,9,1,1,254,68,68,40,40,16,16,9,9,18,9,0, + 0,1,128,7,128,31,128,127,128,255,128,127,128,31,128,7, + 128,1,128,9,9,18,9,0,0,1,128,6,128,24,128,96, + 128,128,128,96,128,24,128,6,128,1,128,7,7,7,9,1, + 1,2,14,62,254,62,14,2,7,7,7,9,1,1,2,14, + 50,194,50,14,2,9,5,10,9,0,2,3,128,31,128,255, + 128,31,128,3,128,9,5,10,9,0,2,3,128,28,128,224, + 128,28,128,3,128,9,9,18,9,0,0,8,0,28,0,62, + 0,127,0,255,128,127,0,62,0,28,0,8,0,9,9,18, + 9,0,0,8,0,20,0,34,0,65,0,128,128,65,0,34, + 0,20,0,8,0,9,9,18,9,0,0,8,0,20,0,34, + 0,73,0,156,128,73,0,34,0,20,0,8,0,7,7,7, + 9,1,1,56,68,146,186,146,68,56,5,9,9,9,2,0, + 32,32,80,80,136,80,80,32,32,7,7,7,9,1,1,56, + 68,130,130,130,68,56,7,7,7,9,1,1,16,68,0,130, + 0,68,16,7,7,7,9,1,1,56,108,170,170,170,108,56, + 7,7,7,9,1,1,56,68,146,170,146,68,56,7,7,7, + 9,1,1,56,124,254,254,254,124,56,7,7,7,9,1,1, + 56,116,242,242,242,116,56,7,7,7,9,1,1,56,92,158, + 158,158,92,56,7,7,7,9,1,1,56,68,130,254,254,124, + 56,7,7,7,9,1,1,56,124,254,254,130,68,56,7,7, + 7,9,1,1,56,92,158,158,130,68,56,7,7,7,9,1, + 1,56,92,158,254,254,124,56,4,7,7,9,1,1,48,112, + 240,240,240,112,48,4,7,7,9,4,1,192,224,240,240,240, + 224,192,9,18,36,9,0,252,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,227,128,193,128,193,128,193,128,227,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,18,36,9, + 0,252,255,128,255,128,255,128,255,128,255,128,255,128,227,128, + 221,128,190,128,190,128,190,128,221,128,227,128,255,128,255,128, + 255,128,255,128,255,128,9,10,20,9,0,4,255,128,255,128, + 255,128,255,128,255,128,255,128,227,128,221,128,190,128,190,128, + 9,9,18,9,0,252,190,128,190,128,221,128,227,128,255,128, + 255,128,255,128,255,128,255,128,4,4,4,9,1,4,48,64, + 128,128,4,4,4,9,4,4,192,32,16,16,4,4,4,9, + 4,1,16,16,32,192,4,4,4,9,1,1,128,128,64,48, + 7,4,4,9,1,4,56,68,130,130,7,4,4,9,1,1, + 130,130,68,56,7,7,7,9,1,1,2,6,14,30,62,126, + 254,7,7,7,9,1,1,128,192,224,240,248,252,254,7,7, + 7,9,1,1,254,252,248,240,224,192,128,7,7,7,9,1, + 1,254,126,62,30,14,6,2,5,5,5,9,2,2,112,136, + 136,136,112,7,7,7,9,1,1,254,242,242,242,242,242,254, + 7,7,7,9,1,1,254,158,158,158,158,158,254,7,7,7, + 9,1,1,254,254,250,242,226,194,254,7,7,7,9,1,1, + 254,134,142,158,190,254,254,7,7,7,9,1,1,254,146,146, + 146,146,146,254,9,10,20,9,0,0,8,0,8,0,20,0, + 20,0,34,0,42,0,93,0,73,0,128,128,255,128,9,10, + 20,9,0,0,8,0,8,0,28,0,28,0,58,0,58,0, + 121,0,121,0,248,128,255,128,9,10,20,9,0,0,8,0, + 8,0,28,0,28,0,46,0,46,0,79,0,79,0,143,128, + 255,128,9,9,18,9,0,0,62,0,65,0,128,128,128,128, + 128,128,128,128,128,128,65,0,62,0,7,7,7,9,1,1, + 254,146,146,242,130,130,254,7,7,7,9,1,1,254,130,130, + 242,146,146,254,7,7,7,9,1,1,254,130,130,158,146,146, + 254,7,7,7,9,1,1,254,146,146,158,130,130,254,7,7, + 7,9,1,1,124,146,146,242,130,130,124,7,7,7,9,1, + 1,124,130,130,242,146,146,124,7,7,7,9,1,1,124,130, + 130,158,146,146,124,7,7,7,9,1,1,124,146,146,158,130, + 130,124,6,6,6,9,1,1,252,136,144,160,192,128,6,6, + 6,9,1,1,252,68,36,20,12,4,6,6,6,9,1,1, + 128,192,160,144,136,252,6,6,6,9,1,1,252,132,132,132, + 132,252,6,6,6,9,1,1,252,252,252,252,252,252,5,5, + 5,9,2,1,248,136,136,136,248,5,5,5,9,2,1,248, + 248,248,248,248,6,6,6,9,1,1,4,12,20,36,68,252 + }; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 5 + Calculated Max Values w= 9 h=10 x= 3 y= 3 dx= 9 dy= 0 ascent=10 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_75r[792] U8G_SECTION(".progmem.u8g_font_9x18_75r") = { + 0,9,18,0,252,9,2,33,0,0,32,79,0,10,0,9, + 0,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 9 h=12 x= 4 y= 5 dx= 9 dy= 0 ascent=12 len=24 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =12 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[3336] U8G_SECTION(".progmem.u8g_font_9x18_78_79") = { + 0,9,18,0,252,9,2,231,4,175,32,255,0,12,255,11, + 0,9,9,18,9,0,0,62,0,28,0,136,128,201,128,247, + 128,201,128,136,128,28,0,62,0,9,9,18,9,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,9,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,8,0,28,0,62,0,255, + 128,62,0,28,0,8,0,8,0,9,9,18,9,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,9,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,9,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,9,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,62,0,119,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 235,128,93,0,42,0,34,0,127,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 247,128,73,0,54,0,42,0,127,0,65,0,8,7,7,9, + 0,2,24,24,44,199,46,60,102,8,9,9,9,0,0,24, + 219,255,126,24,126,255,219,24,8,9,9,9,0,0,24,219, + 255,102,36,102,255,219,24,9,9,18,9,0,0,8,0,73, + 0,42,0,28,0,255,128,28,0,42,0,73,0,8,0,9, + 9,18,9,0,0,8,0,73,0,62,0,62,0,255,128,62, + 0,62,0,73,0,8,0,9,9,18,9,0,0,8,0,73, + 0,54,0,62,0,213,128,62,0,54,0,73,0,8,0,9, + 9,18,9,0,0,8,0,136,128,107,0,62,0,28,0,62, + 0,107,0,136,128,8,0,9,9,18,9,0,0,34,0,20, + 0,148,128,127,0,28,0,127,0,148,128,20,0,34,0,9, + 9,18,9,0,0,34,0,54,0,255,128,127,0,62,0,127, + 0,255,128,54,0,34,0,9,9,18,9,0,0,42,0,42, + 0,221,128,62,0,255,128,62,0,221,128,42,0,42,0,9, + 9,18,9,0,0,42,0,42,0,221,128,42,0,255,128,42, + 0,221,128,42,0,42,0,9,11,22,9,0,0,28,0,28, + 0,201,128,201,128,34,0,8,0,34,0,201,128,201,128,28, + 0,28,0,9,11,22,9,0,0,28,0,28,0,201,128,201, + 128,62,0,20,0,62,0,201,128,201,128,28,0,28,0,9, + 11,22,9,0,0,28,0,28,0,201,128,201,128,62,0,28, + 0,62,0,201,128,201,128,28,0,28,0,9,11,22,9,0, + 0,28,0,20,0,201,128,201,128,62,0,20,0,127,0,170, + 128,201,128,28,0,28,0,8,9,9,9,0,0,24,24,219, + 255,36,36,126,231,66,255,255,255,8,9,9,9,0,0,24, + 203,189,110,24,118,189,211,24,9,12,24,9,0,0,8,0, + 42,0,93,0,170,128,107,0,221,128,221,128,107,0,170,128, + 93,0,42,0,8,0,9,12,24,9,0,0,8,0,42,0, + 93,0,170,128,107,0,221,128,221,128,107,0,170,128,93,0, + 42,0,8,0,9,12,24,9,0,0,8,0,42,0,93,0, + 170,128,107,0,221,128,221,128,107,0,170,128,93,0,42,0, + 8,0,9,9,18,9,0,0,8,0,73,0,42,0,20,0, + 235,128,20,0,42,0,73,0,8,0,9,9,18,9,0,0, + 8,0,73,0,42,0,20,0,235,128,20,0,42,0,73,0, + 8,0,8,9,9,9,0,0,24,219,203,60,24,60,211,219, + 24,9,9,18,9,0,0,8,0,73,0,42,0,0,0,235, + 128,0,0,42,0,73,0,8,0,9,9,18,9,0,0,8, + 0,73,0,42,0,28,0,255,128,28,0,42,0,73,0,8, + 0,255,9,8,16,9,0,1,62,0,67,0,129,128,129,128, + 129,128,129,128,67,0,62,0,255,9,9,18,9,0,0,254, + 0,130,0,131,128,131,128,131,128,131,128,255,128,63,128,63, + 128,9,9,18,9,0,0,63,128,63,128,255,128,131,128,131, + 128,131,128,131,128,130,0,254,0,8,8,8,9,0,0,254, + 131,131,131,131,131,255,127,8,8,8,9,0,0,127,255,131, + 131,131,131,131,254,255,255,255,9,9,18,9,0,0,8,0, + 28,0,8,0,65,0,227,128,65,0,8,0,28,0,8,0, + 255,1,10,10,9,4,0,128,128,128,128,128,128,128,128,128, + 128,2,10,10,9,3,0,192,192,192,192,192,192,192,192,192, + 192,3,10,10,9,3,0,224,224,224,224,224,224,224,224,224, + 224,4,6,6,9,3,5,112,128,224,240,240,96,4,6,6, + 9,3,5,96,240,240,112,16,224,9,6,12,9,0,5,115, + 128,132,0,231,0,247,128,247,128,99,0,9,6,12,9,0, + 5,99,0,247,128,247,128,115,128,16,128,231,0,255,255,7, + 10,10,9,1,0,4,126,228,228,228,124,4,100,104,48,5, + 10,10,9,2,0,112,248,248,112,32,32,0,32,112,32,5, + 10,10,9,2,0,80,248,248,112,32,32,0,32,112,32,9, + 9,18,9,0,0,99,0,247,128,255,128,255,128,127,0,62, + 0,28,0,8,0,8,0,9,9,18,9,0,0,112,0,248, + 0,252,0,126,0,63,128,126,0,252,0,248,0,112,0,9, + 12,24,9,0,0,8,0,116,128,149,0,14,0,4,0,107, + 0,247,128,255,128,127,0,62,0,28,0,8,0,9,12,24, + 9,0,0,16,0,41,0,82,0,156,0,32,0,88,0,124, + 0,60,0,254,0,254,128,255,0,126,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,227,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,237,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,152,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,152,128,132,128,132, + 128,136,128,156,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,152,128,132,128,136,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,152,128,168, + 128,188,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,144,128,152,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,140,128,144,128,152, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,132,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,148,128,136, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,148,128,140,128,132,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,164,128,170,128,170, + 128,170,128,164,128,128,128,127,0,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,239,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,7,8,8,9,1,1,48, + 24,12,254,254,12,24,48,255,255,255,7,5,5,9,1,1, + 224,250,62,14,30,8,7,7,9,1,1,8,12,230,255,230, + 12,8,7,5,5,9,1,1,30,14,62,250,224,9,7,14, + 9,0,0,48,0,28,0,31,0,255,128,31,0,28,0,48, + 0,9,9,18,9,0,0,28,0,30,0,15,0,255,128,255, + 128,255,128,15,0,30,0,28,0,9,5,10,9,0,1,2, + 0,3,0,255,128,3,0,2,0,9,7,14,9,0,0,4, + 0,6,0,255,0,255,128,255,0,6,0,4,0,9,5,10, + 9,0,1,2,0,183,0,183,128,183,0,2,0,9,5,10, + 9,0,1,2,0,171,0,171,128,171,0,2,0,9,5,10, + 9,0,1,2,0,255,0,255,128,255,0,2,0,9,8,16, + 9,0,1,128,0,112,0,78,0,33,128,31,128,62,0,112, + 0,128,0,9,8,16,9,0,1,128,0,112,0,62,0,31, + 128,33,128,78,0,112,0,128,0,9,8,16,9,0,1,128, + 0,112,0,62,0,31,128,31,128,62,0,112,0,128,0,9, + 7,14,9,0,0,132,0,134,0,255,0,255,128,127,0,6, + 0,4,0,9,7,14,9,0,0,4,0,6,0,127,0,255, + 128,255,0,134,0,132,0,6,9,9,9,2,0,16,16,248, + 248,252,248,248,16,16,8,9,9,9,0,1,4,4,254,254, + 255,254,254,4,4,9,9,18,9,0,0,24,0,28,0,22, + 0,243,0,129,128,243,0,22,0,28,0,24,0,9,9,18, + 9,0,0,24,0,28,0,26,0,249,0,192,128,249,0,26, + 0,28,0,24,0,9,9,18,9,0,0,0,128,1,128,62, + 128,64,128,129,128,243,0,238,0,60,0,56,0,9,9,18, + 9,0,0,56,0,60,0,238,0,243,0,129,128,64,128,62, + 128,1,128,0,128,8,9,9,9,0,1,16,24,20,242,129, + 243,118,28,24,8,9,9,9,0,1,24,28,118,243,129,242, + 20,24,16,9,7,14,9,0,2,4,0,250,0,129,0,64, + 128,129,128,251,0,6,0,255,9,7,14,9,0,2,6,0, + 251,0,129,128,64,128,129,0,250,0,4,0,9,9,18,9, + 0,1,28,0,127,0,251,128,1,128,0,128,1,128,251,128, + 127,0,28,0,9,5,10,9,0,3,210,0,43,0,127,128, + 43,0,210,0,9,9,18,9,0,0,16,0,56,0,92,0, + 236,0,116,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,7,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,116,0,236,0,92,0, + 56,0,16,0,9,9,18,9,0,0,16,0,24,0,28,0, + 252,0,124,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,127,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,124,0,252,0,28,0, + 24,0,16,0,9,7,14,9,0,1,3,0,3,0,113,0, + 255,128,113,0,3,0,3,0,9,7,14,9,0,1,2,0, + 115,0,121,0,255,128,121,0,115,0,2,0,9,5,10,9, + 0,2,242,0,123,0,63,128,123,0,242,0,9,7,14,9, + 0,1,226,0,242,0,123,0,63,128,123,0,242,0,226,0, + 9,7,14,9,0,1,20,0,10,0,253,0,0,128,253,0, + 10,0,20,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,8,11,11,9,0,255, + 193,99,99,85,85,73,85,85,99,99,193,8,11,11,9,1, + 255,131,198,198,170,170,146,170,170,198,198,131,9,11,22,9, + 0,255,193,128,99,0,99,0,85,0,85,0,73,0,85,0, + 85,0,99,0,99,0,193,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,5,12,12,9,2,255,248,160,160,160, + 160,160,160,160,160,160,160,248,5,12,12,9,2,255,248,40, + 40,40,40,40,40,40,40,40,40,248,3,10,10,9,3,0, + 32,32,64,64,128,128,64,64,32,32,3,10,10,9,3,0, + 128,128,64,64,32,32,64,64,128,128,6,10,10,9,1,0, + 36,36,72,72,144,144,72,72,36,36,6,10,10,9,2,0, + 144,144,72,72,36,36,72,72,144,144,255,255,255,255,9,11, + 22,9,0,0,8,0,20,0,54,0,85,0,213,128,85,0, + 85,0,85,0,85,0,85,0,85,0,9,11,22,9,0,255, + 85,0,85,0,85,0,85,0,85,0,85,0,213,128,85,0, + 54,0,20,0,8,0,8,8,8,9,0,0,28,34,169,113, + 33,1,34,28,8,8,8,9,0,0,56,68,149,142,132,128, + 68,56,9,5,10,9,0,2,114,0,169,0,255,128,169,0, + 114,0,9,5,10,9,0,2,32,0,64,0,255,128,64,0, + 32,0,9,5,10,9,0,2,2,0,1,0,255,128,1,0, + 2,0,9,5,10,9,0,2,34,0,65,0,255,128,65,0, + 34,0,9,7,14,9,0,1,16,0,32,0,127,128,128,0, + 127,128,32,0,16,0,9,7,14,9,0,1,4,0,2,0, + 255,0,0,128,255,0,2,0,4,0,9,7,14,9,0,1, + 20,0,34,0,127,0,128,128,127,0,34,0,20,0,9,5, + 10,9,0,2,32,128,64,128,255,128,64,128,32,128,9,5, + 10,9,0,2,130,0,129,0,255,128,129,0,130,0,9,7, + 14,9,0,1,16,128,32,128,127,128,128,128,127,128,32,128, + 16,128,9,7,14,9,0,1,132,0,130,0,255,0,128,128, + 255,0,130,0,132,0,9,6,12,9,0,1,2,0,1,0, + 85,128,170,128,1,0,2,0}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=14 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18B[3026] U8G_SECTION(".progmem.u8g_font_9x18B") = { + 0,9,18,0,252,10,1,242,3,225,32,255,253,14,252,11, + 253,0,0,0,9,0,14,2,11,11,9,3,0,192,192,192, + 192,192,192,192,0,0,192,192,5,4,4,9,2,7,216,216, + 216,216,7,10,10,9,1,0,108,108,108,254,108,108,254,108, + 108,108,8,11,11,9,0,255,24,126,219,216,120,60,30,27, + 219,126,24,8,10,10,9,0,0,115,222,222,108,24,24,54, + 123,123,206,8,10,10,9,0,0,112,216,216,216,112,115,222, + 204,222,115,2,4,4,9,3,7,192,192,192,192,4,12,12, + 9,2,255,48,96,96,192,192,192,192,192,192,96,96,48,4, + 12,12,9,2,255,192,96,96,48,48,48,48,48,48,96,96, + 192,8,7,7,9,0,1,24,219,126,60,126,219,24,8,7, + 7,9,0,1,24,24,24,255,24,24,24,3,4,4,9,3, + 254,224,224,96,192,7,1,1,9,1,4,254,3,2,2,9, + 3,0,224,224,8,10,10,9,0,0,3,6,6,12,24,24, + 48,96,96,192,7,10,10,9,1,0,56,108,198,198,198,198, + 198,198,108,56,8,10,10,9,0,0,24,56,120,216,24,24, + 24,24,24,255,7,10,10,9,1,0,56,108,198,6,6,12, + 24,48,96,254,7,10,10,9,1,0,254,6,12,24,56,12, + 6,6,204,120,7,10,10,9,1,0,12,28,60,108,204,204, + 254,12,12,12,7,10,10,9,1,0,254,192,192,192,248,12, + 6,6,204,120,7,10,10,9,1,0,60,96,192,192,248,204, + 198,198,108,56,7,10,10,9,1,0,254,6,12,12,24,24, + 48,48,48,48,7,10,10,9,1,0,56,108,198,108,56,108, + 198,198,108,56,7,10,10,9,1,0,56,108,198,198,110,62, + 6,6,12,120,3,7,7,9,3,0,224,224,0,0,0,224, + 224,3,9,9,9,3,254,224,224,0,0,0,224,224,96,192, + 6,9,9,9,1,0,12,24,48,96,192,96,48,24,12,7, + 4,4,9,1,2,254,0,0,254,6,9,9,9,1,0,192, + 96,48,24,12,24,48,96,192,7,10,10,9,1,0,56,108, + 198,6,12,24,48,48,0,48,9,10,20,9,0,0,62,0, + 99,0,205,128,213,128,213,128,213,128,213,128,207,0,96,0, + 62,0,7,10,10,9,1,0,16,56,56,56,108,124,108,198, + 198,198,7,10,10,9,1,0,252,198,198,198,252,198,198,198, + 198,252,7,10,10,9,1,0,60,102,192,192,192,192,192,192, + 102,60,7,10,10,9,1,0,248,204,198,198,198,198,198,198, + 204,248,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,254,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,192,7,10,10,9,1,0,56,108,198,192,192,206,198,198, + 108,56,7,10,10,9,1,0,198,198,198,198,254,198,198,198, + 198,198,6,10,10,9,1,0,252,48,48,48,48,48,48,48, + 48,252,7,10,10,9,1,0,30,12,12,12,12,12,12,204, + 204,120,7,10,10,9,1,0,198,204,216,240,224,240,216,204, + 198,198,7,10,10,9,1,0,192,192,192,192,192,192,192,192, + 192,254,7,10,10,9,1,0,198,238,254,214,198,198,198,198, + 198,198,7,10,10,9,1,0,198,198,230,246,222,206,198,198, + 198,198,7,10,10,9,1,0,124,198,198,198,198,198,198,198, + 198,124,7,10,10,9,1,0,248,204,198,198,204,248,192,192, + 192,192,8,11,11,9,1,255,56,108,198,198,198,198,198,222, + 108,62,3,7,10,10,9,1,0,252,198,198,198,198,252,216, + 204,198,198,7,10,10,9,1,0,124,198,192,192,124,6,6, + 6,198,124,6,10,10,9,1,0,252,48,48,48,48,48,48, + 48,48,48,7,10,10,9,1,0,198,198,198,198,198,198,198, + 198,108,56,7,10,10,9,1,0,198,198,198,108,108,108,56, + 56,56,16,7,10,10,9,1,0,198,198,198,198,214,214,214, + 254,238,68,7,10,10,9,1,0,198,198,108,56,16,16,56, + 108,198,198,8,10,10,9,0,0,195,195,102,60,24,24,24, + 24,24,24,7,10,10,9,1,0,254,6,6,12,24,48,96, + 192,192,254,5,12,12,9,2,255,248,192,192,192,192,192,192, + 192,192,192,192,248,8,10,10,9,0,0,192,96,96,48,24, + 24,12,6,6,3,4,12,12,9,2,255,240,48,48,48,48, + 48,48,48,48,48,48,240,8,4,4,9,0,6,24,60,102, + 195,8,1,1,9,0,255,255,4,3,3,9,2,10,192,96, + 48,7,7,7,9,1,0,124,6,6,126,198,198,126,7,10, + 10,9,1,0,192,192,192,252,198,198,198,198,198,252,7,7, + 7,9,1,0,124,198,192,192,192,198,124,7,10,10,9,1, + 0,6,6,6,126,198,198,198,198,198,126,7,7,7,9,1, + 0,124,198,198,254,192,198,124,6,10,10,9,1,0,56,108, + 108,96,96,240,96,96,96,96,7,10,10,9,1,253,126,204, + 204,204,120,192,124,198,198,124,7,10,10,9,1,0,192,192, + 192,252,198,198,198,198,198,198,6,10,10,9,1,0,48,48, + 0,240,48,48,48,48,48,252,5,13,13,9,2,253,24,24, + 0,56,24,24,24,24,24,24,216,216,112,7,10,10,9,1, + 0,192,192,192,204,216,240,240,216,204,198,6,10,10,9,1, + 0,240,48,48,48,48,48,48,48,48,252,8,7,7,9,0, + 0,254,219,219,219,219,219,195,7,7,7,9,1,0,220,230, + 198,198,198,198,198,7,7,7,9,1,0,56,108,198,198,198, + 108,56,7,10,10,9,1,253,248,204,198,198,198,204,248,192, + 192,192,7,10,10,9,1,253,62,102,198,198,198,102,62,6, + 6,6,7,7,7,9,1,0,220,118,96,96,96,96,96,7, + 7,7,9,1,0,124,198,192,124,6,198,124,7,9,9,9, + 1,0,48,48,252,48,48,48,48,54,28,7,7,7,9,1, + 0,198,198,198,198,198,198,126,7,7,7,9,1,0,198,198, + 108,108,56,56,16,8,7,7,9,0,0,195,195,219,219,219, + 255,102,7,7,7,9,1,0,198,108,56,16,56,108,198,7, + 10,10,9,1,253,198,198,108,108,108,56,56,48,176,96,6, + 7,7,9,1,0,252,12,24,48,96,192,252,6,11,11,9, + 1,0,60,96,96,96,96,192,96,96,96,96,60,2,12,12, + 9,3,255,192,192,192,192,192,192,192,192,192,192,192,192,6, + 11,11,9,1,0,224,48,48,48,48,28,48,48,48,48,224, + 8,3,3,9,0,7,115,219,206,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,9,0,14, + 2,10,10,9,4,0,192,0,192,192,192,192,192,192,192,192, + 7,8,8,9,1,0,4,124,206,208,208,230,124,64,8,10, + 10,9,0,255,30,51,48,48,124,48,48,248,191,224,7,7, + 7,9,1,2,198,254,108,68,108,254,198,8,10,10,9,0, + 0,195,195,102,60,126,24,126,24,24,24,2,11,11,9,3, + 255,192,192,192,192,192,0,192,192,192,192,192,6,11,11,9, + 1,255,120,204,192,120,204,204,204,120,12,204,120,5,2,2, + 9,2,11,216,216,8,11,11,9,0,0,60,126,195,189,165, + 161,165,189,195,126,60,5,7,7,9,1,3,112,24,120,216, + 120,0,248,8,8,8,9,0,1,27,54,108,216,216,108,54, + 27,7,5,5,9,1,2,254,254,6,6,6,6,1,1,9, + 1,4,252,8,11,11,9,0,0,60,126,195,189,165,189,169, + 173,195,126,60,6,2,2,9,1,9,252,252,5,4,4,9, + 1,8,112,216,216,112,6,9,9,9,1,1,48,48,48,252, + 48,48,48,0,252,5,6,6,9,1,4,112,216,24,48,96, + 248,5,6,6,9,1,4,112,216,48,24,216,112,4,3,3, + 9,2,10,48,96,192,7,9,9,9,1,254,198,198,198,198, + 206,222,246,192,192,7,10,10,9,1,0,126,246,246,246,118, + 54,54,54,54,54,3,2,2,9,3,4,224,224,6,3,3, + 9,1,253,24,204,120,4,6,6,9,1,4,96,224,96,96, + 96,240,5,7,7,9,1,3,112,216,216,216,112,0,248,8, + 8,8,9,0,1,216,108,54,27,27,54,108,216,8,11,11, + 9,0,0,96,224,96,96,97,99,247,15,27,31,3,8,11, + 11,9,0,0,96,224,96,96,110,115,243,6,12,24,31,8, + 11,11,9,0,0,112,152,24,48,25,155,119,15,27,31,3, + 7,10,10,9,1,0,24,24,0,24,48,96,192,198,198,124, + 7,14,14,9,1,0,96,48,24,0,16,56,56,56,108,124, + 108,198,198,198,7,14,14,9,1,0,12,24,48,0,16,56, + 56,56,108,124,108,198,198,198,7,14,14,9,1,0,16,56, + 108,0,16,56,56,56,108,124,108,198,198,198,7,13,13,9, + 1,0,118,220,0,16,56,56,56,108,124,108,198,198,198,7, + 13,13,9,1,0,108,108,0,16,56,56,56,108,124,108,198, + 198,198,7,14,14,9,1,0,56,108,108,56,16,56,56,56, + 108,124,108,198,198,198,7,10,10,9,1,0,62,60,108,108, + 110,252,204,204,204,206,7,14,14,9,1,252,60,102,192,192, + 192,192,192,192,102,60,24,12,108,56,7,14,14,9,1,0, + 96,48,24,0,254,192,192,192,248,192,192,192,192,254,7,14, + 14,9,1,0,12,24,48,0,254,192,192,192,248,192,192,192, + 192,254,7,14,14,9,1,0,16,56,108,0,254,192,192,192, + 248,192,192,192,192,254,7,13,13,9,1,0,108,108,0,254, + 192,192,192,248,192,192,192,192,254,6,14,14,9,1,0,96, + 48,24,0,252,48,48,48,48,48,48,48,48,252,6,14,14, + 9,1,0,12,24,48,0,252,48,48,48,48,48,48,48,48, + 252,6,14,14,9,1,0,16,56,108,0,252,48,48,48,48, + 48,48,48,48,252,6,13,13,9,1,0,108,108,0,252,48, + 48,48,48,48,48,48,48,252,8,10,10,9,0,0,124,102, + 99,99,243,99,99,99,102,124,7,13,13,9,1,0,118,220, + 0,198,198,230,246,222,206,198,198,198,198,7,14,14,9,1, + 0,96,48,24,0,124,198,198,198,198,198,198,198,198,124,7, + 14,14,9,1,0,12,24,48,0,124,198,198,198,198,198,198, + 198,198,124,7,14,14,9,1,0,16,56,108,0,124,198,198, + 198,198,198,198,198,198,124,7,13,13,9,1,0,118,220,0, + 124,198,198,198,198,198,198,198,198,124,7,13,13,9,1,0, + 108,108,0,124,198,198,198,198,198,198,198,198,124,8,7,7, + 9,0,1,195,102,60,24,60,102,195,7,12,12,9,1,255, + 6,126,206,206,222,222,246,246,230,230,252,192,7,14,14,9, + 1,0,96,48,24,0,198,198,198,198,198,198,198,198,108,56, + 7,14,14,9,1,0,12,24,48,0,198,198,198,198,198,198, + 198,198,108,56,7,14,14,9,1,0,16,56,108,0,198,198, + 198,198,198,198,198,198,108,56,7,13,13,9,1,0,108,108, + 0,198,198,198,198,198,198,198,198,108,56,8,14,14,9,0, + 0,12,24,48,0,195,195,102,60,24,24,24,24,24,24,7, + 10,10,9,1,0,192,192,252,198,198,198,252,192,192,192,7, + 10,10,9,1,0,60,102,102,102,236,102,102,102,102,108,7, + 11,11,9,1,0,96,48,24,0,124,6,6,126,198,198,126, + 7,11,11,9,1,0,12,24,48,0,124,6,6,126,198,198, + 126,7,11,11,9,1,0,16,56,108,0,124,6,6,126,198, + 198,126,7,10,10,9,1,0,118,220,0,124,6,6,126,198, + 198,126,7,10,10,9,1,0,108,108,0,124,6,6,126,198, + 198,126,7,11,11,9,1,0,56,108,56,0,124,6,6,126, + 198,198,126,8,7,7,9,0,0,118,27,27,127,216,219,118, + 7,11,11,9,1,252,124,198,192,192,192,198,124,24,12,108, + 56,7,11,11,9,1,0,96,48,24,0,124,198,198,254,192, + 198,124,7,11,11,9,1,0,12,24,48,0,124,198,198,254, + 192,198,124,7,11,11,9,1,0,16,56,108,0,124,198,198, + 254,192,198,124,7,10,10,9,1,0,108,108,0,124,198,198, + 254,192,198,124,6,11,11,9,1,0,192,96,48,0,240,48, + 48,48,48,48,252,6,11,11,9,1,0,12,24,48,0,240, + 48,48,48,48,48,252,6,11,11,9,1,0,32,112,216,0, + 240,48,48,48,48,48,252,6,10,10,9,1,0,108,108,0, + 240,48,48,48,48,48,252,7,11,11,9,1,0,108,56,56, + 108,12,126,198,198,198,198,124,7,10,10,9,1,0,118,220, + 0,220,230,198,198,198,198,198,7,11,11,9,1,0,96,48, + 24,0,56,108,198,198,198,108,56,7,11,11,9,1,0,12, + 24,48,0,56,108,198,198,198,108,56,7,11,11,9,1,0, + 16,56,108,0,56,108,198,198,198,108,56,7,10,10,9,1, + 0,118,220,0,56,108,198,198,198,108,56,7,10,10,9,1, + 0,108,108,0,56,108,198,198,198,108,56,8,7,7,9,0, + 1,24,24,0,255,0,24,24,8,9,9,9,0,255,1,63, + 102,207,219,243,102,252,128,7,11,11,9,1,0,96,48,24, + 0,198,198,198,198,198,198,126,7,11,11,9,1,0,12,24, + 48,0,198,198,198,198,198,198,126,7,11,11,9,1,0,16, + 56,108,0,198,198,198,198,198,198,126,7,10,10,9,1,0, + 108,108,0,198,198,198,198,198,198,126,7,14,14,9,1,253, + 12,24,48,0,198,198,108,108,108,56,56,48,176,96,7,11, + 11,9,1,254,192,192,248,204,198,198,198,204,248,192,192,7, + 13,13,9,1,253,108,108,0,198,198,108,108,108,56,56,48, + 176,96}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=13 x= 3 y=14 dx= 9 dy= 0 ascent=14 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18Br[1434] U8G_SECTION(".progmem.u8g_font_9x18Br") = { + 0,9,18,0,252,10,1,242,3,225,32,127,253,14,253,11, + 253,0,0,0,9,0,14,2,11,11,9,3,0,192,192,192, + 192,192,192,192,0,0,192,192,5,4,4,9,2,7,216,216, + 216,216,7,10,10,9,1,0,108,108,108,254,108,108,254,108, + 108,108,8,11,11,9,0,255,24,126,219,216,120,60,30,27, + 219,126,24,8,10,10,9,0,0,115,222,222,108,24,24,54, + 123,123,206,8,10,10,9,0,0,112,216,216,216,112,115,222, + 204,222,115,2,4,4,9,3,7,192,192,192,192,4,12,12, + 9,2,255,48,96,96,192,192,192,192,192,192,96,96,48,4, + 12,12,9,2,255,192,96,96,48,48,48,48,48,48,96,96, + 192,8,7,7,9,0,1,24,219,126,60,126,219,24,8,7, + 7,9,0,1,24,24,24,255,24,24,24,3,4,4,9,3, + 254,224,224,96,192,7,1,1,9,1,4,254,3,2,2,9, + 3,0,224,224,8,10,10,9,0,0,3,6,6,12,24,24, + 48,96,96,192,7,10,10,9,1,0,56,108,198,198,198,198, + 198,198,108,56,8,10,10,9,0,0,24,56,120,216,24,24, + 24,24,24,255,7,10,10,9,1,0,56,108,198,6,6,12, + 24,48,96,254,7,10,10,9,1,0,254,6,12,24,56,12, + 6,6,204,120,7,10,10,9,1,0,12,28,60,108,204,204, + 254,12,12,12,7,10,10,9,1,0,254,192,192,192,248,12, + 6,6,204,120,7,10,10,9,1,0,60,96,192,192,248,204, + 198,198,108,56,7,10,10,9,1,0,254,6,12,12,24,24, + 48,48,48,48,7,10,10,9,1,0,56,108,198,108,56,108, + 198,198,108,56,7,10,10,9,1,0,56,108,198,198,110,62, + 6,6,12,120,3,7,7,9,3,0,224,224,0,0,0,224, + 224,3,9,9,9,3,254,224,224,0,0,0,224,224,96,192, + 6,9,9,9,1,0,12,24,48,96,192,96,48,24,12,7, + 4,4,9,1,2,254,0,0,254,6,9,9,9,1,0,192, + 96,48,24,12,24,48,96,192,7,10,10,9,1,0,56,108, + 198,6,12,24,48,48,0,48,9,10,20,9,0,0,62,0, + 99,0,205,128,213,128,213,128,213,128,213,128,207,0,96,0, + 62,0,7,10,10,9,1,0,16,56,56,56,108,124,108,198, + 198,198,7,10,10,9,1,0,252,198,198,198,252,198,198,198, + 198,252,7,10,10,9,1,0,60,102,192,192,192,192,192,192, + 102,60,7,10,10,9,1,0,248,204,198,198,198,198,198,198, + 204,248,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,254,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,192,7,10,10,9,1,0,56,108,198,192,192,206,198,198, + 108,56,7,10,10,9,1,0,198,198,198,198,254,198,198,198, + 198,198,6,10,10,9,1,0,252,48,48,48,48,48,48,48, + 48,252,7,10,10,9,1,0,30,12,12,12,12,12,12,204, + 204,120,7,10,10,9,1,0,198,204,216,240,224,240,216,204, + 198,198,7,10,10,9,1,0,192,192,192,192,192,192,192,192, + 192,254,7,10,10,9,1,0,198,238,254,214,198,198,198,198, + 198,198,7,10,10,9,1,0,198,198,230,246,222,206,198,198, + 198,198,7,10,10,9,1,0,124,198,198,198,198,198,198,198, + 198,124,7,10,10,9,1,0,248,204,198,198,204,248,192,192, + 192,192,8,11,11,9,1,255,56,108,198,198,198,198,198,222, + 108,62,3,7,10,10,9,1,0,252,198,198,198,198,252,216, + 204,198,198,7,10,10,9,1,0,124,198,192,192,124,6,6, + 6,198,124,6,10,10,9,1,0,252,48,48,48,48,48,48, + 48,48,48,7,10,10,9,1,0,198,198,198,198,198,198,198, + 198,108,56,7,10,10,9,1,0,198,198,198,108,108,108,56, + 56,56,16,7,10,10,9,1,0,198,198,198,198,214,214,214, + 254,238,68,7,10,10,9,1,0,198,198,108,56,16,16,56, + 108,198,198,8,10,10,9,0,0,195,195,102,60,24,24,24, + 24,24,24,7,10,10,9,1,0,254,6,6,12,24,48,96, + 192,192,254,5,12,12,9,2,255,248,192,192,192,192,192,192, + 192,192,192,192,248,8,10,10,9,0,0,192,96,96,48,24, + 24,12,6,6,3,4,12,12,9,2,255,240,48,48,48,48, + 48,48,48,48,48,48,240,8,4,4,9,0,6,24,60,102, + 195,8,1,1,9,0,255,255,4,3,3,9,2,10,192,96, + 48,7,7,7,9,1,0,124,6,6,126,198,198,126,7,10, + 10,9,1,0,192,192,192,252,198,198,198,198,198,252,7,7, + 7,9,1,0,124,198,192,192,192,198,124,7,10,10,9,1, + 0,6,6,6,126,198,198,198,198,198,126,7,7,7,9,1, + 0,124,198,198,254,192,198,124,6,10,10,9,1,0,56,108, + 108,96,96,240,96,96,96,96,7,10,10,9,1,253,126,204, + 204,204,120,192,124,198,198,124,7,10,10,9,1,0,192,192, + 192,252,198,198,198,198,198,198,6,10,10,9,1,0,48,48, + 0,240,48,48,48,48,48,252,5,13,13,9,2,253,24,24, + 0,56,24,24,24,24,24,24,216,216,112,7,10,10,9,1, + 0,192,192,192,204,216,240,240,216,204,198,6,10,10,9,1, + 0,240,48,48,48,48,48,48,48,48,252,8,7,7,9,0, + 0,254,219,219,219,219,219,195,7,7,7,9,1,0,220,230, + 198,198,198,198,198,7,7,7,9,1,0,56,108,198,198,198, + 108,56,7,10,10,9,1,253,248,204,198,198,198,204,248,192, + 192,192,7,10,10,9,1,253,62,102,198,198,198,102,62,6, + 6,6,7,7,7,9,1,0,220,118,96,96,96,96,96,7, + 7,7,9,1,0,124,198,192,124,6,198,124,7,9,9,9, + 1,0,48,48,252,48,48,48,48,54,28,7,7,7,9,1, + 0,198,198,198,198,198,198,126,7,7,7,9,1,0,198,198, + 108,108,56,56,16,8,7,7,9,0,0,195,195,219,219,219, + 255,102,7,7,7,9,1,0,198,108,56,16,56,108,198,7, + 10,10,9,1,253,198,198,108,108,108,56,56,48,176,96,6, + 7,7,9,1,0,252,12,24,48,96,192,252,6,11,11,9, + 1,0,60,96,96,96,96,192,96,96,96,96,60,2,12,12, + 9,3,255,192,192,192,192,192,192,192,192,192,192,192,192,6, + 11,11,9,1,0,224,48,48,48,48,28,48,48,48,48,224, + 8,3,3,9,0,7,115,219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=14 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=14 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18[3011] U8G_SECTION(".progmem.u8g_font_9x18") = { + 0,9,18,0,252,10,1,232,3,215,32,255,253,14,253,11, + 253,0,0,0,9,0,14,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,4,4,9,3,7,144,144, + 144,144,8,10,10,9,0,0,36,36,36,255,36,36,255,36, + 36,36,7,11,11,9,1,255,16,124,146,144,80,56,20,18, + 146,124,16,7,10,10,9,1,0,66,164,164,72,16,16,36, + 74,74,132,7,10,10,9,1,0,96,144,144,144,96,98,148, + 136,148,98,1,4,4,9,4,7,128,128,128,128,3,12,12, + 9,3,255,32,64,64,128,128,128,128,128,128,64,64,32,3, + 12,12,9,3,255,128,64,64,32,32,32,32,32,32,64,64, + 128,7,7,7,9,1,3,16,146,84,56,84,146,16,7,7, + 7,9,1,1,16,16,16,254,16,16,16,2,4,4,9,4, + 254,192,192,64,128,7,1,1,9,1,4,254,2,2,2,9, + 4,0,192,192,7,10,10,9,1,0,2,4,4,8,16,16, + 32,64,64,128,7,10,10,9,1,0,56,68,130,130,130,130, + 130,130,68,56,7,10,10,9,1,0,16,48,80,144,16,16, + 16,16,16,254,7,10,10,9,1,0,56,68,130,2,4,8, + 16,32,64,254,7,10,10,9,1,0,254,2,4,8,24,4, + 2,2,132,120,7,10,10,9,1,0,4,12,20,36,68,132, + 254,4,4,4,7,10,10,9,1,0,254,128,128,128,248,4, + 2,2,132,120,7,10,10,9,1,0,60,64,128,128,184,196, + 130,130,68,56,7,10,10,9,1,0,254,2,4,4,8,8, + 16,16,16,16,7,10,10,9,1,0,56,68,130,68,56,68, + 130,130,68,56,7,10,10,9,1,0,56,68,130,130,70,58, + 2,2,4,120,2,7,7,9,4,0,192,192,0,0,0,192, + 192,2,9,9,9,4,254,192,192,0,0,0,192,192,64,128, + 5,9,9,9,2,0,8,16,32,64,128,64,32,16,8,7, + 4,4,9,1,2,254,0,0,254,5,9,9,9,2,0,128, + 64,32,16,8,16,32,64,128,7,10,10,9,1,0,56,68, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,56,68, + 154,170,170,170,170,156,64,60,7,10,10,9,1,0,16,40, + 40,40,68,124,68,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,60,66, + 128,128,128,128,128,128,66,60,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,56,68, + 130,128,128,142,130,130,68,56,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,7,10,10,9,1,0,62,8, + 8,8,8,8,8,136,136,112,7,10,10,9,1,0,130,132, + 136,144,160,208,136,132,130,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,146,130,130,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,248,132, + 130,130,132,248,128,128,128,128,8,11,11,9,1,255,56,68, + 130,130,130,130,130,138,68,58,1,7,10,10,9,1,0,248, + 132,130,130,132,248,144,136,132,130,7,10,10,9,1,0,124, + 130,128,128,124,2,2,2,130,124,7,10,10,9,1,0,254, + 16,16,16,16,16,16,16,16,16,7,10,10,9,1,0,130, + 130,130,130,130,130,130,130,68,56,7,10,10,9,1,0,130, + 130,130,68,68,68,40,40,40,16,7,10,10,9,1,0,130, + 130,130,130,146,146,146,146,170,68,7,10,10,9,1,0,130, + 130,68,40,16,16,40,68,130,130,7,10,10,9,1,0,130, + 130,68,40,16,16,16,16,16,16,7,10,10,9,1,0,254, + 2,4,8,16,32,64,128,128,254,4,12,12,9,3,255,240, + 128,128,128,128,128,128,128,128,128,128,240,7,10,10,9,1, + 0,128,64,64,32,16,16,8,4,4,2,4,12,12,9,2, + 255,240,16,16,16,16,16,16,16,16,16,16,240,7,4,4, + 9,1,6,16,40,68,130,8,1,1,9,0,255,255,3,3, + 3,9,3,10,128,64,32,7,7,7,9,1,0,124,2,2, + 126,130,134,122,7,10,10,9,1,0,128,128,128,188,194,130, + 130,130,194,188,7,7,7,9,1,0,124,130,128,128,128,130, + 124,7,10,10,9,1,0,2,2,2,122,134,130,130,130,134, + 122,7,7,7,9,1,0,124,130,130,254,128,130,124,7,10, + 10,9,1,0,28,34,34,32,32,248,32,32,32,32,7,10, + 10,9,1,253,122,132,132,132,120,128,124,130,130,124,7,10, + 10,9,1,0,128,128,128,188,194,130,130,130,130,130,5,10, + 10,9,2,0,96,0,0,224,32,32,32,32,32,248,5,13, + 13,9,2,253,24,0,0,56,8,8,8,8,8,8,136,136, + 112,7,10,10,9,1,0,128,128,128,132,136,144,176,200,132, + 130,5,10,10,9,2,0,224,32,32,32,32,32,32,32,32, + 248,7,7,7,9,1,0,236,146,146,146,146,146,130,7,7, + 7,9,1,0,188,194,130,130,130,130,130,7,7,7,9,1, + 0,124,130,130,130,130,130,124,7,10,10,9,1,253,184,196, + 130,130,130,196,184,128,128,128,7,10,10,9,1,253,58,70, + 130,130,130,70,58,2,2,2,7,7,7,9,1,0,156,98, + 66,64,64,64,64,7,7,7,9,1,0,124,130,128,124,2, + 130,124,7,9,9,9,1,0,32,32,252,32,32,32,32,34, + 28,7,7,7,9,1,0,130,130,130,130,130,134,122,7,7, + 7,9,1,0,130,130,68,68,40,40,16,7,7,7,9,1, + 0,130,130,146,146,146,170,68,7,7,7,9,1,0,130,68, + 40,16,40,68,130,7,10,10,9,1,253,66,66,36,36,36, + 24,24,16,144,96,7,7,7,9,1,0,254,4,8,16,32, + 64,254,6,11,11,9,2,0,28,32,32,32,32,192,32,32, + 32,32,28,1,12,12,9,4,255,128,128,128,128,128,128,128, + 128,128,128,128,128,6,11,11,9,1,0,224,16,16,16,16, + 12,16,16,16,16,224,7,3,3,9,1,7,98,146,140,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,9,0,14,1,11,11,9,4,0,128,128,0,0, + 128,128,128,128,128,128,128,6,8,8,9,1,0,8,120,148, + 144,160,164,120,64,7,10,10,9,1,0,28,34,32,32,248, + 32,32,96,162,92,7,6,6,9,1,3,130,124,68,68,124, + 130,7,10,10,9,1,0,130,130,68,40,124,16,124,16,16, + 16,1,11,11,9,4,255,128,128,128,128,128,0,128,128,128, + 128,128,4,11,11,9,2,255,96,144,128,96,144,144,144,96, + 16,144,96,3,2,2,9,3,11,160,160,8,9,9,9,0, + 1,60,66,153,165,161,165,153,66,60,5,7,7,9,1,3, + 96,144,112,144,120,0,248,7,8,8,9,1,1,18,36,72, + 144,144,72,36,18,6,4,4,9,1,2,252,4,4,4,5, + 1,1,9,2,4,248,8,9,9,9,0,1,60,66,185,165, + 189,169,165,66,60,6,1,1,9,1,9,252,4,4,4,9, + 3,6,96,144,144,96,7,9,9,9,1,1,16,16,16,254, + 16,16,16,0,254,4,6,6,9,1,4,96,144,16,96,128, + 240,4,6,6,9,1,4,96,144,32,16,144,96,3,3,3, + 9,3,10,32,64,128,7,9,9,9,1,254,130,130,130,130, + 130,198,186,128,128,7,10,10,9,1,0,126,138,138,138,122, + 10,10,10,10,10,2,2,2,9,4,4,192,192,4,3,3, + 9,2,253,32,144,96,3,6,6,9,1,4,64,192,64,64, + 64,224,5,6,6,9,1,4,112,136,136,112,0,248,7,8, + 8,9,1,1,144,72,36,18,18,36,72,144,7,10,10,9, + 1,0,64,192,64,64,66,230,10,18,26,6,7,10,10,9, + 1,0,64,192,64,64,76,242,2,12,16,30,7,10,10,9, + 1,0,96,144,32,16,146,102,10,18,26,6,7,10,10,9, + 1,0,16,0,16,16,32,64,128,130,130,124,7,14,14,9, + 1,0,32,16,8,0,16,40,40,40,68,124,68,130,130,130, + 7,14,14,9,1,0,8,16,32,0,16,40,40,40,68,124, + 68,130,130,130,7,14,14,9,1,0,16,40,68,0,16,40, + 40,40,68,124,68,130,130,130,7,13,13,9,1,0,52,88, + 0,16,40,40,40,68,124,68,130,130,130,7,13,13,9,1, + 0,40,40,0,16,40,40,40,68,124,68,130,130,130,7,14, + 14,9,1,0,16,40,40,16,16,40,40,40,68,124,68,130, + 130,130,7,10,10,9,1,0,30,40,40,40,78,120,72,136, + 136,142,7,13,13,9,1,253,60,66,128,128,128,128,128,128, + 66,60,8,36,24,7,14,14,9,1,0,32,16,8,0,254, + 128,128,128,248,128,128,128,128,254,7,14,14,9,1,0,8, + 16,32,0,254,128,128,128,248,128,128,128,128,254,7,14,14, + 9,1,0,16,40,68,0,254,128,128,128,248,128,128,128,128, + 254,7,13,13,9,1,0,40,40,0,254,128,128,128,248,128, + 128,128,128,254,5,14,14,9,2,0,64,32,16,0,248,32, + 32,32,32,32,32,32,32,248,5,14,14,9,2,0,16,32, + 64,0,248,32,32,32,32,32,32,32,32,248,5,14,14,9, + 2,0,32,80,136,0,248,32,32,32,32,32,32,32,32,248, + 5,13,13,9,2,0,80,80,0,248,32,32,32,32,32,32, + 32,32,248,7,10,10,9,1,0,120,68,66,66,242,66,66, + 66,68,120,7,13,13,9,1,0,52,88,0,130,130,194,162, + 146,138,134,130,130,130,7,14,14,9,1,0,32,16,8,0, + 124,130,130,130,130,130,130,130,130,124,7,14,14,9,1,0, + 8,16,32,0,124,130,130,130,130,130,130,130,130,124,7,14, + 14,9,1,0,16,40,68,0,124,130,130,130,130,130,130,130, + 130,124,7,13,13,9,1,0,52,88,0,124,130,130,130,130, + 130,130,130,130,124,7,13,13,9,1,0,40,40,0,124,130, + 130,130,130,130,130,130,130,124,7,7,7,9,1,1,130,68, + 40,16,40,68,130,7,12,12,9,1,255,2,124,134,138,138, + 146,146,162,162,194,124,128,7,14,14,9,1,0,32,16,8, + 0,130,130,130,130,130,130,130,130,68,56,7,14,14,9,1, + 0,8,16,32,0,130,130,130,130,130,130,130,130,68,56,7, + 14,14,9,1,0,16,40,68,0,130,130,130,130,130,130,130, + 130,68,56,7,13,13,9,1,0,40,40,0,130,130,130,130, + 130,130,130,130,68,56,7,14,14,9,1,0,8,16,32,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 128,128,252,130,130,130,252,128,128,128,6,10,10,9,1,0, + 56,68,68,72,208,72,68,68,68,88,7,11,11,9,1,0, + 32,16,8,0,124,2,2,126,130,134,122,7,11,11,9,1, + 0,8,16,32,0,124,2,2,126,130,134,122,7,11,11,9, + 1,0,16,40,68,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,52,88,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,40,40,0,124,2,2,126,130,134,122,7,12,12, + 9,1,0,16,40,40,16,0,124,2,2,126,130,134,122,7, + 7,7,9,1,0,108,18,18,126,144,146,108,7,10,10,9, + 1,253,124,130,128,128,128,130,124,16,72,48,7,11,11,9, + 1,0,32,16,8,0,124,130,130,254,128,130,124,7,11,11, + 9,1,0,8,16,32,0,124,130,130,254,128,130,124,7,11, + 11,9,1,0,16,40,68,0,124,130,130,254,128,130,124,7, + 10,10,9,1,0,40,40,0,124,130,130,254,128,130,124,5, + 12,12,9,2,0,128,64,32,0,0,224,32,32,32,32,32, + 248,5,12,12,9,2,0,16,32,64,0,0,224,32,32,32, + 32,32,248,5,12,12,9,2,0,32,80,136,0,0,224,32, + 32,32,32,32,248,5,11,11,9,2,0,80,80,0,0,224, + 32,32,32,32,32,248,7,11,11,9,1,0,72,48,80,8, + 60,68,130,130,130,68,56,7,10,10,9,1,0,52,88,0, + 188,194,130,130,130,130,130,7,11,11,9,1,0,32,16,8, + 0,124,130,130,130,130,130,124,7,11,11,9,1,0,8,16, + 32,0,124,130,130,130,130,130,124,7,11,11,9,1,0,16, + 40,68,0,124,130,130,130,130,130,124,7,10,10,9,1,0, + 52,88,0,124,130,130,130,130,130,124,7,10,10,9,1,0, + 40,40,0,124,130,130,130,130,130,124,7,9,9,9,1,0, + 16,56,16,0,254,0,16,56,16,7,9,9,9,1,255,2, + 124,138,138,146,162,162,124,128,7,11,11,9,1,0,64,32, + 16,0,130,130,130,130,130,134,122,7,11,11,9,1,0,8, + 16,32,0,130,130,130,130,130,134,122,7,11,11,9,1,0, + 16,40,68,0,130,130,130,130,130,134,122,7,10,10,9,1, + 0,40,40,0,130,130,130,130,130,134,122,7,14,14,9,1, + 253,4,8,16,0,66,66,36,36,36,24,24,16,144,96,7, + 11,11,9,1,254,128,128,184,196,130,130,130,196,184,128,128, + 7,13,13,9,1,253,36,36,0,66,66,36,36,36,24,24, + 16,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=13 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18r[1424] U8G_SECTION(".progmem.u8g_font_9x18r") = { + 0,9,18,0,252,10,1,232,3,215,32,127,253,14,253,11, + 253,0,0,0,9,0,14,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,4,4,9,3,7,144,144, + 144,144,8,10,10,9,0,0,36,36,36,255,36,36,255,36, + 36,36,7,11,11,9,1,255,16,124,146,144,80,56,20,18, + 146,124,16,7,10,10,9,1,0,66,164,164,72,16,16,36, + 74,74,132,7,10,10,9,1,0,96,144,144,144,96,98,148, + 136,148,98,1,4,4,9,4,7,128,128,128,128,3,12,12, + 9,3,255,32,64,64,128,128,128,128,128,128,64,64,32,3, + 12,12,9,3,255,128,64,64,32,32,32,32,32,32,64,64, + 128,7,7,7,9,1,3,16,146,84,56,84,146,16,7,7, + 7,9,1,1,16,16,16,254,16,16,16,2,4,4,9,4, + 254,192,192,64,128,7,1,1,9,1,4,254,2,2,2,9, + 4,0,192,192,7,10,10,9,1,0,2,4,4,8,16,16, + 32,64,64,128,7,10,10,9,1,0,56,68,130,130,130,130, + 130,130,68,56,7,10,10,9,1,0,16,48,80,144,16,16, + 16,16,16,254,7,10,10,9,1,0,56,68,130,2,4,8, + 16,32,64,254,7,10,10,9,1,0,254,2,4,8,24,4, + 2,2,132,120,7,10,10,9,1,0,4,12,20,36,68,132, + 254,4,4,4,7,10,10,9,1,0,254,128,128,128,248,4, + 2,2,132,120,7,10,10,9,1,0,60,64,128,128,184,196, + 130,130,68,56,7,10,10,9,1,0,254,2,4,4,8,8, + 16,16,16,16,7,10,10,9,1,0,56,68,130,68,56,68, + 130,130,68,56,7,10,10,9,1,0,56,68,130,130,70,58, + 2,2,4,120,2,7,7,9,4,0,192,192,0,0,0,192, + 192,2,9,9,9,4,254,192,192,0,0,0,192,192,64,128, + 5,9,9,9,2,0,8,16,32,64,128,64,32,16,8,7, + 4,4,9,1,2,254,0,0,254,5,9,9,9,2,0,128, + 64,32,16,8,16,32,64,128,7,10,10,9,1,0,56,68, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,56,68, + 154,170,170,170,170,156,64,60,7,10,10,9,1,0,16,40, + 40,40,68,124,68,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,60,66, + 128,128,128,128,128,128,66,60,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,56,68, + 130,128,128,142,130,130,68,56,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,7,10,10,9,1,0,62,8, + 8,8,8,8,8,136,136,112,7,10,10,9,1,0,130,132, + 136,144,160,208,136,132,130,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,146,130,130,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,248,132, + 130,130,132,248,128,128,128,128,8,11,11,9,1,255,56,68, + 130,130,130,130,130,138,68,58,1,7,10,10,9,1,0,248, + 132,130,130,132,248,144,136,132,130,7,10,10,9,1,0,124, + 130,128,128,124,2,2,2,130,124,7,10,10,9,1,0,254, + 16,16,16,16,16,16,16,16,16,7,10,10,9,1,0,130, + 130,130,130,130,130,130,130,68,56,7,10,10,9,1,0,130, + 130,130,68,68,68,40,40,40,16,7,10,10,9,1,0,130, + 130,130,130,146,146,146,146,170,68,7,10,10,9,1,0,130, + 130,68,40,16,16,40,68,130,130,7,10,10,9,1,0,130, + 130,68,40,16,16,16,16,16,16,7,10,10,9,1,0,254, + 2,4,8,16,32,64,128,128,254,4,12,12,9,3,255,240, + 128,128,128,128,128,128,128,128,128,128,240,7,10,10,9,1, + 0,128,64,64,32,16,16,8,4,4,2,4,12,12,9,2, + 255,240,16,16,16,16,16,16,16,16,16,16,240,7,4,4, + 9,1,6,16,40,68,130,8,1,1,9,0,255,255,3,3, + 3,9,3,10,128,64,32,7,7,7,9,1,0,124,2,2, + 126,130,134,122,7,10,10,9,1,0,128,128,128,188,194,130, + 130,130,194,188,7,7,7,9,1,0,124,130,128,128,128,130, + 124,7,10,10,9,1,0,2,2,2,122,134,130,130,130,134, + 122,7,7,7,9,1,0,124,130,130,254,128,130,124,7,10, + 10,9,1,0,28,34,34,32,32,248,32,32,32,32,7,10, + 10,9,1,253,122,132,132,132,120,128,124,130,130,124,7,10, + 10,9,1,0,128,128,128,188,194,130,130,130,130,130,5,10, + 10,9,2,0,96,0,0,224,32,32,32,32,32,248,5,13, + 13,9,2,253,24,0,0,56,8,8,8,8,8,8,136,136, + 112,7,10,10,9,1,0,128,128,128,132,136,144,176,200,132, + 130,5,10,10,9,2,0,224,32,32,32,32,32,32,32,32, + 248,7,7,7,9,1,0,236,146,146,146,146,146,130,7,7, + 7,9,1,0,188,194,130,130,130,130,130,7,7,7,9,1, + 0,124,130,130,130,130,130,124,7,10,10,9,1,253,184,196, + 130,130,130,196,184,128,128,128,7,10,10,9,1,253,58,70, + 130,130,130,70,58,2,2,2,7,7,7,9,1,0,156,98, + 66,64,64,64,64,7,7,7,9,1,0,124,130,128,124,2, + 130,124,7,9,9,9,1,0,32,32,252,32,32,32,32,34, + 28,7,7,7,9,1,0,130,130,130,130,130,134,122,7,7, + 7,9,1,0,130,130,68,68,40,40,16,7,7,7,9,1, + 0,130,130,146,146,146,170,68,7,7,7,9,1,0,130,68, + 40,16,40,68,130,7,10,10,9,1,253,66,66,36,36,36, + 24,24,16,144,96,7,7,7,9,1,0,254,4,8,16,32, + 64,254,6,11,11,9,2,0,28,32,32,32,32,192,32,32, + 32,32,28,1,12,12,9,4,255,128,128,128,128,128,128,128, + 128,128,128,128,128,6,11,11,9,1,0,224,16,16,16,16, + 12,16,16,16,16,224,7,3,3,9,1,7,98,146,140,255 + }; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 9 h= 9 x= 1 y= 5 dx=10 dy= 0 ascent= 8 len=12 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_baby[2227] U8G_SECTION(".progmem.u8g_font_baby") = { + 0,10,10,255,254,5,1,108,2,200,32,255,254,8,254,6, + 254,0,0,0,2,0,0,1,6,6,3,1,0,128,128,128, + 128,0,128,3,3,3,4,0,4,160,160,160,5,5,5,6, + 0,0,80,248,80,248,80,3,7,7,4,0,255,64,96,128, + 64,32,192,64,5,5,5,6,0,0,200,208,32,88,152,5, + 6,6,6,0,0,64,160,64,160,144,104,1,3,3,2,0, + 4,128,128,128,2,7,7,3,0,255,64,128,128,128,128,128, + 64,2,7,7,3,0,255,128,64,64,64,64,64,128,3,3, + 3,4,0,3,160,64,160,3,3,3,5,1,1,64,224,64, + 2,3,3,3,0,254,192,64,128,3,1,1,4,0,2,224, + 1,1,1,2,0,0,128,3,6,6,4,0,255,32,32,64, + 64,128,128,3,5,5,4,0,0,64,160,160,160,64,2,5, + 5,3,0,0,64,192,64,64,64,4,5,5,5,0,0,96, + 144,32,64,240,4,5,5,5,0,0,224,16,96,16,224,4, + 5,5,5,0,0,144,144,144,112,16,4,5,5,5,0,0, + 240,128,224,16,224,4,5,5,5,0,0,96,128,224,144,96, + 4,5,5,5,0,0,240,16,32,64,128,4,5,5,5,0, + 0,96,144,96,144,96,4,5,5,5,0,0,96,144,112,16, + 96,1,3,3,3,1,0,128,0,128,2,5,5,3,0,254, + 64,0,64,64,128,4,5,5,5,0,0,16,96,128,96,16, + 3,3,3,4,0,1,224,0,224,4,5,5,5,0,0,128, + 96,16,96,128,4,6,6,5,0,0,96,144,32,64,0,64, + 5,6,6,6,0,0,112,136,168,176,128,112,4,5,5,5, + 0,0,96,144,144,240,144,4,5,5,5,0,0,224,144,224, + 144,224,4,5,5,5,0,0,96,144,128,144,96,4,5,5, + 5,0,0,224,144,144,144,224,4,5,5,5,0,0,240,128, + 224,128,240,4,5,5,5,0,0,240,128,224,128,128,4,5, + 5,5,0,0,96,128,176,144,96,4,5,5,5,0,0,144, + 144,240,144,144,3,5,5,4,0,0,224,64,64,64,224,4, + 5,5,5,0,0,112,16,16,144,96,4,5,5,5,0,0, + 144,144,144,224,144,3,5,5,4,0,0,128,128,128,128,224, + 5,5,5,6,0,0,216,168,168,168,136,4,5,5,5,0, + 0,144,144,208,176,144,4,5,5,5,0,0,96,144,144,144, + 96,4,5,5,5,0,0,224,144,144,224,128,4,5,5,5, + 0,0,96,144,144,80,224,4,5,5,5,0,0,224,144,144, + 224,144,3,5,5,4,0,0,96,128,64,32,192,3,5,5, + 4,0,0,224,64,64,64,64,4,5,5,5,0,0,144,144, + 144,144,96,5,5,5,6,0,0,136,80,80,80,32,5,5, + 5,6,0,0,136,136,136,168,80,4,5,5,5,0,0,144, + 144,144,96,144,4,6,6,5,0,255,144,144,144,112,16,96, + 4,5,5,5,0,0,240,32,64,128,240,2,7,7,3,0, + 255,192,128,128,128,128,128,192,3,6,6,4,0,255,128,128, + 64,64,32,32,2,7,7,3,0,255,192,64,64,64,64,64, + 192,3,2,2,4,0,4,64,160,4,1,1,5,0,255,240, + 2,2,2,3,0,5,128,64,4,4,4,5,0,0,96,144, + 144,112,4,5,5,5,0,0,128,224,144,144,96,3,4,4, + 4,0,0,96,128,128,96,4,5,5,5,0,0,16,112,144, + 144,96,4,4,4,5,0,0,96,144,160,112,4,5,5,5, + 0,0,96,144,128,192,128,4,6,6,5,0,254,96,144,144, + 112,16,96,4,5,5,5,0,0,128,224,144,144,144,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,32,192,3,5,5,4,0,0,128,160,192,160, + 160,1,5,5,2,0,0,128,128,128,128,128,5,4,4,6, + 0,0,208,168,168,136,4,4,4,5,0,0,224,144,144,144, + 4,4,4,5,0,0,96,144,144,96,4,6,6,5,0,254, + 96,144,144,224,128,128,4,6,6,5,0,254,96,144,144,112, + 16,16,4,4,4,5,0,0,224,144,128,128,4,4,4,5, + 0,0,112,64,32,224,3,5,5,4,0,0,64,224,64,64, + 64,4,4,4,5,0,0,144,144,144,112,4,4,4,5,0, + 0,144,144,144,96,5,4,4,6,0,0,136,168,168,80,4, + 4,4,5,0,0,144,144,96,144,4,6,6,5,0,254,144, + 144,144,112,16,96,4,4,4,5,0,0,240,32,64,240,3, + 7,7,4,0,255,32,64,64,128,64,64,32,1,7,7,2, + 0,255,128,128,128,128,128,128,128,3,7,7,4,0,255,128, + 64,64,32,64,64,128,5,3,3,6,0,1,64,168,16,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,1,6,6,3,1,255,128,0,128,128,128,128,4,6,6, + 5,0,255,16,112,160,160,112,64,4,6,6,5,0,0,96, + 208,64,224,64,240,4,4,4,5,0,1,240,144,144,240,5, + 7,7,6,0,255,136,80,32,112,32,112,32,1,7,7,2, + 0,255,128,128,128,0,128,128,128,4,7,7,5,0,255,112, + 128,96,144,96,16,224,3,1,1,4,0,5,160,7,7,7, + 8,0,255,56,68,154,162,154,68,56,3,3,3,4,0,4, + 96,160,224,4,3,3,5,0,1,80,160,80,5,3,3,6, + 0,1,248,8,8,2,1,1,3,0,2,192,7,7,7,8, + 0,255,56,68,178,186,170,68,56,4,1,1,5,0,5,240, + 3,3,3,4,0,4,64,160,64,3,5,5,4,0,0,64, + 224,64,0,224,3,4,4,4,0,4,192,32,64,224,3,4, + 4,4,0,4,224,32,96,224,2,2,2,3,0,5,64,128, + 5,6,6,6,0,254,144,144,144,248,128,128,5,6,6,6, + 0,0,120,232,232,104,40,40,1,1,1,3,1,2,128,3, + 3,3,4,0,254,64,32,192,3,4,4,4,0,4,64,192, + 64,224,4,4,4,5,0,4,96,144,144,96,4,3,3,5, + 0,1,160,80,160,7,6,6,8,0,0,136,144,160,42,78, + 130,7,6,6,8,0,0,136,144,164,42,68,142,9,6,12, + 10,0,0,226,0,100,0,232,0,10,128,19,128,32,128,4, + 6,6,5,0,255,32,0,32,64,144,96,4,8,8,5,0, + 0,64,32,0,96,144,144,240,144,4,8,8,5,0,0,32, + 64,0,96,144,144,240,144,4,8,8,5,0,0,96,144,0, + 96,144,144,240,144,4,8,8,5,0,0,80,160,0,96,144, + 144,240,144,4,7,7,5,0,0,80,0,96,144,144,240,144, + 4,7,7,5,0,0,96,0,96,144,144,240,144,7,5,5, + 8,0,0,126,144,156,240,158,4,7,7,5,0,254,96,144, + 128,144,96,32,64,4,8,8,5,0,0,64,32,0,240,128, + 224,128,240,4,8,8,5,0,0,32,64,0,240,128,224,128, + 240,4,8,8,5,0,0,96,144,0,240,128,224,128,240,4, + 7,7,5,0,0,80,0,240,128,224,128,240,3,8,8,4, + 0,0,128,64,0,224,64,64,64,224,3,8,8,4,0,0, + 32,64,0,224,64,64,64,224,3,8,8,4,0,0,64,160, + 0,224,64,64,64,224,3,7,7,4,0,0,160,0,224,64, + 64,64,224,5,5,5,6,0,0,112,72,232,72,112,4,8, + 8,5,0,0,80,160,0,144,144,208,176,144,4,8,8,5, + 0,0,64,32,0,96,144,144,144,96,4,8,8,5,0,0, + 32,64,0,96,144,144,144,96,4,8,8,5,0,0,96,144, + 0,96,144,144,144,96,4,8,8,5,0,0,80,160,0,96, + 144,144,144,96,4,7,7,5,0,0,80,0,96,144,144,144, + 96,3,3,3,4,0,1,160,64,160,6,5,5,7,0,0, + 48,76,120,200,48,4,8,8,5,0,0,64,32,0,144,144, + 144,144,96,4,8,8,5,0,0,32,64,0,144,144,144,144, + 96,4,8,8,5,0,0,96,144,0,144,144,144,144,96,4, + 7,7,5,0,0,80,0,144,144,144,144,96,4,9,9,5, + 0,255,32,64,0,144,144,144,112,16,96,4,6,6,5,0, + 0,128,224,144,144,224,128,4,5,5,5,0,0,96,144,160, + 144,160,4,7,7,5,0,0,64,32,0,96,144,144,112,4, + 7,7,5,0,0,32,64,0,96,144,144,112,4,7,7,5, + 0,0,96,144,0,96,144,144,112,4,7,7,5,0,0,80, + 160,0,96,144,144,112,4,6,6,5,0,0,80,0,96,144, + 144,112,4,7,7,5,0,0,96,96,0,96,144,144,112,7, + 4,4,8,0,0,108,146,148,126,3,6,6,4,0,254,96, + 128,128,96,32,64,4,7,7,5,0,0,64,32,0,96,144, + 160,112,4,7,7,5,0,0,32,64,0,96,144,160,112,4, + 7,7,5,0,0,96,144,0,96,144,160,112,4,6,6,5, + 0,0,80,0,96,144,160,112,2,6,6,3,0,0,128,64, + 0,64,64,64,2,6,6,3,0,0,64,128,0,128,128,128, + 3,6,6,4,0,0,64,160,0,64,64,64,3,5,5,4, + 0,0,160,0,64,64,64,5,6,6,6,0,0,96,24,112, + 144,144,96,4,7,7,5,0,0,80,160,0,224,144,144,144, + 4,7,7,5,0,0,64,32,0,96,144,144,96,4,7,7, + 5,0,0,32,64,0,96,144,144,96,4,7,7,5,0,0, + 96,144,0,96,144,144,96,4,7,7,5,0,0,80,160,0, + 96,144,144,96,4,6,6,5,0,0,80,0,96,144,144,96, + 5,5,5,6,0,0,32,0,248,0,32,4,4,4,5,0, + 0,96,176,208,96,4,7,7,5,0,0,64,32,0,144,144, + 144,112,4,7,7,5,0,0,32,64,0,144,144,144,112,4, + 7,7,5,0,0,96,144,0,144,144,144,112,4,6,6,5, + 0,0,80,0,144,144,144,112,4,9,9,5,0,254,32,64, + 0,144,144,144,112,16,96,4,8,8,5,0,254,128,128,224, + 144,144,224,128,128,4,8,8,5,0,254,80,0,144,144,144, + 112,16,96}; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 3 dx= 5 dy= 0 ascent= 6 len= 6 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_babyn[180] U8G_SECTION(".progmem.u8g_font_babyn") = { + 0,10,10,255,254,5,0,0,0,0,42,57,0,6,254,5, + 0,3,3,3,4,0,3,160,64,160,3,3,3,5,1,1, + 64,224,64,2,3,3,3,0,254,192,64,128,3,1,1,4, + 0,2,224,1,1,1,2,0,0,128,3,6,6,4,0,255, + 32,32,64,64,128,128,3,5,5,4,0,0,64,160,160,160, + 64,2,5,5,3,0,0,64,192,64,64,64,4,5,5,5, + 0,0,96,144,32,64,240,4,5,5,5,0,0,224,16,96, + 16,224,4,5,5,5,0,0,144,144,144,112,16,4,5,5, + 5,0,0,240,128,224,16,224,4,5,5,5,0,0,96,128, + 224,144,96,4,5,5,5,0,0,240,16,32,64,128,4,5, + 5,5,0,0,96,144,96,144,96,4,5,5,5,0,0,96, + 144,112,16,96}; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 1 y= 5 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_babyr[1040] U8G_SECTION(".progmem.u8g_font_babyr") = { + 0,10,10,255,254,5,1,108,2,200,32,127,254,7,254,6, + 254,0,0,0,2,0,0,1,6,6,3,1,0,128,128,128, + 128,0,128,3,3,3,4,0,4,160,160,160,5,5,5,6, + 0,0,80,248,80,248,80,3,7,7,4,0,255,64,96,128, + 64,32,192,64,5,5,5,6,0,0,200,208,32,88,152,5, + 6,6,6,0,0,64,160,64,160,144,104,1,3,3,2,0, + 4,128,128,128,2,7,7,3,0,255,64,128,128,128,128,128, + 64,2,7,7,3,0,255,128,64,64,64,64,64,128,3,3, + 3,4,0,3,160,64,160,3,3,3,5,1,1,64,224,64, + 2,3,3,3,0,254,192,64,128,3,1,1,4,0,2,224, + 1,1,1,2,0,0,128,3,6,6,4,0,255,32,32,64, + 64,128,128,3,5,5,4,0,0,64,160,160,160,64,2,5, + 5,3,0,0,64,192,64,64,64,4,5,5,5,0,0,96, + 144,32,64,240,4,5,5,5,0,0,224,16,96,16,224,4, + 5,5,5,0,0,144,144,144,112,16,4,5,5,5,0,0, + 240,128,224,16,224,4,5,5,5,0,0,96,128,224,144,96, + 4,5,5,5,0,0,240,16,32,64,128,4,5,5,5,0, + 0,96,144,96,144,96,4,5,5,5,0,0,96,144,112,16, + 96,1,3,3,3,1,0,128,0,128,2,5,5,3,0,254, + 64,0,64,64,128,4,5,5,5,0,0,16,96,128,96,16, + 3,3,3,4,0,1,224,0,224,4,5,5,5,0,0,128, + 96,16,96,128,4,6,6,5,0,0,96,144,32,64,0,64, + 5,6,6,6,0,0,112,136,168,176,128,112,4,5,5,5, + 0,0,96,144,144,240,144,4,5,5,5,0,0,224,144,224, + 144,224,4,5,5,5,0,0,96,144,128,144,96,4,5,5, + 5,0,0,224,144,144,144,224,4,5,5,5,0,0,240,128, + 224,128,240,4,5,5,5,0,0,240,128,224,128,128,4,5, + 5,5,0,0,96,128,176,144,96,4,5,5,5,0,0,144, + 144,240,144,144,3,5,5,4,0,0,224,64,64,64,224,4, + 5,5,5,0,0,112,16,16,144,96,4,5,5,5,0,0, + 144,144,144,224,144,3,5,5,4,0,0,128,128,128,128,224, + 5,5,5,6,0,0,216,168,168,168,136,4,5,5,5,0, + 0,144,144,208,176,144,4,5,5,5,0,0,96,144,144,144, + 96,4,5,5,5,0,0,224,144,144,224,128,4,5,5,5, + 0,0,96,144,144,80,224,4,5,5,5,0,0,224,144,144, + 224,144,3,5,5,4,0,0,96,128,64,32,192,3,5,5, + 4,0,0,224,64,64,64,64,4,5,5,5,0,0,144,144, + 144,144,96,5,5,5,6,0,0,136,80,80,80,32,5,5, + 5,6,0,0,136,136,136,168,80,4,5,5,5,0,0,144, + 144,144,96,144,4,6,6,5,0,255,144,144,144,112,16,96, + 4,5,5,5,0,0,240,32,64,128,240,2,7,7,3,0, + 255,192,128,128,128,128,128,192,3,6,6,4,0,255,128,128, + 64,64,32,32,2,7,7,3,0,255,192,64,64,64,64,64, + 192,3,2,2,4,0,4,64,160,4,1,1,5,0,255,240, + 2,2,2,3,0,5,128,64,4,4,4,5,0,0,96,144, + 144,112,4,5,5,5,0,0,128,224,144,144,96,3,4,4, + 4,0,0,96,128,128,96,4,5,5,5,0,0,16,112,144, + 144,96,4,4,4,5,0,0,96,144,160,112,4,5,5,5, + 0,0,96,144,128,192,128,4,6,6,5,0,254,96,144,144, + 112,16,96,4,5,5,5,0,0,128,224,144,144,144,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,32,192,3,5,5,4,0,0,128,160,192,160, + 160,1,5,5,2,0,0,128,128,128,128,128,5,4,4,6, + 0,0,208,168,168,136,4,4,4,5,0,0,224,144,144,144, + 4,4,4,5,0,0,96,144,144,96,4,6,6,5,0,254, + 96,144,144,224,128,128,4,6,6,5,0,254,96,144,144,112, + 16,16,4,4,4,5,0,0,224,144,128,128,4,4,4,5, + 0,0,112,64,32,224,3,5,5,4,0,0,64,224,64,64, + 64,4,4,4,5,0,0,144,144,144,112,4,4,4,5,0, + 0,144,144,144,96,5,4,4,6,0,0,136,168,168,80,4, + 4,4,5,0,0,144,144,96,144,4,6,6,5,0,254,144, + 144,144,112,16,96,4,4,4,5,0,0,240,32,64,240,3, + 7,7,4,0,255,32,64,64,128,64,64,32,1,7,7,2, + 0,255,128,128,128,128,128,128,128,3,7,7,4,0,255,128, + 64,64,32,64,64,128,5,3,3,6,0,1,64,168,16,255 + }; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07[948] U8G_SECTION(".progmem.u8g_font_blipfest_07") = { + 0,5,6,0,255,5,1,5,2,47,32,255,255,5,255,5, + 255,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,255,255,255,4,5,5, + 5,0,0,224,160,240,160,240,1,2,2,2,0,3,128,128, + 255,255,255,3,3,3,4,0,1,64,224,64,1,2,2,2, + 0,0,128,128,3,1,1,4,0,2,224,1,1,1,2,0, + 0,128,255,3,5,5,4,0,0,224,160,160,160,224,2,5, + 5,3,0,0,192,64,64,64,64,3,5,5,4,0,0,224, + 32,224,128,224,3,5,5,4,0,0,224,32,224,32,224,3, + 5,5,4,0,0,160,160,224,32,32,3,5,5,4,0,0, + 224,128,224,32,224,3,5,5,4,0,0,224,128,224,160,224, + 3,5,5,4,0,0,224,32,32,32,32,3,5,5,4,0, + 0,224,160,224,160,224,3,5,5,4,0,0,224,160,224,32, + 224,1,3,3,2,0,0,128,0,128,1,4,4,2,0,255, + 128,0,128,128,255,3,3,3,4,0,1,224,0,224,255,3, + 5,5,4,0,0,224,32,96,0,64,5,5,5,6,0,0, + 248,136,184,168,240,3,5,5,4,0,0,224,160,160,224,160, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,128,128,128,224,3,5,5,4,0,0,192,160,160,160, + 192,3,5,5,4,0,0,224,128,224,128,224,3,5,5,4, + 0,0,224,128,224,128,128,3,5,5,4,0,0,224,128,160, + 160,224,3,5,5,4,0,0,160,160,160,224,160,3,5,5, + 4,0,0,224,64,64,64,224,3,5,5,4,0,0,32,32, + 32,160,224,3,5,5,4,0,0,160,160,160,192,160,3,5, + 5,4,0,0,128,128,128,128,224,3,5,5,4,0,0,160, + 224,160,160,160,3,5,5,4,0,0,224,160,160,160,160,3, + 5,5,4,0,0,224,160,160,160,224,3,5,5,4,0,0, + 224,160,160,224,128,3,5,5,4,0,0,224,160,160,224,64, + 3,5,5,4,0,0,224,160,160,192,160,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,64,64,64, + 64,3,5,5,4,0,0,160,160,160,160,224,3,5,5,4, + 0,0,160,160,160,160,64,3,5,5,4,0,0,160,160,160, + 224,224,3,5,5,4,0,0,160,160,64,160,160,3,5,5, + 4,0,0,160,160,160,64,64,3,5,5,4,0,0,224,32, + 224,128,224,255,255,255,255,3,1,1,4,0,0,224,255,3, + 3,3,4,0,0,96,160,224,3,5,5,4,0,0,128,128, + 224,160,224,3,3,3,4,0,0,224,128,224,3,5,5,4, + 0,0,32,32,224,160,224,3,3,3,4,0,0,224,160,192, + 3,5,5,4,0,0,96,64,224,64,64,3,4,4,4,0, + 255,224,160,224,64,3,5,5,4,0,0,128,128,224,160,160, + 1,5,5,2,0,0,128,0,128,128,128,2,5,5,3,0, + 0,64,0,64,64,192,3,5,5,4,0,0,128,128,160,192, + 160,1,5,5,2,0,0,128,128,128,128,128,5,3,3,6, + 0,0,248,168,168,3,3,3,4,0,0,192,160,160,3,3, + 3,4,0,0,224,160,224,3,4,4,4,0,255,224,160,224, + 128,3,4,4,4,0,255,224,160,224,32,3,3,3,4,0, + 0,224,128,128,3,3,3,4,0,0,96,64,192,3,5,5, + 4,0,0,64,224,64,64,96,3,3,3,4,0,0,160,160, + 224,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,4,4,4, + 0,255,160,160,224,32,3,3,3,4,0,0,224,64,224,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[160] U8G_SECTION(".progmem.u8g_font_blipfest_07n") = { + 0,5,6,0,255,5,0,0,0,0,42,57,0,5,0,5, + 0,255,3,3,3,4,0,1,64,224,64,1,2,2,2,0, + 0,128,128,3,1,1,4,0,2,224,1,1,1,2,0,0, + 128,255,3,5,5,4,0,0,224,160,160,160,224,2,5,5, + 3,0,0,192,64,64,64,64,3,5,5,4,0,0,224,32, + 224,128,224,3,5,5,4,0,0,224,32,224,32,224,3,5, + 5,4,0,0,160,160,224,32,32,3,5,5,4,0,0,224, + 128,224,32,224,3,5,5,4,0,0,224,128,224,160,224,3, + 5,5,4,0,0,224,32,32,32,32,3,5,5,4,0,0, + 224,160,224,160,224,3,5,5,4,0,0,224,160,224,32,224 + }; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[820] U8G_SECTION(".progmem.u8g_font_blipfest_07r") = { + 0,5,6,0,255,5,1,5,2,47,32,127,255,5,255,5, + 255,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,255,255,255,4,5,5, + 5,0,0,224,160,240,160,240,1,2,2,2,0,3,128,128, + 255,255,255,3,3,3,4,0,1,64,224,64,1,2,2,2, + 0,0,128,128,3,1,1,4,0,2,224,1,1,1,2,0, + 0,128,255,3,5,5,4,0,0,224,160,160,160,224,2,5, + 5,3,0,0,192,64,64,64,64,3,5,5,4,0,0,224, + 32,224,128,224,3,5,5,4,0,0,224,32,224,32,224,3, + 5,5,4,0,0,160,160,224,32,32,3,5,5,4,0,0, + 224,128,224,32,224,3,5,5,4,0,0,224,128,224,160,224, + 3,5,5,4,0,0,224,32,32,32,32,3,5,5,4,0, + 0,224,160,224,160,224,3,5,5,4,0,0,224,160,224,32, + 224,1,3,3,2,0,0,128,0,128,1,4,4,2,0,255, + 128,0,128,128,255,3,3,3,4,0,1,224,0,224,255,3, + 5,5,4,0,0,224,32,96,0,64,5,5,5,6,0,0, + 248,136,184,168,240,3,5,5,4,0,0,224,160,160,224,160, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,128,128,128,224,3,5,5,4,0,0,192,160,160,160, + 192,3,5,5,4,0,0,224,128,224,128,224,3,5,5,4, + 0,0,224,128,224,128,128,3,5,5,4,0,0,224,128,160, + 160,224,3,5,5,4,0,0,160,160,160,224,160,3,5,5, + 4,0,0,224,64,64,64,224,3,5,5,4,0,0,32,32, + 32,160,224,3,5,5,4,0,0,160,160,160,192,160,3,5, + 5,4,0,0,128,128,128,128,224,3,5,5,4,0,0,160, + 224,160,160,160,3,5,5,4,0,0,224,160,160,160,160,3, + 5,5,4,0,0,224,160,160,160,224,3,5,5,4,0,0, + 224,160,160,224,128,3,5,5,4,0,0,224,160,160,224,64, + 3,5,5,4,0,0,224,160,160,192,160,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,64,64,64, + 64,3,5,5,4,0,0,160,160,160,160,224,3,5,5,4, + 0,0,160,160,160,160,64,3,5,5,4,0,0,160,160,160, + 224,224,3,5,5,4,0,0,160,160,64,160,160,3,5,5, + 4,0,0,160,160,160,64,64,3,5,5,4,0,0,224,32, + 224,128,224,255,255,255,255,3,1,1,4,0,0,224,255,3, + 3,3,4,0,0,96,160,224,3,5,5,4,0,0,128,128, + 224,160,224,3,3,3,4,0,0,224,128,224,3,5,5,4, + 0,0,32,32,224,160,224,3,3,3,4,0,0,224,160,192, + 3,5,5,4,0,0,96,64,224,64,64,3,4,4,4,0, + 255,224,160,224,64,3,5,5,4,0,0,128,128,224,160,160, + 1,5,5,2,0,0,128,0,128,128,128,2,5,5,3,0, + 0,64,0,64,64,192,3,5,5,4,0,0,128,128,160,192, + 160,1,5,5,2,0,0,128,128,128,128,128,5,3,3,6, + 0,0,248,168,168,3,3,3,4,0,0,192,160,160,3,3, + 3,4,0,0,224,160,224,3,4,4,4,0,255,224,160,224, + 128,3,4,4,4,0,255,224,160,224,32,3,3,3,4,0, + 0,224,128,128,3,3,3,4,0,0,96,64,192,3,5,5, + 4,0,0,64,224,64,64,96,3,3,3,4,0,0,160,160, + 224,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,4,4,4, + 0,255,160,160,224,32,3,3,3,4,0,0,224,64,224,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 9 h= 8 x= 1 y= 6 dx=10 dy= 0 ascent= 8 len=10 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikita[2236] U8G_SECTION(".progmem.u8g_font_chikita") = { + 0,9,10,0,254,5,1,107,2,195,32,255,254,8,254,6, + 254,0,0,0,2,0,0,1,7,7,2,0,255,128,128,128, + 128,128,0,128,3,2,2,4,0,4,160,160,5,5,5,6, + 0,0,80,248,80,248,80,5,7,7,6,0,255,32,120,160, + 112,40,240,32,5,5,5,6,0,0,200,208,32,88,152,5, + 5,5,6,0,0,32,80,104,144,104,1,2,2,2,0,4, + 128,128,3,7,7,4,0,255,32,64,128,128,128,64,32,3, + 7,7,4,0,255,128,64,32,32,32,64,128,3,3,3,5, + 1,1,160,64,160,5,5,5,6,0,0,32,32,248,32,32, + 2,2,2,3,0,255,64,128,5,1,1,6,0,2,248,1, + 1,1,2,0,0,128,3,5,5,5,1,0,32,32,64,128, + 128,4,5,5,5,0,0,96,144,144,144,96,2,5,5,3, + 0,0,64,192,64,64,64,5,5,5,6,0,0,112,136,48, + 64,248,5,5,5,6,0,0,240,8,112,8,240,5,5,5, + 6,0,0,48,80,144,248,16,5,5,5,6,0,0,248,128, + 240,8,240,5,5,5,6,0,0,120,128,240,136,112,5,5, + 5,6,0,0,248,8,16,32,64,5,5,5,6,0,0,112, + 136,112,136,112,5,5,5,6,0,0,112,136,120,8,240,1, + 3,3,2,0,1,128,0,128,1,4,4,2,0,0,128,0, + 128,128,5,5,5,6,0,0,24,96,128,96,24,5,3,3, + 6,0,1,248,0,248,5,5,5,6,0,0,192,48,8,48, + 192,5,7,7,6,0,255,112,136,16,32,32,0,32,7,7, + 7,8,0,255,124,130,154,170,190,128,124,5,5,5,6,0, + 0,112,136,136,248,136,5,5,5,6,0,0,240,136,240,136, + 240,5,5,5,6,0,0,112,136,128,136,112,5,5,5,6, + 0,0,240,136,136,136,240,5,5,5,6,0,0,248,128,240, + 128,248,5,5,5,6,0,0,248,128,240,128,128,5,5,5, + 6,0,0,112,128,184,136,112,5,5,5,6,0,0,136,136, + 248,136,136,3,5,5,4,0,0,224,64,64,64,224,5,5, + 5,6,0,0,8,8,8,136,112,5,5,5,6,0,0,136, + 144,224,144,136,5,5,5,6,0,0,128,128,128,128,248,5, + 5,5,6,0,0,136,216,168,136,136,5,5,5,6,0,0, + 136,200,168,152,136,5,5,5,6,0,0,112,136,136,136,112, + 5,5,5,6,0,0,240,136,136,240,128,5,5,5,6,0, + 0,112,136,136,152,120,5,5,5,6,0,0,240,136,136,240, + 136,5,5,5,6,0,0,120,128,112,8,240,5,5,5,6, + 0,0,248,32,32,32,32,5,5,5,6,0,0,136,136,136, + 136,112,5,5,5,6,0,0,136,136,136,80,32,5,5,5, + 6,0,0,136,168,168,168,80,5,5,5,6,0,0,136,80, + 32,80,136,5,5,5,6,0,0,136,136,80,32,32,5,5, + 5,6,0,0,248,16,32,64,248,2,6,6,3,0,255,192, + 128,128,128,128,192,3,5,5,4,0,0,128,128,64,32,32, + 2,6,6,3,0,255,192,64,64,64,64,192,3,2,2,4, + 0,4,64,160,5,1,1,6,0,255,248,2,2,2,3,0, + 4,128,64,4,4,4,5,0,0,112,144,144,240,4,5,5, + 5,0,0,128,224,144,144,224,4,4,4,5,0,0,112,128, + 128,112,4,5,5,5,0,0,16,112,144,144,112,4,4,4, + 5,0,0,96,144,224,112,4,5,5,5,0,0,48,64,240, + 64,64,4,6,6,5,0,254,112,144,144,240,16,224,4,5, + 5,5,0,0,128,224,144,144,144,1,5,5,2,0,0,128, + 0,128,128,128,2,7,7,3,0,254,64,0,64,64,64,64, + 128,4,5,5,5,0,0,128,144,160,224,144,1,5,5,2, + 0,0,128,128,128,128,128,6,4,4,7,0,0,168,212,148, + 148,4,4,4,5,0,0,160,208,144,144,4,4,4,5,0, + 0,96,144,144,96,4,6,6,5,0,254,224,144,144,224,128, + 128,4,6,6,5,0,254,112,144,144,112,16,16,4,4,4, + 5,0,0,176,192,128,128,4,4,4,5,0,0,112,192,48, + 224,4,5,5,5,0,0,64,240,64,64,48,4,4,4,5, + 0,0,144,144,144,112,5,4,4,6,0,0,136,136,80,32, + 5,4,4,6,0,0,136,136,168,80,4,4,4,5,0,0, + 144,96,96,144,4,6,6,5,0,254,144,144,144,112,16,224, + 4,4,4,5,0,0,240,32,64,240,3,6,6,4,0,255, + 96,64,128,128,64,96,1,6,6,2,0,255,128,128,128,128, + 128,128,3,6,6,4,0,255,192,64,32,32,64,192,5,3, + 3,6,0,1,64,168,16,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,1,7,7,2,0,255,128, + 0,128,128,128,128,128,3,5,5,4,0,0,64,224,128,224, + 64,5,6,6,6,0,0,112,136,72,224,64,248,5,5,5, + 6,0,0,136,112,80,112,136,5,6,6,6,0,0,136,80, + 32,112,112,32,1,5,5,2,0,0,128,128,0,128,128,4, + 7,7,5,0,254,112,128,96,144,96,16,224,3,1,1,4, + 0,6,160,7,7,7,8,0,255,124,130,186,162,186,130,124, + 3,4,4,4,0,4,96,224,160,96,6,5,5,7,0,0, + 36,72,144,72,36,5,3,3,6,0,2,248,8,8,3,1, + 1,5,1,2,224,7,7,7,8,0,255,124,130,186,178,170, + 130,124,5,1,1,6,0,6,248,4,4,4,5,0,3,96, + 144,144,96,3,5,5,5,1,0,64,224,64,0,224,4,5, + 5,5,0,2,96,144,32,64,240,4,5,5,5,0,2,224, + 16,96,16,224,2,2,2,3,0,5,64,128,5,6,6,6, + 0,254,136,136,216,168,128,128,6,7,7,7,0,254,124,232, + 232,104,40,40,40,3,3,3,5,1,1,224,224,224,3,3, + 3,5,1,254,64,32,224,2,5,5,3,0,2,64,192,64, + 64,64,4,5,5,5,0,2,96,144,144,144,96,6,5,5, + 7,0,0,144,72,36,72,144,7,8,8,8,0,254,66,196, + 72,80,38,74,142,2,7,8,8,8,0,254,66,196,72,80, + 44,66,132,14,7,8,8,8,0,254,226,68,40,208,38,74, + 142,2,5,7,7,6,0,255,32,0,32,32,72,136,112,5, + 8,8,6,0,0,64,32,0,112,136,136,248,136,5,8,8, + 6,0,0,16,32,0,112,136,136,248,136,5,8,8,6,0, + 0,32,80,0,112,136,136,248,136,5,8,8,6,0,0,40, + 80,0,112,136,136,248,136,5,7,7,6,0,0,80,0,112, + 136,136,248,136,5,8,8,6,0,0,32,80,32,112,136,136, + 248,136,9,5,10,10,0,0,63,128,72,0,143,0,248,0, + 143,128,5,7,7,6,0,254,112,136,128,136,112,16,112,5, + 8,8,6,0,0,64,32,0,248,128,240,128,248,5,8,8, + 6,0,0,16,32,0,248,128,240,128,248,5,8,8,6,0, + 0,32,80,0,248,128,240,128,248,5,7,7,6,0,0,80, + 0,248,128,240,128,248,3,8,8,4,0,0,128,64,0,224, + 64,64,64,224,3,8,8,4,0,0,32,64,0,224,64,64, + 64,224,3,8,8,4,0,0,64,160,0,224,64,64,64,224, + 3,7,7,4,0,0,160,0,224,64,64,64,224,5,5,5, + 6,0,0,112,72,232,72,112,5,8,8,6,0,0,40,80, + 0,136,200,168,152,136,5,8,8,6,0,0,64,32,0,112, + 136,136,136,112,5,8,8,6,0,0,16,32,0,112,136,136, + 136,112,5,8,8,6,0,0,32,80,0,112,136,136,136,112, + 5,8,8,6,0,0,64,168,16,112,136,136,136,112,5,7, + 7,6,0,0,80,0,112,136,136,136,112,3,3,3,4,0, + 1,160,64,160,5,5,5,6,0,0,120,152,168,200,240,5, + 8,8,6,0,0,64,32,0,136,136,136,136,112,5,8,8, + 6,0,0,16,32,0,136,136,136,136,112,5,8,8,6,0, + 0,32,80,0,136,136,136,136,112,5,7,7,6,0,0,80, + 0,136,136,136,136,112,5,8,8,6,0,0,16,32,0,136, + 136,80,32,32,5,5,5,6,0,0,128,240,136,240,128,4, + 5,5,5,0,0,96,144,160,144,160,4,7,7,5,0,0, + 64,32,0,112,144,144,240,4,7,7,5,0,0,32,64,0, + 112,144,144,240,4,7,7,5,0,0,32,80,0,112,144,144, + 240,4,7,7,5,0,0,80,160,0,112,144,144,240,4,6, + 6,5,0,0,80,0,112,144,144,240,4,7,7,5,0,0, + 32,80,32,112,144,144,240,7,5,5,8,0,0,236,18,126, + 144,238,4,6,6,5,0,254,112,128,128,112,32,96,4,7, + 7,5,0,0,64,32,0,96,144,224,112,4,7,7,5,0, + 0,32,64,0,96,144,224,112,4,7,7,5,0,0,32,80, + 0,96,144,224,112,4,6,6,5,0,0,80,0,96,144,224, + 112,2,7,7,3,0,0,128,64,0,64,64,64,64,2,7, + 7,3,0,0,64,128,0,128,128,128,128,3,7,7,4,0, + 0,64,160,0,64,64,64,64,3,6,6,4,0,0,160,0, + 64,64,64,64,4,6,6,5,0,0,64,32,112,144,144,96, + 4,7,7,5,0,0,80,160,0,160,208,144,144,4,7,7, + 5,0,0,64,32,0,96,144,144,96,4,7,7,5,0,0, + 32,64,0,96,144,144,96,4,7,7,5,0,0,96,144,0, + 96,144,144,96,4,7,7,5,0,0,80,160,0,96,144,144, + 96,4,6,6,5,0,0,80,0,96,144,144,96,5,5,5, + 6,0,0,32,0,248,0,32,4,4,4,5,0,0,112,176, + 208,224,4,7,7,5,0,0,64,32,0,144,144,144,112,4, + 7,7,5,0,0,32,64,0,144,144,144,112,4,7,7,5, + 0,0,32,80,0,144,144,144,112,4,6,6,5,0,0,80, + 0,144,144,144,112,4,8,8,5,0,254,32,64,0,144,144, + 112,16,224,4,6,6,5,0,254,128,224,144,144,224,128,4, + 7,7,5,0,254,80,0,144,144,112,16,224}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikitan[180] U8G_SECTION(".progmem.u8g_font_chikitan") = { + 0,9,10,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,3,3,5,1,1,160,64,160,5,5,5,6,0,0, + 32,32,248,32,32,2,2,2,3,0,255,64,128,5,1,1, + 6,0,2,248,1,1,1,2,0,0,128,3,5,5,5,1, + 0,32,32,64,128,128,4,5,5,5,0,0,96,144,144,144, + 96,2,5,5,3,0,0,64,192,64,64,64,5,5,5,6, + 0,0,112,136,48,64,248,5,5,5,6,0,0,240,8,112, + 8,240,5,5,5,6,0,0,48,80,144,248,16,5,5,5, + 6,0,0,248,128,240,8,240,5,5,5,6,0,0,120,128, + 240,136,112,5,5,5,6,0,0,248,8,16,32,64,5,5, + 5,6,0,0,112,136,112,136,112,5,5,5,6,0,0,112, + 136,120,8,240}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 7 h= 7 x= 1 y= 4 dx= 8 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikitar[1032] U8G_SECTION(".progmem.u8g_font_chikitar") = { + 0,9,10,0,254,5,1,107,2,195,32,127,254,6,254,6, + 254,0,0,0,2,0,0,1,7,7,2,0,255,128,128,128, + 128,128,0,128,3,2,2,4,0,4,160,160,5,5,5,6, + 0,0,80,248,80,248,80,5,7,7,6,0,255,32,120,160, + 112,40,240,32,5,5,5,6,0,0,200,208,32,88,152,5, + 5,5,6,0,0,32,80,104,144,104,1,2,2,2,0,4, + 128,128,3,7,7,4,0,255,32,64,128,128,128,64,32,3, + 7,7,4,0,255,128,64,32,32,32,64,128,3,3,3,5, + 1,1,160,64,160,5,5,5,6,0,0,32,32,248,32,32, + 2,2,2,3,0,255,64,128,5,1,1,6,0,2,248,1, + 1,1,2,0,0,128,3,5,5,5,1,0,32,32,64,128, + 128,4,5,5,5,0,0,96,144,144,144,96,2,5,5,3, + 0,0,64,192,64,64,64,5,5,5,6,0,0,112,136,48, + 64,248,5,5,5,6,0,0,240,8,112,8,240,5,5,5, + 6,0,0,48,80,144,248,16,5,5,5,6,0,0,248,128, + 240,8,240,5,5,5,6,0,0,120,128,240,136,112,5,5, + 5,6,0,0,248,8,16,32,64,5,5,5,6,0,0,112, + 136,112,136,112,5,5,5,6,0,0,112,136,120,8,240,1, + 3,3,2,0,1,128,0,128,1,4,4,2,0,0,128,0, + 128,128,5,5,5,6,0,0,24,96,128,96,24,5,3,3, + 6,0,1,248,0,248,5,5,5,6,0,0,192,48,8,48, + 192,5,7,7,6,0,255,112,136,16,32,32,0,32,7,7, + 7,8,0,255,124,130,154,170,190,128,124,5,5,5,6,0, + 0,112,136,136,248,136,5,5,5,6,0,0,240,136,240,136, + 240,5,5,5,6,0,0,112,136,128,136,112,5,5,5,6, + 0,0,240,136,136,136,240,5,5,5,6,0,0,248,128,240, + 128,248,5,5,5,6,0,0,248,128,240,128,128,5,5,5, + 6,0,0,112,128,184,136,112,5,5,5,6,0,0,136,136, + 248,136,136,3,5,5,4,0,0,224,64,64,64,224,5,5, + 5,6,0,0,8,8,8,136,112,5,5,5,6,0,0,136, + 144,224,144,136,5,5,5,6,0,0,128,128,128,128,248,5, + 5,5,6,0,0,136,216,168,136,136,5,5,5,6,0,0, + 136,200,168,152,136,5,5,5,6,0,0,112,136,136,136,112, + 5,5,5,6,0,0,240,136,136,240,128,5,5,5,6,0, + 0,112,136,136,152,120,5,5,5,6,0,0,240,136,136,240, + 136,5,5,5,6,0,0,120,128,112,8,240,5,5,5,6, + 0,0,248,32,32,32,32,5,5,5,6,0,0,136,136,136, + 136,112,5,5,5,6,0,0,136,136,136,80,32,5,5,5, + 6,0,0,136,168,168,168,80,5,5,5,6,0,0,136,80, + 32,80,136,5,5,5,6,0,0,136,136,80,32,32,5,5, + 5,6,0,0,248,16,32,64,248,2,6,6,3,0,255,192, + 128,128,128,128,192,3,5,5,4,0,0,128,128,64,32,32, + 2,6,6,3,0,255,192,64,64,64,64,192,3,2,2,4, + 0,4,64,160,5,1,1,6,0,255,248,2,2,2,3,0, + 4,128,64,4,4,4,5,0,0,112,144,144,240,4,5,5, + 5,0,0,128,224,144,144,224,4,4,4,5,0,0,112,128, + 128,112,4,5,5,5,0,0,16,112,144,144,112,4,4,4, + 5,0,0,96,144,224,112,4,5,5,5,0,0,48,64,240, + 64,64,4,6,6,5,0,254,112,144,144,240,16,224,4,5, + 5,5,0,0,128,224,144,144,144,1,5,5,2,0,0,128, + 0,128,128,128,2,7,7,3,0,254,64,0,64,64,64,64, + 128,4,5,5,5,0,0,128,144,160,224,144,1,5,5,2, + 0,0,128,128,128,128,128,6,4,4,7,0,0,168,212,148, + 148,4,4,4,5,0,0,160,208,144,144,4,4,4,5,0, + 0,96,144,144,96,4,6,6,5,0,254,224,144,144,224,128, + 128,4,6,6,5,0,254,112,144,144,112,16,16,4,4,4, + 5,0,0,176,192,128,128,4,4,4,5,0,0,112,192,48, + 224,4,5,5,5,0,0,64,240,64,64,48,4,4,4,5, + 0,0,144,144,144,112,5,4,4,6,0,0,136,136,80,32, + 5,4,4,6,0,0,136,136,168,80,4,4,4,5,0,0, + 144,96,96,144,4,6,6,5,0,254,144,144,144,112,16,224, + 4,4,4,5,0,0,240,32,64,240,3,6,6,4,0,255, + 96,64,128,128,64,96,1,6,6,2,0,255,128,128,128,128, + 128,128,3,6,6,4,0,255,192,64,32,32,64,192,5,3, + 3,6,0,1,64,168,16,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 7 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w=12 h=16 x=-3 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB08[2425] U8G_SECTION(".progmem.u8g_font_courB08") = { + 0,12,16,253,252,6,1,146,3,13,32,255,254,9,254,7, + 254,0,0,0,6,0,1,2,6,6,6,1,0,192,192,192, + 192,0,192,3,3,3,6,1,3,160,160,160,5,8,8,6, + 0,255,80,80,248,80,80,248,80,80,5,9,9,6,0,255, + 32,120,200,240,120,24,216,240,32,5,7,7,6,0,0,224, + 168,240,32,120,168,56,6,6,6,6,255,0,56,96,48,124, + 216,124,1,3,3,6,2,3,128,128,128,3,8,8,6,1, + 255,32,64,192,192,192,192,64,32,3,8,8,6,1,255,128, + 64,96,96,96,96,64,128,4,4,4,6,0,3,32,240,96, + 144,5,5,5,6,0,1,32,32,248,32,32,3,3,3,6, + 1,254,96,64,128,5,1,1,6,0,3,248,2,1,1,6, + 1,0,192,4,8,8,6,1,255,16,16,32,32,64,64,128, + 128,5,7,7,6,0,0,112,216,216,216,216,216,112,6,7, + 7,6,0,0,48,240,48,48,48,48,252,5,7,7,6,0, + 0,112,216,24,48,96,216,248,5,7,7,6,0,0,112,216, + 24,112,24,216,112,6,7,7,6,0,0,24,56,88,216,252, + 24,24,5,7,7,6,0,0,248,192,240,216,24,152,240,5, + 7,7,6,0,0,112,216,192,240,216,216,112,5,7,7,6, + 0,0,248,216,24,48,48,96,96,5,7,7,6,0,0,112, + 216,216,112,216,216,112,5,7,7,6,0,0,112,216,216,120, + 24,216,112,2,4,4,6,1,0,192,0,0,192,3,6,6, + 6,0,254,96,0,0,96,64,128,4,5,5,6,0,1,48, + 96,192,96,48,4,3,3,6,0,2,240,0,240,4,5,5, + 6,1,1,192,96,48,96,192,5,6,6,6,0,0,112,152, + 48,96,0,96,6,8,8,6,0,255,112,200,152,168,168,156, + 192,112,7,6,6,6,255,0,120,56,40,124,108,238,6,6, + 6,6,255,0,248,108,120,108,108,248,5,6,6,6,0,0, + 120,216,192,192,216,112,6,6,6,6,255,0,248,108,108,108, + 108,248,6,6,6,6,255,0,252,96,120,96,108,252,6,6, + 6,6,255,0,252,96,120,96,96,240,5,6,6,6,0,0, + 112,216,192,248,216,120,7,6,6,6,255,0,238,108,124,108, + 108,238,4,6,6,6,0,0,240,96,96,96,96,240,6,6, + 6,6,255,0,60,24,24,216,216,112,7,6,6,6,255,0, + 236,104,112,120,108,246,6,6,6,6,255,0,240,96,96,96, + 108,252,6,6,6,6,255,0,196,108,108,124,84,212,7,6, + 6,6,255,0,238,116,116,108,108,228,5,6,6,6,0,0, + 112,216,216,216,216,112,6,6,6,6,255,0,248,108,108,120, + 96,240,5,7,7,6,0,255,112,216,216,216,216,112,24,7, + 6,6,6,255,0,248,108,108,120,108,246,5,6,6,6,0, + 0,120,200,240,56,152,240,6,6,6,6,255,0,252,180,48, + 48,48,120,7,6,6,6,255,0,238,108,108,108,108,56,7, + 6,6,6,255,0,238,108,40,56,56,16,7,6,6,6,255, + 0,214,84,84,124,56,40,6,6,6,6,0,0,204,120,48, + 48,120,204,7,6,6,6,255,0,230,102,60,24,24,60,5, + 6,6,6,0,0,248,216,48,96,216,248,3,8,8,6,1, + 255,224,192,192,192,192,192,192,224,4,8,8,6,0,255,128, + 128,64,64,32,32,16,16,3,8,8,6,1,255,224,96,96, + 96,96,96,96,224,5,3,3,6,0,4,32,112,216,6,1, + 1,6,0,254,252,2,2,2,6,2,6,128,64,6,5,5, + 6,0,0,112,216,120,216,252,6,7,7,6,255,0,224,96, + 120,108,108,108,248,5,5,5,6,0,0,112,216,192,216,112, + 6,7,7,6,0,0,56,24,120,216,216,216,124,5,5,5, + 6,0,0,112,216,248,192,120,5,7,7,6,0,0,56,96, + 248,96,96,96,248,6,7,7,6,0,254,108,216,216,216,120, + 24,240,6,7,7,6,255,0,224,96,120,108,108,108,108,6, + 7,7,6,0,0,48,0,240,48,48,48,252,4,9,9,6, + 0,254,48,0,240,48,48,48,48,48,224,7,7,7,6,255, + 0,224,96,108,120,112,120,110,6,7,7,6,0,0,240,48, + 48,48,48,48,252,6,5,5,6,255,0,248,124,84,84,84, + 6,5,5,6,255,0,216,108,108,108,108,5,5,5,6,0, + 0,112,216,216,216,112,6,7,7,6,255,254,248,108,108,108, + 120,96,240,6,7,7,6,0,254,108,216,216,216,120,24,60, + 6,5,5,6,0,0,220,116,96,96,240,6,5,5,6,0, + 0,120,224,120,28,248,6,7,7,6,0,0,96,96,248,96, + 96,108,56,7,5,5,6,255,0,236,108,108,108,62,6,5, + 5,6,255,0,236,108,56,56,16,7,5,5,6,255,0,214, + 84,124,60,40,6,5,5,6,0,0,236,120,48,120,220,7, + 7,7,6,255,254,238,108,108,40,56,48,224,5,5,5,6, + 0,0,248,176,96,216,248,4,8,8,6,1,255,48,96,96, + 192,96,96,96,48,1,7,7,6,2,255,128,128,128,128,128, + 128,128,4,8,8,6,0,255,192,96,96,48,96,96,96,192, + 5,2,2,6,0,3,104,176,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,6,0,1,2, + 7,7,6,1,254,192,0,192,192,192,192,192,5,8,8,6, + 0,255,32,32,120,200,192,120,32,32,6,7,7,6,0,0, + 56,104,32,248,32,100,248,5,5,5,6,0,1,136,112,80, + 112,136,6,7,7,6,0,0,204,72,252,48,252,48,120,1, + 9,9,6,2,254,128,128,128,128,0,128,128,128,128,5,8, + 8,6,0,255,120,72,96,144,72,48,144,240,3,1,1,6, + 1,5,160,6,7,7,6,0,0,48,72,180,164,180,72,48, + 4,5,5,6,1,2,224,16,208,0,240,7,5,5,6,255, + 0,54,108,216,108,54,5,3,3,6,0,2,248,8,8,5, + 1,1,6,0,3,248,7,7,7,6,0,0,56,68,186,178, + 170,68,56,4,1,1,6,0,5,240,4,3,3,6,0,4, + 96,144,96,5,6,6,6,0,0,32,32,248,32,0,248,3, + 4,4,6,1,3,96,160,64,224,3,4,4,6,1,3,224, + 64,32,192,2,2,2,6,2,5,64,128,7,7,7,6,255, + 254,236,108,108,108,126,64,64,6,8,8,6,0,255,124,168, + 168,104,40,40,40,108,2,1,1,6,1,3,192,3,3,3, + 6,1,254,64,32,192,3,4,4,6,1,3,192,64,64,224, + 4,5,5,6,1,2,96,144,96,0,240,7,5,5,6,255, + 0,216,108,54,108,216,7,7,7,6,255,0,192,68,72,244, + 44,94,4,7,7,7,6,255,0,192,68,72,246,42,68,14, + 7,7,7,6,255,0,224,68,40,212,44,94,4,5,7,7, + 6,0,254,48,0,48,48,96,200,112,7,9,9,6,255,0, + 32,16,0,120,56,40,124,108,238,7,9,9,6,255,0,16, + 32,0,120,56,40,124,108,238,7,9,9,6,255,0,16,40, + 0,120,56,40,124,108,238,7,9,9,6,255,0,52,72,0, + 120,56,40,124,108,238,7,8,8,6,255,0,40,0,120,56, + 40,124,108,238,7,9,9,6,255,0,48,72,48,120,56,40, + 124,108,238,7,6,6,6,255,0,126,58,108,120,218,222,5, + 8,8,6,0,254,120,216,192,192,216,112,16,96,6,9,9, + 6,255,0,32,16,0,252,100,120,96,108,252,6,9,9,6, + 255,0,16,32,0,252,100,120,96,108,252,6,9,9,6,255, + 0,32,80,0,252,100,120,96,108,252,6,8,8,6,255,0, + 80,0,252,100,120,96,108,252,4,9,9,6,0,0,64,32, + 0,240,96,96,96,96,240,4,9,9,6,0,0,32,64,0, + 240,96,96,96,96,240,4,9,9,6,0,0,64,160,0,240, + 96,96,96,96,240,4,8,8,6,0,0,160,0,240,96,96, + 96,96,240,6,6,6,6,255,0,248,108,244,100,108,248,7, + 9,9,6,255,0,52,72,0,238,100,116,124,108,236,5,9, + 9,6,0,0,64,32,0,112,216,216,216,216,112,5,9,9, + 6,0,0,32,64,0,112,216,216,216,216,112,5,9,9,6, + 0,0,32,80,0,112,216,216,216,216,112,5,9,9,6,0, + 0,104,144,0,112,216,216,216,216,112,5,8,8,6,0,0, + 80,0,112,216,216,216,216,112,5,5,5,6,0,1,136,80, + 32,80,136,7,6,6,6,255,0,58,108,124,108,108,184,7, + 9,9,6,255,0,32,16,0,238,108,108,108,108,56,7,9, + 9,6,255,0,8,16,0,238,108,108,108,108,56,7,9,9, + 6,255,0,16,40,0,238,108,108,108,108,56,7,8,8,6, + 255,0,40,0,238,108,108,108,108,56,7,9,9,6,255,0, + 4,8,0,230,102,60,24,24,60,6,6,6,6,255,0,224, + 120,108,108,120,224,7,6,6,6,255,0,56,104,124,102,102, + 236,6,8,8,6,0,0,32,16,0,112,152,120,216,252,6, + 8,8,6,0,0,16,32,0,112,152,120,216,252,6,8,8, + 6,0,0,32,80,0,112,152,120,216,252,6,8,8,6,0, + 0,104,144,0,112,152,120,216,252,6,7,7,6,0,0,80, + 0,112,152,120,216,252,6,9,9,6,0,0,48,72,48,0, + 112,152,120,216,252,6,5,5,6,255,0,108,180,124,176,220, + 5,7,7,6,0,254,112,216,192,216,112,16,96,5,8,8, + 6,0,0,64,32,0,112,216,248,192,120,5,8,8,6,0, + 0,32,64,0,112,216,248,192,120,5,8,8,6,0,0,32, + 80,0,112,216,248,192,120,5,7,7,6,0,0,80,0,112, + 216,248,192,120,6,8,8,6,0,0,32,16,0,112,48,48, + 48,252,6,8,8,6,0,0,16,32,0,112,48,48,48,252, + 6,8,8,6,0,0,32,80,0,112,48,48,48,252,6,7, + 7,6,0,0,80,0,112,48,48,48,252,5,8,8,6,0, + 0,208,96,176,120,216,216,216,112,7,8,8,6,255,0,52, + 72,0,216,108,108,108,110,5,8,8,6,0,0,64,32,0, + 112,216,216,216,112,5,8,8,6,0,0,32,64,0,112,216, + 216,216,112,5,8,8,6,0,0,32,80,0,112,216,216,216, + 112,5,8,8,6,0,0,104,144,0,112,216,216,216,112,5, + 7,7,6,0,0,80,0,112,216,216,216,112,5,5,5,6, + 0,1,32,0,248,0,32,5,7,7,6,0,255,8,112,216, + 248,216,112,128,7,8,8,6,255,0,32,16,0,236,108,108, + 108,62,7,8,8,6,255,0,16,32,0,236,108,108,108,62, + 7,8,8,6,255,0,16,40,0,236,108,108,108,62,7,7, + 7,6,255,0,40,0,236,108,108,108,62,7,10,10,6,255, + 254,8,16,0,238,108,108,40,56,48,240,6,9,9,6,255, + 254,224,96,120,108,108,108,120,96,240,7,9,9,6,255,254, + 40,0,238,108,108,40,56,48,240}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w=12 h=16 x=-3 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB08r[1145] U8G_SECTION(".progmem.u8g_font_courB08r") = { + 0,12,16,253,252,6,1,146,3,13,32,127,254,8,254,7, + 254,0,0,0,6,0,1,2,6,6,6,1,0,192,192,192, + 192,0,192,3,3,3,6,1,3,160,160,160,5,8,8,6, + 0,255,80,80,248,80,80,248,80,80,5,9,9,6,0,255, + 32,120,200,240,120,24,216,240,32,5,7,7,6,0,0,224, + 168,240,32,120,168,56,6,6,6,6,255,0,56,96,48,124, + 216,124,1,3,3,6,2,3,128,128,128,3,8,8,6,1, + 255,32,64,192,192,192,192,64,32,3,8,8,6,1,255,128, + 64,96,96,96,96,64,128,4,4,4,6,0,3,32,240,96, + 144,5,5,5,6,0,1,32,32,248,32,32,3,3,3,6, + 1,254,96,64,128,5,1,1,6,0,3,248,2,1,1,6, + 1,0,192,4,8,8,6,1,255,16,16,32,32,64,64,128, + 128,5,7,7,6,0,0,112,216,216,216,216,216,112,6,7, + 7,6,0,0,48,240,48,48,48,48,252,5,7,7,6,0, + 0,112,216,24,48,96,216,248,5,7,7,6,0,0,112,216, + 24,112,24,216,112,6,7,7,6,0,0,24,56,88,216,252, + 24,24,5,7,7,6,0,0,248,192,240,216,24,152,240,5, + 7,7,6,0,0,112,216,192,240,216,216,112,5,7,7,6, + 0,0,248,216,24,48,48,96,96,5,7,7,6,0,0,112, + 216,216,112,216,216,112,5,7,7,6,0,0,112,216,216,120, + 24,216,112,2,4,4,6,1,0,192,0,0,192,3,6,6, + 6,0,254,96,0,0,96,64,128,4,5,5,6,0,1,48, + 96,192,96,48,4,3,3,6,0,2,240,0,240,4,5,5, + 6,1,1,192,96,48,96,192,5,6,6,6,0,0,112,152, + 48,96,0,96,6,8,8,6,0,255,112,200,152,168,168,156, + 192,112,7,6,6,6,255,0,120,56,40,124,108,238,6,6, + 6,6,255,0,248,108,120,108,108,248,5,6,6,6,0,0, + 120,216,192,192,216,112,6,6,6,6,255,0,248,108,108,108, + 108,248,6,6,6,6,255,0,252,96,120,96,108,252,6,6, + 6,6,255,0,252,96,120,96,96,240,5,6,6,6,0,0, + 112,216,192,248,216,120,7,6,6,6,255,0,238,108,124,108, + 108,238,4,6,6,6,0,0,240,96,96,96,96,240,6,6, + 6,6,255,0,60,24,24,216,216,112,7,6,6,6,255,0, + 236,104,112,120,108,246,6,6,6,6,255,0,240,96,96,96, + 108,252,6,6,6,6,255,0,196,108,108,124,84,212,7,6, + 6,6,255,0,238,116,116,108,108,228,5,6,6,6,0,0, + 112,216,216,216,216,112,6,6,6,6,255,0,248,108,108,120, + 96,240,5,7,7,6,0,255,112,216,216,216,216,112,24,7, + 6,6,6,255,0,248,108,108,120,108,246,5,6,6,6,0, + 0,120,200,240,56,152,240,6,6,6,6,255,0,252,180,48, + 48,48,120,7,6,6,6,255,0,238,108,108,108,108,56,7, + 6,6,6,255,0,238,108,40,56,56,16,7,6,6,6,255, + 0,214,84,84,124,56,40,6,6,6,6,0,0,204,120,48, + 48,120,204,7,6,6,6,255,0,230,102,60,24,24,60,5, + 6,6,6,0,0,248,216,48,96,216,248,3,8,8,6,1, + 255,224,192,192,192,192,192,192,224,4,8,8,6,0,255,128, + 128,64,64,32,32,16,16,3,8,8,6,1,255,224,96,96, + 96,96,96,96,224,5,3,3,6,0,4,32,112,216,6,1, + 1,6,0,254,252,2,2,2,6,2,6,128,64,6,5,5, + 6,0,0,112,216,120,216,252,6,7,7,6,255,0,224,96, + 120,108,108,108,248,5,5,5,6,0,0,112,216,192,216,112, + 6,7,7,6,0,0,56,24,120,216,216,216,124,5,5,5, + 6,0,0,112,216,248,192,120,5,7,7,6,0,0,56,96, + 248,96,96,96,248,6,7,7,6,0,254,108,216,216,216,120, + 24,240,6,7,7,6,255,0,224,96,120,108,108,108,108,6, + 7,7,6,0,0,48,0,240,48,48,48,252,4,9,9,6, + 0,254,48,0,240,48,48,48,48,48,224,7,7,7,6,255, + 0,224,96,108,120,112,120,110,6,7,7,6,0,0,240,48, + 48,48,48,48,252,6,5,5,6,255,0,248,124,84,84,84, + 6,5,5,6,255,0,216,108,108,108,108,5,5,5,6,0, + 0,112,216,216,216,112,6,7,7,6,255,254,248,108,108,108, + 120,96,240,6,7,7,6,0,254,108,216,216,216,120,24,60, + 6,5,5,6,0,0,220,116,96,96,240,6,5,5,6,0, + 0,120,224,120,28,248,6,7,7,6,0,0,96,96,248,96, + 96,108,56,7,5,5,6,255,0,236,108,108,108,62,6,5, + 5,6,255,0,236,108,56,56,16,7,5,5,6,255,0,214, + 84,124,60,40,6,5,5,6,0,0,236,120,48,120,220,7, + 7,7,6,255,254,238,108,108,40,56,48,224,5,5,5,6, + 0,0,248,176,96,216,248,4,8,8,6,1,255,48,96,96, + 192,96,96,96,48,1,7,7,6,2,255,128,128,128,128,128, + 128,128,4,8,8,6,0,255,192,96,96,48,96,96,96,192, + 5,2,2,6,0,3,104,176,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 3 y= 8 dx= 9 dy= 0 ascent=12 len=26 + Font Bounding box w=13 h=21 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB10[3355] U8G_SECTION(".progmem.u8g_font_courB10") = { + 0,13,21,254,250,9,1,222,4,32,32,255,253,12,252,10, + 253,0,0,0,9,0,1,2,9,9,9,3,0,192,192,192, + 192,192,128,0,192,192,5,4,4,9,2,6,216,216,216,72, + 7,11,11,9,1,255,40,40,40,254,40,40,254,40,40,40, + 40,6,12,12,9,1,255,48,48,124,204,192,240,60,12,204, + 248,48,48,7,10,10,9,1,0,96,144,146,108,16,96,152, + 36,36,24,7,8,8,9,1,0,56,96,96,48,122,204,204, + 118,2,4,4,9,3,5,192,192,192,64,4,11,11,9,2, + 254,48,96,96,192,192,192,192,192,96,96,48,4,11,11,9, + 2,254,192,96,96,48,48,48,48,48,96,96,192,5,5,5, + 9,2,4,32,168,248,112,216,7,7,7,9,1,1,16,16, + 16,254,16,16,16,3,4,4,9,2,254,96,96,192,128,6, + 1,1,9,1,4,252,2,2,2,9,3,0,192,192,7,12, + 12,9,0,254,6,6,12,12,24,24,48,48,96,96,192,192, + 7,10,10,9,1,0,56,108,198,198,198,198,198,198,108,56, + 6,10,10,9,2,0,48,240,48,48,48,48,48,48,48,252, + 6,10,10,9,1,0,120,204,204,12,12,24,48,96,192,252, + 6,10,10,9,1,0,120,204,12,12,56,12,12,12,204,120, + 7,10,10,9,1,0,12,28,60,44,76,204,140,254,12,30, + 6,10,10,9,1,0,252,192,192,248,204,12,12,12,204,120, + 6,10,10,9,1,0,60,96,192,216,236,204,204,204,204,120, + 6,10,10,9,1,0,252,140,12,24,24,24,24,48,48,48, + 6,10,10,9,1,0,120,204,204,204,120,204,204,204,204,120, + 6,10,10,9,1,0,120,204,204,204,204,204,124,12,24,240, + 2,7,7,9,3,0,192,192,0,0,0,192,192,3,9,9, + 9,2,254,96,96,0,0,0,96,96,192,128,8,7,7,9, + 0,1,7,28,112,192,112,28,7,7,4,4,9,1,2,254, + 0,0,254,8,7,7,9,1,1,224,56,14,3,14,56,224, + 6,9,9,9,1,0,248,204,140,12,56,48,0,48,48,7, + 9,9,9,1,0,120,196,156,180,164,180,158,192,120,9,9, + 18,9,0,0,124,0,28,0,54,0,54,0,34,0,99,0, + 127,0,99,0,247,128,8,9,9,9,0,0,254,99,99,99, + 126,99,99,99,254,7,9,9,9,1,0,58,102,198,192,192, + 192,192,102,60,8,9,9,9,0,0,252,102,99,99,99,99, + 99,102,252,8,9,9,9,0,0,255,99,99,104,120,104,99, + 99,255,8,9,9,9,0,0,255,99,99,104,120,104,96,96, + 248,9,9,18,9,0,0,61,0,103,0,195,0,192,0,192, + 0,207,128,195,0,99,0,63,0,9,9,18,9,0,0,247, + 128,99,0,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,6,9,9,9,1,0,252,48,48,48,48,48,48,48,252, + 9,9,18,9,0,0,31,128,6,0,6,0,6,0,6,0, + 198,0,198,0,198,0,124,0,9,9,18,9,0,0,247,0, + 102,0,108,0,120,0,124,0,102,0,102,0,99,0,243,128, + 8,9,9,9,0,0,248,96,96,96,96,99,99,99,255,9, + 9,18,9,0,0,227,128,99,0,119,0,119,0,107,0,107, + 0,99,0,99,0,247,128,9,9,18,9,0,0,231,128,99, + 0,115,0,115,0,107,0,107,0,103,0,103,0,243,0,8, + 9,9,9,0,0,60,102,195,195,195,195,195,102,60,8,9, + 9,9,0,0,254,99,99,99,102,124,96,96,248,8,11,11, + 9,0,254,60,102,195,195,195,195,195,102,60,25,110,9,9, + 18,9,0,0,254,0,99,0,99,0,99,0,102,0,124,0, + 102,0,99,0,243,128,7,9,9,9,1,0,122,206,198,224, + 124,14,198,230,188,8,9,9,9,0,0,255,219,219,24,24, + 24,24,24,60,9,9,18,9,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,9,9,18,9, + 0,0,247,128,99,0,99,0,99,0,54,0,54,0,54,0, + 28,0,28,0,9,9,18,9,0,0,247,128,99,0,107,0, + 107,0,107,0,119,0,119,0,99,0,99,0,8,9,9,9, + 0,0,231,102,102,60,24,60,102,102,231,10,9,18,9,255, + 0,243,192,97,128,51,0,51,0,30,0,12,0,12,0,12, + 0,63,0,7,9,9,9,1,0,254,198,204,24,24,48,102, + 198,254,4,11,11,9,2,254,240,192,192,192,192,192,192,192, + 192,192,240,7,12,12,9,1,254,192,192,96,96,48,48,24, + 24,12,12,6,6,4,11,11,9,2,254,240,48,48,48,48, + 48,48,48,48,48,240,5,4,4,9,2,5,32,112,216,136, + 9,1,2,9,0,254,255,128,3,2,2,9,2,7,192,96, + 8,7,7,9,0,0,124,6,6,126,198,206,119,8,10,10, + 9,0,0,224,96,96,110,115,99,99,99,115,238,8,7,7, + 9,0,0,61,103,195,192,192,99,62,8,10,10,9,0,0, + 14,6,6,118,206,198,198,198,206,119,8,7,7,9,0,0, + 60,102,195,255,192,103,62,7,10,10,9,1,0,30,48,48, + 252,48,48,48,48,48,252,8,10,10,9,0,253,119,206,198, + 198,198,206,118,6,6,124,9,10,20,9,0,0,224,0,96, + 0,96,0,110,0,115,0,99,0,99,0,99,0,99,0,247, + 128,6,10,10,9,1,0,48,48,0,240,48,48,48,48,48, + 252,5,13,13,9,1,253,24,24,0,120,24,24,24,24,24, + 24,24,24,240,8,10,10,9,0,0,224,96,96,103,108,120, + 120,108,102,231,6,10,10,9,1,0,240,48,48,48,48,48, + 48,48,48,252,9,7,14,9,0,0,223,0,109,128,109,128, + 109,128,109,128,109,128,237,128,9,7,14,9,0,0,238,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,7,7,9, + 0,0,60,102,195,195,195,102,60,8,10,10,9,0,253,238, + 115,99,99,99,115,110,96,96,240,8,10,10,9,0,253,119, + 206,198,198,198,206,118,6,6,15,7,7,7,9,1,0,238, + 112,96,96,96,96,252,7,7,7,9,1,0,126,198,192,124, + 6,198,252,7,9,9,9,1,0,96,96,252,96,96,96,96, + 102,60,9,7,14,9,0,0,231,0,99,0,99,0,99,0, + 99,0,103,0,59,128,9,7,14,9,0,0,247,128,99,0, + 99,0,54,0,54,0,28,0,28,0,10,7,14,9,255,0, + 225,192,109,128,109,128,109,128,45,0,51,0,51,0,8,7, + 7,9,0,0,231,102,60,24,60,102,231,9,10,20,9,0, + 253,227,128,99,0,99,0,54,0,54,0,28,0,28,0,24, + 0,24,0,124,0,6,7,7,9,1,0,252,140,24,48,96, + 196,252,4,11,11,9,2,254,48,96,96,96,96,192,96,96, + 96,96,48,2,11,11,9,3,254,192,192,192,192,192,192,192, + 192,192,192,192,4,11,11,9,2,254,192,96,96,96,96,48, + 96,96,96,96,192,6,3,3,9,1,3,100,252,152,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,1,2,9,9,9,3,254,192,192,0,128,192, + 192,192,192,192,6,10,10,9,1,255,48,48,124,204,192,192, + 204,120,48,48,7,9,9,9,1,0,60,102,96,96,248,96, + 96,102,252,7,6,6,9,1,1,198,124,198,198,124,198,10, + 9,18,9,0,0,243,192,97,128,51,0,30,0,63,0,12, + 0,63,0,12,0,63,0,2,11,11,9,3,254,192,192,192, + 192,192,0,192,192,192,192,192,8,11,11,9,0,255,62,98, + 96,240,140,227,57,15,6,70,124,4,2,2,9,2,8,144, + 144,9,8,16,9,0,1,28,0,99,0,205,128,209,128,209, + 128,205,128,99,0,28,0,5,7,7,9,2,2,112,24,120, + 216,104,0,248,7,5,5,9,1,1,54,108,216,108,54,7, + 3,3,9,1,2,254,2,2,6,1,1,9,1,4,252,9, + 8,16,9,0,1,62,0,99,0,217,128,213,128,217,128,213, + 128,99,0,62,0,4,1,1,9,2,8,240,4,4,4,9, + 2,5,96,144,144,96,7,7,7,9,1,1,16,16,254,16, + 16,0,254,5,6,6,9,2,4,112,152,24,48,96,248,5, + 6,6,9,2,4,112,152,48,24,152,112,3,2,2,9,3, + 7,96,192,9,10,20,9,0,253,231,0,99,0,99,0,99, + 0,99,0,103,0,123,128,96,0,96,0,96,0,7,11,11, + 9,1,255,126,212,148,148,212,116,20,20,20,20,126,2,2, + 2,9,3,3,192,192,3,4,4,9,2,253,64,96,32,224, + 4,6,6,9,3,4,96,224,96,96,96,240,5,7,7,9, + 2,2,112,216,136,216,112,0,248,7,5,5,9,1,1,216, + 108,54,108,216,9,10,20,9,0,0,96,0,224,128,97,0, + 98,0,101,0,251,0,23,0,43,0,79,128,131,0,9,10, + 20,9,0,0,96,0,224,128,97,0,98,0,103,0,253,128, + 17,128,35,0,70,0,15,128,10,10,20,9,255,0,112,0, + 152,64,48,128,25,0,154,128,117,128,11,128,21,128,39,192, + 65,128,6,9,9,9,1,254,48,48,0,48,112,192,196,204, + 124,9,12,24,9,0,0,24,0,12,0,0,0,124,0,28, + 0,54,0,54,0,34,0,99,0,127,0,99,0,247,128,9, + 12,24,9,0,0,12,0,24,0,0,0,124,0,28,0,54, + 0,54,0,34,0,99,0,127,0,99,0,247,128,9,12,24, + 9,0,0,28,0,54,0,0,0,124,0,28,0,54,0,54, + 0,34,0,99,0,127,0,99,0,247,128,9,12,24,9,0, + 0,26,0,44,0,0,0,124,0,28,0,54,0,54,0,34, + 0,99,0,127,0,99,0,247,128,9,12,24,9,0,0,36, + 0,36,0,0,0,124,0,28,0,54,0,54,0,34,0,99, + 0,127,0,99,0,247,128,9,12,24,9,0,0,24,0,36, + 0,24,0,126,0,28,0,54,0,54,0,34,0,99,0,127, + 0,99,0,247,128,9,9,18,9,0,0,63,128,28,128,28, + 0,61,0,47,0,109,0,124,0,76,128,223,128,7,13,13, + 9,1,252,58,110,198,192,192,192,192,102,60,16,24,8,56, + 8,12,12,9,0,0,24,12,0,255,99,99,104,120,104,99, + 99,255,8,12,12,9,0,0,12,24,0,255,99,99,104,120, + 104,99,99,255,8,12,12,9,0,0,28,54,0,255,99,99, + 104,120,104,99,99,255,8,12,12,9,0,0,36,36,0,255, + 99,99,104,120,104,99,99,255,6,12,12,9,1,0,96,48, + 0,252,48,48,48,48,48,48,48,252,6,12,12,9,1,0, + 24,48,0,252,48,48,48,48,48,48,48,252,6,12,12,9, + 1,0,56,108,0,252,48,48,48,48,48,48,48,252,6,12, + 12,9,1,0,72,72,0,252,48,48,48,48,48,48,48,252, + 8,9,9,9,0,0,252,102,99,99,243,99,99,102,252,9, + 12,24,9,0,0,26,0,44,0,0,0,231,128,99,0,115, + 0,115,0,107,0,107,0,103,0,103,0,243,0,8,12,12, + 9,0,0,48,24,0,60,102,195,195,195,195,195,102,60,8, + 12,12,9,0,0,12,24,0,60,102,195,195,195,195,195,102, + 60,8,12,12,9,0,0,56,108,0,60,102,195,195,195,195, + 195,102,60,8,12,12,9,0,0,52,88,0,60,102,195,195, + 195,195,195,102,60,8,12,12,9,0,0,36,36,0,60,102, + 195,195,195,195,195,102,60,6,7,7,9,1,1,132,204,120, + 48,120,204,132,8,10,10,9,0,0,1,62,102,203,203,211, + 211,227,102,188,9,12,24,9,0,0,24,0,12,0,0,0, + 247,128,99,0,99,0,99,0,99,0,99,0,99,0,99,0, + 62,0,9,12,24,9,0,0,12,0,24,0,0,0,247,128, + 99,0,99,0,99,0,99,0,99,0,99,0,99,0,62,0, + 9,12,24,9,0,0,28,0,54,0,0,0,247,128,99,0, + 99,0,99,0,99,0,99,0,99,0,99,0,62,0,9,12, + 24,9,0,0,18,0,18,0,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,10,12,24,9, + 255,0,6,0,12,0,0,0,243,192,97,128,51,0,51,0, + 30,0,12,0,12,0,12,0,63,0,8,9,9,9,0,0, + 240,96,126,99,99,102,124,96,240,8,9,9,9,0,0,60, + 102,102,108,102,99,99,107,238,8,10,10,9,0,0,48,24, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,12,24, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,56,108, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,52,88, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,36,36, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,24,36, + 24,124,6,6,126,198,206,119,9,7,14,9,0,0,119,0, + 29,128,8,128,127,128,200,0,205,128,119,0,8,11,11,9, + 0,252,61,103,195,192,192,99,62,16,24,8,56,8,10,10, + 9,0,0,48,24,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,12,24,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,28,54,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,36,36,0,60,102,195,255,192,103,62,6,10,10, + 9,1,0,96,48,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,24,48,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,112,216,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,72,72,0,240,48,48,48,48,48,252,8,10,10, + 9,0,0,236,56,204,62,102,195,195,195,102,60,9,10,20, + 9,0,0,26,0,44,0,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,247,128,8,10,10,9,0,0,48,24,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,12,24,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,28,54,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,52,88,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,36,36,0, + 60,102,195,195,195,102,60,8,7,7,9,0,1,24,24,0, + 255,0,24,24,8,7,7,9,0,0,61,102,207,219,243,102, + 188,9,10,20,9,0,0,24,0,12,0,0,0,231,0,99, + 0,99,0,99,0,99,0,103,0,59,128,9,10,20,9,0, + 0,12,0,24,0,0,0,231,0,99,0,99,0,99,0,99, + 0,103,0,59,128,9,10,20,9,0,0,28,0,54,0,0, + 0,231,0,99,0,99,0,99,0,99,0,103,0,59,128,9, + 10,20,9,0,0,36,0,36,0,0,0,231,0,99,0,99, + 0,99,0,99,0,103,0,59,128,9,13,26,9,0,253,6, + 0,12,0,0,0,227,128,99,0,99,0,54,0,54,0,28, + 0,28,0,24,0,24,0,124,0,8,12,12,9,0,253,224, + 96,110,115,99,99,99,115,110,96,96,240,9,13,26,9,0, + 253,18,0,18,0,0,0,227,128,99,0,99,0,54,0,54, + 0,28,0,28,0,24,0,24,0,124,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 3 y= 7 dx= 9 dy= 0 ascent=11 len=20 + Font Bounding box w=13 h=21 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB10r[1551] U8G_SECTION(".progmem.u8g_font_courB10r") = { + 0,13,21,254,250,9,1,222,4,32,32,127,253,11,253,10, + 253,0,0,0,9,0,1,2,9,9,9,3,0,192,192,192, + 192,192,128,0,192,192,5,4,4,9,2,6,216,216,216,72, + 7,11,11,9,1,255,40,40,40,254,40,40,254,40,40,40, + 40,6,12,12,9,1,255,48,48,124,204,192,240,60,12,204, + 248,48,48,7,10,10,9,1,0,96,144,146,108,16,96,152, + 36,36,24,7,8,8,9,1,0,56,96,96,48,122,204,204, + 118,2,4,4,9,3,5,192,192,192,64,4,11,11,9,2, + 254,48,96,96,192,192,192,192,192,96,96,48,4,11,11,9, + 2,254,192,96,96,48,48,48,48,48,96,96,192,5,5,5, + 9,2,4,32,168,248,112,216,7,7,7,9,1,1,16,16, + 16,254,16,16,16,3,4,4,9,2,254,96,96,192,128,6, + 1,1,9,1,4,252,2,2,2,9,3,0,192,192,7,12, + 12,9,0,254,6,6,12,12,24,24,48,48,96,96,192,192, + 7,10,10,9,1,0,56,108,198,198,198,198,198,198,108,56, + 6,10,10,9,2,0,48,240,48,48,48,48,48,48,48,252, + 6,10,10,9,1,0,120,204,204,12,12,24,48,96,192,252, + 6,10,10,9,1,0,120,204,12,12,56,12,12,12,204,120, + 7,10,10,9,1,0,12,28,60,44,76,204,140,254,12,30, + 6,10,10,9,1,0,252,192,192,248,204,12,12,12,204,120, + 6,10,10,9,1,0,60,96,192,216,236,204,204,204,204,120, + 6,10,10,9,1,0,252,140,12,24,24,24,24,48,48,48, + 6,10,10,9,1,0,120,204,204,204,120,204,204,204,204,120, + 6,10,10,9,1,0,120,204,204,204,204,204,124,12,24,240, + 2,7,7,9,3,0,192,192,0,0,0,192,192,3,9,9, + 9,2,254,96,96,0,0,0,96,96,192,128,8,7,7,9, + 0,1,7,28,112,192,112,28,7,7,4,4,9,1,2,254, + 0,0,254,8,7,7,9,1,1,224,56,14,3,14,56,224, + 6,9,9,9,1,0,248,204,140,12,56,48,0,48,48,7, + 9,9,9,1,0,120,196,156,180,164,180,158,192,120,9,9, + 18,9,0,0,124,0,28,0,54,0,54,0,34,0,99,0, + 127,0,99,0,247,128,8,9,9,9,0,0,254,99,99,99, + 126,99,99,99,254,7,9,9,9,1,0,58,102,198,192,192, + 192,192,102,60,8,9,9,9,0,0,252,102,99,99,99,99, + 99,102,252,8,9,9,9,0,0,255,99,99,104,120,104,99, + 99,255,8,9,9,9,0,0,255,99,99,104,120,104,96,96, + 248,9,9,18,9,0,0,61,0,103,0,195,0,192,0,192, + 0,207,128,195,0,99,0,63,0,9,9,18,9,0,0,247, + 128,99,0,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,6,9,9,9,1,0,252,48,48,48,48,48,48,48,252, + 9,9,18,9,0,0,31,128,6,0,6,0,6,0,6,0, + 198,0,198,0,198,0,124,0,9,9,18,9,0,0,247,0, + 102,0,108,0,120,0,124,0,102,0,102,0,99,0,243,128, + 8,9,9,9,0,0,248,96,96,96,96,99,99,99,255,9, + 9,18,9,0,0,227,128,99,0,119,0,119,0,107,0,107, + 0,99,0,99,0,247,128,9,9,18,9,0,0,231,128,99, + 0,115,0,115,0,107,0,107,0,103,0,103,0,243,0,8, + 9,9,9,0,0,60,102,195,195,195,195,195,102,60,8,9, + 9,9,0,0,254,99,99,99,102,124,96,96,248,8,11,11, + 9,0,254,60,102,195,195,195,195,195,102,60,25,110,9,9, + 18,9,0,0,254,0,99,0,99,0,99,0,102,0,124,0, + 102,0,99,0,243,128,7,9,9,9,1,0,122,206,198,224, + 124,14,198,230,188,8,9,9,9,0,0,255,219,219,24,24, + 24,24,24,60,9,9,18,9,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,9,9,18,9, + 0,0,247,128,99,0,99,0,99,0,54,0,54,0,54,0, + 28,0,28,0,9,9,18,9,0,0,247,128,99,0,107,0, + 107,0,107,0,119,0,119,0,99,0,99,0,8,9,9,9, + 0,0,231,102,102,60,24,60,102,102,231,10,9,18,9,255, + 0,243,192,97,128,51,0,51,0,30,0,12,0,12,0,12, + 0,63,0,7,9,9,9,1,0,254,198,204,24,24,48,102, + 198,254,4,11,11,9,2,254,240,192,192,192,192,192,192,192, + 192,192,240,7,12,12,9,1,254,192,192,96,96,48,48,24, + 24,12,12,6,6,4,11,11,9,2,254,240,48,48,48,48, + 48,48,48,48,48,240,5,4,4,9,2,5,32,112,216,136, + 9,1,2,9,0,254,255,128,3,2,2,9,2,7,192,96, + 8,7,7,9,0,0,124,6,6,126,198,206,119,8,10,10, + 9,0,0,224,96,96,110,115,99,99,99,115,238,8,7,7, + 9,0,0,61,103,195,192,192,99,62,8,10,10,9,0,0, + 14,6,6,118,206,198,198,198,206,119,8,7,7,9,0,0, + 60,102,195,255,192,103,62,7,10,10,9,1,0,30,48,48, + 252,48,48,48,48,48,252,8,10,10,9,0,253,119,206,198, + 198,198,206,118,6,6,124,9,10,20,9,0,0,224,0,96, + 0,96,0,110,0,115,0,99,0,99,0,99,0,99,0,247, + 128,6,10,10,9,1,0,48,48,0,240,48,48,48,48,48, + 252,5,13,13,9,1,253,24,24,0,120,24,24,24,24,24, + 24,24,24,240,8,10,10,9,0,0,224,96,96,103,108,120, + 120,108,102,231,6,10,10,9,1,0,240,48,48,48,48,48, + 48,48,48,252,9,7,14,9,0,0,223,0,109,128,109,128, + 109,128,109,128,109,128,237,128,9,7,14,9,0,0,238,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,7,7,9, + 0,0,60,102,195,195,195,102,60,8,10,10,9,0,253,238, + 115,99,99,99,115,110,96,96,240,8,10,10,9,0,253,119, + 206,198,198,198,206,118,6,6,15,7,7,7,9,1,0,238, + 112,96,96,96,96,252,7,7,7,9,1,0,126,198,192,124, + 6,198,252,7,9,9,9,1,0,96,96,252,96,96,96,96, + 102,60,9,7,14,9,0,0,231,0,99,0,99,0,99,0, + 99,0,103,0,59,128,9,7,14,9,0,0,247,128,99,0, + 99,0,54,0,54,0,28,0,28,0,10,7,14,9,255,0, + 225,192,109,128,109,128,109,128,45,0,51,0,51,0,8,7, + 7,9,0,0,231,102,60,24,60,102,231,9,10,20,9,0, + 253,227,128,99,0,99,0,54,0,54,0,28,0,28,0,24, + 0,24,0,124,0,6,7,7,9,1,0,252,140,24,48,96, + 196,252,4,11,11,9,2,254,48,96,96,96,96,192,96,96, + 96,96,48,2,11,11,9,3,254,192,192,192,192,192,192,192, + 192,192,192,192,4,11,11,9,2,254,192,96,96,96,96,48, + 96,96,96,96,192,6,3,3,9,1,3,100,252,152,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=11 h=14 x= 4 y= 9 dx=10 dy= 0 ascent=14 len=28 + Font Bounding box w=16 h=24 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB12[3959] U8G_SECTION(".progmem.u8g_font_courB12") = { + 0,16,24,253,250,10,2,51,4,246,32,255,253,14,253,11, + 253,0,0,0,10,0,1,2,11,11,10,3,0,192,192,192, + 192,192,192,192,192,0,192,192,6,5,5,10,2,6,204,204, + 204,204,204,9,12,24,10,0,255,54,0,54,0,54,0,54, + 0,255,128,54,0,54,0,255,128,54,0,54,0,54,0,54, + 0,7,13,13,10,1,255,24,24,126,198,192,224,124,14,6, + 198,252,48,48,8,11,11,10,1,0,120,204,204,120,7,60, + 224,30,51,51,30,7,9,9,10,1,0,56,108,96,48,118, + 222,204,204,126,2,5,5,10,4,6,192,192,192,192,192,4, + 13,13,10,3,254,48,96,96,96,192,192,192,192,192,96,96, + 96,48,4,13,13,10,2,254,192,96,96,96,48,48,48,48, + 48,96,96,96,192,8,6,6,10,1,5,24,24,255,60,60, + 102,8,8,8,10,1,1,24,24,24,255,255,24,24,24,3, + 5,5,10,3,253,224,224,96,192,128,7,2,2,10,1,4, + 254,254,3,2,2,10,3,0,224,224,7,14,14,10,1,254, + 6,6,12,12,12,24,24,48,48,48,96,96,192,192,8,11, + 11,10,1,0,60,102,102,195,195,195,195,195,102,102,60,8, + 11,11,10,1,0,24,120,216,24,24,24,24,24,24,24,255, + 7,11,11,10,1,0,120,204,134,6,6,12,24,48,96,198, + 254,7,11,11,10,1,0,120,204,134,12,56,12,6,6,134, + 204,120,8,11,11,10,1,0,6,14,30,54,102,70,198,255, + 6,6,31,7,11,11,10,1,0,254,192,192,192,252,198,6, + 6,6,204,248,8,11,11,10,1,0,30,112,96,192,220,230, + 195,195,195,102,60,7,11,11,10,1,0,254,198,6,12,12, + 24,24,24,48,48,48,7,11,11,10,1,0,56,108,198,68, + 56,108,198,198,198,108,56,8,11,11,10,1,0,60,102,195, + 195,103,59,3,3,6,14,120,3,7,7,10,3,0,224,224, + 0,0,0,224,224,3,10,10,10,3,253,224,224,0,0,0, + 224,224,96,192,128,9,9,18,10,1,0,1,128,7,128,30, + 0,120,0,224,0,120,0,30,0,7,128,1,128,9,5,10, + 10,0,2,255,128,255,128,0,0,255,128,255,128,9,9,18, + 10,0,0,192,0,240,0,60,0,15,0,3,128,15,0,60, + 0,240,0,192,0,7,10,10,10,1,0,124,198,198,6,28, + 48,48,0,48,48,9,12,24,10,0,255,62,0,99,0,193, + 128,221,128,178,128,178,128,178,128,178,128,223,0,192,0,99, + 0,62,0,10,10,20,10,0,0,60,0,12,0,30,0,18, + 0,51,0,51,0,63,0,97,128,97,128,243,192,9,10,20, + 10,0,0,254,0,99,0,97,128,99,0,126,0,99,0,97, + 128,97,128,99,0,254,0,9,10,20,10,0,0,30,128,115, + 128,97,128,192,0,192,0,192,0,192,0,97,128,115,128,30, + 0,9,10,20,10,0,0,252,0,103,0,99,0,97,128,97, + 128,97,128,97,128,99,0,103,0,252,0,8,10,10,10,1, + 0,255,99,96,100,124,100,96,99,99,255,8,10,10,10,1, + 0,255,99,96,100,124,100,96,96,96,248,10,10,20,10,0, + 0,30,128,115,128,97,128,192,0,192,0,199,192,193,128,97, + 128,113,128,31,0,9,10,20,10,0,0,247,128,99,0,99, + 0,99,0,127,0,99,0,99,0,99,0,99,0,247,128,8, + 10,10,10,1,0,255,24,24,24,24,24,24,24,24,255,9, + 10,20,10,0,0,63,128,6,0,6,0,6,0,6,0,6, + 0,198,0,198,0,198,0,124,0,9,10,20,10,0,0,247, + 128,99,0,102,0,108,0,120,0,124,0,102,0,102,0,99, + 0,251,128,9,10,20,10,0,0,252,0,48,0,48,0,48, + 0,48,0,48,0,49,128,49,128,49,128,255,128,10,10,20, + 10,0,0,225,192,97,128,115,128,115,128,127,128,109,128,109, + 128,97,128,97,128,243,192,10,10,20,10,0,0,247,192,113, + 128,121,128,105,128,109,128,109,128,101,128,103,128,99,128,251, + 128,9,10,20,10,0,0,62,0,99,0,99,0,193,128,193, + 128,193,128,193,128,99,0,99,0,62,0,9,10,20,10,0, + 0,254,0,99,0,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,252,0,9,12,24,10,0,254,62,0,99,0,99, + 0,193,128,193,128,193,128,193,128,99,0,99,0,62,0,25, + 128,63,0,9,10,20,10,0,0,252,0,102,0,99,0,99, + 0,102,0,124,0,102,0,99,0,99,0,251,128,8,10,10, + 10,1,0,61,103,195,224,120,30,7,195,230,188,8,10,10, + 10,1,0,255,153,153,153,24,24,24,24,24,126,10,10,20, + 10,0,0,243,192,97,128,97,128,97,128,97,128,97,128,97, + 128,97,128,51,0,30,0,10,10,20,10,0,0,243,192,97, + 128,97,128,51,0,51,0,51,0,30,0,30,0,12,0,12, + 0,10,10,20,10,0,0,243,192,97,128,109,128,109,128,109, + 128,63,0,51,0,51,0,51,0,51,0,10,10,20,10,0, + 0,243,192,97,128,51,0,30,0,12,0,12,0,30,0,51, + 0,97,128,243,192,10,10,20,10,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,7, + 10,10,10,1,0,254,198,204,28,24,48,112,102,198,254,4, + 13,13,10,3,254,240,192,192,192,192,192,192,192,192,192,192, + 192,240,7,14,14,10,1,254,192,192,96,96,96,48,48,56, + 24,24,12,12,6,6,4,13,13,10,2,254,240,48,48,48, + 48,48,48,48,48,48,48,48,240,8,4,4,10,1,7,24, + 60,102,195,10,2,4,10,0,253,255,192,255,192,4,3,3, + 10,2,8,192,96,48,8,7,7,10,1,0,60,102,6,126, + 198,198,123,9,11,22,10,0,0,224,0,96,0,96,0,96, + 0,110,0,115,0,97,128,97,128,97,128,115,0,238,0,8, + 7,7,10,0,0,61,103,195,192,192,99,62,9,11,22,10, + 0,0,7,0,3,0,3,0,3,0,59,0,103,0,195,0, + 195,0,195,0,103,0,59,128,8,7,7,10,1,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,30,51,48,48,254, + 48,48,48,48,48,254,9,10,20,10,0,253,59,128,103,0, + 195,0,195,0,195,0,103,0,59,0,3,0,3,0,62,0, + 9,11,22,10,0,0,224,0,96,0,96,0,96,0,110,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,10,10,10, + 1,0,24,24,0,120,24,24,24,24,24,255,6,13,13,10, + 1,253,24,24,0,252,12,12,12,12,12,12,12,12,248,9, + 11,22,10,0,0,224,0,96,0,96,0,96,0,111,128,102, + 0,108,0,120,0,108,0,102,0,239,128,8,11,11,10,1, + 0,120,24,24,24,24,24,24,24,24,24,255,10,7,14,10, + 0,0,237,128,127,128,109,128,109,128,109,128,109,128,237,192, + 9,7,14,10,0,0,238,0,115,0,99,0,99,0,99,0, + 99,0,247,128,8,7,7,10,1,0,60,102,195,195,195,102, + 60,9,10,20,10,0,253,238,0,115,0,97,128,97,128,97, + 128,115,0,110,0,96,0,96,0,248,0,9,10,20,10,0, + 253,59,128,103,0,195,0,195,0,195,0,103,0,59,0,3, + 0,3,0,15,128,9,7,14,10,0,0,247,0,57,128,48, + 0,48,0,48,0,48,0,254,0,7,7,7,10,1,0,126, + 198,224,124,14,198,252,9,9,18,10,0,0,48,0,48,0, + 255,0,48,0,48,0,48,0,48,0,49,128,31,0,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,10,7,14,10,0,0,243,192,97,128,51,0,51,0, + 30,0,30,0,12,0,10,7,14,10,0,0,243,192,97,128, + 109,128,45,0,63,0,51,0,51,0,8,7,7,10,1,0, + 231,102,60,24,60,102,231,10,10,20,10,0,253,243,192,97, + 128,51,0,51,0,30,0,30,0,12,0,24,0,24,0,124, + 0,7,7,7,10,1,0,254,204,24,48,96,198,254,4,13, + 13,10,3,254,48,96,96,96,96,64,192,96,96,96,96,96, + 48,2,13,13,10,4,254,192,192,192,192,192,192,192,192,192, + 192,192,192,192,4,13,13,10,3,254,192,96,96,96,96,32, + 48,96,96,96,96,96,192,8,3,3,10,1,3,112,219,14, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,10,0,1,2,10,10,10,4,253,192,192,0, + 192,192,192,192,192,192,192,7,10,10,10,1,0,24,24,62, + 102,192,192,102,60,24,24,8,10,10,10,1,0,30,51,48, + 48,252,252,48,51,227,254,8,7,7,10,1,1,195,126,102, + 66,102,126,195,10,10,20,10,0,0,243,192,97,128,51,0, + 51,0,30,0,63,0,12,0,63,0,12,0,63,0,2,13, + 13,10,4,254,192,192,192,192,192,192,0,192,192,192,192,192, + 192,10,12,24,10,0,255,31,128,49,128,49,128,120,0,206, + 0,195,128,112,192,28,192,7,128,99,0,99,0,126,0,5, + 2,2,10,3,8,216,216,10,10,20,10,0,0,12,0,63, + 0,97,128,78,128,216,192,216,192,78,128,97,128,63,0,12, + 0,6,7,7,10,2,3,120,12,124,204,124,0,252,9,7, + 14,10,0,0,25,128,51,0,102,0,204,0,102,0,51,0, + 25,128,8,5,5,10,1,2,255,255,3,3,3,7,2,2, + 10,1,4,254,254,10,10,20,10,0,0,12,0,63,0,97, + 128,92,128,214,192,220,192,82,128,97,128,63,0,12,0,5, + 1,1,10,2,9,248,5,5,5,10,2,6,112,216,136,216, + 112,8,9,9,10,1,0,24,24,255,255,24,24,0,255,255, + 5,6,6,10,2,5,112,216,48,96,200,248,5,6,6,10, + 2,5,112,216,48,24,216,112,4,3,3,10,3,8,48,96, + 192,9,10,20,10,0,253,231,0,99,0,99,0,99,0,99, + 0,103,0,123,128,96,0,96,0,96,0,9,12,24,10,0, + 255,63,128,91,0,219,0,219,0,219,0,91,0,59,0,27, + 0,27,0,27,0,27,0,63,128,3,2,2,10,3,4,224, + 224,4,4,4,10,3,253,32,96,48,240,6,6,6,10,2, + 5,48,240,48,48,48,252,6,7,7,10,2,3,120,204,204, + 204,120,0,252,9,7,14,10,0,0,204,0,102,0,51,0, + 25,128,51,0,102,0,204,0,10,11,22,10,0,0,32,0, + 225,0,99,0,98,0,102,0,252,128,25,128,19,128,54,128, + 111,192,65,128,10,11,22,10,0,0,32,0,224,128,97,128, + 99,0,102,0,255,128,10,192,25,128,51,0,102,64,71,192, + 11,11,22,10,0,0,112,0,216,128,49,128,27,0,218,0, + 118,64,12,192,9,192,27,64,55,224,32,192,7,10,10,10, + 1,253,24,24,0,24,24,112,192,198,198,124,10,14,28,10, + 0,0,48,0,24,0,12,0,0,0,60,0,12,0,30,0, + 18,0,51,0,51,0,63,0,97,128,97,128,243,192,10,14, + 28,10,0,0,6,0,12,0,24,0,0,0,60,0,12,0, + 30,0,18,0,51,0,51,0,63,0,97,128,97,128,243,192, + 10,14,28,10,0,0,12,0,30,0,51,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,13,26,10,0,0,59,0,110,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,13,26,10,0,0,54,0,54,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,14,28,10,0,0,28,0,54,0,54,0,28,0, + 60,0,12,0,30,0,18,0,51,0,51,0,63,0,97,128, + 97,128,243,192,10,10,20,10,0,0,127,192,60,192,44,0, + 45,0,111,0,77,0,124,0,76,192,204,192,255,192,9,13, + 26,10,0,253,30,128,115,128,97,128,192,0,192,0,192,0, + 192,0,97,128,115,128,30,0,24,0,12,0,60,0,8,14, + 14,10,1,0,48,24,12,0,255,99,96,100,124,100,96,99, + 99,255,8,14,14,10,1,0,6,12,24,0,255,99,96,100, + 124,100,96,99,99,255,8,14,14,10,1,0,24,60,102,0, + 255,99,96,100,124,100,96,99,99,255,8,13,13,10,1,0, + 54,54,0,255,99,96,100,124,100,96,99,99,255,8,14,14, + 10,1,0,48,24,12,0,255,24,24,24,24,24,24,24,24, + 255,8,14,14,10,1,0,12,24,48,0,255,24,24,24,24, + 24,24,24,24,255,8,14,14,10,1,0,24,60,102,0,255, + 24,24,24,24,24,24,24,24,255,8,13,13,10,1,0,54, + 54,0,255,24,24,24,24,24,24,24,24,255,9,10,20,10, + 0,0,252,0,103,0,99,0,97,128,249,128,97,128,97,128, + 99,0,103,0,252,0,10,13,26,10,0,0,59,0,110,0, + 0,0,247,192,113,128,121,128,105,128,109,128,109,128,101,128, + 103,128,99,128,251,128,9,14,28,10,0,0,48,0,24,0, + 12,0,0,0,62,0,99,0,99,0,193,128,193,128,193,128, + 193,128,99,0,99,0,62,0,9,14,28,10,0,0,6,0, + 12,0,24,0,0,0,62,0,99,0,99,0,193,128,193,128, + 193,128,193,128,99,0,99,0,62,0,9,14,28,10,0,0, + 12,0,30,0,51,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,9,13,26,10, + 0,0,59,0,110,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,9,13,26,10, + 0,0,54,0,54,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,8,7,7,10, + 1,1,227,118,60,24,60,110,199,9,12,24,10,0,255,0, + 128,63,128,99,0,103,0,197,128,205,128,217,128,209,128,115, + 0,99,0,254,0,128,0,10,14,28,10,0,0,48,0,24, + 0,12,0,0,0,243,192,97,128,97,128,97,128,97,128,97, + 128,97,128,97,128,51,0,30,0,10,14,28,10,0,0,3, + 0,6,0,12,0,0,0,243,192,97,128,97,128,97,128,97, + 128,97,128,97,128,97,128,51,0,30,0,10,14,28,10,0, + 0,12,0,30,0,51,0,0,0,243,192,97,128,97,128,97, + 128,97,128,97,128,97,128,97,128,51,0,30,0,10,13,26, + 10,0,0,27,0,27,0,0,0,243,192,97,128,97,128,97, + 128,97,128,97,128,97,128,97,128,51,0,30,0,10,14,28, + 10,0,0,3,0,6,0,12,0,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,9, + 10,20,10,0,0,240,0,96,0,126,0,99,0,97,128,99, + 0,126,0,96,0,96,0,240,0,8,11,11,10,0,0,60, + 102,102,100,108,102,99,99,99,122,236,8,11,11,10,1,0, + 48,24,12,0,60,102,6,126,198,198,123,8,11,11,10,1, + 0,6,12,24,0,60,102,6,126,198,198,123,8,11,11,10, + 1,0,24,60,102,0,60,102,6,126,198,198,123,8,10,10, + 10,1,0,59,110,0,60,102,6,126,198,198,123,8,10,10, + 10,1,0,54,54,0,60,102,6,126,198,198,123,8,12,12, + 10,1,0,28,54,54,28,0,60,102,6,126,198,198,123,10, + 7,14,10,255,0,59,128,108,192,12,192,127,192,204,0,204, + 192,119,128,8,10,10,10,1,253,61,103,195,192,192,227,126, + 24,12,60,8,11,11,10,1,0,48,24,12,0,60,102,195, + 255,192,99,62,8,11,11,10,1,0,6,12,24,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,24,60,102,0,60, + 102,195,255,192,99,62,8,10,10,10,1,0,54,54,0,60, + 102,195,255,192,99,62,8,11,11,10,1,0,96,48,24,0, + 120,24,24,24,24,24,255,8,11,11,10,1,0,6,12,24, + 0,120,24,24,24,24,24,255,8,11,11,10,1,0,24,60, + 102,0,120,24,24,24,24,24,255,8,10,10,10,1,0,108, + 108,0,120,24,24,24,24,24,255,8,12,12,10,1,0,224, + 118,28,60,198,62,103,227,195,195,102,60,9,10,20,10,0, + 0,59,0,110,0,0,0,238,0,115,0,99,0,99,0,99, + 0,99,0,247,128,8,11,11,10,1,0,48,24,12,0,60, + 102,195,195,195,102,60,8,11,11,10,1,0,12,24,48,0, + 60,102,195,195,195,102,60,8,11,11,10,1,0,24,60,102, + 0,60,102,195,195,195,102,60,8,10,10,10,1,0,59,110, + 0,60,102,195,195,195,102,60,8,10,10,10,1,0,108,108, + 0,60,102,195,195,195,102,60,8,8,8,10,1,1,24,24, + 0,255,255,0,24,24,8,9,9,10,1,255,3,63,102,207, + 219,243,102,252,192,9,11,22,10,0,0,48,0,24,0,12, + 0,0,0,231,0,99,0,99,0,99,0,99,0,103,0,59, + 128,9,11,22,10,0,0,12,0,24,0,48,0,0,0,231, + 0,99,0,99,0,99,0,99,0,103,0,59,128,9,11,22, + 10,0,0,24,0,60,0,102,0,0,0,231,0,99,0,99, + 0,99,0,99,0,103,0,59,128,9,10,20,10,0,0,54, + 0,54,0,0,0,231,0,99,0,99,0,99,0,99,0,103, + 0,59,128,10,14,28,10,0,253,6,0,12,0,24,0,0, + 0,243,192,97,128,51,0,51,0,30,0,30,0,12,0,24, + 0,24,0,124,0,9,14,28,10,0,253,224,0,96,0,96, + 0,96,0,110,0,115,0,97,128,97,128,97,128,115,0,110, + 0,96,0,96,0,248,0,10,13,26,10,0,253,54,0,54, + 0,0,0,243,192,97,128,51,0,51,0,30,0,30,0,12, + 0,12,0,24,0,124,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=14 x= 4 y= 8 dx=10 dy= 0 ascent=12 len=24 + Font Bounding box w=16 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB12r[1857] U8G_SECTION(".progmem.u8g_font_courB12r") = { + 0,16,24,253,250,10,2,51,4,246,32,127,253,12,253,11, + 253,0,0,0,10,0,1,2,11,11,10,3,0,192,192,192, + 192,192,192,192,192,0,192,192,6,5,5,10,2,6,204,204, + 204,204,204,9,12,24,10,0,255,54,0,54,0,54,0,54, + 0,255,128,54,0,54,0,255,128,54,0,54,0,54,0,54, + 0,7,13,13,10,1,255,24,24,126,198,192,224,124,14,6, + 198,252,48,48,8,11,11,10,1,0,120,204,204,120,7,60, + 224,30,51,51,30,7,9,9,10,1,0,56,108,96,48,118, + 222,204,204,126,2,5,5,10,4,6,192,192,192,192,192,4, + 13,13,10,3,254,48,96,96,96,192,192,192,192,192,96,96, + 96,48,4,13,13,10,2,254,192,96,96,96,48,48,48,48, + 48,96,96,96,192,8,6,6,10,1,5,24,24,255,60,60, + 102,8,8,8,10,1,1,24,24,24,255,255,24,24,24,3, + 5,5,10,3,253,224,224,96,192,128,7,2,2,10,1,4, + 254,254,3,2,2,10,3,0,224,224,7,14,14,10,1,254, + 6,6,12,12,12,24,24,48,48,48,96,96,192,192,8,11, + 11,10,1,0,60,102,102,195,195,195,195,195,102,102,60,8, + 11,11,10,1,0,24,120,216,24,24,24,24,24,24,24,255, + 7,11,11,10,1,0,120,204,134,6,6,12,24,48,96,198, + 254,7,11,11,10,1,0,120,204,134,12,56,12,6,6,134, + 204,120,8,11,11,10,1,0,6,14,30,54,102,70,198,255, + 6,6,31,7,11,11,10,1,0,254,192,192,192,252,198,6, + 6,6,204,248,8,11,11,10,1,0,30,112,96,192,220,230, + 195,195,195,102,60,7,11,11,10,1,0,254,198,6,12,12, + 24,24,24,48,48,48,7,11,11,10,1,0,56,108,198,68, + 56,108,198,198,198,108,56,8,11,11,10,1,0,60,102,195, + 195,103,59,3,3,6,14,120,3,7,7,10,3,0,224,224, + 0,0,0,224,224,3,10,10,10,3,253,224,224,0,0,0, + 224,224,96,192,128,9,9,18,10,1,0,1,128,7,128,30, + 0,120,0,224,0,120,0,30,0,7,128,1,128,9,5,10, + 10,0,2,255,128,255,128,0,0,255,128,255,128,9,9,18, + 10,0,0,192,0,240,0,60,0,15,0,3,128,15,0,60, + 0,240,0,192,0,7,10,10,10,1,0,124,198,198,6,28, + 48,48,0,48,48,9,12,24,10,0,255,62,0,99,0,193, + 128,221,128,178,128,178,128,178,128,178,128,223,0,192,0,99, + 0,62,0,10,10,20,10,0,0,60,0,12,0,30,0,18, + 0,51,0,51,0,63,0,97,128,97,128,243,192,9,10,20, + 10,0,0,254,0,99,0,97,128,99,0,126,0,99,0,97, + 128,97,128,99,0,254,0,9,10,20,10,0,0,30,128,115, + 128,97,128,192,0,192,0,192,0,192,0,97,128,115,128,30, + 0,9,10,20,10,0,0,252,0,103,0,99,0,97,128,97, + 128,97,128,97,128,99,0,103,0,252,0,8,10,10,10,1, + 0,255,99,96,100,124,100,96,99,99,255,8,10,10,10,1, + 0,255,99,96,100,124,100,96,96,96,248,10,10,20,10,0, + 0,30,128,115,128,97,128,192,0,192,0,199,192,193,128,97, + 128,113,128,31,0,9,10,20,10,0,0,247,128,99,0,99, + 0,99,0,127,0,99,0,99,0,99,0,99,0,247,128,8, + 10,10,10,1,0,255,24,24,24,24,24,24,24,24,255,9, + 10,20,10,0,0,63,128,6,0,6,0,6,0,6,0,6, + 0,198,0,198,0,198,0,124,0,9,10,20,10,0,0,247, + 128,99,0,102,0,108,0,120,0,124,0,102,0,102,0,99, + 0,251,128,9,10,20,10,0,0,252,0,48,0,48,0,48, + 0,48,0,48,0,49,128,49,128,49,128,255,128,10,10,20, + 10,0,0,225,192,97,128,115,128,115,128,127,128,109,128,109, + 128,97,128,97,128,243,192,10,10,20,10,0,0,247,192,113, + 128,121,128,105,128,109,128,109,128,101,128,103,128,99,128,251, + 128,9,10,20,10,0,0,62,0,99,0,99,0,193,128,193, + 128,193,128,193,128,99,0,99,0,62,0,9,10,20,10,0, + 0,254,0,99,0,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,252,0,9,12,24,10,0,254,62,0,99,0,99, + 0,193,128,193,128,193,128,193,128,99,0,99,0,62,0,25, + 128,63,0,9,10,20,10,0,0,252,0,102,0,99,0,99, + 0,102,0,124,0,102,0,99,0,99,0,251,128,8,10,10, + 10,1,0,61,103,195,224,120,30,7,195,230,188,8,10,10, + 10,1,0,255,153,153,153,24,24,24,24,24,126,10,10,20, + 10,0,0,243,192,97,128,97,128,97,128,97,128,97,128,97, + 128,97,128,51,0,30,0,10,10,20,10,0,0,243,192,97, + 128,97,128,51,0,51,0,51,0,30,0,30,0,12,0,12, + 0,10,10,20,10,0,0,243,192,97,128,109,128,109,128,109, + 128,63,0,51,0,51,0,51,0,51,0,10,10,20,10,0, + 0,243,192,97,128,51,0,30,0,12,0,12,0,30,0,51, + 0,97,128,243,192,10,10,20,10,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,7, + 10,10,10,1,0,254,198,204,28,24,48,112,102,198,254,4, + 13,13,10,3,254,240,192,192,192,192,192,192,192,192,192,192, + 192,240,7,14,14,10,1,254,192,192,96,96,96,48,48,56, + 24,24,12,12,6,6,4,13,13,10,2,254,240,48,48,48, + 48,48,48,48,48,48,48,48,240,8,4,4,10,1,7,24, + 60,102,195,10,2,4,10,0,253,255,192,255,192,4,3,3, + 10,2,8,192,96,48,8,7,7,10,1,0,60,102,6,126, + 198,198,123,9,11,22,10,0,0,224,0,96,0,96,0,96, + 0,110,0,115,0,97,128,97,128,97,128,115,0,238,0,8, + 7,7,10,0,0,61,103,195,192,192,99,62,9,11,22,10, + 0,0,7,0,3,0,3,0,3,0,59,0,103,0,195,0, + 195,0,195,0,103,0,59,128,8,7,7,10,1,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,30,51,48,48,254, + 48,48,48,48,48,254,9,10,20,10,0,253,59,128,103,0, + 195,0,195,0,195,0,103,0,59,0,3,0,3,0,62,0, + 9,11,22,10,0,0,224,0,96,0,96,0,96,0,110,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,10,10,10, + 1,0,24,24,0,120,24,24,24,24,24,255,6,13,13,10, + 1,253,24,24,0,252,12,12,12,12,12,12,12,12,248,9, + 11,22,10,0,0,224,0,96,0,96,0,96,0,111,128,102, + 0,108,0,120,0,108,0,102,0,239,128,8,11,11,10,1, + 0,120,24,24,24,24,24,24,24,24,24,255,10,7,14,10, + 0,0,237,128,127,128,109,128,109,128,109,128,109,128,237,192, + 9,7,14,10,0,0,238,0,115,0,99,0,99,0,99,0, + 99,0,247,128,8,7,7,10,1,0,60,102,195,195,195,102, + 60,9,10,20,10,0,253,238,0,115,0,97,128,97,128,97, + 128,115,0,110,0,96,0,96,0,248,0,9,10,20,10,0, + 253,59,128,103,0,195,0,195,0,195,0,103,0,59,0,3, + 0,3,0,15,128,9,7,14,10,0,0,247,0,57,128,48, + 0,48,0,48,0,48,0,254,0,7,7,7,10,1,0,126, + 198,224,124,14,198,252,9,9,18,10,0,0,48,0,48,0, + 255,0,48,0,48,0,48,0,48,0,49,128,31,0,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,10,7,14,10,0,0,243,192,97,128,51,0,51,0, + 30,0,30,0,12,0,10,7,14,10,0,0,243,192,97,128, + 109,128,45,0,63,0,51,0,51,0,8,7,7,10,1,0, + 231,102,60,24,60,102,231,10,10,20,10,0,253,243,192,97, + 128,51,0,51,0,30,0,30,0,12,0,24,0,24,0,124, + 0,7,7,7,10,1,0,254,204,24,48,96,198,254,4,13, + 13,10,3,254,48,96,96,96,96,64,192,96,96,96,96,96, + 48,2,13,13,10,4,254,192,192,192,192,192,192,192,192,192, + 192,192,192,192,4,13,13,10,3,254,192,96,96,96,96,32, + 48,96,96,96,96,96,192,8,3,3,10,1,3,112,219,14, + 255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=12 h=17 x= 4 y= 9 dx=11 dy= 0 ascent=15 len=34 + Font Bounding box w=17 h=26 x=-4 y=-7 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =15 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB14[4784] U8G_SECTION(".progmem.u8g_font_courB14") = { + 0,17,26,252,249,11,2,101,5,155,32,255,252,15,251,12, + 252,0,0,0,11,0,1,3,12,12,11,4,0,224,224,224, + 224,224,224,192,192,192,0,192,192,6,6,6,11,2,6,204, + 204,204,204,136,136,8,14,14,11,1,255,54,54,54,54,255, + 255,108,108,255,255,108,108,108,108,8,15,15,11,1,254,24, + 24,63,127,195,192,240,126,15,3,199,254,252,24,24,8,12, + 12,11,1,0,112,216,136,216,115,14,120,206,27,17,27,14, + 8,10,10,11,1,0,60,126,102,96,48,123,255,206,255,123, + 2,6,6,11,4,6,192,192,192,192,128,128,4,15,15,11, + 4,253,48,48,96,96,192,192,192,192,192,192,192,96,96,48, + 48,4,15,15,11,2,253,192,192,96,96,48,48,48,48,48, + 48,48,96,96,192,192,8,8,8,11,1,4,24,24,255,255, + 24,126,231,66,10,10,20,11,0,0,12,0,12,0,12,0, + 12,0,255,192,255,192,12,0,12,0,12,0,12,0,4,5, + 5,11,2,253,48,48,96,64,128,8,2,2,11,1,4,255, + 255,2,2,2,11,4,0,192,192,9,16,32,11,0,253,1, + 128,1,128,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,192,0,192,0,8, + 12,12,11,1,0,60,126,102,195,195,195,195,195,195,102,126, + 60,8,12,12,11,1,0,24,248,248,24,24,24,24,24,24, + 24,255,255,8,12,12,11,1,0,60,126,199,195,3,7,14, + 28,56,112,255,255,8,12,12,11,1,0,60,126,102,6,14, + 60,62,7,3,199,254,124,8,12,12,11,1,0,14,30,62, + 54,102,102,198,255,255,6,31,31,8,12,12,11,1,0,127, + 127,96,96,126,127,103,3,3,199,254,124,8,12,12,11,1, + 0,15,63,112,96,220,254,231,195,195,231,126,60,8,12,12, + 11,1,0,255,255,195,6,6,6,12,12,12,24,24,24,8, + 12,12,11,1,0,60,126,231,195,102,60,126,231,195,231,126, + 60,8,12,12,11,1,0,60,126,195,195,195,199,127,59,3, + 6,254,248,2,8,8,11,4,0,192,192,0,0,0,0,192, + 192,4,11,11,11,2,253,48,48,0,0,0,0,48,48,96, + 64,128,9,9,18,11,1,1,1,128,7,128,30,0,120,0, + 224,0,120,0,30,0,7,128,1,128,10,6,12,11,0,2, + 255,192,255,192,0,0,0,0,255,192,255,192,9,9,18,11, + 1,1,192,0,240,0,60,0,15,0,3,128,15,0,60,0, + 240,0,192,0,7,11,11,11,2,0,124,254,198,6,14,60, + 48,48,0,48,48,9,13,26,11,1,255,60,0,102,0,195, + 0,207,0,219,0,219,0,219,0,219,0,207,128,192,0,192, + 0,99,0,62,0,12,11,22,11,255,0,62,0,63,0,15, + 0,25,128,25,128,25,128,63,192,63,192,48,192,249,240,249, + 240,10,11,22,11,0,0,254,0,255,0,49,128,49,128,63, + 0,63,128,48,192,48,192,48,192,255,128,255,0,10,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,192, + 0,224,0,112,192,127,192,31,0,10,11,22,11,0,0,254, + 0,255,128,99,128,97,192,96,192,96,192,96,192,97,192,99, + 128,255,128,254,0,10,11,22,11,0,0,255,192,255,192,48, + 192,54,192,62,0,62,0,54,0,48,192,48,192,255,192,255, + 192,10,11,22,11,0,0,255,192,255,192,48,192,54,192,62, + 0,62,0,54,0,48,0,48,0,254,0,254,0,11,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,199, + 224,231,224,112,192,127,192,31,128,10,11,22,11,0,0,243, + 192,243,192,97,128,97,128,127,128,127,128,97,128,97,128,97, + 128,243,192,243,192,8,11,11,11,1,0,255,255,24,24,24, + 24,24,24,24,255,255,10,11,22,11,0,0,31,192,31,192, + 3,0,3,0,3,0,3,0,195,0,195,0,195,0,254,0, + 60,0,11,11,22,11,0,0,247,192,247,192,99,0,102,0, + 108,0,124,0,126,0,103,0,99,128,249,224,249,224,10,11, + 22,11,0,0,252,0,252,0,48,0,48,0,48,0,48,0, + 48,192,48,192,48,192,255,192,255,192,10,11,22,11,0,0, + 225,192,225,192,115,128,115,128,127,128,109,128,109,128,109,128, + 97,128,243,192,243,192,10,11,22,11,0,0,231,192,247,192, + 113,128,121,128,105,128,109,128,101,128,103,128,99,128,251,128, + 249,128,10,11,22,11,0,0,30,0,127,128,115,128,225,192, + 192,192,192,192,192,192,225,192,115,128,127,128,30,0,10,11, + 22,11,0,0,255,0,255,128,97,192,96,192,97,192,127,128, + 127,0,96,0,96,0,252,0,252,0,10,13,26,11,0,254, + 30,0,127,128,115,128,225,192,192,192,192,192,192,192,225,192, + 115,128,127,128,30,64,63,192,51,128,11,11,22,11,0,0, + 255,0,255,128,97,192,96,192,97,192,127,128,127,0,99,128, + 97,192,252,224,252,224,9,11,22,11,1,0,61,128,255,128, + 195,128,193,128,248,0,127,0,15,128,193,128,225,128,255,0, + 222,0,10,11,22,11,0,0,255,192,255,192,204,192,204,192, + 204,192,12,0,12,0,12,0,12,0,127,128,127,128,10,11, + 22,11,0,0,247,192,247,192,97,128,97,128,97,128,97,128, + 97,128,97,128,115,128,63,0,30,0,12,11,22,11,255,0, + 249,240,249,240,96,96,96,96,48,192,48,192,25,128,25,128, + 15,0,15,0,6,0,12,11,22,11,255,0,249,240,249,240, + 96,96,102,96,102,96,111,96,111,96,57,192,57,192,48,192, + 48,192,10,11,22,11,0,0,243,192,243,192,97,128,51,0, + 30,0,12,0,30,0,51,0,97,128,243,192,243,192,10,11, + 22,11,0,0,243,192,243,192,97,128,51,0,63,0,30,0, + 12,0,12,0,12,0,63,0,63,0,8,11,11,11,1,0, + 255,255,199,206,12,24,48,115,227,255,255,4,15,15,11,4, + 253,240,240,192,192,192,192,192,192,192,192,192,192,192,240,240, + 9,16,32,11,1,253,192,0,192,0,96,0,96,0,48,0, + 48,0,24,0,24,0,12,0,12,0,6,0,6,0,3,0, + 3,0,1,128,1,128,4,15,15,11,2,253,240,240,48,48, + 48,48,48,48,48,48,48,48,48,240,240,8,7,7,11,1, + 5,24,60,60,102,102,195,195,11,2,4,11,0,252,255,224, + 255,224,4,3,3,11,3,9,192,96,48,10,9,18,11,0, + 0,63,0,127,128,97,128,1,128,127,128,255,128,193,128,255, + 192,125,192,10,12,24,11,0,0,224,0,224,0,96,0,111, + 0,127,128,113,192,96,192,96,192,96,192,113,192,255,128,239, + 0,10,9,18,11,0,0,61,128,127,128,227,128,193,128,192, + 0,192,0,225,192,127,192,63,0,10,12,24,11,0,0,3, + 128,3,128,1,128,61,128,127,128,227,128,193,128,193,128,193, + 128,227,128,127,192,61,192,10,9,18,11,0,0,30,0,127, + 128,225,192,192,192,255,192,255,192,224,0,127,192,31,192,9, + 12,24,11,1,0,31,128,63,128,48,0,255,0,255,0,48, + 0,48,0,48,0,48,0,48,0,255,0,255,0,10,13,26, + 11,0,252,61,192,127,192,227,128,193,128,193,128,193,128,227, + 128,127,128,61,128,1,128,3,128,63,0,62,0,10,12,24, + 11,0,0,224,0,224,0,96,0,111,0,127,128,113,128,97, + 128,97,128,97,128,97,128,243,192,243,192,8,12,12,11,1, + 0,24,24,0,248,248,24,24,24,24,24,255,255,7,16,16, + 11,1,252,12,12,0,254,254,6,6,6,6,6,6,6,6, + 14,252,248,10,12,24,11,0,0,224,0,224,0,96,0,103, + 128,103,128,110,0,124,0,124,0,110,0,103,0,227,192,227, + 192,8,12,12,11,1,0,248,248,24,24,24,24,24,24,24, + 24,255,255,12,9,18,11,255,0,237,192,255,224,119,96,102, + 96,102,96,102,96,102,96,247,112,247,112,10,9,18,11,0, + 0,239,0,255,128,113,128,97,128,97,128,97,128,97,128,243, + 192,243,192,10,9,18,11,0,0,30,0,127,128,225,192,192, + 192,192,192,192,192,225,192,127,128,30,0,10,13,26,11,0, + 252,239,0,255,128,113,192,96,192,96,192,96,192,113,192,127, + 128,111,0,96,0,96,0,248,0,248,0,10,13,26,11,0, + 252,61,192,127,192,227,128,193,128,193,128,193,128,227,128,127, + 128,61,128,1,128,1,128,7,192,7,192,10,9,18,11,0, + 0,243,128,255,192,60,192,56,0,48,0,48,0,48,0,255, + 0,255,0,8,9,9,11,1,0,127,255,195,240,126,31,195, + 255,254,10,12,24,11,0,0,48,0,48,0,48,0,255,0, + 255,0,48,0,48,0,48,0,48,0,48,192,63,192,31,0, + 10,9,18,11,0,0,231,128,231,128,97,128,97,128,97,128, + 97,128,99,128,127,192,61,192,10,9,18,11,0,0,243,192, + 243,192,97,128,97,128,51,0,51,0,30,0,30,0,12,0, + 11,9,18,11,0,0,241,224,241,224,100,192,110,192,110,192, + 123,192,59,128,49,128,49,128,11,9,18,11,0,0,251,224, + 251,224,49,128,27,0,14,0,27,0,49,128,251,224,251,224, + 10,13,26,11,0,252,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0, + 8,9,9,11,1,0,255,255,198,12,24,48,99,255,255,4, + 15,15,11,3,253,48,96,96,96,96,96,192,96,96,96,96, + 96,96,96,48,2,14,14,11,4,253,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,4,15,15,11,3,253,192,96, + 96,96,96,96,48,96,96,96,96,96,96,96,192,8,3,3, + 11,1,4,115,255,222,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,11,0,1,3,12,12, + 11,4,252,192,192,0,192,192,224,224,224,224,224,224,224,8, + 13,13,11,1,0,24,24,24,63,127,227,192,192,227,127,62, + 24,24,10,11,22,11,0,0,62,0,127,0,99,0,96,0, + 48,0,252,0,252,0,48,0,96,192,255,192,255,128,8,9, + 9,11,1,1,195,255,126,195,195,195,126,255,195,10,11,22, + 11,0,0,243,192,243,192,97,128,51,0,30,0,63,0,12, + 0,63,0,12,0,63,0,63,0,2,16,16,11,4,253,192, + 192,192,192,192,192,192,0,0,192,192,192,192,192,192,192,8, + 14,14,11,1,254,63,115,99,96,248,222,199,227,123,31,6, + 198,206,252,6,2,2,11,2,9,204,204,11,12,24,11,0, + 0,14,0,63,128,113,192,110,192,219,96,216,96,216,96,219, + 96,110,192,113,192,63,128,14,0,6,8,8,11,2,3,112, + 24,120,216,216,108,0,252,9,7,14,11,0,1,25,128,51, + 0,102,0,204,0,102,0,51,0,25,128,9,4,8,11,1, + 4,255,128,255,128,1,128,1,128,8,2,2,11,1,4,255, + 255,11,12,24,11,0,0,14,0,63,128,113,192,126,192,219, + 96,219,96,222,96,223,96,123,224,112,192,63,128,14,0,5, + 2,2,11,2,9,248,248,5,5,5,11,2,6,112,136,136, + 136,112,10,10,20,11,0,0,12,0,12,0,12,0,255,192, + 255,192,12,0,12,0,0,0,255,192,255,192,6,7,7,11, + 2,5,120,204,12,24,48,100,252,6,7,7,11,2,5,120, + 204,12,56,12,204,120,4,3,3,11,4,9,48,96,192,10, + 13,26,11,0,252,231,128,231,128,97,128,97,128,97,128,97, + 128,99,128,127,192,125,192,96,0,96,0,96,0,96,0,8, + 14,14,11,1,254,63,106,202,202,202,106,58,10,10,10,10, + 10,10,59,2,3,3,11,4,3,192,192,192,4,5,5,11, + 3,252,64,96,48,240,224,6,7,7,11,2,5,48,240,48, + 48,48,48,252,6,8,8,11,2,3,120,204,132,132,204,120, + 0,252,9,7,14,11,1,1,204,0,102,0,51,0,25,128, + 51,0,102,0,204,0,11,12,24,11,0,0,48,0,240,32, + 48,96,48,192,49,128,51,64,254,192,13,192,26,192,52,192, + 103,224,64,192,11,12,24,11,0,0,48,0,240,32,48,96, + 48,192,49,128,51,192,255,96,12,96,24,192,49,128,99,32, + 71,224,11,12,24,11,0,0,120,0,204,32,12,96,56,192, + 13,128,207,64,126,192,13,192,26,192,52,192,103,224,64,192, + 7,12,12,11,2,252,24,24,0,24,24,24,120,224,192,198, + 254,124,12,15,30,11,255,0,24,0,12,0,6,0,0,0, + 62,0,63,0,15,0,15,0,25,128,25,128,63,192,63,192, + 48,192,249,240,249,240,12,15,30,11,255,0,3,0,6,0, + 12,0,0,0,62,0,63,0,15,0,15,0,25,128,25,128, + 63,192,63,192,48,192,249,240,249,240,12,15,30,11,255,0, + 6,0,15,0,25,128,0,0,62,0,63,0,15,0,15,0, + 25,128,25,128,63,192,63,192,48,192,249,240,249,240,12,14, + 28,11,255,0,29,128,55,0,0,0,62,0,63,0,15,0, + 15,0,25,128,25,128,63,192,63,192,48,192,249,240,249,240, + 12,14,28,11,255,0,25,128,25,128,0,0,62,0,63,0, + 15,0,15,0,25,128,25,128,63,192,63,192,48,192,249,240, + 249,240,12,15,30,11,255,0,6,0,9,0,9,0,6,0, + 62,0,63,0,15,0,15,0,25,128,25,128,63,192,63,192, + 48,192,249,240,249,240,11,11,22,11,0,0,63,224,63,224, + 30,96,54,0,55,192,39,192,126,0,126,0,102,96,239,224, + 239,224,10,16,32,11,0,251,30,192,127,192,97,192,192,192, + 192,0,192,0,192,0,192,0,96,192,127,192,63,0,8,0, + 12,0,2,0,30,0,28,0,10,15,30,11,0,0,24,0, + 12,0,6,0,0,0,255,192,255,192,48,192,54,192,62,0, + 62,0,54,0,48,192,48,192,255,192,255,192,10,15,30,11, + 0,0,3,0,6,0,12,0,0,0,255,192,255,192,48,192, + 54,192,62,0,62,0,54,0,48,192,48,192,255,192,255,192, + 10,15,30,11,0,0,12,0,30,0,51,0,0,0,255,192, + 255,192,48,192,54,192,62,0,62,0,54,0,48,192,48,192, + 255,192,255,192,10,14,28,11,0,0,51,0,51,0,0,0, + 255,192,255,192,48,192,54,192,62,0,62,0,54,0,48,192, + 48,192,255,192,255,192,8,15,15,11,1,0,96,48,24,0, + 255,255,24,24,24,24,24,24,24,255,255,8,15,15,11,1, + 0,6,12,24,0,255,255,24,24,24,24,24,24,24,255,255, + 8,15,15,11,1,0,24,60,102,0,255,255,24,24,24,24, + 24,24,24,255,255,8,14,14,11,1,0,102,102,0,255,255, + 24,24,24,24,24,24,24,255,255,10,11,22,11,0,0,254, + 0,255,128,97,128,96,192,248,192,248,192,96,192,96,192,97, + 128,255,128,254,0,10,14,28,11,0,0,59,0,110,0,0, + 0,231,192,247,192,113,128,121,128,105,128,109,128,101,128,103, + 128,99,128,251,128,249,128,10,15,30,11,0,0,24,0,12, + 0,6,0,0,0,30,0,127,128,97,128,192,192,192,192,192, + 192,192,192,192,192,97,128,127,128,30,0,10,15,30,11,0, + 0,3,0,6,0,12,0,0,0,30,0,127,128,97,128,192, + 192,192,192,192,192,192,192,192,192,97,128,127,128,30,0,10, + 15,30,11,0,0,12,0,30,0,51,0,0,0,30,0,127, + 128,97,128,192,192,192,192,192,192,192,192,192,192,97,128,127, + 128,30,0,10,14,28,11,0,0,59,0,110,0,0,0,30, + 0,127,128,97,128,192,192,192,192,192,192,192,192,192,192,97, + 128,127,128,30,0,10,14,28,11,0,0,51,0,51,0,0, + 0,30,0,127,128,97,128,192,192,192,192,192,192,192,192,192, + 192,97,128,127,128,30,0,10,10,20,11,0,0,64,128,225, + 192,115,128,55,0,30,0,30,0,59,0,115,128,225,192,64, + 128,12,13,26,11,255,255,0,48,15,96,63,192,49,192,99, + 96,102,96,102,96,108,96,120,96,48,192,63,192,111,0,192, + 0,10,15,30,11,0,0,48,0,24,0,12,0,0,0,251, + 192,251,192,97,128,97,128,97,128,97,128,97,128,97,128,115, + 128,63,0,30,0,10,15,30,11,0,0,3,0,6,0,12, + 0,0,0,251,192,251,192,97,128,97,128,97,128,97,128,97, + 128,97,128,115,128,63,0,30,0,10,15,30,11,0,0,12, + 0,30,0,51,0,0,0,251,192,251,192,97,128,97,128,97, + 128,97,128,97,128,97,128,115,128,63,0,30,0,10,14,28, + 11,0,0,51,0,51,0,0,0,251,192,251,192,97,128,97, + 128,97,128,97,128,97,128,97,128,115,128,63,0,30,0,10, + 15,30,11,0,0,3,0,6,0,12,0,0,0,243,192,243, + 192,97,128,51,0,63,0,30,0,12,0,12,0,12,0,63, + 0,63,0,10,11,22,11,0,0,240,0,224,0,127,0,127, + 128,97,192,96,192,97,192,127,128,127,0,224,0,240,0,9, + 12,24,11,1,0,60,0,126,0,99,0,99,0,103,0,110, + 0,103,0,97,128,97,128,105,128,239,128,231,0,10,13,26, + 11,0,0,24,0,12,0,6,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,13,26, + 11,0,0,3,0,6,0,12,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,13,26, + 11,0,0,12,0,30,0,51,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,12,24, + 11,0,0,59,0,110,0,0,0,63,0,127,128,97,128,1, + 128,127,128,255,128,193,128,255,192,125,192,10,12,24,11,0, + 0,51,0,51,0,0,0,63,0,127,128,97,128,1,128,127, + 128,255,128,193,128,255,192,125,192,10,14,28,11,0,0,12, + 0,18,0,18,0,12,0,0,0,63,0,127,128,97,128,1, + 128,127,128,255,128,193,128,255,192,125,192,10,9,18,11,0, + 0,123,128,255,192,204,192,12,192,127,192,255,192,204,0,255, + 192,123,128,10,14,28,11,0,251,61,128,127,128,227,128,193, + 128,192,0,192,0,225,192,127,192,63,0,8,0,12,0,6, + 0,30,0,28,0,10,13,26,11,0,0,24,0,12,0,6, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,13,26,11,0,0,3,0,6,0,12, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,13,26,11,0,0,12,0,30,0,51, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,12,24,11,0,0,51,0,51,0,0, + 0,30,0,127,128,225,192,192,192,255,192,255,192,224,0,127, + 192,31,192,8,13,13,11,1,0,48,24,12,0,248,248,24, + 24,24,24,24,255,255,8,13,13,11,1,0,12,24,48,0, + 248,248,24,24,24,24,24,255,255,8,13,13,11,1,0,24, + 60,102,0,248,248,24,24,24,24,24,255,255,8,12,12,11, + 1,0,204,204,0,248,248,24,24,24,24,24,255,255,10,13, + 26,11,0,0,225,128,251,128,62,0,119,0,195,128,63,128, + 97,192,192,192,192,192,192,192,225,192,127,128,30,0,10,12, + 24,11,0,0,59,0,110,0,0,0,239,0,255,128,113,128, + 97,128,97,128,97,128,97,128,243,192,243,192,10,13,26,11, + 0,0,24,0,12,0,6,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,13,26,11, + 0,0,3,0,6,0,12,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,13,26,11, + 0,0,12,0,30,0,51,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,12,24,11, + 0,0,59,0,110,0,0,0,30,0,127,128,225,192,192,192, + 192,192,192,192,225,192,127,128,30,0,10,12,24,11,0,0, + 51,0,51,0,0,0,30,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,30,0,10,10,20,11,0,0,12,0, + 12,0,0,0,0,0,255,192,255,192,0,0,0,0,12,0, + 12,0,12,11,22,11,255,255,0,48,15,96,63,192,113,224, + 99,96,102,96,108,96,120,224,63,192,111,0,192,0,10,13, + 26,11,0,0,24,0,12,0,6,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,13, + 26,11,0,0,6,0,12,0,24,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,13, + 26,11,0,0,12,0,30,0,51,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,12, + 24,11,0,0,51,0,51,0,0,0,231,128,231,128,97,128, + 97,128,97,128,97,128,99,128,127,192,61,192,10,17,34,11, + 0,252,3,0,6,0,12,0,0,0,243,192,243,192,97,128, + 97,128,51,0,51,0,30,0,30,0,12,0,24,0,56,0, + 252,0,252,0,10,16,32,11,0,252,224,0,224,0,96,0, + 111,0,127,128,113,192,96,192,96,192,96,192,113,192,127,128, + 111,0,96,0,96,0,248,0,248,0,10,16,32,11,0,252, + 51,0,51,0,0,0,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0 + }; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=12 h=16 x= 4 y= 9 dx=11 dy= 0 ascent=13 len=32 + Font Bounding box w=17 h=26 x=-4 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB14r[2167] U8G_SECTION(".progmem.u8g_font_courB14r") = { + 0,17,26,252,249,11,2,101,5,155,32,127,252,13,252,12, + 252,0,0,0,11,0,1,3,12,12,11,4,0,224,224,224, + 224,224,224,192,192,192,0,192,192,6,6,6,11,2,6,204, + 204,204,204,136,136,8,14,14,11,1,255,54,54,54,54,255, + 255,108,108,255,255,108,108,108,108,8,15,15,11,1,254,24, + 24,63,127,195,192,240,126,15,3,199,254,252,24,24,8,12, + 12,11,1,0,112,216,136,216,115,14,120,206,27,17,27,14, + 8,10,10,11,1,0,60,126,102,96,48,123,255,206,255,123, + 2,6,6,11,4,6,192,192,192,192,128,128,4,15,15,11, + 4,253,48,48,96,96,192,192,192,192,192,192,192,96,96,48, + 48,4,15,15,11,2,253,192,192,96,96,48,48,48,48,48, + 48,48,96,96,192,192,8,8,8,11,1,4,24,24,255,255, + 24,126,231,66,10,10,20,11,0,0,12,0,12,0,12,0, + 12,0,255,192,255,192,12,0,12,0,12,0,12,0,4,5, + 5,11,2,253,48,48,96,64,128,8,2,2,11,1,4,255, + 255,2,2,2,11,4,0,192,192,9,16,32,11,0,253,1, + 128,1,128,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,192,0,192,0,8, + 12,12,11,1,0,60,126,102,195,195,195,195,195,195,102,126, + 60,8,12,12,11,1,0,24,248,248,24,24,24,24,24,24, + 24,255,255,8,12,12,11,1,0,60,126,199,195,3,7,14, + 28,56,112,255,255,8,12,12,11,1,0,60,126,102,6,14, + 60,62,7,3,199,254,124,8,12,12,11,1,0,14,30,62, + 54,102,102,198,255,255,6,31,31,8,12,12,11,1,0,127, + 127,96,96,126,127,103,3,3,199,254,124,8,12,12,11,1, + 0,15,63,112,96,220,254,231,195,195,231,126,60,8,12,12, + 11,1,0,255,255,195,6,6,6,12,12,12,24,24,24,8, + 12,12,11,1,0,60,126,231,195,102,60,126,231,195,231,126, + 60,8,12,12,11,1,0,60,126,195,195,195,199,127,59,3, + 6,254,248,2,8,8,11,4,0,192,192,0,0,0,0,192, + 192,4,11,11,11,2,253,48,48,0,0,0,0,48,48,96, + 64,128,9,9,18,11,1,1,1,128,7,128,30,0,120,0, + 224,0,120,0,30,0,7,128,1,128,10,6,12,11,0,2, + 255,192,255,192,0,0,0,0,255,192,255,192,9,9,18,11, + 1,1,192,0,240,0,60,0,15,0,3,128,15,0,60,0, + 240,0,192,0,7,11,11,11,2,0,124,254,198,6,14,60, + 48,48,0,48,48,9,13,26,11,1,255,60,0,102,0,195, + 0,207,0,219,0,219,0,219,0,219,0,207,128,192,0,192, + 0,99,0,62,0,12,11,22,11,255,0,62,0,63,0,15, + 0,25,128,25,128,25,128,63,192,63,192,48,192,249,240,249, + 240,10,11,22,11,0,0,254,0,255,0,49,128,49,128,63, + 0,63,128,48,192,48,192,48,192,255,128,255,0,10,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,192, + 0,224,0,112,192,127,192,31,0,10,11,22,11,0,0,254, + 0,255,128,99,128,97,192,96,192,96,192,96,192,97,192,99, + 128,255,128,254,0,10,11,22,11,0,0,255,192,255,192,48, + 192,54,192,62,0,62,0,54,0,48,192,48,192,255,192,255, + 192,10,11,22,11,0,0,255,192,255,192,48,192,54,192,62, + 0,62,0,54,0,48,0,48,0,254,0,254,0,11,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,199, + 224,231,224,112,192,127,192,31,128,10,11,22,11,0,0,243, + 192,243,192,97,128,97,128,127,128,127,128,97,128,97,128,97, + 128,243,192,243,192,8,11,11,11,1,0,255,255,24,24,24, + 24,24,24,24,255,255,10,11,22,11,0,0,31,192,31,192, + 3,0,3,0,3,0,3,0,195,0,195,0,195,0,254,0, + 60,0,11,11,22,11,0,0,247,192,247,192,99,0,102,0, + 108,0,124,0,126,0,103,0,99,128,249,224,249,224,10,11, + 22,11,0,0,252,0,252,0,48,0,48,0,48,0,48,0, + 48,192,48,192,48,192,255,192,255,192,10,11,22,11,0,0, + 225,192,225,192,115,128,115,128,127,128,109,128,109,128,109,128, + 97,128,243,192,243,192,10,11,22,11,0,0,231,192,247,192, + 113,128,121,128,105,128,109,128,101,128,103,128,99,128,251,128, + 249,128,10,11,22,11,0,0,30,0,127,128,115,128,225,192, + 192,192,192,192,192,192,225,192,115,128,127,128,30,0,10,11, + 22,11,0,0,255,0,255,128,97,192,96,192,97,192,127,128, + 127,0,96,0,96,0,252,0,252,0,10,13,26,11,0,254, + 30,0,127,128,115,128,225,192,192,192,192,192,192,192,225,192, + 115,128,127,128,30,64,63,192,51,128,11,11,22,11,0,0, + 255,0,255,128,97,192,96,192,97,192,127,128,127,0,99,128, + 97,192,252,224,252,224,9,11,22,11,1,0,61,128,255,128, + 195,128,193,128,248,0,127,0,15,128,193,128,225,128,255,0, + 222,0,10,11,22,11,0,0,255,192,255,192,204,192,204,192, + 204,192,12,0,12,0,12,0,12,0,127,128,127,128,10,11, + 22,11,0,0,247,192,247,192,97,128,97,128,97,128,97,128, + 97,128,97,128,115,128,63,0,30,0,12,11,22,11,255,0, + 249,240,249,240,96,96,96,96,48,192,48,192,25,128,25,128, + 15,0,15,0,6,0,12,11,22,11,255,0,249,240,249,240, + 96,96,102,96,102,96,111,96,111,96,57,192,57,192,48,192, + 48,192,10,11,22,11,0,0,243,192,243,192,97,128,51,0, + 30,0,12,0,30,0,51,0,97,128,243,192,243,192,10,11, + 22,11,0,0,243,192,243,192,97,128,51,0,63,0,30,0, + 12,0,12,0,12,0,63,0,63,0,8,11,11,11,1,0, + 255,255,199,206,12,24,48,115,227,255,255,4,15,15,11,4, + 253,240,240,192,192,192,192,192,192,192,192,192,192,192,240,240, + 9,16,32,11,1,253,192,0,192,0,96,0,96,0,48,0, + 48,0,24,0,24,0,12,0,12,0,6,0,6,0,3,0, + 3,0,1,128,1,128,4,15,15,11,2,253,240,240,48,48, + 48,48,48,48,48,48,48,48,48,240,240,8,7,7,11,1, + 5,24,60,60,102,102,195,195,11,2,4,11,0,252,255,224, + 255,224,4,3,3,11,3,9,192,96,48,10,9,18,11,0, + 0,63,0,127,128,97,128,1,128,127,128,255,128,193,128,255, + 192,125,192,10,12,24,11,0,0,224,0,224,0,96,0,111, + 0,127,128,113,192,96,192,96,192,96,192,113,192,255,128,239, + 0,10,9,18,11,0,0,61,128,127,128,227,128,193,128,192, + 0,192,0,225,192,127,192,63,0,10,12,24,11,0,0,3, + 128,3,128,1,128,61,128,127,128,227,128,193,128,193,128,193, + 128,227,128,127,192,61,192,10,9,18,11,0,0,30,0,127, + 128,225,192,192,192,255,192,255,192,224,0,127,192,31,192,9, + 12,24,11,1,0,31,128,63,128,48,0,255,0,255,0,48, + 0,48,0,48,0,48,0,48,0,255,0,255,0,10,13,26, + 11,0,252,61,192,127,192,227,128,193,128,193,128,193,128,227, + 128,127,128,61,128,1,128,3,128,63,0,62,0,10,12,24, + 11,0,0,224,0,224,0,96,0,111,0,127,128,113,128,97, + 128,97,128,97,128,97,128,243,192,243,192,8,12,12,11,1, + 0,24,24,0,248,248,24,24,24,24,24,255,255,7,16,16, + 11,1,252,12,12,0,254,254,6,6,6,6,6,6,6,6, + 14,252,248,10,12,24,11,0,0,224,0,224,0,96,0,103, + 128,103,128,110,0,124,0,124,0,110,0,103,0,227,192,227, + 192,8,12,12,11,1,0,248,248,24,24,24,24,24,24,24, + 24,255,255,12,9,18,11,255,0,237,192,255,224,119,96,102, + 96,102,96,102,96,102,96,247,112,247,112,10,9,18,11,0, + 0,239,0,255,128,113,128,97,128,97,128,97,128,97,128,243, + 192,243,192,10,9,18,11,0,0,30,0,127,128,225,192,192, + 192,192,192,192,192,225,192,127,128,30,0,10,13,26,11,0, + 252,239,0,255,128,113,192,96,192,96,192,96,192,113,192,127, + 128,111,0,96,0,96,0,248,0,248,0,10,13,26,11,0, + 252,61,192,127,192,227,128,193,128,193,128,193,128,227,128,127, + 128,61,128,1,128,1,128,7,192,7,192,10,9,18,11,0, + 0,243,128,255,192,60,192,56,0,48,0,48,0,48,0,255, + 0,255,0,8,9,9,11,1,0,127,255,195,240,126,31,195, + 255,254,10,12,24,11,0,0,48,0,48,0,48,0,255,0, + 255,0,48,0,48,0,48,0,48,0,48,192,63,192,31,0, + 10,9,18,11,0,0,231,128,231,128,97,128,97,128,97,128, + 97,128,99,128,127,192,61,192,10,9,18,11,0,0,243,192, + 243,192,97,128,97,128,51,0,51,0,30,0,30,0,12,0, + 11,9,18,11,0,0,241,224,241,224,100,192,110,192,110,192, + 123,192,59,128,49,128,49,128,11,9,18,11,0,0,251,224, + 251,224,49,128,27,0,14,0,27,0,49,128,251,224,251,224, + 10,13,26,11,0,252,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0, + 8,9,9,11,1,0,255,255,198,12,24,48,99,255,255,4, + 15,15,11,3,253,48,96,96,96,96,96,192,96,96,96,96, + 96,96,96,48,2,14,14,11,4,253,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,4,15,15,11,3,253,192,96, + 96,96,96,96,48,96,96,96,96,96,96,96,192,8,3,3, + 11,1,4,115,255,222,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=21 x= 6 y=13 dx=15 dy= 0 ascent=21 len=42 + Font Bounding box w=22 h=35 x=-4 y=-9 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =15 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB18[6429] U8G_SECTION(".progmem.u8g_font_courB18") = { + 0,22,35,252,247,15,3,223,8,17,32,255,251,21,251,16, + 251,0,0,0,15,0,1,4,16,16,15,5,0,96,240,240, + 240,240,240,240,96,96,96,96,96,0,96,96,96,7,7,7, + 15,3,9,238,238,238,238,68,68,68,12,19,38,15,1,254, + 12,192,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,51,0,10,20,40,15,2,253,12,0,12,0, + 61,128,127,128,195,128,193,128,192,0,224,0,126,0,31,128, + 1,192,0,192,192,192,225,192,255,128,223,0,12,0,12,0, + 12,0,12,0,11,15,30,15,2,0,60,0,102,0,195,0, + 195,0,102,0,60,0,1,192,15,0,56,0,231,128,12,192, + 24,96,24,96,12,192,7,128,11,14,28,15,2,0,30,0, + 63,0,99,0,96,0,96,0,48,0,56,0,124,192,111,192, + 199,128,195,0,199,128,255,224,124,224,3,7,7,15,5,8, + 224,224,224,224,224,64,64,5,20,20,15,6,252,24,56,48, + 96,96,96,192,192,192,192,192,192,192,192,96,96,96,48,56, + 24,5,20,20,15,3,252,192,224,96,48,48,48,24,24,24, + 24,24,24,24,24,48,48,48,96,224,192,10,11,22,15,2, + 5,12,0,12,0,12,0,204,192,255,192,63,0,12,0,63, + 0,51,0,115,128,97,128,12,12,24,15,1,1,6,0,6, + 0,6,0,6,0,6,0,255,240,255,240,6,0,6,0,6, + 0,6,0,6,0,5,6,6,15,4,253,56,56,112,96,192, + 128,11,2,4,15,2,6,255,224,255,224,3,3,3,15,5, + 0,224,224,224,11,20,40,15,2,253,0,96,0,96,0,192, + 0,192,1,128,1,128,3,0,3,0,6,0,6,0,12,0, + 12,0,24,0,24,0,48,0,48,0,96,0,96,0,192,0, + 192,0,10,16,32,15,2,0,30,0,127,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,127,128,30,0,10,16,32,15,2,0,28,0, + 252,0,252,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,11,16, + 32,15,1,0,31,128,63,192,112,224,96,96,96,96,0,96, + 0,224,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,224,255,224,11,16,32,15,1,0,31,128,63,192,112,224, + 96,96,0,96,0,224,1,192,15,128,15,192,0,224,0,96, + 0,96,192,96,224,224,127,192,63,128,11,16,32,15,1,0, + 3,128,7,128,15,128,13,128,25,128,25,128,49,128,49,128, + 97,128,97,128,255,224,255,224,1,128,1,128,15,224,15,224, + 11,16,32,15,2,0,127,192,127,192,96,0,96,0,96,0, + 111,0,127,192,113,192,0,224,0,96,0,96,0,96,192,224, + 225,192,127,192,63,0,10,16,32,15,2,0,7,192,31,192, + 60,0,112,0,96,0,224,0,223,0,255,128,225,192,192,192, + 192,192,192,192,224,192,113,192,127,128,31,0,10,16,32,15, + 2,0,255,192,255,192,192,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,10,16,32,15,2,0,30,0,127,128,225,192,192,192, + 192,192,192,192,97,128,63,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,16,32,15,3,0,30,0, + 127,128,97,128,192,192,192,192,192,192,192,192,193,192,227,192, + 126,192,60,192,0,192,1,128,3,128,255,0,252,0,3,11, + 11,15,5,0,224,224,224,0,0,0,0,0,224,224,224,5, + 14,14,15,3,253,56,56,56,0,0,0,0,0,56,56,112, + 96,192,128,13,12,24,15,1,1,0,56,0,240,3,192,15, + 0,60,0,240,0,240,0,60,0,15,0,3,192,0,240,0, + 56,12,6,12,15,1,4,255,240,255,240,0,0,0,0,255, + 240,255,240,13,12,24,15,1,1,224,0,120,0,30,0,7, + 128,1,224,0,120,0,120,1,224,7,128,30,0,120,0,224, + 0,9,15,30,15,3,0,126,0,255,0,195,128,193,128,193, + 128,1,128,3,128,15,0,28,0,24,0,24,0,0,0,24, + 0,24,0,24,0,10,18,36,15,2,254,28,0,127,0,99, + 0,193,128,193,128,199,128,207,128,221,128,217,128,217,128,221, + 128,207,192,199,192,192,0,192,0,97,128,127,128,30,0,14, + 15,30,15,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,13,15,30,15,1,0,255,192,255,224,48,112,48, + 48,48,48,48,112,63,224,63,240,48,56,48,24,48,24,48, + 24,48,56,255,240,255,224,12,15,30,15,1,0,15,176,63, + 240,112,112,96,48,224,48,192,0,192,0,192,0,192,0,192, + 0,224,0,96,0,112,48,63,240,15,192,14,15,30,15,0, + 0,255,192,255,240,48,56,48,24,48,28,48,12,48,12,48, + 12,48,12,48,12,48,12,48,24,48,56,255,240,255,224,13, + 15,30,15,1,0,255,240,255,240,48,48,48,48,49,176,49, + 128,63,128,63,128,49,128,49,128,48,24,48,24,48,24,255, + 248,255,248,13,15,30,15,1,0,255,248,255,248,48,24,48, + 24,49,152,49,128,63,128,63,128,49,128,49,128,48,0,48, + 0,48,0,255,0,255,0,13,15,30,15,1,0,15,216,63, + 248,112,56,96,24,224,24,192,0,192,0,192,0,193,248,193, + 248,224,24,96,24,112,56,63,240,15,192,14,15,30,15,0, + 0,252,252,252,252,48,48,48,48,48,48,48,48,63,240,63, + 240,48,48,48,48,48,48,48,48,48,48,252,252,252,252,10, + 15,30,15,2,0,255,192,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,15,30,15,1,0,31,248,31,248,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,192,192,192,192,192, + 192,225,192,127,128,63,0,14,15,30,15,0,0,252,248,252, + 248,48,224,49,192,51,128,55,0,62,0,63,0,59,128,49, + 192,48,224,48,96,48,112,252,60,252,60,12,15,30,15,1, + 0,255,0,255,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,48,24,48,24,48,255,240,255,240,14, + 15,30,15,0,0,240,60,240,60,120,120,120,120,108,216,108, + 216,108,216,103,152,99,24,99,24,96,24,96,24,96,24,248, + 124,248,124,13,15,30,15,1,0,240,248,240,248,120,48,120, + 48,108,48,108,48,102,48,102,48,99,48,99,48,97,176,97, + 176,96,240,248,240,248,112,13,15,30,15,1,0,15,128,63, + 224,112,112,96,48,224,56,192,24,192,24,192,24,192,24,192, + 24,224,56,96,48,112,112,63,224,15,128,13,15,30,15,1, + 0,255,192,255,240,48,56,48,24,48,24,48,24,48,24,48, + 56,63,240,63,192,48,0,48,0,48,0,255,0,255,0,13, + 18,36,15,1,253,15,128,63,224,112,112,96,48,224,56,192, + 24,192,24,192,24,192,24,192,24,224,56,96,48,112,112,63, + 224,15,128,14,24,63,248,57,224,14,15,30,15,0,0,255, + 128,255,224,48,112,48,48,48,48,48,48,48,112,63,224,63, + 128,49,192,48,224,48,96,48,112,252,60,252,60,12,15,30, + 15,1,0,31,176,63,240,112,112,96,48,96,48,112,0,62, + 0,31,192,3,224,0,112,192,48,192,48,224,112,255,224,223, + 192,12,15,30,15,1,0,255,240,255,240,198,48,198,48,198, + 48,198,48,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,63,192,63,192,13,15,30,15,1,0,248,248,248,248,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,48,96,63,224,31,192,14,15,30,15,0,0,248, + 124,248,124,96,24,96,24,48,48,48,48,48,48,24,96,24, + 96,24,96,12,192,12,192,7,128,7,128,7,128,14,15,30, + 15,0,0,248,124,248,124,96,24,99,24,99,24,103,152,103, + 152,111,216,108,216,108,216,60,240,56,112,56,112,56,112,56, + 112,14,15,30,15,0,0,252,252,252,252,112,56,56,112,28, + 224,15,192,7,128,3,0,7,128,12,192,28,224,56,112,112, + 56,252,252,252,252,14,15,30,15,0,0,252,252,252,252,112, + 56,56,112,24,96,12,192,15,192,7,128,3,0,3,0,3, + 0,3,0,3,0,31,224,31,224,11,15,30,15,2,0,255, + 224,255,224,192,224,193,192,195,128,3,0,7,0,14,0,28, + 0,24,0,56,96,112,96,224,96,255,224,255,224,5,20,20, + 15,6,252,248,248,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,248,248,11,20,40,15,2,253,192,0,192, + 0,96,0,96,0,48,0,48,0,24,0,24,0,12,0,12, + 0,6,0,6,0,3,0,3,0,1,128,1,128,0,192,0, + 192,0,96,0,96,5,20,20,15,3,252,248,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,248,248,8, + 8,8,15,3,8,24,24,60,60,102,102,195,195,15,2,4, + 15,0,252,255,254,255,254,5,4,4,15,4,11,192,96,48, + 24,12,11,22,15,1,0,63,0,127,128,97,192,0,192,31, + 192,127,192,224,192,192,192,193,192,255,240,126,240,13,16,32, + 15,1,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 240,60,112,56,56,48,24,48,24,48,24,56,56,60,112,255, + 240,247,192,12,11,22,15,1,0,31,176,127,240,112,240,224, + 112,192,48,192,0,192,0,224,0,112,112,127,240,31,192,13, + 16,32,15,1,0,1,224,1,224,0,96,0,96,0,96,31, + 96,127,224,113,224,224,224,192,96,192,96,192,96,224,224,113, + 224,127,248,31,120,12,11,22,15,1,0,31,128,127,224,112, + 224,224,112,192,48,255,240,255,240,224,0,112,112,127,240,31, + 192,11,16,32,15,2,0,7,224,15,224,28,0,24,0,24, + 0,255,192,255,192,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,192,255,192,13,16,32,15,1,251,31,120,127, + 248,113,224,224,224,192,96,192,96,192,96,224,224,113,224,127, + 224,31,96,0,96,0,96,0,224,63,192,63,128,14,16,32, + 15,0,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 224,60,112,56,48,48,48,48,48,48,48,48,48,48,48,252, + 252,252,252,10,16,32,15,2,0,28,0,28,0,28,0,0, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,8,21,21,15,2,251,14, + 14,14,0,0,255,255,3,3,3,3,3,3,3,3,3,3, + 3,7,254,252,13,16,32,15,1,0,240,0,240,0,48,0, + 48,0,48,0,49,224,49,224,51,128,55,0,62,0,62,0, + 55,0,51,128,49,192,241,248,241,248,10,16,32,15,2,0, + 124,0,124,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,255,192,255,192, + 16,11,22,15,0,0,239,120,255,252,57,204,49,140,49,140, + 49,140,49,140,49,140,49,140,249,239,249,239,14,11,22,15, + 0,0,243,192,247,224,60,112,56,48,48,48,48,48,48,48, + 48,48,48,48,252,252,252,252,12,11,22,15,1,0,31,128, + 127,224,112,224,224,112,192,48,192,48,192,48,224,112,112,224, + 127,224,31,128,13,16,32,15,0,251,247,192,255,240,60,112, + 56,56,48,24,48,24,48,24,56,56,60,112,63,240,55,192, + 48,0,48,0,48,0,254,0,254,0,13,16,32,15,1,251, + 31,120,127,248,113,224,224,224,192,96,192,96,192,96,224,224, + 113,224,127,224,31,96,0,96,0,96,0,96,3,248,3,248, + 12,11,22,15,1,0,121,224,127,240,30,48,28,0,24,0, + 24,0,24,0,24,0,24,0,255,192,255,192,11,11,22,15, + 2,0,62,192,127,192,225,192,224,192,124,0,31,0,7,192, + 192,224,224,224,255,192,223,128,11,15,30,15,1,0,48,0, + 48,0,48,0,48,0,255,192,255,192,48,0,48,0,48,0, + 48,0,48,0,48,0,56,224,31,224,15,128,14,11,22,15, + 0,0,240,240,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,252,15,188,14,11,22,15,0,0,252,252, + 252,252,48,48,48,48,24,96,24,96,12,192,12,192,7,128, + 7,128,3,0,14,11,22,15,0,0,248,124,248,124,99,24, + 99,24,51,48,55,176,55,176,60,240,28,224,24,96,24,96, + 12,11,22,15,1,0,249,240,249,240,48,192,25,128,15,0, + 6,0,15,0,25,128,48,192,249,240,249,240,12,16,32,15, + 1,251,249,240,249,240,96,96,112,224,48,192,57,192,25,128, + 27,128,15,0,15,0,6,0,14,0,12,0,28,0,254,0, + 254,0,10,11,22,15,2,0,255,192,255,192,195,128,199,0, + 14,0,28,0,56,0,112,192,224,192,255,192,255,192,7,20, + 20,15,4,252,14,24,48,48,48,48,48,48,112,224,112,48, + 48,48,48,48,48,48,24,14,2,18,18,15,6,254,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,20,20,15,3,252,224,48,24,24,24,24,24,24,28,14, + 28,24,24,24,24,24,24,24,48,224,12,4,8,15,1,5, + 60,48,126,112,231,224,195,192,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,15,0,1,4, + 16,16,15,4,251,96,96,96,0,96,96,96,96,96,240,240, + 240,240,240,240,96,9,16,32,15,2,0,12,0,12,0,12, + 0,61,128,127,128,227,128,193,128,192,0,192,0,192,0,225, + 128,127,128,63,0,12,0,12,0,12,0,12,15,30,15,1, + 0,15,128,31,192,56,192,48,0,48,0,48,0,48,0,255, + 0,255,0,24,0,24,0,56,0,112,48,255,240,255,224,10, + 11,22,15,2,2,192,192,255,192,127,128,225,192,192,192,192, + 192,192,192,225,192,127,128,255,192,192,192,12,15,30,15,1, + 0,249,240,249,240,112,224,48,192,57,192,25,128,15,0,15, + 0,63,192,6,0,63,192,6,0,6,0,63,192,63,192,2, + 18,18,15,6,254,192,192,192,192,192,192,192,192,0,0,192, + 192,192,192,192,192,192,192,12,18,36,15,1,254,15,224,31, + 224,56,96,48,96,56,0,126,0,207,128,195,224,240,240,124, + 48,31,48,7,240,1,224,0,192,96,192,97,192,127,128,127, + 0,7,3,3,15,3,12,198,198,198,14,14,28,15,0,1, + 7,128,31,224,56,112,103,152,111,216,220,204,216,12,216,12, + 220,204,111,216,103,152,56,112,31,224,7,128,8,11,11,15, + 3,4,60,102,6,126,198,198,207,123,0,255,255,13,9,18, + 15,1,1,14,56,28,112,56,224,113,192,227,128,113,192,56, + 224,28,112,14,56,12,6,12,15,1,4,255,240,255,240,0, + 48,0,48,0,48,0,48,11,2,4,15,2,6,255,224,255, + 224,14,14,28,15,0,1,7,128,31,224,56,112,111,152,111, + 216,204,204,204,204,207,140,205,140,108,216,108,216,56,112,31, + 224,7,128,7,2,2,15,3,13,254,254,8,7,7,15,3, + 9,60,102,195,195,195,102,60,12,14,28,15,1,0,6,0, + 6,0,6,0,6,0,255,240,255,240,6,0,6,0,6,0, + 6,0,0,0,0,0,255,240,255,240,7,9,9,15,4,7, + 124,198,198,12,24,48,96,198,254,7,9,9,15,4,7,124, + 198,198,12,60,6,198,198,124,6,4,4,15,4,12,28,56, + 112,224,14,16,32,15,0,251,240,240,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,56,112,63,252,63,188,48,0, + 48,0,48,0,48,0,48,0,12,18,36,15,1,254,31,240, + 127,240,230,192,230,192,230,192,230,192,230,192,126,192,30,192, + 6,192,6,192,6,192,6,192,6,192,6,192,6,192,62,240, + 62,240,3,3,3,15,5,6,224,224,224,5,6,6,15,4, + 251,48,48,120,24,248,112,8,9,9,15,3,7,24,248,24, + 24,24,24,24,24,255,8,11,11,15,3,4,60,126,195,195, + 195,195,126,60,0,255,255,13,9,18,15,1,1,227,128,113, + 192,56,224,28,112,14,56,28,112,56,224,113,192,227,128,16, + 16,32,15,255,0,24,0,248,1,24,3,24,6,24,12,24, + 24,24,48,24,100,255,204,1,156,3,44,6,76,12,140,24, + 254,48,12,32,30,16,16,32,15,255,0,24,0,248,1,24, + 3,24,6,24,12,24,24,24,48,24,126,255,243,1,163,3, + 6,6,12,12,24,24,48,48,99,32,127,15,16,32,15,0, + 0,124,0,198,2,198,6,12,12,60,24,6,48,198,96,198, + 200,125,152,3,56,6,88,12,152,25,24,49,252,96,24,64, + 60,9,15,30,15,2,252,12,0,12,0,12,0,0,0,12, + 0,12,0,28,0,120,0,224,0,192,0,193,128,193,128,225, + 128,127,128,63,0,14,20,40,15,0,0,56,0,28,0,14, + 0,7,0,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,14,20,40,15,0,0,0,224,1,192,3,128,7, + 0,0,0,63,0,63,0,7,128,7,128,12,192,12,192,28, + 224,24,96,24,96,63,240,63,240,112,56,96,24,252,252,252, + 252,14,21,42,15,0,0,6,0,15,0,31,128,57,192,112, + 224,0,0,63,0,63,0,7,128,7,128,12,192,12,192,28, + 224,24,96,24,96,63,240,63,240,112,56,96,24,252,252,252, + 252,14,19,38,15,0,0,14,96,31,192,51,128,0,0,63, + 0,63,0,7,128,7,128,12,192,12,192,28,224,24,96,24, + 96,63,240,63,240,112,56,96,24,252,252,252,252,14,19,38, + 15,0,0,24,192,24,192,24,192,0,0,63,0,63,0,7, + 128,7,128,12,192,12,192,28,224,24,96,24,96,63,240,63, + 240,112,56,96,24,252,252,252,252,14,20,40,15,0,0,7, + 0,13,128,8,128,13,128,7,0,63,0,63,0,7,128,7, + 128,12,192,12,192,28,224,24,96,24,96,63,240,63,240,112, + 56,96,24,252,252,252,252,15,15,30,15,0,0,15,254,15, + 254,3,134,7,134,7,128,13,152,9,248,25,248,31,152,63, + 128,49,128,97,134,97,134,247,254,247,254,12,20,40,15,1, + 251,15,176,63,240,112,112,96,48,224,48,192,0,192,0,192, + 0,192,0,192,0,224,0,96,16,112,48,63,224,15,192,6, + 0,15,0,3,0,31,0,14,0,13,20,40,15,1,0,56, + 0,28,0,14,0,7,0,0,0,255,240,255,240,48,48,48, + 48,49,176,49,128,63,128,63,128,49,128,49,128,48,24,48, + 24,48,24,255,248,255,248,13,20,40,15,1,0,0,224,1, + 192,3,128,7,0,0,0,255,240,255,240,48,48,48,48,49, + 176,49,128,63,128,63,128,49,128,49,128,48,24,48,24,48, + 24,255,248,255,248,13,21,42,15,1,0,3,0,7,128,15, + 192,28,224,56,112,0,0,255,240,255,240,48,48,48,48,49, + 176,49,128,63,128,63,128,49,128,49,128,48,24,48,24,48, + 24,255,248,255,248,13,19,38,15,1,0,24,192,24,192,24, + 192,0,0,255,240,255,240,48,48,48,48,49,176,49,128,63, + 128,63,128,49,128,49,128,48,24,48,24,48,24,255,248,255, + 248,10,20,40,15,2,0,112,0,56,0,28,0,14,0,0, + 0,255,192,255,192,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,192,255,192,10, + 20,40,15,2,0,3,128,7,0,14,0,28,0,0,0,255, + 192,255,192,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,255,192,255,192,10,21,42, + 15,2,0,12,0,30,0,63,0,115,128,225,192,0,0,255, + 192,255,192,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,255,192,255,192,10,19,38, + 15,2,0,51,0,51,0,51,0,0,0,255,192,255,192,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,14,15,30,15,0,0,255, + 192,255,240,48,56,48,24,48,28,48,12,254,12,254,12,48, + 12,48,12,48,12,48,24,48,56,255,240,255,224,13,19,38, + 15,1,0,14,96,31,192,51,128,0,0,240,248,240,248,120, + 48,120,48,108,48,108,48,102,48,102,48,99,48,99,48,97, + 176,97,176,96,240,248,240,248,112,13,20,40,15,1,0,28, + 0,14,0,7,0,3,128,0,0,15,128,63,224,112,112,96, + 48,224,56,192,24,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,13,20,40,15,1,0,0,224,1, + 192,3,128,7,0,0,0,15,128,63,224,112,112,96,48,224, + 56,192,24,192,24,192,24,192,24,192,24,224,56,96,48,112, + 112,63,224,15,128,13,21,42,15,1,0,3,0,7,128,15, + 192,28,224,56,112,0,0,15,128,63,224,112,112,96,48,224, + 56,192,24,192,24,192,24,192,24,192,24,224,56,96,48,112, + 112,63,224,15,128,13,19,38,15,1,0,14,96,31,192,51, + 128,0,0,15,128,63,224,112,112,96,48,224,56,192,24,192, + 24,192,24,192,24,192,24,224,56,96,48,112,112,63,224,15, + 128,13,19,38,15,1,0,24,192,24,192,24,192,0,0,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,192,24,224,56,96,48,112,112,63,224,15,128,12,12,24, + 15,1,1,64,32,224,112,112,224,57,192,31,128,15,0,15, + 0,31,128,57,192,112,224,224,112,64,32,13,18,36,15,1, + 255,0,24,0,48,15,224,63,224,112,112,96,240,225,184,193, + 24,195,24,198,24,196,24,204,24,232,56,120,48,112,112,63, + 224,111,128,192,0,13,20,40,15,1,0,56,0,28,0,14, + 0,7,0,0,0,248,248,248,248,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,48,96,63, + 224,31,192,13,20,40,15,1,0,0,224,1,192,3,128,7, + 0,0,0,248,248,248,248,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,48,96,63,224,31, + 192,13,21,42,15,1,0,3,0,7,128,15,192,28,224,56, + 112,0,0,248,248,248,248,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,48,96,63,224,31, + 192,13,19,38,15,1,0,24,192,24,192,24,192,0,0,248, + 248,248,248,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,48,96,63,224,31,192,14,20,40, + 15,0,0,0,224,1,192,3,128,7,0,0,0,252,252,252, + 252,112,56,56,112,24,96,12,192,15,192,7,128,3,0,3, + 0,3,0,3,0,3,0,31,224,31,224,13,15,30,15,1, + 0,252,0,252,0,48,0,63,192,63,240,48,56,48,24,48, + 24,48,24,48,56,63,240,63,192,48,0,252,0,252,0,12, + 16,32,15,1,0,15,0,31,128,57,192,48,192,48,192,49, + 192,55,128,55,192,48,224,48,112,48,48,48,48,48,48,51, + 112,251,224,249,192,12,16,32,15,1,0,112,0,56,0,28, + 0,14,0,0,0,63,0,127,128,97,192,0,192,31,192,127, + 192,224,192,192,192,193,192,255,240,126,240,12,16,32,15,1, + 0,1,192,3,128,7,0,14,0,0,0,63,0,127,128,97, + 192,0,192,31,192,127,192,224,192,192,192,193,192,255,240,126, + 240,12,16,32,15,1,0,14,0,31,0,59,128,113,192,0, + 0,63,0,127,128,97,192,0,192,31,192,127,192,224,192,192, + 192,193,192,255,240,126,240,12,15,30,15,1,0,28,192,63, + 128,103,0,0,0,63,0,127,128,97,192,0,192,31,192,127, + 192,224,192,192,192,193,192,255,240,126,240,12,15,30,15,1, + 0,49,128,49,128,49,128,0,0,63,0,127,128,97,192,0, + 192,31,192,127,192,224,192,192,192,193,192,255,240,126,240,12, + 16,32,15,1,0,14,0,27,0,17,0,27,0,14,0,63, + 0,127,128,97,192,0,192,31,192,127,192,224,192,192,192,193, + 192,255,240,126,240,14,11,22,15,0,0,60,240,127,248,103, + 156,3,12,31,12,127,252,227,252,195,0,199,140,255,252,124, + 240,11,16,32,15,1,251,31,96,127,224,112,224,224,96,192, + 96,192,0,192,0,224,0,112,96,127,224,31,192,6,0,15, + 0,3,0,31,0,14,0,12,16,32,15,1,0,56,0,28, + 0,14,0,7,0,0,0,31,128,127,224,112,224,224,112,192, + 48,255,240,255,240,224,0,112,112,127,240,31,192,12,16,32, + 15,1,0,1,192,3,128,7,0,14,0,0,0,31,128,127, + 224,112,224,224,112,192,48,255,240,255,240,224,0,112,112,127, + 240,31,192,12,16,32,15,1,0,7,0,15,128,29,192,56, + 224,0,0,31,128,127,224,112,224,224,112,192,48,255,240,255, + 240,224,0,112,112,127,240,31,192,12,15,30,15,1,0,49, + 128,49,128,49,128,0,0,31,128,127,224,112,224,224,112,192, + 48,255,240,255,240,224,0,112,112,127,240,31,192,10,16,32, + 15,2,0,224,0,112,0,56,0,28,0,0,0,124,0,124, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,10,16,32,15,2,0,3,128,7,0,14,0,28, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,10,16,32,15,2,0,28, + 0,62,0,119,0,227,128,0,0,124,0,124,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,192,255,192,10, + 15,30,15,2,0,99,0,99,0,99,0,0,0,124,0,124, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,17,34,15,0,0,240,0,252,112,15,240,31, + 128,125,192,112,224,15,240,63,240,56,120,112,56,96,24,96, + 24,96,24,112,56,56,112,63,240,15,192,14,15,30,15,0, + 0,14,96,31,192,51,128,0,0,243,192,247,224,60,112,56, + 48,48,48,48,48,48,48,48,48,48,48,252,252,252,252,12, + 16,32,15,1,0,56,0,28,0,14,0,7,0,0,0,31, + 128,127,224,112,224,224,112,192,48,192,48,192,48,224,112,112, + 224,127,224,31,128,12,16,32,15,1,0,1,192,3,128,7, + 0,14,0,0,0,31,128,127,224,112,224,224,112,192,48,192, + 48,192,48,224,112,112,224,127,224,31,128,12,16,32,15,1, + 0,14,0,31,0,59,128,113,192,0,0,31,128,127,224,112, + 224,224,112,192,48,192,48,192,48,224,112,112,224,127,224,31, + 128,12,15,30,15,1,0,28,192,63,128,103,0,0,0,31, + 128,127,224,112,224,224,112,192,48,192,48,192,48,224,112,112, + 224,127,224,31,128,12,15,30,15,1,0,49,128,49,128,49, + 128,0,0,31,128,127,224,112,224,224,112,192,48,192,48,192, + 48,224,112,112,224,127,224,31,128,13,12,24,15,0,1,7, + 0,7,0,7,0,0,0,0,0,255,248,255,248,0,0,0, + 0,7,0,7,0,7,0,14,14,28,15,0,254,0,12,15, + 216,63,240,56,112,112,216,97,152,99,24,102,24,108,56,56, + 112,63,240,63,192,96,0,192,0,14,16,32,15,0,0,56, + 0,28,0,14,0,7,0,0,0,240,240,240,240,48,48,48, + 48,48,48,48,48,48,48,48,48,56,112,31,252,15,188,14, + 16,32,15,0,0,1,192,3,128,7,0,14,0,0,0,240, + 240,240,240,48,48,48,48,48,48,48,48,48,48,48,48,56, + 112,31,252,15,188,14,16,32,15,0,0,7,0,15,128,29, + 192,56,224,0,0,240,240,240,240,48,48,48,48,48,48,48, + 48,48,48,48,48,56,112,31,252,15,188,14,15,30,15,0, + 0,24,192,24,192,24,192,0,0,240,240,240,240,48,48,48, + 48,48,48,48,48,48,48,48,48,56,112,31,252,15,188,12, + 21,42,15,1,251,0,224,1,192,3,128,7,0,0,0,249, + 240,249,240,96,96,112,224,48,192,57,192,25,128,27,128,15, + 0,15,0,6,0,14,0,12,0,28,0,254,0,254,0,13, + 21,42,15,1,251,240,0,240,0,48,0,48,0,48,0,55, + 192,63,240,60,112,56,56,48,24,48,24,48,24,56,56,60, + 112,63,240,55,192,48,0,48,0,48,0,254,0,254,0,12, + 20,40,15,1,251,49,128,49,128,49,128,0,0,249,240,249, + 240,96,96,112,224,48,192,57,192,25,128,27,128,15,0,15, + 0,6,0,14,0,12,0,28,0,254,0,254,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=21 x= 6 y=11 dx=15 dy= 0 ascent=17 len=40 + Font Bounding box w=22 h=35 x=-4 y=-9 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =15 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB18r[3001] U8G_SECTION(".progmem.u8g_font_courB18r") = { + 0,22,35,252,247,15,3,223,8,17,32,127,251,17,251,16, + 251,0,0,0,15,0,1,4,16,16,15,5,0,96,240,240, + 240,240,240,240,96,96,96,96,96,0,96,96,96,7,7,7, + 15,3,9,238,238,238,238,68,68,68,12,19,38,15,1,254, + 12,192,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,51,0,10,20,40,15,2,253,12,0,12,0, + 61,128,127,128,195,128,193,128,192,0,224,0,126,0,31,128, + 1,192,0,192,192,192,225,192,255,128,223,0,12,0,12,0, + 12,0,12,0,11,15,30,15,2,0,60,0,102,0,195,0, + 195,0,102,0,60,0,1,192,15,0,56,0,231,128,12,192, + 24,96,24,96,12,192,7,128,11,14,28,15,2,0,30,0, + 63,0,99,0,96,0,96,0,48,0,56,0,124,192,111,192, + 199,128,195,0,199,128,255,224,124,224,3,7,7,15,5,8, + 224,224,224,224,224,64,64,5,20,20,15,6,252,24,56,48, + 96,96,96,192,192,192,192,192,192,192,192,96,96,96,48,56, + 24,5,20,20,15,3,252,192,224,96,48,48,48,24,24,24, + 24,24,24,24,24,48,48,48,96,224,192,10,11,22,15,2, + 5,12,0,12,0,12,0,204,192,255,192,63,0,12,0,63, + 0,51,0,115,128,97,128,12,12,24,15,1,1,6,0,6, + 0,6,0,6,0,6,0,255,240,255,240,6,0,6,0,6, + 0,6,0,6,0,5,6,6,15,4,253,56,56,112,96,192, + 128,11,2,4,15,2,6,255,224,255,224,3,3,3,15,5, + 0,224,224,224,11,20,40,15,2,253,0,96,0,96,0,192, + 0,192,1,128,1,128,3,0,3,0,6,0,6,0,12,0, + 12,0,24,0,24,0,48,0,48,0,96,0,96,0,192,0, + 192,0,10,16,32,15,2,0,30,0,127,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,127,128,30,0,10,16,32,15,2,0,28,0, + 252,0,252,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,11,16, + 32,15,1,0,31,128,63,192,112,224,96,96,96,96,0,96, + 0,224,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,224,255,224,11,16,32,15,1,0,31,128,63,192,112,224, + 96,96,0,96,0,224,1,192,15,128,15,192,0,224,0,96, + 0,96,192,96,224,224,127,192,63,128,11,16,32,15,1,0, + 3,128,7,128,15,128,13,128,25,128,25,128,49,128,49,128, + 97,128,97,128,255,224,255,224,1,128,1,128,15,224,15,224, + 11,16,32,15,2,0,127,192,127,192,96,0,96,0,96,0, + 111,0,127,192,113,192,0,224,0,96,0,96,0,96,192,224, + 225,192,127,192,63,0,10,16,32,15,2,0,7,192,31,192, + 60,0,112,0,96,0,224,0,223,0,255,128,225,192,192,192, + 192,192,192,192,224,192,113,192,127,128,31,0,10,16,32,15, + 2,0,255,192,255,192,192,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,10,16,32,15,2,0,30,0,127,128,225,192,192,192, + 192,192,192,192,97,128,63,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,16,32,15,3,0,30,0, + 127,128,97,128,192,192,192,192,192,192,192,192,193,192,227,192, + 126,192,60,192,0,192,1,128,3,128,255,0,252,0,3,11, + 11,15,5,0,224,224,224,0,0,0,0,0,224,224,224,5, + 14,14,15,3,253,56,56,56,0,0,0,0,0,56,56,112, + 96,192,128,13,12,24,15,1,1,0,56,0,240,3,192,15, + 0,60,0,240,0,240,0,60,0,15,0,3,192,0,240,0, + 56,12,6,12,15,1,4,255,240,255,240,0,0,0,0,255, + 240,255,240,13,12,24,15,1,1,224,0,120,0,30,0,7, + 128,1,224,0,120,0,120,1,224,7,128,30,0,120,0,224, + 0,9,15,30,15,3,0,126,0,255,0,195,128,193,128,193, + 128,1,128,3,128,15,0,28,0,24,0,24,0,0,0,24, + 0,24,0,24,0,10,18,36,15,2,254,28,0,127,0,99, + 0,193,128,193,128,199,128,207,128,221,128,217,128,217,128,221, + 128,207,192,199,192,192,0,192,0,97,128,127,128,30,0,14, + 15,30,15,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,13,15,30,15,1,0,255,192,255,224,48,112,48, + 48,48,48,48,112,63,224,63,240,48,56,48,24,48,24,48, + 24,48,56,255,240,255,224,12,15,30,15,1,0,15,176,63, + 240,112,112,96,48,224,48,192,0,192,0,192,0,192,0,192, + 0,224,0,96,0,112,48,63,240,15,192,14,15,30,15,0, + 0,255,192,255,240,48,56,48,24,48,28,48,12,48,12,48, + 12,48,12,48,12,48,12,48,24,48,56,255,240,255,224,13, + 15,30,15,1,0,255,240,255,240,48,48,48,48,49,176,49, + 128,63,128,63,128,49,128,49,128,48,24,48,24,48,24,255, + 248,255,248,13,15,30,15,1,0,255,248,255,248,48,24,48, + 24,49,152,49,128,63,128,63,128,49,128,49,128,48,0,48, + 0,48,0,255,0,255,0,13,15,30,15,1,0,15,216,63, + 248,112,56,96,24,224,24,192,0,192,0,192,0,193,248,193, + 248,224,24,96,24,112,56,63,240,15,192,14,15,30,15,0, + 0,252,252,252,252,48,48,48,48,48,48,48,48,63,240,63, + 240,48,48,48,48,48,48,48,48,48,48,252,252,252,252,10, + 15,30,15,2,0,255,192,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,15,30,15,1,0,31,248,31,248,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,192,192,192,192,192, + 192,225,192,127,128,63,0,14,15,30,15,0,0,252,248,252, + 248,48,224,49,192,51,128,55,0,62,0,63,0,59,128,49, + 192,48,224,48,96,48,112,252,60,252,60,12,15,30,15,1, + 0,255,0,255,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,48,24,48,24,48,255,240,255,240,14, + 15,30,15,0,0,240,60,240,60,120,120,120,120,108,216,108, + 216,108,216,103,152,99,24,99,24,96,24,96,24,96,24,248, + 124,248,124,13,15,30,15,1,0,240,248,240,248,120,48,120, + 48,108,48,108,48,102,48,102,48,99,48,99,48,97,176,97, + 176,96,240,248,240,248,112,13,15,30,15,1,0,15,128,63, + 224,112,112,96,48,224,56,192,24,192,24,192,24,192,24,192, + 24,224,56,96,48,112,112,63,224,15,128,13,15,30,15,1, + 0,255,192,255,240,48,56,48,24,48,24,48,24,48,24,48, + 56,63,240,63,192,48,0,48,0,48,0,255,0,255,0,13, + 18,36,15,1,253,15,128,63,224,112,112,96,48,224,56,192, + 24,192,24,192,24,192,24,192,24,224,56,96,48,112,112,63, + 224,15,128,14,24,63,248,57,224,14,15,30,15,0,0,255, + 128,255,224,48,112,48,48,48,48,48,48,48,112,63,224,63, + 128,49,192,48,224,48,96,48,112,252,60,252,60,12,15,30, + 15,1,0,31,176,63,240,112,112,96,48,96,48,112,0,62, + 0,31,192,3,224,0,112,192,48,192,48,224,112,255,224,223, + 192,12,15,30,15,1,0,255,240,255,240,198,48,198,48,198, + 48,198,48,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,63,192,63,192,13,15,30,15,1,0,248,248,248,248,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,48,96,63,224,31,192,14,15,30,15,0,0,248, + 124,248,124,96,24,96,24,48,48,48,48,48,48,24,96,24, + 96,24,96,12,192,12,192,7,128,7,128,7,128,14,15,30, + 15,0,0,248,124,248,124,96,24,99,24,99,24,103,152,103, + 152,111,216,108,216,108,216,60,240,56,112,56,112,56,112,56, + 112,14,15,30,15,0,0,252,252,252,252,112,56,56,112,28, + 224,15,192,7,128,3,0,7,128,12,192,28,224,56,112,112, + 56,252,252,252,252,14,15,30,15,0,0,252,252,252,252,112, + 56,56,112,24,96,12,192,15,192,7,128,3,0,3,0,3, + 0,3,0,3,0,31,224,31,224,11,15,30,15,2,0,255, + 224,255,224,192,224,193,192,195,128,3,0,7,0,14,0,28, + 0,24,0,56,96,112,96,224,96,255,224,255,224,5,20,20, + 15,6,252,248,248,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,248,248,11,20,40,15,2,253,192,0,192, + 0,96,0,96,0,48,0,48,0,24,0,24,0,12,0,12, + 0,6,0,6,0,3,0,3,0,1,128,1,128,0,192,0, + 192,0,96,0,96,5,20,20,15,3,252,248,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,248,248,8, + 8,8,15,3,8,24,24,60,60,102,102,195,195,15,2,4, + 15,0,252,255,254,255,254,5,4,4,15,4,11,192,96,48, + 24,12,11,22,15,1,0,63,0,127,128,97,192,0,192,31, + 192,127,192,224,192,192,192,193,192,255,240,126,240,13,16,32, + 15,1,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 240,60,112,56,56,48,24,48,24,48,24,56,56,60,112,255, + 240,247,192,12,11,22,15,1,0,31,176,127,240,112,240,224, + 112,192,48,192,0,192,0,224,0,112,112,127,240,31,192,13, + 16,32,15,1,0,1,224,1,224,0,96,0,96,0,96,31, + 96,127,224,113,224,224,224,192,96,192,96,192,96,224,224,113, + 224,127,248,31,120,12,11,22,15,1,0,31,128,127,224,112, + 224,224,112,192,48,255,240,255,240,224,0,112,112,127,240,31, + 192,11,16,32,15,2,0,7,224,15,224,28,0,24,0,24, + 0,255,192,255,192,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,192,255,192,13,16,32,15,1,251,31,120,127, + 248,113,224,224,224,192,96,192,96,192,96,224,224,113,224,127, + 224,31,96,0,96,0,96,0,224,63,192,63,128,14,16,32, + 15,0,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 224,60,112,56,48,48,48,48,48,48,48,48,48,48,48,252, + 252,252,252,10,16,32,15,2,0,28,0,28,0,28,0,0, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,8,21,21,15,2,251,14, + 14,14,0,0,255,255,3,3,3,3,3,3,3,3,3,3, + 3,7,254,252,13,16,32,15,1,0,240,0,240,0,48,0, + 48,0,48,0,49,224,49,224,51,128,55,0,62,0,62,0, + 55,0,51,128,49,192,241,248,241,248,10,16,32,15,2,0, + 124,0,124,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,255,192,255,192, + 16,11,22,15,0,0,239,120,255,252,57,204,49,140,49,140, + 49,140,49,140,49,140,49,140,249,239,249,239,14,11,22,15, + 0,0,243,192,247,224,60,112,56,48,48,48,48,48,48,48, + 48,48,48,48,252,252,252,252,12,11,22,15,1,0,31,128, + 127,224,112,224,224,112,192,48,192,48,192,48,224,112,112,224, + 127,224,31,128,13,16,32,15,0,251,247,192,255,240,60,112, + 56,56,48,24,48,24,48,24,56,56,60,112,63,240,55,192, + 48,0,48,0,48,0,254,0,254,0,13,16,32,15,1,251, + 31,120,127,248,113,224,224,224,192,96,192,96,192,96,224,224, + 113,224,127,224,31,96,0,96,0,96,0,96,3,248,3,248, + 12,11,22,15,1,0,121,224,127,240,30,48,28,0,24,0, + 24,0,24,0,24,0,24,0,255,192,255,192,11,11,22,15, + 2,0,62,192,127,192,225,192,224,192,124,0,31,0,7,192, + 192,224,224,224,255,192,223,128,11,15,30,15,1,0,48,0, + 48,0,48,0,48,0,255,192,255,192,48,0,48,0,48,0, + 48,0,48,0,48,0,56,224,31,224,15,128,14,11,22,15, + 0,0,240,240,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,252,15,188,14,11,22,15,0,0,252,252, + 252,252,48,48,48,48,24,96,24,96,12,192,12,192,7,128, + 7,128,3,0,14,11,22,15,0,0,248,124,248,124,99,24, + 99,24,51,48,55,176,55,176,60,240,28,224,24,96,24,96, + 12,11,22,15,1,0,249,240,249,240,48,192,25,128,15,0, + 6,0,15,0,25,128,48,192,249,240,249,240,12,16,32,15, + 1,251,249,240,249,240,96,96,112,224,48,192,57,192,25,128, + 27,128,15,0,15,0,6,0,14,0,12,0,28,0,254,0, + 254,0,10,11,22,15,2,0,255,192,255,192,195,128,199,0, + 14,0,28,0,56,0,112,192,224,192,255,192,255,192,7,20, + 20,15,4,252,14,24,48,48,48,48,48,48,112,224,112,48, + 48,48,48,48,48,48,24,14,2,18,18,15,6,254,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,20,20,15,3,252,224,48,24,24,24,24,24,24,28,14, + 28,24,24,24,24,24,24,24,48,224,12,4,8,15,1,5, + 60,48,126,112,231,224,195,192,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 20, '1' Height: 21 + Calculated Max Values w=21 h=29 x= 8 y=17 dx=20 dy= 0 ascent=26 len=87 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24[10502] U8G_SECTION(".progmem.u8g_font_courB24") = { + 0,30,44,249,245,20,5,57,12,115,32,255,249,26,249,21, + 249,0,0,0,20,0,1,5,21,21,20,7,0,112,248,248, + 248,248,248,112,112,112,112,112,112,112,112,112,32,0,0,112, + 248,112,9,10,20,20,5,10,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,65,0,15,26,52,20, + 2,253,14,56,14,56,14,56,14,56,14,56,14,56,14,56, + 14,56,127,254,127,254,127,254,28,112,28,112,28,112,28,112, + 255,252,255,252,255,252,56,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,224,14,27,54,20,3,252,7,0,7,0, + 7,0,15,216,63,248,127,248,240,120,224,56,224,56,240,0, + 254,0,127,192,63,240,7,248,0,252,0,60,224,28,224,28, + 240,60,255,248,255,240,231,128,7,0,7,0,7,0,7,0, + 7,0,15,21,42,20,2,0,31,0,63,128,49,128,96,192, + 96,192,96,192,113,194,63,142,31,62,0,248,3,224,31,0, + 252,248,241,252,195,142,3,6,3,6,3,6,1,140,1,252, + 0,248,14,18,36,20,2,0,7,160,31,224,63,224,60,96, + 56,0,56,0,60,0,28,0,30,0,127,60,127,188,243,188, + 225,240,224,240,224,240,255,252,127,188,63,60,4,11,11,20, + 8,10,112,112,112,112,112,224,224,224,224,224,224,7,26,26, + 20,8,251,14,14,30,60,56,56,120,112,112,240,240,240,224, + 224,240,240,240,112,112,120,56,60,28,30,14,14,7,26,26, + 20,4,251,224,224,240,120,56,56,60,28,28,30,30,30,14, + 14,30,30,30,28,28,60,56,120,112,240,224,224,15,14,28, + 20,3,7,3,128,3,128,3,128,3,128,99,140,251,190,127, + 252,31,240,15,224,15,224,30,240,60,120,120,60,48,24,17, + 17,51,20,1,1,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,255,255,128,255,255,128, + 255,255,128,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,7,10,10,20,5,251,30,30, + 60,60,56,112,112,224,224,192,15,3,6,20,2,8,255,254, + 255,254,255,254,5,4,4,20,7,0,112,248,248,112,13,27, + 54,20,3,252,0,56,0,56,0,120,0,112,0,112,0,224, + 0,224,1,224,1,192,1,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,28,0,60,0,56,0,56,0, + 112,0,112,0,240,0,224,0,224,0,13,21,42,20,3,0, + 15,128,63,224,127,240,112,112,240,120,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,112,112,127,240,63,224,15,128,13,21,42,20,4,0, + 3,0,15,0,127,0,255,0,255,0,103,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,255,248,255,248,255,248,14,21,42,20,2,0, + 7,192,31,240,63,248,120,60,112,28,112,28,112,28,0,28, + 0,56,0,120,0,240,1,224,3,192,7,128,15,0,30,0, + 60,0,120,0,255,252,255,252,255,252,15,21,42,20,2,0, + 7,224,31,240,127,248,120,60,112,28,0,28,0,28,0,60, + 7,248,7,240,7,248,0,124,0,28,0,14,0,14,0,14, + 0,30,224,60,255,252,255,248,63,224,14,21,42,20,2,0, + 0,240,1,240,1,240,3,240,7,240,7,112,15,112,14,112, + 30,112,28,112,56,112,120,112,112,112,255,252,255,252,255,252, + 0,112,0,112,3,252,3,252,3,252,15,21,42,20,2,0, + 63,252,63,252,63,252,56,0,56,0,56,0,56,0,63,224, + 63,248,63,252,56,124,0,30,0,14,0,14,0,14,0,14, + 64,30,240,60,255,248,127,248,31,224,14,21,42,20,3,0, + 1,248,7,248,15,248,31,0,60,0,120,0,112,0,112,0, + 227,192,239,240,255,240,248,120,240,60,224,28,224,28,240,28, + 112,60,120,120,127,248,63,240,15,192,14,21,42,20,2,0, + 255,252,255,252,255,252,224,60,224,56,224,56,0,56,0,120, + 0,112,0,112,0,240,0,224,0,224,1,224,1,192,1,192, + 3,192,3,128,7,128,7,0,7,0,14,21,42,20,3,0, + 15,128,63,224,127,240,112,112,224,56,224,56,224,56,112,112, + 127,240,63,224,63,240,124,248,240,60,224,28,224,28,224,28, + 224,28,248,124,127,248,63,240,15,192,14,21,42,20,3,0, + 15,128,63,224,127,240,120,240,240,120,224,56,224,60,224,60, + 224,60,240,124,120,252,63,220,63,156,15,60,0,56,0,120, + 0,112,97,240,255,224,255,128,126,0,5,15,15,20,7,0, + 112,248,248,112,0,0,0,0,0,0,0,112,248,248,112,8, + 19,19,20,5,252,14,31,31,14,0,0,0,0,0,0,30, + 30,60,56,120,112,224,224,192,18,19,57,20,0,0,0,1, + 192,0,3,192,0,15,192,0,63,128,0,254,0,1,248,0, + 7,224,0,31,128,0,127,0,0,252,0,0,127,0,0,31, + 128,0,7,224,0,1,248,0,0,254,0,0,63,128,0,15, + 192,0,3,192,0,1,192,17,9,27,20,1,5,255,255,128, + 255,255,128,255,255,128,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,255,255,128,18,19,57,20,1,0,224,0, + 0,240,0,0,252,0,0,127,0,0,31,192,0,7,224,0, + 1,248,0,0,126,0,0,63,128,0,15,192,0,63,128,0, + 126,0,1,248,0,7,224,0,31,192,0,127,0,0,252,0, + 0,240,0,0,224,0,0,13,20,40,20,3,0,31,192,127, + 224,255,240,224,248,224,56,224,56,0,56,0,120,0,240,3, + 240,7,192,7,128,7,0,7,0,0,0,0,0,0,0,7, + 0,15,128,7,0,14,23,46,20,3,254,15,192,31,224,56, + 112,112,48,96,48,224,48,192,48,193,240,199,240,198,48,204, + 48,204,48,204,48,206,48,199,252,195,188,192,0,224,0,96, + 0,112,48,56,112,31,224,15,192,21,20,60,20,255,0,31, + 240,0,31,248,0,31,248,0,1,220,0,1,220,0,1,220, + 0,3,142,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,18,20,60,20,1, + 0,255,248,0,255,254,0,255,255,0,28,7,128,28,3,128, + 28,3,128,28,3,128,28,7,128,31,255,0,31,252,0,31, + 254,0,28,15,128,28,3,192,28,1,192,28,1,192,28,1, + 192,28,3,192,255,255,128,255,255,0,255,252,0,18,20,60, + 20,1,0,3,249,128,15,255,128,31,255,128,62,15,128,120, + 7,128,112,3,128,240,3,128,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,240,0,0, + 120,3,128,124,7,192,63,255,128,31,255,0,7,252,0,17, + 20,60,20,1,0,255,224,0,255,248,0,255,252,0,56,62, + 0,56,15,0,56,7,0,56,7,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 7,128,56,7,0,56,31,0,255,254,0,255,252,0,255,240, + 0,17,20,60,20,1,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,20,60,20,1,0,255,255,128,255,255,128,255, + 255,128,28,3,128,28,3,128,28,3,128,28,115,128,28,112, + 0,31,240,0,31,240,0,31,240,0,28,112,0,28,112,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,17,20,60,20,2,0,3,243,0,15,255, + 0,31,255,0,60,15,0,120,7,0,112,7,0,240,7,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,255,128,224, + 255,128,224,255,128,240,7,0,112,7,0,124,15,0,63,255, + 0,31,254,0,7,248,0,17,20,60,20,1,0,255,127,128, + 255,127,128,255,127,128,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,63,254,0,63,254,0,63,254,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 255,127,128,255,127,128,255,127,128,13,20,40,20,3,0,255, + 248,255,248,255,248,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,255,248,255,248,255,248,17,20,60,20,2,0,7,255,128, + 7,255,128,7,255,128,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,224,56,0,224,56, + 0,224,56,0,224,56,0,224,56,0,224,120,0,240,240,0, + 255,240,0,127,224,0,31,128,0,19,20,60,20,1,0,255, + 159,192,255,159,192,255,159,192,28,15,0,28,30,0,28,60, + 0,28,120,0,28,240,0,31,224,0,31,240,0,31,248,0, + 30,124,0,28,60,0,28,30,0,28,14,0,28,15,0,28, + 7,0,255,135,224,255,135,224,255,135,224,17,20,60,20,1, + 0,255,224,0,255,224,0,255,224,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,3,128,14,3,128,14,3,128,14,3,128,14,3, + 128,14,3,128,255,255,128,255,255,128,255,255,128,21,20,60, + 20,255,0,252,1,248,252,1,248,254,3,248,62,3,224,63, + 7,224,63,7,224,59,142,224,59,142,224,59,222,224,57,220, + 224,57,220,224,56,248,224,56,248,224,56,248,224,56,112,224, + 56,112,224,56,0,224,255,7,248,255,7,248,255,7,248,19, + 20,60,20,0,0,248,31,224,252,31,224,254,31,224,62,3, + 128,63,3,128,63,3,128,59,131,128,59,195,128,57,195,128, + 57,227,128,56,243,128,56,115,128,56,123,128,56,59,128,56, + 31,128,56,31,128,56,15,128,255,7,128,255,7,128,255,3, + 128,18,20,60,20,1,0,3,240,0,15,252,0,31,254,0, + 60,15,0,120,7,128,112,3,128,240,3,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,240,3, + 192,112,3,128,120,7,128,60,15,0,31,254,0,15,252,0, + 3,240,0,17,20,60,20,1,0,255,248,0,255,254,0,255, + 255,0,28,15,0,28,3,128,28,3,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,240,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,18,25,75,20,1,251,3,240,0,15,248, + 0,31,254,0,60,15,0,120,7,128,112,3,128,240,3,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,112,3,128,120,7,128,60,15,0,31,254, + 0,15,252,0,7,240,0,14,0,0,31,225,192,63,255,192, + 63,255,192,56,63,0,20,20,60,20,1,0,255,248,0,255, + 254,0,255,255,0,28,15,0,28,7,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,248,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,255, + 131,240,255,129,240,255,129,240,15,20,40,20,2,0,15,204, + 63,252,127,252,240,124,224,28,224,28,240,28,248,0,127,0, + 63,224,15,248,1,252,0,62,224,30,224,14,224,14,240,30, + 255,252,255,248,231,224,17,20,60,20,1,0,255,255,128,255, + 255,128,255,255,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,63, + 254,0,63,254,0,63,254,0,19,20,60,20,0,0,255,31, + 224,255,31,224,255,31,224,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,28,7,0,31,31, + 0,15,254,0,7,252,0,1,240,0,21,20,60,20,255,0, + 255,143,248,255,143,248,255,143,248,28,1,192,28,1,192,30, + 3,192,14,3,128,14,3,128,7,7,0,7,7,0,7,143, + 0,3,142,0,3,142,0,3,222,0,1,220,0,1,220,0, + 0,248,0,0,248,0,0,248,0,0,112,0,19,20,60,20, + 0,0,255,31,224,255,31,224,255,31,224,112,1,192,112,1, + 192,112,225,192,112,225,192,113,241,192,57,243,128,57,243,128, + 59,187,128,59,187,128,59,187,128,63,31,128,63,31,128,30, + 15,0,30,15,0,30,15,0,28,7,0,28,7,0,19,20, + 60,20,0,0,255,31,224,255,31,224,255,31,224,60,7,128, + 30,15,0,15,30,0,7,188,0,3,248,0,1,240,0,0, + 224,0,1,240,0,3,248,0,7,188,0,15,30,0,14,14, + 0,30,15,0,60,7,128,255,31,224,255,31,224,255,31,224, + 19,20,60,20,0,0,255,31,224,255,31,224,255,31,224,60, + 7,128,14,14,0,15,30,0,7,28,0,7,188,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,15,254,0,15,254,0,15, + 254,0,15,20,40,20,2,0,127,252,127,252,127,252,112,60, + 112,56,112,120,112,240,113,224,1,192,3,192,7,128,15,0, + 14,14,30,14,60,14,120,14,112,14,255,254,255,254,255,254, + 7,26,26,20,8,251,254,254,254,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,254,254,254, + 13,27,54,20,3,252,224,0,224,0,240,0,112,0,112,0, + 56,0,56,0,60,0,28,0,28,0,14,0,14,0,15,0, + 7,0,7,128,3,128,3,128,1,192,1,192,1,224,0,224, + 0,224,0,112,0,112,0,120,0,56,0,56,7,26,26,20, + 4,251,254,254,254,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,254,254,254,13,11,22,20, + 3,11,2,0,7,0,7,0,15,128,31,192,61,224,56,224, + 120,240,240,120,224,56,224,56,20,3,9,20,0,249,255,255, + 240,255,255,240,255,255,240,6,6,6,20,6,16,192,224,112, + 56,28,12,16,15,30,20,2,0,31,224,127,248,127,252,112, + 60,0,28,0,28,15,252,127,252,127,252,240,28,224,28,224, + 124,255,255,127,223,63,159,19,21,63,20,0,0,252,0,0, + 252,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 124,0,29,255,0,31,255,128,31,135,192,30,1,192,30,1, + 224,28,0,224,28,0,224,28,0,224,28,0,224,30,1,192, + 31,3,192,255,255,128,255,255,0,252,254,0,16,15,30,20, + 2,0,7,230,31,254,63,254,124,62,112,14,224,14,224,14, + 224,0,224,0,224,0,240,6,120,15,127,254,63,252,15,240, + 19,21,63,20,1,0,0,63,0,0,63,0,0,63,0,0, + 7,0,0,7,0,0,7,0,7,231,0,31,255,0,63,255, + 0,124,63,0,112,15,0,240,15,0,224,7,0,224,7,0, + 224,7,0,224,7,0,112,15,0,124,63,0,63,255,224,31, + 247,224,7,231,224,18,15,45,20,1,0,3,240,0,15,252, + 0,31,254,0,62,31,0,120,7,128,112,3,128,255,255,128, + 255,255,128,255,255,128,240,0,0,120,0,0,126,3,128,63, + 255,192,31,255,128,7,254,0,16,21,42,20,3,0,1,255, + 7,255,7,255,15,0,14,0,14,0,255,252,255,252,255,252, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,252,255,252,255,252,18,22,66,20,1,249,7,207, + 192,31,255,192,63,255,192,124,126,0,112,30,0,240,30,0, + 224,14,0,224,14,0,224,14,0,240,30,0,112,30,0,120, + 126,0,63,254,0,31,238,0,15,206,0,0,14,0,0,14, + 0,0,30,0,0,60,0,31,252,0,31,248,0,31,224,0, + 18,21,63,20,1,0,252,0,0,252,0,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,248,0,29,252,0,31,254, + 0,31,15,0,30,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,127,31,192,127, + 31,192,127,31,192,15,21,42,20,3,0,7,128,7,128,7, + 128,7,128,0,0,0,0,127,128,127,128,127,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255, + 254,255,254,255,254,12,28,56,20,3,249,3,192,3,192,3, + 192,3,192,0,0,0,0,255,240,255,240,255,240,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,240,255,224,255, + 192,255,128,17,21,63,20,1,0,252,0,0,252,0,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,255,0,28,255, + 0,28,255,0,28,120,0,28,240,0,29,224,0,31,192,0, + 31,192,0,31,224,0,29,240,0,28,248,0,28,124,0,252, + 63,128,252,63,128,252,63,128,15,21,42,20,3,0,127,128, + 127,128,127,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,255,254,255,254,255,254,20,15,45,20,1,0,243,143, + 0,255,255,128,255,255,192,120,241,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,112,225,192,112,225,192,112, + 225,192,252,249,240,252,249,240,252,249,240,17,15,45,20,2, + 0,249,240,0,251,248,0,255,252,0,62,30,0,60,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,254,63,128,254,63,128,254,63,128,17,15, + 45,20,2,0,7,240,0,31,252,0,63,254,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,240, + 7,128,112,7,0,120,15,0,63,254,0,31,252,0,7,240, + 0,19,22,66,20,0,249,252,124,0,253,255,0,255,255,128, + 31,3,192,30,1,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,1,224,30,1,192,31,7,192,31,255,128,29,254, + 0,28,120,0,28,0,0,28,0,0,28,0,0,28,0,0, + 255,192,0,255,192,0,255,192,0,19,22,66,20,1,249,7, + 231,224,31,255,224,63,255,224,124,63,0,112,15,0,240,15, + 0,224,7,0,224,7,0,224,7,0,240,15,0,112,15,0, + 124,63,0,63,255,0,31,247,0,7,199,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,127,224,0,127,224,0,127, + 224,17,15,45,20,2,0,126,62,0,126,255,0,127,255,128, + 15,199,0,15,2,0,15,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,255,252,0,255,252, + 0,255,252,0,15,15,30,20,3,0,15,236,63,252,63,252, + 120,60,112,28,120,0,127,192,63,248,15,252,224,62,224,14, + 248,30,255,252,255,248,231,224,16,20,40,20,2,0,28,0, + 28,0,28,0,28,0,28,0,255,252,255,252,255,252,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,6,30,31, + 31,255,15,254,3,240,18,15,45,20,1,0,252,63,0,252, + 63,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,30,31,0, + 31,255,192,15,255,192,7,247,192,19,15,45,20,0,0,255, + 31,224,255,31,224,255,31,224,60,7,0,28,7,0,30,14, + 0,14,14,0,15,28,0,7,28,0,7,184,0,3,184,0, + 3,240,0,1,240,0,1,224,0,0,224,0,19,15,45,20, + 0,0,254,15,224,254,15,224,254,15,224,56,227,128,56,227, + 128,57,243,128,61,247,128,29,247,0,31,191,0,31,31,0, + 31,31,0,15,30,0,14,14,0,14,14,0,14,14,0,17, + 15,45,20,1,0,254,63,128,254,63,128,254,63,128,60,28, + 0,30,56,0,15,112,0,7,224,0,3,224,0,3,240,0, + 7,120,0,14,60,0,28,30,0,254,63,128,254,63,128,254, + 63,128,19,22,66,20,1,249,255,31,224,255,31,224,255,31, + 224,60,3,128,28,7,0,30,7,0,14,14,0,15,14,0, + 7,28,0,7,156,0,3,184,0,3,248,0,1,240,0,1, + 240,0,0,224,0,0,224,0,1,192,0,1,192,0,3,128, + 0,127,240,0,127,240,0,127,240,0,13,15,30,20,4,0, + 255,248,255,248,255,248,224,240,225,224,227,192,7,128,15,0, + 30,0,60,0,120,56,240,56,255,248,255,248,255,248,9,26, + 52,20,5,251,7,128,15,128,15,128,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,60,0,248,0,248,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,31,128,15,128,7,128,3,26,26,20,8,251,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,9,26,52,20,5,251,240,0, + 248,0,248,0,60,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,30,0,15,128,15,128,31,128,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,252,0,248,0, + 240,0,15,7,14,20,2,6,12,0,63,14,127,142,247,222, + 227,252,225,248,0,96,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,20,0,1,5,21,21, + 20,7,249,112,248,248,112,0,0,112,112,112,112,112,112,112, + 112,248,248,248,248,248,112,32,13,23,46,20,3,255,7,0, + 7,0,7,0,7,0,7,0,15,216,63,248,127,248,120,120, + 240,56,224,56,224,0,224,0,224,0,240,56,120,120,127,248, + 63,240,15,192,7,0,7,0,7,0,7,0,16,20,40,20, + 1,0,3,224,7,240,15,248,30,56,28,56,28,0,28,0, + 28,0,14,0,255,224,255,224,255,224,14,0,14,0,14,0, + 14,2,30,7,127,255,127,255,127,254,15,15,30,20,2,2, + 224,14,247,222,255,254,127,252,60,120,120,60,112,28,112,28, + 112,28,120,60,60,120,127,252,255,254,247,222,224,14,17,20, + 60,20,1,0,254,63,128,254,63,128,254,63,128,56,14,0, + 28,28,0,30,60,0,14,56,0,15,120,0,7,112,0,3, + 224,0,31,252,0,31,252,0,1,192,0,31,252,0,31,252, + 0,1,192,0,1,192,0,31,252,0,31,252,0,31,252,0, + 3,26,26,20,8,251,224,224,224,224,224,224,224,224,224,224, + 224,224,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 16,24,48,20,2,253,1,254,7,254,15,254,28,6,24,6, + 24,6,60,0,127,0,231,128,193,224,96,240,112,60,60,14, + 15,6,7,131,1,231,0,254,0,60,48,24,48,24,48,56, + 63,240,63,224,63,128,11,4,8,20,4,17,96,192,241,224, + 241,224,96,192,21,20,60,20,255,0,0,252,0,3,255,0, + 15,255,192,30,3,224,56,96,224,113,246,112,115,254,112,231, + 158,56,231,14,56,206,14,56,206,0,56,206,0,56,206,6, + 56,231,15,120,231,254,112,115,252,240,120,241,224,62,7,192, + 31,255,0,7,252,0,11,14,28,20,4,6,31,0,127,128, + 97,128,1,128,63,128,127,128,225,128,193,128,195,128,255,224, + 125,224,0,0,255,224,255,224,15,14,28,20,1,0,3,6, + 7,14,14,28,28,56,56,112,112,224,225,192,225,192,112,224, + 56,112,28,56,14,28,7,14,3,6,16,8,16,20,2,5, + 255,255,255,255,255,255,0,7,0,7,0,7,0,7,0,7, + 15,3,6,20,2,8,255,254,255,254,255,254,21,20,60,20, + 255,0,1,248,0,7,254,0,31,255,128,60,3,192,59,241, + 224,115,252,224,115,254,240,227,158,112,227,142,120,227,142,56, + 227,254,56,227,252,56,227,184,56,243,188,120,115,158,112,123, + 143,240,60,3,224,31,255,192,15,255,0,3,252,0,10,2, + 4,20,5,17,255,192,255,192,9,9,18,20,5,11,28,0, + 119,0,193,128,128,128,128,128,128,128,193,128,119,0,28,0, + 17,18,54,20,1,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,255,255,128,255,255,128,255,255, + 128,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,8,14,14,20, + 5,7,60,126,231,195,3,7,14,12,24,56,112,225,255,255, + 9,14,28,20,5,7,62,0,127,0,99,0,3,0,7,0, + 30,0,31,0,3,128,1,128,1,128,193,128,227,0,127,0, + 60,0,8,6,6,20,6,15,6,15,62,120,224,64,18,22, + 66,20,1,249,252,63,0,252,63,0,252,63,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,15,0,30,31,0,31,255,192,31,247,192,29,231, + 192,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,15,24,48,20,2,253,15,254,63,254, + 123,24,243,24,227,24,227,24,227,24,227,24,227,24,115,24, + 63,24,31,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,31,62,31,62,31,62,5,4,4,20, + 7,8,112,248,248,112,5,7,7,20,6,250,48,48,48,24, + 248,248,112,8,13,13,20,6,7,56,248,216,24,24,24,24, + 24,24,24,24,255,255,11,14,28,20,4,6,14,0,63,128, + 113,192,224,224,192,96,192,96,192,96,224,224,113,192,63,128, + 14,0,0,0,255,224,255,224,15,14,28,20,2,0,193,128, + 225,192,112,224,56,112,28,56,14,28,7,14,7,14,14,28, + 28,56,56,112,112,224,225,192,193,128,19,20,60,20,0,0, + 56,0,0,248,0,0,216,0,128,24,1,192,24,1,128,24, + 3,0,24,6,0,24,12,0,24,28,192,24,25,192,255,51, + 192,255,114,192,0,102,192,0,206,192,1,140,192,3,159,224, + 7,31,224,2,0,192,0,1,224,0,1,224,19,20,60,20, + 0,0,56,0,0,248,0,0,216,2,0,24,7,0,24,14, + 0,24,12,0,24,24,0,24,56,0,24,112,0,24,103,128, + 254,239,192,255,220,224,1,152,96,3,0,224,7,1,192,14, + 7,128,4,14,0,0,28,96,0,31,224,0,31,224,19,21, + 63,20,0,0,62,0,0,127,0,0,99,0,0,3,1,0, + 3,3,128,30,7,0,31,6,0,3,142,0,1,156,0,195, + 152,192,227,49,192,127,115,192,28,98,192,0,198,192,1,206, + 192,3,140,192,7,31,224,2,31,224,0,0,192,0,3,224, + 0,3,224,13,21,42,20,3,250,7,0,15,128,15,128,7, + 0,0,0,0,0,0,0,7,0,7,0,7,0,31,0,63, + 0,124,0,240,0,224,0,224,56,224,56,240,56,127,248,63, + 248,31,224,21,26,78,20,255,0,3,0,0,7,128,0,1, + 224,0,0,240,0,0,48,0,0,0,0,31,240,0,31,248, + 0,31,248,0,1,252,0,1,220,0,1,220,0,3,222,0, + 3,142,0,3,142,0,7,7,0,7,7,0,7,7,0,15, + 255,128,15,255,128,31,255,192,28,1,192,28,1,192,255,143, + 248,255,143,248,255,143,248,21,26,78,20,255,0,0,3,0, + 0,15,0,0,30,0,0,120,0,0,96,0,0,0,0,31, + 240,0,31,248,0,31,248,0,1,252,0,1,220,0,1,220, + 0,3,222,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,21,26,78,20,255, + 0,0,64,0,0,224,0,3,184,0,7,28,0,14,14,0, + 0,0,0,31,240,0,31,248,0,31,248,0,1,252,0,1, + 220,0,1,220,0,3,222,0,3,142,0,3,142,0,7,7, + 0,7,7,0,7,7,0,15,255,128,15,255,128,31,255,192, + 28,1,192,28,1,192,255,143,248,255,143,248,255,143,248,21, + 25,75,20,255,0,3,134,0,7,230,0,6,118,0,6,28, + 0,0,0,0,31,240,0,31,248,0,31,248,0,1,252,0, + 1,220,0,1,220,0,3,222,0,3,142,0,3,142,0,7, + 7,0,7,7,0,7,7,0,15,255,128,15,255,128,31,255, + 192,28,1,192,28,1,192,255,143,248,255,143,248,255,143,248, + 21,25,75,20,255,0,12,24,0,30,60,0,30,60,0,12, + 24,0,0,0,0,31,240,0,31,248,0,31,248,0,1,252, + 0,1,220,0,1,220,0,3,222,0,3,142,0,3,142,0, + 7,7,0,7,7,0,7,7,0,15,255,128,15,255,128,31, + 255,192,28,1,192,28,1,192,255,143,248,255,143,248,255,143, + 248,21,26,78,20,255,0,0,240,0,1,152,0,1,8,0, + 1,152,0,0,240,0,0,0,0,31,240,0,31,248,0,31, + 248,0,1,252,0,1,220,0,1,220,0,3,222,0,3,142, + 0,3,142,0,7,7,0,7,7,0,7,7,0,15,255,128, + 15,255,128,31,255,192,28,1,192,28,1,192,255,143,248,255, + 143,248,255,143,248,20,20,60,20,0,0,31,255,224,31,255, + 224,31,255,224,7,112,224,7,112,224,6,112,224,14,112,224, + 14,115,0,14,115,0,14,127,0,28,127,0,28,115,0,31, + 243,0,31,243,0,56,112,112,56,112,112,56,112,112,255,255, + 240,255,255,240,255,255,240,17,26,78,20,1,250,3,227,0, + 15,255,0,31,255,0,62,31,0,120,15,0,112,7,0,240, + 7,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,240,0,0,112,1,0,120,3,128,62,15,128, + 63,255,0,15,254,0,3,248,0,0,192,0,0,192,0,0, + 224,0,4,112,0,7,240,0,3,224,0,17,26,78,20,1, + 0,3,0,0,7,128,0,1,224,0,0,240,0,0,48,0, + 0,0,0,255,255,0,255,255,0,255,255,0,28,7,0,28, + 7,0,28,7,0,28,119,0,28,112,0,31,240,0,31,240, + 0,31,240,0,28,112,0,28,112,0,28,3,128,28,3,128, + 28,3,128,28,3,128,255,255,128,255,255,128,255,255,128,17, + 26,78,20,1,0,0,12,0,0,60,0,0,120,0,1,224, + 0,1,128,0,0,0,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,26,78,20,1,0,0,128,0,1,192,0,7, + 112,0,14,56,0,28,28,0,0,0,0,255,255,0,255,255, + 0,255,255,0,28,7,0,28,7,0,28,7,0,28,119,0, + 28,112,0,31,240,0,31,240,0,31,240,0,28,112,0,28, + 112,0,28,3,128,28,3,128,28,3,128,28,3,128,255,255, + 128,255,255,128,255,255,128,17,25,75,20,1,0,6,12,0, + 15,30,0,15,30,0,6,12,0,0,0,0,255,255,0,255, + 255,0,255,255,0,28,7,0,28,7,0,28,7,0,28,119, + 0,28,112,0,31,240,0,31,240,0,31,240,0,28,112,0, + 28,112,0,28,3,128,28,3,128,28,3,128,28,3,128,255, + 255,128,255,255,128,255,255,128,13,26,52,20,3,0,24,0, + 60,0,15,0,7,128,1,128,0,0,255,248,255,248,255,248, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,255,248,255,248, + 255,248,13,26,52,20,3,0,0,48,0,240,1,224,7,128, + 6,0,0,0,255,248,255,248,255,248,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,255,248,255,248,255,248,13,26,52,20, + 3,0,2,0,7,0,29,192,56,224,112,112,0,0,255,248, + 255,248,255,248,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 255,248,255,248,255,248,13,25,50,20,3,0,48,96,120,240, + 120,240,48,96,0,0,255,248,255,248,255,248,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,255,248,255,248,255,248,17,20, + 60,20,2,0,255,224,0,255,248,0,255,252,0,56,62,0, + 56,15,0,56,7,0,56,7,0,56,3,128,255,131,128,255, + 131,128,255,131,128,56,3,128,56,3,128,56,3,128,56,7, + 0,56,7,0,56,30,0,255,254,0,255,252,0,255,240,0, + 20,25,75,20,255,0,3,134,0,7,230,0,6,118,0,6, + 28,0,0,0,0,252,31,240,254,31,240,255,31,240,31,1, + 192,31,129,192,31,129,192,29,193,192,29,225,192,28,225,192, + 28,241,192,28,121,192,28,57,192,28,61,192,28,29,192,28, + 15,192,28,15,192,28,7,192,127,199,192,127,195,192,127,193, + 192,17,26,78,20,1,0,6,0,0,15,0,0,3,192,0, + 1,224,0,0,96,0,0,0,0,7,240,0,15,252,0,31, + 252,0,60,30,0,120,15,0,112,7,0,112,7,0,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 112,7,0,120,7,0,56,14,0,62,62,0,31,252,0,15, + 248,0,3,224,0,17,26,78,20,1,0,0,24,0,0,120, + 0,0,240,0,3,192,0,3,0,0,0,0,0,7,240,0, + 15,252,0,31,252,0,60,30,0,120,15,0,112,7,0,112, + 7,0,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,112,7,0,120,7,0,56,14,0,62,62,0, + 31,252,0,15,248,0,3,224,0,17,26,78,20,1,0,0, + 128,0,1,192,0,7,112,0,14,56,0,28,28,0,0,0, + 0,7,240,0,15,252,0,31,252,0,60,30,0,120,15,0, + 112,7,0,112,7,0,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,112,7,0,120,7,0,56,14, + 0,62,62,0,31,252,0,15,248,0,3,224,0,17,25,75, + 20,1,0,7,12,0,15,204,0,12,236,0,12,56,0,0, + 0,0,7,240,0,15,252,0,31,252,0,60,30,0,120,15, + 0,112,7,0,112,7,0,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,112,7,0,120,7,0,56, + 14,0,62,62,0,31,252,0,15,248,0,3,224,0,17,25, + 75,20,1,0,12,24,0,30,60,0,30,60,0,12,24,0, + 0,0,0,7,240,0,15,252,0,31,252,0,60,30,0,120, + 15,0,112,7,0,112,7,0,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,112,7,0,120,7,0, + 56,14,0,62,62,0,31,252,0,15,248,0,3,224,0,15, + 16,32,20,2,0,224,14,240,30,248,62,120,60,60,120,30, + 240,15,224,7,192,7,192,15,224,30,240,60,120,120,60,248, + 62,240,30,224,14,17,23,69,20,1,254,0,3,128,3,227, + 128,15,255,128,31,255,0,62,62,0,56,30,0,120,63,0, + 112,127,0,224,123,128,224,243,128,225,227,128,225,195,128,227, + 195,128,231,131,128,255,7,128,126,7,0,126,15,0,60,30, + 0,127,252,0,127,248,0,247,240,0,224,0,0,224,0,0, + 19,26,78,20,0,0,3,0,0,7,128,0,1,224,0,0, + 240,0,0,48,0,0,0,0,255,31,224,255,31,224,255,31, + 224,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,28,7,128,31,31,0,15,254,0,7,252, + 0,1,248,0,19,26,78,20,0,0,0,28,0,0,60,0, + 0,240,0,1,224,0,1,128,0,0,0,0,255,31,224,255, + 31,224,255,31,224,56,3,128,56,3,128,56,3,128,56,3, + 128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,28,7,128,31,31,0,15, + 254,0,7,252,0,1,248,0,19,26,78,20,0,0,0,64, + 0,0,224,0,3,184,0,7,28,0,14,14,0,0,0,0, + 255,31,224,255,31,224,255,31,224,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3, + 128,56,3,128,56,3,128,56,3,128,56,3,128,28,7,128, + 31,31,0,15,254,0,7,252,0,1,248,0,19,26,78,20, + 0,0,6,12,0,15,30,0,15,30,0,6,12,0,0,0, + 0,0,0,0,255,191,224,255,191,224,255,191,224,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3, + 128,28,7,128,31,31,0,15,254,0,7,252,0,1,248,0, + 17,26,78,20,1,0,0,24,0,0,120,0,0,240,0,3, + 192,0,3,0,0,0,0,0,254,63,128,254,63,128,254,63, + 128,60,30,0,28,28,0,30,60,0,14,56,0,15,120,0, + 7,240,0,3,224,0,3,224,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,31,252,0,31,252, + 0,31,252,0,18,20,60,20,1,0,255,128,0,255,128,0, + 255,128,0,28,0,0,31,248,0,31,254,0,31,255,0,28, + 15,128,28,3,128,28,3,192,28,3,192,28,3,128,28,15, + 128,31,255,0,31,254,0,31,248,0,28,0,0,255,128,0, + 255,128,0,255,128,0,17,22,66,20,0,255,3,224,0,7, + 240,0,15,248,0,30,60,0,28,28,0,28,28,0,28,28, + 0,28,60,0,29,248,0,29,248,0,29,254,0,28,31,0, + 28,15,0,28,7,128,28,3,128,28,3,128,29,195,128,29, + 195,128,255,255,0,254,255,0,254,126,0,0,24,0,17,22, + 66,20,2,0,24,0,0,60,0,0,15,0,0,7,128,0, + 1,128,0,0,0,0,0,0,0,15,224,0,63,240,0,63, + 248,0,56,60,0,0,28,0,0,28,0,15,252,0,63,252, + 0,127,252,0,120,28,0,240,28,0,224,124,0,255,255,128, + 127,255,128,63,159,128,17,22,66,20,2,0,0,32,0,0, + 112,0,0,240,0,3,192,0,7,128,0,6,0,0,0,0, + 0,15,224,0,63,240,0,63,248,0,56,60,0,0,28,0, + 0,28,0,15,252,0,63,252,0,127,252,0,120,28,0,224, + 60,0,224,124,0,255,255,128,127,223,128,63,159,128,17,22, + 66,20,1,0,0,128,0,1,192,0,7,112,0,14,56,0, + 28,28,0,0,0,0,0,0,0,7,224,0,63,240,0,63, + 248,0,60,60,0,0,28,0,0,28,0,15,252,0,63,252, + 0,127,252,0,120,28,0,240,28,0,224,60,0,255,255,128, + 127,255,128,63,159,128,17,21,63,20,1,0,14,24,0,31, + 152,0,25,248,0,24,112,0,0,0,0,0,0,0,15,224, + 0,63,240,0,63,248,0,56,60,0,0,28,0,0,28,0, + 15,252,0,63,252,0,127,252,0,120,28,0,240,28,0,224, + 124,0,255,255,128,127,223,128,63,159,128,17,21,63,20,2, + 0,12,24,0,30,60,0,30,60,0,12,24,0,0,0,0, + 0,0,0,15,224,0,63,240,0,63,248,0,56,60,0,0, + 28,0,0,28,0,15,252,0,63,252,0,127,252,0,120,28, + 0,240,28,0,224,124,0,255,255,128,127,223,128,63,159,128, + 17,21,63,20,1,0,3,192,0,6,96,0,4,32,0,6, + 96,0,3,192,0,0,0,0,15,224,0,63,240,0,63,248, + 0,56,60,0,0,28,0,0,28,0,15,252,0,63,252,0, + 127,252,0,120,28,0,240,28,0,224,124,0,255,255,128,127, + 223,128,63,159,128,20,15,45,20,255,0,15,135,0,63,255, + 192,63,255,192,56,253,224,0,112,112,3,240,112,31,255,240, + 127,255,240,255,255,240,240,112,0,224,120,0,241,248,112,127, + 255,240,63,255,240,31,39,128,16,21,42,20,2,250,7,230, + 31,254,63,254,124,62,112,14,240,14,224,14,224,0,224,0, + 224,0,240,6,124,15,63,254,31,252,7,240,1,128,1,128, + 1,192,8,224,15,192,3,128,16,21,42,20,1,0,6,0, + 15,0,3,192,1,224,0,96,0,0,7,224,31,248,63,252, + 124,62,112,14,240,15,255,255,255,255,255,255,224,0,112,0, + 124,15,63,255,31,254,7,240,16,22,44,20,1,0,0,16, + 0,56,0,120,1,224,3,192,3,0,0,0,7,224,31,248, + 63,252,124,62,112,14,240,15,255,255,255,255,255,255,224,0, + 112,0,124,14,63,255,31,254,7,240,16,22,44,20,1,0, + 0,128,1,192,7,112,14,56,28,28,0,0,0,0,7,224, + 31,248,63,252,124,62,112,14,240,15,255,255,255,255,255,255, + 224,0,112,0,124,31,63,255,31,255,7,240,16,21,42,20, + 1,0,12,24,30,60,30,60,12,24,0,0,0,0,7,224, + 31,248,63,252,124,62,112,14,240,15,255,255,255,255,255,255, + 224,0,112,0,124,31,63,255,31,255,7,240,15,22,44,20, + 2,0,24,0,60,0,15,0,7,128,1,128,0,0,0,0, + 127,128,127,128,127,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,254,255,254,255,254,15,23, + 46,20,2,0,0,128,1,192,3,192,15,0,30,0,24,0, + 0,0,0,0,127,128,127,128,127,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254, + 255,254,15,22,44,20,2,0,2,0,7,0,29,192,56,224, + 112,112,0,0,0,0,127,128,127,128,127,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254, + 255,254,255,254,15,21,42,20,2,0,48,96,120,240,120,240, + 48,96,0,0,0,0,127,128,127,128,127,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254, + 255,254,255,254,16,21,42,20,2,0,126,14,255,191,255,252, + 3,240,15,240,127,248,124,56,112,60,7,220,31,254,127,254, + 120,30,240,15,224,7,224,7,224,15,240,15,248,62,127,252, + 63,248,31,224,17,21,63,20,1,0,14,24,0,31,152,0, + 25,248,0,24,112,0,0,0,0,0,0,0,249,240,0,251, + 252,0,255,254,0,60,30,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,254,63,128,254,63,128,17,21,63,20,1,0,6, + 0,0,15,0,0,3,192,0,1,224,0,0,96,0,0,0, + 0,7,240,0,15,248,0,63,254,0,60,30,0,120,15,0, + 240,7,128,224,3,128,224,3,128,224,3,128,240,7,128,120, + 15,0,124,31,0,63,254,0,31,252,0,7,240,0,17,22, + 66,20,1,0,0,16,0,0,56,0,0,120,0,1,224,0, + 3,192,0,3,0,0,0,0,0,7,240,0,15,248,0,63, + 254,0,60,30,0,120,15,0,240,7,128,224,3,128,224,3, + 128,224,3,128,240,7,128,120,15,0,124,31,0,63,254,0, + 31,252,0,7,240,0,17,22,66,20,1,0,0,128,0,1, + 192,0,7,112,0,14,56,0,28,28,0,0,0,0,0,0, + 0,7,240,0,15,248,0,63,254,0,60,30,0,120,15,0, + 240,7,128,224,3,128,224,3,128,224,3,128,240,7,128,120, + 15,0,124,31,0,63,254,0,31,252,0,7,240,0,17,21, + 63,20,1,0,7,12,0,15,204,0,12,252,0,12,56,0, + 0,0,0,0,0,0,7,240,0,15,248,0,63,254,0,60, + 30,0,120,15,0,240,7,128,224,3,128,224,3,128,224,3, + 128,240,7,128,120,15,0,124,31,0,63,254,0,31,252,0, + 7,240,0,17,21,63,20,1,0,12,24,0,30,60,0,30, + 60,0,12,24,0,0,0,0,0,0,0,7,240,0,15,248, + 0,63,254,0,60,30,0,120,15,0,240,7,128,224,3,128, + 224,3,128,224,3,128,240,7,128,120,15,0,124,31,0,63, + 254,0,31,252,0,7,240,0,15,15,30,20,2,2,3,128, + 7,192,7,192,3,128,0,0,0,0,255,254,255,254,255,254, + 0,0,0,0,3,128,7,192,7,192,3,128,17,18,54,20, + 1,254,0,3,128,3,227,128,15,255,128,63,255,0,62,62, + 0,120,63,0,112,127,0,224,243,128,225,227,128,227,195,128, + 231,131,128,127,7,0,126,31,0,63,254,0,127,252,0,247, + 240,0,224,0,0,224,0,0,18,22,66,20,0,0,3,0, + 0,7,128,0,1,224,0,0,240,0,0,48,0,0,0,0, + 0,0,0,252,63,0,252,63,0,252,63,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,15,0,28,31,0,31,255,192,15,247,192,7,231,192, + 18,22,66,20,0,0,0,8,0,0,28,0,0,60,0,0, + 240,0,1,224,0,1,128,0,0,0,0,252,63,0,252,63, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,15,0,28,31,0,31, + 255,192,15,247,192,7,231,192,18,22,66,20,0,0,0,128, + 0,1,192,0,7,112,0,14,56,0,28,28,0,0,0,0, + 0,0,0,252,63,0,252,63,0,252,63,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,15,0,28,31,0,31,255,192,15,247,192,7,231,192, + 18,21,63,20,0,0,12,24,0,30,60,0,30,60,0,12, + 24,0,0,0,0,0,0,0,252,63,0,252,63,0,252,63, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,15,0,28,31,0,31,255,192,15, + 247,192,7,231,192,17,29,87,20,1,249,0,16,0,0,56, + 0,0,120,0,1,224,0,3,192,0,3,0,0,0,0,0, + 254,63,128,254,63,128,254,63,128,120,15,0,56,14,0,60, + 30,0,28,28,0,30,60,0,14,56,0,15,120,0,7,112, + 0,7,240,0,3,224,0,3,224,0,1,192,0,1,192,0, + 3,128,0,3,128,0,7,0,0,255,224,0,255,224,0,255, + 224,0,19,28,84,20,0,249,252,0,0,252,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,252,0,31,255,0, + 31,255,128,31,135,192,31,3,192,30,1,224,28,0,224,28, + 0,224,28,0,224,30,1,224,30,1,192,31,135,192,31,255, + 128,31,255,0,28,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,255,192,0,255,192,0,255,192,0,17,28,84,20, + 1,249,6,12,0,15,30,0,15,30,0,6,12,0,0,0, + 0,0,0,0,254,63,128,254,63,128,254,63,128,120,15,0, + 56,14,0,60,30,0,28,28,0,30,60,0,14,56,0,15, + 120,0,7,112,0,7,240,0,3,224,0,3,224,0,1,192, + 0,1,192,0,3,128,0,3,128,0,7,0,0,255,224,0, + 255,224,0,255,224,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 20, '1' Height: 21 + Calculated Max Values w=21 h=28 x= 8 y=16 dx=20 dy= 0 ascent=23 len=75 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24r[4775] U8G_SECTION(".progmem.u8g_font_courB24r") = { + 0,30,44,249,245,20,5,57,12,115,32,127,249,23,249,21, + 249,0,0,0,20,0,1,5,21,21,20,7,0,112,248,248, + 248,248,248,112,112,112,112,112,112,112,112,112,32,0,0,112, + 248,112,9,10,20,20,5,10,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,65,0,15,26,52,20, + 2,253,14,56,14,56,14,56,14,56,14,56,14,56,14,56, + 14,56,127,254,127,254,127,254,28,112,28,112,28,112,28,112, + 255,252,255,252,255,252,56,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,224,14,27,54,20,3,252,7,0,7,0, + 7,0,15,216,63,248,127,248,240,120,224,56,224,56,240,0, + 254,0,127,192,63,240,7,248,0,252,0,60,224,28,224,28, + 240,60,255,248,255,240,231,128,7,0,7,0,7,0,7,0, + 7,0,15,21,42,20,2,0,31,0,63,128,49,128,96,192, + 96,192,96,192,113,194,63,142,31,62,0,248,3,224,31,0, + 252,248,241,252,195,142,3,6,3,6,3,6,1,140,1,252, + 0,248,14,18,36,20,2,0,7,160,31,224,63,224,60,96, + 56,0,56,0,60,0,28,0,30,0,127,60,127,188,243,188, + 225,240,224,240,224,240,255,252,127,188,63,60,4,11,11,20, + 8,10,112,112,112,112,112,224,224,224,224,224,224,7,26,26, + 20,8,251,14,14,30,60,56,56,120,112,112,240,240,240,224, + 224,240,240,240,112,112,120,56,60,28,30,14,14,7,26,26, + 20,4,251,224,224,240,120,56,56,60,28,28,30,30,30,14, + 14,30,30,30,28,28,60,56,120,112,240,224,224,15,14,28, + 20,3,7,3,128,3,128,3,128,3,128,99,140,251,190,127, + 252,31,240,15,224,15,224,30,240,60,120,120,60,48,24,17, + 17,51,20,1,1,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,255,255,128,255,255,128, + 255,255,128,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,7,10,10,20,5,251,30,30, + 60,60,56,112,112,224,224,192,15,3,6,20,2,8,255,254, + 255,254,255,254,5,4,4,20,7,0,112,248,248,112,13,27, + 54,20,3,252,0,56,0,56,0,120,0,112,0,112,0,224, + 0,224,1,224,1,192,1,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,28,0,60,0,56,0,56,0, + 112,0,112,0,240,0,224,0,224,0,13,21,42,20,3,0, + 15,128,63,224,127,240,112,112,240,120,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,112,112,127,240,63,224,15,128,13,21,42,20,4,0, + 3,0,15,0,127,0,255,0,255,0,103,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,255,248,255,248,255,248,14,21,42,20,2,0, + 7,192,31,240,63,248,120,60,112,28,112,28,112,28,0,28, + 0,56,0,120,0,240,1,224,3,192,7,128,15,0,30,0, + 60,0,120,0,255,252,255,252,255,252,15,21,42,20,2,0, + 7,224,31,240,127,248,120,60,112,28,0,28,0,28,0,60, + 7,248,7,240,7,248,0,124,0,28,0,14,0,14,0,14, + 0,30,224,60,255,252,255,248,63,224,14,21,42,20,2,0, + 0,240,1,240,1,240,3,240,7,240,7,112,15,112,14,112, + 30,112,28,112,56,112,120,112,112,112,255,252,255,252,255,252, + 0,112,0,112,3,252,3,252,3,252,15,21,42,20,2,0, + 63,252,63,252,63,252,56,0,56,0,56,0,56,0,63,224, + 63,248,63,252,56,124,0,30,0,14,0,14,0,14,0,14, + 64,30,240,60,255,248,127,248,31,224,14,21,42,20,3,0, + 1,248,7,248,15,248,31,0,60,0,120,0,112,0,112,0, + 227,192,239,240,255,240,248,120,240,60,224,28,224,28,240,28, + 112,60,120,120,127,248,63,240,15,192,14,21,42,20,2,0, + 255,252,255,252,255,252,224,60,224,56,224,56,0,56,0,120, + 0,112,0,112,0,240,0,224,0,224,1,224,1,192,1,192, + 3,192,3,128,7,128,7,0,7,0,14,21,42,20,3,0, + 15,128,63,224,127,240,112,112,224,56,224,56,224,56,112,112, + 127,240,63,224,63,240,124,248,240,60,224,28,224,28,224,28, + 224,28,248,124,127,248,63,240,15,192,14,21,42,20,3,0, + 15,128,63,224,127,240,120,240,240,120,224,56,224,60,224,60, + 224,60,240,124,120,252,63,220,63,156,15,60,0,56,0,120, + 0,112,97,240,255,224,255,128,126,0,5,15,15,20,7,0, + 112,248,248,112,0,0,0,0,0,0,0,112,248,248,112,8, + 19,19,20,5,252,14,31,31,14,0,0,0,0,0,0,30, + 30,60,56,120,112,224,224,192,18,19,57,20,0,0,0,1, + 192,0,3,192,0,15,192,0,63,128,0,254,0,1,248,0, + 7,224,0,31,128,0,127,0,0,252,0,0,127,0,0,31, + 128,0,7,224,0,1,248,0,0,254,0,0,63,128,0,15, + 192,0,3,192,0,1,192,17,9,27,20,1,5,255,255,128, + 255,255,128,255,255,128,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,255,255,128,18,19,57,20,1,0,224,0, + 0,240,0,0,252,0,0,127,0,0,31,192,0,7,224,0, + 1,248,0,0,126,0,0,63,128,0,15,192,0,63,128,0, + 126,0,1,248,0,7,224,0,31,192,0,127,0,0,252,0, + 0,240,0,0,224,0,0,13,20,40,20,3,0,31,192,127, + 224,255,240,224,248,224,56,224,56,0,56,0,120,0,240,3, + 240,7,192,7,128,7,0,7,0,0,0,0,0,0,0,7, + 0,15,128,7,0,14,23,46,20,3,254,15,192,31,224,56, + 112,112,48,96,48,224,48,192,48,193,240,199,240,198,48,204, + 48,204,48,204,48,206,48,199,252,195,188,192,0,224,0,96, + 0,112,48,56,112,31,224,15,192,21,20,60,20,255,0,31, + 240,0,31,248,0,31,248,0,1,220,0,1,220,0,1,220, + 0,3,142,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,18,20,60,20,1, + 0,255,248,0,255,254,0,255,255,0,28,7,128,28,3,128, + 28,3,128,28,3,128,28,7,128,31,255,0,31,252,0,31, + 254,0,28,15,128,28,3,192,28,1,192,28,1,192,28,1, + 192,28,3,192,255,255,128,255,255,0,255,252,0,18,20,60, + 20,1,0,3,249,128,15,255,128,31,255,128,62,15,128,120, + 7,128,112,3,128,240,3,128,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,240,0,0, + 120,3,128,124,7,192,63,255,128,31,255,0,7,252,0,17, + 20,60,20,1,0,255,224,0,255,248,0,255,252,0,56,62, + 0,56,15,0,56,7,0,56,7,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 7,128,56,7,0,56,31,0,255,254,0,255,252,0,255,240, + 0,17,20,60,20,1,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,20,60,20,1,0,255,255,128,255,255,128,255, + 255,128,28,3,128,28,3,128,28,3,128,28,115,128,28,112, + 0,31,240,0,31,240,0,31,240,0,28,112,0,28,112,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,17,20,60,20,2,0,3,243,0,15,255, + 0,31,255,0,60,15,0,120,7,0,112,7,0,240,7,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,255,128,224, + 255,128,224,255,128,240,7,0,112,7,0,124,15,0,63,255, + 0,31,254,0,7,248,0,17,20,60,20,1,0,255,127,128, + 255,127,128,255,127,128,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,63,254,0,63,254,0,63,254,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 255,127,128,255,127,128,255,127,128,13,20,40,20,3,0,255, + 248,255,248,255,248,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,255,248,255,248,255,248,17,20,60,20,2,0,7,255,128, + 7,255,128,7,255,128,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,224,56,0,224,56, + 0,224,56,0,224,56,0,224,56,0,224,120,0,240,240,0, + 255,240,0,127,224,0,31,128,0,19,20,60,20,1,0,255, + 159,192,255,159,192,255,159,192,28,15,0,28,30,0,28,60, + 0,28,120,0,28,240,0,31,224,0,31,240,0,31,248,0, + 30,124,0,28,60,0,28,30,0,28,14,0,28,15,0,28, + 7,0,255,135,224,255,135,224,255,135,224,17,20,60,20,1, + 0,255,224,0,255,224,0,255,224,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,3,128,14,3,128,14,3,128,14,3,128,14,3, + 128,14,3,128,255,255,128,255,255,128,255,255,128,21,20,60, + 20,255,0,252,1,248,252,1,248,254,3,248,62,3,224,63, + 7,224,63,7,224,59,142,224,59,142,224,59,222,224,57,220, + 224,57,220,224,56,248,224,56,248,224,56,248,224,56,112,224, + 56,112,224,56,0,224,255,7,248,255,7,248,255,7,248,19, + 20,60,20,0,0,248,31,224,252,31,224,254,31,224,62,3, + 128,63,3,128,63,3,128,59,131,128,59,195,128,57,195,128, + 57,227,128,56,243,128,56,115,128,56,123,128,56,59,128,56, + 31,128,56,31,128,56,15,128,255,7,128,255,7,128,255,3, + 128,18,20,60,20,1,0,3,240,0,15,252,0,31,254,0, + 60,15,0,120,7,128,112,3,128,240,3,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,240,3, + 192,112,3,128,120,7,128,60,15,0,31,254,0,15,252,0, + 3,240,0,17,20,60,20,1,0,255,248,0,255,254,0,255, + 255,0,28,15,0,28,3,128,28,3,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,240,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,18,25,75,20,1,251,3,240,0,15,248, + 0,31,254,0,60,15,0,120,7,128,112,3,128,240,3,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,112,3,128,120,7,128,60,15,0,31,254, + 0,15,252,0,7,240,0,14,0,0,31,225,192,63,255,192, + 63,255,192,56,63,0,20,20,60,20,1,0,255,248,0,255, + 254,0,255,255,0,28,15,0,28,7,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,248,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,255, + 131,240,255,129,240,255,129,240,15,20,40,20,2,0,15,204, + 63,252,127,252,240,124,224,28,224,28,240,28,248,0,127,0, + 63,224,15,248,1,252,0,62,224,30,224,14,224,14,240,30, + 255,252,255,248,231,224,17,20,60,20,1,0,255,255,128,255, + 255,128,255,255,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,63, + 254,0,63,254,0,63,254,0,19,20,60,20,0,0,255,31, + 224,255,31,224,255,31,224,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,28,7,0,31,31, + 0,15,254,0,7,252,0,1,240,0,21,20,60,20,255,0, + 255,143,248,255,143,248,255,143,248,28,1,192,28,1,192,30, + 3,192,14,3,128,14,3,128,7,7,0,7,7,0,7,143, + 0,3,142,0,3,142,0,3,222,0,1,220,0,1,220,0, + 0,248,0,0,248,0,0,248,0,0,112,0,19,20,60,20, + 0,0,255,31,224,255,31,224,255,31,224,112,1,192,112,1, + 192,112,225,192,112,225,192,113,241,192,57,243,128,57,243,128, + 59,187,128,59,187,128,59,187,128,63,31,128,63,31,128,30, + 15,0,30,15,0,30,15,0,28,7,0,28,7,0,19,20, + 60,20,0,0,255,31,224,255,31,224,255,31,224,60,7,128, + 30,15,0,15,30,0,7,188,0,3,248,0,1,240,0,0, + 224,0,1,240,0,3,248,0,7,188,0,15,30,0,14,14, + 0,30,15,0,60,7,128,255,31,224,255,31,224,255,31,224, + 19,20,60,20,0,0,255,31,224,255,31,224,255,31,224,60, + 7,128,14,14,0,15,30,0,7,28,0,7,188,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,15,254,0,15,254,0,15, + 254,0,15,20,40,20,2,0,127,252,127,252,127,252,112,60, + 112,56,112,120,112,240,113,224,1,192,3,192,7,128,15,0, + 14,14,30,14,60,14,120,14,112,14,255,254,255,254,255,254, + 7,26,26,20,8,251,254,254,254,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,254,254,254, + 13,27,54,20,3,252,224,0,224,0,240,0,112,0,112,0, + 56,0,56,0,60,0,28,0,28,0,14,0,14,0,15,0, + 7,0,7,128,3,128,3,128,1,192,1,192,1,224,0,224, + 0,224,0,112,0,112,0,120,0,56,0,56,7,26,26,20, + 4,251,254,254,254,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,254,254,254,13,11,22,20, + 3,11,2,0,7,0,7,0,15,128,31,192,61,224,56,224, + 120,240,240,120,224,56,224,56,20,3,9,20,0,249,255,255, + 240,255,255,240,255,255,240,6,6,6,20,6,16,192,224,112, + 56,28,12,16,15,30,20,2,0,31,224,127,248,127,252,112, + 60,0,28,0,28,15,252,127,252,127,252,240,28,224,28,224, + 124,255,255,127,223,63,159,19,21,63,20,0,0,252,0,0, + 252,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 124,0,29,255,0,31,255,128,31,135,192,30,1,192,30,1, + 224,28,0,224,28,0,224,28,0,224,28,0,224,30,1,192, + 31,3,192,255,255,128,255,255,0,252,254,0,16,15,30,20, + 2,0,7,230,31,254,63,254,124,62,112,14,224,14,224,14, + 224,0,224,0,224,0,240,6,120,15,127,254,63,252,15,240, + 19,21,63,20,1,0,0,63,0,0,63,0,0,63,0,0, + 7,0,0,7,0,0,7,0,7,231,0,31,255,0,63,255, + 0,124,63,0,112,15,0,240,15,0,224,7,0,224,7,0, + 224,7,0,224,7,0,112,15,0,124,63,0,63,255,224,31, + 247,224,7,231,224,18,15,45,20,1,0,3,240,0,15,252, + 0,31,254,0,62,31,0,120,7,128,112,3,128,255,255,128, + 255,255,128,255,255,128,240,0,0,120,0,0,126,3,128,63, + 255,192,31,255,128,7,254,0,16,21,42,20,3,0,1,255, + 7,255,7,255,15,0,14,0,14,0,255,252,255,252,255,252, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,252,255,252,255,252,18,22,66,20,1,249,7,207, + 192,31,255,192,63,255,192,124,126,0,112,30,0,240,30,0, + 224,14,0,224,14,0,224,14,0,240,30,0,112,30,0,120, + 126,0,63,254,0,31,238,0,15,206,0,0,14,0,0,14, + 0,0,30,0,0,60,0,31,252,0,31,248,0,31,224,0, + 18,21,63,20,1,0,252,0,0,252,0,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,248,0,29,252,0,31,254, + 0,31,15,0,30,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,127,31,192,127, + 31,192,127,31,192,15,21,42,20,3,0,7,128,7,128,7, + 128,7,128,0,0,0,0,127,128,127,128,127,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255, + 254,255,254,255,254,12,28,56,20,3,249,3,192,3,192,3, + 192,3,192,0,0,0,0,255,240,255,240,255,240,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,240,255,224,255, + 192,255,128,17,21,63,20,1,0,252,0,0,252,0,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,255,0,28,255, + 0,28,255,0,28,120,0,28,240,0,29,224,0,31,192,0, + 31,192,0,31,224,0,29,240,0,28,248,0,28,124,0,252, + 63,128,252,63,128,252,63,128,15,21,42,20,3,0,127,128, + 127,128,127,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,255,254,255,254,255,254,20,15,45,20,1,0,243,143, + 0,255,255,128,255,255,192,120,241,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,112,225,192,112,225,192,112, + 225,192,252,249,240,252,249,240,252,249,240,17,15,45,20,2, + 0,249,240,0,251,248,0,255,252,0,62,30,0,60,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,254,63,128,254,63,128,254,63,128,17,15, + 45,20,2,0,7,240,0,31,252,0,63,254,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,240, + 7,128,112,7,0,120,15,0,63,254,0,31,252,0,7,240, + 0,19,22,66,20,0,249,252,124,0,253,255,0,255,255,128, + 31,3,192,30,1,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,1,224,30,1,192,31,7,192,31,255,128,29,254, + 0,28,120,0,28,0,0,28,0,0,28,0,0,28,0,0, + 255,192,0,255,192,0,255,192,0,19,22,66,20,1,249,7, + 231,224,31,255,224,63,255,224,124,63,0,112,15,0,240,15, + 0,224,7,0,224,7,0,224,7,0,240,15,0,112,15,0, + 124,63,0,63,255,0,31,247,0,7,199,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,127,224,0,127,224,0,127, + 224,17,15,45,20,2,0,126,62,0,126,255,0,127,255,128, + 15,199,0,15,2,0,15,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,255,252,0,255,252, + 0,255,252,0,15,15,30,20,3,0,15,236,63,252,63,252, + 120,60,112,28,120,0,127,192,63,248,15,252,224,62,224,14, + 248,30,255,252,255,248,231,224,16,20,40,20,2,0,28,0, + 28,0,28,0,28,0,28,0,255,252,255,252,255,252,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,6,30,31, + 31,255,15,254,3,240,18,15,45,20,1,0,252,63,0,252, + 63,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,30,31,0, + 31,255,192,15,255,192,7,247,192,19,15,45,20,0,0,255, + 31,224,255,31,224,255,31,224,60,7,0,28,7,0,30,14, + 0,14,14,0,15,28,0,7,28,0,7,184,0,3,184,0, + 3,240,0,1,240,0,1,224,0,0,224,0,19,15,45,20, + 0,0,254,15,224,254,15,224,254,15,224,56,227,128,56,227, + 128,57,243,128,61,247,128,29,247,0,31,191,0,31,31,0, + 31,31,0,15,30,0,14,14,0,14,14,0,14,14,0,17, + 15,45,20,1,0,254,63,128,254,63,128,254,63,128,60,28, + 0,30,56,0,15,112,0,7,224,0,3,224,0,3,240,0, + 7,120,0,14,60,0,28,30,0,254,63,128,254,63,128,254, + 63,128,19,22,66,20,1,249,255,31,224,255,31,224,255,31, + 224,60,3,128,28,7,0,30,7,0,14,14,0,15,14,0, + 7,28,0,7,156,0,3,184,0,3,248,0,1,240,0,1, + 240,0,0,224,0,0,224,0,1,192,0,1,192,0,3,128, + 0,127,240,0,127,240,0,127,240,0,13,15,30,20,4,0, + 255,248,255,248,255,248,224,240,225,224,227,192,7,128,15,0, + 30,0,60,0,120,56,240,56,255,248,255,248,255,248,9,26, + 52,20,5,251,7,128,15,128,15,128,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,60,0,248,0,248,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,31,128,15,128,7,128,3,26,26,20,8,251,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,9,26,52,20,5,251,240,0, + 248,0,248,0,60,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,30,0,15,128,15,128,31,128,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,252,0,248,0, + 240,0,15,7,14,20,2,6,12,0,63,14,127,142,247,222, + 227,252,225,248,0,96,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=17 h=27 x= 7 y= 8 dx=20 dy= 0 ascent=23 len=54 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =23 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24n[686] U8G_SECTION(".progmem.u8g_font_courB24n") = { + 0,30,44,249,245,21,0,0,0,0,42,57,0,23,251,21, + 0,15,14,28,20,3,7,3,128,3,128,3,128,3,128,99, + 140,251,190,127,252,31,240,15,224,15,224,30,240,60,120,120, + 60,48,24,17,17,51,20,1,1,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,255,255, + 128,255,255,128,255,255,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,7,10,10,20, + 5,251,30,30,60,60,56,112,112,224,224,192,15,3,6,20, + 2,8,255,254,255,254,255,254,5,4,4,20,7,0,112,248, + 248,112,13,27,54,20,3,252,0,56,0,56,0,120,0,112, + 0,112,0,224,0,224,1,224,1,192,1,192,3,128,3,128, + 7,128,7,0,15,0,14,0,14,0,28,0,28,0,60,0, + 56,0,56,0,112,0,112,0,240,0,224,0,224,0,13,21, + 42,20,3,0,15,128,63,224,127,240,112,112,240,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,240,120,112,112,127,240,63,224,15,128,13,21, + 42,20,4,0,3,0,15,0,127,0,255,0,255,0,103,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,255,248,255,248,255,248,14,21, + 42,20,2,0,7,192,31,240,63,248,120,60,112,28,112,28, + 112,28,0,28,0,56,0,120,0,240,1,224,3,192,7,128, + 15,0,30,0,60,0,120,0,255,252,255,252,255,252,15,21, + 42,20,2,0,7,224,31,240,127,248,120,60,112,28,0,28, + 0,28,0,60,7,248,7,240,7,248,0,124,0,28,0,14, + 0,14,0,14,0,30,224,60,255,252,255,248,63,224,14,21, + 42,20,2,0,0,240,1,240,1,240,3,240,7,240,7,112, + 15,112,14,112,30,112,28,112,56,112,120,112,112,112,255,252, + 255,252,255,252,0,112,0,112,3,252,3,252,3,252,15,21, + 42,20,2,0,63,252,63,252,63,252,56,0,56,0,56,0, + 56,0,63,224,63,248,63,252,56,124,0,30,0,14,0,14, + 0,14,0,14,64,30,240,60,255,248,127,248,31,224,14,21, + 42,20,3,0,1,248,7,248,15,248,31,0,60,0,120,0, + 112,0,112,0,227,192,239,240,255,240,248,120,240,60,224,28, + 224,28,240,28,112,60,120,120,127,248,63,240,15,192,14,21, + 42,20,2,0,255,252,255,252,255,252,224,60,224,56,224,56, + 0,56,0,120,0,112,0,112,0,240,0,224,0,224,1,224, + 1,192,1,192,3,192,3,128,7,128,7,0,7,0,14,21, + 42,20,3,0,15,128,63,224,127,240,112,112,224,56,224,56, + 224,56,112,112,127,240,63,224,63,240,124,248,240,60,224,28, + 224,28,224,28,224,28,248,124,127,248,63,240,15,192,14,21, + 42,20,3,0,15,128,63,224,127,240,120,240,240,120,224,56, + 224,60,224,60,224,60,240,124,120,252,63,220,63,156,15,60, + 0,56,0,120,0,112,97,240,255,224,255,128,126,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 6 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w=10 h=16 x=-2 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR08[2433] U8G_SECTION(".progmem.u8g_font_courR08") = { + 0,10,16,254,252,6,1,151,3,21,32,255,254,9,254,7, + 254,0,0,0,6,0,1,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,4,160,160,160,5,8,8, + 6,1,255,80,80,248,80,80,248,80,80,4,8,8,6,1, + 255,32,112,128,96,16,144,96,32,6,7,7,6,0,0,224, + 164,200,48,92,148,24,6,6,6,6,0,0,48,64,96,148, + 136,116,1,3,3,6,2,4,128,128,128,3,9,9,6,2, + 254,32,64,64,128,128,128,64,64,32,3,9,9,6,1,254, + 128,64,64,32,32,32,64,64,128,5,4,4,6,0,3,32, + 216,32,80,5,5,5,6,0,1,32,32,248,32,32,2,3, + 3,6,1,254,64,64,128,4,1,1,6,1,3,240,1,2, + 2,6,2,0,128,128,6,9,9,6,0,255,4,8,16,16, + 32,32,64,64,128,4,7,7,6,1,0,96,144,144,144,144, + 144,96,4,7,7,6,1,0,32,224,32,32,32,32,240,4, + 7,7,6,1,0,96,144,16,32,64,128,240,4,7,7,6, + 1,0,96,144,16,96,16,144,96,5,7,7,6,0,0,16, + 48,80,144,248,16,16,4,7,7,6,1,0,240,128,128,224, + 16,16,224,4,7,7,6,1,0,112,128,128,224,144,144,96, + 4,7,7,6,1,0,240,144,16,32,32,64,64,4,7,7, + 6,1,0,96,144,144,96,144,144,96,4,7,7,6,1,0, + 96,144,144,112,16,16,224,1,5,5,6,2,0,128,128,0, + 128,128,2,6,6,6,1,254,64,64,0,64,64,128,3,5, + 5,6,1,1,32,64,128,64,32,4,3,3,6,1,2,240, + 0,240,3,5,5,6,2,1,128,64,32,64,128,4,6,6, + 6,1,0,96,144,32,64,0,64,6,8,8,6,0,255,56, + 68,156,168,168,156,64,56,6,6,6,6,0,0,112,40,72, + 120,72,204,5,6,6,6,0,0,240,72,112,72,72,240,4, + 6,6,6,1,0,96,144,128,128,144,96,5,6,6,6,0, + 0,240,72,72,72,72,240,5,6,6,6,0,0,248,72,112, + 64,72,248,5,6,6,6,0,0,248,72,112,80,64,224,4, + 6,6,6,1,0,96,144,128,176,144,96,6,6,6,6,0, + 0,204,72,120,72,72,204,5,6,6,6,1,0,248,32,32, + 32,32,248,5,6,6,6,1,0,120,16,16,144,144,96,6, + 6,6,6,0,0,216,80,96,80,72,228,5,6,6,6,1, + 0,224,64,64,64,72,248,5,6,6,6,1,0,136,216,168, + 168,136,216,6,6,6,6,0,0,220,72,104,88,72,200,4, + 6,6,6,1,0,96,144,144,144,144,96,5,6,6,6,1, + 0,240,72,72,112,64,224,4,7,7,6,1,255,96,144,144, + 144,144,96,112,6,6,6,6,0,0,240,72,72,112,72,228, + 4,6,6,6,1,0,112,128,96,16,144,224,5,6,6,6, + 0,0,248,168,32,32,32,112,6,6,6,6,0,0,204,72, + 72,72,72,48,6,6,6,6,0,0,220,136,80,80,80,32, + 6,6,6,6,0,0,220,136,168,168,80,80,5,6,6,6, + 1,0,216,80,32,32,80,216,5,6,6,6,1,0,216,136, + 80,32,32,112,4,6,6,6,1,0,240,144,32,64,144,240, + 2,9,9,6,2,254,192,128,128,128,128,128,128,128,192,5, + 9,9,6,1,255,128,128,64,64,32,32,16,16,8,2,9, + 9,6,2,254,192,64,64,64,64,64,64,64,192,5,3,3, + 6,1,4,32,80,136,6,1,1,6,0,254,252,2,2,2, + 6,1,6,128,64,5,5,5,6,0,0,96,16,112,144,104, + 5,7,7,6,0,0,192,64,112,72,72,72,240,4,5,5, + 6,1,0,96,144,128,144,96,5,7,7,6,1,0,48,16, + 112,144,144,144,104,4,5,5,6,1,0,96,144,224,144,96, + 4,7,7,6,1,0,48,64,240,64,64,64,240,5,7,7, + 6,1,254,104,144,144,144,112,16,224,6,7,7,6,0,0, + 192,64,112,72,72,72,236,5,7,7,6,1,0,32,0,96, + 32,32,32,248,3,9,9,6,1,254,32,0,224,32,32,32, + 32,32,192,5,7,7,6,0,0,192,64,88,80,96,80,216, + 5,7,7,6,1,0,96,32,32,32,32,32,248,6,5,5, + 6,0,0,208,168,168,168,172,6,5,5,6,0,0,176,72, + 72,72,236,4,5,5,6,1,0,96,144,144,144,96,5,7, + 7,6,0,254,176,72,72,72,112,64,240,5,7,7,6,1, + 254,104,144,144,144,112,16,56,5,5,5,6,1,0,184,64, + 64,64,240,4,5,5,6,1,0,112,128,96,16,224,5,7, + 7,6,1,0,64,64,240,64,64,72,48,6,5,5,6,0, + 0,216,72,72,72,52,6,5,5,6,0,0,204,68,40,40, + 16,6,5,5,6,0,0,172,168,168,80,80,5,5,5,6, + 0,0,216,80,32,80,216,5,7,7,6,0,254,216,72,72, + 72,48,32,192,4,5,5,6,1,0,240,32,64,144,240,3, + 9,9,6,2,254,32,64,64,64,128,64,64,64,32,1,9, + 9,6,2,254,128,128,128,128,128,128,128,128,128,3,9,9, + 6,2,254,128,64,64,64,32,64,64,64,128,4,2,2,6, + 1,3,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,6,0,1,1,7,7,6,2, + 254,128,0,128,128,128,128,128,4,8,8,6,1,255,32,32, + 112,128,128,112,32,32,6,7,7,6,0,0,56,64,248,32, + 32,68,252,5,5,5,6,0,1,136,112,80,112,136,5,7, + 7,6,0,0,136,80,248,32,248,32,112,1,9,9,6,2, + 254,128,128,128,0,0,128,128,128,128,4,8,8,6,1,255, + 112,128,96,144,144,96,16,224,3,1,1,6,2,5,160,6, + 7,7,6,0,0,48,72,180,164,180,72,48,4,5,5,6, + 1,1,224,16,208,0,240,6,3,3,6,0,1,108,216,108, + 5,3,3,6,0,2,248,8,8,4,1,1,6,1,3,240, + 6,7,7,6,0,0,48,72,188,180,172,72,48,4,1,1, + 6,1,5,240,4,3,3,6,1,4,96,144,96,5,6,6, + 6,0,0,32,32,248,32,0,248,3,4,4,6,2,3,96, + 160,64,224,3,4,4,6,2,3,224,64,32,192,2,2,2, + 6,2,5,64,128,6,7,7,6,0,254,216,72,72,72,116, + 64,64,6,8,8,6,0,255,124,168,168,104,40,40,40,108, + 1,2,2,6,2,2,128,128,3,3,3,6,1,254,64,32, + 192,3,4,4,6,2,3,192,64,64,224,4,5,5,6,1, + 1,96,144,96,0,240,6,3,3,6,1,1,216,108,216,6, + 7,7,6,0,0,192,68,72,244,44,92,132,6,7,7,6, + 0,0,192,68,72,252,52,72,156,6,7,7,6,0,0,224, + 68,40,212,44,92,132,4,7,7,6,0,254,32,0,32,32, + 64,144,96,6,9,9,6,0,0,32,16,0,112,40,72,120, + 72,204,6,9,9,6,0,0,16,32,0,112,40,72,120,72, + 204,6,9,9,6,0,0,32,80,0,112,40,72,120,72,204, + 6,9,9,6,0,0,40,80,0,112,40,72,120,72,204,6, + 8,8,6,0,0,80,0,112,40,72,120,72,204,6,9,9, + 6,0,0,16,40,16,112,40,72,120,72,204,6,6,6,6, + 0,0,124,48,92,112,144,156,4,8,8,6,1,254,96,144, + 128,128,144,96,32,192,5,9,9,6,0,0,32,16,0,248, + 72,112,64,72,248,5,9,9,6,0,0,16,32,0,248,72, + 112,64,72,248,5,9,9,6,0,0,32,80,0,248,72,112, + 64,72,248,5,8,8,6,0,0,80,0,248,72,112,64,72, + 248,5,9,9,6,0,0,64,32,0,248,32,32,32,32,248, + 5,9,9,6,0,0,16,32,0,248,32,32,32,32,248,5, + 9,9,6,0,0,32,80,0,248,32,32,32,32,248,5,8, + 8,6,0,0,80,0,248,32,32,32,32,248,5,6,6,6, + 0,0,240,72,232,72,72,240,6,9,9,6,0,0,40,80, + 0,220,72,104,88,72,200,4,9,9,6,1,0,64,32,0, + 96,144,144,144,144,96,4,9,9,6,1,0,32,64,0,96, + 144,144,144,144,96,4,9,9,6,1,0,32,80,0,96,144, + 144,144,144,96,4,9,9,6,1,0,80,160,0,96,144,144, + 144,144,96,4,8,8,6,1,0,160,0,96,144,144,144,144, + 96,5,5,5,6,0,1,136,80,32,80,136,6,6,6,6, + 0,0,52,72,88,104,72,176,6,9,9,6,0,0,32,16, + 0,204,72,72,72,72,48,6,9,9,6,0,0,16,32,0, + 204,72,72,72,72,48,6,9,9,6,0,0,16,40,0,204, + 72,72,72,72,48,6,8,8,6,0,0,80,0,204,72,72, + 72,72,48,5,9,9,6,0,0,16,32,0,216,136,80,32, + 32,112,5,6,6,6,0,0,192,112,72,112,64,224,6,6, + 6,6,0,0,48,72,88,68,84,200,5,8,8,6,0,0, + 64,32,0,96,16,112,144,104,5,8,8,6,0,0,16,32, + 0,96,16,112,144,104,5,8,8,6,0,0,32,80,0,96, + 16,112,144,104,5,8,8,6,0,0,80,160,0,96,16,112, + 144,104,5,7,7,6,0,0,80,0,96,16,112,144,104,5, + 9,9,6,0,0,32,80,32,0,96,16,112,144,104,6,5, + 5,6,0,0,108,148,124,144,236,4,7,7,6,1,254,96, + 144,128,144,96,32,192,4,8,8,6,1,0,64,32,0,96, + 144,240,128,112,4,8,8,6,1,0,32,64,0,96,144,240, + 128,112,4,8,8,6,1,0,64,160,0,96,144,240,128,112, + 4,7,7,6,1,0,160,0,96,144,240,128,112,5,8,8, + 6,0,0,64,32,0,96,32,32,32,248,5,8,8,6,0, + 0,16,32,0,96,32,32,32,248,5,8,8,6,0,0,32, + 80,0,96,32,32,32,248,5,7,7,6,0,0,80,0,96, + 32,32,32,248,4,8,8,6,1,0,208,96,160,112,144,144, + 144,96,6,8,8,6,0,0,40,80,0,176,72,72,72,236, + 4,8,8,6,1,0,64,32,0,96,144,144,144,96,4,8, + 8,6,1,0,16,32,0,96,144,144,144,96,4,8,8,6, + 1,0,64,160,0,96,144,144,144,96,4,8,8,6,1,0, + 80,160,0,96,144,144,144,96,4,7,7,6,1,0,160,0, + 96,144,144,144,96,5,5,5,6,0,1,32,0,248,0,32, + 6,6,6,6,0,0,4,56,88,104,72,176,6,8,8,6, + 0,0,32,16,0,216,72,72,72,52,6,8,8,6,0,0, + 16,32,0,216,72,72,72,52,6,8,8,6,0,0,32,80, + 0,216,72,72,72,52,6,7,7,6,0,0,80,0,216,72, + 72,72,52,5,10,10,6,0,254,16,32,0,216,72,72,72, + 48,32,192,5,9,9,6,0,254,192,64,112,72,72,72,112, + 64,224,5,9,9,6,0,254,80,0,216,72,72,72,48,32, + 192}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 6 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w=10 h=16 x=-2 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR08r[1157] U8G_SECTION(".progmem.u8g_font_courR08r") = { + 0,10,16,254,252,6,1,151,3,21,32,127,254,8,254,7, + 254,0,0,0,6,0,1,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,4,160,160,160,5,8,8, + 6,1,255,80,80,248,80,80,248,80,80,4,8,8,6,1, + 255,32,112,128,96,16,144,96,32,6,7,7,6,0,0,224, + 164,200,48,92,148,24,6,6,6,6,0,0,48,64,96,148, + 136,116,1,3,3,6,2,4,128,128,128,3,9,9,6,2, + 254,32,64,64,128,128,128,64,64,32,3,9,9,6,1,254, + 128,64,64,32,32,32,64,64,128,5,4,4,6,0,3,32, + 216,32,80,5,5,5,6,0,1,32,32,248,32,32,2,3, + 3,6,1,254,64,64,128,4,1,1,6,1,3,240,1,2, + 2,6,2,0,128,128,6,9,9,6,0,255,4,8,16,16, + 32,32,64,64,128,4,7,7,6,1,0,96,144,144,144,144, + 144,96,4,7,7,6,1,0,32,224,32,32,32,32,240,4, + 7,7,6,1,0,96,144,16,32,64,128,240,4,7,7,6, + 1,0,96,144,16,96,16,144,96,5,7,7,6,0,0,16, + 48,80,144,248,16,16,4,7,7,6,1,0,240,128,128,224, + 16,16,224,4,7,7,6,1,0,112,128,128,224,144,144,96, + 4,7,7,6,1,0,240,144,16,32,32,64,64,4,7,7, + 6,1,0,96,144,144,96,144,144,96,4,7,7,6,1,0, + 96,144,144,112,16,16,224,1,5,5,6,2,0,128,128,0, + 128,128,2,6,6,6,1,254,64,64,0,64,64,128,3,5, + 5,6,1,1,32,64,128,64,32,4,3,3,6,1,2,240, + 0,240,3,5,5,6,2,1,128,64,32,64,128,4,6,6, + 6,1,0,96,144,32,64,0,64,6,8,8,6,0,255,56, + 68,156,168,168,156,64,56,6,6,6,6,0,0,112,40,72, + 120,72,204,5,6,6,6,0,0,240,72,112,72,72,240,4, + 6,6,6,1,0,96,144,128,128,144,96,5,6,6,6,0, + 0,240,72,72,72,72,240,5,6,6,6,0,0,248,72,112, + 64,72,248,5,6,6,6,0,0,248,72,112,80,64,224,4, + 6,6,6,1,0,96,144,128,176,144,96,6,6,6,6,0, + 0,204,72,120,72,72,204,5,6,6,6,1,0,248,32,32, + 32,32,248,5,6,6,6,1,0,120,16,16,144,144,96,6, + 6,6,6,0,0,216,80,96,80,72,228,5,6,6,6,1, + 0,224,64,64,64,72,248,5,6,6,6,1,0,136,216,168, + 168,136,216,6,6,6,6,0,0,220,72,104,88,72,200,4, + 6,6,6,1,0,96,144,144,144,144,96,5,6,6,6,1, + 0,240,72,72,112,64,224,4,7,7,6,1,255,96,144,144, + 144,144,96,112,6,6,6,6,0,0,240,72,72,112,72,228, + 4,6,6,6,1,0,112,128,96,16,144,224,5,6,6,6, + 0,0,248,168,32,32,32,112,6,6,6,6,0,0,204,72, + 72,72,72,48,6,6,6,6,0,0,220,136,80,80,80,32, + 6,6,6,6,0,0,220,136,168,168,80,80,5,6,6,6, + 1,0,216,80,32,32,80,216,5,6,6,6,1,0,216,136, + 80,32,32,112,4,6,6,6,1,0,240,144,32,64,144,240, + 2,9,9,6,2,254,192,128,128,128,128,128,128,128,192,5, + 9,9,6,1,255,128,128,64,64,32,32,16,16,8,2,9, + 9,6,2,254,192,64,64,64,64,64,64,64,192,5,3,3, + 6,1,4,32,80,136,6,1,1,6,0,254,252,2,2,2, + 6,1,6,128,64,5,5,5,6,0,0,96,16,112,144,104, + 5,7,7,6,0,0,192,64,112,72,72,72,240,4,5,5, + 6,1,0,96,144,128,144,96,5,7,7,6,1,0,48,16, + 112,144,144,144,104,4,5,5,6,1,0,96,144,224,144,96, + 4,7,7,6,1,0,48,64,240,64,64,64,240,5,7,7, + 6,1,254,104,144,144,144,112,16,224,6,7,7,6,0,0, + 192,64,112,72,72,72,236,5,7,7,6,1,0,32,0,96, + 32,32,32,248,3,9,9,6,1,254,32,0,224,32,32,32, + 32,32,192,5,7,7,6,0,0,192,64,88,80,96,80,216, + 5,7,7,6,1,0,96,32,32,32,32,32,248,6,5,5, + 6,0,0,208,168,168,168,172,6,5,5,6,0,0,176,72, + 72,72,236,4,5,5,6,1,0,96,144,144,144,96,5,7, + 7,6,0,254,176,72,72,72,112,64,240,5,7,7,6,1, + 254,104,144,144,144,112,16,56,5,5,5,6,1,0,184,64, + 64,64,240,4,5,5,6,1,0,112,128,96,16,224,5,7, + 7,6,1,0,64,64,240,64,64,72,48,6,5,5,6,0, + 0,216,72,72,72,52,6,5,5,6,0,0,204,68,40,40, + 16,6,5,5,6,0,0,172,168,168,80,80,5,5,5,6, + 0,0,216,80,32,80,216,5,7,7,6,0,254,216,72,72, + 72,48,32,192,4,5,5,6,1,0,240,32,64,144,240,3, + 9,9,6,2,254,32,64,64,64,128,64,64,64,32,1,9, + 9,6,2,254,128,128,128,128,128,128,128,128,128,3,9,9, + 6,2,254,128,64,64,64,32,64,64,64,128,4,2,2,6, + 1,3,80,160,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 4 y= 8 dx= 9 dy= 0 ascent=12 len=24 + Font Bounding box w=14 h=20 x=-3 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR10[3052] U8G_SECTION(".progmem.u8g_font_courR10") = { + 0,14,20,253,251,9,1,224,3,220,32,255,253,12,253,10, + 253,0,0,0,9,0,1,1,9,9,9,3,0,128,128,128, + 128,128,128,0,128,128,4,4,4,9,2,6,144,144,144,144, + 5,10,10,9,2,255,80,80,80,248,80,80,248,80,80,80, + 5,13,13,9,2,254,32,32,120,136,128,192,48,8,136,240, + 32,32,32,8,10,10,9,0,0,96,144,144,115,12,48,204, + 18,18,12,6,8,8,9,1,0,56,64,64,64,168,144,152, + 100,1,4,4,9,3,5,128,128,128,128,3,12,12,9,3, + 254,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 9,2,254,128,64,64,32,32,32,32,32,32,64,64,128,5, + 6,6,9,1,3,32,32,248,32,80,136,7,7,7,9,1, + 1,16,16,16,254,16,16,16,3,4,4,9,2,254,96,96, + 192,128,6,1,1,9,1,4,252,2,2,2,9,3,0,192, + 192,6,11,11,9,1,255,4,8,8,16,16,32,32,64,64, + 128,128,6,10,10,9,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,9,1,0,32,96,160,32,32,32,32,32, + 32,248,5,10,10,9,1,0,112,136,136,8,16,32,64,128, + 136,248,6,10,10,9,1,0,56,68,4,4,24,4,4,4, + 132,120,6,10,10,9,1,0,24,40,40,72,72,136,136,252, + 8,28,6,10,10,9,1,0,124,64,64,64,120,4,4,4, + 132,120,6,10,10,9,1,0,56,64,128,128,184,196,132,132, + 68,56,6,10,10,9,1,0,252,132,4,8,8,8,16,16, + 16,16,5,10,10,9,2,0,112,136,136,136,112,136,136,136, + 136,112,6,10,10,9,1,0,112,136,132,132,140,116,4,4, + 8,112,2,7,7,9,3,0,192,192,0,0,0,192,192,3, + 9,9,9,2,254,96,96,0,0,0,96,96,192,128,7,7, + 7,9,0,1,6,24,96,128,96,24,6,7,3,3,9,1, + 3,254,0,254,7,7,7,9,1,1,192,48,12,2,12,48, + 192,5,9,9,9,1,0,112,136,8,8,48,32,0,32,32, + 7,10,10,9,1,255,56,68,132,156,164,164,158,128,64,56, + 9,9,18,9,255,0,56,0,8,0,20,0,20,0,34,0, + 62,0,65,0,65,0,247,128,7,9,9,9,0,0,252,66, + 66,66,124,66,66,66,252,7,9,9,9,1,0,58,70,130, + 128,128,128,128,66,60,8,9,9,9,0,0,252,66,65,65, + 65,65,65,66,252,7,9,9,9,1,0,254,66,66,72,120, + 72,66,66,254,7,9,9,9,1,0,254,66,66,72,120,72, + 64,64,240,8,9,9,9,0,0,58,70,130,128,128,143,130, + 66,60,8,9,9,9,0,0,231,66,66,66,126,66,66,66, + 231,5,9,9,9,2,0,248,32,32,32,32,32,32,32,248, + 7,9,9,9,1,0,62,8,8,8,8,136,136,136,112,8, + 9,9,9,0,0,238,68,72,80,112,72,68,68,227,8,9, + 9,9,0,0,248,32,32,32,32,33,33,33,255,9,9,18, + 9,0,0,227,128,99,0,85,0,85,0,73,0,73,0,65, + 0,65,0,227,128,8,9,9,9,0,0,231,98,82,82,74, + 74,70,70,226,8,9,9,9,0,0,60,66,129,129,129,129, + 129,66,60,7,9,9,9,1,0,252,66,66,66,66,124,64, + 64,240,8,11,11,9,0,254,60,66,129,129,129,129,129,66, + 60,49,94,8,9,9,9,0,0,252,66,66,66,68,120,68, + 66,225,6,9,9,9,1,0,116,140,132,128,120,4,132,196, + 184,7,9,9,9,1,0,254,146,146,16,16,16,16,16,124, + 8,9,9,9,0,0,231,66,66,66,66,66,66,66,60,9, + 9,18,9,0,0,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,9,9,18,9,0,0,227,128,65, + 0,73,0,73,0,85,0,85,0,34,0,34,0,34,0,8, + 9,9,9,0,0,231,66,36,36,24,36,36,66,231,7,9, + 9,9,0,0,238,68,68,40,40,16,16,16,124,6,9,9, + 9,1,0,252,132,136,16,32,32,68,132,252,3,12,12,9, + 3,254,224,128,128,128,128,128,128,128,128,128,128,224,6,11, + 11,9,1,255,128,64,64,32,32,16,16,8,8,4,4,3, + 12,12,9,2,254,224,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,9,2,4,32,80,80,136,136,9,1,2,9, + 0,253,255,128,4,2,2,9,2,8,192,48,7,7,7,9, + 1,0,120,132,4,124,132,132,122,8,10,10,9,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,9,1,0,58, + 70,130,128,128,66,60,8,10,10,9,0,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,9,1,0,56,68,130,254, + 128,66,60,7,10,10,9,1,0,30,32,32,252,32,32,32, + 32,32,248,8,10,10,9,0,253,59,70,130,130,130,70,58, + 2,4,120,8,10,10,9,0,0,192,64,64,92,98,66,66, + 66,66,231,5,10,10,9,2,0,32,32,0,224,32,32,32, + 32,32,248,5,13,13,9,1,253,8,8,0,248,8,8,8, + 8,8,8,8,16,224,7,10,10,9,1,0,192,64,64,78, + 72,80,96,80,72,206,5,10,10,9,2,0,224,32,32,32, + 32,32,32,32,32,248,9,7,14,9,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,9,0,0, + 220,98,66,66,66,66,231,8,7,7,9,0,0,60,66,129, + 129,129,66,60,8,10,10,9,0,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,9,0,253,59,70,130,130,130,70, + 58,2,2,15,7,7,7,9,1,0,204,82,96,64,64,64, + 248,6,7,7,9,1,0,124,132,128,120,4,132,248,7,9, + 9,9,0,0,32,32,252,32,32,32,32,34,28,8,7,7, + 9,0,0,198,66,66,66,66,70,59,8,7,7,9,0,0, + 231,66,66,36,36,24,24,9,7,14,9,0,0,227,128,65, + 0,73,0,73,0,42,0,54,0,34,0,7,7,7,9,0, + 0,238,68,40,16,40,68,238,8,10,10,9,0,253,231,66, + 66,36,36,24,8,16,16,120,5,7,7,9,2,0,248,136, + 16,32,64,136,248,3,12,12,9,2,254,32,64,64,64,64, + 128,64,64,64,64,64,32,1,11,11,9,3,254,128,128,128, + 128,128,128,128,128,128,128,128,3,12,12,9,2,254,128,64, + 64,64,64,32,64,64,64,64,64,128,6,2,2,9,1,3, + 100,152,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,9,0,1,1,9,9,9,4,254,128, + 128,0,128,128,128,128,128,128,5,9,9,9,2,0,32,32, + 120,136,128,136,112,32,32,7,9,9,9,1,0,24,36,32, + 32,120,32,32,66,252,6,6,6,9,1,1,180,72,132,132, + 72,180,7,9,9,9,1,0,238,68,68,40,124,16,124,16, + 56,1,11,11,9,3,254,128,128,128,128,0,0,128,128,128, + 128,128,6,10,10,9,1,255,60,68,64,240,136,68,60,8, + 136,240,5,1,1,9,2,8,216,8,9,9,9,0,0,60, + 66,153,165,161,165,153,66,60,4,6,6,9,2,3,192,32, + 224,176,0,240,8,7,7,9,0,0,17,34,68,204,68,34, + 17,7,3,3,9,1,3,254,2,2,6,1,1,9,1,4, + 252,8,9,9,9,0,0,60,66,185,165,185,169,165,66,60, + 4,1,1,9,2,8,240,4,4,4,9,2,6,96,144,144, + 96,7,7,7,9,1,1,16,16,254,16,16,0,254,4,6, + 6,9,2,4,96,144,16,32,64,240,4,6,6,9,2,4, + 96,144,96,16,144,96,4,2,2,9,2,8,48,192,8,10, + 10,9,0,253,198,66,66,66,66,70,123,64,64,64,7,10, + 10,9,1,255,126,148,148,148,116,20,20,20,20,62,2,2, + 2,9,3,3,192,192,3,3,3,9,2,253,64,32,224,3, + 6,6,9,3,4,64,192,64,64,64,224,4,6,6,9,2, + 3,96,144,144,96,0,240,8,7,7,9,0,0,136,68,34, + 51,34,68,136,10,10,20,9,255,0,64,0,193,0,66,0, + 68,0,68,128,233,128,18,128,20,128,39,192,64,128,10,10, + 20,9,255,0,64,0,193,0,66,0,68,0,69,128,234,64, + 16,64,16,128,33,0,67,192,10,10,20,9,255,0,96,0, + 145,0,98,0,20,0,148,128,105,128,18,128,20,128,39,192, + 64,128,5,9,9,9,2,254,32,32,0,32,96,128,128,136, + 112,9,12,24,9,0,0,48,0,12,0,0,0,56,0,8, + 0,20,0,20,0,34,0,62,0,65,0,65,0,247,128,9, + 12,24,9,0,0,12,0,48,0,0,0,56,0,8,0,20, + 0,20,0,34,0,62,0,65,0,65,0,247,128,9,12,24, + 9,0,0,8,0,20,0,0,0,56,0,8,0,20,0,20, + 0,34,0,62,0,65,0,65,0,247,128,9,12,24,9,0, + 0,26,0,44,0,0,0,56,0,8,0,20,0,20,0,34, + 0,62,0,65,0,65,0,247,128,9,11,22,9,0,0,54, + 0,0,0,56,0,8,0,20,0,20,0,34,0,62,0,65, + 0,65,0,247,128,9,12,24,9,0,0,24,0,36,0,24, + 0,56,0,8,0,20,0,20,0,34,0,62,0,65,0,65, + 0,247,128,9,9,18,9,255,0,31,128,12,128,20,0,20, + 128,39,128,60,128,68,0,68,128,239,128,7,12,12,9,1, + 253,58,70,130,128,128,128,128,66,60,16,8,56,7,12,12, + 9,1,0,96,24,0,254,66,66,72,120,72,66,66,254,7, + 12,12,9,1,0,12,48,0,254,66,66,72,120,72,66,66, + 254,7,12,12,9,1,0,16,40,0,254,66,66,72,120,72, + 66,66,254,7,11,11,9,1,0,108,0,254,66,66,72,120, + 72,66,66,254,5,12,12,9,2,0,192,48,0,248,32,32, + 32,32,32,32,32,248,5,12,12,9,2,0,24,96,0,248, + 32,32,32,32,32,32,32,248,5,12,12,9,2,0,32,80, + 0,248,32,32,32,32,32,32,32,248,5,11,11,9,2,0, + 216,0,248,32,32,32,32,32,32,32,248,8,9,9,9,0, + 0,252,66,65,65,241,65,65,66,252,8,12,12,9,0,0, + 26,44,0,231,98,82,82,74,74,70,70,226,8,12,12,9, + 0,0,48,12,0,60,66,129,129,129,129,129,66,60,8,12, + 12,9,0,0,12,48,0,60,66,129,129,129,129,129,66,60, + 8,12,12,9,0,0,16,40,0,60,66,129,129,129,129,129, + 66,60,8,12,12,9,0,0,26,44,0,60,66,129,129,129, + 129,129,66,60,8,11,11,9,0,0,102,0,60,66,129,129, + 129,129,129,66,60,7,7,7,9,1,1,130,68,40,16,40, + 68,130,9,9,18,9,255,0,30,128,33,0,66,128,68,128, + 72,128,80,128,32,128,97,0,158,0,8,12,12,9,0,0, + 48,12,0,231,66,66,66,66,66,66,66,60,8,12,12,9, + 0,0,12,48,0,231,66,66,66,66,66,66,66,60,8,12, + 12,9,0,0,16,40,0,231,66,66,66,66,66,66,66,60, + 8,11,11,9,0,0,102,0,231,66,66,66,66,66,66,66, + 60,7,12,12,9,1,0,12,48,0,238,68,68,40,40,16, + 16,16,124,7,9,9,9,0,0,224,64,124,66,66,66,124, + 64,224,7,9,9,9,0,0,56,68,68,88,68,66,66,82, + 204,7,10,10,9,1,0,96,24,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,24,96,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,16,40,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,52,88,0,120,132,4,124,132,140, + 118,7,9,9,9,1,0,108,0,120,132,4,124,132,140,118, + 7,10,10,9,1,0,48,72,48,120,132,4,124,132,140,118, + 8,7,7,9,0,0,118,137,9,127,136,137,118,7,10,10, + 9,1,253,58,70,130,128,128,66,60,16,8,56,7,10,10, + 9,1,0,96,24,0,56,68,130,254,128,66,60,7,10,10, + 9,1,0,12,48,0,56,68,130,254,128,66,60,7,10,10, + 9,1,0,16,40,0,56,68,130,254,128,66,60,7,9,9, + 9,1,0,108,0,56,68,130,254,128,66,60,5,10,10,9, + 2,0,192,48,0,224,32,32,32,32,32,248,5,10,10,9, + 2,0,48,192,0,224,32,32,32,32,32,248,5,10,10,9, + 2,0,32,80,0,224,32,32,32,32,32,248,5,9,9,9, + 2,0,216,0,224,32,32,32,32,32,248,8,12,12,9,0, + 0,2,228,24,40,68,60,66,129,129,129,66,60,8,10,10, + 9,0,0,26,44,0,220,98,66,66,66,66,231,8,10,10, + 9,0,0,48,12,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,12,48,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,16,40,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,26,44,0,60,66,129,129,129,66,60,8,9,9, + 9,0,0,108,0,60,66,129,129,129,66,60,8,7,7,9, + 0,1,24,24,0,255,0,24,24,8,7,7,9,0,0,61, + 70,137,145,161,66,188,8,10,10,9,0,0,48,12,0,198, + 66,66,66,66,70,59,8,10,10,9,0,0,12,48,0,198, + 66,66,66,66,70,59,8,10,10,9,0,0,16,40,0,198, + 66,66,66,66,70,59,8,9,9,9,0,0,108,0,198,66, + 66,66,66,70,59,8,13,13,9,0,253,6,24,0,231,66, + 66,36,36,24,8,16,16,120,8,12,12,9,0,253,192,64, + 92,98,65,65,65,98,92,64,64,240,8,12,12,9,0,253, + 54,0,231,66,66,36,36,24,8,16,16,120}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w= 9 h=13 x= 3 y= 8 dx= 9 dy= 0 ascent=11 len=18 + Font Bounding box w=14 h=20 x=-3 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR10r[1443] U8G_SECTION(".progmem.u8g_font_courR10r") = { + 0,14,20,253,251,9,1,224,3,220,32,127,253,11,253,10, + 253,0,0,0,9,0,1,1,9,9,9,3,0,128,128,128, + 128,128,128,0,128,128,4,4,4,9,2,6,144,144,144,144, + 5,10,10,9,2,255,80,80,80,248,80,80,248,80,80,80, + 5,13,13,9,2,254,32,32,120,136,128,192,48,8,136,240, + 32,32,32,8,10,10,9,0,0,96,144,144,115,12,48,204, + 18,18,12,6,8,8,9,1,0,56,64,64,64,168,144,152, + 100,1,4,4,9,3,5,128,128,128,128,3,12,12,9,3, + 254,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 9,2,254,128,64,64,32,32,32,32,32,32,64,64,128,5, + 6,6,9,1,3,32,32,248,32,80,136,7,7,7,9,1, + 1,16,16,16,254,16,16,16,3,4,4,9,2,254,96,96, + 192,128,6,1,1,9,1,4,252,2,2,2,9,3,0,192, + 192,6,11,11,9,1,255,4,8,8,16,16,32,32,64,64, + 128,128,6,10,10,9,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,9,1,0,32,96,160,32,32,32,32,32, + 32,248,5,10,10,9,1,0,112,136,136,8,16,32,64,128, + 136,248,6,10,10,9,1,0,56,68,4,4,24,4,4,4, + 132,120,6,10,10,9,1,0,24,40,40,72,72,136,136,252, + 8,28,6,10,10,9,1,0,124,64,64,64,120,4,4,4, + 132,120,6,10,10,9,1,0,56,64,128,128,184,196,132,132, + 68,56,6,10,10,9,1,0,252,132,4,8,8,8,16,16, + 16,16,5,10,10,9,2,0,112,136,136,136,112,136,136,136, + 136,112,6,10,10,9,1,0,112,136,132,132,140,116,4,4, + 8,112,2,7,7,9,3,0,192,192,0,0,0,192,192,3, + 9,9,9,2,254,96,96,0,0,0,96,96,192,128,7,7, + 7,9,0,1,6,24,96,128,96,24,6,7,3,3,9,1, + 3,254,0,254,7,7,7,9,1,1,192,48,12,2,12,48, + 192,5,9,9,9,1,0,112,136,8,8,48,32,0,32,32, + 7,10,10,9,1,255,56,68,132,156,164,164,158,128,64,56, + 9,9,18,9,255,0,56,0,8,0,20,0,20,0,34,0, + 62,0,65,0,65,0,247,128,7,9,9,9,0,0,252,66, + 66,66,124,66,66,66,252,7,9,9,9,1,0,58,70,130, + 128,128,128,128,66,60,8,9,9,9,0,0,252,66,65,65, + 65,65,65,66,252,7,9,9,9,1,0,254,66,66,72,120, + 72,66,66,254,7,9,9,9,1,0,254,66,66,72,120,72, + 64,64,240,8,9,9,9,0,0,58,70,130,128,128,143,130, + 66,60,8,9,9,9,0,0,231,66,66,66,126,66,66,66, + 231,5,9,9,9,2,0,248,32,32,32,32,32,32,32,248, + 7,9,9,9,1,0,62,8,8,8,8,136,136,136,112,8, + 9,9,9,0,0,238,68,72,80,112,72,68,68,227,8,9, + 9,9,0,0,248,32,32,32,32,33,33,33,255,9,9,18, + 9,0,0,227,128,99,0,85,0,85,0,73,0,73,0,65, + 0,65,0,227,128,8,9,9,9,0,0,231,98,82,82,74, + 74,70,70,226,8,9,9,9,0,0,60,66,129,129,129,129, + 129,66,60,7,9,9,9,1,0,252,66,66,66,66,124,64, + 64,240,8,11,11,9,0,254,60,66,129,129,129,129,129,66, + 60,49,94,8,9,9,9,0,0,252,66,66,66,68,120,68, + 66,225,6,9,9,9,1,0,116,140,132,128,120,4,132,196, + 184,7,9,9,9,1,0,254,146,146,16,16,16,16,16,124, + 8,9,9,9,0,0,231,66,66,66,66,66,66,66,60,9, + 9,18,9,0,0,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,9,9,18,9,0,0,227,128,65, + 0,73,0,73,0,85,0,85,0,34,0,34,0,34,0,8, + 9,9,9,0,0,231,66,36,36,24,36,36,66,231,7,9, + 9,9,0,0,238,68,68,40,40,16,16,16,124,6,9,9, + 9,1,0,252,132,136,16,32,32,68,132,252,3,12,12,9, + 3,254,224,128,128,128,128,128,128,128,128,128,128,224,6,11, + 11,9,1,255,128,64,64,32,32,16,16,8,8,4,4,3, + 12,12,9,2,254,224,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,9,2,4,32,80,80,136,136,9,1,2,9, + 0,253,255,128,4,2,2,9,2,8,192,48,7,7,7,9, + 1,0,120,132,4,124,132,132,122,8,10,10,9,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,9,1,0,58, + 70,130,128,128,66,60,8,10,10,9,0,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,9,1,0,56,68,130,254, + 128,66,60,7,10,10,9,1,0,30,32,32,252,32,32,32, + 32,32,248,8,10,10,9,0,253,59,70,130,130,130,70,58, + 2,4,120,8,10,10,9,0,0,192,64,64,92,98,66,66, + 66,66,231,5,10,10,9,2,0,32,32,0,224,32,32,32, + 32,32,248,5,13,13,9,1,253,8,8,0,248,8,8,8, + 8,8,8,8,16,224,7,10,10,9,1,0,192,64,64,78, + 72,80,96,80,72,206,5,10,10,9,2,0,224,32,32,32, + 32,32,32,32,32,248,9,7,14,9,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,9,0,0, + 220,98,66,66,66,66,231,8,7,7,9,0,0,60,66,129, + 129,129,66,60,8,10,10,9,0,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,9,0,253,59,70,130,130,130,70, + 58,2,2,15,7,7,7,9,1,0,204,82,96,64,64,64, + 248,6,7,7,9,1,0,124,132,128,120,4,132,248,7,9, + 9,9,0,0,32,32,252,32,32,32,32,34,28,8,7,7, + 9,0,0,198,66,66,66,66,70,59,8,7,7,9,0,0, + 231,66,66,36,36,24,24,9,7,14,9,0,0,227,128,65, + 0,73,0,73,0,42,0,54,0,34,0,7,7,7,9,0, + 0,238,68,40,16,40,68,238,8,10,10,9,0,253,231,66, + 66,36,36,24,8,16,16,120,5,7,7,9,2,0,248,136, + 16,32,64,136,248,3,12,12,9,2,254,32,64,64,64,64, + 128,64,64,64,64,64,32,1,11,11,9,3,254,128,128,128, + 128,128,128,128,128,128,128,128,3,12,12,9,2,254,128,64, + 64,64,64,32,64,64,64,64,64,128,6,2,2,9,1,3, + 100,152,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=14 x= 4 y= 8 dx=10 dy= 0 ascent=14 len=28 + Font Bounding box w=15 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR12[3471] U8G_SECTION(".progmem.u8g_font_courR12") = { + 0,15,24,253,250,10,2,12,4,92,32,255,253,14,253,11, + 253,0,0,0,10,0,1,1,11,11,10,4,0,128,128,128, + 128,128,128,128,128,0,128,128,4,5,5,10,3,6,144,144, + 144,144,144,7,12,12,10,1,255,40,40,40,40,254,40,40, + 254,40,40,40,40,5,13,13,10,2,255,32,32,120,136,128, + 128,112,8,8,136,240,32,32,7,11,11,10,1,0,112,136, + 136,112,6,56,192,28,34,34,28,6,9,9,10,1,0,48, + 72,64,32,100,148,136,136,116,1,5,5,10,4,6,128,128, + 128,128,128,3,13,13,10,4,254,32,64,64,64,128,128,128, + 128,128,64,64,64,32,3,13,13,10,2,254,128,64,64,64, + 32,32,32,32,32,64,64,64,128,7,6,6,10,1,5,16, + 16,254,56,40,68,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,3,4,4,10,2,254,96,96,64,128,7,1, + 1,10,1,4,254,2,2,2,10,3,0,192,192,6,13,13, + 10,2,254,4,4,8,8,16,16,16,32,32,64,64,128,128, + 7,11,11,10,1,0,56,68,68,130,130,130,130,130,68,68, + 56,7,11,11,10,1,0,16,48,208,16,16,16,16,16,16, + 16,254,7,11,11,10,1,0,56,68,130,2,2,4,8,16, + 32,66,254,7,11,11,10,1,0,56,68,130,4,24,4,2, + 2,130,68,56,7,11,11,10,1,0,12,12,20,36,36,68, + 132,254,4,4,30,7,11,11,10,1,0,126,64,64,64,120, + 68,2,2,130,68,56,7,11,11,10,2,0,28,96,64,128, + 184,196,130,130,130,68,56,6,11,11,10,1,0,252,132,4, + 8,8,8,16,16,16,32,32,6,11,11,10,2,0,48,72, + 132,132,120,72,132,132,132,72,48,7,11,11,10,1,0,56, + 68,130,130,70,58,2,2,4,12,112,2,7,7,10,3,0, + 192,192,0,0,0,192,192,3,9,9,10,2,254,96,96,0, + 0,0,96,96,64,128,8,9,9,10,1,0,1,6,24,96, + 128,96,24,6,1,8,4,4,10,1,3,255,0,0,255,8, + 9,9,10,1,0,128,96,24,6,1,6,24,96,128,6,10, + 10,10,2,0,120,132,132,4,24,32,32,0,32,32,9,12, + 24,10,0,255,62,0,65,0,65,0,128,128,156,128,164,128, + 164,128,164,128,159,0,64,0,65,0,62,0,9,10,20,10, + 0,0,120,0,20,0,20,0,34,0,34,0,34,0,62,0, + 65,0,65,0,227,128,8,10,10,10,1,0,252,66,65,66, + 124,66,65,65,66,252,8,10,10,10,1,0,29,99,65,128, + 128,128,128,65,99,28,8,10,10,10,1,0,248,70,66,65, + 65,65,65,66,70,248,7,10,10,10,1,0,254,66,66,72, + 120,72,64,66,66,254,7,10,10,10,1,0,254,66,66,72, + 120,72,64,64,64,240,9,10,20,10,1,0,29,0,99,0, + 65,0,128,0,128,0,135,128,129,0,65,0,97,0,30,0, + 8,10,10,10,1,0,231,66,66,66,126,66,66,66,66,231, + 7,10,10,10,1,0,254,16,16,16,16,16,16,16,16,254, + 8,10,10,10,1,0,63,4,4,4,4,4,132,132,132,120, + 8,10,10,10,1,0,247,66,68,72,80,120,68,68,66,243, + 8,10,10,10,1,0,248,32,32,32,32,32,33,33,33,255, + 9,10,20,10,0,0,193,128,99,0,99,0,85,0,85,0, + 73,0,73,0,65,0,65,0,227,128,9,10,20,10,0,0, + 231,128,97,0,81,0,81,0,73,0,73,0,69,0,69,0, + 67,0,243,0,8,10,10,10,1,0,60,66,66,129,129,129, + 129,66,66,60,8,10,10,10,1,0,252,66,65,65,66,124, + 64,64,64,248,8,12,12,10,1,254,60,66,66,129,129,129, + 129,66,66,60,17,46,8,10,10,10,1,0,248,68,66,66, + 68,120,68,66,66,243,7,10,10,10,1,0,58,70,130,128, + 112,12,2,130,196,184,7,10,10,10,1,0,254,146,146,146, + 16,16,16,16,16,124,9,10,20,10,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,10,20,10,0,0,227,128,65,0,65,0,34,0,34,0, + 34,0,20,0,20,0,8,0,8,0,9,10,20,10,0,0, + 247,128,65,0,73,0,73,0,85,0,85,0,85,0,34,0, + 34,0,34,0,9,10,20,10,0,0,227,128,65,0,34,0, + 20,0,8,0,8,0,20,0,34,0,65,0,227,128,9,10, + 20,10,0,0,227,128,65,0,34,0,34,0,20,0,8,0, + 8,0,8,0,8,0,62,0,7,10,10,10,1,0,254,130, + 132,8,16,16,32,66,130,254,3,13,13,10,4,254,224,128, + 128,128,128,128,128,128,128,128,128,128,224,6,13,13,10,2, + 254,128,128,64,64,32,32,32,16,16,8,8,4,4,3,13, + 13,10,2,254,224,32,32,32,32,32,32,32,32,32,32,32, + 224,7,4,4,10,1,7,16,40,68,130,10,1,2,10,0, + 253,255,192,3,3,3,10,2,8,128,64,32,7,7,7,10, + 1,0,56,68,4,124,132,132,122,8,10,10,10,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,10,1,0,58, + 70,130,128,128,66,60,8,10,10,10,1,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,10,1,0,56,68,130,254, + 128,66,60,7,10,10,10,2,0,28,34,32,252,32,32,32, + 32,32,252,8,10,10,10,1,253,59,70,130,130,130,70,58, + 2,2,60,8,10,10,10,1,0,192,64,64,92,98,66,66, + 66,66,231,7,10,10,10,1,0,16,16,0,112,16,16,16, + 16,16,254,5,13,13,10,2,253,16,16,0,248,8,8,8, + 8,8,8,8,8,240,8,10,10,10,1,0,192,64,64,79, + 68,72,112,72,68,207,7,10,10,10,1,0,112,16,16,16, + 16,16,16,16,16,254,9,7,14,10,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,10,1,0, + 220,98,66,66,66,66,231,7,7,7,10,1,0,56,68,130, + 130,130,68,56,8,10,10,10,1,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,10,1,253,59,70,130,130,130,70, + 58,2,2,15,8,7,7,10,1,0,238,49,32,32,32,32, + 252,6,7,7,10,2,0,124,132,128,120,4,132,248,8,9, + 9,10,0,0,32,32,254,32,32,32,32,33,30,8,7,7, + 10,1,0,198,66,66,66,66,70,59,9,7,14,10,0,0, + 247,128,65,0,34,0,34,0,20,0,20,0,8,0,9,7, + 14,10,0,0,227,128,65,0,73,0,42,0,42,0,54,0, + 34,0,7,7,7,10,1,0,238,68,40,16,40,68,238,9, + 10,20,10,0,253,227,128,65,0,34,0,34,0,20,0,20, + 0,8,0,8,0,16,0,120,0,6,7,7,10,2,0,252, + 136,16,32,64,132,252,3,13,13,10,3,254,32,64,64,64, + 64,64,128,64,64,64,64,64,32,1,12,12,10,4,254,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,10,3, + 254,128,64,64,64,64,64,32,64,64,64,64,64,128,7,3, + 3,10,1,3,96,146,12,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,10,0,1,1,10, + 10,10,4,253,128,128,0,128,128,128,128,128,128,128,5,10, + 10,10,2,0,32,32,120,136,128,128,136,112,32,32,8,10, + 10,10,1,0,28,34,32,32,248,32,32,32,65,255,7,7, + 7,10,1,1,130,124,68,68,68,124,130,9,10,20,10,0, + 0,227,128,65,0,34,0,34,0,20,0,62,0,8,0,62, + 0,8,0,62,0,1,12,12,10,4,254,128,128,128,128,128, + 0,0,128,128,128,128,128,9,12,24,10,0,255,31,0,33, + 0,33,0,112,0,140,0,131,0,96,128,24,128,7,0,66, + 0,66,0,124,0,4,2,2,10,3,8,144,144,10,10,20, + 10,0,0,30,0,33,0,64,128,142,64,144,64,144,64,142, + 64,64,128,33,0,30,0,5,7,7,10,2,3,112,8,120, + 136,120,0,248,7,7,7,10,1,0,18,36,72,144,72,36, + 18,7,4,4,10,1,2,254,2,2,2,7,1,1,10,1, + 4,254,10,10,20,10,0,0,30,0,33,0,64,128,156,64, + 146,64,156,64,146,64,64,128,33,0,30,0,5,1,1,10, + 2,8,248,5,5,5,10,2,6,112,136,136,136,112,7,9, + 9,10,1,0,16,16,16,254,16,16,16,0,254,4,6,6, + 10,2,5,96,144,32,64,144,240,4,6,6,10,3,5,96, + 144,32,16,144,96,3,3,3,10,4,8,32,64,128,8,10, + 10,10,1,253,198,66,66,66,66,70,123,64,64,64,7,12, + 12,10,1,255,62,84,148,148,148,84,52,20,20,20,20,62, + 2,2,2,10,4,4,192,192,3,4,4,10,3,253,64,64, + 32,224,5,6,6,10,2,5,32,224,32,32,32,248,5,7, + 7,10,2,3,112,136,136,136,112,0,248,7,7,7,10,1, + 0,144,72,36,18,36,72,144,10,11,22,10,0,0,32,0, + 224,64,32,128,33,0,34,0,252,128,9,128,18,128,36,128, + 71,192,0,128,10,11,22,10,0,0,32,0,224,64,32,128, + 33,0,34,0,253,128,10,64,16,128,33,0,66,64,3,192, + 10,11,22,10,0,0,96,0,144,64,32,128,17,0,146,0, + 100,128,9,128,18,128,36,128,71,192,0,128,6,10,10,10, + 1,253,16,16,0,16,16,96,128,132,132,120,9,14,28,10, + 0,0,32,0,16,0,8,0,0,0,120,0,20,0,20,0, + 34,0,34,0,34,0,62,0,65,0,65,0,227,128,9,14, + 28,10,0,0,4,0,8,0,16,0,0,0,120,0,20,0, + 20,0,34,0,34,0,34,0,62,0,65,0,65,0,227,128, + 9,14,28,10,0,0,8,0,20,0,34,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,13,26,10,0,0,50,0,76,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,13,26,10,0,0,36,0,36,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,14,28,10,0,0,24,0,36,0,36,0,24,0, + 120,0,20,0,20,0,34,0,34,0,34,0,62,0,65,0, + 65,0,227,128,9,10,20,10,0,0,127,128,40,128,40,128, + 74,0,78,0,122,0,72,128,136,128,136,128,223,128,8,13, + 13,10,1,253,29,99,65,128,128,128,128,65,99,28,16,8, + 56,7,14,14,10,1,0,32,16,8,0,254,66,66,72,120, + 72,64,66,66,254,7,14,14,10,1,0,4,8,16,0,254, + 66,66,72,120,72,64,66,66,254,7,14,14,10,1,0,16, + 40,68,0,254,66,66,72,120,72,64,66,66,254,7,13,13, + 10,1,0,36,36,0,254,66,66,72,120,72,64,66,66,254, + 7,14,14,10,1,0,32,16,8,0,254,16,16,16,16,16, + 16,16,16,254,7,14,14,10,1,0,8,16,32,0,254,16, + 16,16,16,16,16,16,16,254,7,14,14,10,1,0,16,40, + 68,0,254,16,16,16,16,16,16,16,16,254,7,13,13,10, + 1,0,68,68,0,254,16,16,16,16,16,16,16,16,254,8, + 10,10,10,1,0,248,70,66,65,241,65,65,66,70,248,9, + 13,26,10,0,0,25,0,38,0,0,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,243,0,8, + 14,14,10,1,0,32,16,8,0,60,66,66,129,129,129,129, + 66,66,60,8,14,14,10,1,0,4,8,16,0,60,66,66, + 129,129,129,129,66,66,60,8,14,14,10,1,0,8,20,34, + 0,60,66,66,129,129,129,129,66,66,60,8,13,13,10,1, + 0,50,76,0,60,66,66,129,129,129,129,66,66,60,8,13, + 13,10,1,0,36,36,0,60,66,66,129,129,129,129,66,66, + 60,7,7,7,10,1,1,130,68,40,16,40,68,130,8,10, + 10,10,1,0,61,66,66,133,137,145,161,66,66,188,9,14, + 28,10,0,0,16,0,8,0,4,0,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,14,28,10,0,0,2,0,4,0,8,0,0,0,247,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 28,0,9,14,28,10,0,0,8,0,20,0,34,0,0,0, + 247,128,65,0,65,0,65,0,65,0,65,0,65,0,65,0, + 34,0,28,0,9,13,26,10,0,0,34,0,34,0,0,0, + 247,128,65,0,65,0,65,0,65,0,65,0,65,0,65,0, + 34,0,28,0,9,14,28,10,0,0,2,0,4,0,8,0, + 0,0,227,128,65,0,34,0,34,0,20,0,8,0,8,0, + 8,0,8,0,62,0,8,10,10,10,1,0,224,64,124,66, + 65,66,124,64,64,224,7,11,11,10,1,0,56,68,68,72, + 88,68,66,66,66,82,204,7,11,11,10,1,0,32,16,8, + 0,56,68,4,124,132,132,122,7,11,11,10,1,0,4,8, + 16,0,56,68,4,124,132,132,122,7,11,11,10,1,0,16, + 40,68,0,56,68,4,124,132,132,122,7,10,10,10,1,0, + 50,76,0,56,68,4,124,132,132,122,7,10,10,10,1,0, + 36,36,0,56,68,4,124,132,132,122,7,12,12,10,1,0, + 24,36,36,24,0,56,68,4,124,132,132,122,9,7,14,10, + 0,0,55,0,72,128,8,128,127,128,136,0,136,128,119,0, + 7,10,10,10,1,253,58,70,130,128,128,66,60,16,8,56, + 7,11,11,10,1,0,32,16,8,0,56,68,130,254,128,66, + 60,7,11,11,10,1,0,4,8,16,0,56,68,130,254,128, + 66,60,7,11,11,10,1,0,16,40,68,0,56,68,130,254, + 128,66,60,7,10,10,10,1,0,36,36,0,56,68,130,254, + 128,66,60,7,11,11,10,1,0,32,16,8,0,112,16,16, + 16,16,16,254,7,11,11,10,1,0,8,16,32,0,112,16, + 16,16,16,16,254,7,11,11,10,1,0,16,40,68,0,112, + 16,16,16,16,16,254,7,10,10,10,1,0,72,72,0,112, + 16,16,16,16,16,254,7,11,11,10,1,0,230,24,104,4, + 60,66,130,130,130,68,56,8,10,10,10,1,0,50,76,0, + 220,98,66,66,66,66,231,7,11,11,10,1,0,32,16,8, + 0,56,68,130,130,130,68,56,7,11,11,10,1,0,8,16, + 32,0,56,68,130,130,130,68,56,7,11,11,10,1,0,16, + 40,68,0,56,68,130,130,130,68,56,7,10,10,10,1,0, + 50,76,0,56,68,130,130,130,68,56,7,10,10,10,1,0, + 68,68,0,56,68,130,130,130,68,56,8,7,7,10,1,1, + 24,24,0,255,0,24,24,7,9,9,10,1,255,2,58,68, + 138,146,162,68,184,128,8,11,11,10,1,0,32,16,8,0, + 198,66,66,66,66,70,59,8,11,11,10,1,0,4,8,16, + 0,198,66,66,66,66,70,59,8,11,11,10,1,0,16,40, + 68,0,198,66,66,66,66,70,59,8,10,10,10,1,0,36, + 36,0,198,66,66,66,66,70,59,9,14,28,10,0,253,2, + 0,4,0,8,0,0,0,227,128,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,120,0,8,14,14,10,1, + 253,192,64,64,64,92,98,65,65,65,98,92,64,64,240,9, + 13,26,10,0,253,18,0,18,0,0,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,16,0,120,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=13 x= 4 y= 8 dx=10 dy= 0 ascent=12 len=24 + Font Bounding box w=15 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR12r[1592] U8G_SECTION(".progmem.u8g_font_courR12r") = { + 0,15,24,253,250,10,2,12,4,92,32,127,253,12,253,11, + 253,0,0,0,10,0,1,1,11,11,10,4,0,128,128,128, + 128,128,128,128,128,0,128,128,4,5,5,10,3,6,144,144, + 144,144,144,7,12,12,10,1,255,40,40,40,40,254,40,40, + 254,40,40,40,40,5,13,13,10,2,255,32,32,120,136,128, + 128,112,8,8,136,240,32,32,7,11,11,10,1,0,112,136, + 136,112,6,56,192,28,34,34,28,6,9,9,10,1,0,48, + 72,64,32,100,148,136,136,116,1,5,5,10,4,6,128,128, + 128,128,128,3,13,13,10,4,254,32,64,64,64,128,128,128, + 128,128,64,64,64,32,3,13,13,10,2,254,128,64,64,64, + 32,32,32,32,32,64,64,64,128,7,6,6,10,1,5,16, + 16,254,56,40,68,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,3,4,4,10,2,254,96,96,64,128,7,1, + 1,10,1,4,254,2,2,2,10,3,0,192,192,6,13,13, + 10,2,254,4,4,8,8,16,16,16,32,32,64,64,128,128, + 7,11,11,10,1,0,56,68,68,130,130,130,130,130,68,68, + 56,7,11,11,10,1,0,16,48,208,16,16,16,16,16,16, + 16,254,7,11,11,10,1,0,56,68,130,2,2,4,8,16, + 32,66,254,7,11,11,10,1,0,56,68,130,4,24,4,2, + 2,130,68,56,7,11,11,10,1,0,12,12,20,36,36,68, + 132,254,4,4,30,7,11,11,10,1,0,126,64,64,64,120, + 68,2,2,130,68,56,7,11,11,10,2,0,28,96,64,128, + 184,196,130,130,130,68,56,6,11,11,10,1,0,252,132,4, + 8,8,8,16,16,16,32,32,6,11,11,10,2,0,48,72, + 132,132,120,72,132,132,132,72,48,7,11,11,10,1,0,56, + 68,130,130,70,58,2,2,4,12,112,2,7,7,10,3,0, + 192,192,0,0,0,192,192,3,9,9,10,2,254,96,96,0, + 0,0,96,96,64,128,8,9,9,10,1,0,1,6,24,96, + 128,96,24,6,1,8,4,4,10,1,3,255,0,0,255,8, + 9,9,10,1,0,128,96,24,6,1,6,24,96,128,6,10, + 10,10,2,0,120,132,132,4,24,32,32,0,32,32,9,12, + 24,10,0,255,62,0,65,0,65,0,128,128,156,128,164,128, + 164,128,164,128,159,0,64,0,65,0,62,0,9,10,20,10, + 0,0,120,0,20,0,20,0,34,0,34,0,34,0,62,0, + 65,0,65,0,227,128,8,10,10,10,1,0,252,66,65,66, + 124,66,65,65,66,252,8,10,10,10,1,0,29,99,65,128, + 128,128,128,65,99,28,8,10,10,10,1,0,248,70,66,65, + 65,65,65,66,70,248,7,10,10,10,1,0,254,66,66,72, + 120,72,64,66,66,254,7,10,10,10,1,0,254,66,66,72, + 120,72,64,64,64,240,9,10,20,10,1,0,29,0,99,0, + 65,0,128,0,128,0,135,128,129,0,65,0,97,0,30,0, + 8,10,10,10,1,0,231,66,66,66,126,66,66,66,66,231, + 7,10,10,10,1,0,254,16,16,16,16,16,16,16,16,254, + 8,10,10,10,1,0,63,4,4,4,4,4,132,132,132,120, + 8,10,10,10,1,0,247,66,68,72,80,120,68,68,66,243, + 8,10,10,10,1,0,248,32,32,32,32,32,33,33,33,255, + 9,10,20,10,0,0,193,128,99,0,99,0,85,0,85,0, + 73,0,73,0,65,0,65,0,227,128,9,10,20,10,0,0, + 231,128,97,0,81,0,81,0,73,0,73,0,69,0,69,0, + 67,0,243,0,8,10,10,10,1,0,60,66,66,129,129,129, + 129,66,66,60,8,10,10,10,1,0,252,66,65,65,66,124, + 64,64,64,248,8,12,12,10,1,254,60,66,66,129,129,129, + 129,66,66,60,17,46,8,10,10,10,1,0,248,68,66,66, + 68,120,68,66,66,243,7,10,10,10,1,0,58,70,130,128, + 112,12,2,130,196,184,7,10,10,10,1,0,254,146,146,146, + 16,16,16,16,16,124,9,10,20,10,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,10,20,10,0,0,227,128,65,0,65,0,34,0,34,0, + 34,0,20,0,20,0,8,0,8,0,9,10,20,10,0,0, + 247,128,65,0,73,0,73,0,85,0,85,0,85,0,34,0, + 34,0,34,0,9,10,20,10,0,0,227,128,65,0,34,0, + 20,0,8,0,8,0,20,0,34,0,65,0,227,128,9,10, + 20,10,0,0,227,128,65,0,34,0,34,0,20,0,8,0, + 8,0,8,0,8,0,62,0,7,10,10,10,1,0,254,130, + 132,8,16,16,32,66,130,254,3,13,13,10,4,254,224,128, + 128,128,128,128,128,128,128,128,128,128,224,6,13,13,10,2, + 254,128,128,64,64,32,32,32,16,16,8,8,4,4,3,13, + 13,10,2,254,224,32,32,32,32,32,32,32,32,32,32,32, + 224,7,4,4,10,1,7,16,40,68,130,10,1,2,10,0, + 253,255,192,3,3,3,10,2,8,128,64,32,7,7,7,10, + 1,0,56,68,4,124,132,132,122,8,10,10,10,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,10,1,0,58, + 70,130,128,128,66,60,8,10,10,10,1,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,10,1,0,56,68,130,254, + 128,66,60,7,10,10,10,2,0,28,34,32,252,32,32,32, + 32,32,252,8,10,10,10,1,253,59,70,130,130,130,70,58, + 2,2,60,8,10,10,10,1,0,192,64,64,92,98,66,66, + 66,66,231,7,10,10,10,1,0,16,16,0,112,16,16,16, + 16,16,254,5,13,13,10,2,253,16,16,0,248,8,8,8, + 8,8,8,8,8,240,8,10,10,10,1,0,192,64,64,79, + 68,72,112,72,68,207,7,10,10,10,1,0,112,16,16,16, + 16,16,16,16,16,254,9,7,14,10,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,10,1,0, + 220,98,66,66,66,66,231,7,7,7,10,1,0,56,68,130, + 130,130,68,56,8,10,10,10,1,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,10,1,253,59,70,130,130,130,70, + 58,2,2,15,8,7,7,10,1,0,238,49,32,32,32,32, + 252,6,7,7,10,2,0,124,132,128,120,4,132,248,8,9, + 9,10,0,0,32,32,254,32,32,32,32,33,30,8,7,7, + 10,1,0,198,66,66,66,66,70,59,9,7,14,10,0,0, + 247,128,65,0,34,0,34,0,20,0,20,0,8,0,9,7, + 14,10,0,0,227,128,65,0,73,0,42,0,42,0,54,0, + 34,0,7,7,7,10,1,0,238,68,40,16,40,68,238,9, + 10,20,10,0,253,227,128,65,0,34,0,34,0,20,0,20, + 0,8,0,8,0,16,0,120,0,6,7,7,10,2,0,252, + 136,16,32,64,132,252,3,13,13,10,3,254,32,64,64,64, + 64,64,128,64,64,64,64,64,32,1,12,12,10,4,254,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,10,3, + 254,128,64,64,64,64,64,32,64,64,64,64,64,128,7,3, + 3,10,1,3,96,146,12,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=11 h=16 x= 5 y=10 dx=11 dy= 0 ascent=15 len=32 + Font Bounding box w=16 h=26 x=-3 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR14[4276] U8G_SECTION(".progmem.u8g_font_courR14") = { + 0,16,26,253,249,11,2,74,5,74,32,255,252,15,252,12, + 252,0,0,0,11,0,1,2,12,12,11,4,0,192,192,192, + 192,192,192,64,64,0,0,192,192,6,5,5,11,3,7,204, + 204,204,68,68,8,15,15,11,1,254,18,18,18,18,18,127, + 36,36,36,254,36,36,36,36,36,6,15,15,11,2,254,16, + 16,116,140,132,128,96,24,4,132,196,184,16,16,16,9,12, + 24,11,1,0,56,0,68,0,68,0,68,0,57,128,14,0, + 48,0,206,0,17,0,17,0,17,0,14,0,7,10,10,11, + 2,0,56,64,64,64,32,116,136,136,152,102,2,5,5,11, + 4,7,192,192,192,64,64,3,14,14,11,5,254,32,64,64, + 128,128,128,128,128,128,128,128,64,64,32,3,14,14,11,3, + 254,128,64,64,32,32,32,32,32,32,32,32,64,64,128,7, + 8,8,11,2,4,16,16,16,254,16,40,68,68,9,9,18, + 11,1,1,8,0,8,0,8,0,8,0,255,128,8,0,8, + 0,8,0,8,0,4,5,5,11,3,253,48,48,96,64,128, + 8,1,1,11,1,5,255,2,2,2,11,4,0,192,192,8, + 16,16,11,1,253,1,1,2,2,4,4,8,8,16,16,32, + 32,64,64,128,128,7,12,12,11,2,0,56,68,130,130,130, + 130,130,130,130,130,68,56,7,12,12,11,2,0,48,208,16, + 16,16,16,16,16,16,16,16,254,8,12,12,11,1,0,28, + 34,65,65,1,2,4,8,16,33,65,255,7,12,12,11,2, + 0,120,132,2,2,4,56,4,2,2,2,132,120,7,12,12, + 11,2,0,12,20,20,36,36,68,68,132,254,4,4,30,8, + 12,12,11,1,0,126,64,64,64,92,98,1,1,1,1,194, + 60,7,12,12,11,2,0,28,96,64,128,128,184,196,130,130, + 130,68,56,7,12,12,11,2,0,254,130,2,2,4,4,4, + 4,8,8,8,8,7,12,12,11,2,0,56,68,130,130,68, + 56,68,130,130,130,68,56,7,12,12,11,2,0,56,68,130, + 130,130,70,58,2,2,4,12,112,2,8,8,11,4,0,192, + 192,0,0,0,0,192,192,4,11,11,11,2,253,48,48,0, + 0,0,0,48,48,96,64,128,10,9,18,11,0,1,0,192, + 3,0,12,0,48,0,192,0,48,0,12,0,3,0,0,192, + 9,4,8,11,1,3,255,128,0,0,0,0,255,128,10,9, + 18,11,0,1,192,0,48,0,12,0,3,0,0,192,3,0, + 12,0,48,0,192,0,7,11,11,11,2,0,124,130,130,2, + 2,28,16,16,0,24,24,8,13,13,11,2,255,56,68,130, + 130,142,146,146,146,143,128,128,67,60,11,11,22,11,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,9,11,22,11,1,0,252,0,66,0, + 65,0,65,0,66,0,126,0,65,0,64,128,64,128,65,0, + 254,0,9,11,22,11,1,0,30,128,97,128,64,128,128,0, + 128,0,128,0,128,0,128,0,64,128,97,0,30,0,9,11, + 22,11,1,0,252,0,67,0,65,0,64,128,64,128,64,128, + 64,128,64,128,65,0,67,0,252,0,8,11,11,11,1,0, + 255,65,65,65,72,120,72,65,65,65,255,8,11,11,11,1, + 0,255,65,65,65,72,120,72,64,64,64,240,10,11,22,11, + 1,0,30,128,97,128,64,128,128,0,128,0,128,0,131,192, + 128,128,64,128,97,0,30,0,9,11,22,11,1,0,227,128, + 65,0,65,0,65,0,65,0,127,0,65,0,65,0,65,0, + 65,0,227,128,7,11,11,11,2,0,254,16,16,16,16,16, + 16,16,16,16,254,9,11,22,11,1,0,31,128,2,0,2, + 0,2,0,2,0,2,0,130,0,130,0,130,0,68,0,56, + 0,10,11,22,11,1,0,243,192,65,0,66,0,68,0,72, + 0,88,0,100,0,66,0,66,0,65,0,241,192,9,11,22, + 11,1,0,248,0,32,0,32,0,32,0,32,0,32,0,32, + 0,32,128,32,128,32,128,255,128,11,11,22,11,0,0,224, + 224,96,192,81,64,81,64,74,64,74,64,68,64,68,64,64, + 64,64,64,241,224,9,11,22,11,1,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,11,22,11,1,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,11,22, + 11,1,0,254,0,65,0,64,128,64,128,65,0,126,0,64, + 0,64,0,64,0,64,0,248,0,9,13,26,11,1,254,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,56,128,71,0,10,11,22,11,1,0,254, + 0,65,0,64,128,64,128,65,0,126,0,68,0,66,0,66, + 0,65,0,240,192,8,11,11,11,1,0,61,67,129,128,64, + 60,2,1,129,194,188,9,11,22,11,1,0,255,128,136,128, + 136,128,136,128,8,0,8,0,8,0,8,0,8,0,8,0, + 62,0,10,11,22,11,0,0,243,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,11,11, + 22,11,0,0,241,224,64,64,64,64,32,128,32,128,17,0, + 17,0,10,0,10,0,4,0,4,0,11,11,22,11,0,0, + 241,224,64,64,68,64,68,64,68,64,42,128,42,128,42,128, + 42,128,17,0,17,0,9,11,22,11,1,0,227,128,65,0, + 34,0,34,0,20,0,8,0,20,0,34,0,34,0,65,0, + 227,128,9,11,22,11,1,0,227,128,65,0,34,0,34,0, + 20,0,20,0,8,0,8,0,8,0,8,0,62,0,7,11, + 11,11,2,0,254,130,130,4,8,16,32,64,130,130,254,3, + 15,15,11,5,253,224,128,128,128,128,128,128,128,128,128,128, + 128,128,128,224,8,16,16,11,2,253,128,128,64,64,32,32, + 16,16,8,8,4,4,2,2,1,1,3,15,15,11,3,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,32,224,7, + 4,4,11,2,8,16,40,68,130,11,1,2,11,0,252,255, + 224,3,3,3,11,4,9,128,64,32,9,8,16,11,1,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,192,0,64,0,64,0,64,0,94,0, + 97,0,64,128,64,128,64,128,64,128,97,0,222,0,8,8, + 8,11,1,0,61,67,129,128,128,128,67,60,9,12,24,11, + 1,0,3,0,1,0,1,0,1,0,61,0,67,0,129,0, + 129,0,129,0,129,0,67,0,61,128,8,8,8,11,1,0, + 60,66,129,255,128,128,67,60,8,12,12,11,2,0,15,16, + 32,32,254,32,32,32,32,32,32,254,9,12,24,11,1,252, + 61,128,67,0,129,0,129,0,129,0,129,0,67,0,61,0, + 1,0,1,0,2,0,124,0,9,12,24,11,1,0,192,0, + 64,0,64,0,64,0,94,0,97,0,65,0,65,0,65,0, + 65,0,65,0,227,128,7,11,11,11,2,0,16,16,0,112, + 16,16,16,16,16,16,254,6,15,15,11,2,252,8,8,0, + 252,4,4,4,4,4,4,4,4,4,8,240,9,12,24,11, + 1,0,192,0,64,0,64,0,64,0,79,0,68,0,72,0, + 112,0,72,0,68,0,66,0,199,128,7,12,12,11,2,0, + 240,16,16,16,16,16,16,16,16,16,16,254,11,8,16,11, + 0,0,217,128,102,64,68,64,68,64,68,64,68,64,68,64, + 230,96,9,8,16,11,1,0,222,0,97,0,65,0,65,0, + 65,0,65,0,65,0,227,128,8,8,8,11,1,0,60,66, + 129,129,129,129,66,60,9,12,24,11,1,252,222,0,97,0, + 64,128,64,128,64,128,64,128,97,0,94,0,64,0,64,0, + 64,0,240,0,9,12,24,11,1,252,61,128,67,0,129,0, + 129,0,129,0,129,0,67,0,61,0,1,0,1,0,1,0, + 7,128,8,8,8,11,1,0,238,49,32,32,32,32,32,254, + 7,8,8,11,2,0,122,134,130,112,12,130,194,188,8,11, + 11,11,2,0,32,32,32,254,32,32,32,32,32,33,30,9, + 8,16,11,1,0,195,0,65,0,65,0,65,0,65,0,65, + 0,67,0,61,128,9,8,16,11,1,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,9,8,16,11,1, + 0,227,128,65,0,73,0,73,0,85,0,85,0,34,0,34, + 0,8,8,8,11,1,0,231,66,36,24,24,36,66,231,9, + 12,24,11,1,252,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,16,0,248,0,7,8,8, + 11,2,0,254,130,132,8,16,34,66,254,5,15,15,11,3, + 253,24,32,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,15,15,11,5,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,15,15,11,3,253,192,32,32,32,32, + 32,32,24,32,32,32,32,32,32,192,8,3,3,11,1,4, + 96,153,6,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,11,0,1,2,12,12,11,4,252, + 192,192,0,0,128,128,192,192,192,192,192,192,6,12,12,11, + 2,0,16,16,16,60,68,132,128,128,68,56,16,16,8,11, + 11,11,2,0,28,34,32,32,16,252,16,32,33,65,126,6, + 7,7,11,2,2,132,120,132,132,132,120,132,9,11,22,11, + 1,0,227,128,65,0,34,0,34,0,20,0,20,0,127,0, + 8,0,127,0,8,0,62,0,1,15,15,11,5,253,128,128, + 128,128,128,128,0,0,0,128,128,128,128,128,128,7,14,14, + 11,2,254,62,66,66,64,112,140,130,98,28,6,130,130,132, + 252,4,2,2,11,3,10,144,144,11,11,22,11,0,0,31, + 0,96,192,79,64,145,32,160,32,160,32,160,32,145,32,78, + 64,96,192,31,0,6,8,8,11,2,3,112,8,120,136,152, + 236,0,252,10,8,16,11,1,0,24,192,49,128,99,0,198, + 0,198,0,99,0,49,128,24,192,9,4,8,11,1,3,255, + 128,0,128,0,128,0,128,8,1,1,11,1,5,255,11,11, + 22,11,0,0,31,0,96,192,94,64,145,32,145,32,158,32, + 148,32,146,32,81,64,96,128,31,0,5,1,1,11,3,10, + 248,5,5,5,11,3,6,112,136,136,136,112,9,9,18,11, + 1,1,8,0,8,0,8,0,255,128,8,0,8,0,8,0, + 0,0,255,128,5,7,7,11,3,5,112,136,8,16,32,64, + 248,5,7,7,11,3,5,112,136,8,48,8,136,112,3,3, + 3,11,4,9,32,64,128,9,12,24,11,1,252,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,125,128,64,0,64, + 0,64,0,64,0,8,14,14,11,1,254,63,74,138,138,138, + 74,58,10,10,10,10,10,10,59,2,2,2,11,4,5,192, + 192,3,3,3,11,4,253,64,32,192,5,7,7,11,3,5, + 32,224,32,32,32,32,248,6,8,8,11,2,3,120,132,132, + 132,132,120,0,252,10,8,16,11,0,0,198,0,99,0,49, + 128,24,192,24,192,49,128,99,0,198,0,11,12,24,11,0, + 0,32,0,224,64,32,128,33,0,33,0,34,64,252,192,9, + 64,10,64,19,224,32,64,0,224,11,12,24,11,0,0,32, + 0,224,64,32,128,33,0,33,0,34,192,253,32,8,32,8, + 64,16,128,33,0,3,224,11,12,24,11,0,0,112,0,136, + 64,8,128,49,0,9,0,138,64,116,192,9,64,10,64,19, + 224,32,64,0,224,6,11,11,11,2,253,24,24,0,16,16, + 112,128,128,132,132,120,11,15,30,11,0,0,16,0,8,0, + 4,0,0,0,60,0,4,0,10,0,10,0,17,0,17,0, + 32,128,63,128,64,64,64,64,241,224,11,15,30,11,0,0, + 1,0,2,0,4,0,0,0,60,0,4,0,10,0,10,0, + 17,0,17,0,32,128,63,128,64,64,64,64,241,224,11,15, + 30,11,0,0,12,0,18,0,33,0,0,0,60,0,4,0, + 10,0,10,0,17,0,17,0,32,128,63,128,64,64,64,64, + 241,224,11,14,28,11,0,0,25,0,38,0,0,0,60,0, + 4,0,10,0,10,0,17,0,17,0,32,128,63,128,64,64, + 64,64,241,224,11,14,28,11,0,0,18,0,18,0,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,11,15,30,11,0,0,12,0,18,0, + 18,0,12,0,60,0,4,0,10,0,10,0,17,0,17,0, + 32,128,63,128,64,64,64,64,241,224,11,11,22,11,255,0, + 31,224,6,32,10,32,10,0,18,64,19,192,62,64,34,0, + 66,32,66,32,231,224,9,14,28,11,1,253,30,128,97,128, + 64,128,128,0,128,0,128,0,128,0,128,0,64,128,97,0, + 30,0,8,0,4,0,24,0,8,15,15,11,1,0,32,16, + 8,0,255,65,65,65,72,120,72,65,65,65,255,8,15,15, + 11,1,0,4,8,16,0,255,65,65,65,72,120,72,65,65, + 65,255,8,15,15,11,1,0,24,36,66,0,255,65,65,65, + 72,120,72,65,65,65,255,8,14,14,11,1,0,36,36,0, + 255,65,65,65,72,120,72,65,65,65,255,7,15,15,11,2, + 0,32,16,8,0,254,16,16,16,16,16,16,16,16,16,254, + 7,15,15,11,2,0,8,16,32,0,254,16,16,16,16,16, + 16,16,16,16,254,7,15,15,11,2,0,24,36,66,0,254, + 16,16,16,16,16,16,16,16,16,254,7,14,14,11,2,0, + 36,36,0,254,16,16,16,16,16,16,16,16,16,254,8,11, + 11,11,1,0,252,66,65,65,65,241,65,65,65,66,252,9, + 14,28,11,1,0,25,0,38,0,0,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,15,30,11,1,0,16,0,8,0,4,0,0,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,9,15,30,11,1,0,4,0,8,0,16, + 0,0,0,28,0,99,0,65,0,128,128,128,128,128,128,128, + 128,128,128,65,0,99,0,28,0,9,15,30,11,1,0,12, + 0,18,0,33,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,14,28, + 11,1,0,25,0,38,0,0,0,28,0,99,0,65,0,128, + 128,128,128,128,128,128,128,128,128,65,0,99,0,28,0,9, + 14,28,11,1,0,18,0,18,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,9,18,11,1,1,128,128,65,0,34,0,20,0,8, + 0,20,0,34,0,65,0,128,128,11,11,22,11,0,0,14, + 32,49,192,32,128,65,64,66,64,68,64,72,64,80,64,32, + 128,113,128,142,0,10,15,30,11,0,0,16,0,8,0,4, + 0,0,0,243,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,10,15,30,11,0,0,2, + 0,4,0,8,0,0,0,243,192,64,128,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,33,0,30,0,10,15,30, + 11,0,0,12,0,18,0,33,0,0,0,243,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,33,0,30, + 0,10,14,28,11,0,0,18,0,18,0,0,0,243,192,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,9,15,30,11,1,0,2,0,4,0,8,0,0, + 0,227,128,65,0,34,0,34,0,20,0,20,0,8,0,8, + 0,8,0,8,0,62,0,9,11,22,11,1,0,224,0,64, + 0,126,0,65,0,64,128,64,128,65,0,126,0,64,0,64, + 0,224,0,8,11,11,11,1,0,60,66,66,68,88,70,65, + 65,65,73,230,9,12,24,11,1,0,32,0,16,0,8,0, + 0,0,60,0,66,0,2,0,126,0,130,0,130,0,134,0, + 123,128,9,12,24,11,1,0,4,0,8,0,16,0,0,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,24,0,36,0,66,0,0,0,60,0, + 66,0,2,0,126,0,130,0,130,0,134,0,123,128,9,11, + 22,11,1,0,50,0,76,0,0,0,60,0,66,0,2,0, + 126,0,130,0,130,0,134,0,123,128,9,11,22,11,1,0, + 36,0,36,0,0,0,60,0,66,0,2,0,126,0,130,0, + 130,0,134,0,123,128,9,13,26,11,1,0,24,0,36,0, + 36,0,24,0,0,0,60,0,66,0,2,0,126,0,130,0, + 130,0,134,0,123,128,11,8,16,11,0,0,113,128,138,64, + 4,32,127,224,132,0,132,0,138,32,113,192,8,11,11,11, + 1,253,61,67,129,128,128,128,67,60,16,8,48,8,12,12, + 11,1,0,32,16,8,0,60,66,129,255,128,128,67,60,8, + 12,12,11,1,0,2,4,8,0,60,66,129,255,128,128,67, + 60,8,12,12,11,1,0,24,36,66,0,60,66,129,255,128, + 128,67,60,8,11,11,11,1,0,36,36,0,60,66,129,255, + 128,128,67,60,7,12,12,11,2,0,32,16,8,0,112,16, + 16,16,16,16,16,254,7,12,12,11,2,0,8,16,32,0, + 112,16,16,16,16,16,16,254,7,12,12,11,2,0,48,72, + 132,0,112,16,16,16,16,16,16,254,7,11,11,11,2,0, + 72,72,0,112,16,16,16,16,16,16,254,8,12,12,11,1, + 0,114,140,52,66,62,67,129,129,129,129,66,60,9,11,22, + 11,1,0,50,0,76,0,0,0,222,0,97,0,65,0,65, + 0,65,0,65,0,65,0,227,128,8,12,12,11,1,0,32, + 16,8,0,60,66,129,129,129,129,66,60,8,12,12,11,1, + 0,4,8,16,0,60,66,129,129,129,129,66,60,8,12,12, + 11,1,0,24,36,66,0,60,66,129,129,129,129,66,60,8, + 11,11,11,1,0,50,76,0,60,66,129,129,129,129,66,60, + 8,11,11,11,1,0,36,36,0,60,66,129,129,129,129,66, + 60,8,9,9,11,1,1,24,24,0,0,255,0,0,24,24, + 8,8,8,11,1,0,61,66,133,137,145,161,66,188,9,12, + 24,11,1,0,32,0,16,0,8,0,0,0,195,0,65,0, + 65,0,65,0,65,0,65,0,67,0,61,128,9,12,24,11, + 1,0,2,0,4,0,8,0,0,0,195,0,65,0,65,0, + 65,0,65,0,65,0,67,0,61,128,9,12,24,11,1,0, + 24,0,36,0,66,0,0,0,195,0,65,0,65,0,65,0, + 65,0,65,0,67,0,61,128,9,11,22,11,1,0,36,0, + 36,0,0,0,195,0,65,0,65,0,65,0,65,0,65,0, + 67,0,61,128,9,16,32,11,1,252,2,0,4,0,8,0, + 0,0,227,128,65,0,65,0,34,0,34,0,20,0,20,0, + 8,0,8,0,16,0,16,0,248,0,9,16,32,11,1,252, + 192,0,64,0,64,0,64,0,94,0,97,0,64,128,64,128, + 64,128,64,128,97,0,94,0,64,0,64,0,64,0,240,0, + 9,15,30,11,1,252,36,0,36,0,0,0,227,128,65,0, + 65,0,34,0,34,0,20,0,20,0,8,0,8,0,16,0, + 16,0,248,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=11 h=16 x= 5 y= 9 dx=11 dy= 0 ascent=13 len=26 + Font Bounding box w=16 h=26 x=-3 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR14r[1988] U8G_SECTION(".progmem.u8g_font_courR14r") = { + 0,16,26,253,249,11,2,74,5,74,32,127,252,13,252,12, + 252,0,0,0,11,0,1,2,12,12,11,4,0,192,192,192, + 192,192,192,64,64,0,0,192,192,6,5,5,11,3,7,204, + 204,204,68,68,8,15,15,11,1,254,18,18,18,18,18,127, + 36,36,36,254,36,36,36,36,36,6,15,15,11,2,254,16, + 16,116,140,132,128,96,24,4,132,196,184,16,16,16,9,12, + 24,11,1,0,56,0,68,0,68,0,68,0,57,128,14,0, + 48,0,206,0,17,0,17,0,17,0,14,0,7,10,10,11, + 2,0,56,64,64,64,32,116,136,136,152,102,2,5,5,11, + 4,7,192,192,192,64,64,3,14,14,11,5,254,32,64,64, + 128,128,128,128,128,128,128,128,64,64,32,3,14,14,11,3, + 254,128,64,64,32,32,32,32,32,32,32,32,64,64,128,7, + 8,8,11,2,4,16,16,16,254,16,40,68,68,9,9,18, + 11,1,1,8,0,8,0,8,0,8,0,255,128,8,0,8, + 0,8,0,8,0,4,5,5,11,3,253,48,48,96,64,128, + 8,1,1,11,1,5,255,2,2,2,11,4,0,192,192,8, + 16,16,11,1,253,1,1,2,2,4,4,8,8,16,16,32, + 32,64,64,128,128,7,12,12,11,2,0,56,68,130,130,130, + 130,130,130,130,130,68,56,7,12,12,11,2,0,48,208,16, + 16,16,16,16,16,16,16,16,254,8,12,12,11,1,0,28, + 34,65,65,1,2,4,8,16,33,65,255,7,12,12,11,2, + 0,120,132,2,2,4,56,4,2,2,2,132,120,7,12,12, + 11,2,0,12,20,20,36,36,68,68,132,254,4,4,30,8, + 12,12,11,1,0,126,64,64,64,92,98,1,1,1,1,194, + 60,7,12,12,11,2,0,28,96,64,128,128,184,196,130,130, + 130,68,56,7,12,12,11,2,0,254,130,2,2,4,4,4, + 4,8,8,8,8,7,12,12,11,2,0,56,68,130,130,68, + 56,68,130,130,130,68,56,7,12,12,11,2,0,56,68,130, + 130,130,70,58,2,2,4,12,112,2,8,8,11,4,0,192, + 192,0,0,0,0,192,192,4,11,11,11,2,253,48,48,0, + 0,0,0,48,48,96,64,128,10,9,18,11,0,1,0,192, + 3,0,12,0,48,0,192,0,48,0,12,0,3,0,0,192, + 9,4,8,11,1,3,255,128,0,0,0,0,255,128,10,9, + 18,11,0,1,192,0,48,0,12,0,3,0,0,192,3,0, + 12,0,48,0,192,0,7,11,11,11,2,0,124,130,130,2, + 2,28,16,16,0,24,24,8,13,13,11,2,255,56,68,130, + 130,142,146,146,146,143,128,128,67,60,11,11,22,11,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,9,11,22,11,1,0,252,0,66,0, + 65,0,65,0,66,0,126,0,65,0,64,128,64,128,65,0, + 254,0,9,11,22,11,1,0,30,128,97,128,64,128,128,0, + 128,0,128,0,128,0,128,0,64,128,97,0,30,0,9,11, + 22,11,1,0,252,0,67,0,65,0,64,128,64,128,64,128, + 64,128,64,128,65,0,67,0,252,0,8,11,11,11,1,0, + 255,65,65,65,72,120,72,65,65,65,255,8,11,11,11,1, + 0,255,65,65,65,72,120,72,64,64,64,240,10,11,22,11, + 1,0,30,128,97,128,64,128,128,0,128,0,128,0,131,192, + 128,128,64,128,97,0,30,0,9,11,22,11,1,0,227,128, + 65,0,65,0,65,0,65,0,127,0,65,0,65,0,65,0, + 65,0,227,128,7,11,11,11,2,0,254,16,16,16,16,16, + 16,16,16,16,254,9,11,22,11,1,0,31,128,2,0,2, + 0,2,0,2,0,2,0,130,0,130,0,130,0,68,0,56, + 0,10,11,22,11,1,0,243,192,65,0,66,0,68,0,72, + 0,88,0,100,0,66,0,66,0,65,0,241,192,9,11,22, + 11,1,0,248,0,32,0,32,0,32,0,32,0,32,0,32, + 0,32,128,32,128,32,128,255,128,11,11,22,11,0,0,224, + 224,96,192,81,64,81,64,74,64,74,64,68,64,68,64,64, + 64,64,64,241,224,9,11,22,11,1,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,11,22,11,1,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,11,22, + 11,1,0,254,0,65,0,64,128,64,128,65,0,126,0,64, + 0,64,0,64,0,64,0,248,0,9,13,26,11,1,254,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,56,128,71,0,10,11,22,11,1,0,254, + 0,65,0,64,128,64,128,65,0,126,0,68,0,66,0,66, + 0,65,0,240,192,8,11,11,11,1,0,61,67,129,128,64, + 60,2,1,129,194,188,9,11,22,11,1,0,255,128,136,128, + 136,128,136,128,8,0,8,0,8,0,8,0,8,0,8,0, + 62,0,10,11,22,11,0,0,243,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,11,11, + 22,11,0,0,241,224,64,64,64,64,32,128,32,128,17,0, + 17,0,10,0,10,0,4,0,4,0,11,11,22,11,0,0, + 241,224,64,64,68,64,68,64,68,64,42,128,42,128,42,128, + 42,128,17,0,17,0,9,11,22,11,1,0,227,128,65,0, + 34,0,34,0,20,0,8,0,20,0,34,0,34,0,65,0, + 227,128,9,11,22,11,1,0,227,128,65,0,34,0,34,0, + 20,0,20,0,8,0,8,0,8,0,8,0,62,0,7,11, + 11,11,2,0,254,130,130,4,8,16,32,64,130,130,254,3, + 15,15,11,5,253,224,128,128,128,128,128,128,128,128,128,128, + 128,128,128,224,8,16,16,11,2,253,128,128,64,64,32,32, + 16,16,8,8,4,4,2,2,1,1,3,15,15,11,3,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,32,224,7, + 4,4,11,2,8,16,40,68,130,11,1,2,11,0,252,255, + 224,3,3,3,11,4,9,128,64,32,9,8,16,11,1,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,192,0,64,0,64,0,64,0,94,0, + 97,0,64,128,64,128,64,128,64,128,97,0,222,0,8,8, + 8,11,1,0,61,67,129,128,128,128,67,60,9,12,24,11, + 1,0,3,0,1,0,1,0,1,0,61,0,67,0,129,0, + 129,0,129,0,129,0,67,0,61,128,8,8,8,11,1,0, + 60,66,129,255,128,128,67,60,8,12,12,11,2,0,15,16, + 32,32,254,32,32,32,32,32,32,254,9,12,24,11,1,252, + 61,128,67,0,129,0,129,0,129,0,129,0,67,0,61,0, + 1,0,1,0,2,0,124,0,9,12,24,11,1,0,192,0, + 64,0,64,0,64,0,94,0,97,0,65,0,65,0,65,0, + 65,0,65,0,227,128,7,11,11,11,2,0,16,16,0,112, + 16,16,16,16,16,16,254,6,15,15,11,2,252,8,8,0, + 252,4,4,4,4,4,4,4,4,4,8,240,9,12,24,11, + 1,0,192,0,64,0,64,0,64,0,79,0,68,0,72,0, + 112,0,72,0,68,0,66,0,199,128,7,12,12,11,2,0, + 240,16,16,16,16,16,16,16,16,16,16,254,11,8,16,11, + 0,0,217,128,102,64,68,64,68,64,68,64,68,64,68,64, + 230,96,9,8,16,11,1,0,222,0,97,0,65,0,65,0, + 65,0,65,0,65,0,227,128,8,8,8,11,1,0,60,66, + 129,129,129,129,66,60,9,12,24,11,1,252,222,0,97,0, + 64,128,64,128,64,128,64,128,97,0,94,0,64,0,64,0, + 64,0,240,0,9,12,24,11,1,252,61,128,67,0,129,0, + 129,0,129,0,129,0,67,0,61,0,1,0,1,0,1,0, + 7,128,8,8,8,11,1,0,238,49,32,32,32,32,32,254, + 7,8,8,11,2,0,122,134,130,112,12,130,194,188,8,11, + 11,11,2,0,32,32,32,254,32,32,32,32,32,33,30,9, + 8,16,11,1,0,195,0,65,0,65,0,65,0,65,0,65, + 0,67,0,61,128,9,8,16,11,1,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,9,8,16,11,1, + 0,227,128,65,0,73,0,73,0,85,0,85,0,34,0,34, + 0,8,8,8,11,1,0,231,66,36,24,24,36,66,231,9, + 12,24,11,1,252,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,16,0,248,0,7,8,8, + 11,2,0,254,130,132,8,16,34,66,254,5,15,15,11,3, + 253,24,32,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,15,15,11,5,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,15,15,11,3,253,192,32,32,32,32, + 32,32,24,32,32,32,32,32,32,192,8,3,3,11,1,4, + 96,153,6,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 15 + Calculated Max Values w=15 h=21 x= 7 y=12 dx=15 dy= 0 ascent=19 len=42 + Font Bounding box w=23 h=32 x=-5 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR18[6152] U8G_SECTION(".progmem.u8g_font_courR18") = { + 0,23,32,251,248,14,3,161,7,151,32,255,251,19,251,16, + 251,0,0,0,15,0,1,2,16,16,15,6,0,192,192,192, + 192,192,192,192,192,128,128,128,0,0,0,192,192,8,7,7, + 15,3,9,231,231,231,231,66,66,66,10,17,34,15,2,255, + 9,0,9,0,9,0,9,0,9,0,9,0,127,192,18,0, + 18,0,18,0,255,128,18,0,18,0,18,0,18,0,18,0, + 18,0,9,20,40,15,3,253,8,0,8,0,8,0,30,128, + 33,128,64,128,64,0,64,0,32,0,30,0,1,0,0,128, + 0,128,128,128,193,0,190,0,8,0,8,0,8,0,8,0, + 12,16,32,15,1,0,28,0,34,0,65,0,65,0,65,0, + 34,0,28,112,3,128,28,0,225,192,2,32,4,16,4,16, + 4,16,2,32,1,192,10,13,26,15,2,0,29,0,38,0, + 32,0,32,0,16,0,48,0,73,128,137,0,134,0,130,0, + 131,0,69,0,56,192,3,7,7,15,6,8,224,224,224,224, + 224,64,64,4,19,19,15,7,253,16,32,32,64,64,64,128, + 128,128,128,128,128,128,64,64,64,32,32,16,4,19,19,15, + 3,253,128,64,64,32,32,32,16,16,16,16,16,16,16,32, + 32,32,64,64,128,9,9,18,15,3,7,8,0,8,0,8, + 0,201,128,127,0,28,0,54,0,99,0,193,128,11,11,22, + 15,2,2,4,0,4,0,4,0,4,0,4,0,255,224,4, + 0,4,0,4,0,4,0,4,0,5,6,6,15,4,253,56, + 56,112,96,192,128,10,1,2,15,2,7,255,192,3,3,3, + 15,6,0,224,224,224,9,18,36,15,3,254,0,128,0,128, + 1,0,1,0,2,0,2,0,4,0,4,0,8,0,8,0, + 16,0,16,0,32,0,32,0,64,0,64,0,128,0,128,0, + 9,15,30,15,3,0,28,0,99,0,65,0,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 99,0,28,0,9,15,30,15,3,0,24,0,232,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,10,15,30,15,2,0,30,0, + 97,0,128,128,128,128,0,128,0,128,1,0,2,0,4,0, + 8,0,16,0,32,0,64,0,128,64,255,192,10,15,30,15, + 2,0,62,0,65,128,0,128,0,128,0,128,1,0,30,0, + 1,128,0,64,0,64,0,64,0,64,128,64,97,128,30,0, + 10,15,30,15,2,0,3,0,5,0,9,0,9,0,17,0, + 33,0,33,0,65,0,65,0,129,0,255,192,1,0,1,0, + 1,0,15,192,10,15,30,15,2,0,127,128,64,0,64,0, + 64,0,64,0,94,0,97,128,0,128,0,64,0,64,0,64, + 0,64,0,128,193,128,62,0,9,15,30,15,3,0,15,0, + 48,0,96,0,64,0,128,0,158,0,161,0,192,128,128,128, + 128,128,128,128,128,128,64,128,97,0,30,0,9,15,30,15, + 2,0,255,128,128,128,129,0,1,0,1,0,2,0,2,0, + 2,0,2,0,4,0,4,0,4,0,8,0,8,0,8,0, + 10,15,30,15,2,0,30,0,33,0,64,128,64,128,64,128, + 64,128,33,0,63,0,64,128,128,64,128,64,128,64,64,128, + 97,128,30,0,9,15,30,15,3,0,28,0,99,0,193,128, + 128,128,128,128,128,128,65,128,98,128,28,128,0,128,0,128, + 1,0,1,0,6,0,248,0,3,11,11,15,6,0,224,224, + 224,0,0,0,0,0,224,224,224,5,14,14,15,4,253,56, + 56,56,0,0,0,0,0,56,56,112,96,192,128,11,11,22, + 15,1,2,0,96,1,128,6,0,24,0,96,0,192,0,96, + 0,24,0,6,0,1,128,0,96,12,4,8,15,1,5,255, + 240,0,0,0,0,255,240,11,11,22,15,2,2,192,0,48, + 0,12,0,3,0,0,192,0,96,0,192,3,0,12,0,48, + 0,192,0,8,14,14,15,3,0,124,130,129,1,1,1,2, + 12,16,16,0,0,24,24,10,18,36,15,2,254,30,0,97, + 0,64,128,128,128,128,128,131,128,132,128,136,128,136,128,136, + 128,136,128,132,128,131,192,128,0,128,0,64,0,97,128,31, + 0,13,14,28,15,1,0,63,0,5,0,8,128,8,128,8, + 128,16,64,16,64,16,64,63,224,32,32,32,32,64,16,64, + 16,240,120,12,14,28,15,1,0,255,192,32,32,32,16,32, + 16,32,16,32,32,63,192,32,32,32,16,32,16,32,16,32, + 16,32,32,255,192,11,14,28,15,2,0,15,32,48,160,96, + 96,64,32,128,0,128,0,128,0,128,0,128,0,128,0,64, + 32,96,96,48,192,15,0,12,14,28,15,1,0,255,128,64, + 96,64,32,64,16,64,16,64,16,64,16,64,16,64,16,64, + 16,64,16,64,32,64,96,255,128,12,14,28,15,1,0,255, + 224,32,32,32,32,32,32,34,0,34,0,62,0,34,0,34, + 0,32,16,32,16,32,16,32,16,255,240,11,14,28,15,2, + 0,255,224,32,32,32,32,32,32,34,0,34,0,62,0,34, + 0,34,0,32,0,32,0,32,0,32,0,254,0,12,14,28, + 15,1,0,15,32,48,160,96,96,64,32,128,0,128,0,128, + 0,128,0,131,240,128,32,64,32,96,32,48,64,15,128,13, + 14,28,15,1,0,248,248,32,32,32,32,32,32,32,32,32, + 32,63,224,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,14,28,15,3,0,255,128,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,255,128,12,14,28,15,2,0,31,240,0,128,0,128,0, + 128,0,128,0,128,0,128,0,128,128,128,128,128,128,128,129, + 0,67,0,60,0,13,14,28,15,1,0,248,240,32,64,32, + 128,33,0,34,0,36,0,44,0,50,0,33,0,32,128,32, + 64,32,64,32,32,248,120,12,14,28,15,1,0,254,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16, + 16,16,16,16,16,16,16,255,240,13,14,28,15,1,0,224, + 56,96,48,96,48,80,80,80,80,72,144,72,144,69,16,71, + 16,64,16,64,16,64,16,64,16,240,120,14,14,28,15,0, + 0,240,252,48,16,40,16,36,16,36,16,34,16,34,16,33, + 16,33,16,32,144,32,144,32,80,32,48,252,48,13,14,28, + 15,1,0,15,128,48,96,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,128,8,64,16,96,48,48,96,15,128,11, + 14,28,15,2,0,255,128,32,64,32,32,32,32,32,32,32, + 32,32,64,63,128,32,0,32,0,32,0,32,0,32,0,254, + 0,13,16,32,15,1,254,15,128,48,96,96,48,64,16,128, + 8,128,8,128,8,128,8,128,8,128,8,64,16,96,48,48, + 96,15,128,6,48,27,192,13,14,28,15,1,0,255,128,32, + 64,32,32,32,32,32,32,32,32,32,64,63,128,33,0,32, + 128,32,64,32,64,32,32,248,56,10,14,28,15,2,0,30, + 64,97,64,128,192,128,64,128,0,96,0,30,0,1,128,0, + 64,0,64,128,64,192,64,160,128,159,0,11,14,28,15,2, + 0,255,224,132,32,132,32,132,32,132,32,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,63,128,12,14,28, + 15,1,0,249,240,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,32,64,32,64,32,32,64,31,128,13, + 14,28,15,1,0,248,248,64,16,64,16,32,32,32,32,16, + 64,16,64,16,64,8,128,8,128,8,128,5,0,7,0,2, + 0,13,14,28,15,1,0,248,248,64,16,64,16,66,16,66, + 16,69,16,69,16,37,32,40,160,40,160,40,160,48,96,48, + 96,48,96,13,14,28,15,1,0,248,248,32,32,16,64,16, + 64,8,128,5,0,2,0,5,0,8,128,8,128,16,64,32, + 32,32,32,248,248,13,14,28,15,1,0,240,120,32,32,16, + 64,16,64,8,128,8,128,5,0,2,0,2,0,2,0,2, + 0,2,0,2,0,31,192,10,14,28,15,2,0,255,192,128, + 64,128,128,129,0,130,0,2,0,4,0,8,0,16,0,16, + 64,32,64,64,64,128,64,255,192,3,19,19,15,7,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,224,9,18,36,15,3,254,128,0,128,0,64,0,64,0, + 32,0,32,0,16,0,16,0,8,0,8,0,4,0,4,0, + 2,0,2,0,1,0,1,0,0,128,0,128,3,19,19,15, + 5,253,224,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,9,5,10,15,3,11,8,0,28,0,34, + 0,65,0,128,128,15,1,2,15,0,251,255,254,5,4,4, + 15,4,12,192,96,48,24,11,11,22,15,2,0,62,0,65, + 0,0,128,0,128,62,128,65,128,128,128,128,128,128,128,65, + 128,62,224,13,15,30,15,1,0,224,0,32,0,32,0,32, + 0,39,192,40,48,48,16,32,8,32,8,32,8,32,8,32, + 8,48,16,40,48,231,192,11,11,22,15,2,0,31,64,96, + 192,64,64,128,64,128,0,128,0,128,0,128,0,64,96,96, + 192,31,0,13,15,30,15,1,0,0,224,0,32,0,32,0, + 32,31,32,96,160,64,96,128,32,128,32,128,32,128,32,128, + 32,64,96,96,160,31,56,11,11,22,15,2,0,31,0,96, + 192,64,64,128,32,128,32,255,224,128,0,128,0,64,0,96, + 96,31,128,10,15,30,15,3,0,15,128,24,64,16,0,16, + 0,255,128,16,0,16,0,16,0,16,0,16,0,16,0,16, + 0,16,0,16,0,255,128,13,16,32,15,1,251,31,56,96, + 160,64,96,128,32,128,32,128,32,128,32,128,32,64,96,96, + 160,31,32,0,32,0,32,0,64,0,192,63,0,13,15,30, + 15,1,0,224,0,32,0,32,0,32,0,39,128,40,64,48, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,16,32,15,3,0,8,0,8,0,8,0,0,0,0, + 0,120,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,128,8,21,21,15,3,251,2,2,2, + 0,0,255,1,1,1,1,1,1,1,1,1,1,1,1,2, + 6,248,11,15,30,15,2,0,224,0,32,0,32,0,32,0, + 35,192,33,0,34,0,36,0,40,0,56,0,36,0,34,0, + 33,0,32,128,225,224,11,15,30,15,2,0,124,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,14,11,22,15,0,0, + 238,112,49,136,33,8,33,8,33,8,33,8,33,8,33,8, + 33,8,33,8,249,140,13,11,22,15,1,0,231,128,40,64, + 48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 248,248,11,11,22,15,2,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,13,16, + 32,15,1,251,231,192,40,48,48,16,32,8,32,8,32,8, + 32,8,32,8,48,16,40,48,39,192,32,0,32,0,32,0, + 32,0,252,0,13,16,32,15,1,251,31,56,96,160,64,96, + 128,32,128,32,128,32,128,32,128,32,64,96,96,160,31,32, + 0,32,0,32,0,32,0,32,1,248,11,11,22,15,2,0, + 113,192,22,32,24,0,16,0,16,0,16,0,16,0,16,0, + 16,0,16,0,255,128,9,11,22,15,3,0,62,128,65,128, + 64,128,64,0,56,0,7,0,0,128,0,128,128,128,193,0, + 190,0,10,15,30,15,2,0,32,0,32,0,32,0,32,0, + 255,128,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,16,192,15,0,12,11,22,15,1,0,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,16,160, + 15,48,13,11,22,15,1,0,248,248,32,32,32,32,16,64, + 16,64,16,64,8,128,8,128,5,0,7,0,2,0,13,11, + 22,15,1,0,240,120,64,16,64,16,66,16,34,32,37,32, + 37,32,37,32,21,64,24,192,24,192,11,11,22,15,2,0, + 241,224,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,241,224,12,16,32,15,1,251,240,240,64,32, + 64,32,32,64,32,64,32,128,16,128,17,0,9,0,10,0, + 6,0,4,0,4,0,8,0,8,0,254,0,9,11,22,15, + 3,0,255,128,128,128,129,0,2,0,4,0,8,0,16,0, + 32,0,64,128,128,128,255,128,5,19,19,15,5,253,24,32, + 32,32,32,32,32,32,32,192,32,32,32,32,32,32,32,32, + 24,1,17,17,15,7,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,5,19,19,15,5,253,192,32, + 32,32,32,32,32,32,32,24,32,32,32,32,32,32,32,32, + 192,12,3,6,15,1,6,60,48,102,96,195,192,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,15,0,1,2,16,16,15,6,251,192,192,0,0,0,128, + 128,128,192,192,192,192,192,192,192,192,8,16,16,15,3,0, + 8,8,8,8,29,99,65,128,128,128,64,99,28,8,8,8, + 10,14,28,15,2,0,14,0,17,128,32,0,32,0,32,0, + 32,0,254,0,16,0,16,0,16,0,16,0,32,64,64,64, + 255,128,10,10,20,15,2,2,128,64,94,128,33,0,64,128, + 64,128,64,128,64,128,33,0,94,128,128,64,11,14,28,15, + 2,0,241,224,64,64,32,128,32,128,17,0,17,0,10,0, + 127,192,4,0,4,0,127,192,4,0,4,0,63,128,1,19, + 19,15,7,253,128,128,128,128,128,128,128,128,0,0,0,128, + 128,128,128,128,128,128,128,10,18,36,15,2,254,15,192,16, + 64,32,64,32,64,32,0,112,0,140,0,130,0,65,0,32, + 128,16,64,12,64,3,128,1,0,129,0,129,0,130,0,252, + 0,7,2,2,15,4,12,198,198,13,13,26,15,1,1,15, + 128,48,96,64,16,70,144,137,136,144,136,144,8,144,8,136, + 136,71,16,64,16,48,96,15,128,7,9,9,15,4,5,120, + 132,60,68,132,140,118,0,254,12,11,22,15,1,0,6,48, + 12,96,24,192,49,128,99,0,198,0,99,0,49,128,24,192, + 12,96,6,48,11,4,8,15,2,5,255,224,0,32,0,32, + 0,32,10,1,2,15,2,7,255,192,13,13,26,15,1,1, + 15,128,48,96,64,16,79,16,136,136,136,136,143,8,137,8, + 136,136,72,144,64,16,48,96,15,128,7,1,1,15,4,12, + 254,7,7,7,15,4,9,56,68,130,130,130,68,56,11,13, + 26,15,2,1,4,0,4,0,4,0,4,0,4,0,255,224, + 4,0,4,0,4,0,4,0,4,0,0,0,255,224,6,9, + 9,15,4,7,56,68,132,4,8,16,32,68,252,6,9,9, + 15,4,7,120,132,4,8,56,4,4,132,120,5,4,4,15, + 5,12,24,48,96,192,12,16,32,15,1,251,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,48,160, + 47,48,32,0,32,0,32,0,32,0,32,0,11,18,36,15, + 2,254,31,224,100,128,196,128,196,128,196,128,196,128,196,128, + 100,128,28,128,4,128,4,128,4,128,4,128,4,128,4,128, + 4,128,4,128,60,224,3,3,3,15,6,6,224,224,224,4, + 5,5,15,5,252,32,32,16,144,96,7,9,9,15,4,7, + 48,208,16,16,16,16,16,16,254,7,9,9,15,4,5,56, + 68,130,130,130,68,56,0,254,12,11,22,15,1,0,198,0, + 99,0,49,128,24,192,12,96,6,48,12,96,24,192,49,128, + 99,0,198,0,14,16,32,15,0,0,48,0,208,0,16,8, + 16,16,16,32,16,32,16,64,16,152,255,40,2,72,4,72, + 4,136,9,8,17,252,0,8,0,28,14,16,32,15,0,0, + 48,0,208,0,16,8,16,16,16,32,16,32,16,64,16,184, + 255,68,2,132,4,4,4,8,8,16,16,32,0,68,0,252, + 14,16,32,15,0,0,120,0,132,0,4,8,8,16,56,32, + 4,32,4,64,132,152,121,40,2,72,4,72,4,136,9,8, + 17,252,0,8,0,28,8,14,14,15,3,253,24,24,0,0, + 8,8,48,64,128,128,128,129,65,62,13,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,63,0,5,0,8,128, + 8,128,8,128,16,64,16,64,16,64,63,224,32,32,32,32, + 64,16,64,16,240,120,13,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,63,0,5,0,8,128,8,128,8,128, + 16,64,16,64,16,64,63,224,32,32,32,32,64,16,64,16, + 240,120,13,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,63,0,5,0,8,128,8,128,8,128,16,64,16,64, + 16,64,63,224,32,32,32,32,64,16,64,16,240,120,13,18, + 36,15,1,0,28,64,54,192,35,128,0,0,63,0,5,0, + 8,128,8,128,8,128,16,64,16,64,16,64,63,224,32,32, + 32,32,64,16,64,16,240,120,13,18,36,15,1,0,24,192, + 24,192,0,0,0,0,63,0,5,0,8,128,8,128,8,128, + 16,64,16,64,16,64,63,224,32,32,32,32,64,16,64,16, + 240,120,13,19,38,15,1,0,7,0,8,128,8,128,8,128, + 7,0,63,0,5,0,8,128,8,128,8,128,16,64,16,64, + 16,64,63,224,32,32,32,32,64,16,64,16,240,120,15,14, + 28,15,255,0,15,254,2,130,4,130,4,130,4,136,8,136, + 8,248,8,136,31,136,16,130,16,130,32,130,32,130,243,254, + 11,18,36,15,2,252,15,32,48,224,96,96,64,32,128,0, + 128,0,128,0,128,0,128,0,128,0,64,32,96,96,48,192, + 15,0,4,0,2,0,18,0,12,0,12,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,255,224,32,32,32,32, + 32,32,34,0,34,0,62,0,34,0,34,0,32,16,32,16, + 32,16,32,16,255,240,12,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,255,224,32,32,32,32,32,32,34,0, + 34,0,62,0,34,0,34,0,32,16,32,16,32,16,32,16, + 255,240,12,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,255,224,32,32,32,32,32,32,34,0,34,0,62,0, + 34,0,34,0,32,16,32,16,32,16,32,16,255,240,12,18, + 36,15,1,0,25,128,25,128,0,0,0,0,255,224,32,32, + 32,32,32,32,34,0,34,0,62,0,34,0,34,0,32,16, + 32,16,32,16,32,16,255,240,9,19,38,15,3,0,96,0, + 48,0,24,0,12,0,0,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,255,128,9,19,38,15,3,0,3,0,6,0,12,0, + 24,0,0,0,255,128,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,255,128, + 9,19,38,15,3,0,24,0,60,0,102,0,195,0,0,0, + 255,128,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,255,128,9,18,36,15, + 3,0,99,0,99,0,0,0,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,13,14,28,15,0,0,127,192,32,48, + 32,16,32,8,32,8,32,8,252,8,32,8,32,8,32,8, + 32,8,32,16,32,48,127,192,14,18,36,15,0,0,14,32, + 27,96,17,192,0,0,240,252,48,16,40,16,36,16,36,16, + 34,16,34,16,33,16,33,16,32,144,32,144,32,80,32,48, + 252,48,13,19,38,15,1,0,24,0,12,0,6,0,3,0, + 0,0,15,128,48,96,96,48,64,16,128,8,128,8,128,8, + 128,8,128,8,128,8,64,16,96,48,48,96,15,128,13,19, + 38,15,1,0,0,96,0,192,1,128,3,0,0,0,15,128, + 48,96,96,48,64,16,128,8,128,8,128,8,128,8,128,8, + 128,8,64,16,96,48,48,96,15,128,13,19,38,15,1,0, + 3,0,7,128,12,192,24,96,0,0,15,128,48,96,96,48, + 64,16,128,8,128,8,128,8,128,8,128,8,128,8,64,16, + 96,48,48,96,15,128,13,18,36,15,1,0,14,32,27,96, + 17,192,0,0,15,128,48,96,96,48,64,16,128,8,128,8, + 128,8,128,8,128,8,128,8,64,16,96,48,48,96,15,128, + 13,18,36,15,1,0,24,192,24,192,0,0,0,0,15,128, + 48,96,96,48,64,16,128,8,128,8,128,8,128,8,128,8, + 128,8,64,16,96,48,48,96,15,128,11,11,22,15,2,2, + 128,32,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,128,32,14,15,30,15,0,0,0,4,7,200, + 24,48,48,48,32,72,64,136,64,136,65,8,66,8,68,8, + 72,8,48,16,48,48,88,96,135,128,12,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,249,240,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,32,64,31,128,12,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,249,240,64,32,64,32,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,32,64, + 31,128,12,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,249,240,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,32,64,31,128,12,18, + 36,15,1,0,25,128,25,128,0,0,0,0,249,240,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,32,32,64,31,128,13,19,38,15,1,0,0,192, + 1,128,3,0,6,0,0,0,240,120,32,32,16,64,16,64, + 8,128,8,128,5,0,2,0,2,0,2,0,2,0,2,0, + 2,0,31,192,11,14,28,15,2,0,248,0,32,0,32,0, + 63,128,32,64,32,32,32,32,32,32,32,32,32,64,63,128, + 32,0,32,0,248,0,11,16,32,15,2,0,14,0,17,0, + 32,128,32,128,32,128,32,128,33,0,39,0,32,192,32,64, + 32,32,32,32,32,32,36,32,36,64,243,128,11,16,32,15, + 2,0,48,0,24,0,12,0,6,0,0,0,30,0,97,0, + 0,128,0,128,0,128,63,128,64,128,128,128,128,128,129,128, + 126,224,11,16,32,15,2,0,1,128,3,0,6,0,12,0, + 0,0,30,0,97,0,0,128,0,128,0,128,63,128,64,128, + 128,128,128,128,129,128,126,224,11,16,32,15,2,0,12,0, + 30,0,51,0,97,128,0,0,30,0,97,0,0,128,0,128, + 0,128,63,128,64,128,128,128,128,128,129,128,126,224,11,15, + 30,15,2,0,56,128,109,128,71,0,0,0,30,0,97,0, + 0,128,0,128,0,128,63,128,64,128,128,128,128,128,129,128, + 126,224,11,15,30,15,2,0,49,128,49,128,0,0,0,0, + 30,0,97,0,0,128,0,128,0,128,63,128,64,128,128,128, + 128,128,129,128,126,224,11,17,34,15,2,0,14,0,17,0, + 17,0,17,0,14,0,0,0,30,0,97,0,0,128,0,128, + 0,128,63,128,64,128,128,128,128,128,129,128,126,224,15,11, + 22,15,0,0,28,112,98,140,65,4,1,2,1,2,63,254, + 65,0,129,0,129,2,130,132,124,120,11,15,30,15,2,252, + 31,64,96,192,64,64,128,64,128,0,128,0,128,0,128,0, + 64,96,96,192,31,0,4,0,2,0,18,0,12,0,11,16, + 32,15,2,0,48,0,24,0,12,0,6,0,0,0,31,0, + 96,192,64,64,128,32,128,32,255,224,128,0,128,0,64,0, + 96,96,31,128,11,16,32,15,2,0,1,128,3,0,6,0, + 12,0,0,0,31,0,96,192,64,64,128,32,128,32,255,224, + 128,0,128,0,64,0,96,96,31,128,11,16,32,15,2,0, + 12,0,30,0,51,0,97,128,0,0,31,0,96,192,64,64, + 128,32,128,32,255,224,128,0,128,0,64,0,96,96,31,128, + 11,15,30,15,2,0,49,128,49,128,0,0,0,0,31,0, + 96,192,64,64,128,32,128,32,255,224,128,0,128,0,64,0, + 96,96,31,128,9,16,32,15,3,0,96,0,48,0,24,0, + 12,0,0,0,120,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,255,128,9,16,32,15,3,0, + 3,0,6,0,12,0,24,0,0,0,120,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,255,128, + 9,16,32,15,3,0,24,0,60,0,102,0,195,0,0,0, + 120,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,9,15,30,15,3,0,99,0,99,0, + 0,0,0,0,120,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,255,128,12,16,32,15,1,0, + 124,192,135,0,13,0,48,128,0,64,15,224,48,96,32,48, + 64,16,64,16,64,16,64,16,64,16,32,32,48,96,15,128, + 13,15,30,15,1,0,28,64,54,192,35,128,0,0,231,128, + 40,64,48,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,248,248,11,16,32,15,2,0,24,0,12,0,6,0, + 3,0,0,0,31,0,96,192,64,64,128,32,128,32,128,32, + 128,32,128,32,64,64,96,192,31,0,11,16,32,15,2,0, + 1,128,3,0,6,0,12,0,0,0,31,0,96,192,64,64, + 128,32,128,32,128,32,128,32,128,32,64,64,96,192,31,0, + 11,16,32,15,2,0,12,0,30,0,51,0,97,128,0,0, + 31,0,96,192,64,64,128,32,128,32,128,32,128,32,128,32, + 64,64,96,192,31,0,11,15,30,15,2,0,28,64,54,192, + 35,128,0,0,31,0,96,192,64,64,128,32,128,32,128,32, + 128,32,128,32,64,64,96,192,31,0,11,15,30,15,2,0, + 49,128,49,128,0,0,0,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,11,9, + 18,15,2,3,14,0,14,0,0,0,0,0,255,224,0,0, + 0,0,14,0,14,0,12,12,24,15,1,0,0,16,15,160, + 48,64,32,160,65,16,66,16,68,16,72,16,80,16,32,32, + 80,96,143,128,12,16,32,15,1,0,24,0,12,0,6,0, + 3,0,0,0,224,224,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,96,16,160,15,48,12,16,32,15,1,0, + 0,192,1,128,3,0,6,0,0,0,224,224,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,96,16,160,15,48, + 12,16,32,15,1,0,6,0,15,0,25,128,48,192,0,0, + 224,224,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,96,16,160,15,48,12,15,30,15,1,0,25,128,25,128, + 0,0,0,0,224,224,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,96,16,160,15,48,12,21,42,15,1,251, + 0,192,1,128,3,0,6,0,0,0,240,240,64,32,64,32, + 32,64,32,64,32,128,16,128,17,0,9,0,10,0,6,0, + 4,0,4,0,8,0,8,0,254,0,13,21,42,15,1,251, + 224,0,32,0,32,0,32,0,32,0,39,192,56,48,48,16, + 32,8,32,8,32,8,32,8,32,8,48,16,56,48,39,192, + 32,0,32,0,32,0,32,0,252,0,12,20,40,15,1,251, + 25,128,25,128,0,0,0,0,240,240,64,32,64,32,32,64, + 32,64,32,128,16,128,17,0,9,0,10,0,6,0,4,0, + 4,0,8,0,8,0,254,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 15 + Calculated Max Values w=15 h=21 x= 7 y=12 dx=15 dy= 0 ascent=17 len=40 + Font Bounding box w=23 h=32 x=-5 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR18r[2862] U8G_SECTION(".progmem.u8g_font_courR18r") = { + 0,23,32,251,248,14,3,161,7,151,32,127,251,17,251,16, + 251,0,0,0,15,0,1,2,16,16,15,6,0,192,192,192, + 192,192,192,192,192,128,128,128,0,0,0,192,192,8,7,7, + 15,3,9,231,231,231,231,66,66,66,10,17,34,15,2,255, + 9,0,9,0,9,0,9,0,9,0,9,0,127,192,18,0, + 18,0,18,0,255,128,18,0,18,0,18,0,18,0,18,0, + 18,0,9,20,40,15,3,253,8,0,8,0,8,0,30,128, + 33,128,64,128,64,0,64,0,32,0,30,0,1,0,0,128, + 0,128,128,128,193,0,190,0,8,0,8,0,8,0,8,0, + 12,16,32,15,1,0,28,0,34,0,65,0,65,0,65,0, + 34,0,28,112,3,128,28,0,225,192,2,32,4,16,4,16, + 4,16,2,32,1,192,10,13,26,15,2,0,29,0,38,0, + 32,0,32,0,16,0,48,0,73,128,137,0,134,0,130,0, + 131,0,69,0,56,192,3,7,7,15,6,8,224,224,224,224, + 224,64,64,4,19,19,15,7,253,16,32,32,64,64,64,128, + 128,128,128,128,128,128,64,64,64,32,32,16,4,19,19,15, + 3,253,128,64,64,32,32,32,16,16,16,16,16,16,16,32, + 32,32,64,64,128,9,9,18,15,3,7,8,0,8,0,8, + 0,201,128,127,0,28,0,54,0,99,0,193,128,11,11,22, + 15,2,2,4,0,4,0,4,0,4,0,4,0,255,224,4, + 0,4,0,4,0,4,0,4,0,5,6,6,15,4,253,56, + 56,112,96,192,128,10,1,2,15,2,7,255,192,3,3,3, + 15,6,0,224,224,224,9,18,36,15,3,254,0,128,0,128, + 1,0,1,0,2,0,2,0,4,0,4,0,8,0,8,0, + 16,0,16,0,32,0,32,0,64,0,64,0,128,0,128,0, + 9,15,30,15,3,0,28,0,99,0,65,0,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 99,0,28,0,9,15,30,15,3,0,24,0,232,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,10,15,30,15,2,0,30,0, + 97,0,128,128,128,128,0,128,0,128,1,0,2,0,4,0, + 8,0,16,0,32,0,64,0,128,64,255,192,10,15,30,15, + 2,0,62,0,65,128,0,128,0,128,0,128,1,0,30,0, + 1,128,0,64,0,64,0,64,0,64,128,64,97,128,30,0, + 10,15,30,15,2,0,3,0,5,0,9,0,9,0,17,0, + 33,0,33,0,65,0,65,0,129,0,255,192,1,0,1,0, + 1,0,15,192,10,15,30,15,2,0,127,128,64,0,64,0, + 64,0,64,0,94,0,97,128,0,128,0,64,0,64,0,64, + 0,64,0,128,193,128,62,0,9,15,30,15,3,0,15,0, + 48,0,96,0,64,0,128,0,158,0,161,0,192,128,128,128, + 128,128,128,128,128,128,64,128,97,0,30,0,9,15,30,15, + 2,0,255,128,128,128,129,0,1,0,1,0,2,0,2,0, + 2,0,2,0,4,0,4,0,4,0,8,0,8,0,8,0, + 10,15,30,15,2,0,30,0,33,0,64,128,64,128,64,128, + 64,128,33,0,63,0,64,128,128,64,128,64,128,64,64,128, + 97,128,30,0,9,15,30,15,3,0,28,0,99,0,193,128, + 128,128,128,128,128,128,65,128,98,128,28,128,0,128,0,128, + 1,0,1,0,6,0,248,0,3,11,11,15,6,0,224,224, + 224,0,0,0,0,0,224,224,224,5,14,14,15,4,253,56, + 56,56,0,0,0,0,0,56,56,112,96,192,128,11,11,22, + 15,1,2,0,96,1,128,6,0,24,0,96,0,192,0,96, + 0,24,0,6,0,1,128,0,96,12,4,8,15,1,5,255, + 240,0,0,0,0,255,240,11,11,22,15,2,2,192,0,48, + 0,12,0,3,0,0,192,0,96,0,192,3,0,12,0,48, + 0,192,0,8,14,14,15,3,0,124,130,129,1,1,1,2, + 12,16,16,0,0,24,24,10,18,36,15,2,254,30,0,97, + 0,64,128,128,128,128,128,131,128,132,128,136,128,136,128,136, + 128,136,128,132,128,131,192,128,0,128,0,64,0,97,128,31, + 0,13,14,28,15,1,0,63,0,5,0,8,128,8,128,8, + 128,16,64,16,64,16,64,63,224,32,32,32,32,64,16,64, + 16,240,120,12,14,28,15,1,0,255,192,32,32,32,16,32, + 16,32,16,32,32,63,192,32,32,32,16,32,16,32,16,32, + 16,32,32,255,192,11,14,28,15,2,0,15,32,48,160,96, + 96,64,32,128,0,128,0,128,0,128,0,128,0,128,0,64, + 32,96,96,48,192,15,0,12,14,28,15,1,0,255,128,64, + 96,64,32,64,16,64,16,64,16,64,16,64,16,64,16,64, + 16,64,16,64,32,64,96,255,128,12,14,28,15,1,0,255, + 224,32,32,32,32,32,32,34,0,34,0,62,0,34,0,34, + 0,32,16,32,16,32,16,32,16,255,240,11,14,28,15,2, + 0,255,224,32,32,32,32,32,32,34,0,34,0,62,0,34, + 0,34,0,32,0,32,0,32,0,32,0,254,0,12,14,28, + 15,1,0,15,32,48,160,96,96,64,32,128,0,128,0,128, + 0,128,0,131,240,128,32,64,32,96,32,48,64,15,128,13, + 14,28,15,1,0,248,248,32,32,32,32,32,32,32,32,32, + 32,63,224,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,14,28,15,3,0,255,128,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,255,128,12,14,28,15,2,0,31,240,0,128,0,128,0, + 128,0,128,0,128,0,128,0,128,128,128,128,128,128,128,129, + 0,67,0,60,0,13,14,28,15,1,0,248,240,32,64,32, + 128,33,0,34,0,36,0,44,0,50,0,33,0,32,128,32, + 64,32,64,32,32,248,120,12,14,28,15,1,0,254,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16, + 16,16,16,16,16,16,16,255,240,13,14,28,15,1,0,224, + 56,96,48,96,48,80,80,80,80,72,144,72,144,69,16,71, + 16,64,16,64,16,64,16,64,16,240,120,14,14,28,15,0, + 0,240,252,48,16,40,16,36,16,36,16,34,16,34,16,33, + 16,33,16,32,144,32,144,32,80,32,48,252,48,13,14,28, + 15,1,0,15,128,48,96,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,128,8,64,16,96,48,48,96,15,128,11, + 14,28,15,2,0,255,128,32,64,32,32,32,32,32,32,32, + 32,32,64,63,128,32,0,32,0,32,0,32,0,32,0,254, + 0,13,16,32,15,1,254,15,128,48,96,96,48,64,16,128, + 8,128,8,128,8,128,8,128,8,128,8,64,16,96,48,48, + 96,15,128,6,48,27,192,13,14,28,15,1,0,255,128,32, + 64,32,32,32,32,32,32,32,32,32,64,63,128,33,0,32, + 128,32,64,32,64,32,32,248,56,10,14,28,15,2,0,30, + 64,97,64,128,192,128,64,128,0,96,0,30,0,1,128,0, + 64,0,64,128,64,192,64,160,128,159,0,11,14,28,15,2, + 0,255,224,132,32,132,32,132,32,132,32,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,63,128,12,14,28, + 15,1,0,249,240,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,32,64,32,64,32,32,64,31,128,13, + 14,28,15,1,0,248,248,64,16,64,16,32,32,32,32,16, + 64,16,64,16,64,8,128,8,128,8,128,5,0,7,0,2, + 0,13,14,28,15,1,0,248,248,64,16,64,16,66,16,66, + 16,69,16,69,16,37,32,40,160,40,160,40,160,48,96,48, + 96,48,96,13,14,28,15,1,0,248,248,32,32,16,64,16, + 64,8,128,5,0,2,0,5,0,8,128,8,128,16,64,32, + 32,32,32,248,248,13,14,28,15,1,0,240,120,32,32,16, + 64,16,64,8,128,8,128,5,0,2,0,2,0,2,0,2, + 0,2,0,2,0,31,192,10,14,28,15,2,0,255,192,128, + 64,128,128,129,0,130,0,2,0,4,0,8,0,16,0,16, + 64,32,64,64,64,128,64,255,192,3,19,19,15,7,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,224,9,18,36,15,3,254,128,0,128,0,64,0,64,0, + 32,0,32,0,16,0,16,0,8,0,8,0,4,0,4,0, + 2,0,2,0,1,0,1,0,0,128,0,128,3,19,19,15, + 5,253,224,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,9,5,10,15,3,11,8,0,28,0,34, + 0,65,0,128,128,15,1,2,15,0,251,255,254,5,4,4, + 15,4,12,192,96,48,24,11,11,22,15,2,0,62,0,65, + 0,0,128,0,128,62,128,65,128,128,128,128,128,128,128,65, + 128,62,224,13,15,30,15,1,0,224,0,32,0,32,0,32, + 0,39,192,40,48,48,16,32,8,32,8,32,8,32,8,32, + 8,48,16,40,48,231,192,11,11,22,15,2,0,31,64,96, + 192,64,64,128,64,128,0,128,0,128,0,128,0,64,96,96, + 192,31,0,13,15,30,15,1,0,0,224,0,32,0,32,0, + 32,31,32,96,160,64,96,128,32,128,32,128,32,128,32,128, + 32,64,96,96,160,31,56,11,11,22,15,2,0,31,0,96, + 192,64,64,128,32,128,32,255,224,128,0,128,0,64,0,96, + 96,31,128,10,15,30,15,3,0,15,128,24,64,16,0,16, + 0,255,128,16,0,16,0,16,0,16,0,16,0,16,0,16, + 0,16,0,16,0,255,128,13,16,32,15,1,251,31,56,96, + 160,64,96,128,32,128,32,128,32,128,32,128,32,64,96,96, + 160,31,32,0,32,0,32,0,64,0,192,63,0,13,15,30, + 15,1,0,224,0,32,0,32,0,32,0,39,128,40,64,48, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,16,32,15,3,0,8,0,8,0,8,0,0,0,0, + 0,120,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,128,8,21,21,15,3,251,2,2,2, + 0,0,255,1,1,1,1,1,1,1,1,1,1,1,1,2, + 6,248,11,15,30,15,2,0,224,0,32,0,32,0,32,0, + 35,192,33,0,34,0,36,0,40,0,56,0,36,0,34,0, + 33,0,32,128,225,224,11,15,30,15,2,0,124,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,14,11,22,15,0,0, + 238,112,49,136,33,8,33,8,33,8,33,8,33,8,33,8, + 33,8,33,8,249,140,13,11,22,15,1,0,231,128,40,64, + 48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 248,248,11,11,22,15,2,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,13,16, + 32,15,1,251,231,192,40,48,48,16,32,8,32,8,32,8, + 32,8,32,8,48,16,40,48,39,192,32,0,32,0,32,0, + 32,0,252,0,13,16,32,15,1,251,31,56,96,160,64,96, + 128,32,128,32,128,32,128,32,128,32,64,96,96,160,31,32, + 0,32,0,32,0,32,0,32,1,248,11,11,22,15,2,0, + 113,192,22,32,24,0,16,0,16,0,16,0,16,0,16,0, + 16,0,16,0,255,128,9,11,22,15,3,0,62,128,65,128, + 64,128,64,0,56,0,7,0,0,128,0,128,128,128,193,0, + 190,0,10,15,30,15,2,0,32,0,32,0,32,0,32,0, + 255,128,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,16,192,15,0,12,11,22,15,1,0,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,16,160, + 15,48,13,11,22,15,1,0,248,248,32,32,32,32,16,64, + 16,64,16,64,8,128,8,128,5,0,7,0,2,0,13,11, + 22,15,1,0,240,120,64,16,64,16,66,16,34,32,37,32, + 37,32,37,32,21,64,24,192,24,192,11,11,22,15,2,0, + 241,224,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,241,224,12,16,32,15,1,251,240,240,64,32, + 64,32,32,64,32,64,32,128,16,128,17,0,9,0,10,0, + 6,0,4,0,4,0,8,0,8,0,254,0,9,11,22,15, + 3,0,255,128,128,128,129,0,2,0,4,0,8,0,16,0, + 32,0,64,128,128,128,255,128,5,19,19,15,5,253,24,32, + 32,32,32,32,32,32,32,192,32,32,32,32,32,32,32,32, + 24,1,17,17,15,7,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,5,19,19,15,5,253,192,32, + 32,32,32,32,32,32,32,24,32,32,32,32,32,32,32,32, + 192,12,3,6,15,1,6,60,48,102,96,195,192,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 20 + Calculated Max Values w=19 h=28 x= 9 y=17 dx=20 dy= 0 ascent=26 len=81 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =26 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24[8729] U8G_SECTION(".progmem.u8g_font_courR24") = { + 0,28,42,250,246,19,4,184,10,129,32,255,250,26,250,21, + 250,0,0,0,20,0,1,5,21,21,20,8,0,32,112,112, + 112,112,112,32,32,32,32,32,32,32,32,0,0,0,0,112, + 248,112,11,10,20,20,4,10,241,224,241,224,241,224,241,224, + 241,224,96,192,96,192,64,128,64,128,64,128,13,23,46,20, + 3,254,4,64,4,64,4,64,4,64,12,192,8,128,8,128, + 8,128,127,248,8,128,8,128,8,128,8,128,8,128,255,240, + 8,128,8,128,8,128,9,128,17,0,17,0,17,0,17,0, + 12,25,50,20,4,253,4,0,4,0,4,0,31,32,113,224, + 64,96,128,32,128,0,192,0,96,0,60,0,7,128,0,224, + 0,48,0,16,0,16,128,48,192,96,241,192,159,0,4,0, + 4,0,4,0,4,0,4,0,15,20,40,20,3,0,30,0, + 51,0,97,128,64,128,64,128,97,128,51,0,30,14,0,112, + 3,128,28,0,224,0,1,224,3,48,6,24,4,8,4,8, + 6,24,3,48,1,224,12,17,34,20,3,0,15,192,25,128, + 48,0,32,0,32,0,48,0,16,0,24,0,60,0,100,48, + 70,96,194,64,131,64,193,192,65,128,99,192,62,112,4,11, + 11,20,8,10,112,112,112,112,112,224,224,224,224,224,224,5, + 25,25,20,9,252,8,24,16,48,32,96,96,64,64,192,192, + 192,192,192,192,192,64,64,96,96,32,48,16,24,8,5,25, + 25,20,5,252,128,192,64,96,32,48,48,16,16,24,24,24, + 24,24,24,24,16,16,48,48,32,96,64,192,128,11,13,26, + 20,4,8,4,0,4,0,4,0,4,0,132,32,245,224,31, + 0,14,0,10,0,27,0,49,128,32,128,96,192,15,17,34, + 20,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,255,254,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,6,9,9,20,5,252,60,60,120,120,96, + 224,192,192,128,15,1,2,20,2,9,255,254,5,4,4,20, + 7,0,112,248,248,112,11,25,50,20,4,253,0,32,0,96, + 0,64,0,64,0,192,0,128,1,128,1,0,3,0,2,0, + 2,0,6,0,4,0,12,0,8,0,8,0,24,0,16,0, + 48,0,32,0,96,0,64,0,64,0,192,0,128,0,11,20, + 40,20,4,0,31,0,49,128,96,192,64,64,64,64,128,32, + 128,32,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 192,96,64,64,64,64,96,192,49,128,31,0,11,20,40,20, + 4,0,12,0,60,0,228,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,13,20,40,20,3,0, + 15,192,48,96,96,16,64,16,64,16,0,16,0,48,0,32, + 0,96,0,192,1,128,3,0,6,0,12,0,24,0,48,0, + 96,0,192,0,128,8,255,248,13,20,40,20,3,0,15,128, + 56,224,96,48,0,16,0,16,0,16,0,16,0,32,0,64, + 7,128,0,96,0,16,0,8,0,8,0,8,0,8,0,24, + 192,48,112,224,31,128,13,20,40,20,3,0,0,192,1,64, + 1,64,2,64,6,64,4,64,8,64,24,64,16,64,32,64, + 96,64,64,64,128,64,255,248,0,64,0,64,0,64,0,64, + 0,64,3,248,13,20,40,20,3,0,63,240,32,0,32,0, + 32,0,32,0,32,0,32,0,39,128,60,224,32,48,0,16, + 0,24,0,8,0,8,0,8,0,24,192,16,96,48,56,224, + 15,128,12,20,40,20,4,0,7,192,28,32,48,0,32,0, + 96,0,64,0,192,0,143,128,184,224,160,32,192,48,192,16, + 192,16,192,16,192,16,64,16,96,48,32,32,56,224,15,128, + 11,20,40,20,4,0,255,224,128,32,128,32,0,96,0,64, + 0,64,0,192,0,128,0,128,1,128,1,0,1,0,3,0, + 2,0,2,0,2,0,6,0,4,0,4,0,4,0,11,20, + 40,20,4,0,31,0,96,192,64,64,192,96,128,32,128,32, + 192,96,64,64,49,128,31,0,113,192,64,64,192,96,128,32, + 128,32,128,32,192,96,64,64,113,192,31,0,12,20,40,20, + 4,0,31,0,112,192,64,96,192,32,128,48,128,48,128,48, + 128,48,192,80,64,208,115,144,30,16,0,32,0,32,0,32, + 0,64,0,192,1,128,14,0,120,0,5,14,14,20,7,0, + 112,248,248,112,0,0,0,0,0,0,112,248,248,112,7,18, + 18,20,5,252,28,62,62,28,0,0,0,0,0,60,60,120, + 112,112,224,192,192,128,15,17,34,20,2,1,0,2,0,14, + 0,56,0,224,3,128,6,0,28,0,112,0,192,0,112,0, + 28,0,6,0,3,128,0,224,0,56,0,14,0,2,15,6, + 12,20,2,6,255,254,0,0,0,0,0,0,0,0,255,254, + 15,17,34,20,2,1,128,0,224,0,56,0,14,0,3,128, + 0,192,0,112,0,28,0,6,0,28,0,112,0,192,3,128, + 14,0,56,0,224,0,128,0,11,19,38,20,4,0,63,0, + 225,192,128,64,128,64,0,96,0,32,0,96,0,64,1,192, + 7,0,4,0,4,0,4,0,0,0,0,0,0,0,14,0, + 31,0,14,0,12,23,46,20,3,254,15,128,24,192,48,64, + 96,96,64,32,192,32,128,32,128,224,131,160,134,32,132,32, + 132,32,132,32,134,32,131,32,129,240,128,0,192,0,64,0, + 96,0,48,0,24,224,15,128,19,19,57,20,0,0,31,224, + 0,0,160,0,0,160,0,1,16,0,1,16,0,1,16,0, + 2,8,0,2,8,0,2,8,0,4,4,0,4,4,0,4, + 4,0,15,254,0,8,2,0,8,2,0,16,1,0,16,1, + 0,48,1,128,254,15,224,16,19,38,20,1,0,255,240,16, + 12,16,4,16,6,16,2,16,2,16,6,16,4,16,12,31, + 248,16,6,16,2,16,3,16,1,16,1,16,3,16,2,16, + 6,255,248,14,19,38,20,2,0,7,196,28,116,32,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 0,128,0,192,0,64,0,96,4,32,28,28,112,7,192,15, + 19,38,20,1,0,255,192,32,112,32,24,32,12,32,4,32, + 6,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 6,32,4,32,12,32,24,32,112,255,192,15,19,38,20,1, + 0,255,252,16,4,16,4,16,4,16,4,16,68,16,64,16, + 64,31,192,16,64,16,64,16,64,16,0,16,2,16,2,16, + 2,16,2,16,2,255,254,15,19,38,20,1,0,255,254,16, + 2,16,2,16,2,16,2,16,66,16,64,16,64,31,192,16, + 64,16,64,16,64,16,0,16,0,16,0,16,0,16,0,16, + 0,255,128,15,19,38,20,2,0,7,196,28,116,48,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 254,128,4,192,4,64,4,96,4,48,4,28,28,7,240,15, + 19,38,20,2,0,252,126,32,8,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,63,248,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,32,8,252,126,11,19,38,20,4, + 0,255,224,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,255,224,15,19,38,20,3,0,15,254,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,32,128,32,128,32,128,32,128,32,192,96,64,64,97, + 192,31,0,17,19,57,20,1,0,254,31,128,16,4,0,16, + 12,0,16,8,0,16,16,0,16,48,0,16,64,0,16,192, + 0,19,128,0,28,192,0,16,32,0,16,48,0,16,16,0, + 16,24,0,16,8,0,16,8,0,16,12,0,16,4,0,254, + 7,128,15,19,38,20,2,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,2,8,2,8,2,8,2,8,2,8,2,255,254,19,19, + 57,20,0,0,248,3,224,40,2,128,40,2,128,36,4,128, + 36,4,128,34,8,128,34,8,128,33,16,128,33,16,128,33, + 16,128,32,160,128,32,160,128,32,64,128,32,64,128,32,0, + 128,32,0,128,32,0,128,32,0,128,254,7,224,18,19,57, + 20,0,0,248,31,192,28,1,0,20,1,0,18,1,0,18, + 1,0,17,1,0,16,129,0,16,129,0,16,65,0,16,65, + 0,16,33,0,16,33,0,16,17,0,16,17,0,16,9,0, + 16,9,0,16,5,0,16,7,0,127,3,0,15,19,38,20, + 2,0,7,192,24,48,48,24,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,48,24,24,48,7,192,15,19,38,20,1,0,255,224, + 16,56,16,4,16,6,16,2,16,2,16,2,16,6,16,4, + 16,56,31,224,16,0,16,0,16,0,16,0,16,0,16,0, + 16,0,255,192,15,22,44,20,2,253,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,12,96,7,192, + 2,0,15,198,24,124,18,19,57,20,1,0,255,224,0,16, + 56,0,16,4,0,16,6,0,16,2,0,16,2,0,16,6, + 0,16,4,0,16,24,0,31,224,0,16,96,0,16,48,0, + 16,24,0,16,12,0,16,4,0,16,6,0,16,2,0,16, + 3,0,254,1,192,12,19,38,20,3,0,15,144,56,208,96, + 48,64,48,64,16,64,16,64,0,96,0,56,0,15,0,1, + 192,0,96,0,48,128,16,128,16,192,16,224,48,184,224,143, + 128,15,19,38,20,2,0,255,254,129,2,129,2,129,2,129, + 2,129,2,129,2,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,63,248,17,19,57, + 20,1,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,19,19,57,20, + 0,0,254,15,224,48,1,128,16,1,0,16,1,0,24,3, + 0,8,2,0,8,2,0,12,6,0,4,4,0,4,4,0, + 6,12,0,2,8,0,3,24,0,1,16,0,1,16,0,0, + 160,0,0,160,0,0,224,0,0,64,0,17,19,57,20,1, + 0,252,31,128,64,1,0,64,1,0,64,1,0,64,1,0, + 97,195,0,33,66,0,33,66,0,34,34,0,34,34,0,34, + 34,0,34,34,0,38,50,0,36,18,0,52,22,0,20,20, + 0,20,20,0,24,12,0,24,12,0,17,19,57,20,1,0, + 124,31,0,48,6,0,16,4,0,24,12,0,8,8,0,4, + 16,0,2,32,0,3,96,0,1,192,0,0,128,0,1,192, + 0,2,32,0,4,16,0,12,24,0,8,8,0,16,4,0, + 48,6,0,96,3,0,252,31,128,15,19,38,20,2,0,248, + 62,96,12,48,24,16,16,24,48,8,32,4,64,6,192,2, + 128,3,128,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,31,240,13,19,38,20,3,0,127,240,64,16,64, + 48,64,32,64,96,64,192,0,128,1,128,3,0,6,0,4, + 0,12,0,24,8,16,8,48,8,96,8,64,8,192,8,255, + 248,5,24,24,20,9,252,248,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,248,11, + 25,50,20,4,253,128,0,192,0,64,0,64,0,96,0,32, + 0,48,0,16,0,24,0,8,0,8,0,12,0,4,0,6, + 0,2,0,2,0,3,0,1,0,1,128,0,128,0,192,0, + 64,0,64,0,96,0,32,5,24,24,20,5,252,248,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,248,11,9,18,20,4,12,4,0,14,0,27, + 0,17,0,49,128,96,192,64,64,192,96,128,32,19,1,3, + 20,0,250,255,255,224,6,5,5,20,4,17,192,96,48,24, + 12,15,14,28,20,2,0,15,128,56,224,0,32,0,48,0, + 16,0,16,31,240,112,48,192,16,128,16,128,16,128,48,192, + 240,127,158,17,20,60,20,0,0,240,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,17,248,0,23,14, + 0,20,3,0,24,1,0,24,1,128,16,0,128,16,0,128, + 16,0,128,16,0,128,24,1,128,24,1,0,20,3,0,23, + 14,0,241,248,0,14,14,28,20,3,0,15,136,56,248,96, + 24,64,8,192,8,128,0,128,0,128,0,128,0,192,0,64, + 12,96,24,56,224,15,128,17,20,60,20,2,0,0,60,0, + 0,4,0,0,4,0,0,4,0,0,4,0,0,4,0,15, + 196,0,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,199,128,14,14,28,20,2,0,15, + 192,56,112,96,24,64,8,192,12,128,4,255,252,128,0,128, + 0,192,0,64,0,96,12,56,56,15,224,13,20,40,20,3, + 0,3,224,6,24,4,0,12,0,8,0,8,0,255,240,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,255,240,17,20,60,20,2,250,15, + 199,128,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,196,0,0,4,0,0,4,0,0, + 12,0,0,8,0,0,56,0,15,224,0,16,20,40,20,1, + 0,240,0,16,0,16,0,16,0,16,0,16,0,17,224,23, + 56,20,8,24,12,24,4,16,4,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,124,31,13,20,40,20,3,0,6, + 0,6,0,6,0,0,0,0,0,0,0,126,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,255,248,10,26,52,20,4,250,1,128,1, + 128,1,128,0,0,0,0,0,0,255,192,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,192,0,128,3,128,254, + 0,15,20,40,20,2,0,240,0,16,0,16,0,16,0,16, + 0,16,0,16,252,16,48,16,96,16,192,17,128,19,0,30, + 0,19,0,17,128,16,192,16,96,16,48,16,24,240,62,13, + 20,40,20,3,0,126,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,248,19,14,42, + 20,0,0,231,14,0,41,147,0,48,225,128,48,96,128,32, + 64,128,32,64,128,32,64,128,32,64,128,32,64,128,32,64, + 128,32,64,128,32,64,128,32,64,128,248,112,224,15,14,28, + 20,2,0,227,192,46,112,40,16,48,24,48,8,32,8,32, + 8,32,8,32,8,32,8,32,8,32,8,32,8,248,62,15, + 14,28,20,2,0,15,224,56,56,96,12,64,4,192,6,128, + 2,128,2,128,2,128,2,192,6,64,4,96,12,56,56,15, + 224,17,20,60,20,0,250,1,248,0,247,14,0,20,3,0, + 24,1,0,24,1,128,16,0,128,16,0,128,16,0,128,16, + 0,128,24,1,128,24,1,0,20,3,0,23,14,0,17,248, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 255,0,0,17,20,60,20,2,250,15,192,0,56,119,128,96, + 28,0,64,12,0,192,12,0,128,4,0,128,4,0,128,4, + 0,128,4,0,192,12,0,64,12,0,96,28,0,56,116,0, + 15,196,0,0,4,0,0,4,0,0,4,0,0,4,0,0, + 4,0,0,127,128,15,14,28,20,3,0,120,124,9,198,11, + 0,12,0,12,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,240,13,14,28,20,3,0,15,144,56, + 240,96,48,64,16,96,0,56,0,15,128,0,224,0,48,128, + 24,128,24,192,48,248,224,143,128,14,19,38,20,2,0,16, + 0,16,0,16,0,16,0,16,0,255,240,16,0,16,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,24, + 12,12,56,7,224,16,14,28,20,1,0,240,60,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,16,4,16,4,16, + 12,24,12,12,52,7,231,17,14,42,20,1,0,252,31,128, + 48,6,0,16,4,0,16,4,0,24,12,0,8,8,0,12, + 24,0,4,16,0,4,16,0,6,48,0,2,32,0,3,96, + 0,1,64,0,1,192,0,17,14,42,20,1,0,248,15,128, + 96,3,0,32,2,0,32,2,0,33,194,0,33,66,0,49, + 70,0,19,100,0,18,36,0,18,36,0,22,52,0,28,28, + 0,8,8,0,8,8,0,15,14,28,20,2,0,248,62,96, + 12,48,24,24,48,12,96,6,192,3,128,3,128,6,192,12, + 96,24,48,48,24,96,12,248,62,15,20,40,20,2,250,248, + 62,64,4,96,12,32,8,48,24,16,16,24,48,8,32,12, + 96,4,64,6,192,2,128,3,128,1,0,3,0,2,0,2, + 0,6,0,4,0,255,128,11,14,28,20,4,0,255,224,128, + 96,128,192,129,128,3,0,6,0,4,0,12,0,24,0,48, + 0,96,32,64,32,192,32,255,224,7,25,25,20,6,252,6, + 12,24,16,16,16,16,16,16,16,16,48,96,224,48,16,16, + 16,16,16,16,16,16,24,14,1,25,25,20,9,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,7,25,25,20,6,252,192,96,48, + 16,16,16,16,16,16,16,16,24,12,14,24,16,16,16,16, + 16,16,16,16,48,224,13,5,10,20,3,7,24,0,124,8, + 199,24,129,176,0,224,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,20,0,1,5,20,20, + 20,7,250,112,248,112,0,0,0,0,32,32,32,32,32,32, + 32,112,112,112,112,112,32,11,20,40,20,4,0,4,0,4, + 0,4,0,4,0,31,128,48,224,96,32,192,32,128,0,128, + 0,128,0,128,0,192,0,96,32,48,224,31,128,4,0,4, + 0,4,0,4,0,14,19,38,20,2,0,3,224,12,48,8, + 24,24,0,16,0,16,0,16,0,24,0,8,0,255,128,8, + 0,8,0,8,0,8,0,8,0,24,0,16,4,48,12,127, + 248,13,13,26,20,3,3,192,24,111,176,56,224,32,32,96, + 48,64,16,64,16,64,16,96,48,32,32,56,224,111,176,192, + 24,15,19,38,20,2,0,248,62,96,12,48,24,16,16,24, + 48,8,32,12,96,6,192,2,128,3,128,63,248,1,0,1, + 0,63,248,1,0,1,0,1,0,1,0,31,240,1,25,25, + 20,9,252,128,128,128,128,128,128,128,128,128,128,128,0,0, + 0,0,128,128,128,128,128,128,128,128,128,128,14,23,46,20, + 3,254,7,248,28,8,16,8,16,8,16,0,24,0,124,0, + 198,0,131,0,129,192,192,96,112,56,24,12,12,4,7,4, + 1,132,0,252,0,96,0,32,64,32,64,32,64,224,127,128, + 10,3,6,20,5,17,97,128,243,192,97,128,19,19,57,20, + 0,0,1,240,0,7,28,0,28,7,0,48,1,128,33,232, + 128,99,24,192,70,8,64,204,8,96,136,0,32,136,0,32, + 136,0,32,140,0,32,198,12,96,67,24,64,97,240,192,48, + 1,128,24,3,0,15,30,0,1,240,0,9,12,24,20,5, + 7,60,0,102,0,2,0,2,0,126,0,198,0,130,0,206, + 0,123,128,0,0,0,0,255,128,16,14,28,20,2,0,1, + 131,3,6,6,12,12,24,24,48,48,96,96,192,225,192,96, + 192,48,96,24,48,12,24,6,12,3,6,14,6,12,20,3, + 6,255,252,0,4,0,4,0,4,0,4,0,4,15,1,2, + 20,2,9,255,254,19,19,57,20,0,0,3,248,0,14,14, + 0,24,3,0,48,1,128,103,224,192,66,48,64,194,24,96, + 130,8,32,130,8,32,130,24,32,130,48,32,131,224,32,194, + 48,96,66,24,64,103,12,192,48,1,128,24,3,0,14,14, + 0,3,248,0,9,2,4,20,5,17,255,128,255,128,9,10, + 20,20,5,11,62,0,99,0,65,0,193,128,128,128,128,128, + 193,128,65,0,99,0,62,0,15,16,32,20,2,1,1,0, + 1,0,1,0,1,0,1,0,1,0,255,254,1,0,1,0, + 1,0,1,0,1,0,1,0,0,0,0,0,255,254,8,14, + 14,20,5,7,60,102,67,193,3,2,6,12,24,16,48,96, + 193,255,8,14,14,20,6,7,60,102,195,1,1,6,28,6, + 3,1,1,195,102,60,6,5,5,20,9,17,12,24,48,96, + 192,16,20,40,20,1,250,240,60,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,24,12,24,28,28, + 52,23,231,16,0,16,0,16,0,16,0,16,0,16,0,15, + 23,46,20,2,254,15,254,57,16,113,16,97,16,225,16,193, + 16,193,16,225,16,97,16,113,16,61,16,15,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,31,190,5,4,4,20,7,7,112,248,248,112,5,5,5, + 20,7,251,32,32,48,152,240,7,14,14,20,6,7,112,208, + 16,16,16,16,16,16,16,16,16,16,16,254,9,12,24,20, + 5,7,28,0,119,0,65,0,193,128,128,128,193,128,65,0, + 119,0,28,0,0,0,0,0,255,128,16,14,28,20,2,0, + 193,128,96,192,48,96,24,48,12,24,6,12,3,6,3,135, + 3,6,6,12,12,24,24,48,48,96,96,192,18,21,63,20, + 1,0,48,0,192,240,0,128,16,1,128,16,3,0,16,2, + 0,16,6,0,16,12,0,16,8,0,16,24,0,16,48,0, + 16,35,0,16,103,0,254,197,0,0,141,0,1,153,0,3, + 17,0,2,49,0,6,63,128,12,1,0,8,1,0,24,7, + 128,18,21,63,20,1,0,48,0,128,240,1,128,16,3,0, + 16,6,0,16,4,0,16,12,0,16,24,0,16,16,0,16, + 48,0,16,96,0,16,71,128,16,204,192,253,152,64,3,0, + 192,2,0,128,6,1,128,12,7,0,8,12,0,24,24,0, + 48,48,0,96,63,192,19,21,63,20,0,0,60,0,0,102, + 0,96,3,0,192,3,1,128,6,3,0,28,6,0,6,12, + 0,3,8,0,1,24,0,1,48,0,195,33,128,102,99,128, + 60,194,128,1,134,128,1,12,128,3,8,128,6,24,128,12, + 31,192,24,0,128,48,0,128,0,3,192,11,20,40,20,4, + 250,14,0,31,0,14,0,0,0,0,0,0,0,0,0,4, + 0,4,0,12,0,24,0,112,0,64,0,192,0,128,0,128, + 0,192,32,96,32,49,224,31,0,19,26,78,20,0,0,6, + 0,0,3,0,0,1,128,0,0,192,0,0,96,0,0,0, + 0,0,0,0,31,224,0,0,160,0,1,176,0,1,16,0, + 1,16,0,3,24,0,2,8,0,2,8,0,6,12,0,4, + 4,0,4,4,0,12,6,0,15,254,0,8,2,0,24,3, + 0,16,1,0,16,1,0,48,1,128,254,15,224,19,26,78, + 20,0,0,0,12,0,0,24,0,0,48,0,0,96,0,0, + 192,0,0,0,0,0,0,0,31,224,0,0,160,0,1,176, + 0,1,16,0,1,16,0,3,24,0,2,8,0,2,8,0, + 6,12,0,4,4,0,4,4,0,12,6,0,15,254,0,8, + 2,0,24,3,0,16,1,0,16,1,0,48,1,128,254,15, + 224,19,26,78,20,0,0,0,64,0,0,224,0,1,176,0, + 3,24,0,6,12,0,0,0,0,0,0,0,31,224,0,0, + 160,0,1,176,0,1,16,0,1,16,0,3,24,0,2,8, + 0,2,8,0,6,12,0,4,4,0,4,4,0,12,6,0, + 15,254,0,8,2,0,24,3,0,16,1,0,16,1,0,48, + 1,128,254,15,224,19,24,72,20,0,0,3,132,0,6,236, + 0,4,56,0,0,0,0,0,0,0,31,224,0,0,160,0, + 1,176,0,1,16,0,1,16,0,3,24,0,2,8,0,2, + 8,0,6,12,0,4,4,0,4,4,0,12,6,0,15,254, + 0,8,2,0,24,3,0,16,1,0,16,1,0,48,1,128, + 254,15,224,19,24,72,20,0,0,6,12,0,15,30,0,6, + 12,0,0,0,0,0,0,0,31,224,0,0,160,0,1,176, + 0,1,16,0,1,16,0,3,24,0,2,8,0,2,8,0, + 6,12,0,4,4,0,4,4,0,12,6,0,15,254,0,8, + 2,0,24,3,0,16,1,0,16,1,0,48,1,128,254,15, + 224,19,26,78,20,0,0,0,224,0,1,176,0,1,16,0, + 1,16,0,1,176,0,0,224,0,0,0,0,31,224,0,0, + 160,0,1,176,0,1,16,0,1,16,0,3,24,0,2,8, + 0,2,8,0,6,12,0,4,4,0,4,4,0,12,6,0, + 15,254,0,8,2,0,24,3,0,16,1,0,16,1,0,48, + 1,128,254,15,224,18,19,57,20,1,0,31,255,128,2,64, + 128,2,64,128,6,64,128,4,64,128,4,64,128,4,64,0, + 12,68,0,8,68,0,8,124,0,8,68,0,24,68,0,31, + 192,0,16,64,0,48,64,64,32,64,64,32,64,64,32,64, + 64,251,255,192,15,24,48,20,2,251,7,196,28,116,48,12, + 96,12,64,4,192,4,128,0,128,0,128,0,128,0,128,0, + 128,0,128,0,192,0,64,2,96,4,48,28,28,112,7,192, + 1,0,1,0,1,128,4,192,7,128,15,26,52,20,1,0, + 12,0,6,0,3,0,1,128,0,192,0,0,0,0,255,252, + 16,4,16,4,16,4,16,4,16,4,16,64,16,64,16,64, + 31,192,16,64,16,64,16,0,16,2,16,2,16,2,16,2, + 16,2,255,254,15,26,52,20,1,0,0,48,0,96,0,192, + 1,128,3,0,0,0,0,0,255,252,16,4,16,4,16,4, + 16,4,16,4,16,64,16,64,16,64,31,192,16,64,16,64, + 16,0,16,2,16,2,16,2,16,2,16,2,255,254,15,26, + 52,20,1,0,0,128,1,192,3,96,6,48,12,24,0,0, + 0,0,255,252,16,4,16,4,16,4,16,4,16,4,16,64, + 16,64,16,64,31,192,16,64,16,64,16,0,16,2,16,2, + 16,2,16,2,16,2,255,254,15,24,48,20,1,0,12,48, + 30,120,12,48,0,0,0,0,255,252,16,4,16,4,16,4, + 16,4,16,4,16,64,16,64,16,64,31,192,16,64,16,64, + 16,0,16,2,16,2,16,2,16,2,16,2,255,254,11,26, + 52,20,4,0,48,0,24,0,12,0,6,0,3,0,0,0, + 0,0,255,224,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,255,224,11,26,52,20,4,0,0,192, + 1,128,3,0,6,0,12,0,0,0,0,0,255,224,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 255,224,11,26,52,20,4,0,4,0,14,0,27,0,49,128, + 96,192,0,0,0,0,255,224,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,255,224,11,24,48,20, + 4,0,96,192,241,224,96,192,0,0,0,0,255,224,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 255,224,15,19,38,20,1,0,255,192,32,112,32,24,32,12, + 32,4,32,6,32,2,32,2,32,2,254,2,32,2,32,2, + 32,2,32,6,32,4,32,12,32,24,32,112,255,192,18,24, + 72,20,0,0,3,132,0,6,236,0,4,56,0,0,0,0, + 0,0,0,248,31,192,28,1,0,20,1,0,22,1,0,18, + 1,0,19,1,0,17,129,0,16,129,0,16,193,0,16,65, + 0,16,97,0,16,33,0,16,49,0,16,25,0,16,9,0, + 16,13,0,16,5,0,16,7,0,127,3,0,15,26,52,20, + 2,0,24,0,12,0,6,0,3,0,1,128,0,0,0,0, + 7,192,28,112,48,24,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,32,8, + 48,24,28,112,7,192,15,26,52,20,2,0,0,24,0,48, + 0,96,0,192,1,128,0,0,0,0,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,192,6,64,4,96,12,32,8,48,24,28,112,7,192, + 15,26,52,20,2,0,1,0,3,128,6,192,12,96,24,48, + 0,0,0,0,7,192,28,112,48,24,96,12,64,4,192,6, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,32,8,48,24,28,112,7,192,15,24,48,20,2,0, + 14,16,27,176,16,224,0,0,0,0,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,192,6,64,4,96,12,32,8,48,24,28,112,7,192, + 15,24,48,20,2,0,48,48,120,120,48,48,0,0,0,0, + 7,192,28,112,48,24,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,32,8, + 48,24,28,112,7,192,13,14,28,20,3,1,128,8,192,24, + 96,48,48,96,24,192,13,128,7,0,7,0,13,128,24,192, + 48,96,96,48,192,24,128,8,16,21,42,20,2,255,0,1, + 7,195,28,118,48,28,32,24,96,60,64,36,192,102,128,194, + 129,130,129,2,131,2,134,2,204,6,72,4,120,12,48,8, + 48,24,124,48,199,224,128,0,17,26,78,20,1,0,6,0, + 0,3,0,0,1,128,0,0,192,0,0,96,0,0,0,0, + 0,0,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,17,26,78,20, + 1,0,0,24,0,0,48,0,0,96,0,0,192,0,1,128, + 0,0,0,0,0,0,0,254,63,128,32,2,0,32,2,0, + 32,2,0,32,2,0,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,48,6,0,16,4,0,24,12,0,14,56,0,3,224,0, + 17,26,78,20,1,0,0,128,0,1,192,0,3,96,0,6, + 48,0,12,24,0,0,0,0,0,0,0,254,63,128,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,32,2,0, + 32,2,0,32,2,0,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,48,6,0,16,4,0,24,12,0,14,56, + 0,3,224,0,17,24,72,20,1,0,12,24,0,30,60,0, + 12,24,0,0,0,0,0,0,0,254,63,128,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,32,2,0, + 32,2,0,48,6,0,16,4,0,24,12,0,14,56,0,3, + 224,0,15,26,52,20,2,0,0,48,0,96,0,192,1,128, + 3,0,0,0,0,0,248,62,96,12,48,24,16,16,24,48, + 8,32,12,96,6,192,2,128,3,128,1,0,1,0,1,0, + 1,0,1,0,1,0,1,0,1,0,31,240,16,19,38,20, + 1,0,254,0,16,0,16,0,16,0,31,224,16,60,16,6, + 16,2,16,3,16,3,16,2,16,6,16,60,31,224,16,0, + 16,0,16,0,16,0,254,0,15,21,42,20,1,0,7,192, + 12,96,8,32,24,48,16,16,16,16,16,16,16,48,16,96, + 17,192,16,112,16,24,16,4,16,6,16,2,16,2,16,2, + 17,6,17,4,17,140,248,248,15,22,44,20,2,0,24,0, + 12,0,6,0,3,0,1,128,0,0,0,0,0,0,15,128, + 56,224,0,32,0,48,0,16,0,16,31,240,112,48,192,16, + 128,16,128,16,128,48,192,240,127,158,15,22,44,20,2,0, + 0,96,0,192,1,128,3,0,6,0,0,0,0,0,0,0, + 15,128,56,224,0,32,0,48,0,16,0,16,31,240,112,48, + 192,16,128,16,128,16,128,48,192,240,127,158,15,22,44,20, + 2,0,1,0,3,128,6,192,12,96,24,48,0,0,0,0, + 0,0,15,128,56,224,0,32,0,48,0,16,0,16,31,240, + 112,48,192,16,128,16,128,16,128,48,192,240,127,158,15,20, + 40,20,2,0,14,16,27,176,16,224,0,0,0,0,0,0, + 15,128,56,224,0,32,0,48,0,16,0,16,31,240,112,48, + 192,16,128,16,128,16,128,48,192,240,127,158,15,20,40,20, + 2,0,48,192,121,224,48,192,0,0,0,0,0,0,15,128, + 56,224,0,32,0,48,0,16,0,16,31,240,112,48,192,16, + 128,16,128,16,128,48,192,240,127,158,15,23,46,20,2,0, + 7,0,13,128,8,128,8,128,13,128,7,0,0,0,0,0, + 0,0,15,128,56,224,0,32,0,48,0,16,0,16,31,240, + 112,48,192,16,128,16,128,16,128,48,192,240,127,158,19,14, + 42,20,0,0,31,15,128,113,152,192,0,240,64,0,96,96, + 0,96,32,30,64,32,115,255,224,192,192,0,128,64,0,128, + 96,0,128,224,0,193,80,96,99,88,192,62,79,128,14,19, + 38,20,3,251,15,200,56,104,96,24,64,24,192,8,128,8, + 128,0,128,0,128,0,192,0,64,4,96,28,56,112,15,192, + 2,0,2,0,3,0,9,128,15,0,14,22,44,20,2,0, + 24,0,12,0,6,0,3,0,1,128,0,0,0,0,0,0, + 15,192,56,112,96,24,64,8,192,12,128,4,255,252,128,0, + 128,0,128,0,192,0,96,12,56,56,15,224,14,22,44,20, + 2,0,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,15,192,56,112,96,24,64,8,192,12,128,4,255,252, + 128,0,128,0,128,0,192,0,96,12,56,56,15,224,14,22, + 44,20,2,0,1,0,3,128,6,192,12,96,24,48,0,0, + 0,0,0,0,15,192,56,112,96,24,64,8,192,12,128,4, + 255,252,128,0,128,0,128,0,192,0,96,12,56,56,15,224, + 14,20,40,20,2,0,48,96,120,240,48,96,0,0,0,0, + 0,0,15,192,56,112,96,24,64,8,192,12,128,4,255,252, + 128,0,128,0,128,0,192,0,96,12,56,56,15,224,13,22, + 44,20,3,0,48,0,24,0,12,0,6,0,3,0,0,0, + 0,0,0,0,126,0,2,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,255,248, + 13,22,44,20,3,0,0,192,1,128,3,0,6,0,12,0, + 0,0,0,0,0,0,126,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0, + 255,248,13,21,42,20,3,0,4,0,14,0,27,0,49,128, + 96,192,0,0,0,0,126,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0, + 255,248,13,20,40,20,3,0,97,128,243,192,97,128,0,0, + 0,0,0,0,126,0,2,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,255,248, + 15,20,40,20,2,0,124,12,79,56,1,224,3,192,14,96, + 56,48,32,24,0,12,15,228,56,54,96,14,192,6,128,2, + 128,2,128,2,192,6,64,4,96,12,24,56,15,224,15,20, + 40,20,2,0,14,16,27,176,16,224,0,0,0,0,0,0, + 227,192,46,112,56,16,48,24,32,8,32,8,32,8,32,8, + 32,8,32,8,32,8,32,8,32,8,248,62,15,22,44,20, + 2,0,12,0,6,0,3,0,1,128,0,192,0,0,0,0, + 0,0,15,224,56,56,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,15,224,15,22, + 44,20,2,0,0,48,0,96,0,192,1,128,3,0,0,0, + 0,0,0,0,15,224,56,56,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,192,6,64,4,96,12,56,56,15,224, + 15,22,44,20,2,0,1,128,3,192,6,96,12,48,24,24, + 0,0,0,0,0,0,15,224,56,56,96,12,64,4,192,6, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,56,56, + 15,224,15,20,40,20,2,0,14,16,27,176,16,224,0,0, + 0,0,0,0,15,224,56,56,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,192,6,64,4,96,12,56,56,15,224, + 15,20,40,20,2,0,24,96,60,240,24,96,0,0,0,0, + 0,0,15,224,56,56,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,15,224,14,16, + 32,20,2,1,3,0,7,128,3,0,0,0,0,0,0,0, + 0,0,0,0,255,252,0,0,0,0,0,0,0,0,3,0, + 7,128,3,0,15,16,32,20,2,255,0,2,7,230,28,60, + 48,24,64,52,192,102,128,194,129,130,131,2,134,2,204,6, + 88,4,112,24,120,112,207,192,128,0,16,22,44,20,1,0, + 12,0,6,0,3,0,1,128,0,192,0,0,0,0,0,0, + 240,60,16,4,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,12,24,28,12,52,7,231,16,22,44,20, + 1,0,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,240,60,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,4,16,12,24,28,12,52,7,231,16,21, + 42,20,1,0,0,128,1,192,3,96,6,48,12,24,0,0, + 0,0,240,60,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,4,16,12,24,28,12,52,7,231,16,20, + 40,20,1,0,24,48,60,120,24,48,0,0,0,0,0,0, + 240,60,16,4,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,12,24,28,12,52,7,231,15,28,56,20, + 2,250,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,248,62,64,4,96,12,32,8,48,24,16,16,24,48, + 8,32,12,96,4,64,6,192,2,128,3,128,1,0,3,0, + 2,0,2,0,6,0,4,0,127,128,17,27,81,20,0,250, + 240,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,17,248,0,23,14,0,28,3,0,24,1, + 0,24,1,128,16,0,128,16,0,128,16,0,128,16,0,128, + 24,1,128,24,1,0,28,3,0,23,14,0,17,248,0,16, + 0,0,16,0,0,16,0,0,16,0,0,16,0,0,255,0, + 0,15,25,50,20,2,250,24,24,60,60,24,24,0,0,0, + 0,248,62,64,4,96,12,32,8,48,24,16,16,24,48,8, + 32,12,96,4,64,6,192,2,128,3,128,1,0,3,0,2, + 0,2,0,6,0,4,0,127,128}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=15 h=25 x= 7 y= 9 dx=20 dy= 0 ascent=22 len=50 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =22 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24n[638] U8G_SECTION(".progmem.u8g_font_courR24n") = { + 0,28,42,250,246,20,0,0,0,0,42,57,0,22,252,20, + 0,11,13,26,20,4,8,4,0,4,0,4,0,4,0,132, + 32,245,224,31,0,14,0,10,0,27,0,49,128,32,128,96, + 192,15,17,34,20,2,1,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,255,254,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,6,9,9,20,5,252,60, + 60,120,120,96,224,192,192,128,15,1,2,20,2,9,255,254, + 5,4,4,20,7,0,112,248,248,112,11,25,50,20,4,253, + 0,32,0,96,0,64,0,64,0,192,0,128,1,128,1,0, + 3,0,2,0,2,0,6,0,4,0,12,0,8,0,8,0, + 24,0,16,0,48,0,32,0,96,0,64,0,64,0,192,0, + 128,0,11,20,40,20,4,0,31,0,49,128,96,192,64,64, + 64,64,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 128,32,128,32,192,96,64,64,64,64,96,192,49,128,31,0, + 11,20,40,20,4,0,12,0,60,0,228,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,255,224,13,20, + 40,20,3,0,15,192,48,96,96,16,64,16,64,16,0,16, + 0,48,0,32,0,96,0,192,1,128,3,0,6,0,12,0, + 24,0,48,0,96,0,192,0,128,8,255,248,13,20,40,20, + 3,0,15,128,56,224,96,48,0,16,0,16,0,16,0,16, + 0,32,0,64,7,128,0,96,0,16,0,8,0,8,0,8, + 0,8,0,24,192,48,112,224,31,128,13,20,40,20,3,0, + 0,192,1,64,1,64,2,64,6,64,4,64,8,64,24,64, + 16,64,32,64,96,64,64,64,128,64,255,248,0,64,0,64, + 0,64,0,64,0,64,3,248,13,20,40,20,3,0,63,240, + 32,0,32,0,32,0,32,0,32,0,32,0,39,128,60,224, + 32,48,0,16,0,24,0,8,0,8,0,8,0,24,192,16, + 96,48,56,224,15,128,12,20,40,20,4,0,7,192,28,32, + 48,0,32,0,96,0,64,0,192,0,143,128,184,224,160,32, + 192,48,192,16,192,16,192,16,192,16,64,16,96,48,32,32, + 56,224,15,128,11,20,40,20,4,0,255,224,128,32,128,32, + 0,96,0,64,0,64,0,192,0,128,0,128,1,128,1,0, + 1,0,3,0,2,0,2,0,2,0,6,0,4,0,4,0, + 4,0,11,20,40,20,4,0,31,0,96,192,64,64,192,96, + 128,32,128,32,192,96,64,64,49,128,31,0,113,192,64,64, + 192,96,128,32,128,32,128,32,192,96,64,64,113,192,31,0, + 12,20,40,20,4,0,31,0,112,192,64,96,192,32,128,48, + 128,48,128,48,128,48,192,80,64,208,115,144,30,16,0,32, + 0,32,0,32,0,64,0,192,1,128,14,0,120,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 20 + Calculated Max Values w=19 h=26 x= 9 y=17 dx=20 dy= 0 ascent=22 len=60 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24r[3991] U8G_SECTION(".progmem.u8g_font_courR24r") = { + 0,28,42,250,246,19,4,184,10,129,32,127,250,22,250,21, + 250,0,0,0,20,0,1,5,21,21,20,8,0,32,112,112, + 112,112,112,32,32,32,32,32,32,32,32,0,0,0,0,112, + 248,112,11,10,20,20,4,10,241,224,241,224,241,224,241,224, + 241,224,96,192,96,192,64,128,64,128,64,128,13,23,46,20, + 3,254,4,64,4,64,4,64,4,64,12,192,8,128,8,128, + 8,128,127,248,8,128,8,128,8,128,8,128,8,128,255,240, + 8,128,8,128,8,128,9,128,17,0,17,0,17,0,17,0, + 12,25,50,20,4,253,4,0,4,0,4,0,31,32,113,224, + 64,96,128,32,128,0,192,0,96,0,60,0,7,128,0,224, + 0,48,0,16,0,16,128,48,192,96,241,192,159,0,4,0, + 4,0,4,0,4,0,4,0,15,20,40,20,3,0,30,0, + 51,0,97,128,64,128,64,128,97,128,51,0,30,14,0,112, + 3,128,28,0,224,0,1,224,3,48,6,24,4,8,4,8, + 6,24,3,48,1,224,12,17,34,20,3,0,15,192,25,128, + 48,0,32,0,32,0,48,0,16,0,24,0,60,0,100,48, + 70,96,194,64,131,64,193,192,65,128,99,192,62,112,4,11, + 11,20,8,10,112,112,112,112,112,224,224,224,224,224,224,5, + 25,25,20,9,252,8,24,16,48,32,96,96,64,64,192,192, + 192,192,192,192,192,64,64,96,96,32,48,16,24,8,5,25, + 25,20,5,252,128,192,64,96,32,48,48,16,16,24,24,24, + 24,24,24,24,16,16,48,48,32,96,64,192,128,11,13,26, + 20,4,8,4,0,4,0,4,0,4,0,132,32,245,224,31, + 0,14,0,10,0,27,0,49,128,32,128,96,192,15,17,34, + 20,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,255,254,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,6,9,9,20,5,252,60,60,120,120,96, + 224,192,192,128,15,1,2,20,2,9,255,254,5,4,4,20, + 7,0,112,248,248,112,11,25,50,20,4,253,0,32,0,96, + 0,64,0,64,0,192,0,128,1,128,1,0,3,0,2,0, + 2,0,6,0,4,0,12,0,8,0,8,0,24,0,16,0, + 48,0,32,0,96,0,64,0,64,0,192,0,128,0,11,20, + 40,20,4,0,31,0,49,128,96,192,64,64,64,64,128,32, + 128,32,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 192,96,64,64,64,64,96,192,49,128,31,0,11,20,40,20, + 4,0,12,0,60,0,228,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,13,20,40,20,3,0, + 15,192,48,96,96,16,64,16,64,16,0,16,0,48,0,32, + 0,96,0,192,1,128,3,0,6,0,12,0,24,0,48,0, + 96,0,192,0,128,8,255,248,13,20,40,20,3,0,15,128, + 56,224,96,48,0,16,0,16,0,16,0,16,0,32,0,64, + 7,128,0,96,0,16,0,8,0,8,0,8,0,8,0,24, + 192,48,112,224,31,128,13,20,40,20,3,0,0,192,1,64, + 1,64,2,64,6,64,4,64,8,64,24,64,16,64,32,64, + 96,64,64,64,128,64,255,248,0,64,0,64,0,64,0,64, + 0,64,3,248,13,20,40,20,3,0,63,240,32,0,32,0, + 32,0,32,0,32,0,32,0,39,128,60,224,32,48,0,16, + 0,24,0,8,0,8,0,8,0,24,192,16,96,48,56,224, + 15,128,12,20,40,20,4,0,7,192,28,32,48,0,32,0, + 96,0,64,0,192,0,143,128,184,224,160,32,192,48,192,16, + 192,16,192,16,192,16,64,16,96,48,32,32,56,224,15,128, + 11,20,40,20,4,0,255,224,128,32,128,32,0,96,0,64, + 0,64,0,192,0,128,0,128,1,128,1,0,1,0,3,0, + 2,0,2,0,2,0,6,0,4,0,4,0,4,0,11,20, + 40,20,4,0,31,0,96,192,64,64,192,96,128,32,128,32, + 192,96,64,64,49,128,31,0,113,192,64,64,192,96,128,32, + 128,32,128,32,192,96,64,64,113,192,31,0,12,20,40,20, + 4,0,31,0,112,192,64,96,192,32,128,48,128,48,128,48, + 128,48,192,80,64,208,115,144,30,16,0,32,0,32,0,32, + 0,64,0,192,1,128,14,0,120,0,5,14,14,20,7,0, + 112,248,248,112,0,0,0,0,0,0,112,248,248,112,7,18, + 18,20,5,252,28,62,62,28,0,0,0,0,0,60,60,120, + 112,112,224,192,192,128,15,17,34,20,2,1,0,2,0,14, + 0,56,0,224,3,128,6,0,28,0,112,0,192,0,112,0, + 28,0,6,0,3,128,0,224,0,56,0,14,0,2,15,6, + 12,20,2,6,255,254,0,0,0,0,0,0,0,0,255,254, + 15,17,34,20,2,1,128,0,224,0,56,0,14,0,3,128, + 0,192,0,112,0,28,0,6,0,28,0,112,0,192,3,128, + 14,0,56,0,224,0,128,0,11,19,38,20,4,0,63,0, + 225,192,128,64,128,64,0,96,0,32,0,96,0,64,1,192, + 7,0,4,0,4,0,4,0,0,0,0,0,0,0,14,0, + 31,0,14,0,12,23,46,20,3,254,15,128,24,192,48,64, + 96,96,64,32,192,32,128,32,128,224,131,160,134,32,132,32, + 132,32,132,32,134,32,131,32,129,240,128,0,192,0,64,0, + 96,0,48,0,24,224,15,128,19,19,57,20,0,0,31,224, + 0,0,160,0,0,160,0,1,16,0,1,16,0,1,16,0, + 2,8,0,2,8,0,2,8,0,4,4,0,4,4,0,4, + 4,0,15,254,0,8,2,0,8,2,0,16,1,0,16,1, + 0,48,1,128,254,15,224,16,19,38,20,1,0,255,240,16, + 12,16,4,16,6,16,2,16,2,16,6,16,4,16,12,31, + 248,16,6,16,2,16,3,16,1,16,1,16,3,16,2,16, + 6,255,248,14,19,38,20,2,0,7,196,28,116,32,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 0,128,0,192,0,64,0,96,4,32,28,28,112,7,192,15, + 19,38,20,1,0,255,192,32,112,32,24,32,12,32,4,32, + 6,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 6,32,4,32,12,32,24,32,112,255,192,15,19,38,20,1, + 0,255,252,16,4,16,4,16,4,16,4,16,68,16,64,16, + 64,31,192,16,64,16,64,16,64,16,0,16,2,16,2,16, + 2,16,2,16,2,255,254,15,19,38,20,1,0,255,254,16, + 2,16,2,16,2,16,2,16,66,16,64,16,64,31,192,16, + 64,16,64,16,64,16,0,16,0,16,0,16,0,16,0,16, + 0,255,128,15,19,38,20,2,0,7,196,28,116,48,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 254,128,4,192,4,64,4,96,4,48,4,28,28,7,240,15, + 19,38,20,2,0,252,126,32,8,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,63,248,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,32,8,252,126,11,19,38,20,4, + 0,255,224,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,255,224,15,19,38,20,3,0,15,254,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,32,128,32,128,32,128,32,128,32,192,96,64,64,97, + 192,31,0,17,19,57,20,1,0,254,31,128,16,4,0,16, + 12,0,16,8,0,16,16,0,16,48,0,16,64,0,16,192, + 0,19,128,0,28,192,0,16,32,0,16,48,0,16,16,0, + 16,24,0,16,8,0,16,8,0,16,12,0,16,4,0,254, + 7,128,15,19,38,20,2,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,2,8,2,8,2,8,2,8,2,8,2,255,254,19,19, + 57,20,0,0,248,3,224,40,2,128,40,2,128,36,4,128, + 36,4,128,34,8,128,34,8,128,33,16,128,33,16,128,33, + 16,128,32,160,128,32,160,128,32,64,128,32,64,128,32,0, + 128,32,0,128,32,0,128,32,0,128,254,7,224,18,19,57, + 20,0,0,248,31,192,28,1,0,20,1,0,18,1,0,18, + 1,0,17,1,0,16,129,0,16,129,0,16,65,0,16,65, + 0,16,33,0,16,33,0,16,17,0,16,17,0,16,9,0, + 16,9,0,16,5,0,16,7,0,127,3,0,15,19,38,20, + 2,0,7,192,24,48,48,24,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,48,24,24,48,7,192,15,19,38,20,1,0,255,224, + 16,56,16,4,16,6,16,2,16,2,16,2,16,6,16,4, + 16,56,31,224,16,0,16,0,16,0,16,0,16,0,16,0, + 16,0,255,192,15,22,44,20,2,253,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,12,96,7,192, + 2,0,15,198,24,124,18,19,57,20,1,0,255,224,0,16, + 56,0,16,4,0,16,6,0,16,2,0,16,2,0,16,6, + 0,16,4,0,16,24,0,31,224,0,16,96,0,16,48,0, + 16,24,0,16,12,0,16,4,0,16,6,0,16,2,0,16, + 3,0,254,1,192,12,19,38,20,3,0,15,144,56,208,96, + 48,64,48,64,16,64,16,64,0,96,0,56,0,15,0,1, + 192,0,96,0,48,128,16,128,16,192,16,224,48,184,224,143, + 128,15,19,38,20,2,0,255,254,129,2,129,2,129,2,129, + 2,129,2,129,2,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,63,248,17,19,57, + 20,1,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,19,19,57,20, + 0,0,254,15,224,48,1,128,16,1,0,16,1,0,24,3, + 0,8,2,0,8,2,0,12,6,0,4,4,0,4,4,0, + 6,12,0,2,8,0,3,24,0,1,16,0,1,16,0,0, + 160,0,0,160,0,0,224,0,0,64,0,17,19,57,20,1, + 0,252,31,128,64,1,0,64,1,0,64,1,0,64,1,0, + 97,195,0,33,66,0,33,66,0,34,34,0,34,34,0,34, + 34,0,34,34,0,38,50,0,36,18,0,52,22,0,20,20, + 0,20,20,0,24,12,0,24,12,0,17,19,57,20,1,0, + 124,31,0,48,6,0,16,4,0,24,12,0,8,8,0,4, + 16,0,2,32,0,3,96,0,1,192,0,0,128,0,1,192, + 0,2,32,0,4,16,0,12,24,0,8,8,0,16,4,0, + 48,6,0,96,3,0,252,31,128,15,19,38,20,2,0,248, + 62,96,12,48,24,16,16,24,48,8,32,4,64,6,192,2, + 128,3,128,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,31,240,13,19,38,20,3,0,127,240,64,16,64, + 48,64,32,64,96,64,192,0,128,1,128,3,0,6,0,4, + 0,12,0,24,8,16,8,48,8,96,8,64,8,192,8,255, + 248,5,24,24,20,9,252,248,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,248,11, + 25,50,20,4,253,128,0,192,0,64,0,64,0,96,0,32, + 0,48,0,16,0,24,0,8,0,8,0,12,0,4,0,6, + 0,2,0,2,0,3,0,1,0,1,128,0,128,0,192,0, + 64,0,64,0,96,0,32,5,24,24,20,5,252,248,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,248,11,9,18,20,4,12,4,0,14,0,27, + 0,17,0,49,128,96,192,64,64,192,96,128,32,19,1,3, + 20,0,250,255,255,224,6,5,5,20,4,17,192,96,48,24, + 12,15,14,28,20,2,0,15,128,56,224,0,32,0,48,0, + 16,0,16,31,240,112,48,192,16,128,16,128,16,128,48,192, + 240,127,158,17,20,60,20,0,0,240,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,17,248,0,23,14, + 0,20,3,0,24,1,0,24,1,128,16,0,128,16,0,128, + 16,0,128,16,0,128,24,1,128,24,1,0,20,3,0,23, + 14,0,241,248,0,14,14,28,20,3,0,15,136,56,248,96, + 24,64,8,192,8,128,0,128,0,128,0,128,0,192,0,64, + 12,96,24,56,224,15,128,17,20,60,20,2,0,0,60,0, + 0,4,0,0,4,0,0,4,0,0,4,0,0,4,0,15, + 196,0,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,199,128,14,14,28,20,2,0,15, + 192,56,112,96,24,64,8,192,12,128,4,255,252,128,0,128, + 0,192,0,64,0,96,12,56,56,15,224,13,20,40,20,3, + 0,3,224,6,24,4,0,12,0,8,0,8,0,255,240,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,255,240,17,20,60,20,2,250,15, + 199,128,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,196,0,0,4,0,0,4,0,0, + 12,0,0,8,0,0,56,0,15,224,0,16,20,40,20,1, + 0,240,0,16,0,16,0,16,0,16,0,16,0,17,224,23, + 56,20,8,24,12,24,4,16,4,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,124,31,13,20,40,20,3,0,6, + 0,6,0,6,0,0,0,0,0,0,0,126,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,255,248,10,26,52,20,4,250,1,128,1, + 128,1,128,0,0,0,0,0,0,255,192,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,192,0,128,3,128,254, + 0,15,20,40,20,2,0,240,0,16,0,16,0,16,0,16, + 0,16,0,16,252,16,48,16,96,16,192,17,128,19,0,30, + 0,19,0,17,128,16,192,16,96,16,48,16,24,240,62,13, + 20,40,20,3,0,126,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,248,19,14,42, + 20,0,0,231,14,0,41,147,0,48,225,128,48,96,128,32, + 64,128,32,64,128,32,64,128,32,64,128,32,64,128,32,64, + 128,32,64,128,32,64,128,32,64,128,248,112,224,15,14,28, + 20,2,0,227,192,46,112,40,16,48,24,48,8,32,8,32, + 8,32,8,32,8,32,8,32,8,32,8,32,8,248,62,15, + 14,28,20,2,0,15,224,56,56,96,12,64,4,192,6,128, + 2,128,2,128,2,128,2,192,6,64,4,96,12,56,56,15, + 224,17,20,60,20,0,250,1,248,0,247,14,0,20,3,0, + 24,1,0,24,1,128,16,0,128,16,0,128,16,0,128,16, + 0,128,24,1,128,24,1,0,20,3,0,23,14,0,17,248, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 255,0,0,17,20,60,20,2,250,15,192,0,56,119,128,96, + 28,0,64,12,0,192,12,0,128,4,0,128,4,0,128,4, + 0,128,4,0,192,12,0,64,12,0,96,28,0,56,116,0, + 15,196,0,0,4,0,0,4,0,0,4,0,0,4,0,0, + 4,0,0,127,128,15,14,28,20,3,0,120,124,9,198,11, + 0,12,0,12,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,240,13,14,28,20,3,0,15,144,56, + 240,96,48,64,16,96,0,56,0,15,128,0,224,0,48,128, + 24,128,24,192,48,248,224,143,128,14,19,38,20,2,0,16, + 0,16,0,16,0,16,0,16,0,255,240,16,0,16,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,24, + 12,12,56,7,224,16,14,28,20,1,0,240,60,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,16,4,16,4,16, + 12,24,12,12,52,7,231,17,14,42,20,1,0,252,31,128, + 48,6,0,16,4,0,16,4,0,24,12,0,8,8,0,12, + 24,0,4,16,0,4,16,0,6,48,0,2,32,0,3,96, + 0,1,64,0,1,192,0,17,14,42,20,1,0,248,15,128, + 96,3,0,32,2,0,32,2,0,33,194,0,33,66,0,49, + 70,0,19,100,0,18,36,0,18,36,0,22,52,0,28,28, + 0,8,8,0,8,8,0,15,14,28,20,2,0,248,62,96, + 12,48,24,24,48,12,96,6,192,3,128,3,128,6,192,12, + 96,24,48,48,24,96,12,248,62,15,20,40,20,2,250,248, + 62,64,4,96,12,32,8,48,24,16,16,24,48,8,32,12, + 96,4,64,6,192,2,128,3,128,1,0,3,0,2,0,2, + 0,6,0,4,0,255,128,11,14,28,20,4,0,255,224,128, + 96,128,192,129,128,3,0,6,0,4,0,12,0,24,0,48, + 0,96,32,64,32,192,32,255,224,7,25,25,20,6,252,6, + 12,24,16,16,16,16,16,16,16,16,48,96,224,48,16,16, + 16,16,16,16,16,16,24,14,1,25,25,20,9,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,7,25,25,20,6,252,192,96,48, + 16,16,16,16,16,16,16,16,24,12,14,24,16,16,16,16, + 16,16,16,16,48,224,13,5,10,20,3,7,24,0,124,8, + 199,24,129,176,0,224,255}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 3, '1' Height: 11 + Calculated Max Values w=16 h=17 x= 7 y= 6 dx=19 dy= 0 ascent=17 len=34 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 1 + X Font ascent =12 descent= 0 + Max Font ascent =17 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[3981] U8G_SECTION(".progmem.u8g_font_cu12_67_75") = { + 0,40,30,247,246,3,2,98,5,14,32,255,1,17,254,12, + 0,11,5,10,12,1,4,2,128,1,64,255,224,1,64,2, + 128,5,11,11,6,1,1,32,32,32,32,32,32,168,112,168, + 112,32,11,5,10,12,1,4,32,96,65,128,255,0,65,128, + 32,96,11,5,10,12,1,4,192,128,48,64,31,224,48,64, + 192,128,11,7,14,12,1,3,0,32,32,32,64,32,255,224, + 64,32,32,32,0,32,7,11,11,8,1,1,16,56,84,16, + 16,16,16,16,16,16,254,11,7,14,12,1,3,128,0,128, + 128,128,64,255,224,128,64,128,128,128,0,7,11,11,8,1, + 1,254,16,16,16,16,16,16,16,84,56,16,7,11,11,8, + 1,1,16,56,84,16,16,16,16,16,84,56,254,11,7,14, + 12,1,4,1,192,0,32,32,32,64,32,255,192,64,0,32, + 0,11,7,14,12,1,4,112,0,128,0,128,128,128,64,127, + 224,0,64,0,128,11,7,14,12,1,4,1,192,2,32,34, + 32,66,32,255,192,66,0,34,0,11,7,14,12,1,4,112, + 0,136,0,136,128,136,64,127,224,8,64,8,128,12,5,10, + 13,1,4,38,64,73,32,233,112,80,160,32,64,12,5,10, + 13,1,4,33,64,66,32,255,240,68,32,40,64,4,11,11, + 5,1,1,16,16,32,64,176,208,32,160,160,192,240,6,11, + 11,7,1,1,32,64,252,68,36,4,4,4,4,4,4,6, + 11,11,7,1,1,16,8,252,136,144,128,128,128,128,128,128, + 6,11,11,7,1,1,4,4,4,4,4,4,36,68,252,64, + 32,6,11,11,7,1,1,128,128,128,128,128,128,144,136,252, + 8,16,8,6,6,9,1,2,252,4,4,21,14,4,6,8, + 8,7,1,1,4,4,4,36,68,252,64,32,11,8,16,11, + 1,1,15,128,16,64,32,32,32,32,32,32,168,32,112,0, + 32,0,11,8,16,11,1,1,62,0,65,0,128,128,128,128, + 128,128,130,160,1,192,0,128,9,11,22,10,1,1,255,128, + 0,0,240,0,192,0,160,0,144,0,8,0,4,0,2,0, + 1,0,0,128,12,13,26,13,1,0,128,0,144,0,160,0, + 255,240,160,0,144,0,128,16,0,144,0,80,255,240,0,80, + 0,144,0,16,10,7,14,11,1,2,3,192,67,0,130,128, + 130,128,128,128,65,0,62,0,10,7,14,11,1,2,240,0, + 48,128,80,64,80,64,64,64,32,128,31,0,11,3,6,12, + 1,6,32,0,64,0,255,224,11,3,6,12,1,6,255,224, + 64,0,32,0,3,11,11,4,1,1,128,192,160,128,128,128, + 128,128,128,128,128,3,11,11,4,1,1,32,96,160,32,32, + 32,32,32,32,32,32,11,3,6,12,1,6,0,128,0,64, + 255,224,11,3,6,12,1,6,255,224,0,64,0,128,3,11, + 11,4,1,1,128,128,128,128,128,128,128,128,160,192,128,3, + 11,11,4,1,1,32,32,32,32,32,32,32,32,160,96,32, + 11,11,22,12,1,1,0,128,0,64,255,224,0,64,0,128, + 0,0,32,0,64,0,255,224,64,0,32,0,11,11,22,12, + 1,1,32,128,112,128,168,128,32,128,32,128,32,128,32,128, + 32,128,34,160,33,192,32,128,11,11,22,12,1,1,32,0, + 64,0,255,224,64,0,32,0,0,0,0,128,0,64,255,224, + 0,64,0,128,11,11,22,12,1,1,32,0,64,0,255,224, + 64,0,32,0,0,0,32,0,64,0,255,224,64,0,32,0, + 11,11,22,12,1,1,32,128,113,192,170,160,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,11,11,22,12, + 1,1,0,128,0,64,255,224,0,64,0,128,0,0,0,128, + 0,64,255,224,0,64,0,128,11,11,22,12,1,1,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,32,128,170,160, + 113,192,32,128,11,8,16,12,1,3,32,0,64,0,255,224, + 0,0,0,0,255,224,0,64,0,128,11,8,16,12,1,3, + 0,128,0,64,255,224,0,0,0,0,255,224,64,0,32,0, + 11,7,14,12,1,3,16,128,32,128,127,224,129,0,127,224, + 34,0,18,0,13,7,14,14,1,3,17,64,33,32,127,240, + 130,8,127,240,36,32,20,64,11,7,14,12,1,3,9,0, + 8,128,255,192,16,32,255,192,32,128,33,0,11,7,14,12, + 1,3,16,0,32,0,127,224,128,0,127,224,32,0,16,0, + 7,11,11,8,1,1,16,40,108,170,40,40,40,40,40,40, + 40,11,7,14,12,1,3,1,0,0,128,255,192,0,32,255, + 192,0,128,1,0,7,11,11,8,1,1,40,40,40,40,40, + 40,40,170,108,40,16,12,7,14,12,1,3,16,128,32,64, + 127,224,128,16,127,224,32,64,16,128,7,12,12,8,1,0, + 16,40,108,170,40,40,40,40,170,108,40,16,10,10,20,11, + 1,1,248,0,144,0,136,0,196,0,162,0,17,0,8,128, + 4,64,2,0,1,0,10,10,20,11,1,1,7,192,2,64, + 4,64,8,192,17,64,34,0,68,0,136,0,16,0,32,0, + 10,10,20,11,1,1,32,0,16,0,136,0,68,0,34,0, + 17,64,8,192,4,64,2,64,7,192,10,10,20,11,1,1, + 1,0,2,0,4,64,8,128,17,0,162,0,196,0,136,0, + 144,0,248,0,11,7,14,12,1,3,16,0,63,224,64,0, + 255,224,64,0,63,224,16,0,11,7,14,12,1,3,1,0, + 255,128,0,64,255,224,0,64,255,128,1,0,12,5,10,13, + 1,4,32,0,72,128,245,80,66,32,32,0,12,5,10,13, + 1,4,0,64,17,32,170,240,68,32,0,64,5,11,11,6, + 1,1,32,112,168,32,32,248,32,248,32,32,32,5,11,11, + 6,1,1,32,32,32,248,32,248,32,32,168,112,32,11,5, + 10,12,1,4,32,0,64,0,238,224,64,0,32,0,5,11, + 11,6,1,1,32,112,168,0,32,32,32,0,32,32,32,11, + 5,10,12,1,4,0,128,0,64,238,224,0,64,0,128,5, + 11,11,6,1,1,32,32,32,0,32,32,32,0,168,112,32, + 12,7,14,13,1,3,128,0,144,0,160,0,255,240,160,0, + 144,0,128,0,12,7,14,13,1,3,0,16,0,144,0,80, + 255,240,0,80,0,144,0,16,12,9,18,13,1,2,8,0, + 24,0,47,240,64,16,128,16,64,16,47,240,24,0,8,0, + 9,12,24,10,1,1,8,0,20,0,34,0,65,0,227,128, + 34,0,34,0,34,0,34,0,34,0,34,0,62,0,12,9, + 18,13,1,2,1,0,1,128,255,64,128,32,128,16,128,32, + 255,64,1,128,1,0,9,12,24,10,1,1,62,0,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,65,0,34,0, + 20,0,8,0,9,17,34,10,1,0,8,0,20,0,34,0, + 65,0,227,128,34,0,34,0,34,0,34,0,34,0,34,0, + 62,0,0,0,62,0,34,0,34,0,62,0,9,14,28,10, + 1,0,8,0,20,0,34,0,65,0,227,128,34,0,34,0, + 34,0,34,0,34,0,34,0,227,128,128,128,255,128,9,14, + 28,10,1,0,8,0,20,0,62,0,65,0,227,128,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,128,128,255,128, + 9,14,28,10,1,0,8,0,28,0,42,0,73,0,235,128, + 42,0,42,0,42,0,42,0,42,0,42,0,235,128,136,128, + 255,128,9,15,30,10,1,2,8,0,20,0,34,0,73,0, + 213,128,34,0,65,0,227,128,34,0,34,0,34,0,34,0, + 34,0,34,0,62,0,9,17,34,10,1,0,8,0,20,0, + 34,0,73,0,213,128,34,0,65,0,227,128,34,0,34,0, + 34,0,34,0,34,0,34,0,227,128,128,128,255,128,14,9, + 18,16,2,2,224,64,160,96,191,208,128,24,128,20,128,24, + 191,208,160,96,224,64,11,11,22,12,1,1,255,224,128,0, + 188,0,176,0,168,0,164,0,130,0,129,0,128,128,128,64, + 128,32,11,11,22,12,1,1,128,32,64,32,32,32,16,32, + 8,32,4,160,2,160,1,160,7,160,0,32,255,224,9,16, + 32,10,1,0,8,0,20,0,34,0,65,0,227,128,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,65,0,34,0, + 20,0,8,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 11,11,22,14,2,1,255,224,255,224,255,224,255,224,255,224, + 255,224,255,224,255,224,255,224,255,224,255,224,11,11,22,14, + 2,1,255,224,128,32,128,32,128,32,128,32,128,32,128,32, + 128,32,128,32,128,32,255,224,11,11,22,14,2,1,63,128, + 64,64,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 64,64,63,128,11,11,22,14,2,1,255,224,128,32,191,160, + 191,160,191,160,191,160,191,160,191,160,191,160,128,32,255,224, + 11,11,22,14,2,1,255,224,128,32,255,224,128,32,255,224, + 128,32,255,224,128,32,255,224,128,32,255,224,11,11,22,14, + 2,1,255,224,170,160,170,160,170,160,170,160,170,160,170,160, + 170,160,170,160,170,160,255,224,11,11,22,14,2,1,255,224, + 170,160,255,224,170,160,255,224,170,160,255,224,170,160,255,224, + 170,160,255,224,11,11,22,14,2,1,255,224,201,32,164,160, + 146,96,201,32,164,160,146,96,201,32,164,160,146,96,255,224, + 11,11,22,14,2,1,255,224,146,96,164,160,201,32,146,96, + 164,160,201,32,146,96,164,160,201,32,255,224,11,11,22,14, + 2,1,255,224,213,96,170,160,213,96,170,160,213,96,170,160, + 213,96,170,160,213,96,255,224,7,7,7,12,3,3,254,254, + 254,254,254,254,254,7,7,7,12,3,3,254,130,130,130,130, + 130,254,13,6,12,16,2,3,255,248,255,248,255,248,255,248, + 255,248,255,248,13,6,12,16,2,3,255,248,128,8,128,8, + 128,8,128,8,255,248,6,13,13,9,2,254,252,252,252,252, + 252,252,252,252,252,252,252,252,252,6,13,13,9,2,254,252, + 132,132,132,132,132,132,132,132,132,132,132,252,16,6,12,19, + 2,3,31,255,63,254,63,254,127,252,127,252,255,248,16,6, + 12,19,2,3,31,255,32,2,32,2,64,4,64,4,255,248, + 11,12,24,14,2,1,4,0,4,0,14,0,14,0,31,0, + 31,0,63,128,63,128,127,192,127,192,255,224,255,224,11,12, + 24,14,2,1,4,0,4,0,10,0,10,0,17,0,17,0, + 32,128,32,128,64,64,64,64,128,32,255,224,7,8,8,12, + 3,1,16,16,56,56,124,124,254,254,7,8,8,12,3,1, + 16,16,40,40,68,68,130,254,12,11,22,15,2,1,192,0, + 240,0,252,0,255,0,255,192,255,240,255,192,255,0,252,0, + 240,0,192,0,12,11,22,15,2,1,192,0,176,0,140,0, + 131,0,128,192,128,48,128,192,131,0,140,0,176,0,192,0, + 8,7,7,13,3,1,192,240,252,255,252,240,192,8,7,7, + 13,3,1,192,176,140,131,140,176,192,12,7,14,15,2,1, + 192,0,252,0,255,192,255,240,255,192,252,0,192,0,12,7, + 14,15,2,1,192,0,188,0,131,192,128,48,131,192,188,0, + 192,0,11,12,24,14,2,1,255,224,255,224,127,192,127,192, + 63,128,63,128,31,0,31,0,14,0,14,0,4,0,4,0, + 11,12,24,14,2,1,255,224,128,32,64,64,64,64,32,128, + 32,128,17,0,17,0,10,0,10,0,4,0,4,0,7,8, + 8,12,3,1,254,254,124,124,56,56,16,16,7,8,8,12, + 3,1,254,130,68,68,40,40,16,16,12,11,22,15,2,1, + 0,48,0,240,3,240,15,240,63,240,255,240,63,240,15,240, + 3,240,0,240,0,48,12,11,22,15,2,1,0,48,0,208, + 3,16,12,16,48,16,192,16,48,16,12,16,3,16,0,208, + 0,48,8,7,7,13,3,1,3,15,63,255,63,15,3,8, + 7,7,13,3,1,3,13,49,193,49,13,3,12,7,14,15, + 2,1,0,48,3,240,63,240,255,240,63,240,3,240,0,48, + 12,7,14,15,2,1,0,48,3,208,60,16,192,16,60,16, + 3,208,0,48,11,11,22,14,2,1,4,0,14,0,31,0, + 63,128,127,192,255,224,127,192,63,128,31,0,14,0,4,0, + 11,11,22,14,2,1,4,0,10,0,17,0,32,128,64,64, + 128,32,64,64,32,128,17,0,10,0,4,0,11,11,22,14, + 2,1,4,0,10,0,17,0,36,128,78,64,159,32,78,64, + 36,128,17,0,10,0,4,0,11,11,22,14,2,1,31,0, + 96,192,64,64,142,32,159,32,159,32,159,32,142,32,64,64, + 96,192,31,0,7,12,12,8,1,0,16,40,40,68,68,130, + 130,68,68,40,40,16,11,11,22,14,2,1,31,0,96,192, + 64,64,128,32,128,32,128,32,128,32,128,32,64,64,96,192, + 31,0,11,11,22,14,2,1,14,0,32,128,64,64,0,0, + 128,32,128,32,128,32,0,0,64,64,32,128,14,0,11,11, + 22,14,2,1,31,0,106,192,106,192,170,160,170,160,170,160, + 170,160,170,160,106,192,106,192,31,0,11,11,22,14,2,1, + 31,0,96,192,64,64,142,32,145,32,145,32,145,32,142,32, + 64,64,96,192,31,0,11,11,22,14,2,1,31,0,127,192, + 127,192,255,224,255,224,255,224,255,224,255,224,127,192,127,192, + 31,0,11,11,22,14,2,1,31,0,120,192,120,64,248,32, + 248,32,248,32,248,32,248,32,120,64,120,192,31,0,11,11, + 22,14,2,1,31,0,99,192,67,192,131,224,131,224,131,224, + 131,224,131,224,67,192,99,192,31,0,11,11,22,14,2,1, + 31,0,127,192,127,192,255,224,255,224,128,32,128,32,128,32, + 64,64,96,192,31,0,11,11,22,14,2,1,31,0,96,192, + 64,64,128,32,128,32,128,32,255,224,255,224,127,192,127,192, + 31,0,11,11,22,14,2,1,31,0,103,192,71,192,135,224, + 135,224,135,224,128,32,128,32,64,64,96,192,31,0,11,11, + 22,14,2,1,31,0,99,192,67,192,131,224,131,224,131,224, + 255,224,255,224,127,192,127,192,31,0,6,11,11,8,2,1, + 28,124,124,252,252,252,252,252,124,124,28,6,11,11,9,2, + 1,224,248,248,252,252,252,252,252,248,248,224,7,12,12,10, + 2,1,254,254,254,254,254,198,130,130,130,198,254,254,13,13, + 26,16,2,0,255,248,240,120,207,152,223,216,191,232,191,232, + 191,232,191,232,191,232,223,216,207,152,240,120,255,248,13,7, + 14,16,2,6,255,248,240,120,207,152,223,216,191,232,191,232, + 191,232,13,7,14,16,2,0,191,232,191,232,191,232,223,216, + 207,152,240,120,255,248,6,6,6,8,2,6,28,96,64,128, + 128,128,6,6,6,13,7,6,224,24,8,4,4,4,6,6, + 6,13,7,1,4,4,4,8,24,224,6,6,6,8,2,1, + 128,128,128,64,96,28,11,6,12,14,2,6,31,0,96,192, + 64,64,128,32,128,32,128,32,11,6,12,14,2,1,128,32, + 128,32,128,32,64,64,96,192,31,0,12,12,24,15,2,1, + 0,16,0,48,0,112,0,240,1,240,3,240,7,240,15,240, + 31,240,63,240,127,240,255,240,12,12,24,15,2,1,128,0, + 192,0,224,0,240,0,248,0,252,0,254,0,255,0,255,128, + 255,192,255,224,255,240,12,12,24,15,2,1,255,240,255,224, + 255,192,255,128,255,0,254,0,252,0,248,0,240,0,224,0, + 192,0,128,0,12,12,24,15,2,1,255,240,127,240,63,240, + 31,240,15,240,7,240,3,240,1,240,0,240,0,112,0,48, + 0,16,7,7,7,8,1,2,56,68,130,130,130,68,56,11, + 11,22,14,2,1,255,224,248,32,248,32,248,32,248,32,248, + 32,248,32,248,32,248,32,248,32,255,224,11,11,22,14,2, + 1,255,224,131,224,131,224,131,224,131,224,131,224,131,224,131, + 224,131,224,131,224,255,224,11,11,22,14,2,1,255,224,255, + 224,255,160,255,32,254,32,252,32,248,32,240,32,224,32,192, + 32,255,224,11,11,22,14,2,1,255,224,128,96,128,224,129, + 224,131,224,135,224,143,224,159,224,191,224,255,224,255,224,11, + 11,22,14,2,1,255,224,132,32,132,32,132,32,132,32,132, + 32,132,32,132,32,132,32,132,32,255,224,11,12,24,14,2, + 1,4,0,4,0,10,0,10,0,17,0,17,0,32,128,36, + 128,78,64,68,64,128,32,255,224,11,12,24,14,2,1,4, + 0,4,0,14,0,14,0,29,0,29,0,60,128,60,128,124, + 64,124,64,252,32,255,224,11,12,24,14,2,1,4,0,4, + 0,14,0,14,0,23,0,23,0,39,128,39,128,71,192,71, + 192,135,224,255,224,13,13,26,16,2,0,31,192,32,32,64, + 16,128,8,128,8,128,8,128,8,128,8,128,8,128,8,64, + 16,32,32,31,192,11,11,22,14,2,1,255,224,132,32,132, + 32,132,32,132,32,252,32,128,32,128,32,128,32,128,32,255, + 224,11,11,22,14,2,1,255,224,128,32,128,32,128,32,128, + 32,252,32,132,32,132,32,132,32,132,32,255,224,11,11,22, + 14,2,1,255,224,128,32,128,32,128,32,128,32,135,224,132, + 32,132,32,132,32,132,32,255,224,11,11,22,14,2,1,255, + 224,132,32,132,32,132,32,132,32,135,224,128,32,128,32,128, + 32,128,32,255,224,11,11,22,14,2,1,31,0,100,192,68, + 64,132,32,132,32,252,32,128,32,128,32,64,64,96,192,31, + 0,11,11,22,14,2,1,31,0,96,192,64,64,128,32,128, + 32,252,32,132,32,132,32,68,64,100,192,31,0,11,11,22, + 14,2,1,31,0,96,192,64,64,128,32,128,32,135,224,132, + 32,132,32,68,64,100,192,31,0,11,11,22,14,2,1,31, + 0,100,192,68,64,132,32,132,32,135,224,128,32,128,32,64, + 64,96,192,31,0,255,255,255,255,255,255,255,255}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 11, '1' Height: 6 + Calculated Max Values w=16 h=13 x= 3 y= 3 dx=19 dy= 0 ascent=13 len=24 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =13 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12_75r[1123] U8G_SECTION(".progmem.u8g_font_cu12_75r") = { + 0,40,30,247,246,11,2,247,0,0,32,79,0,13,254,12, + 0,11,11,22,14,2,1,255,224,255,224,255,224,255,224,255, + 224,255,224,255,224,255,224,255,224,255,224,255,224,11,11,22, + 14,2,1,255,224,128,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,32,255,224,11,11,22,14,2,1,63, + 128,64,64,128,32,128,32,128,32,128,32,128,32,128,32,128, + 32,64,64,63,128,11,11,22,14,2,1,255,224,128,32,191, + 160,191,160,191,160,191,160,191,160,191,160,191,160,128,32,255, + 224,11,11,22,14,2,1,255,224,128,32,255,224,128,32,255, + 224,128,32,255,224,128,32,255,224,128,32,255,224,11,11,22, + 14,2,1,255,224,170,160,170,160,170,160,170,160,170,160,170, + 160,170,160,170,160,170,160,255,224,11,11,22,14,2,1,255, + 224,170,160,255,224,170,160,255,224,170,160,255,224,170,160,255, + 224,170,160,255,224,11,11,22,14,2,1,255,224,201,32,164, + 160,146,96,201,32,164,160,146,96,201,32,164,160,146,96,255, + 224,11,11,22,14,2,1,255,224,146,96,164,160,201,32,146, + 96,164,160,201,32,146,96,164,160,201,32,255,224,11,11,22, + 14,2,1,255,224,213,96,170,160,213,96,170,160,213,96,170, + 160,213,96,170,160,213,96,255,224,7,7,7,12,3,3,254, + 254,254,254,254,254,254,7,7,7,12,3,3,254,130,130,130, + 130,130,254,13,6,12,16,2,3,255,248,255,248,255,248,255, + 248,255,248,255,248,13,6,12,16,2,3,255,248,128,8,128, + 8,128,8,128,8,255,248,6,13,13,9,2,254,252,252,252, + 252,252,252,252,252,252,252,252,252,252,6,13,13,9,2,254, + 252,132,132,132,132,132,132,132,132,132,132,132,252,16,6,12, + 19,2,3,31,255,63,254,63,254,127,252,127,252,255,248,16, + 6,12,19,2,3,31,255,32,2,32,2,64,4,64,4,255, + 248,11,12,24,14,2,1,4,0,4,0,14,0,14,0,31, + 0,31,0,63,128,63,128,127,192,127,192,255,224,255,224,11, + 12,24,14,2,1,4,0,4,0,10,0,10,0,17,0,17, + 0,32,128,32,128,64,64,64,64,128,32,255,224,7,8,8, + 12,3,1,16,16,56,56,124,124,254,254,7,8,8,12,3, + 1,16,16,40,40,68,68,130,254,12,11,22,15,2,1,192, + 0,240,0,252,0,255,0,255,192,255,240,255,192,255,0,252, + 0,240,0,192,0,12,11,22,15,2,1,192,0,176,0,140, + 0,131,0,128,192,128,48,128,192,131,0,140,0,176,0,192, + 0,8,7,7,13,3,1,192,240,252,255,252,240,192,8,7, + 7,13,3,1,192,176,140,131,140,176,192,12,7,14,15,2, + 1,192,0,252,0,255,192,255,240,255,192,252,0,192,0,12, + 7,14,15,2,1,192,0,188,0,131,192,128,48,131,192,188, + 0,192,0,11,12,24,14,2,1,255,224,255,224,127,192,127, + 192,63,128,63,128,31,0,31,0,14,0,14,0,4,0,4, + 0,11,12,24,14,2,1,255,224,128,32,64,64,64,64,32, + 128,32,128,17,0,17,0,10,0,10,0,4,0,4,0,7, + 8,8,12,3,1,254,254,124,124,56,56,16,16,7,8,8, + 12,3,1,254,130,68,68,40,40,16,16,12,11,22,15,2, + 1,0,48,0,240,3,240,15,240,63,240,255,240,63,240,15, + 240,3,240,0,240,0,48,12,11,22,15,2,1,0,48,0, + 208,3,16,12,16,48,16,192,16,48,16,12,16,3,16,0, + 208,0,48,8,7,7,13,3,1,3,15,63,255,63,15,3, + 8,7,7,13,3,1,3,13,49,193,49,13,3,12,7,14, + 15,2,1,0,48,3,240,63,240,255,240,63,240,3,240,0, + 48,12,7,14,15,2,1,0,48,3,208,60,16,192,16,60, + 16,3,208,0,48,11,11,22,14,2,1,4,0,14,0,31, + 0,63,128,127,192,255,224,127,192,63,128,31,0,14,0,4, + 0,11,11,22,14,2,1,4,0,10,0,17,0,32,128,64, + 64,128,32,64,64,32,128,17,0,10,0,4,0,11,11,22, + 14,2,1,4,0,10,0,17,0,36,128,78,64,159,32,78, + 64,36,128,17,0,10,0,4,0,11,11,22,14,2,1,31, + 0,96,192,64,64,142,32,159,32,159,32,159,32,142,32,64, + 64,96,192,31,0,7,12,12,8,1,0,16,40,40,68,68, + 130,130,68,68,40,40,16,11,11,22,14,2,1,31,0,96, + 192,64,64,128,32,128,32,128,32,128,32,128,32,64,64,96, + 192,31,0,11,11,22,14,2,1,14,0,32,128,64,64,0, + 0,128,32,128,32,128,32,0,0,64,64,32,128,14,0,11, + 11,22,14,2,1,31,0,106,192,106,192,170,160,170,160,170, + 160,170,160,170,160,106,192,106,192,31,0,11,11,22,14,2, + 1,31,0,96,192,64,64,142,32,145,32,145,32,145,32,142, + 32,64,64,96,192,31,0,11,11,22,14,2,1,31,0,127, + 192,127,192,255,224,255,224,255,224,255,224,255,224,127,192,127, + 192,31,0}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 3 y=11 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12[3993] U8G_SECTION(".progmem.u8g_font_cu12") = { + 0,40,30,247,246,11,2,90,5,94,32,255,252,16,252,12, + 252,0,0,0,5,0,0,2,12,12,5,1,0,192,192,192, + 192,192,192,192,0,0,0,192,192,4,5,5,7,2,7,144, + 144,144,144,144,10,15,30,12,1,253,4,128,4,128,9,0, + 9,0,9,0,255,192,18,0,18,0,18,0,255,192,36,0, + 36,0,36,0,72,0,72,0,5,14,14,8,1,255,32,112, + 168,168,168,160,96,48,40,168,168,168,112,32,11,13,26,14, + 1,255,96,64,152,128,151,128,145,0,146,0,98,0,4,0, + 8,192,9,32,17,32,33,32,33,32,64,192,10,12,24,13, + 1,0,24,0,36,0,36,0,36,0,40,0,51,192,49,0, + 81,0,138,0,138,0,196,64,123,128,1,5,5,4,2,7, + 128,128,128,128,128,4,15,15,6,2,253,16,32,64,64,128, + 128,128,128,128,128,128,64,64,32,16,4,15,15,6,1,253, + 128,64,32,32,16,16,16,16,16,16,16,32,32,64,128,7, + 7,7,7,0,5,16,146,84,56,84,146,16,9,9,18,11, + 2,255,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,2,5,5,5,1,253,192,192,64,64,128,4, + 1,1,7,2,3,240,2,2,2,5,1,0,192,192,5,16, + 16,8,2,252,8,8,16,16,16,16,32,32,32,32,64,64, + 64,64,128,128,5,11,11,7,1,0,112,80,136,136,136,136, + 136,136,136,80,112,5,11,11,7,1,0,32,224,32,32,32, + 32,32,32,32,32,248,5,11,11,7,1,0,112,136,136,136, + 8,16,16,32,72,72,248,5,11,11,7,1,0,112,136,136, + 8,8,48,8,8,136,136,112,7,11,11,9,1,0,24,24, + 40,40,72,200,254,8,8,8,62,5,11,11,7,1,0,136, + 240,128,128,240,200,8,8,136,144,96,5,11,11,7,1,0, + 48,72,64,128,240,136,136,136,136,80,112,6,12,12,8,1, + 0,128,252,132,136,16,16,16,32,32,32,32,32,5,11,11, + 7,1,0,112,136,136,136,80,112,136,136,136,136,112,5,11, + 11,7,1,0,112,80,136,136,136,136,120,8,16,144,96,2, + 7,7,7,3,0,192,192,0,0,0,192,192,2,10,10,5, + 1,253,192,192,0,0,0,192,192,64,64,128,5,9,9,6, + 1,1,8,16,32,64,128,64,32,16,8,10,5,10,13,2, + 2,255,192,0,0,0,0,0,0,255,192,5,9,9,6,1, + 1,128,64,32,16,8,16,32,64,128,5,12,12,8,1,0, + 112,136,136,16,32,32,96,0,0,0,96,96,10,12,24,12, + 1,0,30,0,33,0,76,128,147,64,161,64,161,64,161,64, + 161,64,147,64,77,128,32,192,31,0,11,11,22,11,0,0, + 4,0,4,0,10,0,10,0,10,0,17,0,17,0,31,0, + 32,128,32,128,241,224,10,11,22,10,0,0,255,0,32,128, + 32,64,32,64,32,128,63,0,32,128,32,64,32,64,32,128, + 255,0,9,11,22,10,1,0,30,128,33,128,64,128,128,128, + 128,0,128,0,128,0,128,128,64,128,33,0,30,0,10,11, + 22,10,0,0,254,0,33,128,32,128,32,64,32,64,32,64, + 32,64,32,64,32,128,33,128,254,0,10,11,22,10,1,0, + 255,128,32,128,32,128,34,128,34,0,62,0,34,64,34,64, + 32,128,32,128,255,128,9,11,22,9,1,0,255,128,32,128, + 32,128,34,128,34,0,62,0,34,0,34,0,32,0,32,0, + 248,0,10,11,22,10,1,0,30,128,33,128,64,128,128,128, + 128,0,128,0,131,192,128,128,64,128,32,128,31,128,11,11, + 22,11,1,0,251,224,32,128,32,128,32,128,32,128,63,128, + 32,128,32,128,32,128,32,128,251,224,5,11,11,5,1,0, + 248,32,32,32,32,32,32,32,32,32,248,6,11,11,6,1, + 0,124,16,16,16,16,16,16,16,16,144,224,11,11,22,11, + 1,0,249,224,32,128,33,0,34,0,36,0,46,0,50,0, + 33,0,33,0,32,128,249,224,8,11,11,8,0,0,248,32, + 32,32,32,32,33,33,33,35,255,14,11,22,14,1,0,240, + 60,48,48,48,48,40,80,40,80,40,144,36,144,36,144,35, + 16,35,16,251,124,11,11,22,11,1,0,227,224,48,128,48, + 128,40,128,40,128,36,128,34,128,34,128,33,128,33,128,248, + 128,10,11,22,10,1,0,30,0,33,0,64,128,128,64,128, + 64,128,64,128,64,128,64,64,128,33,0,30,0,9,11,22, + 9,1,0,255,0,33,128,32,128,32,128,33,128,63,0,32, + 0,32,0,32,0,32,0,248,0,10,14,28,10,1,253,30, + 0,33,0,64,128,128,64,128,64,128,64,128,64,128,64,92, + 128,51,0,30,0,2,0,2,64,1,128,11,11,22,11,1, + 0,254,0,33,0,32,128,32,128,33,0,62,0,35,0,33, + 0,33,0,33,0,248,224,6,11,11,7,1,0,124,132,132, + 128,64,48,8,4,132,132,248,9,11,22,9,1,0,255,128, + 136,128,136,128,136,128,8,0,8,0,8,0,8,0,8,0, + 8,0,62,0,11,11,22,11,1,0,251,224,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,17,0,14,0, + 11,11,22,11,1,0,241,224,32,128,32,128,17,0,17,0, + 17,0,10,0,10,0,10,0,4,0,4,0,16,11,22,16, + 1,0,241,207,33,132,33,132,34,68,18,72,18,72,18,72, + 20,40,12,48,12,48,8,16,11,11,22,11,1,0,243,192, + 17,0,18,0,10,0,12,0,4,0,10,0,26,0,17,0, + 32,128,241,224,11,11,22,11,1,0,241,224,32,128,17,0, + 17,0,10,0,14,0,4,0,4,0,4,0,4,0,31,0, + 7,11,11,7,1,0,254,196,132,136,8,16,34,34,66,70, + 254,3,16,16,5,1,252,224,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,224,5,16,16,8,2,252,128,128,64, + 64,64,64,32,32,32,32,16,16,16,16,8,8,3,16,16, + 5,0,252,224,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,224,5,3,3,6,1,9,32,112,136,11,1,2,12, + 1,254,255,224,3,4,4,6,3,8,128,192,64,32,6,7, + 7,7,1,0,112,136,8,120,136,136,124,6,12,12,7,1, + 0,192,64,64,64,64,120,68,68,68,68,68,120,5,7,7, + 6,1,0,112,136,128,128,128,136,112,6,12,12,7,1,0, + 24,8,8,8,8,120,136,136,136,136,136,124,5,7,7,6, + 1,0,112,136,248,128,128,136,112,5,12,12,6,1,0,56, + 72,64,64,64,240,64,64,64,64,64,224,7,11,11,8,1, + 252,62,68,68,68,120,64,124,130,130,130,124,7,12,12,8, + 1,0,192,64,64,64,64,120,68,68,68,68,68,238,3,11, + 11,4,1,0,192,192,0,0,192,64,64,64,64,64,224,4, + 14,14,5,0,253,48,48,0,0,48,16,16,16,16,16,16, + 16,144,224,7,12,12,8,1,0,192,64,64,64,64,94,72, + 80,112,88,72,238,3,12,12,4,1,0,192,64,64,64,64, + 64,64,64,64,64,64,224,11,7,14,12,1,0,251,128,68, + 64,68,64,68,64,68,64,68,64,238,224,7,7,7,8,1, + 0,248,68,68,68,68,68,238,5,7,7,6,1,0,112,136, + 136,136,136,136,112,6,10,10,7,1,253,248,68,68,68,68, + 68,120,64,64,224,6,10,10,7,1,253,120,136,136,136,136, + 136,120,8,8,28,5,7,7,6,1,0,208,104,64,64,64, + 64,240,5,7,7,6,1,0,120,136,128,112,8,136,240,6, + 10,10,7,1,0,32,32,32,248,32,32,32,36,36,24,7, + 7,7,8,1,0,204,68,68,68,68,68,62,8,7,7,9, + 1,0,231,36,36,36,24,24,24,11,7,14,11,0,0,238, + 224,36,128,42,128,42,128,42,128,27,0,17,0,8,7,7, + 9,1,0,231,36,24,24,24,36,231,8,10,10,8,1,253, + 231,36,36,36,24,24,24,16,144,224,5,7,7,6,1,0, + 248,144,144,32,72,72,248,5,16,16,6,1,252,24,32,32, + 32,32,32,32,192,32,32,32,32,32,32,32,24,1,16,16, + 3,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,16,16,5,0,252,192,32,32,32,32,32,32, + 24,32,32,32,32,32,32,32,192,5,3,3,8,1,9,72, + 168,144,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,5,0,0,2,12,12,5,1,253,192, + 192,0,0,0,192,192,192,192,192,192,192,5,11,11,7,1, + 254,16,16,112,168,160,160,160,200,112,64,64,8,12,12,9, + 1,0,6,9,17,16,16,124,16,16,16,81,178,204,7,7, + 7,9,1,3,130,124,68,68,68,124,130,11,11,22,12,0, + 0,241,224,32,128,17,0,10,0,127,192,14,0,4,0,127, + 192,4,0,4,0,31,0,1,16,16,3,2,252,128,128,128, + 128,128,128,128,0,0,128,128,128,128,128,128,128,4,13,13, + 6,1,0,96,144,128,128,96,144,144,144,96,16,16,144,96, + 5,2,2,6,1,11,216,216,9,10,20,10,1,3,62,0, + 65,0,158,128,162,128,162,128,160,128,162,128,156,128,65,0, + 62,0,4,6,6,5,1,7,96,16,112,144,112,240,7,7, + 7,9,1,0,18,36,108,216,108,36,18,6,4,4,8,1, + 2,252,4,4,4,3,1,1,5,0,3,224,9,10,20,10, + 1,3,62,0,65,0,188,128,146,128,146,128,156,128,146,128, + 186,128,65,0,62,0,5,1,1,7,1,11,248,4,4,4, + 6,2,8,96,144,144,96,7,9,9,9,2,1,16,16,16, + 254,16,16,16,0,254,4,7,7,5,1,6,96,144,16,16, + 32,64,240,4,7,7,5,1,6,96,144,16,32,16,144,96, + 3,4,4,6,3,11,32,96,64,128,7,10,10,8,1,253, + 136,136,136,136,136,218,164,128,128,128,7,15,15,8,1,252, + 62,116,244,244,244,116,52,20,20,20,20,20,20,20,20,2, + 2,2,4,2,5,192,192,3,3,3,7,2,253,64,32,224, + 3,7,7,4,1,6,64,192,64,64,64,64,224,4,6,6, + 5,1,7,96,144,144,144,96,240,7,7,7,8,1,0,144, + 72,108,54,108,72,144,11,11,22,12,1,0,64,0,196,0, + 68,0,68,0,68,64,232,192,9,64,10,64,11,224,16,64, + 16,224,11,11,22,12,1,0,64,0,196,0,68,0,68,0, + 68,0,232,192,9,32,8,32,8,64,16,128,17,224,12,11, + 22,13,1,0,96,0,146,0,18,0,34,0,18,32,148,96, + 100,160,5,32,5,240,8,32,8,112,5,12,12,8,1,253, + 48,48,0,0,0,48,32,32,64,128,136,112,11,16,32,11, + 0,0,8,0,12,0,4,0,2,0,0,0,4,0,4,0, + 10,0,10,0,10,0,17,0,17,0,31,0,32,128,32,128, + 241,224,11,16,32,11,0,0,2,0,6,0,4,0,8,0, + 0,0,4,0,4,0,10,0,10,0,10,0,17,0,17,0, + 31,0,32,128,32,128,241,224,11,15,30,11,0,0,4,0, + 14,0,17,0,0,0,4,0,4,0,10,0,10,0,10,0, + 17,0,17,0,31,0,32,128,32,128,241,224,11,15,30,11, + 0,0,9,0,21,0,18,0,0,0,4,0,4,0,10,0, + 10,0,10,0,17,0,17,0,31,0,32,128,32,128,241,224, + 11,14,28,11,0,0,27,0,27,0,0,0,4,0,4,0, + 10,0,10,0,10,0,17,0,17,0,31,0,32,128,32,128, + 241,224,11,15,30,11,0,0,6,0,9,0,9,0,6,0, + 4,0,4,0,10,0,10,0,10,0,17,0,17,0,31,0, + 32,128,32,128,241,224,14,11,22,15,0,0,15,248,10,24, + 10,8,10,40,18,32,31,224,18,36,18,36,34,8,34,8, + 247,248,9,14,28,10,1,253,30,128,33,128,64,128,128,128, + 128,0,128,0,128,0,128,128,64,128,33,0,30,0,8,0, + 4,0,28,0,10,16,32,11,0,0,16,0,24,0,8,0, + 4,0,0,0,255,128,32,128,32,128,34,128,34,0,62,0, + 34,64,34,64,32,128,32,128,255,128,10,16,32,11,0,0, + 4,0,12,0,8,0,16,0,0,0,255,128,32,128,32,128, + 34,128,34,0,62,0,34,64,34,64,32,128,32,128,255,128, + 10,15,30,11,0,0,8,0,28,0,34,0,0,0,255,128, + 32,128,32,128,34,128,34,0,62,0,34,64,34,64,32,128, + 32,128,255,128,10,14,28,11,0,0,54,0,54,0,0,0, + 255,128,32,128,32,128,34,128,34,0,62,0,34,64,34,64, + 32,128,32,128,255,128,5,16,16,6,1,0,64,96,32,16, + 0,248,32,32,32,32,32,32,32,32,32,248,5,16,16,6, + 1,0,16,48,32,64,0,248,32,32,32,32,32,32,32,32, + 32,248,5,15,15,6,1,0,32,112,136,0,248,32,32,32, + 32,32,32,32,32,32,248,5,14,14,6,1,0,216,216,0, + 248,32,32,32,32,32,32,32,32,32,248,10,11,22,11,0, + 0,254,0,33,128,32,128,32,64,32,64,248,64,32,64,32, + 64,32,128,33,128,254,0,11,15,30,12,0,0,9,0,21, + 0,18,0,0,0,227,224,48,128,48,128,40,128,40,128,36, + 128,34,128,34,128,33,128,33,128,248,128,10,16,32,12,1, + 0,16,0,24,0,8,0,4,0,0,0,30,0,33,0,64, + 128,128,64,128,64,128,64,128,64,128,64,64,128,33,0,30, + 0,10,16,32,12,1,0,2,0,6,0,4,0,8,0,0, + 0,30,0,33,0,64,128,128,64,128,64,128,64,128,64,128, + 64,64,128,33,0,30,0,10,15,30,12,1,0,8,0,28, + 0,34,0,0,0,30,0,33,0,64,128,128,64,128,64,128, + 64,128,64,128,64,64,128,33,0,30,0,10,15,30,12,1, + 0,18,0,42,0,36,0,0,0,30,0,33,0,64,128,128, + 64,128,64,128,64,128,64,128,64,64,128,33,0,30,0,10, + 14,28,12,1,0,54,0,54,0,0,0,30,0,33,0,64, + 128,128,64,128,64,128,64,128,64,128,64,64,128,33,0,30, + 0,7,7,7,9,1,0,130,68,40,16,40,68,130,10,13, + 26,12,1,255,0,128,31,0,33,0,66,128,130,64,132,64, + 140,64,136,64,144,64,80,128,33,0,62,0,64,0,11,16, + 32,12,1,0,8,0,12,0,4,0,2,0,0,0,251,224, + 32,128,32,128,32,128,32,128,32,128,32,128,32,128,32,128, + 17,0,14,0,11,16,32,12,1,0,2,0,6,0,4,0, + 8,0,0,0,251,224,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,17,0,14,0,11,15,30,12,1,0, + 4,0,14,0,17,0,0,0,251,224,32,128,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,17,0,14,0,11,14, + 28,12,1,0,27,0,27,0,0,0,251,224,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,17,0,14,0, + 11,16,32,12,0,0,2,0,6,0,4,0,8,0,0,0, + 241,224,32,128,17,0,17,0,10,0,14,0,4,0,4,0, + 4,0,4,0,31,0,9,11,22,10,0,0,248,0,32,0, + 62,0,33,0,32,128,32,128,32,128,33,0,62,0,32,0, + 248,0,6,12,12,7,1,0,48,72,72,72,72,216,72,68, + 68,68,68,216,6,12,12,7,1,0,64,96,32,16,0,112, + 136,8,120,136,136,124,6,12,12,7,1,0,16,48,32,64, + 0,112,136,8,120,136,136,124,6,11,11,7,1,0,32,112, + 136,0,112,136,8,120,136,136,124,6,11,11,7,1,0,72, + 168,144,0,112,136,8,120,136,136,124,6,10,10,7,1,0, + 216,216,0,112,136,8,120,136,136,124,6,11,11,7,1,0, + 48,72,72,48,112,136,8,120,136,136,124,10,7,14,11,1, + 0,115,128,140,64,15,192,120,0,136,0,140,64,115,128,5, + 10,10,6,1,253,112,136,128,128,128,136,112,32,16,112,5, + 12,12,6,1,0,64,96,32,16,0,112,136,248,128,128,136, + 112,5,12,12,6,1,0,16,48,32,64,0,112,136,248,128, + 128,136,112,5,11,11,6,1,0,32,112,136,0,112,136,248, + 128,128,136,112,5,10,10,6,1,0,216,216,0,112,136,248, + 128,128,136,112,4,12,12,4,0,0,128,192,64,32,0,96, + 32,32,32,32,32,112,4,12,12,4,1,0,16,48,32,64, + 0,192,64,64,64,64,64,224,5,11,11,5,0,0,32,112, + 136,0,96,32,32,32,32,32,112,5,10,10,6,0,0,216, + 216,0,96,32,32,32,32,32,112,5,12,12,6,1,0,80, + 112,224,16,16,120,136,136,136,136,136,112,7,11,11,8,1, + 0,72,168,144,0,248,68,68,68,68,68,238,5,12,12,6, + 1,0,64,96,32,16,0,112,136,136,136,136,136,112,5,12, + 12,6,1,0,16,48,32,64,0,112,136,136,136,136,136,112, + 5,11,11,6,1,0,32,112,136,0,112,136,136,136,136,136, + 112,5,11,11,6,1,0,72,168,144,0,112,136,136,136,136, + 136,112,5,10,10,6,1,0,216,216,0,112,136,136,136,136, + 136,112,9,7,14,11,1,0,8,0,8,0,0,0,255,128, + 0,0,8,0,8,0,5,11,11,6,1,254,8,16,112,152, + 168,168,168,200,112,64,128,7,12,12,8,1,0,64,96,32, + 16,0,204,68,68,68,68,68,62,7,12,12,8,1,0,8, + 24,16,32,0,204,68,68,68,68,68,62,7,11,11,8,1, + 0,16,56,68,0,204,68,68,68,68,68,62,7,10,10,8, + 1,0,108,108,0,204,68,68,68,68,68,62,8,15,15,8, + 1,253,4,12,8,16,0,231,36,36,36,24,24,24,16,144, + 224,6,15,15,7,1,253,192,64,64,64,64,120,68,68,68, + 68,68,120,64,64,224,8,13,13,8,1,253,54,54,0,231, + 36,36,36,24,24,24,16,144,224}; +/* + Fontname: cursor + Copyright: These glyphs are unencumbered + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=16 x= 1 y= 0 dx=17 dy= 0 ascent=15 len=32 + Font Bounding box w=31 h=31 x=-15 y=-16 + Calculated Min Values x=-15 y=-16 dx= 0 dy= 0 + Pure Font ascent =15 descent=-8 + X Font ascent =16 descent=-16 + Max Font ascent =15 descent=-16 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cursor[5286] U8G_SECTION(".progmem.u8g_font_cursor") = { + 0,31,31,241,240,15,4,101,8,211,32,255,248,15,240,16, + 240,14,14,28,17,250,248,224,28,240,60,248,124,124,248,63, + 240,31,224,15,192,15,192,31,224,63,240,124,248,248,124,240, + 60,224,28,16,16,32,17,249,247,240,15,248,31,252,63,254, + 127,127,254,63,252,31,248,15,240,15,240,31,248,63,252,127, + 254,254,127,252,63,248,31,240,15,14,14,28,17,243,242,0, + 12,0,60,0,248,3,248,15,240,63,240,3,224,7,224,14, + 192,28,192,56,128,112,128,224,0,64,0,16,16,32,17,242, + 241,0,7,0,31,0,127,1,254,7,254,31,252,63,252,63, + 248,7,248,15,240,31,240,62,224,124,224,248,64,112,0,32, + 0,8,10,10,17,253,255,255,0,255,24,24,24,24,90,60, + 24,10,12,24,17,252,254,255,192,255,192,255,192,255,192,255, + 192,30,0,30,0,127,128,127,128,127,128,63,0,30,0,8, + 10,10,17,253,255,24,60,90,24,24,24,24,255,0,255,10, + 12,24,17,252,254,12,0,30,0,127,128,127,128,127,128,30, + 0,30,0,255,192,255,192,255,192,255,192,255,192,16,8,16, + 17,242,251,1,0,7,192,136,96,255,255,0,24,0,32,0, + 64,255,192,16,9,18,17,242,251,7,0,15,192,159,224,255, + 255,255,255,255,255,255,248,255,224,255,192,13,14,28,17,250, + 248,226,56,34,32,34,32,34,32,255,248,162,40,162,40,162, + 40,162,40,255,248,34,32,34,32,34,32,226,56,15,16,32, + 17,249,247,251,190,251,190,251,190,59,184,255,254,255,254,255, + 254,251,190,251,190,255,254,255,254,255,254,59,184,251,190,251, + 190,251,190,14,14,28,17,0,255,192,0,192,0,196,16,196, + 32,196,64,196,128,197,0,198,0,199,240,192,0,192,0,192, + 0,255,252,255,252,16,16,32,17,255,254,240,0,240,0,247, + 12,247,28,247,56,247,112,247,224,247,192,247,252,247,252,247, + 252,240,0,255,255,255,255,255,255,255,255,14,14,28,17,243, + 255,0,12,0,12,32,140,16,140,8,140,4,140,2,140,1, + 140,63,140,0,12,0,12,0,12,255,252,255,252,16,16,32, + 17,242,254,0,15,0,15,48,239,56,239,28,239,14,239,7, + 239,3,239,63,239,63,239,63,239,0,15,255,255,255,255,255, + 255,255,255,13,14,28,17,250,255,2,0,2,0,2,0,2, + 0,2,0,2,0,34,32,18,64,10,128,7,0,2,0,0, + 0,255,248,255,248,15,16,32,17,249,254,3,128,3,128,3, + 128,3,128,3,128,3,128,51,152,59,184,31,240,15,224,7, + 192,3,128,255,254,255,254,255,254,255,254,14,10,20,17,249, + 255,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,16,12,24,17,248,254,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,255,255,255,255,255, + 255,255,255,15,16,32,17,248,248,255,254,128,0,191,254,160, + 2,175,250,168,10,171,234,170,42,170,170,171,170,168,42,175, + 234,160,10,191,250,128,2,255,254,16,16,32,17,248,248,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,10, + 14,28,17,252,242,12,0,12,0,30,0,30,0,63,0,63, + 0,127,128,127,128,204,192,140,64,12,0,12,0,12,0,12, + 0,12,16,32,17,251,241,15,0,15,0,31,128,31,128,63, + 192,63,192,127,224,127,224,255,240,255,240,255,240,239,112,15, + 0,15,0,15,0,15,0,14,14,28,17,249,249,7,128,31, + 224,63,240,120,120,112,56,224,28,224,28,224,28,224,28,112, + 56,120,120,63,240,31,224,7,128,16,16,32,17,248,248,7, + 224,31,248,63,252,127,254,127,254,252,63,248,31,248,31,248, + 31,248,31,252,63,127,254,127,254,63,252,31,248,7,224,14, + 16,32,17,250,243,63,240,103,152,200,204,147,36,158,36,136, + 68,199,140,127,248,83,40,83,40,83,40,87,168,211,44,240, + 60,255,252,255,252,15,16,32,17,250,243,127,248,239,156,219, + 238,183,182,191,246,159,102,207,206,255,252,215,172,215,172,215, + 172,223,236,215,174,243,62,255,254,255,254,15,16,32,17,249, + 249,31,240,32,8,96,6,80,26,79,226,192,2,192,2,64, + 2,64,2,89,26,106,170,235,170,218,154,64,2,64,2,63, + 252,16,16,32,17,249,249,31,240,63,248,127,255,127,255,255, + 255,255,255,255,255,255,255,127,255,127,255,255,255,255,255,255, + 255,255,255,127,255,63,252,16,15,30,17,249,248,2,128,2, + 128,2,128,2,128,2,128,2,128,254,255,0,0,254,255,2, + 128,2,128,2,128,2,128,2,128,2,128,16,16,32,17,249, + 247,7,192,7,192,7,192,7,192,7,192,255,255,255,255,255, + 255,255,255,255,255,7,192,7,192,7,192,7,192,7,192,7, + 192,16,15,30,17,249,248,66,132,162,138,82,148,42,168,22, + 208,10,160,253,127,2,128,253,127,10,160,22,208,42,168,82, + 148,162,138,66,132,16,15,30,17,249,248,102,204,182,219,222, + 246,110,236,54,216,250,191,252,127,1,0,252,127,250,191,54, + 216,110,236,222,246,182,219,102,204,16,15,30,17,249,248,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,254,255,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,16,16,32, + 17,249,247,3,128,3,128,3,128,3,128,3,128,3,128,255, + 255,255,255,255,255,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,15,15,30,17,249,248,2,128,6,192,10,160,18, + 144,34,136,66,132,254,254,0,0,254,254,66,132,34,136,18, + 144,10,160,6,192,2,128,16,16,32,17,249,247,7,192,15, + 224,31,240,59,184,115,156,227,142,255,255,254,255,255,255,227, + 142,115,156,59,184,31,240,15,224,7,192,3,128,10,10,20, + 17,251,251,30,0,127,128,127,128,255,192,255,192,255,192,255, + 192,127,128,127,128,30,0,12,12,24,17,250,250,31,128,127, + 224,127,224,255,240,255,240,255,240,255,240,255,240,255,240,127, + 224,127,224,31,128,12,12,24,17,250,249,255,240,128,16,128, + 16,128,16,128,16,134,16,134,16,128,16,128,16,128,16,128, + 16,255,240,14,14,28,17,249,248,255,252,255,252,255,252,224, + 28,224,28,231,156,231,156,231,156,231,156,224,28,224,28,255, + 252,255,252,255,252,10,14,28,17,251,249,12,0,30,0,63, + 0,109,128,204,192,12,0,12,0,12,0,12,0,204,192,109, + 128,63,0,30,0,12,0,12,16,32,17,250,248,15,0,31, + 128,63,192,127,224,255,240,255,240,255,240,15,0,15,0,255, + 240,255,240,255,240,127,224,63,192,31,128,15,0,15,15,30, + 17,242,241,0,2,0,12,0,60,0,248,3,248,15,240,63, + 240,1,224,2,224,4,192,8,192,16,128,32,128,64,0,128, + 0,15,16,32,17,242,240,0,6,0,30,0,126,1,252,7, + 248,31,248,127,240,127,240,7,224,15,224,29,192,57,192,113, + 128,225,128,192,0,128,0,15,15,30,17,242,241,0,2,0, + 12,0,60,0,248,3,248,0,112,0,176,1,32,2,32,4, + 0,8,0,16,0,32,0,64,0,128,0,15,15,30,17,242, + 241,0,6,0,30,0,124,1,252,7,248,7,248,1,240,3, + 240,7,96,14,64,28,0,56,0,112,0,224,0,192,0,12, + 12,24,17,250,249,255,240,137,16,153,144,176,208,224,112,134, + 16,134,16,224,112,176,208,153,144,137,16,255,240,14,14,28, + 17,249,248,255,252,255,252,207,204,223,236,252,252,251,124,247, + 188,247,188,251,124,252,252,223,236,207,204,255,252,255,252,14, + 14,28,17,250,248,143,192,223,224,248,48,144,16,152,0,252, + 0,0,0,0,0,0,252,0,100,32,36,48,124,31,236,15, + 196,16,16,32,17,249,247,199,224,239,240,255,248,255,252,252, + 28,255,12,255,0,255,0,0,255,0,255,48,127,56,63,63, + 255,31,255,15,247,7,227,14,14,28,17,249,249,3,0,7, + 128,15,192,3,0,35,16,99,24,255,252,255,252,99,24,35, + 16,3,0,15,192,7,128,3,0,16,16,32,17,248,248,3, + 192,3,224,7,224,15,240,23,232,59,220,255,255,255,255,255, + 255,255,255,59,220,23,232,15,240,7,224,3,192,3,192,16, + 15,30,17,242,243,0,120,0,112,128,51,159,176,255,240,254, + 48,252,48,96,56,0,240,31,224,8,0,8,0,8,0,8, + 0,30,0,16,16,32,17,242,243,0,252,0,252,192,255,255, + 255,255,255,255,252,255,252,255,252,255,252,255,252,127,248,31, + 240,28,0,28,0,63,0,63,0,16,16,32,17,254,240,63, + 0,16,128,200,64,234,160,200,32,203,160,248,60,56,63,8, + 39,8,39,9,47,9,39,9,32,17,16,33,8,62,248,16, + 16,32,17,254,240,63,0,223,128,239,192,255,224,239,224,239, + 252,255,254,255,255,63,239,15,239,15,255,15,239,15,231,31, + 240,63,248,62,248,13,16,32,17,244,240,0,24,0,120,1, + 224,3,192,7,128,15,192,31,224,95,192,255,224,191,224,15, + 192,15,128,148,0,196,0,104,0,48,0,13,16,32,17,244, + 240,0,56,0,248,3,240,7,224,15,192,31,224,127,240,255, + 240,255,240,255,240,255,224,255,192,255,128,254,0,252,0,120, + 0,15,14,28,17,0,242,127,128,128,64,126,32,16,16,14, + 16,16,16,14,40,16,68,12,130,3,4,2,72,1,16,0, + 160,0,64,16,16,32,17,0,241,127,128,255,192,255,224,255, + 240,127,248,31,248,63,248,31,252,63,254,31,255,15,254,7, + 252,3,248,1,240,0,224,0,64,15,14,28,17,250,250,62, + 248,99,140,193,6,128,2,128,2,128,2,128,2,192,6,96, + 12,48,24,24,48,12,96,6,192,3,128,15,14,28,17,250, + 250,62,248,127,252,227,142,193,6,192,6,192,6,194,134,225, + 14,112,28,56,56,28,112,15,224,7,192,3,128,16,16,32, + 17,248,248,255,255,213,85,170,171,213,85,160,11,208,5,160, + 11,208,5,160,11,208,5,160,11,208,5,170,171,213,85,170, + 171,255,255,16,16,32,17,248,248,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,14,14,28,17,249,248,127, + 248,63,240,159,228,207,204,231,156,243,60,255,252,255,252,243, + 60,231,156,207,204,159,228,63,240,127,248,16,16,32,17,248, + 247,63,252,127,254,127,254,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,127,254,127,254,63, + 252,8,14,14,17,0,242,128,192,224,240,248,252,254,255,248, + 216,140,12,6,6,10,16,32,17,255,241,192,0,224,0,240, + 0,248,0,252,0,254,0,255,0,255,128,255,192,255,192,254, + 0,239,0,207,0,7,128,7,128,3,0,14,13,26,17,0, + 249,192,0,192,0,193,0,194,0,196,0,200,0,223,252,200, + 0,196,0,194,0,193,0,192,0,192,0,16,15,30,17,255, + 248,240,0,240,0,240,192,241,192,243,128,247,0,255,255,255, + 255,255,255,247,0,243,128,241,192,240,192,240,0,240,0,10, + 14,28,17,0,249,192,0,192,0,192,0,192,0,192,0,192, + 0,255,192,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,12,16,32,17,255,248,240,0,240,0,240,0,240,0,240, + 0,240,0,255,240,255,240,255,240,255,240,240,0,240,0,240, + 0,240,0,240,0,240,0,16,16,32,17,248,248,128,3,127, + 253,127,253,68,69,69,85,69,85,69,85,69,85,68,69,127, + 253,127,253,127,253,127,253,127,253,127,253,128,3,15,16,32, + 17,248,248,127,252,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,127,252,10,10,20,17,0,255,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,255,192,255,192,12,12,24, + 17,255,254,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,255,240,255,240,255,240,255,240,10,10,20,17,247, + 255,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,255,192,255,192,12,12,24,17,246,254,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,255,240,255,240,255, + 240,255,240,16,16,32,17,242,245,3,128,30,240,2,128,129, + 0,67,135,36,75,29,112,5,64,4,64,2,128,4,64,9, + 32,18,144,20,80,120,60,248,63,16,16,32,17,242,245,31, + 224,63,240,63,248,195,130,231,199,127,255,63,251,31,240,7, + 224,7,192,15,224,31,240,63,248,126,252,252,127,252,127,16, + 16,32,17,248,248,128,3,127,253,127,253,68,69,84,85,84, + 85,84,85,84,85,68,69,127,253,127,253,127,253,127,253,127, + 253,127,253,128,3,15,16,32,17,248,248,127,252,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,127,252,15,14,28,17,252, + 243,7,0,12,0,6,0,3,0,127,248,128,4,179,54,179, + 54,179,54,128,6,128,6,96,28,24,96,7,128,16,16,32, + 17,252,241,15,128,30,0,15,0,7,0,127,248,255,252,255, + 255,255,255,255,255,255,255,255,255,255,255,63,247,31,224,15, + 192,7,128,11,16,32,17,246,255,112,0,136,0,140,0,74, + 0,122,0,33,0,17,0,16,128,8,128,12,64,4,64,2, + 32,1,224,0,224,0,96,0,32,13,16,32,17,245,255,252, + 0,254,0,255,0,127,0,63,128,63,128,31,192,15,192,15, + 224,7,224,7,240,3,248,1,248,0,248,0,120,0,56,15, + 16,32,17,249,252,7,128,15,192,31,224,51,48,51,48,31, + 224,15,192,7,128,135,132,135,134,67,8,56,112,7,128,31, + 226,240,62,128,4,16,16,32,17,249,252,15,192,31,224,63, + 240,127,248,127,248,63,240,31,224,143,193,143,199,207,207,247, + 156,120,120,7,128,127,227,255,255,240,62,10,10,20,17,252, + 251,12,0,12,0,12,0,12,0,255,192,255,192,12,0,12, + 0,12,0,12,0,12,12,24,17,251,250,15,0,15,0,15, + 0,15,0,255,240,255,240,255,240,255,240,15,0,15,0,15, + 0,15,0,9,15,30,17,252,248,62,0,127,0,227,128,193, + 128,225,128,99,128,7,0,30,0,28,0,20,0,20,0,119, + 0,54,0,28,0,8,0,11,16,32,17,251,248,31,0,63, + 128,127,192,255,224,241,224,249,224,123,224,63,192,31,128,31, + 0,31,0,63,128,127,192,63,128,31,0,14,0,8,14,14, + 17,249,242,1,3,7,15,31,63,127,255,31,27,49,48,96, + 96,10,16,32,17,248,241,0,192,1,192,3,192,7,192,15, + 192,31,192,63,192,127,192,255,192,255,192,31,192,61,192,60, + 192,120,0,120,0,48,0,14,13,26,17,243,249,0,12,0, + 12,2,12,1,12,0,140,0,76,255,236,0,76,0,140,1, + 12,2,12,0,12,0,12,16,15,30,17,242,248,0,15,0, + 15,3,15,3,143,1,207,0,239,255,255,255,255,255,255,0, + 239,1,207,3,143,3,15,0,15,0,15,10,14,28,17,247, + 249,0,192,0,192,0,192,0,192,0,192,0,192,255,192,255, + 192,0,192,0,192,0,192,0,192,0,192,0,192,12,16,32, + 17,246,248,0,240,0,240,0,240,0,240,0,240,0,240,255, + 240,255,240,255,240,255,240,0,240,0,240,0,240,0,240,0, + 240,0,240,16,16,32,17,248,248,128,3,127,253,127,253,68, + 69,85,69,85,69,85,69,85,69,68,69,127,253,127,253,127, + 253,127,253,127,253,127,253,128,3,15,16,32,17,248,248,127, + 252,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,127,252,14, + 14,28,17,250,248,255,252,128,68,128,68,128,68,255,196,136, + 68,136,68,136,68,136,68,143,252,136,4,136,4,136,4,255, + 252,16,16,32,17,249,247,255,255,255,255,255,255,224,119,255, + 247,255,247,255,247,238,119,238,119,239,255,239,255,239,255,238, + 7,255,255,255,255,255,255,12,13,26,17,250,242,1,0,1, + 0,5,128,5,128,13,128,13,192,29,192,29,192,61,224,61, + 224,125,224,125,240,248,224,16,16,32,17,248,240,0,192,0, + 224,1,224,3,240,3,240,7,240,7,248,15,248,15,248,31, + 252,31,252,63,252,63,255,127,255,255,248,127,224,7,15,15, + 17,253,0,40,40,40,40,40,40,40,40,40,40,40,254,124, + 56,16,9,16,32,17,252,255,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,255,128,255,128, + 127,0,62,0,28,0,8,0,15,7,14,17,249,252,16,16, + 48,24,127,252,240,30,127,252,48,24,16,16,15,9,18,17, + 249,251,24,48,56,56,127,252,255,254,255,254,255,254,127,252, + 56,56,24,48,15,7,14,17,1,252,16,0,48,0,127,254, + 240,0,127,254,48,0,16,0,16,9,18,17,0,251,12,0, + 28,0,63,255,127,255,255,255,127,255,63,255,28,0,12,0, + 15,7,14,17,241,252,0,16,0,24,255,252,0,30,255,252, + 0,24,0,16,16,9,18,17,241,251,0,48,0,56,255,252, + 255,254,255,255,255,254,255,252,0,56,0,48,7,15,15,17, + 253,240,16,56,124,254,40,40,40,40,40,40,40,40,40,40, + 40,9,16,32,17,252,240,8,0,28,0,62,0,127,0,255, + 128,255,128,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,7,15,15,17,253,248,16,56,124, + 254,40,40,40,40,40,40,40,254,124,56,16,9,15,30,17, + 252,248,28,0,62,0,127,0,255,128,255,128,62,0,62,0, + 62,0,62,0,62,0,255,128,255,128,127,0,62,0,28,0, + 15,16,32,17,246,240,0,32,0,112,0,248,1,222,5,222, + 9,222,17,222,17,222,17,222,17,222,49,222,113,222,253,222, + 24,136,0,120,0,48,16,16,32,17,245,240,0,56,0,124, + 0,254,0,255,6,255,14,255,30,255,30,255,30,255,30,255, + 62,255,126,255,254,255,126,254,12,126,0,60,14,14,28,17, + 249,249,255,0,128,0,128,0,128,0,143,192,136,64,136,68, + 136,68,8,68,15,196,0,36,0,20,0,12,3,252,16,16, + 32,17,248,248,255,192,255,192,255,192,224,0,239,240,239,240, + 239,247,238,119,238,119,239,247,15,247,15,255,0,31,3,255, + 3,255,3,255,16,16,32,17,250,247,32,16,16,32,16,32, + 8,64,8,64,135,135,103,152,31,224,31,224,103,152,135,135, + 8,64,8,64,16,32,16,32,32,16,16,16,32,17,250,247, + 96,24,48,48,16,32,24,96,143,193,207,207,111,220,63,240, + 63,224,111,248,207,207,143,193,24,64,24,96,48,48,96,24, + 11,16,32,17,247,242,0,96,1,0,52,96,121,0,104,96, + 252,0,132,0,228,0,164,0,228,0,164,0,228,0,228,0, + 132,0,132,0,252,0,12,16,32,17,246,242,0,48,24,176, + 62,176,62,176,126,176,255,0,255,0,255,0,255,0,255,0, + 255,0,255,0,255,0,255,0,255,0,255,0,15,16,32,17, + 249,247,1,0,2,128,2,128,2,128,4,64,4,64,4,64, + 57,56,192,6,56,56,9,32,18,144,36,72,40,40,48,24, + 32,8,16,16,32,17,249,247,1,0,3,128,3,128,6,192, + 6,192,12,96,28,120,249,62,192,7,248,62,57,56,51,152, + 102,204,108,108,120,60,112,28,15,13,26,17,249,249,3,128, + 15,224,28,112,48,24,96,12,193,6,194,134,193,6,96,12, + 48,24,28,112,15,224,3,128,16,14,28,17,249,249,7,192, + 15,224,31,240,60,120,112,28,225,14,195,135,198,199,195,135, + 225,14,112,28,60,120,31,240,7,192,13,13,26,16,250,249, + 2,0,2,0,2,0,2,0,2,0,2,0,255,248,2,0, + 2,0,2,0,2,0,2,0,2,0,15,15,30,16,249,248, + 3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254, + 255,254,3,128,3,128,3,128,3,128,3,128,3,128,14,14, + 28,17,0,242,192,0,240,0,124,0,127,0,63,192,63,240, + 31,0,31,0,12,128,12,64,4,32,4,16,0,8,0,4, + 16,16,32,17,255,241,224,0,248,0,254,0,127,128,127,224, + 63,252,63,252,31,252,31,192,15,224,15,112,7,56,7,28, + 7,14,0,7,0,3,14,14,28,17,0,242,255,252,255,252, + 192,0,192,0,192,0,199,240,198,0,197,0,196,128,196,64, + 196,32,196,16,192,0,192,0,16,16,32,17,255,241,255,255, + 255,255,255,255,255,255,240,0,247,252,247,252,247,252,247,192, + 247,224,247,112,247,56,247,28,247,12,240,0,240,0,14,14, + 28,17,243,242,255,252,255,252,0,12,0,12,0,12,63,140, + 1,140,2,140,4,140,8,140,16,140,32,140,0,12,0,12, + 16,16,32,17,242,241,255,255,255,255,255,255,255,255,0,15, + 63,239,63,239,63,239,3,239,7,239,14,239,28,239,56,239, + 48,239,0,15,0,15,13,14,28,17,250,242,255,248,255,248, + 0,0,2,0,7,0,10,128,18,64,34,32,2,0,2,0, + 2,0,2,0,2,0,2,0,15,16,32,17,249,241,255,254, + 255,254,255,254,255,254,3,128,7,192,15,224,31,240,59,184, + 51,152,3,128,3,128,3,128,3,128,3,128,3,128,14,10, + 20,17,249,246,255,252,255,252,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,16,12,24,17,248,245,255,255, + 255,255,255,255,255,255,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,7,16,16,17,253,240,16,0,56,124, + 254,238,254,124,56,16,186,214,146,130,130,130,9,16,32,17, + 252,240,28,0,28,0,62,0,127,0,255,128,255,128,255,128, + 127,0,62,0,93,0,255,128,255,128,255,128,235,128,235,128, + 227,128,10,10,20,17,0,246,255,192,255,192,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,12,12,24,17, + 255,245,255,240,255,240,255,240,255,240,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,14,14,28,17,249,244, + 17,32,4,80,147,76,79,144,50,96,194,24,2,0,2,0, + 2,0,2,0,2,0,2,128,2,128,1,0,16,16,32,17, + 248,242,23,110,223,251,191,252,127,255,255,252,255,255,243,158, + 3,128,3,128,3,128,3,128,3,224,3,224,3,224,3,224, + 1,192,10,10,20,17,247,246,255,192,255,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,12,12,24,17, + 246,245,255,240,255,240,255,240,255,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,16,16,32,17,241,249, + 31,224,31,224,31,224,63,240,97,24,193,12,129,7,131,135, + 131,135,132,7,200,12,96,24,63,240,31,224,31,224,31,224, + 16,16,32,17,241,249,63,240,63,240,63,240,127,248,255,252, + 255,255,255,255,255,255,255,255,255,255,255,255,255,252,127,248, + 63,240,63,240,63,240,7,14,14,10,253,249,238,56,16,16, + 16,16,16,16,16,16,16,16,56,238,9,16,32,10,252,248, + 247,128,255,128,255,128,62,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,255,128,247,128, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255}; +/* + Fontname: cursor + Copyright: These + Capital A Height: 0, '1' Height: 0 + Calculated Max Values w=16 h=16 x= 0 y= 0 dx=17 dy= 0 ascent= 7 len=32 + Font Bounding box w=31 h=31 x=-15 y=-16 + Calculated Min Values x=-14 y=-16 dx= 0 dy= 0 + Pure Font ascent = 0 descent= 0 + X Font ascent = 0 descent= 0 + Max Font ascent = 7 descent=-16 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cursorr[492] U8G_SECTION(".progmem.u8g_font_cursorr") = { + 0,31,31,241,240,0,1,6,0,0,32,80,0,7,240,0, + 0,255,255,14,14,28,17,243,242,0,12,0,60,0,248,3, + 248,15,240,63,240,3,224,7,224,14,192,28,192,56,128,112, + 128,224,0,64,0,16,16,32,17,242,241,0,7,0,31,0, + 127,1,254,7,254,31,252,63,252,63,248,7,248,15,240,31, + 240,62,224,124,224,248,64,112,0,32,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,10,14,28, + 17,252,242,12,0,12,0,30,0,30,0,63,0,63,0,127, + 128,127,128,204,192,140,64,12,0,12,0,12,0,12,0,12, + 16,32,17,251,241,15,0,15,0,31,128,31,128,63,192,63, + 192,127,224,127,224,255,240,255,240,255,240,239,112,15,0,15, + 0,15,0,15,0,255,255,255,255,255,255,16,15,30,17,249, + 248,2,128,2,128,2,128,2,128,2,128,2,128,254,255,0, + 0,254,255,2,128,2,128,2,128,2,128,2,128,2,128,16, + 16,32,17,249,247,7,192,7,192,7,192,7,192,7,192,255, + 255,255,255,255,255,255,255,255,255,7,192,7,192,7,192,7, + 192,7,192,7,192,255,255,16,15,30,17,249,248,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,254,255,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,16,16,32,17,249, + 247,3,128,3,128,3,128,3,128,3,128,3,128,255,255,255, + 255,255,255,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,255,255,255,255,255,255,255,255,15,15,30,17,242,241,0, + 2,0,12,0,60,0,248,3,248,15,240,63,240,1,224,2, + 224,4,192,8,192,16,128,32,128,64,0,128,0,15,16,32, + 17,242,240,0,6,0,30,0,126,1,252,7,248,31,248,127, + 240,127,240,7,224,15,224,29,192,57,192,113,128,225,128,192, + 0,128,0,15,15,30,17,242,241,0,2,0,12,0,60,0, + 248,3,248,0,112,0,176,1,32,2,32,4,0,8,0,16, + 0,32,0,64,0,128,0,15,15,30,17,242,241,0,6,0, + 30,0,124,1,252,7,248,7,248,1,240,3,240,7,96,14, + 64,28,0,56,0,112,0,224,0,192,0,255}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 7 len= 9 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0[1702] U8G_SECTION(".progmem.u8g_font_fixed_v0") = { + 1,7,9,0,254,7,1,46,2,94,32,255,254,7,254,7, + 254,2,0,64,34,23,103,128,128,128,128,0,128,128,23,50, + 98,160,160,3,85,101,80,248,80,248,80,2,87,103,112,168, + 160,112,40,168,112,2,87,103,136,144,16,32,64,72,136,2, + 87,103,104,136,104,144,144,144,104,23,18,98,128,128,2,87, + 103,56,64,128,128,128,64,56,2,87,103,224,16,8,8,8, + 16,224,2,87,103,32,168,112,32,112,168,32,3,85,101,32, + 32,248,32,32,18,34,98,64,128,5,81,97,248,18,18,98, + 128,128,2,87,103,8,16,16,32,64,64,128,2,87,103,112, + 136,136,136,136,136,112,2,87,103,32,96,32,32,32,32,248, + 2,87,103,112,136,8,16,32,64,248,2,87,103,240,8,8, + 48,8,8,240,2,87,103,16,144,144,248,16,16,16,2,87, + 103,248,128,128,240,8,8,240,2,87,103,112,128,128,240,136, + 136,112,2,87,103,248,8,8,8,8,8,8,2,87,103,112, + 136,136,112,136,136,112,2,87,103,112,136,136,248,8,8,112, + 18,21,101,128,128,0,128,128,18,37,101,64,64,0,64,128, + 2,87,103,24,32,64,128,64,32,24,4,83,99,248,0,248, + 2,87,103,192,32,16,8,16,32,192,2,87,103,248,8,8, + 48,0,32,32,2,87,103,112,136,136,168,184,128,112,2,87, + 103,112,136,136,248,136,136,136,2,87,103,240,136,136,240,136, + 136,240,2,87,103,112,136,128,128,128,136,112,2,87,103,240, + 136,136,136,136,136,240,2,87,103,248,128,128,224,128,128,248, + 2,87,103,248,128,128,224,128,128,128,2,87,103,112,136,128, + 184,136,136,112,2,87,103,136,136,136,248,136,136,136,2,87, + 103,248,32,32,32,32,32,248,2,87,103,248,8,8,8,8, + 136,112,2,87,103,136,136,144,224,144,136,136,2,87,103,128, + 128,128,128,128,128,248,2,87,103,136,136,216,168,136,136,136, + 2,87,103,136,136,200,168,152,136,136,2,87,103,112,136,136, + 136,136,136,112,2,87,103,240,136,136,240,128,128,128,2,87, + 103,112,136,136,136,136,168,112,2,87,103,240,136,136,240,160, + 144,136,2,87,103,112,136,128,112,8,136,112,2,87,103,248, + 32,32,32,32,32,32,2,87,103,136,136,136,136,136,136,112, + 2,87,103,136,136,136,136,136,80,32,2,87,103,136,136,136, + 168,168,168,80,2,87,103,136,136,80,32,80,136,136,2,87, + 103,136,136,80,32,32,32,32,2,87,103,248,8,16,32,64, + 128,248,18,55,103,224,128,128,128,128,128,224,2,87,103,128, + 64,64,32,16,16,8,18,55,103,224,32,32,32,32,32,224, + 23,50,98,64,160,2,113,97,254,39,34,98,64,128,2,85, + 101,112,8,120,136,120,2,87,103,128,128,240,136,136,136,240, + 2,85,101,112,136,128,136,112,2,87,103,8,8,120,136,136, + 136,120,2,85,101,112,136,248,128,120,2,87,103,56,64,240, + 64,64,64,64,0,87,103,112,136,136,136,120,8,112,2,87, + 103,128,128,240,136,136,136,136,2,87,103,48,0,248,32,32, + 32,248,0,89,105,48,0,248,8,8,8,8,8,112,2,87, + 103,128,128,136,144,224,144,136,2,87,103,224,32,32,32,32, + 32,248,2,85,101,208,168,168,168,168,2,85,101,176,200,136, + 136,136,2,85,101,112,136,136,136,112,0,87,103,240,136,136, + 136,240,128,128,0,87,103,120,136,136,136,120,8,8,2,85, + 101,184,192,128,128,128,2,85,101,120,128,112,8,240,2,87, + 103,32,32,248,32,32,32,32,2,85,101,136,136,136,136,112, + 2,85,101,136,136,136,80,32,2,85,101,136,168,168,168,80, + 2,85,101,136,80,32,80,136,0,87,103,136,136,136,136,120, + 8,112,2,85,101,248,16,32,64,248,2,87,103,24,32,64, + 192,64,32,24,34,23,103,128,128,128,128,128,128,128,2,87, + 103,192,32,16,24,16,32,192,4,82,98,72,176,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2, + 87,103,48,0,248,32,32,32,248,2,87,103,32,112,168,160, + 168,112,32,2,87,103,64,64,64,240,64,72,120,3,85,101, + 136,112,80,112,136,2,87,103,136,136,80,248,32,248,32,34, + 23,103,128,128,128,0,128,128,128,2,87,103,120,128,120,136, + 240,8,240,5,81,97,248,2,87,103,112,136,168,200,168,136, + 112,2,87,103,112,8,120,136,120,0,248,4,83,99,72,144, + 72,4,82,98,248,8,255,2,87,103,112,136,248,200,200,136, + 112,8,81,97,248,20,51,99,64,160,64,2,87,103,32,32, + 248,32,32,0,248,255,255,255,255,255,255,255,255,255,4,83, + 99,144,72,144,255,255,255,255,2,87,103,64,32,112,136,248, + 136,136,2,87,103,16,32,112,136,248,136,136,2,87,103,32, + 80,112,136,248,136,136,2,87,103,72,176,112,136,248,136,136, + 2,87,103,80,0,112,136,248,136,136,2,87,103,112,0,112, + 136,248,136,136,2,87,103,120,160,160,240,160,160,184,0,89, + 105,112,136,128,128,128,136,112,32,96,2,87,103,64,32,248, + 128,224,128,248,2,87,103,16,32,248,128,224,128,248,2,87, + 103,32,80,248,128,224,128,248,2,87,103,80,0,248,128,224, + 128,248,2,87,103,64,32,248,32,32,32,248,2,87,103,16, + 32,248,32,32,32,248,2,87,103,32,80,248,32,32,32,248, + 2,87,103,80,0,248,32,32,32,248,2,87,103,240,136,136, + 232,136,136,240,2,87,103,72,176,136,200,168,152,136,2,87, + 103,64,32,112,136,136,136,112,2,87,103,16,32,112,136,136, + 136,112,2,87,103,32,80,112,136,136,136,112,2,87,103,72, + 176,112,136,136,136,112,2,87,103,80,0,112,136,136,136,112, + 20,51,99,160,64,160,2,87,103,112,136,152,168,200,136,112, + 2,87,103,64,32,136,136,136,136,112,2,87,103,16,32,136, + 136,136,136,112,2,87,103,32,80,136,136,136,136,112,2,87, + 103,80,0,136,136,136,136,112,2,87,103,16,32,136,136,80, + 32,32,2,87,103,128,128,240,136,240,128,128,0,89,105,240, + 136,136,176,136,136,176,128,128,2,87,103,64,32,112,8,120, + 136,120,2,87,103,16,32,112,8,120,136,120,2,87,103,32, + 80,112,8,120,136,120,2,87,103,72,176,112,8,120,136,120, + 2,87,103,80,0,112,8,120,136,120,2,87,103,48,0,112, + 8,120,136,120,2,85,101,240,40,120,160,120,0,87,103,112, + 136,128,136,112,32,96,2,87,103,64,32,112,136,248,128,120, + 2,87,103,16,32,112,136,248,128,120,2,87,103,32,80,112, + 136,248,128,120,2,87,103,80,0,112,136,248,128,120,2,87, + 103,64,32,248,32,32,32,248,2,87,103,16,32,248,32,32, + 32,248,2,87,103,32,80,248,32,32,32,248,2,87,103,80, + 0,248,32,32,32,248,2,87,103,8,56,8,120,136,136,120, + 2,87,103,72,176,176,200,136,136,136,2,87,103,64,32,112, + 136,136,136,112,2,87,103,16,32,112,136,136,136,112,2,87, + 103,32,80,112,136,136,136,112,2,87,103,72,176,112,136,136, + 136,112,2,87,103,80,0,112,136,136,136,112,3,85,101,32, + 0,248,0,32,2,85,101,112,152,168,200,112,2,87,103,64, + 32,136,136,136,136,112,2,87,103,16,32,136,136,136,136,112, + 2,87,103,32,80,136,136,136,136,112,2,87,103,80,0,136, + 136,136,136,112,0,89,105,16,32,136,136,136,136,120,8,112, + 2,87,103,128,128,240,136,240,128,128,0,89,105,80,0,136, + 136,136,136,120,8,112}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 5 h= 7 x= 1 y= 3 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 7 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[159] U8G_SECTION(".progmem.u8g_font_fixed_v0n") = { + 1,7,9,0,254,7,0,0,0,0,42,57,0,7,0,7, + 0,2,87,103,32,168,112,32,112,168,32,3,85,101,32,32, + 248,32,32,18,34,98,64,128,5,81,97,248,18,18,98,128, + 128,2,87,103,8,16,16,32,64,64,128,2,87,103,112,136, + 136,136,136,136,112,2,87,103,32,96,32,32,32,32,248,2, + 87,103,112,136,8,16,32,64,248,2,87,103,240,8,8,48, + 8,8,240,2,87,103,16,144,144,248,16,16,16,2,87,103, + 248,128,128,240,8,8,240,2,87,103,112,128,128,240,136,136, + 112,2,87,103,248,8,8,8,8,8,8,2,87,103,112,136, + 136,112,136,136,112,2,87,103,112,136,136,248,8,8,112}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 7 len= 9 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[878] U8G_SECTION(".progmem.u8g_font_fixed_v0r") = { + 1,7,9,0,254,7,1,46,2,94,32,127,254,7,254,7, + 254,2,0,64,34,23,103,128,128,128,128,0,128,128,23,50, + 98,160,160,3,85,101,80,248,80,248,80,2,87,103,112,168, + 160,112,40,168,112,2,87,103,136,144,16,32,64,72,136,2, + 87,103,104,136,104,144,144,144,104,23,18,98,128,128,2,87, + 103,56,64,128,128,128,64,56,2,87,103,224,16,8,8,8, + 16,224,2,87,103,32,168,112,32,112,168,32,3,85,101,32, + 32,248,32,32,18,34,98,64,128,5,81,97,248,18,18,98, + 128,128,2,87,103,8,16,16,32,64,64,128,2,87,103,112, + 136,136,136,136,136,112,2,87,103,32,96,32,32,32,32,248, + 2,87,103,112,136,8,16,32,64,248,2,87,103,240,8,8, + 48,8,8,240,2,87,103,16,144,144,248,16,16,16,2,87, + 103,248,128,128,240,8,8,240,2,87,103,112,128,128,240,136, + 136,112,2,87,103,248,8,8,8,8,8,8,2,87,103,112, + 136,136,112,136,136,112,2,87,103,112,136,136,248,8,8,112, + 18,21,101,128,128,0,128,128,18,37,101,64,64,0,64,128, + 2,87,103,24,32,64,128,64,32,24,4,83,99,248,0,248, + 2,87,103,192,32,16,8,16,32,192,2,87,103,248,8,8, + 48,0,32,32,2,87,103,112,136,136,168,184,128,112,2,87, + 103,112,136,136,248,136,136,136,2,87,103,240,136,136,240,136, + 136,240,2,87,103,112,136,128,128,128,136,112,2,87,103,240, + 136,136,136,136,136,240,2,87,103,248,128,128,224,128,128,248, + 2,87,103,248,128,128,224,128,128,128,2,87,103,112,136,128, + 184,136,136,112,2,87,103,136,136,136,248,136,136,136,2,87, + 103,248,32,32,32,32,32,248,2,87,103,248,8,8,8,8, + 136,112,2,87,103,136,136,144,224,144,136,136,2,87,103,128, + 128,128,128,128,128,248,2,87,103,136,136,216,168,136,136,136, + 2,87,103,136,136,200,168,152,136,136,2,87,103,112,136,136, + 136,136,136,112,2,87,103,240,136,136,240,128,128,128,2,87, + 103,112,136,136,136,136,168,112,2,87,103,240,136,136,240,160, + 144,136,2,87,103,112,136,128,112,8,136,112,2,87,103,248, + 32,32,32,32,32,32,2,87,103,136,136,136,136,136,136,112, + 2,87,103,136,136,136,136,136,80,32,2,87,103,136,136,136, + 168,168,168,80,2,87,103,136,136,80,32,80,136,136,2,87, + 103,136,136,80,32,32,32,32,2,87,103,248,8,16,32,64, + 128,248,18,55,103,224,128,128,128,128,128,224,2,87,103,128, + 64,64,32,16,16,8,18,55,103,224,32,32,32,32,32,224, + 23,50,98,64,160,2,113,97,254,39,34,98,64,128,2,85, + 101,112,8,120,136,120,2,87,103,128,128,240,136,136,136,240, + 2,85,101,112,136,128,136,112,2,87,103,8,8,120,136,136, + 136,120,2,85,101,112,136,248,128,120,2,87,103,56,64,240, + 64,64,64,64,0,87,103,112,136,136,136,120,8,112,2,87, + 103,128,128,240,136,136,136,136,2,87,103,48,0,248,32,32, + 32,248,0,89,105,48,0,248,8,8,8,8,8,112,2,87, + 103,128,128,136,144,224,144,136,2,87,103,224,32,32,32,32, + 32,248,2,85,101,208,168,168,168,168,2,85,101,176,200,136, + 136,136,2,85,101,112,136,136,136,112,0,87,103,240,136,136, + 136,240,128,128,0,87,103,120,136,136,136,120,8,8,2,85, + 101,184,192,128,128,128,2,85,101,120,128,112,8,240,2,87, + 103,32,32,248,32,32,32,32,2,85,101,136,136,136,136,112, + 2,85,101,136,136,136,80,32,2,85,101,136,168,168,168,80, + 2,85,101,136,80,32,80,136,0,87,103,136,136,136,136,120, + 8,112,2,85,101,248,16,32,64,248,2,87,103,24,32,64, + 192,64,32,24,34,23,103,128,128,128,128,128,128,128,2,87, + 103,192,32,16,24,16,32,192,4,82,98,72,176,255}; +/* + Fontname: -FreeType-FreeDooM-Bold-R-Normal--34-340-72-72-P-170-ISO8859-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=10 x= 4 y=10 dx= 8 dy= 0 ascent=12 len=10 + Font Bounding box w= 7 h=12 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =10 descent= 1 + X Font ascent =12 descent= 0 + Max Font ascent =12 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[1042] U8G_SECTION(".progmem.u8g_font_freedoomr10r") = { + 0,7,12,0,0,10,1,113,3,88,32,127,1,12,0,12, + 0,0,0,0,7,0,1,0,0,0,7,0,1,0,0,0, + 7,0,1,0,0,0,7,0,1,0,0,0,7,0,1,0, + 0,0,7,0,1,0,0,0,7,0,1,0,0,0,7,0, + 1,3,10,10,7,0,2,96,128,128,128,128,128,128,128,128, + 96,3,10,10,7,3,2,192,32,32,32,32,32,32,32,32, + 192,5,5,5,8,1,7,168,112,32,112,168,7,7,7,8, + 0,4,16,16,16,254,16,16,16,2,2,2,7,2,10,64, + 128,7,1,1,8,0,7,254,2,2,2,7,2,2,192,192, + 7,10,10,8,0,2,2,4,4,8,16,16,32,64,64,128, + 6,10,10,7,0,2,252,132,132,132,132,132,132,132,132,252, + 2,10,10,7,4,2,192,64,64,64,64,64,64,64,64,64, + 6,10,10,7,0,2,252,4,4,4,4,252,128,128,128,252, + 6,10,10,7,0,2,252,4,4,4,60,4,4,4,4,252, + 6,10,10,7,0,2,132,132,132,132,132,252,4,4,4,4, + 6,10,10,7,0,2,252,128,128,128,252,4,4,4,4,252, + 6,10,10,7,0,2,252,128,128,128,252,132,132,132,132,252, + 6,10,10,7,0,2,252,4,4,4,4,4,4,4,4,4, + 6,10,10,7,0,2,252,132,132,132,252,132,132,132,132,252, + 6,10,10,7,0,2,252,132,132,132,252,4,4,4,4,252, + 2,7,7,7,2,2,192,192,0,0,0,192,192,0,0,0, + 7,0,1,0,0,0,7,0,1,0,0,0,7,0,1,0, + 0,0,7,0,1,0,0,0,7,0,1,0,0,0,7,0, + 1,7,10,10,8,0,2,254,130,130,130,130,254,130,130,130, + 130,7,10,10,8,0,2,254,130,130,130,252,130,130,130,130, + 254,7,10,10,8,0,2,254,128,128,128,128,128,128,128,128, + 254,7,10,10,8,0,2,252,130,130,130,130,130,130,130,130, + 252,7,10,10,8,0,2,254,128,128,128,248,128,128,128,128, + 254,7,10,10,8,0,2,254,128,128,128,248,128,128,128,128, + 128,7,10,10,8,0,2,254,128,128,128,158,130,130,130,130, + 254,7,10,10,8,0,2,130,130,130,130,254,130,130,130,130, + 130,1,10,10,8,3,2,128,128,128,128,128,128,128,128,128, + 128,7,10,10,8,0,2,30,2,2,2,2,2,130,130,130, + 124,7,10,10,8,0,2,130,132,136,144,224,160,144,136,132, + 130,7,10,10,8,0,2,128,128,128,128,128,128,128,128,128, + 254,7,10,10,8,0,2,130,198,170,146,130,130,130,130,130, + 130,7,10,10,8,0,2,194,194,162,162,146,146,138,138,134, + 134,7,10,10,8,0,2,124,130,130,130,130,130,130,130,130, + 124,7,10,10,8,0,2,254,130,130,130,254,128,128,128,128, + 128,7,10,10,8,0,2,120,132,132,132,132,132,132,132,132, + 126,7,10,10,8,0,2,254,130,130,130,254,160,144,136,132, + 130,7,10,10,8,0,2,254,128,128,128,128,254,2,2,2, + 254,7,9,9,8,0,3,254,16,16,16,16,16,16,16,16, + 7,10,10,8,0,2,130,130,130,130,130,130,130,130,130,254, + 7,10,10,8,0,2,130,130,130,68,68,108,40,40,16,16, + 7,10,10,8,0,2,130,130,130,130,130,146,146,170,170,198, + 7,10,10,8,0,2,130,68,68,40,16,16,40,68,68,130, + 7,10,10,8,0,2,130,130,130,130,254,16,16,16,16,16, + 7,10,10,8,0,2,254,2,6,12,24,48,96,192,128,254, + 4,10,10,7,0,2,240,128,128,128,128,128,128,128,128,240, + 6,10,10,7,0,2,128,64,64,32,32,16,16,8,8,4, + 4,10,10,7,2,2,240,16,16,16,16,16,16,16,16,240, + 5,3,3,7,1,9,32,80,136,6,1,1,7,0,2,252, + 2,2,2,7,2,10,128,64,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1}; +/* + Fontname: -FreeType-FreeDooM-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=24 x= 7 y=13 dx=19 dy= 0 ascent=26 len=72 + Font Bounding box w=18 h=26 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =26 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[943] U8G_SECTION(".progmem.u8g_font_freedoomr25n") = { + 0,18,26,0,0,24,3,112,3,144,32,127,0,26,0,24, + 0,0,0,0,11,0,0,255,255,255,255,255,255,255,255,255, + 255,17,16,48,19,1,6,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,255,255,128,255, + 255,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,7,8,8,11,3,2,62,62,62, + 62,62,240,240,240,9,2,4,11,1,13,255,128,255,128,5, + 5,5,11,5,2,248,248,248,248,248,255,17,24,72,19,1, + 2,255,255,128,255,255,128,192,3,128,192,3,128,192,3,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,192,3,128,192,3,128, + 255,255,128,255,255,128,255,255,128,6,24,24,19,7,2,252, + 252,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,17,24,72,19,1,2,255,255,128, + 255,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,128,0,3,128,0,3,128,0,3,128,0,3,128,255,255, + 128,255,255,128,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,255,255,128,255, + 255,128,255,255,128,17,24,72,19,1,2,255,255,128,255,255, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,0,3,128,0,3,128,31,255,128,31, + 255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3, + 128,0,3,128,0,3,128,0,3,128,255,255,128,255,255,128, + 255,255,128,17,24,72,19,1,2,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,255,255,128,255,255,128, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3, + 128,17,24,72,19,1,2,255,255,128,255,255,128,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,255,255,128,255,255,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,255,255,128,255,255,128,255,255,128,17, + 24,72,19,1,2,255,255,128,255,255,128,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,255,255,128,255,255,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,255,255,128,255,255,128,255,255,128,16,24,48, + 19,2,2,255,255,255,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,17,24,72,19,1,2,255,255,128,255,255,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,255,255,128,255,255,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,255,255,128,255,255,128,255,255, + 128,17,24,72,19,1,2,255,255,128,255,255,128,192,3,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,255,255,128,255,255,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,255,255,128,255,255,128,255,255,128,5, + 16,16,11,5,2,248,248,248,248,248,0,0,0,0,0,0, + 248,248,248,248,248,7,16,16,11,3,2,62,62,62,62,62, + 0,0,0,62,62,62,62,62,240,240,240,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=17 x= 4 y=10 dx=17 dy= 0 ascent=17 len=34 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =17 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11[3948] U8G_SECTION(".progmem.u8g_font_fub11") = { + 0,24,21,255,252,11,2,82,5,55,32,255,253,17,252,11, + 253,0,0,0,5,0,0,2,11,11,6,2,0,192,192,192, + 192,192,192,192,192,0,0,192,6,5,5,8,1,6,204,204, + 204,204,204,10,11,22,11,1,0,9,128,25,128,25,0,127, + 192,51,0,50,0,54,0,255,0,100,0,108,0,76,0,8, + 14,14,10,1,254,8,62,126,203,200,248,126,15,11,203,235, + 126,8,8,15,11,22,17,1,0,60,32,238,96,198,64,198, + 192,231,128,125,124,3,238,2,198,6,198,4,238,8,124,11, + 11,22,13,1,0,62,0,119,0,99,0,119,0,60,0,124, + 192,238,192,199,192,195,192,243,192,63,224,2,5,5,7,2, + 6,192,192,192,192,192,3,14,14,6,1,253,96,96,96,224, + 192,192,192,192,192,192,224,96,96,96,3,14,14,7,2,253, + 192,192,192,96,96,96,96,96,96,96,96,224,192,192,6,5, + 5,10,2,5,120,48,252,48,120,9,9,18,16,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,3,4,4,5,1,254,96,96,192,192,4,2,2,6,1, + 3,240,240,2,2,2,5,2,0,192,192,5,12,12,7,1, + 255,24,24,16,48,48,32,32,96,96,64,192,192,8,11,11, + 9,1,0,60,102,195,195,195,195,195,195,195,102,60,4,11, + 11,9,2,0,48,240,240,48,48,48,48,48,48,48,48,8, + 11,11,9,1,0,62,119,99,3,7,6,30,60,112,224,255, + 8,11,11,9,1,0,124,238,198,6,60,6,3,195,199,126, + 60,8,11,11,9,1,0,14,30,30,54,102,102,198,255,255, + 6,6,8,11,11,9,1,0,254,192,192,192,254,231,3,3, + 199,254,124,8,11,11,9,1,0,60,118,67,192,222,231,195, + 195,195,102,60,8,11,11,9,1,0,255,3,7,6,14,12, + 28,24,56,56,112,8,11,11,9,1,0,126,231,195,231,60, + 102,195,195,195,231,60,8,11,11,9,1,0,60,102,195,195, + 231,127,3,3,198,110,60,2,8,8,5,2,0,192,192,0, + 0,0,0,192,192,3,10,10,5,1,254,96,96,0,0,0, + 0,96,96,192,192,10,8,16,16,3,1,0,64,3,128,12, + 0,112,0,128,0,112,0,14,0,1,192,10,4,8,16,3, + 3,255,192,0,0,0,0,255,192,10,8,16,16,3,1,128, + 0,96,0,28,0,3,128,0,192,7,0,24,0,224,0,7, + 11,11,9,1,0,120,238,134,6,12,24,48,48,48,0,48, + 15,14,28,17,1,253,7,224,30,120,48,28,103,236,238,230, + 204,102,204,102,204,102,204,102,239,252,103,184,48,0,28,32, + 7,224,11,11,22,11,0,0,14,0,14,0,15,0,27,0, + 27,128,57,128,49,128,63,192,127,192,96,224,224,96,9,11, + 22,11,1,0,254,0,199,0,195,0,195,0,199,0,252,0, + 195,0,193,128,193,128,195,128,254,0,10,11,22,12,1,0, + 31,0,115,128,97,192,192,0,192,0,192,0,192,0,193,192, + 97,192,115,128,31,0,9,11,22,11,1,0,252,0,207,0, + 195,0,193,128,193,128,193,128,193,128,193,128,195,0,207,0, + 252,0,8,11,11,10,1,0,255,192,192,192,192,255,192,192, + 192,192,255,8,11,11,9,1,0,255,192,192,192,192,254,192, + 192,192,192,192,10,11,22,12,1,0,31,0,59,192,96,192, + 224,0,192,0,195,192,192,192,192,192,96,192,57,192,31,192, + 9,11,22,11,1,0,193,128,193,128,193,128,193,128,193,128, + 255,128,193,128,193,128,193,128,193,128,193,128,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,8,11,11, + 10,1,0,3,3,3,3,3,3,3,195,195,254,124,9,11, + 22,11,1,0,195,0,199,0,206,0,220,0,248,0,248,0, + 220,0,206,0,206,0,199,0,195,128,8,11,11,9,1,0, + 192,192,192,192,192,192,192,192,192,255,255,13,11,22,15,1, + 0,240,120,240,120,248,248,216,216,216,216,221,216,205,152,205, + 152,207,152,199,24,199,24,10,11,22,12,1,0,240,192,240, + 192,248,192,216,192,220,192,204,192,206,192,198,192,199,192,195, + 192,195,192,11,11,22,13,1,0,31,0,123,192,96,192,192, + 96,192,96,192,96,192,96,192,96,96,192,123,192,31,0,8, + 11,11,10,1,0,252,199,195,195,199,254,192,192,192,192,192, + 12,11,22,14,1,0,31,0,123,128,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,240,9,11,22,11, + 1,0,254,0,199,128,193,128,193,128,195,0,254,0,195,0, + 193,128,193,128,193,128,193,128,9,11,22,11,1,0,62,0, + 119,0,193,128,224,0,248,0,127,0,15,128,1,128,193,128, + 119,0,62,0,9,11,22,11,1,0,255,128,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 10,11,22,12,1,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,225,192,115,128,62,0,11,11,22,12, + 0,0,224,96,96,96,112,224,48,192,49,192,57,128,25,128, + 31,128,31,0,15,0,14,0,16,11,22,16,0,0,225,135, + 99,198,99,198,99,198,119,206,54,108,54,108,54,108,60,60, + 28,56,28,56,11,11,22,11,0,0,112,192,49,192,59,128, + 31,0,14,0,14,0,31,0,27,0,51,128,113,192,224,224, + 10,11,22,10,0,0,225,192,113,128,51,128,59,0,31,0, + 30,0,12,0,12,0,12,0,12,0,12,0,8,11,11,10, + 1,0,255,7,6,14,28,24,56,112,96,192,255,4,14,14, + 6,1,253,240,192,192,192,192,192,192,192,192,192,192,192,192, + 240,5,12,12,7,1,255,128,192,192,64,96,96,32,48,48, + 16,16,24,4,14,14,7,1,253,240,48,48,48,48,48,48, + 48,48,48,48,48,48,240,8,10,10,16,4,0,16,24,24, + 36,36,36,66,66,129,129,8,1,1,8,0,254,255,3,3, + 3,4,0,9,192,64,32,7,8,8,9,1,0,60,110,6, + 126,230,198,238,118,8,11,11,10,1,0,192,192,192,220,246, + 199,195,195,195,230,220,7,8,8,9,1,0,60,110,198,192, + 192,198,238,60,8,11,11,10,1,0,3,3,3,59,111,227, + 195,195,195,103,59,7,8,8,9,1,0,60,110,198,254,192, + 198,110,60,5,11,11,7,1,0,56,48,48,248,48,48,48, + 48,48,48,48,8,11,11,10,1,253,59,111,227,195,195,195, + 103,59,3,103,60,7,11,11,9,1,0,192,192,192,220,238, + 198,198,198,198,198,198,2,11,11,4,1,0,192,192,0,192, + 192,192,192,192,192,192,192,3,14,14,5,1,253,96,96,0, + 96,96,96,96,96,96,96,96,96,224,224,7,11,11,9,1, + 0,192,192,192,206,220,216,240,216,220,204,198,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,12,8,16, + 14,1,0,220,224,239,112,198,48,198,48,198,48,198,48,198, + 48,198,48,7,8,8,9,1,0,220,238,198,198,198,198,198, + 198,8,8,8,10,1,0,60,102,195,195,195,195,102,60,8, + 11,11,10,1,253,220,230,195,195,195,199,246,220,192,192,192, + 8,11,11,10,1,253,59,103,195,195,195,195,111,59,3,3, + 3,5,8,8,7,1,0,216,240,192,192,192,192,192,192,7, + 8,8,9,1,0,124,238,192,248,30,198,238,124,6,10,10, + 8,1,0,48,48,252,48,48,48,48,48,56,28,7,8,8, + 9,1,0,198,198,198,198,198,198,238,118,8,8,8,9,0, + 0,227,99,103,118,54,60,28,28,13,8,16,14,0,0,231, + 24,103,152,103,152,111,176,61,240,60,240,60,240,56,224,8, + 8,8,9,0,0,99,118,62,28,60,62,103,227,8,11,11, + 9,0,253,227,99,119,54,54,62,28,28,24,24,56,6,8, + 8,8,1,0,252,12,24,56,112,96,192,252,6,15,15,8, + 1,252,28,56,48,48,48,48,112,192,96,48,48,48,48,48, + 28,1,16,16,5,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,15,15,8,1,252,224,112,48, + 48,48,48,24,12,24,48,48,48,48,48,240,8,2,2,9, + 0,3,121,223,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,5,0,0,2,11,11,6,2, + 253,192,0,0,192,192,192,192,192,192,192,192,7,12,12,9, + 1,254,4,4,60,110,206,208,208,214,110,60,32,64,8,11, + 11,10,1,0,62,119,96,96,252,96,96,96,96,96,255,9, + 8,16,10,1,2,128,128,93,0,34,0,65,0,65,0,34, + 0,93,0,128,128,9,11,22,11,1,0,195,128,99,0,103, + 0,247,128,62,0,60,0,255,128,24,0,24,0,24,0,24, + 0,1,14,14,5,2,253,128,128,128,128,128,128,0,0,128, + 128,128,128,128,128,6,14,14,8,1,253,120,236,192,224,120, + 124,204,204,248,120,28,12,156,248,5,1,1,5,0,10,216, + 12,11,22,14,1,0,31,128,57,192,111,96,217,176,152,16, + 152,16,153,144,143,16,64,32,48,192,31,128,5,8,8,7, + 1,3,112,216,120,216,216,120,0,248,8,6,6,10,1,1, + 103,102,238,206,102,103,9,4,8,10,0,3,255,128,0,128, + 0,128,0,128,255,12,11,22,14,1,0,31,128,57,192,111, + 96,201,176,136,144,143,16,137,144,136,144,72,160,48,192,31, + 128,5,1,1,5,0,10,248,4,4,4,6,1,7,96,208, + 144,240,9,10,20,16,3,0,8,0,8,0,8,0,255,128, + 8,0,8,0,8,0,0,0,0,0,255,128,5,6,6,7, + 1,5,112,216,24,48,192,248,5,7,7,7,1,4,112,216, + 24,112,24,216,112,3,3,3,4,1,9,96,192,128,255,7, + 14,14,9,1,253,126,244,244,244,244,116,20,20,20,20,20, + 20,20,20,2,2,2,4,1,4,192,192,4,4,4,3,0, + 252,64,48,176,224,3,6,6,5,1,5,96,224,96,96,96, + 96,6,8,8,8,1,3,120,252,204,204,204,120,0,252,8, + 6,6,10,1,1,204,102,103,103,102,204,12,11,22,13,1, + 0,224,128,97,128,99,0,99,0,102,0,108,224,12,224,25, + 224,25,96,51,240,96,96,11,11,22,13,1,0,97,0,227, + 0,98,0,102,0,100,0,109,224,27,96,24,96,49,192,35, + 0,99,224,12,11,22,13,1,0,120,192,216,128,113,128,217, + 0,115,0,6,96,4,224,13,224,25,96,25,240,48,96,7, + 11,11,9,1,253,24,0,24,24,56,112,224,192,194,254,60, + 11,16,32,11,0,0,24,0,12,0,4,0,0,0,0,0, + 14,0,14,0,15,0,27,0,27,128,57,128,49,128,63,192, + 127,192,96,224,224,96,11,16,32,11,0,0,3,0,2,0, + 4,0,0,0,0,0,14,0,14,0,15,0,27,0,27,128, + 57,128,49,128,63,192,127,192,96,224,224,96,11,16,32,11, + 0,0,6,0,14,0,25,0,0,0,0,0,14,0,14,0, + 15,0,27,0,27,128,57,128,49,128,63,192,127,192,96,224, + 224,96,11,15,30,11,0,0,13,0,23,0,0,0,0,0, + 14,0,14,0,15,0,27,0,27,128,57,128,49,128,63,192, + 127,192,96,224,224,96,11,15,30,11,0,0,27,0,0,0, + 0,0,0,0,14,0,14,0,15,0,27,0,27,0,59,128, + 49,128,63,192,127,192,96,224,224,96,10,17,34,12,1,0, + 12,0,18,0,18,0,30,0,0,0,0,0,12,0,30,0, + 30,0,63,0,51,0,51,0,99,128,127,128,255,192,192,192, + 192,192,15,11,22,16,0,0,3,254,7,128,7,128,13,128, + 29,128,25,254,57,128,63,128,97,128,97,128,193,254,10,15, + 30,12,1,252,31,0,119,128,97,192,192,0,192,0,192,0, + 192,0,193,192,97,192,115,128,62,0,8,0,14,0,2,0, + 28,0,8,16,16,10,1,0,96,48,24,0,0,255,192,192, + 192,192,255,192,192,192,192,255,8,16,16,10,1,0,12,8, + 16,0,0,255,192,192,192,192,255,192,192,192,192,255,8,16, + 16,10,1,0,24,60,36,0,0,255,192,192,192,192,255,192, + 192,192,192,255,8,15,15,10,1,0,102,0,0,0,255,192, + 192,192,192,255,192,192,192,192,255,4,16,16,4,255,0,192, + 96,48,0,0,48,48,48,48,48,48,48,48,48,48,48,4, + 16,16,4,1,0,112,96,192,0,0,192,192,192,192,192,192, + 192,192,192,192,192,4,16,16,4,0,0,96,240,144,0,0, + 96,96,96,96,96,96,96,96,96,96,96,5,15,15,5,0, + 0,216,0,0,0,48,48,48,48,48,48,48,48,48,48,48, + 11,11,22,12,0,0,127,0,99,128,96,192,96,224,96,96, + 252,96,96,96,96,224,96,192,99,128,127,0,10,15,30,12, + 1,0,25,0,22,0,0,0,0,0,240,192,240,192,248,192, + 216,192,220,192,204,192,206,192,198,192,199,192,195,192,195,192, + 11,16,32,13,1,0,24,0,8,0,12,0,0,0,0,0, + 31,0,123,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,123,192,31,0,11,16,32,13,1,0,3,0,2,0, + 4,0,0,0,0,0,31,0,123,192,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,0,11,16,32,13, + 1,0,14,0,27,0,17,0,0,0,0,0,31,0,123,192, + 96,192,192,96,192,96,192,96,192,96,192,96,96,192,123,192, + 31,0,11,15,30,13,1,0,31,0,0,0,0,0,0,0, + 31,0,123,192,96,192,192,96,192,96,192,96,192,96,224,224, + 96,192,127,192,31,0,11,15,30,13,1,0,27,0,0,0, + 0,0,0,0,31,0,123,192,96,192,192,96,192,96,192,96, + 192,96,192,96,96,192,123,192,31,0,8,8,8,16,4,0, + 129,195,102,24,24,36,66,129,11,11,22,13,1,0,31,160, + 59,192,96,192,193,96,194,96,196,96,200,96,208,96,224,192, + 123,128,191,0,10,16,32,12,1,0,48,0,24,0,8,0, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,62,0,10,16,32,12,1,0, + 3,0,6,0,4,0,0,0,0,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,225,192,127,128,62,0, + 10,16,32,12,1,0,28,0,30,0,51,0,0,0,0,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,62,0,10,15,30,12,1,0,51,0,0,0, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,115,128,62,0,10,16,32,10,0,0, + 6,0,6,0,4,0,0,0,0,0,225,192,113,128,51,128, + 59,0,31,0,30,0,12,0,12,0,12,0,12,0,12,0, + 8,11,11,10,1,0,192,192,254,199,195,195,199,254,192,192, + 192,8,11,11,10,1,0,124,238,198,206,220,216,206,199,195, + 219,222,7,12,12,9,1,0,96,48,16,0,60,110,6,126, + 230,198,238,118,7,12,12,9,1,0,12,24,16,0,60,110, + 6,126,230,198,238,118,7,12,12,9,1,0,56,44,68,0, + 60,110,6,126,230,198,238,118,7,11,11,9,1,0,60,0, + 0,60,110,6,126,230,198,238,118,7,11,11,9,1,0,108, + 0,0,60,230,6,126,230,198,238,118,7,13,13,9,1,0, + 24,36,36,60,0,60,102,6,126,230,198,238,126,13,8,16, + 15,1,0,60,224,103,176,7,24,127,248,231,0,199,24,237, + 184,120,240,7,12,12,9,1,252,60,110,198,192,192,198,110, + 60,16,28,4,56,7,13,13,9,1,0,96,32,48,16,0, + 60,110,198,254,192,198,110,60,7,13,13,9,1,0,12,12, + 24,16,0,60,110,198,254,192,198,110,60,7,13,13,9,1, + 0,24,56,44,68,0,60,110,198,254,192,198,110,60,7,12, + 12,9,1,0,108,0,0,0,60,110,198,254,192,206,110,60, + 3,12,12,4,0,0,192,96,32,0,96,96,96,96,96,96, + 96,96,3,12,12,4,1,0,96,192,128,0,192,192,192,192, + 192,192,192,192,5,12,12,4,0,0,96,208,136,0,96,96, + 96,96,96,96,96,96,5,11,11,5,0,0,216,0,0,48, + 48,48,48,48,48,48,48,8,11,11,10,1,0,51,28,102, + 62,103,195,195,195,195,103,60,7,11,11,9,1,0,60,0, + 0,220,238,198,198,198,198,198,198,8,13,13,10,1,0,96, + 48,16,8,0,60,102,195,195,195,195,102,60,8,13,13,10, + 1,0,6,12,8,16,0,60,102,195,195,195,195,102,60,8, + 13,13,10,1,0,24,28,36,34,0,60,102,195,195,195,195, + 102,60,8,11,11,10,1,0,60,0,0,60,102,195,195,195, + 195,102,60,8,12,12,10,1,0,102,0,0,0,60,102,195, + 195,195,195,102,60,10,6,12,16,3,2,12,0,0,0,255, + 192,0,0,0,0,12,0,8,10,10,10,1,255,1,62,102, + 207,203,211,227,118,252,128,7,12,12,9,1,0,96,48,16, + 0,198,198,198,198,198,198,238,118,7,12,12,9,1,0,12, + 24,16,0,198,198,198,198,198,198,238,118,7,12,12,9,1, + 0,56,40,68,0,198,198,198,198,198,198,238,118,7,11,11, + 9,1,0,108,0,0,198,198,198,198,198,198,238,118,9,16, + 32,9,0,253,7,0,6,0,12,0,8,0,0,0,99,128, + 99,0,115,0,54,0,54,0,30,0,28,0,28,0,28,0, + 248,0,112,0,8,14,14,10,1,253,192,192,192,220,230,195, + 195,195,199,230,220,192,192,192,8,14,14,9,1,253,108,0, + 0,199,198,238,108,108,60,56,56,56,48,48}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 9 h=12 x= 3 y= 5 dx=16 dy= 0 ascent=11 len=18 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11n[266] U8G_SECTION(".progmem.u8g_font_fub11n") = { + 0,24,21,255,252,11,0,0,0,0,42,57,0,11,254,11, + 0,6,5,5,10,2,5,120,48,252,48,120,9,9,18,16, + 3,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,3,4,4,5,1,254,96,96,192,192,4,2, + 2,6,1,3,240,240,2,2,2,5,2,0,192,192,5,12, + 12,7,1,255,24,24,16,48,48,32,32,96,96,64,192,192, + 8,11,11,9,1,0,60,102,195,195,195,195,195,195,195,102, + 60,4,11,11,9,2,0,48,240,240,48,48,48,48,48,48, + 48,48,8,11,11,9,1,0,62,119,99,3,7,6,30,60, + 112,224,255,8,11,11,9,1,0,124,238,198,6,60,6,3, + 195,199,126,60,8,11,11,9,1,0,14,30,30,54,102,102, + 198,255,255,6,6,8,11,11,9,1,0,254,192,192,192,254, + 231,3,3,199,254,124,8,11,11,9,1,0,60,118,67,192, + 222,231,195,195,195,102,60,8,11,11,9,1,0,255,3,7, + 6,14,12,28,24,56,56,112,8,11,11,9,1,0,126,231, + 195,231,60,102,195,195,195,231,60,8,11,11,9,1,0,60, + 102,195,195,231,127,3,3,198,110,60}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 4 y= 9 dx=17 dy= 0 ascent=12 len=28 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11r[1829] U8G_SECTION(".progmem.u8g_font_fub11r") = { + 0,24,21,255,252,11,2,82,5,55,32,127,253,12,252,11, + 253,0,0,0,5,0,0,2,11,11,6,2,0,192,192,192, + 192,192,192,192,192,0,0,192,6,5,5,8,1,6,204,204, + 204,204,204,10,11,22,11,1,0,9,128,25,128,25,0,127, + 192,51,0,50,0,54,0,255,0,100,0,108,0,76,0,8, + 14,14,10,1,254,8,62,126,203,200,248,126,15,11,203,235, + 126,8,8,15,11,22,17,1,0,60,32,238,96,198,64,198, + 192,231,128,125,124,3,238,2,198,6,198,4,238,8,124,11, + 11,22,13,1,0,62,0,119,0,99,0,119,0,60,0,124, + 192,238,192,199,192,195,192,243,192,63,224,2,5,5,7,2, + 6,192,192,192,192,192,3,14,14,6,1,253,96,96,96,224, + 192,192,192,192,192,192,224,96,96,96,3,14,14,7,2,253, + 192,192,192,96,96,96,96,96,96,96,96,224,192,192,6,5, + 5,10,2,5,120,48,252,48,120,9,9,18,16,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,3,4,4,5,1,254,96,96,192,192,4,2,2,6,1, + 3,240,240,2,2,2,5,2,0,192,192,5,12,12,7,1, + 255,24,24,16,48,48,32,32,96,96,64,192,192,8,11,11, + 9,1,0,60,102,195,195,195,195,195,195,195,102,60,4,11, + 11,9,2,0,48,240,240,48,48,48,48,48,48,48,48,8, + 11,11,9,1,0,62,119,99,3,7,6,30,60,112,224,255, + 8,11,11,9,1,0,124,238,198,6,60,6,3,195,199,126, + 60,8,11,11,9,1,0,14,30,30,54,102,102,198,255,255, + 6,6,8,11,11,9,1,0,254,192,192,192,254,231,3,3, + 199,254,124,8,11,11,9,1,0,60,118,67,192,222,231,195, + 195,195,102,60,8,11,11,9,1,0,255,3,7,6,14,12, + 28,24,56,56,112,8,11,11,9,1,0,126,231,195,231,60, + 102,195,195,195,231,60,8,11,11,9,1,0,60,102,195,195, + 231,127,3,3,198,110,60,2,8,8,5,2,0,192,192,0, + 0,0,0,192,192,3,10,10,5,1,254,96,96,0,0,0, + 0,96,96,192,192,10,8,16,16,3,1,0,64,3,128,12, + 0,112,0,128,0,112,0,14,0,1,192,10,4,8,16,3, + 3,255,192,0,0,0,0,255,192,10,8,16,16,3,1,128, + 0,96,0,28,0,3,128,0,192,7,0,24,0,224,0,7, + 11,11,9,1,0,120,238,134,6,12,24,48,48,48,0,48, + 15,14,28,17,1,253,7,224,30,120,48,28,103,236,238,230, + 204,102,204,102,204,102,204,102,239,252,103,184,48,0,28,32, + 7,224,11,11,22,11,0,0,14,0,14,0,15,0,27,0, + 27,128,57,128,49,128,63,192,127,192,96,224,224,96,9,11, + 22,11,1,0,254,0,199,0,195,0,195,0,199,0,252,0, + 195,0,193,128,193,128,195,128,254,0,10,11,22,12,1,0, + 31,0,115,128,97,192,192,0,192,0,192,0,192,0,193,192, + 97,192,115,128,31,0,9,11,22,11,1,0,252,0,207,0, + 195,0,193,128,193,128,193,128,193,128,193,128,195,0,207,0, + 252,0,8,11,11,10,1,0,255,192,192,192,192,255,192,192, + 192,192,255,8,11,11,9,1,0,255,192,192,192,192,254,192, + 192,192,192,192,10,11,22,12,1,0,31,0,59,192,96,192, + 224,0,192,0,195,192,192,192,192,192,96,192,57,192,31,192, + 9,11,22,11,1,0,193,128,193,128,193,128,193,128,193,128, + 255,128,193,128,193,128,193,128,193,128,193,128,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,8,11,11, + 10,1,0,3,3,3,3,3,3,3,195,195,254,124,9,11, + 22,11,1,0,195,0,199,0,206,0,220,0,248,0,248,0, + 220,0,206,0,206,0,199,0,195,128,8,11,11,9,1,0, + 192,192,192,192,192,192,192,192,192,255,255,13,11,22,15,1, + 0,240,120,240,120,248,248,216,216,216,216,221,216,205,152,205, + 152,207,152,199,24,199,24,10,11,22,12,1,0,240,192,240, + 192,248,192,216,192,220,192,204,192,206,192,198,192,199,192,195, + 192,195,192,11,11,22,13,1,0,31,0,123,192,96,192,192, + 96,192,96,192,96,192,96,192,96,96,192,123,192,31,0,8, + 11,11,10,1,0,252,199,195,195,199,254,192,192,192,192,192, + 12,11,22,14,1,0,31,0,123,128,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,240,9,11,22,11, + 1,0,254,0,199,128,193,128,193,128,195,0,254,0,195,0, + 193,128,193,128,193,128,193,128,9,11,22,11,1,0,62,0, + 119,0,193,128,224,0,248,0,127,0,15,128,1,128,193,128, + 119,0,62,0,9,11,22,11,1,0,255,128,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 10,11,22,12,1,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,225,192,115,128,62,0,11,11,22,12, + 0,0,224,96,96,96,112,224,48,192,49,192,57,128,25,128, + 31,128,31,0,15,0,14,0,16,11,22,16,0,0,225,135, + 99,198,99,198,99,198,119,206,54,108,54,108,54,108,60,60, + 28,56,28,56,11,11,22,11,0,0,112,192,49,192,59,128, + 31,0,14,0,14,0,31,0,27,0,51,128,113,192,224,224, + 10,11,22,10,0,0,225,192,113,128,51,128,59,0,31,0, + 30,0,12,0,12,0,12,0,12,0,12,0,8,11,11,10, + 1,0,255,7,6,14,28,24,56,112,96,192,255,4,14,14, + 6,1,253,240,192,192,192,192,192,192,192,192,192,192,192,192, + 240,5,12,12,7,1,255,128,192,192,64,96,96,32,48,48, + 16,16,24,4,14,14,7,1,253,240,48,48,48,48,48,48, + 48,48,48,48,48,48,240,8,10,10,16,4,0,16,24,24, + 36,36,36,66,66,129,129,8,1,1,8,0,254,255,3,3, + 3,4,0,9,192,64,32,7,8,8,9,1,0,60,110,6, + 126,230,198,238,118,8,11,11,10,1,0,192,192,192,220,246, + 199,195,195,195,230,220,7,8,8,9,1,0,60,110,198,192, + 192,198,238,60,8,11,11,10,1,0,3,3,3,59,111,227, + 195,195,195,103,59,7,8,8,9,1,0,60,110,198,254,192, + 198,110,60,5,11,11,7,1,0,56,48,48,248,48,48,48, + 48,48,48,48,8,11,11,10,1,253,59,111,227,195,195,195, + 103,59,3,103,60,7,11,11,9,1,0,192,192,192,220,238, + 198,198,198,198,198,198,2,11,11,4,1,0,192,192,0,192, + 192,192,192,192,192,192,192,3,14,14,5,1,253,96,96,0, + 96,96,96,96,96,96,96,96,96,224,224,7,11,11,9,1, + 0,192,192,192,206,220,216,240,216,220,204,198,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,12,8,16, + 14,1,0,220,224,239,112,198,48,198,48,198,48,198,48,198, + 48,198,48,7,8,8,9,1,0,220,238,198,198,198,198,198, + 198,8,8,8,10,1,0,60,102,195,195,195,195,102,60,8, + 11,11,10,1,253,220,230,195,195,195,199,246,220,192,192,192, + 8,11,11,10,1,253,59,103,195,195,195,195,111,59,3,3, + 3,5,8,8,7,1,0,216,240,192,192,192,192,192,192,7, + 8,8,9,1,0,124,238,192,248,30,198,238,124,6,10,10, + 8,1,0,48,48,252,48,48,48,48,48,56,28,7,8,8, + 9,1,0,198,198,198,198,198,198,238,118,8,8,8,9,0, + 0,227,99,103,118,54,60,28,28,13,8,16,14,0,0,231, + 24,103,152,103,152,111,176,61,240,60,240,60,240,56,224,8, + 8,8,9,0,0,99,118,62,28,60,62,103,227,8,11,11, + 9,0,253,227,99,119,54,54,62,28,28,24,24,56,6,8, + 8,8,1,0,252,12,24,56,112,96,192,252,6,15,15,8, + 1,252,28,56,48,48,48,48,112,192,96,48,48,48,48,48, + 28,1,16,16,5,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,15,15,8,1,252,224,112,48, + 48,48,48,24,12,24,48,48,48,48,48,240,8,2,2,9, + 0,3,121,223,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=21 x= 5 y=12 dx=21 dy= 0 ascent=21 len=54 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14[5788] U8G_SECTION(".progmem.u8g_font_fub14") = { + 0,31,26,254,251,14,3,116,7,95,32,255,252,21,251,14, + 252,0,0,0,6,0,0,3,14,14,8,3,0,224,224,224, + 224,224,224,224,224,224,224,0,0,224,224,8,6,6,10,1, + 8,231,103,103,103,103,103,12,14,28,14,1,0,6,96,6, + 96,12,96,63,240,63,240,24,192,25,128,25,128,255,224,255, + 224,51,0,51,0,99,0,102,0,10,17,34,12,1,254,4, + 0,31,0,127,128,119,128,229,192,228,0,252,0,126,0,31, + 128,7,192,5,192,229,192,229,192,127,128,63,0,4,0,4, + 0,18,14,42,20,1,0,60,4,0,126,12,0,195,24,0, + 195,16,0,195,48,0,231,96,0,126,103,0,24,205,128,0, + 152,192,1,152,192,3,24,192,3,24,192,6,15,128,12,7, + 0,14,14,28,16,1,0,31,0,127,128,113,192,113,192,115, + 128,63,0,30,0,126,56,247,48,227,176,225,240,224,224,127, + 240,31,188,3,6,6,8,3,8,224,192,192,192,192,192,4, + 17,17,8,2,253,48,112,112,96,224,224,224,224,224,224,224, + 224,224,96,112,112,48,4,17,17,8,2,253,192,192,224,224, + 96,96,112,112,112,112,112,96,96,224,224,192,192,8,7,7, + 12,2,7,102,60,24,255,24,60,102,12,12,24,20,4,0, + 2,0,2,0,2,0,2,0,2,0,255,240,255,240,2,0, + 2,0,2,0,2,0,2,0,4,5,5,6,1,254,112,112, + 96,224,192,5,3,3,7,1,4,248,248,248,3,3,3,6, + 2,0,224,224,224,6,15,15,9,1,255,12,12,12,12,24, + 24,24,48,48,48,96,96,96,96,192,10,14,28,11,1,0, + 30,0,127,0,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,6,14,14,11, + 2,0,28,124,252,220,28,28,28,28,28,28,28,28,28,28, + 10,14,28,11,1,0,31,0,127,128,97,192,225,192,1,192, + 1,192,3,128,7,128,15,0,30,0,56,0,112,0,255,192, + 255,192,10,14,28,11,1,0,62,0,127,0,227,128,3,128, + 3,128,31,0,31,0,3,128,1,192,1,192,225,192,243,128, + 127,0,62,0,11,14,28,11,1,0,7,128,15,128,15,128, + 27,128,59,128,51,128,115,128,99,128,227,128,255,224,255,224, + 3,128,3,128,3,128,10,14,28,11,1,0,255,128,255,128, + 224,0,224,0,224,0,255,0,255,128,225,128,1,192,1,192, + 225,192,227,128,127,0,62,0,10,14,28,11,1,0,30,0, + 63,128,97,128,96,0,224,0,223,0,255,128,225,128,225,192, + 225,192,225,192,97,128,127,128,30,0,10,14,28,11,1,0, + 255,192,255,192,1,192,3,128,3,128,7,128,7,0,7,0, + 14,0,14,0,28,0,28,0,60,0,56,0,10,14,28,11, + 1,0,63,0,127,128,225,192,225,192,225,128,127,0,63,0, + 115,128,225,192,225,192,225,192,225,192,127,128,63,0,10,14, + 28,11,1,0,30,0,127,0,225,128,225,128,225,192,225,192, + 243,192,127,192,25,192,1,128,225,128,99,128,127,0,62,0, + 3,10,10,7,3,0,224,224,224,0,0,0,0,224,224,224, + 4,12,12,6,1,254,112,112,112,0,0,0,0,112,96,224, + 192,192,12,10,20,20,4,1,0,16,0,224,3,128,28,0, + 224,0,192,0,56,0,7,0,1,192,0,48,12,5,10,20, + 4,3,255,240,255,240,0,0,255,240,255,240,12,10,20,20, + 4,1,128,0,112,0,28,0,3,128,0,112,0,48,1,192, + 14,0,56,0,192,0,9,14,28,11,1,0,62,0,127,0, + 195,128,67,128,3,128,7,0,6,0,12,0,24,0,24,0, + 24,0,0,0,24,0,24,0,19,18,54,21,1,252,1,248, + 0,15,254,0,30,7,128,56,3,192,113,253,192,115,252,224, + 231,28,224,231,28,224,231,28,224,231,28,224,231,28,224,231, + 60,192,115,255,192,113,231,128,56,0,0,30,4,0,15,252, + 0,3,252,0,14,14,28,14,0,0,7,128,7,128,7,192, + 15,192,14,192,28,224,28,224,28,96,56,112,63,240,63,248, + 112,56,112,56,224,28,11,14,28,13,1,0,255,0,255,128, + 225,192,225,192,225,192,227,128,255,0,255,128,224,192,224,224, + 224,224,224,224,255,192,255,0,13,14,28,15,1,0,15,128, + 63,224,112,112,96,112,224,0,224,0,224,0,224,0,224,0, + 224,120,96,112,112,240,63,224,15,128,12,14,28,14,1,0, + 255,0,255,192,225,224,224,224,224,112,224,112,224,112,224,112, + 224,112,224,112,224,224,225,224,255,192,255,0,10,14,28,12, + 1,0,255,192,255,192,224,0,224,0,224,0,224,0,255,128, + 255,128,224,0,224,0,224,0,224,0,255,192,255,192,9,14, + 28,11,1,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,128,255,128,224,0,224,0,224,0,224,0,224,0,224,0, + 13,14,28,15,1,0,15,192,31,240,56,56,112,56,224,0, + 224,0,225,248,225,248,224,56,224,56,112,56,120,56,63,248, + 15,240,12,14,28,14,1,0,224,112,224,112,224,112,224,112, + 224,112,224,112,255,240,255,240,224,112,224,112,224,112,224,112, + 224,112,224,112,3,14,14,5,1,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,10,14,28,12,1,0,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 225,192,225,192,243,192,127,128,62,0,11,14,28,13,1,0, + 225,224,227,192,227,128,231,0,238,0,252,0,252,0,254,0, + 238,0,231,0,231,128,227,192,225,192,224,224,10,14,28,11, + 1,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,192,255,192,16,14, + 28,18,1,0,248,31,248,31,252,63,252,63,252,55,236,119, + 238,119,238,103,230,231,231,231,231,199,227,199,227,199,227,135, + 13,14,28,15,1,0,240,56,248,56,248,56,252,56,238,56, + 238,56,231,56,231,56,227,184,227,184,225,248,225,248,224,248, + 224,248,14,14,28,16,1,0,15,192,63,240,112,112,96,56, + 224,24,224,28,224,28,224,28,224,28,224,24,96,56,112,112, + 63,240,15,192,11,14,28,13,1,0,255,0,255,192,225,192, + 224,224,224,224,224,224,225,192,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,15,14,28,17,1,0,15,192,63,224, + 112,112,96,56,224,24,224,28,224,28,224,28,224,28,224,24, + 96,56,112,120,63,254,15,254,11,14,28,13,1,0,255,128, + 255,192,224,224,224,224,224,224,224,224,255,128,255,192,225,192, + 224,224,224,224,224,224,224,224,224,96,12,14,28,14,1,0, + 31,128,63,192,96,224,224,224,224,0,252,0,127,128,31,224, + 3,224,0,112,224,112,224,96,127,192,31,128,12,14,28,14, + 1,0,255,240,255,240,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,12,14, + 28,14,1,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,112,224,63,192,31,128, + 14,14,28,15,0,0,240,28,112,28,112,60,56,56,56,56, + 56,112,28,112,28,112,30,224,14,224,15,192,7,192,7,192, + 7,128,20,14,42,20,0,0,240,240,240,112,240,224,112,240, + 224,113,248,224,113,248,224,57,153,192,57,153,192,59,157,192, + 59,157,192,27,13,128,31,15,128,31,15,128,31,15,128,14, + 7,0,12,14,28,14,1,0,224,112,112,224,120,224,57,192, + 31,128,31,0,15,0,15,0,31,128,59,192,57,192,112,224, + 224,240,224,112,12,14,28,13,0,0,240,112,112,240,56,224, + 56,224,29,192,29,192,15,128,15,0,7,0,7,0,7,0, + 7,0,7,0,7,0,11,14,28,13,1,0,127,224,127,224, + 1,224,3,192,3,128,7,128,15,0,30,0,30,0,60,0, + 120,0,248,0,255,224,255,224,5,18,18,8,2,252,248,248, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,248,248, + 6,15,15,9,1,255,192,192,96,96,96,48,48,48,16,24, + 24,24,12,12,12,5,18,18,8,2,252,248,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,248,248,10,12,24, + 20,5,0,12,0,12,0,12,0,18,0,18,0,51,0,33, + 0,33,0,64,128,64,128,192,192,128,64,10,2,4,10,0, + 253,255,192,255,192,5,4,4,5,255,12,224,112,48,24,9, + 10,20,11,1,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,10,14,28,12,1,0,224, + 0,224,0,224,0,224,0,239,0,255,128,225,192,225,192,225, + 192,225,192,225,192,225,128,255,128,239,0,9,10,20,11,1, + 0,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,10,14,28,12,1,0,1,192,1,192,1, + 192,1,192,61,192,127,192,225,192,225,192,225,192,225,192,225, + 192,225,192,127,192,61,192,9,10,20,11,1,0,30,0,127, + 0,227,128,227,128,255,128,255,128,224,0,227,128,127,128,62, + 0,7,14,14,8,1,0,30,62,56,56,254,254,56,56,56, + 56,56,56,56,56,10,14,28,12,1,252,61,192,127,192,113, + 192,225,192,225,192,225,192,225,192,225,192,127,192,61,192,1, + 192,97,192,127,128,63,0,9,14,28,11,1,0,224,0,224, + 0,224,0,224,0,239,0,255,128,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,3,14,14,5,1,0,224, + 224,224,0,224,224,224,224,224,224,224,224,224,224,4,18,18, + 7,2,252,112,112,112,0,112,112,112,112,112,112,112,112,112, + 112,112,112,240,224,9,14,28,11,1,0,224,0,224,0,224, + 0,224,0,231,128,231,0,238,0,252,0,252,0,252,0,238, + 0,231,0,231,0,227,128,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,15,10,20,18,1, + 0,239,60,255,254,227,206,227,134,227,134,227,134,227,134,227, + 134,227,134,227,134,9,10,20,11,1,0,239,0,255,128,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,227,128,10, + 10,20,12,1,0,30,0,127,128,97,128,225,192,225,192,225, + 192,225,192,97,128,127,128,30,0,10,14,28,12,1,252,239, + 0,255,128,225,128,225,192,225,192,225,192,225,192,225,192,255, + 128,239,0,224,0,224,0,224,0,224,0,10,14,28,12,1, + 252,61,192,127,192,225,192,225,192,225,192,225,192,225,192,225, + 192,127,192,61,192,1,192,1,192,1,192,1,192,6,10,10, + 8,1,0,236,252,240,224,224,224,224,224,224,224,9,10,20, + 11,1,0,62,0,255,0,227,128,224,0,126,0,31,0,3, + 128,227,128,255,0,62,0,7,13,13,9,1,0,8,56,56, + 254,254,56,56,56,56,56,56,62,30,9,10,20,11,1,0, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 255,128,123,128,11,10,20,11,0,0,224,224,113,192,113,192, + 49,128,59,128,59,128,27,0,31,0,31,0,14,0,17,10, + 30,17,0,0,225,195,128,97,227,0,115,231,0,115,103,0, + 51,119,0,63,118,0,63,62,0,62,62,0,30,60,0,30, + 28,0,9,10,20,11,1,0,227,128,115,0,119,0,62,0, + 28,0,62,0,62,0,119,0,227,128,227,128,11,14,28,11, + 0,252,224,224,113,192,113,192,57,128,59,128,59,128,31,0, + 31,0,15,0,14,0,14,0,14,0,28,0,28,0,8,10, + 10,10,1,0,255,255,7,14,28,56,112,224,255,255,7,19, + 19,10,2,251,14,62,56,56,56,56,56,48,240,192,240,112, + 56,56,56,56,56,62,14,1,21,21,7,3,251,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,7,19,19,10,2,251,224,240,56,56,56,56,56,56, + 28,6,28,56,56,56,56,56,56,240,224,11,3,6,11,0, + 4,48,96,127,192,199,128,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,6,0,0,3,14, + 14,9,3,252,224,224,0,0,224,224,224,224,224,224,224,224, + 224,224,9,14,28,11,1,254,2,0,2,0,62,0,127,0, + 231,128,231,128,232,0,232,0,235,128,243,128,127,0,62,0, + 32,0,32,0,10,14,28,12,1,0,31,0,63,192,113,192, + 112,0,112,0,254,0,254,0,112,0,112,0,112,0,112,0, + 112,0,255,192,255,192,10,10,20,12,1,3,128,64,94,128, + 33,0,64,128,64,128,64,128,64,128,33,0,94,128,128,64, + 11,14,28,13,1,0,224,224,225,192,113,192,113,128,251,224, + 251,224,31,0,255,224,255,224,14,0,14,0,14,0,14,0, + 14,0,1,18,18,7,3,252,128,128,128,128,128,128,128,128, + 0,0,128,128,128,128,128,128,128,128,8,18,18,10,1,252, + 62,126,224,224,112,60,126,231,231,231,254,124,30,7,7,135, + 254,56,7,2,2,7,0,12,238,238,15,14,28,17,1,0, + 7,192,31,240,55,152,111,204,204,228,156,2,156,2,156,226, + 140,226,207,198,71,132,32,24,28,112,15,192,7,9,9,8, + 1,5,120,204,124,204,204,252,36,0,254,10,8,16,12,1, + 1,57,192,113,128,115,128,231,0,231,0,115,128,113,128,57, + 192,11,5,10,13,1,4,255,224,255,224,0,32,0,32,0, + 32,255,15,14,28,17,1,0,7,192,31,240,63,152,111,236, + 204,100,140,98,143,194,143,194,140,98,204,102,76,100,32,24, + 28,112,15,192,6,2,2,6,0,12,252,252,5,5,5,7, + 1,9,112,136,136,136,112,12,12,24,20,4,0,2,0,2, + 0,2,0,255,240,255,240,2,0,2,0,2,0,0,0,0, + 0,255,240,255,240,6,8,8,8,1,6,120,204,12,24,48, + 224,252,252,6,7,7,8,1,7,120,204,12,48,12,204,120, + 4,4,4,4,1,12,48,96,96,192,255,9,17,34,11,1, + 253,63,128,121,0,249,0,249,0,249,0,249,0,121,0,9, + 0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9, + 0,9,0,3,3,3,6,2,5,224,224,224,5,5,5,5, + 1,251,64,112,24,24,240,4,8,8,6,1,6,48,240,48, + 48,48,48,48,48,7,9,9,9,1,5,56,68,198,198,198, + 68,56,0,254,10,8,16,12,1,1,231,0,99,128,115,128, + 57,192,57,192,115,128,99,128,231,0,14,14,28,16,1,0, + 112,48,240,48,48,96,48,192,48,192,49,128,49,156,51,60, + 6,60,6,108,12,204,24,252,24,12,48,12,15,14,28,17, + 1,0,112,48,240,32,48,96,48,192,48,192,49,128,51,60, + 51,102,6,6,12,14,12,28,24,48,48,126,48,126,14,14, + 28,16,1,0,120,24,204,48,12,48,48,96,12,192,204,192, + 121,156,1,188,3,60,6,108,6,204,12,252,8,12,24,12, + 9,14,28,11,1,252,14,0,14,0,0,0,14,0,14,0, + 14,0,60,0,112,0,224,0,224,0,225,128,225,128,127,128, + 62,0,14,20,40,14,0,0,12,0,14,0,6,0,3,0, + 0,0,0,0,7,128,7,128,7,192,15,192,14,192,28,224, + 28,224,28,96,56,112,63,240,63,248,112,56,112,56,224,28, + 14,20,40,14,0,0,0,192,1,192,1,128,3,0,0,0, + 0,0,7,128,7,128,7,192,15,192,14,192,28,224,28,224, + 28,96,56,112,63,240,63,248,112,56,112,56,224,28,14,20, + 40,14,0,0,3,128,7,128,6,192,12,192,0,0,0,0, + 7,128,7,128,7,192,15,192,14,192,28,224,28,224,28,96, + 56,112,63,240,63,248,112,56,112,56,224,28,14,19,38,14, + 0,0,6,64,15,192,8,128,0,0,0,0,7,128,7,128, + 7,192,15,192,14,192,28,224,28,224,28,96,56,112,63,240, + 63,248,112,56,112,56,224,28,14,19,38,15,0,0,14,224, + 14,224,0,0,0,0,0,0,3,128,7,128,7,192,7,192, + 14,192,14,224,28,224,28,112,28,112,63,248,63,248,112,56, + 112,28,224,28,13,21,42,15,1,0,7,0,8,128,8,128, + 8,128,7,0,0,0,0,0,7,0,15,128,15,128,29,192, + 29,192,29,192,56,224,56,224,48,96,127,240,127,240,224,56, + 224,56,224,56,19,14,42,20,0,0,0,255,224,1,255,224, + 3,240,0,3,112,0,7,112,0,7,112,0,14,127,192,14, + 127,192,28,112,0,31,240,0,63,240,0,112,112,0,112,127, + 224,224,127,224,13,18,36,15,1,252,15,128,63,224,112,240, + 96,112,224,0,224,0,224,0,224,0,224,0,224,120,96,112, + 112,240,63,224,31,128,4,0,7,128,1,128,15,0,10,20, + 40,12,1,0,48,0,56,0,24,0,12,0,0,0,0,0, + 255,192,255,192,224,0,224,0,224,0,224,0,255,128,255,128, + 224,0,224,0,224,0,224,0,255,192,255,192,10,20,40,12, + 1,0,7,0,6,0,12,0,8,0,0,0,0,0,255,192, + 255,192,224,0,224,0,224,0,224,0,255,128,255,128,224,0, + 224,0,224,0,224,0,255,192,255,192,10,20,40,12,1,0, + 28,0,30,0,54,0,35,0,0,0,0,0,255,192,255,192, + 224,0,224,0,224,0,224,0,255,128,255,128,224,0,224,0, + 224,0,224,0,255,192,255,192,10,19,38,12,1,0,119,0, + 119,0,0,0,0,0,0,0,255,192,255,192,224,0,224,0, + 224,0,224,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,192,255,192,5,20,20,5,255,0,224,96,48,16,0,0, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,4,20, + 20,5,1,0,48,112,96,192,0,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,5,20,20,5,0,0,112,112, + 216,136,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,7,19,19,7,0,0,238,238,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,13,14,28,14,0, + 0,127,128,127,224,112,240,112,112,112,56,112,56,254,56,254, + 56,112,56,112,56,112,112,112,240,127,224,127,128,13,19,38, + 15,1,0,12,64,31,128,17,0,0,0,0,0,240,56,248, + 56,248,56,252,56,238,56,238,56,231,56,231,56,227,184,227, + 184,225,248,225,248,224,248,224,248,14,20,40,16,1,0,28, + 0,12,0,6,0,2,0,0,0,0,0,15,192,63,240,112, + 112,96,56,224,24,224,28,224,28,224,28,224,28,224,24,96, + 56,112,112,63,240,15,192,14,20,40,16,1,0,0,224,1, + 192,1,128,3,0,0,0,0,0,15,192,63,240,112,112,96, + 56,224,24,224,28,224,28,224,28,224,28,224,24,96,56,112, + 112,63,240,15,192,14,20,40,16,1,0,7,0,7,128,13, + 192,8,192,0,0,0,0,15,192,63,240,112,112,96,56,224, + 24,224,28,224,28,224,28,224,28,224,24,96,56,112,112,63, + 240,15,192,14,19,38,16,1,0,7,192,15,192,0,0,0, + 0,0,0,15,192,63,240,112,48,96,56,224,24,224,28,224, + 28,224,28,224,28,224,24,112,56,120,240,63,240,15,192,14, + 19,38,16,1,0,29,192,29,192,0,0,0,0,0,0,15, + 192,63,240,112,112,96,56,224,24,224,28,224,28,224,28,224, + 28,224,24,96,56,112,112,63,240,15,192,10,10,20,20,5, + 1,128,64,192,192,97,128,51,0,12,0,12,0,18,0,33, + 0,64,128,128,64,15,16,32,16,0,255,0,2,7,230,31, + 252,56,60,48,60,112,108,112,238,113,206,115,142,119,14,126, + 12,124,28,56,56,63,240,239,224,64,0,12,20,40,14,1, + 0,56,0,24,0,12,0,6,0,0,0,0,0,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,113,224,63,192,31,128,12,20,40,14,1,0,1, + 192,3,128,3,0,6,0,0,0,0,0,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,113,224,63,192,31,128,12,20,40,14,1,0,14,0,15, + 0,27,0,17,128,0,0,0,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,113, + 224,63,192,31,128,12,19,38,14,1,0,29,192,29,192,0, + 0,0,0,0,0,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,63,192,31, + 128,12,19,38,13,0,0,1,128,3,0,2,0,0,0,0, + 0,240,112,112,240,56,224,56,224,29,192,29,192,15,128,15, + 0,7,0,7,0,7,0,7,0,7,0,7,0,11,14,28, + 13,1,0,224,0,224,0,255,0,255,192,225,192,224,224,224, + 224,224,224,225,192,255,128,254,0,224,0,224,0,224,0,10, + 14,28,12,1,0,62,0,127,128,227,128,227,128,227,0,231, + 0,238,0,238,0,231,128,227,192,225,192,253,192,255,192,239, + 128,9,16,32,11,1,0,112,0,48,0,24,0,8,0,0, + 0,0,0,62,0,127,128,227,128,31,128,127,128,227,128,227, + 128,227,128,255,128,57,128,9,16,32,11,1,0,7,0,6, + 0,12,0,12,0,0,0,0,0,62,0,127,128,227,128,3, + 128,63,128,251,128,227,128,227,128,255,128,121,128,9,16,32, + 11,1,0,28,0,30,0,54,0,35,0,0,0,0,0,62, + 0,127,128,227,128,31,128,127,128,227,128,227,128,227,128,255, + 128,57,128,9,14,28,11,1,0,63,0,62,0,0,0,0, + 0,62,0,127,128,227,128,31,128,127,128,227,128,227,128,227, + 128,255,128,57,128,9,15,30,11,1,0,119,0,119,0,0, + 0,0,0,0,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,9,17,34,11,1,0,28, + 0,34,0,34,0,34,0,28,0,0,0,0,0,62,0,127, + 128,227,128,31,128,127,128,227,128,227,128,227,128,255,128,57, + 128,16,10,20,18,1,0,62,124,127,254,227,135,31,255,127, + 255,227,128,227,128,227,199,254,254,60,124,9,14,28,11,1, + 252,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,16,0,30,0,6,0,62,0,9,16,32, + 11,1,0,112,0,48,0,24,0,8,0,0,0,0,0,30, + 0,127,0,227,128,227,128,255,128,255,128,224,0,227,128,127, + 128,62,0,9,16,32,11,1,0,7,0,6,0,12,0,8, + 0,0,0,0,0,30,0,127,0,227,128,227,128,255,128,255, + 128,224,0,227,128,127,128,62,0,9,16,32,11,1,0,28, + 0,30,0,54,0,35,0,0,0,0,0,30,0,127,0,227, + 128,227,128,255,128,255,128,224,0,227,128,127,128,62,0,9, + 15,30,11,1,0,119,0,119,0,0,0,0,0,0,0,30, + 0,127,0,227,128,227,128,255,128,255,128,224,0,227,128,127, + 128,62,0,4,15,15,5,0,0,192,224,96,48,0,112,112, + 112,112,112,112,112,112,112,112,4,15,15,4,1,0,112,96, + 192,128,0,224,224,224,224,224,224,224,224,224,224,7,15,15, + 5,255,0,56,124,76,198,0,56,56,56,56,56,56,56,56, + 56,56,7,14,14,6,0,0,238,238,0,0,56,56,56,56, + 56,56,56,56,56,56,10,14,28,12,1,0,57,128,15,0, + 31,0,99,0,31,128,127,128,97,192,225,192,225,192,225,192, + 225,192,97,192,127,128,31,0,9,14,28,11,1,0,62,0, + 60,0,0,0,0,0,239,0,255,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,16,32,12,1,0, + 48,0,24,0,24,0,12,0,0,0,0,0,30,0,127,128, + 97,128,225,192,225,192,225,192,225,192,97,128,127,128,30,0, + 10,16,32,12,1,0,3,0,6,0,6,0,12,0,0,0, + 0,0,30,0,127,128,97,128,225,192,225,192,225,192,225,192, + 97,128,127,128,30,0,10,16,32,12,1,0,12,0,30,0, + 26,0,51,0,0,0,0,0,30,0,127,128,97,128,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,10,14,28,12, + 1,0,31,0,62,0,0,0,0,0,30,0,127,128,97,128, + 225,192,225,192,225,192,225,192,97,128,127,128,30,0,10,15, + 30,12,1,0,59,128,59,128,0,0,0,0,0,0,30,0, + 127,128,97,128,225,192,225,192,225,192,225,192,97,128,127,128, + 30,0,12,8,16,20,4,2,6,0,14,0,0,0,255,240, + 255,240,0,0,6,0,14,0,10,12,24,12,1,0,0,192, + 31,128,127,128,99,128,231,192,237,192,233,192,241,192,113,128, + 127,128,222,0,128,0,9,16,32,11,1,0,112,0,48,0, + 24,0,8,0,0,0,0,0,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,255,128,123,128,9,16,32,11, + 1,0,7,0,6,0,12,0,8,0,0,0,0,0,227,128, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,255,128, + 123,128,9,16,32,11,1,0,28,0,28,0,54,0,34,0, + 0,0,0,0,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,255,128,123,128,9,15,30,11,1,0,119,0, + 119,0,0,0,0,0,0,0,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,255,128,123,128,11,19,38,11, + 0,252,1,128,3,0,2,0,4,0,0,0,112,224,113,192, + 113,192,57,192,59,128,27,128,31,128,31,0,15,0,14,0, + 14,0,78,0,252,0,120,0,10,18,36,12,1,252,224,0, + 224,0,224,0,224,0,239,0,255,128,225,128,225,192,225,192, + 225,192,225,192,225,192,255,128,255,0,224,0,224,0,224,0, + 224,0,11,18,36,11,0,252,59,128,59,128,0,0,0,0, + 225,224,113,192,113,192,115,128,59,128,59,128,31,0,31,0, + 31,0,14,0,14,0,12,0,28,0,28,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=12 h=15 x= 4 y= 7 dx=20 dy= 0 ascent=14 len=28 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14n[436] U8G_SECTION(".progmem.u8g_font_fub14n") = { + 0,31,26,254,251,14,0,0,0,0,42,57,0,14,254,14, + 0,8,7,7,12,2,7,102,60,24,255,24,60,102,12,12, + 24,20,4,0,2,0,2,0,2,0,2,0,2,0,255,240, + 255,240,2,0,2,0,2,0,2,0,2,0,4,5,5,6, + 1,254,112,112,96,224,192,5,3,3,7,1,4,248,248,248, + 3,3,3,6,2,0,224,224,224,6,15,15,9,1,255,12, + 12,12,12,24,24,24,48,48,48,96,96,96,96,192,10,14, + 28,11,1,0,30,0,127,0,97,128,225,192,225,192,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,127,128,30,0, + 6,14,14,11,2,0,28,124,252,220,28,28,28,28,28,28, + 28,28,28,28,10,14,28,11,1,0,31,0,127,128,97,192, + 225,192,1,192,1,192,3,128,7,128,15,0,30,0,56,0, + 112,0,255,192,255,192,10,14,28,11,1,0,62,0,127,0, + 227,128,3,128,3,128,31,0,31,0,3,128,1,192,1,192, + 225,192,243,128,127,0,62,0,11,14,28,11,1,0,7,128, + 15,128,15,128,27,128,59,128,51,128,115,128,99,128,227,128, + 255,224,255,224,3,128,3,128,3,128,10,14,28,11,1,0, + 255,128,255,128,224,0,224,0,224,0,255,0,255,128,225,128, + 1,192,1,192,225,192,227,128,127,0,62,0,10,14,28,11, + 1,0,30,0,63,128,97,128,96,0,224,0,223,0,255,128, + 225,128,225,192,225,192,225,192,97,128,127,128,30,0,10,14, + 28,11,1,0,255,192,255,192,1,192,3,128,3,128,7,128, + 7,0,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 10,14,28,11,1,0,63,0,127,128,225,192,225,192,225,128, + 127,0,63,0,115,128,225,192,225,192,225,192,225,192,127,128, + 63,0,10,14,28,11,1,0,30,0,127,0,225,128,225,128, + 225,192,225,192,243,192,127,192,25,192,1,128,225,128,99,128, + 127,0,62,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=21 x= 5 y=12 dx=21 dy= 0 ascent=16 len=54 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14r[2680] U8G_SECTION(".progmem.u8g_font_fub14r") = { + 0,31,26,254,251,14,3,116,7,95,32,127,252,16,251,14, + 252,0,0,0,6,0,0,3,14,14,8,3,0,224,224,224, + 224,224,224,224,224,224,224,0,0,224,224,8,6,6,10,1, + 8,231,103,103,103,103,103,12,14,28,14,1,0,6,96,6, + 96,12,96,63,240,63,240,24,192,25,128,25,128,255,224,255, + 224,51,0,51,0,99,0,102,0,10,17,34,12,1,254,4, + 0,31,0,127,128,119,128,229,192,228,0,252,0,126,0,31, + 128,7,192,5,192,229,192,229,192,127,128,63,0,4,0,4, + 0,18,14,42,20,1,0,60,4,0,126,12,0,195,24,0, + 195,16,0,195,48,0,231,96,0,126,103,0,24,205,128,0, + 152,192,1,152,192,3,24,192,3,24,192,6,15,128,12,7, + 0,14,14,28,16,1,0,31,0,127,128,113,192,113,192,115, + 128,63,0,30,0,126,56,247,48,227,176,225,240,224,224,127, + 240,31,188,3,6,6,8,3,8,224,192,192,192,192,192,4, + 17,17,8,2,253,48,112,112,96,224,224,224,224,224,224,224, + 224,224,96,112,112,48,4,17,17,8,2,253,192,192,224,224, + 96,96,112,112,112,112,112,96,96,224,224,192,192,8,7,7, + 12,2,7,102,60,24,255,24,60,102,12,12,24,20,4,0, + 2,0,2,0,2,0,2,0,2,0,255,240,255,240,2,0, + 2,0,2,0,2,0,2,0,4,5,5,6,1,254,112,112, + 96,224,192,5,3,3,7,1,4,248,248,248,3,3,3,6, + 2,0,224,224,224,6,15,15,9,1,255,12,12,12,12,24, + 24,24,48,48,48,96,96,96,96,192,10,14,28,11,1,0, + 30,0,127,0,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,6,14,14,11, + 2,0,28,124,252,220,28,28,28,28,28,28,28,28,28,28, + 10,14,28,11,1,0,31,0,127,128,97,192,225,192,1,192, + 1,192,3,128,7,128,15,0,30,0,56,0,112,0,255,192, + 255,192,10,14,28,11,1,0,62,0,127,0,227,128,3,128, + 3,128,31,0,31,0,3,128,1,192,1,192,225,192,243,128, + 127,0,62,0,11,14,28,11,1,0,7,128,15,128,15,128, + 27,128,59,128,51,128,115,128,99,128,227,128,255,224,255,224, + 3,128,3,128,3,128,10,14,28,11,1,0,255,128,255,128, + 224,0,224,0,224,0,255,0,255,128,225,128,1,192,1,192, + 225,192,227,128,127,0,62,0,10,14,28,11,1,0,30,0, + 63,128,97,128,96,0,224,0,223,0,255,128,225,128,225,192, + 225,192,225,192,97,128,127,128,30,0,10,14,28,11,1,0, + 255,192,255,192,1,192,3,128,3,128,7,128,7,0,7,0, + 14,0,14,0,28,0,28,0,60,0,56,0,10,14,28,11, + 1,0,63,0,127,128,225,192,225,192,225,128,127,0,63,0, + 115,128,225,192,225,192,225,192,225,192,127,128,63,0,10,14, + 28,11,1,0,30,0,127,0,225,128,225,128,225,192,225,192, + 243,192,127,192,25,192,1,128,225,128,99,128,127,0,62,0, + 3,10,10,7,3,0,224,224,224,0,0,0,0,224,224,224, + 4,12,12,6,1,254,112,112,112,0,0,0,0,112,96,224, + 192,192,12,10,20,20,4,1,0,16,0,224,3,128,28,0, + 224,0,192,0,56,0,7,0,1,192,0,48,12,5,10,20, + 4,3,255,240,255,240,0,0,255,240,255,240,12,10,20,20, + 4,1,128,0,112,0,28,0,3,128,0,112,0,48,1,192, + 14,0,56,0,192,0,9,14,28,11,1,0,62,0,127,0, + 195,128,67,128,3,128,7,0,6,0,12,0,24,0,24,0, + 24,0,0,0,24,0,24,0,19,18,54,21,1,252,1,248, + 0,15,254,0,30,7,128,56,3,192,113,253,192,115,252,224, + 231,28,224,231,28,224,231,28,224,231,28,224,231,28,224,231, + 60,192,115,255,192,113,231,128,56,0,0,30,4,0,15,252, + 0,3,252,0,14,14,28,14,0,0,7,128,7,128,7,192, + 15,192,14,192,28,224,28,224,28,96,56,112,63,240,63,248, + 112,56,112,56,224,28,11,14,28,13,1,0,255,0,255,128, + 225,192,225,192,225,192,227,128,255,0,255,128,224,192,224,224, + 224,224,224,224,255,192,255,0,13,14,28,15,1,0,15,128, + 63,224,112,112,96,112,224,0,224,0,224,0,224,0,224,0, + 224,120,96,112,112,240,63,224,15,128,12,14,28,14,1,0, + 255,0,255,192,225,224,224,224,224,112,224,112,224,112,224,112, + 224,112,224,112,224,224,225,224,255,192,255,0,10,14,28,12, + 1,0,255,192,255,192,224,0,224,0,224,0,224,0,255,128, + 255,128,224,0,224,0,224,0,224,0,255,192,255,192,9,14, + 28,11,1,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,128,255,128,224,0,224,0,224,0,224,0,224,0,224,0, + 13,14,28,15,1,0,15,192,31,240,56,56,112,56,224,0, + 224,0,225,248,225,248,224,56,224,56,112,56,120,56,63,248, + 15,240,12,14,28,14,1,0,224,112,224,112,224,112,224,112, + 224,112,224,112,255,240,255,240,224,112,224,112,224,112,224,112, + 224,112,224,112,3,14,14,5,1,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,10,14,28,12,1,0,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 225,192,225,192,243,192,127,128,62,0,11,14,28,13,1,0, + 225,224,227,192,227,128,231,0,238,0,252,0,252,0,254,0, + 238,0,231,0,231,128,227,192,225,192,224,224,10,14,28,11, + 1,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,192,255,192,16,14, + 28,18,1,0,248,31,248,31,252,63,252,63,252,55,236,119, + 238,119,238,103,230,231,231,231,231,199,227,199,227,199,227,135, + 13,14,28,15,1,0,240,56,248,56,248,56,252,56,238,56, + 238,56,231,56,231,56,227,184,227,184,225,248,225,248,224,248, + 224,248,14,14,28,16,1,0,15,192,63,240,112,112,96,56, + 224,24,224,28,224,28,224,28,224,28,224,24,96,56,112,112, + 63,240,15,192,11,14,28,13,1,0,255,0,255,192,225,192, + 224,224,224,224,224,224,225,192,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,15,14,28,17,1,0,15,192,63,224, + 112,112,96,56,224,24,224,28,224,28,224,28,224,28,224,24, + 96,56,112,120,63,254,15,254,11,14,28,13,1,0,255,128, + 255,192,224,224,224,224,224,224,224,224,255,128,255,192,225,192, + 224,224,224,224,224,224,224,224,224,96,12,14,28,14,1,0, + 31,128,63,192,96,224,224,224,224,0,252,0,127,128,31,224, + 3,224,0,112,224,112,224,96,127,192,31,128,12,14,28,14, + 1,0,255,240,255,240,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,12,14, + 28,14,1,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,112,224,63,192,31,128, + 14,14,28,15,0,0,240,28,112,28,112,60,56,56,56,56, + 56,112,28,112,28,112,30,224,14,224,15,192,7,192,7,192, + 7,128,20,14,42,20,0,0,240,240,240,112,240,224,112,240, + 224,113,248,224,113,248,224,57,153,192,57,153,192,59,157,192, + 59,157,192,27,13,128,31,15,128,31,15,128,31,15,128,14, + 7,0,12,14,28,14,1,0,224,112,112,224,120,224,57,192, + 31,128,31,0,15,0,15,0,31,128,59,192,57,192,112,224, + 224,240,224,112,12,14,28,13,0,0,240,112,112,240,56,224, + 56,224,29,192,29,192,15,128,15,0,7,0,7,0,7,0, + 7,0,7,0,7,0,11,14,28,13,1,0,127,224,127,224, + 1,224,3,192,3,128,7,128,15,0,30,0,30,0,60,0, + 120,0,248,0,255,224,255,224,5,18,18,8,2,252,248,248, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,248,248, + 6,15,15,9,1,255,192,192,96,96,96,48,48,48,16,24, + 24,24,12,12,12,5,18,18,8,2,252,248,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,248,248,10,12,24, + 20,5,0,12,0,12,0,12,0,18,0,18,0,51,0,33, + 0,33,0,64,128,64,128,192,192,128,64,10,2,4,10,0, + 253,255,192,255,192,5,4,4,5,255,12,224,112,48,24,9, + 10,20,11,1,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,10,14,28,12,1,0,224, + 0,224,0,224,0,224,0,239,0,255,128,225,192,225,192,225, + 192,225,192,225,192,225,128,255,128,239,0,9,10,20,11,1, + 0,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,10,14,28,12,1,0,1,192,1,192,1, + 192,1,192,61,192,127,192,225,192,225,192,225,192,225,192,225, + 192,225,192,127,192,61,192,9,10,20,11,1,0,30,0,127, + 0,227,128,227,128,255,128,255,128,224,0,227,128,127,128,62, + 0,7,14,14,8,1,0,30,62,56,56,254,254,56,56,56, + 56,56,56,56,56,10,14,28,12,1,252,61,192,127,192,113, + 192,225,192,225,192,225,192,225,192,225,192,127,192,61,192,1, + 192,97,192,127,128,63,0,9,14,28,11,1,0,224,0,224, + 0,224,0,224,0,239,0,255,128,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,3,14,14,5,1,0,224, + 224,224,0,224,224,224,224,224,224,224,224,224,224,4,18,18, + 7,2,252,112,112,112,0,112,112,112,112,112,112,112,112,112, + 112,112,112,240,224,9,14,28,11,1,0,224,0,224,0,224, + 0,224,0,231,128,231,0,238,0,252,0,252,0,252,0,238, + 0,231,0,231,0,227,128,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,15,10,20,18,1, + 0,239,60,255,254,227,206,227,134,227,134,227,134,227,134,227, + 134,227,134,227,134,9,10,20,11,1,0,239,0,255,128,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,227,128,10, + 10,20,12,1,0,30,0,127,128,97,128,225,192,225,192,225, + 192,225,192,97,128,127,128,30,0,10,14,28,12,1,252,239, + 0,255,128,225,128,225,192,225,192,225,192,225,192,225,192,255, + 128,239,0,224,0,224,0,224,0,224,0,10,14,28,12,1, + 252,61,192,127,192,225,192,225,192,225,192,225,192,225,192,225, + 192,127,192,61,192,1,192,1,192,1,192,1,192,6,10,10, + 8,1,0,236,252,240,224,224,224,224,224,224,224,9,10,20, + 11,1,0,62,0,255,0,227,128,224,0,126,0,31,0,3, + 128,227,128,255,0,62,0,7,13,13,9,1,0,8,56,56, + 254,254,56,56,56,56,56,56,62,30,9,10,20,11,1,0, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 255,128,123,128,11,10,20,11,0,0,224,224,113,192,113,192, + 49,128,59,128,59,128,27,0,31,0,31,0,14,0,17,10, + 30,17,0,0,225,195,128,97,227,0,115,231,0,115,103,0, + 51,119,0,63,118,0,63,62,0,62,62,0,30,60,0,30, + 28,0,9,10,20,11,1,0,227,128,115,0,119,0,62,0, + 28,0,62,0,62,0,119,0,227,128,227,128,11,14,28,11, + 0,252,224,224,113,192,113,192,57,128,59,128,59,128,31,0, + 31,0,15,0,14,0,14,0,14,0,28,0,28,0,8,10, + 10,10,1,0,255,255,7,14,28,56,112,224,255,255,7,19, + 19,10,2,251,14,62,56,56,56,56,56,48,240,192,240,112, + 56,56,56,56,56,62,14,1,21,21,7,3,251,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,7,19,19,10,2,251,224,240,56,56,56,56,56,56, + 28,6,28,56,56,56,56,56,56,240,224,11,3,6,11,0, + 4,48,96,127,192,199,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=25 x= 6 y=15 dx=24 dy= 0 ascent=25 len=66 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17[6938] U8G_SECTION(".progmem.u8g_font_fub17") = { + 0,34,31,254,250,17,4,8,8,209,32,255,251,25,250,17, + 251,0,0,0,7,0,0,3,17,17,9,3,0,224,224,224, + 224,224,224,224,224,224,224,224,224,0,0,224,224,224,8,7, + 7,12,2,10,231,231,231,231,231,231,231,14,17,34,16,1, + 0,3,24,7,24,6,56,6,48,63,252,63,252,12,96,12, + 96,28,96,24,224,255,248,255,240,57,192,49,128,49,128,113, + 128,99,128,12,21,42,14,1,253,2,0,15,128,63,192,127, + 224,242,224,226,224,226,0,250,0,126,0,63,192,15,224,3, + 240,2,240,226,112,226,112,242,240,127,224,63,192,15,0,2, + 0,2,0,21,17,51,23,1,0,62,3,0,127,7,0,99, + 6,0,193,142,0,193,140,0,193,152,0,193,184,0,99,48, + 128,127,119,224,62,102,48,0,236,24,0,204,24,1,204,24, + 1,140,24,3,14,56,7,7,240,6,3,224,16,17,34,18, + 1,0,31,128,63,192,121,224,112,224,113,224,57,192,63,128, + 31,0,63,30,119,156,243,220,225,252,224,252,224,120,120,124, + 127,254,31,207,3,7,7,9,3,10,224,224,224,224,224,224, + 96,5,20,20,9,2,253,56,56,112,112,112,240,224,224,224, + 224,224,224,224,224,240,112,112,112,48,56,5,20,20,9,2, + 253,224,96,112,112,112,56,56,56,56,56,56,56,56,56,56, + 112,112,112,96,224,9,9,18,15,3,8,54,0,54,0,54, + 0,156,128,255,128,156,128,54,0,54,0,54,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,255,252,2,0,2,0,2,0,2,0,2,0,2,0,5, + 6,6,7,1,253,56,112,112,96,96,224,6,3,3,8,1, + 4,252,252,252,3,3,3,7,2,0,224,224,224,8,18,18, + 10,1,255,7,6,6,14,12,12,12,28,24,24,56,48,48, + 48,112,96,96,224,11,17,34,13,1,0,31,0,63,128,113, + 192,112,192,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,112,192,113,192,63,128,31,0,7,17,17, + 13,2,0,14,62,254,254,206,14,14,14,14,14,14,14,14, + 14,14,14,14,12,17,34,13,1,0,15,128,63,224,120,224, + 112,112,0,112,0,112,0,240,1,224,3,224,7,192,15,128, + 30,0,60,0,248,0,255,240,255,240,255,240,11,17,34,13, + 1,0,31,0,127,192,241,224,224,224,0,224,0,224,1,192, + 15,128,15,128,1,192,0,224,0,224,224,224,241,224,255,192, + 127,128,31,0,12,17,34,13,1,0,3,192,7,192,7,192, + 15,192,29,192,29,192,57,192,113,192,113,192,225,192,255,240, + 255,240,255,240,1,192,1,192,1,192,1,192,11,17,34,13, + 1,0,255,192,255,192,255,192,224,0,224,0,224,0,239,128, + 255,192,241,224,224,224,0,224,0,224,224,224,225,224,255,192, + 127,128,63,0,11,17,34,13,1,0,15,0,63,192,57,224, + 112,224,96,0,224,0,239,128,255,192,241,224,224,224,224,224, + 224,224,224,224,96,224,113,192,63,128,31,0,11,17,34,13, + 1,0,255,224,255,224,255,224,0,224,1,224,1,192,3,192, + 3,128,7,128,7,128,7,0,15,0,14,0,30,0,28,0, + 60,0,60,0,11,17,34,13,1,0,31,0,127,192,241,224, + 224,224,224,224,224,224,113,192,63,128,63,128,113,192,224,224, + 224,224,224,224,224,224,241,224,127,192,31,0,11,17,34,13, + 1,0,31,0,63,128,113,192,224,192,224,224,224,224,224,224, + 241,224,127,224,62,224,0,224,0,224,224,224,225,192,113,192, + 127,128,30,0,3,12,12,7,3,0,224,224,224,0,0,0, + 0,0,0,224,224,224,5,14,14,8,1,254,56,56,56,0, + 0,0,0,0,56,56,112,112,96,224,14,12,24,24,5,1, + 0,12,0,60,1,224,7,0,60,0,224,0,224,0,60,0, + 7,0,1,224,0,60,0,12,14,6,12,24,5,4,255,252, + 255,252,0,0,0,0,255,252,255,252,14,12,24,24,5,1, + 192,0,240,0,30,0,3,128,0,240,0,28,0,28,0,240, + 3,128,30,0,240,0,192,0,10,17,34,12,1,0,62,0, + 127,128,227,128,193,192,1,192,1,192,3,128,7,128,14,0, + 28,0,24,0,24,0,24,0,0,0,0,0,24,0,24,0, + 22,22,66,24,1,251,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,240,120,247,120,121,255,56,113,207,60,243,135, + 28,227,135,28,227,135,28,227,135,28,227,135,28,227,207,56, + 241,255,248,113,251,240,120,113,224,60,0,0,31,0,0,15, + 255,0,7,255,0,0,255,0,16,17,34,16,0,0,3,192, + 3,192,3,224,7,224,7,240,15,112,14,112,14,120,30,56, + 28,56,28,60,63,252,63,252,127,254,120,14,112,15,240,7, + 12,17,34,15,2,0,255,192,255,224,255,240,224,240,224,112, + 224,112,224,224,255,192,255,192,224,224,224,112,224,112,224,112, + 224,240,255,240,255,224,255,128,14,17,34,16,1,0,15,192, + 31,240,63,248,120,120,112,60,240,60,224,0,224,0,224,0, + 224,0,224,0,224,0,112,60,112,60,56,120,31,240,15,192, + 14,17,34,17,2,0,255,0,255,224,255,240,224,248,224,56, + 224,60,224,28,224,28,224,28,224,28,224,28,224,60,224,56, + 224,248,255,240,255,224,255,128,11,17,34,15,2,0,255,224, + 255,224,255,224,224,0,224,0,224,0,224,0,255,224,255,224, + 224,0,224,0,224,0,224,0,224,0,255,224,255,224,255,224, + 11,17,34,14,2,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,192,255,192,255,192,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,15,17,34,18,1,0,7,224, + 31,248,63,252,124,30,112,14,240,14,224,0,224,0,224,254, + 224,254,224,254,240,14,112,14,124,14,63,254,31,254,3,248, + 13,17,34,17,2,0,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,255,248,255,248,255,248,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,3,17,17,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 17,34,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,224,224,224,224,240, + 224,255,192,127,192,63,0,13,17,34,16,2,0,224,240,224, + 224,225,224,227,192,231,128,239,0,239,0,254,0,254,0,239, + 0,231,128,231,128,227,192,225,224,225,240,224,240,224,120,11, + 17,34,14,2,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,224,255,224,255,224,18,17,51,22,2,0,252,7,192, + 252,15,192,252,15,192,252,15,192,238,31,192,238,29,192,238, + 29,192,231,61,192,231,57,192,231,57,192,231,185,192,227,241, + 192,227,241,192,227,241,192,225,241,192,225,225,192,225,225,192, + 14,17,34,18,2,0,248,28,248,28,252,28,252,28,238,28, + 238,28,231,28,231,28,231,156,227,156,227,220,225,220,225,220, + 224,252,224,252,224,124,224,124,15,17,34,17,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,240,14,112,28,120,60,63,248,31,240,7,224, + 12,17,34,15,2,0,255,128,255,192,255,224,224,240,224,112, + 224,112,224,112,224,240,255,224,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,224,0,17,17,51,19,1,0,7,192, + 0,31,240,0,63,248,0,120,60,0,112,28,0,240,30,0, + 224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,240, + 14,0,112,28,0,120,60,0,63,255,128,31,255,128,7,255, + 128,13,17,34,16,2,0,255,192,255,240,255,248,224,120,224, + 56,224,56,224,112,255,224,255,192,255,240,224,240,224,112,224, + 120,224,56,224,56,224,56,224,56,13,17,34,15,1,0,15, + 192,63,224,56,240,112,112,112,0,120,0,126,0,63,192,31, + 240,3,240,0,120,224,56,224,56,240,120,127,240,63,224,15, + 128,13,17,34,15,1,0,255,248,255,248,255,248,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,14,17,34,18,2,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,240,60,120,120,127,248,63,240,15, + 192,17,17,51,17,0,0,240,7,128,112,7,0,120,15,0, + 120,14,0,56,30,0,60,30,0,28,28,0,30,60,0,30, + 60,0,14,56,0,15,120,0,15,112,0,7,112,0,7,240, + 0,7,224,0,3,224,0,3,224,0,23,17,51,23,0,0, + 240,56,30,112,124,28,112,124,28,120,124,60,120,108,60,56, + 238,56,56,238,56,56,238,56,60,198,120,29,199,112,29,199, + 112,29,199,112,29,131,112,15,131,224,15,131,224,15,131,224, + 15,1,224,14,17,34,16,1,0,240,60,120,56,120,120,60, + 112,28,224,31,224,15,192,7,128,7,128,15,192,31,192,29, + 224,56,240,120,112,112,120,240,60,224,60,13,17,34,15,1, + 0,224,56,240,120,112,112,120,240,56,224,61,224,29,192,31, + 192,15,128,15,128,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,12,17,34,14,1,0,255,240,255,240,255,240,1, + 240,1,224,3,192,7,128,7,128,15,0,30,0,60,0,60, + 0,120,0,240,0,255,240,255,240,255,240,5,22,22,9,2, + 251,248,248,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,7,18,18,10,1,255,192,224,96, + 96,112,48,48,56,24,24,24,28,12,12,14,6,6,6,5, + 22,22,9,2,251,248,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,248,248,11,14,28,23,6, + 0,4,0,14,0,10,0,27,0,17,0,17,0,49,128,32, + 128,32,128,96,192,64,64,192,96,128,32,128,32,12,2,4, + 12,0,253,255,240,255,240,4,4,4,6,0,14,224,96,48, + 48,10,12,24,13,1,0,31,0,127,128,113,192,1,192,31, + 192,127,192,241,192,225,192,225,192,243,192,127,192,60,192,12, + 17,34,14,1,0,224,0,224,0,224,0,224,0,224,0,239, + 128,255,192,241,224,240,240,224,112,224,112,224,112,224,112,240, + 240,248,224,255,192,231,128,10,12,24,12,1,0,31,0,127, + 128,115,192,225,192,224,0,224,0,224,0,225,192,225,192,115, + 192,127,128,31,0,12,17,34,14,1,0,0,112,0,112,0, + 112,0,112,0,112,31,112,63,240,120,240,240,240,224,112,224, + 112,224,112,224,112,240,240,113,240,63,240,30,112,11,12,24, + 13,1,0,31,0,63,128,113,192,225,224,255,224,255,224,224, + 0,224,0,225,192,113,192,127,192,31,0,8,17,17,9,1, + 0,31,63,56,56,56,255,255,56,56,56,56,56,56,56,56, + 56,56,12,17,34,14,1,251,31,112,63,240,120,240,240,240, + 224,112,224,112,224,112,224,112,240,240,112,240,127,240,30,112, + 0,112,112,112,120,224,63,224,31,128,11,17,34,13,1,0, + 224,0,224,0,224,0,224,0,224,0,239,128,255,192,241,224, + 240,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,3,17,17,5,1,0,224,224,224,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,4,22,22,7,2,251,112, + 112,112,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,240,240,224,11,17,34,12,1,0,224,0,224,0,224, + 0,224,0,224,0,227,192,227,128,231,0,239,0,254,0,254, + 0,238,0,239,0,231,128,231,128,227,192,225,224,3,17,17, + 6,1,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,19,12,36,21,1,0,231,143,128,239,223,192, + 249,241,224,240,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,11,12, + 24,13,1,0,239,128,255,192,241,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,12,12,24,14, + 1,0,31,128,63,192,112,224,240,224,224,112,224,112,224,112, + 224,112,240,240,112,224,63,192,31,128,12,17,34,14,1,251, + 231,128,255,192,248,224,240,240,224,112,224,112,224,112,224,112, + 240,240,241,224,255,192,239,128,224,0,224,0,224,0,224,0, + 224,0,12,17,34,14,1,251,30,112,63,240,113,240,240,240, + 224,112,224,112,224,112,224,112,240,240,120,240,63,240,31,112, + 0,112,0,112,0,112,0,112,0,112,7,12,12,9,1,0, + 238,238,254,240,240,224,224,224,224,224,224,224,10,12,24,12, + 1,0,63,0,127,128,241,192,225,192,248,0,127,0,31,128, + 3,192,225,192,227,192,127,128,63,0,8,15,15,10,1,0, + 24,56,56,255,255,56,56,56,56,56,56,56,60,63,15,11, + 12,24,13,1,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,241,224,127,224,62,224,12,12,24, + 13,0,0,240,112,112,240,112,224,120,224,56,224,57,192,29, + 192,29,192,31,128,15,128,15,128,15,0,19,12,36,20,0, + 0,240,240,224,112,240,224,113,240,224,113,249,192,57,249,192, + 59,185,192,59,159,192,63,159,128,31,31,128,31,15,128,31, + 15,0,15,15,0,11,12,24,13,1,0,241,224,113,192,123, + 128,63,128,31,0,30,0,31,0,63,128,123,128,115,192,241, + 192,225,224,12,17,34,12,0,251,240,112,112,240,120,224,56, + 224,57,224,61,192,29,192,29,192,31,128,15,128,15,128,7, + 0,7,0,15,0,14,0,14,0,30,0,10,12,24,12,1, + 0,255,128,255,128,7,128,7,0,14,0,30,0,60,0,56, + 0,112,0,224,0,255,192,255,192,9,23,46,12,2,250,7, + 128,15,128,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,60,0,248,0,224,0,248,0,60,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,15,128,7,128,2,25,25, + 8,3,250,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,23,23,12, + 2,250,224,240,56,56,56,56,56,56,56,28,31,7,31,28, + 56,56,56,56,56,56,56,248,224,12,3,6,12,0,5,60, + 48,127,240,227,192,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,7,0,0,3,17,17,9, + 3,251,224,224,224,0,0,224,224,224,224,224,224,224,224,224, + 224,224,224,10,18,36,13,1,253,1,0,1,0,3,0,31, + 0,127,128,115,192,231,192,228,0,228,0,236,0,233,192,233, + 192,123,192,127,128,31,0,16,0,48,0,32,0,11,17,34, + 13,1,0,15,128,31,224,56,224,56,224,56,0,56,0,255, + 0,255,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,255,224,255,224,11,12,24,13,1,4,128,32,95,64,113, + 128,96,128,64,64,64,64,64,64,64,64,96,192,49,128,95, + 64,128,32,13,17,34,15,1,0,224,120,240,120,112,112,120, + 240,56,224,253,248,253,248,31,192,15,128,255,248,255,248,7, + 0,7,0,7,0,7,0,7,0,7,0,1,22,22,8,4, + 251,128,128,128,128,128,128,128,128,128,0,0,0,0,128,128, + 128,128,128,128,128,128,128,9,21,42,11,1,252,63,0,127, + 0,241,0,224,0,224,0,120,0,62,0,63,0,119,128,227, + 128,227,128,231,128,255,0,126,0,31,0,7,128,3,128,3, + 128,135,128,255,0,124,0,8,3,3,8,0,15,231,231,231, + 17,17,51,19,1,0,3,224,0,15,248,0,60,30,0,51, + 230,0,103,243,0,103,59,0,206,57,128,206,1,128,206,1, + 128,206,1,128,206,57,128,78,57,0,103,243,0,51,230,0, + 56,14,0,15,248,0,3,224,0,8,11,11,10,1,6,60, + 102,6,126,230,198,198,126,0,0,255,11,9,18,14,1,1, + 60,224,56,224,121,224,113,192,243,192,113,192,121,224,56,224, + 60,224,12,5,10,14,1,5,255,240,0,16,0,16,0,16, + 0,16,255,17,17,51,19,1,0,3,224,0,15,248,0,60, + 30,0,55,246,0,103,251,0,102,27,0,198,25,128,199,241, + 128,199,241,128,198,57,128,198,25,128,70,25,0,102,27,0, + 48,6,0,56,14,0,15,248,0,3,224,0,7,2,2,7, + 0,15,254,254,5,5,5,7,1,12,112,136,136,136,112,14, + 14,28,24,5,0,2,0,2,0,2,0,2,0,255,252,255, + 252,2,0,2,0,2,0,2,0,0,0,0,0,255,252,255, + 252,7,9,9,9,1,8,124,230,6,14,28,56,224,254,254, + 7,9,9,9,1,8,124,206,6,14,56,14,6,206,124,5, + 4,4,5,1,14,56,112,96,192,255,11,20,40,14,2,253, + 63,224,125,128,253,128,253,128,253,128,253,128,253,128,125,128, + 13,128,13,128,13,128,13,128,13,128,13,128,13,128,13,128, + 13,128,13,128,13,128,13,128,3,3,3,7,2,6,224,224, + 224,6,5,5,6,1,251,32,56,12,12,248,4,9,9,6, + 1,8,48,240,176,48,48,48,48,48,48,8,11,11,10,1, + 6,60,102,195,195,195,195,231,126,60,0,255,12,9,18,14, + 1,1,227,128,113,192,121,224,56,224,60,240,56,224,121,224, + 113,192,227,128,16,17,34,18,1,0,48,24,240,24,176,48, + 48,112,48,96,48,224,48,192,49,128,49,142,3,14,3,30, + 6,54,14,54,12,102,24,127,24,6,48,6,16,17,34,18, + 1,0,48,24,240,48,176,48,48,96,48,224,48,192,49,192, + 49,128,51,62,3,119,6,3,6,7,12,14,28,28,24,112, + 48,127,48,127,17,17,51,19,1,0,124,6,0,198,12,0, + 6,12,0,56,24,0,14,56,0,6,48,0,206,112,0,124, + 96,0,0,199,0,1,199,0,1,143,0,3,155,0,3,27, + 0,7,51,0,6,63,128,12,3,0,28,3,0,10,17,34, + 12,1,251,14,0,14,0,0,0,0,0,14,0,14,0,14, + 0,28,0,56,0,112,0,240,0,224,0,224,128,224,192,115, + 192,127,128,31,0,16,24,48,16,0,0,14,0,7,0,3, + 0,3,128,1,128,0,0,0,0,3,192,3,192,3,224,7, + 224,7,240,15,112,14,112,14,120,30,56,28,56,28,60,63, + 252,63,252,127,254,120,14,112,15,240,7,16,24,48,16,0, + 0,0,112,0,96,0,224,0,192,1,128,0,0,0,0,3, + 192,3,192,3,224,7,224,7,240,15,112,14,112,14,120,30, + 56,28,56,28,60,63,252,63,252,127,254,120,14,112,15,240, + 7,16,24,48,16,0,0,1,192,3,192,3,224,6,96,4, + 48,0,0,0,0,3,192,3,192,3,224,7,224,7,240,15, + 112,14,112,14,120,30,56,28,56,28,60,63,252,63,252,127, + 254,120,14,112,15,240,7,16,23,46,16,0,0,0,16,7, + 240,7,224,0,0,0,0,0,0,3,192,3,192,3,224,7, + 224,7,240,15,112,14,112,14,120,30,56,28,56,28,60,63, + 252,63,252,127,254,120,14,112,15,240,7,16,23,46,17,0, + 0,14,112,14,112,14,112,0,0,0,0,0,0,3,192,3, + 192,7,224,7,224,7,224,15,112,14,112,30,120,30,56,28, + 56,60,60,63,252,127,254,127,254,112,14,240,15,224,7,15, + 25,50,16,1,0,3,128,6,192,4,64,4,64,4,192,3, + 128,0,0,0,0,3,128,7,192,7,192,15,192,14,224,14, + 224,30,224,28,112,28,112,60,112,56,120,63,248,127,252,127, + 252,112,28,240,30,224,14,21,17,51,23,1,0,0,255,248, + 0,255,248,1,248,0,1,248,0,3,184,0,3,184,0,7, + 56,0,7,63,248,14,63,248,14,56,0,30,56,0,31,248, + 0,63,248,0,120,56,0,112,56,0,240,63,248,224,63,248, + 14,22,44,16,1,251,15,192,31,240,63,248,120,56,112,60, + 240,28,224,0,224,0,224,0,224,0,224,0,224,0,112,28, + 112,60,56,120,31,240,15,192,3,0,3,192,0,96,0,96, + 7,192,11,24,48,15,2,0,56,0,24,0,28,0,12,0, + 6,0,0,0,0,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,255,224,255,224,255,224,11,24,48,15,2,0,3,128, + 3,0,7,0,6,0,12,0,0,0,0,0,255,224,255,224, + 255,224,224,0,224,0,224,0,224,0,255,224,255,224,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,255,224,11,24, + 48,15,2,0,14,0,31,0,27,0,59,128,49,128,0,0, + 0,0,255,224,255,224,255,224,224,0,224,0,224,0,224,0, + 255,224,255,224,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,255,224,11,23,46,15,2,0,59,128,59,128,59,128, + 0,0,0,0,0,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,255,224,255,224,255,224,5,24,24,7,0,0,224,224, + 96,48,16,0,0,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,5,24,24,5,1,0,56,48,112,96, + 192,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,7,24,24,7,0,0,56,56,108,108,198,0, + 0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,8,23,23,8,0,0,231,231,231,0,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,15, + 17,34,16,0,0,63,192,63,240,63,248,56,60,56,28,56, + 30,56,14,56,14,255,14,255,14,56,14,56,30,56,28,56, + 60,63,248,63,240,63,192,14,23,46,18,2,0,0,32,15, + 192,15,192,0,0,0,0,0,0,248,28,248,28,252,28,252, + 28,238,28,238,28,231,28,231,28,231,156,227,156,227,220,225, + 220,225,220,224,252,224,252,224,124,224,124,15,24,48,17,1, + 0,28,0,14,0,6,0,3,0,1,0,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,240,30,224,14,224,14,224, + 14,224,14,224,14,240,14,112,28,120,60,63,248,31,240,7, + 224,15,24,48,17,1,0,0,112,0,224,0,192,1,128,1, + 0,0,0,0,0,7,192,31,240,63,248,120,60,112,28,240, + 30,224,14,224,14,224,14,224,14,224,14,240,14,112,28,120, + 60,63,248,31,240,7,224,15,24,48,17,1,0,3,128,7, + 192,6,192,12,96,8,32,0,0,0,0,7,192,31,240,63, + 248,120,60,112,28,240,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,60,63,248,31,240,7,224,15,23,46, + 17,1,0,7,32,15,224,8,192,0,0,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,120,60,63,248,31,240,7, + 224,15,23,46,17,1,0,14,112,14,112,14,112,0,0,0, + 0,0,0,7,192,31,240,63,248,120,60,112,28,240,30,224, + 14,224,14,224,14,224,14,224,14,240,14,112,28,120,60,63, + 248,31,240,7,224,13,12,24,23,5,1,192,24,96,48,48, + 96,24,192,13,128,7,0,7,0,13,128,24,192,48,96,96, + 48,192,24,17,19,57,17,0,255,0,1,0,3,241,128,15, + 251,0,31,254,0,60,30,0,56,30,0,120,63,0,112,119, + 0,112,231,0,113,199,0,115,135,0,119,7,0,126,7,0, + 60,14,0,60,30,0,63,252,0,111,248,0,227,224,0,64, + 0,0,14,24,48,18,2,0,28,0,12,0,14,0,6,0, + 3,0,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,56,127,248,63,240,15,192,14,24,48,18,2,0,0,224, + 0,192,1,192,1,128,3,0,0,0,0,0,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,240,60,112,56,127,248,63,240,15,192,14,24, + 48,18,2,0,7,128,7,128,15,192,12,192,24,96,0,0, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,240,60,112,56,127,248, + 63,240,15,192,14,23,46,16,1,0,28,224,28,224,28,224, + 0,0,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 120,120,127,248,63,240,15,192,13,23,46,15,1,0,1,192, + 1,128,3,0,2,0,0,0,0,0,224,56,240,120,112,112, + 120,240,56,224,61,224,29,192,31,192,15,128,15,128,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,12,17,34,15, + 1,0,224,0,224,0,224,0,255,128,255,224,255,224,224,240, + 224,112,224,112,224,240,255,224,255,224,255,128,224,0,224,0, + 224,0,224,0,12,17,34,14,1,0,63,0,127,128,241,192, + 225,192,225,192,227,128,231,0,238,0,238,0,239,128,231,192, + 225,224,224,112,238,112,238,112,239,224,231,192,10,19,38,13, + 1,0,112,0,56,0,24,0,12,0,4,0,0,0,0,0, + 31,0,127,128,113,192,1,192,31,192,127,192,241,192,225,192, + 225,192,243,192,127,192,60,192,10,19,38,13,1,0,3,128, + 3,0,6,0,6,0,12,0,0,0,0,0,31,0,127,128, + 113,192,1,192,31,192,127,192,241,192,225,192,225,192,243,192, + 127,192,60,192,10,19,38,13,1,0,14,0,30,0,27,0, + 51,0,33,128,0,0,0,0,31,0,127,128,113,192,1,192, + 31,192,127,192,241,192,225,192,225,192,243,192,127,192,60,192, + 10,17,34,13,1,0,31,128,63,0,0,0,0,0,0,0, + 31,0,127,128,113,192,1,192,31,192,127,192,241,192,225,192, + 225,192,243,192,127,192,60,192,10,18,36,13,1,0,115,128, + 115,128,115,128,0,0,0,0,0,0,63,0,127,128,241,192, + 1,192,31,192,127,192,241,192,225,192,225,192,243,192,127,192, + 60,192,10,20,40,13,1,0,14,0,27,0,17,0,19,0, + 31,0,14,0,0,0,0,0,31,0,127,128,113,192,1,192, + 31,192,127,192,241,192,225,192,225,192,243,192,127,192,60,192, + 18,12,36,20,1,0,31,31,0,127,191,128,113,243,128,0, + 225,192,31,255,192,127,255,192,240,224,0,224,224,0,224,225, + 192,241,243,192,127,63,128,62,31,0,10,17,34,12,1,251, + 31,0,127,128,115,192,225,192,224,0,224,0,224,0,224,0, + 225,192,115,192,127,128,63,0,8,0,14,0,3,0,3,0, + 30,0,11,19,38,13,1,0,112,0,56,0,24,0,12,0, + 4,0,0,0,0,0,31,0,63,128,113,192,225,224,255,224, + 255,224,224,0,224,0,225,192,113,192,127,192,31,0,11,19, + 38,13,1,0,3,128,3,0,7,0,6,0,12,0,0,0, + 0,0,31,0,63,128,113,192,225,224,255,224,255,224,224,0, + 224,0,225,192,113,192,127,192,31,0,11,19,38,13,1,0, + 14,0,31,0,27,0,49,128,33,128,0,0,0,0,31,0, + 63,128,113,192,225,224,255,224,255,224,224,0,224,0,225,192, + 113,192,127,192,31,0,11,18,36,13,1,0,115,128,115,128, + 115,128,0,0,0,0,0,0,31,0,63,128,115,192,225,192, + 255,224,255,224,224,0,224,0,225,192,115,192,127,128,31,0, + 5,18,18,6,255,0,224,112,48,24,0,0,56,56,56,56, + 56,56,56,56,56,56,56,56,4,18,18,5,1,0,112,96, + 224,192,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 7,18,18,6,255,0,56,124,108,198,0,0,56,56,56,56, + 56,56,56,56,56,56,56,56,8,18,18,7,255,0,231,231, + 231,0,0,0,56,56,56,56,56,56,56,56,56,56,56,56, + 12,17,34,14,1,0,28,96,15,192,15,128,59,128,33,192, + 31,224,63,224,112,224,240,240,224,112,224,112,224,112,224,112, + 240,240,112,224,63,192,31,128,11,17,34,13,1,0,31,128, + 63,0,0,0,0,0,0,0,239,128,255,192,241,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 12,19,38,14,1,0,56,0,28,0,12,0,6,0,6,0, + 0,0,0,0,31,128,63,192,112,224,240,224,224,112,224,112, + 224,112,224,112,240,240,112,224,63,192,31,128,12,19,38,14, + 1,0,1,192,3,128,3,0,6,0,4,0,0,0,0,0, + 31,128,63,192,112,224,240,224,224,112,224,112,224,112,224,112, + 240,240,112,224,63,192,31,128,12,19,38,14,1,0,15,0, + 15,0,31,128,25,128,48,192,0,0,0,0,31,128,63,192, + 112,224,240,224,224,112,224,112,224,112,224,112,240,240,112,224, + 63,192,31,128,12,17,34,14,1,0,31,192,63,128,0,0, + 0,0,0,0,31,128,63,192,112,224,240,224,224,112,224,112, + 224,112,224,112,240,240,112,224,63,192,31,128,12,18,36,14, + 1,0,57,192,57,192,57,192,0,0,0,0,0,0,31,128, + 63,192,112,224,240,224,224,112,224,112,224,112,224,112,240,240, + 112,224,63,192,31,128,14,10,20,24,5,2,7,0,7,0, + 6,0,0,0,255,252,255,252,0,0,2,0,7,0,7,0, + 12,15,30,14,1,254,0,32,0,48,31,224,63,192,113,224, + 241,240,227,112,230,112,236,112,248,112,248,240,112,224,127,192, + 223,128,192,0,11,19,38,13,1,0,112,0,56,0,28,0, + 12,0,6,0,0,0,0,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,241,224,127,224,62,224, + 11,19,38,13,1,0,3,128,3,128,7,0,6,0,12,0, + 0,0,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,241,224,127,224,62,224,11,19,38,13, + 1,0,14,0,31,0,27,0,49,128,32,128,0,0,0,0, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,241,224,127,224,62,224,11,18,36,13,1,0,115,128, + 115,128,115,128,0,0,0,0,0,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,241,224,127,224, + 62,224,11,23,46,13,1,251,1,128,3,128,3,0,6,0, + 0,0,0,0,224,224,224,224,241,224,113,192,121,192,59,192, + 59,128,63,128,31,128,31,0,31,0,15,0,14,0,14,0, + 254,0,252,0,120,0,12,22,44,15,2,251,224,0,224,0, + 224,0,224,0,224,0,239,128,255,192,248,224,240,240,224,112, + 224,112,224,112,224,112,240,240,241,224,255,192,239,128,224,0, + 224,0,224,0,224,0,224,0,12,22,44,14,1,251,57,192, + 57,192,57,192,0,0,0,0,240,112,240,240,112,240,120,224, + 121,224,57,192,61,192,31,192,31,128,31,128,15,128,15,0, + 15,0,15,0,14,0,30,0,28,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 17 + Calculated Max Values w=14 h=18 x= 5 y= 8 dx=24 dy= 0 ascent=17 len=34 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =17 descent= 0 + X Font ascent =17 descent= 0 + Max Font ascent =17 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17n[512] U8G_SECTION(".progmem.u8g_font_fub17n") = { + 0,34,31,254,250,17,0,0,0,0,42,57,0,17,253,17, + 0,9,9,18,15,3,8,54,0,54,0,54,0,156,128,255, + 128,156,128,54,0,54,0,54,0,14,14,28,24,5,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,252,255,252,2, + 0,2,0,2,0,2,0,2,0,2,0,5,6,6,7,1, + 253,56,112,112,96,96,224,6,3,3,8,1,4,252,252,252, + 3,3,3,7,2,0,224,224,224,8,18,18,10,1,255,7, + 6,6,14,12,12,12,28,24,24,56,48,48,48,112,96,96, + 224,11,17,34,13,1,0,31,0,63,128,113,192,112,192,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,112,192,113,192,63,128,31,0,7,17,17,13,2,0,14, + 62,254,254,206,14,14,14,14,14,14,14,14,14,14,14,14, + 12,17,34,13,1,0,15,128,63,224,120,224,112,112,0,112, + 0,112,0,240,1,224,3,224,7,192,15,128,30,0,60,0, + 248,0,255,240,255,240,255,240,11,17,34,13,1,0,31,0, + 127,192,241,224,224,224,0,224,0,224,1,192,15,128,15,128, + 1,192,0,224,0,224,224,224,241,224,255,192,127,128,31,0, + 12,17,34,13,1,0,3,192,7,192,7,192,15,192,29,192, + 29,192,57,192,113,192,113,192,225,192,255,240,255,240,255,240, + 1,192,1,192,1,192,1,192,11,17,34,13,1,0,255,192, + 255,192,255,192,224,0,224,0,224,0,239,128,255,192,241,224, + 224,224,0,224,0,224,224,224,225,224,255,192,127,128,63,0, + 11,17,34,13,1,0,15,0,63,192,57,224,112,224,96,0, + 224,0,239,128,255,192,241,224,224,224,224,224,224,224,224,224, + 96,224,113,192,63,128,31,0,11,17,34,13,1,0,255,224, + 255,224,255,224,0,224,1,224,1,192,3,192,3,128,7,128, + 7,128,7,0,15,0,14,0,30,0,28,0,60,0,60,0, + 11,17,34,13,1,0,31,0,127,192,241,224,224,224,224,224, + 224,224,113,192,63,128,63,128,113,192,224,224,224,224,224,224, + 224,224,241,224,127,192,31,0,11,17,34,13,1,0,31,0, + 63,128,113,192,224,192,224,224,224,224,224,224,241,224,127,224, + 62,224,0,224,0,224,224,224,225,192,113,192,127,128,30,0 + }; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=25 x= 6 y=14 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17r[3222] U8G_SECTION(".progmem.u8g_font_fub17r") = { + 0,34,31,254,250,17,4,8,8,209,32,127,251,19,250,17, + 251,0,0,0,7,0,0,3,17,17,9,3,0,224,224,224, + 224,224,224,224,224,224,224,224,224,0,0,224,224,224,8,7, + 7,12,2,10,231,231,231,231,231,231,231,14,17,34,16,1, + 0,3,24,7,24,6,56,6,48,63,252,63,252,12,96,12, + 96,28,96,24,224,255,248,255,240,57,192,49,128,49,128,113, + 128,99,128,12,21,42,14,1,253,2,0,15,128,63,192,127, + 224,242,224,226,224,226,0,250,0,126,0,63,192,15,224,3, + 240,2,240,226,112,226,112,242,240,127,224,63,192,15,0,2, + 0,2,0,21,17,51,23,1,0,62,3,0,127,7,0,99, + 6,0,193,142,0,193,140,0,193,152,0,193,184,0,99,48, + 128,127,119,224,62,102,48,0,236,24,0,204,24,1,204,24, + 1,140,24,3,14,56,7,7,240,6,3,224,16,17,34,18, + 1,0,31,128,63,192,121,224,112,224,113,224,57,192,63,128, + 31,0,63,30,119,156,243,220,225,252,224,252,224,120,120,124, + 127,254,31,207,3,7,7,9,3,10,224,224,224,224,224,224, + 96,5,20,20,9,2,253,56,56,112,112,112,240,224,224,224, + 224,224,224,224,224,240,112,112,112,48,56,5,20,20,9,2, + 253,224,96,112,112,112,56,56,56,56,56,56,56,56,56,56, + 112,112,112,96,224,9,9,18,15,3,8,54,0,54,0,54, + 0,156,128,255,128,156,128,54,0,54,0,54,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,255,252,2,0,2,0,2,0,2,0,2,0,2,0,5, + 6,6,7,1,253,56,112,112,96,96,224,6,3,3,8,1, + 4,252,252,252,3,3,3,7,2,0,224,224,224,8,18,18, + 10,1,255,7,6,6,14,12,12,12,28,24,24,56,48,48, + 48,112,96,96,224,11,17,34,13,1,0,31,0,63,128,113, + 192,112,192,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,112,192,113,192,63,128,31,0,7,17,17, + 13,2,0,14,62,254,254,206,14,14,14,14,14,14,14,14, + 14,14,14,14,12,17,34,13,1,0,15,128,63,224,120,224, + 112,112,0,112,0,112,0,240,1,224,3,224,7,192,15,128, + 30,0,60,0,248,0,255,240,255,240,255,240,11,17,34,13, + 1,0,31,0,127,192,241,224,224,224,0,224,0,224,1,192, + 15,128,15,128,1,192,0,224,0,224,224,224,241,224,255,192, + 127,128,31,0,12,17,34,13,1,0,3,192,7,192,7,192, + 15,192,29,192,29,192,57,192,113,192,113,192,225,192,255,240, + 255,240,255,240,1,192,1,192,1,192,1,192,11,17,34,13, + 1,0,255,192,255,192,255,192,224,0,224,0,224,0,239,128, + 255,192,241,224,224,224,0,224,0,224,224,224,225,224,255,192, + 127,128,63,0,11,17,34,13,1,0,15,0,63,192,57,224, + 112,224,96,0,224,0,239,128,255,192,241,224,224,224,224,224, + 224,224,224,224,96,224,113,192,63,128,31,0,11,17,34,13, + 1,0,255,224,255,224,255,224,0,224,1,224,1,192,3,192, + 3,128,7,128,7,128,7,0,15,0,14,0,30,0,28,0, + 60,0,60,0,11,17,34,13,1,0,31,0,127,192,241,224, + 224,224,224,224,224,224,113,192,63,128,63,128,113,192,224,224, + 224,224,224,224,224,224,241,224,127,192,31,0,11,17,34,13, + 1,0,31,0,63,128,113,192,224,192,224,224,224,224,224,224, + 241,224,127,224,62,224,0,224,0,224,224,224,225,192,113,192, + 127,128,30,0,3,12,12,7,3,0,224,224,224,0,0,0, + 0,0,0,224,224,224,5,14,14,8,1,254,56,56,56,0, + 0,0,0,0,56,56,112,112,96,224,14,12,24,24,5,1, + 0,12,0,60,1,224,7,0,60,0,224,0,224,0,60,0, + 7,0,1,224,0,60,0,12,14,6,12,24,5,4,255,252, + 255,252,0,0,0,0,255,252,255,252,14,12,24,24,5,1, + 192,0,240,0,30,0,3,128,0,240,0,28,0,28,0,240, + 3,128,30,0,240,0,192,0,10,17,34,12,1,0,62,0, + 127,128,227,128,193,192,1,192,1,192,3,128,7,128,14,0, + 28,0,24,0,24,0,24,0,0,0,0,0,24,0,24,0, + 22,22,66,24,1,251,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,240,120,247,120,121,255,56,113,207,60,243,135, + 28,227,135,28,227,135,28,227,135,28,227,135,28,227,207,56, + 241,255,248,113,251,240,120,113,224,60,0,0,31,0,0,15, + 255,0,7,255,0,0,255,0,16,17,34,16,0,0,3,192, + 3,192,3,224,7,224,7,240,15,112,14,112,14,120,30,56, + 28,56,28,60,63,252,63,252,127,254,120,14,112,15,240,7, + 12,17,34,15,2,0,255,192,255,224,255,240,224,240,224,112, + 224,112,224,224,255,192,255,192,224,224,224,112,224,112,224,112, + 224,240,255,240,255,224,255,128,14,17,34,16,1,0,15,192, + 31,240,63,248,120,120,112,60,240,60,224,0,224,0,224,0, + 224,0,224,0,224,0,112,60,112,60,56,120,31,240,15,192, + 14,17,34,17,2,0,255,0,255,224,255,240,224,248,224,56, + 224,60,224,28,224,28,224,28,224,28,224,28,224,60,224,56, + 224,248,255,240,255,224,255,128,11,17,34,15,2,0,255,224, + 255,224,255,224,224,0,224,0,224,0,224,0,255,224,255,224, + 224,0,224,0,224,0,224,0,224,0,255,224,255,224,255,224, + 11,17,34,14,2,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,192,255,192,255,192,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,15,17,34,18,1,0,7,224, + 31,248,63,252,124,30,112,14,240,14,224,0,224,0,224,254, + 224,254,224,254,240,14,112,14,124,14,63,254,31,254,3,248, + 13,17,34,17,2,0,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,255,248,255,248,255,248,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,3,17,17,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 17,34,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,224,224,224,224,240, + 224,255,192,127,192,63,0,13,17,34,16,2,0,224,240,224, + 224,225,224,227,192,231,128,239,0,239,0,254,0,254,0,239, + 0,231,128,231,128,227,192,225,224,225,240,224,240,224,120,11, + 17,34,14,2,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,224,255,224,255,224,18,17,51,22,2,0,252,7,192, + 252,15,192,252,15,192,252,15,192,238,31,192,238,29,192,238, + 29,192,231,61,192,231,57,192,231,57,192,231,185,192,227,241, + 192,227,241,192,227,241,192,225,241,192,225,225,192,225,225,192, + 14,17,34,18,2,0,248,28,248,28,252,28,252,28,238,28, + 238,28,231,28,231,28,231,156,227,156,227,220,225,220,225,220, + 224,252,224,252,224,124,224,124,15,17,34,17,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,240,14,112,28,120,60,63,248,31,240,7,224, + 12,17,34,15,2,0,255,128,255,192,255,224,224,240,224,112, + 224,112,224,112,224,240,255,224,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,224,0,17,17,51,19,1,0,7,192, + 0,31,240,0,63,248,0,120,60,0,112,28,0,240,30,0, + 224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,240, + 14,0,112,28,0,120,60,0,63,255,128,31,255,128,7,255, + 128,13,17,34,16,2,0,255,192,255,240,255,248,224,120,224, + 56,224,56,224,112,255,224,255,192,255,240,224,240,224,112,224, + 120,224,56,224,56,224,56,224,56,13,17,34,15,1,0,15, + 192,63,224,56,240,112,112,112,0,120,0,126,0,63,192,31, + 240,3,240,0,120,224,56,224,56,240,120,127,240,63,224,15, + 128,13,17,34,15,1,0,255,248,255,248,255,248,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,14,17,34,18,2,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,240,60,120,120,127,248,63,240,15, + 192,17,17,51,17,0,0,240,7,128,112,7,0,120,15,0, + 120,14,0,56,30,0,60,30,0,28,28,0,30,60,0,30, + 60,0,14,56,0,15,120,0,15,112,0,7,112,0,7,240, + 0,7,224,0,3,224,0,3,224,0,23,17,51,23,0,0, + 240,56,30,112,124,28,112,124,28,120,124,60,120,108,60,56, + 238,56,56,238,56,56,238,56,60,198,120,29,199,112,29,199, + 112,29,199,112,29,131,112,15,131,224,15,131,224,15,131,224, + 15,1,224,14,17,34,16,1,0,240,60,120,56,120,120,60, + 112,28,224,31,224,15,192,7,128,7,128,15,192,31,192,29, + 224,56,240,120,112,112,120,240,60,224,60,13,17,34,15,1, + 0,224,56,240,120,112,112,120,240,56,224,61,224,29,192,31, + 192,15,128,15,128,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,12,17,34,14,1,0,255,240,255,240,255,240,1, + 240,1,224,3,192,7,128,7,128,15,0,30,0,60,0,60, + 0,120,0,240,0,255,240,255,240,255,240,5,22,22,9,2, + 251,248,248,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,7,18,18,10,1,255,192,224,96, + 96,112,48,48,56,24,24,24,28,12,12,14,6,6,6,5, + 22,22,9,2,251,248,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,248,248,11,14,28,23,6, + 0,4,0,14,0,10,0,27,0,17,0,17,0,49,128,32, + 128,32,128,96,192,64,64,192,96,128,32,128,32,12,2,4, + 12,0,253,255,240,255,240,4,4,4,6,0,14,224,96,48, + 48,10,12,24,13,1,0,31,0,127,128,113,192,1,192,31, + 192,127,192,241,192,225,192,225,192,243,192,127,192,60,192,12, + 17,34,14,1,0,224,0,224,0,224,0,224,0,224,0,239, + 128,255,192,241,224,240,240,224,112,224,112,224,112,224,112,240, + 240,248,224,255,192,231,128,10,12,24,12,1,0,31,0,127, + 128,115,192,225,192,224,0,224,0,224,0,225,192,225,192,115, + 192,127,128,31,0,12,17,34,14,1,0,0,112,0,112,0, + 112,0,112,0,112,31,112,63,240,120,240,240,240,224,112,224, + 112,224,112,224,112,240,240,113,240,63,240,30,112,11,12,24, + 13,1,0,31,0,63,128,113,192,225,224,255,224,255,224,224, + 0,224,0,225,192,113,192,127,192,31,0,8,17,17,9,1, + 0,31,63,56,56,56,255,255,56,56,56,56,56,56,56,56, + 56,56,12,17,34,14,1,251,31,112,63,240,120,240,240,240, + 224,112,224,112,224,112,224,112,240,240,112,240,127,240,30,112, + 0,112,112,112,120,224,63,224,31,128,11,17,34,13,1,0, + 224,0,224,0,224,0,224,0,224,0,239,128,255,192,241,224, + 240,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,3,17,17,5,1,0,224,224,224,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,4,22,22,7,2,251,112, + 112,112,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,240,240,224,11,17,34,12,1,0,224,0,224,0,224, + 0,224,0,224,0,227,192,227,128,231,0,239,0,254,0,254, + 0,238,0,239,0,231,128,231,128,227,192,225,224,3,17,17, + 6,1,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,19,12,36,21,1,0,231,143,128,239,223,192, + 249,241,224,240,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,11,12, + 24,13,1,0,239,128,255,192,241,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,12,12,24,14, + 1,0,31,128,63,192,112,224,240,224,224,112,224,112,224,112, + 224,112,240,240,112,224,63,192,31,128,12,17,34,14,1,251, + 231,128,255,192,248,224,240,240,224,112,224,112,224,112,224,112, + 240,240,241,224,255,192,239,128,224,0,224,0,224,0,224,0, + 224,0,12,17,34,14,1,251,30,112,63,240,113,240,240,240, + 224,112,224,112,224,112,224,112,240,240,120,240,63,240,31,112, + 0,112,0,112,0,112,0,112,0,112,7,12,12,9,1,0, + 238,238,254,240,240,224,224,224,224,224,224,224,10,12,24,12, + 1,0,63,0,127,128,241,192,225,192,248,0,127,0,31,128, + 3,192,225,192,227,192,127,128,63,0,8,15,15,10,1,0, + 24,56,56,255,255,56,56,56,56,56,56,56,60,63,15,11, + 12,24,13,1,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,241,224,127,224,62,224,12,12,24, + 13,0,0,240,112,112,240,112,224,120,224,56,224,57,192,29, + 192,29,192,31,128,15,128,15,128,15,0,19,12,36,20,0, + 0,240,240,224,112,240,224,113,240,224,113,249,192,57,249,192, + 59,185,192,59,159,192,63,159,128,31,31,128,31,15,128,31, + 15,0,15,15,0,11,12,24,13,1,0,241,224,113,192,123, + 128,63,128,31,0,30,0,31,0,63,128,123,128,115,192,241, + 192,225,224,12,17,34,12,0,251,240,112,112,240,120,224,56, + 224,57,224,61,192,29,192,29,192,31,128,15,128,15,128,7, + 0,7,0,15,0,14,0,14,0,30,0,10,12,24,12,1, + 0,255,128,255,128,7,128,7,0,14,0,30,0,60,0,56, + 0,112,0,224,0,255,192,255,192,9,23,46,12,2,250,7, + 128,15,128,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,60,0,248,0,224,0,248,0,60,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,15,128,7,128,2,25,25, + 8,3,250,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,23,23,12, + 2,250,224,240,56,56,56,56,56,56,56,28,31,7,31,28, + 56,56,56,56,56,56,56,248,224,12,3,6,12,0,5,60, + 48,127,240,227,192,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=27 h=29 x= 7 y=18 dx=28 dy= 0 ascent=29 len=100 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =29 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20[8916] U8G_SECTION(".progmem.u8g_font_fub20") = { + 0,40,36,254,249,20,4,242,11,37,32,255,251,29,249,20, + 251,0,0,0,8,0,0,4,20,20,11,4,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,0,0,0,240,240, + 240,10,8,16,14,2,12,243,192,243,192,243,192,243,192,243, + 192,225,192,225,192,97,128,17,20,60,19,1,0,1,199,0, + 1,134,0,3,142,0,3,142,0,3,142,0,31,255,128,63, + 255,128,7,28,0,6,24,0,14,56,0,14,56,0,14,48, + 0,127,254,0,255,254,0,28,112,0,24,96,0,56,224,0, + 56,224,0,56,224,0,49,192,0,14,24,48,16,1,253,1, + 0,7,192,31,240,63,248,125,120,113,60,241,60,241,0,253, + 0,127,0,63,224,31,240,3,248,1,124,1,60,241,60,241, + 60,249,60,127,248,63,240,31,224,1,0,1,0,1,0,25, + 20,80,27,1,0,31,0,96,0,63,128,224,0,123,192,192, + 0,225,193,192,0,224,227,128,0,224,227,0,0,224,231,0, + 0,224,230,0,0,113,206,0,0,127,204,124,0,63,28,254, + 0,0,57,199,0,0,59,131,0,0,115,131,128,0,99,131, + 128,0,227,131,128,1,195,135,128,1,193,239,0,3,128,254, + 0,3,128,124,0,19,20,60,21,1,0,15,192,0,31,240, + 0,60,240,0,120,120,0,120,120,0,120,112,0,60,240,0, + 63,224,0,31,192,0,31,128,0,63,135,128,123,199,128,249, + 231,128,240,247,0,240,127,0,240,63,0,240,30,0,124,127, + 0,63,255,128,15,227,224,4,8,8,11,4,12,240,224,224, + 224,224,224,224,224,6,24,24,10,2,252,28,56,56,120,120, + 112,112,240,240,240,240,240,240,240,240,240,240,112,112,120,120, + 56,56,28,6,24,24,11,3,252,224,240,112,112,120,120,120, + 56,56,60,60,60,60,60,60,56,56,120,120,120,112,112,240, + 224,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128,4,14,14,9,4,0,240,240,240, + 240,0,0,0,0,0,0,240,240,240,240,6,17,17,8,1, + 253,60,60,60,60,0,0,0,0,0,0,60,56,120,112,112, + 224,224,16,14,28,26,5,1,0,3,0,31,0,120,3,192, + 15,0,120,0,224,0,224,0,60,0,7,128,1,224,0,60, + 0,15,0,1,16,7,14,26,5,5,255,255,255,255,0,0, + 0,0,0,0,255,255,255,255,16,14,28,26,5,1,192,0, + 248,0,30,0,3,192,0,240,0,30,0,7,0,7,0,60, + 1,224,7,128,60,0,240,0,128,0,13,20,40,15,1,0, + 31,128,63,224,121,240,240,112,32,120,0,120,0,112,0,240, + 1,224,3,192,7,128,14,0,14,0,14,0,14,0,0,0, + 0,0,15,0,15,0,15,0,26,25,100,28,1,251,0,63, + 128,0,1,255,240,0,7,255,252,0,15,224,254,0,31,0, + 31,0,62,0,15,0,60,61,231,128,120,255,231,128,121,247, + 227,192,241,225,227,192,241,193,227,192,243,193,227,192,243,193, + 227,192,243,193,227,192,243,193,227,192,241,193,227,128,113,227, + 231,128,120,255,255,0,124,254,255,0,60,60,60,0,31,0, + 0,0,15,192,32,0,7,255,224,0,1,255,224,0,0,127, + 224,0,19,20,60,19,0,0,1,240,0,1,240,0,1,248, + 0,3,248,0,3,248,0,3,188,0,7,188,0,7,156,0, + 15,30,0,15,30,0,15,30,0,30,15,0,30,15,0,31, + 255,128,63,255,128,63,255,128,56,3,192,120,3,192,120,3, + 192,240,1,224,15,20,40,18,2,0,255,224,255,240,255,248, + 240,124,240,60,240,60,240,56,240,120,255,240,255,192,255,248, + 240,60,240,28,240,30,240,30,240,30,240,60,255,252,255,248, + 255,224,17,20,60,19,1,0,7,240,0,15,252,0,63,254, + 0,60,31,0,120,15,0,112,15,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 15,128,112,15,0,120,31,0,60,62,0,63,254,0,31,248, + 0,7,224,0,16,20,40,19,2,0,255,128,255,240,255,248, + 240,124,240,62,240,30,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,240,30,240,62,240,124,255,248,255,240, + 255,128,13,20,40,17,2,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,240,0,255,248,255,248,255,248, + 13,20,40,16,2,0,255,248,255,248,255,248,240,0,240,0, + 240,0,240,0,240,0,255,240,255,240,255,240,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,18,20, + 60,20,1,0,1,248,0,15,254,0,31,255,0,62,15,128, + 124,3,128,120,3,192,112,0,0,240,0,0,240,0,0,240, + 63,192,240,63,192,240,63,192,240,3,192,240,3,192,120,3, + 192,124,3,192,63,3,192,31,255,192,15,255,192,1,254,0, + 16,20,40,20,2,0,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,255,255,255,255,255,255,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,4,20, + 20,8,2,0,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,14,20,40,17,1,0,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,240,60,240,56,248,120, + 127,240,127,224,31,192,15,20,40,18,2,0,240,60,240,124, + 240,248,241,240,241,224,243,224,247,192,255,128,255,0,255,0, + 255,128,247,192,247,192,243,224,241,240,240,240,240,248,240,124, + 240,62,240,62,13,20,40,16,2,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,255,248,255,248, + 255,248,21,20,60,25,2,0,252,1,248,254,3,248,254,3, + 248,254,3,248,255,7,248,255,7,248,247,7,120,247,15,120, + 247,143,120,247,143,120,243,142,120,243,222,120,243,222,120,241, + 220,120,241,252,120,241,252,120,240,248,120,240,248,120,240,248, + 120,240,248,120,17,20,60,21,2,0,252,7,128,252,7,128, + 254,7,128,254,7,128,255,7,128,255,7,128,247,135,128,247, + 135,128,243,199,128,243,199,128,241,231,128,241,231,128,240,247, + 128,240,247,128,240,127,128,240,127,128,240,63,128,240,63,128, + 240,31,128,240,31,128,18,20,60,20,1,0,3,240,0,15, + 252,0,31,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 254,0,15,252,0,3,240,0,14,20,40,17,2,0,255,192, + 255,240,255,248,240,124,240,60,240,60,240,60,240,60,240,124, + 255,248,255,240,255,192,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,20,20,60,22,1,0,3,240,0,15, + 252,0,63,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 255,240,15,255,240,3,255,240,15,20,40,18,2,0,255,224, + 255,248,255,252,240,62,240,30,240,30,240,30,240,30,240,124, + 255,248,255,240,255,252,240,60,240,60,240,28,240,30,240,30, + 240,30,240,30,240,14,16,20,40,18,1,0,7,224,31,248, + 63,252,60,60,120,30,120,30,120,0,124,0,63,128,31,240, + 15,252,0,254,0,30,0,15,240,15,240,14,120,62,127,252, + 63,248,7,224,16,20,40,18,1,0,255,255,255,255,255,255, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,17,20,60,21,2,0,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,0,240,15,0,120,15,0,124,30,0,63,254,0,31,248, + 0,7,224,0,19,20,60,20,0,0,248,1,224,120,1,224, + 120,3,224,60,3,192,60,3,192,62,7,192,30,7,128,30, + 7,128,31,15,128,15,15,0,15,15,0,15,158,0,7,158, + 0,7,158,0,7,252,0,3,252,0,3,252,0,1,248,0, + 1,248,0,1,240,0,27,20,80,27,0,0,248,31,3,224, + 120,31,3,192,120,31,3,192,120,63,131,192,120,63,131,192, + 60,59,135,128,60,59,135,128,60,123,199,128,60,123,199,128, + 28,113,199,0,30,113,207,0,30,241,239,0,30,241,239,0, + 14,224,238,0,14,224,238,0,15,224,254,0,15,224,254,0, + 7,192,124,0,7,192,124,0,7,192,124,0,17,20,60,19, + 1,0,248,15,128,120,15,0,124,30,0,62,30,0,30,60, + 0,31,120,0,15,120,0,7,240,0,7,224,0,3,224,0, + 7,224,0,7,240,0,15,240,0,30,120,0,30,124,0,60, + 60,0,60,30,0,120,31,0,240,15,0,240,7,128,16,20, + 40,17,1,0,240,31,248,30,120,30,124,60,60,60,60,120, + 30,120,30,240,15,240,15,224,7,224,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,20,40,17, + 1,0,127,254,127,254,127,254,0,62,0,124,0,248,0,248, + 1,240,3,224,7,224,7,192,15,128,31,0,63,0,62,0, + 124,0,248,0,255,254,255,254,255,254,6,25,25,10,2,251, + 252,252,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,252,252,9,21,42,12,1,255,224, + 0,96,0,112,0,112,0,48,0,56,0,56,0,56,0,24, + 0,28,0,28,0,12,0,14,0,14,0,6,0,6,0,7, + 0,7,0,3,0,3,128,3,128,7,25,25,11,2,251,254, + 254,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,254,254,13,17,34,27,7,0,2,0, + 7,0,5,0,5,0,13,128,8,128,24,192,24,192,16,64, + 48,96,48,96,32,32,96,48,64,16,192,24,192,24,128,8, + 14,2,4,14,0,252,255,252,255,252,5,5,5,7,0,16, + 224,112,112,56,24,12,14,28,15,1,0,31,128,63,224,121, + 240,112,240,0,240,63,240,127,240,248,240,240,240,240,240,240, + 240,251,240,127,112,62,112,14,20,40,17,2,0,240,0,240, + 0,240,0,240,0,240,0,240,0,247,192,255,240,253,240,248, + 120,240,120,240,60,240,60,240,60,240,60,240,56,248,120,252, + 240,255,240,243,192,12,14,28,14,1,0,31,128,63,224,121, + 224,112,224,240,240,240,0,240,0,240,0,240,0,240,240,240, + 224,121,224,63,192,31,128,14,20,40,16,1,0,0,60,0, + 60,0,60,0,60,0,60,0,60,31,188,63,252,124,252,120, + 124,240,60,240,60,240,60,240,60,240,60,240,60,120,124,125, + 252,63,188,15,60,13,14,28,15,1,0,15,128,63,224,121, + 240,112,240,240,240,255,240,255,248,240,0,240,0,240,240,112, + 240,121,240,63,224,31,128,10,20,40,11,1,0,15,192,31, + 192,62,64,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,14,19,38,16,1,251,31,188,63,252,124, + 252,120,124,240,60,240,60,240,60,240,60,240,60,240,60,112, + 124,124,252,63,188,15,60,0,60,120,56,124,248,63,240,15, + 192,13,20,40,16,2,0,240,0,240,0,240,0,240,0,240, + 0,240,0,247,192,255,240,253,240,248,120,240,120,240,120,240, + 120,240,120,240,120,240,120,240,120,240,120,240,120,240,120,4, + 20,20,6,1,0,240,240,240,240,0,0,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,5,25,25,9,3,251,120, + 120,120,120,0,0,120,120,120,120,120,120,120,120,120,120,120, + 120,120,120,120,120,248,248,240,12,20,40,15,2,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,240,241,224,243,192, + 247,128,255,128,255,0,255,0,255,0,247,128,247,192,243,192, + 241,224,241,240,240,240,4,20,20,7,2,0,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 22,14,42,25,2,0,243,227,224,255,247,248,253,254,248,240, + 120,120,240,120,60,240,120,60,240,120,60,240,120,60,240,120, + 60,240,120,60,240,120,60,240,120,60,240,120,60,240,120,60, + 13,14,28,16,2,0,247,192,255,240,253,240,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,14,14,28,16,1,0,15,192,63,224,124,240,120,120, + 240,60,240,60,240,60,240,60,240,60,240,60,120,120,124,248, + 63,240,15,192,14,19,38,17,2,251,243,192,255,240,253,240, + 248,120,240,56,240,60,240,60,240,60,240,60,240,120,240,120, + 253,248,255,240,247,192,240,0,240,0,240,0,240,0,240,0, + 14,19,38,16,1,251,15,60,63,252,125,252,120,124,240,60, + 240,60,240,60,240,60,240,60,240,60,120,124,124,252,63,252, + 31,188,0,60,0,60,0,60,0,60,0,60,9,14,28,11, + 2,0,247,128,255,128,255,128,252,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,12,14, + 28,14,1,0,31,128,127,192,123,224,241,224,240,0,126,0, + 127,192,31,224,1,240,240,240,240,240,249,224,127,192,31,128, + 10,18,36,12,1,0,2,0,14,0,30,0,30,0,255,192, + 255,192,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,0,15,192,7,192,13,14,28,16,2,0, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,248,249,248,127,248,62,120,14,14,28,15, + 0,0,240,60,120,60,120,60,56,120,60,120,60,112,28,240, + 30,240,30,224,15,224,15,224,15,192,7,192,7,192,23,14, + 42,23,0,0,240,124,30,112,124,28,120,124,60,120,254,60, + 56,238,60,60,238,56,61,239,120,61,231,120,29,199,112,31, + 199,240,31,199,240,15,131,224,15,131,224,15,131,224,13,14, + 28,15,1,0,240,120,120,240,124,224,61,224,31,192,31,128, + 15,128,31,128,31,192,63,224,57,224,120,240,240,248,240,120, + 14,19,38,15,0,251,248,60,120,60,120,60,60,120,60,120, + 60,112,30,240,30,240,14,224,15,224,15,224,7,192,7,192, + 3,192,7,128,7,128,7,128,15,0,15,0,11,14,28,13, + 1,0,255,224,255,224,1,224,3,224,7,192,7,128,15,0, + 30,0,60,0,124,0,248,0,240,0,255,224,255,224,10,27, + 54,13,2,249,3,192,15,192,31,128,30,0,30,0,30,0, + 30,0,30,0,30,0,28,0,28,0,60,0,248,0,224,0, + 248,0,124,0,60,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,128,15,192,7,192,2,29,29,10,4,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,10,27,54, + 14,2,249,240,0,252,0,124,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,15,0,7,192,3,192,7, + 192,15,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,124,0,252,0,240,0,14,3,6,14,0,5,63, + 156,127,248,225,240,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,8,0,0,4,19,19,10, + 3,251,240,240,240,0,0,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,12,20,40,16,2,253,0,192,0,192,0, + 128,15,128,63,224,125,224,115,240,243,240,242,0,242,0,246, + 0,244,0,244,240,124,240,121,224,63,224,31,128,24,0,16, + 0,48,0,14,20,40,15,1,0,7,224,31,248,62,120,60, + 60,60,60,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,255,252,255, + 252,15,14,28,17,1,5,192,6,99,204,55,248,28,48,24, + 24,48,12,48,12,48,12,48,12,24,24,28,48,63,248,99, + 204,192,6,15,20,40,17,1,0,240,30,240,62,120,60,120, + 124,56,120,60,120,252,254,254,254,31,224,15,224,15,192,255, + 254,255,254,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,1,25,25,9,4,251,128,128,128,128,128,128,128,128,128, + 128,128,0,0,0,128,128,128,128,128,128,128,128,128,128,128, + 11,24,48,13,1,252,31,128,63,192,121,192,240,64,240,0, + 248,0,124,0,63,0,63,128,127,192,243,224,225,224,225,192, + 243,192,255,128,126,0,31,128,7,192,3,224,1,224,1,192, + 195,192,255,128,127,0,9,3,6,9,0,17,227,128,227,128, + 227,128,20,20,60,24,2,0,1,248,0,7,254,0,31,15, + 128,60,3,192,49,252,192,99,254,224,103,158,96,199,15,48, + 207,0,48,207,0,48,207,0,48,207,15,48,199,14,48,103, + 158,96,99,252,96,49,248,192,56,1,192,30,7,128,7,254, + 0,1,248,0,9,13,26,11,1,7,62,0,127,128,99,128, + 3,128,63,128,115,128,227,128,227,128,255,128,125,128,0,0, + 0,0,255,128,14,11,22,16,1,2,30,60,28,56,60,120, + 120,240,120,240,241,224,120,240,56,240,60,120,28,56,30,60, + 15,6,12,17,1,6,255,254,255,254,0,6,0,6,0,6, + 0,6,255,20,20,60,24,2,0,1,248,0,7,254,0,31, + 15,128,60,3,192,51,252,192,99,254,224,99,14,96,195,6, + 48,195,28,48,195,248,48,195,252,48,195,12,48,195,14,48, + 99,6,96,99,6,96,51,6,192,56,1,192,30,7,128,7, + 254,0,1,248,0,9,2,4,9,0,18,255,128,255,128,6, + 6,6,8,1,14,120,204,132,132,204,120,16,16,32,26,5, + 0,1,128,1,128,1,128,1,128,255,255,255,255,1,128,1, + 128,1,128,1,128,1,128,0,0,0,0,0,0,255,255,255, + 255,9,11,22,11,1,9,62,0,127,0,227,128,3,128,7, + 0,15,0,30,0,56,0,112,0,255,0,255,0,8,11,11, + 10,1,9,60,254,231,7,30,30,7,7,231,254,124,6,5, + 5,6,1,16,60,56,112,96,192,255,13,24,48,15,1,252, + 31,248,62,96,126,96,254,96,254,96,254,96,254,96,126,96, + 126,96,30,96,6,96,6,96,6,96,6,96,6,96,6,96, + 6,96,6,96,6,96,6,96,6,96,6,96,6,96,6,96, + 4,4,4,8,2,8,240,240,240,240,7,6,6,7,1,249, + 32,60,14,6,254,252,5,11,11,8,2,9,56,248,248,56, + 56,56,56,56,56,56,56,10,13,26,12,1,7,30,0,127, + 128,115,128,225,192,225,192,225,192,225,192,99,128,127,128,30, + 0,0,0,0,0,255,192,13,11,22,16,2,2,225,192,241, + 224,112,224,120,240,120,240,60,120,120,240,120,240,113,224,241, + 224,225,192,19,20,60,22,2,0,56,7,0,248,14,0,184, + 14,0,56,28,0,56,28,0,56,56,0,56,48,0,56,112, + 0,56,224,0,56,227,192,57,195,192,1,199,192,3,143,192, + 3,13,192,7,29,192,14,57,192,14,63,224,28,63,224,28, + 1,192,56,1,192,19,20,60,21,1,0,56,6,0,248,14, + 0,184,12,0,56,28,0,56,24,0,56,48,0,56,112,0, + 56,96,0,56,224,0,56,199,128,57,207,224,3,156,224,3, + 0,224,7,1,224,6,1,192,14,3,128,28,7,0,28,30, + 0,56,31,224,48,31,224,20,20,60,22,1,0,124,1,192, + 230,3,128,231,3,0,7,7,0,30,14,0,30,14,0,7, + 28,0,231,24,0,231,56,0,126,49,224,24,115,224,0,227, + 224,0,199,224,1,198,224,1,140,224,3,156,224,3,31,240, + 7,31,240,14,0,224,12,0,224,12,19,38,15,1,251,7, + 128,7,128,7,128,0,0,0,0,7,0,7,0,7,0,14, + 0,28,0,56,0,112,0,240,0,240,0,240,112,240,112,127, + 240,63,224,15,128,19,28,84,19,0,0,7,0,0,3,128, + 0,1,128,0,1,192,0,0,192,0,0,96,0,0,0,0, + 0,0,0,1,240,0,1,240,0,1,248,0,3,248,0,3, + 248,0,3,188,0,7,188,0,7,156,0,15,30,0,15,30, + 0,15,30,0,30,15,0,30,15,0,31,255,128,63,255,128, + 63,255,128,56,3,192,120,3,192,120,3,192,240,1,224,19, + 28,84,19,0,0,0,28,0,0,56,0,0,56,0,0,112, + 0,0,96,0,0,192,0,0,0,0,0,0,0,1,240,0, + 1,240,0,1,248,0,3,248,0,3,248,0,3,188,0,7, + 188,0,7,156,0,15,30,0,15,30,0,15,30,0,30,15, + 0,30,15,0,31,255,128,63,255,128,63,255,128,56,3,192, + 120,3,192,120,3,192,240,1,224,19,28,84,19,0,0,0, + 224,0,1,240,0,1,240,0,3,184,0,3,24,0,6,12, + 0,0,0,0,0,0,0,1,240,0,1,240,0,1,248,0, + 3,248,0,3,248,0,3,188,0,7,188,0,7,156,0,15, + 30,0,15,30,0,15,30,0,30,15,0,30,15,0,31,255, + 128,63,255,128,63,255,128,56,3,192,120,3,192,120,3,192, + 240,1,224,19,26,78,19,0,0,1,204,0,3,248,0,6, + 120,0,0,0,0,0,0,0,0,0,0,1,240,0,1,240, + 0,1,248,0,3,248,0,3,248,0,3,188,0,7,188,0, + 7,156,0,15,30,0,15,30,0,15,30,0,30,15,0,30, + 15,0,31,255,128,63,255,128,63,255,128,56,3,192,120,3, + 192,120,3,192,240,1,224,19,26,78,19,0,0,7,28,0, + 7,28,0,7,28,0,0,0,0,0,0,0,0,0,0,1, + 240,0,1,240,0,3,248,0,3,248,0,3,248,0,7,188, + 0,7,188,0,7,60,0,15,30,0,15,30,0,30,31,0, + 30,15,0,30,15,0,63,255,128,63,255,128,63,255,128,120, + 3,192,120,3,192,112,3,192,240,1,224,19,29,87,19,0, + 0,0,224,0,1,240,0,3,24,0,3,24,0,3,24,0, + 1,240,0,0,224,0,0,0,0,0,0,0,1,240,0,1, + 240,0,3,240,0,3,248,0,3,248,0,7,188,0,7,188, + 0,7,60,0,15,30,0,15,30,0,30,30,0,30,15,0, + 30,15,0,63,255,128,63,255,128,63,255,128,120,3,192,120, + 3,192,240,3,192,240,1,224,25,20,80,26,0,0,0,63, + 255,128,0,63,255,128,0,127,0,0,0,127,0,0,0,255, + 0,0,1,239,0,0,1,239,0,0,3,207,0,0,3,207, + 255,128,7,143,255,128,7,143,255,128,15,15,0,0,15,255, + 0,0,31,255,0,0,31,255,0,0,60,15,0,0,56,15, + 0,0,120,15,255,128,112,15,255,128,240,15,255,128,17,27, + 81,19,1,249,7,240,0,15,252,0,63,254,0,60,31,0, + 120,31,0,112,15,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,15,128,112,15, + 0,120,31,0,60,63,0,63,254,0,15,252,0,3,240,0, + 0,128,0,0,224,0,0,240,0,0,48,0,0,48,0,3, + 240,0,0,128,0,13,28,56,17,2,0,60,0,28,0,14, + 0,6,0,7,0,3,0,0,0,0,0,255,248,255,248,255, + 248,240,0,240,0,240,0,240,0,240,0,255,248,255,248,255, + 248,240,0,240,0,240,0,240,0,240,0,240,0,255,248,255, + 248,255,248,13,28,56,17,2,0,1,224,1,192,3,128,3, + 0,6,0,6,0,0,0,0,0,255,248,255,248,255,248,240, + 0,240,0,240,0,240,0,240,0,255,248,255,248,255,248,240, + 0,240,0,240,0,240,0,240,0,240,0,255,248,255,248,255, + 248,13,28,56,17,2,0,15,0,15,128,13,128,29,192,24, + 192,48,96,0,0,0,0,255,248,255,248,255,248,240,0,240, + 0,240,0,240,0,240,0,255,248,255,248,255,248,240,0,240, + 0,240,0,240,0,240,0,240,0,255,248,255,248,255,248,13, + 26,52,17,2,0,56,224,56,224,56,224,0,0,0,0,0, + 0,255,248,255,248,255,248,240,0,240,0,240,0,240,0,240, + 0,255,248,255,248,255,248,240,0,240,0,240,0,240,0,240, + 0,240,0,255,248,255,248,255,248,7,28,28,8,255,0,240, + 112,56,24,28,12,0,0,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,6,28,28,7,2, + 0,28,56,48,112,96,192,0,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,8,28,28, + 8,0,0,60,60,126,102,198,195,0,0,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,9, + 26,52,9,0,0,227,128,227,128,227,128,0,0,0,0,0, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,18,20,60,19,0,0,63, + 224,0,63,252,0,63,254,0,60,31,0,60,15,128,60,7, + 128,60,3,192,60,3,192,60,3,192,255,195,192,255,195,192, + 60,3,192,60,3,192,60,3,192,60,7,128,60,15,128,60, + 31,0,63,254,0,63,252,0,63,224,0,17,26,78,21,2, + 0,7,152,0,7,248,0,12,240,0,0,0,0,0,0,0, + 0,0,0,252,7,128,252,7,128,254,7,128,254,7,128,255, + 7,128,255,7,128,247,135,128,247,135,128,243,199,128,243,199, + 128,241,231,128,241,231,128,240,247,128,240,247,128,240,127,128, + 240,127,128,240,63,128,240,63,128,240,31,128,240,31,128,18, + 28,84,20,1,0,14,0,0,7,0,0,3,128,0,1,128, + 0,0,192,0,0,0,0,0,0,0,0,0,0,3,240,0, + 15,252,0,31,254,0,62,31,0,120,7,128,120,7,128,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,120,7,128,120,7,128,62,31,0, + 31,254,0,15,252,0,3,240,0,18,28,84,20,1,0,0, + 60,0,0,56,0,0,112,0,0,96,0,0,192,0,0,0, + 0,0,0,0,0,0,0,3,240,0,15,252,0,31,254,0, + 62,31,0,120,7,128,120,7,128,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,120,7,128,120,7,128,62,31,0,31,254,0,15,252,0, + 3,240,0,18,28,84,20,1,0,1,224,0,3,240,0,3, + 240,0,7,56,0,6,24,0,0,0,0,0,0,0,0,0, + 0,3,240,0,15,252,0,31,254,0,62,31,0,120,7,128, + 120,7,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,120,7,128,120,7, + 128,62,31,0,31,254,0,15,252,0,3,240,0,18,27,81, + 20,1,0,0,8,0,7,248,0,7,248,0,4,0,0,0, + 0,0,0,0,0,0,0,0,3,240,0,15,252,0,31,254, + 0,62,31,0,120,7,128,120,7,128,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,120,7,128,120,7,128,62,31,0,31,254,0,15,252, + 0,3,240,0,18,27,81,20,1,0,7,28,0,7,28,0, + 7,28,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 240,0,15,252,0,31,254,0,62,31,0,120,7,128,120,7, + 128,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,120,7,128,120,7,128,62, + 31,0,31,254,0,15,252,0,3,240,0,15,14,28,27,6, + 2,192,6,96,12,48,24,24,48,12,96,6,192,3,128,3, + 128,6,192,12,96,24,48,48,24,96,12,64,4,20,22,66, + 20,0,255,0,0,32,1,252,112,7,255,224,15,255,192,31, + 15,128,60,3,192,60,7,192,120,15,224,120,29,224,120,57, + 224,120,113,224,120,225,224,121,193,224,123,129,224,127,1,224, + 62,3,192,60,3,192,31,15,128,63,255,0,127,254,0,227, + 248,0,64,0,0,17,28,84,21,2,0,30,0,0,14,0, + 0,7,0,0,3,128,0,1,128,0,0,0,0,0,0,0, + 0,0,0,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,0,240,15,0, + 120,15,0,124,30,0,63,254,0,31,248,0,7,224,0,17, + 28,84,21,2,0,0,60,0,0,120,0,0,112,0,0,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,0,240,15,0,120,15,0,124,30,0, + 63,254,0,31,248,0,7,224,0,17,28,84,21,2,0,3, + 192,0,3,224,0,7,224,0,14,112,0,12,56,0,0,0, + 0,0,0,0,0,0,0,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 0,240,15,0,120,15,0,124,30,0,63,254,0,31,248,0, + 7,224,0,17,27,81,20,2,0,14,56,0,14,56,0,14, + 56,0,0,0,0,0,0,0,0,0,0,0,0,0,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,0,240,15,0,120,15,0,124,30, + 0,63,254,0,31,248,0,7,224,0,16,27,54,17,1,0, + 0,112,0,224,0,192,1,128,0,0,0,0,0,0,240,31, + 248,30,120,30,124,60,60,60,60,120,30,120,30,240,15,240, + 15,224,7,224,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,14,20,40,17,1,0,240,0,240,0, + 240,0,240,0,255,192,255,240,255,248,240,124,240,60,240,60, + 240,60,240,124,255,248,255,240,255,192,240,0,240,0,240,0, + 240,0,240,0,14,20,40,16,1,0,31,128,127,224,121,240, + 240,240,240,240,240,240,241,224,243,192,247,128,247,128,247,128, + 243,224,241,240,240,248,240,60,240,60,255,60,255,188,247,248, + 243,240,12,22,44,15,1,0,120,0,56,0,28,0,12,0, + 6,0,2,0,0,0,0,0,31,128,63,224,121,240,112,240, + 0,240,63,240,127,240,248,240,240,240,240,240,240,240,251,240, + 127,112,62,112,12,22,44,15,1,0,1,224,1,192,3,128, + 3,0,7,0,6,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,31,240,127,240,120,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,22,44,15,1,0,15,0,15,128, + 31,128,25,192,56,192,48,96,0,0,0,0,31,128,63,224, + 121,240,112,240,0,240,63,240,127,240,248,240,240,240,240,240, + 240,240,251,240,127,112,62,112,12,20,40,15,1,0,31,192, + 63,192,48,0,0,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,63,240,127,240,248,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,21,42,15,1,0,56,224,56,224, + 56,224,0,0,0,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,63,240,127,240,248,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,23,46,15,1,0,7,0,31,128, + 24,192,24,192,31,128,15,0,0,0,0,0,0,0,31,128, + 63,224,121,240,112,240,0,240,63,240,127,240,248,240,240,240, + 240,240,240,240,251,240,127,112,62,112,22,14,42,24,1,0, + 15,135,192,63,207,240,124,252,248,112,120,56,0,120,56,31, + 255,252,127,255,252,120,120,0,240,120,0,240,120,0,240,252, + 56,249,222,248,127,143,240,30,7,224,12,21,42,14,1,249, + 31,128,63,224,121,224,112,224,240,240,240,0,240,0,240,0, + 240,0,240,240,240,224,121,224,63,192,31,128,4,0,7,0, + 7,128,0,192,0,192,31,128,4,0,13,22,44,15,1,0, + 56,0,56,0,28,0,12,0,6,0,2,0,0,0,0,0, + 15,128,63,224,121,240,112,240,240,240,255,240,255,248,240,0, + 240,0,240,240,112,240,121,240,63,224,31,128,13,22,44,15, + 1,0,1,224,1,192,3,128,3,0,6,0,6,0,0,0, + 0,0,15,128,63,224,121,240,112,240,240,240,255,240,255,248, + 240,0,240,0,240,240,112,240,121,240,63,224,31,128,13,22, + 44,15,1,0,15,0,15,0,31,128,25,128,56,192,48,192, + 0,0,0,0,15,128,63,224,121,240,112,240,240,240,255,240, + 255,248,240,0,240,0,240,240,112,240,121,240,63,224,31,128, + 13,21,42,15,1,0,56,224,56,224,56,224,0,0,0,0, + 0,0,0,0,15,128,63,224,121,240,112,112,240,112,255,240, + 255,248,240,0,240,0,240,112,112,112,125,240,63,224,31,128, + 6,22,22,7,0,0,224,240,112,56,24,12,0,0,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,6,22,22,6, + 2,0,60,56,112,96,192,192,0,0,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,9,22,44,7,255,0,30,0, + 62,0,63,0,115,0,99,128,193,128,0,0,0,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,9,20,40,7,255,0, + 227,128,227,128,227,128,0,0,0,0,0,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,14,20,40,16,1,0,14,24, + 15,240,3,192,15,192,60,224,48,240,15,240,63,248,124,248, + 120,60,240,60,240,60,240,60,240,60,240,60,240,60,120,56, + 124,248,63,240,15,192,13,20,40,16,2,0,30,96,63,192, + 55,128,0,0,0,0,0,0,247,192,255,240,253,240,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,14,22,44,16,1,0,60,0,28,0,14,0, + 6,0,3,0,3,0,0,0,0,0,15,192,63,224,124,240, + 120,120,240,60,240,60,240,60,240,60,240,60,240,60,120,120, + 124,248,63,240,15,192,14,22,44,16,1,0,0,240,0,224, + 1,192,1,128,3,0,3,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,14,22,44,16,1,0,7,128, + 7,128,15,192,12,192,24,96,24,96,0,0,0,0,15,192, + 63,224,124,240,120,120,240,60,240,60,240,60,240,60,240,60, + 240,60,120,120,124,248,63,240,15,192,14,20,40,16,1,0, + 15,224,31,224,24,0,0,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,14,21,42,16,1,0,28,224, + 28,224,28,224,0,0,0,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,16,12,24,26,5,2,1,192, + 3,192,1,192,0,0,0,0,255,255,255,255,0,0,0,0, + 1,192,3,192,1,192,14,18,36,16,1,254,0,8,0,28, + 15,248,63,240,124,240,120,248,241,252,241,188,243,60,246,60, + 254,60,252,60,120,120,60,248,127,240,239,192,192,0,128,0, + 13,22,44,16,2,0,56,0,60,0,28,0,14,0,6,0, + 3,0,0,0,0,0,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,248,249,248,127,248, + 62,120,13,22,44,16,2,0,1,224,1,192,3,128,3,0, + 7,0,6,0,0,0,0,0,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,248,249,248, + 127,248,62,120,13,22,44,16,2,0,15,0,15,128,31,128, + 29,192,56,192,48,96,0,0,0,0,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,248, + 249,248,127,248,62,120,13,21,42,16,2,0,56,224,56,224, + 56,224,0,0,0,0,0,0,0,0,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,248, + 249,248,127,248,62,120,14,27,54,15,0,251,0,112,0,240, + 0,224,0,192,1,128,0,0,0,0,0,0,120,28,120,60, + 60,60,60,56,60,120,30,120,30,112,14,240,15,240,15,224, + 7,224,7,224,3,192,3,192,3,128,39,128,255,128,127,0, + 62,0,14,25,50,17,2,251,240,0,240,0,240,0,240,0, + 240,0,240,0,247,192,255,240,253,240,248,120,240,56,240,60, + 240,60,240,60,240,60,240,120,240,120,253,240,255,240,247,192, + 240,0,240,0,240,0,240,0,240,0,15,26,52,15,0,251, + 28,112,28,112,28,112,0,0,0,0,0,0,0,0,248,30, + 120,60,120,60,60,56,60,120,60,120,30,112,30,240,15,240, + 15,224,15,224,7,224,7,192,3,192,7,128,7,128,7,128, + 15,0,15,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=16 h=21 x= 5 y= 9 dx=26 dy= 0 ascent=20 len=40 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =20 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20n[583] U8G_SECTION(".progmem.u8g_font_fub20n") = { + 0,40,36,254,249,20,0,0,0,0,42,57,0,20,252,20, + 0,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=27 h=29 x= 7 y=16 dx=28 dy= 0 ascent=22 len=100 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =22 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20r[4022] U8G_SECTION(".progmem.u8g_font_fub20r") = { + 0,40,36,254,249,20,4,242,11,37,32,127,251,22,249,20, + 251,0,0,0,8,0,0,4,20,20,11,4,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,0,0,0,240,240, + 240,10,8,16,14,2,12,243,192,243,192,243,192,243,192,243, + 192,225,192,225,192,97,128,17,20,60,19,1,0,1,199,0, + 1,134,0,3,142,0,3,142,0,3,142,0,31,255,128,63, + 255,128,7,28,0,6,24,0,14,56,0,14,56,0,14,48, + 0,127,254,0,255,254,0,28,112,0,24,96,0,56,224,0, + 56,224,0,56,224,0,49,192,0,14,24,48,16,1,253,1, + 0,7,192,31,240,63,248,125,120,113,60,241,60,241,0,253, + 0,127,0,63,224,31,240,3,248,1,124,1,60,241,60,241, + 60,249,60,127,248,63,240,31,224,1,0,1,0,1,0,25, + 20,80,27,1,0,31,0,96,0,63,128,224,0,123,192,192, + 0,225,193,192,0,224,227,128,0,224,227,0,0,224,231,0, + 0,224,230,0,0,113,206,0,0,127,204,124,0,63,28,254, + 0,0,57,199,0,0,59,131,0,0,115,131,128,0,99,131, + 128,0,227,131,128,1,195,135,128,1,193,239,0,3,128,254, + 0,3,128,124,0,19,20,60,21,1,0,15,192,0,31,240, + 0,60,240,0,120,120,0,120,120,0,120,112,0,60,240,0, + 63,224,0,31,192,0,31,128,0,63,135,128,123,199,128,249, + 231,128,240,247,0,240,127,0,240,63,0,240,30,0,124,127, + 0,63,255,128,15,227,224,4,8,8,11,4,12,240,224,224, + 224,224,224,224,224,6,24,24,10,2,252,28,56,56,120,120, + 112,112,240,240,240,240,240,240,240,240,240,240,112,112,120,120, + 56,56,28,6,24,24,11,3,252,224,240,112,112,120,120,120, + 56,56,60,60,60,60,60,60,56,56,120,120,120,112,112,240, + 224,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128,4,14,14,9,4,0,240,240,240, + 240,0,0,0,0,0,0,240,240,240,240,6,17,17,8,1, + 253,60,60,60,60,0,0,0,0,0,0,60,56,120,112,112, + 224,224,16,14,28,26,5,1,0,3,0,31,0,120,3,192, + 15,0,120,0,224,0,224,0,60,0,7,128,1,224,0,60, + 0,15,0,1,16,7,14,26,5,5,255,255,255,255,0,0, + 0,0,0,0,255,255,255,255,16,14,28,26,5,1,192,0, + 248,0,30,0,3,192,0,240,0,30,0,7,0,7,0,60, + 1,224,7,128,60,0,240,0,128,0,13,20,40,15,1,0, + 31,128,63,224,121,240,240,112,32,120,0,120,0,112,0,240, + 1,224,3,192,7,128,14,0,14,0,14,0,14,0,0,0, + 0,0,15,0,15,0,15,0,26,25,100,28,1,251,0,63, + 128,0,1,255,240,0,7,255,252,0,15,224,254,0,31,0, + 31,0,62,0,15,0,60,61,231,128,120,255,231,128,121,247, + 227,192,241,225,227,192,241,193,227,192,243,193,227,192,243,193, + 227,192,243,193,227,192,243,193,227,192,241,193,227,128,113,227, + 231,128,120,255,255,0,124,254,255,0,60,60,60,0,31,0, + 0,0,15,192,32,0,7,255,224,0,1,255,224,0,0,127, + 224,0,19,20,60,19,0,0,1,240,0,1,240,0,1,248, + 0,3,248,0,3,248,0,3,188,0,7,188,0,7,156,0, + 15,30,0,15,30,0,15,30,0,30,15,0,30,15,0,31, + 255,128,63,255,128,63,255,128,56,3,192,120,3,192,120,3, + 192,240,1,224,15,20,40,18,2,0,255,224,255,240,255,248, + 240,124,240,60,240,60,240,56,240,120,255,240,255,192,255,248, + 240,60,240,28,240,30,240,30,240,30,240,60,255,252,255,248, + 255,224,17,20,60,19,1,0,7,240,0,15,252,0,63,254, + 0,60,31,0,120,15,0,112,15,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 15,128,112,15,0,120,31,0,60,62,0,63,254,0,31,248, + 0,7,224,0,16,20,40,19,2,0,255,128,255,240,255,248, + 240,124,240,62,240,30,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,240,30,240,62,240,124,255,248,255,240, + 255,128,13,20,40,17,2,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,240,0,255,248,255,248,255,248, + 13,20,40,16,2,0,255,248,255,248,255,248,240,0,240,0, + 240,0,240,0,240,0,255,240,255,240,255,240,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,18,20, + 60,20,1,0,1,248,0,15,254,0,31,255,0,62,15,128, + 124,3,128,120,3,192,112,0,0,240,0,0,240,0,0,240, + 63,192,240,63,192,240,63,192,240,3,192,240,3,192,120,3, + 192,124,3,192,63,3,192,31,255,192,15,255,192,1,254,0, + 16,20,40,20,2,0,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,255,255,255,255,255,255,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,4,20, + 20,8,2,0,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,14,20,40,17,1,0,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,240,60,240,56,248,120, + 127,240,127,224,31,192,15,20,40,18,2,0,240,60,240,124, + 240,248,241,240,241,224,243,224,247,192,255,128,255,0,255,0, + 255,128,247,192,247,192,243,224,241,240,240,240,240,248,240,124, + 240,62,240,62,13,20,40,16,2,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,255,248,255,248, + 255,248,21,20,60,25,2,0,252,1,248,254,3,248,254,3, + 248,254,3,248,255,7,248,255,7,248,247,7,120,247,15,120, + 247,143,120,247,143,120,243,142,120,243,222,120,243,222,120,241, + 220,120,241,252,120,241,252,120,240,248,120,240,248,120,240,248, + 120,240,248,120,17,20,60,21,2,0,252,7,128,252,7,128, + 254,7,128,254,7,128,255,7,128,255,7,128,247,135,128,247, + 135,128,243,199,128,243,199,128,241,231,128,241,231,128,240,247, + 128,240,247,128,240,127,128,240,127,128,240,63,128,240,63,128, + 240,31,128,240,31,128,18,20,60,20,1,0,3,240,0,15, + 252,0,31,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 254,0,15,252,0,3,240,0,14,20,40,17,2,0,255,192, + 255,240,255,248,240,124,240,60,240,60,240,60,240,60,240,124, + 255,248,255,240,255,192,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,20,20,60,22,1,0,3,240,0,15, + 252,0,63,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 255,240,15,255,240,3,255,240,15,20,40,18,2,0,255,224, + 255,248,255,252,240,62,240,30,240,30,240,30,240,30,240,124, + 255,248,255,240,255,252,240,60,240,60,240,28,240,30,240,30, + 240,30,240,30,240,14,16,20,40,18,1,0,7,224,31,248, + 63,252,60,60,120,30,120,30,120,0,124,0,63,128,31,240, + 15,252,0,254,0,30,0,15,240,15,240,14,120,62,127,252, + 63,248,7,224,16,20,40,18,1,0,255,255,255,255,255,255, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,17,20,60,21,2,0,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,0,240,15,0,120,15,0,124,30,0,63,254,0,31,248, + 0,7,224,0,19,20,60,20,0,0,248,1,224,120,1,224, + 120,3,224,60,3,192,60,3,192,62,7,192,30,7,128,30, + 7,128,31,15,128,15,15,0,15,15,0,15,158,0,7,158, + 0,7,158,0,7,252,0,3,252,0,3,252,0,1,248,0, + 1,248,0,1,240,0,27,20,80,27,0,0,248,31,3,224, + 120,31,3,192,120,31,3,192,120,63,131,192,120,63,131,192, + 60,59,135,128,60,59,135,128,60,123,199,128,60,123,199,128, + 28,113,199,0,30,113,207,0,30,241,239,0,30,241,239,0, + 14,224,238,0,14,224,238,0,15,224,254,0,15,224,254,0, + 7,192,124,0,7,192,124,0,7,192,124,0,17,20,60,19, + 1,0,248,15,128,120,15,0,124,30,0,62,30,0,30,60, + 0,31,120,0,15,120,0,7,240,0,7,224,0,3,224,0, + 7,224,0,7,240,0,15,240,0,30,120,0,30,124,0,60, + 60,0,60,30,0,120,31,0,240,15,0,240,7,128,16,20, + 40,17,1,0,240,31,248,30,120,30,124,60,60,60,60,120, + 30,120,30,240,15,240,15,224,7,224,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,20,40,17, + 1,0,127,254,127,254,127,254,0,62,0,124,0,248,0,248, + 1,240,3,224,7,224,7,192,15,128,31,0,63,0,62,0, + 124,0,248,0,255,254,255,254,255,254,6,25,25,10,2,251, + 252,252,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,252,252,9,21,42,12,1,255,224, + 0,96,0,112,0,112,0,48,0,56,0,56,0,56,0,24, + 0,28,0,28,0,12,0,14,0,14,0,6,0,6,0,7, + 0,7,0,3,0,3,128,3,128,7,25,25,11,2,251,254, + 254,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,254,254,13,17,34,27,7,0,2,0, + 7,0,5,0,5,0,13,128,8,128,24,192,24,192,16,64, + 48,96,48,96,32,32,96,48,64,16,192,24,192,24,128,8, + 14,2,4,14,0,252,255,252,255,252,5,5,5,7,0,16, + 224,112,112,56,24,12,14,28,15,1,0,31,128,63,224,121, + 240,112,240,0,240,63,240,127,240,248,240,240,240,240,240,240, + 240,251,240,127,112,62,112,14,20,40,17,2,0,240,0,240, + 0,240,0,240,0,240,0,240,0,247,192,255,240,253,240,248, + 120,240,120,240,60,240,60,240,60,240,60,240,56,248,120,252, + 240,255,240,243,192,12,14,28,14,1,0,31,128,63,224,121, + 224,112,224,240,240,240,0,240,0,240,0,240,0,240,240,240, + 224,121,224,63,192,31,128,14,20,40,16,1,0,0,60,0, + 60,0,60,0,60,0,60,0,60,31,188,63,252,124,252,120, + 124,240,60,240,60,240,60,240,60,240,60,240,60,120,124,125, + 252,63,188,15,60,13,14,28,15,1,0,15,128,63,224,121, + 240,112,240,240,240,255,240,255,248,240,0,240,0,240,240,112, + 240,121,240,63,224,31,128,10,20,40,11,1,0,15,192,31, + 192,62,64,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,14,19,38,16,1,251,31,188,63,252,124, + 252,120,124,240,60,240,60,240,60,240,60,240,60,240,60,112, + 124,124,252,63,188,15,60,0,60,120,56,124,248,63,240,15, + 192,13,20,40,16,2,0,240,0,240,0,240,0,240,0,240, + 0,240,0,247,192,255,240,253,240,248,120,240,120,240,120,240, + 120,240,120,240,120,240,120,240,120,240,120,240,120,240,120,4, + 20,20,6,1,0,240,240,240,240,0,0,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,5,25,25,9,3,251,120, + 120,120,120,0,0,120,120,120,120,120,120,120,120,120,120,120, + 120,120,120,120,120,248,248,240,12,20,40,15,2,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,240,241,224,243,192, + 247,128,255,128,255,0,255,0,255,0,247,128,247,192,243,192, + 241,224,241,240,240,240,4,20,20,7,2,0,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 22,14,42,25,2,0,243,227,224,255,247,248,253,254,248,240, + 120,120,240,120,60,240,120,60,240,120,60,240,120,60,240,120, + 60,240,120,60,240,120,60,240,120,60,240,120,60,240,120,60, + 13,14,28,16,2,0,247,192,255,240,253,240,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,14,14,28,16,1,0,15,192,63,224,124,240,120,120, + 240,60,240,60,240,60,240,60,240,60,240,60,120,120,124,248, + 63,240,15,192,14,19,38,17,2,251,243,192,255,240,253,240, + 248,120,240,56,240,60,240,60,240,60,240,60,240,120,240,120, + 253,248,255,240,247,192,240,0,240,0,240,0,240,0,240,0, + 14,19,38,16,1,251,15,60,63,252,125,252,120,124,240,60, + 240,60,240,60,240,60,240,60,240,60,120,124,124,252,63,252, + 31,188,0,60,0,60,0,60,0,60,0,60,9,14,28,11, + 2,0,247,128,255,128,255,128,252,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,12,14, + 28,14,1,0,31,128,127,192,123,224,241,224,240,0,126,0, + 127,192,31,224,1,240,240,240,240,240,249,224,127,192,31,128, + 10,18,36,12,1,0,2,0,14,0,30,0,30,0,255,192, + 255,192,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,0,15,192,7,192,13,14,28,16,2,0, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,248,249,248,127,248,62,120,14,14,28,15, + 0,0,240,60,120,60,120,60,56,120,60,120,60,112,28,240, + 30,240,30,224,15,224,15,224,15,192,7,192,7,192,23,14, + 42,23,0,0,240,124,30,112,124,28,120,124,60,120,254,60, + 56,238,60,60,238,56,61,239,120,61,231,120,29,199,112,31, + 199,240,31,199,240,15,131,224,15,131,224,15,131,224,13,14, + 28,15,1,0,240,120,120,240,124,224,61,224,31,192,31,128, + 15,128,31,128,31,192,63,224,57,224,120,240,240,248,240,120, + 14,19,38,15,0,251,248,60,120,60,120,60,60,120,60,120, + 60,112,30,240,30,240,14,224,15,224,15,224,7,192,7,192, + 3,192,7,128,7,128,7,128,15,0,15,0,11,14,28,13, + 1,0,255,224,255,224,1,224,3,224,7,192,7,128,15,0, + 30,0,60,0,124,0,248,0,240,0,255,224,255,224,10,27, + 54,13,2,249,3,192,15,192,31,128,30,0,30,0,30,0, + 30,0,30,0,30,0,28,0,28,0,60,0,248,0,224,0, + 248,0,124,0,60,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,128,15,192,7,192,2,29,29,10,4,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,10,27,54, + 14,2,249,240,0,252,0,124,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,15,0,7,192,3,192,7, + 192,15,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,124,0,252,0,240,0,14,3,6,14,0,5,63, + 156,127,248,225,240,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=34 h=37 x= 8 y=22 dx=35 dy= 0 ascent=37 len=160 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =37 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25[12908] U8G_SECTION(".progmem.u8g_font_fub25") = { + 0,50,46,254,247,25,7,111,16,148,32,255,249,37,247,25, + 249,0,0,0,10,0,0,5,25,25,14,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 0,0,248,248,248,248,13,10,20,18,2,15,248,248,248,248, + 248,248,120,248,120,120,120,120,120,120,120,120,120,112,120,112, + 21,25,75,24,2,0,0,224,224,0,225,224,0,225,192,1, + 225,192,1,195,192,1,195,128,31,255,248,31,255,240,63,255, + 240,7,135,0,7,135,0,7,15,0,7,14,0,15,14,0, + 14,14,0,255,255,192,255,255,192,255,255,192,28,60,0,28, + 60,0,60,56,0,56,56,0,56,120,0,120,112,0,112,112, + 0,18,31,93,20,1,252,0,192,0,0,192,0,3,248,0, + 15,252,0,31,254,0,63,255,0,126,223,0,120,207,128,248, + 207,128,248,192,0,252,192,0,126,192,0,127,192,0,127,240, + 0,31,252,0,7,255,0,1,255,128,0,255,128,0,207,128, + 0,199,192,248,199,192,248,199,192,248,207,128,126,223,128,127, + 255,0,63,254,0,15,252,0,3,240,0,0,192,0,0,192, + 0,0,192,0,32,26,104,34,1,0,0,0,3,128,15,192, + 7,0,63,240,7,0,124,248,14,0,120,120,14,0,240,60, + 28,0,240,60,24,0,240,60,56,0,240,60,112,0,240,60, + 112,0,120,120,224,0,120,120,224,0,63,241,199,248,15,195, + 143,252,0,3,159,62,0,7,30,30,0,7,60,15,0,14, + 60,15,0,30,60,15,0,28,60,15,0,56,60,15,0,56, + 60,15,0,112,30,30,0,112,15,60,0,224,15,252,1,224, + 3,240,24,25,75,27,2,1,7,252,0,31,254,0,31,255, + 0,62,31,0,62,31,0,62,31,0,62,31,0,30,62,0, + 31,126,0,15,252,0,7,240,0,15,224,0,63,224,124,63, + 240,120,124,248,120,252,124,120,248,62,120,248,31,248,248,15, + 240,248,7,240,252,3,224,126,15,240,63,255,248,31,255,254, + 7,252,63,5,10,10,14,4,15,248,248,120,120,120,120,120, + 120,120,120,7,30,30,13,3,251,30,30,62,60,60,124,124, + 120,120,248,248,248,248,248,248,248,248,248,248,248,248,120,120, + 124,124,60,60,62,30,30,8,30,30,14,3,251,240,120,120, + 124,60,60,60,62,62,30,30,30,30,31,31,31,31,31,30, + 30,30,62,62,62,60,60,124,120,120,240,14,13,26,22,4, + 13,28,224,60,240,28,224,15,192,135,132,255,252,255,252,231, + 156,15,192,30,224,28,224,60,240,8,64,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,255,255,240,255, + 255,240,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 7,9,9,11,2,251,62,60,60,120,120,112,240,240,224,9, + 5,10,11,1,7,255,128,255,128,255,128,255,128,255,128,5, + 5,5,10,3,0,248,248,248,248,248,11,28,56,15,2,254, + 0,224,0,224,1,192,1,192,1,192,3,128,3,128,3,128, + 3,128,7,0,7,0,7,0,14,0,14,0,14,0,28,0, + 28,0,28,0,56,0,56,0,56,0,56,0,112,0,112,0, + 112,0,224,0,224,0,224,0,17,25,75,19,1,1,7,224, + 0,31,252,0,63,254,0,60,30,0,120,15,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,120,15,0,120,15,0,120,15,0,60,30,0, + 31,252,0,15,248,0,7,224,0,11,25,50,19,3,1,3, + 224,15,224,31,224,127,224,255,224,251,224,243,224,195,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,17,25,75,19,1,1,7,248,0,31,254,0,31,255,0, + 63,255,0,126,31,128,124,15,128,124,15,128,0,15,128,0, + 15,128,0,31,0,0,31,0,0,62,0,0,126,0,0,252, + 0,1,248,0,3,240,0,7,224,0,15,192,0,63,0,0, + 126,0,0,252,0,0,255,255,128,255,255,128,255,255,128,255, + 255,128,16,25,50,19,2,1,31,240,63,252,127,254,255,254, + 248,62,248,31,0,31,0,30,0,126,7,252,7,240,7,248, + 7,252,0,62,0,31,0,31,0,31,248,31,248,31,248,31, + 252,62,127,254,127,252,31,248,15,224,18,25,75,19,1,1, + 0,126,0,0,254,0,0,254,0,1,254,0,3,254,0,3, + 254,0,7,190,0,15,190,0,15,62,0,30,62,0,30,62, + 0,60,62,0,124,62,0,120,62,0,240,62,0,255,255,192, + 255,255,192,255,255,192,255,255,192,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,17,25,75,19,1, + 1,255,254,0,255,254,0,255,254,0,255,254,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,252,63,0,248,31,0,248,15,0,0,15,128,0,15, + 128,0,15,128,0,15,0,248,15,0,248,31,0,252,63,0, + 127,254,0,127,252,0,63,248,0,15,224,0,17,25,75,19, + 1,1,3,240,0,15,252,0,31,254,0,63,255,0,62,31, + 0,126,15,128,124,0,0,124,0,0,252,0,0,248,248,0, + 251,254,0,255,254,0,255,31,0,254,15,128,252,15,128,252, + 15,128,252,15,128,252,15,128,124,15,128,126,15,128,127,31, + 0,63,255,0,31,254,0,15,252,0,3,240,0,16,25,50, + 19,2,1,255,255,255,255,255,255,255,255,0,15,0,31,0, + 30,0,62,0,62,0,124,0,124,0,248,0,248,0,240,1, + 240,1,240,3,224,3,224,7,192,7,192,15,128,15,128,15, + 128,31,0,31,0,17,25,75,19,1,1,7,240,0,31,252, + 0,127,255,0,127,255,0,252,31,128,248,15,128,248,15,128, + 120,15,0,124,31,0,63,254,0,15,248,0,31,248,0,63, + 254,0,124,63,0,248,15,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,252,31,128,127,255,0,127,255,0, + 31,252,0,7,240,0,17,25,75,19,1,1,7,240,0,31, + 252,0,63,254,0,127,254,0,124,63,0,248,31,0,248,31, + 0,248,31,128,248,31,128,248,31,128,248,63,128,124,63,128, + 127,255,128,63,239,128,15,207,128,0,15,128,0,31,0,0, + 31,0,248,31,0,120,63,0,124,126,0,63,254,0,63,252, + 0,31,248,0,7,224,0,5,18,18,11,5,0,248,248,248, + 248,248,0,0,0,0,0,0,0,0,248,248,248,248,248,7, + 22,22,11,2,252,62,62,62,62,62,0,0,0,0,0,0, + 0,0,62,60,124,120,120,112,240,224,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,248,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,248,0,0,63,0,0,7,224,0,0,248,0,0,63,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,16,25,50,19,1,1,31,240,63,248,127,252,248,62,112, + 30,48,31,0,31,0,30,0,62,0,60,0,120,0,240,1, + 224,3,192,3,128,3,128,3,128,3,128,3,128,0,0,0, + 0,7,192,7,192,7,192,7,192,33,32,160,35,1,250,0, + 31,254,0,0,0,127,255,128,0,1,255,255,224,0,3,255, + 255,240,0,7,240,3,248,0,15,192,1,252,0,31,128,0, + 124,0,63,7,159,126,0,62,31,255,63,0,124,63,255,31, + 0,124,127,255,31,0,120,126,63,31,0,248,252,31,15,0, + 248,248,31,15,128,248,248,31,15,128,248,248,31,15,128,248, + 248,31,15,0,248,248,31,15,0,248,248,31,15,0,248,248, + 31,31,0,120,124,63,30,0,124,124,127,190,0,124,63,255, + 252,0,62,31,231,248,0,63,7,195,240,0,31,128,0,0, + 0,15,192,0,0,0,7,248,3,0,0,3,255,255,0,0, + 1,255,255,0,0,0,127,255,0,0,0,7,255,0,0,23, + 25,75,24,1,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 19,25,75,23,2,0,255,248,0,255,254,0,255,255,0,255, + 255,0,248,63,0,248,15,128,248,15,128,248,15,0,248,15, + 0,248,63,0,255,254,0,255,248,0,255,252,0,255,255,0, + 248,15,192,248,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,7,224,255,255,192,255,255,128,255,255,0,255,252, + 0,21,25,75,25,2,1,3,255,0,15,255,192,31,255,224, + 63,255,240,62,3,240,124,1,240,120,1,248,120,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,1,248,120,1,248,124,1,248, + 124,3,240,63,7,240,31,255,224,15,255,192,7,255,0,1, + 252,0,20,25,75,23,2,0,255,224,0,255,252,0,255,254, + 0,255,255,0,248,63,128,248,15,192,248,7,192,248,3,224, + 248,3,224,248,1,224,248,1,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,224,248,3,224,248,3,224,248,7, + 192,248,15,192,248,63,128,255,255,0,255,254,0,255,252,0, + 255,224,0,17,25,75,21,2,0,255,255,0,255,255,0,255, + 255,0,255,255,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,0,255,255,0,255,255,0, + 255,255,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,128,255,255,128,255,255, + 128,255,255,128,16,25,50,19,2,0,255,255,255,255,255,255, + 255,255,248,0,248,0,248,0,248,0,248,0,248,0,255,254, + 255,254,255,254,255,254,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,22,25,75,26, + 2,1,1,255,192,7,255,224,15,255,240,31,255,248,63,0, + 248,62,0,124,124,0,124,124,0,0,248,0,0,248,0,0, + 248,0,0,248,7,252,248,7,252,248,7,252,248,7,252,248, + 0,124,248,0,124,124,0,124,126,0,124,63,0,124,63,192, + 124,31,255,252,15,255,252,3,255,252,0,127,192,20,25,75, + 24,2,0,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,255,255,240,255,255,240,255,255,240,255,255,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,5,25, + 25,9,2,0,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,17,25,75, + 21,2,0,0,15,128,0,15,128,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,127,255,0,127,254,0,63,252,0,15,240,0,19,25, + 75,23,2,0,248,7,192,248,15,128,248,31,128,248,63,0, + 248,126,0,248,124,0,248,248,0,249,248,0,251,240,0,251, + 224,0,255,192,0,255,192,0,255,224,0,255,240,0,251,240, + 0,249,248,0,249,252,0,248,252,0,248,126,0,248,63,0, + 248,63,128,248,31,128,248,15,192,248,15,224,248,7,224,16, + 25,50,19,2,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,255, + 255,255,255,255,255,255,255,27,25,100,31,2,0,255,0,31, + 224,255,0,63,224,255,128,63,224,255,128,63,224,255,128,127, + 224,255,192,127,224,255,192,123,224,251,192,123,224,251,224,251, + 224,251,224,243,224,251,224,243,224,249,241,243,224,249,241,243, + 224,249,241,227,224,248,243,227,224,248,251,227,224,248,251,195, + 224,248,127,195,224,248,127,195,224,248,127,131,224,248,127,131, + 224,248,63,131,224,248,63,131,224,248,63,3,224,248,31,3, + 224,21,25,75,25,2,0,254,0,248,255,0,248,255,0,248, + 255,128,248,255,128,248,255,192,248,255,192,248,251,224,248,251, + 224,248,249,224,248,249,240,248,248,240,248,248,248,248,248,120, + 248,248,124,248,248,60,248,248,62,248,248,30,248,248,31,248, + 248,31,248,248,15,248,248,15,248,248,7,248,248,7,248,248, + 3,248,23,25,75,27,2,1,3,255,128,7,255,192,31,255, + 240,31,255,240,63,1,248,126,0,252,124,0,124,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,62,0,248,63,131,248,31,255,240,15,255,224,7,255,192, + 0,254,0,18,25,75,21,2,0,255,240,0,255,252,0,255, + 255,0,255,255,128,248,31,128,248,15,128,248,7,192,248,7, + 192,248,7,192,248,15,128,248,31,128,255,255,128,255,255,0, + 255,252,0,255,240,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,26,25,100,29,2,1,3,255,128,0,7,255, + 192,0,31,255,224,0,31,255,240,0,63,1,248,0,126,0, + 252,0,124,0,124,0,120,0,60,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,120,0,60,0,124,0, + 124,0,124,0,124,0,62,0,248,0,63,131,240,0,31,255, + 255,192,15,255,255,192,3,255,255,192,0,255,255,192,19,25, + 75,22,2,0,255,252,0,255,255,0,255,255,128,255,255,192, + 248,15,192,248,7,224,248,3,224,248,3,224,248,3,192,248, + 7,192,248,31,128,255,255,0,255,252,0,255,255,0,255,255, + 128,248,15,128,248,7,192,248,7,192,248,7,192,248,3,192, + 248,3,192,248,3,192,248,3,224,248,3,224,248,3,224,20, + 25,75,23,2,1,7,254,0,15,255,0,31,255,128,63,255, + 192,126,7,192,124,3,192,124,3,224,124,0,0,124,0,0, + 127,0,0,63,240,0,31,254,0,7,255,128,1,255,192,0, + 31,224,0,3,224,0,1,240,248,1,240,248,1,240,248,3, + 224,126,7,224,127,255,192,63,255,128,15,255,0,3,248,0, + 20,25,75,22,1,0,255,255,240,255,255,240,255,255,240,255, + 255,240,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,21,25,75,25,2,0,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,240,248,0,240,120,1,240, + 124,3,240,127,7,224,63,255,192,31,255,128,15,255,0,3, + 252,0,24,25,75,25,1,0,248,0,63,248,0,62,252,0, + 62,124,0,124,124,0,124,126,0,124,62,0,248,63,0,248, + 63,1,240,31,1,240,31,129,240,31,131,224,15,131,224,15, + 195,224,7,199,192,7,199,192,7,231,128,3,239,128,3,255, + 128,3,255,0,1,255,0,1,254,0,1,254,0,0,254,0, + 0,252,0,34,25,125,34,0,0,252,3,240,15,192,252,3, + 240,15,128,124,3,240,15,128,126,7,248,15,128,126,7,248, + 15,128,126,7,248,31,0,62,7,248,31,0,62,15,252,31, + 0,63,15,60,30,0,63,15,60,62,0,31,15,60,62,0, + 31,31,62,62,0,31,30,30,60,0,31,158,30,60,0,15, + 158,30,124,0,15,190,31,124,0,15,188,15,120,0,7,252, + 15,120,0,7,252,15,120,0,7,252,15,248,0,7,248,7, + 240,0,3,248,7,240,0,3,248,7,240,0,3,248,7,240, + 0,3,240,3,224,0,22,25,75,24,1,0,252,0,248,126, + 1,248,62,1,240,63,3,224,31,135,192,15,135,192,15,207, + 128,7,239,0,3,255,0,3,254,0,1,252,0,0,252,0, + 0,252,0,1,254,0,3,254,0,3,255,0,7,223,128,15, + 143,128,15,15,192,31,7,224,62,3,224,62,3,240,124,1, + 248,248,1,248,248,0,252,21,25,75,22,1,0,252,1,248, + 252,1,240,126,3,224,126,3,224,63,7,192,31,7,192,31, + 143,128,15,143,128,15,223,0,7,223,0,7,254,0,3,254, + 0,3,252,0,1,248,0,1,248,0,0,240,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,18,25,75,22,2,0,127,255, + 192,127,255,192,127,255,192,127,255,192,0,15,192,0,31,128, + 0,63,0,0,63,0,0,126,0,0,252,0,1,252,0,1, + 248,0,3,240,0,7,224,0,7,224,0,15,192,0,31,128, + 0,63,128,0,63,0,0,126,0,0,252,0,0,255,255,192, + 255,255,192,255,255,192,255,255,192,8,32,32,13,3,249,255, + 255,255,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,255,255,255,11, + 28,56,15,2,254,224,0,224,0,240,0,240,0,240,0,112, + 0,120,0,120,0,56,0,60,0,60,0,28,0,30,0,30, + 0,30,0,15,0,15,0,15,0,7,0,7,128,7,128,3, + 128,3,192,3,192,1,192,1,224,1,224,1,224,8,32,32, + 13,3,249,255,255,255,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 255,255,255,18,21,63,34,8,0,0,192,0,0,224,0,1, + 224,0,1,224,0,1,48,0,3,48,0,2,24,0,6,24, + 0,6,24,0,4,12,0,12,12,0,12,14,0,24,6,0, + 24,6,0,24,7,0,48,3,0,48,3,0,112,1,128,96, + 1,128,96,1,192,192,0,192,17,3,9,17,0,251,255,255, + 128,255,255,128,255,255,128,7,7,7,9,255,21,248,120,60, + 60,28,14,6,15,18,36,19,2,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,17,25, + 75,20,2,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,254,63,0,252,31,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 252,31,0,254,63,0,255,254,0,251,252,0,249,240,0,15, + 18,36,18,2,0,7,224,31,248,63,252,124,124,120,60,248, + 62,248,0,248,0,248,0,248,0,248,0,248,62,248,62,120, + 60,124,124,63,252,31,248,15,224,17,25,75,21,2,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,7,207,128,31,255,128,63,255,128,126,63,128, + 124,31,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,128,126,63, + 128,63,255,128,31,239,128,7,207,128,15,18,36,19,2,0, + 7,224,31,248,63,252,124,60,120,62,248,30,248,30,255,254, + 255,254,255,254,248,0,248,0,248,30,120,62,124,62,63,252, + 31,248,7,224,12,25,50,13,1,0,7,240,15,240,31,240, + 31,0,31,0,31,0,31,0,255,224,255,224,255,224,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,17,25,75,21, + 2,249,7,207,128,31,255,128,63,255,128,126,63,128,124,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,31,128,126,63,128,63, + 255,128,31,239,128,7,207,128,0,15,128,0,15,128,124,15, + 128,124,31,0,63,254,0,31,252,0,7,240,0,16,25,50, + 20,2,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,249,248,255,252,255,254,254,63,252,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,5,25,25,9,2,0,248,248,248,248,248, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,6,32,32,12,4,249,124,124,124,124,124,0, + 0,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,252,252,248,240,16,25,50,19,2,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,62, + 248,124,248,248,249,248,249,240,251,224,255,192,255,192,255,192, + 255,192,251,224,251,240,249,240,248,248,248,252,248,124,248,126, + 248,63,5,25,25,9,2,0,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,27,18,72,31,2,0,249,248,62,0,251,252,127,128,255, + 254,255,192,254,63,199,192,252,63,135,192,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,16, + 18,36,20,2,0,249,248,251,252,255,254,252,63,252,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,18,18,54,21,2,0,3, + 240,0,15,252,0,63,254,0,62,31,0,124,15,128,120,15, + 128,248,7,128,248,7,128,248,7,192,248,7,192,248,7,192, + 248,7,128,120,15,128,124,15,128,62,31,0,63,254,0,15, + 252,0,3,240,0,17,25,75,20,2,249,249,240,0,251,252, + 0,255,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,252,31,0,254,63,0,255,254,0,255,252,0,249,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,21,2,249,7,207,128,31, + 239,128,63,255,128,126,63,128,124,31,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,128,126,63,128,63,255,128,31,255,128,7, + 207,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,11,18,36,13,2,0,249,224,251, + 224,255,224,255,224,255,0,252,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,15,18,36,18,2,0,15,224,63,248,127,248,124,124,248, + 124,248,124,126,0,127,192,63,248,15,252,1,252,0,126,248, + 62,248,62,248,124,127,252,63,248,15,192,13,23,46,14,1, + 0,1,0,7,0,31,0,31,0,31,0,255,240,255,240,255, + 240,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,15,128,15,248,7,248,3,240,16, + 18,36,20,2,0,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,252,63,127,255,63,223,31,159,18,18,54,19,0,0,248, + 7,192,124,7,192,124,15,128,124,15,128,62,15,128,62,31, + 0,62,31,0,31,30,0,31,30,0,15,62,0,15,188,0, + 15,188,0,7,252,0,7,248,0,7,248,0,3,240,0,3, + 240,0,1,240,0,29,18,72,29,0,0,248,15,128,248,124, + 31,192,240,124,31,193,240,124,31,193,240,124,31,225,224,62, + 63,225,224,62,61,227,224,62,61,227,224,31,125,243,192,31, + 120,247,192,31,120,247,192,15,248,255,128,15,248,127,128,15, + 240,127,128,15,240,127,128,7,240,127,0,7,224,63,0,7, + 224,63,0,17,18,54,19,1,0,252,31,0,124,31,0,126, + 62,0,63,60,0,31,124,0,15,248,0,15,248,0,7,240, + 0,7,224,0,7,240,0,15,248,0,31,248,0,30,252,0, + 62,126,0,60,62,0,124,63,0,248,31,0,248,15,128,17, + 25,75,18,1,249,248,15,128,248,15,128,248,15,0,124,31, + 0,124,31,0,124,30,0,62,62,0,62,60,0,30,60,0, + 31,124,0,31,120,0,15,248,0,15,248,0,15,240,0,7, + 240,0,7,240,0,3,224,0,3,224,0,3,224,0,3,192, + 0,7,192,0,7,128,0,7,128,0,15,128,0,15,128,0, + 14,18,36,18,2,0,255,252,255,252,255,252,0,124,0,248, + 1,248,3,240,7,224,7,192,15,128,31,128,63,0,126,0, + 124,0,248,0,255,252,255,252,255,252,13,35,70,18,3,248, + 0,248,3,248,7,248,15,192,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,0,15,0,15,0,31,0,126,0, + 252,0,240,0,252,0,126,0,63,0,31,0,15,0,15,0, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,192, + 7,248,3,248,0,248,2,37,37,12,5,247,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,13,35,70,17,2,248,248,0,254,0,255,0,31,0,15, + 0,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,7,128,7,192,3,224,1,248,0,248,1,248,3,224,7, + 192,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,0,31,0,255,0,254,0,248,0,18,4,12, + 18,0,7,31,195,192,63,255,128,127,255,0,240,126,0,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,10,0,0,5,25,25,13,4,249,248,248,248,248, + 0,0,0,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,15,26,52,19,2,252,0,48,0,48,0, + 48,0,32,7,224,31,248,63,252,124,252,120,254,248,254,249, + 128,249,128,249,128,249,0,251,0,251,62,251,62,126,62,126, + 124,63,252,31,248,15,224,12,0,24,0,24,0,24,0,17, + 25,75,20,2,1,7,254,0,15,255,0,31,255,0,31,15, + 128,62,15,128,62,0,0,62,0,0,62,0,0,62,0,0, + 255,240,0,255,240,0,255,240,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,255,128,255,255,128,255,255,128, + 18,19,57,20,1,6,64,0,128,224,1,192,115,227,128,63, + 255,0,30,30,0,28,14,0,24,6,0,48,3,0,48,3, + 0,48,3,0,48,3,0,48,3,0,24,6,0,28,14,0, + 30,30,0,63,255,0,115,243,128,224,1,192,64,0,128,19, + 25,75,21,1,0,248,3,224,248,7,224,124,7,192,124,7, + 192,62,15,128,62,15,128,31,31,0,255,31,224,255,191,224, + 15,190,0,7,252,0,7,252,0,3,248,0,255,255,224,255, + 255,224,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 2,33,33,12,5,249,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,0,0,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,14,31,62,16,1,251,31,240,63, + 248,127,248,124,24,248,0,248,0,124,0,126,0,63,128,31, + 192,31,240,63,248,124,248,248,124,240,60,240,120,240,120,253, + 240,127,224,63,192,31,224,7,240,1,248,0,252,0,124,0, + 124,128,248,225,248,255,240,255,224,63,128,11,4,8,11,0, + 22,241,224,241,224,241,224,241,224,25,25,100,29,2,1,0, + 255,192,0,3,255,224,0,15,0,120,0,30,0,60,0,24, + 63,14,0,56,127,134,0,112,255,199,0,97,227,195,0,225, + 193,227,128,195,193,225,128,195,192,1,128,195,192,1,128,195, + 192,1,128,195,192,1,128,195,193,225,128,227,193,227,128,97, + 227,195,0,113,255,195,0,48,255,135,0,56,62,14,0,28, + 0,28,0,15,0,120,0,7,193,240,0,1,255,224,0,0, + 127,0,0,12,17,34,14,1,8,15,128,63,192,56,224,112, + 224,0,224,15,224,63,224,120,224,112,224,112,224,121,224,63, + 224,30,96,0,0,0,0,255,240,255,240,17,14,42,21,2, + 2,31,15,128,30,31,0,62,31,0,60,62,0,124,62,0, + 124,124,0,248,124,0,248,124,0,124,124,0,124,62,0,60, + 62,0,62,31,0,30,15,0,31,15,128,18,8,24,21,2, + 7,255,255,192,255,255,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,255,25,25,100,29,2,1, + 0,255,192,0,3,255,224,0,15,0,120,0,30,0,60,0, + 25,255,142,0,57,255,198,0,113,255,231,0,97,193,227,0, + 225,192,227,128,193,193,225,128,193,255,129,128,193,255,129,128, + 193,255,193,128,193,193,193,128,193,193,193,128,225,192,227,128, + 97,192,227,0,113,192,227,0,49,192,231,0,56,0,14,0, + 28,0,28,0,15,0,120,0,7,193,240,0,1,255,224,0, + 0,127,0,0,11,3,6,11,0,22,255,224,255,224,255,224, + 7,7,7,11,2,18,56,196,130,130,130,196,120,20,21,63, + 34,7,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,255,255,240,255,255,240,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,240,255, + 255,240,11,13,26,13,1,13,63,128,127,192,241,224,1,224, + 1,224,3,192,7,192,15,128,30,0,124,0,240,0,255,192, + 255,192,11,14,28,13,1,12,127,128,255,128,227,192,3,192, + 7,192,31,128,31,128,3,192,1,224,1,224,225,224,243,192, + 127,128,63,0,7,7,7,8,2,21,62,60,56,120,112,224, + 192,255,16,31,62,19,2,250,15,255,63,255,127,24,255,24, + 255,24,255,24,255,24,255,24,255,24,255,24,127,24,63,24, + 31,24,3,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,5,5,5,10,3,10,248,248,248,248, + 248,9,8,16,9,1,247,48,0,48,0,63,0,7,128,3, + 128,3,128,255,0,254,0,6,14,14,9,1,12,28,124,252, + 220,28,28,28,28,28,28,28,28,28,28,12,17,34,14,1, + 8,31,128,63,192,121,224,112,224,224,112,224,112,224,112,224, + 112,224,112,112,224,121,224,63,192,31,128,0,0,0,0,255, + 240,255,240,16,14,28,21,2,2,240,120,248,124,124,60,124, + 62,62,30,62,31,31,31,31,31,62,31,62,30,124,62,124, + 60,248,124,240,120,25,26,104,27,1,0,28,0,120,0,124, + 0,112,0,252,0,240,0,156,0,224,0,28,1,192,0,28, + 1,192,0,28,3,128,0,28,7,128,0,28,7,0,0,28, + 14,0,0,28,14,0,0,28,28,0,0,28,28,30,0,28, + 56,30,0,0,120,62,0,0,112,126,0,0,224,126,0,0, + 224,238,0,1,193,206,0,1,193,206,0,3,131,142,0,7, + 3,255,128,7,3,255,128,14,0,14,0,14,0,14,0,28, + 0,14,0,25,26,104,27,1,0,28,0,112,0,124,0,224, + 0,252,0,224,0,220,1,192,0,28,3,192,0,28,3,128, + 0,28,7,0,0,28,7,0,0,28,14,0,0,28,14,0, + 0,28,28,0,0,28,56,0,0,28,56,124,0,28,113,255, + 0,0,115,199,128,0,227,199,128,0,192,7,128,1,192,15, + 128,3,128,15,0,3,128,30,0,7,0,60,0,6,0,248, + 0,14,1,240,0,12,3,192,0,28,3,255,0,24,3,255, + 0,25,25,100,27,1,1,127,128,60,0,255,192,56,0,227, + 192,112,0,3,192,112,0,31,128,224,0,31,129,224,0,3, + 193,192,0,1,227,192,0,225,227,128,0,227,231,128,0,127, + 207,0,0,63,14,30,0,0,30,62,0,0,28,62,0,0, + 60,126,0,0,56,110,0,0,120,238,0,0,241,206,0,0, + 241,206,0,1,227,142,0,1,227,255,128,3,195,255,128,3, + 128,14,0,7,128,14,0,15,0,14,0,16,25,50,18,1, + 249,3,224,3,224,3,224,3,224,0,0,0,0,0,0,1, + 192,1,192,1,192,3,192,7,128,15,0,30,0,60,0,124, + 0,248,0,248,0,248,0,248,14,248,31,124,62,63,254,31, + 248,7,224,23,35,105,24,1,0,3,192,0,3,192,0,1, + 224,0,0,224,0,0,112,0,0,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,124,0,0,252,0,0,254,0, + 0,254,0,1,254,0,1,255,0,3,255,0,3,207,0,3, + 207,128,7,207,128,7,135,192,7,135,192,15,135,192,15,3, + 224,31,3,224,31,3,240,31,255,240,63,255,240,63,255,248, + 127,255,248,124,0,248,124,0,252,248,0,124,248,0,126,240, + 0,62,23,35,105,24,1,0,0,15,0,0,15,0,0,30, + 0,0,28,0,0,56,0,0,48,0,0,112,0,0,0,0, + 0,0,0,0,0,0,0,124,0,0,252,0,0,254,0,0, + 254,0,1,254,0,1,255,0,3,255,0,3,207,0,3,207, + 128,7,207,128,7,135,192,7,135,192,15,135,192,15,3,224, + 31,3,224,31,3,240,31,255,240,63,255,240,63,255,248,127, + 255,248,124,0,248,124,0,252,248,0,124,248,0,126,240,0, + 62,23,35,105,24,1,0,0,252,0,0,252,0,0,254,0, + 1,206,0,1,199,0,3,135,0,3,3,128,0,0,0,0, + 0,0,0,0,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 23,34,102,24,1,0,0,1,128,1,255,0,3,255,0,3, + 254,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,124,0,0,252,0,0,254,0,0,254,0,1,254,0, + 1,255,0,3,255,0,3,207,0,3,207,128,7,207,128,7, + 135,192,7,135,192,15,135,192,15,3,224,31,3,224,31,3, + 240,31,255,240,63,255,240,63,255,248,127,255,248,124,0,248, + 124,0,252,248,0,124,248,0,126,240,0,62,23,34,102,25, + 1,0,3,199,128,3,199,128,3,199,128,3,199,128,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0, + 0,124,0,0,254,0,0,254,0,1,255,0,1,255,0,1, + 239,0,3,239,128,3,239,128,3,199,128,7,199,192,7,199, + 192,15,131,224,15,131,224,15,131,224,31,1,240,31,255,240, + 31,255,240,63,255,248,63,255,248,124,0,252,124,0,124,124, + 0,124,248,0,62,248,0,62,23,37,111,24,1,0,0,120, + 0,0,252,0,1,206,0,1,134,0,1,134,0,1,206,0, + 0,252,0,0,120,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,124,0,0,252,0,0,252,0,0,254,0,1,254, + 0,1,255,0,3,255,0,3,207,0,3,207,128,7,207,128, + 7,135,192,7,135,192,15,135,192,15,3,224,31,3,224,31, + 3,224,31,255,240,63,255,240,63,255,248,127,255,248,124,0, + 248,124,0,252,248,0,124,248,0,126,240,0,62,32,25,100, + 34,1,0,0,7,255,254,0,15,255,254,0,15,255,254,0, + 31,240,0,0,31,240,0,0,63,240,0,0,61,240,0,0, + 121,240,0,0,249,240,0,0,241,240,0,1,241,255,254,1, + 225,255,254,3,225,255,254,3,193,255,254,7,193,240,0,7, + 255,240,0,15,255,240,0,15,255,240,0,31,255,240,0,30, + 1,240,0,62,1,240,0,60,1,255,255,124,1,255,255,248, + 1,255,255,248,1,255,255,21,33,99,25,2,249,3,255,0, + 15,255,192,31,255,224,63,255,240,62,3,240,124,1,240,120, + 1,248,120,0,248,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,248, + 120,1,248,124,1,248,124,3,240,63,7,240,31,255,224,31, + 255,192,7,255,128,1,252,0,0,96,0,0,120,0,0,126, + 0,0,15,0,0,7,0,0,7,0,1,254,0,1,252,0, + 17,35,105,21,2,0,30,0,0,15,0,0,7,0,0,7, + 128,0,3,128,0,1,192,0,0,192,0,0,0,0,0,0, + 0,0,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,0,255,255,0,255,255,0,255,255,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,255,255,128,255,255,128,255,255,128,255,255,128,17, + 35,105,21,2,0,0,120,0,0,240,0,0,224,0,1,192, + 0,1,128,0,3,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,0,255,255,0,255,255,0,255,255,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,0,255,255,0,255,255,0,255,255,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,17,35, + 105,21,2,0,7,224,0,7,224,0,15,240,0,14,112,0, + 14,56,0,28,56,0,24,28,0,0,0,0,0,0,0,0, + 0,0,255,255,0,255,255,0,255,255,0,255,255,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 255,255,0,255,255,0,255,255,0,255,255,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,128,255,255,128,255,255,128,255,255,128,17,34,102, + 21,2,0,30,60,0,30,60,0,30,60,0,30,60,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, + 0,255,255,0,255,255,0,255,255,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,255,255,0,255, + 255,0,255,255,0,255,255,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,255,255,128, + 255,255,128,255,255,128,255,255,128,8,35,35,9,255,0,240, + 120,56,60,28,12,6,0,0,0,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,7,35,35,8,2,0,30,28,60,56,112,96,224,0, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,11,35,70,9,255, + 0,31,0,63,0,63,128,59,128,113,192,97,192,192,224,0, + 0,0,0,0,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,11,34,68,11,0,0,241,224,241, + 224,241,224,241,224,0,0,0,0,0,0,0,0,0,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,23,25,75,24,0,0,63,252,0,63,255,128,63,255,192, + 63,255,224,62,7,240,62,1,248,62,0,248,62,0,124,62, + 0,124,62,0,60,62,0,60,255,240,62,255,240,62,255,240, + 62,62,0,60,62,0,60,62,0,124,62,0,124,62,0,248, + 62,1,248,62,7,240,63,255,224,63,255,192,63,255,128,63, + 252,0,21,34,102,25,2,0,0,3,0,1,255,0,3,254, + 0,7,252,0,6,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,254,0,248,255,0,248,255,0,248,255,128,248,255, + 128,248,255,192,248,255,192,248,251,224,248,251,224,248,249,224, + 248,249,240,248,248,240,248,248,248,248,248,120,248,248,124,248, + 248,60,248,248,62,248,248,30,248,248,31,248,248,31,248,248, + 15,248,248,15,248,248,7,248,248,7,248,248,3,248,23,36, + 108,27,2,0,7,192,0,3,192,0,1,224,0,0,224,0, + 0,240,0,0,112,0,0,56,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,255,128,7,255,192,31,255,240,31,255, + 240,63,1,248,126,0,252,124,0,124,120,0,60,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,124,0,124,124,0,124,62,0, + 248,63,131,248,31,255,240,15,255,224,7,255,192,0,254,0, + 23,36,108,27,2,0,0,7,192,0,7,128,0,15,0,0, + 14,0,0,28,0,0,24,0,0,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,255,128,7,255,192,31,255,240, + 31,255,240,63,1,248,126,0,252,124,0,124,120,0,60,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,124,0,124,124,0,124, + 62,0,248,63,131,248,31,255,240,15,255,224,7,255,192,0, + 254,0,23,36,108,27,2,0,0,124,0,0,254,0,0,254, + 0,1,239,0,1,199,0,3,131,128,3,1,128,0,0,0, + 0,0,0,0,0,0,0,0,0,3,255,128,7,255,192,31, + 255,240,31,255,240,63,1,248,126,0,252,124,0,124,120,0, + 60,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,124,0,124,124, + 0,124,62,0,248,63,131,248,31,255,240,15,255,224,7,255, + 192,0,254,0,23,34,102,27,2,0,0,241,128,1,255,128, + 3,255,0,3,30,0,3,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,255,128,7,255,192,31,255,240,31,255, + 240,63,1,248,126,0,252,124,0,124,120,0,60,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,124,0,124,124,0,124,62,0, + 248,63,131,248,31,255,240,15,255,224,7,255,192,0,254,0, + 23,34,102,27,2,0,3,199,128,3,199,128,3,199,128,3, + 199,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,255,128,7,255,192,31,255,240,31,255,240,63,1,248, + 126,0,252,124,0,124,120,0,60,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,124,0,124,124,0,124,62,0,248,63,131,248, + 31,255,240,15,255,224,7,255,192,0,254,0,18,19,57,34, + 8,1,64,0,0,224,0,192,112,1,128,56,3,0,28,6, + 0,14,12,0,6,24,0,3,48,0,1,224,0,0,192,0, + 1,224,0,3,48,0,6,24,0,12,12,0,24,6,0,48, + 3,0,112,1,128,224,1,192,64,0,128,25,28,112,27,1, + 255,0,0,1,0,0,0,3,128,1,255,195,128,3,255,247, + 0,15,255,254,0,15,255,252,0,31,128,252,0,63,0,126, + 0,62,0,254,0,60,1,254,0,124,3,223,0,124,7,159, + 0,124,15,31,0,124,30,31,0,124,60,31,0,124,120,31, + 0,124,240,31,0,125,224,31,0,127,192,31,0,63,128,62, + 0,63,0,62,0,63,0,124,0,31,193,252,0,63,255,248, + 0,127,255,240,0,243,255,224,0,224,127,0,0,64,0,0, + 0,21,36,108,25,2,0,15,0,0,7,128,0,3,192,0, + 3,192,0,1,224,0,0,224,0,0,112,0,0,0,0,0, + 0,0,0,0,0,0,0,0,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,240,248,0,240,120,1, + 240,124,3,240,127,7,224,63,255,192,31,255,128,15,255,0, + 3,252,0,21,36,108,25,2,0,0,15,128,0,15,0,0, + 30,0,0,60,0,0,56,0,0,112,0,0,96,0,0,0, + 0,0,0,0,0,0,0,0,0,0,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,240,248,0,240, + 120,1,240,124,3,240,127,7,224,63,255,192,31,255,128,15, + 255,0,3,252,0,21,36,108,25,2,0,0,248,0,1,248, + 0,1,252,0,3,220,0,7,142,0,7,14,0,14,7,0, + 0,0,0,0,0,0,0,0,0,0,0,0,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,240,248, + 0,240,120,1,240,124,3,240,127,7,224,63,255,192,31,255, + 128,15,255,0,3,252,0,21,34,102,25,2,0,7,143,0, + 7,143,0,7,143,0,7,143,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,240,248,0,240,124,1, + 240,124,3,240,127,7,224,63,255,192,31,255,128,15,255,0, + 3,252,0,21,35,105,22,1,0,0,30,0,0,30,0,0, + 28,0,0,56,0,0,48,0,0,112,0,0,0,0,0,0, + 0,0,0,0,0,0,0,252,1,248,252,1,240,126,3,224, + 126,3,224,63,7,192,31,7,192,31,143,128,15,143,128,15, + 223,0,7,223,0,7,254,0,3,254,0,3,252,0,1,248, + 0,1,248,0,0,240,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,18,25,75,22,2,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,240,0,255,254,0,255,255,0,255,255,128, + 248,15,128,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,255,255,128,255,255,0,255,254,0,255,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,18,25,75,19,1,1,31,240,0,63,252,0,127, + 252,0,248,62,0,248,62,0,248,62,0,248,62,0,248,124, + 0,248,248,0,248,240,0,249,240,0,251,224,0,251,224,0, + 249,248,0,249,252,0,248,127,0,248,63,128,248,15,128,248, + 7,128,248,7,192,251,199,192,251,199,128,249,255,128,249,255, + 0,248,126,0,15,28,56,19,2,0,60,0,30,0,14,0, + 7,0,7,0,3,128,1,128,0,0,0,0,0,0,7,224, + 63,248,127,252,124,62,120,62,0,62,15,254,63,254,127,254, + 124,62,248,62,248,62,248,62,248,62,252,126,127,254,63,222, + 31,30,15,28,56,19,2,0,0,120,0,240,0,240,1,224, + 1,192,1,128,3,0,0,0,0,0,0,0,7,224,63,248, + 127,252,124,62,120,62,0,62,15,254,63,254,127,254,124,62, + 248,62,248,62,248,62,248,62,252,126,127,254,63,222,31,30, + 15,28,56,19,2,0,7,192,7,224,15,224,14,240,28,112, + 24,56,56,24,0,0,0,0,0,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,15,26, + 52,19,2,0,0,24,15,248,31,240,31,224,48,0,0,0, + 0,0,0,0,7,224,63,248,127,252,124,62,120,62,0,62, + 15,254,63,254,127,254,124,62,248,62,248,62,248,62,248,62, + 252,126,127,254,63,222,31,30,15,27,54,19,2,0,60,120, + 60,120,60,120,60,120,0,0,0,0,0,0,0,0,0,0, + 15,224,63,248,127,252,124,62,120,62,0,62,15,254,63,254, + 127,254,124,62,248,62,248,62,248,62,248,62,252,126,127,254, + 63,222,31,30,15,30,60,19,2,0,3,192,7,224,14,112, + 12,48,12,48,14,112,7,224,3,192,0,0,0,0,0,0, + 0,0,7,224,31,248,63,252,124,62,120,62,0,62,15,254, + 63,254,127,254,124,62,248,62,248,62,248,62,248,62,252,126, + 127,254,63,222,31,30,27,18,72,31,2,0,7,224,124,0, + 31,249,255,0,127,253,255,128,124,63,135,192,120,31,3,192, + 0,31,3,224,7,255,255,224,63,255,255,224,127,255,255,224, + 124,31,0,0,248,31,0,0,248,31,0,0,248,31,131,224, + 248,31,131,192,252,59,199,192,127,241,255,192,63,224,255,128, + 15,128,126,0,15,26,52,18,2,248,7,224,31,248,63,252, + 124,124,120,60,248,62,248,62,248,0,248,0,248,0,248,0, + 248,62,248,62,120,60,124,124,63,252,31,248,15,224,3,0, + 3,128,3,224,0,240,0,112,0,112,15,224,15,192,15,28, + 56,19,2,0,62,0,30,0,15,0,7,0,7,128,3,128, + 1,192,0,0,0,0,0,0,7,224,31,248,63,252,124,60, + 120,62,248,30,248,30,255,254,255,254,255,254,248,0,248,0, + 248,30,120,62,124,62,63,252,31,248,7,224,15,28,56,19, + 2,0,0,120,0,112,0,240,0,224,1,192,1,128,3,0, + 0,0,0,0,0,0,7,224,31,248,63,252,124,60,120,62, + 248,30,248,30,255,254,255,254,255,254,248,0,248,0,248,30, + 120,62,124,62,63,252,31,248,7,224,15,28,56,19,2,0, + 7,224,7,224,15,224,14,112,28,112,28,56,56,24,0,0, + 0,0,0,0,7,224,31,248,63,252,124,60,120,62,248,30, + 248,30,255,254,255,254,255,254,248,0,248,0,248,30,120,62, + 124,62,63,252,31,248,7,224,15,27,54,19,2,0,60,120, + 60,120,60,120,60,120,0,0,0,0,0,0,0,0,0,0, + 7,224,31,248,63,252,124,124,120,62,248,62,248,62,255,254, + 255,254,255,254,248,0,248,0,248,62,120,62,124,126,63,252, + 31,248,7,224,8,28,28,9,255,0,240,120,120,60,28,14, + 6,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,7,28,28,8,2,0,30,60,56,120, + 112,224,192,0,0,0,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,10,28,56,9,255,0,31,0, + 63,0,63,128,123,128,115,192,97,192,224,192,0,0,0,0, + 0,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,11,26,52,9,255,0,241,224,241,224, + 241,224,241,224,0,0,0,0,0,0,0,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 18,26,78,21,2,0,0,1,0,15,135,0,3,254,0,1, + 248,0,3,248,0,15,252,0,60,60,0,16,30,0,7,255, + 0,31,255,0,63,255,0,126,31,128,124,15,128,248,15,128, + 248,7,128,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,128,120,15,128,124,15,128,126,31,0,63,255,0,31,252, + 0,3,240,0,16,26,52,20,2,0,0,24,15,248,31,248, + 31,240,48,0,0,0,0,0,0,0,249,248,251,252,255,254, + 252,63,252,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,18,28, + 84,21,2,0,31,0,0,15,0,0,7,128,0,3,128,0, + 3,192,0,1,192,0,0,224,0,0,0,0,0,0,0,0, + 0,0,3,240,0,15,252,0,63,254,0,62,31,0,124,15, + 128,120,15,128,248,7,128,248,7,128,248,7,192,248,7,192, + 248,7,192,248,7,128,120,15,128,124,15,128,62,31,0,63, + 254,0,15,252,0,3,240,0,18,28,84,21,2,0,0,60, + 0,0,56,0,0,120,0,0,112,0,0,224,0,0,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,3,240,0,15, + 252,0,63,254,0,62,31,0,124,15,128,120,15,128,248,7, + 128,248,7,128,248,7,192,248,7,192,248,7,192,248,7,128, + 120,15,128,124,15,128,62,31,0,63,254,0,15,252,0,3, + 240,0,18,28,84,21,2,0,3,224,0,3,240,0,7,240, + 0,7,56,0,14,56,0,14,28,0,28,12,0,0,0,0, + 0,0,0,0,0,0,3,240,0,15,252,0,63,254,0,62, + 31,0,124,15,128,120,15,128,248,7,128,248,7,128,248,7, + 192,248,7,192,248,7,192,248,7,128,120,15,128,124,15,128, + 62,31,0,63,254,0,15,252,0,3,240,0,18,27,81,21, + 2,0,0,4,0,0,12,0,7,252,0,15,248,0,15,240, + 0,24,0,0,0,0,0,0,0,0,0,0,0,3,240,0, + 15,252,0,63,254,0,62,31,0,124,15,128,120,15,128,248, + 7,128,248,7,128,248,7,192,248,7,192,248,7,192,248,7, + 128,120,15,128,124,15,128,62,31,0,63,254,0,15,252,0, + 3,240,0,18,27,81,21,2,0,30,60,0,30,60,0,30, + 60,0,30,60,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,240,0,15,252,0,63,254,0,62,31,0, + 124,15,128,120,15,128,248,7,128,248,7,128,248,7,192,248, + 7,192,248,7,192,248,7,128,120,15,128,124,15,128,62,31, + 0,63,254,0,15,252,0,3,240,0,20,15,45,34,7,3, + 0,112,0,0,248,0,0,248,0,0,112,0,0,0,0,0, + 0,0,0,0,0,255,255,240,255,255,240,0,0,0,0,0, + 0,0,112,0,0,248,0,0,248,0,0,112,0,18,23,69, + 21,2,254,0,1,0,0,1,128,0,3,128,3,247,0,15, + 255,0,63,254,0,62,31,0,124,63,128,120,55,128,248,119, + 128,248,231,128,249,199,192,251,135,192,251,135,192,255,7,128, + 126,15,128,124,15,128,62,31,0,63,254,0,127,252,0,227, + 240,0,224,0,0,192,0,0,16,28,56,20,2,0,62,0, + 30,0,15,0,7,0,3,128,3,128,1,192,0,0,0,0, + 0,0,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,252,63, + 127,255,63,223,31,159,16,28,56,20,2,0,0,120,0,240, + 0,240,0,224,1,192,1,128,3,0,0,0,0,0,0,0, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,252,63,127,255, + 63,223,31,159,16,28,56,20,2,0,7,224,7,224,15,240, + 14,112,28,56,28,56,56,28,0,0,0,0,0,0,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,252,63,127,255,63,223, + 31,159,16,27,54,20,2,0,60,120,60,120,60,120,60,120, + 0,0,0,0,0,0,0,0,0,0,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,252,63,127,255,63,223,31,159,17,35, + 105,19,1,249,0,30,0,0,60,0,0,56,0,0,120,0, + 0,112,0,0,224,0,0,192,0,0,0,0,0,0,0,0, + 0,0,248,15,128,248,15,128,252,15,128,124,31,0,126,31, + 0,62,31,0,62,62,0,63,62,0,31,60,0,31,124,0, + 15,252,0,15,248,0,15,248,0,7,248,0,7,240,0,3, + 240,0,3,240,0,3,224,0,3,224,0,3,192,0,103,192, + 0,255,192,0,255,192,0,127,128,0,62,0,0,17,32,96, + 21,2,249,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,249,240,0,255,252,0,255,254, + 0,254,63,0,252,31,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,254,63,0,255,254,0,255,252,0,251,240,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,17,33,99,19,1,249,30,60,0,30,60,0,30, + 60,0,30,60,0,0,0,0,0,0,0,0,0,0,0,0, + 0,248,15,128,248,15,128,252,15,128,124,31,0,124,31,0, + 126,31,0,62,62,0,63,62,0,31,62,0,31,124,0,31, + 252,0,15,248,0,15,248,0,7,248,0,7,240,0,7,240, + 0,3,240,0,3,224,0,3,224,0,3,224,0,7,192,0, + 7,192,0,7,192,0,15,128,0,15,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=20 h=28 x= 7 y=13 dx=34 dy= 0 ascent=26 len=75 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25n[957] U8G_SECTION(".progmem.u8g_font_fub25n") = { + 0,50,46,254,247,25,0,0,0,0,42,57,0,26,251,25, + 0,14,13,26,22,4,13,28,224,60,240,28,224,15,192,135, + 132,255,252,255,252,231,156,15,192,30,224,28,224,60,240,8, + 64,20,21,63,34,7,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,255,255,240,255,255,240,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,7,9,9,11,2,251,62,60,60,120, + 120,112,240,240,224,9,5,10,11,1,7,255,128,255,128,255, + 128,255,128,255,128,5,5,5,10,3,0,248,248,248,248,248, + 11,28,56,15,2,254,0,224,0,224,1,192,1,192,1,192, + 3,128,3,128,3,128,3,128,7,0,7,0,7,0,14,0, + 14,0,14,0,28,0,28,0,28,0,56,0,56,0,56,0, + 56,0,112,0,112,0,112,0,224,0,224,0,224,0,17,25, + 75,19,1,1,7,224,0,31,252,0,63,254,0,60,30,0, + 120,15,0,120,15,0,120,15,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,120,15,0,120,15,0, + 120,15,0,60,30,0,31,252,0,15,248,0,7,224,0,11, + 25,50,19,3,1,3,224,15,224,31,224,127,224,255,224,251, + 224,243,224,195,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,17,25,75,19,1,1,7,248,0, + 31,254,0,31,255,0,63,255,0,126,31,128,124,15,128,124, + 15,128,0,15,128,0,15,128,0,31,0,0,31,0,0,62, + 0,0,126,0,0,252,0,1,248,0,3,240,0,7,224,0, + 15,192,0,63,0,0,126,0,0,252,0,0,255,255,128,255, + 255,128,255,255,128,255,255,128,16,25,50,19,2,1,31,240, + 63,252,127,254,255,254,248,62,248,31,0,31,0,30,0,126, + 7,252,7,240,7,248,7,252,0,62,0,31,0,31,0,31, + 248,31,248,31,248,31,252,62,127,254,127,252,31,248,15,224, + 18,25,75,19,1,1,0,126,0,0,254,0,0,254,0,1, + 254,0,3,254,0,3,254,0,7,190,0,15,190,0,15,62, + 0,30,62,0,30,62,0,60,62,0,124,62,0,120,62,0, + 240,62,0,255,255,192,255,255,192,255,255,192,255,255,192,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,17,25,75,19,1,1,255,254,0,255,254,0,255,254,0, + 255,254,0,248,0,0,248,0,0,248,0,0,248,0,0,249, + 240,0,255,252,0,255,254,0,252,63,0,248,31,0,248,15, + 0,0,15,128,0,15,128,0,15,128,0,15,0,248,15,0, + 248,31,0,252,63,0,127,254,0,127,252,0,63,248,0,15, + 224,0,17,25,75,19,1,1,3,240,0,15,252,0,31,254, + 0,63,255,0,62,31,0,126,15,128,124,0,0,124,0,0, + 252,0,0,248,248,0,251,254,0,255,254,0,255,31,0,254, + 15,128,252,15,128,252,15,128,252,15,128,252,15,128,124,15, + 128,126,15,128,127,31,0,63,255,0,31,254,0,15,252,0, + 3,240,0,16,25,50,19,2,1,255,255,255,255,255,255,255, + 255,0,15,0,31,0,30,0,62,0,62,0,124,0,124,0, + 248,0,248,0,240,1,240,1,240,3,224,3,224,7,192,7, + 192,15,128,15,128,15,128,31,0,31,0,17,25,75,19,1, + 1,7,240,0,31,252,0,127,255,0,127,255,0,252,31,128, + 248,15,128,248,15,128,120,15,0,124,31,0,63,254,0,15, + 248,0,31,248,0,63,254,0,124,63,0,248,15,0,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,252,31,128, + 127,255,0,127,255,0,31,252,0,7,240,0,17,25,75,19, + 1,1,7,240,0,31,252,0,63,254,0,127,254,0,124,63, + 0,248,31,0,248,31,0,248,31,128,248,31,128,248,31,128, + 248,63,128,124,63,128,127,255,128,63,239,128,15,207,128,0, + 15,128,0,31,0,0,31,0,248,31,0,120,63,0,124,126, + 0,63,254,0,63,252,0,31,248,0,7,224,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=34 h=37 x= 8 y=21 dx=35 dy= 0 ascent=28 len=160 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25r[5936] U8G_SECTION(".progmem.u8g_font_fub25r") = { + 0,50,46,254,247,25,7,111,16,148,32,127,249,28,247,25, + 249,0,0,0,10,0,0,5,25,25,14,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 0,0,248,248,248,248,13,10,20,18,2,15,248,248,248,248, + 248,248,120,248,120,120,120,120,120,120,120,120,120,112,120,112, + 21,25,75,24,2,0,0,224,224,0,225,224,0,225,192,1, + 225,192,1,195,192,1,195,128,31,255,248,31,255,240,63,255, + 240,7,135,0,7,135,0,7,15,0,7,14,0,15,14,0, + 14,14,0,255,255,192,255,255,192,255,255,192,28,60,0,28, + 60,0,60,56,0,56,56,0,56,120,0,120,112,0,112,112, + 0,18,31,93,20,1,252,0,192,0,0,192,0,3,248,0, + 15,252,0,31,254,0,63,255,0,126,223,0,120,207,128,248, + 207,128,248,192,0,252,192,0,126,192,0,127,192,0,127,240, + 0,31,252,0,7,255,0,1,255,128,0,255,128,0,207,128, + 0,199,192,248,199,192,248,199,192,248,207,128,126,223,128,127, + 255,0,63,254,0,15,252,0,3,240,0,0,192,0,0,192, + 0,0,192,0,32,26,104,34,1,0,0,0,3,128,15,192, + 7,0,63,240,7,0,124,248,14,0,120,120,14,0,240,60, + 28,0,240,60,24,0,240,60,56,0,240,60,112,0,240,60, + 112,0,120,120,224,0,120,120,224,0,63,241,199,248,15,195, + 143,252,0,3,159,62,0,7,30,30,0,7,60,15,0,14, + 60,15,0,30,60,15,0,28,60,15,0,56,60,15,0,56, + 60,15,0,112,30,30,0,112,15,60,0,224,15,252,1,224, + 3,240,24,25,75,27,2,1,7,252,0,31,254,0,31,255, + 0,62,31,0,62,31,0,62,31,0,62,31,0,30,62,0, + 31,126,0,15,252,0,7,240,0,15,224,0,63,224,124,63, + 240,120,124,248,120,252,124,120,248,62,120,248,31,248,248,15, + 240,248,7,240,252,3,224,126,15,240,63,255,248,31,255,254, + 7,252,63,5,10,10,14,4,15,248,248,120,120,120,120,120, + 120,120,120,7,30,30,13,3,251,30,30,62,60,60,124,124, + 120,120,248,248,248,248,248,248,248,248,248,248,248,248,120,120, + 124,124,60,60,62,30,30,8,30,30,14,3,251,240,120,120, + 124,60,60,60,62,62,30,30,30,30,31,31,31,31,31,30, + 30,30,62,62,62,60,60,124,120,120,240,14,13,26,22,4, + 13,28,224,60,240,28,224,15,192,135,132,255,252,255,252,231, + 156,15,192,30,224,28,224,60,240,8,64,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,255,255,240,255, + 255,240,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 7,9,9,11,2,251,62,60,60,120,120,112,240,240,224,9, + 5,10,11,1,7,255,128,255,128,255,128,255,128,255,128,5, + 5,5,10,3,0,248,248,248,248,248,11,28,56,15,2,254, + 0,224,0,224,1,192,1,192,1,192,3,128,3,128,3,128, + 3,128,7,0,7,0,7,0,14,0,14,0,14,0,28,0, + 28,0,28,0,56,0,56,0,56,0,56,0,112,0,112,0, + 112,0,224,0,224,0,224,0,17,25,75,19,1,1,7,224, + 0,31,252,0,63,254,0,60,30,0,120,15,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,120,15,0,120,15,0,120,15,0,60,30,0, + 31,252,0,15,248,0,7,224,0,11,25,50,19,3,1,3, + 224,15,224,31,224,127,224,255,224,251,224,243,224,195,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,17,25,75,19,1,1,7,248,0,31,254,0,31,255,0, + 63,255,0,126,31,128,124,15,128,124,15,128,0,15,128,0, + 15,128,0,31,0,0,31,0,0,62,0,0,126,0,0,252, + 0,1,248,0,3,240,0,7,224,0,15,192,0,63,0,0, + 126,0,0,252,0,0,255,255,128,255,255,128,255,255,128,255, + 255,128,16,25,50,19,2,1,31,240,63,252,127,254,255,254, + 248,62,248,31,0,31,0,30,0,126,7,252,7,240,7,248, + 7,252,0,62,0,31,0,31,0,31,248,31,248,31,248,31, + 252,62,127,254,127,252,31,248,15,224,18,25,75,19,1,1, + 0,126,0,0,254,0,0,254,0,1,254,0,3,254,0,3, + 254,0,7,190,0,15,190,0,15,62,0,30,62,0,30,62, + 0,60,62,0,124,62,0,120,62,0,240,62,0,255,255,192, + 255,255,192,255,255,192,255,255,192,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,17,25,75,19,1, + 1,255,254,0,255,254,0,255,254,0,255,254,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,252,63,0,248,31,0,248,15,0,0,15,128,0,15, + 128,0,15,128,0,15,0,248,15,0,248,31,0,252,63,0, + 127,254,0,127,252,0,63,248,0,15,224,0,17,25,75,19, + 1,1,3,240,0,15,252,0,31,254,0,63,255,0,62,31, + 0,126,15,128,124,0,0,124,0,0,252,0,0,248,248,0, + 251,254,0,255,254,0,255,31,0,254,15,128,252,15,128,252, + 15,128,252,15,128,252,15,128,124,15,128,126,15,128,127,31, + 0,63,255,0,31,254,0,15,252,0,3,240,0,16,25,50, + 19,2,1,255,255,255,255,255,255,255,255,0,15,0,31,0, + 30,0,62,0,62,0,124,0,124,0,248,0,248,0,240,1, + 240,1,240,3,224,3,224,7,192,7,192,15,128,15,128,15, + 128,31,0,31,0,17,25,75,19,1,1,7,240,0,31,252, + 0,127,255,0,127,255,0,252,31,128,248,15,128,248,15,128, + 120,15,0,124,31,0,63,254,0,15,248,0,31,248,0,63, + 254,0,124,63,0,248,15,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,252,31,128,127,255,0,127,255,0, + 31,252,0,7,240,0,17,25,75,19,1,1,7,240,0,31, + 252,0,63,254,0,127,254,0,124,63,0,248,31,0,248,31, + 0,248,31,128,248,31,128,248,31,128,248,63,128,124,63,128, + 127,255,128,63,239,128,15,207,128,0,15,128,0,31,0,0, + 31,0,248,31,0,120,63,0,124,126,0,63,254,0,63,252, + 0,31,248,0,7,224,0,5,18,18,11,5,0,248,248,248, + 248,248,0,0,0,0,0,0,0,0,248,248,248,248,248,7, + 22,22,11,2,252,62,62,62,62,62,0,0,0,0,0,0, + 0,0,62,60,124,120,120,112,240,224,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,248,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,248,0,0,63,0,0,7,224,0,0,248,0,0,63,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,16,25,50,19,1,1,31,240,63,248,127,252,248,62,112, + 30,48,31,0,31,0,30,0,62,0,60,0,120,0,240,1, + 224,3,192,3,128,3,128,3,128,3,128,3,128,0,0,0, + 0,7,192,7,192,7,192,7,192,33,32,160,35,1,250,0, + 31,254,0,0,0,127,255,128,0,1,255,255,224,0,3,255, + 255,240,0,7,240,3,248,0,15,192,1,252,0,31,128,0, + 124,0,63,7,159,126,0,62,31,255,63,0,124,63,255,31, + 0,124,127,255,31,0,120,126,63,31,0,248,252,31,15,0, + 248,248,31,15,128,248,248,31,15,128,248,248,31,15,128,248, + 248,31,15,0,248,248,31,15,0,248,248,31,15,0,248,248, + 31,31,0,120,124,63,30,0,124,124,127,190,0,124,63,255, + 252,0,62,31,231,248,0,63,7,195,240,0,31,128,0,0, + 0,15,192,0,0,0,7,248,3,0,0,3,255,255,0,0, + 1,255,255,0,0,0,127,255,0,0,0,7,255,0,0,23, + 25,75,24,1,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 19,25,75,23,2,0,255,248,0,255,254,0,255,255,0,255, + 255,0,248,63,0,248,15,128,248,15,128,248,15,0,248,15, + 0,248,63,0,255,254,0,255,248,0,255,252,0,255,255,0, + 248,15,192,248,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,7,224,255,255,192,255,255,128,255,255,0,255,252, + 0,21,25,75,25,2,1,3,255,0,15,255,192,31,255,224, + 63,255,240,62,3,240,124,1,240,120,1,248,120,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,1,248,120,1,248,124,1,248, + 124,3,240,63,7,240,31,255,224,15,255,192,7,255,0,1, + 252,0,20,25,75,23,2,0,255,224,0,255,252,0,255,254, + 0,255,255,0,248,63,128,248,15,192,248,7,192,248,3,224, + 248,3,224,248,1,224,248,1,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,224,248,3,224,248,3,224,248,7, + 192,248,15,192,248,63,128,255,255,0,255,254,0,255,252,0, + 255,224,0,17,25,75,21,2,0,255,255,0,255,255,0,255, + 255,0,255,255,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,0,255,255,0,255,255,0, + 255,255,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,128,255,255,128,255,255, + 128,255,255,128,16,25,50,19,2,0,255,255,255,255,255,255, + 255,255,248,0,248,0,248,0,248,0,248,0,248,0,255,254, + 255,254,255,254,255,254,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,22,25,75,26, + 2,1,1,255,192,7,255,224,15,255,240,31,255,248,63,0, + 248,62,0,124,124,0,124,124,0,0,248,0,0,248,0,0, + 248,0,0,248,7,252,248,7,252,248,7,252,248,7,252,248, + 0,124,248,0,124,124,0,124,126,0,124,63,0,124,63,192, + 124,31,255,252,15,255,252,3,255,252,0,127,192,20,25,75, + 24,2,0,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,255,255,240,255,255,240,255,255,240,255,255,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,5,25, + 25,9,2,0,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,17,25,75, + 21,2,0,0,15,128,0,15,128,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,127,255,0,127,254,0,63,252,0,15,240,0,19,25, + 75,23,2,0,248,7,192,248,15,128,248,31,128,248,63,0, + 248,126,0,248,124,0,248,248,0,249,248,0,251,240,0,251, + 224,0,255,192,0,255,192,0,255,224,0,255,240,0,251,240, + 0,249,248,0,249,252,0,248,252,0,248,126,0,248,63,0, + 248,63,128,248,31,128,248,15,192,248,15,224,248,7,224,16, + 25,50,19,2,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,255, + 255,255,255,255,255,255,255,27,25,100,31,2,0,255,0,31, + 224,255,0,63,224,255,128,63,224,255,128,63,224,255,128,127, + 224,255,192,127,224,255,192,123,224,251,192,123,224,251,224,251, + 224,251,224,243,224,251,224,243,224,249,241,243,224,249,241,243, + 224,249,241,227,224,248,243,227,224,248,251,227,224,248,251,195, + 224,248,127,195,224,248,127,195,224,248,127,131,224,248,127,131, + 224,248,63,131,224,248,63,131,224,248,63,3,224,248,31,3, + 224,21,25,75,25,2,0,254,0,248,255,0,248,255,0,248, + 255,128,248,255,128,248,255,192,248,255,192,248,251,224,248,251, + 224,248,249,224,248,249,240,248,248,240,248,248,248,248,248,120, + 248,248,124,248,248,60,248,248,62,248,248,30,248,248,31,248, + 248,31,248,248,15,248,248,15,248,248,7,248,248,7,248,248, + 3,248,23,25,75,27,2,1,3,255,128,7,255,192,31,255, + 240,31,255,240,63,1,248,126,0,252,124,0,124,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,62,0,248,63,131,248,31,255,240,15,255,224,7,255,192, + 0,254,0,18,25,75,21,2,0,255,240,0,255,252,0,255, + 255,0,255,255,128,248,31,128,248,15,128,248,7,192,248,7, + 192,248,7,192,248,15,128,248,31,128,255,255,128,255,255,0, + 255,252,0,255,240,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,26,25,100,29,2,1,3,255,128,0,7,255, + 192,0,31,255,224,0,31,255,240,0,63,1,248,0,126,0, + 252,0,124,0,124,0,120,0,60,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,120,0,60,0,124,0, + 124,0,124,0,124,0,62,0,248,0,63,131,240,0,31,255, + 255,192,15,255,255,192,3,255,255,192,0,255,255,192,19,25, + 75,22,2,0,255,252,0,255,255,0,255,255,128,255,255,192, + 248,15,192,248,7,224,248,3,224,248,3,224,248,3,192,248, + 7,192,248,31,128,255,255,0,255,252,0,255,255,0,255,255, + 128,248,15,128,248,7,192,248,7,192,248,7,192,248,3,192, + 248,3,192,248,3,192,248,3,224,248,3,224,248,3,224,20, + 25,75,23,2,1,7,254,0,15,255,0,31,255,128,63,255, + 192,126,7,192,124,3,192,124,3,224,124,0,0,124,0,0, + 127,0,0,63,240,0,31,254,0,7,255,128,1,255,192,0, + 31,224,0,3,224,0,1,240,248,1,240,248,1,240,248,3, + 224,126,7,224,127,255,192,63,255,128,15,255,0,3,248,0, + 20,25,75,22,1,0,255,255,240,255,255,240,255,255,240,255, + 255,240,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,21,25,75,25,2,0,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,240,248,0,240,120,1,240, + 124,3,240,127,7,224,63,255,192,31,255,128,15,255,0,3, + 252,0,24,25,75,25,1,0,248,0,63,248,0,62,252,0, + 62,124,0,124,124,0,124,126,0,124,62,0,248,63,0,248, + 63,1,240,31,1,240,31,129,240,31,131,224,15,131,224,15, + 195,224,7,199,192,7,199,192,7,231,128,3,239,128,3,255, + 128,3,255,0,1,255,0,1,254,0,1,254,0,0,254,0, + 0,252,0,34,25,125,34,0,0,252,3,240,15,192,252,3, + 240,15,128,124,3,240,15,128,126,7,248,15,128,126,7,248, + 15,128,126,7,248,31,0,62,7,248,31,0,62,15,252,31, + 0,63,15,60,30,0,63,15,60,62,0,31,15,60,62,0, + 31,31,62,62,0,31,30,30,60,0,31,158,30,60,0,15, + 158,30,124,0,15,190,31,124,0,15,188,15,120,0,7,252, + 15,120,0,7,252,15,120,0,7,252,15,248,0,7,248,7, + 240,0,3,248,7,240,0,3,248,7,240,0,3,248,7,240, + 0,3,240,3,224,0,22,25,75,24,1,0,252,0,248,126, + 1,248,62,1,240,63,3,224,31,135,192,15,135,192,15,207, + 128,7,239,0,3,255,0,3,254,0,1,252,0,0,252,0, + 0,252,0,1,254,0,3,254,0,3,255,0,7,223,128,15, + 143,128,15,15,192,31,7,224,62,3,224,62,3,240,124,1, + 248,248,1,248,248,0,252,21,25,75,22,1,0,252,1,248, + 252,1,240,126,3,224,126,3,224,63,7,192,31,7,192,31, + 143,128,15,143,128,15,223,0,7,223,0,7,254,0,3,254, + 0,3,252,0,1,248,0,1,248,0,0,240,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,18,25,75,22,2,0,127,255, + 192,127,255,192,127,255,192,127,255,192,0,15,192,0,31,128, + 0,63,0,0,63,0,0,126,0,0,252,0,1,252,0,1, + 248,0,3,240,0,7,224,0,7,224,0,15,192,0,31,128, + 0,63,128,0,63,0,0,126,0,0,252,0,0,255,255,192, + 255,255,192,255,255,192,255,255,192,8,32,32,13,3,249,255, + 255,255,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,255,255,255,11, + 28,56,15,2,254,224,0,224,0,240,0,240,0,240,0,112, + 0,120,0,120,0,56,0,60,0,60,0,28,0,30,0,30, + 0,30,0,15,0,15,0,15,0,7,0,7,128,7,128,3, + 128,3,192,3,192,1,192,1,224,1,224,1,224,8,32,32, + 13,3,249,255,255,255,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 255,255,255,18,21,63,34,8,0,0,192,0,0,224,0,1, + 224,0,1,224,0,1,48,0,3,48,0,2,24,0,6,24, + 0,6,24,0,4,12,0,12,12,0,12,14,0,24,6,0, + 24,6,0,24,7,0,48,3,0,48,3,0,112,1,128,96, + 1,128,96,1,192,192,0,192,17,3,9,17,0,251,255,255, + 128,255,255,128,255,255,128,7,7,7,9,255,21,248,120,60, + 60,28,14,6,15,18,36,19,2,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,17,25, + 75,20,2,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,254,63,0,252,31,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 252,31,0,254,63,0,255,254,0,251,252,0,249,240,0,15, + 18,36,18,2,0,7,224,31,248,63,252,124,124,120,60,248, + 62,248,0,248,0,248,0,248,0,248,0,248,62,248,62,120, + 60,124,124,63,252,31,248,15,224,17,25,75,21,2,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,7,207,128,31,255,128,63,255,128,126,63,128, + 124,31,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,128,126,63, + 128,63,255,128,31,239,128,7,207,128,15,18,36,19,2,0, + 7,224,31,248,63,252,124,60,120,62,248,30,248,30,255,254, + 255,254,255,254,248,0,248,0,248,30,120,62,124,62,63,252, + 31,248,7,224,12,25,50,13,1,0,7,240,15,240,31,240, + 31,0,31,0,31,0,31,0,255,224,255,224,255,224,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,17,25,75,21, + 2,249,7,207,128,31,255,128,63,255,128,126,63,128,124,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,31,128,126,63,128,63, + 255,128,31,239,128,7,207,128,0,15,128,0,15,128,124,15, + 128,124,31,0,63,254,0,31,252,0,7,240,0,16,25,50, + 20,2,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,249,248,255,252,255,254,254,63,252,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,5,25,25,9,2,0,248,248,248,248,248, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,6,32,32,12,4,249,124,124,124,124,124,0, + 0,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,252,252,248,240,16,25,50,19,2,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,62, + 248,124,248,248,249,248,249,240,251,224,255,192,255,192,255,192, + 255,192,251,224,251,240,249,240,248,248,248,252,248,124,248,126, + 248,63,5,25,25,9,2,0,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,27,18,72,31,2,0,249,248,62,0,251,252,127,128,255, + 254,255,192,254,63,199,192,252,63,135,192,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,16, + 18,36,20,2,0,249,248,251,252,255,254,252,63,252,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,18,18,54,21,2,0,3, + 240,0,15,252,0,63,254,0,62,31,0,124,15,128,120,15, + 128,248,7,128,248,7,128,248,7,192,248,7,192,248,7,192, + 248,7,128,120,15,128,124,15,128,62,31,0,63,254,0,15, + 252,0,3,240,0,17,25,75,20,2,249,249,240,0,251,252, + 0,255,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,252,31,0,254,63,0,255,254,0,255,252,0,249,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,21,2,249,7,207,128,31, + 239,128,63,255,128,126,63,128,124,31,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,128,126,63,128,63,255,128,31,255,128,7, + 207,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,11,18,36,13,2,0,249,224,251, + 224,255,224,255,224,255,0,252,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,15,18,36,18,2,0,15,224,63,248,127,248,124,124,248, + 124,248,124,126,0,127,192,63,248,15,252,1,252,0,126,248, + 62,248,62,248,124,127,252,63,248,15,192,13,23,46,14,1, + 0,1,0,7,0,31,0,31,0,31,0,255,240,255,240,255, + 240,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,15,128,15,248,7,248,3,240,16, + 18,36,20,2,0,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,252,63,127,255,63,223,31,159,18,18,54,19,0,0,248, + 7,192,124,7,192,124,15,128,124,15,128,62,15,128,62,31, + 0,62,31,0,31,30,0,31,30,0,15,62,0,15,188,0, + 15,188,0,7,252,0,7,248,0,7,248,0,3,240,0,3, + 240,0,1,240,0,29,18,72,29,0,0,248,15,128,248,124, + 31,192,240,124,31,193,240,124,31,193,240,124,31,225,224,62, + 63,225,224,62,61,227,224,62,61,227,224,31,125,243,192,31, + 120,247,192,31,120,247,192,15,248,255,128,15,248,127,128,15, + 240,127,128,15,240,127,128,7,240,127,0,7,224,63,0,7, + 224,63,0,17,18,54,19,1,0,252,31,0,124,31,0,126, + 62,0,63,60,0,31,124,0,15,248,0,15,248,0,7,240, + 0,7,224,0,7,240,0,15,248,0,31,248,0,30,252,0, + 62,126,0,60,62,0,124,63,0,248,31,0,248,15,128,17, + 25,75,18,1,249,248,15,128,248,15,128,248,15,0,124,31, + 0,124,31,0,124,30,0,62,62,0,62,60,0,30,60,0, + 31,124,0,31,120,0,15,248,0,15,248,0,15,240,0,7, + 240,0,7,240,0,3,224,0,3,224,0,3,224,0,3,192, + 0,7,192,0,7,128,0,7,128,0,15,128,0,15,128,0, + 14,18,36,18,2,0,255,252,255,252,255,252,0,124,0,248, + 1,248,3,240,7,224,7,192,15,128,31,128,63,0,126,0, + 124,0,248,0,255,252,255,252,255,252,13,35,70,18,3,248, + 0,248,3,248,7,248,15,192,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,0,15,0,15,0,31,0,126,0, + 252,0,240,0,252,0,126,0,63,0,31,0,15,0,15,0, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,192, + 7,248,3,248,0,248,2,37,37,12,5,247,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,13,35,70,17,2,248,248,0,254,0,255,0,31,0,15, + 0,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,7,128,7,192,3,224,1,248,0,248,1,248,3,224,7, + 192,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,0,31,0,255,0,254,0,248,0,18,4,12, + 18,0,7,31,195,192,63,255,128,127,255,0,240,126,0,255 + }; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=38 h=43 x=10 y=26 dx=42 dy= 0 ascent=43 len=195 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =43 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30[16953] U8G_SECTION(".progmem.u8g_font_fub30") = { + 0,59,54,253,245,30,9,163,21,182,32,255,249,43,245,31, + 248,0,0,0,12,0,0,5,30,30,16,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,0,0,248,248,248,248,248,15,12,24,21,3, + 18,252,126,252,126,252,126,252,126,248,126,248,126,248,60,248, + 60,120,60,120,60,120,60,120,60,25,30,120,29,2,0,0, + 60,30,0,0,60,30,0,0,120,60,0,0,120,60,0,0, + 120,60,0,0,120,120,0,0,240,120,0,0,240,120,0,15, + 255,255,128,31,255,255,0,31,255,255,0,31,255,255,0,1, + 224,224,0,3,193,224,0,3,193,224,0,3,193,224,0,7, + 131,192,0,7,131,192,0,127,255,252,0,255,255,248,0,255, + 255,248,0,255,255,248,0,15,7,128,0,30,15,0,0,30, + 15,0,0,30,15,0,0,62,30,0,0,60,30,0,0,60, + 30,0,0,60,30,0,0,21,37,111,23,1,252,0,96,0, + 0,96,0,0,96,0,3,254,0,15,255,128,31,255,192,63, + 255,224,127,111,224,126,99,240,124,99,240,124,97,240,124,96, + 0,124,96,0,126,96,0,127,224,0,127,240,0,63,254,0, + 31,255,128,7,255,224,0,255,240,0,127,240,0,103,248,0, + 97,248,248,97,248,248,96,248,252,97,248,252,97,248,126,99, + 240,127,255,240,63,255,224,31,255,192,15,255,128,3,254,0, + 0,96,0,0,96,0,0,96,0,0,96,0,37,30,150,41, + 2,0,7,224,0,120,0,31,248,0,240,0,63,252,0,240, + 0,124,62,1,224,0,120,30,3,224,0,240,15,3,192,0, + 240,15,7,192,0,240,15,7,128,0,240,15,15,0,0,240, + 15,15,0,0,240,15,30,0,0,240,15,30,0,0,120,30, + 60,0,0,124,62,124,0,0,63,252,120,63,0,31,248,248, + 255,192,7,224,241,255,224,0,1,227,225,240,0,1,227,192, + 240,0,3,199,128,120,0,3,199,128,120,0,7,135,128,120, + 0,7,135,128,120,0,15,7,128,120,0,31,7,128,120,0, + 30,3,192,240,0,62,3,192,240,0,60,1,243,224,0,120, + 1,255,192,0,120,0,127,128,28,30,120,31,2,1,3,255, + 0,0,15,255,128,0,31,255,192,0,63,143,224,0,63,7, + 224,0,62,3,224,0,63,7,224,0,63,7,224,0,31,15, + 192,0,31,159,192,0,15,255,128,0,15,255,0,0,7,252, + 0,0,15,248,0,0,31,248,15,128,63,252,15,128,63,126, + 15,128,126,127,15,128,126,63,143,128,252,31,207,128,252,15, + 255,0,248,7,255,0,248,3,255,0,252,1,254,0,252,0, + 254,0,126,0,254,0,127,131,255,0,63,255,255,128,31,255, + 255,224,7,255,135,240,6,12,12,16,5,18,252,252,252,124, + 124,124,124,124,120,120,120,120,9,36,72,16,4,251,15,128, + 31,0,31,0,31,0,62,0,62,0,62,0,126,0,124,0, + 124,0,124,0,124,0,252,0,252,0,252,0,252,0,248,0, + 248,0,248,0,248,0,248,0,252,0,252,0,252,0,124,0, + 124,0,124,0,124,0,126,0,62,0,62,0,62,0,31,0, + 31,0,31,0,15,128,8,36,36,16,4,251,240,248,120,124, + 124,124,62,62,62,63,63,31,31,31,31,31,31,31,31,31, + 31,31,31,31,63,63,63,62,62,62,124,124,124,248,248,240, + 16,16,32,26,5,14,4,32,28,56,30,120,30,120,15,240, + 7,224,227,199,255,255,255,255,243,207,7,224,15,240,30,120, + 30,120,28,56,4,32,24,25,75,40,8,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,255,255,255, + 255,255,255,255,255,255,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,8,10,10,12,2,251,31,31,62, + 62,60,124,120,120,240,240,10,5,10,14,2,8,255,192,255, + 192,255,192,255,192,255,192,5,5,5,12,4,0,248,248,248, + 248,248,13,32,64,17,2,254,0,120,0,120,0,120,0,240, + 0,240,0,240,1,224,1,224,1,224,3,192,3,192,3,192, + 3,192,7,128,7,128,7,128,15,0,15,0,15,0,14,0, + 30,0,30,0,30,0,60,0,60,0,60,0,120,0,120,0, + 120,0,120,0,240,0,240,0,20,30,90,23,1,1,3,252, + 0,15,255,0,31,255,128,63,15,128,62,7,192,124,3,192, + 124,3,224,124,3,224,124,3,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,248,1,240,248,1,240,248,1,240,248,1,240,124,3,224, + 124,3,224,124,3,224,124,3,224,62,7,192,63,15,128,31, + 255,128,15,255,0,3,252,0,12,30,60,23,4,0,1,240, + 3,240,15,240,63,240,255,240,255,240,253,240,249,240,225,240, + 129,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,20,30,90,23,1,1, + 3,255,0,7,255,128,31,255,192,31,255,224,63,255,240,63, + 3,240,126,1,240,126,1,240,124,1,240,0,1,240,0,3, + 240,0,3,240,0,7,224,0,15,224,0,15,192,0,31,128, + 0,63,0,0,254,0,1,252,0,3,248,0,7,240,0,15, + 224,0,63,128,0,127,0,0,252,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,19,30,90,23,2,1, + 7,252,0,31,255,0,63,255,128,127,255,128,127,255,192,252, + 15,192,252,7,192,248,7,192,0,7,192,0,7,192,0,15, + 192,0,63,192,3,255,128,3,254,0,3,252,0,3,255,0, + 3,255,128,0,31,192,0,7,224,0,7,224,0,7,224,0, + 3,224,248,7,224,252,7,224,252,7,192,126,15,192,127,255, + 128,63,255,128,31,255,0,15,252,0,21,30,90,23,1,0, + 0,63,128,0,63,128,0,127,128,0,255,128,0,255,128,1, + 255,128,1,255,128,3,239,128,3,207,128,7,207,128,15,143, + 128,15,143,128,31,15,128,31,15,128,62,15,128,62,15,128, + 124,15,128,252,15,128,248,15,128,255,255,248,255,255,248,255, + 255,248,255,255,248,255,255,248,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,19,30,90,23,2,0, + 127,255,192,127,255,192,127,255,192,127,255,192,127,255,192,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,252,0,125,255,0,127,255,128,127,255,192,127,15,224, + 126,7,224,124,3,224,0,3,224,0,3,224,0,3,224,0, + 3,224,0,3,224,248,7,224,252,7,224,252,15,192,127,255, + 128,127,255,128,63,254,0,15,252,0,20,30,90,23,1,1, + 3,254,0,7,255,0,15,255,128,31,255,192,63,255,192,63, + 7,224,126,3,224,126,3,224,124,0,0,124,0,0,252,0, + 0,248,0,0,249,255,0,251,255,128,255,255,192,255,15,224, + 254,7,224,254,3,240,252,3,240,252,3,240,252,1,240,252, + 1,240,124,3,240,124,3,240,126,3,224,63,7,224,63,255, + 192,31,255,128,15,255,0,3,254,0,19,30,90,23,2,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,31, + 128,0,31,128,0,63,0,0,63,0,0,63,0,0,126,0, + 0,126,0,0,252,0,0,252,0,1,252,0,1,248,0,1, + 248,0,3,240,0,3,240,0,7,240,0,7,224,0,15,224, + 0,15,192,0,15,192,0,31,192,0,20,30,90,23,1,1, + 7,254,0,31,255,128,63,255,192,127,255,224,127,255,224,126, + 7,224,124,3,224,124,3,224,124,3,224,124,3,224,126,7, + 224,127,15,192,63,255,128,15,255,0,7,252,0,31,255,0, + 63,255,192,127,15,224,124,7,224,252,3,240,252,3,240,248, + 1,240,248,3,240,252,3,240,252,3,240,254,7,240,127,255, + 224,63,255,192,31,255,128,15,255,0,20,30,90,23,1,1, + 3,252,0,15,255,0,31,255,128,63,255,192,127,255,192,126, + 7,224,252,7,224,252,3,224,252,3,240,248,3,240,248,3, + 240,252,3,240,252,7,240,124,7,240,127,15,240,63,255,240, + 63,253,240,31,249,240,7,225,240,0,3,240,0,3,224,0, + 3,224,0,3,224,124,7,224,124,7,192,126,15,192,63,255, + 128,31,255,0,15,254,0,7,252,0,5,20,20,12,5,0, + 248,248,248,248,248,0,0,0,0,0,0,0,0,0,0,248, + 248,248,248,248,9,25,50,13,2,251,31,0,31,0,31,0, + 31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,31,128,31,0,63,0,62,0, + 62,0,124,0,124,0,120,0,248,0,240,0,24,21,63,40, + 8,2,0,0,1,0,0,15,0,0,63,0,1,252,0,7, + 224,0,63,0,0,252,0,7,224,0,63,0,0,252,0,0, + 224,0,0,248,0,0,126,0,0,15,192,0,3,240,0,0, + 126,0,0,31,192,0,3,240,0,0,126,0,0,31,0,0, + 3,24,10,30,40,8,7,255,255,255,255,255,255,255,255,255, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,255,255,255,255,24,21,63,40,8,2,128,0,0,240,0, + 0,252,0,0,63,128,0,7,224,0,0,252,0,0,63,0, + 0,7,224,0,0,252,0,0,63,0,0,7,0,0,31,0, + 0,126,0,3,240,0,15,192,0,126,0,3,248,0,15,192, + 0,126,0,0,248,0,0,192,0,0,18,30,90,22,1,1, + 7,252,0,31,254,0,63,255,128,127,255,128,252,15,192,120, + 7,192,56,7,192,0,7,192,0,7,192,0,15,192,0,15, + 128,0,31,128,0,63,0,0,126,0,0,248,0,1,240,0, + 3,224,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,0,0,0,0,0,0,0,0,0,3,224,0,3,224, + 0,3,224,0,3,224,0,3,224,0,38,39,195,42,2,248, + 0,3,255,224,0,0,31,255,248,0,0,127,255,254,0,0, + 255,255,255,0,3,255,255,255,128,7,254,0,127,192,7,248, + 0,31,224,15,224,0,15,240,31,192,0,7,240,63,128,0, + 3,248,63,1,241,241,248,63,7,253,241,252,126,15,255,240, + 252,126,31,255,240,252,124,31,135,240,252,252,63,3,240,124, + 252,63,3,240,124,252,62,1,240,124,252,62,1,240,124,248, + 62,1,240,124,248,62,1,240,124,248,62,1,240,124,252,62, + 1,240,124,252,63,3,240,252,124,63,3,248,248,124,31,135, + 249,248,126,31,255,255,240,63,15,254,255,224,63,7,252,127, + 192,31,129,248,31,0,31,192,0,0,0,15,224,0,0,0, + 7,248,0,0,0,3,254,0,56,0,1,255,255,248,0,0, + 255,255,248,0,0,63,255,248,0,0,15,255,248,0,0,1, + 255,224,0,27,30,120,28,1,0,0,63,0,0,0,63,128, + 0,0,127,128,0,0,127,128,0,0,127,192,0,0,255,192, + 0,0,255,224,0,0,255,224,0,1,251,224,0,1,243,240, + 0,3,243,240,0,3,241,240,0,3,225,248,0,7,225,248, + 0,7,224,248,0,7,192,252,0,15,192,252,0,15,192,126, + 0,15,128,126,0,31,255,254,0,31,255,255,0,63,255,255, + 0,63,255,255,0,63,255,255,128,126,0,31,128,126,0,31, + 128,126,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 224,22,30,90,27,3,0,255,254,0,255,255,128,255,255,224, + 255,255,224,255,255,240,248,7,240,248,3,240,248,1,240,248, + 1,240,248,1,240,248,3,240,248,7,224,255,255,192,255,255, + 128,255,254,0,255,255,192,255,255,240,248,3,248,248,1,248, + 248,0,252,248,0,252,248,0,252,248,0,252,248,1,252,248, + 3,252,255,255,248,255,255,240,255,255,224,255,255,192,255,255, + 0,24,30,90,29,2,1,1,255,192,3,255,240,15,255,248, + 15,255,252,31,255,254,63,128,254,62,0,127,126,0,63,124, + 0,63,124,0,63,252,0,0,252,0,0,252,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,252,0,0, + 252,0,0,124,0,63,124,0,63,126,0,127,62,0,127,63, + 128,254,31,255,254,31,255,252,15,255,248,7,255,224,1,255, + 192,24,30,90,29,3,0,255,248,0,255,255,0,255,255,192, + 255,255,224,255,255,240,248,15,248,248,1,252,248,0,252,248, + 0,126,248,0,126,248,0,62,248,0,63,248,0,63,248,0, + 63,248,0,31,248,0,31,248,0,63,248,0,63,248,0,63, + 248,0,63,248,0,126,248,0,126,248,0,252,248,1,252,248, + 15,248,255,255,240,255,255,224,255,255,192,255,255,0,255,248, + 0,20,30,90,25,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,240,255,255,240,255,255,240,255,255,240,255,255, + 240,19,30,90,24,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,26,30,120,30,2,1,0,127,240,0,1,255,252,0,3, + 255,254,0,15,255,255,0,15,255,255,128,31,192,63,128,63, + 128,15,192,63,0,15,192,126,0,15,192,126,0,7,192,124, + 0,0,0,252,0,0,0,252,0,0,0,252,0,0,0,248, + 1,255,192,248,1,255,192,248,1,255,192,252,1,255,192,252, + 1,255,192,252,0,7,192,124,0,7,192,126,0,7,192,127, + 0,7,192,63,128,7,192,63,224,7,192,31,255,255,192,15, + 255,255,192,7,255,255,192,1,255,255,192,0,127,254,0,23, + 30,90,29,3,0,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,255,255,254,255,255,254,255, + 255,254,255,255,254,255,255,254,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,5, + 30,30,11,3,0,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,20,30,90,25,2,0,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,248,1,240,248,3,240,252,3,240,252,3, + 240,254,7,224,127,255,224,127,255,192,63,255,128,31,255,0, + 15,254,0,23,30,90,27,3,0,248,1,248,248,3,248,248, + 7,240,248,15,224,248,15,192,248,31,192,248,63,128,248,127, + 0,248,126,0,248,254,0,249,252,0,251,248,0,251,240,0, + 255,240,0,255,240,0,251,248,0,249,252,0,249,254,0,248, + 254,0,248,127,0,248,127,128,248,63,128,248,31,192,248,31, + 224,248,15,224,248,7,240,248,7,248,248,3,248,248,1,252, + 248,0,254,19,30,90,23,3,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,224,255,255,224,255,255,224,255,255,224, + 255,255,224,31,30,120,37,3,0,255,192,3,254,255,192,3, + 254,255,192,7,254,255,192,7,254,255,224,7,254,251,224,15, + 254,251,224,15,254,251,240,15,190,251,240,15,190,249,240,31, + 190,249,240,31,62,249,248,31,62,248,248,63,62,248,248,63, + 62,248,252,62,62,248,124,126,62,248,124,126,62,248,126,124, + 62,248,126,124,62,248,62,252,62,248,62,248,62,248,63,248, + 62,248,31,248,62,248,31,248,62,248,31,240,62,248,31,240, + 62,248,15,240,62,248,15,224,62,248,15,224,62,248,7,224, + 62,25,30,120,31,3,0,255,128,15,128,255,128,15,128,255, + 128,15,128,255,192,15,128,255,192,15,128,255,224,15,128,251, + 224,15,128,251,240,15,128,249,240,15,128,249,248,15,128,248, + 248,15,128,248,252,15,128,248,252,15,128,248,126,15,128,248, + 126,15,128,248,63,15,128,248,63,15,128,248,31,143,128,248, + 31,143,128,248,15,143,128,248,15,207,128,248,7,207,128,248, + 7,239,128,248,3,239,128,248,3,255,128,248,1,255,128,248, + 1,255,128,248,0,255,128,248,0,255,128,248,0,127,128,27, + 30,120,31,2,1,0,255,224,0,3,255,248,0,7,255,252, + 0,15,255,254,0,31,255,255,0,63,192,127,128,63,0,31, + 128,127,0,31,192,126,0,15,192,126,0,15,192,252,0,15, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,15,224,126,0,15,192,126,0,15,192,127,0,31, + 192,63,0,31,128,63,192,127,128,31,255,255,0,15,255,254, + 0,7,255,252,0,3,255,248,0,0,255,224,0,21,30,90, + 26,3,0,255,252,0,255,255,128,255,255,192,255,255,224,255, + 255,240,248,7,240,248,3,248,248,1,248,248,1,248,248,0, + 248,248,1,248,248,1,248,248,1,248,248,7,240,255,255,240, + 255,255,224,255,255,192,255,255,128,255,252,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,30,30,120, + 33,2,1,0,255,224,0,3,255,248,0,7,255,252,0,15, + 255,254,0,31,255,255,0,63,192,127,128,63,0,31,128,127, + 0,31,192,126,0,15,192,126,0,15,192,252,0,15,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,192,126,0,15,192,126,0,15,192,127,0,31,128,63, + 0,31,128,63,192,127,0,31,255,254,252,15,255,255,252,7, + 255,255,252,3,255,255,252,0,255,255,252,23,30,90,27,3, + 0,255,255,0,255,255,224,255,255,240,255,255,248,255,255,248, + 248,3,252,248,1,252,248,0,252,248,0,124,248,0,124,248, + 0,252,248,1,248,248,7,240,255,255,224,255,255,192,255,255, + 128,255,255,224,255,255,240,248,3,248,248,1,248,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,252,248,0,252,248, + 0,252,248,0,252,248,0,124,248,0,126,23,30,90,27,2, + 1,1,255,128,7,255,224,15,255,240,31,255,240,63,255,248, + 63,1,248,126,0,252,126,0,252,124,0,124,126,0,0,126, + 0,0,63,128,0,63,240,0,31,254,0,15,255,192,3,255, + 240,0,127,248,0,7,252,0,1,252,0,0,126,248,0,126, + 248,0,62,252,0,126,252,0,126,126,0,252,127,255,252,63, + 255,248,31,255,240,15,255,224,3,255,128,23,30,90,25,1, + 0,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,24,30,90,30,3, + 0,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,252,0,31,252,0,31, + 252,0,63,124,0,63,126,0,126,127,0,254,63,255,252,31, + 255,252,31,255,248,7,255,224,1,255,192,28,30,120,30,1, + 0,252,0,3,240,252,0,7,240,254,0,7,224,126,0,7, + 224,126,0,15,192,127,0,15,192,63,0,31,192,63,0,31, + 128,63,128,31,128,31,128,63,128,31,128,63,0,31,192,63, + 0,15,192,127,0,15,192,126,0,7,224,126,0,7,224,252, + 0,7,224,252,0,3,240,252,0,3,241,248,0,3,249,248, + 0,1,249,248,0,1,251,240,0,1,255,240,0,0,255,240, + 0,0,255,224,0,0,255,224,0,0,127,192,0,0,127,192, + 0,0,127,192,0,0,63,128,0,38,30,150,40,1,0,252, + 0,252,0,252,252,1,254,0,252,252,1,254,0,252,252,1, + 254,1,252,254,1,254,1,252,126,3,255,1,248,126,3,255, + 1,248,126,3,255,1,248,126,3,255,1,248,63,7,255,131, + 240,63,7,207,131,240,63,7,207,131,240,63,7,207,131,240, + 31,15,207,195,224,31,143,135,199,224,31,143,135,199,224,31, + 143,135,199,224,15,159,135,231,192,15,159,3,231,192,15,223, + 3,239,192,15,223,3,239,192,7,255,3,255,128,7,254,1, + 255,128,7,254,1,255,128,7,254,1,255,128,3,254,1,255, + 0,3,252,0,255,0,3,252,0,255,0,3,252,0,255,0, + 3,252,0,255,0,26,30,120,28,1,0,126,0,31,128,127, + 0,63,128,63,128,63,0,63,128,126,0,31,192,126,0,15, + 192,252,0,15,225,248,0,7,241,248,0,3,243,240,0,3, + 251,224,0,1,255,224,0,0,255,192,0,0,255,128,0,0, + 127,128,0,0,127,0,0,0,127,128,0,0,255,128,0,1, + 255,192,0,1,255,224,0,3,247,224,0,3,227,240,0,7, + 227,248,0,15,193,248,0,15,129,252,0,31,128,254,0,63, + 0,126,0,63,0,127,0,126,0,63,128,252,0,31,128,252, + 0,31,192,24,30,90,25,1,0,252,0,127,254,0,126,126, + 0,254,127,0,252,63,1,252,63,1,248,31,131,248,31,131, + 240,15,195,240,15,199,224,7,231,224,7,239,192,3,255,192, + 3,255,128,1,255,128,1,255,0,0,255,0,0,254,0,0, + 126,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,22,30,90,26,2,0,127,255,252,127,255,252,127, + 255,252,127,255,252,127,255,252,0,1,252,0,3,248,0,7, + 240,0,15,240,0,31,224,0,31,192,0,63,128,0,127,128, + 0,255,0,0,254,0,1,252,0,3,252,0,7,248,0,7, + 240,0,15,224,0,31,224,0,63,192,0,63,128,0,127,0, + 0,255,0,0,255,255,252,255,255,252,255,255,252,255,255,252, + 255,255,252,9,38,76,15,3,248,255,128,255,128,255,128,255, + 128,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,255,128,255, + 128,255,128,255,128,13,32,64,17,2,254,240,0,240,0,120, + 0,120,0,120,0,120,0,60,0,60,0,60,0,30,0,30, + 0,30,0,14,0,15,0,15,0,15,0,7,128,7,128,7, + 128,3,192,3,192,3,192,3,192,1,224,1,224,1,224,0, + 240,0,240,0,240,0,112,0,120,0,120,9,38,76,15,3, + 248,255,128,255,128,255,128,255,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,255,128,255,128,255,128,20,25,75, + 40,10,0,0,96,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,152,0,3,156,0,3,12,0,3,12,0,7,14, + 0,6,6,0,6,6,0,14,7,0,12,3,0,28,3,128, + 28,1,128,24,1,128,56,1,192,48,0,192,48,0,192,112, + 0,224,96,0,96,224,0,112,224,0,112,192,0,48,20,4, + 12,20,0,250,255,255,240,255,255,240,255,255,240,255,255,240, + 9,8,16,10,255,25,248,0,124,0,60,0,62,0,30,0, + 15,0,7,0,3,128,19,20,60,22,2,1,15,254,0,31, + 255,0,63,255,128,126,15,128,124,15,192,0,7,192,0,127, + 192,15,255,192,63,255,192,127,255,192,127,7,192,252,7,192, + 252,7,192,248,15,192,248,15,192,252,15,192,254,31,192,127, + 255,192,63,247,192,31,227,224,20,30,90,25,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,254,0,251, + 255,128,255,255,192,255,15,192,254,7,224,252,3,224,252,3, + 240,252,3,240,252,3,240,248,1,240,248,1,240,248,3,240, + 252,3,240,252,3,240,252,3,224,254,7,224,255,15,192,251, + 255,192,251,255,128,248,254,0,17,20,60,21,2,1,15,252, + 0,31,254,0,63,255,0,126,63,0,124,31,128,124,31,128, + 252,15,128,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,252,15,128,252,31,128,124,31,128,126,63, + 0,63,255,0,31,254,0,15,252,0,20,30,90,25,2,0, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,7,249, + 240,31,253,240,63,255,240,63,15,240,126,7,240,124,3,240, + 252,3,240,252,3,240,252,3,240,248,1,240,248,1,240,248, + 3,240,252,3,240,252,3,240,124,3,240,126,7,240,63,15, + 240,63,253,240,31,249,240,7,241,240,19,20,60,22,2,1, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 7,192,252,7,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,7,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,14,30,60,15, + 1,1,3,252,7,252,15,252,15,192,15,128,15,128,15,128, + 15,128,15,128,15,128,255,248,255,248,255,248,255,248,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,20,28, + 84,25,2,249,7,249,240,31,253,240,63,255,240,63,15,240, + 126,7,240,124,3,240,252,3,240,252,3,240,252,3,240,248, + 1,240,248,1,240,248,3,240,252,3,240,252,3,240,124,7, + 240,126,7,240,63,255,240,63,253,240,15,249,240,3,225,240, + 0,3,240,0,3,240,124,3,240,126,7,224,63,255,224,63, + 255,192,31,255,128,3,252,0,18,30,90,24,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,255,0,251, + 255,128,255,255,192,255,31,192,254,15,192,252,7,192,252,7, + 192,252,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,6,30,30,10,2,0,252,252, + 252,252,252,0,0,0,0,0,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,124,124,124,124,124,124,7,39,39,13, + 4,247,126,126,126,126,126,0,0,0,0,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,126,254,254,254,252,248,18,30,90,22,3,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,31,192, + 248,31,128,248,63,0,248,126,0,248,252,0,249,252,0,249, + 248,0,251,240,0,255,224,0,255,240,0,251,240,0,249,248, + 0,249,252,0,248,252,0,248,126,0,248,127,0,248,63,0, + 248,31,128,248,31,192,248,15,192,5,30,30,11,3,0,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,31,20,80, + 37,3,1,248,255,15,240,249,255,159,252,251,255,191,252,255, + 31,248,254,254,15,240,126,252,7,224,62,252,7,224,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,18,20,60,24,3,1,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,20,60,24,2,1,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,28,84,25,3,249,248,254,0, + 249,255,128,251,255,192,255,15,192,254,7,224,252,3,224,252, + 3,240,252,3,240,252,3,240,248,1,240,248,1,240,252,3, + 240,252,3,240,252,3,240,252,3,224,254,7,224,255,15,192, + 255,255,192,251,255,128,249,254,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,20,28,84,25,2,249,7,241,240,31,253,240,63,253,240, + 63,15,240,126,7,240,124,3,240,252,3,240,252,3,240,248, + 3,240,248,1,240,248,1,240,252,3,240,252,3,240,252,3, + 240,124,3,240,126,7,240,63,15,240,63,255,240,31,253,240, + 7,249,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,12,20,40,16,3, + 1,248,240,249,240,251,240,255,240,255,240,255,0,254,0,252, + 0,252,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,17,20,60,21,2,1,15, + 252,0,63,254,0,127,255,0,126,31,128,124,31,128,124,15, + 128,126,0,0,127,128,0,63,248,0,63,254,0,7,255,0, + 0,255,128,0,31,128,0,15,128,248,15,128,252,15,128,126, + 31,128,127,255,0,63,254,0,31,252,0,15,26,52,17,1, + 0,0,128,1,128,7,128,15,128,15,128,15,128,255,252,255, + 252,255,252,255,252,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,192,15,224,7, + 254,7,254,1,254,18,20,60,24,3,0,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,252,7,192,252,15,192,252,15,192,254,31,192,127,255, + 192,63,247,192,31,231,192,20,20,60,22,1,0,248,3,240, + 252,3,240,252,3,224,124,7,224,126,7,224,126,7,192,62, + 15,192,63,15,192,31,15,128,31,31,128,31,159,0,15,159, + 0,15,191,0,15,254,0,7,254,0,7,254,0,3,252,0, + 3,252,0,3,248,0,1,248,0,33,20,100,34,1,0,248, + 7,224,31,128,248,15,240,31,0,252,15,240,31,0,252,15, + 240,63,0,124,15,248,62,0,126,31,248,62,0,126,31,248, + 126,0,62,31,124,126,0,62,62,124,124,0,63,62,124,124, + 0,31,62,126,252,0,31,124,62,248,0,31,252,62,248,0, + 15,252,63,248,0,15,252,31,240,0,15,248,31,240,0,15, + 248,31,240,0,7,248,15,240,0,7,240,15,224,0,7,240, + 15,224,0,20,20,60,22,1,0,254,3,224,126,7,224,63, + 15,192,31,143,128,31,159,128,15,223,0,7,254,0,7,254, + 0,3,252,0,3,252,0,3,252,0,7,254,0,15,255,0, + 15,191,0,31,159,128,63,31,192,62,15,192,126,7,224,252, + 7,224,252,3,240,20,28,84,22,1,248,252,3,240,252,3, + 240,252,3,224,126,7,224,126,7,224,63,7,192,63,15,192, + 63,15,192,31,143,128,31,159,128,15,159,128,15,223,0,15, + 255,0,7,255,0,7,254,0,3,254,0,3,252,0,3,252, + 0,1,252,0,1,248,0,1,248,0,1,248,0,1,240,0, + 3,240,0,3,240,0,7,224,0,7,224,0,7,224,0,17, + 20,60,21,2,0,255,255,0,255,255,0,255,255,0,255,255, + 0,0,63,0,0,126,0,0,252,0,1,248,0,3,240,0, + 7,240,0,15,224,0,15,192,0,31,128,0,63,0,0,126, + 0,0,252,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,15,41,82,20,3,246,0,2,0,254,1,254,3,254,7, + 240,7,224,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,15,192,15,128,63,128,254,0,252, + 0,254,0,255,0,63,128,15,128,15,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,224,7, + 224,3,254,3,254,1,254,0,62,3,43,43,13,5,245,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,15,40,80,20,3,247, + 252,0,255,0,255,0,31,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,192,15,192,7,224, + 7,224,3,248,1,254,0,126,0,254,3,252,7,224,7,192, + 7,192,15,192,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,31,128,255,128,255,0,254,0,248,0, + 21,5,15,21,0,8,15,192,120,63,255,248,127,255,240,127, + 255,224,240,31,128,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,12,0,0,5,28,28,16, + 5,248,248,248,248,248,248,0,0,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,18,30, + 90,24,3,250,0,6,0,0,14,0,0,12,0,0,12,0, + 0,28,0,7,252,0,31,255,0,63,255,128,63,63,128,124, + 63,192,124,127,192,252,103,192,248,96,0,248,96,0,248,192, + 0,248,192,0,248,192,0,253,192,0,253,143,192,125,143,192, + 127,143,192,127,31,128,63,255,128,31,255,0,7,252,0,6, + 0,0,14,0,0,12,0,0,12,0,0,28,0,0,20,31, + 93,23,2,0,0,16,0,3,255,128,7,255,192,15,255,224, + 15,199,240,31,131,240,31,131,240,31,1,240,31,0,0,31, + 0,0,31,0,0,31,0,0,255,252,0,255,252,0,255,252, + 0,255,252,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,255,255,240,255,255,240,255,255,240,255,255, + 240,21,21,63,25,2,8,192,0,24,224,0,56,113,252,112, + 63,255,224,31,7,192,28,1,192,24,1,192,56,0,224,48, + 0,96,48,0,96,48,0,96,48,0,96,48,0,224,56,0, + 224,28,1,192,30,3,192,31,143,192,63,255,224,113,252,112, + 224,0,56,192,0,24,22,30,90,24,1,0,252,0,252,252, + 0,252,124,1,248,126,1,248,62,3,240,63,3,240,63,7, + 224,31,135,224,255,135,252,255,143,252,255,207,252,7,223,128, + 7,255,0,3,255,0,3,255,0,1,254,0,255,255,252,255, + 255,252,255,255,252,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,2,38,38,14,6,248,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,16,36,72,19,1,251,15,252,31,254,63,254,126,14, + 124,2,124,0,124,0,126,0,127,0,63,192,31,224,15,248, + 31,252,63,254,126,127,124,63,248,31,248,31,248,31,252,62, + 254,252,127,248,63,240,31,248,7,252,1,254,0,127,0,63, + 0,63,0,31,0,63,64,126,127,254,127,252,127,240,31,192, + 13,5,10,13,0,26,240,120,240,120,240,120,240,120,240,120, + 30,30,120,34,2,1,0,63,240,0,0,255,252,0,3,248, + 127,0,7,192,15,128,15,0,3,192,30,0,1,224,60,31, + 240,240,56,63,248,112,120,127,252,120,112,248,124,56,112,248, + 62,56,225,240,62,28,225,240,62,28,225,240,0,28,225,240, + 0,28,225,240,0,28,225,240,0,28,225,240,62,28,225,240, + 62,28,112,248,62,56,112,248,124,56,112,127,252,120,56,63, + 248,112,60,31,224,240,30,0,1,224,15,0,3,192,7,128, + 15,128,3,240,63,0,1,255,252,0,0,63,240,0,14,20, + 40,16,1,10,15,192,63,240,120,240,120,120,0,120,15,248, + 63,248,124,120,240,120,240,120,240,120,240,248,255,248,127,248, + 63,56,0,0,0,0,0,0,255,252,255,252,20,16,48,24, + 2,2,15,193,240,15,131,224,31,135,224,31,7,192,63,15, + 192,126,15,192,126,31,128,252,31,128,252,31,128,126,31,128, + 126,15,192,63,15,192,31,7,192,31,135,224,15,131,224,15, + 193,240,21,9,27,25,2,8,255,255,248,255,255,248,0,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,255,30,30,120,34,2,1,0,63,240,0,0,255, + 252,0,3,248,127,0,7,192,15,128,15,0,3,192,30,0, + 1,224,60,255,192,240,56,255,240,112,120,255,248,120,112,240, + 124,56,112,240,60,56,224,240,60,28,224,240,60,28,224,240, + 120,28,224,255,240,28,224,255,224,28,224,255,248,28,224,240, + 120,28,224,240,120,28,112,240,56,56,112,240,60,56,112,240, + 60,120,56,240,60,112,60,240,60,240,30,0,1,224,15,0, + 3,192,7,128,15,128,3,240,63,0,1,255,252,0,0,63, + 240,0,13,4,8,13,0,26,255,248,255,248,255,248,255,248, + 9,9,18,13,2,21,62,0,127,0,227,128,193,128,193,128, + 193,128,227,128,127,0,62,0,24,24,72,40,8,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,255,255,255,255,255,255,255,255,255,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 255,255,255,255,255,255,13,16,32,15,1,15,63,224,127,240, + 248,120,240,120,0,120,0,248,1,240,3,224,7,192,15,128, + 31,0,60,0,240,0,255,240,255,240,255,240,12,15,30,14, + 1,16,63,192,127,224,240,240,240,240,0,240,1,224,15,192, + 15,192,1,224,0,240,0,240,240,240,249,240,127,224,63,128, + 8,8,8,9,2,25,31,31,62,60,120,112,240,224,255,18, + 36,108,22,2,250,7,255,192,31,255,192,63,199,0,127,199, + 0,255,199,0,255,199,0,255,199,0,255,199,0,255,199,0, + 255,199,0,255,199,0,255,199,0,127,199,0,63,199,0,15, + 199,0,1,199,0,1,199,0,1,199,0,1,199,0,1,199, + 0,1,199,0,1,199,0,1,199,0,1,199,0,1,199,0, + 1,199,0,1,199,0,1,199,0,1,199,0,1,199,0,1, + 199,0,1,199,0,1,199,0,1,199,0,1,199,0,1,199, + 0,5,5,5,12,3,11,248,248,248,248,248,9,10,20,10, + 2,246,48,0,48,0,60,0,63,0,7,128,3,128,3,128, + 135,128,255,0,252,0,7,16,16,11,2,14,30,62,254,254, + 158,30,30,30,30,30,30,30,30,30,30,30,14,19,38,16, + 1,11,15,192,31,224,60,240,120,120,112,56,240,60,240,60, + 240,60,240,60,240,60,112,56,120,120,60,240,31,224,15,192, + 0,0,0,0,255,252,255,252,20,16,48,24,2,2,252,31, + 0,124,31,0,126,15,128,62,15,192,63,15,192,31,7,224, + 31,135,224,31,131,240,31,131,240,31,135,224,31,7,224,63, + 15,192,62,15,192,126,15,128,124,31,0,252,31,0,28,31, + 124,32,2,255,30,0,15,0,62,0,30,0,254,0,30,0, + 254,0,60,0,158,0,124,0,30,0,120,0,30,0,248,0, + 30,0,240,0,30,1,240,0,30,1,224,0,30,3,192,0, + 30,3,192,0,30,7,128,0,30,15,128,0,30,15,0,0, + 30,31,3,224,0,30,7,224,0,60,15,224,0,60,15,224, + 0,120,31,224,0,120,61,224,0,240,121,224,0,240,121,224, + 1,224,241,224,3,193,225,224,3,193,255,240,7,129,255,240, + 7,128,1,224,15,0,1,224,15,0,1,224,30,0,1,224, + 28,30,120,31,2,0,30,0,30,0,62,0,60,0,254,0, + 56,0,222,0,120,0,158,0,240,0,30,0,240,0,30,1, + 224,0,30,1,224,0,30,3,192,0,30,3,192,0,30,7, + 128,0,30,7,128,0,30,15,0,0,30,30,0,0,30,30, + 31,128,30,60,63,224,0,60,125,224,0,120,240,240,0,120, + 240,240,0,240,0,240,0,240,1,240,1,224,3,224,1,192, + 7,192,3,192,15,128,7,128,31,0,7,128,62,0,15,0, + 124,0,15,0,240,0,30,0,255,240,30,0,255,240,29,30, + 120,31,1,1,63,192,3,192,127,224,7,192,240,240,7,128, + 240,240,15,0,0,240,15,0,1,224,30,0,15,192,30,0, + 15,192,60,0,1,224,124,0,0,240,120,0,0,240,240,0, + 240,240,240,0,249,241,224,0,127,225,224,0,63,131,193,240, + 0,3,195,240,0,7,135,240,0,15,7,240,0,15,15,240, + 0,30,30,240,0,30,60,240,0,60,60,240,0,60,120,240, + 0,120,240,240,0,240,255,248,0,240,255,248,1,224,0,240, + 1,224,0,240,3,192,0,240,3,192,0,240,19,28,84,23, + 2,248,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,0,0,0,0,0,0,0,0,0,240,0,0,240,0, + 0,240,0,0,240,0,1,224,0,7,224,0,15,128,0,31, + 0,0,62,0,0,124,0,0,252,0,0,252,0,0,248,1, + 0,252,3,128,252,7,224,126,15,192,127,255,192,63,255,128, + 15,254,0,3,248,0,27,41,164,28,1,0,1,240,0,0, + 1,240,0,0,0,248,0,0,0,120,0,0,0,60,0,0, + 0,28,0,0,0,14,0,0,0,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,63,128,0, + 0,127,128,0,0,127,128,0,0,127,192,0,0,255,192,0, + 0,255,224,0,0,255,224,0,1,251,224,0,1,243,240,0, + 3,243,240,0,3,241,240,0,3,225,248,0,7,225,248,0, + 7,224,248,0,7,192,252,0,15,192,252,0,15,192,126,0, + 15,128,126,0,31,255,254,0,31,255,255,0,63,255,255,0, + 63,255,255,0,63,255,255,128,126,0,31,128,126,0,31,128, + 126,0,15,192,252,0,15,192,252,0,7,192,248,0,7,224, + 27,41,164,28,1,0,0,3,240,0,0,3,224,0,0,3, + 192,0,0,7,128,0,0,7,0,0,0,15,0,0,0,14, + 0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,127, + 128,0,0,127,192,0,0,255,192,0,0,255,224,0,0,255, + 224,0,1,251,224,0,1,243,240,0,3,243,240,0,3,241, + 240,0,3,225,248,0,7,225,248,0,7,224,248,0,7,192, + 252,0,15,192,252,0,15,192,126,0,15,128,126,0,31,255, + 254,0,31,255,255,0,63,255,255,0,63,255,255,0,63,255, + 255,128,126,0,31,128,126,0,31,128,126,0,15,192,252,0, + 15,192,252,0,7,192,248,0,7,224,27,41,164,28,1,0, + 0,63,0,0,0,63,128,0,0,127,128,0,0,123,192,0, + 0,243,192,0,0,225,224,0,1,192,224,0,1,192,112,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0, + 0,63,128,0,0,127,128,0,0,127,128,0,0,127,192,0, + 0,255,192,0,0,255,224,0,0,255,224,0,1,251,224,0, + 1,243,240,0,3,243,240,0,3,241,240,0,3,225,248,0, + 7,225,248,0,7,224,248,0,7,192,252,0,15,192,252,0, + 15,192,126,0,15,128,126,0,31,255,254,0,31,255,255,0, + 63,255,255,0,63,255,255,0,63,255,255,128,126,0,31,128, + 126,0,31,128,126,0,15,192,252,0,15,192,252,0,7,192, + 248,0,7,224,27,39,156,28,1,0,0,120,112,0,0,255, + 224,0,1,255,224,0,1,255,192,0,1,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63, + 0,0,0,63,128,0,0,127,128,0,0,127,128,0,0,127, + 192,0,0,255,192,0,0,255,224,0,0,255,224,0,1,251, + 224,0,1,243,240,0,3,243,240,0,3,241,240,0,3,225, + 248,0,7,225,248,0,7,224,248,0,7,192,252,0,15,192, + 252,0,15,192,126,0,15,128,126,0,31,255,254,0,31,255, + 255,0,63,255,255,0,63,255,255,0,63,255,255,128,126,0, + 31,128,126,0,31,128,126,0,15,192,252,0,15,192,252,0, + 7,192,248,0,7,224,27,40,160,29,1,0,1,224,240,0, + 1,224,240,0,1,224,240,0,1,224,240,0,1,224,240,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,63,128,0,0,63,128,0,0,127,192,0, + 0,127,192,0,0,127,192,0,0,255,224,0,0,255,224,0, + 1,251,240,0,1,251,240,0,1,251,240,0,3,241,248,0, + 3,241,248,0,3,224,248,0,7,224,252,0,7,224,252,0, + 7,192,124,0,15,192,126,0,15,192,126,0,15,128,62,0, + 31,255,255,0,31,255,255,0,31,255,255,0,63,255,255,128, + 63,255,255,128,126,0,31,128,126,0,15,192,126,0,15,192, + 252,0,7,224,252,0,7,224,252,0,7,224,27,43,172,28, + 0,0,0,31,0,0,0,63,128,0,0,113,192,0,0,96, + 192,0,0,96,192,0,0,96,192,0,0,113,192,0,0,63, + 128,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,63,128,0,0,63,128,0,0,63, + 128,0,0,127,192,0,0,127,192,0,0,127,192,0,0,255, + 224,0,0,251,224,0,0,251,240,0,1,251,240,0,1,241, + 240,0,1,241,248,0,3,241,248,0,3,224,248,0,7,224, + 252,0,7,224,252,0,7,192,124,0,15,192,126,0,15,192, + 126,0,15,255,254,0,31,255,255,0,31,255,255,0,31,255, + 255,128,63,255,255,128,63,0,31,128,62,0,15,192,126,0, + 15,192,126,0,15,192,252,0,7,224,252,0,7,224,38,30, + 150,40,0,0,0,1,255,255,248,0,1,255,255,248,0,3, + 255,255,248,0,3,255,255,248,0,7,255,0,0,0,7,223, + 0,0,0,15,223,0,0,0,15,159,0,0,0,31,159,0, + 0,0,31,31,0,0,0,63,31,0,0,0,62,31,0,0, + 0,126,31,255,248,0,124,31,255,248,0,252,31,255,248,0, + 248,31,255,248,1,248,31,255,248,1,240,31,0,0,3,255, + 255,0,0,7,255,255,0,0,7,255,255,0,0,15,255,255, + 0,0,15,255,255,0,0,31,128,63,0,0,31,128,63,0, + 0,63,0,63,255,252,63,0,63,255,252,126,0,63,255,252, + 126,0,63,255,252,252,0,63,255,252,24,40,120,29,2,247, + 1,255,192,3,255,240,15,255,248,15,255,252,31,255,254,63, + 128,254,62,0,127,126,0,127,124,0,63,124,0,63,252,0, + 0,252,0,0,252,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,252,0,0,252,0,0,124,0,63,124, + 0,127,126,0,127,62,0,255,63,0,254,31,255,254,31,255, + 252,15,255,248,7,255,240,1,255,192,0,24,0,0,24,0, + 0,31,0,0,31,128,0,3,192,0,1,192,0,1,192,0, + 195,192,0,255,128,0,254,0,20,41,123,25,3,0,15,128, + 0,15,128,0,7,192,0,3,192,0,1,224,0,0,224,0, + 0,240,0,0,112,0,0,0,0,0,0,0,0,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,255,255,224,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,255,255,224,255,255,224,255,255,224,255, + 255,224,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,240,255,255,240, + 255,255,240,255,255,240,255,255,240,20,41,123,25,3,0,0, + 63,0,0,62,0,0,124,0,0,120,0,0,240,0,0,224, + 0,1,224,0,1,192,0,0,0,0,0,0,0,0,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,224,255,255,224,255,255,224, + 255,255,224,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,20,41,123,25,3,0, + 3,248,0,3,248,0,7,252,0,7,188,0,7,30,0,14, + 14,0,14,7,0,28,7,0,0,0,0,0,0,0,0,0, + 0,255,255,224,255,255,224,255,255,224,255,255,224,255,255,224, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,224,255,255,224,255,255, + 224,255,255,224,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,255,255,240,255, + 255,240,255,255,240,255,255,240,255,255,240,20,40,120,25,3, + 0,15,15,0,15,15,0,15,15,0,15,15,0,15,15,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,255,255,224,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,255,255,224,255,255,224,255,255,224,255, + 255,224,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,240,255,255,240, + 255,255,240,255,255,240,255,255,240,9,41,82,11,255,0,248, + 0,124,0,60,0,30,0,14,0,15,0,7,0,3,0,0, + 0,0,0,0,0,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,8,41,41,10,3,0,15,31,30,60,56,120,112,224,0, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 12,41,82,11,0,0,31,128,63,128,63,128,123,192,121,192, + 112,224,224,224,192,112,0,0,0,0,0,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,13,40,80,13,0,0,240,120, + 240,120,240,120,240,120,240,120,0,0,0,0,0,0,0,0, + 0,0,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,26,30, + 120,29,0,0,31,255,0,0,31,255,224,0,31,255,248,0, + 31,255,252,0,31,255,254,0,31,1,255,0,31,0,127,0, + 31,0,31,128,31,0,31,128,31,0,15,192,31,0,15,192, + 31,0,7,192,31,0,7,192,255,252,7,192,255,252,7,192, + 255,252,7,192,255,252,7,192,31,0,7,192,31,0,7,192, + 31,0,15,192,31,0,15,192,31,0,31,128,31,0,31,128, + 31,0,127,0,31,1,255,0,31,255,254,0,31,255,252,0, + 31,255,248,0,31,255,224,0,31,255,0,0,25,39,156,31, + 3,0,0,248,96,0,1,255,224,0,1,255,192,0,3,255, + 128,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,128,15,128,255,128,15,128,255,128, + 15,128,255,192,15,128,255,192,15,128,255,224,15,128,251,224, + 15,128,251,240,15,128,249,240,15,128,249,248,15,128,248,248, + 15,128,248,252,15,128,248,252,15,128,248,126,15,128,248,126, + 15,128,248,63,15,128,248,63,15,128,248,31,143,128,248,31, + 143,128,248,15,143,128,248,15,207,128,248,7,207,128,248,7, + 239,128,248,3,239,128,248,3,255,128,248,1,255,128,248,1, + 255,128,248,0,255,128,248,0,255,128,248,0,127,128,27,41, + 164,31,2,0,1,240,0,0,1,240,0,0,0,248,0,0, + 0,120,0,0,0,60,0,0,0,28,0,0,0,28,0,0, + 0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,255,224,0,3,255,248,0,7,255,252,0,15,255,254,0, + 31,255,255,0,63,192,127,128,63,0,31,128,127,0,31,192, + 126,0,15,192,126,0,15,192,252,0,15,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,15,224, + 126,0,15,192,126,0,15,192,127,0,31,192,63,0,31,128, + 63,192,127,128,31,255,255,0,15,255,254,0,7,255,252,0, + 3,255,248,0,0,255,224,0,27,41,164,31,2,0,0,1, + 240,0,0,1,224,0,0,3,224,0,0,3,192,0,0,7, + 128,0,0,7,0,0,0,14,0,0,0,14,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,224,0,3,255, + 248,0,7,255,252,0,15,255,254,0,31,255,255,0,63,192, + 127,128,63,0,31,128,127,0,31,192,126,0,15,192,126,0, + 15,192,252,0,15,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,15,224,126,0,15,192,126,0, + 15,192,127,0,31,192,63,0,31,128,63,192,127,128,31,255, + 255,0,15,255,254,0,7,255,252,0,3,255,248,0,0,255, + 224,0,27,41,164,31,2,0,0,63,0,0,0,63,128,0, + 0,63,128,0,0,123,192,0,0,113,192,0,0,240,224,0, + 0,224,224,0,1,192,112,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,224,0,3,255,248,0,7,255,252,0, + 15,255,254,0,31,255,255,0,63,192,127,128,63,0,31,128, + 127,0,31,192,126,0,15,192,126,0,15,192,252,0,15,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,15,224,126,0,15,192,126,0,15,192,127,0,31,192, + 63,0,31,128,63,192,127,128,31,255,255,0,15,255,254,0, + 7,255,252,0,3,255,248,0,0,255,224,0,27,40,160,31, + 2,0,0,0,48,0,0,124,112,0,0,255,224,0,0,255, + 224,0,1,255,192,0,1,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,224,0,3,255, + 248,0,7,255,252,0,15,255,254,0,31,255,255,0,63,192, + 127,128,63,0,31,128,127,0,31,192,126,0,15,192,126,0, + 15,192,252,0,15,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,15,224,126,0,15,192,126,0, + 15,192,127,0,31,192,63,0,31,128,63,192,127,128,31,255, + 255,0,15,255,254,0,7,255,252,0,3,255,248,0,0,255, + 224,0,27,40,160,31,2,0,0,240,240,0,0,240,240,0, + 0,240,240,0,0,240,240,0,0,240,240,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,255,224,0,3,255,248,0,7,255,252,0,15,255,254,0, + 31,255,255,0,63,192,127,128,63,0,31,128,127,0,31,192, + 126,0,15,192,126,0,15,192,252,0,15,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,15,224, + 126,0,15,192,126,0,15,192,127,0,31,192,63,0,31,128, + 63,192,127,128,31,255,255,0,15,255,254,0,7,255,252,0, + 3,255,248,0,0,255,224,0,22,22,66,40,9,1,96,0, + 24,240,0,60,112,0,56,56,0,112,28,0,224,14,1,192, + 7,3,128,3,135,0,1,206,0,0,252,0,0,120,0,0, + 120,0,0,252,0,1,206,0,3,135,0,7,3,128,14,1, + 192,28,0,224,56,0,112,112,0,56,96,0,24,64,0,8, + 29,34,136,31,1,254,0,0,0,16,0,0,0,56,0,127, + 240,120,1,255,252,240,3,255,255,240,7,255,255,224,15,255, + 255,192,31,224,63,192,31,128,15,192,63,128,31,224,63,0, + 63,224,63,0,127,224,126,0,251,240,126,1,243,240,126,1, + 227,240,126,3,195,240,126,7,131,240,126,15,3,240,126,30, + 3,240,126,60,3,240,126,124,3,240,126,248,7,240,63,240, + 7,224,63,224,7,224,63,192,15,224,31,128,15,192,31,224, + 63,192,31,255,255,128,63,255,255,0,127,255,254,0,249,255, + 252,0,240,127,240,0,224,0,0,0,64,0,0,0,24,41, + 123,30,3,0,7,192,0,3,224,0,1,224,0,1,240,0, + 0,240,0,0,120,0,0,56,0,0,28,0,0,0,0,0, + 0,0,0,0,0,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,252,0, + 31,252,0,31,252,0,63,124,0,63,126,0,126,127,0,254, + 63,255,252,31,255,252,31,255,248,7,255,224,1,255,192,24, + 41,123,30,3,0,0,3,224,0,3,224,0,7,192,0,15, + 128,0,15,0,0,30,0,0,28,0,0,56,0,0,0,0, + 0,0,0,0,0,0,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,252, + 0,31,252,0,31,252,0,63,124,0,63,126,0,126,127,0, + 254,63,255,252,31,255,252,31,255,248,7,255,224,1,255,192, + 24,41,123,30,3,0,0,126,0,0,255,0,0,255,0,1, + 247,128,1,231,128,3,195,192,3,129,192,7,0,224,0,0, + 0,0,0,0,0,0,0,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 252,0,31,252,0,31,252,0,63,124,0,63,126,0,126,127, + 0,254,63,255,252,31,255,252,31,255,248,7,255,224,1,255, + 192,24,40,120,30,3,0,3,193,224,3,193,224,3,193,224, + 3,193,224,3,193,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,0,31,252,0,31,252,0,31,252,0, + 31,252,0,31,252,0,31,252,0,31,252,0,31,252,0,31, + 252,0,31,252,0,31,252,0,31,252,0,31,252,0,31,252, + 0,31,252,0,31,252,0,31,252,0,31,252,0,31,252,0, + 31,252,0,31,254,0,63,126,0,63,127,0,126,127,128,254, + 63,255,252,31,255,252,31,255,248,7,255,224,1,255,192,24, + 41,123,25,1,0,0,7,192,0,15,128,0,15,0,0,14, + 0,0,30,0,0,28,0,0,56,0,0,0,0,0,0,0, + 0,0,0,0,0,0,252,0,127,254,0,126,126,0,254,127, + 0,252,63,1,252,63,1,248,31,131,248,31,131,240,15,195, + 240,15,199,224,7,231,224,7,239,192,3,255,192,3,255,128, + 1,255,128,1,255,0,0,255,0,0,254,0,0,126,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 21,30,90,26,2,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,252,0,255,255,128,255,255,192,255,255, + 224,255,255,240,248,7,240,248,1,248,248,1,248,248,0,248, + 248,0,248,248,1,248,248,1,248,248,7,240,255,255,240,255, + 255,224,255,255,192,255,255,128,255,252,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 21,30,90,24,2,1,15,252,0,63,255,0,127,255,128,126, + 31,192,252,15,192,252,7,192,248,7,192,248,15,192,248,15, + 128,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 248,248,0,248,252,0,248,254,0,248,127,128,248,63,192,248, + 31,224,248,7,240,248,3,240,248,1,248,248,1,248,251,224, + 248,251,225,248,251,241,248,249,255,240,249,255,224,248,255,192, + 19,32,96,22,2,0,31,0,0,31,0,0,15,128,0,7, + 128,0,3,192,0,1,192,0,1,224,0,0,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,15,254,0,31,255,0, + 63,255,128,126,15,128,124,15,192,0,7,192,0,127,192,15, + 255,192,63,255,192,127,255,192,127,7,192,252,7,192,252,7, + 192,248,15,192,248,15,192,252,15,192,254,31,192,127,255,192, + 63,247,192,31,227,224,19,32,96,22,2,0,0,31,0,0, + 62,0,0,60,0,0,120,0,0,120,0,0,240,0,0,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,31,255,0,63,255,128,126,15,128,124,15,192,0, + 7,192,0,127,192,15,255,192,63,255,192,127,255,192,127,7, + 192,252,7,192,252,7,192,248,15,192,248,15,192,252,15,192, + 254,31,192,127,255,192,63,247,192,31,227,224,19,32,96,22, + 2,0,3,240,0,3,248,0,7,248,0,7,188,0,15,28, + 0,14,30,0,28,14,0,28,7,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,254,0,31,255,0,63,255,128,126, + 15,128,124,15,192,0,7,192,0,127,192,15,255,192,63,255, + 192,127,255,192,127,7,192,252,7,192,252,7,192,248,15,192, + 248,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 227,224,19,30,90,22,2,0,7,135,0,15,254,0,15,254, + 0,31,252,0,24,16,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,254,0,31,255,0,63,255,128,126, + 15,128,124,15,192,0,7,192,0,127,192,15,255,192,63,255, + 192,127,255,192,127,7,192,252,7,192,252,7,192,248,15,192, + 248,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 227,224,19,31,93,23,2,0,30,30,0,30,30,0,30,30, + 0,30,30,0,30,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,15,254,0,31,255,0,63, + 255,128,126,15,128,124,15,192,0,7,192,0,127,192,15,255, + 192,63,255,192,127,255,192,127,7,192,252,7,192,252,7,192, + 248,15,192,248,15,192,252,15,192,254,31,192,127,255,192,63, + 247,192,31,231,224,19,34,102,22,2,0,1,240,0,3,248, + 0,7,28,0,6,12,0,6,12,0,6,12,0,7,28,0, + 3,248,0,1,240,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,254,0,31,255,0,63,255,128,126,15, + 128,124,15,192,0,7,192,0,127,192,15,255,192,63,255,192, + 127,255,192,127,7,192,252,7,192,252,7,192,248,15,192,248, + 15,192,252,15,192,254,31,192,127,255,192,63,247,192,31,231, + 224,32,20,80,36,2,1,15,252,31,224,31,254,127,248,63, + 255,127,252,126,15,240,126,124,7,224,62,0,7,224,62,0, + 7,192,31,7,255,255,255,31,255,255,255,63,255,255,255,127, + 255,255,255,252,7,192,0,252,7,224,0,248,7,224,0,248, + 15,224,63,252,15,240,62,254,30,248,126,127,252,127,252,63, + 248,63,248,31,224,31,240,17,30,90,21,2,247,15,252,0, + 31,254,0,63,255,0,126,63,0,124,31,128,124,31,128,252, + 15,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,252,15,128,252,31,128,124,31,128,126,63,0, + 63,255,0,31,254,0,15,252,0,1,128,0,1,128,0,1, + 224,0,1,248,0,0,60,0,0,28,0,0,28,0,6,60, + 0,7,248,0,7,224,0,19,32,96,22,2,0,31,0,0, + 31,0,0,15,128,0,7,128,0,3,192,0,1,192,0,0, + 224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0, + 0,7,252,0,31,255,0,63,255,0,62,31,128,124,15,192, + 124,7,192,252,7,192,255,255,192,255,255,192,255,255,224,255, + 255,224,248,0,0,248,0,0,252,0,0,124,7,192,124,15, + 192,126,31,128,63,255,128,31,255,0,7,252,0,19,32,96, + 22,2,0,0,31,0,0,62,0,0,60,0,0,120,0,0, + 120,0,0,240,0,0,224,0,1,192,0,0,0,0,0,0, + 0,0,0,0,0,0,0,7,252,0,31,255,0,63,255,0, + 62,31,128,124,15,192,124,7,192,252,7,192,255,255,192,255, + 255,192,255,255,224,255,255,224,248,0,0,248,0,0,252,0, + 0,124,7,192,124,15,192,126,31,128,63,255,128,31,255,0, + 7,252,0,19,32,96,22,2,0,3,240,0,3,248,0,7, + 248,0,7,188,0,15,28,0,14,30,0,28,14,0,28,7, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,252,0, + 31,255,0,63,255,0,62,31,128,124,15,192,124,7,192,252, + 7,192,255,255,192,255,255,192,255,255,224,255,255,224,248,0, + 0,248,0,0,252,0,0,124,7,192,124,15,192,126,31,128, + 63,255,128,31,255,0,7,252,0,19,31,93,22,2,0,30, + 30,0,30,30,0,30,30,0,30,30,0,30,30,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 15,192,252,15,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,15,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,8,32,32,11, + 0,0,248,120,124,60,30,14,7,7,0,0,0,0,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,9,32,64,10,2,0,15,128,31,0,30,0,62,0, + 60,0,120,0,112,0,224,0,0,0,0,0,0,0,0,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,13,32,64,11,255,0,15,192, + 31,192,31,224,61,224,56,240,120,112,112,56,224,56,0,0, + 0,0,0,0,0,0,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,13,31, + 62,11,255,0,240,120,240,120,240,120,240,120,240,120,0,0, + 0,0,0,0,0,0,0,0,0,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,20,31,93,24,2,0,0,0,96,7,193,224,3,247, + 224,1,255,128,0,254,0,0,254,0,3,254,0,15,159,0, + 30,15,128,24,15,128,0,7,192,7,255,192,15,255,224,63, + 255,224,63,15,240,126,3,240,124,3,240,252,1,240,252,1, + 240,252,1,240,248,1,240,248,1,240,252,1,240,252,1,240, + 252,1,240,124,3,240,126,3,224,63,15,224,31,255,192,15, + 255,128,7,254,0,18,30,90,24,3,0,7,134,0,15,254, + 0,15,254,0,31,252,0,24,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,32,96,24,2,0,15,128,0,7,128, + 0,7,192,0,3,192,0,1,224,0,0,224,0,0,112,0, + 0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 254,0,15,255,0,31,255,192,63,15,192,126,3,224,124,3, + 240,252,1,240,252,1,240,252,1,240,248,1,240,248,1,240, + 248,1,240,252,1,240,252,1,240,124,3,240,126,3,224,63, + 15,192,31,255,192,15,255,0,3,254,0,20,32,96,24,2, + 0,0,15,128,0,31,0,0,30,0,0,60,0,0,56,0, + 0,120,0,0,112,0,0,224,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,254,0,15,255,0,31,255,192,63,15, + 192,126,3,224,124,3,240,252,1,240,252,1,240,252,1,240, + 248,1,240,248,1,240,248,1,240,252,1,240,252,1,240,124, + 3,240,126,3,224,63,15,192,31,255,192,15,255,0,3,254, + 0,20,32,96,24,2,0,1,248,0,1,252,0,3,252,0, + 3,222,0,7,158,0,7,15,0,14,7,0,14,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,31,93,24,2,0,0,1,128, + 3,195,0,7,255,0,7,255,0,15,254,0,12,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,254, + 0,15,255,0,31,255,192,63,15,192,126,3,224,124,3,240, + 252,1,240,252,1,240,252,1,240,248,1,240,248,1,240,248, + 1,240,252,1,240,252,1,240,124,3,240,126,3,224,63,15, + 192,31,255,192,15,255,0,3,254,0,20,31,93,24,2,0, + 15,7,128,15,7,128,15,7,128,15,7,128,15,7,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,254,0,15,255,0,31,255,192,63,15,192,126,3,224, + 124,3,240,252,1,240,252,1,240,252,1,240,248,1,240,248, + 1,240,248,1,240,252,1,240,252,1,240,124,3,240,126,3, + 224,63,15,192,31,255,192,15,255,0,3,254,0,24,19,57, + 40,8,2,0,16,0,0,56,0,0,124,0,0,124,0,0, + 124,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,56,0, + 0,124,0,0,124,0,0,124,0,0,56,0,21,26,78,24, + 1,254,0,0,56,0,0,120,0,0,112,1,255,224,7,255, + 224,15,255,224,31,135,224,63,7,240,62,15,248,126,14,248, + 126,28,248,126,56,248,124,120,248,124,112,248,126,224,248,127, + 192,248,63,193,248,63,129,248,63,3,240,31,135,224,31,255, + 224,31,255,192,57,255,0,120,0,0,240,0,0,96,0,0, + 18,32,96,24,3,0,31,0,0,15,0,0,15,128,0,7, + 128,0,3,192,0,1,192,0,0,224,0,0,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,252,7,192,252,15,192,252,15,192,254,31,192,127,255,192, + 63,247,192,31,231,192,18,32,96,24,3,0,0,62,0,0, + 60,0,0,124,0,0,120,0,0,240,0,0,224,0,1,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,252,7,192,252,15,192,252,15,192, + 254,31,192,127,255,192,63,247,192,31,231,192,18,32,96,24, + 3,0,3,240,0,3,248,0,7,248,0,7,188,0,15,60, + 0,14,30,0,30,14,0,28,6,0,0,0,0,0,0,0, + 0,0,0,0,0,0,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 231,192,18,31,93,24,3,0,30,30,0,30,30,0,30,30, + 0,30,30,0,30,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 252,7,192,252,15,192,252,15,192,254,31,192,127,255,192,63, + 247,192,31,231,192,21,41,123,22,1,248,0,7,192,0,15, + 128,0,15,0,0,30,0,0,30,0,0,60,0,0,56,0, + 0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,252,1,248,252,3,240,126,3,240,126,3,224,63,7, + 224,63,7,224,63,7,192,31,143,192,31,143,192,15,143,128, + 15,223,128,15,223,128,7,223,0,7,255,0,3,255,0,3, + 254,0,3,254,0,1,252,0,1,252,0,0,252,0,0,248, + 0,1,248,0,33,248,0,115,240,0,255,240,0,255,224,0, + 127,192,0,31,128,0,20,38,114,25,3,248,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,249,254,0,251,255,128, + 251,255,192,255,15,192,254,7,224,252,3,224,252,3,240,252, + 3,240,252,3,240,248,1,240,248,1,240,252,3,240,252,3, + 240,252,3,240,252,3,224,254,7,224,255,15,192,255,255,192, + 251,255,128,249,254,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,21,39, + 117,21,0,248,15,7,128,15,7,128,15,7,128,15,7,128, + 15,7,128,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,1,248,252,1,248,126,1,240,126,3, + 240,63,3,224,63,3,224,63,7,224,31,135,192,31,143,192, + 15,207,192,15,207,128,15,223,128,7,255,128,7,255,0,3, + 255,0,3,255,0,3,254,0,1,254,0,1,252,0,0,252, + 0,0,252,0,1,248,0,1,248,0,1,248,0,3,240,0, + 3,240,0,7,240,0,7,224,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 30 + Calculated Max Values w=24 h=32 x= 8 y=14 dx=40 dy= 0 ascent=31 len=90 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =30 descent= 0 + X Font ascent =30 descent= 0 + Max Font ascent =31 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30n[1179] U8G_SECTION(".progmem.u8g_font_fub30n") = { + 0,59,54,253,245,30,0,0,0,0,42,57,0,31,251,30, + 0,16,16,32,26,5,14,4,32,28,56,30,120,30,120,15, + 240,7,224,227,199,255,255,255,255,243,207,7,224,15,240,30, + 120,30,120,28,56,4,32,24,25,75,40,8,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,255,255, + 255,255,255,255,255,255,255,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,8,10,10,12,2,251,31,31, + 62,62,60,124,120,120,240,240,10,5,10,14,2,8,255,192, + 255,192,255,192,255,192,255,192,5,5,5,12,4,0,248,248, + 248,248,248,13,32,64,17,2,254,0,120,0,120,0,120,0, + 240,0,240,0,240,1,224,1,224,1,224,3,192,3,192,3, + 192,3,192,7,128,7,128,7,128,15,0,15,0,15,0,14, + 0,30,0,30,0,30,0,60,0,60,0,60,0,120,0,120, + 0,120,0,120,0,240,0,240,0,20,30,90,23,1,1,3, + 252,0,15,255,0,31,255,128,63,15,128,62,7,192,124,3, + 192,124,3,224,124,3,224,124,3,224,248,1,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,124,3, + 224,124,3,224,124,3,224,124,3,224,62,7,192,63,15,128, + 31,255,128,15,255,0,3,252,0,12,30,60,23,4,0,1, + 240,3,240,15,240,63,240,255,240,255,240,253,240,249,240,225, + 240,129,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,20,30,90,23,1, + 1,3,255,0,7,255,128,31,255,192,31,255,224,63,255,240, + 63,3,240,126,1,240,126,1,240,124,1,240,0,1,240,0, + 3,240,0,3,240,0,7,224,0,15,224,0,15,192,0,31, + 128,0,63,0,0,254,0,1,252,0,3,248,0,7,240,0, + 15,224,0,63,128,0,127,0,0,252,0,0,255,255,240,255, + 255,240,255,255,240,255,255,240,255,255,240,19,30,90,23,2, + 1,7,252,0,31,255,0,63,255,128,127,255,128,127,255,192, + 252,15,192,252,7,192,248,7,192,0,7,192,0,7,192,0, + 15,192,0,63,192,3,255,128,3,254,0,3,252,0,3,255, + 0,3,255,128,0,31,192,0,7,224,0,7,224,0,7,224, + 0,3,224,248,7,224,252,7,224,252,7,192,126,15,192,127, + 255,128,63,255,128,31,255,0,15,252,0,21,30,90,23,1, + 0,0,63,128,0,63,128,0,127,128,0,255,128,0,255,128, + 1,255,128,1,255,128,3,239,128,3,207,128,7,207,128,15, + 143,128,15,143,128,31,15,128,31,15,128,62,15,128,62,15, + 128,124,15,128,252,15,128,248,15,128,255,255,248,255,255,248, + 255,255,248,255,255,248,255,255,248,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,19,30,90,23,2, + 0,127,255,192,127,255,192,127,255,192,127,255,192,127,255,192, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,252,0,125,255,0,127,255,128,127,255,192,127,15, + 224,126,7,224,124,3,224,0,3,224,0,3,224,0,3,224, + 0,3,224,0,3,224,248,7,224,252,7,224,252,15,192,127, + 255,128,127,255,128,63,254,0,15,252,0,20,30,90,23,1, + 1,3,254,0,7,255,0,15,255,128,31,255,192,63,255,192, + 63,7,224,126,3,224,126,3,224,124,0,0,124,0,0,252, + 0,0,248,0,0,249,255,0,251,255,128,255,255,192,255,15, + 224,254,7,224,254,3,240,252,3,240,252,3,240,252,1,240, + 252,1,240,124,3,240,124,3,240,126,3,224,63,7,224,63, + 255,192,31,255,128,15,255,0,3,254,0,19,30,90,23,2, + 0,255,255,224,255,255,224,255,255,224,255,255,224,255,255,224, + 0,7,224,0,7,224,0,7,192,0,15,192,0,15,192,0, + 31,128,0,31,128,0,63,0,0,63,0,0,63,0,0,126, + 0,0,126,0,0,252,0,0,252,0,1,252,0,1,248,0, + 1,248,0,3,240,0,3,240,0,7,240,0,7,224,0,15, + 224,0,15,192,0,15,192,0,31,192,0,20,30,90,23,1, + 1,7,254,0,31,255,128,63,255,192,127,255,224,127,255,224, + 126,7,224,124,3,224,124,3,224,124,3,224,124,3,224,126, + 7,224,127,15,192,63,255,128,15,255,0,7,252,0,31,255, + 0,63,255,192,127,15,224,124,7,224,252,3,240,252,3,240, + 248,1,240,248,3,240,252,3,240,252,3,240,254,7,240,127, + 255,224,63,255,192,31,255,128,15,255,0,20,30,90,23,1, + 1,3,252,0,15,255,0,31,255,128,63,255,192,127,255,192, + 126,7,224,252,7,224,252,3,224,252,3,240,248,3,240,248, + 3,240,252,3,240,252,7,240,124,7,240,127,15,240,63,255, + 240,63,253,240,31,249,240,7,225,240,0,3,240,0,3,224, + 0,3,224,0,3,224,124,7,224,124,7,192,126,15,192,63, + 255,128,31,255,0,15,254,0,7,252,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=38 h=43 x=10 y=25 dx=42 dy= 0 ascent=33 len=195 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =33 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30r[7686] U8G_SECTION(".progmem.u8g_font_fub30r") = { + 0,59,54,253,245,30,9,163,21,182,32,127,249,33,245,31, + 248,0,0,0,12,0,0,5,30,30,16,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,0,0,248,248,248,248,248,15,12,24,21,3, + 18,252,126,252,126,252,126,252,126,248,126,248,126,248,60,248, + 60,120,60,120,60,120,60,120,60,25,30,120,29,2,0,0, + 60,30,0,0,60,30,0,0,120,60,0,0,120,60,0,0, + 120,60,0,0,120,120,0,0,240,120,0,0,240,120,0,15, + 255,255,128,31,255,255,0,31,255,255,0,31,255,255,0,1, + 224,224,0,3,193,224,0,3,193,224,0,3,193,224,0,7, + 131,192,0,7,131,192,0,127,255,252,0,255,255,248,0,255, + 255,248,0,255,255,248,0,15,7,128,0,30,15,0,0,30, + 15,0,0,30,15,0,0,62,30,0,0,60,30,0,0,60, + 30,0,0,60,30,0,0,21,37,111,23,1,252,0,96,0, + 0,96,0,0,96,0,3,254,0,15,255,128,31,255,192,63, + 255,224,127,111,224,126,99,240,124,99,240,124,97,240,124,96, + 0,124,96,0,126,96,0,127,224,0,127,240,0,63,254,0, + 31,255,128,7,255,224,0,255,240,0,127,240,0,103,248,0, + 97,248,248,97,248,248,96,248,252,97,248,252,97,248,126,99, + 240,127,255,240,63,255,224,31,255,192,15,255,128,3,254,0, + 0,96,0,0,96,0,0,96,0,0,96,0,37,30,150,41, + 2,0,7,224,0,120,0,31,248,0,240,0,63,252,0,240, + 0,124,62,1,224,0,120,30,3,224,0,240,15,3,192,0, + 240,15,7,192,0,240,15,7,128,0,240,15,15,0,0,240, + 15,15,0,0,240,15,30,0,0,240,15,30,0,0,120,30, + 60,0,0,124,62,124,0,0,63,252,120,63,0,31,248,248, + 255,192,7,224,241,255,224,0,1,227,225,240,0,1,227,192, + 240,0,3,199,128,120,0,3,199,128,120,0,7,135,128,120, + 0,7,135,128,120,0,15,7,128,120,0,31,7,128,120,0, + 30,3,192,240,0,62,3,192,240,0,60,1,243,224,0,120, + 1,255,192,0,120,0,127,128,28,30,120,31,2,1,3,255, + 0,0,15,255,128,0,31,255,192,0,63,143,224,0,63,7, + 224,0,62,3,224,0,63,7,224,0,63,7,224,0,31,15, + 192,0,31,159,192,0,15,255,128,0,15,255,0,0,7,252, + 0,0,15,248,0,0,31,248,15,128,63,252,15,128,63,126, + 15,128,126,127,15,128,126,63,143,128,252,31,207,128,252,15, + 255,0,248,7,255,0,248,3,255,0,252,1,254,0,252,0, + 254,0,126,0,254,0,127,131,255,0,63,255,255,128,31,255, + 255,224,7,255,135,240,6,12,12,16,5,18,252,252,252,124, + 124,124,124,124,120,120,120,120,9,36,72,16,4,251,15,128, + 31,0,31,0,31,0,62,0,62,0,62,0,126,0,124,0, + 124,0,124,0,124,0,252,0,252,0,252,0,252,0,248,0, + 248,0,248,0,248,0,248,0,252,0,252,0,252,0,124,0, + 124,0,124,0,124,0,126,0,62,0,62,0,62,0,31,0, + 31,0,31,0,15,128,8,36,36,16,4,251,240,248,120,124, + 124,124,62,62,62,63,63,31,31,31,31,31,31,31,31,31, + 31,31,31,31,63,63,63,62,62,62,124,124,124,248,248,240, + 16,16,32,26,5,14,4,32,28,56,30,120,30,120,15,240, + 7,224,227,199,255,255,255,255,243,207,7,224,15,240,30,120, + 30,120,28,56,4,32,24,25,75,40,8,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,255,255,255, + 255,255,255,255,255,255,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,8,10,10,12,2,251,31,31,62, + 62,60,124,120,120,240,240,10,5,10,14,2,8,255,192,255, + 192,255,192,255,192,255,192,5,5,5,12,4,0,248,248,248, + 248,248,13,32,64,17,2,254,0,120,0,120,0,120,0,240, + 0,240,0,240,1,224,1,224,1,224,3,192,3,192,3,192, + 3,192,7,128,7,128,7,128,15,0,15,0,15,0,14,0, + 30,0,30,0,30,0,60,0,60,0,60,0,120,0,120,0, + 120,0,120,0,240,0,240,0,20,30,90,23,1,1,3,252, + 0,15,255,0,31,255,128,63,15,128,62,7,192,124,3,192, + 124,3,224,124,3,224,124,3,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,248,1,240,248,1,240,248,1,240,248,1,240,124,3,224, + 124,3,224,124,3,224,124,3,224,62,7,192,63,15,128,31, + 255,128,15,255,0,3,252,0,12,30,60,23,4,0,1,240, + 3,240,15,240,63,240,255,240,255,240,253,240,249,240,225,240, + 129,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,20,30,90,23,1,1, + 3,255,0,7,255,128,31,255,192,31,255,224,63,255,240,63, + 3,240,126,1,240,126,1,240,124,1,240,0,1,240,0,3, + 240,0,3,240,0,7,224,0,15,224,0,15,192,0,31,128, + 0,63,0,0,254,0,1,252,0,3,248,0,7,240,0,15, + 224,0,63,128,0,127,0,0,252,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,19,30,90,23,2,1, + 7,252,0,31,255,0,63,255,128,127,255,128,127,255,192,252, + 15,192,252,7,192,248,7,192,0,7,192,0,7,192,0,15, + 192,0,63,192,3,255,128,3,254,0,3,252,0,3,255,0, + 3,255,128,0,31,192,0,7,224,0,7,224,0,7,224,0, + 3,224,248,7,224,252,7,224,252,7,192,126,15,192,127,255, + 128,63,255,128,31,255,0,15,252,0,21,30,90,23,1,0, + 0,63,128,0,63,128,0,127,128,0,255,128,0,255,128,1, + 255,128,1,255,128,3,239,128,3,207,128,7,207,128,15,143, + 128,15,143,128,31,15,128,31,15,128,62,15,128,62,15,128, + 124,15,128,252,15,128,248,15,128,255,255,248,255,255,248,255, + 255,248,255,255,248,255,255,248,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,19,30,90,23,2,0, + 127,255,192,127,255,192,127,255,192,127,255,192,127,255,192,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,252,0,125,255,0,127,255,128,127,255,192,127,15,224, + 126,7,224,124,3,224,0,3,224,0,3,224,0,3,224,0, + 3,224,0,3,224,248,7,224,252,7,224,252,15,192,127,255, + 128,127,255,128,63,254,0,15,252,0,20,30,90,23,1,1, + 3,254,0,7,255,0,15,255,128,31,255,192,63,255,192,63, + 7,224,126,3,224,126,3,224,124,0,0,124,0,0,252,0, + 0,248,0,0,249,255,0,251,255,128,255,255,192,255,15,224, + 254,7,224,254,3,240,252,3,240,252,3,240,252,1,240,252, + 1,240,124,3,240,124,3,240,126,3,224,63,7,224,63,255, + 192,31,255,128,15,255,0,3,254,0,19,30,90,23,2,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,31, + 128,0,31,128,0,63,0,0,63,0,0,63,0,0,126,0, + 0,126,0,0,252,0,0,252,0,1,252,0,1,248,0,1, + 248,0,3,240,0,3,240,0,7,240,0,7,224,0,15,224, + 0,15,192,0,15,192,0,31,192,0,20,30,90,23,1,1, + 7,254,0,31,255,128,63,255,192,127,255,224,127,255,224,126, + 7,224,124,3,224,124,3,224,124,3,224,124,3,224,126,7, + 224,127,15,192,63,255,128,15,255,0,7,252,0,31,255,0, + 63,255,192,127,15,224,124,7,224,252,3,240,252,3,240,248, + 1,240,248,3,240,252,3,240,252,3,240,254,7,240,127,255, + 224,63,255,192,31,255,128,15,255,0,20,30,90,23,1,1, + 3,252,0,15,255,0,31,255,128,63,255,192,127,255,192,126, + 7,224,252,7,224,252,3,224,252,3,240,248,3,240,248,3, + 240,252,3,240,252,7,240,124,7,240,127,15,240,63,255,240, + 63,253,240,31,249,240,7,225,240,0,3,240,0,3,224,0, + 3,224,0,3,224,124,7,224,124,7,192,126,15,192,63,255, + 128,31,255,0,15,254,0,7,252,0,5,20,20,12,5,0, + 248,248,248,248,248,0,0,0,0,0,0,0,0,0,0,248, + 248,248,248,248,9,25,50,13,2,251,31,0,31,0,31,0, + 31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,31,128,31,0,63,0,62,0, + 62,0,124,0,124,0,120,0,248,0,240,0,24,21,63,40, + 8,2,0,0,1,0,0,15,0,0,63,0,1,252,0,7, + 224,0,63,0,0,252,0,7,224,0,63,0,0,252,0,0, + 224,0,0,248,0,0,126,0,0,15,192,0,3,240,0,0, + 126,0,0,31,192,0,3,240,0,0,126,0,0,31,0,0, + 3,24,10,30,40,8,7,255,255,255,255,255,255,255,255,255, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,255,255,255,255,24,21,63,40,8,2,128,0,0,240,0, + 0,252,0,0,63,128,0,7,224,0,0,252,0,0,63,0, + 0,7,224,0,0,252,0,0,63,0,0,7,0,0,31,0, + 0,126,0,3,240,0,15,192,0,126,0,3,248,0,15,192, + 0,126,0,0,248,0,0,192,0,0,18,30,90,22,1,1, + 7,252,0,31,254,0,63,255,128,127,255,128,252,15,192,120, + 7,192,56,7,192,0,7,192,0,7,192,0,15,192,0,15, + 128,0,31,128,0,63,0,0,126,0,0,248,0,1,240,0, + 3,224,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,0,0,0,0,0,0,0,0,0,3,224,0,3,224, + 0,3,224,0,3,224,0,3,224,0,38,39,195,42,2,248, + 0,3,255,224,0,0,31,255,248,0,0,127,255,254,0,0, + 255,255,255,0,3,255,255,255,128,7,254,0,127,192,7,248, + 0,31,224,15,224,0,15,240,31,192,0,7,240,63,128,0, + 3,248,63,1,241,241,248,63,7,253,241,252,126,15,255,240, + 252,126,31,255,240,252,124,31,135,240,252,252,63,3,240,124, + 252,63,3,240,124,252,62,1,240,124,252,62,1,240,124,248, + 62,1,240,124,248,62,1,240,124,248,62,1,240,124,252,62, + 1,240,124,252,63,3,240,252,124,63,3,248,248,124,31,135, + 249,248,126,31,255,255,240,63,15,254,255,224,63,7,252,127, + 192,31,129,248,31,0,31,192,0,0,0,15,224,0,0,0, + 7,248,0,0,0,3,254,0,56,0,1,255,255,248,0,0, + 255,255,248,0,0,63,255,248,0,0,15,255,248,0,0,1, + 255,224,0,27,30,120,28,1,0,0,63,0,0,0,63,128, + 0,0,127,128,0,0,127,128,0,0,127,192,0,0,255,192, + 0,0,255,224,0,0,255,224,0,1,251,224,0,1,243,240, + 0,3,243,240,0,3,241,240,0,3,225,248,0,7,225,248, + 0,7,224,248,0,7,192,252,0,15,192,252,0,15,192,126, + 0,15,128,126,0,31,255,254,0,31,255,255,0,63,255,255, + 0,63,255,255,0,63,255,255,128,126,0,31,128,126,0,31, + 128,126,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 224,22,30,90,27,3,0,255,254,0,255,255,128,255,255,224, + 255,255,224,255,255,240,248,7,240,248,3,240,248,1,240,248, + 1,240,248,1,240,248,3,240,248,7,224,255,255,192,255,255, + 128,255,254,0,255,255,192,255,255,240,248,3,248,248,1,248, + 248,0,252,248,0,252,248,0,252,248,0,252,248,1,252,248, + 3,252,255,255,248,255,255,240,255,255,224,255,255,192,255,255, + 0,24,30,90,29,2,1,1,255,192,3,255,240,15,255,248, + 15,255,252,31,255,254,63,128,254,62,0,127,126,0,63,124, + 0,63,124,0,63,252,0,0,252,0,0,252,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,252,0,0, + 252,0,0,124,0,63,124,0,63,126,0,127,62,0,127,63, + 128,254,31,255,254,31,255,252,15,255,248,7,255,224,1,255, + 192,24,30,90,29,3,0,255,248,0,255,255,0,255,255,192, + 255,255,224,255,255,240,248,15,248,248,1,252,248,0,252,248, + 0,126,248,0,126,248,0,62,248,0,63,248,0,63,248,0, + 63,248,0,31,248,0,31,248,0,63,248,0,63,248,0,63, + 248,0,63,248,0,126,248,0,126,248,0,252,248,1,252,248, + 15,248,255,255,240,255,255,224,255,255,192,255,255,0,255,248, + 0,20,30,90,25,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,240,255,255,240,255,255,240,255,255,240,255,255, + 240,19,30,90,24,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,26,30,120,30,2,1,0,127,240,0,1,255,252,0,3, + 255,254,0,15,255,255,0,15,255,255,128,31,192,63,128,63, + 128,15,192,63,0,15,192,126,0,15,192,126,0,7,192,124, + 0,0,0,252,0,0,0,252,0,0,0,252,0,0,0,248, + 1,255,192,248,1,255,192,248,1,255,192,252,1,255,192,252, + 1,255,192,252,0,7,192,124,0,7,192,126,0,7,192,127, + 0,7,192,63,128,7,192,63,224,7,192,31,255,255,192,15, + 255,255,192,7,255,255,192,1,255,255,192,0,127,254,0,23, + 30,90,29,3,0,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,255,255,254,255,255,254,255, + 255,254,255,255,254,255,255,254,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,5, + 30,30,11,3,0,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,20,30,90,25,2,0,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,248,1,240,248,3,240,252,3,240,252,3, + 240,254,7,224,127,255,224,127,255,192,63,255,128,31,255,0, + 15,254,0,23,30,90,27,3,0,248,1,248,248,3,248,248, + 7,240,248,15,224,248,15,192,248,31,192,248,63,128,248,127, + 0,248,126,0,248,254,0,249,252,0,251,248,0,251,240,0, + 255,240,0,255,240,0,251,248,0,249,252,0,249,254,0,248, + 254,0,248,127,0,248,127,128,248,63,128,248,31,192,248,31, + 224,248,15,224,248,7,240,248,7,248,248,3,248,248,1,252, + 248,0,254,19,30,90,23,3,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,224,255,255,224,255,255,224,255,255,224, + 255,255,224,31,30,120,37,3,0,255,192,3,254,255,192,3, + 254,255,192,7,254,255,192,7,254,255,224,7,254,251,224,15, + 254,251,224,15,254,251,240,15,190,251,240,15,190,249,240,31, + 190,249,240,31,62,249,248,31,62,248,248,63,62,248,248,63, + 62,248,252,62,62,248,124,126,62,248,124,126,62,248,126,124, + 62,248,126,124,62,248,62,252,62,248,62,248,62,248,63,248, + 62,248,31,248,62,248,31,248,62,248,31,240,62,248,31,240, + 62,248,15,240,62,248,15,224,62,248,15,224,62,248,7,224, + 62,25,30,120,31,3,0,255,128,15,128,255,128,15,128,255, + 128,15,128,255,192,15,128,255,192,15,128,255,224,15,128,251, + 224,15,128,251,240,15,128,249,240,15,128,249,248,15,128,248, + 248,15,128,248,252,15,128,248,252,15,128,248,126,15,128,248, + 126,15,128,248,63,15,128,248,63,15,128,248,31,143,128,248, + 31,143,128,248,15,143,128,248,15,207,128,248,7,207,128,248, + 7,239,128,248,3,239,128,248,3,255,128,248,1,255,128,248, + 1,255,128,248,0,255,128,248,0,255,128,248,0,127,128,27, + 30,120,31,2,1,0,255,224,0,3,255,248,0,7,255,252, + 0,15,255,254,0,31,255,255,0,63,192,127,128,63,0,31, + 128,127,0,31,192,126,0,15,192,126,0,15,192,252,0,15, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,15,224,126,0,15,192,126,0,15,192,127,0,31, + 192,63,0,31,128,63,192,127,128,31,255,255,0,15,255,254, + 0,7,255,252,0,3,255,248,0,0,255,224,0,21,30,90, + 26,3,0,255,252,0,255,255,128,255,255,192,255,255,224,255, + 255,240,248,7,240,248,3,248,248,1,248,248,1,248,248,0, + 248,248,1,248,248,1,248,248,1,248,248,7,240,255,255,240, + 255,255,224,255,255,192,255,255,128,255,252,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,30,30,120, + 33,2,1,0,255,224,0,3,255,248,0,7,255,252,0,15, + 255,254,0,31,255,255,0,63,192,127,128,63,0,31,128,127, + 0,31,192,126,0,15,192,126,0,15,192,252,0,15,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,192,126,0,15,192,126,0,15,192,127,0,31,128,63, + 0,31,128,63,192,127,0,31,255,254,252,15,255,255,252,7, + 255,255,252,3,255,255,252,0,255,255,252,23,30,90,27,3, + 0,255,255,0,255,255,224,255,255,240,255,255,248,255,255,248, + 248,3,252,248,1,252,248,0,252,248,0,124,248,0,124,248, + 0,252,248,1,248,248,7,240,255,255,224,255,255,192,255,255, + 128,255,255,224,255,255,240,248,3,248,248,1,248,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,252,248,0,252,248, + 0,252,248,0,252,248,0,124,248,0,126,23,30,90,27,2, + 1,1,255,128,7,255,224,15,255,240,31,255,240,63,255,248, + 63,1,248,126,0,252,126,0,252,124,0,124,126,0,0,126, + 0,0,63,128,0,63,240,0,31,254,0,15,255,192,3,255, + 240,0,127,248,0,7,252,0,1,252,0,0,126,248,0,126, + 248,0,62,252,0,126,252,0,126,126,0,252,127,255,252,63, + 255,248,31,255,240,15,255,224,3,255,128,23,30,90,25,1, + 0,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,24,30,90,30,3, + 0,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,252,0,31,252,0,31, + 252,0,63,124,0,63,126,0,126,127,0,254,63,255,252,31, + 255,252,31,255,248,7,255,224,1,255,192,28,30,120,30,1, + 0,252,0,3,240,252,0,7,240,254,0,7,224,126,0,7, + 224,126,0,15,192,127,0,15,192,63,0,31,192,63,0,31, + 128,63,128,31,128,31,128,63,128,31,128,63,0,31,192,63, + 0,15,192,127,0,15,192,126,0,7,224,126,0,7,224,252, + 0,7,224,252,0,3,240,252,0,3,241,248,0,3,249,248, + 0,1,249,248,0,1,251,240,0,1,255,240,0,0,255,240, + 0,0,255,224,0,0,255,224,0,0,127,192,0,0,127,192, + 0,0,127,192,0,0,63,128,0,38,30,150,40,1,0,252, + 0,252,0,252,252,1,254,0,252,252,1,254,0,252,252,1, + 254,1,252,254,1,254,1,252,126,3,255,1,248,126,3,255, + 1,248,126,3,255,1,248,126,3,255,1,248,63,7,255,131, + 240,63,7,207,131,240,63,7,207,131,240,63,7,207,131,240, + 31,15,207,195,224,31,143,135,199,224,31,143,135,199,224,31, + 143,135,199,224,15,159,135,231,192,15,159,3,231,192,15,223, + 3,239,192,15,223,3,239,192,7,255,3,255,128,7,254,1, + 255,128,7,254,1,255,128,7,254,1,255,128,3,254,1,255, + 0,3,252,0,255,0,3,252,0,255,0,3,252,0,255,0, + 3,252,0,255,0,26,30,120,28,1,0,126,0,31,128,127, + 0,63,128,63,128,63,0,63,128,126,0,31,192,126,0,15, + 192,252,0,15,225,248,0,7,241,248,0,3,243,240,0,3, + 251,224,0,1,255,224,0,0,255,192,0,0,255,128,0,0, + 127,128,0,0,127,0,0,0,127,128,0,0,255,128,0,1, + 255,192,0,1,255,224,0,3,247,224,0,3,227,240,0,7, + 227,248,0,15,193,248,0,15,129,252,0,31,128,254,0,63, + 0,126,0,63,0,127,0,126,0,63,128,252,0,31,128,252, + 0,31,192,24,30,90,25,1,0,252,0,127,254,0,126,126, + 0,254,127,0,252,63,1,252,63,1,248,31,131,248,31,131, + 240,15,195,240,15,199,224,7,231,224,7,239,192,3,255,192, + 3,255,128,1,255,128,1,255,0,0,255,0,0,254,0,0, + 126,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,22,30,90,26,2,0,127,255,252,127,255,252,127, + 255,252,127,255,252,127,255,252,0,1,252,0,3,248,0,7, + 240,0,15,240,0,31,224,0,31,192,0,63,128,0,127,128, + 0,255,0,0,254,0,1,252,0,3,252,0,7,248,0,7, + 240,0,15,224,0,31,224,0,63,192,0,63,128,0,127,0, + 0,255,0,0,255,255,252,255,255,252,255,255,252,255,255,252, + 255,255,252,9,38,76,15,3,248,255,128,255,128,255,128,255, + 128,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,255,128,255, + 128,255,128,255,128,13,32,64,17,2,254,240,0,240,0,120, + 0,120,0,120,0,120,0,60,0,60,0,60,0,30,0,30, + 0,30,0,14,0,15,0,15,0,15,0,7,128,7,128,7, + 128,3,192,3,192,3,192,3,192,1,224,1,224,1,224,0, + 240,0,240,0,240,0,112,0,120,0,120,9,38,76,15,3, + 248,255,128,255,128,255,128,255,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,255,128,255,128,255,128,20,25,75, + 40,10,0,0,96,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,152,0,3,156,0,3,12,0,3,12,0,7,14, + 0,6,6,0,6,6,0,14,7,0,12,3,0,28,3,128, + 28,1,128,24,1,128,56,1,192,48,0,192,48,0,192,112, + 0,224,96,0,96,224,0,112,224,0,112,192,0,48,20,4, + 12,20,0,250,255,255,240,255,255,240,255,255,240,255,255,240, + 9,8,16,10,255,25,248,0,124,0,60,0,62,0,30,0, + 15,0,7,0,3,128,19,20,60,22,2,1,15,254,0,31, + 255,0,63,255,128,126,15,128,124,15,192,0,7,192,0,127, + 192,15,255,192,63,255,192,127,255,192,127,7,192,252,7,192, + 252,7,192,248,15,192,248,15,192,252,15,192,254,31,192,127, + 255,192,63,247,192,31,227,224,20,30,90,25,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,254,0,251, + 255,128,255,255,192,255,15,192,254,7,224,252,3,224,252,3, + 240,252,3,240,252,3,240,248,1,240,248,1,240,248,3,240, + 252,3,240,252,3,240,252,3,224,254,7,224,255,15,192,251, + 255,192,251,255,128,248,254,0,17,20,60,21,2,1,15,252, + 0,31,254,0,63,255,0,126,63,0,124,31,128,124,31,128, + 252,15,128,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,252,15,128,252,31,128,124,31,128,126,63, + 0,63,255,0,31,254,0,15,252,0,20,30,90,25,2,0, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,7,249, + 240,31,253,240,63,255,240,63,15,240,126,7,240,124,3,240, + 252,3,240,252,3,240,252,3,240,248,1,240,248,1,240,248, + 3,240,252,3,240,252,3,240,124,3,240,126,7,240,63,15, + 240,63,253,240,31,249,240,7,241,240,19,20,60,22,2,1, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 7,192,252,7,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,7,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,14,30,60,15, + 1,1,3,252,7,252,15,252,15,192,15,128,15,128,15,128, + 15,128,15,128,15,128,255,248,255,248,255,248,255,248,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,20,28, + 84,25,2,249,7,249,240,31,253,240,63,255,240,63,15,240, + 126,7,240,124,3,240,252,3,240,252,3,240,252,3,240,248, + 1,240,248,1,240,248,3,240,252,3,240,252,3,240,124,7, + 240,126,7,240,63,255,240,63,253,240,15,249,240,3,225,240, + 0,3,240,0,3,240,124,3,240,126,7,224,63,255,224,63, + 255,192,31,255,128,3,252,0,18,30,90,24,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,255,0,251, + 255,128,255,255,192,255,31,192,254,15,192,252,7,192,252,7, + 192,252,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,6,30,30,10,2,0,252,252, + 252,252,252,0,0,0,0,0,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,124,124,124,124,124,124,7,39,39,13, + 4,247,126,126,126,126,126,0,0,0,0,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,126,254,254,254,252,248,18,30,90,22,3,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,31,192, + 248,31,128,248,63,0,248,126,0,248,252,0,249,252,0,249, + 248,0,251,240,0,255,224,0,255,240,0,251,240,0,249,248, + 0,249,252,0,248,252,0,248,126,0,248,127,0,248,63,0, + 248,31,128,248,31,192,248,15,192,5,30,30,11,3,0,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,31,20,80, + 37,3,1,248,255,15,240,249,255,159,252,251,255,191,252,255, + 31,248,254,254,15,240,126,252,7,224,62,252,7,224,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,18,20,60,24,3,1,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,20,60,24,2,1,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,28,84,25,3,249,248,254,0, + 249,255,128,251,255,192,255,15,192,254,7,224,252,3,224,252, + 3,240,252,3,240,252,3,240,248,1,240,248,1,240,252,3, + 240,252,3,240,252,3,240,252,3,224,254,7,224,255,15,192, + 255,255,192,251,255,128,249,254,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,20,28,84,25,2,249,7,241,240,31,253,240,63,253,240, + 63,15,240,126,7,240,124,3,240,252,3,240,252,3,240,248, + 3,240,248,1,240,248,1,240,252,3,240,252,3,240,252,3, + 240,124,3,240,126,7,240,63,15,240,63,255,240,31,253,240, + 7,249,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,12,20,40,16,3, + 1,248,240,249,240,251,240,255,240,255,240,255,0,254,0,252, + 0,252,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,17,20,60,21,2,1,15, + 252,0,63,254,0,127,255,0,126,31,128,124,31,128,124,15, + 128,126,0,0,127,128,0,63,248,0,63,254,0,7,255,0, + 0,255,128,0,31,128,0,15,128,248,15,128,252,15,128,126, + 31,128,127,255,0,63,254,0,31,252,0,15,26,52,17,1, + 0,0,128,1,128,7,128,15,128,15,128,15,128,255,252,255, + 252,255,252,255,252,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,192,15,224,7, + 254,7,254,1,254,18,20,60,24,3,0,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,252,7,192,252,15,192,252,15,192,254,31,192,127,255, + 192,63,247,192,31,231,192,20,20,60,22,1,0,248,3,240, + 252,3,240,252,3,224,124,7,224,126,7,224,126,7,192,62, + 15,192,63,15,192,31,15,128,31,31,128,31,159,0,15,159, + 0,15,191,0,15,254,0,7,254,0,7,254,0,3,252,0, + 3,252,0,3,248,0,1,248,0,33,20,100,34,1,0,248, + 7,224,31,128,248,15,240,31,0,252,15,240,31,0,252,15, + 240,63,0,124,15,248,62,0,126,31,248,62,0,126,31,248, + 126,0,62,31,124,126,0,62,62,124,124,0,63,62,124,124, + 0,31,62,126,252,0,31,124,62,248,0,31,252,62,248,0, + 15,252,63,248,0,15,252,31,240,0,15,248,31,240,0,15, + 248,31,240,0,7,248,15,240,0,7,240,15,224,0,7,240, + 15,224,0,20,20,60,22,1,0,254,3,224,126,7,224,63, + 15,192,31,143,128,31,159,128,15,223,0,7,254,0,7,254, + 0,3,252,0,3,252,0,3,252,0,7,254,0,15,255,0, + 15,191,0,31,159,128,63,31,192,62,15,192,126,7,224,252, + 7,224,252,3,240,20,28,84,22,1,248,252,3,240,252,3, + 240,252,3,224,126,7,224,126,7,224,63,7,192,63,15,192, + 63,15,192,31,143,128,31,159,128,15,159,128,15,223,0,15, + 255,0,7,255,0,7,254,0,3,254,0,3,252,0,3,252, + 0,1,252,0,1,248,0,1,248,0,1,248,0,1,240,0, + 3,240,0,3,240,0,7,224,0,7,224,0,7,224,0,17, + 20,60,21,2,0,255,255,0,255,255,0,255,255,0,255,255, + 0,0,63,0,0,126,0,0,252,0,1,248,0,3,240,0, + 7,240,0,15,224,0,15,192,0,31,128,0,63,0,0,126, + 0,0,252,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,15,41,82,20,3,246,0,2,0,254,1,254,3,254,7, + 240,7,224,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,15,192,15,128,63,128,254,0,252, + 0,254,0,255,0,63,128,15,128,15,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,224,7, + 224,3,254,3,254,1,254,0,62,3,43,43,13,5,245,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,15,40,80,20,3,247, + 252,0,255,0,255,0,31,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,192,15,192,7,224, + 7,224,3,248,1,254,0,126,0,254,3,252,7,224,7,192, + 7,192,15,192,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,31,128,255,128,255,0,254,0,248,0, + 21,5,15,21,0,8,15,192,120,63,255,248,127,255,240,127, + 255,224,240,31,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--49-490-72-72-P-242-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 35 + Calculated Max Values w=29 h=39 x=10 y=17 dx=49 dy= 0 ascent=36 len=140 + Font Bounding box w=72 h=65 x=-4 y=-13 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =35 descent= 0 + X Font ascent =35 descent= 0 + Max Font ascent =36 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub35n[1667] U8G_SECTION(".progmem.u8g_font_fub35n") = { + 0,72,65,252,243,35,0,0,0,0,42,57,0,36,250,35, + 0,20,18,54,32,6,17,7,14,0,31,15,128,31,159,128, + 15,159,0,7,158,0,3,252,0,129,248,16,254,247,240,255, + 255,240,255,255,240,249,249,240,1,248,0,3,252,0,7,158, + 0,15,159,0,31,143,128,31,15,128,7,14,0,29,29,116, + 49,10,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,255,255,255,248,255,255,255,248,255, + 255,255,248,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,11,12,24,15,2,250,15,224,15, + 192,31,192,31,128,31,128,63,0,63,0,62,0,126,0,124, + 0,124,0,248,0,13,6,12,17,2,9,255,248,255,248,255, + 248,255,248,255,248,255,248,7,6,6,15,5,0,254,254,254, + 254,254,254,17,39,117,21,2,253,0,15,128,0,15,0,0, + 31,0,0,31,0,0,30,0,0,62,0,0,62,0,0,62, + 0,0,124,0,0,124,0,0,124,0,0,120,0,0,248,0, + 0,248,0,0,240,0,1,240,0,1,240,0,1,240,0,3, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,128,0,15,128,0,31,0,0, + 31,0,0,31,0,0,62,0,0,62,0,0,62,0,0,60, + 0,0,124,0,0,124,0,0,124,0,0,248,0,0,25,35, + 140,28,2,1,1,255,128,0,7,255,224,0,15,255,240,0, + 31,255,248,0,31,255,252,0,63,129,252,0,63,0,254,0, + 127,0,126,0,126,0,126,0,126,0,63,0,126,0,63,0, + 254,0,63,0,254,0,63,0,254,0,63,0,254,0,63,128, + 254,0,63,128,254,0,63,128,254,0,63,128,254,0,63,128, + 254,0,63,128,254,0,63,128,254,0,63,0,254,0,63,0, + 254,0,63,0,126,0,63,0,126,0,63,0,126,0,127,0, + 127,0,126,0,63,0,254,0,63,129,252,0,31,255,252,0, + 31,255,248,0,15,255,240,0,7,255,224,0,1,255,128,0, + 15,35,70,28,5,0,0,254,1,254,7,254,15,254,63,254, + 255,254,255,254,254,254,252,254,240,254,192,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,25,35,140,28, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,255,255,0,63,192,255,0,63,128,63,128,63,0, + 63,128,127,0,63,128,0,0,63,128,0,0,63,128,0,0, + 63,128,0,0,127,0,0,0,127,0,0,0,255,0,0,1, + 254,0,0,3,252,0,0,7,252,0,0,15,248,0,0,31, + 240,0,0,63,224,0,0,127,192,0,1,255,0,0,3,254, + 0,0,7,252,0,0,15,240,0,0,63,224,0,0,127,128, + 0,0,255,0,0,0,255,255,255,128,255,255,255,128,255,255, + 255,128,255,255,255,128,255,255,255,128,255,255,255,128,24,35, + 105,28,2,1,3,255,128,15,255,224,31,255,240,63,255,248, + 127,255,252,127,3,252,254,1,252,254,0,252,254,0,254,0, + 0,254,0,0,254,0,1,252,0,1,252,0,15,248,0,255, + 240,0,255,192,0,255,128,0,255,224,0,255,248,0,3,252, + 0,0,254,0,0,254,0,0,126,0,0,127,0,0,127,254, + 0,127,254,0,127,254,0,254,255,0,254,127,1,252,127,255, + 252,63,255,248,31,255,240,15,255,224,3,255,128,26,35,140, + 28,1,0,0,7,252,0,0,15,252,0,0,31,252,0,0, + 31,252,0,0,63,252,0,0,63,252,0,0,127,252,0,0, + 253,252,0,0,253,252,0,1,249,252,0,1,249,252,0,3, + 241,252,0,7,241,252,0,7,225,252,0,15,193,252,0,15, + 193,252,0,31,129,252,0,63,129,252,0,63,1,252,0,126, + 1,252,0,254,1,252,0,252,1,252,0,255,255,255,192,255, + 255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255, + 255,255,192,0,1,252,0,0,1,252,0,0,1,252,0,0, + 1,252,0,0,1,252,0,0,1,252,0,0,1,252,0,24, + 35,105,28,2,0,127,255,252,127,255,252,127,255,252,127,255, + 252,127,255,252,127,255,252,127,0,0,127,0,0,127,0,0, + 127,0,0,127,0,0,127,0,0,127,31,192,127,127,240,127, + 255,248,127,255,252,127,255,252,127,193,254,127,0,254,127,0, + 127,126,0,127,0,0,127,0,0,127,0,0,127,0,0,127, + 0,0,127,254,0,127,254,0,254,254,0,254,255,1,252,127, + 255,252,127,255,248,63,255,240,15,255,192,7,255,128,25,35, + 140,28,2,1,0,255,192,0,3,255,240,0,7,255,248,0, + 15,255,252,0,31,255,254,0,31,224,254,0,63,192,127,0, + 63,128,127,0,127,0,0,0,127,0,0,0,127,0,0,0, + 126,0,0,0,254,31,192,0,254,127,240,0,254,255,248,0, + 254,255,252,0,255,255,254,0,255,225,254,0,255,192,255,0, + 255,128,127,0,255,0,63,0,255,0,63,128,255,0,63,128, + 255,0,63,128,255,0,63,128,127,0,63,0,127,0,63,0, + 127,128,127,0,127,128,127,0,63,192,254,0,31,255,252,0, + 31,255,252,0,15,255,248,0,7,255,224,0,1,255,128,0, + 24,35,105,28,2,0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,127,0,0,127,0,0, + 254,0,0,254,0,1,254,0,1,252,0,3,252,0,3,248, + 0,7,248,0,7,240,0,15,240,0,15,240,0,31,224,0, + 31,224,0,63,192,0,63,192,0,63,128,0,127,128,0,127, + 0,0,255,0,0,255,0,1,254,0,1,254,0,3,252,0, + 3,252,0,7,248,0,7,248,0,15,248,0,15,240,0,25, + 35,140,28,2,1,3,255,192,0,15,255,240,0,31,255,252, + 0,63,255,254,0,63,255,254,0,127,193,255,0,127,128,255, + 0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 0,127,0,127,0,63,128,254,0,63,193,252,0,15,255,248, + 0,7,255,224,0,1,255,192,0,15,255,240,0,31,255,248, + 0,63,193,254,0,127,128,254,0,127,0,127,0,254,0,63, + 0,254,0,63,0,254,0,63,128,254,0,63,128,254,0,63, + 128,255,0,127,128,255,0,127,0,127,128,255,0,127,255,255, + 0,63,255,254,0,63,255,252,0,15,255,248,0,3,255,224, + 0,25,35,140,28,2,1,1,255,192,0,7,255,224,0,15, + 255,248,0,31,255,252,0,63,255,252,0,127,129,254,0,127, + 0,254,0,126,0,255,0,254,0,127,0,254,0,127,0,254, + 0,127,128,254,0,127,128,254,0,127,128,254,0,127,128,254, + 0,255,128,127,0,255,128,127,131,255,128,63,255,255,128,63, + 255,191,128,31,255,191,128,15,255,63,128,1,248,63,128,0, + 0,63,0,0,0,127,0,0,0,127,0,0,0,127,0,127, + 0,254,0,127,0,254,0,127,1,254,0,63,131,252,0,31, + 255,252,0,31,255,248,0,15,255,240,0,7,255,224,0,1, + 255,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--58-580-72-72-P-286-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 42 + Calculated Max Values w=35 h=46 x=12 y=20 dx=59 dy= 0 ascent=43 len=176 + Font Bounding box w=87 h=77 x=-5 y=-15 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =42 descent= 0 + X Font ascent =42 descent= 0 + Max Font ascent =43 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub42n[2235] U8G_SECTION(".progmem.u8g_font_fub42n") = { + 0,87,77,251,241,42,0,0,0,0,42,57,0,43,248,42, + 0,23,23,69,37,7,20,0,130,0,3,131,128,15,131,224, + 31,199,224,15,199,224,7,199,192,3,239,128,1,239,0,0, + 254,0,248,254,62,255,255,254,255,255,254,255,255,254,254,124, + 254,128,254,2,1,239,0,3,239,128,7,239,192,7,199,192, + 15,199,224,31,131,240,7,131,192,1,131,0,35,35,175,59, + 12,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,255,255,255,255,224,255,255,255,255,224,255,255,255,255, + 224,255,255,255,255,224,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,12,15,30,18,3,248,15,240,15,240,15,224,31,224,31, + 192,31,192,63,128,63,128,63,0,127,0,126,0,126,0,124, + 0,252,0,252,0,15,8,16,19,2,11,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,8,8,8,18,6, + 0,255,255,255,255,255,255,255,255,19,46,138,25,3,253,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,0,0,63,0, + 0,63,0,0,62,0,0,126,0,0,126,0,0,124,0,0, + 252,0,0,252,0,0,252,0,0,248,0,1,248,0,1,248, + 0,1,240,0,3,240,0,3,240,0,3,240,0,7,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,15, + 128,0,31,128,0,31,128,0,31,128,0,63,0,0,63,0, + 0,63,0,0,62,0,0,126,0,0,126,0,0,124,0,0, + 252,0,0,252,0,0,252,0,0,29,44,176,33,2,255,0, + 31,192,0,0,255,248,0,3,255,252,0,7,255,255,0,15, + 255,255,128,15,255,255,128,31,240,255,192,63,192,63,192,63, + 192,63,224,63,128,31,224,127,128,31,240,127,0,31,240,127, + 0,15,240,127,0,15,240,255,0,15,240,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,127,0,15,240,127,0,15,240,127,0,15,240,127, + 0,31,240,127,128,31,240,63,128,31,224,63,192,63,224,63, + 192,63,192,31,240,255,192,15,255,255,128,15,255,255,0,7, + 255,255,0,3,255,254,0,0,255,248,0,0,31,192,0,18, + 42,126,33,6,0,0,63,192,0,127,192,0,255,192,3,255, + 192,15,255,192,63,255,192,255,255,192,255,255,192,255,255,192, + 255,63,192,254,63,192,248,63,192,224,63,192,0,63,192,0, + 63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63, + 192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192, + 0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0, + 63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63, + 192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192, + 0,63,192,29,43,172,33,2,0,0,15,240,0,0,127,254, + 0,1,255,255,0,3,255,255,128,7,255,255,192,15,255,255, + 224,31,248,63,240,31,240,31,240,31,224,15,240,63,192,7, + 248,63,192,7,248,63,192,7,248,0,0,7,248,0,0,7, + 248,0,0,15,248,0,0,15,240,0,0,31,240,0,0,31, + 240,0,0,63,224,0,0,127,224,0,0,255,192,0,1,255, + 128,0,3,255,128,0,7,255,0,0,15,254,0,0,31,252, + 0,0,63,248,0,0,127,240,0,0,255,224,0,1,255,128, + 0,3,255,0,0,15,254,0,0,31,252,0,0,63,240,0, + 0,127,224,0,0,255,192,0,0,255,255,255,248,255,255,255, + 248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255, + 248,255,255,255,248,28,44,176,33,3,255,0,127,192,0,3, + 255,248,0,7,255,252,0,31,255,255,0,63,255,255,0,63, + 255,255,128,127,224,255,192,127,192,127,192,255,128,63,192,255, + 0,31,224,255,0,31,224,255,0,31,224,0,0,31,224,0, + 0,31,224,0,0,31,224,0,0,63,192,0,0,127,192,0, + 3,255,128,0,127,255,0,0,127,252,0,0,127,240,0,0, + 127,248,0,0,127,254,0,0,127,255,128,0,0,255,192,0, + 0,63,224,0,0,31,224,0,0,31,224,0,0,15,240,0, + 0,15,240,0,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,31,224,255,128,31,224,127,192,63,224,127, + 224,255,192,63,255,255,128,63,255,255,0,31,255,254,0,15, + 255,252,0,3,255,248,0,0,127,192,0,31,42,168,33,1, + 0,0,1,255,192,0,1,255,192,0,3,255,192,0,7,255, + 192,0,7,255,192,0,15,255,192,0,15,255,192,0,31,255, + 192,0,63,255,192,0,63,191,192,0,127,63,192,0,255,63, + 192,0,254,63,192,1,254,63,192,1,252,63,192,3,248,63, + 192,7,248,63,192,7,240,63,192,15,240,63,192,31,224,63, + 192,31,192,63,192,63,192,63,192,63,128,63,192,127,128,63, + 192,255,0,63,192,255,0,63,192,255,255,255,254,255,255,255, + 254,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255, + 254,255,255,255,254,0,0,63,192,0,0,63,192,0,0,63, + 192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63, + 192,0,0,63,192,0,0,63,192,29,43,172,33,2,255,127, + 255,255,224,127,255,255,224,127,255,255,224,127,255,255,224,127, + 255,255,224,127,255,255,224,127,255,255,224,127,128,0,0,127, + 128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127, + 128,0,0,127,128,0,0,127,128,0,0,127,135,248,0,127, + 159,254,0,127,255,255,128,127,255,255,192,127,255,255,192,127, + 255,255,224,127,240,63,240,127,192,31,240,127,128,15,240,127, + 128,15,248,127,0,7,248,0,0,7,248,0,0,7,248,0, + 0,7,248,0,0,7,248,0,0,7,248,0,0,7,240,255, + 0,15,240,255,0,15,240,255,0,31,240,255,128,63,224,127, + 224,255,192,127,255,255,192,63,255,255,128,31,255,255,0,15, + 255,252,0,3,255,248,0,0,127,192,0,29,44,176,33,2, + 255,0,15,240,0,0,127,252,0,0,255,255,0,3,255,255, + 128,7,255,255,192,7,255,255,224,15,252,63,224,31,240,15, + 240,31,224,15,240,63,192,7,248,63,192,7,248,63,128,0, + 0,127,128,0,0,127,128,0,0,127,128,0,0,127,0,0, + 0,255,3,248,0,255,31,254,0,255,63,255,0,255,127,255, + 128,255,255,255,192,255,255,255,224,255,248,63,240,255,224,31, + 240,255,192,15,240,255,192,15,248,255,128,7,248,255,128,7, + 248,255,128,7,248,255,128,7,248,255,128,7,248,127,128,7, + 248,127,128,7,248,127,128,7,240,127,192,15,240,63,192,15, + 240,63,224,31,224,31,248,63,224,31,255,255,192,15,255,255, + 128,7,255,255,0,3,255,254,0,0,255,248,0,0,63,192, + 0,28,42,168,33,3,0,255,255,255,240,255,255,255,240,255, + 255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255, + 255,255,240,0,0,15,240,0,0,15,240,0,0,31,240,0, + 0,31,224,0,0,63,224,0,0,63,192,0,0,127,192,0, + 0,127,192,0,0,255,128,0,0,255,128,0,1,255,0,0, + 1,255,0,0,1,254,0,0,3,254,0,0,3,254,0,0, + 7,252,0,0,7,252,0,0,15,248,0,0,15,248,0,0, + 31,248,0,0,31,240,0,0,31,240,0,0,63,224,0,0, + 63,224,0,0,127,192,0,0,127,192,0,0,255,192,0,0, + 255,128,0,1,255,128,0,1,255,0,0,3,255,0,0,3, + 255,0,0,3,254,0,0,7,254,0,0,7,252,0,0,29, + 44,176,33,2,255,0,63,240,0,1,255,254,0,7,255,255, + 128,15,255,255,192,31,255,255,224,63,255,255,240,63,248,127, + 240,127,224,31,240,127,224,31,248,127,192,15,248,127,192,15, + 248,127,192,15,248,127,192,15,248,127,192,15,248,63,224,31, + 240,63,224,31,240,31,248,127,224,15,255,255,192,7,255,255, + 0,1,255,252,0,0,255,248,0,3,255,254,0,15,255,255, + 128,31,255,255,192,63,240,63,224,127,224,31,224,127,192,15, + 240,127,192,15,240,255,128,7,248,255,128,7,248,255,128,7, + 248,255,128,7,248,255,128,7,248,255,128,7,248,255,192,15, + 248,255,192,15,248,127,224,31,240,127,240,63,240,127,255,255, + 224,63,255,255,224,31,255,255,192,15,255,255,128,3,255,254, + 0,0,127,240,0,29,44,176,33,2,255,0,31,192,0,0, + 255,248,0,3,255,254,0,7,255,255,0,15,255,255,128,31, + 255,255,128,63,224,255,192,63,192,63,224,127,128,31,224,127, + 128,31,224,127,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,128,31,248,127,128,31,248,127,192,63,248,127, + 224,255,248,63,255,255,248,31,255,255,248,31,255,247,248,15, + 255,231,248,3,255,199,248,0,254,7,240,0,0,7,240,0, + 0,15,240,0,0,15,240,0,0,15,240,0,0,15,224,127, + 128,31,224,127,128,31,224,63,128,63,192,63,192,127,192,63, + 224,255,128,31,255,255,128,15,255,255,0,7,255,254,0,3, + 255,252,0,1,255,240,0,0,63,192,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--68-680-72-72-P-335-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 49 + Calculated Max Values w=41 h=54 x=14 y=23 dx=69 dy= 0 ascent=50 len=255 + Font Bounding box w=100 h=91 x=-5 y=-18 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =49 descent= 0 + X Font ascent =49 descent= 0 + Max Font ascent =50 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub49n[3074] U8G_SECTION(".progmem.u8g_font_fub49n") = { + 0,100,91,251,238,49,0,0,0,0,42,57,0,50,247,49, + 0,27,27,108,43,8,23,0,64,64,0,1,192,112,0,7, + 224,252,0,15,224,254,0,7,241,252,0,7,241,252,0,3, + 241,248,0,1,251,240,0,0,251,224,0,0,127,192,0,224, + 127,192,224,255,191,191,224,255,255,255,224,255,255,255,224,255, + 255,255,224,255,63,159,224,192,127,192,96,0,123,192,0,0, + 251,224,0,1,251,240,0,3,241,248,0,7,241,252,0,15, + 241,252,0,15,224,254,0,7,224,252,0,1,192,112,0,0, + 64,64,0,41,41,246,69,14,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,255,255,255,255,255, + 128,255,255,255,255,255,128,255,255,255,255,255,128,255,255,255, + 255,255,128,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,15, + 17,34,21,3,247,7,254,7,252,7,252,7,248,15,248,15, + 240,15,240,31,224,31,224,31,192,63,192,63,128,63,128,127, + 0,127,0,126,0,254,0,17,9,27,23,3,13,255,255,128, + 255,255,128,255,255,128,255,255,128,255,255,128,255,255,128,255, + 255,128,255,255,128,255,255,128,9,9,18,21,7,0,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 23,54,162,29,3,252,0,0,254,0,0,254,0,0,252,0, + 1,252,0,1,252,0,1,248,0,3,248,0,3,248,0,3, + 248,0,7,240,0,7,240,0,7,240,0,7,224,0,15,224, + 0,15,224,0,15,192,0,31,192,0,31,192,0,31,192,0, + 63,128,0,63,128,0,63,128,0,63,0,0,127,0,0,127, + 0,0,126,0,0,254,0,0,254,0,0,254,0,1,252,0, + 1,252,0,1,252,0,1,248,0,3,248,0,3,248,0,3, + 240,0,7,240,0,7,240,0,7,240,0,15,224,0,15,224, + 0,15,224,0,15,192,0,31,192,0,31,192,0,31,128,0, + 63,128,0,63,128,0,63,0,0,127,0,0,127,0,0,127, + 0,0,126,0,0,254,0,0,34,51,255,39,2,255,0,7, + 248,0,0,0,63,255,0,0,0,255,255,192,0,1,255,255, + 224,0,3,255,255,240,0,7,255,255,248,0,15,255,255,252, + 0,15,254,31,252,0,31,248,7,254,0,31,240,3,254,0, + 63,240,3,255,0,63,224,1,255,0,63,224,1,255,0,127, + 224,1,255,128,127,192,0,255,128,127,192,0,255,128,127,192, + 0,255,128,255,192,0,255,128,255,192,0,255,192,255,192,0, + 255,192,255,192,0,255,192,255,192,0,255,192,255,192,0,255, + 192,255,192,0,255,192,255,192,0,255,192,255,192,0,255,192, + 255,192,0,255,192,255,192,0,255,192,255,192,0,255,192,255, + 192,0,255,192,255,192,0,255,192,255,192,0,255,192,255,192, + 0,255,192,255,192,0,255,128,127,192,0,255,128,127,192,0, + 255,128,127,192,0,255,128,127,224,1,255,128,63,224,1,255, + 0,63,224,1,255,0,63,240,3,255,0,31,240,3,254,0, + 31,248,7,254,0,15,254,31,252,0,15,255,255,252,0,7, + 255,255,248,0,3,255,255,240,0,1,255,255,224,0,0,255, + 255,192,0,0,63,255,0,0,0,7,248,0,0,20,49,147, + 39,7,0,0,31,240,0,63,240,0,127,240,1,255,240,3, + 255,240,15,255,240,63,255,240,255,255,240,255,255,240,255,255, + 240,255,223,240,255,159,240,254,31,240,248,31,240,224,31,240, + 128,31,240,0,31,240,0,31,240,0,31,240,0,31,240,0, + 31,240,0,31,240,0,31,240,0,31,240,0,31,240,0,31, + 240,0,31,240,0,31,240,0,31,240,0,31,240,0,31,240, + 0,31,240,0,31,240,0,31,240,0,31,240,0,31,240,0, + 31,240,0,31,240,0,31,240,0,31,240,0,31,240,0,31, + 240,0,31,240,0,31,240,0,31,240,0,31,240,0,31,240, + 0,31,240,0,31,240,34,50,250,39,2,0,0,3,254,0, + 0,0,31,255,192,0,0,127,255,240,0,0,255,255,248,0, + 3,255,255,254,0,7,255,255,254,0,7,255,255,255,0,15, + 255,255,255,128,31,255,7,255,128,31,252,1,255,192,31,248, + 0,255,192,63,248,0,255,192,63,240,0,127,192,63,240,0, + 127,192,63,240,0,127,192,0,0,0,127,192,0,0,0,127, + 192,0,0,0,255,192,0,0,0,255,128,0,0,1,255,128, + 0,0,1,255,128,0,0,3,255,0,0,0,7,255,0,0, + 0,15,254,0,0,0,31,254,0,0,0,63,252,0,0,0, + 127,248,0,0,0,255,240,0,0,1,255,224,0,0,3,255, + 192,0,0,7,255,128,0,0,15,255,0,0,0,31,254,0, + 0,0,63,252,0,0,0,255,248,0,0,1,255,224,0,0, + 3,255,192,0,0,7,255,128,0,0,31,254,0,0,0,63, + 252,0,0,0,127,248,0,0,0,255,224,0,0,0,255,255, + 255,255,192,255,255,255,255,192,255,255,255,255,192,255,255,255, + 255,192,255,255,255,255,192,255,255,255,255,192,255,255,255,255, + 192,255,255,255,255,192,32,51,204,39,3,255,0,31,248,0, + 0,255,255,0,3,255,255,128,7,255,255,224,15,255,255,240, + 31,255,255,248,63,255,255,248,127,255,255,252,127,248,31,252, + 127,224,15,254,255,192,7,254,255,192,3,254,255,128,3,254, + 255,128,3,254,0,0,3,254,0,0,3,254,0,0,3,254, + 0,0,7,254,0,0,15,252,0,0,127,252,0,63,255,248, + 0,63,255,224,0,63,255,192,0,63,254,0,0,63,255,0, + 0,63,255,192,0,63,255,240,0,63,255,248,0,0,63,252, + 0,0,7,254,0,0,3,254,0,0,3,255,0,0,1,255, + 0,0,1,255,0,0,1,255,0,0,1,255,255,128,1,255, + 255,128,1,255,255,128,1,255,255,192,3,255,255,192,3,254, + 127,224,7,254,127,224,15,254,127,248,31,252,63,255,255,248, + 63,255,255,240,31,255,255,240,15,255,255,192,3,255,255,128, + 1,255,254,0,0,31,240,0,36,50,250,39,2,0,0,0, + 63,252,0,0,0,127,252,0,0,0,127,252,0,0,0,255, + 252,0,0,0,255,252,0,0,1,255,252,0,0,3,255,252, + 0,0,3,255,252,0,0,7,255,252,0,0,7,255,252,0, + 0,15,247,252,0,0,31,247,252,0,0,31,231,252,0,0, + 63,199,252,0,0,127,199,252,0,0,127,135,252,0,0,255, + 135,252,0,0,255,7,252,0,1,255,7,252,0,3,254,7, + 252,0,3,252,7,252,0,7,252,7,252,0,7,248,7,252, + 0,15,248,7,252,0,31,240,7,252,0,31,240,7,252,0, + 63,224,7,252,0,63,192,7,252,0,127,192,7,252,0,255, + 128,7,252,0,255,128,7,252,0,255,255,255,255,240,255,255, + 255,255,240,255,255,255,255,240,255,255,255,255,240,255,255,255, + 255,240,255,255,255,255,240,255,255,255,255,240,255,255,255,255, + 240,0,0,7,252,0,0,0,7,252,0,0,0,7,252,0, + 0,0,7,252,0,0,0,7,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,252,0,0,0,7,252,0,0,0, + 7,252,0,0,0,7,252,0,33,50,250,39,3,255,127,255, + 255,254,0,127,255,255,254,0,127,255,255,254,0,127,255,255, + 254,0,127,255,255,254,0,127,255,255,254,0,127,255,255,254, + 0,127,255,255,254,0,127,192,0,0,0,127,192,0,0,0, + 127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,127, + 192,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192, + 0,0,0,127,193,255,0,0,127,199,255,192,0,127,223,255, + 240,0,127,255,255,248,0,127,255,255,252,0,127,255,255,254, + 0,127,255,255,254,0,127,252,15,255,0,127,240,3,255,0, + 127,224,3,255,0,127,192,1,255,128,127,192,1,255,128,0, + 0,0,255,128,0,0,0,255,128,0,0,0,255,128,0,0, + 0,255,128,0,0,0,255,128,0,0,0,255,128,0,0,0, + 255,128,0,0,0,255,128,255,128,1,255,128,255,128,1,255, + 0,255,192,3,255,0,255,192,3,254,0,127,224,15,254,0, + 127,248,63,252,0,127,255,255,252,0,63,255,255,248,0,31, + 255,255,240,0,15,255,255,224,0,7,255,255,128,0,1,255, + 254,0,0,0,63,240,0,0,34,51,255,39,2,255,0,3, + 252,0,0,0,31,255,128,0,0,127,255,224,0,0,255,255, + 240,0,1,255,255,248,0,3,255,255,252,0,7,255,255,254, + 0,7,255,255,254,0,15,255,7,255,0,31,252,3,255,0, + 31,248,1,255,128,31,248,0,255,128,63,240,0,255,128,63, + 224,0,0,0,63,224,0,0,0,127,224,0,0,0,127,192, + 0,0,0,127,192,0,0,0,127,192,127,0,0,127,195,255, + 224,0,255,199,255,240,0,255,207,255,248,0,255,223,255,252, + 0,255,191,255,254,0,255,255,255,255,0,255,254,15,255,0, + 255,248,3,255,128,255,248,3,255,128,255,240,1,255,128,255, + 240,1,255,192,255,224,0,255,192,255,224,0,255,192,255,224, + 0,255,192,255,224,0,255,192,255,224,0,255,192,127,224,0, + 255,192,127,224,0,255,192,127,224,0,255,192,127,224,0,255, + 128,63,240,1,255,128,63,240,1,255,128,63,248,3,255,0, + 31,248,3,255,0,31,254,15,254,0,15,255,255,254,0,7, + 255,255,252,0,3,255,255,248,0,1,255,255,240,0,0,255, + 255,192,0,0,63,255,0,0,0,7,248,0,0,33,49,245, + 39,3,0,255,255,255,255,128,255,255,255,255,128,255,255,255, + 255,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,255,255,255,255,128,0,0,0,255,128, + 0,0,1,255,128,0,0,1,255,128,0,0,3,255,0,0, + 0,3,255,0,0,0,7,254,0,0,0,7,254,0,0,0, + 15,254,0,0,0,15,252,0,0,0,31,252,0,0,0,31, + 248,0,0,0,31,248,0,0,0,63,240,0,0,0,63,240, + 0,0,0,127,240,0,0,0,127,224,0,0,0,255,224,0, + 0,0,255,192,0,0,1,255,192,0,0,1,255,192,0,0, + 3,255,128,0,0,3,255,128,0,0,3,255,0,0,0,7, + 255,0,0,0,7,254,0,0,0,15,254,0,0,0,15,254, + 0,0,0,31,252,0,0,0,31,252,0,0,0,63,248,0, + 0,0,63,248,0,0,0,63,248,0,0,0,127,240,0,0, + 0,127,240,0,0,0,255,224,0,0,0,255,224,0,0,1, + 255,192,0,0,1,255,192,0,0,3,255,192,0,0,3,255, + 128,0,0,7,255,128,0,0,34,51,255,39,2,255,0,15, + 252,0,0,0,255,255,192,0,3,255,255,240,0,7,255,255, + 248,0,15,255,255,252,0,31,255,255,254,0,63,255,255,255, + 0,63,255,255,255,0,63,252,15,255,0,127,248,7,255,128, + 127,240,3,255,128,127,224,1,255,128,127,224,1,255,128,127, + 224,1,255,128,127,224,1,255,128,127,224,1,255,128,127,224, + 1,255,128,63,240,3,255,0,63,248,7,255,0,31,252,15, + 254,0,15,255,255,252,0,7,255,255,240,0,1,255,255,192, + 0,0,63,255,0,0,0,255,255,128,0,3,255,255,224,0, + 7,255,255,248,0,31,255,255,252,0,63,252,15,254,0,63, + 248,7,255,0,127,240,3,255,0,127,224,1,255,128,127,224, + 1,255,128,255,192,0,255,192,255,192,0,255,192,255,192,0, + 255,192,255,192,0,255,192,255,192,0,255,192,255,192,0,255, + 192,255,224,1,255,192,255,224,1,255,192,255,240,3,255,192, + 127,240,7,255,128,127,252,15,255,128,63,255,255,255,0,63, + 255,255,255,0,31,255,255,254,0,15,255,255,252,0,3,255, + 255,240,0,0,255,255,192,0,0,15,252,0,0,34,51,255, + 39,2,255,0,7,248,0,0,0,63,255,0,0,0,255,255, + 192,0,3,255,255,224,0,7,255,255,240,0,15,255,255,248, + 0,31,255,255,252,0,31,255,255,254,0,63,248,31,254,0, + 63,240,7,255,0,127,224,7,255,0,127,192,3,255,0,127, + 192,3,255,128,255,192,1,255,128,255,128,1,255,128,255,128, + 1,255,128,255,128,1,255,192,255,128,1,255,192,255,128,1, + 255,192,255,192,1,255,192,255,192,3,255,192,255,192,3,255, + 192,127,224,7,255,192,127,240,7,255,192,127,248,31,255,192, + 63,255,255,255,192,31,255,255,127,192,31,255,254,255,192,15, + 255,252,255,192,3,255,252,255,192,1,255,240,255,192,0,127, + 192,255,128,0,0,0,255,128,0,0,0,255,128,0,0,1, + 255,128,0,0,1,255,128,0,0,1,255,0,0,0,1,255, + 0,127,192,3,255,0,127,192,3,254,0,127,224,7,254,0, + 63,224,15,254,0,63,240,15,252,0,31,248,63,252,0,31, + 255,255,248,0,15,255,255,240,0,7,255,255,224,0,3,255, + 255,192,0,1,255,255,128,0,0,127,254,0,0,0,15,240, + 0,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=16 x= 4 y=10 dx=15 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11[3712] U8G_SECTION(".progmem.u8g_font_fur11") = { + 0,20,20,255,252,11,2,81,4,211,32,255,253,16,252,11, + 253,0,0,0,5,0,0,1,11,11,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,5,5,5,7,1,6,216,216, + 152,152,144,9,11,22,11,1,0,9,0,9,0,19,0,127, + 128,18,0,38,0,255,0,36,0,100,0,72,0,72,0,7, + 14,14,9,1,255,16,16,120,148,148,144,240,124,22,18,146, + 214,124,16,12,11,22,14,1,0,112,128,152,128,137,0,137, + 0,154,0,116,224,5,176,9,16,9,16,17,48,16,224,9, + 11,22,11,1,0,56,0,68,0,68,0,120,0,113,0,217, + 0,137,0,143,0,134,0,199,0,125,128,2,5,5,6,2, + 6,192,128,128,128,128,2,14,14,6,2,253,64,64,192,128, + 128,128,128,128,128,128,128,192,64,64,2,14,14,5,2,253, + 128,128,128,192,64,64,64,64,64,64,192,128,128,128,6,5, + 5,10,2,5,72,48,252,48,120,9,9,18,15,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,2,4,4,4,1,254,192,192,128,128,4,1,1,6,1, + 3,240,1,2,2,4,2,0,128,128,4,12,12,6,1,255, + 16,16,16,32,32,32,64,64,64,64,128,128,6,11,11,8, + 1,0,120,200,140,132,132,132,132,132,140,200,120,4,11,11, + 8,2,0,48,112,208,16,16,16,16,16,16,16,16,6,11, + 11,8,1,0,120,204,196,4,12,24,16,48,96,192,252,7, + 11,11,8,0,0,60,70,194,6,24,4,6,2,194,70,60, + 7,11,11,8,1,0,12,28,20,36,100,68,196,254,4,4, + 4,6,11,11,8,1,0,248,128,128,184,204,132,4,4,140, + 200,112,7,11,11,8,1,0,60,198,134,128,188,198,130,130, + 130,198,60,7,11,11,8,1,0,254,6,6,4,12,8,24, + 24,16,48,48,6,11,11,8,1,0,120,204,132,204,112,200, + 132,132,132,204,120,7,11,11,8,1,0,124,198,130,130,198, + 122,2,6,134,204,120,1,8,8,4,2,0,128,128,0,0, + 0,0,128,128,2,10,10,4,1,254,64,64,0,0,0,0, + 64,192,192,128,9,8,16,15,3,1,0,128,3,0,28,0, + 96,0,128,0,112,0,14,0,1,128,9,4,8,15,3,3, + 255,128,0,0,0,0,255,128,9,8,16,15,3,1,128,0, + 96,0,28,0,3,0,0,128,7,0,56,0,192,0,7,11, + 11,8,0,0,60,198,2,6,4,8,16,16,16,0,16,13, + 14,28,15,1,253,15,128,48,96,96,16,206,144,153,152,144, + 136,144,136,144,136,145,152,153,144,206,96,96,0,48,0,15, + 128,11,11,22,11,0,0,6,0,14,0,10,0,27,0,25, + 0,49,128,49,128,63,192,96,192,64,64,192,96,8,11,11, + 10,1,0,252,134,130,130,134,252,130,129,129,131,254,8,11, + 11,10,1,0,62,99,193,128,128,128,128,128,193,67,62,8, + 11,11,10,1,0,248,134,130,131,129,129,129,131,130,134,248, + 6,11,11,9,1,0,252,128,128,128,128,252,128,128,128,128, + 252,6,11,11,8,1,0,252,128,128,128,128,252,128,128,128, + 128,128,9,11,22,11,1,0,30,0,97,128,192,128,128,0, + 128,0,135,128,128,128,128,128,192,128,96,128,63,128,8,11, + 11,10,1,0,129,129,129,129,129,255,129,129,129,129,129,1, + 11,11,3,1,0,128,128,128,128,128,128,128,128,128,128,128, + 6,11,11,8,1,0,4,4,4,4,4,4,4,4,132,140, + 120,8,11,11,9,1,0,134,140,152,176,224,224,176,152,140, + 134,131,6,11,11,7,1,0,128,128,128,128,128,128,128,128, + 128,128,252,11,11,22,13,1,0,192,96,224,224,224,160,161, + 160,177,160,145,32,147,32,154,32,138,32,142,32,132,32,8, + 11,11,10,1,0,193,225,225,177,177,153,137,141,133,135,131, + 9,11,22,11,1,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,7,11,11,9, + 1,0,252,134,130,130,134,252,128,128,128,128,128,10,11,22, + 12,1,0,62,0,99,0,193,128,129,128,128,128,128,128,128, + 128,129,128,193,128,99,0,63,192,7,11,11,9,1,0,252, + 134,130,130,134,248,132,134,134,130,130,8,11,11,10,1,0, + 60,194,131,128,240,126,7,1,129,195,124,9,11,22,11,1, + 0,255,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,11,11,10,1,0,129,129,129, + 129,129,129,129,129,131,194,60,9,11,22,10,0,0,192,128, + 65,128,97,128,97,0,35,0,51,0,18,0,22,0,30,0, + 12,0,12,0,14,11,22,15,0,0,195,4,67,140,67,140, + 102,136,38,136,36,216,52,80,60,80,24,80,24,112,24,32, + 9,11,22,11,1,0,193,0,99,0,38,0,52,0,28,0, + 24,0,60,0,38,0,98,0,195,0,129,128,9,11,22,10, + 1,0,193,128,65,0,99,0,38,0,52,0,28,0,8,0, + 8,0,8,0,8,0,8,0,8,11,11,10,1,0,127,3, + 6,6,12,24,56,48,96,224,255,3,14,14,6,2,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,224,4,12,12, + 6,1,255,128,128,128,64,64,64,32,32,32,32,16,16,3, + 14,14,6,1,253,224,32,32,32,32,32,32,32,32,32,32, + 32,32,224,7,10,10,15,4,0,16,16,40,40,72,68,68, + 130,130,130,8,1,1,8,0,254,255,2,3,3,3,0,9, + 128,192,64,6,8,8,8,1,0,120,204,4,124,196,132,140, + 116,7,11,11,9,1,0,128,128,128,188,198,134,130,130,134, + 196,184,6,8,8,8,1,0,120,204,132,128,128,132,204,120, + 7,11,11,9,1,0,2,2,2,122,198,134,130,130,134,198, + 58,6,8,8,8,1,0,120,196,132,252,128,132,204,120,5, + 11,11,7,1,0,56,32,32,248,32,32,32,32,32,32,32, + 7,11,11,9,1,253,122,198,134,130,130,134,198,122,6,198, + 120,6,11,11,8,1,0,128,128,128,184,204,132,132,132,132, + 132,132,1,11,11,3,1,0,128,0,0,128,128,128,128,128, + 128,128,128,2,14,14,4,1,253,64,0,0,64,64,64,64, + 64,64,64,64,64,64,192,6,11,11,7,1,0,128,128,128, + 136,144,160,224,160,176,152,140,1,11,11,3,1,0,128,128, + 128,128,128,128,128,128,128,128,128,11,8,16,13,1,0,185, + 192,206,96,132,32,132,32,132,32,132,32,132,32,132,32,6, + 8,8,8,1,0,184,204,132,132,132,132,132,132,7,8,8, + 9,1,0,120,196,134,130,130,134,196,120,7,11,11,9,1, + 253,188,198,134,130,130,134,198,188,128,128,128,7,11,11,9, + 1,253,122,198,134,130,130,134,198,122,2,2,2,4,8,8, + 5,1,0,240,192,128,128,128,128,128,128,6,8,8,8,1, + 0,120,140,128,240,28,4,140,120,4,10,10,6,1,0,32, + 32,240,32,32,32,32,32,32,48,6,8,8,8,1,0,132, + 132,132,132,132,132,204,116,8,8,8,8,0,0,195,66,102, + 36,36,60,24,24,12,8,16,12,0,0,198,48,70,48,79, + 32,105,32,41,96,41,192,56,192,16,192,7,8,8,8,1, + 0,196,76,120,48,48,120,204,134,8,11,11,8,0,253,195, + 66,102,38,52,60,24,24,24,16,48,5,8,8,7,1,0, + 248,24,16,32,96,64,192,248,5,15,15,7,1,252,24,48, + 32,32,32,32,96,192,96,32,32,32,32,48,24,1,16,16, + 6,3,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,15,15,7,1,252,192,96,32,32,32,32,48, + 24,48,32,32,32,32,96,192,8,2,2,8,0,3,115,206, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,5,0,0,1,11,11,5,2,253,128,0,0, + 128,128,128,128,128,128,128,128,6,12,12,8,1,254,8,8, + 120,220,148,144,160,164,236,120,64,64,7,11,11,9,1,0, + 60,102,64,64,248,64,64,64,64,64,254,8,9,9,10,1, + 2,129,90,36,66,66,66,36,90,129,8,11,11,9,0,0, + 65,99,34,231,20,28,255,8,8,8,8,1,14,14,6,3, + 253,128,128,128,128,128,128,0,0,128,128,128,128,128,128,5, + 14,14,7,1,253,120,136,128,192,112,216,136,152,240,48,24, + 8,24,240,4,1,1,4,0,10,144,11,11,22,13,1,0, + 31,0,127,128,115,64,225,96,160,32,160,32,161,32,179,96, + 94,64,96,128,31,0,6,8,8,6,0,3,56,72,120,72, + 88,104,0,252,6,6,6,8,1,1,36,72,216,216,72,36, + 8,3,3,10,1,4,255,1,1,255,11,11,22,13,1,0, + 31,0,127,128,81,64,209,96,158,32,147,32,145,32,209,96, + 64,64,97,128,31,0,4,1,1,4,0,10,240,3,4,4, + 5,1,7,224,160,160,224,9,10,20,15,3,0,8,0,8, + 0,8,0,255,128,8,0,8,0,8,0,0,0,0,0,255, + 128,4,6,6,6,1,5,112,144,48,96,192,240,5,6,6, + 6,0,5,120,200,24,48,136,112,3,3,3,3,1,9,96, + 64,128,255,7,14,14,9,1,253,126,244,244,244,244,116,20, + 20,20,20,20,20,20,20,1,2,2,4,2,4,128,128,4, + 3,3,5,1,253,48,16,224,3,6,6,5,1,5,96,160, + 32,32,32,32,5,8,8,7,1,3,112,216,136,136,216,112, + 0,248,6,6,6,8,1,1,216,72,36,36,72,216,10,11, + 22,12,1,0,97,0,162,0,34,0,36,0,36,0,41,128, + 9,128,18,128,51,192,32,128,96,128,11,11,22,13,1,0, + 96,128,161,0,34,0,34,0,36,0,37,192,9,32,24,96, + 16,192,33,128,97,224,11,11,22,12,0,0,120,128,9,128, + 49,0,27,0,138,0,116,192,4,192,9,64,11,224,16,64, + 48,64,6,11,11,8,1,253,16,0,16,16,48,96,192,128, + 132,236,120,11,16,32,11,0,0,24,0,8,0,4,0,0, + 0,0,0,6,0,14,0,10,0,27,0,25,0,49,128,49, + 128,63,192,96,192,64,64,192,96,11,16,32,11,0,0,3, + 0,2,0,4,0,0,0,0,0,6,0,14,0,10,0,27, + 0,25,0,49,128,49,128,63,192,96,192,64,64,192,96,11, + 16,32,11,0,0,4,0,14,0,9,0,0,0,0,0,6, + 0,14,0,10,0,27,0,25,0,49,128,49,128,63,192,96, + 192,64,64,192,96,11,15,30,11,0,0,13,0,22,0,0, + 0,0,0,6,0,14,0,10,0,27,0,25,0,49,128,49, + 128,63,192,96,192,64,64,192,96,11,14,28,11,0,0,9, + 0,0,0,0,0,6,0,14,0,11,0,27,0,25,0,17, + 128,48,128,63,192,96,192,64,96,192,96,11,16,32,11,0, + 0,14,0,10,0,14,0,0,0,0,0,4,0,12,0,10, + 0,10,0,17,0,17,0,49,128,63,128,96,192,64,64,192, + 96,13,11,22,14,0,0,3,248,5,0,13,0,13,0,25, + 0,25,248,49,0,63,0,97,0,65,0,193,248,8,15,15, + 10,1,252,62,97,193,128,128,128,128,128,193,67,62,12,6, + 2,28,6,16,16,9,1,0,64,32,16,0,0,252,128,128, + 128,128,252,128,128,128,128,252,6,16,16,9,1,0,8,16, + 16,0,0,252,128,128,128,128,252,128,128,128,128,252,6,16, + 16,9,1,0,48,48,72,0,0,252,128,128,128,128,252,128, + 128,128,128,252,6,15,15,8,1,0,72,0,0,0,252,128, + 128,128,128,252,128,128,128,128,252,3,16,16,3,255,0,192, + 64,32,0,0,32,32,32,32,32,32,32,32,32,32,32,3, + 16,16,3,1,0,96,192,128,0,0,128,128,128,128,128,128, + 128,128,128,128,128,3,16,16,3,0,0,64,224,160,0,0, + 64,64,64,64,64,64,64,64,64,64,64,4,14,14,4,0, + 0,144,0,0,64,64,64,64,64,64,64,64,64,64,64,10, + 11,22,11,0,0,62,0,33,128,32,128,32,192,32,64,248, + 64,32,64,32,192,32,128,33,128,62,0,8,15,15,10,1, + 0,52,44,0,0,193,225,225,177,177,153,137,141,133,135,131, + 9,16,32,11,1,0,48,0,16,0,8,0,0,0,0,0, + 62,0,99,0,193,128,129,128,128,128,128,128,128,128,129,128, + 193,0,99,0,62,0,9,16,32,11,1,0,4,0,12,0, + 8,0,0,0,0,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,9,16,32,11, + 1,0,8,0,28,0,20,0,0,0,0,0,62,0,99,0, + 193,128,129,128,128,128,128,128,128,128,129,128,193,0,99,0, + 62,0,9,15,30,11,1,0,24,0,44,0,0,0,0,0, + 62,0,99,0,193,128,128,128,128,128,128,128,128,128,129,128, + 193,0,119,0,62,0,9,15,30,11,1,0,18,0,0,0, + 0,0,0,0,62,0,99,0,193,128,129,128,128,128,128,128, + 128,128,129,128,193,0,99,0,62,0,7,7,7,15,4,1, + 130,68,40,16,40,68,130,9,13,26,11,1,255,0,128,63, + 0,99,0,195,128,134,128,140,128,136,128,152,128,177,128,225, + 0,99,0,254,0,128,0,8,16,16,10,1,0,32,16,24, + 0,0,129,129,129,129,129,129,129,129,195,230,60,8,16,16, + 10,1,0,12,8,16,0,0,129,129,129,129,129,129,129,129, + 195,230,60,8,16,16,10,1,0,24,24,36,0,0,129,129, + 129,129,129,129,129,129,195,230,60,8,15,15,10,1,0,36, + 0,0,0,129,129,129,129,129,129,129,129,131,194,60,9,16, + 32,10,1,0,6,0,4,0,8,0,0,0,0,0,193,128, + 65,0,99,0,38,0,52,0,28,0,8,0,8,0,8,0, + 8,0,8,0,7,11,11,9,1,0,128,128,252,134,130,130, + 134,252,128,128,128,7,11,11,8,1,0,120,204,132,140,144, + 144,156,134,130,178,156,6,12,12,8,1,0,32,16,16,0, + 120,204,4,124,196,132,140,116,6,13,13,8,1,0,24,16, + 48,32,0,120,204,4,124,196,132,140,116,6,12,12,8,1, + 0,48,104,72,0,120,204,4,124,196,132,140,116,6,11,11, + 8,1,0,120,0,0,120,204,4,124,196,132,140,116,6,11, + 11,8,1,0,72,0,0,120,204,4,124,196,132,140,116,6, + 13,13,8,1,0,48,72,72,48,0,120,196,4,124,196,132, + 140,116,12,8,16,13,1,0,251,192,138,32,4,48,127,240, + 196,0,140,48,202,96,113,192,6,12,12,8,1,252,120,204, + 132,128,128,132,204,120,48,24,8,48,6,13,13,8,1,0, + 64,32,32,16,0,120,196,132,252,128,132,204,120,6,13,13, + 8,1,0,8,16,16,32,0,120,196,132,252,128,132,204,120, + 6,12,12,8,1,0,48,104,72,0,120,196,132,252,128,132, + 204,120,6,11,11,8,1,0,72,0,0,120,204,132,252,128, + 132,204,120,2,12,12,3,0,0,128,64,64,0,64,64,64, + 64,64,64,64,64,3,12,12,3,0,0,32,64,128,0,64, + 64,64,64,64,64,64,64,5,12,12,3,255,0,112,80,136, + 0,32,32,32,32,32,32,32,32,4,11,11,4,0,0,144, + 0,0,64,64,64,64,64,64,64,64,7,11,11,9,1,0, + 104,112,136,124,198,134,130,130,134,196,120,6,11,11,8,1, + 0,120,0,0,184,204,132,132,132,132,132,132,7,13,13,9, + 1,0,96,32,16,16,0,120,196,134,130,130,134,196,120,7, + 13,13,9,1,0,12,24,16,32,0,120,196,134,130,130,134, + 196,120,7,12,12,9,1,0,56,40,68,0,120,196,134,130, + 130,134,196,120,7,11,11,9,1,0,120,0,0,120,196,134, + 130,130,134,196,120,7,11,11,9,1,0,72,0,0,120,196, + 134,130,130,134,196,120,9,7,14,15,3,1,8,0,8,0, + 0,0,255,128,0,0,8,0,8,0,8,10,10,9,0,255, + 1,62,98,71,73,89,83,98,124,192,6,13,13,8,1,0, + 64,32,32,16,0,132,132,132,132,132,132,204,116,6,13,13, + 8,1,0,24,16,48,32,0,132,132,132,132,132,132,204,116, + 6,12,12,8,1,0,48,80,72,0,132,132,132,132,132,132, + 204,116,6,11,11,8,1,0,72,0,0,132,132,132,132,132, + 132,204,116,8,15,15,8,0,253,4,8,16,0,195,66,102, + 38,52,60,24,24,24,80,112,7,14,14,9,1,253,128,128, + 128,188,198,134,130,130,134,198,188,128,128,128,8,14,14,8, + 0,253,36,0,0,195,66,102,36,36,60,24,24,24,16,48 + }; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 9 h=12 x= 3 y= 5 dx=15 dy= 0 ascent=11 len=18 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11n[265] U8G_SECTION(".progmem.u8g_font_fur11n") = { + 0,20,20,255,252,11,0,0,0,0,42,57,0,11,254,11, + 0,6,5,5,10,2,5,72,48,252,48,120,9,9,18,15, + 3,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,2,4,4,4,1,254,192,192,128,128,4,1, + 1,6,1,3,240,1,2,2,4,2,0,128,128,4,12,12, + 6,1,255,16,16,16,32,32,32,64,64,64,64,128,128,6, + 11,11,8,1,0,120,200,140,132,132,132,132,132,140,200,120, + 4,11,11,8,2,0,48,112,208,16,16,16,16,16,16,16, + 16,6,11,11,8,1,0,120,204,196,4,12,24,16,48,96, + 192,252,7,11,11,8,0,0,60,70,194,6,24,4,6,2, + 194,70,60,7,11,11,8,1,0,12,28,20,36,100,68,196, + 254,4,4,4,6,11,11,8,1,0,248,128,128,184,204,132, + 4,4,140,200,112,7,11,11,8,1,0,60,198,134,128,188, + 198,130,130,130,198,60,7,11,11,8,1,0,254,6,6,4, + 12,8,24,24,16,48,48,6,11,11,8,1,0,120,204,132, + 204,112,200,132,132,132,204,120,7,11,11,8,1,0,124,198, + 130,130,198,122,2,6,134,204,120}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=16 x= 4 y= 9 dx=15 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11r[1729] U8G_SECTION(".progmem.u8g_font_fur11r") = { + 0,20,20,255,252,11,2,81,4,211,32,127,253,13,252,11, + 253,0,0,0,5,0,0,1,11,11,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,5,5,5,7,1,6,216,216, + 152,152,144,9,11,22,11,1,0,9,0,9,0,19,0,127, + 128,18,0,38,0,255,0,36,0,100,0,72,0,72,0,7, + 14,14,9,1,255,16,16,120,148,148,144,240,124,22,18,146, + 214,124,16,12,11,22,14,1,0,112,128,152,128,137,0,137, + 0,154,0,116,224,5,176,9,16,9,16,17,48,16,224,9, + 11,22,11,1,0,56,0,68,0,68,0,120,0,113,0,217, + 0,137,0,143,0,134,0,199,0,125,128,2,5,5,6,2, + 6,192,128,128,128,128,2,14,14,6,2,253,64,64,192,128, + 128,128,128,128,128,128,128,192,64,64,2,14,14,5,2,253, + 128,128,128,192,64,64,64,64,64,64,192,128,128,128,6,5, + 5,10,2,5,72,48,252,48,120,9,9,18,15,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,2,4,4,4,1,254,192,192,128,128,4,1,1,6,1, + 3,240,1,2,2,4,2,0,128,128,4,12,12,6,1,255, + 16,16,16,32,32,32,64,64,64,64,128,128,6,11,11,8, + 1,0,120,200,140,132,132,132,132,132,140,200,120,4,11,11, + 8,2,0,48,112,208,16,16,16,16,16,16,16,16,6,11, + 11,8,1,0,120,204,196,4,12,24,16,48,96,192,252,7, + 11,11,8,0,0,60,70,194,6,24,4,6,2,194,70,60, + 7,11,11,8,1,0,12,28,20,36,100,68,196,254,4,4, + 4,6,11,11,8,1,0,248,128,128,184,204,132,4,4,140, + 200,112,7,11,11,8,1,0,60,198,134,128,188,198,130,130, + 130,198,60,7,11,11,8,1,0,254,6,6,4,12,8,24, + 24,16,48,48,6,11,11,8,1,0,120,204,132,204,112,200, + 132,132,132,204,120,7,11,11,8,1,0,124,198,130,130,198, + 122,2,6,134,204,120,1,8,8,4,2,0,128,128,0,0, + 0,0,128,128,2,10,10,4,1,254,64,64,0,0,0,0, + 64,192,192,128,9,8,16,15,3,1,0,128,3,0,28,0, + 96,0,128,0,112,0,14,0,1,128,9,4,8,15,3,3, + 255,128,0,0,0,0,255,128,9,8,16,15,3,1,128,0, + 96,0,28,0,3,0,0,128,7,0,56,0,192,0,7,11, + 11,8,0,0,60,198,2,6,4,8,16,16,16,0,16,13, + 14,28,15,1,253,15,128,48,96,96,16,206,144,153,152,144, + 136,144,136,144,136,145,152,153,144,206,96,96,0,48,0,15, + 128,11,11,22,11,0,0,6,0,14,0,10,0,27,0,25, + 0,49,128,49,128,63,192,96,192,64,64,192,96,8,11,11, + 10,1,0,252,134,130,130,134,252,130,129,129,131,254,8,11, + 11,10,1,0,62,99,193,128,128,128,128,128,193,67,62,8, + 11,11,10,1,0,248,134,130,131,129,129,129,131,130,134,248, + 6,11,11,9,1,0,252,128,128,128,128,252,128,128,128,128, + 252,6,11,11,8,1,0,252,128,128,128,128,252,128,128,128, + 128,128,9,11,22,11,1,0,30,0,97,128,192,128,128,0, + 128,0,135,128,128,128,128,128,192,128,96,128,63,128,8,11, + 11,10,1,0,129,129,129,129,129,255,129,129,129,129,129,1, + 11,11,3,1,0,128,128,128,128,128,128,128,128,128,128,128, + 6,11,11,8,1,0,4,4,4,4,4,4,4,4,132,140, + 120,8,11,11,9,1,0,134,140,152,176,224,224,176,152,140, + 134,131,6,11,11,7,1,0,128,128,128,128,128,128,128,128, + 128,128,252,11,11,22,13,1,0,192,96,224,224,224,160,161, + 160,177,160,145,32,147,32,154,32,138,32,142,32,132,32,8, + 11,11,10,1,0,193,225,225,177,177,153,137,141,133,135,131, + 9,11,22,11,1,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,7,11,11,9, + 1,0,252,134,130,130,134,252,128,128,128,128,128,10,11,22, + 12,1,0,62,0,99,0,193,128,129,128,128,128,128,128,128, + 128,129,128,193,128,99,0,63,192,7,11,11,9,1,0,252, + 134,130,130,134,248,132,134,134,130,130,8,11,11,10,1,0, + 60,194,131,128,240,126,7,1,129,195,124,9,11,22,11,1, + 0,255,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,11,11,10,1,0,129,129,129, + 129,129,129,129,129,131,194,60,9,11,22,10,0,0,192,128, + 65,128,97,128,97,0,35,0,51,0,18,0,22,0,30,0, + 12,0,12,0,14,11,22,15,0,0,195,4,67,140,67,140, + 102,136,38,136,36,216,52,80,60,80,24,80,24,112,24,32, + 9,11,22,11,1,0,193,0,99,0,38,0,52,0,28,0, + 24,0,60,0,38,0,98,0,195,0,129,128,9,11,22,10, + 1,0,193,128,65,0,99,0,38,0,52,0,28,0,8,0, + 8,0,8,0,8,0,8,0,8,11,11,10,1,0,127,3, + 6,6,12,24,56,48,96,224,255,3,14,14,6,2,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,224,4,12,12, + 6,1,255,128,128,128,64,64,64,32,32,32,32,16,16,3, + 14,14,6,1,253,224,32,32,32,32,32,32,32,32,32,32, + 32,32,224,7,10,10,15,4,0,16,16,40,40,72,68,68, + 130,130,130,8,1,1,8,0,254,255,2,3,3,3,0,9, + 128,192,64,6,8,8,8,1,0,120,204,4,124,196,132,140, + 116,7,11,11,9,1,0,128,128,128,188,198,134,130,130,134, + 196,184,6,8,8,8,1,0,120,204,132,128,128,132,204,120, + 7,11,11,9,1,0,2,2,2,122,198,134,130,130,134,198, + 58,6,8,8,8,1,0,120,196,132,252,128,132,204,120,5, + 11,11,7,1,0,56,32,32,248,32,32,32,32,32,32,32, + 7,11,11,9,1,253,122,198,134,130,130,134,198,122,6,198, + 120,6,11,11,8,1,0,128,128,128,184,204,132,132,132,132, + 132,132,1,11,11,3,1,0,128,0,0,128,128,128,128,128, + 128,128,128,2,14,14,4,1,253,64,0,0,64,64,64,64, + 64,64,64,64,64,64,192,6,11,11,7,1,0,128,128,128, + 136,144,160,224,160,176,152,140,1,11,11,3,1,0,128,128, + 128,128,128,128,128,128,128,128,128,11,8,16,13,1,0,185, + 192,206,96,132,32,132,32,132,32,132,32,132,32,132,32,6, + 8,8,8,1,0,184,204,132,132,132,132,132,132,7,8,8, + 9,1,0,120,196,134,130,130,134,196,120,7,11,11,9,1, + 253,188,198,134,130,130,134,198,188,128,128,128,7,11,11,9, + 1,253,122,198,134,130,130,134,198,122,2,2,2,4,8,8, + 5,1,0,240,192,128,128,128,128,128,128,6,8,8,8,1, + 0,120,140,128,240,28,4,140,120,4,10,10,6,1,0,32, + 32,240,32,32,32,32,32,32,48,6,8,8,8,1,0,132, + 132,132,132,132,132,204,116,8,8,8,8,0,0,195,66,102, + 36,36,60,24,24,12,8,16,12,0,0,198,48,70,48,79, + 32,105,32,41,96,41,192,56,192,16,192,7,8,8,8,1, + 0,196,76,120,48,48,120,204,134,8,11,11,8,0,253,195, + 66,102,38,52,60,24,24,24,16,48,5,8,8,7,1,0, + 248,24,16,32,96,64,192,248,5,15,15,7,1,252,24,48, + 32,32,32,32,96,192,96,32,32,32,32,48,24,1,16,16, + 6,3,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,15,15,7,1,252,192,96,32,32,32,32,48, + 24,48,32,32,32,32,96,192,8,2,2,8,0,3,115,206, + 255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=18 h=21 x= 5 y=13 dx=19 dy= 0 ascent=21 len=54 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14[5349] U8G_SECTION(".progmem.u8g_font_fur14") = { + 0,26,26,255,251,14,3,59,6,250,32,255,252,21,251,14, + 252,0,0,0,6,0,0,2,14,14,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,0,0,192,6,6,6,9,1, + 8,204,204,76,76,68,68,12,14,28,14,1,0,6,96,4, + 64,4,64,12,192,127,240,8,128,25,128,25,0,255,224,19, + 0,51,0,34,0,34,0,102,0,9,18,36,11,1,254,8, + 0,8,0,62,0,107,0,201,128,200,0,200,0,248,0,126, + 0,15,0,9,128,9,128,201,128,201,128,107,0,62,0,8, + 0,8,0,16,14,28,18,1,0,120,16,108,16,198,32,198, + 96,198,64,204,128,124,128,1,60,3,102,2,99,6,99,4, + 99,8,102,8,60,12,14,28,14,1,0,30,0,51,0,97, + 0,99,0,51,0,60,0,60,96,108,96,198,96,195,96,193, + 192,192,192,99,224,62,48,1,6,6,7,3,8,128,128,128, + 128,128,128,3,17,17,7,2,253,32,96,96,64,192,192,192, + 192,192,192,192,192,192,64,96,96,32,3,17,17,7,2,253, + 128,128,192,192,64,64,96,96,96,96,96,96,64,192,192,128, + 128,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0,2,10,10,5,2,0,192,192,0,0,0, + 0,0,0,192,192,3,12,12,5,1,254,96,96,0,0,0, + 0,0,96,96,64,192,192,12,10,20,19,4,1,0,48,0, + 224,7,0,28,0,224,0,192,0,56,0,14,0,1,192,0, + 48,11,5,10,19,4,4,255,224,0,0,0,0,0,0,255, + 224,12,10,20,19,4,1,128,0,112,0,28,0,3,128,0, + 96,0,112,1,192,14,0,112,0,192,0,8,14,14,9,0, + 0,60,126,195,3,3,2,6,12,24,24,24,0,0,24,17, + 18,54,19,1,252,7,240,0,28,60,0,48,6,0,96,3, + 0,99,243,0,198,113,0,196,49,128,204,49,128,204,49,128, + 204,49,128,204,49,128,196,51,0,70,95,0,99,158,0,96, + 0,0,48,0,0,30,16,0,7,240,0,14,14,28,14,0, + 0,3,0,7,128,7,128,4,192,12,192,12,192,24,96,24, + 96,31,240,63,240,48,24,96,24,96,24,192,12,10,14,28, + 13,2,0,255,0,193,128,192,192,192,192,192,192,193,128,254, + 0,195,128,192,192,192,192,192,192,192,192,195,128,255,0,11, + 14,28,13,1,0,31,128,57,192,96,96,64,96,192,0,192, + 0,192,0,192,0,192,0,192,0,64,96,96,96,49,192,31, + 0,11,14,28,14,2,0,254,0,195,128,192,192,192,192,192, + 96,192,96,192,96,192,96,192,96,192,96,192,192,192,192,195, + 128,254,0,9,14,28,12,2,0,255,128,192,0,192,0,192, + 0,192,0,192,0,255,128,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,8,14,14,11,2,0,255,192,192,192,192, + 192,255,192,192,192,192,192,192,192,12,14,28,14,1,0,15, + 128,56,224,96,48,64,0,192,0,192,0,193,240,192,48,192, + 48,192,48,96,48,96,48,56,112,15,224,10,14,28,14,2, + 0,192,192,192,192,192,192,192,192,192,192,192,192,255,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,2,14,14, + 5,2,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,14,14,11,1,0,3,3,3,3,3,3,3,3,3, + 3,195,195,102,60,10,14,28,13,2,0,193,128,195,0,198, + 0,204,0,216,0,240,0,240,0,216,0,220,0,206,0,199, + 0,195,0,193,128,192,192,8,14,14,11,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,255,255,14,14,28,18,2, + 0,224,28,224,28,240,60,240,60,216,108,216,108,216,108,204, + 204,204,204,196,140,199,140,199,140,195,12,195,12,11,14,28, + 14,2,0,224,96,224,96,240,96,248,96,216,96,220,96,204, + 96,198,96,198,96,195,96,195,96,193,224,193,224,192,224,12, + 14,28,14,1,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,9,14,28,12,2,0,254,0,195,0,193,128,193,128,193, + 128,193,128,195,0,254,0,192,0,192,0,192,0,192,0,192, + 0,192,0,14,14,28,15,1,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,252,9,14,28,12,2,0,254,0,195,0,193, + 128,193,128,193,128,195,0,254,0,195,0,195,0,193,0,193, + 128,193,128,193,128,193,128,10,14,28,12,1,0,63,0,97, + 128,192,192,192,0,192,0,240,0,127,0,31,128,1,192,0, + 192,192,192,192,192,97,128,62,0,11,14,28,13,1,0,255, + 224,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,11,14,28,15,2, + 0,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,96,192,113,192,31,0,12,14,28, + 12,0,0,224,48,96,112,96,96,48,96,48,96,48,192,24, + 192,24,192,25,128,13,128,13,0,15,0,7,0,6,0,18, + 14,42,18,0,0,192,224,192,96,224,192,97,225,128,97,161, + 128,33,177,128,49,49,128,51,51,0,51,19,0,27,27,0, + 26,26,0,30,30,0,14,14,0,12,14,0,12,12,0,12, + 14,28,13,1,0,224,96,96,192,49,192,57,128,27,0,15, + 0,14,0,15,0,27,0,25,128,49,192,96,192,224,224,192, + 112,12,14,28,12,0,0,224,112,96,96,112,192,48,192,25, + 128,25,128,15,0,14,0,6,0,6,0,6,0,6,0,6, + 0,6,0,10,14,28,12,1,0,127,192,0,192,1,128,3, + 128,3,0,6,0,14,0,28,0,24,0,56,0,112,0,96, + 0,224,0,255,192,4,18,18,8,2,252,240,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,5,15,15, + 8,1,255,128,192,64,64,64,96,32,32,48,16,16,16,24, + 8,8,4,18,18,8,2,252,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,9,12,24,19,5,0, + 8,0,8,0,20,0,20,0,34,0,34,0,34,0,65,0, + 65,0,193,128,128,128,128,128,10,1,2,10,0,254,255,192, + 3,4,4,4,0,12,128,192,96,32,8,10,10,10,1,0, + 62,103,195,3,63,99,195,195,231,123,9,14,28,11,1,0, + 192,0,192,0,192,0,192,0,222,0,227,0,193,128,193,128, + 193,128,193,128,193,128,193,0,227,0,222,0,8,10,10,10, + 1,0,62,103,195,192,192,192,192,195,103,60,9,14,28,11, + 1,0,1,128,1,128,1,128,1,128,61,128,103,128,195,128, + 193,128,193,128,193,128,193,128,65,128,99,128,29,128,9,10, + 20,11,1,0,62,0,99,0,193,0,193,128,255,128,192,0, + 192,0,67,0,103,0,62,0,6,14,14,8,1,0,28,48, + 48,48,252,48,48,48,48,48,48,48,48,48,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,65,128,115,0,62,0,8,14, + 14,10,1,0,192,192,192,192,222,231,195,195,195,195,195,195, + 195,195,2,14,14,4,1,0,192,0,0,0,192,192,192,192, + 192,192,192,192,192,192,3,18,18,5,1,252,96,0,0,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,192,7,14, + 14,9,1,0,192,192,192,192,198,204,216,240,240,248,216,204, + 198,198,2,14,14,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,14,10,20,17,1,0,222,120,231,156, + 195,12,195,12,195,12,195,12,195,12,195,12,195,12,195,12, + 8,10,10,10,1,0,222,231,195,195,195,195,195,195,195,195, + 9,10,20,11,1,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,99,0,62,0,9,14,28,11,1,252, + 222,0,227,0,193,128,193,128,193,128,193,128,193,128,193,128, + 227,0,222,0,192,0,192,0,192,0,192,0,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,1,128,1,128,1,128,5,10, + 10,7,1,0,248,224,192,192,192,192,192,192,192,192,8,10, + 10,10,1,0,124,231,195,192,124,30,3,195,230,124,6,13, + 13,8,1,0,16,48,48,252,48,48,48,48,48,48,48,48, + 28,8,10,10,10,1,0,195,195,195,195,195,195,195,195,231, + 123,10,10,20,10,0,0,192,192,96,128,97,128,49,128,51, + 0,51,0,26,0,30,0,14,0,12,0,15,10,20,15,0, + 0,195,134,99,134,99,196,98,204,38,76,54,72,52,120,28, + 120,28,48,24,48,9,10,20,10,1,0,195,0,99,0,118, + 0,60,0,24,0,28,0,60,0,102,0,195,0,195,128,10, + 14,28,10,0,252,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,24,0,24, + 0,7,10,10,9,1,0,254,6,12,28,24,48,96,96,192, + 254,6,19,19,10,2,251,12,24,16,48,48,48,48,48,96, + 224,224,48,48,48,48,16,16,24,28,1,21,21,7,3,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,19,19,10,2,251,224,112,48,48,48, + 48,48,16,24,12,28,16,48,48,48,48,48,48,224,10,2, + 4,10,0,4,120,192,207,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,6,0,0,2, + 14,14,7,3,252,192,192,0,0,192,192,192,192,192,192,192, + 192,192,192,8,14,14,10,1,254,2,4,60,102,203,200,200, + 208,208,211,102,60,32,64,10,14,28,11,1,0,31,0,49, + 128,96,192,96,0,96,0,252,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,255,128,10,10,20,12,1,3,128, + 64,94,128,51,0,65,128,64,128,64,128,64,128,33,0,94, + 128,128,64,10,14,28,12,1,0,192,192,96,128,97,128,49, + 0,243,192,27,0,30,0,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,1,18,18,7,3,252,128,128,128,128,128, + 128,128,128,0,0,128,128,128,128,128,128,128,128,7,17,17, + 9,1,253,60,100,192,192,96,56,124,198,198,206,124,60,14, + 6,6,140,248,6,1,1,6,0,13,204,14,14,28,16,1, + 0,15,192,28,224,39,144,76,200,216,108,152,4,152,4,152, + 4,152,100,140,204,71,200,32,16,16,32,15,192,7,10,10, + 8,1,4,120,204,4,124,196,132,124,0,0,254,7,8,8, + 11,2,1,38,100,204,216,152,204,100,38,10,5,10,12,1, + 3,255,192,0,64,0,64,0,64,0,64,255,14,14,28,16, + 1,0,15,192,28,224,47,208,76,104,204,108,140,100,143,132, + 140,68,140,100,204,108,76,104,32,16,28,224,15,192,6,1, + 1,6,0,13,252,4,5,5,6,1,9,96,240,144,144,96, + 11,12,24,19,4,0,6,0,6,0,6,0,6,0,255,224, + 6,0,6,0,6,0,0,0,0,0,0,0,255,224,6,8, + 8,7,1,6,120,220,12,12,24,48,192,252,6,8,8,7, + 1,6,120,204,12,48,24,140,204,120,4,4,4,4,1,12, + 48,96,64,192,255,9,18,36,11,1,252,63,128,121,0,249, + 0,249,0,249,0,249,0,121,0,25,0,9,0,9,0,9, + 0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,2, + 2,2,5,2,5,192,192,6,5,5,5,0,251,64,120,12, + 12,248,4,7,7,6,1,7,112,240,48,48,48,48,48,6, + 10,10,8,1,4,120,72,132,132,132,132,204,120,0,252,7, + 8,8,11,2,1,152,204,100,102,102,100,204,152,13,14,28, + 15,1,0,112,64,240,192,48,128,49,128,49,0,51,0,50, + 48,54,112,12,112,8,176,25,176,17,248,48,48,32,48,13, + 14,28,15,1,0,112,64,240,192,48,128,49,128,49,0,50, + 0,50,112,52,216,12,24,8,24,24,48,16,96,48,192,32, + 248,14,14,28,16,1,0,120,48,204,32,12,96,48,192,12, + 128,141,128,121,24,3,56,2,120,4,88,12,152,8,252,24, + 24,16,24,8,14,14,10,1,252,12,12,0,12,12,12,24, + 48,96,192,192,193,127,62,14,20,40,14,0,0,12,0,6, + 0,2,0,3,0,0,0,0,0,3,0,7,128,7,128,4, + 192,12,192,12,192,24,96,24,96,31,240,63,240,48,24,96, + 24,96,24,192,12,14,20,40,14,0,0,0,192,0,128,1, + 128,1,0,0,0,0,0,3,0,7,128,7,128,4,192,12, + 192,12,192,24,96,24,96,31,240,63,240,48,24,96,24,96, + 24,192,12,14,20,40,14,0,0,3,0,3,128,6,128,4, + 192,0,0,0,0,3,0,7,128,7,128,4,192,12,192,12, + 192,24,96,24,96,31,240,63,240,48,24,96,24,96,24,192, + 12,14,18,36,14,0,0,7,192,0,0,0,0,0,0,3, + 0,7,128,7,128,4,192,12,192,12,192,24,96,24,96,31, + 240,63,240,48,24,96,24,96,24,192,12,13,18,36,15,1, + 0,12,192,0,0,0,0,0,0,7,0,7,0,13,128,13, + 128,12,192,24,192,24,192,48,96,63,224,63,240,96,48,96, + 24,192,24,192,24,13,21,42,14,1,0,6,0,13,0,9, + 0,9,0,6,0,0,0,0,0,6,0,7,0,15,0,13, + 0,25,128,25,128,16,192,48,192,63,224,127,224,96,32,192, + 48,192,48,192,24,17,14,42,19,1,0,1,255,128,3,192, + 0,2,192,0,6,192,0,14,192,0,12,192,0,28,255,128, + 24,192,0,56,192,0,63,192,0,96,192,0,96,192,0,192, + 192,0,192,255,128,11,18,36,13,1,252,31,128,57,192,96, + 96,64,96,192,0,192,0,192,0,192,0,192,0,192,0,64, + 96,96,96,49,192,31,0,4,0,7,0,1,128,15,128,9, + 20,40,12,2,0,96,0,48,0,24,0,8,0,0,0,0, + 0,255,128,192,0,192,0,192,0,192,0,192,0,255,128,192, + 0,192,0,192,0,192,0,192,0,192,0,255,128,9,20,40, + 12,2,0,6,0,4,0,12,0,24,0,0,0,0,0,255, + 128,192,0,192,0,192,0,192,0,192,0,255,128,192,0,192, + 0,192,0,192,0,192,0,192,0,255,128,9,20,40,12,2, + 0,24,0,28,0,52,0,38,0,0,0,0,0,255,128,192, + 0,192,0,192,0,192,0,192,0,255,128,192,0,192,0,192, + 0,192,0,192,0,192,0,255,128,9,18,36,12,2,0,102, + 0,0,0,0,0,0,0,255,128,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,255,128,4,20,20,5,0,0,192,96,32,48,0,0,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,4,20,20, + 5,2,0,48,96,64,128,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,5,20,20,5,0,0,48,112,88, + 200,0,0,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,6,18,18,6,0,0,204,0,0,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,13,14,28,14,0,0,127, + 128,97,224,96,112,96,48,96,16,96,24,254,24,96,24,96, + 24,96,16,96,48,96,96,97,224,127,128,11,18,36,14,2, + 0,31,0,0,0,0,0,0,0,224,96,224,96,240,96,248, + 96,216,96,220,96,204,96,198,96,198,96,195,96,195,96,193, + 224,193,224,192,224,12,20,40,14,1,0,24,0,12,0,6, + 0,2,0,0,0,0,0,31,128,57,192,96,96,64,32,192, + 48,192,48,192,48,192,48,192,48,192,48,64,32,96,96,57, + 192,15,0,12,20,40,14,1,0,1,128,3,0,6,0,4, + 0,0,0,0,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,12,20,40,14,1,0,6,0,15,0,9,0,16,128,0, + 0,0,0,31,128,57,192,96,96,64,32,192,48,192,48,192, + 48,192,48,192,48,192,48,64,32,96,96,57,192,15,0,12, + 19,38,14,1,0,12,128,31,0,0,0,0,0,0,0,31, + 128,57,192,96,96,64,32,192,48,192,48,192,48,192,48,192, + 48,192,48,96,96,112,224,63,192,15,0,12,18,36,14,1, + 0,13,128,0,0,0,0,0,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,0,11,10,20,19,4,1,192,96,96,192,49, + 128,27,0,14,0,14,0,27,0,49,128,96,192,64,96,12, + 16,32,14,1,255,0,48,31,224,56,224,96,224,65,176,193, + 176,195,48,198,48,198,48,204,48,220,48,88,32,112,96,57, + 192,127,0,192,0,11,20,40,15,2,0,24,0,8,0,4, + 0,6,0,0,0,0,0,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,96,192,127, + 192,31,0,11,20,40,15,2,0,3,0,2,0,4,0,12, + 0,0,0,0,0,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,96,192,127,192,31, + 0,11,20,40,15,2,0,14,0,14,0,27,0,17,0,0, + 0,0,0,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,96,192,127,192,31,0,11, + 18,36,15,2,0,25,128,0,0,0,0,0,0,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,96,192,113,192,31,0,12,20,40,12,0,0,1, + 128,3,0,2,0,4,0,0,0,0,0,224,112,96,96,112, + 192,48,192,25,128,25,128,15,0,14,0,6,0,6,0,6, + 0,6,0,6,0,6,0,9,14,28,12,2,0,192,0,192, + 0,192,0,254,0,195,0,193,128,193,128,193,128,195,128,254, + 0,192,0,192,0,192,0,192,0,10,14,28,11,1,0,62, + 0,103,0,195,0,195,0,198,0,204,0,204,0,206,0,199, + 128,193,128,192,192,216,192,220,128,199,128,8,15,15,10,1, + 0,48,24,8,0,0,62,103,195,3,63,99,195,195,231,123, + 8,16,16,10,1,0,6,12,24,16,0,0,62,103,195,3, + 63,99,195,195,231,123,8,16,16,10,1,0,24,28,36,38, + 0,0,62,103,195,3,63,99,195,195,231,123,8,14,14,10, + 1,0,62,0,0,0,62,103,195,3,63,115,195,195,231,123, + 8,14,14,10,1,0,102,0,0,0,62,103,195,3,63,99, + 195,195,231,123,8,16,16,10,1,0,28,34,34,28,0,0, + 62,99,193,1,63,113,193,193,231,61,16,10,20,18,1,0, + 62,124,227,198,193,131,1,131,63,255,225,128,193,128,195,131, + 230,238,124,60,8,14,14,10,1,252,62,103,195,192,192,192, + 192,195,102,60,16,28,6,62,9,16,32,11,1,0,48,0, + 48,0,24,0,8,0,0,0,0,0,62,0,99,0,193,0, + 193,128,255,128,192,0,192,0,67,0,103,0,62,0,9,16, + 32,11,1,0,6,0,12,0,8,0,24,0,0,0,0,0, + 62,0,99,0,193,0,193,128,255,128,192,0,192,0,67,0, + 103,0,62,0,9,16,32,11,1,0,24,0,28,0,52,0, + 34,0,0,0,0,0,62,0,99,0,193,0,193,128,255,128, + 192,0,192,0,67,0,103,0,62,0,9,14,28,11,1,0, + 102,0,0,0,0,0,0,0,62,0,99,0,193,0,193,128, + 255,128,192,0,192,0,67,0,103,0,62,0,3,15,15,4, + 0,0,128,192,96,32,0,96,96,96,96,96,96,96,96,96, + 96,3,15,15,4,1,0,96,64,192,128,0,192,192,192,192, + 192,192,192,192,192,192,6,15,15,4,255,0,48,120,72,132, + 0,48,48,48,48,48,48,48,48,48,48,6,14,14,5,0, + 0,204,0,0,0,48,48,48,48,48,48,48,48,48,48,9, + 14,28,11,1,0,102,0,24,0,108,0,6,0,63,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,8,14,14,10,1,0,52,124,0,0,222,231,195,195,195, + 195,195,195,195,195,9,16,32,11,1,0,48,0,16,0,24, + 0,8,0,0,0,0,0,62,0,99,0,193,128,193,128,193, + 128,193,128,193,128,193,128,99,0,62,0,9,16,32,11,1, + 0,6,0,4,0,12,0,8,0,0,0,0,0,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,9,16,32,11,1,0,8,0,28,0,20,0,34,0,0, + 0,0,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,62,0,0, + 0,0,0,0,0,62,0,99,0,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,9,14,28,11,1,0,51, + 0,0,0,0,0,0,0,62,0,115,0,193,128,192,128,192, + 128,192,128,192,128,193,128,115,0,62,0,11,8,16,19,4, + 2,6,0,6,0,0,0,0,0,255,224,0,0,6,0,6, + 0,9,12,24,11,1,0,1,128,63,0,99,0,199,128,197, + 128,201,128,217,128,209,128,225,128,99,0,254,0,128,0,8, + 16,16,10,1,0,96,48,16,8,0,0,195,195,195,195,195, + 195,195,195,231,123,8,16,16,10,1,0,4,12,8,16,0, + 0,195,195,195,195,195,195,195,195,231,123,8,16,16,10,1, + 0,24,24,52,36,0,0,195,195,195,195,195,195,195,195,231, + 123,8,14,14,10,1,0,102,0,0,0,195,195,195,195,195, + 195,195,195,231,123,10,19,38,10,0,252,3,0,6,0,4, + 0,8,0,0,0,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,120,0,120, + 0,9,18,36,11,1,252,192,0,192,0,192,0,192,0,222, + 0,227,0,193,128,193,128,193,128,193,128,193,128,193,128,227, + 0,222,0,192,0,192,0,192,0,192,0,10,18,36,10,0, + 252,51,0,0,0,0,0,0,0,192,192,97,128,97,128,97, + 0,51,0,51,0,30,0,30,0,30,0,12,0,12,0,24, + 0,24,0,24,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=11 h=15 x= 4 y= 7 dx=19 dy= 0 ascent=14 len=28 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14n[405] U8G_SECTION(".progmem.u8g_font_fur14n") = { + 0,26,26,255,251,14,0,0,0,0,42,57,0,14,254,14, + 0,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=18 h=21 x= 5 y=12 dx=19 dy= 0 ascent=16 len=54 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14r[2489] U8G_SECTION(".progmem.u8g_font_fur14r") = { + 0,26,26,255,251,14,3,59,6,250,32,127,252,16,251,14, + 252,0,0,0,6,0,0,2,14,14,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,0,0,192,6,6,6,9,1, + 8,204,204,76,76,68,68,12,14,28,14,1,0,6,96,4, + 64,4,64,12,192,127,240,8,128,25,128,25,0,255,224,19, + 0,51,0,34,0,34,0,102,0,9,18,36,11,1,254,8, + 0,8,0,62,0,107,0,201,128,200,0,200,0,248,0,126, + 0,15,0,9,128,9,128,201,128,201,128,107,0,62,0,8, + 0,8,0,16,14,28,18,1,0,120,16,108,16,198,32,198, + 96,198,64,204,128,124,128,1,60,3,102,2,99,6,99,4, + 99,8,102,8,60,12,14,28,14,1,0,30,0,51,0,97, + 0,99,0,51,0,60,0,60,96,108,96,198,96,195,96,193, + 192,192,192,99,224,62,48,1,6,6,7,3,8,128,128,128, + 128,128,128,3,17,17,7,2,253,32,96,96,64,192,192,192, + 192,192,192,192,192,192,64,96,96,32,3,17,17,7,2,253, + 128,128,192,192,64,64,96,96,96,96,96,96,64,192,192,128, + 128,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0,2,10,10,5,2,0,192,192,0,0,0, + 0,0,0,192,192,3,12,12,5,1,254,96,96,0,0,0, + 0,0,96,96,64,192,192,12,10,20,19,4,1,0,48,0, + 224,7,0,28,0,224,0,192,0,56,0,14,0,1,192,0, + 48,11,5,10,19,4,4,255,224,0,0,0,0,0,0,255, + 224,12,10,20,19,4,1,128,0,112,0,28,0,3,128,0, + 96,0,112,1,192,14,0,112,0,192,0,8,14,14,9,0, + 0,60,126,195,3,3,2,6,12,24,24,24,0,0,24,17, + 18,54,19,1,252,7,240,0,28,60,0,48,6,0,96,3, + 0,99,243,0,198,113,0,196,49,128,204,49,128,204,49,128, + 204,49,128,204,49,128,196,51,0,70,95,0,99,158,0,96, + 0,0,48,0,0,30,16,0,7,240,0,14,14,28,14,0, + 0,3,0,7,128,7,128,4,192,12,192,12,192,24,96,24, + 96,31,240,63,240,48,24,96,24,96,24,192,12,10,14,28, + 13,2,0,255,0,193,128,192,192,192,192,192,192,193,128,254, + 0,195,128,192,192,192,192,192,192,192,192,195,128,255,0,11, + 14,28,13,1,0,31,128,57,192,96,96,64,96,192,0,192, + 0,192,0,192,0,192,0,192,0,64,96,96,96,49,192,31, + 0,11,14,28,14,2,0,254,0,195,128,192,192,192,192,192, + 96,192,96,192,96,192,96,192,96,192,96,192,192,192,192,195, + 128,254,0,9,14,28,12,2,0,255,128,192,0,192,0,192, + 0,192,0,192,0,255,128,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,8,14,14,11,2,0,255,192,192,192,192, + 192,255,192,192,192,192,192,192,192,12,14,28,14,1,0,15, + 128,56,224,96,48,64,0,192,0,192,0,193,240,192,48,192, + 48,192,48,96,48,96,48,56,112,15,224,10,14,28,14,2, + 0,192,192,192,192,192,192,192,192,192,192,192,192,255,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,2,14,14, + 5,2,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,14,14,11,1,0,3,3,3,3,3,3,3,3,3, + 3,195,195,102,60,10,14,28,13,2,0,193,128,195,0,198, + 0,204,0,216,0,240,0,240,0,216,0,220,0,206,0,199, + 0,195,0,193,128,192,192,8,14,14,11,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,255,255,14,14,28,18,2, + 0,224,28,224,28,240,60,240,60,216,108,216,108,216,108,204, + 204,204,204,196,140,199,140,199,140,195,12,195,12,11,14,28, + 14,2,0,224,96,224,96,240,96,248,96,216,96,220,96,204, + 96,198,96,198,96,195,96,195,96,193,224,193,224,192,224,12, + 14,28,14,1,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,9,14,28,12,2,0,254,0,195,0,193,128,193,128,193, + 128,193,128,195,0,254,0,192,0,192,0,192,0,192,0,192, + 0,192,0,14,14,28,15,1,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,252,9,14,28,12,2,0,254,0,195,0,193, + 128,193,128,193,128,195,0,254,0,195,0,195,0,193,0,193, + 128,193,128,193,128,193,128,10,14,28,12,1,0,63,0,97, + 128,192,192,192,0,192,0,240,0,127,0,31,128,1,192,0, + 192,192,192,192,192,97,128,62,0,11,14,28,13,1,0,255, + 224,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,11,14,28,15,2, + 0,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,96,192,113,192,31,0,12,14,28, + 12,0,0,224,48,96,112,96,96,48,96,48,96,48,192,24, + 192,24,192,25,128,13,128,13,0,15,0,7,0,6,0,18, + 14,42,18,0,0,192,224,192,96,224,192,97,225,128,97,161, + 128,33,177,128,49,49,128,51,51,0,51,19,0,27,27,0, + 26,26,0,30,30,0,14,14,0,12,14,0,12,12,0,12, + 14,28,13,1,0,224,96,96,192,49,192,57,128,27,0,15, + 0,14,0,15,0,27,0,25,128,49,192,96,192,224,224,192, + 112,12,14,28,12,0,0,224,112,96,96,112,192,48,192,25, + 128,25,128,15,0,14,0,6,0,6,0,6,0,6,0,6, + 0,6,0,10,14,28,12,1,0,127,192,0,192,1,128,3, + 128,3,0,6,0,14,0,28,0,24,0,56,0,112,0,96, + 0,224,0,255,192,4,18,18,8,2,252,240,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,5,15,15, + 8,1,255,128,192,64,64,64,96,32,32,48,16,16,16,24, + 8,8,4,18,18,8,2,252,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,9,12,24,19,5,0, + 8,0,8,0,20,0,20,0,34,0,34,0,34,0,65,0, + 65,0,193,128,128,128,128,128,10,1,2,10,0,254,255,192, + 3,4,4,4,0,12,128,192,96,32,8,10,10,10,1,0, + 62,103,195,3,63,99,195,195,231,123,9,14,28,11,1,0, + 192,0,192,0,192,0,192,0,222,0,227,0,193,128,193,128, + 193,128,193,128,193,128,193,0,227,0,222,0,8,10,10,10, + 1,0,62,103,195,192,192,192,192,195,103,60,9,14,28,11, + 1,0,1,128,1,128,1,128,1,128,61,128,103,128,195,128, + 193,128,193,128,193,128,193,128,65,128,99,128,29,128,9,10, + 20,11,1,0,62,0,99,0,193,0,193,128,255,128,192,0, + 192,0,67,0,103,0,62,0,6,14,14,8,1,0,28,48, + 48,48,252,48,48,48,48,48,48,48,48,48,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,65,128,115,0,62,0,8,14, + 14,10,1,0,192,192,192,192,222,231,195,195,195,195,195,195, + 195,195,2,14,14,4,1,0,192,0,0,0,192,192,192,192, + 192,192,192,192,192,192,3,18,18,5,1,252,96,0,0,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,192,7,14, + 14,9,1,0,192,192,192,192,198,204,216,240,240,248,216,204, + 198,198,2,14,14,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,14,10,20,17,1,0,222,120,231,156, + 195,12,195,12,195,12,195,12,195,12,195,12,195,12,195,12, + 8,10,10,10,1,0,222,231,195,195,195,195,195,195,195,195, + 9,10,20,11,1,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,99,0,62,0,9,14,28,11,1,252, + 222,0,227,0,193,128,193,128,193,128,193,128,193,128,193,128, + 227,0,222,0,192,0,192,0,192,0,192,0,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,1,128,1,128,1,128,5,10, + 10,7,1,0,248,224,192,192,192,192,192,192,192,192,8,10, + 10,10,1,0,124,231,195,192,124,30,3,195,230,124,6,13, + 13,8,1,0,16,48,48,252,48,48,48,48,48,48,48,48, + 28,8,10,10,10,1,0,195,195,195,195,195,195,195,195,231, + 123,10,10,20,10,0,0,192,192,96,128,97,128,49,128,51, + 0,51,0,26,0,30,0,14,0,12,0,15,10,20,15,0, + 0,195,134,99,134,99,196,98,204,38,76,54,72,52,120,28, + 120,28,48,24,48,9,10,20,10,1,0,195,0,99,0,118, + 0,60,0,24,0,28,0,60,0,102,0,195,0,195,128,10, + 14,28,10,0,252,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,24,0,24, + 0,7,10,10,9,1,0,254,6,12,28,24,48,96,96,192, + 254,6,19,19,10,2,251,12,24,16,48,48,48,48,48,96, + 224,224,48,48,48,48,16,16,24,28,1,21,21,7,3,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,19,19,10,2,251,224,112,48,48,48, + 48,48,16,24,12,28,16,48,48,48,48,48,48,224,10,2, + 4,10,0,4,120,192,207,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=22 h=25 x= 6 y=15 dx=24 dy= 0 ascent=24 len=66 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =24 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17[6799] U8G_SECTION(".progmem.u8g_font_fur17") = { + 0,31,30,254,250,17,4,5,8,170,32,255,251,24,250,17, + 251,0,0,0,7,0,0,2,17,17,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,192,192,7,7, + 7,10,2,10,206,206,198,198,196,196,196,15,17,34,17,1, + 0,1,24,3,24,3,24,3,48,6,48,63,254,6,32,4, + 96,12,96,12,64,255,248,24,192,24,128,17,128,49,128,49, + 128,49,0,11,21,42,13,1,254,4,0,4,0,63,0,127, + 128,196,192,196,192,196,0,196,0,244,0,127,0,63,192,5, + 224,4,224,4,96,196,96,196,96,228,96,127,192,63,128,4, + 0,4,0,19,17,51,21,1,0,60,2,0,126,4,0,227, + 12,0,195,8,0,195,24,0,195,16,0,195,48,0,102,96, + 0,62,71,128,0,207,192,0,152,96,1,152,96,1,24,96, + 2,24,96,6,24,96,4,15,192,12,7,128,15,17,34,17, + 1,0,15,0,63,128,48,192,48,192,49,192,59,128,31,0, + 28,24,118,24,103,24,227,152,193,216,192,240,224,112,96,120, + 123,252,31,142,2,7,7,8,3,10,192,192,192,192,192,192, + 64,4,20,20,8,2,253,48,48,96,96,96,224,192,192,192, + 192,192,192,192,192,224,96,96,96,48,48,4,20,20,8,2, + 253,192,64,96,96,96,48,48,48,48,48,48,48,48,48,48, + 96,96,96,64,192,9,9,18,15,3,8,34,0,54,0,22, + 0,28,0,255,128,156,128,20,0,54,0,34,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4, + 6,6,6,1,253,112,112,96,96,192,192,6,1,1,8,1, + 5,252,2,3,3,6,2,0,192,192,192,7,18,18,9,1, + 255,6,6,4,12,12,8,8,24,24,16,48,48,32,32,96, + 96,64,192,10,17,34,13,1,0,30,0,63,128,97,128,96, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,97,192,97,128,63,128,30,0,5,17,17,13,3, + 0,56,120,248,216,24,24,24,24,24,24,24,24,24,24,24, + 24,24,10,17,34,13,1,0,30,0,127,128,97,128,224,192, + 224,192,0,192,1,192,3,128,3,128,7,0,14,0,28,0, + 56,0,112,0,96,0,224,0,255,192,10,17,34,13,1,0, + 31,0,127,128,96,192,224,192,0,192,0,192,3,128,14,0, + 7,128,1,192,0,192,0,192,192,192,224,192,97,192,127,128, + 30,0,11,17,34,13,1,0,3,128,3,128,7,128,13,128, + 13,128,25,128,57,128,49,128,97,128,97,128,193,128,255,224, + 255,224,1,128,1,128,1,128,1,128,10,17,34,13,1,0, + 127,128,96,0,96,0,96,0,96,0,111,0,127,128,97,128, + 64,192,0,192,0,192,0,192,0,192,192,192,225,128,127,0, + 30,0,11,17,34,13,1,0,31,0,59,128,96,192,224,192, + 192,0,192,0,207,0,223,192,241,192,224,224,192,96,192,96, + 192,96,192,96,96,192,59,192,31,0,10,17,34,13,1,0, + 255,192,0,192,0,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,14,0,12,0,12,0,28,0,24,0, + 56,0,11,17,34,13,1,0,31,0,59,128,96,192,96,192, + 96,192,96,192,49,128,31,0,59,128,96,192,192,96,192,96, + 192,96,192,96,96,224,123,192,31,0,11,17,34,13,1,0, + 31,0,127,192,96,192,192,224,192,96,192,96,192,224,224,224, + 113,224,63,96,0,96,0,96,0,224,96,192,97,192,127,128, + 31,0,2,12,12,6,2,0,192,192,192,0,0,0,0,0, + 0,192,192,192,3,15,15,6,1,253,96,96,96,0,0,0, + 0,0,0,96,96,96,192,192,192,14,12,24,24,5,1,0, + 12,0,60,1,224,7,0,56,0,224,0,224,0,60,0,7, + 0,1,224,0,60,0,12,14,5,10,24,5,4,255,252,0, + 0,0,0,0,0,255,252,14,12,24,24,5,1,192,0,240, + 0,30,0,3,128,0,112,0,28,0,28,0,240,3,128,30, + 0,240,0,192,0,9,17,34,11,1,0,60,0,255,0,195, + 128,129,128,1,128,1,128,3,0,7,0,14,0,28,0,24, + 0,24,0,24,0,0,0,0,0,24,0,24,0,20,22,66, + 23,1,251,1,252,0,7,255,0,30,7,128,56,1,192,48, + 0,224,97,236,96,99,252,112,227,28,48,198,12,48,198,12, + 48,198,12,48,198,12,48,198,12,48,198,12,48,227,28,96, + 99,31,224,97,231,192,48,0,0,56,0,0,28,0,0,7, + 220,0,1,252,0,16,17,34,17,1,0,3,128,3,128,7, + 192,6,192,14,224,12,96,12,112,24,48,24,48,56,56,63, + 248,63,252,96,12,96,12,224,6,192,6,192,7,12,17,34, + 16,2,0,255,128,195,224,192,112,192,48,192,48,192,48,192, + 112,192,224,255,128,193,224,192,112,192,48,192,48,192,48,192, + 112,195,224,255,128,13,17,34,15,1,0,15,192,63,240,48, + 56,96,24,96,24,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,24,48,48,63,240,15,192,13,17,34, + 17,2,0,255,0,199,192,192,96,192,48,192,48,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,48,192,48,192, + 224,199,192,255,0,11,17,34,14,2,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,10,17,34, + 13,2,0,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,14,17,34,17,1,0,7,224,31,248,48, + 28,96,12,96,0,192,0,192,0,192,0,192,252,192,12,192, + 12,224,12,96,12,112,12,56,12,31,252,7,248,12,17,34, + 16,2,0,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,255,240,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,192,48,2,17,17,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,10,17,34,13, + 1,0,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,225,128, + 127,128,62,0,12,17,34,15,2,0,192,96,192,192,193,128, + 195,0,199,0,206,0,220,0,248,0,220,0,222,0,206,0, + 199,0,195,128,193,192,192,224,192,224,192,112,10,17,34,12, + 2,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 255,192,255,192,17,17,51,21,2,0,240,7,128,240,7,128, + 240,7,128,216,13,128,216,13,128,220,29,128,204,25,128,204, + 25,128,206,57,128,198,49,128,198,49,128,195,97,128,195,97, + 128,195,97,128,193,193,128,193,193,128,193,193,128,13,17,34, + 17,2,0,224,24,240,24,248,24,248,24,220,24,220,24,206, + 24,198,24,199,24,195,24,195,152,193,216,193,216,192,248,192, + 248,192,120,192,56,15,17,34,17,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,240,7,192,11,17,34, + 14,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 224,193,192,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,17,34,18,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,248,7,255,11,17,34, + 15,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 96,193,192,255,0,193,192,192,192,192,192,192,224,192,96,192, + 96,192,96,192,96,12,17,34,15,1,0,31,128,63,224,96, + 112,192,48,192,0,224,0,240,0,127,128,63,224,3,240,0, + 112,0,48,192,48,192,48,96,112,123,224,31,128,13,17,34, + 15,1,0,255,248,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,13,17,34,17,2,0,192,24,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,96,56,96,48,61,224,31,192,14,17,34, + 15,1,0,192,28,192,24,224,56,96,48,96,48,112,112,48, + 96,48,96,56,224,24,192,24,192,29,192,13,128,13,128,15, + 128,7,0,7,0,22,17,51,22,0,0,224,56,28,96,120, + 28,96,120,24,112,120,24,48,108,56,48,204,48,48,204,48, + 24,206,48,24,198,112,25,134,96,29,134,96,13,131,96,13, + 131,192,15,3,192,7,3,192,7,1,192,6,1,128,14,17, + 34,16,1,0,112,24,112,56,56,48,28,96,28,224,14,192, + 7,128,7,128,7,128,7,192,13,192,28,224,24,112,48,112, + 112,56,96,28,224,28,14,17,34,15,0,0,224,28,112,24, + 112,56,56,48,24,112,28,96,12,192,14,192,7,128,3,128, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,12,17, + 34,14,1,0,127,240,0,48,0,112,0,224,1,192,1,192, + 3,128,7,0,7,0,14,0,28,0,60,0,56,0,112,0, + 240,0,224,0,255,240,4,22,22,9,2,251,240,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,18,18,9,1,255,192,192,64,96,96,32,48,48, + 16,16,24,24,8,12,12,4,4,6,4,22,22,10,3,251, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,11,14,28,23,6,0,4,0,14,0, + 10,0,27,0,17,0,17,0,49,128,32,128,32,128,96,192, + 64,64,192,96,128,32,128,32,12,1,2,12,0,253,255,240, + 4,4,4,5,0,14,192,96,96,48,10,12,24,13,1,0, + 31,0,123,128,96,192,96,192,0,192,63,192,120,192,224,192, + 192,192,193,192,119,192,60,192,11,17,34,14,2,0,192,0, + 192,0,192,0,192,0,192,0,207,0,223,192,224,192,224,224, + 192,96,192,96,192,96,192,96,224,224,224,192,251,128,207,0, + 10,12,24,12,1,0,31,0,127,128,97,192,192,192,192,0, + 192,0,192,0,192,0,192,192,97,192,127,128,31,0,11,17, + 34,14,1,0,0,96,0,96,0,96,0,96,0,96,30,96, + 127,224,97,224,224,224,192,96,192,96,192,96,192,96,224,224, + 96,224,59,224,30,96,10,12,24,13,1,0,31,0,127,128, + 96,192,192,192,192,192,255,192,192,0,192,0,192,192,96,192, + 63,128,31,0,7,17,17,9,1,0,30,62,48,48,48,254, + 48,48,48,48,48,48,48,48,48,48,48,11,17,34,14,1, + 251,31,96,63,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,96,224,96,192,63, + 128,31,0,10,17,34,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,251,128,225,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,2,17,17,5,1, + 0,192,192,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,3,22,22,7,2,251,96,96,0,0,0,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,224,192,9,17, + 34,12,2,0,192,0,192,0,192,0,192,0,192,0,195,128, + 199,0,206,0,220,0,216,0,248,0,216,0,204,0,206,0, + 199,0,195,0,195,128,2,17,17,6,2,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,18,12,36, + 21,2,0,207,31,0,255,191,128,225,225,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,10,12,24,14,2,0,223,0,255, + 128,225,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,12,24,13,1,0,31,0,63,192,96, + 192,224,224,192,96,192,96,192,96,192,96,224,224,96,192,63, + 192,31,0,11,17,34,14,2,251,207,0,251,192,224,192,224, + 224,192,96,192,96,192,96,192,96,224,224,224,192,251,192,207, + 0,192,0,192,0,192,0,192,0,192,0,11,17,34,14,1, + 251,30,96,123,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,0,96,0,96,0, + 96,0,96,7,12,12,9,2,0,222,252,224,192,192,192,192, + 192,192,192,192,192,9,12,24,11,1,0,62,0,127,128,193, + 128,192,0,224,0,126,0,31,128,3,128,193,128,193,128,119, + 0,62,0,7,15,15,9,1,0,48,48,48,254,48,48,48, + 48,48,48,48,48,48,58,30,10,12,24,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,192,60,192,11,12,24,12,1,0,192,96,192,192, + 224,192,97,192,97,128,49,128,51,0,59,0,27,0,30,0, + 30,0,12,0,18,12,36,19,0,0,224,224,192,96,224,192, + 97,161,192,113,177,128,49,177,128,51,49,128,51,27,0,27, + 27,0,30,27,0,30,14,0,14,14,0,12,14,0,11,12, + 24,13,1,0,224,192,113,192,49,128,59,0,31,0,14,0, + 30,0,31,0,51,128,113,128,97,192,192,224,11,17,34,12, + 1,251,192,96,192,192,224,192,97,192,113,128,49,128,51,128, + 59,0,27,0,30,0,14,0,14,0,12,0,12,0,28,0, + 24,0,24,0,8,12,12,10,1,0,255,3,7,14,12,24, + 56,48,96,224,192,255,8,23,23,11,2,251,15,14,24,24, + 24,24,24,24,24,56,112,224,240,48,24,24,24,24,24,24, + 24,12,15,1,25,25,8,4,250,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,8,23,23,11,2,251,224,112,56,24,24,24,24,24, + 24,28,14,7,14,28,24,24,24,24,24,24,24,48,240,12, + 2,4,12,0,5,62,112,231,224,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,7,0,0, + 2,17,17,8,3,251,192,192,0,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,10,18,36,14,2,253,1,0,1, + 0,1,0,31,0,127,128,98,192,198,192,196,0,196,0,204, + 0,200,0,200,192,121,192,127,128,31,0,32,0,32,0,32, + 0,11,17,34,13,1,0,15,128,29,192,48,96,48,0,48, + 0,48,0,254,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,255,224,11,14,28,13,1,3,0, + 32,128,32,95,64,123,128,96,128,64,64,64,64,64,64,64, + 64,96,128,113,128,95,64,128,32,0,32,12,17,34,14,1, + 0,192,48,96,96,96,96,48,224,48,192,249,240,25,128,15, + 128,15,0,255,240,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,1,22,22,8,4,251,128,128,128,128,128,128,128, + 128,128,0,0,0,0,128,128,128,128,128,128,128,128,128,8, + 21,21,10,1,252,62,126,192,192,192,112,120,62,119,227,195, + 199,238,124,30,7,3,3,3,142,252,7,2,2,7,0,15, + 198,198,17,17,51,19,1,0,3,224,0,15,120,0,56,14, + 0,35,242,0,71,57,0,78,25,0,140,0,128,140,0,128, + 140,0,128,140,0,128,140,24,128,70,57,0,67,241,0,32, + 2,0,48,6,0,12,24,0,3,224,0,9,11,22,9,0, + 6,62,0,127,0,97,0,1,0,63,0,113,0,65,0,67, + 0,61,0,0,0,255,128,9,9,18,13,2,1,49,128,51, + 0,99,0,230,0,204,0,230,0,99,0,51,0,17,128,12, + 5,10,14,1,5,255,240,0,16,0,16,0,16,0,16,255, + 17,17,51,19,1,0,3,224,0,15,120,0,56,14,0,39, + 242,0,70,57,0,70,25,0,134,24,128,135,224,128,134,48, + 128,134,16,128,134,24,128,70,25,0,70,25,0,32,2,0, + 56,14,0,15,120,0,3,224,0,7,1,1,7,0,15,254, + 5,6,6,7,1,11,112,216,136,136,216,112,14,14,28,24, + 5,0,2,0,2,0,2,0,2,0,255,252,2,0,2,0, + 2,0,2,0,2,0,0,0,0,0,0,0,255,252,7,9, + 9,9,1,8,60,126,198,6,12,24,48,224,254,7,9,9, + 9,1,8,60,126,198,14,24,14,6,206,124,3,4,4,5, + 2,14,96,96,192,128,255,10,21,42,13,1,252,31,192,60, + 128,124,128,252,128,252,128,252,128,124,128,124,128,60,128,4, + 128,4,128,4,128,4,128,4,128,4,128,4,128,4,128,4, + 128,4,128,4,128,4,128,2,3,3,6,2,7,192,192,192, + 6,5,5,6,1,250,64,120,12,12,252,3,9,9,7,2, + 8,96,224,32,32,32,32,32,32,32,8,11,11,10,1,6, + 60,126,195,193,193,193,195,98,124,0,255,9,9,18,13,2, + 1,204,0,102,0,99,0,51,0,57,128,51,0,99,0,102, + 0,204,0,15,17,34,18,2,0,96,48,224,32,32,96,32, + 64,32,192,32,128,33,0,35,0,34,24,6,24,4,40,12, + 72,8,200,16,254,48,8,32,8,96,8,16,17,34,19,2, + 0,96,16,224,48,32,32,32,96,32,192,32,128,33,128,33, + 0,35,62,6,119,4,99,12,3,8,6,24,28,16,48,32, + 96,96,127,17,17,51,19,1,0,124,4,0,254,12,0,6, + 8,0,24,16,0,30,48,0,6,32,0,198,96,0,206,64, + 0,124,198,0,1,134,0,1,10,0,3,26,0,2,50,0, + 6,63,128,4,2,0,8,2,0,24,2,0,10,17,34,12, + 1,251,6,0,6,0,0,0,0,0,6,0,6,0,6,0, + 14,0,28,0,112,0,96,0,192,0,192,0,192,192,241,192, + 127,128,31,0,16,23,46,17,1,0,14,0,6,0,3,0, + 1,0,0,0,0,0,3,128,3,128,7,192,6,192,14,224, + 12,96,12,112,24,48,24,48,56,56,63,248,63,252,96,12, + 96,12,224,6,192,6,192,7,16,23,46,17,1,0,0,96, + 0,192,0,128,1,0,0,0,0,0,3,128,3,128,7,192, + 6,192,14,224,12,96,12,112,24,48,24,48,56,56,63,248, + 63,252,96,12,96,12,224,6,192,6,192,7,16,23,46,17, + 1,0,3,128,3,192,6,192,4,96,0,0,0,0,3,128, + 3,128,7,192,6,192,14,224,12,96,12,112,24,48,24,48, + 56,56,63,248,63,252,96,12,96,12,224,6,192,6,192,7, + 16,22,44,17,1,0,7,96,13,192,0,0,0,0,0,0, + 3,128,3,128,7,192,6,192,14,224,12,96,12,112,24,48, + 24,48,56,56,63,248,63,252,96,12,96,12,224,6,192,6, + 192,7,16,22,44,18,1,0,6,48,6,48,0,0,0,0, + 0,0,1,192,3,192,3,224,7,96,6,96,6,112,12,48, + 12,56,28,24,24,28,63,252,63,252,48,6,96,6,96,7, + 224,3,192,3,16,24,48,17,1,0,3,128,6,192,4,64, + 4,64,3,128,0,0,0,0,3,128,3,128,7,192,6,192, + 6,224,12,96,12,112,28,48,24,48,24,24,63,248,63,252, + 96,12,96,12,224,6,192,6,192,7,21,17,51,23,1,0, + 0,255,248,0,240,0,1,240,0,1,176,0,3,176,0,3, + 48,0,7,48,0,6,48,0,14,63,248,12,48,0,28,48, + 0,31,240,0,56,48,0,48,48,0,112,48,0,96,48,0, + 192,63,248,13,22,44,15,1,251,15,192,63,240,48,56,96, + 24,96,24,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,96,0,96,24,112,48,63,240,15,192,2,0,3,192,0, + 224,0,96,7,224,11,23,46,14,2,0,48,0,24,0,12, + 0,4,0,0,0,0,0,255,224,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,255,224,11,23,46,14,2,0,3, + 0,6,0,6,0,12,0,0,0,0,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,11,23,46, + 14,2,0,30,0,30,0,51,0,33,0,0,0,0,0,255, + 224,192,0,192,0,192,0,192,0,192,0,192,0,192,0,255, + 192,192,0,192,0,192,0,192,0,192,0,192,0,192,0,255, + 224,11,22,44,14,2,0,51,0,51,0,0,0,0,0,0, + 0,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,192,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,224,4,23,23,6,0,0,192,96,48,16,0,0,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 4,23,23,6,2,0,48,96,64,192,0,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,6,23,23, + 6,0,0,56,120,76,196,0,0,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,7,22,22,7,0,0, + 198,198,0,0,0,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,15,17,34,17,0,0,63,192,49,240, + 48,56,48,12,48,12,48,6,48,6,48,6,255,6,48,6, + 48,6,48,6,48,12,48,28,48,56,49,240,63,192,13,22, + 44,17,2,0,14,192,31,128,0,0,0,0,0,0,224,24, + 240,24,248,24,248,24,220,24,220,24,206,24,198,24,199,24, + 195,24,195,152,193,216,193,216,192,248,192,248,192,120,192,56, + 15,24,48,17,1,0,14,0,6,0,3,0,1,0,1,128, + 0,0,0,0,7,192,30,240,48,24,96,12,96,12,192,6, + 192,6,192,6,192,6,192,6,192,6,224,14,96,12,96,12, + 48,24,30,240,7,192,15,24,48,17,1,0,0,224,0,192, + 1,128,1,0,3,0,0,0,0,0,7,192,30,240,48,24, + 96,12,96,12,192,6,192,6,192,6,192,6,192,6,192,6, + 224,14,96,12,96,12,48,24,30,240,7,192,15,24,48,17, + 1,0,3,128,3,128,6,192,4,64,12,32,0,0,0,0, + 7,192,30,240,48,24,96,12,96,12,192,6,192,6,192,6, + 192,6,192,6,192,6,224,14,96,12,96,12,48,24,30,240, + 7,192,15,22,44,17,1,0,7,96,13,192,0,0,0,0, + 0,0,7,192,30,240,48,24,96,12,96,12,192,6,192,6, + 192,6,192,6,192,6,192,6,224,14,96,12,112,28,56,56, + 31,240,7,192,15,22,44,17,1,0,6,96,6,96,0,0, + 0,0,0,0,7,192,30,240,48,24,96,12,96,12,192,6, + 192,6,192,6,192,6,192,6,192,6,224,14,96,12,96,12, + 48,24,30,240,7,192,13,12,24,23,5,1,192,24,96,48, + 48,96,24,192,13,128,7,0,7,0,13,128,24,192,48,96, + 96,48,192,24,15,21,42,17,1,254,0,4,0,14,7,236, + 30,248,48,60,96,60,96,110,192,230,192,198,193,198,195,134, + 195,6,199,6,238,14,108,12,124,12,120,24,62,240,111,192, + 224,0,64,0,13,24,48,17,2,0,28,0,12,0,6,0, + 2,0,1,0,0,0,0,0,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 224,24,96,56,112,112,63,224,31,192,13,24,48,17,2,0, + 1,192,1,128,3,0,2,0,6,0,0,0,0,0,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,224,24,96,56,112,112,63,224,31,192, + 13,24,48,17,2,0,7,0,7,0,13,128,8,128,24,64, + 0,0,0,0,192,24,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,224,24,96,56, + 112,112,63,224,31,192,13,22,44,17,2,0,12,192,12,192, + 0,0,0,0,0,0,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 96,56,96,48,61,224,31,192,14,23,46,15,0,0,0,192, + 1,128,1,128,3,0,0,0,0,0,224,28,112,24,112,56, + 56,48,24,112,28,96,12,192,14,192,7,128,3,128,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,11,17,34,14, + 2,0,192,0,192,0,192,0,192,0,255,128,193,192,192,224, + 192,96,192,96,192,96,193,192,255,128,192,0,192,0,192,0, + 192,0,192,0,12,17,34,13,1,0,31,0,127,128,224,192, + 192,192,193,192,195,128,199,0,198,0,198,0,195,128,193,224, + 192,112,192,48,192,48,204,48,207,96,195,192,10,18,36,13, + 1,0,24,0,12,0,4,0,6,0,0,0,0,0,31,0, + 123,128,96,192,96,192,0,192,63,192,120,192,224,192,192,192, + 193,192,119,192,60,192,10,19,38,13,1,0,3,0,6,0, + 6,0,12,0,8,0,0,0,0,0,31,0,123,128,96,192, + 96,192,0,192,63,192,120,192,224,192,192,192,193,192,119,192, + 60,192,10,19,38,13,1,0,14,0,14,0,27,0,51,0, + 33,128,0,0,0,0,31,0,123,128,96,192,96,192,0,192, + 63,192,120,192,224,192,192,192,193,192,119,192,60,192,10,17, + 34,13,1,0,29,128,63,0,0,0,0,0,0,0,31,0, + 123,128,96,192,0,192,7,192,63,192,112,192,192,192,193,192, + 193,192,119,192,60,192,10,17,34,13,1,0,49,128,49,128, + 0,0,0,0,0,0,31,0,123,128,96,192,96,192,0,192, + 63,192,120,192,224,192,192,192,193,192,119,192,60,192,10,20, + 40,13,1,0,14,0,27,0,17,0,17,0,27,0,14,0, + 0,0,0,0,31,0,123,128,96,192,96,192,0,192,63,192, + 120,192,224,192,192,192,193,192,119,192,62,192,18,12,36,20, + 1,0,30,31,0,127,191,128,97,225,128,0,224,192,0,192, + 192,63,255,192,120,192,0,224,192,0,192,224,192,193,225,128, + 127,63,128,62,31,0,10,17,34,12,1,251,31,0,127,128, + 97,192,192,192,192,0,192,0,192,0,192,0,192,192,97,192, + 127,128,31,0,8,0,15,0,3,128,1,128,31,0,10,19, + 38,13,1,0,48,0,24,0,8,0,12,0,6,0,0,0, + 0,0,31,0,127,128,96,192,192,192,192,192,255,192,192,0, + 192,0,192,192,96,192,63,128,31,0,10,19,38,13,1,0, + 3,0,7,0,6,0,12,0,8,0,0,0,0,0,31,0, + 127,128,96,192,192,192,192,192,255,192,192,0,192,0,192,192, + 96,192,63,128,31,0,10,19,38,13,1,0,12,0,30,0, + 26,0,51,0,33,0,0,0,0,0,31,0,127,128,96,192, + 192,192,192,192,255,192,192,0,192,0,192,192,96,192,63,128, + 31,0,11,17,34,13,1,0,49,128,49,128,0,0,0,0, + 0,0,31,0,59,192,96,192,224,96,192,96,255,224,192,0, + 192,0,192,96,96,192,59,192,31,0,4,18,18,6,0,0, + 192,96,48,16,0,0,48,48,48,48,48,48,48,48,48,48, + 48,48,4,18,18,6,2,0,48,96,192,128,0,0,192,192, + 192,192,192,192,192,192,192,192,192,192,6,18,18,6,0,0, + 120,120,204,132,0,0,48,48,48,48,48,48,48,48,48,48, + 48,48,6,17,17,5,255,0,204,204,0,0,0,48,48,48, + 48,48,48,48,48,48,48,48,48,11,17,34,13,1,0,97, + 128,63,0,30,0,119,0,3,128,31,192,127,192,96,224,224, + 96,192,96,192,96,192,96,192,96,224,96,96,192,63,192,31, + 0,10,17,34,14,2,0,25,0,63,0,0,0,0,0,0, + 0,223,0,255,128,225,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,11,19,38,13,1,0,56, + 0,24,0,12,0,4,0,2,0,0,0,0,0,31,0,63, + 192,96,192,224,224,192,96,192,96,192,96,192,96,224,224,96, + 192,63,192,31,0,11,19,38,13,1,0,3,128,3,0,6, + 0,4,0,12,0,0,0,0,0,31,0,63,192,96,192,224, + 224,192,96,192,96,192,96,192,96,224,224,96,192,63,192,31, + 0,11,19,38,13,1,0,14,0,14,0,27,0,17,0,49, + 128,0,0,0,0,31,0,63,192,96,192,224,224,192,96,192, + 96,192,96,192,96,224,224,96,192,63,192,31,0,11,17,34, + 13,1,0,29,128,63,0,0,0,0,0,0,0,31,0,63, + 192,96,192,224,224,192,96,192,96,192,96,192,96,224,224,96, + 192,63,192,31,0,11,17,34,13,1,0,49,128,49,128,0, + 0,0,0,0,0,31,0,63,192,96,192,224,224,192,96,192, + 96,192,96,192,96,224,224,96,192,63,192,31,0,14,10,20, + 24,5,2,3,0,3,0,3,0,0,0,0,0,255,252,0, + 0,3,0,3,0,3,0,11,15,30,13,1,254,0,32,0, + 96,31,192,63,192,97,192,227,224,194,96,198,96,204,96,216, + 96,248,224,112,192,123,192,95,0,192,0,10,19,38,14,2, + 0,48,0,24,0,24,0,12,0,4,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,225,192,119,192,60,192,10,19,38,14,2,0,3,0,6, + 0,6,0,12,0,8,0,0,0,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,119, + 192,60,192,10,19,38,14,2,0,12,0,30,0,30,0,51, + 0,33,0,0,0,0,0,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,225,192,119,192,60,192,10, + 17,34,14,2,0,51,0,51,0,0,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,11,23,46,12,1,251,3,0,3, + 0,6,0,12,0,0,0,0,0,192,96,192,192,224,192,97, + 192,113,128,49,128,51,128,59,0,27,0,30,0,14,0,14, + 0,12,0,12,0,220,0,248,0,112,0,11,22,44,14,2, + 251,192,0,192,0,192,0,192,0,192,0,207,0,251,192,224, + 192,224,224,192,96,192,96,192,96,192,96,224,224,224,192,251, + 192,207,0,192,0,192,0,192,0,192,0,192,0,11,22,44, + 13,1,251,49,128,49,128,0,0,0,0,0,0,192,96,224, + 96,96,224,96,192,113,192,49,128,57,128,27,128,27,0,31, + 0,14,0,14,0,14,0,12,0,12,0,28,0,24,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 17 + Calculated Max Values w=14 h=18 x= 5 y= 8 dx=24 dy= 0 ascent=17 len=34 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =17 descent= 0 + X Font ascent =17 descent= 0 + Max Font ascent =17 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17n[510] U8G_SECTION(".progmem.u8g_font_fur17n") = { + 0,31,30,254,250,17,0,0,0,0,42,57,0,17,253,17, + 0,9,9,18,15,3,8,34,0,54,0,22,0,28,0,255, + 128,156,128,20,0,54,0,34,0,14,14,28,24,5,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,252,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,4,6,6,6,1, + 253,112,112,96,96,192,192,6,1,1,8,1,5,252,2,3, + 3,6,2,0,192,192,192,7,18,18,9,1,255,6,6,4, + 12,12,8,8,24,24,16,48,48,32,32,96,96,64,192,10, + 17,34,13,1,0,30,0,63,128,97,128,96,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,97, + 192,97,128,63,128,30,0,5,17,17,13,3,0,56,120,248, + 216,24,24,24,24,24,24,24,24,24,24,24,24,24,10,17, + 34,13,1,0,30,0,127,128,97,128,224,192,224,192,0,192, + 1,192,3,128,3,128,7,0,14,0,28,0,56,0,112,0, + 96,0,224,0,255,192,10,17,34,13,1,0,31,0,127,128, + 96,192,224,192,0,192,0,192,3,128,14,0,7,128,1,192, + 0,192,0,192,192,192,224,192,97,192,127,128,30,0,11,17, + 34,13,1,0,3,128,3,128,7,128,13,128,13,128,25,128, + 57,128,49,128,97,128,97,128,193,128,255,224,255,224,1,128, + 1,128,1,128,1,128,10,17,34,13,1,0,127,128,96,0, + 96,0,96,0,96,0,111,0,127,128,97,128,64,192,0,192, + 0,192,0,192,0,192,192,192,225,128,127,0,30,0,11,17, + 34,13,1,0,31,0,59,128,96,192,224,192,192,0,192,0, + 207,0,223,192,241,192,224,224,192,96,192,96,192,96,192,96, + 96,192,59,192,31,0,10,17,34,13,1,0,255,192,0,192, + 0,192,1,128,1,128,3,128,3,0,3,0,7,0,6,0, + 6,0,14,0,12,0,12,0,28,0,24,0,56,0,11,17, + 34,13,1,0,31,0,59,128,96,192,96,192,96,192,96,192, + 49,128,31,0,59,128,96,192,192,96,192,96,192,96,192,96, + 96,224,123,192,31,0,11,17,34,13,1,0,31,0,127,192, + 96,192,192,224,192,96,192,96,192,224,224,224,113,224,63,96, + 0,96,0,96,0,224,96,192,97,192,127,128,31,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=22 h=25 x= 6 y=14 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17r[3146] U8G_SECTION(".progmem.u8g_font_fur17r") = { + 0,31,30,254,250,17,4,5,8,170,32,127,251,19,250,17, + 251,0,0,0,7,0,0,2,17,17,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,192,192,7,7, + 7,10,2,10,206,206,198,198,196,196,196,15,17,34,17,1, + 0,1,24,3,24,3,24,3,48,6,48,63,254,6,32,4, + 96,12,96,12,64,255,248,24,192,24,128,17,128,49,128,49, + 128,49,0,11,21,42,13,1,254,4,0,4,0,63,0,127, + 128,196,192,196,192,196,0,196,0,244,0,127,0,63,192,5, + 224,4,224,4,96,196,96,196,96,228,96,127,192,63,128,4, + 0,4,0,19,17,51,21,1,0,60,2,0,126,4,0,227, + 12,0,195,8,0,195,24,0,195,16,0,195,48,0,102,96, + 0,62,71,128,0,207,192,0,152,96,1,152,96,1,24,96, + 2,24,96,6,24,96,4,15,192,12,7,128,15,17,34,17, + 1,0,15,0,63,128,48,192,48,192,49,192,59,128,31,0, + 28,24,118,24,103,24,227,152,193,216,192,240,224,112,96,120, + 123,252,31,142,2,7,7,8,3,10,192,192,192,192,192,192, + 64,4,20,20,8,2,253,48,48,96,96,96,224,192,192,192, + 192,192,192,192,192,224,96,96,96,48,48,4,20,20,8,2, + 253,192,64,96,96,96,48,48,48,48,48,48,48,48,48,48, + 96,96,96,64,192,9,9,18,15,3,8,34,0,54,0,22, + 0,28,0,255,128,156,128,20,0,54,0,34,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4, + 6,6,6,1,253,112,112,96,96,192,192,6,1,1,8,1, + 5,252,2,3,3,6,2,0,192,192,192,7,18,18,9,1, + 255,6,6,4,12,12,8,8,24,24,16,48,48,32,32,96, + 96,64,192,10,17,34,13,1,0,30,0,63,128,97,128,96, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,97,192,97,128,63,128,30,0,5,17,17,13,3, + 0,56,120,248,216,24,24,24,24,24,24,24,24,24,24,24, + 24,24,10,17,34,13,1,0,30,0,127,128,97,128,224,192, + 224,192,0,192,1,192,3,128,3,128,7,0,14,0,28,0, + 56,0,112,0,96,0,224,0,255,192,10,17,34,13,1,0, + 31,0,127,128,96,192,224,192,0,192,0,192,3,128,14,0, + 7,128,1,192,0,192,0,192,192,192,224,192,97,192,127,128, + 30,0,11,17,34,13,1,0,3,128,3,128,7,128,13,128, + 13,128,25,128,57,128,49,128,97,128,97,128,193,128,255,224, + 255,224,1,128,1,128,1,128,1,128,10,17,34,13,1,0, + 127,128,96,0,96,0,96,0,96,0,111,0,127,128,97,128, + 64,192,0,192,0,192,0,192,0,192,192,192,225,128,127,0, + 30,0,11,17,34,13,1,0,31,0,59,128,96,192,224,192, + 192,0,192,0,207,0,223,192,241,192,224,224,192,96,192,96, + 192,96,192,96,96,192,59,192,31,0,10,17,34,13,1,0, + 255,192,0,192,0,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,14,0,12,0,12,0,28,0,24,0, + 56,0,11,17,34,13,1,0,31,0,59,128,96,192,96,192, + 96,192,96,192,49,128,31,0,59,128,96,192,192,96,192,96, + 192,96,192,96,96,224,123,192,31,0,11,17,34,13,1,0, + 31,0,127,192,96,192,192,224,192,96,192,96,192,224,224,224, + 113,224,63,96,0,96,0,96,0,224,96,192,97,192,127,128, + 31,0,2,12,12,6,2,0,192,192,192,0,0,0,0,0, + 0,192,192,192,3,15,15,6,1,253,96,96,96,0,0,0, + 0,0,0,96,96,96,192,192,192,14,12,24,24,5,1,0, + 12,0,60,1,224,7,0,56,0,224,0,224,0,60,0,7, + 0,1,224,0,60,0,12,14,5,10,24,5,4,255,252,0, + 0,0,0,0,0,255,252,14,12,24,24,5,1,192,0,240, + 0,30,0,3,128,0,112,0,28,0,28,0,240,3,128,30, + 0,240,0,192,0,9,17,34,11,1,0,60,0,255,0,195, + 128,129,128,1,128,1,128,3,0,7,0,14,0,28,0,24, + 0,24,0,24,0,0,0,0,0,24,0,24,0,20,22,66, + 23,1,251,1,252,0,7,255,0,30,7,128,56,1,192,48, + 0,224,97,236,96,99,252,112,227,28,48,198,12,48,198,12, + 48,198,12,48,198,12,48,198,12,48,198,12,48,227,28,96, + 99,31,224,97,231,192,48,0,0,56,0,0,28,0,0,7, + 220,0,1,252,0,16,17,34,17,1,0,3,128,3,128,7, + 192,6,192,14,224,12,96,12,112,24,48,24,48,56,56,63, + 248,63,252,96,12,96,12,224,6,192,6,192,7,12,17,34, + 16,2,0,255,128,195,224,192,112,192,48,192,48,192,48,192, + 112,192,224,255,128,193,224,192,112,192,48,192,48,192,48,192, + 112,195,224,255,128,13,17,34,15,1,0,15,192,63,240,48, + 56,96,24,96,24,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,24,48,48,63,240,15,192,13,17,34, + 17,2,0,255,0,199,192,192,96,192,48,192,48,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,48,192,48,192, + 224,199,192,255,0,11,17,34,14,2,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,10,17,34, + 13,2,0,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,14,17,34,17,1,0,7,224,31,248,48, + 28,96,12,96,0,192,0,192,0,192,0,192,252,192,12,192, + 12,224,12,96,12,112,12,56,12,31,252,7,248,12,17,34, + 16,2,0,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,255,240,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,192,48,2,17,17,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,10,17,34,13, + 1,0,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,225,128, + 127,128,62,0,12,17,34,15,2,0,192,96,192,192,193,128, + 195,0,199,0,206,0,220,0,248,0,220,0,222,0,206,0, + 199,0,195,128,193,192,192,224,192,224,192,112,10,17,34,12, + 2,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 255,192,255,192,17,17,51,21,2,0,240,7,128,240,7,128, + 240,7,128,216,13,128,216,13,128,220,29,128,204,25,128,204, + 25,128,206,57,128,198,49,128,198,49,128,195,97,128,195,97, + 128,195,97,128,193,193,128,193,193,128,193,193,128,13,17,34, + 17,2,0,224,24,240,24,248,24,248,24,220,24,220,24,206, + 24,198,24,199,24,195,24,195,152,193,216,193,216,192,248,192, + 248,192,120,192,56,15,17,34,17,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,240,7,192,11,17,34, + 14,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 224,193,192,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,17,34,18,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,248,7,255,11,17,34, + 15,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 96,193,192,255,0,193,192,192,192,192,192,192,224,192,96,192, + 96,192,96,192,96,12,17,34,15,1,0,31,128,63,224,96, + 112,192,48,192,0,224,0,240,0,127,128,63,224,3,240,0, + 112,0,48,192,48,192,48,96,112,123,224,31,128,13,17,34, + 15,1,0,255,248,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,13,17,34,17,2,0,192,24,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,96,56,96,48,61,224,31,192,14,17,34, + 15,1,0,192,28,192,24,224,56,96,48,96,48,112,112,48, + 96,48,96,56,224,24,192,24,192,29,192,13,128,13,128,15, + 128,7,0,7,0,22,17,51,22,0,0,224,56,28,96,120, + 28,96,120,24,112,120,24,48,108,56,48,204,48,48,204,48, + 24,206,48,24,198,112,25,134,96,29,134,96,13,131,96,13, + 131,192,15,3,192,7,3,192,7,1,192,6,1,128,14,17, + 34,16,1,0,112,24,112,56,56,48,28,96,28,224,14,192, + 7,128,7,128,7,128,7,192,13,192,28,224,24,112,48,112, + 112,56,96,28,224,28,14,17,34,15,0,0,224,28,112,24, + 112,56,56,48,24,112,28,96,12,192,14,192,7,128,3,128, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,12,17, + 34,14,1,0,127,240,0,48,0,112,0,224,1,192,1,192, + 3,128,7,0,7,0,14,0,28,0,60,0,56,0,112,0, + 240,0,224,0,255,240,4,22,22,9,2,251,240,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,18,18,9,1,255,192,192,64,96,96,32,48,48, + 16,16,24,24,8,12,12,4,4,6,4,22,22,10,3,251, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,11,14,28,23,6,0,4,0,14,0, + 10,0,27,0,17,0,17,0,49,128,32,128,32,128,96,192, + 64,64,192,96,128,32,128,32,12,1,2,12,0,253,255,240, + 4,4,4,5,0,14,192,96,96,48,10,12,24,13,1,0, + 31,0,123,128,96,192,96,192,0,192,63,192,120,192,224,192, + 192,192,193,192,119,192,60,192,11,17,34,14,2,0,192,0, + 192,0,192,0,192,0,192,0,207,0,223,192,224,192,224,224, + 192,96,192,96,192,96,192,96,224,224,224,192,251,128,207,0, + 10,12,24,12,1,0,31,0,127,128,97,192,192,192,192,0, + 192,0,192,0,192,0,192,192,97,192,127,128,31,0,11,17, + 34,14,1,0,0,96,0,96,0,96,0,96,0,96,30,96, + 127,224,97,224,224,224,192,96,192,96,192,96,192,96,224,224, + 96,224,59,224,30,96,10,12,24,13,1,0,31,0,127,128, + 96,192,192,192,192,192,255,192,192,0,192,0,192,192,96,192, + 63,128,31,0,7,17,17,9,1,0,30,62,48,48,48,254, + 48,48,48,48,48,48,48,48,48,48,48,11,17,34,14,1, + 251,31,96,63,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,96,224,96,192,63, + 128,31,0,10,17,34,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,251,128,225,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,2,17,17,5,1, + 0,192,192,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,3,22,22,7,2,251,96,96,0,0,0,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,224,192,9,17, + 34,12,2,0,192,0,192,0,192,0,192,0,192,0,195,128, + 199,0,206,0,220,0,216,0,248,0,216,0,204,0,206,0, + 199,0,195,0,195,128,2,17,17,6,2,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,18,12,36, + 21,2,0,207,31,0,255,191,128,225,225,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,10,12,24,14,2,0,223,0,255, + 128,225,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,12,24,13,1,0,31,0,63,192,96, + 192,224,224,192,96,192,96,192,96,192,96,224,224,96,192,63, + 192,31,0,11,17,34,14,2,251,207,0,251,192,224,192,224, + 224,192,96,192,96,192,96,192,96,224,224,224,192,251,192,207, + 0,192,0,192,0,192,0,192,0,192,0,11,17,34,14,1, + 251,30,96,123,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,0,96,0,96,0, + 96,0,96,7,12,12,9,2,0,222,252,224,192,192,192,192, + 192,192,192,192,192,9,12,24,11,1,0,62,0,127,128,193, + 128,192,0,224,0,126,0,31,128,3,128,193,128,193,128,119, + 0,62,0,7,15,15,9,1,0,48,48,48,254,48,48,48, + 48,48,48,48,48,48,58,30,10,12,24,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,192,60,192,11,12,24,12,1,0,192,96,192,192, + 224,192,97,192,97,128,49,128,51,0,59,0,27,0,30,0, + 30,0,12,0,18,12,36,19,0,0,224,224,192,96,224,192, + 97,161,192,113,177,128,49,177,128,51,49,128,51,27,0,27, + 27,0,30,27,0,30,14,0,14,14,0,12,14,0,11,12, + 24,13,1,0,224,192,113,192,49,128,59,0,31,0,14,0, + 30,0,31,0,51,128,113,128,97,192,192,224,11,17,34,12, + 1,251,192,96,192,192,224,192,97,192,113,128,49,128,51,128, + 59,0,27,0,30,0,14,0,14,0,12,0,12,0,28,0, + 24,0,24,0,8,12,12,10,1,0,255,3,7,14,12,24, + 56,48,96,224,192,255,8,23,23,11,2,251,15,14,24,24, + 24,24,24,24,24,56,112,224,240,48,24,24,24,24,24,24, + 24,12,15,1,25,25,8,4,250,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,8,23,23,11,2,251,224,112,56,24,24,24,24,24, + 24,28,14,7,14,28,24,24,24,24,24,24,24,48,240,12, + 2,4,12,0,5,62,112,231,224,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=26 h=29 x= 7 y=17 dx=29 dy= 0 ascent=28 len=96 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =28 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20[8654] U8G_SECTION(".progmem.u8g_font_fur20") = { + 0,38,35,254,249,20,5,12,11,23,32,255,251,28,249,20, + 251,0,0,0,8,0,0,3,20,20,11,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,0,0,224,224, + 224,9,8,16,13,2,12,227,128,227,128,227,0,227,0,227, + 0,195,0,195,0,67,0,18,20,60,21,1,0,0,195,0, + 0,195,0,0,195,0,1,198,0,1,134,0,1,134,0,31, + 255,192,63,255,192,3,12,0,3,24,0,6,24,0,6,24, + 0,127,255,128,255,255,0,12,48,0,12,48,0,28,96,0, + 24,96,0,24,96,0,24,192,0,14,25,50,16,1,253,2, + 0,2,0,31,192,63,224,114,112,98,48,226,56,226,0,226, + 0,114,0,126,0,63,224,15,240,2,248,2,56,2,28,226, + 28,226,28,226,24,114,56,127,240,31,192,2,0,2,0,2, + 0,23,20,60,25,1,0,30,0,192,127,128,192,97,129,128, + 225,193,0,225,195,0,225,198,0,225,198,0,97,140,0,127, + 136,0,30,24,224,0,49,248,0,51,156,0,103,14,0,71, + 14,0,199,14,1,135,14,1,135,14,3,3,12,2,3,252, + 6,0,240,19,20,60,22,2,0,7,192,0,31,240,0,56, + 48,0,56,48,0,56,48,0,56,112,0,29,224,0,15,192, + 0,31,3,128,63,131,128,115,195,128,225,227,128,224,243,0, + 224,123,0,224,63,0,224,30,0,112,15,0,120,31,128,63, + 251,192,15,225,224,3,8,8,10,4,12,224,224,192,192,192, + 192,192,192,5,24,24,10,3,252,24,48,48,112,112,96,96, + 224,224,224,224,224,224,224,224,224,224,96,96,112,112,48,48, + 24,5,24,24,10,3,252,192,192,96,96,96,112,112,48,48, + 48,56,56,56,56,48,48,48,112,112,96,96,96,192,192,11, + 11,22,19,4,9,17,0,49,128,27,0,27,0,14,0,255, + 224,142,32,27,0,27,0,49,128,17,0,17,16,48,29,6, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,1,128,0,255,255,128,255,255,128,1,128,0,1, + 128,0,1,128,0,1,128,0,1,128,0,1,128,0,1,128, + 0,5,7,7,8,1,253,56,56,112,112,96,96,224,7,2, + 2,9,1,6,254,254,3,3,3,8,3,0,224,224,224,8, + 21,21,11,2,255,3,6,6,6,4,12,12,12,24,24,24, + 48,48,48,96,96,96,64,192,192,192,13,20,40,16,1,0, + 15,128,63,192,112,224,96,112,96,112,224,48,224,48,224,56, + 224,56,224,56,224,56,224,56,224,56,224,48,224,48,96,112, + 112,112,48,224,63,192,15,128,7,20,20,16,4,0,30,62, + 126,254,206,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,12,20,40,16,2,0,31,128,63,192,112,96,112,112, + 224,112,0,112,0,112,0,112,0,224,1,224,3,192,3,128, + 7,0,14,0,28,0,60,0,120,0,240,0,255,240,255,240, + 13,20,40,16,1,0,15,128,63,224,112,112,112,48,224,56, + 0,56,0,48,0,224,7,192,7,192,0,224,0,112,0,56, + 0,56,224,56,224,56,224,56,112,112,63,224,31,128,14,20, + 40,16,1,0,0,240,1,240,1,240,3,240,7,112,6,112, + 14,112,28,112,24,112,56,112,112,112,96,112,224,112,255,252, + 255,252,0,112,0,112,0,112,0,112,0,112,13,20,40,16, + 1,0,255,224,255,224,224,0,224,0,224,0,224,0,224,0, + 239,128,255,224,240,112,224,112,224,48,0,56,0,56,0,56, + 224,48,224,112,112,224,127,192,31,128,13,20,40,16,1,0, + 15,192,63,224,120,112,112,48,224,56,224,0,224,0,231,192, + 255,224,248,240,224,56,224,56,224,56,224,56,224,56,224,56, + 96,48,48,112,63,224,15,128,12,20,40,16,2,0,255,240, + 255,240,0,112,0,112,0,96,0,224,0,224,1,192,1,192, + 1,128,3,128,3,128,3,0,7,0,7,0,14,0,14,0, + 14,0,28,0,28,0,13,20,40,16,1,0,15,128,63,224, + 112,112,224,48,224,56,224,56,96,48,112,112,31,192,31,192, + 56,96,96,48,224,56,224,56,224,56,224,56,224,56,112,112, + 63,224,15,128,13,20,40,16,1,0,31,192,63,224,112,112, + 224,56,224,56,224,56,224,56,224,56,224,56,112,120,63,248, + 31,56,0,56,0,56,0,56,96,48,96,112,112,224,63,192, + 31,128,3,14,14,8,3,0,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,4,17,17,8,2,253,112,112,112,0, + 0,0,0,0,0,0,112,112,96,224,192,192,192,17,14,42, + 29,6,1,0,1,128,0,15,128,0,124,0,1,224,0,15, + 0,0,120,0,0,224,0,0,240,0,0,62,0,0,7,128, + 0,0,240,0,0,62,0,0,7,128,0,0,128,17,7,21, + 29,6,5,255,255,128,255,255,128,0,0,0,0,0,0,0, + 0,0,255,255,128,255,255,128,17,14,42,29,6,1,192,0, + 0,248,0,0,31,0,0,3,192,0,0,120,0,0,15,0, + 0,3,128,0,7,128,0,62,0,0,240,0,7,128,0,62, + 0,0,240,0,0,128,0,0,12,20,40,15,1,0,31,0, + 63,192,127,224,224,240,64,112,0,112,0,112,0,96,0,192, + 3,128,7,0,14,0,14,0,14,0,14,0,0,0,0,0, + 14,0,14,0,14,0,25,24,96,28,2,252,0,127,0,0, + 3,255,224,0,15,129,248,0,30,0,60,0,56,0,14,0, + 48,0,6,0,112,125,199,0,96,255,199,0,225,195,195,0, + 227,131,195,0,227,129,195,128,227,129,195,128,227,129,195,128, + 227,129,195,0,227,129,195,0,225,131,199,0,113,199,206,0, + 112,252,252,0,56,56,48,0,60,0,0,0,30,0,0,0, + 15,128,64,0,3,255,192,0,0,127,128,0,19,20,60,21, + 1,0,0,224,0,1,240,0,1,240,0,3,176,0,3,184, + 0,3,56,0,7,28,0,7,28,0,14,14,0,14,14,0, + 30,15,0,28,7,0,28,7,0,63,255,128,63,255,128,112, + 1,192,112,1,192,224,0,224,224,0,224,224,0,224,15,20, + 40,19,2,0,255,224,255,248,224,120,224,28,224,28,224,28, + 224,28,224,24,224,56,255,224,255,240,224,28,224,12,224,14, + 224,14,224,14,224,30,224,60,255,248,255,224,16,20,40,19, + 2,0,7,240,31,252,60,14,48,6,112,7,96,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,96,0, + 96,7,112,6,56,14,31,252,7,240,16,20,40,20,2,0, + 255,192,255,240,224,120,224,28,224,14,224,14,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,14,224,14, + 224,28,224,120,255,240,255,192,13,20,40,17,2,0,255,248, + 255,248,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,240,255,240,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,248,255,248,12,20,40,16,2,0,255,240,255,240, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,18,20,60,22,2,0,3,248,0,15,254,0, + 30,15,128,56,3,128,112,1,192,96,0,0,224,0,0,224, + 0,0,224,0,0,224,63,192,224,63,192,224,1,192,224,1, + 192,224,1,192,112,1,192,112,1,192,56,1,192,30,7,192, + 15,255,192,3,254,0,15,20,40,19,2,0,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,255,254, + 255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,3,20,20,7,2,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,12,20, + 40,16,2,0,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,224,112,224,96,113,224,63,192,31,128,15,20,40,18, + 2,0,224,60,224,120,224,240,224,224,225,192,227,128,231,0, + 238,0,252,0,254,0,238,0,239,0,231,128,227,192,225,224, + 224,240,224,120,224,56,224,60,224,30,12,20,40,15,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,240,255,240,21,20,60,25,2,0,248,0, + 248,248,0,248,248,1,248,252,1,248,252,1,184,236,3,184, + 238,3,184,238,3,56,230,7,56,231,6,56,227,14,56,227, + 142,56,227,140,56,225,156,56,225,220,56,225,216,56,224,248, + 56,224,240,56,224,112,56,224,112,56,16,20,40,20,2,0, + 240,7,248,7,248,7,252,7,252,7,238,7,238,7,231,7, + 231,135,227,135,227,199,225,199,224,231,224,231,224,119,224,119, + 224,63,224,63,224,31,224,31,18,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,252,0,3,240,0,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,120,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,20,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,255,240,3,255,240,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,112,255,224,255,224,224,112,224,56,224,56,224,56,224,24, + 224,24,224,24,224,28,224,28,15,20,40,19,2,0,15,192, + 63,240,120,120,96,28,224,28,224,0,224,0,120,0,127,0, + 63,240,7,252,0,60,0,14,0,14,224,14,224,14,224,14, + 120,60,63,248,15,192,16,20,40,18,1,0,255,255,255,255, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,16,20,40,20,2,0,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,96,6,112,14,60,60,31,248, + 15,224,17,20,60,18,1,0,224,3,128,224,7,0,224,7, + 0,112,7,0,112,14,0,112,14,0,56,14,0,56,28,0, + 56,28,0,28,56,0,28,56,0,12,56,0,14,112,0,14, + 112,0,7,112,0,7,224,0,7,224,0,3,224,0,3,192, + 0,3,192,0,26,20,80,27,1,0,224,28,1,192,224,30, + 3,128,224,62,3,128,224,62,3,128,112,54,3,0,112,119, + 7,0,112,115,7,0,48,99,7,0,56,99,134,0,56,227, + 142,0,24,225,142,0,28,193,140,0,28,193,220,0,29,193, + 220,0,13,192,216,0,15,128,216,0,15,128,248,0,7,128, + 120,0,7,0,112,0,7,0,112,0,18,20,60,20,1,0, + 120,7,128,56,7,0,60,14,0,30,30,0,14,28,0,15, + 56,0,7,56,0,3,240,0,1,224,0,1,224,0,3,224, + 0,3,240,0,7,120,0,14,56,0,14,28,0,28,30,0, + 56,15,0,120,7,0,112,7,128,224,3,192,17,20,60,19, + 1,0,224,3,128,240,7,0,112,7,0,56,14,0,60,28, + 0,28,28,0,14,56,0,14,48,0,7,112,0,7,96,0, + 3,224,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,15,20, + 40,17,1,0,255,252,255,252,0,28,0,56,0,120,0,240, + 0,224,1,192,3,192,3,128,7,0,14,0,30,0,28,0, + 56,0,112,0,240,0,224,0,255,254,255,254,5,25,25,11, + 3,251,248,248,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,248,248,9,21,42,11,1, + 255,192,0,96,0,96,0,96,0,48,0,48,0,48,0,24, + 0,24,0,24,0,8,0,12,0,12,0,12,0,6,0,6, + 0,6,0,3,0,3,0,3,0,1,128,6,25,25,12,3, + 251,252,252,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,252,252,14,17,34,28,7,0, + 3,0,3,0,7,128,7,128,4,128,12,192,8,64,24,96, + 24,96,16,32,48,48,48,48,96,24,96,24,64,8,192,12, + 192,12,14,2,4,14,0,252,255,252,255,252,6,5,5,6, + 255,16,224,112,48,24,12,12,14,28,15,1,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,13,20,40,16,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,231,192,255,224,240, + 112,224,48,224,56,224,56,224,56,224,56,224,56,224,56,224, + 112,240,112,255,224,231,128,12,14,28,14,1,0,31,128,63, + 224,112,112,224,112,224,112,224,0,224,0,224,0,224,0,224, + 112,96,112,112,224,63,224,31,128,13,20,40,16,1,0,0, + 56,0,56,0,56,0,56,0,56,0,56,31,56,63,248,112, + 248,96,120,224,56,224,56,224,56,224,56,224,56,224,56,112, + 56,112,120,63,248,15,184,13,14,28,15,1,0,15,128,63, + 224,112,112,96,48,224,56,255,248,255,248,224,0,224,0,224, + 56,96,112,112,112,63,224,15,128,9,20,40,10,1,0,7, + 128,31,128,28,0,28,0,28,0,28,0,255,128,255,128,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,13,19,38,16,1,251,31,184,63, + 248,112,120,96,56,224,56,224,56,224,56,224,56,224,56,224, + 56,96,56,112,120,63,248,31,56,0,56,112,48,112,112,63, + 224,15,128,12,20,40,16,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,239,192,255,224,240,240,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,3,20,20,7,2,0,224,224,224,0,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,5,25,25,7,1, + 251,56,56,56,0,0,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,240,224,11,20,40,14,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,225,224,225,192, + 227,128,231,0,238,0,252,0,252,0,254,0,238,0,231,0, + 227,128,227,192,225,192,224,224,3,20,20,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,21,14,42,25,2,0,231,195,224,255,239,240,240,248, + 56,224,120,56,224,112,24,224,112,24,224,112,24,224,112,24, + 224,112,24,224,112,24,224,112,24,224,112,24,224,112,24,224, + 112,24,12,14,28,16,2,0,239,128,255,224,240,240,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,14,14,28,16,1,0,15,192,63,224,112,112, + 112,56,224,24,224,28,224,28,224,28,224,28,224,24,112,56, + 112,112,63,224,15,192,14,19,38,17,2,251,231,192,255,240, + 240,112,240,56,224,24,224,28,224,28,224,28,224,28,224,24, + 224,56,240,112,255,240,231,192,224,0,224,0,224,0,224,0, + 224,0,14,19,38,17,1,251,15,156,63,220,112,124,112,60, + 224,28,224,28,224,28,224,28,224,28,224,28,96,60,112,124, + 63,252,15,156,0,28,0,28,0,28,0,28,0,28,8,14, + 14,10,2,0,239,255,240,224,224,224,224,224,224,224,224,224, + 224,224,12,14,28,14,1,0,31,128,127,192,112,224,224,224, + 224,0,120,0,63,128,15,224,0,224,0,112,224,112,224,224, + 127,192,63,128,8,18,18,10,1,0,8,56,56,56,255,255, + 56,56,56,56,56,56,56,56,56,56,31,15,12,14,28,16, + 2,0,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,240,240,127,240,63,112,13,14, + 28,15,1,0,224,24,224,56,224,56,112,48,112,112,56,96, + 56,224,24,192,28,192,29,192,15,128,15,128,7,0,7,0, + 21,14,42,23,1,0,192,112,24,224,248,56,224,248,56,96, + 216,48,97,216,112,113,156,112,49,140,96,51,140,224,59,14, + 224,27,6,192,27,7,192,30,7,128,14,3,128,14,3,128, + 13,14,28,15,1,0,240,56,112,112,56,96,28,224,31,192, + 15,128,7,0,7,128,15,192,29,192,56,224,112,112,112,120, + 224,56,13,19,38,15,1,251,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,15,128, + 7,128,7,0,7,0,6,0,14,0,14,0,12,0,10,14, + 28,12,1,0,255,192,255,192,1,192,3,128,7,0,14,0, + 14,0,28,0,56,0,48,0,112,0,224,0,255,192,255,192, + 9,27,54,13,2,249,3,128,15,128,14,0,12,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,56,0,248,0, + 240,0,240,0,56,0,24,0,28,0,28,0,28,0,28,0, + 12,0,12,0,12,0,14,0,15,128,3,128,1,29,29,9, + 4,249,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,9, + 27,54,13,2,249,240,0,248,0,24,0,28,0,28,0,28, + 0,28,0,28,0,28,0,12,0,12,0,14,0,7,128,3, + 128,7,128,14,0,12,0,12,0,28,0,28,0,28,0,28, + 0,28,0,28,0,24,0,248,0,240,0,15,3,6,15,0, + 5,62,14,127,252,224,248,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,8,0,0,3,19, + 19,10,4,251,224,224,224,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,12,20,40,16,2,253,0,192,0, + 128,0,128,31,128,63,192,113,96,227,96,226,0,226,0,230, + 0,228,0,228,0,236,112,232,96,120,224,63,192,31,128,16, + 0,48,0,48,0,14,20,40,16,1,0,7,224,31,248,60, + 60,56,28,56,0,56,0,56,0,255,128,255,128,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,255, + 248,255,248,16,14,28,18,1,4,192,3,97,134,55,236,28, + 56,24,24,48,12,48,12,48,12,48,12,24,24,28,56,63, + 252,115,198,192,3,15,20,40,17,1,0,224,14,224,28,112, + 28,48,56,56,56,24,112,252,126,252,254,14,224,7,192,255, + 254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,1,25,25,9,4,251,128,128,128,128,128,128,128, + 128,128,128,128,0,0,0,128,128,128,128,128,128,128,128,128, + 128,128,10,25,50,12,1,251,31,0,63,128,112,0,224,0, + 224,0,112,0,120,0,62,0,31,0,127,128,113,192,225,192, + 225,192,225,128,247,128,126,0,31,0,7,128,3,192,1,192, + 1,192,1,192,131,128,255,0,60,0,8,3,3,8,0,17, + 231,231,231,21,20,60,25,2,0,1,252,0,7,255,0,28, + 3,128,56,112,192,35,254,96,103,142,48,199,7,16,134,7, + 24,142,0,8,142,0,8,142,0,8,134,0,8,134,7,24, + 199,7,16,67,254,16,32,248,32,48,0,64,28,1,128,7, + 143,0,1,252,0,10,13,26,12,1,7,63,0,127,128,97, + 128,1,128,31,128,127,128,225,128,193,128,227,128,127,128,24, + 0,0,0,255,192,11,11,22,16,2,2,12,96,24,224,56, + 192,113,128,99,128,227,0,99,128,113,128,56,192,24,224,12, + 96,15,6,12,18,2,6,255,254,255,254,0,6,0,6,0, + 6,0,6,255,21,20,60,25,2,0,1,252,0,7,255,0, + 28,3,128,59,252,192,35,254,96,99,3,48,195,3,16,131, + 3,24,131,254,8,131,252,8,131,6,8,131,6,8,131,3, + 24,195,3,16,67,3,48,35,3,96,56,0,192,28,3,128, + 7,255,0,1,252,0,8,2,2,8,0,17,255,255,6,6, + 6,8,1,14,120,204,132,132,204,120,17,17,51,29,6,0, + 1,128,0,1,128,0,1,128,0,1,128,0,1,128,0,255, + 255,128,255,255,128,1,128,0,1,128,0,1,128,0,1,128, + 0,1,128,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,9,11,22,11,1,9,62,0,127,0,227,128,3, + 128,3,0,7,0,28,0,56,0,112,0,255,128,255,128,8, + 11,11,10,1,9,62,127,195,3,30,30,7,3,195,126,60, + 5,5,5,6,2,16,56,48,96,224,192,255,13,24,48,16, + 1,252,15,248,62,32,126,32,126,32,254,32,254,32,254,32, + 126,32,62,32,30,32,2,32,2,32,2,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 2,32,3,3,3,7,2,8,224,224,224,7,7,7,7,1, + 249,32,32,60,14,6,254,248,4,10,10,8,2,10,112,240, + 176,48,48,48,48,48,48,48,10,12,24,12,1,8,30,0, + 99,128,193,128,192,192,192,192,192,192,192,192,193,128,99,128, + 30,0,0,0,255,192,12,11,22,16,2,2,227,0,99,128, + 49,128,56,192,24,224,28,112,24,224,56,192,49,128,99,128, + 227,0,18,20,60,22,2,0,112,12,0,240,12,0,176,24, + 0,48,24,0,48,48,0,48,96,0,48,96,0,48,192,0, + 48,192,0,49,131,0,49,7,0,3,15,0,6,31,0,6, + 27,0,12,51,0,12,99,0,24,127,192,16,3,0,48,3, + 0,96,3,0,18,20,60,22,2,0,112,12,0,240,24,0, + 176,24,0,48,48,0,48,48,0,48,96,0,48,64,0,48, + 192,0,48,128,0,49,143,0,51,31,128,3,49,192,6,1, + 192,6,1,192,12,3,128,8,7,0,24,14,0,16,24,0, + 48,63,192,96,63,192,20,20,60,22,1,0,62,1,128,127, + 3,0,195,3,0,3,6,0,28,6,0,30,12,0,3,24, + 0,195,24,0,199,48,0,126,48,192,56,97,192,0,99,192, + 0,198,192,1,134,192,1,140,192,3,24,192,3,31,240,6, + 0,192,12,0,192,12,0,192,12,19,38,15,2,251,7,0, + 7,0,7,0,0,0,0,0,7,0,7,0,7,0,15,0, + 30,0,56,0,112,0,224,0,224,0,224,0,224,112,127,224, + 63,224,31,128,19,27,81,21,1,0,7,0,0,3,128,0, + 1,128,0,0,192,0,0,96,0,0,0,0,0,0,0,0, + 224,0,1,240,0,1,240,0,3,176,0,3,184,0,3,56, + 0,7,28,0,7,28,0,14,14,0,14,14,0,30,15,0, + 28,7,0,28,7,0,63,255,128,63,255,128,112,1,192,112, + 1,192,224,0,224,224,0,224,224,0,224,19,27,81,21,1, + 0,0,28,0,0,56,0,0,48,0,0,96,0,0,192,0, + 0,0,0,0,0,0,0,224,0,1,240,0,1,240,0,3, + 176,0,3,184,0,3,56,0,7,28,0,7,28,0,14,14, + 0,14,14,0,30,15,0,28,7,0,28,7,0,63,255,128, + 63,255,128,112,1,192,112,1,192,224,0,224,224,0,224,224, + 0,224,19,27,81,21,1,0,0,224,0,1,240,0,1,176, + 0,3,24,0,6,12,0,0,0,0,0,0,0,0,224,0, + 1,240,0,1,240,0,3,176,0,3,184,0,3,56,0,7, + 28,0,7,28,0,14,14,0,14,14,0,30,15,0,28,7, + 0,28,7,0,63,255,128,63,255,128,112,1,192,112,1,192, + 224,0,224,224,0,224,224,0,224,19,26,78,21,1,0,1, + 140,0,3,248,0,6,112,0,0,0,0,0,0,0,0,0, + 0,0,224,0,1,240,0,1,240,0,3,176,0,3,184,0, + 3,56,0,7,28,0,7,28,0,14,14,0,14,14,0,30, + 15,0,28,7,0,28,7,0,63,255,128,63,255,128,112,1, + 192,112,1,192,224,0,224,224,0,224,224,0,224,19,26,78, + 21,1,0,3,156,0,3,156,0,3,156,0,0,0,0,0, + 0,0,0,0,0,0,224,0,0,240,0,1,240,0,1,184, + 0,3,184,0,3,152,0,7,28,0,7,28,0,7,14,0, + 14,14,0,14,15,0,28,7,0,28,7,0,63,255,128,63, + 255,128,56,1,192,112,1,192,112,0,224,224,0,224,224,0, + 224,20,28,84,21,0,0,0,240,0,1,152,0,1,8,0, + 1,8,0,1,152,0,0,240,0,0,0,0,0,0,0,0, + 240,0,0,240,0,0,248,0,1,248,0,1,220,0,3,156, + 0,3,158,0,7,14,0,7,14,0,7,7,0,14,7,0, + 14,7,128,30,3,128,31,255,192,31,255,192,56,1,192,56, + 0,224,112,0,224,112,0,112,224,0,112,25,20,80,28,1, + 0,0,63,255,128,0,127,255,128,0,126,0,0,0,238,0, + 0,0,238,0,0,1,206,0,0,1,206,0,0,3,206,0, + 0,3,142,0,0,7,143,255,128,7,15,255,128,15,14,0, + 0,14,14,0,0,31,254,0,0,63,254,0,0,56,14,0, + 0,120,14,0,0,112,14,0,0,224,15,255,128,224,15,255, + 128,16,27,54,19,2,249,7,240,31,252,60,14,48,6,112, + 7,96,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,96,0,96,7,48,6,56,14,31,252,7,240,0, + 128,0,224,0,248,0,24,0,24,3,248,1,224,13,27,54, + 17,2,0,24,0,28,0,14,0,6,0,3,0,0,0,0, + 0,255,248,255,248,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,255,240,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,255,248,255,248,13,27,54,17,2,0,1, + 192,1,128,3,0,6,0,4,0,0,0,0,0,255,248,255, + 248,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,248,255,248,13,27,54,17,2,0,15,0,15,0,25, + 128,16,192,48,192,0,0,0,0,255,248,255,248,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,240,255,240,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,248,255, + 248,13,26,52,17,2,0,56,224,56,224,56,224,0,0,0, + 0,0,0,255,248,255,248,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,248,255,248,5,27,27,7,0, + 0,224,96,48,48,24,0,0,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,5,27,27,7, + 2,0,56,112,96,192,128,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,8,27,27, + 7,255,0,28,62,118,99,193,0,0,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,8,26, + 26,8,0,0,227,227,227,0,0,0,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,19,20, + 60,20,0,0,63,240,0,63,254,0,56,31,0,56,7,128, + 56,3,128,56,1,192,56,1,192,56,0,192,56,0,224,255, + 192,224,255,192,224,56,0,224,56,0,192,56,1,192,56,1, + 192,56,3,128,56,7,128,56,31,0,63,254,0,63,240,0, + 16,26,52,20,2,0,6,48,15,224,9,224,0,0,0,0, + 0,0,240,7,248,7,248,7,252,7,252,7,238,7,238,7, + 231,7,231,135,227,135,227,199,225,199,224,231,224,231,224,119, + 224,119,224,63,224,63,224,31,224,31,18,28,84,22,2,0, + 7,0,0,3,128,0,1,128,0,0,192,0,0,64,0,0, + 0,0,0,0,0,0,0,0,3,240,0,15,252,0,62,31, + 0,56,7,0,112,3,128,96,1,128,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,96, + 1,192,112,3,128,112,3,128,56,7,0,30,30,0,15,252, + 0,3,240,0,18,28,84,22,2,0,0,56,0,0,112,0, + 0,96,0,0,192,0,0,128,0,0,0,0,0,0,0,0, + 0,0,3,240,0,15,252,0,62,31,0,56,7,0,112,3, + 128,96,1,128,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,96,1,192,112,3,128,112, + 3,128,56,7,0,30,30,0,15,252,0,3,240,0,18,28, + 84,22,2,0,1,224,0,1,224,0,3,240,0,3,48,0, + 6,24,0,0,0,0,0,0,0,0,0,0,3,240,0,15, + 252,0,62,31,0,56,7,0,112,3,128,96,1,128,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,96,1,192,112,3,128,112,3,128,56,7,0,30, + 30,0,15,252,0,3,240,0,18,26,78,22,2,0,3,152, + 0,7,248,0,6,112,0,0,0,0,0,0,0,0,0,0, + 3,240,0,15,252,0,62,31,0,56,7,0,112,3,128,96, + 1,128,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,96,1,192,112,3,128,112,3,128, + 56,7,0,31,62,0,15,252,0,3,240,0,18,26,78,22, + 2,0,7,28,0,7,28,0,7,28,0,0,0,0,0,0, + 0,0,0,0,3,240,0,15,252,0,62,31,0,56,7,0, + 112,3,128,96,1,128,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,96,1,192,112,3, + 128,112,3,128,56,7,0,30,30,0,15,252,0,3,240,0, + 16,15,30,28,6,1,64,2,224,7,112,14,56,28,12,56, + 6,96,3,192,1,128,3,192,6,96,12,48,24,24,48,12, + 96,6,64,2,18,24,72,22,2,254,0,0,128,0,1,192, + 3,251,128,15,255,0,62,31,0,56,15,128,112,31,128,96, + 29,128,224,57,192,224,113,192,224,113,192,224,225,192,225,193, + 192,227,193,192,227,129,192,231,1,128,111,3,128,126,3,128, + 60,7,0,62,30,0,63,252,0,115,240,0,224,0,0,96, + 0,0,16,28,56,20,2,0,14,0,7,0,3,0,1,128, + 0,128,0,0,0,0,0,0,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,96,14,112,14,62,124,31,248,15,224, + 16,28,56,20,2,0,0,112,0,224,0,192,1,128,1,0, + 0,0,0,0,0,0,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,96,14,112,14,62,124,31,248,15,224,16,28, + 56,20,2,0,3,192,3,192,7,224,6,96,12,48,0,0, + 0,0,0,0,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,96,14,112,14,62,124,31,248,15,224,16,26,52,20, + 2,0,14,56,14,56,14,56,0,0,0,0,0,0,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,96,6,112,14, + 60,60,31,248,15,224,17,27,81,19,1,0,0,112,0,0, + 96,0,0,192,0,0,128,0,1,128,0,0,0,0,0,0, + 0,224,3,128,240,7,0,112,7,0,56,14,0,60,28,0, + 28,28,0,14,56,0,14,48,0,7,112,0,7,96,0,3, + 224,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,14,20,40, + 17,2,0,224,0,224,0,224,0,224,0,255,192,255,240,224, + 120,224,56,224,28,224,28,224,28,224,56,224,120,255,240,255, + 192,224,0,224,0,224,0,224,0,224,0,14,20,40,15,1, + 0,15,128,63,224,112,112,224,112,224,112,224,112,225,224,227, + 128,231,0,231,0,227,128,227,224,224,248,224,56,224,28,224, + 28,238,28,230,28,231,248,225,240,12,21,42,15,1,0,12, + 0,14,0,6,0,3,0,1,128,0,0,0,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,12,22,44,15,1,0,1, + 192,1,128,3,0,3,0,6,0,12,0,0,0,0,0,31, + 192,63,224,112,112,112,112,0,112,15,240,63,240,112,112,224, + 112,224,112,224,112,224,240,127,176,30,48,12,22,44,15,1, + 0,7,0,15,0,13,128,29,128,24,192,48,64,0,0,0, + 0,31,192,63,224,112,112,112,112,0,112,15,240,63,240,112, + 112,224,112,224,112,224,112,224,240,127,176,30,48,12,20,40, + 15,1,0,30,64,31,192,49,128,0,0,0,0,0,0,31, + 192,63,224,112,112,112,112,0,112,15,240,63,240,112,112,224, + 112,224,112,224,112,224,240,127,176,30,48,12,20,40,15,1, + 0,56,224,56,224,56,224,0,0,0,0,0,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,12,23,46,15,1,0,15, + 0,25,128,16,128,16,128,25,128,15,0,0,0,0,0,0, + 0,31,192,63,224,112,112,112,112,0,112,15,240,63,240,112, + 112,224,112,224,112,224,112,224,240,127,176,30,48,23,14,42, + 25,1,0,31,131,240,63,207,248,112,108,28,112,56,12,0, + 56,14,15,255,254,63,255,254,120,56,0,224,56,0,224,56, + 14,224,120,12,240,236,28,127,199,248,31,3,240,12,21,42, + 14,1,249,31,128,63,224,112,112,224,112,224,112,224,0,224, + 0,224,0,224,0,224,112,224,112,112,224,63,224,31,128,4, + 0,7,128,7,192,0,96,0,96,31,192,15,0,13,22,44, + 15,1,0,56,0,28,0,12,0,6,0,6,0,3,0,0, + 0,0,0,15,128,63,224,112,112,96,48,224,56,255,248,255, + 248,224,0,224,0,224,56,96,112,112,112,63,224,15,128,13, + 22,44,15,1,0,1,192,1,128,3,128,3,0,6,0,4, + 0,0,0,0,0,15,128,63,224,112,112,96,48,224,56,255, + 248,255,248,224,0,224,0,224,56,96,112,112,112,63,224,15, + 128,13,22,44,15,1,0,7,0,15,0,15,128,25,128,24, + 192,48,64,0,0,0,0,15,128,63,224,112,112,96,48,224, + 56,255,248,255,248,224,0,224,0,224,56,96,112,112,112,63, + 224,15,128,13,20,40,15,1,0,56,224,56,224,56,224,0, + 0,0,0,0,0,15,192,63,224,112,112,96,56,224,56,255, + 248,255,248,224,0,224,0,224,56,96,56,112,112,63,224,15, + 128,5,21,21,7,0,0,224,96,48,48,24,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,5,21,21,7, + 2,0,56,112,96,192,128,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,8,21,21,7,255,0,60,62,118, + 99,193,0,0,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,8,20,20,7,255,0,227,227,227,0,0,0,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,14,20,40,16, + 1,0,48,32,57,224,15,0,31,128,113,192,0,224,15,240, + 63,240,120,120,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,96,56,112,112,63,224,15,192,12,20,40,16,2,0, + 28,192,63,192,51,128,0,0,0,0,0,0,239,128,255,224, + 240,240,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,14,22,44,16,1,0,28,0, + 12,0,14,0,6,0,3,0,1,0,0,0,0,0,15,192, + 63,224,112,112,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,112,56,112,112,63,224,15,192,14,22,44,16,1,0, + 0,224,1,192,1,128,3,0,3,0,6,0,0,0,0,0, + 15,192,63,224,112,112,112,56,224,24,224,28,224,28,224,28, + 224,28,224,24,112,56,112,112,63,224,15,192,14,22,44,16, + 1,0,7,0,7,128,15,128,12,192,24,192,24,96,0,0, + 0,0,15,192,63,224,112,112,112,56,224,24,224,28,224,28, + 224,28,224,28,224,24,112,56,112,112,63,224,15,192,14,20, + 40,16,1,0,14,96,31,192,17,128,0,0,0,0,0,0, + 15,192,63,224,112,112,112,56,224,24,224,28,224,28,224,28, + 224,28,224,24,112,56,112,112,63,224,15,192,14,20,40,16, + 1,0,28,224,28,224,28,224,0,0,0,0,0,0,15,192, + 63,224,112,112,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,112,56,112,112,63,224,15,192,17,12,36,29,6,2, + 1,192,0,1,192,0,1,192,0,0,0,0,0,0,0,255, + 255,128,255,255,128,0,0,0,0,0,0,1,192,0,1,192, + 0,1,192,0,14,18,36,16,1,254,0,8,0,24,15,248, + 63,240,112,112,112,248,225,216,225,152,227,28,230,28,238,28, + 236,24,120,56,112,112,127,224,111,192,192,0,128,0,12,22, + 44,16,2,0,56,0,24,0,12,0,12,0,6,0,3,0, + 0,0,0,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,240,240,127,240,63,112, + 12,22,44,16,2,0,1,192,1,128,3,0,7,0,6,0, + 12,0,0,0,0,0,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,240,240,127,240, + 63,112,12,22,44,16,2,0,6,0,15,0,15,0,25,128, + 16,128,48,192,0,0,0,0,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,240,240, + 127,240,63,112,12,20,40,16,2,0,57,192,57,192,57,192, + 0,0,0,0,0,0,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,240,240,127,240, + 63,112,13,27,54,15,1,251,0,224,1,192,1,128,3,0, + 2,0,0,0,0,0,0,0,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,7,128, + 7,128,7,0,7,0,6,0,238,0,252,0,120,0,14,25, + 50,17,2,251,224,0,224,0,224,0,224,0,224,0,224,0, + 231,192,255,240,240,112,240,56,224,24,224,28,224,28,224,28, + 224,28,224,24,224,56,240,112,255,240,231,192,224,0,224,0, + 224,0,224,0,224,0,14,25,50,14,0,251,28,224,28,224, + 28,224,0,0,0,0,0,0,224,28,112,24,112,56,48,56, + 56,112,56,112,28,96,28,224,14,224,14,192,7,192,7,128, + 3,128,3,128,3,0,7,0,6,0,6,0,14,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=17 h=21 x= 6 y= 9 dx=29 dy= 0 ascent=20 len=48 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =20 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20n[596] U8G_SECTION(".progmem.u8g_font_fur20n") = { + 0,38,35,254,249,20,0,0,0,0,42,57,0,20,253,20, + 0,11,11,22,19,4,9,17,0,49,128,27,0,27,0,14, + 0,255,224,142,32,27,0,27,0,49,128,17,0,17,16,48, + 29,6,0,1,128,0,1,128,0,1,128,0,1,128,0,1, + 128,0,1,128,0,1,128,0,255,255,128,255,255,128,1,128, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,5,7,7,8,1,253,56,56,112,112,96,96,224, + 7,2,2,9,1,6,254,254,3,3,3,8,3,0,224,224, + 224,8,21,21,11,2,255,3,6,6,6,4,12,12,12,24, + 24,24,48,48,48,96,96,96,64,192,192,192,13,20,40,16, + 1,0,15,128,63,192,112,224,96,112,96,112,224,48,224,48, + 224,56,224,56,224,56,224,56,224,56,224,56,224,48,224,48, + 96,112,112,112,48,224,63,192,15,128,7,20,20,16,4,0, + 30,62,126,254,206,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,12,20,40,16,2,0,31,128,63,192,112,96, + 112,112,224,112,0,112,0,112,0,112,0,224,1,224,3,192, + 3,128,7,0,14,0,28,0,60,0,120,0,240,0,255,240, + 255,240,13,20,40,16,1,0,15,128,63,224,112,112,112,48, + 224,56,0,56,0,48,0,224,7,192,7,192,0,224,0,112, + 0,56,0,56,224,56,224,56,224,56,112,112,63,224,31,128, + 14,20,40,16,1,0,0,240,1,240,1,240,3,240,7,112, + 6,112,14,112,28,112,24,112,56,112,112,112,96,112,224,112, + 255,252,255,252,0,112,0,112,0,112,0,112,0,112,13,20, + 40,16,1,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,239,128,255,224,240,112,224,112,224,48,0,56,0,56, + 0,56,224,48,224,112,112,224,127,192,31,128,13,20,40,16, + 1,0,15,192,63,224,120,112,112,48,224,56,224,0,224,0, + 231,192,255,224,248,240,224,56,224,56,224,56,224,56,224,56, + 224,56,96,48,48,112,63,224,15,128,12,20,40,16,2,0, + 255,240,255,240,0,112,0,112,0,96,0,224,0,224,1,192, + 1,192,1,128,3,128,3,128,3,0,7,0,7,0,14,0, + 14,0,14,0,28,0,28,0,13,20,40,16,1,0,15,128, + 63,224,112,112,224,48,224,56,224,56,96,48,112,112,31,192, + 31,192,56,96,96,48,224,56,224,56,224,56,224,56,224,56, + 112,112,63,224,15,128,13,20,40,16,1,0,31,192,63,224, + 112,112,224,56,224,56,224,56,224,56,224,56,224,56,112,120, + 63,248,31,56,0,56,0,56,0,56,96,48,96,112,112,224, + 63,192,31,128}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=26 h=29 x= 7 y=16 dx=29 dy= 0 ascent=22 len=96 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =22 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20r[3976] U8G_SECTION(".progmem.u8g_font_fur20r") = { + 0,38,35,254,249,20,5,12,11,23,32,127,251,22,249,20, + 251,0,0,0,8,0,0,3,20,20,11,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,0,0,224,224, + 224,9,8,16,13,2,12,227,128,227,128,227,0,227,0,227, + 0,195,0,195,0,67,0,18,20,60,21,1,0,0,195,0, + 0,195,0,0,195,0,1,198,0,1,134,0,1,134,0,31, + 255,192,63,255,192,3,12,0,3,24,0,6,24,0,6,24, + 0,127,255,128,255,255,0,12,48,0,12,48,0,28,96,0, + 24,96,0,24,96,0,24,192,0,14,25,50,16,1,253,2, + 0,2,0,31,192,63,224,114,112,98,48,226,56,226,0,226, + 0,114,0,126,0,63,224,15,240,2,248,2,56,2,28,226, + 28,226,28,226,24,114,56,127,240,31,192,2,0,2,0,2, + 0,23,20,60,25,1,0,30,0,192,127,128,192,97,129,128, + 225,193,0,225,195,0,225,198,0,225,198,0,97,140,0,127, + 136,0,30,24,224,0,49,248,0,51,156,0,103,14,0,71, + 14,0,199,14,1,135,14,1,135,14,3,3,12,2,3,252, + 6,0,240,19,20,60,22,2,0,7,192,0,31,240,0,56, + 48,0,56,48,0,56,48,0,56,112,0,29,224,0,15,192, + 0,31,3,128,63,131,128,115,195,128,225,227,128,224,243,0, + 224,123,0,224,63,0,224,30,0,112,15,0,120,31,128,63, + 251,192,15,225,224,3,8,8,10,4,12,224,224,192,192,192, + 192,192,192,5,24,24,10,3,252,24,48,48,112,112,96,96, + 224,224,224,224,224,224,224,224,224,224,96,96,112,112,48,48, + 24,5,24,24,10,3,252,192,192,96,96,96,112,112,48,48, + 48,56,56,56,56,48,48,48,112,112,96,96,96,192,192,11, + 11,22,19,4,9,17,0,49,128,27,0,27,0,14,0,255, + 224,142,32,27,0,27,0,49,128,17,0,17,16,48,29,6, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,1,128,0,255,255,128,255,255,128,1,128,0,1, + 128,0,1,128,0,1,128,0,1,128,0,1,128,0,1,128, + 0,5,7,7,8,1,253,56,56,112,112,96,96,224,7,2, + 2,9,1,6,254,254,3,3,3,8,3,0,224,224,224,8, + 21,21,11,2,255,3,6,6,6,4,12,12,12,24,24,24, + 48,48,48,96,96,96,64,192,192,192,13,20,40,16,1,0, + 15,128,63,192,112,224,96,112,96,112,224,48,224,48,224,56, + 224,56,224,56,224,56,224,56,224,56,224,48,224,48,96,112, + 112,112,48,224,63,192,15,128,7,20,20,16,4,0,30,62, + 126,254,206,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,12,20,40,16,2,0,31,128,63,192,112,96,112,112, + 224,112,0,112,0,112,0,112,0,224,1,224,3,192,3,128, + 7,0,14,0,28,0,60,0,120,0,240,0,255,240,255,240, + 13,20,40,16,1,0,15,128,63,224,112,112,112,48,224,56, + 0,56,0,48,0,224,7,192,7,192,0,224,0,112,0,56, + 0,56,224,56,224,56,224,56,112,112,63,224,31,128,14,20, + 40,16,1,0,0,240,1,240,1,240,3,240,7,112,6,112, + 14,112,28,112,24,112,56,112,112,112,96,112,224,112,255,252, + 255,252,0,112,0,112,0,112,0,112,0,112,13,20,40,16, + 1,0,255,224,255,224,224,0,224,0,224,0,224,0,224,0, + 239,128,255,224,240,112,224,112,224,48,0,56,0,56,0,56, + 224,48,224,112,112,224,127,192,31,128,13,20,40,16,1,0, + 15,192,63,224,120,112,112,48,224,56,224,0,224,0,231,192, + 255,224,248,240,224,56,224,56,224,56,224,56,224,56,224,56, + 96,48,48,112,63,224,15,128,12,20,40,16,2,0,255,240, + 255,240,0,112,0,112,0,96,0,224,0,224,1,192,1,192, + 1,128,3,128,3,128,3,0,7,0,7,0,14,0,14,0, + 14,0,28,0,28,0,13,20,40,16,1,0,15,128,63,224, + 112,112,224,48,224,56,224,56,96,48,112,112,31,192,31,192, + 56,96,96,48,224,56,224,56,224,56,224,56,224,56,112,112, + 63,224,15,128,13,20,40,16,1,0,31,192,63,224,112,112, + 224,56,224,56,224,56,224,56,224,56,224,56,112,120,63,248, + 31,56,0,56,0,56,0,56,96,48,96,112,112,224,63,192, + 31,128,3,14,14,8,3,0,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,4,17,17,8,2,253,112,112,112,0, + 0,0,0,0,0,0,112,112,96,224,192,192,192,17,14,42, + 29,6,1,0,1,128,0,15,128,0,124,0,1,224,0,15, + 0,0,120,0,0,224,0,0,240,0,0,62,0,0,7,128, + 0,0,240,0,0,62,0,0,7,128,0,0,128,17,7,21, + 29,6,5,255,255,128,255,255,128,0,0,0,0,0,0,0, + 0,0,255,255,128,255,255,128,17,14,42,29,6,1,192,0, + 0,248,0,0,31,0,0,3,192,0,0,120,0,0,15,0, + 0,3,128,0,7,128,0,62,0,0,240,0,7,128,0,62, + 0,0,240,0,0,128,0,0,12,20,40,15,1,0,31,0, + 63,192,127,224,224,240,64,112,0,112,0,112,0,96,0,192, + 3,128,7,0,14,0,14,0,14,0,14,0,0,0,0,0, + 14,0,14,0,14,0,25,24,96,28,2,252,0,127,0,0, + 3,255,224,0,15,129,248,0,30,0,60,0,56,0,14,0, + 48,0,6,0,112,125,199,0,96,255,199,0,225,195,195,0, + 227,131,195,0,227,129,195,128,227,129,195,128,227,129,195,128, + 227,129,195,0,227,129,195,0,225,131,199,0,113,199,206,0, + 112,252,252,0,56,56,48,0,60,0,0,0,30,0,0,0, + 15,128,64,0,3,255,192,0,0,127,128,0,19,20,60,21, + 1,0,0,224,0,1,240,0,1,240,0,3,176,0,3,184, + 0,3,56,0,7,28,0,7,28,0,14,14,0,14,14,0, + 30,15,0,28,7,0,28,7,0,63,255,128,63,255,128,112, + 1,192,112,1,192,224,0,224,224,0,224,224,0,224,15,20, + 40,19,2,0,255,224,255,248,224,120,224,28,224,28,224,28, + 224,28,224,24,224,56,255,224,255,240,224,28,224,12,224,14, + 224,14,224,14,224,30,224,60,255,248,255,224,16,20,40,19, + 2,0,7,240,31,252,60,14,48,6,112,7,96,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,96,0, + 96,7,112,6,56,14,31,252,7,240,16,20,40,20,2,0, + 255,192,255,240,224,120,224,28,224,14,224,14,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,14,224,14, + 224,28,224,120,255,240,255,192,13,20,40,17,2,0,255,248, + 255,248,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,240,255,240,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,248,255,248,12,20,40,16,2,0,255,240,255,240, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,18,20,60,22,2,0,3,248,0,15,254,0, + 30,15,128,56,3,128,112,1,192,96,0,0,224,0,0,224, + 0,0,224,0,0,224,63,192,224,63,192,224,1,192,224,1, + 192,224,1,192,112,1,192,112,1,192,56,1,192,30,7,192, + 15,255,192,3,254,0,15,20,40,19,2,0,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,255,254, + 255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,3,20,20,7,2,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,12,20, + 40,16,2,0,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,224,112,224,96,113,224,63,192,31,128,15,20,40,18, + 2,0,224,60,224,120,224,240,224,224,225,192,227,128,231,0, + 238,0,252,0,254,0,238,0,239,0,231,128,227,192,225,224, + 224,240,224,120,224,56,224,60,224,30,12,20,40,15,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,240,255,240,21,20,60,25,2,0,248,0, + 248,248,0,248,248,1,248,252,1,248,252,1,184,236,3,184, + 238,3,184,238,3,56,230,7,56,231,6,56,227,14,56,227, + 142,56,227,140,56,225,156,56,225,220,56,225,216,56,224,248, + 56,224,240,56,224,112,56,224,112,56,16,20,40,20,2,0, + 240,7,248,7,248,7,252,7,252,7,238,7,238,7,231,7, + 231,135,227,135,227,199,225,199,224,231,224,231,224,119,224,119, + 224,63,224,63,224,31,224,31,18,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,252,0,3,240,0,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,120,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,20,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,255,240,3,255,240,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,112,255,224,255,224,224,112,224,56,224,56,224,56,224,24, + 224,24,224,24,224,28,224,28,15,20,40,19,2,0,15,192, + 63,240,120,120,96,28,224,28,224,0,224,0,120,0,127,0, + 63,240,7,252,0,60,0,14,0,14,224,14,224,14,224,14, + 120,60,63,248,15,192,16,20,40,18,1,0,255,255,255,255, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,16,20,40,20,2,0,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,96,6,112,14,60,60,31,248, + 15,224,17,20,60,18,1,0,224,3,128,224,7,0,224,7, + 0,112,7,0,112,14,0,112,14,0,56,14,0,56,28,0, + 56,28,0,28,56,0,28,56,0,12,56,0,14,112,0,14, + 112,0,7,112,0,7,224,0,7,224,0,3,224,0,3,192, + 0,3,192,0,26,20,80,27,1,0,224,28,1,192,224,30, + 3,128,224,62,3,128,224,62,3,128,112,54,3,0,112,119, + 7,0,112,115,7,0,48,99,7,0,56,99,134,0,56,227, + 142,0,24,225,142,0,28,193,140,0,28,193,220,0,29,193, + 220,0,13,192,216,0,15,128,216,0,15,128,248,0,7,128, + 120,0,7,0,112,0,7,0,112,0,18,20,60,20,1,0, + 120,7,128,56,7,0,60,14,0,30,30,0,14,28,0,15, + 56,0,7,56,0,3,240,0,1,224,0,1,224,0,3,224, + 0,3,240,0,7,120,0,14,56,0,14,28,0,28,30,0, + 56,15,0,120,7,0,112,7,128,224,3,192,17,20,60,19, + 1,0,224,3,128,240,7,0,112,7,0,56,14,0,60,28, + 0,28,28,0,14,56,0,14,48,0,7,112,0,7,96,0, + 3,224,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,15,20, + 40,17,1,0,255,252,255,252,0,28,0,56,0,120,0,240, + 0,224,1,192,3,192,3,128,7,0,14,0,30,0,28,0, + 56,0,112,0,240,0,224,0,255,254,255,254,5,25,25,11, + 3,251,248,248,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,248,248,9,21,42,11,1, + 255,192,0,96,0,96,0,96,0,48,0,48,0,48,0,24, + 0,24,0,24,0,8,0,12,0,12,0,12,0,6,0,6, + 0,6,0,3,0,3,0,3,0,1,128,6,25,25,12,3, + 251,252,252,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,252,252,14,17,34,28,7,0, + 3,0,3,0,7,128,7,128,4,128,12,192,8,64,24,96, + 24,96,16,32,48,48,48,48,96,24,96,24,64,8,192,12, + 192,12,14,2,4,14,0,252,255,252,255,252,6,5,5,6, + 255,16,224,112,48,24,12,12,14,28,15,1,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,13,20,40,16,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,231,192,255,224,240, + 112,224,48,224,56,224,56,224,56,224,56,224,56,224,56,224, + 112,240,112,255,224,231,128,12,14,28,14,1,0,31,128,63, + 224,112,112,224,112,224,112,224,0,224,0,224,0,224,0,224, + 112,96,112,112,224,63,224,31,128,13,20,40,16,1,0,0, + 56,0,56,0,56,0,56,0,56,0,56,31,56,63,248,112, + 248,96,120,224,56,224,56,224,56,224,56,224,56,224,56,112, + 56,112,120,63,248,15,184,13,14,28,15,1,0,15,128,63, + 224,112,112,96,48,224,56,255,248,255,248,224,0,224,0,224, + 56,96,112,112,112,63,224,15,128,9,20,40,10,1,0,7, + 128,31,128,28,0,28,0,28,0,28,0,255,128,255,128,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,13,19,38,16,1,251,31,184,63, + 248,112,120,96,56,224,56,224,56,224,56,224,56,224,56,224, + 56,96,56,112,120,63,248,31,56,0,56,112,48,112,112,63, + 224,15,128,12,20,40,16,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,239,192,255,224,240,240,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,3,20,20,7,2,0,224,224,224,0,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,5,25,25,7,1, + 251,56,56,56,0,0,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,240,224,11,20,40,14,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,225,224,225,192, + 227,128,231,0,238,0,252,0,252,0,254,0,238,0,231,0, + 227,128,227,192,225,192,224,224,3,20,20,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,21,14,42,25,2,0,231,195,224,255,239,240,240,248, + 56,224,120,56,224,112,24,224,112,24,224,112,24,224,112,24, + 224,112,24,224,112,24,224,112,24,224,112,24,224,112,24,224, + 112,24,12,14,28,16,2,0,239,128,255,224,240,240,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,14,14,28,16,1,0,15,192,63,224,112,112, + 112,56,224,24,224,28,224,28,224,28,224,28,224,24,112,56, + 112,112,63,224,15,192,14,19,38,17,2,251,231,192,255,240, + 240,112,240,56,224,24,224,28,224,28,224,28,224,28,224,24, + 224,56,240,112,255,240,231,192,224,0,224,0,224,0,224,0, + 224,0,14,19,38,17,1,251,15,156,63,220,112,124,112,60, + 224,28,224,28,224,28,224,28,224,28,224,28,96,60,112,124, + 63,252,15,156,0,28,0,28,0,28,0,28,0,28,8,14, + 14,10,2,0,239,255,240,224,224,224,224,224,224,224,224,224, + 224,224,12,14,28,14,1,0,31,128,127,192,112,224,224,224, + 224,0,120,0,63,128,15,224,0,224,0,112,224,112,224,224, + 127,192,63,128,8,18,18,10,1,0,8,56,56,56,255,255, + 56,56,56,56,56,56,56,56,56,56,31,15,12,14,28,16, + 2,0,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,240,240,127,240,63,112,13,14, + 28,15,1,0,224,24,224,56,224,56,112,48,112,112,56,96, + 56,224,24,192,28,192,29,192,15,128,15,128,7,0,7,0, + 21,14,42,23,1,0,192,112,24,224,248,56,224,248,56,96, + 216,48,97,216,112,113,156,112,49,140,96,51,140,224,59,14, + 224,27,6,192,27,7,192,30,7,128,14,3,128,14,3,128, + 13,14,28,15,1,0,240,56,112,112,56,96,28,224,31,192, + 15,128,7,0,7,128,15,192,29,192,56,224,112,112,112,120, + 224,56,13,19,38,15,1,251,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,15,128, + 7,128,7,0,7,0,6,0,14,0,14,0,12,0,10,14, + 28,12,1,0,255,192,255,192,1,192,3,128,7,0,14,0, + 14,0,28,0,56,0,48,0,112,0,224,0,255,192,255,192, + 9,27,54,13,2,249,3,128,15,128,14,0,12,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,56,0,248,0, + 240,0,240,0,56,0,24,0,28,0,28,0,28,0,28,0, + 12,0,12,0,12,0,14,0,15,128,3,128,1,29,29,9, + 4,249,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,9, + 27,54,13,2,249,240,0,248,0,24,0,28,0,28,0,28, + 0,28,0,28,0,28,0,12,0,12,0,14,0,7,128,3, + 128,7,128,14,0,12,0,12,0,28,0,28,0,28,0,28, + 0,28,0,28,0,24,0,248,0,240,0,15,3,6,15,0, + 5,62,14,127,252,224,248,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=31 h=37 x= 8 y=22 dx=34 dy= 0 ascent=36 len=132 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =36 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25[11949] U8G_SECTION(".progmem.u8g_font_fur25") = { + 0,46,45,254,247,25,6,119,15,27,32,255,249,36,247,25, + 249,0,0,0,10,0,0,3,25,25,12,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 0,0,0,224,224,224,11,10,20,15,2,15,241,224,112,224, + 112,224,112,224,112,224,112,224,112,224,96,192,96,192,96,192, + 22,25,75,25,2,0,0,112,224,0,112,224,0,96,192,0, + 225,192,0,225,192,0,193,128,0,193,128,63,255,252,63,255, + 248,1,131,0,3,135,0,3,134,0,3,6,0,7,14,0, + 255,255,224,255,255,224,14,28,0,14,28,0,12,24,0,12, + 24,0,28,56,0,28,56,0,24,48,0,56,112,0,56,112, + 0,16,32,64,18,1,252,1,128,1,128,1,128,15,240,31, + 248,63,252,121,158,113,142,113,142,113,142,113,128,113,128,121, + 128,63,128,31,240,15,252,1,254,1,159,1,143,1,135,225, + 135,225,135,225,135,241,135,121,143,127,254,63,252,15,240,1, + 128,1,128,1,128,1,128,28,27,108,32,2,0,0,0,14, + 0,0,0,12,0,31,128,24,0,63,192,24,0,121,224,48, + 0,240,240,48,0,224,112,96,0,224,112,224,0,224,112,192, + 0,224,113,192,0,240,113,128,0,112,227,128,0,63,227,0, + 0,31,134,31,128,0,6,63,192,0,12,121,224,0,12,240, + 240,0,24,224,112,0,56,224,112,0,48,224,112,0,112,224, + 112,0,96,224,112,0,224,224,112,0,192,240,240,1,128,121, + 224,1,128,63,192,3,0,31,128,23,25,75,26,2,1,7, + 248,0,15,252,0,30,30,0,28,14,0,28,14,0,28,14, + 0,30,28,0,30,60,0,15,248,0,7,224,0,15,192,112, + 31,224,112,61,224,112,120,240,112,240,120,112,224,60,112,224, + 30,224,224,15,224,224,7,224,240,3,192,120,3,224,124,15, + 240,63,255,120,31,252,124,7,240,62,4,10,10,13,4,15, + 240,112,112,112,112,112,112,96,96,96,6,30,30,12,3,251, + 12,24,24,56,56,112,112,112,112,240,224,224,224,224,224,224, + 224,224,224,224,240,112,112,112,112,56,56,24,24,12,6,30, + 30,12,3,251,224,96,112,112,48,56,56,56,56,28,28,28, + 28,28,28,28,28,28,28,28,28,60,56,56,56,48,112,112, + 96,224,14,13,26,22,4,12,24,96,28,224,28,224,12,192, + 7,128,243,60,255,252,231,156,7,128,12,192,28,224,60,224, + 24,96,20,21,63,34,7,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,6,9,9,9,2,252,60,120,120, + 112,112,224,224,224,192,8,3,3,10,1,7,255,255,255,3, + 4,4,9,3,0,224,224,224,224,10,28,56,13,2,254,0, + 192,1,192,1,128,1,128,3,128,3,0,3,0,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,28,0,24, + 0,24,0,56,0,48,0,48,0,112,0,112,0,96,0,96, + 0,224,0,192,0,192,0,15,25,50,19,2,1,15,224,63, + 248,62,248,120,60,112,28,112,30,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 14,112,30,112,28,120,28,60,60,63,248,31,240,7,192,8, + 25,25,19,5,0,15,31,63,127,255,231,135,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,25, + 50,19,2,1,15,240,63,248,62,252,120,28,120,30,112,14, + 240,14,0,14,0,30,0,28,0,60,0,120,0,120,0,240, + 1,224,3,192,7,128,15,0,31,0,62,0,60,0,120,0, + 240,0,255,254,255,254,16,25,50,19,2,1,15,240,63,248, + 60,28,120,14,112,14,112,14,0,14,0,14,0,28,0,120, + 3,240,3,240,0,248,0,30,0,14,0,15,0,7,0,7, + 240,7,240,7,240,14,120,30,60,124,31,248,7,224,17,25, + 75,19,1,0,0,60,0,0,124,0,0,124,0,0,252,0, + 1,220,0,1,220,0,3,156,0,7,28,0,7,28,0,14, + 28,0,28,28,0,60,28,0,56,28,0,112,28,0,240,28, + 0,224,28,0,255,255,128,255,255,128,255,255,128,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,15, + 25,50,19,2,0,127,252,127,252,127,252,112,0,112,0,112, + 0,112,0,112,0,115,240,127,248,124,60,120,28,112,30,96, + 14,0,14,0,14,0,14,0,14,0,14,224,30,240,28,112, + 60,124,120,63,240,15,192,16,25,50,19,1,1,15,240,31, + 252,60,28,120,30,112,14,240,14,224,0,224,0,224,0,227, + 240,231,252,239,252,252,30,248,14,240,15,240,7,240,7,240, + 7,240,7,112,7,120,14,56,14,62,60,15,248,7,224,15, + 25,50,19,2,0,255,254,255,254,0,14,0,30,0,28,0, + 28,0,60,0,56,0,56,0,120,0,112,0,240,0,240,0, + 224,1,224,1,224,1,192,3,192,3,128,7,128,7,128,7, + 0,15,0,15,0,14,0,16,25,50,19,1,1,15,240,63, + 252,60,60,120,30,112,14,112,14,112,14,112,14,56,28,60, + 60,15,240,15,240,62,56,56,28,112,14,224,7,224,7,224, + 7,224,7,224,7,240,15,120,14,60,60,31,248,7,224,16, + 25,50,19,2,1,31,248,63,252,120,30,112,14,240,15,224, + 15,224,15,224,15,224,15,240,15,112,31,120,63,63,247,15, + 231,0,7,0,7,0,7,0,14,112,14,112,14,112,30,112, + 60,60,120,31,240,15,224,3,18,18,9,3,0,224,224,224, + 224,0,0,0,0,0,0,0,0,0,0,224,224,224,224,6, + 22,22,9,1,252,56,56,56,56,0,0,0,0,0,0,0, + 0,0,60,56,56,56,112,112,112,96,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,240,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,252,0,0,31,0,0,7,224,0,0,248,0,0,31,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,15,25,50,18,1,1,31,224,63,248,125,252,240,30,96, + 14,0,14,0,14,0,30,0,28,0,60,0,120,0,240,1, + 192,3,128,7,128,7,0,7,0,7,0,7,0,0,0,0, + 0,0,0,7,0,7,0,7,0,30,30,120,34,2,251,0, + 31,240,0,0,255,254,0,3,255,255,0,7,224,31,192,15, + 128,3,224,30,0,0,240,60,0,0,112,56,31,56,120,112, + 63,184,56,112,125,248,56,240,112,120,60,224,240,120,28,224, + 224,56,28,224,224,56,28,224,224,56,28,224,224,56,28,224, + 224,56,28,224,224,56,56,240,224,120,56,112,112,120,120,112, + 120,254,240,120,63,223,224,56,31,15,192,60,0,0,0,30, + 0,0,0,15,128,0,0,7,224,0,0,3,255,248,0,0, + 255,248,0,0,31,240,0,24,25,75,26,1,0,0,60,0, + 0,124,0,0,126,0,0,254,0,0,238,0,0,239,0,1, + 231,0,1,199,128,3,195,128,3,131,192,7,131,192,7,1, + 192,7,1,224,15,0,224,14,0,240,31,255,240,31,255,240, + 31,255,248,60,0,56,56,0,60,120,0,28,112,0,30,112, + 0,30,240,0,14,224,0,15,18,25,75,23,3,0,255,248, + 0,255,254,0,255,255,0,224,15,128,224,7,128,224,3,128, + 224,3,128,224,3,128,224,7,128,224,15,0,255,254,0,255, + 252,0,255,254,0,224,15,0,224,3,128,224,3,192,224,1, + 192,224,1,192,224,1,192,224,3,192,224,7,192,224,15,128, + 255,255,0,255,254,0,255,248,0,19,25,75,23,2,1,3, + 254,0,15,255,128,30,3,192,60,1,192,56,0,224,112,0, + 224,112,0,0,112,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,112,0,0,112,0,224,112,0,224,56,1,224,60,1, + 192,31,7,128,15,255,0,1,252,0,20,25,75,25,3,0, + 255,240,0,255,254,0,255,255,0,224,31,128,224,7,192,224, + 3,192,224,1,224,224,0,224,224,0,240,224,0,240,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,240, + 224,0,240,224,0,224,224,1,224,224,3,192,224,7,192,224, + 31,128,255,255,0,255,252,0,255,240,0,16,25,50,21,3, + 0,255,254,255,254,255,254,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,255,255, + 255,255,255,15,25,50,20,3,0,255,254,255,254,255,254,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 252,255,252,255,252,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,21,25,75,26,2, + 1,1,255,128,7,255,192,15,255,224,30,0,240,60,0,120, + 120,0,56,112,0,0,112,0,0,240,0,0,224,0,0,224, + 0,0,224,15,248,224,15,248,224,15,248,224,0,56,240,0, + 56,112,0,56,112,0,56,120,0,56,60,0,56,62,0,56, + 31,0,248,15,255,248,7,255,240,0,255,128,18,25,75,24, + 3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,3,25,25, + 9,3,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,14,25,50,19, + 2,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,224,28,224,28,240,60,120,120,127,240, + 63,224,15,192,18,25,75,23,3,0,224,7,128,224,15,0, + 224,30,0,224,60,0,224,120,0,224,240,0,225,224,0,227, + 192,0,231,128,0,239,0,0,254,0,0,255,0,0,239,128, + 0,231,128,0,231,192,0,227,224,0,225,240,0,224,248,0, + 224,120,0,224,60,0,224,62,0,224,31,0,224,15,128,224, + 7,192,224,3,192,15,25,50,19,3,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,25,25,100, + 31,3,0,248,0,15,128,252,0,31,128,252,0,31,128,252, + 0,31,128,238,0,59,128,238,0,59,128,239,0,123,128,231, + 0,115,128,231,0,115,128,231,128,243,128,227,128,227,128,227, + 128,227,128,225,193,195,128,225,193,195,128,225,193,195,128,224, + 227,131,128,224,227,131,128,224,247,131,128,224,119,3,128,224, + 119,3,128,224,127,3,128,224,62,3,128,224,62,3,128,224, + 28,3,128,224,28,3,128,19,25,75,25,3,0,248,0,224, + 248,0,224,252,0,224,254,0,224,254,0,224,239,0,224,239, + 0,224,231,128,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,120,224,224,60,224, + 224,60,224,224,30,224,224,30,224,224,15,224,224,15,224,224, + 7,224,224,3,224,224,3,224,22,25,75,26,2,1,3,255, + 0,15,255,192,31,255,224,62,1,240,56,0,112,120,0,120, + 112,0,56,240,0,56,240,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,112,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,31,3,224, + 15,255,192,7,255,128,0,252,0,16,25,50,21,3,0,255, + 224,255,252,255,254,224,30,224,15,224,7,224,7,224,7,224, + 7,224,15,224,30,255,254,255,252,255,224,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,24,25,75,27,2,1,3,255,0,15,255,192,31,255,224, + 62,1,240,56,0,112,120,0,120,112,0,56,240,0,56,240, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,240,0,60,112,0,56,112,0,56,120,0,120, + 56,0,112,60,0,240,31,3,224,15,255,255,7,255,255,0, + 255,255,17,25,75,21,3,0,255,240,0,255,252,0,255,254, + 0,224,31,0,224,15,0,224,7,0,224,7,0,224,7,0, + 224,15,0,224,30,0,255,252,0,255,240,0,255,252,0,224, + 60,0,224,30,0,224,14,0,224,14,0,224,14,0,224,15, + 0,224,7,0,224,7,0,224,7,0,224,7,0,224,7,0, + 224,7,128,18,25,75,22,2,1,7,252,0,31,254,0,63, + 255,0,120,7,128,112,3,128,112,3,128,112,0,0,112,0, + 0,120,0,0,124,0,0,63,192,0,31,252,0,7,255,0, + 0,63,128,0,7,128,0,3,192,0,1,192,224,1,192,224, + 1,192,240,1,192,112,3,192,124,15,128,63,255,0,31,254, + 0,7,240,0,19,25,75,21,1,0,255,255,224,255,255,224, + 255,255,224,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,19,25,75,25,3,0,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,240,0, + 224,240,1,224,112,1,192,120,3,192,62,7,192,63,255,128, + 31,255,0,3,248,0,21,25,75,22,1,0,240,0,120,240, + 0,240,240,0,240,120,0,240,120,1,224,120,1,224,60,1, + 192,60,3,192,60,3,192,28,3,128,30,7,128,14,7,128, + 14,7,0,15,15,0,7,15,0,7,14,0,7,158,0,3, + 158,0,3,156,0,3,252,0,1,252,0,1,248,0,1,248, + 0,0,248,0,0,240,0,31,25,100,33,1,0,224,7,192, + 14,240,7,192,14,240,7,192,30,112,7,192,30,112,14,224, + 28,120,14,224,60,120,14,224,60,56,14,240,56,56,28,112, + 56,60,28,112,120,28,28,112,120,28,60,56,112,28,56,56, + 112,30,56,56,240,14,56,56,224,14,112,28,224,14,112,28, + 224,7,112,29,192,7,112,29,192,7,224,15,192,7,224,15, + 192,3,224,15,128,3,224,7,128,3,192,7,128,1,192,7, + 0,22,25,75,24,1,0,124,0,120,60,0,240,30,1,224, + 31,1,224,15,3,192,7,135,128,7,135,128,3,207,0,1, + 238,0,1,254,0,0,252,0,0,120,0,0,252,0,0,252, + 0,1,222,0,3,207,0,3,143,0,7,135,128,15,3,192, + 14,3,192,30,1,224,60,1,240,56,0,240,120,0,120,240, + 0,124,21,25,75,23,1,0,240,0,120,120,0,112,120,0, + 240,60,1,224,30,1,224,30,3,192,15,3,128,15,7,128, + 7,135,0,3,143,0,3,206,0,1,252,0,1,252,0,0, + 248,0,0,120,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,18,25,75,22,2,0,127,255,192,127,255,192,127, + 255,192,0,3,192,0,7,128,0,15,128,0,31,0,0,30, + 0,0,60,0,0,124,0,0,248,0,0,240,0,1,224,0, + 3,224,0,7,192,0,15,128,0,15,0,0,31,0,0,62, + 0,0,124,0,0,120,0,0,240,0,0,255,255,192,255,255, + 192,255,255,192,7,32,32,14,4,249,254,254,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,254,254,10,28,56,13,2,254, + 192,0,192,0,224,0,224,0,96,0,96,0,112,0,48,0, + 48,0,56,0,56,0,24,0,24,0,28,0,12,0,12,0, + 14,0,6,0,6,0,6,0,7,0,3,0,3,0,3,128, + 1,128,1,128,1,128,1,192,6,32,32,14,4,249,252,252, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,252,252,18,21, + 63,34,8,0,0,192,0,1,224,0,1,224,0,1,224,0, + 3,48,0,3,48,0,2,16,0,6,24,0,6,24,0,12, + 12,0,12,12,0,12,12,0,24,6,0,24,6,0,24,6, + 0,48,3,0,48,3,0,112,1,128,96,1,128,96,1,128, + 192,0,192,17,2,6,17,0,251,255,255,128,255,255,128,6, + 6,6,8,0,21,224,224,112,56,24,12,15,18,36,19,2, + 0,15,240,63,252,60,60,120,30,112,14,0,14,0,14,15, + 254,63,254,124,14,112,14,224,14,224,30,224,30,240,62,120, + 238,63,238,15,142,16,25,50,20,2,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,227,240,239,248,238,124,248, + 30,240,14,240,15,224,7,224,7,224,7,224,7,224,7,224, + 15,240,14,240,14,248,28,254,124,239,248,227,224,14,18,36, + 18,2,0,15,224,63,240,124,120,112,60,112,28,240,28,224, + 0,224,0,224,0,224,0,224,0,224,0,240,28,112,28,112, + 60,60,120,31,240,15,224,16,25,50,20,2,0,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,15,199,31,247,60, + 127,120,31,112,31,112,15,224,15,224,7,224,7,224,7,224, + 7,224,7,112,15,112,15,56,31,62,63,15,247,7,199,16, + 18,36,19,2,0,7,224,31,248,60,124,120,30,112,14,240, + 14,224,14,255,254,255,255,224,0,224,0,224,0,112,14,112, + 14,120,30,62,124,31,248,7,224,11,25,50,12,1,0,7, + 224,15,224,31,32,28,0,28,0,28,0,28,0,255,224,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,16,25,50,20,2,249,7,231,31,247,62,127,120,31,112, + 15,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,112,15,120,31,62,127,31,247,15,199,0,7,0,15,112, + 14,120,30,60,60,31,248,7,224,15,25,50,19,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,227,240,239, + 248,252,124,248,28,240,30,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,3,25,25,7,2,0,224,224,224,0,0,0,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 5,32,32,9,2,249,56,56,56,0,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,240,224,14,25,50,17,2,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,120,224,240,225,224, + 225,192,227,192,231,128,239,0,254,0,254,0,239,0,231,128, + 231,128,227,192,225,224,225,224,224,240,224,120,224,60,3,25, + 25,8,2,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,26,18,72, + 30,2,0,227,224,124,0,239,241,255,0,252,123,143,128,248, + 63,3,128,240,30,3,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,15,18,36,19,2, + 0,227,240,239,248,252,124,248,30,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,17,18,54,21,2,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,16,25,50,20,2,249,227,240,231,248,254,60,248,30,240, + 14,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,240,14,248,30,254,124,239,248,227,240,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,16,25,50,21,2,249,7, + 199,31,247,62,63,120,31,112,15,240,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,15,112,15,120,31,62,127,31, + 247,7,199,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,10,18,36,12,2,0,231,192,239,192,254,0,248,0,240, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,14,18,36,18,2, + 0,31,192,127,240,120,248,240,56,224,56,224,0,240,0,126, + 0,63,224,15,248,0,252,0,60,0,28,224,28,240,60,120, + 248,63,240,31,192,10,22,44,12,1,1,28,0,28,0,28, + 0,28,0,255,192,255,192,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,30,0,15,192,7,192,15,18,36,19,2,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,62,124,126,63,238,31, + 142,16,18,36,18,1,0,224,7,240,7,240,15,112,14,120, + 14,56,30,56,28,60,28,28,56,30,56,14,56,14,112,15, + 112,7,224,7,224,3,224,3,192,3,192,26,18,72,28,1, + 0,224,30,1,192,224,62,3,192,224,63,3,128,112,63,3, + 128,112,119,3,128,112,115,7,0,56,115,135,0,56,115,135, + 0,56,227,142,0,24,225,206,0,28,225,206,0,29,193,206, + 0,29,192,220,0,15,192,252,0,15,128,252,0,15,128,120, + 0,7,128,120,0,7,128,120,0,17,18,54,19,1,0,112, + 7,0,120,14,0,60,30,0,30,28,0,30,56,0,15,112, + 0,7,240,0,3,224,0,3,192,0,3,224,0,7,224,0, + 15,240,0,14,120,0,28,60,0,60,28,0,120,30,0,112, + 15,0,240,7,128,16,25,50,18,1,249,224,7,240,7,112, + 15,112,14,120,14,56,30,60,28,28,28,28,60,30,56,14, + 56,15,112,7,112,7,240,7,224,3,224,3,224,1,192,1, + 192,3,128,3,128,7,128,7,0,7,0,15,0,13,18,36, + 17,2,0,127,248,127,248,0,120,0,112,0,240,1,224,3, + 192,3,192,7,128,15,0,31,0,30,0,60,0,120,0,120, + 0,240,0,255,248,255,248,11,35,70,17,3,248,1,224,3, + 224,7,128,15,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,30,0,28,0,60,0,248,0,240, + 0,248,0,60,0,28,0,30,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,7,0,7,128,3, + 224,1,224,2,37,37,12,5,247,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,11,35, + 70,17,3,248,240,0,248,0,60,0,28,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,15,0, + 7,0,7,128,3,224,1,224,3,224,7,128,7,0,15,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,28,0,60,0,248,0,240,0,18,4,12,18,0,7, + 31,1,192,63,231,128,121,255,0,224,62,0,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 10,0,0,3,25,25,13,5,249,224,224,224,0,0,0,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,14,26,52,19,2,252,0,48,0,48,0,32,0,96, + 15,224,63,240,124,248,112,220,112,156,241,156,225,128,225,128, + 227,0,227,0,227,0,226,0,246,28,118,28,124,60,60,120, + 63,240,15,192,24,0,24,0,16,0,48,0,17,26,78,19, + 1,0,0,64,0,7,252,0,15,254,0,30,15,0,60,7, + 128,56,3,128,56,0,0,56,0,0,56,0,0,56,0,0, + 255,224,0,255,224,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,255,255,0,255,255,0, + 18,19,57,20,1,6,64,0,128,224,1,192,113,227,128,63, + 255,0,31,62,0,28,14,0,24,6,0,48,3,0,48,3, + 0,48,3,0,48,3,0,48,3,0,24,6,0,28,14,0, + 31,62,0,55,251,0,113,225,128,224,1,192,64,0,128,18, + 25,75,20,1,0,240,1,192,112,3,192,120,3,128,56,7, + 128,60,7,0,28,15,0,30,14,0,254,15,192,255,31,192, + 7,28,0,7,184,0,3,184,0,3,240,0,255,255,192,255, + 255,192,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 2,33,33,12,5,249,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,0,0,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,12,31,62,16,2,251,31,224,63, + 224,56,32,112,0,112,0,112,0,120,0,124,0,62,0,31, + 128,15,192,63,224,120,240,240,112,224,112,224,112,224,240,241, + 224,127,192,63,128,31,128,7,224,1,224,0,240,0,112,0, + 112,0,112,0,240,65,224,127,192,63,128,10,3,6,10,0, + 22,225,192,225,192,225,192,26,25,100,30,2,1,0,255,192, + 0,3,255,240,0,7,128,120,0,14,0,28,0,28,127,14, + 0,57,255,135,0,115,227,195,0,99,129,225,128,103,128,225, + 128,199,0,0,192,199,0,0,192,199,0,0,192,199,0,0, + 192,199,0,0,192,199,0,0,192,199,0,224,128,99,129,225, + 128,99,195,193,128,49,255,131,0,48,127,7,0,24,0,14, + 0,14,0,28,0,7,128,120,0,1,255,224,0,0,127,128, + 0,12,17,34,14,1,8,31,128,63,192,120,224,96,96,0, + 96,7,224,63,224,56,96,96,96,96,96,96,224,113,224,63, + 96,30,96,0,0,0,0,255,240,13,14,28,19,3,2,14, + 56,28,56,56,112,56,224,112,224,113,192,227,192,227,192,113, + 192,112,224,56,224,24,112,28,56,14,56,18,8,24,21,2, + 7,255,255,192,255,255,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,255,26,25,100,30,2,1, + 0,255,192,0,3,255,240,0,7,128,120,0,14,255,156,0, + 24,255,206,0,48,193,231,0,112,192,99,0,96,192,97,128, + 96,192,97,128,192,192,192,192,192,255,128,192,192,255,128,192, + 192,193,192,192,192,192,192,192,192,192,192,192,192,192,225,128, + 96,192,97,128,96,192,97,128,48,192,99,0,56,0,7,0, + 28,0,14,0,15,0,60,0,7,193,248,0,1,255,224,0, + 0,127,128,0,10,2,4,10,0,22,255,192,255,192,7,7, + 7,11,2,18,56,196,130,130,130,196,120,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,255,240,255,255,240, + 10,13,26,12,1,13,63,128,127,128,97,192,225,192,1,192, + 3,128,7,128,14,0,28,0,56,0,240,0,255,192,255,192, + 10,14,28,13,2,12,127,128,255,192,193,192,1,192,7,128, + 14,0,15,128,3,192,0,192,192,192,192,192,227,128,127,128, + 62,0,6,6,6,8,2,21,28,60,56,112,96,192,255,16, + 31,62,20,2,250,7,255,31,140,63,140,127,140,255,140,255, + 140,255,140,255,140,255,140,127,140,127,140,31,140,7,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,3,4,4,9,3,10,224,224,224,224,8,9,9, + 9,2,247,32,32,60,62,7,3,135,255,252,5,13,13,10, + 2,12,56,120,248,152,24,24,24,24,24,24,24,24,24,12, + 16,32,14,1,9,31,128,63,192,112,224,224,96,192,112,192, + 48,192,48,192,48,192,112,224,112,112,224,63,192,31,128,0, + 0,0,0,255,240,13,14,28,19,3,2,227,128,225,192,112, + 192,56,224,56,112,28,112,28,56,30,56,28,112,56,112,56, + 224,112,192,225,192,227,128,23,27,81,27,2,0,56,0,192, + 120,1,192,248,1,128,216,3,128,24,3,0,24,7,0,24, + 6,0,24,14,0,24,12,0,24,24,0,24,24,0,24,48, + 0,24,112,0,24,96,112,0,224,112,0,192,240,1,193,176, + 1,129,48,3,131,48,3,6,48,7,12,48,6,15,254,14, + 15,254,12,0,48,24,0,48,24,0,48,48,0,48,23,27, + 81,27,2,0,56,0,224,120,1,192,248,1,128,216,3,128, + 24,3,0,24,7,0,24,6,0,24,14,0,24,12,0,24, + 28,0,24,24,0,24,56,0,24,48,0,24,112,248,0,227, + 252,0,195,142,1,199,6,1,128,6,3,128,14,3,0,12, + 7,0,56,6,0,112,14,0,224,12,3,192,28,7,128,24, + 7,254,48,7,254,24,26,78,27,2,0,0,0,24,127,128, + 56,255,192,112,193,192,96,3,128,224,14,0,192,15,129,192, + 3,193,128,0,195,128,192,199,0,192,198,0,227,142,0,127, + 140,28,62,28,60,0,24,60,0,48,108,0,112,204,0,97, + 204,0,227,140,0,195,12,1,199,255,1,135,255,3,0,12, + 7,0,12,6,0,12,14,0,12,15,25,50,18,2,249,1, + 192,1,192,1,192,0,0,0,0,0,0,1,192,1,192,1, + 192,1,192,3,192,7,128,15,0,62,0,124,0,120,0,240, + 0,224,0,224,0,224,8,240,14,120,60,63,252,31,248,7, + 224,24,35,105,26,1,0,1,192,0,1,224,0,0,224,0, + 0,112,0,0,48,0,0,24,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,60,0,0,124,0,0,126,0,0,254, + 0,0,238,0,0,239,0,1,231,0,1,199,128,3,195,128, + 3,131,192,7,131,192,7,1,192,7,1,224,15,0,224,14, + 0,240,31,255,240,31,255,240,31,255,248,60,0,56,56,0, + 60,120,0,28,112,0,30,112,0,30,240,0,14,224,0,15, + 24,35,105,26,1,0,0,7,128,0,7,0,0,14,0,0, + 12,0,0,28,0,0,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,60,0,0,124,0,0,126,0,0,254,0, + 0,238,0,0,239,0,1,231,0,1,199,128,3,195,128,3, + 131,192,7,131,192,7,1,192,7,1,224,15,0,224,14,0, + 240,31,255,240,31,255,240,31,255,248,60,0,56,56,0,60, + 120,0,28,112,0,30,112,0,30,240,0,14,224,0,15,24, + 35,105,26,1,0,0,60,0,0,124,0,0,110,0,0,230, + 0,0,195,0,1,131,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,60,0,0,124,0,0,126,0,0,254,0,0, + 238,0,0,239,0,1,231,0,1,199,128,3,195,128,3,131, + 192,7,131,192,7,1,192,7,1,224,15,0,224,14,0,240, + 31,255,240,31,255,240,31,255,248,60,0,56,56,0,60,120, + 0,28,112,0,30,112,0,30,240,0,14,224,0,15,24,33, + 99,26,1,0,0,241,128,1,255,0,1,159,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,0, + 124,0,0,126,0,0,254,0,0,238,0,0,239,0,1,231, + 0,1,199,128,3,195,128,3,131,192,7,131,192,7,1,192, + 7,1,224,15,0,224,14,0,240,31,255,240,31,255,240,31, + 255,248,60,0,56,56,0,60,120,0,28,112,0,30,112,0, + 30,240,0,14,224,0,15,25,33,132,25,0,0,0,225,192, + 0,0,225,192,0,0,225,192,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0, + 0,0,62,0,0,0,62,0,0,0,127,0,0,0,119,0, + 0,0,247,128,0,0,227,128,0,0,227,192,0,1,227,192, + 0,1,193,192,0,3,193,224,0,3,128,224,0,7,128,240, + 0,7,0,112,0,7,0,112,0,15,255,248,0,15,255,248, + 0,31,255,252,0,28,0,28,0,28,0,30,0,60,0,14, + 0,56,0,14,0,120,0,15,0,112,0,7,0,240,0,7, + 128,24,36,108,25,1,0,0,56,0,0,196,0,0,130,0, + 0,130,0,0,130,0,0,196,0,0,124,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,60,0,0,124,0,0,126, + 0,0,254,0,0,238,0,0,239,0,1,231,0,1,199,128, + 3,195,128,3,131,128,7,131,192,7,129,192,7,1,224,15, + 0,224,14,0,240,31,255,240,31,255,240,31,255,248,60,0, + 56,56,0,60,120,0,60,120,0,28,112,0,30,240,0,14, + 224,0,15,31,25,100,34,1,0,0,7,255,252,0,15,255, + 252,0,15,255,252,0,31,192,0,0,29,192,0,0,61,192, + 0,0,57,192,0,0,121,192,0,0,241,192,0,0,241,192, + 0,1,225,192,0,1,225,255,252,3,193,255,252,3,193,255, + 252,7,129,192,0,7,255,192,0,15,255,192,0,15,255,192, + 0,30,1,192,0,28,1,192,0,60,1,192,0,56,1,192, + 0,120,1,255,254,112,1,255,254,240,1,255,254,19,33,99, + 23,2,249,3,254,0,15,255,128,30,3,192,60,1,192,56, + 0,224,112,0,224,112,0,0,112,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,112,0,0,112,0,224,112,0,224,56, + 1,224,60,1,192,31,7,128,15,255,0,3,252,0,0,64, + 0,0,120,0,0,124,0,0,30,0,0,6,0,0,6,0, + 1,254,0,1,252,0,16,35,70,21,3,0,28,0,14,0, + 7,0,7,0,3,128,1,128,0,0,0,0,0,0,0,0, + 255,254,255,254,255,254,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,254,255,254,255,254,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,255,255,255,255, + 255,255,16,35,70,21,3,0,0,112,0,240,0,224,1,192, + 1,128,3,0,0,0,0,0,0,0,0,0,255,254,255,254, + 255,254,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,254,255,254,255,254,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,255,255,255,255,255,16,35, + 70,21,3,0,7,192,7,192,14,224,12,96,28,112,24,48, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,254, + 255,254,255,254,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,255,255,255,255,255,16,33,66,21,3,0, + 28,112,28,112,28,112,0,0,0,0,0,0,0,0,0,0, + 255,254,255,254,255,254,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,254,255,254,255,254,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,255,255,255,255, + 255,255,6,35,35,9,0,0,240,112,56,24,28,12,0,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,6,35,35,9,3, + 0,28,56,48,112,224,192,0,0,0,0,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,9,35,70,9,0,0,30,0,62,0,55,0, + 115,0,99,128,193,128,0,0,0,0,0,0,0,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 10,33,66,10,0,0,225,192,225,192,225,192,0,0,0,0, + 0,0,0,0,0,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,22,25,75,24,0,0,31,252, + 0,31,255,128,31,255,192,28,7,224,28,0,240,28,0,120, + 28,0,120,28,0,60,28,0,60,28,0,28,28,0,28,255, + 240,28,255,240,28,255,240,28,28,0,28,28,0,28,28,0, + 60,28,0,56,28,0,120,28,0,120,28,0,240,28,7,224, + 31,255,192,31,255,128,31,252,0,19,33,99,25,3,0,3, + 204,0,7,252,0,14,248,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,248,0,224,248,0,224,252,0,224, + 254,0,224,254,0,224,239,0,224,239,0,224,231,128,224,231, + 128,224,227,192,224,227,192,224,225,224,224,224,224,224,224,240, + 224,224,120,224,224,120,224,224,60,224,224,60,224,224,30,224, + 224,30,224,224,15,224,224,15,224,224,7,224,224,3,224,224, + 3,224,22,36,108,26,2,0,3,192,0,1,192,0,0,224, + 0,0,96,0,0,112,0,0,56,0,0,24,0,0,0,0, + 0,0,0,0,0,0,0,0,0,3,255,0,15,255,192,31, + 255,224,62,1,240,56,0,112,120,0,120,112,0,56,240,0, + 56,240,0,28,224,0,28,224,0,28,224,0,28,224,0,28, + 224,0,28,224,0,28,240,0,60,112,0,56,112,0,56,120, + 0,120,56,0,112,60,0,240,31,3,224,15,255,192,7,255, + 128,0,252,0,22,36,108,26,2,0,0,15,0,0,14,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,96,0,0, + 0,0,0,0,0,0,0,0,0,0,0,3,255,0,15,255, + 192,31,255,224,62,1,240,56,0,112,120,0,120,112,0,56, + 240,0,56,240,0,28,224,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,240,0,60,112,0,56,112,0, + 56,120,0,120,56,0,112,60,0,240,31,3,224,15,255,192, + 7,255,128,0,252,0,22,36,108,26,2,0,0,120,0,0, + 120,0,0,252,0,0,206,0,1,206,0,3,135,0,3,3, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,0, + 15,255,192,31,255,224,62,1,240,56,0,112,120,0,120,112, + 0,56,240,0,56,240,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,224,0,28,224,0,28,240,0,60,112,0,56, + 112,0,56,120,0,120,56,0,112,60,0,240,31,3,224,15, + 255,192,7,255,128,0,252,0,22,33,99,26,2,0,1,243, + 0,3,255,0,3,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,255,0,15,255,192,31,255,224,62, + 1,240,56,0,112,120,0,120,112,0,56,240,0,56,240,0, + 28,224,0,28,224,0,28,224,0,28,224,0,28,224,0,28, + 224,0,28,240,0,60,112,0,56,112,0,56,120,0,120,56, + 0,112,60,0,240,31,3,224,15,255,192,7,255,128,0,252, + 0,22,33,99,26,2,0,1,195,128,1,195,128,1,195,128, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 255,0,15,255,192,31,255,224,62,1,240,56,0,112,120,0, + 120,112,0,56,240,0,56,240,0,28,224,0,28,224,0,28, + 224,0,28,224,0,28,224,0,28,224,0,28,240,0,60,112, + 0,56,112,0,56,120,0,120,56,0,112,60,0,240,31,3, + 224,15,255,192,7,255,128,0,252,0,18,19,57,34,8,1, + 64,0,128,224,1,192,112,3,128,56,7,0,24,6,0,12, + 12,0,6,24,0,3,48,0,1,224,0,0,192,0,1,224, + 0,3,48,0,6,24,0,12,12,0,24,6,0,48,3,0, + 96,1,128,224,1,192,64,0,128,22,31,93,26,2,253,0, + 0,24,0,0,60,0,0,56,3,255,120,15,255,240,31,255, + 240,62,1,240,56,1,240,120,3,248,112,7,184,240,15,60, + 240,15,60,224,30,28,224,60,28,224,60,28,224,120,28,224, + 240,28,224,224,28,241,224,60,115,192,56,115,128,56,127,128, + 120,63,0,112,62,0,240,31,3,224,63,255,192,63,255,128, + 121,252,0,240,0,0,224,0,0,32,0,0,19,36,108,25, + 3,0,7,0,0,3,128,0,3,128,0,1,192,0,0,224, + 0,0,96,0,0,48,0,0,0,0,0,0,0,0,0,0, + 0,0,0,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,240,0,224,240,1,224,112,1,192,120, + 3,192,62,7,192,63,255,128,31,255,0,3,248,0,19,36, + 108,25,3,0,0,28,0,0,60,0,0,56,0,0,112,0, + 0,96,0,0,192,0,1,192,0,0,0,0,0,0,0,0, + 0,0,0,0,0,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,240,0,224,240,1,224,112,1, + 192,120,3,192,62,7,192,63,255,128,31,255,0,3,248,0, + 19,36,108,25,3,0,0,224,0,1,240,0,1,240,0,3, + 184,0,3,28,0,6,12,0,6,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,240,0,224,240,1,224, + 112,1,192,120,3,192,62,7,192,63,255,128,31,255,0,3, + 248,0,19,33,99,25,3,0,7,14,0,7,14,0,7,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,240,0,224,240,1,224,112,1,192,120,3,192,62, + 7,192,63,255,128,31,255,0,3,248,0,21,35,105,23,1, + 0,0,14,0,0,30,0,0,28,0,0,56,0,0,48,0, + 0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 0,120,120,0,112,120,0,240,60,1,224,30,1,224,30,3, + 192,15,3,128,15,7,128,7,135,0,3,143,0,3,206,0, + 1,252,0,1,252,0,0,248,0,0,120,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,16,25,50,21,3,0, + 224,0,224,0,224,0,224,0,255,224,255,252,255,254,224,62, + 224,15,224,7,224,7,224,7,224,7,224,7,224,15,224,62, + 255,254,255,252,255,224,224,0,224,0,224,0,224,0,224,0, + 224,0,17,25,75,19,2,0,7,224,0,31,248,0,126,124, + 0,112,60,0,240,28,0,224,28,0,224,28,0,224,56,0, + 224,248,0,225,224,0,225,192,0,225,192,0,225,224,0,225, + 240,0,224,252,0,224,63,0,224,15,0,224,7,128,224,3, + 128,224,3,128,231,3,128,227,131,128,227,231,128,225,255,0, + 224,124,0,15,27,54,19,2,0,14,0,7,0,3,128,3, + 128,1,192,0,192,0,0,0,0,0,0,15,240,63,252,60, + 60,120,30,112,14,0,14,0,14,15,254,63,254,124,14,112, + 14,224,14,224,30,224,30,240,62,120,238,63,238,15,142,15, + 28,56,19,2,0,0,112,0,224,0,224,1,192,3,128,3, + 0,6,0,0,0,0,0,0,0,15,240,63,252,60,60,120, + 30,112,14,0,14,0,14,15,254,63,254,124,14,112,14,224, + 14,224,30,224,30,240,62,120,238,63,238,15,142,15,28,56, + 19,2,0,3,192,7,192,7,224,14,224,12,112,28,48,24, + 24,0,0,0,0,0,0,15,240,63,252,60,60,120,30,112, + 14,0,14,0,14,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,15,25,50,19,2, + 0,15,152,31,240,25,224,0,0,0,0,0,0,0,0,15, + 240,63,252,60,60,120,30,112,14,0,14,0,14,15,254,63, + 254,124,14,112,14,224,14,224,30,224,30,240,62,120,238,63, + 238,15,142,15,25,50,19,2,0,28,56,28,56,28,56,0, + 0,0,0,0,0,0,0,15,240,63,252,60,60,120,30,112, + 14,0,14,0,14,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,15,29,58,19,2, + 0,3,128,12,64,8,32,8,32,8,32,12,64,7,192,0, + 0,0,0,0,0,0,0,15,240,63,252,60,124,120,30,112, + 30,0,30,0,30,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,27,18,72,31,2, + 0,15,224,126,0,63,241,255,0,124,121,199,128,112,31,129, + 192,112,15,1,192,0,15,0,224,0,14,0,224,15,255,255, + 224,63,255,255,224,124,14,0,0,240,14,0,0,224,14,0, + 0,224,31,0,224,224,27,1,192,240,59,131,192,124,241,239, + 128,63,225,255,128,31,192,126,0,14,26,52,18,2,248,15, + 224,63,248,60,120,112,60,112,28,240,28,224,0,224,0,224, + 0,224,0,224,0,224,0,240,28,112,28,112,60,60,120,31, + 240,7,224,1,0,1,224,1,240,0,120,0,24,0,24,7, + 240,7,224,16,28,56,19,2,0,28,0,14,0,14,0,7, + 0,3,128,1,128,0,192,0,0,0,0,0,0,7,224,31, + 248,60,124,120,30,112,14,240,14,224,14,255,254,255,255,224, + 0,224,0,224,0,112,14,112,14,120,30,62,124,31,248,7, + 224,16,28,56,19,2,0,0,120,0,240,0,224,1,192,1, + 128,3,128,3,0,0,0,0,0,0,0,7,224,31,248,60, + 124,120,30,112,14,240,14,224,14,255,254,255,255,224,0,224, + 0,224,0,112,14,112,14,120,30,62,124,31,248,7,224,16, + 28,56,19,2,0,3,192,7,192,7,224,14,224,12,112,24, + 48,24,24,0,0,0,0,0,0,7,224,31,248,60,124,120, + 30,112,14,240,14,224,14,255,254,255,255,224,0,224,0,224, + 0,112,14,112,14,120,30,62,124,31,248,7,224,16,25,50, + 19,2,0,28,56,28,56,28,56,0,0,0,0,0,0,0, + 0,7,224,31,248,60,60,120,14,112,14,240,14,224,6,255, + 254,255,255,224,0,224,0,224,0,112,14,112,14,120,30,62, + 60,31,248,7,224,6,27,27,8,255,0,240,112,56,24,28, + 12,0,0,0,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,6,27,27,8,2,0,28,56,112,112, + 224,192,0,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,9,27,54,8,255,0,62,0,62, + 0,119,0,115,0,227,128,193,128,0,0,0,0,0,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,10,25,50,8,255,0,227,192,227,192,227,192,0, + 0,0,0,0,0,0,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,17,26,78,21,2, + 0,16,4,0,56,28,0,30,248,0,7,192,0,15,192,0, + 60,240,0,112,120,0,0,60,0,7,252,0,31,254,0,62, + 63,0,120,15,0,112,7,0,240,7,128,240,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,240,7,0, + 112,7,0,120,15,0,62,62,0,31,252,0,7,240,0,15, + 25,50,19,2,0,15,48,31,240,27,224,0,0,0,0,0, + 0,0,0,227,240,239,248,252,124,248,30,240,30,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,17,28,84,21,2,0,14,0,0, + 15,0,0,7,0,0,3,128,0,1,128,0,0,192,0,0, + 224,0,0,0,0,0,0,0,0,0,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,17,28,84,21,2,0,0,56,0,0,120,0,0,112,0, + 0,224,0,0,192,0,1,128,0,3,0,0,0,0,0,0, + 0,0,0,0,0,7,240,0,31,252,0,62,62,0,120,15, + 0,112,7,0,240,7,0,240,7,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,7,128,240,7,128,112,7,0,120, + 15,0,62,62,0,31,252,0,7,240,0,17,28,84,21,2, + 0,1,192,0,3,224,0,3,224,0,7,112,0,14,56,0, + 12,24,0,28,28,0,0,0,0,0,0,0,0,0,0,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 0,240,7,128,224,3,128,224,3,128,224,3,128,224,3,128, + 240,7,128,240,7,128,112,7,0,120,15,0,62,62,0,31, + 252,0,7,240,0,17,25,75,21,2,0,7,152,0,15,248, + 0,12,240,0,0,0,0,0,0,0,0,0,0,0,0,0, + 7,240,0,31,252,0,62,62,0,120,15,0,112,7,0,240, + 7,0,240,7,128,224,3,128,224,3,128,224,3,128,224,3, + 128,240,7,128,240,7,128,112,7,0,120,15,0,62,62,0, + 31,252,0,7,240,0,17,25,75,21,2,0,28,56,0,28, + 56,0,28,56,0,0,0,0,0,0,0,0,0,0,0,0, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,240,7,128,240,7,128,112,7,0,120,15,0,62,62, + 0,31,252,0,7,240,0,20,15,45,34,7,3,0,96,0, + 0,240,0,0,240,0,0,96,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,0,0,0,0,0,0,0,96, + 0,0,240,0,0,240,0,0,96,0,17,23,69,21,2,254, + 0,1,0,0,1,128,0,3,128,7,247,0,31,254,0,62, + 62,0,120,31,0,112,63,0,240,55,128,240,119,128,224,227, + 128,225,195,128,225,131,128,227,131,128,231,7,128,254,7,128, + 124,7,0,124,15,0,62,62,0,127,252,0,103,240,0,224, + 0,0,192,0,0,15,28,56,19,2,0,28,0,30,0,14, + 0,7,0,3,0,1,128,1,128,0,0,0,0,0,0,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,240,30,124,126,63, + 238,31,142,15,28,56,19,2,0,0,112,0,240,0,224,1, + 192,1,128,3,0,7,0,0,0,0,0,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,30,124,126,63,238,31, + 142,15,28,56,19,2,0,3,128,7,192,7,192,14,224,12, + 96,24,48,24,48,0,0,0,0,0,0,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,240,30,240,30,124,126,63,238,31,142,15, + 25,50,19,2,0,56,112,56,112,56,112,0,0,0,0,0, + 0,0,0,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,240,30,240, + 62,124,126,63,238,31,142,16,34,68,18,1,249,0,56,0, + 112,0,96,0,224,1,192,1,128,0,0,0,0,0,0,224, + 7,240,7,112,15,112,14,120,14,56,30,60,28,28,28,28, + 60,30,56,14,120,15,112,7,112,7,240,7,224,3,224,3, + 224,1,192,1,192,3,128,3,128,231,128,255,0,127,0,62, + 0,16,32,64,20,2,249,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,227,240,231,248,254,60,248,30,240,14,240, + 15,224,7,224,7,224,7,224,7,224,7,224,7,240,15,240, + 14,248,30,254,124,239,248,227,240,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,16,32,64,18,1,249,28,56,28, + 56,28,56,0,0,0,0,0,0,0,0,224,7,224,7,240, + 15,112,14,120,14,56,30,60,28,60,28,28,56,30,56,14, + 120,15,112,15,112,7,240,7,224,3,224,3,192,3,192,3, + 192,3,128,3,128,7,128,7,0,7,0,15,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=20 h=28 x= 7 y=12 dx=34 dy= 0 ascent=26 len=75 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25n[774] U8G_SECTION(".progmem.u8g_font_fur25n") = { + 0,46,45,254,247,25,0,0,0,0,42,57,0,26,252,25, + 0,14,13,26,22,4,12,24,96,28,224,28,224,12,192,7, + 128,243,60,255,252,231,156,7,128,12,192,28,224,60,224,24, + 96,20,21,63,34,7,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,255,255,240,255,255,240,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,6,9,9,9,2,252,60,120,120,112, + 112,224,224,224,192,8,3,3,10,1,7,255,255,255,3,4, + 4,9,3,0,224,224,224,224,10,28,56,13,2,254,0,192, + 1,192,1,128,1,128,3,128,3,0,3,0,3,0,7,0, + 6,0,6,0,14,0,12,0,12,0,28,0,28,0,24,0, + 24,0,56,0,48,0,48,0,112,0,112,0,96,0,96,0, + 224,0,192,0,192,0,15,25,50,19,2,1,15,224,63,248, + 62,248,120,60,112,28,112,30,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,240,14, + 112,30,112,28,120,28,60,60,63,248,31,240,7,192,8,25, + 25,19,5,0,15,31,63,127,255,231,135,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,15,25,50, + 19,2,1,15,240,63,248,62,252,120,28,120,30,112,14,240, + 14,0,14,0,30,0,28,0,60,0,120,0,120,0,240,1, + 224,3,192,7,128,15,0,31,0,62,0,60,0,120,0,240, + 0,255,254,255,254,16,25,50,19,2,1,15,240,63,248,60, + 28,120,14,112,14,112,14,0,14,0,14,0,28,0,120,3, + 240,3,240,0,248,0,30,0,14,0,15,0,7,0,7,240, + 7,240,7,240,14,120,30,60,124,31,248,7,224,17,25,75, + 19,1,0,0,60,0,0,124,0,0,124,0,0,252,0,1, + 220,0,1,220,0,3,156,0,7,28,0,7,28,0,14,28, + 0,28,28,0,60,28,0,56,28,0,112,28,0,240,28,0, + 224,28,0,255,255,128,255,255,128,255,255,128,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,15,25, + 50,19,2,0,127,252,127,252,127,252,112,0,112,0,112,0, + 112,0,112,0,115,240,127,248,124,60,120,28,112,30,96,14, + 0,14,0,14,0,14,0,14,0,14,224,30,240,28,112,60, + 124,120,63,240,15,192,16,25,50,19,1,1,15,240,31,252, + 60,28,120,30,112,14,240,14,224,0,224,0,224,0,227,240, + 231,252,239,252,252,30,248,14,240,15,240,7,240,7,240,7, + 240,7,112,7,120,14,56,14,62,60,15,248,7,224,15,25, + 50,19,2,0,255,254,255,254,0,14,0,30,0,28,0,28, + 0,60,0,56,0,56,0,120,0,112,0,240,0,240,0,224, + 1,224,1,224,1,192,3,192,3,128,7,128,7,128,7,0, + 15,0,15,0,14,0,16,25,50,19,1,1,15,240,63,252, + 60,60,120,30,112,14,112,14,112,14,112,14,56,28,60,60, + 15,240,15,240,62,56,56,28,112,14,224,7,224,7,224,7, + 224,7,224,7,240,15,120,14,60,60,31,248,7,224,16,25, + 50,19,2,1,31,248,63,252,120,30,112,14,240,15,224,15, + 224,15,224,15,224,15,240,15,112,31,120,63,63,247,15,231, + 0,7,0,7,0,7,0,14,112,14,112,14,112,30,112,60, + 60,120,31,240,15,224}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=31 h=37 x= 8 y=21 dx=34 dy= 0 ascent=28 len=120 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25r[5389] U8G_SECTION(".progmem.u8g_font_fur25r") = { + 0,46,45,254,247,25,6,119,15,27,32,127,249,28,247,25, + 249,0,0,0,10,0,0,3,25,25,12,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 0,0,0,224,224,224,11,10,20,15,2,15,241,224,112,224, + 112,224,112,224,112,224,112,224,112,224,96,192,96,192,96,192, + 22,25,75,25,2,0,0,112,224,0,112,224,0,96,192,0, + 225,192,0,225,192,0,193,128,0,193,128,63,255,252,63,255, + 248,1,131,0,3,135,0,3,134,0,3,6,0,7,14,0, + 255,255,224,255,255,224,14,28,0,14,28,0,12,24,0,12, + 24,0,28,56,0,28,56,0,24,48,0,56,112,0,56,112, + 0,16,32,64,18,1,252,1,128,1,128,1,128,15,240,31, + 248,63,252,121,158,113,142,113,142,113,142,113,128,113,128,121, + 128,63,128,31,240,15,252,1,254,1,159,1,143,1,135,225, + 135,225,135,225,135,241,135,121,143,127,254,63,252,15,240,1, + 128,1,128,1,128,1,128,28,27,108,32,2,0,0,0,14, + 0,0,0,12,0,31,128,24,0,63,192,24,0,121,224,48, + 0,240,240,48,0,224,112,96,0,224,112,224,0,224,112,192, + 0,224,113,192,0,240,113,128,0,112,227,128,0,63,227,0, + 0,31,134,31,128,0,6,63,192,0,12,121,224,0,12,240, + 240,0,24,224,112,0,56,224,112,0,48,224,112,0,112,224, + 112,0,96,224,112,0,224,224,112,0,192,240,240,1,128,121, + 224,1,128,63,192,3,0,31,128,23,25,75,26,2,1,7, + 248,0,15,252,0,30,30,0,28,14,0,28,14,0,28,14, + 0,30,28,0,30,60,0,15,248,0,7,224,0,15,192,112, + 31,224,112,61,224,112,120,240,112,240,120,112,224,60,112,224, + 30,224,224,15,224,224,7,224,240,3,192,120,3,224,124,15, + 240,63,255,120,31,252,124,7,240,62,4,10,10,13,4,15, + 240,112,112,112,112,112,112,96,96,96,6,30,30,12,3,251, + 12,24,24,56,56,112,112,112,112,240,224,224,224,224,224,224, + 224,224,224,224,240,112,112,112,112,56,56,24,24,12,6,30, + 30,12,3,251,224,96,112,112,48,56,56,56,56,28,28,28, + 28,28,28,28,28,28,28,28,28,60,56,56,56,48,112,112, + 96,224,14,13,26,22,4,12,24,96,28,224,28,224,12,192, + 7,128,243,60,255,252,231,156,7,128,12,192,28,224,60,224, + 24,96,20,21,63,34,7,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,6,9,9,9,2,252,60,120,120, + 112,112,224,224,224,192,8,3,3,10,1,7,255,255,255,3, + 4,4,9,3,0,224,224,224,224,10,28,56,13,2,254,0, + 192,1,192,1,128,1,128,3,128,3,0,3,0,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,28,0,24, + 0,24,0,56,0,48,0,48,0,112,0,112,0,96,0,96, + 0,224,0,192,0,192,0,15,25,50,19,2,1,15,224,63, + 248,62,248,120,60,112,28,112,30,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 14,112,30,112,28,120,28,60,60,63,248,31,240,7,192,8, + 25,25,19,5,0,15,31,63,127,255,231,135,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,25, + 50,19,2,1,15,240,63,248,62,252,120,28,120,30,112,14, + 240,14,0,14,0,30,0,28,0,60,0,120,0,120,0,240, + 1,224,3,192,7,128,15,0,31,0,62,0,60,0,120,0, + 240,0,255,254,255,254,16,25,50,19,2,1,15,240,63,248, + 60,28,120,14,112,14,112,14,0,14,0,14,0,28,0,120, + 3,240,3,240,0,248,0,30,0,14,0,15,0,7,0,7, + 240,7,240,7,240,14,120,30,60,124,31,248,7,224,17,25, + 75,19,1,0,0,60,0,0,124,0,0,124,0,0,252,0, + 1,220,0,1,220,0,3,156,0,7,28,0,7,28,0,14, + 28,0,28,28,0,60,28,0,56,28,0,112,28,0,240,28, + 0,224,28,0,255,255,128,255,255,128,255,255,128,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,15, + 25,50,19,2,0,127,252,127,252,127,252,112,0,112,0,112, + 0,112,0,112,0,115,240,127,248,124,60,120,28,112,30,96, + 14,0,14,0,14,0,14,0,14,0,14,224,30,240,28,112, + 60,124,120,63,240,15,192,16,25,50,19,1,1,15,240,31, + 252,60,28,120,30,112,14,240,14,224,0,224,0,224,0,227, + 240,231,252,239,252,252,30,248,14,240,15,240,7,240,7,240, + 7,240,7,112,7,120,14,56,14,62,60,15,248,7,224,15, + 25,50,19,2,0,255,254,255,254,0,14,0,30,0,28,0, + 28,0,60,0,56,0,56,0,120,0,112,0,240,0,240,0, + 224,1,224,1,224,1,192,3,192,3,128,7,128,7,128,7, + 0,15,0,15,0,14,0,16,25,50,19,1,1,15,240,63, + 252,60,60,120,30,112,14,112,14,112,14,112,14,56,28,60, + 60,15,240,15,240,62,56,56,28,112,14,224,7,224,7,224, + 7,224,7,224,7,240,15,120,14,60,60,31,248,7,224,16, + 25,50,19,2,1,31,248,63,252,120,30,112,14,240,15,224, + 15,224,15,224,15,224,15,240,15,112,31,120,63,63,247,15, + 231,0,7,0,7,0,7,0,14,112,14,112,14,112,30,112, + 60,60,120,31,240,15,224,3,18,18,9,3,0,224,224,224, + 224,0,0,0,0,0,0,0,0,0,0,224,224,224,224,6, + 22,22,9,1,252,56,56,56,56,0,0,0,0,0,0,0, + 0,0,60,56,56,56,112,112,112,96,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,240,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,252,0,0,31,0,0,7,224,0,0,248,0,0,31,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,15,25,50,18,1,1,31,224,63,248,125,252,240,30,96, + 14,0,14,0,14,0,30,0,28,0,60,0,120,0,240,1, + 192,3,128,7,128,7,0,7,0,7,0,7,0,0,0,0, + 0,0,0,7,0,7,0,7,0,30,30,120,34,2,251,0, + 31,240,0,0,255,254,0,3,255,255,0,7,224,31,192,15, + 128,3,224,30,0,0,240,60,0,0,112,56,31,56,120,112, + 63,184,56,112,125,248,56,240,112,120,60,224,240,120,28,224, + 224,56,28,224,224,56,28,224,224,56,28,224,224,56,28,224, + 224,56,28,224,224,56,56,240,224,120,56,112,112,120,120,112, + 120,254,240,120,63,223,224,56,31,15,192,60,0,0,0,30, + 0,0,0,15,128,0,0,7,224,0,0,3,255,248,0,0, + 255,248,0,0,31,240,0,24,25,75,26,1,0,0,60,0, + 0,124,0,0,126,0,0,254,0,0,238,0,0,239,0,1, + 231,0,1,199,128,3,195,128,3,131,192,7,131,192,7,1, + 192,7,1,224,15,0,224,14,0,240,31,255,240,31,255,240, + 31,255,248,60,0,56,56,0,60,120,0,28,112,0,30,112, + 0,30,240,0,14,224,0,15,18,25,75,23,3,0,255,248, + 0,255,254,0,255,255,0,224,15,128,224,7,128,224,3,128, + 224,3,128,224,3,128,224,7,128,224,15,0,255,254,0,255, + 252,0,255,254,0,224,15,0,224,3,128,224,3,192,224,1, + 192,224,1,192,224,1,192,224,3,192,224,7,192,224,15,128, + 255,255,0,255,254,0,255,248,0,19,25,75,23,2,1,3, + 254,0,15,255,128,30,3,192,60,1,192,56,0,224,112,0, + 224,112,0,0,112,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,112,0,0,112,0,224,112,0,224,56,1,224,60,1, + 192,31,7,128,15,255,0,1,252,0,20,25,75,25,3,0, + 255,240,0,255,254,0,255,255,0,224,31,128,224,7,192,224, + 3,192,224,1,224,224,0,224,224,0,240,224,0,240,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,240, + 224,0,240,224,0,224,224,1,224,224,3,192,224,7,192,224, + 31,128,255,255,0,255,252,0,255,240,0,16,25,50,21,3, + 0,255,254,255,254,255,254,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,255,255, + 255,255,255,15,25,50,20,3,0,255,254,255,254,255,254,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 252,255,252,255,252,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,21,25,75,26,2, + 1,1,255,128,7,255,192,15,255,224,30,0,240,60,0,120, + 120,0,56,112,0,0,112,0,0,240,0,0,224,0,0,224, + 0,0,224,15,248,224,15,248,224,15,248,224,0,56,240,0, + 56,112,0,56,112,0,56,120,0,56,60,0,56,62,0,56, + 31,0,248,15,255,248,7,255,240,0,255,128,18,25,75,24, + 3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,3,25,25, + 9,3,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,14,25,50,19, + 2,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,224,28,224,28,240,60,120,120,127,240, + 63,224,15,192,18,25,75,23,3,0,224,7,128,224,15,0, + 224,30,0,224,60,0,224,120,0,224,240,0,225,224,0,227, + 192,0,231,128,0,239,0,0,254,0,0,255,0,0,239,128, + 0,231,128,0,231,192,0,227,224,0,225,240,0,224,248,0, + 224,120,0,224,60,0,224,62,0,224,31,0,224,15,128,224, + 7,192,224,3,192,15,25,50,19,3,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,25,25,100, + 31,3,0,248,0,15,128,252,0,31,128,252,0,31,128,252, + 0,31,128,238,0,59,128,238,0,59,128,239,0,123,128,231, + 0,115,128,231,0,115,128,231,128,243,128,227,128,227,128,227, + 128,227,128,225,193,195,128,225,193,195,128,225,193,195,128,224, + 227,131,128,224,227,131,128,224,247,131,128,224,119,3,128,224, + 119,3,128,224,127,3,128,224,62,3,128,224,62,3,128,224, + 28,3,128,224,28,3,128,19,25,75,25,3,0,248,0,224, + 248,0,224,252,0,224,254,0,224,254,0,224,239,0,224,239, + 0,224,231,128,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,120,224,224,60,224, + 224,60,224,224,30,224,224,30,224,224,15,224,224,15,224,224, + 7,224,224,3,224,224,3,224,22,25,75,26,2,1,3,255, + 0,15,255,192,31,255,224,62,1,240,56,0,112,120,0,120, + 112,0,56,240,0,56,240,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,112,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,31,3,224, + 15,255,192,7,255,128,0,252,0,16,25,50,21,3,0,255, + 224,255,252,255,254,224,30,224,15,224,7,224,7,224,7,224, + 7,224,15,224,30,255,254,255,252,255,224,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,24,25,75,27,2,1,3,255,0,15,255,192,31,255,224, + 62,1,240,56,0,112,120,0,120,112,0,56,240,0,56,240, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,240,0,60,112,0,56,112,0,56,120,0,120, + 56,0,112,60,0,240,31,3,224,15,255,255,7,255,255,0, + 255,255,17,25,75,21,3,0,255,240,0,255,252,0,255,254, + 0,224,31,0,224,15,0,224,7,0,224,7,0,224,7,0, + 224,15,0,224,30,0,255,252,0,255,240,0,255,252,0,224, + 60,0,224,30,0,224,14,0,224,14,0,224,14,0,224,15, + 0,224,7,0,224,7,0,224,7,0,224,7,0,224,7,0, + 224,7,128,18,25,75,22,2,1,7,252,0,31,254,0,63, + 255,0,120,7,128,112,3,128,112,3,128,112,0,0,112,0, + 0,120,0,0,124,0,0,63,192,0,31,252,0,7,255,0, + 0,63,128,0,7,128,0,3,192,0,1,192,224,1,192,224, + 1,192,240,1,192,112,3,192,124,15,128,63,255,0,31,254, + 0,7,240,0,19,25,75,21,1,0,255,255,224,255,255,224, + 255,255,224,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,19,25,75,25,3,0,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,240,0, + 224,240,1,224,112,1,192,120,3,192,62,7,192,63,255,128, + 31,255,0,3,248,0,21,25,75,22,1,0,240,0,120,240, + 0,240,240,0,240,120,0,240,120,1,224,120,1,224,60,1, + 192,60,3,192,60,3,192,28,3,128,30,7,128,14,7,128, + 14,7,0,15,15,0,7,15,0,7,14,0,7,158,0,3, + 158,0,3,156,0,3,252,0,1,252,0,1,248,0,1,248, + 0,0,248,0,0,240,0,31,25,100,33,1,0,224,7,192, + 14,240,7,192,14,240,7,192,30,112,7,192,30,112,14,224, + 28,120,14,224,60,120,14,224,60,56,14,240,56,56,28,112, + 56,60,28,112,120,28,28,112,120,28,60,56,112,28,56,56, + 112,30,56,56,240,14,56,56,224,14,112,28,224,14,112,28, + 224,7,112,29,192,7,112,29,192,7,224,15,192,7,224,15, + 192,3,224,15,128,3,224,7,128,3,192,7,128,1,192,7, + 0,22,25,75,24,1,0,124,0,120,60,0,240,30,1,224, + 31,1,224,15,3,192,7,135,128,7,135,128,3,207,0,1, + 238,0,1,254,0,0,252,0,0,120,0,0,252,0,0,252, + 0,1,222,0,3,207,0,3,143,0,7,135,128,15,3,192, + 14,3,192,30,1,224,60,1,240,56,0,240,120,0,120,240, + 0,124,21,25,75,23,1,0,240,0,120,120,0,112,120,0, + 240,60,1,224,30,1,224,30,3,192,15,3,128,15,7,128, + 7,135,0,3,143,0,3,206,0,1,252,0,1,252,0,0, + 248,0,0,120,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,18,25,75,22,2,0,127,255,192,127,255,192,127, + 255,192,0,3,192,0,7,128,0,15,128,0,31,0,0,30, + 0,0,60,0,0,124,0,0,248,0,0,240,0,1,224,0, + 3,224,0,7,192,0,15,128,0,15,0,0,31,0,0,62, + 0,0,124,0,0,120,0,0,240,0,0,255,255,192,255,255, + 192,255,255,192,7,32,32,14,4,249,254,254,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,254,254,10,28,56,13,2,254, + 192,0,192,0,224,0,224,0,96,0,96,0,112,0,48,0, + 48,0,56,0,56,0,24,0,24,0,28,0,12,0,12,0, + 14,0,6,0,6,0,6,0,7,0,3,0,3,0,3,128, + 1,128,1,128,1,128,1,192,6,32,32,14,4,249,252,252, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,252,252,18,21, + 63,34,8,0,0,192,0,1,224,0,1,224,0,1,224,0, + 3,48,0,3,48,0,2,16,0,6,24,0,6,24,0,12, + 12,0,12,12,0,12,12,0,24,6,0,24,6,0,24,6, + 0,48,3,0,48,3,0,112,1,128,96,1,128,96,1,128, + 192,0,192,17,2,6,17,0,251,255,255,128,255,255,128,6, + 6,6,8,0,21,224,224,112,56,24,12,15,18,36,19,2, + 0,15,240,63,252,60,60,120,30,112,14,0,14,0,14,15, + 254,63,254,124,14,112,14,224,14,224,30,224,30,240,62,120, + 238,63,238,15,142,16,25,50,20,2,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,227,240,239,248,238,124,248, + 30,240,14,240,15,224,7,224,7,224,7,224,7,224,7,224, + 15,240,14,240,14,248,28,254,124,239,248,227,224,14,18,36, + 18,2,0,15,224,63,240,124,120,112,60,112,28,240,28,224, + 0,224,0,224,0,224,0,224,0,224,0,240,28,112,28,112, + 60,60,120,31,240,15,224,16,25,50,20,2,0,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,15,199,31,247,60, + 127,120,31,112,31,112,15,224,15,224,7,224,7,224,7,224, + 7,224,7,112,15,112,15,56,31,62,63,15,247,7,199,16, + 18,36,19,2,0,7,224,31,248,60,124,120,30,112,14,240, + 14,224,14,255,254,255,255,224,0,224,0,224,0,112,14,112, + 14,120,30,62,124,31,248,7,224,11,25,50,12,1,0,7, + 224,15,224,31,32,28,0,28,0,28,0,28,0,255,224,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,16,25,50,20,2,249,7,231,31,247,62,127,120,31,112, + 15,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,112,15,120,31,62,127,31,247,15,199,0,7,0,15,112, + 14,120,30,60,60,31,248,7,224,15,25,50,19,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,227,240,239, + 248,252,124,248,28,240,30,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,3,25,25,7,2,0,224,224,224,0,0,0,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 5,32,32,9,2,249,56,56,56,0,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,240,224,14,25,50,17,2,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,120,224,240,225,224, + 225,192,227,192,231,128,239,0,254,0,254,0,239,0,231,128, + 231,128,227,192,225,224,225,224,224,240,224,120,224,60,3,25, + 25,8,2,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,26,18,72, + 30,2,0,227,224,124,0,239,241,255,0,252,123,143,128,248, + 63,3,128,240,30,3,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,15,18,36,19,2, + 0,227,240,239,248,252,124,248,30,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,17,18,54,21,2,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,16,25,50,20,2,249,227,240,231,248,254,60,248,30,240, + 14,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,240,14,248,30,254,124,239,248,227,240,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,16,25,50,21,2,249,7, + 199,31,247,62,63,120,31,112,15,240,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,15,112,15,120,31,62,127,31, + 247,7,199,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,10,18,36,12,2,0,231,192,239,192,254,0,248,0,240, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,14,18,36,18,2, + 0,31,192,127,240,120,248,240,56,224,56,224,0,240,0,126, + 0,63,224,15,248,0,252,0,60,0,28,224,28,240,60,120, + 248,63,240,31,192,10,22,44,12,1,1,28,0,28,0,28, + 0,28,0,255,192,255,192,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,30,0,15,192,7,192,15,18,36,19,2,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,62,124,126,63,238,31, + 142,16,18,36,18,1,0,224,7,240,7,240,15,112,14,120, + 14,56,30,56,28,60,28,28,56,30,56,14,56,14,112,15, + 112,7,224,7,224,3,224,3,192,3,192,26,18,72,28,1, + 0,224,30,1,192,224,62,3,192,224,63,3,128,112,63,3, + 128,112,119,3,128,112,115,7,0,56,115,135,0,56,115,135, + 0,56,227,142,0,24,225,206,0,28,225,206,0,29,193,206, + 0,29,192,220,0,15,192,252,0,15,128,252,0,15,128,120, + 0,7,128,120,0,7,128,120,0,17,18,54,19,1,0,112, + 7,0,120,14,0,60,30,0,30,28,0,30,56,0,15,112, + 0,7,240,0,3,224,0,3,192,0,3,224,0,7,224,0, + 15,240,0,14,120,0,28,60,0,60,28,0,120,30,0,112, + 15,0,240,7,128,16,25,50,18,1,249,224,7,240,7,112, + 15,112,14,120,14,56,30,60,28,28,28,28,60,30,56,14, + 56,15,112,7,112,7,240,7,224,3,224,3,224,1,192,1, + 192,3,128,3,128,7,128,7,0,7,0,15,0,13,18,36, + 17,2,0,127,248,127,248,0,120,0,112,0,240,1,224,3, + 192,3,192,7,128,15,0,31,0,30,0,60,0,120,0,120, + 0,240,0,255,248,255,248,11,35,70,17,3,248,1,224,3, + 224,7,128,15,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,30,0,28,0,60,0,248,0,240, + 0,248,0,60,0,28,0,30,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,7,0,7,128,3, + 224,1,224,2,37,37,12,5,247,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,11,35, + 70,17,3,248,240,0,248,0,60,0,28,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,15,0, + 7,0,7,128,3,224,1,224,3,224,7,128,7,0,15,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,28,0,60,0,248,0,240,0,18,4,12,18,0,7, + 31,1,192,63,231,128,121,255,0,224,62,0,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=37 h=43 x=10 y=26 dx=40 dy= 0 ascent=43 len=185 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =43 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30[16505] U8G_SECTION(".progmem.u8g_font_fur30") = { + 0,54,54,253,245,30,9,94,20,223,32,255,249,43,245,31, + 248,0,0,0,12,0,0,4,30,30,14,5,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,0,0,0,240,240,240,240,12,12,24,18,3, + 18,240,240,240,240,240,240,240,240,240,240,240,240,240,112,224, + 112,224,112,96,112,96,112,96,96,26,30,120,30,2,0,0, + 28,14,0,0,28,28,0,0,28,28,0,0,28,28,0,0, + 56,24,0,0,56,56,0,0,56,56,0,0,112,56,0,0, + 112,112,0,31,255,255,192,31,255,255,128,31,255,255,128,0, + 224,224,0,0,224,224,0,1,192,224,0,1,193,192,0,1, + 193,192,0,127,255,254,0,255,255,254,0,255,255,254,0,3, + 3,128,0,7,7,0,0,7,7,0,0,7,7,0,0,14, + 7,0,0,14,14,0,0,14,14,0,0,14,14,0,0,28, + 28,0,0,28,28,0,0,20,37,111,22,1,252,0,96,0, + 0,96,0,0,96,0,3,252,0,15,254,0,63,255,0,63, + 255,128,124,103,128,120,99,192,240,99,192,240,99,192,240,96, + 0,240,96,0,240,96,0,120,96,0,127,96,0,63,240,0, + 31,254,0,15,255,128,1,255,192,0,111,224,0,97,224,0, + 96,240,0,96,240,0,96,240,240,96,240,240,96,240,240,96, + 240,120,96,240,124,97,224,63,255,192,31,255,128,15,255,0, + 0,96,0,0,96,0,0,96,0,0,96,0,33,31,155,37, + 2,0,0,0,0,224,0,15,192,0,192,0,31,240,1,192, + 0,63,248,1,128,0,120,60,3,0,0,240,60,7,0,0, + 240,30,6,0,0,240,30,14,0,0,240,30,12,0,0,240, + 30,28,0,0,240,30,24,0,0,240,28,56,0,0,112,60, + 48,0,0,120,124,112,0,0,63,248,224,0,0,31,240,192, + 96,0,3,129,195,252,0,0,1,135,254,0,0,3,143,15, + 0,0,3,14,7,0,0,7,30,7,128,0,6,30,7,128, + 0,14,30,7,128,0,28,30,7,128,0,28,30,7,128,0, + 56,30,7,128,0,56,30,7,128,0,112,15,15,0,0,96, + 15,254,0,0,224,7,252,0,0,192,1,248,0,27,30,120, + 30,2,1,3,254,0,0,7,255,0,0,15,143,128,0,15, + 3,192,0,30,3,192,0,30,3,192,0,30,3,192,0,30, + 3,192,0,31,7,128,0,15,15,128,0,15,191,0,0,7, + 252,0,0,3,248,0,0,7,224,15,0,15,240,15,0,63, + 248,15,0,124,124,15,0,120,62,15,0,248,31,15,0,240, + 15,142,0,240,7,206,0,240,3,254,0,240,1,254,0,240, + 0,252,0,248,0,124,0,124,0,126,0,126,1,255,0,63, + 255,255,128,31,255,207,192,7,255,3,224,4,12,12,15,5, + 18,240,240,240,240,112,112,112,112,112,112,112,112,7,36,36, + 15,4,251,14,14,28,28,60,56,56,120,120,120,112,112,240, + 240,240,240,240,240,240,240,240,240,240,240,112,112,120,120,120, + 56,56,60,28,28,14,14,7,36,36,14,4,251,224,224,96, + 112,112,120,56,56,60,60,60,28,28,28,30,30,30,30,30, + 30,30,30,28,28,60,60,60,60,56,56,120,112,112,224,224, + 224,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0,4,20,20,11,4,0,240,240,240, + 240,240,0,0,0,0,0,0,0,0,0,0,240,240,240,240, + 240,6,26,26,11,2,250,60,60,60,60,60,0,0,0,0, + 0,0,0,0,0,0,0,60,60,60,56,120,112,112,112,224, + 224,24,21,63,40,8,2,0,0,1,0,0,15,0,0,63, + 0,1,252,0,7,224,0,63,0,1,252,0,7,224,0,63, + 0,0,252,0,0,224,0,0,248,0,0,126,0,0,15,192, + 0,3,248,0,0,126,0,0,31,192,0,3,240,0,0,126, + 0,0,31,0,0,3,24,10,30,40,8,7,255,255,255,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,255,255,255,24,21,63,40,8,2, + 128,0,0,240,0,0,252,0,0,63,128,0,7,224,0,0, + 252,0,0,63,0,0,7,224,0,0,252,0,0,63,0,0, + 7,0,0,31,0,0,126,0,3,240,0,31,192,0,126,0, + 3,248,0,15,192,0,126,0,0,248,0,0,192,0,0,18, + 30,90,21,1,1,15,248,0,31,254,0,63,255,0,126,127, + 128,248,7,128,112,3,192,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,15,0,0,30,0,0,60,0,0, + 120,0,1,240,0,1,224,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,0,0,0,0,0,0, + 0,0,0,3,192,0,3,192,0,3,192,0,3,192,0,35, + 37,185,39,2,249,0,7,252,0,0,0,63,255,128,0,0, + 255,255,240,0,1,255,255,248,0,7,248,3,252,0,15,224, + 0,126,0,15,128,0,31,0,31,0,0,15,128,62,0,0, + 7,128,60,0,0,7,192,120,7,231,131,192,120,15,247,131, + 192,112,31,255,129,224,240,62,31,129,224,240,60,15,129,224, + 240,120,7,129,224,240,120,7,129,224,240,120,7,129,224,240, + 120,7,129,224,240,120,7,129,224,240,120,7,129,224,240,120, + 7,129,192,240,120,7,129,192,112,56,15,131,192,120,60,15, + 135,128,120,30,27,255,0,124,31,251,255,0,60,15,240,252, + 0,62,1,128,48,0,31,0,0,0,0,31,128,0,0,0, + 15,224,0,0,0,7,248,0,128,0,3,255,255,128,0,0, + 255,255,128,0,0,63,255,128,0,0,7,254,0,0,28,30, + 120,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,63,192,0,0,127,192,0,0,121,224,0, + 0,121,224,0,0,241,240,0,0,240,240,0,1,240,240,0, + 1,224,248,0,1,224,120,0,3,224,124,0,3,192,60,0, + 7,192,60,0,7,128,62,0,7,128,30,0,15,128,31,0, + 15,255,255,0,31,255,255,128,31,255,255,128,30,0,7,128, + 60,0,3,192,60,0,3,192,124,0,3,224,120,0,1,224, + 120,0,1,224,240,0,0,240,240,0,0,240,21,30,90,26, + 3,0,255,254,0,255,255,128,255,255,192,255,255,224,240,7, + 224,240,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,224,240,1,224,240,7,192,255,255,128,255,255,0,255, + 255,192,240,3,224,240,0,240,240,0,112,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,248,240,1,248,240,7,240, + 255,255,224,255,255,224,255,255,128,255,254,0,22,30,90,26, + 2,1,1,255,128,7,255,224,15,255,240,31,0,248,62,0, + 120,60,0,60,120,0,60,120,0,60,120,0,0,112,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,112,0, + 0,112,0,0,120,0,60,120,0,60,60,0,60,60,0,120, + 31,0,248,15,255,240,7,255,224,1,255,128,23,30,90,28, + 3,0,255,248,0,255,255,0,255,255,192,255,255,224,240,15, + 240,240,1,248,240,0,248,240,0,124,240,0,60,240,0,60, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 60,240,0,60,240,0,124,240,0,248,240,1,240,240,7,240, + 255,255,224,255,255,192,255,255,0,255,248,0,19,30,90,24, + 3,0,255,255,192,255,255,192,255,255,192,255,255,192,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,17,30,90,23, + 3,0,255,255,128,255,255,128,255,255,128,255,255,128,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,0,255,255,0,255, + 255,0,255,255,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,25,30,120,30, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,128,63,0,62,0,15,0,60,0,7,128,120,0, + 7,128,120,0,0,0,112,0,0,0,240,0,0,0,240,0, + 0,0,240,0,0,0,240,0,0,0,240,3,255,128,240,3, + 255,128,240,3,255,128,240,3,255,128,240,0,7,128,240,0, + 7,128,120,0,7,128,120,0,7,128,124,0,7,128,62,0, + 7,128,62,0,7,128,31,128,7,128,15,255,255,128,7,255, + 255,128,3,255,255,0,0,255,248,0,22,30,90,28,3,0, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,255,255,252,255,255,252,255,255,252, + 255,255,252,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,4,30,30,10,3,0, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,17,30, + 90,22,2,0,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,0,7,128,0, + 7,128,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,240,7,128,240,7,128,240,15,128,120, + 31,0,127,255,0,63,254,0,31,252,0,15,240,0,22,30, + 90,26,3,0,240,1,240,240,3,224,240,7,192,240,15,128, + 240,31,0,240,30,0,240,60,0,240,124,0,240,248,0,241, + 240,0,243,224,0,247,192,0,255,128,0,255,128,0,255,192, + 0,247,192,0,243,224,0,243,240,0,241,248,0,240,252,0, + 240,124,0,240,62,0,240,31,0,240,31,128,240,15,192,240, + 7,192,240,3,224,240,1,240,240,1,248,240,0,252,17,30, + 90,21,3,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,30,30, + 120,36,3,0,252,0,0,252,254,0,1,252,254,0,1,252, + 254,0,1,252,255,0,3,252,255,0,3,252,247,128,7,188, + 247,128,7,188,247,128,7,188,243,192,15,60,243,192,15,60, + 243,192,14,60,241,224,30,60,241,224,30,60,240,224,28,60, + 240,240,60,60,240,240,60,60,240,120,120,60,240,120,120,60, + 240,120,120,60,240,60,240,60,240,60,240,60,240,28,224,60, + 240,31,224,60,240,31,224,60,240,15,192,60,240,15,192,60, + 240,15,192,60,240,7,128,60,240,7,128,60,22,30,90,28, + 3,0,252,0,60,252,0,60,254,0,60,254,0,60,255,0, + 60,255,0,60,255,128,60,247,128,60,247,192,60,243,192,60, + 243,224,60,241,224,60,241,240,60,240,240,60,240,248,60,240, + 120,60,240,124,60,240,60,60,240,62,60,240,30,60,240,31, + 60,240,15,60,240,15,188,240,7,188,240,3,252,240,3,252, + 240,1,252,240,1,252,240,0,252,240,0,252,26,30,120,30, + 2,1,1,255,224,0,3,255,240,0,15,255,252,0,31,255, + 254,0,31,0,62,0,62,0,31,0,60,0,15,0,120,0, + 7,128,120,0,7,128,112,0,3,128,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,112,0, + 3,128,120,0,7,128,120,0,7,128,120,0,15,128,60,0, + 15,0,62,0,31,0,31,128,126,0,15,255,252,0,7,255, + 248,0,3,255,240,0,0,255,192,0,19,30,90,24,3,0, + 255,248,0,255,254,0,255,255,128,255,255,192,240,15,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,240,15,192,255,255,192,255,255,128, + 255,254,0,255,248,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,28,30,120,31,2,1, + 0,255,192,0,3,255,240,0,15,255,252,0,31,255,254,0, + 31,0,62,0,62,0,31,0,60,0,15,128,120,0,7,128, + 120,0,7,128,112,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,112,0,3,128, + 120,0,7,128,120,0,7,128,120,0,15,0,60,0,15,0, + 62,0,30,0,31,128,126,0,15,255,255,240,7,255,255,240, + 3,255,255,240,0,255,255,240,20,30,90,25,3,0,255,252, + 0,255,255,0,255,255,192,255,255,224,240,7,224,240,1,224, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 1,224,240,7,192,255,255,128,255,255,0,255,255,0,255,255, + 128,240,7,192,240,3,192,240,3,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,0,224,240,0,224,240,0,240,240, + 0,240,240,0,240,240,0,112,22,30,90,26,2,1,3,255, + 0,15,255,192,63,255,224,63,255,240,124,0,240,120,0,120, + 240,0,120,240,0,120,240,0,0,240,0,0,120,0,0,124, + 0,0,63,128,0,31,252,0,15,255,128,0,255,224,0,7, + 240,0,0,248,0,0,120,0,0,56,0,0,60,240,0,60, + 240,0,60,240,0,60,120,0,120,124,0,248,63,255,240,63, + 255,240,31,255,192,7,255,0,23,30,90,25,1,0,255,255, + 254,255,255,254,255,255,254,255,255,254,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,23,30,90,29,3,0,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 120,0,60,120,0,60,124,0,124,62,0,248,63,255,248,31, + 255,240,15,255,224,3,255,128,24,30,90,26,1,0,240,0, + 15,248,0,15,248,0,31,120,0,30,124,0,30,124,0,62, + 60,0,60,62,0,60,30,0,124,30,0,120,31,0,120,15, + 0,248,15,0,240,15,0,240,7,129,240,7,129,224,7,129, + 224,3,195,224,3,195,192,3,195,192,1,231,192,1,231,128, + 1,231,128,0,255,128,0,255,0,0,255,0,0,126,0,0, + 126,0,0,126,0,0,60,0,37,30,150,39,1,0,240,0, + 248,0,120,240,0,248,0,120,240,1,248,0,248,120,1,252, + 0,240,120,1,252,0,240,120,1,220,0,240,124,3,222,1, + 224,60,3,222,1,224,60,3,222,1,224,60,3,142,1,224, + 30,7,143,3,192,30,7,143,3,192,30,7,15,3,192,30, + 7,7,3,128,15,15,7,135,128,15,15,7,135,128,15,14, + 3,135,128,7,14,3,135,0,7,158,3,207,0,7,158,3, + 207,0,7,156,1,206,0,3,156,1,222,0,3,252,1,254, + 0,3,252,1,254,0,1,248,0,252,0,1,248,0,252,0, + 1,248,0,252,0,1,240,0,248,0,0,240,0,120,0,0, + 240,0,120,0,26,30,120,28,1,0,62,0,15,0,62,0, + 31,0,31,0,30,0,15,128,60,0,15,128,124,0,7,192, + 120,0,3,224,240,0,3,224,240,0,1,241,224,0,0,243, + 224,0,0,251,192,0,0,127,128,0,0,63,128,0,0,63, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,247, + 192,0,0,243,224,0,1,227,224,0,3,225,240,0,3,192, + 248,0,7,128,248,0,15,128,124,0,15,0,62,0,31,0, + 62,0,62,0,31,0,60,0,31,0,124,0,15,128,248,0, + 7,192,24,30,90,26,1,0,248,0,15,248,0,31,124,0, + 30,124,0,60,62,0,124,30,0,120,31,0,248,15,0,240, + 15,129,224,7,129,224,3,195,192,3,227,192,1,231,128,1, + 247,0,0,255,0,0,254,0,0,126,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,21,30,90,25,2,0,127,255,248,127,255,248,127,255, + 248,127,255,248,0,0,248,0,1,248,0,1,240,0,3,224, + 0,7,192,0,15,128,0,31,128,0,31,0,0,62,0,0, + 124,0,0,252,0,0,248,0,1,240,0,3,224,0,7,192, + 0,15,192,0,15,128,0,31,0,0,62,0,0,126,0,0, + 252,0,0,248,0,0,255,255,248,255,255,248,255,255,248,255, + 255,248,8,38,38,16,4,248,255,255,255,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,255,255,255,12,33, + 66,16,2,254,224,0,224,0,224,0,96,0,112,0,112,0, + 48,0,56,0,56,0,56,0,28,0,28,0,28,0,12,0, + 14,0,14,0,6,0,7,0,7,0,7,0,3,0,3,128, + 3,128,1,128,1,192,1,192,1,192,0,192,0,224,0,224, + 0,96,0,112,0,112,8,38,38,16,4,248,255,255,255,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255, + 255,255,20,25,75,40,10,0,0,96,0,0,240,0,0,240, + 0,0,240,0,1,248,0,1,152,0,3,156,0,3,12,0, + 3,12,0,7,14,0,6,6,0,6,6,0,14,7,0,12, + 3,0,28,3,128,28,1,128,24,1,128,56,1,192,48,0, + 192,48,0,192,112,0,224,96,0,96,224,0,112,224,0,112, + 192,0,48,20,3,9,20,0,251,255,255,240,255,255,240,255, + 255,240,8,7,7,9,255,25,240,120,56,28,14,14,7,18, + 20,60,23,2,1,15,254,0,63,255,0,62,15,128,120,7, + 128,120,3,192,0,3,192,0,3,192,3,255,192,15,255,192, + 63,255,192,126,3,192,120,3,192,240,3,192,240,3,192,240, + 7,192,240,7,192,248,15,192,124,63,192,63,251,192,31,227, + 192,19,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,252,0,247,255,0,255,15,128,252,7, + 128,248,3,192,248,3,192,240,1,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,192,240,3,192,240, + 3,192,248,7,128,252,7,128,254,31,0,247,254,0,243,252, + 0,17,20,60,21,2,1,15,252,0,31,254,0,62,31,0, + 120,15,128,120,7,128,240,7,128,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,7, + 128,112,7,128,120,7,128,120,15,0,62,31,0,31,254,0, + 15,252,0,19,30,90,24,2,0,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,15,249,224,31,253,224,62,31,224, + 60,7,224,120,7,224,120,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,120,3,224,120,3,224,60,7,224,31,15,224,15,255,224, + 7,249,224,18,20,60,22,2,1,7,252,0,31,254,0,62, + 31,0,60,7,128,120,3,128,112,3,192,240,3,192,240,3, + 192,255,255,192,255,255,192,255,255,192,240,0,0,240,0,0, + 240,0,0,112,3,192,120,7,128,56,7,128,62,31,0,31, + 254,0,7,252,0,13,30,60,14,1,0,1,248,3,248,7, + 248,15,128,15,0,15,0,15,0,15,0,15,0,15,0,255, + 240,255,240,255,240,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,19,28,84,24,2,249,15,249,224, + 31,253,224,62,31,224,120,7,224,120,3,224,112,3,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,120,3,224,124,7,224,62,15,224, + 31,253,224,15,249,224,0,129,224,0,1,224,0,3,192,120, + 3,192,120,3,192,60,7,128,63,255,0,15,254,0,3,248, + 0,18,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,254,0,247,255,0,254,31,128,248,7, + 128,240,7,128,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,4,30,30,8,2,0,240,240,240,240,0,0,0,0,0, + 0,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,7,38,38,11,2,248,30,30,30,30,0, + 0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,254,252, + 248,16,30,60,20,3,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,30,240,62,240, + 124,240,248,241,240,243,224,247,192,255,128,255,0,255,0,247, + 128,247,192,243,224,241,240,240,240,240,248,240,124,240,62,240, + 30,240,31,4,30,30,10,3,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,30,20,80,36,3,1,243,252,31, + 224,247,254,63,240,254,31,112,248,252,15,224,120,248,7,192, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,18,20,60, + 24,3,1,243,254,0,247,255,0,254,31,128,248,7,128,248, + 7,128,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,20, + 20,60,24,2,1,7,252,0,15,255,0,63,15,128,60,3, + 192,120,3,224,120,1,224,240,1,224,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,1,224,120, + 1,224,120,3,224,60,3,192,63,15,128,15,255,0,7,254, + 0,19,28,84,24,3,249,243,254,0,247,255,0,254,15,128, + 252,7,192,248,3,192,248,3,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,248,3,192,248,3,192,252,7,192,254,15,128,247,255,0, + 243,254,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,19,28,84,24,2, + 249,15,249,224,31,253,224,62,15,224,124,7,224,120,3,224, + 120,3,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,3,224,120,3, + 224,124,7,224,62,15,224,31,253,224,15,249,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,11,20,40,15,3,0,243,224,247,224,255, + 224,254,0,248,0,248,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,16,20,40,20,2,1,31,248,63,254,124,62,248, + 31,240,15,240,0,240,0,124,0,127,192,63,248,15,254,0, + 126,0,31,0,15,240,15,240,15,240,31,124,62,127,252,31, + 248,12,25,50,14,1,1,14,0,30,0,30,0,30,0,30, + 0,255,240,255,240,255,240,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,15,0,15,240,7,240,18,20,60,24,3,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,20,60,21,1, + 0,240,0,240,240,1,224,120,1,224,120,1,192,124,3,192, + 60,3,192,60,7,128,30,7,128,30,7,0,15,15,0,15, + 14,0,15,14,0,7,158,0,7,156,0,3,252,0,3,248, + 0,3,248,0,1,248,0,1,240,0,0,240,0,31,20,80, + 33,1,0,240,7,192,30,240,15,192,28,240,15,192,60,120, + 15,224,60,120,30,224,56,120,30,224,120,56,28,240,120,60, + 28,112,112,60,60,112,112,28,56,120,240,30,56,56,224,30, + 120,56,224,14,112,57,224,15,112,29,192,15,240,29,192,7, + 224,31,192,7,224,31,128,7,224,15,128,3,192,15,128,3, + 192,15,0,20,20,60,22,1,0,120,1,224,60,3,192,62, + 3,192,31,7,128,15,15,0,7,158,0,7,222,0,3,252, + 0,1,248,0,0,240,0,1,248,0,3,252,0,3,188,0, + 7,158,0,15,31,0,30,15,128,62,7,128,60,3,192,120, + 3,224,240,1,240,20,28,84,21,1,248,240,0,240,240,1, + 224,120,1,224,120,1,192,60,3,192,60,3,192,62,7,128, + 30,7,128,30,7,128,15,15,0,15,15,0,15,158,0,7, + 158,0,7,158,0,3,252,0,3,252,0,1,248,0,1,248, + 0,1,248,0,0,240,0,0,240,0,0,224,0,1,224,0, + 1,224,0,1,192,0,3,192,0,3,128,0,7,128,0,15, + 20,40,19,2,0,127,254,127,254,127,254,0,62,0,124,0, + 120,0,240,1,240,3,224,3,192,7,128,15,128,31,0,30, + 0,60,0,124,0,248,0,255,254,255,254,255,254,13,41,82, + 19,3,246,0,24,1,248,3,248,3,224,7,128,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,7,0,7, + 0,7,0,15,0,31,0,62,0,252,0,248,0,252,0,126, + 0,30,0,15,0,15,0,7,0,7,0,7,0,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,3,192,3, + 248,1,248,0,120,2,43,43,14,6,245,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,41,82,19,3,246,192,0,252,0, + 254,0,30,0,15,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,128,7,128,7,128,7,128,7,128,7,128,3,192, + 3,224,1,248,0,248,1,248,1,240,3,192,3,192,7,128, + 7,128,7,128,7,128,7,128,7,128,7,0,7,0,7,0, + 7,0,7,0,15,0,31,0,254,0,252,0,240,0,21,5, + 15,21,0,8,2,0,56,31,240,120,63,255,240,120,127,224, + 240,15,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,12,0,0,4,28,28,14,5,248, + 240,240,240,240,0,0,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,17,31,93,23, + 3,250,0,12,0,0,12,0,0,24,0,0,24,0,0,24, + 0,15,248,0,63,254,0,62,63,0,120,119,0,120,103,0, + 240,103,128,240,96,0,240,192,0,240,192,0,240,192,0,241, + 128,0,241,128,0,241,128,0,243,7,128,243,7,128,123,7, + 0,126,15,0,62,30,0,31,254,0,15,248,0,12,0,0, + 12,0,0,28,0,0,24,0,0,24,0,0,8,0,0,20, + 31,93,23,2,0,0,16,0,1,255,0,7,255,192,15,135, + 224,15,1,224,30,0,240,30,0,240,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,248,0,255,248,0,255, + 248,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,255,224,255,255,224,255, + 255,224,21,22,66,25,2,7,192,0,24,224,0,56,96,48, + 48,51,254,96,63,255,224,31,7,192,28,1,192,24,0,192, + 56,0,224,48,0,96,48,0,96,48,0,96,48,0,96,56, + 0,224,24,0,192,28,1,192,14,3,128,31,255,192,59,254, + 224,112,248,112,224,0,56,192,0,24,21,30,90,23,1,0, + 240,0,120,248,0,120,120,0,240,124,0,240,60,1,240,62, + 1,224,30,1,224,30,3,192,15,3,192,15,7,128,255,135, + 248,255,143,248,255,207,248,3,207,0,1,254,0,1,252,0, + 255,255,248,255,255,248,255,255,248,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,2,38,38,14,6,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 0,0,0,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,15,37,74,19,2,250,15,248,31,248, + 62,24,60,0,120,0,120,0,120,0,120,0,60,0,63,0, + 31,128,15,224,15,240,63,248,124,124,120,62,240,30,240,30, + 240,30,240,60,248,120,127,240,63,224,31,224,7,240,1,248, + 0,124,0,60,0,30,0,30,0,30,0,28,0,60,96,248, + 127,240,127,224,3,0,12,4,8,12,0,26,240,240,240,240, + 240,240,240,240,30,30,120,34,2,1,0,63,240,0,0,255, + 252,0,3,240,63,0,7,128,7,128,15,0,3,192,28,3, + 0,224,56,63,240,112,56,127,248,112,112,248,124,56,97,240, + 30,24,97,224,30,24,225,224,30,28,195,192,0,12,195,192, + 0,12,195,192,0,12,195,192,0,12,195,192,0,12,195,192, + 0,12,193,192,30,12,97,224,30,24,97,224,30,24,96,240, + 60,56,48,255,252,48,56,63,248,112,28,15,224,224,14,0, + 1,192,7,0,3,128,3,192,15,0,1,255,252,0,0,63, + 240,0,14,19,38,16,1,11,15,192,63,240,56,120,112,56, + 0,56,0,56,15,248,63,248,120,56,224,56,224,56,224,120, + 240,248,127,184,31,56,0,0,0,0,255,252,255,252,16,16, + 32,22,3,2,7,7,15,14,14,14,28,28,60,60,56,120, + 120,112,240,240,240,240,120,112,56,120,60,60,28,28,14,14, + 15,14,7,7,21,10,30,25,2,8,255,255,248,255,255,248, + 255,255,248,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,255,30,30,120,34,2,1,0, + 63,240,0,0,255,252,0,3,240,63,0,7,128,7,128,14, + 0,1,192,28,127,240,224,56,127,248,112,48,127,252,48,112, + 112,30,56,96,112,14,24,96,112,14,24,192,112,14,12,192, + 112,28,12,192,127,248,12,192,127,240,12,192,127,248,12,192, + 112,28,12,192,112,28,12,192,112,28,12,96,112,12,24,96, + 112,12,24,112,112,14,56,48,112,14,48,56,112,14,112,28, + 0,0,224,14,0,1,192,7,128,7,128,3,240,63,0,1, + 255,252,0,0,63,240,0,12,3,6,12,0,26,255,240,255, + 240,255,240,9,9,18,13,2,21,62,0,127,0,227,128,193, + 128,193,128,193,128,227,128,127,0,62,0,24,24,72,40,8, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,255,255,255,255,255,255,255,255,255,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,255,255,255,255,12,16,32,14,1,15,31, + 192,127,224,120,240,112,112,224,112,0,112,0,224,1,224,3, + 192,7,128,14,0,60,0,120,0,255,240,255,240,255,240,12, + 16,32,14,1,15,63,192,127,224,112,240,96,112,0,112,0, + 240,7,224,7,128,7,224,0,240,0,112,224,112,224,112,127, + 224,127,192,31,128,8,7,7,9,2,25,15,30,28,56,56, + 112,224,255,18,36,108,22,2,250,3,255,192,15,255,192,63, + 195,0,127,195,0,127,195,0,255,195,0,255,195,0,255,195, + 0,255,195,0,255,195,0,255,195,0,127,195,0,127,195,0, + 63,195,0,15,195,0,0,195,0,0,195,0,0,195,0,0, + 195,0,0,195,0,0,195,0,0,195,0,0,195,0,0,195, + 0,0,195,0,0,195,0,0,195,0,0,195,0,0,195,0, + 0,195,0,0,195,0,0,195,0,0,195,0,0,195,0,0, + 195,0,0,195,0,4,5,5,10,3,11,240,240,240,240,240, + 10,10,20,10,2,246,48,0,48,0,62,0,63,128,7,128, + 1,192,1,192,3,192,255,128,254,0,7,16,16,12,2,14, + 30,62,254,238,142,14,14,14,14,14,14,14,14,14,14,14, + 14,19,38,16,1,10,15,192,63,224,120,112,112,56,224,56, + 224,28,224,28,224,28,224,28,224,28,224,56,112,56,56,112, + 31,224,7,128,0,0,0,0,255,252,255,252,16,16,32,22, + 3,2,224,224,112,112,120,120,56,56,28,60,30,30,15,14, + 15,15,15,15,15,14,30,30,28,60,56,56,120,120,112,112, + 224,224,28,30,120,32,2,0,30,0,12,0,62,0,28,0, + 254,0,56,0,238,0,56,0,142,0,112,0,14,0,112,0, + 14,0,224,0,14,0,192,0,14,1,192,0,14,3,128,0, + 14,3,128,0,14,7,0,0,14,7,0,0,14,14,0,0, + 14,12,7,128,14,28,7,128,0,56,15,128,0,56,31,128, + 0,112,27,128,0,112,59,128,0,224,115,128,0,224,99,128, + 1,192,195,128,1,129,195,128,3,129,255,240,7,1,255,240, + 7,0,3,128,14,0,3,128,14,0,3,128,28,0,3,128, + 28,30,120,32,2,0,30,0,28,0,62,0,28,0,254,0, + 56,0,238,0,56,0,142,0,112,0,14,0,112,0,14,0, + 224,0,14,0,224,0,14,1,192,0,14,3,128,0,14,3, + 128,0,14,7,0,0,14,7,0,0,14,14,0,0,14,14, + 31,128,14,28,63,224,0,56,121,224,0,56,112,112,0,112, + 240,112,0,112,0,112,0,224,0,240,0,224,0,224,1,192, + 3,192,1,128,7,128,3,128,15,0,7,0,60,0,7,0, + 120,0,14,0,255,240,14,0,255,240,28,0,255,240,30,31, + 124,32,1,0,0,0,1,192,63,192,3,128,127,224,3,128, + 112,240,7,0,96,112,6,0,0,112,14,0,0,240,28,0, + 7,224,28,0,7,128,56,0,7,224,56,0,0,240,112,0, + 0,112,112,0,224,112,224,0,224,113,192,0,127,225,192,0, + 127,195,129,224,31,131,129,224,0,7,3,224,0,7,7,224, + 0,14,6,224,0,12,12,224,0,28,28,224,0,56,24,224, + 0,56,48,224,0,112,112,224,0,112,127,252,0,224,127,252, + 0,224,0,224,1,192,0,224,1,128,0,224,3,128,0,224, + 17,28,84,21,2,248,0,240,0,0,240,0,0,240,0,0, + 240,0,0,0,0,0,0,0,0,0,0,0,240,0,0,240, + 0,0,240,0,0,240,0,1,240,0,1,224,0,7,192,0, + 15,128,0,31,0,0,60,0,0,120,0,0,240,0,0,240, + 0,0,240,0,0,240,3,0,240,3,128,124,15,128,127,255, + 0,63,254,0,31,252,0,3,240,0,28,41,164,30,1,0, + 0,240,0,0,0,240,0,0,0,120,0,0,0,56,0,0, + 0,28,0,0,0,14,0,0,0,14,0,0,0,7,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0, + 0,31,128,0,0,31,128,0,0,63,192,0,0,63,192,0, + 0,127,192,0,0,121,224,0,0,121,224,0,0,241,240,0, + 0,240,240,0,1,240,240,0,1,224,248,0,1,224,120,0, + 3,224,124,0,3,192,60,0,7,192,60,0,7,128,62,0, + 7,128,30,0,15,128,31,0,15,255,255,0,31,255,255,128, + 31,255,255,128,30,0,7,128,60,0,3,192,60,0,3,192, + 124,0,3,224,120,0,1,224,120,0,1,224,240,0,0,240, + 240,0,0,240,28,41,164,30,1,0,0,0,240,0,0,0, + 240,0,0,1,224,0,0,1,192,0,0,3,128,0,0,7, + 0,0,0,7,0,0,0,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,15,0,0,0,31,128,0,0,31, + 128,0,0,63,192,0,0,63,192,0,0,127,192,0,0,121, + 224,0,0,121,224,0,0,241,240,0,0,240,240,0,1,240, + 240,0,1,224,248,0,1,224,120,0,3,224,124,0,3,192, + 60,0,7,192,60,0,7,128,62,0,7,128,30,0,15,128, + 31,0,15,255,255,0,31,255,255,128,31,255,255,128,30,0, + 7,128,60,0,3,192,60,0,3,192,124,0,3,224,120,0, + 1,224,120,0,1,224,240,0,0,240,240,0,0,240,28,41, + 164,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,57,192,0,0,112,224,0,0,96,96,0, + 0,224,112,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,15,0,0,0,31,128,0,0,31,128,0,0,63,192,0, + 0,63,192,0,0,127,192,0,0,121,224,0,0,121,224,0, + 0,241,240,0,0,240,240,0,1,240,240,0,1,224,248,0, + 1,224,120,0,3,224,124,0,3,192,60,0,7,192,60,0, + 7,128,62,0,7,128,30,0,15,128,31,0,15,255,255,0, + 31,255,255,128,31,255,255,128,30,0,7,128,60,0,3,192, + 60,0,3,192,124,0,3,224,120,0,1,224,120,0,1,224, + 240,0,0,240,240,0,0,240,28,39,156,30,1,0,0,16, + 48,0,0,126,112,0,0,127,224,0,0,231,224,0,0,192, + 128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,15,0,0,0,31,128,0,0,31,128,0,0,63, + 192,0,0,63,192,0,0,127,192,0,0,121,224,0,0,121, + 224,0,0,241,240,0,0,240,240,0,1,240,240,0,1,224, + 248,0,1,224,120,0,3,224,124,0,3,192,60,0,7,192, + 60,0,7,128,62,0,7,128,30,0,15,128,31,0,15,255, + 255,0,31,255,255,128,31,255,255,128,30,0,7,128,60,0, + 3,192,60,0,3,192,124,0,3,224,120,0,1,224,120,0, + 1,224,240,0,0,240,240,0,0,240,29,39,156,30,1,0, + 0,120,120,0,0,120,120,0,0,120,120,0,0,120,120,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,128,0,0,15,128,0,0,31,128,0, + 0,31,192,0,0,63,192,0,0,61,224,0,0,125,224,0, + 0,121,240,0,0,120,240,0,0,240,240,0,0,240,248,0, + 1,240,120,0,1,224,124,0,1,224,60,0,3,224,60,0, + 3,192,62,0,7,192,30,0,7,128,31,0,7,128,15,0, + 15,255,255,128,15,255,255,128,31,255,255,128,30,0,3,192, + 30,0,3,192,60,0,3,224,60,0,1,224,120,0,1,224, + 120,0,0,240,120,0,0,240,240,0,0,248,28,43,172,30, + 1,0,0,14,0,0,0,63,0,0,0,49,128,0,0,96, + 192,0,0,96,192,0,0,96,192,0,0,96,192,0,0,49, + 128,0,0,63,128,0,0,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,31, + 128,0,0,63,128,0,0,63,192,0,0,123,192,0,0,123, + 192,0,0,121,224,0,0,241,224,0,0,241,240,0,1,224, + 240,0,1,224,248,0,1,224,120,0,3,192,120,0,3,192, + 124,0,7,192,60,0,7,128,62,0,15,128,30,0,15,0, + 30,0,15,255,255,0,31,255,255,0,31,255,255,128,60,0, + 7,128,60,0,7,192,60,0,3,192,120,0,3,192,120,0, + 1,224,240,0,1,224,240,0,1,240,240,0,0,240,37,30, + 150,39,0,0,0,1,255,255,240,0,1,255,255,240,0,3, + 255,255,240,0,3,255,255,240,0,7,252,0,0,0,7,188, + 0,0,0,15,188,0,0,0,15,60,0,0,0,31,60,0, + 0,0,30,60,0,0,0,62,60,0,0,0,60,60,0,0, + 0,124,60,0,0,0,120,63,255,240,0,248,63,255,240,0, + 240,63,255,240,1,240,63,255,240,1,224,60,0,0,3,224, + 60,0,0,3,255,252,0,0,7,255,252,0,0,7,255,252, + 0,0,15,0,60,0,0,31,0,60,0,0,30,0,60,0, + 0,62,0,60,0,0,60,0,63,255,248,124,0,63,255,248, + 120,0,63,255,248,248,0,63,255,248,22,40,120,26,2,247, + 1,255,128,7,255,224,15,255,240,31,0,248,62,0,120,60, + 0,60,120,0,60,120,0,60,120,0,0,112,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,112, + 0,0,120,0,60,120,0,60,60,0,60,60,0,120,31,0, + 248,15,255,240,7,255,224,3,255,128,0,48,0,0,48,0, + 0,62,0,0,63,128,0,63,192,0,1,192,0,1,192,0, + 1,192,0,255,128,0,254,0,19,41,123,24,3,0,30,0, + 0,15,0,0,7,0,0,3,128,0,3,128,0,1,192,0, + 0,224,0,0,96,0,0,0,0,0,0,0,0,0,0,255, + 255,192,255,255,192,255,255,192,255,255,192,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,255,255,192,255,255,192,255,255,192,255, + 255,192,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,255,255,224, + 255,255,224,255,255,224,255,255,224,19,41,123,24,3,0,0, + 30,0,0,60,0,0,56,0,0,120,0,0,240,0,0,224, + 0,1,192,0,1,128,0,0,0,0,0,0,0,0,0,0, + 255,255,192,255,255,192,255,255,192,255,255,192,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 255,255,192,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,19,41,123,24,3,0, + 1,224,0,3,240,0,7,240,0,7,120,0,15,56,0,14, + 28,0,28,28,0,24,14,0,0,0,0,0,0,0,0,0, + 0,255,255,192,255,255,192,255,255,192,255,255,192,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,255,255,192,255,255,192,255,255, + 192,255,255,192,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,19,39,117,24,3, + 0,30,30,0,30,30,0,30,30,0,30,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255, + 255,192,255,255,192,255,255,192,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,255,255,192,255,255,192,255,255,192,255,255,192,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,255,255,224,255,255,224, + 255,255,224,255,255,224,8,41,41,10,255,0,240,120,56,28, + 30,14,7,3,0,0,0,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,7,41,41,10,3,0,30,30,60,56,112, + 112,224,192,0,0,0,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,12,41,82,10,255,0,15,0,31,0,31,128, + 63,128,57,192,112,224,96,224,224,112,0,0,0,0,0,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,12,39,78,11, + 0,0,240,240,240,240,240,240,240,240,0,0,0,0,0,0, + 0,0,0,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 26,30,120,28,0,0,31,255,0,0,31,255,224,0,31,255, + 248,0,31,255,252,0,30,0,254,0,30,0,63,0,30,0, + 31,0,30,0,15,128,30,0,7,128,30,0,7,128,30,0, + 3,192,30,0,3,192,30,0,3,192,30,0,3,192,255,252, + 3,192,255,252,3,192,255,252,3,192,30,0,3,192,30,0, + 3,192,30,0,3,192,30,0,7,128,30,0,7,128,30,0, + 15,128,30,0,31,0,30,0,63,0,30,0,254,0,31,255, + 252,0,31,255,248,0,31,255,224,0,31,255,0,0,22,39, + 117,28,3,0,0,131,0,3,243,0,7,255,0,7,62,0, + 6,8,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 0,60,252,0,60,254,0,60,254,0,60,255,0,60,255,0, + 60,255,128,60,247,128,60,247,192,60,243,192,60,243,224,60, + 241,224,60,241,240,60,240,240,60,240,248,60,240,120,60,240, + 124,60,240,60,60,240,62,60,240,30,60,240,31,60,240,15, + 60,240,15,188,240,7,188,240,3,252,240,3,252,240,1,252, + 240,1,252,240,0,252,240,0,252,26,41,164,30,2,0,1, + 224,0,0,0,240,0,0,0,120,0,0,0,56,0,0,0, + 28,0,0,0,28,0,0,0,14,0,0,0,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,255,224,0,3, + 255,240,0,15,255,252,0,31,255,254,0,31,0,62,0,62, + 0,31,0,60,0,15,0,120,0,7,128,120,0,7,128,112, + 0,3,128,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,112,0,3,128,120,0,7,128,120, + 0,7,128,120,0,15,128,60,0,15,0,62,0,31,0,31, + 128,126,0,15,255,252,0,7,255,248,0,3,255,240,0,0, + 255,192,0,26,41,164,30,2,0,0,1,224,0,0,3,192, + 0,0,7,128,0,0,7,0,0,0,15,0,0,0,14,0, + 0,0,28,0,0,0,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,255,224,0,3,255,240,0,15,255,252, + 0,31,255,254,0,31,0,62,0,62,0,31,0,60,0,15, + 0,120,0,7,128,120,0,7,128,112,0,3,128,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,112,0,3,128,120,0,7,128,120,0,7,128,120,0,15, + 128,60,0,15,0,62,0,31,0,31,128,126,0,15,255,252, + 0,7,255,248,0,3,255,240,0,0,255,192,0,26,41,164, + 30,2,0,0,30,0,0,0,63,0,0,0,63,0,0,0, + 127,128,0,0,115,128,0,0,225,192,0,0,192,224,0,1, + 192,96,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 255,224,0,3,255,240,0,15,255,252,0,31,255,254,0,31, + 0,62,0,62,0,31,0,60,0,15,0,120,0,7,128,120, + 0,7,128,112,0,3,128,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,112,0,3,128,120, + 0,7,128,120,0,7,128,120,0,15,128,60,0,15,0,62, + 0,31,0,31,128,126,0,15,255,252,0,7,255,248,0,3, + 255,240,0,0,255,192,0,26,39,156,30,2,0,0,32,96, + 0,0,252,224,0,0,255,224,0,1,207,192,0,1,129,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,255,224,0,3,255,240,0,15,255,252,0,31,255,254, + 0,31,0,62,0,62,0,31,0,60,0,15,0,120,0,7, + 128,120,0,7,128,112,0,3,128,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,112,0,3, + 128,120,0,7,128,120,0,7,128,120,0,15,128,60,0,15, + 0,62,0,31,0,31,128,126,0,15,255,252,0,7,255,248, + 0,3,255,240,0,0,255,192,0,26,39,156,30,2,0,0, + 240,240,0,0,240,240,0,0,240,240,0,0,240,240,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,1,255,224,0,3,255,240,0,15,255,252,0,31, + 255,254,0,31,0,62,0,62,0,31,0,60,0,15,0,120, + 0,7,128,120,0,7,128,112,0,3,128,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,112, + 0,3,128,120,0,7,128,120,0,7,128,120,0,15,128,60, + 0,15,0,62,0,31,0,31,128,126,0,15,255,252,0,7, + 255,248,0,3,255,240,0,0,255,192,0,22,22,66,40,9, + 1,96,0,24,240,0,60,120,0,120,56,0,112,28,0,224, + 14,1,192,7,3,128,3,135,0,1,206,0,0,252,0,0, + 120,0,0,120,0,0,252,0,1,206,0,3,135,0,7,3, + 128,14,1,192,28,0,224,56,0,112,112,0,56,96,0,24, + 64,0,8,26,38,152,30,2,252,0,0,1,0,0,0,3, + 128,0,0,3,192,0,0,7,128,0,255,199,128,3,255,255, + 0,15,255,255,0,31,255,254,0,31,0,62,0,62,0,127, + 0,124,0,127,0,120,0,255,128,120,1,247,128,240,1,227, + 128,240,3,195,192,240,7,195,192,240,7,131,192,240,15,3, + 192,240,31,3,192,240,30,3,192,240,60,3,192,240,124,3, + 192,240,248,3,192,112,240,3,192,121,240,7,128,123,224,7, + 128,127,192,15,128,63,192,15,0,63,128,31,0,31,128,126, + 0,31,255,252,0,31,255,248,0,63,255,240,0,124,255,192, + 0,120,0,0,0,240,0,0,0,112,0,0,0,32,0,0, + 0,23,41,123,29,3,0,3,192,0,1,192,0,1,224,0, + 0,240,0,0,112,0,0,56,0,0,24,0,0,28,0,0, + 0,0,0,0,0,0,0,0,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,120,0,60,120,0,60, + 124,0,124,62,0,248,63,255,248,31,255,240,15,255,224,3, + 255,128,23,41,123,29,3,0,0,7,128,0,7,0,0,15, + 0,0,30,0,0,28,0,0,56,0,0,48,0,0,112,0, + 0,0,0,0,0,0,0,0,0,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,120,0,60,120,0, + 60,124,0,124,62,0,248,63,255,248,31,255,240,15,255,224, + 3,255,128,23,41,123,29,3,0,0,124,0,0,124,0,0, + 254,0,0,238,0,1,199,0,1,199,0,3,131,128,7,1, + 128,0,0,0,0,0,0,0,0,0,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,120,0,60,120, + 0,60,124,0,124,62,0,248,63,255,248,31,255,240,15,255, + 224,3,255,128,23,38,114,29,3,0,3,195,192,3,195,192, + 3,195,192,3,195,192,0,0,0,0,0,0,0,0,0,0, + 0,0,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,120,0,60,120,0,60,124,0,124,62,0,248, + 63,255,248,31,255,240,15,255,224,3,255,128,24,41,123,26, + 1,0,0,3,192,0,7,128,0,7,0,0,15,0,0,14, + 0,0,28,0,0,24,0,0,48,0,0,0,0,0,0,0, + 0,0,0,248,0,15,248,0,31,124,0,30,124,0,60,62, + 0,124,30,0,120,31,0,248,15,0,240,15,129,224,7,129, + 224,3,195,192,3,227,192,1,231,128,1,247,0,0,255,0, + 0,254,0,0,126,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,19,30,90, + 24,3,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,255,248,0,255,255,0,255,255,128,255,255, + 192,240,15,192,240,3,224,240,1,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,3,224,240,15,192,255,255,192,255, + 255,128,255,255,0,255,248,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,20,30,90, + 22,2,0,3,248,0,15,254,0,63,255,0,124,15,0,248, + 7,128,240,7,128,240,7,128,240,7,128,240,15,0,240,31, + 0,240,62,0,240,124,0,240,248,0,240,240,0,240,240,0, + 240,248,0,240,126,0,240,63,0,240,31,192,240,15,224,240, + 3,224,240,1,240,240,0,240,240,0,240,243,192,240,243,192, + 240,241,224,240,241,241,224,240,255,224,240,63,128,18,31,93, + 23,2,0,7,128,0,7,128,0,3,192,0,1,192,0,0, + 224,0,0,112,0,0,48,0,0,0,0,0,0,0,0,0, + 0,0,0,0,15,254,0,63,255,0,62,15,128,120,7,128, + 120,3,192,0,3,192,0,3,192,3,255,192,15,255,192,63, + 255,192,126,3,192,120,3,192,240,3,192,240,3,192,240,7, + 192,240,7,192,248,15,192,124,63,192,63,251,192,31,227,192, + 18,32,96,23,2,0,0,60,0,0,60,0,0,120,0,0, + 240,0,0,224,0,1,192,0,1,128,0,3,128,0,0,0, + 0,0,0,0,0,0,0,0,0,0,15,254,0,63,255,0, + 62,15,128,120,7,128,120,3,192,0,3,192,0,3,192,3, + 255,192,15,255,192,63,255,192,126,3,192,120,3,192,240,3, + 192,240,3,192,240,7,192,240,7,192,248,15,192,124,63,192, + 63,251,192,31,227,192,18,32,96,23,2,0,1,224,0,3, + 240,0,3,240,0,7,184,0,7,60,0,14,28,0,12,14, + 0,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,227,192,18,30,90,23, + 2,0,7,134,0,15,206,0,15,254,0,28,124,0,24,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,243,192,18,30,90,23, + 2,0,30,30,0,30,30,0,30,30,0,30,30,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,227,192,18,34,102,23, + 2,0,1,224,0,3,240,0,6,24,0,12,12,0,12,12, + 0,12,12,0,12,12,0,6,24,0,3,240,0,1,224,0, + 0,0,0,0,0,0,0,0,0,0,0,0,15,254,0,63, + 255,0,62,15,128,120,7,128,120,3,192,0,3,192,0,3, + 192,3,255,192,15,255,192,63,255,192,126,3,192,120,3,192, + 240,3,192,240,3,192,240,7,192,240,7,192,248,15,192,124, + 63,192,63,251,192,31,227,192,32,20,80,36,2,1,15,248, + 31,240,63,254,63,248,124,30,120,60,120,7,112,30,120,7, + 224,14,0,3,224,15,0,3,192,15,0,127,255,255,31,255, + 255,255,63,255,255,255,126,3,192,0,120,3,192,0,240,3, + 192,0,240,3,192,15,240,7,224,14,240,7,224,30,248,14, + 112,30,126,62,124,124,63,252,63,248,31,240,15,240,17,30, + 90,21,2,247,15,252,0,31,254,0,62,31,0,120,15,128, + 120,7,128,240,7,128,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,7,128,112,7, + 128,120,7,128,120,15,0,62,31,0,31,254,0,15,252,0, + 1,128,0,1,128,0,1,240,0,1,252,0,1,254,0,0, + 14,0,0,14,0,0,14,0,7,252,0,7,240,0,18,32, + 96,22,2,0,30,0,0,15,0,0,7,0,0,3,128,0, + 3,192,0,1,192,0,0,224,0,0,96,0,0,0,0,0, + 0,0,0,0,0,0,0,0,7,252,0,31,254,0,62,31, + 0,60,7,128,120,3,128,112,3,192,240,3,192,240,3,192, + 255,255,192,255,255,192,255,255,192,240,0,0,240,0,0,240, + 0,0,112,3,192,120,7,128,56,7,128,62,31,0,31,254, + 0,7,252,0,18,32,96,22,2,0,0,30,0,0,60,0, + 0,120,0,0,112,0,0,224,0,0,224,0,1,192,0,1, + 128,0,0,0,0,0,0,0,0,0,0,0,0,0,7,252, + 0,31,254,0,62,31,0,60,7,128,120,3,128,112,3,192, + 240,3,192,240,3,192,255,255,192,255,255,192,255,255,192,240, + 0,0,240,0,0,240,0,0,112,3,192,120,7,128,56,7, + 128,62,31,0,31,254,0,7,252,0,18,32,96,22,2,0, + 1,224,0,3,240,0,3,240,0,7,248,0,7,56,0,14, + 28,0,12,12,0,28,14,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,31,254,0,62,31,0,60,7,128, + 120,3,128,112,3,192,240,3,192,240,3,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,112,3, + 192,120,7,128,56,7,128,62,31,0,31,254,0,7,252,0, + 18,30,90,22,2,0,30,30,0,30,30,0,30,30,0,30, + 30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,31,254,0,62,15,0,60,7,128, + 120,3,128,112,3,192,240,3,192,240,3,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,112,3, + 192,120,3,128,60,7,128,62,15,0,31,254,0,7,252,0, + 8,32,32,10,255,0,240,120,56,28,30,14,7,3,0,0, + 0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,9,32,64,10,2,0,15,128,15,0, + 30,0,28,0,56,0,56,0,112,0,224,0,0,0,0,0, + 0,0,0,0,120,0,120,0,120,0,120,0,120,0,120,0, + 120,0,120,0,120,0,120,0,120,0,120,0,120,0,120,0, + 120,0,120,0,120,0,120,0,120,0,120,0,12,32,64,10, + 255,0,15,0,31,128,31,128,59,192,57,192,112,224,224,96, + 192,112,0,0,0,0,0,0,0,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,12,30,60,10,255,0,240,240,240,240,240,240,240,240, + 0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,20,30,90,24,2,0,16,1,0,60,7,0, + 30,31,0,7,252,0,3,240,0,7,240,0,62,120,0,120, + 60,0,96,30,0,0,15,0,7,255,128,31,255,192,63,15, + 192,60,3,192,120,1,224,120,1,224,240,1,224,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,240, + 1,224,120,1,224,120,3,224,60,3,192,63,15,128,31,255, + 0,7,254,0,18,30,90,24,3,0,7,14,0,15,204,0, + 31,252,0,28,248,0,24,16,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,243,254,0,247,255,0,254,31, + 128,248,7,128,248,7,128,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,20,32,96,24,2,0,15,0,0,7,128,0, + 3,128,0,1,192,0,1,192,0,0,224,0,0,112,0,0, + 48,0,0,0,0,0,0,0,0,0,0,0,0,0,7,252, + 0,15,255,0,63,15,128,60,3,192,120,3,224,120,1,224, + 240,1,224,240,0,240,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,1,224,120,1,224,120,3,224,60,3, + 192,63,15,128,15,255,0,7,254,0,20,32,96,24,2,0, + 0,30,0,0,30,0,0,60,0,0,56,0,0,112,0,0, + 96,0,0,224,0,1,192,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,15,255,0,63,15,128,60,3,192, + 120,3,224,120,1,224,240,1,224,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,1,224,120,1, + 224,120,3,224,60,3,192,63,15,128,15,255,0,7,254,0, + 20,32,96,24,2,0,0,240,0,1,248,0,1,248,0,3, + 188,0,3,156,0,7,14,0,6,6,0,12,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,20,30,90,24,2,0,3,135,0,7, + 230,0,15,254,0,14,124,0,12,8,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,20,30,90,24,2,0,15,15,0,15, + 15,0,15,15,0,15,15,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,24,19,57,40,8,2,0,16,0,0, + 56,0,0,124,0,0,124,0,0,124,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0, + 0,0,0,0,0,0,0,56,0,0,124,0,0,124,0,0, + 124,0,0,56,0,21,26,78,24,1,254,0,0,56,0,0, + 120,0,0,112,3,255,224,7,255,192,31,135,192,30,3,224, + 60,7,240,60,15,240,120,14,240,120,28,120,120,56,120,120, + 120,120,120,112,120,120,224,120,121,192,120,123,192,240,63,128, + 240,63,1,240,30,1,224,15,135,192,31,255,128,59,255,0, + 112,0,0,240,0,0,96,0,0,18,32,96,24,3,0,30, + 0,0,15,0,0,7,0,0,3,128,0,3,192,0,1,192, + 0,0,224,0,0,96,0,0,0,0,0,0,0,0,0,0, + 0,0,0,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,7,192,120,7,192,124,31,192,63,251,192,31,243,192,18, + 32,96,24,3,0,0,62,0,0,60,0,0,120,0,0,112, + 0,0,224,0,0,224,0,1,192,0,3,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,7,192,120,7,192,124,31,192,63, + 251,192,31,243,192,18,32,96,24,3,0,1,224,0,3,240, + 0,3,240,0,7,120,0,7,56,0,14,28,0,28,12,0, + 24,14,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 7,192,124,31,192,63,251,192,31,243,192,18,30,90,24,3, + 0,30,30,0,30,30,0,30,30,0,30,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,40,120,21,1, + 248,0,15,0,0,30,0,0,28,0,0,56,0,0,112,0, + 0,112,0,0,224,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,240,0,240,240,1,224,120,1,224,120,1, + 192,60,3,192,60,3,192,62,7,128,30,7,128,30,7,0, + 15,15,0,15,15,0,15,158,0,7,158,0,7,156,0,3, + 252,0,3,252,0,1,248,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,224,0,1,224,0,33,224,0,243,192,0, + 127,192,0,127,128,0,31,0,0,19,38,114,24,3,248,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,243,254,0, + 247,255,0,254,15,128,252,7,192,248,3,192,248,3,192,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,248,3,192,248,3,192,252,7,192, + 254,15,128,247,255,0,243,254,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,20,38,114,22,1,248,15,15,0,15,15,0,15,15,0, + 15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,240,0,240,248,0,224,120,1,224,120,1, + 224,60,3,192,60,3,192,62,3,128,30,7,128,30,7,128, + 15,15,0,15,15,0,7,143,0,7,158,0,7,222,0,3, + 252,0,3,252,0,1,252,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 30 + Calculated Max Values w=24 h=33 x= 8 y=15 dx=40 dy= 0 ascent=31 len=90 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =30 descent= 0 + X Font ascent =30 descent= 0 + Max Font ascent =31 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30n[1175] U8G_SECTION(".progmem.u8g_font_fur30n") = { + 0,54,54,253,245,30,0,0,0,0,42,57,0,31,251,30, + 0,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=37 h=43 x=10 y=25 dx=40 dy= 0 ascent=33 len=185 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =33 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30r[7380] U8G_SECTION(".progmem.u8g_font_fur30r") = { + 0,54,54,253,245,30,9,94,20,223,32,127,249,33,245,31, + 248,0,0,0,12,0,0,4,30,30,14,5,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,0,0,0,240,240,240,240,12,12,24,18,3, + 18,240,240,240,240,240,240,240,240,240,240,240,240,240,112,224, + 112,224,112,96,112,96,112,96,96,26,30,120,30,2,0,0, + 28,14,0,0,28,28,0,0,28,28,0,0,28,28,0,0, + 56,24,0,0,56,56,0,0,56,56,0,0,112,56,0,0, + 112,112,0,31,255,255,192,31,255,255,128,31,255,255,128,0, + 224,224,0,0,224,224,0,1,192,224,0,1,193,192,0,1, + 193,192,0,127,255,254,0,255,255,254,0,255,255,254,0,3, + 3,128,0,7,7,0,0,7,7,0,0,7,7,0,0,14, + 7,0,0,14,14,0,0,14,14,0,0,14,14,0,0,28, + 28,0,0,28,28,0,0,20,37,111,22,1,252,0,96,0, + 0,96,0,0,96,0,3,252,0,15,254,0,63,255,0,63, + 255,128,124,103,128,120,99,192,240,99,192,240,99,192,240,96, + 0,240,96,0,240,96,0,120,96,0,127,96,0,63,240,0, + 31,254,0,15,255,128,1,255,192,0,111,224,0,97,224,0, + 96,240,0,96,240,0,96,240,240,96,240,240,96,240,240,96, + 240,120,96,240,124,97,224,63,255,192,31,255,128,15,255,0, + 0,96,0,0,96,0,0,96,0,0,96,0,33,31,155,37, + 2,0,0,0,0,224,0,15,192,0,192,0,31,240,1,192, + 0,63,248,1,128,0,120,60,3,0,0,240,60,7,0,0, + 240,30,6,0,0,240,30,14,0,0,240,30,12,0,0,240, + 30,28,0,0,240,30,24,0,0,240,28,56,0,0,112,60, + 48,0,0,120,124,112,0,0,63,248,224,0,0,31,240,192, + 96,0,3,129,195,252,0,0,1,135,254,0,0,3,143,15, + 0,0,3,14,7,0,0,7,30,7,128,0,6,30,7,128, + 0,14,30,7,128,0,28,30,7,128,0,28,30,7,128,0, + 56,30,7,128,0,56,30,7,128,0,112,15,15,0,0,96, + 15,254,0,0,224,7,252,0,0,192,1,248,0,27,30,120, + 30,2,1,3,254,0,0,7,255,0,0,15,143,128,0,15, + 3,192,0,30,3,192,0,30,3,192,0,30,3,192,0,30, + 3,192,0,31,7,128,0,15,15,128,0,15,191,0,0,7, + 252,0,0,3,248,0,0,7,224,15,0,15,240,15,0,63, + 248,15,0,124,124,15,0,120,62,15,0,248,31,15,0,240, + 15,142,0,240,7,206,0,240,3,254,0,240,1,254,0,240, + 0,252,0,248,0,124,0,124,0,126,0,126,1,255,0,63, + 255,255,128,31,255,207,192,7,255,3,224,4,12,12,15,5, + 18,240,240,240,240,112,112,112,112,112,112,112,112,7,36,36, + 15,4,251,14,14,28,28,60,56,56,120,120,120,112,112,240, + 240,240,240,240,240,240,240,240,240,240,240,112,112,120,120,120, + 56,56,60,28,28,14,14,7,36,36,14,4,251,224,224,96, + 112,112,120,56,56,60,60,60,28,28,28,30,30,30,30,30, + 30,30,30,28,28,60,60,60,60,56,56,120,112,112,224,224, + 224,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0,4,20,20,11,4,0,240,240,240, + 240,240,0,0,0,0,0,0,0,0,0,0,240,240,240,240, + 240,6,26,26,11,2,250,60,60,60,60,60,0,0,0,0, + 0,0,0,0,0,0,0,60,60,60,56,120,112,112,112,224, + 224,24,21,63,40,8,2,0,0,1,0,0,15,0,0,63, + 0,1,252,0,7,224,0,63,0,1,252,0,7,224,0,63, + 0,0,252,0,0,224,0,0,248,0,0,126,0,0,15,192, + 0,3,248,0,0,126,0,0,31,192,0,3,240,0,0,126, + 0,0,31,0,0,3,24,10,30,40,8,7,255,255,255,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,255,255,255,24,21,63,40,8,2, + 128,0,0,240,0,0,252,0,0,63,128,0,7,224,0,0, + 252,0,0,63,0,0,7,224,0,0,252,0,0,63,0,0, + 7,0,0,31,0,0,126,0,3,240,0,31,192,0,126,0, + 3,248,0,15,192,0,126,0,0,248,0,0,192,0,0,18, + 30,90,21,1,1,15,248,0,31,254,0,63,255,0,126,127, + 128,248,7,128,112,3,192,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,15,0,0,30,0,0,60,0,0, + 120,0,1,240,0,1,224,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,0,0,0,0,0,0, + 0,0,0,3,192,0,3,192,0,3,192,0,3,192,0,35, + 37,185,39,2,249,0,7,252,0,0,0,63,255,128,0,0, + 255,255,240,0,1,255,255,248,0,7,248,3,252,0,15,224, + 0,126,0,15,128,0,31,0,31,0,0,15,128,62,0,0, + 7,128,60,0,0,7,192,120,7,231,131,192,120,15,247,131, + 192,112,31,255,129,224,240,62,31,129,224,240,60,15,129,224, + 240,120,7,129,224,240,120,7,129,224,240,120,7,129,224,240, + 120,7,129,224,240,120,7,129,224,240,120,7,129,224,240,120, + 7,129,192,240,120,7,129,192,112,56,15,131,192,120,60,15, + 135,128,120,30,27,255,0,124,31,251,255,0,60,15,240,252, + 0,62,1,128,48,0,31,0,0,0,0,31,128,0,0,0, + 15,224,0,0,0,7,248,0,128,0,3,255,255,128,0,0, + 255,255,128,0,0,63,255,128,0,0,7,254,0,0,28,30, + 120,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,63,192,0,0,127,192,0,0,121,224,0, + 0,121,224,0,0,241,240,0,0,240,240,0,1,240,240,0, + 1,224,248,0,1,224,120,0,3,224,124,0,3,192,60,0, + 7,192,60,0,7,128,62,0,7,128,30,0,15,128,31,0, + 15,255,255,0,31,255,255,128,31,255,255,128,30,0,7,128, + 60,0,3,192,60,0,3,192,124,0,3,224,120,0,1,224, + 120,0,1,224,240,0,0,240,240,0,0,240,21,30,90,26, + 3,0,255,254,0,255,255,128,255,255,192,255,255,224,240,7, + 224,240,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,224,240,1,224,240,7,192,255,255,128,255,255,0,255, + 255,192,240,3,224,240,0,240,240,0,112,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,248,240,1,248,240,7,240, + 255,255,224,255,255,224,255,255,128,255,254,0,22,30,90,26, + 2,1,1,255,128,7,255,224,15,255,240,31,0,248,62,0, + 120,60,0,60,120,0,60,120,0,60,120,0,0,112,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,112,0, + 0,112,0,0,120,0,60,120,0,60,60,0,60,60,0,120, + 31,0,248,15,255,240,7,255,224,1,255,128,23,30,90,28, + 3,0,255,248,0,255,255,0,255,255,192,255,255,224,240,15, + 240,240,1,248,240,0,248,240,0,124,240,0,60,240,0,60, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 60,240,0,60,240,0,124,240,0,248,240,1,240,240,7,240, + 255,255,224,255,255,192,255,255,0,255,248,0,19,30,90,24, + 3,0,255,255,192,255,255,192,255,255,192,255,255,192,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,17,30,90,23, + 3,0,255,255,128,255,255,128,255,255,128,255,255,128,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,0,255,255,0,255, + 255,0,255,255,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,25,30,120,30, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,128,63,0,62,0,15,0,60,0,7,128,120,0, + 7,128,120,0,0,0,112,0,0,0,240,0,0,0,240,0, + 0,0,240,0,0,0,240,0,0,0,240,3,255,128,240,3, + 255,128,240,3,255,128,240,3,255,128,240,0,7,128,240,0, + 7,128,120,0,7,128,120,0,7,128,124,0,7,128,62,0, + 7,128,62,0,7,128,31,128,7,128,15,255,255,128,7,255, + 255,128,3,255,255,0,0,255,248,0,22,30,90,28,3,0, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,255,255,252,255,255,252,255,255,252, + 255,255,252,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,4,30,30,10,3,0, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,17,30, + 90,22,2,0,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,0,7,128,0, + 7,128,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,240,7,128,240,7,128,240,15,128,120, + 31,0,127,255,0,63,254,0,31,252,0,15,240,0,22,30, + 90,26,3,0,240,1,240,240,3,224,240,7,192,240,15,128, + 240,31,0,240,30,0,240,60,0,240,124,0,240,248,0,241, + 240,0,243,224,0,247,192,0,255,128,0,255,128,0,255,192, + 0,247,192,0,243,224,0,243,240,0,241,248,0,240,252,0, + 240,124,0,240,62,0,240,31,0,240,31,128,240,15,192,240, + 7,192,240,3,224,240,1,240,240,1,248,240,0,252,17,30, + 90,21,3,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,30,30, + 120,36,3,0,252,0,0,252,254,0,1,252,254,0,1,252, + 254,0,1,252,255,0,3,252,255,0,3,252,247,128,7,188, + 247,128,7,188,247,128,7,188,243,192,15,60,243,192,15,60, + 243,192,14,60,241,224,30,60,241,224,30,60,240,224,28,60, + 240,240,60,60,240,240,60,60,240,120,120,60,240,120,120,60, + 240,120,120,60,240,60,240,60,240,60,240,60,240,28,224,60, + 240,31,224,60,240,31,224,60,240,15,192,60,240,15,192,60, + 240,15,192,60,240,7,128,60,240,7,128,60,22,30,90,28, + 3,0,252,0,60,252,0,60,254,0,60,254,0,60,255,0, + 60,255,0,60,255,128,60,247,128,60,247,192,60,243,192,60, + 243,224,60,241,224,60,241,240,60,240,240,60,240,248,60,240, + 120,60,240,124,60,240,60,60,240,62,60,240,30,60,240,31, + 60,240,15,60,240,15,188,240,7,188,240,3,252,240,3,252, + 240,1,252,240,1,252,240,0,252,240,0,252,26,30,120,30, + 2,1,1,255,224,0,3,255,240,0,15,255,252,0,31,255, + 254,0,31,0,62,0,62,0,31,0,60,0,15,0,120,0, + 7,128,120,0,7,128,112,0,3,128,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,112,0, + 3,128,120,0,7,128,120,0,7,128,120,0,15,128,60,0, + 15,0,62,0,31,0,31,128,126,0,15,255,252,0,7,255, + 248,0,3,255,240,0,0,255,192,0,19,30,90,24,3,0, + 255,248,0,255,254,0,255,255,128,255,255,192,240,15,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,240,15,192,255,255,192,255,255,128, + 255,254,0,255,248,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,28,30,120,31,2,1, + 0,255,192,0,3,255,240,0,15,255,252,0,31,255,254,0, + 31,0,62,0,62,0,31,0,60,0,15,128,120,0,7,128, + 120,0,7,128,112,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,112,0,3,128, + 120,0,7,128,120,0,7,128,120,0,15,0,60,0,15,0, + 62,0,30,0,31,128,126,0,15,255,255,240,7,255,255,240, + 3,255,255,240,0,255,255,240,20,30,90,25,3,0,255,252, + 0,255,255,0,255,255,192,255,255,224,240,7,224,240,1,224, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 1,224,240,7,192,255,255,128,255,255,0,255,255,0,255,255, + 128,240,7,192,240,3,192,240,3,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,0,224,240,0,224,240,0,240,240, + 0,240,240,0,240,240,0,112,22,30,90,26,2,1,3,255, + 0,15,255,192,63,255,224,63,255,240,124,0,240,120,0,120, + 240,0,120,240,0,120,240,0,0,240,0,0,120,0,0,124, + 0,0,63,128,0,31,252,0,15,255,128,0,255,224,0,7, + 240,0,0,248,0,0,120,0,0,56,0,0,60,240,0,60, + 240,0,60,240,0,60,120,0,120,124,0,248,63,255,240,63, + 255,240,31,255,192,7,255,0,23,30,90,25,1,0,255,255, + 254,255,255,254,255,255,254,255,255,254,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,23,30,90,29,3,0,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 120,0,60,120,0,60,124,0,124,62,0,248,63,255,248,31, + 255,240,15,255,224,3,255,128,24,30,90,26,1,0,240,0, + 15,248,0,15,248,0,31,120,0,30,124,0,30,124,0,62, + 60,0,60,62,0,60,30,0,124,30,0,120,31,0,120,15, + 0,248,15,0,240,15,0,240,7,129,240,7,129,224,7,129, + 224,3,195,224,3,195,192,3,195,192,1,231,192,1,231,128, + 1,231,128,0,255,128,0,255,0,0,255,0,0,126,0,0, + 126,0,0,126,0,0,60,0,37,30,150,39,1,0,240,0, + 248,0,120,240,0,248,0,120,240,1,248,0,248,120,1,252, + 0,240,120,1,252,0,240,120,1,220,0,240,124,3,222,1, + 224,60,3,222,1,224,60,3,222,1,224,60,3,142,1,224, + 30,7,143,3,192,30,7,143,3,192,30,7,15,3,192,30, + 7,7,3,128,15,15,7,135,128,15,15,7,135,128,15,14, + 3,135,128,7,14,3,135,0,7,158,3,207,0,7,158,3, + 207,0,7,156,1,206,0,3,156,1,222,0,3,252,1,254, + 0,3,252,1,254,0,1,248,0,252,0,1,248,0,252,0, + 1,248,0,252,0,1,240,0,248,0,0,240,0,120,0,0, + 240,0,120,0,26,30,120,28,1,0,62,0,15,0,62,0, + 31,0,31,0,30,0,15,128,60,0,15,128,124,0,7,192, + 120,0,3,224,240,0,3,224,240,0,1,241,224,0,0,243, + 224,0,0,251,192,0,0,127,128,0,0,63,128,0,0,63, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,247, + 192,0,0,243,224,0,1,227,224,0,3,225,240,0,3,192, + 248,0,7,128,248,0,15,128,124,0,15,0,62,0,31,0, + 62,0,62,0,31,0,60,0,31,0,124,0,15,128,248,0, + 7,192,24,30,90,26,1,0,248,0,15,248,0,31,124,0, + 30,124,0,60,62,0,124,30,0,120,31,0,248,15,0,240, + 15,129,224,7,129,224,3,195,192,3,227,192,1,231,128,1, + 247,0,0,255,0,0,254,0,0,126,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,21,30,90,25,2,0,127,255,248,127,255,248,127,255, + 248,127,255,248,0,0,248,0,1,248,0,1,240,0,3,224, + 0,7,192,0,15,128,0,31,128,0,31,0,0,62,0,0, + 124,0,0,252,0,0,248,0,1,240,0,3,224,0,7,192, + 0,15,192,0,15,128,0,31,0,0,62,0,0,126,0,0, + 252,0,0,248,0,0,255,255,248,255,255,248,255,255,248,255, + 255,248,8,38,38,16,4,248,255,255,255,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,255,255,255,12,33, + 66,16,2,254,224,0,224,0,224,0,96,0,112,0,112,0, + 48,0,56,0,56,0,56,0,28,0,28,0,28,0,12,0, + 14,0,14,0,6,0,7,0,7,0,7,0,3,0,3,128, + 3,128,1,128,1,192,1,192,1,192,0,192,0,224,0,224, + 0,96,0,112,0,112,8,38,38,16,4,248,255,255,255,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255, + 255,255,20,25,75,40,10,0,0,96,0,0,240,0,0,240, + 0,0,240,0,1,248,0,1,152,0,3,156,0,3,12,0, + 3,12,0,7,14,0,6,6,0,6,6,0,14,7,0,12, + 3,0,28,3,128,28,1,128,24,1,128,56,1,192,48,0, + 192,48,0,192,112,0,224,96,0,96,224,0,112,224,0,112, + 192,0,48,20,3,9,20,0,251,255,255,240,255,255,240,255, + 255,240,8,7,7,9,255,25,240,120,56,28,14,14,7,18, + 20,60,23,2,1,15,254,0,63,255,0,62,15,128,120,7, + 128,120,3,192,0,3,192,0,3,192,3,255,192,15,255,192, + 63,255,192,126,3,192,120,3,192,240,3,192,240,3,192,240, + 7,192,240,7,192,248,15,192,124,63,192,63,251,192,31,227, + 192,19,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,252,0,247,255,0,255,15,128,252,7, + 128,248,3,192,248,3,192,240,1,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,192,240,3,192,240, + 3,192,248,7,128,252,7,128,254,31,0,247,254,0,243,252, + 0,17,20,60,21,2,1,15,252,0,31,254,0,62,31,0, + 120,15,128,120,7,128,240,7,128,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,7, + 128,112,7,128,120,7,128,120,15,0,62,31,0,31,254,0, + 15,252,0,19,30,90,24,2,0,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,15,249,224,31,253,224,62,31,224, + 60,7,224,120,7,224,120,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,120,3,224,120,3,224,60,7,224,31,15,224,15,255,224, + 7,249,224,18,20,60,22,2,1,7,252,0,31,254,0,62, + 31,0,60,7,128,120,3,128,112,3,192,240,3,192,240,3, + 192,255,255,192,255,255,192,255,255,192,240,0,0,240,0,0, + 240,0,0,112,3,192,120,7,128,56,7,128,62,31,0,31, + 254,0,7,252,0,13,30,60,14,1,0,1,248,3,248,7, + 248,15,128,15,0,15,0,15,0,15,0,15,0,15,0,255, + 240,255,240,255,240,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,19,28,84,24,2,249,15,249,224, + 31,253,224,62,31,224,120,7,224,120,3,224,112,3,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,120,3,224,124,7,224,62,15,224, + 31,253,224,15,249,224,0,129,224,0,1,224,0,3,192,120, + 3,192,120,3,192,60,7,128,63,255,0,15,254,0,3,248, + 0,18,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,254,0,247,255,0,254,31,128,248,7, + 128,240,7,128,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,4,30,30,8,2,0,240,240,240,240,0,0,0,0,0, + 0,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,7,38,38,11,2,248,30,30,30,30,0, + 0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,254,252, + 248,16,30,60,20,3,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,30,240,62,240, + 124,240,248,241,240,243,224,247,192,255,128,255,0,255,0,247, + 128,247,192,243,224,241,240,240,240,240,248,240,124,240,62,240, + 30,240,31,4,30,30,10,3,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,30,20,80,36,3,1,243,252,31, + 224,247,254,63,240,254,31,112,248,252,15,224,120,248,7,192, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,18,20,60, + 24,3,1,243,254,0,247,255,0,254,31,128,248,7,128,248, + 7,128,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,20, + 20,60,24,2,1,7,252,0,15,255,0,63,15,128,60,3, + 192,120,3,224,120,1,224,240,1,224,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,1,224,120, + 1,224,120,3,224,60,3,192,63,15,128,15,255,0,7,254, + 0,19,28,84,24,3,249,243,254,0,247,255,0,254,15,128, + 252,7,192,248,3,192,248,3,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,248,3,192,248,3,192,252,7,192,254,15,128,247,255,0, + 243,254,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,19,28,84,24,2, + 249,15,249,224,31,253,224,62,15,224,124,7,224,120,3,224, + 120,3,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,3,224,120,3, + 224,124,7,224,62,15,224,31,253,224,15,249,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,11,20,40,15,3,0,243,224,247,224,255, + 224,254,0,248,0,248,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,16,20,40,20,2,1,31,248,63,254,124,62,248, + 31,240,15,240,0,240,0,124,0,127,192,63,248,15,254,0, + 126,0,31,0,15,240,15,240,15,240,31,124,62,127,252,31, + 248,12,25,50,14,1,1,14,0,30,0,30,0,30,0,30, + 0,255,240,255,240,255,240,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,15,0,15,240,7,240,18,20,60,24,3,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,20,60,21,1, + 0,240,0,240,240,1,224,120,1,224,120,1,192,124,3,192, + 60,3,192,60,7,128,30,7,128,30,7,0,15,15,0,15, + 14,0,15,14,0,7,158,0,7,156,0,3,252,0,3,248, + 0,3,248,0,1,248,0,1,240,0,0,240,0,31,20,80, + 33,1,0,240,7,192,30,240,15,192,28,240,15,192,60,120, + 15,224,60,120,30,224,56,120,30,224,120,56,28,240,120,60, + 28,112,112,60,60,112,112,28,56,120,240,30,56,56,224,30, + 120,56,224,14,112,57,224,15,112,29,192,15,240,29,192,7, + 224,31,192,7,224,31,128,7,224,15,128,3,192,15,128,3, + 192,15,0,20,20,60,22,1,0,120,1,224,60,3,192,62, + 3,192,31,7,128,15,15,0,7,158,0,7,222,0,3,252, + 0,1,248,0,0,240,0,1,248,0,3,252,0,3,188,0, + 7,158,0,15,31,0,30,15,128,62,7,128,60,3,192,120, + 3,224,240,1,240,20,28,84,21,1,248,240,0,240,240,1, + 224,120,1,224,120,1,192,60,3,192,60,3,192,62,7,128, + 30,7,128,30,7,128,15,15,0,15,15,0,15,158,0,7, + 158,0,7,158,0,3,252,0,3,252,0,1,248,0,1,248, + 0,1,248,0,0,240,0,0,240,0,0,224,0,1,224,0, + 1,224,0,1,192,0,3,192,0,3,128,0,7,128,0,15, + 20,40,19,2,0,127,254,127,254,127,254,0,62,0,124,0, + 120,0,240,1,240,3,224,3,192,7,128,15,128,31,0,30, + 0,60,0,124,0,248,0,255,254,255,254,255,254,13,41,82, + 19,3,246,0,24,1,248,3,248,3,224,7,128,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,7,0,7, + 0,7,0,15,0,31,0,62,0,252,0,248,0,252,0,126, + 0,30,0,15,0,15,0,7,0,7,0,7,0,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,3,192,3, + 248,1,248,0,120,2,43,43,14,6,245,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,41,82,19,3,246,192,0,252,0, + 254,0,30,0,15,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,128,7,128,7,128,7,128,7,128,7,128,3,192, + 3,224,1,248,0,248,1,248,1,240,3,192,3,192,7,128, + 7,128,7,128,7,128,7,128,7,128,7,0,7,0,7,0, + 7,0,7,0,15,0,31,0,254,0,252,0,240,0,21,5, + 15,21,0,8,2,0,56,31,240,120,63,255,240,120,127,224, + 240,15,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--48-480-72-72-P-226-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 35 + Calculated Max Values w=29 h=39 x=10 y=16 dx=49 dy= 0 ascent=36 len=116 + Font Bounding box w=65 h=64 x=-4 y=-13 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =35 descent= 0 + X Font ascent =35 descent= 0 + Max Font ascent =36 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur35n[1417] U8G_SECTION(".progmem.u8g_font_fur35n") = { + 0,65,64,252,243,35,0,0,0,0,42,57,0,36,250,35, + 0,19,19,57,31,6,16,6,12,0,30,15,0,15,30,0, + 15,30,0,7,28,0,3,184,0,1,176,0,193,240,96,255, + 255,224,255,255,224,248,227,224,1,240,0,3,184,0,7,188, + 0,7,28,0,15,30,0,30,15,0,14,14,0,2,8,0, + 29,29,116,49,10,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,255,255,255,248,255,255, + 255,248,255,255,255,248,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,9,12,24,13,2,250, + 31,128,31,0,31,0,62,0,62,0,62,0,60,0,124,0, + 120,0,120,0,112,0,240,0,12,4,8,16,2,10,255,240, + 255,240,255,240,255,240,5,6,6,13,5,0,248,248,248,248, + 248,248,15,39,78,19,2,253,0,14,0,30,0,28,0,28, + 0,60,0,56,0,56,0,120,0,112,0,112,0,112,0,240, + 0,224,0,224,1,224,1,192,1,192,1,192,3,192,3,128, + 3,128,7,128,7,0,7,0,15,0,15,0,14,0,14,0, + 30,0,28,0,28,0,60,0,56,0,56,0,56,0,120,0, + 112,0,112,0,240,0,22,35,105,27,2,1,3,255,0,7, + 255,128,31,255,224,31,255,224,62,3,240,62,1,240,124,0, + 248,120,0,248,120,0,120,248,0,120,248,0,124,248,0,124, + 248,0,124,248,0,124,248,0,124,248,0,124,248,0,124,248, + 0,124,248,0,124,248,0,124,248,0,124,248,0,124,248,0, + 124,248,0,124,120,0,124,120,0,120,120,0,120,124,0,248, + 60,0,248,62,1,240,63,3,240,31,255,224,15,255,192,7, + 255,128,1,255,0,12,35,70,27,7,0,3,240,7,240,15, + 240,31,240,127,240,255,240,253,240,241,240,193,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,21,35,105,27,3,1,3,255,0,15,255,128,31,255,192, + 63,255,224,63,1,240,126,0,240,124,0,248,124,0,248,124, + 0,248,124,0,248,0,0,248,0,0,248,0,0,240,0,1, + 240,0,3,224,0,7,224,0,7,192,0,15,128,0,31,128, + 0,63,0,0,126,0,0,252,0,1,248,0,3,240,0,7, + 224,0,15,192,0,31,192,0,31,128,0,63,0,0,126,0, + 0,252,0,0,255,255,248,255,255,248,255,255,248,255,255,248, + 22,35,105,27,2,1,3,255,0,15,255,192,31,255,224,31, + 255,240,63,1,248,62,0,248,124,0,120,124,0,120,124,0, + 124,0,0,120,0,0,120,0,0,248,0,1,240,0,15,224, + 0,255,192,0,255,0,0,255,128,0,255,192,0,15,224,0, + 1,240,0,0,248,0,0,248,0,0,124,0,0,124,0,0, + 124,248,0,124,248,0,124,252,0,124,252,0,120,124,0,248, + 127,3,248,63,255,240,31,255,224,15,255,192,3,255,0,24, + 35,105,27,1,0,0,3,240,0,7,240,0,7,240,0,15, + 240,0,31,240,0,63,240,0,61,240,0,121,240,0,249,240, + 0,241,240,1,225,240,3,225,240,3,193,240,7,129,240,15, + 129,240,15,1,240,30,1,240,62,1,240,60,1,240,120,1, + 240,248,1,240,240,1,240,255,255,255,255,255,255,255,255,255, + 255,255,255,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,21,35, + 105,27,3,0,127,255,224,127,255,224,127,255,224,127,255,224, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,254,0,125,255,128,127,255, + 192,127,131,224,126,1,240,124,0,240,120,0,248,120,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,248,0,120,248,0,248,248,0,240,248,1,240,126,3, + 224,63,255,224,63,255,192,15,255,128,7,254,0,23,35,105, + 27,2,1,1,255,128,7,255,192,15,255,224,31,193,240,31, + 0,248,62,0,248,62,0,120,124,0,120,124,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,127,0,120,255,192, + 249,255,240,251,255,240,255,131,248,254,0,248,252,0,124,252, + 0,124,248,0,60,248,0,60,248,0,60,248,0,62,248,0, + 60,248,0,60,120,0,60,124,0,124,124,0,120,63,1,248, + 31,255,240,15,255,224,7,255,192,1,255,0,21,35,105,27, + 3,0,255,255,248,255,255,248,255,255,248,255,255,248,0,0, + 120,0,0,248,0,0,240,0,1,240,0,1,240,0,1,224, + 0,3,224,0,3,224,0,7,192,0,7,192,0,7,128,0, + 15,128,0,15,128,0,15,0,0,31,0,0,31,0,0,62, + 0,0,62,0,0,62,0,0,124,0,0,124,0,0,248,0, + 0,248,0,0,248,0,1,240,0,1,240,0,3,240,0,3, + 224,0,3,224,0,7,192,0,7,192,0,22,35,105,27,2, + 1,3,255,128,15,255,224,31,255,240,63,255,248,63,1,248, + 126,0,252,124,0,124,124,0,124,124,0,124,124,0,124,124, + 0,124,60,0,120,62,0,248,31,131,240,15,255,224,3,255, + 128,7,255,128,15,255,224,31,3,240,62,0,248,124,0,120, + 120,0,124,248,0,60,248,0,60,248,0,60,248,0,60,248, + 0,60,248,0,60,248,0,124,124,0,124,126,1,248,63,255, + 248,31,255,240,15,255,224,3,255,128,22,35,105,27,2,1, + 3,255,128,15,255,192,31,255,224,63,255,240,126,1,248,124, + 0,248,120,0,248,248,0,124,248,0,124,248,0,124,248,0, + 124,248,0,124,248,0,124,248,0,124,248,0,252,120,0,252, + 124,1,252,127,3,252,63,255,252,31,255,124,15,254,124,3, + 248,124,0,0,124,0,0,124,0,0,120,0,0,120,0,0, + 248,120,0,248,120,1,240,124,1,240,62,3,224,63,255,224, + 31,255,192,15,255,128,7,254,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--58-580-72-72-P-271-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 42 + Calculated Max Values w=35 h=46 x=12 y=20 dx=59 dy= 0 ascent=43 len=175 + Font Bounding box w=78 h=76 x=-4 y=-15 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =42 descent= 0 + X Font ascent =42 descent= 0 + Max Font ascent =43 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur42n[2135] U8G_SECTION(".progmem.u8g_font_fur42n") = { + 0,78,76,252,241,42,0,0,0,0,42,57,0,43,249,42, + 0,23,22,66,37,7,20,3,1,128,7,131,192,15,131,224, + 7,131,192,7,199,192,3,199,128,1,239,0,0,238,0,0, + 254,0,254,124,254,255,255,254,255,255,254,254,124,254,0,124, + 0,0,238,0,1,239,0,3,199,128,3,199,128,7,195,192, + 15,131,224,15,131,224,3,1,128,35,35,175,59,12,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,255,255,255,255,224,255, + 255,255,255,224,255,255,255,255,224,255,255,255,255,224,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,10,15, + 30,16,3,249,31,192,31,192,31,128,63,128,63,0,63,0, + 62,0,62,0,126,0,124,0,124,0,120,0,248,0,248,0, + 240,0,14,5,10,18,2,12,255,252,255,252,255,252,255,252, + 255,252,6,7,7,16,6,0,252,252,252,252,252,252,252,17, + 46,138,23,3,253,0,7,128,0,7,128,0,7,128,0,15, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,60,0,0,60,0,0,60,0,0,120,0,0, + 120,0,0,120,0,0,240,0,0,240,0,0,240,0,0,240, + 0,1,224,0,1,224,0,1,224,0,3,192,0,3,192,0, + 3,192,0,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,62,0,0,60,0,0,60,0,0,60,0,0,120,0,0, + 120,0,0,120,0,0,240,0,0,240,0,0,240,0,0,26, + 42,168,32,3,1,0,255,224,0,3,255,240,0,7,255,252, + 0,15,255,254,0,31,255,254,0,63,128,127,0,63,0,63, + 0,62,0,31,128,126,0,31,128,124,0,15,128,124,0,15, + 192,124,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 192,248,0,7,192,248,0,7,192,248,0,7,192,248,0,7, + 192,248,0,7,192,248,0,7,192,248,0,7,192,248,0,7, + 192,248,0,7,192,252,0,7,192,252,0,7,192,252,0,7, + 192,252,0,7,192,252,0,15,192,124,0,15,192,124,0,15, + 192,126,0,15,192,126,0,15,128,62,0,31,128,63,0,31, + 128,63,0,63,0,31,192,127,0,31,255,254,0,15,255,252, + 0,7,255,252,0,3,255,240,0,0,255,192,0,14,42,84, + 32,8,0,0,252,1,252,3,252,7,252,15,252,63,252,127, + 252,255,124,254,124,248,124,224,124,128,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,25,42,168,32,4,1,1,255,192, + 0,7,255,240,0,15,255,248,0,31,255,252,0,31,255,254, + 0,63,128,127,0,63,0,63,0,127,0,31,128,126,0,31, + 128,126,0,31,128,126,0,15,128,126,0,15,128,0,0,31, + 128,0,0,31,128,0,0,31,0,0,0,63,0,0,0,63, + 0,0,0,126,0,0,0,252,0,0,1,252,0,0,3,248, + 0,0,7,240,0,0,7,224,0,0,15,224,0,0,31,192, + 0,0,63,128,0,0,127,0,0,0,254,0,0,1,252,0, + 0,3,248,0,0,7,240,0,0,15,224,0,0,31,224,0, + 0,63,192,0,0,63,128,0,0,127,0,0,0,254,0,0, + 0,255,255,255,128,255,255,255,128,255,255,255,128,255,255,255, + 128,255,255,255,128,26,42,168,32,3,1,1,255,192,0,7, + 255,240,0,15,255,252,0,31,255,254,0,63,255,255,0,63, + 128,127,0,127,0,31,128,126,0,31,128,126,0,15,128,126, + 0,15,128,252,0,15,128,0,0,15,128,0,0,15,128,0, + 0,31,128,0,0,63,0,0,0,126,0,0,3,252,0,0, + 127,248,0,0,127,240,0,0,127,224,0,0,127,240,0,0, + 127,252,0,0,3,254,0,0,0,127,0,0,0,63,128,0, + 0,31,128,0,0,15,192,0,0,15,192,0,0,7,192,0, + 0,7,192,252,0,7,192,252,0,7,192,252,0,7,192,252, + 0,15,192,254,0,31,192,127,0,63,128,127,128,127,128,63, + 255,255,0,63,255,254,0,31,255,252,0,7,255,248,0,1, + 255,224,0,29,42,168,32,2,0,0,0,127,0,0,0,127, + 0,0,0,255,0,0,1,255,0,0,3,255,0,0,3,255, + 0,0,7,223,0,0,15,223,0,0,15,159,0,0,31,31, + 0,0,63,31,0,0,62,31,0,0,124,31,0,0,252,31, + 0,0,248,31,0,1,240,31,0,3,240,31,0,3,224,31, + 0,7,192,31,0,15,192,31,0,15,128,31,0,31,0,31, + 0,63,0,31,0,126,0,31,0,124,0,31,0,252,0,31, + 0,248,0,31,0,255,255,255,248,255,255,255,248,255,255,255, + 248,255,255,255,248,255,255,255,248,0,0,31,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, + 0,26,42,168,32,3,0,127,255,255,0,127,255,255,0,127, + 255,255,0,127,255,255,0,127,255,255,0,124,0,0,0,124, + 0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,124, + 0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,124, + 31,192,0,124,127,240,0,124,255,252,0,125,255,254,0,127, + 224,254,0,127,128,63,0,127,0,31,0,126,0,31,128,126, + 0,15,128,124,0,15,128,0,0,15,192,0,0,15,192,0, + 0,7,192,0,0,7,192,0,0,7,192,0,0,15,192,0, + 0,15,192,252,0,15,192,252,0,15,128,252,0,31,128,254, + 0,31,128,126,0,63,0,127,128,126,0,63,255,254,0,63, + 255,252,0,15,255,248,0,7,255,224,0,1,255,192,0,27, + 42,168,32,3,1,0,127,240,0,1,255,252,0,3,255,254, + 0,15,240,127,0,15,192,63,128,31,128,31,128,63,0,15, + 192,63,0,15,192,62,0,15,192,126,0,0,0,126,0,0, + 0,124,0,0,0,124,0,0,0,124,0,0,0,124,0,0, + 0,124,15,224,0,124,63,248,0,124,255,254,0,124,255,255, + 0,125,255,255,128,127,224,127,128,127,192,31,192,255,128,15, + 192,255,0,7,192,255,0,7,224,254,0,7,224,254,0,7, + 224,254,0,3,224,254,0,3,224,254,0,3,224,254,0,7, + 224,254,0,7,224,126,0,7,224,127,0,7,192,127,0,15, + 192,63,128,15,192,31,192,63,128,31,255,255,0,15,255,255, + 0,7,255,254,0,1,255,248,0,0,127,224,0,26,42,168, + 32,3,0,255,255,255,192,255,255,255,192,255,255,255,192,255, + 255,255,192,255,255,255,192,0,0,7,192,0,0,15,192,0, + 0,15,128,0,0,31,128,0,0,31,128,0,0,31,0,0, + 0,63,0,0,0,63,0,0,0,126,0,0,0,126,0,0, + 0,124,0,0,0,252,0,0,0,252,0,0,1,248,0,0, + 1,248,0,0,1,248,0,0,3,240,0,0,3,240,0,0, + 7,224,0,0,7,224,0,0,15,224,0,0,15,192,0,0, + 15,192,0,0,31,128,0,0,31,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,127,0,0,0,126,0,0,0, + 254,0,0,0,252,0,0,0,252,0,0,1,252,0,0,1, + 248,0,0,3,248,0,0,3,240,0,0,27,42,168,32,2, + 1,0,255,224,0,3,255,252,0,15,255,254,0,31,255,255, + 0,63,255,255,128,63,128,63,192,127,0,31,192,126,0,15, + 192,126,0,7,192,126,0,7,192,124,0,7,192,124,0,7, + 192,126,0,7,192,62,0,15,192,63,0,15,128,31,128,31, + 0,15,224,127,0,7,255,254,0,3,255,248,0,0,255,240, + 0,3,255,248,0,15,255,254,0,31,224,127,0,63,128,31, + 128,62,0,15,192,126,0,7,192,124,0,7,224,252,0,3, + 224,252,0,3,224,248,0,3,224,248,0,3,224,252,0,3, + 224,252,0,3,224,252,0,7,224,254,0,7,224,127,0,15, + 224,127,128,31,192,63,255,255,128,31,255,255,128,15,255,255, + 0,3,255,252,0,0,255,240,0,27,42,168,32,3,1,1, + 255,240,0,7,255,252,0,15,255,254,0,31,255,255,0,63, + 255,255,128,63,128,63,128,126,0,31,192,126,0,15,192,252, + 0,15,192,252,0,7,224,252,0,7,224,248,0,7,224,248, + 0,7,224,248,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,224,124,0,15,224,126,0,31,224,63,0,63,224,63, + 192,123,224,31,255,243,224,15,255,243,224,3,255,195,224,0, + 255,7,224,0,0,7,224,0,0,7,224,0,0,7,224,0, + 0,7,192,0,0,7,192,0,0,7,192,124,0,15,192,124, + 0,15,128,126,0,31,128,62,0,31,128,63,0,63,0,63, + 128,255,0,31,255,254,0,31,255,252,0,15,255,248,0,7, + 255,240,0,1,255,192,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--68-680-72-72-P-317-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 49 + Calculated Max Values w=41 h=54 x=14 y=23 dx=69 dy= 0 ascent=50 len=250 + Font Bounding box w=92 h=89 x=-5 y=-18 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =49 descent= 0 + X Font ascent =49 descent= 0 + Max Font ascent =50 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur49n[2643] U8G_SECTION(".progmem.u8g_font_fur49n") = { + 0,92,89,251,238,49,0,0,0,0,42,57,0,50,247,49, + 0,27,26,104,45,9,23,0,192,96,0,3,192,120,0,15, + 192,126,0,7,224,252,0,3,224,248,0,1,241,240,0,1, + 241,240,0,0,251,224,0,0,123,192,0,0,59,128,0,224, + 63,128,224,255,255,255,224,255,255,255,224,255,255,255,224,255, + 159,63,224,128,63,128,32,0,123,192,0,0,123,192,0,0, + 241,224,0,1,241,240,0,3,241,248,0,3,224,248,0,7, + 224,252,0,15,192,124,0,3,192,120,0,0,128,32,0,41, + 41,246,69,14,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,255,255,255,255,255,128,255,255,255, + 255,255,128,255,255,255,255,255,128,255,255,255,255,255,128,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,12,17,34,19,3, + 247,15,240,15,240,15,224,15,224,31,224,31,192,31,192,31, + 128,63,128,63,0,63,0,62,0,126,0,126,0,124,0,124, + 0,248,0,16,6,12,22,3,14,255,255,255,255,255,255,255, + 255,255,255,255,255,7,8,8,19,7,0,254,254,254,254,254, + 254,254,254,21,54,162,27,3,252,0,0,248,0,0,240,0, + 1,240,0,1,240,0,1,240,0,1,224,0,3,224,0,3, + 224,0,3,192,0,7,192,0,7,192,0,7,128,0,15,128, + 0,15,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,124,0,0,120,0,0,248,0,0,248,0,0,240,0, + 1,240,0,1,240,0,1,240,0,1,224,0,3,224,0,3, + 224,0,3,192,0,7,192,0,7,192,0,7,128,0,15,128, + 0,15,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,124,0,0,120,0,0,248,0,0,31,51,204,38,3, + 255,0,31,240,0,0,127,252,0,1,255,255,0,3,255,255, + 128,7,255,255,192,15,255,255,224,31,240,31,240,31,192,15, + 240,63,128,7,248,63,128,3,248,63,0,1,248,127,0,1, + 252,126,0,1,252,126,0,0,252,126,0,0,252,254,0,0, + 252,254,0,0,254,252,0,0,254,252,0,0,254,252,0,0, + 254,252,0,0,126,252,0,0,126,252,0,0,126,252,0,0, + 126,252,0,0,126,252,0,0,126,252,0,0,126,252,0,0, + 126,252,0,0,126,252,0,0,254,254,0,0,254,254,0,0, + 254,254,0,0,254,254,0,0,254,126,0,0,254,126,0,0, + 252,126,0,0,252,127,0,1,252,127,0,1,252,63,0,1, + 252,63,128,3,248,63,128,3,248,31,192,7,248,31,224,15, + 240,15,248,63,240,15,255,255,224,7,255,255,192,3,255,255, + 128,1,255,255,0,0,127,252,0,0,15,240,0,16,49,98, + 38,9,0,0,127,0,255,1,255,3,255,7,255,31,255,63, + 255,127,255,255,255,255,63,252,63,240,63,192,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,29,50,200,38,4,0,0,31,224,0,0, + 255,252,0,3,255,255,0,7,255,255,128,15,255,255,192,31, + 255,255,224,31,240,31,224,63,224,7,240,63,192,3,240,63, + 128,3,248,127,128,3,248,127,0,1,248,127,0,1,248,127, + 0,1,248,127,0,1,248,0,0,1,248,0,0,1,248,0, + 0,3,248,0,0,3,248,0,0,7,240,0,0,7,240,0, + 0,15,224,0,0,31,224,0,0,63,192,0,0,127,128,0, + 0,127,0,0,0,255,0,0,1,254,0,0,3,252,0,0, + 7,248,0,0,15,240,0,0,31,240,0,0,63,224,0,0, + 127,192,0,0,127,128,0,0,255,0,0,1,254,0,0,3, + 252,0,0,7,248,0,0,15,248,0,0,31,240,0,0,63, + 224,0,0,127,192,0,0,255,128,0,0,255,0,0,0,255, + 255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255, + 255,255,248,31,51,204,38,3,255,0,31,240,0,0,255,254, + 0,1,255,255,128,3,255,255,192,7,255,255,224,15,248,31, + 240,31,224,7,248,31,192,3,248,63,192,1,252,63,128,0, + 252,63,128,0,252,127,0,0,252,127,0,0,252,127,0,0, + 252,0,0,0,252,0,0,0,252,0,0,1,252,0,0,1, + 248,0,0,3,248,0,0,7,240,0,0,31,224,0,0,255, + 192,0,31,255,128,0,31,254,0,0,31,252,0,0,31,255, + 0,0,31,255,192,0,0,255,224,0,0,15,240,0,0,7, + 248,0,0,3,252,0,0,1,252,0,0,0,254,0,0,0, + 254,0,0,0,126,0,0,0,126,0,0,0,126,254,0,0, + 126,254,0,0,126,255,0,0,126,255,0,0,254,127,0,0, + 254,127,128,1,252,127,128,3,252,63,224,7,248,31,248,31, + 240,15,255,255,224,7,255,255,192,3,255,255,128,0,255,254, + 0,0,31,240,0,34,50,250,38,2,0,0,0,15,240,0, + 0,0,15,240,0,0,0,31,240,0,0,0,63,240,0,0, + 0,63,240,0,0,0,127,240,0,0,0,255,240,0,0,0, + 255,240,0,0,1,251,240,0,0,3,251,240,0,0,3,243, + 240,0,0,7,227,240,0,0,15,227,240,0,0,15,195,240, + 0,0,31,131,240,0,0,63,131,240,0,0,63,3,240,0, + 0,126,3,240,0,0,254,3,240,0,1,252,3,240,0,1, + 248,3,240,0,3,248,3,240,0,7,240,3,240,0,7,224, + 3,240,0,15,224,3,240,0,31,192,3,240,0,31,128,3, + 240,0,63,128,3,240,0,127,0,3,240,0,126,0,3,240, + 0,252,0,3,240,0,252,0,3,240,0,255,255,255,255,192, + 255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,255, + 255,255,255,192,255,255,255,255,192,0,0,3,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3, + 240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240, + 0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0, + 0,0,3,240,0,30,50,200,38,4,255,63,255,255,224,63, + 255,255,224,63,255,255,224,63,255,255,224,63,255,255,224,63, + 255,255,224,63,0,0,0,63,0,0,0,63,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,3,248,0,63, + 31,254,0,63,63,255,128,63,127,255,192,63,255,255,224,63, + 248,31,224,63,224,7,240,63,192,3,240,63,128,3,248,63, + 0,1,248,63,0,1,252,62,0,1,252,0,0,0,252,0, + 0,0,252,0,0,0,252,0,0,0,252,0,0,0,252,0, + 0,0,252,0,0,0,252,0,0,0,252,0,0,0,252,254, + 0,1,252,254,0,1,248,254,0,1,248,255,0,3,248,127, + 0,3,240,127,128,7,224,127,192,15,224,63,240,63,192,31, + 255,255,128,15,255,255,0,7,255,254,0,1,255,248,0,0, + 31,224,0,31,51,204,38,3,255,0,7,248,0,0,63,255, + 0,0,255,255,192,1,255,255,224,3,255,255,240,7,252,15, + 240,15,248,7,248,31,224,3,248,31,192,1,252,63,192,1, + 252,63,128,0,252,63,0,0,252,127,0,0,252,127,0,0, + 0,127,0,0,0,126,0,0,0,126,0,0,0,126,0,0, + 0,126,0,0,0,126,0,0,0,126,7,252,0,126,31,255, + 0,126,63,255,192,126,127,255,224,126,255,255,240,127,252,15, + 248,127,240,3,248,255,192,1,252,255,192,1,252,255,128,0, + 254,255,128,0,254,255,0,0,126,255,0,0,126,255,0,0, + 126,255,0,0,126,255,0,0,126,255,0,0,126,255,0,0, + 126,127,0,0,126,127,0,0,126,127,128,0,254,63,128,0, + 252,63,128,1,252,31,192,1,252,31,224,3,248,15,248,15, + 240,7,255,255,224,3,255,255,192,1,255,255,128,0,127,254, + 0,0,15,248,0,30,49,196,38,4,0,255,255,255,252,255, + 255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,0, + 0,0,252,0,0,1,252,0,0,1,252,0,0,1,248,0, + 0,3,248,0,0,3,240,0,0,7,240,0,0,7,240,0, + 0,7,224,0,0,15,224,0,0,15,224,0,0,31,192,0, + 0,31,192,0,0,31,128,0,0,63,128,0,0,63,128,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,254,0,0, + 0,254,0,0,0,254,0,0,1,252,0,0,1,252,0,0, + 3,248,0,0,3,248,0,0,3,248,0,0,7,240,0,0, + 7,240,0,0,15,240,0,0,15,224,0,0,15,224,0,0, + 31,192,0,0,31,192,0,0,63,192,0,0,63,128,0,0, + 63,128,0,0,127,128,0,0,127,0,0,0,127,0,0,0, + 254,0,0,0,254,0,0,1,254,0,0,1,252,0,0,32, + 51,204,38,3,255,0,15,248,0,0,127,255,0,1,255,255, + 128,3,255,255,224,7,255,255,240,15,248,31,248,31,224,7, + 252,31,192,1,252,63,128,1,252,63,128,0,254,63,0,0, + 254,63,0,0,254,63,0,0,126,63,0,0,126,63,0,0, + 126,63,0,0,254,63,0,0,252,31,128,0,252,31,128,1, + 248,15,192,3,248,15,224,7,240,7,248,31,224,3,255,255, + 192,0,255,255,128,0,127,254,0,1,255,255,128,3,255,255, + 192,15,248,15,240,31,192,3,248,31,128,1,248,63,0,0, + 252,127,0,0,126,126,0,0,126,126,0,0,126,254,0,0, + 127,252,0,0,63,252,0,0,63,252,0,0,63,254,0,0, + 127,254,0,0,127,254,0,0,127,254,0,0,127,127,0,0, + 254,127,128,1,254,63,192,3,252,63,240,15,252,31,255,255, + 248,15,255,255,240,3,255,255,192,0,255,255,0,0,15,248, + 0,31,51,204,38,3,255,0,31,248,0,0,255,255,0,3, + 255,255,192,7,255,255,224,15,255,255,240,31,240,31,248,63, + 192,7,248,63,128,3,252,127,0,1,252,126,0,1,252,126, + 0,0,254,254,0,0,254,254,0,0,254,252,0,0,254,252, + 0,0,254,252,0,0,254,252,0,0,254,252,0,0,254,254, + 0,0,254,254,0,0,254,254,0,0,254,126,0,1,254,127, + 0,1,254,63,128,3,254,63,192,7,254,31,240,31,254,31, + 255,255,126,15,255,254,126,7,255,252,126,1,255,248,126,0, + 63,224,126,0,0,0,126,0,0,0,126,0,0,0,126,0, + 0,0,254,0,0,0,252,0,0,0,252,0,0,0,252,126, + 0,0,252,127,0,1,248,63,0,1,248,63,0,3,248,63, + 0,7,240,63,128,7,240,31,192,31,224,31,224,63,224,15, + 255,255,192,7,255,255,128,3,255,255,0,1,255,252,0,0, + 63,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y=11 dx=16 dy= 0 ascent=16 len=34 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11[4313] U8G_SECTION(".progmem.u8g_font_gdb11") = { + 0,27,26,247,250,11,2,67,5,71,32,255,252,16,251,14, + 252,0,0,0,4,0,0,3,14,14,6,1,255,96,224,96, + 96,96,96,96,64,64,64,0,224,224,192,6,6,6,8,1, + 7,108,236,204,76,76,76,8,10,10,9,1,1,26,18,22, + 127,36,36,254,72,72,216,7,14,14,9,1,254,16,16,126, + 150,144,240,120,30,18,146,210,252,16,16,11,11,22,13,1, + 0,112,64,144,128,137,128,139,0,146,0,85,192,42,32,26, + 32,50,32,34,32,65,192,11,13,26,12,1,0,28,0,102, + 0,70,0,70,0,124,0,120,0,113,224,248,128,252,128,222, + 128,207,0,195,128,125,224,3,6,6,5,1,7,96,224,192, + 64,64,64,4,17,17,6,1,253,16,32,96,64,64,192,192, + 192,192,192,192,192,192,64,96,32,16,4,17,17,6,1,253, + 128,64,96,32,48,48,48,48,48,48,48,48,32,32,96,64, + 128,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224,3,9,9,5,1,255,224,224,192, + 0,0,0,224,224,192,3,11,11,5,1,253,224,224,192,0, + 0,0,96,224,96,64,192,8,6,6,8,0,2,3,30,112, + 240,30,7,8,4,4,8,0,3,127,128,0,255,8,6,6, + 8,0,2,96,188,15,14,120,192,7,14,14,8,1,255,60, + 198,198,134,12,8,16,32,32,32,0,56,56,56,14,16,32, + 16,1,252,7,192,31,240,48,56,64,8,71,68,136,196,152, + 196,152,196,152,196,152,200,159,248,206,224,192,32,112,112,63, + 192,31,128,11,11,22,11,0,0,6,0,14,0,14,0,11, + 0,19,0,19,0,63,128,33,128,33,192,96,192,241,224,9, + 11,22,11,1,0,254,0,99,0,99,0,99,0,126,0,99, + 128,97,128,97,128,97,128,97,128,254,0,8,11,11,10,1, + 0,31,99,64,192,192,192,192,192,192,97,62,9,11,22,11, + 1,0,254,0,99,0,97,0,97,128,97,128,97,128,97,128, + 97,128,97,0,99,0,252,0,9,11,22,9,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,11,22,9,0,0,255,128,49,0,49,0, + 48,0,48,0,62,0,48,0,48,0,48,0,48,0,248,0, + 11,11,22,11,0,0,15,192,49,192,64,0,192,0,192,0, + 192,0,193,224,192,192,64,192,112,192,31,128,10,11,22,12, + 1,0,243,192,97,128,97,128,97,128,97,128,127,128,97,128, + 97,128,97,128,97,128,243,192,4,11,11,6,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,14,14,6,254,253,62, + 12,12,12,12,12,12,12,12,12,12,8,136,240,10,11,22, + 11,1,0,243,192,99,0,102,0,108,0,104,0,120,0,108, + 0,102,0,103,0,99,128,241,192,8,11,11,9,1,0,240, + 96,96,96,96,96,96,96,97,97,255,15,11,22,15,0,0, + 112,28,56,56,56,56,56,120,44,88,44,88,38,216,38,152, + 35,152,35,24,243,62,10,11,22,12,1,0,225,192,96,128, + 112,128,120,128,92,128,76,128,70,128,71,128,67,128,65,128, + 225,128,10,11,22,11,0,0,30,0,33,128,64,128,192,192, + 192,192,192,192,192,192,192,192,64,128,97,0,30,0,8,11, + 11,10,1,0,254,99,99,99,98,124,96,96,96,96,240,12, + 14,28,11,0,253,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,3,144,1,240,0, + 96,10,11,22,11,1,0,254,0,99,0,99,0,99,0,98, + 0,124,0,100,0,102,0,99,0,99,128,241,192,7,11,11, + 9,1,0,62,198,128,192,112,60,6,2,130,196,248,10,11, + 22,10,0,0,255,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,30,0,10,11,22,12,1,0, + 241,192,96,128,96,128,96,128,96,128,96,128,96,128,96,128, + 96,128,49,0,30,0,12,11,22,12,0,0,248,240,112,64, + 48,64,48,128,24,128,25,128,29,0,13,0,15,0,6,0, + 6,0,15,11,22,15,0,0,241,30,97,132,49,140,51,200, + 50,200,50,200,28,120,28,112,28,48,24,48,8,48,11,11, + 22,11,0,0,249,224,48,128,57,128,31,0,14,0,6,0, + 15,0,27,0,49,128,33,192,243,224,10,11,22,11,1,0, + 227,192,113,128,49,0,59,0,26,0,14,0,12,0,12,0, + 12,0,12,0,30,0,9,11,22,10,0,0,127,128,67,0, + 71,0,6,0,14,0,12,0,24,0,56,0,48,128,112,128, + 255,128,4,17,17,6,1,253,240,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,240,8,17,17,8,0,253,192, + 64,96,32,48,48,16,24,24,8,12,4,6,6,2,3,3, + 4,17,17,6,1,253,240,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,240,7,9,9,9,1,5,16,48,56, + 40,76,76,68,134,130,8,1,1,9,0,254,255,4,4,4, + 6,0,9,192,96,32,16,8,8,8,9,1,0,60,102,198, + 30,102,198,207,118,9,14,28,10,0,0,96,0,224,0,96, + 0,96,0,96,0,96,0,103,0,127,128,112,128,96,128,96, + 128,97,0,97,0,62,0,7,8,8,8,1,0,62,70,196, + 192,192,192,66,124,9,14,28,10,1,0,3,0,7,0,3, + 0,3,0,3,0,3,0,63,0,67,0,195,0,195,0,195, + 0,195,0,127,128,59,0,7,8,8,9,1,0,60,70,198, + 254,192,192,98,60,7,13,13,6,1,0,30,36,96,96,96, + 252,96,96,96,96,96,96,248,10,12,24,10,0,252,62,192, + 193,0,129,0,193,0,62,0,112,0,254,0,255,128,227,128, + 192,128,193,0,62,0,9,14,28,10,1,0,96,0,224,0, + 96,0,96,0,96,0,96,0,102,0,127,0,115,0,99,0, + 99,0,99,0,99,0,247,128,4,12,12,6,1,0,48,112, + 0,0,96,224,96,96,96,96,96,240,7,16,16,5,253,252, + 14,14,0,0,28,12,12,12,12,12,12,12,12,140,248,224, + 9,14,28,10,1,0,96,0,224,0,96,0,96,0,96,0, + 96,0,103,128,102,0,108,0,120,0,108,0,102,0,103,0, + 243,128,4,14,14,5,1,0,96,224,96,96,96,96,96,96, + 96,96,96,96,96,240,14,8,16,15,1,0,110,112,255,248, + 99,24,99,24,99,24,99,24,99,24,247,188,9,8,16,10, + 1,0,110,0,255,0,115,0,99,0,99,0,99,0,99,0, + 247,128,7,8,8,9,1,0,56,68,198,198,198,198,68,56, + 8,12,12,10,1,252,110,255,97,97,97,97,98,124,96,96, + 96,240,9,12,24,10,1,252,61,0,67,0,195,0,195,0, + 195,0,195,0,127,0,59,0,3,0,3,0,3,0,7,128, + 8,8,8,8,0,0,119,255,50,50,48,48,48,248,6,8, + 8,8,1,0,240,152,144,240,60,132,196,248,6,11,11,7, + 0,0,32,96,96,252,96,96,96,96,100,124,48,10,8,16, + 10,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,9,8,16,9,0,0,243,128,97,0,51,0,50, + 0,30,0,28,0,28,0,8,0,13,8,16,13,0,0,242, + 56,99,16,51,32,53,160,53,160,24,224,24,192,24,192,9, + 8,16,9,0,0,251,128,115,0,62,0,28,0,28,0,22, + 0,35,0,247,128,10,12,24,9,255,252,121,192,48,128,25, + 128,25,0,15,0,14,0,14,0,6,0,4,0,12,0,120, + 0,240,0,7,8,8,8,1,0,254,140,152,56,48,98,226, + 254,6,17,17,5,0,253,8,28,48,48,48,48,48,48,224, + 48,48,48,48,48,48,24,8,1,19,19,4,2,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,5,255,253,64,96,48,48,48,48,48,48,28, + 48,48,48,48,48,48,96,192,8,2,2,9,0,4,57,206, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,4,0,0,3,13,13,6,1,251,96,224,64, + 64,64,64,96,96,96,96,96,96,192,7,11,11,9,1,0, + 16,24,126,148,144,144,144,210,124,16,16,8,11,11,9,1, + 0,30,34,98,96,96,252,96,96,97,127,158,7,7,7,9, + 1,2,132,126,68,68,68,68,254,10,11,22,9,255,0,227, + 192,113,0,51,0,58,0,26,0,30,0,12,0,127,128,12, + 0,12,0,30,0,1,19,19,4,2,252,128,128,128,128,128, + 128,128,128,0,0,0,128,128,128,128,128,128,128,128,7,13, + 13,9,1,0,112,152,144,240,252,158,130,98,60,12,68,100, + 124,6,3,3,7,0,9,196,204,140,11,12,24,13,1,0, + 31,0,32,128,79,64,147,32,146,32,144,32,144,32,144,32, + 137,32,78,64,32,128,31,0,5,6,6,5,0,5,112,208, + 176,144,248,240,7,8,8,9,1,0,18,38,108,220,220,108, + 38,18,7,4,4,9,1,1,254,2,2,2,6,1,1,6, + 0,4,252,6,7,7,6,0,6,120,72,188,188,180,104,120, + 7,1,1,9,1,11,254,4,4,4,6,1,7,112,144,144, + 224,7,8,8,7,0,1,16,16,254,16,16,16,0,254,4, + 7,7,6,1,5,112,208,16,32,64,144,240,4,7,7,6, + 1,5,48,80,144,48,16,144,224,4,4,4,6,2,9,112, + 96,192,128,9,12,24,10,1,252,227,0,99,0,99,0,99, + 0,99,0,99,0,127,128,91,0,64,0,64,0,96,0,112, + 0,10,13,26,11,0,254,63,192,98,128,194,128,194,128,98, + 128,62,128,2,128,2,128,2,128,2,128,2,128,2,128,7, + 192,3,3,3,4,0,5,224,224,192,2,4,4,4,2,252, + 192,64,64,192,4,7,7,6,1,5,32,224,32,32,32,32, + 240,4,6,6,5,0,5,96,144,144,144,96,240,8,8,8, + 9,1,0,136,76,102,55,55,102,76,136,10,11,22,11,1, + 0,192,192,65,128,65,0,66,0,68,0,172,0,8,128,19, + 128,50,128,99,192,197,192,9,11,22,11,1,0,192,128,65, + 0,66,0,66,0,68,0,168,0,25,128,18,128,33,0,98, + 128,199,128,11,11,22,11,0,0,96,96,80,192,32,128,17, + 0,146,0,230,0,4,64,9,192,25,64,49,224,98,224,6, + 13,13,8,1,251,56,56,48,16,16,16,32,96,192,196,204, + 204,112,11,16,32,11,0,0,16,0,24,0,12,0,6,0, + 0,0,6,0,14,0,14,0,11,0,19,0,19,0,63,128, + 33,128,33,192,96,192,241,224,11,16,32,11,0,0,1,0, + 3,128,6,0,12,0,0,0,6,0,14,0,14,0,11,0, + 19,0,19,0,63,128,33,128,33,192,96,192,241,224,11,16, + 32,11,0,0,4,0,14,0,31,0,17,0,0,128,6,0, + 14,0,14,0,11,0,19,0,19,0,63,128,33,128,33,192, + 96,192,241,224,11,15,30,11,0,0,12,128,31,128,39,0, + 0,0,6,0,14,0,14,0,11,0,19,0,19,0,63,128, + 33,128,33,192,96,192,241,224,11,15,30,11,0,0,16,128, + 49,128,49,128,0,0,6,0,14,0,14,0,11,0,19,0, + 19,0,63,128,33,128,33,192,96,192,241,224,11,16,32,11, + 0,0,6,0,10,0,10,0,14,0,0,0,6,0,14,0, + 14,0,11,0,19,0,19,0,63,128,33,128,33,192,96,192, + 241,224,14,11,22,15,0,0,15,252,7,140,5,136,13,128, + 9,128,31,248,25,128,17,128,49,132,33,132,243,252,9,15, + 30,10,0,252,31,0,99,0,64,0,192,0,192,0,192,0, + 192,0,192,0,96,0,112,128,31,0,4,0,2,0,6,0, + 28,0,9,16,32,9,0,0,32,0,48,0,24,0,4,0, + 0,0,255,0,49,0,49,0,48,0,48,0,63,0,48,0, + 48,0,48,128,48,128,255,128,9,16,32,9,0,0,2,0, + 7,0,14,0,24,0,0,0,255,0,49,0,49,0,48,0, + 48,0,63,0,48,0,48,0,48,128,48,128,255,128,9,16, + 32,9,0,0,8,0,28,0,30,0,35,0,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,15,30,9,0,0,33,0,97,0,99,0, + 0,0,255,0,49,0,49,0,48,0,48,0,63,0,48,0, + 48,0,48,128,48,128,255,128,5,16,16,6,0,0,64,224, + 112,16,8,120,48,48,48,48,48,48,48,48,48,120,5,16, + 16,6,1,0,16,56,112,192,0,240,96,96,96,96,96,96, + 96,96,96,240,6,16,16,6,0,0,48,112,120,204,0,120, + 48,48,48,48,48,48,48,48,48,120,7,15,15,6,255,0, + 66,194,194,0,60,24,24,24,24,24,24,24,24,24,60,9, + 11,22,11,1,0,254,0,99,0,97,0,97,128,97,128,249, + 128,97,128,97,128,97,0,99,0,252,0,10,15,30,12,1, + 0,25,0,63,0,46,0,0,0,225,192,96,128,112,128,120, + 128,92,128,76,128,70,128,71,128,67,128,65,128,225,128,10, + 16,32,11,0,0,16,0,24,0,12,0,2,0,0,0,30, + 0,33,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,0,30,0,10,16,32,11,0,0,1,0,3,128,6, + 0,12,0,0,0,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,10,16,32,11,0, + 0,4,0,14,0,31,0,17,128,0,0,30,0,33,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,0,30, + 0,10,15,30,11,0,0,12,128,31,128,39,0,0,0,30, + 0,33,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,0,30,0,10,15,30,11,0,0,16,128,49,128,49, + 128,0,0,30,0,33,128,64,128,192,192,192,192,192,192,192, + 192,192,192,64,128,97,0,30,0,6,6,6,8,1,2,140, + 216,112,112,216,140,10,11,22,11,0,0,31,192,35,128,99, + 128,195,192,198,192,204,192,216,192,240,192,113,128,113,0,254, + 0,10,16,32,12,1,0,16,0,56,0,28,0,6,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,49,0,30,0,10,16,32,12,1,0,2,0,7, + 0,14,0,24,0,0,0,241,192,96,128,96,128,96,128,96, + 128,96,128,96,128,96,128,96,128,49,0,30,0,10,16,32, + 12,1,0,12,0,14,0,30,0,51,0,0,0,241,192,96, + 128,96,128,96,128,96,128,96,128,96,128,96,128,96,128,49, + 0,30,0,10,15,30,12,1,0,33,0,33,128,33,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,49,0,30,0,10,16,32,11,1,0,4,0,7, + 0,12,0,24,0,0,0,227,192,113,128,49,0,59,0,26, + 0,14,0,12,0,12,0,12,0,12,0,30,0,8,11,11, + 10,1,0,240,96,126,99,99,99,99,98,124,96,240,9,13, + 26,11,1,0,14,0,49,128,33,128,97,128,97,0,102,0, + 104,0,100,0,103,0,97,128,104,128,104,128,239,0,8,13, + 13,9,1,0,96,48,16,8,0,60,102,198,30,102,198,207, + 118,8,13,13,9,1,0,12,28,24,48,0,60,102,198,30, + 102,198,207,118,8,13,13,9,1,0,16,56,108,198,0,60, + 102,198,30,102,198,207,118,8,12,12,9,1,0,114,252,0, + 0,60,102,198,30,102,198,207,118,8,12,12,9,1,0,194, + 198,134,0,60,102,198,30,102,198,207,118,8,13,13,9,1, + 0,24,40,40,48,0,60,102,198,30,102,198,207,118,11,8, + 16,13,1,0,61,192,102,32,196,32,63,224,68,0,198,32, + 255,192,115,128,7,12,12,8,1,252,62,70,196,192,192,192, + 102,56,16,8,24,48,7,13,13,9,1,0,96,48,24,8, + 0,60,70,198,254,192,192,98,60,7,13,13,9,1,0,12, + 14,24,48,0,60,70,198,254,192,192,98,60,7,13,13,9, + 1,0,24,56,108,66,0,60,70,198,254,192,192,98,60,7, + 12,12,9,1,0,66,198,194,0,60,70,198,254,192,192,98, + 60,5,13,13,5,0,0,224,96,48,16,0,48,112,48,48, + 48,48,48,120,5,13,13,5,1,0,48,56,96,64,128,96, + 224,96,96,96,96,96,240,6,13,13,5,0,0,48,112,216, + 132,0,48,112,48,48,48,48,48,120,7,12,12,5,255,0, + 66,194,194,0,24,56,24,24,24,24,24,60,7,13,13,9, + 1,0,112,62,56,108,4,62,78,198,198,198,196,76,56,9, + 12,24,10,1,0,57,0,126,0,0,0,0,0,110,0,255, + 0,115,0,99,0,99,0,99,0,99,0,247,128,7,13,13, + 9,1,0,112,48,24,8,0,56,68,198,198,198,198,68,56, + 7,13,13,9,1,0,14,12,24,16,0,56,68,198,198,198, + 198,68,56,7,13,13,9,1,0,24,60,44,66,0,56,68, + 198,198,198,198,68,56,7,12,12,9,1,0,50,124,128,0, + 56,68,198,198,198,198,68,56,7,12,12,9,1,0,66,194, + 66,0,56,68,198,198,198,198,68,56,7,6,6,8,0,2, + 16,16,0,126,144,16,7,9,9,9,1,0,2,58,68,206, + 214,230,230,68,248,10,13,26,10,0,0,24,0,56,0,12, + 0,4,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,13,26,10,0,0,7,0,6,0,12, + 0,8,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,13,26,10,0,0,12,0,30,0,18, + 0,33,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,12,24,10,0,0,33,0,33,128,33, + 0,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,10,17,34,9,255,252,3,0,3,128,6,0,4, + 0,8,0,121,192,48,128,25,128,25,0,15,0,14,0,14, + 0,6,0,4,0,12,0,120,0,240,0,8,18,18,10,1, + 252,96,224,96,96,96,96,110,127,97,97,97,97,98,124,96, + 96,96,240,10,16,32,9,255,252,16,128,48,128,48,128,0, + 0,121,192,48,128,25,128,25,0,15,0,14,0,14,0,6, + 0,4,0,12,0,120,0,240,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 8 h=17 x= 1 y= 6 dx=10 dy= 0 ascent=14 len=17 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11n[263] U8G_SECTION(".progmem.u8g_font_gdb11n") = { + 0,27,26,247,250,11,0,0,0,0,42,57,0,14,253,11, + 0,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y= 9 dx=16 dy= 0 ascent=15 len=32 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11r[2001] U8G_SECTION(".progmem.u8g_font_gdb11r") = { + 0,27,26,247,250,11,2,67,5,71,32,127,252,15,252,14, + 252,0,0,0,4,0,0,3,14,14,6,1,255,96,224,96, + 96,96,96,96,64,64,64,0,224,224,192,6,6,6,8,1, + 7,108,236,204,76,76,76,8,10,10,9,1,1,26,18,22, + 127,36,36,254,72,72,216,7,14,14,9,1,254,16,16,126, + 150,144,240,120,30,18,146,210,252,16,16,11,11,22,13,1, + 0,112,64,144,128,137,128,139,0,146,0,85,192,42,32,26, + 32,50,32,34,32,65,192,11,13,26,12,1,0,28,0,102, + 0,70,0,70,0,124,0,120,0,113,224,248,128,252,128,222, + 128,207,0,195,128,125,224,3,6,6,5,1,7,96,224,192, + 64,64,64,4,17,17,6,1,253,16,32,96,64,64,192,192, + 192,192,192,192,192,192,64,96,32,16,4,17,17,6,1,253, + 128,64,96,32,48,48,48,48,48,48,48,48,32,32,96,64, + 128,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224,3,9,9,5,1,255,224,224,192, + 0,0,0,224,224,192,3,11,11,5,1,253,224,224,192,0, + 0,0,96,224,96,64,192,8,6,6,8,0,2,3,30,112, + 240,30,7,8,4,4,8,0,3,127,128,0,255,8,6,6, + 8,0,2,96,188,15,14,120,192,7,14,14,8,1,255,60, + 198,198,134,12,8,16,32,32,32,0,56,56,56,14,16,32, + 16,1,252,7,192,31,240,48,56,64,8,71,68,136,196,152, + 196,152,196,152,196,152,200,159,248,206,224,192,32,112,112,63, + 192,31,128,11,11,22,11,0,0,6,0,14,0,14,0,11, + 0,19,0,19,0,63,128,33,128,33,192,96,192,241,224,9, + 11,22,11,1,0,254,0,99,0,99,0,99,0,126,0,99, + 128,97,128,97,128,97,128,97,128,254,0,8,11,11,10,1, + 0,31,99,64,192,192,192,192,192,192,97,62,9,11,22,11, + 1,0,254,0,99,0,97,0,97,128,97,128,97,128,97,128, + 97,128,97,0,99,0,252,0,9,11,22,9,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,11,22,9,0,0,255,128,49,0,49,0, + 48,0,48,0,62,0,48,0,48,0,48,0,48,0,248,0, + 11,11,22,11,0,0,15,192,49,192,64,0,192,0,192,0, + 192,0,193,224,192,192,64,192,112,192,31,128,10,11,22,12, + 1,0,243,192,97,128,97,128,97,128,97,128,127,128,97,128, + 97,128,97,128,97,128,243,192,4,11,11,6,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,14,14,6,254,253,62, + 12,12,12,12,12,12,12,12,12,12,8,136,240,10,11,22, + 11,1,0,243,192,99,0,102,0,108,0,104,0,120,0,108, + 0,102,0,103,0,99,128,241,192,8,11,11,9,1,0,240, + 96,96,96,96,96,96,96,97,97,255,15,11,22,15,0,0, + 112,28,56,56,56,56,56,120,44,88,44,88,38,216,38,152, + 35,152,35,24,243,62,10,11,22,12,1,0,225,192,96,128, + 112,128,120,128,92,128,76,128,70,128,71,128,67,128,65,128, + 225,128,10,11,22,11,0,0,30,0,33,128,64,128,192,192, + 192,192,192,192,192,192,192,192,64,128,97,0,30,0,8,11, + 11,10,1,0,254,99,99,99,98,124,96,96,96,96,240,12, + 14,28,11,0,253,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,3,144,1,240,0, + 96,10,11,22,11,1,0,254,0,99,0,99,0,99,0,98, + 0,124,0,100,0,102,0,99,0,99,128,241,192,7,11,11, + 9,1,0,62,198,128,192,112,60,6,2,130,196,248,10,11, + 22,10,0,0,255,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,30,0,10,11,22,12,1,0, + 241,192,96,128,96,128,96,128,96,128,96,128,96,128,96,128, + 96,128,49,0,30,0,12,11,22,12,0,0,248,240,112,64, + 48,64,48,128,24,128,25,128,29,0,13,0,15,0,6,0, + 6,0,15,11,22,15,0,0,241,30,97,132,49,140,51,200, + 50,200,50,200,28,120,28,112,28,48,24,48,8,48,11,11, + 22,11,0,0,249,224,48,128,57,128,31,0,14,0,6,0, + 15,0,27,0,49,128,33,192,243,224,10,11,22,11,1,0, + 227,192,113,128,49,0,59,0,26,0,14,0,12,0,12,0, + 12,0,12,0,30,0,9,11,22,10,0,0,127,128,67,0, + 71,0,6,0,14,0,12,0,24,0,56,0,48,128,112,128, + 255,128,4,17,17,6,1,253,240,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,240,8,17,17,8,0,253,192, + 64,96,32,48,48,16,24,24,8,12,4,6,6,2,3,3, + 4,17,17,6,1,253,240,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,240,7,9,9,9,1,5,16,48,56, + 40,76,76,68,134,130,8,1,1,9,0,254,255,4,4,4, + 6,0,9,192,96,32,16,8,8,8,9,1,0,60,102,198, + 30,102,198,207,118,9,14,28,10,0,0,96,0,224,0,96, + 0,96,0,96,0,96,0,103,0,127,128,112,128,96,128,96, + 128,97,0,97,0,62,0,7,8,8,8,1,0,62,70,196, + 192,192,192,66,124,9,14,28,10,1,0,3,0,7,0,3, + 0,3,0,3,0,3,0,63,0,67,0,195,0,195,0,195, + 0,195,0,127,128,59,0,7,8,8,9,1,0,60,70,198, + 254,192,192,98,60,7,13,13,6,1,0,30,36,96,96,96, + 252,96,96,96,96,96,96,248,10,12,24,10,0,252,62,192, + 193,0,129,0,193,0,62,0,112,0,254,0,255,128,227,128, + 192,128,193,0,62,0,9,14,28,10,1,0,96,0,224,0, + 96,0,96,0,96,0,96,0,102,0,127,0,115,0,99,0, + 99,0,99,0,99,0,247,128,4,12,12,6,1,0,48,112, + 0,0,96,224,96,96,96,96,96,240,7,16,16,5,253,252, + 14,14,0,0,28,12,12,12,12,12,12,12,12,140,248,224, + 9,14,28,10,1,0,96,0,224,0,96,0,96,0,96,0, + 96,0,103,128,102,0,108,0,120,0,108,0,102,0,103,0, + 243,128,4,14,14,5,1,0,96,224,96,96,96,96,96,96, + 96,96,96,96,96,240,14,8,16,15,1,0,110,112,255,248, + 99,24,99,24,99,24,99,24,99,24,247,188,9,8,16,10, + 1,0,110,0,255,0,115,0,99,0,99,0,99,0,99,0, + 247,128,7,8,8,9,1,0,56,68,198,198,198,198,68,56, + 8,12,12,10,1,252,110,255,97,97,97,97,98,124,96,96, + 96,240,9,12,24,10,1,252,61,0,67,0,195,0,195,0, + 195,0,195,0,127,0,59,0,3,0,3,0,3,0,7,128, + 8,8,8,8,0,0,119,255,50,50,48,48,48,248,6,8, + 8,8,1,0,240,152,144,240,60,132,196,248,6,11,11,7, + 0,0,32,96,96,252,96,96,96,96,100,124,48,10,8,16, + 10,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,9,8,16,9,0,0,243,128,97,0,51,0,50, + 0,30,0,28,0,28,0,8,0,13,8,16,13,0,0,242, + 56,99,16,51,32,53,160,53,160,24,224,24,192,24,192,9, + 8,16,9,0,0,251,128,115,0,62,0,28,0,28,0,22, + 0,35,0,247,128,10,12,24,9,255,252,121,192,48,128,25, + 128,25,0,15,0,14,0,14,0,6,0,4,0,12,0,120, + 0,240,0,7,8,8,8,1,0,254,140,152,56,48,98,226, + 254,6,17,17,5,0,253,8,28,48,48,48,48,48,48,224, + 48,48,48,48,48,48,24,8,1,19,19,4,2,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,5,255,253,64,96,48,48,48,48,48,48,28, + 48,48,48,48,48,48,96,192,8,2,2,9,0,4,57,206, + 255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=11 dx=16 dy= 0 ascent=17 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12[4626] U8G_SECTION(".progmem.u8g_font_gdb12") = { + 0,29,28,246,249,12,2,113,5,210,32,255,252,17,251,15, + 252,0,0,0,5,0,0,3,14,14,6,1,0,32,96,96, + 96,96,96,96,96,96,96,0,224,224,192,7,6,6,9,1, + 8,102,236,108,76,68,68,9,11,22,10,1,1,27,0,26, + 0,18,0,127,128,54,0,36,0,36,0,255,0,104,0,72, + 0,88,0,8,15,15,9,0,254,8,8,63,75,74,104,60, + 30,11,137,73,235,126,8,8,12,12,24,14,1,0,112,32, + 144,64,136,128,137,128,139,0,146,0,100,224,13,16,25,16, + 17,16,33,16,96,224,12,13,26,13,1,0,30,0,35,0, + 99,0,99,0,118,0,124,0,120,240,252,64,222,64,207,64, + 199,128,193,192,62,240,3,6,6,5,1,8,96,224,96,64, + 64,64,4,18,18,6,1,253,16,48,96,96,64,192,192,192, + 192,192,192,192,192,192,96,96,48,16,4,18,18,6,1,253, + 128,192,96,96,48,48,48,48,48,48,48,48,48,32,96,96, + 192,128,7,7,7,8,1,7,48,180,222,48,222,148,48,7, + 7,7,8,1,2,16,16,16,254,16,16,16,3,6,6,5, + 1,252,96,224,96,96,64,128,6,1,1,7,0,4,252,3, + 3,3,5,1,0,224,224,192,9,18,36,9,0,253,1,128, + 3,0,3,0,3,0,6,0,6,0,4,0,12,0,12,0, + 24,0,24,0,16,0,48,0,48,0,32,0,96,0,96,0, + 192,0,8,11,11,10,1,0,60,102,66,195,195,195,195,195, + 66,98,60,7,12,12,10,1,0,8,120,152,24,24,24,24, + 24,24,24,24,254,7,11,11,9,1,0,60,102,230,6,4, + 8,16,34,66,126,254,7,11,11,9,1,0,60,102,230,6, + 8,28,6,6,6,140,120,8,12,12,9,0,0,6,14,14, + 22,22,38,102,70,255,6,6,31,7,11,11,10,1,0,126, + 124,64,64,124,134,6,6,6,134,124,8,12,12,10,1,0, + 14,56,112,96,192,254,195,195,195,195,98,60,8,11,11,10, + 1,0,255,254,130,6,4,12,8,24,24,48,96,8,11,11, + 10,1,0,60,102,102,102,124,62,71,195,195,195,60,8,11, + 11,10,1,0,60,70,195,195,195,195,63,2,6,12,112,3, + 9,9,5,1,0,224,224,192,0,0,0,224,224,192,3,13, + 13,5,1,252,224,224,64,0,0,0,0,96,224,96,96,64, + 128,8,7,7,9,0,2,1,15,60,96,248,31,3,8,4, + 4,9,0,3,127,128,0,255,8,7,7,9,0,2,96,248, + 15,7,30,120,192,7,14,14,9,1,0,60,70,198,134,6, + 12,8,16,16,16,0,56,56,56,14,17,34,16,1,252,7, + 192,31,240,56,56,32,8,99,164,68,100,204,100,204,100,204, + 100,204,100,204,104,199,248,103,112,112,8,56,24,31,240,15, + 192,12,12,24,12,0,0,6,0,14,0,15,0,11,0,27, + 0,19,128,17,128,63,128,33,192,32,192,96,224,241,240,9, + 12,24,11,1,0,254,0,99,0,99,0,99,0,98,0,126, + 0,99,128,97,128,97,128,97,128,97,128,254,0,9,12,24, + 11,1,0,31,0,99,128,65,0,192,0,192,0,192,0,192, + 0,192,0,192,0,97,128,127,0,60,0,10,12,24,12,1, + 0,254,0,99,128,97,128,96,192,96,192,96,192,96,192,96, + 192,96,192,97,128,99,0,254,0,10,12,24,10,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,9,12,24,10,0,0,255,128,48, + 128,48,128,48,0,48,0,63,0,50,0,48,0,48,0,48, + 0,48,0,252,0,10,12,24,11,1,0,31,128,33,128,65, + 0,64,0,192,0,192,0,192,0,195,192,193,128,65,128,97, + 128,31,0,11,12,24,13,1,0,241,224,96,192,96,192,96, + 192,96,192,127,192,96,192,96,192,96,192,96,192,96,192,241, + 224,4,12,12,6,1,0,240,96,96,96,96,96,96,96,96, + 96,96,240,8,16,16,6,253,252,31,6,6,6,6,6,6, + 6,6,6,6,6,6,68,124,240,11,12,24,12,1,0,243, + 192,99,0,99,0,102,0,108,0,120,0,124,0,110,0,103, + 0,99,0,97,128,241,224,8,12,12,10,1,0,240,96,96, + 96,96,96,96,96,96,97,97,255,15,12,24,16,0,0,112, + 30,56,28,56,28,60,60,44,44,44,108,38,76,38,204,35, + 140,35,140,35,140,241,30,11,12,24,13,1,0,224,224,112, + 64,112,64,120,64,92,64,78,64,78,64,71,64,67,192,65, + 192,65,192,224,192,10,12,24,12,1,0,30,0,33,128,65, + 128,64,192,192,192,192,192,192,192,192,192,192,128,96,128,97, + 0,30,0,9,12,24,11,1,0,254,0,99,0,97,128,97, + 128,97,128,97,0,126,0,96,0,96,0,96,0,96,0,248, + 0,12,15,30,12,1,253,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,192,96,128,33,0,30,0,3, + 144,1,240,0,96,11,12,24,12,1,0,254,0,99,128,97, + 128,97,128,97,128,127,0,126,0,102,0,99,0,99,128,97, + 192,241,224,8,12,12,10,1,0,62,198,128,128,240,124,30, + 7,3,131,194,252,10,12,24,11,0,0,255,192,140,64,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,30,0,11,12,24,13,1,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,128,48,128,31, + 0,12,12,24,13,0,0,248,240,112,96,48,64,56,64,24, + 192,24,128,28,128,13,128,15,0,7,0,7,0,6,0,16, + 12,24,16,0,0,248,143,49,134,49,196,49,196,51,196,58, + 108,26,108,30,120,28,56,28,56,12,24,8,16,12,12,24, + 12,0,0,249,224,48,192,56,128,29,0,15,0,14,0,15, + 0,11,0,27,128,49,192,32,224,241,240,11,12,24,12,0, + 0,241,224,48,192,24,128,29,128,13,0,15,0,6,0,6, + 0,6,0,6,0,6,0,15,0,10,12,24,10,0,0,127, + 192,67,128,67,0,7,0,6,0,14,0,28,0,24,0,56, + 0,48,64,112,192,255,192,5,18,18,6,1,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,9, + 18,36,9,0,253,192,0,96,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,12,0,12,0,4,0,6,0,6, + 0,2,0,3,0,3,0,1,128,5,18,18,6,0,253,248, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 248,7,9,9,9,1,5,16,24,40,44,44,68,70,130,130, + 9,1,2,9,0,254,255,128,4,4,4,6,0,10,192,96, + 48,16,8,9,9,9,1,0,60,102,198,14,126,198,198,207, + 118,9,14,28,10,0,0,96,0,224,0,96,0,96,0,96, + 0,103,0,127,0,112,128,96,128,96,128,96,128,97,0,126, + 0,60,0,7,9,9,9,1,0,62,70,196,192,192,192,194, + 124,56,9,14,28,11,1,0,7,0,3,0,3,0,3,0, + 3,0,63,0,67,0,195,0,195,0,195,0,195,0,227,0, + 127,128,59,0,7,9,9,9,1,0,60,100,198,198,254,192, + 226,124,56,7,14,14,6,1,0,30,38,96,96,96,252,96, + 96,96,96,96,96,96,248,10,13,26,10,0,252,60,192,67, + 0,195,0,195,0,226,0,60,0,112,0,124,0,127,128,195, + 128,193,128,193,0,62,0,9,14,28,10,1,0,96,0,224, + 0,96,0,96,0,96,0,102,0,127,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,4,12,12,6,1,0,48, + 112,0,96,224,96,96,96,96,96,96,240,7,16,16,5,253, + 252,14,14,0,12,28,12,12,12,12,12,12,12,12,136,248, + 224,10,14,28,10,1,0,96,0,224,0,96,0,96,0,96, + 0,103,128,99,0,100,0,104,0,124,0,110,0,102,0,99, + 0,243,192,5,14,14,6,0,0,48,240,48,48,48,48,48, + 48,48,48,48,48,48,248,14,9,18,16,1,0,110,112,255, + 248,115,152,99,24,99,24,99,24,99,24,99,24,247,188,9, + 9,18,10,1,0,102,0,255,0,115,0,99,0,99,0,99, + 0,99,0,99,0,247,128,8,9,9,10,1,0,60,70,195, + 195,195,195,194,98,60,9,13,26,11,1,252,103,0,255,0, + 97,128,97,128,97,128,97,128,97,0,127,0,110,0,96,0, + 96,0,96,0,248,0,9,13,26,10,1,252,29,0,103,0, + 195,0,195,0,195,0,195,0,199,0,127,0,59,0,3,0, + 3,0,3,0,15,128,8,9,9,8,0,0,55,255,57,49, + 48,48,48,48,252,6,9,9,8,1,0,240,152,144,224,120, + 28,132,196,248,6,12,12,7,1,0,32,96,96,252,96,96, + 96,96,96,100,124,48,10,9,18,11,0,0,227,128,97,128, + 97,128,97,128,97,128,97,128,99,128,127,192,57,128,10,9, + 18,10,0,0,241,192,97,128,49,0,51,0,58,0,26,0, + 30,0,12,0,8,0,14,9,18,14,0,0,241,60,99,24, + 51,144,51,144,53,176,60,224,28,224,24,96,24,64,10,9, + 18,10,0,0,251,192,113,0,58,0,28,0,12,0,30,0, + 55,0,35,128,247,192,11,13,26,10,255,252,121,224,56,128, + 24,128,25,128,13,0,13,0,14,0,6,0,6,0,4,0, + 12,0,120,0,240,0,7,9,9,9,1,0,254,142,156,24, + 56,48,98,226,254,5,18,18,6,1,253,24,48,96,96,96, + 48,48,48,96,224,48,48,48,96,96,96,48,24,1,20,20, + 4,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,18,18,6,0,253,64,224,48, + 48,48,48,48,48,28,24,48,48,48,48,48,48,96,192,9, + 4,8,9,0,4,48,0,125,128,79,0,134,0,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,5,0,0,3,14,14,6,1,251,96,224,64,0,96,96, + 96,96,96,96,96,96,96,64,7,12,12,10,2,0,16,16, + 62,86,144,144,144,144,86,124,16,16,9,11,22,10,0,0, + 15,128,49,128,49,0,112,0,112,0,254,0,112,0,112,0, + 96,128,123,128,255,0,8,7,7,10,1,2,255,66,66,66, + 66,102,255,10,11,22,10,0,0,227,192,113,0,51,0,26, + 0,26,0,12,0,127,128,12,0,12,0,12,0,30,0,1, + 20,20,4,2,252,128,128,128,128,128,128,128,128,128,0,0, + 128,128,128,128,128,128,128,128,128,8,13,13,10,1,0,120, + 152,136,240,190,135,193,113,62,14,34,50,62,6,3,3,7, + 0,10,236,252,220,12,13,26,14,1,0,15,0,48,192,64, + 32,143,32,145,16,145,16,144,16,144,16,144,16,136,160,79, + 32,32,64,31,128,5,7,7,5,0,5,112,208,112,144,248, + 0,240,8,9,9,10,1,0,17,34,102,204,220,204,102,34, + 17,8,4,4,10,1,2,255,1,1,1,6,1,1,7,0, + 4,252,7,7,7,7,0,7,56,68,186,170,178,108,56,8, + 2,2,9,1,11,255,254,5,5,5,7,1,7,112,136,136, + 136,112,8,9,9,8,0,1,8,8,8,127,8,8,8,0, + 255,4,7,7,7,2,6,112,208,16,32,64,144,240,5,7, + 7,6,0,6,56,104,8,24,8,136,112,4,4,4,6,2, + 10,48,96,192,128,10,13,26,11,1,252,99,0,227,0,99, + 0,99,0,99,0,99,0,103,0,127,128,91,64,64,0,64, + 0,96,0,112,0,9,14,28,11,1,254,63,128,101,0,197, + 0,197,0,197,0,101,0,61,0,5,0,5,0,5,0,5, + 0,5,0,5,0,15,128,3,3,3,4,0,5,224,224,192, + 3,4,4,4,1,252,64,96,96,192,5,7,7,7,1,6, + 32,224,32,32,32,32,248,4,7,7,5,0,5,96,144,144, + 144,96,0,240,8,9,9,10,1,0,136,76,102,55,51,55, + 102,76,136,11,11,22,12,1,0,64,64,192,128,65,0,67, + 0,70,0,228,0,8,192,25,64,50,64,35,224,192,224,10, + 11,22,12,1,0,64,64,192,128,65,0,65,0,66,0,228, + 192,9,64,26,128,16,128,33,64,99,192,11,11,22,11,0, + 0,96,32,208,64,32,128,145,128,227,0,2,0,4,192,13, + 64,25,64,19,224,96,224,7,14,14,9,1,251,56,56,48, + 0,16,16,16,32,96,192,194,198,196,120,12,16,32,12,0, + 0,24,0,28,0,3,0,0,0,6,0,14,0,15,0,11, + 0,27,0,19,128,17,128,63,128,33,192,32,192,96,224,241, + 240,12,16,32,12,0,0,1,0,7,128,12,0,0,0,6, + 0,14,0,15,0,11,0,27,0,19,128,17,128,63,128,33, + 192,32,192,96,224,241,240,12,16,32,12,0,0,6,0,15, + 0,16,128,0,0,6,0,14,0,15,0,11,0,27,0,19, + 128,17,128,63,128,33,192,32,192,96,224,241,240,12,16,32, + 12,0,0,12,192,31,128,35,0,0,0,6,0,14,0,15, + 0,11,0,27,0,19,128,17,128,63,128,33,192,32,192,96, + 224,241,240,12,16,32,12,0,0,27,0,27,128,27,0,0, + 0,6,0,14,0,15,0,11,0,27,0,19,128,17,128,63, + 128,33,192,32,192,96,224,241,240,12,17,34,12,0,0,6, + 0,9,0,17,0,14,0,0,0,6,0,14,0,15,0,11, + 0,27,0,19,128,17,128,63,128,33,192,32,192,96,224,241, + 240,15,12,24,15,0,0,31,252,5,132,5,132,13,128,9, + 128,31,248,17,144,17,128,49,128,33,130,97,132,243,252,9, + 16,32,11,1,252,31,0,99,128,65,0,192,0,192,0,192, + 0,192,0,192,0,192,0,96,128,59,128,30,0,8,0,6, + 0,14,0,28,0,10,16,32,10,0,0,48,0,56,0,6, + 0,0,0,255,128,48,128,48,128,48,0,48,0,63,0,50, + 0,48,0,48,0,48,64,48,128,255,128,10,16,32,10,0, + 0,3,0,7,0,24,0,0,0,255,128,48,128,48,128,48, + 0,48,0,63,0,50,0,48,0,48,0,48,64,48,128,255, + 128,10,16,32,10,0,0,12,0,30,0,33,0,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,10,16,32,10,0,0,51,0,63, + 0,54,0,0,0,255,128,48,128,48,128,48,0,48,0,63, + 0,50,0,48,0,48,0,48,64,48,128,255,128,5,16,16, + 6,0,0,192,224,24,0,120,48,48,48,48,48,48,48,48, + 48,48,120,5,16,16,6,1,0,24,56,192,0,240,96,96, + 96,96,96,96,96,96,96,96,240,6,16,16,6,0,0,48, + 120,132,0,120,48,48,48,48,48,48,48,48,48,48,120,6, + 16,16,6,0,0,204,252,216,0,120,48,48,48,48,48,48, + 48,48,48,48,120,10,12,24,12,1,0,254,0,99,128,97, + 128,96,192,96,192,248,192,96,192,96,192,96,192,97,128,99, + 0,254,0,11,16,32,13,1,0,28,128,63,0,39,0,0, + 0,224,224,112,64,112,64,120,64,92,64,78,64,78,64,71, + 64,67,192,65,192,65,192,224,192,10,16,32,12,1,0,48, + 0,56,0,6,0,0,0,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,128,96,128,97,0,30,0,10, + 16,32,12,1,0,2,0,15,0,24,0,0,0,30,0,33, + 128,65,128,64,192,192,192,192,192,192,192,192,192,192,128,96, + 128,97,0,30,0,10,16,32,12,1,0,12,0,30,0,33, + 0,0,0,30,0,33,128,65,128,64,192,192,192,192,192,192, + 192,192,192,192,128,96,128,97,0,30,0,10,16,32,12,1, + 0,25,128,63,0,70,0,0,0,30,0,33,128,65,128,64, + 192,192,192,192,192,192,192,192,192,192,128,96,128,97,0,30, + 0,10,16,32,12,1,0,55,0,55,0,54,0,0,0,30, + 0,33,128,65,128,64,192,192,192,192,192,192,192,192,192,192, + 128,96,128,97,0,30,0,6,6,6,8,1,2,132,72,48, + 48,72,132,10,12,24,12,1,0,30,192,33,128,97,128,67, + 192,198,192,196,192,200,192,216,192,240,128,97,128,97,0,222, + 0,11,16,32,13,1,0,16,0,60,0,6,0,0,0,240, + 224,96,64,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,128,48,128,31,0,11,16,32,13,1,0,3,0,7, + 128,12,0,0,0,240,224,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,128,48,128,31,0,11,16,32, + 13,1,0,12,0,30,0,49,0,0,128,240,224,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,96,128,48, + 128,31,0,11,16,32,13,1,0,27,0,63,0,51,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,128,48,128,31,0,11,16,32,12,0,0,1, + 0,7,128,12,0,0,0,241,224,48,192,24,128,29,128,13, + 0,15,0,6,0,6,0,6,0,6,0,6,0,15,0,9, + 12,24,11,1,0,248,0,96,0,126,0,99,0,97,128,97, + 128,97,128,97,128,113,0,110,0,96,0,248,0,9,14,28, + 12,1,0,14,0,51,0,33,128,97,128,97,128,103,0,108, + 0,108,0,102,0,99,0,97,128,104,128,104,128,239,0,8, + 14,14,9,1,0,112,48,24,8,0,60,102,198,14,126,198, + 198,207,118,8,14,14,9,1,0,14,12,24,48,0,60,102, + 198,14,126,198,198,207,118,8,14,14,9,1,0,24,60,108, + 66,0,60,102,198,14,126,198,198,207,118,8,13,13,9,1, + 0,114,126,140,0,60,102,198,14,126,198,198,207,118,8,13, + 13,9,1,0,108,110,108,0,60,102,198,14,126,198,198,207, + 118,8,14,14,9,1,0,56,68,72,56,0,60,102,198,14, + 126,198,198,207,118,12,9,18,14,1,0,29,192,111,32,198, + 48,166,48,63,240,70,0,199,16,251,224,113,192,8,13,13, + 9,1,252,62,70,196,192,192,192,194,127,60,16,12,28,48, + 7,14,14,9,1,0,112,48,24,8,0,60,100,198,198,254, + 192,226,124,56,7,14,14,9,1,0,14,12,24,16,0,60, + 100,198,198,254,192,226,124,56,7,14,14,9,1,0,24,60, + 100,66,0,60,100,198,198,254,192,226,124,56,7,13,13,9, + 1,0,110,126,108,0,60,100,198,198,254,192,226,124,56,5, + 14,14,6,0,0,224,96,48,16,0,48,112,48,48,48,48, + 48,48,120,5,14,14,6,1,0,56,48,96,64,0,96,224, + 96,96,96,96,96,96,240,6,14,14,6,0,0,48,120,200, + 132,0,48,112,48,48,48,48,48,48,120,6,13,13,6,0, + 0,220,220,216,0,48,112,48,48,48,48,48,48,120,8,14, + 14,10,1,0,48,255,28,102,6,63,71,195,195,195,195,194, + 102,60,9,13,26,11,1,0,57,0,63,0,78,0,0,0, + 102,0,255,0,115,0,99,0,99,0,99,0,99,0,99,0, + 247,128,8,14,14,10,1,0,48,112,24,12,0,60,70,195, + 195,195,195,194,98,60,8,14,14,10,1,0,6,12,24,16, + 0,60,70,195,195,195,195,194,98,60,8,14,14,10,1,0, + 24,60,38,66,0,60,70,195,195,195,195,194,98,60,8,13, + 13,10,1,0,57,126,76,0,60,70,195,195,195,195,194,98, + 60,8,13,13,10,1,0,118,126,108,0,60,70,195,195,195, + 195,194,98,60,8,7,7,8,0,2,8,8,0,127,128,8, + 8,8,9,9,10,1,0,63,102,71,203,219,211,226,102,252, + 10,14,28,11,0,0,24,0,60,0,12,0,6,0,0,0, + 227,128,97,128,97,128,97,128,97,128,97,128,99,128,127,192, + 57,128,10,14,28,11,0,0,3,0,7,0,4,0,8,0, + 0,0,227,128,97,128,97,128,97,128,97,128,97,128,99,128, + 127,192,57,128,10,14,28,11,0,0,12,0,14,0,27,0, + 33,0,0,0,227,128,97,128,97,128,97,128,97,128,97,128, + 99,128,127,192,57,128,10,13,26,11,0,0,27,0,63,0, + 51,0,0,0,227,128,97,128,97,128,97,128,97,128,97,128, + 99,128,127,192,57,128,11,18,36,10,255,252,3,128,3,0, + 6,0,4,0,0,0,121,224,56,128,24,128,25,128,13,0, + 13,0,14,0,6,0,6,0,4,0,12,0,120,0,240,0, + 9,18,36,11,1,252,96,0,224,0,96,0,96,0,96,0, + 103,0,111,0,113,128,97,128,97,128,97,128,97,0,127,0, + 110,0,96,0,96,0,96,0,248,0,11,17,34,10,255,252, + 25,128,31,128,27,0,0,0,121,224,56,128,24,128,25,128, + 13,0,13,0,14,0,6,0,6,0,4,0,12,0,120,0, + 240,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 12 + Calculated Max Values w= 9 h=18 x= 1 y= 7 dx=10 dy= 0 ascent=15 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12n[286] U8G_SECTION(".progmem.u8g_font_gdb12n") = { + 0,29,28,246,249,12,0,0,0,0,42,57,0,15,252,12, + 0,7,7,7,8,1,7,48,180,222,48,222,148,48,7,7, + 7,8,1,2,16,16,16,254,16,16,16,3,6,6,5,1, + 252,96,224,96,96,64,128,6,1,1,7,0,4,252,3,3, + 3,5,1,0,224,224,192,9,18,36,9,0,253,1,128,3, + 0,3,0,3,0,6,0,6,0,4,0,12,0,12,0,24, + 0,24,0,16,0,48,0,48,0,32,0,96,0,96,0,192, + 0,8,11,11,10,1,0,60,102,66,195,195,195,195,195,66, + 98,60,7,12,12,10,1,0,8,120,152,24,24,24,24,24, + 24,24,24,254,7,11,11,9,1,0,60,102,230,6,4,8, + 16,34,66,126,254,7,11,11,9,1,0,60,102,230,6,8, + 28,6,6,6,140,120,8,12,12,9,0,0,6,14,14,22, + 22,38,102,70,255,6,6,31,7,11,11,10,1,0,126,124, + 64,64,124,134,6,6,6,134,124,8,12,12,10,1,0,14, + 56,112,96,192,254,195,195,195,195,98,60,8,11,11,10,1, + 0,255,254,130,6,4,12,8,24,24,48,96,8,11,11,10, + 1,0,60,102,102,102,124,62,71,195,195,195,60,8,11,11, + 10,1,0,60,70,195,195,195,195,63,2,6,12,112}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=10 dx=16 dy= 0 ascent=16 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12r[2190] U8G_SECTION(".progmem.u8g_font_gdb12r") = { + 0,29,28,246,249,12,2,113,5,210,32,127,252,16,252,15, + 252,0,0,0,5,0,0,3,14,14,6,1,0,32,96,96, + 96,96,96,96,96,96,96,0,224,224,192,7,6,6,9,1, + 8,102,236,108,76,68,68,9,11,22,10,1,1,27,0,26, + 0,18,0,127,128,54,0,36,0,36,0,255,0,104,0,72, + 0,88,0,8,15,15,9,0,254,8,8,63,75,74,104,60, + 30,11,137,73,235,126,8,8,12,12,24,14,1,0,112,32, + 144,64,136,128,137,128,139,0,146,0,100,224,13,16,25,16, + 17,16,33,16,96,224,12,13,26,13,1,0,30,0,35,0, + 99,0,99,0,118,0,124,0,120,240,252,64,222,64,207,64, + 199,128,193,192,62,240,3,6,6,5,1,8,96,224,96,64, + 64,64,4,18,18,6,1,253,16,48,96,96,64,192,192,192, + 192,192,192,192,192,192,96,96,48,16,4,18,18,6,1,253, + 128,192,96,96,48,48,48,48,48,48,48,48,48,32,96,96, + 192,128,7,7,7,8,1,7,48,180,222,48,222,148,48,7, + 7,7,8,1,2,16,16,16,254,16,16,16,3,6,6,5, + 1,252,96,224,96,96,64,128,6,1,1,7,0,4,252,3, + 3,3,5,1,0,224,224,192,9,18,36,9,0,253,1,128, + 3,0,3,0,3,0,6,0,6,0,4,0,12,0,12,0, + 24,0,24,0,16,0,48,0,48,0,32,0,96,0,96,0, + 192,0,8,11,11,10,1,0,60,102,66,195,195,195,195,195, + 66,98,60,7,12,12,10,1,0,8,120,152,24,24,24,24, + 24,24,24,24,254,7,11,11,9,1,0,60,102,230,6,4, + 8,16,34,66,126,254,7,11,11,9,1,0,60,102,230,6, + 8,28,6,6,6,140,120,8,12,12,9,0,0,6,14,14, + 22,22,38,102,70,255,6,6,31,7,11,11,10,1,0,126, + 124,64,64,124,134,6,6,6,134,124,8,12,12,10,1,0, + 14,56,112,96,192,254,195,195,195,195,98,60,8,11,11,10, + 1,0,255,254,130,6,4,12,8,24,24,48,96,8,11,11, + 10,1,0,60,102,102,102,124,62,71,195,195,195,60,8,11, + 11,10,1,0,60,70,195,195,195,195,63,2,6,12,112,3, + 9,9,5,1,0,224,224,192,0,0,0,224,224,192,3,13, + 13,5,1,252,224,224,64,0,0,0,0,96,224,96,96,64, + 128,8,7,7,9,0,2,1,15,60,96,248,31,3,8,4, + 4,9,0,3,127,128,0,255,8,7,7,9,0,2,96,248, + 15,7,30,120,192,7,14,14,9,1,0,60,70,198,134,6, + 12,8,16,16,16,0,56,56,56,14,17,34,16,1,252,7, + 192,31,240,56,56,32,8,99,164,68,100,204,100,204,100,204, + 100,204,100,204,104,199,248,103,112,112,8,56,24,31,240,15, + 192,12,12,24,12,0,0,6,0,14,0,15,0,11,0,27, + 0,19,128,17,128,63,128,33,192,32,192,96,224,241,240,9, + 12,24,11,1,0,254,0,99,0,99,0,99,0,98,0,126, + 0,99,128,97,128,97,128,97,128,97,128,254,0,9,12,24, + 11,1,0,31,0,99,128,65,0,192,0,192,0,192,0,192, + 0,192,0,192,0,97,128,127,0,60,0,10,12,24,12,1, + 0,254,0,99,128,97,128,96,192,96,192,96,192,96,192,96, + 192,96,192,97,128,99,0,254,0,10,12,24,10,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,9,12,24,10,0,0,255,128,48, + 128,48,128,48,0,48,0,63,0,50,0,48,0,48,0,48, + 0,48,0,252,0,10,12,24,11,1,0,31,128,33,128,65, + 0,64,0,192,0,192,0,192,0,195,192,193,128,65,128,97, + 128,31,0,11,12,24,13,1,0,241,224,96,192,96,192,96, + 192,96,192,127,192,96,192,96,192,96,192,96,192,96,192,241, + 224,4,12,12,6,1,0,240,96,96,96,96,96,96,96,96, + 96,96,240,8,16,16,6,253,252,31,6,6,6,6,6,6, + 6,6,6,6,6,6,68,124,240,11,12,24,12,1,0,243, + 192,99,0,99,0,102,0,108,0,120,0,124,0,110,0,103, + 0,99,0,97,128,241,224,8,12,12,10,1,0,240,96,96, + 96,96,96,96,96,96,97,97,255,15,12,24,16,0,0,112, + 30,56,28,56,28,60,60,44,44,44,108,38,76,38,204,35, + 140,35,140,35,140,241,30,11,12,24,13,1,0,224,224,112, + 64,112,64,120,64,92,64,78,64,78,64,71,64,67,192,65, + 192,65,192,224,192,10,12,24,12,1,0,30,0,33,128,65, + 128,64,192,192,192,192,192,192,192,192,192,192,128,96,128,97, + 0,30,0,9,12,24,11,1,0,254,0,99,0,97,128,97, + 128,97,128,97,0,126,0,96,0,96,0,96,0,96,0,248, + 0,12,15,30,12,1,253,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,192,96,128,33,0,30,0,3, + 144,1,240,0,96,11,12,24,12,1,0,254,0,99,128,97, + 128,97,128,97,128,127,0,126,0,102,0,99,0,99,128,97, + 192,241,224,8,12,12,10,1,0,62,198,128,128,240,124,30, + 7,3,131,194,252,10,12,24,11,0,0,255,192,140,64,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,30,0,11,12,24,13,1,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,128,48,128,31, + 0,12,12,24,13,0,0,248,240,112,96,48,64,56,64,24, + 192,24,128,28,128,13,128,15,0,7,0,7,0,6,0,16, + 12,24,16,0,0,248,143,49,134,49,196,49,196,51,196,58, + 108,26,108,30,120,28,56,28,56,12,24,8,16,12,12,24, + 12,0,0,249,224,48,192,56,128,29,0,15,0,14,0,15, + 0,11,0,27,128,49,192,32,224,241,240,11,12,24,12,0, + 0,241,224,48,192,24,128,29,128,13,0,15,0,6,0,6, + 0,6,0,6,0,6,0,15,0,10,12,24,10,0,0,127, + 192,67,128,67,0,7,0,6,0,14,0,28,0,24,0,56, + 0,48,64,112,192,255,192,5,18,18,6,1,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,9, + 18,36,9,0,253,192,0,96,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,12,0,12,0,4,0,6,0,6, + 0,2,0,3,0,3,0,1,128,5,18,18,6,0,253,248, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 248,7,9,9,9,1,5,16,24,40,44,44,68,70,130,130, + 9,1,2,9,0,254,255,128,4,4,4,6,0,10,192,96, + 48,16,8,9,9,9,1,0,60,102,198,14,126,198,198,207, + 118,9,14,28,10,0,0,96,0,224,0,96,0,96,0,96, + 0,103,0,127,0,112,128,96,128,96,128,96,128,97,0,126, + 0,60,0,7,9,9,9,1,0,62,70,196,192,192,192,194, + 124,56,9,14,28,11,1,0,7,0,3,0,3,0,3,0, + 3,0,63,0,67,0,195,0,195,0,195,0,195,0,227,0, + 127,128,59,0,7,9,9,9,1,0,60,100,198,198,254,192, + 226,124,56,7,14,14,6,1,0,30,38,96,96,96,252,96, + 96,96,96,96,96,96,248,10,13,26,10,0,252,60,192,67, + 0,195,0,195,0,226,0,60,0,112,0,124,0,127,128,195, + 128,193,128,193,0,62,0,9,14,28,10,1,0,96,0,224, + 0,96,0,96,0,96,0,102,0,127,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,4,12,12,6,1,0,48, + 112,0,96,224,96,96,96,96,96,96,240,7,16,16,5,253, + 252,14,14,0,12,28,12,12,12,12,12,12,12,12,136,248, + 224,10,14,28,10,1,0,96,0,224,0,96,0,96,0,96, + 0,103,128,99,0,100,0,104,0,124,0,110,0,102,0,99, + 0,243,192,5,14,14,6,0,0,48,240,48,48,48,48,48, + 48,48,48,48,48,48,248,14,9,18,16,1,0,110,112,255, + 248,115,152,99,24,99,24,99,24,99,24,99,24,247,188,9, + 9,18,10,1,0,102,0,255,0,115,0,99,0,99,0,99, + 0,99,0,99,0,247,128,8,9,9,10,1,0,60,70,195, + 195,195,195,194,98,60,9,13,26,11,1,252,103,0,255,0, + 97,128,97,128,97,128,97,128,97,0,127,0,110,0,96,0, + 96,0,96,0,248,0,9,13,26,10,1,252,29,0,103,0, + 195,0,195,0,195,0,195,0,199,0,127,0,59,0,3,0, + 3,0,3,0,15,128,8,9,9,8,0,0,55,255,57,49, + 48,48,48,48,252,6,9,9,8,1,0,240,152,144,224,120, + 28,132,196,248,6,12,12,7,1,0,32,96,96,252,96,96, + 96,96,96,100,124,48,10,9,18,11,0,0,227,128,97,128, + 97,128,97,128,97,128,97,128,99,128,127,192,57,128,10,9, + 18,10,0,0,241,192,97,128,49,0,51,0,58,0,26,0, + 30,0,12,0,8,0,14,9,18,14,0,0,241,60,99,24, + 51,144,51,144,53,176,60,224,28,224,24,96,24,64,10,9, + 18,10,0,0,251,192,113,0,58,0,28,0,12,0,30,0, + 55,0,35,128,247,192,11,13,26,10,255,252,121,224,56,128, + 24,128,25,128,13,0,13,0,14,0,6,0,6,0,4,0, + 12,0,120,0,240,0,7,9,9,9,1,0,254,142,156,24, + 56,48,98,226,254,5,18,18,6,1,253,24,48,96,96,96, + 48,48,48,96,224,48,48,48,96,96,96,48,24,1,20,20, + 4,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,18,18,6,0,253,64,224,48, + 48,48,48,48,48,28,24,48,48,48,48,48,48,96,192,9, + 4,8,9,0,4,48,0,125,128,79,0,134,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=19 h=24 x= 2 y=13 dx=20 dy= 0 ascent=20 len=60 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14[6044] U8G_SECTION(".progmem.u8g_font_gdb14") = { + 0,36,33,244,248,14,3,134,7,177,32,255,251,20,250,18, + 251,0,0,0,6,0,0,4,17,17,7,2,0,96,224,224, + 224,224,224,224,224,224,64,64,64,0,0,96,240,224,7,8, + 8,11,2,9,102,238,206,206,198,198,198,196,11,13,26,12, + 1,1,12,192,12,128,9,128,127,224,25,0,19,0,19,0, + 51,0,255,128,38,0,38,0,100,0,140,0,10,18,36,12, + 1,254,12,0,12,0,63,128,127,192,205,128,204,128,236,0, + 124,0,63,0,15,128,13,192,140,192,140,192,204,192,255,128, + 127,0,12,0,12,0,15,14,28,17,1,0,56,24,76,16, + 198,48,198,96,198,192,199,128,101,128,59,56,6,68,12,198, + 12,198,24,198,48,100,96,56,15,16,32,16,1,0,15,0, + 17,128,49,128,49,128,51,0,62,0,60,0,28,254,124,120, + 126,48,207,48,199,160,195,224,193,240,97,252,62,56,3,8, + 8,6,2,9,96,224,192,192,192,192,192,192,5,22,22,8, + 2,252,8,24,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,96,96,96,48,24,8,5,22,22,8,1,252,128,192, + 96,48,48,48,24,24,24,24,24,24,24,24,24,24,48,48, + 48,96,192,128,9,10,20,10,1,8,24,0,24,0,219,0, + 255,128,60,0,62,0,255,0,219,0,24,0,24,0,8,8, + 8,10,1,2,24,24,24,255,24,24,24,24,4,7,7,6, + 1,252,48,240,48,48,32,96,64,7,1,1,8,1,5,254, + 4,3,3,6,1,0,96,240,224,11,22,44,11,0,252,0, + 96,0,192,0,192,1,128,1,128,3,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,24,0,56, + 0,48,0,48,0,96,0,96,0,192,0,10,14,28,12,1, + 0,30,0,51,0,97,128,97,128,225,192,225,192,225,192,225, + 192,225,192,225,192,97,128,97,128,51,0,30,0,8,14,14, + 12,2,0,8,120,248,24,24,24,24,24,24,24,24,24,24, + 255,8,14,14,11,2,0,62,103,227,195,3,6,4,12,24, + 48,33,65,255,255,9,14,28,11,1,0,30,0,99,0,227, + 0,67,0,3,0,6,0,31,0,7,128,3,128,1,128,1, + 128,1,128,67,0,190,0,10,14,28,12,1,0,1,0,7, + 0,7,0,15,0,27,0,19,0,51,0,99,0,99,0,255, + 192,3,0,3,0,3,0,15,192,9,14,28,12,1,0,63, + 128,63,0,32,0,96,0,96,0,126,0,67,0,1,128,1, + 128,1,128,1,128,1,128,195,0,62,0,10,14,28,12,1, + 0,7,0,28,0,48,0,96,0,64,0,223,0,225,128,192, + 192,192,192,192,192,192,192,96,128,49,128,30,0,10,14,28, + 12,1,0,127,192,255,128,129,128,129,128,3,0,3,0,2, + 0,6,0,6,0,12,0,12,0,24,0,56,0,48,0,9, + 14,28,11,1,0,62,0,113,128,241,128,241,128,249,128,127, + 0,63,0,63,128,99,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,12,1,0,31,0,35,128,65,128,192,192,192, + 192,192,192,192,192,97,192,62,192,0,128,1,128,3,0,14, + 0,56,0,4,10,10,6,1,0,224,240,96,0,0,0,0, + 96,240,224,4,15,15,6,1,252,96,240,224,0,0,0,0, + 0,48,240,48,48,32,96,64,9,7,14,10,1,3,1,128, + 15,128,124,0,224,0,248,0,31,0,3,128,9,4,8,10, + 1,4,255,128,0,0,0,0,255,128,9,7,14,10,1,3, + 192,0,248,0,31,0,3,128,31,0,240,0,128,0,9,16, + 32,10,1,0,63,0,103,128,227,128,227,128,3,128,7,0, + 7,0,14,0,12,0,24,0,24,0,24,0,0,0,28,0, + 60,0,56,0,18,20,60,20,1,251,1,248,0,7,254,0, + 28,15,0,56,3,128,48,1,128,97,233,192,99,24,192,194, + 24,192,198,24,192,198,24,192,198,24,192,198,24,128,199,57, + 128,227,255,0,97,222,0,112,0,0,56,1,0,62,7,0, + 15,252,0,3,240,0,14,14,28,14,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,13,14,28,14,0,0,127,128, + 176,192,48,96,48,96,48,96,48,192,63,224,48,112,48,56, + 48,56,48,56,48,56,48,112,255,224,11,14,28,13,1,0, + 15,192,49,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,192,0,224,0,112,96,127,128,31,0,14,14,28,15, + 0,0,127,192,240,240,48,56,48,24,48,28,48,28,48,28, + 48,28,48,28,48,28,48,24,48,56,48,240,255,192,12,14, + 28,12,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 11,14,28,12,0,0,255,224,56,96,56,32,56,32,56,0, + 56,0,63,128,57,0,56,0,56,0,56,0,56,0,56,0, + 254,0,12,14,28,14,1,0,15,192,16,224,32,64,96,0, + 64,0,192,0,192,0,192,0,193,240,192,96,96,96,96,96, + 48,96,15,128,16,14,28,16,0,0,252,63,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,252,63,6,14,14,8,1,0,252,48,48,48, + 48,48,48,48,48,48,48,48,48,252,10,19,38,8,253,251, + 15,192,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 38,0,124,0,248,0,13,14,28,14,0,0,252,248,48,224, + 48,192,49,128,51,0,54,0,60,0,62,0,55,0,51,128, + 49,192,48,224,48,120,252,120,11,14,28,12,0,0,252,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,96,48,64,255,192,18,14,42,19,1,0, + 240,7,128,120,15,0,120,15,0,124,15,0,124,31,0,108, + 23,0,110,55,0,102,55,0,103,103,0,99,103,0,99,199, + 0,99,199,0,97,135,0,241,143,192,15,14,28,15,0,0, + 248,126,56,24,60,24,62,24,54,24,55,24,51,152,49,152, + 49,216,48,248,48,120,48,56,48,56,252,24,12,14,28,14, + 1,0,15,128,48,192,96,96,64,96,192,48,192,48,192,48, + 192,48,192,48,192,48,96,96,96,64,48,128,31,0,12,14, + 28,13,0,0,127,192,176,224,48,48,48,48,48,48,48,48, + 48,96,55,128,48,0,48,0,48,0,48,0,48,0,252,0, + 15,18,36,14,1,252,15,128,48,192,96,96,64,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 31,0,1,192,0,228,0,126,0,24,14,14,28,14,0,0, + 127,192,240,224,48,48,48,48,48,48,48,96,63,192,51,128, + 49,192,49,192,48,224,48,112,48,124,252,60,10,14,28,12, + 1,0,31,128,97,192,192,128,192,0,240,0,124,0,63,0, + 15,128,3,192,1,192,128,192,192,128,225,128,254,0,12,14, + 28,13,1,0,255,240,198,48,134,16,134,16,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 15,14,28,15,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,14,28,15,0,0,252,62,56,8,56,24,56,16, + 28,48,28,48,14,32,14,96,6,96,7,64,7,192,3,128, + 3,128,1,0,19,14,42,20,0,0,252,99,224,48,96,192, + 56,112,192,56,240,128,56,241,128,24,185,128,25,153,128,29, + 29,0,29,29,0,15,15,0,14,15,0,14,7,0,14,6, + 0,4,6,0,14,14,28,14,0,0,252,124,56,48,28,96, + 28,96,14,192,7,128,7,128,7,128,7,192,12,224,24,224, + 24,112,48,56,248,252,13,14,28,14,0,0,240,120,56,48, + 28,96,28,96,14,192,6,128,7,128,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,11,14,28,13,1,0,127,224, + 193,192,195,128,131,128,7,0,15,0,14,0,28,0,28,0, + 56,0,120,32,112,96,224,96,255,224,6,21,21,8,2,253, + 248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,252,10,22,44,11,0,252,192,0,96,0,96, + 0,48,0,48,0,48,0,24,0,24,0,28,0,12,0,12, + 0,6,0,6,0,6,0,3,0,3,0,3,0,1,128,1, + 128,1,192,0,192,0,192,5,21,21,7,1,253,248,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,248,9,11,22,11,1,6,8,0,12,0,28,0,22,0, + 54,0,34,0,35,0,99,0,65,128,65,128,129,128,10,1, + 2,11,1,253,255,192,5,5,5,7,0,12,224,224,112,56, + 8,10,10,20,11,1,0,62,0,99,0,227,0,3,0,63, + 0,99,0,195,0,195,0,255,192,123,0,11,17,34,12,0, + 0,96,0,224,0,96,0,96,0,96,0,96,0,96,0,119, + 128,127,192,112,224,96,96,96,96,96,96,96,64,96,192,127, + 128,30,0,9,10,20,10,1,0,31,0,99,128,65,0,192, + 0,192,0,192,0,192,0,225,0,127,128,60,0,12,17,34, + 13,1,0,0,192,3,192,0,192,0,192,0,192,0,192,0, + 192,31,192,33,192,64,192,192,192,192,192,192,192,192,192,97, + 192,127,240,60,192,9,10,20,11,1,0,30,0,99,0,65, + 128,193,128,255,128,192,0,192,0,225,128,127,0,62,0,9, + 17,34,8,0,0,7,128,25,0,16,0,48,0,48,0,48, + 0,48,0,126,0,176,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,124,0,11,15,30,12,1,251,30,96,35, + 192,97,128,97,128,97,128,115,0,62,0,48,0,124,0,63, + 128,111,192,192,192,192,192,225,128,62,0,12,17,34,13,1, + 0,48,0,240,0,48,0,48,0,48,0,48,0,48,0,51, + 128,63,192,56,192,48,192,48,192,48,192,48,192,48,192,48, + 192,249,240,5,15,15,7,1,0,48,112,48,0,0,112,240, + 48,48,48,48,48,48,48,248,7,20,20,6,254,251,6,14, + 6,0,0,6,14,6,6,6,6,6,6,6,6,6,6,68, + 248,240,12,17,34,13,1,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,49,240,49,192,51,0,54,0,62,0, + 55,0,51,128,49,192,49,224,248,240,6,17,17,7,1,0, + 48,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,18,10,30,19,1,0,103,142,0,255,255,0,112,227,0, + 96,195,0,96,195,0,96,195,0,96,195,0,96,195,0,96, + 195,0,241,231,192,12,10,20,13,1,0,51,128,247,192,56, + 192,48,192,48,192,48,192,48,192,48,192,48,192,249,240,10, + 10,20,12,1,0,30,0,33,128,65,128,192,192,192,192,192, + 192,192,192,96,128,113,0,30,0,11,15,30,13,1,251,51, + 128,255,192,56,224,48,96,48,96,48,96,48,96,48,192,63, + 128,55,0,48,0,48,0,48,0,48,0,252,0,11,15,30, + 13,1,251,30,64,97,192,64,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,0,192,0,192,0,192,0,192,3, + 224,9,10,20,10,1,0,119,128,255,128,121,128,113,0,112, + 0,112,0,112,0,112,0,112,0,252,0,8,10,10,10,1, + 0,126,198,198,240,124,63,135,131,194,252,8,14,14,9,0, + 0,16,48,48,48,127,176,48,48,48,48,48,50,63,24,12, + 10,20,13,1,0,97,192,224,192,96,192,96,192,96,192,96, + 192,96,192,97,192,127,240,60,192,12,10,20,12,0,0,248, + 240,112,64,56,192,56,128,28,128,29,128,13,0,15,0,6, + 0,6,0,16,10,20,17,0,0,248,135,112,194,49,198,57, + 230,59,100,27,124,30,124,14,56,12,56,12,16,12,10,20, + 12,0,0,253,240,56,192,29,128,31,0,14,0,15,0,27, + 128,17,192,33,224,243,240,13,15,30,12,255,251,124,120,56, + 32,28,96,28,64,14,192,14,192,6,128,7,128,7,0,3, + 0,3,0,6,0,70,0,124,0,248,0,9,10,20,11,1, + 0,255,128,199,0,135,0,14,0,28,0,60,0,57,0,112, + 128,225,128,255,128,5,22,22,8,2,252,24,48,96,96,96, + 96,48,48,48,48,96,224,48,48,48,48,96,96,96,96,48, + 24,2,24,24,5,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,5, + 22,22,8,1,252,192,96,48,48,48,48,96,96,96,96,56, + 48,96,96,96,96,48,48,48,48,96,192,10,4,8,11,1, + 5,48,64,124,128,159,0,135,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,6,0,0, + 4,16,16,7,1,250,112,240,96,0,32,32,32,112,112,112, + 112,112,112,112,112,96,10,14,28,12,1,0,12,0,12,0, + 31,128,125,192,108,128,204,0,204,0,204,0,204,0,236,192, + 127,128,63,0,12,0,12,0,11,14,28,12,0,0,7,192, + 12,224,24,64,24,64,56,0,56,0,56,0,127,0,184,0, + 56,0,56,32,48,32,127,224,255,224,10,9,18,12,1,2, + 128,64,94,128,51,0,97,128,97,128,97,128,51,128,94,128, + 128,64,12,14,28,12,0,0,241,240,120,192,56,192,29,128, + 29,128,13,0,15,0,6,0,63,192,6,0,6,0,6,0, + 6,0,31,128,2,24,24,5,2,251,192,192,192,192,192,192, + 192,192,192,192,128,0,0,64,192,192,192,192,192,192,192,192, + 192,192,9,16,32,11,1,0,62,0,99,0,99,0,112,0, + 60,0,127,0,199,128,195,128,225,128,121,128,63,0,31,0, + 71,0,67,0,99,0,126,0,7,3,3,9,1,12,198,238, + 198,15,15,30,17,1,0,7,192,24,48,48,24,99,204,108, + 236,200,70,216,6,216,6,216,6,216,6,108,44,103,204,48, + 24,24,48,7,192,6,7,7,6,0,7,120,216,24,248,216, + 252,248,9,10,20,12,1,0,8,128,17,128,51,0,103,0, + 238,0,238,0,103,0,51,0,17,128,8,128,10,5,10,12, + 1,2,255,192,0,192,0,192,0,192,0,192,7,1,1,8, + 1,5,254,8,8,8,8,0,8,60,66,157,149,153,153,86, + 60,9,2,4,11,1,13,255,128,255,128,6,5,5,8,1, + 9,56,76,204,200,112,8,10,10,9,1,2,24,24,24,24, + 255,24,24,24,0,255,6,8,8,8,1,7,120,204,140,24, + 16,32,68,252,6,8,8,8,1,7,56,204,140,56,12,12, + 140,120,6,5,5,7,2,12,56,60,112,96,192,12,15,30, + 13,1,251,96,192,225,192,96,192,96,192,96,192,96,192,96, + 192,113,192,127,240,110,192,96,0,96,0,112,0,112,0,96, + 0,14,17,34,14,0,253,31,252,113,176,225,176,225,176,225, + 176,225,176,113,176,31,176,1,176,1,176,1,176,1,176,1, + 176,1,176,1,176,1,176,7,252,4,3,3,5,0,6,96, + 240,224,4,5,5,5,1,251,32,96,48,48,224,6,8,8, + 8,1,7,48,240,48,48,48,48,48,252,5,7,7,6,0, + 7,112,216,216,216,216,112,248,10,10,20,12,1,0,196,0, + 102,0,99,0,51,128,57,192,61,192,49,128,99,0,102,0, + 196,0,12,14,28,14,1,0,48,16,240,48,48,96,48,192, + 48,128,49,128,255,0,6,96,4,224,13,224,25,96,19,240, + 48,96,96,240,12,14,28,14,1,0,48,48,240,96,48,192, + 48,192,49,128,51,0,254,0,6,240,13,48,26,48,16,96, + 48,192,97,144,195,240,14,14,28,15,0,0,56,8,76,24, + 40,48,60,96,12,64,140,192,121,128,3,24,2,56,6,88, + 12,88,8,252,24,24,48,60,9,16,32,11,1,250,28,0, + 30,0,12,0,0,0,12,0,12,0,12,0,24,0,56,0, + 112,0,96,0,224,0,227,128,227,128,231,0,126,0,14,20, + 40,14,0,0,8,0,28,0,15,0,3,128,0,0,0,0, + 1,0,7,128,7,128,5,128,13,192,12,192,8,224,24,224, + 31,224,16,112,48,112,48,48,32,56,248,124,14,20,40,14, + 0,0,0,128,0,224,3,192,7,0,0,0,0,0,1,0, + 7,128,7,128,5,128,13,192,12,192,8,224,24,224,31,224, + 16,112,48,112,48,48,32,56,248,124,14,20,40,14,0,0, + 3,0,7,128,15,192,12,96,16,0,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,14,19,38,14,0,0,4,32, + 15,240,27,192,0,0,0,0,1,0,7,128,7,128,5,128, + 13,192,12,192,8,224,24,224,31,224,16,112,48,112,48,48, + 32,56,248,124,14,19,38,14,0,0,8,64,28,224,24,224, + 0,0,0,0,1,0,7,128,7,128,5,128,13,192,12,192, + 8,224,24,224,31,224,16,112,48,112,48,48,32,56,248,124, + 14,20,40,14,0,0,1,128,6,192,6,192,7,128,0,0, + 0,0,1,0,7,128,7,128,5,128,13,192,12,192,8,224, + 24,224,31,224,16,112,48,112,48,48,32,56,248,124,18,14, + 42,19,0,0,7,255,128,1,225,128,3,96,128,3,96,128, + 6,96,0,6,96,0,7,255,0,12,98,0,12,96,0,24, + 96,0,24,96,0,48,96,64,48,96,192,249,255,128,11,19, + 38,13,1,251,15,192,49,192,96,128,64,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,112,96,63,192,31,128, + 4,0,6,0,3,0,3,0,12,0,12,20,40,12,0,0, + 16,0,56,0,30,0,7,0,0,0,0,0,255,224,56,96, + 56,96,56,64,56,0,56,0,63,192,56,128,56,0,56,0, + 56,0,56,48,56,32,255,224,12,20,40,12,0,0,1,0, + 1,192,7,128,14,0,0,0,0,0,255,224,56,96,56,96, + 56,64,56,0,56,0,63,192,56,128,56,0,56,0,56,0, + 56,48,56,32,255,224,12,20,40,12,0,0,6,0,15,0, + 31,128,48,192,0,0,0,0,255,224,56,96,56,96,56,64, + 56,0,56,0,63,192,56,128,56,0,56,0,56,0,56,48, + 56,32,255,224,12,19,38,12,0,0,16,128,49,192,49,192, + 0,0,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 7,20,20,8,0,0,64,224,112,24,4,0,126,24,24,24, + 24,24,24,24,24,24,24,24,24,126,7,20,20,8,1,0, + 8,30,60,96,128,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,252,7,20,20,8,0,0,16,56,124,198,0,0, + 126,24,24,24,24,24,24,24,24,24,24,24,24,126,8,19, + 19,8,255,0,65,99,227,0,0,63,12,12,12,12,12,12, + 12,12,12,12,12,12,63,14,14,28,15,0,0,127,192,240, + 240,48,56,48,24,48,28,48,28,254,28,48,28,48,28,48, + 28,48,24,48,56,48,240,255,192,15,19,38,15,0,0,2, + 32,15,240,11,224,16,0,0,0,248,126,56,24,60,24,62, + 24,54,24,55,24,51,152,49,152,49,216,48,248,48,120,48, + 56,48,56,252,24,12,20,40,14,1,0,16,0,60,0,30, + 0,3,0,0,0,0,0,15,128,48,192,96,96,64,96,192, + 48,192,48,192,48,192,48,192,48,192,48,96,96,96,64,48, + 128,31,0,12,20,40,14,1,0,1,0,1,192,7,128,14, + 0,0,0,0,0,15,128,48,192,96,96,64,96,192,48,192, + 48,192,48,192,48,192,48,192,48,96,96,96,64,48,128,31, + 0,12,20,40,14,1,0,6,0,15,0,15,128,24,192,32, + 0,0,0,15,128,48,192,96,96,64,96,192,48,192,48,192, + 48,192,48,192,48,192,48,96,96,96,64,48,128,31,0,12, + 19,38,14,1,0,8,64,31,224,55,128,0,0,0,0,15, + 128,48,192,96,96,64,96,192,48,192,48,192,48,192,48,192, + 48,192,48,96,96,96,64,48,128,31,0,12,19,38,14,1, + 0,16,128,57,192,49,192,0,0,0,0,15,128,48,192,96, + 96,64,96,192,48,192,48,192,48,192,48,192,48,192,48,96, + 96,96,64,48,128,31,0,8,7,7,10,1,3,195,102,60, + 24,60,102,195,12,15,30,14,1,255,15,176,16,224,32,224, + 96,224,193,240,195,112,195,48,198,48,204,48,232,32,120,96, + 112,64,112,128,223,0,128,0,15,20,40,15,0,0,4,0, + 14,0,7,0,1,192,0,0,0,0,252,126,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24, + 24,48,24,32,7,192,15,20,40,15,0,0,0,64,0,240, + 1,224,3,0,0,0,0,0,252,126,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,24,48, + 24,32,7,192,15,20,40,15,0,0,1,128,3,128,7,192, + 12,96,0,16,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,19,38,15,0,0,4,32,12,112,12,96,0,0, + 0,0,252,126,48,24,48,24,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,24,48,24,32,7,192,13,20, + 40,14,0,0,0,128,0,224,3,192,7,0,0,0,0,0, + 240,120,56,48,28,96,28,96,14,192,6,128,7,128,3,0, + 3,0,3,0,3,0,3,0,3,0,15,192,12,14,28,13, + 0,0,252,0,48,0,48,0,63,192,48,96,48,48,48,48, + 48,48,48,48,48,96,55,192,48,0,48,0,252,0,11,17, + 34,14,1,0,15,128,16,192,32,96,32,96,96,96,96,96, + 97,192,99,0,99,0,99,0,99,192,97,192,96,224,104,96, + 104,96,108,64,239,128,10,17,34,11,1,0,48,0,120,0, + 24,0,12,0,6,0,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,10,17, + 34,11,1,0,7,0,7,0,14,0,12,0,24,0,0,0, + 0,0,62,0,99,0,227,0,3,0,63,0,99,0,195,0, + 195,0,255,192,123,0,10,17,34,11,1,0,12,0,30,0, + 62,0,115,0,65,128,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,10,16, + 32,11,1,0,56,128,124,128,127,0,198,0,0,0,0,0, + 62,0,99,0,227,0,3,0,63,0,99,0,195,0,195,0, + 255,192,123,0,10,15,30,11,1,0,99,0,99,128,99,0, + 0,0,0,0,62,0,99,0,227,0,3,0,63,0,99,0, + 195,0,195,0,255,192,123,0,10,16,32,11,1,0,14,0, + 27,0,26,0,28,0,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,15,10, + 20,17,1,0,30,120,119,140,227,6,131,6,31,252,99,0, + 195,0,199,132,253,252,112,240,9,15,30,10,1,251,31,0, + 99,128,65,0,192,0,192,0,192,0,192,0,225,0,126,0, + 60,0,16,0,28,0,12,0,12,0,48,0,9,17,34,11, + 1,0,56,0,56,0,28,0,12,0,6,0,0,0,0,0, + 30,0,99,0,65,128,193,128,255,128,192,0,192,0,225,128, + 127,0,62,0,9,17,34,11,1,0,7,0,7,128,14,0, + 12,0,24,0,0,0,0,0,30,0,99,0,65,128,193,128, + 255,128,192,0,192,0,225,128,127,0,62,0,9,17,34,11, + 1,0,12,0,30,0,63,0,51,0,96,128,0,0,0,0, + 30,0,99,0,65,128,193,128,255,128,192,0,192,0,225,128, + 127,0,62,0,9,15,30,11,1,0,97,128,99,128,99,0, + 0,0,0,0,30,0,99,0,65,128,193,128,255,128,192,0, + 192,0,225,128,127,0,62,0,6,17,17,7,0,0,224,112, + 48,24,8,0,0,56,120,24,24,24,24,24,24,24,124,6, + 17,17,7,1,0,28,60,56,96,64,0,0,112,240,48,48, + 48,48,48,48,48,248,7,17,17,7,0,0,56,56,124,198, + 130,0,0,56,120,24,24,24,24,24,24,24,124,8,15,15, + 7,255,0,99,227,195,0,0,28,60,12,12,12,12,12,12, + 12,62,10,17,34,12,1,0,24,0,125,192,15,128,31,0, + 51,128,3,128,1,192,31,192,97,192,64,192,192,192,192,192, + 192,192,192,128,225,128,113,0,30,0,12,16,32,13,1,0, + 28,64,62,64,63,128,99,0,0,0,0,0,51,128,247,192, + 56,192,48,192,48,192,48,192,48,192,48,192,48,192,249,240, + 10,17,34,12,1,0,56,0,56,0,28,0,6,0,2,0, + 0,0,0,0,30,0,33,128,65,128,192,192,192,192,192,192, + 192,192,96,128,113,0,30,0,10,17,34,12,1,0,3,128, + 7,0,6,0,12,0,8,0,0,0,0,0,30,0,33,128, + 65,128,192,192,192,192,192,192,192,192,96,128,113,0,30,0, + 10,17,34,12,1,0,12,0,30,0,31,0,49,128,96,128, + 0,0,0,0,30,0,33,128,65,128,192,192,192,192,192,192, + 192,192,96,128,113,0,30,0,10,16,32,12,1,0,24,64, + 60,128,127,128,71,0,0,0,0,0,30,0,33,128,65,128, + 192,192,192,192,192,192,192,192,96,128,113,0,30,0,10,15, + 30,12,1,0,49,128,115,128,97,128,0,0,0,0,30,0, + 33,128,65,128,192,192,192,192,192,192,192,192,96,128,113,0, + 30,0,8,8,8,10,1,2,24,24,16,255,0,24,24,24, + 10,12,24,12,1,255,0,64,30,192,51,128,99,192,199,192, + 196,192,200,192,248,192,113,128,113,0,94,0,128,0,12,17, + 34,13,1,0,56,0,28,0,12,0,6,0,2,0,0,0, + 0,0,97,192,224,192,96,192,96,192,96,192,96,192,96,192, + 97,192,127,240,60,192,12,17,34,13,1,0,3,128,7,128, + 6,0,12,0,8,0,0,0,0,0,97,192,224,192,96,192, + 96,192,96,192,96,192,96,192,97,192,127,240,60,192,12,17, + 34,13,1,0,14,0,14,0,31,0,49,128,32,128,0,0, + 0,0,97,192,224,192,96,192,96,192,96,192,96,192,96,192, + 97,192,127,240,60,192,12,15,30,13,1,0,49,128,113,128, + 97,128,0,0,0,0,97,192,224,192,96,192,96,192,96,192, + 96,192,96,192,97,192,127,240,60,192,13,22,44,12,255,251, + 0,192,1,224,1,128,3,0,6,0,0,0,0,0,124,120, + 56,32,28,96,28,64,14,192,14,192,6,128,7,128,7,0, + 3,0,3,0,6,0,70,0,124,0,248,0,11,22,44,13, + 1,251,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 51,128,63,192,56,224,48,96,48,96,48,96,48,96,48,192, + 63,128,55,0,48,0,48,0,48,0,48,0,252,0,13,20, + 40,12,255,251,24,96,28,224,24,192,0,0,0,0,124,120, + 56,32,28,96,28,64,14,192,14,192,6,128,7,128,7,0, + 3,0,3,0,6,0,70,0,124,0,248,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=11 h=22 x= 2 y= 8 dx=12 dy= 0 ascent=18 len=44 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14n[448] U8G_SECTION(".progmem.u8g_font_gdb14n") = { + 0,36,33,244,248,14,0,0,0,0,42,57,0,18,252,14, + 0,9,10,20,10,1,8,24,0,24,0,219,0,255,128,60, + 0,62,0,255,0,219,0,24,0,24,0,8,8,8,10,1, + 2,24,24,24,255,24,24,24,24,4,7,7,6,1,252,48, + 240,48,48,32,96,64,7,1,1,8,1,5,254,4,3,3, + 6,1,0,96,240,224,11,22,44,11,0,252,0,96,0,192, + 0,192,1,128,1,128,3,128,3,0,3,0,7,0,6,0, + 6,0,12,0,12,0,28,0,24,0,24,0,56,0,48,0, + 48,0,96,0,96,0,192,0,10,14,28,12,1,0,30,0, + 51,0,97,128,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,97,128,97,128,51,0,30,0,8,14,14,12,2,0, + 8,120,248,24,24,24,24,24,24,24,24,24,24,255,8,14, + 14,11,2,0,62,103,227,195,3,6,4,12,24,48,33,65, + 255,255,9,14,28,11,1,0,30,0,99,0,227,0,67,0, + 3,0,6,0,31,0,7,128,3,128,1,128,1,128,1,128, + 67,0,190,0,10,14,28,12,1,0,1,0,7,0,7,0, + 15,0,27,0,19,0,51,0,99,0,99,0,255,192,3,0, + 3,0,3,0,15,192,9,14,28,12,1,0,63,128,63,0, + 32,0,96,0,96,0,126,0,67,0,1,128,1,128,1,128, + 1,128,1,128,195,0,62,0,10,14,28,12,1,0,7,0, + 28,0,48,0,96,0,64,0,223,0,225,128,192,192,192,192, + 192,192,192,192,96,128,49,128,30,0,10,14,28,12,1,0, + 127,192,255,128,129,128,129,128,3,0,3,0,2,0,6,0, + 6,0,12,0,12,0,24,0,56,0,48,0,9,14,28,11, + 1,0,62,0,113,128,241,128,241,128,249,128,127,0,63,0, + 63,128,99,128,193,128,193,128,193,128,99,0,62,0,10,14, + 28,12,1,0,31,0,35,128,65,128,192,192,192,192,192,192, + 192,192,97,192,62,192,0,128,1,128,3,0,14,0,56,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=19 h=24 x= 2 y=12 dx=20 dy= 0 ascent=19 len=60 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14r[2842] U8G_SECTION(".progmem.u8g_font_gdb14r") = { + 0,36,33,244,248,14,3,134,7,177,32,127,251,19,251,18, + 251,0,0,0,6,0,0,4,17,17,7,2,0,96,224,224, + 224,224,224,224,224,224,64,64,64,0,0,96,240,224,7,8, + 8,11,2,9,102,238,206,206,198,198,198,196,11,13,26,12, + 1,1,12,192,12,128,9,128,127,224,25,0,19,0,19,0, + 51,0,255,128,38,0,38,0,100,0,140,0,10,18,36,12, + 1,254,12,0,12,0,63,128,127,192,205,128,204,128,236,0, + 124,0,63,0,15,128,13,192,140,192,140,192,204,192,255,128, + 127,0,12,0,12,0,15,14,28,17,1,0,56,24,76,16, + 198,48,198,96,198,192,199,128,101,128,59,56,6,68,12,198, + 12,198,24,198,48,100,96,56,15,16,32,16,1,0,15,0, + 17,128,49,128,49,128,51,0,62,0,60,0,28,254,124,120, + 126,48,207,48,199,160,195,224,193,240,97,252,62,56,3,8, + 8,6,2,9,96,224,192,192,192,192,192,192,5,22,22,8, + 2,252,8,24,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,96,96,96,48,24,8,5,22,22,8,1,252,128,192, + 96,48,48,48,24,24,24,24,24,24,24,24,24,24,48,48, + 48,96,192,128,9,10,20,10,1,8,24,0,24,0,219,0, + 255,128,60,0,62,0,255,0,219,0,24,0,24,0,8,8, + 8,10,1,2,24,24,24,255,24,24,24,24,4,7,7,6, + 1,252,48,240,48,48,32,96,64,7,1,1,8,1,5,254, + 4,3,3,6,1,0,96,240,224,11,22,44,11,0,252,0, + 96,0,192,0,192,1,128,1,128,3,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,24,0,56, + 0,48,0,48,0,96,0,96,0,192,0,10,14,28,12,1, + 0,30,0,51,0,97,128,97,128,225,192,225,192,225,192,225, + 192,225,192,225,192,97,128,97,128,51,0,30,0,8,14,14, + 12,2,0,8,120,248,24,24,24,24,24,24,24,24,24,24, + 255,8,14,14,11,2,0,62,103,227,195,3,6,4,12,24, + 48,33,65,255,255,9,14,28,11,1,0,30,0,99,0,227, + 0,67,0,3,0,6,0,31,0,7,128,3,128,1,128,1, + 128,1,128,67,0,190,0,10,14,28,12,1,0,1,0,7, + 0,7,0,15,0,27,0,19,0,51,0,99,0,99,0,255, + 192,3,0,3,0,3,0,15,192,9,14,28,12,1,0,63, + 128,63,0,32,0,96,0,96,0,126,0,67,0,1,128,1, + 128,1,128,1,128,1,128,195,0,62,0,10,14,28,12,1, + 0,7,0,28,0,48,0,96,0,64,0,223,0,225,128,192, + 192,192,192,192,192,192,192,96,128,49,128,30,0,10,14,28, + 12,1,0,127,192,255,128,129,128,129,128,3,0,3,0,2, + 0,6,0,6,0,12,0,12,0,24,0,56,0,48,0,9, + 14,28,11,1,0,62,0,113,128,241,128,241,128,249,128,127, + 0,63,0,63,128,99,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,12,1,0,31,0,35,128,65,128,192,192,192, + 192,192,192,192,192,97,192,62,192,0,128,1,128,3,0,14, + 0,56,0,4,10,10,6,1,0,224,240,96,0,0,0,0, + 96,240,224,4,15,15,6,1,252,96,240,224,0,0,0,0, + 0,48,240,48,48,32,96,64,9,7,14,10,1,3,1,128, + 15,128,124,0,224,0,248,0,31,0,3,128,9,4,8,10, + 1,4,255,128,0,0,0,0,255,128,9,7,14,10,1,3, + 192,0,248,0,31,0,3,128,31,0,240,0,128,0,9,16, + 32,10,1,0,63,0,103,128,227,128,227,128,3,128,7,0, + 7,0,14,0,12,0,24,0,24,0,24,0,0,0,28,0, + 60,0,56,0,18,20,60,20,1,251,1,248,0,7,254,0, + 28,15,0,56,3,128,48,1,128,97,233,192,99,24,192,194, + 24,192,198,24,192,198,24,192,198,24,192,198,24,128,199,57, + 128,227,255,0,97,222,0,112,0,0,56,1,0,62,7,0, + 15,252,0,3,240,0,14,14,28,14,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,13,14,28,14,0,0,127,128, + 176,192,48,96,48,96,48,96,48,192,63,224,48,112,48,56, + 48,56,48,56,48,56,48,112,255,224,11,14,28,13,1,0, + 15,192,49,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,192,0,224,0,112,96,127,128,31,0,14,14,28,15, + 0,0,127,192,240,240,48,56,48,24,48,28,48,28,48,28, + 48,28,48,28,48,28,48,24,48,56,48,240,255,192,12,14, + 28,12,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 11,14,28,12,0,0,255,224,56,96,56,32,56,32,56,0, + 56,0,63,128,57,0,56,0,56,0,56,0,56,0,56,0, + 254,0,12,14,28,14,1,0,15,192,16,224,32,64,96,0, + 64,0,192,0,192,0,192,0,193,240,192,96,96,96,96,96, + 48,96,15,128,16,14,28,16,0,0,252,63,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,252,63,6,14,14,8,1,0,252,48,48,48, + 48,48,48,48,48,48,48,48,48,252,10,19,38,8,253,251, + 15,192,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 38,0,124,0,248,0,13,14,28,14,0,0,252,248,48,224, + 48,192,49,128,51,0,54,0,60,0,62,0,55,0,51,128, + 49,192,48,224,48,120,252,120,11,14,28,12,0,0,252,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,96,48,64,255,192,18,14,42,19,1,0, + 240,7,128,120,15,0,120,15,0,124,15,0,124,31,0,108, + 23,0,110,55,0,102,55,0,103,103,0,99,103,0,99,199, + 0,99,199,0,97,135,0,241,143,192,15,14,28,15,0,0, + 248,126,56,24,60,24,62,24,54,24,55,24,51,152,49,152, + 49,216,48,248,48,120,48,56,48,56,252,24,12,14,28,14, + 1,0,15,128,48,192,96,96,64,96,192,48,192,48,192,48, + 192,48,192,48,192,48,96,96,96,64,48,128,31,0,12,14, + 28,13,0,0,127,192,176,224,48,48,48,48,48,48,48,48, + 48,96,55,128,48,0,48,0,48,0,48,0,48,0,252,0, + 15,18,36,14,1,252,15,128,48,192,96,96,64,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 31,0,1,192,0,228,0,126,0,24,14,14,28,14,0,0, + 127,192,240,224,48,48,48,48,48,48,48,96,63,192,51,128, + 49,192,49,192,48,224,48,112,48,124,252,60,10,14,28,12, + 1,0,31,128,97,192,192,128,192,0,240,0,124,0,63,0, + 15,128,3,192,1,192,128,192,192,128,225,128,254,0,12,14, + 28,13,1,0,255,240,198,48,134,16,134,16,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 15,14,28,15,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,14,28,15,0,0,252,62,56,8,56,24,56,16, + 28,48,28,48,14,32,14,96,6,96,7,64,7,192,3,128, + 3,128,1,0,19,14,42,20,0,0,252,99,224,48,96,192, + 56,112,192,56,240,128,56,241,128,24,185,128,25,153,128,29, + 29,0,29,29,0,15,15,0,14,15,0,14,7,0,14,6, + 0,4,6,0,14,14,28,14,0,0,252,124,56,48,28,96, + 28,96,14,192,7,128,7,128,7,128,7,192,12,224,24,224, + 24,112,48,56,248,252,13,14,28,14,0,0,240,120,56,48, + 28,96,28,96,14,192,6,128,7,128,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,11,14,28,13,1,0,127,224, + 193,192,195,128,131,128,7,0,15,0,14,0,28,0,28,0, + 56,0,120,32,112,96,224,96,255,224,6,21,21,8,2,253, + 248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,252,10,22,44,11,0,252,192,0,96,0,96, + 0,48,0,48,0,48,0,24,0,24,0,28,0,12,0,12, + 0,6,0,6,0,6,0,3,0,3,0,3,0,1,128,1, + 128,1,192,0,192,0,192,5,21,21,7,1,253,248,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,248,9,11,22,11,1,6,8,0,12,0,28,0,22,0, + 54,0,34,0,35,0,99,0,65,128,65,128,129,128,10,1, + 2,11,1,253,255,192,5,5,5,7,0,12,224,224,112,56, + 8,10,10,20,11,1,0,62,0,99,0,227,0,3,0,63, + 0,99,0,195,0,195,0,255,192,123,0,11,17,34,12,0, + 0,96,0,224,0,96,0,96,0,96,0,96,0,96,0,119, + 128,127,192,112,224,96,96,96,96,96,96,96,64,96,192,127, + 128,30,0,9,10,20,10,1,0,31,0,99,128,65,0,192, + 0,192,0,192,0,192,0,225,0,127,128,60,0,12,17,34, + 13,1,0,0,192,3,192,0,192,0,192,0,192,0,192,0, + 192,31,192,33,192,64,192,192,192,192,192,192,192,192,192,97, + 192,127,240,60,192,9,10,20,11,1,0,30,0,99,0,65, + 128,193,128,255,128,192,0,192,0,225,128,127,0,62,0,9, + 17,34,8,0,0,7,128,25,0,16,0,48,0,48,0,48, + 0,48,0,126,0,176,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,124,0,11,15,30,12,1,251,30,96,35, + 192,97,128,97,128,97,128,115,0,62,0,48,0,124,0,63, + 128,111,192,192,192,192,192,225,128,62,0,12,17,34,13,1, + 0,48,0,240,0,48,0,48,0,48,0,48,0,48,0,51, + 128,63,192,56,192,48,192,48,192,48,192,48,192,48,192,48, + 192,249,240,5,15,15,7,1,0,48,112,48,0,0,112,240, + 48,48,48,48,48,48,48,248,7,20,20,6,254,251,6,14, + 6,0,0,6,14,6,6,6,6,6,6,6,6,6,6,68, + 248,240,12,17,34,13,1,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,49,240,49,192,51,0,54,0,62,0, + 55,0,51,128,49,192,49,224,248,240,6,17,17,7,1,0, + 48,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,18,10,30,19,1,0,103,142,0,255,255,0,112,227,0, + 96,195,0,96,195,0,96,195,0,96,195,0,96,195,0,96, + 195,0,241,231,192,12,10,20,13,1,0,51,128,247,192,56, + 192,48,192,48,192,48,192,48,192,48,192,48,192,249,240,10, + 10,20,12,1,0,30,0,33,128,65,128,192,192,192,192,192, + 192,192,192,96,128,113,0,30,0,11,15,30,13,1,251,51, + 128,255,192,56,224,48,96,48,96,48,96,48,96,48,192,63, + 128,55,0,48,0,48,0,48,0,48,0,252,0,11,15,30, + 13,1,251,30,64,97,192,64,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,0,192,0,192,0,192,0,192,3, + 224,9,10,20,10,1,0,119,128,255,128,121,128,113,0,112, + 0,112,0,112,0,112,0,112,0,252,0,8,10,10,10,1, + 0,126,198,198,240,124,63,135,131,194,252,8,14,14,9,0, + 0,16,48,48,48,127,176,48,48,48,48,48,50,63,24,12, + 10,20,13,1,0,97,192,224,192,96,192,96,192,96,192,96, + 192,96,192,97,192,127,240,60,192,12,10,20,12,0,0,248, + 240,112,64,56,192,56,128,28,128,29,128,13,0,15,0,6, + 0,6,0,16,10,20,17,0,0,248,135,112,194,49,198,57, + 230,59,100,27,124,30,124,14,56,12,56,12,16,12,10,20, + 12,0,0,253,240,56,192,29,128,31,0,14,0,15,0,27, + 128,17,192,33,224,243,240,13,15,30,12,255,251,124,120,56, + 32,28,96,28,64,14,192,14,192,6,128,7,128,7,0,3, + 0,3,0,6,0,70,0,124,0,248,0,9,10,20,11,1, + 0,255,128,199,0,135,0,14,0,28,0,60,0,57,0,112, + 128,225,128,255,128,5,22,22,8,2,252,24,48,96,96,96, + 96,48,48,48,48,96,224,48,48,48,48,96,96,96,96,48, + 24,2,24,24,5,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,5, + 22,22,8,1,252,192,96,48,48,48,48,96,96,96,96,56, + 48,96,96,96,96,48,48,48,48,96,192,10,4,8,11,1, + 5,48,64,124,128,159,0,135,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=23 h=27 x= 3 y=16 dx=23 dy= 0 ascent=23 len=69 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x=-4 y=-7 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17[7600] U8G_SECTION(".progmem.u8g_font_gdb17") = { + 0,42,39,242,246,17,4,81,9,172,32,255,250,23,249,21, + 250,0,0,0,7,0,0,4,21,21,8,2,255,48,240,240, + 240,240,112,112,96,96,96,96,96,96,96,64,0,0,112,240, + 240,224,9,9,18,13,2,11,113,128,231,128,231,128,231,128, + 227,0,227,0,99,0,99,0,99,0,13,15,30,14,1,2, + 2,32,6,96,6,96,6,96,12,96,63,248,76,192,24,128, + 25,128,255,224,51,0,51,0,51,0,35,0,102,0,11,20, + 40,13,1,254,6,0,6,0,31,128,127,224,230,224,198,96, + 198,0,246,0,126,0,63,128,7,192,6,224,6,96,198,96, + 198,96,246,192,255,192,31,0,6,0,6,0,18,17,51,20, + 1,0,0,1,0,60,6,0,102,14,0,195,12,0,195,24, + 0,195,48,0,195,112,0,195,96,0,102,192,0,61,143,0, + 3,144,128,3,48,192,6,48,192,12,48,192,24,48,192,56, + 25,128,48,15,0,17,19,57,18,1,0,7,128,0,25,224, + 0,16,224,0,48,224,0,48,224,0,49,192,0,63,128,0, + 63,0,0,30,0,0,62,63,128,127,29,0,127,140,0,239, + 140,0,231,204,0,227,248,0,225,248,0,96,252,0,112,255, + 0,31,14,128,4,9,9,7,2,11,112,224,224,224,224,224, + 96,96,96,7,25,25,9,2,252,4,14,28,56,48,112,112, + 112,224,224,224,224,224,224,224,224,224,96,112,112,48,56,28, + 12,6,7,25,25,9,0,252,64,224,112,56,24,28,28,28, + 14,14,14,14,14,14,14,14,14,28,28,28,56,56,112,96, + 192,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0,4,13, + 13,7,2,255,112,240,240,224,0,0,0,0,0,112,240,240, + 224,5,17,17,7,1,251,56,120,120,48,0,0,0,0,0, + 48,248,120,56,48,48,96,192,11,9,18,12,1,3,0,96, + 3,192,31,128,252,0,240,0,248,0,63,0,7,192,0,224, + 11,5,10,12,1,5,255,224,0,0,0,0,0,0,255,224, + 11,9,18,12,1,3,192,0,248,0,63,0,7,192,1,224, + 15,192,126,0,240,0,192,0,9,20,40,12,1,255,63,0, + 119,128,227,128,227,128,195,128,3,128,3,0,7,0,6,0, + 14,0,12,0,12,0,12,0,12,0,0,0,0,0,28,0, + 60,0,60,0,56,0,20,23,69,23,2,251,0,252,0,3, + 255,0,14,7,128,24,1,192,48,0,224,32,0,96,96,242, + 112,97,142,48,195,14,48,195,14,48,199,14,48,199,14,48, + 199,14,48,199,14,96,199,158,96,227,255,192,99,239,128,113, + 199,0,120,0,0,60,0,64,31,3,192,15,255,0,3,252, + 0,17,17,51,17,0,0,0,192,0,1,192,0,3,192,0, + 3,224,0,2,224,0,6,240,0,6,112,0,6,112,0,12, + 120,0,12,56,0,15,248,0,24,28,0,24,28,0,16,28, + 0,48,14,0,48,14,0,252,63,128,13,17,34,16,1,0, + 127,192,248,224,56,112,56,112,56,112,56,112,56,224,63,192, + 56,240,56,112,56,56,56,56,56,56,56,56,56,48,56,112, + 255,192,13,17,34,15,1,0,7,240,24,120,48,48,112,0, + 96,0,96,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,0,120,8,60,56,31,224,15,128,16,17,34,17,0,0, + 127,224,248,120,56,60,56,30,56,30,56,15,56,15,56,15, + 56,15,56,15,56,15,56,15,56,30,56,30,56,60,56,120, + 255,224,13,17,34,14,1,0,255,240,120,48,120,48,120,32, + 120,32,120,0,120,0,120,0,127,192,120,128,120,0,120,0, + 120,0,120,16,120,24,120,48,255,240,12,17,34,14,1,0, + 255,240,120,48,120,48,120,48,120,32,120,0,120,0,120,0, + 127,192,120,128,120,0,120,0,120,0,120,0,120,0,120,0, + 254,0,14,17,34,16,1,0,3,240,12,120,48,48,48,0, + 112,0,96,0,224,0,224,0,224,0,224,252,224,56,224,56, + 112,56,112,56,60,56,31,240,7,192,17,17,51,18,0,0, + 254,63,128,60,30,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,63,254,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,7,17,17,9,1,0,254,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,12,22,44,9,252,251, + 7,240,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,128,1,128,51,0,126,0,252,0,16,17,34,17, + 1,0,254,126,56,56,56,48,56,112,56,224,57,192,59,128, + 63,0,63,0,59,128,57,192,57,224,56,240,56,120,56,60, + 56,31,254,30,13,17,34,14,1,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,8,56,24,56,24,255,240,21,17,51,23, + 1,0,248,1,248,56,1,224,60,1,224,60,3,224,62,3, + 224,62,6,224,63,6,224,55,12,224,39,140,224,35,156,224, + 35,152,224,33,216,224,33,240,224,97,240,224,96,224,224,112, + 224,224,248,67,248,18,17,51,18,0,0,248,15,192,124,3, + 0,60,3,0,62,3,0,63,3,0,55,131,0,51,195,0, + 51,195,0,49,227,0,48,243,0,48,123,0,48,123,0,48, + 63,0,48,31,0,48,15,0,48,7,0,252,3,0,15,17, + 34,17,1,0,7,192,24,112,48,56,48,28,96,28,96,14, + 224,14,224,14,224,14,224,14,224,14,224,12,112,28,112,24, + 56,24,28,32,7,192,14,17,34,15,0,0,127,224,248,120, + 56,56,56,28,56,28,56,28,56,28,56,56,60,112,59,224, + 56,0,56,0,56,0,56,0,56,0,56,0,254,0,18,22, + 66,17,1,251,7,192,0,24,112,0,48,56,0,48,28,0, + 96,28,0,96,14,0,224,14,0,224,14,0,224,14,0,224, + 14,0,224,14,0,224,14,0,112,28,0,112,28,0,56,24, + 0,28,48,0,7,192,0,0,112,0,0,60,64,0,31,192, + 0,15,128,0,3,0,16,17,34,16,0,0,63,192,248,112, + 56,56,56,56,56,56,56,56,56,112,63,240,63,192,57,192, + 56,224,56,224,56,112,56,120,56,60,56,63,254,30,12,17, + 34,14,1,0,15,240,48,240,64,32,192,0,224,0,248,0, + 126,0,63,128,31,192,7,224,0,240,0,112,0,48,192,48, + 192,32,240,64,255,128,15,17,34,16,0,0,255,254,195,134, + 195,134,131,134,131,132,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,7,192,15,224,17,17, + 51,18,0,0,254,31,128,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,4,0,28,12, + 0,14,24,0,3,224,0,18,17,51,18,0,0,254,15,192, + 56,7,0,60,6,0,28,6,0,28,6,0,30,12,0,14, + 12,0,15,24,0,7,24,0,7,24,0,7,176,0,3,176, + 0,3,176,0,1,224,0,1,224,0,1,224,0,0,128,0, + 23,17,51,23,0,0,254,24,126,56,24,24,56,56,24,56, + 60,16,28,60,48,28,110,48,28,110,48,28,110,48,14,199, + 96,14,199,96,14,135,96,15,131,224,15,131,224,7,1,192, + 7,1,192,7,1,192,6,0,128,17,17,51,17,0,0,255, + 63,0,60,12,0,28,24,0,30,24,0,15,48,0,7,112, + 0,7,224,0,3,192,0,1,192,0,3,224,0,3,240,0, + 6,112,0,12,120,0,12,60,0,24,28,0,56,30,0,252, + 63,128,16,17,34,17,0,0,248,31,60,14,28,12,14,24, + 15,24,7,48,7,48,3,224,3,224,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,7,240,13,17,34,15,1,0, + 127,248,96,240,64,240,193,224,1,192,3,192,7,128,7,128, + 15,0,15,0,30,0,60,0,60,0,120,24,120,24,240,24, + 255,248,6,25,25,9,3,252,252,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 252,11,25,50,13,1,252,192,0,192,0,224,0,96,0,112, + 0,112,0,48,0,56,0,24,0,24,0,28,0,12,0,14, + 0,6,0,6,0,7,0,3,0,3,0,3,128,1,128,1, + 192,0,192,0,192,0,224,0,96,6,25,25,8,0,252,252, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,252,11,13,26,13,1,7,6,0, + 14,0,14,0,15,0,27,0,19,0,17,128,49,128,33,192, + 96,192,96,192,64,96,192,64,11,1,2,13,1,253,255,224, + 6,6,6,9,0,14,224,240,112,56,24,12,12,12,24,13, + 1,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,14,20,40,15,0,0, + 24,0,248,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,240,59,248,62,56,56,28,56,12,56,12,56,12,56,8, + 56,8,60,16,63,224,7,128,11,12,24,12,1,0,15,224, + 48,192,112,192,96,64,224,0,224,0,224,0,224,0,240,64, + 120,224,63,192,31,0,14,20,40,15,1,0,0,48,1,240, + 0,112,0,112,0,112,0,112,0,112,0,112,15,240,48,240, + 96,112,96,112,224,112,224,112,224,112,240,112,248,240,127,244, + 63,124,30,48,11,12,24,13,1,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,11,19,38,9,1,0,3,224,12,192,24,0,24,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,255,0,14,18, + 36,15,0,250,15,140,16,252,32,112,96,48,96,48,112,48, + 56,96,31,128,28,0,124,0,127,224,63,248,127,252,240,60, + 224,28,224,24,112,48,31,192,15,20,40,16,1,0,24,0, + 248,0,56,0,56,0,56,0,56,0,56,0,56,0,56,240, + 59,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,7,18,18,8,1,0,56,120,112,0, + 0,0,56,248,56,56,56,56,56,56,56,56,56,254,10,24, + 48,8,252,250,1,192,3,192,3,128,0,0,0,0,0,0, + 3,128,15,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,0,102,0, + 252,0,120,0,14,20,40,15,1,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,252,56,112,56,224, + 57,128,59,0,63,0,59,128,57,192,56,224,56,240,56,120, + 252,60,7,20,20,8,1,0,24,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,23,12,36,23, + 0,0,25,241,240,251,255,248,62,62,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,254,254,15,12,24,16,1,0,24,240,251,248, + 62,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,254,12,12,24,14,1,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,13,18,36,15,1,250,25,224,251,240,60,112,56,56, + 56,24,56,24,56,24,56,24,56,16,60,48,63,224,59,192, + 56,0,56,0,56,0,56,0,56,0,254,0,14,18,36,15, + 1,250,15,16,48,240,96,112,96,112,224,112,224,112,224,112, + 240,112,248,240,127,240,127,112,28,112,0,112,0,112,0,112, + 0,112,0,112,1,252,11,12,24,12,1,0,49,224,247,224, + 124,192,120,64,120,64,120,0,120,0,120,0,120,0,120,0, + 120,0,254,0,9,12,24,11,1,0,62,0,71,0,194,0, + 224,0,248,0,126,0,63,0,15,128,131,128,193,128,225,0, + 254,0,10,17,34,10,0,0,8,0,24,0,56,0,56,0, + 56,0,255,192,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,128,63,192,30,0,15,12,24,15,0,0, + 56,56,248,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,250,63,190,30,56,14,12,24,14,0,0,252,124, + 120,48,56,48,60,32,28,96,30,96,14,192,14,192,7,128, + 7,128,7,128,3,0,19,12,36,19,0,0,252,33,224,120, + 96,192,56,112,192,56,241,128,28,249,128,28,185,128,29,159, + 0,15,31,0,15,31,0,15,14,0,6,14,0,4,4,0, + 14,12,24,14,0,0,254,252,60,112,28,96,30,192,15,128, + 7,128,7,128,15,192,25,224,24,240,48,120,249,252,15,18, + 36,14,255,250,126,62,60,24,28,24,30,16,14,48,15,48, + 7,96,7,96,3,192,3,192,3,192,1,128,1,128,3,0, + 3,0,126,0,124,0,248,0,11,12,24,13,1,0,127,224, + 67,192,67,192,135,128,15,0,15,0,30,0,60,0,56,32, + 120,96,240,96,255,224,7,25,25,9,1,252,2,14,28,56, + 56,56,56,28,28,28,28,56,240,248,28,28,28,28,56,56, + 56,56,28,14,6,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,7,25,25,9,1,252,192,224,112,56, + 56,56,56,112,112,112,112,62,30,56,112,112,112,112,56,56, + 56,56,112,224,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,7,0,0,4,19,19,8,2,249, + 112,240,240,224,32,96,96,96,96,96,96,112,112,112,240,240, + 240,240,192,10,17,34,14,2,255,12,0,12,0,15,128,63, + 192,109,192,108,192,204,0,204,0,204,0,204,0,204,0,236, + 64,125,192,63,128,30,0,12,0,12,0,13,16,32,14,0, + 0,3,240,6,56,12,16,28,16,28,16,60,0,60,0,60, + 0,255,192,60,0,60,0,60,16,56,24,56,24,127,248,255, + 240,12,11,22,14,1,2,192,48,239,112,112,224,96,96,96, + 96,96,96,96,96,112,224,111,96,192,48,128,16,15,16,32, + 14,255,0,248,126,120,56,60,48,30,48,30,96,15,96,7, + 192,7,192,7,192,3,128,63,248,3,128,3,128,3,128,3, + 128,15,224,2,27,27,6,2,251,192,192,192,192,192,192,192, + 192,192,192,192,192,128,0,0,192,192,192,192,192,192,192,192, + 192,192,192,192,10,19,38,13,2,0,31,0,35,128,97,0, + 113,0,120,0,62,0,127,128,207,128,195,192,225,192,240,192, + 124,192,63,128,31,128,7,128,65,128,65,128,97,0,126,0, + 9,4,8,11,1,14,115,128,247,128,247,128,231,0,18,18, + 54,20,1,0,3,240,0,14,28,0,24,6,0,48,3,0, + 97,241,128,102,57,128,198,16,192,204,0,192,204,0,192,204, + 0,192,204,0,192,204,0,192,102,1,128,103,25,128,49,243, + 0,24,6,0,12,12,0,3,240,0,6,9,9,7,1,8, + 120,216,24,120,216,216,252,0,252,11,12,24,14,1,0,4, + 32,8,96,24,192,49,192,115,128,231,128,231,128,115,128,49, + 192,24,192,8,96,4,32,12,6,12,14,1,2,127,240,128, + 48,0,48,0,48,0,48,0,32,8,1,1,10,1,6,255, + 10,9,18,10,255,10,30,0,97,128,255,128,219,192,222,192, + 220,192,251,192,97,128,30,0,11,2,4,13,1,16,127,224, + 255,224,6,7,7,10,2,10,56,76,204,204,204,200,112,10, + 12,24,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,0,0,0,0,255,192,7,10,10, + 9,1,8,60,102,230,6,12,24,16,50,98,254,7,10,10, + 9,1,8,60,102,70,6,28,6,6,6,142,120,6,6,6, + 9,3,14,56,60,112,96,192,128,15,18,36,15,0,250,24, + 24,248,120,56,56,56,56,56,56,56,56,56,56,56,56,60, + 120,63,248,63,190,55,24,48,0,48,0,56,0,56,0,60, + 0,48,0,15,20,40,17,1,253,15,254,49,248,113,152,225, + 152,225,152,225,152,225,152,113,152,121,152,31,152,1,152,1, + 152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,7, + 254,4,4,4,6,1,7,112,240,240,224,5,6,6,6,1, + 250,32,96,120,56,112,224,7,10,10,9,1,8,24,248,24, + 24,24,24,24,24,24,126,7,9,9,8,0,8,56,76,198, + 198,198,228,120,0,254,11,12,24,14,2,0,132,0,198,0, + 99,0,115,128,57,192,61,224,61,224,57,192,115,128,99,0, + 198,0,132,0,15,16,32,17,1,0,48,6,240,12,48,24, + 48,48,48,48,48,96,48,192,253,128,1,140,3,28,6,44, + 12,44,12,76,24,254,48,12,96,62,15,16,32,17,1,0, + 48,6,240,12,48,24,48,24,48,48,48,96,48,192,252,192, + 1,188,3,102,6,70,6,12,12,8,24,16,48,34,112,126, + 15,16,32,17,1,0,56,6,204,12,12,24,56,48,12,48, + 12,96,140,192,121,128,1,140,3,28,6,60,12,44,12,76, + 24,254,48,12,96,62,10,19,38,12,1,249,14,0,30,0, + 30,0,28,0,0,0,6,0,6,0,6,0,14,0,12,0, + 24,0,56,0,112,0,224,0,224,192,225,192,225,192,243,128, + 62,0,17,23,69,17,0,0,6,0,0,15,0,0,7,128, + 0,1,192,0,0,96,0,0,0,0,0,192,0,1,192,0, + 3,192,0,3,224,0,2,224,0,6,240,0,6,112,0,6, + 112,0,12,120,0,12,56,0,15,248,0,24,28,0,24,28, + 0,16,28,0,48,14,0,48,14,0,252,63,128,17,23,69, + 17,0,0,0,48,0,0,120,0,1,224,0,3,128,0,2, + 0,0,0,0,0,0,192,0,1,192,0,3,192,0,3,224, + 0,2,224,0,6,240,0,6,112,0,6,112,0,12,120,0, + 12,56,0,15,248,0,24,28,0,24,28,0,16,28,0,48, + 14,0,48,14,0,252,63,128,17,23,69,17,0,0,1,192, + 0,3,224,0,7,240,0,14,48,0,8,24,0,0,0,0, + 0,192,0,1,192,0,3,192,0,3,224,0,2,224,0,6, + 240,0,6,112,0,6,112,0,12,120,0,12,56,0,15,248, + 0,24,28,0,24,28,0,16,28,0,48,14,0,48,14,0, + 252,63,128,17,22,66,17,0,0,7,140,0,15,248,0,15, + 240,0,16,96,0,0,0,0,0,192,0,1,192,0,3,192, + 0,3,224,0,2,224,0,6,240,0,6,112,0,6,112,0, + 12,120,0,12,56,0,15,248,0,24,28,0,24,28,0,16, + 28,0,48,14,0,48,14,0,252,63,128,17,22,66,17,0, + 0,7,56,0,15,120,0,15,120,0,6,48,0,0,0,0, + 0,192,0,1,192,0,3,192,0,3,224,0,2,224,0,6, + 240,0,6,112,0,6,112,0,12,120,0,12,56,0,15,248, + 0,24,28,0,24,28,0,16,28,0,48,14,0,48,14,0, + 252,63,128,17,23,69,17,0,0,3,224,0,6,96,0,6, + 96,0,7,96,0,3,128,0,0,0,0,0,192,0,1,192, + 0,3,192,0,3,224,0,2,224,0,6,240,0,6,112,0, + 6,112,0,12,120,0,12,56,0,15,248,0,24,28,0,24, + 28,0,16,28,0,48,14,0,48,14,0,252,63,128,21,17, + 51,22,0,0,7,255,240,1,248,48,1,248,48,3,184,48, + 3,184,48,3,56,0,7,56,0,6,56,0,7,255,224,12, + 56,64,12,56,0,28,56,0,24,56,0,24,56,8,48,56, + 24,48,56,24,248,255,248,14,23,46,15,1,250,7,240,24, + 120,48,48,112,0,96,0,96,0,224,0,224,0,224,0,224, + 0,224,0,240,0,112,0,120,8,60,60,63,240,15,192,1, + 0,3,128,3,192,1,192,3,128,6,0,13,23,46,14,1, + 0,24,0,60,0,94,0,7,0,1,128,0,0,255,240,120, + 48,120,48,120,32,120,32,120,0,120,0,120,0,127,192,120, + 128,120,0,120,0,120,0,120,16,120,24,120,48,255,240,13, + 23,46,14,1,0,1,192,3,224,7,128,14,0,24,0,0, + 0,255,240,120,48,120,48,120,32,120,32,120,0,120,0,120, + 0,127,192,120,128,120,0,120,0,120,0,120,16,120,24,120, + 48,255,240,13,23,46,14,1,0,7,0,15,0,31,128,56, + 192,32,96,0,0,255,240,120,48,120,48,120,32,120,32,120, + 0,120,0,120,0,127,192,120,128,120,0,120,0,120,0,120, + 16,120,24,120,48,255,240,13,22,44,14,1,0,28,224,61, + 224,61,224,24,192,0,0,255,240,120,48,120,48,120,32,120, + 32,120,0,120,0,120,0,127,192,120,128,120,0,120,0,120, + 0,120,16,120,24,120,48,255,240,8,23,23,9,0,0,96, + 240,120,28,6,0,127,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,127,8,23,23,9,1,0,6,31,60,112, + 64,0,254,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,9,23,46,9,0,0,28,0,62,0,126,0,227, + 0,129,128,0,0,127,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,127,0,9,22,44,9,0,0,115,128,247, + 128,247,128,99,0,0,0,127,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,127,0,16,17,34,17,0,0,63, + 224,248,120,56,60,56,30,56,30,56,15,56,15,56,15,255, + 143,56,15,56,15,56,15,56,30,56,30,56,60,56,120,255, + 224,18,22,66,18,0,0,3,204,0,7,248,0,15,248,0, + 8,112,0,0,0,0,248,15,192,124,3,0,60,3,0,62, + 3,0,63,3,0,55,131,0,51,195,0,51,195,0,49,227, + 0,48,243,0,48,123,0,48,123,0,48,63,0,48,31,0, + 48,15,0,48,7,0,252,3,0,15,23,46,17,1,0,12, + 0,30,0,15,0,3,128,0,64,0,0,7,192,24,112,48, + 56,48,28,96,28,96,14,224,14,224,14,224,14,224,14,224, + 14,224,12,112,28,112,24,56,24,28,32,7,192,15,23,46, + 17,1,0,0,96,0,240,3,224,7,0,4,0,0,0,7, + 192,24,112,48,56,48,28,96,28,96,14,224,14,224,14,224, + 14,224,14,224,14,224,12,112,28,112,24,56,24,28,32,7, + 192,15,23,46,17,1,0,3,128,7,192,15,224,28,96,16, + 48,0,0,7,192,24,112,48,56,48,28,96,28,96,14,224, + 14,224,14,224,14,224,14,224,14,224,12,112,28,112,24,56, + 24,28,32,7,192,15,22,44,17,1,0,15,24,31,240,31, + 224,48,192,0,0,7,192,24,112,48,56,48,28,96,28,96, + 14,224,14,224,14,224,14,224,14,224,14,224,12,112,28,112, + 24,56,24,28,32,7,192,15,22,44,17,1,0,14,112,30, + 240,30,240,12,96,0,0,7,192,24,112,48,56,48,28,96, + 28,96,14,224,14,224,14,224,14,224,14,224,14,224,12,112, + 28,112,24,56,24,28,32,7,192,9,9,18,11,1,3,193, + 128,227,128,119,0,62,0,28,0,62,0,119,0,227,128,193, + 128,15,18,36,17,1,255,7,238,8,124,56,56,48,60,112, + 124,96,254,224,238,225,206,227,142,227,14,231,14,254,12,124, + 28,124,24,56,48,124,32,239,192,128,0,17,23,69,18,0, + 0,3,0,0,7,128,0,3,192,0,0,224,0,0,48,0, + 0,0,0,254,31,128,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,6,0,56,6, + 0,56,6,0,56,6,0,56,6,0,56,4,0,28,12,0, + 14,24,0,3,224,0,17,23,69,18,0,0,0,56,0,0, + 124,0,0,240,0,1,192,0,3,0,0,0,0,0,254,31, + 128,56,6,0,56,6,0,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,4,0,28,12,0,14,24,0,3,224, + 0,17,23,69,18,0,0,0,224,0,1,224,0,3,240,0, + 7,24,0,4,12,0,0,0,0,254,31,128,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,6,0,56,6, + 0,56,6,0,56,6,0,56,6,0,56,6,0,56,6,0, + 56,4,0,28,12,0,14,24,0,3,224,0,17,22,66,18, + 0,0,3,156,0,7,188,0,7,188,0,3,24,0,0,0, + 0,254,31,128,56,6,0,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,4,0,28,12,0,14,24, + 0,3,224,0,16,23,46,17,0,0,0,48,0,248,1,224, + 3,128,2,0,0,0,248,31,60,14,28,12,14,24,15,24, + 7,48,7,48,3,224,3,224,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,7,240,14,17,34,15,0,0,254,0, + 56,0,56,0,63,192,56,112,56,56,56,28,56,28,56,28, + 56,28,56,56,56,112,59,224,56,0,56,0,56,0,254,0, + 15,20,40,17,0,0,1,240,6,60,12,28,24,14,24,14, + 56,14,56,28,56,56,56,96,56,192,56,192,56,224,56,120, + 56,60,56,30,56,14,57,6,57,134,57,132,249,248,12,20, + 40,13,1,0,56,0,60,0,28,0,14,0,6,0,3,0, + 0,0,0,0,31,128,113,192,241,192,129,192,3,192,63,192, + 113,192,225,192,225,192,227,240,253,224,121,128,12,20,40,13, + 1,0,3,192,3,192,7,128,7,0,14,0,12,0,0,0, + 0,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,12,20,40,13,1,0, + 6,0,15,0,31,0,59,128,48,192,96,64,0,0,0,0, + 31,128,113,192,241,192,129,192,3,192,63,192,113,192,225,192, + 225,192,227,240,253,224,121,128,12,19,38,13,1,0,0,32, + 28,96,63,192,71,192,67,128,0,0,0,0,31,128,113,192, + 241,192,129,192,3,192,63,192,113,192,225,192,225,192,227,240, + 253,224,121,128,12,18,36,13,1,0,57,192,61,224,57,192, + 57,192,0,0,0,0,31,128,113,192,241,192,129,192,3,192, + 63,192,113,192,225,192,225,192,227,240,253,224,121,128,12,19, + 38,13,1,0,15,0,27,0,25,128,27,0,30,0,0,0, + 0,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,18,12,36,20,1,0, + 7,158,0,31,227,0,56,225,128,112,193,128,64,193,128,15, + 255,0,56,192,0,96,192,0,224,224,128,227,241,192,254,127, + 0,124,62,0,11,18,36,12,1,250,15,224,48,192,112,192, + 96,64,224,0,224,0,224,0,224,0,240,64,120,192,63,128, + 31,0,4,0,14,0,15,0,7,0,14,0,24,0,11,20, + 40,13,1,0,60,0,60,0,30,0,14,0,7,0,1,0, + 0,0,0,0,15,0,49,192,112,192,96,224,224,224,255,192, + 224,0,224,0,240,64,120,224,63,192,31,0,11,20,40,13, + 1,0,1,192,3,192,3,128,7,0,6,0,12,0,0,0, + 0,0,15,0,49,192,112,192,96,224,224,224,255,192,224,0, + 224,0,240,64,120,224,63,192,31,0,11,20,40,13,1,0, + 6,0,15,0,31,128,29,128,48,192,32,96,0,0,0,0, + 15,0,49,192,112,192,96,224,224,224,255,192,224,0,224,0, + 240,64,120,224,63,192,31,0,11,18,36,13,1,0,24,192, + 61,224,61,224,57,192,0,0,0,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,8,20,20,8,0,0,240,240,120,24,12,4,0,0, + 28,124,28,28,28,28,28,28,28,28,28,127,7,20,20,8, + 1,0,14,30,28,56,48,96,0,0,56,248,56,56,56,56, + 56,56,56,56,56,254,9,20,40,8,0,0,24,0,60,0, + 126,0,118,0,195,0,129,128,0,0,0,0,28,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,127,0,9,18,36,8,0,0,115,128,247,128,247,128, + 231,0,0,0,0,0,28,0,124,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,127,0,12,19, + 38,14,1,0,12,0,126,112,15,224,15,128,61,192,0,224, + 0,224,15,224,49,240,96,240,96,112,224,112,224,112,224,112, + 224,96,224,96,112,192,56,128,31,0,15,19,38,16,1,0, + 0,16,14,48,31,224,51,224,33,192,0,0,0,0,24,240, + 251,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,12,20,40,14,1,0,28,0,60,0, + 14,0,6,0,3,0,1,128,0,0,0,0,15,128,49,192, + 112,224,96,112,224,112,224,112,224,112,224,112,224,96,112,96, + 56,192,31,0,12,20,40,14,1,0,1,192,3,224,3,128, + 7,0,6,0,12,0,0,0,0,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,12,20,40,14,1,0,7,0,15,0,15,128,29,192, + 56,192,32,96,0,0,0,0,15,128,49,192,112,224,96,112, + 224,112,224,112,224,112,224,112,224,96,112,96,56,192,31,0, + 12,19,38,14,1,0,0,48,30,32,63,224,39,192,65,128, + 0,0,0,0,15,128,49,192,112,224,96,112,224,112,224,112, + 224,112,224,112,224,96,112,96,56,192,31,0,12,18,36,14, + 1,0,28,224,61,224,61,224,24,192,0,0,0,0,15,128, + 49,192,112,224,96,112,224,112,224,112,224,112,224,112,224,96, + 112,96,56,192,31,0,10,10,20,11,1,2,12,0,12,0, + 12,0,0,0,255,192,0,0,0,0,12,0,12,0,12,0, + 12,14,28,14,1,255,0,16,15,176,49,224,112,224,97,240, + 227,112,230,112,230,112,236,112,248,96,112,224,120,192,95,0, + 128,0,15,20,40,15,0,0,14,0,15,0,7,0,3,128, + 1,128,0,192,0,0,0,0,56,56,248,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,250,63,190,30,56, + 15,20,40,15,0,0,0,224,0,240,1,192,1,128,3,0, + 2,0,0,0,0,0,56,56,248,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,250,63,190,30,56,15,20, + 40,15,0,0,3,128,3,192,7,192,14,224,28,112,24,16, + 0,0,0,0,56,56,248,248,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,250,63,190,30,56,15,18,36,15, + 0,0,14,112,14,112,30,240,14,112,0,0,0,0,56,56, + 248,248,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,250,63,190,30,56,15,26,52,14,255,250,0,112,0,240, + 0,224,1,192,1,128,3,0,0,0,0,0,126,62,60,24, + 28,24,30,16,14,48,15,48,7,96,7,96,3,192,3,192, + 3,192,1,128,1,128,3,0,3,0,126,0,124,0,248,0, + 13,26,52,15,1,250,24,0,248,0,56,0,56,0,56,0, + 56,0,56,0,56,0,57,224,63,240,60,112,56,56,56,24, + 56,24,56,24,56,24,56,16,60,48,63,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,15,24,48,14,255,250, + 7,56,15,120,15,120,14,112,0,0,0,0,126,62,60,24, + 28,24,30,16,14,48,15,48,7,96,7,96,3,192,3,192, + 3,192,1,128,1,128,3,0,3,0,126,0,124,0,248,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 16 + Calculated Max Values w=12 h=25 x= 2 y= 9 dx=14 dy= 0 ascent=21 len=50 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =16 descent= 0 + X Font ascent =16 descent= 0 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17n[542] U8G_SECTION(".progmem.u8g_font_gdb17n") = { + 0,42,39,242,246,16,0,0,0,0,42,57,0,21,251,16, + 0,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=23 h=27 x= 3 y=14 dx=23 dy= 0 ascent=22 len=69 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x=-4 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17r[3540] U8G_SECTION(".progmem.u8g_font_gdb17r") = { + 0,42,39,242,246,17,4,81,9,172,32,127,250,22,250,21, + 250,0,0,0,7,0,0,4,21,21,8,2,255,48,240,240, + 240,240,112,112,96,96,96,96,96,96,96,64,0,0,112,240, + 240,224,9,9,18,13,2,11,113,128,231,128,231,128,231,128, + 227,0,227,0,99,0,99,0,99,0,13,15,30,14,1,2, + 2,32,6,96,6,96,6,96,12,96,63,248,76,192,24,128, + 25,128,255,224,51,0,51,0,51,0,35,0,102,0,11,20, + 40,13,1,254,6,0,6,0,31,128,127,224,230,224,198,96, + 198,0,246,0,126,0,63,128,7,192,6,224,6,96,198,96, + 198,96,246,192,255,192,31,0,6,0,6,0,18,17,51,20, + 1,0,0,1,0,60,6,0,102,14,0,195,12,0,195,24, + 0,195,48,0,195,112,0,195,96,0,102,192,0,61,143,0, + 3,144,128,3,48,192,6,48,192,12,48,192,24,48,192,56, + 25,128,48,15,0,17,19,57,18,1,0,7,128,0,25,224, + 0,16,224,0,48,224,0,48,224,0,49,192,0,63,128,0, + 63,0,0,30,0,0,62,63,128,127,29,0,127,140,0,239, + 140,0,231,204,0,227,248,0,225,248,0,96,252,0,112,255, + 0,31,14,128,4,9,9,7,2,11,112,224,224,224,224,224, + 96,96,96,7,25,25,9,2,252,4,14,28,56,48,112,112, + 112,224,224,224,224,224,224,224,224,224,96,112,112,48,56,28, + 12,6,7,25,25,9,0,252,64,224,112,56,24,28,28,28, + 14,14,14,14,14,14,14,14,14,28,28,28,56,56,112,96, + 192,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0,4,13, + 13,7,2,255,112,240,240,224,0,0,0,0,0,112,240,240, + 224,5,17,17,7,1,251,56,120,120,48,0,0,0,0,0, + 48,248,120,56,48,48,96,192,11,9,18,12,1,3,0,96, + 3,192,31,128,252,0,240,0,248,0,63,0,7,192,0,224, + 11,5,10,12,1,5,255,224,0,0,0,0,0,0,255,224, + 11,9,18,12,1,3,192,0,248,0,63,0,7,192,1,224, + 15,192,126,0,240,0,192,0,9,20,40,12,1,255,63,0, + 119,128,227,128,227,128,195,128,3,128,3,0,7,0,6,0, + 14,0,12,0,12,0,12,0,12,0,0,0,0,0,28,0, + 60,0,60,0,56,0,20,23,69,23,2,251,0,252,0,3, + 255,0,14,7,128,24,1,192,48,0,224,32,0,96,96,242, + 112,97,142,48,195,14,48,195,14,48,199,14,48,199,14,48, + 199,14,48,199,14,96,199,158,96,227,255,192,99,239,128,113, + 199,0,120,0,0,60,0,64,31,3,192,15,255,0,3,252, + 0,17,17,51,17,0,0,0,192,0,1,192,0,3,192,0, + 3,224,0,2,224,0,6,240,0,6,112,0,6,112,0,12, + 120,0,12,56,0,15,248,0,24,28,0,24,28,0,16,28, + 0,48,14,0,48,14,0,252,63,128,13,17,34,16,1,0, + 127,192,248,224,56,112,56,112,56,112,56,112,56,224,63,192, + 56,240,56,112,56,56,56,56,56,56,56,56,56,48,56,112, + 255,192,13,17,34,15,1,0,7,240,24,120,48,48,112,0, + 96,0,96,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,0,120,8,60,56,31,224,15,128,16,17,34,17,0,0, + 127,224,248,120,56,60,56,30,56,30,56,15,56,15,56,15, + 56,15,56,15,56,15,56,15,56,30,56,30,56,60,56,120, + 255,224,13,17,34,14,1,0,255,240,120,48,120,48,120,32, + 120,32,120,0,120,0,120,0,127,192,120,128,120,0,120,0, + 120,0,120,16,120,24,120,48,255,240,12,17,34,14,1,0, + 255,240,120,48,120,48,120,48,120,32,120,0,120,0,120,0, + 127,192,120,128,120,0,120,0,120,0,120,0,120,0,120,0, + 254,0,14,17,34,16,1,0,3,240,12,120,48,48,48,0, + 112,0,96,0,224,0,224,0,224,0,224,252,224,56,224,56, + 112,56,112,56,60,56,31,240,7,192,17,17,51,18,0,0, + 254,63,128,60,30,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,63,254,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,7,17,17,9,1,0,254,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,12,22,44,9,252,251, + 7,240,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,128,1,128,51,0,126,0,252,0,16,17,34,17, + 1,0,254,126,56,56,56,48,56,112,56,224,57,192,59,128, + 63,0,63,0,59,128,57,192,57,224,56,240,56,120,56,60, + 56,31,254,30,13,17,34,14,1,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,8,56,24,56,24,255,240,21,17,51,23, + 1,0,248,1,248,56,1,224,60,1,224,60,3,224,62,3, + 224,62,6,224,63,6,224,55,12,224,39,140,224,35,156,224, + 35,152,224,33,216,224,33,240,224,97,240,224,96,224,224,112, + 224,224,248,67,248,18,17,51,18,0,0,248,15,192,124,3, + 0,60,3,0,62,3,0,63,3,0,55,131,0,51,195,0, + 51,195,0,49,227,0,48,243,0,48,123,0,48,123,0,48, + 63,0,48,31,0,48,15,0,48,7,0,252,3,0,15,17, + 34,17,1,0,7,192,24,112,48,56,48,28,96,28,96,14, + 224,14,224,14,224,14,224,14,224,14,224,12,112,28,112,24, + 56,24,28,32,7,192,14,17,34,15,0,0,127,224,248,120, + 56,56,56,28,56,28,56,28,56,28,56,56,60,112,59,224, + 56,0,56,0,56,0,56,0,56,0,56,0,254,0,18,22, + 66,17,1,251,7,192,0,24,112,0,48,56,0,48,28,0, + 96,28,0,96,14,0,224,14,0,224,14,0,224,14,0,224, + 14,0,224,14,0,224,14,0,112,28,0,112,28,0,56,24, + 0,28,48,0,7,192,0,0,112,0,0,60,64,0,31,192, + 0,15,128,0,3,0,16,17,34,16,0,0,63,192,248,112, + 56,56,56,56,56,56,56,56,56,112,63,240,63,192,57,192, + 56,224,56,224,56,112,56,120,56,60,56,63,254,30,12,17, + 34,14,1,0,15,240,48,240,64,32,192,0,224,0,248,0, + 126,0,63,128,31,192,7,224,0,240,0,112,0,48,192,48, + 192,32,240,64,255,128,15,17,34,16,0,0,255,254,195,134, + 195,134,131,134,131,132,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,7,192,15,224,17,17, + 51,18,0,0,254,31,128,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,4,0,28,12, + 0,14,24,0,3,224,0,18,17,51,18,0,0,254,15,192, + 56,7,0,60,6,0,28,6,0,28,6,0,30,12,0,14, + 12,0,15,24,0,7,24,0,7,24,0,7,176,0,3,176, + 0,3,176,0,1,224,0,1,224,0,1,224,0,0,128,0, + 23,17,51,23,0,0,254,24,126,56,24,24,56,56,24,56, + 60,16,28,60,48,28,110,48,28,110,48,28,110,48,14,199, + 96,14,199,96,14,135,96,15,131,224,15,131,224,7,1,192, + 7,1,192,7,1,192,6,0,128,17,17,51,17,0,0,255, + 63,0,60,12,0,28,24,0,30,24,0,15,48,0,7,112, + 0,7,224,0,3,192,0,1,192,0,3,224,0,3,240,0, + 6,112,0,12,120,0,12,60,0,24,28,0,56,30,0,252, + 63,128,16,17,34,17,0,0,248,31,60,14,28,12,14,24, + 15,24,7,48,7,48,3,224,3,224,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,7,240,13,17,34,15,1,0, + 127,248,96,240,64,240,193,224,1,192,3,192,7,128,7,128, + 15,0,15,0,30,0,60,0,60,0,120,24,120,24,240,24, + 255,248,6,25,25,9,3,252,252,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 252,11,25,50,13,1,252,192,0,192,0,224,0,96,0,112, + 0,112,0,48,0,56,0,24,0,24,0,28,0,12,0,14, + 0,6,0,6,0,7,0,3,0,3,0,3,128,1,128,1, + 192,0,192,0,192,0,224,0,96,6,25,25,8,0,252,252, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,252,11,13,26,13,1,7,6,0, + 14,0,14,0,15,0,27,0,19,0,17,128,49,128,33,192, + 96,192,96,192,64,96,192,64,11,1,2,13,1,253,255,224, + 6,6,6,9,0,14,224,240,112,56,24,12,12,12,24,13, + 1,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,14,20,40,15,0,0, + 24,0,248,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,240,59,248,62,56,56,28,56,12,56,12,56,12,56,8, + 56,8,60,16,63,224,7,128,11,12,24,12,1,0,15,224, + 48,192,112,192,96,64,224,0,224,0,224,0,224,0,240,64, + 120,224,63,192,31,0,14,20,40,15,1,0,0,48,1,240, + 0,112,0,112,0,112,0,112,0,112,0,112,15,240,48,240, + 96,112,96,112,224,112,224,112,224,112,240,112,248,240,127,244, + 63,124,30,48,11,12,24,13,1,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,11,19,38,9,1,0,3,224,12,192,24,0,24,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,255,0,14,18, + 36,15,0,250,15,140,16,252,32,112,96,48,96,48,112,48, + 56,96,31,128,28,0,124,0,127,224,63,248,127,252,240,60, + 224,28,224,24,112,48,31,192,15,20,40,16,1,0,24,0, + 248,0,56,0,56,0,56,0,56,0,56,0,56,0,56,240, + 59,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,7,18,18,8,1,0,56,120,112,0, + 0,0,56,248,56,56,56,56,56,56,56,56,56,254,10,24, + 48,8,252,250,1,192,3,192,3,128,0,0,0,0,0,0, + 3,128,15,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,0,102,0, + 252,0,120,0,14,20,40,15,1,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,252,56,112,56,224, + 57,128,59,0,63,0,59,128,57,192,56,224,56,240,56,120, + 252,60,7,20,20,8,1,0,24,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,23,12,36,23, + 0,0,25,241,240,251,255,248,62,62,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,254,254,15,12,24,16,1,0,24,240,251,248, + 62,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,254,12,12,24,14,1,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,13,18,36,15,1,250,25,224,251,240,60,112,56,56, + 56,24,56,24,56,24,56,24,56,16,60,48,63,224,59,192, + 56,0,56,0,56,0,56,0,56,0,254,0,14,18,36,15, + 1,250,15,16,48,240,96,112,96,112,224,112,224,112,224,112, + 240,112,248,240,127,240,127,112,28,112,0,112,0,112,0,112, + 0,112,0,112,1,252,11,12,24,12,1,0,49,224,247,224, + 124,192,120,64,120,64,120,0,120,0,120,0,120,0,120,0, + 120,0,254,0,9,12,24,11,1,0,62,0,71,0,194,0, + 224,0,248,0,126,0,63,0,15,128,131,128,193,128,225,0, + 254,0,10,17,34,10,0,0,8,0,24,0,56,0,56,0, + 56,0,255,192,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,128,63,192,30,0,15,12,24,15,0,0, + 56,56,248,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,250,63,190,30,56,14,12,24,14,0,0,252,124, + 120,48,56,48,60,32,28,96,30,96,14,192,14,192,7,128, + 7,128,7,128,3,0,19,12,36,19,0,0,252,33,224,120, + 96,192,56,112,192,56,241,128,28,249,128,28,185,128,29,159, + 0,15,31,0,15,31,0,15,14,0,6,14,0,4,4,0, + 14,12,24,14,0,0,254,252,60,112,28,96,30,192,15,128, + 7,128,7,128,15,192,25,224,24,240,48,120,249,252,15,18, + 36,14,255,250,126,62,60,24,28,24,30,16,14,48,15,48, + 7,96,7,96,3,192,3,192,3,192,1,128,1,128,3,0, + 3,0,126,0,124,0,248,0,11,12,24,13,1,0,127,224, + 67,192,67,192,135,128,15,0,15,0,30,0,60,0,56,32, + 120,96,240,96,255,224,7,25,25,9,1,252,2,14,28,56, + 56,56,56,28,28,28,28,56,240,248,28,28,28,28,56,56, + 56,56,28,14,6,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,7,25,25,9,1,252,192,224,112,56, + 56,56,56,112,112,112,112,62,30,56,112,112,112,112,56,56, + 56,56,112,224,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=18 dx=28 dy= 0 ascent=28 len=112 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x=-5 y=-9 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20[10077] U8G_SECTION(".progmem.u8g_font_gdb20") = { + 0,49,47,240,244,20,5,86,12,137,32,255,248,28,247,25, + 248,0,0,0,8,0,0,5,24,24,10,2,255,24,120,120, + 120,120,120,120,120,120,112,112,112,112,48,48,48,48,0,0, + 112,248,248,248,112,11,10,20,15,2,13,56,224,243,224,241, + 224,241,192,113,192,113,192,113,192,113,192,112,192,96,192,15, + 18,36,16,1,2,1,140,3,152,3,24,3,24,3,56,63, + 254,63,254,6,112,14,96,12,96,12,96,127,252,255,248,24, + 192,24,192,57,128,49,128,49,128,14,25,50,16,1,253,3, + 0,3,0,3,0,31,240,63,248,115,120,227,56,227,16,243, + 0,255,0,127,0,63,224,15,240,3,248,3,124,3,28,195, + 28,195,28,227,28,251,120,255,240,63,224,3,0,3,0,3, + 0,21,20,60,23,1,0,0,0,96,30,0,192,115,129,192, + 97,131,128,225,195,0,225,198,0,225,206,0,225,220,0,97, + 152,0,115,176,0,30,113,224,0,231,112,1,198,48,1,142, + 56,3,142,56,7,14,56,14,14,56,12,6,48,28,7,48, + 56,3,192,21,23,69,22,1,0,1,240,0,7,120,0,14, + 60,0,14,60,0,30,60,0,30,124,0,30,120,0,31,240, + 0,31,224,0,15,192,0,15,128,0,31,143,248,63,195,160, + 123,225,128,123,241,128,241,249,128,240,251,0,240,127,0,240, + 126,0,248,63,0,120,31,240,63,247,240,15,195,192,5,10, + 10,9,2,13,56,240,240,240,112,112,112,112,112,96,9,30, + 60,11,2,251,1,0,3,128,6,0,14,0,28,0,60,0, + 56,0,120,0,120,0,112,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 120,0,56,0,60,0,28,0,30,0,14,0,7,0,1,128, + 9,30,60,11,0,251,64,0,240,0,56,0,60,0,28,0, + 30,0,14,0,15,0,15,0,15,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,0,15,0, + 15,0,15,0,14,0,30,0,28,0,56,0,48,0,96,0, + 192,0,12,13,26,14,1,11,3,0,15,0,70,64,102,112, + 246,240,63,192,15,0,63,224,254,240,230,112,70,32,7,0, + 14,0,12,12,24,13,1,3,6,0,6,0,6,0,6,0, + 6,0,127,240,255,224,6,0,6,0,6,0,6,0,6,0, + 6,10,10,9,2,250,56,252,252,60,60,56,56,112,96,192, + 10,2,4,11,1,7,255,192,255,128,5,5,5,9,2,255, + 112,248,248,248,112,14,30,60,15,1,251,0,28,0,56,0, + 56,0,120,0,112,0,112,0,224,0,224,0,224,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,28,0,28,0,28,0,56,0,56,0,120,0,112,0,112, + 0,224,0,224,0,192,0,14,18,36,16,1,0,7,192,24, + 224,56,112,112,120,112,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,56,112,56,120,56,56,112,28,96,15, + 128,13,19,38,16,2,0,1,128,15,128,127,128,239,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,224,127,248,13,19,38, + 16,1,0,15,224,56,240,120,120,240,120,112,120,0,120,0, + 240,0,240,1,224,1,192,3,128,7,0,14,0,28,8,28, + 8,56,24,127,248,255,248,255,248,13,19,38,16,1,0,31, + 128,121,224,112,240,240,240,64,240,0,240,1,224,7,192,15, + 192,3,240,0,240,0,120,0,120,0,120,0,120,128,240,192, + 240,127,224,31,128,14,19,38,17,1,0,0,48,1,240,1, + 240,3,240,7,240,6,240,12,240,12,240,24,240,56,240,48, + 240,96,240,255,252,255,248,0,240,0,240,0,240,1,248,7, + 252,13,19,38,16,1,0,63,248,63,240,63,224,112,0,112, + 0,96,0,96,0,127,128,127,224,97,240,0,248,0,120,0, + 120,0,120,0,120,0,112,128,240,193,224,127,128,14,20,40, + 16,1,0,0,112,3,240,7,128,15,0,28,0,60,0,120, + 0,120,0,115,224,255,240,252,120,240,124,240,60,240,60,240, + 60,112,60,120,56,56,56,28,112,7,192,13,19,38,16,2, + 0,255,248,255,248,255,240,192,48,128,96,128,96,0,224,0, + 192,1,192,1,128,3,128,3,128,7,0,7,0,14,0,14, + 0,30,0,28,0,56,0,14,19,38,16,1,0,15,192,24, + 240,48,120,112,120,112,120,120,120,126,240,63,192,31,224,15, + 240,63,248,120,252,248,124,240,60,240,60,240,56,112,56,56, + 112,31,192,14,20,40,16,1,255,7,192,24,240,56,120,112, + 120,240,60,240,60,240,60,240,60,248,60,124,124,63,252,31, + 60,0,56,0,120,0,112,0,240,1,224,7,128,63,0,56, + 0,5,16,16,9,2,255,112,248,248,248,112,0,0,0,0, + 0,0,112,248,248,248,112,6,21,21,9,2,250,112,248,248, + 248,112,0,0,0,0,0,0,56,252,252,60,60,56,56,112, + 96,192,13,10,20,15,1,4,0,24,0,240,7,240,63,128, + 252,0,248,0,127,0,15,224,1,248,0,48,13,7,14,15, + 1,5,255,248,255,240,0,0,0,0,0,0,255,248,255,240, + 13,10,20,15,1,4,96,0,252,0,63,128,7,240,0,248, + 1,240,15,224,127,0,248,0,192,0,12,24,48,15,1,255, + 31,192,121,224,240,240,240,240,240,240,192,240,0,240,1,224, + 1,192,3,192,3,128,7,0,7,0,6,0,6,0,6,0, + 0,0,0,0,0,0,14,0,31,0,31,0,31,0,14,0, + 26,28,112,28,1,249,0,31,192,0,0,255,248,0,3,255, + 252,0,7,224,62,0,15,128,15,0,30,0,7,128,60,30, + 35,128,60,49,225,128,120,97,225,192,120,225,224,192,240,225, + 224,192,241,225,224,192,241,225,224,192,241,225,224,192,241,225, + 224,192,241,225,225,128,241,225,225,128,248,243,227,0,120,255, + 254,0,120,125,252,0,124,56,240,0,62,0,0,0,62,0, + 2,0,31,128,6,0,15,224,63,0,7,255,248,0,1,255, + 240,0,0,63,128,0,20,20,60,20,0,0,0,32,0,0, + 240,0,0,240,0,1,248,0,1,248,0,1,248,0,3,188, + 0,3,60,0,3,60,0,7,30,0,6,30,0,14,31,0, + 15,255,0,12,7,0,28,7,128,24,7,128,24,3,128,56, + 3,192,56,3,192,254,15,240,17,20,60,19,1,0,63,224, + 0,252,120,0,60,60,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,60,0,60,120,0,63,248,0,60,30,0,60, + 15,0,60,15,0,60,7,128,60,7,128,60,7,128,60,7, + 128,60,15,0,124,30,0,255,248,0,16,20,40,18,1,0, + 1,254,6,31,28,14,56,4,56,0,112,0,112,0,240,0, + 240,0,240,0,240,0,240,0,240,0,248,0,120,0,124,3, + 63,14,31,252,15,248,3,224,18,20,60,20,1,0,63,240, + 0,252,60,0,60,14,0,60,15,0,60,7,128,60,7,128, + 60,3,192,60,3,192,60,3,192,60,3,192,60,3,192,60, + 3,192,60,3,192,60,3,128,60,7,128,60,7,128,60,15, + 0,60,14,0,124,28,0,255,240,0,15,20,40,17,1,0, + 255,252,124,12,60,12,60,12,60,12,60,0,60,0,60,0, + 60,0,63,240,60,32,60,0,60,0,60,0,60,0,60,0, + 60,2,60,6,124,14,255,254,14,20,40,16,1,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,126,0,255,0,18,20,60,19,1,0,1,254,0,6, + 15,0,28,6,0,56,4,0,56,0,0,120,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,127,192,240,127,192, + 240,15,0,240,15,0,120,15,0,120,15,0,60,15,0,30, + 15,0,15,254,0,3,240,0,20,20,60,22,1,0,255,15, + 240,126,7,224,60,3,192,60,3,192,60,3,192,60,3,192, + 60,3,192,60,3,192,60,3,192,63,255,192,60,3,192,60, + 3,192,60,3,192,60,3,192,60,3,192,60,3,192,60,3, + 192,60,3,192,126,7,224,255,15,240,8,20,20,10,1,0, + 255,126,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,126,255,14,27,54,11,252,249,7,252,1,248,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,224,1,224,49,192,127,128,255,0,60,0, + 19,20,60,20,1,0,255,31,192,126,15,0,60,14,0,60, + 28,0,60,56,0,60,112,0,60,224,0,60,224,0,61,192, + 0,63,128,0,63,192,0,61,224,0,60,240,0,60,120,0, + 60,60,0,60,62,0,60,31,0,60,15,128,126,7,224,255, + 3,128,15,20,40,16,1,0,255,0,126,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 25,20,80,27,1,0,252,0,31,128,62,0,62,0,62,0, + 62,0,62,0,126,0,63,0,126,0,55,0,254,0,55,128, + 222,0,55,129,222,0,51,193,158,0,51,195,158,0,49,195, + 158,0,49,227,30,0,48,231,30,0,48,246,30,0,48,254, + 30,0,48,124,30,0,48,124,30,0,48,56,30,0,120,56, + 63,0,252,24,127,128,19,20,60,21,1,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,20,60,20,1,0,3,240, + 0,12,28,0,28,14,0,56,7,0,56,7,128,112,7,128, + 112,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,248,3,128,120,7,128,120,7,0,60,15, + 0,30,30,0,15,248,0,3,224,0,16,20,40,18,1,0, + 63,240,252,60,60,30,60,15,60,15,60,15,60,15,60,15, + 60,14,60,30,62,60,61,240,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,128,21,25,75,20,1,251,3,240, + 0,14,28,0,28,14,0,56,15,0,56,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,128,120,3,128,120,7,128,60,7, + 0,28,14,0,14,28,0,3,248,0,0,60,0,0,15,8, + 0,7,248,0,3,240,0,0,224,18,20,60,19,1,0,63, + 224,0,252,120,0,60,60,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,60,0,60,252,0,63,240,0,63,224,0, + 60,240,0,60,112,0,60,120,0,60,60,0,60,62,0,60, + 30,0,60,15,0,126,15,192,255,7,128,13,20,40,16,2, + 0,15,224,48,224,96,96,224,0,224,0,240,0,252,0,127, + 0,127,192,31,224,15,240,3,248,0,248,0,120,128,120,192, + 120,192,112,224,224,255,192,63,0,18,20,60,19,0,0,255, + 255,192,193,225,192,193,224,192,193,224,192,129,224,128,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,3,240,0,7,248,0,19,20,60,21,1, + 0,255,7,224,126,3,192,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,3, + 0,30,3,0,15,6,0,7,252,0,3,240,0,21,20,60, + 21,0,0,255,3,248,60,0,224,60,0,192,30,0,192,30, + 1,128,15,1,128,15,3,128,15,3,0,7,131,0,7,135, + 0,3,198,0,3,198,0,3,206,0,1,236,0,1,236,0, + 0,248,0,0,248,0,0,248,0,0,112,0,0,96,0,27, + 20,80,27,0,0,255,6,15,224,60,6,3,192,28,15,3, + 128,28,15,3,0,28,15,3,0,30,31,131,0,30,27,131, + 0,14,27,199,0,14,59,198,0,15,49,198,0,15,49,230, + 0,7,112,238,0,7,96,252,0,7,224,252,0,7,192,124, + 0,3,192,124,0,3,192,60,0,3,128,56,0,3,128,56, + 0,3,0,16,0,20,20,60,20,0,0,127,143,224,62,3, + 128,30,7,0,15,6,0,15,142,0,7,140,0,3,220,0, + 3,248,0,1,240,0,0,240,0,0,248,0,1,248,0,3, + 188,0,3,190,0,7,30,0,6,15,0,14,15,128,28,7, + 128,60,7,192,254,31,240,19,20,60,20,0,0,252,7,224, + 60,3,192,30,3,128,15,3,0,15,7,0,7,134,0,3, + 142,0,3,204,0,1,220,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,1,248,0,3,252,0,15,20,40,17,1,0,127, + 254,96,62,96,124,64,124,64,248,0,240,1,240,1,224,3, + 224,7,192,7,192,15,128,15,0,31,0,62,0,62,2,124, + 2,124,6,248,6,255,254,9,30,60,11,2,251,255,128,255, + 128,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,255,128,255,128,13,30,60,15,1,251,192, + 0,224,0,224,0,112,0,112,0,48,0,56,0,56,0,28, + 0,28,0,28,0,14,0,14,0,6,0,7,0,7,0,3, + 128,3,128,3,128,1,192,1,192,0,192,0,224,0,224,0, + 112,0,112,0,112,0,56,0,56,0,24,9,30,60,11,0, + 251,255,128,255,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,255,128,255,128,12,15,30, + 16,2,9,2,0,6,0,15,0,15,0,27,0,27,128,17, + 128,49,192,49,192,96,192,96,224,96,96,192,112,192,48,128, + 32,14,2,4,15,1,252,255,252,255,248,7,8,8,10,0, + 16,112,240,120,56,60,28,14,6,14,15,30,16,1,0,31, + 192,112,224,240,240,192,240,0,240,3,240,31,240,63,240,120, + 240,240,240,240,240,240,240,251,252,126,248,56,96,16,24,48, + 17,0,0,12,0,252,0,124,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,120,61,252,63,254,63,30,60,15,60, + 7,60,7,60,7,60,7,60,6,60,14,62,28,63,248,31, + 240,7,192,13,15,30,15,1,0,3,248,12,120,56,48,112, + 16,112,0,240,0,240,0,240,0,240,0,248,0,248,8,124, + 56,63,240,31,224,15,128,16,24,48,18,1,0,0,28,0, + 252,0,60,0,60,0,60,0,60,0,60,0,60,0,60,7, + 252,24,124,56,60,112,60,112,60,240,60,240,60,240,60,240, + 60,248,60,248,60,124,124,127,255,63,190,30,24,13,15,30, + 15,1,0,7,192,24,224,56,112,112,120,112,120,240,120,255, + 240,240,0,240,0,240,0,248,8,124,56,127,240,63,224,15, + 128,13,24,48,11,1,0,1,240,7,248,14,112,28,32,28, + 0,60,0,60,0,60,0,60,0,255,192,60,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,127,0,255,128,16,23,46,17,0,248,7,227,28, + 127,56,126,120,60,120,60,120,60,120,60,60,56,60,112,15, + 192,14,0,28,0,31,192,63,252,15,254,31,255,120,127,240, + 15,240,14,240,14,120,28,63,248,15,192,17,24,72,18,1, + 0,12,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,120,0,61, + 252,0,63,254,0,63,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,126,63,0,255,127,128,8,21,21,10,1,0,28, + 62,62,28,0,0,28,252,124,60,60,60,60,60,60,60,60, + 60,60,126,255,12,29,58,9,251,248,0,224,1,240,1,240, + 0,224,0,0,0,0,0,224,7,224,3,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,192,1,192,99,128,255,0, + 254,0,120,0,17,24,72,18,1,0,12,0,0,252,0,0, + 124,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,63,128,60,30,0,60,60,0,60,112, + 0,60,224,0,61,192,0,63,192,0,63,224,0,61,224,0, + 60,240,0,60,120,0,60,60,0,60,62,0,126,31,128,255, + 15,0,8,24,24,10,1,0,12,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 26,15,60,28,1,0,28,120,60,0,252,252,254,0,127,255, + 255,0,63,31,143,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,126,63,31,128,255,127, + 191,192,17,15,45,18,1,0,12,60,0,252,252,0,127,254, + 0,63,30,0,62,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,15,15,30,17,1,0,7,224,24,112,56, + 56,112,60,112,30,240,30,240,30,240,30,240,30,240,30,240, + 28,120,28,56,56,28,48,15,192,16,23,46,18,1,248,12, + 120,252,252,127,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,62,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,23,69, + 18,1,248,3,194,0,12,54,0,56,30,0,112,30,0,112, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,248,30, + 0,248,30,0,124,126,0,127,254,0,63,222,0,15,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,63,0,0,255,128,13,15,30,14,1,0,24,240, + 249,248,123,248,62,48,60,48,60,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,11,15,30,13, + 1,0,31,192,97,192,225,128,224,128,248,0,254,0,127,128, + 127,192,31,224,7,224,129,224,192,224,192,192,224,192,255,0, + 11,20,40,12,0,0,4,0,28,0,60,0,60,0,60,0, + 255,224,60,64,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,96,63,224,31,128,14,0,17,15, + 45,18,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,16,15,30,16,0,0,254,31,124,14,60,12,60,12,30, + 28,30,24,15,24,15,48,7,48,7,240,7,224,3,224,3, + 192,1,192,1,128,23,15,45,23,0,0,254,24,62,124,24, + 28,60,28,24,60,60,24,28,62,48,30,126,48,30,111,48, + 14,111,112,15,199,96,15,199,224,7,195,224,7,131,192,7, + 131,192,3,1,192,2,1,128,16,15,30,17,0,0,255,63, + 62,28,30,24,15,48,15,240,7,224,3,192,3,224,3,224, + 6,240,14,248,28,120,24,60,120,62,252,127,17,23,69,16, + 255,248,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,13,15,30,15,1,0,127,248,96, + 248,65,240,65,224,3,224,7,192,7,128,15,128,15,0,31, + 0,62,16,60,24,124,24,248,24,255,248,9,30,60,12,2, + 251,1,0,7,128,14,0,28,0,60,0,60,0,60,0,60, + 0,62,0,30,0,30,0,30,0,30,0,60,0,120,0,252, + 0,60,0,30,0,30,0,30,0,30,0,62,0,60,0,60, + 0,60,0,60,0,28,0,30,0,7,0,1,128,2,32,32, + 7,3,250,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,128,9,30,60,12,1,251,64,0,240,0,60,0,28, + 0,30,0,30,0,30,0,30,0,62,0,60,0,60,0,60, + 0,60,0,30,0,31,128,15,0,30,0,60,0,60,0,60, + 0,60,0,62,0,30,0,30,0,30,0,30,0,28,0,56, + 0,112,0,192,0,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,8,0,0,5,24, + 24,10,2,247,112,248,248,248,112,0,0,48,48,48,48,112, + 112,112,112,120,120,120,120,120,120,120,120,96,13,20,40,16, + 2,255,3,0,3,0,3,0,15,248,31,248,59,56,115,16, + 227,0,227,0,227,0,227,0,227,0,227,0,115,24,123,48, + 63,224,31,192,3,0,3,0,3,0,14,19,38,16,1,0, + 1,252,6,60,14,28,28,12,28,8,60,0,60,0,60,0, + 60,0,255,224,60,0,60,0,60,0,60,4,56,4,56,12, + 127,252,255,252,128,48,12,13,26,16,2,3,192,48,239,112, + 112,224,48,192,96,96,96,96,96,96,96,96,112,224,57,192, + 111,96,192,48,128,16,18,19,57,16,255,0,248,31,192,252, + 15,128,62,6,0,30,14,0,31,12,0,15,156,0,7,152, + 0,7,248,0,3,240,0,3,240,0,3,240,0,1,224,0, + 63,255,0,1,224,0,1,224,0,1,224,0,1,224,0,3, + 240,0,7,248,0,2,32,32,7,3,250,64,192,192,192,192, + 192,192,192,192,192,192,192,192,192,128,0,0,64,192,192,192, + 192,192,192,192,192,192,192,192,192,192,128,12,22,44,16,2, + 0,15,192,49,224,112,224,112,64,124,0,126,0,63,128,127, + 192,99,224,225,240,224,240,240,112,252,112,127,112,63,224,31, + 192,7,224,65,224,64,224,224,224,240,192,127,0,11,5,10, + 13,1,17,112,224,241,224,241,224,241,224,225,192,21,21,63, + 23,1,0,1,252,0,7,7,0,12,1,128,24,0,192,48, + 126,96,96,199,48,97,134,48,195,2,24,199,0,24,199,0, + 24,199,0,24,199,0,24,199,0,24,199,128,24,99,199,48, + 97,252,48,48,248,96,16,0,64,8,1,128,6,3,0,1, + 252,0,7,11,11,9,1,9,60,204,140,60,108,204,206,252, + 0,0,254,14,15,30,16,1,0,2,8,6,28,12,56,28, + 112,56,112,120,224,241,224,243,192,241,224,120,224,56,112,28, + 112,12,56,6,24,2,12,13,7,14,16,2,3,255,248,255, + 248,0,24,0,24,0,24,0,24,0,16,10,2,4,11,1, + 7,255,192,255,128,12,11,22,11,0,11,31,128,48,192,126, + 96,219,48,219,48,222,48,219,48,217,48,100,224,48,192,31, + 128,14,3,6,16,1,18,127,248,127,252,255,248,7,8,8, + 11,2,12,60,126,70,198,198,204,252,120,12,15,30,13,1, + 2,6,0,6,0,6,0,6,0,6,0,127,240,255,224,6, + 0,6,0,6,0,6,0,4,0,0,0,255,240,255,224,8, + 11,11,11,2,10,62,115,227,3,6,6,12,24,49,97,255, + 9,11,22,11,1,10,62,0,231,0,231,0,7,0,28,0, + 63,0,7,128,3,128,3,128,199,0,126,0,8,8,8,10, + 3,16,28,30,63,60,120,112,224,192,18,23,69,19,1,248, + 28,6,0,252,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,62,62,0,63,255,128,63,223,192,51,142,0,48,0,0, + 48,0,0,56,0,0,56,0,0,56,0,0,60,0,0,62, + 0,0,48,0,0,17,24,72,19,1,252,15,255,128,60,127, + 0,120,102,0,112,102,0,240,102,0,240,102,0,240,102,0, + 240,102,0,120,102,0,120,102,0,60,102,0,15,230,0,0, + 102,0,0,102,0,0,102,0,0,102,0,0,102,0,0,102, + 0,0,102,0,0,102,0,0,102,0,0,102,0,0,255,0, + 1,255,128,5,5,5,7,1,8,112,248,248,248,112,7,7, + 7,7,0,249,24,48,60,62,30,60,240,8,11,11,11,2, + 10,8,248,24,24,24,24,24,24,24,24,255,7,11,11,9, + 1,9,56,76,198,198,198,198,198,108,56,0,254,13,15,30, + 16,2,0,129,0,195,128,97,128,112,192,56,224,60,112,30, + 120,30,120,30,120,60,112,56,224,112,192,97,192,193,128,131, + 0,17,19,57,20,2,0,48,3,128,240,3,0,48,6,0, + 48,12,0,48,28,0,48,24,0,48,48,0,48,96,0,120, + 224,0,132,193,0,1,135,0,3,15,0,7,11,0,6,19, + 0,12,51,0,24,63,128,56,67,0,48,3,0,224,15,128, + 17,19,57,20,2,0,48,1,128,240,3,0,48,7,0,48, + 6,0,48,12,0,48,24,0,48,56,0,48,48,0,120,96, + 0,132,192,0,1,207,0,1,153,128,3,49,128,7,1,0, + 14,3,0,12,6,0,24,12,0,56,24,128,112,63,128,18, + 19,57,20,1,0,60,1,192,102,1,128,70,3,0,12,6, + 0,28,14,0,6,12,0,6,24,0,134,48,0,124,112,0, + 0,96,128,0,195,128,1,135,128,3,133,128,3,9,128,6, + 25,128,12,31,192,28,33,128,24,1,128,112,7,192,13,23, + 46,15,1,248,7,0,15,128,15,128,15,128,7,0,0,0, + 0,0,3,0,3,0,3,0,7,0,6,0,14,0,28,0, + 60,0,120,0,112,0,240,24,240,120,240,120,240,120,120,240, + 63,192,20,28,84,20,0,0,3,0,0,7,128,0,7,192, + 0,15,224,0,1,224,0,0,112,0,0,24,0,0,0,0, + 0,32,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 248,0,3,188,0,3,60,0,3,60,0,7,30,0,6,30, + 0,14,31,0,15,255,0,12,7,0,28,7,128,24,7,128, + 24,3,128,56,3,192,56,3,192,254,15,240,20,28,84,20, + 0,0,0,8,0,0,30,0,0,62,0,0,124,0,0,240, + 0,1,224,0,1,128,0,0,0,0,0,32,0,0,240,0, + 0,240,0,1,248,0,1,248,0,1,248,0,3,188,0,3, + 60,0,3,60,0,7,30,0,6,30,0,14,31,0,15,255, + 0,12,7,0,28,7,128,24,7,128,24,3,128,56,3,192, + 56,3,192,254,15,240,20,27,81,20,0,0,0,224,0,0, + 240,0,1,248,0,3,252,0,7,14,0,4,6,0,0,0, + 0,0,32,0,0,240,0,0,240,0,1,248,0,1,248,0, + 1,248,0,3,188,0,3,60,0,3,60,0,7,30,0,6, + 30,0,14,31,0,15,255,0,12,7,0,28,7,128,24,7, + 128,24,3,128,56,3,192,56,3,192,254,15,240,20,26,78, + 20,0,0,3,195,0,7,254,0,7,254,0,12,124,0,8, + 0,0,0,0,0,0,32,0,0,240,0,0,240,0,1,248, + 0,1,248,0,1,248,0,3,188,0,3,60,0,3,60,0, + 7,30,0,6,30,0,14,31,0,15,255,0,12,7,0,28, + 7,128,24,7,128,24,3,128,56,3,192,56,3,192,254,15, + 240,20,26,78,20,0,0,6,12,0,15,30,0,15,30,0, + 15,30,0,14,28,0,0,0,0,0,32,0,0,240,0,0, + 240,0,1,248,0,1,248,0,1,248,0,3,188,0,3,60, + 0,3,60,0,7,30,0,6,30,0,14,31,0,15,255,0, + 12,7,0,28,7,128,24,7,128,24,3,128,56,3,192,56, + 3,192,254,15,240,20,27,81,20,0,0,0,112,0,1,152, + 0,1,152,0,1,144,0,0,224,0,0,0,0,0,0,0, + 0,32,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 248,0,3,188,0,3,60,0,3,60,0,7,30,0,6,30, + 0,14,31,0,15,255,0,12,7,0,28,7,128,24,7,128, + 24,3,128,56,3,192,56,3,192,254,15,240,25,20,80,26, + 0,0,3,255,255,0,0,255,3,0,0,255,3,0,0,239, + 3,0,0,239,3,0,1,207,0,0,1,207,0,0,3,143, + 0,0,3,143,0,0,3,255,254,0,7,15,4,0,6,15, + 0,0,14,15,0,0,14,15,0,0,12,15,0,0,28,15, + 0,0,24,15,0,128,24,15,1,128,56,31,1,128,254,63, + 255,128,16,27,54,18,1,249,1,254,6,31,28,14,56,4, + 56,0,112,0,112,0,240,0,240,0,240,0,240,0,240,0, + 240,0,248,0,120,0,124,1,126,7,63,254,31,252,15,240, + 0,192,1,192,1,240,0,240,0,240,1,224,3,128,15,28, + 56,17,1,0,8,0,28,0,62,0,31,0,7,128,1,192, + 0,64,0,0,255,252,124,12,60,12,60,12,60,12,60,0, + 60,0,60,0,60,0,63,240,60,32,60,0,60,0,60,0, + 60,0,60,0,60,2,60,6,124,14,255,254,15,28,56,17, + 1,0,0,96,0,240,1,248,1,240,3,192,7,0,12,0, + 0,0,255,252,124,12,60,12,60,12,60,12,60,0,60,0, + 60,0,60,0,63,240,60,32,60,0,60,0,60,0,60,0, + 60,0,60,2,60,6,124,14,255,254,15,27,54,17,1,0, + 3,128,7,192,15,192,31,224,28,112,48,24,0,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,2, + 60,6,124,14,255,254,15,26,52,17,1,0,56,112,56,112, + 120,240,120,240,48,96,0,0,255,252,124,12,60,12,60,12, + 60,12,60,0,60,0,60,0,60,0,63,240,60,32,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 9,28,56,10,0,0,32,0,240,0,248,0,124,0,30,0, + 15,0,3,0,0,0,127,128,63,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,63,0,127,128,10,28, + 56,10,1,0,2,0,7,128,15,192,31,0,62,0,120,0, + 96,0,0,0,255,0,126,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,10,27,54,10, + 0,0,12,0,30,0,63,0,127,128,225,192,192,64,0,0, + 127,128,63,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,127,128,11,26,52,10,255,0,112,224, + 241,224,241,224,241,224,96,192,0,0,63,192,31,128,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,31,128, + 63,192,18,20,60,20,1,0,63,240,0,252,60,0,60,14, + 0,60,15,0,60,7,128,60,7,128,60,3,192,60,3,192, + 60,3,192,255,195,192,60,3,192,60,3,192,60,3,192,60, + 3,128,60,7,128,60,7,128,60,15,0,60,14,0,124,28, + 0,255,240,0,19,26,78,21,1,0,3,195,0,7,254,0, + 15,252,0,12,120,0,24,0,0,0,0,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,28,84,20,1,0,2,0, + 0,15,0,0,15,128,0,7,192,0,3,224,0,0,240,0, + 0,48,0,0,0,0,3,240,0,12,28,0,28,14,0,56, + 7,0,56,7,128,112,7,128,112,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,248,3,128, + 120,7,128,120,7,0,60,15,0,30,30,0,15,248,0,3, + 224,0,18,28,84,20,1,0,0,16,0,0,60,0,0,124, + 0,0,248,0,1,224,0,3,192,0,3,0,0,0,0,0, + 3,240,0,12,28,0,28,14,0,56,7,0,56,7,128,112, + 7,128,112,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,248,3,128,120,7,128,120,7,0, + 60,15,0,30,30,0,15,248,0,3,224,0,18,27,81,20, + 1,0,0,192,0,1,224,0,3,240,0,7,248,0,14,28, + 0,8,12,0,0,0,0,3,240,0,12,28,0,28,14,0, + 56,7,0,56,7,128,112,7,128,112,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,248,3, + 128,120,7,128,120,7,0,60,15,0,30,30,0,15,248,0, + 3,224,0,18,26,78,20,1,0,3,198,0,15,252,0,15, + 252,0,24,120,0,16,0,0,0,0,0,3,240,0,12,28, + 0,28,14,0,56,7,0,56,7,128,112,7,128,112,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,248,3,128,120,7,128,120,7,0,60,15,0,30,30, + 0,15,248,0,3,224,0,18,26,78,20,1,0,14,28,0, + 30,60,0,30,60,0,30,60,0,28,56,0,0,0,0,3, + 240,0,12,28,0,28,14,0,56,7,0,56,7,128,112,7, + 128,112,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,248,3,128,120,7,128,120,7,0,60, + 15,0,30,30,0,15,248,0,3,224,0,11,10,20,13,1, + 4,96,96,240,224,57,192,31,128,15,0,15,0,31,128,57, + 192,112,224,224,96,18,21,63,20,1,255,3,241,192,12,31, + 128,28,15,0,56,15,0,56,31,128,112,63,128,112,63,192, + 240,123,192,240,243,192,240,227,192,241,195,192,241,195,192,243, + 131,192,247,3,128,126,7,128,126,7,0,60,7,0,62,14, + 0,127,248,0,227,224,0,128,0,0,19,28,84,21,1,0, + 3,0,0,7,128,0,15,192,0,7,192,0,1,224,0,0, + 112,0,0,24,0,0,0,0,255,7,224,126,3,192,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,3,0,30,3,0,15,6,0,7,252, + 0,3,240,0,19,28,84,21,1,0,0,8,0,0,30,0, + 0,62,0,0,124,0,0,240,0,1,192,0,1,128,0,0, + 0,0,255,7,224,126,3,192,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 3,0,30,3,0,15,6,0,7,252,0,3,240,0,19,27, + 81,21,1,0,0,224,0,0,240,0,1,248,0,3,252,0, + 7,14,0,12,6,0,0,0,0,255,7,224,126,3,192,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,3,0,30,3,0,15,6,0,7, + 252,0,3,240,0,19,26,78,21,1,0,6,12,0,15,30, + 0,15,30,0,15,30,0,14,28,0,0,0,0,255,7,224, + 126,3,192,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,3,0,30,3,0, + 15,6,0,7,252,0,3,240,0,19,28,84,20,0,0,0, + 8,0,0,30,0,0,62,0,0,124,0,0,240,0,1,192, + 0,1,128,0,0,0,0,252,7,224,60,3,192,30,3,128, + 15,3,0,15,7,0,7,134,0,3,142,0,3,204,0,1, + 220,0,1,248,0,0,248,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,1,248,0, + 3,252,0,16,20,40,18,1,0,255,128,126,0,60,0,60, + 0,63,240,60,60,60,30,60,15,60,15,60,15,60,15,60, + 14,60,30,60,60,63,240,60,0,60,0,60,0,126,0,255, + 128,18,24,72,21,1,0,0,248,0,3,254,0,15,31,0, + 14,15,128,28,7,128,28,7,128,60,7,128,60,7,128,60, + 15,0,60,60,0,60,112,0,60,224,0,60,224,0,60,240, + 0,60,252,0,60,127,0,60,63,128,60,15,192,60,7,192, + 61,3,192,60,129,192,60,193,128,124,225,128,252,254,0,14, + 24,48,16,1,0,28,0,62,0,30,0,15,0,7,0,3, + 128,1,128,0,192,0,0,31,192,112,224,240,240,192,240,0, + 240,3,240,31,240,63,240,120,240,240,240,240,240,240,240,251, + 252,126,248,56,96,14,24,48,16,1,0,0,224,1,240,1, + 224,3,192,3,128,3,0,7,0,6,0,0,0,31,192,112, + 224,240,240,192,240,0,240,3,240,31,240,63,240,120,240,240, + 240,240,240,240,240,251,252,126,248,56,96,14,23,46,16,1, + 0,3,128,7,128,15,192,31,224,28,224,56,48,32,16,0, + 0,31,192,112,224,240,240,192,240,0,240,3,240,31,240,63, + 240,120,240,240,240,240,240,240,240,251,252,126,248,56,96,14, + 22,44,16,1,0,14,8,31,24,63,240,99,240,64,224,0, + 0,0,0,31,192,112,224,240,240,192,240,0,240,3,240,31, + 240,63,240,120,240,240,240,240,240,240,240,251,252,126,248,56, + 96,14,22,44,16,1,0,56,112,120,240,120,240,120,240,48, + 96,0,0,0,0,31,192,112,224,240,240,192,240,0,240,3, + 240,31,240,63,240,120,240,240,240,240,240,240,240,251,252,126, + 248,56,96,14,22,44,16,1,0,3,128,4,192,12,192,12, + 192,7,128,0,0,0,0,31,192,112,224,240,240,192,240,0, + 240,3,240,31,240,63,240,120,240,240,240,240,240,240,240,251, + 252,126,248,56,96,22,15,45,23,1,0,3,227,224,31,252, + 112,60,252,56,120,120,60,112,120,60,128,120,60,7,255,248, + 28,120,0,120,120,0,112,120,0,240,124,8,249,254,28,255, + 191,248,127,31,240,60,7,192,14,22,44,15,1,249,3,248, + 12,120,56,48,112,16,112,0,240,0,240,0,240,0,240,0, + 240,0,248,8,124,28,63,248,31,240,15,192,3,0,3,192, + 3,224,5,224,1,224,3,192,14,0,13,24,48,15,1,0, + 14,0,30,0,31,0,15,0,7,128,3,128,1,192,0,192, + 0,0,7,192,24,224,56,112,112,120,112,120,240,120,255,240, + 240,0,240,0,240,0,248,8,124,56,127,240,63,224,15,128, + 13,24,48,15,1,0,0,224,0,240,1,240,1,224,3,192, + 3,128,7,0,6,0,0,0,7,192,24,224,56,112,112,120, + 112,120,240,120,255,240,240,0,240,0,240,0,248,8,124,56, + 127,240,63,224,15,128,13,23,46,15,1,0,3,128,7,192, + 15,192,15,224,28,112,56,48,48,24,0,0,7,192,24,224, + 56,112,112,120,112,120,240,120,255,240,240,0,240,0,240,0, + 248,8,124,56,127,240,63,224,15,128,13,22,44,15,1,0, + 56,112,56,112,120,240,120,240,48,96,0,0,0,0,7,192, + 24,224,56,112,112,120,112,120,240,120,255,240,240,0,240,0, + 240,0,248,8,124,56,127,240,63,224,15,128,9,24,48,10, + 0,0,112,0,248,0,120,0,60,0,28,0,14,0,6,0, + 2,0,0,0,14,0,126,0,62,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,63,0, + 127,128,9,24,48,10,1,0,7,0,15,128,15,0,30,0, + 28,0,56,0,48,0,32,0,0,0,28,0,252,0,124,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,0,10,23,46,10,0,0,28,0, + 30,0,63,0,127,0,115,128,193,192,128,64,0,0,14,0, + 126,0,62,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,63,0,127,128,11,22,44,10, + 255,0,112,224,241,224,241,224,241,224,225,192,0,0,0,0, + 7,0,63,0,31,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,31,128,63,192,14,23, + 46,16,1,0,14,0,63,28,95,248,3,224,15,224,60,224, + 0,112,0,56,15,248,24,248,56,124,112,60,112,60,240,60, + 240,60,240,60,240,60,240,56,240,56,120,112,120,112,60,96, + 15,128,17,22,66,19,1,0,7,6,0,15,204,0,31,252, + 0,17,248,0,48,112,0,0,0,0,0,0,0,12,60,0, + 252,252,0,127,254,0,63,30,0,62,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,126,63,0,255,127,128,15,24,48,17,1,0, + 14,0,31,0,15,0,7,0,3,128,1,128,0,192,0,192, + 0,0,7,224,24,112,56,56,112,60,112,30,240,30,240,30, + 240,30,240,30,240,30,240,28,120,28,56,56,28,48,15,192, + 15,24,48,17,1,0,0,240,0,248,0,240,1,224,1,192, + 3,128,3,0,6,0,0,0,7,224,24,112,56,56,112,60, + 112,30,240,30,240,30,240,30,240,30,240,30,240,28,120,28, + 56,56,28,48,15,192,15,23,46,17,1,0,3,128,3,192, + 7,224,15,224,30,112,24,56,48,24,0,0,7,224,24,112, + 56,56,112,60,112,30,240,30,240,30,240,30,240,30,240,30, + 240,28,120,28,56,56,28,48,15,192,15,22,44,17,1,0, + 14,12,31,136,31,248,49,240,32,224,0,0,0,0,7,224, + 24,112,56,56,112,60,112,30,240,30,240,30,240,30,240,30, + 240,30,240,28,120,28,56,56,28,48,15,192,15,22,44,17, + 1,0,24,48,60,120,60,120,56,112,56,112,0,0,0,0, + 7,224,24,112,56,56,112,60,112,30,240,30,240,30,240,30, + 240,30,240,30,240,28,120,28,56,56,28,48,15,192,12,12, + 24,13,1,3,6,0,14,0,14,0,12,0,0,0,255,240, + 255,224,0,0,6,0,14,0,14,0,12,0,15,16,32,17, + 1,255,7,238,24,124,56,60,112,124,112,254,240,254,241,222, + 243,158,243,158,247,30,254,28,124,28,124,56,124,48,111,192, + 128,0,17,24,72,18,0,0,7,0,0,15,128,0,7,128, + 0,3,192,0,1,192,0,0,224,0,0,96,0,0,48,0, + 0,0,0,28,14,0,252,126,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,126,0,63,255,128,31,223,0,15,12,0, + 17,24,72,18,0,0,0,56,0,0,124,0,0,120,0,0, + 240,0,0,224,0,0,192,0,1,128,0,1,128,0,0,0, + 0,28,14,0,252,126,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,126,0,63,255,128,31,223,0,15,12,0,17,23, + 69,18,0,0,0,192,0,1,224,0,3,240,0,7,248,0, + 7,56,0,14,12,0,8,4,0,0,0,0,28,14,0,252, + 126,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,126,0, + 63,255,128,31,223,0,15,12,0,17,22,66,18,0,0,14, + 28,0,30,60,0,30,60,0,30,60,0,12,24,0,0,0, + 0,0,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,17,32,96,16,255,248,0,56,0,0,62,0,0,124,0, + 0,120,0,0,240,0,0,224,0,0,192,0,1,128,0,0, + 0,0,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,16,32,64,18,1,248,12,0,252, + 0,124,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 120,61,252,63,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,63,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,30,90, + 16,255,248,6,12,0,15,30,0,15,30,0,14,28,0,14, + 28,0,0,0,0,0,0,0,127,15,128,62,7,0,30,6, + 0,30,6,0,15,14,0,15,12,0,7,140,0,7,152,0, + 7,152,0,3,248,0,3,240,0,1,240,0,1,240,0,1, + 224,0,0,224,0,0,192,0,0,192,0,1,192,0,1,128, + 0,39,128,0,127,0,0,254,0,0,120,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 19 + Calculated Max Values w=14 h=30 x= 2 y=11 dx=17 dy= 0 ascent=25 len=60 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent= 0 + X Font ascent =19 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20n[624] U8G_SECTION(".progmem.u8g_font_gdb20n") = { + 0,49,47,240,244,19,0,0,0,0,42,57,0,25,250,19, + 0,12,13,26,14,1,11,3,0,15,0,70,64,102,112,246, + 240,63,192,15,0,63,224,254,240,230,112,70,32,7,0,14, + 0,12,12,24,13,1,3,6,0,6,0,6,0,6,0,6, + 0,127,240,255,224,6,0,6,0,6,0,6,0,6,0,6, + 10,10,9,2,250,56,252,252,60,60,56,56,112,96,192,10, + 2,4,11,1,7,255,192,255,128,5,5,5,9,2,255,112, + 248,248,248,112,14,30,60,15,1,251,0,28,0,56,0,56, + 0,120,0,112,0,112,0,224,0,224,0,224,1,192,1,192, + 3,128,3,128,3,128,7,0,7,0,7,0,14,0,14,0, + 28,0,28,0,28,0,56,0,56,0,120,0,112,0,112,0, + 224,0,224,0,192,0,14,18,36,16,1,0,7,192,24,224, + 56,112,112,120,112,120,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,240,56,112,56,120,56,56,112,28,96,15,128, + 13,19,38,16,2,0,1,128,15,128,127,128,239,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,63,224,127,248,13,19,38,16, + 1,0,15,224,56,240,120,120,240,120,112,120,0,120,0,240, + 0,240,1,224,1,192,3,128,7,0,14,0,28,8,28,8, + 56,24,127,248,255,248,255,248,13,19,38,16,1,0,31,128, + 121,224,112,240,240,240,64,240,0,240,1,224,7,192,15,192, + 3,240,0,240,0,120,0,120,0,120,0,120,128,240,192,240, + 127,224,31,128,14,19,38,17,1,0,0,48,1,240,1,240, + 3,240,7,240,6,240,12,240,12,240,24,240,56,240,48,240, + 96,240,255,252,255,248,0,240,0,240,0,240,1,248,7,252, + 13,19,38,16,1,0,63,248,63,240,63,224,112,0,112,0, + 96,0,96,0,127,128,127,224,97,240,0,248,0,120,0,120, + 0,120,0,120,0,112,128,240,193,224,127,128,14,20,40,16, + 1,0,0,112,3,240,7,128,15,0,28,0,60,0,120,0, + 120,0,115,224,255,240,252,120,240,124,240,60,240,60,240,60, + 112,60,120,56,56,56,28,112,7,192,13,19,38,16,2,0, + 255,248,255,248,255,240,192,48,128,96,128,96,0,224,0,192, + 1,192,1,128,3,128,3,128,7,0,7,0,14,0,14,0, + 30,0,28,0,56,0,14,19,38,16,1,0,15,192,24,240, + 48,120,112,120,112,120,120,120,126,240,63,192,31,224,15,240, + 63,248,120,252,248,124,240,60,240,60,240,56,112,56,56,112, + 31,192,14,20,40,16,1,255,7,192,24,240,56,120,112,120, + 240,60,240,60,240,60,240,60,248,60,124,124,63,252,31,60, + 0,56,0,120,0,112,0,240,1,224,7,128,63,0,56,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=16 dx=28 dy= 0 ascent=26 len=112 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x=-5 y=-8 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =26 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20r[4680] U8G_SECTION(".progmem.u8g_font_gdb20r") = { + 0,49,47,240,244,20,5,86,12,137,32,127,248,26,248,25, + 248,0,0,0,8,0,0,5,24,24,10,2,255,24,120,120, + 120,120,120,120,120,120,112,112,112,112,48,48,48,48,0,0, + 112,248,248,248,112,11,10,20,15,2,13,56,224,243,224,241, + 224,241,192,113,192,113,192,113,192,113,192,112,192,96,192,15, + 18,36,16,1,2,1,140,3,152,3,24,3,24,3,56,63, + 254,63,254,6,112,14,96,12,96,12,96,127,252,255,248,24, + 192,24,192,57,128,49,128,49,128,14,25,50,16,1,253,3, + 0,3,0,3,0,31,240,63,248,115,120,227,56,227,16,243, + 0,255,0,127,0,63,224,15,240,3,248,3,124,3,28,195, + 28,195,28,227,28,251,120,255,240,63,224,3,0,3,0,3, + 0,21,20,60,23,1,0,0,0,96,30,0,192,115,129,192, + 97,131,128,225,195,0,225,198,0,225,206,0,225,220,0,97, + 152,0,115,176,0,30,113,224,0,231,112,1,198,48,1,142, + 56,3,142,56,7,14,56,14,14,56,12,6,48,28,7,48, + 56,3,192,21,23,69,22,1,0,1,240,0,7,120,0,14, + 60,0,14,60,0,30,60,0,30,124,0,30,120,0,31,240, + 0,31,224,0,15,192,0,15,128,0,31,143,248,63,195,160, + 123,225,128,123,241,128,241,249,128,240,251,0,240,127,0,240, + 126,0,248,63,0,120,31,240,63,247,240,15,195,192,5,10, + 10,9,2,13,56,240,240,240,112,112,112,112,112,96,9,30, + 60,11,2,251,1,0,3,128,6,0,14,0,28,0,60,0, + 56,0,120,0,120,0,112,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 120,0,56,0,60,0,28,0,30,0,14,0,7,0,1,128, + 9,30,60,11,0,251,64,0,240,0,56,0,60,0,28,0, + 30,0,14,0,15,0,15,0,15,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,0,15,0, + 15,0,15,0,14,0,30,0,28,0,56,0,48,0,96,0, + 192,0,12,13,26,14,1,11,3,0,15,0,70,64,102,112, + 246,240,63,192,15,0,63,224,254,240,230,112,70,32,7,0, + 14,0,12,12,24,13,1,3,6,0,6,0,6,0,6,0, + 6,0,127,240,255,224,6,0,6,0,6,0,6,0,6,0, + 6,10,10,9,2,250,56,252,252,60,60,56,56,112,96,192, + 10,2,4,11,1,7,255,192,255,128,5,5,5,9,2,255, + 112,248,248,248,112,14,30,60,15,1,251,0,28,0,56,0, + 56,0,120,0,112,0,112,0,224,0,224,0,224,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,28,0,28,0,28,0,56,0,56,0,120,0,112,0,112, + 0,224,0,224,0,192,0,14,18,36,16,1,0,7,192,24, + 224,56,112,112,120,112,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,56,112,56,120,56,56,112,28,96,15, + 128,13,19,38,16,2,0,1,128,15,128,127,128,239,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,224,127,248,13,19,38, + 16,1,0,15,224,56,240,120,120,240,120,112,120,0,120,0, + 240,0,240,1,224,1,192,3,128,7,0,14,0,28,8,28, + 8,56,24,127,248,255,248,255,248,13,19,38,16,1,0,31, + 128,121,224,112,240,240,240,64,240,0,240,1,224,7,192,15, + 192,3,240,0,240,0,120,0,120,0,120,0,120,128,240,192, + 240,127,224,31,128,14,19,38,17,1,0,0,48,1,240,1, + 240,3,240,7,240,6,240,12,240,12,240,24,240,56,240,48, + 240,96,240,255,252,255,248,0,240,0,240,0,240,1,248,7, + 252,13,19,38,16,1,0,63,248,63,240,63,224,112,0,112, + 0,96,0,96,0,127,128,127,224,97,240,0,248,0,120,0, + 120,0,120,0,120,0,112,128,240,193,224,127,128,14,20,40, + 16,1,0,0,112,3,240,7,128,15,0,28,0,60,0,120, + 0,120,0,115,224,255,240,252,120,240,124,240,60,240,60,240, + 60,112,60,120,56,56,56,28,112,7,192,13,19,38,16,2, + 0,255,248,255,248,255,240,192,48,128,96,128,96,0,224,0, + 192,1,192,1,128,3,128,3,128,7,0,7,0,14,0,14, + 0,30,0,28,0,56,0,14,19,38,16,1,0,15,192,24, + 240,48,120,112,120,112,120,120,120,126,240,63,192,31,224,15, + 240,63,248,120,252,248,124,240,60,240,60,240,56,112,56,56, + 112,31,192,14,20,40,16,1,255,7,192,24,240,56,120,112, + 120,240,60,240,60,240,60,240,60,248,60,124,124,63,252,31, + 60,0,56,0,120,0,112,0,240,1,224,7,128,63,0,56, + 0,5,16,16,9,2,255,112,248,248,248,112,0,0,0,0, + 0,0,112,248,248,248,112,6,21,21,9,2,250,112,248,248, + 248,112,0,0,0,0,0,0,56,252,252,60,60,56,56,112, + 96,192,13,10,20,15,1,4,0,24,0,240,7,240,63,128, + 252,0,248,0,127,0,15,224,1,248,0,48,13,7,14,15, + 1,5,255,248,255,240,0,0,0,0,0,0,255,248,255,240, + 13,10,20,15,1,4,96,0,252,0,63,128,7,240,0,248, + 1,240,15,224,127,0,248,0,192,0,12,24,48,15,1,255, + 31,192,121,224,240,240,240,240,240,240,192,240,0,240,1,224, + 1,192,3,192,3,128,7,0,7,0,6,0,6,0,6,0, + 0,0,0,0,0,0,14,0,31,0,31,0,31,0,14,0, + 26,28,112,28,1,249,0,31,192,0,0,255,248,0,3,255, + 252,0,7,224,62,0,15,128,15,0,30,0,7,128,60,30, + 35,128,60,49,225,128,120,97,225,192,120,225,224,192,240,225, + 224,192,241,225,224,192,241,225,224,192,241,225,224,192,241,225, + 224,192,241,225,225,128,241,225,225,128,248,243,227,0,120,255, + 254,0,120,125,252,0,124,56,240,0,62,0,0,0,62,0, + 2,0,31,128,6,0,15,224,63,0,7,255,248,0,1,255, + 240,0,0,63,128,0,20,20,60,20,0,0,0,32,0,0, + 240,0,0,240,0,1,248,0,1,248,0,1,248,0,3,188, + 0,3,60,0,3,60,0,7,30,0,6,30,0,14,31,0, + 15,255,0,12,7,0,28,7,128,24,7,128,24,3,128,56, + 3,192,56,3,192,254,15,240,17,20,60,19,1,0,63,224, + 0,252,120,0,60,60,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,60,0,60,120,0,63,248,0,60,30,0,60, + 15,0,60,15,0,60,7,128,60,7,128,60,7,128,60,7, + 128,60,15,0,124,30,0,255,248,0,16,20,40,18,1,0, + 1,254,6,31,28,14,56,4,56,0,112,0,112,0,240,0, + 240,0,240,0,240,0,240,0,240,0,248,0,120,0,124,3, + 63,14,31,252,15,248,3,224,18,20,60,20,1,0,63,240, + 0,252,60,0,60,14,0,60,15,0,60,7,128,60,7,128, + 60,3,192,60,3,192,60,3,192,60,3,192,60,3,192,60, + 3,192,60,3,192,60,3,128,60,7,128,60,7,128,60,15, + 0,60,14,0,124,28,0,255,240,0,15,20,40,17,1,0, + 255,252,124,12,60,12,60,12,60,12,60,0,60,0,60,0, + 60,0,63,240,60,32,60,0,60,0,60,0,60,0,60,0, + 60,2,60,6,124,14,255,254,14,20,40,16,1,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,126,0,255,0,18,20,60,19,1,0,1,254,0,6, + 15,0,28,6,0,56,4,0,56,0,0,120,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,127,192,240,127,192, + 240,15,0,240,15,0,120,15,0,120,15,0,60,15,0,30, + 15,0,15,254,0,3,240,0,20,20,60,22,1,0,255,15, + 240,126,7,224,60,3,192,60,3,192,60,3,192,60,3,192, + 60,3,192,60,3,192,60,3,192,63,255,192,60,3,192,60, + 3,192,60,3,192,60,3,192,60,3,192,60,3,192,60,3, + 192,60,3,192,126,7,224,255,15,240,8,20,20,10,1,0, + 255,126,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,126,255,14,27,54,11,252,249,7,252,1,248,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,224,1,224,49,192,127,128,255,0,60,0, + 19,20,60,20,1,0,255,31,192,126,15,0,60,14,0,60, + 28,0,60,56,0,60,112,0,60,224,0,60,224,0,61,192, + 0,63,128,0,63,192,0,61,224,0,60,240,0,60,120,0, + 60,60,0,60,62,0,60,31,0,60,15,128,126,7,224,255, + 3,128,15,20,40,16,1,0,255,0,126,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 25,20,80,27,1,0,252,0,31,128,62,0,62,0,62,0, + 62,0,62,0,126,0,63,0,126,0,55,0,254,0,55,128, + 222,0,55,129,222,0,51,193,158,0,51,195,158,0,49,195, + 158,0,49,227,30,0,48,231,30,0,48,246,30,0,48,254, + 30,0,48,124,30,0,48,124,30,0,48,56,30,0,120,56, + 63,0,252,24,127,128,19,20,60,21,1,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,20,60,20,1,0,3,240, + 0,12,28,0,28,14,0,56,7,0,56,7,128,112,7,128, + 112,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,248,3,128,120,7,128,120,7,0,60,15, + 0,30,30,0,15,248,0,3,224,0,16,20,40,18,1,0, + 63,240,252,60,60,30,60,15,60,15,60,15,60,15,60,15, + 60,14,60,30,62,60,61,240,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,128,21,25,75,20,1,251,3,240, + 0,14,28,0,28,14,0,56,15,0,56,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,128,120,3,128,120,7,128,60,7, + 0,28,14,0,14,28,0,3,248,0,0,60,0,0,15,8, + 0,7,248,0,3,240,0,0,224,18,20,60,19,1,0,63, + 224,0,252,120,0,60,60,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,60,0,60,252,0,63,240,0,63,224,0, + 60,240,0,60,112,0,60,120,0,60,60,0,60,62,0,60, + 30,0,60,15,0,126,15,192,255,7,128,13,20,40,16,2, + 0,15,224,48,224,96,96,224,0,224,0,240,0,252,0,127, + 0,127,192,31,224,15,240,3,248,0,248,0,120,128,120,192, + 120,192,112,224,224,255,192,63,0,18,20,60,19,0,0,255, + 255,192,193,225,192,193,224,192,193,224,192,129,224,128,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,3,240,0,7,248,0,19,20,60,21,1, + 0,255,7,224,126,3,192,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,3, + 0,30,3,0,15,6,0,7,252,0,3,240,0,21,20,60, + 21,0,0,255,3,248,60,0,224,60,0,192,30,0,192,30, + 1,128,15,1,128,15,3,128,15,3,0,7,131,0,7,135, + 0,3,198,0,3,198,0,3,206,0,1,236,0,1,236,0, + 0,248,0,0,248,0,0,248,0,0,112,0,0,96,0,27, + 20,80,27,0,0,255,6,15,224,60,6,3,192,28,15,3, + 128,28,15,3,0,28,15,3,0,30,31,131,0,30,27,131, + 0,14,27,199,0,14,59,198,0,15,49,198,0,15,49,230, + 0,7,112,238,0,7,96,252,0,7,224,252,0,7,192,124, + 0,3,192,124,0,3,192,60,0,3,128,56,0,3,128,56, + 0,3,0,16,0,20,20,60,20,0,0,127,143,224,62,3, + 128,30,7,0,15,6,0,15,142,0,7,140,0,3,220,0, + 3,248,0,1,240,0,0,240,0,0,248,0,1,248,0,3, + 188,0,3,190,0,7,30,0,6,15,0,14,15,128,28,7, + 128,60,7,192,254,31,240,19,20,60,20,0,0,252,7,224, + 60,3,192,30,3,128,15,3,0,15,7,0,7,134,0,3, + 142,0,3,204,0,1,220,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,1,248,0,3,252,0,15,20,40,17,1,0,127, + 254,96,62,96,124,64,124,64,248,0,240,1,240,1,224,3, + 224,7,192,7,192,15,128,15,0,31,0,62,0,62,2,124, + 2,124,6,248,6,255,254,9,30,60,11,2,251,255,128,255, + 128,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,255,128,255,128,13,30,60,15,1,251,192, + 0,224,0,224,0,112,0,112,0,48,0,56,0,56,0,28, + 0,28,0,28,0,14,0,14,0,6,0,7,0,7,0,3, + 128,3,128,3,128,1,192,1,192,0,192,0,224,0,224,0, + 112,0,112,0,112,0,56,0,56,0,24,9,30,60,11,0, + 251,255,128,255,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,255,128,255,128,12,15,30, + 16,2,9,2,0,6,0,15,0,15,0,27,0,27,128,17, + 128,49,192,49,192,96,192,96,224,96,96,192,112,192,48,128, + 32,14,2,4,15,1,252,255,252,255,248,7,8,8,10,0, + 16,112,240,120,56,60,28,14,6,14,15,30,16,1,0,31, + 192,112,224,240,240,192,240,0,240,3,240,31,240,63,240,120, + 240,240,240,240,240,240,240,251,252,126,248,56,96,16,24,48, + 17,0,0,12,0,252,0,124,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,120,61,252,63,254,63,30,60,15,60, + 7,60,7,60,7,60,7,60,6,60,14,62,28,63,248,31, + 240,7,192,13,15,30,15,1,0,3,248,12,120,56,48,112, + 16,112,0,240,0,240,0,240,0,240,0,248,0,248,8,124, + 56,63,240,31,224,15,128,16,24,48,18,1,0,0,28,0, + 252,0,60,0,60,0,60,0,60,0,60,0,60,0,60,7, + 252,24,124,56,60,112,60,112,60,240,60,240,60,240,60,240, + 60,248,60,248,60,124,124,127,255,63,190,30,24,13,15,30, + 15,1,0,7,192,24,224,56,112,112,120,112,120,240,120,255, + 240,240,0,240,0,240,0,248,8,124,56,127,240,63,224,15, + 128,13,24,48,11,1,0,1,240,7,248,14,112,28,32,28, + 0,60,0,60,0,60,0,60,0,255,192,60,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,127,0,255,128,16,23,46,17,0,248,7,227,28, + 127,56,126,120,60,120,60,120,60,120,60,60,56,60,112,15, + 192,14,0,28,0,31,192,63,252,15,254,31,255,120,127,240, + 15,240,14,240,14,120,28,63,248,15,192,17,24,72,18,1, + 0,12,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,120,0,61, + 252,0,63,254,0,63,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,126,63,0,255,127,128,8,21,21,10,1,0,28, + 62,62,28,0,0,28,252,124,60,60,60,60,60,60,60,60, + 60,60,126,255,12,29,58,9,251,248,0,224,1,240,1,240, + 0,224,0,0,0,0,0,224,7,224,3,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,192,1,192,99,128,255,0, + 254,0,120,0,17,24,72,18,1,0,12,0,0,252,0,0, + 124,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,63,128,60,30,0,60,60,0,60,112, + 0,60,224,0,61,192,0,63,192,0,63,224,0,61,224,0, + 60,240,0,60,120,0,60,60,0,60,62,0,126,31,128,255, + 15,0,8,24,24,10,1,0,12,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 26,15,60,28,1,0,28,120,60,0,252,252,254,0,127,255, + 255,0,63,31,143,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,126,63,31,128,255,127, + 191,192,17,15,45,18,1,0,12,60,0,252,252,0,127,254, + 0,63,30,0,62,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,15,15,30,17,1,0,7,224,24,112,56, + 56,112,60,112,30,240,30,240,30,240,30,240,30,240,30,240, + 28,120,28,56,56,28,48,15,192,16,23,46,18,1,248,12, + 120,252,252,127,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,62,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,23,69, + 18,1,248,3,194,0,12,54,0,56,30,0,112,30,0,112, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,248,30, + 0,248,30,0,124,126,0,127,254,0,63,222,0,15,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,63,0,0,255,128,13,15,30,14,1,0,24,240, + 249,248,123,248,62,48,60,48,60,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,11,15,30,13, + 1,0,31,192,97,192,225,128,224,128,248,0,254,0,127,128, + 127,192,31,224,7,224,129,224,192,224,192,192,224,192,255,0, + 11,20,40,12,0,0,4,0,28,0,60,0,60,0,60,0, + 255,224,60,64,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,96,63,224,31,128,14,0,17,15, + 45,18,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,16,15,30,16,0,0,254,31,124,14,60,12,60,12,30, + 28,30,24,15,24,15,48,7,48,7,240,7,224,3,224,3, + 192,1,192,1,128,23,15,45,23,0,0,254,24,62,124,24, + 28,60,28,24,60,60,24,28,62,48,30,126,48,30,111,48, + 14,111,112,15,199,96,15,199,224,7,195,224,7,131,192,7, + 131,192,3,1,192,2,1,128,16,15,30,17,0,0,255,63, + 62,28,30,24,15,48,15,240,7,224,3,192,3,224,3,224, + 6,240,14,248,28,120,24,60,120,62,252,127,17,23,69,16, + 255,248,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,13,15,30,15,1,0,127,248,96, + 248,65,240,65,224,3,224,7,192,7,128,15,128,15,0,31, + 0,62,16,60,24,124,24,248,24,255,248,9,30,60,12,2, + 251,1,0,7,128,14,0,28,0,60,0,60,0,60,0,60, + 0,62,0,30,0,30,0,30,0,30,0,60,0,120,0,252, + 0,60,0,30,0,30,0,30,0,30,0,62,0,60,0,60, + 0,60,0,60,0,28,0,30,0,7,0,1,128,2,32,32, + 7,3,250,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,128,9,30,60,12,1,251,64,0,240,0,60,0,28, + 0,30,0,30,0,30,0,30,0,62,0,60,0,60,0,60, + 0,60,0,30,0,31,128,15,0,30,0,60,0,60,0,60, + 0,60,0,62,0,30,0,30,0,30,0,30,0,28,0,56, + 0,112,0,192,0,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=34 h=41 x= 4 y=23 dx=35 dy= 0 ascent=34 len=136 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x=-6 y=-11 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =34 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25[14643] U8G_SECTION(".progmem.u8g_font_gdb25") = { + 0,61,57,236,242,25,7,167,18,92,32,255,247,34,245,31, + 247,0,0,0,10,0,0,6,30,30,12,3,255,12,60,252, + 252,252,124,120,120,120,120,120,120,120,120,120,120,120,120,56, + 48,48,32,0,0,56,124,252,252,252,120,13,13,26,19,3, + 16,24,56,248,248,248,248,248,248,248,248,248,248,248,240,112, + 240,112,112,112,112,112,112,112,112,112,112,19,23,69,20,1, + 2,0,97,192,0,227,128,0,227,128,0,195,128,1,195,0, + 1,199,0,31,255,224,31,255,224,35,142,0,3,142,0,3, + 14,0,7,12,0,7,28,0,7,28,0,127,255,128,255,255, + 128,14,56,0,12,56,0,28,48,0,28,112,0,24,112,0, + 24,112,0,32,224,0,17,30,90,21,2,253,0,192,0,1, + 192,0,1,192,0,3,240,0,31,254,0,63,255,128,113,223, + 0,225,207,0,225,199,0,225,194,0,241,192,0,255,192,0, + 127,192,0,63,248,0,15,252,0,3,254,0,1,255,0,1, + 223,128,1,207,128,193,199,128,193,199,128,225,199,128,241,207, + 0,253,207,0,255,254,0,63,252,0,7,224,0,1,192,0, + 1,192,0,1,128,0,26,25,100,28,1,0,0,0,3,0, + 15,128,15,0,63,192,14,0,113,224,28,0,112,224,56,0, + 224,112,120,0,224,112,112,0,224,112,224,0,224,113,192,0, + 224,115,192,0,96,103,128,0,112,103,0,0,48,206,62,0, + 31,28,99,0,0,60,195,128,0,56,193,128,0,113,193,192, + 0,225,193,192,1,225,193,192,1,193,193,192,3,129,193,192, + 7,0,225,128,15,0,227,128,14,0,127,0,28,0,62,0, + 27,28,112,28,1,0,0,126,0,0,1,255,128,0,3,143, + 128,0,7,7,192,0,7,7,192,0,15,7,192,0,15,7, + 192,0,15,15,128,0,15,159,0,0,15,191,0,0,7,254, + 0,0,7,248,0,0,7,240,0,0,15,240,255,224,31,241, + 255,192,63,248,61,128,125,252,60,0,124,254,28,0,248,254, + 28,0,248,127,28,0,248,63,184,0,248,31,248,0,248,15, + 240,0,252,7,248,0,124,3,252,0,63,7,255,192,31,254, + 127,128,7,240,28,0,5,13,13,11,3,16,24,248,248,248, + 248,248,248,112,112,112,112,112,112,11,37,74,13,2,250,0, + 64,1,224,3,192,7,128,15,0,15,0,30,0,30,0,60, + 0,60,0,124,0,124,0,120,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,120, + 0,124,0,124,0,124,0,60,0,62,0,30,0,31,0,15, + 0,7,128,3,192,1,224,0,64,11,37,74,13,0,250,64, + 0,240,0,120,0,60,0,30,0,31,0,15,0,15,128,7, + 128,7,192,7,192,7,192,7,192,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,192,7, + 192,7,192,7,192,7,128,15,128,15,0,15,0,30,0,30, + 0,60,0,120,0,240,0,64,0,16,16,32,18,1,14,0, + 192,3,192,3,192,99,140,123,158,125,191,127,252,15,224,7, + 224,63,252,253,190,249,158,51,142,3,192,3,192,3,0,15, + 14,28,17,1,4,1,128,3,128,3,128,3,128,3,128,3, + 128,127,254,255,252,3,128,3,128,3,128,3,128,3,128,3, + 0,8,12,12,11,2,249,30,127,255,127,31,31,30,30,60, + 56,112,96,12,2,4,14,1,9,127,240,255,240,6,6,6, + 11,3,255,56,124,252,252,252,120,17,38,114,19,1,249,0, + 1,128,0,7,128,0,7,128,0,15,0,0,15,0,0,15, + 0,0,30,0,0,30,0,0,28,0,0,60,0,0,60,0, + 0,120,0,0,120,0,0,120,0,0,240,0,0,240,0,0, + 224,0,1,224,0,1,224,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,7,0,0,15,0,0,15,0,0, + 30,0,0,30,0,0,30,0,0,60,0,0,60,0,0,56, + 0,0,120,0,0,120,0,0,240,0,0,240,0,0,192,0, + 0,18,24,72,20,1,0,3,240,0,7,252,0,30,62,0, + 28,31,0,60,15,0,120,15,128,120,15,128,120,7,128,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,120,7,128,124,7,128,124,15,128, + 60,15,0,62,14,0,31,30,0,15,248,0,3,224,0,16, + 24,48,20,2,0,0,96,3,224,31,224,255,224,99,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,7, + 240,127,255,127,255,16,24,48,20,2,0,3,248,15,252,60, + 62,124,63,120,31,248,31,112,31,0,31,0,62,0,60,0, + 124,0,120,0,240,1,224,3,224,3,192,7,128,15,1,30, + 3,60,3,120,3,127,255,255,255,255,255,16,24,48,20,2, + 0,7,240,31,248,60,124,120,62,248,62,248,62,64,62,0, + 60,0,124,0,240,7,240,7,252,0,254,0,62,0,63,0, + 31,0,31,0,31,0,31,0,30,192,62,240,124,127,248,15, + 192,17,24,72,20,1,0,0,12,0,0,124,0,0,124,0, + 0,252,0,1,252,0,1,252,0,3,188,0,7,188,0,7, + 60,0,14,60,0,14,60,0,28,60,0,56,60,0,56,60, + 0,112,60,0,255,255,128,255,255,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,3,255,128,3,255,128,17, + 24,72,20,1,0,31,255,0,31,255,128,31,254,0,31,252, + 0,24,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 63,240,0,63,252,0,48,126,0,96,31,0,0,31,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,31, + 0,96,31,0,248,126,0,63,252,0,7,224,0,17,24,72, + 20,2,0,0,14,0,0,126,0,1,240,0,7,192,0,15, + 128,0,30,0,0,62,0,0,60,0,0,124,0,0,121,248, + 0,127,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,15,128,124,15,0,60, + 31,0,31,30,0,15,252,0,3,240,0,17,24,72,20,2, + 0,127,255,128,127,255,0,255,255,0,255,255,0,224,6,0, + 192,14,0,128,12,0,0,28,0,0,28,0,0,56,0,0, + 56,0,0,112,0,0,112,0,0,240,0,0,224,0,1,224, + 0,1,192,0,3,192,0,3,192,0,7,128,0,7,128,0, + 15,128,0,31,0,0,28,0,0,17,24,72,21,2,0,3, + 240,0,15,252,0,28,62,0,24,31,0,56,31,0,56,31, + 0,56,31,0,60,62,0,63,60,0,31,248,0,15,240,0, + 7,252,0,14,254,0,62,63,0,124,31,128,120,31,128,248, + 15,128,248,15,128,248,15,128,248,15,0,124,31,0,126,62, + 0,63,252,0,7,224,0,17,25,75,20,2,255,3,240,0, + 15,252,0,30,62,0,60,30,0,120,31,0,120,31,0,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 128,126,63,128,63,255,128,15,207,0,0,15,0,0,31,0, + 0,30,0,0,62,0,0,124,0,0,248,0,1,240,0,15, + 192,0,63,0,0,56,0,0,6,19,19,11,3,255,56,124, + 252,252,252,120,0,0,0,0,0,0,0,56,124,252,252,252, + 120,8,26,26,11,2,249,8,62,126,126,126,124,0,0,0, + 0,0,0,0,0,30,127,255,127,31,31,30,30,60,56,112, + 96,16,13,26,18,1,5,0,3,0,31,0,255,3,252,31, + 224,127,128,252,0,254,0,127,192,15,248,1,255,0,63,0, + 6,16,8,16,18,1,7,127,255,255,255,0,0,0,0,0, + 0,0,0,127,255,255,255,16,13,26,18,1,5,112,0,252, + 0,255,128,31,240,3,254,0,127,0,63,0,255,7,248,63, + 224,127,0,248,0,192,0,15,30,60,18,1,255,7,240,31, + 248,60,124,120,126,248,62,248,62,248,62,224,62,0,62,0, + 124,0,124,0,248,0,240,1,240,1,224,1,192,3,192,3, + 128,3,128,3,128,3,128,0,0,0,0,0,0,3,128,7, + 192,15,192,15,192,15,192,7,128,31,34,136,35,2,248,0, + 7,248,0,0,63,255,0,0,255,255,192,1,248,15,224,3, + 192,1,240,7,128,0,248,15,0,0,120,30,0,0,60,60, + 3,195,60,56,15,238,28,120,30,126,30,120,60,62,14,112, + 120,62,14,240,120,62,14,240,248,62,14,240,248,62,14,240, + 248,62,14,240,248,62,14,240,248,62,12,240,248,62,28,240, + 252,62,28,248,124,126,56,120,127,255,240,120,127,191,224,124, + 63,159,192,60,30,15,0,62,0,0,0,31,0,0,0,31, + 128,0,48,15,224,0,240,7,248,7,224,1,255,255,192,0, + 127,255,0,0,15,248,0,25,25,100,25,0,0,0,4,0, + 0,0,30,0,0,0,62,0,0,0,126,0,0,0,127,0, + 0,0,111,0,0,0,239,128,0,0,239,128,0,0,199,128, + 0,1,199,192,0,1,199,192,0,1,131,192,0,3,131,224, + 0,3,131,224,0,3,255,224,0,7,255,240,0,7,0,240, + 0,6,0,248,0,14,0,248,0,14,0,120,0,12,0,124, + 0,28,0,124,0,28,0,124,0,255,129,255,0,255,129,255, + 128,22,25,75,24,0,0,15,254,0,255,255,128,223,15,224, + 31,3,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,224,31,15,128,31,255,0,31,255,224,31,3, + 240,31,1,248,31,0,248,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,248,31,3,240,127,255,224,255, + 255,0,20,25,75,22,1,0,0,127,128,3,255,240,7,135, + 224,15,1,224,30,0,192,60,0,64,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,252,0,0,124,0,0,124,0, + 0,126,0,32,63,0,112,31,193,224,15,255,192,7,255,0, + 1,252,0,22,25,75,25,1,0,15,252,0,255,255,128,255, + 15,192,31,3,224,31,1,240,31,1,248,31,0,248,31,0, + 248,31,0,124,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,120,31,0,248,31, + 0,248,31,1,240,31,1,240,31,3,224,31,7,192,127,255, + 128,255,252,0,19,25,75,21,1,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,18,25,75,20,1,0,255,255,192,255,255, + 192,62,1,192,30,1,192,30,1,192,30,0,192,30,0,128, + 30,0,0,30,0,0,30,0,0,30,0,0,31,254,0,31, + 254,0,30,4,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,62,0,0, + 255,192,0,255,224,0,22,25,75,24,1,0,0,127,128,1, + 255,240,7,131,240,15,1,224,30,0,224,60,0,64,60,0, + 0,124,0,0,120,0,0,248,0,0,248,0,0,248,0,0, + 248,15,252,248,15,252,248,1,240,248,1,240,252,1,240,124, + 1,240,124,1,240,126,1,240,63,1,240,31,129,240,15,255, + 192,7,255,128,0,252,0,25,25,100,27,1,0,255,227,255, + 128,127,227,255,128,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,255,252,0,31,255,252, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,127,195,255,128,255,227,255, + 128,11,25,50,13,1,0,255,224,127,224,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,127,192,255,224,18,33,99,13,251,248,3, + 255,192,1,255,128,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,60,0,0,60,0, + 0,56,0,16,120,0,56,112,0,127,224,0,255,128,0,62, + 0,0,24,25,75,25,0,0,255,227,254,127,193,254,31,0, + 240,31,1,224,31,3,192,31,7,128,31,15,0,31,14,0, + 31,28,0,31,60,0,31,120,0,31,240,0,31,248,0,31, + 124,0,31,60,0,31,62,0,31,31,0,31,15,128,31,7, + 192,31,3,224,31,3,240,31,1,248,31,0,255,127,224,127, + 255,224,60,20,25,75,20,0,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,48,31,0,96,31,0,96,31,128,224,127,255, + 224,255,255,224,31,25,100,34,1,0,255,0,1,254,127,0, + 1,254,31,128,1,240,31,128,3,240,31,192,3,240,31,192, + 7,240,31,192,7,240,31,224,14,240,29,224,14,240,29,240, + 30,240,28,240,28,240,28,248,28,240,28,248,56,240,28,124, + 56,248,28,124,112,248,28,60,112,248,28,62,224,248,28,30, + 224,248,28,31,224,248,28,31,192,248,28,15,192,248,28,15, + 128,248,28,7,128,248,255,7,7,254,255,3,7,254,25,25, + 100,27,1,0,254,0,255,128,255,0,127,0,31,0,28,0, + 31,128,28,0,31,192,28,0,31,192,28,0,31,224,28,0, + 29,240,28,0,29,248,28,0,28,248,28,0,28,124,28,0, + 28,126,28,0,28,62,28,0,28,31,28,0,28,15,156,0, + 28,15,156,0,28,7,220,0,28,3,252,0,28,3,252,0, + 28,1,252,0,28,0,252,0,28,0,252,0,28,0,124,0, + 127,0,60,0,255,128,12,0,23,25,75,25,1,0,0,126, + 0,3,255,192,7,135,224,14,1,240,30,0,248,60,0,248, + 60,0,124,124,0,124,120,0,126,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,252,0, + 60,124,0,124,124,0,120,62,0,120,62,0,240,31,1,224, + 15,195,192,7,255,0,0,252,0,21,25,75,23,1,0,15, + 254,0,255,255,192,255,7,224,31,3,240,31,1,248,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,1,240, + 31,1,240,31,135,224,31,127,128,31,62,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,127,224,0,255,224,0,27,31,124,25,1,250, + 0,126,0,0,3,255,192,0,7,135,224,0,14,1,240,0, + 30,0,248,0,60,0,248,0,60,0,124,0,124,0,124,0, + 120,0,124,0,248,0,62,0,248,0,62,0,248,0,62,0, + 248,0,62,0,248,0,62,0,248,0,62,0,248,0,62,0, + 252,0,60,0,124,0,124,0,124,0,120,0,62,0,120,0, + 62,0,240,0,31,1,224,0,15,195,192,0,7,255,128,0, + 0,255,0,0,0,7,224,0,0,1,248,96,0,0,255,224, + 0,0,127,192,0,0,31,128,0,0,7,0,23,25,75,24, + 1,0,15,252,0,255,255,128,255,15,192,31,7,192,31,3, + 224,31,3,224,31,3,224,31,3,224,31,3,224,31,7,192, + 31,7,128,31,255,0,31,254,0,31,124,0,31,30,0,31, + 15,0,31,15,0,31,7,128,31,7,192,31,3,224,31,3, + 224,31,1,240,31,1,254,127,192,254,255,224,248,17,25,75, + 21,2,0,3,252,0,31,255,0,60,63,0,112,14,0,240, + 6,0,240,0,0,248,0,0,252,0,0,254,0,0,127,128, + 0,63,224,0,31,248,0,7,254,0,1,255,0,0,127,0, + 0,31,128,0,15,128,0,7,128,192,7,128,192,7,128,224, + 7,0,240,14,0,252,28,0,255,248,0,31,224,0,23,25, + 75,23,0,0,127,255,252,127,255,254,96,124,14,224,124,12, + 192,124,12,192,124,12,192,124,12,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,3,255,128,3,255,128,25, + 25,100,27,1,0,255,224,255,128,127,224,255,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,24, + 0,15,128,56,0,15,128,56,0,7,192,112,0,3,224,224, + 0,1,255,192,0,0,127,0,0,26,25,100,27,0,0,255, + 192,63,192,127,192,63,192,31,0,14,0,31,0,14,0,15, + 128,28,0,15,128,28,0,15,128,28,0,7,192,56,0,7, + 192,56,0,3,224,48,0,3,224,112,0,3,224,112,0,1, + 240,224,0,1,240,224,0,0,240,224,0,0,249,192,0,0, + 249,192,0,0,125,192,0,0,127,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,31,0,0,0,30,0,0,0, + 8,0,0,34,25,125,34,0,0,255,192,224,127,192,127,128, + 224,63,192,30,0,224,14,0,31,1,240,14,0,31,1,240, + 12,0,15,1,248,28,0,15,3,248,28,0,15,131,248,28, + 0,15,131,252,28,0,7,135,60,24,0,7,135,60,56,0, + 7,134,62,56,0,7,206,30,56,0,3,206,31,56,0,3, + 204,15,48,0,3,220,15,112,0,3,252,15,240,0,3,248, + 7,240,0,1,248,7,224,0,1,248,7,224,0,1,240,3, + 224,0,1,240,3,224,0,0,240,1,224,0,0,224,1,192, + 0,0,192,1,128,0,25,25,100,25,0,0,127,225,255,0, + 127,225,255,0,31,128,124,0,15,128,112,0,15,192,240,0, + 7,224,224,0,3,225,192,0,1,243,192,0,1,251,128,0, + 0,255,0,0,0,127,0,0,0,126,0,0,0,62,0,0, + 0,127,0,0,0,127,128,0,0,239,192,0,1,231,192,0, + 1,195,224,0,3,131,240,0,7,129,240,0,7,0,248,0, + 14,0,252,0,30,0,254,0,255,131,255,128,255,131,255,128, + 24,25,75,25,0,0,126,0,255,255,0,255,31,0,56,15, + 128,56,15,192,112,7,192,112,3,224,224,3,224,224,1,241, + 192,1,241,192,0,251,128,0,251,128,0,127,0,0,127,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,1,255,192,1,255, + 192,19,25,75,22,1,0,63,255,224,63,255,224,120,7,192, + 112,15,192,96,15,128,96,31,128,32,63,0,0,62,0,0, + 126,0,0,124,0,0,252,0,1,248,0,1,240,0,3,240, + 0,3,224,0,7,224,0,15,192,0,15,128,0,31,128,32, + 31,0,96,63,0,96,126,0,96,124,0,224,255,255,224,255, + 255,224,11,37,74,14,2,250,255,224,255,224,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,255,224, + 255,224,17,38,114,19,1,249,192,0,0,240,0,0,112,0, + 0,112,0,0,120,0,0,56,0,0,60,0,0,60,0,0, + 28,0,0,30,0,0,30,0,0,14,0,0,15,0,0,7, + 0,0,7,128,0,7,128,0,3,128,0,3,192,0,3,192, + 0,1,192,0,1,224,0,0,224,0,0,224,0,0,240,0, + 0,112,0,0,120,0,0,120,0,0,56,0,0,60,0,0, + 60,0,0,28,0,0,30,0,0,14,0,0,15,0,0,15, + 0,0,7,0,0,7,128,0,1,128,10,37,74,13,1,250, + 255,192,255,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,255,192,255,192,16,19,38,20,2,11, + 0,128,3,128,3,192,3,192,7,224,6,224,14,224,12,112, + 12,112,28,120,24,56,24,56,48,28,48,28,112,28,96,14, + 96,14,224,7,128,6,17,2,6,19,1,251,127,255,128,255, + 255,128,9,10,20,13,0,20,56,0,248,0,252,0,124,0, + 62,0,30,0,15,0,7,0,3,128,1,0,19,18,54,20, + 1,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,20,30,90,21,0,0,6,0, + 0,254,0,0,254,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,31,0,62,127,192,63,255,192,63,199,224,63,1, + 224,62,1,240,62,0,240,62,0,240,62,0,240,62,0,240, + 62,0,240,62,0,224,62,1,224,62,1,192,63,131,128,63, + 255,0,15,252,0,1,240,0,16,18,36,18,1,0,1,252, + 7,255,31,31,60,15,60,7,120,6,120,0,248,0,248,0, + 248,0,248,0,248,0,124,0,126,3,63,7,63,254,15,252, + 3,240,21,30,90,22,1,0,0,1,192,0,63,192,0,63, + 192,0,7,192,0,7,192,0,7,192,0,7,192,0,7,192, + 0,7,192,0,7,192,0,7,192,0,7,192,3,247,192,15, + 255,192,30,31,192,60,15,192,124,7,192,120,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,126,31,192,127,255,248,63,247,248,31,231,224,7, + 131,128,17,18,54,19,1,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,14,0,0,0,63,0,0,255,128,3,143,0,7,134,0, + 7,0,0,15,0,0,15,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,252,0,255,248,0,31,16,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,240,0,255,240,0,21,27,81,22,0, + 247,1,248,24,15,255,248,30,31,240,60,15,128,124,7,192, + 124,7,192,124,7,192,124,7,192,62,7,128,63,15,0,31, + 254,0,3,248,0,7,128,0,15,128,0,31,192,0,31,255, + 0,31,255,224,7,255,240,30,255,248,124,3,248,120,0,248, + 248,0,248,248,0,240,252,1,224,127,3,192,31,255,0,3, + 248,0,22,30,90,23,1,0,6,0,0,254,0,0,254,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,15,128,62, + 63,192,62,127,224,62,255,224,63,199,224,63,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,255,143,248,255, + 223,252,10,27,54,12,1,0,30,0,63,0,63,0,63,0, + 30,0,0,0,0,0,0,0,0,0,14,0,254,0,254,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,15,36, + 72,11,250,247,0,60,0,126,0,126,0,126,0,60,0,0, + 0,0,0,0,0,0,0,28,3,252,3,252,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,120, + 0,120,32,240,120,224,255,192,255,128,60,0,21,30,90,22, + 1,0,6,0,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,15,240,62,7,240,62,7,128,62, + 15,0,62,62,0,62,120,0,62,240,0,63,224,0,63,240, + 0,62,248,0,62,124,0,62,62,0,62,31,0,62,31,128, + 62,15,192,62,7,224,255,131,248,255,129,224,10,30,60,12, + 1,0,6,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,34,18, + 90,34,0,0,6,15,192,248,0,255,63,227,252,0,255,127, + 255,254,0,31,227,252,126,0,31,129,248,62,0,31,1,240, + 62,0,31,1,240,62,0,31,1,240,62,0,31,1,240,62, + 0,31,1,240,62,0,31,1,240,62,0,31,1,240,62,0, + 31,1,240,62,0,31,1,240,62,0,31,1,240,62,0,31, + 1,240,62,0,127,199,252,255,128,255,199,252,255,192,22,18, + 54,23,1,0,14,15,128,254,63,192,254,255,224,63,255,224, + 63,199,224,63,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,255,143,248,255,223,252,19,18,54,21,1,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,20,27,81,22,1,247,14,31,0,254, + 127,128,254,255,192,63,135,224,63,3,224,62,1,240,62,0, + 240,62,0,240,62,0,240,62,0,240,62,0,240,62,0,224, + 62,0,224,62,1,192,63,195,192,63,255,128,62,255,0,62, + 60,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,192,0,255,192,0,21,27,81, + 22,1,247,1,240,64,7,252,224,14,31,192,60,15,192,60, + 7,192,120,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,252,7,192,252,15,192,126,31,192,127,255,192, + 63,247,192,31,231,192,7,135,192,0,7,192,0,7,192,0, + 7,192,0,7,192,0,7,192,0,7,192,0,7,192,0,63, + 240,0,63,248,16,18,36,18,1,0,14,30,254,127,254,255, + 63,255,63,207,31,135,31,6,30,6,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,62,0,255,192,255,224,14,18, + 36,17,2,0,15,192,63,248,120,248,240,112,240,48,248,48, + 254,0,127,128,63,224,15,248,3,248,192,252,192,124,224,60, + 224,60,248,120,255,240,63,192,15,25,50,15,0,0,3,0, + 7,0,15,0,31,0,31,0,31,0,31,0,127,254,255,252, + 31,8,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,140,31,254,31,248,15,224,7,128, + 22,18,54,23,1,0,14,0,224,254,31,224,126,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,7,224, + 63,31,252,31,251,252,31,243,240,15,193,192,20,18,54,20, + 0,0,255,131,240,127,3,240,62,1,192,31,1,192,31,1, + 128,15,3,128,15,131,0,15,135,0,7,199,0,7,206,0, + 3,238,0,3,236,0,1,252,0,1,252,0,0,248,0,0, + 248,0,0,240,0,0,96,0,28,18,72,29,0,0,255,131, + 3,240,127,3,129,240,62,3,128,192,30,7,193,192,31,7, + 193,192,31,15,193,192,15,15,227,128,15,157,227,128,15,157, + 243,128,7,153,243,0,7,248,255,0,7,240,255,0,3,240, + 126,0,3,240,126,0,3,224,62,0,1,224,60,0,1,192, + 28,0,1,128,24,0,21,18,54,21,0,0,255,199,240,255, + 199,240,63,131,192,15,131,128,15,199,0,7,238,0,3,252, + 0,1,248,0,1,248,0,0,252,0,1,254,0,3,190,0, + 7,31,0,6,31,128,12,15,192,28,7,224,127,31,248,255, + 31,248,21,27,81,20,255,247,127,193,248,63,129,248,31,0, + 224,15,128,224,15,129,192,7,193,192,7,193,128,7,195,128, + 3,227,128,3,231,0,1,247,0,1,246,0,0,254,0,0, + 254,0,0,252,0,0,124,0,0,120,0,0,56,0,0,56, + 0,0,112,0,0,112,0,0,224,0,33,224,0,127,192,0, + 127,128,0,255,0,0,124,0,0,16,18,36,19,1,0,63, + 255,63,255,112,62,112,126,96,124,96,248,1,248,1,240,3, + 224,7,224,7,192,15,128,31,129,31,3,62,3,124,3,127, + 255,255,255,11,37,74,14,2,250,0,96,1,224,3,192,7, + 128,15,0,31,0,31,0,31,0,31,0,31,0,31,128,15, + 128,15,128,15,128,15,128,15,0,31,0,62,0,252,0,255, + 0,31,0,15,128,15,128,15,128,15,128,15,128,31,128,31, + 0,31,0,31,0,31,0,31,0,15,0,15,128,7,192,1, + 224,0,96,3,41,41,9,3,248,96,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,192,11,37,74,14,1,250,192,0,240,0,124,0,62,0, + 30,0,31,0,31,0,31,0,31,0,31,0,63,0,62,0, + 62,0,62,0,62,0,62,0,31,0,31,224,7,224,15,128, + 31,0,30,0,62,0,62,0,62,0,62,0,63,0,31,0, + 31,0,31,0,31,0,31,0,30,0,60,0,120,0,240,0, + 192,0,18,6,18,20,1,9,15,0,192,31,192,128,63,225, + 0,99,255,0,192,254,0,128,56,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,10,0, + 0,6,29,29,12,3,245,120,252,252,252,248,112,0,16,48, + 56,56,120,120,120,120,120,120,120,120,120,120,120,124,124,252, + 252,252,248,192,16,25,50,20,2,255,0,192,1,192,1,192, + 1,248,7,255,31,255,61,223,121,198,121,198,113,192,241,192, + 241,192,241,192,241,192,241,192,241,192,121,195,125,199,63,206, + 31,252,15,248,3,192,1,192,1,192,1,128,19,25,75,20, + 1,255,0,127,0,1,255,192,3,199,192,7,131,192,7,1, + 192,15,1,128,15,1,128,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,127,252,0,255,248,0,31,0,0,31, + 0,0,31,0,0,31,0,0,30,0,96,30,0,192,30,0, + 192,63,255,192,127,255,192,255,255,192,64,31,128,17,16,48, + 20,1,4,64,0,128,224,1,128,115,243,128,63,255,0,30, + 30,0,28,14,0,56,7,0,56,7,0,56,7,0,56,7, + 0,56,7,0,28,14,0,62,31,0,127,255,128,243,243,128, + 96,1,128,22,24,72,20,254,0,254,3,252,255,3,252,31, + 0,240,31,128,224,15,193,192,7,193,192,7,227,128,3,227, + 128,3,247,128,1,247,0,0,255,0,0,254,0,0,254,0, + 0,124,0,31,255,240,31,255,224,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,3,41,41,9,3,248,96,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,128,0,0,0,64,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192, + 16,28,56,20,2,0,7,224,31,252,60,124,120,56,120,24, + 124,24,127,0,63,192,63,240,127,248,243,252,240,254,240,63, + 240,31,248,15,126,15,127,15,63,206,15,254,3,252,0,254, + 48,126,48,62,48,30,56,30,60,60,63,248,15,224,14,6, + 12,16,1,21,112,56,120,60,248,124,248,124,240,120,112,56, + 27,26,104,30,1,0,0,63,128,0,1,255,240,0,7,192, + 124,0,15,0,30,0,30,0,15,0,60,31,135,128,56,127, + 227,128,112,225,193,192,113,193,193,192,225,192,193,224,227,128, + 128,224,227,128,0,224,227,128,0,224,227,128,0,224,227,128, + 0,224,227,128,0,224,225,192,1,224,113,224,33,192,112,240, + 113,192,56,127,227,128,60,31,7,128,30,0,15,0,15,0, + 30,0,7,192,124,0,1,255,240,0,0,63,128,0,9,14, + 28,11,1,11,30,0,62,0,103,0,231,0,7,0,63,0, + 103,0,231,0,231,0,255,128,119,0,0,0,255,128,255,128, + 17,18,54,21,1,0,0,128,128,1,129,128,3,3,0,7, + 7,0,14,14,0,30,30,0,60,60,0,124,124,0,248,248, + 0,252,248,0,124,124,0,60,60,0,30,30,0,14,14,0, + 7,7,0,3,3,0,1,129,128,0,128,128,17,9,27,20, + 2,3,255,255,128,255,255,128,0,3,128,0,3,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,0,12,2,4, + 14,1,9,127,240,255,240,13,15,30,14,1,14,15,128,31, + 192,48,96,96,48,95,16,137,136,137,136,143,136,139,8,137, + 8,73,144,124,240,48,96,31,192,15,128,16,3,6,20,2, + 23,255,255,255,255,255,254,10,10,20,14,2,15,15,0,63, + 128,115,192,97,192,225,192,225,192,225,128,243,128,127,0,60, + 0,15,18,36,16,1,3,1,128,3,128,3,128,3,128,3, + 128,3,128,127,254,255,252,3,128,3,128,3,128,3,128,3, + 128,3,0,0,0,0,0,127,254,255,252,11,15,30,13,1, + 12,7,192,31,224,56,224,120,224,112,224,0,192,1,192,3, + 128,3,0,6,0,12,0,24,32,48,96,127,224,255,224,11, + 15,30,13,0,12,7,128,31,224,56,224,56,224,32,224,1, + 192,3,128,7,192,0,224,0,224,0,224,128,224,225,192,127, + 192,31,0,9,10,20,13,4,20,14,0,31,128,31,128,63, + 0,62,0,60,0,120,0,112,0,224,0,64,0,22,27,81, + 23,1,247,14,0,96,254,7,224,254,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,63,7,224,63,143,224,63,255,228, + 63,251,252,59,241,248,57,225,224,56,0,0,56,0,0,60, + 0,0,60,0,0,60,0,0,62,0,0,63,0,0,62,0, + 0,48,0,0,22,30,90,24,1,251,3,255,252,31,255,252, + 63,29,240,124,28,224,124,28,224,248,28,224,248,28,224,248, + 28,224,248,28,224,248,28,224,124,28,224,126,28,224,63,28, + 224,31,252,224,3,252,224,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,224,0,28,224,0,28,224,0,28,224,0,127, + 248,0,255,252,6,6,6,8,1,11,56,124,252,252,252,120, + 8,9,9,9,1,247,24,56,60,63,127,31,30,252,224,10, + 15,30,14,2,12,6,0,62,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,63, + 0,255,192,9,14,28,11,1,11,30,0,63,0,119,0,227, + 128,227,128,227,128,227,128,227,128,119,0,126,0,60,0,0, + 0,255,128,255,128,17,18,54,21,2,0,64,64,0,224,224, + 0,112,112,0,56,56,0,60,60,0,30,30,0,31,31,0, + 15,143,128,15,143,128,15,143,128,15,143,128,31,31,0,30, + 30,0,60,60,0,56,56,0,112,112,0,96,96,0,192,192, + 0,22,24,72,25,2,0,12,0,24,252,0,56,28,0,112, + 28,0,224,28,1,192,28,1,192,28,3,128,28,7,0,28, + 6,0,28,14,0,62,28,0,255,184,0,0,56,112,0,112, + 240,0,225,240,1,193,112,1,195,112,3,134,112,7,4,112, + 14,15,252,14,31,248,28,0,112,56,0,112,112,1,252,21, + 24,72,25,2,0,12,0,56,252,0,112,28,0,112,28,0, + 224,28,1,192,28,3,128,28,3,128,28,7,0,28,14,0, + 28,28,0,62,28,0,255,184,0,0,113,240,0,227,248,0, + 230,56,1,206,56,3,128,48,7,0,96,7,0,224,14,0, + 192,28,1,136,60,7,8,56,15,248,112,15,248,23,24,72, + 25,1,0,31,0,12,63,128,28,115,128,56,227,128,112,7, + 0,224,31,0,224,3,129,192,3,131,128,3,131,0,135,135, + 0,255,14,0,60,28,0,0,28,56,0,56,120,0,112,248, + 0,224,184,0,225,184,1,195,56,3,130,56,7,7,254,7, + 15,252,14,0,56,28,0,56,56,0,254,16,29,58,18,1, + 245,3,192,7,224,7,224,7,224,7,192,3,128,0,0,0, + 0,1,192,1,192,1,192,1,192,3,192,3,128,7,128,15, + 0,31,0,62,0,60,0,124,0,248,0,248,7,248,31,248, + 31,248,31,252,30,126,60,63,248,15,224,25,34,136,25,0, + 0,0,192,0,0,3,224,0,0,3,240,0,0,3,248,0, + 0,0,252,0,0,0,62,0,0,0,15,0,0,0,2,0, + 0,0,0,0,0,0,4,0,0,0,30,0,0,0,62,0, + 0,0,126,0,0,0,127,0,0,0,111,0,0,0,239,128, + 0,0,239,128,0,0,199,128,0,1,199,192,0,1,199,192, + 0,1,131,192,0,3,131,224,0,3,131,224,0,3,255,224, + 0,7,255,240,0,7,0,240,0,6,0,248,0,14,0,248, + 0,14,0,120,0,12,0,124,0,28,0,124,0,28,0,124, + 0,255,129,255,0,255,129,255,128,25,34,136,25,0,0,0, + 1,128,0,0,3,192,0,0,7,224,0,0,15,192,0,0, + 31,0,0,0,124,0,0,0,240,0,0,0,64,0,0,0, + 0,0,0,0,4,0,0,0,30,0,0,0,62,0,0,0, + 126,0,0,0,127,0,0,0,111,0,0,0,239,128,0,0, + 239,128,0,0,199,128,0,1,199,192,0,1,199,192,0,1, + 131,192,0,3,131,224,0,3,131,224,0,3,255,224,0,7, + 255,240,0,7,0,240,0,6,0,248,0,14,0,248,0,14, + 0,120,0,12,0,124,0,28,0,124,0,28,0,124,0,255, + 129,255,0,255,129,255,128,25,34,136,25,0,0,0,28,0, + 0,0,62,0,0,0,127,0,0,0,255,128,0,1,255,128, + 0,1,227,192,0,3,128,224,0,2,0,64,0,0,0,0, + 0,0,4,0,0,0,30,0,0,0,62,0,0,0,126,0, + 0,0,127,0,0,0,111,0,0,0,239,128,0,0,239,128, + 0,0,199,128,0,1,199,192,0,1,199,192,0,1,131,192, + 0,3,131,224,0,3,131,224,0,3,255,224,0,7,255,240, + 0,7,0,240,0,6,0,248,0,14,0,248,0,14,0,120, + 0,12,0,124,0,28,0,124,0,28,0,124,0,255,129,255, + 0,255,129,255,128,25,33,132,25,0,0,0,248,48,0,1, + 254,240,0,3,255,224,0,3,255,192,0,6,31,128,0,6, + 3,0,0,4,0,0,0,0,0,0,0,0,4,0,0,0, + 30,0,0,0,62,0,0,0,126,0,0,0,127,0,0,0, + 111,0,0,0,239,128,0,0,239,128,0,0,199,128,0,1, + 199,192,0,1,199,192,0,1,131,192,0,3,131,224,0,3, + 131,224,0,3,255,224,0,7,255,240,0,7,0,240,0,6, + 0,248,0,14,0,248,0,14,0,120,0,12,0,124,0,28, + 0,124,0,28,0,124,0,255,129,255,0,255,129,255,128,25, + 32,128,25,0,0,1,192,224,0,3,193,224,0,7,195,224, + 0,7,195,224,0,3,193,224,0,1,129,192,0,0,0,0, + 0,0,4,0,0,0,30,0,0,0,62,0,0,0,126,0, + 0,0,127,0,0,0,111,0,0,0,239,128,0,0,239,128, + 0,0,199,128,0,1,199,192,0,1,199,192,0,1,131,192, + 0,3,131,224,0,3,131,224,0,3,255,224,0,7,255,240, + 0,7,0,240,0,6,0,248,0,14,0,248,0,14,0,120, + 0,12,0,124,0,28,0,124,0,28,0,124,0,255,129,255, + 0,255,129,255,128,25,34,136,25,0,0,0,30,0,0,0, + 127,0,0,0,119,0,0,0,103,0,0,0,231,0,0,0, + 119,0,0,0,126,0,0,0,56,0,0,0,0,0,0,0, + 4,0,0,0,30,0,0,0,62,0,0,0,126,0,0,0, + 127,0,0,0,111,0,0,0,239,128,0,0,239,128,0,0, + 199,128,0,1,199,192,0,1,199,192,0,1,131,192,0,3, + 131,224,0,3,131,224,0,3,255,224,0,7,255,240,0,7, + 0,240,0,6,0,248,0,14,0,248,0,14,0,120,0,12, + 0,124,0,28,0,124,0,28,0,124,0,255,129,255,0,255, + 129,255,128,32,25,100,32,0,0,0,255,255,252,0,255,255, + 252,0,31,240,28,0,61,240,12,0,61,240,12,0,57,240, + 12,0,121,240,12,0,113,240,0,0,241,240,0,0,225,240, + 0,0,225,240,0,1,255,255,240,1,255,255,240,3,193,240, + 32,3,129,240,0,3,129,240,0,7,129,240,0,7,1,240, + 0,15,1,240,0,14,1,240,3,14,1,240,3,30,1,240, + 6,28,1,240,14,255,7,255,254,255,15,255,254,20,34,102, + 22,1,247,0,127,128,3,255,240,7,135,224,15,1,224,30, + 0,192,60,0,64,60,0,0,124,0,0,120,0,0,120,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,252,0,0,124,0,0,126,0,0,127, + 0,96,63,129,224,31,255,192,15,255,0,7,254,0,1,240, + 0,0,224,0,0,248,0,0,252,0,1,252,0,0,124,0, + 0,120,0,1,240,0,1,192,0,19,34,102,21,1,0,6, + 0,0,31,0,0,31,128,0,31,192,0,7,224,0,1,240, + 0,0,120,0,0,16,0,0,0,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,19,34,102,21,1,0,0,12,0,0,31, + 0,0,63,0,0,126,0,0,248,0,1,224,0,3,128,0, + 2,0,0,0,0,0,255,255,192,255,255,192,62,1,192,30, + 1,192,30,1,128,30,1,128,30,0,128,30,0,0,30,0, + 0,30,0,0,30,0,0,31,255,0,31,254,0,30,6,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,96,30,0,96,30,0,224,63,1,224,255,255,224,255,255, + 192,19,34,102,21,1,0,0,224,0,1,240,0,3,248,0, + 7,252,0,15,252,0,15,30,0,28,7,0,16,2,0,0, + 0,0,255,255,192,255,255,192,62,1,192,30,1,192,30,1, + 128,30,1,128,30,0,128,30,0,0,30,0,0,30,0,0, + 30,0,0,31,255,0,31,254,0,30,6,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,96,30,0, + 96,30,0,224,63,1,224,255,255,224,255,255,192,19,32,96, + 21,1,0,14,7,0,30,15,0,31,15,128,30,15,0,30, + 15,0,12,6,0,0,0,0,255,255,192,255,255,192,62,1, + 192,30,1,192,30,1,128,30,1,128,30,0,128,30,0,0, + 30,0,0,30,0,0,30,0,0,31,255,0,31,254,0,30, + 6,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,96,30,0,96,30,0,224,63,1,224,255,255,224, + 255,255,192,12,34,68,13,0,0,48,0,248,0,252,0,254, + 0,63,0,15,128,3,192,0,128,0,0,127,240,63,240,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,63,224,127,240,12,34,68, + 13,1,0,0,192,1,224,3,240,7,224,31,128,62,0,120, + 0,32,0,0,0,255,224,127,224,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,127,192,255,224,13,34,68,13,0,0,7,0,15, + 128,31,192,63,224,127,224,248,240,224,56,128,16,0,0,127, + 240,63,240,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,63,224,127, + 240,14,32,64,13,255,0,56,28,120,60,248,124,248,124,120, + 60,112,56,0,0,63,248,31,248,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,31,240,63,248,22,25,75,25,1,0,15,252,0, + 255,255,128,255,15,192,31,3,224,31,1,240,31,1,248,31, + 0,248,31,0,248,31,0,124,31,0,124,31,0,124,255,248, + 124,255,248,124,31,0,124,31,0,124,31,0,124,31,0,120, + 31,0,248,31,0,248,31,1,240,31,1,240,31,3,224,31, + 7,192,127,255,128,255,252,0,25,33,132,27,1,0,0,240, + 48,0,1,254,224,0,3,255,224,0,3,255,192,0,6,31, + 128,0,6,3,0,0,4,0,0,0,0,0,0,0,254,0, + 255,128,255,0,127,0,31,0,28,0,31,128,28,0,31,192, + 28,0,31,192,28,0,31,224,28,0,29,240,28,0,29,248, + 28,0,28,248,28,0,28,124,28,0,28,126,28,0,28,62, + 28,0,28,31,28,0,28,15,156,0,28,15,156,0,28,7, + 220,0,28,3,252,0,28,3,252,0,28,1,252,0,28,0, + 252,0,28,0,252,0,28,0,124,0,127,0,60,0,255,128, + 12,0,23,34,102,25,1,0,1,128,0,7,192,0,7,224, + 0,7,240,0,1,248,0,0,124,0,0,30,0,0,4,0, + 0,0,0,0,126,0,3,255,192,7,135,224,14,1,240,30, + 0,248,60,0,248,60,0,124,124,0,124,120,0,126,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,252,0,60,124,0,124,124,0,120,62,0,120,62, + 0,240,31,1,224,15,195,192,7,255,0,0,252,0,23,34, + 102,25,1,0,0,3,0,0,7,192,0,15,192,0,31,128, + 0,62,0,0,120,0,0,224,0,0,128,0,0,0,0,0, + 126,0,3,255,192,7,135,224,14,1,240,30,0,248,60,0, + 248,60,0,124,124,0,124,120,0,126,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,252, + 0,60,124,0,124,124,0,120,62,0,120,62,0,240,31,1, + 224,15,195,192,7,255,0,0,252,0,23,34,102,25,1,0, + 0,56,0,0,124,0,0,254,0,1,255,0,3,255,0,3, + 199,128,7,1,192,4,0,128,0,0,0,0,126,0,3,255, + 192,7,135,224,14,1,240,30,0,248,60,0,248,60,0,124, + 124,0,124,120,0,126,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,252,0,60,124,0, + 124,124,0,120,62,0,120,62,0,240,31,1,224,15,195,192, + 7,255,0,0,252,0,23,33,99,25,1,0,1,240,96,3, + 252,224,7,255,192,7,255,128,14,63,128,12,6,0,8,0, + 0,0,0,0,0,126,0,3,255,192,7,135,224,14,1,240, + 30,0,248,60,0,248,60,0,124,124,0,124,120,0,126,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,252,0,60,124,0,124,124,0,120,62,0,120, + 62,0,240,31,1,224,15,195,192,7,255,0,0,252,0,23, + 32,96,25,1,0,3,129,192,7,131,192,7,195,224,7,131, + 192,7,131,192,3,1,128,0,0,0,0,126,0,3,255,192, + 7,135,224,14,1,240,30,0,248,60,0,248,60,0,124,124, + 0,124,120,0,126,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,252,0,60,124,0,124, + 124,0,120,62,0,120,62,0,240,31,1,224,15,195,192,7, + 255,0,0,252,0,13,12,24,17,2,5,96,48,240,120,120, + 240,61,224,31,192,15,128,15,128,31,192,57,224,120,240,240, + 120,96,48,23,26,78,25,1,255,0,126,30,3,255,252,7, + 135,248,14,3,240,30,1,248,60,1,252,60,3,252,124,7, + 252,120,15,254,248,15,126,248,30,62,248,62,62,248,60,62, + 248,120,62,248,240,62,248,240,62,253,224,60,127,192,124,127, + 128,120,127,128,120,63,0,240,31,129,224,63,195,192,127,255, + 0,240,252,0,192,0,0,25,34,136,27,1,0,0,192,0, + 0,3,224,0,0,3,240,0,0,3,248,0,0,0,252,0, + 0,0,30,0,0,0,7,0,0,0,2,0,0,0,0,0, + 0,255,224,255,128,127,224,255,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,24,0,15,128,56, + 0,15,128,56,0,7,192,112,0,3,224,224,0,1,255,192, + 0,0,127,0,0,25,34,136,27,1,0,0,1,128,0,0, + 3,224,0,0,7,224,0,0,15,192,0,0,31,0,0,0, + 60,0,0,0,112,0,0,0,64,0,0,0,0,0,0,255, + 224,255,128,127,224,255,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,24,0,15,128,56,0,15, + 128,56,0,7,192,112,0,3,224,224,0,1,255,192,0,0, + 127,0,0,25,34,136,27,1,0,0,28,0,0,0,62,0, + 0,0,127,0,0,0,255,128,0,1,255,192,0,1,227,192, + 0,3,128,224,0,2,0,64,0,0,0,0,0,255,224,255, + 128,127,224,255,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,24,0,15,128,56,0,15,128,56, + 0,7,192,112,0,3,224,224,0,1,255,192,0,0,127,0, + 0,25,32,128,27,1,0,1,192,224,0,3,225,240,0,3, + 225,240,0,3,193,224,0,3,193,224,0,1,128,192,0,0, + 0,0,0,255,224,255,128,127,224,255,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,24,0,15, + 128,56,0,15,128,56,0,7,192,112,0,3,224,224,0,1, + 255,192,0,0,127,0,0,24,34,102,25,0,0,0,1,128, + 0,3,192,0,7,224,0,31,192,0,63,0,0,124,0,0, + 240,0,0,64,0,0,0,0,126,0,255,255,0,255,31,0, + 56,15,128,56,15,192,112,7,192,112,3,224,224,3,224,224, + 1,241,192,1,241,192,0,251,128,0,251,128,0,127,0,0, + 127,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,1,255,192, + 1,255,192,21,25,75,23,1,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,254,0,31,255,192,31,7, + 224,31,3,240,31,1,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,1,240,31,1,240,31,135,224,31, + 127,128,31,62,0,31,0,0,31,0,0,31,0,0,127,224, + 0,255,224,0,23,30,90,25,0,0,0,31,128,0,255,224, + 1,195,240,3,128,248,7,128,248,15,0,124,15,0,124,15, + 0,124,31,0,124,31,0,248,31,1,248,31,7,240,31,15, + 128,31,31,0,31,30,0,31,30,0,31,31,0,31,31,128, + 31,15,224,31,7,248,31,3,252,31,0,252,31,0,126,31, + 48,62,31,48,30,31,48,30,31,56,28,31,60,60,127,63, + 248,255,15,224,19,30,90,20,1,0,7,0,0,31,128,0, + 15,128,0,15,192,0,7,192,0,3,224,0,1,224,0,0, + 224,0,0,112,0,0,48,0,0,0,0,0,0,0,1,248, + 0,15,254,0,62,63,0,124,31,0,124,31,0,112,31,0, + 0,31,0,1,255,0,15,255,0,63,31,0,124,31,0,120, + 31,0,248,31,0,248,31,32,248,127,224,255,223,192,127,159, + 128,62,14,0,19,30,90,20,1,0,0,56,0,0,62,0, + 0,126,0,0,124,0,0,248,0,0,240,0,1,224,0,1, + 192,0,3,128,0,1,0,0,0,0,0,0,0,0,1,248, + 0,15,254,0,62,63,0,124,31,0,124,31,0,112,31,0, + 0,31,0,1,255,0,15,255,0,63,31,0,124,31,0,120, + 31,0,248,31,0,248,31,32,248,127,224,255,223,192,127,159, + 128,62,14,0,19,29,87,20,1,0,1,224,0,1,224,0, + 3,240,0,7,248,0,7,252,0,15,60,0,30,30,0,56, + 7,0,16,2,0,0,0,0,0,0,0,1,248,0,15,254, + 0,62,63,0,124,31,0,124,31,0,112,31,0,0,31,0, + 1,255,0,15,255,0,63,31,0,124,31,0,120,31,0,248, + 31,0,248,31,32,248,127,224,255,223,192,127,159,128,62,14, + 0,19,27,81,20,1,0,7,129,128,15,227,0,31,255,0, + 63,254,0,49,252,0,96,56,0,0,0,0,0,0,0,0, + 0,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,19,27,81,20,1,0,12,6, + 0,30,15,0,62,31,0,62,31,0,62,31,0,28,14,0, + 0,0,0,0,0,0,0,0,0,1,248,0,15,254,0,62, + 63,0,124,31,0,124,31,0,112,31,0,0,31,0,1,255, + 0,15,255,0,63,31,0,124,31,0,120,31,0,248,31,0, + 248,31,32,248,127,224,255,223,192,127,159,128,62,14,0,19, + 28,84,20,1,0,0,240,0,3,248,0,3,184,0,7,56, + 0,7,56,0,7,56,0,3,240,0,1,224,0,0,0,0, + 0,0,0,1,248,0,15,254,0,62,63,0,124,31,0,124, + 31,0,112,31,0,0,31,0,1,255,0,15,255,0,63,31, + 0,124,31,0,120,31,0,248,31,0,248,31,32,248,127,224, + 255,223,192,127,159,128,62,14,0,27,18,72,29,1,0,0, + 252,62,0,7,254,255,128,15,191,199,128,30,15,131,192,62, + 15,129,192,124,15,1,224,0,15,1,224,0,255,255,224,15, + 255,255,192,31,15,0,0,124,15,0,0,120,15,0,0,248, + 15,128,0,248,31,128,96,252,127,225,224,255,227,255,192,127, + 193,255,0,63,0,124,0,17,27,81,18,1,247,1,252,0, + 7,255,0,31,31,0,60,15,0,60,7,0,120,6,0,120, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,252,0,0,126,1,0,127,7,128,63,254,0,31,252,0, + 7,240,0,1,192,0,1,192,0,1,240,0,3,248,0,0, + 248,0,0,248,0,1,240,0,3,224,0,7,0,0,17,30, + 90,19,1,0,3,128,0,15,128,0,31,192,0,7,192,0, + 3,192,0,1,224,0,0,224,0,0,112,0,0,48,0,0, + 56,0,0,0,0,0,0,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,30, + 90,19,1,0,0,60,0,0,63,0,0,62,0,0,124,0, + 0,120,0,0,240,0,0,240,0,1,224,0,1,192,0,1, + 128,0,0,0,0,0,0,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,19,1,0,0,224,0,1,240,0,3,248,0,3,248,0, + 7,252,0,15,30,0,14,14,0,28,7,0,24,3,0,0, + 0,0,0,0,0,1,240,0,15,252,0,30,62,0,60,31, + 0,120,15,0,120,15,128,248,15,128,255,255,128,255,254,0, + 248,0,0,248,0,0,248,0,0,252,0,0,126,1,128,127, + 7,0,63,254,0,31,252,0,7,240,0,17,27,81,19,1, + 0,14,7,0,30,15,0,31,15,128,30,15,0,30,15,0, + 28,14,0,0,0,0,0,0,0,0,0,0,1,240,0,15, + 252,0,30,62,0,60,31,0,120,15,0,120,15,128,248,15, + 128,255,255,128,255,254,0,248,0,0,248,0,0,248,0,0, + 252,0,0,126,1,128,127,7,0,63,254,0,31,252,0,7, + 240,0,11,30,60,12,0,0,56,0,252,0,124,0,62,0, + 62,0,31,0,15,0,7,128,3,128,1,128,0,0,0,0, + 7,0,127,0,127,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 127,192,127,224,11,30,60,12,1,0,3,128,3,224,7,224, + 7,192,15,128,15,0,30,0,28,0,24,0,48,0,0,0, + 0,0,14,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,128,255,192,14,29,58,12,255,0,7,128,7,192, + 15,192,31,224,31,240,60,240,120,120,112,28,192,8,0,0, + 0,0,3,128,63,128,63,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,63,224,63,240,14,27,54,12,255,0,48,24,120,60, + 248,124,248,124,248,124,112,56,0,0,0,0,0,0,3,128, + 63,128,63,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,63,224, + 63,240,18,29,87,20,1,0,3,0,0,31,192,0,63,231, + 192,3,255,0,0,252,0,3,252,0,15,252,0,30,30,0, + 0,31,0,0,15,0,0,15,128,3,231,128,15,255,128,30, + 63,192,60,31,192,124,15,192,120,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,128,248,7,128,124,15,128, + 124,15,0,126,14,0,63,28,0,15,248,0,3,224,0,22, + 27,81,23,1,0,1,192,64,3,248,224,7,255,192,15,255, + 128,12,127,0,24,30,0,0,0,0,0,0,0,0,0,0, + 14,15,128,254,63,192,254,255,224,63,255,224,63,199,224,63, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 255,143,248,255,223,252,19,30,90,21,1,0,3,128,0,15, + 192,0,15,192,0,7,192,0,3,224,0,1,224,0,0,240, + 0,0,112,0,0,56,0,0,16,0,0,0,0,0,0,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,19,30,90,21,1,0,0,28,0,0, + 63,0,0,63,0,0,62,0,0,124,0,0,120,0,0,240, + 0,0,224,0,1,192,0,0,128,0,0,0,0,0,0,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,19,29,87,21,1,0,0,240,0,0, + 240,0,1,248,0,3,252,0,7,252,0,7,158,0,15,15, + 0,28,3,0,8,1,128,0,0,0,0,0,0,1,248,0, + 7,254,0,30,31,128,60,15,128,124,7,192,120,7,192,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 192,124,3,192,124,7,128,62,7,128,63,15,0,15,252,0, + 3,240,0,19,27,81,21,1,0,3,128,128,7,241,192,15, + 255,128,31,255,0,24,254,0,48,60,0,0,0,0,0,0, + 0,0,0,0,1,248,0,7,254,0,30,31,128,60,15,128, + 124,7,192,120,7,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,192,124,3,192,124,7,128,62,7, + 128,63,15,0,15,252,0,3,240,0,19,27,81,21,1,0, + 14,7,0,15,7,128,31,15,128,31,15,128,30,15,0,14, + 7,0,0,0,0,0,0,0,0,0,0,1,248,0,7,254, + 0,30,31,128,60,15,128,124,7,192,120,7,192,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,192,124, + 3,192,124,7,128,62,7,128,63,15,0,15,252,0,3,240, + 0,15,15,30,17,1,3,3,0,7,0,7,0,7,0,6, + 0,0,0,127,254,255,252,0,0,0,0,3,0,7,0,7, + 0,7,0,6,0,19,20,60,21,1,255,0,0,32,1,248, + 224,7,255,192,30,31,128,60,15,192,60,31,192,120,31,224, + 120,59,224,248,115,224,248,227,224,249,227,224,249,195,224,251, + 131,192,127,3,192,126,7,128,62,7,128,63,15,0,63,252, + 0,99,240,0,192,0,0,22,30,90,23,1,0,3,128,0, + 7,192,0,15,192,0,3,224,0,1,224,0,0,240,0,0, + 240,0,0,120,0,0,56,0,0,24,0,0,0,0,0,0, + 0,14,0,224,254,31,224,126,7,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,7,224,63,31,252,31,251, + 252,31,243,240,15,193,192,22,30,90,23,1,0,0,30,0, + 0,31,0,0,63,128,0,62,0,0,124,0,0,120,0,0, + 112,0,0,224,0,0,224,0,1,192,0,0,0,0,0,0, + 0,14,0,224,254,31,224,126,7,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,7,224,63,31,252,31,251, + 252,31,243,240,15,193,192,22,29,87,23,1,0,0,112,0, + 0,248,0,1,248,0,3,252,0,3,254,0,7,158,0,15, + 7,0,14,3,128,8,1,0,0,0,0,0,0,0,14,0, + 224,254,31,224,126,7,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,7,224,63,31,252,31,251,252,31,243, + 240,15,193,192,22,27,81,23,1,0,7,3,128,15,7,128, + 31,15,128,31,15,128,31,15,128,14,7,0,0,0,0,0, + 0,0,0,0,0,14,0,224,254,31,224,126,7,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,7,224,63, + 31,252,31,251,252,31,243,240,15,193,192,21,39,117,20,255, + 247,0,7,0,0,15,192,0,15,128,0,31,0,0,31,0, + 0,62,0,0,60,0,0,120,0,0,112,0,0,96,0,0, + 0,0,0,0,0,127,193,248,63,129,248,31,0,224,15,128, + 224,15,129,192,7,193,192,7,193,128,7,195,128,3,227,128, + 3,231,0,1,247,0,1,246,0,0,254,0,0,254,0,0, + 252,0,0,124,0,0,120,0,0,56,0,0,56,0,0,112, + 0,0,112,0,0,224,0,33,224,0,127,192,0,127,128,0, + 255,0,0,124,0,0,20,39,117,22,1,247,6,0,0,254, + 0,0,254,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,31,0,62,127,128,62,255,192,63,135,224,63,3,224,62, + 1,240,62,0,240,62,0,240,62,0,240,62,0,240,62,0, + 240,62,0,224,62,0,224,62,1,192,63,195,192,63,255,128, + 62,255,0,62,60,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,255,192,0,255,192, + 0,21,36,108,20,255,247,3,129,192,7,195,224,7,195,224, + 7,195,224,7,131,192,7,3,128,0,0,0,0,0,0,0, + 0,0,127,193,248,63,129,248,31,0,224,15,128,224,15,129, + 192,7,193,192,7,193,128,7,195,128,3,227,128,3,231,0, + 1,247,0,1,246,0,0,254,0,0,254,0,0,252,0,0, + 124,0,0,120,0,0,56,0,0,56,0,0,112,0,0,112, + 0,0,224,0,33,224,0,127,192,0,127,128,0,255,0,0, + 124,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=18 h=38 x= 3 y=14 dx=21 dy= 0 ascent=31 len=114 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25n[960] U8G_SECTION(".progmem.u8g_font_gdb25n") = { + 0,61,57,236,242,24,0,0,0,0,42,57,0,31,249,24, + 0,16,16,32,18,1,14,0,192,3,192,3,192,99,140,123, + 158,125,191,127,252,15,224,7,224,63,252,253,190,249,158,51, + 142,3,192,3,192,3,0,15,14,28,17,1,4,1,128,3, + 128,3,128,3,128,3,128,3,128,127,254,255,252,3,128,3, + 128,3,128,3,128,3,128,3,0,8,12,12,11,2,249,30, + 127,255,127,31,31,30,30,60,56,112,96,12,2,4,14,1, + 9,127,240,255,240,6,6,6,11,3,255,56,124,252,252,252, + 120,17,38,114,19,1,249,0,1,128,0,7,128,0,7,128, + 0,15,0,0,15,0,0,15,0,0,30,0,0,30,0,0, + 28,0,0,60,0,0,60,0,0,120,0,0,120,0,0,120, + 0,0,240,0,0,240,0,0,224,0,1,224,0,1,224,0, + 3,192,0,3,192,0,3,192,0,7,128,0,7,128,0,7, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,120,0,0, + 240,0,0,240,0,0,192,0,0,18,24,72,20,1,0,3, + 240,0,7,252,0,30,62,0,28,31,0,60,15,0,120,15, + 128,120,15,128,120,7,128,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,120, + 7,128,124,7,128,124,15,128,60,15,0,62,14,0,31,30, + 0,15,248,0,3,224,0,16,24,48,20,2,0,0,96,3, + 224,31,224,255,224,99,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,7,240,127,255,127,255,16,24,48, + 20,2,0,3,248,15,252,60,62,124,63,120,31,248,31,112, + 31,0,31,0,62,0,60,0,124,0,120,0,240,1,224,3, + 224,3,192,7,128,15,1,30,3,60,3,120,3,127,255,255, + 255,255,255,16,24,48,20,2,0,7,240,31,248,60,124,120, + 62,248,62,248,62,64,62,0,60,0,124,0,240,7,240,7, + 252,0,254,0,62,0,63,0,31,0,31,0,31,0,31,0, + 30,192,62,240,124,127,248,15,192,17,24,72,20,1,0,0, + 12,0,0,124,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,188,0,7,188,0,7,60,0,14,60,0,14,60,0, + 28,60,0,56,60,0,56,60,0,112,60,0,255,255,128,255, + 255,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,3,255,128,3,255,128,17,24,72,20,1,0,31,255,0, + 31,255,128,31,254,0,31,252,0,24,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,63,240,0,63,252,0,48,126, + 0,96,31,0,0,31,0,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,0,31,0,96,31,0,248,126,0,63, + 252,0,7,224,0,17,24,72,20,2,0,0,14,0,0,126, + 0,1,240,0,7,192,0,15,128,0,30,0,0,62,0,0, + 60,0,0,124,0,0,121,248,0,127,254,0,254,63,0,252, + 31,0,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,124,15,128,124,15,0,60,31,0,31,30,0,15,252,0, + 3,240,0,17,24,72,20,2,0,127,255,128,127,255,0,255, + 255,0,255,255,0,224,6,0,192,14,0,128,12,0,0,28, + 0,0,28,0,0,56,0,0,56,0,0,112,0,0,112,0, + 0,240,0,0,224,0,1,224,0,1,192,0,3,192,0,3, + 192,0,7,128,0,7,128,0,15,128,0,31,0,0,28,0, + 0,17,24,72,21,2,0,3,240,0,15,252,0,28,62,0, + 24,31,0,56,31,0,56,31,0,56,31,0,60,62,0,63, + 60,0,31,248,0,15,240,0,7,252,0,14,254,0,62,63, + 0,124,31,128,120,31,128,248,15,128,248,15,128,248,15,128, + 248,15,0,124,31,0,126,62,0,63,252,0,7,224,0,17, + 25,75,20,2,255,3,240,0,15,252,0,30,62,0,60,30, + 0,120,31,0,120,31,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,128,126,63,128,63,255,128,15, + 207,0,0,15,0,0,31,0,0,30,0,0,62,0,0,124, + 0,0,248,0,1,240,0,15,192,0,63,0,0,56,0,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=34 h=41 x= 3 y=20 dx=35 dy= 0 ascent=33 len=136 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x=-6 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =33 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25r[6779] U8G_SECTION(".progmem.u8g_font_gdb25r") = { + 0,61,57,236,242,25,7,167,18,92,32,127,247,33,247,31, + 247,0,0,0,10,0,0,6,30,30,12,3,255,12,60,252, + 252,252,124,120,120,120,120,120,120,120,120,120,120,120,120,56, + 48,48,32,0,0,56,124,252,252,252,120,13,13,26,19,3, + 16,24,56,248,248,248,248,248,248,248,248,248,248,248,240,112, + 240,112,112,112,112,112,112,112,112,112,112,19,23,69,20,1, + 2,0,97,192,0,227,128,0,227,128,0,195,128,1,195,0, + 1,199,0,31,255,224,31,255,224,35,142,0,3,142,0,3, + 14,0,7,12,0,7,28,0,7,28,0,127,255,128,255,255, + 128,14,56,0,12,56,0,28,48,0,28,112,0,24,112,0, + 24,112,0,32,224,0,17,30,90,21,2,253,0,192,0,1, + 192,0,1,192,0,3,240,0,31,254,0,63,255,128,113,223, + 0,225,207,0,225,199,0,225,194,0,241,192,0,255,192,0, + 127,192,0,63,248,0,15,252,0,3,254,0,1,255,0,1, + 223,128,1,207,128,193,199,128,193,199,128,225,199,128,241,207, + 0,253,207,0,255,254,0,63,252,0,7,224,0,1,192,0, + 1,192,0,1,128,0,26,25,100,28,1,0,0,0,3,0, + 15,128,15,0,63,192,14,0,113,224,28,0,112,224,56,0, + 224,112,120,0,224,112,112,0,224,112,224,0,224,113,192,0, + 224,115,192,0,96,103,128,0,112,103,0,0,48,206,62,0, + 31,28,99,0,0,60,195,128,0,56,193,128,0,113,193,192, + 0,225,193,192,1,225,193,192,1,193,193,192,3,129,193,192, + 7,0,225,128,15,0,227,128,14,0,127,0,28,0,62,0, + 27,28,112,28,1,0,0,126,0,0,1,255,128,0,3,143, + 128,0,7,7,192,0,7,7,192,0,15,7,192,0,15,7, + 192,0,15,15,128,0,15,159,0,0,15,191,0,0,7,254, + 0,0,7,248,0,0,7,240,0,0,15,240,255,224,31,241, + 255,192,63,248,61,128,125,252,60,0,124,254,28,0,248,254, + 28,0,248,127,28,0,248,63,184,0,248,31,248,0,248,15, + 240,0,252,7,248,0,124,3,252,0,63,7,255,192,31,254, + 127,128,7,240,28,0,5,13,13,11,3,16,24,248,248,248, + 248,248,248,112,112,112,112,112,112,11,37,74,13,2,250,0, + 64,1,224,3,192,7,128,15,0,15,0,30,0,30,0,60, + 0,60,0,124,0,124,0,120,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,120, + 0,124,0,124,0,124,0,60,0,62,0,30,0,31,0,15, + 0,7,128,3,192,1,224,0,64,11,37,74,13,0,250,64, + 0,240,0,120,0,60,0,30,0,31,0,15,0,15,128,7, + 128,7,192,7,192,7,192,7,192,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,192,7, + 192,7,192,7,192,7,128,15,128,15,0,15,0,30,0,30, + 0,60,0,120,0,240,0,64,0,16,16,32,18,1,14,0, + 192,3,192,3,192,99,140,123,158,125,191,127,252,15,224,7, + 224,63,252,253,190,249,158,51,142,3,192,3,192,3,0,15, + 14,28,17,1,4,1,128,3,128,3,128,3,128,3,128,3, + 128,127,254,255,252,3,128,3,128,3,128,3,128,3,128,3, + 0,8,12,12,11,2,249,30,127,255,127,31,31,30,30,60, + 56,112,96,12,2,4,14,1,9,127,240,255,240,6,6,6, + 11,3,255,56,124,252,252,252,120,17,38,114,19,1,249,0, + 1,128,0,7,128,0,7,128,0,15,0,0,15,0,0,15, + 0,0,30,0,0,30,0,0,28,0,0,60,0,0,60,0, + 0,120,0,0,120,0,0,120,0,0,240,0,0,240,0,0, + 224,0,1,224,0,1,224,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,7,0,0,15,0,0,15,0,0, + 30,0,0,30,0,0,30,0,0,60,0,0,60,0,0,56, + 0,0,120,0,0,120,0,0,240,0,0,240,0,0,192,0, + 0,18,24,72,20,1,0,3,240,0,7,252,0,30,62,0, + 28,31,0,60,15,0,120,15,128,120,15,128,120,7,128,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,120,7,128,124,7,128,124,15,128, + 60,15,0,62,14,0,31,30,0,15,248,0,3,224,0,16, + 24,48,20,2,0,0,96,3,224,31,224,255,224,99,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,7, + 240,127,255,127,255,16,24,48,20,2,0,3,248,15,252,60, + 62,124,63,120,31,248,31,112,31,0,31,0,62,0,60,0, + 124,0,120,0,240,1,224,3,224,3,192,7,128,15,1,30, + 3,60,3,120,3,127,255,255,255,255,255,16,24,48,20,2, + 0,7,240,31,248,60,124,120,62,248,62,248,62,64,62,0, + 60,0,124,0,240,7,240,7,252,0,254,0,62,0,63,0, + 31,0,31,0,31,0,31,0,30,192,62,240,124,127,248,15, + 192,17,24,72,20,1,0,0,12,0,0,124,0,0,124,0, + 0,252,0,1,252,0,1,252,0,3,188,0,7,188,0,7, + 60,0,14,60,0,14,60,0,28,60,0,56,60,0,56,60, + 0,112,60,0,255,255,128,255,255,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,3,255,128,3,255,128,17, + 24,72,20,1,0,31,255,0,31,255,128,31,254,0,31,252, + 0,24,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 63,240,0,63,252,0,48,126,0,96,31,0,0,31,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,31, + 0,96,31,0,248,126,0,63,252,0,7,224,0,17,24,72, + 20,2,0,0,14,0,0,126,0,1,240,0,7,192,0,15, + 128,0,30,0,0,62,0,0,60,0,0,124,0,0,121,248, + 0,127,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,15,128,124,15,0,60, + 31,0,31,30,0,15,252,0,3,240,0,17,24,72,20,2, + 0,127,255,128,127,255,0,255,255,0,255,255,0,224,6,0, + 192,14,0,128,12,0,0,28,0,0,28,0,0,56,0,0, + 56,0,0,112,0,0,112,0,0,240,0,0,224,0,1,224, + 0,1,192,0,3,192,0,3,192,0,7,128,0,7,128,0, + 15,128,0,31,0,0,28,0,0,17,24,72,21,2,0,3, + 240,0,15,252,0,28,62,0,24,31,0,56,31,0,56,31, + 0,56,31,0,60,62,0,63,60,0,31,248,0,15,240,0, + 7,252,0,14,254,0,62,63,0,124,31,128,120,31,128,248, + 15,128,248,15,128,248,15,128,248,15,0,124,31,0,126,62, + 0,63,252,0,7,224,0,17,25,75,20,2,255,3,240,0, + 15,252,0,30,62,0,60,30,0,120,31,0,120,31,0,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 128,126,63,128,63,255,128,15,207,0,0,15,0,0,31,0, + 0,30,0,0,62,0,0,124,0,0,248,0,1,240,0,15, + 192,0,63,0,0,56,0,0,6,19,19,11,3,255,56,124, + 252,252,252,120,0,0,0,0,0,0,0,56,124,252,252,252, + 120,8,26,26,11,2,249,8,62,126,126,126,124,0,0,0, + 0,0,0,0,0,30,127,255,127,31,31,30,30,60,56,112, + 96,16,13,26,18,1,5,0,3,0,31,0,255,3,252,31, + 224,127,128,252,0,254,0,127,192,15,248,1,255,0,63,0, + 6,16,8,16,18,1,7,127,255,255,255,0,0,0,0,0, + 0,0,0,127,255,255,255,16,13,26,18,1,5,112,0,252, + 0,255,128,31,240,3,254,0,127,0,63,0,255,7,248,63, + 224,127,0,248,0,192,0,15,30,60,18,1,255,7,240,31, + 248,60,124,120,126,248,62,248,62,248,62,224,62,0,62,0, + 124,0,124,0,248,0,240,1,240,1,224,1,192,3,192,3, + 128,3,128,3,128,3,128,0,0,0,0,0,0,3,128,7, + 192,15,192,15,192,15,192,7,128,31,34,136,35,2,248,0, + 7,248,0,0,63,255,0,0,255,255,192,1,248,15,224,3, + 192,1,240,7,128,0,248,15,0,0,120,30,0,0,60,60, + 3,195,60,56,15,238,28,120,30,126,30,120,60,62,14,112, + 120,62,14,240,120,62,14,240,248,62,14,240,248,62,14,240, + 248,62,14,240,248,62,14,240,248,62,12,240,248,62,28,240, + 252,62,28,248,124,126,56,120,127,255,240,120,127,191,224,124, + 63,159,192,60,30,15,0,62,0,0,0,31,0,0,0,31, + 128,0,48,15,224,0,240,7,248,7,224,1,255,255,192,0, + 127,255,0,0,15,248,0,25,25,100,25,0,0,0,4,0, + 0,0,30,0,0,0,62,0,0,0,126,0,0,0,127,0, + 0,0,111,0,0,0,239,128,0,0,239,128,0,0,199,128, + 0,1,199,192,0,1,199,192,0,1,131,192,0,3,131,224, + 0,3,131,224,0,3,255,224,0,7,255,240,0,7,0,240, + 0,6,0,248,0,14,0,248,0,14,0,120,0,12,0,124, + 0,28,0,124,0,28,0,124,0,255,129,255,0,255,129,255, + 128,22,25,75,24,0,0,15,254,0,255,255,128,223,15,224, + 31,3,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,224,31,15,128,31,255,0,31,255,224,31,3, + 240,31,1,248,31,0,248,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,248,31,3,240,127,255,224,255, + 255,0,20,25,75,22,1,0,0,127,128,3,255,240,7,135, + 224,15,1,224,30,0,192,60,0,64,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,252,0,0,124,0,0,124,0, + 0,126,0,32,63,0,112,31,193,224,15,255,192,7,255,0, + 1,252,0,22,25,75,25,1,0,15,252,0,255,255,128,255, + 15,192,31,3,224,31,1,240,31,1,248,31,0,248,31,0, + 248,31,0,124,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,120,31,0,248,31, + 0,248,31,1,240,31,1,240,31,3,224,31,7,192,127,255, + 128,255,252,0,19,25,75,21,1,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,18,25,75,20,1,0,255,255,192,255,255, + 192,62,1,192,30,1,192,30,1,192,30,0,192,30,0,128, + 30,0,0,30,0,0,30,0,0,30,0,0,31,254,0,31, + 254,0,30,4,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,62,0,0, + 255,192,0,255,224,0,22,25,75,24,1,0,0,127,128,1, + 255,240,7,131,240,15,1,224,30,0,224,60,0,64,60,0, + 0,124,0,0,120,0,0,248,0,0,248,0,0,248,0,0, + 248,15,252,248,15,252,248,1,240,248,1,240,252,1,240,124, + 1,240,124,1,240,126,1,240,63,1,240,31,129,240,15,255, + 192,7,255,128,0,252,0,25,25,100,27,1,0,255,227,255, + 128,127,227,255,128,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,255,252,0,31,255,252, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,127,195,255,128,255,227,255, + 128,11,25,50,13,1,0,255,224,127,224,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,127,192,255,224,18,33,99,13,251,248,3, + 255,192,1,255,128,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,60,0,0,60,0, + 0,56,0,16,120,0,56,112,0,127,224,0,255,128,0,62, + 0,0,24,25,75,25,0,0,255,227,254,127,193,254,31,0, + 240,31,1,224,31,3,192,31,7,128,31,15,0,31,14,0, + 31,28,0,31,60,0,31,120,0,31,240,0,31,248,0,31, + 124,0,31,60,0,31,62,0,31,31,0,31,15,128,31,7, + 192,31,3,224,31,3,240,31,1,248,31,0,255,127,224,127, + 255,224,60,20,25,75,20,0,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,48,31,0,96,31,0,96,31,128,224,127,255, + 224,255,255,224,31,25,100,34,1,0,255,0,1,254,127,0, + 1,254,31,128,1,240,31,128,3,240,31,192,3,240,31,192, + 7,240,31,192,7,240,31,224,14,240,29,224,14,240,29,240, + 30,240,28,240,28,240,28,248,28,240,28,248,56,240,28,124, + 56,248,28,124,112,248,28,60,112,248,28,62,224,248,28,30, + 224,248,28,31,224,248,28,31,192,248,28,15,192,248,28,15, + 128,248,28,7,128,248,255,7,7,254,255,3,7,254,25,25, + 100,27,1,0,254,0,255,128,255,0,127,0,31,0,28,0, + 31,128,28,0,31,192,28,0,31,192,28,0,31,224,28,0, + 29,240,28,0,29,248,28,0,28,248,28,0,28,124,28,0, + 28,126,28,0,28,62,28,0,28,31,28,0,28,15,156,0, + 28,15,156,0,28,7,220,0,28,3,252,0,28,3,252,0, + 28,1,252,0,28,0,252,0,28,0,252,0,28,0,124,0, + 127,0,60,0,255,128,12,0,23,25,75,25,1,0,0,126, + 0,3,255,192,7,135,224,14,1,240,30,0,248,60,0,248, + 60,0,124,124,0,124,120,0,126,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,252,0, + 60,124,0,124,124,0,120,62,0,120,62,0,240,31,1,224, + 15,195,192,7,255,0,0,252,0,21,25,75,23,1,0,15, + 254,0,255,255,192,255,7,224,31,3,240,31,1,248,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,1,240, + 31,1,240,31,135,224,31,127,128,31,62,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,127,224,0,255,224,0,27,31,124,25,1,250, + 0,126,0,0,3,255,192,0,7,135,224,0,14,1,240,0, + 30,0,248,0,60,0,248,0,60,0,124,0,124,0,124,0, + 120,0,124,0,248,0,62,0,248,0,62,0,248,0,62,0, + 248,0,62,0,248,0,62,0,248,0,62,0,248,0,62,0, + 252,0,60,0,124,0,124,0,124,0,120,0,62,0,120,0, + 62,0,240,0,31,1,224,0,15,195,192,0,7,255,128,0, + 0,255,0,0,0,7,224,0,0,1,248,96,0,0,255,224, + 0,0,127,192,0,0,31,128,0,0,7,0,23,25,75,24, + 1,0,15,252,0,255,255,128,255,15,192,31,7,192,31,3, + 224,31,3,224,31,3,224,31,3,224,31,3,224,31,7,192, + 31,7,128,31,255,0,31,254,0,31,124,0,31,30,0,31, + 15,0,31,15,0,31,7,128,31,7,192,31,3,224,31,3, + 224,31,1,240,31,1,254,127,192,254,255,224,248,17,25,75, + 21,2,0,3,252,0,31,255,0,60,63,0,112,14,0,240, + 6,0,240,0,0,248,0,0,252,0,0,254,0,0,127,128, + 0,63,224,0,31,248,0,7,254,0,1,255,0,0,127,0, + 0,31,128,0,15,128,0,7,128,192,7,128,192,7,128,224, + 7,0,240,14,0,252,28,0,255,248,0,31,224,0,23,25, + 75,23,0,0,127,255,252,127,255,254,96,124,14,224,124,12, + 192,124,12,192,124,12,192,124,12,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,3,255,128,3,255,128,25, + 25,100,27,1,0,255,224,255,128,127,224,255,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,24, + 0,15,128,56,0,15,128,56,0,7,192,112,0,3,224,224, + 0,1,255,192,0,0,127,0,0,26,25,100,27,0,0,255, + 192,63,192,127,192,63,192,31,0,14,0,31,0,14,0,15, + 128,28,0,15,128,28,0,15,128,28,0,7,192,56,0,7, + 192,56,0,3,224,48,0,3,224,112,0,3,224,112,0,1, + 240,224,0,1,240,224,0,0,240,224,0,0,249,192,0,0, + 249,192,0,0,125,192,0,0,127,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,31,0,0,0,30,0,0,0, + 8,0,0,34,25,125,34,0,0,255,192,224,127,192,127,128, + 224,63,192,30,0,224,14,0,31,1,240,14,0,31,1,240, + 12,0,15,1,248,28,0,15,3,248,28,0,15,131,248,28, + 0,15,131,252,28,0,7,135,60,24,0,7,135,60,56,0, + 7,134,62,56,0,7,206,30,56,0,3,206,31,56,0,3, + 204,15,48,0,3,220,15,112,0,3,252,15,240,0,3,248, + 7,240,0,1,248,7,224,0,1,248,7,224,0,1,240,3, + 224,0,1,240,3,224,0,0,240,1,224,0,0,224,1,192, + 0,0,192,1,128,0,25,25,100,25,0,0,127,225,255,0, + 127,225,255,0,31,128,124,0,15,128,112,0,15,192,240,0, + 7,224,224,0,3,225,192,0,1,243,192,0,1,251,128,0, + 0,255,0,0,0,127,0,0,0,126,0,0,0,62,0,0, + 0,127,0,0,0,127,128,0,0,239,192,0,1,231,192,0, + 1,195,224,0,3,131,240,0,7,129,240,0,7,0,248,0, + 14,0,252,0,30,0,254,0,255,131,255,128,255,131,255,128, + 24,25,75,25,0,0,126,0,255,255,0,255,31,0,56,15, + 128,56,15,192,112,7,192,112,3,224,224,3,224,224,1,241, + 192,1,241,192,0,251,128,0,251,128,0,127,0,0,127,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,1,255,192,1,255, + 192,19,25,75,22,1,0,63,255,224,63,255,224,120,7,192, + 112,15,192,96,15,128,96,31,128,32,63,0,0,62,0,0, + 126,0,0,124,0,0,252,0,1,248,0,1,240,0,3,240, + 0,3,224,0,7,224,0,15,192,0,15,128,0,31,128,32, + 31,0,96,63,0,96,126,0,96,124,0,224,255,255,224,255, + 255,224,11,37,74,14,2,250,255,224,255,224,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,255,224, + 255,224,17,38,114,19,1,249,192,0,0,240,0,0,112,0, + 0,112,0,0,120,0,0,56,0,0,60,0,0,60,0,0, + 28,0,0,30,0,0,30,0,0,14,0,0,15,0,0,7, + 0,0,7,128,0,7,128,0,3,128,0,3,192,0,3,192, + 0,1,192,0,1,224,0,0,224,0,0,224,0,0,240,0, + 0,112,0,0,120,0,0,120,0,0,56,0,0,60,0,0, + 60,0,0,28,0,0,30,0,0,14,0,0,15,0,0,15, + 0,0,7,0,0,7,128,0,1,128,10,37,74,13,1,250, + 255,192,255,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,255,192,255,192,16,19,38,20,2,11, + 0,128,3,128,3,192,3,192,7,224,6,224,14,224,12,112, + 12,112,28,120,24,56,24,56,48,28,48,28,112,28,96,14, + 96,14,224,7,128,6,17,2,6,19,1,251,127,255,128,255, + 255,128,9,10,20,13,0,20,56,0,248,0,252,0,124,0, + 62,0,30,0,15,0,7,0,3,128,1,0,19,18,54,20, + 1,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,20,30,90,21,0,0,6,0, + 0,254,0,0,254,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,31,0,62,127,192,63,255,192,63,199,224,63,1, + 224,62,1,240,62,0,240,62,0,240,62,0,240,62,0,240, + 62,0,240,62,0,224,62,1,224,62,1,192,63,131,128,63, + 255,0,15,252,0,1,240,0,16,18,36,18,1,0,1,252, + 7,255,31,31,60,15,60,7,120,6,120,0,248,0,248,0, + 248,0,248,0,248,0,124,0,126,3,63,7,63,254,15,252, + 3,240,21,30,90,22,1,0,0,1,192,0,63,192,0,63, + 192,0,7,192,0,7,192,0,7,192,0,7,192,0,7,192, + 0,7,192,0,7,192,0,7,192,0,7,192,3,247,192,15, + 255,192,30,31,192,60,15,192,124,7,192,120,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,126,31,192,127,255,248,63,247,248,31,231,224,7, + 131,128,17,18,54,19,1,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,14,0,0,0,63,0,0,255,128,3,143,0,7,134,0, + 7,0,0,15,0,0,15,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,252,0,255,248,0,31,16,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,240,0,255,240,0,21,27,81,22,0, + 247,1,248,24,15,255,248,30,31,240,60,15,128,124,7,192, + 124,7,192,124,7,192,124,7,192,62,7,128,63,15,0,31, + 254,0,3,248,0,7,128,0,15,128,0,31,192,0,31,255, + 0,31,255,224,7,255,240,30,255,248,124,3,248,120,0,248, + 248,0,248,248,0,240,252,1,224,127,3,192,31,255,0,3, + 248,0,22,30,90,23,1,0,6,0,0,254,0,0,254,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,15,128,62, + 63,192,62,127,224,62,255,224,63,199,224,63,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,255,143,248,255, + 223,252,10,27,54,12,1,0,30,0,63,0,63,0,63,0, + 30,0,0,0,0,0,0,0,0,0,14,0,254,0,254,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,15,36, + 72,11,250,247,0,60,0,126,0,126,0,126,0,60,0,0, + 0,0,0,0,0,0,0,28,3,252,3,252,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,120, + 0,120,32,240,120,224,255,192,255,128,60,0,21,30,90,22, + 1,0,6,0,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,15,240,62,7,240,62,7,128,62, + 15,0,62,62,0,62,120,0,62,240,0,63,224,0,63,240, + 0,62,248,0,62,124,0,62,62,0,62,31,0,62,31,128, + 62,15,192,62,7,224,255,131,248,255,129,224,10,30,60,12, + 1,0,6,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,34,18, + 90,34,0,0,6,15,192,248,0,255,63,227,252,0,255,127, + 255,254,0,31,227,252,126,0,31,129,248,62,0,31,1,240, + 62,0,31,1,240,62,0,31,1,240,62,0,31,1,240,62, + 0,31,1,240,62,0,31,1,240,62,0,31,1,240,62,0, + 31,1,240,62,0,31,1,240,62,0,31,1,240,62,0,31, + 1,240,62,0,127,199,252,255,128,255,199,252,255,192,22,18, + 54,23,1,0,14,15,128,254,63,192,254,255,224,63,255,224, + 63,199,224,63,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,255,143,248,255,223,252,19,18,54,21,1,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,20,27,81,22,1,247,14,31,0,254, + 127,128,254,255,192,63,135,224,63,3,224,62,1,240,62,0, + 240,62,0,240,62,0,240,62,0,240,62,0,240,62,0,224, + 62,0,224,62,1,192,63,195,192,63,255,128,62,255,0,62, + 60,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,192,0,255,192,0,21,27,81, + 22,1,247,1,240,64,7,252,224,14,31,192,60,15,192,60, + 7,192,120,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,252,7,192,252,15,192,126,31,192,127,255,192, + 63,247,192,31,231,192,7,135,192,0,7,192,0,7,192,0, + 7,192,0,7,192,0,7,192,0,7,192,0,7,192,0,63, + 240,0,63,248,16,18,36,18,1,0,14,30,254,127,254,255, + 63,255,63,207,31,135,31,6,30,6,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,62,0,255,192,255,224,14,18, + 36,17,2,0,15,192,63,248,120,248,240,112,240,48,248,48, + 254,0,127,128,63,224,15,248,3,248,192,252,192,124,224,60, + 224,60,248,120,255,240,63,192,15,25,50,15,0,0,3,0, + 7,0,15,0,31,0,31,0,31,0,31,0,127,254,255,252, + 31,8,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,140,31,254,31,248,15,224,7,128, + 22,18,54,23,1,0,14,0,224,254,31,224,126,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,7,224, + 63,31,252,31,251,252,31,243,240,15,193,192,20,18,54,20, + 0,0,255,131,240,127,3,240,62,1,192,31,1,192,31,1, + 128,15,3,128,15,131,0,15,135,0,7,199,0,7,206,0, + 3,238,0,3,236,0,1,252,0,1,252,0,0,248,0,0, + 248,0,0,240,0,0,96,0,28,18,72,29,0,0,255,131, + 3,240,127,3,129,240,62,3,128,192,30,7,193,192,31,7, + 193,192,31,15,193,192,15,15,227,128,15,157,227,128,15,157, + 243,128,7,153,243,0,7,248,255,0,7,240,255,0,3,240, + 126,0,3,240,126,0,3,224,62,0,1,224,60,0,1,192, + 28,0,1,128,24,0,21,18,54,21,0,0,255,199,240,255, + 199,240,63,131,192,15,131,128,15,199,0,7,238,0,3,252, + 0,1,248,0,1,248,0,0,252,0,1,254,0,3,190,0, + 7,31,0,6,31,128,12,15,192,28,7,224,127,31,248,255, + 31,248,21,27,81,20,255,247,127,193,248,63,129,248,31,0, + 224,15,128,224,15,129,192,7,193,192,7,193,128,7,195,128, + 3,227,128,3,231,0,1,247,0,1,246,0,0,254,0,0, + 254,0,0,252,0,0,124,0,0,120,0,0,56,0,0,56, + 0,0,112,0,0,112,0,0,224,0,33,224,0,127,192,0, + 127,128,0,255,0,0,124,0,0,16,18,36,19,1,0,63, + 255,63,255,112,62,112,126,96,124,96,248,1,248,1,240,3, + 224,7,224,7,192,15,128,31,129,31,3,62,3,124,3,127, + 255,255,255,11,37,74,14,2,250,0,96,1,224,3,192,7, + 128,15,0,31,0,31,0,31,0,31,0,31,0,31,128,15, + 128,15,128,15,128,15,128,15,0,31,0,62,0,252,0,255, + 0,31,0,15,128,15,128,15,128,15,128,15,128,31,128,31, + 0,31,0,31,0,31,0,31,0,15,0,15,128,7,192,1, + 224,0,96,3,41,41,9,3,248,96,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,192,11,37,74,14,1,250,192,0,240,0,124,0,62,0, + 30,0,31,0,31,0,31,0,31,0,31,0,63,0,62,0, + 62,0,62,0,62,0,62,0,31,0,31,224,7,224,15,128, + 31,0,30,0,62,0,62,0,62,0,62,0,63,0,31,0, + 31,0,31,0,31,0,31,0,30,0,60,0,120,0,240,0, + 192,0,18,6,18,20,1,9,15,0,192,31,192,128,63,225, + 0,99,255,0,192,254,0,128,56,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=41 h=49 x= 5 y=27 dx=42 dy= 0 ascent=42 len=210 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x=-7 y=-13 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =42 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30[19508] U8G_SECTION(".progmem.u8g_font_gdb30") = { + 0,74,69,232,239,30,10,50,24,78,32,255,245,42,243,38, + 245,0,0,0,12,0,0,8,36,36,15,3,255,6,31,127, + 126,126,126,126,126,126,126,62,62,62,62,62,62,62,60,60, + 60,60,60,60,28,28,24,0,0,0,62,127,255,255,255,254, + 124,16,16,32,23,3,19,14,3,126,31,254,63,254,63,124, + 63,124,63,124,63,124,63,124,30,124,30,124,30,60,30,60, + 30,56,30,56,30,56,14,22,27,81,24,2,3,0,56,48, + 0,120,112,0,112,240,0,112,224,0,240,224,0,225,224,0, + 225,192,31,255,252,31,255,252,63,255,252,3,195,128,3,195, + 128,3,135,128,3,135,0,7,135,0,7,135,0,255,255,240, + 255,255,240,255,255,224,14,30,0,14,28,0,30,28,0,28, + 60,0,28,60,0,28,56,0,60,56,0,56,112,0,20,36, + 108,24,2,252,0,48,0,0,112,0,0,112,0,0,112,0, + 3,255,0,15,255,224,63,255,240,124,119,240,120,115,224,240, + 113,224,240,112,192,248,112,0,252,112,0,255,112,0,127,240, + 0,63,248,0,31,254,0,7,255,128,0,255,192,0,127,224, + 0,119,224,0,113,240,0,113,240,224,112,240,224,112,240,240, + 112,240,248,112,224,252,113,224,255,119,192,255,255,192,63,255, + 0,7,252,0,0,112,0,0,112,0,0,112,0,0,96,0, + 31,30,120,34,2,0,0,0,0,16,7,192,0,240,31,224, + 1,224,56,240,3,192,120,120,3,128,112,120,7,128,240,60, + 15,0,240,60,30,0,240,60,28,0,240,60,60,0,240,60, + 120,0,240,60,240,0,112,57,224,0,120,57,224,0,56,115, + 192,0,31,231,131,224,15,143,12,48,0,15,24,56,0,30, + 56,28,0,60,56,28,0,120,120,30,0,120,120,30,0,240, + 120,30,1,224,120,30,3,192,120,30,3,192,120,28,7,128, + 60,60,15,0,30,56,30,0,15,240,28,0,7,192,31,34, + 136,33,2,0,0,31,128,0,0,127,224,0,0,227,240,0, + 1,225,248,0,3,193,248,0,3,193,248,0,7,193,248,0, + 7,193,248,0,7,195,240,0,7,195,240,0,7,231,224,0, + 7,239,192,0,3,255,128,0,3,255,0,0,3,252,0,0, + 1,248,0,0,7,252,63,252,15,252,127,254,31,254,31,184, + 63,127,15,128,62,127,7,128,126,63,135,128,252,31,199,128, + 252,31,231,128,252,15,247,0,252,7,255,0,252,3,254,0, + 252,1,252,0,254,0,255,0,127,0,127,128,127,129,255,248, + 63,255,223,248,15,255,15,244,3,252,7,128,7,16,16,13, + 3,19,14,126,254,254,124,124,124,124,124,124,124,60,60,56, + 56,56,13,45,90,16,3,249,0,16,0,120,0,240,1,224, + 3,224,7,192,7,128,15,128,31,0,31,0,63,0,62,0, + 62,0,126,0,126,0,126,0,124,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,126,0,126,0,126,0,126,0,62,0,63,0,63,0, + 31,0,15,128,15,128,7,192,3,192,1,224,0,240,0,120, + 0,16,13,44,88,16,0,249,64,0,240,0,120,0,60,0, + 30,0,31,0,15,128,15,192,7,192,7,224,7,224,3,224, + 3,240,3,240,3,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 3,240,3,240,3,240,3,224,3,224,7,224,7,192,7,192, + 15,128,15,0,31,0,62,0,60,0,120,0,240,0,64,0, + 19,20,60,21,1,17,0,48,0,1,240,0,1,240,0,32, + 240,0,112,225,128,120,227,192,126,231,224,127,255,224,31,255, + 0,3,248,0,3,248,0,31,255,0,127,255,192,254,231,192, + 124,227,192,48,225,192,0,240,128,0,240,0,1,240,0,0, + 192,0,18,18,54,20,1,4,0,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,127,255,192, + 255,255,192,255,255,128,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,192,0,10,15, + 30,13,1,247,7,0,63,128,255,192,127,192,63,192,15,192, + 15,192,15,128,15,128,15,0,31,0,30,0,60,0,120,0, + 48,0,15,3,6,17,1,11,127,254,127,252,255,252,8,7, + 7,13,3,255,62,127,255,255,255,254,124,21,46,138,23,1, + 248,0,0,56,0,0,248,0,0,240,0,1,240,0,1,240, + 0,1,224,0,3,224,0,3,224,0,3,192,0,7,192,0, + 7,128,0,15,128,0,15,128,0,15,0,0,31,0,0,31, + 0,0,30,0,0,62,0,0,60,0,0,124,0,0,124,0, + 0,120,0,0,248,0,0,248,0,0,240,0,1,240,0,1, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,120, + 0,0,248,0,0,248,0,0,192,0,0,22,29,87,24,1, + 0,0,252,0,3,255,0,7,143,192,15,7,224,30,3,224, + 62,1,240,62,1,240,124,1,248,124,1,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,124,0,248,124,0,248, + 126,0,248,62,1,240,62,1,240,31,1,224,31,3,192,15, + 135,128,3,255,0,0,252,0,19,29,87,24,3,0,0,16, + 0,0,248,0,7,248,0,63,248,0,255,248,0,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,15,255,0,127, + 255,224,127,255,224,20,29,87,24,1,0,0,255,0,7,255, + 192,15,143,224,63,7,224,62,3,240,126,3,240,126,3,240, + 120,3,240,0,3,240,0,7,224,0,7,224,0,15,192,0, + 15,128,0,31,128,0,31,0,0,62,0,0,124,0,0,248, + 0,0,248,0,1,240,0,3,224,32,7,192,48,15,128,48, + 15,0,48,30,0,112,63,255,240,127,255,240,255,255,240,127, + 255,240,20,29,87,24,1,0,1,254,0,7,255,128,31,31, + 192,63,15,192,62,7,224,126,7,224,60,7,224,0,7,224, + 0,7,192,0,15,192,0,31,128,0,127,0,1,254,0,1, + 255,128,2,63,192,0,15,224,0,7,224,0,3,240,0,3, + 240,0,3,240,0,3,240,0,3,240,0,3,240,64,7,224, + 96,15,224,252,31,192,63,255,128,31,254,0,3,248,0,21, + 29,87,25,2,0,0,1,128,0,15,128,0,31,128,0,63, + 128,0,63,128,0,127,128,0,255,128,0,239,128,1,239,128, + 3,207,128,3,143,128,7,143,128,7,15,128,14,15,128,30, + 15,128,28,15,128,56,15,128,56,15,128,127,255,248,255,255, + 240,255,255,224,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,31,192,1,255,240,1,255,240,20,29,87,24, + 2,0,0,0,32,31,255,240,31,255,192,31,255,192,31,255, + 128,28,0,0,28,0,0,28,0,0,60,0,0,60,0,0, + 56,0,0,59,252,0,63,255,0,63,255,128,120,31,192,32, + 15,224,0,7,224,0,7,240,0,3,240,0,3,240,0,3, + 240,0,3,240,0,3,240,0,7,224,64,7,224,224,15,192, + 252,31,128,63,254,0,7,248,0,20,29,87,24,2,0,0, + 1,128,0,31,192,0,127,0,1,252,0,3,240,0,7,192, + 0,15,128,0,31,128,0,63,0,0,62,0,0,126,0,0, + 124,126,0,125,255,128,255,255,192,255,15,224,254,7,224,252, + 7,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 240,126,3,224,126,3,224,62,3,192,31,7,192,15,143,128, + 7,255,0,1,248,0,21,28,84,24,2,0,127,255,240,127, + 255,248,127,255,240,127,255,224,112,1,224,224,1,224,192,1, + 192,64,3,192,0,3,128,0,7,128,0,7,0,0,15,0, + 0,15,0,0,30,0,0,30,0,0,60,0,0,60,0,0, + 124,0,0,120,0,0,248,0,0,240,0,1,240,0,1,240, + 0,3,224,0,3,224,0,7,224,0,15,192,0,6,0,0, + 20,29,87,24,2,0,0,252,0,7,255,128,15,31,192,30, + 15,192,28,7,224,60,7,224,60,7,224,60,7,224,62,15, + 192,63,143,128,31,255,0,31,254,0,15,252,0,3,255,0, + 7,255,128,15,255,192,31,31,224,62,15,240,126,7,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,224,126,3, + 224,126,7,192,63,15,128,31,254,0,3,248,0,20,29,87, + 24,2,255,1,252,0,7,255,0,15,31,128,30,15,192,62, + 7,224,124,7,224,124,7,224,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,254,3,240,126,7,240,127,15,240, + 63,255,240,31,251,224,7,227,224,0,7,224,0,7,192,0, + 7,192,0,15,128,0,31,0,0,62,0,0,252,0,3,248, + 0,15,224,0,63,128,0,56,0,0,8,23,23,13,3,255, + 62,127,255,255,255,254,124,0,0,0,0,0,0,0,0,0, + 62,127,255,255,255,254,124,10,31,62,13,1,247,15,128,31, + 192,63,192,63,192,63,192,31,128,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,63, + 128,255,192,127,192,63,192,15,192,15,192,15,128,15,128,15, + 0,31,0,30,0,60,0,120,0,48,0,20,16,48,22,1, + 6,0,0,96,0,1,240,0,15,224,0,127,224,3,255,128, + 15,252,0,127,224,0,127,0,0,254,0,0,255,192,0,63, + 248,0,7,254,0,1,255,192,0,63,224,0,7,240,0,0, + 192,20,10,30,22,1,8,127,255,224,127,255,240,255,255,224, + 0,0,0,0,0,0,0,0,0,0,0,0,127,255,224,127, + 255,240,255,255,224,20,16,48,22,1,6,48,0,0,126,0, + 0,255,192,0,63,240,0,15,254,0,1,255,192,0,63,224, + 0,7,240,0,31,224,0,127,224,3,255,0,31,248,0,127, + 224,0,127,0,0,248,0,0,64,0,0,19,35,105,22,2, + 255,1,254,0,15,255,128,63,31,192,126,15,192,124,7,224, + 252,7,224,252,7,224,252,7,224,240,7,224,0,7,192,0, + 15,192,0,15,128,0,31,128,0,63,0,0,126,0,0,124, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,128,0,0,0,0,0, + 0,0,0,0,0,1,240,0,3,248,0,7,248,0,7,248, + 0,7,248,0,7,240,0,3,224,0,38,42,210,42,2,246, + 0,0,255,192,0,0,7,255,248,0,0,31,255,254,0,0, + 127,255,255,0,0,255,0,255,128,1,248,0,31,192,3,224, + 0,7,224,7,192,0,3,224,15,128,0,1,240,31,0,0, + 1,240,31,0,252,24,248,62,3,254,120,248,60,7,255,240, + 120,124,15,135,240,124,124,31,3,240,124,120,31,3,240,60, + 120,62,3,240,60,248,62,3,240,60,248,126,3,240,60,248, + 126,3,240,60,248,126,3,240,60,248,126,3,240,60,248,126, + 3,240,56,248,126,3,240,56,248,126,3,240,120,252,127,3, + 240,112,252,63,7,240,224,124,63,143,249,224,124,31,255,255, + 192,126,31,251,255,128,62,15,241,254,0,63,3,224,248,0, + 63,128,0,0,0,31,192,0,0,0,15,224,0,0,128,15, + 240,0,1,192,7,252,0,7,192,3,255,128,127,128,0,255, + 255,254,0,0,127,255,252,0,0,31,255,240,0,0,1,255, + 0,0,30,30,120,30,0,0,0,1,128,0,0,7,128,0, + 0,15,192,0,0,31,192,0,0,31,224,0,0,31,224,0, + 0,63,224,0,0,63,240,0,0,59,240,0,0,121,240,0, + 0,121,248,0,0,113,248,0,0,240,252,0,0,240,252,0, + 0,224,252,0,1,224,126,0,1,224,126,0,1,192,126,0, + 3,255,255,0,3,255,255,0,3,128,31,0,7,128,31,128, + 7,0,31,128,7,0,15,192,15,0,15,192,14,0,15,192, + 14,0,7,224,30,0,7,224,255,192,63,252,255,192,63,252, + 26,30,120,29,0,0,3,255,128,0,255,255,240,0,127,193, + 252,0,15,192,126,0,15,192,127,0,15,192,63,0,15,192, + 63,0,15,192,63,0,15,192,63,0,15,192,62,0,15,192, + 126,0,15,192,252,0,15,195,248,0,15,255,224,0,15,255, + 252,0,15,192,254,0,15,192,63,0,15,192,31,128,15,192, + 31,128,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,128,15,192,31,128,15,192, + 63,0,31,192,254,0,127,255,252,0,127,255,224,0,24,30, + 90,27,1,0,0,31,224,0,255,252,1,255,254,7,224,254, + 15,128,126,31,128,60,31,0,28,62,0,0,62,0,0,126, + 0,0,124,0,0,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 126,0,0,126,0,0,127,0,0,63,128,2,63,192,15,31, + 240,62,15,255,248,7,255,240,1,255,192,0,127,0,29,30, + 120,31,0,0,3,255,192,0,255,255,248,0,127,192,254,0, + 143,192,63,128,15,192,31,192,15,192,15,192,15,192,7,224, + 15,192,7,240,15,192,3,240,15,192,3,240,15,192,3,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,240,15,192,3,240,15,192,3,240,15,192,7,224, + 15,192,7,224,15,192,15,192,15,192,31,128,15,192,63,0, + 31,224,254,0,127,255,248,0,127,255,192,0,23,30,90,25, + 1,0,255,255,248,255,255,252,63,128,56,31,128,56,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,224,31,255,224,31, + 128,192,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,6,31,128,6,31,128,14, + 31,128,14,63,192,30,255,255,254,255,255,252,22,30,90,24, + 1,0,255,255,248,255,255,252,63,128,60,31,128,28,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,192,31,255,224,31, + 129,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,63,192,0,255,248,0,255,248,0,27,30,120,29, + 1,0,0,15,248,0,0,127,255,128,1,240,127,128,3,192, + 63,0,7,128,15,0,15,0,14,0,31,0,0,0,62,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,124,0, + 0,0,252,0,0,0,252,0,0,0,252,1,255,224,252,1, + 255,224,252,0,127,192,252,0,31,128,252,0,31,128,254,0, + 31,128,126,0,31,128,127,0,31,128,127,0,31,128,63,128, + 31,128,63,192,31,128,31,240,63,0,15,255,254,0,7,255, + 252,0,1,255,240,0,0,63,128,0,30,30,120,33,1,0, + 255,240,63,252,255,240,63,252,63,192,15,240,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,255,255,224,31,255,255,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,63,192,15,240, + 255,240,63,252,255,240,63,252,12,30,60,16,2,0,255,240, + 255,240,63,192,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,21,40,120,16,249,246, + 0,255,248,0,255,248,0,31,224,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,192,0,15,192, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,128,0,15,128, + 0,15,128,0,31,0,24,30,0,62,62,0,127,248,0,255, + 240,0,127,224,0,31,128,0,29,30,120,30,1,0,255,240, + 255,224,255,240,255,224,63,192,31,0,31,128,62,0,31,128, + 124,0,31,128,248,0,31,129,240,0,31,129,224,0,31,131, + 192,0,31,135,128,0,31,143,0,0,31,159,0,0,31,190, + 0,0,31,188,0,0,31,252,0,0,31,254,0,0,31,191, + 0,0,31,159,128,0,31,143,192,0,31,135,224,0,31,135, + 240,0,31,131,248,0,31,129,252,0,31,128,254,0,31,128, + 126,0,31,128,127,0,31,128,63,192,63,192,31,240,255,240, + 15,248,255,240,7,128,23,30,90,24,1,0,255,240,0,255, + 240,0,63,192,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,4,31,128,6,31,128,14,31,128,30,63,192,60, + 255,255,252,255,255,252,38,30,150,41,1,0,255,128,0,15, + 248,255,192,0,15,248,15,192,0,31,192,15,224,0,31,192, + 15,224,0,31,192,15,240,0,63,192,15,240,0,63,192,15, + 248,0,127,192,15,248,0,119,192,14,252,0,247,192,14,252, + 0,247,192,14,124,1,231,192,14,126,1,231,192,14,62,1, + 199,192,14,63,3,199,192,14,31,3,135,192,14,31,135,135, + 192,14,31,135,135,192,14,15,143,7,192,14,15,207,7,192, + 30,7,222,7,192,30,7,254,7,192,30,3,252,7,192,30, + 3,252,7,192,30,3,248,7,192,30,1,248,7,224,30,1, + 248,7,224,31,0,240,15,224,255,192,240,63,252,255,192,96, + 63,252,30,30,120,32,1,0,255,0,15,252,255,128,15,252, + 63,192,3,240,31,192,1,224,31,224,1,224,31,240,1,224, + 31,240,1,224,31,248,1,224,31,252,1,224,30,254,1,224, + 30,126,1,224,30,63,1,224,30,63,129,224,30,31,129,224, + 30,15,193,224,30,7,225,224,30,7,225,224,30,3,241,224, + 30,1,249,224,30,1,253,224,30,0,253,224,30,0,127,224, + 30,0,63,224,30,0,63,224,30,0,31,224,30,0,15,224, + 30,0,7,224,63,0,7,224,255,192,3,224,255,192,0,224, + 27,30,120,30,1,0,0,31,192,0,0,255,240,0,3,225, + 252,0,7,128,126,0,15,0,63,0,31,0,31,0,30,0, + 31,128,62,0,15,128,126,0,15,192,124,0,15,192,124,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,254,0,7,192,126,0,15,192,126,0,15,128,127,0, + 15,128,63,0,31,0,31,128,31,0,31,192,62,0,15,240, + 252,0,7,255,240,0,1,255,224,0,0,127,0,0,25,30, + 120,27,0,0,3,255,192,0,255,255,248,0,127,193,252,0, + 143,192,126,0,15,192,63,0,15,192,63,0,15,192,31,128, + 15,192,31,128,15,192,31,128,15,192,31,128,15,192,31,128, + 15,192,31,0,15,192,63,0,15,192,62,0,15,192,126,0, + 15,208,252,0,15,223,240,0,15,207,192,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 31,224,0,0,127,252,0,0,127,252,0,0,32,38,152,30, + 1,248,0,31,192,0,0,255,240,0,3,225,252,0,7,128, + 126,0,15,0,63,0,31,0,31,0,30,0,31,128,62,0, + 15,128,126,0,15,192,124,0,15,192,124,0,7,192,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,254,0, + 7,192,126,0,15,192,126,0,15,128,127,0,15,128,63,0, + 31,0,31,128,31,0,31,192,62,0,15,240,252,0,7,255, + 248,0,1,255,224,0,0,127,240,0,0,1,252,0,0,0, + 254,2,0,0,63,135,0,0,31,255,0,0,15,254,0,0, + 3,252,0,0,1,252,0,0,0,120,29,30,120,29,0,0, + 7,255,128,0,255,255,240,0,127,193,252,0,143,192,126,0, + 15,192,126,0,15,192,63,0,15,192,63,0,15,192,63,0, + 15,192,63,0,15,192,63,0,15,192,126,0,15,192,126,0, + 15,192,252,0,15,255,248,0,15,255,240,0,15,255,192,0, + 15,199,192,0,15,195,224,0,15,193,240,0,15,193,240,0, + 15,192,248,0,15,192,252,0,15,192,126,0,15,192,126,0, + 15,192,63,0,15,192,63,128,15,192,31,192,31,224,31,248, + 127,248,15,248,127,248,15,128,20,30,90,25,3,0,1,255, + 0,15,255,192,30,15,224,60,7,192,120,3,192,248,1,128, + 248,0,0,252,0,0,254,0,0,255,0,0,127,192,0,127, + 240,0,63,252,0,31,255,0,7,255,128,1,255,192,0,127, + 224,0,31,224,0,7,240,0,3,240,0,1,240,192,1,240, + 224,1,240,224,1,224,240,3,224,248,3,192,254,15,128,255, + 255,0,127,254,0,15,240,0,27,30,120,28,0,0,127,255, + 255,224,127,255,255,224,112,31,128,224,112,31,128,224,96,31, + 128,224,96,31,128,224,224,31,128,96,64,31,128,96,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,63,192,0,1,255, + 248,0,1,255,248,0,29,30,120,32,1,0,255,240,31,248, + 255,240,31,248,63,192,7,224,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,128,31,192,7,128,15,192,7,128,15,224,7,0, + 7,224,15,0,3,248,62,0,1,255,252,0,0,255,240,0, + 0,31,192,0,31,30,120,32,0,0,255,240,7,254,255,240, + 7,254,31,128,0,240,15,192,0,224,15,192,0,224,15,192, + 1,224,7,224,1,192,7,224,3,192,3,240,3,192,3,240, + 3,128,3,240,7,128,1,248,7,128,1,248,7,0,0,248, + 15,0,0,252,14,0,0,252,14,0,0,126,30,0,0,126, + 28,0,0,62,28,0,0,63,60,0,0,63,56,0,0,31, + 248,0,0,31,240,0,0,15,240,0,0,15,240,0,0,15, + 224,0,0,7,224,0,0,7,224,0,0,3,192,0,0,3, + 0,0,41,30,180,41,0,0,255,240,12,3,255,128,255,240, + 30,3,255,128,31,128,30,0,124,0,15,128,30,0,56,0, + 15,128,63,0,120,0,15,128,63,0,120,0,15,192,63,128, + 112,0,7,192,127,128,112,0,7,192,127,128,112,0,7,192, + 127,192,240,0,7,224,247,192,224,0,3,224,231,224,224,0, + 3,224,227,224,224,0,3,225,227,225,224,0,3,241,195,241, + 224,0,3,241,193,241,192,0,1,243,193,241,192,0,1,243, + 128,249,192,0,1,251,128,251,192,0,1,255,128,255,192,0, + 0,255,0,127,128,0,0,255,0,127,128,0,0,254,0,127, + 128,0,0,254,0,63,128,0,0,126,0,63,0,0,0,124, + 0,31,0,0,0,124,0,31,0,0,0,124,0,31,0,0, + 0,120,0,14,0,0,0,48,0,12,0,0,29,30,120,30, + 1,0,255,240,127,240,255,240,127,240,63,192,31,128,31,192, + 15,0,15,192,30,0,7,224,60,0,7,240,60,0,3,240, + 120,0,1,248,240,0,1,252,240,0,0,255,224,0,0,127, + 192,0,0,127,192,0,0,63,128,0,0,31,128,0,0,31, + 192,0,0,63,224,0,0,127,224,0,0,127,240,0,0,243, + 248,0,1,241,248,0,1,225,252,0,3,192,254,0,7,192, + 126,0,7,128,63,0,15,0,63,128,31,0,31,192,63,0, + 63,224,255,192,255,248,255,192,255,248,29,30,120,29,0,0, + 127,0,31,248,255,128,31,248,31,192,3,192,15,192,3,128, + 7,224,7,128,3,240,7,0,3,240,15,0,1,248,14,0, + 1,248,30,0,0,252,28,0,0,124,60,0,0,126,56,0, + 0,63,120,0,0,63,240,0,0,31,240,0,0,31,224,0, + 0,15,224,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,31,224,0, + 0,255,252,0,0,255,252,0,23,30,90,26,1,0,63,255, + 254,63,255,254,60,0,254,56,1,252,56,1,248,48,3,248, + 48,7,240,64,7,240,0,15,224,0,15,192,0,31,192,0, + 63,128,0,63,128,0,127,0,0,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,248,0,7,240,0,15,224,0, + 15,224,4,31,192,6,31,192,6,63,128,14,127,0,14,127, + 0,30,255,255,254,127,255,254,12,45,90,16,3,248,255,240, + 255,240,255,240,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,255,240,255,240,255,240,21,46,138,23,1,248,224,0, + 0,248,0,0,120,0,0,120,0,0,124,0,0,60,0,0, + 60,0,0,62,0,0,30,0,0,31,0,0,15,0,0,15, + 0,0,15,128,0,7,128,0,7,128,0,7,192,0,3,192, + 0,3,192,0,3,224,0,1,224,0,1,240,0,0,240,0, + 0,240,0,0,248,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,60,0,0,62,0,0,30,0,0,31,0,0,15, + 0,0,15,0,0,15,128,0,7,128,0,7,128,0,7,192, + 0,3,192,0,3,192,0,1,224,0,1,224,0,1,240,0, + 0,240,0,0,240,0,0,56,12,45,90,16,1,248,255,240, + 255,240,255,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,255,240,255,240,255,240,19,23,69,24,2,13,0,32, + 0,0,112,0,0,240,0,1,240,0,1,248,0,1,248,0, + 3,188,0,3,188,0,7,60,0,7,30,0,6,30,0,14, + 14,0,14,15,0,12,15,0,28,7,128,28,7,128,24,3, + 128,56,3,192,48,3,192,112,1,224,112,1,224,96,0,224, + 192,0,192,21,3,9,23,1,250,127,255,248,127,255,248,255, + 255,240,11,11,22,15,0,24,60,0,252,0,254,0,126,0, + 63,0,31,0,15,128,7,128,3,192,1,192,0,224,23,22, + 66,24,1,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,24,36,108,26,0,0,3,0,0,63, + 128,0,255,128,0,127,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,131,224,31,143,248,31,191,252,31, + 255,252,31,240,254,31,192,126,31,128,63,31,128,63,31,128, + 31,31,128,31,31,128,31,31,128,31,31,128,31,31,128,30, + 31,128,30,31,128,60,31,128,56,31,240,248,31,255,240,15, + 255,192,3,255,128,0,126,0,20,22,66,22,1,0,0,127, + 128,1,255,240,7,135,224,15,3,224,30,1,224,62,0,192, + 124,0,192,124,0,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,0,254,0,0,126,0,32,127,0, + 112,63,193,224,63,255,192,31,255,128,7,255,0,1,252,0, + 25,36,144,27,2,0,0,0,56,0,0,15,248,0,0,15, + 248,0,0,3,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,249, + 248,0,7,255,248,0,15,255,248,0,31,135,248,0,63,3, + 248,0,62,1,248,0,126,1,248,0,124,1,248,0,252,1, + 248,0,252,1,248,0,252,1,248,0,252,1,248,0,252,1, + 248,0,252,1,248,0,254,1,248,0,126,1,248,0,127,3, + 248,0,127,135,253,0,63,255,255,128,31,253,254,0,15,248, + 252,0,3,224,224,0,19,22,66,23,2,0,0,252,0,7, + 255,0,15,31,128,30,15,128,62,15,192,124,7,192,124,7, + 224,124,7,224,252,7,224,255,255,224,255,255,128,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,64,127,0,224,63, + 131,192,63,255,128,31,255,0,15,254,0,3,248,0,20,37, + 111,16,1,0,0,15,128,0,63,224,0,255,240,1,255,224, + 3,227,224,7,193,192,7,193,0,15,128,0,15,128,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,127,255,0,255,254,0,31,132,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,63,224,0,255,252,0, + 255,252,0,25,33,132,25,0,245,0,126,1,128,3,255,223, + 128,7,135,255,0,15,3,254,0,30,1,240,0,30,0,248, + 0,62,0,248,0,62,0,248,0,62,0,248,0,62,0,248, + 0,63,0,240,0,31,129,224,0,15,195,192,0,7,255,128, + 0,1,254,0,0,3,224,0,0,7,192,0,0,15,192,0, + 0,31,254,0,0,31,255,240,0,15,255,252,0,7,255,254, + 0,15,159,255,0,62,0,127,0,124,0,63,0,252,0,31, + 0,252,0,30,0,254,0,30,0,255,0,60,0,127,192,248, + 0,63,255,240,0,15,255,192,0,1,254,0,0,26,36,144, + 28,1,0,1,128,0,0,63,128,0,0,255,128,0,0,255, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,129,240,0,31, + 143,252,0,31,159,252,0,31,255,254,0,31,248,254,0,31, + 224,126,0,31,192,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,63,192,255,0,255,243,255,192,255, + 243,255,192,12,32,64,14,1,0,7,128,15,192,31,192,31, + 192,31,128,15,0,0,0,0,0,0,0,0,0,3,128,127, + 128,255,128,127,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,63,192,255,240,255,240,17,43,129,14,250,245,0, + 15,0,0,31,128,0,63,128,0,63,128,0,63,0,0,30, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128, + 0,127,128,0,255,128,0,127,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,0,0,31,0,0,62,0,16,62, + 0,60,124,0,127,248,0,255,224,0,255,192,0,63,0,0, + 26,36,144,26,1,0,1,128,0,0,63,128,0,0,255,128, + 0,0,255,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,129, + 255,128,31,129,255,128,31,128,252,0,31,128,248,0,31,131, + 224,0,31,135,192,0,31,143,128,0,31,158,0,0,31,188, + 0,0,31,252,0,0,31,190,0,0,31,191,0,0,31,159, + 128,0,31,143,192,0,31,135,224,0,31,135,240,0,31,131, + 248,0,31,129,252,0,31,128,252,0,63,128,255,192,255,240, + 127,192,255,240,62,0,12,36,72,14,1,0,1,128,63,128, + 255,128,255,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,192, + 255,240,255,240,39,22,110,41,1,0,3,3,224,31,128,127, + 143,248,127,192,255,159,249,255,224,127,255,255,255,240,31,241, + 255,135,240,31,224,255,3,240,31,128,252,3,240,31,128,252, + 3,240,31,128,252,3,240,31,128,252,3,240,31,128,252,3, + 240,31,128,252,3,240,31,128,252,3,240,31,128,252,3,240, + 31,128,252,3,240,31,128,252,3,240,31,128,252,3,240,31, + 128,252,3,240,31,128,252,3,240,63,128,252,3,248,255,247, + 255,159,254,255,247,255,159,254,26,22,88,28,1,0,3,1, + 240,0,127,135,252,0,255,159,252,0,63,191,254,0,31,248, + 254,0,31,224,126,0,31,192,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,63,192,255,0,255,243, + 255,192,255,243,255,192,21,22,66,25,2,0,0,252,0,3, + 255,0,15,15,192,30,7,224,62,7,224,62,3,240,124,3, + 240,124,1,248,252,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,240,126,1,240,126,3,224,62, + 3,224,63,3,192,31,135,128,7,254,0,1,248,0,24,33, + 99,27,1,245,3,3,224,127,143,248,255,159,252,63,255,252, + 31,240,254,31,192,126,31,128,63,31,128,63,31,128,31,31, + 128,31,31,128,31,31,128,31,31,128,31,31,128,30,31,128, + 30,31,128,62,31,192,60,31,240,124,31,255,248,31,255,240, + 31,159,224,31,135,128,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,63,192, + 0,255,248,0,255,248,0,24,33,99,26,2,245,0,124,8, + 1,255,28,7,255,248,15,135,248,30,3,248,62,1,248,124, + 1,248,124,1,248,252,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,254,1,248,126,1,248,127,3,248, + 127,143,248,63,255,248,31,253,248,15,249,248,3,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,3,248,0,31,255,0,31,255, + 20,22,66,21,1,0,3,7,192,127,143,240,255,191,240,63, + 255,224,31,241,224,31,224,224,31,192,224,31,128,192,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 192,0,255,248,0,255,248,0,16,22,44,20,2,0,7,248, + 31,254,60,62,120,30,248,14,248,12,252,0,255,0,127,192, + 127,240,63,248,15,254,3,254,0,255,128,127,192,63,224,31, + 224,31,240,30,248,60,255,248,63,224,18,30,90,18,255,0, + 0,192,0,1,192,0,7,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,63,255,192,255,255,128,15,193, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,128,15,227,192,15,255, + 128,7,255,0,3,252,0,1,240,0,26,22,88,27,1,0, + 3,128,28,0,255,135,252,0,255,135,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,129,252,0,31,199,252,128,31,255,255,128,15,254,255,192, + 7,248,126,0,3,224,112,0,24,22,66,24,0,0,255,224, + 255,255,224,255,63,128,60,31,128,60,31,128,56,15,192,120, + 15,192,112,7,192,112,7,224,240,7,224,224,3,241,224,3, + 241,192,1,249,192,1,251,128,0,255,128,0,255,128,0,127, + 0,0,127,0,0,126,0,0,62,0,0,60,0,0,24,0, + 34,22,110,34,0,0,255,224,96,63,192,255,224,112,63,192, + 63,0,240,7,0,31,0,248,15,0,31,128,248,14,0,15, + 129,252,14,0,15,129,252,30,0,15,195,252,28,0,7,195, + 254,28,0,7,195,190,28,0,7,231,63,60,0,3,231,31, + 56,0,3,239,31,184,0,3,254,31,248,0,1,254,15,240, + 0,1,252,15,240,0,1,252,7,240,0,0,252,7,224,0, + 0,248,3,224,0,0,248,3,224,0,0,112,1,192,0,0, + 96,1,128,0,25,22,88,25,0,0,127,241,255,0,127,241, + 255,0,31,192,124,0,15,224,112,0,7,224,224,0,7,241, + 224,0,3,251,192,0,1,255,128,0,0,255,0,0,0,254, + 0,0,0,127,0,0,0,127,0,0,0,127,128,0,0,255, + 192,0,1,207,224,0,3,199,224,0,7,131,240,0,7,3, + 248,0,14,1,252,0,30,1,254,0,255,135,255,128,255,135, + 255,128,25,33,132,24,255,245,127,240,127,128,127,240,127,128, + 31,192,30,0,15,192,28,0,15,192,28,0,7,224,60,0, + 7,224,56,0,3,240,56,0,3,240,112,0,1,240,112,0, + 1,248,240,0,1,248,224,0,0,252,224,0,0,253,224,0, + 0,125,192,0,0,127,192,0,0,127,128,0,0,63,128,0, + 0,63,128,0,0,31,0,0,0,31,0,0,0,14,0,0, + 0,14,0,0,0,30,0,0,0,28,0,0,0,60,0,0, + 0,120,0,0,32,248,0,0,63,240,0,0,127,224,0,0, + 255,192,0,0,255,128,0,0,126,0,0,0,20,22,66,22, + 1,0,63,255,240,63,255,240,56,15,224,56,15,192,48,31, + 192,48,31,128,32,63,0,0,127,0,0,126,0,0,252,0, + 1,252,0,1,248,0,3,240,0,7,240,0,7,224,0,15, + 224,48,31,192,48,31,128,112,63,128,112,127,0,240,127,255, + 240,255,255,224,14,45,90,17,2,249,0,8,0,60,0,248, + 1,240,3,224,7,224,7,192,15,192,15,192,15,192,15,192, + 15,192,15,224,7,224,7,224,7,224,7,224,7,224,7,192, + 15,192,15,128,63,0,254,0,255,128,31,192,7,192,7,224, + 7,224,7,224,7,224,7,224,7,224,15,224,15,192,15,192, + 15,192,15,192,15,192,15,192,7,192,7,224,3,240,0,248, + 0,124,0,8,4,49,49,11,4,246,48,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,192,14,44,88,17,1, + 249,64,0,248,0,124,0,63,0,31,128,15,128,15,192,15, + 192,15,192,15,192,15,192,15,192,31,192,31,128,31,128,31, + 128,31,128,31,128,31,128,15,192,15,252,7,252,1,248,7, + 224,15,192,15,128,31,128,31,128,31,128,31,128,31,128,31, + 192,15,192,15,192,15,192,15,192,15,192,15,128,31,128,31, + 0,62,0,124,0,240,0,64,0,21,8,24,23,1,11,7, + 128,8,15,224,24,31,240,16,63,252,48,49,255,224,96,127, + 192,64,31,128,192,15,0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,12,0,0,8,35, + 35,15,3,243,62,127,255,255,255,254,124,0,0,12,28,28, + 28,60,60,60,60,60,62,62,62,62,62,62,62,62,126,126, + 126,126,126,127,126,120,96,21,30,90,24,2,255,0,24,0, + 0,56,0,0,56,0,0,56,0,0,127,192,3,255,240,7, + 255,248,31,187,240,62,56,240,60,56,96,124,56,32,120,56, + 0,248,56,0,248,56,0,248,56,0,248,56,0,248,56,0, + 248,56,0,252,56,0,124,56,16,126,56,56,63,56,240,31, + 251,224,15,255,192,7,255,128,1,252,0,0,56,0,0,56, + 0,0,56,0,0,48,0,22,29,87,24,1,0,0,31,192, + 0,255,248,1,225,248,3,192,248,7,192,120,7,128,112,15, + 128,48,15,128,48,15,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,255,0,255,255,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,16,31,0,12,31, + 0,24,30,0,56,62,0,120,63,255,248,127,255,248,255,255, + 248,128,15,240,20,20,60,24,2,4,64,0,32,224,0,96, + 113,248,240,63,255,192,31,15,128,30,7,128,28,3,128,56, + 1,192,56,1,192,56,1,192,56,1,192,56,1,192,60,3, + 192,30,7,128,31,15,128,31,255,128,57,249,192,112,0,224, + 224,0,112,64,0,32,27,28,112,24,254,0,127,0,127,224, + 255,128,127,224,127,192,15,0,15,224,30,0,15,224,30,0, + 7,240,60,0,3,240,60,0,3,248,56,0,1,252,120,0, + 0,252,112,0,0,254,240,0,0,126,224,0,0,127,224,0, + 0,63,192,0,0,63,192,0,0,31,192,0,0,31,128,0, + 15,255,255,0,15,255,254,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,128,0,0,31,128,0,0,31,128,0, + 0,63,192,0,1,255,248,0,1,255,248,0,4,49,49,11, + 4,246,48,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,224,0,0,0,0,0,112,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,192,18,34,102,23,3,0,3,252,0,15,255,0,30, + 31,0,60,15,0,124,7,0,124,6,0,126,2,0,127,128, + 0,63,224,0,63,240,0,63,252,0,127,254,0,123,255,0, + 240,255,128,240,63,128,240,31,192,240,7,192,248,7,192,124, + 3,192,127,3,192,63,195,192,31,243,128,15,255,128,7,255, + 0,1,255,0,0,127,128,96,63,128,96,31,128,112,15,128, + 112,15,128,120,15,0,126,30,0,127,252,0,15,240,0,17, + 7,21,19,1,26,56,7,0,124,15,128,252,31,128,252,31, + 128,252,31,128,248,31,0,112,14,0,31,31,124,35,2,0, + 0,31,224,0,0,127,252,0,1,240,31,0,7,192,7,128, + 15,0,1,224,30,0,0,224,28,3,240,112,56,31,254,56, + 56,60,124,56,112,120,60,28,112,240,28,28,240,240,24,28, + 224,224,0,14,225,224,0,14,225,224,0,14,225,224,0,14, + 225,224,0,14,225,224,0,14,225,240,0,14,240,240,0,30, + 112,248,6,28,112,126,30,28,56,127,252,56,56,31,240,56, + 28,7,192,112,14,0,0,224,15,0,1,224,7,192,7,128, + 1,240,31,0,0,127,252,0,0,31,240,0,12,16,32,13, + 1,14,15,0,63,128,99,192,227,192,131,192,7,192,63,192, + 123,192,243,192,243,192,247,224,255,240,115,128,0,0,255,224, + 255,224,20,22,66,25,2,0,0,192,32,1,192,112,1,192, + 224,3,129,224,7,131,192,15,7,192,31,15,128,62,15,128, + 126,31,0,252,63,0,252,126,0,252,126,0,252,63,0,126, + 31,0,62,15,128,31,15,128,15,7,192,7,131,192,3,129, + 224,1,192,224,0,192,112,0,192,32,21,11,33,24,2,4, + 127,255,248,255,255,248,255,255,248,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 96,15,3,6,17,1,11,127,254,127,252,255,252,17,17,51, + 17,0,17,3,224,0,15,248,0,60,30,0,48,6,0,103, + 227,0,99,51,0,195,49,128,195,49,128,195,225,128,195,65, + 128,195,97,128,99,35,0,99,51,0,55,158,0,60,30,0, + 15,248,0,3,224,0,20,4,12,24,2,27,127,255,240,255, + 255,240,255,255,224,255,255,224,11,13,26,17,3,17,15,0, + 31,192,63,192,123,224,113,224,241,224,241,224,241,224,241,192, + 251,192,127,128,127,0,30,0,18,22,66,20,1,3,0,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,127,255,192,255,255,192,255,255,128,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,192, + 0,0,0,0,0,0,0,127,255,192,127,255,192,255,255,128, + 13,17,34,17,2,15,7,224,31,240,120,248,120,120,248,120, + 0,120,0,240,0,224,1,224,3,192,7,128,15,0,30,8, + 60,8,120,24,255,248,255,248,13,18,36,17,1,14,7,224, + 31,240,60,248,120,120,124,120,0,120,0,240,1,224,7,240, + 5,240,0,120,0,120,0,120,0,120,128,120,224,240,127,224, + 31,128,11,11,22,15,5,24,15,0,15,192,31,224,31,128, + 63,0,62,0,124,0,120,0,240,0,224,0,64,0,27,33, + 132,28,1,245,3,0,6,0,255,128,254,0,255,128,126,0, + 63,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,192,254,0,31,227,254,0,31,255,254,64,31,255,127,224, + 30,254,127,192,30,124,63,128,30,56,28,0,30,0,0,0, + 30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0, + 31,0,0,0,31,128,0,0,31,128,0,0,31,192,0,0, + 31,0,0,0,24,0,0,0,26,36,144,29,1,250,1,255, + 255,192,7,255,255,192,31,195,255,0,63,3,222,0,126,3, + 222,0,124,3,222,0,252,3,222,0,252,3,222,0,252,3, + 222,0,252,3,222,0,252,3,222,0,126,3,222,0,127,3, + 222,0,63,3,222,0,31,195,222,0,7,255,222,0,1,255, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,7,255,0,0,31,255,192,0,31,255,192,7,7, + 7,10,1,13,60,126,254,254,254,252,120,10,10,20,11,1, + 246,14,0,28,0,30,0,63,128,63,192,15,192,15,192,31, + 128,254,0,112,0,13,17,34,17,2,15,1,128,15,128,255, + 128,71,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,240,127,248,11,16,32, + 13,1,14,15,0,63,128,123,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,192,123,192,63,128,30,0,0,0,255, + 224,255,224,20,22,66,25,3,0,64,32,0,224,112,0,112, + 56,0,120,28,0,56,30,0,60,15,0,30,15,128,31,7, + 192,31,135,224,15,199,240,15,227,240,15,227,240,15,199,240, + 31,135,224,31,7,192,30,15,128,60,15,0,56,30,0,120, + 28,0,112,56,0,224,48,0,64,96,0,27,29,116,30,2, + 0,3,0,1,192,63,0,3,128,255,0,7,128,15,0,15, + 0,15,0,14,0,15,0,28,0,15,0,60,0,15,0,120, + 0,15,0,112,0,15,0,240,0,15,1,224,0,15,1,192, + 0,31,131,128,0,255,231,128,0,0,15,0,0,0,14,1, + 0,0,28,15,128,0,60,15,128,0,120,31,128,0,112,55, + 128,0,224,55,128,1,224,103,128,3,192,199,128,3,129,199, + 128,7,129,255,224,15,3,255,192,30,0,7,128,28,0,7, + 128,60,0,63,224,26,29,116,30,2,0,3,0,1,192,63, + 0,7,128,255,0,7,128,15,0,15,0,15,0,30,0,15, + 0,60,0,15,0,60,0,15,0,120,0,15,0,240,0,15, + 0,224,0,15,1,224,0,15,3,192,0,31,135,128,0,255, + 231,0,0,0,15,0,0,0,30,63,0,0,60,127,192,0, + 56,231,192,0,121,195,192,0,241,131,192,1,224,3,128,1, + 192,7,0,3,192,14,0,7,128,28,0,15,0,56,0,14, + 0,112,64,30,0,224,64,60,1,255,192,120,3,255,192,28, + 29,116,30,1,0,15,128,0,224,63,192,1,192,115,224,3, + 192,241,224,7,128,129,192,7,0,3,128,14,0,15,192,30, + 0,15,224,60,0,1,240,56,0,0,240,120,0,0,240,240, + 0,0,240,224,0,225,225,192,0,127,195,192,0,31,7,128, + 0,0,7,0,128,0,14,7,192,0,30,7,192,0,60,11, + 192,0,56,27,192,0,112,19,192,0,240,51,192,1,224,99, + 192,1,192,227,192,3,192,255,240,7,129,255,224,15,0,3, + 192,14,0,3,192,30,0,31,240,18,35,105,22,2,243,0, + 248,0,1,252,0,3,252,0,3,252,0,3,252,0,3,248, + 0,1,240,0,0,0,0,0,0,0,0,0,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,0,1,240,0,1, + 224,0,3,224,0,7,192,0,15,192,0,15,128,0,31,0, + 0,63,0,0,126,0,0,126,0,0,252,0,0,252,3,192, + 252,15,192,252,15,192,252,15,192,252,15,128,126,31,128,127, + 31,0,63,254,0,15,240,0,30,42,168,30,0,0,0,32, + 0,0,0,112,0,0,0,248,0,0,1,252,0,0,1,254, + 0,0,0,255,0,0,0,63,128,0,0,15,192,0,0,3, + 224,0,0,0,224,0,0,0,64,0,0,0,0,0,0,1, + 128,0,0,7,128,0,0,15,192,0,0,31,192,0,0,31, + 224,0,0,31,224,0,0,63,224,0,0,63,240,0,0,59, + 240,0,0,121,240,0,0,121,248,0,0,113,248,0,0,240, + 252,0,0,240,252,0,0,224,252,0,1,224,126,0,1,224, + 126,0,1,192,126,0,3,255,255,0,3,255,255,0,3,128, + 31,0,7,128,31,128,7,0,31,128,7,0,15,192,15,0, + 15,192,14,0,15,192,14,0,7,224,30,0,7,224,255,192, + 63,252,255,192,63,252,30,42,168,30,0,0,0,0,32,0, + 0,0,48,0,0,0,124,0,0,0,254,0,0,1,254,0, + 0,3,248,0,0,7,224,0,0,15,128,0,0,31,0,0, + 0,60,0,0,0,16,0,0,0,0,0,0,0,1,128,0, + 0,7,128,0,0,15,192,0,0,31,192,0,0,31,224,0, + 0,31,224,0,0,63,224,0,0,63,240,0,0,59,240,0, + 0,121,240,0,0,121,248,0,0,113,248,0,0,240,252,0, + 0,240,252,0,0,224,252,0,1,224,126,0,1,224,126,0, + 1,192,126,0,3,255,255,0,3,255,255,0,3,128,31,0, + 7,128,31,128,7,0,31,128,7,0,15,192,15,0,15,192, + 14,0,15,192,14,0,7,224,30,0,7,224,255,192,63,252, + 255,192,63,252,30,41,164,30,0,0,0,7,0,0,0,7, + 128,0,0,15,192,0,0,31,224,0,0,63,240,0,0,127, + 248,0,0,248,248,0,1,240,60,0,1,192,14,0,1,0, + 8,0,0,0,0,0,0,1,128,0,0,7,128,0,0,15, + 192,0,0,31,192,0,0,31,224,0,0,31,224,0,0,63, + 224,0,0,63,240,0,0,59,240,0,0,121,240,0,0,121, + 248,0,0,113,248,0,0,240,252,0,0,240,252,0,0,224, + 252,0,1,224,126,0,1,224,126,0,1,192,126,0,3,255, + 255,0,3,255,255,0,3,128,31,0,7,128,31,128,7,0, + 31,128,7,0,15,192,15,0,15,192,14,0,15,192,14,0, + 7,224,30,0,7,224,255,192,63,252,255,192,63,252,30,40, + 160,30,0,0,0,16,4,0,0,127,7,0,0,255,254,0, + 1,255,254,0,1,255,252,0,3,255,248,0,3,3,240,0, + 2,0,64,0,0,0,0,0,0,0,0,0,0,1,128,0, + 0,7,128,0,0,15,192,0,0,31,192,0,0,31,224,0, + 0,31,224,0,0,63,224,0,0,63,240,0,0,59,240,0, + 0,121,240,0,0,121,248,0,0,113,248,0,0,240,252,0, + 0,240,252,0,0,224,252,0,1,224,126,0,1,224,126,0, + 1,192,126,0,3,255,255,0,3,255,255,0,3,128,31,0, + 7,128,31,128,7,0,31,128,7,0,15,192,15,0,15,192, + 14,0,15,192,14,0,7,224,30,0,7,224,255,192,63,252, + 255,192,63,252,30,40,160,30,0,0,0,64,16,0,0,240, + 60,0,1,248,126,0,1,248,126,0,1,248,126,0,1,240, + 124,0,1,240,124,0,0,64,32,0,0,0,0,0,0,0, + 0,0,0,1,128,0,0,7,128,0,0,15,192,0,0,31, + 192,0,0,31,224,0,0,31,224,0,0,63,224,0,0,63, + 240,0,0,59,240,0,0,121,240,0,0,121,248,0,0,113, + 248,0,0,240,252,0,0,240,252,0,0,224,252,0,1,224, + 126,0,1,224,126,0,1,192,126,0,3,255,255,0,3,255, + 255,0,3,128,31,0,7,128,31,128,7,0,31,128,7,0, + 15,192,15,0,15,192,14,0,15,192,14,0,7,224,30,0, + 7,224,255,192,63,252,255,192,63,252,30,42,168,30,0,0, + 0,1,0,0,0,15,224,0,0,31,224,0,0,28,240,0, + 0,60,240,0,0,60,240,0,0,60,224,0,0,63,224,0, + 0,31,128,0,0,4,0,0,0,0,0,0,0,0,0,0, + 0,1,128,0,0,7,128,0,0,15,192,0,0,31,192,0, + 0,31,224,0,0,31,224,0,0,63,224,0,0,63,240,0, + 0,59,240,0,0,121,240,0,0,121,248,0,0,113,248,0, + 0,240,252,0,0,240,252,0,0,224,252,0,1,224,126,0, + 1,224,126,0,1,192,126,0,3,255,255,0,3,255,255,0, + 3,128,31,0,7,128,31,128,7,0,31,128,7,0,15,192, + 15,0,15,192,14,0,15,192,14,0,7,224,30,0,7,224, + 255,192,63,252,255,192,63,252,38,30,150,39,0,0,0,127, + 255,255,240,0,127,255,255,248,0,15,255,0,112,0,7,255, + 0,112,0,15,63,0,112,0,15,63,0,48,0,15,63,0, + 48,0,30,63,0,48,0,30,63,0,0,0,60,63,0,0, + 0,60,63,0,0,0,60,63,0,0,0,120,63,0,0,0, + 127,255,255,192,0,255,255,255,128,0,240,63,1,128,0,224, + 63,0,0,1,224,63,0,0,1,224,63,0,0,3,192,63, + 0,0,3,192,63,0,0,3,128,63,0,0,7,128,63,0, + 0,7,128,63,0,12,15,0,63,0,12,15,0,63,0,28, + 14,0,63,0,28,31,0,127,128,124,255,193,255,255,248,255, + 193,255,255,248,24,40,120,27,1,246,0,31,224,0,255,252, + 1,255,254,7,224,254,15,192,126,31,128,60,31,0,28,62, + 0,0,62,0,0,126,0,0,124,0,0,124,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,0,127,0,0,63, + 128,2,63,128,7,31,224,15,15,252,254,7,255,248,3,255, + 240,0,255,192,0,30,0,0,28,0,0,31,0,0,63,192, + 0,63,192,0,15,192,0,15,128,0,31,128,0,254,0,0, + 112,0,23,42,126,25,1,0,1,0,0,3,128,0,15,192, + 0,15,224,0,31,240,0,7,248,0,1,252,0,0,126,0, + 0,31,0,0,7,0,0,2,0,0,0,0,255,255,248,255, + 255,252,63,128,56,31,128,56,31,128,24,31,128,24,31,128, + 24,31,128,24,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,255,224,31,255,224,31,128,192,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,6,31,128,6,31,128,14,31,128,14,63,192,30, + 255,255,254,255,255,252,23,42,126,25,1,0,0,2,0,0, + 3,128,0,7,224,0,15,240,0,31,240,0,63,192,0,127, + 0,0,252,0,1,240,0,1,192,0,1,0,0,0,0,0, + 255,255,248,255,255,252,63,128,56,31,128,56,31,128,24,31, + 128,24,31,128,24,31,128,24,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,255,224,31,255,224,31,128,192, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,6,31,128,6,31,128,14,31,128, + 14,63,192,30,255,255,254,255,255,252,23,41,123,25,1,0, + 0,56,0,0,124,0,0,254,0,0,255,0,1,255,0,3, + 255,128,7,199,192,15,1,224,14,0,224,8,0,64,0,0, + 0,255,255,248,255,255,252,63,128,56,31,128,56,31,128,24, + 31,128,24,31,128,24,31,128,24,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,255,224,31,255,224,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,6,31,128,6,31,128,14,31, + 128,14,63,192,30,255,255,254,255,255,252,23,40,120,25,1, + 0,2,0,128,7,129,224,15,195,240,15,195,240,15,195,240, + 15,131,224,15,3,192,4,1,0,0,0,0,0,0,0,255, + 255,248,255,255,252,63,128,56,31,128,56,31,128,24,31,128, + 24,31,128,24,31,128,24,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,255,224,31,255,224,31,128,192,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,6,31,128,6,31,128,14,31,128,14, + 63,192,30,255,255,254,255,255,252,15,42,84,16,255,0,8, + 0,28,0,62,0,127,0,127,128,191,192,15,224,3,240,0, + 248,0,56,0,16,0,0,31,254,31,254,7,248,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,7,248,31, + 254,31,254,14,42,84,16,2,0,0,128,0,224,1,248,3, + 252,7,252,15,240,31,192,63,0,124,0,112,0,32,0,0, + 0,255,240,255,240,63,192,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,63,192,255,240,255,240,16,41,82, + 16,0,0,3,128,7,192,15,224,15,240,31,240,63,248,124, + 124,240,30,224,15,128,4,0,0,63,252,63,252,15,240,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,15, + 240,63,252,63,252,16,40,80,16,0,0,32,8,120,30,252, + 63,252,63,252,63,248,62,240,60,64,16,0,0,0,0,63, + 252,63,252,15,240,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,15,240,63,252,63,252,29,30,120,31,0, + 0,3,255,192,0,255,255,248,0,127,192,254,0,143,192,63, + 128,15,192,31,192,15,192,15,192,15,192,7,224,15,192,7, + 240,15,192,3,240,15,192,3,240,15,192,3,248,15,192,1, + 248,15,192,1,248,127,255,1,248,255,255,1,248,15,192,1, + 248,15,192,1,248,15,192,1,248,15,192,1,248,15,192,1, + 240,15,192,3,240,15,192,3,240,15,192,7,224,15,192,7, + 224,15,192,15,192,15,192,31,128,15,192,63,0,31,224,254, + 0,127,255,248,0,127,255,192,0,30,40,160,32,1,0,0, + 16,4,0,0,127,7,0,0,255,255,0,0,255,254,0,1, + 255,252,0,3,255,252,0,3,3,248,0,2,0,64,0,0, + 0,0,0,0,0,0,0,255,0,15,252,255,128,15,252,63, + 192,3,240,31,192,1,224,31,224,1,224,31,240,1,224,31, + 240,1,224,31,248,1,224,31,252,1,224,30,254,1,224,30, + 126,1,224,30,63,1,224,30,63,129,224,30,31,129,224,30, + 15,193,224,30,7,225,224,30,7,225,224,30,3,241,224,30, + 1,249,224,30,1,253,224,30,0,253,224,30,0,127,224,30, + 0,63,224,30,0,63,224,30,0,31,224,30,0,15,224,30, + 0,7,224,63,0,7,224,255,192,3,224,255,192,0,224,27, + 42,168,30,1,0,0,64,0,0,0,224,0,0,1,240,0, + 0,3,248,0,0,3,252,0,0,1,254,0,0,0,127,0, + 0,0,31,128,0,0,7,192,0,0,1,192,0,0,0,128, + 0,0,0,0,0,0,31,192,0,0,255,240,0,3,225,252, + 0,7,128,126,0,15,0,63,0,31,0,31,0,30,0,31, + 128,62,0,15,128,126,0,15,192,124,0,15,192,124,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,254,0,7,192,126,0,15,192,126,0,15,128,127,0,15, + 128,63,0,31,0,31,128,31,0,31,192,62,0,15,240,252, + 0,7,255,240,0,1,255,224,0,0,127,0,0,27,42,168, + 30,1,0,0,0,64,0,0,0,96,0,0,0,248,0,0, + 1,252,0,0,3,252,0,0,7,240,0,0,15,192,0,0, + 31,128,0,0,62,0,0,0,120,0,0,0,32,0,0,0, + 0,0,0,0,31,192,0,0,255,240,0,3,225,252,0,7, + 128,126,0,15,0,63,0,31,0,31,0,30,0,31,128,62, + 0,15,128,126,0,15,192,124,0,15,192,124,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,254, + 0,7,192,126,0,15,192,126,0,15,128,127,0,15,128,63, + 0,31,0,31,128,31,0,31,192,62,0,15,240,252,0,7, + 255,240,0,1,255,224,0,0,127,0,0,27,41,164,30,1, + 0,0,6,0,0,0,15,0,0,0,31,128,0,0,63,192, + 0,0,127,224,0,0,255,240,0,1,249,248,0,3,224,120, + 0,3,128,28,0,2,0,8,0,0,0,0,0,0,31,192, + 0,0,255,240,0,3,225,252,0,7,128,126,0,15,0,63, + 0,31,0,31,0,30,0,31,128,62,0,15,128,126,0,15, + 192,124,0,15,192,124,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,254,0,7,192,126,0,15, + 192,126,0,15,128,127,0,15,128,63,0,31,0,31,128,31, + 0,31,192,62,0,15,240,252,0,7,255,240,0,1,255,224, + 0,0,127,0,0,27,40,160,30,1,0,0,32,8,0,0, + 254,14,0,1,255,254,0,1,255,252,0,3,255,248,0,7, + 255,248,0,6,7,240,0,2,0,128,0,0,0,0,0,0, + 0,0,0,0,31,192,0,0,255,240,0,3,225,252,0,7, + 128,126,0,15,0,63,0,31,0,31,0,30,0,31,128,62, + 0,15,128,126,0,15,192,124,0,15,192,124,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,254, + 0,7,192,126,0,15,192,126,0,15,128,127,0,15,128,63, + 0,31,0,31,128,31,0,31,192,62,0,15,240,252,0,7, + 255,240,0,1,255,224,0,0,127,0,0,27,40,160,30,1, + 0,0,128,32,0,1,240,124,0,1,240,124,0,3,240,252, + 0,3,240,252,0,3,240,252,0,3,224,248,0,0,128,32, + 0,0,0,0,0,0,0,0,0,0,31,192,0,0,255,240, + 0,3,225,252,0,7,128,126,0,15,0,63,0,31,0,31, + 0,30,0,31,128,62,0,15,128,126,0,15,192,124,0,15, + 192,124,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,254,0,7,192,126,0,15,192,126,0,15, + 128,127,0,15,128,63,0,31,0,31,128,31,0,31,192,62, + 0,15,240,252,0,7,255,240,0,1,255,224,0,0,127,0, + 0,16,15,30,20,2,6,96,6,240,15,120,31,60,62,30, + 124,15,248,7,240,3,192,7,224,15,248,30,124,60,62,120, + 31,240,15,96,6,27,31,124,30,1,255,0,31,195,224,0, + 255,247,192,3,225,255,128,7,128,127,0,15,0,63,0,31, + 0,63,128,30,0,127,128,62,0,255,192,126,0,255,192,124, + 1,255,192,124,3,239,224,252,3,231,224,252,7,199,224,252, + 15,135,224,252,15,7,224,252,31,7,224,252,62,7,224,252, + 60,7,224,252,120,7,192,254,248,7,192,127,240,15,192,127, + 224,15,128,127,192,15,128,63,128,31,0,63,128,31,0,31, + 192,62,0,31,240,252,0,63,255,240,0,121,255,224,0,248, + 127,0,0,192,0,0,0,29,42,168,32,1,0,0,32,0, + 0,0,48,0,0,0,248,0,0,1,252,0,0,1,254,0, + 0,0,127,0,0,0,31,128,0,0,15,192,0,0,3,224, + 0,0,0,240,0,0,0,64,0,0,0,0,0,255,240,31, + 248,255,240,31,248,63,192,7,224,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,128,31,192,7,128,15,192,7,128,15,224,7, + 0,7,224,15,0,3,248,62,0,1,255,252,0,0,255,240, + 0,0,31,192,0,29,42,168,32,1,0,0,0,32,0,0, + 0,56,0,0,0,124,0,0,0,254,0,0,1,254,0,0, + 3,252,0,0,7,240,0,0,15,192,0,0,31,0,0,0, + 28,0,0,0,16,0,0,0,0,0,0,255,240,31,248,255, + 240,31,248,63,192,7,224,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,128,31,192,7,128,15,192,7,128,15,224,7,0,7, + 224,15,0,3,248,62,0,1,255,252,0,0,255,240,0,0, + 31,192,0,29,41,164,32,1,0,0,3,128,0,0,7,128, + 0,0,15,192,0,0,31,224,0,0,63,240,0,0,127,248, + 0,0,124,124,0,0,240,62,0,1,192,14,0,0,128,4, + 0,0,0,0,0,255,240,31,248,255,240,31,248,63,192,7, + 224,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,128,31,192,7, + 128,15,192,7,128,15,224,7,0,7,224,15,0,3,248,62, + 0,1,255,252,0,0,255,240,0,0,31,192,0,29,40,160, + 32,1,0,0,32,8,0,0,248,62,0,0,248,62,0,1, + 248,126,0,1,248,126,0,1,248,126,0,0,240,60,0,0, + 64,16,0,0,0,0,0,0,0,0,0,255,240,31,248,255, + 240,31,248,63,192,7,224,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,128,31,192,7,128,15,192,7,128,15,224,7,0,7, + 224,15,0,3,248,62,0,1,255,252,0,0,255,240,0,0, + 31,192,0,29,42,168,29,0,0,0,0,32,0,0,0,48, + 0,0,0,124,0,0,1,254,0,0,3,254,0,0,7,248, + 0,0,15,224,0,0,31,128,0,0,62,0,0,0,60,0, + 0,0,16,0,0,0,0,0,0,127,0,31,248,255,128,31, + 248,31,192,3,192,15,192,3,128,7,224,7,128,3,240,7, + 0,3,240,15,0,1,248,14,0,1,248,30,0,0,252,28, + 0,0,124,60,0,0,126,56,0,0,63,120,0,0,63,240, + 0,0,31,240,0,0,31,224,0,0,15,224,0,0,15,192, + 0,0,15,192,0,0,15,192,0,0,15,192,0,0,15,192, + 0,0,15,192,0,0,15,192,0,0,15,192,0,0,15,192, + 0,0,15,192,0,0,31,224,0,0,255,252,0,0,255,252, + 0,24,30,90,27,1,0,255,248,0,255,248,0,63,192,0, + 31,128,0,31,128,0,31,128,0,31,255,128,31,255,240,31, + 131,248,31,128,252,31,128,126,31,128,127,31,128,63,31,128, + 63,31,128,63,31,128,63,31,128,63,31,128,62,31,128,126, + 31,128,252,31,129,248,31,191,240,31,191,128,31,128,0,31, + 128,0,31,128,0,31,128,0,63,192,0,255,248,0,255,248, + 0,28,36,144,31,1,0,0,7,240,0,0,63,252,0,0, + 255,254,0,1,240,255,0,3,224,63,128,7,192,31,128,7, + 192,31,192,15,128,15,192,15,128,15,192,31,128,15,192,31, + 128,15,192,31,128,31,128,31,128,63,0,31,128,126,0,31, + 129,248,0,31,135,224,0,31,135,128,0,31,143,128,0,31, + 143,128,0,31,143,192,0,31,143,224,0,31,135,248,0,31, + 135,254,0,31,131,255,128,31,128,255,192,31,128,63,224,31, + 128,31,240,31,128,7,240,31,140,3,240,31,142,1,240,31, + 142,1,240,31,142,1,240,31,143,1,224,63,143,195,192,255, + 143,255,128,255,129,254,0,23,35,105,24,1,0,1,192,0, + 15,192,0,15,224,0,7,240,0,3,240,0,1,248,0,0, + 248,0,0,124,0,0,60,0,0,30,0,0,12,0,0,0, + 0,0,0,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,23,35,105,24,1,0,0,15,0,0, + 15,192,0,31,224,0,31,128,0,63,0,0,62,0,0,124, + 0,0,120,0,0,240,0,0,224,0,0,192,0,0,0,0, + 0,0,0,0,255,0,15,255,128,31,15,192,62,7,224,126, + 7,224,252,7,224,96,7,224,0,7,224,0,31,224,1,255, + 224,7,255,224,31,231,224,63,135,224,63,7,224,126,7,224, + 126,7,224,126,7,224,126,31,228,127,63,252,63,247,254,63, + 231,240,15,131,128,23,35,105,24,1,0,0,120,0,0,252, + 0,0,252,0,1,254,0,3,255,0,3,255,0,7,207,128, + 15,135,192,15,1,192,28,0,224,8,0,64,0,0,0,0, + 0,0,0,255,0,15,255,128,31,15,192,62,7,224,126,7, + 224,252,7,224,96,7,224,0,7,224,0,31,224,1,255,224, + 7,255,224,31,231,224,63,135,224,63,7,224,126,7,224,126, + 7,224,126,7,224,126,31,228,127,63,252,63,247,254,63,231, + 240,15,131,128,23,33,99,24,1,0,3,192,48,7,240,48, + 15,252,96,31,255,224,31,255,192,56,127,128,48,15,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,0,15,255, + 128,31,15,192,62,7,224,126,7,224,252,7,224,96,7,224, + 0,7,224,0,31,224,1,255,224,7,255,224,31,231,224,63, + 135,224,63,7,224,126,7,224,126,7,224,126,7,224,126,31, + 228,127,63,252,63,247,254,63,231,240,15,131,128,23,33,99, + 24,1,0,7,1,192,15,131,224,31,135,224,31,135,224,31, + 135,224,31,7,192,14,3,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,23,34,102,24,1,0,0,60,0,0, + 254,0,1,239,0,3,207,0,3,207,0,3,207,0,3,238, + 0,1,252,0,0,248,0,0,0,0,0,0,0,0,0,0, + 0,255,0,15,255,128,31,15,192,62,7,224,126,7,224,252, + 7,224,96,7,224,0,7,224,0,31,224,1,255,224,7,255, + 224,31,231,224,63,135,224,63,7,224,126,7,224,126,7,224, + 126,7,224,126,31,228,127,63,252,63,247,254,63,231,240,15, + 131,128,33,22,110,35,1,0,0,63,3,224,0,1,255,159, + 248,0,7,255,252,62,0,15,135,248,30,0,31,3,240,31, + 0,63,3,240,15,0,127,3,224,15,128,120,3,224,15,128, + 0,3,224,15,128,0,127,255,255,128,3,255,255,254,0,15, + 195,224,0,0,63,3,224,0,0,126,3,224,0,0,124,3, + 240,0,0,252,3,240,1,0,252,7,248,7,0,254,31,252, + 31,0,255,252,255,254,0,127,248,127,252,0,127,224,63,240, + 0,31,128,15,192,0,20,32,96,22,2,246,0,127,128,1, + 255,240,7,135,224,15,3,224,30,1,224,62,0,192,124,0, + 192,124,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,0,127,0,96,127, + 129,224,63,255,192,31,255,128,15,254,0,3,252,0,0,240, + 0,0,224,0,0,252,0,1,254,0,0,254,0,0,126,0, + 0,124,0,0,252,0,3,240,0,1,128,0,19,35,105,23, + 2,0,3,128,0,15,192,0,31,224,0,7,224,0,3,240, + 0,1,240,0,0,248,0,0,120,0,0,60,0,0,28,0, + 0,8,0,0,0,0,0,0,0,0,252,0,7,255,0,15, + 31,128,30,15,128,62,15,192,124,7,192,124,7,224,124,7, + 224,252,7,224,255,255,224,255,255,128,252,0,0,252,0,0, + 252,0,0,254,0,0,126,0,64,127,0,224,63,131,192,63, + 255,128,31,255,0,15,254,0,3,248,0,19,35,105,23,2, + 0,0,14,0,0,31,192,0,31,192,0,63,128,0,63,0, + 0,126,0,0,124,0,0,248,0,0,240,0,1,224,0,0, + 192,0,0,0,0,0,0,0,0,252,0,7,255,0,15,31, + 128,30,15,128,62,15,192,124,7,192,124,7,224,124,7,224, + 252,7,224,255,255,224,255,255,128,252,0,0,252,0,0,252, + 0,0,254,0,0,126,0,64,127,0,224,63,131,192,63,255, + 128,31,255,0,15,254,0,3,248,0,19,35,105,23,2,0, + 0,120,0,0,248,0,1,252,0,1,254,0,3,254,0,7, + 255,0,15,223,128,15,7,128,30,3,192,60,1,224,24,0, + 64,0,0,0,0,0,0,0,252,0,7,255,0,15,31,128, + 30,15,128,62,15,192,124,7,192,124,7,224,124,7,224,252, + 7,224,255,255,224,255,255,128,252,0,0,252,0,0,252,0, + 0,254,0,0,126,0,64,127,0,224,63,131,192,63,255,128, + 31,255,0,15,254,0,3,248,0,19,33,99,23,2,0,15, + 3,192,31,7,192,31,135,224,31,135,224,31,7,192,31,7, + 192,14,3,128,0,0,0,0,0,0,0,0,0,0,0,0, + 0,252,0,7,255,0,15,31,128,30,15,128,62,15,192,124, + 7,192,124,7,224,124,7,224,252,7,224,255,255,224,255,255, + 128,252,0,0,252,0,0,252,0,0,254,0,0,126,0,64, + 127,0,224,63,131,192,63,255,128,31,255,0,15,254,0,3, + 248,0,13,35,70,14,0,0,28,0,126,0,254,0,127,0, + 31,0,15,128,7,128,3,192,1,192,0,224,0,64,0,0, + 0,0,1,192,63,192,127,192,63,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,31,224,127,248,127,248,14,35, + 70,14,1,0,0,224,1,252,1,252,3,248,3,240,7,224, + 7,192,15,128,15,0,30,0,8,0,0,0,0,0,3,128, + 127,128,255,128,127,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,16,35,70,14,255,0, + 3,192,3,224,7,240,15,240,15,248,31,252,62,124,60,30, + 120,15,240,7,64,3,0,0,0,0,0,224,31,224,63,224, + 31,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 15,240,63,252,63,252,16,33,66,14,255,0,56,14,124,31, + 124,31,252,63,252,63,124,31,120,30,0,0,0,0,0,0, + 0,0,0,224,31,224,63,224,31,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,240,63,252,63,252,21,34, + 102,25,2,0,1,192,0,15,224,0,63,240,248,31,255,248, + 0,255,192,0,126,0,1,255,0,7,239,128,31,143,128,2, + 7,192,0,3,224,0,3,224,1,251,240,7,253,240,15,255, + 240,31,15,248,62,7,248,62,3,248,124,3,248,124,1,248, + 252,1,248,252,1,248,252,1,248,252,1,248,252,1,240,252, + 1,240,252,1,240,126,3,224,126,3,224,63,3,192,63,7, + 128,31,143,0,7,254,0,1,248,0,26,33,132,28,1,0, + 0,240,12,0,1,252,12,0,3,255,28,0,3,255,248,0, + 7,255,240,0,14,31,224,0,12,3,192,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,3,1,240,0, + 127,135,252,0,255,159,252,0,63,191,254,0,31,248,254,0, + 31,224,126,0,31,192,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,63,192,255,0,255,243,255,192, + 255,243,255,192,21,35,105,25,2,0,1,192,0,15,224,0, + 15,224,0,7,240,0,3,240,0,1,248,0,0,248,0,0, + 124,0,0,60,0,0,30,0,0,12,0,0,0,0,0,0, + 0,0,252,0,3,255,0,15,15,192,30,7,224,62,7,224, + 62,3,240,124,3,240,124,1,248,252,1,248,252,1,248,252, + 1,248,252,1,248,252,1,248,252,1,248,252,1,240,126,1, + 240,126,3,224,62,3,224,63,3,192,31,135,128,7,254,0, + 1,248,0,21,35,105,25,2,0,0,15,0,0,15,192,0, + 31,224,0,31,128,0,63,0,0,62,0,0,124,0,0,120, + 0,0,240,0,0,224,0,0,192,0,0,0,0,0,0,0, + 0,252,0,3,255,0,15,15,192,30,7,224,62,7,224,62, + 3,240,124,3,240,124,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,252,1,248,252,1,240,126,1,240, + 126,3,224,62,3,224,63,3,192,31,135,128,7,254,0,1, + 248,0,21,35,105,25,2,0,0,120,0,0,252,0,0,252, + 0,1,254,0,3,255,0,3,255,0,7,207,128,15,135,192, + 15,1,192,28,0,224,8,0,64,0,0,0,0,0,0,0, + 252,0,3,255,0,15,15,192,30,7,224,62,7,224,62,3, + 240,124,3,240,124,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,248,252,1,240,126,1,240,126, + 3,224,62,3,224,63,3,192,31,135,128,7,254,0,1,248, + 0,21,33,99,25,2,0,3,192,48,7,240,48,15,252,96, + 31,255,224,31,255,192,56,127,128,48,15,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,252,0,3,255,0,15,15, + 192,30,7,224,62,7,224,62,3,240,124,3,240,124,1,248, + 252,1,248,252,1,248,252,1,248,252,1,248,252,1,248,252, + 1,248,252,1,240,126,1,240,126,3,224,62,3,224,63,3, + 192,31,135,128,7,254,0,1,248,0,21,33,99,25,2,0, + 7,1,192,15,131,224,31,135,224,31,135,224,31,135,224,31, + 7,192,14,3,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,252,0,3,255,0,15,15,192,30,7,224,62,7,224, + 62,3,240,124,3,240,124,1,248,252,1,248,252,1,248,252, + 1,248,252,1,248,252,1,248,252,1,248,252,1,240,126,1, + 240,126,3,224,62,3,224,63,3,192,31,135,128,7,254,0, + 1,248,0,18,18,54,20,1,4,0,192,0,1,224,0,1, + 224,0,1,224,0,1,224,0,0,192,0,0,0,0,127,255, + 192,127,255,192,255,255,128,0,0,0,0,0,0,0,192,0, + 1,224,0,1,224,0,1,224,0,1,224,0,0,192,0,21, + 24,72,25,2,255,0,0,24,0,252,56,3,255,240,15,15, + 224,30,7,224,62,3,240,60,7,240,124,15,240,124,31,248, + 252,29,248,252,57,248,252,121,248,252,241,248,252,225,248,253, + 193,248,255,193,240,127,129,240,127,1,224,62,3,224,63,3, + 192,63,135,128,127,254,0,113,248,0,192,0,0,26,35,140, + 27,1,0,0,224,0,0,3,240,0,0,7,240,0,0,1, + 248,0,0,0,248,0,0,0,124,0,0,0,62,0,0,0, + 30,0,0,0,15,0,0,0,7,0,0,0,2,0,0,0, + 0,0,0,0,0,0,0,3,128,28,0,255,135,252,0,255, + 135,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,129,252,0,31,199,252,128,31, + 255,255,128,15,254,255,192,7,248,126,0,3,224,112,0,26, + 35,140,27,1,0,0,3,128,0,0,7,240,0,0,7,240, + 0,0,15,224,0,0,15,192,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,60,0,0,0,120,0,0,0,48,0, + 0,0,0,0,0,0,0,0,0,3,128,28,0,255,135,252, + 0,255,135,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,129,252,0,31,199,252, + 128,31,255,255,128,15,254,255,192,7,248,126,0,3,224,112, + 0,26,35,140,27,1,0,0,30,0,0,0,62,0,0,0, + 127,0,0,0,255,128,0,0,255,128,0,1,255,192,0,3, + 247,224,0,3,193,224,0,7,128,240,0,15,0,112,0,6, + 0,48,0,0,0,0,0,0,0,0,0,3,128,28,0,255, + 135,252,0,255,135,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,129,252,0,31, + 199,252,128,31,255,255,128,15,254,255,192,7,248,126,0,3, + 224,112,0,26,33,132,27,1,0,3,192,240,0,7,193,240, + 0,7,225,248,0,7,225,248,0,7,193,240,0,7,193,240, + 0,7,129,224,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,128,28,0,255,135,252,0,255,135,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,129,252,0,31,199,252,128,31,255,255, + 128,15,254,255,192,7,248,126,0,3,224,112,0,25,46,184, + 24,255,245,0,1,224,0,0,3,248,0,0,3,248,0,0, + 3,240,0,0,7,224,0,0,7,192,0,0,15,128,0,0, + 15,0,0,0,30,0,0,0,28,0,0,0,56,0,0,0, + 0,0,0,0,0,0,0,127,240,127,128,127,240,127,128,31, + 192,30,0,15,192,28,0,15,192,28,0,7,224,60,0,7, + 224,56,0,3,240,56,0,3,240,112,0,1,240,112,0,1, + 248,240,0,1,248,224,0,0,252,224,0,0,253,224,0,0, + 125,192,0,0,127,192,0,0,127,128,0,0,63,128,0,0, + 63,128,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,30,0,0,0,28,0,0,0,60,0,0,0, + 120,0,0,32,248,0,0,63,240,0,0,127,224,0,0,255, + 192,0,0,255,128,0,0,126,0,0,0,24,47,141,27,1, + 245,3,0,0,63,128,0,255,128,0,255,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,131,224,31,143, + 248,31,191,252,31,255,252,31,240,254,31,192,126,31,128,63, + 31,128,63,31,128,31,31,128,31,31,128,31,31,128,31,31, + 128,31,31,128,30,31,128,30,31,128,62,31,192,60,31,240, + 124,31,255,248,31,255,240,31,159,224,31,135,128,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,63,192,0,255,248,0,255,248,0,25,44, + 176,24,255,245,0,224,56,0,1,240,124,0,3,240,252,0, + 3,240,252,0,3,240,252,0,3,224,248,0,1,192,112,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 127,240,127,128,127,240,127,128,31,192,30,0,15,192,28,0, + 15,192,28,0,7,224,60,0,7,224,56,0,3,240,56,0, + 3,240,112,0,1,240,112,0,1,248,240,0,1,248,224,0, + 0,252,224,0,0,253,224,0,0,125,192,0,0,127,192,0, + 0,127,128,0,0,63,128,0,0,63,128,0,0,31,0,0, + 0,31,0,0,0,14,0,0,0,14,0,0,0,30,0,0, + 0,28,0,0,0,60,0,0,0,120,0,0,32,248,0,0, + 63,240,0,0,127,224,0,0,255,192,0,0,255,128,0,0, + 126,0,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 29 + Calculated Max Values w=22 h=46 x= 3 y=17 dx=25 dy= 0 ascent=38 len=138 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent= 0 + X Font ascent =29 descent= 0 + Max Font ascent =38 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30n[1275] U8G_SECTION(".progmem.u8g_font_gdb30n") = { + 0,74,69,232,239,29,0,0,0,0,42,57,0,38,247,29, + 0,19,20,60,21,1,17,0,48,0,1,240,0,1,240,0, + 32,240,0,112,225,128,120,227,192,126,231,224,127,255,224,31, + 255,0,3,248,0,3,248,0,31,255,0,127,255,192,254,231, + 192,124,227,192,48,225,192,0,240,128,0,240,0,1,240,0, + 0,192,0,18,18,54,20,1,4,0,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,127,255, + 192,255,255,192,255,255,128,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,192,0,10, + 15,30,13,1,247,7,0,63,128,255,192,127,192,63,192,15, + 192,15,192,15,128,15,128,15,0,31,0,30,0,60,0,120, + 0,48,0,15,3,6,17,1,11,127,254,127,252,255,252,8, + 7,7,13,3,255,62,127,255,255,255,254,124,21,46,138,23, + 1,248,0,0,56,0,0,248,0,0,240,0,1,240,0,1, + 240,0,1,224,0,3,224,0,3,224,0,3,192,0,7,192, + 0,7,128,0,15,128,0,15,128,0,15,0,0,31,0,0, + 31,0,0,30,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,120,0,0,248,0,0,248,0,0,240,0,1,240,0, + 1,224,0,3,224,0,3,224,0,3,192,0,7,192,0,7, + 192,0,7,128,0,15,128,0,15,0,0,31,0,0,31,0, + 0,30,0,0,62,0,0,62,0,0,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,192,0,0,22,29,87,24, + 1,0,0,252,0,3,255,0,7,143,192,15,7,224,30,3, + 224,62,1,240,62,1,240,124,1,248,124,1,248,124,0,248, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,124,0,248,124,0, + 248,126,0,248,62,1,240,62,1,240,31,1,224,31,3,192, + 15,135,128,3,255,0,0,252,0,19,29,87,24,3,0,0, + 16,0,0,248,0,7,248,0,63,248,0,255,248,0,225,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,15,255,0, + 127,255,224,127,255,224,20,29,87,24,1,0,0,255,0,7, + 255,192,15,143,224,63,7,224,62,3,240,126,3,240,126,3, + 240,120,3,240,0,3,240,0,7,224,0,7,224,0,15,192, + 0,15,128,0,31,128,0,31,0,0,62,0,0,124,0,0, + 248,0,0,248,0,1,240,0,3,224,32,7,192,48,15,128, + 48,15,0,48,30,0,112,63,255,240,127,255,240,255,255,240, + 127,255,240,20,29,87,24,1,0,1,254,0,7,255,128,31, + 31,192,63,15,192,62,7,224,126,7,224,60,7,224,0,7, + 224,0,7,192,0,15,192,0,31,128,0,127,0,1,254,0, + 1,255,128,2,63,192,0,15,224,0,7,224,0,3,240,0, + 3,240,0,3,240,0,3,240,0,3,240,0,3,240,64,7, + 224,96,15,224,252,31,192,63,255,128,31,254,0,3,248,0, + 21,29,87,25,2,0,0,1,128,0,15,128,0,31,128,0, + 63,128,0,63,128,0,127,128,0,255,128,0,239,128,1,239, + 128,3,207,128,3,143,128,7,143,128,7,15,128,14,15,128, + 30,15,128,28,15,128,56,15,128,56,15,128,127,255,248,255, + 255,240,255,255,224,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,31,192,1,255,240,1,255,240,20,29,87, + 24,2,0,0,0,32,31,255,240,31,255,192,31,255,192,31, + 255,128,28,0,0,28,0,0,28,0,0,60,0,0,60,0, + 0,56,0,0,59,252,0,63,255,0,63,255,128,120,31,192, + 32,15,224,0,7,224,0,7,240,0,3,240,0,3,240,0, + 3,240,0,3,240,0,3,240,0,7,224,64,7,224,224,15, + 192,252,31,128,63,254,0,7,248,0,20,29,87,24,2,0, + 0,1,128,0,31,192,0,127,0,1,252,0,3,240,0,7, + 192,0,15,128,0,31,128,0,63,0,0,62,0,0,126,0, + 0,124,126,0,125,255,128,255,255,192,255,15,224,254,7,224, + 252,7,240,252,3,240,252,3,240,252,3,240,252,3,240,124, + 3,240,126,3,224,126,3,224,62,3,192,31,7,192,15,143, + 128,7,255,0,1,248,0,21,28,84,24,2,0,127,255,240, + 127,255,248,127,255,240,127,255,224,112,1,224,224,1,224,192, + 1,192,64,3,192,0,3,128,0,7,128,0,7,0,0,15, + 0,0,15,0,0,30,0,0,30,0,0,60,0,0,60,0, + 0,124,0,0,120,0,0,248,0,0,240,0,1,240,0,1, + 240,0,3,224,0,3,224,0,7,224,0,15,192,0,6,0, + 0,20,29,87,24,2,0,0,252,0,7,255,128,15,31,192, + 30,15,192,28,7,224,60,7,224,60,7,224,60,7,224,62, + 15,192,63,143,128,31,255,0,31,254,0,15,252,0,3,255, + 0,7,255,128,15,255,192,31,31,224,62,15,240,126,7,240, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,224,126, + 3,224,126,7,192,63,15,128,31,254,0,3,248,0,20,29, + 87,24,2,255,1,252,0,7,255,0,15,31,128,30,15,192, + 62,7,224,124,7,224,124,7,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,254,3,240,126,7,240,127,15, + 240,63,255,240,31,251,224,7,227,224,0,7,224,0,7,192, + 0,7,192,0,15,128,0,31,0,0,62,0,0,252,0,3, + 248,0,15,224,0,63,128,0,56,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=41 h=49 x= 4 y=24 dx=42 dy= 0 ascent=39 len=210 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x=-7 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30r[9112] U8G_SECTION(".progmem.u8g_font_gdb30r") = { + 0,74,69,232,239,30,10,50,24,78,32,127,245,39,245,38, + 245,0,0,0,12,0,0,8,36,36,15,3,255,6,31,127, + 126,126,126,126,126,126,126,62,62,62,62,62,62,62,60,60, + 60,60,60,60,28,28,24,0,0,0,62,127,255,255,255,254, + 124,16,16,32,23,3,19,14,3,126,31,254,63,254,63,124, + 63,124,63,124,63,124,63,124,30,124,30,124,30,60,30,60, + 30,56,30,56,30,56,14,22,27,81,24,2,3,0,56,48, + 0,120,112,0,112,240,0,112,224,0,240,224,0,225,224,0, + 225,192,31,255,252,31,255,252,63,255,252,3,195,128,3,195, + 128,3,135,128,3,135,0,7,135,0,7,135,0,255,255,240, + 255,255,240,255,255,224,14,30,0,14,28,0,30,28,0,28, + 60,0,28,60,0,28,56,0,60,56,0,56,112,0,20,36, + 108,24,2,252,0,48,0,0,112,0,0,112,0,0,112,0, + 3,255,0,15,255,224,63,255,240,124,119,240,120,115,224,240, + 113,224,240,112,192,248,112,0,252,112,0,255,112,0,127,240, + 0,63,248,0,31,254,0,7,255,128,0,255,192,0,127,224, + 0,119,224,0,113,240,0,113,240,224,112,240,224,112,240,240, + 112,240,248,112,224,252,113,224,255,119,192,255,255,192,63,255, + 0,7,252,0,0,112,0,0,112,0,0,112,0,0,96,0, + 31,30,120,34,2,0,0,0,0,16,7,192,0,240,31,224, + 1,224,56,240,3,192,120,120,3,128,112,120,7,128,240,60, + 15,0,240,60,30,0,240,60,28,0,240,60,60,0,240,60, + 120,0,240,60,240,0,112,57,224,0,120,57,224,0,56,115, + 192,0,31,231,131,224,15,143,12,48,0,15,24,56,0,30, + 56,28,0,60,56,28,0,120,120,30,0,120,120,30,0,240, + 120,30,1,224,120,30,3,192,120,30,3,192,120,28,7,128, + 60,60,15,0,30,56,30,0,15,240,28,0,7,192,31,34, + 136,33,2,0,0,31,128,0,0,127,224,0,0,227,240,0, + 1,225,248,0,3,193,248,0,3,193,248,0,7,193,248,0, + 7,193,248,0,7,195,240,0,7,195,240,0,7,231,224,0, + 7,239,192,0,3,255,128,0,3,255,0,0,3,252,0,0, + 1,248,0,0,7,252,63,252,15,252,127,254,31,254,31,184, + 63,127,15,128,62,127,7,128,126,63,135,128,252,31,199,128, + 252,31,231,128,252,15,247,0,252,7,255,0,252,3,254,0, + 252,1,252,0,254,0,255,0,127,0,127,128,127,129,255,248, + 63,255,223,248,15,255,15,244,3,252,7,128,7,16,16,13, + 3,19,14,126,254,254,124,124,124,124,124,124,124,60,60,56, + 56,56,13,45,90,16,3,249,0,16,0,120,0,240,1,224, + 3,224,7,192,7,128,15,128,31,0,31,0,63,0,62,0, + 62,0,126,0,126,0,126,0,124,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,126,0,126,0,126,0,126,0,62,0,63,0,63,0, + 31,0,15,128,15,128,7,192,3,192,1,224,0,240,0,120, + 0,16,13,44,88,16,0,249,64,0,240,0,120,0,60,0, + 30,0,31,0,15,128,15,192,7,192,7,224,7,224,3,224, + 3,240,3,240,3,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 3,240,3,240,3,240,3,224,3,224,7,224,7,192,7,192, + 15,128,15,0,31,0,62,0,60,0,120,0,240,0,64,0, + 19,20,60,21,1,17,0,48,0,1,240,0,1,240,0,32, + 240,0,112,225,128,120,227,192,126,231,224,127,255,224,31,255, + 0,3,248,0,3,248,0,31,255,0,127,255,192,254,231,192, + 124,227,192,48,225,192,0,240,128,0,240,0,1,240,0,0, + 192,0,18,18,54,20,1,4,0,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,127,255,192, + 255,255,192,255,255,128,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,192,0,10,15, + 30,13,1,247,7,0,63,128,255,192,127,192,63,192,15,192, + 15,192,15,128,15,128,15,0,31,0,30,0,60,0,120,0, + 48,0,15,3,6,17,1,11,127,254,127,252,255,252,8,7, + 7,13,3,255,62,127,255,255,255,254,124,21,46,138,23,1, + 248,0,0,56,0,0,248,0,0,240,0,1,240,0,1,240, + 0,1,224,0,3,224,0,3,224,0,3,192,0,7,192,0, + 7,128,0,15,128,0,15,128,0,15,0,0,31,0,0,31, + 0,0,30,0,0,62,0,0,60,0,0,124,0,0,124,0, + 0,120,0,0,248,0,0,248,0,0,240,0,1,240,0,1, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,120, + 0,0,248,0,0,248,0,0,192,0,0,22,29,87,24,1, + 0,0,252,0,3,255,0,7,143,192,15,7,224,30,3,224, + 62,1,240,62,1,240,124,1,248,124,1,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,124,0,248,124,0,248, + 126,0,248,62,1,240,62,1,240,31,1,224,31,3,192,15, + 135,128,3,255,0,0,252,0,19,29,87,24,3,0,0,16, + 0,0,248,0,7,248,0,63,248,0,255,248,0,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,15,255,0,127, + 255,224,127,255,224,20,29,87,24,1,0,0,255,0,7,255, + 192,15,143,224,63,7,224,62,3,240,126,3,240,126,3,240, + 120,3,240,0,3,240,0,7,224,0,7,224,0,15,192,0, + 15,128,0,31,128,0,31,0,0,62,0,0,124,0,0,248, + 0,0,248,0,1,240,0,3,224,32,7,192,48,15,128,48, + 15,0,48,30,0,112,63,255,240,127,255,240,255,255,240,127, + 255,240,20,29,87,24,1,0,1,254,0,7,255,128,31,31, + 192,63,15,192,62,7,224,126,7,224,60,7,224,0,7,224, + 0,7,192,0,15,192,0,31,128,0,127,0,1,254,0,1, + 255,128,2,63,192,0,15,224,0,7,224,0,3,240,0,3, + 240,0,3,240,0,3,240,0,3,240,0,3,240,64,7,224, + 96,15,224,252,31,192,63,255,128,31,254,0,3,248,0,21, + 29,87,25,2,0,0,1,128,0,15,128,0,31,128,0,63, + 128,0,63,128,0,127,128,0,255,128,0,239,128,1,239,128, + 3,207,128,3,143,128,7,143,128,7,15,128,14,15,128,30, + 15,128,28,15,128,56,15,128,56,15,128,127,255,248,255,255, + 240,255,255,224,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,31,192,1,255,240,1,255,240,20,29,87,24, + 2,0,0,0,32,31,255,240,31,255,192,31,255,192,31,255, + 128,28,0,0,28,0,0,28,0,0,60,0,0,60,0,0, + 56,0,0,59,252,0,63,255,0,63,255,128,120,31,192,32, + 15,224,0,7,224,0,7,240,0,3,240,0,3,240,0,3, + 240,0,3,240,0,3,240,0,7,224,64,7,224,224,15,192, + 252,31,128,63,254,0,7,248,0,20,29,87,24,2,0,0, + 1,128,0,31,192,0,127,0,1,252,0,3,240,0,7,192, + 0,15,128,0,31,128,0,63,0,0,62,0,0,126,0,0, + 124,126,0,125,255,128,255,255,192,255,15,224,254,7,224,252, + 7,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 240,126,3,224,126,3,224,62,3,192,31,7,192,15,143,128, + 7,255,0,1,248,0,21,28,84,24,2,0,127,255,240,127, + 255,248,127,255,240,127,255,224,112,1,224,224,1,224,192,1, + 192,64,3,192,0,3,128,0,7,128,0,7,0,0,15,0, + 0,15,0,0,30,0,0,30,0,0,60,0,0,60,0,0, + 124,0,0,120,0,0,248,0,0,240,0,1,240,0,1,240, + 0,3,224,0,3,224,0,7,224,0,15,192,0,6,0,0, + 20,29,87,24,2,0,0,252,0,7,255,128,15,31,192,30, + 15,192,28,7,224,60,7,224,60,7,224,60,7,224,62,15, + 192,63,143,128,31,255,0,31,254,0,15,252,0,3,255,0, + 7,255,128,15,255,192,31,31,224,62,15,240,126,7,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,224,126,3, + 224,126,7,192,63,15,128,31,254,0,3,248,0,20,29,87, + 24,2,255,1,252,0,7,255,0,15,31,128,30,15,192,62, + 7,224,124,7,224,124,7,224,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,254,3,240,126,7,240,127,15,240, + 63,255,240,31,251,224,7,227,224,0,7,224,0,7,192,0, + 7,192,0,15,128,0,31,0,0,62,0,0,252,0,3,248, + 0,15,224,0,63,128,0,56,0,0,8,23,23,13,3,255, + 62,127,255,255,255,254,124,0,0,0,0,0,0,0,0,0, + 62,127,255,255,255,254,124,10,31,62,13,1,247,15,128,31, + 192,63,192,63,192,63,192,31,128,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,63, + 128,255,192,127,192,63,192,15,192,15,192,15,128,15,128,15, + 0,31,0,30,0,60,0,120,0,48,0,20,16,48,22,1, + 6,0,0,96,0,1,240,0,15,224,0,127,224,3,255,128, + 15,252,0,127,224,0,127,0,0,254,0,0,255,192,0,63, + 248,0,7,254,0,1,255,192,0,63,224,0,7,240,0,0, + 192,20,10,30,22,1,8,127,255,224,127,255,240,255,255,224, + 0,0,0,0,0,0,0,0,0,0,0,0,127,255,224,127, + 255,240,255,255,224,20,16,48,22,1,6,48,0,0,126,0, + 0,255,192,0,63,240,0,15,254,0,1,255,192,0,63,224, + 0,7,240,0,31,224,0,127,224,3,255,0,31,248,0,127, + 224,0,127,0,0,248,0,0,64,0,0,19,35,105,22,2, + 255,1,254,0,15,255,128,63,31,192,126,15,192,124,7,224, + 252,7,224,252,7,224,252,7,224,240,7,224,0,7,192,0, + 15,192,0,15,128,0,31,128,0,63,0,0,126,0,0,124, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,128,0,0,0,0,0, + 0,0,0,0,0,1,240,0,3,248,0,7,248,0,7,248, + 0,7,248,0,7,240,0,3,224,0,38,42,210,42,2,246, + 0,0,255,192,0,0,7,255,248,0,0,31,255,254,0,0, + 127,255,255,0,0,255,0,255,128,1,248,0,31,192,3,224, + 0,7,224,7,192,0,3,224,15,128,0,1,240,31,0,0, + 1,240,31,0,252,24,248,62,3,254,120,248,60,7,255,240, + 120,124,15,135,240,124,124,31,3,240,124,120,31,3,240,60, + 120,62,3,240,60,248,62,3,240,60,248,126,3,240,60,248, + 126,3,240,60,248,126,3,240,60,248,126,3,240,60,248,126, + 3,240,56,248,126,3,240,56,248,126,3,240,120,252,127,3, + 240,112,252,63,7,240,224,124,63,143,249,224,124,31,255,255, + 192,126,31,251,255,128,62,15,241,254,0,63,3,224,248,0, + 63,128,0,0,0,31,192,0,0,0,15,224,0,0,128,15, + 240,0,1,192,7,252,0,7,192,3,255,128,127,128,0,255, + 255,254,0,0,127,255,252,0,0,31,255,240,0,0,1,255, + 0,0,30,30,120,30,0,0,0,1,128,0,0,7,128,0, + 0,15,192,0,0,31,192,0,0,31,224,0,0,31,224,0, + 0,63,224,0,0,63,240,0,0,59,240,0,0,121,240,0, + 0,121,248,0,0,113,248,0,0,240,252,0,0,240,252,0, + 0,224,252,0,1,224,126,0,1,224,126,0,1,192,126,0, + 3,255,255,0,3,255,255,0,3,128,31,0,7,128,31,128, + 7,0,31,128,7,0,15,192,15,0,15,192,14,0,15,192, + 14,0,7,224,30,0,7,224,255,192,63,252,255,192,63,252, + 26,30,120,29,0,0,3,255,128,0,255,255,240,0,127,193, + 252,0,15,192,126,0,15,192,127,0,15,192,63,0,15,192, + 63,0,15,192,63,0,15,192,63,0,15,192,62,0,15,192, + 126,0,15,192,252,0,15,195,248,0,15,255,224,0,15,255, + 252,0,15,192,254,0,15,192,63,0,15,192,31,128,15,192, + 31,128,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,128,15,192,31,128,15,192, + 63,0,31,192,254,0,127,255,252,0,127,255,224,0,24,30, + 90,27,1,0,0,31,224,0,255,252,1,255,254,7,224,254, + 15,128,126,31,128,60,31,0,28,62,0,0,62,0,0,126, + 0,0,124,0,0,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 126,0,0,126,0,0,127,0,0,63,128,2,63,192,15,31, + 240,62,15,255,248,7,255,240,1,255,192,0,127,0,29,30, + 120,31,0,0,3,255,192,0,255,255,248,0,127,192,254,0, + 143,192,63,128,15,192,31,192,15,192,15,192,15,192,7,224, + 15,192,7,240,15,192,3,240,15,192,3,240,15,192,3,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,240,15,192,3,240,15,192,3,240,15,192,7,224, + 15,192,7,224,15,192,15,192,15,192,31,128,15,192,63,0, + 31,224,254,0,127,255,248,0,127,255,192,0,23,30,90,25, + 1,0,255,255,248,255,255,252,63,128,56,31,128,56,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,224,31,255,224,31, + 128,192,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,6,31,128,6,31,128,14, + 31,128,14,63,192,30,255,255,254,255,255,252,22,30,90,24, + 1,0,255,255,248,255,255,252,63,128,60,31,128,28,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,192,31,255,224,31, + 129,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,63,192,0,255,248,0,255,248,0,27,30,120,29, + 1,0,0,15,248,0,0,127,255,128,1,240,127,128,3,192, + 63,0,7,128,15,0,15,0,14,0,31,0,0,0,62,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,124,0, + 0,0,252,0,0,0,252,0,0,0,252,1,255,224,252,1, + 255,224,252,0,127,192,252,0,31,128,252,0,31,128,254,0, + 31,128,126,0,31,128,127,0,31,128,127,0,31,128,63,128, + 31,128,63,192,31,128,31,240,63,0,15,255,254,0,7,255, + 252,0,1,255,240,0,0,63,128,0,30,30,120,33,1,0, + 255,240,63,252,255,240,63,252,63,192,15,240,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,255,255,224,31,255,255,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,63,192,15,240, + 255,240,63,252,255,240,63,252,12,30,60,16,2,0,255,240, + 255,240,63,192,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,21,40,120,16,249,246, + 0,255,248,0,255,248,0,31,224,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,192,0,15,192, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,128,0,15,128, + 0,15,128,0,31,0,24,30,0,62,62,0,127,248,0,255, + 240,0,127,224,0,31,128,0,29,30,120,30,1,0,255,240, + 255,224,255,240,255,224,63,192,31,0,31,128,62,0,31,128, + 124,0,31,128,248,0,31,129,240,0,31,129,224,0,31,131, + 192,0,31,135,128,0,31,143,0,0,31,159,0,0,31,190, + 0,0,31,188,0,0,31,252,0,0,31,254,0,0,31,191, + 0,0,31,159,128,0,31,143,192,0,31,135,224,0,31,135, + 240,0,31,131,248,0,31,129,252,0,31,128,254,0,31,128, + 126,0,31,128,127,0,31,128,63,192,63,192,31,240,255,240, + 15,248,255,240,7,128,23,30,90,24,1,0,255,240,0,255, + 240,0,63,192,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,4,31,128,6,31,128,14,31,128,30,63,192,60, + 255,255,252,255,255,252,38,30,150,41,1,0,255,128,0,15, + 248,255,192,0,15,248,15,192,0,31,192,15,224,0,31,192, + 15,224,0,31,192,15,240,0,63,192,15,240,0,63,192,15, + 248,0,127,192,15,248,0,119,192,14,252,0,247,192,14,252, + 0,247,192,14,124,1,231,192,14,126,1,231,192,14,62,1, + 199,192,14,63,3,199,192,14,31,3,135,192,14,31,135,135, + 192,14,31,135,135,192,14,15,143,7,192,14,15,207,7,192, + 30,7,222,7,192,30,7,254,7,192,30,3,252,7,192,30, + 3,252,7,192,30,3,248,7,192,30,1,248,7,224,30,1, + 248,7,224,31,0,240,15,224,255,192,240,63,252,255,192,96, + 63,252,30,30,120,32,1,0,255,0,15,252,255,128,15,252, + 63,192,3,240,31,192,1,224,31,224,1,224,31,240,1,224, + 31,240,1,224,31,248,1,224,31,252,1,224,30,254,1,224, + 30,126,1,224,30,63,1,224,30,63,129,224,30,31,129,224, + 30,15,193,224,30,7,225,224,30,7,225,224,30,3,241,224, + 30,1,249,224,30,1,253,224,30,0,253,224,30,0,127,224, + 30,0,63,224,30,0,63,224,30,0,31,224,30,0,15,224, + 30,0,7,224,63,0,7,224,255,192,3,224,255,192,0,224, + 27,30,120,30,1,0,0,31,192,0,0,255,240,0,3,225, + 252,0,7,128,126,0,15,0,63,0,31,0,31,0,30,0, + 31,128,62,0,15,128,126,0,15,192,124,0,15,192,124,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,254,0,7,192,126,0,15,192,126,0,15,128,127,0, + 15,128,63,0,31,0,31,128,31,0,31,192,62,0,15,240, + 252,0,7,255,240,0,1,255,224,0,0,127,0,0,25,30, + 120,27,0,0,3,255,192,0,255,255,248,0,127,193,252,0, + 143,192,126,0,15,192,63,0,15,192,63,0,15,192,31,128, + 15,192,31,128,15,192,31,128,15,192,31,128,15,192,31,128, + 15,192,31,0,15,192,63,0,15,192,62,0,15,192,126,0, + 15,208,252,0,15,223,240,0,15,207,192,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 31,224,0,0,127,252,0,0,127,252,0,0,32,38,152,30, + 1,248,0,31,192,0,0,255,240,0,3,225,252,0,7,128, + 126,0,15,0,63,0,31,0,31,0,30,0,31,128,62,0, + 15,128,126,0,15,192,124,0,15,192,124,0,7,192,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,254,0, + 7,192,126,0,15,192,126,0,15,128,127,0,15,128,63,0, + 31,0,31,128,31,0,31,192,62,0,15,240,252,0,7,255, + 248,0,1,255,224,0,0,127,240,0,0,1,252,0,0,0, + 254,2,0,0,63,135,0,0,31,255,0,0,15,254,0,0, + 3,252,0,0,1,252,0,0,0,120,29,30,120,29,0,0, + 7,255,128,0,255,255,240,0,127,193,252,0,143,192,126,0, + 15,192,126,0,15,192,63,0,15,192,63,0,15,192,63,0, + 15,192,63,0,15,192,63,0,15,192,126,0,15,192,126,0, + 15,192,252,0,15,255,248,0,15,255,240,0,15,255,192,0, + 15,199,192,0,15,195,224,0,15,193,240,0,15,193,240,0, + 15,192,248,0,15,192,252,0,15,192,126,0,15,192,126,0, + 15,192,63,0,15,192,63,128,15,192,31,192,31,224,31,248, + 127,248,15,248,127,248,15,128,20,30,90,25,3,0,1,255, + 0,15,255,192,30,15,224,60,7,192,120,3,192,248,1,128, + 248,0,0,252,0,0,254,0,0,255,0,0,127,192,0,127, + 240,0,63,252,0,31,255,0,7,255,128,1,255,192,0,127, + 224,0,31,224,0,7,240,0,3,240,0,1,240,192,1,240, + 224,1,240,224,1,224,240,3,224,248,3,192,254,15,128,255, + 255,0,127,254,0,15,240,0,27,30,120,28,0,0,127,255, + 255,224,127,255,255,224,112,31,128,224,112,31,128,224,96,31, + 128,224,96,31,128,224,224,31,128,96,64,31,128,96,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,63,192,0,1,255, + 248,0,1,255,248,0,29,30,120,32,1,0,255,240,31,248, + 255,240,31,248,63,192,7,224,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,128,31,192,7,128,15,192,7,128,15,224,7,0, + 7,224,15,0,3,248,62,0,1,255,252,0,0,255,240,0, + 0,31,192,0,31,30,120,32,0,0,255,240,7,254,255,240, + 7,254,31,128,0,240,15,192,0,224,15,192,0,224,15,192, + 1,224,7,224,1,192,7,224,3,192,3,240,3,192,3,240, + 3,128,3,240,7,128,1,248,7,128,1,248,7,0,0,248, + 15,0,0,252,14,0,0,252,14,0,0,126,30,0,0,126, + 28,0,0,62,28,0,0,63,60,0,0,63,56,0,0,31, + 248,0,0,31,240,0,0,15,240,0,0,15,240,0,0,15, + 224,0,0,7,224,0,0,7,224,0,0,3,192,0,0,3, + 0,0,41,30,180,41,0,0,255,240,12,3,255,128,255,240, + 30,3,255,128,31,128,30,0,124,0,15,128,30,0,56,0, + 15,128,63,0,120,0,15,128,63,0,120,0,15,192,63,128, + 112,0,7,192,127,128,112,0,7,192,127,128,112,0,7,192, + 127,192,240,0,7,224,247,192,224,0,3,224,231,224,224,0, + 3,224,227,224,224,0,3,225,227,225,224,0,3,241,195,241, + 224,0,3,241,193,241,192,0,1,243,193,241,192,0,1,243, + 128,249,192,0,1,251,128,251,192,0,1,255,128,255,192,0, + 0,255,0,127,128,0,0,255,0,127,128,0,0,254,0,127, + 128,0,0,254,0,63,128,0,0,126,0,63,0,0,0,124, + 0,31,0,0,0,124,0,31,0,0,0,124,0,31,0,0, + 0,120,0,14,0,0,0,48,0,12,0,0,29,30,120,30, + 1,0,255,240,127,240,255,240,127,240,63,192,31,128,31,192, + 15,0,15,192,30,0,7,224,60,0,7,240,60,0,3,240, + 120,0,1,248,240,0,1,252,240,0,0,255,224,0,0,127, + 192,0,0,127,192,0,0,63,128,0,0,31,128,0,0,31, + 192,0,0,63,224,0,0,127,224,0,0,127,240,0,0,243, + 248,0,1,241,248,0,1,225,252,0,3,192,254,0,7,192, + 126,0,7,128,63,0,15,0,63,128,31,0,31,192,63,0, + 63,224,255,192,255,248,255,192,255,248,29,30,120,29,0,0, + 127,0,31,248,255,128,31,248,31,192,3,192,15,192,3,128, + 7,224,7,128,3,240,7,0,3,240,15,0,1,248,14,0, + 1,248,30,0,0,252,28,0,0,124,60,0,0,126,56,0, + 0,63,120,0,0,63,240,0,0,31,240,0,0,31,224,0, + 0,15,224,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,31,224,0, + 0,255,252,0,0,255,252,0,23,30,90,26,1,0,63,255, + 254,63,255,254,60,0,254,56,1,252,56,1,248,48,3,248, + 48,7,240,64,7,240,0,15,224,0,15,192,0,31,192,0, + 63,128,0,63,128,0,127,0,0,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,248,0,7,240,0,15,224,0, + 15,224,4,31,192,6,31,192,6,63,128,14,127,0,14,127, + 0,30,255,255,254,127,255,254,12,45,90,16,3,248,255,240, + 255,240,255,240,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,255,240,255,240,255,240,21,46,138,23,1,248,224,0, + 0,248,0,0,120,0,0,120,0,0,124,0,0,60,0,0, + 60,0,0,62,0,0,30,0,0,31,0,0,15,0,0,15, + 0,0,15,128,0,7,128,0,7,128,0,7,192,0,3,192, + 0,3,192,0,3,224,0,1,224,0,1,240,0,0,240,0, + 0,240,0,0,248,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,60,0,0,62,0,0,30,0,0,31,0,0,15, + 0,0,15,0,0,15,128,0,7,128,0,7,128,0,7,192, + 0,3,192,0,3,192,0,1,224,0,1,224,0,1,240,0, + 0,240,0,0,240,0,0,56,12,45,90,16,1,248,255,240, + 255,240,255,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,255,240,255,240,255,240,19,23,69,24,2,13,0,32, + 0,0,112,0,0,240,0,1,240,0,1,248,0,1,248,0, + 3,188,0,3,188,0,7,60,0,7,30,0,6,30,0,14, + 14,0,14,15,0,12,15,0,28,7,128,28,7,128,24,3, + 128,56,3,192,48,3,192,112,1,224,112,1,224,96,0,224, + 192,0,192,21,3,9,23,1,250,127,255,248,127,255,248,255, + 255,240,11,11,22,15,0,24,60,0,252,0,254,0,126,0, + 63,0,31,0,15,128,7,128,3,192,1,192,0,224,23,22, + 66,24,1,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,24,36,108,26,0,0,3,0,0,63, + 128,0,255,128,0,127,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,131,224,31,143,248,31,191,252,31, + 255,252,31,240,254,31,192,126,31,128,63,31,128,63,31,128, + 31,31,128,31,31,128,31,31,128,31,31,128,31,31,128,30, + 31,128,30,31,128,60,31,128,56,31,240,248,31,255,240,15, + 255,192,3,255,128,0,126,0,20,22,66,22,1,0,0,127, + 128,1,255,240,7,135,224,15,3,224,30,1,224,62,0,192, + 124,0,192,124,0,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,0,254,0,0,126,0,32,127,0, + 112,63,193,224,63,255,192,31,255,128,7,255,0,1,252,0, + 25,36,144,27,2,0,0,0,56,0,0,15,248,0,0,15, + 248,0,0,3,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,249, + 248,0,7,255,248,0,15,255,248,0,31,135,248,0,63,3, + 248,0,62,1,248,0,126,1,248,0,124,1,248,0,252,1, + 248,0,252,1,248,0,252,1,248,0,252,1,248,0,252,1, + 248,0,252,1,248,0,254,1,248,0,126,1,248,0,127,3, + 248,0,127,135,253,0,63,255,255,128,31,253,254,0,15,248, + 252,0,3,224,224,0,19,22,66,23,2,0,0,252,0,7, + 255,0,15,31,128,30,15,128,62,15,192,124,7,192,124,7, + 224,124,7,224,252,7,224,255,255,224,255,255,128,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,64,127,0,224,63, + 131,192,63,255,128,31,255,0,15,254,0,3,248,0,20,37, + 111,16,1,0,0,15,128,0,63,224,0,255,240,1,255,224, + 3,227,224,7,193,192,7,193,0,15,128,0,15,128,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,127,255,0,255,254,0,31,132,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,63,224,0,255,252,0, + 255,252,0,25,33,132,25,0,245,0,126,1,128,3,255,223, + 128,7,135,255,0,15,3,254,0,30,1,240,0,30,0,248, + 0,62,0,248,0,62,0,248,0,62,0,248,0,62,0,248, + 0,63,0,240,0,31,129,224,0,15,195,192,0,7,255,128, + 0,1,254,0,0,3,224,0,0,7,192,0,0,15,192,0, + 0,31,254,0,0,31,255,240,0,15,255,252,0,7,255,254, + 0,15,159,255,0,62,0,127,0,124,0,63,0,252,0,31, + 0,252,0,30,0,254,0,30,0,255,0,60,0,127,192,248, + 0,63,255,240,0,15,255,192,0,1,254,0,0,26,36,144, + 28,1,0,1,128,0,0,63,128,0,0,255,128,0,0,255, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,129,240,0,31, + 143,252,0,31,159,252,0,31,255,254,0,31,248,254,0,31, + 224,126,0,31,192,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,63,192,255,0,255,243,255,192,255, + 243,255,192,12,32,64,14,1,0,7,128,15,192,31,192,31, + 192,31,128,15,0,0,0,0,0,0,0,0,0,3,128,127, + 128,255,128,127,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,63,192,255,240,255,240,17,43,129,14,250,245,0, + 15,0,0,31,128,0,63,128,0,63,128,0,63,0,0,30, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128, + 0,127,128,0,255,128,0,127,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,0,0,31,0,0,62,0,16,62, + 0,60,124,0,127,248,0,255,224,0,255,192,0,63,0,0, + 26,36,144,26,1,0,1,128,0,0,63,128,0,0,255,128, + 0,0,255,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,129, + 255,128,31,129,255,128,31,128,252,0,31,128,248,0,31,131, + 224,0,31,135,192,0,31,143,128,0,31,158,0,0,31,188, + 0,0,31,252,0,0,31,190,0,0,31,191,0,0,31,159, + 128,0,31,143,192,0,31,135,224,0,31,135,240,0,31,131, + 248,0,31,129,252,0,31,128,252,0,63,128,255,192,255,240, + 127,192,255,240,62,0,12,36,72,14,1,0,1,128,63,128, + 255,128,255,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,192, + 255,240,255,240,39,22,110,41,1,0,3,3,224,31,128,127, + 143,248,127,192,255,159,249,255,224,127,255,255,255,240,31,241, + 255,135,240,31,224,255,3,240,31,128,252,3,240,31,128,252, + 3,240,31,128,252,3,240,31,128,252,3,240,31,128,252,3, + 240,31,128,252,3,240,31,128,252,3,240,31,128,252,3,240, + 31,128,252,3,240,31,128,252,3,240,31,128,252,3,240,31, + 128,252,3,240,31,128,252,3,240,63,128,252,3,248,255,247, + 255,159,254,255,247,255,159,254,26,22,88,28,1,0,3,1, + 240,0,127,135,252,0,255,159,252,0,63,191,254,0,31,248, + 254,0,31,224,126,0,31,192,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,63,192,255,0,255,243, + 255,192,255,243,255,192,21,22,66,25,2,0,0,252,0,3, + 255,0,15,15,192,30,7,224,62,7,224,62,3,240,124,3, + 240,124,1,248,252,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,240,126,1,240,126,3,224,62, + 3,224,63,3,192,31,135,128,7,254,0,1,248,0,24,33, + 99,27,1,245,3,3,224,127,143,248,255,159,252,63,255,252, + 31,240,254,31,192,126,31,128,63,31,128,63,31,128,31,31, + 128,31,31,128,31,31,128,31,31,128,31,31,128,30,31,128, + 30,31,128,62,31,192,60,31,240,124,31,255,248,31,255,240, + 31,159,224,31,135,128,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,63,192, + 0,255,248,0,255,248,0,24,33,99,26,2,245,0,124,8, + 1,255,28,7,255,248,15,135,248,30,3,248,62,1,248,124, + 1,248,124,1,248,252,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,254,1,248,126,1,248,127,3,248, + 127,143,248,63,255,248,31,253,248,15,249,248,3,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,3,248,0,31,255,0,31,255, + 20,22,66,21,1,0,3,7,192,127,143,240,255,191,240,63, + 255,224,31,241,224,31,224,224,31,192,224,31,128,192,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 192,0,255,248,0,255,248,0,16,22,44,20,2,0,7,248, + 31,254,60,62,120,30,248,14,248,12,252,0,255,0,127,192, + 127,240,63,248,15,254,3,254,0,255,128,127,192,63,224,31, + 224,31,240,30,248,60,255,248,63,224,18,30,90,18,255,0, + 0,192,0,1,192,0,7,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,63,255,192,255,255,128,15,193, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,128,15,227,192,15,255, + 128,7,255,0,3,252,0,1,240,0,26,22,88,27,1,0, + 3,128,28,0,255,135,252,0,255,135,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,129,252,0,31,199,252,128,31,255,255,128,15,254,255,192, + 7,248,126,0,3,224,112,0,24,22,66,24,0,0,255,224, + 255,255,224,255,63,128,60,31,128,60,31,128,56,15,192,120, + 15,192,112,7,192,112,7,224,240,7,224,224,3,241,224,3, + 241,192,1,249,192,1,251,128,0,255,128,0,255,128,0,127, + 0,0,127,0,0,126,0,0,62,0,0,60,0,0,24,0, + 34,22,110,34,0,0,255,224,96,63,192,255,224,112,63,192, + 63,0,240,7,0,31,0,248,15,0,31,128,248,14,0,15, + 129,252,14,0,15,129,252,30,0,15,195,252,28,0,7,195, + 254,28,0,7,195,190,28,0,7,231,63,60,0,3,231,31, + 56,0,3,239,31,184,0,3,254,31,248,0,1,254,15,240, + 0,1,252,15,240,0,1,252,7,240,0,0,252,7,224,0, + 0,248,3,224,0,0,248,3,224,0,0,112,1,192,0,0, + 96,1,128,0,25,22,88,25,0,0,127,241,255,0,127,241, + 255,0,31,192,124,0,15,224,112,0,7,224,224,0,7,241, + 224,0,3,251,192,0,1,255,128,0,0,255,0,0,0,254, + 0,0,0,127,0,0,0,127,0,0,0,127,128,0,0,255, + 192,0,1,207,224,0,3,199,224,0,7,131,240,0,7,3, + 248,0,14,1,252,0,30,1,254,0,255,135,255,128,255,135, + 255,128,25,33,132,24,255,245,127,240,127,128,127,240,127,128, + 31,192,30,0,15,192,28,0,15,192,28,0,7,224,60,0, + 7,224,56,0,3,240,56,0,3,240,112,0,1,240,112,0, + 1,248,240,0,1,248,224,0,0,252,224,0,0,253,224,0, + 0,125,192,0,0,127,192,0,0,127,128,0,0,63,128,0, + 0,63,128,0,0,31,0,0,0,31,0,0,0,14,0,0, + 0,14,0,0,0,30,0,0,0,28,0,0,0,60,0,0, + 0,120,0,0,32,248,0,0,63,240,0,0,127,224,0,0, + 255,192,0,0,255,128,0,0,126,0,0,0,20,22,66,22, + 1,0,63,255,240,63,255,240,56,15,224,56,15,192,48,31, + 192,48,31,128,32,63,0,0,127,0,0,126,0,0,252,0, + 1,252,0,1,248,0,3,240,0,7,240,0,7,224,0,15, + 224,48,31,192,48,31,128,112,63,128,112,127,0,240,127,255, + 240,255,255,224,14,45,90,17,2,249,0,8,0,60,0,248, + 1,240,3,224,7,224,7,192,15,192,15,192,15,192,15,192, + 15,192,15,224,7,224,7,224,7,224,7,224,7,224,7,192, + 15,192,15,128,63,0,254,0,255,128,31,192,7,192,7,224, + 7,224,7,224,7,224,7,224,7,224,15,224,15,192,15,192, + 15,192,15,192,15,192,15,192,7,192,7,224,3,240,0,248, + 0,124,0,8,4,49,49,11,4,246,48,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,192,14,44,88,17,1, + 249,64,0,248,0,124,0,63,0,31,128,15,128,15,192,15, + 192,15,192,15,192,15,192,15,192,31,192,31,128,31,128,31, + 128,31,128,31,128,31,128,15,192,15,252,7,252,1,248,7, + 224,15,192,15,128,31,128,31,128,31,128,31,128,31,128,31, + 192,15,192,15,192,15,192,15,192,15,192,15,128,31,128,31, + 0,62,0,124,0,240,0,64,0,21,8,24,23,1,11,7, + 128,8,15,224,24,31,240,16,63,252,48,49,255,224,96,127, + 192,64,31,128,192,15,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=14 h=17 x= 2 y= 9 dx=14 dy= 0 ascent=15 len=30 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =10 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =15 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10[3670] U8G_SECTION(".progmem.u8g_font_gdr10") = { + 0,25,24,247,250,10,2,30,4,177,32,255,252,15,251,13, + 252,0,0,0,4,0,0,2,12,12,5,1,0,64,192,64, + 64,64,64,64,64,64,0,64,64,5,5,5,7,1,7,216, + 216,88,72,72,7,9,9,8,1,1,20,36,126,40,72,252, + 80,80,144,7,12,12,8,0,255,16,56,84,80,112,56,30, + 18,146,212,120,16,10,10,20,12,1,0,96,128,145,0,146, + 0,150,0,164,0,105,128,18,64,50,64,34,64,65,128,10, + 12,24,11,1,0,28,0,36,0,36,0,36,0,40,0,51, + 192,81,0,153,0,141,0,134,0,135,0,121,192,2,5,5, + 4,1,7,192,192,64,64,64,3,16,16,5,1,253,32,64, + 64,128,128,128,128,128,128,128,128,128,128,64,64,32,3,16, + 16,5,1,253,128,64,64,32,32,32,32,32,32,32,32,32, + 32,64,64,128,6,7,7,8,1,6,32,168,236,48,252,164, + 32,6,6,6,7,1,2,32,32,32,252,32,32,2,4,4, + 4,1,253,192,64,64,128,4,1,1,6,1,4,240,1,2, + 2,4,2,0,128,128,8,16,16,8,0,253,3,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,10,10,8, + 1,0,56,72,132,132,132,132,132,132,72,112,5,10,10,8, + 2,0,32,224,32,32,32,32,32,32,32,248,5,10,10,8, + 2,0,56,200,136,8,16,32,32,64,136,248,6,10,10,8, + 1,0,112,136,136,16,48,8,4,4,140,120,6,10,10,8, + 1,0,8,24,40,40,72,136,252,8,8,60,6,10,10,8, + 1,0,124,64,64,120,140,4,4,4,132,120,6,10,10,8, + 1,0,24,32,64,128,248,132,132,132,72,56,6,10,10,8, + 1,0,252,132,8,8,8,16,16,32,32,64,6,10,10,8, + 1,0,120,196,196,200,56,204,132,132,132,120,6,10,10,8, + 1,0,56,200,132,132,132,124,4,8,16,96,1,8,8,4, + 2,0,128,128,0,0,0,0,128,128,2,11,11,4,1,253, + 64,64,0,0,0,0,0,192,64,64,128,6,5,5,7,1, + 2,12,112,128,112,12,6,3,3,7,1,3,252,0,252,6, + 5,5,7,1,2,192,56,12,112,128,6,12,12,7,1,0, + 56,68,132,4,4,8,16,32,32,32,32,32,12,14,28,14, + 1,253,15,128,16,64,96,32,71,144,136,144,144,144,144,144, + 144,144,144,144,137,160,78,192,96,0,48,96,15,128,10,10, + 20,10,0,0,4,0,12,0,20,0,18,0,18,0,30,0, + 33,0,33,0,65,128,227,192,7,10,10,9,1,0,248,68, + 68,68,124,70,66,66,66,252,7,10,10,9,1,0,62,66, + 128,128,128,128,128,128,66,60,8,10,10,10,1,0,252,70, + 65,65,65,65,65,66,66,252,7,10,10,8,1,0,252,68, + 64,64,124,64,64,64,66,254,7,10,10,8,1,0,254,68, + 64,64,120,64,64,64,64,224,9,10,20,10,1,0,30,0, + 99,0,128,0,128,0,128,0,135,128,129,0,129,0,97,0, + 62,0,9,10,20,11,1,0,227,128,65,0,65,0,65,0, + 127,0,65,0,65,0,65,0,65,0,227,128,3,10,10,5, + 1,0,224,64,64,64,64,64,64,64,64,224,6,13,13,5, + 254,253,60,8,8,8,8,8,8,8,8,8,8,16,224,9, + 10,20,10,1,0,231,0,68,0,72,0,80,0,96,0,80, + 0,88,0,76,0,70,0,227,128,7,10,10,8,1,0,224, + 64,64,64,64,64,64,64,66,254,12,10,20,14,1,0,192, + 112,96,96,96,224,112,224,81,96,89,32,74,32,78,32,68, + 32,228,240,9,10,20,11,1,0,195,128,97,0,97,0,81, + 0,73,0,77,0,69,0,67,0,67,0,225,0,8,10,10, + 10,1,0,60,66,129,129,129,129,129,130,66,60,7,10,10, + 9,1,0,252,70,66,66,70,120,64,64,64,224,10,12,24, + 10,1,254,60,0,66,0,129,0,129,0,129,0,129,0,129, + 0,130,0,66,0,60,0,6,128,3,192,9,10,20,10,1, + 0,252,0,70,0,66,0,66,0,68,0,120,0,76,0,68, + 0,70,0,227,128,6,10,10,8,1,0,120,140,128,192,112, + 8,4,132,132,248,9,10,20,9,0,0,255,128,136,128,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,28,0,9, + 10,20,11,1,0,227,128,65,0,65,0,65,0,65,0,65, + 0,65,0,65,0,34,0,60,0,11,10,20,11,0,0,241, + 224,32,128,32,128,49,0,17,0,25,0,10,0,10,0,14, + 0,4,0,14,10,20,14,0,0,241,28,99,8,35,16,35, + 144,36,144,52,144,20,80,24,96,24,96,24,32,10,10,20, + 10,0,0,243,192,33,0,51,0,26,0,12,0,12,0,18, + 0,49,0,33,128,243,192,9,10,20,10,1,0,195,128,97, + 0,50,0,22,0,28,0,8,0,8,0,8,0,8,0,28, + 0,8,10,10,9,0,0,127,66,70,4,8,24,16,33,97, + 255,4,16,16,5,1,253,240,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,16,16,8,0,253,192,64,64, + 32,32,48,16,16,8,8,12,4,4,6,2,3,4,16,16, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,240,7,8,8,8,1,5,16,48,56,72,72,76,132, + 134,6,1,1,8,1,254,252,4,3,3,5,0,9,192,96, + 48,7,8,8,8,1,0,28,100,4,28,100,132,140,118,8, + 13,13,9,0,0,64,192,64,64,64,78,115,65,65,65,65, + 66,60,6,8,8,7,1,0,60,72,128,128,128,128,196,120, + 8,13,13,9,1,0,6,2,2,2,2,62,66,130,130,130, + 130,70,59,6,8,8,8,1,0,56,68,132,252,128,128,68, + 120,6,13,13,5,1,0,28,40,64,64,64,240,64,64,64, + 64,64,64,240,8,12,12,8,0,252,63,70,130,130,196,56, + 96,60,195,129,194,124,8,13,13,9,1,0,64,192,64,64, + 64,78,82,98,66,66,66,66,231,3,11,11,5,1,0,64, + 192,0,64,192,64,64,64,64,64,224,5,15,15,4,254,252, + 8,24,0,8,24,8,8,8,8,8,8,8,8,16,224,8, + 13,13,9,1,0,64,192,64,64,64,78,72,80,96,80,72, + 76,231,3,13,13,5,1,0,64,192,64,64,64,64,64,64, + 64,64,64,64,224,11,8,16,12,1,0,221,192,102,64,68, + 64,68,64,68,64,68,64,68,64,238,224,8,8,8,9,1, + 0,78,210,98,66,66,66,66,231,7,8,8,9,1,0,56, + 68,130,130,130,130,68,56,7,12,12,9,1,252,92,230,66, + 66,66,66,68,120,64,64,64,224,8,12,12,9,1,252,62, + 66,130,130,130,130,70,58,2,2,2,7,6,8,8,7,1, + 0,220,104,64,64,64,64,64,224,5,8,8,7,1,0,112, + 136,128,96,24,136,136,240,5,10,10,6,1,0,64,64,248, + 64,64,64,64,64,64,120,9,8,16,9,0,0,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,61,128,8,8,8, + 8,0,0,227,98,34,36,52,20,24,8,12,8,16,12,0, + 0,226,112,102,32,38,32,39,64,41,64,57,64,24,128,16, + 128,8,8,8,9,0,0,247,34,52,24,28,36,66,231,8, + 12,12,8,0,252,231,98,34,36,52,20,24,8,8,16,160, + 192,6,8,8,8,1,0,252,136,16,48,32,64,196,252,4, + 16,16,6,1,253,48,64,64,64,96,32,32,64,224,32,32, + 96,64,64,64,32,1,17,17,4,2,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,16,16,5, + 0,253,64,32,32,32,32,32,32,56,48,32,32,32,32,32, + 32,192,8,2,2,8,0,4,57,206,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,4,0, + 0,2,13,13,5,1,251,64,64,0,0,64,64,64,64,64, + 64,64,192,192,6,10,10,8,1,0,16,28,116,144,144,144, + 144,116,56,16,7,11,11,8,1,255,60,68,68,64,64,240, + 64,64,66,134,252,4,6,6,8,2,2,144,240,144,144,240, + 144,9,10,20,8,255,0,231,128,34,0,22,0,20,0,8, + 0,62,0,8,0,8,0,8,0,28,0,1,17,17,4,2, + 253,128,128,128,128,128,128,128,128,0,128,128,128,128,128,128, + 128,128,6,12,12,8,1,0,112,152,128,96,184,140,196,100, + 24,136,200,112,5,2,2,7,1,9,136,136,10,10,20,12, + 1,0,30,0,127,128,114,128,160,64,160,64,160,64,176,64, + 94,128,97,128,30,0,4,6,6,4,0,5,96,160,96,160, + 240,240,6,8,8,8,1,0,36,72,72,144,144,72,72,36, + 7,3,3,8,0,2,254,2,2,4,1,1,6,1,4,240, + 6,6,6,6,0,6,120,132,180,180,180,120,6,1,1,8, + 1,9,252,4,4,4,6,1,6,112,144,144,224,6,8,8, + 7,1,1,32,32,32,252,32,32,64,248,4,7,7,6,1, + 5,112,144,16,32,64,144,240,4,7,7,5,0,5,112,144, + 16,48,16,144,224,3,3,3,5,2,9,96,64,128,9,12, + 24,9,0,252,195,0,65,0,65,0,65,0,65,0,65,0, + 99,0,125,128,64,0,64,0,96,0,96,0,8,12,12,10, + 1,254,63,202,138,138,202,122,10,10,10,10,10,31,1,2, + 2,2,1,5,128,128,2,4,4,4,1,252,128,192,64,128, + 4,6,6,6,0,5,96,160,32,32,32,112,4,6,6,5, + 0,5,96,144,144,144,96,240,7,8,8,8,1,0,144,72, + 108,36,54,108,72,144,9,10,20,10,1,0,193,0,66,0, + 66,0,68,0,72,0,169,0,23,0,37,0,39,128,67,128, + 8,10,10,10,1,0,193,66,68,68,72,171,21,34,37,79, + 10,11,22,10,0,0,112,0,80,128,33,0,18,0,18,0, + 228,0,8,128,11,128,18,128,19,192,33,192,6,13,13,8, + 1,251,32,32,0,32,32,32,64,64,128,128,132,136,112,10, + 15,30,10,0,0,32,0,24,0,12,0,0,0,0,0,4, + 0,12,0,20,0,18,0,18,0,30,0,33,0,33,0,65, + 128,227,192,10,15,30,10,0,0,2,0,7,0,12,0,16, + 0,0,0,4,0,12,0,20,0,18,0,18,0,30,0,33, + 0,33,0,65,128,227,192,10,15,30,10,0,0,12,0,12, + 0,18,0,33,0,0,0,4,0,12,0,20,0,18,0,18, + 0,30,0,33,0,33,0,65,128,227,192,10,14,28,10,0, + 0,10,0,25,0,38,0,0,0,4,0,12,0,20,0,18, + 0,18,0,30,0,33,0,33,0,65,128,227,192,10,13,26, + 10,0,0,34,0,34,0,0,0,4,0,12,0,20,0,18, + 0,18,0,30,0,33,0,33,0,65,128,227,192,10,15,30, + 10,0,0,12,0,20,0,28,0,0,0,0,0,4,0,12, + 0,20,0,18,0,18,0,30,0,33,0,33,0,65,128,227, + 192,12,10,20,13,1,0,31,224,10,32,10,0,18,0,31, + 224,50,0,34,0,34,0,66,16,231,240,7,14,14,9,1, + 252,62,66,128,128,128,128,128,128,66,102,24,24,8,16,7, + 15,15,8,1,0,64,224,16,8,0,252,68,64,64,124,64, + 64,64,66,254,7,15,15,8,1,0,8,28,48,0,0,252, + 68,64,64,124,64,64,64,66,254,7,15,15,8,1,0,16, + 56,72,4,0,252,68,64,64,124,64,64,64,66,254,7,13, + 13,8,1,0,136,136,0,252,68,64,64,124,64,64,64,66, + 254,4,15,15,5,0,0,128,192,32,16,0,112,32,32,32, + 32,32,32,32,32,112,4,15,15,5,1,0,32,48,64,128, + 0,224,64,64,64,64,64,64,64,64,224,5,15,15,5,0, + 0,32,112,136,0,0,112,32,32,32,32,32,32,32,32,112, + 5,13,13,5,0,0,136,136,0,112,32,32,32,32,32,32, + 32,32,112,8,10,10,10,1,0,252,70,65,65,241,65,65, + 66,66,252,9,14,28,11,1,0,18,0,58,0,4,0,0, + 0,195,128,97,0,97,0,81,0,73,0,77,0,69,0,67, + 0,67,0,225,0,8,15,15,10,1,0,32,112,8,4,0, + 60,66,129,129,129,129,129,130,66,60,8,15,15,10,1,0, + 4,14,24,0,0,60,66,129,129,129,129,129,130,66,60,8, + 15,15,10,1,0,8,28,36,66,0,60,66,129,129,129,129, + 129,130,66,60,8,14,14,10,1,0,18,50,76,0,60,66, + 129,129,129,129,129,130,66,60,8,13,13,10,1,0,68,68, + 0,60,66,129,129,129,129,129,130,66,60,5,5,5,7,1, + 2,136,80,32,80,136,8,10,10,10,1,0,29,98,131,133, + 137,145,161,194,66,188,9,15,30,11,1,0,32,0,48,0, + 12,0,0,0,0,0,227,128,65,0,65,0,65,0,65,0, + 65,0,65,0,65,0,34,0,60,0,9,15,30,11,1,0, + 2,0,6,0,8,0,16,0,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,65,0,34,0,60,0,9,15, + 30,11,1,0,8,0,28,0,34,0,0,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 60,0,9,13,26,11,1,0,34,0,34,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 60,0,9,15,30,10,1,0,4,0,14,0,24,0,0,0, + 0,0,195,128,97,0,50,0,22,0,28,0,8,0,8,0, + 8,0,8,0,28,0,7,10,10,9,1,0,224,64,124,70, + 66,66,66,124,64,224,8,13,13,10,1,0,28,38,66,66, + 68,72,80,88,78,67,81,81,206,7,12,12,8,1,0,64, + 32,16,0,28,100,4,28,100,132,140,118,7,12,12,8,1, + 0,8,16,32,0,28,100,4,28,100,132,140,118,7,12,12, + 8,1,0,48,72,136,4,28,100,4,28,100,132,140,118,7, + 11,11,8,1,0,100,152,0,28,100,4,28,100,132,140,118, + 7,11,11,8,1,0,136,136,0,28,100,4,28,100,132,140, + 118,7,12,12,8,1,0,48,80,112,0,28,100,4,28,100, + 132,140,118,10,8,16,12,1,0,59,128,204,64,136,64,63, + 192,72,0,136,0,156,192,231,0,6,12,12,7,1,252,60, + 72,128,128,128,128,196,120,32,48,16,32,6,12,12,8,1, + 0,96,32,16,0,56,68,132,252,128,128,68,120,6,12,12, + 8,1,0,12,24,32,0,56,68,132,252,128,128,68,120,6, + 12,12,8,1,0,48,72,132,0,56,68,132,252,128,128,68, + 120,6,11,11,8,1,0,132,136,0,56,68,132,252,128,128, + 68,120,4,12,12,5,0,0,192,64,32,0,32,96,32,32, + 32,32,32,112,4,12,12,5,1,0,48,96,64,0,64,192, + 64,64,64,64,64,224,5,12,12,5,0,0,32,80,136,0, + 32,96,32,32,32,32,32,112,5,11,11,5,0,0,136,136, + 0,32,96,32,32,32,32,32,112,6,12,12,8,1,0,104, + 28,120,8,52,204,132,132,132,132,72,112,8,11,11,9,1, + 0,54,76,0,78,210,98,66,66,66,66,231,7,12,12,9, + 1,0,96,32,16,0,56,68,130,130,130,130,68,56,7,12, + 12,9,1,0,12,8,16,0,56,68,130,130,130,130,68,56, + 7,12,12,9,1,0,16,40,68,0,56,68,130,130,130,130, + 68,56,7,11,11,9,1,0,52,216,0,56,68,130,130,130, + 130,68,56,7,11,11,9,1,0,132,132,0,56,68,130,130, + 130,130,68,56,5,6,6,7,1,2,32,32,0,248,32,32, + 7,8,8,9,1,0,62,68,142,146,146,226,68,248,9,12, + 24,9,0,0,48,0,24,0,8,0,0,0,195,0,65,0, + 65,0,65,0,65,0,65,0,67,0,61,128,9,12,24,9, + 0,0,6,0,4,0,8,0,0,0,195,0,65,0,65,0, + 65,0,65,0,65,0,67,0,61,128,9,12,24,9,0,0, + 8,0,20,0,34,0,0,0,195,0,65,0,65,0,65,0, + 65,0,65,0,67,0,61,128,9,11,22,9,0,0,34,0, + 66,0,0,0,195,0,65,0,65,0,65,0,65,0,65,0, + 67,0,61,128,8,16,16,8,0,252,6,12,8,0,231,98, + 34,36,52,20,24,8,8,16,160,192,7,17,17,9,1,252, + 64,192,64,64,64,92,102,66,66,66,66,100,120,64,64,64, + 224,8,15,15,8,0,252,66,66,0,231,98,34,36,52,20, + 24,8,8,16,160,192}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 10 + Calculated Max Values w= 8 h=16 x= 2 y= 6 dx= 8 dy= 0 ascent=13 len=16 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =13 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10n[249] U8G_SECTION(".progmem.u8g_font_gdr10n") = { + 0,25,24,247,250,10,0,0,0,0,42,57,0,13,253,10, + 0,6,7,7,8,1,6,32,168,236,48,252,164,32,6,6, + 6,7,1,2,32,32,32,252,32,32,2,4,4,4,1,253, + 192,64,64,128,4,1,1,6,1,4,240,1,2,2,4,2, + 0,128,128,8,16,16,8,0,253,3,2,6,4,4,12,8, + 8,16,16,48,32,32,96,64,192,6,10,10,8,1,0,56, + 72,132,132,132,132,132,132,72,112,5,10,10,8,2,0,32, + 224,32,32,32,32,32,32,32,248,5,10,10,8,2,0,56, + 200,136,8,16,32,32,64,136,248,6,10,10,8,1,0,112, + 136,136,16,48,8,4,4,140,120,6,10,10,8,1,0,8, + 24,40,40,72,136,252,8,8,60,6,10,10,8,1,0,124, + 64,64,120,140,4,4,4,132,120,6,10,10,8,1,0,24, + 32,64,128,248,132,132,132,72,56,6,10,10,8,1,0,252, + 132,8,8,8,16,16,32,32,64,6,10,10,8,1,0,120, + 196,196,200,56,204,132,132,132,120,6,10,10,8,1,0,56, + 200,132,132,132,124,4,8,16,96}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=14 h=17 x= 2 y= 9 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =10 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10r[1723] U8G_SECTION(".progmem.u8g_font_gdr10r") = { + 0,25,24,247,250,10,2,30,4,177,32,127,252,14,252,13, + 252,0,0,0,4,0,0,2,12,12,5,1,0,64,192,64, + 64,64,64,64,64,64,0,64,64,5,5,5,7,1,7,216, + 216,88,72,72,7,9,9,8,1,1,20,36,126,40,72,252, + 80,80,144,7,12,12,8,0,255,16,56,84,80,112,56,30, + 18,146,212,120,16,10,10,20,12,1,0,96,128,145,0,146, + 0,150,0,164,0,105,128,18,64,50,64,34,64,65,128,10, + 12,24,11,1,0,28,0,36,0,36,0,36,0,40,0,51, + 192,81,0,153,0,141,0,134,0,135,0,121,192,2,5,5, + 4,1,7,192,192,64,64,64,3,16,16,5,1,253,32,64, + 64,128,128,128,128,128,128,128,128,128,128,64,64,32,3,16, + 16,5,1,253,128,64,64,32,32,32,32,32,32,32,32,32, + 32,64,64,128,6,7,7,8,1,6,32,168,236,48,252,164, + 32,6,6,6,7,1,2,32,32,32,252,32,32,2,4,4, + 4,1,253,192,64,64,128,4,1,1,6,1,4,240,1,2, + 2,4,2,0,128,128,8,16,16,8,0,253,3,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,10,10,8, + 1,0,56,72,132,132,132,132,132,132,72,112,5,10,10,8, + 2,0,32,224,32,32,32,32,32,32,32,248,5,10,10,8, + 2,0,56,200,136,8,16,32,32,64,136,248,6,10,10,8, + 1,0,112,136,136,16,48,8,4,4,140,120,6,10,10,8, + 1,0,8,24,40,40,72,136,252,8,8,60,6,10,10,8, + 1,0,124,64,64,120,140,4,4,4,132,120,6,10,10,8, + 1,0,24,32,64,128,248,132,132,132,72,56,6,10,10,8, + 1,0,252,132,8,8,8,16,16,32,32,64,6,10,10,8, + 1,0,120,196,196,200,56,204,132,132,132,120,6,10,10,8, + 1,0,56,200,132,132,132,124,4,8,16,96,1,8,8,4, + 2,0,128,128,0,0,0,0,128,128,2,11,11,4,1,253, + 64,64,0,0,0,0,0,192,64,64,128,6,5,5,7,1, + 2,12,112,128,112,12,6,3,3,7,1,3,252,0,252,6, + 5,5,7,1,2,192,56,12,112,128,6,12,12,7,1,0, + 56,68,132,4,4,8,16,32,32,32,32,32,12,14,28,14, + 1,253,15,128,16,64,96,32,71,144,136,144,144,144,144,144, + 144,144,144,144,137,160,78,192,96,0,48,96,15,128,10,10, + 20,10,0,0,4,0,12,0,20,0,18,0,18,0,30,0, + 33,0,33,0,65,128,227,192,7,10,10,9,1,0,248,68, + 68,68,124,70,66,66,66,252,7,10,10,9,1,0,62,66, + 128,128,128,128,128,128,66,60,8,10,10,10,1,0,252,70, + 65,65,65,65,65,66,66,252,7,10,10,8,1,0,252,68, + 64,64,124,64,64,64,66,254,7,10,10,8,1,0,254,68, + 64,64,120,64,64,64,64,224,9,10,20,10,1,0,30,0, + 99,0,128,0,128,0,128,0,135,128,129,0,129,0,97,0, + 62,0,9,10,20,11,1,0,227,128,65,0,65,0,65,0, + 127,0,65,0,65,0,65,0,65,0,227,128,3,10,10,5, + 1,0,224,64,64,64,64,64,64,64,64,224,6,13,13,5, + 254,253,60,8,8,8,8,8,8,8,8,8,8,16,224,9, + 10,20,10,1,0,231,0,68,0,72,0,80,0,96,0,80, + 0,88,0,76,0,70,0,227,128,7,10,10,8,1,0,224, + 64,64,64,64,64,64,64,66,254,12,10,20,14,1,0,192, + 112,96,96,96,224,112,224,81,96,89,32,74,32,78,32,68, + 32,228,240,9,10,20,11,1,0,195,128,97,0,97,0,81, + 0,73,0,77,0,69,0,67,0,67,0,225,0,8,10,10, + 10,1,0,60,66,129,129,129,129,129,130,66,60,7,10,10, + 9,1,0,252,70,66,66,70,120,64,64,64,224,10,12,24, + 10,1,254,60,0,66,0,129,0,129,0,129,0,129,0,129, + 0,130,0,66,0,60,0,6,128,3,192,9,10,20,10,1, + 0,252,0,70,0,66,0,66,0,68,0,120,0,76,0,68, + 0,70,0,227,128,6,10,10,8,1,0,120,140,128,192,112, + 8,4,132,132,248,9,10,20,9,0,0,255,128,136,128,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,28,0,9, + 10,20,11,1,0,227,128,65,0,65,0,65,0,65,0,65, + 0,65,0,65,0,34,0,60,0,11,10,20,11,0,0,241, + 224,32,128,32,128,49,0,17,0,25,0,10,0,10,0,14, + 0,4,0,14,10,20,14,0,0,241,28,99,8,35,16,35, + 144,36,144,52,144,20,80,24,96,24,96,24,32,10,10,20, + 10,0,0,243,192,33,0,51,0,26,0,12,0,12,0,18, + 0,49,0,33,128,243,192,9,10,20,10,1,0,195,128,97, + 0,50,0,22,0,28,0,8,0,8,0,8,0,8,0,28, + 0,8,10,10,9,0,0,127,66,70,4,8,24,16,33,97, + 255,4,16,16,5,1,253,240,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,16,16,8,0,253,192,64,64, + 32,32,48,16,16,8,8,12,4,4,6,2,3,4,16,16, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,240,7,8,8,8,1,5,16,48,56,72,72,76,132, + 134,6,1,1,8,1,254,252,4,3,3,5,0,9,192,96, + 48,7,8,8,8,1,0,28,100,4,28,100,132,140,118,8, + 13,13,9,0,0,64,192,64,64,64,78,115,65,65,65,65, + 66,60,6,8,8,7,1,0,60,72,128,128,128,128,196,120, + 8,13,13,9,1,0,6,2,2,2,2,62,66,130,130,130, + 130,70,59,6,8,8,8,1,0,56,68,132,252,128,128,68, + 120,6,13,13,5,1,0,28,40,64,64,64,240,64,64,64, + 64,64,64,240,8,12,12,8,0,252,63,70,130,130,196,56, + 96,60,195,129,194,124,8,13,13,9,1,0,64,192,64,64, + 64,78,82,98,66,66,66,66,231,3,11,11,5,1,0,64, + 192,0,64,192,64,64,64,64,64,224,5,15,15,4,254,252, + 8,24,0,8,24,8,8,8,8,8,8,8,8,16,224,8, + 13,13,9,1,0,64,192,64,64,64,78,72,80,96,80,72, + 76,231,3,13,13,5,1,0,64,192,64,64,64,64,64,64, + 64,64,64,64,224,11,8,16,12,1,0,221,192,102,64,68, + 64,68,64,68,64,68,64,68,64,238,224,8,8,8,9,1, + 0,78,210,98,66,66,66,66,231,7,8,8,9,1,0,56, + 68,130,130,130,130,68,56,7,12,12,9,1,252,92,230,66, + 66,66,66,68,120,64,64,64,224,8,12,12,9,1,252,62, + 66,130,130,130,130,70,58,2,2,2,7,6,8,8,7,1, + 0,220,104,64,64,64,64,64,224,5,8,8,7,1,0,112, + 136,128,96,24,136,136,240,5,10,10,6,1,0,64,64,248, + 64,64,64,64,64,64,120,9,8,16,9,0,0,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,61,128,8,8,8, + 8,0,0,227,98,34,36,52,20,24,8,12,8,16,12,0, + 0,226,112,102,32,38,32,39,64,41,64,57,64,24,128,16, + 128,8,8,8,9,0,0,247,34,52,24,28,36,66,231,8, + 12,12,8,0,252,231,98,34,36,52,20,24,8,8,16,160, + 192,6,8,8,8,1,0,252,136,16,48,32,64,196,252,4, + 16,16,6,1,253,48,64,64,64,96,32,32,64,224,32,32, + 96,64,64,64,32,1,17,17,4,2,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,16,16,5, + 0,253,64,32,32,32,32,32,32,56,48,32,32,32,32,32, + 32,192,8,2,2,8,0,4,57,206,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y=10 dx=15 dy= 0 ascent=16 len=34 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11[3977] U8G_SECTION(".progmem.u8g_font_gdr11") = { + 0,26,25,247,250,11,2,61,5,21,32,255,252,16,251,14, + 252,0,0,0,4,0,0,2,13,13,5,1,0,64,64,64, + 64,64,64,64,64,64,64,0,192,128,5,6,6,8,1,7, + 200,200,72,72,72,72,8,10,10,8,1,1,18,20,20,127, + 36,40,254,72,80,144,7,14,14,8,1,254,16,16,126,148, + 144,240,56,28,20,148,148,248,16,16,11,11,22,13,1,0, + 96,192,161,128,145,0,146,0,166,0,101,192,10,32,18,32, + 50,32,34,32,65,192,11,13,26,12,1,0,28,0,34,0, + 34,0,34,0,36,0,56,0,49,224,216,128,156,128,142,128, + 135,0,135,128,124,224,2,6,6,5,1,7,192,192,64,64, + 64,64,3,17,17,6,1,253,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,64,64,32,3,17,17,6,1,253,128, + 64,64,32,32,32,32,32,32,32,32,32,32,32,64,64,128, + 6,8,8,8,1,6,48,16,164,120,120,164,16,48,7,6, + 6,7,0,2,16,16,16,254,16,16,2,5,5,4,1,253, + 64,192,64,64,128,5,1,1,6,1,4,248,2,2,2,4, + 1,0,192,128,8,17,17,8,0,253,1,2,2,6,4,4, + 12,8,8,16,16,48,32,32,96,64,192,6,11,11,8,1, + 0,48,72,132,132,132,132,132,132,132,72,48,6,11,11,8, + 1,0,16,240,16,16,16,16,16,16,16,16,124,6,11,11, + 8,1,0,28,100,68,4,8,8,16,32,68,68,252,6,11, + 11,7,0,0,56,68,68,4,24,12,4,4,4,140,120,7, + 11,11,8,0,0,4,12,12,20,36,36,68,254,4,4,30, + 6,11,11,8,1,0,124,64,64,64,120,132,4,4,4,132, + 120,6,11,11,8,1,0,12,48,64,192,184,196,132,132,132, + 72,56,7,11,11,8,1,0,254,132,4,8,8,8,16,16, + 32,32,96,7,11,11,9,1,0,120,196,196,196,120,60,194, + 130,130,130,124,6,11,11,8,1,0,56,200,132,132,132,132, + 124,4,8,16,224,2,8,8,4,1,0,192,128,0,0,0, + 0,192,128,2,11,11,4,1,253,192,128,0,0,0,0,64, + 192,64,64,128,6,6,6,8,1,2,4,56,224,192,56,12, + 6,4,4,8,1,3,252,0,0,252,6,6,6,8,1,2, + 192,112,12,28,112,128,6,13,13,8,1,0,56,68,132,132, + 4,8,16,32,32,32,0,48,32,13,15,30,15,1,253,7, + 192,24,96,32,16,64,16,135,136,136,136,144,136,144,136,144, + 136,144,144,137,144,78,224,96,16,48,32,15,192,11,11,22, + 11,0,0,4,0,12,0,14,0,18,0,18,0,19,0,31, + 0,33,0,33,128,32,128,241,224,8,11,11,10,1,0,252, + 66,66,68,126,67,65,65,65,67,254,8,11,11,10,1,0, + 62,66,128,128,128,128,128,128,128,67,60,9,11,22,11,1, + 0,252,0,67,0,65,0,64,128,64,128,64,128,64,128,64, + 128,65,0,67,0,252,0,7,11,11,9,1,0,254,66,64, + 64,124,64,64,64,66,66,254,7,11,11,9,1,0,254,66, + 64,64,124,64,64,64,64,64,240,10,11,22,11,1,0,15, + 0,49,128,64,0,128,0,128,0,128,0,131,192,128,128,64, + 128,96,128,31,0,10,11,22,12,1,0,225,192,64,128,64, + 128,64,128,64,128,127,128,64,128,64,128,64,128,64,128,225, + 192,3,11,11,5,1,0,224,64,64,64,64,64,64,64,64, + 64,224,6,14,14,6,254,253,60,8,8,8,8,8,8,8, + 8,8,8,8,144,224,9,11,22,10,1,0,231,128,70,0, + 76,0,72,0,80,0,112,0,88,0,72,0,68,0,70,0, + 227,128,7,11,11,9,1,0,224,64,64,64,64,64,64,64, + 66,66,254,13,11,22,15,1,0,224,56,96,96,96,96,80, + 160,80,160,88,160,73,32,77,48,70,48,70,48,228,120,10, + 11,22,12,1,0,193,192,96,128,112,128,80,128,72,128,76, + 128,70,128,66,128,65,128,65,128,224,128,9,11,22,11,1, + 0,30,0,99,0,129,0,128,128,128,128,128,128,128,128,128, + 128,65,0,98,0,60,0,7,11,11,9,1,0,252,66,66, + 66,66,92,96,64,64,64,240,10,14,28,11,1,253,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,6,0,3,64,1,192,9,11,22,10,1,0, + 252,0,70,0,66,0,66,0,68,0,72,0,120,0,76,0, + 70,0,66,0,227,128,7,11,11,9,1,0,60,198,128,128, + 112,28,6,2,130,196,248,9,11,22,10,0,0,255,128,136, + 128,136,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,28,0,10,11,22,12,1,0,225,192,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,33,0,30,0,11, + 11,22,12,0,0,240,224,32,64,32,128,48,128,16,128,25, + 0,9,0,9,0,14,0,6,0,4,0,15,11,22,15,0, + 0,241,30,33,8,33,136,34,136,50,136,50,200,20,80,20, + 112,20,48,24,48,8,32,11,11,22,11,0,0,243,192,32, + 128,49,0,26,0,14,0,4,0,14,0,19,0,49,128,32, + 192,241,224,10,11,22,11,0,0,225,192,48,128,17,0,25, + 0,10,0,14,0,4,0,4,0,4,0,4,0,14,0,8, + 11,11,9,1,0,255,134,132,12,24,16,48,32,65,193,255, + 4,17,17,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,17,17,8,0,253,192,64,96, + 32,32,48,16,16,8,8,12,4,4,6,2,2,1,4,17, + 17,5,0,253,240,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,48,56,40,76, + 76,68,134,130,7,1,1,8,1,254,254,4,4,4,6,0, + 9,192,96,32,16,7,8,8,8,1,0,60,68,132,28,100, + 132,140,118,8,14,14,9,0,0,64,192,64,64,64,64,78, + 115,65,65,65,65,66,60,6,8,8,8,1,0,60,68,128, + 128,128,128,196,120,7,14,14,9,1,0,12,4,4,4,4, + 4,60,196,132,132,132,132,76,118,6,8,8,8,1,0,56, + 68,132,252,128,128,68,120,6,14,14,6,1,0,28,40,64, + 64,64,64,248,64,64,64,64,64,64,240,9,12,24,8,0, + 252,61,128,194,0,130,0,194,0,124,0,32,0,112,0,63, + 0,193,0,129,0,130,0,124,0,8,14,14,10,1,0,64, + 192,64,64,64,64,78,114,98,66,66,66,66,231,3,12,12, + 5,1,0,192,192,0,0,64,192,64,64,64,64,64,224,5, + 16,16,5,254,252,24,24,0,0,8,24,8,8,8,8,8, + 8,8,8,16,224,8,14,14,9,1,0,64,192,64,64,64, + 64,79,72,80,112,80,72,68,231,3,14,14,5,1,0,64, + 192,64,64,64,64,64,64,64,64,64,64,64,224,13,8,16, + 15,1,0,206,112,115,144,98,16,66,16,66,16,66,16,66, + 16,231,56,8,8,8,10,1,0,78,210,98,66,66,66,66, + 231,7,8,8,9,1,0,56,196,130,130,130,130,68,56,8, + 12,12,10,1,252,206,115,65,65,65,65,98,92,64,64,64, + 224,8,12,12,9,1,252,62,66,130,130,130,130,70,58,2, + 2,2,15,6,8,8,7,1,0,220,100,64,64,64,64,64, + 224,5,8,8,7,1,0,112,136,128,96,24,136,136,240,5, + 11,11,6,1,0,64,64,64,248,64,64,64,64,64,64,120, + 8,8,8,10,1,0,198,66,66,66,66,66,70,59,9,8, + 16,9,0,0,243,128,98,0,34,0,50,0,20,0,20,0, + 28,0,8,0,13,8,16,13,0,0,242,56,98,32,39,32, + 37,32,53,160,24,192,24,192,16,192,9,8,16,9,0,0, + 247,128,34,0,20,0,24,0,28,0,38,0,35,0,247,128, + 9,12,24,9,0,252,243,128,97,0,34,0,50,0,20,0, + 20,0,28,0,8,0,8,0,16,0,176,0,224,0,6,8, + 8,8,1,0,252,136,24,16,32,64,196,252,5,17,17,6, + 1,253,24,32,32,32,32,32,32,32,192,32,32,32,32,32, + 32,32,24,1,19,19,4,2,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,17,17,6, + 0,253,64,160,32,32,32,32,32,32,24,32,32,32,32,32, + 32,64,192,8,2,2,9,0,4,57,206,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,4, + 0,0,2,13,13,5,1,251,64,192,0,64,64,64,64,64, + 64,64,64,64,64,7,11,11,8,1,0,16,24,118,144,144, + 144,144,212,126,16,16,7,11,11,8,1,0,60,68,68,64, + 64,240,64,64,66,130,254,6,6,6,8,1,2,248,76,72, + 72,120,132,9,11,22,8,0,0,231,128,98,0,50,0,20, + 0,28,0,8,0,127,0,8,0,8,0,8,0,28,0,1, + 19,19,4,2,252,128,128,128,128,128,128,128,128,0,0,0, + 128,128,128,128,128,128,128,128,7,13,13,9,1,0,112,152, + 128,224,248,142,130,66,60,12,132,196,120,5,2,2,7,1, + 10,136,136,11,11,22,13,1,0,31,0,32,128,94,64,162, + 32,160,32,160,32,160,32,177,32,94,64,32,128,31,0,5, + 6,6,5,0,5,48,80,112,144,248,240,7,8,8,9,1, + 0,38,36,72,152,152,72,36,38,7,3,3,8,1,2,254, + 2,2,5,1,1,6,1,4,248,6,7,7,6,0,6,120, + 72,188,188,180,104,120,6,1,1,9,1,10,252,4,4,4, + 6,1,7,112,144,144,224,7,8,8,7,0,1,16,16,254, + 16,16,16,0,126,4,7,7,6,1,5,112,144,16,32,64, + 144,240,5,7,7,6,0,5,56,72,8,24,8,136,112,3, + 4,4,6,2,9,32,96,64,128,8,12,12,10,1,252,198, + 66,66,66,66,66,102,123,64,64,64,96,8,13,13,10,1, + 254,63,202,138,138,138,202,122,10,10,10,10,10,31,1,2, + 2,3,1,5,128,128,2,4,4,4,1,252,192,64,192,128, + 4,7,7,6,1,5,32,224,32,32,32,32,240,4,6,6, + 5,0,5,96,144,144,144,96,240,7,8,8,9,1,0,144, + 72,100,54,54,100,72,144,10,11,22,11,1,0,192,128,65, + 0,65,0,66,0,70,0,164,0,8,128,27,128,18,128,35, + 192,101,192,9,11,22,11,1,0,193,0,65,0,66,0,68, + 0,68,0,168,0,11,128,20,128,33,0,34,128,71,128,10, + 11,22,10,0,0,96,128,144,128,33,0,17,0,18,0,228, + 0,4,128,11,128,18,128,19,192,37,192,6,13,13,8,1, + 251,16,48,0,16,16,16,32,64,128,132,132,136,112,11,15, + 30,11,0,0,16,0,56,0,4,0,2,0,4,0,12,0, + 14,0,18,0,18,0,19,0,31,0,33,0,33,128,32,128, + 241,224,11,15,30,11,0,0,1,0,7,0,12,0,0,0, + 4,0,12,0,14,0,18,0,18,0,19,0,31,0,33,0, + 33,128,32,128,241,224,11,15,30,11,0,0,4,0,14,0, + 17,0,32,0,4,0,12,0,14,0,18,0,18,0,19,0, + 31,0,33,0,33,128,32,128,241,224,11,15,30,11,0,0, + 9,0,29,0,34,0,0,0,4,0,12,0,14,0,18,0, + 18,0,19,0,31,0,33,0,33,128,32,128,241,224,11,14, + 28,11,0,0,33,0,33,0,0,0,4,0,12,0,14,0, + 18,0,18,0,19,0,31,0,33,0,33,128,32,128,241,224, + 11,16,32,11,0,0,4,0,10,0,18,0,12,0,0,0, + 4,0,12,0,14,0,18,0,18,0,19,0,31,0,33,0, + 33,128,32,128,241,224,13,11,22,14,0,0,15,248,5,8, + 5,0,9,0,15,240,17,0,17,0,17,0,33,8,33,8, + 243,248,9,15,30,10,1,252,62,0,66,0,128,0,128,0, + 128,0,128,0,128,0,128,0,192,0,97,128,62,0,8,0, + 12,0,4,0,8,0,7,15,15,9,1,0,64,224,24,0, + 254,66,64,64,124,64,64,64,66,66,254,7,15,15,9,1, + 0,4,12,48,0,254,66,64,64,124,64,64,64,66,66,254, + 7,15,15,9,1,0,16,40,68,0,254,66,64,64,124,64, + 64,64,66,66,254,7,14,14,9,1,0,68,68,0,254,66, + 64,64,124,64,64,64,66,66,254,4,15,15,5,0,0,128, + 192,48,0,112,32,32,32,32,32,32,32,32,32,112,5,15, + 15,5,1,0,16,56,192,0,224,64,64,64,64,64,64,64, + 64,64,224,5,15,15,5,0,0,32,80,136,0,112,32,32, + 32,32,32,32,32,32,32,112,5,14,14,5,0,0,136,136, + 0,112,32,32,32,32,32,32,32,32,32,112,9,11,22,11, + 1,0,252,0,67,0,65,0,64,128,64,128,240,128,64,128, + 64,128,65,0,67,0,252,0,10,15,30,12,1,0,25,0, + 57,0,38,0,0,0,193,192,96,128,112,128,80,128,72,128, + 76,128,70,128,66,128,65,128,65,128,224,128,9,15,30,11, + 1,0,32,0,112,0,12,0,0,0,30,0,99,0,129,0, + 128,128,128,128,128,128,128,128,128,128,65,0,98,0,60,0, + 9,15,30,11,1,0,2,0,6,0,24,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,9,15,30,11,1,0,8,0,20,0,34,0, + 0,0,30,0,99,0,129,0,128,128,128,128,128,128,128,128, + 128,128,65,0,98,0,60,0,9,15,30,11,1,0,18,0, + 58,0,68,0,0,0,30,0,99,0,129,0,128,128,128,128, + 128,128,128,128,128,128,65,0,98,0,60,0,9,14,28,11, + 1,0,34,0,34,0,0,0,30,0,99,0,129,0,128,128, + 128,128,128,128,128,128,128,128,65,0,98,0,60,0,6,6, + 6,7,1,2,140,88,48,48,88,140,9,11,22,11,1,0, + 30,128,35,0,67,0,134,128,132,128,136,128,144,128,176,128, + 97,0,98,0,188,0,10,15,30,12,1,0,32,0,24,0, + 4,0,2,0,225,192,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,15,30,12,1,0, + 2,0,7,0,8,0,16,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,10,15, + 30,12,1,0,12,0,30,0,34,0,1,0,225,192,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,33,0, + 30,0,10,14,28,12,1,0,34,0,34,0,0,0,225,192, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 33,0,30,0,10,15,30,11,0,0,1,0,7,0,12,0, + 0,0,225,192,48,128,17,0,25,0,10,0,14,0,4,0, + 4,0,4,0,4,0,14,0,7,11,11,9,1,0,240,64, + 124,70,66,66,66,68,124,64,240,8,14,14,10,1,0,28, + 38,66,66,66,76,80,80,76,71,65,81,81,222,7,13,13, + 8,1,0,64,96,48,16,0,60,68,132,28,100,132,140,118, + 7,13,13,8,1,0,12,8,16,32,0,60,68,132,28,100, + 132,140,118,7,13,13,8,1,0,48,56,72,132,0,60,68, + 132,28,100,132,140,118,7,12,12,8,1,0,116,152,0,0, + 60,68,132,28,100,132,140,118,7,12,12,8,1,0,132,132, + 0,0,60,68,132,28,100,132,140,118,7,13,13,8,1,0, + 48,72,72,48,0,60,68,132,28,100,132,140,118,11,8,16, + 12,1,0,29,192,102,32,68,32,159,224,100,0,132,0,142, + 32,115,192,7,12,12,8,1,252,60,68,128,128,128,128,194, + 124,16,24,8,16,6,13,13,8,1,0,96,32,16,16,0, + 56,68,132,252,128,128,68,120,6,13,13,8,1,0,12,8, + 16,16,0,56,68,132,252,128,128,68,120,6,13,13,8,1, + 0,16,56,108,68,0,56,68,132,252,128,128,68,120,6,12, + 12,8,1,0,68,68,0,0,56,68,132,252,128,128,68,120, + 4,13,13,5,0,0,192,64,32,32,16,32,96,32,32,32, + 32,32,112,4,13,13,5,1,0,48,32,64,64,0,64,192, + 64,64,64,64,64,224,5,13,13,5,0,0,32,112,216,136, + 0,32,96,32,32,32,32,32,112,5,12,12,5,0,0,136, + 136,0,0,32,96,32,32,32,32,32,112,7,13,13,9,1, + 0,96,30,56,68,4,62,198,130,130,130,132,68,56,8,12, + 12,10,1,0,50,76,0,0,78,210,98,66,66,66,66,231, + 7,13,13,9,1,0,96,32,16,8,0,56,196,130,130,130, + 130,68,56,7,13,13,9,1,0,4,12,24,16,0,56,196, + 130,130,130,130,68,56,7,13,13,9,1,0,16,56,36,68, + 0,56,196,130,130,130,130,68,56,7,12,12,9,1,0,50, + 92,0,0,56,196,130,130,130,130,68,56,7,12,12,9,1, + 0,68,68,0,0,56,196,130,130,130,130,68,56,6,6,6, + 7,1,2,32,32,0,252,32,32,7,9,9,9,1,0,2, + 62,68,138,146,162,226,68,248,8,13,13,10,1,0,96,48, + 16,8,0,198,66,66,66,66,66,70,59,8,13,13,10,1, + 0,4,12,8,16,0,198,66,66,66,66,66,70,59,8,13, + 13,10,1,0,24,56,36,66,0,198,66,66,66,66,66,70, + 59,8,12,12,10,1,0,68,68,0,0,198,66,66,66,66, + 66,70,59,9,17,34,9,0,252,2,0,4,0,12,0,8, + 0,0,0,243,128,97,0,34,0,50,0,20,0,20,0,28, + 0,8,0,8,0,16,0,176,0,224,0,8,18,18,10,1, + 252,64,192,64,64,64,64,78,115,65,65,65,65,98,124,64, + 64,64,240,9,16,32,9,0,252,34,0,34,0,0,0,0, + 0,243,128,97,0,34,0,50,0,20,0,20,0,28,0,8, + 0,8,0,16,0,176,0,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 8 h=17 x= 1 y= 6 dx= 9 dy= 0 ascent=14 len=17 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11n[262] U8G_SECTION(".progmem.u8g_font_gdr11n") = { + 0,26,25,247,250,11,0,0,0,0,42,57,0,14,253,11, + 0,6,8,8,8,1,6,48,16,164,120,120,164,16,48,7, + 6,6,7,0,2,16,16,16,254,16,16,2,5,5,4,1, + 253,64,192,64,64,128,5,1,1,6,1,4,248,2,2,2, + 4,1,0,192,128,8,17,17,8,0,253,1,2,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,11,11,8, + 1,0,48,72,132,132,132,132,132,132,132,72,48,6,11,11, + 8,1,0,16,240,16,16,16,16,16,16,16,16,124,6,11, + 11,8,1,0,28,100,68,4,8,8,16,32,68,68,252,6, + 11,11,7,0,0,56,68,68,4,24,12,4,4,4,140,120, + 7,11,11,8,0,0,4,12,12,20,36,36,68,254,4,4, + 30,6,11,11,8,1,0,124,64,64,64,120,132,4,4,4, + 132,120,6,11,11,8,1,0,12,48,64,192,184,196,132,132, + 132,72,56,7,11,11,8,1,0,254,132,4,8,8,8,16, + 16,32,32,96,7,11,11,9,1,0,120,196,196,196,120,60, + 194,130,130,130,124,6,11,11,8,1,0,56,200,132,132,132, + 132,124,4,8,16,224}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y= 9 dx=15 dy= 0 ascent=15 len=30 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11r[1868] U8G_SECTION(".progmem.u8g_font_gdr11r") = { + 0,26,25,247,250,11,2,61,5,21,32,127,252,15,252,14, + 252,0,0,0,4,0,0,2,13,13,5,1,0,64,64,64, + 64,64,64,64,64,64,64,0,192,128,5,6,6,8,1,7, + 200,200,72,72,72,72,8,10,10,8,1,1,18,20,20,127, + 36,40,254,72,80,144,7,14,14,8,1,254,16,16,126,148, + 144,240,56,28,20,148,148,248,16,16,11,11,22,13,1,0, + 96,192,161,128,145,0,146,0,166,0,101,192,10,32,18,32, + 50,32,34,32,65,192,11,13,26,12,1,0,28,0,34,0, + 34,0,34,0,36,0,56,0,49,224,216,128,156,128,142,128, + 135,0,135,128,124,224,2,6,6,5,1,7,192,192,64,64, + 64,64,3,17,17,6,1,253,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,64,64,32,3,17,17,6,1,253,128, + 64,64,32,32,32,32,32,32,32,32,32,32,32,64,64,128, + 6,8,8,8,1,6,48,16,164,120,120,164,16,48,7,6, + 6,7,0,2,16,16,16,254,16,16,2,5,5,4,1,253, + 64,192,64,64,128,5,1,1,6,1,4,248,2,2,2,4, + 1,0,192,128,8,17,17,8,0,253,1,2,2,6,4,4, + 12,8,8,16,16,48,32,32,96,64,192,6,11,11,8,1, + 0,48,72,132,132,132,132,132,132,132,72,48,6,11,11,8, + 1,0,16,240,16,16,16,16,16,16,16,16,124,6,11,11, + 8,1,0,28,100,68,4,8,8,16,32,68,68,252,6,11, + 11,7,0,0,56,68,68,4,24,12,4,4,4,140,120,7, + 11,11,8,0,0,4,12,12,20,36,36,68,254,4,4,30, + 6,11,11,8,1,0,124,64,64,64,120,132,4,4,4,132, + 120,6,11,11,8,1,0,12,48,64,192,184,196,132,132,132, + 72,56,7,11,11,8,1,0,254,132,4,8,8,8,16,16, + 32,32,96,7,11,11,9,1,0,120,196,196,196,120,60,194, + 130,130,130,124,6,11,11,8,1,0,56,200,132,132,132,132, + 124,4,8,16,224,2,8,8,4,1,0,192,128,0,0,0, + 0,192,128,2,11,11,4,1,253,192,128,0,0,0,0,64, + 192,64,64,128,6,6,6,8,1,2,4,56,224,192,56,12, + 6,4,4,8,1,3,252,0,0,252,6,6,6,8,1,2, + 192,112,12,28,112,128,6,13,13,8,1,0,56,68,132,132, + 4,8,16,32,32,32,0,48,32,13,15,30,15,1,253,7, + 192,24,96,32,16,64,16,135,136,136,136,144,136,144,136,144, + 136,144,144,137,144,78,224,96,16,48,32,15,192,11,11,22, + 11,0,0,4,0,12,0,14,0,18,0,18,0,19,0,31, + 0,33,0,33,128,32,128,241,224,8,11,11,10,1,0,252, + 66,66,68,126,67,65,65,65,67,254,8,11,11,10,1,0, + 62,66,128,128,128,128,128,128,128,67,60,9,11,22,11,1, + 0,252,0,67,0,65,0,64,128,64,128,64,128,64,128,64, + 128,65,0,67,0,252,0,7,11,11,9,1,0,254,66,64, + 64,124,64,64,64,66,66,254,7,11,11,9,1,0,254,66, + 64,64,124,64,64,64,64,64,240,10,11,22,11,1,0,15, + 0,49,128,64,0,128,0,128,0,128,0,131,192,128,128,64, + 128,96,128,31,0,10,11,22,12,1,0,225,192,64,128,64, + 128,64,128,64,128,127,128,64,128,64,128,64,128,64,128,225, + 192,3,11,11,5,1,0,224,64,64,64,64,64,64,64,64, + 64,224,6,14,14,6,254,253,60,8,8,8,8,8,8,8, + 8,8,8,8,144,224,9,11,22,10,1,0,231,128,70,0, + 76,0,72,0,80,0,112,0,88,0,72,0,68,0,70,0, + 227,128,7,11,11,9,1,0,224,64,64,64,64,64,64,64, + 66,66,254,13,11,22,15,1,0,224,56,96,96,96,96,80, + 160,80,160,88,160,73,32,77,48,70,48,70,48,228,120,10, + 11,22,12,1,0,193,192,96,128,112,128,80,128,72,128,76, + 128,70,128,66,128,65,128,65,128,224,128,9,11,22,11,1, + 0,30,0,99,0,129,0,128,128,128,128,128,128,128,128,128, + 128,65,0,98,0,60,0,7,11,11,9,1,0,252,66,66, + 66,66,92,96,64,64,64,240,10,14,28,11,1,253,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,6,0,3,64,1,192,9,11,22,10,1,0, + 252,0,70,0,66,0,66,0,68,0,72,0,120,0,76,0, + 70,0,66,0,227,128,7,11,11,9,1,0,60,198,128,128, + 112,28,6,2,130,196,248,9,11,22,10,0,0,255,128,136, + 128,136,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,28,0,10,11,22,12,1,0,225,192,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,33,0,30,0,11, + 11,22,12,0,0,240,224,32,64,32,128,48,128,16,128,25, + 0,9,0,9,0,14,0,6,0,4,0,15,11,22,15,0, + 0,241,30,33,8,33,136,34,136,50,136,50,200,20,80,20, + 112,20,48,24,48,8,32,11,11,22,11,0,0,243,192,32, + 128,49,0,26,0,14,0,4,0,14,0,19,0,49,128,32, + 192,241,224,10,11,22,11,0,0,225,192,48,128,17,0,25, + 0,10,0,14,0,4,0,4,0,4,0,4,0,14,0,8, + 11,11,9,1,0,255,134,132,12,24,16,48,32,65,193,255, + 4,17,17,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,17,17,8,0,253,192,64,96, + 32,32,48,16,16,8,8,12,4,4,6,2,2,1,4,17, + 17,5,0,253,240,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,48,56,40,76, + 76,68,134,130,7,1,1,8,1,254,254,4,4,4,6,0, + 9,192,96,32,16,7,8,8,8,1,0,60,68,132,28,100, + 132,140,118,8,14,14,9,0,0,64,192,64,64,64,64,78, + 115,65,65,65,65,66,60,6,8,8,8,1,0,60,68,128, + 128,128,128,196,120,7,14,14,9,1,0,12,4,4,4,4, + 4,60,196,132,132,132,132,76,118,6,8,8,8,1,0,56, + 68,132,252,128,128,68,120,6,14,14,6,1,0,28,40,64, + 64,64,64,248,64,64,64,64,64,64,240,9,12,24,8,0, + 252,61,128,194,0,130,0,194,0,124,0,32,0,112,0,63, + 0,193,0,129,0,130,0,124,0,8,14,14,10,1,0,64, + 192,64,64,64,64,78,114,98,66,66,66,66,231,3,12,12, + 5,1,0,192,192,0,0,64,192,64,64,64,64,64,224,5, + 16,16,5,254,252,24,24,0,0,8,24,8,8,8,8,8, + 8,8,8,16,224,8,14,14,9,1,0,64,192,64,64,64, + 64,79,72,80,112,80,72,68,231,3,14,14,5,1,0,64, + 192,64,64,64,64,64,64,64,64,64,64,64,224,13,8,16, + 15,1,0,206,112,115,144,98,16,66,16,66,16,66,16,66, + 16,231,56,8,8,8,10,1,0,78,210,98,66,66,66,66, + 231,7,8,8,9,1,0,56,196,130,130,130,130,68,56,8, + 12,12,10,1,252,206,115,65,65,65,65,98,92,64,64,64, + 224,8,12,12,9,1,252,62,66,130,130,130,130,70,58,2, + 2,2,15,6,8,8,7,1,0,220,100,64,64,64,64,64, + 224,5,8,8,7,1,0,112,136,128,96,24,136,136,240,5, + 11,11,6,1,0,64,64,64,248,64,64,64,64,64,64,120, + 8,8,8,10,1,0,198,66,66,66,66,66,70,59,9,8, + 16,9,0,0,243,128,98,0,34,0,50,0,20,0,20,0, + 28,0,8,0,13,8,16,13,0,0,242,56,98,32,39,32, + 37,32,53,160,24,192,24,192,16,192,9,8,16,9,0,0, + 247,128,34,0,20,0,24,0,28,0,38,0,35,0,247,128, + 9,12,24,9,0,252,243,128,97,0,34,0,50,0,20,0, + 20,0,28,0,8,0,8,0,16,0,176,0,224,0,6,8, + 8,8,1,0,252,136,24,16,32,64,196,252,5,17,17,6, + 1,253,24,32,32,32,32,32,32,32,192,32,32,32,32,32, + 32,32,24,1,19,19,4,2,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,17,17,6, + 0,253,64,160,32,32,32,32,32,32,24,32,32,32,32,32, + 32,64,192,8,2,2,9,0,4,57,206,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=11 dx=16 dy= 0 ascent=17 len=36 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12[4200] U8G_SECTION(".progmem.u8g_font_gdr12") = { + 0,28,28,246,249,12,2,80,5,85,32,255,252,17,251,15, + 252,0,0,0,4,0,0,2,15,15,5,2,255,128,128,128, + 128,128,128,128,128,128,128,0,0,192,192,128,6,6,6,8, + 1,8,204,76,72,72,72,72,8,11,11,9,1,1,26,18, + 18,127,36,36,36,254,72,72,80,7,15,15,9,1,254,16, + 16,126,148,144,208,112,28,22,18,146,146,252,16,16,11,11, + 22,13,1,0,112,64,144,128,137,128,139,0,146,0,117,192, + 10,32,26,32,18,32,34,32,65,192,11,13,26,12,1,0, + 28,0,34,0,34,0,34,0,36,0,56,0,49,224,216,128, + 140,128,140,128,135,0,199,128,60,224,2,6,6,5,1,8, + 192,64,64,64,64,64,4,18,18,6,1,253,48,96,64,64, + 128,128,128,128,128,128,128,128,128,128,192,64,96,48,4,18, + 18,6,1,253,192,96,32,48,16,16,16,16,16,16,16,16, + 16,16,32,32,96,128,7,7,7,8,1,7,16,148,222,48, + 252,146,16,7,7,7,8,0,2,16,16,16,254,16,16,16, + 2,5,5,4,1,253,64,192,64,64,128,5,1,1,6,1, + 4,248,2,3,3,4,1,255,192,192,128,8,18,18,9,0, + 253,1,1,3,2,6,4,4,12,8,8,24,16,48,32,32, + 96,64,192,7,11,11,9,1,0,56,68,130,130,130,130,130, + 130,132,68,56,6,12,12,9,1,0,16,112,144,16,16,16, + 16,16,16,16,16,252,6,12,12,8,1,0,60,68,196,4, + 4,8,16,16,32,68,132,252,7,12,12,8,0,0,28,38, + 98,2,4,28,2,2,2,2,134,124,7,12,12,9,1,0, + 4,12,12,20,20,36,68,68,254,4,4,30,6,11,11,9, + 2,0,124,64,64,64,120,132,4,4,4,132,120,7,12,12, + 9,1,0,12,48,64,64,128,252,198,130,130,130,68,56,7, + 11,11,9,1,0,254,130,4,4,8,8,24,16,48,32,96, + 7,12,12,9,1,0,120,196,196,196,232,60,78,130,130,130, + 194,124,7,11,11,9,1,0,56,68,130,130,130,198,122,2, + 4,8,112,2,10,10,4,1,255,128,192,128,0,0,0,0, + 192,192,128,2,12,12,4,1,253,128,192,128,0,0,0,0, + 64,192,64,64,128,7,6,6,8,1,2,6,28,224,192,56, + 6,7,4,4,8,1,3,254,0,0,254,7,6,6,8,1, + 2,192,112,14,28,112,128,6,15,15,8,1,255,56,68,132, + 132,4,8,16,16,32,32,32,0,48,48,32,14,15,30,16, + 1,253,7,224,24,48,32,8,71,200,136,68,144,68,144,68, + 144,68,144,68,144,72,136,200,71,112,32,8,24,48,15,192, + 11,12,24,11,0,0,4,0,6,0,14,0,10,0,11,0, + 17,0,17,0,31,128,33,128,32,128,32,192,241,224,8,12, + 12,10,1,0,252,66,66,66,68,126,67,65,65,65,67,254, + 8,12,12,10,1,0,30,99,128,128,128,128,128,128,128,192, + 99,60,9,12,24,11,1,0,252,0,67,0,65,0,64,128, + 64,128,64,128,64,128,64,128,64,128,65,0,66,0,252,0, + 8,12,12,9,1,0,254,66,64,64,64,124,72,64,64,66, + 67,254,7,12,12,9,1,0,254,66,64,64,64,124,72,64, + 64,64,64,240,10,12,24,11,1,0,15,0,49,128,64,0, + 128,0,128,0,128,0,131,192,128,128,128,128,64,128,96,128, + 31,0,10,12,24,12,1,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,64,128,225,192, + 3,12,12,6,1,0,224,64,64,64,64,64,64,64,64,64, + 64,224,6,15,15,6,255,253,60,8,8,8,8,8,8,8, + 8,8,8,8,8,144,224,10,12,24,11,1,0,231,128,66, + 0,68,0,72,0,80,0,96,0,80,0,88,0,76,0,70, + 0,67,0,225,192,7,12,12,9,1,0,224,64,64,64,64, + 64,64,64,64,66,66,254,14,12,24,15,1,0,224,56,96, + 48,112,112,80,80,80,80,88,144,72,144,77,16,69,16,71, + 16,66,16,226,124,10,12,24,12,1,0,193,192,96,128,112, + 128,80,128,88,128,76,128,68,128,70,128,67,128,65,128,65, + 128,224,128,9,12,24,11,1,0,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,8,12,12,10,1,0,252,66,65,65,65,66,92,64,64, + 64,64,240,11,15,30,11,1,253,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,6,0,3,32,0,192,10,12,24,11,1,0,252,0,67, + 0,65,0,65,0,65,0,66,0,124,0,76,0,70,0,67, + 0,67,0,225,192,7,12,12,9,1,0,60,198,128,128,224, + 56,12,2,2,130,196,248,9,12,24,10,1,0,255,128,136, + 128,136,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,62,0,10,12,24,12,1,0,225,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,12,12,24,12,0,0,240,240,32,64,48,64,48, + 64,16,128,24,128,9,128,9,0,13,0,7,0,6,0,6, + 0,16,12,24,16,0,0,241,15,33,132,33,132,33,132,50, + 196,50,72,18,104,20,104,28,40,28,56,8,48,8,16,11, + 12,24,12,0,0,249,224,32,128,49,128,25,0,14,0,6, + 0,6,0,11,0,25,128,48,128,32,192,241,224,11,12,24, + 11,0,0,225,224,48,128,49,128,25,0,10,0,14,0,4, + 0,4,0,4,0,4,0,4,0,31,0,8,12,12,10,1, + 0,255,130,134,4,12,24,16,48,96,65,193,255,4,18,18, + 6,1,253,240,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,240,7,18,18,9,1,253,128,128,192,64,64, + 32,32,48,16,16,24,8,8,4,4,6,2,2,4,18,18, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,24,40,44,44, + 68,70,130,130,7,1,1,9,1,254,254,4,4,4,6,0, + 10,192,96,32,16,7,9,9,9,1,0,60,68,132,4,60, + 196,132,140,118,9,14,28,10,0,0,64,0,192,0,64,0, + 64,0,64,0,70,0,89,0,96,128,64,128,64,128,64,128, + 65,0,97,0,62,0,6,9,9,8,1,0,60,68,128,128, + 128,128,128,196,120,8,14,14,10,1,0,6,2,2,2,2, + 62,66,130,130,130,130,130,70,59,7,9,9,9,1,0,60, + 68,130,130,254,128,128,66,60,6,14,14,6,1,0,28,36, + 64,64,64,248,64,64,64,64,64,64,64,240,10,13,26,10, + 0,252,62,192,67,0,129,0,129,0,194,0,60,0,48,0, + 120,0,39,128,192,128,128,128,193,0,62,0,8,14,14,10, + 1,0,64,192,64,64,64,76,82,98,66,66,66,66,66,231, + 3,12,12,5,1,0,192,192,0,64,192,64,64,64,64,64, + 64,224,5,16,16,5,254,252,24,24,0,8,24,8,8,8, + 8,8,8,8,8,8,16,224,8,14,14,10,1,0,64,192, + 64,64,64,79,68,72,112,112,88,76,70,231,3,14,14,5, + 1,0,64,192,64,64,64,64,64,64,64,64,64,64,64,224, + 13,9,18,15,1,0,204,96,82,144,99,16,66,16,66,16, + 66,16,66,16,66,16,231,56,8,9,9,10,1,0,76,210, + 98,66,66,66,66,66,231,8,9,9,10,1,0,60,66,129, + 129,129,129,130,66,60,8,13,13,10,1,252,206,114,65,65, + 65,65,66,98,92,64,64,64,240,9,13,26,10,1,252,29, + 0,99,0,129,0,129,0,129,0,129,0,129,0,71,0,57, + 0,1,0,1,0,1,0,7,128,6,9,9,8,1,0,92, + 228,96,64,64,64,64,64,240,5,9,9,7,1,0,112,136, + 128,192,48,8,136,136,240,5,12,12,7,1,0,64,64,64, + 248,64,64,64,64,64,64,72,112,8,9,9,10,1,0,198, + 66,66,66,66,66,66,70,59,9,9,18,9,0,0,243,128, + 97,0,33,0,50,0,18,0,18,0,28,0,12,0,8,0, + 13,9,18,13,0,0,242,56,99,16,35,16,37,16,53,160, + 20,160,24,224,24,192,24,64,9,9,18,10,0,0,243,128, + 33,0,50,0,28,0,12,0,22,0,34,0,33,0,243,128, + 9,13,26,9,0,252,243,128,97,0,33,0,50,0,18,0, + 20,0,28,0,12,0,8,0,8,0,16,0,176,0,224,0, + 7,9,9,8,1,0,254,132,8,24,48,32,98,194,254,5, + 18,18,6,1,253,8,16,32,32,32,32,32,32,64,224,32, + 32,32,32,32,32,32,24,1,20,20,4,2,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,5,18,18,6,0,253,192,32,32,32,32,32,32,32,56, + 16,32,32,32,32,32,32,64,128,9,4,8,9,0,4,48, + 0,125,128,79,0,134,0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,0,2,14, + 14,5,2,251,64,192,64,128,128,128,128,128,128,128,128,128, + 128,128,7,12,12,9,1,0,16,16,62,212,144,144,144,144, + 210,124,16,16,7,12,12,9,1,0,60,70,68,64,64,64, + 240,64,64,66,66,254,7,6,6,9,1,3,132,126,68,68, + 68,254,9,11,22,9,0,0,231,128,99,0,50,0,20,0, + 28,0,8,0,127,0,8,0,8,0,8,0,62,0,1,20, + 20,4,2,252,128,128,128,128,128,128,128,128,128,0,0,128, + 128,128,128,128,128,128,128,128,7,13,13,9,1,0,112,152, + 128,224,184,134,130,98,60,12,132,196,120,5,2,2,7,1, + 10,136,136,12,12,24,14,1,0,15,0,48,192,94,32,146, + 32,160,16,160,16,160,16,160,16,144,160,79,32,32,64,31, + 128,5,7,7,5,0,5,48,208,112,208,176,72,240,7,8, + 8,9,1,0,34,36,76,216,216,76,36,34,8,4,4,9, + 0,2,255,1,1,1,5,1,1,6,1,4,248,7,6,6, + 7,0,7,56,238,170,178,238,56,6,1,1,9,2,11,252, + 5,5,5,7,1,7,112,136,136,136,112,7,9,9,8,0, + 1,16,16,16,254,16,16,16,0,126,4,7,7,6,1,6, + 112,144,16,32,64,144,240,5,8,8,6,0,5,56,72,8, + 16,8,8,136,112,4,4,4,6,2,10,48,96,64,128,8, + 13,13,10,1,252,194,70,66,66,66,66,102,126,91,64,64, + 64,96,8,14,14,10,1,254,63,70,134,134,134,70,62,6, + 6,6,6,6,6,15,1,2,2,3,1,5,128,128,2,4, + 4,4,2,252,192,192,64,128,5,7,7,6,1,6,32,224, + 32,32,32,32,248,4,7,7,5,0,5,96,144,144,144,144, + 96,240,7,8,8,9,1,0,136,72,36,50,50,36,72,136, + 10,11,22,11,1,0,192,128,65,0,65,0,66,0,68,0, + 228,0,9,128,18,128,18,128,39,192,65,192,9,11,22,11, + 1,0,192,128,65,0,66,0,66,0,68,0,239,128,12,128, + 17,0,49,0,34,128,71,128,10,12,24,11,1,0,96,0, + 144,128,33,0,18,0,146,0,228,0,8,0,9,128,18,128, + 50,128,39,192,65,192,6,14,14,8,1,251,16,48,16,16, + 16,16,32,32,64,128,132,132,136,112,11,16,32,11,0,0, + 16,0,60,0,2,0,0,0,4,0,6,0,14,0,10,0, + 11,0,17,0,17,0,31,128,33,128,32,128,32,192,241,224, + 11,16,32,11,0,0,1,0,7,128,8,0,0,0,4,0, + 6,0,14,0,10,0,11,0,17,0,17,0,31,128,33,128, + 32,128,32,192,241,224,11,16,32,11,0,0,4,0,10,0, + 17,0,0,0,4,0,6,0,14,0,10,0,11,0,17,0, + 17,0,31,128,33,128,32,128,32,192,241,224,11,15,30,11, + 0,0,29,128,39,0,0,0,4,0,6,0,14,0,10,0, + 11,0,17,0,17,0,31,128,33,128,32,128,32,192,241,224, + 11,15,30,11,0,0,33,0,33,0,0,0,4,0,6,0, + 14,0,10,0,11,0,17,0,17,0,31,128,33,128,32,128, + 32,192,241,224,11,17,34,11,0,0,14,0,18,0,18,0, + 12,0,0,0,4,0,6,0,14,0,10,0,11,0,17,0, + 17,0,31,128,33,128,32,128,32,192,241,224,14,12,24,15, + 0,0,31,248,5,8,5,0,9,0,9,0,31,240,17,32, + 17,0,33,0,33,8,97,12,243,248,9,16,32,10,1,252, + 30,0,99,0,128,0,128,0,128,0,128,0,128,0,128,0, + 128,0,65,0,97,128,62,0,8,0,12,0,4,0,8,0, + 8,16,16,9,1,0,64,48,8,0,254,66,64,64,64,124, + 72,64,64,66,67,254,8,16,16,9,1,0,4,14,48,0, + 254,66,64,64,64,124,72,64,64,66,67,254,8,16,16,9, + 1,0,24,44,68,2,254,66,64,64,64,124,72,64,64,66, + 67,254,8,15,15,9,1,0,132,132,0,254,66,64,64,64, + 124,72,64,64,66,67,254,4,16,16,6,0,0,128,96,16, + 0,112,32,32,32,32,32,32,32,32,32,32,112,5,16,16, + 6,1,0,24,48,192,0,224,64,64,64,64,64,64,64,64, + 64,64,224,6,16,16,6,0,0,48,88,132,0,112,32,32, + 32,32,32,32,32,32,32,32,112,6,15,15,6,0,0,132, + 136,0,112,32,32,32,32,32,32,32,32,32,32,112,10,12, + 24,11,0,0,126,0,33,128,32,128,32,64,32,64,124,64, + 160,64,32,64,32,64,32,128,33,0,126,0,10,15,30,12, + 1,0,25,0,38,0,0,0,193,192,96,128,112,128,80,128, + 88,128,76,128,68,128,70,128,67,128,65,128,65,128,224,128, + 9,16,32,11,1,0,32,0,24,0,4,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,128,128, + 65,0,98,0,60,0,9,16,32,11,1,0,3,0,6,0, + 24,0,0,0,30,0,99,0,129,0,128,128,128,128,128,128, + 128,128,128,128,128,128,65,0,98,0,60,0,9,16,32,11, + 1,0,12,0,22,0,34,0,1,0,30,0,99,0,129,0, + 128,128,128,128,128,128,128,128,128,128,128,128,65,0,98,0, + 60,0,9,15,30,11,1,0,25,0,110,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,128,128, + 65,0,98,0,60,0,9,15,30,11,1,0,66,0,66,0, + 0,0,30,0,99,0,129,0,128,128,128,128,128,128,128,128, + 128,128,128,128,65,0,98,0,60,0,6,6,6,8,1,2, + 132,72,48,48,72,132,9,12,24,11,1,0,30,128,35,0, + 67,0,131,128,132,128,136,128,136,128,144,128,225,0,97,0, + 98,0,188,0,10,16,32,12,1,0,48,0,24,0,6,0, + 0,0,225,192,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,16,32,12,1,0, + 1,0,6,0,8,0,0,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,33,0,30,0, + 10,16,32,12,1,0,12,0,26,0,33,0,0,0,225,192, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,33,0,30,0,10,15,30,12,1,0,33,0,33,0, + 0,0,225,192,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,11,16,32,11,0,0, + 1,0,3,128,12,0,0,0,225,224,48,128,49,128,25,0, + 10,0,14,0,4,0,4,0,4,0,4,0,4,0,31,0, + 8,12,12,10,1,0,240,64,124,66,65,65,65,65,98,92, + 64,240,9,14,28,11,1,0,30,0,35,0,65,0,65,0, + 65,0,70,0,72,0,72,0,70,0,67,128,64,128,72,128, + 72,128,207,0,7,14,14,9,1,0,96,32,16,16,8,60, + 68,132,4,60,196,132,140,118,7,14,14,9,1,0,12,8, + 16,16,0,60,68,132,4,60,196,132,140,118,7,14,14,9, + 1,0,16,56,76,132,0,60,68,132,4,60,196,132,140,118, + 7,13,13,9,1,0,34,116,152,0,60,68,132,4,60,196, + 132,140,118,7,12,12,9,1,0,132,132,0,60,68,132,4, + 60,196,132,140,118,7,14,14,9,1,0,56,72,72,48,0, + 60,68,132,4,60,196,132,140,118,11,9,18,13,1,0,57, + 192,70,64,196,32,4,32,31,224,100,0,132,0,142,32,115, + 192,7,13,13,8,1,252,60,68,128,128,128,128,128,98,60, + 16,24,8,16,7,14,14,9,1,0,96,32,16,8,0,60, + 68,130,130,254,128,128,66,60,7,14,14,9,1,0,4,14, + 8,16,0,60,68,130,130,254,128,128,66,60,7,14,14,9, + 1,0,24,56,36,66,0,60,68,130,130,254,128,128,66,60, + 7,12,12,9,1,0,130,132,0,60,68,130,130,254,128,128, + 66,60,4,14,14,5,0,0,192,64,32,16,0,32,96,32, + 32,32,32,32,32,112,4,14,14,5,1,0,16,48,96,64, + 0,64,192,64,64,64,64,64,64,224,6,14,14,5,0,0, + 32,112,200,132,0,32,96,32,32,32,32,32,32,112,6,12, + 12,5,255,0,132,132,0,16,48,16,16,16,16,16,16,56, + 7,13,13,9,1,0,96,30,56,68,60,70,130,130,130,130, + 132,68,56,8,13,13,10,1,0,51,58,76,0,76,210,98, + 66,66,66,66,66,231,8,14,14,10,1,0,96,48,16,8, + 0,60,66,129,129,129,129,130,66,60,8,14,14,10,1,0, + 6,12,8,16,0,60,66,129,129,129,129,130,66,60,8,14, + 14,10,1,0,24,56,36,66,0,60,66,129,129,129,129,130, + 66,60,8,13,13,10,1,0,50,122,76,0,60,66,129,129, + 129,129,130,66,60,8,12,12,10,1,0,130,130,0,60,66, + 129,129,129,129,130,66,60,6,6,6,8,1,2,32,32,252, + 0,32,32,8,9,9,10,1,0,29,102,135,137,153,145,226, + 98,252,8,14,14,10,1,0,96,48,16,8,0,198,66,66, + 66,66,66,66,70,59,8,14,14,10,1,0,6,12,8,16, + 0,198,66,66,66,66,66,66,70,59,8,14,14,10,1,0, + 24,28,36,66,0,198,66,66,66,66,66,66,70,59,8,12, + 12,10,1,0,130,130,0,198,66,66,66,66,66,66,70,59, + 9,18,36,9,0,252,3,0,6,0,4,0,8,0,0,0, + 243,128,97,0,33,0,50,0,18,0,20,0,28,0,12,0, + 8,0,8,0,16,0,176,0,224,0,8,18,18,10,1,252, + 64,192,64,64,64,78,114,65,65,65,65,66,98,124,64,64, + 64,240,9,16,32,9,0,252,65,0,65,0,0,0,243,128, + 97,0,33,0,50,0,18,0,20,0,28,0,12,0,8,0, + 8,0,16,0,176,0,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 12 + Calculated Max Values w= 8 h=18 x= 2 y= 7 dx= 9 dy= 0 ascent=15 len=18 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =15 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12n[270] U8G_SECTION(".progmem.u8g_font_gdr12n") = { + 0,28,28,246,249,12,0,0,0,0,42,57,0,15,253,12, + 0,7,7,7,8,1,7,16,148,222,48,252,146,16,7,7, + 7,8,0,2,16,16,16,254,16,16,16,2,5,5,4,1, + 253,64,192,64,64,128,5,1,1,6,1,4,248,2,3,3, + 4,1,255,192,192,128,8,18,18,9,0,253,1,1,3,2, + 6,4,4,12,8,8,24,16,48,32,32,96,64,192,7,11, + 11,9,1,0,56,68,130,130,130,130,130,130,132,68,56,6, + 12,12,9,1,0,16,112,144,16,16,16,16,16,16,16,16, + 252,6,12,12,8,1,0,60,68,196,4,4,8,16,16,32, + 68,132,252,7,12,12,8,0,0,28,38,98,2,4,28,2, + 2,2,2,134,124,7,12,12,9,1,0,4,12,12,20,20, + 36,68,68,254,4,4,30,6,11,11,9,2,0,124,64,64, + 64,120,132,4,4,4,132,120,7,12,12,9,1,0,12,48, + 64,64,128,252,198,130,130,130,68,56,7,11,11,9,1,0, + 254,130,4,4,8,8,24,16,48,32,96,7,12,12,9,1, + 0,120,196,196,196,232,60,78,130,130,130,194,124,7,11,11, + 9,1,0,56,68,130,130,130,198,122,2,4,8,112}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=10 dx=16 dy= 0 ascent=16 len=30 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12r[1992] U8G_SECTION(".progmem.u8g_font_gdr12r") = { + 0,28,28,246,249,12,2,80,5,85,32,127,252,16,252,15, + 252,0,0,0,4,0,0,2,15,15,5,2,255,128,128,128, + 128,128,128,128,128,128,128,0,0,192,192,128,6,6,6,8, + 1,8,204,76,72,72,72,72,8,11,11,9,1,1,26,18, + 18,127,36,36,36,254,72,72,80,7,15,15,9,1,254,16, + 16,126,148,144,208,112,28,22,18,146,146,252,16,16,11,11, + 22,13,1,0,112,64,144,128,137,128,139,0,146,0,117,192, + 10,32,26,32,18,32,34,32,65,192,11,13,26,12,1,0, + 28,0,34,0,34,0,34,0,36,0,56,0,49,224,216,128, + 140,128,140,128,135,0,199,128,60,224,2,6,6,5,1,8, + 192,64,64,64,64,64,4,18,18,6,1,253,48,96,64,64, + 128,128,128,128,128,128,128,128,128,128,192,64,96,48,4,18, + 18,6,1,253,192,96,32,48,16,16,16,16,16,16,16,16, + 16,16,32,32,96,128,7,7,7,8,1,7,16,148,222,48, + 252,146,16,7,7,7,8,0,2,16,16,16,254,16,16,16, + 2,5,5,4,1,253,64,192,64,64,128,5,1,1,6,1, + 4,248,2,3,3,4,1,255,192,192,128,8,18,18,9,0, + 253,1,1,3,2,6,4,4,12,8,8,24,16,48,32,32, + 96,64,192,7,11,11,9,1,0,56,68,130,130,130,130,130, + 130,132,68,56,6,12,12,9,1,0,16,112,144,16,16,16, + 16,16,16,16,16,252,6,12,12,8,1,0,60,68,196,4, + 4,8,16,16,32,68,132,252,7,12,12,8,0,0,28,38, + 98,2,4,28,2,2,2,2,134,124,7,12,12,9,1,0, + 4,12,12,20,20,36,68,68,254,4,4,30,6,11,11,9, + 2,0,124,64,64,64,120,132,4,4,4,132,120,7,12,12, + 9,1,0,12,48,64,64,128,252,198,130,130,130,68,56,7, + 11,11,9,1,0,254,130,4,4,8,8,24,16,48,32,96, + 7,12,12,9,1,0,120,196,196,196,232,60,78,130,130,130, + 194,124,7,11,11,9,1,0,56,68,130,130,130,198,122,2, + 4,8,112,2,10,10,4,1,255,128,192,128,0,0,0,0, + 192,192,128,2,12,12,4,1,253,128,192,128,0,0,0,0, + 64,192,64,64,128,7,6,6,8,1,2,6,28,224,192,56, + 6,7,4,4,8,1,3,254,0,0,254,7,6,6,8,1, + 2,192,112,14,28,112,128,6,15,15,8,1,255,56,68,132, + 132,4,8,16,16,32,32,32,0,48,48,32,14,15,30,16, + 1,253,7,224,24,48,32,8,71,200,136,68,144,68,144,68, + 144,68,144,68,144,72,136,200,71,112,32,8,24,48,15,192, + 11,12,24,11,0,0,4,0,6,0,14,0,10,0,11,0, + 17,0,17,0,31,128,33,128,32,128,32,192,241,224,8,12, + 12,10,1,0,252,66,66,66,68,126,67,65,65,65,67,254, + 8,12,12,10,1,0,30,99,128,128,128,128,128,128,128,192, + 99,60,9,12,24,11,1,0,252,0,67,0,65,0,64,128, + 64,128,64,128,64,128,64,128,64,128,65,0,66,0,252,0, + 8,12,12,9,1,0,254,66,64,64,64,124,72,64,64,66, + 67,254,7,12,12,9,1,0,254,66,64,64,64,124,72,64, + 64,64,64,240,10,12,24,11,1,0,15,0,49,128,64,0, + 128,0,128,0,128,0,131,192,128,128,128,128,64,128,96,128, + 31,0,10,12,24,12,1,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,64,128,225,192, + 3,12,12,6,1,0,224,64,64,64,64,64,64,64,64,64, + 64,224,6,15,15,6,255,253,60,8,8,8,8,8,8,8, + 8,8,8,8,8,144,224,10,12,24,11,1,0,231,128,66, + 0,68,0,72,0,80,0,96,0,80,0,88,0,76,0,70, + 0,67,0,225,192,7,12,12,9,1,0,224,64,64,64,64, + 64,64,64,64,66,66,254,14,12,24,15,1,0,224,56,96, + 48,112,112,80,80,80,80,88,144,72,144,77,16,69,16,71, + 16,66,16,226,124,10,12,24,12,1,0,193,192,96,128,112, + 128,80,128,88,128,76,128,68,128,70,128,67,128,65,128,65, + 128,224,128,9,12,24,11,1,0,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,8,12,12,10,1,0,252,66,65,65,65,66,92,64,64, + 64,64,240,11,15,30,11,1,253,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,6,0,3,32,0,192,10,12,24,11,1,0,252,0,67, + 0,65,0,65,0,65,0,66,0,124,0,76,0,70,0,67, + 0,67,0,225,192,7,12,12,9,1,0,60,198,128,128,224, + 56,12,2,2,130,196,248,9,12,24,10,1,0,255,128,136, + 128,136,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,62,0,10,12,24,12,1,0,225,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,12,12,24,12,0,0,240,240,32,64,48,64,48, + 64,16,128,24,128,9,128,9,0,13,0,7,0,6,0,6, + 0,16,12,24,16,0,0,241,15,33,132,33,132,33,132,50, + 196,50,72,18,104,20,104,28,40,28,56,8,48,8,16,11, + 12,24,12,0,0,249,224,32,128,49,128,25,0,14,0,6, + 0,6,0,11,0,25,128,48,128,32,192,241,224,11,12,24, + 11,0,0,225,224,48,128,49,128,25,0,10,0,14,0,4, + 0,4,0,4,0,4,0,4,0,31,0,8,12,12,10,1, + 0,255,130,134,4,12,24,16,48,96,65,193,255,4,18,18, + 6,1,253,240,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,240,7,18,18,9,1,253,128,128,192,64,64, + 32,32,48,16,16,24,8,8,4,4,6,2,2,4,18,18, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,24,40,44,44, + 68,70,130,130,7,1,1,9,1,254,254,4,4,4,6,0, + 10,192,96,32,16,7,9,9,9,1,0,60,68,132,4,60, + 196,132,140,118,9,14,28,10,0,0,64,0,192,0,64,0, + 64,0,64,0,70,0,89,0,96,128,64,128,64,128,64,128, + 65,0,97,0,62,0,6,9,9,8,1,0,60,68,128,128, + 128,128,128,196,120,8,14,14,10,1,0,6,2,2,2,2, + 62,66,130,130,130,130,130,70,59,7,9,9,9,1,0,60, + 68,130,130,254,128,128,66,60,6,14,14,6,1,0,28,36, + 64,64,64,248,64,64,64,64,64,64,64,240,10,13,26,10, + 0,252,62,192,67,0,129,0,129,0,194,0,60,0,48,0, + 120,0,39,128,192,128,128,128,193,0,62,0,8,14,14,10, + 1,0,64,192,64,64,64,76,82,98,66,66,66,66,66,231, + 3,12,12,5,1,0,192,192,0,64,192,64,64,64,64,64, + 64,224,5,16,16,5,254,252,24,24,0,8,24,8,8,8, + 8,8,8,8,8,8,16,224,8,14,14,10,1,0,64,192, + 64,64,64,79,68,72,112,112,88,76,70,231,3,14,14,5, + 1,0,64,192,64,64,64,64,64,64,64,64,64,64,64,224, + 13,9,18,15,1,0,204,96,82,144,99,16,66,16,66,16, + 66,16,66,16,66,16,231,56,8,9,9,10,1,0,76,210, + 98,66,66,66,66,66,231,8,9,9,10,1,0,60,66,129, + 129,129,129,130,66,60,8,13,13,10,1,252,206,114,65,65, + 65,65,66,98,92,64,64,64,240,9,13,26,10,1,252,29, + 0,99,0,129,0,129,0,129,0,129,0,129,0,71,0,57, + 0,1,0,1,0,1,0,7,128,6,9,9,8,1,0,92, + 228,96,64,64,64,64,64,240,5,9,9,7,1,0,112,136, + 128,192,48,8,136,136,240,5,12,12,7,1,0,64,64,64, + 248,64,64,64,64,64,64,72,112,8,9,9,10,1,0,198, + 66,66,66,66,66,66,70,59,9,9,18,9,0,0,243,128, + 97,0,33,0,50,0,18,0,18,0,28,0,12,0,8,0, + 13,9,18,13,0,0,242,56,99,16,35,16,37,16,53,160, + 20,160,24,224,24,192,24,64,9,9,18,10,0,0,243,128, + 33,0,50,0,28,0,12,0,22,0,34,0,33,0,243,128, + 9,13,26,9,0,252,243,128,97,0,33,0,50,0,18,0, + 20,0,28,0,12,0,8,0,8,0,16,0,176,0,224,0, + 7,9,9,8,1,0,254,132,8,24,48,32,98,194,254,5, + 18,18,6,1,253,8,16,32,32,32,32,32,32,64,224,32, + 32,32,32,32,32,32,24,1,20,20,4,2,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,5,18,18,6,0,253,192,32,32,32,32,32,32,32,56, + 16,32,32,32,32,32,32,64,128,9,4,8,9,0,4,48, + 0,125,128,79,0,134,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=24 x= 2 y=13 dx=20 dy= 0 ascent=20 len=57 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14[5942] U8G_SECTION(".progmem.u8g_font_gdr14") = { + 0,35,33,244,248,14,3,95,7,136,32,255,251,20,250,18, + 251,0,0,0,5,0,0,2,17,17,6,2,0,64,192,192, + 192,192,192,192,192,192,192,192,192,128,0,192,192,192,6,8, + 8,10,2,9,204,204,204,204,204,204,204,140,10,13,26,11, + 1,1,12,128,9,128,9,0,9,0,127,192,19,0,18,0, + 50,0,255,128,36,0,100,0,68,0,76,0,9,18,36,11, + 1,254,12,0,12,0,63,128,109,128,205,0,204,0,236,0, + 124,0,63,0,15,0,13,128,13,128,141,128,205,128,239,0, + 126,0,12,0,12,0,14,14,28,16,1,0,56,24,72,48, + 204,96,204,64,204,192,205,128,75,0,114,56,6,76,12,204, + 8,204,16,204,48,200,96,112,14,16,32,16,1,0,15,0, + 25,128,49,128,49,128,49,0,51,0,60,0,60,252,124,112, + 102,48,199,48,195,176,193,224,192,224,96,176,63,28,2,8, + 8,6,2,9,192,192,192,192,192,192,192,128,6,22,22,7, + 1,252,12,24,16,32,96,96,64,192,192,192,192,192,192,192, + 192,64,96,96,32,48,24,12,6,22,22,7,0,252,192,96, + 48,16,24,24,8,12,12,12,12,12,12,12,12,8,24,24, + 16,32,96,192,9,10,20,10,1,8,24,0,24,0,137,0, + 235,128,60,0,60,0,235,0,137,0,24,0,24,0,8,8, + 8,9,1,2,24,24,24,255,24,24,24,24,4,6,6,5, + 0,253,112,240,48,48,32,64,6,1,1,8,1,5,252,2, + 3,3,5,2,0,192,192,192,9,22,44,11,1,252,0,128, + 1,128,1,0,3,0,3,0,2,0,6,0,6,0,12,0, + 12,0,8,0,24,0,24,0,16,0,48,0,48,0,96,0, + 96,0,64,0,192,0,192,0,128,0,9,14,28,11,1,0, + 28,0,39,0,99,0,67,128,193,128,193,128,193,128,193,128, + 193,128,193,128,193,0,97,0,98,0,28,0,8,14,14,11, + 2,0,24,120,152,24,24,24,24,24,24,24,24,24,24,255, + 8,14,14,11,1,0,60,103,195,131,3,6,6,12,24,24, + 48,97,193,255,9,14,28,12,1,0,30,0,103,0,195,0, + 3,0,2,0,4,0,30,0,3,0,1,128,1,128,1,128, + 1,128,195,0,60,0,10,14,28,11,0,0,3,0,7,0, + 7,0,11,0,27,0,19,0,35,0,99,0,67,0,255,192, + 3,0,3,0,3,0,15,192,9,14,28,11,0,0,0,128, + 63,0,32,0,32,0,96,0,126,0,67,0,1,128,1,128, + 1,128,1,128,1,0,195,0,60,0,9,14,28,11,1,0, + 3,0,12,0,48,0,32,0,96,0,222,0,227,0,193,128, + 193,128,193,128,193,128,97,0,99,0,30,0,9,13,26,11, + 1,0,127,128,129,0,129,0,3,0,2,0,6,0,4,0, + 12,0,8,0,24,0,24,0,48,0,32,0,9,14,28,11, + 1,0,62,0,71,0,195,0,195,0,195,0,118,0,30,0, + 39,0,99,128,193,128,193,128,193,128,99,0,60,0,9,14, + 28,11,1,0,30,0,99,0,67,0,193,128,193,128,193,128, + 193,128,99,128,61,128,1,0,3,0,6,0,8,0,112,0, + 2,11,11,5,2,0,192,192,192,0,0,0,0,0,192,192, + 192,4,14,14,5,0,253,48,48,48,0,0,0,0,0,112, + 240,48,48,32,64,8,7,7,10,1,3,1,15,120,192,112, + 30,3,8,4,4,10,1,4,255,0,0,255,8,7,7,10, + 1,3,192,120,15,3,30,240,128,8,17,17,10,1,0,62, + 103,195,195,3,3,6,12,12,24,24,24,16,0,24,24,24, + 17,19,57,19,1,252,1,240,0,6,28,0,24,6,0,48, + 3,0,32,3,0,97,211,128,66,49,128,196,49,128,204,49, + 128,204,49,128,204,49,128,204,49,0,236,51,0,102,114,0, + 99,156,0,48,0,0,56,2,0,14,15,0,3,240,0,13, + 14,28,14,0,0,2,0,3,0,5,0,5,128,5,128,8, + 128,8,192,8,192,31,192,16,96,16,96,32,48,32,48,248, + 120,11,14,28,12,0,0,127,0,177,192,48,192,48,192,48, + 192,49,128,63,128,49,192,48,224,48,96,48,96,48,96,48, + 192,255,128,11,14,28,12,1,0,7,192,24,96,32,0,96, + 0,64,0,192,0,192,0,192,0,192,0,192,0,96,0,96, + 32,56,64,15,128,13,14,28,14,0,0,127,128,176,224,48, + 112,48,48,48,24,48,24,48,24,48,24,48,24,48,24,48, + 48,48,112,48,224,255,128,11,14,28,11,0,0,255,192,48, + 64,48,64,48,0,48,0,48,0,63,128,49,0,48,0,48, + 0,48,0,48,32,48,96,255,192,10,14,28,11,0,0,255, + 192,48,64,48,64,48,0,48,0,48,0,63,128,49,0,48, + 0,48,0,48,0,48,0,48,0,252,0,11,14,28,13,1, + 0,15,128,16,192,32,0,96,0,192,0,192,0,192,0,195, + 224,192,192,192,192,96,192,96,192,48,192,31,0,15,14,28, + 15,0,0,252,126,48,24,48,24,48,24,48,24,48,24,63, + 248,48,24,48,24,48,24,48,24,48,24,48,24,252,126,6, + 14,14,7,0,0,252,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,18,36,7,254,252,31,128,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,4,0,72,0,240,0,13,14,28, + 13,0,0,252,240,48,64,48,128,49,0,50,0,54,0,60, + 0,54,0,54,0,51,0,49,128,48,192,48,96,252,56,11, + 14,28,11,0,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,32,48,64,255, + 192,17,14,42,19,1,0,240,7,0,112,14,0,112,14,0, + 120,30,0,104,22,0,108,22,0,108,38,0,102,38,0,102, + 102,0,99,70,0,99,198,0,97,134,0,97,134,0,241,15, + 128,15,14,28,15,0,0,240,126,48,24,56,24,60,24,52, + 24,50,24,51,24,49,152,48,152,48,216,48,120,48,56,48, + 56,252,24,12,14,28,14,1,0,15,128,48,192,32,96,96, + 96,192,48,192,48,192,48,192,48,192,48,192,48,96,96,96, + 64,48,128,31,0,11,14,28,12,0,0,127,128,176,192,48, + 96,48,96,48,96,48,96,48,192,63,0,48,0,48,0,48, + 0,48,0,48,0,252,0,14,17,34,14,1,253,15,128,48, + 192,32,96,96,96,192,48,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,31,0,1,128,0,196,0,56,13, + 14,28,13,0,0,127,0,177,128,48,192,48,192,48,192,48, + 128,49,0,62,0,51,0,49,0,49,128,48,192,48,192,252, + 120,9,14,28,11,1,0,62,0,99,0,192,0,192,0,224, + 0,120,0,62,0,15,0,3,128,1,128,129,128,129,0,195, + 0,124,0,12,14,28,13,0,0,255,240,134,16,134,16,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,31,128,15,14,28,15,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,14,14,28,15,0,0,248,60,48, + 24,48,16,24,16,24,48,24,32,12,96,12,64,4,64,6, + 192,6,128,3,128,3,128,1,0,19,14,42,20,0,0,248, + 67,224,48,96,128,48,96,128,48,224,128,16,177,128,16,177, + 0,25,145,0,25,25,0,25,25,0,11,11,0,14,14,0, + 14,14,0,14,6,0,4,6,0,14,14,28,14,0,0,252, + 248,48,48,24,96,28,192,12,128,7,128,3,0,3,128,5, + 128,12,192,24,96,16,112,48,48,248,124,14,14,28,14,0, + 0,224,124,48,48,24,32,24,96,12,64,6,192,7,128,3, + 0,3,0,3,0,3,0,3,0,3,0,15,192,10,14,28, + 12,1,0,127,192,65,128,129,128,3,0,6,0,6,0,12, + 0,28,0,24,0,48,0,48,0,96,64,192,64,255,192,5, + 22,22,7,1,252,248,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,248,9,22,44,11,1, + 252,128,0,192,0,192,0,64,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,8,0,12,0,4,0,4,0,6, + 0,2,0,3,0,3,0,1,0,1,128,0,128,5,22,22, + 8,1,252,248,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,248,9,11,22,11,1,6,8, + 0,12,0,28,0,22,0,54,0,34,0,35,0,99,0,65, + 128,65,128,129,128,9,1,2,11,1,253,255,128,5,5,5, + 7,0,12,224,96,48,16,8,10,10,20,11,1,0,30,0, + 99,0,195,0,3,0,31,0,99,0,195,0,195,0,199,0, + 123,192,10,17,34,12,1,0,96,0,224,0,96,0,96,0, + 96,0,96,0,96,0,103,0,121,128,113,192,96,192,96,192, + 96,192,96,192,96,128,113,0,30,0,9,10,20,10,1,0, + 15,0,49,128,96,0,192,0,192,0,192,0,192,0,96,0, + 113,128,30,0,11,17,34,12,1,0,1,128,7,128,1,128, + 1,128,1,128,1,128,1,128,31,128,35,128,65,128,193,128, + 193,128,193,128,193,128,225,128,103,160,57,192,9,10,20,11, + 1,0,30,0,33,0,65,128,255,128,192,0,192,0,192,0, + 224,0,113,128,62,0,9,17,34,7,0,0,7,128,9,0, + 16,0,48,0,48,0,48,0,48,0,126,0,176,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,252,0,12,15, + 30,12,0,251,31,48,49,192,96,192,96,192,96,192,49,128, + 31,0,24,0,56,0,31,192,96,112,192,48,192,48,96,96, + 63,128,13,17,34,13,0,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,96,56,96,48,96,48,96, + 48,96,48,96,48,96,48,96,253,248,6,15,15,6,0,0, + 48,48,48,0,0,48,240,48,48,48,48,48,48,48,252,7, + 20,20,6,253,251,6,6,6,0,0,6,30,6,6,6,6, + 6,6,6,6,6,6,4,8,240,12,17,34,12,0,0,48, + 0,240,0,48,0,48,0,48,0,48,0,48,0,49,224,49, + 128,51,0,52,0,60,0,54,0,51,0,49,128,48,192,248, + 240,6,17,17,6,0,0,48,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,10,30,20,0,0,113,199, + 128,182,104,192,56,112,192,48,96,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,253,251,240,13,10,20,13, + 0,0,113,192,182,96,56,96,48,96,48,96,48,96,48,96, + 48,96,48,96,253,248,10,10,20,12,1,0,30,0,35,128, + 65,128,192,192,192,192,192,192,192,192,224,128,113,0,30,0, + 11,15,30,12,0,251,115,128,188,192,56,224,48,96,48,96, + 48,96,48,96,48,64,56,192,55,0,48,0,48,0,48,0, + 48,0,252,0,11,15,30,12,1,251,30,128,35,128,97,128, + 193,128,193,128,193,128,193,128,225,128,99,128,61,128,1,128, + 1,128,1,128,1,128,7,224,9,10,20,9,0,0,51,128, + 252,128,56,0,48,0,48,0,48,0,48,0,48,0,48,0, + 252,0,7,10,10,9,1,0,124,204,192,224,120,30,6,134, + 134,248,8,14,14,8,0,0,16,48,48,48,127,176,48,48, + 48,48,48,48,49,30,11,10,20,12,1,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,10,20,11,0,0,249,224,32,64,48,128,48,128,25,128, + 25,0,9,0,14,0,6,0,4,0,16,10,20,16,0,0, + 248,143,33,130,49,196,49,196,19,100,26,108,26,40,12,56, + 12,56,12,16,11,10,20,12,0,0,249,224,48,128,25,0, + 15,0,6,0,14,0,11,0,17,128,32,192,241,224,12,15, + 30,11,255,251,124,240,16,32,24,64,24,64,12,192,12,128, + 4,128,7,0,3,0,3,0,2,0,6,0,4,0,120,0, + 240,0,8,10,10,10,1,0,255,131,134,12,8,24,48,97, + 65,255,6,22,22,8,1,252,4,24,16,48,48,48,56,24, + 24,24,48,240,24,24,24,24,48,48,48,48,24,4,2,24, + 24,5,2,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,6,22,22,8, + 1,252,128,96,48,48,48,48,96,96,96,96,60,16,32,96, + 96,112,48,48,48,32,96,128,10,4,8,11,1,5,48,64, + 124,128,159,0,135,0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,5,0,0,2,16,16, + 6,2,250,192,192,128,64,192,192,192,192,192,192,192,192,192, + 192,192,128,9,14,28,11,1,0,12,0,12,0,31,128,109, + 128,76,0,204,0,204,0,204,0,204,0,236,128,125,128,63, + 0,12,0,12,0,10,14,28,11,0,0,7,128,24,192,16, + 128,48,128,48,0,48,0,48,0,126,0,48,0,48,0,48, + 0,32,64,32,64,255,192,9,7,14,11,1,3,221,128,119, + 0,99,0,99,0,115,0,127,0,128,128,12,14,28,11,255, + 0,225,240,48,64,48,192,25,128,29,128,15,0,7,0,6, + 0,63,192,6,0,6,0,6,0,6,0,31,128,2,24,24, + 5,2,251,192,192,192,192,192,192,192,192,192,192,128,0,0, + 64,192,192,192,192,192,192,192,192,192,192,9,16,32,11,1, + 0,30,0,99,0,98,0,112,0,56,0,94,0,199,0,195, + 128,225,128,113,128,63,0,15,0,7,0,67,0,99,0,62, + 0,7,3,3,9,1,12,198,198,198,15,14,28,16,0,0, + 7,192,24,48,49,248,98,44,198,6,204,6,204,6,204,6, + 204,6,206,38,102,76,51,152,24,48,7,192,6,8,8,6, + 0,6,112,152,24,56,120,124,0,124,9,10,20,11,1,0, + 17,128,17,0,34,0,102,0,204,0,204,0,102,0,34,0, + 17,0,17,128,10,5,10,11,0,2,255,192,0,192,0,192, + 0,192,0,192,6,1,1,8,1,5,252,8,8,8,8,0, + 8,60,66,189,149,153,153,86,60,7,1,1,11,2,13,254, + 4,5,5,8,2,9,96,240,240,240,96,8,10,10,9,1, + 2,24,24,24,24,255,24,24,24,0,255,6,8,8,8,1, + 7,120,140,140,8,16,32,68,252,7,8,8,7,255,7,60, + 102,6,28,6,6,134,120,5,5,5,7,2,12,24,48,32, + 64,192,12,15,30,13,1,251,96,192,224,192,96,192,96,192, + 96,192,96,192,96,192,113,192,127,208,92,224,64,0,64,0, + 96,0,96,0,112,0,13,17,34,14,0,253,31,248,99,96, + 195,96,195,96,195,96,227,96,115,96,63,96,3,96,3,96, + 3,96,3,96,3,96,3,96,3,96,3,96,15,248,2,3, + 3,3,1,6,192,192,192,4,5,5,5,1,251,96,96,112, + 48,192,6,8,8,8,1,7,48,240,48,48,48,48,48,252, + 4,8,8,6,1,6,96,240,240,240,240,96,0,240,8,10, + 10,11,2,0,136,140,68,98,51,51,102,68,140,136,12,14, + 28,13,0,0,24,96,120,192,24,192,25,128,27,0,27,0, + 126,0,4,96,12,224,25,96,18,96,51,240,96,96,192,240, + 13,14,28,14,0,0,48,16,240,32,48,96,48,64,48,128, + 48,128,249,0,3,120,2,152,4,24,12,48,8,32,16,72, + 49,248,12,14,28,14,1,0,112,32,152,64,24,64,56,128, + 77,128,141,0,114,0,6,96,4,224,9,96,25,96,19,240, + 32,96,96,240,8,16,16,10,1,250,24,24,16,4,12,12, + 12,24,48,96,96,192,195,195,230,124,13,20,40,14,0,0, + 16,0,28,0,14,0,3,0,0,128,0,0,2,0,3,0, + 5,0,5,128,5,128,8,128,8,192,8,192,31,192,16,96, + 16,96,32,48,32,48,248,120,13,20,40,14,0,0,0,128, + 0,192,3,160,6,0,0,0,0,0,2,0,3,0,5,0, + 5,128,5,128,8,128,8,192,8,192,31,192,16,96,16,96, + 32,48,32,48,248,120,13,20,40,14,0,0,2,0,7,0, + 13,128,8,64,16,0,0,0,2,0,3,0,5,0,5,128, + 5,128,8,128,8,192,8,192,31,192,16,96,16,96,32,48, + 32,48,248,120,13,19,38,14,0,0,4,64,14,96,19,192, + 0,0,0,0,2,0,3,0,5,0,5,128,5,128,8,128, + 8,192,8,192,31,192,16,96,16,96,32,48,32,48,248,120, + 13,18,36,14,0,0,8,64,12,96,8,64,0,0,2,0, + 3,0,5,0,5,128,5,128,8,128,8,192,8,192,31,192, + 16,96,16,96,32,48,32,48,248,120,13,20,40,14,0,0, + 2,0,7,0,7,128,7,0,0,0,0,0,2,0,3,0, + 5,0,5,128,5,128,8,128,8,192,8,192,31,192,16,96, + 16,96,32,48,32,48,248,120,18,14,42,18,0,0,7,255, + 128,1,96,128,3,96,128,2,96,0,6,96,0,6,96,0, + 7,255,0,12,98,0,8,96,0,24,96,0,16,96,0,16, + 96,64,48,96,64,249,255,128,11,19,38,12,1,251,7,192, + 24,96,32,0,96,0,64,0,192,0,192,0,192,0,192,0, + 192,0,224,0,96,128,113,192,62,0,8,0,4,0,14,0, + 6,0,24,0,11,20,40,11,0,0,32,0,56,0,28,0, + 6,0,1,0,0,0,255,192,48,64,48,64,48,0,48,0, + 48,0,63,128,49,0,48,0,48,0,48,0,48,32,48,96, + 255,192,11,20,40,11,0,0,1,0,1,128,7,0,12,0, + 0,0,0,0,255,192,48,64,48,64,48,0,48,0,48,0, + 63,128,49,0,48,0,48,0,48,0,48,32,48,96,255,192, + 11,20,40,11,0,0,4,0,14,0,27,0,48,128,0,0, + 0,0,255,192,48,64,48,64,48,0,48,0,48,0,63,128, + 49,0,48,0,48,0,48,0,48,32,48,96,255,192,11,18, + 36,11,0,0,16,128,49,128,49,128,0,0,255,192,48,64, + 48,64,48,0,48,0,48,0,63,128,49,0,48,0,48,0, + 48,0,48,32,48,96,255,192,6,20,20,7,0,0,128,192, + 112,24,0,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,252,7,20,20,7,0,0,4,14,28,48,64,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,252,7,20,20,7, + 0,0,16,56,108,134,0,0,252,48,48,48,48,48,48,48, + 48,48,48,48,48,252,7,18,18,7,0,0,66,198,198,0, + 252,48,48,48,48,48,48,48,48,48,48,48,48,252,13,14, + 28,14,0,0,127,128,176,224,48,112,48,48,48,24,48,24, + 254,24,48,24,48,24,48,24,48,48,48,112,48,224,255,128, + 15,19,38,15,0,0,2,32,7,32,9,192,0,0,0,0, + 240,126,48,24,56,24,60,24,52,24,50,24,51,24,49,152, + 48,152,48,216,48,120,48,56,48,56,252,24,12,20,40,14, + 1,0,16,0,56,0,12,0,2,0,1,0,0,0,15,128, + 48,192,32,96,96,96,192,48,192,48,192,48,192,48,192,48, + 192,48,96,96,96,64,48,128,31,0,12,20,40,14,1,0, + 1,0,1,192,3,0,12,0,0,0,0,0,15,128,48,192, + 32,96,96,96,192,48,192,48,192,48,192,48,192,48,192,48, + 96,96,96,64,48,128,31,0,12,20,40,14,1,0,6,0, + 14,0,11,0,16,128,32,0,0,0,15,128,48,192,32,96, + 96,96,192,48,192,48,192,48,192,48,192,48,192,48,96,96, + 96,64,48,128,31,0,12,19,38,14,1,0,8,128,28,64, + 55,128,0,0,0,0,15,128,48,192,32,96,96,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,64,48,128, + 31,0,12,18,36,14,1,0,16,128,24,192,16,128,0,0, + 15,128,48,192,32,96,96,96,192,48,192,48,192,48,192,48, + 192,48,192,48,96,96,96,64,48,128,31,0,7,7,7,9, + 1,3,194,102,60,24,60,102,194,12,15,30,14,1,255,15, + 48,48,224,32,224,64,224,193,176,195,48,194,48,198,48,204, + 48,200,48,88,32,112,64,112,128,207,0,128,0,15,20,40, + 15,0,0,8,0,14,0,7,0,1,128,0,64,0,0,252, + 126,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,24,48,28,96,7,192,15,20,40,15,0, + 0,0,64,0,96,1,192,3,0,0,0,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,24,48,28,96,7,192,15,20,40,15,0,0,1, + 0,3,128,6,192,12,96,0,0,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,15,18,36,15,0,0,4,32,12, + 96,12,96,0,0,252,126,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,24,48,28,96,7, + 192,14,20,40,14,0,0,0,128,0,224,1,128,6,0,0, + 0,0,0,224,124,48,48,24,32,24,96,12,64,6,192,7, + 128,3,0,3,0,3,0,3,0,3,0,3,0,15,192,11, + 14,28,12,0,0,252,0,48,0,48,0,63,128,48,192,48, + 96,48,96,48,96,48,96,48,192,63,128,48,0,48,0,252, + 0,13,17,34,13,0,0,7,128,8,192,16,96,48,96,48, + 96,48,224,51,192,55,0,54,0,55,0,51,192,48,240,48, + 56,48,24,52,24,50,16,243,224,10,17,34,11,1,0,96, + 0,48,0,16,0,8,0,4,0,0,0,0,0,30,0,99, + 0,195,0,3,0,31,0,99,0,195,0,195,0,199,0,123, + 192,10,17,34,11,1,0,3,0,6,0,12,0,8,0,16, + 0,0,0,0,0,30,0,99,0,195,0,3,0,31,0,99, + 0,195,0,195,0,199,0,123,192,10,17,34,11,1,0,24, + 0,28,0,54,0,98,0,65,0,0,0,0,0,30,0,99, + 0,195,0,3,0,31,0,99,0,195,0,195,0,199,0,123, + 192,10,15,30,11,1,0,57,0,78,0,0,0,0,0,0, + 0,30,0,99,0,195,0,3,0,31,0,99,0,195,0,195, + 0,199,0,123,192,10,15,30,11,1,0,33,0,99,0,99, + 0,0,0,0,0,30,0,99,0,195,0,3,0,31,0,99, + 0,195,0,195,0,199,0,123,192,10,16,32,11,1,0,28, + 0,60,0,60,0,24,0,0,0,0,0,30,0,99,0,195, + 0,3,0,31,0,99,0,195,0,195,0,199,0,123,192,14, + 10,20,16,1,0,30,112,99,152,195,12,131,12,31,252,115, + 0,195,0,195,0,197,132,120,248,9,15,30,10,1,251,15, + 0,49,128,96,0,192,0,192,0,192,0,192,0,192,0,99, + 0,124,0,16,0,8,0,28,0,12,0,48,0,9,17,34, + 11,1,0,48,0,112,0,24,0,8,0,4,0,0,0,0, + 0,30,0,33,0,65,128,255,128,192,0,192,0,192,0,224, + 0,113,128,62,0,9,17,34,11,1,0,3,0,6,0,6, + 0,12,0,8,0,0,0,0,0,30,0,33,0,65,128,255, + 128,192,0,192,0,192,0,224,0,113,128,62,0,9,17,34, + 11,1,0,12,0,28,0,54,0,35,0,65,0,0,0,0, + 0,30,0,33,0,65,128,255,128,192,0,192,0,192,0,224, + 0,113,128,62,0,9,15,30,11,1,0,33,0,49,128,33, + 0,0,0,0,0,30,0,33,0,65,128,255,128,192,0,192, + 0,192,0,224,0,113,128,62,0,6,17,17,6,0,0,192, + 96,32,48,16,0,0,48,240,48,48,48,48,48,48,48,252, + 7,17,17,6,0,0,12,14,24,16,32,0,0,48,240,48, + 48,48,48,48,48,48,252,7,17,17,6,0,0,48,56,104, + 196,130,0,0,48,240,48,48,48,48,48,48,48,252,7,15, + 15,6,0,0,198,198,198,0,0,48,240,48,48,48,48,48, + 48,48,252,9,16,32,11,1,0,48,0,91,128,12,0,50, + 0,3,0,1,0,31,128,99,128,67,128,193,128,193,128,193, + 128,193,0,227,0,98,0,60,0,13,15,30,13,0,0,14, + 64,19,128,0,0,0,0,0,0,113,192,182,96,56,96,48, + 96,48,96,48,96,48,96,48,96,48,96,253,248,10,17,34, + 12,1,0,48,0,48,0,24,0,12,0,4,0,0,0,0, + 0,30,0,35,128,65,128,192,192,192,192,192,192,192,192,224, + 128,113,0,30,0,10,17,34,12,1,0,3,0,3,0,6, + 0,4,0,8,0,0,0,0,0,30,0,35,128,65,128,192, + 192,192,192,192,192,192,192,224,128,113,0,30,0,10,17,34, + 12,1,0,12,0,30,0,18,0,33,0,64,128,0,0,0, + 0,30,0,35,128,65,128,192,192,192,192,192,192,192,192,224, + 128,113,0,30,0,10,15,30,12,1,0,56,128,71,0,0, + 0,0,0,0,0,30,0,35,128,65,128,192,192,192,192,192, + 192,192,192,224,128,113,0,30,0,10,15,30,12,1,0,49, + 128,49,128,33,0,0,0,0,0,30,0,35,128,65,128,192, + 192,192,192,192,192,192,192,224,128,113,0,30,0,8,7,7, + 9,1,3,24,24,0,255,0,24,24,10,12,24,12,1,255, + 0,64,30,192,35,128,67,192,194,192,196,192,200,192,216,192, + 240,128,113,0,222,0,128,0,11,17,34,12,1,0,48,0, + 24,0,24,0,12,0,4,0,0,0,0,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,17,34,12,1,0,3,0,3,128,6,0,4,0,8,0, + 0,0,0,0,97,128,231,128,97,128,97,128,97,128,97,128, + 97,128,97,128,103,160,57,192,11,17,34,12,1,0,12,0, + 14,0,26,0,49,0,32,128,0,0,0,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,15,30,12,1,0,49,128,49,128,49,128,0,0,0,0, + 97,128,231,128,97,128,97,128,97,128,97,128,97,128,97,128, + 103,160,57,192,12,22,44,11,255,251,0,192,0,192,1,128, + 3,0,2,0,0,0,0,0,124,240,16,32,24,64,24,64, + 12,192,12,128,4,128,7,0,3,0,3,0,2,0,6,0, + 4,0,120,0,240,0,11,22,44,12,0,251,48,0,240,0, + 48,0,48,0,48,0,48,0,48,0,51,128,60,192,56,224, + 48,96,48,96,48,96,48,96,48,64,56,128,55,0,48,0, + 48,0,48,0,48,0,252,0,12,20,40,11,255,251,12,96, + 12,96,8,64,0,0,0,0,124,240,16,32,24,64,24,64, + 12,192,12,128,4,128,7,0,3,0,3,0,2,0,6,0, + 4,0,120,0,240,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=10 h=22 x= 2 y= 8 dx=12 dy= 0 ascent=18 len=44 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14n[445] U8G_SECTION(".progmem.u8g_font_gdr14n") = { + 0,35,33,244,248,14,0,0,0,0,42,57,0,18,252,14, + 0,9,10,20,10,1,8,24,0,24,0,137,0,235,128,60, + 0,60,0,235,0,137,0,24,0,24,0,8,8,8,9,1, + 2,24,24,24,255,24,24,24,24,4,6,6,5,0,253,112, + 240,48,48,32,64,6,1,1,8,1,5,252,2,3,3,5, + 2,0,192,192,192,9,22,44,11,1,252,0,128,1,128,1, + 0,3,0,3,0,2,0,6,0,6,0,12,0,12,0,8, + 0,24,0,24,0,16,0,48,0,48,0,96,0,96,0,64, + 0,192,0,192,0,128,0,9,14,28,11,1,0,28,0,39, + 0,99,0,67,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,0,97,0,98,0,28,0,8,14,14,11,2,0,24, + 120,152,24,24,24,24,24,24,24,24,24,24,255,8,14,14, + 11,1,0,60,103,195,131,3,6,6,12,24,24,48,97,193, + 255,9,14,28,12,1,0,30,0,103,0,195,0,3,0,2, + 0,4,0,30,0,3,0,1,128,1,128,1,128,1,128,195, + 0,60,0,10,14,28,11,0,0,3,0,7,0,7,0,11, + 0,27,0,19,0,35,0,99,0,67,0,255,192,3,0,3, + 0,3,0,15,192,9,14,28,11,0,0,0,128,63,0,32, + 0,32,0,96,0,126,0,67,0,1,128,1,128,1,128,1, + 128,1,0,195,0,60,0,9,14,28,11,1,0,3,0,12, + 0,48,0,32,0,96,0,222,0,227,0,193,128,193,128,193, + 128,193,128,97,0,99,0,30,0,9,13,26,11,1,0,127, + 128,129,0,129,0,3,0,2,0,6,0,4,0,12,0,8, + 0,24,0,24,0,48,0,32,0,9,14,28,11,1,0,62, + 0,71,0,195,0,195,0,195,0,118,0,30,0,39,0,99, + 128,193,128,193,128,193,128,99,0,60,0,9,14,28,11,1, + 0,30,0,99,0,67,0,193,128,193,128,193,128,193,128,99, + 128,61,128,1,0,3,0,6,0,8,0,112,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=24 x= 2 y=12 dx=20 dy= 0 ascent=19 len=57 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14r[2791] U8G_SECTION(".progmem.u8g_font_gdr14r") = { + 0,35,33,244,248,14,3,95,7,136,32,127,251,19,251,18, + 251,0,0,0,5,0,0,2,17,17,6,2,0,64,192,192, + 192,192,192,192,192,192,192,192,192,128,0,192,192,192,6,8, + 8,10,2,9,204,204,204,204,204,204,204,140,10,13,26,11, + 1,1,12,128,9,128,9,0,9,0,127,192,19,0,18,0, + 50,0,255,128,36,0,100,0,68,0,76,0,9,18,36,11, + 1,254,12,0,12,0,63,128,109,128,205,0,204,0,236,0, + 124,0,63,0,15,0,13,128,13,128,141,128,205,128,239,0, + 126,0,12,0,12,0,14,14,28,16,1,0,56,24,72,48, + 204,96,204,64,204,192,205,128,75,0,114,56,6,76,12,204, + 8,204,16,204,48,200,96,112,14,16,32,16,1,0,15,0, + 25,128,49,128,49,128,49,0,51,0,60,0,60,252,124,112, + 102,48,199,48,195,176,193,224,192,224,96,176,63,28,2,8, + 8,6,2,9,192,192,192,192,192,192,192,128,6,22,22,7, + 1,252,12,24,16,32,96,96,64,192,192,192,192,192,192,192, + 192,64,96,96,32,48,24,12,6,22,22,7,0,252,192,96, + 48,16,24,24,8,12,12,12,12,12,12,12,12,8,24,24, + 16,32,96,192,9,10,20,10,1,8,24,0,24,0,137,0, + 235,128,60,0,60,0,235,0,137,0,24,0,24,0,8,8, + 8,9,1,2,24,24,24,255,24,24,24,24,4,6,6,5, + 0,253,112,240,48,48,32,64,6,1,1,8,1,5,252,2, + 3,3,5,2,0,192,192,192,9,22,44,11,1,252,0,128, + 1,128,1,0,3,0,3,0,2,0,6,0,6,0,12,0, + 12,0,8,0,24,0,24,0,16,0,48,0,48,0,96,0, + 96,0,64,0,192,0,192,0,128,0,9,14,28,11,1,0, + 28,0,39,0,99,0,67,128,193,128,193,128,193,128,193,128, + 193,128,193,128,193,0,97,0,98,0,28,0,8,14,14,11, + 2,0,24,120,152,24,24,24,24,24,24,24,24,24,24,255, + 8,14,14,11,1,0,60,103,195,131,3,6,6,12,24,24, + 48,97,193,255,9,14,28,12,1,0,30,0,103,0,195,0, + 3,0,2,0,4,0,30,0,3,0,1,128,1,128,1,128, + 1,128,195,0,60,0,10,14,28,11,0,0,3,0,7,0, + 7,0,11,0,27,0,19,0,35,0,99,0,67,0,255,192, + 3,0,3,0,3,0,15,192,9,14,28,11,0,0,0,128, + 63,0,32,0,32,0,96,0,126,0,67,0,1,128,1,128, + 1,128,1,128,1,0,195,0,60,0,9,14,28,11,1,0, + 3,0,12,0,48,0,32,0,96,0,222,0,227,0,193,128, + 193,128,193,128,193,128,97,0,99,0,30,0,9,13,26,11, + 1,0,127,128,129,0,129,0,3,0,2,0,6,0,4,0, + 12,0,8,0,24,0,24,0,48,0,32,0,9,14,28,11, + 1,0,62,0,71,0,195,0,195,0,195,0,118,0,30,0, + 39,0,99,128,193,128,193,128,193,128,99,0,60,0,9,14, + 28,11,1,0,30,0,99,0,67,0,193,128,193,128,193,128, + 193,128,99,128,61,128,1,0,3,0,6,0,8,0,112,0, + 2,11,11,5,2,0,192,192,192,0,0,0,0,0,192,192, + 192,4,14,14,5,0,253,48,48,48,0,0,0,0,0,112, + 240,48,48,32,64,8,7,7,10,1,3,1,15,120,192,112, + 30,3,8,4,4,10,1,4,255,0,0,255,8,7,7,10, + 1,3,192,120,15,3,30,240,128,8,17,17,10,1,0,62, + 103,195,195,3,3,6,12,12,24,24,24,16,0,24,24,24, + 17,19,57,19,1,252,1,240,0,6,28,0,24,6,0,48, + 3,0,32,3,0,97,211,128,66,49,128,196,49,128,204,49, + 128,204,49,128,204,49,128,204,49,0,236,51,0,102,114,0, + 99,156,0,48,0,0,56,2,0,14,15,0,3,240,0,13, + 14,28,14,0,0,2,0,3,0,5,0,5,128,5,128,8, + 128,8,192,8,192,31,192,16,96,16,96,32,48,32,48,248, + 120,11,14,28,12,0,0,127,0,177,192,48,192,48,192,48, + 192,49,128,63,128,49,192,48,224,48,96,48,96,48,96,48, + 192,255,128,11,14,28,12,1,0,7,192,24,96,32,0,96, + 0,64,0,192,0,192,0,192,0,192,0,192,0,96,0,96, + 32,56,64,15,128,13,14,28,14,0,0,127,128,176,224,48, + 112,48,48,48,24,48,24,48,24,48,24,48,24,48,24,48, + 48,48,112,48,224,255,128,11,14,28,11,0,0,255,192,48, + 64,48,64,48,0,48,0,48,0,63,128,49,0,48,0,48, + 0,48,0,48,32,48,96,255,192,10,14,28,11,0,0,255, + 192,48,64,48,64,48,0,48,0,48,0,63,128,49,0,48, + 0,48,0,48,0,48,0,48,0,252,0,11,14,28,13,1, + 0,15,128,16,192,32,0,96,0,192,0,192,0,192,0,195, + 224,192,192,192,192,96,192,96,192,48,192,31,0,15,14,28, + 15,0,0,252,126,48,24,48,24,48,24,48,24,48,24,63, + 248,48,24,48,24,48,24,48,24,48,24,48,24,252,126,6, + 14,14,7,0,0,252,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,18,36,7,254,252,31,128,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,4,0,72,0,240,0,13,14,28, + 13,0,0,252,240,48,64,48,128,49,0,50,0,54,0,60, + 0,54,0,54,0,51,0,49,128,48,192,48,96,252,56,11, + 14,28,11,0,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,32,48,64,255, + 192,17,14,42,19,1,0,240,7,0,112,14,0,112,14,0, + 120,30,0,104,22,0,108,22,0,108,38,0,102,38,0,102, + 102,0,99,70,0,99,198,0,97,134,0,97,134,0,241,15, + 128,15,14,28,15,0,0,240,126,48,24,56,24,60,24,52, + 24,50,24,51,24,49,152,48,152,48,216,48,120,48,56,48, + 56,252,24,12,14,28,14,1,0,15,128,48,192,32,96,96, + 96,192,48,192,48,192,48,192,48,192,48,192,48,96,96,96, + 64,48,128,31,0,11,14,28,12,0,0,127,128,176,192,48, + 96,48,96,48,96,48,96,48,192,63,0,48,0,48,0,48, + 0,48,0,48,0,252,0,14,17,34,14,1,253,15,128,48, + 192,32,96,96,96,192,48,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,31,0,1,128,0,196,0,56,13, + 14,28,13,0,0,127,0,177,128,48,192,48,192,48,192,48, + 128,49,0,62,0,51,0,49,0,49,128,48,192,48,192,252, + 120,9,14,28,11,1,0,62,0,99,0,192,0,192,0,224, + 0,120,0,62,0,15,0,3,128,1,128,129,128,129,0,195, + 0,124,0,12,14,28,13,0,0,255,240,134,16,134,16,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,31,128,15,14,28,15,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,14,14,28,15,0,0,248,60,48, + 24,48,16,24,16,24,48,24,32,12,96,12,64,4,64,6, + 192,6,128,3,128,3,128,1,0,19,14,42,20,0,0,248, + 67,224,48,96,128,48,96,128,48,224,128,16,177,128,16,177, + 0,25,145,0,25,25,0,25,25,0,11,11,0,14,14,0, + 14,14,0,14,6,0,4,6,0,14,14,28,14,0,0,252, + 248,48,48,24,96,28,192,12,128,7,128,3,0,3,128,5, + 128,12,192,24,96,16,112,48,48,248,124,14,14,28,14,0, + 0,224,124,48,48,24,32,24,96,12,64,6,192,7,128,3, + 0,3,0,3,0,3,0,3,0,3,0,15,192,10,14,28, + 12,1,0,127,192,65,128,129,128,3,0,6,0,6,0,12, + 0,28,0,24,0,48,0,48,0,96,64,192,64,255,192,5, + 22,22,7,1,252,248,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,248,9,22,44,11,1, + 252,128,0,192,0,192,0,64,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,8,0,12,0,4,0,4,0,6, + 0,2,0,3,0,3,0,1,0,1,128,0,128,5,22,22, + 8,1,252,248,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,248,9,11,22,11,1,6,8, + 0,12,0,28,0,22,0,54,0,34,0,35,0,99,0,65, + 128,65,128,129,128,9,1,2,11,1,253,255,128,5,5,5, + 7,0,12,224,96,48,16,8,10,10,20,11,1,0,30,0, + 99,0,195,0,3,0,31,0,99,0,195,0,195,0,199,0, + 123,192,10,17,34,12,1,0,96,0,224,0,96,0,96,0, + 96,0,96,0,96,0,103,0,121,128,113,192,96,192,96,192, + 96,192,96,192,96,128,113,0,30,0,9,10,20,10,1,0, + 15,0,49,128,96,0,192,0,192,0,192,0,192,0,96,0, + 113,128,30,0,11,17,34,12,1,0,1,128,7,128,1,128, + 1,128,1,128,1,128,1,128,31,128,35,128,65,128,193,128, + 193,128,193,128,193,128,225,128,103,160,57,192,9,10,20,11, + 1,0,30,0,33,0,65,128,255,128,192,0,192,0,192,0, + 224,0,113,128,62,0,9,17,34,7,0,0,7,128,9,0, + 16,0,48,0,48,0,48,0,48,0,126,0,176,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,252,0,12,15, + 30,12,0,251,31,48,49,192,96,192,96,192,96,192,49,128, + 31,0,24,0,56,0,31,192,96,112,192,48,192,48,96,96, + 63,128,13,17,34,13,0,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,96,56,96,48,96,48,96, + 48,96,48,96,48,96,48,96,253,248,6,15,15,6,0,0, + 48,48,48,0,0,48,240,48,48,48,48,48,48,48,252,7, + 20,20,6,253,251,6,6,6,0,0,6,30,6,6,6,6, + 6,6,6,6,6,6,4,8,240,12,17,34,12,0,0,48, + 0,240,0,48,0,48,0,48,0,48,0,48,0,49,224,49, + 128,51,0,52,0,60,0,54,0,51,0,49,128,48,192,248, + 240,6,17,17,6,0,0,48,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,10,30,20,0,0,113,199, + 128,182,104,192,56,112,192,48,96,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,253,251,240,13,10,20,13, + 0,0,113,192,182,96,56,96,48,96,48,96,48,96,48,96, + 48,96,48,96,253,248,10,10,20,12,1,0,30,0,35,128, + 65,128,192,192,192,192,192,192,192,192,224,128,113,0,30,0, + 11,15,30,12,0,251,115,128,188,192,56,224,48,96,48,96, + 48,96,48,96,48,64,56,192,55,0,48,0,48,0,48,0, + 48,0,252,0,11,15,30,12,1,251,30,128,35,128,97,128, + 193,128,193,128,193,128,193,128,225,128,99,128,61,128,1,128, + 1,128,1,128,1,128,7,224,9,10,20,9,0,0,51,128, + 252,128,56,0,48,0,48,0,48,0,48,0,48,0,48,0, + 252,0,7,10,10,9,1,0,124,204,192,224,120,30,6,134, + 134,248,8,14,14,8,0,0,16,48,48,48,127,176,48,48, + 48,48,48,48,49,30,11,10,20,12,1,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,10,20,11,0,0,249,224,32,64,48,128,48,128,25,128, + 25,0,9,0,14,0,6,0,4,0,16,10,20,16,0,0, + 248,143,33,130,49,196,49,196,19,100,26,108,26,40,12,56, + 12,56,12,16,11,10,20,12,0,0,249,224,48,128,25,0, + 15,0,6,0,14,0,11,0,17,128,32,192,241,224,12,15, + 30,11,255,251,124,240,16,32,24,64,24,64,12,192,12,128, + 4,128,7,0,3,0,3,0,2,0,6,0,4,0,120,0, + 240,0,8,10,10,10,1,0,255,131,134,12,8,24,48,97, + 65,255,6,22,22,8,1,252,4,24,16,48,48,48,56,24, + 24,24,48,240,24,24,24,24,48,48,48,48,24,4,2,24, + 24,5,2,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,6,22,22,8, + 1,252,128,96,48,48,48,48,96,96,96,96,60,16,32,96, + 96,112,48,48,48,32,96,128,10,4,8,11,1,5,48,64, + 124,128,159,0,135,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=22 h=27 x= 3 y=16 dx=23 dy= 0 ascent=23 len=66 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17[7056] U8G_SECTION(".progmem.u8g_font_gdr17") = { + 0,40,38,242,247,17,4,64,9,46,32,255,250,23,249,21, + 250,0,0,0,6,0,0,3,21,21,7,2,255,96,224,224, + 224,224,96,96,96,96,96,64,64,64,64,64,0,0,96,224, + 224,192,7,9,9,11,2,11,102,230,230,198,198,70,70,70, + 70,12,15,30,13,1,2,6,96,6,96,4,64,4,64,12, + 192,63,240,8,128,25,128,17,0,255,224,51,0,34,0,34, + 0,102,0,68,0,11,20,40,12,0,254,6,0,6,0,15, + 128,55,224,102,64,102,0,102,0,118,0,62,0,31,128,7, + 192,6,224,6,96,134,96,198,96,230,192,127,192,31,0,6, + 0,6,0,17,16,48,19,1,0,56,6,0,108,12,0,198, + 24,0,198,24,0,198,48,0,198,96,0,198,192,0,108,192, + 0,57,158,0,3,51,0,6,97,128,6,97,128,12,97,128, + 24,97,128,48,51,0,32,30,0,17,19,57,18,1,0,3, + 192,0,12,224,0,8,96,0,24,96,0,24,96,0,24,192, + 0,29,192,0,31,128,0,14,0,0,62,63,128,119,29,0, + 103,12,0,195,140,0,193,204,0,193,232,0,192,248,0,96, + 120,0,112,222,0,31,7,128,3,9,9,7,2,11,96,224, + 224,192,192,64,64,64,64,6,25,25,9,2,252,4,8,24, + 48,32,96,96,96,192,192,192,192,192,192,192,192,192,224,96, + 96,96,48,24,8,4,6,25,25,9,1,252,128,64,96,48, + 24,24,24,24,12,12,12,12,12,12,12,12,12,24,24,24, + 48,48,96,64,128,10,12,24,12,1,9,12,0,12,0,140, + 0,204,192,119,128,30,0,30,0,119,128,204,192,12,128,12, + 0,12,0,10,9,18,11,1,3,12,0,12,0,12,0,12, + 0,255,192,12,0,12,0,12,0,12,0,4,7,7,6,1, + 252,112,240,48,48,32,96,64,7,1,1,9,1,6,254,3, + 4,4,6,2,255,96,224,224,192,11,25,50,13,1,252,0, + 96,0,96,0,192,0,192,1,128,1,128,1,128,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,224,0,192,0,192, + 0,11,16,32,13,1,0,15,0,49,128,96,192,64,192,64, + 224,192,96,192,96,192,96,192,96,192,96,192,96,192,64,96, + 64,96,192,49,128,30,0,9,16,32,13,2,0,12,0,60, + 0,252,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,128,10,16,32, + 13,1,0,15,0,49,128,96,192,96,192,0,192,0,192,1, + 128,1,128,3,0,6,0,12,0,28,0,24,0,48,64,96, + 64,255,192,10,16,32,13,1,0,30,0,99,0,97,128,193, + 128,1,128,3,0,6,0,31,0,3,128,1,192,0,192,0, + 192,0,192,1,128,193,128,62,0,11,16,32,13,1,0,1, + 128,3,128,7,128,5,128,13,128,25,128,17,128,49,128,97, + 128,65,128,255,224,1,128,1,128,1,128,1,128,15,224,10, + 16,32,13,1,0,63,192,32,0,32,0,32,0,96,0,96, + 0,127,0,67,128,1,192,0,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,3,128,14,0,24, + 0,48,0,96,0,96,0,207,0,241,192,192,224,192,96,192, + 96,192,96,96,96,96,64,48,128,31,0,11,16,32,13,1, + 0,127,224,64,192,128,192,0,128,1,128,1,128,3,0,3, + 0,6,0,6,0,4,0,12,0,12,0,24,0,24,0,48, + 0,11,16,32,13,1,0,31,0,113,128,224,192,224,192,224, + 192,241,128,63,0,15,128,51,192,96,224,192,96,192,96,192, + 96,192,64,96,128,31,0,11,17,34,13,1,255,31,0,49, + 128,96,192,192,192,192,96,192,96,192,96,224,96,113,224,30, + 96,0,224,0,192,0,192,1,128,3,0,14,0,48,0,3, + 14,14,6,2,255,64,224,224,224,0,0,0,0,0,0,96, + 224,224,192,4,17,17,6,1,252,32,112,112,112,0,0,0, + 0,0,0,112,240,48,48,32,96,64,10,9,18,12,1,3, + 0,192,3,192,31,0,120,0,224,0,248,0,30,0,7,192, + 0,192,10,5,10,12,1,5,255,192,0,0,0,0,0,0, + 255,192,10,9,18,12,1,3,192,0,248,0,30,0,7,192, + 1,192,7,128,60,0,240,0,128,0,10,20,40,12,1,255, + 31,0,97,128,192,192,192,192,192,192,0,192,1,128,1,128, + 3,0,6,0,6,0,12,0,12,0,12,0,8,0,0,0, + 12,0,28,0,28,0,24,0,20,22,66,22,1,251,0,252, + 0,3,7,0,12,1,192,24,0,192,48,0,96,32,244,96, + 97,28,112,67,12,48,194,12,48,198,12,48,198,12,48,198, + 12,48,198,12,32,198,12,96,227,12,64,99,60,128,97,199, + 0,48,0,0,56,0,0,28,0,64,7,3,128,1,252,0, + 16,17,34,16,0,0,0,128,1,128,3,128,3,192,2,192, + 6,192,6,96,4,96,12,112,12,48,15,240,24,24,24,24, + 16,24,48,12,48,12,248,63,12,17,34,14,1,0,127,128, + 176,192,48,96,48,96,48,96,48,64,49,128,63,192,48,224, + 48,96,48,48,48,48,48,48,48,48,48,96,48,224,255,128, + 12,17,34,14,1,0,7,224,24,112,48,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,48,16,24,32,15,192,14,17,34,16,1,0,127,128, + 176,224,48,48,48,24,48,24,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,24,48,24,48,48,48,96,255,128, + 12,17,34,13,1,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,11,17,34,13,1,0,255,224, + 48,32,48,32,48,0,48,0,48,0,48,0,63,128,49,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 14,17,34,16,1,0,3,240,12,56,16,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,252,192,24,192,24,96,24, + 96,24,48,24,24,24,7,224,16,17,34,18,1,0,252,63, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,63,252, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,252,63, + 6,17,17,8,1,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,10,22,44,8,253,251,31,192,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,2,0,6,0,68,0,248,0,15,17,34,16,1,0,252, + 252,48,48,48,96,48,192,49,128,51,0,54,0,52,0,62, + 0,54,0,51,0,49,128,49,192,48,224,48,112,48,56,252, + 30,12,17,34,13,1,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,16,48,48,255,224,20,17,51,22,1,0,240, + 1,224,56,1,192,56,3,192,44,2,192,44,6,192,44,6, + 192,38,4,192,38,12,192,35,8,192,35,24,192,35,152,192, + 33,144,192,33,176,192,32,224,192,32,224,192,32,64,192,248, + 67,240,16,17,34,18,1,0,240,63,48,12,56,12,60,12, + 52,12,54,12,51,12,51,12,49,140,48,204,48,204,48,108, + 48,60,48,60,48,28,48,28,252,12,14,17,34,16,1,0, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,8,96,24,96,16,48,48,24,96, + 15,128,12,17,34,14,1,0,127,128,176,224,48,96,48,48, + 48,48,48,48,48,48,48,96,48,192,63,128,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,16,21,42,16,1,252, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,96,24,48,48,24,96, + 15,192,0,192,0,96,0,49,0,14,14,17,34,15,1,0, + 127,0,177,192,48,96,48,96,48,96,48,96,48,192,49,192, + 63,0,51,0,49,128,49,128,48,192,48,224,48,96,48,112, + 252,60,10,17,34,13,2,0,31,0,99,128,193,0,192,0, + 224,0,240,0,124,0,126,0,31,128,7,128,1,192,0,192, + 0,192,128,192,128,128,193,0,126,0,14,17,34,15,0,0, + 255,252,131,4,131,4,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 15,192,16,17,34,18,1,0,252,63,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,24,24,24,12,48,7,224,17,17,51,18,0,0, + 252,15,128,48,6,0,24,6,0,24,4,0,24,12,0,12, + 12,0,12,8,0,14,24,0,6,24,0,6,16,0,3,48, + 0,3,32,0,3,96,0,1,224,0,1,192,0,1,192,0, + 0,128,0,22,17,51,23,0,0,252,16,124,48,16,16,48, + 56,16,24,56,48,24,56,48,24,108,48,24,108,32,24,76, + 32,12,198,96,12,198,96,12,134,96,13,131,64,7,131,64, + 7,3,192,7,1,192,7,1,192,6,1,128,16,17,34,17, + 0,0,124,63,56,28,24,24,12,48,14,48,7,96,3,192, + 3,192,1,192,3,192,3,224,6,112,12,48,12,24,24,28, + 56,14,252,63,15,17,34,16,0,0,240,62,56,12,24,24, + 28,24,14,48,6,32,7,96,3,192,3,192,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,7,224,12,17,34,14, + 1,0,127,240,64,96,64,224,128,192,1,192,3,128,3,0, + 7,0,6,0,14,0,28,0,24,0,56,0,48,16,112,16, + 224,48,255,240,6,25,25,8,2,252,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,252,11,25,50,13,1,252,128,0,192,0,64,0,96, + 0,96,0,48,0,48,0,48,0,24,0,24,0,8,0,12, + 0,12,0,6,0,6,0,2,0,3,0,3,0,1,128,1, + 128,1,128,0,192,0,192,0,64,0,96,6,25,25,9,1, + 252,252,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,252,11,13,26,13,1,7, + 6,0,14,0,14,0,15,0,27,0,19,0,17,128,49,128, + 33,192,96,192,96,192,64,96,192,64,11,1,2,13,1,253, + 255,224,6,6,6,9,0,14,96,224,48,24,8,4,11,12, + 24,12,1,0,31,0,97,128,225,128,1,128,1,128,31,128, + 121,128,225,128,193,128,193,128,199,128,121,224,13,20,40,14, + 0,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,54,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,16,48,48,56,96,15,128,10,12,24,12,1,0, + 15,192,48,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,96,64,48,192,31,0,13,20,40,14,1,0,0,96, + 1,224,0,96,0,96,0,96,0,96,0,96,0,96,15,224, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,120,30,96,10,12,24,12,1,0,15,0,49,128, + 96,192,64,192,255,192,192,0,192,0,192,0,224,0,96,64, + 48,128,31,0,10,20,40,8,1,0,3,192,12,128,24,0, + 16,0,48,0,48,0,48,0,48,0,255,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,13,18,36,13,0,250,15,24,48,240,32,96,96,96, + 96,96,96,96,56,192,31,0,24,0,56,0,63,128,31,240, + 48,120,192,24,192,24,192,16,112,96,31,128,14,20,40,15, + 1,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,50,48,52,48,56,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,252,6,18,18,7,1,0, + 48,112,48,0,0,0,48,240,48,48,48,48,48,48,48,48, + 48,252,8,24,24,7,253,250,3,7,3,0,0,0,3,15, + 3,3,3,3,3,3,3,3,3,3,3,3,2,2,4,248, + 13,20,40,14,1,0,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,240,48,192,49,128,51,0,52,0, + 60,0,54,0,51,0,49,128,48,192,48,224,248,120,6,20, + 20,7,1,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,12,36,21,1,0,113,195, + 128,182,108,192,56,112,192,56,112,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,48,96,192,48,96,192,253, + 251,240,14,12,24,15,1,0,113,224,178,48,52,48,56,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,252, + 12,12,24,14,1,0,15,128,48,192,96,96,64,112,192,48, + 192,48,192,48,192,48,224,32,96,96,48,192,31,0,12,18, + 36,14,1,250,113,192,182,224,56,96,48,48,48,48,48,48, + 48,48,48,48,48,32,48,96,56,64,55,128,48,0,48,0, + 48,0,48,0,48,0,252,0,13,18,36,14,1,250,15,32, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,96,30,96,0,96,0,96,0,96,0,96,0,96, + 1,248,10,12,24,11,1,0,51,192,244,128,56,128,56,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 8,12,12,10,1,0,62,70,194,224,240,124,30,7,131,131, + 198,124,9,17,34,9,0,0,16,0,48,0,48,0,48,0, + 48,0,255,128,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,0,30,128,14,12,24,14,0,0, + 48,48,240,240,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,112,56,188,31,48,13,12,24,13,0,0,248,120, + 48,48,48,32,24,96,24,64,28,64,12,192,12,128,7,128, + 7,0,7,0,2,0,19,12,36,19,0,0,248,99,224,48, + 96,128,48,96,128,48,241,128,24,177,128,25,177,0,25,153, + 0,13,27,0,15,26,0,14,14,0,6,14,0,4,4,0, + 13,12,24,14,0,0,252,248,56,96,24,64,12,128,7,128, + 7,0,7,128,13,128,8,192,16,96,48,112,248,248,14,18, + 36,13,255,250,124,60,24,24,24,16,12,48,12,32,14,32, + 6,96,6,64,3,192,3,128,3,128,1,128,1,0,3,0, + 2,0,6,0,124,0,240,0,10,12,24,12,1,0,127,192, + 65,128,131,128,3,0,6,0,12,0,28,0,24,0,48,0, + 112,64,96,64,255,192,6,25,25,9,2,252,4,8,24,48, + 48,48,48,24,24,24,24,48,224,56,24,24,24,24,48,48, + 48,48,16,24,4,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,6,25,25,9,1,252,128,96,32,48, + 48,48,48,96,96,96,96,48,28,48,96,96,96,96,48,48, + 48,48,96,64,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,6,0,0,3,19,19,7,2,249, + 96,224,224,192,64,64,64,64,64,96,96,96,96,224,224,224, + 224,224,192,11,17,34,13,1,255,6,0,6,0,7,128,31, + 224,38,64,102,0,198,0,198,0,198,0,198,0,198,0,230, + 32,118,64,63,128,15,0,6,0,6,0,11,16,32,13,1, + 0,7,192,24,224,16,64,48,64,48,0,48,0,48,0,48, + 0,255,0,48,0,48,0,48,0,48,32,32,32,96,96,255, + 224,9,8,16,13,2,4,128,128,93,0,119,0,99,0,99, + 0,119,0,93,0,128,128,14,16,32,13,255,0,240,124,48, + 48,24,96,28,96,12,192,14,192,7,128,3,128,3,0,63, + 240,3,0,3,0,3,0,3,0,3,0,15,192,2,27,27, + 6,2,251,192,192,192,192,192,192,192,192,192,192,192,192,128, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,31,0,35,128,97,0,96,0,112,0,60,0, + 127,0,199,128,195,192,193,192,224,192,120,192,63,128,15,0, + 3,128,65,128,65,128,97,0,62,0,9,3,6,11,1,15, + 193,128,193,128,193,128,17,17,51,19,1,0,3,224,0,12, + 24,0,48,6,0,48,246,0,99,27,0,102,1,0,204,1, + 128,204,1,128,204,1,128,204,1,128,204,1,128,70,19,0, + 103,19,0,49,230,0,48,6,0,12,24,0,3,224,0,7, + 8,8,7,0,8,56,76,140,60,108,108,126,126,10,12,24, + 13,1,0,8,64,24,192,16,128,49,128,99,0,230,0,231, + 0,99,0,49,128,16,128,8,192,8,64,11,6,12,13,1, + 2,255,224,0,96,0,96,0,96,0,96,0,96,7,1,1, + 9,1,6,254,9,9,18,10,0,10,62,0,99,0,255,128, + 146,128,156,128,152,128,213,128,107,0,62,0,9,1,2,13, + 2,16,255,128,6,6,6,10,2,10,56,76,204,204,200,112, + 10,12,24,11,1,2,12,0,12,0,12,0,12,0,255,192, + 12,0,12,0,12,0,12,0,0,0,0,0,255,128,7,10, + 10,9,1,8,60,70,198,6,12,24,16,32,66,254,8,10, + 10,9,255,8,30,35,67,2,14,3,3,3,198,60,5,6, + 6,9,3,14,24,56,48,96,192,128,14,18,36,14,0,250, + 48,48,240,112,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,240,63,188,55,56,48,0,48,0,48,0,48,0, + 56,0,48,0,13,20,40,15,1,253,31,248,49,224,97,224, + 193,224,193,224,193,224,193,224,97,224,113,224,31,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 7,248,2,3,3,4,1,8,192,192,192,5,6,6,6,0, + 250,48,32,56,88,16,224,7,10,10,9,1,8,24,248,24, + 24,24,24,24,24,24,126,6,8,8,8,1,8,56,76,204, + 204,204,200,112,252,10,12,24,13,2,0,132,0,198,0,98, + 0,35,0,49,128,24,192,25,192,49,128,35,0,98,0,198, + 0,132,0,14,16,32,16,1,0,48,24,240,56,48,48,48, + 96,48,192,48,192,49,128,255,0,3,24,6,56,12,88,12, + 88,24,152,17,252,48,24,96,60,13,16,32,15,1,0,48, + 8,240,16,48,48,48,32,48,96,48,192,48,128,253,128,3, + 112,2,152,7,24,4,16,8,48,24,96,16,200,49,248,14, + 16,32,16,1,0,56,24,204,16,12,48,56,32,12,64,12, + 192,140,128,113,128,3,24,2,56,6,88,12,88,8,152,25, + 252,16,24,48,60,10,19,38,12,1,249,6,0,14,0,14, + 0,12,0,2,0,6,0,6,0,6,0,12,0,28,0,56, + 0,112,0,96,0,192,0,192,192,192,192,192,192,97,128,62, + 0,16,23,46,16,0,0,12,0,30,0,7,0,1,128,0, + 64,0,0,0,128,1,128,3,128,3,192,2,192,6,192,6, + 96,4,96,12,112,12,48,15,240,24,24,24,24,16,24,48, + 12,48,12,248,63,16,23,46,16,0,0,0,48,0,112,1, + 192,3,128,2,0,0,0,0,128,1,128,3,128,3,192,2, + 192,6,192,6,96,4,96,12,112,12,48,15,240,24,24,24, + 24,16,24,48,12,48,12,248,63,16,22,44,16,0,0,3, + 128,6,192,12,32,8,16,0,0,0,128,1,128,3,128,3, + 192,2,192,6,192,6,96,4,96,12,112,12,48,15,240,24, + 24,24,24,16,24,48,12,48,12,248,63,16,22,44,16,0, + 0,0,16,7,176,9,224,16,192,0,0,0,128,1,128,3, + 128,3,192,2,192,6,192,6,96,4,96,12,112,12,48,15, + 240,24,24,24,24,16,24,48,12,48,12,248,63,16,21,42, + 16,0,0,12,48,12,48,8,32,0,0,0,128,1,128,3, + 128,3,192,2,192,6,192,6,96,4,96,12,112,12,48,15, + 240,24,24,24,24,16,24,48,12,48,12,248,63,16,23,46, + 16,0,0,1,192,3,96,3,96,3,192,1,128,0,0,0, + 128,1,128,3,128,3,192,2,192,6,192,6,96,4,96,12, + 112,12,48,15,240,24,24,24,24,16,24,48,12,48,12,248, + 63,20,17,51,21,0,0,7,255,224,1,176,32,1,176,32, + 1,48,0,3,48,0,3,48,0,6,48,0,7,255,192,4, + 48,128,12,48,0,12,48,0,24,48,0,24,48,0,16,48, + 0,48,48,16,48,48,48,248,255,240,12,23,46,14,1,250, + 7,224,24,112,48,0,32,0,96,0,64,0,192,0,192,0, + 192,0,192,0,192,0,192,0,224,0,96,32,112,32,61,192, + 31,128,4,0,4,0,7,0,3,0,2,0,28,0,12,23, + 46,13,1,0,48,0,120,0,28,0,6,0,1,0,0,0, + 255,224,48,32,48,32,48,0,48,0,48,0,48,0,63,192, + 48,128,48,0,48,0,48,0,48,0,48,0,48,16,48,48, + 255,224,12,23,46,13,1,0,0,192,3,192,7,0,12,0, + 16,0,0,0,255,224,48,32,48,32,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,16,48,48,255,224,12,22,44,13,1,0,14,0,27,0, + 48,128,64,64,0,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,12,21,42,13,1,0,32,128, + 97,128,32,128,0,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,8,23,23,8,255,0,96,240, + 56,12,2,0,63,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,63,7,23,23,8,1,0,6,14,56,112,64, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,8,22,22,8,0,0,56,108,194,129,0,126,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,126,8,21, + 21,8,0,0,195,195,130,0,126,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,126,14,17,34,16,1,0,127, + 128,176,224,48,48,48,24,48,24,48,12,48,12,48,12,255, + 12,48,12,48,12,48,12,48,24,48,24,48,48,48,96,255, + 128,16,22,44,18,1,0,0,16,7,176,9,224,16,192,0, + 0,240,63,48,12,56,12,60,12,52,12,54,12,51,12,51, + 12,49,140,48,204,48,204,48,108,48,60,48,60,48,28,48, + 28,252,12,14,23,46,16,1,0,24,0,28,0,7,0,3, + 128,0,128,0,0,7,192,24,96,48,48,96,24,96,24,64, + 12,192,12,192,12,192,12,192,12,192,12,192,8,96,24,96, + 16,48,48,24,96,15,128,14,23,46,16,1,0,0,96,0, + 240,1,192,3,0,4,0,0,0,7,192,24,96,48,48,96, + 24,96,24,64,12,192,12,192,12,192,12,192,12,192,12,192, + 8,96,24,96,16,48,48,24,96,15,128,14,22,44,16,1, + 0,3,128,4,192,8,96,16,32,0,0,7,192,24,96,48, + 48,96,24,96,24,64,12,192,12,192,12,192,12,192,12,192, + 12,192,8,96,24,96,16,48,48,24,96,15,128,14,22,44, + 16,1,0,0,32,15,48,19,224,32,128,0,0,7,192,24, + 96,48,48,96,24,96,24,64,12,192,12,192,12,192,12,192, + 12,192,12,192,8,96,24,96,16,48,48,24,96,15,128,14, + 21,42,16,1,0,24,96,24,96,16,64,0,0,7,192,24, + 96,48,48,96,24,96,24,64,12,192,12,192,12,192,12,192, + 12,192,12,192,8,96,24,96,16,48,48,24,96,15,128,9, + 9,18,11,1,3,193,128,99,0,54,0,28,0,28,0,28, + 0,54,0,99,0,193,128,14,18,36,16,1,255,7,204,24, + 120,48,48,32,120,96,120,64,220,193,204,193,140,195,12,199, + 12,198,12,204,8,104,24,120,16,48,48,120,96,207,128,128, + 0,16,23,46,18,1,0,12,0,30,0,7,0,1,192,0, + 64,0,0,252,63,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,24,24, + 24,12,48,7,224,16,23,46,18,1,0,0,48,0,112,1, + 192,3,128,2,0,0,0,252,63,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,24,24,24,12,48,7,224,16,22,44,18,1,0,1, + 128,2,64,4,32,8,16,0,0,252,63,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,24,24,24,12,48,7,224,16,21,42,18,1, + 0,12,48,12,48,8,32,0,0,252,63,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,24,24,24,12,48,7,224,15,23,46,16,0, + 0,0,48,0,112,0,192,3,128,2,0,0,0,240,62,56, + 12,24,24,28,24,14,48,6,32,7,96,3,192,3,192,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,7,224,12, + 17,34,14,1,0,252,0,48,0,48,0,63,128,48,224,48, + 96,48,48,48,48,48,48,48,48,48,48,48,96,56,192,55, + 128,48,0,48,0,252,0,14,20,40,15,1,0,3,192,12, + 224,24,112,16,48,48,48,48,48,48,96,49,192,51,0,54, + 0,54,0,55,128,51,224,48,248,48,60,48,28,50,12,50, + 12,51,24,243,240,11,20,40,12,1,0,48,0,120,0,24, + 0,12,0,4,0,2,0,0,0,0,0,31,0,97,128,225, + 128,1,128,1,128,31,128,121,128,225,128,193,128,193,128,199, + 128,121,224,11,20,40,12,1,0,1,128,3,128,3,0,6, + 0,4,0,8,0,0,0,0,0,31,0,97,128,225,128,1, + 128,1,128,31,128,121,128,225,128,193,128,193,128,199,128,121, + 224,11,19,38,12,1,0,12,0,30,0,19,0,33,128,64, + 192,0,0,0,0,31,0,97,128,225,128,1,128,1,128,31, + 128,121,128,225,128,193,128,193,128,199,128,121,224,11,18,36, + 12,1,0,24,64,60,128,71,0,0,0,0,0,0,0,31, + 0,97,128,225,128,1,128,1,128,31,128,121,128,225,128,193, + 128,193,128,199,128,121,224,11,18,36,12,1,0,97,128,97, + 128,97,128,0,0,0,0,0,0,31,0,97,128,225,128,1, + 128,1,128,31,128,121,128,225,128,193,128,193,128,199,128,121, + 224,11,19,38,12,1,0,14,0,11,0,27,0,27,0,14, + 0,0,0,0,0,31,0,97,128,225,128,1,128,1,128,31, + 128,121,128,225,128,193,128,193,128,199,128,121,224,17,12,36, + 19,1,0,31,62,0,97,195,0,97,193,128,193,129,128,15, + 255,128,57,128,0,97,128,0,193,128,0,193,128,0,193,193, + 0,198,227,0,120,124,0,10,18,36,12,1,250,15,192,48, + 192,96,128,64,0,192,0,192,0,192,0,192,0,224,0,96, + 64,120,192,63,0,12,0,4,0,7,0,3,0,2,0,28, + 0,10,20,40,12,1,0,48,0,56,0,24,0,12,0,6, + 0,2,0,0,0,0,0,15,0,49,128,96,192,64,192,255, + 192,192,0,192,0,192,0,224,0,96,64,48,128,31,0,10, + 20,40,12,1,0,1,192,1,128,3,0,2,0,4,0,12, + 0,0,0,0,0,15,0,49,128,96,192,64,192,255,192,192, + 0,192,0,192,0,224,0,96,64,48,128,31,0,10,19,38, + 12,1,0,6,0,15,0,25,0,48,128,32,64,0,0,0, + 0,15,0,49,128,96,192,64,192,255,192,192,0,192,0,192, + 0,224,0,96,64,48,128,31,0,10,18,36,12,1,0,32, + 128,48,192,32,128,0,0,0,0,0,0,15,0,49,128,96, + 192,64,192,255,192,192,0,192,0,192,0,224,0,96,64,48, + 128,31,0,7,20,20,7,0,0,192,224,112,48,24,8,0, + 0,24,120,24,24,24,24,24,24,24,24,24,126,7,20,20, + 7,1,0,14,12,24,16,48,96,0,0,48,240,48,48,48, + 48,48,48,48,48,48,252,8,19,19,7,0,0,24,60,100, + 194,129,0,0,24,120,24,24,24,24,24,24,24,24,24,126, + 8,18,18,7,0,0,130,195,130,0,0,0,24,120,24,24, + 24,24,24,24,24,24,24,126,11,19,38,13,1,0,24,0, + 60,224,7,128,31,0,49,128,0,192,0,192,15,192,49,224, + 96,224,64,96,192,96,192,96,192,96,192,64,224,192,96,192, + 49,128,30,0,14,18,36,15,1,0,12,32,31,64,35,128, + 0,0,0,0,0,0,113,224,178,48,52,48,56,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,12,20, + 40,14,1,0,56,0,24,0,12,0,4,0,6,0,3,0, + 0,0,0,0,15,128,48,192,96,96,64,112,192,48,192,48, + 192,48,192,48,224,32,96,96,48,192,31,0,12,20,40,14, + 1,0,0,192,1,128,3,128,3,0,6,0,4,0,0,0, + 0,0,15,128,48,192,96,96,64,112,192,48,192,48,192,48, + 192,48,224,32,96,96,48,192,31,0,12,19,38,14,1,0, + 6,0,15,0,25,128,16,128,32,64,0,0,0,0,15,128, + 48,192,96,96,64,112,192,48,192,48,192,48,192,48,224,32, + 96,96,48,192,31,0,12,18,36,14,1,0,28,96,62,64, + 35,128,0,0,0,0,0,0,15,128,48,192,96,96,64,112, + 192,48,192,48,192,48,192,48,224,32,96,96,48,192,31,0, + 12,18,36,14,1,0,48,192,48,192,48,192,0,0,0,0, + 0,0,15,128,48,192,96,96,64,112,192,48,192,48,192,48, + 192,48,224,32,96,96,48,192,31,0,9,9,18,11,1,3, + 12,0,12,0,0,0,0,0,255,128,0,0,0,0,12,0, + 12,0,12,14,28,14,1,255,0,16,15,176,49,224,96,224, + 65,240,195,48,198,48,198,48,204,48,248,32,112,96,120,192, + 223,0,128,0,14,20,40,14,0,0,28,0,12,0,6,0, + 3,0,1,0,1,128,0,0,0,0,48,48,240,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,112,56,188, + 31,48,14,20,40,14,0,0,0,96,0,224,0,192,1,128, + 3,0,2,0,0,0,0,0,48,48,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,112,56,188,31,48, + 14,19,38,14,0,0,3,0,7,128,4,192,8,96,16,32, + 0,0,0,0,48,48,240,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,112,56,188,31,48,14,18,36,14, + 0,0,24,96,24,96,24,96,0,0,0,0,0,0,48,48, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,112,56,188,31,48,14,26,52,13,255,250,0,112,0,96, + 0,224,0,192,1,128,1,0,0,0,0,0,124,60,24,24, + 24,16,12,48,12,32,14,32,6,96,6,64,3,192,3,128, + 3,128,1,128,1,0,3,0,2,0,6,0,124,0,240,0, + 12,26,52,14,1,250,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,224,56,96,48,48,48,48, + 48,48,48,48,48,48,48,32,48,96,56,64,55,128,48,0, + 48,0,48,0,48,0,48,0,252,0,14,24,48,13,255,250, + 12,48,12,48,8,32,0,0,0,0,0,0,124,60,24,24, + 24,16,12,48,12,32,14,32,6,96,6,64,3,192,3,128, + 3,128,1,128,1,0,3,0,2,0,6,0,124,0,240,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 16 + Calculated Max Values w=11 h=25 x= 2 y= 9 dx=13 dy= 0 ascent=21 len=50 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =16 descent= 0 + X Font ascent =16 descent= 0 + Max Font ascent =21 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17n[539] U8G_SECTION(".progmem.u8g_font_gdr17n") = { + 0,40,38,242,247,16,0,0,0,0,42,57,0,21,252,16, + 0,10,12,24,12,1,9,12,0,12,0,140,0,204,192,119, + 128,30,0,30,0,119,128,204,192,12,128,12,0,12,0,10, + 9,18,11,1,3,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,4,7,7,6,1,252,112,240,48, + 48,32,96,64,7,1,1,9,1,6,254,3,4,4,6,2, + 255,96,224,224,192,11,25,50,13,1,252,0,96,0,96,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,6,0,6, + 0,6,0,12,0,12,0,12,0,24,0,24,0,48,0,48, + 0,48,0,96,0,96,0,224,0,192,0,192,0,11,16,32, + 13,1,0,15,0,49,128,96,192,64,192,64,224,192,96,192, + 96,192,96,192,96,192,96,192,96,192,64,96,64,96,192,49, + 128,30,0,9,16,32,13,2,0,12,0,60,0,252,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,255,128,10,16,32,13,1,0,15, + 0,49,128,96,192,96,192,0,192,0,192,1,128,1,128,3, + 0,6,0,12,0,28,0,24,0,48,64,96,64,255,192,10, + 16,32,13,1,0,30,0,99,0,97,128,193,128,1,128,3, + 0,6,0,31,0,3,128,1,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,1,128,3,128,7, + 128,5,128,13,128,25,128,17,128,49,128,97,128,65,128,255, + 224,1,128,1,128,1,128,1,128,15,224,10,16,32,13,1, + 0,63,192,32,0,32,0,32,0,96,0,96,0,127,0,67, + 128,1,192,0,192,0,192,0,192,0,192,1,128,193,128,62, + 0,11,16,32,13,1,0,3,128,14,0,24,0,48,0,96, + 0,96,0,207,0,241,192,192,224,192,96,192,96,192,96,96, + 96,96,64,48,128,31,0,11,16,32,13,1,0,127,224,64, + 192,128,192,0,128,1,128,1,128,3,0,3,0,6,0,6, + 0,4,0,12,0,12,0,24,0,24,0,48,0,11,16,32, + 13,1,0,31,0,113,128,224,192,224,192,224,192,241,128,63, + 0,15,128,51,192,96,224,192,96,192,96,192,96,192,64,96, + 128,31,0,11,17,34,13,1,255,31,0,49,128,96,192,192, + 192,192,96,192,96,192,96,224,96,113,224,30,96,0,224,0, + 192,0,192,1,128,3,0,14,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=22 h=27 x= 2 y=14 dx=23 dy= 0 ascent=22 len=66 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17r[3380] U8G_SECTION(".progmem.u8g_font_gdr17r") = { + 0,40,38,242,247,17,4,64,9,46,32,127,250,22,250,21, + 250,0,0,0,6,0,0,3,21,21,7,2,255,96,224,224, + 224,224,96,96,96,96,96,64,64,64,64,64,0,0,96,224, + 224,192,7,9,9,11,2,11,102,230,230,198,198,70,70,70, + 70,12,15,30,13,1,2,6,96,6,96,4,64,4,64,12, + 192,63,240,8,128,25,128,17,0,255,224,51,0,34,0,34, + 0,102,0,68,0,11,20,40,12,0,254,6,0,6,0,15, + 128,55,224,102,64,102,0,102,0,118,0,62,0,31,128,7, + 192,6,224,6,96,134,96,198,96,230,192,127,192,31,0,6, + 0,6,0,17,16,48,19,1,0,56,6,0,108,12,0,198, + 24,0,198,24,0,198,48,0,198,96,0,198,192,0,108,192, + 0,57,158,0,3,51,0,6,97,128,6,97,128,12,97,128, + 24,97,128,48,51,0,32,30,0,17,19,57,18,1,0,3, + 192,0,12,224,0,8,96,0,24,96,0,24,96,0,24,192, + 0,29,192,0,31,128,0,14,0,0,62,63,128,119,29,0, + 103,12,0,195,140,0,193,204,0,193,232,0,192,248,0,96, + 120,0,112,222,0,31,7,128,3,9,9,7,2,11,96,224, + 224,192,192,64,64,64,64,6,25,25,9,2,252,4,8,24, + 48,32,96,96,96,192,192,192,192,192,192,192,192,192,224,96, + 96,96,48,24,8,4,6,25,25,9,1,252,128,64,96,48, + 24,24,24,24,12,12,12,12,12,12,12,12,12,24,24,24, + 48,48,96,64,128,10,12,24,12,1,9,12,0,12,0,140, + 0,204,192,119,128,30,0,30,0,119,128,204,192,12,128,12, + 0,12,0,10,9,18,11,1,3,12,0,12,0,12,0,12, + 0,255,192,12,0,12,0,12,0,12,0,4,7,7,6,1, + 252,112,240,48,48,32,96,64,7,1,1,9,1,6,254,3, + 4,4,6,2,255,96,224,224,192,11,25,50,13,1,252,0, + 96,0,96,0,192,0,192,1,128,1,128,1,128,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,224,0,192,0,192, + 0,11,16,32,13,1,0,15,0,49,128,96,192,64,192,64, + 224,192,96,192,96,192,96,192,96,192,96,192,96,192,64,96, + 64,96,192,49,128,30,0,9,16,32,13,2,0,12,0,60, + 0,252,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,128,10,16,32, + 13,1,0,15,0,49,128,96,192,96,192,0,192,0,192,1, + 128,1,128,3,0,6,0,12,0,28,0,24,0,48,64,96, + 64,255,192,10,16,32,13,1,0,30,0,99,0,97,128,193, + 128,1,128,3,0,6,0,31,0,3,128,1,192,0,192,0, + 192,0,192,1,128,193,128,62,0,11,16,32,13,1,0,1, + 128,3,128,7,128,5,128,13,128,25,128,17,128,49,128,97, + 128,65,128,255,224,1,128,1,128,1,128,1,128,15,224,10, + 16,32,13,1,0,63,192,32,0,32,0,32,0,96,0,96, + 0,127,0,67,128,1,192,0,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,3,128,14,0,24, + 0,48,0,96,0,96,0,207,0,241,192,192,224,192,96,192, + 96,192,96,96,96,96,64,48,128,31,0,11,16,32,13,1, + 0,127,224,64,192,128,192,0,128,1,128,1,128,3,0,3, + 0,6,0,6,0,4,0,12,0,12,0,24,0,24,0,48, + 0,11,16,32,13,1,0,31,0,113,128,224,192,224,192,224, + 192,241,128,63,0,15,128,51,192,96,224,192,96,192,96,192, + 96,192,64,96,128,31,0,11,17,34,13,1,255,31,0,49, + 128,96,192,192,192,192,96,192,96,192,96,224,96,113,224,30, + 96,0,224,0,192,0,192,1,128,3,0,14,0,48,0,3, + 14,14,6,2,255,64,224,224,224,0,0,0,0,0,0,96, + 224,224,192,4,17,17,6,1,252,32,112,112,112,0,0,0, + 0,0,0,112,240,48,48,32,96,64,10,9,18,12,1,3, + 0,192,3,192,31,0,120,0,224,0,248,0,30,0,7,192, + 0,192,10,5,10,12,1,5,255,192,0,0,0,0,0,0, + 255,192,10,9,18,12,1,3,192,0,248,0,30,0,7,192, + 1,192,7,128,60,0,240,0,128,0,10,20,40,12,1,255, + 31,0,97,128,192,192,192,192,192,192,0,192,1,128,1,128, + 3,0,6,0,6,0,12,0,12,0,12,0,8,0,0,0, + 12,0,28,0,28,0,24,0,20,22,66,22,1,251,0,252, + 0,3,7,0,12,1,192,24,0,192,48,0,96,32,244,96, + 97,28,112,67,12,48,194,12,48,198,12,48,198,12,48,198, + 12,48,198,12,32,198,12,96,227,12,64,99,60,128,97,199, + 0,48,0,0,56,0,0,28,0,64,7,3,128,1,252,0, + 16,17,34,16,0,0,0,128,1,128,3,128,3,192,2,192, + 6,192,6,96,4,96,12,112,12,48,15,240,24,24,24,24, + 16,24,48,12,48,12,248,63,12,17,34,14,1,0,127,128, + 176,192,48,96,48,96,48,96,48,64,49,128,63,192,48,224, + 48,96,48,48,48,48,48,48,48,48,48,96,48,224,255,128, + 12,17,34,14,1,0,7,224,24,112,48,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,48,16,24,32,15,192,14,17,34,16,1,0,127,128, + 176,224,48,48,48,24,48,24,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,24,48,24,48,48,48,96,255,128, + 12,17,34,13,1,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,11,17,34,13,1,0,255,224, + 48,32,48,32,48,0,48,0,48,0,48,0,63,128,49,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 14,17,34,16,1,0,3,240,12,56,16,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,252,192,24,192,24,96,24, + 96,24,48,24,24,24,7,224,16,17,34,18,1,0,252,63, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,63,252, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,252,63, + 6,17,17,8,1,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,10,22,44,8,253,251,31,192,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,2,0,6,0,68,0,248,0,15,17,34,16,1,0,252, + 252,48,48,48,96,48,192,49,128,51,0,54,0,52,0,62, + 0,54,0,51,0,49,128,49,192,48,224,48,112,48,56,252, + 30,12,17,34,13,1,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,16,48,48,255,224,20,17,51,22,1,0,240, + 1,224,56,1,192,56,3,192,44,2,192,44,6,192,44,6, + 192,38,4,192,38,12,192,35,8,192,35,24,192,35,152,192, + 33,144,192,33,176,192,32,224,192,32,224,192,32,64,192,248, + 67,240,16,17,34,18,1,0,240,63,48,12,56,12,60,12, + 52,12,54,12,51,12,51,12,49,140,48,204,48,204,48,108, + 48,60,48,60,48,28,48,28,252,12,14,17,34,16,1,0, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,8,96,24,96,16,48,48,24,96, + 15,128,12,17,34,14,1,0,127,128,176,224,48,96,48,48, + 48,48,48,48,48,48,48,96,48,192,63,128,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,16,21,42,16,1,252, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,96,24,48,48,24,96, + 15,192,0,192,0,96,0,49,0,14,14,17,34,15,1,0, + 127,0,177,192,48,96,48,96,48,96,48,96,48,192,49,192, + 63,0,51,0,49,128,49,128,48,192,48,224,48,96,48,112, + 252,60,10,17,34,13,2,0,31,0,99,128,193,0,192,0, + 224,0,240,0,124,0,126,0,31,128,7,128,1,192,0,192, + 0,192,128,192,128,128,193,0,126,0,14,17,34,15,0,0, + 255,252,131,4,131,4,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 15,192,16,17,34,18,1,0,252,63,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,24,24,24,12,48,7,224,17,17,51,18,0,0, + 252,15,128,48,6,0,24,6,0,24,4,0,24,12,0,12, + 12,0,12,8,0,14,24,0,6,24,0,6,16,0,3,48, + 0,3,32,0,3,96,0,1,224,0,1,192,0,1,192,0, + 0,128,0,22,17,51,23,0,0,252,16,124,48,16,16,48, + 56,16,24,56,48,24,56,48,24,108,48,24,108,32,24,76, + 32,12,198,96,12,198,96,12,134,96,13,131,64,7,131,64, + 7,3,192,7,1,192,7,1,192,6,1,128,16,17,34,17, + 0,0,124,63,56,28,24,24,12,48,14,48,7,96,3,192, + 3,192,1,192,3,192,3,224,6,112,12,48,12,24,24,28, + 56,14,252,63,15,17,34,16,0,0,240,62,56,12,24,24, + 28,24,14,48,6,32,7,96,3,192,3,192,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,7,224,12,17,34,14, + 1,0,127,240,64,96,64,224,128,192,1,192,3,128,3,0, + 7,0,6,0,14,0,28,0,24,0,56,0,48,16,112,16, + 224,48,255,240,6,25,25,8,2,252,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,252,11,25,50,13,1,252,128,0,192,0,64,0,96, + 0,96,0,48,0,48,0,48,0,24,0,24,0,8,0,12, + 0,12,0,6,0,6,0,2,0,3,0,3,0,1,128,1, + 128,1,128,0,192,0,192,0,64,0,96,6,25,25,9,1, + 252,252,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,252,11,13,26,13,1,7, + 6,0,14,0,14,0,15,0,27,0,19,0,17,128,49,128, + 33,192,96,192,96,192,64,96,192,64,11,1,2,13,1,253, + 255,224,6,6,6,9,0,14,96,224,48,24,8,4,11,12, + 24,12,1,0,31,0,97,128,225,128,1,128,1,128,31,128, + 121,128,225,128,193,128,193,128,199,128,121,224,13,20,40,14, + 0,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,54,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,16,48,48,56,96,15,128,10,12,24,12,1,0, + 15,192,48,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,96,64,48,192,31,0,13,20,40,14,1,0,0,96, + 1,224,0,96,0,96,0,96,0,96,0,96,0,96,15,224, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,120,30,96,10,12,24,12,1,0,15,0,49,128, + 96,192,64,192,255,192,192,0,192,0,192,0,224,0,96,64, + 48,128,31,0,10,20,40,8,1,0,3,192,12,128,24,0, + 16,0,48,0,48,0,48,0,48,0,255,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,13,18,36,13,0,250,15,24,48,240,32,96,96,96, + 96,96,96,96,56,192,31,0,24,0,56,0,63,128,31,240, + 48,120,192,24,192,24,192,16,112,96,31,128,14,20,40,15, + 1,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,50,48,52,48,56,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,252,6,18,18,7,1,0, + 48,112,48,0,0,0,48,240,48,48,48,48,48,48,48,48, + 48,252,8,24,24,7,253,250,3,7,3,0,0,0,3,15, + 3,3,3,3,3,3,3,3,3,3,3,3,2,2,4,248, + 13,20,40,14,1,0,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,240,48,192,49,128,51,0,52,0, + 60,0,54,0,51,0,49,128,48,192,48,224,248,120,6,20, + 20,7,1,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,12,36,21,1,0,113,195, + 128,182,108,192,56,112,192,56,112,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,48,96,192,48,96,192,253, + 251,240,14,12,24,15,1,0,113,224,178,48,52,48,56,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,252, + 12,12,24,14,1,0,15,128,48,192,96,96,64,112,192,48, + 192,48,192,48,192,48,224,32,96,96,48,192,31,0,12,18, + 36,14,1,250,113,192,182,224,56,96,48,48,48,48,48,48, + 48,48,48,48,48,32,48,96,56,64,55,128,48,0,48,0, + 48,0,48,0,48,0,252,0,13,18,36,14,1,250,15,32, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,96,30,96,0,96,0,96,0,96,0,96,0,96, + 1,248,10,12,24,11,1,0,51,192,244,128,56,128,56,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 8,12,12,10,1,0,62,70,194,224,240,124,30,7,131,131, + 198,124,9,17,34,9,0,0,16,0,48,0,48,0,48,0, + 48,0,255,128,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,0,30,128,14,12,24,14,0,0, + 48,48,240,240,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,112,56,188,31,48,13,12,24,13,0,0,248,120, + 48,48,48,32,24,96,24,64,28,64,12,192,12,128,7,128, + 7,0,7,0,2,0,19,12,36,19,0,0,248,99,224,48, + 96,128,48,96,128,48,241,128,24,177,128,25,177,0,25,153, + 0,13,27,0,15,26,0,14,14,0,6,14,0,4,4,0, + 13,12,24,14,0,0,252,248,56,96,24,64,12,128,7,128, + 7,0,7,128,13,128,8,192,16,96,48,112,248,248,14,18, + 36,13,255,250,124,60,24,24,24,16,12,48,12,32,14,32, + 6,96,6,64,3,192,3,128,3,128,1,128,1,0,3,0, + 2,0,6,0,124,0,240,0,10,12,24,12,1,0,127,192, + 65,128,131,128,3,0,6,0,12,0,28,0,24,0,48,0, + 112,64,96,64,255,192,6,25,25,9,2,252,4,8,24,48, + 48,48,48,24,24,24,24,48,224,56,24,24,24,24,48,48, + 48,48,16,24,4,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,6,25,25,9,1,252,128,96,32,48, + 48,48,48,96,96,96,96,48,28,48,96,96,96,96,48,48, + 48,48,96,64,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=19 dx=27 dy= 0 ascent=27 len=81 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x=-4 y=-9 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =27 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20[9119] U8G_SECTION(".progmem.u8g_font_gdr20") = { + 0,47,44,240,246,20,4,220,11,144,32,255,248,27,247,25, + 248,0,0,0,7,0,0,4,23,23,9,2,0,48,112,112, + 112,112,112,112,112,112,96,96,96,96,96,96,96,96,64,0, + 112,240,240,224,8,10,10,14,3,13,227,199,199,199,199,195, + 195,195,195,194,14,18,36,15,1,2,1,24,3,24,3,16, + 2,48,6,48,63,252,4,96,12,96,12,96,12,64,8,192, + 255,248,24,128,17,128,49,128,49,128,49,0,35,0,12,25, + 50,15,1,253,6,0,6,0,6,0,31,192,63,240,102,96, + 102,0,102,0,102,0,118,0,62,0,31,128,7,192,7,224, + 6,112,6,48,6,48,134,48,198,48,230,96,255,192,127,128, + 6,0,6,0,6,0,20,20,60,22,1,255,30,0,192,99, + 1,128,67,3,128,193,131,0,193,134,0,193,140,0,193,156, + 0,97,24,0,99,48,0,60,115,192,0,108,96,0,200,96, + 1,152,48,3,152,48,3,24,48,6,24,48,14,8,32,28, + 12,96,24,7,128,48,0,0,19,22,66,21,2,0,3,192, + 0,4,224,0,8,96,0,24,96,0,24,96,0,24,96,0, + 24,192,0,29,128,0,15,0,0,12,0,0,28,63,224,62, + 14,128,119,6,0,99,134,0,193,134,0,193,198,0,192,236, + 0,192,124,0,192,60,0,96,30,0,48,47,192,31,195,128, + 3,10,10,8,3,13,224,192,192,192,192,192,192,192,192,192, + 7,30,30,10,2,251,2,12,24,24,48,48,96,96,96,96, + 192,192,192,192,192,192,192,192,192,192,224,96,96,96,112,48, + 56,24,12,2,7,30,30,10,1,251,128,96,48,56,24,28, + 12,12,12,14,6,6,6,6,6,6,6,6,6,6,12,12, + 12,12,24,24,48,48,96,128,12,13,26,14,1,11,6,0, + 6,0,134,0,102,48,242,240,27,128,6,0,27,128,114,240, + 230,48,6,32,6,0,6,0,12,11,22,13,1,3,6,0, + 6,0,6,0,6,0,6,0,255,240,6,0,6,0,6,0, + 6,0,6,0,4,8,8,7,2,251,112,240,48,48,48,32, + 64,192,9,1,2,11,1,8,255,128,4,4,4,7,2,0, + 112,240,240,224,13,30,60,15,1,251,0,24,0,56,0,48, + 0,48,0,112,0,96,0,96,0,224,0,192,1,192,1,128, + 1,128,3,128,3,0,7,0,6,0,6,0,14,0,12,0, + 12,0,28,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,13,19,38,15,1,0,7,128,24,192, + 32,96,96,48,64,48,64,56,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,16,96,16,96,48,48,32,24,64, + 15,128,11,19,38,15,2,0,2,0,30,0,126,0,134,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,15,0,127,224,11,19, + 38,15,2,0,15,128,48,192,96,96,96,96,96,96,0,96, + 0,96,0,192,0,192,1,128,3,0,7,0,6,0,12,0, + 24,0,48,32,112,32,224,32,255,224,11,19,38,15,2,0, + 31,0,113,128,96,192,224,192,0,192,0,192,1,128,3,0, + 15,0,3,192,0,192,0,224,0,96,0,96,0,96,0,96, + 128,192,193,128,127,0,12,19,38,15,1,0,0,64,1,192, + 3,192,3,192,6,192,12,192,12,192,24,192,48,192,48,192, + 96,192,224,192,255,240,0,192,0,192,0,192,0,192,0,192, + 7,240,11,19,38,15,2,0,63,224,32,0,32,0,96,0, + 96,0,96,0,96,0,127,0,97,192,0,192,0,96,0,96, + 0,96,0,96,0,96,0,64,128,192,193,128,63,0,12,20, + 40,15,2,0,0,192,7,0,14,0,24,0,48,0,112,0, + 96,0,96,0,207,128,240,224,224,96,192,112,192,48,192,48, + 192,48,96,48,96,32,32,96,48,64,15,128,12,19,38,15, + 2,0,255,240,128,96,128,96,0,224,0,192,0,192,1,128, + 1,128,3,0,3,0,7,0,6,0,6,0,12,0,12,0, + 28,0,24,0,56,0,48,0,12,19,38,15,2,0,31,128, + 48,192,96,96,224,96,224,96,224,96,248,192,127,128,31,128, + 31,192,49,224,96,112,192,112,192,48,192,48,192,32,96,32, + 112,64,31,128,12,20,40,15,2,255,15,128,49,192,32,224, + 64,96,192,112,192,48,192,48,192,48,192,48,96,112,48,176, + 31,48,0,96,0,96,0,96,0,192,1,128,7,0,30,0, + 48,0,4,15,15,7,2,0,112,240,240,96,0,0,0,0, + 0,0,0,112,240,240,224,4,20,20,7,2,251,112,240,240, + 96,0,0,0,0,0,0,0,0,112,240,48,48,48,32,64, + 192,12,10,20,14,1,4,0,48,0,240,7,192,62,0,248, + 0,240,0,126,0,15,128,1,240,0,112,12,6,12,14,1, + 6,255,240,0,0,0,0,0,0,0,0,255,240,12,10,20, + 14,1,4,96,0,248,0,31,0,7,224,0,240,1,240,7, + 192,62,0,240,0,192,0,10,23,46,14,2,0,31,0,99, + 128,65,192,192,192,192,192,128,192,0,192,1,128,1,128,3, + 0,3,0,6,0,14,0,12,0,12,0,12,0,12,0,0, + 0,0,0,14,0,30,0,30,0,28,0,24,25,75,26,1, + 251,0,63,128,1,192,224,2,0,56,12,0,28,24,0,12, + 16,60,142,32,67,134,96,129,135,65,129,131,193,1,131,195, + 1,131,195,1,131,195,1,131,195,1,131,195,1,131,195,1, + 130,225,129,134,97,131,132,112,197,200,48,120,240,56,0,0, + 28,0,4,15,0,28,3,192,112,0,127,128,19,20,60,19, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,14,20, + 40,17,1,0,63,192,240,112,48,56,48,24,48,24,48,24, + 48,24,48,48,48,224,63,224,48,112,48,56,48,28,48,12, + 48,12,48,12,48,12,48,24,48,48,255,192,14,20,40,17, + 1,0,3,248,12,28,16,8,48,0,96,0,96,0,64,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,112,0,56,4,28,24,7,224,17,20,60,19,1,0, + 63,224,0,240,56,0,48,12,0,48,6,0,48,3,0,48, + 3,0,48,3,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,3,0,48,3,0,48,3,0, + 48,6,0,48,12,0,48,56,0,255,224,0,13,20,40,16, + 1,0,255,240,48,16,48,16,48,16,48,0,48,0,48,0, + 48,0,48,0,63,224,48,64,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,12,20,40,15,1,0, + 255,240,48,16,48,16,48,16,48,0,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,254,0,18,20,60,19,1,0,1,254, + 0,6,15,0,8,0,0,16,0,0,32,0,0,96,0,0, + 64,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 31,192,192,7,0,192,3,0,96,3,0,96,3,0,48,3, + 0,24,3,0,12,3,0,3,252,0,19,20,60,21,1,0, + 252,7,224,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,63,255,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,252,7,224,6,20,20,10, + 2,0,252,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,11,25,50,10,253,251,15,224,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,0,1,0,3,0,98,0,252,0,17,20, + 60,19,1,0,252,127,0,48,24,0,48,48,0,48,96,0, + 48,224,0,49,192,0,49,128,0,51,0,0,54,0,0,62, + 0,0,54,0,0,55,0,0,51,128,0,49,192,0,48,224, + 0,48,112,0,48,120,0,48,60,0,48,30,0,252,15,128, + 13,20,40,15,1,0,252,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,8,48,8,48,24,255,248,24,20, + 60,26,1,0,248,0,62,60,0,56,60,0,120,62,0,120, + 54,0,216,54,0,216,55,0,152,51,1,152,51,129,152,49, + 131,24,49,195,24,49,198,24,48,198,24,48,230,24,48,108, + 24,48,124,24,48,56,24,48,56,24,48,56,24,252,16,255, + 19,20,60,21,1,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,20,60,19,1,0,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,2,0,48,6,0,56,4,0,12,24, + 0,7,224,0,15,20,40,17,1,0,63,224,240,56,48,28, + 48,14,48,6,48,6,48,6,48,6,48,12,48,12,52,56, + 51,224,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,19,25,75,19,1,251,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,3,0,48,6,0,24,4,0,12,24, + 0,7,240,0,0,112,0,0,24,0,0,14,32,0,7,192, + 0,1,128,18,20,60,18,1,0,63,192,0,240,112,0,48, + 24,0,48,12,0,48,12,0,48,12,0,48,12,0,48,24, + 0,48,112,0,63,224,0,63,192,0,49,192,0,48,224,0, + 48,112,0,48,112,0,48,56,0,48,60,0,48,28,0,48, + 15,0,252,15,192,12,20,40,15,2,0,15,224,48,224,64, + 64,192,0,192,0,224,0,248,0,126,0,127,0,31,192,7, + 224,1,240,0,240,0,112,0,48,0,48,128,32,192,96,224, + 192,127,0,16,20,40,18,1,0,255,255,129,131,129,129,129, + 129,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,15, + 240,19,20,60,21,1,0,252,7,224,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,0,24,3,0,28,6,0,14,12,0, + 3,240,0,20,20,60,21,0,0,254,3,240,56,0,192,24, + 0,128,28,1,128,12,1,128,14,3,0,14,3,0,6,3, + 0,7,6,0,7,6,0,3,6,0,3,140,0,1,140,0, + 1,204,0,1,216,0,0,216,0,0,248,0,0,240,0,0, + 112,0,0,96,0,27,20,80,27,0,0,254,4,15,224,56, + 4,3,0,24,14,3,0,24,14,3,0,28,15,3,0,28, + 27,2,0,12,27,6,0,12,27,134,0,12,49,134,0,14, + 49,134,0,14,49,196,0,6,96,204,0,6,96,204,0,7, + 96,236,0,7,192,108,0,3,192,120,0,3,192,120,0,3, + 128,56,0,3,128,56,0,3,0,48,0,19,20,60,20,0, + 0,127,31,192,60,7,0,28,6,0,14,6,0,7,12,0, + 7,28,0,3,152,0,1,240,0,1,240,0,0,224,0,0, + 240,0,1,240,0,1,184,0,3,28,0,7,12,0,6,14, + 0,12,7,0,28,3,128,56,3,192,255,15,224,18,20,60, + 19,0,0,240,31,192,56,7,0,28,6,0,12,12,0,14, + 12,0,7,24,0,7,24,0,3,48,0,3,176,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,7,248,0,14, + 20,40,17,1,0,127,252,96,28,64,56,64,120,0,112,0, + 224,0,224,1,192,3,192,3,128,7,0,7,0,14,0,30, + 0,28,0,56,0,56,4,112,4,240,12,255,252,7,30,30, + 10,2,251,254,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 254,13,30,60,15,1,251,192,0,192,0,96,0,96,0,112, + 0,48,0,48,0,24,0,24,0,28,0,12,0,12,0,14, + 0,6,0,6,0,3,0,3,0,3,128,1,128,1,128,0, + 192,0,192,0,192,0,96,0,96,0,112,0,48,0,48,0, + 24,0,24,7,30,30,10,1,251,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,254,12,15,30,16,2,9,2,0,6, + 0,15,0,15,0,27,0,27,128,17,128,49,192,49,192,96, + 192,96,224,96,96,192,112,192,48,128,32,13,1,2,15,1, + 253,255,248,7,7,7,10,0,16,96,240,56,24,12,4,2, + 13,15,30,15,1,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,15,24,48,16,0,0,48,0,240,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,240,49,248, + 54,28,60,12,56,14,48,6,48,6,48,6,48,6,48,6, + 48,4,48,12,48,8,28,16,7,224,12,15,30,14,1,0, + 7,224,24,96,32,32,96,0,64,0,192,0,192,0,192,0, + 192,0,192,0,192,0,96,0,112,32,56,112,31,128,15,24, + 48,17,1,0,0,24,0,120,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,7,248,24,56,32,24,96,24,64,24, + 192,24,192,24,192,24,192,24,192,24,192,24,96,24,112,56, + 56,222,15,24,13,15,30,15,1,0,7,192,24,96,32,48, + 96,24,64,24,192,24,255,240,192,0,192,0,192,0,224,0, + 96,0,112,8,56,48,15,192,11,24,48,10,1,0,3,224, + 4,192,24,0,16,0,48,0,48,0,48,0,48,0,48,0, + 255,0,50,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,15,23, + 46,16,1,248,7,134,24,252,32,96,96,48,96,48,96,48, + 96,48,112,96,56,64,31,128,8,0,16,0,60,0,63,224, + 15,248,63,252,112,124,224,12,192,12,192,8,96,16,112,32, + 31,192,16,24,48,18,1,0,16,0,240,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,112,49,136,54,12, + 56,12,56,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,21,21,9,1,0,48,112, + 112,96,0,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,29,58,8,252,248,1,128,3,128,3,128,3, + 0,0,0,0,0,1,128,7,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,0,3,0,2,0,124, + 0,248,0,15,24,48,16,1,0,16,0,240,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,252,48,112,48, + 224,49,128,51,0,54,0,62,0,54,0,55,0,51,128,49, + 192,48,224,48,112,48,120,252,62,6,24,24,9,1,0,16, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,24,15,45,26,1,0,240,240,120, + 51,25,140,52,26,12,56,28,12,56,28,12,48,24,12,48, + 24,12,48,24,12,48,24,12,48,24,12,48,24,12,48,24, + 12,48,24,12,48,24,12,252,126,63,16,15,30,18,1,0, + 112,112,177,136,54,12,56,12,56,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,252,63,14,15, + 30,16,1,0,7,192,24,112,32,56,96,24,64,28,192,12, + 192,12,192,12,192,12,192,12,224,8,96,24,112,16,56,32, + 15,192,15,23,46,17,1,248,112,240,179,24,52,28,56,12, + 48,14,48,6,48,6,48,6,48,6,48,6,48,4,48,12, + 48,8,60,16,55,224,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,254,0,14,23,46,16,1,248,7,144,24,112, + 32,48,96,48,64,48,192,48,192,48,192,48,192,48,192,48, + 192,48,96,48,96,112,48,176,31,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,1,252,11,15,30,13,1,0, + 49,224,243,224,52,64,56,64,56,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,9,15, + 30,12,2,0,63,0,67,0,193,0,192,0,224,0,248,0, + 126,0,63,0,15,128,3,128,1,128,129,128,129,0,195,0, + 252,0,10,20,40,11,1,0,16,0,48,0,48,0,48,0, + 48,0,255,192,49,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,128,31,64, + 15,15,30,17,1,0,48,24,240,120,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,56, + 24,222,15,24,15,15,30,16,0,0,252,62,56,12,56,8, + 24,24,28,24,12,16,12,48,14,48,6,32,7,96,7,64, + 3,64,3,192,1,128,1,0,22,15,45,23,0,0,252,16, + 124,48,24,24,56,56,16,24,56,48,24,60,48,28,108,48, + 12,110,32,12,78,96,12,198,96,14,199,64,6,131,64,7, + 131,192,7,131,192,3,1,128,2,1,0,16,15,30,16,0, + 0,254,63,60,28,28,16,14,48,6,96,7,192,3,192,1, + 192,3,192,6,224,12,112,12,56,24,24,56,28,252,63,16, + 23,46,16,255,248,126,31,28,6,28,4,12,12,14,12,14, + 8,6,24,7,24,3,16,3,48,3,176,1,160,1,224,1, + 224,0,192,0,192,0,128,1,128,1,128,3,0,126,0,124, + 0,248,0,12,15,30,14,1,0,127,240,64,96,64,224,1, + 192,1,128,3,128,7,0,6,0,14,0,28,0,28,0,56, + 16,112,16,112,48,255,240,8,30,30,11,2,251,3,6,12, + 8,24,24,24,24,28,12,12,12,12,24,48,248,28,12,12, + 12,12,28,24,24,24,24,24,12,6,3,2,32,32,7,3, + 250,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,30,30,11,1,251,192,96,48,24,24,24,24,24,56, + 48,48,48,48,56,31,12,24,48,48,48,48,56,24,24,24, + 24,16,48,96,192,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,7,0,0,4,24, + 24,9,2,247,112,240,240,224,0,0,32,96,96,96,96,96, + 96,96,96,96,112,112,112,112,112,112,112,64,12,20,40,15, + 2,255,6,0,6,0,6,0,15,224,54,224,102,96,102,0, + 198,0,198,0,198,0,198,0,198,0,198,0,230,32,118,48, + 63,192,31,128,6,0,6,0,6,0,13,19,38,15,1,0, + 7,224,8,112,16,48,16,32,48,32,48,0,48,0,48,0, + 48,0,255,0,48,0,48,0,48,0,48,0,48,8,32,24, + 96,48,127,240,131,240,11,10,20,15,2,4,192,96,127,192, + 49,192,96,192,96,192,96,192,113,192,63,128,64,64,128,32, + 16,19,38,15,255,0,240,63,56,28,28,24,28,56,14,48, + 6,112,7,96,3,192,3,192,1,128,1,128,63,252,1,128, + 1,128,1,128,1,128,1,128,1,128,15,240,2,32,32,7, + 3,250,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 128,0,0,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,11,22,44,15,2,0,31,128,49,192,96,128,96,0, + 112,0,120,0,62,0,111,128,199,192,193,224,192,224,224,96, + 240,96,124,96,63,192,15,128,3,192,1,192,64,192,64,192, + 96,128,63,0,9,4,8,13,2,17,97,128,227,128,227,128, + 195,0,21,20,60,24,1,0,1,252,0,6,3,0,24,0, + 192,48,0,96,48,124,96,97,134,48,99,0,48,194,0,24, + 198,0,24,198,0,24,198,0,24,198,0,24,199,0,24,99, + 0,48,97,198,48,48,248,96,48,0,96,24,0,192,6,3, + 0,1,252,0,7,10,10,8,1,9,56,204,140,28,108,204, + 220,238,0,254,12,14,28,16,1,0,6,16,4,48,8,96, + 24,96,48,192,113,192,227,128,227,128,113,192,48,192,24,96, + 8,96,4,48,6,16,13,6,12,15,1,3,255,248,0,24, + 0,24,0,24,0,24,0,24,9,1,2,11,1,8,255,128, + 10,11,22,11,1,11,30,0,97,0,126,128,147,64,151,64, + 156,64,148,64,146,64,105,128,33,0,30,0,10,1,2,16, + 3,19,255,192,7,7,7,11,2,12,60,110,198,198,198,236, + 120,12,14,28,13,1,2,6,0,6,0,6,0,6,0,6, + 0,255,240,6,0,6,0,6,0,6,0,4,0,0,0,0, + 0,255,224,8,11,11,10,1,10,62,99,195,3,6,6,12, + 24,50,97,255,9,12,24,11,0,9,31,0,51,128,97,128, + 1,128,3,0,15,0,1,128,1,128,1,128,1,128,195,0, + 62,0,7,7,7,10,3,16,12,30,24,48,48,96,192,15, + 23,46,17,1,248,48,8,240,56,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,56,56,56,120,63,248,55, + 222,51,152,48,0,48,0,48,0,48,0,56,0,56,0,56, + 0,48,0,15,24,48,18,1,252,15,254,48,252,96,216,64, + 216,192,216,192,216,192,216,192,216,224,216,112,216,56,216,15, + 216,0,216,0,216,0,216,0,216,0,216,0,216,0,216,0, + 216,0,216,0,216,0,216,3,254,3,4,4,5,1,9,96, + 224,224,192,5,7,7,7,1,249,48,32,48,120,24,48,224, + 8,11,11,11,2,10,24,248,24,24,24,24,24,24,24,24, + 255,7,10,10,9,1,9,56,108,198,198,198,198,108,56,0, + 254,12,14,28,16,2,0,130,0,65,0,97,128,48,192,56, + 224,28,96,12,112,28,112,30,96,56,224,48,192,97,128,65, + 0,130,0,16,19,38,19,2,0,48,6,240,14,48,12,48, + 24,48,56,48,48,48,96,48,224,48,192,205,130,1,142,3, + 30,6,22,6,38,12,70,24,127,24,134,48,6,96,31,15, + 19,38,18,2,0,48,6,240,12,48,8,48,24,48,48,48, + 48,48,96,48,192,48,192,205,128,1,28,3,102,6,70,4, + 6,12,12,24,24,24,48,48,98,96,254,17,19,57,19,1, + 0,60,3,0,70,6,0,6,4,0,28,12,0,6,24,0, + 6,16,0,6,48,0,142,96,0,120,96,0,0,193,0,1, + 135,0,1,143,0,3,11,0,2,19,0,6,35,0,12,63, + 128,12,67,0,24,3,0,48,15,128,10,24,48,13,2,247, + 14,0,30,0,30,0,28,0,0,0,0,0,0,0,12,0, + 12,0,12,0,12,0,28,0,24,0,48,0,48,0,96,0, + 96,0,192,0,192,64,192,192,192,192,224,128,97,128,62,0, + 19,27,81,19,0,0,6,0,0,15,0,0,7,128,0,1, + 192,0,0,96,0,0,16,0,0,0,0,0,64,0,0,224, + 0,0,224,0,1,224,0,1,240,0,1,176,0,3,48,0, + 3,56,0,3,24,0,6,28,0,6,28,0,6,12,0,15, + 254,0,12,6,0,8,6,0,24,7,0,24,3,0,16,3, + 0,48,3,128,254,15,224,19,27,81,19,0,0,0,8,0, + 0,30,0,0,60,0,0,112,0,1,192,0,1,0,0,0, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,19,27, + 81,19,0,0,0,224,0,1,224,0,1,240,0,3,56,0, + 6,12,0,12,4,0,0,0,0,0,64,0,0,224,0,0, + 224,0,1,224,0,1,240,0,1,176,0,3,48,0,3,56, + 0,3,24,0,6,28,0,6,28,0,6,12,0,15,254,0, + 12,6,0,8,6,0,24,7,0,24,3,0,16,3,0,48, + 3,128,254,15,224,19,26,78,19,0,0,3,132,0,7,230, + 0,4,252,0,8,56,0,0,0,0,0,0,0,0,64,0, + 0,224,0,0,224,0,1,224,0,1,240,0,1,176,0,3, + 48,0,3,56,0,3,24,0,6,28,0,6,28,0,6,12, + 0,15,254,0,12,6,0,8,6,0,24,7,0,24,3,0, + 16,3,0,48,3,128,254,15,224,19,25,75,19,0,0,6, + 12,0,6,12,0,14,28,0,6,12,0,0,0,0,0,64, + 0,0,224,0,0,224,0,1,224,0,1,240,0,1,176,0, + 3,48,0,3,56,0,3,24,0,6,28,0,6,28,0,6, + 12,0,15,254,0,12,6,0,8,6,0,24,7,0,24,3, + 0,16,3,0,48,3,128,254,15,224,19,27,81,19,0,0, + 0,224,0,1,176,0,1,48,0,3,48,0,1,176,0,1, + 224,0,0,0,0,0,64,0,0,224,0,0,224,0,1,224, + 0,1,240,0,1,176,0,3,48,0,3,56,0,3,24,0, + 6,28,0,6,28,0,6,12,0,15,254,0,12,6,0,8, + 6,0,24,7,0,24,3,0,16,3,0,48,3,128,254,15, + 224,23,20,60,25,0,0,3,255,252,0,124,4,0,108,4, + 0,236,4,0,204,0,1,204,0,1,140,0,1,140,0,3, + 140,0,3,255,248,7,12,16,6,12,0,6,12,0,12,12, + 0,12,12,0,28,12,0,24,12,2,24,12,2,48,12,6, + 252,63,254,15,27,54,17,1,249,3,248,12,28,16,8,48, + 0,96,0,96,0,64,0,192,0,192,0,192,0,192,0,192, + 0,192,0,224,0,96,0,112,0,120,2,60,12,31,248,15, + 240,0,128,0,128,1,224,0,224,0,96,0,192,3,0,13, + 27,54,16,1,0,16,0,56,0,28,0,15,0,3,128,0, + 192,0,0,255,240,48,16,48,16,48,16,48,0,48,0,48, + 0,48,0,48,0,63,224,48,64,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,24,255,248,13,27,54,16,1, + 0,0,32,0,240,1,224,3,128,7,0,12,0,0,0,255, + 240,48,16,48,16,48,16,48,0,48,0,48,0,48,0,48, + 0,63,224,48,64,48,0,48,0,48,0,48,0,48,0,48, + 8,48,8,48,24,255,248,13,27,54,16,1,0,3,0,7, + 128,15,192,28,192,56,96,32,48,0,0,255,240,48,16,48, + 16,48,16,48,0,48,0,48,0,48,0,48,0,63,224,48, + 64,48,0,48,0,48,0,48,0,48,0,48,8,48,8,48, + 24,255,248,13,25,50,16,1,0,24,48,56,112,56,112,48, + 96,0,0,255,240,48,16,48,16,48,16,48,0,48,0,48, + 0,48,0,48,0,63,224,48,64,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,24,255,248,9,27,54,10,255, + 0,96,0,240,0,120,0,28,0,7,0,1,0,0,0,31, + 128,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,31,128,8,27,27,10,2,0,6,15,30, + 56,96,128,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,10,27,54,10,0,0,28,0, + 30,0,62,0,115,0,193,128,128,192,0,0,63,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,63,0,10,25,50,10,0,0,193,128,225,192,225,192, + 193,128,0,0,63,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,63,0,18,20,60,19, + 0,0,31,240,0,120,28,0,24,6,0,24,3,0,24,1, + 128,24,1,128,24,1,192,24,0,192,24,0,192,255,128,192, + 24,0,192,24,0,192,24,0,192,24,1,128,24,1,128,24, + 1,128,24,3,0,24,6,0,24,28,0,127,240,0,19,26, + 78,21,1,0,3,132,0,7,230,0,4,124,0,8,56,0, + 0,0,0,0,0,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,27,81,19,1,0,12,0,0,30,0,0,15,0, + 0,3,128,0,0,224,0,0,32,0,0,0,0,3,240,0, + 12,24,0,16,12,0,48,6,0,32,3,0,96,3,0,64, + 3,128,192,1,128,192,1,128,192,1,128,192,1,128,192,1, + 128,192,1,128,224,1,0,96,3,0,96,2,0,48,6,0, + 56,4,0,12,24,0,7,224,0,17,27,81,19,1,0,0, + 24,0,0,60,0,0,120,0,0,224,0,1,128,0,2,0, + 0,0,0,0,3,240,0,12,24,0,16,12,0,48,6,0, + 32,3,0,96,3,0,64,3,128,192,1,128,192,1,128,192, + 1,128,192,1,128,192,1,128,192,1,128,224,1,0,96,3, + 0,96,2,0,48,6,0,56,4,0,12,24,0,7,224,0, + 17,27,81,19,1,0,1,192,0,1,224,0,3,224,0,7, + 48,0,12,24,0,8,12,0,0,0,0,3,240,0,12,24, + 0,16,12,0,48,6,0,32,3,0,96,3,0,64,3,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,192, + 1,128,224,1,0,96,3,0,96,2,0,48,6,0,56,4, + 0,12,24,0,7,224,0,17,26,78,19,1,0,3,4,0, + 7,204,0,8,248,0,16,112,0,0,0,0,0,0,0,3, + 240,0,12,24,0,16,12,0,48,6,0,32,3,0,96,3, + 0,64,3,128,192,1,128,192,1,128,192,1,128,192,1,128, + 192,1,128,192,1,128,224,1,0,96,3,0,96,2,0,48, + 6,0,56,4,0,12,24,0,7,224,0,17,25,75,19,1, + 0,12,24,0,14,28,0,14,28,0,12,24,0,0,0,0, + 3,240,0,12,24,0,16,12,0,48,6,0,32,3,0,96, + 3,0,64,3,128,192,1,128,192,1,128,192,1,128,192,1, + 128,192,1,128,192,1,128,224,1,0,96,3,0,96,2,0, + 48,6,0,56,4,0,12,24,0,7,224,0,11,10,20,13, + 1,4,192,96,96,192,49,128,27,0,14,0,14,0,27,0, + 49,128,96,192,192,96,17,21,63,19,1,255,3,241,128,4, + 31,0,24,14,0,48,30,0,32,31,0,96,63,0,64,59, + 128,192,115,128,192,225,128,192,225,128,193,193,128,195,129,128, + 195,1,128,231,1,0,110,3,0,124,2,0,124,6,0,56, + 4,0,124,24,0,199,224,0,128,0,0,19,27,81,21,1, + 0,6,0,0,15,0,0,7,128,0,1,192,0,0,96,0, + 0,16,0,0,0,0,252,7,224,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,0,24,3,0,28,6,0,14,12,0,3, + 240,0,19,27,81,21,1,0,0,12,0,0,30,0,0,60, + 0,0,112,0,0,192,0,1,0,0,0,0,0,252,7,224, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,0,24,3,0, + 28,6,0,14,12,0,3,240,0,19,27,81,21,1,0,0, + 224,0,0,240,0,1,240,0,3,152,0,6,12,0,4,6, + 0,0,0,0,252,7,224,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,0,24,3,0,28,6,0,14,12,0,3,240,0, + 19,25,75,21,1,0,6,12,0,7,14,0,7,14,0,6, + 12,0,0,0,0,252,7,224,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,0,24,3,0,28,6,0,14,12,0,3,240, + 0,18,27,81,19,0,0,0,12,0,0,30,0,0,60,0, + 0,112,0,0,192,0,1,0,0,0,0,0,240,31,192,56, + 7,0,28,6,0,12,12,0,14,12,0,7,24,0,7,24, + 0,3,48,0,3,176,0,1,224,0,1,224,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,7,248,0,15,20,40,17,1,0,254,0, + 48,0,48,0,48,0,63,224,48,120,48,28,48,14,48,6, + 48,6,48,6,48,6,48,12,48,12,52,56,51,224,48,0, + 48,0,48,0,254,0,16,24,48,18,1,0,1,224,6,56, + 8,24,16,28,16,12,48,12,48,12,48,28,48,56,48,240, + 49,192,49,128,49,128,49,192,48,240,48,124,48,62,48,15, + 48,7,48,3,49,3,49,3,49,134,241,248,13,23,46,15, + 1,0,56,0,56,0,28,0,14,0,6,0,3,0,1,0, + 0,0,15,192,48,224,112,96,96,96,0,96,0,96,15,224, + 63,224,126,96,240,96,224,96,192,96,192,96,65,224,62,120, + 13,23,46,15,1,0,0,224,0,224,1,192,1,128,3,0, + 2,0,4,0,0,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,13,23,46,15,1,0,7,0,7,0,15,128, + 29,192,24,192,48,96,32,32,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,21,42,15,1,0,28,16, + 63,32,35,192,64,0,0,0,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,21,42,15,1,0,48,96, + 56,112,48,96,48,96,0,0,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,22,44,15,1,0,7,128, + 13,128,12,192,12,128,13,128,15,0,0,0,15,192,48,224, + 112,96,96,96,0,96,0,96,15,224,63,224,126,96,240,96, + 224,96,192,96,192,96,65,224,62,120,19,15,45,22,2,0, + 31,143,0,113,176,192,96,224,192,224,224,96,128,192,96,0, + 192,96,7,255,192,28,192,0,112,192,0,96,192,0,192,192, + 0,192,224,0,193,96,64,194,112,224,124,31,0,12,22,44, + 14,1,249,7,224,24,96,32,32,96,0,64,0,192,0,192, + 0,192,0,192,0,192,0,224,0,112,16,120,96,63,192,31, + 128,2,0,2,0,7,128,3,128,1,128,3,0,12,0,13, + 23,46,15,1,0,24,0,60,0,12,0,6,0,3,0,1, + 0,1,128,0,0,7,192,24,96,32,48,96,24,64,24,192, + 24,255,240,192,0,192,0,192,0,224,0,96,0,112,8,56, + 48,15,192,13,23,46,15,1,0,0,96,0,240,0,192,1, + 128,1,128,3,0,6,0,0,0,7,192,24,96,32,48,96, + 24,64,24,192,24,255,240,192,0,192,0,192,0,224,0,96, + 0,112,8,56,48,15,192,13,23,46,15,1,0,3,0,7, + 128,15,128,12,192,24,96,16,32,32,16,0,0,7,192,24, + 96,32,48,96,24,64,24,192,24,255,240,192,0,192,0,192, + 0,224,0,96,0,112,8,56,48,15,192,13,21,42,15,1, + 0,24,48,56,112,56,112,48,96,0,0,0,0,7,192,24, + 96,32,48,96,24,64,24,192,24,255,240,192,0,192,0,192, + 0,224,0,96,0,112,8,56,48,15,192,7,23,23,9,0, + 0,224,224,112,48,24,12,4,0,24,120,24,24,24,24,24, + 24,24,24,24,24,24,24,126,8,23,23,9,1,0,7,7, + 14,12,24,48,32,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,252,9,23,46,9,0,0,28,0,28,0,62, + 0,119,0,99,0,193,128,128,128,0,0,24,0,120,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,126,0,10,21,42,9,0,0,193, + 128,193,128,227,192,193,128,0,0,0,0,24,0,120,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,126,0,14,23,46,16,1,0,12, + 0,62,24,3,240,3,192,30,224,48,96,0,112,0,56,7, + 152,24,120,32,60,96,28,64,12,192,12,192,12,192,12,192, + 12,192,8,224,24,96,16,112,48,56,96,15,128,16,21,42, + 18,1,0,7,8,15,144,24,224,16,0,0,0,0,0,112, + 112,177,136,54,12,56,12,56,12,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,252,63,14,23,46, + 16,1,0,28,0,28,0,14,0,6,0,3,0,1,128,0, + 128,0,0,7,192,24,112,32,56,96,24,64,28,192,12,192, + 12,192,12,192,12,192,12,224,8,96,24,112,16,56,32,15, + 192,14,23,46,16,1,0,0,112,0,112,0,224,1,192,1, + 128,3,0,2,0,0,0,7,192,24,112,32,56,96,24,64, + 28,192,12,192,12,192,12,192,12,192,12,224,8,96,24,112, + 16,56,32,15,192,14,23,46,16,1,0,3,128,3,128,7, + 192,14,192,12,96,24,48,48,16,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,14,21,42,16,1,0,14, + 8,31,144,17,224,32,0,0,0,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,14,21,42,16,1,0,24, + 48,24,48,56,112,24,48,0,0,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,11,10,20,13,1,4,6, + 0,6,0,6,0,0,0,0,0,255,224,0,0,6,0,6, + 0,6,0,14,16,32,16,1,255,7,204,24,120,32,120,96, + 120,64,252,193,220,193,140,195,140,199,12,198,12,236,8,124, + 24,120,16,120,32,207,192,128,0,15,23,46,17,1,0,28, + 0,28,0,14,0,7,0,3,0,1,128,0,128,0,0,48, + 24,240,120,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,56,24,222,15,24,15,23,46, + 17,1,0,0,112,0,112,0,224,0,192,1,128,1,0,2, + 0,0,0,48,24,240,120,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,56,24,222,15, + 24,15,23,46,17,1,0,3,128,3,128,7,192,14,224,12, + 96,24,48,16,16,0,0,48,24,240,120,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 56,24,222,15,24,15,21,42,17,1,0,24,48,28,56,24, + 48,24,48,0,0,0,0,48,24,240,120,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 56,24,222,15,24,16,31,62,16,255,248,0,28,0,28,0, + 56,0,112,0,96,0,192,0,128,0,0,126,31,28,6,28, + 4,12,12,14,12,14,8,6,24,7,24,3,16,3,48,3, + 176,1,160,1,224,1,224,0,192,0,192,0,128,1,128,1, + 128,3,0,126,0,124,0,248,0,15,32,64,17,1,248,16, + 0,240,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,240,51,24,52,28,56,12,48,14,48,6,48,6,48, + 6,48,6,48,6,48,4,48,12,56,8,60,16,55,224,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,254,0,16, + 29,58,16,255,248,6,12,14,28,14,28,6,12,0,0,0, + 0,126,31,28,6,28,4,12,12,14,12,14,8,6,24,7, + 24,3,16,3,48,3,176,1,160,1,224,1,224,0,192,0, + 192,0,128,1,128,1,128,3,0,126,0,124,0,248,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 19 + Calculated Max Values w=13 h=30 x= 2 y=11 dx=15 dy= 0 ascent=25 len=60 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent= 0 + X Font ascent =19 descent= 0 + Max Font ascent =25 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20n[619] U8G_SECTION(".progmem.u8g_font_gdr20n") = { + 0,47,44,240,246,19,0,0,0,0,42,57,0,25,251,19, + 0,12,13,26,14,1,11,6,0,6,0,134,0,102,48,242, + 240,27,128,6,0,27,128,114,240,230,48,6,32,6,0,6, + 0,12,11,22,13,1,3,6,0,6,0,6,0,6,0,6, + 0,255,240,6,0,6,0,6,0,6,0,6,0,4,8,8, + 7,2,251,112,240,48,48,48,32,64,192,9,1,2,11,1, + 8,255,128,4,4,4,7,2,0,112,240,240,224,13,30,60, + 15,1,251,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,1,192,1,128,1,128,3,128,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,24,0,56, + 0,48,0,48,0,112,0,96,0,96,0,224,0,192,0,13, + 19,38,15,1,0,7,128,24,192,32,96,96,48,64,48,64, + 56,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 16,96,16,96,48,48,32,24,64,15,128,11,19,38,15,2, + 0,2,0,30,0,126,0,134,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,15,0,127,224,11,19,38,15,2,0,15,128,48, + 192,96,96,96,96,96,96,0,96,0,96,0,192,0,192,1, + 128,3,0,7,0,6,0,12,0,24,0,48,32,112,32,224, + 32,255,224,11,19,38,15,2,0,31,0,113,128,96,192,224, + 192,0,192,0,192,1,128,3,0,15,0,3,192,0,192,0, + 224,0,96,0,96,0,96,0,96,128,192,193,128,127,0,12, + 19,38,15,1,0,0,64,1,192,3,192,3,192,6,192,12, + 192,12,192,24,192,48,192,48,192,96,192,224,192,255,240,0, + 192,0,192,0,192,0,192,0,192,7,240,11,19,38,15,2, + 0,63,224,32,0,32,0,96,0,96,0,96,0,96,0,127, + 0,97,192,0,192,0,96,0,96,0,96,0,96,0,96,0, + 64,128,192,193,128,63,0,12,20,40,15,2,0,0,192,7, + 0,14,0,24,0,48,0,112,0,96,0,96,0,207,128,240, + 224,224,96,192,112,192,48,192,48,192,48,96,48,96,32,32, + 96,48,64,15,128,12,19,38,15,2,0,255,240,128,96,128, + 96,0,224,0,192,0,192,1,128,1,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,56,0,48, + 0,12,19,38,15,2,0,31,128,48,192,96,96,224,96,224, + 96,224,96,248,192,127,128,31,128,31,192,49,224,96,112,192, + 112,192,48,192,48,192,32,96,32,112,64,31,128,12,20,40, + 15,2,255,15,128,49,192,32,224,64,96,192,112,192,48,192, + 48,192,48,192,48,96,112,48,176,31,48,0,96,0,96,0, + 96,0,192,1,128,7,0,30,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=16 dx=27 dy= 0 ascent=26 len=80 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x=-4 y=-8 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =26 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20r[4232] U8G_SECTION(".progmem.u8g_font_gdr20r") = { + 0,47,44,240,246,20,4,220,11,144,32,127,248,26,248,25, + 248,0,0,0,7,0,0,4,23,23,9,2,0,48,112,112, + 112,112,112,112,112,112,96,96,96,96,96,96,96,96,64,0, + 112,240,240,224,8,10,10,14,3,13,227,199,199,199,199,195, + 195,195,195,194,14,18,36,15,1,2,1,24,3,24,3,16, + 2,48,6,48,63,252,4,96,12,96,12,96,12,64,8,192, + 255,248,24,128,17,128,49,128,49,128,49,0,35,0,12,25, + 50,15,1,253,6,0,6,0,6,0,31,192,63,240,102,96, + 102,0,102,0,102,0,118,0,62,0,31,128,7,192,7,224, + 6,112,6,48,6,48,134,48,198,48,230,96,255,192,127,128, + 6,0,6,0,6,0,20,20,60,22,1,255,30,0,192,99, + 1,128,67,3,128,193,131,0,193,134,0,193,140,0,193,156, + 0,97,24,0,99,48,0,60,115,192,0,108,96,0,200,96, + 1,152,48,3,152,48,3,24,48,6,24,48,14,8,32,28, + 12,96,24,7,128,48,0,0,19,22,66,21,2,0,3,192, + 0,4,224,0,8,96,0,24,96,0,24,96,0,24,96,0, + 24,192,0,29,128,0,15,0,0,12,0,0,28,63,224,62, + 14,128,119,6,0,99,134,0,193,134,0,193,198,0,192,236, + 0,192,124,0,192,60,0,96,30,0,48,47,192,31,195,128, + 3,10,10,8,3,13,224,192,192,192,192,192,192,192,192,192, + 7,30,30,10,2,251,2,12,24,24,48,48,96,96,96,96, + 192,192,192,192,192,192,192,192,192,192,224,96,96,96,112,48, + 56,24,12,2,7,30,30,10,1,251,128,96,48,56,24,28, + 12,12,12,14,6,6,6,6,6,6,6,6,6,6,12,12, + 12,12,24,24,48,48,96,128,12,13,26,14,1,11,6,0, + 6,0,134,0,102,48,242,240,27,128,6,0,27,128,114,240, + 230,48,6,32,6,0,6,0,12,11,22,13,1,3,6,0, + 6,0,6,0,6,0,6,0,255,240,6,0,6,0,6,0, + 6,0,6,0,4,8,8,7,2,251,112,240,48,48,48,32, + 64,192,9,1,2,11,1,8,255,128,4,4,4,7,2,0, + 112,240,240,224,13,30,60,15,1,251,0,24,0,56,0,48, + 0,48,0,112,0,96,0,96,0,224,0,192,1,192,1,128, + 1,128,3,128,3,0,7,0,6,0,6,0,14,0,12,0, + 12,0,28,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,13,19,38,15,1,0,7,128,24,192, + 32,96,96,48,64,48,64,56,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,16,96,16,96,48,48,32,24,64, + 15,128,11,19,38,15,2,0,2,0,30,0,126,0,134,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,15,0,127,224,11,19, + 38,15,2,0,15,128,48,192,96,96,96,96,96,96,0,96, + 0,96,0,192,0,192,1,128,3,0,7,0,6,0,12,0, + 24,0,48,32,112,32,224,32,255,224,11,19,38,15,2,0, + 31,0,113,128,96,192,224,192,0,192,0,192,1,128,3,0, + 15,0,3,192,0,192,0,224,0,96,0,96,0,96,0,96, + 128,192,193,128,127,0,12,19,38,15,1,0,0,64,1,192, + 3,192,3,192,6,192,12,192,12,192,24,192,48,192,48,192, + 96,192,224,192,255,240,0,192,0,192,0,192,0,192,0,192, + 7,240,11,19,38,15,2,0,63,224,32,0,32,0,96,0, + 96,0,96,0,96,0,127,0,97,192,0,192,0,96,0,96, + 0,96,0,96,0,96,0,64,128,192,193,128,63,0,12,20, + 40,15,2,0,0,192,7,0,14,0,24,0,48,0,112,0, + 96,0,96,0,207,128,240,224,224,96,192,112,192,48,192,48, + 192,48,96,48,96,32,32,96,48,64,15,128,12,19,38,15, + 2,0,255,240,128,96,128,96,0,224,0,192,0,192,1,128, + 1,128,3,0,3,0,7,0,6,0,6,0,12,0,12,0, + 28,0,24,0,56,0,48,0,12,19,38,15,2,0,31,128, + 48,192,96,96,224,96,224,96,224,96,248,192,127,128,31,128, + 31,192,49,224,96,112,192,112,192,48,192,48,192,32,96,32, + 112,64,31,128,12,20,40,15,2,255,15,128,49,192,32,224, + 64,96,192,112,192,48,192,48,192,48,192,48,96,112,48,176, + 31,48,0,96,0,96,0,96,0,192,1,128,7,0,30,0, + 48,0,4,15,15,7,2,0,112,240,240,96,0,0,0,0, + 0,0,0,112,240,240,224,4,20,20,7,2,251,112,240,240, + 96,0,0,0,0,0,0,0,0,112,240,48,48,48,32,64, + 192,12,10,20,14,1,4,0,48,0,240,7,192,62,0,248, + 0,240,0,126,0,15,128,1,240,0,112,12,6,12,14,1, + 6,255,240,0,0,0,0,0,0,0,0,255,240,12,10,20, + 14,1,4,96,0,248,0,31,0,7,224,0,240,1,240,7, + 192,62,0,240,0,192,0,10,23,46,14,2,0,31,0,99, + 128,65,192,192,192,192,192,128,192,0,192,1,128,1,128,3, + 0,3,0,6,0,14,0,12,0,12,0,12,0,12,0,0, + 0,0,0,14,0,30,0,30,0,28,0,24,25,75,26,1, + 251,0,63,128,1,192,224,2,0,56,12,0,28,24,0,12, + 16,60,142,32,67,134,96,129,135,65,129,131,193,1,131,195, + 1,131,195,1,131,195,1,131,195,1,131,195,1,131,195,1, + 130,225,129,134,97,131,132,112,197,200,48,120,240,56,0,0, + 28,0,4,15,0,28,3,192,112,0,127,128,19,20,60,19, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,14,20, + 40,17,1,0,63,192,240,112,48,56,48,24,48,24,48,24, + 48,24,48,48,48,224,63,224,48,112,48,56,48,28,48,12, + 48,12,48,12,48,12,48,24,48,48,255,192,14,20,40,17, + 1,0,3,248,12,28,16,8,48,0,96,0,96,0,64,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,112,0,56,4,28,24,7,224,17,20,60,19,1,0, + 63,224,0,240,56,0,48,12,0,48,6,0,48,3,0,48, + 3,0,48,3,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,3,0,48,3,0,48,3,0, + 48,6,0,48,12,0,48,56,0,255,224,0,13,20,40,16, + 1,0,255,240,48,16,48,16,48,16,48,0,48,0,48,0, + 48,0,48,0,63,224,48,64,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,12,20,40,15,1,0, + 255,240,48,16,48,16,48,16,48,0,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,254,0,18,20,60,19,1,0,1,254, + 0,6,15,0,8,0,0,16,0,0,32,0,0,96,0,0, + 64,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 31,192,192,7,0,192,3,0,96,3,0,96,3,0,48,3, + 0,24,3,0,12,3,0,3,252,0,19,20,60,21,1,0, + 252,7,224,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,63,255,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,252,7,224,6,20,20,10, + 2,0,252,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,11,25,50,10,253,251,15,224,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,0,1,0,3,0,98,0,252,0,17,20, + 60,19,1,0,252,127,0,48,24,0,48,48,0,48,96,0, + 48,224,0,49,192,0,49,128,0,51,0,0,54,0,0,62, + 0,0,54,0,0,55,0,0,51,128,0,49,192,0,48,224, + 0,48,112,0,48,120,0,48,60,0,48,30,0,252,15,128, + 13,20,40,15,1,0,252,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,8,48,8,48,24,255,248,24,20, + 60,26,1,0,248,0,62,60,0,56,60,0,120,62,0,120, + 54,0,216,54,0,216,55,0,152,51,1,152,51,129,152,49, + 131,24,49,195,24,49,198,24,48,198,24,48,230,24,48,108, + 24,48,124,24,48,56,24,48,56,24,48,56,24,252,16,255, + 19,20,60,21,1,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,20,60,19,1,0,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,2,0,48,6,0,56,4,0,12,24, + 0,7,224,0,15,20,40,17,1,0,63,224,240,56,48,28, + 48,14,48,6,48,6,48,6,48,6,48,12,48,12,52,56, + 51,224,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,19,25,75,19,1,251,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,3,0,48,6,0,24,4,0,12,24, + 0,7,240,0,0,112,0,0,24,0,0,14,32,0,7,192, + 0,1,128,18,20,60,18,1,0,63,192,0,240,112,0,48, + 24,0,48,12,0,48,12,0,48,12,0,48,12,0,48,24, + 0,48,112,0,63,224,0,63,192,0,49,192,0,48,224,0, + 48,112,0,48,112,0,48,56,0,48,60,0,48,28,0,48, + 15,0,252,15,192,12,20,40,15,2,0,15,224,48,224,64, + 64,192,0,192,0,224,0,248,0,126,0,127,0,31,192,7, + 224,1,240,0,240,0,112,0,48,0,48,128,32,192,96,224, + 192,127,0,16,20,40,18,1,0,255,255,129,131,129,129,129, + 129,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,15, + 240,19,20,60,21,1,0,252,7,224,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,0,24,3,0,28,6,0,14,12,0, + 3,240,0,20,20,60,21,0,0,254,3,240,56,0,192,24, + 0,128,28,1,128,12,1,128,14,3,0,14,3,0,6,3, + 0,7,6,0,7,6,0,3,6,0,3,140,0,1,140,0, + 1,204,0,1,216,0,0,216,0,0,248,0,0,240,0,0, + 112,0,0,96,0,27,20,80,27,0,0,254,4,15,224,56, + 4,3,0,24,14,3,0,24,14,3,0,28,15,3,0,28, + 27,2,0,12,27,6,0,12,27,134,0,12,49,134,0,14, + 49,134,0,14,49,196,0,6,96,204,0,6,96,204,0,7, + 96,236,0,7,192,108,0,3,192,120,0,3,192,120,0,3, + 128,56,0,3,128,56,0,3,0,48,0,19,20,60,20,0, + 0,127,31,192,60,7,0,28,6,0,14,6,0,7,12,0, + 7,28,0,3,152,0,1,240,0,1,240,0,0,224,0,0, + 240,0,1,240,0,1,184,0,3,28,0,7,12,0,6,14, + 0,12,7,0,28,3,128,56,3,192,255,15,224,18,20,60, + 19,0,0,240,31,192,56,7,0,28,6,0,12,12,0,14, + 12,0,7,24,0,7,24,0,3,48,0,3,176,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,7,248,0,14, + 20,40,17,1,0,127,252,96,28,64,56,64,120,0,112,0, + 224,0,224,1,192,3,192,3,128,7,0,7,0,14,0,30, + 0,28,0,56,0,56,4,112,4,240,12,255,252,7,30,30, + 10,2,251,254,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 254,13,30,60,15,1,251,192,0,192,0,96,0,96,0,112, + 0,48,0,48,0,24,0,24,0,28,0,12,0,12,0,14, + 0,6,0,6,0,3,0,3,0,3,128,1,128,1,128,0, + 192,0,192,0,192,0,96,0,96,0,112,0,48,0,48,0, + 24,0,24,7,30,30,10,1,251,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,254,12,15,30,16,2,9,2,0,6, + 0,15,0,15,0,27,0,27,128,17,128,49,192,49,192,96, + 192,96,224,96,96,192,112,192,48,128,32,13,1,2,15,1, + 253,255,248,7,7,7,10,0,16,96,240,56,24,12,4,2, + 13,15,30,15,1,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,15,24,48,16,0,0,48,0,240,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,240,49,248, + 54,28,60,12,56,14,48,6,48,6,48,6,48,6,48,6, + 48,4,48,12,48,8,28,16,7,224,12,15,30,14,1,0, + 7,224,24,96,32,32,96,0,64,0,192,0,192,0,192,0, + 192,0,192,0,192,0,96,0,112,32,56,112,31,128,15,24, + 48,17,1,0,0,24,0,120,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,7,248,24,56,32,24,96,24,64,24, + 192,24,192,24,192,24,192,24,192,24,192,24,96,24,112,56, + 56,222,15,24,13,15,30,15,1,0,7,192,24,96,32,48, + 96,24,64,24,192,24,255,240,192,0,192,0,192,0,224,0, + 96,0,112,8,56,48,15,192,11,24,48,10,1,0,3,224, + 4,192,24,0,16,0,48,0,48,0,48,0,48,0,48,0, + 255,0,50,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,15,23, + 46,16,1,248,7,134,24,252,32,96,96,48,96,48,96,48, + 96,48,112,96,56,64,31,128,8,0,16,0,60,0,63,224, + 15,248,63,252,112,124,224,12,192,12,192,8,96,16,112,32, + 31,192,16,24,48,18,1,0,16,0,240,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,112,49,136,54,12, + 56,12,56,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,21,21,9,1,0,48,112, + 112,96,0,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,29,58,8,252,248,1,128,3,128,3,128,3, + 0,0,0,0,0,1,128,7,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,0,3,0,2,0,124, + 0,248,0,15,24,48,16,1,0,16,0,240,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,252,48,112,48, + 224,49,128,51,0,54,0,62,0,54,0,55,0,51,128,49, + 192,48,224,48,112,48,120,252,62,6,24,24,9,1,0,16, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,24,15,45,26,1,0,240,240,120, + 51,25,140,52,26,12,56,28,12,56,28,12,48,24,12,48, + 24,12,48,24,12,48,24,12,48,24,12,48,24,12,48,24, + 12,48,24,12,48,24,12,252,126,63,16,15,30,18,1,0, + 112,112,177,136,54,12,56,12,56,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,252,63,14,15, + 30,16,1,0,7,192,24,112,32,56,96,24,64,28,192,12, + 192,12,192,12,192,12,192,12,224,8,96,24,112,16,56,32, + 15,192,15,23,46,17,1,248,112,240,179,24,52,28,56,12, + 48,14,48,6,48,6,48,6,48,6,48,6,48,4,48,12, + 48,8,60,16,55,224,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,254,0,14,23,46,16,1,248,7,144,24,112, + 32,48,96,48,64,48,192,48,192,48,192,48,192,48,192,48, + 192,48,96,48,96,112,48,176,31,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,1,252,11,15,30,13,1,0, + 49,224,243,224,52,64,56,64,56,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,9,15, + 30,12,2,0,63,0,67,0,193,0,192,0,224,0,248,0, + 126,0,63,0,15,128,3,128,1,128,129,128,129,0,195,0, + 252,0,10,20,40,11,1,0,16,0,48,0,48,0,48,0, + 48,0,255,192,49,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,128,31,64, + 15,15,30,17,1,0,48,24,240,120,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,56, + 24,222,15,24,15,15,30,16,0,0,252,62,56,12,56,8, + 24,24,28,24,12,16,12,48,14,48,6,32,7,96,7,64, + 3,64,3,192,1,128,1,0,22,15,45,23,0,0,252,16, + 124,48,24,24,56,56,16,24,56,48,24,60,48,28,108,48, + 12,110,32,12,78,96,12,198,96,14,199,64,6,131,64,7, + 131,192,7,131,192,3,1,128,2,1,0,16,15,30,16,0, + 0,254,63,60,28,28,16,14,48,6,96,7,192,3,192,1, + 192,3,192,6,224,12,112,12,56,24,24,56,28,252,63,16, + 23,46,16,255,248,126,31,28,6,28,4,12,12,14,12,14, + 8,6,24,7,24,3,16,3,48,3,176,1,160,1,224,1, + 224,0,192,0,192,0,128,1,128,1,128,3,0,126,0,124, + 0,248,0,12,15,30,14,1,0,127,240,64,96,64,224,1, + 192,1,128,3,128,7,0,6,0,14,0,28,0,28,0,56, + 16,112,16,112,48,255,240,8,30,30,11,2,251,3,6,12, + 8,24,24,24,24,28,12,12,12,12,24,48,248,28,12,12, + 12,12,28,24,24,24,24,24,12,6,3,2,32,32,7,3, + 250,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,30,30,11,1,251,192,96,48,24,24,24,24,24,56, + 48,48,48,48,56,31,12,24,48,48,48,48,56,24,24,24, + 24,16,48,96,192,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=33 h=41 x= 4 y=23 dx=34 dy= 0 ascent=34 len=132 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x=-4 y=-11 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =34 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25[13042] U8G_SECTION(".progmem.u8g_font_gdr25") = { + 0,59,57,236,242,25,6,209,16,163,32,255,247,34,245,31, + 247,0,0,0,9,0,0,5,30,30,11,3,255,48,112,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 96,96,96,0,0,0,112,248,248,248,112,11,13,26,17,3, + 16,112,224,241,224,241,224,241,224,241,224,112,224,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,17,23,69,19,2, + 2,0,194,0,1,134,0,1,134,0,1,142,0,3,140,0, + 3,12,0,3,12,0,63,255,128,63,255,128,6,24,0,6, + 56,0,14,48,0,12,48,0,12,48,0,255,254,0,255,254, + 0,24,96,0,24,224,0,48,192,0,48,192,0,48,192,0, + 113,192,0,97,128,0,16,30,60,19,1,253,1,128,1,128, + 1,128,3,224,15,252,57,254,49,156,113,136,113,128,113,128, + 121,128,61,128,63,128,31,224,7,248,1,252,1,190,1,143, + 1,143,1,135,193,135,193,135,225,142,241,142,255,252,63,240, + 15,192,1,128,1,128,1,128,25,25,100,27,1,255,15,128, + 6,0,63,192,28,0,113,224,56,0,112,224,56,0,224,112, + 112,0,224,112,224,0,224,112,224,0,224,113,192,0,224,115, + 128,0,112,231,0,0,120,231,0,0,63,206,60,0,31,28, + 254,0,0,29,207,0,0,57,199,0,0,115,131,128,0,227, + 131,128,0,227,131,128,1,195,131,128,3,131,131,128,3,131, + 131,128,7,1,199,0,14,1,199,0,28,0,254,0,24,0, + 120,0,24,28,84,27,2,0,0,248,0,1,252,0,3,30, + 0,7,14,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,7,112,0,7,192,0,7,131,255,15, + 135,255,29,193,242,57,224,240,112,240,112,112,112,112,224,120, + 112,224,60,112,224,30,224,224,15,224,224,7,192,240,3,192, + 120,3,240,60,30,248,31,252,127,7,224,56,4,13,13,10, + 3,16,112,240,240,240,240,112,96,96,96,96,96,96,96,9, + 37,74,13,3,250,0,128,3,128,7,0,14,0,12,0,28, + 0,24,0,56,0,56,0,112,0,112,0,112,0,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,112,0,112,0,112,0,112,0,56, + 0,56,0,28,0,28,0,14,0,7,0,3,128,0,128,9, + 37,74,13,1,250,128,0,224,0,112,0,56,0,28,0,28, + 0,14,0,14,0,14,0,7,0,7,0,7,0,7,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,7,0,7,0,7,0,7,0,14,0,14, + 0,12,0,28,0,24,0,56,0,112,0,224,0,128,0,16, + 16,32,18,1,14,1,128,1,128,1,128,97,132,113,142,121, + 159,31,248,7,192,3,192,31,248,121,158,241,142,33,134,1, + 128,1,128,1,128,15,14,28,16,1,4,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,10,10,9,2,250,60,252,60, + 28,28,24,24,48,32,64,11,2,4,13,1,9,127,224,255, + 224,5,5,5,9,2,255,112,248,248,248,112,17,38,114,19, + 1,249,0,1,128,0,7,0,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,56,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,192,0,1,192,0,1,192,0,3,128, + 0,3,128,0,3,128,0,7,0,0,7,0,0,14,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,28,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,112,0,0,224,0, + 0,192,0,0,17,24,72,19,1,0,3,224,0,15,248,0, + 28,60,0,56,30,0,48,14,0,112,7,0,96,7,0,96, + 7,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,3,0,112,7,0, + 112,7,0,120,6,0,60,14,0,30,28,0,15,248,0,7, + 224,0,14,24,48,19,3,0,1,128,7,128,63,128,255,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,15,224,127,252,14,24,48,19,2,0,3,224, + 15,248,24,120,48,60,112,28,96,28,224,28,0,28,0,24, + 0,56,0,48,0,112,0,224,1,192,1,128,3,128,7,0, + 14,0,28,0,24,4,48,4,112,12,255,252,255,252,15,24, + 48,19,1,0,3,224,15,248,28,120,56,60,112,28,112,28, + 0,28,0,24,0,48,0,96,3,224,3,248,0,60,0,28, + 0,14,0,14,0,14,0,14,0,14,0,28,64,28,240,120, + 63,240,15,192,16,24,48,19,1,0,0,24,0,120,0,120, + 0,248,1,248,1,184,3,56,7,56,6,56,12,56,28,56, + 24,56,48,56,112,56,96,56,255,255,255,254,0,56,0,56, + 0,56,0,56,0,56,0,124,3,255,15,24,48,19,1,0, + 0,4,31,252,31,248,24,0,24,0,24,0,48,0,48,0, + 48,0,63,224,63,248,48,124,64,28,0,30,0,14,0,14, + 0,14,0,14,0,14,0,28,64,28,240,120,63,240,15,192, + 15,24,48,19,2,0,0,56,0,240,3,192,7,0,14,0, + 28,0,56,0,112,0,112,0,99,224,239,248,248,60,240,28, + 224,30,224,14,224,14,224,14,224,14,112,14,112,12,56,28, + 60,56,31,240,7,192,15,23,46,19,2,0,127,254,255,254, + 192,12,192,12,128,28,0,24,0,56,0,48,0,112,0,96, + 0,96,0,224,0,192,1,192,1,128,3,128,3,0,7,0, + 7,0,14,0,14,0,28,0,56,0,15,24,48,19,2,0, + 15,192,63,240,120,120,112,60,240,28,224,28,224,28,240,24, + 120,48,62,96,31,192,7,240,24,120,48,60,112,30,96,14, + 224,14,224,14,224,14,224,12,112,28,124,56,63,240,15,192, + 15,25,50,19,2,255,7,192,15,240,56,120,48,60,112,28, + 96,28,224,14,224,14,224,14,224,14,240,14,112,30,120,62, + 63,238,15,140,0,28,0,28,0,24,0,56,0,112,0,224, + 1,192,7,128,30,0,48,0,5,19,19,9,2,255,120,248, + 248,248,96,0,0,0,0,0,0,0,0,0,112,248,248,248, + 112,6,24,24,9,2,250,120,248,248,248,96,0,0,0,0, + 0,0,0,0,0,60,252,60,28,28,24,24,48,32,64,15, + 13,26,18,1,5,0,2,0,30,0,254,3,240,31,192,126, + 0,240,0,252,0,63,128,7,224,1,252,0,62,0,12,15, + 8,16,18,1,7,127,254,255,254,0,0,0,0,0,0,0, + 0,127,254,255,254,15,13,26,18,1,5,96,0,252,0,63, + 0,15,224,1,252,0,126,0,30,0,126,3,240,31,192,126, + 0,248,0,192,0,14,30,60,17,2,255,7,224,31,240,56, + 120,112,56,224,28,224,28,224,28,192,28,0,28,0,56,0, + 56,0,112,0,240,0,224,1,192,3,128,3,128,7,0,7, + 0,7,0,7,0,7,0,0,0,0,0,0,0,7,0,15, + 128,15,128,15,128,7,0,30,33,132,32,1,249,0,7,248, + 0,0,63,254,0,0,240,31,128,1,192,7,192,3,0,1, + 224,6,0,0,240,12,0,0,112,24,0,0,120,56,3,198, + 56,48,15,252,56,112,28,60,60,112,56,28,28,96,112,28, + 28,224,96,28,28,224,224,28,28,224,224,28,28,224,224,28, + 28,224,224,28,28,224,224,28,28,224,224,28,24,240,240,28, + 56,112,112,28,48,112,120,60,96,120,60,94,224,56,31,143, + 128,60,15,15,0,30,0,0,0,31,0,0,0,15,128,0, + 32,7,192,0,192,1,248,15,128,0,255,254,0,0,31,240, + 0,23,25,75,24,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,19,25,75,22,1,0,31,240,0,255,254,0,28,31, + 0,28,7,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,0,28,6,0,28,28,0,31,254,0,31,255,0,28, + 15,128,28,3,192,28,1,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,1,224,28,1,192,28,7,128,63,255,0, + 255,252,0,19,25,75,21,1,0,0,254,0,3,255,192,7, + 7,192,12,1,128,24,0,0,56,0,0,112,0,0,112,0, + 0,112,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,112,0,0,112, + 0,0,120,0,0,60,0,64,30,1,224,15,135,128,7,254, + 0,1,248,0,21,25,75,24,1,0,31,248,0,255,255,0, + 28,15,128,28,3,192,28,1,224,28,0,240,28,0,112,28, + 0,112,28,0,120,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,28,0,112, + 28,0,112,28,0,224,28,1,224,28,3,192,28,15,128,63, + 254,0,255,248,0,18,25,75,20,1,0,255,255,0,63,255, + 0,28,3,0,28,1,0,28,1,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,31,252,0,31,252,0,28, + 8,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,64,28,0,192,28,1,128, + 63,255,128,255,255,128,17,25,75,19,1,0,255,255,128,63, + 255,128,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,31,252,0,31,248,0, + 28,24,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,62,0,0,255,128,0,21,25,75,23,1,0,0,127,0, + 1,255,192,7,3,224,14,0,192,28,0,0,56,0,0,48, + 0,0,112,0,0,112,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,15,248,224,1,224,224,0,224,224,0,224, + 112,0,224,112,0,224,120,0,224,60,0,224,30,0,224,15, + 129,192,7,255,128,1,252,0,24,25,75,26,1,0,255,129, + 255,62,0,124,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31, + 255,248,31,255,248,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,62,0,124,255,129,255,9,25,50,12,1,0,255, + 128,62,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,62,0,255, + 128,15,32,64,12,252,249,7,254,0,248,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,96,0,96,0,224,0, + 192,49,128,127,0,252,0,22,25,75,23,1,0,255,135,248, + 62,1,192,28,3,128,28,7,0,28,14,0,28,12,0,28, + 24,0,28,56,0,28,112,0,28,224,0,29,192,0,31,128, + 0,31,192,0,29,224,0,28,224,0,28,112,0,28,56,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,28, + 3,224,62,1,252,255,128,240,18,25,75,19,1,0,255,128, + 0,62,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,192,28,0,128, + 30,1,128,63,255,128,255,255,128,30,25,100,32,1,0,254, + 0,1,248,30,0,3,224,31,0,3,224,31,0,3,224,31, + 0,7,224,27,128,6,224,27,128,14,224,25,192,12,224,25, + 192,12,224,24,224,28,224,24,224,24,224,24,224,56,224,24, + 112,48,224,24,112,112,224,24,56,96,224,24,56,96,224,24, + 28,224,224,24,28,192,224,24,31,192,224,24,15,128,224,24, + 15,128,224,24,7,128,224,24,7,0,224,60,7,1,224,255, + 2,7,252,24,25,75,26,1,0,248,1,255,60,0,124,30, + 0,56,30,0,56,31,0,56,31,128,56,29,128,56,29,192, + 56,28,224,56,28,96,56,28,112,56,28,56,56,28,28,56, + 28,28,56,28,14,56,28,7,56,28,7,56,28,3,184,28, + 3,248,28,1,248,28,0,248,28,0,248,28,0,120,62,0, + 56,255,128,24,21,25,75,24,1,0,0,252,0,3,255,0, + 7,7,128,12,3,192,24,1,224,56,0,224,112,0,112,112, + 0,112,96,0,120,224,0,56,224,0,56,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,240,0,48,112,0,112, + 112,0,96,120,0,224,60,0,192,30,1,128,15,7,0,7, + 254,0,1,248,0,18,25,75,21,1,0,31,248,0,255,254, + 0,28,31,0,28,7,128,28,3,192,28,1,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,3,128,28,7,128,28, + 15,0,29,254,0,28,248,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 62,0,0,255,128,0,24,31,93,24,1,250,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,112,56,0,224,60,0,192,30,1,192,15,7, + 128,7,254,0,1,252,0,0,14,0,0,7,0,0,3,130, + 0,1,227,0,0,254,0,0,60,21,25,75,22,1,0,31, + 240,0,255,254,0,28,31,0,28,7,0,28,7,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,7,0,28,6,0, + 28,28,0,31,240,0,28,112,0,28,56,0,28,56,0,28, + 28,0,28,30,0,28,14,0,28,7,0,28,7,128,28,3, + 128,28,3,192,62,1,248,255,129,240,15,25,50,19,2,0, + 7,224,31,248,120,124,112,24,224,0,224,0,224,0,240,0, + 248,0,126,0,63,128,31,224,7,248,1,252,0,124,0,30, + 0,30,0,14,128,14,128,14,192,28,224,28,240,120,255,240, + 31,128,21,25,75,22,0,0,127,255,248,255,255,248,192,112, + 24,192,112,24,128,112,16,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,248,0, + 3,254,0,24,25,75,26,1,0,255,129,255,62,0,124,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,112,14,0,112,14,0,112,15,0,224,7,193,192,3,255, + 128,0,126,0,25,25,100,26,0,0,255,128,127,128,28,0, + 14,0,30,0,12,0,14,0,28,0,14,0,24,0,15,0, + 24,0,7,0,56,0,7,0,48,0,3,128,48,0,3,128, + 112,0,3,192,96,0,1,192,224,0,1,192,224,0,1,224, + 192,0,0,225,192,0,0,225,128,0,0,113,128,0,0,115, + 128,0,0,123,0,0,0,59,0,0,0,63,0,0,0,62, + 0,0,0,30,0,0,0,30,0,0,0,8,0,0,33,25, + 125,34,0,0,255,128,192,127,128,28,0,192,14,0,28,0, + 192,12,0,28,1,224,12,0,14,1,224,28,0,14,1,224, + 28,0,14,3,240,24,0,14,3,112,24,0,7,3,48,24, + 0,7,7,56,56,0,7,6,56,56,0,7,6,24,48,0, + 7,14,28,48,0,3,140,28,48,0,3,140,14,112,0,3, + 156,14,96,0,3,152,14,96,0,1,216,7,96,0,1,248, + 7,96,0,1,240,7,224,0,1,240,3,192,0,1,240,3, + 192,0,0,224,3,192,0,0,224,1,192,0,0,192,1,128, + 0,23,25,75,25,1,0,255,135,252,60,0,240,28,0,224, + 30,1,192,15,1,128,7,3,128,7,135,0,3,198,0,1, + 238,0,0,252,0,0,252,0,0,120,0,0,120,0,0,124, + 0,0,254,0,1,206,0,1,207,0,3,135,128,3,3,128, + 7,3,192,14,1,224,12,0,224,28,0,240,60,0,248,255, + 3,254,23,25,75,24,0,0,248,1,254,60,0,120,30,0, + 96,14,0,224,7,0,192,7,129,192,3,129,128,3,195,128, + 1,195,0,0,231,0,0,238,0,0,126,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,124,0, + 1,255,0,18,25,75,21,1,0,63,255,192,63,255,192,48, + 3,128,32,7,128,96,15,0,96,14,0,0,30,0,0,28, + 0,0,56,0,0,120,0,0,112,0,0,240,0,1,224,0, + 1,192,0,3,192,0,3,128,0,7,0,0,15,0,0,14, + 0,0,30,0,64,60,0,64,56,0,192,120,0,192,127,255, + 192,255,255,192,9,37,74,12,3,250,255,128,255,128,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,128,255,128,17,38,114,19,1,249,192,0,0,224,0,0, + 112,0,0,112,0,0,48,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,14,0,0,14,0,0,6,0, + 0,7,0,0,7,0,0,3,0,0,3,128,0,3,128,0, + 1,192,0,1,192,0,0,192,0,0,224,0,0,224,0,0, + 96,0,0,112,0,0,112,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,12,0,0,14,0,0,14,0, + 0,7,0,0,7,0,0,3,0,0,1,128,9,37,74,13, + 1,250,255,128,255,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,128,255,128,16,19,38,20, + 2,11,0,128,3,128,3,192,3,192,7,224,6,224,14,224, + 12,112,12,112,28,120,24,56,24,56,48,28,48,28,112,28, + 96,14,96,14,224,7,128,6,17,2,6,19,1,251,127,255, + 128,255,255,0,8,9,9,13,1,20,224,240,112,56,56,28, + 14,6,3,16,18,36,18,2,0,3,224,31,240,56,120,112, + 56,240,56,192,56,0,56,0,120,7,248,28,56,112,56,96, + 56,224,56,224,56,224,120,241,185,127,63,60,24,18,30,90, + 20,0,0,12,0,0,124,0,0,188,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,60,0,28,255,0,29,143,0, + 31,7,128,30,3,128,28,3,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,128,28,1,128,28,3, + 128,30,3,0,31,134,0,7,252,0,1,240,0,15,18,36, + 17,2,0,1,248,7,254,28,28,56,12,112,4,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,0,112,4,120, + 6,62,28,31,248,7,224,19,30,90,21,2,0,0,3,0, + 0,63,0,0,15,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7, + 0,3,247,0,15,255,0,28,31,0,56,15,0,48,7,0, + 112,7,0,96,7,0,224,7,0,224,7,0,224,7,0,224, + 7,0,224,7,0,240,7,0,112,15,0,120,31,0,60,55, + 224,31,231,192,7,131,0,14,18,36,18,2,0,3,192,15, + 240,28,120,48,56,112,28,96,28,224,28,255,252,255,248,224, + 0,224,0,224,0,240,0,112,4,120,12,60,56,31,240,7, + 192,15,30,60,12,1,0,0,120,1,254,3,28,6,8,14, + 0,12,0,12,0,28,0,28,0,28,0,28,0,28,0,127, + 240,255,224,28,64,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,62, + 0,255,192,18,27,81,19,1,247,3,224,192,15,255,192,28, + 63,0,56,28,0,112,14,0,112,14,0,112,14,0,112,14, + 0,120,28,0,60,56,0,31,240,0,7,192,0,6,0,0, + 12,0,0,28,0,0,31,224,0,15,254,0,12,63,128,24, + 3,192,112,1,192,224,1,192,224,1,192,224,3,128,240,3, + 128,124,15,0,63,252,0,7,240,0,21,30,90,22,1,0, + 12,0,0,252,0,0,124,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,31,0,28,63,128,28,227,192,29,129,192, + 31,1,192,30,1,192,30,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,62,3,192,255,143,248,9,27,54,11,1,0, + 28,0,60,0,60,0,60,0,24,0,0,0,0,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,11,36,72,10,252,247,0,224,1,224, + 1,224,1,224,0,192,0,0,0,0,0,0,0,0,0,96, + 7,224,1,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,192,0,192,1,192,1,128,35,0, + 254,0,248,0,19,30,90,20,1,0,12,0,0,252,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,31, + 224,28,7,0,28,14,0,28,28,0,28,48,0,28,224,0, + 29,192,0,31,128,0,29,192,0,29,224,0,28,240,0,28, + 120,0,28,56,0,28,28,0,28,30,0,28,15,0,60,7, + 128,255,3,224,9,30,60,11,1,0,12,0,252,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,31,18,72,32,1,0,12,30,3,192, + 252,127,15,224,60,199,152,240,29,131,176,112,31,3,224,112, + 30,3,192,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,60,7,192,240, + 255,159,243,254,21,18,54,22,1,0,12,15,0,252,63,128, + 60,99,192,29,129,192,29,1,192,30,1,192,30,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,62,3,192,255,143,248, + 16,18,36,20,2,0,3,224,15,248,28,60,48,30,112,14, + 96,15,224,7,224,7,224,7,224,7,224,7,224,7,240,6, + 112,14,120,12,62,56,31,240,7,192,18,27,81,21,1,247, + 12,28,0,252,127,0,60,143,128,29,7,128,30,3,128,30, + 3,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,128,28,1,128,28,3,128,30,3,0,31,6,0, + 29,252,0,28,120,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,62,0,0,255,128, + 0,19,27,81,21,2,247,1,241,128,7,251,0,28,31,0, + 56,15,0,48,7,0,112,7,0,96,7,0,224,7,0,224, + 7,0,224,7,0,224,7,0,224,7,0,240,7,0,112,15, + 0,120,31,0,60,55,0,31,231,0,7,135,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,63,224,14,18,36,16,1,0,12,60, + 252,252,61,140,29,12,31,4,30,0,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,0, + 255,128,11,18,36,15,2,0,31,0,127,128,115,192,225,128, + 224,128,240,0,248,0,126,0,31,0,15,192,3,224,1,224, + 128,224,128,224,192,224,225,192,255,128,62,0,13,25,50,14, + 0,0,4,0,12,0,28,0,28,0,28,0,28,0,28,0, + 127,248,255,240,28,32,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,56, + 15,240,7,128,21,18,54,21,0,0,12,0,192,252,15,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,3,192,28,7,192,30,29,200,15,241,240,7,192,192, + 19,18,54,20,0,0,255,7,224,60,1,192,28,1,128,28, + 3,128,14,3,0,14,3,0,14,6,0,7,6,0,7,6, + 0,3,140,0,3,140,0,3,156,0,1,216,0,1,216,0, + 0,240,0,0,240,0,0,240,0,0,64,0,28,18,72,28, + 0,0,255,3,7,240,60,7,0,192,28,7,0,192,28,7, + 129,128,28,15,129,128,14,15,129,128,14,13,195,128,14,25, + 195,0,6,25,195,0,7,24,227,0,7,48,230,0,3,48, + 118,0,3,176,118,0,3,224,124,0,1,224,60,0,1,224, + 60,0,1,192,60,0,1,128,16,0,20,18,54,20,0,0, + 127,143,224,30,3,128,14,3,0,7,6,0,7,140,0,3, + 156,0,1,216,0,0,240,0,0,240,0,0,240,0,1,184, + 0,1,156,0,3,30,0,6,14,0,14,7,0,12,3,128, + 60,3,192,255,15,240,20,27,81,20,255,247,127,131,240,30, + 0,224,14,0,192,14,0,192,7,1,128,7,1,128,7,3, + 0,3,131,0,3,131,0,1,198,0,1,198,0,1,198,0, + 0,236,0,0,236,0,0,120,0,0,120,0,0,120,0,0, + 48,0,0,48,0,0,96,0,0,96,0,0,224,0,1,192, + 0,67,128,0,127,0,0,254,0,0,124,0,0,15,18,36, + 18,1,0,63,254,63,254,96,28,96,56,64,56,0,112,0, + 224,1,192,1,192,3,128,7,0,7,0,14,0,28,2,56, + 2,56,6,127,254,255,254,11,37,74,14,2,250,0,64,1, + 224,3,128,7,0,6,0,14,0,14,0,14,0,14,0,14, + 0,15,0,7,0,7,0,7,0,7,0,7,0,14,0,28, + 0,124,0,254,0,15,0,7,0,7,0,7,0,7,0,7, + 0,15,0,14,0,14,0,14,0,14,0,14,0,14,0,7, + 0,3,0,1,192,0,64,3,41,41,9,3,248,96,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,192,11,37,74,14,1,250,64,0,112,0, + 56,0,28,0,12,0,14,0,14,0,14,0,14,0,14,0, + 30,0,28,0,28,0,28,0,28,0,28,0,14,0,15,192, + 3,224,7,0,14,0,12,0,28,0,28,0,28,0,28,0, + 30,0,14,0,14,0,14,0,14,0,14,0,12,0,28,0, + 56,0,112,0,192,0,18,6,18,20,1,9,15,0,192,31, + 192,128,63,225,0,99,255,0,192,254,0,128,56,0,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,0,5,29,29,11,3,245,112,248,248,248,112, + 0,0,96,96,96,96,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,240,240,240,192,15,25,50,19,2,255,1,128, + 1,128,1,128,1,240,7,252,31,254,57,140,113,132,113,128, + 97,128,225,128,225,128,225,128,225,128,225,128,241,128,113,128, + 121,134,61,140,63,248,31,240,3,192,1,128,1,128,1,128, + 17,25,75,19,1,255,0,252,0,3,255,0,7,15,0,14, + 7,0,12,6,0,12,2,0,28,2,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,127,224,0,255,224,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,24, + 0,128,24,1,0,24,3,0,63,223,0,127,255,0,192,255, + 0,13,13,26,19,3,5,192,24,239,184,127,240,56,224,96, + 112,96,48,96,48,96,48,120,240,63,224,111,176,192,24,128, + 8,21,24,72,19,255,0,120,7,248,252,1,248,62,1,224, + 31,3,128,15,3,128,7,135,0,7,135,0,3,206,0,1, + 206,0,1,252,0,0,248,0,0,248,0,0,112,0,0,112, + 0,15,255,192,31,255,128,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,248,0,3,254,0,3, + 41,41,9,3,248,96,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,128,0,0,0,64,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,192,15,28, + 56,19,2,0,7,224,15,248,28,120,56,24,56,8,56,0, + 60,0,31,0,31,128,63,224,99,248,224,252,224,124,224,30, + 240,30,120,14,62,14,31,14,15,220,3,248,0,248,0,60, + 32,28,32,28,48,28,60,56,63,240,7,192,12,5,10,16, + 2,22,96,48,224,112,224,112,224,112,192,96,25,25,100,29, + 2,0,0,127,0,0,3,255,224,0,7,128,240,0,14,0, + 56,0,28,31,28,0,56,127,206,0,112,225,199,0,97,192, + 131,0,99,128,3,0,195,0,1,128,199,0,1,128,199,0, + 1,128,199,0,1,128,199,0,1,128,199,0,1,128,199,128, + 1,128,99,128,3,0,99,192,67,0,113,241,135,0,56,255, + 14,0,28,60,28,0,14,0,56,0,7,128,240,0,3,255, + 224,0,0,127,0,0,8,14,14,10,1,11,28,60,70,198, + 6,30,102,198,198,206,119,0,255,255,15,18,36,19,2,0, + 2,6,6,4,12,12,12,24,24,56,56,112,112,224,241,224, + 225,192,225,192,241,224,112,240,56,112,24,56,12,24,12,12, + 6,4,2,6,17,8,24,19,1,4,255,255,128,255,255,128, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,0,11,2,4,13,1,9,127,224,255,224,13,14,28,14, + 1,14,15,128,63,224,112,96,127,48,200,152,136,136,143,8, + 138,8,137,8,201,152,92,240,112,112,63,224,15,128,13,2, + 4,20,3,23,127,248,255,248,8,9,9,14,3,15,28,62, + 103,231,231,231,230,124,56,15,18,36,16,1,3,3,128,3, + 128,3,128,3,128,3,128,3,128,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,0,0,0,0,0,127,252,255, + 252,11,15,30,14,1,12,15,128,31,192,49,224,96,224,64, + 224,0,192,1,192,1,128,3,0,6,0,12,0,24,32,48, + 32,127,224,255,224,11,16,32,13,1,11,31,0,63,128,99, + 192,225,192,1,192,1,128,7,0,31,128,1,192,0,224,0, + 224,0,224,0,224,193,192,127,128,30,0,8,9,9,13,4, + 20,7,15,30,28,56,48,112,96,192,20,27,81,21,1,247, + 12,1,128,252,7,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,30,7,128,31,31,128,31,251,144, + 27,243,224,25,225,128,24,0,0,24,0,0,24,0,0,28, + 0,0,28,0,0,28,0,0,30,0,0,30,0,0,24,0, + 0,20,30,90,22,1,251,3,255,240,28,63,192,48,59,128, + 112,59,128,96,59,128,224,59,128,224,59,128,224,59,128,224, + 59,128,240,59,128,112,59,128,120,59,128,62,59,128,31,251, + 128,7,251,128,0,59,128,0,59,128,0,59,128,0,59,128, + 0,59,128,0,59,128,0,59,128,0,59,128,0,59,128,0, + 59,128,0,59,128,0,59,128,0,59,128,0,127,192,1,255, + 240,3,5,5,6,1,11,96,224,224,224,192,7,9,9,9, + 1,247,24,16,56,60,62,14,12,56,224,10,15,30,13,2, + 12,6,0,62,0,254,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,255,192,9, + 14,28,11,1,11,30,0,63,0,103,0,67,128,193,128,193, + 128,193,128,193,128,225,0,115,0,126,0,60,0,255,128,255, + 128,15,18,36,19,3,0,129,0,193,128,96,192,112,96,48, + 112,56,48,28,56,30,28,15,30,15,30,30,28,28,56,56, + 56,48,112,112,224,96,192,193,128,129,0,19,24,72,23,2, + 0,12,0,192,252,1,224,28,1,128,28,3,128,28,3,0, + 28,6,0,28,14,0,28,12,0,28,24,0,28,56,0,28, + 48,0,255,224,0,0,224,0,0,192,192,1,193,192,1,130, + 192,3,2,192,7,4,192,6,8,192,12,16,192,28,31,224, + 24,63,224,48,0,192,112,3,224,20,24,72,24,2,0,12, + 0,96,252,0,192,28,0,192,28,1,128,28,3,0,28,3, + 0,28,6,0,28,14,0,28,12,0,28,24,0,28,56,0, + 255,176,0,0,97,224,0,99,240,0,196,112,1,204,112,1, + 128,96,3,0,224,7,0,192,6,1,128,12,3,32,28,6, + 16,24,15,240,48,31,240,20,25,75,23,1,0,30,0,0, + 63,0,48,103,128,96,195,128,224,3,0,192,6,1,128,31, + 129,128,3,195,0,0,231,0,0,230,0,97,204,0,63,220, + 0,15,24,0,0,48,0,0,48,96,0,96,224,0,225,96, + 0,195,96,1,130,96,3,132,96,3,12,112,6,31,240,14, + 0,96,12,0,96,24,1,240,14,29,58,18,2,245,3,128, + 7,192,7,192,7,192,3,128,0,0,0,0,3,128,3,128, + 3,128,3,128,3,128,7,0,7,0,14,0,28,0,60,0, + 56,0,112,0,112,0,224,0,224,12,224,28,224,28,224,28, + 240,56,120,112,63,224,31,128,23,34,102,24,0,0,3,0, + 0,7,128,0,7,224,0,1,240,0,0,120,0,0,60,0, + 0,14,0,0,2,0,0,0,0,0,8,0,0,56,0,0, + 60,0,0,60,0,0,108,0,0,110,0,0,110,0,0,198, + 0,0,199,0,0,199,0,1,131,0,1,131,128,1,131,128, + 3,1,128,3,255,192,3,255,192,6,0,224,6,0,224,6, + 0,224,12,0,112,12,0,112,12,0,112,24,0,56,28,0, + 120,255,1,254,23,34,102,24,0,0,0,1,128,0,3,192, + 0,7,192,0,15,0,0,30,0,0,56,0,0,96,0,0, + 192,0,0,0,0,0,8,0,0,56,0,0,60,0,0,60, + 0,0,108,0,0,110,0,0,110,0,0,198,0,0,199,0, + 0,199,0,1,131,0,1,131,128,1,131,128,3,1,128,3, + 255,192,3,255,192,6,0,224,6,0,224,6,0,224,12,0, + 112,12,0,112,12,0,112,24,0,56,28,0,120,255,1,254, + 23,33,99,24,0,0,0,56,0,0,124,0,0,254,0,1, + 231,0,1,131,128,3,1,192,6,0,128,0,0,0,0,8, + 0,0,56,0,0,60,0,0,60,0,0,108,0,0,110,0, + 0,110,0,0,198,0,0,199,0,0,199,0,1,131,0,1, + 131,128,1,131,128,3,1,128,3,255,192,3,255,192,6,0, + 224,6,0,224,6,0,224,12,0,112,12,0,112,12,0,112, + 24,0,56,28,0,120,255,1,254,23,32,96,24,0,0,0, + 224,64,1,248,192,3,253,128,6,31,0,4,6,0,0,0, + 0,0,0,0,0,8,0,0,56,0,0,60,0,0,60,0, + 0,108,0,0,110,0,0,110,0,0,198,0,0,199,0,0, + 199,0,1,131,0,1,131,128,1,131,128,3,1,128,3,255, + 192,3,255,192,6,0,224,6,0,224,6,0,224,12,0,112, + 12,0,112,12,0,112,24,0,56,28,0,120,255,1,254,23, + 31,93,24,0,0,3,129,192,3,129,192,3,129,192,3,1, + 128,3,1,128,0,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,23,34,102,24,0,0,0,62,0,0,126,0,0,199, + 0,0,195,0,0,195,0,0,230,0,0,252,0,0,48,0, + 0,0,0,0,8,0,0,56,0,0,60,0,0,60,0,0, + 108,0,0,110,0,0,110,0,0,198,0,0,199,0,0,199, + 0,1,131,0,1,131,128,1,131,128,3,1,128,3,255,192, + 3,255,192,6,0,224,6,0,224,6,0,224,12,0,112,12, + 0,112,12,0,112,24,0,56,28,0,120,255,1,254,30,25, + 100,31,0,0,1,255,255,240,0,63,255,240,0,25,192,48, + 0,25,192,16,0,57,192,16,0,49,192,0,0,113,192,0, + 0,97,192,0,0,97,192,0,0,225,192,0,0,255,255,192, + 1,255,255,192,1,193,192,128,1,129,192,0,3,129,192,0, + 3,1,192,0,7,1,192,0,7,1,192,0,6,1,192,0, + 14,1,192,0,12,1,192,4,28,1,192,12,28,1,192,24, + 60,3,255,248,255,15,255,248,18,34,102,21,1,247,0,126, + 0,3,255,192,7,7,192,14,1,128,28,0,0,56,0,0, + 48,0,0,112,0,0,112,0,0,96,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,240,0,0,112,0,0,120,0,0,56,0,64,60,0,192, + 30,3,128,15,254,0,7,252,0,1,240,0,0,64,0,0, + 96,0,0,240,0,0,120,0,0,56,0,0,48,0,0,224, + 0,3,128,0,18,34,102,20,1,0,12,0,0,62,0,0, + 63,0,0,15,128,0,3,192,0,0,224,0,0,112,0,0, + 16,0,0,0,0,255,255,0,63,255,0,28,3,0,28,1, + 0,28,1,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,31,252,0,31,252,0,28,8,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,64,28,0,192,28,1,128,63,255,128,255,255,128, + 18,34,102,20,1,0,0,12,0,0,30,0,0,62,0,0, + 120,0,0,240,0,1,192,0,3,0,0,6,0,0,0,0, + 0,255,255,0,63,255,0,28,3,0,28,1,0,28,1,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,31, + 252,0,31,252,0,28,8,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,64, + 28,0,192,28,1,128,63,255,128,255,255,128,18,33,99,20, + 1,0,1,192,0,3,224,0,7,240,0,7,56,0,12,28, + 0,24,14,0,16,2,0,0,0,0,255,255,0,63,255,0, + 28,3,0,28,1,0,28,1,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,31,252,0,31,252,0,28,8, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,64,28,0,192,28,1,128,63, + 255,128,255,255,128,18,31,93,20,1,0,28,14,0,28,14, + 0,28,14,0,28,14,0,24,12,0,0,0,0,255,255,0, + 63,255,0,28,3,0,28,1,0,28,1,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,31,252,0,31,252, + 0,28,8,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,64,28,0,192,28, + 1,128,63,255,128,255,255,128,11,34,68,12,255,0,96,0, + 248,0,252,0,62,0,15,0,3,128,1,192,0,64,0,0, + 63,224,15,128,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,15,128, + 63,224,11,34,68,12,1,0,0,192,1,224,3,224,7,128, + 15,0,28,0,48,0,96,0,0,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,12,33,66,12, + 0,0,14,0,31,0,63,128,57,192,96,224,192,112,128,32, + 0,0,127,192,31,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,127,192,12,31,62,12,0,0,224,112,224,112,224,112, + 224,112,192,96,0,0,127,192,31,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,31,0,127,192,21,25,75,24,1,0,31,248, + 0,255,255,0,28,15,128,28,3,192,28,1,224,28,0,240, + 28,0,112,28,0,112,28,0,120,28,0,56,28,0,56,255, + 240,56,255,224,56,28,0,56,28,0,56,28,0,56,28,0, + 112,28,0,112,28,0,112,28,0,224,28,1,224,28,3,192, + 28,15,128,63,254,0,255,248,0,24,32,96,26,1,0,0, + 240,64,1,248,96,3,252,192,2,31,128,6,6,0,0,0, + 0,0,0,0,248,1,255,60,0,124,30,0,56,30,0,56, + 31,0,56,31,128,56,29,128,56,29,192,56,28,224,56,28, + 96,56,28,112,56,28,56,56,28,28,56,28,28,56,28,14, + 56,28,7,56,28,7,56,28,3,184,28,3,248,28,1,248, + 28,0,248,28,0,248,28,0,120,62,0,56,255,128,24,21, + 34,102,24,1,0,3,0,0,7,128,0,15,192,0,3,224, + 0,0,240,0,0,56,0,0,28,0,0,4,0,0,0,0, + 0,252,0,3,255,0,7,7,128,12,3,192,24,1,224,56, + 0,224,112,0,112,112,0,112,96,0,120,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56, + 240,0,48,112,0,112,112,0,96,120,0,224,60,0,192,30, + 1,128,15,7,0,7,254,0,1,248,0,21,34,102,24,1, + 0,0,3,0,0,7,128,0,15,192,0,31,0,0,60,0, + 0,112,0,0,224,0,0,128,0,0,0,0,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,96,120,0,224,60,0,192,30,1,128,15,7, + 0,7,254,0,1,248,0,21,33,99,24,1,0,0,120,0, + 0,252,0,0,252,0,1,206,0,3,135,0,6,1,128,4, + 0,128,0,0,0,0,252,0,3,255,0,7,7,128,12,3, + 192,24,1,224,56,0,224,112,0,112,112,0,112,96,0,120, + 224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224, + 0,56,224,0,56,240,0,48,112,0,112,112,0,96,120,0, + 224,60,0,192,30,1,128,15,7,0,7,254,0,1,248,0, + 21,32,96,24,1,0,1,224,128,3,240,192,7,249,128,6, + 63,0,12,12,0,0,0,0,0,0,0,0,252,0,3,255, + 0,7,7,128,12,3,192,24,1,224,56,0,224,112,0,112, + 112,0,112,96,0,120,224,0,56,224,0,56,224,0,56,224, + 0,56,224,0,56,224,0,56,224,0,56,240,0,48,112,0, + 112,112,0,96,120,0,224,60,0,192,30,1,128,15,7,0, + 7,254,0,1,248,0,21,31,93,24,1,0,3,1,128,7, + 3,128,7,3,128,7,3,128,2,1,0,0,0,0,0,252, + 0,3,255,0,7,7,128,12,3,192,24,1,224,56,0,224, + 112,0,112,112,0,112,96,0,120,224,0,56,224,0,56,224, + 0,56,224,0,56,224,0,56,224,0,56,224,0,56,240,0, + 48,112,0,112,112,0,96,120,0,224,60,0,192,30,1,128, + 15,7,0,7,254,0,1,248,0,13,12,24,16,2,5,192, + 48,224,120,112,224,57,192,31,128,15,0,15,0,31,128,57, + 192,112,224,224,112,192,56,21,26,78,24,1,255,0,252,56, + 3,255,112,7,7,224,12,3,224,24,1,224,56,3,240,48, + 7,240,112,7,112,96,14,120,224,28,56,224,28,56,224,56, + 56,224,112,56,224,112,56,224,224,56,225,192,56,243,128,48, + 115,128,112,119,0,96,126,0,224,60,0,192,62,1,128,63, + 7,0,119,254,0,225,248,0,128,0,0,24,34,102,26,1, + 0,1,128,0,3,192,0,3,224,0,0,240,0,0,120,0, + 0,28,0,0,6,0,0,3,0,0,0,0,255,129,255,62, + 0,124,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,112,14,0,112,14,0,112,15,0,224,7,193, + 192,3,255,128,0,126,0,24,34,102,26,1,0,0,1,128, + 0,3,224,0,7,224,0,15,128,0,30,0,0,56,0,0, + 112,0,0,64,0,0,0,0,255,129,255,62,0,124,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 112,14,0,112,14,0,112,15,0,224,7,193,192,3,255,128, + 0,126,0,24,33,99,26,1,0,0,28,0,0,62,0,0, + 127,0,0,231,0,1,193,128,3,128,192,2,0,64,0,0, + 0,255,129,255,62,0,124,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,112,14,0,112,14,0,112, + 15,0,224,7,193,192,3,255,128,0,126,0,24,31,93,26, + 1,0,1,128,192,3,129,192,3,129,192,3,129,192,1,0, + 128,0,0,0,255,129,255,62,0,124,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,14,0,112, + 14,0,112,15,0,224,7,193,192,3,255,128,0,126,0,23, + 34,102,24,0,0,0,1,128,0,3,192,0,7,192,0,15, + 0,0,30,0,0,56,0,0,96,0,0,192,0,0,0,0, + 248,1,254,60,0,120,30,0,96,14,0,224,7,0,192,7, + 129,192,3,129,128,3,195,128,1,195,0,0,231,0,0,238, + 0,0,126,0,0,124,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,124,0,1,255,0,18,25,75,21,1, + 0,255,128,0,60,0,0,28,0,0,28,0,0,31,248,0, + 31,254,0,28,31,0,28,7,128,28,3,128,28,3,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,3, + 128,28,7,128,28,15,0,29,254,0,28,248,0,28,0,0, + 28,0,0,28,0,0,62,0,0,255,128,0,20,30,90,23, + 1,0,0,124,0,1,255,0,3,15,128,6,3,128,14,3, + 192,12,1,192,12,1,192,28,1,192,28,1,192,28,3,128, + 28,7,128,28,31,0,28,120,0,28,240,0,28,224,0,28, + 224,0,28,240,0,28,124,0,28,63,0,28,31,192,28,7, + 224,28,1,224,28,0,240,28,0,112,28,128,112,28,128,112, + 28,192,96,28,224,224,60,255,192,252,63,0,16,29,58,18, + 2,0,56,0,60,0,28,0,14,0,14,0,7,0,3,128, + 1,128,0,192,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,29,58,18, + 2,0,0,56,0,120,0,112,0,224,0,192,1,192,3,128, + 3,0,6,0,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,29,58,18, + 2,0,3,128,7,128,7,192,15,224,30,224,28,112,56,56, + 48,24,96,12,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,27,54,18, + 2,0,14,4,31,12,63,152,99,240,64,224,0,0,0,0, + 0,0,0,0,3,224,31,240,56,120,112,56,240,56,192,56, + 0,56,0,120,7,248,28,56,112,56,96,56,224,56,224,56, + 224,120,241,185,127,63,60,24,16,27,54,18,2,0,48,24, + 48,24,112,56,112,56,48,24,0,0,0,0,0,0,0,0, + 3,224,31,240,56,120,112,56,240,56,192,56,0,56,0,120, + 7,248,28,56,112,56,96,56,224,56,224,56,224,120,241,185, + 127,63,60,24,16,28,56,18,2,0,3,192,7,224,12,96, + 12,96,24,96,12,96,15,192,7,128,0,0,0,0,3,224, + 31,240,56,120,112,56,240,56,192,56,0,56,0,120,7,248, + 28,56,112,56,96,56,224,56,224,56,224,120,241,185,127,63, + 60,24,24,18,54,28,2,0,3,225,240,15,243,252,56,119, + 30,112,60,14,224,60,7,240,56,7,192,56,7,1,255,255, + 15,255,254,30,56,0,120,56,0,112,56,0,224,56,0,224, + 60,2,224,92,3,241,159,14,127,15,248,60,3,224,15,27, + 54,17,2,247,1,248,7,254,28,28,56,12,48,4,112,0, + 96,0,224,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,8,120,24,63,240,31,224,15,128,2,0,2,0,3,128, + 7,192,1,192,1,128,7,0,28,0,14,29,58,18,2,0, + 28,0,60,0,30,0,14,0,7,0,3,128,1,128,0,192, + 0,64,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,29,58,18,2,0, + 0,56,0,60,0,120,0,112,0,224,0,192,1,128,1,0, + 3,0,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,29,58,18,2,0, + 1,128,3,192,7,224,7,224,14,112,28,56,24,24,48,12, + 32,4,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,27,54,18,2,0, + 24,12,56,28,56,28,56,28,48,24,0,0,0,0,0,0, + 0,0,3,192,15,240,28,120,48,56,112,28,96,28,224,28, + 255,252,255,248,224,0,224,0,224,0,240,0,112,4,120,12, + 60,56,31,240,7,192,10,29,58,11,0,0,224,0,240,0, + 120,0,56,0,28,0,12,0,14,0,6,0,3,0,0,0, + 0,0,6,0,126,0,30,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,30,0,127,192,10,29,58,11,1,0,1,192,3,192, + 3,128,7,128,7,0,14,0,12,0,24,0,16,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,13,29,58,11,255,0,7,0,7,128, + 15,128,31,192,29,192,56,224,112,112,96,48,192,24,0,0, + 0,0,3,0,63,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,15,0,63,224,12,27,54,11,0,0,192,96,224,112, + 224,112,192,96,192,96,0,0,0,0,0,0,0,0,6,0, + 126,0,30,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,30,0, + 127,192,16,28,56,20,2,0,6,0,63,6,7,159,1,248, + 3,224,15,112,28,56,0,28,0,28,0,14,3,206,15,254, + 28,127,48,31,112,15,96,15,224,7,224,7,224,7,224,7, + 224,6,224,6,240,14,112,12,120,28,60,56,31,240,7,192, + 21,27,81,22,1,0,1,192,128,7,225,0,7,243,0,12, + 126,0,8,28,0,0,0,0,0,0,0,0,0,0,0,0, + 0,12,15,0,252,63,128,60,99,192,29,129,192,29,1,192, + 30,1,192,30,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,62,3,192,255,143,248,16,29,58,20,2,0,28,0,30, + 0,14,0,7,0,3,128,3,128,1,192,0,192,0,96,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,29,58,20,2,0,0,28,0, + 60,0,56,0,112,0,112,0,224,0,192,1,128,3,0,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,29,58,20,2,0,1,192,3, + 192,3,224,7,240,7,112,14,56,28,28,24,12,48,6,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,27,54,20,2,0,7,2,15, + 134,31,204,49,248,32,112,0,0,0,0,0,0,0,0,3, + 224,15,248,28,60,48,30,112,14,96,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,6,112,14,120,12,62,56,31, + 240,7,192,16,27,54,20,2,0,24,12,24,12,28,14,24, + 12,24,12,0,0,0,0,0,0,0,0,3,224,15,248,28, + 60,48,30,112,14,96,15,224,7,224,7,224,7,224,7,224, + 7,224,7,240,6,112,14,120,12,62,56,31,240,7,192,14, + 14,28,16,1,4,1,128,3,128,3,128,3,0,0,0,0, + 0,127,252,255,252,0,0,0,0,1,128,3,128,3,128,3, + 0,16,20,40,20,2,255,0,1,3,227,15,254,28,60,48, + 30,112,30,96,63,224,103,224,199,224,135,225,135,227,7,230, + 7,252,6,120,14,120,12,60,56,127,240,199,192,128,0,21, + 29,87,21,0,0,7,0,0,7,128,0,3,192,0,1,192, + 0,0,224,0,0,96,0,0,48,0,0,48,0,0,24,0, + 0,0,0,0,0,0,12,0,192,252,15,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,28,1,192,28,3,192, + 28,7,192,30,29,200,15,241,240,7,192,192,21,29,87,21, + 0,0,0,7,0,0,15,128,0,14,0,0,30,0,0,28, + 0,0,56,0,0,48,0,0,96,0,0,64,0,0,0,0, + 0,0,0,12,0,192,252,15,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,28,3,192,28,7,192, + 30,29,200,15,241,240,7,192,192,21,29,87,21,0,0,0, + 112,0,0,120,0,0,248,0,1,252,0,1,222,0,3,142, + 0,7,7,0,6,3,0,12,1,128,0,0,0,0,0,0, + 12,0,192,252,15,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,3,192,28,7,192,30,29,200, + 15,241,240,7,192,192,21,27,81,21,0,0,6,3,0,7, + 3,128,7,3,128,6,3,0,6,3,0,0,0,0,0,0, + 0,0,0,0,0,0,0,12,0,192,252,15,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,3, + 192,28,7,192,30,29,200,15,241,240,7,192,192,20,38,114, + 20,255,247,0,3,128,0,7,128,0,7,0,0,14,0,0, + 12,0,0,28,0,0,56,0,0,48,0,0,96,0,0,0, + 0,0,0,0,127,131,240,30,0,224,14,0,192,14,0,192, + 7,1,128,7,1,128,7,3,0,3,131,0,3,131,0,1, + 198,0,1,198,0,1,198,0,0,236,0,0,236,0,0,120, + 0,0,120,0,0,120,0,0,48,0,0,48,0,0,96,0, + 0,96,0,0,224,0,1,192,0,67,128,0,127,0,0,254, + 0,0,124,0,0,18,39,117,21,1,247,12,0,0,252,0, + 0,60,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 60,0,28,255,0,29,143,0,31,7,128,30,3,128,28,3, + 192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192, + 28,1,128,28,1,128,28,3,128,30,3,0,31,134,0,31, + 252,0,28,240,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,62,0,0,255,128,0, + 20,36,108,20,255,247,3,1,128,3,1,128,7,3,128,7, + 3,128,3,1,128,0,0,0,0,0,0,0,0,0,0,0, + 0,127,131,240,30,0,224,14,0,192,14,0,192,7,1,128, + 7,1,128,7,3,0,3,131,0,3,131,0,1,198,0,1, + 198,0,1,198,0,0,236,0,0,236,0,0,120,0,0,120, + 0,0,120,0,0,48,0,0,48,0,0,96,0,0,96,0, + 0,224,0,1,192,0,67,128,0,127,0,0,254,0,0,124, + 0,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=38 x= 3 y=14 dx=19 dy= 0 ascent=31 len=114 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25n[810] U8G_SECTION(".progmem.u8g_font_gdr25n") = { + 0,59,57,236,242,24,0,0,0,0,42,57,0,31,249,24, + 0,16,16,32,18,1,14,1,128,1,128,1,128,97,132,113, + 142,121,159,31,248,7,192,3,192,31,248,121,158,241,142,33, + 134,1,128,1,128,1,128,15,14,28,16,1,4,3,128,3, + 128,3,128,3,128,3,128,3,128,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,6,10,10,9,2,250,60, + 252,60,28,28,24,24,48,32,64,11,2,4,13,1,9,127, + 224,255,224,5,5,5,9,2,255,112,248,248,248,112,17,38, + 114,19,1,249,0,1,128,0,7,0,0,7,0,0,7,0, + 0,14,0,0,14,0,0,14,0,0,28,0,0,28,0,0, + 56,0,0,56,0,0,56,0,0,112,0,0,112,0,0,112, + 0,0,224,0,0,224,0,1,192,0,1,192,0,1,192,0, + 3,128,0,3,128,0,3,128,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,28,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,192,0,0,17,24,72,19,1,0,3,224,0,15, + 248,0,28,60,0,56,30,0,48,14,0,112,7,0,96,7, + 0,96,7,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,3,0,112, + 7,0,112,7,0,120,6,0,60,14,0,30,28,0,15,248, + 0,7,224,0,14,24,48,19,3,0,1,128,7,128,63,128, + 255,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,15,224,127,252,14,24,48,19,2,0, + 3,224,15,248,24,120,48,60,112,28,96,28,224,28,0,28, + 0,24,0,56,0,48,0,112,0,224,1,192,1,128,3,128, + 7,0,14,0,28,0,24,4,48,4,112,12,255,252,255,252, + 15,24,48,19,1,0,3,224,15,248,28,120,56,60,112,28, + 112,28,0,28,0,24,0,48,0,96,3,224,3,248,0,60, + 0,28,0,14,0,14,0,14,0,14,0,14,0,28,64,28, + 240,120,63,240,15,192,16,24,48,19,1,0,0,24,0,120, + 0,120,0,248,1,248,1,184,3,56,7,56,6,56,12,56, + 28,56,24,56,48,56,112,56,96,56,255,255,255,254,0,56, + 0,56,0,56,0,56,0,56,0,124,3,255,15,24,48,19, + 1,0,0,4,31,252,31,248,24,0,24,0,24,0,48,0, + 48,0,48,0,63,224,63,248,48,124,64,28,0,30,0,14, + 0,14,0,14,0,14,0,14,0,28,64,28,240,120,63,240, + 15,192,15,24,48,19,2,0,0,56,0,240,3,192,7,0, + 14,0,28,0,56,0,112,0,112,0,99,224,239,248,248,60, + 240,28,224,30,224,14,224,14,224,14,224,14,112,14,112,12, + 56,28,60,56,31,240,7,192,15,23,46,19,2,0,127,254, + 255,254,192,12,192,12,128,28,0,24,0,56,0,48,0,112, + 0,96,0,96,0,224,0,192,1,192,1,128,3,128,3,0, + 7,0,7,0,14,0,14,0,28,0,56,0,15,24,48,19, + 2,0,15,192,63,240,120,120,112,60,240,28,224,28,224,28, + 240,24,120,48,62,96,31,192,7,240,24,120,48,60,112,30, + 96,14,224,14,224,14,224,14,224,12,112,28,124,56,63,240, + 15,192,15,25,50,19,2,255,7,192,15,240,56,120,48,60, + 112,28,96,28,224,14,224,14,224,14,224,14,240,14,112,30, + 120,62,63,238,15,140,0,28,0,28,0,24,0,56,0,112, + 0,224,1,192,7,128,30,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=33 h=41 x= 3 y=20 dx=34 dy= 0 ascent=33 len=132 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x=-4 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =33 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25r[6239] U8G_SECTION(".progmem.u8g_font_gdr25r") = { + 0,59,57,236,242,25,6,209,16,163,32,127,247,33,247,31, + 247,0,0,0,9,0,0,5,30,30,11,3,255,48,112,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 96,96,96,0,0,0,112,248,248,248,112,11,13,26,17,3, + 16,112,224,241,224,241,224,241,224,241,224,112,224,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,17,23,69,19,2, + 2,0,194,0,1,134,0,1,134,0,1,142,0,3,140,0, + 3,12,0,3,12,0,63,255,128,63,255,128,6,24,0,6, + 56,0,14,48,0,12,48,0,12,48,0,255,254,0,255,254, + 0,24,96,0,24,224,0,48,192,0,48,192,0,48,192,0, + 113,192,0,97,128,0,16,30,60,19,1,253,1,128,1,128, + 1,128,3,224,15,252,57,254,49,156,113,136,113,128,113,128, + 121,128,61,128,63,128,31,224,7,248,1,252,1,190,1,143, + 1,143,1,135,193,135,193,135,225,142,241,142,255,252,63,240, + 15,192,1,128,1,128,1,128,25,25,100,27,1,255,15,128, + 6,0,63,192,28,0,113,224,56,0,112,224,56,0,224,112, + 112,0,224,112,224,0,224,112,224,0,224,113,192,0,224,115, + 128,0,112,231,0,0,120,231,0,0,63,206,60,0,31,28, + 254,0,0,29,207,0,0,57,199,0,0,115,131,128,0,227, + 131,128,0,227,131,128,1,195,131,128,3,131,131,128,3,131, + 131,128,7,1,199,0,14,1,199,0,28,0,254,0,24,0, + 120,0,24,28,84,27,2,0,0,248,0,1,252,0,3,30, + 0,7,14,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,7,112,0,7,192,0,7,131,255,15, + 135,255,29,193,242,57,224,240,112,240,112,112,112,112,224,120, + 112,224,60,112,224,30,224,224,15,224,224,7,192,240,3,192, + 120,3,240,60,30,248,31,252,127,7,224,56,4,13,13,10, + 3,16,112,240,240,240,240,112,96,96,96,96,96,96,96,9, + 37,74,13,3,250,0,128,3,128,7,0,14,0,12,0,28, + 0,24,0,56,0,56,0,112,0,112,0,112,0,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,112,0,112,0,112,0,112,0,56, + 0,56,0,28,0,28,0,14,0,7,0,3,128,0,128,9, + 37,74,13,1,250,128,0,224,0,112,0,56,0,28,0,28, + 0,14,0,14,0,14,0,7,0,7,0,7,0,7,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,7,0,7,0,7,0,7,0,14,0,14, + 0,12,0,28,0,24,0,56,0,112,0,224,0,128,0,16, + 16,32,18,1,14,1,128,1,128,1,128,97,132,113,142,121, + 159,31,248,7,192,3,192,31,248,121,158,241,142,33,134,1, + 128,1,128,1,128,15,14,28,16,1,4,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,10,10,9,2,250,60,252,60, + 28,28,24,24,48,32,64,11,2,4,13,1,9,127,224,255, + 224,5,5,5,9,2,255,112,248,248,248,112,17,38,114,19, + 1,249,0,1,128,0,7,0,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,56,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,192,0,1,192,0,1,192,0,3,128, + 0,3,128,0,3,128,0,7,0,0,7,0,0,14,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,28,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,112,0,0,224,0, + 0,192,0,0,17,24,72,19,1,0,3,224,0,15,248,0, + 28,60,0,56,30,0,48,14,0,112,7,0,96,7,0,96, + 7,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,3,0,112,7,0, + 112,7,0,120,6,0,60,14,0,30,28,0,15,248,0,7, + 224,0,14,24,48,19,3,0,1,128,7,128,63,128,255,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,15,224,127,252,14,24,48,19,2,0,3,224, + 15,248,24,120,48,60,112,28,96,28,224,28,0,28,0,24, + 0,56,0,48,0,112,0,224,1,192,1,128,3,128,7,0, + 14,0,28,0,24,4,48,4,112,12,255,252,255,252,15,24, + 48,19,1,0,3,224,15,248,28,120,56,60,112,28,112,28, + 0,28,0,24,0,48,0,96,3,224,3,248,0,60,0,28, + 0,14,0,14,0,14,0,14,0,14,0,28,64,28,240,120, + 63,240,15,192,16,24,48,19,1,0,0,24,0,120,0,120, + 0,248,1,248,1,184,3,56,7,56,6,56,12,56,28,56, + 24,56,48,56,112,56,96,56,255,255,255,254,0,56,0,56, + 0,56,0,56,0,56,0,124,3,255,15,24,48,19,1,0, + 0,4,31,252,31,248,24,0,24,0,24,0,48,0,48,0, + 48,0,63,224,63,248,48,124,64,28,0,30,0,14,0,14, + 0,14,0,14,0,14,0,28,64,28,240,120,63,240,15,192, + 15,24,48,19,2,0,0,56,0,240,3,192,7,0,14,0, + 28,0,56,0,112,0,112,0,99,224,239,248,248,60,240,28, + 224,30,224,14,224,14,224,14,224,14,112,14,112,12,56,28, + 60,56,31,240,7,192,15,23,46,19,2,0,127,254,255,254, + 192,12,192,12,128,28,0,24,0,56,0,48,0,112,0,96, + 0,96,0,224,0,192,1,192,1,128,3,128,3,0,7,0, + 7,0,14,0,14,0,28,0,56,0,15,24,48,19,2,0, + 15,192,63,240,120,120,112,60,240,28,224,28,224,28,240,24, + 120,48,62,96,31,192,7,240,24,120,48,60,112,30,96,14, + 224,14,224,14,224,14,224,12,112,28,124,56,63,240,15,192, + 15,25,50,19,2,255,7,192,15,240,56,120,48,60,112,28, + 96,28,224,14,224,14,224,14,224,14,240,14,112,30,120,62, + 63,238,15,140,0,28,0,28,0,24,0,56,0,112,0,224, + 1,192,7,128,30,0,48,0,5,19,19,9,2,255,120,248, + 248,248,96,0,0,0,0,0,0,0,0,0,112,248,248,248, + 112,6,24,24,9,2,250,120,248,248,248,96,0,0,0,0, + 0,0,0,0,0,60,252,60,28,28,24,24,48,32,64,15, + 13,26,18,1,5,0,2,0,30,0,254,3,240,31,192,126, + 0,240,0,252,0,63,128,7,224,1,252,0,62,0,12,15, + 8,16,18,1,7,127,254,255,254,0,0,0,0,0,0,0, + 0,127,254,255,254,15,13,26,18,1,5,96,0,252,0,63, + 0,15,224,1,252,0,126,0,30,0,126,3,240,31,192,126, + 0,248,0,192,0,14,30,60,17,2,255,7,224,31,240,56, + 120,112,56,224,28,224,28,224,28,192,28,0,28,0,56,0, + 56,0,112,0,240,0,224,1,192,3,128,3,128,7,0,7, + 0,7,0,7,0,7,0,0,0,0,0,0,0,7,0,15, + 128,15,128,15,128,7,0,30,33,132,32,1,249,0,7,248, + 0,0,63,254,0,0,240,31,128,1,192,7,192,3,0,1, + 224,6,0,0,240,12,0,0,112,24,0,0,120,56,3,198, + 56,48,15,252,56,112,28,60,60,112,56,28,28,96,112,28, + 28,224,96,28,28,224,224,28,28,224,224,28,28,224,224,28, + 28,224,224,28,28,224,224,28,28,224,224,28,24,240,240,28, + 56,112,112,28,48,112,120,60,96,120,60,94,224,56,31,143, + 128,60,15,15,0,30,0,0,0,31,0,0,0,15,128,0, + 32,7,192,0,192,1,248,15,128,0,255,254,0,0,31,240, + 0,23,25,75,24,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,19,25,75,22,1,0,31,240,0,255,254,0,28,31, + 0,28,7,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,0,28,6,0,28,28,0,31,254,0,31,255,0,28, + 15,128,28,3,192,28,1,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,1,224,28,1,192,28,7,128,63,255,0, + 255,252,0,19,25,75,21,1,0,0,254,0,3,255,192,7, + 7,192,12,1,128,24,0,0,56,0,0,112,0,0,112,0, + 0,112,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,112,0,0,112, + 0,0,120,0,0,60,0,64,30,1,224,15,135,128,7,254, + 0,1,248,0,21,25,75,24,1,0,31,248,0,255,255,0, + 28,15,128,28,3,192,28,1,224,28,0,240,28,0,112,28, + 0,112,28,0,120,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,28,0,112, + 28,0,112,28,0,224,28,1,224,28,3,192,28,15,128,63, + 254,0,255,248,0,18,25,75,20,1,0,255,255,0,63,255, + 0,28,3,0,28,1,0,28,1,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,31,252,0,31,252,0,28, + 8,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,64,28,0,192,28,1,128, + 63,255,128,255,255,128,17,25,75,19,1,0,255,255,128,63, + 255,128,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,31,252,0,31,248,0, + 28,24,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,62,0,0,255,128,0,21,25,75,23,1,0,0,127,0, + 1,255,192,7,3,224,14,0,192,28,0,0,56,0,0,48, + 0,0,112,0,0,112,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,15,248,224,1,224,224,0,224,224,0,224, + 112,0,224,112,0,224,120,0,224,60,0,224,30,0,224,15, + 129,192,7,255,128,1,252,0,24,25,75,26,1,0,255,129, + 255,62,0,124,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31, + 255,248,31,255,248,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,62,0,124,255,129,255,9,25,50,12,1,0,255, + 128,62,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,62,0,255, + 128,15,32,64,12,252,249,7,254,0,248,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,96,0,96,0,224,0, + 192,49,128,127,0,252,0,22,25,75,23,1,0,255,135,248, + 62,1,192,28,3,128,28,7,0,28,14,0,28,12,0,28, + 24,0,28,56,0,28,112,0,28,224,0,29,192,0,31,128, + 0,31,192,0,29,224,0,28,224,0,28,112,0,28,56,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,28, + 3,224,62,1,252,255,128,240,18,25,75,19,1,0,255,128, + 0,62,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,192,28,0,128, + 30,1,128,63,255,128,255,255,128,30,25,100,32,1,0,254, + 0,1,248,30,0,3,224,31,0,3,224,31,0,3,224,31, + 0,7,224,27,128,6,224,27,128,14,224,25,192,12,224,25, + 192,12,224,24,224,28,224,24,224,24,224,24,224,56,224,24, + 112,48,224,24,112,112,224,24,56,96,224,24,56,96,224,24, + 28,224,224,24,28,192,224,24,31,192,224,24,15,128,224,24, + 15,128,224,24,7,128,224,24,7,0,224,60,7,1,224,255, + 2,7,252,24,25,75,26,1,0,248,1,255,60,0,124,30, + 0,56,30,0,56,31,0,56,31,128,56,29,128,56,29,192, + 56,28,224,56,28,96,56,28,112,56,28,56,56,28,28,56, + 28,28,56,28,14,56,28,7,56,28,7,56,28,3,184,28, + 3,248,28,1,248,28,0,248,28,0,248,28,0,120,62,0, + 56,255,128,24,21,25,75,24,1,0,0,252,0,3,255,0, + 7,7,128,12,3,192,24,1,224,56,0,224,112,0,112,112, + 0,112,96,0,120,224,0,56,224,0,56,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,240,0,48,112,0,112, + 112,0,96,120,0,224,60,0,192,30,1,128,15,7,0,7, + 254,0,1,248,0,18,25,75,21,1,0,31,248,0,255,254, + 0,28,31,0,28,7,128,28,3,192,28,1,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,3,128,28,7,128,28, + 15,0,29,254,0,28,248,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 62,0,0,255,128,0,24,31,93,24,1,250,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,112,56,0,224,60,0,192,30,1,192,15,7, + 128,7,254,0,1,252,0,0,14,0,0,7,0,0,3,130, + 0,1,227,0,0,254,0,0,60,21,25,75,22,1,0,31, + 240,0,255,254,0,28,31,0,28,7,0,28,7,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,7,0,28,6,0, + 28,28,0,31,240,0,28,112,0,28,56,0,28,56,0,28, + 28,0,28,30,0,28,14,0,28,7,0,28,7,128,28,3, + 128,28,3,192,62,1,248,255,129,240,15,25,50,19,2,0, + 7,224,31,248,120,124,112,24,224,0,224,0,224,0,240,0, + 248,0,126,0,63,128,31,224,7,248,1,252,0,124,0,30, + 0,30,0,14,128,14,128,14,192,28,224,28,240,120,255,240, + 31,128,21,25,75,22,0,0,127,255,248,255,255,248,192,112, + 24,192,112,24,128,112,16,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,248,0, + 3,254,0,24,25,75,26,1,0,255,129,255,62,0,124,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,112,14,0,112,14,0,112,15,0,224,7,193,192,3,255, + 128,0,126,0,25,25,100,26,0,0,255,128,127,128,28,0, + 14,0,30,0,12,0,14,0,28,0,14,0,24,0,15,0, + 24,0,7,0,56,0,7,0,48,0,3,128,48,0,3,128, + 112,0,3,192,96,0,1,192,224,0,1,192,224,0,1,224, + 192,0,0,225,192,0,0,225,128,0,0,113,128,0,0,115, + 128,0,0,123,0,0,0,59,0,0,0,63,0,0,0,62, + 0,0,0,30,0,0,0,30,0,0,0,8,0,0,33,25, + 125,34,0,0,255,128,192,127,128,28,0,192,14,0,28,0, + 192,12,0,28,1,224,12,0,14,1,224,28,0,14,1,224, + 28,0,14,3,240,24,0,14,3,112,24,0,7,3,48,24, + 0,7,7,56,56,0,7,6,56,56,0,7,6,24,48,0, + 7,14,28,48,0,3,140,28,48,0,3,140,14,112,0,3, + 156,14,96,0,3,152,14,96,0,1,216,7,96,0,1,248, + 7,96,0,1,240,7,224,0,1,240,3,192,0,1,240,3, + 192,0,0,224,3,192,0,0,224,1,192,0,0,192,1,128, + 0,23,25,75,25,1,0,255,135,252,60,0,240,28,0,224, + 30,1,192,15,1,128,7,3,128,7,135,0,3,198,0,1, + 238,0,0,252,0,0,252,0,0,120,0,0,120,0,0,124, + 0,0,254,0,1,206,0,1,207,0,3,135,128,3,3,128, + 7,3,192,14,1,224,12,0,224,28,0,240,60,0,248,255, + 3,254,23,25,75,24,0,0,248,1,254,60,0,120,30,0, + 96,14,0,224,7,0,192,7,129,192,3,129,128,3,195,128, + 1,195,0,0,231,0,0,238,0,0,126,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,124,0, + 1,255,0,18,25,75,21,1,0,63,255,192,63,255,192,48, + 3,128,32,7,128,96,15,0,96,14,0,0,30,0,0,28, + 0,0,56,0,0,120,0,0,112,0,0,240,0,1,224,0, + 1,192,0,3,192,0,3,128,0,7,0,0,15,0,0,14, + 0,0,30,0,64,60,0,64,56,0,192,120,0,192,127,255, + 192,255,255,192,9,37,74,12,3,250,255,128,255,128,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,128,255,128,17,38,114,19,1,249,192,0,0,224,0,0, + 112,0,0,112,0,0,48,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,14,0,0,14,0,0,6,0, + 0,7,0,0,7,0,0,3,0,0,3,128,0,3,128,0, + 1,192,0,1,192,0,0,192,0,0,224,0,0,224,0,0, + 96,0,0,112,0,0,112,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,12,0,0,14,0,0,14,0, + 0,7,0,0,7,0,0,3,0,0,1,128,9,37,74,13, + 1,250,255,128,255,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,128,255,128,16,19,38,20, + 2,11,0,128,3,128,3,192,3,192,7,224,6,224,14,224, + 12,112,12,112,28,120,24,56,24,56,48,28,48,28,112,28, + 96,14,96,14,224,7,128,6,17,2,6,19,1,251,127,255, + 128,255,255,0,8,9,9,13,1,20,224,240,112,56,56,28, + 14,6,3,16,18,36,18,2,0,3,224,31,240,56,120,112, + 56,240,56,192,56,0,56,0,120,7,248,28,56,112,56,96, + 56,224,56,224,56,224,120,241,185,127,63,60,24,18,30,90, + 20,0,0,12,0,0,124,0,0,188,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,60,0,28,255,0,29,143,0, + 31,7,128,30,3,128,28,3,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,128,28,1,128,28,3, + 128,30,3,0,31,134,0,7,252,0,1,240,0,15,18,36, + 17,2,0,1,248,7,254,28,28,56,12,112,4,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,0,112,4,120, + 6,62,28,31,248,7,224,19,30,90,21,2,0,0,3,0, + 0,63,0,0,15,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7, + 0,3,247,0,15,255,0,28,31,0,56,15,0,48,7,0, + 112,7,0,96,7,0,224,7,0,224,7,0,224,7,0,224, + 7,0,224,7,0,240,7,0,112,15,0,120,31,0,60,55, + 224,31,231,192,7,131,0,14,18,36,18,2,0,3,192,15, + 240,28,120,48,56,112,28,96,28,224,28,255,252,255,248,224, + 0,224,0,224,0,240,0,112,4,120,12,60,56,31,240,7, + 192,15,30,60,12,1,0,0,120,1,254,3,28,6,8,14, + 0,12,0,12,0,28,0,28,0,28,0,28,0,28,0,127, + 240,255,224,28,64,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,62, + 0,255,192,18,27,81,19,1,247,3,224,192,15,255,192,28, + 63,0,56,28,0,112,14,0,112,14,0,112,14,0,112,14, + 0,120,28,0,60,56,0,31,240,0,7,192,0,6,0,0, + 12,0,0,28,0,0,31,224,0,15,254,0,12,63,128,24, + 3,192,112,1,192,224,1,192,224,1,192,224,3,128,240,3, + 128,124,15,0,63,252,0,7,240,0,21,30,90,22,1,0, + 12,0,0,252,0,0,124,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,31,0,28,63,128,28,227,192,29,129,192, + 31,1,192,30,1,192,30,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,62,3,192,255,143,248,9,27,54,11,1,0, + 28,0,60,0,60,0,60,0,24,0,0,0,0,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,11,36,72,10,252,247,0,224,1,224, + 1,224,1,224,0,192,0,0,0,0,0,0,0,0,0,96, + 7,224,1,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,192,0,192,1,192,1,128,35,0, + 254,0,248,0,19,30,90,20,1,0,12,0,0,252,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,31, + 224,28,7,0,28,14,0,28,28,0,28,48,0,28,224,0, + 29,192,0,31,128,0,29,192,0,29,224,0,28,240,0,28, + 120,0,28,56,0,28,28,0,28,30,0,28,15,0,60,7, + 128,255,3,224,9,30,60,11,1,0,12,0,252,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,31,18,72,32,1,0,12,30,3,192, + 252,127,15,224,60,199,152,240,29,131,176,112,31,3,224,112, + 30,3,192,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,60,7,192,240, + 255,159,243,254,21,18,54,22,1,0,12,15,0,252,63,128, + 60,99,192,29,129,192,29,1,192,30,1,192,30,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,62,3,192,255,143,248, + 16,18,36,20,2,0,3,224,15,248,28,60,48,30,112,14, + 96,15,224,7,224,7,224,7,224,7,224,7,224,7,240,6, + 112,14,120,12,62,56,31,240,7,192,18,27,81,21,1,247, + 12,28,0,252,127,0,60,143,128,29,7,128,30,3,128,30, + 3,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,128,28,1,128,28,3,128,30,3,0,31,6,0, + 29,252,0,28,120,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,62,0,0,255,128, + 0,19,27,81,21,2,247,1,241,128,7,251,0,28,31,0, + 56,15,0,48,7,0,112,7,0,96,7,0,224,7,0,224, + 7,0,224,7,0,224,7,0,224,7,0,240,7,0,112,15, + 0,120,31,0,60,55,0,31,231,0,7,135,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,63,224,14,18,36,16,1,0,12,60, + 252,252,61,140,29,12,31,4,30,0,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,0, + 255,128,11,18,36,15,2,0,31,0,127,128,115,192,225,128, + 224,128,240,0,248,0,126,0,31,0,15,192,3,224,1,224, + 128,224,128,224,192,224,225,192,255,128,62,0,13,25,50,14, + 0,0,4,0,12,0,28,0,28,0,28,0,28,0,28,0, + 127,248,255,240,28,32,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,56, + 15,240,7,128,21,18,54,21,0,0,12,0,192,252,15,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,3,192,28,7,192,30,29,200,15,241,240,7,192,192, + 19,18,54,20,0,0,255,7,224,60,1,192,28,1,128,28, + 3,128,14,3,0,14,3,0,14,6,0,7,6,0,7,6, + 0,3,140,0,3,140,0,3,156,0,1,216,0,1,216,0, + 0,240,0,0,240,0,0,240,0,0,64,0,28,18,72,28, + 0,0,255,3,7,240,60,7,0,192,28,7,0,192,28,7, + 129,128,28,15,129,128,14,15,129,128,14,13,195,128,14,25, + 195,0,6,25,195,0,7,24,227,0,7,48,230,0,3,48, + 118,0,3,176,118,0,3,224,124,0,1,224,60,0,1,224, + 60,0,1,192,60,0,1,128,16,0,20,18,54,20,0,0, + 127,143,224,30,3,128,14,3,0,7,6,0,7,140,0,3, + 156,0,1,216,0,0,240,0,0,240,0,0,240,0,1,184, + 0,1,156,0,3,30,0,6,14,0,14,7,0,12,3,128, + 60,3,192,255,15,240,20,27,81,20,255,247,127,131,240,30, + 0,224,14,0,192,14,0,192,7,1,128,7,1,128,7,3, + 0,3,131,0,3,131,0,1,198,0,1,198,0,1,198,0, + 0,236,0,0,236,0,0,120,0,0,120,0,0,120,0,0, + 48,0,0,48,0,0,96,0,0,96,0,0,224,0,1,192, + 0,67,128,0,127,0,0,254,0,0,124,0,0,15,18,36, + 18,1,0,63,254,63,254,96,28,96,56,64,56,0,112,0, + 224,1,192,1,192,3,128,7,0,7,0,14,0,28,2,56, + 2,56,6,127,254,255,254,11,37,74,14,2,250,0,64,1, + 224,3,128,7,0,6,0,14,0,14,0,14,0,14,0,14, + 0,15,0,7,0,7,0,7,0,7,0,7,0,14,0,28, + 0,124,0,254,0,15,0,7,0,7,0,7,0,7,0,7, + 0,15,0,14,0,14,0,14,0,14,0,14,0,14,0,7, + 0,3,0,1,192,0,64,3,41,41,9,3,248,96,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,192,11,37,74,14,1,250,64,0,112,0, + 56,0,28,0,12,0,14,0,14,0,14,0,14,0,14,0, + 30,0,28,0,28,0,28,0,28,0,28,0,14,0,15,192, + 3,224,7,0,14,0,12,0,28,0,28,0,28,0,28,0, + 30,0,14,0,14,0,14,0,14,0,14,0,12,0,28,0, + 56,0,112,0,192,0,18,6,18,20,1,9,15,0,192,31, + 192,128,63,225,0,99,255,0,192,254,0,128,56,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=40 h=49 x= 5 y=28 dx=41 dy= 0 ascent=42 len=195 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x=-5 y=-13 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =42 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30[18369] U8G_SECTION(".progmem.u8g_font_gdr30") = { + 0,71,68,232,239,30,9,231,23,124,32,255,245,42,243,38, + 245,0,0,0,11,0,0,6,36,36,13,3,255,12,60,124, + 124,124,124,124,120,120,120,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,0,0,0,0,56,124,252,252,248, + 112,13,16,32,20,4,19,48,56,240,248,240,248,240,240,240, + 240,240,240,240,112,240,112,240,112,240,112,112,112,112,112,96, + 112,96,112,96,112,96,112,21,27,81,23,2,3,0,48,96, + 0,112,224,0,96,192,0,224,192,0,225,192,0,225,192,0, + 193,128,1,195,128,31,255,248,31,255,248,3,135,0,3,135, + 0,3,7,0,3,6,0,7,14,0,7,14,0,6,14,0, + 255,255,192,255,255,192,12,28,0,12,24,0,28,56,0,28, + 56,0,24,48,0,56,112,0,56,112,0,48,96,0,20,36, + 108,23,1,252,0,96,0,0,96,0,0,96,0,0,96,0, + 3,254,0,15,255,128,62,127,192,120,103,128,112,99,128,240, + 96,0,240,96,0,240,96,0,248,96,0,126,96,0,127,224, + 0,63,240,0,15,254,0,1,255,0,0,127,192,0,111,224, + 0,99,224,0,97,240,0,96,240,0,96,240,64,96,240,96, + 96,240,112,96,224,120,97,224,124,99,192,127,255,128,31,255, + 0,7,248,0,0,96,0,0,96,0,0,96,0,0,96,0, + 31,30,120,34,1,255,7,192,0,96,31,224,1,240,60,240, + 1,192,120,120,3,192,112,120,7,128,240,60,7,0,240,60, + 14,0,240,60,30,0,240,60,60,0,240,60,56,0,240,60, + 120,0,120,56,240,0,120,120,224,0,60,241,192,0,31,227, + 195,224,15,135,143,240,0,7,30,120,0,15,60,60,0,30, + 56,60,0,28,120,30,0,56,120,30,0,120,120,30,0,240, + 120,30,0,224,120,30,1,192,120,30,3,192,60,28,3,128, + 60,60,7,0,30,120,15,0,15,240,12,0,7,192,30,34, + 136,32,2,0,0,63,0,0,0,255,128,0,1,199,192,0, + 3,131,224,0,7,1,224,0,7,1,224,0,15,1,224,0, + 15,1,224,0,15,3,224,0,15,3,192,0,15,135,192,0, + 15,143,128,0,7,191,0,0,7,254,0,0,7,248,0,0, + 7,240,0,0,15,240,63,248,31,240,127,252,62,120,30,48, + 60,124,15,0,124,60,15,0,120,30,7,0,240,31,7,0, + 240,15,135,0,240,7,198,0,240,3,198,0,240,3,236,0, + 240,1,252,0,248,0,252,0,120,0,126,0,60,0,255,0, + 63,3,143,200,15,255,7,240,3,248,3,192,4,16,16,12, + 4,19,48,240,240,240,240,240,240,240,240,240,112,112,96,96, + 96,96,11,45,90,15,3,249,0,32,0,224,1,192,3,128, + 3,128,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 56,0,120,0,120,0,120,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,120,0,120,0,120,0,120,0,56,0,60,0,60,0, + 28,0,30,0,14,0,15,0,7,0,3,128,1,192,0,224, + 0,32,11,45,90,15,1,249,128,0,224,0,112,0,56,0, + 28,0,30,0,14,0,15,0,7,0,7,128,7,128,3,128, + 3,192,3,192,3,192,3,192,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,192,3,192,3,192,3,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,56,0,56,0,112,0,224,0, + 128,0,18,20,60,21,2,17,0,192,0,1,192,0,1,192, + 0,1,192,0,193,193,0,240,195,192,248,207,192,124,223,0, + 15,252,0,3,224,0,3,224,0,15,252,0,60,223,0,248, + 207,128,240,195,128,64,193,128,1,192,0,1,192,0,1,192, + 0,1,128,0,17,17,51,20,1,5,0,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,255,255,128,255,255,128,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,128,0,7,13,13, + 11,2,249,8,60,254,254,30,30,30,28,28,56,48,96,64, + 14,2,4,16,1,11,127,252,255,248,6,6,6,11,3,255, + 56,124,252,252,248,112,20,46,138,23,1,248,0,0,48,0, + 0,240,0,0,240,0,0,224,0,1,224,0,1,192,0,1, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,15,0,0,14,0,0,30,0,0,28,0,0, + 28,0,0,60,0,0,56,0,0,120,0,0,120,0,0,112, + 0,0,240,0,0,224,0,0,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0,7,128,0,7,128,0,7, + 0,0,15,0,0,14,0,0,30,0,0,30,0,0,28,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,112,0,0, + 240,0,0,192,0,0,19,29,87,23,2,0,1,248,0,7, + 252,0,14,30,0,28,15,0,24,7,128,56,7,128,56,3, + 192,112,3,192,112,3,192,112,3,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,192,120,1,192,120,3,192,120,3, + 128,60,3,128,60,3,0,30,7,0,15,14,0,7,252,0, + 3,240,0,17,29,87,23,3,0,0,96,0,1,224,0,15, + 224,0,127,224,0,255,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,3,240,0,63,254,0,127,255,128, + 17,29,87,22,2,0,1,248,0,7,254,0,28,31,0,56, + 15,0,120,15,128,112,7,128,240,7,128,224,7,128,0,7, + 128,0,7,128,0,15,0,0,15,0,0,30,0,0,30,0, + 0,60,0,0,120,0,0,240,0,0,240,0,1,224,0,3, + 192,0,7,128,0,15,0,0,15,0,0,30,0,128,60,0, + 128,120,0,128,240,1,128,255,255,128,255,255,128,18,29,87, + 22,1,0,1,248,0,7,254,0,30,31,0,60,15,0,56, + 7,128,120,7,128,112,7,128,0,7,128,0,7,0,0,15, + 0,0,30,0,0,60,0,0,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,7,128,128,7,128,224,15, + 0,120,62,0,63,252,0,7,224,0,19,29,87,23,1,0, + 0,3,0,0,15,0,0,31,0,0,63,0,0,127,0,0, + 127,0,0,239,0,0,207,0,1,207,0,3,143,0,3,143, + 0,7,15,0,14,15,0,14,15,0,28,15,0,24,15,0, + 56,15,0,112,15,0,112,15,0,255,255,224,255,255,192,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,63,128,1,255,224,18,29,87,23,2,0,0,0,128, + 0,1,128,31,255,0,31,254,0,24,0,0,24,0,0,24, + 0,0,24,0,0,56,0,0,56,0,0,56,0,0,63,240, + 0,63,252,0,120,63,0,32,15,0,0,7,128,0,7,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,128,0,7,128,128,7,128,224,15,0,120,62,0,63,252, + 0,7,240,0,18,29,87,23,3,0,0,7,0,0,63,0, + 0,248,0,1,224,0,3,192,0,15,0,0,14,0,0,30, + 0,0,60,0,0,56,0,0,120,0,0,120,248,0,119,254, + 0,254,31,0,248,15,128,240,7,128,240,7,192,240,3,192, + 240,3,192,240,3,192,240,3,192,248,3,192,120,3,128,120, + 3,128,60,7,128,60,7,0,31,14,0,15,252,0,3,240, + 0,19,27,81,23,2,0,127,255,192,127,255,224,96,1,192, + 64,3,192,192,3,128,0,3,128,0,7,0,0,7,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,56,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,224,0,0,224,0, + 1,192,0,1,192,0,3,192,0,7,128,0,7,128,0,15, + 0,0,15,0,0,28,0,0,18,29,87,22,2,0,3,248, + 0,15,254,0,28,31,0,56,15,0,48,7,128,112,7,128, + 112,7,128,112,7,128,112,7,0,120,15,0,62,30,0,31, + 188,0,15,240,0,3,252,0,7,254,0,30,63,0,60,15, + 128,120,7,192,112,7,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,128,120,7,128,124,7,0,62,14,0,31, + 252,0,7,224,0,19,30,90,23,2,255,1,248,0,7,254, + 0,14,31,0,28,15,128,56,7,128,120,3,192,112,3,192, + 240,3,224,240,1,224,240,1,224,240,1,224,240,1,224,248, + 1,224,120,3,224,124,7,224,62,13,224,31,249,224,7,225, + 192,0,3,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,30,0,0,60,0,0,120,0,0,240,0,3,224,0,31, + 128,0,56,0,0,6,23,23,11,3,255,56,124,252,252,248, + 112,0,0,0,0,0,0,0,0,0,0,0,56,124,252,252, + 248,112,7,29,29,11,2,249,28,62,126,126,124,56,0,0, + 0,0,0,0,0,0,0,0,8,60,254,254,30,30,30,28, + 28,56,48,96,64,19,15,45,21,1,6,0,0,96,0,3, + 192,0,31,192,0,127,0,3,252,0,31,224,0,127,0,0, + 124,0,0,254,0,0,63,192,0,7,240,0,1,254,0,0, + 63,192,0,7,224,0,1,128,19,9,27,21,1,9,127,255, + 224,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,127,255,224,255,255,192,19,15,45,21,1,6,48, + 0,0,252,0,0,127,128,0,15,240,0,3,254,0,0,127, + 128,0,15,224,0,3,192,0,31,192,0,255,0,3,248,0, + 31,192,0,127,0,0,120,0,0,192,0,0,17,36,108,21, + 2,255,3,248,0,15,254,0,60,63,0,120,15,0,120,15, + 128,240,7,128,240,7,128,240,7,128,224,7,128,0,7,128, + 0,15,0,0,15,0,0,30,0,0,30,0,0,60,0,0, + 120,0,0,112,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,3, + 224,0,7,224,0,7,224,0,7,192,0,3,128,0,36,39, + 195,39,1,248,0,0,255,128,0,0,7,255,224,0,0,31, + 1,248,0,0,120,0,62,0,0,224,0,31,0,1,192,0, + 15,0,7,128,0,7,128,7,0,0,3,192,14,0,0,1, + 192,28,0,124,33,224,28,1,255,96,224,56,3,135,224,224, + 56,7,3,224,224,120,14,1,224,240,112,14,1,224,112,112, + 30,1,224,112,240,28,1,224,112,240,60,1,224,112,240,60, + 1,224,112,240,60,1,224,112,240,60,1,224,112,240,60,1, + 224,112,240,60,1,224,96,248,60,1,224,224,248,62,1,224, + 192,120,30,1,224,192,120,31,3,225,128,124,15,5,225,0, + 60,15,141,242,0,62,7,248,252,0,31,1,224,112,0,31, + 0,0,0,0,15,128,0,0,0,7,192,0,1,0,3,240, + 0,3,128,1,248,0,14,0,0,127,0,252,0,0,31,255, + 240,0,0,3,255,0,0,28,30,120,29,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,24,30,90,27,0,0,7,254,0,255,255, + 192,111,7,224,15,1,240,15,0,248,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,112,15,0,240,15,1,224,15, + 7,192,15,255,192,15,255,240,15,1,248,15,0,124,15,0, + 62,15,0,30,15,0,31,15,0,15,15,0,15,15,0,15, + 15,0,15,15,0,14,15,0,30,15,0,60,15,0,248,63, + 255,240,127,255,128,23,30,90,26,1,0,0,31,224,0,255, + 252,1,192,252,7,128,56,14,0,16,14,0,0,28,0,0, + 56,0,0,56,0,0,120,0,0,112,0,0,112,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,30,0,4,31,0,14,15,128,56,7,224,240,1, + 255,192,0,127,0,25,30,120,28,1,0,7,254,0,0,255, + 255,192,0,111,3,240,0,15,0,248,0,15,0,124,0,15, + 0,62,0,15,0,30,0,15,0,31,0,15,0,15,0,15, + 0,15,0,15,0,15,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,0,15,0,15,0,15, + 0,15,0,15,0,30,0,15,0,30,0,15,0,60,0,15, + 0,124,0,15,0,248,0,15,3,224,0,63,255,192,0,127, + 254,0,0,21,30,90,24,1,0,255,255,224,127,255,240,30, + 0,96,30,0,96,30,0,96,30,0,96,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,128,31,255,128,30,3,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,8,30,0,24,30,0,24,31,0,56,127,255,240, + 255,255,240,20,30,90,23,1,0,255,255,240,127,255,240,30, + 0,96,30,0,96,30,0,32,30,0,32,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,0,31,255,0,30,6,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,127,128,0, + 255,224,0,24,30,90,28,2,0,0,31,224,0,255,248,1, + 192,252,7,128,56,15,0,16,30,0,0,28,0,0,56,0, + 0,56,0,0,120,0,0,112,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,7,255,240,0,254,240, + 0,60,240,0,60,248,0,60,120,0,60,120,0,60,60,0, + 60,62,0,60,30,0,60,15,0,60,7,192,248,3,255,224, + 0,127,0,27,30,120,31,2,0,255,192,127,224,127,128,63, + 192,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,31,255,255,0,31,255,255,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,127,0,31,192,255,192,127, + 224,10,30,60,14,2,0,255,192,127,128,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,127, + 128,255,192,17,38,114,15,252,248,7,255,128,0,255,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,56,0,0,56,0,0,56,0,0,112,0,0,112,0,0, + 224,0,112,192,0,255,0,0,124,0,0,26,30,120,28,1, + 0,255,193,255,128,127,128,124,0,30,0,120,0,30,0,240, + 0,30,1,224,0,30,1,192,0,30,3,128,0,30,7,0, + 0,30,14,0,0,30,28,0,0,30,56,0,0,30,120,0, + 0,30,112,0,0,30,224,0,0,31,224,0,0,30,240,0, + 0,30,120,0,0,30,124,0,0,30,62,0,0,30,30,0, + 0,30,15,0,0,30,7,128,0,30,7,192,0,30,3,224, + 0,30,1,240,0,30,0,248,0,30,0,124,0,30,0,126, + 0,127,128,63,192,255,192,31,0,21,30,90,23,1,0,255, + 192,0,127,128,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,8,30,0,24,30,0,24, + 31,0,48,127,255,240,255,255,240,36,30,150,39,1,0,127, + 0,0,15,224,31,128,0,31,128,15,128,0,31,0,15,128, + 0,63,0,15,192,0,63,0,15,192,0,55,0,15,224,0, + 119,0,14,224,0,119,0,14,240,0,231,0,14,240,0,231, + 0,14,120,0,199,0,14,120,1,199,0,14,56,1,199,0, + 14,60,3,135,0,14,28,3,135,0,14,30,7,7,0,14, + 30,7,7,0,14,15,6,7,0,14,15,14,7,0,14,7, + 14,7,0,14,7,156,7,0,14,3,156,7,0,14,3,216, + 7,0,14,3,248,7,0,14,1,248,7,0,14,1,240,7, + 0,14,0,240,7,0,14,0,224,7,0,63,0,224,31,192, + 255,192,96,127,240,27,30,120,31,2,0,252,0,63,224,124, + 0,15,128,30,0,7,0,31,0,7,0,31,0,7,0,31, + 128,7,0,31,192,7,0,29,192,7,0,28,224,7,0,28, + 240,7,0,28,120,7,0,28,56,7,0,28,60,7,0,28, + 30,7,0,28,14,7,0,28,15,7,0,28,7,135,0,28, + 7,135,0,28,3,199,0,28,1,231,0,28,1,231,0,28, + 0,247,0,28,0,127,0,28,0,127,0,28,0,63,0,28, + 0,31,0,28,0,31,0,28,0,15,0,62,0,7,0,255, + 128,3,0,25,30,120,29,2,0,0,63,0,0,0,255,224, + 0,3,193,240,0,7,0,248,0,14,0,124,0,28,0,62, + 0,60,0,30,0,56,0,31,0,120,0,15,0,120,0,15, + 0,112,0,15,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,248,0,7,0,120,0,15,0,120,0,15, + 0,124,0,14,0,60,0,28,0,62,0,28,0,31,0,56, + 0,15,128,112,0,7,193,224,0,3,255,128,0,0,254,0, + 0,22,30,90,25,1,0,7,254,0,255,255,192,111,7,224, + 15,1,240,15,0,248,15,0,124,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,120,15,0, + 120,15,0,240,15,131,224,15,127,192,15,62,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,63,192,0,127,240, + 0,28,37,148,29,2,249,0,63,0,0,0,255,224,0,3, + 193,240,0,7,0,248,0,14,0,124,0,28,0,62,0,60, + 0,30,0,56,0,31,0,120,0,15,0,120,0,15,0,112, + 0,15,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,248,0,7,0,120,0,15,0,120,0,15,0,124, + 0,14,0,60,0,30,0,62,0,28,0,31,0,56,0,15, + 128,112,0,7,193,224,0,3,255,192,0,0,127,128,0,0, + 3,192,0,0,1,224,0,0,0,248,16,0,0,124,48,0, + 0,31,224,0,0,15,224,0,0,3,128,26,30,120,27,1, + 0,7,254,0,0,255,255,192,0,111,7,224,0,15,1,240, + 0,15,0,240,0,15,0,120,0,15,0,120,0,15,0,120, + 0,15,0,120,0,15,0,120,0,15,0,112,0,15,0,240, + 0,15,1,224,0,15,3,192,0,15,255,0,0,15,254,0, + 0,15,14,0,0,15,7,0,0,15,7,128,0,15,3,128, + 0,15,3,192,0,15,1,192,0,15,1,224,0,15,0,240, + 0,15,0,240,0,15,0,120,0,15,0,124,0,15,0,62, + 0,63,192,63,192,127,224,31,0,18,30,90,23,3,0,3, + 248,0,31,254,0,60,63,0,120,14,0,112,4,0,240,0, + 0,240,0,0,240,0,0,248,0,0,252,0,0,127,0,0, + 127,192,0,63,240,0,31,248,0,7,254,0,1,255,0,0, + 127,128,0,31,128,0,15,192,0,7,192,0,3,192,0,3, + 192,0,3,192,128,3,128,192,3,128,224,7,0,240,15,0, + 252,62,0,255,248,0,15,224,0,26,30,120,26,0,0,127, + 255,255,192,127,255,255,192,96,30,1,128,192,30,1,128,192, + 30,1,128,128,30,0,128,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 127,128,0,1,255,224,0,27,30,120,31,2,0,255,192,127, + 224,127,128,63,192,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,30,0,15,0,30,0,15,0,30, + 0,7,128,60,0,7,192,120,0,3,224,240,0,1,255,224, + 0,0,63,128,0,30,30,120,31,0,0,255,224,15,252,31, + 0,1,240,15,0,0,224,15,0,1,192,7,0,1,192,7, + 128,1,192,7,128,3,128,3,192,3,128,3,192,3,128,3, + 192,7,0,1,224,7,0,1,224,6,0,0,224,14,0,0, + 240,14,0,0,240,12,0,0,120,28,0,0,120,28,0,0, + 120,56,0,0,60,56,0,0,60,56,0,0,28,112,0,0, + 30,112,0,0,30,112,0,0,15,224,0,0,15,224,0,0, + 15,224,0,0,7,192,0,0,7,192,0,0,3,128,0,0, + 3,0,0,40,30,150,41,0,0,255,224,24,3,255,63,0, + 24,0,252,14,0,28,0,48,15,0,60,0,112,15,0,60, + 0,112,15,0,62,0,112,7,0,126,0,96,7,0,127,0, + 224,7,128,127,0,224,7,128,103,0,224,7,128,231,128,224, + 3,128,231,128,192,3,192,195,129,192,3,193,195,193,192,3, + 193,195,193,192,1,193,129,193,192,1,195,129,225,128,1,227, + 129,227,128,1,227,0,227,128,1,231,0,243,128,0,231,0, + 243,128,0,246,0,115,0,0,254,0,127,0,0,254,0,63, + 0,0,124,0,63,0,0,124,0,62,0,0,124,0,30,0, + 0,124,0,30,0,0,120,0,30,0,0,48,0,8,0,28, + 30,120,30,1,0,255,224,255,224,255,224,255,224,63,0,31, + 0,31,0,30,0,15,128,28,0,7,128,56,0,3,192,120, + 0,3,224,112,0,1,224,224,0,0,241,224,0,0,249,192, + 0,0,127,128,0,0,63,128,0,0,31,0,0,0,31,0, + 0,0,31,0,0,0,63,128,0,0,63,192,0,0,115,224, + 0,0,241,224,0,0,224,240,0,1,192,248,0,3,192,120, + 0,3,128,60,0,7,0,62,0,15,0,31,0,14,0,15, + 0,62,0,15,192,255,192,127,240,255,192,127,240,28,30,120, + 29,0,0,252,0,63,240,254,0,63,240,31,0,15,128,15, + 0,7,0,15,128,14,0,7,192,14,0,3,192,28,0,3, + 224,60,0,1,224,56,0,0,240,120,0,0,248,112,0,0, + 120,224,0,0,125,224,0,0,61,192,0,0,63,192,0,0, + 31,128,0,0,31,128,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,63,192,0,0,255,240,0,22,30,90,25,1, + 0,63,255,252,63,255,252,56,0,120,48,0,248,48,1,240, + 32,1,224,32,3,224,0,3,192,0,7,128,0,15,128,0, + 15,0,0,31,0,0,30,0,0,60,0,0,124,0,0,120, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 7,128,0,15,128,0,15,0,4,31,0,12,62,0,12,60, + 0,12,124,0,28,127,255,252,255,255,252,11,45,90,15,3, + 248,255,224,255,224,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,255,224,255,224,20,46,138,23,1, + 248,224,0,0,112,0,0,112,0,0,120,0,0,56,0,0, + 56,0,0,28,0,0,28,0,0,30,0,0,14,0,0,14, + 0,0,15,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,192,0,1,192,0,1,192,0,1,224,0,0,224,0, + 0,224,0,0,240,0,0,112,0,0,112,0,0,56,0,0, + 56,0,0,60,0,0,28,0,0,28,0,0,30,0,0,14, + 0,0,14,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,224,0, + 0,224,0,0,240,0,0,112,0,0,48,11,45,90,15,1, + 248,255,224,255,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,255,224,255,224,19,23,69,24,2, + 13,0,32,0,0,112,0,0,240,0,1,240,0,1,248,0, + 1,248,0,3,188,0,3,188,0,7,60,0,7,30,0,6, + 30,0,14,14,0,14,15,0,12,15,0,28,7,128,28,7, + 128,24,3,128,56,3,192,48,3,192,112,1,224,112,1,224, + 96,0,224,192,0,192,20,2,6,23,1,251,127,255,240,255, + 255,240,9,10,20,15,1,25,240,0,248,0,120,0,60,0, + 28,0,14,0,7,0,3,0,1,128,1,128,20,22,66,22, + 2,0,1,248,0,15,254,0,28,30,0,120,15,0,112,15, + 0,240,15,0,128,15,0,0,15,0,0,15,0,0,255,0, + 7,255,0,31,143,0,62,15,0,120,15,0,248,15,0,240, + 15,0,240,15,0,240,31,0,240,63,0,120,239,32,127,143, + 240,30,7,128,22,36,108,24,0,0,6,0,0,126,0,0, + 254,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,15,128,30,63,224,30,127,240,30,227,240, + 31,192,248,31,128,248,31,0,124,30,0,124,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 56,30,0,56,30,0,112,30,0,96,31,0,224,15,193,192, + 3,255,0,0,252,0,18,22,66,21,2,0,0,127,0,3, + 255,192,7,7,192,14,1,128,28,0,128,56,0,0,120,0, + 0,112,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,248,0,0,120,0,0,120,0,0,60, + 0,64,62,1,192,31,131,128,7,254,0,1,248,0,23,36, + 108,25,2,0,0,0,224,0,15,224,0,15,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,253, + 224,3,255,224,15,15,224,28,3,224,60,1,224,56,1,224, + 120,1,224,112,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,1, + 224,124,3,224,62,5,228,31,25,254,15,240,248,7,192,224, + 18,22,66,22,2,0,0,248,0,7,254,0,14,15,0,28, + 7,128,56,7,128,56,3,192,112,3,192,112,3,192,255,255, + 192,255,255,128,240,0,0,240,0,0,240,0,0,240,0,0, + 248,0,0,120,0,0,120,0,0,124,0,192,62,1,128,31, + 7,0,15,254,0,3,248,0,19,36,108,15,0,0,0,15, + 128,0,63,224,0,99,192,1,193,128,3,128,0,3,128,0, + 7,128,0,7,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,63,254,0,255,252,0,15,8, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,31,224,0,127,248,0,24,33,99,24,0,245, + 0,252,2,3,255,126,7,7,252,14,3,224,30,1,224,28, + 1,240,60,0,240,60,0,240,60,0,240,60,0,240,62,0, + 224,31,1,192,15,131,128,7,255,0,1,252,0,3,192,0, + 7,128,0,15,128,0,15,224,0,7,255,128,3,255,240,7, + 191,252,14,0,254,60,0,31,120,0,15,240,0,15,240,0, + 15,240,0,14,248,0,28,124,0,56,63,128,240,15,255,192, + 1,254,0,23,36,108,26,2,0,6,0,0,126,0,0,254, + 0,0,62,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,7,128,28,31,224,28,49,224,28,96,240,28, + 192,240,29,128,240,31,0,240,31,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,63, + 131,248,255,199,254,10,32,64,13,2,0,28,0,30,0,62, + 0,62,0,28,0,0,0,0,0,0,0,0,0,0,0,6, + 0,126,0,254,0,62,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,63,0,255,192,14,43,86,12,251, + 245,0,56,0,60,0,124,0,124,0,56,0,0,0,0,0, + 0,0,0,0,0,0,12,0,252,1,252,0,124,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,56,0,56,0,120,0,112,0,112,48, + 224,127,128,255,0,124,0,23,36,108,24,1,0,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,7,252,30,1,240,30,1,192, + 30,3,128,30,7,0,30,14,0,30,56,0,30,112,0,30, + 224,0,31,224,0,30,240,0,30,248,0,30,120,0,30,60, + 0,30,30,0,30,15,0,30,15,128,30,7,192,30,3,224, + 30,1,224,63,0,254,255,192,124,12,36,72,13,1,0,3, + 0,63,0,127,0,31,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,31,128,255,240,36,22,110,39,2,0,12,7,192, + 124,0,254,31,224,255,0,62,49,227,143,0,30,96,247,7, + 128,30,192,254,7,128,31,128,252,7,128,31,0,248,7,128, + 31,0,248,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,30,0,240,7,128,30,0,240,7,128,30,0,240,7, + 128,127,131,252,31,192,255,199,254,63,240,23,22,66,26,2, + 0,12,7,192,254,15,224,62,49,224,30,96,240,30,192,240, + 30,128,240,31,0,240,31,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,127,131,248, + 255,199,254,20,22,66,24,2,0,0,252,0,7,255,0,14, + 15,128,28,7,192,56,3,192,56,3,224,112,1,224,112,1, + 240,240,0,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,248,0,224,120,1,224,124,1,192,60,1,192,62, + 3,128,31,7,0,15,254,0,3,240,0,21,33,99,25,2, + 245,12,7,128,254,31,192,62,35,224,30,65,240,30,129,240, + 31,0,240,31,0,248,30,0,248,30,0,120,30,0,120,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,112,30,0, + 112,30,0,224,30,0,224,31,1,192,31,195,128,30,255,0, + 30,62,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,127,0, + 0,255,224,0,22,33,99,25,2,245,0,252,48,3,255,96, + 7,15,224,30,3,224,28,1,224,56,1,224,120,1,224,112, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,120,1,224,120,1,224,124,3,224, + 62,7,224,31,29,224,15,249,224,3,225,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,240,0,31,252,17,22,66, + 19,1,0,4,15,0,126,63,128,254,127,128,30,227,128,30, + 195,128,31,129,0,31,128,0,31,0,0,31,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,63, + 128,0,255,224,0,15,22,44,19,2,0,15,192,63,248,120, + 120,112,56,240,16,240,0,248,0,252,0,127,0,63,192,31, + 240,7,248,1,252,0,126,0,62,128,30,128,30,192,30,224, + 60,240,120,255,240,31,192,16,30,60,17,0,0,3,0,7, + 0,15,0,15,0,15,0,15,0,15,0,15,0,63,255,255, + 255,15,4,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,1,7,135,7,254,3,240,24,22,66,25,1,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,23,22,66,24,0,0,255,192,254,62,0,60,30,0,56, + 30,0,48,15,0,112,15,0,112,7,0,96,7,128,224,7, + 128,192,3,193,192,3,193,192,1,193,128,1,227,128,1,227, + 0,0,243,0,0,247,0,0,118,0,0,126,0,0,126,0, + 0,60,0,0,60,0,0,16,0,33,22,110,34,0,0,255, + 192,96,63,128,62,0,224,15,0,30,0,224,14,0,30,0, + 240,14,0,14,1,240,12,0,15,1,240,12,0,15,1,248, + 28,0,7,3,248,28,0,7,3,56,24,0,7,131,60,24, + 0,3,135,28,56,0,3,134,30,48,0,3,198,30,48,0, + 1,206,14,112,0,1,204,15,96,0,1,252,15,96,0,1, + 252,7,96,0,0,248,7,224,0,0,248,7,192,0,0,240, + 3,192,0,0,112,3,192,0,0,96,3,0,0,24,22,66, + 24,0,0,127,227,254,127,227,254,31,128,248,15,128,224,7, + 128,192,3,193,192,1,227,128,0,247,0,0,254,0,0,124, + 0,0,60,0,0,62,0,0,127,0,0,239,0,1,199,128, + 3,131,192,3,1,224,7,0,240,14,0,248,62,0,252,255, + 131,255,255,131,255,24,33,99,24,255,245,127,224,255,31,0, + 62,15,0,28,15,0,24,7,128,56,7,128,56,3,128,48, + 3,192,112,3,192,96,1,224,224,1,224,224,0,224,192,0, + 241,192,0,241,192,0,121,128,0,123,128,0,59,0,0,63, + 0,0,63,0,0,30,0,0,30,0,0,12,0,0,12,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,112,0,0, + 224,0,63,192,0,127,128,0,255,0,0,124,0,0,17,22, + 66,21,2,0,127,255,128,127,255,128,96,15,0,96,15,0, + 64,30,0,64,60,0,0,60,0,0,120,0,0,240,0,0, + 240,0,1,224,0,3,192,0,3,192,0,7,128,0,15,0, + 0,14,0,0,30,0,128,60,0,128,120,0,128,120,1,128, + 255,255,128,255,255,128,13,45,90,16,2,249,0,8,0,56, + 0,112,1,224,1,192,3,128,3,128,7,128,7,128,7,128, + 7,128,7,128,7,192,3,192,3,192,3,192,3,192,3,192, + 3,128,7,128,7,0,30,0,126,0,255,0,7,128,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,7,192,7,128, + 7,128,7,128,7,128,7,128,7,128,3,128,3,192,1,192, + 0,224,0,120,0,24,4,49,49,11,4,246,112,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,224,13,45,90, + 16,1,249,192,0,240,0,56,0,28,0,30,0,14,0,15, + 0,15,0,15,0,15,0,15,0,15,0,31,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,15,0,7,240,3, + 248,3,192,7,0,15,0,14,0,30,0,30,0,30,0,30, + 0,30,0,31,0,15,0,15,0,15,0,15,0,15,0,14, + 0,30,0,28,0,56,0,112,0,224,0,128,0,21,8,24, + 23,1,11,7,128,8,15,224,24,31,240,16,63,252,48,49, + 255,224,96,127,192,64,31,128,192,15,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,11, + 0,0,6,35,35,13,3,243,56,124,252,252,252,248,112,0, + 16,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 120,120,120,120,120,124,124,124,124,120,96,18,30,90,23,2, + 255,0,96,0,0,96,0,0,96,0,0,96,0,0,255,0, + 3,255,128,15,255,192,30,99,128,60,97,128,56,97,0,120, + 96,0,112,96,0,240,96,0,240,96,0,240,96,0,240,96, + 0,240,96,0,240,96,0,248,96,0,120,96,0,124,96,192, + 62,97,128,63,231,128,31,255,0,15,252,0,3,248,0,0, + 96,0,0,96,0,0,96,0,0,96,0,19,29,87,23,2, + 0,0,127,0,1,255,224,3,131,224,7,1,192,6,0,192, + 14,0,192,14,0,192,30,0,64,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,255,248,0,255,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 28,0,0,28,0,32,28,0,32,24,0,96,56,0,224,63, + 255,224,127,255,224,192,255,224,15,15,30,23,4,7,128,2, + 192,6,103,204,63,248,56,56,112,28,96,12,96,12,96,12, + 96,12,48,24,56,56,127,252,231,206,192,6,25,28,112,23, + 254,0,126,0,255,128,254,0,63,128,31,0,30,0,15,128, + 60,0,7,192,120,0,3,192,112,0,3,224,240,0,1,224, + 224,0,0,241,224,0,0,241,192,0,0,123,192,0,0,127, + 128,0,0,63,0,0,0,63,0,0,0,30,0,0,0,30, + 0,0,15,255,252,0,15,255,252,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,127,128,0,1,255, + 224,0,4,49,49,11,4,246,112,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,224,0,0, + 0,0,0,112,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,224,19,34,102,24,2,0,1, + 248,0,7,254,0,30,31,0,60,7,0,60,6,0,60,0, + 0,62,0,0,63,0,0,31,128,0,31,224,0,31,248,0, + 63,252,0,121,255,0,240,127,128,240,63,192,240,15,192,240, + 7,224,248,3,224,124,1,224,126,1,224,63,129,192,31,225, + 192,7,251,128,3,255,0,0,255,0,0,63,128,0,15,128, + 16,7,128,16,7,128,24,7,128,28,7,0,30,15,0,31, + 254,0,3,240,0,15,5,10,19,2,27,112,14,240,30,240, + 30,240,30,224,28,30,30,120,34,2,0,0,31,224,0,0, + 255,252,0,1,224,30,0,7,128,7,128,14,0,1,192,28, + 3,240,224,24,15,252,96,48,60,60,48,112,112,8,56,96, + 224,0,24,97,224,0,24,193,224,0,12,195,192,0,12,195, + 192,0,12,195,192,0,12,195,192,0,12,195,192,0,12,195, + 192,0,12,195,224,0,12,97,224,0,24,97,240,8,24,112, + 248,12,56,48,124,48,48,24,63,224,96,28,15,128,224,14, + 0,1,192,7,128,7,128,1,224,30,0,0,255,252,0,0, + 31,224,0,11,15,30,12,1,14,15,0,31,0,51,128,97, + 128,97,128,3,128,29,128,97,128,193,128,193,128,239,128,253, + 224,121,128,255,192,255,192,18,21,63,23,2,0,0,128,64, + 1,128,192,3,1,128,7,3,0,14,7,0,14,14,0,28, + 30,0,60,60,0,120,60,0,240,120,0,240,120,0,248,120, + 0,120,60,0,60,60,0,28,30,0,14,14,0,14,7,0, + 7,3,0,3,1,128,1,128,192,0,128,64,20,10,30,23, + 1,4,127,255,240,255,255,240,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,96, + 14,2,4,16,1,11,127,252,255,248,15,17,34,17,1,17, + 7,192,31,240,56,56,96,12,79,132,196,70,132,66,132,194, + 135,130,133,130,132,130,196,198,68,100,106,60,56,56,31,240, + 7,192,16,2,4,24,4,28,127,255,255,254,11,11,22,17, + 3,18,15,0,63,192,113,224,96,224,224,224,224,224,224,224, + 224,192,241,128,127,0,62,0,17,22,66,20,1,3,0,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,0,0,0,0,0,0,0,0,0,127,255,128,255,255,128, + 13,17,34,17,2,15,7,192,31,240,112,248,96,120,224,120, + 0,120,0,112,0,224,1,224,3,192,7,128,15,0,30,0, + 60,8,120,24,255,248,255,248,14,18,36,16,1,14,15,128, + 63,224,113,240,224,240,192,240,0,240,1,224,7,128,15,224, + 1,240,0,120,0,60,0,60,0,60,128,120,224,248,63,224, + 15,128,10,10,20,15,5,25,7,128,7,192,15,0,15,0, + 30,0,60,0,56,0,112,0,96,0,192,0,25,33,132,26, + 1,245,6,0,24,0,254,0,248,0,126,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,31,0, + 248,0,31,1,248,0,31,131,248,0,31,255,121,0,27,254, + 127,128,25,252,126,0,24,240,56,0,24,0,0,0,24,0, + 0,0,24,0,0,0,28,0,0,0,28,0,0,0,28,0, + 0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0, + 0,0,24,0,0,0,23,36,108,26,1,250,1,255,254,15, + 255,254,31,7,252,60,7,112,120,7,112,120,7,112,240,7, + 112,240,7,112,240,7,112,240,7,112,240,7,112,248,7,112, + 120,7,112,124,7,112,62,7,112,31,135,112,15,255,112,1, + 255,112,0,7,112,0,7,112,0,7,112,0,7,112,0,7, + 112,0,7,112,0,7,112,0,7,112,0,7,112,0,7,112, + 0,7,112,0,7,112,0,7,112,0,7,112,0,7,112,0, + 7,112,0,31,248,0,63,254,4,5,5,7,2,14,112,240, + 240,240,224,8,10,10,11,2,246,24,56,48,62,127,15,15, + 30,120,224,13,17,34,16,2,15,3,128,31,128,255,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,15,192,127,248,12,15,30,14,1, + 14,15,128,63,192,49,224,96,96,192,112,192,48,192,48,192, + 48,224,48,224,96,120,192,63,128,31,0,255,240,255,240,18, + 21,63,23,3,0,64,64,0,224,96,0,96,48,0,48,24, + 0,56,28,0,28,14,0,14,15,0,15,7,128,7,135,128, + 7,195,192,3,195,192,7,195,192,7,135,128,15,7,128,30, + 15,0,28,14,0,56,28,0,48,56,0,112,48,0,96,96, + 0,192,64,0,24,29,87,28,2,0,4,0,4,60,0,14, + 204,0,24,12,0,56,12,0,48,12,0,112,12,0,224,12, + 0,192,12,1,192,12,3,128,12,3,0,12,7,0,12,6, + 0,127,142,0,0,28,0,0,24,4,0,56,28,0,112,28, + 0,96,44,0,224,108,1,192,76,1,192,140,3,129,12,3, + 3,12,7,3,255,14,7,254,12,0,12,28,0,12,56,0, + 127,24,29,87,28,2,0,4,0,6,60,0,14,204,0,28, + 12,0,24,12,0,56,12,0,112,12,0,112,12,0,224,12, + 0,192,12,1,192,12,3,128,12,3,0,12,7,0,127,142, + 0,0,14,0,0,28,60,0,24,255,0,57,199,0,115,131, + 0,99,3,0,224,2,1,192,4,1,128,8,3,128,16,7, + 0,32,7,0,65,14,0,129,12,1,255,28,1,255,25,29, + 116,28,1,0,15,128,3,0,31,192,7,0,49,192,14,0, + 112,192,12,0,0,192,28,0,1,128,24,0,15,0,56,0, + 1,192,112,0,0,192,96,0,0,192,224,0,0,193,192,0, + 0,193,128,0,193,195,128,0,127,135,0,0,30,7,0,0, + 0,14,2,0,0,12,14,0,0,28,14,0,0,56,22,0, + 0,48,38,0,0,112,102,0,0,224,198,0,0,224,134,0, + 1,193,134,128,3,131,255,0,3,128,6,0,7,0,6,0, + 6,0,6,0,14,0,63,128,17,35,105,21,2,243,0,224, + 0,1,240,0,3,240,0,3,240,0,3,224,0,1,192,0, + 0,0,0,0,0,0,0,0,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,7,0,0,15,0,0,30,0,0,60,0,0, + 60,0,0,120,0,0,120,0,0,240,0,0,240,3,128,240, + 7,128,240,7,128,240,7,128,248,15,0,120,15,0,126,30, + 0,63,248,0,15,224,0,28,41,164,29,0,0,0,128,0, + 0,1,192,0,0,3,240,0,0,1,248,0,0,0,124,0, + 0,0,31,0,0,0,7,128,0,0,1,192,0,0,0,128, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,7,0, + 0,0,15,0,0,0,15,0,0,0,31,128,0,0,31,128, + 0,0,27,128,0,0,59,192,0,0,57,192,0,0,49,224, + 0,0,113,224,0,0,112,224,0,0,96,240,0,0,224,240, + 0,0,224,112,0,0,192,120,0,1,192,120,0,1,192,56, + 0,1,255,252,0,3,255,252,0,3,128,30,0,3,0,30, + 0,7,0,30,0,7,0,15,0,6,0,15,0,14,0,15, + 0,14,0,7,128,12,0,7,128,62,0,7,192,255,192,63, + 240,28,41,164,29,0,0,0,0,32,0,0,0,56,0,0, + 0,252,0,0,1,248,0,0,3,224,0,0,15,128,0,0, + 30,0,0,0,56,0,0,0,32,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,7,0,0,0,15,0,0,0, + 15,0,0,0,31,128,0,0,31,128,0,0,27,128,0,0, + 59,192,0,0,57,192,0,0,49,224,0,0,113,224,0,0, + 112,224,0,0,96,240,0,0,224,240,0,0,224,112,0,0, + 192,120,0,1,192,120,0,1,192,56,0,1,255,252,0,3, + 255,252,0,3,128,30,0,3,0,30,0,7,0,30,0,7, + 0,15,0,6,0,15,0,14,0,15,0,14,0,7,128,12, + 0,7,128,62,0,7,192,255,192,63,240,28,41,164,29,0, + 0,0,6,0,0,0,15,0,0,0,31,128,0,0,63,192, + 0,0,121,224,0,0,240,240,0,1,192,56,0,1,128,24, + 0,1,0,16,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,28,39,156,29,0,0,0,16,8,0,0, + 124,12,0,0,254,28,0,1,255,248,0,1,135,240,0,3, + 3,224,0,2,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,7,0,0,0,15,0,0,0,15,0,0,0, + 31,128,0,0,31,128,0,0,27,128,0,0,59,192,0,0, + 57,192,0,0,49,224,0,0,113,224,0,0,112,224,0,0, + 96,240,0,0,224,240,0,0,224,112,0,0,192,120,0,1, + 192,120,0,1,192,56,0,1,255,252,0,3,255,252,0,3, + 128,30,0,3,0,30,0,7,0,30,0,7,0,15,0,6, + 0,15,0,14,0,15,0,14,0,7,128,12,0,7,128,62, + 0,7,192,255,192,63,240,28,38,152,29,0,0,0,128,32, + 0,0,224,56,0,1,224,120,0,1,224,120,0,1,224,120, + 0,0,128,32,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,28,42,168,29,0,0,0,2,0,0,0, + 15,128,0,0,31,192,0,0,24,192,0,0,48,192,0,0, + 48,192,0,0,48,192,0,0,63,128,0,0,31,0,0,0, + 8,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 7,0,0,0,15,0,0,0,15,0,0,0,31,128,0,0, + 31,128,0,0,27,128,0,0,59,192,0,0,57,192,0,0, + 49,224,0,0,113,224,0,0,112,224,0,0,96,240,0,0, + 224,240,0,0,224,112,0,0,192,120,0,1,192,120,0,1, + 192,56,0,1,255,252,0,3,255,252,0,3,128,30,0,3, + 0,30,0,7,0,30,0,7,0,15,0,6,0,15,0,14, + 0,15,0,14,0,7,128,12,0,7,128,62,0,7,192,255, + 192,63,240,36,30,150,37,0,0,0,127,255,255,192,0,31, + 255,255,224,0,7,252,0,192,0,7,60,0,192,0,7,60, + 0,192,0,14,60,0,192,0,14,60,0,0,0,30,60,0, + 0,0,28,60,0,0,0,28,60,0,0,0,60,60,0,0, + 0,56,60,0,0,0,120,60,0,0,0,127,255,255,0,0, + 127,255,255,0,0,240,60,6,0,0,224,60,0,0,1,224, + 60,0,0,1,192,60,0,0,1,192,60,0,0,3,128,60, + 0,0,3,128,60,0,0,7,128,60,0,0,7,0,60,0, + 0,7,0,60,0,16,14,0,60,0,48,14,0,60,0,48, + 30,0,62,0,112,62,0,127,255,224,255,193,255,255,224,22, + 40,120,26,2,246,0,31,224,0,255,252,1,192,252,7,128, + 56,14,0,16,14,0,0,28,0,0,56,0,0,56,0,0, + 120,0,0,112,0,0,112,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,248,0,0,120,0,0,124,0,0,60,0,0,62,0,8, + 31,0,60,15,128,240,15,255,224,3,255,128,0,254,0,0, + 24,0,0,16,0,0,28,0,0,62,0,0,63,0,0,15, + 0,0,15,0,0,30,0,0,120,0,1,192,0,21,41,123, + 24,1,0,4,0,0,14,0,0,31,0,0,15,192,0,3, + 224,0,0,240,0,0,60,0,0,14,0,0,4,0,0,0, + 0,0,0,0,255,255,224,127,255,240,30,0,96,30,0,96, + 30,0,96,30,0,96,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,128,31,255, + 128,30,3,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,8,30, + 0,24,30,0,24,31,0,56,127,255,240,255,255,240,21,41, + 123,24,1,0,0,1,0,0,3,192,0,7,224,0,15,192, + 0,63,0,0,124,0,0,240,0,1,192,0,1,0,0,0, + 0,0,0,0,0,255,255,224,127,255,240,30,0,96,30,0, + 96,30,0,96,30,0,96,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,31,255,128,31, + 255,128,30,3,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,8, + 30,0,24,30,0,24,31,0,56,127,255,240,255,255,240,21, + 41,123,24,1,0,0,48,0,0,120,0,0,252,0,1,254, + 0,3,207,0,7,7,0,14,1,128,28,0,192,16,0,128, + 0,0,0,0,0,0,255,255,224,127,255,240,30,0,96,30, + 0,96,30,0,96,30,0,96,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,31,255,128, + 31,255,128,30,3,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 8,30,0,24,30,0,24,31,0,56,127,255,240,255,255,240, + 21,38,114,24,1,0,4,1,0,15,3,192,15,3,192,15, + 3,192,14,3,128,4,1,0,0,0,0,0,0,0,255,255, + 224,127,255,240,30,0,96,30,0,96,30,0,96,30,0,96, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,31,255,128,31,255,128,30,3,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,8,30,0,24,30,0,24,31, + 0,56,127,255,240,255,255,240,13,41,82,14,255,0,32,0, + 112,0,252,0,126,0,31,0,7,128,1,224,0,112,0,32, + 0,0,0,0,31,248,15,240,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,240,31,248, + 13,41,82,14,2,0,0,64,0,112,1,248,3,240,7,192, + 31,0,60,0,112,0,64,0,0,0,0,0,255,192,127,128, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,127,128,255,192,15,41,82,14,255,0,1,128, + 3,192,7,224,15,240,30,120,56,60,112,12,224,6,64,4, + 0,0,0,0,31,248,15,240,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,240,31,248, + 14,38,76,14,0,0,64,16,112,28,240,60,240,60,224,56, + 64,16,0,0,0,0,63,240,31,224,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,31,224, + 63,240,25,30,120,28,1,0,7,254,0,0,255,255,192,0, + 127,3,240,0,15,0,248,0,15,0,124,0,15,0,62,0, + 15,0,30,0,15,0,31,0,15,0,15,0,15,0,15,0, + 15,0,15,128,15,0,7,128,15,0,7,128,15,0,7,128, + 255,254,7,128,255,252,7,128,15,0,7,128,15,0,7,128, + 15,0,7,128,15,0,7,0,15,0,15,0,15,0,15,0, + 15,0,30,0,15,0,30,0,15,0,60,0,15,0,124,0, + 15,0,248,0,15,3,224,0,31,255,192,0,127,254,0,0, + 27,39,156,31,2,0,0,32,16,0,0,124,12,0,0,254, + 24,0,1,255,240,0,3,15,240,0,3,3,224,0,2,1, + 0,0,0,0,0,0,0,0,0,0,252,0,63,224,124,0, + 15,128,30,0,7,0,31,0,7,0,31,0,7,0,31,128, + 7,0,31,192,7,0,29,192,7,0,28,224,7,0,28,240, + 7,0,28,120,7,0,28,56,7,0,28,60,7,0,28,30, + 7,0,28,14,7,0,28,15,7,0,28,7,135,0,28,7, + 135,0,28,3,199,0,28,1,231,0,28,1,231,0,28,0, + 247,0,28,0,127,0,28,0,127,0,28,0,63,0,28,0, + 31,0,28,0,31,0,28,0,15,0,62,0,7,0,255,128, + 3,0,25,41,164,29,2,0,2,0,0,0,3,128,0,0, + 7,192,0,0,7,224,0,0,1,248,0,0,0,124,0,0, + 0,30,0,0,0,7,128,0,0,1,0,0,0,0,0,0, + 0,0,0,0,0,63,0,0,0,255,224,0,3,193,240,0, + 7,0,248,0,14,0,124,0,28,0,62,0,60,0,30,0, + 56,0,31,0,120,0,15,0,120,0,15,0,112,0,15,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 248,0,7,0,120,0,15,0,120,0,15,0,124,0,14,0, + 60,0,28,0,62,0,28,0,31,0,56,0,15,128,112,0, + 7,193,224,0,3,255,128,0,0,254,0,0,25,41,164,29, + 2,0,0,0,128,0,0,0,224,0,0,1,240,0,0,7, + 240,0,0,15,192,0,0,30,0,0,0,56,0,0,0,224, + 0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,63, + 0,0,0,255,224,0,3,193,240,0,7,0,248,0,14,0, + 124,0,28,0,62,0,60,0,30,0,56,0,31,0,120,0, + 15,0,120,0,15,0,112,0,15,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,248,0,7,0,120,0, + 15,0,120,0,15,0,124,0,14,0,60,0,28,0,62,0, + 28,0,31,0,56,0,15,128,112,0,7,193,224,0,3,255, + 128,0,0,254,0,0,25,41,164,29,2,0,0,28,0,0, + 0,62,0,0,0,126,0,0,0,127,0,0,0,227,128,0, + 1,193,192,0,3,128,224,0,6,0,112,0,4,0,32,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,255,224,0, + 3,193,240,0,7,0,248,0,14,0,124,0,28,0,62,0, + 60,0,30,0,56,0,31,0,120,0,15,0,120,0,15,0, + 112,0,15,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,248,0,7,0,120,0,15,0,120,0,15,0, + 124,0,14,0,60,0,28,0,62,0,28,0,31,0,56,0, + 15,128,112,0,7,193,224,0,3,255,128,0,0,254,0,0, + 25,39,156,29,2,0,0,64,32,0,1,248,48,0,3,252, + 48,0,3,255,224,0,6,31,192,0,4,15,128,0,12,2, + 0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,255, + 224,0,3,193,240,0,7,0,248,0,14,0,124,0,28,0, + 62,0,60,0,30,0,56,0,31,0,120,0,15,0,120,0, + 15,0,112,0,15,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,248,0,7,0,120,0,15,0,120,0, + 15,0,124,0,14,0,60,0,28,0,62,0,28,0,31,0, + 56,0,15,128,112,0,7,193,224,0,3,255,128,0,0,254, + 0,0,25,38,152,29,2,0,1,0,64,0,3,128,224,0, + 3,128,224,0,7,129,224,0,3,128,224,0,2,0,128,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,255,224,0, + 3,193,240,0,7,0,248,0,14,0,124,0,28,0,62,0, + 60,0,30,0,56,0,31,0,120,0,15,0,120,0,15,0, + 112,0,15,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,248,0,7,0,120,0,15,0,120,0,15,0, + 124,0,14,0,60,0,28,0,62,0,28,0,31,0,56,0, + 15,128,112,0,7,193,224,0,3,255,128,0,0,254,0,0, + 15,14,28,20,2,6,96,6,240,14,120,28,60,56,30,112, + 15,224,7,192,7,192,15,224,30,112,60,56,120,28,240,14, + 96,6,25,31,124,29,2,255,0,63,7,128,1,255,207,0, + 3,193,254,0,7,0,126,0,14,0,60,0,28,0,126,0, + 56,0,126,0,56,0,255,0,120,1,239,0,120,1,239,0, + 112,3,207,128,240,7,135,128,240,7,7,128,240,15,7,128, + 240,30,7,128,240,60,7,128,240,60,7,128,240,120,7,128, + 240,240,7,128,240,224,7,0,121,224,7,0,123,192,15,0, + 123,128,14,0,63,128,12,0,63,0,28,0,30,0,56,0, + 31,0,112,0,63,193,224,0,121,255,128,0,240,126,0,0, + 192,0,0,0,27,41,164,31,2,0,0,128,0,0,1,192, + 0,0,3,240,0,0,1,248,0,0,0,124,0,0,0,30, + 0,0,0,7,128,0,0,1,192,0,0,0,128,0,0,0, + 0,0,0,0,0,0,255,192,127,224,127,128,63,192,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 30,0,15,0,30,0,15,0,30,0,7,128,60,0,7,192, + 120,0,3,224,240,0,1,255,224,0,0,63,128,0,27,41, + 164,31,2,0,0,0,32,0,0,0,120,0,0,0,252,0, + 0,1,248,0,0,3,224,0,0,15,128,0,0,30,0,0, + 0,56,0,0,0,32,0,0,0,0,0,0,0,0,0,0, + 255,192,127,224,127,128,63,192,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,30,0,15,0,30,0, + 15,0,30,0,7,128,60,0,7,192,120,0,3,224,240,0, + 1,255,224,0,0,63,128,0,27,41,164,31,2,0,0,6, + 0,0,0,15,0,0,0,31,128,0,0,63,192,0,0,121, + 224,0,0,224,240,0,1,192,48,0,3,128,24,0,1,0, + 16,0,0,0,0,0,0,0,0,0,255,192,127,224,127,128, + 63,192,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,30,0,15,0,30,0,15,0,30,0,7,128, + 60,0,7,192,120,0,3,224,240,0,1,255,224,0,0,63, + 128,0,27,38,152,31,2,0,0,128,32,0,0,224,56,0, + 1,224,120,0,1,224,120,0,1,192,112,0,0,128,32,0, + 0,0,0,0,0,0,0,0,255,192,127,224,127,128,63,192, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,30,0,15,0,30,0,15,0,30,0,7,128,60,0, + 7,192,120,0,3,224,240,0,1,255,224,0,0,63,128,0, + 28,41,164,29,0,0,0,0,32,0,0,0,56,0,0,0, + 252,0,0,1,248,0,0,3,224,0,0,7,128,0,0,30, + 0,0,0,56,0,0,0,32,0,0,0,0,0,0,0,0, + 0,0,252,0,63,240,254,0,63,240,31,0,15,128,15,0, + 7,0,15,128,14,0,7,192,14,0,3,192,28,0,3,224, + 60,0,1,224,56,0,0,240,120,0,0,248,112,0,0,120, + 224,0,0,125,224,0,0,61,192,0,0,63,192,0,0,31, + 128,0,0,31,128,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,63,192,0,0,255,240,0,21,30,90,25,2,0, + 255,224,0,127,128,0,30,0,0,30,0,0,30,0,0,30, + 0,0,31,254,0,31,255,128,30,15,192,30,3,224,30,1, + 240,30,0,248,30,0,120,30,0,120,30,0,120,30,0,120, + 30,0,120,30,0,120,30,0,240,30,0,240,30,1,224,31, + 7,192,30,255,128,30,124,0,30,0,0,30,0,0,30,0, + 0,30,0,0,127,128,0,255,224,0,25,36,144,27,1,0, + 0,31,128,0,0,127,224,0,1,195,240,0,3,128,248,0, + 7,0,120,0,7,0,124,0,14,0,60,0,14,0,60,0, + 14,0,60,0,30,0,60,0,30,0,60,0,30,0,120,0, + 30,1,248,0,30,7,240,0,30,15,192,0,30,31,0,0, + 30,60,0,0,30,60,0,0,30,60,0,0,30,62,0,0, + 30,63,0,0,30,31,192,0,30,15,240,0,30,3,252,0, + 30,0,254,0,30,0,127,0,30,0,31,128,30,0,15,128, + 30,0,7,128,30,32,7,128,30,48,7,128,30,48,7,0, + 30,56,15,0,30,60,30,0,62,63,252,0,254,7,224,0, + 20,35,105,22,2,0,30,0,0,62,0,0,31,0,0,15, + 0,0,7,128,0,3,192,0,1,192,0,0,224,0,0,96, + 0,0,48,0,0,0,0,0,0,0,0,0,0,1,248,0, + 15,254,0,28,30,0,120,15,0,112,15,0,240,15,0,128, + 15,0,0,15,0,0,15,0,0,255,0,7,255,0,31,143, + 0,62,15,0,120,15,0,248,15,0,240,15,0,240,15,0, + 240,31,0,240,63,0,120,239,32,127,143,240,30,7,128,20, + 35,105,22,2,0,0,15,0,0,31,0,0,30,0,0,60, + 0,0,56,0,0,112,0,0,112,0,0,224,0,1,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,1,248,0,15, + 254,0,28,30,0,120,15,0,112,15,0,240,15,0,128,15, + 0,0,15,0,0,15,0,0,255,0,7,255,0,31,143,0, + 62,15,0,120,15,0,248,15,0,240,15,0,240,15,0,240, + 31,0,240,63,0,120,239,32,127,143,240,30,7,128,20,34, + 102,22,2,0,0,224,0,1,240,0,3,240,0,7,56,0, + 6,28,0,12,14,0,24,6,0,48,3,0,32,1,128,0, + 0,0,0,0,0,0,0,0,1,248,0,15,254,0,28,30, + 0,120,15,0,112,15,0,240,15,0,128,15,0,0,15,0, + 0,15,0,0,255,0,7,255,0,31,143,0,62,15,0,120, + 15,0,248,15,0,240,15,0,240,15,0,240,31,0,240,63, + 0,120,239,32,127,143,240,30,7,128,20,32,96,22,2,0, + 7,0,128,15,193,128,31,193,0,63,243,0,48,254,0,96, + 56,0,0,0,0,0,0,0,0,0,0,0,0,0,1,248, + 0,15,254,0,28,30,0,120,15,0,112,15,0,240,15,0, + 128,15,0,0,15,0,0,15,0,0,255,0,7,255,0,31, + 143,0,62,15,0,120,15,0,248,15,0,240,15,0,240,15, + 0,240,31,0,240,63,0,120,239,32,127,143,240,30,7,128, + 20,32,96,22,2,0,28,7,0,28,7,0,60,15,0,60, + 15,0,24,6,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,248,0,15,254,0,28,30,0,120,15,0, + 112,15,0,240,15,0,128,15,0,0,15,0,0,15,0,0, + 255,0,7,255,0,31,143,0,62,15,0,120,15,0,248,15, + 0,240,15,0,240,15,0,240,31,0,240,63,0,120,239,32, + 127,143,240,30,7,128,20,34,102,22,2,0,0,240,0,1, + 248,0,3,24,0,3,24,0,6,24,0,6,24,0,7,56, + 0,3,240,0,1,192,0,0,0,0,0,0,0,0,0,0, + 1,248,0,15,254,0,28,30,0,120,15,0,112,15,0,240, + 15,0,128,15,0,0,15,0,0,15,0,0,255,0,7,255, + 0,31,143,0,62,15,0,120,15,0,248,15,0,240,15,0, + 240,15,0,240,31,0,240,63,0,120,239,32,127,143,240,30, + 7,128,29,22,88,33,2,0,1,248,31,128,7,252,127,192, + 28,62,225,224,56,31,192,240,112,15,128,112,240,15,128,120, + 240,15,0,120,192,15,0,120,0,127,255,248,3,255,255,240, + 15,143,0,0,30,15,0,0,60,15,0,0,120,15,0,0, + 240,15,0,0,240,15,128,0,240,31,128,24,240,63,192,48, + 248,243,224,240,127,227,255,192,127,128,255,128,30,0,126,0, + 18,32,96,21,2,246,0,127,0,1,255,192,7,7,192,14, + 1,128,28,0,128,56,0,0,120,0,0,112,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,248,0,0,120,1,0,124,3,128,62,7,0,31, + 254,0,31,248,0,7,240,0,0,192,0,0,128,0,0,224, + 0,0,240,0,1,248,0,0,120,0,0,120,0,0,240,0, + 3,192,0,14,0,0,18,35,105,22,2,0,14,0,0,31, + 0,0,15,128,0,7,128,0,3,192,0,1,192,0,0,224, + 0,0,112,0,0,48,0,0,24,0,0,0,0,0,0,0, + 0,0,0,0,248,0,7,254,0,14,15,0,28,7,128,56, + 7,128,56,3,192,112,3,192,112,3,192,255,255,192,255,255, + 128,240,0,0,240,0,0,240,0,0,240,0,0,248,0,0, + 120,0,0,120,0,0,124,0,192,62,1,128,31,7,0,15, + 254,0,3,248,0,18,35,105,22,2,0,0,7,0,0,15, + 128,0,15,0,0,30,0,0,60,0,0,56,0,0,112,0, + 0,96,0,0,192,0,0,128,0,0,0,0,0,0,0,0, + 0,0,0,248,0,7,254,0,14,15,0,28,7,128,56,7, + 128,56,3,192,112,3,192,112,3,192,255,255,192,255,255,128, + 240,0,0,240,0,0,240,0,0,240,0,0,248,0,0,120, + 0,0,120,0,0,124,0,192,62,1,128,31,7,0,15,254, + 0,3,248,0,18,34,102,22,2,0,0,240,0,0,240,0, + 1,248,0,3,156,0,7,14,0,14,6,0,12,3,0,24, + 1,128,16,0,128,0,0,0,0,0,0,0,0,0,0,248, + 0,7,254,0,14,15,0,28,7,128,56,7,128,56,3,192, + 112,3,192,112,3,192,255,255,192,255,255,128,240,0,0,240, + 0,0,240,0,0,240,0,0,248,0,0,120,0,0,120,0, + 0,124,0,192,62,1,128,31,7,0,15,254,0,3,248,0, + 18,32,96,22,2,0,14,3,128,30,7,128,30,7,128,30, + 7,128,28,7,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,248,0,7,254,0,14,15,0,28,7,128, + 56,7,128,56,3,192,112,3,192,112,3,192,255,255,192,255, + 255,128,240,0,0,240,0,0,240,0,0,240,0,0,248,0, + 0,120,0,0,120,0,0,124,0,192,62,1,128,31,7,0, + 15,254,0,3,248,0,12,35,70,13,0,0,240,0,248,0, + 120,0,60,0,28,0,14,0,7,0,3,0,1,128,0,128, + 0,0,0,0,0,0,1,128,31,128,63,128,15,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,15,192, + 63,240,12,35,70,13,2,0,0,224,1,240,3,224,3,192, + 7,128,7,0,14,0,28,0,24,0,48,0,0,0,0,0, + 0,0,6,0,126,0,254,0,62,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,63,0,255,192,15,34, + 68,13,255,0,3,128,7,192,7,224,14,240,28,112,56,56, + 112,12,96,6,192,2,0,0,0,0,0,0,0,192,15,192, + 31,192,7,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,7,224,31,248,14,32,64,13,0,0,96,24, + 240,60,240,60,224,56,224,56,0,0,0,0,0,0,0,0, + 0,0,1,128,31,128,63,128,15,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,15,192,63,240,20,34, + 102,24,2,0,3,0,0,31,192,128,31,225,224,1,255,192, + 0,126,0,0,252,0,3,254,0,15,143,0,4,7,128,0, + 3,128,0,3,192,0,1,192,1,241,224,7,255,224,14,31, + 224,28,7,240,56,3,240,56,1,240,120,1,240,112,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 0,224,248,1,224,120,1,192,124,1,192,124,3,128,62,7, + 0,31,14,0,15,252,0,3,240,0,23,32,96,26,2,0, + 1,224,32,3,240,48,7,248,96,7,252,192,14,63,128,8, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7, + 192,254,15,224,62,49,224,30,96,240,30,192,240,30,128,240, + 31,0,240,31,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,127,131,248,255,199,254, + 20,35,105,24,2,0,15,0,0,15,0,0,7,128,0,3, + 192,0,1,192,0,0,224,0,0,112,0,0,112,0,0,56, + 0,0,24,0,0,0,0,0,0,0,0,0,0,0,252,0, + 7,255,0,14,15,128,28,7,192,56,3,192,56,3,224,112, + 1,224,112,1,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,0,240,240,0,240,248,0,224,120,1,224,124,1,192, + 60,1,192,62,3,128,31,7,0,15,254,0,3,240,0,20, + 35,105,24,2,0,0,7,128,0,7,192,0,15,128,0,15, + 0,0,30,0,0,60,0,0,56,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,0,0,0,0,0,0,252,0,7, + 255,0,14,15,128,28,7,192,56,3,192,56,3,224,112,1, + 224,112,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,248,0,224,120,1,224,124,1,192,60, + 1,192,62,3,128,31,7,0,15,254,0,3,240,0,20,34, + 102,24,2,0,0,112,0,0,248,0,1,252,0,1,220,0, + 3,142,0,7,7,0,14,3,128,12,1,192,24,0,192,0, + 0,0,0,0,0,0,0,0,0,252,0,7,255,0,14,15, + 128,28,7,192,56,3,192,56,3,224,112,1,224,112,1,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,240, + 0,240,248,0,224,120,1,224,124,1,192,60,1,192,62,3, + 128,31,7,0,15,254,0,3,240,0,20,32,96,24,2,0, + 3,192,64,7,224,96,15,240,192,15,249,128,28,127,0,16, + 30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 0,7,255,0,14,15,128,28,7,192,56,3,192,56,3,224, + 112,1,224,112,1,240,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,248,0,224,120,1,224,124,1, + 192,60,1,192,62,3,128,31,7,0,15,254,0,3,240,0, + 20,32,96,24,2,0,6,1,128,15,3,192,15,3,192,14, + 3,128,14,3,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,0,7,255,0,14,15,128,28,7,192, + 56,3,192,56,3,224,112,1,224,112,1,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,248,0, + 224,120,1,224,124,1,192,60,1,192,62,3,128,31,7,0, + 15,254,0,3,240,0,17,15,45,20,1,6,0,224,0,1, + 224,0,1,224,0,1,192,0,0,0,0,0,0,0,0,0, + 0,127,255,128,255,255,128,0,0,0,0,0,0,0,224,0, + 1,224,0,1,224,0,1,192,0,20,24,72,24,2,255,0, + 0,48,1,248,112,7,254,224,14,15,192,28,7,192,56,3, + 224,56,7,224,112,15,224,112,28,240,240,24,240,240,56,240, + 240,112,240,240,224,240,240,192,240,241,192,240,243,128,224,255, + 0,224,126,1,192,126,1,192,62,3,128,63,7,0,119,254, + 0,225,248,0,128,0,0,24,35,105,25,1,0,3,128,0, + 7,192,0,3,192,0,1,224,0,0,240,0,0,112,0,0, + 56,0,0,24,0,0,12,0,0,4,0,0,0,0,0,0, + 0,0,0,0,6,0,112,254,7,240,126,7,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,1,240,31,2,240,15,12,255, + 15,248,252,3,224,112,24,35,105,25,1,0,0,1,192,0, + 3,224,0,7,192,0,7,128,0,15,0,0,14,0,0,28, + 0,0,56,0,0,48,0,0,96,0,0,0,0,0,0,0, + 0,0,0,6,0,112,254,7,240,126,7,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,1,240,31,2,240,15,12,255,15, + 248,252,3,224,112,24,34,102,25,1,0,0,56,0,0,124, + 0,0,126,0,0,231,0,1,195,0,3,129,128,3,0,192, + 6,0,96,12,0,32,0,0,0,0,0,0,0,0,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,24,32,96,25,1,0,3,0,192,7,129,224,7,129,224, + 7,129,224,7,1,192,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,6,0,112,254,7,240,126,7,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,1,240,31,2,240,15,12, + 255,15,248,252,3,224,112,24,46,138,24,255,245,0,0,240, + 0,0,248,0,1,224,0,3,224,0,3,192,0,7,128,0, + 7,0,0,14,0,0,12,0,0,24,0,0,0,0,0,0, + 0,0,0,0,127,224,255,31,0,62,15,0,28,15,0,24, + 7,128,56,7,128,56,3,128,48,3,192,112,3,192,96,1, + 224,224,1,224,224,0,224,192,0,241,192,0,241,192,0,121, + 128,0,123,128,0,59,0,0,63,0,0,63,0,0,30,0, + 0,30,0,0,12,0,0,12,0,0,28,0,0,24,0,0, + 56,0,0,112,0,0,112,0,0,224,0,63,192,0,127,128, + 0,255,0,0,124,0,0,21,47,141,25,2,245,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,15,0,28,63,192,28,99,224, + 28,193,224,29,129,240,31,0,240,31,0,248,30,0,248,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,120,30,0, + 120,30,0,112,30,0,112,30,0,224,30,0,224,31,129,192, + 31,195,128,31,255,0,30,124,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,63,0,0,255,224,0,24,43,129,24,255,245, + 0,192,48,1,192,112,1,224,120,3,192,240,1,128,96,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,224, + 255,31,0,62,15,0,28,15,0,24,7,128,56,7,128,56, + 3,128,48,3,192,112,3,192,96,1,224,224,1,224,224,0, + 224,192,0,241,192,0,241,192,0,121,128,0,123,128,0,59, + 0,0,63,0,0,63,0,0,30,0,0,30,0,0,12,0, + 0,12,0,0,28,0,0,24,0,0,56,0,0,112,0,0, + 112,0,0,224,0,63,192,0,127,128,0,255,0,0,124,0, + 0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 29 + Calculated Max Values w=20 h=46 x= 3 y=17 dx=23 dy= 0 ascent=38 len=138 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =29 descent= 0 + X Font ascent =29 descent= 0 + Max Font ascent =38 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30n[1252] U8G_SECTION(".progmem.u8g_font_gdr30n") = { + 0,71,68,232,239,29,0,0,0,0,42,57,0,38,248,29, + 0,18,20,60,21,2,17,0,192,0,1,192,0,1,192,0, + 1,192,0,193,193,0,240,195,192,248,207,192,124,223,0,15, + 252,0,3,224,0,3,224,0,15,252,0,60,223,0,248,207, + 128,240,195,128,64,193,128,1,192,0,1,192,0,1,192,0, + 1,128,0,17,17,51,20,1,5,0,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,255,255,128,255,255,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,128,0,7,13,13,11, + 2,249,8,60,254,254,30,30,30,28,28,56,48,96,64,14, + 2,4,16,1,11,127,252,255,248,6,6,6,11,3,255,56, + 124,252,252,248,112,20,46,138,23,1,248,0,0,48,0,0, + 240,0,0,240,0,0,224,0,1,224,0,1,192,0,1,192, + 0,3,192,0,3,128,0,7,128,0,7,128,0,7,0,0, + 15,0,0,15,0,0,14,0,0,30,0,0,28,0,0,28, + 0,0,60,0,0,56,0,0,120,0,0,120,0,0,112,0, + 0,240,0,0,224,0,0,224,0,1,224,0,1,192,0,3, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,14,0,0,30,0,0,30,0,0,28,0,0, + 60,0,0,60,0,0,56,0,0,120,0,0,112,0,0,240, + 0,0,192,0,0,19,29,87,23,2,0,1,248,0,7,252, + 0,14,30,0,28,15,0,24,7,128,56,7,128,56,3,192, + 112,3,192,112,3,192,112,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,192,120,1,192,120,3,192,120,3,128, + 60,3,128,60,3,0,30,7,0,15,14,0,7,252,0,3, + 240,0,17,29,87,23,3,0,0,96,0,1,224,0,15,224, + 0,127,224,0,255,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,3,240,0,63,254,0,127,255,128,17, + 29,87,22,2,0,1,248,0,7,254,0,28,31,0,56,15, + 0,120,15,128,112,7,128,240,7,128,224,7,128,0,7,128, + 0,7,128,0,15,0,0,15,0,0,30,0,0,30,0,0, + 60,0,0,120,0,0,240,0,0,240,0,1,224,0,3,192, + 0,7,128,0,15,0,0,15,0,0,30,0,128,60,0,128, + 120,0,128,240,1,128,255,255,128,255,255,128,18,29,87,22, + 1,0,1,248,0,7,254,0,30,31,0,60,15,0,56,7, + 128,120,7,128,112,7,128,0,7,128,0,7,0,0,15,0, + 0,30,0,0,60,0,0,248,0,3,254,0,0,63,0,0, + 15,128,0,7,128,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,7,128,128,7,128,224,15,0, + 120,62,0,63,252,0,7,224,0,19,29,87,23,1,0,0, + 3,0,0,15,0,0,31,0,0,63,0,0,127,0,0,127, + 0,0,239,0,0,207,0,1,207,0,3,143,0,3,143,0, + 7,15,0,14,15,0,14,15,0,28,15,0,24,15,0,56, + 15,0,112,15,0,112,15,0,255,255,224,255,255,192,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,63,128,1,255,224,18,29,87,23,2,0,0,0,128,0, + 1,128,31,255,0,31,254,0,24,0,0,24,0,0,24,0, + 0,24,0,0,56,0,0,56,0,0,56,0,0,63,240,0, + 63,252,0,120,63,0,32,15,0,0,7,128,0,7,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 128,0,7,128,128,7,128,224,15,0,120,62,0,63,252,0, + 7,240,0,18,29,87,23,3,0,0,7,0,0,63,0,0, + 248,0,1,224,0,3,192,0,15,0,0,14,0,0,30,0, + 0,60,0,0,56,0,0,120,0,0,120,248,0,119,254,0, + 254,31,0,248,15,128,240,7,128,240,7,192,240,3,192,240, + 3,192,240,3,192,240,3,192,248,3,192,120,3,128,120,3, + 128,60,7,128,60,7,0,31,14,0,15,252,0,3,240,0, + 19,27,81,23,2,0,127,255,192,127,255,224,96,1,192,64, + 3,192,192,3,128,0,3,128,0,7,0,0,7,0,0,14, + 0,0,14,0,0,28,0,0,28,0,0,56,0,0,56,0, + 0,56,0,0,112,0,0,112,0,0,224,0,0,224,0,1, + 192,0,1,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,15,0,0,28,0,0,18,29,87,22,2,0,3,248,0, + 15,254,0,28,31,0,56,15,0,48,7,128,112,7,128,112, + 7,128,112,7,128,112,7,0,120,15,0,62,30,0,31,188, + 0,15,240,0,3,252,0,7,254,0,30,63,0,60,15,128, + 120,7,192,112,7,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,128,120,7,128,124,7,0,62,14,0,31,252, + 0,7,224,0,19,30,90,23,2,255,1,248,0,7,254,0, + 14,31,0,28,15,128,56,7,128,120,3,192,112,3,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,248,1, + 224,120,3,224,124,7,224,62,13,224,31,249,224,7,225,192, + 0,3,192,0,3,192,0,7,128,0,7,128,0,15,0,0, + 30,0,0,60,0,0,120,0,0,240,0,3,224,0,31,128, + 0,56,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=40 h=49 x= 4 y=25 dx=41 dy= 0 ascent=39 len=195 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x=-5 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30r[8588] U8G_SECTION(".progmem.u8g_font_gdr30r") = { + 0,71,68,232,239,30,9,231,23,124,32,127,245,39,245,38, + 245,0,0,0,11,0,0,6,36,36,13,3,255,12,60,124, + 124,124,124,124,120,120,120,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,0,0,0,0,56,124,252,252,248, + 112,13,16,32,20,4,19,48,56,240,248,240,248,240,240,240, + 240,240,240,240,112,240,112,240,112,240,112,112,112,112,112,96, + 112,96,112,96,112,96,112,21,27,81,23,2,3,0,48,96, + 0,112,224,0,96,192,0,224,192,0,225,192,0,225,192,0, + 193,128,1,195,128,31,255,248,31,255,248,3,135,0,3,135, + 0,3,7,0,3,6,0,7,14,0,7,14,0,6,14,0, + 255,255,192,255,255,192,12,28,0,12,24,0,28,56,0,28, + 56,0,24,48,0,56,112,0,56,112,0,48,96,0,20,36, + 108,23,1,252,0,96,0,0,96,0,0,96,0,0,96,0, + 3,254,0,15,255,128,62,127,192,120,103,128,112,99,128,240, + 96,0,240,96,0,240,96,0,248,96,0,126,96,0,127,224, + 0,63,240,0,15,254,0,1,255,0,0,127,192,0,111,224, + 0,99,224,0,97,240,0,96,240,0,96,240,64,96,240,96, + 96,240,112,96,224,120,97,224,124,99,192,127,255,128,31,255, + 0,7,248,0,0,96,0,0,96,0,0,96,0,0,96,0, + 31,30,120,34,1,255,7,192,0,96,31,224,1,240,60,240, + 1,192,120,120,3,192,112,120,7,128,240,60,7,0,240,60, + 14,0,240,60,30,0,240,60,60,0,240,60,56,0,240,60, + 120,0,120,56,240,0,120,120,224,0,60,241,192,0,31,227, + 195,224,15,135,143,240,0,7,30,120,0,15,60,60,0,30, + 56,60,0,28,120,30,0,56,120,30,0,120,120,30,0,240, + 120,30,0,224,120,30,1,192,120,30,3,192,60,28,3,128, + 60,60,7,0,30,120,15,0,15,240,12,0,7,192,30,34, + 136,32,2,0,0,63,0,0,0,255,128,0,1,199,192,0, + 3,131,224,0,7,1,224,0,7,1,224,0,15,1,224,0, + 15,1,224,0,15,3,224,0,15,3,192,0,15,135,192,0, + 15,143,128,0,7,191,0,0,7,254,0,0,7,248,0,0, + 7,240,0,0,15,240,63,248,31,240,127,252,62,120,30,48, + 60,124,15,0,124,60,15,0,120,30,7,0,240,31,7,0, + 240,15,135,0,240,7,198,0,240,3,198,0,240,3,236,0, + 240,1,252,0,248,0,252,0,120,0,126,0,60,0,255,0, + 63,3,143,200,15,255,7,240,3,248,3,192,4,16,16,12, + 4,19,48,240,240,240,240,240,240,240,240,240,112,112,96,96, + 96,96,11,45,90,15,3,249,0,32,0,224,1,192,3,128, + 3,128,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 56,0,120,0,120,0,120,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,120,0,120,0,120,0,120,0,56,0,60,0,60,0, + 28,0,30,0,14,0,15,0,7,0,3,128,1,192,0,224, + 0,32,11,45,90,15,1,249,128,0,224,0,112,0,56,0, + 28,0,30,0,14,0,15,0,7,0,7,128,7,128,3,128, + 3,192,3,192,3,192,3,192,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,192,3,192,3,192,3,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,56,0,56,0,112,0,224,0, + 128,0,18,20,60,21,2,17,0,192,0,1,192,0,1,192, + 0,1,192,0,193,193,0,240,195,192,248,207,192,124,223,0, + 15,252,0,3,224,0,3,224,0,15,252,0,60,223,0,248, + 207,128,240,195,128,64,193,128,1,192,0,1,192,0,1,192, + 0,1,128,0,17,17,51,20,1,5,0,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,255,255,128,255,255,128,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,128,0,7,13,13, + 11,2,249,8,60,254,254,30,30,30,28,28,56,48,96,64, + 14,2,4,16,1,11,127,252,255,248,6,6,6,11,3,255, + 56,124,252,252,248,112,20,46,138,23,1,248,0,0,48,0, + 0,240,0,0,240,0,0,224,0,1,224,0,1,192,0,1, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,15,0,0,14,0,0,30,0,0,28,0,0, + 28,0,0,60,0,0,56,0,0,120,0,0,120,0,0,112, + 0,0,240,0,0,224,0,0,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0,7,128,0,7,128,0,7, + 0,0,15,0,0,14,0,0,30,0,0,30,0,0,28,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,112,0,0, + 240,0,0,192,0,0,19,29,87,23,2,0,1,248,0,7, + 252,0,14,30,0,28,15,0,24,7,128,56,7,128,56,3, + 192,112,3,192,112,3,192,112,3,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,192,120,1,192,120,3,192,120,3, + 128,60,3,128,60,3,0,30,7,0,15,14,0,7,252,0, + 3,240,0,17,29,87,23,3,0,0,96,0,1,224,0,15, + 224,0,127,224,0,255,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,3,240,0,63,254,0,127,255,128, + 17,29,87,22,2,0,1,248,0,7,254,0,28,31,0,56, + 15,0,120,15,128,112,7,128,240,7,128,224,7,128,0,7, + 128,0,7,128,0,15,0,0,15,0,0,30,0,0,30,0, + 0,60,0,0,120,0,0,240,0,0,240,0,1,224,0,3, + 192,0,7,128,0,15,0,0,15,0,0,30,0,128,60,0, + 128,120,0,128,240,1,128,255,255,128,255,255,128,18,29,87, + 22,1,0,1,248,0,7,254,0,30,31,0,60,15,0,56, + 7,128,120,7,128,112,7,128,0,7,128,0,7,0,0,15, + 0,0,30,0,0,60,0,0,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,7,128,128,7,128,224,15, + 0,120,62,0,63,252,0,7,224,0,19,29,87,23,1,0, + 0,3,0,0,15,0,0,31,0,0,63,0,0,127,0,0, + 127,0,0,239,0,0,207,0,1,207,0,3,143,0,3,143, + 0,7,15,0,14,15,0,14,15,0,28,15,0,24,15,0, + 56,15,0,112,15,0,112,15,0,255,255,224,255,255,192,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,63,128,1,255,224,18,29,87,23,2,0,0,0,128, + 0,1,128,31,255,0,31,254,0,24,0,0,24,0,0,24, + 0,0,24,0,0,56,0,0,56,0,0,56,0,0,63,240, + 0,63,252,0,120,63,0,32,15,0,0,7,128,0,7,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,128,0,7,128,128,7,128,224,15,0,120,62,0,63,252, + 0,7,240,0,18,29,87,23,3,0,0,7,0,0,63,0, + 0,248,0,1,224,0,3,192,0,15,0,0,14,0,0,30, + 0,0,60,0,0,56,0,0,120,0,0,120,248,0,119,254, + 0,254,31,0,248,15,128,240,7,128,240,7,192,240,3,192, + 240,3,192,240,3,192,240,3,192,248,3,192,120,3,128,120, + 3,128,60,7,128,60,7,0,31,14,0,15,252,0,3,240, + 0,19,27,81,23,2,0,127,255,192,127,255,224,96,1,192, + 64,3,192,192,3,128,0,3,128,0,7,0,0,7,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,56,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,224,0,0,224,0, + 1,192,0,1,192,0,3,192,0,7,128,0,7,128,0,15, + 0,0,15,0,0,28,0,0,18,29,87,22,2,0,3,248, + 0,15,254,0,28,31,0,56,15,0,48,7,128,112,7,128, + 112,7,128,112,7,128,112,7,0,120,15,0,62,30,0,31, + 188,0,15,240,0,3,252,0,7,254,0,30,63,0,60,15, + 128,120,7,192,112,7,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,128,120,7,128,124,7,0,62,14,0,31, + 252,0,7,224,0,19,30,90,23,2,255,1,248,0,7,254, + 0,14,31,0,28,15,128,56,7,128,120,3,192,112,3,192, + 240,3,224,240,1,224,240,1,224,240,1,224,240,1,224,248, + 1,224,120,3,224,124,7,224,62,13,224,31,249,224,7,225, + 192,0,3,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,30,0,0,60,0,0,120,0,0,240,0,3,224,0,31, + 128,0,56,0,0,6,23,23,11,3,255,56,124,252,252,248, + 112,0,0,0,0,0,0,0,0,0,0,0,56,124,252,252, + 248,112,7,29,29,11,2,249,28,62,126,126,124,56,0,0, + 0,0,0,0,0,0,0,0,8,60,254,254,30,30,30,28, + 28,56,48,96,64,19,15,45,21,1,6,0,0,96,0,3, + 192,0,31,192,0,127,0,3,252,0,31,224,0,127,0,0, + 124,0,0,254,0,0,63,192,0,7,240,0,1,254,0,0, + 63,192,0,7,224,0,1,128,19,9,27,21,1,9,127,255, + 224,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,127,255,224,255,255,192,19,15,45,21,1,6,48, + 0,0,252,0,0,127,128,0,15,240,0,3,254,0,0,127, + 128,0,15,224,0,3,192,0,31,192,0,255,0,3,248,0, + 31,192,0,127,0,0,120,0,0,192,0,0,17,36,108,21, + 2,255,3,248,0,15,254,0,60,63,0,120,15,0,120,15, + 128,240,7,128,240,7,128,240,7,128,224,7,128,0,7,128, + 0,15,0,0,15,0,0,30,0,0,30,0,0,60,0,0, + 120,0,0,112,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,3, + 224,0,7,224,0,7,224,0,7,192,0,3,128,0,36,39, + 195,39,1,248,0,0,255,128,0,0,7,255,224,0,0,31, + 1,248,0,0,120,0,62,0,0,224,0,31,0,1,192,0, + 15,0,7,128,0,7,128,7,0,0,3,192,14,0,0,1, + 192,28,0,124,33,224,28,1,255,96,224,56,3,135,224,224, + 56,7,3,224,224,120,14,1,224,240,112,14,1,224,112,112, + 30,1,224,112,240,28,1,224,112,240,60,1,224,112,240,60, + 1,224,112,240,60,1,224,112,240,60,1,224,112,240,60,1, + 224,112,240,60,1,224,96,248,60,1,224,224,248,62,1,224, + 192,120,30,1,224,192,120,31,3,225,128,124,15,5,225,0, + 60,15,141,242,0,62,7,248,252,0,31,1,224,112,0,31, + 0,0,0,0,15,128,0,0,0,7,192,0,1,0,3,240, + 0,3,128,1,248,0,14,0,0,127,0,252,0,0,31,255, + 240,0,0,3,255,0,0,28,30,120,29,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,24,30,90,27,0,0,7,254,0,255,255, + 192,111,7,224,15,1,240,15,0,248,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,112,15,0,240,15,1,224,15, + 7,192,15,255,192,15,255,240,15,1,248,15,0,124,15,0, + 62,15,0,30,15,0,31,15,0,15,15,0,15,15,0,15, + 15,0,15,15,0,14,15,0,30,15,0,60,15,0,248,63, + 255,240,127,255,128,23,30,90,26,1,0,0,31,224,0,255, + 252,1,192,252,7,128,56,14,0,16,14,0,0,28,0,0, + 56,0,0,56,0,0,120,0,0,112,0,0,112,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,30,0,4,31,0,14,15,128,56,7,224,240,1, + 255,192,0,127,0,25,30,120,28,1,0,7,254,0,0,255, + 255,192,0,111,3,240,0,15,0,248,0,15,0,124,0,15, + 0,62,0,15,0,30,0,15,0,31,0,15,0,15,0,15, + 0,15,0,15,0,15,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,0,15,0,15,0,15, + 0,15,0,15,0,30,0,15,0,30,0,15,0,60,0,15, + 0,124,0,15,0,248,0,15,3,224,0,63,255,192,0,127, + 254,0,0,21,30,90,24,1,0,255,255,224,127,255,240,30, + 0,96,30,0,96,30,0,96,30,0,96,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,128,31,255,128,30,3,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,8,30,0,24,30,0,24,31,0,56,127,255,240, + 255,255,240,20,30,90,23,1,0,255,255,240,127,255,240,30, + 0,96,30,0,96,30,0,32,30,0,32,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,0,31,255,0,30,6,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,127,128,0, + 255,224,0,24,30,90,28,2,0,0,31,224,0,255,248,1, + 192,252,7,128,56,15,0,16,30,0,0,28,0,0,56,0, + 0,56,0,0,120,0,0,112,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,7,255,240,0,254,240, + 0,60,240,0,60,248,0,60,120,0,60,120,0,60,60,0, + 60,62,0,60,30,0,60,15,0,60,7,192,248,3,255,224, + 0,127,0,27,30,120,31,2,0,255,192,127,224,127,128,63, + 192,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,31,255,255,0,31,255,255,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,127,0,31,192,255,192,127, + 224,10,30,60,14,2,0,255,192,127,128,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,127, + 128,255,192,17,38,114,15,252,248,7,255,128,0,255,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,56,0,0,56,0,0,56,0,0,112,0,0,112,0,0, + 224,0,112,192,0,255,0,0,124,0,0,26,30,120,28,1, + 0,255,193,255,128,127,128,124,0,30,0,120,0,30,0,240, + 0,30,1,224,0,30,1,192,0,30,3,128,0,30,7,0, + 0,30,14,0,0,30,28,0,0,30,56,0,0,30,120,0, + 0,30,112,0,0,30,224,0,0,31,224,0,0,30,240,0, + 0,30,120,0,0,30,124,0,0,30,62,0,0,30,30,0, + 0,30,15,0,0,30,7,128,0,30,7,192,0,30,3,224, + 0,30,1,240,0,30,0,248,0,30,0,124,0,30,0,126, + 0,127,128,63,192,255,192,31,0,21,30,90,23,1,0,255, + 192,0,127,128,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,8,30,0,24,30,0,24, + 31,0,48,127,255,240,255,255,240,36,30,150,39,1,0,127, + 0,0,15,224,31,128,0,31,128,15,128,0,31,0,15,128, + 0,63,0,15,192,0,63,0,15,192,0,55,0,15,224,0, + 119,0,14,224,0,119,0,14,240,0,231,0,14,240,0,231, + 0,14,120,0,199,0,14,120,1,199,0,14,56,1,199,0, + 14,60,3,135,0,14,28,3,135,0,14,30,7,7,0,14, + 30,7,7,0,14,15,6,7,0,14,15,14,7,0,14,7, + 14,7,0,14,7,156,7,0,14,3,156,7,0,14,3,216, + 7,0,14,3,248,7,0,14,1,248,7,0,14,1,240,7, + 0,14,0,240,7,0,14,0,224,7,0,63,0,224,31,192, + 255,192,96,127,240,27,30,120,31,2,0,252,0,63,224,124, + 0,15,128,30,0,7,0,31,0,7,0,31,0,7,0,31, + 128,7,0,31,192,7,0,29,192,7,0,28,224,7,0,28, + 240,7,0,28,120,7,0,28,56,7,0,28,60,7,0,28, + 30,7,0,28,14,7,0,28,15,7,0,28,7,135,0,28, + 7,135,0,28,3,199,0,28,1,231,0,28,1,231,0,28, + 0,247,0,28,0,127,0,28,0,127,0,28,0,63,0,28, + 0,31,0,28,0,31,0,28,0,15,0,62,0,7,0,255, + 128,3,0,25,30,120,29,2,0,0,63,0,0,0,255,224, + 0,3,193,240,0,7,0,248,0,14,0,124,0,28,0,62, + 0,60,0,30,0,56,0,31,0,120,0,15,0,120,0,15, + 0,112,0,15,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,248,0,7,0,120,0,15,0,120,0,15, + 0,124,0,14,0,60,0,28,0,62,0,28,0,31,0,56, + 0,15,128,112,0,7,193,224,0,3,255,128,0,0,254,0, + 0,22,30,90,25,1,0,7,254,0,255,255,192,111,7,224, + 15,1,240,15,0,248,15,0,124,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,120,15,0, + 120,15,0,240,15,131,224,15,127,192,15,62,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,63,192,0,127,240, + 0,28,37,148,29,2,249,0,63,0,0,0,255,224,0,3, + 193,240,0,7,0,248,0,14,0,124,0,28,0,62,0,60, + 0,30,0,56,0,31,0,120,0,15,0,120,0,15,0,112, + 0,15,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,248,0,7,0,120,0,15,0,120,0,15,0,124, + 0,14,0,60,0,30,0,62,0,28,0,31,0,56,0,15, + 128,112,0,7,193,224,0,3,255,192,0,0,127,128,0,0, + 3,192,0,0,1,224,0,0,0,248,16,0,0,124,48,0, + 0,31,224,0,0,15,224,0,0,3,128,26,30,120,27,1, + 0,7,254,0,0,255,255,192,0,111,7,224,0,15,1,240, + 0,15,0,240,0,15,0,120,0,15,0,120,0,15,0,120, + 0,15,0,120,0,15,0,120,0,15,0,112,0,15,0,240, + 0,15,1,224,0,15,3,192,0,15,255,0,0,15,254,0, + 0,15,14,0,0,15,7,0,0,15,7,128,0,15,3,128, + 0,15,3,192,0,15,1,192,0,15,1,224,0,15,0,240, + 0,15,0,240,0,15,0,120,0,15,0,124,0,15,0,62, + 0,63,192,63,192,127,224,31,0,18,30,90,23,3,0,3, + 248,0,31,254,0,60,63,0,120,14,0,112,4,0,240,0, + 0,240,0,0,240,0,0,248,0,0,252,0,0,127,0,0, + 127,192,0,63,240,0,31,248,0,7,254,0,1,255,0,0, + 127,128,0,31,128,0,15,192,0,7,192,0,3,192,0,3, + 192,0,3,192,128,3,128,192,3,128,224,7,0,240,15,0, + 252,62,0,255,248,0,15,224,0,26,30,120,26,0,0,127, + 255,255,192,127,255,255,192,96,30,1,128,192,30,1,128,192, + 30,1,128,128,30,0,128,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 127,128,0,1,255,224,0,27,30,120,31,2,0,255,192,127, + 224,127,128,63,192,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,30,0,15,0,30,0,15,0,30, + 0,7,128,60,0,7,192,120,0,3,224,240,0,1,255,224, + 0,0,63,128,0,30,30,120,31,0,0,255,224,15,252,31, + 0,1,240,15,0,0,224,15,0,1,192,7,0,1,192,7, + 128,1,192,7,128,3,128,3,192,3,128,3,192,3,128,3, + 192,7,0,1,224,7,0,1,224,6,0,0,224,14,0,0, + 240,14,0,0,240,12,0,0,120,28,0,0,120,28,0,0, + 120,56,0,0,60,56,0,0,60,56,0,0,28,112,0,0, + 30,112,0,0,30,112,0,0,15,224,0,0,15,224,0,0, + 15,224,0,0,7,192,0,0,7,192,0,0,3,128,0,0, + 3,0,0,40,30,150,41,0,0,255,224,24,3,255,63,0, + 24,0,252,14,0,28,0,48,15,0,60,0,112,15,0,60, + 0,112,15,0,62,0,112,7,0,126,0,96,7,0,127,0, + 224,7,128,127,0,224,7,128,103,0,224,7,128,231,128,224, + 3,128,231,128,192,3,192,195,129,192,3,193,195,193,192,3, + 193,195,193,192,1,193,129,193,192,1,195,129,225,128,1,227, + 129,227,128,1,227,0,227,128,1,231,0,243,128,0,231,0, + 243,128,0,246,0,115,0,0,254,0,127,0,0,254,0,63, + 0,0,124,0,63,0,0,124,0,62,0,0,124,0,30,0, + 0,124,0,30,0,0,120,0,30,0,0,48,0,8,0,28, + 30,120,30,1,0,255,224,255,224,255,224,255,224,63,0,31, + 0,31,0,30,0,15,128,28,0,7,128,56,0,3,192,120, + 0,3,224,112,0,1,224,224,0,0,241,224,0,0,249,192, + 0,0,127,128,0,0,63,128,0,0,31,0,0,0,31,0, + 0,0,31,0,0,0,63,128,0,0,63,192,0,0,115,224, + 0,0,241,224,0,0,224,240,0,1,192,248,0,3,192,120, + 0,3,128,60,0,7,0,62,0,15,0,31,0,14,0,15, + 0,62,0,15,192,255,192,127,240,255,192,127,240,28,30,120, + 29,0,0,252,0,63,240,254,0,63,240,31,0,15,128,15, + 0,7,0,15,128,14,0,7,192,14,0,3,192,28,0,3, + 224,60,0,1,224,56,0,0,240,120,0,0,248,112,0,0, + 120,224,0,0,125,224,0,0,61,192,0,0,63,192,0,0, + 31,128,0,0,31,128,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,63,192,0,0,255,240,0,22,30,90,25,1, + 0,63,255,252,63,255,252,56,0,120,48,0,248,48,1,240, + 32,1,224,32,3,224,0,3,192,0,7,128,0,15,128,0, + 15,0,0,31,0,0,30,0,0,60,0,0,124,0,0,120, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 7,128,0,15,128,0,15,0,4,31,0,12,62,0,12,60, + 0,12,124,0,28,127,255,252,255,255,252,11,45,90,15,3, + 248,255,224,255,224,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,255,224,255,224,20,46,138,23,1, + 248,224,0,0,112,0,0,112,0,0,120,0,0,56,0,0, + 56,0,0,28,0,0,28,0,0,30,0,0,14,0,0,14, + 0,0,15,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,192,0,1,192,0,1,192,0,1,224,0,0,224,0, + 0,224,0,0,240,0,0,112,0,0,112,0,0,56,0,0, + 56,0,0,60,0,0,28,0,0,28,0,0,30,0,0,14, + 0,0,14,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,224,0, + 0,224,0,0,240,0,0,112,0,0,48,11,45,90,15,1, + 248,255,224,255,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,255,224,255,224,19,23,69,24,2, + 13,0,32,0,0,112,0,0,240,0,1,240,0,1,248,0, + 1,248,0,3,188,0,3,188,0,7,60,0,7,30,0,6, + 30,0,14,14,0,14,15,0,12,15,0,28,7,128,28,7, + 128,24,3,128,56,3,192,48,3,192,112,1,224,112,1,224, + 96,0,224,192,0,192,20,2,6,23,1,251,127,255,240,255, + 255,240,9,10,20,15,1,25,240,0,248,0,120,0,60,0, + 28,0,14,0,7,0,3,0,1,128,1,128,20,22,66,22, + 2,0,1,248,0,15,254,0,28,30,0,120,15,0,112,15, + 0,240,15,0,128,15,0,0,15,0,0,15,0,0,255,0, + 7,255,0,31,143,0,62,15,0,120,15,0,248,15,0,240, + 15,0,240,15,0,240,31,0,240,63,0,120,239,32,127,143, + 240,30,7,128,22,36,108,24,0,0,6,0,0,126,0,0, + 254,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,15,128,30,63,224,30,127,240,30,227,240, + 31,192,248,31,128,248,31,0,124,30,0,124,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 56,30,0,56,30,0,112,30,0,96,31,0,224,15,193,192, + 3,255,0,0,252,0,18,22,66,21,2,0,0,127,0,3, + 255,192,7,7,192,14,1,128,28,0,128,56,0,0,120,0, + 0,112,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,248,0,0,120,0,0,120,0,0,60, + 0,64,62,1,192,31,131,128,7,254,0,1,248,0,23,36, + 108,25,2,0,0,0,224,0,15,224,0,15,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,253, + 224,3,255,224,15,15,224,28,3,224,60,1,224,56,1,224, + 120,1,224,112,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,1, + 224,124,3,224,62,5,228,31,25,254,15,240,248,7,192,224, + 18,22,66,22,2,0,0,248,0,7,254,0,14,15,0,28, + 7,128,56,7,128,56,3,192,112,3,192,112,3,192,255,255, + 192,255,255,128,240,0,0,240,0,0,240,0,0,240,0,0, + 248,0,0,120,0,0,120,0,0,124,0,192,62,1,128,31, + 7,0,15,254,0,3,248,0,19,36,108,15,0,0,0,15, + 128,0,63,224,0,99,192,1,193,128,3,128,0,3,128,0, + 7,128,0,7,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,63,254,0,255,252,0,15,8, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,31,224,0,127,248,0,24,33,99,24,0,245, + 0,252,2,3,255,126,7,7,252,14,3,224,30,1,224,28, + 1,240,60,0,240,60,0,240,60,0,240,60,0,240,62,0, + 224,31,1,192,15,131,128,7,255,0,1,252,0,3,192,0, + 7,128,0,15,128,0,15,224,0,7,255,128,3,255,240,7, + 191,252,14,0,254,60,0,31,120,0,15,240,0,15,240,0, + 15,240,0,14,248,0,28,124,0,56,63,128,240,15,255,192, + 1,254,0,23,36,108,26,2,0,6,0,0,126,0,0,254, + 0,0,62,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,7,128,28,31,224,28,49,224,28,96,240,28, + 192,240,29,128,240,31,0,240,31,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,63, + 131,248,255,199,254,10,32,64,13,2,0,28,0,30,0,62, + 0,62,0,28,0,0,0,0,0,0,0,0,0,0,0,6, + 0,126,0,254,0,62,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,63,0,255,192,14,43,86,12,251, + 245,0,56,0,60,0,124,0,124,0,56,0,0,0,0,0, + 0,0,0,0,0,0,12,0,252,1,252,0,124,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,56,0,56,0,120,0,112,0,112,48, + 224,127,128,255,0,124,0,23,36,108,24,1,0,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,7,252,30,1,240,30,1,192, + 30,3,128,30,7,0,30,14,0,30,56,0,30,112,0,30, + 224,0,31,224,0,30,240,0,30,248,0,30,120,0,30,60, + 0,30,30,0,30,15,0,30,15,128,30,7,192,30,3,224, + 30,1,224,63,0,254,255,192,124,12,36,72,13,1,0,3, + 0,63,0,127,0,31,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,31,128,255,240,36,22,110,39,2,0,12,7,192, + 124,0,254,31,224,255,0,62,49,227,143,0,30,96,247,7, + 128,30,192,254,7,128,31,128,252,7,128,31,0,248,7,128, + 31,0,248,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,30,0,240,7,128,30,0,240,7,128,30,0,240,7, + 128,127,131,252,31,192,255,199,254,63,240,23,22,66,26,2, + 0,12,7,192,254,15,224,62,49,224,30,96,240,30,192,240, + 30,128,240,31,0,240,31,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,127,131,248, + 255,199,254,20,22,66,24,2,0,0,252,0,7,255,0,14, + 15,128,28,7,192,56,3,192,56,3,224,112,1,224,112,1, + 240,240,0,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,248,0,224,120,1,224,124,1,192,60,1,192,62, + 3,128,31,7,0,15,254,0,3,240,0,21,33,99,25,2, + 245,12,7,128,254,31,192,62,35,224,30,65,240,30,129,240, + 31,0,240,31,0,248,30,0,248,30,0,120,30,0,120,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,112,30,0, + 112,30,0,224,30,0,224,31,1,192,31,195,128,30,255,0, + 30,62,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,127,0, + 0,255,224,0,22,33,99,25,2,245,0,252,48,3,255,96, + 7,15,224,30,3,224,28,1,224,56,1,224,120,1,224,112, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,120,1,224,120,1,224,124,3,224, + 62,7,224,31,29,224,15,249,224,3,225,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,240,0,31,252,17,22,66, + 19,1,0,4,15,0,126,63,128,254,127,128,30,227,128,30, + 195,128,31,129,0,31,128,0,31,0,0,31,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,63, + 128,0,255,224,0,15,22,44,19,2,0,15,192,63,248,120, + 120,112,56,240,16,240,0,248,0,252,0,127,0,63,192,31, + 240,7,248,1,252,0,126,0,62,128,30,128,30,192,30,224, + 60,240,120,255,240,31,192,16,30,60,17,0,0,3,0,7, + 0,15,0,15,0,15,0,15,0,15,0,15,0,63,255,255, + 255,15,4,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,1,7,135,7,254,3,240,24,22,66,25,1,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,23,22,66,24,0,0,255,192,254,62,0,60,30,0,56, + 30,0,48,15,0,112,15,0,112,7,0,96,7,128,224,7, + 128,192,3,193,192,3,193,192,1,193,128,1,227,128,1,227, + 0,0,243,0,0,247,0,0,118,0,0,126,0,0,126,0, + 0,60,0,0,60,0,0,16,0,33,22,110,34,0,0,255, + 192,96,63,128,62,0,224,15,0,30,0,224,14,0,30,0, + 240,14,0,14,1,240,12,0,15,1,240,12,0,15,1,248, + 28,0,7,3,248,28,0,7,3,56,24,0,7,131,60,24, + 0,3,135,28,56,0,3,134,30,48,0,3,198,30,48,0, + 1,206,14,112,0,1,204,15,96,0,1,252,15,96,0,1, + 252,7,96,0,0,248,7,224,0,0,248,7,192,0,0,240, + 3,192,0,0,112,3,192,0,0,96,3,0,0,24,22,66, + 24,0,0,127,227,254,127,227,254,31,128,248,15,128,224,7, + 128,192,3,193,192,1,227,128,0,247,0,0,254,0,0,124, + 0,0,60,0,0,62,0,0,127,0,0,239,0,1,199,128, + 3,131,192,3,1,224,7,0,240,14,0,248,62,0,252,255, + 131,255,255,131,255,24,33,99,24,255,245,127,224,255,31,0, + 62,15,0,28,15,0,24,7,128,56,7,128,56,3,128,48, + 3,192,112,3,192,96,1,224,224,1,224,224,0,224,192,0, + 241,192,0,241,192,0,121,128,0,123,128,0,59,0,0,63, + 0,0,63,0,0,30,0,0,30,0,0,12,0,0,12,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,112,0,0, + 224,0,63,192,0,127,128,0,255,0,0,124,0,0,17,22, + 66,21,2,0,127,255,128,127,255,128,96,15,0,96,15,0, + 64,30,0,64,60,0,0,60,0,0,120,0,0,240,0,0, + 240,0,1,224,0,3,192,0,3,192,0,7,128,0,15,0, + 0,14,0,0,30,0,128,60,0,128,120,0,128,120,1,128, + 255,255,128,255,255,128,13,45,90,16,2,249,0,8,0,56, + 0,112,1,224,1,192,3,128,3,128,7,128,7,128,7,128, + 7,128,7,128,7,192,3,192,3,192,3,192,3,192,3,192, + 3,128,7,128,7,0,30,0,126,0,255,0,7,128,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,7,192,7,128, + 7,128,7,128,7,128,7,128,7,128,3,128,3,192,1,192, + 0,224,0,120,0,24,4,49,49,11,4,246,112,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,224,13,45,90, + 16,1,249,192,0,240,0,56,0,28,0,30,0,14,0,15, + 0,15,0,15,0,15,0,15,0,15,0,31,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,15,0,7,240,3, + 248,3,192,7,0,15,0,14,0,30,0,30,0,30,0,30, + 0,30,0,31,0,15,0,15,0,15,0,15,0,15,0,14, + 0,30,0,28,0,56,0,112,0,224,0,128,0,21,8,24, + 23,1,11,7,128,8,15,224,24,31,240,16,63,252,48,49, + 255,224,96,127,192,64,31,128,192,15,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=12 h=15 x= 2 y= 8 dx=13 dy= 0 ascent=13 len=26 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9[3248] U8G_SECTION(".progmem.u8g_font_gdr9") = { + 0,23,21,248,251,9,1,255,4,54,32,255,252,13,252,12, + 252,0,0,0,3,0,0,2,11,11,4,1,0,192,192,192, + 192,192,64,128,128,0,128,128,4,5,5,6,1,6,208,144, + 144,144,144,6,8,8,7,1,1,44,40,252,72,80,248,80, + 160,6,11,11,7,0,255,16,60,84,80,112,24,20,148,212, + 120,16,9,9,18,11,1,0,97,0,146,0,148,0,152,0, + 107,0,20,128,36,128,68,128,195,0,9,11,22,10,1,0, + 56,0,72,0,72,0,72,0,112,0,103,128,162,0,146,0, + 138,0,134,0,123,0,2,5,5,4,1,6,192,128,128,128, + 128,3,14,14,5,1,254,32,64,64,128,128,128,128,128,128, + 128,128,64,64,32,3,14,14,5,1,254,128,64,64,32,32, + 32,32,32,32,32,32,64,64,128,5,6,6,7,1,5,32, + 168,112,112,168,32,5,5,5,6,1,2,32,32,248,32,32, + 2,4,4,3,1,254,64,192,64,128,5,1,1,5,0,3, + 248,1,2,2,3,1,0,128,128,7,14,14,7,0,254,6, + 4,4,8,8,8,16,16,32,32,32,64,64,192,5,9,9, + 7,1,0,112,144,136,136,136,136,136,80,112,5,9,9,7, + 1,0,32,224,32,32,32,32,32,32,248,5,9,9,7,1, + 0,56,72,136,8,16,32,64,136,248,6,9,9,7,0,0, + 48,72,136,16,120,4,4,132,120,6,9,9,7,0,0,8, + 24,40,40,72,72,252,8,60,5,9,9,7,1,0,120,128, + 128,240,136,8,8,136,112,5,9,9,7,1,0,24,96,64, + 176,200,136,136,136,112,5,9,9,7,1,0,248,136,8,16, + 16,32,32,96,64,5,9,9,7,1,0,112,200,136,208,112, + 136,136,136,112,5,9,9,7,1,0,112,152,136,136,136,120, + 16,16,224,1,7,7,3,1,0,128,128,0,0,0,128,128, + 2,9,9,3,1,254,128,128,0,0,0,64,192,64,128,6, + 5,5,7,0,2,4,56,64,176,12,6,3,3,7,0,3, + 124,128,252,6,5,5,7,0,2,192,56,4,56,192,5,11, + 11,7,1,0,112,136,136,8,16,16,32,32,32,32,32,11, + 13,26,13,1,253,15,0,48,192,64,64,142,32,178,32,162, + 32,162,32,162,32,162,64,95,128,64,0,48,192,31,0,9, + 9,18,9,0,0,8,0,8,0,20,0,20,0,36,0,62, + 0,34,0,67,0,227,128,7,9,9,9,1,0,248,68,68, + 124,70,66,66,66,252,7,9,9,8,1,0,60,68,128,128, + 128,128,128,70,56,8,9,9,9,0,0,252,66,65,65,65, + 65,65,66,252,6,9,9,7,1,0,252,68,64,120,64,64, + 64,68,252,6,9,9,7,1,0,252,68,64,120,64,64,64, + 64,224,8,9,9,9,1,0,30,100,128,128,143,130,130,66, + 60,9,9,18,10,0,0,227,128,65,0,65,0,65,0,127, + 0,65,0,65,0,65,0,227,128,3,9,9,4,1,0,224, + 64,64,64,64,64,64,64,224,5,12,12,5,255,253,56,16, + 16,16,16,16,16,16,16,16,32,192,8,9,9,9,1,0, + 239,68,72,80,96,80,72,68,231,6,9,9,7,1,0,224, + 64,64,64,64,64,64,68,252,12,9,18,12,0,0,96,96, + 32,192,80,192,81,64,73,64,73,64,70,64,70,64,228,240, + 10,9,18,10,0,0,193,192,96,128,80,128,88,128,76,128, + 70,128,67,128,65,128,224,128,7,9,9,9,1,0,56,68, + 130,130,130,130,130,68,56,7,9,9,8,0,0,252,66,66, + 66,92,96,64,64,224,8,11,11,9,1,254,56,68,130,130, + 130,130,130,68,56,13,3,8,9,9,8,0,0,248,68,68, + 68,88,104,72,68,231,5,9,9,7,1,0,112,152,128,64, + 48,8,136,136,240,7,9,9,8,1,0,254,146,16,16,16, + 16,16,16,56,9,9,18,10,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,9,18,10, + 0,0,227,128,97,0,33,0,34,0,18,0,18,0,28,0, + 12,0,8,0,12,9,18,13,0,0,226,112,66,32,38,32, + 37,32,41,32,41,192,56,192,16,192,16,192,9,9,18,9, + 0,0,247,128,98,0,54,0,28,0,8,0,20,0,34,0, + 35,0,243,128,9,9,18,9,0,0,227,128,98,0,50,0, + 20,0,28,0,8,0,8,0,8,0,28,0,7,9,9,8, + 0,0,126,68,4,8,16,16,34,66,254,3,15,15,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,128,128,224, + 7,14,14,7,0,254,192,64,64,32,32,32,16,16,8,8, + 8,4,4,6,3,15,15,5,1,253,224,32,32,32,32,32, + 32,32,32,32,32,32,32,32,224,6,7,7,7,1,4,32, + 48,80,80,136,136,140,7,1,1,7,0,254,254,3,3,3, + 5,0,8,192,64,32,6,7,7,7,1,0,56,72,136,56, + 200,136,252,7,11,11,8,0,0,192,64,64,64,92,98,66, + 66,66,68,56,5,7,7,7,1,0,120,136,128,128,128,200, + 112,7,11,11,8,1,0,12,4,4,4,60,196,132,132,132, + 204,118,5,7,7,7,1,0,112,72,136,248,128,200,112,5, + 11,11,5,1,0,24,104,64,64,240,64,64,64,64,64,240, + 7,11,11,7,0,252,126,132,132,196,120,96,120,70,130,134, + 120,8,11,11,8,0,0,192,64,64,64,78,114,66,66,66, + 66,231,3,10,10,4,1,0,64,64,0,192,64,64,64,64, + 64,224,4,14,14,4,255,252,16,16,0,48,16,16,16,16, + 16,16,16,16,32,192,7,11,11,8,0,0,192,64,64,64, + 78,72,112,112,80,72,230,3,11,11,4,1,0,192,64,64, + 64,64,64,64,64,64,64,224,11,7,14,11,0,0,221,192, + 102,64,68,64,68,64,68,64,68,64,238,224,8,7,7,8, + 0,0,78,242,66,66,66,66,231,6,7,7,8,1,0,56, + 204,132,132,132,200,112,7,11,11,8,0,252,92,230,66,66, + 66,68,120,64,64,64,224,7,11,11,8,1,252,60,68,132, + 132,132,204,116,4,4,4,14,5,7,7,6,0,0,216,104, + 64,64,64,64,224,4,7,7,6,1,0,96,176,128,96,16, + 144,224,5,9,9,5,0,0,64,64,248,64,64,64,64,64, + 120,8,7,7,8,0,0,198,66,66,66,66,70,59,7,7, + 7,7,0,0,230,68,36,40,56,24,16,10,7,14,11,0, + 0,228,192,68,128,110,128,42,128,50,128,49,0,17,0,7, + 7,7,8,0,0,238,100,56,24,40,68,238,7,11,11,7, + 0,252,230,68,36,36,40,24,16,16,16,32,192,5,7,7, + 7,1,0,248,144,32,32,64,136,248,3,14,14,5,1,254, + 32,64,64,64,32,32,64,224,32,32,64,64,64,32,1,15, + 15,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,3,14,14,5,1,254,128,64,64,64,128,128,192, + 96,128,128,64,64,64,128,7,3,3,7,0,3,50,220,128, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,3,0,0,2,11,11,4,1,252,128,128,0, + 128,128,128,192,192,192,192,192,5,9,9,7,1,0,32,56, + 232,160,160,160,232,112,32,6,9,9,7,1,0,56,68,72, + 64,240,64,64,68,252,3,5,5,7,2,2,160,224,160,160, + 224,7,9,9,7,0,0,206,100,40,56,16,124,16,16,56, + 1,15,15,3,1,253,128,128,128,128,128,128,128,0,128,128, + 128,128,128,128,128,6,11,11,8,1,0,112,144,128,224,184, + 132,68,56,136,136,112,4,2,2,6,1,8,144,144,9,9, + 18,11,1,0,62,0,93,0,166,128,160,128,160,128,160,128, + 182,128,93,0,62,0,4,5,5,4,0,4,96,160,224,224, + 240,5,7,7,7,1,0,104,72,144,176,144,72,104,6,4, + 4,7,1,1,252,4,4,4,5,1,1,5,0,3,248,5, + 6,6,5,0,5,112,136,184,168,168,112,5,1,1,7,1, + 8,248,3,4,4,5,1,5,96,160,160,192,6,7,7,6, + 0,1,16,16,124,16,16,0,252,4,6,6,5,0,4,48, + 208,32,32,80,240,4,6,6,5,0,4,48,80,32,16,144, + 96,3,3,3,5,2,8,96,128,128,8,11,11,8,0,252, + 198,66,66,66,66,70,123,64,64,64,96,8,11,11,9,0, + 254,127,138,138,202,122,10,10,10,10,10,31,1,2,2,2, + 1,4,128,128,2,3,3,3,1,253,128,64,192,3,5,5, + 5,1,5,192,64,64,64,224,3,5,5,4,0,4,96,160, + 160,192,224,6,7,7,7,1,0,160,80,72,44,72,80,160, + 8,9,9,9,1,0,194,68,68,72,178,22,42,79,199,7, + 9,9,9,1,0,194,68,72,72,182,26,36,74,206,9,9, + 18,9,0,0,49,0,82,0,52,0,20,0,233,0,11,0, + 21,0,39,128,99,128,5,11,11,7,1,252,32,32,32,32, + 32,64,128,128,136,136,112,9,12,24,9,0,0,48,0,12, + 0,0,0,8,0,8,0,20,0,20,0,36,0,62,0,34, + 0,67,0,227,128,9,12,24,9,0,0,6,0,24,0,0, + 0,8,0,8,0,20,0,20,0,36,0,62,0,34,0,67, + 0,227,128,9,12,24,9,0,0,28,0,34,0,0,0,8, + 0,8,0,20,0,20,0,36,0,62,0,34,0,67,0,227, + 128,9,12,24,9,0,0,58,0,60,0,0,0,8,0,8, + 0,20,0,20,0,36,0,62,0,34,0,67,0,227,128,9, + 11,22,9,0,0,36,0,36,0,8,0,8,0,20,0,20, + 0,36,0,62,0,34,0,67,0,227,128,9,13,26,9,0, + 0,12,0,20,0,20,0,8,0,8,0,8,0,20,0,20, + 0,36,0,62,0,34,0,67,0,227,128,11,9,18,12,0, + 0,31,224,10,32,18,0,31,192,18,0,34,0,34,0,34, + 32,231,224,6,12,12,8,1,253,60,68,128,128,128,128,128, + 68,120,32,16,48,6,12,12,7,1,0,224,16,0,252,68, + 64,120,64,64,64,68,252,6,12,12,7,1,0,24,96,0, + 252,68,64,120,64,64,64,68,252,6,12,12,7,1,0,112, + 136,0,252,68,64,120,64,64,64,68,252,6,11,11,7,1, + 0,144,144,124,68,64,120,64,64,64,68,252,4,12,12,4, + 0,0,192,32,0,112,32,32,32,32,32,32,32,112,4,12, + 12,4,1,0,112,128,0,224,64,64,64,64,64,64,64,224, + 4,12,12,4,0,0,96,144,0,112,32,32,32,32,32,32, + 32,112,4,11,11,4,0,0,144,144,96,32,32,32,32,32, + 32,32,112,8,9,9,9,0,0,252,66,65,65,241,65,65, + 66,252,10,12,24,10,0,0,26,0,60,0,0,0,193,192, + 96,128,80,128,88,128,76,128,70,128,67,128,65,128,224,128, + 7,12,12,9,1,0,96,24,0,56,68,130,130,130,130,130, + 68,56,7,12,12,9,1,0,12,48,0,56,68,130,130,130, + 130,130,68,56,7,12,12,9,1,0,56,68,0,56,68,130, + 130,130,130,130,68,56,7,12,12,9,1,0,52,120,0,56, + 68,130,130,130,130,130,68,56,7,11,11,9,1,0,72,72, + 56,68,130,130,130,130,130,68,56,4,4,4,6,1,2,144, + 96,96,144,7,9,9,9,1,0,58,68,138,138,146,162,194, + 68,184,9,12,24,10,0,0,56,0,4,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,98,0,60,0, + 9,12,24,10,0,0,6,0,24,0,0,0,227,128,65,0, + 65,0,65,0,65,0,65,0,65,0,98,0,60,0,9,12, + 24,10,0,0,28,0,34,0,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,11,22,10, + 0,0,34,0,36,0,195,128,65,0,65,0,65,0,65,0, + 65,0,65,0,98,0,60,0,9,12,24,9,0,0,6,0, + 24,0,0,0,227,128,98,0,50,0,20,0,28,0,8,0, + 8,0,8,0,28,0,7,9,9,8,0,0,224,124,70,66, + 66,66,100,92,224,8,11,11,8,0,0,28,34,66,66,68, + 72,76,67,65,73,206,6,11,11,7,1,0,192,96,32,0, + 56,72,136,56,200,136,252,6,11,11,7,1,0,24,16,32, + 0,56,72,136,56,200,136,252,6,11,11,7,1,0,32,80, + 136,0,56,72,136,56,200,136,252,6,10,10,7,1,0,104, + 176,0,56,72,136,56,200,136,252,6,10,10,7,1,0,144, + 144,0,56,72,136,56,200,136,252,6,11,11,7,1,0,48, + 80,80,48,56,72,136,56,200,136,252,9,7,14,10,1,0, + 63,0,76,128,136,128,63,128,200,0,136,128,247,0,5,10, + 10,7,1,253,120,136,128,128,128,200,112,32,16,48,5,11, + 11,7,1,0,64,32,32,16,112,72,136,248,128,200,112,5, + 11,11,7,1,0,24,16,32,0,112,72,136,248,128,200,112, + 5,11,11,7,1,0,32,80,136,0,112,72,136,248,128,200, + 112,5,10,10,7,1,0,144,152,0,112,72,136,248,128,200, + 112,4,11,11,4,0,0,128,64,32,0,96,32,32,32,32, + 32,112,3,11,11,4,1,0,32,64,128,0,192,64,64,64, + 64,64,224,4,11,11,4,0,0,96,80,144,0,96,32,32, + 32,32,32,112,4,10,10,4,0,0,144,144,0,96,32,32, + 32,32,32,112,5,11,11,7,1,0,200,48,80,16,120,136, + 136,136,136,144,112,8,10,10,8,0,0,18,108,0,78,242, + 66,66,66,66,231,6,11,11,8,1,0,64,32,16,0,56, + 204,132,132,132,200,112,6,11,11,8,1,0,8,16,32,0, + 56,204,132,132,132,200,112,6,11,11,8,1,0,48,80,136, + 0,56,204,132,132,132,200,112,6,10,10,8,1,0,104,152, + 0,56,204,132,132,132,200,112,6,10,10,8,1,0,136,136, + 0,56,204,132,132,132,200,112,6,4,4,6,0,2,16,124, + 128,16,6,7,7,8,1,0,60,204,148,164,164,200,240,8, + 11,11,8,0,0,32,16,8,0,198,66,66,66,66,70,59, + 8,11,11,8,0,0,4,8,16,0,198,66,66,66,66,70, + 59,8,11,11,8,0,0,24,24,36,0,198,66,66,66,66, + 70,59,8,10,10,8,0,0,36,68,0,198,66,66,66,66, + 70,59,7,15,15,7,0,252,4,8,16,0,230,68,36,36, + 40,24,16,16,16,32,192,7,15,15,8,0,252,192,64,64, + 64,76,114,66,66,66,68,120,64,64,64,224,7,14,14,7, + 0,252,68,68,0,230,68,36,36,40,24,16,16,16,32,192 + }; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 7 h=14 x= 1 y= 5 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9n[235] U8G_SECTION(".progmem.u8g_font_gdr9n") = { + 0,23,21,248,251,9,0,0,0,0,42,57,0,12,254,9, + 0,5,6,6,7,1,5,32,168,112,112,168,32,5,5,5, + 6,1,2,32,32,248,32,32,2,4,4,3,1,254,64,192, + 64,128,5,1,1,5,0,3,248,1,2,2,3,1,0,128, + 128,7,14,14,7,0,254,6,4,4,8,8,8,16,16,32, + 32,32,64,64,192,5,9,9,7,1,0,112,144,136,136,136, + 136,136,80,112,5,9,9,7,1,0,32,224,32,32,32,32, + 32,32,248,5,9,9,7,1,0,56,72,136,8,16,32,64, + 136,248,6,9,9,7,0,0,48,72,136,16,120,4,4,132, + 120,6,9,9,7,0,0,8,24,40,40,72,72,252,8,60, + 5,9,9,7,1,0,120,128,128,240,136,8,8,136,112,5, + 9,9,7,1,0,24,96,64,176,200,136,136,136,112,5,9, + 9,7,1,0,248,136,8,16,16,32,32,96,64,5,9,9, + 7,1,0,112,200,136,208,112,136,136,136,112,5,9,9,7, + 1,0,112,152,136,136,136,120,16,16,224}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=12 h=15 x= 1 y= 8 dx=13 dy= 0 ascent=12 len=26 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9r[1553] U8G_SECTION(".progmem.u8g_font_gdr9r") = { + 0,23,21,248,251,9,1,255,4,54,32,127,252,12,252,12, + 252,0,0,0,3,0,0,2,11,11,4,1,0,192,192,192, + 192,192,64,128,128,0,128,128,4,5,5,6,1,6,208,144, + 144,144,144,6,8,8,7,1,1,44,40,252,72,80,248,80, + 160,6,11,11,7,0,255,16,60,84,80,112,24,20,148,212, + 120,16,9,9,18,11,1,0,97,0,146,0,148,0,152,0, + 107,0,20,128,36,128,68,128,195,0,9,11,22,10,1,0, + 56,0,72,0,72,0,72,0,112,0,103,128,162,0,146,0, + 138,0,134,0,123,0,2,5,5,4,1,6,192,128,128,128, + 128,3,14,14,5,1,254,32,64,64,128,128,128,128,128,128, + 128,128,64,64,32,3,14,14,5,1,254,128,64,64,32,32, + 32,32,32,32,32,32,64,64,128,5,6,6,7,1,5,32, + 168,112,112,168,32,5,5,5,6,1,2,32,32,248,32,32, + 2,4,4,3,1,254,64,192,64,128,5,1,1,5,0,3, + 248,1,2,2,3,1,0,128,128,7,14,14,7,0,254,6, + 4,4,8,8,8,16,16,32,32,32,64,64,192,5,9,9, + 7,1,0,112,144,136,136,136,136,136,80,112,5,9,9,7, + 1,0,32,224,32,32,32,32,32,32,248,5,9,9,7,1, + 0,56,72,136,8,16,32,64,136,248,6,9,9,7,0,0, + 48,72,136,16,120,4,4,132,120,6,9,9,7,0,0,8, + 24,40,40,72,72,252,8,60,5,9,9,7,1,0,120,128, + 128,240,136,8,8,136,112,5,9,9,7,1,0,24,96,64, + 176,200,136,136,136,112,5,9,9,7,1,0,248,136,8,16, + 16,32,32,96,64,5,9,9,7,1,0,112,200,136,208,112, + 136,136,136,112,5,9,9,7,1,0,112,152,136,136,136,120, + 16,16,224,1,7,7,3,1,0,128,128,0,0,0,128,128, + 2,9,9,3,1,254,128,128,0,0,0,64,192,64,128,6, + 5,5,7,0,2,4,56,64,176,12,6,3,3,7,0,3, + 124,128,252,6,5,5,7,0,2,192,56,4,56,192,5,11, + 11,7,1,0,112,136,136,8,16,16,32,32,32,32,32,11, + 13,26,13,1,253,15,0,48,192,64,64,142,32,178,32,162, + 32,162,32,162,32,162,64,95,128,64,0,48,192,31,0,9, + 9,18,9,0,0,8,0,8,0,20,0,20,0,36,0,62, + 0,34,0,67,0,227,128,7,9,9,9,1,0,248,68,68, + 124,70,66,66,66,252,7,9,9,8,1,0,60,68,128,128, + 128,128,128,70,56,8,9,9,9,0,0,252,66,65,65,65, + 65,65,66,252,6,9,9,7,1,0,252,68,64,120,64,64, + 64,68,252,6,9,9,7,1,0,252,68,64,120,64,64,64, + 64,224,8,9,9,9,1,0,30,100,128,128,143,130,130,66, + 60,9,9,18,10,0,0,227,128,65,0,65,0,65,0,127, + 0,65,0,65,0,65,0,227,128,3,9,9,4,1,0,224, + 64,64,64,64,64,64,64,224,5,12,12,5,255,253,56,16, + 16,16,16,16,16,16,16,16,32,192,8,9,9,9,1,0, + 239,68,72,80,96,80,72,68,231,6,9,9,7,1,0,224, + 64,64,64,64,64,64,68,252,12,9,18,12,0,0,96,96, + 32,192,80,192,81,64,73,64,73,64,70,64,70,64,228,240, + 10,9,18,10,0,0,193,192,96,128,80,128,88,128,76,128, + 70,128,67,128,65,128,224,128,7,9,9,9,1,0,56,68, + 130,130,130,130,130,68,56,7,9,9,8,0,0,252,66,66, + 66,92,96,64,64,224,8,11,11,9,1,254,56,68,130,130, + 130,130,130,68,56,13,3,8,9,9,8,0,0,248,68,68, + 68,88,104,72,68,231,5,9,9,7,1,0,112,152,128,64, + 48,8,136,136,240,7,9,9,8,1,0,254,146,16,16,16, + 16,16,16,56,9,9,18,10,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,9,18,10, + 0,0,227,128,97,0,33,0,34,0,18,0,18,0,28,0, + 12,0,8,0,12,9,18,13,0,0,226,112,66,32,38,32, + 37,32,41,32,41,192,56,192,16,192,16,192,9,9,18,9, + 0,0,247,128,98,0,54,0,28,0,8,0,20,0,34,0, + 35,0,243,128,9,9,18,9,0,0,227,128,98,0,50,0, + 20,0,28,0,8,0,8,0,8,0,28,0,7,9,9,8, + 0,0,126,68,4,8,16,16,34,66,254,3,15,15,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,128,128,224, + 7,14,14,7,0,254,192,64,64,32,32,32,16,16,8,8, + 8,4,4,6,3,15,15,5,1,253,224,32,32,32,32,32, + 32,32,32,32,32,32,32,32,224,6,7,7,7,1,4,32, + 48,80,80,136,136,140,7,1,1,7,0,254,254,3,3,3, + 5,0,8,192,64,32,6,7,7,7,1,0,56,72,136,56, + 200,136,252,7,11,11,8,0,0,192,64,64,64,92,98,66, + 66,66,68,56,5,7,7,7,1,0,120,136,128,128,128,200, + 112,7,11,11,8,1,0,12,4,4,4,60,196,132,132,132, + 204,118,5,7,7,7,1,0,112,72,136,248,128,200,112,5, + 11,11,5,1,0,24,104,64,64,240,64,64,64,64,64,240, + 7,11,11,7,0,252,126,132,132,196,120,96,120,70,130,134, + 120,8,11,11,8,0,0,192,64,64,64,78,114,66,66,66, + 66,231,3,10,10,4,1,0,64,64,0,192,64,64,64,64, + 64,224,4,14,14,4,255,252,16,16,0,48,16,16,16,16, + 16,16,16,16,32,192,7,11,11,8,0,0,192,64,64,64, + 78,72,112,112,80,72,230,3,11,11,4,1,0,192,64,64, + 64,64,64,64,64,64,64,224,11,7,14,11,0,0,221,192, + 102,64,68,64,68,64,68,64,68,64,238,224,8,7,7,8, + 0,0,78,242,66,66,66,66,231,6,7,7,8,1,0,56, + 204,132,132,132,200,112,7,11,11,8,0,252,92,230,66,66, + 66,68,120,64,64,64,224,7,11,11,8,1,252,60,68,132, + 132,132,204,116,4,4,4,14,5,7,7,6,0,0,216,104, + 64,64,64,64,224,4,7,7,6,1,0,96,176,128,96,16, + 144,224,5,9,9,5,0,0,64,64,248,64,64,64,64,64, + 120,8,7,7,8,0,0,198,66,66,66,66,70,59,7,7, + 7,7,0,0,230,68,36,40,56,24,16,10,7,14,11,0, + 0,228,192,68,128,110,128,42,128,50,128,49,0,17,0,7, + 7,7,8,0,0,238,100,56,24,40,68,238,7,11,11,7, + 0,252,230,68,36,36,40,24,16,16,16,32,192,5,7,7, + 7,1,0,248,144,32,32,64,136,248,3,14,14,5,1,254, + 32,64,64,64,32,32,64,224,32,32,64,64,64,32,1,15, + 15,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,3,14,14,5,1,254,128,64,64,64,128,128,192, + 96,128,128,64,64,64,128,7,3,3,7,0,3,50,220,128, + 255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=11 x= 1 y= 7 dx=11 dy= 0 ascent=11 len=18 + Font Bounding box w=12 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB08[2677] U8G_SECTION(".progmem.u8g_font_helvB08") = { + 0,12,19,255,251,8,1,182,3,122,32,255,254,11,254,8, + 254,0,0,0,3,0,1,2,8,8,4,1,0,192,192,192, + 192,128,128,0,192,3,3,3,5,1,5,160,160,160,7,7, + 7,6,255,0,40,40,126,40,252,80,80,5,10,10,6,0, + 255,32,112,168,224,112,56,40,168,112,32,7,8,8,8,0, + 0,98,180,104,16,16,44,86,140,7,8,8,8,0,0,112, + 216,216,112,222,204,220,118,1,3,3,3,1,5,128,128,128, + 3,10,10,4,0,254,32,96,64,192,192,192,192,64,96,32, + 3,10,10,4,0,254,128,192,64,96,96,96,96,64,192,128, + 3,3,3,4,0,5,160,64,160,6,5,5,6,0,1,48, + 48,252,48,48,2,4,4,3,0,254,192,192,64,128,4,1, + 1,5,0,3,240,2,2,2,3,0,0,192,192,4,8,8, + 4,0,0,16,16,32,32,64,64,128,128,5,8,8,6,0, + 0,112,216,216,216,216,216,216,112,3,8,8,6,1,0,96, + 224,96,96,96,96,96,96,5,8,8,6,0,0,112,216,24, + 24,48,96,192,248,5,8,8,6,0,0,112,216,24,48,24, + 24,216,112,6,8,8,6,0,0,8,24,56,88,152,252,24, + 24,5,8,8,6,0,0,248,192,192,240,24,152,216,112,5, + 8,8,6,0,0,112,216,192,240,216,216,216,112,5,8,8, + 6,0,0,248,24,24,48,48,96,96,96,5,8,8,6,0, + 0,112,216,216,112,216,216,216,112,5,8,8,6,0,0,112, + 216,216,216,120,24,216,112,2,6,6,3,0,0,192,192,0, + 0,192,192,2,8,8,3,0,254,192,192,0,0,192,192,64, + 128,4,5,5,5,0,1,48,96,192,96,48,5,3,3,6, + 0,2,248,0,248,4,5,5,5,0,1,192,96,48,96,192, + 5,8,8,6,0,0,112,216,24,48,96,96,0,96,10,9, + 18,11,0,255,31,0,96,128,77,64,146,64,162,64,164,128, + 155,0,64,0,62,0,7,8,8,8,0,0,56,56,108,108, + 108,254,198,198,6,8,8,7,0,0,248,204,204,248,204,204, + 204,248,7,8,8,8,0,0,60,102,194,192,192,194,102,60, + 6,8,8,7,0,0,240,216,204,204,204,204,216,240,5,8, + 8,6,0,0,248,192,192,248,192,192,192,248,5,8,8,6, + 0,0,248,192,192,240,192,192,192,192,7,8,8,8,0,0, + 60,102,194,192,206,198,102,58,6,8,8,7,0,0,204,204, + 204,252,204,204,204,204,2,8,8,3,0,0,192,192,192,192, + 192,192,192,192,5,8,8,6,0,0,24,24,24,24,24,24, + 216,112,7,8,8,7,0,0,204,216,240,224,240,216,204,198, + 5,8,8,6,0,0,192,192,192,192,192,192,192,248,9,8, + 16,10,0,0,193,128,227,128,227,128,247,128,213,128,221,128, + 201,128,201,128,7,8,8,8,0,0,198,230,230,214,214,206, + 206,198,7,8,8,8,0,0,56,108,198,198,198,198,108,56, + 6,8,8,7,0,0,248,204,204,204,248,192,192,192,7,9, + 9,8,0,255,56,108,198,198,198,214,108,60,2,6,8,8, + 7,0,0,248,204,204,204,248,204,204,204,6,8,8,7,0, + 0,120,204,224,120,28,140,204,120,6,8,8,7,0,0,252, + 48,48,48,48,48,48,48,6,8,8,7,0,0,204,204,204, + 204,204,204,204,120,7,8,8,8,0,0,198,198,108,108,108, + 56,56,16,10,8,16,11,0,0,204,192,204,192,204,192,109, + 128,109,128,127,128,51,0,51,0,7,8,8,8,0,0,198, + 198,108,56,56,108,198,198,8,8,8,9,0,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,252,12,24,48,112, + 96,192,252,3,10,10,4,0,254,224,192,192,192,192,192,192, + 192,192,224,4,8,8,4,0,0,128,128,64,64,32,32,16, + 16,3,10,10,4,0,254,224,96,96,96,96,96,96,96,96, + 224,4,4,4,5,0,4,96,240,144,144,6,1,1,6,0, + 254,252,2,2,2,3,0,7,128,64,6,6,6,6,0,0, + 112,152,120,216,216,108,5,8,8,6,0,0,192,192,240,216, + 216,216,216,240,4,6,6,5,0,0,112,208,192,192,208,112, + 5,8,8,6,0,0,24,24,120,216,216,216,216,120,5,6, + 6,6,0,0,112,216,248,192,216,112,5,8,8,4,255,0, + 56,96,240,96,96,96,96,96,5,8,8,6,0,254,104,216, + 216,216,216,120,24,112,5,8,8,6,0,0,192,192,240,216, + 216,216,216,216,2,8,8,3,0,0,192,0,192,192,192,192, + 192,192,3,10,10,3,255,254,96,0,96,96,96,96,96,96, + 96,192,6,8,8,6,0,0,192,192,216,240,224,240,216,204, + 2,8,8,3,0,0,192,192,192,192,192,192,192,192,8,6, + 6,9,0,0,182,219,219,219,219,219,5,6,6,6,0,0, + 176,216,216,216,216,216,5,6,6,6,0,0,112,216,216,216, + 216,112,5,8,8,6,0,254,176,216,216,216,216,240,192,192, + 5,8,8,6,0,254,104,216,216,216,216,120,24,24,4,6, + 6,4,0,0,176,224,192,192,192,192,5,6,6,6,0,0, + 112,216,112,24,216,112,4,8,8,4,255,0,96,96,240,96, + 96,96,96,48,5,6,6,6,0,0,216,216,216,216,216,104, + 5,6,6,6,0,0,216,216,216,80,112,32,7,6,6,8, + 0,0,214,214,214,108,108,108,6,6,6,7,0,0,204,120, + 48,120,204,204,5,8,8,6,0,254,216,216,216,216,120,48, + 48,96,5,6,6,6,0,0,248,24,48,96,192,248,4,10, + 10,5,0,254,48,96,96,96,192,96,96,96,96,48,1,10, + 10,3,1,254,128,128,128,128,128,128,128,128,128,128,4,10, + 10,5,0,254,192,96,96,96,48,96,96,96,96,192,5,2, + 2,6,0,3,104,176,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,3,0,1,2,8,8, + 4,1,254,192,0,64,64,192,192,192,192,5,8,8,6,0, + 255,16,112,216,160,160,216,112,64,5,8,8,6,0,0,56, + 104,96,240,96,96,104,216,6,6,6,6,0,1,132,120,72, + 72,120,132,6,8,8,7,0,0,132,132,204,72,252,48,252, + 48,1,10,10,3,1,254,128,128,128,128,0,0,128,128,128, + 128,5,10,10,6,0,254,112,200,224,112,152,200,112,56,152, + 112,3,1,1,3,0,7,160,8,8,8,10,1,0,60,66, + 153,165,161,157,66,60,3,5,5,5,1,3,224,32,160,0, + 224,6,3,3,7,0,1,108,216,108,5,3,3,7,1,2, + 248,8,8,4,1,1,5,0,3,240,8,8,8,10,1,0, + 60,66,189,165,185,165,66,60,3,1,1,3,0,7,224,3, + 3,3,4,0,5,96,160,192,6,7,7,6,0,0,48,48, + 252,48,48,0,252,3,4,4,3,0,4,96,160,64,224,3, + 4,4,3,0,4,224,64,32,192,2,2,2,3,0,7,64, + 128,5,8,8,6,0,254,216,216,216,216,216,232,192,192,6, + 10,10,6,0,254,124,232,232,232,104,40,40,40,40,40,2, + 1,1,3,0,3,192,2,2,2,3,0,254,64,192,2,4, + 4,3,0,4,64,192,64,64,3,5,5,5,1,3,224,160, + 224,0,224,6,3,3,7,0,1,216,108,216,8,8,8,9, + 0,0,68,196,72,72,18,38,47,66,7,8,8,9,0,0, + 68,196,72,72,22,42,36,78,8,8,8,9,0,0,228,68, + 40,200,18,38,47,66,5,8,8,6,0,254,48,0,48,48, + 96,192,216,112,7,11,11,8,0,0,32,16,0,56,56,108, + 108,108,254,198,198,7,11,11,8,0,0,8,16,0,56,56, + 108,108,108,254,198,198,7,11,11,8,0,0,16,40,0,56, + 56,108,108,108,254,198,198,7,11,11,8,0,0,20,40,0, + 56,56,108,108,108,254,198,198,7,10,10,8,0,0,40,0, + 56,56,108,108,108,254,198,198,7,11,11,8,0,0,16,40, + 16,56,56,108,108,108,254,198,198,9,8,16,10,0,0,63, + 128,60,0,108,0,111,128,108,0,252,0,204,0,207,128,7, + 10,10,8,0,254,60,102,194,192,192,194,102,60,16,48,5, + 11,11,6,0,0,64,32,0,248,192,192,248,192,192,192,248, + 5,11,11,6,0,0,16,32,0,248,192,192,248,192,192,192, + 248,5,11,11,6,0,0,32,80,0,248,192,192,248,192,192, + 192,248,5,10,10,6,0,0,80,0,248,192,192,248,192,192, + 192,248,2,11,11,3,0,0,128,64,0,192,192,192,192,192, + 192,192,192,2,11,11,3,0,0,64,128,0,192,192,192,192, + 192,192,192,192,3,11,11,3,255,0,64,160,0,96,96,96, + 96,96,96,96,96,4,10,10,3,255,0,144,0,96,96,96, + 96,96,96,96,96,7,8,8,7,255,0,120,108,102,246,102, + 102,108,120,7,11,11,8,0,0,20,40,0,198,230,230,214, + 214,206,206,198,7,11,11,8,0,0,16,8,0,56,108,198, + 198,198,198,108,56,7,11,11,8,0,0,8,16,0,56,108, + 198,198,198,198,108,56,7,11,11,8,0,0,16,40,0,56, + 108,198,198,198,198,108,56,7,11,11,8,0,0,20,40,0, + 56,108,198,198,198,198,108,56,7,10,10,8,0,0,40,0, + 56,108,198,198,198,198,108,56,6,5,5,6,0,1,204,120, + 48,120,204,7,8,8,8,0,0,58,108,206,214,214,230,108, + 184,6,11,11,7,0,0,32,16,0,204,204,204,204,204,204, + 204,120,6,11,11,7,0,0,8,16,0,204,204,204,204,204, + 204,204,120,6,11,11,7,0,0,32,80,0,204,204,204,204, + 204,204,204,120,6,10,10,7,0,0,72,0,204,204,204,204, + 204,204,204,120,8,11,11,9,0,0,4,8,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,192,248,204,204,204, + 248,192,192,5,8,8,6,0,0,112,200,200,208,200,200,200, + 208,6,9,9,6,0,0,32,16,0,112,152,120,216,216,108, + 6,9,9,6,0,0,16,32,0,112,152,120,216,216,108,6, + 9,9,6,0,0,32,80,0,112,152,120,216,216,108,6,9, + 9,6,0,0,40,80,0,112,152,120,216,216,108,6,8,8, + 6,0,0,80,0,112,152,120,216,216,108,6,9,9,6,0, + 0,32,80,32,112,152,120,216,216,108,8,6,6,9,0,0, + 126,155,127,216,219,110,4,8,8,5,0,254,112,208,192,192, + 208,112,32,96,5,9,9,6,0,0,64,32,0,112,216,248, + 192,216,112,5,9,9,6,0,0,16,32,0,112,216,248,192, + 216,112,5,9,9,6,0,0,32,80,0,112,216,248,192,216, + 112,5,8,8,6,0,0,80,0,112,216,248,192,216,112,2, + 9,9,3,0,0,128,64,0,192,192,192,192,192,192,2,9, + 9,3,0,0,64,128,0,192,192,192,192,192,192,3,9,9, + 3,0,0,64,160,0,192,192,192,192,192,192,3,8,8,3, + 0,0,160,0,192,192,192,192,192,192,5,9,9,6,0,0, + 80,96,160,112,216,216,216,216,112,5,9,9,6,0,0,80, + 160,0,176,216,216,216,216,216,5,9,9,6,0,0,64,32, + 0,112,216,216,216,216,112,5,9,9,6,0,0,16,32,0, + 112,216,216,216,216,112,5,9,9,6,0,0,32,80,0,112, + 216,216,216,216,112,5,9,9,6,0,0,80,160,0,112,216, + 216,216,216,112,5,8,8,6,0,0,80,0,112,216,216,216, + 216,112,6,5,5,6,0,1,48,0,252,0,48,7,6,6, + 6,255,0,58,108,124,108,108,184,5,9,9,6,0,0,64, + 32,0,216,216,216,216,216,104,5,9,9,6,0,0,16,32, + 0,216,216,216,216,216,104,5,9,9,6,0,0,32,80,0, + 216,216,216,216,216,104,5,8,8,6,0,0,80,0,216,216, + 216,216,216,104,5,11,11,6,0,254,16,32,0,216,216,216, + 216,120,48,48,96,5,10,10,6,0,254,192,192,240,216,200, + 200,216,240,192,192,5,10,10,6,0,254,80,0,216,216,216, + 216,120,48,48,96}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=10 x= 1 y= 7 dx=11 dy= 0 ascent= 9 len=18 + Font Bounding box w=12 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB08r[1287] U8G_SECTION(".progmem.u8g_font_helvB08r") = { + 0,12,19,255,251,8,1,182,3,122,32,127,254,9,254,8, + 254,0,0,0,3,0,1,2,8,8,4,1,0,192,192,192, + 192,128,128,0,192,3,3,3,5,1,5,160,160,160,7,7, + 7,6,255,0,40,40,126,40,252,80,80,5,10,10,6,0, + 255,32,112,168,224,112,56,40,168,112,32,7,8,8,8,0, + 0,98,180,104,16,16,44,86,140,7,8,8,8,0,0,112, + 216,216,112,222,204,220,118,1,3,3,3,1,5,128,128,128, + 3,10,10,4,0,254,32,96,64,192,192,192,192,64,96,32, + 3,10,10,4,0,254,128,192,64,96,96,96,96,64,192,128, + 3,3,3,4,0,5,160,64,160,6,5,5,6,0,1,48, + 48,252,48,48,2,4,4,3,0,254,192,192,64,128,4,1, + 1,5,0,3,240,2,2,2,3,0,0,192,192,4,8,8, + 4,0,0,16,16,32,32,64,64,128,128,5,8,8,6,0, + 0,112,216,216,216,216,216,216,112,3,8,8,6,1,0,96, + 224,96,96,96,96,96,96,5,8,8,6,0,0,112,216,24, + 24,48,96,192,248,5,8,8,6,0,0,112,216,24,48,24, + 24,216,112,6,8,8,6,0,0,8,24,56,88,152,252,24, + 24,5,8,8,6,0,0,248,192,192,240,24,152,216,112,5, + 8,8,6,0,0,112,216,192,240,216,216,216,112,5,8,8, + 6,0,0,248,24,24,48,48,96,96,96,5,8,8,6,0, + 0,112,216,216,112,216,216,216,112,5,8,8,6,0,0,112, + 216,216,216,120,24,216,112,2,6,6,3,0,0,192,192,0, + 0,192,192,2,8,8,3,0,254,192,192,0,0,192,192,64, + 128,4,5,5,5,0,1,48,96,192,96,48,5,3,3,6, + 0,2,248,0,248,4,5,5,5,0,1,192,96,48,96,192, + 5,8,8,6,0,0,112,216,24,48,96,96,0,96,10,9, + 18,11,0,255,31,0,96,128,77,64,146,64,162,64,164,128, + 155,0,64,0,62,0,7,8,8,8,0,0,56,56,108,108, + 108,254,198,198,6,8,8,7,0,0,248,204,204,248,204,204, + 204,248,7,8,8,8,0,0,60,102,194,192,192,194,102,60, + 6,8,8,7,0,0,240,216,204,204,204,204,216,240,5,8, + 8,6,0,0,248,192,192,248,192,192,192,248,5,8,8,6, + 0,0,248,192,192,240,192,192,192,192,7,8,8,8,0,0, + 60,102,194,192,206,198,102,58,6,8,8,7,0,0,204,204, + 204,252,204,204,204,204,2,8,8,3,0,0,192,192,192,192, + 192,192,192,192,5,8,8,6,0,0,24,24,24,24,24,24, + 216,112,7,8,8,7,0,0,204,216,240,224,240,216,204,198, + 5,8,8,6,0,0,192,192,192,192,192,192,192,248,9,8, + 16,10,0,0,193,128,227,128,227,128,247,128,213,128,221,128, + 201,128,201,128,7,8,8,8,0,0,198,230,230,214,214,206, + 206,198,7,8,8,8,0,0,56,108,198,198,198,198,108,56, + 6,8,8,7,0,0,248,204,204,204,248,192,192,192,7,9, + 9,8,0,255,56,108,198,198,198,214,108,60,2,6,8,8, + 7,0,0,248,204,204,204,248,204,204,204,6,8,8,7,0, + 0,120,204,224,120,28,140,204,120,6,8,8,7,0,0,252, + 48,48,48,48,48,48,48,6,8,8,7,0,0,204,204,204, + 204,204,204,204,120,7,8,8,8,0,0,198,198,108,108,108, + 56,56,16,10,8,16,11,0,0,204,192,204,192,204,192,109, + 128,109,128,127,128,51,0,51,0,7,8,8,8,0,0,198, + 198,108,56,56,108,198,198,8,8,8,9,0,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,252,12,24,48,112, + 96,192,252,3,10,10,4,0,254,224,192,192,192,192,192,192, + 192,192,224,4,8,8,4,0,0,128,128,64,64,32,32,16, + 16,3,10,10,4,0,254,224,96,96,96,96,96,96,96,96, + 224,4,4,4,5,0,4,96,240,144,144,6,1,1,6,0, + 254,252,2,2,2,3,0,7,128,64,6,6,6,6,0,0, + 112,152,120,216,216,108,5,8,8,6,0,0,192,192,240,216, + 216,216,216,240,4,6,6,5,0,0,112,208,192,192,208,112, + 5,8,8,6,0,0,24,24,120,216,216,216,216,120,5,6, + 6,6,0,0,112,216,248,192,216,112,5,8,8,4,255,0, + 56,96,240,96,96,96,96,96,5,8,8,6,0,254,104,216, + 216,216,216,120,24,112,5,8,8,6,0,0,192,192,240,216, + 216,216,216,216,2,8,8,3,0,0,192,0,192,192,192,192, + 192,192,3,10,10,3,255,254,96,0,96,96,96,96,96,96, + 96,192,6,8,8,6,0,0,192,192,216,240,224,240,216,204, + 2,8,8,3,0,0,192,192,192,192,192,192,192,192,8,6, + 6,9,0,0,182,219,219,219,219,219,5,6,6,6,0,0, + 176,216,216,216,216,216,5,6,6,6,0,0,112,216,216,216, + 216,112,5,8,8,6,0,254,176,216,216,216,216,240,192,192, + 5,8,8,6,0,254,104,216,216,216,216,120,24,24,4,6, + 6,4,0,0,176,224,192,192,192,192,5,6,6,6,0,0, + 112,216,112,24,216,112,4,8,8,4,255,0,96,96,240,96, + 96,96,96,48,5,6,6,6,0,0,216,216,216,216,216,104, + 5,6,6,6,0,0,216,216,216,80,112,32,7,6,6,8, + 0,0,214,214,214,108,108,108,6,6,6,7,0,0,204,120, + 48,120,204,204,5,8,8,6,0,254,216,216,216,216,120,48, + 48,96,5,6,6,6,0,0,248,24,48,96,192,248,4,10, + 10,5,0,254,48,96,96,96,192,96,96,96,96,48,1,10, + 10,3,1,254,128,128,128,128,128,128,128,128,128,128,4,10, + 10,5,0,254,192,96,96,96,48,96,96,96,96,192,5,2, + 2,6,0,3,104,176,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 2 y= 9 dx=15 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=23 x=-1 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB10[3692] U8G_SECTION(".progmem.u8g_font_helvB10") = { + 0,17,23,255,250,11,2,27,4,205,32,255,253,14,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,192,128,128,0,192,192,5,3,3,7,1,8,216,216, + 144,9,10,20,9,0,0,27,0,27,0,27,0,127,128,54, + 0,54,0,255,0,108,0,108,0,108,0,7,14,14,8,0, + 254,16,124,214,214,208,240,120,28,22,214,214,124,16,16,12, + 11,22,13,0,0,120,64,204,192,205,128,121,0,3,0,6, + 0,4,0,13,224,11,48,27,48,17,224,9,10,20,11,1, + 0,56,0,108,0,108,0,56,0,115,0,251,0,206,0,198, + 0,207,0,125,128,2,3,3,4,1,8,192,192,128,4,14, + 14,5,1,253,48,96,96,192,192,192,192,192,192,192,192,96, + 96,48,4,14,14,5,0,253,192,96,96,48,48,48,48,48, + 48,48,48,96,96,192,5,4,4,6,0,7,32,248,112,216, + 8,7,7,9,0,1,24,24,24,255,24,24,24,3,3,3, + 4,0,255,96,96,192,3,1,1,4,0,4,224,2,2,2, + 4,1,0,192,192,4,11,11,4,0,0,16,16,48,32,32, + 96,64,64,192,128,128,7,11,11,8,0,0,56,108,198,198, + 198,198,198,198,198,108,56,4,11,11,8,1,0,48,240,48, + 48,48,48,48,48,48,48,48,7,11,11,8,0,0,124,198, + 198,6,14,12,24,48,96,192,254,7,11,11,8,0,0,124, + 198,198,6,6,60,6,6,198,198,124,8,11,11,8,0,0, + 6,14,30,54,102,198,198,255,6,6,6,7,11,11,8,0, + 0,126,96,96,192,252,14,6,6,198,204,120,7,11,11,8, + 0,0,60,102,102,192,220,230,198,198,198,198,124,7,11,11, + 8,0,0,254,6,12,12,24,24,48,48,96,96,96,7,11, + 11,8,0,0,124,198,198,198,198,124,198,198,198,198,124,7, + 11,11,8,0,0,124,198,198,198,198,198,126,6,198,204,120, + 2,8,8,5,2,0,192,192,0,0,0,0,192,192,3,9, + 9,5,1,255,96,96,0,0,0,0,96,96,192,6,5,5, + 8,1,2,28,112,192,112,28,7,3,3,9,1,3,254,0, + 254,6,5,5,8,1,2,224,56,12,56,224,7,11,11,9, + 1,0,124,198,198,6,12,24,48,48,0,48,48,13,12,24, + 14,0,255,15,128,56,224,112,112,102,176,205,152,217,152,219, + 24,219,48,206,224,96,0,49,128,31,0,10,11,22,10,0, + 0,12,0,12,0,30,0,18,0,51,0,51,0,97,128,127, + 128,97,128,192,192,192,192,8,11,11,10,1,0,254,199,195, + 195,198,252,198,195,195,199,254,9,11,22,11,1,0,31,0, + 123,128,96,128,192,0,192,0,192,0,192,0,192,0,96,128, + 123,128,31,0,9,11,22,11,1,0,252,0,199,0,195,0, + 193,128,193,128,193,128,193,128,193,128,195,0,199,0,252,0, + 7,11,11,9,1,0,254,192,192,192,192,254,192,192,192,192, + 254,7,11,11,9,1,0,254,192,192,192,192,252,192,192,192, + 192,192,9,11,22,11,1,0,31,0,123,128,96,128,192,0, + 192,0,199,128,193,128,193,128,97,128,123,128,30,128,8,11, + 11,10,1,0,195,195,195,195,195,255,195,195,195,195,195,2, + 11,11,4,1,0,192,192,192,192,192,192,192,192,192,192,192, + 7,11,11,8,0,0,6,6,6,6,6,6,6,198,198,238, + 124,9,11,22,10,1,0,195,0,198,0,204,0,216,0,240, + 0,240,0,216,0,204,0,198,0,195,0,193,128,7,11,11, + 8,1,0,192,192,192,192,192,192,192,192,192,192,254,11,11, + 22,13,1,0,192,96,192,96,224,224,224,224,241,224,209,96, + 209,96,219,96,202,96,206,96,196,96,9,11,22,11,1,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,11,22,12,1,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,97,128,115,128, + 30,0,8,11,11,10,1,0,254,199,195,195,199,254,192,192, + 192,192,192,10,11,22,12,1,0,30,0,115,128,97,128,192, + 192,192,192,192,192,192,192,198,192,99,128,115,128,30,192,9, + 11,22,11,1,0,254,0,199,0,195,0,195,0,198,0,254, + 0,199,0,195,0,195,0,195,0,193,128,8,11,11,10,1, + 0,126,231,195,224,120,30,7,3,195,238,124,8,11,11,8, + 0,0,255,24,24,24,24,24,24,24,24,24,24,9,11,22, + 11,1,0,193,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,10,11,22,10,0,0,192, + 192,192,192,97,128,97,128,115,128,51,0,51,0,30,0,30, + 0,12,0,12,0,14,11,22,14,0,0,195,12,195,12,195, + 12,103,152,100,152,100,152,108,216,44,208,56,112,24,96,24, + 96,9,11,22,9,0,0,193,128,193,128,99,0,54,0,28, + 0,28,0,54,0,99,0,99,0,193,128,193,128,10,11,22, + 10,0,0,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,12,0,12,0,8,11,11,9,0,0,255, + 3,6,12,28,24,48,112,96,192,255,4,14,14,5,1,253, + 240,192,192,192,192,192,192,192,192,192,192,192,192,240,4,11, + 11,4,0,0,128,128,192,64,64,96,32,32,48,16,16,4, + 14,14,5,0,253,240,48,48,48,48,48,48,48,48,48,48, + 48,48,240,6,5,5,8,1,6,48,120,72,204,204,8,1, + 1,8,0,253,255,3,2,2,5,1,9,192,96,7,8,8, + 8,1,0,120,204,12,124,204,204,220,118,7,11,11,9,1, + 0,192,192,192,216,236,198,198,198,198,236,216,6,8,8,8, + 1,0,56,108,204,192,192,204,108,56,7,11,11,9,1,0, + 6,6,6,54,110,198,198,198,198,110,54,6,8,8,8,1, + 0,120,204,204,252,192,192,236,120,5,11,11,4,0,0,56, + 96,96,240,96,96,96,96,96,96,96,7,11,11,9,1,253, + 58,110,198,198,198,198,110,54,6,206,124,7,11,11,9,1, + 0,192,192,192,220,238,198,198,198,198,198,198,2,11,11,4, + 1,0,192,192,0,192,192,192,192,192,192,192,192,3,14,14, + 4,0,253,96,96,0,96,96,96,96,96,96,96,96,96,224, + 192,6,11,11,8,1,0,192,192,192,204,216,240,240,216,216, + 204,204,2,11,11,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,10,8,16,12,1,0,219,128,238,192,204,192,204, + 192,204,192,204,192,204,192,204,192,7,8,8,9,1,0,220, + 238,198,198,198,198,198,198,7,8,8,9,1,0,56,108,198, + 198,198,198,108,56,7,11,11,9,1,253,216,236,198,198,198, + 198,236,216,192,192,192,7,11,11,9,1,253,54,110,198,198, + 198,198,110,54,6,6,6,5,8,8,6,1,0,216,248,192, + 192,192,192,192,192,6,8,8,8,1,0,120,204,224,120,28, + 12,236,120,5,10,10,5,0,0,96,96,248,96,96,96,96, + 96,104,48,7,8,8,9,1,0,198,198,198,198,198,198,238, + 118,8,8,8,8,0,0,195,195,102,102,36,60,24,24,10, + 8,16,10,0,0,204,192,204,192,204,192,109,128,109,128,51, + 0,51,0,51,0,7,8,8,7,0,0,198,198,108,56,56, + 108,198,198,8,11,11,8,0,253,195,195,102,102,36,60,24, + 24,24,48,112,6,8,8,6,0,0,252,12,24,48,48,96, + 192,252,5,14,14,6,0,253,24,48,48,48,48,96,192,96, + 48,48,48,48,48,24,1,14,14,4,2,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,5,14,14,6,1,253, + 192,96,96,96,96,48,24,48,96,96,96,96,96,192,7,3, + 3,9,1,3,114,222,140,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,1,2,11, + 11,4,1,253,192,192,0,64,64,192,192,192,192,192,192,7, + 10,10,8,0,255,4,60,110,200,208,208,230,102,124,64,8, + 11,11,8,0,0,60,102,102,96,252,48,48,48,96,251,222, + 7,7,7,8,0,2,130,124,108,108,108,124,130,8,11,11, + 9,0,0,195,195,195,102,102,60,126,24,126,24,24,1,14, + 14,4,2,253,128,128,128,128,128,128,0,0,128,128,128,128, + 128,128,6,14,14,8,1,253,120,204,204,224,120,220,204,204, + 236,120,28,204,204,120,5,2,2,5,0,9,216,216,10,11, + 22,12,1,0,30,0,97,128,76,128,210,192,144,64,144,64, + 144,64,146,64,76,128,97,128,30,0,5,7,7,6,0,4, + 112,144,112,208,248,0,248,7,5,5,9,1,2,54,108,216, + 108,54,7,4,4,9,1,2,254,254,2,2,3,1,1,4, + 0,4,224,10,11,22,12,1,0,30,0,97,128,92,128,146, + 64,146,64,156,64,146,64,146,64,82,128,97,128,30,0,5, + 1,1,5,0,9,248,4,4,4,6,1,7,96,144,144,96, + 8,9,9,9,0,0,24,24,24,255,24,24,24,0,255,4, + 6,6,5,0,5,96,176,48,96,192,240,4,6,6,5,0, + 5,96,176,96,48,176,96,3,2,2,5,1,9,96,192,7, + 11,11,9,1,253,198,198,198,198,198,198,238,246,192,192,192, + 8,14,14,8,0,253,63,122,250,250,250,122,58,10,10,10, + 10,10,10,10,2,2,2,4,1,3,192,192,5,3,3,5, + 0,253,24,216,112,3,6,6,4,0,5,96,224,96,96,96, + 96,5,7,7,6,0,4,112,216,216,216,112,0,248,7,5, + 5,9,1,2,216,108,54,108,216,12,11,22,12,0,0,97, + 128,225,128,99,0,99,0,102,0,102,32,6,96,12,224,13, + 96,25,240,24,96,11,11,22,12,0,0,97,128,225,128,99, + 0,99,0,102,0,102,192,7,96,12,96,12,192,25,128,25, + 224,12,11,22,12,0,0,97,128,177,128,99,0,51,0,182, + 0,102,32,6,96,12,224,13,96,25,240,24,96,7,11,11, + 9,1,253,24,24,0,24,24,48,96,192,198,198,124,10,14, + 28,10,0,0,24,0,12,0,0,0,12,0,12,0,30,0, + 18,0,51,0,51,0,97,128,127,128,97,128,192,192,192,192, + 10,14,28,10,0,0,6,0,12,0,0,0,12,0,12,0, + 30,0,18,0,51,0,51,0,97,128,127,128,97,128,192,192, + 192,192,10,14,28,10,0,0,14,0,27,0,0,0,12,0, + 12,0,30,0,18,0,51,0,51,0,97,128,127,128,97,128, + 192,192,192,192,10,14,28,10,0,0,13,0,22,0,0,0, + 12,0,12,0,30,0,18,0,51,0,51,0,97,128,127,128, + 97,128,192,192,192,192,10,14,28,10,0,0,51,0,51,0, + 0,0,12,0,12,0,30,0,18,0,51,0,51,0,97,128, + 127,128,97,128,192,192,192,192,10,14,28,10,0,0,12,0, + 18,0,12,0,12,0,12,0,30,0,18,0,51,0,51,0, + 97,128,127,128,97,128,192,192,192,192,14,11,22,15,0,0, + 15,252,15,0,27,0,19,0,51,0,51,248,99,0,127,0, + 99,0,195,0,195,252,9,14,28,11,1,253,31,0,123,128, + 96,128,192,0,192,0,192,0,192,0,192,0,96,128,123,128, + 31,0,6,0,54,0,28,0,7,14,14,9,1,0,48,24, + 0,254,192,192,192,192,254,192,192,192,192,254,7,14,14,9, + 1,0,12,24,0,254,192,192,192,192,254,192,192,192,192,254, + 7,14,14,9,1,0,28,54,0,254,192,192,192,192,254,192, + 192,192,192,254,7,14,14,9,1,0,108,108,0,254,192,192, + 192,192,254,192,192,192,192,254,3,14,14,4,0,0,192,96, + 0,96,96,96,96,96,96,96,96,96,96,96,3,14,14,4, + 1,0,96,192,0,192,192,192,192,192,192,192,192,192,192,192, + 5,14,14,4,0,0,112,216,0,96,96,96,96,96,96,96, + 96,96,96,96,5,14,14,4,0,0,216,216,0,96,96,96, + 96,96,96,96,96,96,96,96,10,11,22,11,0,0,126,0, + 99,128,97,128,96,192,96,192,248,192,96,192,96,192,97,128, + 99,128,126,0,9,14,28,11,1,0,26,0,44,0,0,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,14,28,12,1,0,24,0,12,0, + 0,0,30,0,115,128,97,128,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,14,28,12,1,0,6,0, + 12,0,0,0,30,0,115,128,97,128,192,192,192,192,192,192, + 192,192,192,192,97,128,115,128,30,0,10,14,28,12,1,0, + 14,0,27,0,0,0,30,0,115,128,97,128,192,192,192,192, + 192,192,192,192,192,192,97,128,115,128,30,0,10,14,28,12, + 1,0,13,0,22,0,0,0,30,0,115,128,97,128,192,192, + 192,192,192,192,192,192,192,192,97,128,115,128,30,0,10,14, + 28,12,1,0,51,0,51,0,0,0,30,0,115,128,97,128, + 192,192,192,192,192,192,192,192,192,192,97,128,115,128,30,0, + 8,7,7,9,0,1,195,102,60,24,60,102,195,12,11,22, + 12,0,0,15,48,57,224,48,192,97,224,99,96,102,96,108, + 96,120,96,48,192,121,192,207,0,9,14,28,11,1,0,24, + 0,12,0,0,0,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,0,62,0,9,14,28,11,1, + 0,6,0,12,0,0,0,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,99,0,62,0,9,14,28, + 11,1,0,28,0,54,0,0,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,193,128,99,0,62,0,9, + 14,28,11,1,0,99,0,99,0,0,0,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,10,0,0,6,0,12,0,0,0,192,192,97, + 128,97,128,51,0,51,0,30,0,30,0,12,0,12,0,12, + 0,12,0,8,11,11,10,1,0,192,192,254,199,195,195,199, + 254,192,192,192,6,11,11,8,1,0,120,204,204,204,216,216, + 204,204,204,204,216,7,11,11,8,1,0,48,24,0,120,204, + 12,124,204,204,220,118,7,11,11,8,1,0,24,48,0,120, + 204,12,124,204,204,220,118,7,11,11,8,1,0,56,108,0, + 120,204,12,124,204,204,220,118,7,11,11,8,1,0,52,88, + 0,120,204,12,124,204,204,220,118,7,11,11,8,1,0,108, + 108,0,120,204,12,124,204,204,220,118,7,11,11,8,1,0, + 48,72,48,120,204,12,124,204,204,220,118,11,8,16,13,1, + 0,123,192,206,96,12,96,127,224,204,0,204,0,222,96,119, + 192,7,11,11,9,1,253,60,102,198,192,192,198,102,60,24, + 88,112,6,11,11,8,1,0,96,48,0,120,204,204,252,192, + 192,236,120,6,11,11,8,1,0,24,48,0,120,204,204,252, + 192,192,236,120,6,11,11,8,1,0,56,108,0,120,204,204, + 252,192,192,236,120,6,11,11,8,1,0,108,108,0,120,204, + 204,252,192,192,236,120,3,11,11,4,0,0,192,96,0,96, + 96,96,96,96,96,96,96,3,11,11,4,1,0,96,192,0, + 192,192,192,192,192,192,192,192,5,11,11,4,0,0,112,216, + 0,96,96,96,96,96,96,96,96,5,11,11,4,0,0,216, + 216,0,96,96,96,96,96,96,96,96,7,11,11,9,1,0, + 108,56,72,60,108,198,198,198,198,108,56,7,11,11,9,1, + 0,52,88,0,220,238,198,198,198,198,198,198,7,11,11,9, + 1,0,48,24,0,56,108,198,198,198,198,108,56,7,11,11, + 9,1,0,24,48,0,56,108,198,198,198,198,108,56,7,11, + 11,9,1,0,56,108,0,56,108,198,198,198,198,108,56,7, + 11,11,9,1,0,52,88,0,56,108,198,198,198,198,108,56, + 7,11,11,9,1,0,108,108,0,56,108,198,198,198,198,108, + 56,8,7,7,9,0,1,24,24,0,255,0,24,24,7,8, + 8,9,1,0,58,108,206,214,214,230,108,184,7,11,11,9, + 1,0,48,24,0,198,198,198,198,198,198,238,118,7,11,11, + 9,1,0,12,24,0,198,198,198,198,198,198,238,118,7,11, + 11,9,1,0,56,108,0,198,198,198,198,198,198,238,118,7, + 11,11,9,1,0,108,108,0,198,198,198,198,198,198,238,118, + 8,14,14,8,0,253,12,24,0,195,195,102,102,36,60,24, + 24,24,48,112,7,14,14,9,1,253,192,192,192,216,236,198, + 198,198,198,236,216,192,192,192,8,14,14,8,0,253,54,54, + 0,195,195,102,102,36,60,24,24,24,48,112}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 2 y= 9 dx=14 dy= 0 ascent=12 len=24 + Font Bounding box w=17 h=23 x=-1 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB10r[1720] U8G_SECTION(".progmem.u8g_font_helvB10r") = { + 0,17,23,255,250,11,2,27,4,205,32,127,253,12,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,192,128,128,0,192,192,5,3,3,7,1,8,216,216, + 144,9,10,20,9,0,0,27,0,27,0,27,0,127,128,54, + 0,54,0,255,0,108,0,108,0,108,0,7,14,14,8,0, + 254,16,124,214,214,208,240,120,28,22,214,214,124,16,16,12, + 11,22,13,0,0,120,64,204,192,205,128,121,0,3,0,6, + 0,4,0,13,224,11,48,27,48,17,224,9,10,20,11,1, + 0,56,0,108,0,108,0,56,0,115,0,251,0,206,0,198, + 0,207,0,125,128,2,3,3,4,1,8,192,192,128,4,14, + 14,5,1,253,48,96,96,192,192,192,192,192,192,192,192,96, + 96,48,4,14,14,5,0,253,192,96,96,48,48,48,48,48, + 48,48,48,96,96,192,5,4,4,6,0,7,32,248,112,216, + 8,7,7,9,0,1,24,24,24,255,24,24,24,3,3,3, + 4,0,255,96,96,192,3,1,1,4,0,4,224,2,2,2, + 4,1,0,192,192,4,11,11,4,0,0,16,16,48,32,32, + 96,64,64,192,128,128,7,11,11,8,0,0,56,108,198,198, + 198,198,198,198,198,108,56,4,11,11,8,1,0,48,240,48, + 48,48,48,48,48,48,48,48,7,11,11,8,0,0,124,198, + 198,6,14,12,24,48,96,192,254,7,11,11,8,0,0,124, + 198,198,6,6,60,6,6,198,198,124,8,11,11,8,0,0, + 6,14,30,54,102,198,198,255,6,6,6,7,11,11,8,0, + 0,126,96,96,192,252,14,6,6,198,204,120,7,11,11,8, + 0,0,60,102,102,192,220,230,198,198,198,198,124,7,11,11, + 8,0,0,254,6,12,12,24,24,48,48,96,96,96,7,11, + 11,8,0,0,124,198,198,198,198,124,198,198,198,198,124,7, + 11,11,8,0,0,124,198,198,198,198,198,126,6,198,204,120, + 2,8,8,5,2,0,192,192,0,0,0,0,192,192,3,9, + 9,5,1,255,96,96,0,0,0,0,96,96,192,6,5,5, + 8,1,2,28,112,192,112,28,7,3,3,9,1,3,254,0, + 254,6,5,5,8,1,2,224,56,12,56,224,7,11,11,9, + 1,0,124,198,198,6,12,24,48,48,0,48,48,13,12,24, + 14,0,255,15,128,56,224,112,112,102,176,205,152,217,152,219, + 24,219,48,206,224,96,0,49,128,31,0,10,11,22,10,0, + 0,12,0,12,0,30,0,18,0,51,0,51,0,97,128,127, + 128,97,128,192,192,192,192,8,11,11,10,1,0,254,199,195, + 195,198,252,198,195,195,199,254,9,11,22,11,1,0,31,0, + 123,128,96,128,192,0,192,0,192,0,192,0,192,0,96,128, + 123,128,31,0,9,11,22,11,1,0,252,0,199,0,195,0, + 193,128,193,128,193,128,193,128,193,128,195,0,199,0,252,0, + 7,11,11,9,1,0,254,192,192,192,192,254,192,192,192,192, + 254,7,11,11,9,1,0,254,192,192,192,192,252,192,192,192, + 192,192,9,11,22,11,1,0,31,0,123,128,96,128,192,0, + 192,0,199,128,193,128,193,128,97,128,123,128,30,128,8,11, + 11,10,1,0,195,195,195,195,195,255,195,195,195,195,195,2, + 11,11,4,1,0,192,192,192,192,192,192,192,192,192,192,192, + 7,11,11,8,0,0,6,6,6,6,6,6,6,198,198,238, + 124,9,11,22,10,1,0,195,0,198,0,204,0,216,0,240, + 0,240,0,216,0,204,0,198,0,195,0,193,128,7,11,11, + 8,1,0,192,192,192,192,192,192,192,192,192,192,254,11,11, + 22,13,1,0,192,96,192,96,224,224,224,224,241,224,209,96, + 209,96,219,96,202,96,206,96,196,96,9,11,22,11,1,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,11,22,12,1,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,97,128,115,128, + 30,0,8,11,11,10,1,0,254,199,195,195,199,254,192,192, + 192,192,192,10,11,22,12,1,0,30,0,115,128,97,128,192, + 192,192,192,192,192,192,192,198,192,99,128,115,128,30,192,9, + 11,22,11,1,0,254,0,199,0,195,0,195,0,198,0,254, + 0,199,0,195,0,195,0,195,0,193,128,8,11,11,10,1, + 0,126,231,195,224,120,30,7,3,195,238,124,8,11,11,8, + 0,0,255,24,24,24,24,24,24,24,24,24,24,9,11,22, + 11,1,0,193,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,10,11,22,10,0,0,192, + 192,192,192,97,128,97,128,115,128,51,0,51,0,30,0,30, + 0,12,0,12,0,14,11,22,14,0,0,195,12,195,12,195, + 12,103,152,100,152,100,152,108,216,44,208,56,112,24,96,24, + 96,9,11,22,9,0,0,193,128,193,128,99,0,54,0,28, + 0,28,0,54,0,99,0,99,0,193,128,193,128,10,11,22, + 10,0,0,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,12,0,12,0,8,11,11,9,0,0,255, + 3,6,12,28,24,48,112,96,192,255,4,14,14,5,1,253, + 240,192,192,192,192,192,192,192,192,192,192,192,192,240,4,11, + 11,4,0,0,128,128,192,64,64,96,32,32,48,16,16,4, + 14,14,5,0,253,240,48,48,48,48,48,48,48,48,48,48, + 48,48,240,6,5,5,8,1,6,48,120,72,204,204,8,1, + 1,8,0,253,255,3,2,2,5,1,9,192,96,7,8,8, + 8,1,0,120,204,12,124,204,204,220,118,7,11,11,9,1, + 0,192,192,192,216,236,198,198,198,198,236,216,6,8,8,8, + 1,0,56,108,204,192,192,204,108,56,7,11,11,9,1,0, + 6,6,6,54,110,198,198,198,198,110,54,6,8,8,8,1, + 0,120,204,204,252,192,192,236,120,5,11,11,4,0,0,56, + 96,96,240,96,96,96,96,96,96,96,7,11,11,9,1,253, + 58,110,198,198,198,198,110,54,6,206,124,7,11,11,9,1, + 0,192,192,192,220,238,198,198,198,198,198,198,2,11,11,4, + 1,0,192,192,0,192,192,192,192,192,192,192,192,3,14,14, + 4,0,253,96,96,0,96,96,96,96,96,96,96,96,96,224, + 192,6,11,11,8,1,0,192,192,192,204,216,240,240,216,216, + 204,204,2,11,11,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,10,8,16,12,1,0,219,128,238,192,204,192,204, + 192,204,192,204,192,204,192,204,192,7,8,8,9,1,0,220, + 238,198,198,198,198,198,198,7,8,8,9,1,0,56,108,198, + 198,198,198,108,56,7,11,11,9,1,253,216,236,198,198,198, + 198,236,216,192,192,192,7,11,11,9,1,253,54,110,198,198, + 198,198,110,54,6,6,6,5,8,8,6,1,0,216,248,192, + 192,192,192,192,192,6,8,8,8,1,0,120,204,224,120,28, + 12,236,120,5,10,10,5,0,0,96,96,248,96,96,96,96, + 96,104,48,7,8,8,9,1,0,198,198,198,198,198,198,238, + 118,8,8,8,8,0,0,195,195,102,102,36,60,24,24,10, + 8,16,10,0,0,204,192,204,192,204,192,109,128,109,128,51, + 0,51,0,51,0,7,8,8,7,0,0,198,198,108,56,56, + 108,198,198,8,11,11,8,0,253,195,195,102,102,36,60,24, + 24,24,48,112,6,8,8,6,0,0,252,12,24,48,48,96, + 192,252,5,14,14,6,0,253,24,48,48,48,48,96,192,96, + 48,48,48,48,48,24,1,14,14,4,2,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,5,14,14,6,1,253, + 192,96,96,96,96,48,24,48,96,96,96,96,96,192,7,3, + 3,9,1,3,114,222,140,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=17 x= 2 y=10 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=27 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB12[4077] U8G_SECTION(".progmem.u8g_font_helvB12") = { + 0,20,27,254,249,12,2,74,5,106,32,255,252,16,252,12, + 252,0,0,0,5,0,1,2,12,12,6,2,0,192,192,192, + 192,192,192,128,128,128,0,192,192,5,4,4,8,1,8,216, + 216,216,72,9,12,24,9,0,0,27,0,27,0,27,0,127, + 128,127,128,54,0,54,0,255,0,255,0,108,0,108,0,108, + 0,7,14,14,9,1,255,16,124,254,214,208,240,120,60,30, + 22,214,254,124,16,13,12,24,14,0,0,48,64,120,128,204, + 128,205,0,121,0,50,0,2,96,4,240,5,152,9,152,8, + 240,16,96,10,12,24,12,1,0,60,0,126,0,102,0,102, + 0,60,0,56,192,125,192,207,128,199,0,199,0,127,128,57, + 192,2,4,4,4,1,8,192,192,192,64,4,15,15,6,1, + 253,48,112,96,192,192,192,192,192,192,192,192,192,96,112,48, + 4,15,15,6,0,253,192,224,96,48,48,48,48,48,48,48, + 48,48,96,224,192,5,5,5,6,0,7,32,168,112,112,136, + 8,8,8,10,1,0,24,24,24,255,255,24,24,24,2,5, + 5,4,1,253,192,192,64,64,128,4,2,2,5,0,3,240, + 240,2,2,2,4,1,0,192,192,4,12,12,5,0,0,16, + 16,48,32,32,96,64,64,192,128,128,128,8,12,12,9,0, + 0,60,126,231,195,195,195,195,195,195,231,126,60,5,12,12, + 9,1,0,8,24,248,248,24,24,24,24,24,24,24,24,8, + 12,12,9,0,0,60,126,231,195,195,7,14,28,56,112,255, + 255,8,12,12,9,0,0,60,126,231,195,7,30,30,7,195, + 231,126,60,8,12,12,9,0,0,14,30,54,54,102,102,198, + 255,255,6,6,6,8,12,12,9,0,0,63,63,48,48,124, + 126,71,3,3,231,126,60,8,12,12,9,0,0,60,126,231, + 192,220,254,231,195,195,231,126,60,8,12,12,9,0,0,255, + 255,6,6,12,12,24,24,24,48,48,48,8,12,12,9,0, + 0,60,126,231,195,102,60,126,231,195,231,126,60,8,12,12, + 9,0,0,60,126,231,195,195,231,127,59,3,231,126,60,2, + 8,8,5,2,0,192,192,0,0,0,0,192,192,2,11,11, + 5,2,253,192,192,0,0,0,0,192,192,64,64,128,8,8, + 8,10,1,0,3,15,60,224,224,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,0,192,240, + 60,7,7,60,240,192,7,12,12,10,1,0,124,254,198,198, + 6,14,12,24,24,0,24,24,13,14,28,16,1,254,15,192, + 56,96,96,16,71,216,204,72,136,200,152,200,152,136,153,152, + 201,144,70,96,96,0,56,192,15,128,11,12,24,12,0,0, + 14,0,14,0,31,0,27,0,59,128,49,128,113,192,96,192, + 127,192,255,224,192,96,192,96,9,12,24,11,1,0,254,0, + 255,0,195,128,193,128,195,128,255,0,255,0,195,128,193,128, + 195,128,255,0,254,0,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,10,12,24,12,1,0,252,0,255,0,195,128, + 193,128,193,192,192,192,192,192,193,192,193,128,195,128,255,0, + 252,0,8,12,12,10,1,0,255,255,192,192,192,254,254,192, + 192,192,255,255,8,12,12,10,1,0,255,255,192,192,192,254, + 254,192,192,192,192,192,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,195,192,227,192,96,192,113,192, + 63,192,30,192,10,12,24,12,1,0,192,192,192,192,192,192, + 192,192,255,192,255,192,192,192,192,192,192,192,192,192,192,192, + 192,192,2,12,12,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,7,12,12,9,1,0,6,6,6,6,6,6, + 6,6,198,198,254,124,11,12,24,12,1,0,193,192,195,128, + 199,0,206,0,220,0,248,0,252,0,206,0,199,0,195,128, + 193,192,192,224,8,12,12,10,1,0,192,192,192,192,192,192, + 192,192,192,192,255,255,11,12,24,13,1,0,224,224,224,224, + 224,224,241,224,241,224,209,96,219,96,219,96,202,96,206,96, + 206,96,196,96,10,12,24,12,1,0,224,192,240,192,240,192, + 216,192,216,192,204,192,204,192,198,192,198,192,195,192,195,192, + 193,192,11,12,24,13,1,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 9,12,24,11,1,0,254,0,255,0,195,128,193,128,193,128, + 195,128,255,0,254,0,192,0,192,0,192,0,192,0,11,13, + 26,13,1,255,31,0,63,128,113,192,96,192,224,224,192,96, + 192,96,226,96,103,192,115,192,63,128,31,192,0,128,10,12, + 24,12,1,0,255,0,255,128,193,128,193,128,195,128,255,0, + 255,0,195,128,193,128,193,128,193,192,193,192,9,12,24,11, + 1,0,62,0,127,0,227,128,193,128,240,0,126,0,31,0, + 3,128,193,128,227,128,127,0,62,0,10,12,24,10,0,0, + 255,192,255,192,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,10,12,24,12,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,12,24,11,0,0,192,192,192,192, + 97,128,97,128,97,128,51,0,51,0,51,0,30,0,30,0, + 12,0,12,0,14,12,24,15,0,0,195,12,195,12,195,12, + 99,24,103,152,103,152,52,176,60,240,60,240,24,96,24,96, + 24,96,9,12,24,11,1,0,193,128,227,128,99,0,54,0, + 62,0,28,0,28,0,62,0,54,0,99,0,227,128,193,128, + 10,12,24,11,0,0,192,192,225,192,97,128,51,0,51,0, + 30,0,30,0,12,0,12,0,12,0,12,0,12,0,8,12, + 12,10,1,0,255,255,7,6,12,28,56,48,96,224,255,255, + 4,15,15,6,1,253,240,240,192,192,192,192,192,192,192,192, + 192,192,192,240,240,4,12,12,5,0,0,128,128,192,64,64, + 96,32,32,48,16,16,16,4,15,15,6,0,253,240,240,48, + 48,48,48,48,48,48,48,48,48,48,240,240,8,7,7,10, + 1,5,24,24,60,102,102,195,195,9,1,2,9,0,253,255, + 128,3,3,3,6,2,10,128,192,32,8,9,9,9,1,0, + 124,254,198,14,126,230,198,254,119,8,12,12,10,1,0,192, + 192,192,220,254,231,195,195,195,231,254,220,8,9,9,9,1, + 0,60,126,231,192,192,192,231,126,60,8,12,12,10,1,0, + 3,3,3,63,127,231,195,195,195,231,127,59,8,9,9,10, + 1,0,60,126,195,255,255,192,231,126,60,4,12,12,6,1, + 0,48,112,96,240,240,96,96,96,96,96,96,96,8,13,13, + 10,1,252,59,127,231,195,195,195,231,127,59,3,231,126,60, + 8,12,12,10,1,0,192,192,192,222,255,227,195,195,195,195, + 195,195,2,12,12,4,1,0,192,192,0,192,192,192,192,192, + 192,192,192,192,3,16,16,5,1,252,96,96,0,96,96,96, + 96,96,96,96,96,96,96,96,224,192,8,12,12,9,1,0, + 192,192,192,199,206,220,248,252,236,206,198,199,2,12,12,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,192,12,9, + 18,14,1,0,222,224,255,240,231,48,198,48,198,48,198,48, + 198,48,198,48,198,48,8,9,9,10,1,0,222,255,227,195, + 195,195,195,195,195,8,9,9,10,1,0,60,126,231,195,195, + 195,231,126,60,8,13,13,10,1,252,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,13,13,10,1,252,59,127,231, + 195,195,195,231,127,59,3,3,3,3,5,9,9,6,1,0, + 216,248,224,192,192,192,192,192,192,7,9,9,9,1,0,124, + 254,198,240,124,14,198,254,124,4,11,11,6,1,0,96,96, + 240,240,96,96,96,96,96,112,48,8,9,9,10,1,0,195, + 195,195,195,195,195,199,255,123,8,9,9,9,0,0,195,195, + 102,102,102,60,60,24,24,12,9,18,13,0,0,198,48,198, + 48,102,96,102,96,111,96,63,192,57,192,25,128,25,128,7, + 9,9,9,1,0,198,198,108,124,56,124,108,198,198,8,13, + 13,9,0,252,195,195,99,102,54,54,60,28,24,24,24,112, + 96,7,9,9,8,0,0,254,254,14,28,24,56,112,254,254, + 4,15,15,6,1,253,48,112,96,96,96,96,96,192,96,96, + 96,96,96,112,48,1,16,16,4,1,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,192,224,96,96,96,96,96,48,96,96,96,96,96,224,192, + 8,3,3,10,1,3,113,153,142,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,5,0,1, + 2,12,12,6,1,253,192,192,0,64,64,64,192,192,192,192, + 192,192,8,11,11,9,0,255,4,60,126,239,200,216,208,247, + 126,60,32,8,12,12,9,0,0,28,62,99,99,96,48,124, + 48,48,32,127,255,7,7,7,9,1,2,186,124,198,198,198, + 124,186,8,12,12,9,0,0,195,195,102,102,60,24,126,24, + 126,24,24,24,1,16,16,5,2,252,128,128,128,128,128,128, + 128,0,0,128,128,128,128,128,128,128,8,15,15,9,0,253, + 60,126,102,96,120,126,199,195,243,126,30,6,102,126,60,5, + 2,2,6,0,10,216,216,12,12,24,12,0,0,15,0,57, + 192,96,96,79,32,217,176,144,16,144,16,217,176,79,32,96, + 32,57,192,15,0,5,7,7,6,1,5,96,144,112,144,120, + 0,248,8,6,6,9,0,2,51,102,204,204,102,51,8,5, + 5,10,0,2,255,255,3,3,3,4,2,2,5,0,3,240, + 240,12,12,24,12,0,0,15,0,57,192,96,96,95,32,217, + 176,153,144,158,16,219,48,91,32,96,96,57,192,15,0,5, + 1,1,6,0,10,248,4,5,5,7,1,7,96,144,144,144, + 96,8,11,11,10,1,0,24,24,24,255,255,24,24,24,0, + 255,255,5,7,7,6,0,5,112,216,216,48,96,248,248,5, + 7,7,6,0,5,112,216,24,48,24,216,112,3,3,3,6, + 1,10,32,96,128,8,12,12,10,1,253,195,195,195,195,195, + 195,199,255,251,192,192,192,8,15,15,9,0,253,127,242,242, + 242,242,242,114,18,18,18,18,18,18,18,18,2,2,2,5, + 1,4,192,192,5,4,4,6,0,252,32,48,152,112,4,7, + 7,6,1,5,48,240,240,48,48,48,48,5,7,7,6,0, + 5,112,216,136,216,112,0,248,8,6,6,9,1,2,204,102, + 51,51,102,204,13,12,24,14,1,0,48,192,240,128,241,128, + 49,0,51,48,50,112,54,240,4,176,13,176,9,248,24,48, + 16,48,12,12,24,14,0,0,48,128,241,128,241,0,51,0, + 50,0,54,224,53,176,13,176,8,96,24,192,17,240,49,240, + 13,12,24,14,0,0,112,64,216,192,24,128,49,128,25,48, + 219,112,114,240,6,176,5,176,13,248,8,48,24,48,7,12, + 12,10,1,253,48,48,0,48,48,96,224,192,198,198,254,124, + 11,16,32,12,0,0,16,0,24,0,4,0,0,0,14,0, + 14,0,31,0,27,0,59,128,49,128,113,192,96,192,127,192, + 255,224,192,96,192,96,11,16,32,12,0,0,2,0,6,0, + 8,0,0,0,14,0,14,0,31,0,27,0,59,128,49,128, + 113,192,96,192,127,192,255,224,192,96,192,96,11,16,32,12, + 0,0,4,0,14,0,17,0,0,0,14,0,14,0,31,0, + 27,0,59,128,49,128,113,192,96,192,127,192,255,224,192,96, + 192,96,11,15,30,12,0,0,14,128,23,0,0,0,14,0, + 14,0,31,0,27,0,59,128,49,128,113,192,96,192,127,192, + 255,224,192,96,192,96,11,15,30,12,0,0,49,128,49,128, + 0,0,14,0,14,0,31,0,27,0,59,128,49,128,113,192, + 96,192,127,192,255,224,192,96,192,96,11,16,32,12,0,0, + 12,0,18,0,18,0,12,0,14,0,14,0,31,0,27,0, + 59,128,49,128,113,192,96,192,127,192,255,224,192,96,192,96, + 14,12,24,15,0,0,31,252,31,252,27,0,51,0,51,0, + 51,248,99,248,127,0,127,0,195,0,195,252,195,252,10,16, + 32,12,1,252,31,0,63,128,113,192,96,192,224,0,192,0, + 192,0,224,0,96,192,113,192,63,128,31,0,4,0,6,0, + 19,0,14,0,8,16,16,10,1,0,32,48,8,0,255,255, + 192,192,192,254,254,192,192,192,255,255,8,16,16,10,1,0, + 4,12,16,0,255,255,192,192,192,254,254,192,192,192,255,255, + 8,16,16,10,1,0,8,28,34,0,255,255,192,192,192,254, + 254,192,192,192,255,255,8,15,15,10,1,0,102,102,0,255, + 255,192,192,192,254,254,192,192,192,255,255,3,16,16,4,0, + 0,128,192,32,0,96,96,96,96,96,96,96,96,96,96,96, + 96,3,16,16,4,1,0,32,96,128,0,192,192,192,192,192, + 192,192,192,192,192,192,192,5,16,16,4,0,0,32,112,136, + 0,96,96,96,96,96,96,96,96,96,96,96,96,6,15,15, + 4,255,0,204,204,0,48,48,48,48,48,48,48,48,48,48, + 48,48,12,12,24,12,0,0,63,0,63,192,48,224,48,96, + 48,112,252,48,252,48,48,112,48,96,48,224,63,192,63,0, + 10,15,30,12,1,0,29,0,46,0,0,0,224,192,240,192, + 240,192,216,192,216,192,204,192,204,192,198,192,198,192,195,192, + 195,192,193,192,11,16,32,13,1,0,8,0,12,0,2,0, + 0,0,31,0,63,128,113,192,96,192,224,224,192,96,192,96, + 224,224,96,192,113,192,63,128,31,0,11,16,32,13,1,0, + 1,0,3,0,4,0,0,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 11,16,32,13,1,0,4,0,14,0,17,0,0,0,31,0, + 63,128,113,192,96,192,224,224,192,96,192,96,224,224,96,192, + 113,192,63,128,31,0,11,15,30,13,1,0,14,128,23,0, + 0,0,31,0,63,128,113,192,96,192,224,224,192,96,192,96, + 224,224,96,192,113,192,63,128,31,0,11,15,30,13,1,0, + 25,128,25,128,0,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,224,224,96,192,113,192,63,128,31,0,9,9, + 18,10,0,0,65,0,227,128,119,0,62,0,28,0,62,0, + 119,0,227,128,65,0,11,12,24,13,1,0,31,32,63,192, + 112,192,97,192,227,96,198,96,204,96,216,224,112,192,97,192, + 127,128,159,0,10,16,32,12,1,0,16,0,24,0,4,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,16,32,12,1,0, + 2,0,6,0,8,0,0,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,225,192,127,128,63,0, + 10,16,32,12,1,0,4,0,14,0,17,0,0,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,15,30,12,1,0,51,0,51,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,16,32,11,0,0, + 2,0,6,0,8,0,0,0,192,192,225,192,97,128,51,0, + 51,0,30,0,30,0,12,0,12,0,12,0,12,0,12,0, + 9,12,24,11,1,0,192,0,254,0,255,0,195,128,193,128, + 193,128,195,128,255,0,254,0,192,0,192,0,192,0,8,12, + 12,10,1,0,124,254,198,198,220,222,195,195,195,195,222,220, + 8,13,13,9,1,0,32,48,8,0,124,254,198,14,126,230, + 198,254,119,8,13,13,9,1,0,4,12,16,0,124,254,198, + 14,126,230,198,254,119,8,13,13,9,1,0,16,56,68,0, + 124,254,198,14,126,230,198,254,119,8,12,12,9,1,0,58, + 92,0,124,254,198,14,126,230,198,254,119,8,12,12,9,1, + 0,108,108,0,124,254,198,14,126,230,198,254,119,8,13,13, + 9,1,0,24,36,36,24,124,254,198,14,126,230,198,254,119, + 13,9,18,15,1,0,125,224,255,240,198,24,15,248,127,248, + 230,0,207,56,255,240,121,224,8,13,13,9,1,252,60,126, + 231,192,192,192,231,126,60,16,24,76,56,8,13,13,10,1, + 0,32,48,8,0,60,126,195,255,255,192,231,126,60,8,13, + 13,10,1,0,4,12,16,0,60,126,195,255,255,192,231,126, + 60,8,13,13,10,1,0,8,28,34,0,60,126,195,255,255, + 192,231,126,60,8,12,12,10,1,0,54,54,0,60,126,195, + 255,255,192,231,126,60,3,13,13,4,0,0,128,192,32,0, + 96,96,96,96,96,96,96,96,96,3,13,13,4,1,0,32, + 96,128,0,192,192,192,192,192,192,192,192,192,5,13,13,4, + 0,0,32,112,136,0,96,96,96,96,96,96,96,96,96,5, + 12,12,4,0,0,216,216,0,96,96,96,96,96,96,96,96, + 96,8,12,12,10,1,0,96,124,248,28,126,231,195,195,195, + 231,126,60,8,12,12,10,1,0,58,92,0,222,255,227,195, + 195,195,195,195,195,8,13,13,10,1,0,32,48,8,0,60, + 126,231,195,195,195,231,126,60,8,13,13,10,1,0,8,24, + 32,0,60,126,231,195,195,195,231,126,60,8,13,13,10,1, + 0,16,56,68,0,60,126,231,195,195,195,231,126,60,8,12, + 12,10,1,0,58,92,0,60,126,231,195,195,195,231,126,60, + 8,12,12,10,1,0,108,108,0,60,126,231,195,195,195,231, + 126,60,8,8,8,10,1,0,24,24,0,255,255,0,24,24, + 8,9,9,10,1,0,61,127,231,207,219,243,231,254,188,8, + 13,13,10,1,0,32,48,8,0,195,195,195,195,195,195,199, + 255,123,8,13,13,10,1,0,8,24,32,0,195,195,195,195, + 195,195,199,255,123,8,13,13,10,1,0,16,56,68,0,195, + 195,195,195,195,195,199,255,123,8,12,12,10,1,0,108,108, + 0,195,195,195,195,195,195,199,255,123,8,17,17,9,0,252, + 4,12,16,0,195,195,99,102,54,54,60,28,24,24,24,112, + 96,8,16,16,10,1,252,192,192,192,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,16,16,9,0,252,54,54,0, + 195,195,99,102,54,54,60,28,24,24,24,112,96}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=16 x= 2 y=10 dx=16 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=27 x=-2 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB12r[1914] U8G_SECTION(".progmem.u8g_font_helvB12r") = { + 0,20,27,254,249,12,2,74,5,106,32,127,252,13,252,12, + 252,0,0,0,5,0,1,2,12,12,6,2,0,192,192,192, + 192,192,192,128,128,128,0,192,192,5,4,4,8,1,8,216, + 216,216,72,9,12,24,9,0,0,27,0,27,0,27,0,127, + 128,127,128,54,0,54,0,255,0,255,0,108,0,108,0,108, + 0,7,14,14,9,1,255,16,124,254,214,208,240,120,60,30, + 22,214,254,124,16,13,12,24,14,0,0,48,64,120,128,204, + 128,205,0,121,0,50,0,2,96,4,240,5,152,9,152,8, + 240,16,96,10,12,24,12,1,0,60,0,126,0,102,0,102, + 0,60,0,56,192,125,192,207,128,199,0,199,0,127,128,57, + 192,2,4,4,4,1,8,192,192,192,64,4,15,15,6,1, + 253,48,112,96,192,192,192,192,192,192,192,192,192,96,112,48, + 4,15,15,6,0,253,192,224,96,48,48,48,48,48,48,48, + 48,48,96,224,192,5,5,5,6,0,7,32,168,112,112,136, + 8,8,8,10,1,0,24,24,24,255,255,24,24,24,2,5, + 5,4,1,253,192,192,64,64,128,4,2,2,5,0,3,240, + 240,2,2,2,4,1,0,192,192,4,12,12,5,0,0,16, + 16,48,32,32,96,64,64,192,128,128,128,8,12,12,9,0, + 0,60,126,231,195,195,195,195,195,195,231,126,60,5,12,12, + 9,1,0,8,24,248,248,24,24,24,24,24,24,24,24,8, + 12,12,9,0,0,60,126,231,195,195,7,14,28,56,112,255, + 255,8,12,12,9,0,0,60,126,231,195,7,30,30,7,195, + 231,126,60,8,12,12,9,0,0,14,30,54,54,102,102,198, + 255,255,6,6,6,8,12,12,9,0,0,63,63,48,48,124, + 126,71,3,3,231,126,60,8,12,12,9,0,0,60,126,231, + 192,220,254,231,195,195,231,126,60,8,12,12,9,0,0,255, + 255,6,6,12,12,24,24,24,48,48,48,8,12,12,9,0, + 0,60,126,231,195,102,60,126,231,195,231,126,60,8,12,12, + 9,0,0,60,126,231,195,195,231,127,59,3,231,126,60,2, + 8,8,5,2,0,192,192,0,0,0,0,192,192,2,11,11, + 5,2,253,192,192,0,0,0,0,192,192,64,64,128,8,8, + 8,10,1,0,3,15,60,224,224,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,0,192,240, + 60,7,7,60,240,192,7,12,12,10,1,0,124,254,198,198, + 6,14,12,24,24,0,24,24,13,14,28,16,1,254,15,192, + 56,96,96,16,71,216,204,72,136,200,152,200,152,136,153,152, + 201,144,70,96,96,0,56,192,15,128,11,12,24,12,0,0, + 14,0,14,0,31,0,27,0,59,128,49,128,113,192,96,192, + 127,192,255,224,192,96,192,96,9,12,24,11,1,0,254,0, + 255,0,195,128,193,128,195,128,255,0,255,0,195,128,193,128, + 195,128,255,0,254,0,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,10,12,24,12,1,0,252,0,255,0,195,128, + 193,128,193,192,192,192,192,192,193,192,193,128,195,128,255,0, + 252,0,8,12,12,10,1,0,255,255,192,192,192,254,254,192, + 192,192,255,255,8,12,12,10,1,0,255,255,192,192,192,254, + 254,192,192,192,192,192,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,195,192,227,192,96,192,113,192, + 63,192,30,192,10,12,24,12,1,0,192,192,192,192,192,192, + 192,192,255,192,255,192,192,192,192,192,192,192,192,192,192,192, + 192,192,2,12,12,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,7,12,12,9,1,0,6,6,6,6,6,6, + 6,6,198,198,254,124,11,12,24,12,1,0,193,192,195,128, + 199,0,206,0,220,0,248,0,252,0,206,0,199,0,195,128, + 193,192,192,224,8,12,12,10,1,0,192,192,192,192,192,192, + 192,192,192,192,255,255,11,12,24,13,1,0,224,224,224,224, + 224,224,241,224,241,224,209,96,219,96,219,96,202,96,206,96, + 206,96,196,96,10,12,24,12,1,0,224,192,240,192,240,192, + 216,192,216,192,204,192,204,192,198,192,198,192,195,192,195,192, + 193,192,11,12,24,13,1,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 9,12,24,11,1,0,254,0,255,0,195,128,193,128,193,128, + 195,128,255,0,254,0,192,0,192,0,192,0,192,0,11,13, + 26,13,1,255,31,0,63,128,113,192,96,192,224,224,192,96, + 192,96,226,96,103,192,115,192,63,128,31,192,0,128,10,12, + 24,12,1,0,255,0,255,128,193,128,193,128,195,128,255,0, + 255,0,195,128,193,128,193,128,193,192,193,192,9,12,24,11, + 1,0,62,0,127,0,227,128,193,128,240,0,126,0,31,0, + 3,128,193,128,227,128,127,0,62,0,10,12,24,10,0,0, + 255,192,255,192,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,10,12,24,12,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,12,24,11,0,0,192,192,192,192, + 97,128,97,128,97,128,51,0,51,0,51,0,30,0,30,0, + 12,0,12,0,14,12,24,15,0,0,195,12,195,12,195,12, + 99,24,103,152,103,152,52,176,60,240,60,240,24,96,24,96, + 24,96,9,12,24,11,1,0,193,128,227,128,99,0,54,0, + 62,0,28,0,28,0,62,0,54,0,99,0,227,128,193,128, + 10,12,24,11,0,0,192,192,225,192,97,128,51,0,51,0, + 30,0,30,0,12,0,12,0,12,0,12,0,12,0,8,12, + 12,10,1,0,255,255,7,6,12,28,56,48,96,224,255,255, + 4,15,15,6,1,253,240,240,192,192,192,192,192,192,192,192, + 192,192,192,240,240,4,12,12,5,0,0,128,128,192,64,64, + 96,32,32,48,16,16,16,4,15,15,6,0,253,240,240,48, + 48,48,48,48,48,48,48,48,48,48,240,240,8,7,7,10, + 1,5,24,24,60,102,102,195,195,9,1,2,9,0,253,255, + 128,3,3,3,6,2,10,128,192,32,8,9,9,9,1,0, + 124,254,198,14,126,230,198,254,119,8,12,12,10,1,0,192, + 192,192,220,254,231,195,195,195,231,254,220,8,9,9,9,1, + 0,60,126,231,192,192,192,231,126,60,8,12,12,10,1,0, + 3,3,3,63,127,231,195,195,195,231,127,59,8,9,9,10, + 1,0,60,126,195,255,255,192,231,126,60,4,12,12,6,1, + 0,48,112,96,240,240,96,96,96,96,96,96,96,8,13,13, + 10,1,252,59,127,231,195,195,195,231,127,59,3,231,126,60, + 8,12,12,10,1,0,192,192,192,222,255,227,195,195,195,195, + 195,195,2,12,12,4,1,0,192,192,0,192,192,192,192,192, + 192,192,192,192,3,16,16,5,1,252,96,96,0,96,96,96, + 96,96,96,96,96,96,96,96,224,192,8,12,12,9,1,0, + 192,192,192,199,206,220,248,252,236,206,198,199,2,12,12,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,192,12,9, + 18,14,1,0,222,224,255,240,231,48,198,48,198,48,198,48, + 198,48,198,48,198,48,8,9,9,10,1,0,222,255,227,195, + 195,195,195,195,195,8,9,9,10,1,0,60,126,231,195,195, + 195,231,126,60,8,13,13,10,1,252,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,13,13,10,1,252,59,127,231, + 195,195,195,231,127,59,3,3,3,3,5,9,9,6,1,0, + 216,248,224,192,192,192,192,192,192,7,9,9,9,1,0,124, + 254,198,240,124,14,198,254,124,4,11,11,6,1,0,96,96, + 240,240,96,96,96,96,96,112,48,8,9,9,10,1,0,195, + 195,195,195,195,195,199,255,123,8,9,9,9,0,0,195,195, + 102,102,102,60,60,24,24,12,9,18,13,0,0,198,48,198, + 48,102,96,102,96,111,96,63,192,57,192,25,128,25,128,7, + 9,9,9,1,0,198,198,108,124,56,124,108,198,198,8,13, + 13,9,0,252,195,195,99,102,54,54,60,28,24,24,24,112, + 96,7,9,9,8,0,0,254,254,14,28,24,56,112,254,254, + 4,15,15,6,1,253,48,112,96,96,96,96,96,192,96,96, + 96,96,96,112,48,1,16,16,4,1,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,192,224,96,96,96,96,96,48,96,96,96,96,96,224,192, + 8,3,3,10,1,3,113,153,142,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=19 x= 2 y=12 dx=18 dy= 0 ascent=18 len=38 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB14[5489] U8G_SECTION(".progmem.u8g_font_helvB14") = { + 0,22,29,254,249,14,3,23,6,234,32,255,252,18,251,14, + 252,0,0,0,5,0,1,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,192,192,0,224,224,224,5,5,5,7,1, + 9,216,216,216,216,144,11,13,26,11,0,0,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,27,0,255,192,255,192, + 54,0,54,0,54,0,10,16,32,10,0,254,4,0,63,0, + 127,128,229,128,228,0,228,0,124,0,63,0,15,128,9,192, + 233,192,233,192,127,128,63,0,8,0,8,0,13,13,26,16, + 1,0,120,96,252,96,204,192,204,128,253,128,123,0,2,0, + 6,240,13,248,9,152,25,152,49,248,48,240,13,14,28,14, + 1,0,30,0,63,0,115,128,97,128,115,0,62,0,28,96, + 126,96,231,224,195,192,193,192,227,224,127,112,62,56,2,5, + 5,4,1,9,192,192,192,192,128,6,18,18,7,1,252,28, + 56,48,112,96,224,224,224,224,224,224,224,224,96,112,48,56, + 28,6,18,18,7,0,252,224,112,48,56,24,28,28,28,28, + 28,28,28,28,24,56,48,112,224,7,6,6,9,1,8,16, + 214,124,56,108,68,8,8,8,11,1,1,24,24,24,255,255, + 24,24,24,3,6,6,5,1,253,224,224,224,96,192,128,5, + 3,3,6,0,4,248,248,248,3,3,3,5,1,0,224,224, + 224,5,14,14,5,0,0,24,24,24,56,48,48,48,112,96, + 96,224,192,192,192,9,13,26,10,0,0,28,0,127,0,119, + 0,227,128,227,128,227,128,227,128,227,128,227,128,227,128,119, + 0,127,0,28,0,6,13,13,10,1,0,28,60,252,252,28, + 28,28,28,28,28,28,28,28,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,3,128,7,0,31,0,62,0,120,0, + 112,0,224,0,255,128,255,128,9,13,26,10,0,0,62,0, + 127,0,231,0,227,0,7,0,30,0,31,0,7,128,3,128, + 227,128,231,128,127,0,62,0,9,13,26,10,0,0,7,0, + 15,0,31,0,63,0,55,0,119,0,103,0,231,0,255,128, + 255,128,7,0,7,0,7,0,9,13,26,10,0,0,255,0, + 255,0,224,0,224,0,254,0,255,0,231,128,3,128,3,128, + 227,128,231,128,255,0,126,0,9,13,26,10,0,0,63,0, + 127,128,113,128,224,0,238,0,255,0,243,128,225,128,225,128, + 225,128,243,128,127,0,62,0,9,13,26,10,0,0,255,128, + 255,128,3,128,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,112,0,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,227,128,127,0,62,0,119,0,227,128, + 227,128,227,128,127,0,62,0,9,13,26,10,0,0,62,0, + 127,0,231,128,195,128,195,128,195,128,231,128,127,128,59,128, + 3,128,199,0,255,0,126,0,3,10,10,6,1,0,224,224, + 224,0,0,0,0,224,224,224,3,13,13,6,1,253,224,224, + 224,0,0,0,0,224,224,224,96,192,128,9,9,18,11,1, + 0,3,128,15,128,62,0,120,0,224,0,120,0,62,0,15, + 128,3,128,9,5,10,11,1,3,255,128,255,128,0,0,255, + 128,255,128,9,9,18,11,1,0,224,0,248,0,62,0,15, + 0,3,128,15,0,62,0,248,0,224,0,8,14,14,10,1, + 0,126,255,231,231,14,30,28,56,56,56,0,56,56,56,16, + 17,34,18,1,253,7,240,31,252,60,30,112,6,99,183,231, + 243,198,99,204,99,204,195,204,198,204,198,239,252,231,184,112, + 0,60,0,31,240,7,240,12,14,28,14,1,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,11,14,28,14,2,0,254, + 0,255,128,227,192,225,192,225,192,227,128,255,128,255,192,225, + 224,224,224,224,224,225,224,255,192,255,0,12,14,28,14,1, + 0,15,128,63,224,120,224,112,112,240,112,224,0,224,0,224, + 0,224,0,240,112,112,112,120,224,63,224,15,128,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,112,224,112,224, + 112,224,112,224,112,224,112,224,224,225,224,255,192,255,0,10, + 14,28,13,2,0,255,192,255,192,224,0,224,0,224,0,224, + 0,255,128,255,128,224,0,224,0,224,0,224,0,255,192,255, + 192,10,14,28,12,1,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,224, + 0,224,0,12,14,28,15,1,0,15,128,63,224,120,224,112, + 112,240,112,224,0,224,0,227,240,227,240,240,112,112,112,120, + 240,63,240,31,176,12,14,28,14,1,0,224,112,224,112,224, + 112,224,112,224,112,224,112,255,240,255,240,224,112,224,112,224, + 112,224,112,224,112,224,112,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,9,14,28,10,0, + 0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,227,128,227,128,247,128,127,0,62,0,13,14,28, + 14,1,0,224,240,225,224,227,192,231,128,239,0,254,0,252, + 0,254,0,239,0,231,128,227,192,225,224,224,240,224,120,9, + 14,28,11,1,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,128,255, + 128,14,14,28,16,1,0,224,28,224,28,240,60,240,60,248, + 124,248,124,248,124,236,220,236,220,236,220,231,156,231,156,227, + 28,227,28,12,14,28,14,1,0,224,112,240,112,240,112,248, + 112,252,112,236,112,238,112,230,112,231,112,227,112,225,240,225, + 240,224,240,224,112,13,14,28,15,1,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,11,14,28,13,1,0,255,0,255, + 192,225,224,224,224,224,224,224,224,225,224,255,192,255,0,224, + 0,224,0,224,0,224,0,224,0,13,15,30,15,1,255,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,243,120,115,240,121,240,63,224,15,240,0,48,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,224,225,224,255, + 192,255,128,225,192,224,224,224,224,224,224,224,224,224,240,11, + 14,28,13,1,0,63,128,127,192,241,224,224,224,240,0,126, + 0,63,128,15,192,1,224,224,224,224,224,241,224,127,192,63, + 128,11,14,28,11,0,0,255,224,255,224,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,12,14,28,14,1,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,127,224,31,128,13,14,28,13,0,0,224,56,224,56,112, + 112,112,112,48,96,56,224,56,224,29,192,29,192,13,128,15, + 128,15,128,7,0,7,0,15,14,28,17,1,0,227,142,227, + 142,227,142,227,142,115,156,115,156,115,156,118,220,54,216,54, + 216,62,248,28,112,28,112,28,112,12,14,28,12,0,0,224, + 112,224,112,112,224,121,224,25,128,31,128,15,0,31,128,25, + 128,57,192,112,224,112,224,224,112,224,112,13,14,28,13,0, + 0,224,56,224,56,112,112,56,224,56,224,29,192,29,192,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,10,14,28, + 12,1,0,255,192,255,192,1,192,3,128,7,0,7,0,14, + 0,28,0,56,0,56,0,112,0,224,0,255,192,255,192,5, + 18,18,6,1,252,248,248,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,5,14,14,5,0,0,192,192,192, + 224,96,96,96,112,48,48,56,24,24,24,5,18,18,6,0, + 252,248,248,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,248,248,10,7,14,10,0,6,12,0,30,0,30,0,51, + 0,115,128,97,128,225,192,10,2,4,10,0,252,255,192,255, + 192,5,3,3,5,0,11,224,112,56,10,10,20,11,1,0, + 62,0,127,0,99,128,7,128,63,128,123,128,227,128,231,128, + 251,128,123,192,10,14,28,12,1,0,224,0,224,0,224,0, + 224,0,239,0,255,128,243,128,225,192,225,192,225,192,225,192, + 243,128,255,128,239,0,9,10,20,11,1,0,30,0,127,128, + 115,128,224,0,224,0,224,0,224,0,115,128,127,128,30,0, + 10,14,28,12,1,0,1,192,1,192,1,192,1,192,61,192, + 127,192,115,192,225,192,225,192,225,192,225,192,115,192,127,192, + 61,192,9,10,20,11,1,0,30,0,127,0,115,128,225,128, + 255,128,255,128,224,0,115,128,127,128,30,0,7,14,14,7, + 0,0,30,62,56,56,254,254,56,56,56,56,56,56,56,56, + 10,14,28,12,1,252,61,192,127,192,115,192,225,192,225,192, + 225,192,225,192,115,192,127,192,61,192,1,192,115,128,127,128, + 30,0,9,14,28,11,1,0,224,0,224,0,224,0,224,0, + 239,0,255,128,243,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,3,14,14,5,1,0,224,224,224,0,224,224, + 224,224,224,224,224,224,224,224,5,18,18,5,255,252,56,56, + 56,0,56,56,56,56,56,56,56,56,56,56,56,56,248,240, + 9,14,28,10,1,0,224,0,224,0,224,0,224,0,231,0, + 238,0,252,0,248,0,248,0,252,0,238,0,231,0,231,128, + 227,128,3,14,14,5,1,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,15,10,20,17,1,0,239,60,255,254, + 243,206,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 9,10,20,11,1,0,239,0,255,128,243,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,10,20,12,1,0, + 30,0,127,128,115,128,225,192,225,192,225,192,225,192,115,128, + 127,128,30,0,10,14,28,12,1,252,239,0,255,128,243,128, + 225,192,225,192,225,192,225,192,243,128,255,128,239,0,224,0, + 224,0,224,0,224,0,10,14,28,12,1,252,61,192,127,192, + 115,192,225,192,225,192,225,192,225,192,115,192,127,192,61,192, + 1,192,1,192,1,192,1,192,6,10,10,7,1,0,236,252, + 252,224,224,224,224,224,224,224,9,10,20,11,1,0,63,0, + 127,128,227,128,224,0,255,0,63,128,3,128,227,128,255,0, + 126,0,6,13,13,6,0,0,112,112,112,252,252,112,112,112, + 112,112,112,124,60,9,10,20,11,1,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 10,20,9,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,15,10,20,15,0,0,227, + 142,227,142,227,142,115,156,119,220,118,220,62,248,60,120,28, + 112,28,112,9,10,20,11,1,0,227,128,227,128,119,0,62, + 0,28,0,62,0,119,0,119,0,227,128,227,128,9,14,28, + 11,1,252,227,128,227,128,227,128,119,0,119,0,119,0,62, + 0,62,0,28,0,28,0,28,0,24,0,120,0,112,0,8, + 10,10,10,1,0,255,255,7,14,28,56,112,224,255,255,7, + 18,18,8,1,252,14,28,56,56,56,56,56,112,224,112,56, + 56,56,56,56,56,28,14,2,18,18,5,1,252,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,7, + 18,18,8,0,252,224,112,56,56,56,56,56,28,14,28,56, + 56,56,56,56,56,112,224,9,3,6,11,1,4,121,128,255, + 128,207,0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,5,0,1,3,14,14,6,2,252, + 224,224,224,0,96,96,224,224,224,224,224,224,224,224,8,14, + 14,10,1,254,2,2,62,127,231,200,200,208,208,227,127,126, + 64,64,10,13,26,11,0,0,31,0,63,192,113,192,112,0, + 112,0,56,0,127,0,28,0,28,0,56,0,112,192,255,192, + 239,128,9,8,16,11,1,2,193,128,255,128,119,0,99,0, + 99,0,119,0,255,128,193,128,9,13,26,10,0,0,227,128, + 227,128,227,128,119,0,119,0,62,0,255,128,28,0,255,128, + 28,0,28,0,28,0,28,0,2,18,18,5,1,252,192,192, + 192,192,192,192,192,192,0,0,192,192,192,192,192,192,192,192, + 9,18,36,10,0,252,62,0,127,0,227,128,227,128,240,0, + 124,0,254,0,199,0,195,128,225,128,113,128,63,128,15,0, + 7,128,227,128,227,128,127,0,62,0,5,2,2,7,1,12, + 216,216,14,14,28,15,1,0,15,192,56,112,96,24,199,140, + 207,204,152,196,152,4,152,4,152,68,207,204,199,140,96,24, + 56,112,15,192,6,9,9,8,1,5,120,140,124,204,204,116, + 0,252,252,10,8,16,11,0,1,29,192,59,128,119,0,238, + 0,238,0,119,0,59,128,29,192,9,5,10,11,1,3,255, + 128,255,128,1,128,1,128,1,128,5,3,3,6,0,4,248, + 248,248,13,14,28,15,1,0,15,128,48,96,96,16,95,144, + 153,200,152,200,153,200,159,8,153,136,153,136,88,208,96,48, + 56,224,15,128,5,2,2,7,1,12,248,248,6,6,6,7, + 0,7,120,252,204,204,252,120,9,9,18,11,1,0,28,0, + 28,0,255,128,255,128,28,0,28,0,0,0,255,128,255,128, + 6,8,8,6,0,5,120,252,204,28,120,224,252,252,6,8, + 8,6,0,5,120,252,204,56,60,204,252,120,5,3,3,5, + 0,11,56,112,224,9,14,28,11,1,252,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,251,128,224, + 0,224,0,224,0,224,0,9,18,36,10,0,252,63,128,123, + 0,251,0,251,0,251,0,251,0,251,0,123,0,59,0,27, + 0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27, + 0,2,2,2,5,1,6,192,192,5,5,5,7,1,251,96, + 112,24,248,240,4,8,8,6,0,5,48,240,240,48,48,48, + 48,48,6,9,9,8,1,5,120,204,204,204,204,120,0,252, + 252,10,8,16,11,0,1,238,0,119,0,59,128,29,192,29, + 192,59,128,119,0,238,0,14,13,26,15,0,0,48,96,240, + 96,240,192,48,192,49,128,49,152,51,56,54,56,6,120,12, + 216,12,252,24,24,24,24,15,13,26,15,0,0,48,96,240, + 96,240,192,48,192,49,128,49,188,51,126,54,102,6,14,12, + 60,12,112,24,126,24,126,14,13,26,15,0,0,120,48,252, + 48,204,96,56,96,60,192,204,216,253,184,123,56,3,120,6, + 216,6,252,12,24,12,24,8,14,14,10,1,252,28,28,28, + 0,28,28,28,56,120,112,231,231,255,126,12,18,36,14,1, + 0,56,0,28,0,6,0,0,0,15,0,15,0,31,128,25, + 128,25,128,57,192,57,192,48,192,112,224,127,224,127,224,224, + 112,224,112,224,112,12,18,36,14,1,0,1,192,3,128,6, + 0,0,0,15,0,15,0,31,128,25,128,25,128,57,192,57, + 192,48,192,112,224,127,224,127,224,224,112,224,112,224,112,12, + 18,36,14,1,0,7,0,15,128,29,192,0,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,12,18,36,14,1,0,14, + 32,31,192,35,128,0,0,15,0,15,0,31,128,25,128,25, + 128,57,192,57,192,48,192,112,224,127,224,127,224,224,112,224, + 112,224,112,12,18,36,14,1,0,25,128,25,128,25,128,0, + 0,15,0,15,0,31,128,25,128,25,128,57,192,57,192,48, + 192,112,224,127,224,127,224,224,112,224,112,224,112,12,18,36, + 14,1,0,15,0,25,128,25,128,15,0,15,0,15,0,31, + 128,25,128,25,128,57,192,57,192,48,192,112,224,127,224,127, + 224,224,112,224,112,224,112,16,14,28,18,1,0,15,255,15, + 255,31,128,27,128,59,128,59,128,51,254,115,254,115,128,127, + 128,255,128,227,128,227,255,227,255,12,19,38,14,1,251,15, + 128,63,224,120,224,112,112,240,112,224,0,224,0,224,0,224, + 0,240,112,112,112,120,224,63,224,15,128,12,0,14,0,3, + 0,31,0,30,0,10,18,36,13,2,0,56,0,28,0,6, + 0,0,0,255,192,255,192,224,0,224,0,224,0,224,0,255, + 128,255,128,224,0,224,0,224,0,224,0,255,192,255,192,10, + 18,36,13,2,0,3,128,7,0,12,0,0,0,255,192,255, + 192,224,0,224,0,224,0,224,0,255,128,255,128,224,0,224, + 0,224,0,224,0,255,192,255,192,10,18,36,13,2,0,14, + 0,31,0,59,128,0,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,255, + 192,255,192,10,18,36,13,2,0,51,0,51,0,51,0,0, + 0,255,192,255,192,224,0,224,0,224,0,224,0,255,128,255, + 128,224,0,224,0,224,0,224,0,255,192,255,192,5,18,18, + 5,255,0,224,112,24,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,5,18,18,5,1,0,56,112,192,0,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,7,18,18, + 5,255,0,56,124,238,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,6,18,18,5,0,0,204,204,204,0,112, + 112,112,112,112,112,112,112,112,112,112,112,112,112,14,14,28, + 14,255,0,63,192,63,240,56,120,56,56,56,28,56,28,255, + 28,255,28,56,28,56,28,56,56,56,120,63,240,63,192,12, + 18,36,14,1,0,14,32,31,192,35,128,0,0,224,112,240, + 112,240,112,248,112,252,112,236,112,238,112,230,112,231,112,227, + 112,225,240,225,240,224,240,224,112,13,18,36,15,1,0,28, + 0,14,0,3,0,0,0,15,128,63,224,120,240,112,112,240, + 120,224,56,224,56,224,56,224,56,240,120,112,112,120,240,63, + 224,15,128,13,18,36,15,1,0,1,192,3,128,6,0,0, + 0,15,128,63,224,120,240,112,112,240,120,224,56,224,56,224, + 56,224,56,240,120,112,112,120,240,63,224,15,128,13,18,36, + 15,1,0,7,0,15,128,29,192,0,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,13,18,36,15,1,0,7,16,15, + 224,17,192,0,0,15,128,63,224,120,240,112,112,240,120,224, + 56,224,56,224,56,224,56,240,120,112,112,120,240,63,224,15, + 128,13,18,36,15,1,0,12,192,12,192,12,192,0,0,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,240,120,112,112,120,240,63,224,15,128,10,8,16,11,0, + 1,225,192,115,128,63,0,30,0,30,0,63,0,115,128,225, + 192,15,14,28,15,0,0,7,198,31,252,60,56,56,120,120, + 220,113,156,113,28,115,28,118,28,124,60,56,56,60,120,127, + 240,199,192,12,18,36,14,1,0,28,0,14,0,3,0,0, + 0,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,112,224,127,224,31,128,12,18,36, + 14,1,0,1,192,3,128,6,0,0,0,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,112,224,127,224,31,128,12,18,36,14,1,0,7,0,15, + 128,29,192,0,0,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,127,224,31, + 128,12,18,36,14,1,0,25,128,25,128,25,128,0,0,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,112,224,127,224,31,128,13,18,36,13,0, + 0,1,192,3,128,6,0,0,0,224,56,224,56,112,112,56, + 224,56,224,29,192,29,192,15,128,7,0,7,0,7,0,7, + 0,7,0,7,0,11,14,28,13,1,0,224,0,224,0,224, + 0,255,0,255,192,225,224,224,224,224,224,225,224,255,192,255, + 0,224,0,224,0,224,0,8,14,14,10,1,0,60,126,231, + 231,231,231,238,238,231,231,231,231,239,238,10,14,28,11,1, + 0,112,0,56,0,12,0,0,0,62,0,127,0,115,128,7, + 128,63,128,123,128,227,128,231,128,251,128,123,192,10,14,28, + 11,1,0,3,128,7,0,12,0,0,0,62,0,127,0,115, + 128,7,128,63,128,123,128,227,128,231,128,251,128,123,192,10, + 14,28,11,1,0,28,0,62,0,119,0,0,0,62,0,127, + 0,115,128,7,128,63,128,123,128,227,128,231,128,251,128,123, + 192,10,14,28,11,1,0,59,0,127,0,110,0,0,0,62, + 0,127,0,115,128,7,128,63,128,123,128,227,128,231,128,251, + 128,123,192,10,14,28,11,1,0,51,0,51,0,51,0,0, + 0,62,0,127,0,115,128,7,128,63,128,123,128,227,128,231, + 128,251,128,123,192,10,14,28,11,1,0,60,0,102,0,102, + 0,60,0,62,0,127,0,115,128,7,128,63,128,123,128,227, + 128,231,128,251,128,123,192,14,10,20,16,1,0,61,240,127, + 248,103,28,15,28,63,252,119,0,231,0,239,156,255,252,121, + 240,9,15,30,10,1,251,30,0,127,128,115,128,224,0,224, + 0,224,0,224,0,115,128,127,128,30,0,24,0,28,0,6, + 0,62,0,60,0,9,14,28,11,1,0,112,0,56,0,12, + 0,0,0,30,0,127,0,115,128,225,128,255,128,255,128,224, + 0,115,128,127,128,30,0,9,14,28,11,1,0,3,128,7, + 0,12,0,0,0,30,0,127,0,115,128,225,128,255,128,255, + 128,224,0,115,128,127,128,30,0,9,14,28,11,1,0,28, + 0,62,0,119,0,0,0,30,0,127,0,115,128,225,128,255, + 128,255,128,224,0,115,128,127,128,30,0,9,14,28,11,1, + 0,51,0,51,0,51,0,0,0,30,0,127,0,115,128,225, + 128,255,128,255,128,224,0,115,128,127,128,30,0,5,14,14, + 5,255,0,224,112,24,0,56,56,56,56,56,56,56,56,56, + 56,5,14,14,5,1,0,56,112,192,0,224,224,224,224,224, + 224,224,224,224,224,7,14,14,5,255,0,56,124,238,0,56, + 56,56,56,56,56,56,56,56,56,5,14,14,5,0,0,216, + 216,216,0,112,112,112,112,112,112,112,112,112,112,10,14,28, + 12,1,0,96,0,55,0,60,0,102,0,31,0,127,128,115, + 128,225,192,225,192,225,192,225,192,115,128,127,128,30,0,9, + 14,28,11,1,0,59,0,127,0,110,0,0,0,239,0,255, + 128,243,128,227,128,227,128,227,128,227,128,227,128,227,128,227, + 128,10,14,28,12,1,0,112,0,56,0,12,0,0,0,30, + 0,127,128,115,128,225,192,225,192,225,192,225,192,115,128,127, + 128,30,0,10,14,28,12,1,0,3,128,7,0,12,0,0, + 0,30,0,127,128,115,128,225,192,225,192,225,192,225,192,115, + 128,127,128,30,0,10,14,28,12,1,0,28,0,62,0,119, + 0,0,0,30,0,127,128,115,128,225,192,225,192,225,192,225, + 192,115,128,127,128,30,0,10,14,28,12,1,0,59,0,127, + 0,110,0,0,0,30,0,127,128,115,128,225,192,225,192,225, + 192,225,192,115,128,127,128,30,0,10,14,28,12,1,0,51, + 0,51,0,51,0,0,0,30,0,127,128,115,128,225,192,225, + 192,225,192,225,192,115,128,127,128,30,0,9,8,16,11,1, + 1,28,0,28,0,0,0,255,128,255,128,0,0,28,0,28, + 0,12,10,20,12,0,0,15,48,63,224,57,192,115,224,119, + 224,126,224,124,224,57,192,127,192,207,0,9,14,28,11,1, + 0,112,0,56,0,12,0,0,0,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,231,128,255,128,123,128,9,14,28, + 11,1,0,3,128,7,0,12,0,0,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 14,28,11,1,0,28,0,62,0,119,0,0,0,227,128,227, + 128,227,128,227,128,227,128,227,128,227,128,231,128,255,128,123, + 128,9,14,28,11,1,0,51,0,51,0,51,0,0,0,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,231,128,255, + 128,123,128,9,18,36,11,1,252,7,0,14,0,24,0,0, + 0,227,128,227,128,227,128,119,0,119,0,119,0,62,0,62, + 0,28,0,28,0,28,0,24,0,120,0,112,0,10,18,36, + 12,1,252,224,0,224,0,224,0,224,0,239,0,255,128,243, + 128,225,192,225,192,225,192,225,192,243,128,255,128,239,0,224, + 0,224,0,224,0,224,0,9,18,36,11,1,252,51,0,51, + 0,51,0,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,28,0,24,0,120,0,112, + 0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=11 dx=18 dy= 0 ascent=14 len=34 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB14r[2548] U8G_SECTION(".progmem.u8g_font_helvB14r") = { + 0,22,29,254,249,14,3,23,6,234,32,127,252,14,252,14, + 252,0,0,0,5,0,1,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,192,192,0,224,224,224,5,5,5,7,1, + 9,216,216,216,216,144,11,13,26,11,0,0,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,27,0,255,192,255,192, + 54,0,54,0,54,0,10,16,32,10,0,254,4,0,63,0, + 127,128,229,128,228,0,228,0,124,0,63,0,15,128,9,192, + 233,192,233,192,127,128,63,0,8,0,8,0,13,13,26,16, + 1,0,120,96,252,96,204,192,204,128,253,128,123,0,2,0, + 6,240,13,248,9,152,25,152,49,248,48,240,13,14,28,14, + 1,0,30,0,63,0,115,128,97,128,115,0,62,0,28,96, + 126,96,231,224,195,192,193,192,227,224,127,112,62,56,2,5, + 5,4,1,9,192,192,192,192,128,6,18,18,7,1,252,28, + 56,48,112,96,224,224,224,224,224,224,224,224,96,112,48,56, + 28,6,18,18,7,0,252,224,112,48,56,24,28,28,28,28, + 28,28,28,28,24,56,48,112,224,7,6,6,9,1,8,16, + 214,124,56,108,68,8,8,8,11,1,1,24,24,24,255,255, + 24,24,24,3,6,6,5,1,253,224,224,224,96,192,128,5, + 3,3,6,0,4,248,248,248,3,3,3,5,1,0,224,224, + 224,5,14,14,5,0,0,24,24,24,56,48,48,48,112,96, + 96,224,192,192,192,9,13,26,10,0,0,28,0,127,0,119, + 0,227,128,227,128,227,128,227,128,227,128,227,128,227,128,119, + 0,127,0,28,0,6,13,13,10,1,0,28,60,252,252,28, + 28,28,28,28,28,28,28,28,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,3,128,7,0,31,0,62,0,120,0, + 112,0,224,0,255,128,255,128,9,13,26,10,0,0,62,0, + 127,0,231,0,227,0,7,0,30,0,31,0,7,128,3,128, + 227,128,231,128,127,0,62,0,9,13,26,10,0,0,7,0, + 15,0,31,0,63,0,55,0,119,0,103,0,231,0,255,128, + 255,128,7,0,7,0,7,0,9,13,26,10,0,0,255,0, + 255,0,224,0,224,0,254,0,255,0,231,128,3,128,3,128, + 227,128,231,128,255,0,126,0,9,13,26,10,0,0,63,0, + 127,128,113,128,224,0,238,0,255,0,243,128,225,128,225,128, + 225,128,243,128,127,0,62,0,9,13,26,10,0,0,255,128, + 255,128,3,128,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,112,0,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,227,128,127,0,62,0,119,0,227,128, + 227,128,227,128,127,0,62,0,9,13,26,10,0,0,62,0, + 127,0,231,128,195,128,195,128,195,128,231,128,127,128,59,128, + 3,128,199,0,255,0,126,0,3,10,10,6,1,0,224,224, + 224,0,0,0,0,224,224,224,3,13,13,6,1,253,224,224, + 224,0,0,0,0,224,224,224,96,192,128,9,9,18,11,1, + 0,3,128,15,128,62,0,120,0,224,0,120,0,62,0,15, + 128,3,128,9,5,10,11,1,3,255,128,255,128,0,0,255, + 128,255,128,9,9,18,11,1,0,224,0,248,0,62,0,15, + 0,3,128,15,0,62,0,248,0,224,0,8,14,14,10,1, + 0,126,255,231,231,14,30,28,56,56,56,0,56,56,56,16, + 17,34,18,1,253,7,240,31,252,60,30,112,6,99,183,231, + 243,198,99,204,99,204,195,204,198,204,198,239,252,231,184,112, + 0,60,0,31,240,7,240,12,14,28,14,1,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,11,14,28,14,2,0,254, + 0,255,128,227,192,225,192,225,192,227,128,255,128,255,192,225, + 224,224,224,224,224,225,224,255,192,255,0,12,14,28,14,1, + 0,15,128,63,224,120,224,112,112,240,112,224,0,224,0,224, + 0,224,0,240,112,112,112,120,224,63,224,15,128,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,112,224,112,224, + 112,224,112,224,112,224,112,224,224,225,224,255,192,255,0,10, + 14,28,13,2,0,255,192,255,192,224,0,224,0,224,0,224, + 0,255,128,255,128,224,0,224,0,224,0,224,0,255,192,255, + 192,10,14,28,12,1,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,224, + 0,224,0,12,14,28,15,1,0,15,128,63,224,120,224,112, + 112,240,112,224,0,224,0,227,240,227,240,240,112,112,112,120, + 240,63,240,31,176,12,14,28,14,1,0,224,112,224,112,224, + 112,224,112,224,112,224,112,255,240,255,240,224,112,224,112,224, + 112,224,112,224,112,224,112,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,9,14,28,10,0, + 0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,227,128,227,128,247,128,127,0,62,0,13,14,28, + 14,1,0,224,240,225,224,227,192,231,128,239,0,254,0,252, + 0,254,0,239,0,231,128,227,192,225,224,224,240,224,120,9, + 14,28,11,1,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,128,255, + 128,14,14,28,16,1,0,224,28,224,28,240,60,240,60,248, + 124,248,124,248,124,236,220,236,220,236,220,231,156,231,156,227, + 28,227,28,12,14,28,14,1,0,224,112,240,112,240,112,248, + 112,252,112,236,112,238,112,230,112,231,112,227,112,225,240,225, + 240,224,240,224,112,13,14,28,15,1,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,11,14,28,13,1,0,255,0,255, + 192,225,224,224,224,224,224,224,224,225,224,255,192,255,0,224, + 0,224,0,224,0,224,0,224,0,13,15,30,15,1,255,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,243,120,115,240,121,240,63,224,15,240,0,48,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,224,225,224,255, + 192,255,128,225,192,224,224,224,224,224,224,224,224,224,240,11, + 14,28,13,1,0,63,128,127,192,241,224,224,224,240,0,126, + 0,63,128,15,192,1,224,224,224,224,224,241,224,127,192,63, + 128,11,14,28,11,0,0,255,224,255,224,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,12,14,28,14,1,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,127,224,31,128,13,14,28,13,0,0,224,56,224,56,112, + 112,112,112,48,96,56,224,56,224,29,192,29,192,13,128,15, + 128,15,128,7,0,7,0,15,14,28,17,1,0,227,142,227, + 142,227,142,227,142,115,156,115,156,115,156,118,220,54,216,54, + 216,62,248,28,112,28,112,28,112,12,14,28,12,0,0,224, + 112,224,112,112,224,121,224,25,128,31,128,15,0,31,128,25, + 128,57,192,112,224,112,224,224,112,224,112,13,14,28,13,0, + 0,224,56,224,56,112,112,56,224,56,224,29,192,29,192,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,10,14,28, + 12,1,0,255,192,255,192,1,192,3,128,7,0,7,0,14, + 0,28,0,56,0,56,0,112,0,224,0,255,192,255,192,5, + 18,18,6,1,252,248,248,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,5,14,14,5,0,0,192,192,192, + 224,96,96,96,112,48,48,56,24,24,24,5,18,18,6,0, + 252,248,248,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,248,248,10,7,14,10,0,6,12,0,30,0,30,0,51, + 0,115,128,97,128,225,192,10,2,4,10,0,252,255,192,255, + 192,5,3,3,5,0,11,224,112,56,10,10,20,11,1,0, + 62,0,127,0,99,128,7,128,63,128,123,128,227,128,231,128, + 251,128,123,192,10,14,28,12,1,0,224,0,224,0,224,0, + 224,0,239,0,255,128,243,128,225,192,225,192,225,192,225,192, + 243,128,255,128,239,0,9,10,20,11,1,0,30,0,127,128, + 115,128,224,0,224,0,224,0,224,0,115,128,127,128,30,0, + 10,14,28,12,1,0,1,192,1,192,1,192,1,192,61,192, + 127,192,115,192,225,192,225,192,225,192,225,192,115,192,127,192, + 61,192,9,10,20,11,1,0,30,0,127,0,115,128,225,128, + 255,128,255,128,224,0,115,128,127,128,30,0,7,14,14,7, + 0,0,30,62,56,56,254,254,56,56,56,56,56,56,56,56, + 10,14,28,12,1,252,61,192,127,192,115,192,225,192,225,192, + 225,192,225,192,115,192,127,192,61,192,1,192,115,128,127,128, + 30,0,9,14,28,11,1,0,224,0,224,0,224,0,224,0, + 239,0,255,128,243,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,3,14,14,5,1,0,224,224,224,0,224,224, + 224,224,224,224,224,224,224,224,5,18,18,5,255,252,56,56, + 56,0,56,56,56,56,56,56,56,56,56,56,56,56,248,240, + 9,14,28,10,1,0,224,0,224,0,224,0,224,0,231,0, + 238,0,252,0,248,0,248,0,252,0,238,0,231,0,231,128, + 227,128,3,14,14,5,1,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,15,10,20,17,1,0,239,60,255,254, + 243,206,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 9,10,20,11,1,0,239,0,255,128,243,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,10,20,12,1,0, + 30,0,127,128,115,128,225,192,225,192,225,192,225,192,115,128, + 127,128,30,0,10,14,28,12,1,252,239,0,255,128,243,128, + 225,192,225,192,225,192,225,192,243,128,255,128,239,0,224,0, + 224,0,224,0,224,0,10,14,28,12,1,252,61,192,127,192, + 115,192,225,192,225,192,225,192,225,192,115,192,127,192,61,192, + 1,192,1,192,1,192,1,192,6,10,10,7,1,0,236,252, + 252,224,224,224,224,224,224,224,9,10,20,11,1,0,63,0, + 127,128,227,128,224,0,255,0,63,128,3,128,227,128,255,0, + 126,0,6,13,13,6,0,0,112,112,112,252,252,112,112,112, + 112,112,112,124,60,9,10,20,11,1,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 10,20,9,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,15,10,20,15,0,0,227, + 142,227,142,227,142,115,156,119,220,118,220,62,248,60,120,28, + 112,28,112,9,10,20,11,1,0,227,128,227,128,119,0,62, + 0,28,0,62,0,119,0,119,0,227,128,227,128,9,14,28, + 11,1,252,227,128,227,128,227,128,119,0,119,0,119,0,62, + 0,62,0,28,0,28,0,28,0,24,0,120,0,112,0,8, + 10,10,10,1,0,255,255,7,14,28,56,112,224,255,255,7, + 18,18,8,1,252,14,28,56,56,56,56,56,112,224,112,56, + 56,56,56,56,56,28,14,2,18,18,5,1,252,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,7, + 18,18,8,0,252,224,112,56,56,56,56,56,28,14,28,56, + 56,56,56,56,56,112,224,9,3,6,11,1,4,121,128,255, + 128,207,0,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=17 dx=24 dy= 0 ascent=24 len=72 + Font Bounding box w=28 h=37 x=-2 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB18[7527] U8G_SECTION(".progmem.u8g_font_helvB18") = { + 0,28,37,254,248,19,4,35,9,107,32,255,251,24,251,19, + 251,0,0,0,6,0,1,3,19,19,7,2,0,224,224,224, + 224,224,224,224,224,224,224,224,192,192,192,0,0,224,224,224, + 5,6,6,9,2,13,216,216,216,216,216,144,12,18,36,14, + 1,0,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,25,128,255,224,255,224,51,0,51,0, + 51,0,51,0,51,0,12,21,42,13,0,254,6,0,63,128, + 127,224,246,224,230,112,230,112,246,0,126,0,62,0,15,0, + 7,192,7,224,6,240,230,112,230,112,230,112,246,240,127,224, + 31,192,6,0,6,0,21,18,54,22,0,0,0,7,0,62, + 7,0,127,14,0,227,142,0,193,156,0,193,156,0,227,184, + 0,127,56,0,62,112,0,0,112,0,0,227,224,0,231,240, + 1,206,56,1,204,24,3,140,24,3,142,56,7,7,240,7, + 3,224,16,18,36,18,1,0,15,128,31,192,61,224,56,224, + 56,224,56,224,29,192,15,128,31,0,63,156,123,220,113,252, + 224,248,224,112,224,248,241,252,127,206,31,135,2,6,6,6, + 2,13,192,192,192,192,192,128,6,24,24,8,1,251,12,28, + 56,56,112,112,96,224,224,224,224,224,224,224,224,224,224,96, + 112,112,56,56,28,12,6,24,24,8,1,251,192,224,112,112, + 56,56,24,28,28,28,28,28,28,28,28,28,28,24,56,56, + 112,112,224,192,8,7,7,10,1,12,24,24,219,255,60,102, + 102,12,12,24,15,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,3, + 6,6,7,2,253,224,224,224,96,96,192,7,3,3,8,0, + 6,254,254,254,3,3,3,7,2,0,224,224,224,7,19,19, + 8,1,0,6,6,6,12,12,12,24,24,24,24,48,48,48, + 96,96,96,192,192,192,12,18,36,13,0,0,31,128,63,192, + 121,224,112,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,112,224,112,224,121,224,63,192,31,128, + 7,18,18,13,2,0,14,14,30,254,254,14,14,14,14,14, + 14,14,14,14,14,14,14,14,12,18,36,13,0,0,31,0, + 127,192,113,224,224,224,224,112,224,112,0,112,0,224,1,224, + 3,192,7,128,31,0,60,0,120,0,240,0,224,0,255,240, + 255,240,12,18,36,13,0,0,31,0,127,192,113,192,224,224, + 224,224,224,224,0,224,1,192,15,128,15,224,0,224,0,112, + 0,112,224,112,224,240,113,224,127,224,31,128,12,18,36,13, + 0,0,1,192,3,192,3,192,7,192,7,192,13,192,29,192, + 25,192,49,192,113,192,97,192,225,192,255,240,255,240,1,192, + 1,192,1,192,1,192,12,18,36,13,0,0,127,224,127,224, + 112,0,112,0,112,0,112,0,127,128,127,192,113,224,0,224, + 0,112,0,112,0,112,224,112,224,240,241,224,127,192,31,128, + 12,18,36,13,0,0,15,128,63,224,120,224,112,112,224,112, + 224,0,224,0,239,0,255,192,249,224,240,224,224,112,224,112, + 224,112,112,224,121,224,63,192,31,128,12,18,36,13,0,0, + 255,240,255,240,0,240,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,14,0,14,0,30,0,28,0,28,0,60,0, + 56,0,56,0,12,18,36,13,0,0,15,0,63,192,57,192, + 112,224,112,224,112,224,112,224,57,192,31,128,63,192,112,224, + 224,112,224,112,224,112,224,112,112,224,127,224,31,128,12,18, + 36,13,0,0,31,128,127,192,121,224,240,224,224,112,224,112, + 224,112,224,112,240,240,121,240,127,240,31,112,0,112,0,112, + 224,224,243,224,127,192,31,0,3,14,14,7,2,0,224,224, + 224,0,0,0,0,0,0,0,0,224,224,224,3,17,17,7, + 2,253,224,224,224,0,0,0,0,0,0,0,0,224,224,224, + 96,96,192,13,12,24,15,0,1,0,56,0,248,3,224,15, + 128,62,0,240,0,240,0,62,0,15,128,3,224,0,248,0, + 56,10,5,10,14,2,5,255,192,255,192,0,0,255,192,255, + 192,13,12,24,14,1,1,224,0,248,0,62,0,15,128,3, + 224,0,120,0,120,3,224,15,128,62,0,248,0,224,0,11, + 19,38,15,2,0,31,128,127,192,121,224,240,224,224,224,225, + 224,1,192,3,192,7,128,7,0,14,0,14,0,14,0,14, + 0,0,0,0,0,14,0,14,0,14,0,22,22,66,24,1, + 252,1,255,0,7,255,192,15,129,240,30,0,120,60,0,56, + 120,125,156,112,255,156,241,199,28,227,135,28,227,14,28,231, + 14,56,231,12,56,231,28,112,231,28,112,227,157,224,243,255, + 192,113,247,0,120,0,0,60,0,0,31,7,0,15,255,0, + 3,252,0,16,19,38,18,1,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,15, + 19,38,18,2,0,255,224,255,248,224,120,224,28,224,28,224, + 28,224,28,224,56,255,240,255,248,224,28,224,14,224,14,224, + 14,224,14,224,30,224,124,255,248,255,224,16,19,38,18,1, + 0,7,240,31,252,62,62,120,15,112,7,240,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,7,112,7,120, + 15,62,62,31,252,7,240,16,19,38,19,2,0,255,224,255, + 248,224,124,224,30,224,14,224,15,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,224,14,224,30,224,124,255, + 248,255,224,13,19,38,16,2,0,255,240,255,240,224,0,224, + 0,224,0,224,0,224,0,224,0,255,224,255,224,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,248,255,248,12, + 19,38,15,2,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,255,224,255,224,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,17,19,57,19,1, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,0,0,224,0,0,224,0,0,224,0,0,224,127,128,224, + 127,128,224,3,128,224,3,128,240,3,128,112,7,128,120,15, + 128,62,63,128,31,251,128,7,243,128,15,19,38,19,2,0, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,3,19,19,7,2,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 19,38,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,224,224,224, + 224,224,224,224,224,113,224,127,192,63,128,14,19,38,18,2, + 0,224,60,224,120,224,240,225,224,227,192,231,128,239,0,254, + 0,254,0,255,0,247,128,227,128,225,192,225,224,224,224,224, + 112,224,120,224,56,224,60,12,19,38,15,2,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,19,19,57,23,2,0,224,0,224,240,1,224,240, + 1,224,248,3,224,248,3,224,252,7,224,236,6,224,238,14, + 224,230,12,224,231,28,224,231,28,224,227,24,224,227,184,224, + 227,184,224,225,240,224,225,240,224,224,224,224,224,224,224,224, + 224,224,15,19,38,19,2,0,224,14,240,14,240,14,248,14, + 248,14,252,14,238,14,238,14,231,14,227,142,227,142,225,206, + 224,206,224,238,224,126,224,62,224,62,224,30,224,14,17,19, + 57,19,1,0,7,240,0,31,252,0,62,62,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,240,7,128,112,7, + 0,120,15,0,62,62,0,31,252,0,7,240,0,14,19,38, + 17,2,0,255,224,255,248,224,56,224,28,224,28,224,28,224, + 28,224,56,255,248,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,17,20,60,19,1,255,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,39,128,112,119,0,120,63,0,62, + 30,0,31,254,0,7,247,0,0,2,0,14,19,38,17,2, + 0,255,224,255,248,224,56,224,28,224,28,224,28,224,28,224, + 56,255,248,255,240,224,120,224,56,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,14,19,38,17,2,0,15,192,63, + 240,120,248,240,56,224,56,224,0,240,0,124,0,63,192,7, + 240,0,248,0,60,0,28,224,28,224,28,224,60,248,248,127, + 240,31,192,15,19,38,15,0,0,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 19,38,19,2,0,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,112,28,124,124,63,248,15,224,16,19,38,18,1, + 0,224,7,224,7,240,15,112,14,120,30,56,28,56,28,60, + 60,28,56,28,56,30,120,14,112,14,112,14,112,7,224,7, + 224,3,192,3,192,3,192,21,19,57,23,1,0,224,112,56, + 224,112,56,224,112,56,224,112,56,112,248,112,112,248,112,112, + 216,112,113,220,112,49,220,96,57,220,224,57,140,224,59,142, + 224,27,142,192,27,142,192,31,7,192,31,7,192,14,3,128, + 14,3,128,14,3,128,16,19,38,18,1,0,224,7,240,15, + 120,30,56,28,28,56,14,112,15,240,7,224,3,192,3,192, + 7,224,15,240,14,112,28,56,60,60,56,28,112,14,240,15, + 224,7,15,19,38,17,1,0,224,14,240,14,112,28,120,28, + 56,56,60,56,28,112,28,112,14,224,14,224,7,192,7,192, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,14,19, + 38,16,1,0,255,252,255,252,0,60,0,120,0,240,1,224, + 1,224,3,192,7,128,7,128,15,0,30,0,30,0,60,0, + 56,0,120,0,240,0,255,252,255,252,5,24,24,8,1,251, + 248,248,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,248,248,7,19,19,8,0,0,192,192, + 192,96,96,96,48,48,48,48,24,24,24,12,12,12,6,6, + 6,5,24,24,8,2,251,248,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,248,248,11, + 9,18,14,1,10,14,0,14,0,31,0,27,0,59,128,113, + 192,113,192,224,224,224,224,14,2,4,14,0,251,255,252,255, + 252,6,4,4,8,1,15,224,112,56,28,12,14,28,14,1, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 15,2,0,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,11,14,28,13,1,0,31, + 128,63,192,121,224,112,224,224,0,224,0,224,0,224,0,224, + 0,224,0,112,224,121,224,63,192,31,128,12,19,38,15,1, + 0,0,112,0,112,0,112,0,112,0,112,31,112,63,240,121, + 240,112,240,224,112,224,112,224,112,224,112,224,112,224,112,112, + 240,121,240,63,240,31,112,12,14,28,14,1,0,15,0,63, + 192,121,224,112,224,224,112,224,112,255,240,255,240,224,0,224, + 0,112,112,120,240,63,224,15,128,7,19,19,9,1,0,30, + 62,56,56,56,254,254,56,56,56,56,56,56,56,56,56,56, + 56,56,12,19,38,15,1,251,31,112,63,240,121,240,112,240, + 224,112,224,112,224,112,224,112,224,112,224,112,112,240,121,240, + 63,240,31,112,0,112,224,112,240,224,127,224,31,128,11,19, + 38,15,2,0,224,0,224,0,224,0,224,0,224,0,239,0, + 255,192,241,192,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,3,19,19,7,2,0, + 224,224,224,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,5,24,24,7,0,251,56,56,56,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,248, + 240,11,19,38,14,2,0,224,0,224,0,224,0,224,0,224, + 0,225,192,227,192,231,128,239,0,254,0,252,0,254,0,239, + 0,231,0,231,128,227,192,225,192,225,224,224,224,3,19,19, + 7,2,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,17,14,42,21,2,0,239,62,0,255, + 255,0,243,231,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,225,195,128,225,195,128,225,195,128, + 225,195,128,225,195,128,11,14,28,15,2,0,239,128,255,192, + 241,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,12,14,28,14,1,0,15,0, + 63,192,121,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,112,224,121,224,63,192,15,0,12,19,38,15,2,251, + 239,128,255,192,249,224,240,224,224,112,224,112,224,112,224,112, + 224,112,224,112,240,224,249,224,255,192,239,128,224,0,224,0, + 224,0,224,0,224,0,12,19,38,15,1,251,31,112,63,240, + 121,240,112,240,224,112,224,112,224,112,224,112,224,112,224,112, + 112,240,121,240,63,240,31,112,0,112,0,112,0,112,0,112, + 0,112,7,14,14,10,2,0,238,254,254,240,224,224,224,224, + 224,224,224,224,224,224,11,14,28,13,1,0,63,0,127,128, + 243,192,225,192,224,0,252,0,127,128,15,192,1,224,224,224, + 224,224,241,224,127,192,63,128,7,18,18,9,1,0,56,56, + 56,56,254,254,56,56,56,56,56,56,56,56,56,56,62,30, + 11,14,28,15,2,0,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,225,224,115,224,126,224, + 28,224,12,14,28,14,1,0,224,112,224,112,224,112,112,224, + 112,224,112,224,57,192,57,192,57,192,31,128,31,128,15,0, + 15,0,15,0,19,14,42,19,0,0,224,224,224,224,224,224, + 96,224,192,113,241,192,113,241,192,49,177,128,51,185,128,59, + 187,128,27,27,0,31,31,0,31,31,0,14,14,0,14,14, + 0,14,14,0,11,14,28,13,1,0,224,224,241,224,113,192, + 59,128,63,128,31,0,14,0,31,0,31,0,59,128,123,192, + 113,192,241,224,224,224,13,19,38,15,1,251,224,56,224,56, + 112,56,120,112,56,112,60,240,28,224,28,224,15,192,15,192, + 7,192,7,128,3,128,3,128,7,0,7,0,14,0,62,0, + 60,0,11,14,28,13,1,0,255,224,255,224,1,192,3,128, + 7,128,15,0,14,0,30,0,60,0,56,0,112,0,240,0, + 255,224,255,224,7,24,24,10,1,251,14,28,56,56,56,56, + 56,56,56,56,112,224,224,112,56,56,56,56,56,56,56,56, + 28,14,2,24,24,7,3,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,24,24,10,2,251,224,112,56,56,56,56,56,56,56,56, + 28,14,14,28,56,56,56,56,56,56,56,56,112,224,11,4, + 8,14,1,5,120,224,254,224,239,224,227,192,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 6,0,1,3,19,19,7,2,251,224,224,224,0,0,96,96, + 96,224,224,224,224,224,224,224,224,224,224,224,11,18,36,14, + 1,254,1,128,1,128,31,128,63,192,123,224,115,96,227,0, + 230,0,230,0,230,0,230,0,236,0,236,224,125,224,127,192, + 63,128,24,0,24,0,13,18,36,14,1,0,31,128,63,192, + 112,224,112,224,112,0,120,0,56,0,28,0,255,192,255,192, + 28,0,28,0,28,0,56,0,56,0,127,56,255,248,241,240, + 12,12,24,14,1,3,192,48,239,112,127,224,57,192,112,224, + 112,224,112,224,112,224,57,192,127,224,239,112,192,48,13,18, + 36,14,0,0,224,56,224,56,112,112,112,112,56,224,56,224, + 29,192,29,192,127,240,127,240,7,0,127,240,127,240,7,0, + 7,0,7,0,7,0,7,0,2,24,24,7,3,251,192,192, + 192,192,192,192,192,192,192,192,0,0,0,0,192,192,192,192, + 192,192,192,192,192,192,12,24,48,14,1,251,31,128,63,192, + 121,224,112,224,120,224,60,0,30,0,127,0,247,128,227,192, + 225,224,224,224,112,112,120,112,60,112,30,224,15,192,7,128, + 3,192,113,224,112,224,121,224,63,192,31,128,7,2,2,9, + 1,16,238,238,19,19,57,19,0,0,1,240,0,15,254,0, + 30,15,0,56,3,128,112,1,192,97,240,192,227,184,224,198, + 12,96,198,0,96,198,0,96,198,0,96,198,12,96,227,184, + 224,97,240,192,112,1,192,56,3,128,30,15,0,15,254,0, + 1,240,0,8,12,12,10,1,7,124,254,198,30,126,230,198, + 255,123,0,255,255,10,8,16,13,1,3,29,192,59,128,119, + 0,238,0,238,0,119,0,59,128,29,192,12,7,14,15,1, + 4,255,240,255,240,0,48,0,48,0,48,0,48,0,48,7, + 3,3,8,0,6,254,254,254,19,19,57,19,0,0,3,248, + 0,15,254,0,28,15,0,56,3,128,115,249,192,99,28,192, + 227,12,224,195,12,96,195,24,96,195,240,96,195,48,96,195, + 24,96,227,24,96,99,12,224,112,0,192,56,1,192,30,3, + 128,15,254,0,3,248,0,7,2,2,9,1,17,254,254,8, + 7,7,9,0,11,60,102,195,195,195,102,60,11,13,26,15, + 2,0,14,0,14,0,14,0,14,0,255,224,255,224,14,0, + 14,0,14,0,14,0,0,0,255,224,255,224,6,10,10,7, + 0,8,120,252,204,12,28,120,224,192,252,252,6,10,10,7, + 0,8,120,252,204,12,56,56,12,204,252,120,6,4,4,8, + 1,15,28,56,112,224,11,19,38,15,2,251,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 225,224,243,224,254,224,236,224,224,0,224,0,224,0,224,0, + 224,0,11,24,48,13,1,251,15,224,63,224,124,192,124,192, + 252,192,252,192,252,192,252,192,252,192,124,192,124,192,60,192, + 28,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,3,3,3,7,2,6,224,224, + 224,6,6,6,8,1,251,112,120,28,28,252,120,4,10,10, + 7,1,8,48,48,240,240,48,48,48,48,48,48,8,12,12, + 10,1,7,60,126,231,195,195,195,231,126,60,0,255,255,10, + 8,16,13,1,3,238,0,119,0,59,128,29,192,29,192,59, + 128,119,0,238,0,17,18,54,19,1,0,48,24,0,48,24, + 0,240,48,0,240,48,0,48,96,0,48,96,0,48,192,0, + 48,192,0,49,134,0,49,142,0,3,30,0,3,30,0,6, + 54,0,6,102,0,12,127,128,12,127,128,24,6,0,24,6, + 0,16,18,36,19,1,0,48,24,48,24,240,48,240,48,48, + 96,48,96,48,192,48,192,49,158,49,191,3,51,3,3,6, + 7,6,30,12,56,12,48,24,63,24,63,17,18,54,19,1, + 0,120,24,0,252,24,0,204,48,0,12,48,0,56,96,0, + 56,96,0,12,192,0,204,192,0,253,134,0,121,142,0,3, + 30,0,3,30,0,6,54,0,6,102,0,12,127,128,12,127, + 128,24,6,0,24,6,0,11,19,38,15,2,251,14,0,14, + 0,14,0,0,0,0,0,14,0,14,0,14,0,14,0,28, + 0,60,0,120,0,112,0,240,224,224,224,225,224,243,192,127, + 192,63,0,16,24,48,18,1,0,14,0,7,0,3,128,1, + 192,0,0,3,192,3,192,7,224,7,224,14,96,14,112,14, + 112,28,56,28,56,28,56,56,28,56,28,63,252,127,254,112, + 14,112,14,224,7,224,7,224,7,16,24,48,18,1,0,0, + 112,0,224,1,192,3,128,0,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,16, + 24,48,18,1,0,1,192,3,224,7,112,14,56,0,0,3, + 192,3,192,7,224,7,224,14,96,14,112,14,112,28,56,28, + 56,28,56,56,28,56,28,63,252,127,254,112,14,112,14,224, + 7,224,7,224,7,16,23,46,18,1,0,7,152,15,248,12, + 240,0,0,3,192,3,192,7,224,7,224,14,96,14,112,14, + 112,28,56,28,56,28,56,56,28,56,28,63,252,127,254,112, + 14,112,14,224,7,224,7,224,7,16,23,46,18,1,0,14, + 112,14,112,0,0,0,0,3,192,3,192,7,224,7,224,14, + 96,14,112,14,112,28,56,28,56,28,56,56,28,56,28,63, + 252,127,254,112,14,112,14,224,7,224,7,224,7,16,24,48, + 18,1,0,3,192,6,96,4,32,6,96,3,192,3,192,3, + 192,7,224,7,224,14,96,14,112,14,112,28,56,28,56,28, + 56,56,28,56,28,63,252,127,254,112,14,112,14,224,7,224, + 7,224,7,22,19,57,24,1,0,3,255,248,3,255,248,7, + 112,0,7,112,0,14,112,0,14,112,0,14,112,0,28,112, + 0,28,127,240,28,127,240,56,112,0,56,112,0,63,240,0, + 127,240,0,112,112,0,112,112,0,224,112,0,224,127,252,224, + 127,252,16,24,48,18,1,251,7,240,31,252,62,62,120,15, + 112,7,240,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,240,7,112,7,120,15,62,62,31,252,7,240,3,192, + 0,224,0,224,7,224,3,192,13,24,48,16,2,0,56,0, + 28,0,14,0,7,0,0,0,255,240,255,240,224,0,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,248,255,248,13,24, + 48,16,2,0,1,192,3,128,7,0,14,0,0,0,255,240, + 255,240,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,248,255,248,13,24,48,16,2,0,7,0,15,128,29,192, + 56,224,0,0,255,240,255,240,224,0,224,0,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,248,255,248,13,23,46,16,2,0, + 56,224,56,224,0,0,0,0,255,240,255,240,224,0,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,248,255,248,6,24, + 24,7,0,0,224,112,56,28,0,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,6,24,24,7, + 1,0,28,56,112,224,0,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,112,112,112,9,24,48,7,255,0, + 28,0,62,0,119,0,227,128,0,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 7,23,23,7,0,0,238,238,0,0,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,19,19,57, + 19,255,0,31,252,0,31,255,0,28,15,128,28,3,192,28, + 1,192,28,1,224,28,0,224,28,0,224,255,192,224,255,192, + 224,28,0,224,28,0,224,28,0,224,28,1,224,28,1,192, + 28,3,192,28,15,128,31,255,0,31,252,0,15,23,46,19, + 2,0,15,48,31,240,25,224,0,0,224,14,240,14,240,14, + 248,14,248,14,252,14,238,14,238,14,231,14,227,142,227,142, + 225,206,224,206,224,238,224,126,224,62,224,62,224,30,224,14, + 17,24,72,19,1,0,14,0,0,7,0,0,3,128,0,1, + 192,0,0,0,0,7,240,0,31,252,0,62,62,0,120,15, + 0,112,7,0,240,7,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,112, + 7,0,120,15,0,62,62,0,31,252,0,7,240,0,17,24, + 72,19,1,0,0,56,0,0,112,0,0,224,0,1,192,0, + 0,0,0,7,240,0,31,252,0,62,62,0,120,15,0,112, + 7,0,240,7,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,7,128,112,7,0, + 120,15,0,62,62,0,31,252,0,7,240,0,17,24,72,19, + 1,0,1,192,0,3,224,0,7,112,0,14,56,0,0,0, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,7,128,224,3,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,240,7,128,112,7,0,120,15, + 0,62,62,0,31,252,0,7,240,0,17,23,69,19,1,0, + 7,152,0,15,248,0,12,240,0,0,0,0,7,240,0,31, + 252,0,62,62,0,120,15,0,112,7,0,240,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,240,7,128,112,7,0,120,15,0,62,62,0,31, + 252,0,7,240,0,17,23,69,19,1,0,14,56,0,14,56, + 0,0,0,0,0,0,0,7,240,0,31,252,0,62,62,0, + 120,15,0,112,7,0,240,7,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,240,7, + 128,112,7,0,120,15,0,62,62,0,31,252,0,7,240,0, + 12,12,24,15,1,1,64,32,224,112,112,224,57,192,31,128, + 15,0,15,0,31,128,57,192,112,224,224,112,64,32,19,19, + 57,19,0,0,3,248,96,15,254,224,31,31,192,60,3,128, + 56,7,128,120,15,192,112,29,192,112,57,192,112,113,192,112, + 225,192,113,193,192,115,129,192,119,1,192,126,3,192,60,3, + 128,60,7,128,127,31,0,239,254,0,195,248,0,15,24,48, + 19,2,0,14,0,7,0,3,128,1,192,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,112,28,124,124,63, + 248,15,224,15,24,48,19,2,0,0,112,0,224,1,192,3, + 128,0,0,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,112,28,124,124,63,248,15,224,15,24,48,19,2,0,3, + 128,7,192,14,224,28,112,0,0,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,240,30,112,28,124,124,63,248,15,224,15, + 23,46,19,2,0,28,112,28,112,0,0,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,112,28,124,124,63, + 248,15,224,15,24,48,17,1,0,0,112,0,224,1,192,3, + 128,0,0,224,14,240,30,112,28,120,60,56,56,60,120,28, + 112,30,240,14,224,15,224,7,192,7,192,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,14,19,38,17,2,0,224, + 0,224,0,224,0,224,0,255,224,255,248,224,56,224,28,224, + 28,224,28,224,28,224,56,255,248,255,240,224,0,224,0,224, + 0,224,0,224,0,11,19,38,14,2,0,30,0,127,128,243, + 128,225,192,225,192,225,192,225,192,227,128,239,0,239,128,227, + 192,225,192,224,224,224,224,224,224,224,224,225,192,239,192,239, + 128,12,19,38,14,1,0,28,0,14,0,7,0,3,128,0, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 14,1,0,1,192,3,128,7,0,14,0,0,0,31,128,63, + 192,113,224,112,224,0,224,7,224,63,224,124,224,240,224,224, + 224,225,224,243,224,127,240,62,112,12,19,38,14,1,0,7, + 0,15,128,29,192,56,224,0,0,31,128,63,192,113,224,112, + 224,0,224,7,224,63,224,124,224,240,224,224,224,225,224,243, + 224,127,240,62,112,12,19,38,14,1,0,60,192,127,192,103, + 128,0,0,0,0,31,128,63,192,113,224,112,224,0,224,7, + 224,63,224,124,224,240,224,224,224,225,224,243,224,127,240,62, + 112,12,18,36,14,1,0,57,192,57,192,0,0,0,0,31, + 128,63,192,113,224,112,224,0,224,7,224,63,224,124,224,240, + 224,224,224,225,224,243,224,127,240,62,112,12,19,38,14,1, + 0,7,0,13,128,8,128,13,128,7,0,31,128,63,192,113, + 224,112,224,0,224,7,224,63,224,124,224,240,224,224,224,225, + 224,243,224,127,240,62,112,20,14,42,22,1,0,31,143,0, + 63,255,192,113,249,224,112,240,224,0,224,112,7,224,112,63, + 255,240,124,255,240,240,224,0,224,224,0,225,240,112,243,248, + 240,127,63,224,62,15,128,11,19,38,13,1,251,31,128,63, + 192,121,224,112,224,224,0,224,0,224,0,224,0,224,0,224, + 0,112,224,121,224,63,192,31,128,30,0,7,0,7,0,63, + 0,30,0,12,19,38,14,1,0,28,0,14,0,7,0,3, + 128,0,0,15,0,63,192,121,224,112,224,224,112,224,112,255, + 240,255,240,224,0,224,0,112,112,120,240,63,224,15,128,12, + 19,38,14,1,0,3,128,7,0,14,0,28,0,0,0,15, + 0,63,192,121,224,112,224,224,112,224,112,255,240,255,240,224, + 0,224,0,112,112,120,240,63,224,15,128,12,19,38,14,1, + 0,7,0,15,128,29,192,56,224,0,0,15,0,63,192,121, + 224,112,224,224,112,224,112,255,240,255,240,224,0,224,0,112, + 112,120,240,63,224,15,128,12,18,36,14,1,0,57,192,57, + 192,0,0,0,0,15,0,63,192,121,224,112,224,224,112,224, + 112,255,240,255,240,224,0,224,0,112,112,120,240,63,224,15, + 128,6,19,19,7,0,0,224,112,56,28,0,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,6,19,19,7,1,0, + 28,56,112,224,0,112,112,112,112,112,112,112,112,112,112,112, + 112,112,112,9,19,38,7,255,0,28,0,62,0,119,0,227, + 128,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,7, + 18,18,7,0,0,238,238,0,0,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,12,19,38,14,1,0,112,0,29, + 192,7,0,31,0,97,128,15,192,63,192,121,224,112,224,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,121,224,63, + 192,15,0,11,19,38,15,2,0,60,192,127,192,103,128,0, + 0,0,0,239,128,255,192,241,192,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,12, + 19,38,14,1,0,28,0,14,0,7,0,3,128,0,0,15, + 0,63,192,121,224,112,224,224,112,224,112,224,112,224,112,224, + 112,224,112,112,224,121,224,63,192,15,0,12,19,38,14,1, + 0,3,128,7,0,14,0,28,0,0,0,15,0,63,192,121, + 224,112,224,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,121,224,63,192,15,0,12,19,38,14,1,0,14,0,31, + 0,59,128,113,192,0,0,15,0,63,192,121,224,112,224,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,121,224,63, + 192,15,0,12,19,38,14,1,0,60,192,127,192,103,128,0, + 0,0,0,15,0,63,192,121,224,112,224,224,112,224,112,224, + 112,224,112,224,112,224,112,112,224,121,224,63,192,15,0,12, + 18,36,14,1,0,57,192,57,192,0,0,0,0,15,0,63, + 192,121,224,112,224,224,112,224,112,224,112,224,112,224,112,224, + 112,112,224,121,224,63,192,15,0,11,12,24,15,2,1,14, + 0,14,0,14,0,0,0,0,0,255,224,255,224,0,0,0, + 0,14,0,14,0,14,0,14,14,28,14,0,0,7,140,31, + 252,60,248,56,112,112,248,113,248,115,184,119,56,126,56,124, + 56,56,112,124,240,255,224,199,128,11,19,38,15,2,0,56, + 0,28,0,14,0,7,0,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,225,224,115, + 224,126,224,28,224,11,19,38,15,2,0,3,128,7,0,14, + 0,28,0,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,225,224,115,224,126,224,28, + 224,11,19,38,15,2,0,14,0,31,0,59,128,113,192,0, + 0,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,225,224,115,224,126,224,28,224,11,18,36, + 15,2,0,57,192,57,192,0,0,0,0,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,225, + 224,115,224,126,224,28,224,13,24,48,15,1,251,0,224,1, + 192,3,128,7,0,0,0,224,56,224,56,112,56,120,112,56, + 112,60,240,28,224,28,224,15,192,15,192,7,192,7,128,3, + 128,3,128,7,0,7,0,14,0,62,0,60,0,12,24,48, + 15,2,251,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,224,0,224,0,224,0,224, + 0,224,0,13,23,46,15,1,251,28,224,28,224,0,0,0, + 0,224,56,224,56,112,56,120,112,56,112,60,240,28,224,28, + 224,15,192,15,192,7,192,7,128,3,128,3,128,7,0,7, + 0,14,0,62,0,60,0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=15 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=28 h=37 x=-2 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB18r[3453] U8G_SECTION(".progmem.u8g_font_helvB18r") = { + 0,28,37,254,248,19,4,35,9,107,32,127,251,19,251,19, + 251,0,0,0,6,0,1,3,19,19,7,2,0,224,224,224, + 224,224,224,224,224,224,224,224,192,192,192,0,0,224,224,224, + 5,6,6,9,2,13,216,216,216,216,216,144,12,18,36,14, + 1,0,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,25,128,255,224,255,224,51,0,51,0, + 51,0,51,0,51,0,12,21,42,13,0,254,6,0,63,128, + 127,224,246,224,230,112,230,112,246,0,126,0,62,0,15,0, + 7,192,7,224,6,240,230,112,230,112,230,112,246,240,127,224, + 31,192,6,0,6,0,21,18,54,22,0,0,0,7,0,62, + 7,0,127,14,0,227,142,0,193,156,0,193,156,0,227,184, + 0,127,56,0,62,112,0,0,112,0,0,227,224,0,231,240, + 1,206,56,1,204,24,3,140,24,3,142,56,7,7,240,7, + 3,224,16,18,36,18,1,0,15,128,31,192,61,224,56,224, + 56,224,56,224,29,192,15,128,31,0,63,156,123,220,113,252, + 224,248,224,112,224,248,241,252,127,206,31,135,2,6,6,6, + 2,13,192,192,192,192,192,128,6,24,24,8,1,251,12,28, + 56,56,112,112,96,224,224,224,224,224,224,224,224,224,224,96, + 112,112,56,56,28,12,6,24,24,8,1,251,192,224,112,112, + 56,56,24,28,28,28,28,28,28,28,28,28,28,24,56,56, + 112,112,224,192,8,7,7,10,1,12,24,24,219,255,60,102, + 102,12,12,24,15,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,3, + 6,6,7,2,253,224,224,224,96,96,192,7,3,3,8,0, + 6,254,254,254,3,3,3,7,2,0,224,224,224,7,19,19, + 8,1,0,6,6,6,12,12,12,24,24,24,24,48,48,48, + 96,96,96,192,192,192,12,18,36,13,0,0,31,128,63,192, + 121,224,112,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,112,224,112,224,121,224,63,192,31,128, + 7,18,18,13,2,0,14,14,30,254,254,14,14,14,14,14, + 14,14,14,14,14,14,14,14,12,18,36,13,0,0,31,0, + 127,192,113,224,224,224,224,112,224,112,0,112,0,224,1,224, + 3,192,7,128,31,0,60,0,120,0,240,0,224,0,255,240, + 255,240,12,18,36,13,0,0,31,0,127,192,113,192,224,224, + 224,224,224,224,0,224,1,192,15,128,15,224,0,224,0,112, + 0,112,224,112,224,240,113,224,127,224,31,128,12,18,36,13, + 0,0,1,192,3,192,3,192,7,192,7,192,13,192,29,192, + 25,192,49,192,113,192,97,192,225,192,255,240,255,240,1,192, + 1,192,1,192,1,192,12,18,36,13,0,0,127,224,127,224, + 112,0,112,0,112,0,112,0,127,128,127,192,113,224,0,224, + 0,112,0,112,0,112,224,112,224,240,241,224,127,192,31,128, + 12,18,36,13,0,0,15,128,63,224,120,224,112,112,224,112, + 224,0,224,0,239,0,255,192,249,224,240,224,224,112,224,112, + 224,112,112,224,121,224,63,192,31,128,12,18,36,13,0,0, + 255,240,255,240,0,240,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,14,0,14,0,30,0,28,0,28,0,60,0, + 56,0,56,0,12,18,36,13,0,0,15,0,63,192,57,192, + 112,224,112,224,112,224,112,224,57,192,31,128,63,192,112,224, + 224,112,224,112,224,112,224,112,112,224,127,224,31,128,12,18, + 36,13,0,0,31,128,127,192,121,224,240,224,224,112,224,112, + 224,112,224,112,240,240,121,240,127,240,31,112,0,112,0,112, + 224,224,243,224,127,192,31,0,3,14,14,7,2,0,224,224, + 224,0,0,0,0,0,0,0,0,224,224,224,3,17,17,7, + 2,253,224,224,224,0,0,0,0,0,0,0,0,224,224,224, + 96,96,192,13,12,24,15,0,1,0,56,0,248,3,224,15, + 128,62,0,240,0,240,0,62,0,15,128,3,224,0,248,0, + 56,10,5,10,14,2,5,255,192,255,192,0,0,255,192,255, + 192,13,12,24,14,1,1,224,0,248,0,62,0,15,128,3, + 224,0,120,0,120,3,224,15,128,62,0,248,0,224,0,11, + 19,38,15,2,0,31,128,127,192,121,224,240,224,224,224,225, + 224,1,192,3,192,7,128,7,0,14,0,14,0,14,0,14, + 0,0,0,0,0,14,0,14,0,14,0,22,22,66,24,1, + 252,1,255,0,7,255,192,15,129,240,30,0,120,60,0,56, + 120,125,156,112,255,156,241,199,28,227,135,28,227,14,28,231, + 14,56,231,12,56,231,28,112,231,28,112,227,157,224,243,255, + 192,113,247,0,120,0,0,60,0,0,31,7,0,15,255,0, + 3,252,0,16,19,38,18,1,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,15, + 19,38,18,2,0,255,224,255,248,224,120,224,28,224,28,224, + 28,224,28,224,56,255,240,255,248,224,28,224,14,224,14,224, + 14,224,14,224,30,224,124,255,248,255,224,16,19,38,18,1, + 0,7,240,31,252,62,62,120,15,112,7,240,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,7,112,7,120, + 15,62,62,31,252,7,240,16,19,38,19,2,0,255,224,255, + 248,224,124,224,30,224,14,224,15,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,224,14,224,30,224,124,255, + 248,255,224,13,19,38,16,2,0,255,240,255,240,224,0,224, + 0,224,0,224,0,224,0,224,0,255,224,255,224,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,248,255,248,12, + 19,38,15,2,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,255,224,255,224,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,17,19,57,19,1, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,0,0,224,0,0,224,0,0,224,0,0,224,127,128,224, + 127,128,224,3,128,224,3,128,240,3,128,112,7,128,120,15, + 128,62,63,128,31,251,128,7,243,128,15,19,38,19,2,0, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,3,19,19,7,2,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 19,38,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,224,224,224, + 224,224,224,224,224,113,224,127,192,63,128,14,19,38,18,2, + 0,224,60,224,120,224,240,225,224,227,192,231,128,239,0,254, + 0,254,0,255,0,247,128,227,128,225,192,225,224,224,224,224, + 112,224,120,224,56,224,60,12,19,38,15,2,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,19,19,57,23,2,0,224,0,224,240,1,224,240, + 1,224,248,3,224,248,3,224,252,7,224,236,6,224,238,14, + 224,230,12,224,231,28,224,231,28,224,227,24,224,227,184,224, + 227,184,224,225,240,224,225,240,224,224,224,224,224,224,224,224, + 224,224,15,19,38,19,2,0,224,14,240,14,240,14,248,14, + 248,14,252,14,238,14,238,14,231,14,227,142,227,142,225,206, + 224,206,224,238,224,126,224,62,224,62,224,30,224,14,17,19, + 57,19,1,0,7,240,0,31,252,0,62,62,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,240,7,128,112,7, + 0,120,15,0,62,62,0,31,252,0,7,240,0,14,19,38, + 17,2,0,255,224,255,248,224,56,224,28,224,28,224,28,224, + 28,224,56,255,248,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,17,20,60,19,1,255,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,39,128,112,119,0,120,63,0,62, + 30,0,31,254,0,7,247,0,0,2,0,14,19,38,17,2, + 0,255,224,255,248,224,56,224,28,224,28,224,28,224,28,224, + 56,255,248,255,240,224,120,224,56,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,14,19,38,17,2,0,15,192,63, + 240,120,248,240,56,224,56,224,0,240,0,124,0,63,192,7, + 240,0,248,0,60,0,28,224,28,224,28,224,60,248,248,127, + 240,31,192,15,19,38,15,0,0,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 19,38,19,2,0,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,112,28,124,124,63,248,15,224,16,19,38,18,1, + 0,224,7,224,7,240,15,112,14,120,30,56,28,56,28,60, + 60,28,56,28,56,30,120,14,112,14,112,14,112,7,224,7, + 224,3,192,3,192,3,192,21,19,57,23,1,0,224,112,56, + 224,112,56,224,112,56,224,112,56,112,248,112,112,248,112,112, + 216,112,113,220,112,49,220,96,57,220,224,57,140,224,59,142, + 224,27,142,192,27,142,192,31,7,192,31,7,192,14,3,128, + 14,3,128,14,3,128,16,19,38,18,1,0,224,7,240,15, + 120,30,56,28,28,56,14,112,15,240,7,224,3,192,3,192, + 7,224,15,240,14,112,28,56,60,60,56,28,112,14,240,15, + 224,7,15,19,38,17,1,0,224,14,240,14,112,28,120,28, + 56,56,60,56,28,112,28,112,14,224,14,224,7,192,7,192, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,14,19, + 38,16,1,0,255,252,255,252,0,60,0,120,0,240,1,224, + 1,224,3,192,7,128,7,128,15,0,30,0,30,0,60,0, + 56,0,120,0,240,0,255,252,255,252,5,24,24,8,1,251, + 248,248,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,248,248,7,19,19,8,0,0,192,192, + 192,96,96,96,48,48,48,48,24,24,24,12,12,12,6,6, + 6,5,24,24,8,2,251,248,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,248,248,11, + 9,18,14,1,10,14,0,14,0,31,0,27,0,59,128,113, + 192,113,192,224,224,224,224,14,2,4,14,0,251,255,252,255, + 252,6,4,4,8,1,15,224,112,56,28,12,14,28,14,1, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 15,2,0,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,11,14,28,13,1,0,31, + 128,63,192,121,224,112,224,224,0,224,0,224,0,224,0,224, + 0,224,0,112,224,121,224,63,192,31,128,12,19,38,15,1, + 0,0,112,0,112,0,112,0,112,0,112,31,112,63,240,121, + 240,112,240,224,112,224,112,224,112,224,112,224,112,224,112,112, + 240,121,240,63,240,31,112,12,14,28,14,1,0,15,0,63, + 192,121,224,112,224,224,112,224,112,255,240,255,240,224,0,224, + 0,112,112,120,240,63,224,15,128,7,19,19,9,1,0,30, + 62,56,56,56,254,254,56,56,56,56,56,56,56,56,56,56, + 56,56,12,19,38,15,1,251,31,112,63,240,121,240,112,240, + 224,112,224,112,224,112,224,112,224,112,224,112,112,240,121,240, + 63,240,31,112,0,112,224,112,240,224,127,224,31,128,11,19, + 38,15,2,0,224,0,224,0,224,0,224,0,224,0,239,0, + 255,192,241,192,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,3,19,19,7,2,0, + 224,224,224,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,5,24,24,7,0,251,56,56,56,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,248, + 240,11,19,38,14,2,0,224,0,224,0,224,0,224,0,224, + 0,225,192,227,192,231,128,239,0,254,0,252,0,254,0,239, + 0,231,0,231,128,227,192,225,192,225,224,224,224,3,19,19, + 7,2,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,17,14,42,21,2,0,239,62,0,255, + 255,0,243,231,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,225,195,128,225,195,128,225,195,128, + 225,195,128,225,195,128,11,14,28,15,2,0,239,128,255,192, + 241,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,12,14,28,14,1,0,15,0, + 63,192,121,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,112,224,121,224,63,192,15,0,12,19,38,15,2,251, + 239,128,255,192,249,224,240,224,224,112,224,112,224,112,224,112, + 224,112,224,112,240,224,249,224,255,192,239,128,224,0,224,0, + 224,0,224,0,224,0,12,19,38,15,1,251,31,112,63,240, + 121,240,112,240,224,112,224,112,224,112,224,112,224,112,224,112, + 112,240,121,240,63,240,31,112,0,112,0,112,0,112,0,112, + 0,112,7,14,14,10,2,0,238,254,254,240,224,224,224,224, + 224,224,224,224,224,224,11,14,28,13,1,0,63,0,127,128, + 243,192,225,192,224,0,252,0,127,128,15,192,1,224,224,224, + 224,224,241,224,127,192,63,128,7,18,18,9,1,0,56,56, + 56,56,254,254,56,56,56,56,56,56,56,56,56,56,62,30, + 11,14,28,15,2,0,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,225,224,115,224,126,224, + 28,224,12,14,28,14,1,0,224,112,224,112,224,112,112,224, + 112,224,112,224,57,192,57,192,57,192,31,128,31,128,15,0, + 15,0,15,0,19,14,42,19,0,0,224,224,224,224,224,224, + 96,224,192,113,241,192,113,241,192,49,177,128,51,185,128,59, + 187,128,27,27,0,31,31,0,31,31,0,14,14,0,14,14, + 0,14,14,0,11,14,28,13,1,0,224,224,241,224,113,192, + 59,128,63,128,31,0,14,0,31,0,31,0,59,128,123,192, + 113,192,241,224,224,224,13,19,38,15,1,251,224,56,224,56, + 112,56,120,112,56,112,60,240,28,224,28,224,15,192,15,192, + 7,192,7,128,3,128,3,128,7,0,7,0,14,0,62,0, + 60,0,11,14,28,13,1,0,255,224,255,224,1,192,3,128, + 7,128,15,0,14,0,30,0,60,0,56,0,112,0,240,0, + 255,224,255,224,7,24,24,10,1,251,14,28,56,56,56,56, + 56,56,56,56,112,224,224,112,56,56,56,56,56,56,56,56, + 28,14,2,24,24,7,3,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,24,24,10,2,251,224,112,56,56,56,56,56,56,56,56, + 28,14,14,28,56,56,56,56,56,56,56,56,112,224,11,4, + 8,14,1,5,120,224,254,224,239,224,227,192,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 23 + Calculated Max Values w=31 h=32 x= 4 y=21 dx=33 dy= 0 ascent=31 len=120 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24[11554] U8G_SECTION(".progmem.u8g_font_helvB24") = { + 0,40,49,250,244,25,5,252,14,144,32,255,249,31,249,25, + 249,0,0,0,9,0,1,5,25,25,11,3,0,248,248,248, + 248,248,248,248,248,248,248,248,112,112,112,112,112,112,112,0, + 0,248,248,248,248,248,11,9,18,16,2,16,241,224,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,18,25, + 75,19,0,255,3,199,0,3,199,0,3,143,0,3,143,0, + 7,143,0,7,142,0,7,142,0,127,255,192,127,255,192,127, + 255,192,127,255,192,15,28,0,14,28,0,14,28,0,14,60, + 0,255,255,128,255,255,128,255,255,128,255,255,128,28,120,0, + 60,120,0,60,112,0,60,112,0,56,240,0,56,240,0,16, + 28,56,18,1,253,1,128,1,128,15,240,63,252,127,254,253, + 190,249,159,241,159,241,143,249,128,255,128,127,192,63,240,15, + 252,1,254,1,255,1,159,1,143,241,143,241,159,249,159,127, + 254,127,254,63,248,7,224,1,128,1,128,1,128,26,23,92, + 29,1,0,14,0,48,0,63,128,112,0,127,192,96,0,113, + 192,224,0,224,224,192,0,224,225,192,0,224,227,128,0,224, + 227,128,0,113,199,0,0,127,198,0,0,63,142,0,0,14, + 12,28,0,0,28,127,0,0,24,255,128,0,56,227,128,0, + 49,193,192,0,113,193,192,0,97,193,192,0,225,193,192,1, + 192,227,128,1,192,255,128,3,128,127,0,3,0,28,0,20, + 25,75,24,2,0,3,224,0,15,248,0,31,252,0,31,252, + 0,30,60,0,62,60,0,62,60,0,31,60,0,31,248,0, + 15,248,0,15,240,0,15,224,0,63,241,224,127,241,224,124, + 249,192,248,255,192,240,127,192,240,63,128,240,31,0,248,15, + 128,252,63,192,127,255,224,127,251,224,31,241,240,7,192,0, + 4,9,9,8,2,16,240,240,240,240,240,240,240,96,96,8, + 31,31,11,1,250,7,15,30,30,60,60,56,120,120,120,240, + 240,240,240,240,240,240,240,240,248,120,120,120,120,60,60,28, + 30,14,15,7,8,31,31,11,1,250,224,240,120,120,60,60, + 28,30,30,30,15,15,15,15,15,15,15,15,15,31,30,30, + 30,28,60,60,56,120,112,240,224,10,11,22,13,1,13,12, + 0,12,0,76,128,237,192,255,192,127,128,30,0,63,0,127, + 128,115,128,33,0,16,16,32,19,1,0,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,5,11,11,9,2, + 250,248,248,248,248,248,24,24,56,112,224,128,9,5,10,11, + 1,7,255,128,255,128,255,128,255,128,255,128,5,5,5,9, + 2,0,248,248,248,248,248,8,25,25,9,0,0,3,3,3, + 3,6,6,6,14,12,12,12,28,24,24,24,48,48,48,112, + 96,96,96,192,192,192,15,24,48,18,1,0,15,224,31,240, + 63,248,127,252,124,124,248,62,248,62,248,62,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,248,62,248,62, + 248,62,124,124,127,252,63,248,31,240,15,224,10,23,46,18, + 2,0,1,192,3,192,7,192,31,192,255,192,255,192,255,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 16,24,48,18,1,0,15,224,63,248,127,252,127,254,252,126, + 248,63,248,31,240,31,240,31,0,63,0,62,0,126,0,252, + 1,248,7,240,15,224,31,128,63,0,126,0,252,0,255,255, + 255,255,255,255,255,255,16,24,48,18,1,0,15,224,63,248, + 127,252,127,252,248,62,240,62,240,30,240,30,0,62,0,124, + 3,248,3,240,3,252,0,126,0,63,0,31,240,31,240,31, + 240,63,248,62,127,254,127,252,63,248,15,224,16,24,48,18, + 1,0,0,248,0,248,1,248,3,248,3,248,7,248,15,120, + 14,120,30,120,28,120,60,120,120,120,112,120,240,120,224,120, + 255,255,255,255,255,255,255,255,0,120,0,120,0,120,0,120, + 0,120,15,24,48,18,1,0,63,252,63,252,63,252,63,252, + 56,0,120,0,120,0,120,0,123,224,127,248,127,252,127,252, + 120,126,0,62,0,62,0,30,0,30,240,62,240,62,248,124, + 127,252,127,248,63,240,15,192,15,24,48,18,1,0,7,224, + 31,248,63,252,63,254,124,62,120,30,240,0,240,0,243,224, + 247,248,255,252,255,252,252,126,248,62,240,30,240,30,240,30, + 240,30,248,62,124,124,127,252,63,248,31,240,7,192,16,24, + 48,18,1,0,255,255,255,255,255,255,255,255,0,30,0,62, + 0,60,0,120,0,248,0,240,1,240,1,224,3,224,3,192, + 7,192,7,192,7,128,15,128,15,128,15,128,31,0,31,0, + 31,0,31,0,17,24,72,18,0,0,7,240,0,31,252,0, + 63,254,0,62,62,0,124,31,0,120,15,0,120,15,0,120, + 15,0,124,31,0,62,62,0,31,252,0,31,252,0,63,254, + 0,124,31,0,248,15,128,240,7,128,240,7,128,240,7,128, + 248,15,128,126,63,0,127,254,0,63,254,0,31,252,0,7, + 240,0,15,24,48,18,1,0,7,192,31,240,63,248,127,252, + 124,124,248,62,240,30,240,30,240,30,240,30,248,62,252,126, + 127,254,127,254,63,222,7,158,0,30,0,30,240,60,248,124, + 127,248,127,248,31,240,7,192,5,17,17,11,3,0,248,248, + 248,248,248,0,0,0,0,0,0,0,248,248,248,248,248,5, + 23,23,11,3,250,248,248,248,248,248,0,0,0,0,0,0, + 0,248,248,248,248,248,24,24,56,112,224,128,16,16,32,19, + 1,0,0,3,0,31,0,127,3,255,15,254,127,248,255,192, + 254,0,254,0,255,192,127,240,15,254,3,255,0,127,0,31, + 0,3,15,12,24,19,2,2,255,254,255,254,255,254,255,254, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,255,254, + 16,16,32,19,1,0,192,0,240,0,254,0,255,192,127,240, + 31,254,3,255,0,127,0,127,3,255,31,254,127,240,255,192, + 254,0,240,0,192,0,16,25,50,20,2,0,15,224,63,248, + 127,252,127,254,252,126,248,63,248,31,240,31,240,31,0,63, + 0,126,0,254,1,252,1,248,3,224,3,192,7,192,7,192, + 0,0,0,0,7,192,7,192,7,192,7,192,7,192,29,30, + 120,33,1,251,0,15,224,0,0,127,252,0,1,255,254,0, + 3,240,63,128,7,192,7,192,15,0,3,192,30,0,1,224, + 28,0,0,240,60,7,220,112,56,31,252,112,112,60,252,56, + 112,120,120,56,240,240,56,56,224,224,56,56,225,224,56,56, + 225,192,112,120,225,192,112,112,225,192,112,112,225,224,240,224, + 241,225,241,224,112,255,255,192,120,127,63,128,56,62,30,0, + 60,0,0,0,30,0,0,0,15,128,0,0,15,240,60,0, + 3,255,252,0,1,255,252,0,0,127,224,0,22,25,75,23, + 0,0,0,252,0,0,252,0,1,254,0,1,254,0,1,254, + 0,3,255,0,3,255,0,3,255,0,7,207,128,7,207,128, + 7,207,128,15,135,128,15,135,192,15,135,192,31,3,192,31, + 3,224,31,255,224,31,255,224,63,255,240,63,255,240,62,1, + 240,124,0,248,124,0,248,252,0,252,248,0,124,19,25,75, + 24,3,0,255,252,0,255,255,0,255,255,128,255,255,128,248, + 15,192,248,7,192,248,7,192,248,7,192,248,7,192,248,15, + 128,255,255,0,255,255,0,255,255,128,255,255,192,248,7,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 7,224,255,255,192,255,255,192,255,255,128,255,254,0,21,25, + 75,24,1,0,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,248,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,254,0,21, + 25,75,24,2,0,255,248,0,255,255,0,255,255,128,255,255, + 192,248,15,224,248,3,224,248,3,240,248,1,240,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,1,248,248,1,240,248,3,240,248,3, + 224,248,15,224,255,255,192,255,255,128,255,255,0,255,248,0, + 18,25,75,22,2,0,255,255,128,255,255,128,255,255,128,255, + 255,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,255,192,255,255,192,255,255,192,255,255, + 192,16,25,50,20,2,0,255,255,255,255,255,255,255,255,248, + 0,248,0,248,0,248,0,248,0,248,0,255,254,255,254,255, + 254,255,254,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,22,25,75,25,1,0,0, + 255,0,3,255,192,15,255,224,31,255,240,31,195,248,63,0, + 248,126,0,124,124,0,124,252,0,0,248,0,0,248,0,0, + 248,0,0,248,15,252,248,15,252,248,15,252,248,15,252,252, + 0,124,124,0,124,126,0,124,126,0,252,63,131,252,63,255, + 252,31,255,220,7,255,156,3,254,28,19,25,75,23,2,0, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,255,255, + 224,255,255,224,255,255,224,255,255,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,5,25,25,9,2, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,15,25,50,18,1,0, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,248,62, + 248,62,248,62,248,62,248,62,252,126,255,252,127,252,63,248, + 15,224,20,25,75,24,2,0,248,7,224,248,7,224,248,15, + 192,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 249,248,0,251,240,0,255,224,0,255,224,0,255,240,0,255, + 240,0,255,248,0,252,252,0,248,126,0,248,126,0,248,63, + 0,248,31,128,248,15,128,248,15,192,248,7,224,248,3,240, + 248,3,240,16,25,50,20,2,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,255,255,255,255,255,255,255,255,23,25,75,27,2, + 0,254,0,254,254,0,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,131,254,255,131,254,251,131,190,251,131,190,251, + 199,190,251,199,190,251,199,190,249,199,62,249,239,62,249,239, + 62,249,239,62,249,239,62,248,238,62,248,254,62,248,254,62, + 248,254,62,248,124,62,248,124,62,248,124,62,19,25,75,24, + 2,0,248,3,224,252,3,224,252,3,224,254,3,224,254,3, + 224,255,3,224,255,3,224,255,131,224,255,195,224,251,195,224, + 251,227,224,249,227,224,249,243,224,248,243,224,248,251,224,248, + 123,224,248,63,224,248,63,224,248,31,224,248,31,224,248,15, + 224,248,15,224,248,7,224,248,7,224,248,3,224,23,25,75, + 25,1,0,1,255,0,7,255,192,15,255,224,31,255,240,63, + 199,248,63,1,248,126,0,252,124,0,124,124,0,124,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,124,0,124,124,0,124,126,0,252,63,1,248,63, + 199,248,31,255,240,15,255,224,7,255,192,1,255,0,18,25, + 75,22,2,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,252, + 0,255,240,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,23, + 26,78,26,1,255,1,255,0,7,255,192,15,255,224,31,255, + 240,63,199,248,63,1,248,126,0,252,124,0,124,252,0,126, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,2,62,252,7,62,124,15,188,126,15,252,63,7, + 248,63,195,240,31,255,248,15,255,252,7,255,254,1,255,60, + 0,0,24,19,25,75,24,2,0,255,254,0,255,255,128,255, + 255,192,255,255,192,248,7,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,7,192,248,15,192,255,255,128,255,255,0, + 255,255,0,255,255,128,248,15,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 224,248,3,224,19,25,75,22,1,0,3,248,0,15,254,0, + 31,255,0,63,255,128,62,31,128,124,7,192,120,7,192,120, + 3,192,124,0,0,127,0,0,63,240,0,63,254,0,31,255, + 128,3,255,192,0,63,192,0,7,224,0,3,224,248,3,224, + 248,3,224,124,3,224,126,15,192,63,255,192,31,255,128,15, + 255,0,3,248,0,19,25,75,20,0,0,255,255,224,255,255, + 224,255,255,224,255,255,224,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,19,25,75,24,2,0,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,252,7,224,127,31,192,127,255,192,63,255, + 128,31,255,0,7,252,0,20,25,75,22,1,0,248,1,240, + 248,1,240,124,3,224,124,3,224,124,3,224,60,3,192,62, + 7,192,62,7,192,30,7,128,31,15,128,31,15,128,15,15, + 0,15,15,0,15,15,0,7,158,0,7,158,0,7,158,0, + 7,254,0,3,252,0,3,252,0,3,252,0,1,248,0,1, + 248,0,1,248,0,0,240,0,29,25,100,31,1,0,248,31, + 129,248,248,31,129,248,120,31,129,240,120,31,129,240,120,31, + 129,240,124,63,195,224,124,63,195,224,124,63,195,224,60,63, + 195,224,60,57,195,192,62,121,227,192,62,121,231,192,30,121, + 231,192,30,121,231,128,30,112,231,128,30,112,231,128,15,240, + 255,0,15,240,255,0,15,240,255,0,15,224,127,0,7,224, + 126,0,7,224,126,0,7,224,126,0,3,192,60,0,3,192, + 60,0,20,25,75,22,1,0,252,3,224,126,7,224,126,7, + 192,63,15,192,31,15,128,31,159,0,15,159,0,15,190,0, + 7,254,0,7,252,0,3,252,0,3,248,0,1,248,0,3, + 248,0,3,252,0,7,252,0,7,254,0,15,191,0,31,159, + 0,31,31,128,63,15,128,62,15,192,126,7,192,252,7,224, + 252,3,240,20,25,75,22,1,0,252,3,240,252,3,224,126, + 7,224,62,7,192,63,15,192,63,15,128,31,15,128,31,159, + 0,15,159,0,15,254,0,7,254,0,7,252,0,3,252,0, + 3,248,0,3,248,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,17,25,75,20,1,0,255,255,128,255,255,128, + 255,255,128,255,255,128,0,15,128,0,31,128,0,63,0,0, + 126,0,0,124,0,0,252,0,1,248,0,3,240,0,3,240, + 0,7,224,0,15,192,0,15,128,0,31,128,0,63,0,0, + 126,0,0,126,0,0,252,0,0,255,255,128,255,255,128,255, + 255,128,255,255,128,8,31,31,11,2,250,255,255,255,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,255,255,255,9,25,50,9,0,0, + 192,0,192,0,224,0,96,0,96,0,112,0,112,0,48,0, + 56,0,56,0,24,0,28,0,28,0,12,0,12,0,14,0, + 14,0,6,0,7,0,7,0,3,0,3,128,3,128,1,128, + 1,128,8,31,31,11,0,250,255,255,255,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,255,255,255,14,14,28,19,2,9,7,128,15, + 192,15,192,15,192,31,224,31,224,60,240,60,240,56,112,120, + 120,120,120,112,60,240,60,240,60,18,2,6,18,0,250,255, + 255,192,255,255,192,5,5,5,11,2,20,224,240,112,120,56, + 15,18,36,18,1,0,15,240,63,252,127,252,124,62,248,30, + 248,30,0,254,15,254,63,254,127,30,248,30,248,30,240,62, + 248,126,255,254,255,254,127,222,63,30,16,25,50,20,2,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,243,240, + 247,252,255,252,255,254,252,62,248,31,240,31,240,15,240,15, + 240,15,240,15,240,31,240,31,248,62,255,254,255,252,247,248, + 241,240,15,18,36,18,1,0,7,224,31,248,63,252,63,252, + 124,62,120,62,240,30,240,0,240,0,240,0,240,0,240,30, + 248,30,124,62,127,252,63,248,31,248,7,224,16,25,50,20, + 1,0,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 15,207,31,239,63,255,127,255,124,63,248,31,240,15,240,15, + 240,15,240,15,240,15,240,15,248,31,124,63,127,255,63,239, + 31,239,15,143,16,18,36,18,1,0,7,224,31,248,63,252, + 127,254,124,62,248,31,240,31,255,255,255,255,255,255,240,0, + 240,0,248,30,124,62,127,252,63,252,31,240,7,192,10,25, + 50,11,0,0,7,192,15,192,31,192,31,0,30,0,30,0, + 30,0,255,192,255,192,255,192,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,16,25,50,20,1,249,15,207,31,239, + 63,255,127,255,124,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,124,63,127,255,63,255,31,239,15,207, + 0,15,248,31,248,31,126,126,127,254,63,252,15,240,15,25, + 50,20,2,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,241,224,247,248,255,252,255,252,252,62,248,30,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,4,25,25,9,2,0,240,240,240,240, + 0,0,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,6,32,32,9,0,249,60,60,60,60,0, + 0,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,252,252,248,248,15,25,50,19,2, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 62,240,124,240,248,241,240,243,224,247,192,255,128,255,192,255, + 192,255,224,255,224,249,240,241,240,240,248,240,120,240,124,240, + 62,240,62,4,25,25,9,2,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,24,18,54,30,2,0,241,224,248,247,251,254,255,255, + 254,255,255,255,252,127,31,248,62,15,240,60,15,240,60,15, + 240,60,15,240,60,15,240,60,15,240,60,15,240,60,15,240, + 60,15,240,60,15,240,60,15,240,60,15,240,60,15,15,18, + 36,20,2,0,241,240,247,252,255,252,255,254,252,62,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,17,18,54,20,1,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,16,25,50,20,2,249,241,240,247,248,255,252, + 255,254,252,62,248,31,248,31,240,15,240,15,240,15,240,15, + 248,31,248,31,252,62,255,254,255,252,247,248,241,240,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,16,25,50,20, + 1,249,7,207,31,239,63,255,127,255,124,63,248,31,240,15, + 240,15,240,15,240,15,240,15,240,15,248,31,124,63,127,255, + 63,255,63,239,15,207,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,10,18,36,13,2,0,240,192,243,192,247,192, + 255,192,255,192,252,0,248,0,248,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,18, + 36,19,1,0,7,240,31,252,63,254,124,62,120,31,120,31, + 124,0,127,192,63,248,15,254,3,255,0,63,248,15,248,15, + 124,31,127,254,63,252,15,240,9,22,44,11,1,0,60,0, + 60,0,60,0,60,0,255,128,255,128,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,63,128,63,128,31,128,15,128,15,18,36,20,2,0, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,248,62,248,126,255,254,127,254, + 127,222,31,30,17,18,54,19,0,0,248,15,128,248,15,128, + 124,31,0,124,31,0,60,30,0,60,30,0,62,62,0,30, + 60,0,30,60,0,30,60,0,15,120,0,15,120,0,15,120, + 0,7,240,0,7,240,0,7,240,0,3,224,0,3,224,0, + 25,18,72,26,0,0,248,62,15,128,248,62,15,128,120,62, + 15,0,124,62,31,0,124,127,31,0,60,127,30,0,60,127, + 30,0,60,119,30,0,60,247,158,0,30,227,188,0,30,227, + 188,0,30,227,188,0,31,227,252,0,15,193,248,0,15,193, + 248,0,15,193,248,0,7,128,240,0,7,128,240,0,16,18, + 36,19,1,0,248,31,252,63,124,62,62,124,62,120,31,248, + 15,240,7,224,3,192,7,224,15,224,15,240,31,248,62,120, + 62,124,124,62,252,63,248,31,16,25,50,19,1,249,248,31, + 248,31,248,30,120,62,124,62,124,60,60,60,62,124,62,120, + 30,120,30,120,31,240,15,240,15,240,15,224,7,224,7,224, + 7,192,7,192,7,192,15,128,63,128,63,0,63,0,60,0, + 14,18,36,17,1,0,255,252,255,252,255,252,255,252,0,248, + 1,240,3,240,7,224,15,192,31,128,31,0,62,0,124,0, + 248,0,255,252,255,252,255,252,255,252,9,32,64,13,2,249, + 15,128,31,128,63,128,62,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,124,0,120,0, + 224,0,120,0,124,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,63,128,31,128,15,128, + 3,31,31,9,3,250,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,9,32,64,13,2,249,248,0,252,0,254, + 0,62,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,31,0,15,0,3,128,15,0,31, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,254,0,252,0,248,0,14,6,12,19,2, + 5,56,0,126,12,255,156,231,252,193,248,0,112,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,9,0,1,5,24,24,11,2,250,248,248,248,248,248,0, + 0,112,112,112,112,112,112,248,248,248,248,248,248,248,248,248, + 248,248,15,24,48,18,1,253,0,32,0,32,0,96,7,240, + 31,248,63,252,127,252,124,190,248,158,249,158,241,128,241,128, + 243,0,243,0,243,30,250,30,126,62,127,252,63,248,31,240, + 15,192,12,0,8,0,8,0,17,24,72,18,0,0,3,240, + 0,31,252,0,63,254,0,63,255,0,126,31,0,124,15,128, + 124,15,128,124,7,128,124,0,0,126,0,0,62,0,0,255, + 240,0,255,240,0,31,0,0,15,0,0,15,0,0,15,0, + 0,31,0,0,30,0,0,61,227,0,127,255,128,255,255,128, + 255,255,0,96,126,0,15,15,30,18,1,4,224,14,247,222, + 255,254,127,252,60,120,120,60,112,28,112,28,112,28,120,60, + 60,120,127,252,255,254,247,222,224,14,18,24,72,18,0,0, + 248,7,192,248,7,192,124,15,128,60,15,0,30,30,0,30, + 30,0,15,60,0,15,60,0,7,248,0,7,248,0,3,240, + 0,1,224,0,63,255,0,63,255,0,1,224,0,1,224,0, + 63,255,0,63,255,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,31,31,9,3,250,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,0,0,0, + 0,224,224,224,224,224,224,224,224,224,224,224,224,16,32,64, + 18,1,249,15,240,31,248,63,248,126,124,124,60,124,60,126, + 0,127,0,63,192,31,224,63,248,127,252,113,254,240,255,240, + 63,248,31,252,15,127,15,127,159,63,254,31,248,7,252,1, + 254,0,126,0,62,120,30,120,30,124,62,63,252,63,252,31, + 248,7,224,10,4,8,11,0,21,243,192,243,192,243,192,243, + 192,26,25,100,24,0,0,0,127,128,0,3,255,224,0,7, + 128,248,0,31,0,60,0,28,0,14,0,56,0,7,0,112, + 63,3,0,112,127,131,128,224,243,193,128,225,192,225,192,193, + 192,224,192,195,128,0,192,195,128,0,192,195,128,0,192,195, + 128,0,192,193,192,224,192,225,192,225,192,224,243,195,128,96, + 127,131,128,112,63,7,0,56,0,14,0,30,0,60,0,15, + 128,248,0,7,255,224,0,1,255,128,0,9,16,32,12,1, + 9,62,0,127,0,227,128,195,128,31,128,127,128,243,128,227, + 128,227,128,255,128,123,128,0,0,0,0,255,128,255,128,255, + 128,12,13,26,18,3,2,8,16,24,48,56,112,120,240,241, + 224,225,192,225,192,241,224,249,240,120,240,56,112,24,48,8, + 16,16,10,20,19,1,4,255,255,255,255,255,255,255,255,0, + 15,0,15,0,15,0,15,0,15,0,15,9,5,10,11,1, + 7,255,128,255,128,255,128,255,128,255,128,26,25,100,24,0, + 0,0,255,128,0,3,255,224,0,7,128,248,0,30,0,60, + 0,28,0,14,0,56,255,135,0,112,255,195,0,112,225,227, + 128,224,224,225,128,224,224,225,128,192,224,225,192,192,225,193, + 192,192,255,129,192,192,255,1,192,192,227,129,192,192,227,193, + 192,224,225,193,128,224,224,227,128,112,224,243,128,112,224,119, + 0,56,0,14,0,30,0,28,0,15,128,120,0,7,255,224, + 0,1,255,128,0,10,3,6,11,0,21,255,192,255,192,255, + 192,9,10,20,13,2,14,62,0,127,0,99,0,193,128,193, + 128,193,128,193,128,99,0,127,0,62,0,16,22,44,19,1, + 0,3,192,3,192,3,192,3,192,3,192,3,192,255,255,255, + 255,255,255,255,255,3,192,3,192,3,192,3,192,3,192,3, + 192,0,0,0,0,255,255,255,255,255,255,255,255,10,15,30, + 11,0,9,63,0,127,128,243,192,225,192,225,192,1,192,3, + 192,7,128,15,0,62,0,120,0,112,0,255,192,255,192,255, + 192,10,15,30,11,0,9,30,0,127,128,243,192,225,192,225, + 192,3,192,15,128,15,128,3,192,1,192,225,192,225,192,243, + 192,127,128,62,0,6,5,5,11,4,20,60,120,112,224,224, + 15,25,50,20,2,249,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,255,254,255,222,247,158,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,17,31,93,18,0,250,15,255, + 128,31,255,128,63,140,0,127,140,0,127,140,0,255,140,0, + 255,140,0,255,140,0,255,140,0,255,140,0,127,140,0,127, + 140,0,63,140,0,63,140,0,15,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,4,5,5,9,2, + 11,96,240,240,240,96,7,8,8,11,2,249,48,48,48,124, + 30,14,252,248,6,15,15,11,2,9,28,60,252,252,28,28, + 28,28,28,28,28,28,28,28,28,10,16,32,12,1,9,63, + 0,127,128,115,128,225,192,225,192,225,192,225,192,225,192,115, + 128,127,128,63,0,0,0,0,0,255,192,255,192,255,192,12, + 12,24,18,3,3,129,0,193,128,225,192,241,224,120,240,56, + 112,56,112,120,240,241,224,225,192,193,128,129,0,26,24,96, + 28,0,0,0,0,56,0,6,0,112,0,30,0,112,0,254, + 0,224,0,254,1,192,0,14,1,192,0,14,3,128,0,14, + 3,128,0,14,7,0,0,14,7,0,0,14,14,7,0,14, + 28,15,0,14,28,31,0,14,56,31,0,0,56,55,0,0, + 112,103,0,0,112,231,0,0,224,199,0,1,193,135,0,1, + 193,255,192,3,129,255,192,3,128,7,0,7,0,7,0,7, + 0,7,0,25,24,96,28,1,0,0,0,224,0,12,1,192, + 0,28,1,192,0,252,3,128,0,252,3,128,0,28,7,0, + 0,28,14,0,0,28,14,0,0,28,28,0,0,28,28,0, + 0,28,56,126,0,28,48,255,0,28,113,231,128,28,225,195, + 128,0,225,195,128,1,192,7,128,1,192,15,0,3,128,30, + 0,7,0,60,0,7,0,120,0,14,0,240,0,14,1,255, + 128,28,1,255,128,28,1,255,128,25,24,96,27,1,0,63, + 0,28,0,127,128,56,0,243,192,56,0,225,192,112,0,225, + 192,224,0,3,192,224,0,15,129,192,0,15,129,192,0,15, + 195,128,0,1,199,0,0,225,199,14,0,225,206,30,0,243, + 206,30,0,127,156,62,0,63,28,126,0,0,56,238,0,0, + 112,206,0,0,113,142,0,0,227,142,0,0,227,255,128,1, + 195,255,128,1,192,14,0,3,128,14,0,3,128,14,0,16, + 24,48,20,1,250,3,224,3,224,3,224,3,224,0,0,0, + 0,3,192,3,192,3,192,7,192,31,128,63,128,127,0,126, + 0,252,0,248,15,248,15,248,15,252,31,126,127,127,254,63, + 254,63,252,15,240,22,31,93,23,0,0,3,192,0,1,224, + 0,0,240,0,0,120,0,0,60,0,0,0,0,0,252,0, + 0,252,0,1,254,0,1,254,0,1,254,0,3,255,0,3, + 255,0,3,255,0,7,207,128,7,207,128,7,207,128,15,135, + 128,15,135,192,15,135,192,31,3,192,31,3,224,31,255,224, + 31,255,224,63,255,240,63,255,240,62,1,240,124,0,248,124, + 0,248,252,0,252,248,0,124,22,31,93,23,0,0,0,15, + 0,0,30,0,0,60,0,0,120,0,0,240,0,0,0,0, + 0,252,0,0,252,0,1,254,0,1,254,0,1,254,0,3, + 255,0,3,255,0,3,255,0,7,207,128,7,207,128,7,207, + 128,15,135,128,15,135,192,15,135,192,31,3,192,31,3,224, + 31,255,224,31,255,224,63,255,240,63,255,240,62,1,240,124, + 0,248,124,0,248,252,0,252,248,0,124,22,31,93,23,0, + 0,0,48,0,0,120,0,0,252,0,1,206,0,3,135,0, + 0,0,0,0,252,0,0,252,0,1,254,0,1,254,0,1, + 254,0,3,255,0,3,255,0,3,255,0,7,207,128,7,207, + 128,7,207,128,15,135,128,15,135,192,15,135,192,31,3,192, + 31,3,224,31,255,224,31,255,224,63,255,240,63,255,240,62, + 1,240,124,0,248,124,0,248,252,0,252,248,0,124,22,30, + 90,23,0,0,0,241,128,1,255,128,3,255,0,3,30,0, + 0,0,0,0,252,0,0,252,0,1,254,0,1,254,0,1, + 254,0,3,255,0,3,255,0,3,255,0,7,207,128,7,207, + 128,7,207,128,15,135,128,15,135,192,15,135,192,31,3,192, + 31,3,224,31,255,224,31,255,224,63,255,240,63,255,240,62, + 1,240,124,0,248,124,0,248,252,0,252,248,0,124,22,31, + 93,23,0,0,3,207,0,3,207,0,3,207,0,3,207,0, + 0,0,0,0,0,0,0,252,0,0,252,0,1,254,0,1, + 254,0,1,254,0,3,255,0,3,255,0,3,255,0,7,207, + 128,7,207,128,7,207,128,15,135,128,15,135,192,15,135,192, + 31,3,192,31,3,224,31,255,224,31,255,224,63,255,240,63, + 255,240,62,1,240,124,0,248,124,0,248,252,0,252,248,0, + 124,22,31,93,23,0,0,0,120,0,0,204,0,0,132,0, + 0,132,0,0,204,0,0,120,0,0,0,0,0,252,0,1, + 254,0,1,254,0,1,254,0,3,255,0,3,255,0,3,255, + 0,7,207,128,7,207,128,7,207,128,15,135,128,15,135,192, + 15,135,192,31,3,192,31,3,224,31,255,224,31,255,224,63, + 255,240,63,255,240,62,1,240,124,0,248,124,0,248,252,0, + 252,248,0,124,31,25,100,32,0,0,0,255,255,252,0,255, + 255,252,0,255,255,252,1,255,255,252,1,243,192,0,1,227, + 192,0,3,227,192,0,3,227,192,0,3,195,192,0,7,195, + 192,0,7,195,192,0,7,195,255,248,15,131,255,248,15,131, + 255,248,15,131,255,248,31,3,192,0,31,255,192,0,31,255, + 192,0,63,255,192,0,63,255,192,0,62,3,192,0,124,3, + 255,254,124,3,255,254,248,3,255,254,248,3,255,254,21,32, + 96,23,1,249,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,240,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,252,0,0, + 96,0,0,96,0,0,248,0,0,28,0,0,28,0,1,248, + 0,1,240,0,18,31,93,22,2,0,30,0,0,15,0,0, + 7,128,0,3,192,0,1,224,0,0,0,0,255,255,128,255, + 255,128,255,255,128,255,255,128,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,0,255,255,0, + 255,255,0,255,255,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,18,31,93,22,2,0,0,120,0, + 0,240,0,1,224,0,3,192,0,7,128,0,0,0,0,255, + 255,128,255,255,128,255,255,128,255,255,128,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,255,255,0, + 255,255,0,255,255,0,255,255,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 192,255,255,192,255,255,192,255,255,192,18,31,93,22,2,0, + 0,192,0,1,224,0,3,240,0,7,56,0,14,28,0,0, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 255,255,0,255,255,0,255,255,0,255,255,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,192,255,255,192,255,255,192,255,255,192,18,31,93, + 22,2,0,30,60,0,30,60,0,30,60,0,30,60,0,0, + 0,0,0,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,255,255,0,255,255,0,255,255,0,255,255,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,192,255,255,192,255,255,192,255,255,192, + 8,31,31,9,0,0,240,120,60,30,15,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,62,62,8,31,31,9,2,0,15,30,60,120,240, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,10,31,62,9,0,0, + 12,0,30,0,63,0,115,128,225,192,0,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,10,31, + 62,9,0,0,243,192,243,192,243,192,243,192,0,0,0,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,23,25,75,23,255,0,31,255,128,31,255,224,31,255, + 240,31,255,248,31,7,248,31,0,252,31,0,252,31,0,124, + 31,0,126,31,0,62,31,0,62,255,240,62,255,240,62,255, + 240,62,31,0,62,31,0,62,31,0,124,31,0,124,31,0, + 124,31,0,248,31,3,248,31,255,240,31,255,240,31,255,192, + 31,255,128,19,30,90,24,2,0,3,198,0,7,254,0,15, + 252,0,12,120,0,0,0,0,248,3,224,252,3,224,252,3, + 224,254,3,224,254,3,224,255,3,224,255,3,224,255,131,224, + 255,195,224,251,195,224,251,227,224,249,227,224,249,243,224,248, + 243,224,248,251,224,248,123,224,248,63,224,248,63,224,248,31, + 224,248,31,224,248,15,224,248,15,224,248,7,224,248,7,224, + 248,3,224,23,31,93,25,1,0,1,224,0,0,240,0,0, + 120,0,0,60,0,0,30,0,0,0,0,1,255,0,7,255, + 192,15,255,224,31,255,240,63,199,248,63,1,248,126,0,252, + 124,0,124,124,0,124,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,126,0,252,63,1,248,63,199,248,31,255,240,15,255,224, + 7,255,192,1,255,0,23,31,93,25,1,0,0,7,128,0, + 15,0,0,30,0,0,60,0,0,120,0,0,0,0,1,255, + 0,7,255,192,15,255,224,31,255,240,63,199,248,63,1,248, + 126,0,252,124,0,124,124,0,124,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,124,0, + 124,124,0,124,126,0,252,63,1,248,63,199,248,31,255,240, + 15,255,224,7,255,192,1,255,0,23,31,93,25,1,0,0, + 24,0,0,60,0,0,126,0,0,231,0,1,195,128,0,0, + 0,1,255,0,7,255,192,15,255,224,31,255,240,63,199,248, + 63,1,248,126,0,252,124,0,124,124,0,124,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,124,0,124,124,0,124,126,0,252,63,1,248,63,199,248, + 31,255,240,15,255,224,7,255,192,1,255,0,23,30,90,25, + 1,0,0,120,192,0,255,192,1,255,128,1,143,0,0,0, + 0,1,255,0,7,255,192,15,255,224,31,255,240,63,199,248, + 63,1,248,126,0,252,124,0,124,124,0,124,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,124,0,124,124,0,124,126,0,252,63,1,248,63,199,248, + 31,255,240,15,255,224,7,255,192,1,255,0,23,31,93,25, + 1,0,1,231,128,1,231,128,1,231,128,1,231,128,0,0, + 0,0,0,0,1,255,0,7,255,192,15,255,224,31,255,240, + 63,199,248,63,1,248,126,0,252,124,0,124,124,0,124,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,124,0,124,124,0,124,126,0,252,63,1,248, + 63,199,248,31,255,240,15,255,224,7,255,192,1,255,0,15, + 16,32,19,2,0,32,8,112,28,248,62,252,126,126,252,63, + 248,31,240,15,224,15,224,31,240,63,248,126,252,252,126,248, + 62,112,28,32,8,24,25,75,25,1,0,1,255,7,7,255, + 206,15,255,252,31,255,248,63,199,248,63,0,248,126,1,252, + 124,3,252,124,7,188,248,7,62,248,14,62,248,28,62,248, + 56,62,248,112,62,248,224,62,248,224,62,125,192,124,127,128, + 124,127,0,252,63,1,248,63,199,248,63,255,240,63,255,224, + 119,255,192,225,255,0,19,31,93,24,2,0,7,128,0,3, + 192,0,1,224,0,0,240,0,0,120,0,0,0,0,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,252,7,224,127,31,192,127,255,192, + 63,255,128,31,255,0,7,252,0,19,31,93,24,2,0,0, + 30,0,0,60,0,0,120,0,0,240,0,1,224,0,0,0, + 0,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,252,7,224,127,31,192, + 127,255,192,63,255,128,31,255,0,7,252,0,19,31,93,24, + 2,0,0,96,0,0,240,0,1,248,0,3,156,0,7,14, + 0,0,0,0,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,252,7,224, + 127,31,192,127,255,192,63,255,128,31,255,0,7,252,0,19, + 31,93,24,2,0,15,30,0,15,30,0,15,30,0,15,30, + 0,0,0,0,0,0,0,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 252,7,224,127,31,192,127,255,192,63,255,128,31,255,0,7, + 252,0,20,31,93,22,1,0,0,30,0,0,60,0,0,120, + 0,0,240,0,1,224,0,0,0,0,252,3,240,252,3,240, + 126,7,224,62,7,192,63,15,192,63,15,128,31,15,128,31, + 159,0,15,159,0,15,254,0,7,254,0,7,252,0,3,252, + 0,3,248,0,3,248,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,18,25,75,22,2,0,248,0,0,248,0, + 0,248,0,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,254, + 0,255,252,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,20,2,0,15,192,0,63, + 240,0,127,252,0,255,252,0,248,126,0,248,62,0,240,62, + 0,240,62,0,240,124,0,240,252,0,241,248,0,241,252,0, + 241,254,0,240,127,0,240,31,0,240,31,128,240,15,128,240, + 15,128,240,15,128,240,31,128,240,63,0,241,255,0,241,254, + 0,241,252,0,241,240,0,15,25,50,18,1,0,15,0,7, + 128,3,128,1,192,0,224,0,0,0,0,15,240,63,252,127, + 252,124,62,248,30,248,30,1,254,15,254,63,254,127,30,248, + 30,240,30,240,62,248,126,255,254,255,254,127,222,63,30,15, + 25,50,18,1,0,0,120,0,240,0,224,1,192,3,128,0, + 0,0,0,15,240,63,252,127,252,124,62,248,30,248,30,1, + 254,15,254,63,254,127,30,248,30,240,30,240,62,248,126,255, + 254,255,254,127,222,63,30,15,25,50,18,1,0,1,128,3, + 192,7,224,14,112,28,56,0,0,0,0,15,240,63,252,127, + 252,124,62,248,30,248,30,1,254,15,254,63,254,127,30,248, + 30,240,30,240,62,248,126,255,254,255,254,127,222,63,30,15, + 24,48,18,1,0,7,140,15,252,31,248,24,240,0,0,0, + 0,15,240,63,252,127,252,124,62,248,30,248,30,1,254,15, + 254,63,254,127,30,248,30,240,30,240,62,248,126,255,254,255, + 254,127,222,63,30,15,24,48,18,1,0,30,120,30,120,30, + 120,30,120,0,0,0,0,15,240,63,252,127,252,124,62,248, + 30,248,30,1,254,15,254,63,254,127,30,248,30,240,30,240, + 62,248,126,255,254,255,254,127,222,63,30,15,25,50,18,1, + 0,3,192,6,96,4,32,4,32,6,96,3,192,0,0,15, + 240,63,252,127,252,124,62,248,30,248,30,1,254,15,254,63, + 254,127,30,248,30,248,30,240,62,248,126,255,254,255,254,127, + 222,63,30,26,19,76,29,1,0,7,224,248,0,31,251,254, + 0,63,255,255,0,63,255,255,0,124,63,15,128,120,30,7, + 128,120,30,7,192,0,62,7,192,7,255,255,192,63,255,255, + 192,127,255,255,192,124,30,0,0,248,30,0,0,248,30,7, + 192,252,63,15,192,255,255,255,128,127,247,255,0,63,227,254, + 0,15,129,248,0,15,25,50,18,1,249,7,224,31,248,63, + 252,63,252,124,62,120,30,248,30,240,0,240,0,240,0,240, + 0,248,30,248,30,124,62,127,252,63,248,31,248,7,224,3, + 0,3,0,7,192,0,224,0,224,15,192,15,128,16,25,50, + 18,1,0,15,0,7,128,3,128,1,192,0,224,0,0,0, + 0,7,224,31,248,63,252,127,254,124,62,248,30,240,31,255, + 255,255,255,255,255,240,0,240,0,248,30,124,62,127,254,63, + 252,31,240,7,192,16,25,50,18,1,0,0,120,0,240,0, + 224,1,192,3,128,0,0,0,0,7,224,31,248,63,252,127, + 254,124,62,248,30,240,31,255,255,255,255,255,255,240,0,240, + 0,248,30,124,62,127,254,63,252,31,240,7,192,16,25,50, + 18,1,0,1,128,3,192,7,224,14,112,28,56,0,0,0, + 0,7,224,31,248,63,252,127,254,124,62,248,30,240,31,255, + 255,255,255,255,255,240,0,240,0,248,30,124,62,127,254,63, + 252,31,240,7,192,16,24,48,18,1,0,30,120,30,120,30, + 120,30,120,0,0,0,0,7,224,31,248,63,252,127,254,124, + 62,248,30,240,31,255,255,255,255,255,255,240,0,240,0,248, + 30,124,62,127,254,63,252,31,240,7,192,7,25,25,9,1, + 0,240,120,56,28,14,0,0,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,6,25,25,9,2,0, + 60,56,112,112,224,0,0,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,10,25,50,9,255,0,12, + 0,30,0,63,0,115,128,225,192,0,0,0,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,10,24,48,9,255,0,243,192,243,192,243,192,243,192,0, + 0,0,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,17,26,78,20,1,0,48,0,0, + 120,32,0,124,240,0,63,224,0,31,192,0,63,224,0,115, + 240,0,33,248,0,7,252,0,31,254,0,63,254,0,127,255, + 0,124,31,0,248,15,128,248,15,128,240,7,128,240,7,128, + 240,7,128,248,15,128,248,15,128,252,31,128,126,63,0,127, + 255,0,63,254,0,31,252,0,7,240,0,15,24,48,20,2, + 0,15,24,31,248,63,240,49,224,0,0,0,0,243,240,247, + 248,255,252,255,254,252,62,248,62,240,30,240,30,240,30,240, + 30,240,30,240,30,240,30,240,30,240,30,240,30,240,30,240, + 30,17,25,75,20,1,0,7,128,0,3,192,0,1,192,0, + 1,224,0,0,240,0,0,0,0,0,0,0,7,240,0,31, + 252,0,63,254,0,127,255,0,124,31,0,248,15,128,248,15, + 128,240,7,128,240,7,128,240,7,128,240,7,128,248,15,128, + 248,15,128,124,31,0,127,255,0,63,254,0,31,252,0,7, + 240,0,17,25,75,20,1,0,0,120,0,0,240,0,0,224, + 0,1,192,0,3,192,0,0,0,0,0,0,0,7,240,0, + 31,252,0,63,254,0,127,255,0,124,31,0,248,15,128,248, + 15,128,240,7,128,240,7,128,240,7,128,240,7,128,248,15, + 128,248,15,128,124,31,0,127,255,0,63,254,0,31,252,0, + 7,240,0,17,25,75,20,1,0,0,192,0,1,224,0,3, + 240,0,7,56,0,14,28,0,0,0,0,0,0,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,17,24,72,20,1,0,7,140,0,15,252,0, + 31,248,0,24,240,0,0,0,0,0,0,0,7,240,0,31, + 252,0,63,254,0,127,255,0,124,31,0,248,15,128,248,15, + 128,240,7,128,240,7,128,240,7,128,240,7,128,248,15,128, + 248,15,128,124,31,0,127,255,0,63,254,0,31,252,0,7, + 240,0,17,24,72,20,1,0,30,60,0,30,60,0,30,60, + 0,30,60,0,0,0,0,0,0,0,7,240,0,31,252,0, + 63,254,0,127,255,0,124,31,0,248,15,128,248,15,128,240, + 7,128,240,7,128,240,7,128,240,7,128,248,15,128,248,15, + 128,124,31,0,127,255,0,63,254,0,31,252,0,7,240,0, + 16,16,32,19,1,0,3,192,3,192,3,192,3,192,0,0, + 0,0,255,255,255,255,255,255,255,255,0,0,0,0,3,192, + 3,192,3,192,3,192,21,18,54,20,255,0,1,252,56,7, + 255,112,15,255,224,31,255,192,31,143,192,62,7,224,62,15, + 224,60,29,224,60,57,224,60,113,224,62,227,224,63,131,224, + 63,7,224,31,143,192,31,255,192,63,255,128,119,255,0,225, + 252,0,15,25,50,20,2,0,30,0,15,0,7,0,3,128, + 1,192,0,0,0,0,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,127,254,127,222,31,30,15,25,50,20,2,0, + 0,240,1,224,1,192,3,128,7,0,0,0,0,0,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,248,62,248,126,255,254,127,254,127,222, + 31,30,15,25,50,20,2,0,3,0,7,128,15,192,28,224, + 56,112,0,0,0,0,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,127,254,127,222,31,30,15,25,50,20,2,0, + 60,120,60,120,60,120,60,120,0,0,0,0,0,0,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,248,62,248,126,255,254,127,254,127,222, + 31,30,16,32,64,19,1,249,0,120,0,240,1,224,1,192, + 3,128,0,0,0,0,248,31,248,31,248,31,120,30,124,62, + 124,60,60,60,60,60,62,120,62,120,30,120,31,240,31,240, + 15,240,15,224,7,224,7,224,7,192,7,192,7,192,15,128, + 63,128,63,0,63,0,60,0,16,32,64,20,2,249,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,243,240,247,252, + 255,254,255,254,252,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,252,62,255,254,255,252,247,248,241,240, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,31, + 62,19,1,249,30,120,30,120,30,120,30,120,0,0,0,0, + 248,31,248,31,248,31,120,62,124,62,124,60,124,60,62,124, + 62,120,62,120,30,120,31,240,31,240,15,240,15,224,7,224, + 7,224,7,192,7,192,7,192,15,128,63,128,63,0,63,0, + 60,0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=17 h=25 x= 2 y=13 dx=19 dy= 0 ascent=25 len=72 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24n[720] U8G_SECTION(".progmem.u8g_font_helvB24n") = { + 0,40,49,250,244,23,0,0,0,0,42,57,0,25,250,23, + 0,10,11,22,13,1,13,12,0,12,0,76,128,237,192,255, + 192,127,128,30,0,63,0,127,128,115,128,33,0,16,16,32, + 19,1,0,3,192,3,192,3,192,3,192,3,192,3,192,255, + 255,255,255,255,255,255,255,3,192,3,192,3,192,3,192,3, + 192,3,192,5,11,11,9,2,250,248,248,248,248,248,24,24, + 56,112,224,128,9,5,10,11,1,7,255,128,255,128,255,128, + 255,128,255,128,5,5,5,9,2,0,248,248,248,248,248,8, + 25,25,9,0,0,3,3,3,3,6,6,6,14,12,12,12, + 28,24,24,24,48,48,48,112,96,96,96,192,192,192,15,24, + 48,18,1,0,15,224,31,240,63,248,127,252,124,124,248,62, + 248,62,248,62,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,248,62,248,62,248,62,124,124,127,252,63,248, + 31,240,15,224,10,23,46,18,2,0,1,192,3,192,7,192, + 31,192,255,192,255,192,255,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,16,24,48,18,1,0,15,224, + 63,248,127,252,127,254,252,126,248,63,248,31,240,31,240,31, + 0,63,0,62,0,126,0,252,1,248,7,240,15,224,31,128, + 63,0,126,0,252,0,255,255,255,255,255,255,255,255,16,24, + 48,18,1,0,15,224,63,248,127,252,127,252,248,62,240,62, + 240,30,240,30,0,62,0,124,3,248,3,240,3,252,0,126, + 0,63,0,31,240,31,240,31,240,63,248,62,127,254,127,252, + 63,248,15,224,16,24,48,18,1,0,0,248,0,248,1,248, + 3,248,3,248,7,248,15,120,14,120,30,120,28,120,60,120, + 120,120,112,120,240,120,224,120,255,255,255,255,255,255,255,255, + 0,120,0,120,0,120,0,120,0,120,15,24,48,18,1,0, + 63,252,63,252,63,252,63,252,56,0,120,0,120,0,120,0, + 123,224,127,248,127,252,127,252,120,126,0,62,0,62,0,30, + 0,30,240,62,240,62,248,124,127,252,127,248,63,240,15,192, + 15,24,48,18,1,0,7,224,31,248,63,252,63,254,124,62, + 120,30,240,0,240,0,243,224,247,248,255,252,255,252,252,126, + 248,62,240,30,240,30,240,30,240,30,248,62,124,124,127,252, + 63,248,31,240,7,192,16,24,48,18,1,0,255,255,255,255, + 255,255,255,255,0,30,0,62,0,60,0,120,0,248,0,240, + 1,240,1,224,3,224,3,192,7,192,7,192,7,128,15,128, + 15,128,15,128,31,0,31,0,31,0,31,0,17,24,72,18, + 0,0,7,240,0,31,252,0,63,254,0,62,62,0,124,31, + 0,120,15,0,120,15,0,120,15,0,124,31,0,62,62,0, + 31,252,0,31,252,0,63,254,0,124,31,0,248,15,128,240, + 7,128,240,7,128,240,7,128,248,15,128,126,63,0,127,254, + 0,63,254,0,31,252,0,7,240,0,15,24,48,18,1,0, + 7,192,31,240,63,248,127,252,124,124,248,62,240,30,240,30, + 240,30,240,30,248,62,252,126,127,254,127,254,63,222,7,158, + 0,30,0,30,240,60,248,124,127,248,127,248,31,240,7,192 + }; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 23 + Calculated Max Values w=29 h=32 x= 3 y=20 dx=33 dy= 0 ascent=25 len=120 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24r[5214] U8G_SECTION(".progmem.u8g_font_helvB24r") = { + 0,40,49,250,244,25,5,252,14,144,32,127,249,25,249,25, + 249,0,0,0,9,0,1,5,25,25,11,3,0,248,248,248, + 248,248,248,248,248,248,248,248,112,112,112,112,112,112,112,0, + 0,248,248,248,248,248,11,9,18,16,2,16,241,224,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,18,25, + 75,19,0,255,3,199,0,3,199,0,3,143,0,3,143,0, + 7,143,0,7,142,0,7,142,0,127,255,192,127,255,192,127, + 255,192,127,255,192,15,28,0,14,28,0,14,28,0,14,60, + 0,255,255,128,255,255,128,255,255,128,255,255,128,28,120,0, + 60,120,0,60,112,0,60,112,0,56,240,0,56,240,0,16, + 28,56,18,1,253,1,128,1,128,15,240,63,252,127,254,253, + 190,249,159,241,159,241,143,249,128,255,128,127,192,63,240,15, + 252,1,254,1,255,1,159,1,143,241,143,241,159,249,159,127, + 254,127,254,63,248,7,224,1,128,1,128,1,128,26,23,92, + 29,1,0,14,0,48,0,63,128,112,0,127,192,96,0,113, + 192,224,0,224,224,192,0,224,225,192,0,224,227,128,0,224, + 227,128,0,113,199,0,0,127,198,0,0,63,142,0,0,14, + 12,28,0,0,28,127,0,0,24,255,128,0,56,227,128,0, + 49,193,192,0,113,193,192,0,97,193,192,0,225,193,192,1, + 192,227,128,1,192,255,128,3,128,127,0,3,0,28,0,20, + 25,75,24,2,0,3,224,0,15,248,0,31,252,0,31,252, + 0,30,60,0,62,60,0,62,60,0,31,60,0,31,248,0, + 15,248,0,15,240,0,15,224,0,63,241,224,127,241,224,124, + 249,192,248,255,192,240,127,192,240,63,128,240,31,0,248,15, + 128,252,63,192,127,255,224,127,251,224,31,241,240,7,192,0, + 4,9,9,8,2,16,240,240,240,240,240,240,240,96,96,8, + 31,31,11,1,250,7,15,30,30,60,60,56,120,120,120,240, + 240,240,240,240,240,240,240,240,248,120,120,120,120,60,60,28, + 30,14,15,7,8,31,31,11,1,250,224,240,120,120,60,60, + 28,30,30,30,15,15,15,15,15,15,15,15,15,31,30,30, + 30,28,60,60,56,120,112,240,224,10,11,22,13,1,13,12, + 0,12,0,76,128,237,192,255,192,127,128,30,0,63,0,127, + 128,115,128,33,0,16,16,32,19,1,0,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,5,11,11,9,2, + 250,248,248,248,248,248,24,24,56,112,224,128,9,5,10,11, + 1,7,255,128,255,128,255,128,255,128,255,128,5,5,5,9, + 2,0,248,248,248,248,248,8,25,25,9,0,0,3,3,3, + 3,6,6,6,14,12,12,12,28,24,24,24,48,48,48,112, + 96,96,96,192,192,192,15,24,48,18,1,0,15,224,31,240, + 63,248,127,252,124,124,248,62,248,62,248,62,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,248,62,248,62, + 248,62,124,124,127,252,63,248,31,240,15,224,10,23,46,18, + 2,0,1,192,3,192,7,192,31,192,255,192,255,192,255,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 16,24,48,18,1,0,15,224,63,248,127,252,127,254,252,126, + 248,63,248,31,240,31,240,31,0,63,0,62,0,126,0,252, + 1,248,7,240,15,224,31,128,63,0,126,0,252,0,255,255, + 255,255,255,255,255,255,16,24,48,18,1,0,15,224,63,248, + 127,252,127,252,248,62,240,62,240,30,240,30,0,62,0,124, + 3,248,3,240,3,252,0,126,0,63,0,31,240,31,240,31, + 240,63,248,62,127,254,127,252,63,248,15,224,16,24,48,18, + 1,0,0,248,0,248,1,248,3,248,3,248,7,248,15,120, + 14,120,30,120,28,120,60,120,120,120,112,120,240,120,224,120, + 255,255,255,255,255,255,255,255,0,120,0,120,0,120,0,120, + 0,120,15,24,48,18,1,0,63,252,63,252,63,252,63,252, + 56,0,120,0,120,0,120,0,123,224,127,248,127,252,127,252, + 120,126,0,62,0,62,0,30,0,30,240,62,240,62,248,124, + 127,252,127,248,63,240,15,192,15,24,48,18,1,0,7,224, + 31,248,63,252,63,254,124,62,120,30,240,0,240,0,243,224, + 247,248,255,252,255,252,252,126,248,62,240,30,240,30,240,30, + 240,30,248,62,124,124,127,252,63,248,31,240,7,192,16,24, + 48,18,1,0,255,255,255,255,255,255,255,255,0,30,0,62, + 0,60,0,120,0,248,0,240,1,240,1,224,3,224,3,192, + 7,192,7,192,7,128,15,128,15,128,15,128,31,0,31,0, + 31,0,31,0,17,24,72,18,0,0,7,240,0,31,252,0, + 63,254,0,62,62,0,124,31,0,120,15,0,120,15,0,120, + 15,0,124,31,0,62,62,0,31,252,0,31,252,0,63,254, + 0,124,31,0,248,15,128,240,7,128,240,7,128,240,7,128, + 248,15,128,126,63,0,127,254,0,63,254,0,31,252,0,7, + 240,0,15,24,48,18,1,0,7,192,31,240,63,248,127,252, + 124,124,248,62,240,30,240,30,240,30,240,30,248,62,252,126, + 127,254,127,254,63,222,7,158,0,30,0,30,240,60,248,124, + 127,248,127,248,31,240,7,192,5,17,17,11,3,0,248,248, + 248,248,248,0,0,0,0,0,0,0,248,248,248,248,248,5, + 23,23,11,3,250,248,248,248,248,248,0,0,0,0,0,0, + 0,248,248,248,248,248,24,24,56,112,224,128,16,16,32,19, + 1,0,0,3,0,31,0,127,3,255,15,254,127,248,255,192, + 254,0,254,0,255,192,127,240,15,254,3,255,0,127,0,31, + 0,3,15,12,24,19,2,2,255,254,255,254,255,254,255,254, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,255,254, + 16,16,32,19,1,0,192,0,240,0,254,0,255,192,127,240, + 31,254,3,255,0,127,0,127,3,255,31,254,127,240,255,192, + 254,0,240,0,192,0,16,25,50,20,2,0,15,224,63,248, + 127,252,127,254,252,126,248,63,248,31,240,31,240,31,0,63, + 0,126,0,254,1,252,1,248,3,224,3,192,7,192,7,192, + 0,0,0,0,7,192,7,192,7,192,7,192,7,192,29,30, + 120,33,1,251,0,15,224,0,0,127,252,0,1,255,254,0, + 3,240,63,128,7,192,7,192,15,0,3,192,30,0,1,224, + 28,0,0,240,60,7,220,112,56,31,252,112,112,60,252,56, + 112,120,120,56,240,240,56,56,224,224,56,56,225,224,56,56, + 225,192,112,120,225,192,112,112,225,192,112,112,225,224,240,224, + 241,225,241,224,112,255,255,192,120,127,63,128,56,62,30,0, + 60,0,0,0,30,0,0,0,15,128,0,0,15,240,60,0, + 3,255,252,0,1,255,252,0,0,127,224,0,22,25,75,23, + 0,0,0,252,0,0,252,0,1,254,0,1,254,0,1,254, + 0,3,255,0,3,255,0,3,255,0,7,207,128,7,207,128, + 7,207,128,15,135,128,15,135,192,15,135,192,31,3,192,31, + 3,224,31,255,224,31,255,224,63,255,240,63,255,240,62,1, + 240,124,0,248,124,0,248,252,0,252,248,0,124,19,25,75, + 24,3,0,255,252,0,255,255,0,255,255,128,255,255,128,248, + 15,192,248,7,192,248,7,192,248,7,192,248,7,192,248,15, + 128,255,255,0,255,255,0,255,255,128,255,255,192,248,7,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 7,224,255,255,192,255,255,192,255,255,128,255,254,0,21,25, + 75,24,1,0,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,248,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,254,0,21, + 25,75,24,2,0,255,248,0,255,255,0,255,255,128,255,255, + 192,248,15,224,248,3,224,248,3,240,248,1,240,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,1,248,248,1,240,248,3,240,248,3, + 224,248,15,224,255,255,192,255,255,128,255,255,0,255,248,0, + 18,25,75,22,2,0,255,255,128,255,255,128,255,255,128,255, + 255,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,255,192,255,255,192,255,255,192,255,255, + 192,16,25,50,20,2,0,255,255,255,255,255,255,255,255,248, + 0,248,0,248,0,248,0,248,0,248,0,255,254,255,254,255, + 254,255,254,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,22,25,75,25,1,0,0, + 255,0,3,255,192,15,255,224,31,255,240,31,195,248,63,0, + 248,126,0,124,124,0,124,252,0,0,248,0,0,248,0,0, + 248,0,0,248,15,252,248,15,252,248,15,252,248,15,252,252, + 0,124,124,0,124,126,0,124,126,0,252,63,131,252,63,255, + 252,31,255,220,7,255,156,3,254,28,19,25,75,23,2,0, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,255,255, + 224,255,255,224,255,255,224,255,255,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,5,25,25,9,2, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,15,25,50,18,1,0, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,248,62, + 248,62,248,62,248,62,248,62,252,126,255,252,127,252,63,248, + 15,224,20,25,75,24,2,0,248,7,224,248,7,224,248,15, + 192,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 249,248,0,251,240,0,255,224,0,255,224,0,255,240,0,255, + 240,0,255,248,0,252,252,0,248,126,0,248,126,0,248,63, + 0,248,31,128,248,15,128,248,15,192,248,7,224,248,3,240, + 248,3,240,16,25,50,20,2,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,255,255,255,255,255,255,255,255,23,25,75,27,2, + 0,254,0,254,254,0,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,131,254,255,131,254,251,131,190,251,131,190,251, + 199,190,251,199,190,251,199,190,249,199,62,249,239,62,249,239, + 62,249,239,62,249,239,62,248,238,62,248,254,62,248,254,62, + 248,254,62,248,124,62,248,124,62,248,124,62,19,25,75,24, + 2,0,248,3,224,252,3,224,252,3,224,254,3,224,254,3, + 224,255,3,224,255,3,224,255,131,224,255,195,224,251,195,224, + 251,227,224,249,227,224,249,243,224,248,243,224,248,251,224,248, + 123,224,248,63,224,248,63,224,248,31,224,248,31,224,248,15, + 224,248,15,224,248,7,224,248,7,224,248,3,224,23,25,75, + 25,1,0,1,255,0,7,255,192,15,255,224,31,255,240,63, + 199,248,63,1,248,126,0,252,124,0,124,124,0,124,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,124,0,124,124,0,124,126,0,252,63,1,248,63, + 199,248,31,255,240,15,255,224,7,255,192,1,255,0,18,25, + 75,22,2,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,252, + 0,255,240,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,23, + 26,78,26,1,255,1,255,0,7,255,192,15,255,224,31,255, + 240,63,199,248,63,1,248,126,0,252,124,0,124,252,0,126, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,2,62,252,7,62,124,15,188,126,15,252,63,7, + 248,63,195,240,31,255,248,15,255,252,7,255,254,1,255,60, + 0,0,24,19,25,75,24,2,0,255,254,0,255,255,128,255, + 255,192,255,255,192,248,7,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,7,192,248,15,192,255,255,128,255,255,0, + 255,255,0,255,255,128,248,15,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 224,248,3,224,19,25,75,22,1,0,3,248,0,15,254,0, + 31,255,0,63,255,128,62,31,128,124,7,192,120,7,192,120, + 3,192,124,0,0,127,0,0,63,240,0,63,254,0,31,255, + 128,3,255,192,0,63,192,0,7,224,0,3,224,248,3,224, + 248,3,224,124,3,224,126,15,192,63,255,192,31,255,128,15, + 255,0,3,248,0,19,25,75,20,0,0,255,255,224,255,255, + 224,255,255,224,255,255,224,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,19,25,75,24,2,0,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,252,7,224,127,31,192,127,255,192,63,255, + 128,31,255,0,7,252,0,20,25,75,22,1,0,248,1,240, + 248,1,240,124,3,224,124,3,224,124,3,224,60,3,192,62, + 7,192,62,7,192,30,7,128,31,15,128,31,15,128,15,15, + 0,15,15,0,15,15,0,7,158,0,7,158,0,7,158,0, + 7,254,0,3,252,0,3,252,0,3,252,0,1,248,0,1, + 248,0,1,248,0,0,240,0,29,25,100,31,1,0,248,31, + 129,248,248,31,129,248,120,31,129,240,120,31,129,240,120,31, + 129,240,124,63,195,224,124,63,195,224,124,63,195,224,60,63, + 195,224,60,57,195,192,62,121,227,192,62,121,231,192,30,121, + 231,192,30,121,231,128,30,112,231,128,30,112,231,128,15,240, + 255,0,15,240,255,0,15,240,255,0,15,224,127,0,7,224, + 126,0,7,224,126,0,7,224,126,0,3,192,60,0,3,192, + 60,0,20,25,75,22,1,0,252,3,224,126,7,224,126,7, + 192,63,15,192,31,15,128,31,159,0,15,159,0,15,190,0, + 7,254,0,7,252,0,3,252,0,3,248,0,1,248,0,3, + 248,0,3,252,0,7,252,0,7,254,0,15,191,0,31,159, + 0,31,31,128,63,15,128,62,15,192,126,7,192,252,7,224, + 252,3,240,20,25,75,22,1,0,252,3,240,252,3,224,126, + 7,224,62,7,192,63,15,192,63,15,128,31,15,128,31,159, + 0,15,159,0,15,254,0,7,254,0,7,252,0,3,252,0, + 3,248,0,3,248,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,17,25,75,20,1,0,255,255,128,255,255,128, + 255,255,128,255,255,128,0,15,128,0,31,128,0,63,0,0, + 126,0,0,124,0,0,252,0,1,248,0,3,240,0,3,240, + 0,7,224,0,15,192,0,15,128,0,31,128,0,63,0,0, + 126,0,0,126,0,0,252,0,0,255,255,128,255,255,128,255, + 255,128,255,255,128,8,31,31,11,2,250,255,255,255,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,255,255,255,9,25,50,9,0,0, + 192,0,192,0,224,0,96,0,96,0,112,0,112,0,48,0, + 56,0,56,0,24,0,28,0,28,0,12,0,12,0,14,0, + 14,0,6,0,7,0,7,0,3,0,3,128,3,128,1,128, + 1,128,8,31,31,11,0,250,255,255,255,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,255,255,255,14,14,28,19,2,9,7,128,15, + 192,15,192,15,192,31,224,31,224,60,240,60,240,56,112,120, + 120,120,120,112,60,240,60,240,60,18,2,6,18,0,250,255, + 255,192,255,255,192,5,5,5,11,2,20,224,240,112,120,56, + 15,18,36,18,1,0,15,240,63,252,127,252,124,62,248,30, + 248,30,0,254,15,254,63,254,127,30,248,30,248,30,240,62, + 248,126,255,254,255,254,127,222,63,30,16,25,50,20,2,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,243,240, + 247,252,255,252,255,254,252,62,248,31,240,31,240,15,240,15, + 240,15,240,15,240,31,240,31,248,62,255,254,255,252,247,248, + 241,240,15,18,36,18,1,0,7,224,31,248,63,252,63,252, + 124,62,120,62,240,30,240,0,240,0,240,0,240,0,240,30, + 248,30,124,62,127,252,63,248,31,248,7,224,16,25,50,20, + 1,0,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 15,207,31,239,63,255,127,255,124,63,248,31,240,15,240,15, + 240,15,240,15,240,15,240,15,248,31,124,63,127,255,63,239, + 31,239,15,143,16,18,36,18,1,0,7,224,31,248,63,252, + 127,254,124,62,248,31,240,31,255,255,255,255,255,255,240,0, + 240,0,248,30,124,62,127,252,63,252,31,240,7,192,10,25, + 50,11,0,0,7,192,15,192,31,192,31,0,30,0,30,0, + 30,0,255,192,255,192,255,192,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,16,25,50,20,1,249,15,207,31,239, + 63,255,127,255,124,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,124,63,127,255,63,255,31,239,15,207, + 0,15,248,31,248,31,126,126,127,254,63,252,15,240,15,25, + 50,20,2,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,241,224,247,248,255,252,255,252,252,62,248,30,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,4,25,25,9,2,0,240,240,240,240, + 0,0,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,6,32,32,9,0,249,60,60,60,60,0, + 0,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,252,252,248,248,15,25,50,19,2, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 62,240,124,240,248,241,240,243,224,247,192,255,128,255,192,255, + 192,255,224,255,224,249,240,241,240,240,248,240,120,240,124,240, + 62,240,62,4,25,25,9,2,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,24,18,54,30,2,0,241,224,248,247,251,254,255,255, + 254,255,255,255,252,127,31,248,62,15,240,60,15,240,60,15, + 240,60,15,240,60,15,240,60,15,240,60,15,240,60,15,240, + 60,15,240,60,15,240,60,15,240,60,15,240,60,15,15,18, + 36,20,2,0,241,240,247,252,255,252,255,254,252,62,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,17,18,54,20,1,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,16,25,50,20,2,249,241,240,247,248,255,252, + 255,254,252,62,248,31,248,31,240,15,240,15,240,15,240,15, + 248,31,248,31,252,62,255,254,255,252,247,248,241,240,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,16,25,50,20, + 1,249,7,207,31,239,63,255,127,255,124,63,248,31,240,15, + 240,15,240,15,240,15,240,15,240,15,248,31,124,63,127,255, + 63,255,63,239,15,207,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,10,18,36,13,2,0,240,192,243,192,247,192, + 255,192,255,192,252,0,248,0,248,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,18, + 36,19,1,0,7,240,31,252,63,254,124,62,120,31,120,31, + 124,0,127,192,63,248,15,254,3,255,0,63,248,15,248,15, + 124,31,127,254,63,252,15,240,9,22,44,11,1,0,60,0, + 60,0,60,0,60,0,255,128,255,128,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,63,128,63,128,31,128,15,128,15,18,36,20,2,0, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,248,62,248,126,255,254,127,254, + 127,222,31,30,17,18,54,19,0,0,248,15,128,248,15,128, + 124,31,0,124,31,0,60,30,0,60,30,0,62,62,0,30, + 60,0,30,60,0,30,60,0,15,120,0,15,120,0,15,120, + 0,7,240,0,7,240,0,7,240,0,3,224,0,3,224,0, + 25,18,72,26,0,0,248,62,15,128,248,62,15,128,120,62, + 15,0,124,62,31,0,124,127,31,0,60,127,30,0,60,127, + 30,0,60,119,30,0,60,247,158,0,30,227,188,0,30,227, + 188,0,30,227,188,0,31,227,252,0,15,193,248,0,15,193, + 248,0,15,193,248,0,7,128,240,0,7,128,240,0,16,18, + 36,19,1,0,248,31,252,63,124,62,62,124,62,120,31,248, + 15,240,7,224,3,192,7,224,15,224,15,240,31,248,62,120, + 62,124,124,62,252,63,248,31,16,25,50,19,1,249,248,31, + 248,31,248,30,120,62,124,62,124,60,60,60,62,124,62,120, + 30,120,30,120,31,240,15,240,15,240,15,224,7,224,7,224, + 7,192,7,192,7,192,15,128,63,128,63,0,63,0,60,0, + 14,18,36,17,1,0,255,252,255,252,255,252,255,252,0,248, + 1,240,3,240,7,224,15,192,31,128,31,0,62,0,124,0, + 248,0,255,252,255,252,255,252,255,252,9,32,64,13,2,249, + 15,128,31,128,63,128,62,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,124,0,120,0, + 224,0,120,0,124,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,63,128,31,128,15,128, + 3,31,31,9,3,250,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,9,32,64,13,2,249,248,0,252,0,254, + 0,62,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,31,0,15,0,3,128,15,0,31, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,254,0,252,0,248,0,14,6,12,19,2, + 5,56,0,126,12,255,156,231,252,193,248,0,112,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=11 x= 1 y= 7 dx=11 dy= 0 ascent=11 len=18 + Font Bounding box w=13 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR08[2687] U8G_SECTION(".progmem.u8g_font_helvR08") = { + 0,13,18,254,252,8,1,178,3,111,32,255,254,11,254,8, + 254,0,0,0,3,0,1,1,8,8,3,1,0,128,128,128, + 128,128,128,0,128,3,2,2,4,1,6,160,160,6,7,7, + 6,0,0,40,40,124,40,248,80,80,5,10,10,6,0,255, + 32,112,168,160,112,40,40,168,112,32,8,8,8,9,0,0, + 100,148,104,8,16,22,41,38,6,8,8,8,1,0,96,144, + 144,96,148,136,152,100,1,2,2,2,0,6,128,128,3,10, + 10,4,0,254,32,64,64,128,128,128,128,64,64,32,3,10, + 10,4,1,254,128,64,64,32,32,32,32,64,64,128,3,3, + 3,4,0,5,160,64,160,5,5,5,6,0,1,32,32,248, + 32,32,2,3,3,3,0,254,64,64,128,3,1,1,4,0, + 3,224,1,1,1,3,1,0,128,3,8,8,3,0,0,32, + 32,64,64,64,64,128,128,5,8,8,6,0,0,112,136,136, + 136,136,136,136,112,2,8,8,6,1,0,64,192,64,64,64, + 64,64,64,5,8,8,6,0,0,112,136,8,8,48,64,128, + 248,5,8,8,6,0,0,112,136,8,48,8,8,136,112,5, + 8,8,6,0,0,16,48,80,80,144,248,16,16,5,8,8, + 6,0,0,120,64,64,112,8,8,136,112,5,8,8,6,0, + 0,112,136,128,240,136,136,136,112,5,8,8,6,0,0,248, + 8,16,32,32,64,64,64,5,8,8,6,0,0,112,136,136, + 112,136,136,136,112,5,8,8,6,0,0,112,136,136,136,120, + 8,136,112,1,6,6,3,1,0,128,0,0,0,0,128,2, + 8,8,3,0,254,64,0,0,0,0,64,64,128,3,5,5, + 6,1,1,32,64,128,64,32,4,3,3,5,0,2,240,0, + 240,3,5,5,6,1,1,128,64,32,64,128,4,8,8,6, + 1,0,96,144,16,32,64,64,0,64,10,9,18,11,0,255, + 31,0,32,128,77,64,146,64,162,64,164,128,155,0,64,0, + 62,0,7,8,8,7,0,0,16,16,40,40,68,124,130,130, + 5,8,8,7,1,0,240,136,136,240,136,136,136,240,6,8, + 8,8,1,0,120,132,128,128,128,128,132,120,6,8,8,8, + 1,0,240,136,132,132,132,132,136,240,5,8,8,7,1,0, + 248,128,128,248,128,128,128,248,5,8,8,6,1,0,248,128, + 128,240,128,128,128,128,6,8,8,8,1,0,120,132,128,128, + 140,132,132,124,6,8,8,8,1,0,132,132,132,252,132,132, + 132,132,1,8,8,3,1,0,128,128,128,128,128,128,128,128, + 4,8,8,5,0,0,16,16,16,16,16,16,144,96,5,8, + 8,7,1,0,136,144,160,224,144,144,136,136,4,8,8,6, + 1,0,128,128,128,128,128,128,128,240,7,8,8,9,1,0, + 130,198,198,170,170,146,146,146,6,8,8,8,1,0,196,196, + 164,164,148,148,140,140,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,5,8,8,7,1,0,240,136,136,240,128,128, + 128,128,7,9,9,8,1,255,120,132,132,132,132,148,140,124, + 2,5,8,8,7,1,0,240,136,136,240,136,136,136,136,5, + 8,8,7,1,0,112,136,128,112,8,136,136,112,5,8,8, + 5,0,0,248,32,32,32,32,32,32,32,6,8,8,8,1, + 0,132,132,132,132,132,132,132,120,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,9,0,0,136,128,136, + 128,73,0,73,0,85,0,34,0,34,0,34,0,5,8,8, + 7,1,0,136,136,80,32,80,80,136,136,7,8,8,7,0, + 0,130,68,68,40,40,16,16,16,5,8,8,7,1,0,248, + 8,16,32,32,64,128,248,2,10,10,3,1,254,192,128,128, + 128,128,128,128,128,128,192,3,8,8,3,0,0,128,128,64, + 64,64,64,32,32,2,10,10,3,0,254,192,64,64,64,64, + 64,64,64,64,192,5,5,5,6,0,3,32,32,80,80,136, + 6,1,1,6,0,254,252,2,2,2,3,0,7,128,64,5, + 6,6,5,0,0,224,16,112,144,144,104,5,8,8,6,0, + 0,128,128,176,200,136,136,200,176,4,6,6,5,0,0,96, + 144,128,128,144,96,5,8,8,6,0,0,8,8,104,152,136, + 136,152,104,4,6,6,5,0,0,96,144,240,128,144,96,4, + 8,8,4,0,0,48,64,224,64,64,64,64,64,5,8,8, + 6,0,254,104,152,136,136,152,104,8,112,5,8,8,6,0, + 0,128,128,176,200,136,136,136,136,1,8,8,2,0,0,128, + 0,128,128,128,128,128,128,2,10,10,2,255,254,64,0,64, + 64,64,64,64,64,64,128,4,8,8,5,0,0,128,128,144, + 160,192,160,144,144,1,8,8,2,0,0,128,128,128,128,128, + 128,128,128,7,6,6,8,0,0,236,146,146,146,146,146,5, + 6,6,6,0,0,176,200,136,136,136,136,5,6,6,6,0, + 0,112,136,136,136,136,112,5,8,8,6,0,254,176,200,136, + 136,200,176,128,128,5,8,8,6,0,254,104,152,136,136,152, + 104,8,8,3,6,6,4,0,0,160,192,128,128,128,128,4, + 6,6,5,0,0,96,144,96,16,144,96,3,8,8,4,0, + 0,64,64,224,64,64,64,64,96,4,6,6,5,0,0,144, + 144,144,144,144,112,5,6,6,6,0,0,136,136,80,80,32, + 32,7,6,6,8,0,0,146,146,84,84,40,40,5,6,6, + 6,0,0,136,80,32,80,136,136,5,8,8,5,255,254,72, + 72,80,80,48,32,32,192,4,6,6,5,0,0,240,16,32, + 64,128,240,3,10,10,3,0,254,32,64,64,64,128,64,64, + 64,64,32,1,10,10,3,1,254,128,128,128,128,128,128,128, + 128,128,128,3,10,10,3,0,254,128,64,64,64,32,64,64, + 64,64,128,6,2,2,7,0,3,100,152,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,3, + 0,1,1,8,8,3,1,254,128,0,128,128,128,128,128,128, + 5,8,8,6,1,255,16,112,168,160,160,168,112,64,5,8, + 8,6,0,0,48,72,64,224,64,64,72,176,4,6,6,5, + 0,1,144,96,144,144,96,144,5,8,8,6,0,0,136,136, + 136,80,248,32,248,32,1,10,10,3,1,254,128,128,128,128, + 0,0,128,128,128,128,5,10,10,6,0,254,112,136,192,112, + 152,200,112,24,136,112,3,1,1,3,0,7,160,7,7,7, + 9,1,0,56,68,154,162,154,68,56,3,5,5,4,0,3, + 224,32,160,0,224,5,5,5,6,0,0,40,80,160,80,40, + 5,3,3,7,1,2,248,8,8,3,1,1,4,0,3,224, + 7,7,7,9,1,0,56,68,186,178,170,68,56,3,1,1, + 3,0,7,224,4,4,4,4,0,4,96,144,144,96,5,7, + 7,6,0,0,32,32,248,32,32,0,248,3,4,4,3,0, + 4,96,160,64,224,3,4,4,3,0,4,224,64,32,192,2, + 2,2,3,0,7,64,128,4,8,8,5,0,254,144,144,144, + 144,144,240,128,128,6,10,10,6,0,254,124,232,232,232,104, + 40,40,40,40,40,2,1,1,3,0,3,192,2,2,2,3, + 0,254,64,192,2,4,4,3,0,4,64,192,64,64,3,5, + 5,4,0,3,224,160,224,0,224,5,5,5,6,0,0,160, + 80,40,80,160,9,8,16,9,0,0,68,0,196,0,72,0, + 72,0,17,0,19,0,39,128,33,0,8,8,8,9,0,0, + 68,196,72,72,19,21,34,39,9,8,16,9,0,0,224,0, + 68,0,36,0,200,0,9,0,19,0,23,128,33,0,4,8, + 8,6,1,254,32,0,32,32,64,128,144,96,7,11,11,7, + 0,0,32,16,0,16,16,40,40,68,124,130,130,7,11,11, + 7,0,0,8,16,0,16,16,40,40,68,124,130,130,7,11, + 11,7,0,0,16,40,0,16,16,40,40,68,124,130,130,7, + 11,11,7,0,0,20,40,0,16,16,40,40,68,124,130,130, + 7,10,10,7,0,0,40,0,16,16,40,40,68,124,130,130, + 7,11,11,7,0,0,16,40,16,16,16,40,40,68,124,130, + 130,9,8,16,10,0,0,31,128,24,0,40,0,47,128,72, + 0,120,0,136,0,143,128,6,10,10,8,1,254,120,132,128, + 128,128,128,132,120,16,48,5,11,11,7,1,0,64,32,0, + 248,128,128,248,128,128,128,248,5,11,11,7,1,0,16,32, + 0,248,128,128,248,128,128,128,248,5,11,11,7,1,0,32, + 80,0,248,128,128,248,128,128,128,248,5,10,10,7,1,0, + 80,0,248,128,128,248,128,128,128,248,2,11,11,3,0,0, + 128,64,0,64,64,64,64,64,64,64,64,2,11,11,3,1, + 0,64,128,0,128,128,128,128,128,128,128,128,3,11,11,3, + 0,0,64,160,0,64,64,64,64,64,64,64,64,3,10,10, + 3,0,0,160,0,64,64,64,64,64,64,64,64,7,8,8, + 8,0,0,120,68,66,242,66,66,68,120,6,11,11,8,1, + 0,40,80,0,196,196,164,164,148,148,140,140,6,11,11,8, + 1,0,32,16,0,120,132,132,132,132,132,132,120,6,11,11, + 8,1,0,8,16,0,120,132,132,132,132,132,132,120,6,11, + 11,8,1,0,32,80,0,120,132,132,132,132,132,132,120,6, + 11,11,8,1,0,40,80,0,120,132,132,132,132,132,132,120, + 6,10,10,8,1,0,72,0,120,132,132,132,132,132,132,120, + 5,5,5,6,0,1,136,80,32,80,136,6,10,10,8,1, + 255,4,120,140,148,148,164,164,196,120,128,6,11,11,8,1, + 0,32,16,0,132,132,132,132,132,132,132,120,6,11,11,8, + 1,0,8,16,0,132,132,132,132,132,132,132,120,6,11,11, + 8,1,0,32,80,0,132,132,132,132,132,132,132,120,6,10, + 10,8,1,0,72,0,132,132,132,132,132,132,132,120,7,11, + 11,7,0,0,8,16,0,130,68,68,40,40,16,16,16,5, + 8,8,7,1,0,128,128,240,136,136,240,128,128,4,8,8, + 5,0,0,96,144,144,160,144,144,144,160,5,9,9,5,0, + 0,64,32,0,224,16,112,144,144,104,5,9,9,5,0,0, + 32,64,0,224,16,112,144,144,104,5,9,9,5,0,0,32, + 80,0,224,16,112,144,144,104,5,9,9,5,0,0,80,160, + 0,224,16,112,144,144,104,5,8,8,5,0,0,80,0,224, + 16,112,144,144,104,5,9,9,5,0,0,32,80,32,224,16, + 112,144,144,104,7,6,6,8,0,0,236,18,126,144,146,108, + 4,8,8,5,0,254,96,144,128,128,144,96,32,96,4,9, + 9,5,0,0,64,32,0,96,144,240,128,144,96,4,9,9, + 5,0,0,32,64,0,96,144,240,128,144,96,4,9,9,5, + 0,0,64,160,0,96,144,240,128,144,96,4,8,8,5,0, + 0,160,0,96,144,240,128,144,96,2,9,9,2,255,0,128, + 64,0,64,64,64,64,64,64,2,9,9,2,0,0,64,128, + 0,128,128,128,128,128,128,3,9,9,2,255,0,64,160,0, + 64,64,64,64,64,64,3,8,8,2,255,0,160,0,64,64, + 64,64,64,64,5,9,9,6,0,0,64,120,144,120,136,136, + 136,136,112,4,9,9,5,0,0,80,160,0,224,144,144,144, + 144,144,5,9,9,6,0,0,64,32,0,112,136,136,136,136, + 112,5,9,9,6,0,0,16,32,0,112,136,136,136,136,112, + 5,9,9,6,0,0,32,80,0,112,136,136,136,136,112,5, + 9,9,6,0,0,40,80,0,112,136,136,136,136,112,5,8, + 8,6,0,0,80,0,112,136,136,136,136,112,5,5,5,6, + 0,1,32,0,248,0,32,7,6,6,6,255,0,58,76,84, + 100,68,184,4,9,9,5,0,0,64,32,0,144,144,144,144, + 144,112,4,9,9,5,0,0,16,32,0,144,144,144,144,144, + 112,4,9,9,5,0,0,64,160,0,144,144,144,144,144,112, + 4,8,8,5,0,0,160,0,144,144,144,144,144,112,5,11, + 11,5,255,254,8,16,0,72,72,80,80,48,32,32,192,5, + 10,10,6,0,254,128,128,176,200,136,136,200,176,128,128,5, + 10,10,5,255,254,80,0,72,72,80,80,48,32,32,192}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=10 x= 1 y= 7 dx=11 dy= 0 ascent= 9 len=18 + Font Bounding box w=13 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR08r[1276] U8G_SECTION(".progmem.u8g_font_helvR08r") = { + 0,13,18,254,252,8,1,178,3,111,32,127,254,9,254,8, + 254,0,0,0,3,0,1,1,8,8,3,1,0,128,128,128, + 128,128,128,0,128,3,2,2,4,1,6,160,160,6,7,7, + 6,0,0,40,40,124,40,248,80,80,5,10,10,6,0,255, + 32,112,168,160,112,40,40,168,112,32,8,8,8,9,0,0, + 100,148,104,8,16,22,41,38,6,8,8,8,1,0,96,144, + 144,96,148,136,152,100,1,2,2,2,0,6,128,128,3,10, + 10,4,0,254,32,64,64,128,128,128,128,64,64,32,3,10, + 10,4,1,254,128,64,64,32,32,32,32,64,64,128,3,3, + 3,4,0,5,160,64,160,5,5,5,6,0,1,32,32,248, + 32,32,2,3,3,3,0,254,64,64,128,3,1,1,4,0, + 3,224,1,1,1,3,1,0,128,3,8,8,3,0,0,32, + 32,64,64,64,64,128,128,5,8,8,6,0,0,112,136,136, + 136,136,136,136,112,2,8,8,6,1,0,64,192,64,64,64, + 64,64,64,5,8,8,6,0,0,112,136,8,8,48,64,128, + 248,5,8,8,6,0,0,112,136,8,48,8,8,136,112,5, + 8,8,6,0,0,16,48,80,80,144,248,16,16,5,8,8, + 6,0,0,120,64,64,112,8,8,136,112,5,8,8,6,0, + 0,112,136,128,240,136,136,136,112,5,8,8,6,0,0,248, + 8,16,32,32,64,64,64,5,8,8,6,0,0,112,136,136, + 112,136,136,136,112,5,8,8,6,0,0,112,136,136,136,120, + 8,136,112,1,6,6,3,1,0,128,0,0,0,0,128,2, + 8,8,3,0,254,64,0,0,0,0,64,64,128,3,5,5, + 6,1,1,32,64,128,64,32,4,3,3,5,0,2,240,0, + 240,3,5,5,6,1,1,128,64,32,64,128,4,8,8,6, + 1,0,96,144,16,32,64,64,0,64,10,9,18,11,0,255, + 31,0,32,128,77,64,146,64,162,64,164,128,155,0,64,0, + 62,0,7,8,8,7,0,0,16,16,40,40,68,124,130,130, + 5,8,8,7,1,0,240,136,136,240,136,136,136,240,6,8, + 8,8,1,0,120,132,128,128,128,128,132,120,6,8,8,8, + 1,0,240,136,132,132,132,132,136,240,5,8,8,7,1,0, + 248,128,128,248,128,128,128,248,5,8,8,6,1,0,248,128, + 128,240,128,128,128,128,6,8,8,8,1,0,120,132,128,128, + 140,132,132,124,6,8,8,8,1,0,132,132,132,252,132,132, + 132,132,1,8,8,3,1,0,128,128,128,128,128,128,128,128, + 4,8,8,5,0,0,16,16,16,16,16,16,144,96,5,8, + 8,7,1,0,136,144,160,224,144,144,136,136,4,8,8,6, + 1,0,128,128,128,128,128,128,128,240,7,8,8,9,1,0, + 130,198,198,170,170,146,146,146,6,8,8,8,1,0,196,196, + 164,164,148,148,140,140,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,5,8,8,7,1,0,240,136,136,240,128,128, + 128,128,7,9,9,8,1,255,120,132,132,132,132,148,140,124, + 2,5,8,8,7,1,0,240,136,136,240,136,136,136,136,5, + 8,8,7,1,0,112,136,128,112,8,136,136,112,5,8,8, + 5,0,0,248,32,32,32,32,32,32,32,6,8,8,8,1, + 0,132,132,132,132,132,132,132,120,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,9,0,0,136,128,136, + 128,73,0,73,0,85,0,34,0,34,0,34,0,5,8,8, + 7,1,0,136,136,80,32,80,80,136,136,7,8,8,7,0, + 0,130,68,68,40,40,16,16,16,5,8,8,7,1,0,248, + 8,16,32,32,64,128,248,2,10,10,3,1,254,192,128,128, + 128,128,128,128,128,128,192,3,8,8,3,0,0,128,128,64, + 64,64,64,32,32,2,10,10,3,0,254,192,64,64,64,64, + 64,64,64,64,192,5,5,5,6,0,3,32,32,80,80,136, + 6,1,1,6,0,254,252,2,2,2,3,0,7,128,64,5, + 6,6,5,0,0,224,16,112,144,144,104,5,8,8,6,0, + 0,128,128,176,200,136,136,200,176,4,6,6,5,0,0,96, + 144,128,128,144,96,5,8,8,6,0,0,8,8,104,152,136, + 136,152,104,4,6,6,5,0,0,96,144,240,128,144,96,4, + 8,8,4,0,0,48,64,224,64,64,64,64,64,5,8,8, + 6,0,254,104,152,136,136,152,104,8,112,5,8,8,6,0, + 0,128,128,176,200,136,136,136,136,1,8,8,2,0,0,128, + 0,128,128,128,128,128,128,2,10,10,2,255,254,64,0,64, + 64,64,64,64,64,64,128,4,8,8,5,0,0,128,128,144, + 160,192,160,144,144,1,8,8,2,0,0,128,128,128,128,128, + 128,128,128,7,6,6,8,0,0,236,146,146,146,146,146,5, + 6,6,6,0,0,176,200,136,136,136,136,5,6,6,6,0, + 0,112,136,136,136,136,112,5,8,8,6,0,254,176,200,136, + 136,200,176,128,128,5,8,8,6,0,254,104,152,136,136,152, + 104,8,8,3,6,6,4,0,0,160,192,128,128,128,128,4, + 6,6,5,0,0,96,144,96,16,144,96,3,8,8,4,0, + 0,64,64,224,64,64,64,64,96,4,6,6,5,0,0,144, + 144,144,144,144,112,5,6,6,6,0,0,136,136,80,80,32, + 32,7,6,6,8,0,0,146,146,84,84,40,40,5,6,6, + 6,0,0,136,80,32,80,136,136,5,8,8,5,255,254,72, + 72,80,80,48,32,32,192,4,6,6,5,0,0,240,16,32, + 64,128,240,3,10,10,3,0,254,32,64,64,64,128,64,64, + 64,64,32,1,10,10,3,1,254,128,128,128,128,128,128,128, + 128,128,128,3,10,10,3,0,254,128,64,64,64,32,64,64, + 64,64,128,6,2,2,7,0,3,100,152,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=13 h=14 x= 2 y= 9 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=22 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR10[3527] U8G_SECTION(".progmem.u8g_font_helvR10") = { + 0,17,22,254,251,11,2,10,4,133,32,255,253,14,253,11, + 253,0,0,0,4,0,1,1,11,11,4,2,0,128,128,128, + 128,128,128,128,128,0,128,128,3,3,3,5,1,8,160,160, + 160,7,10,10,8,0,0,20,20,20,126,40,40,252,80,80, + 80,7,14,14,8,0,254,16,124,146,146,144,80,56,20,18, + 146,146,124,16,16,11,11,22,12,0,0,112,128,137,0,137, + 0,114,0,2,0,4,0,8,0,9,192,18,32,18,32,33, + 192,8,10,10,10,1,0,48,72,72,48,32,82,138,132,138, + 113,1,3,3,3,1,8,128,128,128,3,14,14,5,1,253, + 32,64,64,128,128,128,128,128,128,128,128,64,64,32,3,14, + 14,5,1,253,128,64,64,32,32,32,32,32,32,32,32,64, + 64,128,5,5,5,7,1,6,32,168,112,168,32,7,7,7, + 9,1,1,16,16,16,254,16,16,16,2,4,4,3,0,254, + 64,64,64,128,3,1,1,4,0,4,224,1,2,2,3,1, + 0,128,128,4,11,11,4,0,0,16,16,32,32,32,64,64, + 64,128,128,128,6,11,11,8,1,0,120,132,132,132,132,132, + 132,132,132,132,120,3,11,11,8,2,0,32,224,32,32,32, + 32,32,32,32,32,32,6,11,11,8,1,0,120,132,132,4, + 8,16,32,64,128,128,252,6,11,11,8,1,0,120,132,132, + 4,4,56,4,4,132,132,120,7,11,11,8,1,0,4,12, + 20,36,68,132,132,254,4,4,4,6,11,11,8,1,0,252, + 128,128,128,248,4,4,4,132,132,120,6,11,11,8,1,0, + 120,132,128,128,184,196,132,132,132,132,120,6,11,11,8,1, + 0,252,4,8,8,16,16,32,32,64,64,64,6,11,11,8, + 1,0,120,132,132,132,132,120,132,132,132,132,120,6,11,11, + 8,1,0,120,132,132,132,132,124,4,4,132,132,120,1,8, + 8,3,1,0,128,128,0,0,0,0,128,128,2,10,10,4, + 0,254,64,64,0,0,0,0,64,64,64,128,6,5,5,8, + 1,2,12,48,192,48,12,6,3,3,9,1,3,252,0,252, + 6,5,5,8,1,2,192,48,12,48,192,6,11,11,8,1, + 0,48,204,132,132,4,8,16,32,0,32,32,11,12,24,13, + 1,255,15,0,48,192,64,32,70,160,137,32,145,32,145,32, + 147,64,141,128,64,0,96,128,31,0,9,11,22,9,0,0, + 8,0,28,0,20,0,20,0,34,0,34,0,65,0,127,0, + 65,0,128,128,128,128,7,11,11,9,1,0,252,134,130,130, + 132,248,132,130,130,134,252,8,11,11,10,1,0,28,99,65, + 128,128,128,128,128,65,99,28,8,11,11,10,1,0,248,134, + 130,129,129,129,129,129,130,134,248,7,11,11,9,1,0,254, + 128,128,128,128,252,128,128,128,128,254,7,11,11,8,1,0, + 254,128,128,128,128,252,128,128,128,128,128,9,11,22,11,1, + 0,30,0,97,128,64,128,128,0,128,0,135,128,128,128,128, + 128,64,128,99,128,28,128,8,11,11,10,1,0,129,129,129, + 129,129,255,129,129,129,129,129,1,11,11,4,2,0,128,128, + 128,128,128,128,128,128,128,128,128,6,11,11,7,0,0,4, + 4,4,4,4,4,4,4,132,132,120,8,11,11,9,1,0, + 130,132,136,144,160,224,144,136,132,130,129,6,11,11,8,2, + 0,128,128,128,128,128,128,128,128,128,128,252,11,11,22,12, + 0,0,128,32,192,96,192,96,160,160,160,160,145,32,145,32, + 138,32,138,32,132,32,132,32,8,11,11,10,1,0,193,161, + 161,145,145,137,137,133,133,131,131,9,11,22,11,1,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,11,11,9,1,0,252,134,130,130,134, + 252,128,128,128,128,128,9,11,22,11,1,0,28,0,99,0, + 65,0,128,128,128,128,128,128,136,128,132,128,67,0,99,0, + 28,128,8,11,11,10,1,0,254,131,129,129,130,252,130,129, + 129,129,129,7,11,11,9,1,0,56,198,130,128,96,24,6, + 2,130,198,56,9,11,22,9,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,11,11,10,1,0,129,129,129,129,129,129,129,129,129,66, + 60,9,11,22,9,0,0,128,128,128,128,65,0,65,0,99, + 0,34,0,34,0,20,0,20,0,8,0,8,0,13,11,22, + 13,0,0,130,8,130,8,133,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,9,11,22,9,0,0,128, + 128,65,0,34,0,20,0,8,0,8,0,20,0,34,0,65, + 0,65,0,128,128,9,11,22,9,0,0,128,128,193,128,65, + 0,34,0,34,0,20,0,28,0,8,0,8,0,8,0,8, + 0,7,11,11,9,1,0,254,2,4,8,24,16,32,96,64, + 128,254,3,14,14,4,1,253,224,128,128,128,128,128,128,128, + 128,128,128,128,128,224,4,11,11,4,0,0,128,128,64,64, + 64,32,32,32,16,16,16,3,14,14,4,0,253,224,32,32, + 32,32,32,32,32,32,32,32,32,32,224,5,5,5,7,1, + 6,32,80,80,136,136,8,1,1,8,0,253,255,2,2,2, + 5,1,9,128,64,7,8,8,8,1,0,120,204,4,124,196, + 132,204,118,6,11,11,7,1,0,128,128,128,184,204,132,132, + 132,132,204,184,6,8,8,7,1,0,120,204,128,128,128,132, + 204,120,6,11,11,8,1,0,4,4,4,116,204,132,132,132, + 132,204,116,6,8,8,8,1,0,120,204,132,252,128,128,204, + 120,4,11,11,4,0,0,48,64,64,224,64,64,64,64,64, + 64,64,6,11,11,8,1,253,116,204,132,132,132,132,204,116, + 4,204,120,6,11,11,8,1,0,128,128,128,184,204,132,132, + 132,132,132,132,1,11,11,3,1,0,128,128,0,128,128,128, + 128,128,128,128,128,3,14,14,3,255,253,32,32,0,32,32, + 32,32,32,32,32,32,32,32,192,6,11,11,7,1,0,128, + 128,128,136,144,160,192,160,144,136,132,1,11,11,3,1,0, + 128,128,128,128,128,128,128,128,128,128,128,9,8,16,11,1, + 0,179,0,204,128,136,128,136,128,136,128,136,128,136,128,136, + 128,6,8,8,8,1,0,184,204,132,132,132,132,132,132,6, + 8,8,8,1,0,120,204,132,132,132,132,204,120,6,11,11, + 8,1,253,184,204,132,132,132,132,204,184,128,128,128,6,11, + 11,8,1,253,116,204,132,132,132,132,204,116,4,4,4,4, + 8,8,5,1,0,176,192,128,128,128,128,128,128,5,8,8, + 7,1,0,112,136,192,112,24,8,136,112,4,10,10,4,0, + 0,64,64,224,64,64,64,64,64,64,48,6,8,8,7,1, + 0,132,132,132,132,132,132,204,116,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,10,0,0,136,128,136, + 128,136,128,73,0,73,0,85,0,34,0,34,0,7,8,8, + 7,0,0,198,68,40,16,16,40,68,198,7,11,11,7,0, + 253,130,194,68,68,36,40,24,16,16,48,96,6,8,8,7, + 0,0,252,4,8,16,32,64,128,252,5,14,14,5,0,253, + 24,32,32,32,32,64,128,64,32,32,32,32,32,24,1,14, + 14,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,5,14,14,5,0,253,192,32,32,32,32,16,8,16, + 32,32,32,32,32,192,6,3,3,8,1,3,100,180,152,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,4,0,1,1,11,11,4,1,253,128,128,0,128, + 128,128,128,128,128,128,128,6,10,10,8,1,255,4,120,204, + 144,144,160,164,204,120,128,7,11,11,8,0,0,56,68,64, + 64,248,32,32,32,64,98,220,6,6,6,8,1,2,132,120, + 72,72,120,132,7,11,11,7,0,0,130,130,130,68,68,40, + 254,16,254,16,16,1,14,14,3,1,253,128,128,128,128,128, + 128,0,0,128,128,128,128,128,128,5,14,14,8,2,253,112, + 216,136,192,112,152,136,136,200,112,24,136,216,112,5,1,1, + 5,0,9,216,10,11,22,12,1,0,30,0,97,128,92,128, + 162,192,162,64,160,64,162,64,156,64,64,128,97,128,30,0, + 4,7,7,6,1,4,224,16,112,144,208,0,240,6,5,5, + 8,1,2,36,72,144,72,36,7,4,4,9,1,2,254,2, + 2,2,3,1,1,4,0,4,224,10,11,22,12,1,0,30, + 0,97,128,92,128,146,64,146,64,156,64,146,64,146,64,64, + 128,97,128,30,0,4,1,1,4,0,9,240,4,4,4,6, + 1,7,96,144,144,96,7,9,9,9,1,0,16,16,16,254, + 16,16,16,0,254,4,6,6,5,0,5,96,144,16,32,64, + 240,4,6,6,5,0,5,96,144,32,16,144,96,2,2,2, + 5,2,9,64,128,6,11,11,8,1,253,132,132,132,132,132, + 132,204,180,128,128,128,7,14,14,8,0,253,62,116,244,244, + 244,116,52,20,20,20,20,20,20,20,2,1,1,4,1,4, + 192,4,3,3,5,0,253,32,144,96,2,6,6,5,1,5, + 64,192,64,64,64,64,4,7,7,6,1,4,96,144,144,144, + 96,0,240,6,5,5,8,1,2,144,72,36,72,144,10,11, + 22,12,1,0,66,0,194,0,68,0,68,0,72,0,72,128, + 9,128,18,128,20,128,39,192,32,128,9,11,22,12,1,0, + 66,0,194,0,68,0,68,0,72,0,75,0,20,128,16,128, + 17,0,34,0,39,128,11,11,22,12,0,0,97,0,145,0, + 34,0,18,0,148,0,100,64,4,192,9,64,10,64,19,224, + 16,64,6,11,11,8,1,253,16,16,0,16,32,64,128,132, + 132,204,48,9,14,28,9,0,0,16,0,8,0,0,0,8, + 0,28,0,20,0,20,0,34,0,34,0,65,0,127,0,65, + 0,128,128,128,128,9,14,28,9,0,0,4,0,8,0,0, + 0,8,0,28,0,20,0,20,0,34,0,34,0,65,0,127, + 0,65,0,128,128,128,128,9,14,28,9,0,0,12,0,18, + 0,0,0,8,0,28,0,20,0,20,0,34,0,34,0,65, + 0,127,0,65,0,128,128,128,128,9,14,28,9,0,0,26, + 0,44,0,0,0,8,0,28,0,20,0,20,0,34,0,34, + 0,65,0,127,0,65,0,128,128,128,128,9,13,26,9,0, + 0,54,0,0,0,8,0,28,0,20,0,20,0,34,0,34, + 0,65,0,127,0,65,0,128,128,128,128,9,14,28,9,0, + 0,12,0,18,0,18,0,12,0,12,0,20,0,20,0,34, + 0,34,0,65,0,127,0,65,0,128,128,128,128,12,11,22, + 14,1,0,31,240,18,0,18,0,34,0,34,0,35,240,126, + 0,66,0,66,0,130,0,131,240,8,14,14,10,1,253,28, + 99,65,128,128,128,128,128,65,99,28,8,36,24,7,14,14, + 9,1,0,32,16,0,254,128,128,128,128,252,128,128,128,128, + 254,7,14,14,9,1,0,8,16,0,254,128,128,128,128,252, + 128,128,128,128,254,7,14,14,9,1,0,24,36,0,254,128, + 128,128,128,252,128,128,128,128,254,7,13,13,9,1,0,108, + 0,254,128,128,128,128,252,128,128,128,128,254,2,14,14,4, + 1,0,128,64,0,64,64,64,64,64,64,64,64,64,64,64, + 2,14,14,4,2,0,64,128,0,128,128,128,128,128,128,128, + 128,128,128,128,4,14,14,4,1,0,96,144,0,64,64,64, + 64,64,64,64,64,64,64,64,5,13,13,4,0,0,216,0, + 32,32,32,32,32,32,32,32,32,32,32,9,11,22,10,0, + 0,124,0,67,0,65,0,64,128,64,128,240,128,64,128,64, + 128,65,0,67,0,124,0,8,14,14,10,1,0,26,44,0, + 193,161,161,145,145,137,137,133,133,131,131,9,14,28,11,1, + 0,16,0,8,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,14,28, + 11,1,0,4,0,8,0,0,0,28,0,99,0,65,0,128, + 128,128,128,128,128,128,128,128,128,65,0,99,0,28,0,9, + 14,28,11,1,0,12,0,18,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,14,28,11,1,0,26,0,44,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,9,13,26,11,1,0,51,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,7,7,7,9,1,1,130,68,40,16,40,68,130, + 11,11,22,11,0,0,14,32,49,192,32,128,65,64,66,64, + 68,64,72,64,80,64,32,128,113,128,142,0,8,14,14,10, + 1,0,16,8,0,129,129,129,129,129,129,129,129,129,66,60, + 8,14,14,10,1,0,4,8,0,129,129,129,129,129,129,129, + 129,129,66,60,8,14,14,10,1,0,24,36,0,129,129,129, + 129,129,129,129,129,129,66,60,8,13,13,10,1,0,102,0, + 129,129,129,129,129,129,129,129,129,66,60,9,14,28,9,0, + 0,4,0,8,0,0,0,128,128,193,128,65,0,34,0,34, + 0,20,0,28,0,8,0,8,0,8,0,8,0,7,11,11, + 9,1,0,128,128,252,134,130,130,134,252,128,128,128,5,11, + 11,7,1,0,112,136,136,136,176,144,136,136,136,136,176,7, + 11,11,8,1,0,32,16,0,120,204,4,124,196,132,204,118, + 7,11,11,8,1,0,16,32,0,120,204,4,124,196,132,204, + 118,7,11,11,8,1,0,48,72,0,120,204,4,124,196,132, + 204,118,7,11,11,8,1,0,52,88,0,120,204,4,124,196, + 132,204,118,7,11,11,8,1,0,72,72,0,120,204,4,124, + 196,132,204,118,7,12,12,8,1,0,48,72,48,0,120,204, + 4,124,196,132,204,118,11,8,16,13,1,0,123,192,198,96, + 4,32,127,224,196,0,132,0,206,96,123,192,6,11,11,8, + 1,253,120,204,128,128,128,132,204,120,16,72,48,6,11,11, + 8,1,0,32,16,0,120,204,132,252,128,128,204,120,6,11, + 11,8,1,0,16,32,0,120,204,132,252,128,128,204,120,6, + 11,11,8,1,0,48,72,0,120,204,132,252,128,128,204,120, + 6,11,11,8,1,0,72,72,0,120,204,132,252,128,128,204, + 120,2,11,11,3,1,0,128,64,0,128,128,128,128,128,128, + 128,128,2,11,11,3,1,0,64,128,0,128,128,128,128,128, + 128,128,128,4,11,11,3,0,0,96,144,0,64,64,64,64, + 64,64,64,64,3,11,11,3,0,0,160,160,0,64,64,64, + 64,64,64,64,64,6,11,11,8,1,0,216,112,144,120,204, + 132,132,132,132,204,120,6,11,11,8,1,0,104,176,0,184, + 204,132,132,132,132,132,132,6,11,11,8,1,0,32,16,0, + 120,204,132,132,132,132,204,120,6,11,11,8,1,0,16,32, + 0,120,204,132,132,132,132,204,120,6,11,11,8,1,0,48, + 72,0,120,204,132,132,132,132,204,120,6,11,11,8,1,0, + 104,176,0,120,204,132,132,132,132,204,120,6,11,11,8,1, + 0,72,72,0,120,204,132,132,132,132,204,120,7,7,7,9, + 1,1,16,16,0,254,0,16,16,8,8,8,8,0,0,61, + 98,70,74,82,98,70,188,6,11,11,8,1,0,32,16,0, + 132,132,132,132,132,132,204,116,6,11,11,8,1,0,16,32, + 0,132,132,132,132,132,132,204,116,6,11,11,8,1,0,48, + 72,0,132,132,132,132,132,132,204,116,6,11,11,8,1,0, + 72,72,0,132,132,132,132,132,132,204,116,7,14,14,7,0, + 253,8,16,0,130,194,68,68,36,40,24,16,16,48,96,6, + 14,14,8,1,253,128,128,128,184,204,132,132,132,132,204,184, + 128,128,128,7,14,14,7,0,253,36,36,0,130,194,68,68, + 36,40,24,16,16,48,96}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=13 h=14 x= 2 y= 9 dx=13 dy= 0 ascent=12 len=24 + Font Bounding box w=17 h=22 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR10r[1648] U8G_SECTION(".progmem.u8g_font_helvR10r") = { + 0,17,22,254,251,11,2,10,4,133,32,127,253,12,253,11, + 253,0,0,0,4,0,1,1,11,11,4,2,0,128,128,128, + 128,128,128,128,128,0,128,128,3,3,3,5,1,8,160,160, + 160,7,10,10,8,0,0,20,20,20,126,40,40,252,80,80, + 80,7,14,14,8,0,254,16,124,146,146,144,80,56,20,18, + 146,146,124,16,16,11,11,22,12,0,0,112,128,137,0,137, + 0,114,0,2,0,4,0,8,0,9,192,18,32,18,32,33, + 192,8,10,10,10,1,0,48,72,72,48,32,82,138,132,138, + 113,1,3,3,3,1,8,128,128,128,3,14,14,5,1,253, + 32,64,64,128,128,128,128,128,128,128,128,64,64,32,3,14, + 14,5,1,253,128,64,64,32,32,32,32,32,32,32,32,64, + 64,128,5,5,5,7,1,6,32,168,112,168,32,7,7,7, + 9,1,1,16,16,16,254,16,16,16,2,4,4,3,0,254, + 64,64,64,128,3,1,1,4,0,4,224,1,2,2,3,1, + 0,128,128,4,11,11,4,0,0,16,16,32,32,32,64,64, + 64,128,128,128,6,11,11,8,1,0,120,132,132,132,132,132, + 132,132,132,132,120,3,11,11,8,2,0,32,224,32,32,32, + 32,32,32,32,32,32,6,11,11,8,1,0,120,132,132,4, + 8,16,32,64,128,128,252,6,11,11,8,1,0,120,132,132, + 4,4,56,4,4,132,132,120,7,11,11,8,1,0,4,12, + 20,36,68,132,132,254,4,4,4,6,11,11,8,1,0,252, + 128,128,128,248,4,4,4,132,132,120,6,11,11,8,1,0, + 120,132,128,128,184,196,132,132,132,132,120,6,11,11,8,1, + 0,252,4,8,8,16,16,32,32,64,64,64,6,11,11,8, + 1,0,120,132,132,132,132,120,132,132,132,132,120,6,11,11, + 8,1,0,120,132,132,132,132,124,4,4,132,132,120,1,8, + 8,3,1,0,128,128,0,0,0,0,128,128,2,10,10,4, + 0,254,64,64,0,0,0,0,64,64,64,128,6,5,5,8, + 1,2,12,48,192,48,12,6,3,3,9,1,3,252,0,252, + 6,5,5,8,1,2,192,48,12,48,192,6,11,11,8,1, + 0,48,204,132,132,4,8,16,32,0,32,32,11,12,24,13, + 1,255,15,0,48,192,64,32,70,160,137,32,145,32,145,32, + 147,64,141,128,64,0,96,128,31,0,9,11,22,9,0,0, + 8,0,28,0,20,0,20,0,34,0,34,0,65,0,127,0, + 65,0,128,128,128,128,7,11,11,9,1,0,252,134,130,130, + 132,248,132,130,130,134,252,8,11,11,10,1,0,28,99,65, + 128,128,128,128,128,65,99,28,8,11,11,10,1,0,248,134, + 130,129,129,129,129,129,130,134,248,7,11,11,9,1,0,254, + 128,128,128,128,252,128,128,128,128,254,7,11,11,8,1,0, + 254,128,128,128,128,252,128,128,128,128,128,9,11,22,11,1, + 0,30,0,97,128,64,128,128,0,128,0,135,128,128,128,128, + 128,64,128,99,128,28,128,8,11,11,10,1,0,129,129,129, + 129,129,255,129,129,129,129,129,1,11,11,4,2,0,128,128, + 128,128,128,128,128,128,128,128,128,6,11,11,7,0,0,4, + 4,4,4,4,4,4,4,132,132,120,8,11,11,9,1,0, + 130,132,136,144,160,224,144,136,132,130,129,6,11,11,8,2, + 0,128,128,128,128,128,128,128,128,128,128,252,11,11,22,12, + 0,0,128,32,192,96,192,96,160,160,160,160,145,32,145,32, + 138,32,138,32,132,32,132,32,8,11,11,10,1,0,193,161, + 161,145,145,137,137,133,133,131,131,9,11,22,11,1,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,11,11,9,1,0,252,134,130,130,134, + 252,128,128,128,128,128,9,11,22,11,1,0,28,0,99,0, + 65,0,128,128,128,128,128,128,136,128,132,128,67,0,99,0, + 28,128,8,11,11,10,1,0,254,131,129,129,130,252,130,129, + 129,129,129,7,11,11,9,1,0,56,198,130,128,96,24,6, + 2,130,198,56,9,11,22,9,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,11,11,10,1,0,129,129,129,129,129,129,129,129,129,66, + 60,9,11,22,9,0,0,128,128,128,128,65,0,65,0,99, + 0,34,0,34,0,20,0,20,0,8,0,8,0,13,11,22, + 13,0,0,130,8,130,8,133,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,9,11,22,9,0,0,128, + 128,65,0,34,0,20,0,8,0,8,0,20,0,34,0,65, + 0,65,0,128,128,9,11,22,9,0,0,128,128,193,128,65, + 0,34,0,34,0,20,0,28,0,8,0,8,0,8,0,8, + 0,7,11,11,9,1,0,254,2,4,8,24,16,32,96,64, + 128,254,3,14,14,4,1,253,224,128,128,128,128,128,128,128, + 128,128,128,128,128,224,4,11,11,4,0,0,128,128,64,64, + 64,32,32,32,16,16,16,3,14,14,4,0,253,224,32,32, + 32,32,32,32,32,32,32,32,32,32,224,5,5,5,7,1, + 6,32,80,80,136,136,8,1,1,8,0,253,255,2,2,2, + 5,1,9,128,64,7,8,8,8,1,0,120,204,4,124,196, + 132,204,118,6,11,11,7,1,0,128,128,128,184,204,132,132, + 132,132,204,184,6,8,8,7,1,0,120,204,128,128,128,132, + 204,120,6,11,11,8,1,0,4,4,4,116,204,132,132,132, + 132,204,116,6,8,8,8,1,0,120,204,132,252,128,128,204, + 120,4,11,11,4,0,0,48,64,64,224,64,64,64,64,64, + 64,64,6,11,11,8,1,253,116,204,132,132,132,132,204,116, + 4,204,120,6,11,11,8,1,0,128,128,128,184,204,132,132, + 132,132,132,132,1,11,11,3,1,0,128,128,0,128,128,128, + 128,128,128,128,128,3,14,14,3,255,253,32,32,0,32,32, + 32,32,32,32,32,32,32,32,192,6,11,11,7,1,0,128, + 128,128,136,144,160,192,160,144,136,132,1,11,11,3,1,0, + 128,128,128,128,128,128,128,128,128,128,128,9,8,16,11,1, + 0,179,0,204,128,136,128,136,128,136,128,136,128,136,128,136, + 128,6,8,8,8,1,0,184,204,132,132,132,132,132,132,6, + 8,8,8,1,0,120,204,132,132,132,132,204,120,6,11,11, + 8,1,253,184,204,132,132,132,132,204,184,128,128,128,6,11, + 11,8,1,253,116,204,132,132,132,132,204,116,4,4,4,4, + 8,8,5,1,0,176,192,128,128,128,128,128,128,5,8,8, + 7,1,0,112,136,192,112,24,8,136,112,4,10,10,4,0, + 0,64,64,224,64,64,64,64,64,64,48,6,8,8,7,1, + 0,132,132,132,132,132,132,204,116,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,10,0,0,136,128,136, + 128,136,128,73,0,73,0,85,0,34,0,34,0,7,8,8, + 7,0,0,198,68,40,16,16,40,68,198,7,11,11,7,0, + 253,130,194,68,68,36,40,24,16,16,48,96,6,8,8,7, + 0,0,252,4,8,16,32,64,128,252,5,14,14,5,0,253, + 24,32,32,32,32,64,128,64,32,32,32,32,32,24,1,14, + 14,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,5,14,14,5,0,253,192,32,32,32,32,16,8,16, + 32,32,32,32,32,192,6,3,3,8,1,3,100,180,152,255 + }; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=16 x= 3 y=10 dx=17 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=26 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR12[4077] U8G_SECTION(".progmem.u8g_font_helvR12") = { + 0,20,26,254,250,12,2,91,5,99,32,255,252,16,252,12, + 252,0,0,0,5,0,1,1,12,12,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,128,4,4,4,6,1,8,144, + 144,144,144,8,11,11,9,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,15,15,9,1,254,16,124,146,146,144,80, + 48,24,20,18,146,146,124,16,16,12,12,24,14,0,0,112, + 64,136,128,136,128,137,0,114,0,2,0,4,0,4,224,9, + 16,17,16,17,16,32,224,10,12,24,11,0,0,24,0,36, + 0,66,0,66,0,36,0,24,0,41,0,69,0,130,0,131, + 0,68,128,56,64,2,4,4,3,0,8,192,192,64,64,3, + 16,16,6,1,252,32,64,64,64,128,128,128,128,128,128,128, + 128,64,64,64,32,3,16,16,6,1,252,128,64,64,64,32, + 32,32,32,32,32,32,32,64,64,64,128,5,5,5,6,0, + 7,32,168,112,80,136,9,9,18,10,0,0,8,0,8,0, + 8,0,8,0,255,128,8,0,8,0,8,0,8,0,2,4, + 4,4,1,254,64,64,64,128,4,1,1,5,0,4,240,1, + 2,2,4,2,0,128,128,4,12,12,5,0,0,16,16,32, + 32,32,32,64,64,64,128,128,128,7,12,12,9,1,0,56, + 68,68,130,130,130,130,130,130,68,68,56,3,12,12,9,3, + 0,32,32,96,160,32,32,32,32,32,32,32,32,7,12,12, + 9,1,0,56,68,130,130,2,4,8,48,64,128,128,254,7, + 12,12,9,1,0,56,68,130,130,4,56,4,2,130,130,68, + 56,8,12,12,9,0,0,12,20,20,36,36,68,68,132,255, + 4,4,4,7,12,12,9,1,0,62,32,32,64,120,68,2, + 2,2,130,68,56,7,12,12,9,1,0,60,66,130,128,184, + 196,130,130,130,130,68,56,8,12,12,9,0,0,255,1,2, + 4,4,8,8,16,16,16,32,32,7,12,12,9,1,0,56, + 68,130,130,68,56,68,130,130,130,68,56,7,12,12,9,1, + 0,56,68,130,130,130,130,70,58,2,130,132,120,1,9,9, + 4,2,0,128,128,0,0,0,0,0,128,128,2,11,11,4, + 1,254,64,64,0,0,0,0,0,64,64,64,128,9,9,18, + 10,0,0,1,128,6,0,24,0,96,0,128,0,96,0,24, + 0,6,0,1,128,8,4,4,10,0,2,255,0,0,255,9, + 9,18,10,1,0,192,0,48,0,12,0,3,0,0,128,3, + 0,12,0,48,0,192,0,7,12,12,9,1,0,56,68,130, + 130,2,4,8,16,16,0,16,16,13,14,28,17,1,254,7, + 128,24,96,32,16,67,208,76,72,136,72,144,136,144,136,144, + 144,153,144,78,96,64,0,48,96,15,128,10,12,24,11,0, + 0,12,0,12,0,18,0,18,0,18,0,33,0,33,0,127, + 128,64,128,64,128,128,64,128,64,9,12,24,11,1,0,252, + 0,130,0,129,0,129,0,130,0,254,0,129,0,128,128,128, + 128,128,128,129,0,254,0,10,12,24,12,1,0,15,0,48, + 128,64,64,64,0,128,0,128,0,128,0,128,0,64,0,64, + 64,48,128,15,0,10,12,24,12,1,0,252,0,131,0,128, + 128,128,128,128,64,128,64,128,64,128,64,128,128,128,128,131, + 0,252,0,8,12,12,11,1,0,255,128,128,128,128,255,128, + 128,128,128,128,255,7,12,12,10,1,0,254,128,128,128,128, + 254,128,128,128,128,128,128,10,12,24,13,1,0,14,0,49, + 128,64,64,64,0,128,0,128,0,135,192,128,64,64,64,64, + 192,49,64,14,64,9,12,24,12,1,0,128,128,128,128,128, + 128,128,128,128,128,255,128,128,128,128,128,128,128,128,128,128, + 128,128,128,1,12,12,4,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,6,12,12,8,0,0,4,4,4,4,4, + 4,4,4,132,132,132,120,8,12,12,11,1,0,129,130,132, + 136,144,176,200,136,132,130,130,129,7,12,12,9,1,0,128, + 128,128,128,128,128,128,128,128,128,128,254,11,12,24,13,1, + 0,128,32,192,96,192,96,160,160,160,160,160,160,145,32,145, + 32,145,32,138,32,138,32,132,32,9,12,24,12,1,0,128, + 128,192,128,160,128,160,128,144,128,136,128,136,128,132,128,130, + 128,130,128,129,128,128,128,11,12,24,13,1,0,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,8,12,12,11,2,0,252,130,129,129,130, + 252,128,128,128,128,128,128,11,13,26,13,1,255,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,66, + 64,49,128,14,128,0,64,9,12,24,12,2,0,252,0,130, + 0,129,0,129,0,130,0,252,0,130,0,129,0,129,0,129, + 0,129,0,128,128,9,12,24,11,1,0,62,0,65,0,128, + 128,128,128,64,0,48,0,14,0,1,0,128,128,128,128,65, + 0,62,0,9,12,24,10,0,0,255,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,9,12,24,12,1,0,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,62,0,10, + 12,24,11,0,0,128,64,128,64,64,128,64,128,64,128,33, + 0,33,0,18,0,18,0,18,0,12,0,12,0,13,12,24, + 15,1,0,130,8,130,8,130,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,16,64,8,12,12,11,1, + 0,129,66,66,36,36,24,24,36,36,66,66,129,9,12,24, + 11,1,0,128,128,65,0,65,0,34,0,34,0,20,0,28, + 0,8,0,8,0,8,0,8,0,8,0,9,12,24,10,0, + 0,127,128,1,0,3,0,2,0,4,0,12,0,8,0,16, + 0,48,0,32,0,64,0,255,128,3,15,15,5,1,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,224,4,12, + 12,5,0,0,128,128,64,64,64,64,32,32,32,16,16,16, + 3,15,15,5,0,253,224,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,7,7,7,8,0,5,16,40,40,68,68, + 130,130,9,1,2,9,0,253,255,128,3,3,3,6,0,10, + 128,192,32,8,9,9,9,1,0,124,130,2,6,122,130,130, + 134,123,7,12,12,9,1,0,128,128,128,184,196,130,130,130, + 130,130,196,184,7,9,9,8,1,0,56,68,130,128,128,128, + 130,68,56,7,12,12,9,1,0,2,2,2,58,70,130,130, + 130,130,130,70,58,7,9,9,9,1,0,56,68,130,130,254, + 128,130,68,56,4,12,12,5,1,0,48,64,64,240,64,64, + 64,64,64,64,64,64,7,13,13,9,1,252,58,70,130,130, + 130,130,130,70,58,2,130,132,120,7,12,12,9,1,0,128, + 128,128,188,194,130,130,130,130,130,130,130,1,12,12,3,1, + 0,128,128,0,128,128,128,128,128,128,128,128,128,3,16,16, + 4,255,252,32,32,0,32,32,32,32,32,32,32,32,32,32, + 32,32,192,7,12,12,8,0,0,128,128,128,132,136,144,160, + 224,144,136,132,130,1,12,12,3,1,0,128,128,128,128,128, + 128,128,128,128,128,128,128,11,9,18,14,2,0,185,192,198, + 32,132,32,132,32,132,32,132,32,132,32,132,32,132,32,7, + 9,9,9,1,0,188,194,130,130,130,130,130,130,130,7,9, + 9,9,1,0,56,68,130,130,130,130,130,68,56,7,13,13, + 9,1,252,184,196,130,130,130,130,130,196,184,128,128,128,128, + 7,13,13,9,1,252,58,70,130,130,130,130,130,70,58,2, + 2,2,2,4,9,9,5,1,0,176,192,128,128,128,128,128, + 128,128,6,9,9,8,1,0,120,132,132,192,48,12,132,132, + 120,4,11,11,5,1,0,64,64,240,64,64,64,64,64,64, + 64,48,7,9,9,9,1,0,130,130,130,130,130,130,130,134, + 122,7,9,9,8,0,0,130,130,68,68,68,40,40,56,16, + 11,9,18,12,0,0,132,32,132,32,68,64,78,64,74,64, + 42,128,42,128,17,0,17,0,7,9,9,8,0,0,130,68, + 68,40,16,40,68,68,130,7,12,12,8,0,253,130,130,68, + 68,40,40,56,16,16,32,32,192,6,9,9,8,1,0,252, + 4,8,16,32,32,64,128,252,3,16,16,6,1,252,32,64, + 64,64,64,64,64,128,64,64,64,64,64,64,64,32,1,16, + 16,4,1,252,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,16,16,6,1,252,128,64,64,64,64,64, + 64,32,64,64,64,64,64,64,64,128,8,2,2,10,1,4, + 113,142,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,5,0,1,1,12,12,6,2,253,128, + 128,0,128,128,128,128,128,128,128,128,128,7,13,13,9,1, + 254,4,4,56,76,138,144,144,144,162,100,56,64,64,8,12, + 12,9,0,0,14,17,33,32,32,16,126,8,16,32,121,134, + 8,7,7,9,0,3,189,102,66,66,66,102,189,9,12,24, + 9,0,0,128,128,65,0,65,0,34,0,34,0,20,0,127, + 0,8,0,127,0,8,0,8,0,8,0,1,16,16,4,1, + 252,128,128,128,128,128,128,0,0,0,0,128,128,128,128,128, + 128,7,15,15,9,1,253,56,68,70,96,152,140,134,194,98, + 50,28,4,196,68,56,3,2,2,5,1,10,160,160,12,12, + 24,12,0,0,15,0,48,192,71,32,72,160,144,16,144,16, + 144,16,144,16,72,160,71,32,48,192,15,0,5,7,7,6, + 1,5,96,144,112,144,120,0,248,6,6,6,9,1,2,36, + 72,144,144,72,36,8,5,5,10,0,1,255,1,1,1,1, + 4,1,1,5,0,4,240,12,12,24,12,0,0,15,0,48, + 192,64,32,79,32,136,144,136,144,143,16,138,16,73,32,72, + 160,48,192,15,0,5,1,1,6,0,10,248,5,5,5,7, + 1,7,112,136,136,136,112,9,11,22,10,0,0,8,0,8, + 0,8,0,8,0,255,128,8,0,8,0,8,0,8,0,0, + 0,255,128,5,7,7,6,0,5,112,136,136,16,96,128,248, + 5,7,7,6,0,5,112,136,8,48,8,136,112,3,3,3, + 6,1,10,32,96,128,7,13,13,9,1,252,130,130,130,130, + 130,130,130,134,250,128,128,128,128,7,15,15,9,1,253,62, + 116,244,244,244,244,116,52,20,20,20,20,20,20,20,1,2, + 2,5,2,4,128,128,4,4,4,6,0,252,32,32,144,96, + 3,7,7,6,0,5,32,224,32,32,32,32,32,4,7,7, + 6,1,5,96,144,144,144,96,0,240,6,6,6,9,1,2, + 144,72,36,36,72,144,12,12,24,14,0,0,32,64,224,128, + 32,128,33,0,34,0,34,32,36,96,4,160,9,32,17,240, + 16,32,32,32,12,13,26,14,0,0,0,64,32,128,224,128, + 33,0,34,0,34,0,36,224,37,16,9,16,8,32,16,192, + 33,0,33,240,13,12,24,14,0,0,112,64,136,64,8,128, + 48,128,9,0,137,16,114,48,2,80,4,144,4,248,8,16, + 8,16,7,12,12,10,1,253,16,16,0,16,16,32,64,128, + 130,130,68,56,10,16,32,11,0,0,16,0,24,0,4,0, + 0,0,12,0,12,0,18,0,18,0,18,0,33,0,33,0, + 127,128,64,128,64,128,128,64,128,64,10,16,32,11,0,0, + 2,0,6,0,8,0,0,0,12,0,12,0,18,0,18,0, + 18,0,33,0,33,0,127,128,64,128,64,128,128,64,128,64, + 10,16,32,11,0,0,4,0,14,0,17,0,0,0,12,0, + 12,0,18,0,18,0,18,0,33,0,33,0,127,128,64,128, + 64,128,128,64,128,64,10,15,30,11,0,0,26,0,44,0, + 0,0,12,0,12,0,18,0,18,0,18,0,33,0,33,0, + 127,128,64,128,64,128,128,64,128,64,10,15,30,11,0,0, + 18,0,18,0,0,0,12,0,12,0,18,0,18,0,18,0, + 33,0,33,0,127,128,64,128,64,128,128,64,128,64,10,15, + 30,11,0,0,12,0,18,0,18,0,12,0,12,0,18,0, + 18,0,18,0,33,0,33,0,127,128,64,128,64,128,128,64, + 128,64,14,12,24,16,0,0,7,252,9,0,9,0,17,0, + 17,0,33,252,33,0,127,0,65,0,65,0,129,0,129,252, + 10,16,32,12,1,252,15,0,48,128,64,64,64,0,128,0, + 128,0,128,0,128,0,64,0,64,64,48,128,15,0,4,0, + 4,0,18,0,12,0,8,16,16,11,1,0,32,48,8,0, + 255,128,128,128,128,255,128,128,128,128,128,255,8,16,16,11, + 1,0,4,12,16,0,255,128,128,128,128,255,128,128,128,128, + 128,255,8,16,16,11,1,0,16,56,68,0,255,128,128,128, + 128,255,128,128,128,128,128,255,8,15,15,11,1,0,36,36, + 0,255,128,128,128,128,255,128,128,128,128,128,255,3,16,16, + 4,0,0,128,192,32,0,64,64,64,64,64,64,64,64,64, + 64,64,64,3,16,16,4,0,0,32,96,128,0,64,64,64, + 64,64,64,64,64,64,64,64,64,5,16,16,4,255,0,32, + 112,136,0,32,32,32,32,32,32,32,32,32,32,32,32,3, + 15,15,4,0,0,160,160,0,64,64,64,64,64,64,64,64, + 64,64,64,64,12,12,24,12,0,0,63,0,32,192,32,32, + 32,32,32,16,248,16,32,16,32,16,32,32,32,32,32,192, + 63,0,9,15,30,12,1,0,26,0,44,0,0,0,128,128, + 192,128,160,128,160,128,144,128,136,128,136,128,132,128,130,128, + 130,128,129,128,128,128,11,16,32,13,1,0,8,0,12,0, + 2,0,0,0,14,0,49,128,64,64,64,64,128,32,128,32, + 128,32,128,32,64,64,64,64,49,128,14,0,11,16,32,13, + 1,0,1,0,3,0,4,0,0,0,14,0,49,128,64,64, + 64,64,128,32,128,32,128,32,128,32,64,64,64,64,49,128, + 14,0,11,16,32,13,1,0,4,0,14,0,17,0,0,0, + 14,0,49,128,64,64,64,64,128,32,128,32,128,32,128,32, + 64,64,64,64,49,128,14,0,11,15,30,13,1,0,13,0, + 22,0,0,0,14,0,49,128,64,64,64,64,128,32,128,32, + 128,32,128,32,64,64,64,64,49,128,14,0,11,15,30,13, + 1,0,17,0,17,0,0,0,14,0,49,128,64,64,64,64, + 128,32,128,32,128,32,128,32,64,64,64,64,49,128,14,0, + 8,8,8,10,1,0,129,66,36,24,24,36,66,129,11,14, + 28,13,1,255,0,64,14,128,49,128,65,64,66,64,130,32, + 132,32,132,32,136,32,72,64,80,64,49,128,46,0,64,0, + 9,16,32,12,1,0,32,0,48,0,8,0,0,0,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,9,16,32,12,1,0,2,0,6,0, + 8,0,0,0,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,65,0,62,0,9,16,32,12, + 1,0,8,0,28,0,34,0,0,0,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 62,0,9,15,30,12,1,0,34,0,34,0,0,0,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,9,16,32,11,1,0,2,0,6,0, + 8,0,0,0,128,128,65,0,65,0,34,0,34,0,20,0, + 28,0,8,0,8,0,8,0,8,0,8,0,8,12,12,11, + 2,0,128,128,252,130,129,129,130,252,128,128,128,128,7,12, + 12,10,2,0,120,132,130,130,132,188,134,130,130,130,132,184, + 8,13,13,9,1,0,32,48,8,0,124,130,2,6,122,130, + 130,134,123,8,13,13,9,1,0,4,12,16,0,124,130,2, + 6,122,130,130,134,123,8,13,13,9,1,0,16,56,68,0, + 124,130,2,6,122,130,130,134,123,8,12,12,9,1,0,52, + 88,0,124,130,2,6,122,130,130,134,123,8,12,12,9,1, + 0,40,40,0,124,130,2,6,122,130,130,134,123,8,13,13, + 9,1,0,16,40,16,0,124,130,2,6,122,130,130,134,123, + 13,9,18,15,1,0,124,224,131,16,2,8,6,8,123,248, + 130,0,130,8,135,16,120,224,7,13,13,8,1,252,56,68, + 130,128,128,128,130,68,56,16,16,72,48,7,13,13,9,1, + 0,64,96,16,0,56,68,130,130,254,128,130,68,56,7,13, + 13,9,1,0,8,24,32,0,56,68,130,130,254,128,130,68, + 56,7,13,13,9,1,0,16,56,68,0,56,68,130,130,254, + 128,130,68,56,7,12,12,9,1,0,40,40,0,56,68,130, + 130,254,128,130,68,56,3,13,13,4,1,0,128,192,32,0, + 64,64,64,64,64,64,64,64,64,3,13,13,4,1,0,32, + 96,128,0,64,64,64,64,64,64,64,64,64,5,13,13,4, + 0,0,32,112,136,0,32,32,32,32,32,32,32,32,32,3, + 12,12,4,1,0,160,160,0,64,64,64,64,64,64,64,64, + 64,7,12,12,9,1,0,72,48,88,60,68,130,130,130,130, + 130,68,56,7,12,12,9,1,0,52,88,0,188,194,130,130, + 130,130,130,130,130,7,13,13,9,1,0,32,48,8,0,56, + 68,130,130,130,130,130,68,56,7,13,13,9,1,0,8,24, + 32,0,56,68,130,130,130,130,130,68,56,7,13,13,9,1, + 0,16,56,68,0,56,68,130,130,130,130,130,68,56,7,12, + 12,9,1,0,52,88,0,56,68,130,130,130,130,130,68,56, + 7,12,12,9,1,0,40,40,0,56,68,130,130,130,130,130, + 68,56,7,9,9,10,1,0,16,16,0,0,254,0,0,16, + 16,7,10,10,10,1,0,2,60,68,138,146,146,162,162,68, + 184,7,13,13,9,1,0,32,48,8,0,130,130,130,130,130, + 130,130,134,122,7,13,13,9,1,0,4,12,16,0,130,130, + 130,130,130,130,130,134,122,7,13,13,9,1,0,16,56,68, + 0,130,130,130,130,130,130,130,134,122,7,12,12,9,1,0, + 40,40,0,130,130,130,130,130,130,130,134,122,7,16,16,8, + 0,253,8,24,32,0,130,130,68,68,40,40,56,16,16,32, + 32,192,7,16,16,9,1,252,128,128,128,184,196,130,130,130, + 130,130,196,184,128,128,128,128,7,15,15,8,0,253,40,40, + 0,130,130,68,68,40,40,56,16,16,32,32,192}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=13 h=16 x= 3 y=10 dx=17 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=26 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR12r[1907] U8G_SECTION(".progmem.u8g_font_helvR12r") = { + 0,20,26,254,250,12,2,91,5,99,32,127,252,13,252,12, + 252,0,0,0,5,0,1,1,12,12,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,128,4,4,4,6,1,8,144, + 144,144,144,8,11,11,9,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,15,15,9,1,254,16,124,146,146,144,80, + 48,24,20,18,146,146,124,16,16,12,12,24,14,0,0,112, + 64,136,128,136,128,137,0,114,0,2,0,4,0,4,224,9, + 16,17,16,17,16,32,224,10,12,24,11,0,0,24,0,36, + 0,66,0,66,0,36,0,24,0,41,0,69,0,130,0,131, + 0,68,128,56,64,2,4,4,3,0,8,192,192,64,64,3, + 16,16,6,1,252,32,64,64,64,128,128,128,128,128,128,128, + 128,64,64,64,32,3,16,16,6,1,252,128,64,64,64,32, + 32,32,32,32,32,32,32,64,64,64,128,5,5,5,6,0, + 7,32,168,112,80,136,9,9,18,10,0,0,8,0,8,0, + 8,0,8,0,255,128,8,0,8,0,8,0,8,0,2,4, + 4,4,1,254,64,64,64,128,4,1,1,5,0,4,240,1, + 2,2,4,2,0,128,128,4,12,12,5,0,0,16,16,32, + 32,32,32,64,64,64,128,128,128,7,12,12,9,1,0,56, + 68,68,130,130,130,130,130,130,68,68,56,3,12,12,9,3, + 0,32,32,96,160,32,32,32,32,32,32,32,32,7,12,12, + 9,1,0,56,68,130,130,2,4,8,48,64,128,128,254,7, + 12,12,9,1,0,56,68,130,130,4,56,4,2,130,130,68, + 56,8,12,12,9,0,0,12,20,20,36,36,68,68,132,255, + 4,4,4,7,12,12,9,1,0,62,32,32,64,120,68,2, + 2,2,130,68,56,7,12,12,9,1,0,60,66,130,128,184, + 196,130,130,130,130,68,56,8,12,12,9,0,0,255,1,2, + 4,4,8,8,16,16,16,32,32,7,12,12,9,1,0,56, + 68,130,130,68,56,68,130,130,130,68,56,7,12,12,9,1, + 0,56,68,130,130,130,130,70,58,2,130,132,120,1,9,9, + 4,2,0,128,128,0,0,0,0,0,128,128,2,11,11,4, + 1,254,64,64,0,0,0,0,0,64,64,64,128,9,9,18, + 10,0,0,1,128,6,0,24,0,96,0,128,0,96,0,24, + 0,6,0,1,128,8,4,4,10,0,2,255,0,0,255,9, + 9,18,10,1,0,192,0,48,0,12,0,3,0,0,128,3, + 0,12,0,48,0,192,0,7,12,12,9,1,0,56,68,130, + 130,2,4,8,16,16,0,16,16,13,14,28,17,1,254,7, + 128,24,96,32,16,67,208,76,72,136,72,144,136,144,136,144, + 144,153,144,78,96,64,0,48,96,15,128,10,12,24,11,0, + 0,12,0,12,0,18,0,18,0,18,0,33,0,33,0,127, + 128,64,128,64,128,128,64,128,64,9,12,24,11,1,0,252, + 0,130,0,129,0,129,0,130,0,254,0,129,0,128,128,128, + 128,128,128,129,0,254,0,10,12,24,12,1,0,15,0,48, + 128,64,64,64,0,128,0,128,0,128,0,128,0,64,0,64, + 64,48,128,15,0,10,12,24,12,1,0,252,0,131,0,128, + 128,128,128,128,64,128,64,128,64,128,64,128,128,128,128,131, + 0,252,0,8,12,12,11,1,0,255,128,128,128,128,255,128, + 128,128,128,128,255,7,12,12,10,1,0,254,128,128,128,128, + 254,128,128,128,128,128,128,10,12,24,13,1,0,14,0,49, + 128,64,64,64,0,128,0,128,0,135,192,128,64,64,64,64, + 192,49,64,14,64,9,12,24,12,1,0,128,128,128,128,128, + 128,128,128,128,128,255,128,128,128,128,128,128,128,128,128,128, + 128,128,128,1,12,12,4,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,6,12,12,8,0,0,4,4,4,4,4, + 4,4,4,132,132,132,120,8,12,12,11,1,0,129,130,132, + 136,144,176,200,136,132,130,130,129,7,12,12,9,1,0,128, + 128,128,128,128,128,128,128,128,128,128,254,11,12,24,13,1, + 0,128,32,192,96,192,96,160,160,160,160,160,160,145,32,145, + 32,145,32,138,32,138,32,132,32,9,12,24,12,1,0,128, + 128,192,128,160,128,160,128,144,128,136,128,136,128,132,128,130, + 128,130,128,129,128,128,128,11,12,24,13,1,0,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,8,12,12,11,2,0,252,130,129,129,130, + 252,128,128,128,128,128,128,11,13,26,13,1,255,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,66, + 64,49,128,14,128,0,64,9,12,24,12,2,0,252,0,130, + 0,129,0,129,0,130,0,252,0,130,0,129,0,129,0,129, + 0,129,0,128,128,9,12,24,11,1,0,62,0,65,0,128, + 128,128,128,64,0,48,0,14,0,1,0,128,128,128,128,65, + 0,62,0,9,12,24,10,0,0,255,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,9,12,24,12,1,0,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,62,0,10, + 12,24,11,0,0,128,64,128,64,64,128,64,128,64,128,33, + 0,33,0,18,0,18,0,18,0,12,0,12,0,13,12,24, + 15,1,0,130,8,130,8,130,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,16,64,8,12,12,11,1, + 0,129,66,66,36,36,24,24,36,36,66,66,129,9,12,24, + 11,1,0,128,128,65,0,65,0,34,0,34,0,20,0,28, + 0,8,0,8,0,8,0,8,0,8,0,9,12,24,10,0, + 0,127,128,1,0,3,0,2,0,4,0,12,0,8,0,16, + 0,48,0,32,0,64,0,255,128,3,15,15,5,1,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,224,4,12, + 12,5,0,0,128,128,64,64,64,64,32,32,32,16,16,16, + 3,15,15,5,0,253,224,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,7,7,7,8,0,5,16,40,40,68,68, + 130,130,9,1,2,9,0,253,255,128,3,3,3,6,0,10, + 128,192,32,8,9,9,9,1,0,124,130,2,6,122,130,130, + 134,123,7,12,12,9,1,0,128,128,128,184,196,130,130,130, + 130,130,196,184,7,9,9,8,1,0,56,68,130,128,128,128, + 130,68,56,7,12,12,9,1,0,2,2,2,58,70,130,130, + 130,130,130,70,58,7,9,9,9,1,0,56,68,130,130,254, + 128,130,68,56,4,12,12,5,1,0,48,64,64,240,64,64, + 64,64,64,64,64,64,7,13,13,9,1,252,58,70,130,130, + 130,130,130,70,58,2,130,132,120,7,12,12,9,1,0,128, + 128,128,188,194,130,130,130,130,130,130,130,1,12,12,3,1, + 0,128,128,0,128,128,128,128,128,128,128,128,128,3,16,16, + 4,255,252,32,32,0,32,32,32,32,32,32,32,32,32,32, + 32,32,192,7,12,12,8,0,0,128,128,128,132,136,144,160, + 224,144,136,132,130,1,12,12,3,1,0,128,128,128,128,128, + 128,128,128,128,128,128,128,11,9,18,14,2,0,185,192,198, + 32,132,32,132,32,132,32,132,32,132,32,132,32,132,32,7, + 9,9,9,1,0,188,194,130,130,130,130,130,130,130,7,9, + 9,9,1,0,56,68,130,130,130,130,130,68,56,7,13,13, + 9,1,252,184,196,130,130,130,130,130,196,184,128,128,128,128, + 7,13,13,9,1,252,58,70,130,130,130,130,130,70,58,2, + 2,2,2,4,9,9,5,1,0,176,192,128,128,128,128,128, + 128,128,6,9,9,8,1,0,120,132,132,192,48,12,132,132, + 120,4,11,11,5,1,0,64,64,240,64,64,64,64,64,64, + 64,48,7,9,9,9,1,0,130,130,130,130,130,130,130,134, + 122,7,9,9,8,0,0,130,130,68,68,68,40,40,56,16, + 11,9,18,12,0,0,132,32,132,32,68,64,78,64,74,64, + 42,128,42,128,17,0,17,0,7,9,9,8,0,0,130,68, + 68,40,16,40,68,68,130,7,12,12,8,0,253,130,130,68, + 68,40,40,56,16,16,32,32,192,6,9,9,8,1,0,252, + 4,8,16,32,32,64,128,252,3,16,16,6,1,252,32,64, + 64,64,64,64,64,128,64,64,64,64,64,64,64,32,1,16, + 16,4,1,252,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,16,16,6,1,252,128,64,64,64,64,64, + 64,32,64,64,64,64,64,64,64,128,8,2,2,10,1,4, + 113,142,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=12 dx=18 dy= 0 ascent=18 len=36 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR14[4920] U8G_SECTION(".progmem.u8g_font_helvR14") = { + 0,22,29,254,249,14,2,149,6,82,32,255,252,18,252,14, + 252,0,0,0,5,0,1,2,14,14,6,2,0,192,192,192, + 192,192,192,192,192,128,128,0,0,192,192,5,5,5,5,0, + 9,216,216,216,216,216,10,13,26,10,0,0,9,0,9,0, + 9,0,127,192,127,192,18,0,18,0,18,0,255,128,255,128, + 36,0,36,0,36,0,9,16,32,10,1,254,8,0,62,0, + 127,0,203,0,200,0,232,0,120,0,62,0,15,0,9,128, + 201,128,235,128,127,0,62,0,8,0,8,0,14,13,26,16, + 1,0,120,96,204,192,204,192,205,128,205,128,123,0,3,0, + 6,120,6,204,12,204,12,204,24,204,24,120,12,13,26,13, + 1,0,60,0,126,0,102,0,102,0,60,0,124,0,238,192, + 198,192,195,192,195,128,231,192,126,224,60,112,1,5,5,3, + 1,9,128,128,128,128,128,4,18,18,6,0,252,16,48,96, + 96,192,192,192,192,192,192,192,192,192,192,96,96,48,16,4, + 18,18,6,1,252,128,192,96,96,48,48,48,48,48,48,48, + 48,48,48,96,96,192,128,5,7,7,7,1,7,32,168,248, + 32,248,168,32,8,10,10,10,1,0,24,24,24,24,255,255, + 24,24,24,24,2,5,5,5,1,253,192,192,64,64,128,5, + 1,1,6,0,5,248,2,2,2,5,1,0,192,192,5,14, + 14,5,0,0,24,24,24,24,48,48,48,96,96,96,192,192, + 192,192,8,13,13,10,1,0,60,126,102,195,195,195,195,195, + 195,195,102,126,60,5,13,13,10,2,0,24,248,248,24,24, + 24,24,24,24,24,24,24,24,8,13,13,10,1,0,60,254, + 195,3,7,14,28,56,112,224,192,255,255,8,13,13,10,1, + 0,62,127,195,195,6,28,30,7,3,195,199,126,60,9,13, + 26,10,0,0,3,0,7,0,15,0,27,0,51,0,51,0, + 99,0,195,0,255,128,255,128,3,0,3,0,3,0,8,13, + 13,10,1,0,254,254,192,192,252,254,199,3,3,195,199,254, + 124,8,13,13,10,1,0,60,127,99,192,192,220,254,195,195, + 195,227,126,60,8,13,13,10,1,0,255,255,3,6,12,12, + 24,24,48,48,96,96,96,8,13,13,10,1,0,60,126,231, + 195,195,102,126,231,195,195,231,126,60,8,13,13,10,1,0, + 60,126,199,195,195,195,127,59,3,3,198,254,124,2,10,10, + 5,1,0,192,192,0,0,0,0,0,0,192,192,2,13,13, + 5,1,253,192,192,0,0,0,0,0,0,192,192,64,64,128, + 8,9,9,10,1,0,3,15,60,112,192,112,60,15,3,7, + 5,5,11,2,2,254,254,0,254,254,8,9,9,10,1,0, + 192,240,60,14,3,14,60,240,192,7,14,14,10,1,0,124, + 254,198,198,14,28,56,48,48,48,0,0,48,48,16,17,34, + 18,1,253,3,240,15,252,28,14,48,6,99,211,103,115,198, + 51,204,99,204,102,204,102,204,204,207,248,103,112,112,0,56, + 0,31,240,7,224,12,14,28,13,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,11,14,28,13,1,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,128,255,192,192,224,192, + 96,192,96,192,224,255,192,255,128,12,14,28,14,1,0,15, + 128,63,224,112,112,96,48,224,0,192,0,192,0,192,0,192, + 0,224,0,96,48,112,112,63,224,15,128,12,14,28,14,1, + 0,255,128,255,192,192,224,192,96,192,48,192,48,192,48,192, + 48,192,48,192,48,192,96,192,224,255,192,255,128,10,14,28, + 13,2,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,9, + 14,28,12,2,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,13,14,28,15,1,0,15,192,63,240,112,56,96,24,224, + 24,192,0,192,0,192,248,192,248,224,24,96,24,112,56,63, + 248,15,216,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,255,224,255,224,192,96,192,96,192,96,192, + 96,192,96,192,96,2,14,14,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,8,14,14,10,0,0,3, + 3,3,3,3,3,3,3,3,195,195,231,126,60,12,14,28, + 13,2,0,192,224,193,192,195,128,199,0,206,0,220,0,248, + 0,252,0,206,0,199,0,195,128,193,192,192,224,192,112,9, + 14,28,11,1,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,128,255, + 128,14,14,28,16,1,0,192,12,192,12,224,28,224,28,240, + 60,240,60,216,108,216,108,204,204,204,204,196,140,199,140,195, + 12,195,12,11,14,28,14,1,0,192,96,224,96,240,96,240, + 96,216,96,204,96,204,96,198,96,198,96,195,96,193,224,193, + 224,192,224,192,96,13,14,28,15,1,0,15,128,63,224,112, + 112,96,48,224,56,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,10,14,28,13,2,0,255,0,255, + 128,193,192,192,192,192,192,193,192,255,128,255,0,192,0,192, + 0,192,0,192,0,192,0,192,0,13,15,30,15,1,255,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,225,184,97,176,112,240,63,224,15,176,0,48,11,14,28, + 14,1,0,255,128,255,192,192,224,192,96,192,96,192,224,255, + 192,255,128,192,192,192,192,192,96,192,96,192,96,192,96,10, + 14,28,13,1,0,30,0,127,128,225,192,192,192,224,0,124, + 0,31,0,3,128,1,192,0,192,192,192,225,192,127,128,63, + 0,10,14,28,12,1,0,255,192,255,192,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,96, + 192,127,192,31,0,12,14,28,13,0,0,192,48,192,48,96, + 96,96,96,96,96,48,192,48,192,48,192,25,128,25,128,25, + 128,15,0,15,0,6,0,16,14,28,18,1,0,193,131,193, + 131,193,131,195,195,99,198,98,70,102,102,102,102,54,108,54, + 108,52,44,28,56,24,24,24,24,11,14,28,13,1,0,192, + 96,192,96,96,192,113,192,49,128,27,0,14,0,14,0,27, + 0,49,128,113,192,96,192,192,96,192,96,12,14,28,13,0, + 0,192,48,192,48,96,96,96,96,48,192,57,192,25,128,15, + 0,6,0,6,0,6,0,6,0,6,0,6,0,10,14,28, + 12,1,0,255,192,255,192,0,192,1,128,3,0,6,0,12, + 0,28,0,24,0,48,0,96,0,192,0,255,192,255,192,4, + 18,18,5,0,252,240,240,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,240,240,5,14,14,5,0,0,192,192,192, + 96,96,96,48,48,48,48,24,24,24,24,4,18,18,5,0, + 252,240,240,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,240,240,7,6,6,9,1,7,16,56,108,108,198,198,11, + 2,4,11,0,252,255,224,255,224,4,3,3,4,0,11,192, + 96,48,9,10,20,11,1,0,126,0,231,0,195,0,7,0, + 127,0,227,0,195,0,195,0,231,128,121,128,9,14,28,11, + 1,0,192,0,192,0,192,0,192,0,222,0,255,0,227,0, + 193,128,193,128,193,128,193,128,227,0,255,0,222,0,8,10, + 10,10,1,0,62,127,99,192,192,192,192,99,127,62,9,14, + 28,11,1,0,1,128,1,128,1,128,1,128,61,128,127,128, + 99,128,193,128,193,128,193,128,193,128,99,128,127,128,61,128, + 8,10,10,10,1,0,60,126,195,195,255,192,192,227,127,60, + 6,14,14,6,0,0,28,60,48,48,252,252,48,48,48,48, + 48,48,48,48,9,14,28,11,1,252,61,128,127,128,97,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 99,0,127,0,28,0,8,14,14,10,1,0,192,192,192,192, + 222,255,227,195,195,195,195,195,195,195,2,14,14,4,1,0, + 192,192,0,0,192,192,192,192,192,192,192,192,192,192,4,18, + 18,4,255,252,48,48,0,0,48,48,48,48,48,48,48,48, + 48,48,48,48,240,224,8,14,14,9,1,0,192,192,192,192, + 198,204,216,240,248,216,204,206,198,199,2,14,14,4,1,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,14,10, + 20,16,1,0,222,120,255,252,227,140,195,12,195,12,195,12, + 195,12,195,12,195,12,195,12,8,10,10,10,1,0,222,255, + 227,195,195,195,195,195,195,195,9,10,20,11,1,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,252,222,0,255,0,227,0,193,128, + 193,128,193,128,193,128,227,0,255,0,222,0,192,0,192,0, + 192,0,192,0,9,14,28,11,1,252,61,128,127,128,99,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 1,128,1,128,1,128,5,10,10,6,1,0,216,216,224,192, + 192,192,192,192,192,192,7,10,10,9,1,0,60,126,198,192, + 252,62,6,198,252,120,6,13,13,6,0,0,48,48,48,252, + 252,48,48,48,48,48,48,60,28,8,10,10,10,1,0,195, + 195,195,195,195,195,195,199,255,123,8,10,10,10,1,0,195, + 195,195,102,102,102,36,60,24,24,12,10,20,14,1,0,198, + 48,198,48,198,48,102,96,102,96,105,96,41,64,57,192,25, + 128,25,128,8,10,10,10,1,0,195,231,102,60,24,24,60, + 102,231,195,8,14,14,10,1,252,195,195,195,102,102,102,36, + 60,24,24,24,24,112,112,7,10,10,9,1,0,254,254,6, + 12,24,48,96,192,254,254,6,18,18,6,255,252,12,24,48, + 48,48,48,48,96,192,96,48,48,48,48,48,48,24,12,2, + 18,18,5,1,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,6,18,18,6,0,252,192,96,48, + 48,48,48,48,24,12,24,48,48,48,48,48,48,96,192,8, + 3,3,10,1,4,115,255,206,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,5,0,1,2, + 14,14,6,2,252,192,192,0,0,64,64,192,192,192,192,192, + 192,192,192,8,14,14,10,1,254,4,4,62,127,107,200,200, + 200,200,107,127,62,16,16,9,13,26,10,0,0,30,0,63, + 0,97,128,97,128,96,0,48,0,126,0,24,0,24,0,48, + 0,96,128,255,128,223,0,8,7,7,10,1,3,195,255,102, + 102,102,255,195,8,13,13,10,1,0,195,195,102,102,102,60, + 255,24,255,24,24,24,24,2,18,18,5,1,252,192,192,192, + 192,192,192,192,0,0,0,0,192,192,192,192,192,192,192,8, + 18,18,10,1,252,60,126,195,195,240,124,110,199,195,227,115, + 62,14,7,195,195,126,60,5,2,2,6,0,12,216,216,13, + 14,28,15,1,0,15,128,48,96,64,16,71,16,136,136,144, + 136,144,8,144,8,144,8,136,136,71,16,64,16,48,96,15, + 128,5,8,8,7,1,6,112,152,56,72,216,104,0,248,7, + 6,6,9,1,2,54,108,216,216,108,54,9,5,10,11,1, + 3,255,128,255,128,1,128,1,128,1,128,5,1,1,6,0, + 5,248,13,14,28,14,0,0,15,128,48,96,64,16,79,144, + 136,72,136,72,136,72,143,136,137,8,136,136,72,80,64,16, + 48,96,15,128,5,1,1,5,0,12,248,5,5,5,7,1, + 8,112,216,136,216,112,8,11,11,10,1,0,24,24,24,255, + 255,24,24,24,0,255,255,5,8,8,6,0,5,112,248,152, + 24,48,96,248,248,5,8,8,6,0,5,112,248,152,48,48, + 152,248,112,4,3,3,4,0,11,48,96,192,8,14,14,10, + 1,252,195,195,195,195,195,195,195,231,255,219,192,192,192,192, + 8,18,18,10,1,252,63,114,242,242,242,242,242,114,50,18, + 18,18,18,18,18,18,18,18,2,2,2,4,1,4,192,192, + 5,5,5,5,0,252,96,112,24,216,240,4,8,8,6,0, + 5,48,240,240,48,48,48,48,48,5,8,8,7,1,6,112, + 216,136,136,216,112,0,248,7,6,6,9,1,2,216,108,54, + 54,108,216,14,13,26,15,0,0,48,48,240,48,240,96,48, + 192,48,192,49,136,49,24,51,56,6,120,6,216,12,252,24, + 24,24,24,14,13,26,15,0,0,48,48,240,48,240,96,48, + 192,48,192,49,184,49,124,51,76,6,12,6,24,12,48,24, + 124,24,124,14,13,26,15,0,0,112,48,248,48,152,96,48, + 192,48,192,153,136,249,24,115,56,6,120,6,216,12,252,24, + 24,24,24,7,14,14,10,1,252,24,24,0,0,24,24,24, + 56,112,224,198,198,254,124,12,18,36,13,0,0,24,0,12, + 0,6,0,0,0,6,0,6,0,15,0,15,0,25,128,25, + 128,48,192,48,192,63,192,127,224,96,96,96,96,192,48,192, + 48,12,18,36,13,0,0,1,128,3,0,6,0,0,0,6, + 0,6,0,15,0,15,0,25,128,25,128,48,192,48,192,63, + 192,127,224,96,96,96,96,192,48,192,48,12,18,36,13,0, + 0,6,0,15,0,25,128,0,0,6,0,6,0,15,0,15, + 0,25,128,25,128,48,192,48,192,63,192,127,224,96,96,96, + 96,192,48,192,48,12,18,36,13,0,0,12,128,22,128,19, + 0,0,0,6,0,6,0,15,0,15,0,25,128,25,128,48, + 192,48,192,63,192,127,224,96,96,96,96,192,48,192,48,12, + 17,34,13,0,0,25,128,25,128,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,12,17,34,13,0,0,6,0,9, + 0,9,0,6,0,6,0,15,0,15,0,25,128,25,128,48, + 192,48,192,63,192,127,224,96,96,96,96,192,48,192,48,16, + 14,28,18,1,0,7,255,7,255,13,128,13,128,25,128,25, + 128,49,254,49,254,63,128,127,128,97,128,97,128,193,255,193, + 255,12,18,36,14,1,252,15,128,63,224,112,112,96,48,224, + 0,192,0,192,0,192,0,192,0,224,0,96,48,112,112,63, + 224,15,128,6,0,3,0,27,0,30,0,10,18,36,13,2, + 0,48,0,24,0,12,0,0,0,255,192,255,192,192,0,192, + 0,192,0,192,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,192,255,192,10,18,36,13,2,0,3,0,6,0,12, + 0,0,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,10, + 18,36,13,2,0,12,0,30,0,51,0,0,0,255,192,255, + 192,192,0,192,0,192,0,192,0,255,128,255,128,192,0,192, + 0,192,0,192,0,255,192,255,192,10,17,34,13,2,0,51, + 0,51,0,0,0,255,192,255,192,192,0,192,0,192,0,192, + 0,255,128,255,128,192,0,192,0,192,0,192,0,255,192,255, + 192,4,18,18,6,0,0,192,96,48,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,4,18,18,6,2,0,48, + 96,192,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,6,18,18,6,0,0,48,120,132,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,6,17,17,6,0,0,204, + 204,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 14,14,28,14,255,0,63,224,63,240,48,56,48,24,48,12, + 48,12,254,12,254,12,48,12,48,12,48,24,48,56,63,240, + 63,224,11,18,36,14,1,0,12,128,22,128,19,0,0,0, + 192,96,224,96,240,96,240,96,216,96,204,96,204,96,198,96, + 198,96,195,96,193,224,193,224,192,224,192,96,13,18,36,15, + 1,0,24,0,12,0,6,0,0,0,15,128,63,224,112,112, + 96,48,224,56,192,24,192,24,192,24,192,24,224,56,96,48, + 112,112,63,224,15,128,13,18,36,15,1,0,1,128,3,0, + 6,0,0,0,15,128,63,224,112,112,96,48,224,56,192,24, + 192,24,192,24,192,24,224,56,96,48,112,112,63,224,15,128, + 13,18,36,15,1,0,3,0,7,128,12,192,0,0,15,128, + 63,224,112,112,96,48,224,56,192,24,192,24,192,24,192,24, + 224,56,96,48,112,112,63,224,15,128,13,18,36,15,1,0, + 6,64,11,64,9,128,0,0,15,128,63,224,112,112,96,48, + 224,56,192,24,192,24,192,24,192,24,224,56,96,48,112,112, + 63,224,15,128,13,17,34,15,1,0,12,192,12,192,0,0, + 15,128,63,224,112,112,96,48,224,56,192,24,192,24,192,24, + 192,24,224,56,96,48,112,112,63,224,15,128,10,9,18,10, + 0,0,192,192,97,128,51,0,30,0,12,0,30,0,51,0, + 97,128,192,192,14,14,28,15,0,0,7,204,31,248,56,48, + 48,120,112,220,97,140,99,12,98,12,102,12,108,28,56,24, + 56,56,111,240,199,192,11,18,36,14,1,0,24,0,12,0, + 6,0,0,0,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,96,192,127,192,31,0, + 11,18,36,14,1,0,3,0,6,0,12,0,0,0,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,96,192,127,192,31,0,11,18,36,14,1,0, + 6,0,15,0,25,128,0,0,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,96,192, + 127,192,31,0,11,17,34,14,1,0,49,128,49,128,0,0, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,96,192,127,192,31,0,12,18,36,13, + 0,0,1,128,3,0,6,0,0,0,192,48,192,48,96,96, + 96,96,48,192,57,192,25,128,15,0,6,0,6,0,6,0, + 6,0,6,0,6,0,10,14,28,12,1,0,192,0,192,0, + 192,0,255,0,255,128,193,192,192,192,192,192,193,192,255,128, + 255,0,192,0,192,0,192,0,7,14,14,9,1,0,56,124, + 198,198,198,198,220,220,198,198,198,198,222,220,9,14,28,11, + 1,0,48,0,24,0,12,0,0,0,126,0,231,0,195,0, + 7,0,127,0,227,0,195,0,195,0,231,128,121,128,9,14, + 28,11,1,0,12,0,24,0,48,0,0,0,126,0,231,0, + 195,0,7,0,127,0,227,0,195,0,195,0,231,128,121,128, + 9,14,28,11,1,0,24,0,60,0,102,0,0,0,126,0, + 231,0,195,0,7,0,127,0,227,0,195,0,195,0,231,128, + 121,128,9,14,28,11,1,0,50,0,90,0,76,0,0,0, + 126,0,231,0,195,0,7,0,127,0,227,0,195,0,195,0, + 231,128,121,128,9,14,28,11,1,0,102,0,102,0,0,0, + 0,0,126,0,231,0,195,0,7,0,127,0,227,0,195,0, + 195,0,231,128,121,128,9,14,28,11,1,0,24,0,36,0, + 36,0,24,0,126,0,231,0,195,0,7,0,127,0,227,0, + 195,0,195,0,231,128,121,128,14,10,20,17,2,0,126,240, + 231,248,195,12,7,12,127,252,227,0,195,0,195,140,231,252, + 122,240,8,14,14,10,1,252,62,127,99,192,192,192,192,99, + 127,62,24,12,108,120,8,14,14,10,1,0,48,24,12,0, + 60,126,195,195,255,192,192,227,127,60,8,14,14,10,1,0, + 12,24,48,0,60,126,195,195,255,192,192,227,127,60,8,14, + 14,10,1,0,24,60,102,0,60,126,195,195,255,192,192,227, + 127,60,8,14,14,10,1,0,102,102,0,0,60,126,195,195, + 255,192,192,227,127,60,4,14,14,4,0,0,192,96,48,0, + 96,96,96,96,96,96,96,96,96,96,4,14,14,4,0,0, + 48,96,192,0,96,96,96,96,96,96,96,96,96,96,6,14, + 14,4,255,0,48,120,204,0,48,48,48,48,48,48,48,48, + 48,48,5,14,14,4,0,0,216,216,0,0,96,96,96,96, + 96,96,96,96,96,96,9,14,28,11,1,0,96,0,54,0, + 56,0,76,0,62,0,127,0,99,0,193,128,193,128,193,128, + 193,128,99,0,127,0,62,0,8,14,14,10,1,0,50,90, + 76,0,222,255,227,195,195,195,195,195,195,195,9,14,28,11, + 1,0,48,0,24,0,12,0,0,0,62,0,127,0,99,0, + 193,128,193,128,193,128,193,128,99,0,127,0,62,0,9,14, + 28,11,1,0,6,0,12,0,24,0,0,0,62,0,127,0, + 99,0,193,128,193,128,193,128,193,128,99,0,127,0,62,0, + 9,14,28,11,1,0,24,0,60,0,102,0,0,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,0,50,0,90,0,76,0,0,0, + 62,0,127,0,99,0,193,128,193,128,193,128,193,128,99,0, + 127,0,62,0,9,14,28,11,1,0,51,0,51,0,0,0, + 0,0,62,0,127,0,99,0,193,128,193,128,193,128,193,128, + 99,0,127,0,62,0,8,8,8,10,1,1,24,24,0,255, + 255,0,24,24,11,10,20,11,0,0,14,96,63,192,49,128, + 99,192,102,192,108,192,120,192,49,128,127,128,206,0,8,14, + 14,10,1,0,48,24,12,0,195,195,195,195,195,195,195,199, + 255,123,8,14,14,10,1,0,6,12,24,0,195,195,195,195, + 195,195,195,199,255,123,8,14,14,10,1,0,24,60,102,0, + 195,195,195,195,195,195,195,199,255,123,8,14,14,10,1,0, + 102,102,0,0,195,195,195,195,195,195,195,199,255,123,8,18, + 18,10,1,252,6,12,24,0,195,195,195,102,102,102,36,60, + 24,24,24,24,112,112,9,18,36,11,1,252,192,0,192,0, + 192,0,192,0,222,0,255,0,227,0,193,128,193,128,193,128, + 193,128,227,0,255,0,222,0,192,0,192,0,192,0,192,0, + 8,18,18,10,1,252,102,102,0,0,195,195,195,102,102,102, + 36,60,24,24,24,24,112,112}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=11 dx=18 dy= 0 ascent=14 len=34 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR14r[2281] U8G_SECTION(".progmem.u8g_font_helvR14r") = { + 0,22,29,254,249,14,2,149,6,82,32,127,252,14,252,14, + 252,0,0,0,5,0,1,2,14,14,6,2,0,192,192,192, + 192,192,192,192,192,128,128,0,0,192,192,5,5,5,5,0, + 9,216,216,216,216,216,10,13,26,10,0,0,9,0,9,0, + 9,0,127,192,127,192,18,0,18,0,18,0,255,128,255,128, + 36,0,36,0,36,0,9,16,32,10,1,254,8,0,62,0, + 127,0,203,0,200,0,232,0,120,0,62,0,15,0,9,128, + 201,128,235,128,127,0,62,0,8,0,8,0,14,13,26,16, + 1,0,120,96,204,192,204,192,205,128,205,128,123,0,3,0, + 6,120,6,204,12,204,12,204,24,204,24,120,12,13,26,13, + 1,0,60,0,126,0,102,0,102,0,60,0,124,0,238,192, + 198,192,195,192,195,128,231,192,126,224,60,112,1,5,5,3, + 1,9,128,128,128,128,128,4,18,18,6,0,252,16,48,96, + 96,192,192,192,192,192,192,192,192,192,192,96,96,48,16,4, + 18,18,6,1,252,128,192,96,96,48,48,48,48,48,48,48, + 48,48,48,96,96,192,128,5,7,7,7,1,7,32,168,248, + 32,248,168,32,8,10,10,10,1,0,24,24,24,24,255,255, + 24,24,24,24,2,5,5,5,1,253,192,192,64,64,128,5, + 1,1,6,0,5,248,2,2,2,5,1,0,192,192,5,14, + 14,5,0,0,24,24,24,24,48,48,48,96,96,96,192,192, + 192,192,8,13,13,10,1,0,60,126,102,195,195,195,195,195, + 195,195,102,126,60,5,13,13,10,2,0,24,248,248,24,24, + 24,24,24,24,24,24,24,24,8,13,13,10,1,0,60,254, + 195,3,7,14,28,56,112,224,192,255,255,8,13,13,10,1, + 0,62,127,195,195,6,28,30,7,3,195,199,126,60,9,13, + 26,10,0,0,3,0,7,0,15,0,27,0,51,0,51,0, + 99,0,195,0,255,128,255,128,3,0,3,0,3,0,8,13, + 13,10,1,0,254,254,192,192,252,254,199,3,3,195,199,254, + 124,8,13,13,10,1,0,60,127,99,192,192,220,254,195,195, + 195,227,126,60,8,13,13,10,1,0,255,255,3,6,12,12, + 24,24,48,48,96,96,96,8,13,13,10,1,0,60,126,231, + 195,195,102,126,231,195,195,231,126,60,8,13,13,10,1,0, + 60,126,199,195,195,195,127,59,3,3,198,254,124,2,10,10, + 5,1,0,192,192,0,0,0,0,0,0,192,192,2,13,13, + 5,1,253,192,192,0,0,0,0,0,0,192,192,64,64,128, + 8,9,9,10,1,0,3,15,60,112,192,112,60,15,3,7, + 5,5,11,2,2,254,254,0,254,254,8,9,9,10,1,0, + 192,240,60,14,3,14,60,240,192,7,14,14,10,1,0,124, + 254,198,198,14,28,56,48,48,48,0,0,48,48,16,17,34, + 18,1,253,3,240,15,252,28,14,48,6,99,211,103,115,198, + 51,204,99,204,102,204,102,204,204,207,248,103,112,112,0,56, + 0,31,240,7,224,12,14,28,13,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,11,14,28,13,1,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,128,255,192,192,224,192, + 96,192,96,192,224,255,192,255,128,12,14,28,14,1,0,15, + 128,63,224,112,112,96,48,224,0,192,0,192,0,192,0,192, + 0,224,0,96,48,112,112,63,224,15,128,12,14,28,14,1, + 0,255,128,255,192,192,224,192,96,192,48,192,48,192,48,192, + 48,192,48,192,48,192,96,192,224,255,192,255,128,10,14,28, + 13,2,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,9, + 14,28,12,2,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,13,14,28,15,1,0,15,192,63,240,112,56,96,24,224, + 24,192,0,192,0,192,248,192,248,224,24,96,24,112,56,63, + 248,15,216,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,255,224,255,224,192,96,192,96,192,96,192, + 96,192,96,192,96,2,14,14,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,8,14,14,10,0,0,3, + 3,3,3,3,3,3,3,3,195,195,231,126,60,12,14,28, + 13,2,0,192,224,193,192,195,128,199,0,206,0,220,0,248, + 0,252,0,206,0,199,0,195,128,193,192,192,224,192,112,9, + 14,28,11,1,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,128,255, + 128,14,14,28,16,1,0,192,12,192,12,224,28,224,28,240, + 60,240,60,216,108,216,108,204,204,204,204,196,140,199,140,195, + 12,195,12,11,14,28,14,1,0,192,96,224,96,240,96,240, + 96,216,96,204,96,204,96,198,96,198,96,195,96,193,224,193, + 224,192,224,192,96,13,14,28,15,1,0,15,128,63,224,112, + 112,96,48,224,56,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,10,14,28,13,2,0,255,0,255, + 128,193,192,192,192,192,192,193,192,255,128,255,0,192,0,192, + 0,192,0,192,0,192,0,192,0,13,15,30,15,1,255,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,225,184,97,176,112,240,63,224,15,176,0,48,11,14,28, + 14,1,0,255,128,255,192,192,224,192,96,192,96,192,224,255, + 192,255,128,192,192,192,192,192,96,192,96,192,96,192,96,10, + 14,28,13,1,0,30,0,127,128,225,192,192,192,224,0,124, + 0,31,0,3,128,1,192,0,192,192,192,225,192,127,128,63, + 0,10,14,28,12,1,0,255,192,255,192,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,96, + 192,127,192,31,0,12,14,28,13,0,0,192,48,192,48,96, + 96,96,96,96,96,48,192,48,192,48,192,25,128,25,128,25, + 128,15,0,15,0,6,0,16,14,28,18,1,0,193,131,193, + 131,193,131,195,195,99,198,98,70,102,102,102,102,54,108,54, + 108,52,44,28,56,24,24,24,24,11,14,28,13,1,0,192, + 96,192,96,96,192,113,192,49,128,27,0,14,0,14,0,27, + 0,49,128,113,192,96,192,192,96,192,96,12,14,28,13,0, + 0,192,48,192,48,96,96,96,96,48,192,57,192,25,128,15, + 0,6,0,6,0,6,0,6,0,6,0,6,0,10,14,28, + 12,1,0,255,192,255,192,0,192,1,128,3,0,6,0,12, + 0,28,0,24,0,48,0,96,0,192,0,255,192,255,192,4, + 18,18,5,0,252,240,240,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,240,240,5,14,14,5,0,0,192,192,192, + 96,96,96,48,48,48,48,24,24,24,24,4,18,18,5,0, + 252,240,240,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,240,240,7,6,6,9,1,7,16,56,108,108,198,198,11, + 2,4,11,0,252,255,224,255,224,4,3,3,4,0,11,192, + 96,48,9,10,20,11,1,0,126,0,231,0,195,0,7,0, + 127,0,227,0,195,0,195,0,231,128,121,128,9,14,28,11, + 1,0,192,0,192,0,192,0,192,0,222,0,255,0,227,0, + 193,128,193,128,193,128,193,128,227,0,255,0,222,0,8,10, + 10,10,1,0,62,127,99,192,192,192,192,99,127,62,9,14, + 28,11,1,0,1,128,1,128,1,128,1,128,61,128,127,128, + 99,128,193,128,193,128,193,128,193,128,99,128,127,128,61,128, + 8,10,10,10,1,0,60,126,195,195,255,192,192,227,127,60, + 6,14,14,6,0,0,28,60,48,48,252,252,48,48,48,48, + 48,48,48,48,9,14,28,11,1,252,61,128,127,128,97,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 99,0,127,0,28,0,8,14,14,10,1,0,192,192,192,192, + 222,255,227,195,195,195,195,195,195,195,2,14,14,4,1,0, + 192,192,0,0,192,192,192,192,192,192,192,192,192,192,4,18, + 18,4,255,252,48,48,0,0,48,48,48,48,48,48,48,48, + 48,48,48,48,240,224,8,14,14,9,1,0,192,192,192,192, + 198,204,216,240,248,216,204,206,198,199,2,14,14,4,1,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,14,10, + 20,16,1,0,222,120,255,252,227,140,195,12,195,12,195,12, + 195,12,195,12,195,12,195,12,8,10,10,10,1,0,222,255, + 227,195,195,195,195,195,195,195,9,10,20,11,1,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,252,222,0,255,0,227,0,193,128, + 193,128,193,128,193,128,227,0,255,0,222,0,192,0,192,0, + 192,0,192,0,9,14,28,11,1,252,61,128,127,128,99,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 1,128,1,128,1,128,5,10,10,6,1,0,216,216,224,192, + 192,192,192,192,192,192,7,10,10,9,1,0,60,126,198,192, + 252,62,6,198,252,120,6,13,13,6,0,0,48,48,48,252, + 252,48,48,48,48,48,48,60,28,8,10,10,10,1,0,195, + 195,195,195,195,195,195,199,255,123,8,10,10,10,1,0,195, + 195,195,102,102,102,36,60,24,24,12,10,20,14,1,0,198, + 48,198,48,198,48,102,96,102,96,105,96,41,64,57,192,25, + 128,25,128,8,10,10,10,1,0,195,231,102,60,24,24,60, + 102,231,195,8,14,14,10,1,252,195,195,195,102,102,102,36, + 60,24,24,24,24,112,112,7,10,10,9,1,0,254,254,6, + 12,24,48,96,192,254,254,6,18,18,6,255,252,12,24,48, + 48,48,48,48,96,192,96,48,48,48,48,48,48,24,12,2, + 18,18,5,1,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,6,18,18,6,0,252,192,96,48, + 48,48,48,48,24,12,24,48,48,48,48,48,48,96,192,8, + 3,3,10,1,4,115,255,206,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=16 dx=25 dy= 0 ascent=24 len=69 + Font Bounding box w=28 h=37 x=-3 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR18[7307] U8G_SECTION(".progmem.u8g_font_helvR18") = { + 0,28,37,253,248,19,4,37,9,49,32,255,251,24,251,19, + 251,0,0,0,6,0,1,2,19,19,6,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,128,128,0,0,192,192,192, + 6,6,6,8,1,13,204,204,204,204,204,68,11,17,34,14, + 2,0,12,192,12,192,12,192,25,128,255,224,255,224,25,128, + 25,128,51,0,51,0,255,224,255,224,51,0,51,0,102,0, + 102,0,102,0,11,22,44,13,1,254,6,0,6,0,31,128, + 63,192,118,224,102,96,102,96,102,0,118,0,62,0,62,0, + 15,128,7,192,6,224,6,96,198,96,198,96,230,224,127,192, + 63,128,6,0,6,0,19,18,54,22,1,0,0,6,0,60, + 12,0,126,12,0,195,24,0,195,24,0,195,48,0,195,48, + 0,126,96,0,60,96,0,0,192,0,0,199,128,1,143,192, + 1,152,96,3,24,96,3,24,96,6,24,96,6,15,192,4, + 7,128,14,18,36,17,2,0,15,0,31,128,57,192,48,192, + 48,192,48,192,25,128,15,0,30,0,63,24,115,152,97,216, + 192,240,192,96,192,240,225,216,127,156,30,0,2,6,6,6, + 2,13,192,192,192,192,192,64,5,24,24,8,2,251,24,24, + 48,48,96,96,96,192,192,192,192,192,192,192,192,192,192,96, + 96,96,48,48,24,24,5,24,24,8,1,251,192,192,96,96, + 48,48,48,24,24,24,24,24,24,24,24,24,24,48,48,48, + 96,96,192,192,7,7,7,10,1,12,16,16,214,124,56,108, + 68,12,12,24,14,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,2, + 6,6,6,2,253,192,192,192,64,64,128,6,2,2,8,1, + 6,252,252,2,3,3,6,2,0,192,192,192,7,19,19,7, + 0,0,6,4,12,12,8,24,24,16,16,48,48,32,96,96, + 64,192,192,128,128,11,18,36,13,1,0,31,0,63,128,113, + 192,96,192,96,192,224,224,192,96,192,96,192,96,192,96,192, + 96,192,96,224,224,96,192,96,192,113,192,63,128,31,0,6, + 18,18,13,2,0,12,12,28,252,252,12,12,12,12,12,12, + 12,12,12,12,12,12,12,11,18,36,13,1,0,30,0,127, + 128,97,192,192,192,192,96,192,96,0,224,0,192,1,192,3, + 128,15,0,28,0,56,0,112,0,224,0,192,0,255,224,255, + 224,11,18,36,13,1,0,31,0,127,128,97,128,192,192,192, + 192,192,192,0,192,1,128,15,0,15,192,0,192,0,96,0, + 96,192,96,192,192,97,192,127,128,31,0,11,18,36,13,1, + 0,1,128,3,128,3,128,7,128,15,128,13,128,25,128,57, + 128,49,128,97,128,225,128,193,128,255,224,255,224,1,128,1, + 128,1,128,1,128,11,18,36,13,1,0,127,192,127,192,96, + 0,96,0,96,0,96,0,126,0,127,128,113,192,0,192,0, + 224,0,96,0,96,192,224,192,192,225,192,127,128,30,0,11, + 18,36,13,1,0,15,0,63,192,112,192,96,96,224,96,192, + 0,192,0,207,0,223,128,241,192,224,192,192,96,192,96,192, + 96,224,224,113,192,127,192,31,0,11,18,36,13,1,0,255, + 224,255,224,0,224,0,192,1,128,1,128,3,0,3,0,6, + 0,6,0,12,0,12,0,28,0,24,0,24,0,56,0,48, + 0,48,0,11,18,36,13,1,0,14,0,63,128,49,128,96, + 192,96,192,96,192,49,128,31,0,63,128,113,192,96,192,192, + 96,192,96,192,96,192,96,96,192,127,192,31,0,11,18,36, + 13,1,0,31,0,127,192,113,192,224,192,192,96,192,96,192, + 96,192,96,224,224,113,224,127,96,30,96,0,96,0,224,192, + 192,225,192,127,128,30,0,2,14,14,6,2,0,192,192,192, + 0,0,0,0,0,0,0,0,192,192,192,2,17,17,6,2, + 253,192,192,192,0,0,0,0,0,0,0,0,192,192,192,64, + 64,128,12,12,24,15,1,1,0,48,0,240,3,192,15,0, + 60,0,224,0,224,0,60,0,15,0,3,192,0,240,0,48, + 10,5,10,15,2,5,255,192,255,192,0,0,255,192,255,192, + 12,12,24,15,1,1,192,0,240,0,60,0,15,0,3,192, + 0,112,0,112,3,192,15,0,60,0,240,0,192,0,10,19, + 38,12,1,0,31,0,127,128,113,192,224,192,192,192,193,192, + 1,128,3,128,7,0,6,0,12,0,12,0,12,0,12,0, + 0,0,0,0,12,0,12,0,12,0,22,23,69,25,2,252, + 0,255,0,3,255,192,15,1,224,28,0,112,56,0,24,48, + 0,24,96,115,12,96,251,12,193,199,12,195,134,12,195,6, + 12,198,6,12,198,12,28,198,12,24,198,12,56,231,28,112, + 99,247,224,113,227,128,56,0,0,28,0,0,15,3,0,7, + 255,0,0,252,0,15,19,38,17,1,0,3,128,3,128,6, + 192,6,192,12,64,12,96,12,96,24,48,24,48,24,48,48, + 24,63,248,63,248,96,12,96,12,96,12,192,6,192,6,192, + 6,14,19,38,17,2,0,255,192,255,240,192,112,192,24,192, + 24,192,24,192,24,192,48,255,224,255,240,192,24,192,12,192, + 12,192,12,192,12,192,28,192,120,255,240,255,192,15,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,15,19,38,18,2,0,255, + 192,255,240,192,120,192,28,192,12,192,14,192,6,192,6,192, + 6,192,6,192,6,192,6,192,6,192,14,192,12,192,28,192, + 120,255,240,255,192,12,19,38,16,2,0,255,240,255,240,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,255,224,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,240,255, + 240,11,19,38,14,2,0,255,224,255,224,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,255,192,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,16,19,38, + 19,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,127,192,127,192,3,192,3,224,3,96, + 7,112,15,60,63,31,251,7,227,14,19,38,18,2,0,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,255, + 252,255,252,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,2,19,19,8,3,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,192,192, + 192,192,192,192,97,128,127,128,63,0,13,19,38,18,3,0, + 192,56,192,112,192,224,193,192,195,128,199,0,206,0,220,0, + 252,0,254,0,231,0,195,128,193,128,193,192,192,224,192,96, + 192,112,192,56,192,24,11,19,38,14,2,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,255,224, + 255,224,17,19,57,21,2,0,192,1,128,224,3,128,224,3, + 128,240,7,128,240,7,128,216,13,128,216,13,128,216,13,128, + 204,25,128,204,25,128,204,25,128,198,49,128,198,49,128,198, + 49,128,195,97,128,195,97,128,195,97,128,193,193,128,193,193, + 128,14,19,38,18,2,0,224,12,240,12,240,12,216,12,220, + 12,204,12,206,12,198,12,199,12,195,12,195,140,193,140,193, + 204,192,204,192,236,192,108,192,60,192,60,192,28,16,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,13,19,38,16,2,0,255, + 224,255,240,192,48,192,24,192,24,192,24,192,24,192,48,255, + 240,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,19,38,18,1,0,7,224,31,248,60, + 60,112,14,96,6,224,7,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,224,7,96,230,112,126,60,28,31,254,7, + 231,13,19,38,17,2,0,255,224,255,240,192,48,192,24,192, + 24,192,24,192,24,192,48,255,240,255,224,192,112,192,48,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,13,19,38, + 16,2,0,15,128,63,224,96,96,192,48,192,48,192,0,224, + 0,124,0,63,128,7,224,0,240,0,56,0,24,0,24,192, + 24,192,56,240,112,127,224,31,128,14,19,38,16,1,0,255, + 252,255,252,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,14,19,38,18,2,0,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,96,24,112,56,63,240,15, + 192,15,19,38,17,1,0,192,6,192,6,224,14,96,12,112, + 28,48,24,48,24,56,56,24,48,24,48,28,112,12,96,12, + 96,14,224,6,192,6,192,3,128,3,128,3,128,20,19,57, + 22,1,0,192,96,48,192,96,48,192,96,48,192,240,48,96, + 240,96,97,152,96,97,152,96,97,152,96,97,152,96,49,152, + 192,51,12,192,51,12,192,51,12,192,27,13,128,27,13,128, + 30,7,128,14,7,0,12,3,0,12,3,0,15,19,38,17, + 1,0,192,6,224,14,112,28,48,24,24,48,28,112,14,224, + 7,192,3,128,3,128,7,192,14,224,12,96,28,112,56,56, + 48,24,96,12,224,14,192,6,14,19,38,16,1,0,192,12, + 224,28,96,24,112,56,48,48,56,112,24,96,28,224,12,192, + 15,192,7,128,7,128,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,13,19,38,15,1,0,255,248,255,248,0,56, + 0,112,0,224,1,192,1,192,3,128,7,0,7,0,14,0, + 28,0,28,0,56,0,112,0,112,0,224,0,255,248,255,248, + 4,24,24,7,2,251,240,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,240,8,19, + 19,7,0,0,192,64,64,96,32,32,48,16,16,16,24,8, + 8,12,4,4,6,2,3,4,24,24,7,1,251,240,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,240,240,10,9,18,12,1,10,12,0,12,0,30, + 0,18,0,51,0,97,128,97,128,192,192,192,192,14,2,4, + 14,0,251,255,252,255,252,5,4,4,7,1,15,192,96,48, + 24,11,14,28,13,1,0,31,0,63,128,97,192,96,192,0, + 192,7,192,63,192,120,192,224,192,192,192,193,192,227,192,126, + 224,60,96,11,19,38,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,223,128,241,192,224,192,192,224,192,96,192, + 96,192,96,192,96,192,224,224,192,241,192,223,128,207,0,10, + 14,28,12,1,0,31,0,63,128,113,192,96,192,224,0,192, + 0,192,0,192,0,192,0,224,0,96,192,113,192,63,128,31, + 0,11,19,38,14,1,0,0,96,0,96,0,96,0,96,0, + 96,30,96,63,96,113,224,96,224,224,96,192,96,192,96,192, + 96,192,96,224,96,96,224,113,224,63,96,30,96,11,14,28, + 13,1,0,14,0,63,128,113,192,96,192,192,96,192,96,255, + 224,255,224,192,0,192,0,96,96,112,224,63,192,15,0,6, + 19,19,8,1,0,28,60,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,48,48,11,19,38,14,1,251,30,96, + 63,96,113,224,96,224,224,96,192,96,192,96,192,96,192,96, + 224,96,96,224,113,224,63,96,30,96,0,96,192,96,224,192, + 127,192,31,0,10,19,38,13,2,0,192,0,192,0,192,0, + 192,0,192,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 2,19,19,6,2,0,192,192,192,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,4,24,24,6,0,251,48, + 48,48,0,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,224,10,19,38,12,2,0,192,0,192, + 0,192,0,192,0,192,0,193,128,195,128,199,0,206,0,220, + 0,248,0,252,0,206,0,198,0,199,0,195,128,193,128,193, + 192,192,192,2,19,19,6,2,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,16,14,28,20, + 2,0,206,60,255,126,227,199,193,131,193,131,193,131,193,131, + 193,131,193,131,193,131,193,131,193,131,193,131,193,131,10,14, + 28,14,2,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 11,14,28,13,1,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,63,128, + 31,0,11,19,38,14,2,251,207,0,223,128,241,192,224,192, + 192,224,192,96,192,96,192,96,192,96,192,224,224,192,241,192, + 223,128,207,0,192,0,192,0,192,0,192,0,192,0,11,19, + 38,14,1,251,30,96,63,96,113,224,96,224,224,96,192,96, + 192,96,192,96,192,96,224,96,96,224,113,224,63,96,30,96, + 0,96,0,96,0,96,0,96,0,96,6,14,14,9,2,0, + 204,220,248,240,224,192,192,192,192,192,192,192,192,192,10,14, + 28,12,1,0,63,0,127,128,225,192,192,192,192,0,248,0, + 127,0,15,128,1,192,192,192,192,192,225,192,127,128,63,0, + 6,18,18,8,1,0,48,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,60,28,10,14,28,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,193,192,99,192,126,192,28,192,11,14,28,13,1,0, + 192,96,192,96,192,96,96,192,96,192,113,192,49,128,49,128, + 27,0,27,0,27,0,14,0,14,0,14,0,18,14,42,18, + 0,0,192,192,192,192,192,192,97,225,128,97,225,128,97,225, + 128,49,35,0,51,51,0,51,51,0,27,54,0,26,22,0, + 30,30,0,14,28,0,12,12,0,12,12,0,10,14,28,12, + 1,0,192,192,225,192,97,128,51,0,30,0,30,0,12,0, + 30,0,30,0,51,0,115,128,97,128,192,192,192,192,12,19, + 38,13,0,251,192,48,192,48,96,48,112,96,48,96,56,224, + 24,192,24,192,13,128,13,128,7,128,7,0,3,0,3,0, + 6,0,6,0,12,0,60,0,56,0,10,14,28,12,1,0, + 255,192,255,192,1,128,3,0,7,0,14,0,12,0,28,0, + 56,0,48,0,96,0,224,0,255,192,255,192,6,24,24,8, + 1,251,12,24,48,48,48,48,48,48,48,48,96,192,192,96, + 48,48,48,48,48,48,48,48,24,12,1,24,24,6,2,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,24,24,8,1,251,192,96, + 48,48,48,48,48,48,48,48,24,12,12,24,48,48,48,48, + 48,48,48,48,96,192,10,4,8,14,2,5,112,192,252,192, + 207,192,195,128,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,6,0,1,2,19,19,6,2, + 251,192,192,192,0,0,64,64,192,192,192,192,192,192,192,192, + 192,192,192,192,10,18,36,13,1,254,1,128,1,128,31,0, + 63,128,115,192,102,192,198,0,204,0,204,0,204,0,216,0, + 216,0,216,192,113,192,127,128,63,0,96,0,96,0,12,18, + 36,14,1,0,31,128,63,224,112,112,96,48,96,0,112,0, + 48,0,24,0,255,128,255,128,24,0,24,0,24,0,48,0, + 48,0,103,48,255,240,240,224,11,12,24,13,1,3,192,96, + 238,224,127,192,49,128,96,192,96,192,96,192,96,192,49,128, + 127,192,238,224,192,96,14,18,36,14,0,0,224,28,96,24, + 112,56,48,48,56,112,24,96,28,224,12,192,63,240,63,240, + 3,0,63,240,63,240,3,0,3,0,3,0,3,0,3,0, + 2,24,24,6,2,251,192,192,192,192,192,192,192,192,192,192, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,11,24, + 48,13,1,251,31,0,63,128,113,192,96,192,112,192,56,0, + 28,0,126,0,231,0,195,128,193,192,192,192,96,96,112,96, + 56,96,28,192,15,128,7,0,3,128,97,192,96,192,113,192, + 63,128,31,0,6,2,2,8,1,16,204,204,19,19,57,19, + 1,0,3,248,0,14,14,0,48,1,128,96,0,192,65,240, + 64,195,24,96,134,12,32,132,0,32,132,0,32,132,0,32, + 132,0,32,134,12,32,195,24,96,65,240,64,96,0,192,48, + 1,128,24,3,0,14,14,0,3,248,0,7,12,12,9,1, + 7,120,204,204,28,108,204,204,220,118,0,254,254,9,8,16, + 14,2,3,25,128,51,0,102,0,204,0,204,0,102,0,51, + 0,25,128,13,8,16,15,1,2,255,248,255,248,0,24,0, + 24,0,24,0,24,0,24,0,24,6,2,2,8,1,6,252, + 252,18,19,57,19,1,0,7,248,0,28,14,0,48,3,0, + 96,1,128,67,240,128,194,24,192,130,8,64,130,8,64,130, + 8,64,130,16,64,131,240,64,130,32,64,130,16,64,194,16, + 192,66,8,128,96,1,128,48,3,0,28,14,0,7,248,0, + 6,2,2,8,1,16,252,252,8,7,7,9,0,11,60,102, + 195,195,195,102,60,12,13,26,14,1,0,6,0,6,0,6, + 0,6,0,255,240,255,240,6,0,6,0,6,0,6,0,0, + 0,255,240,255,240,7,10,10,7,0,8,60,126,198,6,12, + 24,48,96,254,254,7,10,10,7,0,8,124,254,198,6,60, + 60,6,198,254,124,5,4,4,7,1,15,24,48,96,192,10, + 19,38,14,2,251,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,193,192,227,192,254,192,220, + 192,192,0,192,0,192,0,192,0,192,0,10,24,48,12,1, + 251,31,192,127,192,125,128,253,128,253,128,253,128,253,128,253, + 128,253,128,125,128,125,128,61,128,13,128,13,128,13,128,13, + 128,13,128,13,128,13,128,13,128,13,128,13,128,13,128,13, + 128,2,3,3,6,2,6,192,192,192,5,6,6,7,1,251, + 96,112,24,24,248,112,4,10,10,7,0,8,48,48,240,240, + 48,48,48,48,48,48,7,12,12,9,1,7,56,108,198,198, + 198,198,198,108,56,0,254,254,9,8,16,14,3,3,204,0, + 102,0,51,0,25,128,25,128,51,0,102,0,204,0,18,18, + 54,19,1,0,48,24,0,48,24,0,240,48,0,240,48,0, + 48,96,0,48,96,0,48,192,0,48,192,0,49,131,0,49, + 135,0,3,15,0,3,15,0,6,27,0,6,51,0,12,127, + 192,12,127,192,24,3,0,24,3,0,18,18,54,19,1,0, + 48,24,0,48,24,0,240,48,0,240,48,0,48,96,0,48, + 96,0,48,192,0,48,192,0,49,135,128,49,143,192,3,24, + 192,3,0,192,6,1,128,6,3,0,12,6,0,12,12,0, + 24,31,192,24,31,192,19,18,54,19,0,0,124,12,0,254, + 12,0,198,24,0,6,24,0,60,48,0,60,48,0,6,96, + 0,198,96,0,254,193,128,124,195,128,1,135,128,1,135,128, + 3,13,128,3,25,128,6,63,224,6,63,224,12,1,128,12, + 1,128,10,19,38,12,1,251,12,0,12,0,12,0,0,0, + 0,0,12,0,12,0,12,0,12,0,24,0,56,0,112,0, + 96,0,224,192,192,192,193,192,227,128,127,128,62,0,15,24, + 48,17,1,0,12,0,6,0,3,0,1,128,0,0,3,128, + 3,128,6,192,6,192,12,64,12,96,12,96,24,48,24,48, + 24,48,48,24,63,248,63,248,96,12,96,12,96,12,192,6, + 192,6,192,6,15,24,48,17,1,0,0,96,0,192,1,128, + 3,0,0,0,3,128,3,128,6,192,6,192,12,64,12,96, + 12,96,24,48,24,48,24,48,48,24,63,248,63,248,96,12, + 96,12,96,12,192,6,192,6,192,6,15,24,48,17,1,0, + 1,128,3,192,6,96,12,48,0,0,3,128,3,128,6,192, + 6,192,12,64,12,96,12,96,24,48,24,48,24,48,48,24, + 63,248,63,248,96,12,96,12,96,12,192,6,192,6,192,6, + 15,23,46,17,1,0,7,16,13,176,8,224,0,0,3,128, + 3,128,6,192,6,192,12,64,12,96,12,96,24,48,24,48, + 24,48,48,24,63,248,63,248,96,12,96,12,96,12,192,6, + 192,6,192,6,15,23,46,17,1,0,12,96,12,96,0,0, + 0,0,3,128,3,128,6,192,6,192,12,64,12,96,12,96, + 24,48,24,48,24,48,48,24,63,248,63,248,96,12,96,12, + 96,12,192,6,192,6,192,6,15,24,48,17,1,0,3,128, + 4,64,4,64,3,128,0,0,3,128,3,128,6,192,6,192, + 12,64,12,96,12,96,24,48,24,48,24,48,48,24,63,248, + 63,248,96,12,96,12,96,12,192,6,192,6,192,6,21,19, + 57,23,1,0,3,255,248,3,255,248,6,96,0,6,96,0, + 12,96,0,12,96,0,12,96,0,24,96,0,24,127,248,24, + 127,248,48,96,0,63,224,0,63,224,0,96,96,0,96,96, + 0,96,96,0,192,96,0,192,127,248,192,127,248,15,24,48, + 18,1,251,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,1,128,0,192,0,192,7, + 192,3,128,12,24,48,16,2,0,48,0,24,0,12,0,6, + 0,0,0,255,240,255,240,192,0,192,0,192,0,192,0,192, + 0,192,0,255,224,255,224,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,255,240,255,240,12,24,48,16,2,0,1, + 128,3,0,6,0,12,0,0,0,255,240,255,240,192,0,192, + 0,192,0,192,0,192,0,192,0,255,224,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,240,255,240,12, + 24,48,16,2,0,6,0,15,0,25,128,48,192,0,0,255, + 240,255,240,192,0,192,0,192,0,192,0,192,0,192,0,255, + 224,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,240,255,240,12,23,46,16,2,0,24,192,24,192,0, + 0,0,0,255,240,255,240,192,0,192,0,192,0,192,0,192, + 0,192,0,255,224,255,224,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,255,240,255,240,5,24,24,8,1,0,192, + 96,48,24,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,5,24,24,8,2,0,24,48,96, + 192,0,96,96,96,96,96,96,96,96,96,96,96,96,96,96, + 96,96,96,96,96,8,24,24,8,0,0,24,60,102,195,0, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,6,23,23,8,1,0,204,204,0,0,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 18,19,57,18,255,0,31,248,0,31,254,0,24,15,0,24, + 3,128,24,1,128,24,1,192,24,0,192,24,0,192,255,128, + 192,255,128,192,24,0,192,24,0,192,24,0,192,24,1,192, + 24,1,128,24,3,128,24,15,0,31,254,0,31,248,0,14, + 23,46,18,2,0,14,32,27,96,17,192,0,0,224,12,240, + 12,240,12,216,12,220,12,204,12,206,12,198,12,199,12,195, + 12,195,140,193,140,193,204,192,204,192,236,192,108,192,60,192, + 60,192,28,16,24,48,18,1,0,12,0,6,0,3,0,1, + 128,0,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,16,24,48,18,1,0,0, + 48,0,96,0,192,1,128,0,0,7,224,31,248,60,60,112, + 14,96,6,224,7,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,224,7,96,6,112,14,60,60,31,248,7,224,16, + 24,48,18,1,0,0,192,1,224,3,48,6,24,0,0,7, + 224,31,248,60,60,112,14,96,6,224,7,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,224,7,96,6,112,14,60, + 60,31,248,7,224,16,23,46,18,1,0,3,136,6,216,4, + 112,0,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,16,23,46,18,1,0,6, + 48,6,48,0,0,0,0,7,224,31,248,60,60,112,14,96, + 6,224,7,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,224,7,96,6,112,14,60,60,31,248,7,224,13,12,24, + 14,0,1,192,24,96,48,48,96,24,192,13,128,7,0,7, + 0,13,128,24,192,48,96,96,48,192,24,18,19,57,18,0, + 0,3,240,192,15,253,192,30,31,128,56,7,0,48,15,0, + 112,29,128,96,57,128,96,113,128,96,225,128,97,193,128,99, + 129,128,103,1,128,110,1,128,124,3,128,56,3,0,56,7, + 0,126,30,0,239,252,0,195,240,0,14,24,48,18,2,0, + 24,0,12,0,6,0,3,0,0,0,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,112,56,63,240,15,192, + 14,24,48,18,2,0,0,96,0,192,1,128,3,0,0,0, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 112,56,63,240,15,192,14,24,48,18,2,0,3,0,7,128, + 12,192,24,96,0,0,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,96,24,112,56,63,240,15,192,14,23,46,18, + 2,0,24,192,24,192,0,0,0,0,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,112,56,63,240,15,192, + 14,24,48,16,1,0,0,96,0,192,1,128,3,0,0,0, + 192,12,224,28,96,24,112,56,48,48,56,112,24,96,28,224, + 12,192,15,192,7,128,7,128,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,13,19,38,16,2,0,192,0,192,0, + 192,0,192,0,255,224,255,240,192,48,192,24,192,24,192,24, + 192,24,192,48,255,240,255,224,192,0,192,0,192,0,192,0, + 192,0,10,19,38,15,3,0,28,0,127,0,227,0,193,128, + 193,128,193,128,195,0,199,0,206,0,207,0,195,128,193,128, + 192,192,192,192,192,192,193,128,195,128,207,0,206,0,11,19, + 38,13,1,0,24,0,12,0,6,0,3,0,0,0,31,0, + 63,128,97,192,96,192,0,192,7,192,63,192,120,192,224,192, + 192,192,193,192,227,192,126,224,60,96,11,19,38,13,1,0, + 1,128,3,0,6,0,12,0,0,0,31,0,63,128,97,192, + 96,192,0,192,7,192,63,192,120,192,224,192,192,192,193,192, + 227,192,126,224,60,96,11,19,38,13,1,0,12,0,30,0, + 51,0,97,128,0,0,31,0,63,128,97,192,96,192,0,192, + 7,192,63,192,120,192,224,192,192,192,193,192,227,192,126,224, + 60,96,11,18,36,13,1,0,28,64,54,192,35,128,0,0, + 31,0,63,128,97,192,96,192,0,192,7,192,63,192,120,192, + 224,192,192,192,193,192,227,192,126,224,60,96,11,18,36,13, + 1,0,51,0,51,0,0,0,0,0,31,0,63,128,97,192, + 96,192,0,192,7,192,63,192,120,192,224,192,192,192,193,192, + 227,192,126,224,60,96,11,19,38,13,1,0,6,0,9,0, + 9,0,6,0,0,0,31,0,63,128,97,192,96,192,0,192, + 7,192,63,192,120,192,224,192,192,192,193,192,227,192,126,224, + 60,96,19,14,42,21,1,0,31,14,0,63,191,128,97,241, + 192,96,224,192,0,192,96,7,192,96,63,255,224,120,255,224, + 224,192,0,192,192,0,193,224,96,227,240,224,126,63,192,60, + 15,0,10,19,38,12,1,251,31,0,63,128,113,192,96,192, + 224,0,192,0,192,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,12,0,6,0,6,0,62,0,28,0,11,19, + 38,13,1,0,24,0,12,0,6,0,3,0,0,0,14,0, + 63,128,113,192,96,192,192,96,192,96,255,224,255,224,192,0, + 192,0,96,96,112,224,63,192,15,0,11,19,38,13,1,0, + 3,0,6,0,12,0,24,0,0,0,14,0,63,128,113,192, + 96,192,192,96,192,96,255,224,255,224,192,0,192,0,96,96, + 112,224,63,192,15,0,11,19,38,13,1,0,12,0,30,0, + 51,0,97,128,0,0,14,0,63,128,113,192,96,192,192,96, + 192,96,255,224,255,224,192,0,192,0,96,96,112,224,63,192, + 15,0,11,18,36,13,1,0,51,0,51,0,0,0,0,0, + 14,0,63,128,113,192,96,192,192,96,192,96,255,224,255,224, + 192,0,192,0,96,96,112,224,63,192,15,0,5,19,19,6, + 0,0,192,96,48,24,0,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,5,19,19,6,1,0,24,48,96,192,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,96,8,19, + 19,6,255,0,24,60,102,195,0,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,6,18,18,6,0,0,204,204,0, + 0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,11, + 19,38,13,1,0,96,0,57,128,14,0,30,0,99,0,31, + 128,63,128,113,192,96,192,224,224,192,96,192,96,192,96,192, + 96,224,224,96,192,113,192,63,128,31,0,10,18,36,14,2, + 0,56,128,109,128,71,0,0,0,206,0,223,128,241,128,224, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,19,38,13,1,0,24,0,12,0,6, + 0,3,0,0,0,31,0,63,128,113,192,96,192,224,224,192, + 96,192,96,192,96,192,96,224,224,96,192,113,192,63,128,31, + 0,11,19,38,13,1,0,3,0,6,0,12,0,24,0,0, + 0,31,0,63,128,113,192,96,192,224,224,192,96,192,96,192, + 96,192,96,224,224,96,192,113,192,63,128,31,0,11,19,38, + 13,1,0,12,0,30,0,51,0,97,128,0,0,31,0,63, + 128,113,192,96,192,224,224,192,96,192,96,192,96,192,96,224, + 224,96,192,113,192,63,128,31,0,11,18,36,13,1,0,28, + 64,54,192,35,128,0,0,31,0,63,128,113,192,96,192,224, + 224,192,96,192,96,192,96,192,96,224,224,96,192,113,192,63, + 128,31,0,11,18,36,13,1,0,51,0,51,0,0,0,0, + 0,31,0,63,128,113,192,96,192,224,224,192,96,192,96,192, + 96,192,96,224,224,96,192,113,192,63,128,31,0,12,12,24, + 14,1,1,6,0,6,0,6,0,0,0,0,0,255,240,255, + 240,0,0,0,0,6,0,6,0,6,0,13,14,28,13,0, + 0,15,152,31,248,56,112,48,224,113,240,99,176,99,48,102, + 48,108,48,124,112,56,96,112,224,255,192,207,128,10,19,38, + 14,2,0,48,0,24,0,12,0,6,0,0,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,193,192,99,192,126,192,28,192,10,19,38,14,2,0,3, + 0,6,0,12,0,24,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,193,192,99, + 192,126,192,28,192,10,19,38,14,2,0,12,0,30,0,51, + 0,97,128,0,0,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,193,192,99,192,126,192,28, + 192,10,18,36,14,2,0,51,0,51,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,193,192,99,192,126,192,28,192,12,24,48,13,0, + 251,0,192,1,128,3,0,6,0,0,0,192,48,192,48,96, + 48,112,96,48,96,56,224,24,192,24,192,13,128,13,128,7, + 128,7,0,3,0,3,0,6,0,6,0,12,0,60,0,56, + 0,11,24,48,14,2,251,192,0,192,0,192,0,192,0,192, + 0,207,0,223,128,241,192,224,192,192,224,192,96,192,96,192, + 96,192,96,192,224,224,192,241,192,223,128,207,0,192,0,192, + 0,192,0,192,0,192,0,12,23,46,13,0,251,25,128,25, + 128,0,0,0,0,192,48,192,48,96,48,112,96,48,96,56, + 224,24,192,24,192,13,128,13,128,7,128,7,0,3,0,3, + 0,6,0,6,0,12,0,60,0,56,0}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=15 dx=25 dy= 0 ascent=20 len=69 + Font Bounding box w=28 h=37 x=-3 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR18r[3381] U8G_SECTION(".progmem.u8g_font_helvR18r") = { + 0,28,37,253,248,19,4,37,9,49,32,127,251,20,251,19, + 251,0,0,0,6,0,1,2,19,19,6,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,128,128,0,0,192,192,192, + 6,6,6,8,1,13,204,204,204,204,204,68,11,17,34,14, + 2,0,12,192,12,192,12,192,25,128,255,224,255,224,25,128, + 25,128,51,0,51,0,255,224,255,224,51,0,51,0,102,0, + 102,0,102,0,11,22,44,13,1,254,6,0,6,0,31,128, + 63,192,118,224,102,96,102,96,102,0,118,0,62,0,62,0, + 15,128,7,192,6,224,6,96,198,96,198,96,230,224,127,192, + 63,128,6,0,6,0,19,18,54,22,1,0,0,6,0,60, + 12,0,126,12,0,195,24,0,195,24,0,195,48,0,195,48, + 0,126,96,0,60,96,0,0,192,0,0,199,128,1,143,192, + 1,152,96,3,24,96,3,24,96,6,24,96,6,15,192,4, + 7,128,14,18,36,17,2,0,15,0,31,128,57,192,48,192, + 48,192,48,192,25,128,15,0,30,0,63,24,115,152,97,216, + 192,240,192,96,192,240,225,216,127,156,30,0,2,6,6,6, + 2,13,192,192,192,192,192,64,5,24,24,8,2,251,24,24, + 48,48,96,96,96,192,192,192,192,192,192,192,192,192,192,96, + 96,96,48,48,24,24,5,24,24,8,1,251,192,192,96,96, + 48,48,48,24,24,24,24,24,24,24,24,24,24,48,48,48, + 96,96,192,192,7,7,7,10,1,12,16,16,214,124,56,108, + 68,12,12,24,14,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,2, + 6,6,6,2,253,192,192,192,64,64,128,6,2,2,8,1, + 6,252,252,2,3,3,6,2,0,192,192,192,7,19,19,7, + 0,0,6,4,12,12,8,24,24,16,16,48,48,32,96,96, + 64,192,192,128,128,11,18,36,13,1,0,31,0,63,128,113, + 192,96,192,96,192,224,224,192,96,192,96,192,96,192,96,192, + 96,192,96,224,224,96,192,96,192,113,192,63,128,31,0,6, + 18,18,13,2,0,12,12,28,252,252,12,12,12,12,12,12, + 12,12,12,12,12,12,12,11,18,36,13,1,0,30,0,127, + 128,97,192,192,192,192,96,192,96,0,224,0,192,1,192,3, + 128,15,0,28,0,56,0,112,0,224,0,192,0,255,224,255, + 224,11,18,36,13,1,0,31,0,127,128,97,128,192,192,192, + 192,192,192,0,192,1,128,15,0,15,192,0,192,0,96,0, + 96,192,96,192,192,97,192,127,128,31,0,11,18,36,13,1, + 0,1,128,3,128,3,128,7,128,15,128,13,128,25,128,57, + 128,49,128,97,128,225,128,193,128,255,224,255,224,1,128,1, + 128,1,128,1,128,11,18,36,13,1,0,127,192,127,192,96, + 0,96,0,96,0,96,0,126,0,127,128,113,192,0,192,0, + 224,0,96,0,96,192,224,192,192,225,192,127,128,30,0,11, + 18,36,13,1,0,15,0,63,192,112,192,96,96,224,96,192, + 0,192,0,207,0,223,128,241,192,224,192,192,96,192,96,192, + 96,224,224,113,192,127,192,31,0,11,18,36,13,1,0,255, + 224,255,224,0,224,0,192,1,128,1,128,3,0,3,0,6, + 0,6,0,12,0,12,0,28,0,24,0,24,0,56,0,48, + 0,48,0,11,18,36,13,1,0,14,0,63,128,49,128,96, + 192,96,192,96,192,49,128,31,0,63,128,113,192,96,192,192, + 96,192,96,192,96,192,96,96,192,127,192,31,0,11,18,36, + 13,1,0,31,0,127,192,113,192,224,192,192,96,192,96,192, + 96,192,96,224,224,113,224,127,96,30,96,0,96,0,224,192, + 192,225,192,127,128,30,0,2,14,14,6,2,0,192,192,192, + 0,0,0,0,0,0,0,0,192,192,192,2,17,17,6,2, + 253,192,192,192,0,0,0,0,0,0,0,0,192,192,192,64, + 64,128,12,12,24,15,1,1,0,48,0,240,3,192,15,0, + 60,0,224,0,224,0,60,0,15,0,3,192,0,240,0,48, + 10,5,10,15,2,5,255,192,255,192,0,0,255,192,255,192, + 12,12,24,15,1,1,192,0,240,0,60,0,15,0,3,192, + 0,112,0,112,3,192,15,0,60,0,240,0,192,0,10,19, + 38,12,1,0,31,0,127,128,113,192,224,192,192,192,193,192, + 1,128,3,128,7,0,6,0,12,0,12,0,12,0,12,0, + 0,0,0,0,12,0,12,0,12,0,22,23,69,25,2,252, + 0,255,0,3,255,192,15,1,224,28,0,112,56,0,24,48, + 0,24,96,115,12,96,251,12,193,199,12,195,134,12,195,6, + 12,198,6,12,198,12,28,198,12,24,198,12,56,231,28,112, + 99,247,224,113,227,128,56,0,0,28,0,0,15,3,0,7, + 255,0,0,252,0,15,19,38,17,1,0,3,128,3,128,6, + 192,6,192,12,64,12,96,12,96,24,48,24,48,24,48,48, + 24,63,248,63,248,96,12,96,12,96,12,192,6,192,6,192, + 6,14,19,38,17,2,0,255,192,255,240,192,112,192,24,192, + 24,192,24,192,24,192,48,255,224,255,240,192,24,192,12,192, + 12,192,12,192,12,192,28,192,120,255,240,255,192,15,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,15,19,38,18,2,0,255, + 192,255,240,192,120,192,28,192,12,192,14,192,6,192,6,192, + 6,192,6,192,6,192,6,192,6,192,14,192,12,192,28,192, + 120,255,240,255,192,12,19,38,16,2,0,255,240,255,240,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,255,224,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,240,255, + 240,11,19,38,14,2,0,255,224,255,224,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,255,192,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,16,19,38, + 19,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,127,192,127,192,3,192,3,224,3,96, + 7,112,15,60,63,31,251,7,227,14,19,38,18,2,0,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,255, + 252,255,252,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,2,19,19,8,3,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,192,192, + 192,192,192,192,97,128,127,128,63,0,13,19,38,18,3,0, + 192,56,192,112,192,224,193,192,195,128,199,0,206,0,220,0, + 252,0,254,0,231,0,195,128,193,128,193,192,192,224,192,96, + 192,112,192,56,192,24,11,19,38,14,2,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,255,224, + 255,224,17,19,57,21,2,0,192,1,128,224,3,128,224,3, + 128,240,7,128,240,7,128,216,13,128,216,13,128,216,13,128, + 204,25,128,204,25,128,204,25,128,198,49,128,198,49,128,198, + 49,128,195,97,128,195,97,128,195,97,128,193,193,128,193,193, + 128,14,19,38,18,2,0,224,12,240,12,240,12,216,12,220, + 12,204,12,206,12,198,12,199,12,195,12,195,140,193,140,193, + 204,192,204,192,236,192,108,192,60,192,60,192,28,16,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,13,19,38,16,2,0,255, + 224,255,240,192,48,192,24,192,24,192,24,192,24,192,48,255, + 240,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,19,38,18,1,0,7,224,31,248,60, + 60,112,14,96,6,224,7,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,224,7,96,230,112,126,60,28,31,254,7, + 231,13,19,38,17,2,0,255,224,255,240,192,48,192,24,192, + 24,192,24,192,24,192,48,255,240,255,224,192,112,192,48,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,13,19,38, + 16,2,0,15,128,63,224,96,96,192,48,192,48,192,0,224, + 0,124,0,63,128,7,224,0,240,0,56,0,24,0,24,192, + 24,192,56,240,112,127,224,31,128,14,19,38,16,1,0,255, + 252,255,252,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,14,19,38,18,2,0,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,96,24,112,56,63,240,15, + 192,15,19,38,17,1,0,192,6,192,6,224,14,96,12,112, + 28,48,24,48,24,56,56,24,48,24,48,28,112,12,96,12, + 96,14,224,6,192,6,192,3,128,3,128,3,128,20,19,57, + 22,1,0,192,96,48,192,96,48,192,96,48,192,240,48,96, + 240,96,97,152,96,97,152,96,97,152,96,97,152,96,49,152, + 192,51,12,192,51,12,192,51,12,192,27,13,128,27,13,128, + 30,7,128,14,7,0,12,3,0,12,3,0,15,19,38,17, + 1,0,192,6,224,14,112,28,48,24,24,48,28,112,14,224, + 7,192,3,128,3,128,7,192,14,224,12,96,28,112,56,56, + 48,24,96,12,224,14,192,6,14,19,38,16,1,0,192,12, + 224,28,96,24,112,56,48,48,56,112,24,96,28,224,12,192, + 15,192,7,128,7,128,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,13,19,38,15,1,0,255,248,255,248,0,56, + 0,112,0,224,1,192,1,192,3,128,7,0,7,0,14,0, + 28,0,28,0,56,0,112,0,112,0,224,0,255,248,255,248, + 4,24,24,7,2,251,240,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,240,8,19, + 19,7,0,0,192,64,64,96,32,32,48,16,16,16,24,8, + 8,12,4,4,6,2,3,4,24,24,7,1,251,240,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,240,240,10,9,18,12,1,10,12,0,12,0,30, + 0,18,0,51,0,97,128,97,128,192,192,192,192,14,2,4, + 14,0,251,255,252,255,252,5,4,4,7,1,15,192,96,48, + 24,11,14,28,13,1,0,31,0,63,128,97,192,96,192,0, + 192,7,192,63,192,120,192,224,192,192,192,193,192,227,192,126, + 224,60,96,11,19,38,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,223,128,241,192,224,192,192,224,192,96,192, + 96,192,96,192,96,192,224,224,192,241,192,223,128,207,0,10, + 14,28,12,1,0,31,0,63,128,113,192,96,192,224,0,192, + 0,192,0,192,0,192,0,224,0,96,192,113,192,63,128,31, + 0,11,19,38,14,1,0,0,96,0,96,0,96,0,96,0, + 96,30,96,63,96,113,224,96,224,224,96,192,96,192,96,192, + 96,192,96,224,96,96,224,113,224,63,96,30,96,11,14,28, + 13,1,0,14,0,63,128,113,192,96,192,192,96,192,96,255, + 224,255,224,192,0,192,0,96,96,112,224,63,192,15,0,6, + 19,19,8,1,0,28,60,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,48,48,11,19,38,14,1,251,30,96, + 63,96,113,224,96,224,224,96,192,96,192,96,192,96,192,96, + 224,96,96,224,113,224,63,96,30,96,0,96,192,96,224,192, + 127,192,31,0,10,19,38,13,2,0,192,0,192,0,192,0, + 192,0,192,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 2,19,19,6,2,0,192,192,192,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,4,24,24,6,0,251,48, + 48,48,0,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,224,10,19,38,12,2,0,192,0,192, + 0,192,0,192,0,192,0,193,128,195,128,199,0,206,0,220, + 0,248,0,252,0,206,0,198,0,199,0,195,128,193,128,193, + 192,192,192,2,19,19,6,2,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,16,14,28,20, + 2,0,206,60,255,126,227,199,193,131,193,131,193,131,193,131, + 193,131,193,131,193,131,193,131,193,131,193,131,193,131,10,14, + 28,14,2,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 11,14,28,13,1,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,63,128, + 31,0,11,19,38,14,2,251,207,0,223,128,241,192,224,192, + 192,224,192,96,192,96,192,96,192,96,192,224,224,192,241,192, + 223,128,207,0,192,0,192,0,192,0,192,0,192,0,11,19, + 38,14,1,251,30,96,63,96,113,224,96,224,224,96,192,96, + 192,96,192,96,192,96,224,96,96,224,113,224,63,96,30,96, + 0,96,0,96,0,96,0,96,0,96,6,14,14,9,2,0, + 204,220,248,240,224,192,192,192,192,192,192,192,192,192,10,14, + 28,12,1,0,63,0,127,128,225,192,192,192,192,0,248,0, + 127,0,15,128,1,192,192,192,192,192,225,192,127,128,63,0, + 6,18,18,8,1,0,48,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,60,28,10,14,28,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,193,192,99,192,126,192,28,192,11,14,28,13,1,0, + 192,96,192,96,192,96,96,192,96,192,113,192,49,128,49,128, + 27,0,27,0,27,0,14,0,14,0,14,0,18,14,42,18, + 0,0,192,192,192,192,192,192,97,225,128,97,225,128,97,225, + 128,49,35,0,51,51,0,51,51,0,27,54,0,26,22,0, + 30,30,0,14,28,0,12,12,0,12,12,0,10,14,28,12, + 1,0,192,192,225,192,97,128,51,0,30,0,30,0,12,0, + 30,0,30,0,51,0,115,128,97,128,192,192,192,192,12,19, + 38,13,0,251,192,48,192,48,96,48,112,96,48,96,56,224, + 24,192,24,192,13,128,13,128,7,128,7,0,3,0,3,0, + 6,0,6,0,12,0,60,0,56,0,10,14,28,12,1,0, + 255,192,255,192,1,128,3,0,7,0,14,0,12,0,28,0, + 56,0,48,0,96,0,224,0,255,192,255,192,6,24,24,8, + 1,251,12,24,48,48,48,48,48,48,48,48,96,192,192,96, + 48,48,48,48,48,48,48,48,24,12,1,24,24,6,2,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,24,24,8,1,251,192,96, + 48,48,48,48,48,48,48,48,24,12,12,24,48,48,48,48, + 48,48,48,48,96,192,10,4,8,14,2,5,112,192,252,192, + 207,192,195,128,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=29 h=32 x= 4 y=22 dx=34 dy= 0 ascent=31 len=120 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24[10931] U8G_SECTION(".progmem.u8g_font_helvR24") = { + 0,39,48,251,245,25,5,215,14,105,32,255,249,31,249,25, + 249,0,0,0,9,0,1,3,25,25,9,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,64,64, + 0,0,224,224,224,224,8,8,8,12,2,15,231,231,231,231, + 231,231,66,66,17,23,69,19,1,0,3,135,0,3,135,0, + 3,6,0,3,6,0,7,14,0,7,14,0,127,255,128,127, + 255,128,127,255,128,14,28,0,14,28,0,12,24,0,28,56, + 0,28,56,0,255,255,0,255,255,0,255,255,0,56,112,0, + 56,112,0,48,96,0,48,96,0,112,224,0,112,224,0,16, + 31,62,18,1,252,1,128,1,128,1,128,15,240,31,248,61, + 188,113,142,113,142,225,142,225,128,225,128,113,128,125,128,63, + 192,31,240,7,252,1,254,1,158,1,143,1,135,225,135,225, + 135,113,142,113,142,61,188,63,248,15,240,1,128,1,128,1, + 128,1,128,26,24,96,29,1,0,0,0,48,0,31,0,112, + 0,127,128,96,0,115,192,224,0,224,192,192,0,192,225,192, + 0,192,225,128,0,192,227,128,0,224,195,0,0,115,199,0, + 0,127,134,0,0,31,14,0,0,0,12,0,0,0,28,62, + 0,0,24,127,128,0,56,243,128,0,48,193,192,0,113,192, + 192,0,97,192,192,0,225,192,192,0,192,193,192,1,192,227, + 128,1,128,127,128,3,128,62,0,18,23,69,22,2,0,7, + 192,0,15,224,0,30,112,0,60,56,0,56,56,0,56,56, + 0,60,112,0,30,240,0,15,224,0,7,192,0,15,128,0, + 63,192,0,121,199,0,112,231,0,224,246,0,224,126,0,224, + 60,0,224,28,0,240,62,0,120,127,0,127,247,128,63,227, + 192,15,0,0,3,8,8,6,2,15,224,224,224,224,224,224, + 224,64,7,31,31,11,2,249,6,12,12,24,24,56,48,112, + 112,112,96,224,224,224,224,224,224,224,224,224,96,112,112,112, + 48,56,24,24,12,12,6,7,31,31,11,1,249,192,96,96, + 48,48,56,24,28,28,28,12,14,14,14,14,14,14,14,14, + 12,12,28,28,24,24,56,48,112,96,96,192,10,11,22,13, + 1,15,12,0,12,0,76,128,237,192,127,128,63,0,30,0, + 63,0,115,128,225,192,64,128,17,16,48,19,1,1,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,3,9, + 9,9,3,251,224,224,224,224,32,96,96,192,128,8,2,2, + 11,1,8,255,255,3,4,4,9,3,0,224,224,224,224,9, + 24,48,9,0,0,1,128,1,128,1,128,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,8,0,24, + 0,24,0,24,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,15,24,48,18,1,0,7,192,31,240,63, + 248,60,120,120,60,112,28,112,28,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,112,60,60,120,63,248,31,240,7,192,8,24,24,18,3, + 0,3,7,7,15,63,255,255,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,15,24,48,18,1,0,7, + 192,31,240,63,248,120,60,112,28,240,14,224,14,224,14,0, + 14,0,28,0,60,0,120,0,240,3,224,7,192,31,0,60, + 0,120,0,112,0,224,0,224,0,255,254,255,254,255,254,15, + 24,48,18,1,0,7,192,31,240,63,248,56,56,112,28,112, + 28,112,28,112,28,0,28,0,56,3,248,3,240,3,248,0, + 60,0,30,0,14,224,14,224,14,224,14,112,28,120,60,63, + 248,31,240,7,192,16,24,48,18,0,0,0,24,0,56,0, + 120,0,120,0,248,1,248,3,184,3,184,7,56,14,56,14, + 56,28,56,56,56,56,56,112,56,224,56,255,255,255,255,255, + 255,0,56,0,56,0,56,0,56,0,56,15,24,48,18,1, + 0,63,252,63,252,63,252,56,0,56,0,56,0,112,0,112, + 0,119,192,127,240,127,248,120,124,112,28,0,30,0,14,0, + 14,0,14,224,14,224,30,240,28,120,124,127,248,63,240,15, + 128,15,24,48,18,1,0,3,192,15,240,31,248,60,56,56, + 28,112,28,112,0,112,0,96,0,227,192,239,240,255,248,248, + 60,240,28,240,14,224,14,224,14,96,14,112,14,112,28,56, + 60,63,248,31,240,7,192,15,24,48,18,1,0,255,254,255, + 254,255,254,0,14,0,28,0,24,0,56,0,112,0,112,0, + 224,0,224,1,192,1,192,3,128,3,128,7,0,7,0,7, + 0,14,0,14,0,14,0,28,0,28,0,28,0,15,24,48, + 18,1,0,7,192,31,240,63,248,56,60,112,28,112,28,112, + 28,112,28,120,60,60,120,31,240,15,224,63,248,120,60,112, + 28,224,14,224,14,224,14,224,14,240,28,120,60,63,248,31, + 240,7,192,15,24,48,18,1,0,7,192,31,240,63,248,120, + 124,112,60,240,28,224,30,224,14,224,14,224,14,224,30,224, + 30,112,62,127,254,63,238,15,206,0,14,0,28,224,28,240, + 60,120,120,63,240,63,224,15,128,3,18,18,9,4,0,224, + 224,224,224,0,0,0,0,0,0,0,0,0,0,224,224,224, + 224,3,22,22,9,4,251,224,224,224,224,0,0,0,0,0, + 0,0,0,0,224,224,224,224,32,96,96,192,128,16,16,32, + 19,2,0,0,3,0,15,0,63,1,252,7,224,31,128,254, + 0,240,0,240,0,254,0,31,128,7,224,1,252,0,127,0, + 15,0,3,15,9,18,19,2,4,255,254,255,254,255,254,0, + 0,0,0,0,0,255,254,255,254,255,254,16,16,32,19,1, + 0,192,0,240,0,254,0,63,128,7,224,1,248,0,127,0, + 15,0,15,0,127,1,248,7,224,63,128,254,0,240,0,192, + 0,14,25,50,18,2,0,7,192,31,240,63,248,120,56,112, + 28,240,28,224,28,224,28,0,28,0,56,0,56,0,112,0, + 224,1,224,1,192,3,128,3,128,3,128,3,128,0,0,0, + 0,3,128,3,128,3,128,3,128,29,30,120,34,1,251,0, + 7,192,0,0,63,248,0,0,255,254,0,3,240,63,128,7, + 192,7,192,15,0,3,224,30,0,1,224,28,0,0,240,56, + 15,140,112,56,31,220,56,112,60,252,56,112,112,124,56,96, + 224,56,24,224,224,56,24,225,224,56,24,225,192,112,56,225, + 192,112,56,225,192,112,112,225,192,224,112,225,224,224,224,112, + 243,243,192,112,255,127,128,120,62,127,0,60,0,0,0,30, + 0,0,0,31,0,0,0,15,128,0,0,3,224,120,0,1, + 255,248,0,0,127,224,0,20,25,75,22,1,0,0,240,0, + 0,240,0,0,248,0,1,248,0,1,248,0,3,156,0,3, + 156,0,3,156,0,7,158,0,7,14,0,7,14,0,15,15, + 0,15,15,0,14,7,0,30,7,128,31,255,128,31,255,128, + 63,255,192,60,3,192,56,1,192,120,1,224,120,1,224,112, + 0,224,240,0,240,240,0,240,17,25,75,22,3,0,255,240, + 0,255,252,0,255,254,0,224,62,0,224,15,0,224,15,0, + 224,7,0,224,7,0,224,15,0,224,14,0,224,62,0,255, + 252,0,255,252,0,255,254,0,224,31,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,7,128,224,15,0, + 255,254,0,255,254,0,255,248,0,20,25,75,24,2,0,1, + 252,0,7,255,0,15,255,128,31,7,192,60,1,224,56,0, + 224,112,0,240,112,0,112,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,112,240,0,112,112,0,240,120,0,224,60,1,224,63,7, + 192,31,255,128,7,254,0,1,248,0,18,25,75,24,3,0, + 255,240,0,255,252,0,255,254,0,224,31,0,224,15,0,224, + 7,128,224,3,128,224,3,128,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,3,192,224,3,128,224,3,128,224,7,128,224,15,0,224, + 30,0,255,254,0,255,252,0,255,240,0,17,25,75,22,3, + 0,255,255,0,255,255,0,255,255,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,128,255,255,128,255,255,128,16,25,50,20, + 3,0,255,255,255,255,255,255,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,22,25,75,25,1,0,0,254,0,3,255,128, + 15,255,192,31,131,240,62,0,240,60,0,120,120,0,56,112, + 0,56,240,0,0,224,0,0,224,0,0,224,0,0,224,15, + 252,224,15,252,224,15,252,224,0,28,240,0,28,112,0,28, + 120,0,60,56,0,60,60,0,252,31,1,252,15,255,220,7, + 255,28,1,252,28,18,25,75,24,3,0,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255, + 255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,3,25,25,9,3,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,13,25,50,16,1,0,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,224,56,224,56,224, + 56,224,56,240,120,120,240,127,240,63,224,31,128,20,25,75, + 22,3,0,224,3,192,224,7,128,224,15,0,224,30,0,224, + 60,0,224,120,0,224,240,0,225,224,0,227,192,0,231,192, + 0,239,128,0,255,192,0,255,192,0,249,224,0,240,240,0, + 224,112,0,224,120,0,224,60,0,224,28,0,224,30,0,224, + 15,0,224,7,128,224,3,192,224,3,224,224,1,240,14,25, + 50,18,3,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,21,25,75,27,3,0,240,0,120,240, + 0,120,248,0,248,248,0,248,252,1,248,252,1,248,252,1, + 248,236,1,184,238,3,184,238,3,184,230,3,56,231,7,56, + 231,7,56,227,6,56,227,142,56,227,142,56,227,142,56,225, + 140,56,225,220,56,225,220,56,224,216,56,224,248,56,224,248, + 56,224,112,56,224,112,56,19,25,75,24,2,0,240,0,224, + 240,0,224,248,0,224,252,0,224,252,0,224,254,0,224,239, + 0,224,231,0,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,56,224,224,60,224, + 224,28,224,224,30,224,224,15,224,224,7,224,224,7,224,224, + 3,224,224,1,224,224,1,224,23,25,75,25,1,0,0,254, + 0,3,255,128,15,239,224,31,1,240,62,0,248,60,0,120, + 120,0,60,112,0,28,240,0,30,224,0,14,224,0,14,224, + 0,14,224,0,14,224,0,14,224,0,14,224,0,14,240,0, + 30,240,0,30,120,0,60,60,0,120,62,0,248,31,1,240, + 15,239,224,3,255,128,0,254,0,17,25,75,22,3,0,255, + 248,0,255,254,0,255,255,0,224,15,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,7,128, + 224,15,0,255,255,0,255,254,0,255,248,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,23,26,78,26,1,255, + 0,254,0,3,255,128,15,239,224,31,1,240,62,0,248,60, + 0,120,120,0,60,112,0,28,240,0,30,224,0,14,224,0, + 14,224,0,14,224,0,14,224,0,14,224,0,14,224,0,14, + 240,0,30,240,2,30,120,7,60,60,7,184,62,3,248,31, + 1,240,15,239,248,3,255,188,0,254,30,0,0,12,19,25, + 75,24,3,0,255,252,0,255,255,0,255,255,128,224,7,128, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 3,192,224,3,128,224,15,128,255,255,0,255,254,0,255,255, + 0,224,15,128,224,7,128,224,3,128,224,3,192,224,3,192, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,224,19, + 25,75,22,1,0,3,248,0,15,254,0,31,255,0,60,15, + 128,56,3,192,112,1,192,112,1,192,112,0,0,120,0,0, + 124,0,0,63,192,0,31,248,0,7,255,0,0,127,128,0, + 15,192,0,1,224,0,0,224,224,0,224,240,0,224,112,1, + 224,120,1,192,62,7,192,63,255,128,15,254,0,3,248,0, + 19,25,75,20,0,0,255,255,224,255,255,224,255,255,224,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,18,25,75,24,3,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,25,75,22,1,0,240,1,224,240,1,224,240,1, + 224,112,1,192,120,3,192,120,3,192,56,3,128,56,3,128, + 60,7,128,28,7,0,28,7,0,30,15,0,14,14,0,14, + 14,0,15,14,0,7,28,0,7,28,0,7,156,0,3,184, + 0,3,184,0,3,184,0,1,240,0,1,240,0,0,224,0, + 0,224,0,29,25,100,31,1,0,240,7,0,120,240,7,0, + 120,240,15,128,120,112,15,128,112,112,15,128,112,120,29,192, + 240,120,29,192,240,56,29,192,224,56,29,192,224,56,56,224, + 224,60,56,225,224,28,56,225,192,28,48,225,192,28,112,113, + 192,28,112,113,192,14,112,115,128,14,224,59,128,14,224,59, + 128,14,224,59,128,7,224,63,128,7,192,31,0,7,192,31, + 0,7,192,31,0,3,128,14,0,3,128,14,0,20,25,75, + 22,1,0,248,0,240,120,1,224,60,3,192,28,3,192,30, + 7,128,15,7,0,15,15,0,7,158,0,3,156,0,3,252, + 0,1,248,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,156,0,7,158,0,7,14,0,15,15,0,30,7,128,30, + 7,128,60,3,192,120,1,224,120,1,224,240,0,240,21,25, + 75,22,0,0,240,0,120,120,0,240,120,0,224,60,1,224, + 28,1,192,30,3,192,14,7,128,15,7,128,7,143,0,3, + 142,0,3,222,0,1,220,0,1,252,0,0,248,0,0,248, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,18, + 25,75,20,1,0,127,255,192,127,255,192,127,255,192,0,7, + 128,0,15,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,1,224,0,1,224,0,3,192,0,7, + 128,0,7,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 6,32,32,9,2,249,252,252,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,252,252,9,24,48,9,0,0,192,0,192,0, + 96,0,96,0,96,0,48,0,48,0,48,0,16,0,24,0, + 24,0,24,0,12,0,12,0,12,0,6,0,6,0,6,0, + 2,0,3,0,3,0,3,0,1,128,1,128,6,32,32,9, + 1,249,252,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 252,252,12,13,26,16,1,11,6,0,15,0,15,0,31,128, + 25,128,25,128,57,192,48,192,112,224,96,96,96,96,224,112, + 192,48,18,2,6,18,0,250,255,255,192,255,255,192,6,5, + 5,11,1,20,224,240,112,56,28,16,18,36,18,1,0,15, + 224,63,248,60,120,112,60,112,28,0,28,0,60,1,252,31, + 252,126,28,120,28,240,28,224,28,224,60,224,124,121,254,127, + 223,63,143,15,25,50,18,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,227,224,239,240,255,248,248,60,240, + 28,240,30,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,240,28,252,60,255,248,239,240,231,224,14,18,36,16,1, + 0,7,192,31,240,63,248,56,60,112,28,112,28,224,0,224, + 0,224,0,224,0,224,0,224,28,224,28,112,28,120,56,63, + 248,31,240,7,192,15,25,50,18,1,0,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,7,206,31,238,63,254,124, + 62,112,30,240,30,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,240,30,120,62,127,254,63,238,15,206,15,18,36, + 18,2,0,7,192,31,240,63,248,120,60,112,28,240,14,224, + 14,224,14,255,254,255,254,224,0,224,0,240,14,112,30,120, + 60,63,248,31,240,7,192,8,25,25,9,1,0,15,31,60, + 56,56,56,56,255,255,255,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,15,25,50,18,1,249,7,206,31,238, + 63,254,124,62,112,30,240,30,224,14,224,14,224,14,224,14, + 224,14,224,14,240,30,112,62,120,62,63,254,31,238,7,142, + 0,14,224,14,224,28,240,28,124,120,63,248,31,224,14,25, + 50,18,2,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,227,224,239,240,255,248,248,60,240,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,3,25,25,7,2,0,224,224,224,224, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,6,32,32,7,255,249,28,28,28,28,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,60,252,248,15,25,50,16,1, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 120,224,240,225,224,227,192,231,128,239,0,255,0,255,0,251, + 128,243,192,225,192,225,224,224,224,224,240,224,120,224,56,224, + 60,224,30,3,25,25,7,2,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,23,18,54,27,2,0,227,192,240,239,243,252,255,247, + 252,248,126,30,240,60,14,224,56,14,224,56,14,224,56,14, + 224,56,14,224,56,14,224,56,14,224,56,14,224,56,14,224, + 56,14,224,56,14,224,56,14,224,56,14,224,56,14,14,18, + 36,18,2,0,227,224,239,248,255,248,248,60,240,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,15,18,36,18,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,224,14,240,30,112,28,120,60,63,248,31,240, + 7,192,15,25,50,18,2,249,3,192,239,240,255,248,248,60, + 240,28,240,30,224,14,224,14,224,14,224,14,224,14,224,14, + 240,30,240,28,248,60,255,248,239,240,231,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,15,25,50,18,1,249, + 7,192,31,238,63,254,124,62,112,30,240,30,224,14,224,14, + 224,14,224,14,224,14,224,14,240,30,112,30,120,62,63,254, + 31,238,15,206,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,8,18,18,11,2,0,231,239,255,252,240,240,224,224, + 224,224,224,224,224,224,224,224,224,224,13,18,36,16,2,0, + 15,128,63,224,127,224,112,240,224,112,224,0,112,0,126,0, + 63,192,7,240,0,240,0,120,224,56,224,56,240,112,127,240, + 127,224,31,128,8,22,22,9,1,0,56,56,56,56,255,255, + 255,56,56,56,56,56,56,56,56,56,56,56,56,60,63,31, + 14,18,36,18,2,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,60,240,124,127,252,127,220,31,28,15,18,36,16,0,0, + 224,14,224,14,112,28,112,28,112,28,56,56,56,56,56,56, + 28,112,28,112,28,112,14,224,14,224,14,224,7,192,7,192, + 3,128,3,128,23,18,54,23,0,0,224,56,14,224,56,14, + 112,124,28,112,124,28,112,108,28,56,238,28,56,238,56,56, + 238,56,56,198,56,24,198,48,29,199,112,29,199,112,29,199, + 112,13,131,96,15,131,224,15,131,224,7,1,192,7,1,192, + 15,18,36,16,0,0,240,30,120,28,56,56,60,112,28,112, + 14,224,15,224,7,192,3,128,7,192,7,192,15,224,30,224, + 28,112,56,120,56,56,112,28,240,30,14,25,50,16,1,249, + 224,28,224,28,240,56,112,56,112,56,112,112,56,112,56,112, + 56,224,60,224,28,224,29,192,29,192,15,192,15,128,15,128, + 7,0,7,0,7,0,14,0,14,0,28,0,124,0,120,0, + 112,0,14,18,36,16,1,0,127,248,127,248,127,248,0,120, + 0,240,0,224,1,192,3,192,7,128,7,0,14,0,28,0, + 60,0,120,0,112,0,255,252,255,252,255,252,8,32,32,11, + 1,249,15,31,28,24,24,24,24,24,24,24,24,24,56,56, + 112,224,224,112,56,56,24,24,24,24,24,24,24,24,24,28, + 31,15,2,31,31,9,3,249,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,8,32,32,11,1,249,240,248,56, + 24,24,24,24,24,24,24,24,24,28,28,14,7,7,14,28, + 28,24,24,24,24,24,24,24,24,24,56,248,240,14,6,12, + 19,2,9,24,0,124,12,127,12,199,220,193,248,0,240,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,9,0,1,3,25,25,11,4,249,224,224,224,224, + 0,0,64,64,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,14,25,50,19,2,252,0,32,0,96,0, + 64,7,224,31,240,60,248,120,188,112,156,112,156,225,128,225, + 0,225,0,227,0,227,0,226,12,226,28,118,28,124,60,60, + 120,31,240,15,224,8,0,24,0,16,0,16,0,15,24,48, + 19,1,0,3,192,15,248,31,252,60,60,120,30,112,14,112, + 14,112,0,112,0,56,0,56,0,255,192,255,192,12,0,14, + 0,14,0,12,0,28,0,24,0,56,0,115,134,255,254,255, + 254,96,124,12,13,26,18,3,5,230,48,255,240,127,240,112, + 224,96,96,224,112,224,112,224,112,96,96,112,224,127,240,255, + 240,230,48,16,24,48,18,1,0,224,7,224,7,112,14,112, + 14,56,28,56,28,28,56,28,56,14,112,14,112,7,224,127, + 254,127,254,127,254,1,192,1,192,127,254,127,254,127,254,1, + 192,1,192,1,192,1,192,1,192,2,32,32,9,3,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,15, + 32,64,18,1,249,3,192,15,240,31,248,28,120,56,60,56, + 28,56,28,60,0,30,0,31,128,63,224,113,240,224,248,224, + 124,224,28,224,30,112,14,124,14,62,14,31,28,15,156,3, + 248,1,240,0,240,0,120,112,56,112,56,120,56,56,112,63, + 240,31,224,7,128,8,3,3,11,1,22,231,231,231,24,25, + 75,25,0,0,0,254,0,3,255,128,7,1,224,12,0,112, + 24,0,24,48,126,12,96,255,134,97,193,198,195,128,195,195, + 0,3,199,0,3,134,0,1,134,0,1,134,0,1,134,0, + 1,199,0,3,195,128,195,97,225,198,96,255,134,48,62,12, + 24,0,24,28,0,56,7,1,224,3,255,128,0,254,0,10, + 15,30,12,1,10,63,0,119,128,97,128,1,128,7,128,127, + 128,225,128,193,128,195,128,231,128,125,192,0,0,0,0,255, + 192,255,192,12,9,18,18,3,5,28,112,56,224,113,192,227, + 128,195,0,227,128,113,192,56,224,28,112,16,9,18,19,1, + 3,255,255,255,255,255,255,0,7,0,7,0,7,0,7,0, + 7,0,7,8,2,2,11,1,8,255,255,24,25,75,25,0, + 0,0,126,0,3,255,128,7,1,224,12,0,112,24,0,24, + 48,0,12,97,255,6,97,255,134,193,129,195,193,128,195,193, + 128,195,129,129,129,129,255,1,129,252,1,129,142,1,193,134, + 3,193,131,3,97,129,134,97,129,198,48,0,12,24,0,24, + 28,0,56,7,1,224,3,255,128,0,126,0,9,2,4,11, + 1,22,255,128,255,128,9,9,18,13,2,15,62,0,127,0, + 227,128,193,128,193,128,193,128,227,128,127,0,62,0,17,21, + 63,19,1,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,255,255,128,255,255,128,255, + 255,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,0,0,0,0,0,0,255,255,128,255,255,128, + 255,255,128,9,15,30,11,1,9,30,0,127,0,99,0,193, + 128,193,128,1,128,3,0,7,0,30,0,56,0,112,0,224, + 0,192,0,255,128,255,128,9,15,30,11,1,9,62,0,127, + 0,227,128,193,128,193,128,3,128,15,0,15,0,3,128,1, + 128,193,128,193,128,227,128,127,0,62,0,7,5,5,11,3, + 22,30,60,56,112,224,14,24,48,19,2,250,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,60,240,124,255,252,255,220,255,28, + 224,0,224,0,224,0,224,0,224,0,224,0,16,30,60,17, + 1,251,7,255,31,255,63,140,63,140,127,140,127,140,255,140, + 255,140,255,140,255,140,127,140,127,140,63,140,63,140,31,140, + 3,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140, + 1,140,1,140,1,140,1,140,1,140,1,140,1,140,4,4, + 4,9,3,11,96,240,240,96,7,7,7,11,2,249,24,24, + 60,14,6,206,124,5,15,15,11,2,9,24,56,248,248,24, + 24,24,24,24,24,24,24,24,24,24,10,15,30,12,1,10, + 30,0,127,128,97,128,225,192,192,192,192,192,192,192,192,192, + 225,192,97,128,127,128,30,0,0,0,255,192,255,192,12,9, + 18,18,3,5,227,128,113,192,56,224,28,112,12,48,28,112, + 56,224,113,192,227,128,25,25,100,28,1,0,0,0,48,0, + 24,0,112,0,56,0,96,0,248,0,224,0,248,1,192,0, + 24,1,128,0,24,3,128,0,24,3,0,0,24,7,0,0, + 24,14,0,0,24,12,0,0,24,28,6,0,24,24,14,0, + 24,56,30,0,24,112,62,0,24,96,118,0,0,224,102,0, + 1,192,198,0,1,129,198,0,3,131,134,0,3,3,255,128, + 7,3,255,128,6,0,6,0,14,0,6,0,12,0,6,0, + 25,25,100,28,1,0,0,0,96,0,24,0,224,0,56,0, + 192,0,248,1,128,0,248,3,128,0,24,3,0,0,24,6, + 0,0,24,14,0,0,24,12,0,0,24,28,0,0,24,24, + 0,0,24,56,60,0,24,48,255,0,24,112,195,128,24,97, + 129,128,24,193,129,128,1,192,3,128,1,128,7,0,3,128, + 14,0,3,0,60,0,6,0,112,0,14,0,224,0,12,1, + 192,0,28,1,255,128,24,1,255,128,25,24,96,28,1,0, + 62,0,14,0,127,0,12,0,99,128,24,0,193,128,56,0, + 193,128,48,0,3,128,96,0,15,0,224,0,15,128,192,0, + 1,193,128,0,0,195,128,0,192,195,6,0,192,199,14,0, + 97,206,30,0,127,140,62,0,30,24,118,0,0,56,102,0, + 0,48,198,0,0,97,198,0,0,227,134,0,1,195,255,128, + 1,131,255,128,3,0,6,0,7,0,6,0,6,0,6,0, + 14,25,50,19,3,249,3,128,3,128,3,128,3,128,0,0, + 0,0,3,128,3,128,3,128,7,128,7,0,15,0,30,0, + 60,0,120,0,112,0,240,0,224,28,224,28,224,28,240,60, + 120,120,127,240,63,224,7,128,20,31,93,22,1,0,3,192, + 0,1,224,0,0,224,0,0,112,0,0,56,0,0,0,0, + 0,240,0,0,240,0,0,240,0,1,248,0,1,248,0,3, + 252,0,3,156,0,3,156,0,7,158,0,7,14,0,7,14, + 0,15,15,0,14,15,0,14,7,0,30,7,128,31,255,128, + 31,255,128,63,255,192,60,3,192,56,1,192,120,1,224,120, + 1,224,112,0,224,240,0,240,240,0,240,20,31,93,22,1, + 0,0,60,0,0,120,0,0,112,0,0,224,0,1,192,0, + 0,0,0,0,240,0,0,240,0,0,240,0,1,248,0,1, + 248,0,3,252,0,3,156,0,3,156,0,7,158,0,7,14, + 0,7,14,0,15,15,0,15,15,0,14,7,0,30,7,128, + 31,255,128,31,255,128,63,255,192,60,3,192,120,1,192,120, + 1,224,120,1,224,112,0,224,240,0,240,240,0,240,20,31, + 93,22,1,0,0,64,0,0,224,0,1,240,0,3,184,0, + 7,28,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,30,90,22,1,0,1,198,0,3,254,0,7,252,0, + 6,56,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,30,90,22,1,0,3,156,0,3,156,0,3,156,0, + 0,0,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,31,93,22,1,0,0,240,0,1,152,0,1,8,0, + 1,8,0,1,152,0,0,240,0,0,0,0,0,240,0,0, + 240,0,1,248,0,1,248,0,3,252,0,3,156,0,3,156, + 0,7,158,0,7,14,0,7,14,0,15,15,0,14,15,0, + 14,7,0,30,7,128,31,255,128,31,255,128,63,255,192,60, + 3,192,56,1,192,120,1,224,120,1,224,112,0,224,240,0, + 240,240,0,240,29,25,100,32,1,0,0,127,255,248,0,127, + 255,248,0,255,255,248,0,227,128,0,1,195,128,0,1,195, + 128,0,3,195,128,0,3,131,128,0,3,131,128,0,7,131, + 128,0,7,3,128,0,7,3,255,240,15,3,255,240,14,3, + 255,240,30,3,128,0,31,255,128,0,31,255,128,0,63,255, + 128,0,56,3,128,0,120,3,128,0,120,3,128,0,112,3, + 128,0,240,3,255,248,224,3,255,248,224,3,255,248,20,32, + 96,23,2,249,1,248,0,7,254,0,15,255,128,31,7,128, + 60,3,192,120,1,224,112,0,224,112,0,224,240,0,0,240, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,240,0,112,240,0,112,112,0,240,112,0,224,120,1,224, + 60,3,192,31,7,192,15,255,128,7,254,0,1,248,0,0, + 96,0,0,96,0,0,240,0,0,56,0,0,24,0,3,56, + 0,1,240,0,17,31,93,22,3,0,15,0,0,7,128,0, + 3,128,0,1,192,0,0,224,0,0,0,0,255,255,0,255, + 255,0,255,255,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,0, + 255,255,0,255,255,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255, + 128,255,255,128,255,255,128,17,31,93,22,3,0,0,120,0, + 0,240,0,0,224,0,1,192,0,3,128,0,0,0,0,255, + 255,0,255,255,0,255,255,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 255,255,0,255,255,0,255,255,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,255,255,128,255,255,128,255,255,128,17,31,93,22,3,0, + 0,128,0,1,192,0,3,224,0,7,112,0,14,56,0,0, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,0,255,255,0,255,255,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,255,255,128,255,255,128,255,255,128,17,30,90, + 22,3,0,28,56,0,28,56,0,28,56,0,0,0,0,0, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,0,255,255,0,255,255,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,255,255,128,255,255,128,255,255,128,7,31,31, + 9,0,0,240,120,56,28,14,0,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,7,31,31,9,2,0,30,60,56,112,224,0,112,112, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,9,31,62,9,0,0,8,0,28, + 0,62,0,119,0,227,128,0,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,9,30,60,9,0, + 0,227,128,227,128,227,128,0,0,0,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,21,25,75, + 23,0,0,31,254,0,31,255,128,31,255,192,28,3,224,28, + 0,224,28,0,240,28,0,112,28,0,112,28,0,56,28,0, + 56,28,0,56,255,192,56,255,192,56,28,0,56,28,0,56, + 28,0,56,28,0,120,28,0,112,28,0,112,28,0,240,28, + 0,224,28,3,192,31,255,192,31,255,128,31,254,0,19,30, + 90,24,2,0,1,198,0,3,254,0,7,252,0,6,56,0, + 0,0,0,240,0,224,248,0,224,248,0,224,252,0,224,252, + 0,224,254,0,224,239,0,224,231,0,224,231,128,224,227,192, + 224,227,192,224,225,224,224,224,224,224,224,240,224,224,120,224, + 224,56,224,224,60,224,224,28,224,224,30,224,224,15,224,224, + 7,224,224,7,224,224,3,224,224,1,224,224,1,224,23,31, + 93,25,1,0,0,240,0,0,120,0,0,56,0,0,28,0, + 0,14,0,0,0,0,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,248,60,0,120,120,0,60,112,0,28,112,0, + 28,240,0,30,224,0,14,224,0,14,224,0,14,224,0,14, + 224,0,14,240,0,30,240,0,30,112,0,28,120,0,60,60, + 0,120,62,0,248,31,1,240,15,255,224,3,255,128,0,254, + 0,23,31,93,25,1,0,0,15,0,0,30,0,0,28,0, + 0,56,0,0,112,0,0,0,0,0,254,0,3,255,128,15, + 255,224,31,1,240,62,0,248,60,0,120,120,0,60,112,0, + 28,112,0,28,240,0,30,224,0,14,224,0,14,224,0,14, + 224,0,14,224,0,14,240,0,30,240,0,30,112,0,28,120, + 0,60,60,0,120,62,0,248,31,1,240,15,255,224,3,255, + 128,0,254,0,23,31,93,25,1,0,0,16,0,0,56,0, + 0,124,0,0,238,0,1,199,0,0,0,0,0,254,0,3, + 255,128,15,255,224,31,1,240,62,0,248,60,0,120,120,0, + 60,112,0,28,112,0,28,240,0,30,224,0,14,224,0,14, + 224,0,14,224,0,14,224,0,14,240,0,30,240,0,30,112, + 0,28,120,0,60,60,0,120,62,0,248,31,1,240,15,255, + 224,3,255,128,0,254,0,23,30,90,25,1,0,0,113,128, + 0,255,128,1,255,0,1,142,0,0,0,0,0,254,0,3, + 255,128,15,255,224,31,1,240,62,0,248,60,0,120,120,0, + 60,112,0,28,112,0,28,240,0,30,224,0,14,224,0,14, + 224,0,14,224,0,14,224,0,14,240,0,30,240,0,30,112, + 0,28,120,0,60,60,0,120,62,0,248,31,1,240,15,255, + 224,3,255,128,0,254,0,23,29,87,25,1,0,1,195,128, + 1,195,128,1,195,128,0,0,0,0,254,0,3,255,128,15, + 255,224,31,1,240,62,0,248,60,0,120,120,0,60,112,0, + 28,112,0,28,240,0,30,224,0,14,224,0,14,224,0,14, + 224,0,14,224,0,14,240,0,30,240,0,30,112,0,28,120, + 0,60,60,0,120,62,0,248,31,1,240,15,255,224,3,255, + 128,0,254,0,15,15,30,19,2,1,64,4,224,14,240,30, + 120,60,60,120,31,240,15,224,7,192,7,192,15,224,30,240, + 60,120,120,60,240,30,96,12,23,25,75,25,1,0,0,254, + 6,3,255,140,15,255,248,31,1,240,62,0,248,60,0,248, + 120,1,188,112,3,28,112,6,28,240,6,30,224,12,14,224, + 24,14,224,48,14,224,96,14,224,192,14,225,128,30,243,0, + 30,118,0,28,124,0,60,60,0,120,62,0,248,63,1,240, + 111,255,224,195,255,128,0,254,0,18,31,93,24,3,0,7, + 128,0,3,192,0,1,192,0,0,224,0,0,112,0,0,0, + 0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,240,3,192,120,7,128, + 124,15,128,63,255,0,31,254,0,3,240,0,18,31,93,24, + 3,0,0,120,0,0,240,0,0,224,0,1,192,0,3,128, + 0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,240,3,192, + 120,7,128,124,15,128,63,255,0,31,254,0,3,240,0,18, + 31,93,24,3,0,0,64,0,0,224,0,1,240,0,3,184, + 0,7,28,0,0,0,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,18,30,90,24,3,0,14,28,0,14,28,0,14,28, + 0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,31,93,22,1,0,0,60,0,0,120,0,0,112, + 0,0,224,0,1,192,0,0,0,0,224,0,224,240,1,224, + 112,1,192,120,3,192,56,3,128,60,7,128,28,15,0,30, + 15,0,15,30,0,7,28,0,7,188,0,3,184,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,17,25,75,22,3,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,255,248,0,255,254,0, + 255,255,0,224,15,0,224,7,0,224,7,128,224,3,128,224, + 3,128,224,7,128,224,7,0,224,15,0,255,254,0,255,252, + 0,255,248,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,14,25,50,20,4,0,15,128,63,224, + 127,240,120,240,240,120,224,56,224,56,224,56,224,120,224,240, + 227,224,227,224,227,240,224,120,224,60,224,28,224,28,224,28, + 224,28,224,28,224,56,224,120,231,240,231,224,231,128,16,25, + 50,18,1,0,15,0,7,128,3,128,1,192,0,224,0,0, + 0,0,15,224,63,248,60,124,112,28,112,28,0,28,0,28, + 0,252,31,252,127,156,120,28,240,28,224,28,224,60,224,124, + 121,252,127,223,63,143,16,25,50,18,1,0,0,240,1,224, + 1,192,3,128,7,0,0,0,0,0,15,224,63,248,60,124, + 112,28,112,28,0,28,0,28,0,252,31,252,127,156,120,28, + 240,28,224,28,224,60,224,124,120,252,127,223,63,143,16,25, + 50,18,1,0,1,0,3,128,7,192,14,224,28,112,0,0, + 0,0,15,224,63,248,60,124,112,28,112,28,0,28,0,28, + 0,252,31,252,127,156,120,28,240,28,224,28,224,60,224,124, + 120,252,127,223,63,143,16,24,48,18,1,0,7,24,15,248, + 31,240,24,224,0,0,0,0,15,224,63,248,60,124,112,28, + 112,28,0,28,0,28,0,252,31,252,127,156,120,28,240,28, + 224,28,224,60,224,124,120,252,127,223,63,143,16,23,46,18, + 1,0,14,112,14,112,14,112,0,0,0,0,15,224,63,248, + 60,252,112,28,112,28,0,28,0,28,0,252,31,252,127,156, + 120,28,240,28,224,28,224,60,224,124,121,252,127,223,63,143, + 16,25,50,18,1,0,3,128,6,192,4,64,4,64,6,192, + 3,128,0,0,15,224,63,248,60,124,112,28,112,28,0,28, + 0,28,0,252,31,252,127,156,120,28,240,28,224,28,224,60, + 224,124,120,252,127,223,63,143,26,18,72,29,1,0,7,192, + 248,0,31,241,254,0,60,127,143,0,112,62,3,128,112,30, + 3,128,0,28,1,192,0,28,1,192,0,252,1,192,15,255, + 255,192,63,255,255,192,126,31,255,192,240,28,0,0,224,28, + 1,192,224,30,1,192,224,126,3,128,248,247,143,0,127,231, + 255,0,63,129,252,0,14,25,50,17,1,249,7,192,31,240, + 63,248,56,56,112,28,112,28,224,0,224,0,224,0,224,0, + 224,0,224,28,224,28,112,56,120,120,63,240,31,224,7,128, + 3,0,3,0,7,128,1,192,0,192,25,192,15,128,15,25, + 50,18,1,0,30,0,15,0,7,0,3,128,1,192,0,0, + 0,0,7,192,31,240,62,120,120,28,112,28,240,14,224,14, + 224,14,255,254,255,254,224,0,224,0,224,14,112,14,120,28, + 60,124,31,240,15,224,15,25,50,18,1,0,1,224,3,192, + 3,128,7,0,14,0,0,0,0,0,7,192,31,240,60,120, + 120,28,112,28,240,14,224,14,224,14,255,254,255,254,224,0, + 224,0,224,14,112,14,120,28,60,124,31,240,15,224,15,25, + 50,18,1,0,1,0,3,128,7,192,14,224,28,112,0,0, + 0,0,7,192,31,240,60,120,120,28,112,28,240,14,224,14, + 224,14,255,254,255,254,224,0,224,0,224,14,112,14,120,28, + 60,124,31,240,7,192,15,23,46,18,1,0,28,112,28,112, + 28,112,0,0,0,0,7,192,31,240,60,120,120,28,112,28, + 240,14,224,14,224,14,255,254,255,254,224,0,224,0,224,14, + 112,14,120,28,60,124,31,240,7,192,7,25,25,9,0,0, + 240,120,56,28,14,0,0,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,7,25,25,9,2,0,30, + 60,56,112,224,0,0,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,112,9,25,50,9,0,0,8,0, + 28,0,62,0,119,0,227,128,0,0,0,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 8,23,23,9,1,0,231,231,231,0,0,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,15,25,50, + 19,1,0,120,64,60,224,31,192,15,128,31,128,59,192,17, + 224,7,240,31,248,63,248,120,60,112,28,112,28,224,14,224, + 14,224,14,224,14,224,14,224,14,112,28,112,28,120,60,63, + 248,31,240,7,192,14,24,48,18,2,0,14,48,31,240,63, + 224,49,192,0,0,0,0,3,192,239,240,255,248,248,60,240, + 28,240,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,15,25,50,19,1, + 0,30,0,15,0,7,0,3,128,1,192,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,112,28,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,112,28,120,60,63,248,31, + 240,7,192,15,25,50,19,1,0,1,224,3,192,3,128,7, + 0,14,0,0,0,0,0,7,192,31,240,63,248,120,60,112, + 28,112,28,224,14,224,14,224,14,224,14,224,14,224,14,112, + 28,112,28,120,60,63,248,31,240,7,192,15,25,50,19,1, + 0,1,0,3,128,7,192,14,224,28,112,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,112,28,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,112,28,120,60,63,248,31, + 240,7,192,15,24,48,19,1,0,14,48,31,240,63,224,49, + 192,0,0,0,0,7,192,31,240,63,248,120,60,112,28,112, + 28,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,120,60,63,248,31,240,7,192,15,23,46,19,1,0,28, + 112,28,112,28,112,0,0,0,0,7,192,31,240,63,248,120, + 60,112,28,112,28,224,14,224,14,224,14,224,14,224,14,224, + 14,112,28,112,28,120,60,63,248,31,240,7,192,15,15,30, + 19,2,1,3,128,3,128,3,128,0,0,0,0,0,0,255, + 254,255,254,255,254,0,0,0,0,0,0,3,128,3,128,3, + 128,16,18,36,19,2,0,7,195,31,246,63,252,120,120,112, + 28,112,60,224,110,224,206,225,142,227,14,230,14,236,14,120, + 28,112,28,56,60,127,248,223,240,135,192,14,25,50,19,2, + 0,30,0,15,0,7,0,3,128,1,192,0,0,0,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,60,224,60,240,252,127,252,63, + 220,15,0,14,25,50,19,2,0,1,224,3,192,3,128,7, + 0,14,0,0,0,0,0,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 60,224,60,240,252,127,252,63,220,15,0,14,25,50,19,2, + 0,1,0,3,128,7,192,14,224,28,112,0,0,0,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,60,224,60,240,252,127,252,63, + 220,15,0,14,23,46,19,2,0,28,224,28,224,28,224,0, + 0,0,0,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,224,60,224,60,240, + 252,127,252,63,220,15,0,14,32,64,17,1,249,0,240,1, + 224,1,192,3,128,7,0,0,0,0,0,224,28,224,28,224, + 60,112,56,112,56,112,56,120,112,56,112,56,240,60,224,28, + 224,29,192,29,192,15,192,15,128,15,128,7,0,7,0,7, + 0,14,0,14,0,30,0,124,0,124,0,112,0,15,31,62, + 19,2,250,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,231,224,239,240,255,248,248,60,240,28,240,30,224,14,224, + 14,224,14,224,14,224,14,224,14,240,28,240,28,248,60,255, + 248,239,240,227,192,224,0,224,0,224,0,224,0,224,0,224, + 0,14,30,60,17,1,249,28,112,28,112,28,112,0,0,0, + 0,224,28,224,28,224,60,112,56,112,56,112,120,120,112,56, + 112,56,240,60,224,28,224,29,192,29,192,15,192,15,128,15, + 128,7,0,7,0,7,0,14,0,14,0,30,0,124,0,124, + 0,112,0}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=24 x= 3 y=15 dx=19 dy= 0 ascent=26 len=48 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =26 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24n[702] U8G_SECTION(".progmem.u8g_font_helvR24n") = { + 0,39,48,251,245,24,0,0,0,0,42,57,0,26,251,24, + 0,10,11,22,13,1,15,12,0,12,0,76,128,237,192,127, + 128,63,0,30,0,63,0,115,128,225,192,64,128,17,16,48, + 19,1,1,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,255,255,128,255,255,128,255,255, + 128,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,3,9,9,9,3,251,224,224,224,224,32,96,96, + 192,128,8,2,2,11,1,8,255,255,3,4,4,9,3,0, + 224,224,224,224,9,24,48,9,0,0,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,8,0,24,0,24,0,24,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,15,24,48,18,1,0, + 7,192,31,240,63,248,60,120,120,60,112,28,112,28,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,112,28,112,28,112,60,60,120,63,248,31,240,7,192, + 8,24,24,18,3,0,3,7,7,15,63,255,255,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,24, + 48,18,1,0,7,192,31,240,63,248,120,60,112,28,240,14, + 224,14,224,14,0,14,0,28,0,60,0,120,0,240,3,224, + 7,192,31,0,60,0,120,0,112,0,224,0,224,0,255,254, + 255,254,255,254,15,24,48,18,1,0,7,192,31,240,63,248, + 56,56,112,28,112,28,112,28,112,28,0,28,0,56,3,248, + 3,240,3,248,0,60,0,30,0,14,224,14,224,14,224,14, + 112,28,120,60,63,248,31,240,7,192,16,24,48,18,0,0, + 0,24,0,56,0,120,0,120,0,248,1,248,3,184,3,184, + 7,56,14,56,14,56,28,56,56,56,56,56,112,56,224,56, + 255,255,255,255,255,255,0,56,0,56,0,56,0,56,0,56, + 15,24,48,18,1,0,63,252,63,252,63,252,56,0,56,0, + 56,0,112,0,112,0,119,192,127,240,127,248,120,124,112,28, + 0,30,0,14,0,14,0,14,224,14,224,30,240,28,120,124, + 127,248,63,240,15,128,15,24,48,18,1,0,3,192,15,240, + 31,248,60,56,56,28,112,28,112,0,112,0,96,0,227,192, + 239,240,255,248,248,60,240,28,240,14,224,14,224,14,96,14, + 112,14,112,28,56,60,63,248,31,240,7,192,15,24,48,18, + 1,0,255,254,255,254,255,254,0,14,0,28,0,24,0,56, + 0,112,0,112,0,224,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,7,0,14,0,14,0,14,0,28,0,28,0, + 28,0,15,24,48,18,1,0,7,192,31,240,63,248,56,60, + 112,28,112,28,112,28,112,28,120,60,60,120,31,240,15,224, + 63,248,120,60,112,28,224,14,224,14,224,14,224,14,240,28, + 120,60,63,248,31,240,7,192,15,24,48,18,1,0,7,192, + 31,240,63,248,120,124,112,60,240,28,224,30,224,14,224,14, + 224,14,224,30,224,30,112,62,127,254,63,238,15,206,0,14, + 0,28,224,28,240,60,120,120,63,240,63,224,15,128}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=29 h=32 x= 4 y=20 dx=34 dy= 0 ascent=27 len=120 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24r[4992] U8G_SECTION(".progmem.u8g_font_helvR24r") = { + 0,39,48,251,245,25,5,215,14,105,32,127,249,27,249,25, + 249,0,0,0,9,0,1,3,25,25,9,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,64,64, + 0,0,224,224,224,224,8,8,8,12,2,15,231,231,231,231, + 231,231,66,66,17,23,69,19,1,0,3,135,0,3,135,0, + 3,6,0,3,6,0,7,14,0,7,14,0,127,255,128,127, + 255,128,127,255,128,14,28,0,14,28,0,12,24,0,28,56, + 0,28,56,0,255,255,0,255,255,0,255,255,0,56,112,0, + 56,112,0,48,96,0,48,96,0,112,224,0,112,224,0,16, + 31,62,18,1,252,1,128,1,128,1,128,15,240,31,248,61, + 188,113,142,113,142,225,142,225,128,225,128,113,128,125,128,63, + 192,31,240,7,252,1,254,1,158,1,143,1,135,225,135,225, + 135,113,142,113,142,61,188,63,248,15,240,1,128,1,128,1, + 128,1,128,26,24,96,29,1,0,0,0,48,0,31,0,112, + 0,127,128,96,0,115,192,224,0,224,192,192,0,192,225,192, + 0,192,225,128,0,192,227,128,0,224,195,0,0,115,199,0, + 0,127,134,0,0,31,14,0,0,0,12,0,0,0,28,62, + 0,0,24,127,128,0,56,243,128,0,48,193,192,0,113,192, + 192,0,97,192,192,0,225,192,192,0,192,193,192,1,192,227, + 128,1,128,127,128,3,128,62,0,18,23,69,22,2,0,7, + 192,0,15,224,0,30,112,0,60,56,0,56,56,0,56,56, + 0,60,112,0,30,240,0,15,224,0,7,192,0,15,128,0, + 63,192,0,121,199,0,112,231,0,224,246,0,224,126,0,224, + 60,0,224,28,0,240,62,0,120,127,0,127,247,128,63,227, + 192,15,0,0,3,8,8,6,2,15,224,224,224,224,224,224, + 224,64,7,31,31,11,2,249,6,12,12,24,24,56,48,112, + 112,112,96,224,224,224,224,224,224,224,224,224,96,112,112,112, + 48,56,24,24,12,12,6,7,31,31,11,1,249,192,96,96, + 48,48,56,24,28,28,28,12,14,14,14,14,14,14,14,14, + 12,12,28,28,24,24,56,48,112,96,96,192,10,11,22,13, + 1,15,12,0,12,0,76,128,237,192,127,128,63,0,30,0, + 63,0,115,128,225,192,64,128,17,16,48,19,1,1,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,3,9, + 9,9,3,251,224,224,224,224,32,96,96,192,128,8,2,2, + 11,1,8,255,255,3,4,4,9,3,0,224,224,224,224,9, + 24,48,9,0,0,1,128,1,128,1,128,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,8,0,24, + 0,24,0,24,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,15,24,48,18,1,0,7,192,31,240,63, + 248,60,120,120,60,112,28,112,28,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,112,60,60,120,63,248,31,240,7,192,8,24,24,18,3, + 0,3,7,7,15,63,255,255,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,15,24,48,18,1,0,7, + 192,31,240,63,248,120,60,112,28,240,14,224,14,224,14,0, + 14,0,28,0,60,0,120,0,240,3,224,7,192,31,0,60, + 0,120,0,112,0,224,0,224,0,255,254,255,254,255,254,15, + 24,48,18,1,0,7,192,31,240,63,248,56,56,112,28,112, + 28,112,28,112,28,0,28,0,56,3,248,3,240,3,248,0, + 60,0,30,0,14,224,14,224,14,224,14,112,28,120,60,63, + 248,31,240,7,192,16,24,48,18,0,0,0,24,0,56,0, + 120,0,120,0,248,1,248,3,184,3,184,7,56,14,56,14, + 56,28,56,56,56,56,56,112,56,224,56,255,255,255,255,255, + 255,0,56,0,56,0,56,0,56,0,56,15,24,48,18,1, + 0,63,252,63,252,63,252,56,0,56,0,56,0,112,0,112, + 0,119,192,127,240,127,248,120,124,112,28,0,30,0,14,0, + 14,0,14,224,14,224,30,240,28,120,124,127,248,63,240,15, + 128,15,24,48,18,1,0,3,192,15,240,31,248,60,56,56, + 28,112,28,112,0,112,0,96,0,227,192,239,240,255,248,248, + 60,240,28,240,14,224,14,224,14,96,14,112,14,112,28,56, + 60,63,248,31,240,7,192,15,24,48,18,1,0,255,254,255, + 254,255,254,0,14,0,28,0,24,0,56,0,112,0,112,0, + 224,0,224,1,192,1,192,3,128,3,128,7,0,7,0,7, + 0,14,0,14,0,14,0,28,0,28,0,28,0,15,24,48, + 18,1,0,7,192,31,240,63,248,56,60,112,28,112,28,112, + 28,112,28,120,60,60,120,31,240,15,224,63,248,120,60,112, + 28,224,14,224,14,224,14,224,14,240,28,120,60,63,248,31, + 240,7,192,15,24,48,18,1,0,7,192,31,240,63,248,120, + 124,112,60,240,28,224,30,224,14,224,14,224,14,224,30,224, + 30,112,62,127,254,63,238,15,206,0,14,0,28,224,28,240, + 60,120,120,63,240,63,224,15,128,3,18,18,9,4,0,224, + 224,224,224,0,0,0,0,0,0,0,0,0,0,224,224,224, + 224,3,22,22,9,4,251,224,224,224,224,0,0,0,0,0, + 0,0,0,0,224,224,224,224,32,96,96,192,128,16,16,32, + 19,2,0,0,3,0,15,0,63,1,252,7,224,31,128,254, + 0,240,0,240,0,254,0,31,128,7,224,1,252,0,127,0, + 15,0,3,15,9,18,19,2,4,255,254,255,254,255,254,0, + 0,0,0,0,0,255,254,255,254,255,254,16,16,32,19,1, + 0,192,0,240,0,254,0,63,128,7,224,1,248,0,127,0, + 15,0,15,0,127,1,248,7,224,63,128,254,0,240,0,192, + 0,14,25,50,18,2,0,7,192,31,240,63,248,120,56,112, + 28,240,28,224,28,224,28,0,28,0,56,0,56,0,112,0, + 224,1,224,1,192,3,128,3,128,3,128,3,128,0,0,0, + 0,3,128,3,128,3,128,3,128,29,30,120,34,1,251,0, + 7,192,0,0,63,248,0,0,255,254,0,3,240,63,128,7, + 192,7,192,15,0,3,224,30,0,1,224,28,0,0,240,56, + 15,140,112,56,31,220,56,112,60,252,56,112,112,124,56,96, + 224,56,24,224,224,56,24,225,224,56,24,225,192,112,56,225, + 192,112,56,225,192,112,112,225,192,224,112,225,224,224,224,112, + 243,243,192,112,255,127,128,120,62,127,0,60,0,0,0,30, + 0,0,0,31,0,0,0,15,128,0,0,3,224,120,0,1, + 255,248,0,0,127,224,0,20,25,75,22,1,0,0,240,0, + 0,240,0,0,248,0,1,248,0,1,248,0,3,156,0,3, + 156,0,3,156,0,7,158,0,7,14,0,7,14,0,15,15, + 0,15,15,0,14,7,0,30,7,128,31,255,128,31,255,128, + 63,255,192,60,3,192,56,1,192,120,1,224,120,1,224,112, + 0,224,240,0,240,240,0,240,17,25,75,22,3,0,255,240, + 0,255,252,0,255,254,0,224,62,0,224,15,0,224,15,0, + 224,7,0,224,7,0,224,15,0,224,14,0,224,62,0,255, + 252,0,255,252,0,255,254,0,224,31,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,7,128,224,15,0, + 255,254,0,255,254,0,255,248,0,20,25,75,24,2,0,1, + 252,0,7,255,0,15,255,128,31,7,192,60,1,224,56,0, + 224,112,0,240,112,0,112,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,112,240,0,112,112,0,240,120,0,224,60,1,224,63,7, + 192,31,255,128,7,254,0,1,248,0,18,25,75,24,3,0, + 255,240,0,255,252,0,255,254,0,224,31,0,224,15,0,224, + 7,128,224,3,128,224,3,128,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,3,192,224,3,128,224,3,128,224,7,128,224,15,0,224, + 30,0,255,254,0,255,252,0,255,240,0,17,25,75,22,3, + 0,255,255,0,255,255,0,255,255,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,128,255,255,128,255,255,128,16,25,50,20, + 3,0,255,255,255,255,255,255,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,22,25,75,25,1,0,0,254,0,3,255,128, + 15,255,192,31,131,240,62,0,240,60,0,120,120,0,56,112, + 0,56,240,0,0,224,0,0,224,0,0,224,0,0,224,15, + 252,224,15,252,224,15,252,224,0,28,240,0,28,112,0,28, + 120,0,60,56,0,60,60,0,252,31,1,252,15,255,220,7, + 255,28,1,252,28,18,25,75,24,3,0,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255, + 255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,3,25,25,9,3,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,13,25,50,16,1,0,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,224,56,224,56,224, + 56,224,56,240,120,120,240,127,240,63,224,31,128,20,25,75, + 22,3,0,224,3,192,224,7,128,224,15,0,224,30,0,224, + 60,0,224,120,0,224,240,0,225,224,0,227,192,0,231,192, + 0,239,128,0,255,192,0,255,192,0,249,224,0,240,240,0, + 224,112,0,224,120,0,224,60,0,224,28,0,224,30,0,224, + 15,0,224,7,128,224,3,192,224,3,224,224,1,240,14,25, + 50,18,3,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,21,25,75,27,3,0,240,0,120,240, + 0,120,248,0,248,248,0,248,252,1,248,252,1,248,252,1, + 248,236,1,184,238,3,184,238,3,184,230,3,56,231,7,56, + 231,7,56,227,6,56,227,142,56,227,142,56,227,142,56,225, + 140,56,225,220,56,225,220,56,224,216,56,224,248,56,224,248, + 56,224,112,56,224,112,56,19,25,75,24,2,0,240,0,224, + 240,0,224,248,0,224,252,0,224,252,0,224,254,0,224,239, + 0,224,231,0,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,56,224,224,60,224, + 224,28,224,224,30,224,224,15,224,224,7,224,224,7,224,224, + 3,224,224,1,224,224,1,224,23,25,75,25,1,0,0,254, + 0,3,255,128,15,239,224,31,1,240,62,0,248,60,0,120, + 120,0,60,112,0,28,240,0,30,224,0,14,224,0,14,224, + 0,14,224,0,14,224,0,14,224,0,14,224,0,14,240,0, + 30,240,0,30,120,0,60,60,0,120,62,0,248,31,1,240, + 15,239,224,3,255,128,0,254,0,17,25,75,22,3,0,255, + 248,0,255,254,0,255,255,0,224,15,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,7,128, + 224,15,0,255,255,0,255,254,0,255,248,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,23,26,78,26,1,255, + 0,254,0,3,255,128,15,239,224,31,1,240,62,0,248,60, + 0,120,120,0,60,112,0,28,240,0,30,224,0,14,224,0, + 14,224,0,14,224,0,14,224,0,14,224,0,14,224,0,14, + 240,0,30,240,2,30,120,7,60,60,7,184,62,3,248,31, + 1,240,15,239,248,3,255,188,0,254,30,0,0,12,19,25, + 75,24,3,0,255,252,0,255,255,0,255,255,128,224,7,128, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 3,192,224,3,128,224,15,128,255,255,0,255,254,0,255,255, + 0,224,15,128,224,7,128,224,3,128,224,3,192,224,3,192, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,224,19, + 25,75,22,1,0,3,248,0,15,254,0,31,255,0,60,15, + 128,56,3,192,112,1,192,112,1,192,112,0,0,120,0,0, + 124,0,0,63,192,0,31,248,0,7,255,0,0,127,128,0, + 15,192,0,1,224,0,0,224,224,0,224,240,0,224,112,1, + 224,120,1,192,62,7,192,63,255,128,15,254,0,3,248,0, + 19,25,75,20,0,0,255,255,224,255,255,224,255,255,224,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,18,25,75,24,3,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,25,75,22,1,0,240,1,224,240,1,224,240,1, + 224,112,1,192,120,3,192,120,3,192,56,3,128,56,3,128, + 60,7,128,28,7,0,28,7,0,30,15,0,14,14,0,14, + 14,0,15,14,0,7,28,0,7,28,0,7,156,0,3,184, + 0,3,184,0,3,184,0,1,240,0,1,240,0,0,224,0, + 0,224,0,29,25,100,31,1,0,240,7,0,120,240,7,0, + 120,240,15,128,120,112,15,128,112,112,15,128,112,120,29,192, + 240,120,29,192,240,56,29,192,224,56,29,192,224,56,56,224, + 224,60,56,225,224,28,56,225,192,28,48,225,192,28,112,113, + 192,28,112,113,192,14,112,115,128,14,224,59,128,14,224,59, + 128,14,224,59,128,7,224,63,128,7,192,31,0,7,192,31, + 0,7,192,31,0,3,128,14,0,3,128,14,0,20,25,75, + 22,1,0,248,0,240,120,1,224,60,3,192,28,3,192,30, + 7,128,15,7,0,15,15,0,7,158,0,3,156,0,3,252, + 0,1,248,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,156,0,7,158,0,7,14,0,15,15,0,30,7,128,30, + 7,128,60,3,192,120,1,224,120,1,224,240,0,240,21,25, + 75,22,0,0,240,0,120,120,0,240,120,0,224,60,1,224, + 28,1,192,30,3,192,14,7,128,15,7,128,7,143,0,3, + 142,0,3,222,0,1,220,0,1,252,0,0,248,0,0,248, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,18, + 25,75,20,1,0,127,255,192,127,255,192,127,255,192,0,7, + 128,0,15,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,1,224,0,1,224,0,3,192,0,7, + 128,0,7,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 6,32,32,9,2,249,252,252,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,252,252,9,24,48,9,0,0,192,0,192,0, + 96,0,96,0,96,0,48,0,48,0,48,0,16,0,24,0, + 24,0,24,0,12,0,12,0,12,0,6,0,6,0,6,0, + 2,0,3,0,3,0,3,0,1,128,1,128,6,32,32,9, + 1,249,252,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 252,252,12,13,26,16,1,11,6,0,15,0,15,0,31,128, + 25,128,25,128,57,192,48,192,112,224,96,96,96,96,224,112, + 192,48,18,2,6,18,0,250,255,255,192,255,255,192,6,5, + 5,11,1,20,224,240,112,56,28,16,18,36,18,1,0,15, + 224,63,248,60,120,112,60,112,28,0,28,0,60,1,252,31, + 252,126,28,120,28,240,28,224,28,224,60,224,124,121,254,127, + 223,63,143,15,25,50,18,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,227,224,239,240,255,248,248,60,240, + 28,240,30,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,240,28,252,60,255,248,239,240,231,224,14,18,36,16,1, + 0,7,192,31,240,63,248,56,60,112,28,112,28,224,0,224, + 0,224,0,224,0,224,0,224,28,224,28,112,28,120,56,63, + 248,31,240,7,192,15,25,50,18,1,0,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,7,206,31,238,63,254,124, + 62,112,30,240,30,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,240,30,120,62,127,254,63,238,15,206,15,18,36, + 18,2,0,7,192,31,240,63,248,120,60,112,28,240,14,224, + 14,224,14,255,254,255,254,224,0,224,0,240,14,112,30,120, + 60,63,248,31,240,7,192,8,25,25,9,1,0,15,31,60, + 56,56,56,56,255,255,255,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,15,25,50,18,1,249,7,206,31,238, + 63,254,124,62,112,30,240,30,224,14,224,14,224,14,224,14, + 224,14,224,14,240,30,112,62,120,62,63,254,31,238,7,142, + 0,14,224,14,224,28,240,28,124,120,63,248,31,224,14,25, + 50,18,2,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,227,224,239,240,255,248,248,60,240,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,3,25,25,7,2,0,224,224,224,224, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,6,32,32,7,255,249,28,28,28,28,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,60,252,248,15,25,50,16,1, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 120,224,240,225,224,227,192,231,128,239,0,255,0,255,0,251, + 128,243,192,225,192,225,224,224,224,224,240,224,120,224,56,224, + 60,224,30,3,25,25,7,2,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,23,18,54,27,2,0,227,192,240,239,243,252,255,247, + 252,248,126,30,240,60,14,224,56,14,224,56,14,224,56,14, + 224,56,14,224,56,14,224,56,14,224,56,14,224,56,14,224, + 56,14,224,56,14,224,56,14,224,56,14,224,56,14,14,18, + 36,18,2,0,227,224,239,248,255,248,248,60,240,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,15,18,36,18,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,224,14,240,30,112,28,120,60,63,248,31,240, + 7,192,15,25,50,18,2,249,3,192,239,240,255,248,248,60, + 240,28,240,30,224,14,224,14,224,14,224,14,224,14,224,14, + 240,30,240,28,248,60,255,248,239,240,231,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,15,25,50,18,1,249, + 7,192,31,238,63,254,124,62,112,30,240,30,224,14,224,14, + 224,14,224,14,224,14,224,14,240,30,112,30,120,62,63,254, + 31,238,15,206,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,8,18,18,11,2,0,231,239,255,252,240,240,224,224, + 224,224,224,224,224,224,224,224,224,224,13,18,36,16,2,0, + 15,128,63,224,127,224,112,240,224,112,224,0,112,0,126,0, + 63,192,7,240,0,240,0,120,224,56,224,56,240,112,127,240, + 127,224,31,128,8,22,22,9,1,0,56,56,56,56,255,255, + 255,56,56,56,56,56,56,56,56,56,56,56,56,60,63,31, + 14,18,36,18,2,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,60,240,124,127,252,127,220,31,28,15,18,36,16,0,0, + 224,14,224,14,112,28,112,28,112,28,56,56,56,56,56,56, + 28,112,28,112,28,112,14,224,14,224,14,224,7,192,7,192, + 3,128,3,128,23,18,54,23,0,0,224,56,14,224,56,14, + 112,124,28,112,124,28,112,108,28,56,238,28,56,238,56,56, + 238,56,56,198,56,24,198,48,29,199,112,29,199,112,29,199, + 112,13,131,96,15,131,224,15,131,224,7,1,192,7,1,192, + 15,18,36,16,0,0,240,30,120,28,56,56,60,112,28,112, + 14,224,15,224,7,192,3,128,7,192,7,192,15,224,30,224, + 28,112,56,120,56,56,112,28,240,30,14,25,50,16,1,249, + 224,28,224,28,240,56,112,56,112,56,112,112,56,112,56,112, + 56,224,60,224,28,224,29,192,29,192,15,192,15,128,15,128, + 7,0,7,0,7,0,14,0,14,0,28,0,124,0,120,0, + 112,0,14,18,36,16,1,0,127,248,127,248,127,248,0,120, + 0,240,0,224,1,192,3,192,7,128,7,0,14,0,28,0, + 60,0,120,0,112,0,255,252,255,252,255,252,8,32,32,11, + 1,249,15,31,28,24,24,24,24,24,24,24,24,24,56,56, + 112,224,224,112,56,56,24,24,24,24,24,24,24,24,24,28, + 31,15,2,31,31,9,3,249,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,8,32,32,11,1,249,240,248,56, + 24,24,24,24,24,24,24,24,24,28,28,14,7,7,14,28, + 28,24,24,24,24,24,24,24,24,24,56,248,240,14,6,12, + 19,2,9,24,0,124,12,127,12,199,220,193,248,0,240,255 + }; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 9 h=10 x= 1 y= 4 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent =10 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[2193] U8G_SECTION(".progmem.u8g_font_lucasfont_alternate") = { + 0,9,11,0,255,7,1,148,3,22,32,255,255,10,255,7, + 255,0,0,0,4,0,0,1,7,7,2,0,0,128,128,128, + 128,0,0,128,3,3,3,4,0,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,7,7,6,0,0, + 32,120,128,248,8,240,32,7,7,7,8,0,0,2,68,8, + 16,32,68,128,6,7,7,7,0,0,96,144,144,96,148,136, + 116,1,3,3,2,0,4,128,128,128,3,7,7,4,0,0, + 32,64,128,128,128,64,32,3,7,7,4,0,0,128,64,32, + 32,32,64,128,7,5,5,8,0,1,68,40,254,40,68,5, + 5,5,6,0,1,32,32,248,32,32,2,3,3,3,0,255, + 64,64,128,6,1,1,7,0,3,252,1,2,2,2,0,0, + 128,128,7,7,7,8,0,0,2,4,8,16,32,64,128,5, + 7,7,6,0,0,112,136,136,136,136,136,112,5,7,7,6, + 0,0,32,96,32,32,32,32,248,5,7,7,6,0,0,112, + 136,8,16,32,64,248,5,7,7,6,0,0,240,8,8,120, + 8,8,240,5,7,7,6,0,0,16,48,80,144,248,16,16, + 5,7,7,6,0,0,248,128,112,8,8,136,112,5,7,7, + 6,0,0,112,136,128,240,136,136,112,5,7,7,6,0,0, + 248,8,16,32,32,32,32,5,7,7,6,0,0,112,136,136, + 112,136,136,112,5,7,7,6,0,0,112,136,136,120,8,136, + 112,1,4,4,2,0,1,128,0,0,128,2,6,6,3,0, + 255,64,0,0,64,64,128,4,7,7,5,0,0,16,32,64, + 128,64,32,16,5,3,3,6,0,2,248,0,248,4,7,7, + 5,0,0,128,64,32,16,32,64,128,5,7,7,6,0,0, + 112,136,8,16,32,0,32,7,7,7,8,0,0,124,130,154, + 170,190,128,124,5,7,7,6,0,0,112,136,136,248,136,136, + 136,5,7,7,6,0,0,240,136,136,240,136,136,240,5,7, + 7,6,0,0,120,128,128,128,128,128,120,5,7,7,6,0, + 0,240,136,136,136,136,136,240,5,7,7,6,0,0,248,128, + 128,240,128,128,248,5,7,7,6,0,0,248,128,128,240,128, + 128,128,5,7,7,6,0,0,112,136,128,184,136,136,112,5, + 7,7,6,0,0,136,136,136,248,136,136,136,1,7,7,2, + 0,0,128,128,128,128,128,128,128,5,7,7,6,0,0,8, + 8,8,8,8,136,112,5,7,7,6,0,0,136,144,160,192, + 160,144,136,5,7,7,6,0,0,128,128,128,128,128,128,248, + 7,7,7,8,0,0,130,198,170,146,130,130,130,6,7,7, + 7,0,0,132,196,164,148,140,132,132,5,7,7,6,0,0, + 112,136,136,136,136,136,112,5,7,7,6,0,0,240,136,136, + 240,128,128,128,5,7,7,6,0,0,112,136,136,136,168,144, + 104,5,7,7,6,0,0,240,136,136,240,160,144,136,5,7, + 7,6,0,0,112,136,128,112,8,136,112,5,7,7,6,0, + 0,248,32,32,32,32,32,32,5,7,7,6,0,0,136,136, + 136,136,136,136,112,5,7,7,6,0,0,136,136,136,136,136, + 80,32,7,7,7,8,0,0,130,130,130,146,170,198,130,5, + 7,7,6,0,0,136,136,80,32,80,136,136,5,7,7,6, + 0,0,136,136,136,80,32,32,32,5,7,7,6,0,0,248, + 8,16,32,64,128,248,3,7,7,4,0,0,224,128,128,128, + 128,128,224,7,7,7,8,0,0,128,64,32,16,8,4,2, + 3,7,7,4,0,0,224,32,32,32,32,32,224,255,7,1, + 1,8,0,0,254,255,5,5,5,6,0,0,112,8,120,136, + 120,5,6,6,6,0,0,128,128,240,136,136,240,4,5,5, + 5,0,0,112,128,128,128,112,5,6,6,6,0,0,8,8, + 120,136,136,120,5,5,5,6,0,0,112,136,240,128,120,4, + 6,6,5,0,0,48,64,240,64,64,64,5,6,6,6,0, + 255,112,136,136,120,8,112,5,6,6,6,0,0,128,128,240, + 136,136,136,1,6,6,2,0,0,128,0,128,128,128,128,3, + 7,7,4,0,255,32,0,32,32,32,32,192,4,6,6,5, + 0,0,128,128,144,224,160,144,2,6,6,3,0,0,192,64, + 64,64,64,64,7,5,5,8,0,0,252,146,146,146,146,5, + 5,5,6,0,0,240,136,136,136,136,5,5,5,6,0,0, + 112,136,136,136,112,5,6,6,6,0,255,240,136,136,240,128, + 128,5,6,6,6,0,255,120,136,136,120,8,8,5,5,5, + 6,0,0,240,136,128,128,128,5,5,5,6,0,0,120,128, + 112,8,240,5,6,6,6,0,0,32,248,32,32,32,16,5, + 5,5,6,0,0,136,136,136,136,120,5,5,5,6,0,0, + 136,136,136,80,32,7,5,5,8,0,0,146,146,146,146,126, + 5,5,5,6,0,0,136,80,32,80,136,5,6,6,6,0, + 255,136,136,136,120,8,112,5,5,5,6,0,0,248,16,32, + 64,248,4,7,7,5,0,0,48,64,64,128,64,64,48,1, + 7,7,2,0,0,128,128,128,128,128,128,128,4,7,7,5, + 0,0,192,32,32,16,32,32,192,6,2,2,7,0,3,100, + 152,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,1,7,7,2,0,0,128,0,0,128,128,128,128, + 5,7,7,6,0,0,32,112,168,160,168,112,32,5,7,7, + 6,0,0,56,64,64,240,64,64,248,255,5,7,7,6,0, + 0,136,136,80,32,248,32,32,1,7,7,2,0,0,128,128, + 128,0,128,128,128,255,255,8,8,8,9,0,255,60,66,153, + 161,161,153,66,60,255,6,5,5,7,0,1,36,72,144,72, + 36,5,3,3,6,0,1,248,8,8,5,1,1,6,0,3, + 248,255,255,255,5,7,7,6,0,0,32,32,248,32,32,0, + 248,255,255,255,255,6,7,7,7,0,0,124,244,244,116,20, + 20,20,1,1,1,2,0,3,128,255,255,255,6,5,5,7, + 0,1,144,72,36,72,144,255,255,255,5,7,7,6,0,0, + 32,0,32,64,128,136,112,5,10,10,6,0,0,64,32,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,16,32,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,32,80,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,104,144,0, + 112,136,136,248,136,136,136,5,9,9,6,0,0,80,0,112, + 136,136,248,136,136,136,5,10,10,6,0,0,32,80,32,112, + 136,136,248,136,136,136,9,7,14,10,0,0,119,128,136,0, + 136,0,255,0,136,0,136,0,143,128,255,5,10,10,6,0, + 0,64,32,0,248,128,128,240,128,128,248,5,10,10,6,0, + 0,16,32,0,248,128,128,240,128,128,248,5,10,10,6,0, + 0,32,80,0,248,128,128,240,128,128,248,5,9,9,6,0, + 0,80,0,248,128,128,240,128,128,248,2,10,10,3,0,0, + 128,64,0,64,64,64,64,64,64,64,2,10,10,4,1,0, + 64,128,0,128,128,128,128,128,128,128,3,10,10,4,0,0, + 64,160,0,64,64,64,64,64,64,64,3,9,9,4,0,0, + 160,0,64,64,64,64,64,64,64,6,7,7,7,0,0,120, + 68,68,244,68,68,120,6,10,10,7,0,0,100,152,0,132, + 196,164,148,140,132,132,5,10,10,6,0,0,64,32,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,16,32,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,32,80,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,104,144,0,112, + 136,136,136,136,136,112,5,8,8,6,0,0,136,112,136,136, + 136,136,136,112,5,5,5,6,0,1,136,80,32,80,136,255, + 5,10,10,6,0,0,64,32,0,136,136,136,136,136,136,112, + 5,10,10,6,0,0,16,32,0,136,136,136,136,136,136,112, + 5,10,10,6,0,0,32,80,0,136,136,136,136,136,136,112, + 5,8,8,6,0,0,136,0,136,136,136,136,136,112,5,10, + 10,6,0,0,16,32,0,136,136,136,80,32,32,32,255,4, + 8,8,5,0,255,96,144,144,160,144,144,160,128,5,8,8, + 6,0,0,64,32,0,112,8,120,136,120,5,8,8,6,0, + 0,16,32,0,112,8,120,136,120,5,8,8,6,0,0,32, + 80,0,112,8,120,136,120,5,8,8,6,0,0,104,144,0, + 112,8,120,136,120,5,7,7,6,0,0,80,0,112,8,120, + 136,120,5,9,9,6,0,0,32,80,32,0,112,8,120,136, + 120,9,5,10,10,0,0,119,0,8,128,127,0,136,0,119, + 128,255,5,8,8,6,0,0,64,32,0,112,136,240,128,120, + 5,8,8,6,0,0,16,32,0,112,136,240,128,120,5,8, + 8,6,0,0,32,80,0,112,136,240,128,120,5,7,7,6, + 0,0,80,0,112,136,240,128,120,2,7,7,3,0,0,128, + 64,0,64,64,64,64,2,7,7,3,0,0,64,128,0,128, + 128,128,128,3,7,7,4,0,0,64,160,0,64,64,64,64, + 3,6,6,4,0,0,160,0,64,64,64,64,255,5,8,8, + 6,0,0,104,144,0,240,136,136,136,136,5,8,8,6,0, + 0,64,32,0,112,136,136,136,112,5,8,8,6,0,0,16, + 32,0,112,136,136,136,112,5,8,8,6,0,0,32,80,0, + 112,136,136,136,112,5,8,8,6,0,0,104,144,0,112,136, + 136,136,112,5,7,7,6,0,0,80,0,112,136,136,136,112, + 5,5,5,6,0,1,32,0,248,0,32,255,5,8,8,6, + 0,0,64,32,0,136,136,136,136,120,5,8,8,6,0,0, + 16,32,0,136,136,136,136,120,5,8,8,6,0,0,32,80, + 0,136,136,136,136,120,5,7,7,6,0,0,80,0,136,136, + 136,136,120,5,9,9,6,0,255,16,32,0,136,136,136,120, + 8,112,255,5,8,8,6,0,255,80,0,136,136,136,120,8, + 112}; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 7 h= 7 x= 0 y= 3 dx= 8 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[206] U8G_SECTION(".progmem.u8g_font_lucasfont_alternaten") = { + 0,9,11,0,255,7,0,0,0,0,42,57,0,7,255,7, + 0,7,5,5,8,0,1,68,40,254,40,68,5,5,5,6, + 0,1,32,32,248,32,32,2,3,3,3,0,255,64,64,128, + 6,1,1,7,0,3,252,1,2,2,2,0,0,128,128,7, + 7,7,8,0,0,2,4,8,16,32,64,128,5,7,7,6, + 0,0,112,136,136,136,136,136,112,5,7,7,6,0,0,32, + 96,32,32,32,32,248,5,7,7,6,0,0,112,136,8,16, + 32,64,248,5,7,7,6,0,0,240,8,8,120,8,8,240, + 5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7, + 6,0,0,248,128,112,8,8,136,112,5,7,7,6,0,0, + 112,136,128,240,136,136,112,5,7,7,6,0,0,248,8,16, + 32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136, + 112,5,7,7,6,0,0,112,136,136,120,8,136,112}; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 7 x= 0 y= 4 dx= 8 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[1138] U8G_SECTION(".progmem.u8g_font_lucasfont_alternater") = { + 0,9,11,0,255,7,1,148,3,22,32,127,255,7,255,7, + 255,0,0,0,4,0,0,1,7,7,2,0,0,128,128,128, + 128,0,0,128,3,3,3,4,0,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,7,7,6,0,0, + 32,120,128,248,8,240,32,7,7,7,8,0,0,2,68,8, + 16,32,68,128,6,7,7,7,0,0,96,144,144,96,148,136, + 116,1,3,3,2,0,4,128,128,128,3,7,7,4,0,0, + 32,64,128,128,128,64,32,3,7,7,4,0,0,128,64,32, + 32,32,64,128,7,5,5,8,0,1,68,40,254,40,68,5, + 5,5,6,0,1,32,32,248,32,32,2,3,3,3,0,255, + 64,64,128,6,1,1,7,0,3,252,1,2,2,2,0,0, + 128,128,7,7,7,8,0,0,2,4,8,16,32,64,128,5, + 7,7,6,0,0,112,136,136,136,136,136,112,5,7,7,6, + 0,0,32,96,32,32,32,32,248,5,7,7,6,0,0,112, + 136,8,16,32,64,248,5,7,7,6,0,0,240,8,8,120, + 8,8,240,5,7,7,6,0,0,16,48,80,144,248,16,16, + 5,7,7,6,0,0,248,128,112,8,8,136,112,5,7,7, + 6,0,0,112,136,128,240,136,136,112,5,7,7,6,0,0, + 248,8,16,32,32,32,32,5,7,7,6,0,0,112,136,136, + 112,136,136,112,5,7,7,6,0,0,112,136,136,120,8,136, + 112,1,4,4,2,0,1,128,0,0,128,2,6,6,3,0, + 255,64,0,0,64,64,128,4,7,7,5,0,0,16,32,64, + 128,64,32,16,5,3,3,6,0,2,248,0,248,4,7,7, + 5,0,0,128,64,32,16,32,64,128,5,7,7,6,0,0, + 112,136,8,16,32,0,32,7,7,7,8,0,0,124,130,154, + 170,190,128,124,5,7,7,6,0,0,112,136,136,248,136,136, + 136,5,7,7,6,0,0,240,136,136,240,136,136,240,5,7, + 7,6,0,0,120,128,128,128,128,128,120,5,7,7,6,0, + 0,240,136,136,136,136,136,240,5,7,7,6,0,0,248,128, + 128,240,128,128,248,5,7,7,6,0,0,248,128,128,240,128, + 128,128,5,7,7,6,0,0,112,136,128,184,136,136,112,5, + 7,7,6,0,0,136,136,136,248,136,136,136,1,7,7,2, + 0,0,128,128,128,128,128,128,128,5,7,7,6,0,0,8, + 8,8,8,8,136,112,5,7,7,6,0,0,136,144,160,192, + 160,144,136,5,7,7,6,0,0,128,128,128,128,128,128,248, + 7,7,7,8,0,0,130,198,170,146,130,130,130,6,7,7, + 7,0,0,132,196,164,148,140,132,132,5,7,7,6,0,0, + 112,136,136,136,136,136,112,5,7,7,6,0,0,240,136,136, + 240,128,128,128,5,7,7,6,0,0,112,136,136,136,168,144, + 104,5,7,7,6,0,0,240,136,136,240,160,144,136,5,7, + 7,6,0,0,112,136,128,112,8,136,112,5,7,7,6,0, + 0,248,32,32,32,32,32,32,5,7,7,6,0,0,136,136, + 136,136,136,136,112,5,7,7,6,0,0,136,136,136,136,136, + 80,32,7,7,7,8,0,0,130,130,130,146,170,198,130,5, + 7,7,6,0,0,136,136,80,32,80,136,136,5,7,7,6, + 0,0,136,136,136,80,32,32,32,5,7,7,6,0,0,248, + 8,16,32,64,128,248,3,7,7,4,0,0,224,128,128,128, + 128,128,224,7,7,7,8,0,0,128,64,32,16,8,4,2, + 3,7,7,4,0,0,224,32,32,32,32,32,224,255,7,1, + 1,8,0,0,254,255,5,5,5,6,0,0,112,8,120,136, + 120,5,6,6,6,0,0,128,128,240,136,136,240,4,5,5, + 5,0,0,112,128,128,128,112,5,6,6,6,0,0,8,8, + 120,136,136,120,5,5,5,6,0,0,112,136,240,128,120,4, + 6,6,5,0,0,48,64,240,64,64,64,5,6,6,6,0, + 255,112,136,136,120,8,112,5,6,6,6,0,0,128,128,240, + 136,136,136,1,6,6,2,0,0,128,0,128,128,128,128,3, + 7,7,4,0,255,32,0,32,32,32,32,192,4,6,6,5, + 0,0,128,128,144,224,160,144,2,6,6,3,0,0,192,64, + 64,64,64,64,7,5,5,8,0,0,252,146,146,146,146,5, + 5,5,6,0,0,240,136,136,136,136,5,5,5,6,0,0, + 112,136,136,136,112,5,6,6,6,0,255,240,136,136,240,128, + 128,5,6,6,6,0,255,120,136,136,120,8,8,5,5,5, + 6,0,0,240,136,128,128,128,5,5,5,6,0,0,120,128, + 112,8,240,5,6,6,6,0,0,32,248,32,32,32,16,5, + 5,5,6,0,0,136,136,136,136,120,5,5,5,6,0,0, + 136,136,136,80,32,7,5,5,8,0,0,146,146,146,146,126, + 5,5,5,6,0,0,136,80,32,80,136,5,6,6,6,0, + 255,136,136,136,120,8,112,5,5,5,6,0,0,248,16,32, + 64,248,4,7,7,5,0,0,48,64,64,128,64,64,48,1, + 7,7,2,0,0,128,128,128,128,128,128,128,4,7,7,5, + 0,0,192,32,32,16,32,32,192,6,2,2,7,0,3,100, + 152,255}; +/* + Fontname: m2icon5 + Copyright: public domain + Capital A Height: 5, '1' Height: 0 + Calculated Max Values w= 9 h= 6 x= 0 y= 0 dx=10 dy= 0 ascent= 5 len=10 + Font Bounding box w= 9 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_5[221] U8G_SECTION(".progmem.u8g_font_m2icon_5") = { + 1,9,6,0,255,5,0,17,0,172,65,104,255,5,255,5, + 255,2,117,149,28,254,130,130,254,2,69,133,112,208,144,144, + 240,2,84,100,216,112,112,216,2,117,133,6,12,216,112,32, + 2,68,84,240,144,144,240,2,68,84,240,144,208,240,2,68, + 84,240,240,240,240,2,85,101,248,136,136,136,248,2,85,101, + 248,136,168,136,248,2,85,101,248,248,248,248,248,2,68,84, + 224,176,240,112,2,68,84,224,176,240,112,2,68,84,224,240, + 240,112,2,85,101,240,152,152,248,120,2,85,101,240,152,216, + 248,120,2,85,101,240,248,248,248,120,2,68,84,96,144,144, + 96,2,68,84,96,144,208,96,2,68,84,96,240,240,96,255, + 255,255,255,255,255,255,255,255,255,255,255,255,2,117,133,32, + 64,254,64,32,2,85,101,32,112,168,32,32,255,255,255,2, + 149,170,28,0,254,0,130,0,191,128,255,0,1,22,38,128, + 128,128,128,128,128,2,85,101,32,32,248,32,32}; +/* + Fontname: m2icon_7 + Copyright: public domain + Capital A Height: 7, '1' Height: 0 + Calculated Max Values w=12 h= 8 x= 0 y= 1 dx=13 dy= 0 ascent= 7 len=14 + Font Bounding box w=12 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_7[275] U8G_SECTION(".progmem.u8g_font_m2icon_7") = { + 1,12,8,0,255,7,0,17,0,214,65,104,255,7,255,7, + 255,2,151,174,15,0,255,128,128,128,128,128,128,128,128,128, + 255,128,2,87,103,56,104,232,136,136,136,248,3,84,100,216, + 112,112,216,2,134,150,3,6,12,216,112,32,2,102,118,252, + 132,132,132,132,252,2,102,118,252,132,180,180,132,252,2,102, + 118,252,252,252,252,252,252,2,119,151,254,130,130,130,130,130, + 254,2,119,151,254,130,186,186,186,130,254,2,119,151,254,254, + 254,254,254,254,254,2,102,118,248,140,140,140,252,124,2,102, + 118,248,140,172,140,252,124,2,102,134,248,252,252,252,252,124, + 2,119,151,252,134,134,134,134,254,126,2,119,151,252,134,182, + 182,134,254,126,2,119,151,252,254,254,254,254,254,126,2,102, + 118,120,204,132,132,204,120,2,102,118,120,204,180,180,204,120, + 2,102,118,120,252,252,252,252,120,255,255,255,255,255,255,255, + 255,255,255,255,255,255,2,135,151,16,48,95,129,95,48,16, + 2,119,135,16,40,68,238,40,40,56,255,255,255,2,199,222, + 15,0,255,128,128,128,159,240,160,32,192,64,255,128,1,24, + 40,128,128,128,128,128,128,128,128,2,119,199,16,0,16,186, + 16,0,16}; +/* + Fontname: m2icon_9 + Copyright: public domain + Capital A Height: 8, '1' Height: 0 + Calculated Max Values w=13 h=11 x= 0 y= 1 dx=12 dy= 0 ascent= 9 len=18 + Font Bounding box w=13 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_9[471] U8G_SECTION(".progmem.u8g_font_m2icon_9") = { + 0,13,11,0,254,8,0,17,1,111,65,105,254,9,254,8, + 254,10,8,16,11,0,0,15,128,255,192,128,64,128,64,128, + 64,128,64,128,64,255,192,6,8,8,7,0,0,60,84,148, + 244,132,132,132,252,6,5,5,7,0,1,204,120,48,120,204, + 10,7,14,12,0,0,0,192,1,128,3,0,198,0,108,0, + 56,0,16,0,8,8,8,9,0,0,255,129,129,129,129,129, + 129,255,8,8,8,9,0,0,255,129,189,189,189,189,129,255, + 8,8,8,9,0,0,255,255,255,255,255,255,255,255,9,9, + 18,10,0,0,255,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,255,128,9,9,18,10,0,0,255,128,128,128, + 190,128,190,128,190,128,190,128,190,128,128,128,255,128,9,9, + 18,11,0,0,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,8,8,8,8,0,0,254,131,131,131, + 131,131,255,127,8,8,8,9,0,0,254,131,187,187,187,131, + 255,127,8,8,8,9,0,0,254,255,255,255,255,255,255,127, + 9,9,18,10,0,0,255,0,129,128,129,128,129,128,129,128, + 129,128,129,128,255,128,127,128,9,9,18,10,0,0,255,0, + 129,128,189,128,189,128,189,128,189,128,129,128,255,128,127,128, + 9,9,18,10,0,0,255,0,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,127,128,8,8,8,9,0,0,60,66, + 129,129,129,129,66,60,8,8,8,9,0,0,60,66,153,189, + 189,153,66,60,8,8,8,9,0,0,60,126,255,255,255,255, + 126,60,255,255,255,255,255,255,255,255,255,255,255,255,255,10, + 8,16,11,0,0,24,0,40,0,79,192,128,64,128,64,79, + 192,40,0,24,0,8,9,9,9,0,0,24,36,66,129,231, + 36,36,36,60,255,255,255,13,8,16,11,0,0,15,128,255, + 192,128,64,128,64,159,248,160,16,192,32,255,192,1,11,11, + 2,0,254,128,128,128,128,128,128,128,128,128,128,128,9,9, + 18,10,0,0,8,0,0,0,8,0,8,0,190,128,8,0, + 8,0,0,0,8,0,255}; +/* + Fontname: micro + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 4 h= 5 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_micro[855] U8G_SECTION(".progmem.u8g_font_micro") = { + 1,4,5,0,0,5,0,255,1,245,32,255,0,5,0,5, + 0,7,0,64,2,37,69,192,192,192,0,192,5,50,66,160, + 160,2,53,69,160,224,160,224,160,2,53,69,64,224,192,96, + 224,3,52,68,160,96,192,160,2,53,69,64,64,224,192,64, + 21,34,66,64,192,18,37,69,64,128,128,128,64,2,37,69, + 128,64,64,64,128,2,53,69,160,64,224,64,160,3,51,67, + 64,224,64,2,34,66,64,192,4,49,65,224,2,34,66,192, + 192,2,53,69,32,32,64,64,128,2,53,69,64,160,160,160, + 64,2,37,69,64,192,64,64,64,2,53,69,192,32,64,128, + 224,2,53,69,192,32,96,32,224,2,53,69,160,160,160,224, + 32,2,53,69,224,128,192,32,192,2,53,69,96,128,224,160, + 224,2,53,69,224,32,32,64,64,2,53,69,224,160,224,160, + 224,2,53,69,224,160,224,32,192,2,37,69,192,192,0,192, + 192,2,37,69,192,192,0,64,192,2,53,69,32,64,128,64, + 32,3,51,67,224,0,224,2,53,69,128,64,32,64,128,2, + 53,69,224,32,96,0,64,2,53,69,96,160,192,128,96,2, + 53,69,224,160,224,160,160,2,53,69,224,160,192,160,224,2, + 53,69,224,128,128,128,224,2,53,69,192,160,160,160,192,2, + 53,69,224,128,224,128,224,2,53,69,224,128,224,128,128,2, + 53,69,224,128,160,160,224,2,53,69,160,160,224,160,160,2, + 53,69,224,64,64,64,224,2,53,69,32,32,32,160,224,2, + 53,69,160,160,192,160,160,2,53,69,128,128,128,128,224,2, + 53,69,160,224,160,160,160,2,53,69,224,160,160,160,160,2, + 53,69,224,160,160,160,224,2,53,69,224,160,224,128,128,2, + 53,69,224,160,160,192,96,2,53,69,224,160,192,160,160,2, + 53,69,224,128,224,32,224,2,53,69,224,64,64,64,64,2, + 53,69,160,160,160,160,224,2,53,69,160,160,160,160,64,2, + 53,69,160,160,160,224,160,2,53,69,160,224,64,224,160,2, + 53,69,160,160,224,64,64,2,53,69,224,32,64,128,224,18, + 37,69,192,128,128,128,192,2,53,69,128,128,64,64,32,2, + 37,69,192,64,64,64,192,5,50,66,64,160,2,49,65,224, + 21,34,66,128,192,2,52,68,224,96,160,224,2,53,69,128, + 224,160,160,224,2,52,68,224,128,128,224,2,53,69,32,224, + 160,160,224,2,52,68,224,160,192,224,2,53,69,96,128,192, + 128,128,2,52,68,224,160,96,224,2,53,69,128,224,160,160, + 160,18,20,68,128,128,128,128,2,52,68,32,32,160,224,2, + 53,69,128,160,192,192,160,2,37,69,192,64,64,64,64,2, + 52,68,160,224,160,160,2,52,68,224,160,160,160,2,52,68, + 224,160,160,224,2,52,68,224,160,224,128,2,52,68,224,160, + 224,32,2,52,68,224,160,128,128,2,52,68,224,192,96,224, + 2,53,69,64,224,64,64,96,2,52,68,160,160,160,224,2, + 52,68,160,160,160,64,2,52,68,160,160,224,160,2,52,68, + 160,64,64,160,2,52,68,160,160,96,192,2,52,68,224,96, + 192,224,2,53,69,96,64,192,64,96,18,21,69,128,128,128, + 128,128,2,53,69,192,64,96,64,192,4,50,66,192,96,2, + 53,69,96,64,64,64,192,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--11-80-100-100-P-66-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=11 x= 2 y= 6 dx=12 dy= 0 ascent=11 len=22 + Font Bounding box w=17 h=19 x=-2 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB08[2760] U8G_SECTION(".progmem.u8g_font_ncenB08") = { + 0,17,19,254,251,8,1,193,3,159,32,255,254,11,254,8, + 254,0,0,0,3,0,1,2,8,8,3,0,0,192,192,192, + 128,128,0,192,192,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,5,10,10,6, + 0,255,32,120,168,160,240,120,40,168,240,32,10,8,16,11, + 0,0,102,0,218,0,212,0,213,128,107,64,11,64,19,64, + 17,128,8,8,8,9,0,0,48,104,104,48,88,204,207,118, + 1,3,3,4,1,5,128,128,128,4,10,10,5,0,254,16, + 32,96,192,192,192,192,96,32,16,4,10,10,5,0,254,128, + 64,96,48,48,48,48,96,64,128,5,5,5,6,0,3,32, + 168,112,168,32,5,5,5,6,0,1,32,32,248,32,32,2, + 4,4,3,0,254,192,192,64,128,3,1,1,4,0,3,224, + 2,2,2,3,0,0,192,192,4,8,8,5,0,0,16,16, + 32,32,64,64,128,128,5,8,8,6,0,0,112,216,216,216, + 216,216,216,112,4,8,8,6,1,0,96,224,96,96,96,96, + 96,240,5,8,8,6,0,0,112,216,216,24,48,64,248,248, + 5,8,8,6,0,0,112,216,216,48,24,216,216,112,5,8, + 8,6,0,0,56,56,88,88,152,248,24,56,5,8,8,6, + 0,0,248,240,128,240,24,216,216,112,5,8,8,6,0,0, + 112,216,192,240,216,216,216,112,4,8,8,6,0,0,240,240, + 16,32,32,96,96,96,5,8,8,6,0,0,112,216,216,112, + 216,216,216,112,5,8,8,6,0,0,112,216,216,216,120,24, + 216,112,2,5,5,3,0,0,192,192,0,192,192,2,7,7, + 3,0,254,192,192,0,192,192,64,128,6,5,5,7,0,1, + 12,48,192,48,12,5,3,3,6,0,2,248,0,248,6,5, + 5,7,0,1,192,48,12,48,192,5,8,8,6,0,0,112, + 216,24,48,64,0,96,96,9,10,20,10,0,255,28,0,99, + 0,65,0,158,128,182,128,182,128,155,0,64,0,96,0,30, + 0,9,8,16,8,255,0,8,0,28,0,28,0,38,0,38, + 0,127,0,67,0,231,128,7,8,8,8,0,0,252,102,102, + 124,102,102,102,252,7,8,8,8,0,0,58,70,194,192,192, + 194,66,60,8,8,8,9,0,0,252,98,99,99,99,99,98, + 252,6,8,8,7,0,0,252,100,104,120,104,100,100,252,6, + 8,8,7,0,0,252,100,100,104,120,104,96,240,7,8,8, + 8,0,0,58,70,194,192,206,198,70,58,9,8,16,10,0, + 0,247,128,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,4,8,8,5,0,0,240,96,96,96,96,96,96,240,6, + 8,8,7,0,0,60,24,24,24,216,216,152,112,9,8,16, + 9,0,0,243,0,98,0,100,0,104,0,124,0,102,0,99, + 0,243,128,6,8,8,7,0,0,240,96,96,96,96,100,100, + 252,11,8,16,12,0,0,241,224,113,192,90,192,90,192,90, + 192,76,192,76,192,237,224,8,8,8,9,0,0,199,98,114, + 122,94,78,70,226,7,8,8,8,0,0,56,68,198,198,198, + 198,68,56,7,8,8,8,0,0,252,102,102,102,124,96,96, + 240,8,9,9,8,0,255,56,68,198,198,198,246,108,61,6, + 8,8,8,9,0,0,252,102,102,100,124,102,102,247,6,8, + 8,7,0,0,116,204,196,240,60,140,204,184,6,8,8,7, + 0,0,252,180,180,48,48,48,48,120,8,8,8,9,0,0, + 247,98,98,98,98,98,98,60,8,8,8,9,0,0,247,98, + 98,52,52,52,24,24,11,8,16,12,0,0,246,224,102,64, + 102,64,107,64,107,64,59,128,49,128,49,128,8,8,8,9, + 0,0,247,98,116,56,28,46,70,239,8,8,8,9,0,0, + 247,98,52,52,24,24,24,60,6,8,8,7,0,0,252,140, + 28,56,112,224,196,252,3,10,10,4,0,254,224,192,192,192, + 192,192,192,192,192,224,4,8,8,5,0,0,128,128,64,64, + 32,32,16,16,3,10,10,4,0,254,224,96,96,96,96,96, + 96,96,96,224,5,6,6,6,0,2,32,32,112,80,136,136, + 6,1,1,6,0,254,252,3,2,2,4,0,6,192,96,4, + 5,5,5,0,0,224,48,112,176,240,6,8,8,7,0,0, + 192,192,192,216,236,204,204,184,5,5,5,6,0,0,112,200, + 192,200,112,6,8,8,7,0,0,28,12,12,124,204,204,220, + 108,5,5,5,6,0,0,112,216,248,192,120,5,8,8,5, + 0,0,56,104,96,240,96,96,96,240,6,8,8,6,0,254, + 8,112,216,216,112,124,140,248,6,8,8,7,0,0,192,192, + 192,216,236,204,204,204,4,8,8,5,0,0,96,96,0,224, + 96,96,96,240,3,10,10,5,0,254,96,96,0,224,96,96, + 96,96,96,192,6,8,8,6,0,0,192,192,192,216,240,240, + 216,220,4,8,8,5,0,0,224,96,96,96,96,96,96,240, + 10,5,10,11,0,0,217,128,238,192,204,192,204,192,204,192, + 6,5,5,7,0,0,216,236,204,204,204,6,5,5,7,0, + 0,120,204,204,204,120,6,7,7,7,0,254,216,236,204,204, + 248,192,224,7,7,7,7,0,254,124,204,204,220,108,12,30, + 4,5,5,5,0,0,208,240,192,192,192,4,5,5,5,0, + 0,112,192,240,48,224,3,7,7,4,0,0,64,192,224,192, + 192,192,96,6,5,5,7,0,0,204,204,204,220,108,6,5, + 5,7,0,0,236,104,104,48,48,9,5,10,10,0,0,237, + 128,109,0,109,0,54,0,54,0,6,5,5,7,0,0,236, + 104,48,88,220,6,7,7,7,0,254,236,104,104,48,48,224, + 192,5,5,5,6,0,0,248,176,96,200,248,4,10,10,5, + 0,254,48,96,96,96,192,96,96,96,96,48,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,4,10,10,5,0,254, + 192,96,96,96,48,96,96,96,96,192,6,2,2,7,0,3, + 116,184,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,3,0,1,2,8,8,3,0,254,192, + 192,0,64,64,192,192,192,5,7,7,6,0,255,8,120,208, + 208,232,112,64,7,8,8,8,0,0,60,100,96,252,48,98, + 190,220,7,5,5,8,0,1,186,108,108,108,186,8,8,8, + 9,0,0,247,98,52,54,24,62,24,60,1,8,8,6,2, + 0,128,128,128,0,128,128,128,128,4,10,10,5,0,254,112, + 144,192,96,176,208,96,48,144,224,3,2,2,4,0,6,160, + 160,8,8,8,9,0,0,60,66,157,165,161,157,66,60,3, + 6,6,4,0,2,192,32,224,160,0,224,6,5,5,7,0, + 0,36,108,216,108,36,5,3,3,6,0,2,248,8,8,3, + 1,1,4,0,3,224,8,8,8,9,0,0,60,66,189,165, + 185,173,66,60,4,1,1,5,0,6,240,3,4,4,4,0, + 4,64,160,160,64,5,5,5,6,0,1,32,248,32,0,248, + 3,4,4,3,0,4,96,160,64,224,3,4,4,3,0,4, + 224,64,32,192,3,2,2,4,0,6,96,192,6,7,7,7, + 0,254,204,204,204,220,236,192,192,7,8,8,8,0,0,126, + 244,244,116,20,20,20,62,2,2,2,3,0,3,192,192,2, + 3,3,4,1,254,128,64,192,3,4,4,3,0,4,64,192, + 64,224,4,6,6,5,0,2,96,144,144,96,0,240,6,5, + 5,7,0,0,144,216,108,216,144,8,8,8,9,0,0,68, + 196,72,232,18,22,47,34,8,8,8,9,0,0,68,196,72, + 232,19,21,34,39,8,8,8,9,0,0,228,68,40,200,18, + 22,47,34,5,8,8,6,0,254,48,48,0,16,96,192,216, + 112,9,11,22,8,255,0,48,0,24,0,0,0,8,0,28, + 0,28,0,38,0,38,0,127,0,67,0,231,128,9,11,22, + 8,255,0,6,0,12,0,0,0,8,0,28,0,28,0,38, + 0,38,0,127,0,67,0,231,128,9,11,22,8,255,0,28, + 0,54,0,0,0,8,0,28,0,28,0,38,0,38,0,127, + 0,67,0,231,128,9,11,22,8,255,0,26,0,44,0,0, + 0,8,0,28,0,28,0,38,0,38,0,127,0,67,0,231, + 128,9,11,22,8,255,0,20,0,20,0,0,0,8,0,28, + 0,28,0,38,0,38,0,127,0,67,0,231,128,9,11,22, + 8,255,0,24,0,36,0,24,0,8,0,28,0,28,0,38, + 0,38,0,127,0,67,0,231,128,10,8,16,11,0,0,63, + 192,22,64,22,128,39,128,62,128,70,64,70,64,239,192,7, + 10,10,8,0,254,58,70,194,192,192,194,66,60,16,48,6, + 11,11,7,0,0,96,48,0,252,100,104,120,104,100,100,252, + 6,11,11,7,0,0,24,48,0,252,100,104,120,104,100,100, + 252,6,11,11,7,0,0,56,108,0,252,100,104,120,104,100, + 100,252,6,11,11,7,0,0,40,40,0,252,100,104,120,104, + 100,100,252,4,11,11,5,0,0,192,96,0,240,96,96,96, + 96,96,96,240,4,11,11,5,0,0,48,96,0,240,96,96, + 96,96,96,96,240,5,11,11,5,0,0,112,216,0,240,96, + 96,96,96,96,96,240,4,11,11,5,0,0,80,80,0,240, + 96,96,96,96,96,96,240,8,8,8,9,0,0,252,98,99, + 243,99,99,98,252,8,11,11,9,0,0,26,44,0,199,98, + 114,122,94,78,70,226,7,11,11,8,0,0,48,24,0,56, + 68,198,198,198,198,68,56,7,11,11,8,0,0,24,48,0, + 56,68,198,198,198,198,68,56,7,11,11,8,0,0,56,108, + 0,56,68,198,198,198,198,68,56,7,11,11,8,0,0,52, + 88,0,56,68,198,198,198,198,68,56,7,11,11,8,0,0, + 40,40,0,56,68,198,198,198,198,68,56,5,5,5,6,0, + 1,216,112,32,112,216,7,8,8,8,0,0,58,68,206,214, + 214,230,68,184,8,11,11,9,0,0,48,24,0,247,98,98, + 98,98,98,98,60,8,11,11,9,0,0,12,24,0,247,98, + 98,98,98,98,98,60,8,11,11,9,0,0,28,54,0,247, + 98,98,98,98,98,98,60,8,11,11,9,0,0,20,20,0, + 247,98,98,98,98,98,98,60,8,11,11,9,0,0,12,24, + 0,247,98,52,52,24,24,24,60,7,8,8,8,0,0,224, + 124,102,102,102,124,96,240,7,8,8,8,0,0,60,102,102, + 108,102,102,102,236,4,8,8,5,0,0,192,96,0,224,48, + 112,176,240,4,8,8,5,0,0,48,96,0,224,48,112,176, + 240,5,9,9,5,0,0,32,112,216,0,224,48,112,176,240, + 5,8,8,5,0,0,104,176,0,224,48,112,176,240,4,8, + 8,5,0,0,160,160,0,224,48,112,176,240,4,8,8,5, + 0,0,96,144,96,224,48,112,176,240,8,5,5,9,0,0, + 238,155,127,216,239,5,7,7,6,0,254,112,200,192,200,112, + 32,96,5,8,8,6,0,0,96,48,0,112,216,248,192,120, + 5,8,8,6,0,0,48,96,0,112,216,248,192,120,5,9, + 9,6,0,0,32,112,216,0,112,216,248,192,120,5,8,8, + 6,0,0,80,80,0,112,216,248,192,120,4,8,8,5,0, + 0,192,96,0,224,96,96,96,240,4,8,8,5,0,0,48, + 96,0,224,96,96,96,240,5,9,9,5,0,0,32,112,216, + 0,224,96,96,96,240,4,8,8,5,0,0,160,160,0,224, + 96,96,96,240,6,8,8,7,0,0,200,112,144,120,204,204, + 204,120,6,8,8,7,0,0,104,176,0,216,236,204,204,204, + 6,8,8,7,0,0,96,48,0,120,204,204,204,120,6,8, + 8,7,0,0,24,48,0,120,204,204,204,120,6,9,9,7, + 0,0,32,112,216,0,120,204,204,204,120,6,8,8,7,0, + 0,52,88,0,120,204,204,204,120,6,8,8,7,0,0,80, + 80,0,120,204,204,204,120,5,5,5,6,0,1,32,0,248, + 0,32,6,7,7,7,0,255,4,120,220,236,204,120,128,6, + 8,8,7,0,0,96,48,0,204,204,204,220,108,6,8,8, + 7,0,0,24,48,0,204,204,204,220,108,6,9,9,7,0, + 0,32,112,216,0,204,204,204,220,108,6,8,8,7,0,0, + 80,80,0,204,204,204,220,108,6,10,10,7,0,254,24,48, + 0,236,104,104,48,48,224,192,6,10,10,7,0,254,192,192, + 192,216,236,204,204,248,192,224,6,10,10,7,0,254,80,80, + 0,236,104,104,48,48,224,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--11-80-100-100-P-66-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=10 x= 2 y= 6 dx=12 dy= 0 ascent= 9 len=20 + Font Bounding box w=17 h=19 x=-2 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB08r[1315] U8G_SECTION(".progmem.u8g_font_ncenB08r") = { + 0,17,19,254,251,8,1,193,3,159,32,127,254,9,254,8, + 254,0,0,0,3,0,1,2,8,8,3,0,0,192,192,192, + 128,128,0,192,192,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,5,10,10,6, + 0,255,32,120,168,160,240,120,40,168,240,32,10,8,16,11, + 0,0,102,0,218,0,212,0,213,128,107,64,11,64,19,64, + 17,128,8,8,8,9,0,0,48,104,104,48,88,204,207,118, + 1,3,3,4,1,5,128,128,128,4,10,10,5,0,254,16, + 32,96,192,192,192,192,96,32,16,4,10,10,5,0,254,128, + 64,96,48,48,48,48,96,64,128,5,5,5,6,0,3,32, + 168,112,168,32,5,5,5,6,0,1,32,32,248,32,32,2, + 4,4,3,0,254,192,192,64,128,3,1,1,4,0,3,224, + 2,2,2,3,0,0,192,192,4,8,8,5,0,0,16,16, + 32,32,64,64,128,128,5,8,8,6,0,0,112,216,216,216, + 216,216,216,112,4,8,8,6,1,0,96,224,96,96,96,96, + 96,240,5,8,8,6,0,0,112,216,216,24,48,64,248,248, + 5,8,8,6,0,0,112,216,216,48,24,216,216,112,5,8, + 8,6,0,0,56,56,88,88,152,248,24,56,5,8,8,6, + 0,0,248,240,128,240,24,216,216,112,5,8,8,6,0,0, + 112,216,192,240,216,216,216,112,4,8,8,6,0,0,240,240, + 16,32,32,96,96,96,5,8,8,6,0,0,112,216,216,112, + 216,216,216,112,5,8,8,6,0,0,112,216,216,216,120,24, + 216,112,2,5,5,3,0,0,192,192,0,192,192,2,7,7, + 3,0,254,192,192,0,192,192,64,128,6,5,5,7,0,1, + 12,48,192,48,12,5,3,3,6,0,2,248,0,248,6,5, + 5,7,0,1,192,48,12,48,192,5,8,8,6,0,0,112, + 216,24,48,64,0,96,96,9,10,20,10,0,255,28,0,99, + 0,65,0,158,128,182,128,182,128,155,0,64,0,96,0,30, + 0,9,8,16,8,255,0,8,0,28,0,28,0,38,0,38, + 0,127,0,67,0,231,128,7,8,8,8,0,0,252,102,102, + 124,102,102,102,252,7,8,8,8,0,0,58,70,194,192,192, + 194,66,60,8,8,8,9,0,0,252,98,99,99,99,99,98, + 252,6,8,8,7,0,0,252,100,104,120,104,100,100,252,6, + 8,8,7,0,0,252,100,100,104,120,104,96,240,7,8,8, + 8,0,0,58,70,194,192,206,198,70,58,9,8,16,10,0, + 0,247,128,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,4,8,8,5,0,0,240,96,96,96,96,96,96,240,6, + 8,8,7,0,0,60,24,24,24,216,216,152,112,9,8,16, + 9,0,0,243,0,98,0,100,0,104,0,124,0,102,0,99, + 0,243,128,6,8,8,7,0,0,240,96,96,96,96,100,100, + 252,11,8,16,12,0,0,241,224,113,192,90,192,90,192,90, + 192,76,192,76,192,237,224,8,8,8,9,0,0,199,98,114, + 122,94,78,70,226,7,8,8,8,0,0,56,68,198,198,198, + 198,68,56,7,8,8,8,0,0,252,102,102,102,124,96,96, + 240,8,9,9,8,0,255,56,68,198,198,198,246,108,61,6, + 8,8,8,9,0,0,252,102,102,100,124,102,102,247,6,8, + 8,7,0,0,116,204,196,240,60,140,204,184,6,8,8,7, + 0,0,252,180,180,48,48,48,48,120,8,8,8,9,0,0, + 247,98,98,98,98,98,98,60,8,8,8,9,0,0,247,98, + 98,52,52,52,24,24,11,8,16,12,0,0,246,224,102,64, + 102,64,107,64,107,64,59,128,49,128,49,128,8,8,8,9, + 0,0,247,98,116,56,28,46,70,239,8,8,8,9,0,0, + 247,98,52,52,24,24,24,60,6,8,8,7,0,0,252,140, + 28,56,112,224,196,252,3,10,10,4,0,254,224,192,192,192, + 192,192,192,192,192,224,4,8,8,5,0,0,128,128,64,64, + 32,32,16,16,3,10,10,4,0,254,224,96,96,96,96,96, + 96,96,96,224,5,6,6,6,0,2,32,32,112,80,136,136, + 6,1,1,6,0,254,252,3,2,2,4,0,6,192,96,4, + 5,5,5,0,0,224,48,112,176,240,6,8,8,7,0,0, + 192,192,192,216,236,204,204,184,5,5,5,6,0,0,112,200, + 192,200,112,6,8,8,7,0,0,28,12,12,124,204,204,220, + 108,5,5,5,6,0,0,112,216,248,192,120,5,8,8,5, + 0,0,56,104,96,240,96,96,96,240,6,8,8,6,0,254, + 8,112,216,216,112,124,140,248,6,8,8,7,0,0,192,192, + 192,216,236,204,204,204,4,8,8,5,0,0,96,96,0,224, + 96,96,96,240,3,10,10,5,0,254,96,96,0,224,96,96, + 96,96,96,192,6,8,8,6,0,0,192,192,192,216,240,240, + 216,220,4,8,8,5,0,0,224,96,96,96,96,96,96,240, + 10,5,10,11,0,0,217,128,238,192,204,192,204,192,204,192, + 6,5,5,7,0,0,216,236,204,204,204,6,5,5,7,0, + 0,120,204,204,204,120,6,7,7,7,0,254,216,236,204,204, + 248,192,224,7,7,7,7,0,254,124,204,204,220,108,12,30, + 4,5,5,5,0,0,208,240,192,192,192,4,5,5,5,0, + 0,112,192,240,48,224,3,7,7,4,0,0,64,192,224,192, + 192,192,96,6,5,5,7,0,0,204,204,204,220,108,6,5, + 5,7,0,0,236,104,104,48,48,9,5,10,10,0,0,237, + 128,109,0,109,0,54,0,54,0,6,5,5,7,0,0,236, + 104,48,88,220,6,7,7,7,0,254,236,104,104,48,48,224, + 192,5,5,5,6,0,0,248,176,96,200,248,4,10,10,5, + 0,254,48,96,96,96,192,96,96,96,96,48,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,4,10,10,5,0,254, + 192,96,96,96,48,96,96,96,96,192,6,2,2,7,0,3, + 116,184,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--14-100-100-100-P-87-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=15 x= 3 y= 8 dx=15 dy= 0 ascent=15 len=30 + Font Bounding box w=20 h=25 x=-2 y=-6 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =15 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB10[4003] U8G_SECTION(".progmem.u8g_font_ncenB10") = { + 0,20,25,254,250,11,2,24,5,41,32,255,253,15,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,128,128,0,192,192,192,3,4,4,5,1,7,160,160, + 160,160,7,10,10,8,0,0,20,20,20,126,40,40,252,80, + 80,80,7,13,13,8,0,255,16,124,214,150,208,240,124,30, + 22,210,214,124,16,12,11,22,13,0,0,48,128,111,0,201, + 0,202,0,210,0,100,96,4,208,9,144,9,144,17,160,16, + 192,12,11,22,13,0,0,30,0,51,0,51,0,50,0,28, + 0,60,224,78,64,199,128,195,144,227,224,124,192,1,4,4, + 3,1,7,128,128,128,128,4,13,13,5,0,254,16,32,96, + 64,192,192,192,192,192,64,96,32,16,4,13,13,5,0,254, + 128,64,96,32,48,48,48,48,48,32,96,64,128,5,5,5, + 6,0,6,32,168,112,168,32,7,7,7,8,0,1,16,16, + 16,254,16,16,16,2,5,5,4,1,254,192,192,192,64,128, + 4,2,2,5,0,3,240,240,2,3,3,4,1,0,192,192, + 192,4,11,11,5,0,0,16,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,108,198,198,198,198,198,198, + 198,108,56,5,11,11,8,1,0,48,240,48,48,48,48,48, + 48,48,48,120,7,11,11,8,0,0,120,206,198,6,6,12, + 24,48,98,254,254,7,11,11,8,0,0,120,206,198,6,12, + 60,6,6,198,206,120,7,11,11,8,0,0,12,28,28,44, + 44,76,76,254,12,12,30,7,11,11,8,0,0,126,124,64, + 64,92,110,6,6,198,206,120,7,11,11,8,0,0,60,102, + 198,192,220,238,198,198,198,230,120,7,11,11,8,0,0,254, + 254,132,140,12,24,24,24,48,48,48,7,11,11,8,0,0, + 120,230,198,198,244,60,94,198,198,206,60,7,11,11,8,0, + 0,60,206,198,198,198,238,118,6,198,204,120,2,7,7,4, + 1,0,192,192,192,0,192,192,192,2,9,9,4,1,254,192, + 192,192,0,192,192,192,64,128,7,7,7,8,0,1,2,14, + 56,224,56,14,2,7,3,3,8,0,3,254,0,254,7,7, + 7,8,0,1,128,224,56,14,56,224,128,6,11,11,7,0, + 0,120,204,204,12,24,48,32,0,48,48,48,13,11,22,14, + 0,0,15,192,56,112,99,152,108,216,204,216,217,152,217,176, + 219,176,205,192,96,16,63,224,10,11,22,11,0,0,12,0, + 12,0,22,0,22,0,18,0,35,0,35,0,63,0,65,128, + 65,128,227,192,9,11,22,10,0,0,254,0,99,0,99,0, + 99,0,102,0,127,0,97,128,97,128,97,128,99,128,254,0, + 10,11,22,11,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,192,0,192,0,96,64,112,192,31,0,11,11,22,12, + 0,0,255,0,97,192,96,192,96,96,96,96,96,96,96,96, + 96,96,96,192,97,192,255,0,9,11,22,10,0,0,255,128, + 97,128,96,128,100,128,100,0,124,0,100,0,100,128,96,128, + 97,128,255,128,9,11,22,10,0,0,255,128,97,128,96,128, + 100,128,100,0,124,0,100,0,100,0,96,0,96,0,240,0, + 11,11,22,12,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,195,224,192,192,96,192,113,192,30,64,11,11,22,12, + 0,0,241,224,96,192,96,192,96,192,96,192,127,192,96,192, + 96,192,96,192,96,192,241,224,4,11,11,7,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,11,11,9,0,0,30, + 12,12,12,12,12,12,204,204,156,112,11,11,22,12,0,0, + 243,192,97,0,98,0,100,0,104,0,124,0,110,0,103,0, + 99,128,97,192,243,224,9,11,22,10,0,0,240,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,128,96,128,97,128, + 255,128,13,11,22,14,0,0,240,120,112,112,112,112,88,176, + 88,176,88,176,77,48,77,48,77,48,70,48,230,120,11,11, + 22,12,0,0,224,224,112,64,120,64,92,64,76,64,70,64, + 71,64,67,192,65,192,64,192,224,64,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,9,11,22,10,0,0,255,0,99,128, + 97,128,97,128,99,128,126,0,96,0,96,0,96,0,96,0, + 240,0,11,14,28,12,0,253,31,0,113,192,96,192,192,96, + 192,96,192,96,192,96,220,96,102,192,115,192,31,0,3,32, + 3,160,1,192,11,11,22,12,0,0,255,0,99,128,97,128, + 97,128,99,0,126,0,99,0,99,0,97,128,97,160,241,192, + 9,11,22,10,0,0,61,0,227,0,193,0,193,0,240,0, + 126,0,15,128,129,128,129,128,195,128,190,0,10,11,22,11, + 0,0,255,192,204,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,30,0,11,11,22,12,0,0,240,224, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,96,64, + 48,128,31,0,10,11,22,11,0,0,241,192,96,128,96,128, + 49,0,49,0,49,0,26,0,26,0,26,0,12,0,12,0, + 13,11,22,14,0,0,247,184,99,16,99,16,99,16,53,160, + 53,160,53,160,53,160,24,192,24,192,24,192,11,11,22,12, + 0,0,249,224,112,192,48,128,25,0,13,0,14,0,22,0, + 19,0,33,128,97,192,243,224,10,11,22,11,0,0,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,12,0, + 12,0,30,0,8,11,11,9,0,0,255,195,135,142,12,24, + 48,113,225,195,255,4,13,13,5,0,254,240,192,192,192,192, + 192,192,192,192,192,192,192,240,6,11,11,7,0,0,128,128, + 64,64,32,32,16,16,8,8,4,4,13,13,5,0,254,240, + 48,48,48,48,48,48,48,48,48,48,48,240,7,7,7,8, + 0,4,16,16,56,40,108,68,198,7,1,1,7,0,254,254, + 4,3,3,6,1,8,192,96,16,8,7,7,9,0,0,60, + 102,6,62,198,206,119,9,11,22,10,0,0,224,0,96,0, + 96,0,96,0,110,0,115,0,97,128,97,128,97,128,99,0, + 94,0,7,7,7,8,0,0,60,102,198,192,194,102,60,9, + 11,22,10,0,0,7,0,3,0,3,0,3,0,59,0,103, + 0,195,0,195,0,195,0,103,0,59,128,8,7,7,9,0, + 0,60,102,195,255,192,99,62,6,11,11,6,0,0,56,108, + 108,96,248,96,96,96,96,96,240,7,11,11,8,0,253,6, + 124,198,198,124,128,252,126,130,134,124,9,11,22,10,0,0, + 224,0,96,0,96,0,96,0,110,0,115,0,99,0,99,0, + 99,0,99,0,247,128,4,10,10,5,0,0,96,96,0,224, + 96,96,96,96,96,240,5,13,13,5,254,253,24,24,0,56, + 24,24,24,24,24,24,24,216,112,8,11,11,9,0,0,224, + 96,96,96,103,102,108,120,108,102,231,4,11,11,5,0,0, + 224,96,96,96,96,96,96,96,96,96,240,14,7,14,15,0, + 0,238,112,115,152,99,24,99,24,99,24,99,24,247,188,9, + 7,14,10,0,0,238,0,115,0,99,0,99,0,99,0,99, + 0,247,128,8,7,7,9,0,0,60,102,195,195,195,102,60, + 9,10,20,10,0,253,238,0,115,0,97,128,97,128,97,128, + 115,0,110,0,96,0,96,0,240,0,9,10,20,9,0,253, + 61,0,103,0,195,0,195,0,195,0,103,0,59,0,3,0, + 3,0,7,128,7,7,7,7,0,0,238,118,96,96,96,96, + 240,6,7,7,7,0,0,124,196,224,120,28,140,248,6,10, + 10,6,0,0,32,32,96,248,96,96,96,100,100,56,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,8,7,7,7,255,0,247,98,98,52,52,24,24,13, + 7,14,12,255,0,247,184,99,16,99,16,53,160,53,160,24, + 192,24,192,8,7,7,9,0,0,231,102,60,24,60,70,231, + 8,10,10,7,255,253,247,98,98,52,52,24,24,16,208,224, + 6,7,7,7,0,0,252,140,24,48,96,196,252,5,13,13, + 6,0,254,24,32,96,96,96,64,128,64,96,96,96,32,24, + 1,11,11,8,3,0,128,128,128,128,128,128,128,128,128,128, + 128,5,13,13,6,0,254,192,32,48,48,48,16,8,16,48, + 48,48,32,192,7,2,2,8,0,4,118,220,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 4,0,1,2,11,11,5,1,253,192,192,192,0,64,64,192, + 192,192,192,192,7,9,9,8,0,255,4,60,110,206,208,210, + 118,60,32,8,11,11,9,0,0,28,38,102,96,252,48,48, + 32,225,191,222,8,8,8,9,0,2,153,126,102,195,195,102, + 126,153,10,11,22,11,0,0,241,192,96,128,49,0,49,0, + 26,0,26,0,63,0,12,0,63,0,12,0,30,0,1,11, + 11,8,3,0,128,128,128,128,0,0,128,128,128,128,128,6, + 13,13,7,0,254,56,108,76,96,120,156,204,228,120,28,204, + 200,112,5,2,2,7,1,8,216,216,11,11,22,12,0,0, + 14,0,49,128,64,64,79,64,153,32,144,32,153,32,78,64, + 64,64,49,128,14,0,5,7,7,6,0,4,224,48,112,176, + 216,0,248,7,5,5,8,0,1,54,108,216,108,54,7,4, + 4,8,0,2,254,2,2,2,4,2,2,5,0,3,240,240, + 11,11,22,12,0,0,14,0,49,128,64,64,94,64,137,32, + 142,32,138,32,91,64,64,64,49,128,14,0,5,1,1,7, + 1,8,248,4,4,4,6,1,7,96,144,144,96,7,7,7, + 8,0,1,16,16,254,16,16,0,254,5,6,6,5,255,5, + 112,152,24,48,96,248,5,6,6,5,255,5,112,152,48,24, + 152,112,4,3,3,6,1,8,48,96,128,9,10,20,10,0, + 253,247,0,99,0,99,0,99,0,99,0,103,0,123,128,64, + 0,96,0,96,0,9,11,22,10,0,0,127,128,251,0,251, + 0,251,0,251,0,123,0,27,0,27,0,27,0,27,0,63, + 128,2,2,2,5,1,4,192,192,3,3,3,5,1,253,64, + 32,224,4,6,6,5,0,5,96,224,96,96,96,240,5,7, + 7,6,0,4,112,216,216,216,112,0,248,7,5,5,8,0, + 1,216,108,54,108,216,11,11,22,12,0,0,97,0,227,0, + 98,0,102,0,100,0,252,192,9,192,26,192,20,192,55,224, + 32,192,11,11,22,12,0,0,97,0,227,0,98,0,102,0, + 100,0,253,192,10,96,24,96,16,192,49,128,35,224,12,11, + 22,12,255,0,112,128,153,128,49,0,27,0,154,0,118,96, + 4,224,13,96,10,96,27,240,16,96,6,11,11,7,0,253, + 48,48,48,0,16,48,96,192,204,204,120,10,15,30,11,0, + 0,48,0,24,0,4,0,0,0,12,0,12,0,22,0,22, + 0,18,0,35,0,35,0,63,0,65,128,65,128,227,192,10, + 15,30,11,0,0,3,0,6,0,8,0,0,0,12,0,12, + 0,22,0,22,0,18,0,35,0,35,0,63,0,65,128,65, + 128,227,192,10,15,30,11,0,0,4,0,14,0,17,0,0, + 0,12,0,12,0,22,0,22,0,18,0,35,0,35,0,63, + 0,65,128,65,128,227,192,10,14,28,11,0,0,29,0,46, + 0,0,0,12,0,12,0,22,0,22,0,18,0,35,0,35, + 0,63,0,65,128,65,128,227,192,10,14,28,11,0,0,51, + 0,51,0,0,0,12,0,12,0,22,0,22,0,18,0,35, + 0,35,0,63,0,65,128,65,128,227,192,10,15,30,11,0, + 0,12,0,18,0,12,0,0,0,12,0,12,0,22,0,22, + 0,18,0,35,0,35,0,63,0,65,128,65,128,227,192,15, + 11,22,15,255,0,15,254,5,134,5,130,9,146,9,144,17, + 240,31,144,33,146,33,130,65,134,227,254,10,14,28,11,0, + 253,31,64,112,192,96,64,192,64,192,0,192,0,192,0,192, + 0,96,64,112,192,31,0,4,0,2,0,14,0,9,15,30, + 10,0,0,24,0,12,0,2,0,0,0,255,128,97,128,96, + 128,100,128,100,0,124,0,100,0,100,128,96,128,97,128,255, + 128,9,15,30,10,0,0,3,0,6,0,8,0,0,0,255, + 128,97,128,96,128,100,128,100,0,124,0,100,0,100,128,96, + 128,97,128,255,128,9,15,30,10,0,0,4,0,14,0,17, + 0,0,0,255,128,97,128,96,128,100,128,100,0,124,0,100, + 0,100,128,96,128,97,128,255,128,9,14,28,10,0,0,51, + 0,51,0,0,0,255,128,97,128,96,128,100,128,100,0,124, + 0,100,0,100,128,96,128,97,128,255,128,4,15,15,7,1, + 0,192,96,16,0,240,96,96,96,96,96,96,96,96,96,240, + 5,15,15,7,1,0,24,48,64,0,240,96,96,96,96,96, + 96,96,96,96,240,5,15,15,7,1,0,32,112,136,0,240, + 96,96,96,96,96,96,96,96,96,240,6,14,14,7,0,0, + 204,204,0,120,48,48,48,48,48,48,48,48,48,120,11,11, + 22,12,0,0,255,0,97,192,96,192,96,96,96,96,248,96, + 96,96,96,96,96,192,97,192,255,0,11,14,28,12,0,0, + 14,128,23,0,0,0,224,224,112,64,120,64,92,64,76,64, + 70,64,71,64,67,192,65,192,64,192,224,64,11,15,30,12, + 0,0,24,0,12,0,2,0,0,0,31,0,113,192,96,192, + 192,96,192,96,192,96,192,96,192,96,96,192,113,192,31,0, + 11,15,30,12,0,0,0,192,1,128,2,0,0,0,31,0, + 113,192,96,192,192,96,192,96,192,96,192,96,192,96,96,192, + 113,192,31,0,11,15,30,12,0,0,4,0,14,0,17,0, + 0,0,31,0,113,192,96,192,192,96,192,96,192,96,192,96, + 192,96,96,192,113,192,31,0,11,14,28,12,0,0,14,128, + 23,0,0,0,31,0,113,192,96,192,192,96,192,96,192,96, + 192,96,192,96,96,192,113,192,31,0,11,14,28,12,0,0, + 25,128,25,128,0,0,31,0,113,192,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,113,192,31,0,8,7,7,8, + 0,1,195,102,60,24,60,102,195,11,11,22,12,0,0,31, + 32,113,192,96,192,193,96,194,96,196,96,200,96,208,96,96, + 192,113,192,159,0,11,15,30,12,0,0,12,0,6,0,1, + 0,0,0,240,224,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,48,128,31,0,11,15,30,12,0,0,1, + 128,3,0,4,0,0,0,240,224,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,48,128,31,0,11,15,30, + 12,0,0,4,0,14,0,17,0,0,0,240,224,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,48,128,31, + 0,11,14,28,12,0,0,25,128,25,128,0,0,240,224,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,96,64,48, + 128,31,0,10,15,30,11,0,0,1,128,3,0,4,0,0, + 0,241,192,96,128,49,0,49,0,26,0,26,0,12,0,12, + 0,12,0,12,0,30,0,9,11,22,10,0,0,240,0,96, + 0,127,0,99,128,97,128,97,128,99,128,126,0,96,0,96, + 0,240,0,8,11,11,9,0,0,30,35,99,98,108,98,99, + 99,99,99,238,8,11,11,9,0,0,48,24,4,0,60,102, + 6,62,198,206,119,8,11,11,9,0,0,12,24,32,0,60, + 102,6,62,198,206,119,8,11,11,9,0,0,16,56,108,0, + 60,102,6,62,198,206,119,8,10,10,9,0,0,52,88,0, + 60,102,6,62,198,206,119,8,10,10,9,0,0,108,108,0, + 60,102,6,62,198,206,119,8,11,11,9,0,0,24,36,24, + 0,60,102,6,62,198,206,119,13,7,14,14,0,0,57,224, + 103,48,6,24,63,248,198,0,199,24,121,240,7,10,10,8, + 0,253,60,102,198,192,194,102,60,16,8,56,8,11,11,9, + 0,0,48,24,4,0,60,102,195,255,192,99,62,8,11,11, + 9,0,0,12,24,32,0,60,102,195,255,192,99,62,8,11, + 11,9,0,0,16,56,108,0,60,102,195,255,192,99,62,8, + 10,10,9,0,0,108,108,0,60,102,195,255,192,99,62,4, + 11,11,5,0,0,192,96,16,0,224,96,96,96,96,96,240, + 4,11,11,5,0,0,48,96,128,0,224,96,96,96,96,96, + 240,5,11,11,5,0,0,32,112,216,0,224,96,96,96,96, + 96,240,5,10,10,5,0,0,216,216,0,224,96,96,96,96, + 96,240,8,11,11,9,0,0,198,56,120,140,62,102,195,195, + 195,102,60,9,10,20,10,0,0,26,0,44,0,0,0,238, + 0,115,0,99,0,99,0,99,0,99,0,247,128,8,11,11, + 9,0,0,48,24,4,0,60,102,195,195,195,102,60,8,11, + 11,9,0,0,12,24,32,0,60,102,195,195,195,102,60,8, + 11,11,9,0,0,16,56,108,0,60,102,195,195,195,102,60, + 8,10,10,9,0,0,52,88,0,60,102,195,195,195,102,60, + 8,10,10,9,0,0,108,108,0,60,102,195,195,195,102,60, + 8,7,7,8,0,1,24,24,0,255,0,24,24,8,9,9, + 9,0,255,2,60,110,203,211,211,102,60,64,9,11,22,10, + 0,0,48,0,24,0,4,0,0,0,247,128,99,0,99,0, + 99,0,99,0,103,0,59,128,9,11,22,10,0,0,12,0, + 24,0,32,0,0,0,247,128,99,0,99,0,99,0,99,0, + 103,0,59,128,9,11,22,10,0,0,8,0,28,0,54,0, + 0,0,247,128,99,0,99,0,99,0,99,0,103,0,59,128, + 9,10,20,10,0,0,54,0,54,0,0,0,247,128,99,0, + 99,0,99,0,99,0,103,0,59,128,8,14,14,7,255,253, + 6,12,16,0,247,98,98,52,52,24,24,16,208,224,9,14, + 28,10,0,253,224,0,96,0,96,0,96,0,110,0,115,0, + 97,128,97,128,97,128,115,0,110,0,96,0,96,0,240,0, + 8,13,13,7,255,253,54,54,0,247,98,98,52,52,24,24, + 16,208,224}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--14-100-100-100-P-87-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 3 y= 8 dx=15 dy= 0 ascent=12 len=28 + Font Bounding box w=20 h=25 x=-2 y=-6 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB10r[1853] U8G_SECTION(".progmem.u8g_font_ncenB10r") = { + 0,20,25,254,250,11,2,24,5,41,32,127,253,12,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,128,128,0,192,192,192,3,4,4,5,1,7,160,160, + 160,160,7,10,10,8,0,0,20,20,20,126,40,40,252,80, + 80,80,7,13,13,8,0,255,16,124,214,150,208,240,124,30, + 22,210,214,124,16,12,11,22,13,0,0,48,128,111,0,201, + 0,202,0,210,0,100,96,4,208,9,144,9,144,17,160,16, + 192,12,11,22,13,0,0,30,0,51,0,51,0,50,0,28, + 0,60,224,78,64,199,128,195,144,227,224,124,192,1,4,4, + 3,1,7,128,128,128,128,4,13,13,5,0,254,16,32,96, + 64,192,192,192,192,192,64,96,32,16,4,13,13,5,0,254, + 128,64,96,32,48,48,48,48,48,32,96,64,128,5,5,5, + 6,0,6,32,168,112,168,32,7,7,7,8,0,1,16,16, + 16,254,16,16,16,2,5,5,4,1,254,192,192,192,64,128, + 4,2,2,5,0,3,240,240,2,3,3,4,1,0,192,192, + 192,4,11,11,5,0,0,16,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,108,198,198,198,198,198,198, + 198,108,56,5,11,11,8,1,0,48,240,48,48,48,48,48, + 48,48,48,120,7,11,11,8,0,0,120,206,198,6,6,12, + 24,48,98,254,254,7,11,11,8,0,0,120,206,198,6,12, + 60,6,6,198,206,120,7,11,11,8,0,0,12,28,28,44, + 44,76,76,254,12,12,30,7,11,11,8,0,0,126,124,64, + 64,92,110,6,6,198,206,120,7,11,11,8,0,0,60,102, + 198,192,220,238,198,198,198,230,120,7,11,11,8,0,0,254, + 254,132,140,12,24,24,24,48,48,48,7,11,11,8,0,0, + 120,230,198,198,244,60,94,198,198,206,60,7,11,11,8,0, + 0,60,206,198,198,198,238,118,6,198,204,120,2,7,7,4, + 1,0,192,192,192,0,192,192,192,2,9,9,4,1,254,192, + 192,192,0,192,192,192,64,128,7,7,7,8,0,1,2,14, + 56,224,56,14,2,7,3,3,8,0,3,254,0,254,7,7, + 7,8,0,1,128,224,56,14,56,224,128,6,11,11,7,0, + 0,120,204,204,12,24,48,32,0,48,48,48,13,11,22,14, + 0,0,15,192,56,112,99,152,108,216,204,216,217,152,217,176, + 219,176,205,192,96,16,63,224,10,11,22,11,0,0,12,0, + 12,0,22,0,22,0,18,0,35,0,35,0,63,0,65,128, + 65,128,227,192,9,11,22,10,0,0,254,0,99,0,99,0, + 99,0,102,0,127,0,97,128,97,128,97,128,99,128,254,0, + 10,11,22,11,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,192,0,192,0,96,64,112,192,31,0,11,11,22,12, + 0,0,255,0,97,192,96,192,96,96,96,96,96,96,96,96, + 96,96,96,192,97,192,255,0,9,11,22,10,0,0,255,128, + 97,128,96,128,100,128,100,0,124,0,100,0,100,128,96,128, + 97,128,255,128,9,11,22,10,0,0,255,128,97,128,96,128, + 100,128,100,0,124,0,100,0,100,0,96,0,96,0,240,0, + 11,11,22,12,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,195,224,192,192,96,192,113,192,30,64,11,11,22,12, + 0,0,241,224,96,192,96,192,96,192,96,192,127,192,96,192, + 96,192,96,192,96,192,241,224,4,11,11,7,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,11,11,9,0,0,30, + 12,12,12,12,12,12,204,204,156,112,11,11,22,12,0,0, + 243,192,97,0,98,0,100,0,104,0,124,0,110,0,103,0, + 99,128,97,192,243,224,9,11,22,10,0,0,240,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,128,96,128,97,128, + 255,128,13,11,22,14,0,0,240,120,112,112,112,112,88,176, + 88,176,88,176,77,48,77,48,77,48,70,48,230,120,11,11, + 22,12,0,0,224,224,112,64,120,64,92,64,76,64,70,64, + 71,64,67,192,65,192,64,192,224,64,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,9,11,22,10,0,0,255,0,99,128, + 97,128,97,128,99,128,126,0,96,0,96,0,96,0,96,0, + 240,0,11,14,28,12,0,253,31,0,113,192,96,192,192,96, + 192,96,192,96,192,96,220,96,102,192,115,192,31,0,3,32, + 3,160,1,192,11,11,22,12,0,0,255,0,99,128,97,128, + 97,128,99,0,126,0,99,0,99,0,97,128,97,160,241,192, + 9,11,22,10,0,0,61,0,227,0,193,0,193,0,240,0, + 126,0,15,128,129,128,129,128,195,128,190,0,10,11,22,11, + 0,0,255,192,204,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,30,0,11,11,22,12,0,0,240,224, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,96,64, + 48,128,31,0,10,11,22,11,0,0,241,192,96,128,96,128, + 49,0,49,0,49,0,26,0,26,0,26,0,12,0,12,0, + 13,11,22,14,0,0,247,184,99,16,99,16,99,16,53,160, + 53,160,53,160,53,160,24,192,24,192,24,192,11,11,22,12, + 0,0,249,224,112,192,48,128,25,0,13,0,14,0,22,0, + 19,0,33,128,97,192,243,224,10,11,22,11,0,0,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,12,0, + 12,0,30,0,8,11,11,9,0,0,255,195,135,142,12,24, + 48,113,225,195,255,4,13,13,5,0,254,240,192,192,192,192, + 192,192,192,192,192,192,192,240,6,11,11,7,0,0,128,128, + 64,64,32,32,16,16,8,8,4,4,13,13,5,0,254,240, + 48,48,48,48,48,48,48,48,48,48,48,240,7,7,7,8, + 0,4,16,16,56,40,108,68,198,7,1,1,7,0,254,254, + 4,3,3,6,1,8,192,96,16,8,7,7,9,0,0,60, + 102,6,62,198,206,119,9,11,22,10,0,0,224,0,96,0, + 96,0,96,0,110,0,115,0,97,128,97,128,97,128,99,0, + 94,0,7,7,7,8,0,0,60,102,198,192,194,102,60,9, + 11,22,10,0,0,7,0,3,0,3,0,3,0,59,0,103, + 0,195,0,195,0,195,0,103,0,59,128,8,7,7,9,0, + 0,60,102,195,255,192,99,62,6,11,11,6,0,0,56,108, + 108,96,248,96,96,96,96,96,240,7,11,11,8,0,253,6, + 124,198,198,124,128,252,126,130,134,124,9,11,22,10,0,0, + 224,0,96,0,96,0,96,0,110,0,115,0,99,0,99,0, + 99,0,99,0,247,128,4,10,10,5,0,0,96,96,0,224, + 96,96,96,96,96,240,5,13,13,5,254,253,24,24,0,56, + 24,24,24,24,24,24,24,216,112,8,11,11,9,0,0,224, + 96,96,96,103,102,108,120,108,102,231,4,11,11,5,0,0, + 224,96,96,96,96,96,96,96,96,96,240,14,7,14,15,0, + 0,238,112,115,152,99,24,99,24,99,24,99,24,247,188,9, + 7,14,10,0,0,238,0,115,0,99,0,99,0,99,0,99, + 0,247,128,8,7,7,9,0,0,60,102,195,195,195,102,60, + 9,10,20,10,0,253,238,0,115,0,97,128,97,128,97,128, + 115,0,110,0,96,0,96,0,240,0,9,10,20,9,0,253, + 61,0,103,0,195,0,195,0,195,0,103,0,59,0,3,0, + 3,0,7,128,7,7,7,7,0,0,238,118,96,96,96,96, + 240,6,7,7,7,0,0,124,196,224,120,28,140,248,6,10, + 10,6,0,0,32,32,96,248,96,96,96,100,100,56,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,8,7,7,7,255,0,247,98,98,52,52,24,24,13, + 7,14,12,255,0,247,184,99,16,99,16,53,160,53,160,24, + 192,24,192,8,7,7,9,0,0,231,102,60,24,60,70,231, + 8,10,10,7,255,253,247,98,98,52,52,24,24,16,208,224, + 6,7,7,7,0,0,252,140,24,48,96,196,252,5,13,13, + 6,0,254,24,32,96,96,96,64,128,64,96,96,96,32,24, + 1,11,11,8,3,0,128,128,128,128,128,128,128,128,128,128, + 128,5,13,13,6,0,254,192,32,48,48,48,16,8,16,48, + 48,48,32,192,7,2,2,8,0,4,118,220,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--17-120-100-100-P-99-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y=10 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=22 h=27 x=-3 y=-7 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =16 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB12[4735] U8G_SECTION(".progmem.u8g_font_ncenB12") = { + 0,22,27,253,249,12,2,152,5,246,32,255,253,16,253,12, + 253,0,0,0,4,1,1,3,12,12,5,1,0,64,224,224, + 224,224,64,64,0,64,224,224,64,5,5,5,6,0,7,216, + 216,216,144,144,10,12,24,10,0,0,25,128,25,128,25,128, + 127,192,127,192,51,0,51,0,255,128,255,128,102,0,102,0, + 102,0,9,15,30,10,0,255,8,0,8,0,62,0,105,0, + 203,128,201,0,252,0,127,0,31,128,73,128,233,128,201,128, + 107,0,62,0,8,0,12,12,24,14,1,0,56,128,119,128, + 101,0,197,0,202,0,202,224,117,208,5,144,11,16,11,32, + 19,32,17,192,12,12,24,14,1,0,15,0,25,128,25,128, + 25,0,30,0,60,240,110,96,231,64,199,128,227,144,243,240, + 124,224,2,5,5,4,1,7,192,192,192,128,128,4,14,14, + 6,1,254,16,32,96,96,192,192,192,192,192,192,96,96,32, + 16,4,14,14,6,0,254,128,64,96,96,48,48,48,48,48, + 48,96,96,64,128,7,7,7,8,0,5,16,84,214,56,214, + 84,16,8,8,8,10,1,0,24,24,24,255,255,24,24,24, + 4,6,6,5,0,253,96,240,112,32,96,128,4,2,2,5, + 0,3,240,240,4,3,3,5,0,0,96,240,96,5,12,12, + 5,0,0,8,8,16,16,16,32,32,64,64,64,128,128,9, + 12,24,10,0,0,28,0,54,0,99,0,99,0,227,128,227, + 128,227,128,227,128,99,0,99,0,54,0,28,0,7,12,12, + 10,1,0,24,248,56,56,56,56,56,56,56,56,56,254,8, + 12,12,10,1,0,60,70,231,231,71,14,12,24,49,97,255, + 255,9,12,24,10,0,0,62,0,103,0,115,0,35,0,6, + 0,31,0,7,0,3,128,99,128,243,128,103,0,62,0,9, + 12,24,10,0,0,2,0,6,0,14,0,30,0,46,0,46, + 0,78,0,142,0,255,128,14,0,14,0,63,128,8,12,12, + 10,1,0,127,126,64,64,124,78,7,71,231,231,206,124,9, + 12,24,10,0,0,31,0,51,128,103,128,99,0,224,0,238, + 0,247,0,227,128,227,128,99,128,119,0,30,0,8,12,12, + 10,1,0,255,254,134,134,132,12,12,24,24,56,56,16,8, + 12,12,10,1,0,60,102,231,231,102,60,102,231,231,231,102, + 60,9,12,24,10,0,0,60,0,119,0,227,0,227,128,227, + 128,119,128,59,128,3,128,99,0,243,0,230,0,124,0,4, + 8,8,5,0,0,96,240,96,0,0,96,240,96,4,11,11, + 5,0,253,96,240,96,0,0,96,240,112,32,96,128,8,8, + 8,10,1,1,3,15,60,240,240,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,1,192,240, + 60,15,15,60,240,192,8,12,12,8,0,0,60,102,247,103, + 14,12,16,0,16,56,56,16,12,13,26,12,0,255,15,128, + 56,224,96,32,70,176,205,144,153,144,153,144,153,176,219,160, + 76,64,96,48,56,224,15,128,13,12,24,13,0,0,6,0, + 7,0,7,0,15,0,11,128,27,128,17,192,63,192,49,192, + 32,224,96,224,241,248,12,12,24,13,0,0,255,192,56,224, + 56,112,56,112,56,224,63,192,56,224,56,112,56,112,56,112, + 56,224,255,192,11,12,24,13,1,0,15,160,56,224,112,96, + 112,32,224,32,224,0,224,0,224,32,112,32,112,64,56,192, + 15,0,13,12,24,14,0,0,255,128,56,224,56,112,56,112, + 56,56,56,56,56,56,56,56,56,112,56,112,56,224,255,128, + 11,12,24,12,0,0,255,224,56,96,56,96,57,32,59,0, + 63,0,59,0,57,32,56,32,56,96,56,96,255,224,11,12, + 24,12,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,0,56,0,56,0,56,0,254,0,13,12,24,14, + 1,0,15,160,56,224,112,96,112,32,224,32,224,0,227,248, + 224,224,112,224,112,224,57,224,15,32,14,12,24,15,0,0, + 254,252,56,112,56,112,56,112,56,112,63,240,56,112,56,112, + 56,112,56,112,56,112,254,252,7,12,12,7,0,0,254,56, + 56,56,56,56,56,56,56,56,56,254,10,12,24,11,0,0, + 31,192,7,0,7,0,7,0,7,0,7,0,103,0,247,0, + 231,0,135,0,206,0,124,0,14,12,24,13,0,0,254,248, + 56,96,56,192,57,128,59,0,63,128,63,128,59,192,57,224, + 56,240,56,120,254,252,11,12,24,12,0,0,254,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,32,56,32,56,96, + 56,96,255,224,16,12,24,16,0,0,252,63,60,60,46,60, + 46,92,46,92,39,92,39,156,39,156,35,156,35,28,33,28, + 249,63,14,12,24,14,0,0,240,124,56,16,60,16,62,16, + 47,16,39,144,35,208,33,240,32,240,32,112,32,48,248,16, + 12,12,24,14,1,0,15,0,57,192,112,224,112,224,224,112, + 224,112,224,112,224,112,112,224,112,224,57,192,15,0,12,12, + 24,13,0,0,255,192,56,224,56,112,56,112,56,112,56,224, + 63,192,56,0,56,0,56,0,56,0,254,0,12,15,30,14, + 1,253,15,0,57,192,112,224,112,224,224,112,224,112,224,112, + 230,112,105,96,121,224,57,192,15,128,1,208,1,240,0,224, + 13,12,24,14,0,0,255,192,56,224,56,112,56,112,56,224, + 63,192,57,128,57,192,56,224,56,232,56,248,252,112,9,12, + 24,11,1,0,62,128,67,128,193,128,192,128,248,128,126,0, + 63,0,143,128,129,128,193,128,225,0,190,0,11,12,24,12, + 0,0,255,224,206,96,142,32,142,32,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,63,128,14,12,24,14,0,0, + 254,124,56,16,56,16,56,16,56,16,56,16,56,16,56,16, + 56,16,28,32,30,96,7,128,13,12,24,13,255,0,254,120, + 56,48,60,32,28,32,28,64,14,64,14,128,15,128,7,128, + 7,0,3,0,3,0,15,12,24,16,0,0,251,222,113,140, + 49,136,57,200,57,216,59,208,26,208,30,240,28,224,12,96, + 12,96,12,96,12,12,24,12,0,0,249,240,112,96,56,64, + 28,128,31,0,15,0,15,0,15,128,19,192,33,192,96,224, + 249,240,13,12,24,12,255,0,254,248,56,96,28,64,28,128, + 14,128,15,0,7,0,7,0,7,0,7,0,7,0,31,192, + 9,12,24,11,1,0,255,128,195,128,135,0,135,0,14,0, + 28,0,28,0,56,128,112,128,113,128,227,128,255,128,4,14, + 14,6,1,254,240,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,12,12,10,1,0,192,192,96,96,48,48,24,24, + 12,12,6,6,4,14,14,7,1,254,240,48,48,48,48,48, + 48,48,48,48,48,48,48,240,8,7,7,10,1,5,24,24, + 60,102,102,195,195,8,2,2,8,0,254,255,255,4,3,3, + 6,0,9,192,224,48,9,8,16,10,0,0,126,0,231,0, + 199,0,31,0,103,0,231,0,239,0,119,128,11,12,24,11, + 255,0,248,0,56,0,56,0,56,0,59,128,61,192,56,224, + 56,224,56,224,56,224,61,192,43,128,8,8,8,9,0,0, + 62,115,231,224,224,227,118,60,11,12,24,11,0,0,7,128, + 3,128,3,128,3,128,59,128,119,128,227,128,227,128,227,128, + 227,128,119,128,58,224,9,8,16,10,0,0,62,0,119,0, + 227,128,255,128,224,0,225,128,115,0,62,0,9,12,24,7, + 255,0,15,0,27,128,59,0,56,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,254,0,9,12,24,10,0,253, + 1,128,63,128,119,0,227,128,227,128,247,0,124,0,96,0, + 127,0,255,128,195,128,255,0,11,12,24,11,255,0,240,0, + 112,0,112,0,112,0,119,128,121,192,121,192,113,192,113,192, + 113,192,113,192,251,224,5,12,12,6,0,0,96,240,96,0, + 240,112,112,112,112,112,112,248,6,15,15,6,254,253,24,60, + 24,0,124,28,28,28,28,28,28,28,220,216,112,11,12,24, + 11,0,0,240,0,112,0,112,0,112,0,119,192,115,128,119, + 0,126,0,127,0,115,128,113,192,251,224,5,12,12,6,0, + 0,240,112,112,112,112,112,112,112,112,112,112,248,15,8,16, + 16,0,0,247,56,123,220,115,156,115,156,115,156,115,156,115, + 156,251,190,11,8,16,11,255,0,247,128,121,192,113,192,113, + 192,113,192,113,192,113,192,251,224,10,8,16,11,0,0,30, + 0,115,128,225,192,225,192,225,192,225,192,115,128,30,0,10, + 11,22,11,255,253,247,0,123,128,113,192,113,192,113,192,113, + 192,123,128,119,0,112,0,112,0,248,0,10,11,22,10,255, + 253,62,128,115,128,227,128,227,128,227,128,227,128,115,128,63, + 128,3,128,3,128,7,192,9,8,16,9,0,0,247,0,123, + 128,115,0,112,0,112,0,112,0,112,0,248,0,7,8,8, + 8,0,0,122,198,226,252,126,142,198,188,6,11,11,7,0, + 0,16,16,48,252,112,112,112,112,116,124,56,11,8,16,11, + 255,0,243,192,113,192,113,192,113,192,113,192,113,192,123,192, + 62,224,10,8,16,10,0,0,251,192,113,128,115,0,59,0, + 58,0,30,0,28,0,12,0,15,8,16,15,0,0,251,222, + 113,140,57,200,59,216,30,240,30,240,12,96,12,96,9,8, + 16,10,0,0,251,128,113,0,62,0,28,0,28,0,62,0, + 71,0,239,128,10,11,22,10,255,253,251,192,113,128,57,128, + 57,0,31,0,14,0,14,0,6,0,52,0,116,0,56,0, + 7,8,8,9,0,0,254,204,156,56,48,114,230,254,4,14, + 14,6,1,254,48,96,96,96,96,96,192,96,96,96,96,96, + 96,48,2,12,12,10,4,0,192,192,192,192,192,192,192,192, + 192,192,192,192,4,14,14,6,0,254,192,96,96,96,96,96, + 48,96,96,96,96,96,96,192,8,3,3,10,1,3,114,255, + 78,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,0,0,0,4,1,1,3,12,12,5,1,253,64,224, + 224,64,0,64,64,224,224,224,224,64,8,12,12,10,0,254, + 1,2,62,115,231,231,232,233,114,60,32,64,9,12,24,10, + 0,0,31,0,57,128,115,128,115,128,113,0,56,0,254,0, + 24,0,24,0,120,128,191,0,110,0,8,8,8,10,1,2, + 90,255,102,195,195,102,255,90,10,12,24,10,0,0,251,192, + 113,128,49,0,59,0,26,0,30,0,63,0,12,0,63,0, + 12,0,12,0,63,0,2,12,12,10,4,0,192,192,192,192, + 192,0,0,192,192,192,192,192,6,15,15,9,1,253,56,76, + 76,96,48,120,140,132,196,120,48,24,200,200,112,5,2,2, + 6,0,9,216,216,12,12,24,12,0,0,31,128,57,192,96, + 96,207,176,217,48,152,16,152,16,217,176,207,48,96,96,57, + 192,31,128,6,7,7,6,0,5,112,152,120,216,108,0,248, + 6,5,5,8,1,2,36,108,216,108,36,8,5,5,10,0, + 2,255,255,3,3,3,4,2,2,5,0,3,240,240,12,12, + 24,12,0,0,31,128,57,192,96,96,223,48,201,48,142,16, + 139,16,201,176,221,240,96,96,57,192,31,128,5,1,1,6, + 0,10,248,5,5,5,7,1,7,112,216,136,216,112,8,9, + 9,10,1,0,24,24,255,255,24,24,0,255,255,5,7,7, + 6,0,5,112,152,216,16,32,120,248,6,7,7,6,0,5, + 120,204,76,24,76,204,120,4,3,3,6,1,9,48,112,192, + 11,11,22,11,0,253,243,192,113,192,113,192,113,192,113,192, + 113,192,123,192,110,224,96,0,112,0,112,0,11,12,24,12, + 0,0,127,224,249,128,249,128,249,128,249,128,121,128,25,128, + 25,128,25,128,25,128,25,128,127,224,4,3,3,5,0,3, + 96,240,96,4,4,4,6,0,253,64,96,48,224,4,7,7, + 6,1,5,32,224,96,96,96,96,240,5,7,7,6,0,5, + 112,216,216,216,112,0,248,6,5,5,8,1,2,144,216,108, + 216,144,12,12,24,14,1,0,32,64,224,192,97,128,97,0, + 99,0,98,32,246,96,12,224,9,32,27,240,48,96,32,240, + 12,12,24,14,1,0,32,64,224,192,97,128,97,0,99,0, + 98,224,247,48,13,176,8,32,24,64,48,240,33,240,13,12, + 24,14,0,0,120,32,204,96,76,192,24,128,77,128,205,16, + 123,48,6,112,4,144,13,248,24,48,16,120,8,12,12,8, + 0,253,8,28,28,8,0,8,48,112,230,239,102,60,13,16, + 32,13,0,0,24,0,28,0,6,0,0,0,6,0,7,0, + 7,0,15,0,11,128,27,128,17,192,63,192,49,192,32,224, + 96,224,241,248,13,16,32,13,0,0,1,128,3,128,6,0, + 0,0,6,0,7,0,7,0,15,0,11,128,27,128,17,192, + 63,192,49,192,32,224,96,224,241,248,13,16,32,13,0,0, + 2,0,7,0,13,128,0,0,6,0,7,0,7,0,15,0, + 11,128,27,128,17,192,63,192,49,192,32,224,96,224,241,248, + 13,15,30,13,0,0,14,128,23,0,0,0,6,0,7,0, + 7,0,15,0,11,128,27,128,17,192,63,192,49,192,32,224, + 96,224,241,248,13,15,30,13,0,0,25,128,25,128,0,0, + 6,0,7,0,7,0,15,0,11,128,27,128,17,192,63,192, + 49,192,32,224,96,224,241,248,13,16,32,13,0,0,6,0, + 11,0,6,0,0,0,6,0,7,0,7,0,15,0,11,128, + 27,128,17,192,63,192,49,192,32,224,96,224,241,248,16,12, + 24,16,255,0,31,255,7,195,5,195,5,201,9,216,9,248, + 17,216,31,201,33,193,33,195,97,195,247,255,11,15,30,13, + 1,253,15,160,56,224,112,96,112,32,224,32,224,0,224,0, + 224,32,112,32,112,64,56,192,15,0,12,0,6,0,28,0, + 11,16,32,12,0,0,24,0,28,0,6,0,0,0,255,224, + 56,96,56,96,57,32,59,0,63,0,59,0,57,32,56,32, + 56,96,56,96,255,224,11,16,32,12,0,0,1,128,3,128, + 6,0,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,32,56,32,56,96,56,96,255,224,11,16,32,12, + 0,0,2,0,7,0,13,128,0,0,255,224,56,96,56,96, + 57,32,59,0,63,0,59,0,57,32,56,32,56,96,56,96, + 255,224,11,15,30,12,0,0,25,128,25,128,0,0,255,224, + 56,96,56,96,57,32,59,0,63,0,59,0,57,32,56,32, + 56,96,56,96,255,224,7,16,16,7,0,0,96,112,24,0, + 254,56,56,56,56,56,56,56,56,56,56,254,7,16,16,7, + 0,0,12,28,48,0,254,56,56,56,56,56,56,56,56,56, + 56,254,7,16,16,7,0,0,16,56,108,0,254,56,56,56, + 56,56,56,56,56,56,56,254,7,15,15,7,0,0,108,108, + 0,254,56,56,56,56,56,56,56,56,56,56,254,13,12,24, + 14,0,0,255,128,56,224,56,112,56,112,56,56,126,56,56, + 56,56,56,56,112,56,112,56,224,255,128,14,15,30,14,0, + 0,7,64,11,128,0,0,240,124,56,16,60,16,62,16,47, + 16,39,144,35,208,33,240,32,240,32,112,32,48,248,16,12, + 16,32,14,1,0,24,0,28,0,6,0,0,0,15,0,57, + 192,112,224,112,224,224,112,224,112,224,112,224,112,112,224,112, + 224,57,192,15,0,12,16,32,14,1,0,1,128,3,128,6, + 0,0,0,15,0,57,192,112,224,112,224,224,112,224,112,224, + 112,224,112,112,224,112,224,57,192,15,0,12,16,32,14,1, + 0,6,0,15,0,25,128,0,0,15,0,57,192,112,224,112, + 224,224,112,224,112,224,112,224,112,112,224,112,224,57,192,15, + 0,12,15,30,14,1,0,14,128,23,0,0,0,15,0,57, + 192,112,224,112,224,224,112,224,112,224,112,224,112,112,224,112, + 224,57,192,15,0,12,15,30,14,1,0,25,128,25,128,0, + 0,15,0,57,192,112,224,112,224,224,112,224,112,224,112,224, + 112,112,224,112,224,57,192,15,0,8,8,8,10,1,0,66, + 231,126,56,28,126,231,66,12,14,28,14,1,255,0,16,15, + 32,57,192,112,224,112,224,225,112,226,112,228,112,232,112,112, + 224,112,224,57,192,79,0,128,0,14,16,32,14,0,0,6, + 0,7,0,1,128,0,0,254,124,56,16,56,16,56,16,56, + 16,56,16,56,16,56,16,56,16,28,32,30,96,7,128,14, + 16,32,14,0,0,0,96,0,224,1,128,0,0,254,124,56, + 16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,28, + 32,30,96,7,128,14,16,32,14,0,0,1,128,3,192,6, + 96,0,0,254,124,56,16,56,16,56,16,56,16,56,16,56, + 16,56,16,56,16,28,32,30,96,7,128,14,15,30,14,0, + 0,6,96,6,96,0,0,254,124,56,16,56,16,56,16,56, + 16,56,16,56,16,56,16,56,16,28,32,30,96,7,128,13, + 16,32,12,255,0,0,192,1,192,3,0,0,0,254,248,56, + 96,28,64,28,128,14,128,15,0,7,0,7,0,7,0,7, + 0,7,0,31,192,12,12,24,13,0,0,254,0,56,0,63, + 192,56,224,56,112,56,112,56,112,56,224,63,192,56,0,56, + 0,254,0,10,12,24,10,0,0,31,0,51,128,115,128,115, + 128,115,0,119,0,113,128,113,192,113,192,113,192,123,128,247, + 0,9,12,24,10,0,0,96,0,112,0,24,0,0,0,126, + 0,231,0,199,0,31,0,103,0,231,0,239,0,119,128,9, + 12,24,10,0,0,6,0,14,0,24,0,0,0,126,0,231, + 0,199,0,31,0,103,0,231,0,239,0,119,128,9,12,24, + 10,0,0,16,0,56,0,108,0,0,0,126,0,231,0,199, + 0,31,0,103,0,231,0,239,0,119,128,9,11,22,10,0, + 0,58,0,92,0,0,0,126,0,231,0,199,0,31,0,103, + 0,231,0,239,0,119,128,9,11,22,10,0,0,108,0,108, + 0,0,0,126,0,231,0,199,0,31,0,103,0,231,0,239, + 0,119,128,9,12,24,10,0,0,24,0,44,0,24,0,0, + 0,126,0,231,0,199,0,31,0,103,0,231,0,239,0,119, + 128,13,8,16,15,0,0,125,224,231,48,199,56,63,248,103, + 0,231,24,239,48,123,224,8,11,11,9,0,253,62,115,231, + 227,224,227,118,60,24,12,56,9,12,24,10,0,0,48,0, + 56,0,12,0,0,0,62,0,119,0,227,128,255,128,224,0, + 225,128,115,0,62,0,9,12,24,10,0,0,6,0,14,0, + 24,0,0,0,62,0,119,0,227,128,255,128,224,0,225,128, + 115,0,62,0,9,12,24,10,0,0,8,0,28,0,54,0, + 0,0,62,0,119,0,227,128,255,128,224,0,225,128,115,0, + 62,0,9,11,22,10,0,0,54,0,54,0,0,0,62,0, + 119,0,227,128,255,128,224,0,225,128,115,0,62,0,5,12, + 12,6,0,0,192,224,48,0,240,112,112,112,112,112,112,248, + 5,12,12,6,0,0,24,56,96,0,240,112,112,112,112,112, + 112,248,5,12,12,6,0,0,32,112,216,0,240,112,112,112, + 112,112,112,248,5,11,11,6,0,0,216,216,0,240,112,112, + 112,112,112,112,248,9,13,26,11,0,0,96,0,59,0,28, + 0,54,0,7,0,31,0,119,128,227,128,227,128,227,128,227, + 128,119,0,28,0,11,11,22,11,255,0,14,128,23,0,0, + 0,247,128,121,192,113,192,113,192,113,192,113,192,113,192,251, + 224,10,12,24,11,0,0,24,0,28,0,6,0,0,0,63, + 0,115,128,225,192,225,192,225,192,225,192,115,128,63,0,10, + 12,24,11,0,0,3,0,7,0,12,0,0,0,63,0,115, + 128,225,192,225,192,225,192,225,192,115,128,63,0,10,12,24, + 11,0,0,12,0,30,0,51,0,0,0,63,0,115,128,225, + 192,225,192,225,192,225,192,115,128,63,0,10,11,22,11,0, + 0,29,0,46,0,0,0,63,0,115,128,225,192,225,192,225, + 192,225,192,115,128,63,0,10,11,22,11,0,0,54,0,54, + 0,0,0,63,0,115,128,225,192,225,192,225,192,225,192,115, + 128,63,0,8,8,8,10,1,0,24,24,0,255,255,0,24, + 24,9,12,24,10,0,254,0,128,1,0,30,0,115,0,231, + 128,235,128,235,128,243,128,103,0,60,0,64,0,128,0,11, + 12,24,11,255,0,24,0,28,0,6,0,0,0,243,192,113, + 192,113,192,113,192,113,192,113,192,123,192,62,224,11,12,24, + 11,255,0,3,0,7,0,12,0,0,0,243,192,113,192,113, + 192,113,192,113,192,113,192,123,192,62,224,11,12,24,11,255, + 0,4,0,14,0,27,0,0,0,243,192,113,192,113,192,113, + 192,113,192,113,192,123,192,62,224,11,11,22,11,255,0,27, + 0,27,0,0,0,243,192,113,192,113,192,113,192,113,192,113, + 192,123,192,62,224,11,15,30,10,255,253,3,0,7,0,12, + 0,0,0,251,224,112,192,56,128,25,128,29,0,15,0,14, + 0,6,0,52,0,116,0,56,0,10,15,30,11,255,253,240, + 0,112,0,112,0,112,0,119,0,123,128,113,192,113,192,113, + 192,113,192,123,128,119,0,112,0,112,0,252,0,11,14,28, + 10,255,253,27,0,27,0,0,0,251,224,48,192,56,128,25, + 128,29,0,15,0,14,0,6,0,52,0,116,0,56,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--17-120-100-100-P-99-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=15 x= 4 y= 9 dx=16 dy= 0 ascent=14 len=30 + Font Bounding box w=22 h=27 x=-3 y=-7 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB12r[2194] U8G_SECTION(".progmem.u8g_font_ncenB12r") = { + 0,22,27,253,249,12,2,152,5,246,32,127,253,14,253,12, + 253,0,0,0,4,1,1,3,12,12,5,1,0,64,224,224, + 224,224,64,64,0,64,224,224,64,5,5,5,6,0,7,216, + 216,216,144,144,10,12,24,10,0,0,25,128,25,128,25,128, + 127,192,127,192,51,0,51,0,255,128,255,128,102,0,102,0, + 102,0,9,15,30,10,0,255,8,0,8,0,62,0,105,0, + 203,128,201,0,252,0,127,0,31,128,73,128,233,128,201,128, + 107,0,62,0,8,0,12,12,24,14,1,0,56,128,119,128, + 101,0,197,0,202,0,202,224,117,208,5,144,11,16,11,32, + 19,32,17,192,12,12,24,14,1,0,15,0,25,128,25,128, + 25,0,30,0,60,240,110,96,231,64,199,128,227,144,243,240, + 124,224,2,5,5,4,1,7,192,192,192,128,128,4,14,14, + 6,1,254,16,32,96,96,192,192,192,192,192,192,96,96,32, + 16,4,14,14,6,0,254,128,64,96,96,48,48,48,48,48, + 48,96,96,64,128,7,7,7,8,0,5,16,84,214,56,214, + 84,16,8,8,8,10,1,0,24,24,24,255,255,24,24,24, + 4,6,6,5,0,253,96,240,112,32,96,128,4,2,2,5, + 0,3,240,240,4,3,3,5,0,0,96,240,96,5,12,12, + 5,0,0,8,8,16,16,16,32,32,64,64,64,128,128,9, + 12,24,10,0,0,28,0,54,0,99,0,99,0,227,128,227, + 128,227,128,227,128,99,0,99,0,54,0,28,0,7,12,12, + 10,1,0,24,248,56,56,56,56,56,56,56,56,56,254,8, + 12,12,10,1,0,60,70,231,231,71,14,12,24,49,97,255, + 255,9,12,24,10,0,0,62,0,103,0,115,0,35,0,6, + 0,31,0,7,0,3,128,99,128,243,128,103,0,62,0,9, + 12,24,10,0,0,2,0,6,0,14,0,30,0,46,0,46, + 0,78,0,142,0,255,128,14,0,14,0,63,128,8,12,12, + 10,1,0,127,126,64,64,124,78,7,71,231,231,206,124,9, + 12,24,10,0,0,31,0,51,128,103,128,99,0,224,0,238, + 0,247,0,227,128,227,128,99,128,119,0,30,0,8,12,12, + 10,1,0,255,254,134,134,132,12,12,24,24,56,56,16,8, + 12,12,10,1,0,60,102,231,231,102,60,102,231,231,231,102, + 60,9,12,24,10,0,0,60,0,119,0,227,0,227,128,227, + 128,119,128,59,128,3,128,99,0,243,0,230,0,124,0,4, + 8,8,5,0,0,96,240,96,0,0,96,240,96,4,11,11, + 5,0,253,96,240,96,0,0,96,240,112,32,96,128,8,8, + 8,10,1,1,3,15,60,240,240,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,1,192,240, + 60,15,15,60,240,192,8,12,12,8,0,0,60,102,247,103, + 14,12,16,0,16,56,56,16,12,13,26,12,0,255,15,128, + 56,224,96,32,70,176,205,144,153,144,153,144,153,176,219,160, + 76,64,96,48,56,224,15,128,13,12,24,13,0,0,6,0, + 7,0,7,0,15,0,11,128,27,128,17,192,63,192,49,192, + 32,224,96,224,241,248,12,12,24,13,0,0,255,192,56,224, + 56,112,56,112,56,224,63,192,56,224,56,112,56,112,56,112, + 56,224,255,192,11,12,24,13,1,0,15,160,56,224,112,96, + 112,32,224,32,224,0,224,0,224,32,112,32,112,64,56,192, + 15,0,13,12,24,14,0,0,255,128,56,224,56,112,56,112, + 56,56,56,56,56,56,56,56,56,112,56,112,56,224,255,128, + 11,12,24,12,0,0,255,224,56,96,56,96,57,32,59,0, + 63,0,59,0,57,32,56,32,56,96,56,96,255,224,11,12, + 24,12,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,0,56,0,56,0,56,0,254,0,13,12,24,14, + 1,0,15,160,56,224,112,96,112,32,224,32,224,0,227,248, + 224,224,112,224,112,224,57,224,15,32,14,12,24,15,0,0, + 254,252,56,112,56,112,56,112,56,112,63,240,56,112,56,112, + 56,112,56,112,56,112,254,252,7,12,12,7,0,0,254,56, + 56,56,56,56,56,56,56,56,56,254,10,12,24,11,0,0, + 31,192,7,0,7,0,7,0,7,0,7,0,103,0,247,0, + 231,0,135,0,206,0,124,0,14,12,24,13,0,0,254,248, + 56,96,56,192,57,128,59,0,63,128,63,128,59,192,57,224, + 56,240,56,120,254,252,11,12,24,12,0,0,254,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,32,56,32,56,96, + 56,96,255,224,16,12,24,16,0,0,252,63,60,60,46,60, + 46,92,46,92,39,92,39,156,39,156,35,156,35,28,33,28, + 249,63,14,12,24,14,0,0,240,124,56,16,60,16,62,16, + 47,16,39,144,35,208,33,240,32,240,32,112,32,48,248,16, + 12,12,24,14,1,0,15,0,57,192,112,224,112,224,224,112, + 224,112,224,112,224,112,112,224,112,224,57,192,15,0,12,12, + 24,13,0,0,255,192,56,224,56,112,56,112,56,112,56,224, + 63,192,56,0,56,0,56,0,56,0,254,0,12,15,30,14, + 1,253,15,0,57,192,112,224,112,224,224,112,224,112,224,112, + 230,112,105,96,121,224,57,192,15,128,1,208,1,240,0,224, + 13,12,24,14,0,0,255,192,56,224,56,112,56,112,56,224, + 63,192,57,128,57,192,56,224,56,232,56,248,252,112,9,12, + 24,11,1,0,62,128,67,128,193,128,192,128,248,128,126,0, + 63,0,143,128,129,128,193,128,225,0,190,0,11,12,24,12, + 0,0,255,224,206,96,142,32,142,32,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,63,128,14,12,24,14,0,0, + 254,124,56,16,56,16,56,16,56,16,56,16,56,16,56,16, + 56,16,28,32,30,96,7,128,13,12,24,13,255,0,254,120, + 56,48,60,32,28,32,28,64,14,64,14,128,15,128,7,128, + 7,0,3,0,3,0,15,12,24,16,0,0,251,222,113,140, + 49,136,57,200,57,216,59,208,26,208,30,240,28,224,12,96, + 12,96,12,96,12,12,24,12,0,0,249,240,112,96,56,64, + 28,128,31,0,15,0,15,0,15,128,19,192,33,192,96,224, + 249,240,13,12,24,12,255,0,254,248,56,96,28,64,28,128, + 14,128,15,0,7,0,7,0,7,0,7,0,7,0,31,192, + 9,12,24,11,1,0,255,128,195,128,135,0,135,0,14,0, + 28,0,28,0,56,128,112,128,113,128,227,128,255,128,4,14, + 14,6,1,254,240,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,12,12,10,1,0,192,192,96,96,48,48,24,24, + 12,12,6,6,4,14,14,7,1,254,240,48,48,48,48,48, + 48,48,48,48,48,48,48,240,8,7,7,10,1,5,24,24, + 60,102,102,195,195,8,2,2,8,0,254,255,255,4,3,3, + 6,0,9,192,224,48,9,8,16,10,0,0,126,0,231,0, + 199,0,31,0,103,0,231,0,239,0,119,128,11,12,24,11, + 255,0,248,0,56,0,56,0,56,0,59,128,61,192,56,224, + 56,224,56,224,56,224,61,192,43,128,8,8,8,9,0,0, + 62,115,231,224,224,227,118,60,11,12,24,11,0,0,7,128, + 3,128,3,128,3,128,59,128,119,128,227,128,227,128,227,128, + 227,128,119,128,58,224,9,8,16,10,0,0,62,0,119,0, + 227,128,255,128,224,0,225,128,115,0,62,0,9,12,24,7, + 255,0,15,0,27,128,59,0,56,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,254,0,9,12,24,10,0,253, + 1,128,63,128,119,0,227,128,227,128,247,0,124,0,96,0, + 127,0,255,128,195,128,255,0,11,12,24,11,255,0,240,0, + 112,0,112,0,112,0,119,128,121,192,121,192,113,192,113,192, + 113,192,113,192,251,224,5,12,12,6,0,0,96,240,96,0, + 240,112,112,112,112,112,112,248,6,15,15,6,254,253,24,60, + 24,0,124,28,28,28,28,28,28,28,220,216,112,11,12,24, + 11,0,0,240,0,112,0,112,0,112,0,119,192,115,128,119, + 0,126,0,127,0,115,128,113,192,251,224,5,12,12,6,0, + 0,240,112,112,112,112,112,112,112,112,112,112,248,15,8,16, + 16,0,0,247,56,123,220,115,156,115,156,115,156,115,156,115, + 156,251,190,11,8,16,11,255,0,247,128,121,192,113,192,113, + 192,113,192,113,192,113,192,251,224,10,8,16,11,0,0,30, + 0,115,128,225,192,225,192,225,192,225,192,115,128,30,0,10, + 11,22,11,255,253,247,0,123,128,113,192,113,192,113,192,113, + 192,123,128,119,0,112,0,112,0,248,0,10,11,22,10,255, + 253,62,128,115,128,227,128,227,128,227,128,227,128,115,128,63, + 128,3,128,3,128,7,192,9,8,16,9,0,0,247,0,123, + 128,115,0,112,0,112,0,112,0,112,0,248,0,7,8,8, + 8,0,0,122,198,226,252,126,142,198,188,6,11,11,7,0, + 0,16,16,48,252,112,112,112,112,116,124,56,11,8,16,11, + 255,0,243,192,113,192,113,192,113,192,113,192,113,192,123,192, + 62,224,10,8,16,10,0,0,251,192,113,128,115,0,59,0, + 58,0,30,0,28,0,12,0,15,8,16,15,0,0,251,222, + 113,140,57,200,59,216,30,240,30,240,12,96,12,96,9,8, + 16,10,0,0,251,128,113,0,62,0,28,0,28,0,62,0, + 71,0,239,128,10,11,22,10,255,253,251,192,113,128,57,128, + 57,0,31,0,14,0,14,0,6,0,52,0,116,0,56,0, + 7,8,8,9,0,0,254,204,156,56,48,114,230,254,4,14, + 14,6,1,254,48,96,96,96,96,96,192,96,96,96,96,96, + 96,48,2,12,12,10,4,0,192,192,192,192,192,192,192,192, + 192,192,192,192,4,14,14,6,0,254,192,96,96,96,96,96, + 48,96,96,96,96,96,96,192,8,3,3,10,1,3,114,255, + 78,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--20-140-100-100-P-113-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=19 x= 4 y=11 dx=21 dy= 0 ascent=19 len=42 + Font Bounding box w=24 h=32 x=-3 y=-8 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =19 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB14[5558] U8G_SECTION(".progmem.u8g_font_ncenB14") = { + 0,24,32,253,248,14,3,71,7,51,32,255,252,19,252,14, + 252,0,0,0,5,0,1,4,14,14,6,1,0,96,240,240, + 240,240,240,96,96,96,0,96,240,240,96,5,5,5,8,1, + 9,216,216,216,216,216,11,12,24,12,0,1,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,255,192,255,192,54,0, + 54,0,54,0,9,18,36,11,1,254,8,0,8,0,62,0, + 107,128,203,128,201,128,232,0,252,0,255,0,127,128,31,128, + 11,128,201,128,233,128,235,0,62,0,8,0,8,0,14,15, + 30,15,0,255,56,192,103,64,196,192,196,128,197,128,201,0, + 115,0,2,56,6,100,4,196,12,196,8,196,24,200,16,112, + 16,0,16,14,28,17,1,0,7,128,12,192,24,192,24,192, + 29,128,31,0,14,62,63,24,119,144,227,224,225,224,224,241, + 241,254,127,28,2,5,5,5,1,9,192,192,192,192,192,5, + 16,16,6,0,254,24,48,112,96,224,192,192,192,192,192,192, + 224,96,112,48,24,5,16,16,6,0,254,192,96,112,48,56, + 24,24,24,24,24,24,56,48,112,96,192,7,7,7,8,0, + 7,56,146,214,56,214,146,56,10,10,20,11,0,0,12,0, + 12,0,12,0,12,0,255,192,255,192,12,0,12,0,12,0, + 12,0,4,7,7,5,0,253,96,240,240,112,32,64,128,5, + 3,3,6,0,3,248,248,248,4,4,4,5,0,0,96,240, + 240,96,6,14,14,7,0,0,12,12,8,24,24,16,48,48, + 32,96,96,64,192,192,9,14,28,11,1,0,28,0,119,0, + 99,0,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,99,0,119,0,28,0,7,14,14,11,2,0,24,56, + 248,56,56,56,56,56,56,56,56,56,56,254,9,14,28,11, + 1,0,30,0,103,0,227,128,227,128,99,128,3,128,7,0, + 7,0,14,0,24,0,48,0,96,128,255,128,255,128,9,14, + 28,11,1,0,30,0,103,0,227,128,227,128,99,128,3,0, + 28,0,3,0,3,128,99,128,227,128,227,128,103,0,62,0, + 9,14,28,11,1,0,1,0,3,0,7,0,15,0,15,0, + 23,0,39,0,71,0,71,0,135,0,255,128,7,0,7,0, + 15,128,9,14,28,11,1,0,127,128,127,0,64,0,64,0, + 64,0,126,0,71,0,3,128,3,128,99,128,227,128,227,128, + 103,0,62,0,9,14,28,11,1,0,31,0,115,128,99,128, + 227,0,224,0,238,0,247,0,227,128,227,128,227,128,227,128, + 99,128,115,0,28,0,9,14,28,11,1,0,255,128,255,128, + 129,128,131,0,6,0,6,0,12,0,12,0,28,0,28,0, + 56,0,56,0,56,0,56,0,9,14,28,11,1,0,28,0, + 99,0,193,128,193,128,225,128,251,0,126,0,63,0,79,128, + 195,128,193,128,193,128,227,0,60,0,9,14,28,11,1,0, + 28,0,103,0,227,0,227,128,227,128,227,128,227,128,119,128, + 59,128,3,128,99,128,227,0,231,0,124,0,4,9,9,6, + 1,0,96,240,240,96,0,96,240,240,96,4,12,12,6,1, + 253,96,240,240,96,0,96,240,240,112,32,64,128,10,10,20, + 11,0,0,0,192,3,192,15,0,60,0,240,0,240,0,60, + 0,15,0,3,192,0,192,9,6,12,11,1,2,255,128,255, + 128,0,0,0,0,255,128,255,128,10,10,20,11,0,0,192, + 0,240,0,60,0,15,0,3,192,3,192,15,0,60,0,240, + 0,192,0,9,14,28,10,0,0,31,0,103,128,227,128,227, + 128,99,128,3,0,6,0,12,0,24,0,0,0,24,0,60, + 0,60,0,24,0,15,14,28,16,0,0,7,240,28,12,48, + 4,99,230,102,102,204,102,204,102,216,204,216,204,217,216,206, + 240,96,8,112,48,31,224,14,14,28,14,255,0,1,0,1, + 128,3,128,3,192,5,192,4,192,8,224,8,224,16,112,31, + 240,32,112,32,56,96,56,240,124,12,14,28,14,0,0,255, + 192,113,224,112,224,112,224,112,224,113,192,127,128,112,224,112, + 112,112,112,112,112,112,112,112,224,255,128,12,14,28,14,0, + 0,15,144,60,240,112,48,112,48,224,16,224,16,224,0,224, + 0,224,0,224,16,112,16,112,32,60,96,15,128,14,14,28, + 16,0,0,255,192,112,240,112,56,112,56,112,28,112,28,112, + 28,112,28,112,28,112,28,112,56,112,56,112,240,255,192,11, + 14,28,13,0,0,255,224,112,224,112,96,113,32,113,32,115, + 0,127,0,115,0,113,0,113,32,112,32,112,96,112,224,255, + 224,11,14,28,13,0,0,255,224,112,224,112,96,113,32,113, + 32,115,0,127,0,115,0,113,0,113,0,112,0,112,0,112, + 0,252,0,13,14,28,15,0,0,15,144,60,240,112,48,112, + 48,224,16,224,16,224,0,224,0,224,248,224,112,112,112,112, + 112,60,240,15,144,14,14,28,16,0,0,248,124,112,56,112, + 56,112,56,112,56,112,56,127,248,112,56,112,56,112,56,112, + 56,112,56,112,56,248,124,5,14,14,9,1,0,248,112,112, + 112,112,112,112,112,112,112,112,112,112,248,10,14,28,12,255, + 0,7,192,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,99,128,243,128,243,128,195,128,103,0,60,0,14,14,28, + 16,0,0,248,248,112,96,112,192,113,128,115,0,118,0,126, + 0,127,0,119,128,115,192,113,224,112,240,112,120,248,252,10, + 14,28,12,0,0,248,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,64,112,64,112,192,113,192,255, + 192,17,14,42,19,0,0,252,15,128,60,15,0,62,15,0, + 46,23,0,39,23,0,39,23,0,39,39,0,35,167,0,35, + 167,0,35,199,0,33,199,0,33,199,0,112,135,0,248,143, + 128,14,14,28,16,0,0,240,124,120,56,60,16,60,16,62, + 16,47,16,39,144,35,208,33,240,32,240,32,240,32,112,112, + 48,248,16,14,14,28,16,0,0,15,192,60,240,112,56,112, + 56,224,28,224,28,224,28,224,28,224,28,224,28,112,56,112, + 56,60,240,15,192,12,14,28,14,0,0,255,128,113,224,112, + 240,112,240,112,240,112,240,113,224,127,128,112,0,112,0,112, + 0,112,0,112,0,248,0,14,18,36,16,0,252,15,192,60, + 240,112,56,112,56,224,28,224,28,224,28,224,28,224,28,239, + 28,115,152,113,184,61,240,15,192,0,192,0,232,0,248,0, + 112,13,14,28,16,0,0,255,224,112,240,112,112,112,112,112, + 112,112,224,127,128,113,192,113,192,113,224,112,224,112,224,112, + 232,248,112,10,14,28,12,0,0,30,128,115,128,225,128,224, + 128,240,0,252,0,127,0,31,128,7,192,131,192,129,192,193, + 192,243,128,159,0,11,14,28,13,0,0,255,224,206,96,142, + 32,142,32,142,32,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,31,0,14,14,28,16,0,0,248,124,112, + 56,112,16,112,16,112,16,112,16,112,16,112,16,112,16,112, + 16,112,16,112,16,56,96,15,192,15,14,28,14,255,0,252, + 62,120,28,56,8,60,16,28,16,28,16,14,32,14,32,7, + 64,7,64,3,128,3,128,1,0,1,0,20,14,42,19,255, + 0,253,249,240,120,240,224,56,112,64,60,120,128,28,120,128, + 28,120,128,30,189,0,14,157,0,14,157,0,15,30,0,7, + 14,0,7,14,0,2,4,0,2,4,0,15,14,28,17,0, + 0,126,124,60,56,30,48,14,96,15,192,7,128,3,192,7, + 192,7,224,12,240,24,112,56,120,112,60,248,126,13,14,28, + 15,0,0,252,120,120,48,56,32,60,96,28,64,30,128,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,31,192,12, + 14,28,13,0,0,255,240,224,112,192,224,129,224,131,192,7, + 128,7,0,15,0,30,0,60,16,120,16,112,48,224,112,255, + 240,4,16,16,6,1,254,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,8,14,14,9,0,0,192,192,96, + 96,48,48,24,24,12,12,6,6,3,3,4,16,16,6,0, + 254,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 240,8,8,8,9,0,6,24,24,60,60,102,102,195,195,9, + 2,4,9,0,253,255,128,255,128,5,4,4,7,1,10,192, + 224,112,24,10,9,18,11,0,0,127,0,227,128,195,128,7, + 128,59,128,227,128,227,128,231,128,121,192,12,14,28,12,255, + 0,240,0,112,0,112,0,112,0,112,0,119,128,120,224,112, + 112,112,112,112,112,112,112,112,112,120,224,111,128,9,9,18, + 10,0,0,31,0,115,128,225,128,224,0,224,0,224,0,224, + 128,113,128,30,0,12,14,28,13,0,0,1,224,0,224,0, + 224,0,224,0,224,30,224,113,224,224,224,224,224,224,224,224, + 224,224,224,113,224,30,240,10,9,18,11,0,0,30,0,115, + 128,225,192,225,192,255,192,224,0,224,64,112,192,31,0,8, + 14,14,7,0,0,30,55,119,112,112,252,112,112,112,112,112, + 112,112,248,11,15,30,11,0,252,0,96,0,224,63,0,115, + 128,97,128,97,128,115,128,63,0,96,0,127,128,63,192,193, + 192,192,192,225,128,127,0,12,14,28,13,0,0,240,0,112, + 0,112,0,112,0,112,0,119,192,121,224,112,224,112,224,112, + 224,112,224,112,224,112,224,249,240,5,14,14,6,0,0,112, + 112,112,0,0,240,112,112,112,112,112,112,112,248,7,18,18, + 6,253,252,14,14,14,0,0,30,14,14,14,14,14,14,14, + 14,14,238,236,120,12,14,28,13,0,0,240,0,112,0,112, + 0,112,0,112,0,115,224,113,128,114,0,118,0,127,0,119, + 128,115,192,113,224,251,240,5,14,14,6,0,0,240,112,112, + 112,112,112,112,112,112,112,112,112,112,248,19,9,27,20,0, + 0,247,223,128,121,243,192,112,225,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,249,243,224,12,9,18,13, + 0,0,247,192,121,224,112,224,112,224,112,224,112,224,112,224, + 112,224,249,240,11,9,18,12,0,0,31,0,113,192,224,224, + 224,224,224,224,224,224,224,224,113,192,31,0,12,13,26,12, + 255,252,231,128,120,224,112,112,112,112,112,112,112,112,112,112, + 120,224,119,128,112,0,112,0,112,0,248,0,12,13,26,12, + 0,252,30,96,113,224,224,224,224,224,224,224,224,224,224,224, + 113,224,30,224,0,224,0,224,0,224,1,240,8,9,9,9, + 0,0,246,123,115,112,112,112,112,112,248,9,9,18,10,0, + 0,61,0,99,0,225,0,252,0,127,0,15,128,131,128,195, + 0,190,0,7,13,13,8,0,0,16,16,48,112,252,112,112, + 112,112,112,114,114,60,12,9,18,13,0,0,249,224,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,10,9, + 18,9,255,0,249,192,112,128,112,128,57,0,57,0,30,0, + 30,0,12,0,12,0,16,9,18,15,255,0,251,231,113,194, + 113,194,57,228,57,228,30,120,30,120,12,48,12,48,11,9, + 18,12,0,0,253,224,120,192,61,128,31,0,14,0,31,0, + 55,128,99,192,247,224,11,13,26,12,0,252,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,9,9,18,10,0,0,255,128,199,128, + 143,0,30,0,60,0,120,128,240,128,225,128,255,128,5,16, + 16,6,0,254,24,48,112,112,112,112,96,192,96,112,112,112, + 112,112,48,24,2,14,14,11,4,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,5,16,16,6,0,254,192,96, + 112,112,112,112,48,24,48,112,112,112,112,112,96,192,10,3, + 6,12,1,4,57,192,127,128,231,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,5,0, + 1,4,14,14,7,1,252,96,240,240,96,0,96,96,96,240, + 240,240,240,240,96,9,13,26,11,1,254,0,128,0,128,31, + 0,115,128,227,128,228,0,228,0,232,0,232,128,113,128,30, + 0,32,0,32,0,10,14,28,11,0,0,31,0,49,128,115, + 128,115,128,112,0,112,0,56,0,255,128,28,0,28,0,24, + 64,112,192,159,192,239,128,9,9,18,10,0,2,221,128,255, + 128,99,0,193,128,193,128,193,128,99,0,255,128,221,128,14, + 14,28,15,0,0,252,60,120,24,56,16,28,48,30,32,14, + 96,7,192,31,240,3,128,31,240,3,128,3,128,3,128,15, + 224,2,14,14,11,4,0,192,192,192,192,192,192,0,0,192, + 192,192,192,192,192,7,16,16,8,0,254,120,204,140,192,112, + 124,158,134,194,242,124,28,4,196,204,120,6,2,2,10,2, + 11,204,204,14,14,28,15,0,0,7,128,24,96,32,16,71, + 200,76,200,152,68,152,4,152,4,152,4,76,72,71,136,32, + 16,24,96,7,128,7,8,8,8,0,6,120,204,60,204,220, + 110,0,254,8,5,5,9,0,3,51,102,204,102,51,9,6, + 12,10,0,2,255,128,255,128,1,128,1,128,1,128,1,128, + 5,3,3,6,0,3,248,248,248,14,14,28,15,0,0,7, + 128,24,96,32,16,95,136,76,200,140,196,140,196,143,132,141, + 132,76,200,94,232,32,16,24,96,7,128,6,2,2,8,1, + 11,252,252,6,6,6,7,0,8,120,204,132,132,204,120,10, + 11,22,11,0,0,12,0,12,0,12,0,255,192,255,192,12, + 0,12,0,12,0,0,0,255,192,255,192,6,8,8,6,0, + 6,120,204,204,24,48,96,196,252,6,8,8,6,0,6,120, + 204,12,56,12,204,204,120,5,4,4,7,1,11,24,56,112, + 192,12,13,26,13,0,252,249,240,112,224,112,224,112,224,112, + 224,112,224,112,224,121,224,110,240,96,0,240,0,240,0,96, + 0,13,14,28,14,0,0,63,248,126,112,254,112,254,112,254, + 112,254,112,126,112,62,112,14,112,14,112,14,112,14,112,14, + 112,31,248,4,4,4,5,0,3,96,240,240,96,4,4,4, + 6,1,252,64,112,48,224,6,8,8,6,0,6,48,240,48, + 48,48,48,48,252,6,8,8,7,0,6,120,204,204,204,204, + 120,0,252,8,5,5,9,0,3,204,102,51,102,204,14,14, + 28,15,0,0,48,96,240,96,48,192,48,192,49,128,49,128, + 51,24,255,56,6,120,6,216,13,152,13,252,24,24,24,60, + 14,14,28,15,0,0,48,96,240,96,48,192,48,192,49,128, + 49,128,51,120,255,204,6,204,6,24,12,48,12,96,24,196, + 24,252,14,14,28,15,0,0,120,96,204,96,12,192,56,192, + 13,128,205,128,207,24,123,56,6,120,6,216,13,152,13,252, + 24,24,24,60,9,14,28,10,0,252,12,0,30,0,30,0, + 12,0,0,0,12,0,24,0,48,0,96,0,227,0,227,128, + 227,128,243,0,124,0,14,19,38,14,255,0,12,0,14,0, + 7,0,1,128,0,0,1,0,1,128,3,128,3,192,5,192, + 4,192,8,224,8,224,16,112,31,240,32,112,32,56,96,56, + 240,124,14,19,38,14,255,0,0,96,0,224,1,192,3,0, + 0,0,1,0,1,128,3,128,3,192,5,192,4,192,8,224, + 8,224,16,112,31,240,32,112,32,56,96,56,240,124,14,19, + 38,14,255,0,1,128,3,192,6,96,12,48,0,0,1,0, + 1,128,3,128,3,192,5,192,4,192,8,224,8,224,16,112, + 31,240,32,112,32,56,96,56,240,124,14,18,36,14,255,0, + 3,144,7,224,9,192,0,0,1,0,1,128,3,128,3,192, + 5,192,4,192,8,224,8,224,16,112,31,240,32,112,32,56, + 96,56,240,124,14,17,34,14,255,0,6,96,6,96,0,0, + 1,0,1,128,3,128,3,192,5,192,4,192,8,224,8,224, + 16,112,31,240,32,112,32,56,96,56,240,124,14,19,38,14, + 255,0,1,128,2,64,2,64,1,128,0,0,1,0,1,128, + 3,128,3,192,5,192,4,192,8,224,8,224,16,112,31,240, + 32,112,32,56,96,56,240,124,20,14,42,21,0,0,3,255, + 240,0,248,112,0,184,48,1,56,144,1,56,144,2,57,128, + 4,63,128,4,57,128,15,248,128,16,56,144,16,56,16,32, + 56,48,96,56,112,240,255,240,12,18,36,14,0,252,15,144, + 60,112,112,48,112,48,224,16,224,16,224,0,224,0,224,0, + 224,16,240,16,112,32,60,96,15,128,2,0,3,128,1,128, + 7,0,11,19,38,13,0,0,48,0,56,0,28,0,6,0, + 0,0,255,224,112,224,112,96,113,32,113,32,115,0,127,0, + 115,0,113,0,113,32,112,32,112,96,112,224,255,224,11,19, + 38,13,0,0,1,128,3,128,7,0,12,0,0,0,255,224, + 112,224,112,96,113,32,113,32,115,0,127,0,115,0,113,0, + 113,32,112,32,112,96,112,224,255,224,11,19,38,13,0,0, + 6,0,15,0,25,128,48,192,0,0,255,224,112,224,112,96, + 113,32,113,32,115,0,127,0,115,0,113,0,113,32,112,32, + 112,96,112,224,255,224,11,17,34,13,0,0,25,128,25,128, + 0,0,255,224,112,224,112,96,113,32,113,32,115,0,127,0, + 115,0,113,0,113,32,112,32,112,96,112,224,255,224,6,19, + 19,9,0,0,192,224,112,24,0,124,56,56,56,56,56,56, + 56,56,56,56,56,56,124,6,19,19,9,1,0,12,28,56, + 96,0,248,112,112,112,112,112,112,112,112,112,112,112,112,248, + 8,19,19,9,0,0,24,60,102,195,0,124,56,56,56,56, + 56,56,56,56,56,56,56,56,124,6,17,17,9,1,0,204, + 204,0,248,112,112,112,112,112,112,112,112,112,112,112,112,248, + 14,14,28,16,0,0,255,192,112,240,112,56,112,56,112,28, + 112,28,252,28,112,28,112,28,112,28,112,56,112,56,112,240, + 255,192,14,18,36,16,0,0,7,32,15,192,19,128,0,0, + 240,124,120,56,60,16,60,16,62,16,47,16,39,144,35,208, + 33,240,32,240,32,240,32,112,112,48,248,16,14,19,38,16, + 0,0,12,0,14,0,7,0,1,128,0,0,15,192,60,240, + 112,56,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 112,56,112,56,60,240,15,192,14,19,38,16,0,0,0,192, + 1,192,3,128,6,0,0,0,15,192,60,240,112,56,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,112,56, + 60,240,15,192,14,19,38,16,0,0,3,0,7,128,12,192, + 24,96,0,0,15,192,60,240,112,56,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,112,56,112,56,60,240,15,192, + 14,18,36,16,0,0,7,32,15,192,19,128,0,0,15,192, + 60,240,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,60,240,15,192,14,17,34,16,0,0, + 12,192,12,192,0,0,15,192,60,240,112,56,112,56,224,28, + 224,28,224,28,224,28,224,28,224,28,112,56,112,56,60,240, + 15,192,10,10,20,11,0,0,64,128,225,192,115,128,63,0, + 30,0,30,0,63,0,115,128,225,192,64,128,14,15,30,16, + 0,0,0,8,15,208,60,240,112,56,112,88,224,156,225,28, + 225,28,226,28,228,28,232,28,112,56,48,56,60,240,79,192, + 14,19,38,16,0,0,12,0,14,0,7,0,1,128,0,0, + 248,124,112,56,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,112,16,112,16,56,96,31,192,14,19,38,16, + 0,0,0,96,0,224,1,192,3,0,0,0,248,124,112,56, + 112,16,112,16,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,56,96,31,192,14,19,38,16,0,0,3,0, + 7,128,12,192,24,96,0,0,248,124,112,56,112,16,112,16, + 112,16,112,16,112,16,112,16,112,16,112,16,112,16,112,16, + 56,96,31,192,14,17,34,16,0,0,12,192,12,192,0,0, + 248,124,112,56,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,112,16,112,16,56,96,31,192,13,19,38,15, + 0,0,0,96,0,224,1,192,3,0,0,0,252,120,120,48, + 56,32,60,96,28,64,30,128,15,128,7,0,7,0,7,0, + 7,0,7,0,7,0,31,192,12,14,28,14,1,0,248,0, + 112,0,112,0,127,192,113,224,112,240,112,240,112,240,112,240, + 113,224,127,128,112,0,112,0,248,0,11,14,28,12,0,0, + 30,0,51,128,113,192,113,192,113,192,113,128,119,0,113,192, + 112,224,112,224,112,224,112,224,113,192,247,0,10,14,28,11, + 0,0,48,0,56,0,28,0,6,0,0,0,127,0,227,128, + 195,128,7,128,59,128,227,128,227,128,231,128,121,192,10,14, + 28,11,0,0,3,0,7,0,14,0,24,0,0,0,127,0, + 227,128,195,128,7,128,59,128,227,128,227,128,231,128,121,192, + 10,14,28,11,0,0,12,0,30,0,51,0,97,128,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,10,13,26,11,0,0,24,128,63,0,70,0,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,10,12,24,11,0,0,51,0,51,0,0,0,127,0, + 227,128,195,128,7,128,59,128,227,128,227,128,231,128,121,192, + 10,14,28,11,0,0,12,0,18,0,18,0,12,0,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,16,9,18,17,0,0,63,120,99,206,227,135,7,135, + 59,255,227,128,227,129,231,195,120,252,9,13,26,10,0,252, + 31,0,115,128,225,128,224,0,224,0,224,0,224,128,113,128, + 30,0,8,0,14,0,6,0,28,0,10,14,28,11,0,0, + 48,0,56,0,28,0,6,0,0,0,30,0,115,128,225,192, + 225,192,255,192,224,0,224,64,112,192,31,0,10,14,28,11, + 0,0,3,0,7,0,14,0,24,0,0,0,30,0,115,128, + 225,192,225,192,255,192,224,0,224,64,112,192,31,0,10,14, + 28,11,0,0,12,0,30,0,51,0,97,128,0,0,30,0, + 115,128,225,192,225,192,255,192,224,0,224,64,112,192,31,0, + 10,12,24,11,0,0,51,0,51,0,0,0,30,0,115,128, + 225,192,225,192,255,192,224,0,224,64,112,192,31,0,6,14, + 14,6,255,0,192,224,112,24,0,120,56,56,56,56,56,56, + 56,124,6,14,14,6,0,0,12,28,56,96,0,240,112,112, + 112,112,112,112,112,248,8,14,14,6,255,0,24,60,102,195, + 0,120,56,56,56,56,56,56,56,124,5,12,12,6,0,0, + 216,216,0,240,112,112,112,112,112,112,112,248,11,14,28,12, + 0,0,192,0,51,0,28,0,102,0,3,0,31,128,113,192, + 224,224,224,224,224,224,224,224,224,224,113,192,31,0,12,13, + 26,13,0,0,12,64,31,128,35,0,0,0,247,192,121,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,11,14, + 28,12,0,0,48,0,56,0,28,0,6,0,0,0,31,0, + 113,192,224,224,224,224,224,224,224,224,224,224,113,192,31,0, + 11,14,28,12,0,0,1,128,3,128,7,0,12,0,0,0, + 31,0,113,192,224,224,224,224,224,224,224,224,224,224,113,192, + 31,0,11,14,28,12,0,0,6,0,15,0,25,128,48,192, + 0,0,31,0,113,192,224,224,224,224,224,224,224,224,224,224, + 113,192,31,0,11,13,26,12,0,0,24,128,63,0,70,0, + 0,0,31,0,113,192,224,224,224,224,224,224,224,224,224,224, + 113,192,31,0,11,12,24,12,0,0,51,0,51,0,0,0, + 31,0,113,192,224,224,224,224,224,224,224,224,224,224,113,192, + 31,0,10,10,20,11,0,0,12,0,12,0,0,0,0,0, + 255,192,255,192,0,0,0,0,12,0,12,0,10,11,22,11, + 0,255,1,0,31,0,115,128,227,192,229,192,229,192,233,192, + 233,192,115,128,62,0,32,0,12,14,28,13,0,0,24,0, + 28,0,14,0,3,0,0,0,249,240,112,224,112,224,112,224, + 112,224,112,224,112,224,121,224,62,240,12,14,28,13,0,0, + 3,0,7,0,14,0,24,0,0,0,249,240,112,224,112,224, + 112,224,112,224,112,224,112,224,121,224,62,240,12,14,28,13, + 0,0,6,0,15,0,25,128,48,192,0,0,249,240,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,12,12, + 24,13,0,0,25,128,25,128,0,0,249,240,112,224,112,224, + 112,224,112,224,112,224,112,224,121,224,62,240,11,18,36,12, + 0,252,1,128,3,128,7,0,12,0,0,0,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,12,18,36,12,255,252,240,0,112,0, + 112,0,112,0,112,0,119,128,120,224,112,112,112,112,112,112, + 112,112,112,112,120,224,119,128,112,0,112,0,112,0,248,0, + 11,16,32,12,0,252,25,128,25,128,0,0,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--20-140-100-100-P-113-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=18 x= 4 y=10 dx=20 dy= 0 ascent=16 len=42 + Font Bounding box w=24 h=32 x=-3 y=-8 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB14r[2603] U8G_SECTION(".progmem.u8g_font_ncenB14r") = { + 0,24,32,253,248,14,3,71,7,51,32,127,252,16,252,14, + 252,0,0,0,5,0,1,4,14,14,6,1,0,96,240,240, + 240,240,240,96,96,96,0,96,240,240,96,5,5,5,8,1, + 9,216,216,216,216,216,11,12,24,12,0,1,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,255,192,255,192,54,0, + 54,0,54,0,9,18,36,11,1,254,8,0,8,0,62,0, + 107,128,203,128,201,128,232,0,252,0,255,0,127,128,31,128, + 11,128,201,128,233,128,235,0,62,0,8,0,8,0,14,15, + 30,15,0,255,56,192,103,64,196,192,196,128,197,128,201,0, + 115,0,2,56,6,100,4,196,12,196,8,196,24,200,16,112, + 16,0,16,14,28,17,1,0,7,128,12,192,24,192,24,192, + 29,128,31,0,14,62,63,24,119,144,227,224,225,224,224,241, + 241,254,127,28,2,5,5,5,1,9,192,192,192,192,192,5, + 16,16,6,0,254,24,48,112,96,224,192,192,192,192,192,192, + 224,96,112,48,24,5,16,16,6,0,254,192,96,112,48,56, + 24,24,24,24,24,24,56,48,112,96,192,7,7,7,8,0, + 7,56,146,214,56,214,146,56,10,10,20,11,0,0,12,0, + 12,0,12,0,12,0,255,192,255,192,12,0,12,0,12,0, + 12,0,4,7,7,5,0,253,96,240,240,112,32,64,128,5, + 3,3,6,0,3,248,248,248,4,4,4,5,0,0,96,240, + 240,96,6,14,14,7,0,0,12,12,8,24,24,16,48,48, + 32,96,96,64,192,192,9,14,28,11,1,0,28,0,119,0, + 99,0,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,99,0,119,0,28,0,7,14,14,11,2,0,24,56, + 248,56,56,56,56,56,56,56,56,56,56,254,9,14,28,11, + 1,0,30,0,103,0,227,128,227,128,99,128,3,128,7,0, + 7,0,14,0,24,0,48,0,96,128,255,128,255,128,9,14, + 28,11,1,0,30,0,103,0,227,128,227,128,99,128,3,0, + 28,0,3,0,3,128,99,128,227,128,227,128,103,0,62,0, + 9,14,28,11,1,0,1,0,3,0,7,0,15,0,15,0, + 23,0,39,0,71,0,71,0,135,0,255,128,7,0,7,0, + 15,128,9,14,28,11,1,0,127,128,127,0,64,0,64,0, + 64,0,126,0,71,0,3,128,3,128,99,128,227,128,227,128, + 103,0,62,0,9,14,28,11,1,0,31,0,115,128,99,128, + 227,0,224,0,238,0,247,0,227,128,227,128,227,128,227,128, + 99,128,115,0,28,0,9,14,28,11,1,0,255,128,255,128, + 129,128,131,0,6,0,6,0,12,0,12,0,28,0,28,0, + 56,0,56,0,56,0,56,0,9,14,28,11,1,0,28,0, + 99,0,193,128,193,128,225,128,251,0,126,0,63,0,79,128, + 195,128,193,128,193,128,227,0,60,0,9,14,28,11,1,0, + 28,0,103,0,227,0,227,128,227,128,227,128,227,128,119,128, + 59,128,3,128,99,128,227,0,231,0,124,0,4,9,9,6, + 1,0,96,240,240,96,0,96,240,240,96,4,12,12,6,1, + 253,96,240,240,96,0,96,240,240,112,32,64,128,10,10,20, + 11,0,0,0,192,3,192,15,0,60,0,240,0,240,0,60, + 0,15,0,3,192,0,192,9,6,12,11,1,2,255,128,255, + 128,0,0,0,0,255,128,255,128,10,10,20,11,0,0,192, + 0,240,0,60,0,15,0,3,192,3,192,15,0,60,0,240, + 0,192,0,9,14,28,10,0,0,31,0,103,128,227,128,227, + 128,99,128,3,0,6,0,12,0,24,0,0,0,24,0,60, + 0,60,0,24,0,15,14,28,16,0,0,7,240,28,12,48, + 4,99,230,102,102,204,102,204,102,216,204,216,204,217,216,206, + 240,96,8,112,48,31,224,14,14,28,14,255,0,1,0,1, + 128,3,128,3,192,5,192,4,192,8,224,8,224,16,112,31, + 240,32,112,32,56,96,56,240,124,12,14,28,14,0,0,255, + 192,113,224,112,224,112,224,112,224,113,192,127,128,112,224,112, + 112,112,112,112,112,112,112,112,224,255,128,12,14,28,14,0, + 0,15,144,60,240,112,48,112,48,224,16,224,16,224,0,224, + 0,224,0,224,16,112,16,112,32,60,96,15,128,14,14,28, + 16,0,0,255,192,112,240,112,56,112,56,112,28,112,28,112, + 28,112,28,112,28,112,28,112,56,112,56,112,240,255,192,11, + 14,28,13,0,0,255,224,112,224,112,96,113,32,113,32,115, + 0,127,0,115,0,113,0,113,32,112,32,112,96,112,224,255, + 224,11,14,28,13,0,0,255,224,112,224,112,96,113,32,113, + 32,115,0,127,0,115,0,113,0,113,0,112,0,112,0,112, + 0,252,0,13,14,28,15,0,0,15,144,60,240,112,48,112, + 48,224,16,224,16,224,0,224,0,224,248,224,112,112,112,112, + 112,60,240,15,144,14,14,28,16,0,0,248,124,112,56,112, + 56,112,56,112,56,112,56,127,248,112,56,112,56,112,56,112, + 56,112,56,112,56,248,124,5,14,14,9,1,0,248,112,112, + 112,112,112,112,112,112,112,112,112,112,248,10,14,28,12,255, + 0,7,192,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,99,128,243,128,243,128,195,128,103,0,60,0,14,14,28, + 16,0,0,248,248,112,96,112,192,113,128,115,0,118,0,126, + 0,127,0,119,128,115,192,113,224,112,240,112,120,248,252,10, + 14,28,12,0,0,248,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,64,112,64,112,192,113,192,255, + 192,17,14,42,19,0,0,252,15,128,60,15,0,62,15,0, + 46,23,0,39,23,0,39,23,0,39,39,0,35,167,0,35, + 167,0,35,199,0,33,199,0,33,199,0,112,135,0,248,143, + 128,14,14,28,16,0,0,240,124,120,56,60,16,60,16,62, + 16,47,16,39,144,35,208,33,240,32,240,32,240,32,112,112, + 48,248,16,14,14,28,16,0,0,15,192,60,240,112,56,112, + 56,224,28,224,28,224,28,224,28,224,28,224,28,112,56,112, + 56,60,240,15,192,12,14,28,14,0,0,255,128,113,224,112, + 240,112,240,112,240,112,240,113,224,127,128,112,0,112,0,112, + 0,112,0,112,0,248,0,14,18,36,16,0,252,15,192,60, + 240,112,56,112,56,224,28,224,28,224,28,224,28,224,28,239, + 28,115,152,113,184,61,240,15,192,0,192,0,232,0,248,0, + 112,13,14,28,16,0,0,255,224,112,240,112,112,112,112,112, + 112,112,224,127,128,113,192,113,192,113,224,112,224,112,224,112, + 232,248,112,10,14,28,12,0,0,30,128,115,128,225,128,224, + 128,240,0,252,0,127,0,31,128,7,192,131,192,129,192,193, + 192,243,128,159,0,11,14,28,13,0,0,255,224,206,96,142, + 32,142,32,142,32,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,31,0,14,14,28,16,0,0,248,124,112, + 56,112,16,112,16,112,16,112,16,112,16,112,16,112,16,112, + 16,112,16,112,16,56,96,15,192,15,14,28,14,255,0,252, + 62,120,28,56,8,60,16,28,16,28,16,14,32,14,32,7, + 64,7,64,3,128,3,128,1,0,1,0,20,14,42,19,255, + 0,253,249,240,120,240,224,56,112,64,60,120,128,28,120,128, + 28,120,128,30,189,0,14,157,0,14,157,0,15,30,0,7, + 14,0,7,14,0,2,4,0,2,4,0,15,14,28,17,0, + 0,126,124,60,56,30,48,14,96,15,192,7,128,3,192,7, + 192,7,224,12,240,24,112,56,120,112,60,248,126,13,14,28, + 15,0,0,252,120,120,48,56,32,60,96,28,64,30,128,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,31,192,12, + 14,28,13,0,0,255,240,224,112,192,224,129,224,131,192,7, + 128,7,0,15,0,30,0,60,16,120,16,112,48,224,112,255, + 240,4,16,16,6,1,254,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,8,14,14,9,0,0,192,192,96, + 96,48,48,24,24,12,12,6,6,3,3,4,16,16,6,0, + 254,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 240,8,8,8,9,0,6,24,24,60,60,102,102,195,195,9, + 2,4,9,0,253,255,128,255,128,5,4,4,7,1,10,192, + 224,112,24,10,9,18,11,0,0,127,0,227,128,195,128,7, + 128,59,128,227,128,227,128,231,128,121,192,12,14,28,12,255, + 0,240,0,112,0,112,0,112,0,112,0,119,128,120,224,112, + 112,112,112,112,112,112,112,112,112,120,224,111,128,9,9,18, + 10,0,0,31,0,115,128,225,128,224,0,224,0,224,0,224, + 128,113,128,30,0,12,14,28,13,0,0,1,224,0,224,0, + 224,0,224,0,224,30,224,113,224,224,224,224,224,224,224,224, + 224,224,224,113,224,30,240,10,9,18,11,0,0,30,0,115, + 128,225,192,225,192,255,192,224,0,224,64,112,192,31,0,8, + 14,14,7,0,0,30,55,119,112,112,252,112,112,112,112,112, + 112,112,248,11,15,30,11,0,252,0,96,0,224,63,0,115, + 128,97,128,97,128,115,128,63,0,96,0,127,128,63,192,193, + 192,192,192,225,128,127,0,12,14,28,13,0,0,240,0,112, + 0,112,0,112,0,112,0,119,192,121,224,112,224,112,224,112, + 224,112,224,112,224,112,224,249,240,5,14,14,6,0,0,112, + 112,112,0,0,240,112,112,112,112,112,112,112,248,7,18,18, + 6,253,252,14,14,14,0,0,30,14,14,14,14,14,14,14, + 14,14,238,236,120,12,14,28,13,0,0,240,0,112,0,112, + 0,112,0,112,0,115,224,113,128,114,0,118,0,127,0,119, + 128,115,192,113,224,251,240,5,14,14,6,0,0,240,112,112, + 112,112,112,112,112,112,112,112,112,112,248,19,9,27,20,0, + 0,247,223,128,121,243,192,112,225,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,249,243,224,12,9,18,13, + 0,0,247,192,121,224,112,224,112,224,112,224,112,224,112,224, + 112,224,249,240,11,9,18,12,0,0,31,0,113,192,224,224, + 224,224,224,224,224,224,224,224,113,192,31,0,12,13,26,12, + 255,252,231,128,120,224,112,112,112,112,112,112,112,112,112,112, + 120,224,119,128,112,0,112,0,112,0,248,0,12,13,26,12, + 0,252,30,96,113,224,224,224,224,224,224,224,224,224,224,224, + 113,224,30,224,0,224,0,224,0,224,1,240,8,9,9,9, + 0,0,246,123,115,112,112,112,112,112,248,9,9,18,10,0, + 0,61,0,99,0,225,0,252,0,127,0,15,128,131,128,195, + 0,190,0,7,13,13,8,0,0,16,16,48,112,252,112,112, + 112,112,112,114,114,60,12,9,18,13,0,0,249,224,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,10,9, + 18,9,255,0,249,192,112,128,112,128,57,0,57,0,30,0, + 30,0,12,0,12,0,16,9,18,15,255,0,251,231,113,194, + 113,194,57,228,57,228,30,120,30,120,12,48,12,48,11,9, + 18,12,0,0,253,224,120,192,61,128,31,0,14,0,31,0, + 55,128,99,192,247,224,11,13,26,12,0,252,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,9,9,18,10,0,0,255,128,199,128, + 143,0,30,0,60,0,120,128,240,128,225,128,255,128,5,16, + 16,6,0,254,24,48,112,112,112,112,96,192,96,112,112,112, + 112,112,48,24,2,14,14,11,4,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,5,16,16,6,0,254,192,96, + 112,112,112,112,48,24,48,112,112,112,112,112,96,192,10,3, + 6,12,1,4,57,192,127,128,231,0,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--25-180-100-100-P-149-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 6 y=15 dx=26 dy= 0 ascent=24 len=72 + Font Bounding box w=33 h=40 x=-4 y=-10 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB18[8114] U8G_SECTION(".progmem.u8g_font_ncenB18") = { + 0,33,40,252,246,18,4,68,10,106,32,255,251,24,251,18, + 251,0,0,0,7,0,1,5,18,18,7,1,0,112,248,248, + 248,112,112,112,112,112,112,32,32,0,0,112,248,248,112,6, + 6,6,8,1,12,204,204,204,204,204,136,12,18,36,14,1, + 0,12,192,12,192,12,192,12,192,12,192,127,240,127,240,25, + 128,25,128,25,128,25,128,255,224,255,224,51,0,51,0,51, + 0,51,0,51,0,12,23,46,14,1,253,4,0,4,0,31, + 192,116,96,100,240,228,240,228,240,244,96,252,0,255,0,127, + 192,31,224,7,240,5,240,100,240,244,112,244,112,244,96,100, + 224,63,128,4,0,4,0,4,0,19,18,54,21,1,0,30, + 14,0,123,54,0,113,204,0,241,12,0,225,24,0,226,24, + 0,226,48,0,100,48,0,56,96,0,0,99,192,0,207,96, + 0,206,32,1,158,32,1,156,32,3,28,64,3,28,64,6, + 12,128,6,7,0,20,18,54,22,1,0,1,240,0,7,56, + 0,14,24,0,14,24,0,14,24,0,15,48,0,15,224,0, + 7,192,0,15,192,0,57,227,240,113,241,192,240,241,128,240, + 121,0,240,127,0,240,62,16,120,31,16,124,63,224,31,199, + 192,2,6,6,6,2,12,192,192,192,192,192,192,6,21,21, + 8,1,253,4,12,24,48,48,96,96,224,224,224,224,224,224, + 224,96,96,48,48,24,12,4,6,21,21,8,1,253,128,192, + 96,48,48,24,24,28,28,28,28,28,28,28,24,24,48,48, + 96,192,128,9,10,20,11,1,8,28,0,28,0,201,128,235, + 128,62,0,62,0,235,128,201,128,28,0,28,0,12,12,24, + 14,1,1,6,0,6,0,6,0,6,0,6,0,255,240,255, + 240,6,0,6,0,6,0,6,0,6,0,5,8,8,7,1, + 252,112,248,248,120,48,32,64,128,6,3,3,8,1,5,252, + 252,252,5,4,4,7,1,0,112,248,248,112,7,18,18,9, + 1,0,6,6,6,12,12,12,24,24,24,48,48,48,96,96, + 96,192,192,192,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,57,192,15,0,10,18, + 36,14,2,0,30,0,254,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,255,192,11,18,36,14,1,0,31,0, + 99,192,225,224,241,224,241,224,241,224,97,224,1,192,3,192, + 3,128,7,0,14,0,24,32,48,32,112,96,255,224,255,224, + 255,224,12,18,36,14,1,0,15,128,49,224,112,224,120,240, + 120,240,120,240,48,224,1,192,15,0,1,192,0,224,96,240, + 240,240,240,240,240,240,224,224,97,224,31,128,12,18,36,14, + 1,0,0,192,1,192,3,192,7,192,7,192,15,192,27,192, + 19,192,51,192,99,192,99,192,195,192,255,240,255,240,3,192, + 3,192,3,192,15,240,12,18,36,14,1,0,127,240,127,224, + 127,192,64,0,64,0,64,0,95,0,113,192,96,224,0,240, + 0,240,0,240,96,240,240,240,240,240,240,224,97,192,63,0, + 12,18,36,14,1,0,15,128,56,192,113,224,113,224,241,224, + 240,192,240,0,247,128,249,224,240,224,240,240,240,240,240,240, + 240,240,240,240,112,224,121,224,31,128,12,18,36,14,1,0, + 255,240,255,240,255,224,192,96,128,192,129,192,3,128,3,128, + 7,0,7,0,15,0,15,0,30,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,112,224,120,224,124,192,63,128,31,128,63,192,119,224, + 225,240,224,240,224,112,224,112,224,96,112,192,31,128,12,18, + 36,14,1,0,31,128,121,224,112,224,240,240,240,240,240,240, + 240,240,240,240,112,240,121,240,30,240,0,240,48,240,120,240, + 120,224,120,224,49,192,31,0,5,12,12,7,1,0,112,248, + 248,112,0,0,0,0,112,248,248,112,5,16,16,7,1,252, + 112,248,248,112,0,0,0,0,112,248,248,120,48,32,64,128, + 12,12,24,14,1,1,0,48,0,240,3,192,15,0,60,0, + 240,0,240,0,60,0,15,0,3,192,0,240,0,48,12,6, + 12,14,1,4,255,240,255,240,0,0,0,0,255,240,255,240, + 12,12,24,14,1,1,192,0,240,0,60,0,15,0,3,192, + 0,240,0,240,3,192,15,0,60,0,240,0,192,0,11,18, + 36,13,1,0,63,0,99,192,241,224,241,224,97,224,1,224, + 1,192,3,128,7,0,12,0,24,0,24,0,0,0,0,0, + 28,0,62,0,62,0,28,0,19,18,54,20,1,0,1,252, + 0,15,6,0,12,1,128,48,0,192,48,220,192,99,188,96, + 103,28,96,199,28,96,206,28,96,206,56,96,206,56,64,206, + 56,192,206,121,128,103,191,0,96,0,0,56,1,0,28,7, + 0,7,252,0,19,18,54,19,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,1,120,0,1,120,0,3,60,0,2, + 60,0,2,60,0,6,30,0,4,30,0,7,254,0,12,15, + 0,8,15,0,8,15,0,24,7,128,56,7,128,254,31,224, + 17,18,54,19,1,0,255,248,0,60,62,0,60,31,0,60, + 31,0,60,31,0,60,31,0,60,30,0,60,60,0,63,248, + 0,60,30,0,60,15,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,31,0,255,252,0,17,18,54,19, + 1,0,3,249,128,15,15,128,60,3,128,60,1,128,120,1, + 128,120,0,128,248,0,128,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,120,0,128,120,0,128,60,1,0,60, + 1,0,15,6,0,3,248,0,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,60,7,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,15,18,36,18,1,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,18, + 36,17,1,0,255,254,60,30,60,6,60,2,60,2,60,34, + 60,32,60,96,63,224,60,96,60,32,60,32,60,0,60,0, + 60,0,60,0,60,0,255,0,18,18,54,20,1,0,3,249, + 128,15,15,128,60,3,128,60,1,128,120,1,128,120,0,128, + 248,0,128,248,0,0,248,0,0,248,0,0,248,15,192,248, + 7,128,120,7,128,120,7,128,60,7,128,60,7,128,15,13, + 128,3,248,128,19,18,54,21,1,0,255,31,224,60,7,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,63,255,128,60,7,128,60,7,128,60,7,128,60,7, + 128,60,7,128,60,7,128,60,7,128,60,7,128,255,31,224, + 8,18,18,10,1,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,14,18,36,16,0,0,3,252, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,96,240,240,240,240,240,224,240,192,224,97,224, + 63,128,20,18,54,21,1,0,255,15,192,60,3,0,60,6, + 0,60,12,0,60,24,0,60,48,0,60,96,0,60,224,0, + 61,240,0,63,248,0,62,248,0,60,124,0,60,62,0,60, + 31,0,60,31,0,60,15,128,60,7,192,255,15,240,15,18, + 36,17,1,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,2, + 60,2,60,6,60,30,255,254,22,18,54,24,1,0,252,1, + 252,60,1,240,62,3,240,62,2,240,46,2,240,47,6,240, + 39,4,240,39,132,240,39,140,240,35,136,240,35,200,240,35, + 216,240,33,208,240,33,240,240,32,224,240,32,224,240,112,96, + 240,248,67,252,20,18,54,22,1,0,252,7,240,62,1,192, + 31,0,128,31,128,128,31,192,128,23,224,128,19,240,128,17, + 240,128,16,248,128,16,124,128,16,126,128,16,63,128,16,31, + 128,16,15,128,16,7,128,16,3,128,56,1,128,254,0,128, + 19,18,54,21,1,0,3,248,0,15,30,0,60,7,128,60, + 7,128,120,3,192,120,3,192,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,120,3,192,120,3,192, + 60,7,128,60,7,128,15,30,0,3,248,0,17,18,54,18, + 1,0,255,252,0,60,31,0,60,15,0,60,15,128,60,15, + 128,60,15,128,60,15,128,60,15,0,60,31,0,63,248,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,255,128,0,19,23,69,21,1,251,3,248, + 0,15,30,0,60,7,128,60,7,128,120,3,192,120,3,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,251, + 227,224,126,115,192,124,51,192,60,51,128,60,27,128,15,30, + 0,3,254,0,0,14,0,0,15,32,0,7,192,0,7,192, + 0,3,128,19,18,54,21,1,0,255,248,0,60,62,0,60, + 31,0,60,31,0,60,31,0,60,31,0,60,30,0,60,60, + 0,63,224,0,60,120,0,60,60,0,60,60,0,60,62,0, + 60,30,0,60,31,32,60,15,32,60,15,192,255,135,128,14, + 18,36,16,1,0,15,200,56,120,96,24,224,24,224,8,240, + 8,254,0,255,192,127,240,63,248,15,252,1,252,128,60,128, + 28,192,28,192,24,240,112,159,192,16,18,36,18,1,0,255, + 255,227,199,195,195,131,193,131,193,131,193,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,15,240,19,18,54,21,1,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,2,0,30,2,0,31,140,0,7,248,0,19, + 18,54,19,0,0,255,15,224,60,3,128,60,3,0,30,2, + 0,30,2,0,30,6,0,15,4,0,15,4,0,15,12,0, + 7,136,0,7,136,0,7,152,0,3,208,0,3,208,0,1, + 224,0,1,224,0,0,192,0,0,192,0,26,18,72,26,0, + 0,255,127,159,192,60,30,7,0,60,30,6,0,30,15,4, + 0,30,15,4,0,30,15,12,0,15,31,136,0,15,23,136, + 0,15,23,152,0,7,179,208,0,7,163,208,0,7,163,240, + 0,3,225,224,0,3,193,224,0,3,193,224,0,1,192,192, + 0,1,128,192,0,1,128,192,0,20,18,54,20,0,0,255, + 135,224,62,1,128,31,3,0,31,134,0,15,140,0,7,216, + 0,3,240,0,3,224,0,1,240,0,0,248,0,1,248,0, + 3,124,0,6,62,0,4,31,0,12,31,0,24,15,128,48, + 7,192,252,31,240,18,18,54,18,0,0,255,15,192,60,3, + 0,30,2,0,30,6,0,15,4,0,15,12,0,7,136,0, + 7,152,0,3,208,0,3,240,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,7,248, + 0,15,18,36,17,1,0,127,254,112,62,96,124,64,120,64, + 248,0,240,1,224,3,224,3,192,7,128,15,128,15,0,30, + 0,62,2,60,2,120,6,248,14,255,254,6,21,21,8,1, + 253,252,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,252,10,18,36,12,1,0,192,0,224,0, + 224,0,112,0,112,0,56,0,56,0,28,0,28,0,14,0, + 14,0,7,0,7,0,3,128,3,128,1,192,1,192,0,192, + 6,21,21,8,1,253,252,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,252,10,10,20,15,2, + 8,12,0,12,0,30,0,30,0,51,0,51,0,97,128,97, + 128,192,192,192,192,12,2,4,12,0,252,255,240,255,240,5, + 5,5,7,1,13,224,224,112,48,24,14,12,24,15,0,0, + 127,128,241,224,240,240,96,240,1,240,14,240,120,240,240,240, + 240,240,240,240,249,252,126,56,16,18,36,16,255,0,252,0, + 60,0,60,0,60,0,60,0,60,0,61,240,63,28,62,30, + 60,14,60,15,60,15,60,15,60,15,60,14,60,30,62,28, + 39,240,13,12,24,14,0,0,15,240,56,120,120,120,112,48, + 240,0,240,0,240,0,240,0,120,8,120,8,60,48,31,224, + 16,18,36,17,0,0,0,252,0,60,0,60,0,60,0,60, + 0,60,15,188,56,252,120,124,112,60,240,60,240,60,240,60, + 240,60,112,60,120,124,56,252,15,191,14,12,24,15,0,0, + 15,192,56,112,120,120,112,56,240,60,255,252,240,0,240,0, + 120,8,120,8,60,48,15,224,12,18,36,10,0,0,7,224, + 28,240,28,240,60,96,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 255,0,13,18,36,15,1,251,0,56,31,248,121,224,240,240, + 240,240,240,240,240,240,121,224,63,128,96,0,224,0,255,192, + 127,240,127,248,96,56,192,24,224,48,127,224,17,18,54,18, + 0,0,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,248,0,61,252,0,62,62,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,254,63,128,8,18,18,9,0,0,24,60, + 60,24,0,0,252,60,60,60,60,60,60,60,60,60,60,255, + 8,23,23,7,253,251,6,15,15,6,0,0,63,15,15,15, + 15,15,15,15,15,15,15,15,15,15,206,206,120,17,18,54, + 17,0,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,254,0,60,56,0,60,48,0,60,96, + 0,60,192,0,63,192,0,63,224,0,60,240,0,60,120,0, + 60,60,0,60,30,0,255,127,128,8,18,18,9,0,0,252, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 255,24,12,36,25,0,0,252,240,240,61,249,248,62,126,124, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,254,126,127,17,12,36,18,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,12,24,15,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,16,17,34,16,255,251,253,240,63,28,60,30,60, + 14,60,15,60,15,60,15,60,15,60,14,62,30,63,28,61, + 240,60,0,60,0,60,0,60,0,255,0,16,17,34,16,0, + 251,15,132,60,236,120,60,112,60,240,60,240,60,240,60,240, + 60,112,60,120,124,56,252,15,188,0,60,0,60,0,60,0, + 60,0,255,12,12,24,12,0,0,252,224,61,240,62,240,60, + 96,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,10,12,24,11,0,0,62,128,99,128,193,128,224,128,252, + 0,255,128,127,192,15,192,129,192,192,192,225,128,191,0,10, + 17,34,10,0,0,4,0,12,0,12,0,28,0,60,0,255, + 128,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 64,60,64,31,128,15,0,17,12,36,18,0,0,254,126,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,31,222,0,15,159, + 128,16,12,24,15,255,0,255,31,60,4,30,12,30,8,15, + 24,15,16,7,176,7,160,3,224,3,192,1,192,1,128,23, + 12,36,22,255,0,255,63,62,60,30,8,60,30,8,30,63, + 24,30,47,16,30,47,16,15,103,176,15,71,160,7,195,224, + 7,131,192,3,129,192,3,1,128,17,12,36,16,255,0,255, + 31,0,62,12,0,31,24,0,15,176,0,7,224,0,3,192, + 0,1,224,0,3,240,0,6,248,0,12,124,0,24,62,0, + 124,127,128,16,17,34,15,255,251,254,63,60,12,30,8,30, + 24,15,16,15,48,7,160,7,224,3,192,3,192,1,192,1, + 128,1,128,97,0,243,0,254,0,120,0,11,12,24,12,0, + 0,255,224,225,224,195,224,135,192,143,128,15,0,30,0,62, + 32,124,32,248,96,240,224,255,224,6,21,21,8,1,253,28, + 48,112,112,112,112,112,112,112,96,192,96,112,112,112,112,112, + 112,112,48,28,3,18,18,15,6,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,6,21,21,8, + 1,253,224,48,56,56,56,56,56,56,56,24,12,24,56,56, + 56,56,56,56,56,48,224,12,5,10,15,1,4,56,32,126, + 112,255,240,231,224,65,192,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,7,0,1,5,18, + 18,7,1,251,112,248,248,112,0,0,32,32,112,112,112,112, + 112,112,248,248,248,112,12,15,30,14,1,255,0,32,0,64, + 15,192,56,240,121,240,113,96,242,0,242,0,244,0,244,0, + 120,16,120,16,60,96,47,192,64,0,14,18,36,15,0,0, + 3,224,15,48,14,120,30,120,30,48,30,0,30,0,30,0, + 127,224,15,0,15,0,15,0,7,0,7,4,126,12,207,252, + 207,248,113,240,12,12,24,14,1,2,207,48,255,240,127,224, + 112,224,224,112,224,112,224,112,224,112,112,224,127,224,255,240, + 207,48,19,18,54,19,0,0,255,143,224,62,3,0,62,3, + 0,31,6,0,31,6,0,15,140,0,15,140,0,7,216,0, + 7,248,0,31,254,0,1,224,0,1,224,0,31,254,0,1, + 224,0,1,224,0,1,224,0,3,240,0,15,252,0,3,18, + 18,14,6,0,224,224,224,224,224,224,224,0,0,0,224,224, + 224,224,224,224,224,224,11,20,40,13,1,254,31,0,35,128, + 99,128,99,0,120,0,62,0,63,128,71,192,193,224,224,224, + 240,96,124,96,63,64,15,128,3,128,1,128,48,128,112,128, + 113,0,62,0,10,4,8,12,1,14,97,128,243,192,243,192, + 97,128,19,18,54,21,1,0,3,248,0,15,254,0,60,7, + 128,48,1,128,97,248,192,103,24,192,198,8,96,206,0,96, + 206,0,96,206,0,96,206,0,96,199,4,96,103,136,192,97, + 240,192,48,1,128,60,7,128,15,254,0,3,248,0,8,10, + 10,10,1,8,120,206,6,126,198,206,119,0,0,255,11,7, + 14,13,1,3,28,224,57,192,115,128,231,0,115,128,57,192, + 28,224,11,6,12,13,1,4,255,224,255,224,0,96,0,96, + 0,96,0,96,6,3,3,8,1,5,252,252,252,19,18,54, + 21,1,0,3,248,0,15,254,0,60,7,128,48,1,128,103, + 240,192,99,24,192,195,24,96,195,24,96,195,240,96,195,96, + 96,195,48,96,195,48,96,99,24,192,103,156,192,48,1,128, + 60,7,128,15,254,0,3,248,0,8,2,2,10,1,15,255, + 255,8,7,7,9,0,11,60,102,195,195,195,102,60,12,11, + 22,14,1,1,6,0,6,0,6,0,255,240,255,240,6,0, + 6,0,6,0,0,0,255,240,255,240,7,11,11,8,0,7, + 124,206,198,198,14,12,24,48,98,254,254,7,11,11,8,0, + 7,124,206,198,6,12,60,14,6,198,206,124,5,5,5,7, + 1,14,24,56,112,96,192,17,17,51,18,0,251,254,63,128, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,63,222,0,39,159, + 128,48,0,0,48,0,0,120,0,0,120,0,0,48,0,0, + 16,18,36,18,1,0,31,255,127,156,127,156,255,156,255,156, + 255,156,127,156,127,156,31,156,3,156,3,156,3,156,3,156, + 3,156,3,156,3,156,3,156,15,255,3,4,4,7,2,5, + 224,224,224,224,5,6,6,7,1,251,16,32,112,56,24,240, + 6,11,11,8,0,7,48,240,48,48,48,48,48,48,48,48, + 252,9,10,20,11,1,8,28,0,99,0,227,128,227,128,227, + 128,99,0,28,0,0,0,0,0,255,128,11,7,14,13,1, + 3,231,0,115,128,57,192,28,224,57,192,115,128,231,0,18, + 18,54,21,1,0,48,6,0,240,6,0,48,12,0,48,24, + 0,48,24,0,48,48,0,48,96,0,48,99,0,48,199,0, + 49,135,0,253,143,0,3,27,0,6,19,0,6,51,0,12, + 99,0,24,127,192,24,3,0,48,7,128,18,18,54,21,1, + 0,48,6,0,240,6,0,48,12,0,48,24,0,48,24,0, + 48,48,0,48,96,0,48,111,128,48,201,192,49,152,192,253, + 152,192,3,1,192,6,1,128,6,3,0,12,6,0,24,12, + 64,24,31,192,48,31,192,19,18,54,21,0,0,124,3,0, + 206,3,0,198,6,0,6,12,0,12,12,0,56,24,0,12, + 48,0,6,49,128,198,99,128,206,195,128,124,197,128,1,141, + 128,3,25,128,3,25,128,6,49,128,12,63,224,12,1,128, + 24,3,192,11,18,36,13,1,251,7,0,15,128,15,128,7, + 0,0,0,0,0,3,0,3,0,6,0,28,0,56,0,112, + 0,240,0,240,192,241,224,241,224,120,192,31,128,19,24,72, + 19,0,0,6,0,0,7,0,0,3,128,0,1,192,0,0, + 96,0,0,0,0,0,96,0,0,96,0,0,240,0,0,240, + 0,1,120,0,1,120,0,3,60,0,2,60,0,2,60,0, + 6,30,0,4,30,0,7,254,0,12,15,0,8,15,0,8, + 15,0,24,7,128,56,7,128,254,31,224,19,24,72,19,0, + 0,0,6,0,0,14,0,0,28,0,0,48,0,0,96,0, + 0,0,0,0,96,0,0,96,0,0,240,0,0,240,0,1, + 120,0,1,120,0,3,60,0,2,60,0,2,60,0,6,30, + 0,4,30,0,7,254,0,12,15,0,8,15,0,8,15,0, + 24,7,128,56,7,128,254,31,224,19,23,69,19,0,0,0, + 96,0,0,240,0,1,152,0,3,12,0,0,0,0,0,96, + 0,0,96,0,0,240,0,0,240,0,1,120,0,1,120,0, + 3,60,0,2,60,0,2,60,0,6,30,0,4,30,0,7, + 254,0,12,15,0,8,15,0,8,15,0,24,7,128,56,7, + 128,254,31,224,19,22,66,19,0,0,0,226,0,1,252,0, + 2,56,0,0,0,0,0,96,0,0,96,0,0,240,0,0, + 240,0,1,120,0,1,120,0,3,60,0,2,60,0,2,60, + 0,6,30,0,4,30,0,7,254,0,12,15,0,8,15,0, + 8,15,0,24,7,128,56,7,128,254,31,224,19,23,69,19, + 0,0,3,156,0,3,156,0,3,156,0,0,0,0,0,0, + 0,0,96,0,0,96,0,0,240,0,0,240,0,1,120,0, + 1,120,0,3,60,0,2,60,0,2,60,0,6,30,0,4, + 30,0,7,254,0,12,15,0,8,15,0,8,15,0,24,7, + 128,56,7,128,254,31,224,19,24,72,19,0,0,0,240,0, + 1,152,0,1,8,0,1,152,0,0,240,0,0,0,0,0, + 96,0,0,96,0,0,240,0,0,240,0,1,120,0,1,120, + 0,3,60,0,2,60,0,2,60,0,6,30,0,4,30,0, + 7,254,0,12,15,0,8,15,0,8,15,0,24,7,128,56, + 7,128,254,31,224,25,18,72,26,0,0,1,255,255,128,0, + 111,3,128,0,111,1,128,0,207,0,128,0,207,0,128,1, + 143,8,128,1,143,8,0,3,15,24,0,3,15,248,0,6, + 15,24,0,7,255,8,0,12,15,8,0,12,15,0,128,24, + 15,0,128,24,15,0,128,48,15,1,128,112,15,3,128,252, + 63,255,128,17,23,69,19,1,251,3,249,128,15,15,128,60, + 3,128,60,1,128,120,1,128,120,0,128,248,0,128,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,120,0,128, + 120,0,128,60,1,0,60,1,0,15,6,0,3,248,0,0, + 128,0,1,192,0,0,224,0,0,96,0,3,192,0,15,24, + 48,18,1,0,12,0,14,0,7,0,1,128,0,192,0,0, + 255,254,60,30,60,6,60,2,60,2,60,34,60,32,60,96, + 63,224,60,96,60,32,60,32,60,2,60,2,60,2,60,6, + 60,30,255,254,15,24,48,18,1,0,0,24,0,56,0,112, + 0,192,1,128,0,0,255,254,60,30,60,6,60,2,60,2, + 60,34,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,2,60,6,60,30,255,254,15,23,46,18,1,0, + 1,128,3,192,6,96,12,48,0,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,23, + 46,18,1,0,14,112,14,112,14,112,0,0,0,0,255,254, + 60,30,60,6,60,2,60,2,60,34,60,32,60,96,63,224, + 60,96,60,32,60,32,60,2,60,2,60,2,60,6,60,30, + 255,254,8,24,24,10,1,0,192,224,112,24,12,0,255,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,255, + 8,24,24,10,1,0,3,7,14,24,48,0,255,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,255,8,23, + 23,10,1,0,24,60,102,195,0,255,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,255,8,23,23,10,1, + 0,231,231,231,0,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,255,135,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,20,22,66,22,1,0,0,226,0,1,252,0, + 2,56,0,0,0,0,252,7,240,62,1,192,31,0,128,31, + 128,128,31,192,128,23,224,128,19,240,128,17,240,128,16,248, + 128,16,124,128,16,126,128,16,63,128,16,31,128,16,15,128, + 16,7,128,16,3,128,56,1,128,254,0,128,19,24,72,21, + 1,0,6,0,0,7,0,0,3,128,0,0,192,0,0,96, + 0,0,0,0,3,248,0,15,30,0,60,7,128,60,7,128, + 120,3,192,120,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,120,3,192,120,3,192,60,7, + 128,60,7,128,15,30,0,3,248,0,19,23,69,21,1,0, + 0,24,0,0,56,0,0,96,0,0,192,0,0,0,0,3, + 248,0,15,30,0,60,7,128,60,7,128,120,3,192,120,3, + 192,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,120,3,192,120,3,192,60,7,128,60,7,128,15, + 30,0,3,248,0,19,23,69,21,1,0,0,96,0,0,240, + 0,1,152,0,3,12,0,0,0,0,3,248,0,15,30,0, + 60,7,128,60,7,128,120,3,192,120,3,192,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,120,3, + 192,120,3,192,60,7,128,60,7,128,15,30,0,3,248,0, + 19,22,66,21,1,0,0,226,0,1,252,0,2,56,0,0, + 0,0,3,248,0,15,30,0,60,7,128,60,7,128,120,3, + 192,120,3,192,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,120,3,192,120,3,192,60,7,128,60, + 7,128,15,30,0,3,248,0,19,23,69,21,1,0,7,28, + 0,7,28,0,7,28,0,0,0,0,0,0,0,3,248,0, + 15,30,0,60,7,128,60,7,128,120,3,192,120,3,192,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,120,3,192,120,3,192,60,7,128,60,7,128,15,30,0, + 3,248,0,12,12,24,14,1,1,192,48,224,112,112,224,57, + 192,31,128,15,0,15,0,31,128,57,192,112,224,224,112,192, + 48,20,18,54,21,0,0,1,252,48,7,143,96,30,3,192, + 30,3,192,60,7,224,60,13,224,124,25,240,124,49,240,124, + 97,240,124,193,240,125,129,240,127,1,240,62,1,224,60,1, + 224,62,3,192,126,3,192,199,143,0,129,252,0,19,24,72, + 21,1,0,3,0,0,3,128,0,1,192,0,0,96,0,0, + 48,0,0,0,0,255,15,224,60,3,128,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,30,2,0,31,142,0,7,248,0,19,24,72,21,1, + 0,0,6,0,0,14,0,0,28,0,0,48,0,0,96,0, + 0,0,0,255,15,224,60,3,128,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 30,2,0,31,142,0,7,248,0,19,23,69,21,1,0,0, + 96,0,0,240,0,1,152,0,3,12,0,0,0,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,30,2,0,31,142, + 0,7,248,0,19,23,69,21,1,0,7,28,0,7,28,0, + 7,28,0,0,0,0,0,0,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,30,2,0,31,142,0,7,248,0,18, + 24,72,18,0,0,0,6,0,0,14,0,0,28,0,0,48, + 0,0,96,0,0,0,0,255,15,192,60,3,0,30,6,0, + 30,6,0,15,12,0,15,12,0,7,152,0,7,152,0,3, + 240,0,3,240,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,7,248,0,16,18,36, + 18,1,0,255,128,60,0,60,0,60,0,63,248,60,62,60, + 30,60,31,60,31,60,31,60,31,60,30,60,62,63,240,60, + 0,60,0,60,0,255,128,15,18,36,15,255,0,7,224,30, + 120,28,60,60,60,60,60,60,56,60,112,61,224,60,60,60, + 30,60,30,60,30,60,30,60,30,60,30,60,28,61,60,253, + 240,14,18,36,15,0,0,12,0,14,0,7,0,3,0,1, + 128,0,0,127,128,241,224,240,240,96,240,1,240,14,240,120, + 240,240,240,240,240,240,240,249,252,126,56,14,18,36,15,0, + 0,1,128,3,128,7,0,6,0,12,0,0,0,127,128,241, + 224,240,240,96,240,1,240,14,240,120,240,240,240,240,240,240, + 240,249,252,126,56,14,18,36,15,0,0,2,0,7,0,15, + 128,24,192,48,96,0,0,127,128,241,224,240,240,96,240,1, + 240,14,240,120,240,240,240,240,240,240,240,249,252,126,56,14, + 17,34,15,0,0,14,32,31,192,35,128,0,0,0,0,127, + 128,241,224,240,240,96,240,1,240,14,240,120,240,240,240,240, + 240,240,240,249,252,126,56,14,17,34,15,0,0,56,224,56, + 224,56,224,0,0,0,0,127,128,241,224,240,240,96,240,1, + 240,14,240,120,240,240,240,240,240,240,240,249,252,126,56,14, + 18,36,15,0,0,7,0,13,128,8,128,13,128,7,0,0, + 0,127,128,241,224,240,240,96,240,1,240,14,240,120,240,240, + 240,240,240,240,240,249,252,126,56,22,12,36,23,0,0,31, + 207,192,121,248,112,112,248,120,112,240,56,1,240,60,14,255, + 252,120,240,0,240,240,0,240,248,8,240,248,8,249,188,48, + 126,15,224,13,17,34,14,0,251,15,240,56,120,120,120,112, + 48,240,0,240,0,240,0,240,0,120,8,120,8,60,48,31, + 224,2,0,7,0,3,128,1,128,15,0,14,18,36,15,0, + 0,12,0,14,0,7,0,3,0,1,128,0,0,15,192,56, + 112,120,120,112,56,240,60,255,252,240,0,240,0,120,8,120, + 8,60,48,15,224,14,18,36,15,0,0,0,96,0,224,1, + 192,3,128,6,0,0,0,15,192,56,112,120,120,112,56,240, + 60,255,252,240,0,240,0,120,8,120,8,60,48,15,224,14, + 18,36,15,0,0,2,0,7,0,15,128,24,192,48,96,0, + 0,15,192,56,112,120,120,112,56,240,60,255,252,240,0,240, + 0,120,8,120,8,60,48,15,224,14,17,34,15,0,0,28, + 112,28,112,28,112,0,0,0,0,15,192,56,112,120,120,112, + 56,240,60,255,252,240,0,240,0,120,8,120,8,60,48,15, + 224,8,18,18,9,0,0,96,112,56,24,12,0,252,60,60, + 60,60,60,60,60,60,60,60,255,8,18,18,9,0,0,12, + 28,56,48,96,0,252,60,60,60,60,60,60,60,60,60,60, + 255,9,18,36,9,0,0,8,0,28,0,62,0,99,0,193, + 128,0,0,252,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,255,0,8,17,17,9,0, + 0,231,231,231,0,0,252,60,60,60,60,60,60,60,60,60, + 60,255,14,18,36,15,0,0,192,0,57,192,15,0,15,0, + 49,192,0,224,15,240,56,112,120,120,112,56,240,60,240,60, + 240,60,240,60,112,56,120,120,56,112,15,192,17,17,51,18, + 0,0,3,136,0,7,240,0,8,224,0,0,0,0,0,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,18,36,15,0,0,12,0,14,0,7, + 0,3,0,1,128,0,0,15,192,56,112,120,120,112,56,240, + 60,240,60,240,60,240,60,112,56,120,120,56,112,15,192,14, + 18,36,15,0,0,0,96,0,224,1,192,3,0,6,0,0, + 0,15,192,56,112,120,120,112,56,240,60,240,60,240,60,240, + 60,112,56,120,120,56,112,15,192,14,18,36,15,0,0,2, + 0,7,0,15,128,24,192,48,96,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,14,17,34,15,0,0,7,16,15,224,17,192,0, + 0,0,0,15,192,56,112,120,120,112,56,240,60,240,60,240, + 60,240,60,112,56,120,120,56,112,15,192,14,17,34,15,0, + 0,56,224,56,224,56,224,0,0,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,12,12,24,14,1,1,6,0,6,0,6,0,0, + 0,0,0,255,240,255,240,0,0,0,0,6,0,6,0,6, + 0,14,18,36,15,0,253,0,16,0,16,0,32,15,224,56, + 112,120,120,112,184,240,188,241,60,241,60,242,60,114,56,124, + 120,60,112,15,192,8,0,16,0,16,0,17,18,54,18,0, + 0,3,0,0,3,128,0,1,192,0,0,192,0,0,96,0, + 0,0,0,254,63,128,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,62,62, + 0,31,222,0,15,159,128,17,18,54,18,0,0,0,96,0, + 0,224,0,1,192,0,1,128,0,3,0,0,0,0,0,254, + 63,128,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,62,62,0,31,222,0, + 15,159,128,17,18,54,18,0,0,0,128,0,1,192,0,3, + 224,0,6,48,0,12,24,0,0,0,0,254,63,128,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,62,62,0,31,222,0,15,159,128,17, + 17,51,18,0,0,14,56,0,14,56,0,14,56,0,0,0, + 0,0,0,0,254,63,128,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,62, + 62,0,31,222,0,15,159,128,16,23,46,15,255,251,0,48, + 0,112,0,224,0,192,1,128,0,0,254,63,60,12,30,8, + 30,24,15,16,15,48,7,160,7,224,3,192,3,192,1,192, + 1,128,1,128,97,0,243,0,254,0,120,0,16,23,46,16, + 255,251,252,0,60,0,60,0,60,0,60,0,60,0,61,240, + 63,28,60,30,60,14,60,15,60,15,60,15,60,15,60,14, + 62,30,63,28,61,240,60,0,60,0,60,0,60,0,255,0, + 16,22,44,15,255,251,14,56,14,56,14,56,0,0,0,0, + 254,63,60,12,30,8,30,24,15,16,15,48,7,160,7,224, + 3,192,3,192,1,192,1,128,1,128,97,0,243,0,254,0, + 120,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--25-180-100-100-P-149-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=23 x= 6 y=13 dx=26 dy= 0 ascent=20 len=72 + Font Bounding box w=33 h=40 x=-4 y=-10 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB18r[3736] U8G_SECTION(".progmem.u8g_font_ncenB18r") = { + 0,33,40,252,246,18,4,68,10,106,32,127,251,20,251,18, + 251,0,0,0,7,0,1,5,18,18,7,1,0,112,248,248, + 248,112,112,112,112,112,112,32,32,0,0,112,248,248,112,6, + 6,6,8,1,12,204,204,204,204,204,136,12,18,36,14,1, + 0,12,192,12,192,12,192,12,192,12,192,127,240,127,240,25, + 128,25,128,25,128,25,128,255,224,255,224,51,0,51,0,51, + 0,51,0,51,0,12,23,46,14,1,253,4,0,4,0,31, + 192,116,96,100,240,228,240,228,240,244,96,252,0,255,0,127, + 192,31,224,7,240,5,240,100,240,244,112,244,112,244,96,100, + 224,63,128,4,0,4,0,4,0,19,18,54,21,1,0,30, + 14,0,123,54,0,113,204,0,241,12,0,225,24,0,226,24, + 0,226,48,0,100,48,0,56,96,0,0,99,192,0,207,96, + 0,206,32,1,158,32,1,156,32,3,28,64,3,28,64,6, + 12,128,6,7,0,20,18,54,22,1,0,1,240,0,7,56, + 0,14,24,0,14,24,0,14,24,0,15,48,0,15,224,0, + 7,192,0,15,192,0,57,227,240,113,241,192,240,241,128,240, + 121,0,240,127,0,240,62,16,120,31,16,124,63,224,31,199, + 192,2,6,6,6,2,12,192,192,192,192,192,192,6,21,21, + 8,1,253,4,12,24,48,48,96,96,224,224,224,224,224,224, + 224,96,96,48,48,24,12,4,6,21,21,8,1,253,128,192, + 96,48,48,24,24,28,28,28,28,28,28,28,24,24,48,48, + 96,192,128,9,10,20,11,1,8,28,0,28,0,201,128,235, + 128,62,0,62,0,235,128,201,128,28,0,28,0,12,12,24, + 14,1,1,6,0,6,0,6,0,6,0,6,0,255,240,255, + 240,6,0,6,0,6,0,6,0,6,0,5,8,8,7,1, + 252,112,248,248,120,48,32,64,128,6,3,3,8,1,5,252, + 252,252,5,4,4,7,1,0,112,248,248,112,7,18,18,9, + 1,0,6,6,6,12,12,12,24,24,24,48,48,48,96,96, + 96,192,192,192,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,57,192,15,0,10,18, + 36,14,2,0,30,0,254,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,255,192,11,18,36,14,1,0,31,0, + 99,192,225,224,241,224,241,224,241,224,97,224,1,192,3,192, + 3,128,7,0,14,0,24,32,48,32,112,96,255,224,255,224, + 255,224,12,18,36,14,1,0,15,128,49,224,112,224,120,240, + 120,240,120,240,48,224,1,192,15,0,1,192,0,224,96,240, + 240,240,240,240,240,240,224,224,97,224,31,128,12,18,36,14, + 1,0,0,192,1,192,3,192,7,192,7,192,15,192,27,192, + 19,192,51,192,99,192,99,192,195,192,255,240,255,240,3,192, + 3,192,3,192,15,240,12,18,36,14,1,0,127,240,127,224, + 127,192,64,0,64,0,64,0,95,0,113,192,96,224,0,240, + 0,240,0,240,96,240,240,240,240,240,240,224,97,192,63,0, + 12,18,36,14,1,0,15,128,56,192,113,224,113,224,241,224, + 240,192,240,0,247,128,249,224,240,224,240,240,240,240,240,240, + 240,240,240,240,112,224,121,224,31,128,12,18,36,14,1,0, + 255,240,255,240,255,224,192,96,128,192,129,192,3,128,3,128, + 7,0,7,0,15,0,15,0,30,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,112,224,120,224,124,192,63,128,31,128,63,192,119,224, + 225,240,224,240,224,112,224,112,224,96,112,192,31,128,12,18, + 36,14,1,0,31,128,121,224,112,224,240,240,240,240,240,240, + 240,240,240,240,112,240,121,240,30,240,0,240,48,240,120,240, + 120,224,120,224,49,192,31,0,5,12,12,7,1,0,112,248, + 248,112,0,0,0,0,112,248,248,112,5,16,16,7,1,252, + 112,248,248,112,0,0,0,0,112,248,248,120,48,32,64,128, + 12,12,24,14,1,1,0,48,0,240,3,192,15,0,60,0, + 240,0,240,0,60,0,15,0,3,192,0,240,0,48,12,6, + 12,14,1,4,255,240,255,240,0,0,0,0,255,240,255,240, + 12,12,24,14,1,1,192,0,240,0,60,0,15,0,3,192, + 0,240,0,240,3,192,15,0,60,0,240,0,192,0,11,18, + 36,13,1,0,63,0,99,192,241,224,241,224,97,224,1,224, + 1,192,3,128,7,0,12,0,24,0,24,0,0,0,0,0, + 28,0,62,0,62,0,28,0,19,18,54,20,1,0,1,252, + 0,15,6,0,12,1,128,48,0,192,48,220,192,99,188,96, + 103,28,96,199,28,96,206,28,96,206,56,96,206,56,64,206, + 56,192,206,121,128,103,191,0,96,0,0,56,1,0,28,7, + 0,7,252,0,19,18,54,19,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,1,120,0,1,120,0,3,60,0,2, + 60,0,2,60,0,6,30,0,4,30,0,7,254,0,12,15, + 0,8,15,0,8,15,0,24,7,128,56,7,128,254,31,224, + 17,18,54,19,1,0,255,248,0,60,62,0,60,31,0,60, + 31,0,60,31,0,60,31,0,60,30,0,60,60,0,63,248, + 0,60,30,0,60,15,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,31,0,255,252,0,17,18,54,19, + 1,0,3,249,128,15,15,128,60,3,128,60,1,128,120,1, + 128,120,0,128,248,0,128,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,120,0,128,120,0,128,60,1,0,60, + 1,0,15,6,0,3,248,0,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,60,7,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,15,18,36,18,1,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,18, + 36,17,1,0,255,254,60,30,60,6,60,2,60,2,60,34, + 60,32,60,96,63,224,60,96,60,32,60,32,60,0,60,0, + 60,0,60,0,60,0,255,0,18,18,54,20,1,0,3,249, + 128,15,15,128,60,3,128,60,1,128,120,1,128,120,0,128, + 248,0,128,248,0,0,248,0,0,248,0,0,248,15,192,248, + 7,128,120,7,128,120,7,128,60,7,128,60,7,128,15,13, + 128,3,248,128,19,18,54,21,1,0,255,31,224,60,7,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,63,255,128,60,7,128,60,7,128,60,7,128,60,7, + 128,60,7,128,60,7,128,60,7,128,60,7,128,255,31,224, + 8,18,18,10,1,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,14,18,36,16,0,0,3,252, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,96,240,240,240,240,240,224,240,192,224,97,224, + 63,128,20,18,54,21,1,0,255,15,192,60,3,0,60,6, + 0,60,12,0,60,24,0,60,48,0,60,96,0,60,224,0, + 61,240,0,63,248,0,62,248,0,60,124,0,60,62,0,60, + 31,0,60,31,0,60,15,128,60,7,192,255,15,240,15,18, + 36,17,1,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,2, + 60,2,60,6,60,30,255,254,22,18,54,24,1,0,252,1, + 252,60,1,240,62,3,240,62,2,240,46,2,240,47,6,240, + 39,4,240,39,132,240,39,140,240,35,136,240,35,200,240,35, + 216,240,33,208,240,33,240,240,32,224,240,32,224,240,112,96, + 240,248,67,252,20,18,54,22,1,0,252,7,240,62,1,192, + 31,0,128,31,128,128,31,192,128,23,224,128,19,240,128,17, + 240,128,16,248,128,16,124,128,16,126,128,16,63,128,16,31, + 128,16,15,128,16,7,128,16,3,128,56,1,128,254,0,128, + 19,18,54,21,1,0,3,248,0,15,30,0,60,7,128,60, + 7,128,120,3,192,120,3,192,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,120,3,192,120,3,192, + 60,7,128,60,7,128,15,30,0,3,248,0,17,18,54,18, + 1,0,255,252,0,60,31,0,60,15,0,60,15,128,60,15, + 128,60,15,128,60,15,128,60,15,0,60,31,0,63,248,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,255,128,0,19,23,69,21,1,251,3,248, + 0,15,30,0,60,7,128,60,7,128,120,3,192,120,3,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,251, + 227,224,126,115,192,124,51,192,60,51,128,60,27,128,15,30, + 0,3,254,0,0,14,0,0,15,32,0,7,192,0,7,192, + 0,3,128,19,18,54,21,1,0,255,248,0,60,62,0,60, + 31,0,60,31,0,60,31,0,60,31,0,60,30,0,60,60, + 0,63,224,0,60,120,0,60,60,0,60,60,0,60,62,0, + 60,30,0,60,31,32,60,15,32,60,15,192,255,135,128,14, + 18,36,16,1,0,15,200,56,120,96,24,224,24,224,8,240, + 8,254,0,255,192,127,240,63,248,15,252,1,252,128,60,128, + 28,192,28,192,24,240,112,159,192,16,18,36,18,1,0,255, + 255,227,199,195,195,131,193,131,193,131,193,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,15,240,19,18,54,21,1,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,2,0,30,2,0,31,140,0,7,248,0,19, + 18,54,19,0,0,255,15,224,60,3,128,60,3,0,30,2, + 0,30,2,0,30,6,0,15,4,0,15,4,0,15,12,0, + 7,136,0,7,136,0,7,152,0,3,208,0,3,208,0,1, + 224,0,1,224,0,0,192,0,0,192,0,26,18,72,26,0, + 0,255,127,159,192,60,30,7,0,60,30,6,0,30,15,4, + 0,30,15,4,0,30,15,12,0,15,31,136,0,15,23,136, + 0,15,23,152,0,7,179,208,0,7,163,208,0,7,163,240, + 0,3,225,224,0,3,193,224,0,3,193,224,0,1,192,192, + 0,1,128,192,0,1,128,192,0,20,18,54,20,0,0,255, + 135,224,62,1,128,31,3,0,31,134,0,15,140,0,7,216, + 0,3,240,0,3,224,0,1,240,0,0,248,0,1,248,0, + 3,124,0,6,62,0,4,31,0,12,31,0,24,15,128,48, + 7,192,252,31,240,18,18,54,18,0,0,255,15,192,60,3, + 0,30,2,0,30,6,0,15,4,0,15,12,0,7,136,0, + 7,152,0,3,208,0,3,240,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,7,248, + 0,15,18,36,17,1,0,127,254,112,62,96,124,64,120,64, + 248,0,240,1,224,3,224,3,192,7,128,15,128,15,0,30, + 0,62,2,60,2,120,6,248,14,255,254,6,21,21,8,1, + 253,252,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,252,10,18,36,12,1,0,192,0,224,0, + 224,0,112,0,112,0,56,0,56,0,28,0,28,0,14,0, + 14,0,7,0,7,0,3,128,3,128,1,192,1,192,0,192, + 6,21,21,8,1,253,252,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,252,10,10,20,15,2, + 8,12,0,12,0,30,0,30,0,51,0,51,0,97,128,97, + 128,192,192,192,192,12,2,4,12,0,252,255,240,255,240,5, + 5,5,7,1,13,224,224,112,48,24,14,12,24,15,0,0, + 127,128,241,224,240,240,96,240,1,240,14,240,120,240,240,240, + 240,240,240,240,249,252,126,56,16,18,36,16,255,0,252,0, + 60,0,60,0,60,0,60,0,60,0,61,240,63,28,62,30, + 60,14,60,15,60,15,60,15,60,15,60,14,60,30,62,28, + 39,240,13,12,24,14,0,0,15,240,56,120,120,120,112,48, + 240,0,240,0,240,0,240,0,120,8,120,8,60,48,31,224, + 16,18,36,17,0,0,0,252,0,60,0,60,0,60,0,60, + 0,60,15,188,56,252,120,124,112,60,240,60,240,60,240,60, + 240,60,112,60,120,124,56,252,15,191,14,12,24,15,0,0, + 15,192,56,112,120,120,112,56,240,60,255,252,240,0,240,0, + 120,8,120,8,60,48,15,224,12,18,36,10,0,0,7,224, + 28,240,28,240,60,96,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 255,0,13,18,36,15,1,251,0,56,31,248,121,224,240,240, + 240,240,240,240,240,240,121,224,63,128,96,0,224,0,255,192, + 127,240,127,248,96,56,192,24,224,48,127,224,17,18,54,18, + 0,0,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,248,0,61,252,0,62,62,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,254,63,128,8,18,18,9,0,0,24,60, + 60,24,0,0,252,60,60,60,60,60,60,60,60,60,60,255, + 8,23,23,7,253,251,6,15,15,6,0,0,63,15,15,15, + 15,15,15,15,15,15,15,15,15,15,206,206,120,17,18,54, + 17,0,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,254,0,60,56,0,60,48,0,60,96, + 0,60,192,0,63,192,0,63,224,0,60,240,0,60,120,0, + 60,60,0,60,30,0,255,127,128,8,18,18,9,0,0,252, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 255,24,12,36,25,0,0,252,240,240,61,249,248,62,126,124, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,254,126,127,17,12,36,18,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,12,24,15,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,16,17,34,16,255,251,253,240,63,28,60,30,60, + 14,60,15,60,15,60,15,60,15,60,14,62,30,63,28,61, + 240,60,0,60,0,60,0,60,0,255,0,16,17,34,16,0, + 251,15,132,60,236,120,60,112,60,240,60,240,60,240,60,240, + 60,112,60,120,124,56,252,15,188,0,60,0,60,0,60,0, + 60,0,255,12,12,24,12,0,0,252,224,61,240,62,240,60, + 96,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,10,12,24,11,0,0,62,128,99,128,193,128,224,128,252, + 0,255,128,127,192,15,192,129,192,192,192,225,128,191,0,10, + 17,34,10,0,0,4,0,12,0,12,0,28,0,60,0,255, + 128,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 64,60,64,31,128,15,0,17,12,36,18,0,0,254,126,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,31,222,0,15,159, + 128,16,12,24,15,255,0,255,31,60,4,30,12,30,8,15, + 24,15,16,7,176,7,160,3,224,3,192,1,192,1,128,23, + 12,36,22,255,0,255,63,62,60,30,8,60,30,8,30,63, + 24,30,47,16,30,47,16,15,103,176,15,71,160,7,195,224, + 7,131,192,3,129,192,3,1,128,17,12,36,16,255,0,255, + 31,0,62,12,0,31,24,0,15,176,0,7,224,0,3,192, + 0,1,224,0,3,240,0,6,248,0,12,124,0,24,62,0, + 124,127,128,16,17,34,15,255,251,254,63,60,12,30,8,30, + 24,15,16,15,48,7,160,7,224,3,192,3,192,1,192,1, + 128,1,128,97,0,243,0,254,0,120,0,11,12,24,12,0, + 0,255,224,225,224,195,224,135,192,143,128,15,0,30,0,62, + 32,124,32,248,96,240,224,255,224,6,21,21,8,1,253,28, + 48,112,112,112,112,112,112,112,96,192,96,112,112,112,112,112, + 112,112,48,28,3,18,18,15,6,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,6,21,21,8, + 1,253,224,48,56,56,56,56,56,56,56,24,12,24,56,56, + 56,56,56,56,56,48,224,12,5,10,15,1,4,56,32,126, + 112,255,240,231,224,65,192,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=32 h=33 x= 8 y=18 dx=33 dy= 0 ascent=33 len=132 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =33 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24[12964] U8G_SECTION(".progmem.u8g_font_ncenB24") = { + 0,39,53,252,243,25,6,143,16,147,32,255,249,33,249,25, + 249,0,0,0,9,1,1,6,25,25,10,2,0,120,252,252, + 252,252,252,252,120,120,120,120,48,48,48,48,48,48,0,0, + 120,252,252,252,252,120,11,11,22,11,0,14,96,192,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,96,192, + 96,192,16,25,50,19,1,255,7,28,7,28,7,28,7,28, + 14,56,14,56,14,56,127,255,127,255,127,255,14,56,12,48, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,56,224, + 56,224,56,224,56,224,56,224,56,224,17,30,90,19,1,252, + 1,128,0,1,128,0,1,128,0,7,240,0,31,252,0,57, + 158,0,113,143,0,113,159,0,241,159,0,241,142,0,253,128, + 0,255,128,0,127,240,0,127,252,0,63,254,0,15,255,0, + 1,255,128,1,191,128,113,143,128,249,135,128,249,135,128,249, + 135,0,241,143,0,121,158,0,63,252,0,7,224,0,1,128, + 0,1,128,0,1,128,0,1,128,0,26,24,96,27,0,0, + 0,0,24,0,7,192,48,0,15,96,112,0,30,57,224,0, + 60,31,96,0,60,16,192,0,120,16,128,0,120,17,128,0, + 240,49,0,0,240,35,0,0,240,98,0,0,240,198,31,0, + 123,140,61,128,63,12,120,192,0,24,240,64,0,17,240,64, + 0,49,224,64,0,33,224,192,0,99,224,192,0,195,193,128, + 0,195,193,128,1,131,195,0,1,129,230,0,3,0,252,0, + 24,25,75,28,2,0,0,124,0,1,255,0,3,199,0,7, + 135,128,7,131,128,7,131,128,7,199,128,7,199,0,7,239, + 0,7,252,0,3,248,0,7,241,255,15,249,255,61,248,124, + 120,252,56,120,254,112,248,126,96,248,63,224,252,63,192,252, + 31,193,254,15,227,255,15,243,127,255,254,63,243,254,15,128, + 252,4,11,11,8,2,14,96,240,240,240,240,240,240,96,96, + 96,96,9,27,54,13,2,253,3,128,7,0,14,0,28,0, + 28,0,56,0,56,0,120,0,120,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 56,0,56,0,28,0,28,0,14,0,7,0,3,128,9,27, + 54,13,1,253,224,0,48,0,56,0,28,0,28,0,14,0, + 14,0,15,0,7,0,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,15,0,15,0,14,0,14,0, + 28,0,28,0,56,0,112,0,192,0,12,15,30,17,2,10, + 6,0,14,0,14,0,230,112,230,112,246,240,63,192,15,0, + 127,224,246,240,230,112,230,112,7,0,7,0,6,0,16,16, + 32,20,2,1,3,192,3,192,3,192,3,192,3,192,3,192, + 255,255,255,255,255,255,255,255,3,192,3,192,3,192,3,192, + 3,192,3,192,6,11,11,9,2,251,120,248,252,252,252,124, + 28,24,48,112,224,8,4,4,11,1,6,255,255,255,255,6, + 6,6,9,1,0,120,252,252,252,252,120,10,25,50,9,255, + 0,0,192,1,192,1,192,1,128,3,128,3,128,3,0,7, + 0,7,0,6,0,14,0,14,0,12,0,28,0,28,0,24, + 0,56,0,56,0,48,0,112,0,112,0,96,0,224,0,224, + 0,192,0,16,24,48,19,1,0,3,192,15,240,30,120,60, + 60,124,62,120,30,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,120,30,120,30,124, + 62,60,60,30,120,15,240,3,192,13,24,48,19,3,0,1, + 128,7,128,255,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,255,248,255,248,17, + 24,72,19,1,0,15,240,0,63,252,0,120,126,0,240,63, + 0,248,31,0,252,31,0,252,31,0,252,31,0,124,63,0, + 56,62,0,0,124,0,0,248,0,0,240,0,1,224,0,3, + 192,0,3,129,128,7,1,128,14,1,128,28,3,128,63,255, + 128,127,255,0,127,255,0,255,255,0,255,255,0,16,24,48, + 19,1,0,15,224,63,248,120,124,248,62,252,62,252,62,252, + 62,120,62,0,124,0,112,7,224,7,192,0,248,0,126,0, + 62,0,63,120,31,252,31,252,31,252,63,248,62,120,126,63, + 248,7,224,17,24,72,19,0,0,0,4,0,0,12,0,0, + 28,0,0,60,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,124,0,6,124,0,12,124,0,28,124,0,56,124,0, + 112,124,0,224,124,0,192,124,0,255,255,128,255,255,128,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,16,24,48,19,1,0,31,255,63,254,63,254,63,252,63, + 240,48,0,48,0,48,0,48,0,55,224,63,248,56,124,48, + 62,32,62,0,31,0,31,56,31,124,31,252,31,252,62,120, + 62,112,252,63,240,15,192,17,24,72,19,1,0,3,240,0, + 15,252,0,31,30,0,62,62,0,60,62,0,124,62,0,120, + 28,0,248,0,0,248,0,0,248,0,0,249,248,0,255,254, + 0,255,127,0,252,31,0,248,31,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,0,124,31,0,62,62,0,31, + 252,0,7,240,0,16,24,48,19,2,0,255,255,255,254,255, + 254,255,252,255,252,192,24,192,24,192,56,128,112,0,112,0, + 240,0,224,1,224,1,224,3,224,3,192,7,192,7,192,15, + 192,15,192,15,192,15,192,15,192,7,128,17,24,72,19,1, + 0,7,240,0,15,252,0,60,62,0,56,31,0,120,15,0, + 120,15,0,120,15,0,124,15,0,126,30,0,127,252,0,63, + 240,0,31,252,0,15,254,0,63,255,0,120,127,0,248,31, + 128,240,15,128,240,15,128,240,15,0,240,15,0,248,30,0, + 124,60,0,63,240,0,7,192,0,17,24,72,19,1,0,3, + 192,0,31,248,0,62,124,0,124,62,0,252,31,0,248,31, + 0,248,15,128,248,15,128,248,15,128,252,31,128,252,63,128, + 127,111,128,63,207,128,31,143,128,0,15,128,0,15,128,112, + 15,0,248,31,0,252,31,0,248,30,0,248,62,0,112,252, + 0,63,240,0,15,192,0,6,16,16,9,2,0,120,252,252, + 252,252,120,0,0,0,0,120,252,252,252,252,120,6,21,21, + 9,2,251,120,252,252,252,252,120,0,0,0,0,120,248,252, + 252,252,124,28,24,48,112,224,16,18,36,20,2,0,0,3, + 0,15,0,127,1,255,7,252,31,240,127,128,254,0,248,0, + 252,0,255,128,63,224,15,248,3,254,0,127,0,31,0,7, + 0,1,16,10,20,20,2,3,255,255,255,255,255,255,255,255, + 0,0,0,0,255,255,255,255,255,255,255,255,16,18,36,20, + 2,0,192,0,240,0,254,0,255,128,63,224,15,248,1,254, + 0,127,0,31,0,63,1,255,7,252,31,240,127,192,254,0, + 248,0,224,0,128,0,14,25,50,16,1,0,15,192,63,240, + 113,248,240,248,248,252,248,252,248,252,112,252,0,248,1,248, + 1,240,3,224,3,128,7,0,7,0,6,0,6,0,0,0, + 0,0,15,0,31,128,31,128,31,128,31,128,15,0,23,25, + 75,25,0,0,0,127,0,1,255,192,7,227,240,15,0,120, + 30,0,28,28,0,12,56,60,6,48,255,230,113,227,230,113, + 227,198,99,195,198,227,131,198,231,135,134,231,135,140,231,7, + 140,231,15,28,231,15,24,227,31,112,115,247,224,48,227,204, + 56,0,28,28,0,120,15,1,240,7,255,224,1,255,0,25, + 25,100,25,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,63,0,0,0,127,0,0,0,127,128, + 0,0,127,128,0,0,255,128,0,0,207,192,0,1,207,192, + 0,1,143,192,0,1,135,224,0,3,135,224,0,3,7,240, + 0,7,3,240,0,7,255,240,0,7,255,248,0,14,1,248, + 0,12,1,252,0,28,0,252,0,28,0,254,0,62,0,254, + 0,255,131,255,128,255,131,255,128,23,25,75,25,1,0,255, + 255,128,255,255,224,31,131,240,31,129,248,31,129,248,31,128, + 252,31,128,252,31,128,252,31,128,248,31,129,248,31,129,240, + 31,135,224,31,255,0,31,255,192,31,131,240,31,128,252,31, + 128,252,31,128,254,31,128,126,31,128,254,31,128,252,31,128, + 252,31,131,248,255,255,240,255,255,192,22,25,75,24,1,0, + 0,126,24,3,255,184,7,193,248,31,128,248,31,0,120,62, + 0,56,126,0,56,126,0,24,254,0,24,252,0,8,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 254,0,12,254,0,28,126,0,24,126,0,56,63,0,48,31, + 128,112,15,193,224,7,255,192,0,255,0,24,25,75,26,1, + 0,255,255,0,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,126,31,128,126,31,128,127,31,128,63,31,128,63,31, + 128,63,31,128,63,31,128,63,31,128,63,31,128,63,31,128, + 63,31,128,127,31,128,126,31,128,126,31,128,126,31,128,252, + 31,129,248,31,131,240,255,255,224,255,255,0,21,25,75,23, + 1,0,255,255,248,255,255,248,31,129,248,31,128,248,31,128, + 120,31,128,56,31,128,56,31,134,24,31,134,24,31,142,0, + 31,142,0,31,158,0,31,254,0,31,254,0,31,158,0,31, + 142,0,31,134,24,31,134,24,31,134,24,31,128,56,31,128, + 56,31,128,120,31,129,248,255,255,248,255,255,248,21,25,75, + 23,1,0,255,255,248,255,255,248,31,193,248,31,128,248,31, + 128,120,31,128,56,31,128,24,31,131,24,31,131,24,31,135, + 8,31,135,0,31,159,0,31,255,0,31,255,0,31,143,0, + 31,135,0,31,131,0,31,131,0,31,131,0,31,128,0,31, + 128,0,31,128,0,31,128,0,255,248,0,255,248,0,25,25, + 100,26,1,0,0,126,12,0,3,255,220,0,7,193,252,0, + 15,128,124,0,31,0,60,0,63,0,28,0,126,0,28,0, + 126,0,12,0,254,0,12,0,254,0,4,0,254,0,0,0, + 252,0,0,0,252,0,0,0,252,0,0,0,252,7,255,128, + 252,7,255,128,252,0,124,0,254,0,124,0,126,0,124,0, + 126,0,124,0,63,0,252,0,31,0,252,0,15,129,220,0, + 7,255,28,0,0,252,12,0,26,25,100,28,1,0,255,243, + 255,192,255,243,255,192,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,255, + 254,0,31,255,254,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,255,243,255,192,255,243, + 255,192,12,25,50,14,1,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,20,25,75,20,0,0, + 0,255,240,0,255,240,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,24,31,128,126,31,128,126,31,128, + 254,31,128,254,31,128,254,31,128,252,31,0,96,63,0,96, + 62,0,56,254,0,63,248,0,15,224,0,25,25,100,27,1, + 0,255,243,255,128,255,243,255,128,31,128,126,0,31,128,120, + 0,31,128,240,0,31,129,224,0,31,129,192,0,31,131,128, + 0,31,135,0,0,31,143,0,0,31,159,0,0,31,191,128, + 0,31,255,192,0,31,239,192,0,31,239,224,0,31,199,224, + 0,31,135,240,0,31,131,248,0,31,129,248,0,31,129,252, + 0,31,128,252,0,31,128,254,0,31,128,255,0,255,243,255, + 128,255,243,255,128,21,25,75,23,1,0,255,240,0,255,240, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,24,31,128, + 24,31,128,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,31,25,100,32,0,0,127,224,7,254, + 127,240,15,254,15,240,15,240,15,240,15,240,13,248,27,240, + 13,248,27,240,13,248,27,240,12,252,59,240,12,252,51,240, + 12,252,51,240,12,124,115,240,12,126,99,240,12,126,99,240, + 12,62,227,240,12,63,195,240,12,63,195,240,12,31,195,240, + 12,31,131,240,12,31,131,240,12,15,131,240,12,15,3,240, + 12,15,3,240,30,15,3,240,255,198,31,254,255,198,31,254, + 27,25,100,27,0,0,255,128,127,224,255,192,127,224,63,224, + 15,0,15,224,6,0,15,240,6,0,15,248,6,0,15,252, + 6,0,13,254,6,0,12,254,6,0,12,255,6,0,12,127, + 134,0,12,63,198,0,12,31,230,0,12,15,230,0,12,15, + 246,0,12,7,254,0,12,3,254,0,12,1,254,0,12,0, + 254,0,12,0,126,0,12,0,126,0,12,0,62,0,30,0, + 30,0,255,192,14,0,255,192,6,0,24,25,75,26,1,0, + 0,126,0,3,255,192,15,193,240,31,128,248,63,0,252,62, + 0,124,126,0,126,126,0,126,252,0,63,252,0,63,252,0, + 63,252,0,63,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,126,0,126,126,0,126,62,0,124,63,0,252,31, + 128,248,15,193,240,3,255,192,0,126,0,22,25,75,24,1, + 0,255,255,128,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,240,0,255,240,0,25,31,124,26, + 1,250,0,126,0,0,3,255,192,0,15,193,240,0,31,128, + 248,0,63,0,252,0,62,0,124,0,126,0,126,0,126,0, + 126,0,252,0,63,0,252,0,63,0,252,0,63,0,252,0, + 63,0,252,0,63,0,252,0,63,0,252,0,63,0,252,60, + 63,0,252,254,63,0,127,135,126,0,127,131,254,0,63,3, + 252,0,63,3,252,0,31,131,248,0,15,195,240,0,3,255, + 224,0,0,127,224,0,0,3,225,128,0,3,225,128,0,1, + 243,128,0,1,255,0,0,0,254,0,0,0,60,0,25,25, + 100,27,1,0,255,255,128,0,255,255,240,0,31,131,248,0, + 31,129,248,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,129,248,0,31,129,240,0, + 31,135,192,0,31,255,0,0,31,255,192,0,31,135,224,0, + 31,131,224,0,31,131,240,0,31,131,240,0,31,131,240,0, + 31,131,249,128,31,129,249,128,31,129,251,0,31,129,255,0, + 255,240,254,0,255,240,124,0,19,25,75,21,1,0,3,240, + 192,31,253,192,60,31,192,120,7,192,112,3,192,240,1,192, + 240,0,192,248,0,192,255,0,192,255,240,0,127,254,0,127, + 255,0,63,255,128,15,255,192,7,255,224,64,127,224,96,7, + 224,96,3,224,112,1,224,120,1,224,120,1,192,126,3,192, + 127,7,128,103,255,0,97,252,0,21,25,75,23,1,0,255, + 255,248,255,255,248,241,248,120,225,248,56,225,248,56,193,248, + 24,193,248,24,193,248,24,129,248,8,129,248,8,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,15,255,128,15,255,128,26,25,100,28,1,0, + 255,240,255,192,255,240,255,192,31,128,30,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,28,0, + 15,192,24,0,15,224,56,0,7,248,240,0,3,255,224,0, + 0,255,192,0,25,25,100,25,0,0,255,224,255,128,255,224, + 255,128,63,128,62,0,31,128,28,0,31,128,28,0,31,192, + 24,0,15,192,56,0,15,192,48,0,7,224,112,0,7,224, + 112,0,7,240,96,0,3,240,224,0,3,240,192,0,1,248, + 192,0,1,249,192,0,1,249,128,0,0,255,128,0,0,255, + 0,0,0,255,0,0,0,127,0,0,0,126,0,0,0,62, + 0,0,0,62,0,0,0,60,0,0,0,28,0,0,32,25, + 100,32,0,0,255,223,249,255,255,223,249,255,63,7,224,124, + 63,7,224,56,31,131,224,48,31,131,240,112,31,131,240,112, + 15,193,240,96,15,195,248,96,15,195,248,224,7,195,248,192, + 7,231,248,192,7,230,252,192,7,230,253,128,3,254,125,128, + 3,252,127,128,3,252,127,128,1,252,63,0,1,248,63,0, + 1,248,63,0,0,248,62,0,0,248,30,0,0,240,30,0, + 0,112,28,0,0,112,12,0,24,25,75,24,0,0,255,227, + 255,255,227,255,63,128,252,31,192,120,31,192,112,15,224,224, + 7,224,192,7,241,192,3,255,128,3,255,0,1,255,0,0, + 254,0,0,254,0,0,127,0,0,127,128,0,255,128,1,223, + 192,3,143,224,3,143,224,7,7,240,14,3,240,30,3,248, + 63,3,252,255,239,255,255,239,255,24,25,75,24,0,0,255, + 241,255,255,241,255,63,128,124,31,192,56,31,192,112,15,224, + 112,15,224,224,7,240,192,3,241,192,3,249,128,1,251,128, + 1,255,0,0,255,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,0,126,0,0,126,0,0,126, + 0,0,126,0,3,255,192,3,255,192,19,25,75,21,1,0, + 127,255,224,127,255,224,126,15,224,120,15,224,112,31,192,112, + 31,128,96,63,128,96,127,0,64,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,240,0,7,240,0,15,224,32, + 15,224,96,31,192,96,31,128,96,63,128,224,127,0,224,127, + 1,224,254,7,224,255,255,224,255,255,224,8,29,29,13,3, + 252,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,255,255,16,25, + 50,20,2,0,240,0,248,0,120,0,124,0,60,0,62,0, + 30,0,31,0,15,0,15,128,7,128,7,192,3,192,3,224, + 1,224,1,240,0,240,0,248,0,120,0,124,0,60,0,62, + 0,30,0,30,0,15,8,29,29,13,1,252,255,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,255,255,16,14,28,20,2,11,3, + 192,7,224,7,224,15,240,15,240,15,240,30,120,30,120,60, + 60,60,60,124,62,120,30,248,31,240,15,16,3,6,16,0, + 251,255,255,255,255,255,255,7,6,6,11,2,17,96,240,248, + 124,30,6,18,16,48,20,1,0,15,240,0,63,252,0,120, + 126,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,19,25,75,21,0,0,255, + 0,0,255,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,63,0,31,255,128, + 31,207,192,31,135,192,31,3,224,31,3,224,31,3,224,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 192,31,143,128,29,255,0,24,124,0,15,16,32,17,1,0, + 3,240,15,252,62,62,124,62,124,62,248,28,248,0,248,0, + 248,0,248,0,252,2,252,6,126,6,63,28,31,248,7,224, + 20,25,75,22,1,0,0,127,128,0,127,128,0,31,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,15,207,128,31,239,128,62,63,128,124,31,128,120,31,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,31,128,124,31,128,124,127,128,63,239,240,15,143, + 240,16,16,32,18,1,0,3,224,15,248,60,60,120,30,120, + 30,248,31,248,31,255,255,255,255,248,0,248,0,252,3,124, + 6,63,14,31,252,7,240,15,25,50,13,0,0,0,240,3, + 252,7,158,15,62,15,62,31,28,31,0,31,0,31,0,255, + 240,255,240,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,255,224,255,224,20, + 25,75,20,1,249,0,1,224,0,3,240,7,255,240,31,124, + 224,62,62,0,124,31,0,124,31,0,124,31,0,124,31,0, + 124,31,0,62,62,0,31,126,0,31,248,0,124,0,0,248, + 0,0,255,252,0,255,255,0,63,255,0,31,255,128,127,255, + 128,240,7,128,240,7,128,248,15,0,127,254,0,15,240,0, + 20,25,75,22,1,0,254,0,0,254,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,62,0,62,255,128,63,255,128,63,143,192,63,7,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,255,159,240,255,159, + 240,9,25,50,12,2,0,28,0,62,0,62,0,62,0,28, + 0,0,0,0,0,0,0,0,0,254,0,254,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,255,128,12,32,64,12,253,249,0, + 224,1,240,1,240,1,240,0,224,0,0,0,0,0,0,0, + 0,7,240,7,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,113,240,249,224,249,224,251,192,127,128,30,0,20, + 25,75,22,1,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,63,224,62,63,224,62,15,0,62,14,0,62,60,0,62, + 112,0,62,248,0,63,252,0,63,254,0,63,126,0,62,63, + 0,62,31,128,62,31,192,62,15,224,255,191,240,255,191,240, + 10,25,50,12,1,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,255,192,255,192,29,16,64,31,1,0,254,126, + 31,0,254,255,63,192,63,255,255,192,63,159,231,224,63,15, + 195,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,255,191,239,248,255,191,239,248,20,16, + 48,22,1,0,254,62,0,254,255,128,63,255,128,63,143,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,255,159, + 240,255,159,240,17,16,48,19,1,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,19,23,69,21,1,249, + 254,126,0,254,255,128,63,143,192,63,7,192,63,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,63,7,192,63,7,192,63,143,128,63,255,0,62,126,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,255, + 128,0,255,128,0,20,23,69,20,1,249,7,225,128,31,249, + 128,62,31,128,124,31,128,124,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,124,31,128,124, + 31,128,62,63,128,31,239,128,7,207,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,127,240,0,127,240, + 15,16,32,16,1,0,252,124,252,254,61,254,61,190,63,62, + 62,28,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,192,255,192,14,16,32,16,1,0,15,216,60,248, + 112,56,240,24,254,8,255,192,255,240,127,248,63,248,15,252, + 192,252,192,60,224,56,248,120,255,240,207,192,12,23,46,14, + 1,0,6,0,6,0,14,0,14,0,14,0,30,0,62,0, + 255,224,255,224,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,48,62,48,62,48,62,96,63,224,31,192,15,128, + 20,16,48,22,1,0,254,31,192,254,31,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,15,192,62,15,192,63,31,192,31,255,192, + 31,247,240,7,199,240,19,16,48,19,0,0,255,143,224,255, + 143,224,63,3,192,63,3,128,31,3,0,31,135,0,15,134, + 0,15,198,0,7,204,0,7,236,0,3,248,0,3,248,0, + 1,248,0,1,240,0,0,240,0,0,224,0,27,16,64,29, + 1,0,255,191,239,224,255,191,239,224,126,31,131,192,62,15, + 131,128,63,15,131,0,31,15,195,0,31,143,198,0,15,159, + 230,0,15,155,230,0,15,251,236,0,7,241,252,0,7,241, + 248,0,3,225,248,0,3,224,240,0,1,192,240,0,1,192, + 96,0,19,16,48,19,0,0,255,223,224,255,223,224,63,7, + 0,31,142,0,31,220,0,15,248,0,7,240,0,3,240,0, + 1,248,0,3,252,0,7,254,0,14,126,0,28,63,0,60, + 63,128,255,127,224,255,127,224,19,23,69,19,0,249,255,143, + 224,255,143,224,63,3,128,63,3,128,31,3,0,31,135,0, + 15,134,0,15,198,0,7,204,0,7,236,0,3,248,0,3, + 248,0,1,248,0,1,240,0,0,240,0,0,224,0,0,96, + 0,112,192,0,248,192,0,249,128,0,255,0,0,127,0,0, + 60,0,0,14,16,32,16,1,0,127,252,127,252,112,252,97, + 248,97,248,67,240,7,224,7,224,15,192,31,128,31,12,63, + 12,126,28,124,28,255,252,255,252,8,30,30,13,3,252,3, + 14,28,60,60,60,60,60,60,60,60,60,60,56,240,248,60, + 60,60,60,60,60,60,60,60,60,60,28,14,3,4,25,25, + 20,8,0,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,8,28,28,13, + 1,253,224,120,60,60,60,60,60,60,60,60,60,60,28,15, + 31,60,60,60,60,60,60,60,60,60,60,60,120,224,16,6, + 12,20,2,6,14,4,63,142,127,255,255,254,113,252,32,112, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,9,1,1,6,25,25,10,2,249,120,252,252, + 252,252,120,0,0,48,48,48,48,48,48,120,120,120,120,124, + 252,252,252,252,252,120,15,22,44,19,1,253,0,6,0,6, + 0,12,3,252,14,124,60,62,124,62,120,126,248,126,248,220, + 248,192,249,128,253,128,255,2,255,6,126,6,63,28,31,248, + 15,224,24,0,24,0,48,0,17,24,72,19,1,0,1,248, + 0,7,252,0,15,142,0,15,15,0,31,31,0,31,31,0, + 31,31,0,31,14,0,15,0,0,15,0,0,7,128,0,127, + 248,0,127,248,0,7,128,0,7,128,0,7,128,0,3,128, + 0,3,129,128,123,3,128,255,199,0,199,255,0,199,254,0, + 253,254,0,120,124,0,16,16,32,19,1,3,99,198,247,239, + 255,254,127,252,60,62,120,30,112,14,112,14,112,14,112,14, + 120,30,60,60,127,254,255,255,247,239,99,198,19,24,72,19, + 0,0,255,31,224,255,31,224,124,7,128,62,7,0,62,7, + 0,31,6,0,31,14,0,15,140,0,15,140,0,7,216,0, + 7,216,0,3,240,0,31,254,0,31,254,0,1,224,0,1, + 224,0,31,254,0,31,254,0,1,224,0,1,224,0,1,224, + 0,1,224,0,15,252,0,15,252,0,4,25,25,20,8,0, + 240,240,240,240,240,240,240,240,240,240,0,0,0,0,0,240, + 240,240,240,240,240,240,240,240,240,12,29,58,16,2,253,31, + 0,115,128,99,192,227,192,227,192,241,128,120,0,124,0,62, + 0,30,0,63,0,111,128,199,192,227,224,225,224,240,240,120, + 112,124,112,62,96,31,192,15,128,7,192,3,224,97,224,240, + 224,240,224,240,224,121,192,63,0,11,5,10,11,0,18,96, + 192,241,224,241,224,241,224,96,192,24,25,75,25,1,0,0, + 255,0,3,255,192,7,129,224,30,0,112,24,0,24,48,0, + 12,112,127,14,96,243,134,97,193,134,227,193,135,195,128,131, + 195,128,3,195,128,3,195,128,3,195,128,3,195,128,7,193, + 192,134,225,225,134,96,255,12,112,60,28,56,0,56,28,0, + 112,15,129,192,3,255,128,0,254,0,11,15,30,12,0,10, + 63,0,227,192,241,192,227,192,15,192,113,192,225,192,227,192, + 247,224,253,224,0,0,0,0,0,0,255,224,255,224,12,11, + 22,16,2,3,4,16,12,48,24,96,56,224,113,192,243,192, + 113,192,56,224,24,96,12,48,4,16,16,10,20,20,2,3, + 255,255,255,255,255,255,255,255,0,15,0,15,0,15,0,15, + 0,15,0,15,8,4,4,11,1,6,255,255,255,255,23,25, + 75,24,0,0,0,254,0,3,255,128,7,1,224,12,0,112, + 24,0,56,48,0,24,97,254,12,96,231,12,192,227,142,192, + 227,134,192,227,134,192,231,6,192,252,6,192,238,6,192,231, + 6,192,231,6,192,227,134,96,227,140,99,241,204,48,0,24, + 24,0,24,28,0,112,7,0,224,3,255,128,0,252,0,11, + 3,6,11,0,18,255,224,255,224,255,224,9,10,20,13,2, + 13,62,0,127,0,99,0,193,128,193,128,193,128,193,128,99, + 0,127,0,62,0,16,17,34,20,2,0,3,192,3,192,3, + 192,3,192,255,255,255,255,255,255,255,255,3,192,3,192,3, + 192,3,192,0,0,255,255,255,255,255,255,255,255,10,14,28, + 11,0,9,63,0,99,128,193,192,241,192,241,192,113,192,3, + 128,7,0,14,0,24,64,48,64,127,192,255,192,255,192,11, + 14,28,11,0,9,63,0,115,192,113,192,33,192,1,192,3, + 128,31,0,3,192,1,224,113,224,241,224,225,224,99,192,63, + 0,7,6,6,11,2,17,12,30,62,124,240,192,20,23,69, + 22,1,249,254,63,192,254,63,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,15,192,62,15,192,63,31,192,63,255,192,63,247,240, + 55,199,240,48,0,0,48,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,48,0,0,21,25,75,25,1,0,15,255, + 248,63,255,248,127,227,192,127,227,192,255,227,192,255,227,192, + 255,227,192,255,227,192,127,227,192,127,227,192,63,227,192,31, + 227,192,7,227,192,1,227,192,1,227,192,1,227,192,1,227, + 192,1,227,192,1,227,192,1,227,192,1,227,192,1,227,192, + 1,227,192,15,255,248,15,255,248,6,6,6,9,1,5,120, + 252,252,252,252,120,7,7,7,11,1,249,24,48,124,14,14, + 220,120,9,14,28,11,1,9,12,0,252,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,11,15,30,12,0,10,14,0,63,128,113,192, + 241,224,224,224,224,224,224,224,241,224,113,192,63,128,14,0, + 0,0,0,0,127,224,127,224,12,11,22,16,2,3,130,0, + 195,0,97,128,113,192,56,224,60,240,56,224,113,192,97,128, + 195,0,130,0,25,23,92,28,1,0,12,0,56,0,252,0, + 48,0,28,0,112,0,28,0,224,0,28,0,192,0,28,1, + 192,0,28,1,128,0,28,3,128,0,28,7,0,0,28,7, + 2,0,28,14,6,0,28,12,14,0,28,28,30,0,255,184, + 62,0,0,56,110,0,0,112,206,0,0,97,142,0,0,227, + 14,0,0,195,255,128,1,192,14,0,3,128,14,0,3,0, + 14,0,7,0,63,128,25,23,92,28,1,0,12,0,56,0, + 252,0,112,0,28,0,112,0,28,0,224,0,28,0,192,0, + 28,1,192,0,28,1,128,0,28,3,128,0,28,7,0,0, + 28,6,126,0,28,14,199,0,28,13,135,128,28,29,227,128, + 255,185,231,128,0,56,231,128,0,112,15,0,0,96,14,0, + 0,224,28,0,1,192,48,128,1,192,96,128,3,128,255,128, + 3,1,255,128,7,1,255,128,26,23,92,28,0,0,63,0, + 28,0,115,192,56,0,113,192,56,0,33,192,112,0,1,192, + 96,0,3,128,224,0,31,0,192,0,3,193,192,0,1,227, + 128,0,113,227,129,0,241,231,3,0,225,230,7,0,99,206, + 15,0,63,28,31,0,0,28,55,0,0,56,103,0,0,48, + 199,0,0,113,135,0,0,97,255,192,0,224,7,0,1,192, + 7,0,1,192,7,0,3,128,31,192,15,25,50,16,1,249, + 3,192,7,224,7,224,7,224,7,224,3,192,0,0,0,0, + 1,128,1,128,1,128,3,128,7,0,31,0,62,0,126,0, + 124,0,252,124,252,124,252,126,252,124,124,60,126,60,63,240, + 15,192,25,31,124,25,0,0,0,48,0,0,0,120,0,0, + 0,124,0,0,0,62,0,0,0,15,0,0,0,3,0,0, + 0,0,0,0,0,28,0,0,0,30,0,0,0,62,0,0, + 0,63,0,0,0,127,0,0,0,127,128,0,0,127,128,0, + 0,255,128,0,0,207,192,0,1,207,192,0,1,143,192,0, + 1,135,224,0,3,135,224,0,3,7,240,0,7,3,240,0, + 7,255,240,0,7,255,248,0,14,1,248,0,12,1,252,0, + 28,0,252,0,28,0,254,0,62,0,254,0,255,131,255,128, + 255,131,255,128,25,32,128,25,0,0,0,1,128,0,0,3, + 192,0,0,7,192,0,0,15,128,0,0,30,0,0,0,24, + 0,0,0,0,0,0,0,28,0,0,0,28,0,0,0,30, + 0,0,0,62,0,0,0,63,0,0,0,127,0,0,0,127, + 128,0,0,127,128,0,0,255,128,0,0,207,192,0,1,207, + 192,0,1,143,192,0,1,135,224,0,3,135,224,0,3,7, + 240,0,7,3,240,0,7,255,240,0,7,255,248,0,14,1, + 248,0,12,1,252,0,28,0,252,0,28,0,254,0,62,0, + 254,0,255,131,255,128,255,131,255,128,25,31,124,25,0,0, + 0,28,0,0,0,62,0,0,0,127,0,0,0,227,128,0, + 1,128,192,0,0,0,0,0,0,28,0,0,0,28,0,0, + 0,30,0,0,0,62,0,0,0,63,0,0,0,127,0,0, + 0,127,128,0,0,127,128,0,0,255,128,0,0,207,192,0, + 1,207,192,0,1,143,192,0,1,135,224,0,3,135,224,0, + 3,7,240,0,7,3,240,0,7,255,240,0,7,255,248,0, + 14,1,248,0,12,1,252,0,28,0,252,0,28,0,254,0, + 62,0,254,0,255,131,255,128,255,131,255,128,25,31,124,25, + 0,0,0,56,96,0,0,127,224,0,0,255,192,0,0,195, + 128,0,0,0,0,0,0,0,0,0,0,28,0,0,0,28, + 0,0,0,30,0,0,0,62,0,0,0,63,0,0,0,127, + 0,0,0,127,128,0,0,127,128,0,0,255,128,0,0,207, + 192,0,1,207,192,0,1,143,192,0,1,135,224,0,3,135, + 224,0,3,7,240,0,7,3,240,0,7,255,240,0,7,255, + 248,0,14,1,248,0,12,1,252,0,28,0,252,0,28,0, + 254,0,62,0,254,0,255,131,255,128,255,131,255,128,25,31, + 124,25,0,0,0,193,128,0,1,227,192,0,1,227,192,0, + 1,227,192,0,0,193,128,0,0,0,0,0,0,28,0,0, + 0,28,0,0,0,30,0,0,0,62,0,0,0,63,0,0, + 0,127,0,0,0,127,128,0,0,127,128,0,0,255,128,0, + 0,207,192,0,1,207,192,0,1,143,192,0,1,135,224,0, + 3,135,224,0,3,7,240,0,7,3,240,0,7,255,240,0, + 7,255,248,0,14,1,248,0,12,1,252,0,28,0,252,0, + 28,0,254,0,62,0,254,0,255,131,255,128,255,131,255,128, + 25,33,132,25,0,0,0,62,0,0,0,119,0,0,0,99, + 0,0,0,99,0,0,0,119,0,0,0,62,0,0,0,0, + 0,0,0,0,0,0,0,28,0,0,0,28,0,0,0,30, + 0,0,0,62,0,0,0,63,0,0,0,127,0,0,0,127, + 128,0,0,127,128,0,0,255,128,0,0,207,192,0,1,207, + 192,0,1,143,192,0,1,135,224,0,3,135,224,0,3,7, + 240,0,7,3,240,0,7,255,240,0,7,255,248,0,14,1, + 248,0,12,1,252,0,28,0,252,0,28,0,254,0,62,0, + 254,0,255,131,255,128,255,131,255,128,31,25,100,33,255,0, + 1,255,255,254,1,255,255,254,0,123,240,126,0,59,240,62, + 0,51,240,30,0,51,240,14,0,115,240,6,0,99,240,198, + 0,227,240,198,0,195,241,194,1,195,241,192,1,131,243,192, + 3,131,255,192,3,3,255,192,7,255,243,192,7,255,241,192, + 14,3,240,198,14,3,240,198,12,3,240,198,28,3,240,14, + 24,3,240,14,56,3,240,30,124,3,240,126,255,31,255,254, + 255,31,255,254,22,32,96,24,1,249,0,126,24,3,255,184, + 7,193,248,31,128,248,31,0,120,62,0,56,126,0,56,126, + 0,24,254,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,254,0,0,254,0,12,254,0,28, + 126,0,24,126,0,56,63,0,48,31,128,112,15,193,224,7, + 255,192,0,255,0,0,48,0,0,96,0,0,248,0,0,28, + 0,0,28,0,1,184,0,0,240,0,21,32,96,23,1,0, + 0,192,0,1,224,0,1,240,0,0,248,0,0,60,0,0, + 12,0,0,0,0,255,255,248,255,255,248,31,129,248,31,128, + 248,31,128,120,31,128,56,31,128,56,31,134,24,31,134,24, + 31,142,0,31,142,0,31,158,0,31,254,0,31,254,0,31, + 158,0,31,142,0,31,134,24,31,134,24,31,134,24,31,128, + 56,31,128,56,31,128,120,31,129,248,255,255,248,255,255,248, + 21,32,96,23,1,0,0,3,0,0,7,128,0,15,128,0, + 31,0,0,60,0,0,48,0,0,0,0,255,255,248,255,255, + 248,31,129,248,31,128,248,31,128,120,31,128,56,31,128,56, + 31,134,24,31,134,24,31,142,0,31,142,0,31,158,0,31, + 254,0,31,254,0,31,158,0,31,142,0,31,134,24,31,134, + 24,31,134,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,21,32,96,23,1,0,0,56,0,0, + 124,0,0,254,0,1,199,0,3,1,128,0,0,0,0,0, + 0,255,255,248,255,255,248,31,129,248,31,128,248,31,128,120, + 31,128,56,31,128,56,31,134,24,31,134,24,31,142,0,31, + 142,0,31,158,0,31,254,0,31,254,0,31,158,0,31,142, + 0,31,134,24,31,134,24,31,134,24,31,128,56,31,128,56, + 31,128,120,31,129,248,255,255,248,255,255,248,21,32,96,23, + 1,0,1,131,0,3,199,128,3,199,128,3,199,128,1,131, + 0,0,0,0,0,0,0,255,255,248,255,255,248,31,129,248, + 31,128,248,31,128,120,31,128,56,31,128,56,31,134,24,31, + 134,24,31,142,0,31,142,0,31,158,0,31,254,0,31,254, + 0,31,158,0,31,142,0,31,134,24,31,134,24,31,134,24, + 31,128,56,31,128,56,31,128,120,31,129,248,255,255,248,255, + 255,248,12,33,66,14,1,0,48,0,120,0,124,0,62,0, + 15,0,3,0,0,0,0,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,12,33,66,14,1,0, + 0,192,1,224,3,224,7,192,15,0,12,0,0,0,0,0, + 255,240,255,240,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,255,240, + 255,240,12,32,64,14,1,0,7,0,15,128,31,192,56,224, + 96,48,0,0,0,0,255,240,255,240,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,240,255,240,12,32,64,14,1,0,48,96, + 120,240,120,240,120,240,48,96,0,0,0,0,255,240,255,240, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,255,240,255,240,24,25, + 75,26,1,0,255,255,0,255,255,224,31,131,240,31,129,248, + 31,128,252,31,128,124,31,128,126,31,128,126,31,128,127,31, + 128,63,31,128,63,31,128,63,255,248,63,255,248,63,31,128, + 63,31,128,63,31,128,63,31,128,127,31,128,126,31,128,126, + 31,128,252,31,128,248,31,131,240,255,255,224,255,255,0,27, + 31,124,27,0,0,0,56,96,0,0,127,224,0,0,255,192, + 0,0,195,128,0,0,0,0,0,0,0,0,0,255,128,127, + 224,255,192,127,224,63,224,15,0,15,224,6,0,15,240,6, + 0,15,248,6,0,15,252,6,0,13,254,6,0,12,254,6, + 0,12,255,6,0,12,127,134,0,12,63,198,0,12,31,230, + 0,12,15,230,0,12,15,246,0,12,7,254,0,12,3,254, + 0,12,1,254,0,12,0,254,0,12,0,126,0,12,0,126, + 0,12,0,62,0,30,0,30,0,255,192,14,0,255,192,6, + 0,24,32,96,26,1,0,1,128,0,3,192,0,3,224,0, + 1,240,0,0,120,0,0,24,0,0,0,0,0,126,0,3, + 255,192,15,193,240,31,128,248,63,0,252,62,0,124,126,0, + 126,126,0,126,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,126, + 0,126,126,0,126,62,0,124,63,0,252,31,128,248,15,193, + 240,3,255,192,0,126,0,24,32,96,26,1,0,0,0,192, + 0,1,224,0,3,224,0,7,192,0,15,0,0,12,0,0, + 0,0,0,126,0,3,255,192,15,193,240,31,128,248,63,0, + 252,62,0,124,126,0,126,126,0,126,252,0,63,252,0,63, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,126,0,126,126,0,126,62,0,124,63,0, + 252,31,128,248,15,193,240,3,255,192,0,126,0,24,32,96, + 26,1,0,0,28,0,0,62,0,0,127,0,0,227,128,1, + 128,192,0,0,0,0,0,0,0,126,0,3,255,192,15,193, + 240,31,128,248,63,0,252,62,0,124,126,0,126,126,0,126, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,126,0,126,126,0, + 126,62,0,124,63,0,252,31,128,248,15,193,240,3,255,192, + 0,126,0,24,31,93,26,1,0,0,112,192,0,255,192,1, + 255,128,1,135,0,0,0,0,0,0,0,0,126,0,3,255, + 192,15,193,240,31,128,248,63,0,252,62,0,124,126,0,126, + 126,0,126,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,252,0,63,126,0, + 126,126,0,126,62,0,124,63,0,252,31,128,248,15,193,240, + 3,255,192,0,126,0,24,32,96,26,1,0,0,193,128,1, + 227,192,1,227,192,1,227,192,0,193,128,0,0,0,0,0, + 0,0,126,0,3,255,192,15,193,240,31,128,248,63,0,252, + 62,0,124,126,0,126,126,0,126,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,252,0,63,252,0, + 63,252,0,63,126,0,126,126,0,126,62,0,124,63,0,252, + 31,128,248,15,193,240,3,255,192,0,126,0,16,17,34,20, + 2,0,32,4,112,14,248,31,252,63,126,126,63,252,31,248, + 15,240,7,224,15,240,31,248,63,252,126,126,252,63,248,31, + 112,14,32,4,24,27,81,26,1,255,0,0,12,0,126,24, + 3,255,248,7,195,240,31,128,248,31,0,248,62,0,252,126, + 1,254,126,3,126,254,7,127,252,6,63,252,12,63,252,28, + 63,252,24,63,252,48,63,252,96,63,252,224,63,254,192,127, + 127,128,126,127,128,126,63,0,124,31,0,248,31,128,248,15, + 193,224,27,255,192,48,126,0,48,0,0,26,32,128,28,1, + 0,0,48,0,0,0,120,0,0,0,124,0,0,0,62,0, + 0,0,15,0,0,0,3,0,0,0,0,0,0,255,240,255, + 192,255,240,255,192,31,128,30,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,28,0,15,192,24, + 0,15,224,56,0,7,248,240,0,3,255,224,0,0,255,192, + 0,26,32,128,28,1,0,0,0,96,0,0,0,240,0,0, + 1,240,0,0,3,224,0,0,7,128,0,0,6,0,0,0, + 0,0,0,255,240,255,192,255,240,255,192,31,128,30,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,28,0,15,192,24,0,15,224,56,0,7,248,240,0,3, + 255,224,0,0,255,192,0,26,32,128,28,1,0,0,14,0, + 0,0,31,0,0,0,63,128,0,0,113,192,0,0,192,96, + 0,0,0,0,0,0,0,0,0,255,240,255,192,255,240,255, + 192,31,128,30,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,28,0,15,192,24,0,15,224,56, + 0,7,248,240,0,3,255,224,0,0,255,192,0,26,32,128, + 28,1,0,0,48,96,0,0,120,240,0,0,120,240,0,0, + 120,240,0,0,48,96,0,0,0,0,0,0,0,0,0,255, + 240,255,192,255,240,255,192,31,128,30,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,28,0,15, + 192,24,0,15,224,56,0,7,248,240,0,3,255,224,0,0, + 255,192,0,24,33,99,24,0,0,0,0,96,0,0,240,0, + 1,240,0,3,224,0,7,128,0,6,0,0,0,0,0,0, + 0,255,241,255,255,241,255,63,128,124,31,192,56,31,192,112, + 15,224,112,15,224,224,7,240,192,3,241,192,3,249,128,1, + 251,128,1,255,0,0,255,0,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,3,255,192,3,255,192,22,25,75,24, + 1,0,255,240,0,255,240,0,31,128,0,31,128,0,31,128, + 0,31,255,128,31,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,255,240,0,18,25,75, + 20,0,0,3,252,0,7,190,0,15,15,0,15,15,0,31, + 15,128,31,15,128,31,15,128,31,15,0,31,15,0,31,14, + 0,31,28,0,31,126,0,31,15,128,31,15,128,31,7,192, + 31,7,192,31,7,192,31,7,192,31,7,192,31,7,192,31, + 7,128,31,7,128,31,79,0,255,254,0,255,120,0,18,23, + 69,20,1,0,3,0,0,7,128,0,7,192,0,3,224,0, + 0,240,0,0,48,0,0,0,0,15,240,0,63,252,0,120, + 62,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,18,23,69,20,1,0,0, + 96,0,0,240,0,1,240,0,3,224,0,7,128,0,6,0, + 0,0,0,0,15,240,0,63,252,0,120,62,0,124,62,0, + 124,62,0,56,62,0,0,62,0,3,254,0,31,190,0,126, + 62,0,124,62,0,252,62,0,252,62,0,252,127,64,127,255, + 192,63,143,128,18,22,66,20,1,0,1,192,0,3,224,0, + 7,240,0,14,56,0,24,12,0,0,0,0,15,240,0,63, + 252,0,120,62,0,124,62,0,124,62,0,56,62,0,0,62, + 0,3,254,0,31,190,0,126,62,0,124,62,0,252,62,0, + 252,62,0,252,127,64,127,255,192,63,143,128,18,22,66,20, + 1,0,7,12,0,15,252,0,31,248,0,24,112,0,0,0, + 0,0,0,0,15,240,0,63,252,0,120,62,0,124,62,0, + 124,62,0,56,62,0,0,62,0,3,254,0,31,190,0,126, + 62,0,124,62,0,252,62,0,252,62,0,252,127,64,127,255, + 192,63,143,128,18,23,69,20,1,0,12,24,0,30,60,0, + 30,60,0,30,60,0,12,24,0,0,0,0,0,0,0,15, + 240,0,63,252,0,120,62,0,124,62,0,124,62,0,56,62, + 0,0,62,0,3,254,0,31,190,0,126,62,0,124,62,0, + 252,62,0,252,62,0,252,127,64,127,255,192,63,143,128,18, + 23,69,20,1,0,3,224,0,7,112,0,6,48,0,6,48, + 0,7,112,0,3,224,0,0,0,0,15,240,0,63,252,0, + 120,62,0,124,62,0,124,62,0,56,62,0,0,62,0,3, + 254,0,31,190,0,126,62,0,124,62,0,252,62,0,252,62, + 0,252,127,64,127,255,192,63,143,128,26,16,64,28,1,0, + 7,224,248,0,30,123,222,0,56,63,15,0,124,63,15,128, + 124,62,7,128,120,62,7,192,49,254,7,192,15,255,255,192, + 63,255,255,192,126,62,0,0,252,62,0,0,248,63,0,192, + 248,127,1,128,252,239,131,128,127,199,255,0,63,1,252,0, + 15,23,46,17,1,249,3,240,14,60,62,62,124,62,124,62, + 248,28,248,0,248,0,248,0,248,0,252,2,252,6,126,6, + 63,28,31,248,7,240,1,128,3,0,7,192,0,224,0,224, + 13,192,7,128,16,23,46,18,1,0,6,0,15,0,15,128, + 7,192,1,224,0,96,0,0,3,224,14,120,60,60,124,30, + 124,30,248,31,248,31,255,255,255,255,248,0,248,0,252,3, + 124,6,63,14,31,252,7,240,16,23,46,18,1,0,0,48, + 0,120,0,248,1,240,3,192,3,0,0,0,3,224,14,120, + 60,60,124,30,124,30,248,31,248,31,255,255,255,255,248,0, + 248,0,252,3,124,6,63,14,31,252,7,240,16,22,44,18, + 1,0,1,192,3,224,7,240,14,56,24,12,0,0,3,224, + 14,120,60,60,124,30,124,30,248,31,248,31,255,255,255,255, + 248,0,248,0,252,3,124,6,63,14,31,252,7,240,16,23, + 46,18,1,0,12,24,30,60,30,60,30,60,12,24,0,0, + 0,0,3,224,14,120,60,60,124,30,124,30,248,31,248,31, + 255,255,255,255,248,0,248,0,252,3,124,6,63,14,31,252, + 7,240,9,23,46,11,1,0,96,0,240,0,248,0,124,0, + 30,0,6,0,0,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,128,255,128,9,23,46,11,1,0,6,0,15,0, + 31,0,62,0,120,0,96,0,0,0,254,0,254,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,255,128,255,128,11,22,44,11,255,0, + 14,0,31,0,63,128,113,192,192,96,0,0,63,128,63,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,63,224,63,224,11,23,46,11, + 0,0,96,192,241,224,241,224,241,224,96,192,0,0,0,0, + 127,0,127,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,127,192,127,192, + 17,26,78,20,1,0,0,4,0,14,14,0,15,156,0,3, + 248,0,1,240,0,3,248,0,7,120,0,14,60,0,4,62, + 0,0,30,0,3,255,0,15,63,0,60,31,0,124,31,128, + 120,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,124,31,0,124,31,0,62,62,0,15,248, + 0,3,224,0,20,22,66,22,1,0,3,134,0,7,254,0, + 15,252,0,12,56,0,0,0,0,0,0,0,254,62,0,254, + 255,128,63,255,128,63,143,192,63,7,192,63,7,192,62,7, + 192,62,7,192,62,7,192,62,7,192,62,7,192,62,7,192, + 62,7,192,62,7,192,255,159,240,255,159,240,17,23,69,19, + 1,0,6,0,0,15,0,0,15,128,0,7,192,0,1,224, + 0,0,96,0,0,0,0,3,224,0,15,248,0,62,62,0, + 124,31,0,124,31,0,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,124,31,0,124,31,0,62,62, + 0,15,248,0,3,224,0,17,23,69,19,1,0,0,24,0, + 0,60,0,0,124,0,0,248,0,1,224,0,1,128,0,0, + 0,0,3,224,0,15,248,0,62,62,0,124,31,0,124,31, + 0,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,0,124,31,0,62,62,0,15,248,0,3, + 224,0,17,22,66,19,1,0,1,192,0,3,224,0,7,240, + 0,14,56,0,24,12,0,0,0,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,17,22,66,19,1,0, + 3,134,0,7,254,0,15,252,0,12,56,0,0,0,0,0, + 0,0,3,224,0,15,248,0,62,62,0,124,31,0,124,31, + 0,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,0,124,31,0,62,62,0,15,248,0,3, + 224,0,17,23,69,19,1,0,12,24,0,30,60,0,30,60, + 0,30,60,0,12,24,0,0,0,0,0,0,0,3,224,0, + 15,248,0,62,62,0,124,31,0,124,31,0,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 0,124,31,0,62,62,0,15,248,0,3,224,0,17,17,51, + 20,2,0,1,192,0,3,224,0,3,224,0,3,224,0,1, + 192,0,0,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,0,0,0,0,0,0,1,192,0,3,224,0,3,224,0, + 3,224,0,1,192,0,17,22,66,19,1,253,0,2,0,0, + 6,0,0,12,0,3,236,0,15,248,0,62,62,0,124,63, + 0,124,111,0,248,79,128,248,207,128,248,143,128,249,143,128, + 251,15,128,250,15,128,126,31,0,124,31,0,62,62,0,31, + 248,0,27,224,0,48,0,0,48,0,0,32,0,0,20,23, + 69,22,1,0,3,0,0,7,128,0,7,192,0,3,224,0, + 0,240,0,0,48,0,0,0,0,254,31,192,254,31,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,7,192,62,15,192,62,15,192,63,31,192, + 31,255,192,31,247,240,7,199,240,20,23,69,22,1,0,0, + 24,0,0,60,0,0,124,0,0,248,0,1,224,0,1,128, + 0,0,0,0,254,31,192,254,31,192,62,7,192,62,7,192, + 62,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,15,192,62,15,192,63,31,192,31,255,192,31,247, + 240,7,199,240,20,22,66,22,1,0,0,224,0,1,240,0, + 3,248,0,7,28,0,12,6,0,0,0,0,254,31,192,254, + 31,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,7,192,62,7,192,62,15,192,62,15,192, + 63,31,192,31,255,192,31,247,240,7,199,240,20,23,69,22, + 1,0,6,12,0,15,30,0,15,30,0,15,30,0,6,12, + 0,0,0,0,0,0,0,254,31,192,254,31,192,62,7,192, + 62,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,15,192,62,15,192,63,31,192,31,255, + 192,31,247,240,7,199,240,19,30,90,19,0,249,0,12,0, + 0,30,0,0,62,0,0,124,0,0,240,0,0,192,0,0, + 0,0,255,143,224,255,143,224,63,3,128,63,3,128,31,3, + 0,31,135,0,15,134,0,15,198,0,7,204,0,7,236,0, + 3,248,0,3,248,0,1,248,0,1,240,0,0,240,0,0, + 224,0,0,96,0,112,192,0,248,192,0,249,128,0,255,0, + 0,127,0,0,60,0,0,20,29,87,22,0,249,255,0,0, + 255,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 63,0,31,127,192,31,199,224,31,131,224,31,131,240,31,3, + 240,31,3,240,31,1,240,31,1,240,31,1,240,31,3,240, + 31,131,224,31,131,224,31,199,192,31,255,128,31,63,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,127,224, + 0,127,224,0,19,30,90,19,0,249,3,6,0,7,143,0, + 7,143,0,7,143,0,3,6,0,0,0,0,0,0,0,255, + 143,224,255,143,224,63,3,128,63,3,128,31,3,0,31,135, + 0,15,134,0,15,198,0,7,204,0,7,236,0,3,248,0, + 3,248,0,1,248,0,1,240,0,0,240,0,0,224,0,0, + 96,0,112,192,0,248,192,0,249,128,0,255,0,0,127,0, + 0,60,0,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=25 x= 3 y=10 dx=20 dy= 0 ascent=25 len=72 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =25 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24n[846] U8G_SECTION(".progmem.u8g_font_ncenB24n") = { + 0,39,53,252,243,24,0,0,0,0,42,57,0,25,251,24, + 0,12,15,30,17,2,10,6,0,14,0,14,0,230,112,230, + 112,246,240,63,192,15,0,127,224,246,240,230,112,230,112,7, + 0,7,0,6,0,16,16,32,20,2,1,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,6,11,11,9,2, + 251,120,248,252,252,252,124,28,24,48,112,224,8,4,4,11, + 1,6,255,255,255,255,6,6,6,9,1,0,120,252,252,252, + 252,120,10,25,50,9,255,0,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,7,0,6,0,14,0,14,0, + 12,0,28,0,28,0,24,0,56,0,56,0,48,0,112,0, + 112,0,96,0,224,0,224,0,192,0,16,24,48,19,1,0, + 3,192,15,240,30,120,60,60,124,62,120,30,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,120,30,120,30,124,62,60,60,30,120,15,240,3,192, + 13,24,48,19,3,0,1,128,7,128,255,128,255,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,255,248,255,248,17,24,72,19,1,0,15,240,0,63, + 252,0,120,126,0,240,63,0,248,31,0,252,31,0,252,31, + 0,252,31,0,124,63,0,56,62,0,0,124,0,0,248,0, + 0,240,0,1,224,0,3,192,0,3,129,128,7,1,128,14, + 1,128,28,3,128,63,255,128,127,255,0,127,255,0,255,255, + 0,255,255,0,16,24,48,19,1,0,15,224,63,248,120,124, + 248,62,252,62,252,62,252,62,120,62,0,124,0,112,7,224, + 7,192,0,248,0,126,0,62,0,63,120,31,252,31,252,31, + 252,63,248,62,120,126,63,248,7,224,17,24,72,19,0,0, + 0,4,0,0,12,0,0,28,0,0,60,0,0,124,0,0, + 252,0,1,252,0,1,252,0,3,124,0,6,124,0,12,124, + 0,28,124,0,56,124,0,112,124,0,224,124,0,192,124,0, + 255,255,128,255,255,128,0,124,0,0,124,0,0,124,0,0, + 124,0,3,255,128,3,255,128,16,24,48,19,1,0,31,255, + 63,254,63,254,63,252,63,240,48,0,48,0,48,0,48,0, + 55,224,63,248,56,124,48,62,32,62,0,31,0,31,56,31, + 124,31,252,31,252,62,120,62,112,252,63,240,15,192,17,24, + 72,19,1,0,3,240,0,15,252,0,31,30,0,62,62,0, + 60,62,0,124,62,0,120,28,0,248,0,0,248,0,0,248, + 0,0,249,248,0,255,254,0,255,127,0,252,31,0,248,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,124,31,0, + 124,31,0,62,62,0,31,252,0,7,240,0,16,24,48,19, + 2,0,255,255,255,254,255,254,255,252,255,252,192,24,192,24, + 192,56,128,112,0,112,0,240,0,224,1,224,1,224,3,224, + 3,192,7,192,7,192,15,192,15,192,15,192,15,192,15,192, + 7,128,17,24,72,19,1,0,7,240,0,15,252,0,60,62, + 0,56,31,0,120,15,0,120,15,0,120,15,0,124,15,0, + 126,30,0,127,252,0,63,240,0,31,252,0,15,254,0,63, + 255,0,120,127,0,248,31,128,240,15,128,240,15,128,240,15, + 0,240,15,0,248,30,0,124,60,0,63,240,0,7,192,0, + 17,24,72,19,1,0,3,192,0,31,248,0,62,124,0,124, + 62,0,252,31,0,248,31,0,248,15,128,248,15,128,248,15, + 128,252,31,128,252,63,128,127,111,128,63,207,128,31,143,128, + 0,15,128,0,15,128,112,15,0,248,31,0,252,31,0,248, + 30,0,248,62,0,112,252,0,63,240,0,15,192,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=32 h=32 x= 8 y=17 dx=32 dy= 0 ascent=26 len=124 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24r[5937] U8G_SECTION(".progmem.u8g_font_ncenB24r") = { + 0,39,53,252,243,25,6,143,16,147,32,127,249,26,249,25, + 249,0,0,0,9,1,1,6,25,25,10,2,0,120,252,252, + 252,252,252,252,120,120,120,120,48,48,48,48,48,48,0,0, + 120,252,252,252,252,120,11,11,22,11,0,14,96,192,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,96,192, + 96,192,16,25,50,19,1,255,7,28,7,28,7,28,7,28, + 14,56,14,56,14,56,127,255,127,255,127,255,14,56,12,48, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,56,224, + 56,224,56,224,56,224,56,224,56,224,17,30,90,19,1,252, + 1,128,0,1,128,0,1,128,0,7,240,0,31,252,0,57, + 158,0,113,143,0,113,159,0,241,159,0,241,142,0,253,128, + 0,255,128,0,127,240,0,127,252,0,63,254,0,15,255,0, + 1,255,128,1,191,128,113,143,128,249,135,128,249,135,128,249, + 135,0,241,143,0,121,158,0,63,252,0,7,224,0,1,128, + 0,1,128,0,1,128,0,1,128,0,26,24,96,27,0,0, + 0,0,24,0,7,192,48,0,15,96,112,0,30,57,224,0, + 60,31,96,0,60,16,192,0,120,16,128,0,120,17,128,0, + 240,49,0,0,240,35,0,0,240,98,0,0,240,198,31,0, + 123,140,61,128,63,12,120,192,0,24,240,64,0,17,240,64, + 0,49,224,64,0,33,224,192,0,99,224,192,0,195,193,128, + 0,195,193,128,1,131,195,0,1,129,230,0,3,0,252,0, + 24,25,75,28,2,0,0,124,0,1,255,0,3,199,0,7, + 135,128,7,131,128,7,131,128,7,199,128,7,199,0,7,239, + 0,7,252,0,3,248,0,7,241,255,15,249,255,61,248,124, + 120,252,56,120,254,112,248,126,96,248,63,224,252,63,192,252, + 31,193,254,15,227,255,15,243,127,255,254,63,243,254,15,128, + 252,4,11,11,8,2,14,96,240,240,240,240,240,240,96,96, + 96,96,9,27,54,13,2,253,3,128,7,0,14,0,28,0, + 28,0,56,0,56,0,120,0,120,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 56,0,56,0,28,0,28,0,14,0,7,0,3,128,9,27, + 54,13,1,253,224,0,48,0,56,0,28,0,28,0,14,0, + 14,0,15,0,7,0,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,15,0,15,0,14,0,14,0, + 28,0,28,0,56,0,112,0,192,0,12,15,30,17,2,10, + 6,0,14,0,14,0,230,112,230,112,246,240,63,192,15,0, + 127,224,246,240,230,112,230,112,7,0,7,0,6,0,16,16, + 32,20,2,1,3,192,3,192,3,192,3,192,3,192,3,192, + 255,255,255,255,255,255,255,255,3,192,3,192,3,192,3,192, + 3,192,3,192,6,11,11,9,2,251,120,248,252,252,252,124, + 28,24,48,112,224,8,4,4,11,1,6,255,255,255,255,6, + 6,6,9,1,0,120,252,252,252,252,120,10,25,50,9,255, + 0,0,192,1,192,1,192,1,128,3,128,3,128,3,0,7, + 0,7,0,6,0,14,0,14,0,12,0,28,0,28,0,24, + 0,56,0,56,0,48,0,112,0,112,0,96,0,224,0,224, + 0,192,0,16,24,48,19,1,0,3,192,15,240,30,120,60, + 60,124,62,120,30,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,120,30,120,30,124, + 62,60,60,30,120,15,240,3,192,13,24,48,19,3,0,1, + 128,7,128,255,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,255,248,255,248,17, + 24,72,19,1,0,15,240,0,63,252,0,120,126,0,240,63, + 0,248,31,0,252,31,0,252,31,0,252,31,0,124,63,0, + 56,62,0,0,124,0,0,248,0,0,240,0,1,224,0,3, + 192,0,3,129,128,7,1,128,14,1,128,28,3,128,63,255, + 128,127,255,0,127,255,0,255,255,0,255,255,0,16,24,48, + 19,1,0,15,224,63,248,120,124,248,62,252,62,252,62,252, + 62,120,62,0,124,0,112,7,224,7,192,0,248,0,126,0, + 62,0,63,120,31,252,31,252,31,252,63,248,62,120,126,63, + 248,7,224,17,24,72,19,0,0,0,4,0,0,12,0,0, + 28,0,0,60,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,124,0,6,124,0,12,124,0,28,124,0,56,124,0, + 112,124,0,224,124,0,192,124,0,255,255,128,255,255,128,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,16,24,48,19,1,0,31,255,63,254,63,254,63,252,63, + 240,48,0,48,0,48,0,48,0,55,224,63,248,56,124,48, + 62,32,62,0,31,0,31,56,31,124,31,252,31,252,62,120, + 62,112,252,63,240,15,192,17,24,72,19,1,0,3,240,0, + 15,252,0,31,30,0,62,62,0,60,62,0,124,62,0,120, + 28,0,248,0,0,248,0,0,248,0,0,249,248,0,255,254, + 0,255,127,0,252,31,0,248,31,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,0,124,31,0,62,62,0,31, + 252,0,7,240,0,16,24,48,19,2,0,255,255,255,254,255, + 254,255,252,255,252,192,24,192,24,192,56,128,112,0,112,0, + 240,0,224,1,224,1,224,3,224,3,192,7,192,7,192,15, + 192,15,192,15,192,15,192,15,192,7,128,17,24,72,19,1, + 0,7,240,0,15,252,0,60,62,0,56,31,0,120,15,0, + 120,15,0,120,15,0,124,15,0,126,30,0,127,252,0,63, + 240,0,31,252,0,15,254,0,63,255,0,120,127,0,248,31, + 128,240,15,128,240,15,128,240,15,0,240,15,0,248,30,0, + 124,60,0,63,240,0,7,192,0,17,24,72,19,1,0,3, + 192,0,31,248,0,62,124,0,124,62,0,252,31,0,248,31, + 0,248,15,128,248,15,128,248,15,128,252,31,128,252,63,128, + 127,111,128,63,207,128,31,143,128,0,15,128,0,15,128,112, + 15,0,248,31,0,252,31,0,248,30,0,248,62,0,112,252, + 0,63,240,0,15,192,0,6,16,16,9,2,0,120,252,252, + 252,252,120,0,0,0,0,120,252,252,252,252,120,6,21,21, + 9,2,251,120,252,252,252,252,120,0,0,0,0,120,248,252, + 252,252,124,28,24,48,112,224,16,18,36,20,2,0,0,3, + 0,15,0,127,1,255,7,252,31,240,127,128,254,0,248,0, + 252,0,255,128,63,224,15,248,3,254,0,127,0,31,0,7, + 0,1,16,10,20,20,2,3,255,255,255,255,255,255,255,255, + 0,0,0,0,255,255,255,255,255,255,255,255,16,18,36,20, + 2,0,192,0,240,0,254,0,255,128,63,224,15,248,1,254, + 0,127,0,31,0,63,1,255,7,252,31,240,127,192,254,0, + 248,0,224,0,128,0,14,25,50,16,1,0,15,192,63,240, + 113,248,240,248,248,252,248,252,248,252,112,252,0,248,1,248, + 1,240,3,224,3,128,7,0,7,0,6,0,6,0,0,0, + 0,0,15,0,31,128,31,128,31,128,31,128,15,0,23,25, + 75,25,0,0,0,127,0,1,255,192,7,227,240,15,0,120, + 30,0,28,28,0,12,56,60,6,48,255,230,113,227,230,113, + 227,198,99,195,198,227,131,198,231,135,134,231,135,140,231,7, + 140,231,15,28,231,15,24,227,31,112,115,247,224,48,227,204, + 56,0,28,28,0,120,15,1,240,7,255,224,1,255,0,25, + 25,100,25,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,63,0,0,0,127,0,0,0,127,128, + 0,0,127,128,0,0,255,128,0,0,207,192,0,1,207,192, + 0,1,143,192,0,1,135,224,0,3,135,224,0,3,7,240, + 0,7,3,240,0,7,255,240,0,7,255,248,0,14,1,248, + 0,12,1,252,0,28,0,252,0,28,0,254,0,62,0,254, + 0,255,131,255,128,255,131,255,128,23,25,75,25,1,0,255, + 255,128,255,255,224,31,131,240,31,129,248,31,129,248,31,128, + 252,31,128,252,31,128,252,31,128,248,31,129,248,31,129,240, + 31,135,224,31,255,0,31,255,192,31,131,240,31,128,252,31, + 128,252,31,128,254,31,128,126,31,128,254,31,128,252,31,128, + 252,31,131,248,255,255,240,255,255,192,22,25,75,24,1,0, + 0,126,24,3,255,184,7,193,248,31,128,248,31,0,120,62, + 0,56,126,0,56,126,0,24,254,0,24,252,0,8,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 254,0,12,254,0,28,126,0,24,126,0,56,63,0,48,31, + 128,112,15,193,224,7,255,192,0,255,0,24,25,75,26,1, + 0,255,255,0,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,126,31,128,126,31,128,127,31,128,63,31,128,63,31, + 128,63,31,128,63,31,128,63,31,128,63,31,128,63,31,128, + 63,31,128,127,31,128,126,31,128,126,31,128,126,31,128,252, + 31,129,248,31,131,240,255,255,224,255,255,0,21,25,75,23, + 1,0,255,255,248,255,255,248,31,129,248,31,128,248,31,128, + 120,31,128,56,31,128,56,31,134,24,31,134,24,31,142,0, + 31,142,0,31,158,0,31,254,0,31,254,0,31,158,0,31, + 142,0,31,134,24,31,134,24,31,134,24,31,128,56,31,128, + 56,31,128,120,31,129,248,255,255,248,255,255,248,21,25,75, + 23,1,0,255,255,248,255,255,248,31,193,248,31,128,248,31, + 128,120,31,128,56,31,128,24,31,131,24,31,131,24,31,135, + 8,31,135,0,31,159,0,31,255,0,31,255,0,31,143,0, + 31,135,0,31,131,0,31,131,0,31,131,0,31,128,0,31, + 128,0,31,128,0,31,128,0,255,248,0,255,248,0,25,25, + 100,26,1,0,0,126,12,0,3,255,220,0,7,193,252,0, + 15,128,124,0,31,0,60,0,63,0,28,0,126,0,28,0, + 126,0,12,0,254,0,12,0,254,0,4,0,254,0,0,0, + 252,0,0,0,252,0,0,0,252,0,0,0,252,7,255,128, + 252,7,255,128,252,0,124,0,254,0,124,0,126,0,124,0, + 126,0,124,0,63,0,252,0,31,0,252,0,15,129,220,0, + 7,255,28,0,0,252,12,0,26,25,100,28,1,0,255,243, + 255,192,255,243,255,192,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,255, + 254,0,31,255,254,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,255,243,255,192,255,243, + 255,192,12,25,50,14,1,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,20,25,75,20,0,0, + 0,255,240,0,255,240,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,24,31,128,126,31,128,126,31,128, + 254,31,128,254,31,128,254,31,128,252,31,0,96,63,0,96, + 62,0,56,254,0,63,248,0,15,224,0,25,25,100,27,1, + 0,255,243,255,128,255,243,255,128,31,128,126,0,31,128,120, + 0,31,128,240,0,31,129,224,0,31,129,192,0,31,131,128, + 0,31,135,0,0,31,143,0,0,31,159,0,0,31,191,128, + 0,31,255,192,0,31,239,192,0,31,239,224,0,31,199,224, + 0,31,135,240,0,31,131,248,0,31,129,248,0,31,129,252, + 0,31,128,252,0,31,128,254,0,31,128,255,0,255,243,255, + 128,255,243,255,128,21,25,75,23,1,0,255,240,0,255,240, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,24,31,128, + 24,31,128,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,31,25,100,32,0,0,127,224,7,254, + 127,240,15,254,15,240,15,240,15,240,15,240,13,248,27,240, + 13,248,27,240,13,248,27,240,12,252,59,240,12,252,51,240, + 12,252,51,240,12,124,115,240,12,126,99,240,12,126,99,240, + 12,62,227,240,12,63,195,240,12,63,195,240,12,31,195,240, + 12,31,131,240,12,31,131,240,12,15,131,240,12,15,3,240, + 12,15,3,240,30,15,3,240,255,198,31,254,255,198,31,254, + 27,25,100,27,0,0,255,128,127,224,255,192,127,224,63,224, + 15,0,15,224,6,0,15,240,6,0,15,248,6,0,15,252, + 6,0,13,254,6,0,12,254,6,0,12,255,6,0,12,127, + 134,0,12,63,198,0,12,31,230,0,12,15,230,0,12,15, + 246,0,12,7,254,0,12,3,254,0,12,1,254,0,12,0, + 254,0,12,0,126,0,12,0,126,0,12,0,62,0,30,0, + 30,0,255,192,14,0,255,192,6,0,24,25,75,26,1,0, + 0,126,0,3,255,192,15,193,240,31,128,248,63,0,252,62, + 0,124,126,0,126,126,0,126,252,0,63,252,0,63,252,0, + 63,252,0,63,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,126,0,126,126,0,126,62,0,124,63,0,252,31, + 128,248,15,193,240,3,255,192,0,126,0,22,25,75,24,1, + 0,255,255,128,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,240,0,255,240,0,25,31,124,26, + 1,250,0,126,0,0,3,255,192,0,15,193,240,0,31,128, + 248,0,63,0,252,0,62,0,124,0,126,0,126,0,126,0, + 126,0,252,0,63,0,252,0,63,0,252,0,63,0,252,0, + 63,0,252,0,63,0,252,0,63,0,252,0,63,0,252,60, + 63,0,252,254,63,0,127,135,126,0,127,131,254,0,63,3, + 252,0,63,3,252,0,31,131,248,0,15,195,240,0,3,255, + 224,0,0,127,224,0,0,3,225,128,0,3,225,128,0,1, + 243,128,0,1,255,0,0,0,254,0,0,0,60,0,25,25, + 100,27,1,0,255,255,128,0,255,255,240,0,31,131,248,0, + 31,129,248,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,129,248,0,31,129,240,0, + 31,135,192,0,31,255,0,0,31,255,192,0,31,135,224,0, + 31,131,224,0,31,131,240,0,31,131,240,0,31,131,240,0, + 31,131,249,128,31,129,249,128,31,129,251,0,31,129,255,0, + 255,240,254,0,255,240,124,0,19,25,75,21,1,0,3,240, + 192,31,253,192,60,31,192,120,7,192,112,3,192,240,1,192, + 240,0,192,248,0,192,255,0,192,255,240,0,127,254,0,127, + 255,0,63,255,128,15,255,192,7,255,224,64,127,224,96,7, + 224,96,3,224,112,1,224,120,1,224,120,1,192,126,3,192, + 127,7,128,103,255,0,97,252,0,21,25,75,23,1,0,255, + 255,248,255,255,248,241,248,120,225,248,56,225,248,56,193,248, + 24,193,248,24,193,248,24,129,248,8,129,248,8,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,15,255,128,15,255,128,26,25,100,28,1,0, + 255,240,255,192,255,240,255,192,31,128,30,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,28,0, + 15,192,24,0,15,224,56,0,7,248,240,0,3,255,224,0, + 0,255,192,0,25,25,100,25,0,0,255,224,255,128,255,224, + 255,128,63,128,62,0,31,128,28,0,31,128,28,0,31,192, + 24,0,15,192,56,0,15,192,48,0,7,224,112,0,7,224, + 112,0,7,240,96,0,3,240,224,0,3,240,192,0,1,248, + 192,0,1,249,192,0,1,249,128,0,0,255,128,0,0,255, + 0,0,0,255,0,0,0,127,0,0,0,126,0,0,0,62, + 0,0,0,62,0,0,0,60,0,0,0,28,0,0,32,25, + 100,32,0,0,255,223,249,255,255,223,249,255,63,7,224,124, + 63,7,224,56,31,131,224,48,31,131,240,112,31,131,240,112, + 15,193,240,96,15,195,248,96,15,195,248,224,7,195,248,192, + 7,231,248,192,7,230,252,192,7,230,253,128,3,254,125,128, + 3,252,127,128,3,252,127,128,1,252,63,0,1,248,63,0, + 1,248,63,0,0,248,62,0,0,248,30,0,0,240,30,0, + 0,112,28,0,0,112,12,0,24,25,75,24,0,0,255,227, + 255,255,227,255,63,128,252,31,192,120,31,192,112,15,224,224, + 7,224,192,7,241,192,3,255,128,3,255,0,1,255,0,0, + 254,0,0,254,0,0,127,0,0,127,128,0,255,128,1,223, + 192,3,143,224,3,143,224,7,7,240,14,3,240,30,3,248, + 63,3,252,255,239,255,255,239,255,24,25,75,24,0,0,255, + 241,255,255,241,255,63,128,124,31,192,56,31,192,112,15,224, + 112,15,224,224,7,240,192,3,241,192,3,249,128,1,251,128, + 1,255,0,0,255,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,0,126,0,0,126,0,0,126, + 0,0,126,0,3,255,192,3,255,192,19,25,75,21,1,0, + 127,255,224,127,255,224,126,15,224,120,15,224,112,31,192,112, + 31,128,96,63,128,96,127,0,64,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,240,0,7,240,0,15,224,32, + 15,224,96,31,192,96,31,128,96,63,128,224,127,0,224,127, + 1,224,254,7,224,255,255,224,255,255,224,8,29,29,13,3, + 252,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,255,255,16,25, + 50,20,2,0,240,0,248,0,120,0,124,0,60,0,62,0, + 30,0,31,0,15,0,15,128,7,128,7,192,3,192,3,224, + 1,224,1,240,0,240,0,248,0,120,0,124,0,60,0,62, + 0,30,0,30,0,15,8,29,29,13,1,252,255,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,255,255,16,14,28,20,2,11,3, + 192,7,224,7,224,15,240,15,240,15,240,30,120,30,120,60, + 60,60,60,124,62,120,30,248,31,240,15,16,3,6,16,0, + 251,255,255,255,255,255,255,7,6,6,11,2,17,96,240,248, + 124,30,6,18,16,48,20,1,0,15,240,0,63,252,0,120, + 126,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,19,25,75,21,0,0,255, + 0,0,255,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,63,0,31,255,128, + 31,207,192,31,135,192,31,3,224,31,3,224,31,3,224,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 192,31,143,128,29,255,0,24,124,0,15,16,32,17,1,0, + 3,240,15,252,62,62,124,62,124,62,248,28,248,0,248,0, + 248,0,248,0,252,2,252,6,126,6,63,28,31,248,7,224, + 20,25,75,22,1,0,0,127,128,0,127,128,0,31,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,15,207,128,31,239,128,62,63,128,124,31,128,120,31,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,31,128,124,31,128,124,127,128,63,239,240,15,143, + 240,16,16,32,18,1,0,3,224,15,248,60,60,120,30,120, + 30,248,31,248,31,255,255,255,255,248,0,248,0,252,3,124, + 6,63,14,31,252,7,240,15,25,50,13,0,0,0,240,3, + 252,7,158,15,62,15,62,31,28,31,0,31,0,31,0,255, + 240,255,240,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,255,224,255,224,20, + 25,75,20,1,249,0,1,224,0,3,240,7,255,240,31,124, + 224,62,62,0,124,31,0,124,31,0,124,31,0,124,31,0, + 124,31,0,62,62,0,31,126,0,31,248,0,124,0,0,248, + 0,0,255,252,0,255,255,0,63,255,0,31,255,128,127,255, + 128,240,7,128,240,7,128,248,15,0,127,254,0,15,240,0, + 20,25,75,22,1,0,254,0,0,254,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,62,0,62,255,128,63,255,128,63,143,192,63,7,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,255,159,240,255,159, + 240,9,25,50,12,2,0,28,0,62,0,62,0,62,0,28, + 0,0,0,0,0,0,0,0,0,254,0,254,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,255,128,12,32,64,12,253,249,0, + 224,1,240,1,240,1,240,0,224,0,0,0,0,0,0,0, + 0,7,240,7,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,113,240,249,224,249,224,251,192,127,128,30,0,20, + 25,75,22,1,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,63,224,62,63,224,62,15,0,62,14,0,62,60,0,62, + 112,0,62,248,0,63,252,0,63,254,0,63,126,0,62,63, + 0,62,31,128,62,31,192,62,15,224,255,191,240,255,191,240, + 10,25,50,12,1,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,255,192,255,192,29,16,64,31,1,0,254,126, + 31,0,254,255,63,192,63,255,255,192,63,159,231,224,63,15, + 195,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,255,191,239,248,255,191,239,248,20,16, + 48,22,1,0,254,62,0,254,255,128,63,255,128,63,143,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,255,159, + 240,255,159,240,17,16,48,19,1,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,19,23,69,21,1,249, + 254,126,0,254,255,128,63,143,192,63,7,192,63,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,63,7,192,63,7,192,63,143,128,63,255,0,62,126,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,255, + 128,0,255,128,0,20,23,69,20,1,249,7,225,128,31,249, + 128,62,31,128,124,31,128,124,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,124,31,128,124, + 31,128,62,63,128,31,239,128,7,207,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,127,240,0,127,240, + 15,16,32,16,1,0,252,124,252,254,61,254,61,190,63,62, + 62,28,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,192,255,192,14,16,32,16,1,0,15,216,60,248, + 112,56,240,24,254,8,255,192,255,240,127,248,63,248,15,252, + 192,252,192,60,224,56,248,120,255,240,207,192,12,23,46,14, + 1,0,6,0,6,0,14,0,14,0,14,0,30,0,62,0, + 255,224,255,224,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,48,62,48,62,48,62,96,63,224,31,192,15,128, + 20,16,48,22,1,0,254,31,192,254,31,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,15,192,62,15,192,63,31,192,31,255,192, + 31,247,240,7,199,240,19,16,48,19,0,0,255,143,224,255, + 143,224,63,3,192,63,3,128,31,3,0,31,135,0,15,134, + 0,15,198,0,7,204,0,7,236,0,3,248,0,3,248,0, + 1,248,0,1,240,0,0,240,0,0,224,0,27,16,64,29, + 1,0,255,191,239,224,255,191,239,224,126,31,131,192,62,15, + 131,128,63,15,131,0,31,15,195,0,31,143,198,0,15,159, + 230,0,15,155,230,0,15,251,236,0,7,241,252,0,7,241, + 248,0,3,225,248,0,3,224,240,0,1,192,240,0,1,192, + 96,0,19,16,48,19,0,0,255,223,224,255,223,224,63,7, + 0,31,142,0,31,220,0,15,248,0,7,240,0,3,240,0, + 1,248,0,3,252,0,7,254,0,14,126,0,28,63,0,60, + 63,128,255,127,224,255,127,224,19,23,69,19,0,249,255,143, + 224,255,143,224,63,3,128,63,3,128,31,3,0,31,135,0, + 15,134,0,15,198,0,7,204,0,7,236,0,3,248,0,3, + 248,0,1,248,0,1,240,0,0,240,0,0,224,0,0,96, + 0,112,192,0,248,192,0,249,128,0,255,0,0,127,0,0, + 60,0,0,14,16,32,16,1,0,127,252,127,252,112,252,97, + 248,97,248,67,240,7,224,7,224,15,192,31,128,31,12,63, + 12,126,28,124,28,255,252,255,252,8,30,30,13,3,252,3, + 14,28,60,60,60,60,60,60,60,60,60,60,56,240,248,60, + 60,60,60,60,60,60,60,60,60,60,28,14,3,4,25,25, + 20,8,0,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,8,28,28,13, + 1,253,224,120,60,60,60,60,60,60,60,60,60,60,28,15, + 31,60,60,60,60,60,60,60,60,60,60,60,120,224,16,6, + 12,20,2,6,14,4,63,142,127,255,255,254,113,252,32,112, + 255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=11 x= 2 y= 6 dx=12 dy= 0 ascent=11 len=16 + Font Bounding box w=14 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR08[2642] U8G_SECTION(".progmem.u8g_font_ncenR08") = { + 0,14,18,254,252,8,1,180,3,120,32,255,254,11,254,8, + 254,0,0,0,3,0,1,1,8,8,4,1,0,128,128,128, + 128,128,0,128,128,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,4,10,10,5, + 0,255,32,112,160,160,96,80,80,80,224,64,8,8,8,9, + 0,0,100,148,152,104,22,25,41,38,9,8,16,10,0,0, + 48,0,72,0,80,0,38,0,84,0,136,0,140,128,115,0, + 1,3,3,4,1,5,128,128,128,3,9,9,4,0,255,32, + 64,64,128,128,128,64,64,32,3,9,9,4,0,255,128,64, + 64,32,32,32,64,64,128,5,5,5,6,0,3,32,168,112, + 168,32,5,5,5,6,0,0,32,32,248,32,32,2,3,3, + 3,0,254,64,64,128,3,1,1,4,0,2,224,1,2,2, + 4,1,0,128,128,3,9,9,4,0,255,32,32,32,64,64, + 64,128,128,128,4,8,8,5,0,0,96,144,144,144,144,144, + 144,96,3,8,8,5,1,0,64,192,64,64,64,64,64,224, + 4,8,8,5,0,0,96,144,144,16,32,64,144,240,4,8, + 8,5,0,0,96,144,16,96,16,144,144,96,5,8,8,5, + 0,0,16,48,80,80,144,248,16,56,4,8,8,5,0,0, + 240,128,128,224,16,16,144,96,4,8,8,5,0,0,112,144, + 128,224,144,144,144,96,4,8,8,5,0,0,240,144,32,32, + 32,64,64,64,4,8,8,5,0,0,96,144,144,96,144,144, + 144,96,4,8,8,5,0,0,96,144,144,144,112,16,144,224, + 1,5,5,4,1,0,128,128,0,128,128,2,6,6,4,0, + 255,64,64,0,64,64,128,6,5,5,7,0,0,12,48,192, + 48,12,5,3,3,6,0,1,248,0,248,6,5,5,7,0, + 0,192,48,12,48,192,4,8,8,5,0,0,96,144,16,32, + 64,0,64,64,8,10,10,9,0,255,60,66,129,157,165,173, + 182,128,64,60,7,8,8,8,0,0,16,16,40,40,68,124, + 68,238,6,8,8,7,0,0,248,68,68,120,68,68,68,248, + 6,8,8,7,0,0,60,68,128,128,128,128,68,56,7,8, + 8,8,0,0,248,68,66,66,66,66,68,248,6,8,8,7, + 0,0,252,68,84,112,80,68,68,252,6,8,8,7,0,0, + 252,68,84,112,80,64,64,224,7,8,8,8,0,0,60,68, + 128,128,142,132,68,56,8,8,8,9,0,0,231,66,66,126, + 66,66,66,231,3,8,8,4,0,0,224,64,64,64,64,64, + 64,224,4,8,8,5,0,0,112,32,32,32,32,160,160,192, + 7,8,8,8,0,0,230,68,72,80,112,72,68,238,6,8, + 8,7,0,0,224,64,64,64,64,68,68,252,9,8,16,10, + 0,0,193,128,99,0,99,0,85,0,85,0,85,0,73,0, + 235,128,8,8,8,9,0,0,231,98,82,82,74,74,70,230, + 7,8,8,8,0,0,56,68,130,130,130,130,68,56,6,8, + 8,7,0,0,248,68,68,68,120,64,64,224,7,9,9,8, + 0,255,56,68,130,130,130,178,76,56,6,7,8,8,8,0, + 0,248,68,68,72,120,68,68,198,5,8,8,6,0,0,120, + 136,128,224,24,8,136,240,7,8,8,8,0,0,254,146,146, + 16,16,16,16,56,7,8,8,8,0,0,238,68,68,68,68, + 68,68,56,7,8,8,8,0,0,238,68,68,68,40,40,16, + 16,11,8,16,12,0,0,238,224,68,64,68,64,42,128,42, + 128,42,128,17,0,17,0,6,8,8,7,0,0,204,72,72, + 48,48,72,72,204,7,8,8,8,0,0,198,68,40,40,16, + 16,16,56,5,8,8,6,0,0,248,136,144,32,32,72,136, + 248,2,9,9,3,0,255,192,128,128,128,128,128,128,128,192, + 4,8,8,5,0,0,128,128,64,64,32,32,16,16,2,9, + 9,3,0,255,192,64,64,64,64,64,64,64,192,5,6,6, + 6,0,2,32,32,80,80,136,136,6,1,1,6,0,254,252, + 2,2,2,3,0,6,128,64,5,5,5,6,0,0,96,144, + 112,144,248,5,8,8,5,255,0,192,64,64,112,72,72,72, + 112,4,5,5,5,0,0,112,144,128,144,96,5,8,8,6, + 0,0,48,16,16,112,144,144,144,120,4,5,5,5,0,0, + 96,144,240,128,112,4,8,8,4,0,0,48,80,64,224,64, + 64,64,224,5,7,7,6,0,254,120,144,160,64,120,136,112, + 6,8,8,6,255,0,192,64,64,112,72,72,72,236,3,7, + 7,4,0,0,64,0,192,64,64,64,224,2,9,9,4,0, + 254,64,0,192,64,64,64,64,64,128,6,8,8,7,0,0, + 192,64,64,88,80,112,72,236,3,8,8,4,0,0,192,64, + 64,64,64,64,64,224,9,5,10,10,0,0,182,0,73,0, + 73,0,73,0,237,128,6,5,5,7,0,0,176,72,72,72, + 236,4,5,5,5,0,0,96,144,144,144,96,4,7,7,5, + 0,254,96,144,144,144,224,128,192,5,7,7,6,0,254,104, + 144,144,144,112,16,56,4,5,5,5,0,0,208,96,64,64, + 224,4,5,5,5,0,0,112,128,96,16,224,3,7,7,3, + 0,0,128,128,192,128,128,128,96,5,5,5,6,0,0,144, + 144,144,144,104,6,5,5,6,0,0,220,136,80,80,32,8, + 5,5,8,0,0,147,170,170,68,68,5,5,5,6,0,0, + 216,80,32,80,216,6,7,7,6,0,254,220,136,80,80,32, + 32,192,4,5,5,5,0,0,240,32,64,128,240,3,9,9, + 4,0,255,32,64,64,64,128,64,64,64,32,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,3,9,9,4,0,255, + 128,64,64,64,32,64,64,64,128,6,2,2,7,0,2,100, + 152,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,0,0,0,3,0,1,1,8,8,4,1,254,128,128, + 0,128,128,128,128,128,5,7,7,6,0,255,16,120,168,160, + 200,112,64,6,8,8,7,0,0,56,72,64,248,32,32,68, + 248,6,6,6,7,0,1,132,120,72,72,120,132,7,8,8, + 8,0,0,198,68,40,108,16,124,16,56,1,8,8,6,2, + 0,128,128,128,0,0,128,128,128,4,10,10,5,0,254,112, + 144,128,96,144,144,96,16,144,224,3,1,1,4,0,6,160, + 9,8,16,10,0,0,62,0,65,0,156,128,164,128,160,128, + 156,128,65,0,62,0,4,6,6,5,0,2,224,32,96,176, + 0,240,5,3,3,6,0,1,72,144,72,5,3,3,6,0, + 1,248,8,8,3,1,1,4,0,2,224,9,8,16,10,0, + 0,62,0,65,0,188,128,148,128,152,128,182,128,65,0,62, + 0,4,1,1,5,0,6,240,3,4,4,4,0,4,64,160, + 160,64,5,5,5,6,0,0,32,248,32,0,248,3,4,4, + 3,0,4,96,160,64,224,3,4,4,3,0,4,224,64,32, + 192,2,2,2,3,0,6,64,128,5,7,7,6,0,254,144, + 144,144,144,232,128,128,6,10,10,7,0,254,124,168,168,168, + 104,40,40,40,40,124,1,2,2,4,1,2,128,128,2,3, + 3,3,0,254,128,64,192,3,4,4,3,0,4,64,192,64, + 224,4,6,6,5,0,2,96,144,144,96,0,240,5,3,3, + 6,0,1,144,72,144,7,8,8,7,0,0,72,200,80,240, + 36,44,94,68,6,8,8,7,0,0,72,200,80,240,44,52, + 72,92,7,8,8,7,0,0,232,72,48,208,36,44,94,68, + 4,8,8,5,0,254,32,32,0,32,64,128,144,96,7,11, + 11,8,0,0,32,16,0,16,16,40,40,68,124,68,238,7, + 11,11,8,0,0,8,16,0,16,16,40,40,68,124,68,238, + 7,11,11,8,0,0,16,40,0,16,16,40,40,68,124,68, + 238,7,11,11,8,0,0,20,40,0,16,16,40,40,68,124, + 68,238,7,10,10,8,0,0,40,0,16,16,40,40,68,124, + 68,238,7,11,11,8,0,0,16,40,16,16,16,40,40,68, + 124,68,238,10,8,16,11,0,0,31,192,12,64,21,64,23, + 0,61,0,36,64,68,64,231,192,6,10,10,7,0,254,60, + 68,128,128,128,128,68,56,16,48,6,11,11,7,0,0,32, + 16,0,252,68,84,112,80,68,68,252,6,11,11,7,0,0, + 8,16,0,252,68,84,112,80,68,68,252,6,11,11,7,0, + 0,16,40,0,252,68,84,112,80,68,68,252,6,10,10,7, + 0,0,40,0,252,68,84,112,80,68,68,252,3,11,11,4, + 0,0,128,64,0,224,64,64,64,64,64,64,224,3,11,11, + 4,0,0,32,64,0,224,64,64,64,64,64,64,224,3,11, + 11,4,0,0,64,160,0,224,64,64,64,64,64,64,224,3, + 10,10,4,0,0,160,0,224,64,64,64,64,64,64,224,7, + 8,8,8,0,0,248,68,66,226,66,66,68,248,8,11,11, + 9,0,0,20,40,0,231,98,82,82,74,74,70,230,7,11, + 11,8,0,0,32,16,0,56,68,130,130,130,130,68,56,7, + 11,11,8,0,0,8,16,0,56,68,130,130,130,130,68,56, + 7,11,11,8,0,0,16,40,0,56,68,130,130,130,130,68, + 56,7,11,11,8,0,0,20,40,0,56,68,130,130,130,130, + 68,56,7,10,10,8,0,0,40,0,56,68,130,130,130,130, + 68,56,5,5,5,6,0,0,136,80,32,80,136,8,8,8, + 8,255,0,29,34,69,73,81,97,98,156,7,11,11,8,0, + 0,32,16,0,238,68,68,68,68,68,68,56,7,11,11,8, + 0,0,8,16,0,238,68,68,68,68,68,68,56,7,11,11, + 8,0,0,16,40,0,238,68,68,68,68,68,68,56,7,10, + 10,8,0,0,40,0,238,68,68,68,68,68,68,56,7,11, + 11,8,0,0,8,16,0,198,68,40,40,16,16,16,56,6, + 8,8,7,0,0,192,120,68,68,68,120,64,224,6,8,8, + 7,0,0,48,72,72,88,68,68,84,216,5,8,8,6,0, + 0,64,32,0,96,144,112,144,248,5,8,8,6,0,0,32, + 64,0,96,144,112,144,248,5,8,8,6,0,0,32,80,0, + 96,144,112,144,248,5,8,8,6,0,0,80,160,0,96,144, + 112,144,248,5,7,7,6,0,0,80,0,96,144,112,144,248, + 5,8,8,6,0,0,32,80,32,96,144,112,144,248,7,5, + 5,8,0,0,108,146,126,144,238,4,7,7,5,0,254,112, + 144,128,144,96,32,96,4,8,8,5,0,0,64,32,0,96, + 144,240,128,112,4,8,8,5,0,0,32,64,0,96,144,240, + 128,112,4,8,8,5,0,0,32,80,0,96,144,240,128,112, + 4,7,7,5,0,0,80,0,96,144,240,128,112,3,8,8, + 4,0,0,128,64,0,192,64,64,64,224,3,8,8,4,0, + 0,32,64,0,192,64,64,64,224,3,8,8,4,0,0,64, + 160,0,192,64,64,64,224,3,7,7,4,0,0,160,0,192, + 64,64,64,224,4,8,8,5,0,0,80,96,160,96,144,144, + 144,96,6,8,8,7,0,0,40,80,0,176,72,72,72,236, + 4,8,8,5,0,0,64,32,0,96,144,144,144,96,4,8, + 8,5,0,0,32,64,0,96,144,144,144,96,4,8,8,5, + 0,0,32,80,0,96,144,144,144,96,4,8,8,5,0,0, + 80,160,0,96,144,144,144,96,4,7,7,5,0,0,80,0, + 96,144,144,144,96,5,5,5,6,0,0,32,0,248,0,32, + 5,6,6,5,0,255,104,144,176,208,96,128,5,8,8,6, + 0,0,64,32,0,144,144,144,144,104,5,8,8,6,0,0, + 32,64,0,144,144,144,144,104,5,8,8,6,0,0,32,80, + 0,144,144,144,144,104,5,7,7,6,0,0,80,0,144,144, + 144,144,104,6,10,10,6,0,254,16,32,0,220,136,80,80, + 32,32,192,5,10,10,5,255,254,192,64,64,112,72,72,72, + 112,64,224,6,9,9,6,0,254,80,0,220,136,80,80,32, + 32,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=10 x= 2 y= 6 dx=12 dy= 0 ascent= 9 len=16 + Font Bounding box w=14 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR08r[1266] U8G_SECTION(".progmem.u8g_font_ncenR08r") = { + 0,14,18,254,252,8,1,180,3,120,32,127,254,9,254,8, + 254,0,0,0,3,0,1,1,8,8,4,1,0,128,128,128, + 128,128,0,128,128,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,4,10,10,5, + 0,255,32,112,160,160,96,80,80,80,224,64,8,8,8,9, + 0,0,100,148,152,104,22,25,41,38,9,8,16,10,0,0, + 48,0,72,0,80,0,38,0,84,0,136,0,140,128,115,0, + 1,3,3,4,1,5,128,128,128,3,9,9,4,0,255,32, + 64,64,128,128,128,64,64,32,3,9,9,4,0,255,128,64, + 64,32,32,32,64,64,128,5,5,5,6,0,3,32,168,112, + 168,32,5,5,5,6,0,0,32,32,248,32,32,2,3,3, + 3,0,254,64,64,128,3,1,1,4,0,2,224,1,2,2, + 4,1,0,128,128,3,9,9,4,0,255,32,32,32,64,64, + 64,128,128,128,4,8,8,5,0,0,96,144,144,144,144,144, + 144,96,3,8,8,5,1,0,64,192,64,64,64,64,64,224, + 4,8,8,5,0,0,96,144,144,16,32,64,144,240,4,8, + 8,5,0,0,96,144,16,96,16,144,144,96,5,8,8,5, + 0,0,16,48,80,80,144,248,16,56,4,8,8,5,0,0, + 240,128,128,224,16,16,144,96,4,8,8,5,0,0,112,144, + 128,224,144,144,144,96,4,8,8,5,0,0,240,144,32,32, + 32,64,64,64,4,8,8,5,0,0,96,144,144,96,144,144, + 144,96,4,8,8,5,0,0,96,144,144,144,112,16,144,224, + 1,5,5,4,1,0,128,128,0,128,128,2,6,6,4,0, + 255,64,64,0,64,64,128,6,5,5,7,0,0,12,48,192, + 48,12,5,3,3,6,0,1,248,0,248,6,5,5,7,0, + 0,192,48,12,48,192,4,8,8,5,0,0,96,144,16,32, + 64,0,64,64,8,10,10,9,0,255,60,66,129,157,165,173, + 182,128,64,60,7,8,8,8,0,0,16,16,40,40,68,124, + 68,238,6,8,8,7,0,0,248,68,68,120,68,68,68,248, + 6,8,8,7,0,0,60,68,128,128,128,128,68,56,7,8, + 8,8,0,0,248,68,66,66,66,66,68,248,6,8,8,7, + 0,0,252,68,84,112,80,68,68,252,6,8,8,7,0,0, + 252,68,84,112,80,64,64,224,7,8,8,8,0,0,60,68, + 128,128,142,132,68,56,8,8,8,9,0,0,231,66,66,126, + 66,66,66,231,3,8,8,4,0,0,224,64,64,64,64,64, + 64,224,4,8,8,5,0,0,112,32,32,32,32,160,160,192, + 7,8,8,8,0,0,230,68,72,80,112,72,68,238,6,8, + 8,7,0,0,224,64,64,64,64,68,68,252,9,8,16,10, + 0,0,193,128,99,0,99,0,85,0,85,0,85,0,73,0, + 235,128,8,8,8,9,0,0,231,98,82,82,74,74,70,230, + 7,8,8,8,0,0,56,68,130,130,130,130,68,56,6,8, + 8,7,0,0,248,68,68,68,120,64,64,224,7,9,9,8, + 0,255,56,68,130,130,130,178,76,56,6,7,8,8,8,0, + 0,248,68,68,72,120,68,68,198,5,8,8,6,0,0,120, + 136,128,224,24,8,136,240,7,8,8,8,0,0,254,146,146, + 16,16,16,16,56,7,8,8,8,0,0,238,68,68,68,68, + 68,68,56,7,8,8,8,0,0,238,68,68,68,40,40,16, + 16,11,8,16,12,0,0,238,224,68,64,68,64,42,128,42, + 128,42,128,17,0,17,0,6,8,8,7,0,0,204,72,72, + 48,48,72,72,204,7,8,8,8,0,0,198,68,40,40,16, + 16,16,56,5,8,8,6,0,0,248,136,144,32,32,72,136, + 248,2,9,9,3,0,255,192,128,128,128,128,128,128,128,192, + 4,8,8,5,0,0,128,128,64,64,32,32,16,16,2,9, + 9,3,0,255,192,64,64,64,64,64,64,64,192,5,6,6, + 6,0,2,32,32,80,80,136,136,6,1,1,6,0,254,252, + 2,2,2,3,0,6,128,64,5,5,5,6,0,0,96,144, + 112,144,248,5,8,8,5,255,0,192,64,64,112,72,72,72, + 112,4,5,5,5,0,0,112,144,128,144,96,5,8,8,6, + 0,0,48,16,16,112,144,144,144,120,4,5,5,5,0,0, + 96,144,240,128,112,4,8,8,4,0,0,48,80,64,224,64, + 64,64,224,5,7,7,6,0,254,120,144,160,64,120,136,112, + 6,8,8,6,255,0,192,64,64,112,72,72,72,236,3,7, + 7,4,0,0,64,0,192,64,64,64,224,2,9,9,4,0, + 254,64,0,192,64,64,64,64,64,128,6,8,8,7,0,0, + 192,64,64,88,80,112,72,236,3,8,8,4,0,0,192,64, + 64,64,64,64,64,224,9,5,10,10,0,0,182,0,73,0, + 73,0,73,0,237,128,6,5,5,7,0,0,176,72,72,72, + 236,4,5,5,5,0,0,96,144,144,144,96,4,7,7,5, + 0,254,96,144,144,144,224,128,192,5,7,7,6,0,254,104, + 144,144,144,112,16,56,4,5,5,5,0,0,208,96,64,64, + 224,4,5,5,5,0,0,112,128,96,16,224,3,7,7,3, + 0,0,128,128,192,128,128,128,96,5,5,5,6,0,0,144, + 144,144,144,104,6,5,5,6,0,0,220,136,80,80,32,8, + 5,5,8,0,0,147,170,170,68,68,5,5,5,6,0,0, + 216,80,32,80,216,6,7,7,6,0,254,220,136,80,80,32, + 32,192,4,5,5,5,0,0,240,32,64,128,240,3,9,9, + 4,0,255,32,64,64,64,128,64,64,64,32,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,3,9,9,4,0,255, + 128,64,64,64,32,64,64,64,128,6,2,2,7,0,2,100, + 152,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=14 x= 4 y= 8 dx=16 dy= 0 ascent=14 len=33 + Font Bounding box w=18 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR10[3813] U8G_SECTION(".progmem.u8g_font_ncenR10") = { + 0,18,24,254,250,11,2,24,5,38,32,255,253,14,253,11, + 253,0,0,0,4,0,1,1,11,11,3,1,0,128,128,128, + 128,128,128,128,128,0,128,128,3,4,4,5,1,7,160,160, + 160,160,8,11,11,8,0,0,18,18,18,127,36,36,36,254, + 72,72,72,6,14,14,8,1,254,32,120,164,172,160,224,120, + 28,20,212,148,120,16,16,11,11,22,12,0,0,51,0,77, + 0,138,0,138,0,148,0,100,192,9,32,10,32,18,32,18, + 64,33,128,11,11,22,13,1,0,28,0,50,0,34,0,52, + 0,24,0,57,224,76,128,135,0,131,32,197,192,120,192,1, + 4,4,3,1,7,128,128,128,128,4,13,13,5,0,254,16, + 32,64,64,128,128,128,128,128,64,64,32,16,4,13,13,6, + 1,254,128,64,32,32,16,16,16,16,16,32,32,64,128,5, + 5,5,7,1,6,32,168,112,168,32,7,7,7,9,1,0, + 16,16,16,254,16,16,16,2,4,4,4,0,254,192,64,64, + 128,4,1,1,5,0,3,240,1,2,2,4,1,0,128,128, + 4,11,11,4,0,0,16,16,16,32,32,32,64,64,64,128, + 128,6,11,11,8,1,0,120,204,132,132,132,132,132,132,132, + 204,120,5,11,11,8,1,0,32,224,32,32,32,32,32,32, + 32,32,248,6,11,11,8,1,0,120,140,196,4,4,8,16, + 32,68,132,252,6,11,11,8,1,0,120,140,196,4,8,56, + 12,4,196,140,120,7,11,11,8,0,0,12,28,20,36,68, + 68,132,254,4,4,14,6,11,11,8,1,0,252,128,128,184, + 204,132,4,4,196,140,120,6,11,11,8,1,0,56,68,140, + 128,184,204,132,132,132,204,120,6,11,11,8,1,0,252,132, + 136,8,16,16,16,32,32,32,32,6,11,11,8,1,0,120, + 204,132,196,104,120,140,132,132,204,120,6,11,11,8,1,0, + 120,204,132,132,132,204,116,4,196,136,112,1,7,7,4,1, + 0,128,128,0,0,0,128,128,2,9,9,4,0,254,64,64, + 0,0,0,192,64,64,128,8,7,7,10,1,0,3,12,48, + 192,48,12,3,7,4,4,9,1,2,254,0,0,254,8,7, + 7,10,1,0,192,48,12,3,12,48,192,5,11,11,6,0, + 0,112,152,136,8,16,32,32,32,0,32,32,12,11,22,13, + 0,0,31,224,32,16,70,144,137,144,144,144,145,16,145,16, + 147,48,141,192,64,16,63,224,11,11,22,10,255,0,4,0, + 4,0,10,0,10,0,10,0,17,0,17,0,63,128,32,128, + 32,128,251,224,9,11,22,10,0,0,254,0,35,0,33,0, + 33,0,34,0,63,0,33,128,32,128,32,128,33,128,255,0, + 9,11,22,11,1,0,30,128,97,128,64,128,192,128,128,0, + 128,0,128,0,192,128,64,128,97,0,30,0,10,11,22,11, + 0,0,255,0,32,128,32,192,32,64,32,64,32,64,32,64, + 32,64,32,192,32,128,255,0,9,11,22,10,0,0,255,128, + 32,128,32,128,36,0,36,0,60,0,36,0,36,0,32,128, + 32,128,255,128,9,11,22,10,0,0,255,128,32,128,32,128, + 36,0,36,0,60,0,36,0,36,0,32,0,32,0,248,0, + 10,11,22,11,0,0,30,128,97,128,64,128,192,128,128,0, + 128,0,135,192,192,128,64,128,97,128,30,128,11,11,22,12, + 0,0,251,224,32,128,32,128,32,128,32,128,63,128,32,128, + 32,128,32,128,32,128,251,224,5,11,11,6,0,0,248,32, + 32,32,32,32,32,32,32,32,248,7,11,11,7,0,0,62, + 8,8,8,8,8,8,200,136,136,112,11,11,22,11,0,0, + 251,192,33,0,34,0,36,0,40,0,56,0,52,0,38,0, + 35,0,33,128,251,224,9,11,22,10,0,0,248,0,32,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,128,32,128, + 255,128,15,11,22,16,0,0,240,30,48,24,40,40,40,40, + 44,72,36,72,38,136,34,136,35,136,33,8,249,62,12,11, + 22,13,0,0,225,240,48,64,56,64,40,64,44,64,38,64, + 35,64,33,64,33,192,32,192,248,64,10,11,22,11,0,0, + 30,0,97,128,64,128,192,192,128,64,128,64,128,64,192,192, + 64,128,97,128,30,0,9,11,22,10,0,0,255,0,33,128, + 32,128,32,128,33,0,62,0,32,0,32,0,32,0,32,0, + 248,0,11,13,26,11,0,254,30,0,97,128,64,128,192,192, + 128,64,128,64,128,64,220,192,98,128,99,128,31,0,1,32, + 0,192,11,11,22,11,0,0,255,0,33,128,32,128,32,128, + 33,0,62,0,35,0,33,0,33,32,33,160,248,192,7,11, + 11,8,0,0,122,198,130,130,224,56,14,130,130,198,188,9, + 11,22,10,0,0,255,128,136,128,136,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,62,0,12,11,22,13,0, + 0,249,240,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,48,128,31,0,11,11,22,10,255,0,251,224,32, + 128,48,128,17,0,17,0,25,0,10,0,10,0,10,0,4, + 0,4,0,17,11,33,16,255,0,251,239,128,32,131,0,48, + 194,0,17,194,0,17,68,0,25,100,0,11,40,0,10,40, + 0,14,56,0,6,16,0,4,16,0,12,11,22,13,0,0, + 253,240,48,64,24,128,13,0,5,0,6,0,11,0,9,0, + 17,128,32,192,251,240,11,11,22,10,255,0,251,224,96,128, + 49,0,17,0,26,0,10,0,4,0,4,0,4,0,4,0, + 31,0,8,11,11,9,0,0,255,131,134,12,8,24,48,32, + 97,193,255,3,13,13,4,0,254,224,128,128,128,128,128,128, + 128,128,128,128,128,224,6,11,11,8,1,0,128,128,64,64, + 32,32,16,16,8,8,4,3,13,13,4,0,254,224,32,32, + 32,32,32,32,32,32,32,32,32,224,5,6,6,7,1,5, + 32,32,80,80,136,136,7,1,1,7,0,254,254,3,3,3, + 5,1,8,128,64,32,7,7,7,8,0,0,56,76,4,60, + 196,140,118,7,11,11,7,255,0,192,64,64,64,92,102,66, + 66,66,102,92,6,7,7,7,0,0,120,204,128,128,128,196, + 120,7,11,11,8,0,0,12,4,4,4,116,204,132,132,132, + 204,118,6,7,7,7,0,0,120,204,132,252,128,196,120,5, + 11,11,5,0,0,56,72,64,64,240,64,64,64,64,64,224, + 7,10,10,8,0,253,118,204,132,204,120,128,124,198,130,124, + 8,11,11,9,0,0,192,64,64,64,92,102,66,66,66,66, + 231,3,10,10,4,0,0,64,64,0,192,64,64,64,64,64, + 224,3,13,13,4,255,253,32,32,0,96,32,32,32,32,32, + 32,32,160,192,8,11,11,9,0,0,192,64,64,64,94,72, + 80,120,76,70,239,3,11,11,4,0,0,192,64,64,64,64, + 64,64,64,64,64,224,13,7,14,14,0,0,220,224,103,48, + 66,16,66,16,66,16,66,16,231,56,8,7,7,9,0,0, + 220,102,66,66,66,66,231,6,7,7,7,0,0,120,204,132, + 132,132,204,120,7,10,10,8,0,253,220,102,66,66,66,102, + 92,64,64,224,7,10,10,7,0,253,116,204,132,132,132,204, + 116,4,4,14,6,7,7,7,0,0,220,100,64,64,64,64, + 224,5,7,7,6,0,0,120,136,192,112,24,136,240,5,9, + 9,5,0,0,64,64,240,64,64,64,64,72,48,8,7,7, + 9,0,0,231,66,66,66,66,102,59,7,7,7,8,0,0, + 238,68,68,40,40,16,16,11,7,14,12,0,0,238,224,68, + 64,68,64,42,128,42,128,17,0,17,0,7,7,7,8,0, + 0,206,100,56,16,56,76,230,7,10,10,8,0,253,238,68, + 68,40,40,16,16,32,160,192,6,7,7,7,0,0,252,140, + 152,48,100,196,252,3,13,13,4,0,254,32,64,64,64,64, + 64,128,64,64,64,64,64,32,1,11,11,9,4,0,128,128, + 128,128,128,128,128,128,128,128,128,3,13,13,5,1,254,128, + 64,64,64,64,64,32,64,64,64,64,64,128,7,2,2,9, + 1,3,114,140,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,4,0,1,1,11,11,4,1, + 253,128,128,0,128,128,128,128,128,128,128,128,6,11,11,8, + 1,254,4,4,120,204,144,144,160,228,120,128,128,7,11,11, + 8,0,0,60,98,70,64,32,252,16,16,96,178,206,7,7, + 7,8,0,2,186,68,130,130,130,68,186,9,11,22,8,0, + 0,227,128,65,0,34,0,34,0,20,0,20,0,62,0,8, + 0,62,0,8,0,28,0,1,11,11,9,4,0,128,128,128, + 128,0,0,128,128,128,128,128,5,13,13,7,1,254,120,136, + 128,192,112,152,136,200,112,24,8,136,240,4,2,2,6,1, + 8,144,144,12,11,22,14,1,0,15,0,48,192,79,32,89, + 32,144,16,144,16,152,144,79,32,64,32,48,192,15,0,5, + 7,7,6,0,4,96,144,112,144,248,0,248,6,5,5,7, + 0,1,36,72,144,72,36,7,4,4,9,0,1,254,2,2, + 2,4,1,1,5,0,3,240,12,11,22,14,1,0,15,0, + 48,192,94,32,73,32,137,16,142,16,139,16,89,160,64,32, + 48,192,15,0,5,1,1,5,0,8,248,4,4,4,6,1, + 7,96,144,144,96,7,7,7,9,1,0,16,16,254,16,16, + 0,254,4,6,6,5,0,5,96,144,32,64,144,240,4,6, + 6,5,0,5,96,144,32,16,144,96,3,3,3,5,1,8, + 32,64,128,8,10,10,9,0,253,231,66,66,66,66,102,123, + 64,96,64,7,13,13,9,1,254,126,212,212,212,212,116,20, + 20,20,20,20,20,62,2,2,2,4,1,3,192,192,3,4, + 4,5,0,253,64,64,32,192,3,6,6,5,1,5,64,192, + 64,64,64,224,4,7,7,5,0,4,96,144,144,144,96,0, + 240,6,5,5,7,0,1,144,72,36,72,144,10,11,22,12, + 0,0,65,0,193,0,66,0,66,0,68,0,228,128,9,128, + 18,128,20,128,39,192,32,128,10,11,22,12,0,0,65,0, + 193,0,66,0,66,0,68,0,229,128,10,64,16,128,17,0, + 34,64,35,192,10,11,22,12,0,0,97,0,145,0,34,0, + 18,0,148,0,100,128,9,128,18,128,20,128,39,192,32,128, + 5,11,11,6,0,253,32,32,0,32,32,32,64,128,136,200, + 112,11,14,28,10,255,0,8,0,4,0,0,0,4,0,4, + 0,10,0,10,0,10,0,17,0,17,0,63,128,32,128,32, + 128,251,224,11,14,28,10,255,0,2,0,4,0,0,0,4, + 0,4,0,10,0,10,0,10,0,17,0,17,0,63,128,32, + 128,32,128,251,224,11,14,28,10,255,0,4,0,10,0,17, + 0,4,0,4,0,10,0,10,0,10,0,17,0,17,0,63, + 128,32,128,32,128,251,224,11,14,28,10,255,0,12,128,19, + 0,0,0,4,0,4,0,10,0,10,0,10,0,17,0,17, + 0,63,128,32,128,32,128,251,224,11,13,26,10,255,0,17, + 0,17,0,4,0,4,0,10,0,10,0,10,0,17,0,17, + 0,63,128,32,128,32,128,251,224,11,14,28,10,255,0,12, + 0,18,0,12,0,4,0,4,0,10,0,10,0,10,0,17, + 0,17,0,63,128,32,128,32,128,251,224,14,11,22,15,0, + 0,15,252,5,4,9,4,9,32,17,32,17,224,63,32,33, + 32,65,4,65,4,227,252,9,14,28,11,1,253,30,128,97, + 128,64,128,192,128,128,0,128,0,128,0,192,128,64,128,97, + 0,30,0,8,0,4,0,24,0,9,14,28,10,0,0,16, + 0,8,0,0,0,255,128,32,128,32,128,36,0,36,0,60, + 0,36,0,36,0,32,128,32,128,255,128,9,14,28,10,0, + 0,4,0,8,0,0,0,255,128,32,128,32,128,36,0,36, + 0,60,0,36,0,36,0,32,128,32,128,255,128,9,14,28, + 10,0,0,12,0,18,0,0,0,255,128,32,128,32,128,36, + 0,36,0,60,0,36,0,36,0,32,128,32,128,255,128,9, + 14,28,10,0,0,18,0,18,0,0,0,255,128,32,128,32, + 128,36,0,36,0,60,0,36,0,36,0,32,128,32,128,255, + 128,5,14,14,6,0,0,64,32,0,248,32,32,32,32,32, + 32,32,32,32,248,5,14,14,6,0,0,16,32,0,248,32, + 32,32,32,32,32,32,32,32,248,5,14,14,6,0,0,48, + 72,0,248,32,32,32,32,32,32,32,32,32,248,5,14,14, + 6,0,0,80,80,0,248,32,32,32,32,32,32,32,32,32, + 248,10,11,22,11,0,0,255,0,32,128,32,192,32,64,32, + 64,248,64,32,64,32,64,32,192,32,128,255,0,12,14,28, + 13,0,0,12,128,19,0,0,0,225,240,48,64,48,64,40, + 64,44,64,38,64,35,64,33,64,32,192,32,64,248,64,10, + 14,28,11,0,0,8,0,4,0,0,0,30,0,97,128,64, + 128,192,192,128,64,128,64,128,64,192,192,64,128,97,128,30, + 0,10,14,28,11,0,0,2,0,4,0,0,0,30,0,97, + 128,64,128,192,192,128,64,128,64,128,64,192,192,64,128,97, + 128,30,0,10,14,28,11,0,0,12,0,18,0,0,0,30, + 0,97,128,64,128,192,192,128,64,128,64,128,64,192,192,64, + 128,97,128,30,0,10,14,28,11,0,0,25,0,38,0,0, + 0,30,0,97,128,64,128,192,192,128,64,128,64,128,64,192, + 192,64,128,97,128,30,0,10,14,28,11,0,0,18,0,18, + 0,0,0,30,0,97,128,64,128,192,192,128,64,128,64,128, + 64,192,192,64,128,97,128,30,0,7,7,7,9,1,0,130, + 68,40,16,40,68,130,11,11,22,11,255,0,15,32,48,192, + 32,192,97,96,66,32,68,32,72,32,112,96,32,64,112,192, + 143,0,12,14,28,13,0,0,8,0,4,0,0,0,249,240, + 32,64,32,64,32,64,32,64,32,64,32,64,32,64,32,64, + 48,128,31,0,12,14,28,13,0,0,1,0,2,0,0,0, + 249,240,32,64,32,64,32,64,32,64,32,64,32,64,32,64, + 32,64,48,128,31,0,12,14,28,13,0,0,6,0,9,0, + 0,0,249,240,32,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,48,128,31,0,12,14,28,13,0,0,9,0, + 9,0,0,0,249,240,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,48,128,31,0,11,14,28,10,255,0, + 2,0,4,0,0,0,251,224,96,128,49,0,17,0,26,0, + 10,0,4,0,4,0,4,0,4,0,31,0,9,11,22,10, + 0,0,248,0,32,0,63,0,33,128,32,128,32,128,33,0, + 62,0,32,0,32,0,248,0,7,11,11,8,0,0,56,100, + 68,76,88,68,66,66,66,86,220,7,11,11,8,0,0,32, + 16,8,0,56,76,4,60,196,140,118,7,11,11,8,0,0, + 8,16,32,0,56,76,4,60,196,140,118,7,11,11,8,0, + 0,16,40,68,0,56,76,4,60,196,140,118,7,10,10,8, + 0,0,50,76,0,56,76,4,60,196,140,118,7,10,10,8, + 0,0,72,72,0,56,76,4,60,196,140,118,7,11,11,8, + 0,0,48,72,48,0,56,76,4,60,196,140,118,11,7,14, + 12,0,0,59,192,78,96,4,32,63,224,196,0,142,32,115, + 192,6,10,10,7,0,253,120,204,128,128,128,196,120,32,16, + 96,6,11,11,7,0,0,64,32,16,0,120,204,132,252,128, + 196,120,6,11,11,7,0,0,8,16,32,0,120,204,132,252, + 128,196,120,6,11,11,7,0,0,16,40,68,0,120,204,132, + 252,128,196,120,6,10,10,7,0,0,72,72,0,120,204,132, + 252,128,196,120,3,11,11,4,0,0,128,64,32,0,192,64, + 64,64,64,64,224,3,11,11,4,0,0,32,64,128,0,192, + 64,64,64,64,64,224,5,11,11,4,255,0,32,80,136,0, + 96,32,32,32,32,32,112,4,10,10,4,255,0,144,144,0, + 96,32,32,32,32,32,112,7,11,11,7,255,0,76,48,208, + 8,60,102,66,66,66,102,60,8,10,10,9,0,0,50,76, + 0,220,102,66,66,66,66,231,6,11,11,7,0,0,64,32, + 16,0,120,204,132,132,132,204,120,6,11,11,7,0,0,16, + 32,64,0,120,204,132,132,132,204,120,6,11,11,7,0,0, + 32,80,136,0,120,204,132,132,132,204,120,6,10,10,7,0, + 0,100,152,0,120,204,132,132,132,204,120,6,10,10,7,0, + 0,72,72,0,120,204,132,132,132,204,120,7,7,7,9,1, + 0,16,16,0,254,0,16,16,6,9,9,7,0,255,8,120, + 220,148,164,164,204,120,64,8,11,11,9,0,0,32,16,8, + 0,231,66,66,66,66,102,59,8,11,11,9,0,0,2,4, + 8,0,231,66,66,66,66,102,59,8,11,11,9,0,0,8, + 20,34,0,231,66,66,66,66,102,59,8,10,10,9,0,0, + 36,36,0,231,66,66,66,66,102,59,7,14,14,8,0,253, + 4,8,16,0,238,68,68,40,40,16,16,32,160,192,7,14, + 14,8,0,253,192,64,64,64,92,102,66,66,66,102,92,64, + 64,224,7,13,13,8,0,253,72,72,0,238,68,68,40,40, + 16,16,32,160,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=14 x= 4 y= 8 dx=16 dy= 0 ascent=12 len=33 + Font Bounding box w=18 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR10r[1781] U8G_SECTION(".progmem.u8g_font_ncenR10r") = { + 0,18,24,254,250,11,2,24,5,38,32,127,253,12,253,11, + 253,0,0,0,4,0,1,1,11,11,3,1,0,128,128,128, + 128,128,128,128,128,0,128,128,3,4,4,5,1,7,160,160, + 160,160,8,11,11,8,0,0,18,18,18,127,36,36,36,254, + 72,72,72,6,14,14,8,1,254,32,120,164,172,160,224,120, + 28,20,212,148,120,16,16,11,11,22,12,0,0,51,0,77, + 0,138,0,138,0,148,0,100,192,9,32,10,32,18,32,18, + 64,33,128,11,11,22,13,1,0,28,0,50,0,34,0,52, + 0,24,0,57,224,76,128,135,0,131,32,197,192,120,192,1, + 4,4,3,1,7,128,128,128,128,4,13,13,5,0,254,16, + 32,64,64,128,128,128,128,128,64,64,32,16,4,13,13,6, + 1,254,128,64,32,32,16,16,16,16,16,32,32,64,128,5, + 5,5,7,1,6,32,168,112,168,32,7,7,7,9,1,0, + 16,16,16,254,16,16,16,2,4,4,4,0,254,192,64,64, + 128,4,1,1,5,0,3,240,1,2,2,4,1,0,128,128, + 4,11,11,4,0,0,16,16,16,32,32,32,64,64,64,128, + 128,6,11,11,8,1,0,120,204,132,132,132,132,132,132,132, + 204,120,5,11,11,8,1,0,32,224,32,32,32,32,32,32, + 32,32,248,6,11,11,8,1,0,120,140,196,4,4,8,16, + 32,68,132,252,6,11,11,8,1,0,120,140,196,4,8,56, + 12,4,196,140,120,7,11,11,8,0,0,12,28,20,36,68, + 68,132,254,4,4,14,6,11,11,8,1,0,252,128,128,184, + 204,132,4,4,196,140,120,6,11,11,8,1,0,56,68,140, + 128,184,204,132,132,132,204,120,6,11,11,8,1,0,252,132, + 136,8,16,16,16,32,32,32,32,6,11,11,8,1,0,120, + 204,132,196,104,120,140,132,132,204,120,6,11,11,8,1,0, + 120,204,132,132,132,204,116,4,196,136,112,1,7,7,4,1, + 0,128,128,0,0,0,128,128,2,9,9,4,0,254,64,64, + 0,0,0,192,64,64,128,8,7,7,10,1,0,3,12,48, + 192,48,12,3,7,4,4,9,1,2,254,0,0,254,8,7, + 7,10,1,0,192,48,12,3,12,48,192,5,11,11,6,0, + 0,112,152,136,8,16,32,32,32,0,32,32,12,11,22,13, + 0,0,31,224,32,16,70,144,137,144,144,144,145,16,145,16, + 147,48,141,192,64,16,63,224,11,11,22,10,255,0,4,0, + 4,0,10,0,10,0,10,0,17,0,17,0,63,128,32,128, + 32,128,251,224,9,11,22,10,0,0,254,0,35,0,33,0, + 33,0,34,0,63,0,33,128,32,128,32,128,33,128,255,0, + 9,11,22,11,1,0,30,128,97,128,64,128,192,128,128,0, + 128,0,128,0,192,128,64,128,97,0,30,0,10,11,22,11, + 0,0,255,0,32,128,32,192,32,64,32,64,32,64,32,64, + 32,64,32,192,32,128,255,0,9,11,22,10,0,0,255,128, + 32,128,32,128,36,0,36,0,60,0,36,0,36,0,32,128, + 32,128,255,128,9,11,22,10,0,0,255,128,32,128,32,128, + 36,0,36,0,60,0,36,0,36,0,32,0,32,0,248,0, + 10,11,22,11,0,0,30,128,97,128,64,128,192,128,128,0, + 128,0,135,192,192,128,64,128,97,128,30,128,11,11,22,12, + 0,0,251,224,32,128,32,128,32,128,32,128,63,128,32,128, + 32,128,32,128,32,128,251,224,5,11,11,6,0,0,248,32, + 32,32,32,32,32,32,32,32,248,7,11,11,7,0,0,62, + 8,8,8,8,8,8,200,136,136,112,11,11,22,11,0,0, + 251,192,33,0,34,0,36,0,40,0,56,0,52,0,38,0, + 35,0,33,128,251,224,9,11,22,10,0,0,248,0,32,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,128,32,128, + 255,128,15,11,22,16,0,0,240,30,48,24,40,40,40,40, + 44,72,36,72,38,136,34,136,35,136,33,8,249,62,12,11, + 22,13,0,0,225,240,48,64,56,64,40,64,44,64,38,64, + 35,64,33,64,33,192,32,192,248,64,10,11,22,11,0,0, + 30,0,97,128,64,128,192,192,128,64,128,64,128,64,192,192, + 64,128,97,128,30,0,9,11,22,10,0,0,255,0,33,128, + 32,128,32,128,33,0,62,0,32,0,32,0,32,0,32,0, + 248,0,11,13,26,11,0,254,30,0,97,128,64,128,192,192, + 128,64,128,64,128,64,220,192,98,128,99,128,31,0,1,32, + 0,192,11,11,22,11,0,0,255,0,33,128,32,128,32,128, + 33,0,62,0,35,0,33,0,33,32,33,160,248,192,7,11, + 11,8,0,0,122,198,130,130,224,56,14,130,130,198,188,9, + 11,22,10,0,0,255,128,136,128,136,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,62,0,12,11,22,13,0, + 0,249,240,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,48,128,31,0,11,11,22,10,255,0,251,224,32, + 128,48,128,17,0,17,0,25,0,10,0,10,0,10,0,4, + 0,4,0,17,11,33,16,255,0,251,239,128,32,131,0,48, + 194,0,17,194,0,17,68,0,25,100,0,11,40,0,10,40, + 0,14,56,0,6,16,0,4,16,0,12,11,22,13,0,0, + 253,240,48,64,24,128,13,0,5,0,6,0,11,0,9,0, + 17,128,32,192,251,240,11,11,22,10,255,0,251,224,96,128, + 49,0,17,0,26,0,10,0,4,0,4,0,4,0,4,0, + 31,0,8,11,11,9,0,0,255,131,134,12,8,24,48,32, + 97,193,255,3,13,13,4,0,254,224,128,128,128,128,128,128, + 128,128,128,128,128,224,6,11,11,8,1,0,128,128,64,64, + 32,32,16,16,8,8,4,3,13,13,4,0,254,224,32,32, + 32,32,32,32,32,32,32,32,32,224,5,6,6,7,1,5, + 32,32,80,80,136,136,7,1,1,7,0,254,254,3,3,3, + 5,1,8,128,64,32,7,7,7,8,0,0,56,76,4,60, + 196,140,118,7,11,11,7,255,0,192,64,64,64,92,102,66, + 66,66,102,92,6,7,7,7,0,0,120,204,128,128,128,196, + 120,7,11,11,8,0,0,12,4,4,4,116,204,132,132,132, + 204,118,6,7,7,7,0,0,120,204,132,252,128,196,120,5, + 11,11,5,0,0,56,72,64,64,240,64,64,64,64,64,224, + 7,10,10,8,0,253,118,204,132,204,120,128,124,198,130,124, + 8,11,11,9,0,0,192,64,64,64,92,102,66,66,66,66, + 231,3,10,10,4,0,0,64,64,0,192,64,64,64,64,64, + 224,3,13,13,4,255,253,32,32,0,96,32,32,32,32,32, + 32,32,160,192,8,11,11,9,0,0,192,64,64,64,94,72, + 80,120,76,70,239,3,11,11,4,0,0,192,64,64,64,64, + 64,64,64,64,64,224,13,7,14,14,0,0,220,224,103,48, + 66,16,66,16,66,16,66,16,231,56,8,7,7,9,0,0, + 220,102,66,66,66,66,231,6,7,7,7,0,0,120,204,132, + 132,132,204,120,7,10,10,8,0,253,220,102,66,66,66,102, + 92,64,64,224,7,10,10,7,0,253,116,204,132,132,132,204, + 116,4,4,14,6,7,7,7,0,0,220,100,64,64,64,64, + 224,5,7,7,6,0,0,120,136,192,112,24,136,240,5,9, + 9,5,0,0,64,64,240,64,64,64,64,72,48,8,7,7, + 9,0,0,231,66,66,66,66,102,59,7,7,7,8,0,0, + 238,68,68,40,40,16,16,11,7,14,12,0,0,238,224,68, + 64,68,64,42,128,42,128,17,0,17,0,7,7,7,8,0, + 0,206,100,56,16,56,76,230,7,10,10,8,0,253,238,68, + 68,40,40,16,16,32,160,192,6,7,7,7,0,0,252,140, + 152,48,100,196,252,3,13,13,4,0,254,32,64,64,64,64, + 64,128,64,64,64,64,64,32,1,11,11,9,4,0,128,128, + 128,128,128,128,128,128,128,128,128,3,13,13,5,1,254,128, + 64,64,64,64,64,32,64,64,64,64,64,128,7,2,2,9, + 1,3,114,140,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--17-120-100-100-P-91-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y= 9 dx=17 dy= 0 ascent=16 len=32 + Font Bounding box w=21 h=26 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =16 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR12[4247] U8G_SECTION(".progmem.u8g_font_ncenR12") = { + 0,21,26,253,250,12,2,59,5,140,32,255,253,16,253,12, + 253,0,0,0,4,1,1,2,12,12,5,1,0,192,192,192, + 192,192,128,128,128,128,0,192,192,4,4,4,6,1,8,144, + 144,144,144,8,12,12,9,0,0,18,18,18,18,127,36,36, + 254,72,72,72,72,7,15,15,9,1,254,16,16,60,82,150, + 150,240,124,30,210,210,148,120,16,16,12,12,24,14,1,0, + 56,128,103,128,69,0,197,0,138,0,138,224,117,144,5,16, + 11,16,10,32,18,32,17,192,12,12,24,13,0,0,30,0, + 51,0,49,0,51,0,26,0,28,240,44,96,102,64,198,128, + 195,144,231,144,124,224,1,4,4,3,1,8,128,128,128,128, + 4,14,14,6,1,254,16,32,64,64,128,128,128,128,128,128, + 64,64,32,16,4,14,14,6,0,254,128,64,32,32,16,16, + 16,16,16,16,32,32,64,128,7,7,7,8,0,5,16,84, + 214,56,214,84,16,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,2,5,5,4,1,253,192,192,64,64,128,4, + 1,1,5,0,3,240,2,2,2,4,1,0,192,192,5,12, + 12,5,0,0,8,8,16,16,16,32,32,64,64,64,128,128, + 8,12,12,9,0,0,60,102,66,195,195,195,195,195,195,66, + 102,60,6,12,12,9,1,0,16,240,48,48,48,48,48,48, + 48,48,48,252,7,12,12,9,1,0,56,68,134,198,198,12, + 8,16,34,66,254,254,7,12,12,9,1,0,120,140,198,198, + 12,56,12,6,198,198,140,120,8,12,12,9,0,0,4,12, + 28,44,44,76,76,140,255,12,12,63,7,12,12,9,1,0, + 126,120,64,64,120,204,134,6,198,198,140,120,8,12,12,9, + 0,0,60,102,70,192,192,252,230,195,195,195,102,60,7,12, + 12,9,1,0,254,254,132,132,8,8,16,16,16,48,48,48, + 8,12,12,9,0,0,60,102,66,98,118,60,110,199,195,195, + 102,60,8,12,12,9,0,0,60,102,195,195,195,103,63,3, + 3,98,102,56,2,8,8,4,1,0,192,192,0,0,0,0, + 192,192,2,11,11,4,1,253,192,192,0,0,0,0,192,192, + 64,64,128,8,8,8,10,1,0,3,12,48,192,192,48,12, + 3,8,4,4,10,1,2,255,0,0,255,8,8,8,10,0, + 0,192,48,12,3,3,12,48,192,7,12,12,7,0,0,56, + 76,230,70,6,12,24,16,16,0,48,48,13,13,26,12,255, + 255,7,128,24,96,32,16,70,208,77,144,152,144,153,144,145, + 32,155,32,76,200,64,16,48,96,15,128,11,12,24,12,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,11,12,24,12,0,0,255, + 128,49,192,48,192,48,192,49,128,63,192,48,224,48,96,48, + 96,48,96,48,192,255,128,10,12,24,12,1,0,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,12,12,24,13,0,0,255,0,49,192,48, + 96,48,96,48,48,48,48,48,48,48,48,48,96,48,96,49, + 192,255,0,10,12,24,12,0,0,255,192,48,192,48,64,50, + 64,50,0,62,0,54,0,50,0,50,64,48,64,48,192,255, + 192,10,12,24,11,0,0,255,192,48,192,48,64,50,64,50, + 0,62,0,54,0,50,0,50,0,48,0,48,0,252,0,11, + 12,24,13,1,0,31,64,112,192,96,64,224,64,192,64,192, + 0,195,224,192,192,224,192,96,192,113,192,30,64,13,12,24, + 14,0,0,253,248,48,96,48,96,48,96,48,96,63,224,48, + 96,48,96,48,96,48,96,48,96,253,248,6,12,12,7,0, + 0,252,48,48,48,48,48,48,48,48,48,48,252,9,12,24, + 9,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,70,0,230,0,198,0,132,0,120,0,12,12,24,13,0, + 0,253,240,48,192,48,128,49,0,50,0,54,0,59,0,51, + 128,49,128,48,192,48,224,253,240,10,12,24,11,0,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,64,48, + 64,48,64,48,192,255,192,15,12,24,16,0,0,248,62,56, + 56,56,56,44,88,44,88,46,88,38,152,38,152,35,152,35, + 24,35,24,249,62,13,12,24,13,0,0,240,248,56,32,60, + 32,44,32,46,32,39,32,35,160,33,160,32,224,32,224,32, + 96,248,32,11,12,24,13,1,0,14,0,49,128,96,192,96, + 192,192,96,192,96,192,96,192,96,96,192,96,192,49,128,14, + 0,11,12,24,11,0,0,255,128,48,192,48,96,48,96,48, + 96,48,192,63,128,48,0,48,0,48,0,48,0,252,0,11, + 15,30,13,1,253,14,0,49,128,96,192,96,192,192,96,192, + 96,192,96,204,96,82,64,115,192,51,128,15,0,3,64,3, + 64,1,128,12,12,24,12,0,0,255,0,48,192,48,96,48, + 96,48,192,63,0,51,128,48,192,48,192,48,208,48,208,252, + 96,8,12,12,10,1,0,61,99,193,193,224,124,62,135,131, + 131,198,188,10,12,24,11,0,0,255,192,204,192,140,64,140, + 64,140,64,12,0,12,0,12,0,12,0,12,0,12,0,63, + 0,13,12,24,13,0,0,252,248,48,32,48,32,48,32,48, + 32,48,32,48,32,48,32,48,32,48,32,24,64,15,128,11, + 12,24,12,0,0,248,224,112,64,48,64,48,128,24,128,25, + 0,25,0,13,0,14,0,14,0,4,0,4,0,15,12,24, + 16,0,0,247,206,99,4,99,4,49,136,49,136,57,200,26, + 208,26,208,10,80,12,96,4,32,4,32,11,12,24,11,0, + 0,241,224,96,192,48,128,25,0,30,0,12,0,6,0,15, + 0,19,0,33,128,96,192,241,224,12,12,24,12,0,0,252, + 240,48,64,24,128,24,128,13,0,13,0,6,0,6,0,6, + 0,6,0,6,0,31,128,9,12,24,10,0,0,127,128,97, + 128,67,0,67,0,6,0,12,0,12,0,24,128,48,128,48, + 128,97,128,255,128,3,14,14,6,1,254,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,12,12,10,2,0,128, + 128,64,64,32,32,16,16,8,8,4,4,3,14,14,6,1, + 254,224,32,32,32,32,32,32,32,32,32,32,32,32,224,8, + 7,7,10,1,5,24,24,60,36,102,66,195,8,1,1,8, + 0,254,255,3,3,3,5,0,9,128,64,32,7,8,8,9, + 1,0,120,204,204,28,108,204,204,118,8,12,12,9,0,0, + 224,96,96,96,124,102,99,99,99,99,102,92,6,8,8,7, + 0,0,56,108,204,192,192,192,108,56,8,12,12,10,1,0, + 14,6,6,6,62,102,198,198,198,198,102,59,7,8,8,8, + 0,0,56,68,198,254,192,192,102,60,6,12,12,6,0,0, + 56,108,96,96,248,96,96,96,96,96,96,248,9,11,22,9, + 0,253,61,128,102,128,102,0,102,0,102,0,60,0,64,0, + 126,0,195,0,195,0,126,0,9,12,24,10,0,0,224,0, + 96,0,96,0,96,0,110,0,119,0,99,0,99,0,99,0, + 99,0,99,0,247,128,4,12,12,5,0,0,96,96,0,0, + 224,96,96,96,96,96,96,240,4,15,15,5,255,253,48,48, + 0,0,112,48,48,48,48,48,48,48,48,176,224,9,12,24, + 10,0,0,224,0,96,0,96,0,96,0,111,128,102,0,108, + 0,120,0,124,0,102,0,99,0,247,128,4,12,12,5,0, + 0,224,96,96,96,96,96,96,96,96,96,96,240,14,8,16, + 15,0,0,238,112,115,152,99,24,99,24,99,24,99,24,99, + 24,247,188,9,8,16,10,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,7,8,8,8,0,0,56, + 108,198,198,198,198,108,56,8,11,11,9,0,253,220,102,99, + 99,99,99,102,124,96,96,240,8,11,11,9,0,253,57,102, + 198,198,198,198,102,62,6,6,15,7,8,8,7,0,0,236, + 118,102,96,96,96,96,240,6,8,8,8,0,0,116,204,196, + 112,56,140,204,184,6,11,11,7,0,0,32,32,96,248,96, + 96,96,96,100,100,56,9,8,16,10,0,0,231,0,99,0, + 99,0,99,0,99,0,99,0,99,0,61,128,9,8,16,9, + 0,0,247,128,99,0,50,0,54,0,28,0,28,0,8,0, + 8,0,13,8,16,13,0,0,239,120,102,48,51,32,51,96, + 29,192,29,192,8,128,8,128,8,8,8,9,0,0,247,98, + 52,56,28,44,70,239,8,11,11,9,0,253,247,98,54,52, + 28,28,8,8,24,208,224,6,8,8,8,1,0,252,140,152, + 48,48,100,196,252,3,14,14,6,1,254,32,64,64,64,64, + 64,128,64,64,64,64,64,64,32,1,12,12,10,4,0,128, + 128,128,128,128,128,128,128,128,128,128,128,3,14,14,6,1, + 254,128,64,64,64,64,64,32,64,64,64,64,64,64,128,8, + 2,2,10,1,3,115,206,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,1,1,2,12, + 12,5,1,253,192,192,0,64,64,64,64,192,192,192,192,192, + 6,12,12,9,1,254,4,4,56,76,204,144,144,228,100,56, + 64,64,9,12,24,9,0,0,30,0,49,0,35,0,35,0, + 48,0,16,0,254,0,16,0,16,0,112,128,191,0,78,0, + 7,8,8,9,1,2,186,108,198,130,130,198,108,186,9,12, + 24,9,0,0,243,128,97,0,34,0,50,0,20,0,20,0, + 62,0,8,0,62,0,8,0,8,0,62,0,1,12,12,10, + 4,0,128,128,128,128,128,0,0,128,128,128,128,128,6,15, + 15,8,1,253,56,72,64,96,48,88,140,132,196,104,48,24, + 8,72,112,5,2,2,5,0,9,216,216,12,12,24,12,0, + 0,31,128,48,192,71,32,205,176,152,144,144,16,144,16,152, + 144,205,176,71,32,48,192,31,128,5,7,7,6,0,5,224, + 144,112,144,232,0,240,6,5,5,7,0,1,36,72,216,72, + 36,8,5,5,10,1,1,255,1,1,1,1,4,1,1,5, + 0,3,240,12,12,24,12,0,0,31,128,48,192,95,32,201, + 176,137,144,143,16,137,16,137,144,200,176,92,224,48,192,31, + 128,5,1,1,5,0,9,248,5,5,5,7,1,7,112,136, + 136,136,112,7,9,9,10,1,0,16,16,16,254,16,16,16, + 0,254,5,7,7,6,0,5,112,216,136,16,32,72,248,5, + 7,7,6,0,5,112,216,136,48,136,216,112,3,3,3,5, + 0,9,32,96,128,10,11,22,10,0,253,231,0,99,0,99, + 0,99,0,99,0,99,0,99,0,125,192,96,0,96,0,96, + 0,8,15,15,10,0,253,127,234,202,202,202,234,122,10,10, + 10,10,10,10,10,31,2,2,2,5,1,3,192,192,3,4, + 4,5,1,253,64,64,32,192,3,7,7,6,1,5,64,192, + 64,64,64,64,224,4,7,7,5,0,5,96,144,144,144,96, + 0,240,6,5,5,7,0,1,144,72,108,72,144,11,12,24, + 14,1,0,64,64,192,192,65,128,65,0,66,0,70,64,236, + 192,9,64,18,64,51,224,96,64,64,224,11,12,24,13,1, + 0,64,128,193,128,67,0,66,0,68,0,77,192,251,96,18, + 32,32,192,97,0,195,32,131,224,13,12,24,14,0,0,112, + 24,216,48,136,96,48,192,136,128,217,144,115,48,6,80,4, + 144,12,248,24,16,48,56,7,12,12,7,0,253,24,24,0, + 16,16,48,96,192,196,206,100,56,11,16,32,12,0,0,24, + 0,12,0,2,0,0,0,4,0,4,0,14,0,14,0,22, + 0,19,0,19,0,63,128,33,128,65,128,64,192,243,224,11, + 16,32,12,0,0,3,0,6,0,8,0,0,0,4,0,4, + 0,14,0,14,0,22,0,19,0,19,0,63,128,33,128,65, + 128,64,192,243,224,11,16,32,12,0,0,4,0,14,0,17, + 0,0,0,4,0,4,0,14,0,14,0,22,0,19,0,19, + 0,63,128,33,128,65,128,64,192,243,224,11,15,30,12,0, + 0,29,0,46,0,0,0,4,0,4,0,14,0,14,0,22, + 0,19,0,19,0,63,128,33,128,65,128,64,192,243,224,11, + 15,30,12,0,0,18,0,18,0,0,0,4,0,4,0,14, + 0,14,0,22,0,19,0,19,0,63,128,33,128,65,128,64, + 192,243,224,11,16,32,12,0,0,12,0,18,0,12,0,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,16,12,24,17,0,0,15, + 255,2,195,2,193,4,193,4,200,8,248,8,216,31,201,16, + 193,32,193,32,195,251,255,10,15,30,12,1,253,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,8,0,4,0,24,0,10,16,32,12,0, + 0,24,0,12,0,2,0,0,0,255,192,48,192,48,64,48, + 64,50,0,62,0,54,0,50,0,48,64,48,64,48,192,255, + 192,10,16,32,12,0,0,3,0,6,0,8,0,0,0,255, + 192,48,192,48,64,48,64,50,0,62,0,54,0,50,0,48, + 64,48,64,48,192,255,192,10,16,32,12,0,0,4,0,14, + 0,17,0,0,0,255,192,48,192,48,64,48,64,50,0,62, + 0,54,0,50,0,48,64,48,64,48,192,255,192,10,15,30, + 12,0,0,17,0,17,0,0,0,255,192,48,192,48,64,48, + 64,50,0,62,0,54,0,50,0,48,64,48,64,48,192,255, + 192,6,16,16,7,0,0,192,96,16,0,252,48,48,48,48, + 48,48,48,48,48,48,252,6,16,16,7,0,0,12,24,32, + 0,252,48,48,48,48,48,48,48,48,48,48,252,6,16,16, + 7,0,0,32,112,136,0,252,48,48,48,48,48,48,48,48, + 48,48,252,6,15,15,7,0,0,72,72,0,252,48,48,48, + 48,48,48,48,48,48,48,252,12,12,24,13,0,0,255,0, + 49,192,48,96,48,96,48,48,124,48,48,48,48,48,48,96, + 48,96,49,192,255,0,13,15,30,13,0,0,14,64,19,128, + 0,0,240,248,56,32,60,32,44,32,46,32,39,32,35,160, + 33,160,32,224,32,224,32,96,248,32,11,16,32,13,1,0, + 24,0,12,0,2,0,0,0,14,0,49,128,96,192,96,192, + 192,96,192,96,192,96,192,96,96,192,96,192,49,128,14,0, + 11,16,32,13,1,0,1,128,3,0,4,0,0,0,14,0, + 49,128,96,192,96,192,192,96,192,96,192,96,192,96,96,192, + 96,192,49,128,14,0,11,16,32,13,1,0,4,0,14,0, + 17,0,0,0,14,0,49,128,96,192,96,192,192,96,192,96, + 192,96,192,96,96,192,96,192,49,128,14,0,11,15,30,13, + 1,0,14,128,23,0,0,0,14,0,49,128,96,192,96,192, + 192,96,192,96,192,96,192,96,96,192,96,192,49,128,14,0, + 11,15,30,13,1,0,17,0,17,0,0,0,14,0,49,128, + 96,192,96,192,192,96,192,96,192,96,192,96,96,192,96,192, + 49,128,14,0,8,8,8,10,1,0,129,66,36,24,24,36, + 66,129,11,14,28,13,1,255,0,32,14,64,49,128,97,192, + 97,64,194,96,196,96,196,96,200,96,80,192,112,192,49,128, + 78,0,128,0,13,16,32,13,0,0,12,0,6,0,1,0, + 0,0,252,248,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,48,32,48,32,24,64,15,128,13,16,32,13,0,0, + 0,192,1,128,2,0,0,0,252,248,48,32,48,32,48,32, + 48,32,48,32,48,32,48,32,48,32,48,32,24,64,15,128, + 13,16,32,13,0,0,2,0,7,0,8,128,0,0,252,248, + 48,32,48,32,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,24,64,15,128,13,15,30,13,0,0,8,128,8,128, + 0,0,252,248,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,48,32,48,32,24,64,15,128,12,16,32,12,0,0, + 1,128,3,0,4,0,0,0,252,240,48,64,24,128,24,128, + 13,0,13,0,6,0,6,0,6,0,6,0,6,0,31,128, + 11,12,24,11,0,0,252,0,48,0,48,0,63,128,48,192, + 48,96,48,96,48,192,63,128,48,0,48,0,252,0,8,12, + 12,10,1,0,60,102,99,99,102,124,102,99,99,99,118,236, + 7,12,12,9,1,0,64,96,16,0,120,204,204,28,108,204, + 204,118,7,12,12,9,1,0,4,12,16,0,120,204,204,28, + 108,204,204,118,7,12,12,9,1,0,16,56,68,0,120,204, + 204,28,108,204,204,118,7,11,11,9,1,0,52,88,0,120, + 204,204,28,108,204,204,118,7,11,11,9,1,0,72,72,0, + 120,204,204,28,108,204,204,118,7,13,13,9,1,0,48,72, + 72,48,0,120,204,204,28,108,204,204,118,12,8,16,13,0, + 0,121,192,206,32,198,48,31,240,102,0,198,16,207,32,121, + 192,6,11,11,7,0,253,56,108,204,192,192,196,108,56,32, + 16,96,7,12,12,8,0,0,32,48,8,0,56,68,198,254, + 192,192,102,60,7,12,12,8,0,0,4,12,16,0,56,68, + 198,254,192,192,102,60,7,12,12,8,0,0,16,56,68,0, + 56,68,198,254,192,192,102,60,7,11,11,8,0,0,36,36, + 0,56,68,198,254,192,192,102,60,4,12,12,5,0,0,128, + 192,32,0,224,96,96,96,96,96,96,240,4,12,12,5,0, + 0,16,48,64,0,224,96,96,96,96,96,96,240,5,12,12, + 5,255,0,32,112,136,0,112,48,48,48,48,48,48,120,4, + 11,11,5,0,0,144,144,0,224,96,96,96,96,96,96,240, + 7,13,13,8,0,0,64,38,24,104,12,60,110,198,198,198, + 198,108,56,9,11,22,10,0,0,26,0,44,0,0,0,238, + 0,115,0,99,0,99,0,99,0,99,0,99,0,247,128,7, + 12,12,8,0,0,64,96,16,0,56,108,198,198,198,198,108, + 56,7,12,12,8,0,0,4,12,16,0,56,108,198,198,198, + 198,108,56,7,12,12,8,0,0,16,56,68,0,56,108,198, + 198,198,198,108,56,7,11,11,8,0,0,52,88,0,56,108, + 198,198,198,198,108,56,7,11,11,8,0,0,72,72,0,56, + 108,198,198,198,198,108,56,8,7,7,10,1,1,24,24,0, + 255,0,24,24,7,10,10,8,0,255,2,60,100,206,214,214, + 230,76,120,128,9,12,24,10,0,0,32,0,48,0,8,0, + 0,0,231,0,99,0,99,0,99,0,99,0,99,0,99,0, + 61,128,9,12,24,10,0,0,2,0,6,0,8,0,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,61,128, + 9,12,24,10,0,0,8,0,28,0,34,0,0,0,231,0, + 99,0,99,0,99,0,99,0,99,0,99,0,61,128,9,11, + 22,10,0,0,36,0,36,0,0,0,231,0,99,0,99,0, + 99,0,99,0,99,0,99,0,61,128,8,15,15,9,0,253, + 2,6,8,0,247,98,54,52,28,24,8,24,16,208,224,8, + 14,14,9,0,253,224,96,96,124,102,99,99,99,99,102,124, + 96,96,240,8,14,14,9,0,253,36,36,0,247,98,54,52, + 28,24,8,24,16,208,224}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--17-120-100-100-P-91-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=15 h=15 x= 4 y= 9 dx=16 dy= 0 ascent=13 len=30 + Font Bounding box w=21 h=26 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =13 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR12r[1976] U8G_SECTION(".progmem.u8g_font_ncenR12r") = { + 0,21,26,253,250,12,2,59,5,140,32,127,253,13,253,12, + 253,0,0,0,4,1,1,2,12,12,5,1,0,192,192,192, + 192,192,128,128,128,128,0,192,192,4,4,4,6,1,8,144, + 144,144,144,8,12,12,9,0,0,18,18,18,18,127,36,36, + 254,72,72,72,72,7,15,15,9,1,254,16,16,60,82,150, + 150,240,124,30,210,210,148,120,16,16,12,12,24,14,1,0, + 56,128,103,128,69,0,197,0,138,0,138,224,117,144,5,16, + 11,16,10,32,18,32,17,192,12,12,24,13,0,0,30,0, + 51,0,49,0,51,0,26,0,28,240,44,96,102,64,198,128, + 195,144,231,144,124,224,1,4,4,3,1,8,128,128,128,128, + 4,14,14,6,1,254,16,32,64,64,128,128,128,128,128,128, + 64,64,32,16,4,14,14,6,0,254,128,64,32,32,16,16, + 16,16,16,16,32,32,64,128,7,7,7,8,0,5,16,84, + 214,56,214,84,16,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,2,5,5,4,1,253,192,192,64,64,128,4, + 1,1,5,0,3,240,2,2,2,4,1,0,192,192,5,12, + 12,5,0,0,8,8,16,16,16,32,32,64,64,64,128,128, + 8,12,12,9,0,0,60,102,66,195,195,195,195,195,195,66, + 102,60,6,12,12,9,1,0,16,240,48,48,48,48,48,48, + 48,48,48,252,7,12,12,9,1,0,56,68,134,198,198,12, + 8,16,34,66,254,254,7,12,12,9,1,0,120,140,198,198, + 12,56,12,6,198,198,140,120,8,12,12,9,0,0,4,12, + 28,44,44,76,76,140,255,12,12,63,7,12,12,9,1,0, + 126,120,64,64,120,204,134,6,198,198,140,120,8,12,12,9, + 0,0,60,102,70,192,192,252,230,195,195,195,102,60,7,12, + 12,9,1,0,254,254,132,132,8,8,16,16,16,48,48,48, + 8,12,12,9,0,0,60,102,66,98,118,60,110,199,195,195, + 102,60,8,12,12,9,0,0,60,102,195,195,195,103,63,3, + 3,98,102,56,2,8,8,4,1,0,192,192,0,0,0,0, + 192,192,2,11,11,4,1,253,192,192,0,0,0,0,192,192, + 64,64,128,8,8,8,10,1,0,3,12,48,192,192,48,12, + 3,8,4,4,10,1,2,255,0,0,255,8,8,8,10,0, + 0,192,48,12,3,3,12,48,192,7,12,12,7,0,0,56, + 76,230,70,6,12,24,16,16,0,48,48,13,13,26,12,255, + 255,7,128,24,96,32,16,70,208,77,144,152,144,153,144,145, + 32,155,32,76,200,64,16,48,96,15,128,11,12,24,12,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,11,12,24,12,0,0,255, + 128,49,192,48,192,48,192,49,128,63,192,48,224,48,96,48, + 96,48,96,48,192,255,128,10,12,24,12,1,0,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,12,12,24,13,0,0,255,0,49,192,48, + 96,48,96,48,48,48,48,48,48,48,48,48,96,48,96,49, + 192,255,0,10,12,24,12,0,0,255,192,48,192,48,64,50, + 64,50,0,62,0,54,0,50,0,50,64,48,64,48,192,255, + 192,10,12,24,11,0,0,255,192,48,192,48,64,50,64,50, + 0,62,0,54,0,50,0,50,0,48,0,48,0,252,0,11, + 12,24,13,1,0,31,64,112,192,96,64,224,64,192,64,192, + 0,195,224,192,192,224,192,96,192,113,192,30,64,13,12,24, + 14,0,0,253,248,48,96,48,96,48,96,48,96,63,224,48, + 96,48,96,48,96,48,96,48,96,253,248,6,12,12,7,0, + 0,252,48,48,48,48,48,48,48,48,48,48,252,9,12,24, + 9,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,70,0,230,0,198,0,132,0,120,0,12,12,24,13,0, + 0,253,240,48,192,48,128,49,0,50,0,54,0,59,0,51, + 128,49,128,48,192,48,224,253,240,10,12,24,11,0,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,64,48, + 64,48,64,48,192,255,192,15,12,24,16,0,0,248,62,56, + 56,56,56,44,88,44,88,46,88,38,152,38,152,35,152,35, + 24,35,24,249,62,13,12,24,13,0,0,240,248,56,32,60, + 32,44,32,46,32,39,32,35,160,33,160,32,224,32,224,32, + 96,248,32,11,12,24,13,1,0,14,0,49,128,96,192,96, + 192,192,96,192,96,192,96,192,96,96,192,96,192,49,128,14, + 0,11,12,24,11,0,0,255,128,48,192,48,96,48,96,48, + 96,48,192,63,128,48,0,48,0,48,0,48,0,252,0,11, + 15,30,13,1,253,14,0,49,128,96,192,96,192,192,96,192, + 96,192,96,204,96,82,64,115,192,51,128,15,0,3,64,3, + 64,1,128,12,12,24,12,0,0,255,0,48,192,48,96,48, + 96,48,192,63,0,51,128,48,192,48,192,48,208,48,208,252, + 96,8,12,12,10,1,0,61,99,193,193,224,124,62,135,131, + 131,198,188,10,12,24,11,0,0,255,192,204,192,140,64,140, + 64,140,64,12,0,12,0,12,0,12,0,12,0,12,0,63, + 0,13,12,24,13,0,0,252,248,48,32,48,32,48,32,48, + 32,48,32,48,32,48,32,48,32,48,32,24,64,15,128,11, + 12,24,12,0,0,248,224,112,64,48,64,48,128,24,128,25, + 0,25,0,13,0,14,0,14,0,4,0,4,0,15,12,24, + 16,0,0,247,206,99,4,99,4,49,136,49,136,57,200,26, + 208,26,208,10,80,12,96,4,32,4,32,11,12,24,11,0, + 0,241,224,96,192,48,128,25,0,30,0,12,0,6,0,15, + 0,19,0,33,128,96,192,241,224,12,12,24,12,0,0,252, + 240,48,64,24,128,24,128,13,0,13,0,6,0,6,0,6, + 0,6,0,6,0,31,128,9,12,24,10,0,0,127,128,97, + 128,67,0,67,0,6,0,12,0,12,0,24,128,48,128,48, + 128,97,128,255,128,3,14,14,6,1,254,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,12,12,10,2,0,128, + 128,64,64,32,32,16,16,8,8,4,4,3,14,14,6,1, + 254,224,32,32,32,32,32,32,32,32,32,32,32,32,224,8, + 7,7,10,1,5,24,24,60,36,102,66,195,8,1,1,8, + 0,254,255,3,3,3,5,0,9,128,64,32,7,8,8,9, + 1,0,120,204,204,28,108,204,204,118,8,12,12,9,0,0, + 224,96,96,96,124,102,99,99,99,99,102,92,6,8,8,7, + 0,0,56,108,204,192,192,192,108,56,8,12,12,10,1,0, + 14,6,6,6,62,102,198,198,198,198,102,59,7,8,8,8, + 0,0,56,68,198,254,192,192,102,60,6,12,12,6,0,0, + 56,108,96,96,248,96,96,96,96,96,96,248,9,11,22,9, + 0,253,61,128,102,128,102,0,102,0,102,0,60,0,64,0, + 126,0,195,0,195,0,126,0,9,12,24,10,0,0,224,0, + 96,0,96,0,96,0,110,0,119,0,99,0,99,0,99,0, + 99,0,99,0,247,128,4,12,12,5,0,0,96,96,0,0, + 224,96,96,96,96,96,96,240,4,15,15,5,255,253,48,48, + 0,0,112,48,48,48,48,48,48,48,48,176,224,9,12,24, + 10,0,0,224,0,96,0,96,0,96,0,111,128,102,0,108, + 0,120,0,124,0,102,0,99,0,247,128,4,12,12,5,0, + 0,224,96,96,96,96,96,96,96,96,96,96,240,14,8,16, + 15,0,0,238,112,115,152,99,24,99,24,99,24,99,24,99, + 24,247,188,9,8,16,10,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,7,8,8,8,0,0,56, + 108,198,198,198,198,108,56,8,11,11,9,0,253,220,102,99, + 99,99,99,102,124,96,96,240,8,11,11,9,0,253,57,102, + 198,198,198,198,102,62,6,6,15,7,8,8,7,0,0,236, + 118,102,96,96,96,96,240,6,8,8,8,0,0,116,204,196, + 112,56,140,204,184,6,11,11,7,0,0,32,32,96,248,96, + 96,96,96,100,100,56,9,8,16,10,0,0,231,0,99,0, + 99,0,99,0,99,0,99,0,99,0,61,128,9,8,16,9, + 0,0,247,128,99,0,50,0,54,0,28,0,28,0,8,0, + 8,0,13,8,16,13,0,0,239,120,102,48,51,32,51,96, + 29,192,29,192,8,128,8,128,8,8,8,9,0,0,247,98, + 52,56,28,44,70,239,8,11,11,9,0,253,247,98,54,52, + 28,28,8,8,24,208,224,6,8,8,8,1,0,252,140,152, + 48,48,100,196,252,3,14,14,6,1,254,32,64,64,64,64, + 64,128,64,64,64,64,64,64,32,1,12,12,10,4,0,128, + 128,128,128,128,128,128,128,128,128,128,128,3,14,14,6,1, + 254,128,64,64,64,64,64,32,64,64,64,64,64,64,128,8, + 2,2,10,1,3,115,206,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--20-140-100-100-P-103-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=19 x= 4 y=11 dx=19 dy= 0 ascent=19 len=42 + Font Bounding box w=27 h=30 x=-4 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =19 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR14[5319] U8G_SECTION(".progmem.u8g_font_ncenR14") = { + 0,27,30,252,249,14,3,41,7,30,32,255,252,19,252,14, + 252,0,0,0,5,0,1,2,14,14,5,1,0,192,192,192, + 192,192,192,192,128,128,128,0,0,192,192,4,5,5,7,1, + 9,144,144,144,144,144,10,13,26,11,0,0,9,0,9,0, + 9,0,9,0,127,192,18,0,18,0,18,0,255,128,36,0, + 36,0,36,0,36,0,9,17,34,10,0,254,8,0,8,0, + 63,0,105,128,201,128,200,0,232,0,120,0,30,0,15,0, + 11,128,9,128,201,128,203,0,126,0,8,0,8,0,15,14, + 28,16,0,0,28,32,50,32,99,192,98,64,196,128,196,128, + 201,28,113,50,2,98,2,98,4,196,4,196,8,200,8,112, + 13,14,28,14,0,0,30,0,51,0,33,0,35,0,54,0, + 28,0,57,248,124,96,238,64,199,128,195,128,193,200,227,240, + 124,96,1,5,5,4,1,9,128,128,128,128,128,6,17,17, + 7,0,253,4,24,48,96,96,192,192,192,192,192,192,192,96, + 96,48,24,4,6,17,17,7,0,253,128,96,48,24,24,12, + 12,12,12,12,12,12,24,24,48,96,128,7,7,7,10,1, + 7,16,146,214,56,214,146,16,9,9,18,10,0,1,8,0, + 8,0,8,0,8,0,255,128,8,0,8,0,8,0,8,0, + 3,5,5,5,0,253,96,96,32,64,128,5,1,1,6,0, + 5,248,2,2,2,5,1,0,192,192,5,14,14,6,0,0, + 8,8,8,16,16,16,32,32,32,64,64,64,128,128,9,14, + 28,10,0,0,28,0,99,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,193,128,193,128,99,0,99,0,28,0, + 8,14,14,10,1,0,24,248,24,24,24,24,24,24,24,24, + 24,24,24,255,9,14,28,10,0,0,30,0,99,0,193,128, + 193,128,1,128,1,128,3,0,6,0,12,0,24,0,48,128, + 96,128,255,128,255,128,9,14,28,10,0,0,62,0,99,0, + 97,128,1,128,1,128,3,0,30,0,3,0,1,128,1,128, + 1,128,193,128,195,0,126,0,10,14,28,10,0,0,3,0, + 7,0,11,0,11,0,19,0,19,0,35,0,35,0,67,0, + 67,0,255,192,3,0,3,0,15,128,9,14,28,10,0,0, + 127,128,127,0,64,0,64,0,64,0,94,0,99,0,65,128, + 1,128,1,128,1,128,193,128,195,0,126,0,9,14,28,10, + 0,0,15,0,49,128,97,128,96,0,192,0,206,0,223,0, + 227,128,193,128,193,128,193,128,193,128,99,0,62,0,9,14, + 28,10,0,0,255,128,255,128,129,0,131,0,2,0,6,0, + 6,0,12,0,12,0,24,0,24,0,24,0,24,0,24,0, + 9,14,28,10,0,0,62,0,99,0,65,0,65,0,97,0, + 114,0,62,0,47,0,67,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,10,0,0,62,0,99,0,193,128,193,128, + 193,128,193,128,227,128,125,128,57,128,1,128,3,0,195,0, + 198,0,120,0,2,9,9,5,1,0,192,192,0,0,0,0, + 0,192,192,3,12,12,5,0,253,96,96,0,0,0,0,0, + 96,96,32,64,128,9,9,18,10,0,1,0,128,3,128,14, + 0,56,0,224,0,56,0,14,0,3,128,0,128,9,4,8, + 10,0,4,255,128,0,0,0,0,255,128,9,9,18,10,0, + 1,128,0,224,0,56,0,14,0,3,128,14,0,56,0,224, + 0,128,0,7,14,14,8,0,0,60,206,198,6,6,4,8, + 8,16,16,0,0,48,48,13,14,28,14,0,0,7,128,24, + 96,32,16,70,208,77,200,140,200,152,200,153,144,153,144,155, + 160,76,192,64,16,32,96,31,128,14,14,28,13,255,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,12,14,28,13,0, + 0,255,128,48,192,48,96,48,96,48,96,48,192,63,128,48, + 96,48,48,48,48,48,48,48,48,48,96,255,192,12,14,28, + 13,0,0,15,144,56,112,96,48,96,16,192,16,192,0,192, + 0,192,0,192,0,192,0,96,16,96,16,56,96,15,192,14, + 14,28,15,0,0,255,192,48,112,48,24,48,24,48,12,48, + 12,48,12,48,12,48,12,48,12,48,24,48,24,48,112,255, + 192,11,14,28,12,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,14,28,12,0,0,255,224,48,96,48,32,48, + 32,49,32,49,0,63,0,49,0,49,0,48,0,48,0,48, + 0,48,0,252,0,14,14,28,15,0,0,15,200,56,120,96, + 24,96,8,192,8,192,0,192,0,192,0,192,124,192,24,96, + 24,96,24,56,120,15,200,15,14,28,16,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,63,248,48,24,48,24,48, + 24,48,24,48,24,48,24,252,126,6,14,14,7,0,0,252, + 48,48,48,48,48,48,48,48,48,48,48,48,252,9,14,28, + 10,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,198,0,198,0,132,0,120,0,15, + 14,28,15,0,0,252,248,48,96,48,64,48,128,49,0,50, + 0,54,0,63,0,51,128,49,192,48,224,48,112,48,56,252, + 254,11,14,28,12,0,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,32,48,32,48,32,48, + 96,255,224,17,14,42,18,0,0,248,15,128,56,14,0,44, + 22,0,44,22,0,44,22,0,38,38,0,38,38,0,38,38, + 0,35,70,0,35,70,0,35,70,0,33,134,0,33,134,0, + 249,159,128,14,14,28,15,0,0,240,124,48,16,56,16,60, + 16,46,16,38,16,35,16,35,144,33,144,32,208,32,240,32, + 112,32,48,248,16,14,14,28,15,0,0,15,192,56,112,96, + 24,96,24,192,12,192,12,192,12,192,12,192,12,192,12,96, + 24,96,24,56,112,15,192,11,14,28,12,0,0,255,128,48, + 192,48,96,48,96,48,96,48,96,48,192,63,0,48,0,48, + 0,48,0,48,0,48,0,252,0,15,18,36,15,0,252,15, + 192,56,112,96,24,96,24,192,12,192,12,192,12,192,12,192, + 12,207,12,113,152,96,152,56,240,15,224,0,96,0,114,0, + 62,0,28,14,14,28,14,0,0,255,128,48,192,48,96,48, + 96,48,96,48,192,63,0,49,128,48,192,48,192,48,224,48, + 96,48,116,248,56,10,14,28,11,0,0,62,128,97,128,192, + 128,192,128,192,0,240,0,126,0,31,128,3,192,128,192,128, + 192,192,192,225,128,191,0,12,14,28,13,0,0,255,240,198, + 48,134,16,134,16,134,16,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,31,128,14,14,28,15,0,0,252, + 124,48,16,48,16,48,16,48,16,48,16,48,16,48,16,48, + 16,48,16,48,16,48,16,24,32,15,192,14,14,28,13,255, + 0,252,124,48,16,48,16,24,32,24,32,24,32,12,64,12, + 64,12,64,6,128,6,128,6,128,3,0,3,0,20,14,42, + 19,255,0,253,249,240,48,96,64,48,96,64,24,112,128,24, + 112,128,24,112,128,12,153,0,12,153,0,12,153,0,5,9, + 0,7,14,0,7,14,0,3,6,0,3,6,0,13,14,28, + 14,1,0,248,240,48,64,56,192,24,128,13,128,15,0,6, + 0,7,0,15,128,9,128,16,192,48,224,32,96,249,248,14, + 14,28,13,255,0,252,124,48,16,24,32,24,32,12,64,12, + 64,6,128,7,128,3,0,3,0,3,0,3,0,3,0,15, + 192,10,14,28,11,0,0,255,192,192,192,129,128,131,128,131, + 0,6,0,14,0,28,0,24,0,48,64,112,64,96,64,192, + 192,255,192,4,17,17,6,1,253,240,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,240,7,14,14,10,1,0, + 128,128,192,64,96,32,48,16,24,8,12,4,6,2,4,17, + 17,6,0,253,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,240,9,9,18,10,0,5,8,0,8,0,28, + 0,20,0,54,0,34,0,99,0,65,0,193,128,9,1,2, + 9,0,254,255,128,4,3,3,6,1,10,192,96,16,9,9, + 18,10,0,0,28,0,98,0,99,0,3,0,31,0,99,0, + 195,0,199,0,121,128,10,14,28,10,255,0,224,0,96,0, + 96,0,96,0,96,0,111,0,113,128,96,192,96,192,96,192, + 96,192,96,192,113,128,79,0,8,9,9,9,0,0,60,99, + 195,192,192,192,193,99,62,10,14,28,11,0,0,3,128,1, + 128,1,128,1,128,1,128,61,128,99,128,193,128,193,128,193, + 128,193,128,193,128,99,128,61,192,8,9,9,9,0,0,60, + 102,195,195,255,192,193,99,62,8,14,14,7,0,0,14,27, + 51,48,48,252,48,48,48,48,48,48,48,120,10,14,28,11, + 0,252,0,192,31,192,51,0,97,128,97,128,51,0,62,0, + 64,0,127,0,63,128,65,192,128,192,193,128,127,0,10,14, + 28,11,0,0,224,0,96,0,96,0,96,0,96,0,111,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 4,13,13,5,0,0,96,96,0,0,224,96,96,96,96,96, + 96,96,240,6,17,17,5,253,252,12,12,0,0,28,12,12, + 12,12,12,12,12,12,12,204,200,112,10,14,28,10,0,0, + 224,0,96,0,96,0,96,0,96,0,103,128,98,0,100,0, + 104,0,120,0,108,0,102,0,99,0,247,192,4,14,14,5, + 0,0,224,96,96,96,96,96,96,96,96,96,96,96,96,240, + 16,9,18,17,0,0,239,60,115,206,97,134,97,134,97,134, + 97,134,97,134,97,134,243,207,10,9,18,11,0,0,239,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 9,9,18,10,0,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,99,0,62,0,10,13,26,11,0,252,239,0, + 113,128,96,192,96,192,96,192,96,192,96,192,113,128,111,0, + 96,0,96,0,96,0,240,0,10,13,26,10,0,252,60,128, + 99,128,193,128,193,128,193,128,193,128,193,128,99,128,61,128, + 1,128,1,128,1,128,3,192,7,9,9,8,0,0,230,110, + 114,96,96,96,96,96,240,7,9,9,8,0,0,122,198,130, + 224,124,14,130,198,188,6,12,12,6,0,0,96,96,96,248, + 96,96,96,96,96,96,100,56,10,9,18,11,0,0,227,128, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,61,192, + 10,9,18,11,0,0,241,192,96,128,96,128,49,0,49,0, + 26,0,30,0,12,0,12,0,15,9,18,16,0,0,247,222, + 97,132,97,132,50,200,50,200,52,208,28,112,28,112,8,32, + 9,9,18,10,0,0,243,128,97,0,50,0,28,0,8,0, + 28,0,38,0,67,0,231,128,10,13,26,11,0,252,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,8,0, + 8,0,16,0,208,0,224,0,7,9,9,8,0,0,254,134, + 140,24,24,48,98,198,254,5,17,17,6,0,253,24,32,96, + 96,96,96,96,64,128,64,96,96,96,96,96,32,24,2,14, + 14,11,4,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,5,17,17,6,0,253,192,32,48,48,48,48,48,16, + 8,16,48,48,48,48,48,32,192,10,3,6,11,0,4,56, + 192,109,128,199,0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,5,0,1,2,14,14,5, + 1,252,192,192,0,0,64,64,64,192,192,192,192,192,192,192, + 8,13,13,10,1,254,2,2,30,103,203,200,200,208,208,115, + 62,32,32,10,14,28,11,0,0,15,0,25,128,49,128,48, + 0,48,0,24,0,255,128,12,0,12,0,12,0,12,0,120, + 64,158,64,247,128,9,9,18,12,1,3,156,128,255,128,99, + 0,193,128,193,128,193,128,99,0,255,128,156,128,14,14,28, + 15,0,0,252,124,48,16,24,32,24,32,12,64,12,64,6, + 128,31,224,3,0,3,0,31,224,3,0,3,0,15,192,2, + 14,14,10,4,0,192,192,192,192,192,0,0,0,192,192,192, + 192,192,192,8,17,17,9,0,253,60,102,70,64,96,120,62, + 79,195,227,122,60,14,6,98,102,60,6,2,2,7,0,10, + 204,204,14,14,28,15,0,0,7,128,24,96,32,16,71,136, + 72,200,144,68,144,4,144,4,144,4,72,72,71,136,32,16, + 24,96,7,128,6,8,8,7,0,6,112,136,56,200,152,108, + 0,252,8,7,7,9,0,2,17,51,102,204,102,51,17,9, + 5,10,10,0,3,255,128,0,128,0,128,0,128,0,128,5, + 1,1,6,0,5,248,14,14,28,15,0,0,7,128,24,96, + 32,16,79,136,68,200,132,68,132,196,135,132,132,132,68,72, + 78,104,32,16,24,96,7,128,6,1,1,7,0,10,252,6, + 6,6,7,0,8,120,204,132,132,204,120,9,9,18,10,0, + 1,8,0,8,0,8,0,255,128,8,0,8,0,8,0,0, + 0,255,128,6,8,8,6,0,6,120,204,140,24,48,96,196, + 252,6,8,8,6,0,6,120,204,140,56,12,140,204,120,4, + 3,3,6,1,11,48,96,128,10,13,26,11,0,252,227,192, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,125,192, + 64,0,64,0,96,0,96,0,10,17,34,11,0,253,63,192, + 233,0,201,0,201,0,201,0,201,0,233,0,57,0,9,0, + 9,0,9,0,9,0,9,0,9,0,9,0,9,0,63,192, + 2,2,2,5,1,5,192,192,4,4,4,6,0,252,64,112, + 16,224,6,8,8,6,0,6,48,240,48,48,48,48,48,252, + 5,8,8,6,0,6,112,216,136,136,216,112,0,248,8,7, + 7,9,0,2,136,204,102,51,102,204,136,15,14,28,15,0, + 0,48,32,240,32,48,64,48,64,48,128,48,128,49,24,253, + 56,2,40,2,88,4,152,4,254,8,24,8,60,14,14,28, + 15,0,0,48,32,240,32,48,64,48,64,48,128,48,128,49, + 120,253,204,2,140,2,24,4,48,4,96,8,196,8,252,15, + 14,28,15,0,0,120,32,204,32,140,64,56,64,12,128,140, + 128,205,24,121,56,2,40,2,88,4,152,4,254,8,24,8, + 60,7,14,14,8,0,252,24,24,0,0,16,16,32,32,64, + 192,192,198,230,120,14,18,36,13,255,0,12,0,6,0,1, + 0,0,0,3,0,3,0,3,0,5,128,5,128,5,128,8, + 192,8,192,31,224,16,96,16,96,32,48,32,48,248,252,14, + 18,36,13,255,0,0,192,1,128,2,0,0,0,3,0,3, + 0,3,0,5,128,5,128,5,128,8,192,8,192,31,224,16, + 96,16,96,32,48,32,48,248,252,14,18,36,13,255,0,3, + 0,7,128,8,64,0,0,3,0,3,0,3,0,5,128,5, + 128,5,128,8,192,8,192,31,224,16,96,16,96,32,48,32, + 48,248,252,14,17,34,13,255,0,7,64,11,128,0,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,14,17,34,13,255, + 0,12,192,12,192,0,0,3,0,3,0,3,0,5,128,5, + 128,5,128,8,192,8,192,31,224,16,96,16,96,32,48,32, + 48,248,252,14,19,38,13,255,0,3,0,4,128,4,128,3, + 0,0,0,3,0,3,0,3,0,5,128,5,128,5,128,8, + 192,8,192,31,224,16,96,16,96,32,48,32,48,248,252,18, + 14,42,18,255,0,7,255,192,1,96,192,2,96,64,2,96, + 64,4,98,64,4,98,0,8,126,0,8,98,0,31,226,0, + 16,96,64,32,96,64,32,96,64,96,96,192,241,255,192,12, + 18,36,13,0,252,15,144,56,112,96,48,96,16,192,16,192, + 0,192,0,192,0,192,0,192,0,96,16,96,16,56,96,15, + 192,4,0,7,0,1,0,14,0,11,18,36,12,0,0,24, + 0,12,0,2,0,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,18,36,12,0,0,3,0,6,0,8,0,0, + 0,255,224,48,96,48,32,48,32,49,32,49,0,63,0,49, + 0,49,0,48,32,48,32,48,32,48,96,255,224,11,18,36, + 12,0,0,6,0,15,0,16,128,0,0,255,224,48,96,48, + 32,48,32,49,32,49,0,63,0,49,0,49,0,48,32,48, + 32,48,32,48,96,255,224,11,17,34,12,0,0,25,128,25, + 128,0,0,255,224,48,96,48,32,48,32,49,32,49,0,63, + 0,49,0,49,0,48,32,48,32,48,32,48,96,255,224,6, + 18,18,7,0,0,192,96,16,0,252,48,48,48,48,48,48, + 48,48,48,48,48,48,252,6,18,18,7,0,0,12,24,32, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,252,6, + 18,18,7,0,0,48,120,132,0,252,48,48,48,48,48,48, + 48,48,48,48,48,48,252,6,17,17,7,0,0,204,204,0, + 252,48,48,48,48,48,48,48,48,48,48,48,48,252,14,14, + 28,15,0,0,255,192,48,112,48,24,48,24,48,12,48,12, + 254,12,48,12,48,12,48,12,48,24,48,24,48,112,255,192, + 14,17,34,15,0,0,7,64,11,128,0,0,240,124,48,16, + 56,16,60,16,46,16,38,16,35,16,35,144,33,144,32,208, + 32,240,32,112,32,48,248,16,14,18,36,15,0,0,12,0, + 6,0,1,0,0,0,15,192,56,112,96,24,96,24,192,12, + 192,12,192,12,192,12,192,12,192,12,96,24,96,24,56,112, + 15,192,14,18,36,15,0,0,0,192,1,128,2,0,0,0, + 15,192,56,112,96,24,96,24,192,12,192,12,192,12,192,12, + 192,12,192,12,96,24,96,24,56,112,15,192,14,18,36,15, + 0,0,3,0,7,128,8,64,0,0,15,192,56,112,96,24, + 96,24,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 96,24,56,112,15,192,14,17,34,15,0,0,7,64,11,128, + 0,0,15,192,56,112,96,24,96,24,192,12,192,12,192,12, + 192,12,192,12,192,12,96,24,96,24,56,112,15,192,14,17, + 34,15,0,0,12,192,12,192,0,0,15,192,56,112,96,24, + 96,24,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 96,24,56,112,15,192,10,9,18,10,0,1,192,192,97,128, + 51,0,30,0,12,0,30,0,51,0,97,128,192,192,15,14, + 28,15,255,0,7,228,28,56,48,28,48,44,96,70,96,134, + 97,6,98,6,100,6,104,6,48,12,48,12,92,56,135,224, + 14,18,36,15,0,0,6,0,3,0,0,128,0,0,252,124, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,48,16,48,16,24,32,15,192,14,18,36,15,0,0, + 0,192,1,128,2,0,0,0,252,124,48,16,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 24,32,15,192,14,18,36,15,0,0,3,0,7,128,8,64, + 0,0,252,124,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,24,32,15,192,14,17, + 34,15,0,0,12,96,12,96,0,0,252,124,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,24,32,15,192,14,18,36,13,255,0,0,96,0,192, + 1,0,0,0,252,124,48,16,24,32,24,32,12,64,12,64, + 6,128,7,128,3,0,3,0,3,0,3,0,3,0,15,192, + 11,14,28,12,0,0,252,0,48,0,48,0,63,128,48,192, + 48,96,48,96,48,96,48,96,48,192,63,0,48,0,48,0, + 252,0,9,14,28,10,0,0,30,0,35,0,97,0,97,0, + 99,0,110,0,99,0,97,128,97,128,97,128,97,128,109,128, + 109,0,230,0,9,13,26,10,0,0,48,0,24,0,4,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,13,26,10,0,0,6,0,12,0,16,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,13,26,10,0,0,24,0,60,0,66,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,12,24,10,0,0,58,0,92,0,0,0, + 28,0,98,0,99,0,3,0,31,0,99,0,195,0,199,0, + 121,128,9,12,24,10,0,0,102,0,102,0,0,0,28,0, + 98,0,99,0,3,0,31,0,99,0,195,0,199,0,121,128, + 9,14,28,10,0,0,24,0,36,0,36,0,24,0,0,0, + 28,0,98,0,99,0,3,0,31,0,99,0,195,0,199,0, + 121,128,15,9,18,16,0,0,28,248,99,140,99,6,3,6, + 31,254,99,0,195,0,197,134,120,252,8,13,13,9,0,252, + 60,99,195,192,192,192,193,99,62,16,28,4,56,8,13,13, + 9,0,0,96,48,8,0,60,102,195,195,255,192,193,99,62, + 8,13,13,9,0,0,6,12,16,0,60,102,195,195,255,192, + 193,99,62,8,13,13,9,0,0,24,60,66,0,60,102,195, + 195,255,192,193,99,62,8,12,12,9,0,0,102,102,0,60, + 102,195,195,255,192,193,99,62,5,13,13,5,255,0,192,96, + 16,0,112,48,48,48,48,48,48,48,120,5,13,13,5,0, + 0,24,48,64,0,224,96,96,96,96,96,96,96,240,6,13, + 13,5,255,0,48,120,132,0,112,48,48,48,48,48,48,48, + 120,6,12,12,5,255,0,204,204,0,112,48,48,48,48,48, + 48,48,120,9,14,28,10,0,0,192,0,54,0,56,0,204, + 0,6,0,63,0,99,0,193,128,193,128,193,128,193,128,193, + 128,99,0,62,0,10,12,24,11,0,0,60,128,79,0,0, + 0,239,0,115,128,97,128,97,128,97,128,97,128,97,128,97, + 128,243,192,9,13,26,10,0,0,96,0,48,0,8,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,13,26,10,0,0,3,0,6,0,8,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,13,26,10,0,0,24,0,60,0,66,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,12,24,10,0,0,58,0,92,0,0,0,62, + 0,99,0,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,9,12,24,10,0,0,99,0,99,0,0,0,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,99,0,62,0,10, + 7,14,10,0,2,12,0,12,0,0,0,255,192,0,0,12, + 0,12,0,9,12,24,10,0,254,0,128,62,128,99,0,197, + 128,197,128,201,128,201,128,209,128,115,0,62,0,64,0,64, + 0,10,13,26,11,0,0,48,0,24,0,4,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,13,26,11,0,0,3,0,6,0,8,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,13,26,11,0,0,12,0,30,0,33,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,12,24,11,0,0,51,0,51,0,0,0,227,192,97, + 128,97,128,97,128,97,128,97,128,97,128,115,128,61,192,10, + 17,34,11,0,252,3,0,6,0,8,0,0,0,241,192,96, + 128,49,0,49,0,26,0,26,0,12,0,12,0,8,0,8, + 0,16,0,208,0,224,0,10,18,36,11,0,252,224,0,96, + 0,96,0,96,0,96,0,111,0,113,128,96,192,96,192,96, + 192,96,192,96,192,113,128,111,0,96,0,96,0,96,0,240, + 0,10,16,32,11,0,252,51,0,51,0,0,0,241,192,96, + 128,49,0,49,0,26,0,26,0,12,0,12,0,8,0,8, + 0,16,0,208,0,224,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--20-140-100-100-P-103-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=18 x= 4 y=10 dx=19 dy= 0 ascent=15 len=42 + Font Bounding box w=27 h=30 x=-4 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR14r[2534] U8G_SECTION(".progmem.u8g_font_ncenR14r") = { + 0,27,30,252,249,14,3,41,7,30,32,127,252,15,252,14, + 252,0,0,0,5,0,1,2,14,14,5,1,0,192,192,192, + 192,192,192,192,128,128,128,0,0,192,192,4,5,5,7,1, + 9,144,144,144,144,144,10,13,26,11,0,0,9,0,9,0, + 9,0,9,0,127,192,18,0,18,0,18,0,255,128,36,0, + 36,0,36,0,36,0,9,17,34,10,0,254,8,0,8,0, + 63,0,105,128,201,128,200,0,232,0,120,0,30,0,15,0, + 11,128,9,128,201,128,203,0,126,0,8,0,8,0,15,14, + 28,16,0,0,28,32,50,32,99,192,98,64,196,128,196,128, + 201,28,113,50,2,98,2,98,4,196,4,196,8,200,8,112, + 13,14,28,14,0,0,30,0,51,0,33,0,35,0,54,0, + 28,0,57,248,124,96,238,64,199,128,195,128,193,200,227,240, + 124,96,1,5,5,4,1,9,128,128,128,128,128,6,17,17, + 7,0,253,4,24,48,96,96,192,192,192,192,192,192,192,96, + 96,48,24,4,6,17,17,7,0,253,128,96,48,24,24,12, + 12,12,12,12,12,12,24,24,48,96,128,7,7,7,10,1, + 7,16,146,214,56,214,146,16,9,9,18,10,0,1,8,0, + 8,0,8,0,8,0,255,128,8,0,8,0,8,0,8,0, + 3,5,5,5,0,253,96,96,32,64,128,5,1,1,6,0, + 5,248,2,2,2,5,1,0,192,192,5,14,14,6,0,0, + 8,8,8,16,16,16,32,32,32,64,64,64,128,128,9,14, + 28,10,0,0,28,0,99,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,193,128,193,128,99,0,99,0,28,0, + 8,14,14,10,1,0,24,248,24,24,24,24,24,24,24,24, + 24,24,24,255,9,14,28,10,0,0,30,0,99,0,193,128, + 193,128,1,128,1,128,3,0,6,0,12,0,24,0,48,128, + 96,128,255,128,255,128,9,14,28,10,0,0,62,0,99,0, + 97,128,1,128,1,128,3,0,30,0,3,0,1,128,1,128, + 1,128,193,128,195,0,126,0,10,14,28,10,0,0,3,0, + 7,0,11,0,11,0,19,0,19,0,35,0,35,0,67,0, + 67,0,255,192,3,0,3,0,15,128,9,14,28,10,0,0, + 127,128,127,0,64,0,64,0,64,0,94,0,99,0,65,128, + 1,128,1,128,1,128,193,128,195,0,126,0,9,14,28,10, + 0,0,15,0,49,128,97,128,96,0,192,0,206,0,223,0, + 227,128,193,128,193,128,193,128,193,128,99,0,62,0,9,14, + 28,10,0,0,255,128,255,128,129,0,131,0,2,0,6,0, + 6,0,12,0,12,0,24,0,24,0,24,0,24,0,24,0, + 9,14,28,10,0,0,62,0,99,0,65,0,65,0,97,0, + 114,0,62,0,47,0,67,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,10,0,0,62,0,99,0,193,128,193,128, + 193,128,193,128,227,128,125,128,57,128,1,128,3,0,195,0, + 198,0,120,0,2,9,9,5,1,0,192,192,0,0,0,0, + 0,192,192,3,12,12,5,0,253,96,96,0,0,0,0,0, + 96,96,32,64,128,9,9,18,10,0,1,0,128,3,128,14, + 0,56,0,224,0,56,0,14,0,3,128,0,128,9,4,8, + 10,0,4,255,128,0,0,0,0,255,128,9,9,18,10,0, + 1,128,0,224,0,56,0,14,0,3,128,14,0,56,0,224, + 0,128,0,7,14,14,8,0,0,60,206,198,6,6,4,8, + 8,16,16,0,0,48,48,13,14,28,14,0,0,7,128,24, + 96,32,16,70,208,77,200,140,200,152,200,153,144,153,144,155, + 160,76,192,64,16,32,96,31,128,14,14,28,13,255,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,12,14,28,13,0, + 0,255,128,48,192,48,96,48,96,48,96,48,192,63,128,48, + 96,48,48,48,48,48,48,48,48,48,96,255,192,12,14,28, + 13,0,0,15,144,56,112,96,48,96,16,192,16,192,0,192, + 0,192,0,192,0,192,0,96,16,96,16,56,96,15,192,14, + 14,28,15,0,0,255,192,48,112,48,24,48,24,48,12,48, + 12,48,12,48,12,48,12,48,12,48,24,48,24,48,112,255, + 192,11,14,28,12,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,14,28,12,0,0,255,224,48,96,48,32,48, + 32,49,32,49,0,63,0,49,0,49,0,48,0,48,0,48, + 0,48,0,252,0,14,14,28,15,0,0,15,200,56,120,96, + 24,96,8,192,8,192,0,192,0,192,0,192,124,192,24,96, + 24,96,24,56,120,15,200,15,14,28,16,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,63,248,48,24,48,24,48, + 24,48,24,48,24,48,24,252,126,6,14,14,7,0,0,252, + 48,48,48,48,48,48,48,48,48,48,48,48,252,9,14,28, + 10,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,198,0,198,0,132,0,120,0,15, + 14,28,15,0,0,252,248,48,96,48,64,48,128,49,0,50, + 0,54,0,63,0,51,128,49,192,48,224,48,112,48,56,252, + 254,11,14,28,12,0,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,32,48,32,48,32,48, + 96,255,224,17,14,42,18,0,0,248,15,128,56,14,0,44, + 22,0,44,22,0,44,22,0,38,38,0,38,38,0,38,38, + 0,35,70,0,35,70,0,35,70,0,33,134,0,33,134,0, + 249,159,128,14,14,28,15,0,0,240,124,48,16,56,16,60, + 16,46,16,38,16,35,16,35,144,33,144,32,208,32,240,32, + 112,32,48,248,16,14,14,28,15,0,0,15,192,56,112,96, + 24,96,24,192,12,192,12,192,12,192,12,192,12,192,12,96, + 24,96,24,56,112,15,192,11,14,28,12,0,0,255,128,48, + 192,48,96,48,96,48,96,48,96,48,192,63,0,48,0,48, + 0,48,0,48,0,48,0,252,0,15,18,36,15,0,252,15, + 192,56,112,96,24,96,24,192,12,192,12,192,12,192,12,192, + 12,207,12,113,152,96,152,56,240,15,224,0,96,0,114,0, + 62,0,28,14,14,28,14,0,0,255,128,48,192,48,96,48, + 96,48,96,48,192,63,0,49,128,48,192,48,192,48,224,48, + 96,48,116,248,56,10,14,28,11,0,0,62,128,97,128,192, + 128,192,128,192,0,240,0,126,0,31,128,3,192,128,192,128, + 192,192,192,225,128,191,0,12,14,28,13,0,0,255,240,198, + 48,134,16,134,16,134,16,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,31,128,14,14,28,15,0,0,252, + 124,48,16,48,16,48,16,48,16,48,16,48,16,48,16,48, + 16,48,16,48,16,48,16,24,32,15,192,14,14,28,13,255, + 0,252,124,48,16,48,16,24,32,24,32,24,32,12,64,12, + 64,12,64,6,128,6,128,6,128,3,0,3,0,20,14,42, + 19,255,0,253,249,240,48,96,64,48,96,64,24,112,128,24, + 112,128,24,112,128,12,153,0,12,153,0,12,153,0,5,9, + 0,7,14,0,7,14,0,3,6,0,3,6,0,13,14,28, + 14,1,0,248,240,48,64,56,192,24,128,13,128,15,0,6, + 0,7,0,15,128,9,128,16,192,48,224,32,96,249,248,14, + 14,28,13,255,0,252,124,48,16,24,32,24,32,12,64,12, + 64,6,128,7,128,3,0,3,0,3,0,3,0,3,0,15, + 192,10,14,28,11,0,0,255,192,192,192,129,128,131,128,131, + 0,6,0,14,0,28,0,24,0,48,64,112,64,96,64,192, + 192,255,192,4,17,17,6,1,253,240,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,240,7,14,14,10,1,0, + 128,128,192,64,96,32,48,16,24,8,12,4,6,2,4,17, + 17,6,0,253,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,240,9,9,18,10,0,5,8,0,8,0,28, + 0,20,0,54,0,34,0,99,0,65,0,193,128,9,1,2, + 9,0,254,255,128,4,3,3,6,1,10,192,96,16,9,9, + 18,10,0,0,28,0,98,0,99,0,3,0,31,0,99,0, + 195,0,199,0,121,128,10,14,28,10,255,0,224,0,96,0, + 96,0,96,0,96,0,111,0,113,128,96,192,96,192,96,192, + 96,192,96,192,113,128,79,0,8,9,9,9,0,0,60,99, + 195,192,192,192,193,99,62,10,14,28,11,0,0,3,128,1, + 128,1,128,1,128,1,128,61,128,99,128,193,128,193,128,193, + 128,193,128,193,128,99,128,61,192,8,9,9,9,0,0,60, + 102,195,195,255,192,193,99,62,8,14,14,7,0,0,14,27, + 51,48,48,252,48,48,48,48,48,48,48,120,10,14,28,11, + 0,252,0,192,31,192,51,0,97,128,97,128,51,0,62,0, + 64,0,127,0,63,128,65,192,128,192,193,128,127,0,10,14, + 28,11,0,0,224,0,96,0,96,0,96,0,96,0,111,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 4,13,13,5,0,0,96,96,0,0,224,96,96,96,96,96, + 96,96,240,6,17,17,5,253,252,12,12,0,0,28,12,12, + 12,12,12,12,12,12,12,204,200,112,10,14,28,10,0,0, + 224,0,96,0,96,0,96,0,96,0,103,128,98,0,100,0, + 104,0,120,0,108,0,102,0,99,0,247,192,4,14,14,5, + 0,0,224,96,96,96,96,96,96,96,96,96,96,96,96,240, + 16,9,18,17,0,0,239,60,115,206,97,134,97,134,97,134, + 97,134,97,134,97,134,243,207,10,9,18,11,0,0,239,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 9,9,18,10,0,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,99,0,62,0,10,13,26,11,0,252,239,0, + 113,128,96,192,96,192,96,192,96,192,96,192,113,128,111,0, + 96,0,96,0,96,0,240,0,10,13,26,10,0,252,60,128, + 99,128,193,128,193,128,193,128,193,128,193,128,99,128,61,128, + 1,128,1,128,1,128,3,192,7,9,9,8,0,0,230,110, + 114,96,96,96,96,96,240,7,9,9,8,0,0,122,198,130, + 224,124,14,130,198,188,6,12,12,6,0,0,96,96,96,248, + 96,96,96,96,96,96,100,56,10,9,18,11,0,0,227,128, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,61,192, + 10,9,18,11,0,0,241,192,96,128,96,128,49,0,49,0, + 26,0,30,0,12,0,12,0,15,9,18,16,0,0,247,222, + 97,132,97,132,50,200,50,200,52,208,28,112,28,112,8,32, + 9,9,18,10,0,0,243,128,97,0,50,0,28,0,8,0, + 28,0,38,0,67,0,231,128,10,13,26,11,0,252,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,8,0, + 8,0,16,0,208,0,224,0,7,9,9,8,0,0,254,134, + 140,24,24,48,98,198,254,5,17,17,6,0,253,24,32,96, + 96,96,96,96,64,128,64,96,96,96,96,96,32,24,2,14, + 14,11,4,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,5,17,17,6,0,253,192,32,48,48,48,48,48,16, + 8,16,48,48,48,48,48,32,192,10,3,6,11,0,4,56, + 192,109,128,199,0,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--25-180-100-100-P-136-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=25 h=24 x= 6 y=15 dx=25 dy= 0 ascent=24 len=72 + Font Bounding box w=31 h=37 x=-3 y=-8 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR18[7488] U8G_SECTION(".progmem.u8g_font_ncenR18") = { + 0,31,37,253,248,18,4,33,9,197,32,255,251,24,251,18, + 251,0,0,0,7,0,1,3,18,18,7,2,0,64,224,224, + 224,224,224,224,224,224,224,224,64,64,64,0,224,224,224,6, + 6,6,10,2,12,204,204,204,204,204,204,13,16,32,15,1, + 1,12,96,12,96,12,96,12,96,12,96,127,248,24,192,24, + 192,24,192,24,192,255,240,49,128,49,128,49,128,49,128,49, + 128,11,22,44,13,1,254,4,0,4,0,31,0,101,128,68, + 192,196,192,197,192,197,128,228,0,252,0,127,0,31,192,7, + 192,4,224,100,96,228,96,196,96,196,64,100,192,63,0,4, + 0,4,0,18,19,57,20,1,255,30,24,0,51,40,0,97, + 216,0,97,16,0,193,48,0,193,32,0,194,96,0,194,64, + 0,196,199,128,120,140,192,1,152,64,1,24,64,3,48,64, + 2,48,64,6,48,128,4,48,128,12,49,0,8,30,0,8, + 0,0,18,18,54,20,1,0,7,192,0,12,224,0,24,96, + 0,24,96,0,24,96,0,24,192,0,13,128,0,14,0,0, + 30,63,128,103,30,0,99,140,0,193,200,0,192,232,0,192, + 112,0,224,56,64,112,124,64,127,207,128,31,7,0,2,6, + 6,6,2,12,192,192,192,192,192,192,7,21,21,9,1,253, + 2,12,24,48,48,96,96,192,192,192,192,192,192,192,96,96, + 48,48,24,12,2,7,21,21,8,0,253,128,96,48,24,24, + 12,12,6,6,6,6,6,6,6,12,12,24,24,48,96,128, + 7,9,9,9,1,9,16,56,146,214,56,214,146,56,16,12, + 12,24,14,1,1,6,0,6,0,6,0,6,0,6,0,255, + 240,255,240,6,0,6,0,6,0,6,0,6,0,4,7,7, + 6,1,252,96,240,240,48,32,64,128,6,2,2,8,1,6, + 252,252,3,3,3,7,2,0,224,224,224,7,18,18,8,0, + 0,6,6,6,12,12,12,24,24,24,48,48,48,96,96,96, + 192,192,192,11,18,36,13,1,0,14,0,17,0,49,128,32, + 128,96,192,96,192,224,224,224,224,224,224,224,224,224,224,224, + 224,96,192,96,192,32,128,49,128,17,0,14,0,8,18,18, + 13,3,0,8,56,248,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,11,18,36,13,1,0,31,0,113,192,64, + 192,224,224,224,224,64,224,0,192,1,192,1,128,3,0,6, + 0,12,0,24,0,48,32,96,32,192,96,255,224,255,224,11, + 18,36,13,1,0,31,0,99,128,193,192,225,192,225,192,65, + 128,1,128,3,0,31,0,1,128,0,192,0,224,64,224,224, + 224,224,192,193,192,97,128,30,0,12,18,36,13,0,0,0, + 64,0,192,1,192,3,192,6,192,12,192,8,192,24,192,48, + 192,96,192,64,192,192,192,128,192,255,240,0,192,0,192,0, + 192,3,240,11,18,36,13,1,0,127,192,127,128,64,0,64, + 0,64,0,64,0,64,0,95,0,99,128,0,192,0,192,0, + 224,96,224,224,224,224,192,64,192,97,128,31,0,11,18,36, + 13,1,0,15,128,56,224,32,224,96,96,96,0,96,0,224, + 0,239,0,241,128,224,192,224,192,224,224,224,224,96,224,96, + 192,96,192,49,128,31,0,10,18,36,13,2,0,255,192,255, + 192,128,128,129,128,1,0,3,0,3,0,2,0,6,0,6, + 0,4,0,12,0,12,0,12,0,28,0,28,0,28,0,8, + 0,11,18,36,13,1,0,31,0,49,128,32,128,96,192,96, + 192,112,192,57,128,63,0,31,0,55,128,97,192,192,224,192, + 96,192,96,192,96,96,192,113,192,31,0,11,18,36,13,1, + 0,31,0,49,128,112,192,96,192,224,224,224,224,224,224,96, + 224,112,224,49,224,30,224,0,224,0,192,0,192,193,192,225, + 128,227,128,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,7,2,252,224,224,224, + 0,0,0,0,0,0,96,240,240,48,32,64,128,12,12,24, + 14,1,1,0,48,0,240,3,192,15,0,60,0,240,0,240, + 0,60,0,15,0,3,192,0,240,0,48,12,6,12,15,1, + 4,255,240,255,240,0,0,0,0,255,240,255,240,12,12,24, + 14,1,1,192,0,240,0,60,0,15,0,3,192,0,240,0, + 240,3,192,15,0,60,0,240,0,192,0,10,18,36,12,1, + 0,30,0,99,128,193,192,225,192,225,192,1,192,3,128,7, + 0,14,0,12,0,24,0,16,0,16,0,0,0,0,0,56, + 0,56,0,56,0,17,18,54,19,1,0,1,248,0,6,6, + 0,24,3,0,16,1,128,96,216,128,99,56,128,198,24,128, + 198,24,128,204,24,128,204,49,0,204,49,0,204,114,0,196, + 180,0,195,56,0,96,1,0,96,2,0,24,12,0,31,248, + 0,19,18,54,19,0,0,0,64,0,0,96,0,0,224,0, + 0,240,0,1,48,0,1,56,0,2,24,0,2,28,0,4, + 12,0,4,12,0,8,14,0,15,254,0,16,6,0,16,7, + 0,32,3,0,32,3,128,96,3,128,248,15,224,14,18,36, + 18,2,0,255,192,48,112,48,48,48,56,48,56,48,56,48, + 48,48,96,63,240,48,56,48,24,48,28,48,28,48,28,48, + 28,48,24,48,56,255,224,15,18,36,17,1,0,7,242,28, + 30,56,6,48,2,112,2,96,2,224,0,224,0,224,0,224, + 0,224,0,224,0,96,2,112,2,48,6,56,4,28,28,7, + 240,16,18,36,20,2,0,255,224,48,56,48,12,48,12,48, + 6,48,6,48,7,48,7,48,7,48,7,48,7,48,7,48, + 6,48,6,48,12,48,12,48,56,255,224,13,18,36,16,1, + 0,255,248,48,56,48,24,48,8,48,8,48,136,48,128,49, + 128,63,128,49,128,48,128,48,128,48,8,48,8,48,8,48, + 24,48,56,255,248,13,18,36,16,1,0,255,248,48,56,48, + 24,48,8,48,8,48,136,48,128,49,128,63,128,49,128,48, + 128,48,128,48,0,48,0,48,0,48,0,48,0,252,0,17, + 18,54,18,1,0,7,250,0,28,30,0,48,6,0,48,6, + 0,112,2,0,96,2,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,63,128,224,6,0,96,6,0,112,6,0,48, + 6,0,48,14,0,28,30,0,7,242,0,17,18,54,21,2, + 0,252,31,128,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,63,254,0,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,252,31,128,6,18,18,9,2,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,11, + 18,36,14,1,0,7,224,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,97,128,241,128,225, + 128,193,128,193,128,99,0,62,0,18,18,54,20,2,0,252, + 127,0,48,28,0,48,24,0,48,48,0,48,96,0,48,192, + 0,49,128,0,51,0,0,55,0,0,63,128,0,57,192,0, + 48,224,0,48,112,0,48,56,0,48,28,0,48,14,0,48, + 7,0,252,31,192,13,18,36,16,2,0,254,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,8,48,24,48,56,255,248,20, + 18,54,23,1,0,252,1,240,60,1,192,30,3,192,22,2, + 192,23,2,192,19,2,192,19,4,192,19,132,192,17,132,192, + 17,136,192,17,200,192,16,200,192,16,208,192,16,240,192,16, + 112,192,16,96,192,56,96,192,254,35,240,19,18,54,21,1, + 0,248,15,224,60,3,128,28,1,0,30,1,0,23,1,0, + 19,129,0,17,129,0,16,193,0,16,225,0,16,97,0,16, + 49,0,16,57,0,16,29,0,16,15,0,16,7,0,16,7, + 0,56,3,0,254,1,0,17,18,54,19,1,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,13,18,36,16,2,0,255,192,48,112,48,48,48, + 56,48,56,48,56,48,56,48,48,48,112,63,192,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,17,22,66, + 19,1,252,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,227,195,128,100,99,0,104,39,0,56,54,0, + 56,22,0,28,28,0,7,248,0,0,24,128,0,12,128,0, + 15,0,0,6,0,15,18,36,18,2,0,255,192,48,112,48, + 48,48,56,48,56,48,56,48,48,48,96,63,128,49,192,48, + 224,48,96,48,112,48,112,48,50,48,50,48,60,252,28,13, + 18,36,15,1,0,31,144,112,240,64,48,192,48,192,16,224, + 16,120,0,62,0,15,128,3,224,0,240,0,56,128,24,128, + 24,192,24,192,48,240,112,159,192,14,18,36,17,1,0,255, + 252,227,28,195,12,131,4,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,224,16,18,36,19,2,0,252,31,48,14,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,56,12,24,8,30,56,7,224,18,18,54, + 18,0,0,254,7,192,56,1,0,24,1,0,28,2,0,28, + 2,0,12,2,0,14,4,0,6,4,0,7,8,0,7,8, + 0,3,8,0,3,144,0,1,144,0,1,160,0,1,224,0, + 0,224,0,0,192,0,0,64,0,25,18,72,25,0,0,254, + 63,143,128,56,14,2,0,56,14,2,0,24,14,2,0,24, + 22,4,0,28,23,4,0,12,19,4,0,12,19,4,0,14, + 35,136,0,6,33,136,0,6,33,136,0,7,65,208,0,3, + 64,208,0,3,192,240,0,3,128,240,0,1,128,96,0,1, + 128,96,0,0,128,32,0,19,18,54,19,0,0,127,143,128, + 30,6,0,14,4,0,7,8,0,7,16,0,3,144,0,1, + 160,0,1,192,0,0,224,0,0,224,0,1,112,0,1,56, + 0,2,28,0,4,28,0,4,14,0,8,7,0,24,7,128, + 252,31,224,16,18,36,17,0,0,252,63,56,12,24,8,28, + 24,12,16,14,48,6,32,7,96,3,64,3,192,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,7,224,14,18,36, + 16,1,0,127,252,112,24,96,56,64,48,64,96,0,224,0, + 192,1,128,3,128,3,0,6,0,14,0,28,0,24,4,48, + 4,112,12,96,28,255,252,5,21,21,7,2,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,248,10,18,36,11,0,0,192,0,192,0,96,0,96,0, + 48,0,48,0,24,0,24,0,12,0,12,0,6,0,6,0, + 3,0,3,0,1,128,1,128,0,192,0,192,5,21,21,7, + 0,253,248,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,248,10,10,20,12,1,8,12,0,12, + 0,30,0,30,0,51,0,51,0,97,128,97,128,192,192,192, + 192,12,2,4,12,0,253,255,240,255,240,5,4,4,8,1, + 14,192,224,48,8,12,12,24,13,1,0,31,0,113,128,112, + 192,96,192,0,192,7,192,56,192,96,192,192,192,192,192,225, + 240,126,96,13,18,36,14,0,0,240,0,48,0,48,0,48, + 0,48,0,48,0,55,192,60,112,56,48,48,56,48,24,48, + 24,48,24,48,24,48,56,56,48,60,112,39,192,10,12,24, + 12,1,0,31,0,113,192,97,192,224,192,192,0,192,0,192, + 0,192,0,224,0,96,64,112,192,31,128,13,18,36,14,1, + 0,1,224,0,96,0,96,0,96,0,96,0,96,30,96,113, + 224,96,224,224,96,192,96,192,96,192,96,192,96,224,96,96, + 224,113,224,31,120,11,12,24,13,1,0,31,0,113,192,96, + 192,224,224,192,96,255,224,192,0,192,0,224,0,96,64,112, + 192,31,128,9,18,36,8,1,0,15,0,25,128,49,128,48, + 0,48,0,48,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,13,17,34, + 12,0,251,31,56,49,216,96,192,96,192,96,192,96,192,49, + 128,31,0,48,0,96,0,63,0,31,192,96,224,192,96,192, + 96,224,192,127,128,14,18,36,14,0,0,240,0,48,0,48, + 0,48,0,48,0,48,0,49,192,55,224,56,112,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,6, + 18,18,8,1,0,48,48,48,0,0,0,240,48,48,48,48, + 48,48,48,48,48,48,252,7,23,23,8,254,251,6,6,6, + 0,0,0,30,6,6,6,6,6,6,6,6,6,6,6,6, + 6,198,204,120,14,18,36,15,1,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,240,48,192,49,128,51,0,54,0, + 62,0,55,0,51,128,49,192,48,224,48,112,252,252,6,18, + 18,8,1,0,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,22,12,36,22,0,0,241,193,192,55, + 231,224,56,120,112,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,252, + 14,12,24,14,0,0,241,192,55,224,56,112,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,11,12, + 24,13,1,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,13,17,34,14, + 0,251,247,192,60,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,56,56,48,60,112,55,192,48,0,48,0,48,0, + 48,0,252,0,13,17,34,14,1,251,30,32,113,224,96,224, + 224,96,192,96,192,96,192,96,192,96,224,96,96,224,113,224, + 31,96,0,96,0,96,0,96,0,96,1,248,10,12,24,10, + 0,0,243,128,53,192,56,192,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,9,12,24,11,1,0, + 61,0,103,0,195,0,193,0,224,0,124,0,31,0,3,128, + 129,128,193,128,227,0,190,0,8,16,16,10,1,0,16,16, + 48,112,255,48,48,48,48,48,48,48,49,49,57,30,14,12, + 24,14,0,0,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,56,112,31,176,14,60,15,12,24,13, + 255,0,252,126,48,24,48,16,56,48,24,32,28,96,12,64, + 14,192,6,128,7,128,3,0,3,0,19,12,36,17,255,0, + 252,243,224,48,96,128,48,96,128,48,112,128,56,177,0,24, + 177,0,24,177,0,29,58,0,13,26,0,13,26,0,14,28, + 0,6,12,0,13,12,24,12,0,0,248,240,112,96,56,192, + 25,128,15,0,7,0,7,0,13,128,24,192,48,224,96,112, + 240,248,13,17,34,12,255,251,120,56,48,16,56,32,24,32, + 24,96,28,64,12,192,14,128,6,128,7,128,3,0,3,0, + 2,0,2,0,196,0,236,0,120,0,9,12,24,11,1,0, + 255,128,195,128,135,0,134,0,12,0,28,0,24,0,48,0, + 112,128,224,128,193,128,255,128,6,21,21,8,1,253,12,16, + 48,48,48,48,48,48,48,32,192,32,48,48,48,48,48,48, + 48,16,12,2,18,18,15,6,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,21,21,7,1, + 253,192,32,48,48,48,48,48,48,48,16,12,16,48,48,48, + 48,48,48,48,32,192,12,4,8,14,1,6,60,48,126,112, + 231,224,195,192,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,7,0,1,3,19,19,7,2, + 251,224,224,224,0,0,64,64,64,224,224,224,224,224,224,224, + 224,224,224,64,10,18,36,14,2,253,0,64,0,64,0,128, + 31,128,113,192,97,192,226,192,194,0,196,0,196,0,200,0, + 232,0,112,64,112,192,63,0,32,0,64,0,64,0,13,18, + 36,14,0,0,3,192,14,48,12,112,28,112,28,32,28,0, + 28,0,14,0,127,192,7,0,7,0,7,0,7,0,7,0, + 118,8,140,8,143,240,115,224,13,12,24,15,1,4,71,16, + 255,248,112,112,32,32,96,48,96,48,96,48,96,48,32,32, + 112,112,255,248,71,16,16,18,36,17,0,0,252,63,56,12, + 24,8,28,24,12,16,14,48,6,32,7,96,3,64,3,192, + 31,248,1,128,1,128,31,248,1,128,1,128,1,128,15,240, + 2,18,18,15,6,0,192,192,192,192,192,192,192,0,0,0, + 192,192,192,192,192,192,192,192,10,22,44,12,1,252,31,0, + 35,128,97,128,97,128,120,0,60,0,31,0,47,128,67,192, + 193,192,192,192,224,192,240,192,124,128,63,0,15,0,3,128, + 1,128,97,128,97,128,113,0,62,0,6,2,2,8,1,15, + 204,204,18,18,54,20,1,0,3,240,0,12,12,0,16,2, + 0,32,1,0,67,240,128,70,24,128,140,8,64,140,0,64, + 140,0,64,140,0,64,140,0,64,140,8,64,70,24,128,67, + 224,128,32,1,0,16,2,0,12,12,0,3,240,0,7,10, + 10,9,1,8,120,76,4,124,196,204,118,0,0,254,10,7, + 14,12,1,3,24,192,49,128,99,0,198,0,99,0,49,128, + 24,192,12,7,14,14,1,3,255,240,255,240,0,48,0,48, + 0,48,0,48,0,48,6,2,2,8,1,6,252,252,18,18, + 54,20,1,0,3,240,0,12,12,0,16,2,0,32,1,0, + 71,240,128,67,24,128,131,24,64,131,24,64,131,16,64,131, + 224,64,131,48,64,131,24,64,67,12,128,71,142,128,32,1, + 0,16,2,0,12,12,0,3,240,0,7,1,1,9,1,15, + 254,8,7,7,9,0,11,60,102,195,195,195,102,60,12,11, + 22,14,1,2,6,0,6,0,6,0,255,240,255,240,6,0, + 6,0,6,0,0,0,255,240,255,240,7,11,11,8,0,7, + 124,198,198,6,12,24,48,96,192,194,254,7,11,11,8,0, + 7,124,198,198,6,12,60,6,6,198,198,124,5,4,4,8, + 2,15,24,56,96,128,14,17,34,14,0,251,240,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,112, + 63,176,46,60,32,0,32,0,112,0,112,0,32,0,13,22, + 44,15,1,252,31,248,115,48,227,48,227,48,227,48,227,48, + 227,48,227,48,115,48,31,48,3,48,3,48,3,48,3,48, + 3,48,3,48,3,48,3,48,3,48,3,48,3,48,7,248, + 3,3,3,7,2,5,224,224,224,4,4,4,7,1,252,64, + 112,16,224,6,11,11,8,1,7,16,48,240,48,48,48,48, + 48,48,48,252,7,10,10,9,1,8,56,68,198,198,198,68, + 56,0,0,254,10,7,14,12,1,3,198,0,99,0,49,128, + 24,192,49,128,99,0,198,0,18,18,54,19,0,0,16,4, + 0,48,12,0,240,8,0,48,24,0,48,16,0,48,48,0, + 48,32,0,48,99,0,48,71,0,48,207,0,252,139,0,1, + 155,0,1,19,0,3,51,0,2,99,0,6,127,192,4,3, + 0,12,7,128,18,18,54,19,0,0,16,8,0,48,24,0, + 240,16,0,48,48,0,48,32,0,48,96,0,48,64,0,48, + 207,128,48,152,192,49,152,192,253,0,192,3,1,128,2,3, + 0,6,6,0,4,12,0,12,24,0,8,24,64,24,31,192, + 18,18,54,19,0,0,124,4,0,198,12,0,198,8,0,6, + 24,0,12,16,0,60,48,0,6,32,0,6,99,0,198,71, + 0,198,207,0,124,139,0,1,155,0,1,19,0,3,51,0, + 2,99,0,6,127,192,4,3,0,12,7,128,10,18,36,12, + 1,252,7,0,7,0,7,0,0,0,0,0,2,0,2,0, + 6,0,12,0,28,0,56,0,112,0,224,0,225,192,225,192, + 224,192,113,128,30,0,19,23,69,19,0,0,3,0,0,3, + 128,0,0,192,0,0,32,0,0,0,0,0,64,0,0,96, + 0,0,224,0,0,240,0,1,48,0,1,56,0,2,24,0, + 2,28,0,4,12,0,4,12,0,8,14,0,15,254,0,16, + 6,0,16,7,0,32,3,0,32,3,128,96,3,128,248,15, + 224,19,23,69,19,0,0,0,24,0,0,56,0,0,96,0, + 0,128,0,0,0,0,0,64,0,0,96,0,0,224,0,0, + 240,0,1,48,0,1,56,0,2,24,0,2,28,0,4,12, + 0,4,12,0,8,14,0,15,254,0,16,6,0,16,7,0, + 32,3,0,32,3,128,96,3,128,248,15,224,19,23,69,19, + 0,0,0,96,0,0,240,0,1,152,0,2,4,0,0,0, + 0,0,64,0,0,96,0,0,224,0,0,240,0,1,48,0, + 1,56,0,2,24,0,2,28,0,4,12,0,4,12,0,8, + 14,0,15,254,0,16,6,0,16,7,0,32,3,0,32,3, + 128,96,3,128,248,15,224,19,22,66,19,0,0,1,196,0, + 3,248,0,4,112,0,0,0,0,0,64,0,0,96,0,0, + 224,0,0,240,0,1,48,0,1,56,0,2,24,0,2,28, + 0,4,12,0,4,12,0,8,14,0,15,254,0,16,6,0, + 16,7,0,32,3,0,32,3,128,96,3,128,248,15,224,19, + 22,66,19,0,0,3,24,0,3,24,0,0,0,0,0,0, + 0,0,64,0,0,96,0,0,224,0,0,240,0,1,48,0, + 1,56,0,2,24,0,2,28,0,4,12,0,4,12,0,8, + 14,0,15,254,0,16,6,0,16,7,0,32,3,0,32,3, + 128,96,3,128,248,15,224,19,24,72,19,0,0,0,224,0, + 1,16,0,1,16,0,1,16,0,0,224,0,0,0,0,0, + 64,0,0,96,0,0,224,0,0,240,0,1,48,0,1,56, + 0,2,24,0,2,28,0,4,12,0,4,12,0,8,14,0, + 15,254,0,16,6,0,16,7,0,32,3,0,32,3,128,96, + 3,128,248,15,224,24,18,54,25,0,0,1,255,255,0,38, + 7,0,102,3,0,70,1,0,198,1,0,134,17,1,134,16, + 1,6,48,3,7,240,2,6,48,7,254,16,4,6,16,12, + 6,1,8,6,1,24,6,1,16,6,3,48,6,7,252,31, + 255,15,23,46,17,1,251,7,242,28,30,56,6,48,2,112, + 2,96,2,224,0,224,0,224,0,224,0,224,0,224,0,96, + 2,112,2,48,6,56,4,28,28,7,240,3,224,1,0,1, + 192,0,64,3,128,13,23,46,16,1,0,24,0,28,0,6, + 0,1,0,0,0,255,248,48,56,48,24,48,8,48,8,48, + 136,48,128,49,128,63,128,49,128,48,128,48,128,48,8,48, + 8,48,8,48,24,48,56,255,248,13,23,46,16,1,0,0, + 96,0,224,1,128,2,0,0,0,255,248,48,56,48,24,48, + 8,48,8,48,136,48,128,49,128,63,128,49,128,48,128,48, + 128,48,8,48,8,48,8,48,24,48,56,255,248,13,23,46, + 16,1,0,3,0,7,128,12,192,16,32,0,0,255,248,48, + 56,48,24,48,8,48,8,48,136,48,128,49,128,63,128,49, + 128,48,128,48,128,48,8,48,8,48,8,48,24,48,56,255, + 248,13,22,44,16,1,0,12,96,12,96,0,0,0,0,255, + 248,48,56,48,24,48,8,48,8,48,136,48,128,49,128,63, + 128,49,128,48,128,48,128,48,8,48,8,48,8,48,24,48, + 56,255,248,6,23,23,9,2,0,192,224,48,8,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 7,23,23,9,2,0,6,14,24,32,0,252,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,8,23,23, + 9,1,0,24,60,102,129,0,126,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,126,7,22,22,9,2,0, + 198,198,0,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,16,18,36,20,2,0,255,224,48,56, + 48,12,48,12,48,6,48,6,48,7,48,7,254,7,48,7, + 48,7,48,7,48,6,48,6,48,12,48,12,48,56,255,224, + 19,22,66,21,1,0,1,196,0,3,248,0,4,112,0,0, + 0,0,248,15,224,60,3,128,28,1,0,30,1,0,23,1, + 0,19,129,0,17,129,0,16,193,0,16,225,0,16,97,0, + 16,49,0,16,57,0,16,29,0,16,15,0,16,7,0,16, + 7,0,56,3,0,254,1,0,17,23,69,19,1,0,12,0, + 0,14,0,0,3,0,0,0,128,0,0,0,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,17,23,69,19,1,0,0,24,0,0,56,0,0, + 96,0,0,128,0,0,0,0,7,240,0,28,28,0,48,6, + 0,48,6,0,112,7,0,96,3,0,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,96,3,0,112, + 7,0,48,6,0,48,6,0,28,28,0,7,240,0,17,23, + 69,19,1,0,0,192,0,1,224,0,3,48,0,4,8,0, + 0,0,0,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,96,3,0,112,7,0,48,6,0, + 48,6,0,28,28,0,7,240,0,17,22,66,19,1,0,3, + 136,0,7,240,0,8,224,0,0,0,0,7,240,0,28,28, + 0,48,6,0,48,6,0,112,7,0,96,3,0,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,224,3,128,96, + 3,0,112,7,0,48,6,0,48,6,0,28,28,0,7,240, + 0,17,22,66,19,1,0,6,48,0,6,48,0,0,0,0, + 0,0,0,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,96,3,0,112,7,0,48,6,0, + 48,6,0,28,28,0,7,240,0,13,12,24,14,1,1,192, + 24,96,48,48,96,24,192,13,128,7,0,7,0,13,128,24, + 192,48,96,96,48,192,24,17,19,57,19,1,0,0,3,0, + 7,246,0,28,28,0,48,14,0,48,30,0,96,51,0,96, + 99,0,224,67,128,224,195,128,225,131,128,227,3,128,226,3, + 128,230,3,128,108,3,0,120,3,0,48,6,0,48,6,0, + 124,28,0,199,240,0,16,23,46,19,2,0,6,0,7,0, + 1,128,0,64,0,0,252,31,48,14,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,56,12,24,8,30,56,7,224,16,23,46,19,2,0, + 0,48,0,112,0,192,1,0,0,0,252,31,48,14,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,56,12,24,8,30,56,7,224,16,23, + 46,19,2,0,1,128,3,192,6,96,8,16,0,0,252,31, + 48,14,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,56,12,24,8,30,56, + 7,224,16,22,44,19,2,0,6,48,6,48,0,0,0,0, + 252,31,48,14,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,56,12,24,8, + 30,56,7,224,16,23,46,17,0,0,0,48,0,112,0,192, + 1,0,0,0,252,63,56,12,24,8,28,24,12,16,14,48, + 6,32,7,96,3,64,3,192,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,7,224,13,18,36,16,2,0,252,0, + 48,0,48,0,48,0,63,128,48,224,48,48,48,56,48,56, + 48,56,48,56,48,48,48,224,63,128,48,0,48,0,48,0, + 252,0,12,18,36,14,1,0,15,128,24,192,48,96,48,96, + 48,96,48,96,48,192,51,192,48,96,48,48,48,48,48,48, + 48,48,48,48,54,48,54,48,54,96,243,192,12,18,36,13, + 1,0,24,0,28,0,6,0,1,0,0,0,0,0,31,0, + 113,128,112,192,96,192,0,192,7,192,56,192,96,192,192,192, + 192,192,225,240,126,96,12,18,36,13,1,0,1,128,3,128, + 6,0,8,0,0,0,0,0,31,0,113,128,112,192,96,192, + 0,192,7,192,56,192,96,192,192,192,192,192,225,240,126,96, + 12,18,36,13,1,0,6,0,15,0,25,128,32,64,0,0, + 0,0,31,0,113,128,112,192,96,192,0,192,7,192,56,192, + 96,192,192,192,192,192,225,240,126,96,12,17,34,13,1,0, + 28,64,63,128,71,0,0,0,0,0,31,0,113,128,112,192, + 96,192,0,192,7,192,56,192,96,192,192,192,192,192,225,240, + 126,96,12,16,32,13,1,0,25,128,25,128,0,0,0,0, + 31,0,113,128,112,192,96,192,0,192,7,192,56,192,96,192, + 192,192,192,192,225,240,126,96,12,19,38,13,1,0,14,0, + 17,0,17,0,17,0,14,0,0,0,0,0,31,0,113,128, + 112,192,96,192,0,192,7,192,56,192,96,192,192,192,192,192, + 225,240,126,96,19,12,36,21,1,0,31,31,0,113,241,192, + 96,224,192,0,224,224,0,192,96,7,255,224,56,192,0,96, + 192,0,192,224,0,192,224,64,227,112,192,124,31,128,10,16, + 32,12,1,252,31,0,113,192,97,192,224,192,192,0,192,0, + 192,0,192,0,224,0,96,64,112,192,31,128,8,0,14,0, + 2,0,28,0,11,18,36,13,1,0,24,0,28,0,6,0, + 1,0,0,0,0,0,31,0,113,192,96,192,224,224,192,96, + 255,224,192,0,192,0,224,0,96,64,112,192,31,128,11,18, + 36,13,1,0,1,128,3,128,6,0,8,0,0,0,0,0, + 31,0,113,192,96,192,224,224,192,96,255,224,192,0,192,0, + 224,0,96,64,112,192,31,128,11,18,36,13,1,0,6,0, + 15,0,25,128,32,64,0,0,0,0,31,0,113,192,96,192, + 224,224,192,96,255,224,192,0,192,0,224,0,96,64,112,192, + 31,128,11,16,32,13,1,0,49,128,49,128,0,0,0,0, + 31,0,113,192,96,192,224,224,192,96,255,224,192,0,192,0, + 224,0,96,64,112,192,31,128,6,18,18,8,1,0,192,224, + 48,8,0,0,240,48,48,48,48,48,48,48,48,48,48,252, + 6,18,18,8,1,0,24,56,96,128,0,0,240,48,48,48, + 48,48,48,48,48,48,48,252,8,18,18,8,0,0,24,60, + 102,129,0,0,120,24,24,24,24,24,24,24,24,24,24,126, + 6,16,16,8,1,0,204,204,0,0,240,48,48,48,48,48, + 48,48,48,48,48,252,11,18,36,13,1,0,192,0,51,0, + 28,0,28,0,102,0,3,0,31,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,31,0, + 14,17,34,14,0,0,7,16,15,224,17,192,0,0,0,0, + 241,192,55,224,56,112,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,252,11,18,36,13,1,0,24,0, + 28,0,6,0,1,0,0,0,0,0,31,0,113,192,96,192, + 224,224,192,96,192,96,192,96,192,96,224,224,96,192,113,192, + 31,0,11,18,36,13,1,0,1,128,3,128,6,0,8,0, + 0,0,0,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,11,18,36,13, + 1,0,14,0,31,0,49,128,64,64,0,0,0,0,31,0, + 113,192,96,192,224,224,192,96,192,96,192,96,192,96,224,224, + 96,192,113,192,31,0,11,17,34,13,1,0,28,64,63,128, + 71,0,0,0,0,0,31,0,113,192,96,192,224,224,192,96, + 192,96,192,96,192,96,224,224,96,192,113,192,31,0,11,16, + 32,13,1,0,49,128,49,128,0,0,0,0,31,0,113,192, + 96,192,224,224,192,96,192,96,192,96,192,96,224,224,96,192, + 113,192,31,0,12,10,20,14,1,2,6,0,6,0,0,0, + 0,0,255,240,255,240,0,0,0,0,6,0,6,0,11,16, + 32,13,1,254,0,64,0,128,31,128,113,192,98,192,226,224, + 196,96,196,96,196,96,200,96,200,224,80,192,113,192,63,0, + 32,0,64,0,14,18,36,14,0,0,12,0,14,0,3,0, + 0,128,0,0,0,0,240,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,56,112,31,176,14,60,14,18, + 36,14,0,0,0,192,1,192,3,0,4,0,0,0,0,0, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,176,14,60,14,18,36,14,0,0,3,0, + 7,128,12,192,16,32,0,0,0,0,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,56,112,31,176, + 14,60,14,16,32,14,0,0,12,192,12,192,0,0,0,0, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,176,14,60,13,23,46,12,255,251,0,96, + 0,224,1,128,2,0,0,0,0,0,120,56,48,16,56,48, + 24,32,24,32,12,96,12,64,6,192,6,128,7,128,3,0, + 3,0,2,0,2,0,196,0,236,0,120,0,13,23,46,14, + 0,251,240,0,48,0,48,0,48,0,48,0,48,0,55,192, + 60,112,56,48,48,56,48,24,48,24,48,24,48,24,48,56, + 56,48,60,112,55,192,48,0,48,0,48,0,48,0,252,0, + 13,21,42,12,255,251,12,96,12,96,0,0,0,0,120,56, + 48,16,56,48,24,32,24,32,12,96,12,64,6,192,6,128, + 7,128,3,0,3,0,2,0,2,0,196,0,236,0,120,0 + }; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--25-180-100-100-P-136-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=25 h=23 x= 6 y=14 dx=25 dy= 0 ascent=20 len=72 + Font Bounding box w=31 h=37 x=-3 y=-8 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR18r[3477] U8G_SECTION(".progmem.u8g_font_ncenR18r") = { + 0,31,37,253,248,18,4,33,9,197,32,127,251,20,251,18, + 251,0,0,0,7,0,1,3,18,18,7,2,0,64,224,224, + 224,224,224,224,224,224,224,224,64,64,64,0,224,224,224,6, + 6,6,10,2,12,204,204,204,204,204,204,13,16,32,15,1, + 1,12,96,12,96,12,96,12,96,12,96,127,248,24,192,24, + 192,24,192,24,192,255,240,49,128,49,128,49,128,49,128,49, + 128,11,22,44,13,1,254,4,0,4,0,31,0,101,128,68, + 192,196,192,197,192,197,128,228,0,252,0,127,0,31,192,7, + 192,4,224,100,96,228,96,196,96,196,64,100,192,63,0,4, + 0,4,0,18,19,57,20,1,255,30,24,0,51,40,0,97, + 216,0,97,16,0,193,48,0,193,32,0,194,96,0,194,64, + 0,196,199,128,120,140,192,1,152,64,1,24,64,3,48,64, + 2,48,64,6,48,128,4,48,128,12,49,0,8,30,0,8, + 0,0,18,18,54,20,1,0,7,192,0,12,224,0,24,96, + 0,24,96,0,24,96,0,24,192,0,13,128,0,14,0,0, + 30,63,128,103,30,0,99,140,0,193,200,0,192,232,0,192, + 112,0,224,56,64,112,124,64,127,207,128,31,7,0,2,6, + 6,6,2,12,192,192,192,192,192,192,7,21,21,9,1,253, + 2,12,24,48,48,96,96,192,192,192,192,192,192,192,96,96, + 48,48,24,12,2,7,21,21,8,0,253,128,96,48,24,24, + 12,12,6,6,6,6,6,6,6,12,12,24,24,48,96,128, + 7,9,9,9,1,9,16,56,146,214,56,214,146,56,16,12, + 12,24,14,1,1,6,0,6,0,6,0,6,0,6,0,255, + 240,255,240,6,0,6,0,6,0,6,0,6,0,4,7,7, + 6,1,252,96,240,240,48,32,64,128,6,2,2,8,1,6, + 252,252,3,3,3,7,2,0,224,224,224,7,18,18,8,0, + 0,6,6,6,12,12,12,24,24,24,48,48,48,96,96,96, + 192,192,192,11,18,36,13,1,0,14,0,17,0,49,128,32, + 128,96,192,96,192,224,224,224,224,224,224,224,224,224,224,224, + 224,96,192,96,192,32,128,49,128,17,0,14,0,8,18,18, + 13,3,0,8,56,248,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,11,18,36,13,1,0,31,0,113,192,64, + 192,224,224,224,224,64,224,0,192,1,192,1,128,3,0,6, + 0,12,0,24,0,48,32,96,32,192,96,255,224,255,224,11, + 18,36,13,1,0,31,0,99,128,193,192,225,192,225,192,65, + 128,1,128,3,0,31,0,1,128,0,192,0,224,64,224,224, + 224,224,192,193,192,97,128,30,0,12,18,36,13,0,0,0, + 64,0,192,1,192,3,192,6,192,12,192,8,192,24,192,48, + 192,96,192,64,192,192,192,128,192,255,240,0,192,0,192,0, + 192,3,240,11,18,36,13,1,0,127,192,127,128,64,0,64, + 0,64,0,64,0,64,0,95,0,99,128,0,192,0,192,0, + 224,96,224,224,224,224,192,64,192,97,128,31,0,11,18,36, + 13,1,0,15,128,56,224,32,224,96,96,96,0,96,0,224, + 0,239,0,241,128,224,192,224,192,224,224,224,224,96,224,96, + 192,96,192,49,128,31,0,10,18,36,13,2,0,255,192,255, + 192,128,128,129,128,1,0,3,0,3,0,2,0,6,0,6, + 0,4,0,12,0,12,0,12,0,28,0,28,0,28,0,8, + 0,11,18,36,13,1,0,31,0,49,128,32,128,96,192,96, + 192,112,192,57,128,63,0,31,0,55,128,97,192,192,224,192, + 96,192,96,192,96,96,192,113,192,31,0,11,18,36,13,1, + 0,31,0,49,128,112,192,96,192,224,224,224,224,224,224,96, + 224,112,224,49,224,30,224,0,224,0,192,0,192,193,192,225, + 128,227,128,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,7,2,252,224,224,224, + 0,0,0,0,0,0,96,240,240,48,32,64,128,12,12,24, + 14,1,1,0,48,0,240,3,192,15,0,60,0,240,0,240, + 0,60,0,15,0,3,192,0,240,0,48,12,6,12,15,1, + 4,255,240,255,240,0,0,0,0,255,240,255,240,12,12,24, + 14,1,1,192,0,240,0,60,0,15,0,3,192,0,240,0, + 240,3,192,15,0,60,0,240,0,192,0,10,18,36,12,1, + 0,30,0,99,128,193,192,225,192,225,192,1,192,3,128,7, + 0,14,0,12,0,24,0,16,0,16,0,0,0,0,0,56, + 0,56,0,56,0,17,18,54,19,1,0,1,248,0,6,6, + 0,24,3,0,16,1,128,96,216,128,99,56,128,198,24,128, + 198,24,128,204,24,128,204,49,0,204,49,0,204,114,0,196, + 180,0,195,56,0,96,1,0,96,2,0,24,12,0,31,248, + 0,19,18,54,19,0,0,0,64,0,0,96,0,0,224,0, + 0,240,0,1,48,0,1,56,0,2,24,0,2,28,0,4, + 12,0,4,12,0,8,14,0,15,254,0,16,6,0,16,7, + 0,32,3,0,32,3,128,96,3,128,248,15,224,14,18,36, + 18,2,0,255,192,48,112,48,48,48,56,48,56,48,56,48, + 48,48,96,63,240,48,56,48,24,48,28,48,28,48,28,48, + 28,48,24,48,56,255,224,15,18,36,17,1,0,7,242,28, + 30,56,6,48,2,112,2,96,2,224,0,224,0,224,0,224, + 0,224,0,224,0,96,2,112,2,48,6,56,4,28,28,7, + 240,16,18,36,20,2,0,255,224,48,56,48,12,48,12,48, + 6,48,6,48,7,48,7,48,7,48,7,48,7,48,7,48, + 6,48,6,48,12,48,12,48,56,255,224,13,18,36,16,1, + 0,255,248,48,56,48,24,48,8,48,8,48,136,48,128,49, + 128,63,128,49,128,48,128,48,128,48,8,48,8,48,8,48, + 24,48,56,255,248,13,18,36,16,1,0,255,248,48,56,48, + 24,48,8,48,8,48,136,48,128,49,128,63,128,49,128,48, + 128,48,128,48,0,48,0,48,0,48,0,48,0,252,0,17, + 18,54,18,1,0,7,250,0,28,30,0,48,6,0,48,6, + 0,112,2,0,96,2,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,63,128,224,6,0,96,6,0,112,6,0,48, + 6,0,48,14,0,28,30,0,7,242,0,17,18,54,21,2, + 0,252,31,128,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,63,254,0,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,252,31,128,6,18,18,9,2,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,11, + 18,36,14,1,0,7,224,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,97,128,241,128,225, + 128,193,128,193,128,99,0,62,0,18,18,54,20,2,0,252, + 127,0,48,28,0,48,24,0,48,48,0,48,96,0,48,192, + 0,49,128,0,51,0,0,55,0,0,63,128,0,57,192,0, + 48,224,0,48,112,0,48,56,0,48,28,0,48,14,0,48, + 7,0,252,31,192,13,18,36,16,2,0,254,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,8,48,24,48,56,255,248,20, + 18,54,23,1,0,252,1,240,60,1,192,30,3,192,22,2, + 192,23,2,192,19,2,192,19,4,192,19,132,192,17,132,192, + 17,136,192,17,200,192,16,200,192,16,208,192,16,240,192,16, + 112,192,16,96,192,56,96,192,254,35,240,19,18,54,21,1, + 0,248,15,224,60,3,128,28,1,0,30,1,0,23,1,0, + 19,129,0,17,129,0,16,193,0,16,225,0,16,97,0,16, + 49,0,16,57,0,16,29,0,16,15,0,16,7,0,16,7, + 0,56,3,0,254,1,0,17,18,54,19,1,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,13,18,36,16,2,0,255,192,48,112,48,48,48, + 56,48,56,48,56,48,56,48,48,48,112,63,192,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,17,22,66, + 19,1,252,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,227,195,128,100,99,0,104,39,0,56,54,0, + 56,22,0,28,28,0,7,248,0,0,24,128,0,12,128,0, + 15,0,0,6,0,15,18,36,18,2,0,255,192,48,112,48, + 48,48,56,48,56,48,56,48,48,48,96,63,128,49,192,48, + 224,48,96,48,112,48,112,48,50,48,50,48,60,252,28,13, + 18,36,15,1,0,31,144,112,240,64,48,192,48,192,16,224, + 16,120,0,62,0,15,128,3,224,0,240,0,56,128,24,128, + 24,192,24,192,48,240,112,159,192,14,18,36,17,1,0,255, + 252,227,28,195,12,131,4,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,224,16,18,36,19,2,0,252,31,48,14,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,56,12,24,8,30,56,7,224,18,18,54, + 18,0,0,254,7,192,56,1,0,24,1,0,28,2,0,28, + 2,0,12,2,0,14,4,0,6,4,0,7,8,0,7,8, + 0,3,8,0,3,144,0,1,144,0,1,160,0,1,224,0, + 0,224,0,0,192,0,0,64,0,25,18,72,25,0,0,254, + 63,143,128,56,14,2,0,56,14,2,0,24,14,2,0,24, + 22,4,0,28,23,4,0,12,19,4,0,12,19,4,0,14, + 35,136,0,6,33,136,0,6,33,136,0,7,65,208,0,3, + 64,208,0,3,192,240,0,3,128,240,0,1,128,96,0,1, + 128,96,0,0,128,32,0,19,18,54,19,0,0,127,143,128, + 30,6,0,14,4,0,7,8,0,7,16,0,3,144,0,1, + 160,0,1,192,0,0,224,0,0,224,0,1,112,0,1,56, + 0,2,28,0,4,28,0,4,14,0,8,7,0,24,7,128, + 252,31,224,16,18,36,17,0,0,252,63,56,12,24,8,28, + 24,12,16,14,48,6,32,7,96,3,64,3,192,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,7,224,14,18,36, + 16,1,0,127,252,112,24,96,56,64,48,64,96,0,224,0, + 192,1,128,3,128,3,0,6,0,14,0,28,0,24,4,48, + 4,112,12,96,28,255,252,5,21,21,7,2,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,248,10,18,36,11,0,0,192,0,192,0,96,0,96,0, + 48,0,48,0,24,0,24,0,12,0,12,0,6,0,6,0, + 3,0,3,0,1,128,1,128,0,192,0,192,5,21,21,7, + 0,253,248,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,248,10,10,20,12,1,8,12,0,12, + 0,30,0,30,0,51,0,51,0,97,128,97,128,192,192,192, + 192,12,2,4,12,0,253,255,240,255,240,5,4,4,8,1, + 14,192,224,48,8,12,12,24,13,1,0,31,0,113,128,112, + 192,96,192,0,192,7,192,56,192,96,192,192,192,192,192,225, + 240,126,96,13,18,36,14,0,0,240,0,48,0,48,0,48, + 0,48,0,48,0,55,192,60,112,56,48,48,56,48,24,48, + 24,48,24,48,24,48,56,56,48,60,112,39,192,10,12,24, + 12,1,0,31,0,113,192,97,192,224,192,192,0,192,0,192, + 0,192,0,224,0,96,64,112,192,31,128,13,18,36,14,1, + 0,1,224,0,96,0,96,0,96,0,96,0,96,30,96,113, + 224,96,224,224,96,192,96,192,96,192,96,192,96,224,96,96, + 224,113,224,31,120,11,12,24,13,1,0,31,0,113,192,96, + 192,224,224,192,96,255,224,192,0,192,0,224,0,96,64,112, + 192,31,128,9,18,36,8,1,0,15,0,25,128,49,128,48, + 0,48,0,48,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,13,17,34, + 12,0,251,31,56,49,216,96,192,96,192,96,192,96,192,49, + 128,31,0,48,0,96,0,63,0,31,192,96,224,192,96,192, + 96,224,192,127,128,14,18,36,14,0,0,240,0,48,0,48, + 0,48,0,48,0,48,0,49,192,55,224,56,112,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,6, + 18,18,8,1,0,48,48,48,0,0,0,240,48,48,48,48, + 48,48,48,48,48,48,252,7,23,23,8,254,251,6,6,6, + 0,0,0,30,6,6,6,6,6,6,6,6,6,6,6,6, + 6,198,204,120,14,18,36,15,1,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,240,48,192,49,128,51,0,54,0, + 62,0,55,0,51,128,49,192,48,224,48,112,252,252,6,18, + 18,8,1,0,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,22,12,36,22,0,0,241,193,192,55, + 231,224,56,120,112,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,252, + 14,12,24,14,0,0,241,192,55,224,56,112,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,11,12, + 24,13,1,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,13,17,34,14, + 0,251,247,192,60,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,56,56,48,60,112,55,192,48,0,48,0,48,0, + 48,0,252,0,13,17,34,14,1,251,30,32,113,224,96,224, + 224,96,192,96,192,96,192,96,192,96,224,96,96,224,113,224, + 31,96,0,96,0,96,0,96,0,96,1,248,10,12,24,10, + 0,0,243,128,53,192,56,192,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,9,12,24,11,1,0, + 61,0,103,0,195,0,193,0,224,0,124,0,31,0,3,128, + 129,128,193,128,227,0,190,0,8,16,16,10,1,0,16,16, + 48,112,255,48,48,48,48,48,48,48,49,49,57,30,14,12, + 24,14,0,0,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,56,112,31,176,14,60,15,12,24,13, + 255,0,252,126,48,24,48,16,56,48,24,32,28,96,12,64, + 14,192,6,128,7,128,3,0,3,0,19,12,36,17,255,0, + 252,243,224,48,96,128,48,96,128,48,112,128,56,177,0,24, + 177,0,24,177,0,29,58,0,13,26,0,13,26,0,14,28, + 0,6,12,0,13,12,24,12,0,0,248,240,112,96,56,192, + 25,128,15,0,7,0,7,0,13,128,24,192,48,224,96,112, + 240,248,13,17,34,12,255,251,120,56,48,16,56,32,24,32, + 24,96,28,64,12,192,14,128,6,128,7,128,3,0,3,0, + 2,0,2,0,196,0,236,0,120,0,9,12,24,11,1,0, + 255,128,195,128,135,0,134,0,12,0,28,0,24,0,48,0, + 112,128,224,128,193,128,255,128,6,21,21,8,1,253,12,16, + 48,48,48,48,48,48,48,32,192,32,48,48,48,48,48,48, + 48,16,12,2,18,18,15,6,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,21,21,7,1, + 253,192,32,48,48,48,48,48,48,48,16,12,16,48,48,48, + 48,48,48,48,32,192,12,4,8,14,1,6,60,48,126,112, + 231,224,195,192,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=31 h=32 x= 9 y=19 dx=32 dy= 0 ascent=32 len=128 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =32 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24[11729] U8G_SECTION(".progmem.u8g_font_ncenR24") = { + 0,39,50,250,245,25,5,159,15,28,32,255,249,32,249,25, + 249,0,0,0,9,1,1,4,25,25,10,3,0,96,240,240, + 240,240,240,240,96,96,96,96,96,96,96,96,96,96,96,0, + 0,0,96,240,240,96,9,8,16,13,2,17,227,128,227,128, + 227,128,227,128,65,0,65,0,65,0,65,0,16,23,46,19, + 2,0,3,12,3,12,3,12,7,28,6,24,6,24,6,24, + 127,255,127,255,6,24,14,56,12,56,12,48,255,254,255,254, + 12,48,12,48,28,112,28,112,24,96,24,96,24,96,24,96, + 14,31,62,18,2,252,2,0,2,0,2,0,15,192,63,240, + 114,112,226,56,194,120,194,120,194,48,194,0,226,0,250,0, + 127,0,63,192,31,240,3,248,2,124,2,60,98,28,242,12, + 242,12,226,28,194,24,226,120,127,240,31,192,2,0,2,0, + 2,0,2,0,24,25,75,27,1,255,3,128,32,15,192,224, + 28,227,192,56,127,192,56,97,128,112,97,128,112,99,0,240, + 99,0,224,102,0,224,196,0,224,204,0,225,136,28,115,24, + 126,62,16,227,0,49,195,0,99,195,0,99,131,0,199,131, + 0,199,3,1,135,6,1,135,6,3,7,12,2,3,152,6, + 1,240,4,0,0,22,25,75,27,2,0,1,248,0,7,188, + 0,6,28,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,15,112,0,7,224,0,7,128,0,15, + 199,252,59,193,240,113,224,224,113,240,192,224,240,192,224,249, + 128,224,125,128,240,63,4,240,30,4,248,15,12,126,63,248, + 63,243,248,31,193,224,3,8,8,7,2,17,224,224,224,224, + 64,64,64,64,8,29,29,11,2,252,1,7,6,12,24,48, + 48,48,96,96,96,96,224,224,224,224,224,96,96,96,96,48, + 48,16,24,12,6,7,3,8,29,29,11,2,252,192,224,96, + 48,24,8,12,12,6,6,6,6,7,7,7,7,7,6,6, + 6,6,12,12,28,24,48,96,192,192,12,14,28,17,2,11, + 6,0,6,0,6,0,198,112,230,112,127,224,31,128,31,0, + 127,192,230,112,198,112,6,0,6,0,6,0,16,17,34,20, + 2,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 255,255,255,255,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,5,10,10,9,2,250,112,248,248,120,24,24, + 48,96,224,128,8,3,3,11,1,7,255,255,255,4,4,4, + 9,2,0,96,240,240,96,10,25,50,9,255,0,0,192,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,6, + 0,6,0,6,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,96,0,192,0,16, + 24,48,18,2,0,3,192,15,240,28,56,24,24,56,28,120, + 30,112,14,240,15,240,15,240,15,240,15,240,15,240,15,240, + 15,240,15,240,15,240,15,112,14,120,30,56,28,24,24,28, + 56,15,240,3,192,13,24,48,18,3,0,3,0,7,0,255, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,15,128,255,248,15,24,48,18,1, + 0,7,224,31,248,56,28,96,30,112,14,120,14,120,14,120, + 14,48,30,0,28,0,28,0,56,0,120,0,112,0,224,1, + 192,3,128,7,2,14,2,28,6,56,6,127,254,255,254,255, + 254,15,24,48,18,1,0,7,224,31,248,56,56,112,28,120, + 28,120,28,48,28,0,28,0,56,0,112,1,224,15,240,0, + 248,0,60,0,28,0,30,96,14,240,14,240,14,240,30,224, + 28,120,124,63,240,15,192,16,24,48,18,1,0,0,48,0, + 48,0,112,0,240,1,240,1,240,3,112,6,112,6,112,12, + 112,24,112,24,112,48,112,96,112,96,112,192,112,255,255,255, + 255,0,112,0,112,0,112,0,112,0,248,3,254,14,24,48, + 18,2,0,56,8,63,248,63,240,63,224,48,0,48,0,32, + 0,96,0,99,192,111,240,124,120,112,56,96,60,0,28,0, + 28,0,28,96,28,240,28,240,28,240,60,224,56,112,120,127, + 240,31,128,15,24,48,18,1,0,3,240,15,252,28,62,56, + 30,56,30,48,12,112,0,112,0,112,0,241,224,247,248,254, + 60,252,28,248,30,240,14,240,14,240,14,112,14,112,14,112, + 30,56,28,56,60,31,240,7,192,13,24,48,18,3,0,255, + 248,255,248,255,248,192,16,192,48,128,32,128,96,128,64,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,7, + 0,7,0,7,0,15,0,15,0,15,0,15,0,6,0,15, + 24,48,18,1,0,7,224,31,248,60,56,56,28,112,28,112, + 12,112,12,120,24,60,56,63,112,31,224,7,240,7,248,29, + 252,56,124,112,30,112,30,224,14,224,14,224,14,112,28,120, + 60,63,248,15,224,15,24,48,18,1,0,15,192,63,240,120, + 120,112,56,240,60,224,28,224,28,224,30,224,30,240,30,240, + 62,120,126,120,126,63,222,31,158,0,30,0,28,0,28,96, + 56,240,56,240,112,241,224,127,192,63,0,4,16,16,9,3, + 0,96,240,240,96,0,0,0,0,0,0,0,0,96,240,240, + 96,5,21,21,9,1,251,48,120,120,48,0,0,0,0,0, + 0,0,0,48,120,120,56,24,16,48,96,192,16,18,36,20, + 2,255,0,1,0,7,0,31,0,124,1,240,7,192,31,0, + 124,0,240,0,240,0,124,0,31,0,7,192,1,240,0,124, + 0,31,0,7,0,1,16,8,16,20,2,4,255,255,255,255, + 0,0,0,0,0,0,0,0,255,255,255,255,16,18,36,20, + 2,255,128,0,224,0,248,0,62,0,15,128,3,224,0,248, + 0,62,0,15,0,15,0,62,0,248,3,224,15,128,62,0, + 248,0,224,0,128,0,12,25,50,14,1,0,63,128,115,224, + 192,224,192,240,224,112,224,112,224,112,0,240,0,240,1,224, + 1,192,3,128,3,0,6,0,4,0,4,0,12,0,12,0, + 0,0,0,0,0,0,12,0,30,0,30,0,12,0,22,25, + 75,25,1,0,0,254,0,3,255,128,15,135,192,30,0,224, + 28,0,112,48,0,56,48,0,24,96,251,152,97,207,140,227, + 143,140,199,135,140,199,7,12,207,7,12,207,15,8,206,15, + 24,206,14,24,206,30,48,102,62,96,103,126,192,51,231,152, + 56,0,56,28,0,112,15,129,224,7,255,128,0,254,0,23, + 25,75,23,0,0,0,16,0,0,56,0,0,56,0,0,120, + 0,0,124,0,0,124,0,0,220,0,0,222,0,1,158,0, + 1,142,0,1,143,0,3,7,0,3,7,128,3,7,128,6, + 3,128,7,255,192,7,255,192,12,1,192,12,1,224,12,1, + 224,24,0,240,24,0,240,56,0,248,124,1,252,254,3,254, + 20,25,75,23,1,0,255,254,0,63,255,128,14,7,192,14, + 1,192,14,1,224,14,1,224,14,1,224,14,1,224,14,1, + 192,14,1,192,14,3,128,15,255,0,15,252,0,14,15,128, + 14,3,192,14,1,224,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,240,14,1,224,14,3,224,63,255,192,255,255, + 0,20,25,75,22,1,0,1,252,96,7,255,96,14,3,224, + 28,1,224,60,0,224,56,0,224,120,0,96,120,0,96,240, + 0,32,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,48,120,0,48,120,0,48, + 120,0,96,60,0,96,28,0,192,15,3,128,7,255,0,1, + 252,0,22,25,75,25,1,0,255,254,0,63,255,192,14,3, + 224,14,0,240,14,0,112,14,0,120,14,0,120,14,0,60, + 14,0,60,14,0,60,14,0,60,14,0,60,14,0,60,14, + 0,60,14,0,60,14,0,60,14,0,60,14,0,60,14,0, + 56,14,0,120,14,0,112,14,0,224,14,3,224,63,255,192, + 255,254,0,20,25,75,24,1,0,255,255,240,63,255,240,14, + 1,240,14,0,112,14,0,112,14,0,48,14,4,48,14,4, + 16,14,4,16,14,12,0,14,60,0,15,252,0,15,252,0, + 14,60,0,14,12,0,14,12,0,14,4,16,14,4,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 240,255,255,240,20,25,75,22,1,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,48,14,0,48,14,0,16,14, + 4,16,14,4,16,14,12,0,14,12,0,14,60,0,15,252, + 0,15,252,0,14,28,0,14,12,0,14,4,0,14,4,0, + 14,4,0,14,0,0,14,0,0,14,0,0,14,0,0,63, + 128,0,255,224,0,24,25,75,24,1,0,1,254,48,7,255, + 176,15,3,240,30,0,240,60,0,112,56,0,112,120,0,48, + 112,0,48,112,0,16,240,0,16,240,0,0,240,0,0,240, + 0,0,240,0,0,240,7,255,240,0,248,240,0,112,112,0, + 112,112,0,112,120,0,112,56,0,240,28,0,240,15,1,176, + 7,255,48,1,254,16,25,25,100,27,1,0,255,227,255,128, + 63,128,254,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,15,255,248,0,15,255,248,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,63,128,254,0,255,227,255,128, + 11,25,50,13,1,0,255,224,63,128,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,63,128,255,224,17,25,75,18,0,0,3,255, + 128,0,124,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,112,56, + 0,248,56,0,248,56,0,248,56,0,240,56,0,192,120,0, + 224,112,0,127,240,0,31,192,0,25,25,100,25,1,0,255, + 227,255,0,63,129,252,0,14,0,240,0,14,0,224,0,14, + 1,192,0,14,1,128,0,14,3,0,0,14,6,0,0,14, + 14,0,0,14,28,0,0,14,56,0,0,14,124,0,0,14, + 254,0,0,15,222,0,0,15,143,0,0,15,7,128,0,14, + 7,192,0,14,3,192,0,14,1,224,0,14,1,240,0,14, + 0,240,0,14,0,120,0,14,0,124,0,63,0,62,0,255, + 192,255,128,20,25,75,22,1,0,255,224,0,63,128,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,16,14,0,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 224,255,255,224,29,25,100,30,0,0,127,128,15,248,31,128, + 15,192,15,128,15,128,15,192,15,128,13,192,27,128,13,192, + 27,128,13,224,19,128,12,224,51,128,12,224,51,128,12,240, + 35,128,12,112,99,128,12,112,99,128,12,120,99,128,12,56, + 195,128,12,56,195,128,12,60,195,128,12,28,131,128,12,29, + 131,128,12,31,131,128,12,31,3,128,12,15,3,128,12,15, + 3,128,12,14,3,128,63,6,15,224,255,198,63,248,26,25, + 100,28,1,0,255,0,255,192,31,0,63,0,15,128,12,0, + 15,192,12,0,15,192,12,0,13,224,12,0,13,240,12,0, + 12,248,12,0,12,120,12,0,12,124,12,0,12,62,12,0, + 12,30,12,0,12,31,12,0,12,15,140,0,12,7,140,0, + 12,7,204,0,12,3,204,0,12,1,236,0,12,0,236,0, + 12,0,252,0,12,0,124,0,12,0,60,0,12,0,60,0, + 63,0,28,0,255,192,12,0,22,25,75,24,1,0,1,254, + 0,7,255,128,15,3,192,28,0,224,60,0,240,56,0,112, + 120,0,120,112,0,56,240,0,60,240,0,60,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,240,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,28,0,224, + 15,3,192,7,255,128,1,254,0,20,25,75,22,1,0,255, + 254,0,63,255,128,14,7,192,14,1,224,14,0,240,14,0, + 240,14,0,112,14,0,112,14,0,240,14,0,240,14,1,224, + 14,7,192,15,255,128,15,254,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,63,128,0,255,224,0,23,31,93,24,1,250, + 0,254,0,3,255,128,15,1,224,30,0,240,60,0,120,56, + 0,56,120,0,60,112,0,28,240,0,30,240,0,30,224,0, + 14,224,0,14,224,0,14,224,0,14,240,0,30,240,0,30, + 112,124,28,121,222,60,121,135,56,61,3,112,29,3,112,31, + 3,224,15,131,192,3,255,128,0,255,192,0,3,198,0,1, + 198,0,1,228,0,1,252,0,0,248,0,0,112,21,25,75, + 23,1,0,255,254,0,63,255,128,14,7,192,14,1,192,14, + 1,224,14,0,224,14,0,224,14,1,224,14,1,224,14,1, + 192,14,3,192,14,15,0,15,252,0,15,254,0,14,15,0, + 14,7,0,14,7,128,14,3,128,14,3,128,14,3,136,14, + 3,136,14,3,136,14,3,216,63,129,240,255,225,224,17,25, + 75,20,2,0,15,241,0,63,251,0,112,31,0,96,7,0, + 224,7,0,224,3,0,224,1,0,240,1,0,240,0,0,126, + 0,0,127,224,0,31,252,0,7,254,0,0,127,0,0,15, + 128,128,7,128,128,3,128,192,3,128,192,3,128,192,3,128, + 224,7,128,240,7,0,248,14,0,223,252,0,135,240,0,19, + 25,75,21,1,0,255,255,224,255,255,224,240,227,224,224,224, + 224,192,224,96,192,224,96,128,224,32,128,224,32,128,224,32, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,3,248,0,15,254,0, + 26,25,100,26,0,0,255,224,255,192,63,128,63,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,15,0,24,0,7,0,24,0,7,128,48,0,3,224, + 240,0,1,255,192,0,0,127,0,0,23,25,75,23,0,0, + 255,195,254,62,0,248,30,0,112,30,0,112,14,0,96,15, + 0,96,15,0,64,7,0,192,7,128,192,7,128,128,3,129, + 128,3,193,128,3,193,0,1,195,0,1,227,0,1,226,0, + 0,230,0,0,246,0,0,244,0,0,124,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,16,0,31,25,100,31,0, + 0,255,31,241,254,126,7,192,124,60,3,128,56,28,3,128, + 48,30,3,192,48,30,3,192,96,14,3,192,96,14,3,224, + 96,15,3,224,96,7,6,224,192,7,6,224,192,7,132,240, + 192,7,140,112,192,3,140,113,128,3,140,121,128,3,200,57, + 128,1,216,57,0,1,248,63,0,1,248,31,0,0,240,31, + 0,0,240,30,0,0,240,30,0,0,224,14,0,0,96,12, + 0,0,96,12,0,23,25,75,22,0,0,255,199,252,63,1, + 240,31,0,224,15,1,192,15,129,128,7,131,128,3,195,0, + 3,230,0,1,238,0,0,252,0,0,248,0,0,120,0,0, + 124,0,0,124,0,0,254,0,1,223,0,1,143,0,3,135, + 128,3,7,128,6,3,192,14,3,224,12,1,224,28,0,240, + 62,0,248,255,135,254,23,25,75,23,0,0,255,131,254,126, + 0,248,62,0,112,30,0,96,15,0,224,15,0,192,7,129, + 128,7,193,128,3,195,0,3,227,0,1,230,0,0,246,0, + 0,252,0,0,124,0,0,120,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,254,0,3,255,128,17,25,75,19,1,0,127,255,128, + 127,255,128,120,15,0,112,15,0,96,30,0,96,62,0,96, + 60,0,64,124,0,64,120,0,0,240,0,0,240,0,1,224, + 0,3,224,0,3,192,0,7,128,0,7,128,128,15,0,128, + 31,0,128,30,1,128,62,1,128,60,1,128,120,3,128,120, + 7,128,255,255,128,255,255,128,7,29,29,11,3,252,254,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,254,15,25,50,20,2, + 0,224,0,112,0,112,0,56,0,56,0,28,0,28,0,14, + 0,14,0,7,0,7,0,3,128,3,128,3,128,1,192,1, + 192,0,224,0,224,0,112,0,112,0,56,0,56,0,28,0, + 28,0,14,7,29,29,11,1,252,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,254,16,13,26,20,2,12,3,192,3,192, + 7,224,7,224,14,112,14,112,28,56,28,56,56,28,56,28, + 112,14,112,14,224,7,16,2,4,16,0,252,255,255,255,255, + 7,6,6,11,1,17,192,224,112,56,12,6,16,16,32,17, + 1,0,15,192,63,240,120,120,112,56,96,56,0,56,1,248, + 15,248,60,56,112,56,224,56,224,56,224,120,241,253,127,159, + 62,14,15,25,50,17,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,57,224,59,248,62,28, + 60,28,60,14,56,14,56,14,56,14,56,14,56,14,56,14, + 60,14,60,28,62,28,55,248,33,224,12,16,32,14,1,0, + 7,128,31,224,56,112,112,240,112,240,224,96,224,0,224,0, + 224,0,224,0,224,0,112,16,112,48,56,96,63,192,15,128, + 16,25,50,18,1,0,0,12,0,124,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,7,156,31,220,56,124,112,60, + 112,60,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,60,120,124,31,220,7,159,14,16,32,16,1,0,7,192, + 31,240,56,120,112,56,96,28,224,28,224,28,255,252,224,0, + 224,0,224,0,240,4,112,12,120,56,63,240,15,192,14,25, + 50,11,0,0,1,248,7,28,14,28,12,28,28,8,28,0, + 28,0,28,0,28,0,255,192,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,255,192,16,23,46,17,1,249,7,159,31,251, + 56,115,112,56,112,56,112,56,112,56,112,56,56,112,31,224, + 55,128,96,0,96,0,127,224,127,248,63,252,48,62,96,14, + 224,14,224,14,248,60,127,248,15,192,19,25,75,20,0,0, + 12,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,112,0,29,252, + 0,31,30,0,30,14,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,255,63,224,9,24,48,10,1, + 0,24,0,60,0,60,0,24,0,0,0,0,0,0,0,0, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,255, + 128,9,31,62,10,254,249,3,0,7,128,7,128,3,0,0, + 0,0,0,0,0,0,0,3,128,31,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,67,128,227,0,227, + 0,230,0,124,0,19,25,75,20,0,0,12,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,127,128,28,30,0,28,24,0,28, + 48,0,28,96,0,28,192,0,29,192,0,31,224,0,30,240, + 0,28,120,0,28,60,0,28,28,0,28,14,0,28,15,0, + 28,7,128,255,31,224,9,25,50,11,1,0,12,0,28,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,27,16, + 64,27,0,0,28,240,120,0,253,252,254,0,31,29,142,0, + 30,15,7,0,30,15,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 255,63,159,224,19,16,48,19,0,0,28,120,0,253,254,0, + 31,142,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,255,31,224,14,16,32,16,1,0, + 7,128,31,224,56,112,112,56,112,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,112,56,56,112,31,224,7,128, + 16,23,46,19,1,249,25,240,251,252,62,30,60,14,60,7, + 56,7,56,7,56,7,56,7,56,7,56,7,60,14,60,14, + 62,28,59,252,57,240,56,0,56,0,56,0,56,0,56,0, + 124,0,255,0,16,23,46,17,1,249,7,196,31,236,56,60, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,60,56,124,63,220,15,156,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,14,16,32,15,0,0,28,120, + 253,252,31,60,30,60,30,24,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,11,16, + 32,15,2,0,30,192,127,192,225,192,192,192,192,192,240,64, + 254,0,127,128,63,192,7,224,128,224,192,96,192,96,224,224, + 255,192,159,0,12,23,46,13,0,0,4,0,4,0,12,0, + 12,0,28,0,28,0,60,0,255,224,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,16,28,16,28,48, + 28,48,30,96,15,224,7,192,18,16,48,20,0,0,28,7, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 15,0,28,15,0,30,63,0,15,247,192,7,199,0,17,16, + 48,17,0,0,255,31,128,124,7,0,60,6,0,30,6,0, + 30,12,0,14,12,0,15,8,0,7,24,0,7,24,0,7, + 176,0,3,176,0,3,224,0,1,224,0,1,224,0,0,192, + 0,0,192,0,24,16,48,24,0,0,254,127,63,120,60,14, + 56,28,12,60,28,28,28,30,24,28,30,24,14,54,16,14, + 39,48,15,103,48,7,103,96,7,67,96,3,195,192,3,195, + 192,3,129,192,1,129,128,1,129,128,16,16,32,19,1,0, + 255,127,60,28,30,24,14,48,15,48,7,96,3,192,3,192, + 1,224,3,224,6,112,12,120,28,56,56,60,120,30,254,127, + 18,23,69,20,1,249,255,31,192,60,7,0,60,6,0,28, + 6,0,30,12,0,14,12,0,15,8,0,7,24,0,7,24, + 0,7,176,0,3,176,0,3,224,0,1,224,0,1,224,0, + 0,192,0,0,192,0,1,128,0,1,128,0,99,0,0,243, + 0,0,230,0,0,252,0,0,112,0,0,13,16,32,15,1, + 0,127,248,120,120,96,240,96,224,65,224,67,192,3,128,7, + 128,15,0,14,0,30,8,60,8,56,24,120,56,240,248,255, + 248,6,30,30,11,3,252,12,28,56,48,48,48,48,48,48, + 48,48,48,48,112,224,224,112,48,48,48,48,48,48,48,48, + 48,48,56,28,12,2,25,25,20,9,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,6,30,30,11,2,252,192,224,112,48,48,48, + 48,48,48,48,48,48,48,56,28,28,56,48,48,48,48,48, + 48,48,48,48,48,112,224,192,16,4,8,20,2,6,30,3, + 127,135,225,254,192,120,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,9,1,1,4,25,25, + 10,3,249,96,240,240,96,0,0,0,96,96,96,96,96,96, + 96,96,96,96,96,240,240,240,240,240,240,96,13,24,48,18, + 2,252,0,24,0,24,0,16,0,48,7,224,31,240,56,112, + 112,112,112,240,224,224,224,128,225,128,225,0,227,0,227,0, + 242,16,118,48,60,96,31,224,15,128,8,0,24,0,16,0, + 16,0,16,23,46,19,1,0,1,240,7,252,14,14,12,14, + 28,30,28,30,28,28,28,0,30,0,14,0,14,0,255,248, + 15,0,7,0,7,0,7,0,6,0,6,0,126,3,223,7, + 143,142,223,252,112,240,16,17,34,19,1,3,67,194,239,247, + 127,254,60,60,112,14,112,14,224,7,224,7,224,7,224,7, + 224,7,112,14,112,14,60,60,127,254,239,247,3,192,17,23, + 69,19,0,0,255,31,128,60,15,0,28,6,0,30,6,0, + 14,4,0,15,12,0,7,8,0,7,24,0,3,144,0,3, + 176,0,1,224,0,0,224,0,7,252,0,7,252,0,0,224, + 0,0,224,0,7,252,0,7,252,0,0,224,0,0,224,0, + 0,224,0,7,248,0,7,248,0,2,25,25,20,9,0,192, + 192,192,192,192,192,192,192,192,192,0,0,0,0,0,192,192, + 192,192,192,192,192,192,192,192,12,30,60,17,2,251,15,0, + 57,192,48,192,113,192,113,192,112,128,56,0,60,0,30,0, + 15,0,63,128,99,192,193,224,192,240,192,112,224,48,240,48, + 120,48,60,96,31,192,15,0,7,128,3,192,1,192,16,224, + 56,224,56,224,48,192,57,192,15,0,9,3,6,11,1,19, + 99,0,247,128,99,0,24,25,75,25,0,0,0,126,0,3, + 255,128,7,129,224,14,0,112,24,0,56,48,0,28,48,127, + 12,96,227,134,97,129,134,67,128,134,195,0,131,199,0,3, + 199,0,3,199,0,3,199,0,3,195,0,3,67,128,6,97, + 193,134,97,227,140,48,126,12,24,0,24,28,0,112,7,1, + 224,3,255,128,0,126,0,11,14,28,11,0,11,63,0,99, + 128,97,128,99,128,15,128,121,128,225,128,193,128,227,128,125, + 224,0,0,0,0,0,0,255,192,11,11,22,14,1,2,4, + 32,12,96,24,192,49,128,115,128,231,0,115,128,49,128,24, + 192,12,96,4,32,16,9,18,20,1,3,255,255,255,255,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,8,3,3, + 11,1,7,255,255,255,24,24,72,25,0,0,0,126,0,3, + 255,192,15,1,240,28,0,56,56,0,24,51,252,12,96,199, + 14,96,195,6,64,195,6,192,195,3,192,198,3,192,252,3, + 192,204,3,192,206,3,192,198,3,96,199,6,96,195,6,96, + 195,142,51,227,204,24,0,24,28,0,112,7,0,224,3,255, + 192,0,126,0,10,2,4,11,0,19,255,192,255,192,9,9, + 18,13,2,14,62,0,119,0,193,128,193,128,128,128,193,128, + 193,128,119,0,62,0,16,16,32,20,2,0,1,128,1,128, + 1,128,1,128,255,255,255,255,1,128,1,128,1,128,1,128, + 1,128,0,0,0,0,0,0,255,255,255,255,10,14,28,11, + 0,9,63,0,115,128,97,128,113,128,113,128,1,128,3,0, + 7,0,14,0,28,0,56,64,112,64,255,192,255,192,9,14, + 28,11,1,9,62,0,99,0,113,128,97,128,1,128,7,0, + 62,0,7,0,3,0,97,128,225,128,195,128,231,0,126,0, + 7,6,6,11,2,19,6,14,28,56,96,192,17,23,69,20, + 1,249,56,14,0,248,62,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,30,0,56,30,0,60,126,0,63,238,0,47, + 143,128,32,0,0,32,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,32,0,0,17,30,90,20,2,251,15,255,128, + 63,255,128,120,198,0,240,198,0,240,198,0,240,198,0,240, + 198,0,240,198,0,240,198,0,240,198,0,120,198,0,124,198, + 0,63,198,0,15,198,0,0,198,0,0,198,0,0,198,0, + 0,198,0,0,198,0,0,198,0,0,198,0,0,198,0,0, + 198,0,0,198,0,0,198,0,0,198,0,0,198,0,0,198, + 0,3,255,128,3,255,128,4,4,4,9,2,6,96,240,240, + 96,6,7,7,11,1,249,16,32,120,12,12,140,120,8,14, + 14,11,1,9,56,248,24,24,24,24,24,24,24,24,24,24, + 24,255,11,14,28,10,255,11,14,0,59,128,96,192,224,224, + 192,96,192,96,224,224,96,192,59,128,14,0,0,0,0,0, + 0,0,127,192,11,11,22,14,1,2,132,0,198,0,99,0, + 49,128,57,192,28,224,57,192,49,128,99,0,198,0,132,0, + 25,23,92,28,1,0,56,0,24,0,248,0,48,0,24,0, + 48,0,24,0,96,0,24,0,192,0,24,0,128,0,24,1, + 128,0,24,3,0,0,24,6,0,0,24,6,4,0,24,12, + 12,0,24,24,28,0,24,24,60,0,255,48,108,0,0,96, + 76,0,0,192,204,0,0,193,140,0,1,131,12,0,3,3, + 255,128,3,0,12,0,6,0,12,0,12,0,12,0,8,0, + 63,0,25,23,92,28,1,0,56,0,24,0,248,0,48,0, + 24,0,32,0,24,0,96,0,24,0,192,0,24,1,128,0, + 24,1,128,0,24,3,0,0,24,6,0,0,24,6,62,0, + 24,12,99,0,24,24,193,128,24,48,193,128,255,48,225,128, + 0,96,195,0,0,192,7,0,0,192,14,0,1,128,28,0, + 3,0,56,0,3,0,112,128,6,0,224,128,12,1,255,128, + 8,1,255,128,25,23,92,28,1,0,62,0,8,0,99,0, + 24,0,113,128,48,0,97,128,48,0,1,128,96,0,7,0, + 192,0,30,1,128,0,7,1,128,0,3,131,0,0,97,134, + 4,0,225,134,12,0,195,140,28,0,231,24,60,0,126,48, + 108,0,0,48,204,0,0,96,204,0,0,193,140,0,0,195, + 12,0,1,131,255,128,3,0,12,0,6,0,12,0,6,0, + 12,0,12,0,63,0,12,25,50,14,1,249,3,0,7,128, + 7,128,3,0,0,0,0,0,0,0,3,0,3,0,2,0, + 2,0,6,0,12,0,28,0,56,0,120,0,112,0,240,0, + 224,112,224,112,224,112,240,48,112,48,60,224,31,192,23,32, + 96,23,0,0,6,0,0,7,0,0,3,128,0,1,192,0, + 0,96,0,0,48,0,0,0,0,0,16,0,0,56,0,0, + 56,0,0,120,0,0,124,0,0,124,0,0,220,0,0,222, + 0,1,158,0,1,142,0,1,143,0,3,7,0,3,7,128, + 3,7,128,6,3,128,7,255,192,7,255,192,12,1,192,12, + 1,224,12,1,224,24,0,240,24,0,240,56,0,248,124,1, + 252,254,3,254,23,32,96,23,0,0,0,1,128,0,3,128, + 0,7,0,0,14,0,0,24,0,0,48,0,0,0,0,0, + 16,0,0,56,0,0,56,0,0,120,0,0,124,0,0,124, + 0,0,220,0,0,222,0,1,158,0,1,142,0,1,143,0, + 3,7,0,3,7,128,3,7,128,6,3,128,7,255,192,7, + 255,192,12,1,192,12,1,224,12,1,224,24,0,240,24,0, + 240,56,0,248,124,1,252,254,3,254,23,31,93,23,0,0, + 0,24,0,0,60,0,0,126,0,0,195,0,1,129,128,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,30,90, + 23,0,0,0,241,128,1,255,0,3,30,0,0,0,0,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,30,90, + 23,0,0,1,134,0,3,207,0,1,134,0,0,0,0,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,32,96, + 23,0,0,0,120,0,0,204,0,0,132,0,0,132,0,0, + 204,0,0,120,0,0,0,0,0,16,0,0,56,0,0,56, + 0,0,120,0,0,124,0,0,124,0,0,220,0,0,222,0, + 1,158,0,1,142,0,1,143,0,3,7,0,3,7,128,3, + 7,128,6,3,128,7,255,192,7,255,192,12,1,192,12,1, + 224,12,1,224,24,0,240,24,0,240,56,0,248,124,1,252, + 254,3,254,30,25,100,32,0,0,1,255,255,252,0,127,255, + 252,0,29,192,124,0,25,192,28,0,25,192,28,0,49,192, + 12,0,49,192,140,0,97,192,132,0,97,193,132,0,193,193, + 128,0,193,195,128,1,129,255,128,1,129,255,128,3,1,195, + 128,3,255,193,128,7,255,193,128,6,1,192,132,12,1,192, + 132,12,1,192,4,24,1,192,12,24,1,192,12,48,1,192, + 28,48,1,192,124,120,7,255,252,254,31,255,252,20,32,96, + 22,1,249,0,248,96,3,255,96,15,7,224,28,1,224,60, + 0,224,56,0,224,120,0,96,120,0,96,240,0,96,240,0, + 32,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,48,120,0,48,120,0,32,120,0,96,60, + 0,96,28,0,192,14,1,128,7,207,0,1,254,0,0,32, + 0,0,64,0,0,240,0,0,24,0,0,24,0,1,24,0, + 0,240,0,20,32,96,24,1,0,3,0,0,3,128,0,1, + 192,0,0,224,0,0,48,0,0,24,0,0,0,0,255,255, + 240,63,255,240,14,1,240,14,0,112,14,0,112,14,0,48, + 14,4,48,14,4,16,14,4,16,14,12,0,14,60,0,15, + 252,0,15,252,0,14,60,0,14,12,0,14,12,0,14,4, + 16,14,4,16,14,0,16,14,0,48,14,0,48,14,0,112, + 14,1,240,63,255,240,255,255,240,20,32,96,24,1,0,0, + 1,128,0,3,128,0,7,0,0,14,0,0,24,0,0,48, + 0,0,0,0,255,255,240,63,255,240,14,1,240,14,0,112, + 14,0,112,14,0,48,14,4,48,14,4,16,14,4,16,14, + 12,0,14,60,0,15,252,0,15,252,0,14,60,0,14,12, + 0,14,12,0,14,4,16,14,4,16,14,0,16,14,0,48, + 14,0,48,14,0,112,14,1,240,63,255,240,255,255,240,20, + 32,96,24,1,0,0,48,0,0,120,0,0,252,0,1,134, + 0,3,3,0,0,0,0,0,0,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,112,14,0,48,14,4,48,14, + 4,16,14,4,16,14,12,0,14,60,0,15,252,0,15,252, + 0,14,60,0,14,12,0,14,12,0,14,4,16,14,4,16, + 14,0,16,14,0,48,14,0,48,14,0,112,14,1,240,63, + 255,240,255,255,240,20,30,90,24,1,0,0,198,0,1,239, + 0,0,198,0,0,0,0,0,0,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,112,14,0,48,14,4,48,14, + 4,16,14,4,16,14,12,0,14,60,0,15,252,0,15,252, + 0,14,60,0,14,12,0,14,12,0,14,4,16,14,4,16, + 14,0,16,14,0,48,14,0,48,14,0,112,14,1,240,63, + 255,240,255,255,240,11,32,64,13,1,0,96,0,112,0,56, + 0,28,0,6,0,3,0,0,0,255,224,63,128,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,63,128,255,224,11,32,64,13,1, + 0,0,192,1,192,3,128,7,0,12,0,24,0,0,0,255, + 224,63,128,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,63,128,255, + 224,11,31,62,13,1,0,6,0,15,0,31,128,48,192,96, + 96,0,0,255,224,63,128,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,63,128,255,224,11,30,60,13,1,0,49,128,123,192,49, + 128,0,0,0,0,255,224,63,128,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,63,128,255,224,22,25,75,24,1,0,255,252,0, + 255,255,128,30,7,192,14,1,224,14,0,240,14,0,112,14, + 0,120,14,0,120,14,0,56,14,0,60,14,0,60,14,0, + 60,127,224,60,127,224,60,14,0,60,14,0,60,14,0,60, + 14,0,56,14,0,120,14,0,120,14,0,112,14,0,224,14, + 1,192,255,255,128,255,254,0,26,30,120,28,1,0,0,30, + 48,0,0,63,224,0,0,99,192,0,0,0,0,0,0,0, + 0,0,255,0,255,192,31,0,63,0,15,128,12,0,15,192, + 12,0,15,192,12,0,13,224,12,0,13,240,12,0,12,248, + 12,0,12,120,12,0,12,124,12,0,12,62,12,0,12,30, + 12,0,12,31,12,0,12,15,140,0,12,7,140,0,12,7, + 204,0,12,3,204,0,12,1,236,0,12,0,236,0,12,0, + 252,0,12,0,124,0,12,0,60,0,12,0,60,0,63,0, + 28,0,255,192,12,0,22,32,96,24,1,0,6,0,0,7, + 0,0,3,128,0,1,192,0,0,96,0,0,48,0,0,0, + 0,1,254,0,7,255,128,15,3,192,28,0,224,60,0,240, + 56,0,112,120,0,120,120,0,120,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,56,120,0,120,120,0,120,56,0,112,60,0,240, + 28,0,224,15,3,192,7,255,128,1,254,0,22,32,96,24, + 1,0,0,3,0,0,7,0,0,14,0,0,28,0,0,48, + 0,0,96,0,0,0,0,1,254,0,7,255,128,15,3,192, + 28,0,224,60,0,240,56,0,112,120,0,120,120,0,120,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,56,120,0,120,120,0,120, + 56,0,112,60,0,240,28,0,224,15,3,192,7,255,128,1, + 254,0,22,31,93,24,1,0,0,48,0,0,120,0,0,252, + 0,1,134,0,3,3,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,22,30,90,24,1,0,0,241,128,1,255, + 0,3,30,0,0,0,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,22,30,90,24,1,0,0,198,0,1,239, + 0,0,198,0,0,0,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,17,15,45,20,2,1,224,3,128,112,7, + 0,56,14,0,28,28,0,14,56,0,7,112,0,3,224,0, + 1,192,0,3,224,0,7,112,0,14,56,0,28,28,0,56, + 14,0,112,7,0,224,3,128,22,28,84,24,1,254,0,0, + 24,1,254,48,7,255,176,14,3,224,28,0,224,60,1,240, + 56,1,240,120,3,120,120,6,120,240,6,60,240,12,60,240, + 24,60,240,56,60,240,48,60,240,96,60,240,224,60,240,192, + 60,113,128,56,123,0,120,123,0,120,62,0,112,60,0,240, + 30,1,224,31,3,192,55,255,128,113,254,0,96,0,0,192, + 0,0,26,32,128,26,0,0,0,48,0,0,0,56,0,0, + 0,28,0,0,0,14,0,0,0,3,0,0,0,1,128,0, + 0,0,0,0,255,224,255,192,63,128,63,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 15,0,24,0,7,0,24,0,7,128,48,0,3,224,240,0, + 1,255,192,0,0,127,0,0,26,32,128,26,0,0,0,0, + 48,0,0,0,112,0,0,0,224,0,0,1,192,0,0,3, + 0,0,0,6,0,0,0,0,0,0,255,224,255,192,63,128, + 63,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,15,0,24,0,7,0,24,0,7,128, + 48,0,3,224,240,0,1,255,192,0,0,127,0,0,26,31, + 124,26,0,0,0,6,0,0,0,15,0,0,0,31,128,0, + 0,48,192,0,0,96,96,0,0,0,0,0,255,224,255,192, + 63,128,63,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,15,0,24,0,7,0,24,0, + 7,128,48,0,3,224,240,0,1,255,192,0,0,127,0,0, + 26,30,120,26,0,0,0,48,192,0,0,121,224,0,0,48, + 192,0,0,0,0,0,0,0,0,0,255,224,255,192,63,128, + 63,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,15,0,24,0,7,0,24,0,7,128, + 48,0,3,224,240,0,1,255,192,0,0,127,0,0,23,32, + 96,23,0,0,0,1,128,0,3,128,0,7,0,0,14,0, + 0,24,0,0,48,0,0,0,0,255,131,254,126,0,248,62, + 0,112,30,0,96,15,0,224,15,0,192,7,129,128,7,193, + 128,3,195,0,3,227,0,1,230,0,0,246,0,0,252,0, + 0,124,0,0,120,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,254, + 0,3,255,128,20,25,75,22,1,0,255,224,0,31,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,15,254,0,15, + 255,128,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,3,224,15,255,192, + 15,255,0,14,0,0,14,0,0,14,0,0,14,0,0,31, + 0,0,255,224,0,17,26,78,19,0,255,3,248,0,7,156, + 0,14,14,0,14,15,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,14,0,28,14,0,28,248,0,28,248,0,28, + 14,0,28,7,0,28,7,0,28,7,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,231,128,28,231,0, + 60,231,0,252,254,0,0,56,0,16,23,46,17,1,0,12, + 0,14,0,7,0,3,128,0,192,0,96,0,0,7,192,31, + 240,120,120,112,56,112,56,112,56,1,248,15,248,60,56,112, + 56,224,56,224,56,224,120,240,253,127,159,63,14,16,23,46, + 17,1,0,0,48,0,112,0,224,1,192,3,0,6,0,0, + 0,7,192,31,240,120,120,112,56,112,56,112,56,1,248,15, + 248,60,56,112,56,224,56,224,56,224,120,240,253,127,159,63, + 14,16,22,44,17,1,0,3,0,7,128,15,192,24,96,48, + 48,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,21,42,17,1,0,15,24,31,240,49,224,0, + 0,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,21,42,17,1,0,12,96,30,240,12,96,0, + 0,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,23,46,17,1,0,7,128,12,192,8,64,8, + 64,12,192,7,128,0,0,7,192,31,240,120,120,112,56,112, + 56,112,56,1,248,15,248,60,56,112,56,224,56,224,56,224, + 120,240,253,127,159,62,14,23,16,48,25,1,0,15,195,224, + 63,231,248,112,124,28,112,60,12,112,56,14,112,56,14,1, + 248,14,15,255,254,60,56,0,112,56,0,240,56,0,224,60, + 2,224,124,6,240,254,28,127,207,248,63,3,240,12,23,46, + 14,1,249,7,128,31,224,56,112,112,240,112,240,224,96,224, + 0,224,0,224,0,224,0,240,0,240,16,120,48,124,96,63, + 192,15,0,2,0,4,0,15,0,1,128,1,128,17,128,15, + 0,14,23,46,16,1,0,24,0,28,0,14,0,7,0,1, + 128,0,192,0,0,7,192,31,240,56,56,112,24,112,28,240, + 28,240,28,255,252,224,0,224,0,240,0,240,4,120,12,60, + 56,31,240,7,192,14,23,46,16,1,0,0,24,0,56,0, + 112,0,224,1,128,3,0,0,0,7,192,31,240,56,120,112, + 56,96,28,224,28,224,28,255,252,224,0,224,0,240,0,240, + 4,120,12,60,56,31,240,7,192,14,22,44,16,1,0,3, + 0,7,128,15,192,24,96,48,48,0,0,7,192,31,240,56, + 56,112,24,112,28,240,28,240,28,255,252,224,0,224,0,240, + 0,240,4,120,12,60,56,31,240,7,192,14,21,42,16,1, + 0,12,96,30,240,12,96,0,0,0,0,7,192,31,240,56, + 56,112,24,112,28,240,28,240,28,255,252,224,0,224,0,240, + 0,240,4,120,12,60,24,31,240,7,192,9,23,46,11,1, + 0,192,0,224,0,112,0,56,0,12,0,6,0,0,0,252, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,9, + 23,46,11,1,0,1,128,3,128,7,0,14,0,24,0,48, + 0,0,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,255,128,10,22,44,11,0,0,12,0,30,0,63,0,97, + 128,192,192,0,0,126,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,127,192,9,21,42,11,1,0,99,0,247,128,99, + 0,0,0,0,0,252,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,255,128,14,25,50,17,1,0,48,0,60,0,14, + 224,7,192,15,128,13,192,0,224,0,240,0,112,7,248,31, + 248,56,120,112,60,112,60,224,28,224,28,224,28,224,28,224, + 28,224,28,240,60,112,56,120,120,63,240,15,192,19,21,63, + 19,0,0,3,198,0,7,252,0,12,120,0,0,0,0,0, + 0,0,28,120,0,253,254,0,31,158,0,30,15,0,30,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,255, + 31,224,14,23,46,16,1,0,48,0,56,0,28,0,14,0, + 3,0,1,128,0,0,7,128,31,224,56,112,112,56,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,240,60,112,56, + 120,120,31,224,7,128,14,23,46,16,1,0,0,24,0,56, + 0,112,0,224,1,128,3,0,0,0,7,128,31,224,56,112, + 112,56,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,56,120,120,31,224,7,128,14,22,44,16,1,0, + 3,0,7,128,15,192,24,96,48,48,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,14,21,42,16, + 1,0,15,24,31,240,49,224,0,0,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,14,21,42,16, + 1,0,24,192,61,224,24,192,0,0,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,16,16,32,20, + 2,0,1,128,3,192,3,192,1,128,0,0,0,0,0,0, + 255,255,255,255,0,0,0,0,0,0,1,128,3,192,3,192, + 1,128,14,22,44,16,1,253,0,24,0,24,0,48,7,240, + 31,240,56,112,112,248,112,216,225,156,225,156,227,28,227,28, + 230,28,230,28,236,56,124,56,120,112,63,224,63,128,48,0, + 96,0,96,0,18,23,69,20,0,0,6,0,0,7,0,0, + 3,128,0,1,192,0,0,96,0,0,48,0,0,0,0,28, + 7,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,15,0,28,15,0,14,63,0,15,247,192,7,199,0,18, + 23,69,20,0,0,0,12,0,0,28,0,0,56,0,0,112, + 0,0,192,0,1,128,0,0,0,0,28,7,0,252,63,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,15,0,28,15, + 0,14,63,0,15,247,192,7,199,0,18,22,66,20,0,0, + 0,192,0,1,224,0,3,240,0,6,24,0,12,12,0,0, + 0,0,28,7,0,252,63,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,15,0,28,15,0,14,63,0,15,247,192,7, + 199,0,18,21,63,20,0,0,3,24,0,7,188,0,3,24, + 0,0,0,0,0,0,0,28,7,0,252,63,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,15,0,28,15,0,14,63, + 0,15,247,192,7,199,0,17,30,90,19,1,249,0,12,0, + 0,28,0,0,56,0,0,112,0,0,192,0,1,128,0,0, + 0,0,255,31,128,124,7,0,60,6,0,28,6,0,30,12, + 0,14,12,0,15,8,0,7,24,0,7,24,0,7,176,0, + 3,176,0,3,224,0,1,224,0,1,224,0,0,192,0,0, + 192,0,1,128,0,1,128,0,99,0,0,227,0,0,230,0, + 0,252,0,0,112,0,0,16,29,58,19,1,249,56,0,248, + 0,56,0,56,0,56,0,56,0,56,240,59,252,63,30,60, + 14,60,15,56,7,56,7,56,7,56,7,56,7,56,7,60, + 15,60,14,62,30,59,252,57,240,56,0,56,0,56,0,56, + 0,56,0,56,0,255,0,18,28,84,20,1,249,3,24,0, + 7,188,0,3,24,0,0,0,0,0,0,0,255,31,192,124, + 7,0,60,6,0,28,6,0,30,12,0,14,12,0,15,8, + 0,7,24,0,7,24,0,7,176,0,3,176,0,3,224,0, + 1,224,0,1,224,0,0,192,0,0,192,0,1,128,0,1, + 128,0,99,0,0,227,0,0,230,0,0,252,0,0,112,0, + 0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=16 h=25 x= 3 y=11 dx=20 dy= 0 ascent=25 len=50 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24n[722] U8G_SECTION(".progmem.u8g_font_ncenR24n") = { + 0,39,50,250,245,24,0,0,0,0,42,57,0,25,250,24, + 0,12,14,28,17,2,11,6,0,6,0,6,0,198,112,230, + 112,127,224,31,128,31,0,127,192,230,112,198,112,6,0,6, + 0,6,0,16,17,34,20,2,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,255,255,255,255,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,5,10,10,9,2, + 250,112,248,248,120,24,24,48,96,224,128,8,3,3,11,1, + 7,255,255,255,4,4,4,9,2,0,96,240,240,96,10,25, + 50,9,255,0,0,192,0,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,48,0,48,0,48,0,96,0, + 96,0,96,0,192,0,16,24,48,18,2,0,3,192,15,240, + 28,56,24,24,56,28,120,30,112,14,240,15,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,112,14, + 120,30,56,28,24,24,28,56,15,240,3,192,13,24,48,18, + 3,0,3,0,7,0,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,15,128, + 255,248,15,24,48,18,1,0,7,224,31,248,56,28,96,30, + 112,14,120,14,120,14,120,14,48,30,0,28,0,28,0,56, + 0,120,0,112,0,224,1,192,3,128,7,2,14,2,28,6, + 56,6,127,254,255,254,255,254,15,24,48,18,1,0,7,224, + 31,248,56,56,112,28,120,28,120,28,48,28,0,28,0,56, + 0,112,1,224,15,240,0,248,0,60,0,28,0,30,96,14, + 240,14,240,14,240,30,224,28,120,124,63,240,15,192,16,24, + 48,18,1,0,0,48,0,48,0,112,0,240,1,240,1,240, + 3,112,6,112,6,112,12,112,24,112,24,112,48,112,96,112, + 96,112,192,112,255,255,255,255,0,112,0,112,0,112,0,112, + 0,248,3,254,14,24,48,18,2,0,56,8,63,248,63,240, + 63,224,48,0,48,0,32,0,96,0,99,192,111,240,124,120, + 112,56,96,60,0,28,0,28,0,28,96,28,240,28,240,28, + 240,60,224,56,112,120,127,240,31,128,15,24,48,18,1,0, + 3,240,15,252,28,62,56,30,56,30,48,12,112,0,112,0, + 112,0,241,224,247,248,254,60,252,28,248,30,240,14,240,14, + 240,14,112,14,112,14,112,30,56,28,56,60,31,240,7,192, + 13,24,48,18,3,0,255,248,255,248,255,248,192,16,192,48, + 128,32,128,96,128,64,0,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,7,0,7,0,7,0,15,0,15,0, + 15,0,15,0,6,0,15,24,48,18,1,0,7,224,31,248, + 60,56,56,28,112,28,112,12,112,12,120,24,60,56,63,112, + 31,224,7,240,7,248,29,252,56,124,112,30,112,30,224,14, + 224,14,224,14,112,28,120,60,63,248,15,224,15,24,48,18, + 1,0,15,192,63,240,120,120,112,56,240,60,224,28,224,28, + 224,30,224,30,240,30,240,62,120,126,120,126,63,222,31,158, + 0,30,0,28,0,28,96,56,240,56,240,112,241,224,127,192, + 63,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=31 h=31 x= 9 y=17 dx=31 dy= 0 ascent=27 len=100 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24r[5367] U8G_SECTION(".progmem.u8g_font_ncenR24r") = { + 0,39,50,250,245,25,5,159,15,28,32,127,249,27,249,25, + 249,0,0,0,9,1,1,4,25,25,10,3,0,96,240,240, + 240,240,240,240,96,96,96,96,96,96,96,96,96,96,96,0, + 0,0,96,240,240,96,9,8,16,13,2,17,227,128,227,128, + 227,128,227,128,65,0,65,0,65,0,65,0,16,23,46,19, + 2,0,3,12,3,12,3,12,7,28,6,24,6,24,6,24, + 127,255,127,255,6,24,14,56,12,56,12,48,255,254,255,254, + 12,48,12,48,28,112,28,112,24,96,24,96,24,96,24,96, + 14,31,62,18,2,252,2,0,2,0,2,0,15,192,63,240, + 114,112,226,56,194,120,194,120,194,48,194,0,226,0,250,0, + 127,0,63,192,31,240,3,248,2,124,2,60,98,28,242,12, + 242,12,226,28,194,24,226,120,127,240,31,192,2,0,2,0, + 2,0,2,0,24,25,75,27,1,255,3,128,32,15,192,224, + 28,227,192,56,127,192,56,97,128,112,97,128,112,99,0,240, + 99,0,224,102,0,224,196,0,224,204,0,225,136,28,115,24, + 126,62,16,227,0,49,195,0,99,195,0,99,131,0,199,131, + 0,199,3,1,135,6,1,135,6,3,7,12,2,3,152,6, + 1,240,4,0,0,22,25,75,27,2,0,1,248,0,7,188, + 0,6,28,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,15,112,0,7,224,0,7,128,0,15, + 199,252,59,193,240,113,224,224,113,240,192,224,240,192,224,249, + 128,224,125,128,240,63,4,240,30,4,248,15,12,126,63,248, + 63,243,248,31,193,224,3,8,8,7,2,17,224,224,224,224, + 64,64,64,64,8,29,29,11,2,252,1,7,6,12,24,48, + 48,48,96,96,96,96,224,224,224,224,224,96,96,96,96,48, + 48,16,24,12,6,7,3,8,29,29,11,2,252,192,224,96, + 48,24,8,12,12,6,6,6,6,7,7,7,7,7,6,6, + 6,6,12,12,28,24,48,96,192,192,12,14,28,17,2,11, + 6,0,6,0,6,0,198,112,230,112,127,224,31,128,31,0, + 127,192,230,112,198,112,6,0,6,0,6,0,16,17,34,20, + 2,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 255,255,255,255,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,5,10,10,9,2,250,112,248,248,120,24,24, + 48,96,224,128,8,3,3,11,1,7,255,255,255,4,4,4, + 9,2,0,96,240,240,96,10,25,50,9,255,0,0,192,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,6, + 0,6,0,6,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,96,0,192,0,16, + 24,48,18,2,0,3,192,15,240,28,56,24,24,56,28,120, + 30,112,14,240,15,240,15,240,15,240,15,240,15,240,15,240, + 15,240,15,240,15,240,15,112,14,120,30,56,28,24,24,28, + 56,15,240,3,192,13,24,48,18,3,0,3,0,7,0,255, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,15,128,255,248,15,24,48,18,1, + 0,7,224,31,248,56,28,96,30,112,14,120,14,120,14,120, + 14,48,30,0,28,0,28,0,56,0,120,0,112,0,224,1, + 192,3,128,7,2,14,2,28,6,56,6,127,254,255,254,255, + 254,15,24,48,18,1,0,7,224,31,248,56,56,112,28,120, + 28,120,28,48,28,0,28,0,56,0,112,1,224,15,240,0, + 248,0,60,0,28,0,30,96,14,240,14,240,14,240,30,224, + 28,120,124,63,240,15,192,16,24,48,18,1,0,0,48,0, + 48,0,112,0,240,1,240,1,240,3,112,6,112,6,112,12, + 112,24,112,24,112,48,112,96,112,96,112,192,112,255,255,255, + 255,0,112,0,112,0,112,0,112,0,248,3,254,14,24,48, + 18,2,0,56,8,63,248,63,240,63,224,48,0,48,0,32, + 0,96,0,99,192,111,240,124,120,112,56,96,60,0,28,0, + 28,0,28,96,28,240,28,240,28,240,60,224,56,112,120,127, + 240,31,128,15,24,48,18,1,0,3,240,15,252,28,62,56, + 30,56,30,48,12,112,0,112,0,112,0,241,224,247,248,254, + 60,252,28,248,30,240,14,240,14,240,14,112,14,112,14,112, + 30,56,28,56,60,31,240,7,192,13,24,48,18,3,0,255, + 248,255,248,255,248,192,16,192,48,128,32,128,96,128,64,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,7, + 0,7,0,7,0,15,0,15,0,15,0,15,0,6,0,15, + 24,48,18,1,0,7,224,31,248,60,56,56,28,112,28,112, + 12,112,12,120,24,60,56,63,112,31,224,7,240,7,248,29, + 252,56,124,112,30,112,30,224,14,224,14,224,14,112,28,120, + 60,63,248,15,224,15,24,48,18,1,0,15,192,63,240,120, + 120,112,56,240,60,224,28,224,28,224,30,224,30,240,30,240, + 62,120,126,120,126,63,222,31,158,0,30,0,28,0,28,96, + 56,240,56,240,112,241,224,127,192,63,0,4,16,16,9,3, + 0,96,240,240,96,0,0,0,0,0,0,0,0,96,240,240, + 96,5,21,21,9,1,251,48,120,120,48,0,0,0,0,0, + 0,0,0,48,120,120,56,24,16,48,96,192,16,18,36,20, + 2,255,0,1,0,7,0,31,0,124,1,240,7,192,31,0, + 124,0,240,0,240,0,124,0,31,0,7,192,1,240,0,124, + 0,31,0,7,0,1,16,8,16,20,2,4,255,255,255,255, + 0,0,0,0,0,0,0,0,255,255,255,255,16,18,36,20, + 2,255,128,0,224,0,248,0,62,0,15,128,3,224,0,248, + 0,62,0,15,0,15,0,62,0,248,3,224,15,128,62,0, + 248,0,224,0,128,0,12,25,50,14,1,0,63,128,115,224, + 192,224,192,240,224,112,224,112,224,112,0,240,0,240,1,224, + 1,192,3,128,3,0,6,0,4,0,4,0,12,0,12,0, + 0,0,0,0,0,0,12,0,30,0,30,0,12,0,22,25, + 75,25,1,0,0,254,0,3,255,128,15,135,192,30,0,224, + 28,0,112,48,0,56,48,0,24,96,251,152,97,207,140,227, + 143,140,199,135,140,199,7,12,207,7,12,207,15,8,206,15, + 24,206,14,24,206,30,48,102,62,96,103,126,192,51,231,152, + 56,0,56,28,0,112,15,129,224,7,255,128,0,254,0,23, + 25,75,23,0,0,0,16,0,0,56,0,0,56,0,0,120, + 0,0,124,0,0,124,0,0,220,0,0,222,0,1,158,0, + 1,142,0,1,143,0,3,7,0,3,7,128,3,7,128,6, + 3,128,7,255,192,7,255,192,12,1,192,12,1,224,12,1, + 224,24,0,240,24,0,240,56,0,248,124,1,252,254,3,254, + 20,25,75,23,1,0,255,254,0,63,255,128,14,7,192,14, + 1,192,14,1,224,14,1,224,14,1,224,14,1,224,14,1, + 192,14,1,192,14,3,128,15,255,0,15,252,0,14,15,128, + 14,3,192,14,1,224,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,240,14,1,224,14,3,224,63,255,192,255,255, + 0,20,25,75,22,1,0,1,252,96,7,255,96,14,3,224, + 28,1,224,60,0,224,56,0,224,120,0,96,120,0,96,240, + 0,32,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,48,120,0,48,120,0,48, + 120,0,96,60,0,96,28,0,192,15,3,128,7,255,0,1, + 252,0,22,25,75,25,1,0,255,254,0,63,255,192,14,3, + 224,14,0,240,14,0,112,14,0,120,14,0,120,14,0,60, + 14,0,60,14,0,60,14,0,60,14,0,60,14,0,60,14, + 0,60,14,0,60,14,0,60,14,0,60,14,0,60,14,0, + 56,14,0,120,14,0,112,14,0,224,14,3,224,63,255,192, + 255,254,0,20,25,75,24,1,0,255,255,240,63,255,240,14, + 1,240,14,0,112,14,0,112,14,0,48,14,4,48,14,4, + 16,14,4,16,14,12,0,14,60,0,15,252,0,15,252,0, + 14,60,0,14,12,0,14,12,0,14,4,16,14,4,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 240,255,255,240,20,25,75,22,1,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,48,14,0,48,14,0,16,14, + 4,16,14,4,16,14,12,0,14,12,0,14,60,0,15,252, + 0,15,252,0,14,28,0,14,12,0,14,4,0,14,4,0, + 14,4,0,14,0,0,14,0,0,14,0,0,14,0,0,63, + 128,0,255,224,0,24,25,75,24,1,0,1,254,48,7,255, + 176,15,3,240,30,0,240,60,0,112,56,0,112,120,0,48, + 112,0,48,112,0,16,240,0,16,240,0,0,240,0,0,240, + 0,0,240,0,0,240,7,255,240,0,248,240,0,112,112,0, + 112,112,0,112,120,0,112,56,0,240,28,0,240,15,1,176, + 7,255,48,1,254,16,25,25,100,27,1,0,255,227,255,128, + 63,128,254,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,15,255,248,0,15,255,248,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,63,128,254,0,255,227,255,128, + 11,25,50,13,1,0,255,224,63,128,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,63,128,255,224,17,25,75,18,0,0,3,255, + 128,0,124,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,112,56, + 0,248,56,0,248,56,0,248,56,0,240,56,0,192,120,0, + 224,112,0,127,240,0,31,192,0,25,25,100,25,1,0,255, + 227,255,0,63,129,252,0,14,0,240,0,14,0,224,0,14, + 1,192,0,14,1,128,0,14,3,0,0,14,6,0,0,14, + 14,0,0,14,28,0,0,14,56,0,0,14,124,0,0,14, + 254,0,0,15,222,0,0,15,143,0,0,15,7,128,0,14, + 7,192,0,14,3,192,0,14,1,224,0,14,1,240,0,14, + 0,240,0,14,0,120,0,14,0,124,0,63,0,62,0,255, + 192,255,128,20,25,75,22,1,0,255,224,0,63,128,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,16,14,0,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 224,255,255,224,29,25,100,30,0,0,127,128,15,248,31,128, + 15,192,15,128,15,128,15,192,15,128,13,192,27,128,13,192, + 27,128,13,224,19,128,12,224,51,128,12,224,51,128,12,240, + 35,128,12,112,99,128,12,112,99,128,12,120,99,128,12,56, + 195,128,12,56,195,128,12,60,195,128,12,28,131,128,12,29, + 131,128,12,31,131,128,12,31,3,128,12,15,3,128,12,15, + 3,128,12,14,3,128,63,6,15,224,255,198,63,248,26,25, + 100,28,1,0,255,0,255,192,31,0,63,0,15,128,12,0, + 15,192,12,0,15,192,12,0,13,224,12,0,13,240,12,0, + 12,248,12,0,12,120,12,0,12,124,12,0,12,62,12,0, + 12,30,12,0,12,31,12,0,12,15,140,0,12,7,140,0, + 12,7,204,0,12,3,204,0,12,1,236,0,12,0,236,0, + 12,0,252,0,12,0,124,0,12,0,60,0,12,0,60,0, + 63,0,28,0,255,192,12,0,22,25,75,24,1,0,1,254, + 0,7,255,128,15,3,192,28,0,224,60,0,240,56,0,112, + 120,0,120,112,0,56,240,0,60,240,0,60,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,240,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,28,0,224, + 15,3,192,7,255,128,1,254,0,20,25,75,22,1,0,255, + 254,0,63,255,128,14,7,192,14,1,224,14,0,240,14,0, + 240,14,0,112,14,0,112,14,0,240,14,0,240,14,1,224, + 14,7,192,15,255,128,15,254,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,63,128,0,255,224,0,23,31,93,24,1,250, + 0,254,0,3,255,128,15,1,224,30,0,240,60,0,120,56, + 0,56,120,0,60,112,0,28,240,0,30,240,0,30,224,0, + 14,224,0,14,224,0,14,224,0,14,240,0,30,240,0,30, + 112,124,28,121,222,60,121,135,56,61,3,112,29,3,112,31, + 3,224,15,131,192,3,255,128,0,255,192,0,3,198,0,1, + 198,0,1,228,0,1,252,0,0,248,0,0,112,21,25,75, + 23,1,0,255,254,0,63,255,128,14,7,192,14,1,192,14, + 1,224,14,0,224,14,0,224,14,1,224,14,1,224,14,1, + 192,14,3,192,14,15,0,15,252,0,15,254,0,14,15,0, + 14,7,0,14,7,128,14,3,128,14,3,128,14,3,136,14, + 3,136,14,3,136,14,3,216,63,129,240,255,225,224,17,25, + 75,20,2,0,15,241,0,63,251,0,112,31,0,96,7,0, + 224,7,0,224,3,0,224,1,0,240,1,0,240,0,0,126, + 0,0,127,224,0,31,252,0,7,254,0,0,127,0,0,15, + 128,128,7,128,128,3,128,192,3,128,192,3,128,192,3,128, + 224,7,128,240,7,0,248,14,0,223,252,0,135,240,0,19, + 25,75,21,1,0,255,255,224,255,255,224,240,227,224,224,224, + 224,192,224,96,192,224,96,128,224,32,128,224,32,128,224,32, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,3,248,0,15,254,0, + 26,25,100,26,0,0,255,224,255,192,63,128,63,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,15,0,24,0,7,0,24,0,7,128,48,0,3,224, + 240,0,1,255,192,0,0,127,0,0,23,25,75,23,0,0, + 255,195,254,62,0,248,30,0,112,30,0,112,14,0,96,15, + 0,96,15,0,64,7,0,192,7,128,192,7,128,128,3,129, + 128,3,193,128,3,193,0,1,195,0,1,227,0,1,226,0, + 0,230,0,0,246,0,0,244,0,0,124,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,16,0,31,25,100,31,0, + 0,255,31,241,254,126,7,192,124,60,3,128,56,28,3,128, + 48,30,3,192,48,30,3,192,96,14,3,192,96,14,3,224, + 96,15,3,224,96,7,6,224,192,7,6,224,192,7,132,240, + 192,7,140,112,192,3,140,113,128,3,140,121,128,3,200,57, + 128,1,216,57,0,1,248,63,0,1,248,31,0,0,240,31, + 0,0,240,30,0,0,240,30,0,0,224,14,0,0,96,12, + 0,0,96,12,0,23,25,75,22,0,0,255,199,252,63,1, + 240,31,0,224,15,1,192,15,129,128,7,131,128,3,195,0, + 3,230,0,1,238,0,0,252,0,0,248,0,0,120,0,0, + 124,0,0,124,0,0,254,0,1,223,0,1,143,0,3,135, + 128,3,7,128,6,3,192,14,3,224,12,1,224,28,0,240, + 62,0,248,255,135,254,23,25,75,23,0,0,255,131,254,126, + 0,248,62,0,112,30,0,96,15,0,224,15,0,192,7,129, + 128,7,193,128,3,195,0,3,227,0,1,230,0,0,246,0, + 0,252,0,0,124,0,0,120,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,254,0,3,255,128,17,25,75,19,1,0,127,255,128, + 127,255,128,120,15,0,112,15,0,96,30,0,96,62,0,96, + 60,0,64,124,0,64,120,0,0,240,0,0,240,0,1,224, + 0,3,224,0,3,192,0,7,128,0,7,128,128,15,0,128, + 31,0,128,30,1,128,62,1,128,60,1,128,120,3,128,120, + 7,128,255,255,128,255,255,128,7,29,29,11,3,252,254,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,254,15,25,50,20,2, + 0,224,0,112,0,112,0,56,0,56,0,28,0,28,0,14, + 0,14,0,7,0,7,0,3,128,3,128,3,128,1,192,1, + 192,0,224,0,224,0,112,0,112,0,56,0,56,0,28,0, + 28,0,14,7,29,29,11,1,252,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,254,16,13,26,20,2,12,3,192,3,192, + 7,224,7,224,14,112,14,112,28,56,28,56,56,28,56,28, + 112,14,112,14,224,7,16,2,4,16,0,252,255,255,255,255, + 7,6,6,11,1,17,192,224,112,56,12,6,16,16,32,17, + 1,0,15,192,63,240,120,120,112,56,96,56,0,56,1,248, + 15,248,60,56,112,56,224,56,224,56,224,120,241,253,127,159, + 62,14,15,25,50,17,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,57,224,59,248,62,28, + 60,28,60,14,56,14,56,14,56,14,56,14,56,14,56,14, + 60,14,60,28,62,28,55,248,33,224,12,16,32,14,1,0, + 7,128,31,224,56,112,112,240,112,240,224,96,224,0,224,0, + 224,0,224,0,224,0,112,16,112,48,56,96,63,192,15,128, + 16,25,50,18,1,0,0,12,0,124,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,7,156,31,220,56,124,112,60, + 112,60,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,60,120,124,31,220,7,159,14,16,32,16,1,0,7,192, + 31,240,56,120,112,56,96,28,224,28,224,28,255,252,224,0, + 224,0,224,0,240,4,112,12,120,56,63,240,15,192,14,25, + 50,11,0,0,1,248,7,28,14,28,12,28,28,8,28,0, + 28,0,28,0,28,0,255,192,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,255,192,16,23,46,17,1,249,7,159,31,251, + 56,115,112,56,112,56,112,56,112,56,112,56,56,112,31,224, + 55,128,96,0,96,0,127,224,127,248,63,252,48,62,96,14, + 224,14,224,14,248,60,127,248,15,192,19,25,75,20,0,0, + 12,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,112,0,29,252, + 0,31,30,0,30,14,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,255,63,224,9,24,48,10,1, + 0,24,0,60,0,60,0,24,0,0,0,0,0,0,0,0, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,255, + 128,9,31,62,10,254,249,3,0,7,128,7,128,3,0,0, + 0,0,0,0,0,0,0,3,128,31,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,67,128,227,0,227, + 0,230,0,124,0,19,25,75,20,0,0,12,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,127,128,28,30,0,28,24,0,28, + 48,0,28,96,0,28,192,0,29,192,0,31,224,0,30,240, + 0,28,120,0,28,60,0,28,28,0,28,14,0,28,15,0, + 28,7,128,255,31,224,9,25,50,11,1,0,12,0,28,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,27,16, + 64,27,0,0,28,240,120,0,253,252,254,0,31,29,142,0, + 30,15,7,0,30,15,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 255,63,159,224,19,16,48,19,0,0,28,120,0,253,254,0, + 31,142,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,255,31,224,14,16,32,16,1,0, + 7,128,31,224,56,112,112,56,112,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,112,56,56,112,31,224,7,128, + 16,23,46,19,1,249,25,240,251,252,62,30,60,14,60,7, + 56,7,56,7,56,7,56,7,56,7,56,7,60,14,60,14, + 62,28,59,252,57,240,56,0,56,0,56,0,56,0,56,0, + 124,0,255,0,16,23,46,17,1,249,7,196,31,236,56,60, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,60,56,124,63,220,15,156,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,14,16,32,15,0,0,28,120, + 253,252,31,60,30,60,30,24,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,11,16, + 32,15,2,0,30,192,127,192,225,192,192,192,192,192,240,64, + 254,0,127,128,63,192,7,224,128,224,192,96,192,96,224,224, + 255,192,159,0,12,23,46,13,0,0,4,0,4,0,12,0, + 12,0,28,0,28,0,60,0,255,224,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,16,28,16,28,48, + 28,48,30,96,15,224,7,192,18,16,48,20,0,0,28,7, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 15,0,28,15,0,30,63,0,15,247,192,7,199,0,17,16, + 48,17,0,0,255,31,128,124,7,0,60,6,0,30,6,0, + 30,12,0,14,12,0,15,8,0,7,24,0,7,24,0,7, + 176,0,3,176,0,3,224,0,1,224,0,1,224,0,0,192, + 0,0,192,0,24,16,48,24,0,0,254,127,63,120,60,14, + 56,28,12,60,28,28,28,30,24,28,30,24,14,54,16,14, + 39,48,15,103,48,7,103,96,7,67,96,3,195,192,3,195, + 192,3,129,192,1,129,128,1,129,128,16,16,32,19,1,0, + 255,127,60,28,30,24,14,48,15,48,7,96,3,192,3,192, + 1,224,3,224,6,112,12,120,28,56,56,60,120,30,254,127, + 18,23,69,20,1,249,255,31,192,60,7,0,60,6,0,28, + 6,0,30,12,0,14,12,0,15,8,0,7,24,0,7,24, + 0,7,176,0,3,176,0,3,224,0,1,224,0,1,224,0, + 0,192,0,0,192,0,1,128,0,1,128,0,99,0,0,243, + 0,0,230,0,0,252,0,0,112,0,0,13,16,32,15,1, + 0,127,248,120,120,96,240,96,224,65,224,67,192,3,128,7, + 128,15,0,14,0,30,8,60,8,56,24,120,56,240,248,255, + 248,6,30,30,11,3,252,12,28,56,48,48,48,48,48,48, + 48,48,48,48,112,224,224,112,48,48,48,48,48,48,48,48, + 48,48,56,28,12,2,25,25,20,9,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,6,30,30,11,2,252,192,224,112,48,48,48, + 48,48,48,48,48,48,48,56,28,28,56,48,48,48,48,48, + 48,48,48,48,48,112,224,192,16,4,8,20,2,6,30,3, + 127,135,225,254,192,120,255}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w=11 h= 9 x= 1 y= 4 dx=12 dy= 0 ascent= 9 len=10 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01[1535] U8G_SECTION(".progmem.u8g_font_orgv01") = { + 1,11,11,0,254,5,0,249,1,238,32,255,255,9,254,5, + 255,2,0,64,2,21,37,128,128,128,0,128,6,49,65,160, + 2,85,101,80,248,80,248,80,2,85,101,248,160,248,40,248, + 2,85,101,136,16,32,64,136,2,85,101,240,144,248,144,232, + 6,17,33,128,2,37,53,64,128,128,128,64,2,37,53,128, + 64,64,64,128,3,51,67,160,64,160,3,51,67,64,224,64, + 1,18,34,128,128,4,65,81,240,2,17,33,128,2,85,101, + 8,16,32,64,128,2,85,101,248,136,136,136,248,2,21,37, + 128,128,128,128,128,2,85,101,248,8,248,128,248,2,85,101, + 248,8,248,8,248,2,85,101,136,136,248,8,8,2,85,101, + 248,128,248,8,248,2,85,101,248,128,248,136,248,2,85,101, + 248,8,8,8,8,2,85,101,248,136,248,136,248,2,85,101, + 248,136,248,8,248,2,20,36,128,0,0,128,2,20,36,128, + 0,128,128,2,53,69,32,64,128,64,32,3,67,83,240,0, + 240,2,53,69,128,64,32,64,128,2,85,101,248,8,56,0, + 32,2,85,101,248,168,184,128,248,2,85,101,248,136,248,136, + 136,2,85,101,240,136,240,136,240,2,85,101,248,128,128,128, + 248,2,85,101,240,136,136,136,240,2,85,101,248,128,248,128, + 248,2,85,101,248,128,248,128,128,2,85,101,248,128,184,136, + 248,2,85,101,136,136,248,136,136,2,85,101,248,32,32,32, + 248,2,85,101,120,16,16,144,248,2,85,101,136,176,192,176, + 136,2,85,101,128,128,128,128,248,2,85,101,248,168,168,168, + 168,2,85,101,248,136,136,136,136,2,85,101,248,136,136,136, + 248,2,85,101,248,136,248,128,128,2,85,101,248,136,136,152, + 248,2,85,101,248,136,248,144,144,2,85,101,248,128,248,8, + 248,2,85,101,248,32,32,32,32,2,85,101,136,136,136,136, + 248,2,85,101,136,136,136,80,32,2,85,101,168,168,168,168, + 248,2,85,101,136,80,32,80,136,2,85,101,136,136,80,32, + 32,2,85,101,248,8,248,128,248,2,37,53,192,128,128,128, + 192,2,85,101,128,64,32,16,8,2,37,53,192,64,64,64, + 192,5,50,66,64,160,1,81,97,248,6,17,33,128,2,68, + 84,240,16,240,240,2,69,85,128,240,144,144,240,2,68,84, + 240,128,128,240,2,69,85,16,240,144,144,240,2,68,84,240, + 240,128,240,2,53,69,96,64,224,64,64,1,69,85,240,144, + 144,240,16,2,69,85,128,240,144,144,144,2,20,36,128,128, + 128,128,1,37,53,64,64,64,64,192,2,69,85,128,160,240, + 144,144,2,21,37,128,128,128,128,128,2,84,100,248,168,136, + 136,2,68,84,240,144,144,144,2,68,84,240,144,144,240,1, + 69,85,240,144,144,240,128,1,69,85,240,144,144,240,32,2, + 68,84,240,128,128,128,2,68,84,64,112,16,240,2,85,101, + 32,248,32,32,32,2,68,84,144,144,144,240,2,68,84,144, + 144,144,112,2,84,100,136,136,168,248,2,68,84,144,96,96, + 144,1,69,85,144,144,144,240,16,2,68,84,32,224,128,240, + 2,53,69,32,64,192,64,32,2,21,37,128,128,128,128,128, + 2,53,69,128,64,96,64,128,3,83,99,8,248,128,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 2,20,36,128,0,128,128,2,85,101,32,248,160,248,32,2, + 85,101,64,224,64,72,120,2,85,101,136,112,80,112,136,2, + 85,101,136,248,32,112,32,2,21,37,128,128,0,128,128,2, + 86,102,248,128,248,248,8,248,4,81,97,248,18,85,117,248, + 168,200,168,248,2,181,202,251,224,138,0,251,224,136,32,139, + 224,19,83,115,72,144,72,3,66,82,240,16,255,2,85,101, + 248,248,200,200,248,6,81,97,248,2,0,112,2,0,112,2, + 0,112,2,0,112,2,0,112,2,0,112,2,0,112,2,0, + 112,2,0,112,2,0,112,2,0,112,4,83,99,144,72,144, + 2,0,112,2,0,112,2,0,112,18,85,117,32,0,224,128, + 248,2,88,104,64,32,0,248,136,248,136,136,2,88,104,16, + 32,0,248,136,248,136,136,2,88,104,32,80,0,248,136,248, + 136,136,2,89,105,8,248,128,0,248,136,248,136,136,2,87, + 103,80,0,248,136,248,136,136,2,87,103,32,0,248,136,248, + 136,136,2,85,101,248,160,248,160,184,0,87,103,248,128,128, + 128,248,16,48,2,88,104,64,32,0,248,128,248,128,248,2, + 88,104,16,32,0,248,128,248,128,248,2,88,104,32,80,0, + 248,128,248,128,248,2,86,102,80,248,128,248,128,248,2,88, + 104,64,32,0,248,32,32,32,248,2,88,104,16,32,0,248, + 32,32,32,248,2,88,104,32,80,0,248,32,32,32,248,2, + 87,103,80,0,248,32,32,32,248,2,85,101,240,136,232,136, + 240,2,89,105,8,248,128,0,248,136,136,136,136,2,88,104, + 64,32,0,248,136,136,136,248,2,88,104,16,32,0,248,136, + 136,136,248,2,88,104,32,80,0,248,136,136,136,248,2,89, + 105,8,248,128,0,248,136,136,136,248,2,87,103,80,0,248, + 136,136,136,248,3,51,67,160,64,160,2,85,101,248,152,168, + 200,248,2,87,103,64,32,136,136,136,136,248,2,87,103,16, + 32,136,136,136,136,248,2,86,102,32,80,136,136,136,248,2, + 86,102,80,0,136,136,136,248,2,88,104,16,32,0,136,136, + 80,32,32,18,85,117,128,240,136,240,128,1,86,102,240,136, + 176,136,176,128,2,68,84,240,16,240,240,2,71,87,64,32, + 0,240,16,240,240,2,71,87,32,64,0,240,16,240,240,2, + 71,87,96,144,0,240,16,240,240,2,70,86,144,0,240,16, + 240,240,2,70,86,32,0,240,16,240,240,2,116,132,254,30, + 240,254,0,70,86,240,128,128,240,32,96,2,71,87,64,32, + 0,240,240,128,240,2,71,87,32,64,0,240,240,128,240,2, + 71,87,96,144,0,240,240,128,240,2,70,86,144,0,240,240, + 128,240,2,39,39,128,64,0,64,64,64,64,2,39,39,64, + 128,0,128,128,128,128,2,55,39,64,160,0,64,64,64,64, + 2,54,38,160,0,64,64,64,64,2,85,85,56,16,240,144, + 240,2,71,87,80,160,0,240,144,144,144,2,71,87,64,32, + 0,240,144,144,240,2,71,87,32,64,0,240,144,144,240,2, + 71,87,96,144,0,240,144,144,240,2,71,87,80,160,0,240, + 144,144,240,2,70,86,144,0,240,144,144,240,2,85,101,32, + 0,248,0,32,2,68,84,240,176,208,240,2,71,87,64,32, + 0,144,144,144,240,2,71,87,32,64,0,144,144,144,240,2, + 71,87,96,144,0,144,144,144,240,2,70,86,144,0,144,144, + 144,240,1,72,88,32,64,0,144,144,144,240,16,18,85,117, + 128,240,136,240,128,1,71,87,144,0,144,144,144,240,16}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01n[130] U8G_SECTION(".progmem.u8g_font_orgv01n") = { + 1,11,11,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,51,67,160,64,160,3,51,67,64,224,64,1,18,34, + 128,128,4,65,81,240,2,17,33,128,2,85,101,8,16,32, + 64,128,2,85,101,248,136,136,136,248,2,21,37,128,128,128, + 128,128,2,85,101,248,8,248,128,248,2,85,101,248,8,248, + 8,248,2,85,101,136,136,248,8,8,2,85,101,248,128,248, + 8,248,2,85,101,248,128,248,136,248,2,85,101,248,8,8, + 8,8,2,85,101,248,136,248,136,248,2,85,101,248,136,248, + 8,248}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01r[719] U8G_SECTION(".progmem.u8g_font_orgv01r") = { + 1,11,11,0,254,5,0,249,1,238,32,127,255,5,255,5, + 255,2,0,64,2,21,37,128,128,128,0,128,6,49,65,160, + 2,85,101,80,248,80,248,80,2,85,101,248,160,248,40,248, + 2,85,101,136,16,32,64,136,2,85,101,240,144,248,144,232, + 6,17,33,128,2,37,53,64,128,128,128,64,2,37,53,128, + 64,64,64,128,3,51,67,160,64,160,3,51,67,64,224,64, + 1,18,34,128,128,4,65,81,240,2,17,33,128,2,85,101, + 8,16,32,64,128,2,85,101,248,136,136,136,248,2,21,37, + 128,128,128,128,128,2,85,101,248,8,248,128,248,2,85,101, + 248,8,248,8,248,2,85,101,136,136,248,8,8,2,85,101, + 248,128,248,8,248,2,85,101,248,128,248,136,248,2,85,101, + 248,8,8,8,8,2,85,101,248,136,248,136,248,2,85,101, + 248,136,248,8,248,2,20,36,128,0,0,128,2,20,36,128, + 0,128,128,2,53,69,32,64,128,64,32,3,67,83,240,0, + 240,2,53,69,128,64,32,64,128,2,85,101,248,8,56,0, + 32,2,85,101,248,168,184,128,248,2,85,101,248,136,248,136, + 136,2,85,101,240,136,240,136,240,2,85,101,248,128,128,128, + 248,2,85,101,240,136,136,136,240,2,85,101,248,128,248,128, + 248,2,85,101,248,128,248,128,128,2,85,101,248,128,184,136, + 248,2,85,101,136,136,248,136,136,2,85,101,248,32,32,32, + 248,2,85,101,120,16,16,144,248,2,85,101,136,176,192,176, + 136,2,85,101,128,128,128,128,248,2,85,101,248,168,168,168, + 168,2,85,101,248,136,136,136,136,2,85,101,248,136,136,136, + 248,2,85,101,248,136,248,128,128,2,85,101,248,136,136,152, + 248,2,85,101,248,136,248,144,144,2,85,101,248,128,248,8, + 248,2,85,101,248,32,32,32,32,2,85,101,136,136,136,136, + 248,2,85,101,136,136,136,80,32,2,85,101,168,168,168,168, + 248,2,85,101,136,80,32,80,136,2,85,101,136,136,80,32, + 32,2,85,101,248,8,248,128,248,2,37,53,192,128,128,128, + 192,2,85,101,128,64,32,16,8,2,37,53,192,64,64,64, + 192,5,50,66,64,160,1,81,97,248,6,17,33,128,2,68, + 84,240,16,240,240,2,69,85,128,240,144,144,240,2,68,84, + 240,128,128,240,2,69,85,16,240,144,144,240,2,68,84,240, + 240,128,240,2,53,69,96,64,224,64,64,1,69,85,240,144, + 144,240,16,2,69,85,128,240,144,144,144,2,20,36,128,128, + 128,128,1,37,53,64,64,64,64,192,2,69,85,128,160,240, + 144,144,2,21,37,128,128,128,128,128,2,84,100,248,168,136, + 136,2,68,84,240,144,144,144,2,68,84,240,144,144,240,1, + 69,85,240,144,144,240,128,1,69,85,240,144,144,240,32,2, + 68,84,240,128,128,128,2,68,84,64,112,16,240,2,85,101, + 32,248,32,32,32,2,68,84,144,144,144,240,2,68,84,144, + 144,144,112,2,84,100,136,136,168,248,2,68,84,144,96,96, + 144,1,69,85,144,144,144,240,16,2,68,84,32,224,128,240, + 2,53,69,32,64,192,64,32,2,21,37,128,128,128,128,128, + 2,53,69,128,64,96,64,128,3,83,99,8,248,128,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 5 y=14 dx=27 dy= 0 ascent=24 len=72 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =18 descent=-6 + Max Font ascent =24 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18[7637] U8G_SECTION(".progmem.u8g_font_osb18") = { + 0,70,31,234,249,18,4,190,10,54,32,255,250,24,250,18, + 250,0,0,0,7,0,0,4,18,18,6,1,0,96,240,240, + 240,240,240,96,96,96,96,96,64,0,0,96,240,240,96,6, + 6,6,10,2,12,204,204,204,204,204,204,15,18,36,19,2, + 0,6,24,6,24,4,16,4,16,12,48,255,254,255,254,12, + 48,8,32,8,32,24,96,24,96,255,254,255,254,16,64,16, + 64,48,192,48,192,11,22,44,14,2,254,9,0,9,0,31, + 128,105,64,73,32,201,32,201,96,249,224,249,64,127,0,63, + 128,31,192,15,192,73,224,233,224,201,96,137,96,137,96,73, + 192,63,128,9,0,9,0,17,18,54,21,2,0,56,4,0, + 68,12,0,198,8,0,198,24,0,198,48,0,198,32,0,198, + 96,0,76,64,0,56,192,0,1,142,0,1,27,0,3,49, + 128,2,49,128,4,49,128,12,49,128,8,49,128,24,17,0, + 16,14,0,17,18,54,19,1,0,3,192,0,4,32,0,12, + 32,0,12,32,0,12,32,0,14,64,0,15,128,0,7,0, + 0,15,143,128,27,195,0,49,194,0,96,226,0,224,244,0, + 224,120,0,240,56,0,240,60,0,126,223,128,63,15,0,2, + 6,6,6,2,12,192,192,192,192,192,192,7,23,23,9,1, + 251,2,4,8,16,48,96,96,96,224,224,224,224,224,224,224, + 96,96,96,48,16,8,4,2,7,23,23,9,0,251,128,64, + 32,16,24,12,12,14,14,14,14,14,14,14,14,14,12,12, + 24,16,32,64,128,9,10,20,13,2,8,24,0,24,0,201, + 128,235,128,28,0,44,0,235,128,217,128,24,0,24,0,21, + 21,63,23,1,253,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,255,255,248,255,255,248,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,4,9,9,7,2,251,224,240,240,240,16,32, + 32,64,128,6,3,3,8,1,5,252,252,252,4,4,4,8, + 2,0,96,240,240,96,9,23,46,11,1,251,1,128,1,128, + 1,0,3,0,3,0,2,0,6,0,6,0,4,0,12,0, + 12,0,8,0,24,0,24,0,24,0,16,0,48,0,48,0, + 32,0,96,0,96,0,64,0,192,0,12,18,36,15,1,0, + 15,0,25,128,48,192,112,224,112,224,240,224,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,112,224,112,224,48,192, + 25,128,15,0,8,18,18,15,3,0,24,56,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,255,11,18,36,15, + 2,0,31,0,113,192,96,224,224,224,240,224,248,224,121,192, + 1,192,3,0,6,0,8,0,48,32,64,32,64,32,255,224, + 191,224,143,192,135,128,12,18,36,15,1,0,31,0,49,192, + 96,224,112,224,120,224,120,224,0,192,1,128,62,0,1,192, + 0,224,0,240,112,240,248,240,240,240,192,224,65,192,63,0, + 11,18,36,15,2,0,3,0,7,0,7,0,15,0,15,0, + 23,0,55,0,39,0,103,0,71,0,199,0,135,0,255,224, + 7,0,7,0,7,0,7,0,63,224,11,18,36,15,2,0, + 65,128,127,128,126,0,120,0,64,0,64,0,95,0,99,128, + 65,192,65,224,1,224,33,224,241,224,241,224,225,192,193,192, + 67,128,62,0,11,18,36,15,2,0,7,128,24,64,48,224, + 113,224,113,224,240,0,240,0,247,128,249,192,240,224,240,224, + 240,224,240,224,112,224,112,224,48,192,57,192,15,0,11,18, + 36,15,2,0,156,64,190,96,255,32,255,224,128,32,128,64, + 128,64,0,128,1,128,3,0,7,0,6,0,14,0,30,0, + 30,0,30,0,30,0,12,0,12,18,36,15,1,0,31,128, + 32,64,64,32,192,32,192,32,240,32,252,64,127,128,127,192, + 63,224,103,240,193,240,192,112,192,48,192,48,96,32,112,64, + 31,128,12,18,36,15,2,0,31,0,113,128,96,192,224,224, + 224,224,224,240,224,240,96,240,113,240,30,240,0,240,0,240, + 56,224,120,224,120,224,97,192,33,128,30,0,4,12,12,8, + 2,0,96,240,240,96,0,0,0,0,96,240,240,96,4,17, + 17,7,2,251,96,240,240,96,0,0,0,0,224,240,240,240, + 16,32,32,64,128,19,21,63,24,2,252,0,0,96,0,1, + 224,0,7,128,0,14,0,0,56,0,0,224,0,3,128,0, + 15,0,0,60,0,0,112,0,0,224,0,0,120,0,0,28, + 0,0,7,0,0,1,192,0,0,112,0,0,60,0,0,15, + 0,0,3,128,0,0,224,0,0,32,21,7,21,23,1,3, + 255,255,248,255,255,248,0,0,0,0,0,0,0,0,0,255, + 255,248,255,255,248,19,21,63,24,2,252,192,0,0,240,0, + 0,60,0,0,14,0,0,3,128,0,0,224,0,0,56,0, + 0,30,0,0,7,128,0,1,192,0,0,224,0,3,192,0, + 7,0,0,28,0,0,112,0,1,192,0,7,128,0,30,0, + 0,56,0,0,224,0,0,128,0,0,8,18,18,12,2,0, + 60,78,135,135,135,78,12,24,16,32,36,36,24,0,24,60, + 60,24,18,18,54,20,1,0,3,240,0,12,12,0,24,3, + 0,48,237,0,97,173,128,99,28,128,199,28,192,207,24,192, + 206,24,192,206,56,192,206,56,192,206,56,128,78,49,128,110, + 91,0,35,156,0,48,0,0,12,4,0,3,248,0,17,18, + 54,19,1,0,0,192,0,0,192,0,0,192,0,1,224,0, + 1,224,0,1,224,0,2,240,0,2,240,0,4,112,0,4, + 120,0,4,120,0,8,56,0,15,252,0,8,60,0,16,28, + 0,16,30,0,48,30,0,252,127,128,15,18,36,18,2,0, + 255,224,56,56,56,56,56,28,56,28,56,28,56,56,56,48, + 63,192,56,56,56,28,56,30,56,30,56,30,56,30,56,28, + 56,56,255,240,13,18,36,17,2,0,7,136,24,120,48,56, + 112,24,112,24,240,8,240,8,240,8,240,0,240,0,240,0, + 240,8,240,8,112,8,112,8,56,16,24,32,7,192,16,18, + 36,19,2,0,255,224,56,56,56,28,56,14,56,14,56,14, + 56,15,56,15,56,15,56,15,56,15,56,15,56,14,56,14, + 56,12,56,28,56,56,255,224,14,18,36,18,2,0,255,252, + 56,28,56,12,56,12,56,4,56,68,56,64,56,192,56,192, + 63,192,56,192,56,68,56,68,56,4,56,4,56,12,56,28, + 255,252,14,18,36,17,2,0,255,252,56,60,56,28,56,12, + 56,4,56,68,56,68,56,192,56,192,63,192,56,192,56,64, + 56,64,56,0,56,0,56,0,56,0,255,0,15,18,36,18, + 2,0,7,136,24,104,48,56,112,24,112,8,112,8,240,8, + 240,0,240,0,241,254,240,56,240,56,240,56,112,56,112,56, + 48,40,24,72,15,136,17,18,54,20,2,0,255,127,128,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,63,254,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,255, + 127,128,8,18,18,11,2,0,255,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,255,11,18,36,13,1,0, + 31,224,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,115,128,243,128,243,128,227,128,195,128, + 67,0,60,0,17,18,54,19,2,0,254,127,0,56,24,0, + 56,16,0,56,32,0,56,64,0,56,192,0,57,128,0,59, + 192,0,59,192,0,61,224,0,57,240,0,56,240,0,56,248, + 0,56,120,0,56,124,0,56,60,0,56,62,0,254,127,128, + 14,18,36,17,2,0,255,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,4,56,4,56,4, + 56,12,56,12,56,28,56,60,255,252,20,18,54,22,1,0, + 254,3,240,30,3,192,30,3,192,31,5,192,31,5,192,23, + 5,192,23,133,192,23,137,192,19,201,192,19,201,192,17,209, + 192,17,241,192,17,241,192,16,241,192,16,225,192,16,225,192, + 56,97,192,254,111,240,17,18,54,18,1,0,252,63,128,60, + 14,0,62,4,0,31,4,0,31,4,0,31,132,0,23,196, + 0,19,196,0,17,228,0,17,244,0,16,244,0,16,124,0, + 16,124,0,16,60,0,16,28,0,16,28,0,56,12,0,254, + 4,0,15,18,36,18,2,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,18,36,18, + 2,0,255,240,56,56,56,28,56,30,56,30,56,30,56,30, + 56,28,56,56,63,224,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,255,128,15,24,48,18,2,250,7,192,8,32, + 56,56,48,24,112,28,112,28,240,30,240,30,240,30,240,30, + 240,30,240,30,112,28,112,28,51,152,52,176,28,226,7,194, + 0,194,0,194,0,230,0,254,0,124,0,56,16,18,36,19, + 2,0,255,224,56,120,56,56,56,60,56,60,56,60,56,56, + 56,112,63,192,56,96,56,48,56,56,56,56,56,57,56,57, + 56,57,56,57,255,158,12,18,36,15,2,0,30,32,97,160, + 192,224,192,96,224,32,240,32,252,0,126,0,63,128,15,192, + 135,224,129,240,128,240,192,48,192,48,224,32,176,96,143,128, + 15,18,36,18,2,0,255,254,231,30,199,14,135,14,135,6, + 135,6,7,2,7,2,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,31,224,18,18,54,20,2,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,17,18,54,19,2,0,255,63,128,60, + 6,0,60,4,0,30,4,0,30,8,0,30,8,0,15,8, + 0,15,16,0,7,144,0,7,144,0,7,160,0,3,224,0, + 3,224,0,3,192,0,1,192,0,1,192,0,1,192,0,0, + 128,0,26,18,72,27,1,0,255,191,223,192,30,15,6,0, + 30,15,6,0,15,15,4,0,15,15,132,0,15,15,132,0, + 7,143,140,0,7,139,200,0,7,147,200,0,3,211,200,0, + 3,209,240,0,3,225,240,0,1,225,240,0,1,224,240,0, + 1,224,224,0,0,192,224,0,0,192,96,0,0,192,64,0, + 16,18,36,19,2,0,255,63,62,24,30,16,31,16,15,32, + 15,224,7,192,7,192,3,192,3,224,3,224,2,240,4,240, + 8,120,8,120,16,60,48,60,252,255,16,18,36,19,2,0, + 254,127,60,12,60,8,30,16,30,16,30,16,15,32,15,32, + 7,64,7,192,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,15,240,13,18,36,16,2,0,127,248,112,120,96,240, + 97,240,65,224,67,224,3,192,7,192,7,128,15,0,15,0, + 30,0,30,8,60,8,124,24,120,24,248,56,255,248,6,22, + 22,10,2,252,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,252,9,23,46,11,1,251, + 192,0,64,0,96,0,96,0,32,0,48,0,48,0,16,0, + 24,0,24,0,24,0,8,0,12,0,12,0,4,0,6,0, + 6,0,2,0,3,0,3,0,1,0,1,128,1,128,6,22, + 22,10,2,252,252,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,11,9,18,15,2,9, + 4,0,12,0,30,0,27,0,51,0,49,128,96,192,192,192, + 192,96,13,2,4,13,0,252,255,248,255,248,4,4,4,11, + 2,13,192,224,96,48,11,12,24,13,1,0,30,0,99,0, + 99,128,115,128,35,128,31,128,115,128,227,128,227,160,227,160, + 247,160,121,192,12,18,36,13,0,0,248,0,56,0,56,0, + 56,0,56,0,56,0,59,128,60,224,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,36,192,35,128,9,12, + 24,12,1,0,30,0,49,0,113,128,227,128,227,128,224,0, + 224,0,224,0,224,128,112,128,49,0,30,0,12,18,36,13, + 1,0,7,192,1,192,1,192,1,192,1,192,1,192,29,192, + 115,192,99,192,225,192,225,192,225,192,225,192,225,192,225,192, + 99,192,115,192,29,240,9,12,24,12,1,0,30,0,51,0, + 99,128,227,128,227,128,255,128,224,0,224,0,224,128,112,128, + 49,0,30,0,9,18,36,9,1,0,15,0,29,128,59,128, + 59,128,57,0,56,0,252,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,252,0,12,18, + 36,14,1,250,30,112,51,176,113,240,113,192,113,192,113,192, + 51,128,30,0,96,0,127,128,127,192,63,224,96,224,128,96, + 128,96,128,64,64,192,63,0,12,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,192,62,224,60,224, + 56,224,56,224,56,224,56,224,56,224,56,224,56,224,56,224, + 253,240,5,18,18,7,1,0,112,112,112,32,0,0,240,112, + 112,112,112,112,112,112,112,112,112,248,7,24,24,8,255,250, + 14,14,14,4,0,0,62,14,14,14,14,14,14,14,14,14, + 14,14,14,110,238,238,204,120,13,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,240,56,192,56,128, + 57,0,57,0,59,128,63,128,57,192,57,192,56,224,56,224, + 255,248,7,18,18,8,0,0,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,18,12,36,19,1,0, + 243,142,0,125,247,0,121,231,0,113,199,0,113,199,0,113, + 199,0,113,199,0,113,199,0,113,199,0,113,199,0,113,199, + 0,251,239,192,11,12,24,13,1,0,243,128,125,192,121,192, + 113,192,113,192,113,192,113,192,113,192,113,192,113,192,113,192, + 251,224,10,12,24,12,1,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 12,18,36,13,0,250,251,128,60,192,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,60,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,11,18,36,13,1,250, + 28,64,50,64,99,192,225,192,225,192,225,192,225,192,225,192, + 225,192,99,192,115,192,61,192,1,192,1,192,1,192,1,192, + 1,192,7,224,9,12,24,11,1,0,243,0,117,128,123,128, + 123,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 248,0,9,12,24,11,1,0,57,0,199,0,195,0,225,0, + 240,0,124,0,63,0,143,128,131,128,193,128,225,0,158,0, + 8,17,17,10,1,0,16,16,16,48,112,254,112,112,112,112, + 112,113,113,113,113,114,60,12,12,24,13,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,12,24,13,1,0,253,240,112,64,56, + 64,56,128,28,128,28,128,29,0,15,0,14,0,14,0,6, + 0,4,0,19,12,36,19,0,0,253,251,224,56,112,128,28, + 112,128,28,113,0,28,121,0,14,185,0,14,154,0,14,158, + 0,7,28,0,7,12,0,2,12,0,2,8,0,12,12,24, + 13,0,0,253,240,56,64,28,128,31,0,15,0,15,0,7, + 0,7,128,11,192,17,192,17,224,253,240,12,18,36,12,0, + 250,252,240,112,64,56,64,56,128,28,128,28,128,29,0,15, + 0,15,0,7,0,6,0,6,0,2,0,4,0,116,0,116, + 0,104,0,56,0,10,12,24,12,1,0,127,192,99,128,71, + 128,71,0,15,0,14,0,28,0,60,64,56,64,120,64,112, + 192,255,192,8,23,23,10,1,251,3,28,56,56,56,56,56, + 56,56,56,48,192,48,56,56,56,56,56,56,56,56,28,3, + 2,23,23,8,3,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,23,23, + 11,2,251,192,112,56,56,56,56,56,56,56,56,28,7,28, + 56,56,56,56,56,56,56,56,112,192,14,5,10,16,1,4, + 120,8,255,4,143,196,131,252,64,120,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,7,0, + 0,4,18,18,6,1,250,96,240,240,96,0,0,64,96,96, + 96,96,96,240,240,240,240,240,96,9,18,36,15,3,253,4, + 0,4,0,4,0,30,0,53,0,117,128,231,128,231,128,228, + 0,228,0,228,0,228,0,100,128,116,128,31,0,4,0,4, + 0,4,0,16,18,36,19,2,0,0,248,1,132,3,6,7, + 14,7,14,7,0,7,0,63,0,7,240,7,128,3,128,3, + 128,3,128,3,1,123,2,143,204,135,252,120,240,12,12,24, + 14,1,3,132,16,223,176,112,224,96,96,192,48,192,48,192, + 48,192,48,64,96,96,96,127,224,207,48,14,18,36,14,0, + 0,254,124,56,16,60,16,60,32,30,32,30,64,14,64,15, + 128,7,128,127,240,7,0,127,240,7,0,7,0,7,0,7, + 0,7,0,31,224,2,22,22,8,3,252,192,192,192,192,192, + 192,192,192,192,0,0,0,0,192,192,192,192,192,192,192,192, + 192,11,23,46,15,1,251,15,0,48,128,96,192,97,192,97, + 192,112,128,124,0,63,0,223,128,143,192,129,224,192,96,248, + 32,126,32,63,64,15,128,3,192,49,192,112,192,112,192,96, + 128,33,128,30,0,8,3,3,12,2,14,231,231,231,18,18, + 54,20,1,0,3,240,0,12,12,0,16,2,0,33,201,0, + 67,56,128,70,24,128,142,8,64,142,8,64,142,0,64,142, + 0,64,142,8,64,142,8,64,70,8,128,67,16,128,33,225, + 0,16,2,0,12,12,0,3,240,0,7,9,9,10,1,9, + 120,204,204,60,76,204,206,126,254,7,10,10,12,3,1,32, + 100,68,204,204,204,204,196,100,34,13,7,14,15,1,4,255, + 248,255,248,0,24,0,24,0,24,0,24,0,24,6,3,3, + 8,1,5,252,252,252,18,18,54,20,1,0,3,240,0,12, + 12,0,16,2,0,47,225,0,71,48,128,71,56,128,135,56, + 64,135,48,64,135,192,64,135,48,64,135,56,64,135,56,64, + 71,58,128,71,58,128,47,157,0,16,2,0,12,12,0,3, + 240,0,7,2,2,11,2,14,254,254,8,7,7,14,3,11, + 60,102,131,129,129,194,126,21,18,54,23,1,254,0,48,0, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,255, + 255,248,255,255,248,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,0,0,255,255,248, + 255,255,248,7,11,11,11,2,7,124,206,206,238,28,48,98, + 66,254,190,8,8,11,11,12,2,7,60,198,231,231,6,56, + 6,103,231,199,60,4,4,4,11,5,13,48,112,96,192,13, + 18,36,15,1,250,97,128,225,192,225,192,225,192,225,192,225, + 192,225,192,64,136,64,136,65,248,127,120,94,48,64,0,96, + 0,96,0,112,0,112,0,112,0,13,21,42,15,1,253,31, + 248,126,96,126,96,254,96,254,96,254,96,254,96,126,96,62, + 96,14,96,6,96,6,96,6,96,6,96,6,96,6,96,6, + 96,6,96,6,96,6,96,6,96,4,4,4,8,2,6,96, + 240,240,96,5,5,5,11,3,250,32,96,24,24,240,6,11, + 11,11,3,7,48,240,112,112,112,112,112,112,112,112,252,7, + 9,9,9,1,9,56,68,198,198,198,198,68,56,254,7,10, + 10,13,3,1,152,140,68,102,102,102,102,70,76,136,18,18, + 54,22,3,0,48,8,0,240,8,0,112,16,0,112,48,0, + 112,32,0,112,96,0,112,64,0,112,195,0,112,135,0,113, + 143,0,253,15,0,3,23,0,2,39,0,4,39,0,12,63, + 192,8,7,0,24,7,0,16,31,192,18,18,54,23,3,0, + 48,4,0,240,8,0,112,24,0,112,16,0,112,48,0,112, + 32,0,112,96,0,112,79,0,112,147,192,113,177,192,253,57, + 192,3,3,128,2,6,0,6,8,0,4,16,64,8,63,192, + 24,47,192,16,39,128,20,18,54,23,2,0,124,2,0,199, + 6,0,231,4,0,6,12,0,56,8,0,6,16,0,7,16, + 0,231,33,192,231,97,192,198,67,192,60,133,192,0,133,192, + 1,9,192,1,9,192,2,31,240,6,1,192,4,1,192,8, + 7,240,8,18,18,12,2,250,48,120,120,48,56,68,68,4, + 8,24,48,114,97,225,225,225,114,60,17,23,69,19,1,1, + 7,0,0,7,0,0,1,128,0,0,128,0,0,0,0,0, + 192,0,0,192,0,1,192,0,1,224,0,1,224,0,3,224, + 0,2,240,0,2,240,0,4,240,0,4,120,0,4,120,0, + 8,56,0,15,252,0,8,60,0,16,28,0,16,30,0,48, + 30,0,252,255,128,17,23,69,19,1,1,0,56,0,0,48, + 0,0,96,0,0,192,0,0,0,0,0,192,0,0,192,0, + 0,192,0,1,224,0,1,224,0,1,224,0,2,240,0,2, + 240,0,4,112,0,4,120,0,4,120,0,8,56,0,15,252, + 0,8,60,0,16,28,0,16,30,0,48,30,0,252,127,128, + 17,23,69,19,1,0,0,192,0,1,192,0,3,96,0,6, + 24,0,0,0,0,0,192,0,0,192,0,0,192,0,1,224, + 0,1,224,0,1,224,0,2,240,0,2,240,0,4,112,0, + 4,120,0,4,120,0,8,56,0,15,252,0,8,60,0,16, + 28,0,16,30,0,48,30,0,252,127,128,17,23,69,19,1, + 0,1,8,0,7,240,0,4,240,0,0,0,0,0,0,0, + 0,192,0,0,192,0,1,192,0,1,224,0,1,224,0,3, + 224,0,2,240,0,2,240,0,4,240,0,4,120,0,4,120, + 0,8,56,0,15,252,0,8,60,0,16,28,0,16,30,0, + 48,30,0,252,255,128,16,23,46,18,1,0,14,112,14,112, + 14,112,0,0,0,0,1,128,1,128,1,128,3,192,3,192, + 3,192,5,224,5,224,4,224,8,240,8,240,8,112,31,248, + 16,120,16,60,48,60,48,60,252,255,18,23,69,19,1,0, + 1,224,0,2,16,0,2,16,0,1,224,0,0,0,0,0, + 192,0,0,192,0,0,224,0,1,224,0,1,224,0,1,240, + 0,2,240,0,2,240,0,4,120,0,4,120,0,4,120,0, + 8,60,0,15,252,0,8,28,0,16,30,0,16,30,0,48, + 30,0,252,127,192,23,18,54,25,1,0,0,127,254,0,60, + 14,0,60,6,0,124,6,0,92,2,0,220,34,0,156,32, + 1,156,96,1,28,96,3,31,224,2,28,96,6,28,34,7, + 252,34,8,28,2,8,28,2,24,28,6,56,28,14,254,127, + 254,13,24,48,17,2,250,7,136,24,120,48,56,112,24,112, + 24,240,8,240,8,240,8,240,0,240,0,240,0,240,8,240, + 8,112,8,112,8,56,16,24,32,7,192,2,0,3,128,0, + 192,0,192,8,192,7,128,14,23,46,18,2,1,28,0,12, + 0,6,0,1,0,0,0,255,252,56,28,56,12,56,12,56, + 4,56,68,56,64,56,192,56,192,63,192,56,192,56,68,56, + 68,56,4,56,4,56,12,56,28,255,252,14,23,46,18,2, + 1,0,224,0,192,1,128,2,0,0,0,255,252,56,28,56, + 12,56,12,56,4,56,68,56,64,56,192,56,192,63,192,56, + 192,56,68,56,68,56,4,56,4,56,12,56,28,255,252,14, + 23,46,18,2,0,3,0,7,128,12,192,16,32,0,0,255, + 252,56,28,56,12,56,12,56,4,56,68,56,64,56,192,56, + 192,63,192,56,192,56,68,56,68,56,4,56,4,56,12,56, + 28,255,252,14,23,46,18,2,0,28,224,28,224,28,224,0, + 0,0,0,255,252,56,28,56,12,56,12,56,4,56,68,56, + 64,56,192,56,192,63,192,56,192,56,68,56,68,56,4,56, + 12,56,12,56,28,255,252,8,23,23,11,2,1,192,96,48, + 16,0,255,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,255,8,23,23,11,2,1,7,14,8,16,0,255, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 255,8,23,23,11,2,0,16,56,108,130,0,255,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,255,8,23, + 23,11,2,0,231,231,231,0,0,255,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,255,16,18,36,19,2, + 0,255,224,56,56,56,28,56,14,56,14,56,14,56,15,56, + 15,255,15,56,15,56,15,56,15,56,14,56,14,56,12,56, + 28,56,56,255,224,17,23,69,18,1,0,3,136,0,3,240, + 0,4,96,0,0,0,0,0,0,0,252,63,128,60,14,0, + 62,4,0,31,4,0,31,4,0,23,132,0,23,196,0,19, + 196,0,17,228,0,17,244,0,16,244,0,16,124,0,16,124, + 0,16,60,0,16,28,0,16,28,0,56,12,0,254,4,0, + 15,24,48,18,2,0,12,0,12,0,14,0,3,0,1,0, + 0,0,7,192,8,32,56,48,48,24,112,28,112,28,240,30, + 240,30,240,30,240,30,240,30,240,30,112,28,112,28,48,24, + 48,56,8,32,7,192,15,24,48,18,2,0,0,96,0,96, + 0,224,1,128,1,0,0,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,24,48,18, + 2,0,1,0,3,128,7,128,14,192,24,48,0,0,7,192, + 8,32,56,48,48,24,112,28,112,28,240,30,240,30,240,30, + 240,30,240,30,240,30,112,28,112,28,48,24,48,56,8,32, + 7,192,15,23,46,18,2,0,7,32,15,224,16,192,0,0, + 0,0,7,192,8,32,56,48,48,24,112,28,112,28,240,30, + 240,30,240,30,240,30,240,30,240,30,112,28,112,28,48,24, + 48,56,8,32,7,192,15,23,46,18,2,0,28,224,28,224, + 28,224,0,0,0,0,7,192,8,32,56,48,48,24,112,28, + 112,28,240,30,240,30,240,30,240,30,240,30,240,30,112,28, + 112,28,48,24,48,56,8,32,7,192,16,15,30,24,4,0, + 192,3,96,6,48,12,24,24,12,48,6,96,3,192,1,128, + 3,192,6,96,12,48,56,24,112,12,224,6,192,3,15,18, + 36,18,2,0,7,194,8,116,48,60,48,56,112,60,112,124, + 240,94,240,222,241,158,243,30,246,30,244,30,124,28,120,28, + 56,24,120,24,92,32,135,192,18,24,72,20,2,0,6,0, + 0,7,0,0,3,0,0,1,128,0,0,0,0,0,0,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,18,24,72,20,2,0,0,24,0,0, + 56,0,0,112,0,0,192,0,0,128,0,0,0,0,255,31, + 192,56,7,0,56,2,0,56,2,0,56,2,0,56,2,0, + 56,2,0,56,2,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,24,2,0,28,4,0,14,8, + 0,3,240,0,18,24,72,20,2,0,0,128,0,1,192,0, + 1,224,0,6,48,0,8,8,0,0,0,0,255,31,192,56, + 7,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,56,2,0,56,2,0, + 56,2,0,56,2,0,24,2,0,28,4,0,14,8,0,3, + 240,0,18,23,69,20,2,0,7,56,0,7,56,0,7,56, + 0,0,0,0,0,0,0,255,31,192,56,7,0,56,2,0, + 56,2,0,56,2,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,24,2,0,28,4,0,14,8,0,3,240,0,16,23,46, + 19,2,1,0,112,0,96,0,192,1,0,0,0,254,127,60, + 12,60,8,30,16,30,16,30,16,15,32,15,32,7,64,7, + 192,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 240,15,18,36,18,2,0,255,128,56,0,56,0,63,224,56, + 56,56,28,56,30,56,30,56,30,56,30,56,28,56,56,63, + 224,56,0,56,0,56,0,56,0,255,128,12,18,36,13,0, + 0,7,128,12,192,24,224,56,224,56,224,56,224,56,192,59, + 0,56,192,56,96,56,112,56,112,56,112,56,112,56,112,63, + 112,63,96,251,192,11,18,36,13,1,0,32,0,48,0,48, + 0,24,0,4,0,0,0,30,0,99,0,99,128,115,128,7, + 128,27,128,115,128,227,128,227,160,227,160,247,160,121,192,11, + 18,36,13,1,0,3,0,3,0,6,0,4,0,8,0,0, + 0,30,0,99,0,99,128,115,128,35,128,31,128,115,128,227, + 128,227,160,227,160,247,160,121,192,11,18,36,13,1,0,12, + 0,12,0,30,0,50,0,65,0,0,0,30,0,99,0,99, + 128,115,128,35,128,31,128,115,128,227,128,227,160,227,160,247, + 160,121,192,11,17,34,13,1,0,57,0,127,0,70,0,0, + 0,0,0,30,0,99,0,99,128,115,128,35,128,31,128,115, + 128,227,128,227,160,227,160,247,160,121,192,11,17,34,13,1, + 0,119,0,119,0,119,0,0,0,0,0,30,0,99,0,99, + 128,115,128,35,128,31,128,115,128,227,128,227,160,227,160,247, + 160,121,192,11,18,36,13,1,0,28,0,38,0,34,0,34, + 0,28,0,0,0,30,0,99,0,99,128,115,128,35,128,31, + 128,115,128,227,128,227,160,227,160,231,160,121,192,15,12,24, + 18,1,0,62,248,99,140,99,142,115,142,7,142,27,254,115, + 128,227,128,227,130,227,130,247,196,120,120,9,18,36,12,1, + 250,30,0,49,0,113,128,227,128,227,128,224,0,224,0,224, + 0,224,128,112,128,49,0,30,0,8,0,8,0,6,0,6, + 0,6,0,28,0,9,18,36,12,1,0,32,0,112,0,48, + 0,24,0,4,0,0,0,30,0,51,0,99,128,227,128,227, + 128,255,128,224,0,224,0,224,128,112,128,49,0,30,0,9, + 18,36,12,1,0,3,0,7,0,6,0,12,0,8,0,0, + 0,30,0,51,0,99,128,227,128,227,128,255,128,224,0,224, + 0,224,128,112,128,49,0,30,0,9,18,36,12,1,0,12, + 0,28,0,28,0,50,0,65,0,0,0,30,0,51,0,99, + 128,227,128,227,128,255,128,224,0,224,0,224,128,112,128,49, + 0,30,0,9,17,34,12,1,0,115,128,115,128,115,128,0, + 0,0,0,30,0,51,0,99,128,227,128,227,128,255,128,224, + 0,224,0,224,0,112,128,49,0,30,0,7,18,18,8,1, + 0,192,224,112,16,8,0,120,56,56,56,56,56,56,56,56, + 56,56,126,6,18,18,8,1,0,12,28,24,48,0,0,240, + 112,112,112,112,112,112,112,112,112,112,248,7,18,18,7,0, + 0,56,56,108,198,0,0,120,56,56,56,56,56,56,56,56, + 56,56,126,7,17,17,8,1,0,238,238,238,0,0,120,56, + 56,56,56,56,56,56,56,56,56,126,10,18,36,12,1,0, + 57,128,30,0,14,0,31,0,39,0,3,128,31,128,51,192, + 97,192,225,192,225,192,225,192,225,192,225,192,225,192,97,128, + 51,128,30,0,11,17,34,13,1,0,24,128,63,128,39,0, + 0,0,0,0,243,128,125,192,121,192,113,192,113,192,113,192, + 113,192,113,192,113,192,113,192,113,192,251,224,10,18,36,12, + 1,0,48,0,48,0,24,0,12,0,4,0,0,0,30,0, + 51,0,97,128,225,192,225,192,225,192,225,192,225,192,225,192, + 97,128,51,0,30,0,10,18,36,12,1,0,3,0,3,0, + 7,0,4,0,8,0,0,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 10,18,36,12,1,0,12,0,14,0,30,0,51,0,96,128, + 0,0,30,0,51,0,97,128,225,192,225,192,225,192,225,192, + 225,192,225,192,97,128,51,0,30,0,10,17,34,12,1,0, + 56,128,63,0,70,0,0,0,0,0,30,0,51,0,97,128, + 225,192,225,192,225,192,225,192,225,192,225,192,97,128,51,0, + 30,0,10,17,34,12,1,0,115,128,115,128,115,128,0,0, + 0,0,30,0,51,0,97,128,225,192,225,192,225,192,225,192, + 225,192,225,192,97,128,51,0,30,0,21,17,51,23,1,254, + 0,48,0,0,120,0,0,120,0,0,48,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,248,255,255,248,0,0, + 0,0,0,0,0,0,0,0,48,0,0,120,0,0,120,0, + 0,48,0,10,12,24,12,1,0,30,64,51,128,97,128,225, + 192,227,192,229,192,233,192,241,192,241,192,97,128,115,0,158, + 0,12,18,36,13,0,0,24,0,24,0,12,0,6,0,2, + 0,0,0,249,224,56,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,224,57,224,58,224,28,240,12,18,36,13,0, + 0,1,128,1,128,3,0,2,0,0,0,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,18,36,13,0,0,6,0,6,0,15, + 0,25,128,0,0,0,0,249,224,56,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,57,224,58,224,28,240,12, + 17,34,13,0,0,57,192,57,192,57,192,0,0,0,0,249, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 224,57,224,58,224,28,240,12,24,48,12,0,250,1,128,1, + 128,3,0,6,0,4,0,0,0,252,240,112,64,56,64,56, + 128,28,128,28,128,29,0,15,0,15,0,7,0,6,0,6, + 0,2,0,4,0,116,0,116,0,104,0,56,0,12,23,46, + 13,0,250,24,0,120,0,184,0,56,0,56,0,57,224,58, + 240,60,112,60,112,56,112,56,96,56,224,56,192,56,128,57, + 0,58,0,60,0,56,0,56,0,56,0,56,0,96,0,128, + 0,13,23,46,13,0,250,28,224,28,224,28,224,0,0,0, + 0,254,120,56,32,60,64,28,64,30,64,14,64,14,128,7, + 128,7,128,7,0,3,0,3,0,2,0,2,0,58,0,60, + 0,52,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 18 + Calculated Max Values w=21 h=23 x= 3 y= 8 dx=23 dy= 0 ascent=18 len=63 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18n[600] U8G_SECTION(".progmem.u8g_font_osb18n") = { + 0,70,31,234,249,18,0,0,0,0,42,57,0,18,251,18, + 0,9,10,20,13,2,8,24,0,24,0,201,128,235,128,28, + 0,44,0,235,128,217,128,24,0,24,0,21,21,63,23,1, + 253,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,255, + 255,248,255,255,248,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 4,9,9,7,2,251,224,240,240,240,16,32,32,64,128,6, + 3,3,8,1,5,252,252,252,4,4,4,8,2,0,96,240, + 240,96,9,23,46,11,1,251,1,128,1,128,1,0,3,0, + 3,0,2,0,6,0,6,0,4,0,12,0,12,0,8,0, + 24,0,24,0,24,0,16,0,48,0,48,0,32,0,96,0, + 96,0,64,0,192,0,12,18,36,15,1,0,15,0,25,128, + 48,192,112,224,112,224,240,224,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,48,192,25,128,15,0, + 8,18,18,15,3,0,24,56,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,255,11,18,36,15,2,0,31,0, + 113,192,96,224,224,224,240,224,248,224,121,192,1,192,3,0, + 6,0,8,0,48,32,64,32,64,32,255,224,191,224,143,192, + 135,128,12,18,36,15,1,0,31,0,49,192,96,224,112,224, + 120,224,120,224,0,192,1,128,62,0,1,192,0,224,0,240, + 112,240,248,240,240,240,192,224,65,192,63,0,11,18,36,15, + 2,0,3,0,7,0,7,0,15,0,15,0,23,0,55,0, + 39,0,103,0,71,0,199,0,135,0,255,224,7,0,7,0, + 7,0,7,0,63,224,11,18,36,15,2,0,65,128,127,128, + 126,0,120,0,64,0,64,0,95,0,99,128,65,192,65,224, + 1,224,33,224,241,224,241,224,225,192,193,192,67,128,62,0, + 11,18,36,15,2,0,7,128,24,64,48,224,113,224,113,224, + 240,0,240,0,247,128,249,192,240,224,240,224,240,224,240,224, + 112,224,112,224,48,192,57,192,15,0,11,18,36,15,2,0, + 156,64,190,96,255,32,255,224,128,32,128,64,128,64,0,128, + 1,128,3,0,7,0,6,0,14,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,15,1,0,31,128,32,64,64,32, + 192,32,192,32,240,32,252,64,127,128,127,192,63,224,103,240, + 193,240,192,112,192,48,192,48,96,32,112,64,31,128,12,18, + 36,15,2,0,31,0,113,128,96,192,224,224,224,224,224,240, + 224,240,96,240,113,240,30,240,0,240,0,240,56,224,120,224, + 120,224,97,192,33,128,30,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 3 y=13 dx=27 dy= 0 ascent=20 len=72 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =18 descent=-6 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18r[3611] U8G_SECTION(".progmem.u8g_font_osb18r") = { + 0,70,31,234,249,18,4,190,10,54,32,127,250,20,250,18, + 250,0,0,0,7,0,0,4,18,18,6,1,0,96,240,240, + 240,240,240,96,96,96,96,96,64,0,0,96,240,240,96,6, + 6,6,10,2,12,204,204,204,204,204,204,15,18,36,19,2, + 0,6,24,6,24,4,16,4,16,12,48,255,254,255,254,12, + 48,8,32,8,32,24,96,24,96,255,254,255,254,16,64,16, + 64,48,192,48,192,11,22,44,14,2,254,9,0,9,0,31, + 128,105,64,73,32,201,32,201,96,249,224,249,64,127,0,63, + 128,31,192,15,192,73,224,233,224,201,96,137,96,137,96,73, + 192,63,128,9,0,9,0,17,18,54,21,2,0,56,4,0, + 68,12,0,198,8,0,198,24,0,198,48,0,198,32,0,198, + 96,0,76,64,0,56,192,0,1,142,0,1,27,0,3,49, + 128,2,49,128,4,49,128,12,49,128,8,49,128,24,17,0, + 16,14,0,17,18,54,19,1,0,3,192,0,4,32,0,12, + 32,0,12,32,0,12,32,0,14,64,0,15,128,0,7,0, + 0,15,143,128,27,195,0,49,194,0,96,226,0,224,244,0, + 224,120,0,240,56,0,240,60,0,126,223,128,63,15,0,2, + 6,6,6,2,12,192,192,192,192,192,192,7,23,23,9,1, + 251,2,4,8,16,48,96,96,96,224,224,224,224,224,224,224, + 96,96,96,48,16,8,4,2,7,23,23,9,0,251,128,64, + 32,16,24,12,12,14,14,14,14,14,14,14,14,14,12,12, + 24,16,32,64,128,9,10,20,13,2,8,24,0,24,0,201, + 128,235,128,28,0,44,0,235,128,217,128,24,0,24,0,21, + 21,63,23,1,253,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,255,255,248,255,255,248,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,4,9,9,7,2,251,224,240,240,240,16,32, + 32,64,128,6,3,3,8,1,5,252,252,252,4,4,4,8, + 2,0,96,240,240,96,9,23,46,11,1,251,1,128,1,128, + 1,0,3,0,3,0,2,0,6,0,6,0,4,0,12,0, + 12,0,8,0,24,0,24,0,24,0,16,0,48,0,48,0, + 32,0,96,0,96,0,64,0,192,0,12,18,36,15,1,0, + 15,0,25,128,48,192,112,224,112,224,240,224,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,112,224,112,224,48,192, + 25,128,15,0,8,18,18,15,3,0,24,56,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,255,11,18,36,15, + 2,0,31,0,113,192,96,224,224,224,240,224,248,224,121,192, + 1,192,3,0,6,0,8,0,48,32,64,32,64,32,255,224, + 191,224,143,192,135,128,12,18,36,15,1,0,31,0,49,192, + 96,224,112,224,120,224,120,224,0,192,1,128,62,0,1,192, + 0,224,0,240,112,240,248,240,240,240,192,224,65,192,63,0, + 11,18,36,15,2,0,3,0,7,0,7,0,15,0,15,0, + 23,0,55,0,39,0,103,0,71,0,199,0,135,0,255,224, + 7,0,7,0,7,0,7,0,63,224,11,18,36,15,2,0, + 65,128,127,128,126,0,120,0,64,0,64,0,95,0,99,128, + 65,192,65,224,1,224,33,224,241,224,241,224,225,192,193,192, + 67,128,62,0,11,18,36,15,2,0,7,128,24,64,48,224, + 113,224,113,224,240,0,240,0,247,128,249,192,240,224,240,224, + 240,224,240,224,112,224,112,224,48,192,57,192,15,0,11,18, + 36,15,2,0,156,64,190,96,255,32,255,224,128,32,128,64, + 128,64,0,128,1,128,3,0,7,0,6,0,14,0,30,0, + 30,0,30,0,30,0,12,0,12,18,36,15,1,0,31,128, + 32,64,64,32,192,32,192,32,240,32,252,64,127,128,127,192, + 63,224,103,240,193,240,192,112,192,48,192,48,96,32,112,64, + 31,128,12,18,36,15,2,0,31,0,113,128,96,192,224,224, + 224,224,224,240,224,240,96,240,113,240,30,240,0,240,0,240, + 56,224,120,224,120,224,97,192,33,128,30,0,4,12,12,8, + 2,0,96,240,240,96,0,0,0,0,96,240,240,96,4,17, + 17,7,2,251,96,240,240,96,0,0,0,0,224,240,240,240, + 16,32,32,64,128,19,21,63,24,2,252,0,0,96,0,1, + 224,0,7,128,0,14,0,0,56,0,0,224,0,3,128,0, + 15,0,0,60,0,0,112,0,0,224,0,0,120,0,0,28, + 0,0,7,0,0,1,192,0,0,112,0,0,60,0,0,15, + 0,0,3,128,0,0,224,0,0,32,21,7,21,23,1,3, + 255,255,248,255,255,248,0,0,0,0,0,0,0,0,0,255, + 255,248,255,255,248,19,21,63,24,2,252,192,0,0,240,0, + 0,60,0,0,14,0,0,3,128,0,0,224,0,0,56,0, + 0,30,0,0,7,128,0,1,192,0,0,224,0,3,192,0, + 7,0,0,28,0,0,112,0,1,192,0,7,128,0,30,0, + 0,56,0,0,224,0,0,128,0,0,8,18,18,12,2,0, + 60,78,135,135,135,78,12,24,16,32,36,36,24,0,24,60, + 60,24,18,18,54,20,1,0,3,240,0,12,12,0,24,3, + 0,48,237,0,97,173,128,99,28,128,199,28,192,207,24,192, + 206,24,192,206,56,192,206,56,192,206,56,128,78,49,128,110, + 91,0,35,156,0,48,0,0,12,4,0,3,248,0,17,18, + 54,19,1,0,0,192,0,0,192,0,0,192,0,1,224,0, + 1,224,0,1,224,0,2,240,0,2,240,0,4,112,0,4, + 120,0,4,120,0,8,56,0,15,252,0,8,60,0,16,28, + 0,16,30,0,48,30,0,252,127,128,15,18,36,18,2,0, + 255,224,56,56,56,56,56,28,56,28,56,28,56,56,56,48, + 63,192,56,56,56,28,56,30,56,30,56,30,56,30,56,28, + 56,56,255,240,13,18,36,17,2,0,7,136,24,120,48,56, + 112,24,112,24,240,8,240,8,240,8,240,0,240,0,240,0, + 240,8,240,8,112,8,112,8,56,16,24,32,7,192,16,18, + 36,19,2,0,255,224,56,56,56,28,56,14,56,14,56,14, + 56,15,56,15,56,15,56,15,56,15,56,15,56,14,56,14, + 56,12,56,28,56,56,255,224,14,18,36,18,2,0,255,252, + 56,28,56,12,56,12,56,4,56,68,56,64,56,192,56,192, + 63,192,56,192,56,68,56,68,56,4,56,4,56,12,56,28, + 255,252,14,18,36,17,2,0,255,252,56,60,56,28,56,12, + 56,4,56,68,56,68,56,192,56,192,63,192,56,192,56,64, + 56,64,56,0,56,0,56,0,56,0,255,0,15,18,36,18, + 2,0,7,136,24,104,48,56,112,24,112,8,112,8,240,8, + 240,0,240,0,241,254,240,56,240,56,240,56,112,56,112,56, + 48,40,24,72,15,136,17,18,54,20,2,0,255,127,128,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,63,254,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,255, + 127,128,8,18,18,11,2,0,255,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,255,11,18,36,13,1,0, + 31,224,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,115,128,243,128,243,128,227,128,195,128, + 67,0,60,0,17,18,54,19,2,0,254,127,0,56,24,0, + 56,16,0,56,32,0,56,64,0,56,192,0,57,128,0,59, + 192,0,59,192,0,61,224,0,57,240,0,56,240,0,56,248, + 0,56,120,0,56,124,0,56,60,0,56,62,0,254,127,128, + 14,18,36,17,2,0,255,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,4,56,4,56,4, + 56,12,56,12,56,28,56,60,255,252,20,18,54,22,1,0, + 254,3,240,30,3,192,30,3,192,31,5,192,31,5,192,23, + 5,192,23,133,192,23,137,192,19,201,192,19,201,192,17,209, + 192,17,241,192,17,241,192,16,241,192,16,225,192,16,225,192, + 56,97,192,254,111,240,17,18,54,18,1,0,252,63,128,60, + 14,0,62,4,0,31,4,0,31,4,0,31,132,0,23,196, + 0,19,196,0,17,228,0,17,244,0,16,244,0,16,124,0, + 16,124,0,16,60,0,16,28,0,16,28,0,56,12,0,254, + 4,0,15,18,36,18,2,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,18,36,18, + 2,0,255,240,56,56,56,28,56,30,56,30,56,30,56,30, + 56,28,56,56,63,224,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,255,128,15,24,48,18,2,250,7,192,8,32, + 56,56,48,24,112,28,112,28,240,30,240,30,240,30,240,30, + 240,30,240,30,112,28,112,28,51,152,52,176,28,226,7,194, + 0,194,0,194,0,230,0,254,0,124,0,56,16,18,36,19, + 2,0,255,224,56,120,56,56,56,60,56,60,56,60,56,56, + 56,112,63,192,56,96,56,48,56,56,56,56,56,57,56,57, + 56,57,56,57,255,158,12,18,36,15,2,0,30,32,97,160, + 192,224,192,96,224,32,240,32,252,0,126,0,63,128,15,192, + 135,224,129,240,128,240,192,48,192,48,224,32,176,96,143,128, + 15,18,36,18,2,0,255,254,231,30,199,14,135,14,135,6, + 135,6,7,2,7,2,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,31,224,18,18,54,20,2,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,17,18,54,19,2,0,255,63,128,60, + 6,0,60,4,0,30,4,0,30,8,0,30,8,0,15,8, + 0,15,16,0,7,144,0,7,144,0,7,160,0,3,224,0, + 3,224,0,3,192,0,1,192,0,1,192,0,1,192,0,0, + 128,0,26,18,72,27,1,0,255,191,223,192,30,15,6,0, + 30,15,6,0,15,15,4,0,15,15,132,0,15,15,132,0, + 7,143,140,0,7,139,200,0,7,147,200,0,3,211,200,0, + 3,209,240,0,3,225,240,0,1,225,240,0,1,224,240,0, + 1,224,224,0,0,192,224,0,0,192,96,0,0,192,64,0, + 16,18,36,19,2,0,255,63,62,24,30,16,31,16,15,32, + 15,224,7,192,7,192,3,192,3,224,3,224,2,240,4,240, + 8,120,8,120,16,60,48,60,252,255,16,18,36,19,2,0, + 254,127,60,12,60,8,30,16,30,16,30,16,15,32,15,32, + 7,64,7,192,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,15,240,13,18,36,16,2,0,127,248,112,120,96,240, + 97,240,65,224,67,224,3,192,7,192,7,128,15,0,15,0, + 30,0,30,8,60,8,124,24,120,24,248,56,255,248,6,22, + 22,10,2,252,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,252,9,23,46,11,1,251, + 192,0,64,0,96,0,96,0,32,0,48,0,48,0,16,0, + 24,0,24,0,24,0,8,0,12,0,12,0,4,0,6,0, + 6,0,2,0,3,0,3,0,1,0,1,128,1,128,6,22, + 22,10,2,252,252,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,11,9,18,15,2,9, + 4,0,12,0,30,0,27,0,51,0,49,128,96,192,192,192, + 192,96,13,2,4,13,0,252,255,248,255,248,4,4,4,11, + 2,13,192,224,96,48,11,12,24,13,1,0,30,0,99,0, + 99,128,115,128,35,128,31,128,115,128,227,128,227,160,227,160, + 247,160,121,192,12,18,36,13,0,0,248,0,56,0,56,0, + 56,0,56,0,56,0,59,128,60,224,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,36,192,35,128,9,12, + 24,12,1,0,30,0,49,0,113,128,227,128,227,128,224,0, + 224,0,224,0,224,128,112,128,49,0,30,0,12,18,36,13, + 1,0,7,192,1,192,1,192,1,192,1,192,1,192,29,192, + 115,192,99,192,225,192,225,192,225,192,225,192,225,192,225,192, + 99,192,115,192,29,240,9,12,24,12,1,0,30,0,51,0, + 99,128,227,128,227,128,255,128,224,0,224,0,224,128,112,128, + 49,0,30,0,9,18,36,9,1,0,15,0,29,128,59,128, + 59,128,57,0,56,0,252,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,252,0,12,18, + 36,14,1,250,30,112,51,176,113,240,113,192,113,192,113,192, + 51,128,30,0,96,0,127,128,127,192,63,224,96,224,128,96, + 128,96,128,64,64,192,63,0,12,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,192,62,224,60,224, + 56,224,56,224,56,224,56,224,56,224,56,224,56,224,56,224, + 253,240,5,18,18,7,1,0,112,112,112,32,0,0,240,112, + 112,112,112,112,112,112,112,112,112,248,7,24,24,8,255,250, + 14,14,14,4,0,0,62,14,14,14,14,14,14,14,14,14, + 14,14,14,110,238,238,204,120,13,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,240,56,192,56,128, + 57,0,57,0,59,128,63,128,57,192,57,192,56,224,56,224, + 255,248,7,18,18,8,0,0,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,18,12,36,19,1,0, + 243,142,0,125,247,0,121,231,0,113,199,0,113,199,0,113, + 199,0,113,199,0,113,199,0,113,199,0,113,199,0,113,199, + 0,251,239,192,11,12,24,13,1,0,243,128,125,192,121,192, + 113,192,113,192,113,192,113,192,113,192,113,192,113,192,113,192, + 251,224,10,12,24,12,1,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 12,18,36,13,0,250,251,128,60,192,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,60,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,11,18,36,13,1,250, + 28,64,50,64,99,192,225,192,225,192,225,192,225,192,225,192, + 225,192,99,192,115,192,61,192,1,192,1,192,1,192,1,192, + 1,192,7,224,9,12,24,11,1,0,243,0,117,128,123,128, + 123,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 248,0,9,12,24,11,1,0,57,0,199,0,195,0,225,0, + 240,0,124,0,63,0,143,128,131,128,193,128,225,0,158,0, + 8,17,17,10,1,0,16,16,16,48,112,254,112,112,112,112, + 112,113,113,113,113,114,60,12,12,24,13,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,12,24,13,1,0,253,240,112,64,56, + 64,56,128,28,128,28,128,29,0,15,0,14,0,14,0,6, + 0,4,0,19,12,36,19,0,0,253,251,224,56,112,128,28, + 112,128,28,113,0,28,121,0,14,185,0,14,154,0,14,158, + 0,7,28,0,7,12,0,2,12,0,2,8,0,12,12,24, + 13,0,0,253,240,56,64,28,128,31,0,15,0,15,0,7, + 0,7,128,11,192,17,192,17,224,253,240,12,18,36,12,0, + 250,252,240,112,64,56,64,56,128,28,128,28,128,29,0,15, + 0,15,0,7,0,6,0,6,0,2,0,4,0,116,0,116, + 0,104,0,56,0,10,12,24,12,1,0,127,192,99,128,71, + 128,71,0,15,0,14,0,28,0,60,64,56,64,120,64,112, + 192,255,192,8,23,23,10,1,251,3,28,56,56,56,56,56, + 56,56,56,48,192,48,56,56,56,56,56,56,56,56,28,3, + 2,23,23,8,3,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,23,23, + 11,2,251,192,112,56,56,56,56,56,56,56,56,28,7,28, + 56,56,56,56,56,56,56,56,112,192,14,5,10,16,1,4, + 120,8,255,4,143,196,131,252,64,120,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=28 h=29 x= 5 y=17 dx=31 dy= 0 ascent=28 len=87 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21[9612] U8G_SECTION(".progmem.u8g_font_osb21") = { + 0,77,36,232,248,21,5,141,12,241,32,255,249,28,248,21, + 249,0,0,0,8,0,0,5,21,21,9,2,1,240,248,248, + 248,248,112,112,112,112,32,32,32,32,32,32,0,0,112,248, + 248,112,7,6,6,11,2,16,238,238,238,238,198,68,16,21, + 42,20,2,0,6,12,6,12,6,12,6,8,6,24,6,24, + 255,255,255,255,12,24,12,24,12,48,12,48,12,48,8,48, + 255,255,255,255,24,32,24,96,24,96,16,96,48,96,13,25, + 50,16,2,254,9,0,11,0,61,192,105,48,73,8,201,8, + 201,56,233,120,249,112,253,0,127,0,127,0,63,192,15,224, + 15,240,73,248,233,248,233,56,201,24,137,24,137,16,73,32, + 57,192,15,0,9,0,19,22,66,25,3,0,0,1,0,60, + 3,0,102,2,0,231,4,0,231,4,0,231,8,0,231,8, + 0,231,16,0,231,48,0,102,32,0,102,96,0,24,64,0, + 0,195,0,0,140,192,1,140,192,1,28,224,2,28,224,2, + 28,224,4,28,224,4,28,224,8,12,192,24,7,128,20,21, + 63,22,1,1,3,224,0,6,16,0,14,16,0,14,16,0, + 14,16,0,14,48,0,15,32,0,15,64,0,7,128,0,3, + 192,0,7,195,240,9,224,192,48,224,128,112,240,128,112,121, + 0,240,59,0,240,62,0,240,30,0,248,31,16,126,111,160, + 63,199,192,3,6,6,7,2,16,224,224,224,224,192,64,8, + 27,27,10,2,250,1,2,4,8,24,48,48,112,112,240,240, + 240,240,240,240,240,240,112,112,112,48,48,24,8,4,2,1, + 8,26,26,10,1,250,128,192,96,48,24,24,12,12,14,14, + 14,14,15,15,15,14,14,14,14,12,12,24,24,48,96,192, + 11,12,24,14,2,9,14,0,14,0,78,192,228,224,245,192, + 14,0,14,0,245,192,228,192,78,192,14,0,14,0,24,25, + 75,26,1,252,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,24,0,0,24,0,255,255,255,255,255,255,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,5, + 10,10,7,1,251,112,248,248,248,120,8,16,16,32,192,7, + 3,3,11,2,6,254,254,254,4,4,4,8,2,0,96,240, + 240,96,9,27,54,13,2,250,1,128,1,128,1,128,3,0, + 3,0,3,0,2,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,16,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,192,0,128,0,14,21, + 42,16,1,1,15,192,24,96,56,112,56,112,120,120,120,120, + 248,120,248,124,248,124,248,124,248,124,248,124,248,124,248,124, + 248,120,120,120,120,120,56,112,56,112,24,96,15,192,9,21, + 42,16,3,0,6,0,14,0,30,0,254,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,12,21, + 42,16,2,1,63,192,97,224,96,224,224,240,224,240,240,240, + 248,240,121,224,49,224,3,192,7,128,14,0,28,0,48,16, + 96,16,64,16,192,16,255,240,255,224,143,224,135,192,13,21, + 42,16,2,1,63,192,96,224,96,224,224,240,240,240,248,240, + 120,240,112,240,0,224,1,192,31,0,0,224,0,240,0,112, + 112,120,248,120,248,120,240,120,224,112,96,240,59,192,13,21, + 42,16,1,0,1,192,1,192,3,192,3,192,7,192,7,192, + 15,192,27,192,27,192,51,192,35,192,99,192,67,192,195,192, + 255,248,3,192,3,192,3,192,3,192,3,192,31,248,13,21, + 42,16,2,0,96,224,127,192,127,128,127,0,120,0,64,0, + 64,0,64,0,79,0,113,224,64,240,64,240,0,248,0,248, + 112,248,248,248,248,248,240,240,224,240,97,224,59,192,13,21, + 42,16,2,1,15,224,24,32,56,48,48,240,112,240,112,240, + 240,96,240,0,240,0,247,128,248,224,240,112,240,112,240,112, + 240,120,112,120,112,112,112,112,48,112,56,96,13,192,11,21, + 42,16,3,0,156,64,190,96,255,32,255,32,199,224,129,160, + 128,64,128,64,0,128,0,128,1,0,3,0,7,0,6,0, + 14,0,14,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,16,2,1,31,192,48,32,96,48,96,16,224,16,240,16, + 248,32,254,32,127,192,63,192,31,240,31,248,99,248,64,248, + 192,60,192,24,192,24,192,24,96,16,112,48,31,192,13,21, + 42,16,2,1,31,128,48,192,112,96,112,112,240,112,240,112, + 240,120,240,120,240,120,112,120,112,120,56,248,15,120,0,120, + 0,120,56,112,120,112,120,96,112,224,96,192,63,128,4,14, + 14,8,2,0,96,240,240,240,96,0,0,0,0,0,96,240, + 240,96,5,19,19,8,2,251,96,240,240,240,96,0,0,0, + 0,112,240,248,248,248,8,16,16,32,192,21,24,72,26,2, + 252,0,0,24,0,0,56,0,0,240,0,3,192,0,15,0, + 0,28,0,0,120,0,1,224,0,7,128,0,14,0,0,60, + 0,0,240,0,0,224,0,0,120,0,0,30,0,0,7,128, + 0,1,192,0,0,240,0,0,60,0,0,15,0,0,3,128, + 0,1,224,0,0,120,0,0,24,24,8,24,26,1,4,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,21,24,72,26,3,252,128,0,0, + 224,0,0,120,0,0,30,0,0,7,128,0,1,192,0,0, + 240,0,0,60,0,0,15,0,0,3,128,0,1,224,0,0, + 120,0,0,56,0,0,240,0,3,192,0,15,0,0,28,0, + 0,120,0,1,224,0,7,128,0,14,0,0,60,0,0,240, + 0,0,192,0,0,9,21,42,13,2,1,126,0,71,0,135, + 128,135,128,135,128,135,128,71,0,14,0,12,0,28,0,16, + 0,48,0,34,0,34,0,34,0,28,0,0,0,12,0,30, + 0,30,0,12,0,20,22,66,22,1,0,0,32,0,3,222, + 0,12,3,0,24,0,128,48,0,192,48,112,96,97,207,96, + 99,142,48,199,142,48,199,14,48,199,14,48,207,14,48,207, + 28,48,207,28,32,207,28,96,79,60,64,103,44,128,99,199, + 0,48,0,0,24,0,0,12,2,0,3,252,0,19,21,63, + 22,2,0,0,64,0,0,96,0,0,224,0,0,224,0,0, + 240,0,1,240,0,1,240,0,1,248,0,2,120,0,2,120, + 0,2,124,0,4,60,0,4,60,0,4,62,0,15,254,0, + 8,30,0,8,31,0,16,15,0,16,15,0,48,15,128,254, + 127,224,17,21,63,19,1,0,255,240,0,30,28,0,30,14, + 0,30,15,0,30,15,0,30,15,0,30,15,0,30,14,0, + 30,14,0,30,24,0,31,224,0,30,28,0,30,15,0,30, + 7,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 0,30,14,0,255,248,0,15,21,42,18,2,1,15,230,28, + 30,56,30,56,14,120,14,120,6,248,6,248,6,248,2,248, + 0,248,0,248,0,248,0,248,2,248,2,120,2,120,4,56, + 4,60,12,28,8,15,240,19,21,63,21,1,0,255,248,0, + 30,14,0,30,7,0,30,3,128,30,3,192,30,3,192,30, + 3,192,30,3,224,30,3,224,30,3,224,30,3,224,30,3, + 224,30,3,224,30,3,224,30,3,192,30,3,192,30,3,192, + 30,3,128,30,7,0,30,14,0,255,248,0,16,21,42,19, + 1,0,255,255,30,15,30,7,30,3,30,3,30,1,30,17, + 30,16,30,48,30,48,31,240,30,48,30,48,30,17,30,17, + 30,1,30,1,30,3,30,7,30,15,255,255,17,21,63,19, + 1,0,255,255,128,30,15,128,30,7,128,30,3,128,30,1, + 128,30,1,128,30,17,128,30,17,128,30,48,0,30,48,0, + 31,240,0,30,48,0,30,48,0,30,16,0,30,16,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,20,2,0,0,128,0,7,114,0,28,30,0, + 24,14,0,56,6,0,120,6,0,120,6,0,120,2,0,248, + 2,0,248,0,0,248,0,0,248,0,0,248,255,128,248,30, + 0,248,30,0,248,30,0,120,30,0,120,30,0,56,30,0, + 56,22,0,28,34,0,14,194,0,20,21,63,22,1,0,255, + 223,240,30,3,192,30,3,192,30,3,192,30,3,192,30,3, + 192,30,3,192,30,3,192,30,3,192,30,3,192,31,255,192, + 30,3,192,30,3,192,30,3,192,30,3,192,30,3,192,30, + 3,192,30,3,192,30,3,192,30,3,192,255,223,240,9,21, + 42,11,1,0,255,128,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,13,21, + 42,15,1,0,15,248,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,113,224, + 249,224,249,224,249,192,225,192,193,192,65,128,55,0,19,21, + 63,21,1,0,255,159,192,30,7,0,30,6,0,30,12,0, + 30,8,0,30,16,0,30,32,0,30,96,0,30,240,0,31, + 240,0,31,248,0,30,248,0,30,124,0,30,124,0,30,62, + 0,30,30,0,30,31,0,30,15,0,30,15,128,30,15,128, + 255,159,224,17,21,63,19,1,0,255,128,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,1,0, + 30,1,128,30,1,128,30,1,128,30,3,128,30,3,128,30, + 7,128,30,15,128,255,255,128,23,21,63,25,1,0,254,0, + 254,30,0,240,31,1,240,31,1,240,31,1,240,31,129,240, + 23,130,240,23,194,240,23,194,240,19,196,240,19,228,240,17, + 228,240,17,228,240,17,248,240,16,248,240,16,248,240,16,248, + 240,16,112,240,16,112,240,56,48,240,254,35,254,21,21,63, + 22,1,0,254,15,248,31,1,192,31,0,128,15,128,128,15, + 192,128,15,192,128,11,224,128,11,240,128,9,248,128,8,248, + 128,8,252,128,8,126,128,8,62,128,8,31,128,8,31,128, + 8,15,128,8,7,128,8,7,128,8,3,128,28,1,128,255, + 129,128,17,22,66,20,2,0,0,128,0,7,112,0,12,24, + 0,24,12,0,56,14,0,120,14,0,120,15,0,120,15,0, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,120,15,0,120,15,0,120,15,0,56,14, + 0,24,12,0,12,24,0,7,112,0,17,21,63,19,1,0, + 255,248,0,30,14,0,30,7,0,30,7,128,30,7,128,30, + 7,128,30,7,128,30,7,128,30,15,0,30,14,0,31,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,255,192,0,17, + 29,87,20,2,249,0,128,0,7,112,0,12,24,0,24,12, + 0,56,14,0,120,14,0,120,15,0,120,15,0,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,120,15,0,120,15,0,121,142,0,58,78,0,30,124, + 0,30,120,128,6,112,128,1,224,128,0,96,128,0,113,128, + 0,127,128,0,127,0,0,63,0,0,30,0,19,21,63,21, + 1,0,255,240,0,30,28,0,30,14,0,30,15,0,30,15, + 0,30,15,0,30,15,0,30,14,0,30,28,0,31,224,0, + 30,48,0,30,28,0,30,28,0,30,28,0,30,30,0,30, + 30,0,30,30,32,30,30,32,30,30,32,30,14,64,255,207, + 192,13,22,44,17,3,0,4,0,59,144,64,240,192,112,192, + 112,224,48,240,48,248,16,254,16,127,0,63,128,31,224,15, + 240,131,240,129,248,128,120,192,56,192,24,224,24,224,16,240, + 48,159,192,17,21,63,20,2,0,255,255,128,227,207,128,195, + 199,128,195,195,128,131,195,128,131,193,128,131,193,128,3,193, + 128,3,192,128,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,31,248,0,19,21,63,22,2,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,28,1,0,28,2,0,14,4,0,7,248,0,20,21,63, + 22,1,0,255,207,240,30,1,128,31,1,0,31,1,0,15, + 1,0,15,130,0,15,130,0,7,130,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,232,0,1,248,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 96,0,28,21,84,31,2,0,255,191,231,240,62,15,129,192, + 30,7,129,128,30,7,129,128,31,7,193,0,15,7,193,0, + 15,7,193,0,15,143,226,0,7,137,226,0,7,137,226,0, + 7,201,246,0,3,208,244,0,3,208,244,0,3,240,252,0, + 1,240,124,0,1,224,120,0,1,224,120,0,0,224,56,0, + 0,192,48,0,0,192,48,0,0,64,16,0,19,21,63,20, + 1,0,255,159,192,63,6,0,31,6,0,15,4,0,15,136, + 0,7,152,0,7,208,0,3,240,0,3,224,0,1,240,0, + 1,240,0,0,248,0,1,248,0,3,124,0,2,124,0,6, + 62,0,4,62,0,8,30,0,24,31,0,24,31,128,254,63, + 224,18,21,63,21,2,0,255,31,192,62,7,0,30,6,0, + 30,4,0,31,4,0,15,4,0,15,136,0,7,136,0,7, + 144,0,7,208,0,3,240,0,3,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,7,248,0,15,21,42,19,2,0,127,254,120,62, + 112,124,96,124,96,248,64,248,65,240,1,240,3,224,3,224, + 7,192,7,128,15,128,31,2,31,2,62,2,62,6,124,6, + 124,14,248,30,255,254,7,26,26,11,2,251,254,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,254,10,27,54,13,1,250,192,0,96,0, + 96,0,96,0,32,0,48,0,48,0,48,0,24,0,24,0, + 24,0,12,0,12,0,12,0,4,0,6,0,6,0,6,0, + 3,0,3,0,3,0,1,128,1,128,1,128,0,128,0,192, + 0,192,7,26,26,11,2,251,254,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,254,12,10,20,16,2,12,6,0,7,0,15,0,29,128, + 25,128,48,192,48,224,96,96,224,48,192,48,15,2,4,15, + 0,251,255,254,255,254,5,5,5,12,2,16,192,224,112,48, + 24,12,14,28,14,1,0,30,0,99,128,99,192,243,192,115, + 192,35,192,15,192,51,192,115,192,243,192,243,208,243,208,243, + 208,125,224,13,21,42,14,0,0,252,0,60,0,60,0,60, + 0,60,0,60,0,60,0,61,192,62,96,60,112,60,112,60, + 120,60,120,60,120,60,120,60,120,60,120,60,112,52,112,38, + 96,35,192,10,14,28,13,1,0,15,0,56,128,112,192,113, + 192,243,192,243,128,240,0,240,0,240,0,240,0,112,64,112, + 64,56,128,15,0,13,21,42,15,1,0,3,224,1,224,1, + 224,1,224,1,224,1,224,1,224,29,224,51,224,113,224,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,248,11,14,28,13,1,0,15,0,51,128,113, + 192,113,192,241,192,241,224,255,224,240,0,240,0,240,32,112, + 64,112,64,56,128,15,0,11,21,42,10,1,0,7,128,12, + 192,28,192,61,224,61,192,60,0,60,0,254,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,254,0,14,21,42,16,1,249,15,24,57, + 236,121,252,121,248,121,224,121,224,57,192,57,192,15,0,112, + 0,192,0,255,0,255,224,127,240,63,248,64,56,128,24,128, + 16,128,48,96,96,31,128,14,21,42,16,1,0,252,0,60, + 0,60,0,60,0,60,0,60,0,60,0,61,224,62,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,120,60,120,254,252,6,21,21,8,1,0,48,120,120, + 48,0,0,0,248,120,120,120,120,120,120,120,120,120,120,120, + 120,252,8,28,28,8,255,249,6,15,15,6,0,0,0,31, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,255, + 239,238,206,56,14,21,42,16,1,0,252,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,248,60,96,60,64,60,128, + 60,128,61,128,63,128,63,192,61,224,60,224,60,240,60,112, + 60,120,254,252,8,21,21,9,1,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,255,20, + 14,42,23,2,0,249,199,128,126,233,192,120,241,192,120,241, + 224,120,241,224,120,241,224,120,241,224,120,241,224,120,241,224, + 120,241,224,120,241,224,120,241,224,120,241,224,253,251,240,13, + 14,28,16,2,0,251,192,124,224,120,224,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,253, + 248,12,14,28,14,1,0,15,0,49,128,112,192,112,224,240, + 224,240,224,240,240,240,240,240,224,240,224,112,224,112,192,49, + 128,15,0,13,21,42,15,1,249,253,192,62,96,60,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,112,60, + 112,62,96,61,192,60,0,60,0,60,0,60,0,60,0,60, + 0,254,0,13,21,42,14,1,249,30,32,51,32,113,96,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,224,1,224,1,224,1,224,1,224,1,224,1, + 224,3,248,10,14,28,12,2,0,251,128,125,128,123,192,123, + 128,121,128,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,252,0,10,14,28,13,2,0,60,128,67,128,193, + 128,193,128,224,128,248,0,126,0,63,128,143,128,131,192,192, + 192,224,192,240,128,143,0,9,20,40,10,0,0,8,0,8, + 0,8,0,24,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,128,56,128,56,128,56,128,57, + 128,57,0,14,0,14,14,28,15,0,0,253,248,60,120,60, + 120,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,248,29,120,14,124,13,14,28,15,1,0,252,248,120, + 32,56,32,60,32,28,64,28,64,30,64,14,128,14,128,15, + 0,7,0,7,0,6,0,2,0,20,14,42,22,1,0,253, + 253,240,120,120,64,56,120,64,60,56,64,28,120,128,28,124, + 128,30,92,128,14,157,0,14,159,0,15,143,0,7,14,0, + 7,14,0,6,6,0,2,4,0,13,14,28,15,1,0,254, + 248,60,96,60,64,30,128,30,128,15,0,7,0,7,128,7, + 192,11,192,9,224,16,224,48,240,253,248,13,21,42,15,1, + 249,252,248,120,32,56,32,60,64,28,64,28,64,30,64,14, + 128,15,128,7,128,7,128,7,0,3,0,3,0,2,0,2, + 0,50,0,122,0,116,0,116,0,56,0,11,14,28,13,1, + 0,127,224,97,224,67,192,67,128,71,128,15,0,15,0,30, + 0,30,32,60,32,56,32,120,96,240,224,255,224,9,27,54, + 12,1,250,0,128,7,0,14,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,28,0,28,0,56,0,224,0,56, + 0,28,0,28,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,14,0,7,0,0,128,2,27,27,8,3,250,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,9,27,54,13,2,250, + 192,0,56,0,28,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,14,0,1,128,14,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,28,0, + 28,0,56,0,192,0,16,6,12,18,1,5,124,2,127,1, + 143,193,131,241,128,254,64,62,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,8,0,0,5, + 21,21,9,2,249,112,248,248,112,0,0,32,32,32,32,32, + 112,112,112,112,248,248,248,248,248,112,10,21,42,16,3,253, + 2,0,2,0,2,0,15,0,26,128,50,192,114,192,243,192, + 243,192,242,0,242,0,242,0,242,0,242,64,114,64,50,64, + 30,128,15,0,2,0,2,0,2,0,17,21,63,20,2,1, + 0,254,0,1,131,0,3,131,0,3,135,128,7,135,128,7, + 135,0,7,128,0,7,128,0,7,128,0,31,128,0,39,248, + 0,7,128,0,7,192,0,3,192,0,3,128,0,3,128,0, + 3,128,128,123,1,128,143,135,0,135,254,0,121,252,0,13, + 13,26,17,2,3,207,152,255,248,112,112,96,48,192,24,192, + 24,192,24,192,24,192,24,96,48,112,112,255,248,207,152,15, + 21,42,16,1,0,254,126,124,24,124,24,60,16,60,16,30, + 32,30,32,30,64,15,64,15,128,7,128,127,248,7,128,127, + 248,7,128,7,128,7,128,7,128,7,128,7,128,63,240,2, + 26,26,8,3,251,192,192,192,192,192,192,192,192,192,192,0, + 0,0,0,0,0,192,192,192,192,192,192,192,192,192,192,13, + 27,54,18,1,250,15,128,16,64,32,96,96,224,97,224,97, + 224,112,128,124,0,63,0,95,192,79,240,195,240,192,248,224, + 56,248,24,126,16,127,144,31,224,7,224,1,224,48,224,120, + 96,120,96,112,96,96,192,48,128,31,0,9,4,8,13,2, + 16,99,0,247,128,247,128,99,0,20,21,63,22,1,1,3, + 252,0,12,3,0,16,0,128,32,0,64,32,244,64,65,140, + 32,67,132,32,131,132,16,135,132,16,135,132,16,135,128,16, + 135,128,16,135,128,16,135,130,16,67,132,32,67,132,32,33, + 136,64,32,240,64,16,0,128,12,3,0,3,252,0,8,11, + 11,10,1,10,56,76,108,108,60,204,205,205,118,0,255,7, + 11,11,13,3,2,34,68,196,204,204,204,204,204,68,98,34, + 14,8,16,16,1,4,255,252,255,252,0,12,0,12,0,12, + 0,12,0,12,0,12,7,3,3,11,2,6,254,254,254,20, + 21,63,22,1,1,3,252,0,12,3,0,16,0,128,32,0, + 64,47,248,64,67,206,32,67,206,32,131,207,16,131,206,16, + 131,206,16,131,240,16,131,204,16,131,206,16,131,206,16,67, + 206,160,67,206,160,35,206,192,47,231,64,16,0,128,12,3, + 0,3,252,0,7,2,2,13,3,17,254,254,9,10,20,17, + 4,12,8,0,62,0,119,0,193,128,193,128,193,128,193,128, + 99,0,127,0,28,0,24,22,66,26,1,254,0,24,0,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,255,255,255,255,255,255,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,0,0,0,0,0,255,255,255,255,255,255,9,12, + 24,13,2,9,62,0,71,0,199,128,231,0,111,0,12,0, + 24,0,33,0,65,128,255,0,159,0,142,0,10,13,26,13, + 2,8,62,0,67,0,195,128,227,128,99,128,3,0,60,0, + 7,0,3,128,243,192,227,128,199,128,62,0,5,5,5,12, + 5,16,24,56,112,96,192,14,22,44,17,2,248,96,192,224, + 224,241,224,241,224,225,224,225,224,224,224,224,224,96,192,64, + 196,64,196,65,252,127,124,78,56,64,0,64,0,96,0,224, + 0,240,0,240,0,112,0,96,0,13,25,50,17,2,252,31, + 248,126,96,254,96,254,96,254,96,254,96,254,96,254,96,254, + 96,126,96,62,96,6,96,6,96,6,96,6,96,6,96,6, + 96,6,96,6,96,6,96,6,96,6,96,6,96,6,96,6, + 96,4,4,4,8,2,7,96,240,240,96,5,6,6,13,4, + 249,32,64,48,24,24,240,7,12,12,13,3,9,28,252,60, + 60,60,60,60,60,60,60,60,254,8,11,11,11,2,10,60, + 102,230,231,231,231,230,102,60,0,255,7,11,11,13,3,2, + 136,68,102,102,102,102,102,102,68,140,136,22,21,63,26,3, + 0,12,1,128,28,1,0,252,3,0,60,2,0,60,6,0, + 60,12,0,60,12,0,60,24,0,60,16,0,60,48,112,60, + 32,240,60,97,240,254,65,240,0,194,240,0,130,240,1,132, + 240,3,8,240,3,15,252,6,0,240,4,0,240,12,3,248, + 21,22,66,26,3,0,0,1,128,28,1,0,252,3,0,60, + 2,0,60,6,0,60,4,0,60,12,0,60,24,0,60,24, + 0,60,51,224,60,36,112,60,108,120,60,78,120,254,206,120, + 0,134,112,1,128,192,1,1,0,3,2,8,2,4,8,6, + 15,248,4,11,240,12,8,224,22,21,63,25,2,0,62,0, + 128,67,1,128,195,129,0,227,131,0,99,130,0,3,6,0, + 60,4,0,7,8,0,3,152,0,243,208,112,227,176,112,199, + 160,240,62,97,240,0,65,240,0,194,240,0,130,240,1,132, + 240,1,7,252,3,0,240,2,0,240,6,3,252,9,22,44, + 13,2,249,24,0,60,0,60,0,60,0,24,0,0,0,28, + 0,34,0,34,0,34,0,6,0,12,0,28,0,56,0,112, + 0,113,0,240,128,240,128,240,128,240,128,113,0,62,0,19, + 27,81,22,2,1,3,0,0,3,128,0,1,128,0,0,192, + 0,0,64,0,0,0,0,0,64,0,0,96,0,0,224,0, + 0,224,0,0,240,0,1,240,0,1,240,0,1,248,0,2, + 120,0,2,120,0,2,124,0,4,60,0,4,60,0,4,62, + 0,15,254,0,8,30,0,8,31,0,16,15,0,16,15,0, + 48,15,128,254,127,224,19,27,81,21,2,1,0,24,0,0, + 56,0,0,48,0,0,96,0,0,64,0,0,0,0,0,64, + 0,0,96,0,0,224,0,0,224,0,0,240,0,1,240,0, + 1,240,0,1,248,0,2,120,0,2,120,0,2,124,0,4, + 60,0,4,60,0,8,60,0,15,254,0,8,30,0,16,30, + 0,16,15,0,16,15,0,48,15,128,254,127,224,19,27,81, + 22,2,0,0,64,0,0,224,0,1,240,0,3,24,0,4, + 4,0,0,0,0,0,64,0,0,96,0,0,224,0,0,224, + 0,0,240,0,1,240,0,1,240,0,1,248,0,2,120,0, + 2,120,0,2,124,0,4,60,0,4,60,0,4,62,0,15, + 254,0,8,30,0,8,31,0,16,15,0,16,15,0,48,15, + 128,254,127,224,19,27,81,21,2,0,0,4,0,1,200,0, + 3,248,0,4,112,0,0,0,0,0,0,0,0,64,0,0, + 96,0,0,224,0,0,224,0,0,240,0,1,240,0,1,240, + 0,1,248,0,2,120,0,2,120,0,2,124,0,4,60,0, + 4,60,0,4,60,0,15,254,0,8,30,0,24,30,0,16, + 15,0,16,15,0,48,15,128,254,127,224,19,27,81,22,2, + 0,3,12,0,7,158,0,7,158,0,3,12,0,0,0,0, + 0,0,0,0,96,0,0,96,0,0,224,0,0,240,0,0, + 240,0,1,240,0,1,248,0,1,120,0,2,120,0,2,124, + 0,2,60,0,4,60,0,4,62,0,4,30,0,15,254,0, + 8,31,0,8,15,0,16,15,0,16,15,0,48,15,128,254, + 127,224,19,27,81,21,1,0,0,240,0,1,8,0,1,8, + 0,1,8,0,0,240,0,0,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 120,0,1,120,0,2,124,0,2,60,0,2,60,0,4,62, + 0,4,30,0,7,254,0,8,31,0,8,15,0,8,15,0, + 24,15,0,24,15,128,254,63,224,26,21,84,28,0,0,0, + 63,255,192,0,15,131,192,0,15,129,192,0,31,128,192,0, + 23,128,192,0,55,128,64,0,39,132,64,0,103,132,0,0, + 71,140,0,0,199,156,0,0,135,252,0,1,135,156,0,1, + 7,140,0,3,7,132,64,3,255,132,64,6,7,128,64,4, + 7,128,64,12,7,128,192,12,7,129,192,28,7,131,192,255, + 63,255,192,15,28,56,18,2,250,15,230,28,30,56,30,56, + 14,120,14,120,6,248,6,248,6,248,2,248,0,248,0,248, + 0,248,0,248,2,120,2,120,2,120,4,56,4,60,12,28, + 8,6,48,1,192,1,0,1,192,0,96,0,96,4,96,3, + 192,16,27,54,19,1,1,6,0,7,0,3,0,1,128,0, + 0,0,0,255,255,30,15,30,7,30,3,30,3,30,1,30, + 17,30,16,30,48,30,48,31,240,30,48,30,48,30,17,30, + 17,30,1,30,1,30,3,30,7,30,15,255,255,16,27,54, + 19,1,1,0,56,0,120,0,96,0,192,0,0,0,0,255, + 255,30,15,30,7,30,3,30,3,30,1,30,17,30,16,30, + 48,30,48,31,240,30,48,30,48,30,17,30,17,30,1,30, + 1,30,3,30,7,30,15,255,255,16,27,54,19,1,0,0, + 128,1,192,3,96,6,56,8,0,0,0,255,255,30,15,30, + 7,30,3,30,3,30,1,30,17,30,16,30,48,30,48,31, + 240,30,48,30,48,30,17,30,17,30,1,30,1,30,3,30, + 7,30,15,255,255,16,27,54,19,1,0,6,24,15,60,15, + 60,6,24,0,0,0,0,255,255,30,15,30,7,30,3,30, + 3,30,1,30,17,30,16,30,48,30,48,31,240,30,48,30, + 48,30,17,30,17,30,1,30,1,30,3,30,7,30,15,255, + 255,9,27,54,11,1,1,96,0,112,0,56,0,8,0,0, + 0,0,0,255,128,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,255,128,10,27,54, + 12,1,1,3,128,3,128,6,0,12,0,8,0,0,0,255, + 192,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,255,192,9,27,54,11,1,0,12, + 0,28,0,62,0,99,0,0,128,0,0,255,128,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,255,128,10,27,54,13,2,0,97,128,243,192,243, + 192,97,128,0,0,0,0,255,192,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,255, + 192,19,21,63,22,2,0,255,248,0,30,14,0,30,7,0, + 30,3,128,30,3,192,30,3,192,30,3,192,30,3,224,30, + 3,224,30,3,224,255,131,224,30,3,224,30,3,224,30,3, + 224,30,3,192,30,3,192,30,3,128,30,3,128,30,7,0, + 30,14,0,255,248,0,21,26,78,22,1,1,0,226,0,1, + 254,0,2,28,0,0,0,0,0,0,0,254,15,248,31,1, + 192,31,0,128,15,128,128,15,192,128,15,192,128,11,224,128, + 11,240,128,9,248,128,8,248,128,8,252,128,8,126,128,8, + 62,128,8,31,128,8,31,128,8,15,128,8,7,128,8,7, + 128,8,3,128,28,1,128,255,129,128,17,27,81,20,2,1, + 14,0,0,7,0,0,3,0,0,1,128,0,0,0,0,0, + 128,0,7,112,0,12,24,0,24,12,0,56,14,0,120,14, + 0,120,15,0,120,15,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,120,15,0,120, + 15,0,120,15,0,56,14,0,24,12,0,12,24,0,7,112, + 0,17,27,81,20,2,1,0,56,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,128,0,7,112,0,12,24,0,24, + 12,0,56,14,0,120,14,0,120,15,0,120,15,0,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,120,15,0,120,15,0,120,15,0,56,14,0,24, + 12,0,12,24,0,7,112,0,17,27,81,20,2,0,0,128, + 0,1,192,0,3,96,0,6,48,0,8,8,0,0,128,0, + 7,112,0,12,24,0,24,12,0,56,14,0,120,14,0,120, + 15,0,120,15,0,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,120,15,0,120,15,0, + 120,15,0,56,14,0,24,12,0,12,24,0,7,112,0,17, + 27,81,20,2,0,0,8,0,7,136,0,7,240,0,8,224, + 0,0,0,0,0,128,0,7,112,0,12,24,0,24,12,0, + 56,14,0,120,14,0,120,15,0,120,15,0,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,120,15,0,120,15,0,120,15,0,56,14,0,24,12,0, + 12,24,0,7,112,0,17,27,81,20,2,0,12,48,0,30, + 120,0,30,120,0,12,48,0,0,0,0,0,128,0,7,112, + 0,12,24,0,24,12,0,56,14,0,120,14,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,120,15,0,120,15,0,120,15, + 0,56,14,0,24,12,0,12,24,0,7,112,0,18,19,57, + 26,4,254,64,0,64,224,0,192,112,1,128,56,3,0,28, + 6,0,14,12,0,7,24,0,3,176,0,1,224,0,0,224, + 0,1,240,0,3,56,0,6,28,0,12,12,0,24,6,0, + 48,3,0,112,1,128,224,0,192,64,0,0,17,22,66,20, + 2,0,0,128,0,7,113,128,12,27,0,24,14,0,56,14, + 0,56,14,0,120,31,0,120,31,0,248,47,128,248,111,128, + 248,79,128,248,143,128,249,15,128,251,15,128,250,15,128,124, + 15,0,124,15,0,120,14,0,56,14,0,56,12,0,108,24, + 0,199,112,0,19,27,81,22,2,1,7,0,0,3,128,0, + 1,128,0,0,192,0,0,0,0,0,0,0,255,15,224,60, + 3,128,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,28, + 1,0,28,2,0,14,4,0,7,248,0,19,27,81,22,2, + 1,0,28,0,0,56,0,0,48,0,0,96,0,0,0,0, + 0,0,0,255,15,224,60,3,128,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,28,1,0,28,2,0,14,4,0,7, + 248,0,19,27,81,22,2,0,0,192,0,0,224,0,1,240, + 0,6,24,0,0,4,0,0,0,0,255,15,224,60,3,128, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,28,3,0, + 28,2,0,14,4,0,7,248,0,19,27,81,22,2,0,3, + 12,0,7,158,0,7,158,0,3,12,0,0,0,0,0,0, + 0,255,143,224,60,3,128,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,28,1,0,28,2,0,14,4,0,7,248,0, + 19,27,81,21,2,1,0,28,0,0,60,0,0,48,0,0, + 96,0,0,0,0,0,0,0,255,31,224,62,7,0,30,6, + 0,30,6,0,31,4,0,15,4,0,15,136,0,7,136,0, + 7,144,0,7,208,0,3,240,0,3,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,7,248,0,17,21,63,19,1,0,255,192,0, + 30,0,0,30,0,0,30,0,0,31,248,0,30,14,0,30, + 15,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 128,30,15,0,30,14,0,31,248,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,192,0,14,21,42,16, + 1,0,7,192,12,96,28,112,28,112,60,112,60,112,60,112, + 60,96,61,128,60,96,60,48,60,56,60,56,60,56,60,60, + 60,60,60,56,63,184,63,184,63,48,253,224,12,21,42,14, + 1,0,96,0,112,0,56,0,24,0,12,0,4,0,0,0, + 30,0,99,128,99,192,243,192,115,192,7,192,27,192,115,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,21,42,14, + 1,0,1,128,3,128,3,0,6,0,12,0,8,0,0,0, + 30,0,99,128,99,192,243,192,115,192,35,192,15,192,51,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,21,42,14, + 1,0,12,0,12,0,30,0,19,0,33,128,64,128,0,0, + 30,0,99,128,99,192,243,192,115,192,35,192,15,192,51,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,20,40,14, + 1,0,56,128,127,128,71,0,0,0,0,0,0,0,30,0, + 99,128,99,192,243,192,115,192,3,192,31,192,51,192,115,192, + 243,192,243,208,243,208,245,208,121,224,12,20,40,14,1,0, + 97,128,243,192,243,192,97,128,0,0,0,0,30,0,99,128, + 99,192,243,192,115,192,35,192,15,192,51,192,115,192,243,192, + 243,208,243,208,243,208,125,224,12,21,42,14,1,1,30,0, + 33,0,33,0,33,0,50,0,12,0,0,0,31,0,99,128, + 97,192,241,192,113,192,33,192,15,192,49,192,97,192,225,192, + 225,208,225,208,227,208,124,224,17,14,42,19,1,0,62,60, + 0,99,230,0,99,199,0,243,199,128,115,199,128,7,199,128, + 27,255,128,115,192,0,115,192,0,243,192,128,243,192,128,243, + 225,0,242,225,0,124,62,0,10,21,42,13,1,249,15,0, + 56,128,112,192,113,192,243,192,243,128,240,0,240,0,240,0, + 240,0,112,64,112,64,56,128,31,0,4,0,8,0,6,0, + 3,0,3,0,3,0,30,0,11,21,42,13,1,0,48,0, + 48,0,56,0,24,0,12,0,0,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,21,42,13,1,0,1,128, + 3,128,3,128,6,0,4,0,8,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,21,42,13,1,0,12,0, + 14,0,30,0,27,0,49,128,64,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,20,40,13,1,0,49,128, + 123,192,123,192,49,128,0,0,0,0,15,0,51,128,113,192, + 113,192,241,192,241,224,255,224,240,0,240,0,240,32,112,64, + 112,64,56,128,15,0,7,21,21,9,1,0,192,224,112,48, + 24,8,0,124,60,60,60,60,60,60,60,60,60,60,60,60, + 126,6,21,21,9,2,0,12,12,28,56,32,0,0,248,120, + 120,120,120,120,120,120,120,120,120,120,120,252,8,21,21,8, + 1,0,56,56,124,110,131,0,0,252,60,60,60,60,60,60, + 60,60,60,60,60,60,254,8,20,20,9,1,0,102,255,255, + 102,0,0,124,60,60,60,60,60,60,60,60,60,60,60,60, + 126,12,21,42,14,1,0,60,64,31,128,15,0,15,0,55, + 128,3,128,3,192,31,192,49,224,113,224,112,224,240,224,240, + 240,240,240,240,240,240,224,240,224,112,224,113,192,49,192,15, + 0,13,19,38,16,2,1,30,64,63,192,35,128,0,0,0, + 0,251,192,124,224,120,224,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,253,248,12,21,42, + 14,1,0,48,0,56,0,56,0,12,0,6,0,2,0,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,21,42, + 14,1,0,1,128,1,192,3,128,3,0,6,0,4,0,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,21,42, + 14,1,0,6,0,14,0,15,0,27,0,48,128,32,64,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,20,40, + 14,1,0,28,64,63,192,71,128,0,0,0,0,0,0,15, + 0,49,128,112,192,112,224,240,224,240,224,240,240,240,240,240, + 224,240,224,112,224,112,192,49,128,15,0,12,20,40,14,1, + 0,49,128,123,192,123,192,49,128,0,0,0,0,15,0,49, + 128,112,192,112,224,240,224,240,224,240,240,240,240,240,224,240, + 224,112,224,112,192,49,128,15,0,24,19,57,26,1,254,0, + 24,0,0,60,0,0,60,0,0,24,0,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0, + 0,0,0,0,0,0,0,0,0,0,24,0,0,60,0,0, + 60,0,0,60,0,0,24,0,12,14,28,14,1,0,15,16, + 49,160,113,192,112,224,241,224,243,224,242,240,244,240,248,224, + 240,224,112,224,112,192,121,128,143,0,14,21,42,15,0,0, + 24,0,28,0,12,0,6,0,3,0,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,248,60,248,29,120,14,124,14,21,42,15,0,0, + 0,192,0,192,1,192,1,128,3,0,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,120,60,248,29,120,14,124,14,21,42,15,0,0, + 3,0,7,0,7,128,12,128,24,64,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,120,60,248,29,120,14,124,14,20,40,15,0,0, + 24,192,61,224,61,224,24,192,0,0,0,0,253,248,60,120, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,248,29,120,14,124,13,28,56,15,1,249,0,192, + 0,192,1,192,3,128,2,0,0,0,0,0,252,248,120,32, + 56,32,60,64,28,64,28,64,30,64,14,128,15,128,7,128, + 7,0,7,0,3,0,3,0,2,0,2,0,50,0,124,0, + 116,0,116,0,56,0,13,26,52,15,1,250,28,0,124,0, + 188,0,60,0,60,0,60,0,60,240,63,120,60,120,60,120, + 60,120,60,120,60,112,60,112,60,96,60,192,60,128,61,0, + 62,0,60,0,60,0,60,0,60,0,60,0,48,0,192,0, + 13,27,54,15,1,249,24,96,60,240,60,240,24,96,0,0, + 0,0,254,120,120,48,56,32,60,32,28,32,30,64,30,64, + 14,64,15,128,7,128,7,128,7,0,3,0,3,0,1,0, + 2,0,50,0,122,0,116,0,116,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=24 h=27 x= 3 y= 9 dx=26 dy= 0 ascent=22 len=75 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21n[703] U8G_SECTION(".progmem.u8g_font_osb21n") = { + 0,77,36,232,248,21,0,0,0,0,42,57,0,22,250,21, + 0,11,12,24,14,2,9,14,0,14,0,78,192,228,224,245, + 192,14,0,14,0,245,192,228,192,78,192,14,0,14,0,24, + 25,75,26,1,252,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,255,255,255,255,255,255,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 5,10,10,7,1,251,112,248,248,248,120,8,16,16,32,192, + 7,3,3,11,2,6,254,254,254,4,4,4,8,2,0,96, + 240,240,96,9,27,54,13,2,250,1,128,1,128,1,128,3, + 0,3,0,3,0,2,0,6,0,6,0,6,0,12,0,12, + 0,12,0,24,0,24,0,24,0,16,0,48,0,48,0,48, + 0,96,0,96,0,96,0,192,0,192,0,192,0,128,0,14, + 21,42,16,1,1,15,192,24,96,56,112,56,112,120,120,120, + 120,248,120,248,124,248,124,248,124,248,124,248,124,248,124,248, + 124,248,120,120,120,120,120,56,112,56,112,24,96,15,192,9, + 21,42,16,3,0,6,0,14,0,30,0,254,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,255,128,12, + 21,42,16,2,1,63,192,97,224,96,224,224,240,224,240,240, + 240,248,240,121,224,49,224,3,192,7,128,14,0,28,0,48, + 16,96,16,64,16,192,16,255,240,255,224,143,224,135,192,13, + 21,42,16,2,1,63,192,96,224,96,224,224,240,240,240,248, + 240,120,240,112,240,0,224,1,192,31,0,0,224,0,240,0, + 112,112,120,248,120,248,120,240,120,224,112,96,240,59,192,13, + 21,42,16,1,0,1,192,1,192,3,192,3,192,7,192,7, + 192,15,192,27,192,27,192,51,192,35,192,99,192,67,192,195, + 192,255,248,3,192,3,192,3,192,3,192,3,192,31,248,13, + 21,42,16,2,0,96,224,127,192,127,128,127,0,120,0,64, + 0,64,0,64,0,79,0,113,224,64,240,64,240,0,248,0, + 248,112,248,248,248,248,248,240,240,224,240,97,224,59,192,13, + 21,42,16,2,1,15,224,24,32,56,48,48,240,112,240,112, + 240,240,96,240,0,240,0,247,128,248,224,240,112,240,112,240, + 112,240,120,112,120,112,112,112,112,48,112,56,96,13,192,11, + 21,42,16,3,0,156,64,190,96,255,32,255,32,199,224,129, + 160,128,64,128,64,0,128,0,128,1,0,3,0,7,0,6, + 0,14,0,14,0,30,0,30,0,30,0,30,0,30,0,14, + 21,42,16,2,1,31,192,48,32,96,48,96,16,224,16,240, + 16,248,32,254,32,127,192,63,192,31,240,31,248,99,248,64, + 248,192,60,192,24,192,24,192,24,96,16,112,48,31,192,13, + 21,42,16,2,1,31,128,48,192,112,96,112,112,240,112,240, + 112,240,120,240,120,240,120,112,120,112,120,56,248,15,120,0, + 120,0,120,56,112,120,112,120,96,112,224,96,192,63,128}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=28 h=29 x= 3 y=16 dx=31 dy= 0 ascent=23 len=87 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21r[4521] U8G_SECTION(".progmem.u8g_font_osb21r") = { + 0,77,36,232,248,21,5,141,12,241,32,127,249,23,249,21, + 249,0,0,0,8,0,0,5,21,21,9,2,1,240,248,248, + 248,248,112,112,112,112,32,32,32,32,32,32,0,0,112,248, + 248,112,7,6,6,11,2,16,238,238,238,238,198,68,16,21, + 42,20,2,0,6,12,6,12,6,12,6,8,6,24,6,24, + 255,255,255,255,12,24,12,24,12,48,12,48,12,48,8,48, + 255,255,255,255,24,32,24,96,24,96,16,96,48,96,13,25, + 50,16,2,254,9,0,11,0,61,192,105,48,73,8,201,8, + 201,56,233,120,249,112,253,0,127,0,127,0,63,192,15,224, + 15,240,73,248,233,248,233,56,201,24,137,24,137,16,73,32, + 57,192,15,0,9,0,19,22,66,25,3,0,0,1,0,60, + 3,0,102,2,0,231,4,0,231,4,0,231,8,0,231,8, + 0,231,16,0,231,48,0,102,32,0,102,96,0,24,64,0, + 0,195,0,0,140,192,1,140,192,1,28,224,2,28,224,2, + 28,224,4,28,224,4,28,224,8,12,192,24,7,128,20,21, + 63,22,1,1,3,224,0,6,16,0,14,16,0,14,16,0, + 14,16,0,14,48,0,15,32,0,15,64,0,7,128,0,3, + 192,0,7,195,240,9,224,192,48,224,128,112,240,128,112,121, + 0,240,59,0,240,62,0,240,30,0,248,31,16,126,111,160, + 63,199,192,3,6,6,7,2,16,224,224,224,224,192,64,8, + 27,27,10,2,250,1,2,4,8,24,48,48,112,112,240,240, + 240,240,240,240,240,240,112,112,112,48,48,24,8,4,2,1, + 8,26,26,10,1,250,128,192,96,48,24,24,12,12,14,14, + 14,14,15,15,15,14,14,14,14,12,12,24,24,48,96,192, + 11,12,24,14,2,9,14,0,14,0,78,192,228,224,245,192, + 14,0,14,0,245,192,228,192,78,192,14,0,14,0,24,25, + 75,26,1,252,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,24,0,0,24,0,255,255,255,255,255,255,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,5, + 10,10,7,1,251,112,248,248,248,120,8,16,16,32,192,7, + 3,3,11,2,6,254,254,254,4,4,4,8,2,0,96,240, + 240,96,9,27,54,13,2,250,1,128,1,128,1,128,3,0, + 3,0,3,0,2,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,16,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,192,0,128,0,14,21, + 42,16,1,1,15,192,24,96,56,112,56,112,120,120,120,120, + 248,120,248,124,248,124,248,124,248,124,248,124,248,124,248,124, + 248,120,120,120,120,120,56,112,56,112,24,96,15,192,9,21, + 42,16,3,0,6,0,14,0,30,0,254,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,12,21, + 42,16,2,1,63,192,97,224,96,224,224,240,224,240,240,240, + 248,240,121,224,49,224,3,192,7,128,14,0,28,0,48,16, + 96,16,64,16,192,16,255,240,255,224,143,224,135,192,13,21, + 42,16,2,1,63,192,96,224,96,224,224,240,240,240,248,240, + 120,240,112,240,0,224,1,192,31,0,0,224,0,240,0,112, + 112,120,248,120,248,120,240,120,224,112,96,240,59,192,13,21, + 42,16,1,0,1,192,1,192,3,192,3,192,7,192,7,192, + 15,192,27,192,27,192,51,192,35,192,99,192,67,192,195,192, + 255,248,3,192,3,192,3,192,3,192,3,192,31,248,13,21, + 42,16,2,0,96,224,127,192,127,128,127,0,120,0,64,0, + 64,0,64,0,79,0,113,224,64,240,64,240,0,248,0,248, + 112,248,248,248,248,248,240,240,224,240,97,224,59,192,13,21, + 42,16,2,1,15,224,24,32,56,48,48,240,112,240,112,240, + 240,96,240,0,240,0,247,128,248,224,240,112,240,112,240,112, + 240,120,112,120,112,112,112,112,48,112,56,96,13,192,11,21, + 42,16,3,0,156,64,190,96,255,32,255,32,199,224,129,160, + 128,64,128,64,0,128,0,128,1,0,3,0,7,0,6,0, + 14,0,14,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,16,2,1,31,192,48,32,96,48,96,16,224,16,240,16, + 248,32,254,32,127,192,63,192,31,240,31,248,99,248,64,248, + 192,60,192,24,192,24,192,24,96,16,112,48,31,192,13,21, + 42,16,2,1,31,128,48,192,112,96,112,112,240,112,240,112, + 240,120,240,120,240,120,112,120,112,120,56,248,15,120,0,120, + 0,120,56,112,120,112,120,96,112,224,96,192,63,128,4,14, + 14,8,2,0,96,240,240,240,96,0,0,0,0,0,96,240, + 240,96,5,19,19,8,2,251,96,240,240,240,96,0,0,0, + 0,112,240,248,248,248,8,16,16,32,192,21,24,72,26,2, + 252,0,0,24,0,0,56,0,0,240,0,3,192,0,15,0, + 0,28,0,0,120,0,1,224,0,7,128,0,14,0,0,60, + 0,0,240,0,0,224,0,0,120,0,0,30,0,0,7,128, + 0,1,192,0,0,240,0,0,60,0,0,15,0,0,3,128, + 0,1,224,0,0,120,0,0,24,24,8,24,26,1,4,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,21,24,72,26,3,252,128,0,0, + 224,0,0,120,0,0,30,0,0,7,128,0,1,192,0,0, + 240,0,0,60,0,0,15,0,0,3,128,0,1,224,0,0, + 120,0,0,56,0,0,240,0,3,192,0,15,0,0,28,0, + 0,120,0,1,224,0,7,128,0,14,0,0,60,0,0,240, + 0,0,192,0,0,9,21,42,13,2,1,126,0,71,0,135, + 128,135,128,135,128,135,128,71,0,14,0,12,0,28,0,16, + 0,48,0,34,0,34,0,34,0,28,0,0,0,12,0,30, + 0,30,0,12,0,20,22,66,22,1,0,0,32,0,3,222, + 0,12,3,0,24,0,128,48,0,192,48,112,96,97,207,96, + 99,142,48,199,142,48,199,14,48,199,14,48,207,14,48,207, + 28,48,207,28,32,207,28,96,79,60,64,103,44,128,99,199, + 0,48,0,0,24,0,0,12,2,0,3,252,0,19,21,63, + 22,2,0,0,64,0,0,96,0,0,224,0,0,224,0,0, + 240,0,1,240,0,1,240,0,1,248,0,2,120,0,2,120, + 0,2,124,0,4,60,0,4,60,0,4,62,0,15,254,0, + 8,30,0,8,31,0,16,15,0,16,15,0,48,15,128,254, + 127,224,17,21,63,19,1,0,255,240,0,30,28,0,30,14, + 0,30,15,0,30,15,0,30,15,0,30,15,0,30,14,0, + 30,14,0,30,24,0,31,224,0,30,28,0,30,15,0,30, + 7,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 0,30,14,0,255,248,0,15,21,42,18,2,1,15,230,28, + 30,56,30,56,14,120,14,120,6,248,6,248,6,248,2,248, + 0,248,0,248,0,248,0,248,2,248,2,120,2,120,4,56, + 4,60,12,28,8,15,240,19,21,63,21,1,0,255,248,0, + 30,14,0,30,7,0,30,3,128,30,3,192,30,3,192,30, + 3,192,30,3,224,30,3,224,30,3,224,30,3,224,30,3, + 224,30,3,224,30,3,224,30,3,192,30,3,192,30,3,192, + 30,3,128,30,7,0,30,14,0,255,248,0,16,21,42,19, + 1,0,255,255,30,15,30,7,30,3,30,3,30,1,30,17, + 30,16,30,48,30,48,31,240,30,48,30,48,30,17,30,17, + 30,1,30,1,30,3,30,7,30,15,255,255,17,21,63,19, + 1,0,255,255,128,30,15,128,30,7,128,30,3,128,30,1, + 128,30,1,128,30,17,128,30,17,128,30,48,0,30,48,0, + 31,240,0,30,48,0,30,48,0,30,16,0,30,16,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,20,2,0,0,128,0,7,114,0,28,30,0, + 24,14,0,56,6,0,120,6,0,120,6,0,120,2,0,248, + 2,0,248,0,0,248,0,0,248,0,0,248,255,128,248,30, + 0,248,30,0,248,30,0,120,30,0,120,30,0,56,30,0, + 56,22,0,28,34,0,14,194,0,20,21,63,22,1,0,255, + 223,240,30,3,192,30,3,192,30,3,192,30,3,192,30,3, + 192,30,3,192,30,3,192,30,3,192,30,3,192,31,255,192, + 30,3,192,30,3,192,30,3,192,30,3,192,30,3,192,30, + 3,192,30,3,192,30,3,192,30,3,192,255,223,240,9,21, + 42,11,1,0,255,128,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,13,21, + 42,15,1,0,15,248,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,113,224, + 249,224,249,224,249,192,225,192,193,192,65,128,55,0,19,21, + 63,21,1,0,255,159,192,30,7,0,30,6,0,30,12,0, + 30,8,0,30,16,0,30,32,0,30,96,0,30,240,0,31, + 240,0,31,248,0,30,248,0,30,124,0,30,124,0,30,62, + 0,30,30,0,30,31,0,30,15,0,30,15,128,30,15,128, + 255,159,224,17,21,63,19,1,0,255,128,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,1,0, + 30,1,128,30,1,128,30,1,128,30,3,128,30,3,128,30, + 7,128,30,15,128,255,255,128,23,21,63,25,1,0,254,0, + 254,30,0,240,31,1,240,31,1,240,31,1,240,31,129,240, + 23,130,240,23,194,240,23,194,240,19,196,240,19,228,240,17, + 228,240,17,228,240,17,248,240,16,248,240,16,248,240,16,248, + 240,16,112,240,16,112,240,56,48,240,254,35,254,21,21,63, + 22,1,0,254,15,248,31,1,192,31,0,128,15,128,128,15, + 192,128,15,192,128,11,224,128,11,240,128,9,248,128,8,248, + 128,8,252,128,8,126,128,8,62,128,8,31,128,8,31,128, + 8,15,128,8,7,128,8,7,128,8,3,128,28,1,128,255, + 129,128,17,22,66,20,2,0,0,128,0,7,112,0,12,24, + 0,24,12,0,56,14,0,120,14,0,120,15,0,120,15,0, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,120,15,0,120,15,0,120,15,0,56,14, + 0,24,12,0,12,24,0,7,112,0,17,21,63,19,1,0, + 255,248,0,30,14,0,30,7,0,30,7,128,30,7,128,30, + 7,128,30,7,128,30,7,128,30,15,0,30,14,0,31,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,255,192,0,17, + 29,87,20,2,249,0,128,0,7,112,0,12,24,0,24,12, + 0,56,14,0,120,14,0,120,15,0,120,15,0,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,120,15,0,120,15,0,121,142,0,58,78,0,30,124, + 0,30,120,128,6,112,128,1,224,128,0,96,128,0,113,128, + 0,127,128,0,127,0,0,63,0,0,30,0,19,21,63,21, + 1,0,255,240,0,30,28,0,30,14,0,30,15,0,30,15, + 0,30,15,0,30,15,0,30,14,0,30,28,0,31,224,0, + 30,48,0,30,28,0,30,28,0,30,28,0,30,30,0,30, + 30,0,30,30,32,30,30,32,30,30,32,30,14,64,255,207, + 192,13,22,44,17,3,0,4,0,59,144,64,240,192,112,192, + 112,224,48,240,48,248,16,254,16,127,0,63,128,31,224,15, + 240,131,240,129,248,128,120,192,56,192,24,224,24,224,16,240, + 48,159,192,17,21,63,20,2,0,255,255,128,227,207,128,195, + 199,128,195,195,128,131,195,128,131,193,128,131,193,128,3,193, + 128,3,192,128,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,31,248,0,19,21,63,22,2,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,28,1,0,28,2,0,14,4,0,7,248,0,20,21,63, + 22,1,0,255,207,240,30,1,128,31,1,0,31,1,0,15, + 1,0,15,130,0,15,130,0,7,130,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,232,0,1,248,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 96,0,28,21,84,31,2,0,255,191,231,240,62,15,129,192, + 30,7,129,128,30,7,129,128,31,7,193,0,15,7,193,0, + 15,7,193,0,15,143,226,0,7,137,226,0,7,137,226,0, + 7,201,246,0,3,208,244,0,3,208,244,0,3,240,252,0, + 1,240,124,0,1,224,120,0,1,224,120,0,0,224,56,0, + 0,192,48,0,0,192,48,0,0,64,16,0,19,21,63,20, + 1,0,255,159,192,63,6,0,31,6,0,15,4,0,15,136, + 0,7,152,0,7,208,0,3,240,0,3,224,0,1,240,0, + 1,240,0,0,248,0,1,248,0,3,124,0,2,124,0,6, + 62,0,4,62,0,8,30,0,24,31,0,24,31,128,254,63, + 224,18,21,63,21,2,0,255,31,192,62,7,0,30,6,0, + 30,4,0,31,4,0,15,4,0,15,136,0,7,136,0,7, + 144,0,7,208,0,3,240,0,3,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,7,248,0,15,21,42,19,2,0,127,254,120,62, + 112,124,96,124,96,248,64,248,65,240,1,240,3,224,3,224, + 7,192,7,128,15,128,31,2,31,2,62,2,62,6,124,6, + 124,14,248,30,255,254,7,26,26,11,2,251,254,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,254,10,27,54,13,1,250,192,0,96,0, + 96,0,96,0,32,0,48,0,48,0,48,0,24,0,24,0, + 24,0,12,0,12,0,12,0,4,0,6,0,6,0,6,0, + 3,0,3,0,3,0,1,128,1,128,1,128,0,128,0,192, + 0,192,7,26,26,11,2,251,254,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,254,12,10,20,16,2,12,6,0,7,0,15,0,29,128, + 25,128,48,192,48,224,96,96,224,48,192,48,15,2,4,15, + 0,251,255,254,255,254,5,5,5,12,2,16,192,224,112,48, + 24,12,14,28,14,1,0,30,0,99,128,99,192,243,192,115, + 192,35,192,15,192,51,192,115,192,243,192,243,208,243,208,243, + 208,125,224,13,21,42,14,0,0,252,0,60,0,60,0,60, + 0,60,0,60,0,60,0,61,192,62,96,60,112,60,112,60, + 120,60,120,60,120,60,120,60,120,60,120,60,112,52,112,38, + 96,35,192,10,14,28,13,1,0,15,0,56,128,112,192,113, + 192,243,192,243,128,240,0,240,0,240,0,240,0,112,64,112, + 64,56,128,15,0,13,21,42,15,1,0,3,224,1,224,1, + 224,1,224,1,224,1,224,1,224,29,224,51,224,113,224,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,248,11,14,28,13,1,0,15,0,51,128,113, + 192,113,192,241,192,241,224,255,224,240,0,240,0,240,32,112, + 64,112,64,56,128,15,0,11,21,42,10,1,0,7,128,12, + 192,28,192,61,224,61,192,60,0,60,0,254,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,254,0,14,21,42,16,1,249,15,24,57, + 236,121,252,121,248,121,224,121,224,57,192,57,192,15,0,112, + 0,192,0,255,0,255,224,127,240,63,248,64,56,128,24,128, + 16,128,48,96,96,31,128,14,21,42,16,1,0,252,0,60, + 0,60,0,60,0,60,0,60,0,60,0,61,224,62,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,120,60,120,254,252,6,21,21,8,1,0,48,120,120, + 48,0,0,0,248,120,120,120,120,120,120,120,120,120,120,120, + 120,252,8,28,28,8,255,249,6,15,15,6,0,0,0,31, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,255, + 239,238,206,56,14,21,42,16,1,0,252,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,248,60,96,60,64,60,128, + 60,128,61,128,63,128,63,192,61,224,60,224,60,240,60,112, + 60,120,254,252,8,21,21,9,1,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,255,20, + 14,42,23,2,0,249,199,128,126,233,192,120,241,192,120,241, + 224,120,241,224,120,241,224,120,241,224,120,241,224,120,241,224, + 120,241,224,120,241,224,120,241,224,120,241,224,253,251,240,13, + 14,28,16,2,0,251,192,124,224,120,224,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,253, + 248,12,14,28,14,1,0,15,0,49,128,112,192,112,224,240, + 224,240,224,240,240,240,240,240,224,240,224,112,224,112,192,49, + 128,15,0,13,21,42,15,1,249,253,192,62,96,60,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,112,60, + 112,62,96,61,192,60,0,60,0,60,0,60,0,60,0,60, + 0,254,0,13,21,42,14,1,249,30,32,51,32,113,96,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,224,1,224,1,224,1,224,1,224,1,224,1, + 224,3,248,10,14,28,12,2,0,251,128,125,128,123,192,123, + 128,121,128,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,252,0,10,14,28,13,2,0,60,128,67,128,193, + 128,193,128,224,128,248,0,126,0,63,128,143,128,131,192,192, + 192,224,192,240,128,143,0,9,20,40,10,0,0,8,0,8, + 0,8,0,24,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,128,56,128,56,128,56,128,57, + 128,57,0,14,0,14,14,28,15,0,0,253,248,60,120,60, + 120,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,248,29,120,14,124,13,14,28,15,1,0,252,248,120, + 32,56,32,60,32,28,64,28,64,30,64,14,128,14,128,15, + 0,7,0,7,0,6,0,2,0,20,14,42,22,1,0,253, + 253,240,120,120,64,56,120,64,60,56,64,28,120,128,28,124, + 128,30,92,128,14,157,0,14,159,0,15,143,0,7,14,0, + 7,14,0,6,6,0,2,4,0,13,14,28,15,1,0,254, + 248,60,96,60,64,30,128,30,128,15,0,7,0,7,128,7, + 192,11,192,9,224,16,224,48,240,253,248,13,21,42,15,1, + 249,252,248,120,32,56,32,60,64,28,64,28,64,30,64,14, + 128,15,128,7,128,7,128,7,0,3,0,3,0,2,0,2, + 0,50,0,122,0,116,0,116,0,56,0,11,14,28,13,1, + 0,127,224,97,224,67,192,67,128,71,128,15,0,15,0,30, + 0,30,32,60,32,56,32,120,96,240,224,255,224,9,27,54, + 12,1,250,0,128,7,0,14,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,28,0,28,0,56,0,224,0,56, + 0,28,0,28,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,14,0,7,0,0,128,2,27,27,8,3,250,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,9,27,54,13,2,250, + 192,0,56,0,28,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,14,0,1,128,14,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,28,0, + 28,0,56,0,192,0,16,6,12,18,1,5,124,2,127,1, + 143,193,131,241,128,254,64,62,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=34 h=33 x= 6 y=20 dx=36 dy= 0 ascent=34 len=125 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x=-2 y=-10 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =26 descent=-8 + Max Font ascent =34 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26[12640] U8G_SECTION(".progmem.u8g_font_osb26") = { + 0,95,44,227,246,26,7,105,16,163,32,255,248,34,246,26, + 248,0,0,0,10,0,0,6,25,25,10,2,1,120,252,252, + 252,252,252,120,120,120,120,48,48,48,48,48,48,48,0,0, + 0,120,252,252,252,120,8,8,8,12,2,18,231,231,231,231, + 231,231,66,66,20,25,75,24,2,0,3,131,0,3,131,0, + 3,3,0,3,3,0,3,3,0,3,7,0,3,7,0,255, + 255,240,255,255,240,6,6,0,6,6,0,6,6,0,6,14, + 0,6,14,0,14,12,0,12,12,0,12,12,0,255,255,224, + 255,255,224,12,28,0,12,24,0,28,24,0,24,24,0,24, + 24,0,24,24,0,16,31,62,20,2,253,2,32,2,32,2, + 32,15,248,26,38,50,34,114,35,114,35,114,47,122,47,126, + 46,126,46,63,160,63,224,31,240,15,248,7,252,3,254,2, + 126,114,63,250,47,250,47,242,39,226,39,194,38,98,38,50, + 44,30,56,3,224,2,32,2,32,23,26,78,29,3,0,8, + 0,48,54,0,32,99,0,96,99,0,192,227,128,192,227,129, + 128,227,129,0,227,131,0,227,130,0,227,134,0,99,12,0, + 54,8,0,28,24,0,0,16,112,0,48,216,0,97,140,0, + 97,140,0,195,142,0,131,142,1,131,142,1,3,142,3,3, + 142,6,3,142,4,1,140,12,1,140,8,0,248,24,25,75, + 26,1,1,1,252,0,3,4,0,3,2,0,7,2,0,7, + 2,0,7,6,0,7,132,0,7,200,0,3,240,0,3,224, + 0,1,240,0,3,240,127,6,248,28,12,124,8,24,60,24, + 56,62,16,112,31,16,240,15,32,240,15,224,248,7,192,248, + 3,192,252,3,225,126,7,242,127,253,254,31,240,124,3,8, + 8,7,2,18,224,224,224,224,224,224,64,64,10,31,62,12, + 2,250,0,192,1,0,2,0,6,0,12,0,24,0,56,0, + 56,0,120,0,112,0,112,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,112,0,112,0,112,0, + 56,0,56,0,24,0,28,0,12,0,6,0,3,0,1,128, + 9,32,64,12,1,250,192,0,96,0,48,0,24,0,28,0, + 12,0,14,0,6,0,7,0,7,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,0,7,0,7,0,14,0,14,0,12,0,24,0,48,0, + 96,0,192,0,128,0,12,14,28,17,3,11,14,0,14,0, + 14,0,196,112,228,240,245,224,14,0,14,0,245,224,228,240, + 196,112,14,0,14,0,14,0,29,30,120,31,1,251,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,255,255,255,248,255,255,255,248,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,7,11,11,10,2,249,120,252,254,254, + 126,6,4,12,8,48,224,9,4,8,13,2,7,255,128,255, + 128,255,128,255,128,5,5,5,9,2,0,112,248,248,248,112, + 12,33,66,15,2,249,0,112,0,96,0,96,0,224,0,192, + 0,192,1,192,1,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,6,0,14,0,12,0,12,0,28,0, + 24,0,24,0,56,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,192,0,16,25,50,20,2,1,7,224, + 14,112,28,56,60,60,60,60,124,62,124,62,124,62,252,63, + 252,63,252,63,252,63,252,63,252,63,252,63,252,63,252,63, + 124,62,124,62,124,62,60,60,60,60,28,56,14,112,7,224, + 12,25,50,20,4,0,7,0,7,0,31,0,255,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,240,15,25,50,20,2,1,31,240, + 48,120,96,60,96,62,224,62,240,62,248,62,252,62,124,124, + 56,124,0,248,1,240,1,224,3,128,7,0,12,2,24,2, + 48,2,32,2,76,6,127,254,127,252,71,252,67,252,65,248, + 15,26,52,20,2,0,1,0,14,240,56,120,48,60,112,62, + 120,62,124,62,124,62,60,62,24,60,0,120,0,112,31,192, + 0,240,0,120,0,60,0,60,56,62,124,62,252,62,252,62, + 248,62,224,60,96,124,96,120,31,224,16,25,50,20,2,0, + 0,120,0,120,0,248,1,248,1,248,3,248,3,248,6,248, + 6,248,12,248,12,248,24,248,56,248,48,248,96,248,96,248, + 192,248,255,255,0,248,0,248,0,248,0,248,0,248,0,248, + 15,255,15,26,52,20,3,0,0,8,48,56,63,240,63,224, + 63,128,62,0,32,0,32,0,32,0,32,0,39,192,56,112, + 48,120,32,60,32,60,0,62,0,62,56,62,120,62,252,62, + 248,62,248,60,224,60,96,120,112,112,31,224,16,25,50,20, + 2,1,7,240,12,8,28,12,56,60,56,124,120,124,120,120, + 120,48,248,0,248,0,251,224,252,56,252,60,248,30,248,31, + 248,31,248,31,248,31,120,31,120,31,120,31,56,30,28,30, + 12,60,7,240,15,25,50,20,3,0,79,28,95,156,127,198, + 127,230,127,254,224,246,192,4,192,12,128,12,128,24,0,16, + 0,48,0,96,0,224,1,192,1,192,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,7,0,17,25,75,20, + 2,1,7,240,0,24,12,0,48,12,0,48,6,0,112,6, + 0,112,6,0,120,6,0,124,4,0,127,12,0,127,152,0, + 63,224,0,31,248,0,15,252,0,15,254,0,49,255,0,96, + 127,0,64,31,0,192,15,128,192,7,0,192,7,0,192,3, + 0,96,6,0,96,6,0,56,12,0,14,240,0,15,25,50, + 20,2,1,31,192,60,112,120,48,120,56,248,60,248,60,248, + 60,248,62,248,62,248,62,248,62,120,62,124,126,60,126,15, + 190,0,62,0,62,12,60,30,60,62,60,62,56,60,56,48, + 112,16,96,15,192,5,17,17,9,2,0,112,248,248,248,112, + 0,0,0,0,0,0,0,112,248,248,248,112,6,23,23,9, + 2,249,112,248,248,248,112,0,0,0,0,0,0,0,112,248, + 252,252,252,12,12,8,16,48,192,26,29,116,32,3,251,0, + 0,1,192,0,0,3,192,0,0,15,0,0,0,62,0,0, + 0,248,0,0,1,224,0,0,7,128,0,0,31,0,0,0, + 124,0,0,0,240,0,0,3,192,0,0,15,128,0,0,62, + 0,0,0,120,0,0,0,224,0,0,0,120,0,0,0,62, + 0,0,0,15,128,0,0,3,192,0,0,0,240,0,0,0, + 124,0,0,0,31,0,0,0,7,128,0,0,1,224,0,0, + 0,248,0,0,0,62,0,0,0,15,0,0,0,3,192,0, + 0,1,192,29,9,36,33,2,5,255,255,255,248,255,255,255, + 248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,248,255,255,255,248,26,29,116, + 32,3,251,224,0,0,0,240,0,0,0,60,0,0,0,31, + 0,0,0,7,192,0,0,1,224,0,0,0,120,0,0,0, + 62,0,0,0,15,128,0,0,3,192,0,0,0,240,0,0, + 0,124,0,0,0,31,0,0,0,7,128,0,0,1,192,0, + 0,7,128,0,0,31,0,0,0,124,0,0,0,240,0,0, + 3,192,0,0,15,128,0,0,62,0,0,0,120,0,0,1, + 224,0,0,7,192,0,0,31,0,0,0,60,0,0,0,240, + 0,0,0,224,0,0,0,11,25,50,16,2,1,63,128,67, + 192,129,224,129,224,129,224,131,224,195,192,67,192,3,128,7, + 0,6,0,12,0,8,0,24,0,17,0,17,0,17,0,14, + 0,0,0,0,0,14,0,31,0,31,0,31,0,14,0,25, + 25,100,27,1,1,0,255,192,0,3,0,48,0,6,0,24, + 0,12,0,12,0,24,0,6,0,48,30,243,0,48,114,243, + 0,96,225,227,0,97,225,225,128,227,193,225,128,195,193,225, + 128,195,193,193,128,199,131,193,128,199,131,193,128,199,131,195, + 0,199,131,195,0,231,135,130,0,103,135,134,0,99,139,204, + 0,49,240,240,0,48,0,0,0,24,0,0,0,12,0,0, + 0,7,0,96,0,1,255,192,0,23,26,78,25,1,0,0, + 16,0,0,24,0,0,56,0,0,56,0,0,60,0,0,124, + 0,0,124,0,0,126,0,0,254,0,0,254,0,0,158,0, + 1,159,0,1,159,0,1,31,0,3,15,128,3,15,128,3, + 15,128,6,7,192,7,255,192,6,7,192,4,7,224,12,3, + 224,12,3,224,28,3,240,28,3,240,255,159,254,20,25,75, + 24,2,0,255,254,0,31,7,128,31,7,192,31,3,192,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 128,31,7,0,31,248,0,31,7,0,31,3,192,31,1,224, + 31,1,224,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,240,31,1,224,31,3,192,31,7,128,255,254,0,19,25, + 75,22,2,1,3,248,64,14,6,192,30,3,192,60,3,192, + 60,1,192,124,1,192,124,0,192,124,0,192,252,0,192,252, + 0,64,252,0,64,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,96,124,0,64,124,0,64,124,0,64, + 60,0,192,30,0,128,30,1,0,15,3,0,3,252,0,23, + 25,75,27,2,0,255,255,0,31,3,192,31,0,224,31,0, + 240,31,0,120,31,0,120,31,0,124,31,0,124,31,0,126, + 31,0,126,31,0,126,31,0,126,31,0,126,31,0,126,31, + 0,126,31,0,126,31,0,124,31,0,124,31,0,124,31,0, + 120,31,0,120,31,0,240,31,0,224,31,3,192,255,255,0, + 20,25,75,23,2,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,25,75,23,2,0,255,255,240,31,3,240,31,0,240, + 31,0,240,31,0,112,31,0,112,31,0,48,31,4,48,31, + 4,48,31,12,48,31,12,0,31,28,0,31,252,0,31,28, + 0,31,12,0,31,12,0,31,4,0,31,4,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,255, + 240,0,21,26,78,24,2,0,0,32,0,3,220,32,7,3, + 96,14,1,224,28,1,224,60,0,224,60,0,224,124,0,96, + 124,0,96,252,0,32,252,0,32,252,0,0,252,0,0,252, + 63,248,252,3,224,252,3,224,252,3,224,252,3,224,124,3, + 224,124,3,224,124,3,224,60,3,224,60,3,96,30,6,96, + 14,12,96,3,184,32,25,25,100,28,2,0,255,231,255,128, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,255,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,255,231,255,128, + 11,25,50,14,2,0,255,224,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,224,16,25,50,18,1,0,7,255, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,120,248, + 248,248,248,248,248,248,240,248,224,240,64,240,97,224,63,192, + 24,25,75,27,2,0,255,227,252,31,0,224,31,0,192,31, + 0,128,31,1,128,31,3,0,31,6,0,31,12,0,31,28, + 0,31,28,0,31,62,0,31,126,0,31,255,0,31,191,0, + 31,31,128,31,31,128,31,15,192,31,15,192,31,7,224,31, + 7,224,31,3,240,31,1,240,31,1,248,31,1,252,255,231, + 255,20,25,75,23,2,0,255,224,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,48,31,0,48,31,0,48,31,0,48,31,0,112, + 31,0,112,31,0,240,31,0,240,31,1,240,31,3,240,255, + 255,240,27,25,100,30,2,0,255,0,63,224,15,0,63,0, + 15,128,63,0,15,128,63,0,15,128,127,0,15,192,95,0, + 15,192,95,0,11,224,95,0,11,224,223,0,11,224,159,0, + 9,240,159,0,9,240,159,0,9,241,31,0,8,249,31,0, + 8,249,31,0,8,249,31,0,8,126,31,0,8,126,31,0, + 8,62,31,0,8,62,31,0,8,60,31,0,8,28,31,0, + 24,28,31,0,60,28,31,0,255,8,255,224,24,25,75,27, + 2,0,255,3,255,31,128,124,31,128,56,15,192,16,7,224, + 16,7,240,16,7,240,16,5,248,16,5,252,16,4,252,16, + 4,126,16,4,127,16,4,63,16,4,31,144,4,31,208,4, + 15,208,4,7,240,4,7,240,4,3,240,4,1,240,4,1, + 240,4,0,240,14,0,112,31,0,48,255,192,48,20,25,75, + 24,2,1,3,252,0,6,6,0,14,7,0,28,3,128,60, + 3,192,60,3,192,124,3,224,124,3,224,124,3,224,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,124,3,224,124,3,224,124,3,224,60,3,192,60, + 3,192,28,3,128,14,7,0,6,6,0,3,252,0,20,25, + 75,24,2,0,255,254,0,31,3,128,31,3,192,31,1,224, + 31,1,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,192,31,7,128,31,254,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,255,240,0,20, + 33,99,24,2,249,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,240,124,3,224,124,3,224,60,243, + 192,61,155,192,29,11,128,15,15,128,7,15,16,3,156,16, + 0,108,16,0,12,16,0,12,48,0,14,48,0,15,240,0, + 15,224,0,7,224,0,3,128,22,25,75,25,2,0,255,252, + 0,31,7,128,31,7,192,31,3,192,31,3,224,31,3,224, + 31,3,224,31,3,224,31,3,192,31,7,192,31,15,0,31, + 248,0,31,14,0,31,15,0,31,7,128,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,196,31,7,196,31,7,196, + 31,7,196,31,3,200,255,241,248,16,25,50,21,3,1,31, + 198,32,118,96,62,224,30,224,14,240,6,248,6,252,6,255, + 2,127,128,127,192,63,240,15,248,7,252,129,254,128,254,192, + 127,192,31,192,15,224,7,224,7,240,6,248,6,220,12,135, + 120,21,25,75,25,3,0,255,255,248,248,248,248,240,248,120, + 224,248,120,192,248,56,192,248,56,128,248,24,128,248,24,128, + 248,24,128,248,24,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,15, + 255,0,23,25,75,26,2,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,24,25,75,27,2,0,255,241,255,31,128,56,15, + 128,48,15,192,48,15,192,48,7,192,32,7,224,32,7,224, + 96,3,224,64,3,240,64,1,240,192,1,240,128,1,248,128, + 0,249,128,0,249,128,0,253,0,0,125,0,0,127,0,0, + 126,0,0,62,0,0,62,0,0,60,0,0,28,0,0,28, + 0,0,24,0,34,25,125,36,1,0,255,231,255,127,192,31, + 129,248,14,0,15,128,248,14,0,15,128,252,12,0,15,192, + 124,12,0,7,192,124,12,0,7,192,124,8,0,7,224,254, + 24,0,3,224,190,24,0,3,224,190,24,0,3,241,159,16, + 0,1,241,159,48,0,1,241,31,48,0,1,249,15,32,0, + 1,251,15,160,0,0,250,15,224,0,0,254,15,224,0,0, + 254,7,192,0,0,126,7,192,0,0,124,7,192,0,0,124, + 3,192,0,0,60,3,128,0,0,56,3,128,0,0,56,1, + 128,0,0,24,1,128,0,23,25,75,26,2,0,255,231,252, + 31,193,224,15,192,192,15,193,128,7,225,128,7,227,0,3, + 242,0,3,246,0,1,244,0,1,248,0,0,248,0,0,252, + 0,0,124,0,0,62,0,0,126,0,0,127,0,0,159,0, + 1,159,128,1,15,128,3,15,192,6,7,224,4,7,224,12, + 3,240,28,7,240,255,143,254,23,25,75,26,2,0,255,225, + 254,31,128,112,31,128,96,15,128,96,15,192,64,7,192,192, + 7,224,192,7,224,128,3,225,128,3,241,0,1,241,0,1, + 251,0,0,250,0,0,254,0,0,252,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,3,255,128,18,25,75,22,2,0,127, + 255,192,124,15,192,120,31,128,112,31,128,96,63,0,96,63, + 0,64,126,0,64,126,0,64,252,0,0,252,0,1,248,0, + 1,240,0,3,240,0,7,224,0,7,224,0,15,192,64,15, + 192,64,31,128,64,31,128,64,63,0,192,63,1,192,126,1, + 192,126,3,192,252,15,192,255,255,192,8,31,31,14,3,250, + 255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,255,11, + 33,66,15,2,249,192,0,192,0,224,0,96,0,96,0,96, + 0,112,0,48,0,48,0,56,0,24,0,24,0,28,0,12, + 0,12,0,12,0,14,0,6,0,6,0,7,0,3,0,3, + 0,3,0,3,128,1,128,1,128,1,192,0,192,0,192,0, + 224,0,96,0,96,0,96,8,31,31,13,2,250,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,255,16,12,24,20, + 2,14,1,128,3,128,3,192,7,224,14,96,14,112,28,56, + 24,56,56,28,112,12,96,14,224,7,18,2,6,18,0,250, + 255,255,192,255,255,192,6,7,7,15,3,18,224,224,240,120, + 24,12,4,15,17,34,18,2,0,15,128,49,224,96,240,112, + 240,120,240,120,240,32,240,7,240,28,240,56,240,120,240,240, + 240,240,242,240,242,240,242,121,252,62,120,15,25,50,18,1, + 0,252,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,240,61,56,62,60,62,28,62,30,62,30,60,30,60, + 30,60,30,60,30,60,30,62,30,62,30,62,28,50,60,35, + 56,33,224,13,17,34,16,2,0,7,128,28,96,56,32,120, + 112,120,240,248,240,240,224,240,64,240,0,240,0,240,0,240, + 8,120,16,120,16,56,16,28,32,7,192,17,25,75,20,2, + 0,1,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,15,60,0,28,188,0,56, + 124,0,120,124,0,120,60,0,240,60,0,240,60,0,240,60, + 0,240,60,0,240,60,0,240,60,0,240,60,0,120,60,0, + 120,124,0,56,124,0,28,188,0,15,63,128,13,17,34,17, + 2,0,7,128,24,224,56,240,120,240,120,240,240,120,240,120, + 240,120,255,248,240,0,240,0,240,8,120,8,120,24,56,16, + 28,32,7,192,12,25,50,12,1,0,3,192,14,112,30,112, + 28,240,60,240,60,240,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,255,128,17,25,75,19, + 1,248,7,199,0,28,249,128,60,115,128,120,123,128,120,123, + 0,120,120,0,120,120,0,120,120,0,60,112,0,28,224,0, + 7,192,0,56,0,0,96,0,0,127,192,0,127,248,0,127, + 252,0,63,254,0,63,254,0,64,14,0,128,6,0,128,6, + 0,128,4,0,64,12,0,32,56,0,31,224,0,17,25,75, + 19,1,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,120,0,61,188, + 0,61,28,0,62,30,0,62,30,0,62,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,255,127,128,8,25, + 25,11,2,0,56,124,124,124,56,0,0,0,252,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,10,33,66, + 10,254,248,3,128,7,192,7,192,7,192,3,128,0,0,0, + 0,0,0,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,99,192,243,192,243,192,243,128,231, + 128,103,0,62,0,17,25,75,19,1,0,252,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,127,0,60,24,0,60,16,0,60,48,0,60, + 32,0,60,64,0,60,192,0,60,224,0,61,224,0,62,240, + 0,62,240,0,60,120,0,60,124,0,60,60,0,60,62,0, + 60,62,0,255,127,128,9,25,50,11,1,0,252,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,255,128,25,17, + 68,28,1,0,252,120,120,0,61,188,158,0,61,31,30,0, + 62,31,30,0,62,30,31,0,62,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,255,127,191,128,17,17,51,19,1,0,252,120, + 0,61,188,0,61,28,0,62,30,0,62,30,0,62,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,255,127, + 128,14,17,34,18,2,0,7,128,28,224,56,112,120,120,120, + 120,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,56,112,24,224,7,128,15,25,50,18,1,248,252, + 240,61,56,62,60,62,28,62,30,62,30,60,30,60,30,60, + 30,60,30,60,30,62,30,62,30,62,28,62,60,61,56,60, + 240,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 128,16,25,50,19,2,248,15,132,28,196,56,100,120,124,120, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 124,120,124,56,124,28,188,15,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,1,255,12,17,34,14,1,0,252, + 224,61,112,62,240,62,240,62,240,62,96,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,11,17,34,14,2,0,60,64,99,64,193,192,192,192,224, + 192,240,64,252,0,127,0,63,128,31,192,135,224,129,224,192, + 224,224,96,224,96,144,192,143,128,11,24,48,13,1,0,12, + 0,12,0,12,0,12,0,12,0,28,0,60,0,255,192,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 32,60,32,60,32,60,32,60,96,60,64,31,192,15,128,17, + 17,51,19,1,0,252,126,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,60,62,0,60,62,0,60, + 94,0,30,158,0,15,31,128,17,17,51,18,0,0,255,159, + 128,30,6,0,30,4,0,30,4,0,15,12,0,15,8,0, + 15,8,0,7,152,0,7,144,0,3,208,0,3,240,0,3, + 224,0,1,224,0,1,192,0,1,192,0,0,192,0,0,128, + 0,25,17,68,26,0,0,255,63,207,128,30,15,6,0,30, + 15,6,0,30,15,4,0,15,7,132,0,15,15,132,0,7, + 143,136,0,7,139,200,0,7,147,200,0,3,211,208,0,3, + 209,240,0,3,225,240,0,1,225,224,0,1,224,224,0,1, + 192,224,0,0,192,192,0,0,192,64,0,16,17,34,18,1, + 0,255,126,62,24,30,16,31,16,15,32,15,192,7,192,3, + 192,3,192,1,224,3,240,2,240,4,248,8,120,8,124,24, + 126,254,127,17,25,75,18,0,248,255,159,128,62,6,0,30, + 4,0,31,4,0,15,8,0,15,8,0,15,136,0,7,136, + 0,7,144,0,3,208,0,3,208,0,3,224,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 128,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,13,17,34,16,1,0,127,248,112,248,96,240, + 97,224,67,224,67,192,7,192,7,128,15,128,15,0,31,8, + 30,8,60,24,124,24,120,56,248,120,255,248,11,33,66,15, + 2,249,0,32,3,192,7,0,15,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 56,0,224,0,56,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,14,0,7,0, + 3,192,0,32,2,32,32,10,4,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,11,33,66,15,3,249, + 128,0,240,0,60,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,15,0,7,0, + 1,224,7,0,15,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,60,0,240,0, + 128,0,19,7,21,23,2,6,62,0,64,127,128,32,255,240, + 32,135,252,32,129,255,224,128,63,192,64,15,128,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,10,0,0,6,26,26,10,2,248,120,252,252,252,120,0, + 0,0,32,48,48,48,48,48,48,120,120,120,120,252,252,252, + 252,252,252,120,13,25,50,19,3,252,1,0,1,0,1,0, + 1,0,15,192,29,32,57,48,121,112,121,112,249,112,241,96, + 241,0,241,0,241,0,241,0,241,8,121,16,121,16,57,16, + 29,32,15,192,1,0,1,0,1,0,1,0,21,26,78,24, + 2,0,0,2,0,0,61,192,0,112,96,0,240,112,1,224, + 112,1,224,240,3,224,240,3,224,224,3,224,0,3,224,0, + 3,224,0,31,224,0,35,225,0,1,254,0,1,240,0,1, + 240,0,0,240,0,0,240,0,0,240,0,0,224,0,0,224, + 8,60,192,16,199,192,48,131,255,224,131,255,192,124,63,128, + 18,17,51,20,1,3,64,0,128,227,241,192,127,255,128,60, + 15,0,56,7,0,48,3,0,112,3,128,96,1,128,96,1, + 128,96,1,128,96,1,128,112,3,128,48,3,0,56,7,0, + 62,31,0,127,255,128,99,241,128,18,25,75,20,1,0,255, + 143,192,63,3,128,63,3,0,31,3,0,31,130,0,15,130, + 0,15,196,0,15,196,0,7,196,0,7,232,0,3,232,0, + 3,248,0,3,240,0,63,255,128,1,240,0,1,240,0,63, + 255,128,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,31,254,0,2,32,32,10,4,250, + 192,192,192,192,192,192,192,192,192,192,192,192,192,0,0,0, + 0,0,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 15,32,64,22,2,249,7,224,28,24,56,24,48,28,112,124, + 112,124,112,124,120,56,124,0,63,0,31,224,127,240,71,252, + 193,252,192,126,224,30,248,14,254,6,127,134,63,228,31,248, + 7,248,1,248,0,124,60,60,60,28,124,28,124,28,112,24, + 48,56,24,112,15,192,11,4,8,15,2,19,113,192,241,224, + 241,224,113,192,24,25,75,28,2,1,1,255,128,6,0,64, + 12,0,48,24,0,24,48,60,136,32,227,132,65,193,134,65, + 193,130,195,192,130,131,192,131,131,192,129,131,192,1,131,192, + 1,131,192,1,131,192,65,131,192,131,195,192,130,65,192,130, + 65,193,134,32,227,4,48,60,8,16,0,24,12,0,48,6, + 0,64,1,255,128,10,13,26,13,1,12,60,0,70,0,199, + 0,231,0,71,0,63,0,103,0,231,0,231,64,231,64,123, + 128,0,0,255,128,9,15,30,17,4,1,8,0,24,128,48, + 128,97,0,99,0,227,0,227,0,227,0,227,0,227,0,227, + 0,97,0,49,128,48,128,8,0,16,9,18,20,2,5,255, + 255,255,255,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,9,4,8,13,2,7,255,128,255,128,255,128,255,128,24, + 25,75,28,2,1,1,255,128,6,0,64,12,0,48,24,0, + 24,55,254,8,33,227,132,65,227,198,65,227,194,193,227,194, + 129,227,195,129,231,129,129,252,1,129,231,1,129,227,129,129, + 227,193,129,227,195,193,227,210,65,227,210,65,227,214,33,227, + 212,55,249,232,16,0,24,12,0,48,6,0,64,1,255,128, + 9,2,4,15,3,20,255,128,255,128,11,10,20,19,4,16, + 63,128,123,192,224,192,192,96,192,96,192,96,192,224,97,192, + 63,128,31,0,29,26,104,33,2,254,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,255,255,255,248,255,255,255,248,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,0,0,0,0,0,0,0,255,255,255,240,255,255, + 255,240,10,16,32,15,3,9,31,0,103,128,195,192,195,192, + 227,192,243,128,7,128,14,0,28,0,48,64,64,64,64,64, + 255,192,255,192,159,128,135,0,11,16,32,15,2,9,31,0, + 35,128,99,192,115,192,115,192,51,128,3,0,28,0,3,128, + 3,192,97,224,241,224,241,224,227,224,99,192,63,0,6,7, + 7,15,6,18,28,28,60,120,96,192,128,17,27,81,20,2, + 246,96,48,0,112,120,0,240,120,0,240,120,0,240,120,0, + 240,120,0,240,120,0,240,120,0,240,120,0,96,56,0,96, + 48,128,96,48,128,96,113,128,32,127,128,48,255,128,95,207, + 0,71,143,0,64,0,0,96,0,0,96,0,0,112,0,0, + 112,0,0,120,0,0,120,0,0,120,0,0,120,0,0,48, + 0,0,17,30,90,20,2,251,15,255,128,63,140,0,127,140, + 0,127,140,0,255,140,0,255,140,0,255,140,0,255,140,0, + 255,140,0,127,140,0,127,140,0,63,140,0,31,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,5,5,5,9,2,9,112,248,248,248,112,7,7,7, + 15,4,249,32,32,24,14,14,14,252,8,15,15,16,4,10, + 12,28,252,60,60,60,60,60,60,60,60,60,60,60,255,9, + 13,26,13,2,12,28,0,103,0,99,0,227,128,227,128,227, + 128,227,128,227,128,99,0,103,0,28,0,0,0,255,128,9, + 14,28,17,4,2,132,0,198,0,99,0,99,0,115,128,115, + 128,115,128,115,128,115,128,99,128,99,0,195,0,134,0,12, + 0,25,26,104,31,4,0,0,0,48,0,12,0,48,0,28, + 0,96,0,252,0,96,0,60,0,192,0,60,0,128,0,60, + 1,128,0,60,3,0,0,60,3,0,0,60,6,0,0,60, + 6,0,0,60,12,14,0,60,12,30,0,60,24,30,0,60, + 16,62,0,255,48,62,0,0,96,94,0,0,96,158,0,0, + 192,158,0,0,193,30,0,1,131,30,0,1,131,255,128,3, + 0,30,0,2,0,30,0,6,0,30,0,12,0,255,128,25, + 26,104,31,4,0,0,0,48,0,28,0,32,0,252,0,96, + 0,60,0,64,0,60,0,192,0,60,1,128,0,60,1,128, + 0,60,3,0,0,60,3,0,0,60,6,0,0,60,4,62, + 0,60,12,207,0,60,9,135,128,60,25,135,128,60,49,199, + 128,255,49,231,0,0,96,207,0,0,96,28,0,0,192,56, + 0,0,128,96,0,1,128,64,128,3,0,128,128,3,1,255, + 128,6,1,255,128,6,1,63,0,12,1,14,0,26,26,104, + 30,2,0,0,0,24,0,31,0,24,0,35,128,48,0,99, + 192,48,0,115,192,96,0,115,192,64,0,51,128,192,0,3, + 0,128,0,28,1,128,0,3,131,0,0,3,195,0,0,113, + 230,7,0,241,228,15,0,227,236,15,0,99,200,31,0,63, + 24,31,0,0,16,47,0,0,48,79,0,0,96,79,0,0, + 96,143,0,0,192,143,0,0,129,255,192,1,128,15,0,1, + 0,15,0,3,0,15,0,2,0,127,192,11,26,52,16,2, + 248,28,0,62,0,62,0,62,0,28,0,0,0,0,0,30, + 0,49,0,33,0,33,0,1,0,2,0,6,0,14,0,28, + 0,60,0,120,192,120,64,248,32,240,32,240,32,240,32,120, + 64,120,64,31,128,23,33,99,25,1,0,1,128,0,1,192, + 0,0,224,0,0,96,0,0,48,0,0,16,0,0,0,0, + 0,16,0,0,24,0,0,56,0,0,56,0,0,60,0,0, + 124,0,0,124,0,0,126,0,0,254,0,0,254,0,0,158, + 0,1,159,0,1,159,0,1,31,0,3,15,128,3,15,128, + 3,15,128,6,7,192,7,255,192,6,7,192,4,7,224,12, + 3,224,12,3,224,28,3,240,28,3,240,255,159,254,23,33, + 99,25,1,0,0,3,0,0,7,128,0,7,0,0,14,0, + 0,28,0,0,16,0,0,0,0,0,16,0,0,24,0,0, + 56,0,0,56,0,0,60,0,0,124,0,0,124,0,0,126, + 0,0,254,0,0,254,0,0,159,0,1,159,0,1,159,0, + 1,31,128,3,15,128,3,15,128,3,15,128,6,7,192,7, + 255,192,6,7,192,12,7,224,12,3,224,12,3,224,28,3, + 240,60,3,248,255,159,254,23,33,99,25,1,0,0,16,0, + 0,56,0,0,56,0,0,124,0,0,199,0,1,129,128,0, + 0,0,0,16,0,0,24,0,0,56,0,0,56,0,0,60, + 0,0,124,0,0,124,0,0,126,0,0,254,0,0,254,0, + 0,158,0,1,159,0,1,159,0,1,31,0,3,15,128,3, + 15,128,3,15,128,6,7,192,7,255,192,6,7,192,4,7, + 224,12,3,224,12,3,224,28,3,240,28,3,240,255,159,254, + 23,32,96,25,1,0,0,112,128,0,249,0,1,191,0,1, + 14,0,0,0,0,0,0,0,0,0,0,0,24,0,0,56, + 0,0,56,0,0,60,0,0,124,0,0,124,0,0,126,0, + 0,254,0,0,254,0,0,159,0,1,159,0,1,159,0,1, + 31,128,3,15,128,3,15,128,3,15,128,6,7,192,7,255, + 192,6,7,192,12,7,224,12,3,224,12,3,224,28,3,240, + 60,3,248,255,159,254,23,32,96,25,1,0,1,195,128,3, + 199,128,3,199,128,1,195,128,0,0,0,0,0,0,0,24, + 0,0,56,0,0,56,0,0,56,0,0,60,0,0,124,0, + 0,124,0,0,126,0,0,254,0,0,254,0,0,159,0,1, + 159,0,1,159,0,1,15,128,3,15,128,2,15,128,2,15, + 192,6,7,192,7,255,192,4,7,192,4,3,224,8,3,224, + 8,3,224,24,1,240,24,3,240,255,159,254,23,33,99,25, + 1,0,0,60,0,0,126,0,0,195,0,0,195,0,0,199, + 0,0,126,0,0,60,0,0,0,0,0,24,0,0,56,0, + 0,56,0,0,60,0,0,124,0,0,124,0,0,126,0,0, + 254,0,0,254,0,0,159,0,1,159,0,1,159,0,1,15, + 0,3,15,128,3,15,128,2,15,128,2,7,192,7,255,192, + 4,7,192,4,3,224,12,3,224,8,3,224,24,1,240,28, + 1,240,255,159,254,32,25,100,34,1,0,0,15,255,255,0, + 3,240,31,0,7,240,15,0,7,240,7,0,5,240,7,0, + 13,240,3,0,9,240,3,0,25,240,35,0,25,240,32,0, + 49,240,96,0,49,240,96,0,97,240,224,0,97,255,224,0, + 193,240,224,0,193,240,96,1,129,240,96,1,129,240,33,3, + 255,240,33,3,1,240,3,6,1,240,3,6,1,240,7,12, + 1,240,7,12,1,240,15,62,1,240,63,255,143,255,255,19, + 33,99,22,2,249,3,248,192,14,6,192,30,3,192,60,3, + 192,60,1,192,124,1,192,124,0,192,124,0,192,252,0,192, + 252,0,64,252,0,64,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,96,124,0,64,124,0,64,124,0, + 64,60,0,192,62,0,128,30,1,0,15,2,0,3,156,0, + 0,224,0,0,128,0,0,240,0,0,56,0,0,56,0,0, + 56,0,2,48,0,1,224,0,20,33,99,23,2,0,3,0, + 0,7,128,0,3,128,0,1,192,0,0,224,0,0,32,0, + 0,0,0,0,0,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,33,99,23,2,0,0,6,0,0,14,0,0,30,0, + 0,28,0,0,48,0,0,96,0,0,0,0,0,0,0,255, + 255,224,31,1,224,31,0,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,4,32,31,4,0,31,12,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,12,48,31, + 4,48,31,4,48,31,0,48,31,0,112,31,0,112,31,0, + 240,31,0,240,31,3,240,255,255,240,20,33,99,23,2,0, + 0,32,0,0,96,0,0,240,0,1,248,0,3,140,0,6, + 3,0,0,0,0,0,0,0,255,255,224,31,1,224,31,0, + 224,31,0,224,31,0,96,31,0,96,31,0,32,31,4,32, + 31,4,0,31,12,0,31,12,0,31,28,0,31,252,0,31, + 28,0,31,12,0,31,12,48,31,4,48,31,4,48,31,0, + 48,31,0,112,31,0,112,31,0,240,31,1,240,31,3,240, + 255,255,240,20,32,96,23,2,0,7,14,0,7,143,0,7, + 143,0,7,14,0,0,0,0,0,0,0,0,0,0,255,255, + 224,31,1,224,31,0,224,31,0,224,31,0,96,31,0,96, + 31,0,32,31,4,32,31,4,0,31,12,0,31,12,0,31, + 28,0,31,252,0,31,28,0,31,12,0,31,12,48,31,4, + 48,31,4,48,31,0,48,31,0,112,31,0,112,31,0,240, + 31,0,240,31,3,240,255,255,240,11,33,66,14,2,0,96, + 0,112,0,120,0,56,0,28,0,4,0,0,0,0,0,255, + 224,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,255, + 224,11,33,66,14,2,0,0,192,1,192,3,192,3,128,7, + 0,4,0,0,0,0,0,255,224,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,255,224,11,33,66,14,2,0,4, + 0,14,0,14,0,31,0,113,128,192,96,0,0,0,0,255, + 224,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,255, + 224,11,32,64,15,2,0,112,224,241,224,241,224,112,224,0, + 0,0,0,0,0,255,224,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,255,224,23,25,75,27,2,0,255,255,0, + 31,3,192,31,0,224,31,0,240,31,0,120,31,0,120,31, + 0,124,31,0,124,31,0,126,31,0,126,31,0,126,255,224, + 126,31,0,126,31,0,126,31,0,126,31,0,126,31,0,124, + 31,0,124,31,0,124,31,0,120,31,0,120,31,0,240,31, + 0,224,31,3,192,255,255,0,24,32,96,27,2,0,0,112, + 64,0,252,192,0,159,128,0,135,0,0,0,0,0,0,0, + 0,0,0,255,3,255,31,128,124,31,128,56,15,192,16,7, + 224,16,7,240,16,7,240,16,5,248,16,5,252,16,4,252, + 16,4,126,16,4,127,16,4,63,16,4,31,144,4,31,208, + 4,15,208,4,7,240,4,7,240,4,3,240,4,1,240,4, + 1,240,4,0,240,14,0,112,31,0,48,255,192,48,20,33, + 99,24,2,1,7,0,0,7,128,0,3,128,0,1,192,0, + 0,192,0,0,96,0,0,0,0,0,0,0,3,252,0,6, + 6,0,14,7,0,28,3,128,60,3,192,60,3,192,124,3, + 224,124,3,224,124,3,224,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,252,3,240,252,3,240,124,3,224,124, + 3,224,124,3,224,60,3,192,60,3,192,28,3,128,14,7, + 0,6,6,0,3,252,0,20,33,99,24,2,1,0,14,0, + 0,30,0,0,28,0,0,56,0,0,48,0,0,96,0,0, + 0,0,0,0,0,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,224,124,3,224,124,3,224,60,3, + 192,60,3,192,28,3,128,14,7,0,6,6,0,3,252,0, + 20,33,99,24,2,0,0,96,0,0,96,0,0,240,0,1, + 248,0,3,156,0,6,6,0,0,0,0,0,0,0,3,252, + 0,6,6,0,14,7,0,28,3,128,60,3,192,60,3,192, + 124,3,224,124,3,224,124,3,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 224,124,3,224,124,3,224,60,3,192,60,3,192,28,3,128, + 14,7,0,6,6,0,3,252,0,20,32,96,24,2,0,1, + 194,0,3,230,0,6,124,0,4,56,0,0,0,0,0,0, + 0,0,0,0,3,252,0,6,6,0,14,7,0,28,3,128, + 60,3,192,60,3,192,124,3,224,124,3,224,124,3,224,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,124,3,224,60,3,192, + 60,3,192,28,3,128,14,7,0,6,6,0,3,252,0,20, + 32,96,24,2,0,7,14,0,7,143,0,7,143,0,7,14, + 0,0,0,0,0,0,0,0,0,0,3,252,0,6,6,0, + 14,7,0,28,3,128,60,3,192,60,3,192,124,3,224,124, + 3,224,124,3,224,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,252,3,240,124,3,224,124,3,224, + 124,3,224,60,3,192,60,3,192,28,3,128,14,7,0,6, + 6,0,3,252,0,22,23,69,32,5,254,64,0,8,224,0, + 28,240,0,60,120,0,120,56,0,240,28,0,224,14,1,192, + 7,3,128,3,135,0,1,206,0,0,252,0,0,120,0,0, + 120,0,0,252,0,1,206,0,3,135,0,7,3,128,14,1, + 192,28,0,224,56,0,112,112,0,56,224,0,28,64,0,8, + 20,25,75,24,2,1,3,252,48,6,6,96,14,3,192,28, + 3,128,60,3,192,60,3,192,124,3,224,124,7,224,124,15, + 224,252,11,240,252,19,240,252,35,240,252,99,240,252,67,240, + 252,131,240,253,3,240,127,3,224,126,3,224,124,3,224,60, + 3,192,60,3,192,28,3,128,60,7,0,102,6,0,195,252, + 0,23,33,99,26,2,1,1,192,0,1,224,0,0,224,0, + 0,112,0,0,56,0,0,8,0,0,0,0,0,0,0,255, + 225,254,31,0,120,31,0,48,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,15,0,32,15,0, + 32,7,128,64,3,192,192,1,255,0,23,33,99,26,2,1, + 0,3,128,0,3,128,0,7,128,0,14,0,0,12,0,0, + 24,0,0,0,0,0,0,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,23,33,99,26,2,0,0,8,0,0,24,0,0, + 60,0,0,126,0,0,227,0,1,128,192,0,0,0,0,0, + 0,255,225,254,31,0,120,31,0,48,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,15,0,48, + 15,128,32,7,128,64,3,192,192,1,255,0,23,32,96,26, + 2,0,1,195,128,1,227,192,1,227,192,1,195,128,0,0, + 0,0,0,0,0,0,0,255,225,254,31,0,120,31,0,48, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,15,0,32,15,0,32,7,128,64,3,192,192,1, + 255,0,23,33,99,26,2,0,0,1,128,0,3,128,0,7, + 128,0,7,0,0,12,0,0,8,0,0,0,0,0,0,0, + 255,225,254,31,128,112,31,128,96,15,128,96,15,192,64,7, + 192,192,7,224,192,7,224,128,3,225,128,3,241,0,1,241, + 0,1,251,0,0,250,0,0,254,0,0,252,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,3,255,128,20,25,75,24,2, + 0,255,240,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,254,0,31,7,128,31,3,192,31,1,224,31,1,240,31, + 1,240,31,1,240,31,1,240,31,1,240,31,1,224,31,3, + 192,31,7,128,31,254,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,255,240,0,16,25,50,19, + 1,0,3,224,6,120,14,60,30,60,28,60,60,60,60,60, + 60,56,60,112,61,192,60,48,60,28,60,30,60,30,60,15, + 60,15,60,15,60,15,60,15,60,15,61,207,63,222,63,158, + 61,156,252,248,15,25,50,18,2,0,48,0,56,0,60,0, + 28,0,14,0,2,0,0,0,0,0,15,128,49,224,96,240, + 112,240,120,240,120,240,48,240,3,240,28,240,56,240,120,240, + 240,240,240,242,240,242,240,242,121,252,62,120,15,25,50,18, + 2,0,0,224,0,224,1,224,1,192,3,0,6,0,4,0, + 0,0,15,128,49,224,96,240,112,240,120,240,120,240,32,240, + 7,240,28,240,56,240,120,240,240,240,240,242,240,242,240,242, + 121,252,62,120,15,25,50,18,2,0,7,0,7,0,15,0, + 13,128,24,192,112,96,0,0,0,0,15,128,49,224,96,240, + 112,240,120,240,120,240,32,240,7,240,28,240,56,240,120,240, + 240,240,240,242,240,242,240,242,121,252,62,120,15,24,48,18, + 2,0,28,32,63,32,103,224,65,192,0,0,0,0,0,0, + 15,128,49,224,96,240,112,240,120,240,120,240,48,240,7,240, + 28,240,56,240,120,240,240,240,240,242,240,242,240,242,121,252, + 62,120,15,24,48,18,2,0,112,224,120,240,120,240,112,224, + 0,0,0,0,0,0,15,128,49,224,96,240,112,240,120,240, + 120,240,32,240,7,240,28,240,56,240,120,240,240,240,240,242, + 240,242,240,242,121,252,62,120,15,25,50,18,2,1,15,128, + 25,192,16,192,16,192,24,192,15,128,7,0,0,0,15,128, + 49,224,96,240,112,240,120,240,120,240,32,240,7,240,24,240, + 56,240,112,240,240,240,240,242,240,242,240,242,121,252,62,120, + 21,17,51,25,2,0,31,143,128,49,248,224,96,248,240,112, + 248,112,120,248,120,120,240,120,48,240,120,3,240,120,28,255, + 248,56,240,0,120,240,0,240,240,8,240,248,8,240,248,8, + 240,248,16,121,188,48,62,15,192,13,24,48,16,2,249,7, + 128,28,96,56,32,120,112,120,240,248,240,240,224,240,64,240, + 0,240,0,240,0,240,8,120,16,120,16,56,16,28,32,15, + 192,2,0,4,0,3,128,1,192,1,192,17,192,15,128,13, + 25,50,17,2,0,48,0,56,0,60,0,28,0,6,0,3, + 0,0,0,0,0,7,128,24,224,56,240,120,240,120,240,240, + 120,240,120,240,120,255,248,240,0,240,0,240,8,120,8,120, + 24,56,16,28,32,7,192,13,25,50,17,2,0,0,96,0, + 224,1,224,1,192,3,128,6,0,0,0,0,0,7,128,24, + 224,56,240,120,240,120,240,240,120,240,120,240,120,255,248,240, + 0,240,0,240,8,120,8,120,24,56,16,28,32,7,192,13, + 25,50,17,2,0,7,0,7,0,15,128,13,128,24,192,48, + 112,0,0,0,0,7,128,24,224,56,240,120,240,120,240,240, + 120,240,120,240,120,255,248,240,0,240,0,240,8,120,8,120, + 24,56,16,28,32,7,192,13,24,48,17,2,0,56,224,120, + 240,120,240,56,224,0,0,0,0,0,0,7,128,24,224,56, + 240,120,240,120,240,240,120,240,120,240,120,255,248,240,0,240, + 0,240,8,120,8,120,24,56,16,28,32,7,192,8,25,25, + 10,1,0,192,224,240,112,24,12,0,0,252,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,255,8,25,25,10, + 1,0,3,7,7,14,28,16,0,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,255,10,25,50,10,0, + 0,28,0,30,0,30,0,55,0,97,128,192,192,0,0,0, + 0,126,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,127,128,10,24,48,11,1,0,115,128,243,192,243,192,115, + 128,0,0,0,0,0,0,126,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,127,128,14,25,50,18,2,0,30, + 48,15,96,15,128,7,128,15,192,49,224,1,224,0,240,15, + 248,28,248,56,120,120,120,120,124,240,124,240,60,240,60,240, + 60,240,60,240,60,240,124,120,120,120,120,56,112,28,224,7, + 192,17,23,69,19,1,1,7,136,0,15,248,0,16,240,0, + 0,0,0,0,0,0,0,0,0,252,120,0,61,188,0,61, + 28,0,62,30,0,62,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,255,127,128,14,25,50,18, + 2,0,24,0,60,0,28,0,14,0,7,0,3,0,0,0, + 0,0,7,128,28,224,56,112,120,120,120,120,240,60,240,60, + 240,60,240,60,240,60,240,60,240,60,120,120,120,120,56,112, + 24,224,7,128,14,25,50,18,2,0,0,96,0,240,0,224, + 1,192,3,128,3,0,0,0,0,0,7,128,28,224,56,112, + 120,120,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 240,60,120,120,120,120,56,112,24,224,7,128,14,25,50,18, + 2,0,3,0,7,128,7,128,15,192,28,224,48,48,32,16, + 0,0,7,128,28,224,56,112,120,120,120,120,240,60,240,60, + 240,60,240,60,240,60,240,60,240,60,120,120,120,120,56,112, + 24,224,7,128,14,24,48,18,2,0,14,16,31,144,39,224, + 33,224,0,0,0,0,0,0,7,128,28,224,56,112,120,120, + 120,120,240,60,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,120,120,56,112,24,224,7,128,14,24,48,18,2,0, + 56,112,60,240,60,240,56,112,0,0,0,0,0,0,7,128, + 28,224,56,112,120,120,120,120,240,60,240,60,240,60,240,60, + 240,60,240,60,240,60,120,120,120,120,56,112,24,224,7,128, + 29,23,92,31,1,254,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,7,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, + 255,248,255,255,255,248,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7, + 0,0,0,15,128,0,0,15,128,0,0,15,128,0,0,7, + 0,0,14,17,34,18,2,0,7,132,24,232,56,120,120,120, + 120,120,240,124,240,188,241,188,243,60,246,60,244,60,248,60, + 120,120,120,120,120,112,92,96,135,128,17,25,75,19,1,0, + 12,0,0,30,0,0,14,0,0,7,0,0,3,0,0,0, + 128,0,0,0,0,0,0,0,252,126,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,62,0,60,62,0,60, + 62,0,60,94,0,30,158,0,15,31,128,17,25,75,19,1, + 0,0,48,0,0,112,0,0,112,0,0,224,0,1,192,0, + 1,0,0,0,0,0,0,0,0,252,126,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,62,0,60,62,0, + 60,62,0,60,94,0,30,158,0,15,31,128,17,25,75,19, + 1,0,1,128,0,3,192,0,3,192,0,7,224,0,12,48, + 0,24,24,0,0,0,0,0,0,0,252,126,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,62,0,60,62, + 0,60,62,0,60,94,0,30,158,0,15,31,128,17,24,72, + 19,1,0,28,112,0,30,120,0,30,120,0,28,112,0,0, + 0,0,0,0,0,0,0,0,252,126,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,62,0,60,62,0,60, + 62,0,60,94,0,30,158,0,15,31,128,17,33,99,18,0, + 248,0,28,0,0,28,0,0,60,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,0,0,255,159,128,62,6,0,30, + 4,0,31,4,0,15,4,0,15,8,0,15,136,0,7,136, + 0,7,152,0,3,208,0,3,208,0,3,240,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 64,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,15,32,64,18,1,247,12,0,28,0,124,0, + 188,0,60,0,60,0,60,0,60,120,60,252,61,30,63,30, + 62,30,62,30,62,30,60,30,60,28,60,28,60,56,60,56, + 60,48,60,96,60,192,61,0,62,0,60,0,60,0,60,0, + 60,0,60,0,60,0,48,0,192,0,17,32,96,18,0,248, + 14,28,0,15,60,0,15,60,0,14,28,0,0,0,0,0, + 0,0,0,0,0,255,159,128,62,6,0,30,4,0,30,4, + 0,15,8,0,15,8,0,15,8,0,7,136,0,7,144,0, + 3,208,0,3,208,0,3,224,0,1,224,0,1,224,0,0, + 224,0,0,192,0,0,192,0,0,64,0,0,128,0,28,128, + 0,60,128,0,61,0,0,57,0,0,59,0,0,30,0,0 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=29 h=33 x= 4 y=11 dx=31 dy= 0 ascent=26 len=120 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26n[880] U8G_SECTION(".progmem.u8g_font_osb26n") = { + 0,95,44,227,246,25,0,0,0,0,42,57,0,26,249,25, + 0,12,14,28,17,3,11,14,0,14,0,14,0,196,112,228, + 240,245,224,14,0,14,0,245,224,228,240,196,112,14,0,14, + 0,14,0,29,30,120,31,1,251,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,255,255,255,248,255,255,255,248,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,7,11,11,10,2,249,120,252,254,254,126,6,4,12,8, + 48,224,9,4,8,13,2,7,255,128,255,128,255,128,255,128, + 5,5,5,9,2,0,112,248,248,248,112,12,33,66,15,2, + 249,0,112,0,96,0,96,0,224,0,192,0,192,1,192,1, + 192,1,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,56, + 0,56,0,48,0,48,0,112,0,96,0,96,0,224,0,192, + 0,192,0,16,25,50,20,2,1,7,224,14,112,28,56,60, + 60,60,60,124,62,124,62,124,62,252,63,252,63,252,63,252, + 63,252,63,252,63,252,63,252,63,252,63,124,62,124,62,124, + 62,60,60,60,60,28,56,14,112,7,224,12,25,50,20,4, + 0,7,0,7,0,31,0,255,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,255,240,15,25,50,20,2,1,31,240,48,120,96,60,96, + 62,224,62,240,62,248,62,252,62,124,124,56,124,0,248,1, + 240,1,224,3,128,7,0,12,2,24,2,48,2,32,2,76, + 6,127,254,127,252,71,252,67,252,65,248,15,26,52,20,2, + 0,1,0,14,240,56,120,48,60,112,62,120,62,124,62,124, + 62,60,62,24,60,0,120,0,112,31,192,0,240,0,120,0, + 60,0,60,56,62,124,62,252,62,252,62,248,62,224,60,96, + 124,96,120,31,224,16,25,50,20,2,0,0,120,0,120,0, + 248,1,248,1,248,3,248,3,248,6,248,6,248,12,248,12, + 248,24,248,56,248,48,248,96,248,96,248,192,248,255,255,0, + 248,0,248,0,248,0,248,0,248,0,248,15,255,15,26,52, + 20,3,0,0,8,48,56,63,240,63,224,63,128,62,0,32, + 0,32,0,32,0,32,0,39,192,56,112,48,120,32,60,32, + 60,0,62,0,62,56,62,120,62,252,62,248,62,248,60,224, + 60,96,120,112,112,31,224,16,25,50,20,2,1,7,240,12, + 8,28,12,56,60,56,124,120,124,120,120,120,48,248,0,248, + 0,251,224,252,56,252,60,248,30,248,31,248,31,248,31,248, + 31,120,31,120,31,120,31,56,30,28,30,12,60,7,240,15, + 25,50,20,3,0,79,28,95,156,127,198,127,230,127,254,224, + 246,192,4,192,12,128,12,128,24,0,16,0,48,0,96,0, + 224,1,192,1,192,3,192,7,128,7,128,15,128,15,128,15, + 128,15,128,15,128,7,0,17,25,75,20,2,1,7,240,0, + 24,12,0,48,12,0,48,6,0,112,6,0,112,6,0,120, + 6,0,124,4,0,127,12,0,127,152,0,63,224,0,31,248, + 0,15,252,0,15,254,0,49,255,0,96,127,0,64,31,0, + 192,15,128,192,7,0,192,7,0,192,3,0,96,6,0,96, + 6,0,56,12,0,14,240,0,15,25,50,20,2,1,31,192, + 60,112,120,48,120,56,248,60,248,60,248,60,248,62,248,62, + 248,62,248,62,120,62,124,126,60,126,15,190,0,62,0,62, + 12,60,30,60,62,60,62,56,60,56,48,112,16,96,15,192 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=34 h=33 x= 4 y=18 dx=36 dy= 0 ascent=28 len=125 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x=-2 y=-8 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =26 descent=-8 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26r[5950] U8G_SECTION(".progmem.u8g_font_osb26r") = { + 0,95,44,227,246,26,7,105,16,163,32,127,248,28,248,26, + 248,0,0,0,10,0,0,6,25,25,10,2,1,120,252,252, + 252,252,252,120,120,120,120,48,48,48,48,48,48,48,0,0, + 0,120,252,252,252,120,8,8,8,12,2,18,231,231,231,231, + 231,231,66,66,20,25,75,24,2,0,3,131,0,3,131,0, + 3,3,0,3,3,0,3,3,0,3,7,0,3,7,0,255, + 255,240,255,255,240,6,6,0,6,6,0,6,6,0,6,14, + 0,6,14,0,14,12,0,12,12,0,12,12,0,255,255,224, + 255,255,224,12,28,0,12,24,0,28,24,0,24,24,0,24, + 24,0,24,24,0,16,31,62,20,2,253,2,32,2,32,2, + 32,15,248,26,38,50,34,114,35,114,35,114,47,122,47,126, + 46,126,46,63,160,63,224,31,240,15,248,7,252,3,254,2, + 126,114,63,250,47,250,47,242,39,226,39,194,38,98,38,50, + 44,30,56,3,224,2,32,2,32,23,26,78,29,3,0,8, + 0,48,54,0,32,99,0,96,99,0,192,227,128,192,227,129, + 128,227,129,0,227,131,0,227,130,0,227,134,0,99,12,0, + 54,8,0,28,24,0,0,16,112,0,48,216,0,97,140,0, + 97,140,0,195,142,0,131,142,1,131,142,1,3,142,3,3, + 142,6,3,142,4,1,140,12,1,140,8,0,248,24,25,75, + 26,1,1,1,252,0,3,4,0,3,2,0,7,2,0,7, + 2,0,7,6,0,7,132,0,7,200,0,3,240,0,3,224, + 0,1,240,0,3,240,127,6,248,28,12,124,8,24,60,24, + 56,62,16,112,31,16,240,15,32,240,15,224,248,7,192,248, + 3,192,252,3,225,126,7,242,127,253,254,31,240,124,3,8, + 8,7,2,18,224,224,224,224,224,224,64,64,10,31,62,12, + 2,250,0,192,1,0,2,0,6,0,12,0,24,0,56,0, + 56,0,120,0,112,0,112,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,112,0,112,0,112,0, + 56,0,56,0,24,0,28,0,12,0,6,0,3,0,1,128, + 9,32,64,12,1,250,192,0,96,0,48,0,24,0,28,0, + 12,0,14,0,6,0,7,0,7,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,0,7,0,7,0,14,0,14,0,12,0,24,0,48,0, + 96,0,192,0,128,0,12,14,28,17,3,11,14,0,14,0, + 14,0,196,112,228,240,245,224,14,0,14,0,245,224,228,240, + 196,112,14,0,14,0,14,0,29,30,120,31,1,251,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,255,255,255,248,255,255,255,248,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,7,11,11,10,2,249,120,252,254,254, + 126,6,4,12,8,48,224,9,4,8,13,2,7,255,128,255, + 128,255,128,255,128,5,5,5,9,2,0,112,248,248,248,112, + 12,33,66,15,2,249,0,112,0,96,0,96,0,224,0,192, + 0,192,1,192,1,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,6,0,14,0,12,0,12,0,28,0, + 24,0,24,0,56,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,192,0,16,25,50,20,2,1,7,224, + 14,112,28,56,60,60,60,60,124,62,124,62,124,62,252,63, + 252,63,252,63,252,63,252,63,252,63,252,63,252,63,252,63, + 124,62,124,62,124,62,60,60,60,60,28,56,14,112,7,224, + 12,25,50,20,4,0,7,0,7,0,31,0,255,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,240,15,25,50,20,2,1,31,240, + 48,120,96,60,96,62,224,62,240,62,248,62,252,62,124,124, + 56,124,0,248,1,240,1,224,3,128,7,0,12,2,24,2, + 48,2,32,2,76,6,127,254,127,252,71,252,67,252,65,248, + 15,26,52,20,2,0,1,0,14,240,56,120,48,60,112,62, + 120,62,124,62,124,62,60,62,24,60,0,120,0,112,31,192, + 0,240,0,120,0,60,0,60,56,62,124,62,252,62,252,62, + 248,62,224,60,96,124,96,120,31,224,16,25,50,20,2,0, + 0,120,0,120,0,248,1,248,1,248,3,248,3,248,6,248, + 6,248,12,248,12,248,24,248,56,248,48,248,96,248,96,248, + 192,248,255,255,0,248,0,248,0,248,0,248,0,248,0,248, + 15,255,15,26,52,20,3,0,0,8,48,56,63,240,63,224, + 63,128,62,0,32,0,32,0,32,0,32,0,39,192,56,112, + 48,120,32,60,32,60,0,62,0,62,56,62,120,62,252,62, + 248,62,248,60,224,60,96,120,112,112,31,224,16,25,50,20, + 2,1,7,240,12,8,28,12,56,60,56,124,120,124,120,120, + 120,48,248,0,248,0,251,224,252,56,252,60,248,30,248,31, + 248,31,248,31,248,31,120,31,120,31,120,31,56,30,28,30, + 12,60,7,240,15,25,50,20,3,0,79,28,95,156,127,198, + 127,230,127,254,224,246,192,4,192,12,128,12,128,24,0,16, + 0,48,0,96,0,224,1,192,1,192,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,7,0,17,25,75,20, + 2,1,7,240,0,24,12,0,48,12,0,48,6,0,112,6, + 0,112,6,0,120,6,0,124,4,0,127,12,0,127,152,0, + 63,224,0,31,248,0,15,252,0,15,254,0,49,255,0,96, + 127,0,64,31,0,192,15,128,192,7,0,192,7,0,192,3, + 0,96,6,0,96,6,0,56,12,0,14,240,0,15,25,50, + 20,2,1,31,192,60,112,120,48,120,56,248,60,248,60,248, + 60,248,62,248,62,248,62,248,62,120,62,124,126,60,126,15, + 190,0,62,0,62,12,60,30,60,62,60,62,56,60,56,48, + 112,16,96,15,192,5,17,17,9,2,0,112,248,248,248,112, + 0,0,0,0,0,0,0,112,248,248,248,112,6,23,23,9, + 2,249,112,248,248,248,112,0,0,0,0,0,0,0,112,248, + 252,252,252,12,12,8,16,48,192,26,29,116,32,3,251,0, + 0,1,192,0,0,3,192,0,0,15,0,0,0,62,0,0, + 0,248,0,0,1,224,0,0,7,128,0,0,31,0,0,0, + 124,0,0,0,240,0,0,3,192,0,0,15,128,0,0,62, + 0,0,0,120,0,0,0,224,0,0,0,120,0,0,0,62, + 0,0,0,15,128,0,0,3,192,0,0,0,240,0,0,0, + 124,0,0,0,31,0,0,0,7,128,0,0,1,224,0,0, + 0,248,0,0,0,62,0,0,0,15,0,0,0,3,192,0, + 0,1,192,29,9,36,33,2,5,255,255,255,248,255,255,255, + 248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,248,255,255,255,248,26,29,116, + 32,3,251,224,0,0,0,240,0,0,0,60,0,0,0,31, + 0,0,0,7,192,0,0,1,224,0,0,0,120,0,0,0, + 62,0,0,0,15,128,0,0,3,192,0,0,0,240,0,0, + 0,124,0,0,0,31,0,0,0,7,128,0,0,1,192,0, + 0,7,128,0,0,31,0,0,0,124,0,0,0,240,0,0, + 3,192,0,0,15,128,0,0,62,0,0,0,120,0,0,1, + 224,0,0,7,192,0,0,31,0,0,0,60,0,0,0,240, + 0,0,0,224,0,0,0,11,25,50,16,2,1,63,128,67, + 192,129,224,129,224,129,224,131,224,195,192,67,192,3,128,7, + 0,6,0,12,0,8,0,24,0,17,0,17,0,17,0,14, + 0,0,0,0,0,14,0,31,0,31,0,31,0,14,0,25, + 25,100,27,1,1,0,255,192,0,3,0,48,0,6,0,24, + 0,12,0,12,0,24,0,6,0,48,30,243,0,48,114,243, + 0,96,225,227,0,97,225,225,128,227,193,225,128,195,193,225, + 128,195,193,193,128,199,131,193,128,199,131,193,128,199,131,195, + 0,199,131,195,0,231,135,130,0,103,135,134,0,99,139,204, + 0,49,240,240,0,48,0,0,0,24,0,0,0,12,0,0, + 0,7,0,96,0,1,255,192,0,23,26,78,25,1,0,0, + 16,0,0,24,0,0,56,0,0,56,0,0,60,0,0,124, + 0,0,124,0,0,126,0,0,254,0,0,254,0,0,158,0, + 1,159,0,1,159,0,1,31,0,3,15,128,3,15,128,3, + 15,128,6,7,192,7,255,192,6,7,192,4,7,224,12,3, + 224,12,3,224,28,3,240,28,3,240,255,159,254,20,25,75, + 24,2,0,255,254,0,31,7,128,31,7,192,31,3,192,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 128,31,7,0,31,248,0,31,7,0,31,3,192,31,1,224, + 31,1,224,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,240,31,1,224,31,3,192,31,7,128,255,254,0,19,25, + 75,22,2,1,3,248,64,14,6,192,30,3,192,60,3,192, + 60,1,192,124,1,192,124,0,192,124,0,192,252,0,192,252, + 0,64,252,0,64,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,96,124,0,64,124,0,64,124,0,64, + 60,0,192,30,0,128,30,1,0,15,3,0,3,252,0,23, + 25,75,27,2,0,255,255,0,31,3,192,31,0,224,31,0, + 240,31,0,120,31,0,120,31,0,124,31,0,124,31,0,126, + 31,0,126,31,0,126,31,0,126,31,0,126,31,0,126,31, + 0,126,31,0,126,31,0,124,31,0,124,31,0,124,31,0, + 120,31,0,120,31,0,240,31,0,224,31,3,192,255,255,0, + 20,25,75,23,2,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,25,75,23,2,0,255,255,240,31,3,240,31,0,240, + 31,0,240,31,0,112,31,0,112,31,0,48,31,4,48,31, + 4,48,31,12,48,31,12,0,31,28,0,31,252,0,31,28, + 0,31,12,0,31,12,0,31,4,0,31,4,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,255, + 240,0,21,26,78,24,2,0,0,32,0,3,220,32,7,3, + 96,14,1,224,28,1,224,60,0,224,60,0,224,124,0,96, + 124,0,96,252,0,32,252,0,32,252,0,0,252,0,0,252, + 63,248,252,3,224,252,3,224,252,3,224,252,3,224,124,3, + 224,124,3,224,124,3,224,60,3,224,60,3,96,30,6,96, + 14,12,96,3,184,32,25,25,100,28,2,0,255,231,255,128, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,255,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,255,231,255,128, + 11,25,50,14,2,0,255,224,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,224,16,25,50,18,1,0,7,255, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,120,248, + 248,248,248,248,248,248,240,248,224,240,64,240,97,224,63,192, + 24,25,75,27,2,0,255,227,252,31,0,224,31,0,192,31, + 0,128,31,1,128,31,3,0,31,6,0,31,12,0,31,28, + 0,31,28,0,31,62,0,31,126,0,31,255,0,31,191,0, + 31,31,128,31,31,128,31,15,192,31,15,192,31,7,224,31, + 7,224,31,3,240,31,1,240,31,1,248,31,1,252,255,231, + 255,20,25,75,23,2,0,255,224,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,48,31,0,48,31,0,48,31,0,48,31,0,112, + 31,0,112,31,0,240,31,0,240,31,1,240,31,3,240,255, + 255,240,27,25,100,30,2,0,255,0,63,224,15,0,63,0, + 15,128,63,0,15,128,63,0,15,128,127,0,15,192,95,0, + 15,192,95,0,11,224,95,0,11,224,223,0,11,224,159,0, + 9,240,159,0,9,240,159,0,9,241,31,0,8,249,31,0, + 8,249,31,0,8,249,31,0,8,126,31,0,8,126,31,0, + 8,62,31,0,8,62,31,0,8,60,31,0,8,28,31,0, + 24,28,31,0,60,28,31,0,255,8,255,224,24,25,75,27, + 2,0,255,3,255,31,128,124,31,128,56,15,192,16,7,224, + 16,7,240,16,7,240,16,5,248,16,5,252,16,4,252,16, + 4,126,16,4,127,16,4,63,16,4,31,144,4,31,208,4, + 15,208,4,7,240,4,7,240,4,3,240,4,1,240,4,1, + 240,4,0,240,14,0,112,31,0,48,255,192,48,20,25,75, + 24,2,1,3,252,0,6,6,0,14,7,0,28,3,128,60, + 3,192,60,3,192,124,3,224,124,3,224,124,3,224,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,124,3,224,124,3,224,124,3,224,60,3,192,60, + 3,192,28,3,128,14,7,0,6,6,0,3,252,0,20,25, + 75,24,2,0,255,254,0,31,3,128,31,3,192,31,1,224, + 31,1,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,192,31,7,128,31,254,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,255,240,0,20, + 33,99,24,2,249,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,240,124,3,224,124,3,224,60,243, + 192,61,155,192,29,11,128,15,15,128,7,15,16,3,156,16, + 0,108,16,0,12,16,0,12,48,0,14,48,0,15,240,0, + 15,224,0,7,224,0,3,128,22,25,75,25,2,0,255,252, + 0,31,7,128,31,7,192,31,3,192,31,3,224,31,3,224, + 31,3,224,31,3,224,31,3,192,31,7,192,31,15,0,31, + 248,0,31,14,0,31,15,0,31,7,128,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,196,31,7,196,31,7,196, + 31,7,196,31,3,200,255,241,248,16,25,50,21,3,1,31, + 198,32,118,96,62,224,30,224,14,240,6,248,6,252,6,255, + 2,127,128,127,192,63,240,15,248,7,252,129,254,128,254,192, + 127,192,31,192,15,224,7,224,7,240,6,248,6,220,12,135, + 120,21,25,75,25,3,0,255,255,248,248,248,248,240,248,120, + 224,248,120,192,248,56,192,248,56,128,248,24,128,248,24,128, + 248,24,128,248,24,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,15, + 255,0,23,25,75,26,2,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,24,25,75,27,2,0,255,241,255,31,128,56,15, + 128,48,15,192,48,15,192,48,7,192,32,7,224,32,7,224, + 96,3,224,64,3,240,64,1,240,192,1,240,128,1,248,128, + 0,249,128,0,249,128,0,253,0,0,125,0,0,127,0,0, + 126,0,0,62,0,0,62,0,0,60,0,0,28,0,0,28, + 0,0,24,0,34,25,125,36,1,0,255,231,255,127,192,31, + 129,248,14,0,15,128,248,14,0,15,128,252,12,0,15,192, + 124,12,0,7,192,124,12,0,7,192,124,8,0,7,224,254, + 24,0,3,224,190,24,0,3,224,190,24,0,3,241,159,16, + 0,1,241,159,48,0,1,241,31,48,0,1,249,15,32,0, + 1,251,15,160,0,0,250,15,224,0,0,254,15,224,0,0, + 254,7,192,0,0,126,7,192,0,0,124,7,192,0,0,124, + 3,192,0,0,60,3,128,0,0,56,3,128,0,0,56,1, + 128,0,0,24,1,128,0,23,25,75,26,2,0,255,231,252, + 31,193,224,15,192,192,15,193,128,7,225,128,7,227,0,3, + 242,0,3,246,0,1,244,0,1,248,0,0,248,0,0,252, + 0,0,124,0,0,62,0,0,126,0,0,127,0,0,159,0, + 1,159,128,1,15,128,3,15,192,6,7,224,4,7,224,12, + 3,240,28,7,240,255,143,254,23,25,75,26,2,0,255,225, + 254,31,128,112,31,128,96,15,128,96,15,192,64,7,192,192, + 7,224,192,7,224,128,3,225,128,3,241,0,1,241,0,1, + 251,0,0,250,0,0,254,0,0,252,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,3,255,128,18,25,75,22,2,0,127, + 255,192,124,15,192,120,31,128,112,31,128,96,63,0,96,63, + 0,64,126,0,64,126,0,64,252,0,0,252,0,1,248,0, + 1,240,0,3,240,0,7,224,0,7,224,0,15,192,64,15, + 192,64,31,128,64,31,128,64,63,0,192,63,1,192,126,1, + 192,126,3,192,252,15,192,255,255,192,8,31,31,14,3,250, + 255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,255,11, + 33,66,15,2,249,192,0,192,0,224,0,96,0,96,0,96, + 0,112,0,48,0,48,0,56,0,24,0,24,0,28,0,12, + 0,12,0,12,0,14,0,6,0,6,0,7,0,3,0,3, + 0,3,0,3,128,1,128,1,128,1,192,0,192,0,192,0, + 224,0,96,0,96,0,96,8,31,31,13,2,250,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,255,16,12,24,20, + 2,14,1,128,3,128,3,192,7,224,14,96,14,112,28,56, + 24,56,56,28,112,12,96,14,224,7,18,2,6,18,0,250, + 255,255,192,255,255,192,6,7,7,15,3,18,224,224,240,120, + 24,12,4,15,17,34,18,2,0,15,128,49,224,96,240,112, + 240,120,240,120,240,32,240,7,240,28,240,56,240,120,240,240, + 240,240,242,240,242,240,242,121,252,62,120,15,25,50,18,1, + 0,252,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,240,61,56,62,60,62,28,62,30,62,30,60,30,60, + 30,60,30,60,30,60,30,62,30,62,30,62,28,50,60,35, + 56,33,224,13,17,34,16,2,0,7,128,28,96,56,32,120, + 112,120,240,248,240,240,224,240,64,240,0,240,0,240,0,240, + 8,120,16,120,16,56,16,28,32,7,192,17,25,75,20,2, + 0,1,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,15,60,0,28,188,0,56, + 124,0,120,124,0,120,60,0,240,60,0,240,60,0,240,60, + 0,240,60,0,240,60,0,240,60,0,240,60,0,120,60,0, + 120,124,0,56,124,0,28,188,0,15,63,128,13,17,34,17, + 2,0,7,128,24,224,56,240,120,240,120,240,240,120,240,120, + 240,120,255,248,240,0,240,0,240,8,120,8,120,24,56,16, + 28,32,7,192,12,25,50,12,1,0,3,192,14,112,30,112, + 28,240,60,240,60,240,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,255,128,17,25,75,19, + 1,248,7,199,0,28,249,128,60,115,128,120,123,128,120,123, + 0,120,120,0,120,120,0,120,120,0,60,112,0,28,224,0, + 7,192,0,56,0,0,96,0,0,127,192,0,127,248,0,127, + 252,0,63,254,0,63,254,0,64,14,0,128,6,0,128,6, + 0,128,4,0,64,12,0,32,56,0,31,224,0,17,25,75, + 19,1,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,120,0,61,188, + 0,61,28,0,62,30,0,62,30,0,62,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,255,127,128,8,25, + 25,11,2,0,56,124,124,124,56,0,0,0,252,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,10,33,66, + 10,254,248,3,128,7,192,7,192,7,192,3,128,0,0,0, + 0,0,0,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,99,192,243,192,243,192,243,128,231, + 128,103,0,62,0,17,25,75,19,1,0,252,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,127,0,60,24,0,60,16,0,60,48,0,60, + 32,0,60,64,0,60,192,0,60,224,0,61,224,0,62,240, + 0,62,240,0,60,120,0,60,124,0,60,60,0,60,62,0, + 60,62,0,255,127,128,9,25,50,11,1,0,252,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,255,128,25,17, + 68,28,1,0,252,120,120,0,61,188,158,0,61,31,30,0, + 62,31,30,0,62,30,31,0,62,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,255,127,191,128,17,17,51,19,1,0,252,120, + 0,61,188,0,61,28,0,62,30,0,62,30,0,62,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,255,127, + 128,14,17,34,18,2,0,7,128,28,224,56,112,120,120,120, + 120,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,56,112,24,224,7,128,15,25,50,18,1,248,252, + 240,61,56,62,60,62,28,62,30,62,30,60,30,60,30,60, + 30,60,30,60,30,62,30,62,30,62,28,62,60,61,56,60, + 240,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 128,16,25,50,19,2,248,15,132,28,196,56,100,120,124,120, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 124,120,124,56,124,28,188,15,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,1,255,12,17,34,14,1,0,252, + 224,61,112,62,240,62,240,62,240,62,96,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,11,17,34,14,2,0,60,64,99,64,193,192,192,192,224, + 192,240,64,252,0,127,0,63,128,31,192,135,224,129,224,192, + 224,224,96,224,96,144,192,143,128,11,24,48,13,1,0,12, + 0,12,0,12,0,12,0,12,0,28,0,60,0,255,192,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 32,60,32,60,32,60,32,60,96,60,64,31,192,15,128,17, + 17,51,19,1,0,252,126,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,60,62,0,60,62,0,60, + 94,0,30,158,0,15,31,128,17,17,51,18,0,0,255,159, + 128,30,6,0,30,4,0,30,4,0,15,12,0,15,8,0, + 15,8,0,7,152,0,7,144,0,3,208,0,3,240,0,3, + 224,0,1,224,0,1,192,0,1,192,0,0,192,0,0,128, + 0,25,17,68,26,0,0,255,63,207,128,30,15,6,0,30, + 15,6,0,30,15,4,0,15,7,132,0,15,15,132,0,7, + 143,136,0,7,139,200,0,7,147,200,0,3,211,208,0,3, + 209,240,0,3,225,240,0,1,225,224,0,1,224,224,0,1, + 192,224,0,0,192,192,0,0,192,64,0,16,17,34,18,1, + 0,255,126,62,24,30,16,31,16,15,32,15,192,7,192,3, + 192,3,192,1,224,3,240,2,240,4,248,8,120,8,124,24, + 126,254,127,17,25,75,18,0,248,255,159,128,62,6,0,30, + 4,0,31,4,0,15,8,0,15,8,0,15,136,0,7,136, + 0,7,144,0,3,208,0,3,208,0,3,224,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 128,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,13,17,34,16,1,0,127,248,112,248,96,240, + 97,224,67,224,67,192,7,192,7,128,15,128,15,0,31,8, + 30,8,60,24,124,24,120,56,248,120,255,248,11,33,66,15, + 2,249,0,32,3,192,7,0,15,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 56,0,224,0,56,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,14,0,7,0, + 3,192,0,32,2,32,32,10,4,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,11,33,66,15,3,249, + 128,0,240,0,60,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,15,0,7,0, + 1,224,7,0,15,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,60,0,240,0, + 128,0,19,7,21,23,2,6,62,0,64,127,128,32,255,240, + 32,135,252,32,129,255,224,128,63,192,64,15,128,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=38 h=37 x= 7 y=23 dx=41 dy= 0 ascent=38 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =29 descent=-9 + Max Font ascent =38 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29[15818] U8G_SECTION(".progmem.u8g_font_osb29") = { + 0,107,49,223,245,29,9,166,21,115,32,255,247,38,245,29, + 247,0,0,0,11,0,0,6,28,28,10,2,1,120,252,252, + 252,252,252,252,120,120,120,120,120,48,48,48,48,48,48,48, + 48,0,0,120,252,252,252,252,120,10,9,18,16,3,20,243, + 192,243,192,243,192,243,192,243,192,243,192,97,128,97,128,97, + 128,22,28,84,28,3,0,1,192,224,1,192,224,1,192,224, + 1,192,224,1,128,192,1,128,192,1,128,192,3,129,252,255, + 255,252,255,255,252,3,129,128,3,1,128,3,1,128,7,3, + 128,7,3,128,7,3,128,7,3,128,6,3,0,255,255,252, + 255,255,252,255,255,252,14,7,0,14,7,0,14,6,0,12, + 6,0,12,6,0,28,14,0,28,14,0,18,34,102,22,2, + 253,1,16,0,1,16,0,1,16,0,7,252,0,29,19,0, + 57,17,128,49,16,192,113,16,192,113,17,192,113,19,192,121, + 23,192,127,23,128,127,19,0,63,144,0,63,240,0,31,240, + 0,15,252,0,7,254,0,1,255,0,1,255,128,1,63,128, + 121,31,192,249,23,192,249,19,192,249,17,192,225,17,192,193, + 17,192,97,17,128,97,19,0,57,22,0,15,60,0,1,208, + 0,1,16,0,1,16,0,26,29,116,32,3,0,4,0,12, + 0,27,0,8,0,49,128,24,0,113,192,16,0,113,192,48, + 0,241,224,96,0,241,224,96,0,241,224,192,0,241,224,128, + 0,241,225,128,0,241,225,0,0,113,195,0,0,113,194,0, + 0,59,134,0,0,30,12,0,0,0,12,28,0,0,24,119, + 0,0,16,227,128,0,48,227,128,0,33,227,192,0,97,227, + 192,0,65,227,192,0,193,227,192,1,129,227,192,1,129,227, + 192,3,1,227,128,2,0,227,128,6,0,99,0,4,0,62, + 0,27,28,112,31,2,1,0,254,0,0,1,195,0,0,3, + 129,0,0,7,129,128,0,7,129,128,0,7,129,128,0,7, + 131,128,0,7,195,0,0,7,198,0,0,3,236,0,0,3, + 248,0,0,1,240,0,0,0,248,0,0,1,252,31,224,7, + 124,3,128,14,62,3,0,28,63,3,0,56,31,134,0,120, + 15,134,0,120,7,196,0,248,7,232,0,248,3,248,0,248, + 1,240,0,252,1,248,0,254,0,248,32,127,1,252,64,63, + 254,127,192,31,248,31,128,4,9,9,10,3,20,240,240,240, + 240,240,240,96,96,96,11,35,70,13,2,249,0,96,0,192, + 1,128,3,0,6,0,12,0,28,0,24,0,56,0,56,0, + 120,0,120,0,120,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,120,0,120,0,120,0,120,0, + 56,0,56,0,28,0,12,0,14,0,7,0,3,0,1,128, + 0,96,11,36,72,14,1,249,192,0,96,0,48,0,24,0, + 12,0,14,0,7,0,7,0,3,128,3,128,3,192,3,192, + 3,192,3,192,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,192,3,192,3,192,3,128,3,128,7,0, + 7,0,6,0,12,0,28,0,56,0,112,0,192,0,128,0, + 14,16,32,19,3,12,3,0,7,128,7,128,199,24,227,60, + 242,124,122,248,7,128,7,128,250,248,242,124,227,60,199,24, + 7,128,7,128,3,0,33,33,165,37,2,251,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,7,13,13,10,2,249,120,252,252,254,254,126,6,4,4, + 8,24,96,192,10,4,8,14,2,8,255,192,255,192,255,192, + 255,192,6,6,6,10,2,0,120,252,252,252,252,120,13,37, + 74,17,2,248,0,24,0,56,0,56,0,48,0,112,0,112, + 0,96,0,96,0,224,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,128,3,0,7,0,7,0,6,0,14,0, + 14,0,12,0,12,0,28,0,28,0,24,0,56,0,56,0, + 48,0,112,0,112,0,112,0,96,0,224,0,224,0,18,28, + 84,22,2,1,3,240,0,14,28,0,14,28,0,28,14,0, + 60,15,0,60,15,0,124,15,128,124,15,128,124,15,128,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15, + 192,252,15,192,252,15,192,252,15,192,252,15,192,124,15,128, + 124,15,128,124,15,128,60,15,0,60,15,0,28,14,0,12, + 28,0,14,28,0,3,240,0,13,28,56,22,5,0,3,128, + 7,128,15,128,255,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,248,17,28,84,22,2,1,15,248,0,24, + 62,0,48,63,0,112,31,0,240,31,128,240,31,128,252,31, + 128,252,31,128,254,31,128,126,63,0,60,63,0,0,126,0, + 0,252,0,0,248,0,1,224,0,3,128,0,6,0,0,12, + 0,128,24,0,128,16,0,128,32,0,128,47,1,128,127,255, + 128,127,255,128,71,255,0,67,255,0,65,254,0,64,252,0, + 17,28,84,22,2,1,15,248,0,24,62,0,48,63,0,48, + 31,0,112,31,128,120,31,128,124,31,128,124,31,128,124,31, + 128,60,31,0,0,31,0,0,62,0,0,120,0,15,192,0, + 0,120,0,0,62,0,0,63,0,0,31,0,16,31,128,124, + 31,128,252,31,128,252,31,128,252,31,128,248,31,128,240,63, + 0,112,62,0,56,124,0,31,248,0,18,28,84,22,2,0, + 0,124,0,0,124,0,0,252,0,0,252,0,1,252,0,1, + 252,0,3,252,0,3,252,0,6,252,0,6,252,0,12,252, + 0,12,252,0,24,252,0,24,252,0,48,252,0,48,252,0, + 96,252,0,96,252,0,192,252,0,255,255,192,0,252,0,0, + 252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252, + 0,15,255,192,17,29,87,22,3,0,0,6,0,112,28,0, + 127,252,0,127,248,0,127,224,0,127,192,0,126,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,103,224,0,104,120, + 0,112,62,0,96,62,0,96,31,0,0,31,0,0,31,128, + 0,31,128,56,31,128,124,31,128,252,31,128,252,31,128,248, + 31,0,240,31,0,224,30,0,96,62,0,48,124,0,31,240, + 0,18,29,87,22,3,0,0,32,0,3,220,0,7,6,0, + 14,6,0,30,15,0,60,31,0,60,63,0,124,63,0,124, + 62,0,124,28,0,252,0,0,252,0,0,252,0,0,253,248, + 0,255,30,0,254,31,0,252,15,128,252,15,128,252,15,192, + 252,15,192,252,15,192,124,15,192,124,15,192,124,15,192,60, + 15,128,28,15,128,30,15,0,14,30,0,3,252,0,17,28, + 84,22,3,0,103,135,0,111,199,0,127,227,128,127,241,128, + 127,249,128,127,255,128,96,125,128,64,1,0,64,3,0,64, + 3,0,192,6,0,0,4,0,0,12,0,0,24,0,0,56, + 0,0,112,0,0,112,0,0,240,0,1,240,0,3,224,0, + 3,224,0,3,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,3,192,0,19,29,87,22,2,0,0,64, + 0,7,184,0,28,6,0,56,3,0,112,1,0,112,1,128, + 240,1,128,240,1,128,248,1,128,252,3,0,255,2,0,127, + 196,0,127,248,0,63,252,0,31,255,0,15,255,128,27,255, + 128,48,255,192,96,63,192,96,15,192,224,3,224,224,1,192, + 224,1,192,224,1,192,224,1,192,112,1,128,56,1,0,28, + 6,0,15,252,0,18,28,84,22,3,1,15,240,0,30,28, + 0,60,30,0,124,14,0,124,15,0,252,15,128,252,15,128, + 252,15,128,252,15,128,252,15,192,252,15,192,124,15,192,124, + 15,192,62,31,192,30,63,192,7,239,192,0,15,192,0,15, + 192,0,15,192,30,15,128,31,15,128,63,15,128,63,15,0, + 62,15,0,56,30,0,24,28,0,24,56,0,15,240,0,6, + 19,19,10,2,0,120,252,252,252,252,120,0,0,0,0,0, + 0,0,120,252,252,252,252,120,7,26,26,10,2,249,120,252, + 252,252,252,120,0,0,0,0,0,0,0,120,252,252,254,254, + 126,6,4,4,8,16,96,192,29,33,132,36,3,250,0,0, + 0,24,0,0,0,120,0,0,1,240,0,0,7,192,0,0, + 31,128,0,0,62,0,0,0,248,0,0,3,224,0,0,15, + 192,0,0,31,0,0,0,124,0,0,1,240,0,0,7,192, + 0,0,15,128,0,0,62,0,0,0,248,0,0,0,240,0, + 0,0,124,0,0,0,62,0,0,0,15,128,0,0,3,224, + 0,0,0,248,0,0,0,124,0,0,0,31,0,0,0,7, + 192,0,0,1,240,0,0,0,252,0,0,0,62,0,0,0, + 15,128,0,0,3,224,0,0,1,248,0,0,0,120,0,0, + 0,16,32,11,44,36,2,5,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255, + 255,255,255,255,29,33,132,36,4,250,192,0,0,0,240,0, + 0,0,124,0,0,0,31,0,0,0,15,192,0,0,3,224, + 0,0,0,248,0,0,0,62,0,0,0,31,128,0,0,7, + 192,0,0,1,240,0,0,0,124,0,0,0,31,0,0,0, + 15,128,0,0,3,224,0,0,0,248,0,0,0,120,0,0, + 1,240,0,0,3,224,0,0,15,128,0,0,62,0,0,0, + 248,0,0,1,240,0,0,7,192,0,0,31,0,0,0,124, + 0,0,1,248,0,0,3,224,0,0,15,128,0,0,62,0, + 0,0,252,0,0,0,240,0,0,0,64,0,0,0,12,28, + 56,18,3,1,63,128,119,224,65,224,129,240,129,240,129,240, + 129,240,129,224,193,224,67,192,3,128,7,0,6,0,12,0, + 8,0,24,0,16,64,16,64,16,64,24,128,15,0,0,0, + 7,128,15,192,15,192,15,192,15,192,7,128,28,29,116,32, + 2,0,0,2,0,0,0,125,240,0,1,192,28,0,3,0, + 6,0,6,0,3,0,12,0,1,128,24,15,61,192,56,28, + 188,192,48,56,248,224,112,112,120,224,112,240,120,96,225,224, + 120,112,225,224,248,112,225,224,240,112,227,224,240,112,227,192, + 240,112,227,192,240,112,227,193,224,96,227,193,224,224,99,193, + 224,192,99,195,224,192,115,194,225,128,49,228,227,0,56,120, + 124,0,28,0,0,0,12,0,0,0,7,0,0,0,3,128, + 24,0,0,255,224,0,26,29,116,29,2,0,0,4,0,0, + 0,6,0,0,0,14,0,0,0,14,0,0,0,15,0,0, + 0,31,0,0,0,31,0,0,0,31,128,0,0,63,128,0, + 0,47,128,0,0,47,192,0,0,111,192,0,0,79,192,0, + 0,71,192,0,0,199,224,0,0,135,224,0,0,131,224,0, + 1,131,240,0,1,3,240,0,3,1,240,0,3,255,248,0, + 2,1,248,0,6,0,248,0,6,0,252,0,4,0,252,0, + 12,0,252,0,12,0,124,0,30,0,254,0,255,199,255,192, + 22,28,84,27,3,0,255,255,0,31,131,192,31,131,224,31, + 129,240,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,240,31,129,240,31,131,192,31,131,128,31,252,0, + 31,131,128,31,129,224,31,128,240,31,128,248,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,248,31,128, + 248,31,129,240,31,131,224,255,255,128,21,28,84,26,3,1, + 1,254,48,7,3,48,14,1,240,30,0,240,60,0,240,60, + 0,112,124,0,112,124,0,48,124,0,48,252,0,48,252,0, + 48,252,0,16,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,24,252,0,24,124,0,16,124,0,16,124, + 0,16,60,0,48,60,0,32,30,0,96,14,0,192,7,1, + 128,1,254,0,25,28,112,30,3,0,255,255,128,0,31,128, + 224,0,31,128,112,0,31,128,56,0,31,128,60,0,31,128, + 30,0,31,128,30,0,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,0,31,128,31,0,31,128,31,0,31,128, + 30,0,31,128,30,0,31,128,60,0,31,128,56,0,31,128, + 112,0,31,128,224,0,255,255,128,0,22,28,84,26,2,0, + 255,255,252,15,192,124,15,192,60,15,192,28,15,192,28,15, + 192,12,15,192,12,15,192,12,15,193,4,15,193,0,15,195, + 0,15,195,0,15,199,0,15,255,0,15,199,0,15,195,0, + 15,195,0,15,193,4,15,193,4,15,193,4,15,192,12,15, + 192,12,15,192,12,15,192,28,15,192,28,15,192,60,15,192, + 252,255,255,252,22,28,84,25,2,0,255,255,252,31,128,252, + 31,128,124,31,128,60,31,128,28,31,128,28,31,128,28,31, + 128,12,31,129,12,31,129,12,31,131,12,31,131,0,31,135, + 0,31,255,0,31,143,0,31,135,0,31,131,0,31,129,0, + 31,129,0,31,129,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,255,252,0,24,29, + 87,28,3,0,0,16,0,1,239,24,3,3,152,14,0,248, + 30,0,248,28,0,120,60,0,56,60,0,56,124,0,24,124, + 0,24,124,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,31,255,252,1,248,252,1,248,252,1,248,252,1,248, + 124,1,248,124,1,248,124,1,248,60,1,248,60,1,248,30, + 3,152,14,3,24,7,6,24,1,220,24,27,28,112,31,2, + 0,255,251,255,224,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,255,255,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,255,251,255, + 224,13,28,56,17,2,0,255,248,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,255,248,18, + 28,84,20,1,0,7,255,192,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,16,126,0,124,126,0,252,126, + 0,252,126,0,252,126,0,248,126,0,240,124,0,224,124,0, + 96,120,0,32,240,0,31,224,0,26,28,112,29,2,0,255, + 241,255,0,31,128,120,0,31,128,112,0,31,128,96,0,31, + 128,64,0,31,128,192,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,134,0,0,31,142,0,0,31,159,0,0,31, + 191,0,0,31,255,128,0,31,223,128,0,31,159,192,0,31, + 143,192,0,31,143,224,0,31,135,224,0,31,135,240,0,31, + 131,240,0,31,131,248,0,31,129,248,0,31,129,252,0,31, + 128,252,0,31,128,254,0,31,128,254,0,255,243,255,192,22, + 28,84,25,2,0,255,248,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,12,31,128,12,31,128,12,31,128, + 12,31,128,28,31,128,28,31,128,60,31,128,60,31,128,124, + 31,128,252,31,129,252,255,255,252,31,28,112,34,2,0,255, + 128,15,254,15,128,15,224,15,192,15,224,15,192,15,224,15, + 192,15,224,15,224,23,224,15,224,23,224,15,240,23,224,13, + 240,23,224,13,240,39,224,13,248,39,224,12,248,39,224,12, + 248,39,224,12,252,71,224,12,124,71,224,12,124,71,224,12, + 126,71,224,12,62,135,224,12,63,135,224,12,63,135,224,12, + 31,135,224,12,31,7,224,12,31,7,224,12,15,7,224,12, + 15,7,224,28,14,7,224,62,6,7,224,255,134,63,254,27, + 28,112,30,2,0,255,128,255,224,31,192,63,0,31,192,30, + 0,15,224,12,0,7,240,12,0,7,240,12,0,7,248,12, + 0,7,248,12,0,6,252,12,0,6,254,12,0,6,126,12, + 0,6,63,12,0,6,63,140,0,6,31,140,0,6,31,204, + 0,6,15,236,0,6,7,236,0,6,7,252,0,6,3,252, + 0,6,1,252,0,6,1,252,0,6,0,252,0,6,0,252, + 0,6,0,124,0,6,0,60,0,15,0,60,0,31,128,28, + 0,255,224,12,0,22,28,84,27,3,1,1,254,0,3,3, + 0,6,1,128,14,1,192,28,0,224,60,0,240,60,0,240, + 124,0,248,124,0,248,124,0,248,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,124,0,248,124,0,248,124,0,248,60,0,240,60,0,240, + 28,0,224,14,1,192,6,1,128,3,3,0,1,254,0,23, + 28,84,27,2,0,255,255,128,31,129,240,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,248,0,22,37,111,27,3,248,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,56, + 240,60,76,240,30,133,224,14,135,224,7,135,192,3,135,132, + 1,238,4,0,22,4,0,6,4,0,7,12,0,7,12,0, + 7,252,0,7,248,0,7,248,0,3,240,0,1,224,25,28, + 112,28,2,0,255,255,0,0,31,135,192,0,31,131,224,0, + 31,129,240,0,31,129,248,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,240,0,31,131,224,0, + 31,135,192,0,31,254,0,0,31,135,128,0,31,131,192,0, + 31,129,240,0,31,129,240,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,248,128,31,129,248,128, + 31,129,248,128,31,129,248,128,31,129,249,0,31,128,249,0, + 255,248,126,0,18,29,87,23,3,0,1,0,0,31,225,128, + 48,57,128,96,31,128,96,15,128,224,7,128,240,3,128,240, + 3,128,248,1,128,254,1,128,255,1,128,127,192,0,127,224, + 0,63,248,0,31,252,0,7,255,0,3,255,0,128,255,128, + 128,127,128,192,31,192,192,15,192,192,7,192,224,3,192,224, + 1,192,240,1,128,248,1,128,248,3,0,206,2,0,135,188, + 0,24,28,84,27,2,0,255,255,255,252,126,63,248,126,31, + 240,126,15,224,126,15,224,126,7,192,126,7,192,126,3,192, + 126,3,192,126,3,128,126,3,128,126,2,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,7,255,224,26,28,112,30,3, + 0,255,240,127,192,31,128,31,0,31,128,14,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,15,128,12,0,15,192,12, + 0,7,192,24,0,7,224,56,0,1,252,240,0,0,255,192, + 0,27,28,112,30,2,0,255,248,127,224,31,192,15,0,15, + 192,6,0,15,192,6,0,7,224,4,0,7,224,12,0,7, + 224,8,0,3,240,8,0,3,240,8,0,3,240,24,0,1, + 248,16,0,1,248,16,0,1,252,48,0,0,252,32,0,0, + 252,32,0,0,254,96,0,0,126,64,0,0,126,64,0,0, + 127,192,0,0,63,128,0,0,63,128,0,0,63,128,0,0, + 31,0,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,14,0,0,38,28,140,41,2,0,255,243,255, + 207,252,31,192,126,1,224,15,192,126,0,192,15,192,62,0, + 192,7,192,63,0,128,7,224,63,0,128,7,224,63,1,128, + 7,224,63,129,0,3,240,63,129,0,3,240,127,131,0,3, + 240,111,195,0,1,248,79,194,0,1,248,207,194,0,1,248, + 199,230,0,0,252,135,230,0,0,252,135,228,0,0,253,131, + 244,0,0,127,131,252,0,0,127,3,248,0,0,127,3,248, + 0,0,127,1,248,0,0,63,1,248,0,0,62,1,240,0, + 0,62,0,240,0,0,30,0,240,0,0,28,0,240,0,0, + 28,0,96,0,0,12,0,96,0,26,28,112,29,2,0,255, + 241,255,128,31,224,124,0,15,224,56,0,15,224,48,0,7, + 240,96,0,7,240,96,0,3,248,192,0,3,248,128,0,1, + 253,128,0,0,255,0,0,0,254,0,0,0,126,0,0,0, + 127,0,0,0,63,0,0,0,63,128,0,0,31,128,0,0, + 63,192,0,0,111,192,0,0,79,224,0,0,199,224,0,1, + 135,240,0,1,131,240,0,3,3,248,0,2,1,248,0,6, + 1,252,0,14,0,252,0,30,1,254,0,255,199,255,192,25, + 28,112,28,2,0,255,240,255,128,31,192,60,0,31,192,24, + 0,15,192,24,0,15,224,24,0,7,224,16,0,7,224,48, + 0,3,240,32,0,3,240,32,0,1,248,96,0,1,248,64, + 0,1,252,64,0,0,252,192,0,0,254,128,0,0,127,128, + 0,0,127,128,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,1,255,224,0,20,28,84,25,3,0,127,255,240,126,7, + 240,124,7,224,120,15,224,112,15,192,96,31,192,96,31,128, + 96,63,128,64,63,0,64,127,0,0,254,0,0,254,0,1, + 252,0,1,248,0,3,248,0,3,240,0,7,240,0,7,224, + 16,15,224,16,15,192,16,31,192,48,31,128,48,63,128,112, + 63,0,112,127,0,240,126,1,240,254,7,240,255,255,240,9, + 35,70,15,3,249,255,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,128,13,37,74,17,2, + 248,192,0,224,0,224,0,96,0,112,0,112,0,48,0,56, + 0,56,0,24,0,24,0,28,0,28,0,12,0,14,0,14, + 0,6,0,6,0,7,0,7,0,3,0,3,128,3,128,1, + 128,1,192,1,192,0,192,0,192,0,224,0,224,0,96,0, + 112,0,112,0,48,0,48,0,56,0,56,9,35,70,15,3, + 249,255,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,18,14,42,22,2,15,0,192,0, + 0,192,0,1,224,0,3,240,0,3,240,0,7,56,0,7, + 56,0,14,28,0,28,14,0,28,14,0,56,7,0,56,7, + 0,112,3,128,224,1,192,20,3,9,20,0,249,255,255,240, + 255,255,240,255,255,240,7,7,7,17,3,21,224,240,240,120, + 60,12,6,17,19,57,20,2,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,18,28,84,20,0,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,60,0,31,78,0,31,143,0,31,135,128,31, + 7,128,31,7,128,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,128,31,7,128, + 31,135,0,25,143,0,16,206,0,16,120,0,14,19,38,18, + 2,0,7,224,14,48,60,24,60,28,120,60,120,124,248,124, + 248,120,248,48,248,0,248,0,248,0,248,0,120,4,120,4, + 56,4,28,8,14,16,7,224,18,28,84,21,2,0,0,254, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,15,62,0,28,190,0,60, + 126,0,120,126,0,120,62,0,120,62,0,248,62,0,248,62, + 0,248,62,0,248,62,0,248,62,0,248,62,0,248,62,0, + 120,62,0,120,62,0,120,126,0,60,126,0,28,190,0,15, + 63,192,14,19,38,18,2,0,7,192,28,224,56,112,56,120, + 120,120,120,124,248,124,248,124,248,124,255,252,248,0,248,0, + 248,0,120,4,120,4,56,8,60,8,30,16,7,224,14,28, + 56,13,1,0,1,240,7,24,15,28,30,60,30,124,62,124, + 62,56,62,0,62,0,255,192,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,192,19,28,84,22, + 2,247,7,225,192,30,118,96,60,60,224,60,60,224,124,62, + 192,124,62,0,124,62,0,124,62,0,60,60,0,60,60,0, + 30,120,0,7,224,0,56,0,0,96,0,0,96,0,0,127, + 224,0,127,254,0,127,255,0,63,255,128,31,255,128,96,7, + 128,192,3,128,128,3,128,128,3,0,128,3,0,64,6,0, + 48,28,0,15,240,0,20,28,84,22,1,0,255,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,30,0,31,111,0,31,135,128, + 31,135,192,31,135,192,31,7,192,31,7,192,31,7,192,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,192,255,223,240, + 8,28,28,12,2,0,60,126,126,126,126,60,0,0,0,252, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,255,12,37,74,13,254,247,1,224,3,240,3,240,3,240, + 3,240,1,224,0,0,0,0,0,0,15,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,123,224,251,224,251,224,243,192,227,192,103,128, + 30,0,20,28,84,21,1,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,31,192,31,7,0,31,6,0,31,4,0,31, + 8,0,31,16,0,31,16,0,31,48,0,31,120,0,31,248, + 0,31,188,0,31,60,0,31,30,0,31,31,0,31,15,0, + 31,15,128,31,15,128,31,15,192,255,223,240,11,28,56,12, + 1,0,255,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,255,224,27,19,76,30,2,0, + 254,60,30,0,62,222,111,0,63,31,143,0,63,31,143,128, + 63,31,143,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,255,63,223,224,19,19,57,22, + 2,0,254,60,0,62,222,0,63,15,0,63,15,128,63,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,255,191,224,16,19,38,20,2, + 0,7,192,12,112,28,56,56,60,120,30,120,30,248,30,248, + 31,248,31,248,31,248,31,248,31,248,30,120,30,120,30,56, + 60,28,56,12,112,7,192,18,28,84,21,1,247,255,60,0, + 31,78,0,31,143,0,31,135,128,31,7,128,31,7,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,128,31,7,128,31,135,128,31,143,0, + 31,78,0,31,60,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,255,192, + 0,17,28,84,20,2,247,7,130,0,28,194,0,60,102,0, + 120,126,0,120,62,0,120,62,0,248,62,0,248,62,0,248, + 62,0,248,62,0,248,62,0,248,62,0,248,62,0,120,62, + 0,120,62,0,120,126,0,60,126,0,28,190,0,15,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,255,128,14,19,38,17,2, + 0,254,48,62,120,62,188,63,60,63,124,62,124,62,56,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,13,19,38,16,2,0,31,16,97, + 208,96,112,224,48,224,48,240,16,248,0,126,0,127,128,63, + 224,15,240,135,240,193,248,192,120,224,56,224,24,240,16,156, + 48,135,192,12,27,54,14,1,0,6,0,6,0,6,0,6, + 0,6,0,14,0,30,0,62,0,255,224,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,16,62, + 16,62,16,62,16,62,16,62,32,62,32,31,192,7,128,19, + 19,57,21,1,0,254,63,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 31,128,62,31,128,30,47,128,30,79,128,7,143,224,18,19, + 57,20,1,0,255,143,192,62,3,0,30,2,0,30,2,0, + 31,2,0,15,4,0,15,4,0,15,132,0,7,136,0,7, + 200,0,7,216,0,3,208,0,3,240,0,3,240,0,1,224, + 0,1,224,0,0,224,0,0,192,0,0,192,0,28,19,76, + 30,1,0,255,63,231,240,62,15,129,192,30,7,129,128,30, + 7,129,128,31,7,193,0,15,7,193,0,15,7,195,0,15, + 143,226,0,7,137,226,0,7,137,230,0,7,217,244,0,3, + 208,244,0,3,240,248,0,3,240,248,0,1,224,248,0,1, + 224,112,0,1,192,112,0,0,192,112,0,0,192,32,0,18, + 19,57,20,1,0,255,63,128,126,14,0,62,12,0,31,8, + 0,31,16,0,15,176,0,15,160,0,7,192,0,3,192,0, + 3,224,0,1,240,0,3,240,0,2,248,0,4,248,0,12, + 124,0,8,126,0,24,62,0,56,63,0,254,127,192,19,28, + 84,20,0,247,255,207,224,63,3,128,31,3,0,31,2,0, + 15,2,0,15,130,0,15,130,0,7,196,0,7,196,0,3, + 196,0,3,232,0,3,232,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,112,0,0,96,0,0,96,0,0,32,0, + 0,64,0,12,64,0,30,64,0,62,64,0,62,128,0,60, + 128,0,29,0,0,14,0,0,14,19,38,17,1,0,127,252, + 120,124,112,248,96,248,65,240,65,224,67,224,3,192,7,192, + 7,128,15,128,31,4,31,4,62,4,62,12,124,12,120,28, + 248,60,255,252,12,35,70,16,2,249,1,240,7,128,15,0, + 15,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,30,0,30,0,56,0,224,0,56,0, + 30,0,30,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,15,0,15,0,7,128,1,240, + 3,36,36,11,4,248,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,12,37,74,16,2,248, + 128,0,240,0,28,0,15,0,15,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 7,128,3,192,0,112,3,192,7,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,0,15,0,28,0,248,0,128,0,21,8,24,25,2,6, + 62,0,48,127,192,16,255,240,8,135,252,8,129,255,24,128, + 127,248,192,31,240,96,3,224,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,11,0,0,6, + 29,29,10,2,247,120,252,252,252,252,120,0,0,32,48,48, + 48,48,48,48,48,112,120,120,120,120,252,252,252,252,252,252, + 120,120,14,28,56,22,4,251,1,128,1,128,1,128,1,128, + 3,192,15,176,29,152,61,152,121,184,121,184,249,184,249,184, + 249,128,249,128,249,128,249,128,249,128,249,132,121,132,121,132, + 61,136,29,152,15,176,3,192,1,128,1,128,1,128,1,128, + 23,29,87,27,2,0,0,1,0,0,30,224,0,120,16,0, + 248,24,0,240,28,1,240,60,1,240,124,3,240,124,3,240, + 120,3,240,0,3,240,0,3,240,0,3,240,0,31,240,64, + 1,255,128,1,248,0,0,248,0,0,248,0,0,248,0,0, + 120,0,0,120,0,0,112,0,0,112,6,60,112,4,127,224, + 28,131,255,248,129,255,240,195,63,224,124,31,192,18,20,60, + 21,2,3,0,0,128,195,225,128,239,249,192,255,255,128,120, + 15,0,112,7,0,96,3,0,224,1,128,192,1,128,192,1, + 128,192,1,128,192,1,128,224,1,128,96,3,0,112,7,0, + 120,15,0,255,255,128,239,249,192,195,225,128,0,0,128,21, + 28,84,23,1,0,255,195,248,63,0,224,63,0,192,31,128, + 192,31,128,128,31,192,128,15,193,0,15,193,0,7,227,0, + 7,226,0,7,246,0,3,244,0,3,252,0,1,248,0,63, + 255,192,1,248,0,1,248,0,1,248,0,63,255,192,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,15,255,128,3,35,35,11,4,249,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,0,0,0, + 0,0,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,17,36,108,24,2,248,1,240,0,6,12,0,12,6, + 0,24,7,0,56,31,0,56,63,0,56,63,0,56,62,0, + 60,28,0,63,0,0,63,192,0,31,224,0,63,248,0,103, + 254,0,67,255,0,192,255,0,192,63,128,224,15,128,248,3, + 128,254,1,128,127,129,128,127,225,0,63,249,0,15,254,0, + 3,254,0,0,254,0,0,63,0,14,15,0,31,7,0,63, + 7,0,63,7,0,62,7,0,56,6,0,24,12,0,12,24, + 0,7,240,0,12,5,10,16,2,22,112,224,249,240,249,240, + 249,240,112,224,28,28,112,32,2,1,0,127,224,0,1,128, + 24,0,6,0,12,0,12,0,3,0,24,0,1,0,16,30, + 33,128,48,113,160,192,96,224,224,64,97,224,96,96,97,224, + 96,96,193,224,32,32,195,224,32,48,195,224,32,48,195,224, + 0,48,195,224,0,48,195,224,0,48,195,224,16,48,193,224, + 16,32,65,224,48,96,97,224,32,96,96,240,96,64,48,112, + 192,192,16,31,1,128,24,0,1,0,12,0,3,0,6,0, + 12,0,1,128,24,0,0,127,224,0,11,14,28,15,2,14, + 30,0,35,0,99,128,115,128,115,128,15,128,51,128,99,128, + 227,128,227,160,227,160,125,192,0,0,255,224,10,16,32,18, + 4,1,24,64,48,192,112,128,97,128,225,128,227,128,227,128, + 227,128,227,128,227,128,227,128,97,128,97,128,48,192,24,64, + 8,0,19,11,33,22,2,5,255,255,224,255,255,224,255,255, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,10,4,8,14,2,8,255, + 192,255,192,255,192,255,192,28,28,112,32,2,1,0,127,224, + 0,1,128,24,0,6,0,12,0,12,0,3,0,24,0,1, + 0,19,255,193,128,48,249,224,192,96,248,240,64,96,248,248, + 96,96,248,248,96,192,248,248,32,192,248,240,48,192,249,224, + 48,192,254,0,48,192,249,192,48,192,249,224,48,192,249,240, + 48,192,249,240,32,64,249,242,96,96,249,242,96,96,249,242, + 64,48,249,246,192,19,254,253,128,24,0,121,0,12,0,3, + 0,6,0,12,0,1,128,24,0,0,127,224,0,10,3,6, + 16,3,23,255,192,255,192,255,192,12,11,22,22,5,18,31, + 128,127,224,112,96,224,48,192,48,192,48,192,48,224,112,112, + 224,63,192,31,128,32,29,116,36,2,254,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,255,255,255,255,255,255,255,255,255,255,255,255,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,0,0,0,0, + 0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,11, + 17,34,17,3,11,31,0,99,192,225,224,225,224,241,224,241, + 224,115,192,7,128,14,0,28,0,48,32,96,32,64,96,255, + 224,255,224,143,192,135,128,12,18,36,16,2,10,31,0,51, + 192,97,224,113,224,121,224,121,224,1,192,3,128,30,0,3, + 192,1,224,1,240,121,240,249,240,241,240,225,224,99,192,31, + 0,7,7,7,17,7,21,14,30,30,60,120,96,192,19,30, + 90,22,2,245,112,28,0,112,28,0,248,62,0,248,62,0, + 248,62,0,248,62,0,248,62,0,240,62,0,240,62,0,240, + 62,0,112,28,0,112,28,0,96,28,32,96,24,32,32,56, + 96,32,127,224,61,255,192,47,231,192,39,195,192,32,0,0, + 32,0,0,112,0,0,112,0,0,120,0,0,120,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,56,0,0,18,33, + 99,23,3,251,15,255,192,63,206,0,127,206,0,127,206,0, + 255,206,0,255,206,0,255,206,0,255,206,0,255,206,0,255, + 206,0,255,206,0,255,206,0,127,206,0,63,206,0,7,206, + 0,1,206,0,1,206,0,1,206,0,1,206,0,1,206,0, + 1,206,0,1,206,0,1,206,0,1,206,0,1,206,0,1, + 206,0,1,206,0,1,206,0,1,206,0,1,206,0,1,206, + 0,1,206,0,1,206,0,6,6,6,10,2,10,120,252,252, + 252,252,120,7,8,8,17,5,248,32,32,56,12,14,14,14, + 252,8,17,17,16,4,11,12,28,252,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,10,14,28,14,2,14,30,0, + 51,0,115,128,243,192,243,192,243,192,243,192,243,192,243,192, + 115,128,51,0,30,0,0,0,255,192,10,16,32,18,4,1, + 6,0,131,0,195,0,97,128,97,128,113,192,113,192,113,192, + 113,192,113,192,97,192,97,128,65,128,195,0,134,0,4,0, + 28,29,116,34,4,0,0,0,12,0,12,0,12,0,28,0, + 24,0,252,0,24,0,60,0,48,0,60,0,32,0,60,0, + 96,0,60,0,192,0,60,0,192,0,60,1,128,0,60,1, + 128,0,60,3,0,0,60,2,3,128,60,6,3,128,60,12, + 7,128,60,12,15,128,60,24,15,128,255,24,31,128,0,48, + 23,128,0,32,39,128,0,96,103,128,0,192,71,128,0,192, + 199,128,1,128,255,240,1,128,7,128,3,0,7,128,2,0, + 7,128,6,0,7,128,12,0,63,240,27,29,116,34,4,0, + 0,0,12,0,12,0,24,0,28,0,24,0,252,0,48,0, + 60,0,48,0,60,0,96,0,60,0,96,0,60,0,192,0, + 60,1,128,0,60,1,128,0,60,3,0,0,60,3,31,0, + 60,6,115,192,60,6,225,224,60,12,225,224,60,8,241,224, + 255,24,241,224,0,48,115,192,0,48,3,128,0,96,7,0, + 0,96,14,0,0,192,24,0,0,128,48,32,1,128,64,32, + 3,0,64,96,3,0,191,224,6,0,255,224,6,0,159,192, + 12,0,135,128,30,29,116,34,2,0,0,0,3,0,31,0, + 3,0,51,192,6,0,97,224,4,0,113,224,12,0,121,224, + 8,0,121,224,24,0,1,192,48,0,3,128,48,0,30,0, + 96,0,3,192,64,0,1,224,192,0,49,240,128,224,249,241, + 128,224,249,243,1,224,225,226,3,224,99,230,3,224,63,132, + 5,224,0,12,5,224,0,8,9,224,0,16,25,224,0,48, + 17,224,0,32,49,224,0,96,63,252,0,64,1,224,0,192, + 1,224,0,128,1,224,1,0,1,224,3,0,15,252,12,29, + 58,18,3,247,30,0,63,0,63,0,63,0,63,0,30,0, + 0,0,14,0,17,0,32,128,32,128,32,128,1,128,3,0, + 3,0,6,0,14,0,28,0,60,96,120,32,120,48,248,16, + 248,16,248,16,248,16,248,48,124,96,63,192,31,128,26,37, + 148,29,2,0,0,224,0,0,0,240,0,0,0,240,0,0, + 0,120,0,0,0,56,0,0,0,12,0,0,0,6,0,0, + 0,0,0,0,0,4,0,0,0,6,0,0,0,14,0,0, + 0,14,0,0,0,15,0,0,0,31,0,0,0,31,0,0, + 0,31,128,0,0,63,128,0,0,47,128,0,0,47,192,0, + 0,111,192,0,0,79,192,0,0,71,192,0,0,199,224,0, + 0,135,224,0,0,131,224,0,1,131,240,0,1,3,240,0, + 3,1,240,0,3,255,248,0,2,1,248,0,6,0,248,0, + 6,0,252,0,4,0,252,0,12,0,252,0,12,0,124,0, + 30,0,254,0,255,199,255,192,26,37,148,29,2,0,0,0, + 224,0,0,0,224,0,0,1,224,0,0,3,192,0,0,3, + 128,0,0,6,0,0,0,12,0,0,0,0,0,0,0,4, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,63,128,0,0,63, + 128,0,0,47,128,0,0,111,192,0,0,111,192,0,0,79, + 192,0,0,199,192,0,0,199,224,0,0,135,224,0,1,131, + 224,0,1,131,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,6,0,252,0,4,0, + 252,0,12,0,252,0,12,0,126,0,62,0,255,0,255,199, + 255,192,26,37,148,29,2,0,0,4,0,0,0,14,0,0, + 0,14,0,0,0,31,0,0,0,59,128,0,0,224,192,0, + 1,128,48,0,0,0,0,0,0,4,0,0,0,6,0,0, + 0,14,0,0,0,14,0,0,0,15,0,0,0,31,0,0, + 0,31,0,0,0,31,128,0,0,63,128,0,0,47,128,0, + 0,47,192,0,0,111,192,0,0,79,192,0,0,71,192,0, + 0,199,224,0,0,135,224,0,0,131,224,0,1,131,240,0, + 1,3,240,0,3,1,240,0,3,255,248,0,2,1,248,0, + 6,0,248,0,6,0,252,0,4,0,252,0,12,0,252,0, + 12,0,124,0,30,0,254,0,255,199,255,192,26,36,144,29, + 2,0,0,56,32,0,0,126,32,0,0,255,224,0,0,143, + 192,0,0,131,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,15, + 0,0,0,31,0,0,0,31,0,0,0,63,128,0,0,63, + 128,0,0,47,128,0,0,111,192,0,0,111,192,0,0,79, + 192,0,0,199,192,0,0,199,224,0,0,135,224,0,1,131, + 224,0,1,131,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,6,0,252,0,4,0, + 252,0,12,0,252,0,12,0,126,0,62,0,255,0,255,199, + 255,192,26,36,144,29,2,0,0,224,224,0,1,241,240,0, + 1,241,240,0,1,241,240,0,0,224,224,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,14,0,0,0,14,0,0, + 0,14,0,0,0,31,0,0,0,31,0,0,0,31,0,0, + 0,63,128,0,0,63,128,0,0,63,128,0,0,111,192,0, + 0,111,192,0,0,79,192,0,0,199,192,0,0,199,224,0, + 0,135,224,0,1,131,224,0,1,131,240,0,1,3,240,0, + 3,1,240,0,3,255,248,0,2,1,248,0,6,0,248,0, + 6,0,252,0,4,0,252,0,12,0,124,0,12,0,124,0, + 30,0,126,0,255,199,255,192,26,37,148,29,2,0,0,31, + 0,0,0,63,128,0,0,97,192,0,0,96,192,0,0,96, + 192,0,0,113,192,0,0,63,128,0,0,30,0,0,0,0, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,15, + 0,0,0,31,0,0,0,31,0,0,0,31,128,0,0,63, + 128,0,0,63,128,0,0,47,128,0,0,111,192,0,0,79, + 192,0,0,71,192,0,0,135,224,0,0,135,224,0,0,131, + 224,0,1,3,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,4,0,252,0,4,0, + 252,0,12,0,252,0,12,0,124,0,28,0,254,0,255,199, + 255,192,36,28,140,38,1,0,0,7,255,255,224,0,1,254, + 3,224,0,1,254,1,224,0,1,254,0,224,0,1,254,0, + 224,0,3,126,0,96,0,3,126,0,96,0,6,126,0,32, + 0,6,126,4,32,0,12,126,4,0,0,12,126,12,0,0, + 24,126,12,0,0,24,126,28,0,0,48,127,252,0,0,48, + 126,60,0,0,96,126,28,0,0,96,126,12,0,0,192,126, + 4,48,0,192,126,4,48,1,255,254,4,48,1,128,126,0, + 48,3,0,126,0,112,3,0,126,0,112,6,0,126,0,240, + 6,0,126,0,240,14,0,126,1,240,63,0,126,7,240,255, + 199,255,255,240,21,37,111,26,3,248,1,254,48,7,3,48, + 14,1,240,30,0,240,60,0,240,60,0,112,124,0,112,124, + 0,48,124,0,48,252,0,48,252,0,48,252,0,16,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,24, + 252,0,24,124,0,16,124,0,16,124,0,16,60,0,48,60, + 0,32,30,0,96,14,0,192,7,1,128,1,254,0,0,32, + 0,0,96,0,0,120,0,0,28,0,0,14,0,0,14,0, + 0,14,0,2,28,0,1,248,0,22,37,111,26,2,0,1, + 128,0,1,192,0,1,224,0,0,224,0,0,112,0,0,24, + 0,0,8,0,0,0,0,0,0,0,255,255,252,15,192,124, + 15,192,60,15,192,28,15,192,28,15,192,12,15,192,12,15, + 192,12,15,193,4,15,193,0,15,195,0,15,195,0,15,199, + 0,15,255,0,15,199,0,15,195,0,15,195,0,15,193,4, + 15,193,4,15,193,4,15,192,12,15,192,12,15,192,12,15, + 192,28,15,192,28,15,192,60,15,192,252,255,255,252,22,37, + 111,26,2,0,0,1,192,0,3,192,0,3,192,0,7,128, + 0,14,0,0,12,0,0,24,0,0,0,0,0,0,0,255, + 255,252,15,192,124,15,192,60,15,192,28,15,192,28,15,192, + 12,15,192,12,15,192,4,15,193,4,15,193,0,15,195,0, + 15,195,0,15,199,0,15,255,0,15,199,0,15,195,0,15, + 195,0,15,193,4,15,193,4,15,193,4,15,192,4,15,192, + 12,15,192,12,15,192,28,15,192,28,15,192,60,15,192,252, + 255,255,252,22,37,111,26,2,0,0,8,0,0,24,0,0, + 60,0,0,126,0,0,231,0,1,193,128,3,0,64,0,0, + 0,0,0,0,255,255,252,15,192,124,15,192,60,15,192,28, + 15,192,28,15,192,12,15,192,12,15,192,12,15,193,4,15, + 193,0,15,195,0,15,195,0,15,199,0,15,255,0,15,199, + 0,15,195,0,15,195,0,15,193,4,15,193,4,15,193,4, + 15,192,12,15,192,12,15,192,12,15,192,28,15,192,28,15, + 192,60,15,192,252,255,255,252,22,36,108,26,2,0,1,193, + 192,3,227,224,3,227,224,3,227,224,1,193,192,0,0,0, + 0,0,0,0,0,0,255,255,252,15,192,124,15,192,60,15, + 192,28,15,192,28,15,192,12,15,192,12,15,192,4,15,193, + 4,15,193,0,15,195,0,15,195,0,15,199,0,15,255,0, + 15,199,0,15,195,0,15,195,0,15,193,4,15,193,4,15, + 193,4,15,192,4,15,192,12,15,192,12,15,192,28,15,192, + 28,15,192,60,15,192,252,255,255,252,13,37,74,17,2,0, + 96,0,112,0,120,0,56,0,28,0,14,0,2,0,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,37,74,17,2,0, + 0,112,0,240,1,240,1,224,3,128,7,0,4,0,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,37,74,17,2,0, + 6,0,6,0,15,0,31,128,57,192,112,112,192,24,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,36,72,16,2,0, + 112,112,248,248,248,248,248,248,112,112,0,0,0,0,0,0, + 255,248,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,248,25,28,112,29,2,0,255,255, + 128,0,31,128,224,0,31,128,112,0,31,128,56,0,31,128, + 60,0,31,128,30,0,31,128,30,0,31,128,31,0,31,128, + 31,0,31,128,31,0,31,128,31,128,31,128,31,128,31,128, + 31,128,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,30,0,31,128,30,0,31,128,60,0,31,128, + 56,0,31,128,112,0,31,128,224,0,255,255,128,0,27,36, + 144,30,2,0,0,24,0,0,0,62,32,0,0,127,224,0, + 0,71,192,0,0,1,128,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,128,255,224,31,192,63,0,31,192,30,0, + 15,224,12,0,7,240,12,0,7,240,12,0,7,248,12,0, + 7,248,12,0,6,252,12,0,6,254,12,0,6,126,12,0, + 6,63,12,0,6,63,140,0,6,31,140,0,6,31,204,0, + 6,15,236,0,6,7,236,0,6,7,252,0,6,3,252,0, + 6,1,252,0,6,1,252,0,6,0,252,0,6,0,252,0, + 6,0,124,0,6,0,60,0,15,0,60,0,31,128,28,0, + 255,224,12,0,22,37,111,27,3,1,7,128,0,7,128,0, + 3,192,0,1,192,0,0,224,0,0,112,0,0,16,0,0, + 0,0,0,0,0,1,254,0,3,3,0,6,1,128,14,1, + 192,28,0,224,60,0,240,60,0,240,124,0,248,124,0,248, + 124,0,248,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,124,0,248,124,0, + 248,124,0,248,60,0,240,60,0,240,28,0,224,14,1,192, + 6,1,128,3,3,0,1,254,0,22,37,111,27,3,1,0, + 7,128,0,7,128,0,15,0,0,14,0,0,28,0,0,56, + 0,0,32,0,0,0,0,0,0,0,1,254,0,3,3,0, + 6,1,128,14,1,192,28,0,224,60,0,240,60,0,240,124, + 0,248,124,0,248,124,0,248,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,252,0,252,252,0,252, + 124,0,248,124,0,248,124,0,248,60,0,240,60,0,240,28, + 0,224,14,1,192,6,1,128,3,3,0,1,254,0,22,37, + 111,27,3,0,0,48,0,0,48,0,0,120,0,0,252,0, + 1,206,0,3,135,0,6,1,128,0,0,0,0,0,0,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,0, + 240,60,0,240,28,0,224,14,1,192,6,1,128,3,3,0, + 1,254,0,22,36,108,27,3,0,1,192,128,3,241,128,3, + 255,0,4,63,0,4,12,0,0,0,0,0,0,0,0,0, + 0,1,254,0,3,3,0,6,1,128,14,1,192,28,0,224, + 60,0,240,60,0,240,124,0,248,124,0,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,124,0,248,124,0,248,124,0,248, + 60,0,240,60,0,240,28,0,224,14,1,192,6,1,128,3, + 3,0,1,254,0,22,36,108,27,3,0,3,131,128,7,199, + 192,7,199,192,7,199,192,3,131,128,0,0,0,0,0,0, + 0,0,0,1,254,0,3,3,0,6,1,128,14,1,192,28, + 0,224,60,0,240,60,0,240,124,0,248,124,0,248,124,0, + 248,252,0,252,252,0,252,252,0,252,252,0,252,252,0,252, + 252,0,252,252,0,252,252,0,252,124,0,248,124,0,248,124, + 0,248,60,0,240,60,0,240,28,0,224,14,1,192,6,1, + 128,3,3,0,1,254,0,24,25,75,36,6,254,64,0,2, + 224,0,7,240,0,14,120,0,28,60,0,60,30,0,120,15, + 0,240,7,129,224,3,195,192,1,231,128,0,239,0,0,126, + 0,0,60,0,0,124,0,0,254,0,1,231,0,3,195,128, + 7,129,192,15,0,224,30,0,112,60,0,56,120,0,28,112, + 0,14,224,0,7,192,0,2,22,28,84,27,3,1,1,254, + 12,3,3,152,6,3,208,14,1,240,28,1,224,60,1,240, + 60,1,240,124,1,248,124,3,248,124,6,248,252,14,252,252, + 12,252,252,24,252,252,56,252,252,112,252,252,96,252,252,192, + 252,253,192,252,125,128,248,127,0,248,126,0,248,62,0,240, + 62,0,240,30,0,224,62,1,192,46,1,128,103,3,0,193, + 254,0,26,37,148,30,3,1,0,224,0,0,0,240,0,0, + 0,120,0,0,0,56,0,0,0,28,0,0,0,12,0,0, + 0,6,0,0,0,0,0,0,0,0,0,0,255,240,127,192, + 31,128,31,0,31,128,14,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,15,128,12,0,15,192,12,0,7,192,24,0, + 7,224,56,0,1,252,240,0,0,255,192,0,26,37,148,30, + 3,1,0,0,224,0,0,1,224,0,0,1,224,0,0,3, + 192,0,0,7,0,0,0,6,0,0,0,12,0,0,0,0, + 0,0,0,0,0,0,255,240,127,192,31,128,31,0,31,128, + 14,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,15,128, + 12,0,15,192,12,0,7,192,24,0,7,224,56,0,1,252, + 240,0,0,255,192,0,26,37,148,30,3,0,0,4,0,0, + 0,14,0,0,0,31,0,0,0,31,128,0,0,59,192,0, + 0,224,224,0,1,128,48,0,0,0,0,0,0,0,0,0, + 255,240,127,192,31,128,31,0,31,128,14,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,15,128,4,0,15,128,12,0, + 7,192,24,0,7,224,24,0,1,240,112,0,0,255,192,0, + 26,36,144,30,3,0,0,224,224,0,1,241,240,0,1,241, + 240,0,1,241,240,0,0,224,224,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,240,127,192,31,128,31,0,31,128, + 14,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,15,128, + 12,0,15,192,12,0,7,192,24,0,7,224,56,0,1,252, + 240,0,0,255,192,0,25,37,148,28,2,0,0,0,224,0, + 0,0,224,0,0,1,224,0,0,3,192,0,0,3,128,0, + 0,6,0,0,0,12,0,0,0,0,0,0,0,0,0,0, + 255,240,255,128,31,192,60,0,31,192,24,0,15,192,24,0, + 15,224,24,0,7,224,16,0,7,224,48,0,3,240,32,0, + 3,240,32,0,1,248,96,0,1,248,64,0,1,252,64,0, + 0,252,192,0,0,254,128,0,0,127,128,0,0,127,128,0, + 0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0, + 0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0, + 0,63,0,0,0,63,0,0,0,63,0,0,1,255,224,0, + 23,28,84,27,2,0,255,248,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,255,128,31,129,224,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,248,0,19,28,84,22,1,0, + 0,248,0,3,156,0,7,142,0,15,15,0,15,15,0,15, + 15,0,31,15,0,31,15,0,31,14,0,31,28,0,31,112, + 0,31,12,0,31,7,0,31,7,128,31,3,192,31,3,192, + 31,3,192,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,224,31,115,224,31,243,192,31,243,192,31,227,128,31,103, + 0,255,62,0,17,28,84,20,2,0,56,0,0,60,0,0, + 60,0,0,30,0,0,14,0,0,3,0,0,1,0,0,0, + 0,0,0,0,0,15,192,0,24,240,0,48,120,0,112,120, + 0,124,124,0,124,124,0,56,124,0,1,252,0,14,124,0, + 28,124,0,56,124,0,120,124,0,248,124,0,248,124,128,248, + 124,128,248,124,128,252,253,128,127,191,0,62,30,0,17,28, + 84,20,2,0,0,48,0,0,112,0,0,240,0,0,224,0, + 1,192,0,1,128,0,3,0,0,0,0,0,0,0,0,15, + 192,0,24,240,0,48,120,0,112,120,0,124,124,0,124,124, + 0,124,124,0,0,252,0,7,124,0,28,124,0,56,124,0, + 120,124,0,248,124,0,248,124,128,248,124,128,248,124,128,252, + 253,128,127,191,0,62,30,0,17,28,84,20,2,0,3,0, + 0,3,128,0,7,128,0,7,192,0,12,224,0,24,112,0, + 48,24,0,0,0,0,0,0,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,17,27,81,20,2,0,14,8,0,31,152,0,63,240, + 0,35,240,0,32,224,0,0,0,0,0,0,0,0,0,0, + 15,192,0,24,240,0,48,120,0,112,120,0,124,124,0,124, + 124,0,124,124,0,0,252,0,7,124,0,28,124,0,56,124, + 0,120,124,0,248,124,0,248,124,128,248,124,128,248,124,128, + 252,253,128,127,191,0,62,30,0,17,27,81,20,2,0,56, + 112,0,124,248,0,124,248,0,124,248,0,56,112,0,0,0, + 0,0,0,0,0,0,0,15,192,0,24,240,0,48,120,0, + 112,120,0,124,124,0,124,124,0,124,124,0,0,252,0,7, + 124,0,28,124,0,56,124,0,120,124,0,248,124,0,248,124, + 128,248,124,128,248,124,128,252,253,128,127,191,0,62,30,0, + 17,28,84,20,2,1,15,192,0,12,192,0,24,96,0,24, + 96,0,24,96,0,28,224,0,15,192,0,7,128,0,0,0, + 0,15,192,0,16,240,0,48,120,0,112,120,0,120,124,0, + 124,124,0,124,124,0,0,252,0,7,124,0,28,124,0,56, + 124,0,120,124,0,248,124,0,248,124,128,248,124,128,248,124, + 128,252,253,128,127,255,0,62,62,0,23,19,57,27,2,0, + 15,195,224,24,238,112,48,124,56,112,124,60,120,124,60,124, + 124,62,124,124,62,24,124,62,3,252,62,14,127,254,60,124, + 0,120,124,0,248,124,2,248,124,2,248,124,2,248,124,4, + 252,222,4,127,143,8,63,3,240,14,27,54,18,2,248,7, + 224,14,48,60,24,60,28,120,60,120,124,248,124,248,120,248, + 48,248,0,248,0,248,0,248,0,120,4,120,4,56,4,60, + 8,30,16,7,224,2,0,2,0,3,128,0,192,0,224,0, + 224,0,224,7,128,14,28,56,18,2,0,56,0,56,0,60, + 0,30,0,14,0,7,0,1,0,0,0,0,0,7,192,28, + 224,56,112,56,120,120,120,120,124,248,124,248,124,248,124,255, + 252,248,0,248,0,248,4,120,4,120,4,56,8,60,24,30, + 48,7,192,14,28,56,18,2,0,0,112,0,112,0,240,1, + 224,1,192,3,128,2,0,0,0,0,0,7,192,28,224,56, + 112,56,120,120,120,120,124,248,124,248,124,255,252,248,0,248, + 0,248,0,248,4,120,4,120,12,56,8,60,24,30,48,7, + 192,14,28,56,18,2,0,3,0,7,128,7,128,15,192,12, + 192,24,96,48,56,0,0,0,0,7,192,28,224,56,112,56, + 120,120,120,120,124,248,124,248,124,248,124,255,252,248,0,248, + 0,248,0,120,4,120,4,56,8,60,8,30,16,7,224,14, + 27,54,18,2,0,56,112,124,248,124,248,124,248,56,112,0, + 0,0,0,0,0,7,192,28,224,56,112,56,120,120,120,120, + 124,248,124,248,124,248,124,255,252,248,0,248,0,248,0,120, + 4,120,12,56,8,60,24,30,48,7,192,10,28,56,12,1, + 0,224,0,240,0,248,0,120,0,28,0,14,0,2,0,0, + 0,0,0,127,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,127,192,9,28,56,12,2,0,1, + 128,3,128,7,128,15,0,14,0,28,0,16,0,0,0,0, + 0,254,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,11,28,56,11,1,0,14,0,30, + 0,31,0,63,0,115,128,224,192,128,96,0,0,0,0,127, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,127,192,11,27,54,12,1,0,113,192,251,224,251, + 224,251,224,113,192,0,0,0,0,0,0,127,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,127, + 192,16,28,56,20,2,0,31,8,15,184,7,224,7,224,7, + 224,13,240,16,248,0,248,0,124,7,252,30,126,60,62,56, + 62,120,30,120,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,30,120,30,120,30,56,60,60,60,12,112,7,224,19, + 27,81,22,2,0,0,2,0,7,194,0,15,254,0,15,252, + 0,8,120,0,0,0,0,0,0,0,0,0,0,254,60,0, + 62,222,0,63,15,0,63,15,128,63,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,255,191,224,16,28,56,20,2,0,24,0,28,0, + 30,0,15,0,7,0,3,128,0,192,0,0,0,0,7,192, + 12,112,28,56,56,60,120,30,120,30,248,30,248,31,248,31, + 248,31,248,31,248,31,248,30,120,30,120,30,56,60,28,56, + 12,112,7,192,16,28,56,20,2,0,0,56,0,56,0,120, + 0,240,0,224,1,192,3,0,0,0,0,0,7,192,12,112, + 28,56,56,60,120,30,120,30,248,30,248,31,248,31,248,31, + 248,31,248,31,248,30,120,30,120,30,56,60,28,56,12,112, + 7,192,16,28,56,20,2,0,3,128,3,192,3,192,7,224, + 14,112,28,56,48,12,0,0,0,0,7,192,12,112,28,56, + 56,60,120,30,120,30,248,30,248,31,248,31,248,31,248,31, + 248,31,248,30,120,30,120,30,56,60,28,56,12,112,7,192, + 16,27,54,20,2,0,14,4,31,140,31,248,35,248,32,112, + 0,0,0,0,0,0,7,192,12,112,28,56,56,60,120,30, + 120,30,248,30,248,31,248,31,248,31,248,31,248,31,248,30, + 120,30,120,30,56,60,28,56,12,112,7,192,16,27,54,20, + 2,0,28,56,62,124,62,124,62,124,28,56,0,0,0,0, + 0,0,7,192,12,112,28,56,56,60,120,30,120,30,248,30, + 248,31,248,31,248,31,248,31,248,31,248,30,120,30,120,30, + 56,60,28,56,12,112,7,192,33,26,130,37,2,253,0,3, + 192,0,0,0,7,224,0,0,0,7,224,0,0,0,7,224, + 0,0,0,7,224,0,0,0,3,192,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,255,128,255,255,255,255,128,255, + 255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,3,192,0,0,0,7,224,0,0,0,7,224,0, + 0,0,7,224,0,0,0,7,224,0,0,0,3,192,0,0, + 16,19,38,20,2,0,7,225,12,114,28,60,56,60,120,62, + 120,62,248,126,248,95,248,223,249,159,251,31,254,31,252,30, + 124,30,120,30,60,28,124,56,78,48,135,192,19,28,84,21, + 1,0,12,0,0,30,0,0,15,0,0,7,0,0,3,128, + 0,1,192,0,0,64,0,0,0,0,0,0,0,254,63,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,31,128,62,31,128,30,47,128, + 31,79,128,7,143,224,19,28,84,21,1,0,0,28,0,0, + 60,0,0,60,0,0,120,0,0,224,0,0,192,0,1,128, + 0,0,0,0,0,0,0,254,63,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,31,128,62,31,128,30,47,128,30,79,128,7,143,224, + 19,28,84,21,1,0,1,192,0,1,224,0,3,224,0,3, + 240,0,7,56,0,12,28,0,24,4,0,0,0,0,0,0, + 0,254,63,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,31,128,62,31, + 128,30,47,128,30,79,128,7,143,224,19,27,81,21,1,0, + 28,28,0,62,62,0,62,62,0,62,62,0,28,28,0,0, + 0,0,0,0,0,0,0,0,254,63,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,31,128,62,31,128,30,47,128,30,79,128,7,143, + 224,18,37,111,19,0,247,0,14,0,0,30,0,0,30,0, + 0,60,0,0,48,0,0,96,0,0,192,0,0,0,0,0, + 0,0,255,207,192,63,3,0,31,3,0,31,2,0,15,2, + 0,15,130,0,15,132,0,7,196,0,7,196,0,3,196,0, + 3,232,0,3,232,0,1,248,0,1,240,0,0,240,0,0, + 240,0,0,96,0,0,96,0,0,96,0,0,32,0,0,64, + 0,12,64,0,30,64,0,62,128,0,62,128,0,60,128,0, + 29,0,0,14,0,0,18,36,108,20,0,247,3,0,0,15, + 0,0,63,0,0,223,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,31,0,31,63,128,31,71,128,31,135,192, + 31,135,192,31,7,192,31,7,192,31,7,192,31,7,128,31, + 7,128,31,15,0,31,15,0,31,14,0,31,12,0,31,24, + 0,31,48,0,31,96,0,31,128,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,30, + 0,0,56,0,0,224,0,0,19,36,108,20,0,247,7,14, + 0,15,159,0,15,159,0,15,159,0,7,14,0,0,0,0, + 0,0,0,0,0,0,255,207,224,63,3,0,31,3,0,31, + 2,0,15,2,0,15,130,0,15,132,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,248,0,1,240,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 32,0,0,64,0,12,64,0,30,64,0,62,64,0,62,128, + 0,60,128,0,29,0,0,14,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 28 + Calculated Max Values w=33 h=37 x= 5 y=12 dx=37 dy= 0 ascent=29 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =28 descent= 0 + X Font ascent =28 descent= 0 + Max Font ascent =29 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29n[1232] U8G_SECTION(".progmem.u8g_font_osb29n") = { + 0,107,49,223,245,28,0,0,0,0,42,57,0,29,248,28, + 0,14,16,32,19,3,12,3,0,7,128,7,128,199,24,227, + 60,242,124,122,248,7,128,7,128,250,248,242,124,227,60,199, + 24,7,128,7,128,3,0,33,33,165,37,2,251,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,255,255,255,255,128,255,255,255, + 255,128,255,255,255,255,128,0,1,192,0,0,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,7,13,13,10,2,249,120,252,252,254,254,126,6,4, + 4,8,24,96,192,10,4,8,14,2,8,255,192,255,192,255, + 192,255,192,6,6,6,10,2,0,120,252,252,252,252,120,13, + 37,74,17,2,248,0,24,0,56,0,56,0,48,0,112,0, + 112,0,96,0,96,0,224,0,224,0,192,1,192,1,192,1, + 128,3,128,3,128,3,128,3,0,7,0,7,0,6,0,14, + 0,14,0,12,0,12,0,28,0,28,0,24,0,56,0,56, + 0,48,0,112,0,112,0,112,0,96,0,224,0,224,0,18, + 28,84,22,2,1,3,240,0,14,28,0,14,28,0,28,14, + 0,60,15,0,60,15,0,124,15,128,124,15,128,124,15,128, + 252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,124,15, + 128,124,15,128,124,15,128,60,15,0,60,15,0,28,14,0, + 12,28,0,14,28,0,3,240,0,13,28,56,22,5,0,3, + 128,7,128,15,128,255,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,255,248,17,28,84,22,2,1,15,248,0, + 24,62,0,48,63,0,112,31,0,240,31,128,240,31,128,252, + 31,128,252,31,128,254,31,128,126,63,0,60,63,0,0,126, + 0,0,252,0,0,248,0,1,224,0,3,128,0,6,0,0, + 12,0,128,24,0,128,16,0,128,32,0,128,47,1,128,127, + 255,128,127,255,128,71,255,0,67,255,0,65,254,0,64,252, + 0,17,28,84,22,2,1,15,248,0,24,62,0,48,63,0, + 48,31,0,112,31,128,120,31,128,124,31,128,124,31,128,124, + 31,128,60,31,0,0,31,0,0,62,0,0,120,0,15,192, + 0,0,120,0,0,62,0,0,63,0,0,31,0,16,31,128, + 124,31,128,252,31,128,252,31,128,252,31,128,248,31,128,240, + 63,0,112,62,0,56,124,0,31,248,0,18,28,84,22,2, + 0,0,124,0,0,124,0,0,252,0,0,252,0,1,252,0, + 1,252,0,3,252,0,3,252,0,6,252,0,6,252,0,12, + 252,0,12,252,0,24,252,0,24,252,0,48,252,0,48,252, + 0,96,252,0,96,252,0,192,252,0,255,255,192,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,15,255,192,17,29,87,22,3,0,0,6,0,112,28, + 0,127,252,0,127,248,0,127,224,0,127,192,0,126,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,103,224,0,104, + 120,0,112,62,0,96,62,0,96,31,0,0,31,0,0,31, + 128,0,31,128,56,31,128,124,31,128,252,31,128,252,31,128, + 248,31,0,240,31,0,224,30,0,96,62,0,48,124,0,31, + 240,0,18,29,87,22,3,0,0,32,0,3,220,0,7,6, + 0,14,6,0,30,15,0,60,31,0,60,63,0,124,63,0, + 124,62,0,124,28,0,252,0,0,252,0,0,252,0,0,253, + 248,0,255,30,0,254,31,0,252,15,128,252,15,128,252,15, + 192,252,15,192,252,15,192,124,15,192,124,15,192,124,15,192, + 60,15,128,28,15,128,30,15,0,14,30,0,3,252,0,17, + 28,84,22,3,0,103,135,0,111,199,0,127,227,128,127,241, + 128,127,249,128,127,255,128,96,125,128,64,1,0,64,3,0, + 64,3,0,192,6,0,0,4,0,0,12,0,0,24,0,0, + 56,0,0,112,0,0,112,0,0,240,0,1,240,0,3,224, + 0,3,224,0,3,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,3,192,0,19,29,87,22,2,0,0, + 64,0,7,184,0,28,6,0,56,3,0,112,1,0,112,1, + 128,240,1,128,240,1,128,248,1,128,252,3,0,255,2,0, + 127,196,0,127,248,0,63,252,0,31,255,0,15,255,128,27, + 255,128,48,255,192,96,63,192,96,15,192,224,3,224,224,1, + 192,224,1,192,224,1,192,224,1,192,112,1,128,56,1,0, + 28,6,0,15,252,0,18,28,84,22,3,1,15,240,0,30, + 28,0,60,30,0,124,14,0,124,15,0,252,15,128,252,15, + 128,252,15,128,252,15,128,252,15,192,252,15,192,124,15,192, + 124,15,192,62,31,192,30,63,192,7,239,192,0,15,192,0, + 15,192,0,15,192,30,15,128,31,15,128,63,15,128,63,15, + 0,62,15,0,56,30,0,24,28,0,24,56,0,15,240,0 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=38 h=37 x= 5 y=21 dx=41 dy= 0 ascent=31 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x=-2 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =29 descent=-9 + Max Font ascent =31 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29r[7481] U8G_SECTION(".progmem.u8g_font_osb29r") = { + 0,107,49,223,245,29,9,166,21,115,32,127,247,31,247,29, + 247,0,0,0,11,0,0,6,28,28,10,2,1,120,252,252, + 252,252,252,252,120,120,120,120,120,48,48,48,48,48,48,48, + 48,0,0,120,252,252,252,252,120,10,9,18,16,3,20,243, + 192,243,192,243,192,243,192,243,192,243,192,97,128,97,128,97, + 128,22,28,84,28,3,0,1,192,224,1,192,224,1,192,224, + 1,192,224,1,128,192,1,128,192,1,128,192,3,129,252,255, + 255,252,255,255,252,3,129,128,3,1,128,3,1,128,7,3, + 128,7,3,128,7,3,128,7,3,128,6,3,0,255,255,252, + 255,255,252,255,255,252,14,7,0,14,7,0,14,6,0,12, + 6,0,12,6,0,28,14,0,28,14,0,18,34,102,22,2, + 253,1,16,0,1,16,0,1,16,0,7,252,0,29,19,0, + 57,17,128,49,16,192,113,16,192,113,17,192,113,19,192,121, + 23,192,127,23,128,127,19,0,63,144,0,63,240,0,31,240, + 0,15,252,0,7,254,0,1,255,0,1,255,128,1,63,128, + 121,31,192,249,23,192,249,19,192,249,17,192,225,17,192,193, + 17,192,97,17,128,97,19,0,57,22,0,15,60,0,1,208, + 0,1,16,0,1,16,0,26,29,116,32,3,0,4,0,12, + 0,27,0,8,0,49,128,24,0,113,192,16,0,113,192,48, + 0,241,224,96,0,241,224,96,0,241,224,192,0,241,224,128, + 0,241,225,128,0,241,225,0,0,113,195,0,0,113,194,0, + 0,59,134,0,0,30,12,0,0,0,12,28,0,0,24,119, + 0,0,16,227,128,0,48,227,128,0,33,227,192,0,97,227, + 192,0,65,227,192,0,193,227,192,1,129,227,192,1,129,227, + 192,3,1,227,128,2,0,227,128,6,0,99,0,4,0,62, + 0,27,28,112,31,2,1,0,254,0,0,1,195,0,0,3, + 129,0,0,7,129,128,0,7,129,128,0,7,129,128,0,7, + 131,128,0,7,195,0,0,7,198,0,0,3,236,0,0,3, + 248,0,0,1,240,0,0,0,248,0,0,1,252,31,224,7, + 124,3,128,14,62,3,0,28,63,3,0,56,31,134,0,120, + 15,134,0,120,7,196,0,248,7,232,0,248,3,248,0,248, + 1,240,0,252,1,248,0,254,0,248,32,127,1,252,64,63, + 254,127,192,31,248,31,128,4,9,9,10,3,20,240,240,240, + 240,240,240,96,96,96,11,35,70,13,2,249,0,96,0,192, + 1,128,3,0,6,0,12,0,28,0,24,0,56,0,56,0, + 120,0,120,0,120,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,120,0,120,0,120,0,120,0, + 56,0,56,0,28,0,12,0,14,0,7,0,3,0,1,128, + 0,96,11,36,72,14,1,249,192,0,96,0,48,0,24,0, + 12,0,14,0,7,0,7,0,3,128,3,128,3,192,3,192, + 3,192,3,192,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,192,3,192,3,192,3,128,3,128,7,0, + 7,0,6,0,12,0,28,0,56,0,112,0,192,0,128,0, + 14,16,32,19,3,12,3,0,7,128,7,128,199,24,227,60, + 242,124,122,248,7,128,7,128,250,248,242,124,227,60,199,24, + 7,128,7,128,3,0,33,33,165,37,2,251,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,7,13,13,10,2,249,120,252,252,254,254,126,6,4,4, + 8,24,96,192,10,4,8,14,2,8,255,192,255,192,255,192, + 255,192,6,6,6,10,2,0,120,252,252,252,252,120,13,37, + 74,17,2,248,0,24,0,56,0,56,0,48,0,112,0,112, + 0,96,0,96,0,224,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,128,3,0,7,0,7,0,6,0,14,0, + 14,0,12,0,12,0,28,0,28,0,24,0,56,0,56,0, + 48,0,112,0,112,0,112,0,96,0,224,0,224,0,18,28, + 84,22,2,1,3,240,0,14,28,0,14,28,0,28,14,0, + 60,15,0,60,15,0,124,15,128,124,15,128,124,15,128,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15, + 192,252,15,192,252,15,192,252,15,192,252,15,192,124,15,128, + 124,15,128,124,15,128,60,15,0,60,15,0,28,14,0,12, + 28,0,14,28,0,3,240,0,13,28,56,22,5,0,3,128, + 7,128,15,128,255,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,248,17,28,84,22,2,1,15,248,0,24, + 62,0,48,63,0,112,31,0,240,31,128,240,31,128,252,31, + 128,252,31,128,254,31,128,126,63,0,60,63,0,0,126,0, + 0,252,0,0,248,0,1,224,0,3,128,0,6,0,0,12, + 0,128,24,0,128,16,0,128,32,0,128,47,1,128,127,255, + 128,127,255,128,71,255,0,67,255,0,65,254,0,64,252,0, + 17,28,84,22,2,1,15,248,0,24,62,0,48,63,0,48, + 31,0,112,31,128,120,31,128,124,31,128,124,31,128,124,31, + 128,60,31,0,0,31,0,0,62,0,0,120,0,15,192,0, + 0,120,0,0,62,0,0,63,0,0,31,0,16,31,128,124, + 31,128,252,31,128,252,31,128,252,31,128,248,31,128,240,63, + 0,112,62,0,56,124,0,31,248,0,18,28,84,22,2,0, + 0,124,0,0,124,0,0,252,0,0,252,0,1,252,0,1, + 252,0,3,252,0,3,252,0,6,252,0,6,252,0,12,252, + 0,12,252,0,24,252,0,24,252,0,48,252,0,48,252,0, + 96,252,0,96,252,0,192,252,0,255,255,192,0,252,0,0, + 252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252, + 0,15,255,192,17,29,87,22,3,0,0,6,0,112,28,0, + 127,252,0,127,248,0,127,224,0,127,192,0,126,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,103,224,0,104,120, + 0,112,62,0,96,62,0,96,31,0,0,31,0,0,31,128, + 0,31,128,56,31,128,124,31,128,252,31,128,252,31,128,248, + 31,0,240,31,0,224,30,0,96,62,0,48,124,0,31,240, + 0,18,29,87,22,3,0,0,32,0,3,220,0,7,6,0, + 14,6,0,30,15,0,60,31,0,60,63,0,124,63,0,124, + 62,0,124,28,0,252,0,0,252,0,0,252,0,0,253,248, + 0,255,30,0,254,31,0,252,15,128,252,15,128,252,15,192, + 252,15,192,252,15,192,124,15,192,124,15,192,124,15,192,60, + 15,128,28,15,128,30,15,0,14,30,0,3,252,0,17,28, + 84,22,3,0,103,135,0,111,199,0,127,227,128,127,241,128, + 127,249,128,127,255,128,96,125,128,64,1,0,64,3,0,64, + 3,0,192,6,0,0,4,0,0,12,0,0,24,0,0,56, + 0,0,112,0,0,112,0,0,240,0,1,240,0,3,224,0, + 3,224,0,3,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,3,192,0,19,29,87,22,2,0,0,64, + 0,7,184,0,28,6,0,56,3,0,112,1,0,112,1,128, + 240,1,128,240,1,128,248,1,128,252,3,0,255,2,0,127, + 196,0,127,248,0,63,252,0,31,255,0,15,255,128,27,255, + 128,48,255,192,96,63,192,96,15,192,224,3,224,224,1,192, + 224,1,192,224,1,192,224,1,192,112,1,128,56,1,0,28, + 6,0,15,252,0,18,28,84,22,3,1,15,240,0,30,28, + 0,60,30,0,124,14,0,124,15,0,252,15,128,252,15,128, + 252,15,128,252,15,128,252,15,192,252,15,192,124,15,192,124, + 15,192,62,31,192,30,63,192,7,239,192,0,15,192,0,15, + 192,0,15,192,30,15,128,31,15,128,63,15,128,63,15,0, + 62,15,0,56,30,0,24,28,0,24,56,0,15,240,0,6, + 19,19,10,2,0,120,252,252,252,252,120,0,0,0,0,0, + 0,0,120,252,252,252,252,120,7,26,26,10,2,249,120,252, + 252,252,252,120,0,0,0,0,0,0,0,120,252,252,254,254, + 126,6,4,4,8,16,96,192,29,33,132,36,3,250,0,0, + 0,24,0,0,0,120,0,0,1,240,0,0,7,192,0,0, + 31,128,0,0,62,0,0,0,248,0,0,3,224,0,0,15, + 192,0,0,31,0,0,0,124,0,0,1,240,0,0,7,192, + 0,0,15,128,0,0,62,0,0,0,248,0,0,0,240,0, + 0,0,124,0,0,0,62,0,0,0,15,128,0,0,3,224, + 0,0,0,248,0,0,0,124,0,0,0,31,0,0,0,7, + 192,0,0,1,240,0,0,0,252,0,0,0,62,0,0,0, + 15,128,0,0,3,224,0,0,1,248,0,0,0,120,0,0, + 0,16,32,11,44,36,2,5,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255, + 255,255,255,255,29,33,132,36,4,250,192,0,0,0,240,0, + 0,0,124,0,0,0,31,0,0,0,15,192,0,0,3,224, + 0,0,0,248,0,0,0,62,0,0,0,31,128,0,0,7, + 192,0,0,1,240,0,0,0,124,0,0,0,31,0,0,0, + 15,128,0,0,3,224,0,0,0,248,0,0,0,120,0,0, + 1,240,0,0,3,224,0,0,15,128,0,0,62,0,0,0, + 248,0,0,1,240,0,0,7,192,0,0,31,0,0,0,124, + 0,0,1,248,0,0,3,224,0,0,15,128,0,0,62,0, + 0,0,252,0,0,0,240,0,0,0,64,0,0,0,12,28, + 56,18,3,1,63,128,119,224,65,224,129,240,129,240,129,240, + 129,240,129,224,193,224,67,192,3,128,7,0,6,0,12,0, + 8,0,24,0,16,64,16,64,16,64,24,128,15,0,0,0, + 7,128,15,192,15,192,15,192,15,192,7,128,28,29,116,32, + 2,0,0,2,0,0,0,125,240,0,1,192,28,0,3,0, + 6,0,6,0,3,0,12,0,1,128,24,15,61,192,56,28, + 188,192,48,56,248,224,112,112,120,224,112,240,120,96,225,224, + 120,112,225,224,248,112,225,224,240,112,227,224,240,112,227,192, + 240,112,227,192,240,112,227,193,224,96,227,193,224,224,99,193, + 224,192,99,195,224,192,115,194,225,128,49,228,227,0,56,120, + 124,0,28,0,0,0,12,0,0,0,7,0,0,0,3,128, + 24,0,0,255,224,0,26,29,116,29,2,0,0,4,0,0, + 0,6,0,0,0,14,0,0,0,14,0,0,0,15,0,0, + 0,31,0,0,0,31,0,0,0,31,128,0,0,63,128,0, + 0,47,128,0,0,47,192,0,0,111,192,0,0,79,192,0, + 0,71,192,0,0,199,224,0,0,135,224,0,0,131,224,0, + 1,131,240,0,1,3,240,0,3,1,240,0,3,255,248,0, + 2,1,248,0,6,0,248,0,6,0,252,0,4,0,252,0, + 12,0,252,0,12,0,124,0,30,0,254,0,255,199,255,192, + 22,28,84,27,3,0,255,255,0,31,131,192,31,131,224,31, + 129,240,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,240,31,129,240,31,131,192,31,131,128,31,252,0, + 31,131,128,31,129,224,31,128,240,31,128,248,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,248,31,128, + 248,31,129,240,31,131,224,255,255,128,21,28,84,26,3,1, + 1,254,48,7,3,48,14,1,240,30,0,240,60,0,240,60, + 0,112,124,0,112,124,0,48,124,0,48,252,0,48,252,0, + 48,252,0,16,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,24,252,0,24,124,0,16,124,0,16,124, + 0,16,60,0,48,60,0,32,30,0,96,14,0,192,7,1, + 128,1,254,0,25,28,112,30,3,0,255,255,128,0,31,128, + 224,0,31,128,112,0,31,128,56,0,31,128,60,0,31,128, + 30,0,31,128,30,0,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,0,31,128,31,0,31,128,31,0,31,128, + 30,0,31,128,30,0,31,128,60,0,31,128,56,0,31,128, + 112,0,31,128,224,0,255,255,128,0,22,28,84,26,2,0, + 255,255,252,15,192,124,15,192,60,15,192,28,15,192,28,15, + 192,12,15,192,12,15,192,12,15,193,4,15,193,0,15,195, + 0,15,195,0,15,199,0,15,255,0,15,199,0,15,195,0, + 15,195,0,15,193,4,15,193,4,15,193,4,15,192,12,15, + 192,12,15,192,12,15,192,28,15,192,28,15,192,60,15,192, + 252,255,255,252,22,28,84,25,2,0,255,255,252,31,128,252, + 31,128,124,31,128,60,31,128,28,31,128,28,31,128,28,31, + 128,12,31,129,12,31,129,12,31,131,12,31,131,0,31,135, + 0,31,255,0,31,143,0,31,135,0,31,131,0,31,129,0, + 31,129,0,31,129,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,255,252,0,24,29, + 87,28,3,0,0,16,0,1,239,24,3,3,152,14,0,248, + 30,0,248,28,0,120,60,0,56,60,0,56,124,0,24,124, + 0,24,124,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,31,255,252,1,248,252,1,248,252,1,248,252,1,248, + 124,1,248,124,1,248,124,1,248,60,1,248,60,1,248,30, + 3,152,14,3,24,7,6,24,1,220,24,27,28,112,31,2, + 0,255,251,255,224,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,255,255,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,255,251,255, + 224,13,28,56,17,2,0,255,248,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,255,248,18, + 28,84,20,1,0,7,255,192,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,16,126,0,124,126,0,252,126, + 0,252,126,0,252,126,0,248,126,0,240,124,0,224,124,0, + 96,120,0,32,240,0,31,224,0,26,28,112,29,2,0,255, + 241,255,0,31,128,120,0,31,128,112,0,31,128,96,0,31, + 128,64,0,31,128,192,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,134,0,0,31,142,0,0,31,159,0,0,31, + 191,0,0,31,255,128,0,31,223,128,0,31,159,192,0,31, + 143,192,0,31,143,224,0,31,135,224,0,31,135,240,0,31, + 131,240,0,31,131,248,0,31,129,248,0,31,129,252,0,31, + 128,252,0,31,128,254,0,31,128,254,0,255,243,255,192,22, + 28,84,25,2,0,255,248,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,12,31,128,12,31,128,12,31,128, + 12,31,128,28,31,128,28,31,128,60,31,128,60,31,128,124, + 31,128,252,31,129,252,255,255,252,31,28,112,34,2,0,255, + 128,15,254,15,128,15,224,15,192,15,224,15,192,15,224,15, + 192,15,224,15,224,23,224,15,224,23,224,15,240,23,224,13, + 240,23,224,13,240,39,224,13,248,39,224,12,248,39,224,12, + 248,39,224,12,252,71,224,12,124,71,224,12,124,71,224,12, + 126,71,224,12,62,135,224,12,63,135,224,12,63,135,224,12, + 31,135,224,12,31,7,224,12,31,7,224,12,15,7,224,12, + 15,7,224,28,14,7,224,62,6,7,224,255,134,63,254,27, + 28,112,30,2,0,255,128,255,224,31,192,63,0,31,192,30, + 0,15,224,12,0,7,240,12,0,7,240,12,0,7,248,12, + 0,7,248,12,0,6,252,12,0,6,254,12,0,6,126,12, + 0,6,63,12,0,6,63,140,0,6,31,140,0,6,31,204, + 0,6,15,236,0,6,7,236,0,6,7,252,0,6,3,252, + 0,6,1,252,0,6,1,252,0,6,0,252,0,6,0,252, + 0,6,0,124,0,6,0,60,0,15,0,60,0,31,128,28, + 0,255,224,12,0,22,28,84,27,3,1,1,254,0,3,3, + 0,6,1,128,14,1,192,28,0,224,60,0,240,60,0,240, + 124,0,248,124,0,248,124,0,248,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,124,0,248,124,0,248,124,0,248,60,0,240,60,0,240, + 28,0,224,14,1,192,6,1,128,3,3,0,1,254,0,23, + 28,84,27,2,0,255,255,128,31,129,240,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,248,0,22,37,111,27,3,248,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,56, + 240,60,76,240,30,133,224,14,135,224,7,135,192,3,135,132, + 1,238,4,0,22,4,0,6,4,0,7,12,0,7,12,0, + 7,252,0,7,248,0,7,248,0,3,240,0,1,224,25,28, + 112,28,2,0,255,255,0,0,31,135,192,0,31,131,224,0, + 31,129,240,0,31,129,248,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,240,0,31,131,224,0, + 31,135,192,0,31,254,0,0,31,135,128,0,31,131,192,0, + 31,129,240,0,31,129,240,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,248,128,31,129,248,128, + 31,129,248,128,31,129,248,128,31,129,249,0,31,128,249,0, + 255,248,126,0,18,29,87,23,3,0,1,0,0,31,225,128, + 48,57,128,96,31,128,96,15,128,224,7,128,240,3,128,240, + 3,128,248,1,128,254,1,128,255,1,128,127,192,0,127,224, + 0,63,248,0,31,252,0,7,255,0,3,255,0,128,255,128, + 128,127,128,192,31,192,192,15,192,192,7,192,224,3,192,224, + 1,192,240,1,128,248,1,128,248,3,0,206,2,0,135,188, + 0,24,28,84,27,2,0,255,255,255,252,126,63,248,126,31, + 240,126,15,224,126,15,224,126,7,192,126,7,192,126,3,192, + 126,3,192,126,3,128,126,3,128,126,2,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,7,255,224,26,28,112,30,3, + 0,255,240,127,192,31,128,31,0,31,128,14,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,15,128,12,0,15,192,12, + 0,7,192,24,0,7,224,56,0,1,252,240,0,0,255,192, + 0,27,28,112,30,2,0,255,248,127,224,31,192,15,0,15, + 192,6,0,15,192,6,0,7,224,4,0,7,224,12,0,7, + 224,8,0,3,240,8,0,3,240,8,0,3,240,24,0,1, + 248,16,0,1,248,16,0,1,252,48,0,0,252,32,0,0, + 252,32,0,0,254,96,0,0,126,64,0,0,126,64,0,0, + 127,192,0,0,63,128,0,0,63,128,0,0,63,128,0,0, + 31,0,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,14,0,0,38,28,140,41,2,0,255,243,255, + 207,252,31,192,126,1,224,15,192,126,0,192,15,192,62,0, + 192,7,192,63,0,128,7,224,63,0,128,7,224,63,1,128, + 7,224,63,129,0,3,240,63,129,0,3,240,127,131,0,3, + 240,111,195,0,1,248,79,194,0,1,248,207,194,0,1,248, + 199,230,0,0,252,135,230,0,0,252,135,228,0,0,253,131, + 244,0,0,127,131,252,0,0,127,3,248,0,0,127,3,248, + 0,0,127,1,248,0,0,63,1,248,0,0,62,1,240,0, + 0,62,0,240,0,0,30,0,240,0,0,28,0,240,0,0, + 28,0,96,0,0,12,0,96,0,26,28,112,29,2,0,255, + 241,255,128,31,224,124,0,15,224,56,0,15,224,48,0,7, + 240,96,0,7,240,96,0,3,248,192,0,3,248,128,0,1, + 253,128,0,0,255,0,0,0,254,0,0,0,126,0,0,0, + 127,0,0,0,63,0,0,0,63,128,0,0,31,128,0,0, + 63,192,0,0,111,192,0,0,79,224,0,0,199,224,0,1, + 135,240,0,1,131,240,0,3,3,248,0,2,1,248,0,6, + 1,252,0,14,0,252,0,30,1,254,0,255,199,255,192,25, + 28,112,28,2,0,255,240,255,128,31,192,60,0,31,192,24, + 0,15,192,24,0,15,224,24,0,7,224,16,0,7,224,48, + 0,3,240,32,0,3,240,32,0,1,248,96,0,1,248,64, + 0,1,252,64,0,0,252,192,0,0,254,128,0,0,127,128, + 0,0,127,128,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,1,255,224,0,20,28,84,25,3,0,127,255,240,126,7, + 240,124,7,224,120,15,224,112,15,192,96,31,192,96,31,128, + 96,63,128,64,63,0,64,127,0,0,254,0,0,254,0,1, + 252,0,1,248,0,3,248,0,3,240,0,7,240,0,7,224, + 16,15,224,16,15,192,16,31,192,48,31,128,48,63,128,112, + 63,0,112,127,0,240,126,1,240,254,7,240,255,255,240,9, + 35,70,15,3,249,255,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,128,13,37,74,17,2, + 248,192,0,224,0,224,0,96,0,112,0,112,0,48,0,56, + 0,56,0,24,0,24,0,28,0,28,0,12,0,14,0,14, + 0,6,0,6,0,7,0,7,0,3,0,3,128,3,128,1, + 128,1,192,1,192,0,192,0,192,0,224,0,224,0,96,0, + 112,0,112,0,48,0,48,0,56,0,56,9,35,70,15,3, + 249,255,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,18,14,42,22,2,15,0,192,0, + 0,192,0,1,224,0,3,240,0,3,240,0,7,56,0,7, + 56,0,14,28,0,28,14,0,28,14,0,56,7,0,56,7, + 0,112,3,128,224,1,192,20,3,9,20,0,249,255,255,240, + 255,255,240,255,255,240,7,7,7,17,3,21,224,240,240,120, + 60,12,6,17,19,57,20,2,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,18,28,84,20,0,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,60,0,31,78,0,31,143,0,31,135,128,31, + 7,128,31,7,128,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,128,31,7,128, + 31,135,0,25,143,0,16,206,0,16,120,0,14,19,38,18, + 2,0,7,224,14,48,60,24,60,28,120,60,120,124,248,124, + 248,120,248,48,248,0,248,0,248,0,248,0,120,4,120,4, + 56,4,28,8,14,16,7,224,18,28,84,21,2,0,0,254, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,15,62,0,28,190,0,60, + 126,0,120,126,0,120,62,0,120,62,0,248,62,0,248,62, + 0,248,62,0,248,62,0,248,62,0,248,62,0,248,62,0, + 120,62,0,120,62,0,120,126,0,60,126,0,28,190,0,15, + 63,192,14,19,38,18,2,0,7,192,28,224,56,112,56,120, + 120,120,120,124,248,124,248,124,248,124,255,252,248,0,248,0, + 248,0,120,4,120,4,56,8,60,8,30,16,7,224,14,28, + 56,13,1,0,1,240,7,24,15,28,30,60,30,124,62,124, + 62,56,62,0,62,0,255,192,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,192,19,28,84,22, + 2,247,7,225,192,30,118,96,60,60,224,60,60,224,124,62, + 192,124,62,0,124,62,0,124,62,0,60,60,0,60,60,0, + 30,120,0,7,224,0,56,0,0,96,0,0,96,0,0,127, + 224,0,127,254,0,127,255,0,63,255,128,31,255,128,96,7, + 128,192,3,128,128,3,128,128,3,0,128,3,0,64,6,0, + 48,28,0,15,240,0,20,28,84,22,1,0,255,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,30,0,31,111,0,31,135,128, + 31,135,192,31,135,192,31,7,192,31,7,192,31,7,192,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,192,255,223,240, + 8,28,28,12,2,0,60,126,126,126,126,60,0,0,0,252, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,255,12,37,74,13,254,247,1,224,3,240,3,240,3,240, + 3,240,1,224,0,0,0,0,0,0,15,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,123,224,251,224,251,224,243,192,227,192,103,128, + 30,0,20,28,84,21,1,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,31,192,31,7,0,31,6,0,31,4,0,31, + 8,0,31,16,0,31,16,0,31,48,0,31,120,0,31,248, + 0,31,188,0,31,60,0,31,30,0,31,31,0,31,15,0, + 31,15,128,31,15,128,31,15,192,255,223,240,11,28,56,12, + 1,0,255,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,255,224,27,19,76,30,2,0, + 254,60,30,0,62,222,111,0,63,31,143,0,63,31,143,128, + 63,31,143,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,255,63,223,224,19,19,57,22, + 2,0,254,60,0,62,222,0,63,15,0,63,15,128,63,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,255,191,224,16,19,38,20,2, + 0,7,192,12,112,28,56,56,60,120,30,120,30,248,30,248, + 31,248,31,248,31,248,31,248,31,248,30,120,30,120,30,56, + 60,28,56,12,112,7,192,18,28,84,21,1,247,255,60,0, + 31,78,0,31,143,0,31,135,128,31,7,128,31,7,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,128,31,7,128,31,135,128,31,143,0, + 31,78,0,31,60,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,255,192, + 0,17,28,84,20,2,247,7,130,0,28,194,0,60,102,0, + 120,126,0,120,62,0,120,62,0,248,62,0,248,62,0,248, + 62,0,248,62,0,248,62,0,248,62,0,248,62,0,120,62, + 0,120,62,0,120,126,0,60,126,0,28,190,0,15,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,255,128,14,19,38,17,2, + 0,254,48,62,120,62,188,63,60,63,124,62,124,62,56,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,13,19,38,16,2,0,31,16,97, + 208,96,112,224,48,224,48,240,16,248,0,126,0,127,128,63, + 224,15,240,135,240,193,248,192,120,224,56,224,24,240,16,156, + 48,135,192,12,27,54,14,1,0,6,0,6,0,6,0,6, + 0,6,0,14,0,30,0,62,0,255,224,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,16,62, + 16,62,16,62,16,62,16,62,32,62,32,31,192,7,128,19, + 19,57,21,1,0,254,63,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 31,128,62,31,128,30,47,128,30,79,128,7,143,224,18,19, + 57,20,1,0,255,143,192,62,3,0,30,2,0,30,2,0, + 31,2,0,15,4,0,15,4,0,15,132,0,7,136,0,7, + 200,0,7,216,0,3,208,0,3,240,0,3,240,0,1,224, + 0,1,224,0,0,224,0,0,192,0,0,192,0,28,19,76, + 30,1,0,255,63,231,240,62,15,129,192,30,7,129,128,30, + 7,129,128,31,7,193,0,15,7,193,0,15,7,195,0,15, + 143,226,0,7,137,226,0,7,137,230,0,7,217,244,0,3, + 208,244,0,3,240,248,0,3,240,248,0,1,224,248,0,1, + 224,112,0,1,192,112,0,0,192,112,0,0,192,32,0,18, + 19,57,20,1,0,255,63,128,126,14,0,62,12,0,31,8, + 0,31,16,0,15,176,0,15,160,0,7,192,0,3,192,0, + 3,224,0,1,240,0,3,240,0,2,248,0,4,248,0,12, + 124,0,8,126,0,24,62,0,56,63,0,254,127,192,19,28, + 84,20,0,247,255,207,224,63,3,128,31,3,0,31,2,0, + 15,2,0,15,130,0,15,130,0,7,196,0,7,196,0,3, + 196,0,3,232,0,3,232,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,112,0,0,96,0,0,96,0,0,32,0, + 0,64,0,12,64,0,30,64,0,62,64,0,62,128,0,60, + 128,0,29,0,0,14,0,0,14,19,38,17,1,0,127,252, + 120,124,112,248,96,248,65,240,65,224,67,224,3,192,7,192, + 7,128,15,128,31,4,31,4,62,4,62,12,124,12,120,28, + 248,60,255,252,12,35,70,16,2,249,1,240,7,128,15,0, + 15,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,30,0,30,0,56,0,224,0,56,0, + 30,0,30,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,15,0,15,0,7,128,1,240, + 3,36,36,11,4,248,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,12,37,74,16,2,248, + 128,0,240,0,28,0,15,0,15,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 7,128,3,192,0,112,3,192,7,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,0,15,0,28,0,248,0,128,0,21,8,24,25,2,6, + 62,0,48,127,192,16,255,240,8,135,252,8,129,255,24,128, + 127,248,192,31,240,96,3,224,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 9 y=28 dx=52 dy= 0 ascent=45 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x=-2 y=-12 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =35 descent=-10 + Max Font ascent =45 descent=-12 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35[22095] U8G_SECTION(".progmem.u8g_font_osb35") = { + 0,133,60,215,242,35,12,218,29,222,32,255,246,45,244,35, + 246,0,0,0,13,0,0,8,34,34,14,3,1,126,126,255, + 255,255,255,255,255,126,126,126,126,60,60,60,60,60,24,24, + 24,24,24,24,24,24,0,0,0,126,255,255,255,255,126,12, + 12,24,18,3,23,32,64,241,224,249,240,249,240,249,240,249, + 240,249,240,112,224,112,224,112,224,112,224,112,224,28,34,136, + 34,3,0,0,112,14,0,0,112,14,0,0,112,14,0,0, + 112,14,0,0,240,30,0,0,224,28,0,0,224,28,0,0, + 224,28,0,0,224,28,0,255,255,255,240,255,255,255,240,255, + 255,255,240,1,192,56,0,1,192,56,0,1,192,56,0,1, + 192,56,0,3,192,56,0,3,128,120,0,3,128,112,0,3, + 128,112,0,3,128,112,0,3,128,112,0,255,255,255,224,255, + 255,255,224,255,255,255,224,7,0,224,0,7,0,224,0,7, + 0,224,0,7,0,224,0,15,1,224,0,14,1,224,0,14, + 1,192,0,14,1,192,0,14,1,192,0,23,42,126,28,2, + 252,0,195,0,0,195,0,0,195,0,0,195,0,3,255,192, + 7,195,112,28,195,24,60,195,12,56,195,14,120,195,14,120, + 195,30,120,195,62,124,195,126,126,195,126,127,195,124,127,195, + 56,63,243,0,63,251,0,31,255,0,31,255,128,7,255,192, + 3,255,240,0,255,248,0,255,248,0,223,252,0,199,252,124, + 195,254,124,195,254,252,195,126,252,195,62,248,195,30,240,195, + 30,224,195,28,96,195,28,112,195,56,56,195,56,28,195,96, + 7,255,192,0,195,0,0,195,0,0,195,0,0,195,0,33, + 35,175,41,4,0,0,0,0,48,0,15,192,0,96,0,60, + 240,0,224,0,56,112,0,192,0,120,120,1,128,0,120,120, + 1,128,0,248,124,3,0,0,248,124,7,0,0,248,124,6, + 0,0,248,124,14,0,0,248,124,12,0,0,248,124,24,0, + 0,120,120,24,0,0,120,120,48,0,0,56,240,112,0,0, + 28,224,96,0,0,15,192,192,0,0,0,0,192,0,0,0, + 1,128,240,0,0,3,131,156,0,0,3,7,158,0,0,7, + 15,15,0,0,6,15,15,0,0,12,31,15,128,0,12,31, + 15,128,0,24,31,15,128,0,56,31,15,128,0,48,31,15, + 128,0,96,31,15,128,0,96,31,15,128,0,192,15,15,0, + 1,192,15,15,0,1,128,7,14,0,3,128,7,158,0,3, + 0,1,248,0,33,34,170,37,2,1,0,31,224,0,0,0, + 112,112,0,0,0,224,48,0,0,0,224,24,0,0,1,224, + 24,0,0,1,224,24,0,0,1,224,24,0,0,1,240,56, + 0,0,1,240,48,0,0,1,248,96,0,0,1,248,192,0, + 0,0,255,128,0,0,0,255,0,0,0,0,126,0,0,0, + 0,63,0,0,0,0,255,129,255,128,1,223,128,62,0,3, + 143,192,28,0,7,15,224,24,0,14,7,224,56,0,30,3, + 240,48,0,60,1,248,48,0,124,1,248,96,0,124,0,252, + 96,0,252,0,126,192,0,252,0,127,128,0,252,0,63,128, + 0,254,0,31,128,0,255,0,31,128,0,255,0,15,193,128, + 127,192,63,225,0,63,248,247,243,0,31,255,195,254,0,15, + 254,0,252,0,5,12,12,11,3,23,32,240,248,248,248,248, + 248,112,112,112,112,112,14,43,86,18,3,248,0,28,0,56, + 0,112,0,224,1,192,3,128,7,0,15,0,14,0,30,0, + 30,0,60,0,60,0,124,0,124,0,124,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 124,0,124,0,124,0,124,0,60,0,60,0,30,0,30,0, + 14,0,15,0,7,0,3,128,1,192,0,224,0,112,0,56, + 0,12,13,43,86,17,1,248,192,0,224,0,48,0,24,0, + 28,0,14,0,7,0,7,128,3,128,3,192,1,224,1,224, + 1,224,1,240,1,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 1,240,1,240,1,224,1,224,3,192,3,192,3,128,7,128, + 7,0,14,0,28,0,56,0,112,0,224,0,128,0,17,19, + 57,24,4,13,1,128,0,3,192,0,3,192,0,227,195,0, + 241,135,128,248,143,128,252,159,128,126,191,0,3,192,0,3, + 192,0,126,191,0,252,159,128,248,143,128,241,135,128,225,195, + 0,3,192,0,3,192,0,3,192,0,1,128,0,41,41,246, + 45,2,249,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,255,255,255,255,255,128,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,9,15,30,13,2,248,126, + 0,255,0,255,128,255,128,255,128,127,128,1,128,1,128,1, + 128,3,0,2,0,6,0,28,0,56,0,96,0,12,5,10, + 18,3,10,255,240,255,240,255,240,255,240,255,240,8,6,6, + 14,3,1,126,255,255,255,255,126,16,44,88,22,3,247,0, + 7,0,15,0,14,0,14,0,14,0,30,0,28,0,28,0, + 60,0,56,0,56,0,120,0,112,0,112,0,240,0,224,0, + 224,0,224,1,224,1,192,1,192,3,192,3,128,3,128,7, + 128,7,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,0,23,35,105,28,2,0,0,16,0, + 0,254,0,3,199,128,7,131,192,15,1,224,15,1,224,31, + 1,240,63,1,248,63,1,248,127,1,248,127,1,252,127,1, + 252,127,1,252,255,1,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,127,1,252,127,1,252,127,1,252,127,1,252,63,1, + 248,63,1,248,31,1,240,15,1,224,15,1,224,7,131,192, + 3,199,128,0,254,0,16,34,68,28,6,0,0,240,0,240, + 1,240,7,240,255,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,255,255,255,255, + 21,34,102,28,3,1,7,255,0,14,15,192,28,7,224,56, + 7,240,120,3,240,120,3,248,248,3,248,252,3,248,255,3, + 248,255,3,248,255,7,248,127,7,240,63,15,240,12,15,224, + 0,31,192,0,63,128,0,127,0,0,252,0,1,240,0,3, + 192,0,7,128,0,14,0,24,12,0,24,24,0,24,48,0, + 24,96,0,24,111,192,56,127,255,248,255,255,240,239,255,240, + 195,255,240,193,255,224,192,255,192,192,63,128,22,34,102,28, + 3,1,7,255,0,14,15,192,28,7,224,56,7,240,120,3, + 240,124,3,248,126,3,248,127,3,248,127,3,248,127,3,248, + 63,3,240,30,3,240,0,7,224,0,7,192,0,15,0,7, + 248,0,0,31,128,0,15,192,0,7,224,0,7,240,0,3, + 248,0,3,248,62,3,252,127,3,252,255,3,252,255,3,252, + 255,3,252,254,3,252,252,3,248,248,7,248,120,7,240,56, + 15,224,30,31,192,15,255,0,23,34,102,28,2,0,0,7, + 192,0,15,192,0,15,192,0,31,192,0,63,192,0,63,192, + 0,127,192,0,127,192,0,255,192,0,223,192,1,223,192,1, + 159,192,3,159,192,7,31,192,6,31,192,14,31,192,12,31, + 192,28,31,192,24,31,192,56,31,192,112,31,192,96,31,192, + 224,31,192,255,255,254,0,31,192,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,7,255, + 252,7,255,252,21,34,102,28,4,0,32,0,192,60,7,128, + 63,255,128,63,255,0,63,254,0,63,248,0,63,224,0,63, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,49,252,0,54,63,0,60,15,192,56,15,224,48,15,224, + 32,7,240,0,7,240,0,7,248,0,7,248,8,7,248,62, + 7,248,126,7,248,254,7,248,254,7,248,254,7,240,248,7, + 240,240,7,224,112,15,192,48,15,192,28,31,0,15,252,0, + 22,34,102,28,3,1,0,255,128,3,192,192,7,192,96,15, + 128,240,31,131,240,31,7,240,63,15,240,63,15,240,127,15, + 224,127,7,192,127,3,0,127,0,0,255,0,0,255,0,0, + 255,63,0,255,255,192,255,195,224,255,131,240,255,3,248,255, + 1,248,255,1,252,255,1,252,255,1,252,127,1,252,127,1, + 252,127,1,252,127,1,252,63,1,248,63,1,248,31,1,248, + 15,129,240,7,131,224,3,195,192,1,255,0,20,34,102,28, + 5,1,71,224,224,207,240,224,223,248,112,255,252,48,255,254, + 48,255,255,240,255,255,240,224,31,176,192,0,32,192,0,96, + 128,0,96,128,0,192,128,1,192,0,1,128,0,3,128,0, + 7,0,0,15,0,0,14,0,0,30,0,0,60,0,0,124, + 0,0,252,0,1,252,0,1,248,0,3,248,0,3,248,0, + 7,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,248,0,3,240,0,23,34,102,28,3,1,1,255, + 128,7,0,192,12,0,96,28,0,48,56,0,24,56,0,24, + 120,0,24,120,0,24,124,0,24,126,0,24,127,0,48,127, + 192,32,127,240,96,63,255,128,63,255,0,31,255,192,15,255, + 240,7,255,248,15,255,248,24,63,252,48,15,252,112,3,254, + 96,0,254,224,0,126,224,0,62,224,0,30,224,0,30,224, + 0,12,240,0,28,112,0,24,56,0,24,28,0,48,15,0, + 192,3,255,0,22,34,102,28,3,1,3,254,0,15,15,0, + 31,7,128,62,7,192,126,3,224,126,3,240,126,3,240,254, + 3,248,254,3,248,254,3,248,254,3,248,254,3,252,254,3, + 252,254,3,252,126,3,252,127,7,252,63,7,252,31,15,252, + 15,255,252,3,243,252,0,3,252,0,3,252,0,3,248,7, + 3,248,31,131,248,31,195,248,63,195,240,63,195,240,63,131, + 224,62,7,224,60,7,192,28,15,128,14,31,0,7,252,0, + 8,22,22,14,3,1,126,255,255,255,255,126,0,0,0,0, + 0,0,0,0,0,0,126,255,255,255,255,126,9,31,62,13, + 2,248,63,0,127,128,127,128,127,128,127,128,63,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,3,0,6,0,28,0,56,0,96,0, + 37,40,200,45,4,249,0,0,0,0,48,0,0,0,0,240, + 0,0,0,1,248,0,0,0,7,224,0,0,0,31,128,0, + 0,0,126,0,0,0,1,252,0,0,0,7,240,0,0,0, + 15,192,0,0,0,63,0,0,0,0,252,0,0,0,3,240, + 0,0,0,15,224,0,0,0,63,128,0,0,0,126,0,0, + 0,1,248,0,0,0,7,224,0,0,0,31,128,0,0,0, + 127,0,0,0,0,252,0,0,0,0,248,0,0,0,0,126, + 0,0,0,0,31,128,0,0,0,15,224,0,0,0,3,248, + 0,0,0,0,252,0,0,0,0,63,0,0,0,0,15,192, + 0,0,0,3,240,0,0,0,1,252,0,0,0,0,127,0, + 0,0,0,31,192,0,0,0,7,224,0,0,0,1,248,0, + 0,0,0,126,0,0,0,0,63,128,0,0,0,15,224,0, + 0,0,3,248,0,0,0,0,248,0,0,0,0,48,41,13, + 78,45,2,6,255,255,255,255,255,128,255,255,255,255,255,128, + 255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,37,40,200,45,4,249,96,0,0,0,0,120,0,0, + 0,0,252,0,0,0,0,63,0,0,0,0,15,192,0,0, + 0,3,240,0,0,0,1,252,0,0,0,0,127,0,0,0, + 0,31,128,0,0,0,7,224,0,0,0,1,248,0,0,0, + 0,126,0,0,0,0,63,128,0,0,0,15,224,0,0,0, + 3,240,0,0,0,0,252,0,0,0,0,63,0,0,0,0, + 15,192,0,0,0,7,240,0,0,0,1,248,0,0,0,0, + 248,0,0,0,3,240,0,0,0,15,192,0,0,0,63,128, + 0,0,0,254,0,0,0,1,248,0,0,0,7,224,0,0, + 0,31,128,0,0,0,126,0,0,0,1,252,0,0,0,7, + 240,0,0,0,31,192,0,0,0,63,0,0,0,0,252,0, + 0,0,3,240,0,0,0,15,224,0,0,0,63,128,0,0, + 0,254,0,0,0,0,248,0,0,0,0,96,0,0,0,0, + 15,34,68,22,3,1,31,240,59,248,96,252,96,252,192,126, + 192,126,192,126,192,126,192,126,64,252,96,252,48,248,1,240, + 1,224,3,192,3,128,7,0,7,0,14,0,12,16,12,16, + 12,16,12,16,6,32,3,192,0,0,0,0,0,128,3,224, + 7,240,7,240,7,240,7,240,3,224,35,34,170,39,2,1, + 0,15,255,0,0,0,56,1,224,0,0,224,0,112,0,1, + 128,0,28,0,7,0,0,14,0,14,0,0,7,0,12,0, + 248,3,0,28,3,205,243,128,56,7,135,241,128,56,15,7, + 225,192,112,31,7,225,192,112,62,7,224,224,112,62,7,224, + 224,224,124,7,192,224,224,124,7,192,224,224,124,7,192,224, + 224,252,15,192,224,224,248,15,128,224,224,248,15,128,224,224, + 248,15,129,192,224,248,31,129,192,224,248,31,129,128,112,248, + 31,3,128,112,248,63,3,0,112,120,111,6,0,56,60,199, + 140,0,56,31,3,240,0,28,0,0,0,0,14,0,0,0, + 0,7,0,0,0,0,3,128,0,0,0,1,192,0,96,0, + 0,120,1,192,0,0,31,255,0,0,33,35,175,36,2,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,2,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,31,0,15,252,0,255,240,255,255,128,28, + 34,136,33,3,0,255,255,240,0,15,224,126,0,15,224,31, + 0,15,224,31,128,15,224,15,192,15,224,15,192,15,224,15, + 224,15,224,15,224,15,224,15,224,15,224,15,224,15,224,15, + 224,15,224,15,192,15,224,15,192,15,224,31,128,15,224,30, + 0,15,224,60,0,15,255,224,0,15,224,124,0,15,224,63, + 0,15,224,31,128,15,224,15,192,15,224,15,224,15,224,15, + 240,15,224,15,240,15,224,15,240,15,224,15,240,15,224,15, + 240,15,224,15,240,15,224,15,224,15,224,15,224,15,224,31, + 192,15,224,31,128,15,224,126,0,255,255,248,0,26,34,136, + 31,3,1,0,127,193,128,1,224,241,128,3,192,63,128,15, + 128,31,128,15,128,15,128,31,0,15,128,63,0,7,128,63, + 0,7,128,127,0,3,128,127,0,3,128,127,0,3,128,127, + 0,1,128,255,0,1,128,255,0,1,128,255,0,1,128,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,192,127,0,0,192,127, + 0,0,192,127,0,0,128,63,0,1,128,63,0,1,128,63, + 0,1,128,31,128,3,0,15,128,3,0,7,128,6,0,3, + 192,12,0,1,224,56,0,0,127,224,0,32,34,136,37,3, + 0,255,255,248,0,15,224,31,0,15,224,7,128,15,224,3, + 224,15,224,1,240,15,224,1,240,15,224,0,248,15,224,0, + 252,15,224,0,252,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,254,15,224,0,252,15,224,0,252,15,224,0, + 248,15,224,1,240,15,224,1,224,15,224,3,192,15,224,7, + 128,15,224,30,0,255,255,248,0,27,34,136,33,3,0,255, + 255,255,224,15,224,31,224,15,224,7,224,15,224,3,224,15, + 224,1,224,15,224,1,224,15,224,0,224,15,224,0,224,15, + 224,0,96,15,224,48,96,15,224,48,96,15,224,48,0,15, + 224,112,0,15,224,112,0,15,224,240,0,15,225,240,0,15, + 255,240,0,15,225,240,0,15,224,240,0,15,224,112,0,15, + 224,112,32,15,224,48,96,15,224,48,96,15,224,48,96,15, + 224,0,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,1,224,15,224,3,224,15,224,3,224,15,224,15,224,255, + 255,255,224,255,255,255,224,28,34,136,32,3,0,255,255,255, + 240,7,240,15,240,7,240,3,240,7,240,1,240,7,240,1, + 240,7,240,0,240,7,240,0,240,7,240,0,112,7,240,0, + 112,7,240,24,48,7,240,24,48,7,240,24,48,7,240,56, + 48,7,240,56,0,7,240,120,0,7,240,248,0,7,255,248, + 0,7,240,248,0,7,240,120,0,7,240,56,0,7,240,56, + 0,7,240,24,0,7,240,24,0,7,240,24,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,128,0,30,34,136,35,3,1,0,127,224,192,0, + 224,120,192,3,192,31,192,7,128,15,192,15,128,7,192,31, + 0,7,192,31,0,3,192,63,0,3,192,63,0,1,192,127, + 0,1,192,127,0,1,192,127,0,0,192,255,0,0,192,255, + 0,0,192,255,0,0,0,255,0,0,0,255,0,0,0,255, + 3,255,252,255,3,255,252,255,0,31,192,255,0,31,192,255, + 0,31,192,127,0,31,192,127,0,31,192,127,0,31,192,127, + 0,31,192,63,0,31,192,63,0,31,192,31,0,31,192,15, + 128,57,192,15,128,49,192,7,192,96,192,1,224,192,192,0, + 127,128,192,34,34,170,39,3,0,255,255,63,255,192,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,255,255,252,0,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,255,255, + 63,255,192,16,34,68,21,3,0,255,255,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,255,255,23,34,102, + 26,2,0,1,255,254,0,15,224,0,15,224,0,15,224,0, + 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 224,0,15,224,0,15,224,0,15,224,0,15,224,0,15,224, + 0,15,224,0,15,224,0,15,224,0,15,224,0,15,224,0, + 15,224,30,15,224,126,15,224,127,15,224,255,15,224,255,15, + 224,254,15,224,254,15,224,248,15,192,112,15,192,96,15,128, + 48,31,0,24,30,0,15,248,0,33,34,170,37,3,0,255, + 255,31,254,0,7,240,7,240,0,7,240,3,192,0,7,240, + 3,128,0,7,240,3,0,0,7,240,7,0,0,7,240,14, + 0,0,7,240,12,0,0,7,240,24,0,0,7,240,48,0, + 0,7,240,96,0,0,7,240,224,0,0,7,240,224,0,0, + 7,241,240,0,0,7,243,240,0,0,7,247,248,0,0,7, + 255,252,0,0,7,255,252,0,0,7,249,254,0,0,7,241, + 254,0,0,7,240,255,0,0,7,240,255,0,0,7,240,127, + 128,0,7,240,127,128,0,7,240,63,192,0,7,240,63,192, + 0,7,240,31,224,0,7,240,31,224,0,7,240,15,240,0, + 7,240,15,240,0,7,240,7,248,0,7,240,7,248,0,7, + 240,7,252,0,255,255,63,255,128,28,34,136,32,3,0,255, + 255,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,48,7, + 240,0,48,7,240,0,48,7,240,0,112,7,240,0,112,7, + 240,0,112,7,240,0,240,7,240,0,240,7,240,0,240,7, + 240,1,240,7,240,3,240,7,240,3,240,7,240,7,240,255, + 255,255,240,255,255,255,240,39,34,170,43,2,0,255,240,0, + 63,254,7,240,0,63,192,7,248,0,63,192,7,248,0,63, + 192,7,248,0,127,192,7,252,0,127,192,7,252,0,95,192, + 7,252,0,95,192,7,254,0,223,192,6,254,0,223,192,6, + 255,0,159,192,6,127,0,159,192,6,127,1,159,192,6,127, + 129,159,192,6,63,129,31,192,6,63,129,31,192,6,63,195, + 31,192,6,31,194,31,192,6,31,226,31,192,6,15,226,31, + 192,6,15,230,31,192,6,15,244,31,192,6,7,244,31,192, + 6,7,244,31,192,6,7,252,31,192,6,3,248,31,192,6, + 3,248,31,192,6,1,248,31,192,6,1,248,31,192,6,1, + 240,31,192,6,0,240,31,192,15,0,240,31,192,63,192,240, + 31,192,255,240,97,255,254,34,35,175,37,2,255,255,224,15, + 255,192,31,240,3,255,0,15,240,0,252,0,15,248,0,120, + 0,7,252,0,48,0,3,254,0,48,0,3,254,0,48,0, + 3,255,0,48,0,3,255,128,48,0,3,255,128,48,0,3, + 127,192,48,0,3,63,224,48,0,3,31,224,48,0,3,31, + 240,48,0,3,15,248,48,0,3,7,248,48,0,3,7,252, + 48,0,3,3,254,48,0,3,1,255,48,0,3,1,255,48, + 0,3,0,255,176,0,3,0,127,240,0,3,0,127,240,0, + 3,0,63,240,0,3,0,31,240,0,3,0,15,240,0,3, + 0,15,240,0,3,0,7,240,0,3,0,3,240,0,3,0, + 3,240,0,7,128,1,240,0,15,192,0,240,0,63,240,0, + 240,0,255,252,0,112,0,0,0,0,48,0,28,34,136,33, + 3,1,0,63,192,0,0,224,112,0,3,192,56,0,7,128, + 30,0,15,128,30,0,15,0,15,0,31,0,15,128,63,0, + 15,192,63,0,15,192,127,0,15,192,127,0,15,224,127,0, + 15,224,127,0,15,224,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,127,0,15,192,63,0,15,192,63,0,15,192,31,0, + 15,128,15,0,15,0,15,128,31,0,7,128,30,0,3,192, + 60,0,0,224,112,0,0,63,192,0,29,34,136,34,3,0, + 255,255,248,0,7,240,63,0,7,240,15,192,7,240,15,224, + 7,240,15,240,7,240,7,240,7,240,7,248,7,240,7,248, + 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,248, + 7,240,7,240,7,240,15,240,7,240,15,224,7,240,15,192, + 7,240,31,0,7,255,252,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,255,255,128,0,28,45,180,33,3,246,0,63, + 192,0,0,224,112,0,3,192,56,0,7,128,30,0,15,128, + 30,0,15,0,15,0,31,0,15,128,63,0,15,128,63,0, + 15,192,127,0,15,192,127,0,15,224,127,0,15,224,127,0, + 15,224,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,63,0,15,192,63,15,15,192,31,17,143,128,15,160, + 223,0,15,160,223,0,7,160,254,0,3,224,252,16,0,240, + 248,16,0,127,224,16,0,0,224,16,0,0,224,16,0,0, + 224,48,0,0,240,48,0,0,248,112,0,0,255,240,0,0, + 255,224,0,0,127,224,0,0,127,192,0,0,63,128,0,0, + 31,0,32,36,144,36,3,254,255,255,240,0,7,240,126,0, + 7,240,63,0,7,240,63,128,7,240,31,192,7,240,31,192, + 7,240,31,224,7,240,31,224,7,240,31,224,7,240,31,224, + 7,240,31,224,7,240,31,192,7,240,63,192,7,240,63,0, + 7,240,126,0,7,255,240,0,7,240,240,0,7,240,62,0, + 7,240,63,0,7,240,31,128,7,240,31,128,7,240,31,192, + 7,240,31,192,7,240,31,192,7,240,31,192,7,240,31,195, + 7,240,31,195,7,240,31,195,7,240,31,195,7,240,31,195, + 7,240,31,198,7,240,31,198,7,240,15,238,255,255,135,252, + 0,0,3,248,0,0,0,96,23,34,102,29,4,1,7,252, + 24,24,15,24,56,3,248,112,1,248,112,0,248,240,0,120, + 248,0,120,248,0,56,252,0,24,254,0,24,255,128,24,255, + 224,8,127,240,0,127,252,0,63,254,0,31,255,128,15,255, + 192,3,255,240,1,255,248,128,127,248,192,31,252,192,15,252, + 192,3,254,224,1,254,224,0,126,224,0,62,240,0,30,248, + 0,30,248,0,28,252,0,28,254,0,24,239,0,48,195,128, + 96,193,255,128,29,34,136,34,3,0,255,255,255,248,255,63, + 231,248,252,31,193,248,248,31,192,248,248,31,192,248,240,31, + 192,120,224,31,192,56,224,31,192,56,224,31,192,56,192,31, + 192,24,192,31,192,24,192,31,192,24,192,31,192,24,128,31, + 192,8,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,3,255, + 254,0,33,34,170,38,3,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,34,34,170,37,2,0,255,255,135,255,192,15,248,0, + 126,0,7,248,0,56,0,7,248,0,56,0,3,248,0,48, + 0,3,252,0,48,0,3,252,0,48,0,1,254,0,96,0, + 1,254,0,96,0,0,254,0,96,0,0,255,0,192,0,0, + 255,0,192,0,0,127,0,192,0,0,127,129,128,0,0,127, + 129,128,0,0,63,129,128,0,0,63,195,0,0,0,63,195, + 0,0,0,31,195,0,0,0,31,230,0,0,0,15,230,0, + 0,0,15,246,0,0,0,15,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,248,0,0,0,3,248,0,0,0, + 3,248,0,0,0,3,240,0,0,0,1,240,0,0,0,1, + 240,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224, + 0,0,49,34,238,52,2,0,255,255,63,255,207,255,128,31, + 252,7,254,0,252,0,7,248,3,252,0,112,0,7,248,1, + 252,0,112,0,3,248,1,254,0,96,0,3,252,1,254,0, + 96,0,3,252,0,254,0,96,0,1,252,0,254,0,192,0, + 1,254,1,255,0,192,0,1,254,1,255,0,192,0,0,254, + 1,255,1,128,0,0,255,3,127,129,128,0,0,255,3,63, + 129,128,0,0,127,3,63,129,128,0,0,127,135,63,195,0, + 0,0,127,134,31,195,0,0,0,63,134,31,195,0,0,0, + 63,198,31,231,0,0,0,31,204,15,230,0,0,0,31,204, + 15,230,0,0,0,31,236,15,246,0,0,0,15,248,7,252, + 0,0,0,15,248,7,252,0,0,0,15,248,7,252,0,0, + 0,7,248,3,252,0,0,0,7,240,3,248,0,0,0,7, + 240,3,248,0,0,0,3,240,1,248,0,0,0,3,224,1, + 240,0,0,0,3,224,1,240,0,0,0,1,224,0,240,0, + 0,0,1,192,0,240,0,0,0,1,192,0,224,0,0,0, + 0,192,0,96,0,0,33,34,170,36,2,0,127,255,31,254, + 0,31,252,3,240,0,7,248,3,192,0,3,248,3,128,0, + 3,252,3,128,0,1,252,3,0,0,1,254,7,0,0,0, + 255,6,0,0,0,255,12,0,0,0,127,140,0,0,0,127, + 152,0,0,0,63,240,0,0,0,63,240,0,0,0,31,224, + 0,0,0,31,224,0,0,0,15,240,0,0,0,15,248,0, + 0,0,7,248,0,0,0,7,252,0,0,0,7,252,0,0, + 0,15,254,0,0,0,29,254,0,0,0,24,255,0,0,0, + 56,255,0,0,0,48,127,128,0,0,96,127,128,0,0,224, + 63,192,0,0,192,63,224,0,1,128,31,224,0,3,128,31, + 240,0,3,128,15,240,0,7,128,15,248,0,31,128,31,252, + 0,255,240,127,255,128,32,34,136,35,2,0,255,254,15,255, + 31,248,1,248,15,248,0,240,7,248,0,224,7,248,0,192, + 3,252,0,192,3,252,0,192,1,252,1,128,1,254,1,128, + 0,254,3,0,0,255,3,0,0,255,3,0,0,127,134,0, + 0,127,134,0,0,63,196,0,0,63,204,0,0,31,204,0, + 0,31,248,0,0,15,248,0,0,15,248,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,0,25,34,136,31,3,0,127,255,255,128,127,128, + 127,128,126,0,255,0,124,0,255,0,120,1,254,0,120,3, + 254,0,112,3,252,0,112,7,252,0,96,7,248,0,96,15, + 248,0,96,15,240,0,64,31,224,0,0,31,224,0,0,63, + 192,0,0,63,192,0,0,127,128,0,0,127,128,0,0,255, + 0,0,0,255,0,0,1,254,0,0,3,254,0,128,3,252, + 0,128,7,248,0,128,7,248,0,128,15,240,1,128,15,240, + 1,128,31,224,3,128,31,224,3,128,63,192,7,128,63,192, + 15,128,127,128,31,128,127,128,63,128,255,255,255,128,255,255, + 255,128,11,42,84,18,4,248,255,224,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,255,224,16,44,88,22, + 3,247,224,0,224,0,224,0,240,0,112,0,112,0,120,0, + 56,0,56,0,60,0,28,0,28,0,30,0,14,0,14,0, + 14,0,15,0,7,0,7,0,7,128,3,128,3,128,3,192, + 1,192,1,192,1,224,0,224,0,224,0,224,0,240,0,112, + 0,112,0,120,0,56,0,56,0,60,0,28,0,28,0,30, + 0,14,0,14,0,14,0,15,0,7,11,42,84,18,3,248, + 255,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,255,224,22,17,51,28,3,18,0,48,0,0,112,0, + 0,120,0,0,252,0,0,252,0,1,254,0,3,207,0,3, + 143,0,7,135,128,15,3,128,15,3,192,30,1,224,60,0, + 224,60,0,240,120,0,120,112,0,56,240,0,60,25,3,12, + 25,0,248,255,255,255,128,255,255,255,128,255,255,255,128,8, + 9,9,21,4,25,96,240,248,124,60,30,15,3,1,21,22, + 66,24,2,1,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,22,34,102,25,1,0,255,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,159,128,31,179,224,31,225,224,31,193,240,31,193,248,31, + 192,248,31,192,248,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,248, + 31,192,248,31,193,248,29,193,240,24,225,224,24,99,192,16, + 63,128,18,22,66,22,2,1,3,252,0,15,6,0,31,3, + 0,62,3,128,62,7,128,126,15,128,124,31,128,252,31,128, + 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,0, + 128,30,1,0,15,130,0,3,252,0,23,34,102,26,2,0, + 0,63,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,7,231,224,31,23,224,30,31,224,62,15,224, + 126,15,224,124,15,224,124,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, + 224,124,7,224,124,15,224,126,15,224,62,15,224,30,31,224, + 15,23,224,7,231,254,18,22,66,23,2,1,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,16,1,1,0,255,0,1,199,128,7,199,128,7,199,192, + 15,143,192,15,143,192,31,143,192,31,143,128,31,135,128,31, + 128,0,31,128,0,31,128,0,255,240,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,24,33,99,27,2,246, + 7,254,62,31,15,71,63,7,143,62,7,207,126,7,238,126, + 7,228,126,7,224,126,7,224,126,7,224,62,7,192,31,15, + 128,15,15,0,3,252,0,12,0,0,48,0,0,48,0,0, + 112,0,0,112,0,0,127,255,128,127,255,224,63,255,240,31, + 255,240,7,255,248,60,1,248,96,0,120,192,0,56,192,0, + 56,192,0,48,192,0,112,96,0,96,48,1,192,30,7,128, + 3,252,0,24,34,102,27,1,0,255,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,143,224, + 31,145,240,31,160,248,31,160,252,31,192,252,31,192,252,31, + 192,252,31,128,252,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,255,227,255,11, + 35,70,15,2,0,4,0,31,0,63,128,63,128,63,128,63, + 128,31,0,4,0,0,0,0,0,0,0,0,0,0,0,255, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,255,224,15,46,92,16,254, + 245,0,16,0,124,0,254,0,254,0,254,0,254,0,124,0, + 16,0,0,0,0,0,0,0,0,0,0,7,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,56,252,124,252,252, + 252,252,252,248,248,248,248,113,240,49,224,31,128,25,34,136, + 27,1,0,255,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,131,254,0,31,128,240,0,31,128,96,0,31, + 128,192,0,31,128,128,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,143,0,0,31,159,0,0,31,159,128,0,31, + 191,128,0,31,239,192,0,31,199,224,0,31,135,224,0,31, + 131,240,0,31,129,248,0,31,129,248,0,31,128,252,0,31, + 128,252,0,31,128,254,0,255,243,255,128,12,34,68,14,1, + 0,255,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,255,240,34,22,110,37,2,1,255,31,193,248,0, + 63,35,230,124,0,63,67,228,62,0,63,131,248,63,0,63, + 131,248,63,0,63,131,248,63,0,63,3,240,63,0,63,3, + 240,63,0,63,3,240,63,0,63,3,240,63,0,63,3,240, + 63,0,63,3,240,63,0,63,3,240,63,0,63,3,240,63, + 0,63,3,240,63,0,63,3,240,63,0,63,3,240,63,0, + 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, + 3,240,63,0,255,207,252,255,192,23,22,66,27,2,1,255, + 31,192,63,35,224,63,65,240,63,65,248,63,129,248,63,129, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,255,199, + 254,20,22,66,24,2,1,3,252,0,15,15,0,30,7,128, + 62,7,192,62,7,192,124,3,224,124,3,224,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,62,7,192,62,7,192, + 30,7,128,15,15,0,3,252,0,22,33,99,25,1,246,255, + 159,128,31,163,192,31,225,224,31,193,240,31,192,248,31,192, + 248,31,192,248,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,192,252,31, + 192,248,31,192,248,31,193,240,31,225,240,31,179,224,31,159, + 128,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,255, + 240,0,22,33,99,25,2,246,7,240,32,15,24,96,30,28, + 96,62,14,224,126,15,224,124,15,224,124,7,224,252,7,224, + 252,7,224,252,7,224,252,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,124,7,224,124,15,224,126,15,224,62,15, + 224,30,31,224,31,23,224,7,231,224,0,7,224,0,7,224, + 0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,63,252,17,22,66,20,2, + 1,255,31,0,63,63,128,63,79,128,63,79,128,63,159,128, + 63,159,128,63,159,0,63,14,0,63,0,0,63,0,0,63, + 0,0,63,0,0,63,0,0,63,0,0,63,0,0,63,0, + 0,63,0,0,63,0,0,63,0,0,63,0,0,63,0,0, + 255,192,0,16,22,44,21,3,1,31,196,48,116,96,60,224, + 28,224,28,240,12,248,4,254,4,127,128,127,224,63,240,31, + 252,7,254,129,254,192,127,192,31,224,15,224,7,240,7,248, + 6,204,14,135,248,15,32,64,17,1,0,1,128,1,128,1, + 128,1,128,1,128,3,128,3,128,7,128,15,128,63,128,255, + 248,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,130,31,130,31,130,31,130,31, + 134,31,134,31,132,15,196,15,248,7,240,24,22,66,26,1, + 0,255,143,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,131,248,31,131,248,31,133,248,15,133,248,15,201,248, + 7,241,255,23,23,69,25,1,255,255,241,254,63,192,120,31, + 128,48,15,192,48,15,192,32,7,192,96,7,224,96,7,224, + 64,3,224,192,3,240,128,3,240,128,1,241,128,1,249,0, + 0,249,0,0,255,0,0,254,0,0,126,0,0,126,0,0, + 124,0,0,60,0,0,60,0,0,24,0,0,24,0,35,23, + 115,37,1,255,255,231,255,31,224,63,129,252,7,128,31,128, + 252,3,0,15,128,252,2,0,15,192,124,2,0,15,192,124, + 6,0,7,192,126,4,0,7,224,254,4,0,3,224,191,12, + 0,3,224,191,8,0,3,241,159,24,0,1,241,31,144,0, + 1,241,31,144,0,1,251,31,176,0,0,250,15,224,0,0, + 250,15,224,0,0,254,15,224,0,0,124,7,192,0,0,124, + 7,192,0,0,60,7,192,0,0,56,3,128,0,0,56,3, + 128,0,0,24,3,0,0,23,22,66,25,1,0,255,231,252, + 63,192,240,31,192,224,15,192,192,15,225,128,7,227,0,3, + 242,0,3,254,0,1,252,0,1,252,0,0,252,0,0,126, + 0,0,127,0,0,127,0,0,223,128,1,159,192,3,15,192, + 2,15,224,6,7,224,14,7,240,30,7,248,255,207,254,23, + 33,99,25,1,245,255,241,254,63,192,120,31,128,48,15,192, + 32,15,192,32,15,192,96,7,224,64,7,224,64,3,240,192, + 3,240,128,1,248,128,1,249,128,0,249,0,0,253,0,0, + 253,0,0,126,0,0,126,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,12,0,0,8,0,0,8,0,0,8,0, + 15,16,0,31,16,0,63,144,0,63,32,0,62,32,0,62, + 64,0,31,192,0,15,0,0,18,22,66,22,2,0,127,255, + 192,124,15,192,120,31,128,112,63,0,96,63,0,96,126,0, + 64,126,0,64,252,0,1,248,0,1,248,0,3,240,0,3, + 240,0,7,224,64,15,192,64,15,192,64,31,128,192,31,0, + 192,63,1,192,126,1,192,126,3,192,252,15,192,255,255,192, + 14,43,86,20,3,247,0,60,0,240,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,0,15,0,28,0, + 240,0,60,0,30,0,15,0,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,7,128,7,128,3,192,0,240,0,60,3,44,44,13, + 5,247,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,15,43, + 86,20,3,247,240,0,60,0,15,0,7,128,7,128,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,3,192,3,192,0,240,0,62, + 0,240,1,224,3,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,128,7,128,15,0,60,0,240,0,27,9,36,31,2,8, + 31,128,1,128,63,240,0,192,127,254,0,96,255,255,128,96, + 193,255,240,96,192,63,255,224,192,15,255,192,96,1,255,128, + 48,0,63,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,13,0,0,8,35,35,14,3, + 245,60,126,255,255,255,126,60,0,0,0,24,24,24,24,24, + 24,24,24,60,60,60,60,126,126,126,126,254,255,255,255,255, + 255,255,126,60,18,34,102,28,5,250,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,1,240,0,7,236,0,15, + 103,0,30,99,0,62,99,128,126,103,128,126,111,128,124,111, + 128,252,111,128,252,103,0,252,96,0,252,96,0,252,96,0, + 252,96,0,252,96,0,252,96,0,124,96,192,124,96,192,62, + 96,128,62,97,128,30,97,0,15,99,0,7,252,0,0,248, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 29,34,136,34,3,1,0,1,255,0,0,7,129,192,0,31, + 0,224,0,31,0,224,0,63,0,240,0,126,1,240,0,126, + 3,240,0,254,3,240,0,254,3,224,0,254,1,192,0,254, + 0,0,0,254,0,0,0,254,0,0,0,254,0,0,15,254, + 0,0,24,126,6,0,0,127,252,0,0,127,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,31, + 0,0,0,31,0,0,0,30,0,0,0,30,0,24,30,28, + 0,56,127,220,0,112,195,248,0,224,128,255,255,224,128,127, + 255,192,128,255,255,128,193,207,255,0,127,3,252,0,24,22, + 66,28,2,5,96,126,6,243,255,207,127,255,254,63,129,252, + 30,0,120,60,0,60,56,0,28,56,0,28,112,0,14,112, + 0,14,112,0,14,112,0,14,112,0,14,112,0,14,56,0, + 28,56,0,28,60,0,60,30,0,120,63,129,252,127,255,254, + 243,255,207,96,126,6,26,34,136,28,1,0,255,248,63,192, + 63,224,15,0,31,224,14,0,31,224,12,0,31,224,12,0, + 15,240,8,0,15,240,8,0,7,240,24,0,7,248,16,0, + 3,248,48,0,3,252,32,0,3,252,96,0,1,254,64,0, + 1,254,192,0,0,254,128,0,0,255,128,0,0,255,0,0, + 63,255,254,0,0,127,0,0,0,127,0,0,0,127,0,0, + 0,127,0,0,63,255,254,0,0,127,0,0,0,127,0,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,127,0,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,127,0,0, + 7,255,248,0,3,42,42,13,5,248,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,22,43,129,30,2,248,1,255,0,7,1,192, + 14,0,224,28,0,224,28,1,240,60,3,240,60,7,240,60, + 7,240,62,7,224,62,3,192,63,0,0,31,192,0,31,248, + 0,15,254,0,31,255,128,55,255,192,97,255,240,96,127,248, + 224,31,248,224,7,252,240,1,252,252,0,124,255,0,60,255, + 192,28,127,240,24,63,252,24,31,255,16,15,255,160,3,255, + 192,0,255,224,0,63,224,0,15,240,6,3,240,31,129,240, + 63,128,240,63,128,240,63,128,240,63,0,240,62,0,224,28, + 1,192,28,3,192,15,7,0,3,252,0,15,6,12,21,3, + 26,120,60,252,126,252,126,252,126,252,126,120,60,35,34,170, + 39,2,1,0,15,254,0,0,0,112,3,192,0,0,192,0, + 96,0,3,128,0,56,0,6,0,0,28,0,12,0,0,6, + 0,24,3,225,134,0,24,15,25,131,0,48,30,15,129,128, + 48,62,7,129,128,96,60,3,128,192,96,124,3,128,192,96, + 124,1,128,192,192,252,1,128,96,192,252,1,128,96,192,252, + 0,0,96,192,252,0,0,96,192,252,0,0,96,192,252,0, + 0,96,192,252,0,128,96,192,252,0,128,96,64,124,0,128, + 192,96,124,1,128,192,96,60,1,0,192,48,62,3,1,128, + 48,30,2,1,128,24,15,12,3,0,24,3,248,6,0,12, + 0,0,6,0,6,0,0,12,0,3,128,0,56,0,0,192, + 0,96,0,0,112,1,192,0,0,15,254,0,0,14,17,34, + 18,2,17,31,0,51,192,97,224,113,224,121,224,57,224,7, + 224,57,224,113,224,241,224,241,228,241,228,241,228,126,248,0, + 0,127,252,127,252,13,20,40,23,5,1,4,0,28,24,24, + 48,56,112,112,96,112,224,241,224,241,224,241,224,241,224,241, + 224,241,224,241,224,112,224,112,224,112,96,56,48,24,16,12, + 0,4,0,23,13,39,27,2,6,255,255,254,255,255,254,255, + 255,254,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 12,5,10,18,3,10,255,240,255,240,255,240,255,240,255,240, + 35,34,170,39,2,1,0,15,254,0,0,0,112,3,192,0, + 0,192,0,96,0,3,128,0,56,0,6,0,0,28,0,12, + 0,0,6,0,24,255,252,6,0,24,62,31,3,0,48,62, + 15,129,128,48,62,15,193,128,96,62,15,192,192,96,62,15, + 192,192,96,62,15,192,192,192,62,15,128,96,192,62,31,0, + 96,192,63,248,0,96,192,62,60,0,96,192,62,30,0,96, + 192,62,15,0,96,192,62,15,128,96,192,62,15,128,96,64, + 62,15,128,192,96,62,15,136,192,96,62,15,136,192,48,62, + 15,137,128,48,62,15,145,128,24,255,231,243,0,24,0,3, + 230,0,12,0,0,6,0,6,0,0,12,0,3,128,0,56, + 0,0,192,0,96,0,0,112,1,192,0,0,15,254,0,0, + 12,3,6,20,4,28,255,240,255,240,255,240,16,15,30,28, + 6,20,15,240,31,248,62,124,120,30,240,14,224,7,224,7, + 224,7,224,7,224,14,112,14,124,60,63,252,31,240,3,192, + 41,36,216,45,2,253,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,255,255,255,255,255,128, + 255,255,255,255,255,128,255,255,255,255,255,128,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,0,255,255,255,255,255,0,255,255,255,255,255,0,14,21, + 42,21,4,14,31,240,48,248,96,124,224,124,240,124,248,124, + 248,120,120,248,1,240,1,224,3,128,6,0,12,4,16,4, + 32,4,32,12,127,252,127,252,79,248,71,248,1,224,16,21, + 42,22,3,14,31,224,48,248,112,124,112,124,124,124,124,124, + 60,124,0,120,0,224,15,128,0,240,0,124,0,62,16,63, + 124,63,252,63,252,63,240,63,112,126,112,252,31,240,8,9, + 9,21,9,25,6,15,31,62,60,120,240,192,128,24,35,105, + 29,3,244,120,3,192,124,3,192,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,248,7, + 224,248,7,224,120,7,192,112,3,192,112,3,193,112,3,129, + 48,3,131,48,7,135,48,7,255,56,15,254,62,62,254,47, + 252,126,35,248,60,32,0,0,48,0,0,112,0,0,112,0, + 0,120,0,0,120,0,0,124,0,0,124,0,0,126,0,0, + 126,0,0,126,0,0,62,0,0,28,0,0,23,41,123,28, + 3,249,3,255,254,15,240,224,63,240,224,127,240,224,127,240, + 224,255,240,224,255,240,224,255,240,224,255,240,224,255,240,224, + 255,240,224,255,240,224,255,240,224,255,240,224,127,240,224,63, + 240,224,31,240,224,7,240,224,0,112,224,0,112,224,0,112, + 224,0,112,224,0,112,224,0,112,224,0,112,224,0,112,224, + 0,112,224,0,112,224,0,112,224,0,112,224,0,112,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,112, + 224,0,112,224,0,112,224,0,112,224,0,112,224,8,7,7, + 14,3,12,60,126,255,255,255,126,60,10,10,20,21,5,246, + 8,0,8,0,24,0,15,0,7,128,3,192,3,192,3,192, + 199,128,63,0,11,20,40,21,5,14,7,0,15,0,255,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 255,224,13,17,34,19,3,17,15,128,24,192,56,224,112,112, + 112,112,240,120,240,120,240,120,240,120,240,120,240,120,112,112, + 112,224,56,224,15,128,0,0,255,248,13,20,40,23,5,1, + 1,0,193,128,96,192,112,224,48,112,56,112,56,120,60,120, + 60,120,60,120,60,120,60,120,60,120,56,112,56,112,48,112, + 96,224,64,192,1,128,1,0,36,36,180,44,5,255,0,0, + 0,48,0,7,0,0,48,0,7,0,0,96,0,31,0,0, + 224,0,255,0,0,192,0,31,0,1,192,0,31,0,1,128, + 0,31,0,3,0,0,31,0,7,0,0,31,0,6,0,0, + 31,0,14,0,0,31,0,12,0,0,31,0,24,0,0,31, + 0,24,0,0,31,0,48,0,0,31,0,112,15,0,31,0, + 96,31,0,31,0,224,31,0,31,0,192,63,0,31,1,128, + 127,0,255,227,128,127,0,0,3,0,223,0,0,7,1,159, + 0,0,6,1,159,0,0,12,3,31,0,0,12,2,31,0, + 0,24,6,31,0,0,56,12,31,0,0,48,15,255,240,0, + 112,0,31,0,0,96,0,31,0,0,192,0,31,0,1,192, + 0,31,0,1,128,0,31,0,3,128,1,255,224,3,0,0, + 0,0,35,36,180,43,5,255,0,0,0,56,0,7,0,0, + 48,0,7,0,0,112,0,31,0,0,224,0,255,0,0,192, + 0,31,0,1,192,0,31,0,1,128,0,31,0,3,128,0, + 31,0,3,0,0,31,0,7,0,0,31,0,14,0,0,31, + 0,12,0,0,31,0,28,0,0,31,0,24,0,0,31,0, + 56,126,0,31,0,113,143,128,31,0,99,7,192,31,0,231, + 3,224,31,0,199,3,224,31,1,199,131,224,255,227,135,195, + 224,0,3,3,199,192,0,7,1,135,128,0,6,0,15,0, + 0,14,0,30,0,0,12,0,56,0,0,24,0,96,0,0, + 56,0,128,32,0,48,1,0,32,0,112,2,0,32,0,96, + 2,255,224,0,192,7,255,224,1,192,6,255,192,1,128,4, + 127,192,3,128,4,63,128,3,0,0,0,0,38,36,180,44, + 3,255,0,0,0,12,0,31,224,0,12,0,48,248,0,24, + 0,112,124,0,56,0,112,124,0,48,0,124,124,0,112,0, + 124,124,0,96,0,60,124,0,192,0,0,120,1,192,0,0, + 224,1,128,0,15,128,3,128,0,0,240,3,0,0,0,124, + 7,0,0,0,62,6,0,0,16,63,12,0,0,124,63,28, + 3,192,252,63,24,7,192,252,63,56,7,192,240,63,48,15, + 192,112,126,112,31,192,112,252,224,31,192,31,240,192,55,192, + 0,1,192,103,192,0,1,128,103,192,0,3,128,199,192,0, + 3,0,135,192,0,6,1,135,192,0,14,3,7,192,0,12, + 3,255,252,0,28,0,7,192,0,24,0,7,192,0,56,0, + 7,192,0,112,0,7,192,0,96,0,7,192,0,224,0,127, + 248,0,192,0,0,0,16,35,70,23,3,245,7,0,15,128, + 31,192,31,192,31,192,15,128,7,0,0,0,0,0,7,128, + 12,224,16,48,16,48,16,48,16,48,0,96,0,224,0,192, + 3,192,7,128,15,128,31,0,31,4,62,4,126,6,124,2, + 252,3,252,3,252,3,252,3,252,6,126,6,63,12,31,248, + 7,224,33,45,225,36,2,0,0,56,0,0,0,0,60,0, + 0,0,0,62,0,0,0,0,62,0,0,0,0,31,0,0, + 0,0,7,0,0,0,0,3,128,0,0,0,1,192,0,0, + 0,0,64,0,0,0,0,0,0,0,0,0,192,0,0,0, + 1,192,0,0,0,1,224,0,0,0,1,224,0,0,0,3, + 224,0,0,0,3,240,0,0,0,3,240,0,0,0,7,240, + 0,0,0,7,248,0,0,0,7,248,0,0,0,15,248,0, + 0,0,15,252,0,0,0,15,252,0,0,0,25,252,0,0, + 0,25,254,0,0,0,25,254,0,0,0,48,254,0,0,0, + 48,255,0,0,0,32,255,0,0,0,96,127,0,0,0,96, + 127,128,0,0,64,127,128,0,0,192,63,128,0,0,192,63, + 192,0,0,255,255,192,0,1,255,255,192,0,1,128,31,224, + 0,1,0,31,224,0,3,0,15,224,0,3,0,15,240,0, + 2,0,15,240,0,6,0,7,240,0,15,0,7,248,0,31, + 0,15,252,0,255,240,255,255,128,33,45,225,36,2,0,0, + 0,14,0,0,0,0,15,0,0,0,0,31,0,0,0,0, + 62,0,0,0,0,60,0,0,0,0,120,0,0,0,0,240, + 0,0,0,0,192,0,0,0,0,128,0,0,0,0,0,0, + 0,0,0,192,0,0,0,1,192,0,0,0,1,224,0,0, + 0,1,224,0,0,0,3,224,0,0,0,3,240,0,0,0, + 3,240,0,0,0,7,240,0,0,0,7,248,0,0,0,7, + 248,0,0,0,15,248,0,0,0,15,252,0,0,0,15,252, + 0,0,0,25,252,0,0,0,25,254,0,0,0,25,254,0, + 0,0,48,254,0,0,0,48,255,0,0,0,32,255,0,0, + 0,96,127,0,0,0,96,127,128,0,0,64,127,128,0,0, + 192,63,128,0,0,192,63,192,0,0,255,255,192,0,1,255, + 255,192,0,1,128,31,224,0,1,0,31,224,0,3,0,15, + 224,0,3,0,15,240,0,6,0,15,240,0,6,0,7,240, + 0,15,0,7,248,0,255,240,255,255,128,255,240,255,255,128, + 33,44,220,36,2,0,0,1,192,0,0,0,1,224,0,0, + 0,3,224,0,0,0,7,240,0,0,0,15,120,0,0,0, + 30,30,0,0,0,120,7,0,0,0,64,1,128,0,0,0, + 0,0,0,0,0,192,0,0,0,1,192,0,0,0,1,224, + 0,0,0,1,224,0,0,0,3,224,0,0,0,3,240,0, + 0,0,3,240,0,0,0,7,240,0,0,0,7,248,0,0, + 0,7,248,0,0,0,15,248,0,0,0,15,252,0,0,0, + 15,252,0,0,0,25,252,0,0,0,25,254,0,0,0,25, + 254,0,0,0,48,254,0,0,0,48,255,0,0,0,32,255, + 0,0,0,96,127,0,0,0,96,127,128,0,0,64,127,128, + 0,0,192,63,128,0,0,192,63,192,0,0,255,255,192,0, + 1,255,255,192,0,1,128,31,224,0,1,0,31,224,0,3, + 0,15,224,0,3,0,15,240,0,2,0,15,240,0,6,0, + 7,240,0,15,0,7,248,0,31,0,15,252,0,255,240,255, + 255,128,33,43,215,36,2,0,0,15,1,0,0,0,31,227, + 0,0,0,63,254,0,0,0,33,254,0,0,0,32,124,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,6,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,255,240,255,255,128,255,240,255,255,128,33, + 43,215,36,2,0,0,60,15,0,0,0,126,31,128,0,0, + 126,31,128,0,0,126,31,128,0,0,126,31,128,0,0,60, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,3,240,0,0,0,3,240,0,0, + 0,3,240,0,0,0,7,248,0,0,0,7,248,0,0,0, + 7,248,0,0,0,15,252,0,0,0,15,252,0,0,0,25, + 252,0,0,0,25,254,0,0,0,24,254,0,0,0,48,254, + 0,0,0,48,255,0,0,0,48,127,0,0,0,96,127,0, + 0,0,96,127,128,0,0,96,63,128,0,0,192,63,128,0, + 0,192,63,192,0,0,255,255,192,0,1,255,255,192,0,1, + 128,31,224,0,1,128,15,224,0,3,0,15,224,0,3,0, + 15,240,0,3,0,7,240,0,7,0,7,240,0,15,0,7, + 248,0,31,128,15,252,0,255,240,255,255,128,33,45,225,36, + 2,0,0,1,224,0,0,0,7,248,0,0,0,14,28,0, + 0,0,12,12,0,0,0,12,12,0,0,0,12,12,0,0, + 0,14,28,0,0,0,7,248,0,0,0,3,240,0,0,0, + 0,0,0,0,0,0,192,0,0,0,1,192,0,0,0,1, + 224,0,0,0,1,224,0,0,0,3,224,0,0,0,3,240, + 0,0,0,3,240,0,0,0,7,240,0,0,0,7,248,0, + 0,0,7,248,0,0,0,15,248,0,0,0,13,252,0,0, + 0,13,252,0,0,0,29,252,0,0,0,25,254,0,0,0, + 24,254,0,0,0,56,254,0,0,0,48,255,0,0,0,48, + 127,0,0,0,112,127,0,0,0,96,127,128,0,0,96,63, + 128,0,0,224,63,128,0,0,192,63,192,0,0,255,255,192, + 0,1,255,255,192,0,1,128,31,224,0,1,128,31,224,0, + 3,0,15,224,0,3,0,15,240,0,3,0,15,240,0,7, + 0,7,240,0,15,0,7,248,0,31,128,15,252,0,255,240, + 255,255,128,45,34,204,48,1,0,0,0,127,255,255,240,0, + 0,31,248,7,240,0,0,15,248,1,240,0,0,15,248,0, + 240,0,0,31,248,0,240,0,0,27,248,0,112,0,0,59, + 248,0,112,0,0,51,248,0,48,0,0,115,248,0,48,0, + 0,99,248,12,48,0,0,227,248,12,16,0,0,195,248,12, + 0,0,1,195,248,28,0,0,1,131,248,28,0,0,3,131, + 248,60,0,0,3,3,248,124,0,0,7,3,255,252,0,0, + 6,3,248,124,0,0,14,3,248,60,0,0,12,3,248,28, + 0,0,28,3,248,28,0,0,24,3,248,12,24,0,56,3, + 248,12,24,0,63,255,248,12,24,0,96,3,248,0,56,0, + 224,3,248,0,56,0,192,3,248,0,56,1,192,3,248,0, + 120,1,128,3,248,0,120,3,128,3,248,0,248,7,128,3, + 248,1,248,15,128,3,248,3,248,255,248,127,255,255,248,255, + 248,127,255,255,248,26,45,180,31,3,246,0,127,193,128,1, + 224,241,128,3,192,63,128,7,128,31,128,15,128,15,128,31, + 0,15,128,63,0,7,128,63,0,7,128,63,0,3,128,127, + 0,3,128,127,0,1,128,127,0,1,128,255,0,1,128,255, + 0,1,128,255,0,1,128,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,192,127,0,0,192,127,0,0,192,127,0,0,128,63, + 0,0,128,63,0,1,128,63,0,1,128,31,128,3,0,15, + 128,3,0,7,128,6,0,3,192,12,0,1,224,56,0,0, + 127,224,0,0,12,0,0,0,8,0,0,0,30,0,0,0, + 31,128,0,0,3,192,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,129,192,0,0,199,192,0,0,63,0,0,27, + 45,180,33,3,0,0,224,0,0,1,240,0,0,1,240,0, + 0,0,248,0,0,0,124,0,0,0,60,0,0,0,14,0, + 0,0,6,0,0,0,2,0,0,0,0,0,0,0,0,0, + 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, + 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, + 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, + 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, + 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, + 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, + 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, + 224,255,255,255,224,255,255,255,224,27,45,180,33,3,0,0, + 0,56,0,0,0,120,0,0,0,248,0,0,0,248,0,0, + 1,240,0,0,3,192,0,0,3,128,0,0,6,0,0,0, + 4,0,0,0,0,0,0,0,0,0,0,255,255,255,224,15, + 224,31,224,15,224,7,224,15,224,3,224,15,224,1,224,15, + 224,1,224,15,224,0,224,15,224,0,224,15,224,0,96,15, + 224,48,96,15,224,48,96,15,224,48,0,15,224,112,0,15, + 224,112,0,15,224,240,0,15,225,240,0,15,255,240,0,15, + 225,240,0,15,224,240,0,15,224,112,0,15,224,112,32,15, + 224,48,96,15,224,48,96,15,224,48,96,15,224,0,96,15, + 224,0,224,15,224,0,224,15,224,0,224,15,224,1,224,15, + 224,3,224,15,224,3,224,15,224,15,224,255,255,255,224,255, + 255,255,224,27,44,176,33,3,0,0,6,0,0,0,15,0, + 0,0,15,128,0,0,31,192,0,0,57,224,0,0,240,112, + 0,3,192,28,0,0,0,4,0,0,0,0,0,0,0,0, + 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, + 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, + 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, + 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, + 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, + 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, + 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, + 224,255,255,255,224,255,255,255,224,27,43,172,33,3,0,1, + 224,120,0,3,240,252,0,3,240,252,0,3,240,252,0,3, + 240,252,0,1,224,120,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,255,224,15,224,31,224,15,224,7,224,15, + 224,3,224,15,224,1,224,15,224,1,224,15,224,0,224,15, + 224,0,224,15,224,0,224,15,224,48,96,15,224,48,96,15, + 224,48,0,15,224,112,0,15,224,112,0,15,224,240,0,15, + 225,240,0,15,255,240,0,15,225,240,0,15,224,240,0,15, + 224,112,0,15,224,112,96,15,224,48,96,15,224,48,96,15, + 224,48,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,0,224,15,224,1,224,15,224,3,224,15,224,3,224,15, + 224,15,224,255,255,255,224,255,255,255,224,16,45,90,21,3, + 0,56,0,124,0,124,0,62,0,31,0,15,0,3,128,1, + 192,0,0,0,0,0,0,255,255,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,255,255,16,45,90,21,3, + 0,0,14,0,30,0,62,0,60,0,120,0,240,0,224,1, + 192,0,0,0,0,0,0,255,255,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,255,255,16,44,88,21,3, + 0,1,192,3,192,3,224,7,240,31,120,60,28,240,7,0, + 1,0,0,0,0,255,255,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,255,255,255,255,16,43,86,21,3,0,120, + 30,252,63,252,63,252,63,252,63,120,30,0,0,0,0,0, + 0,255,255,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,255,255,32,34,136,37,3,0,255,255,248,0,7, + 240,31,0,7,240,7,128,7,240,3,224,7,240,1,240,7, + 240,1,240,7,240,0,248,7,240,0,252,7,240,0,252,7, + 240,0,254,7,240,0,254,7,240,0,254,7,240,0,255,7, + 240,0,255,7,240,0,255,7,240,0,255,255,255,0,255,7, + 240,0,255,7,240,0,255,7,240,0,255,7,240,0,255,7, + 240,0,254,7,240,0,254,7,240,0,254,7,240,0,254,7, + 240,0,252,7,240,0,252,7,240,0,248,7,240,1,240,7, + 240,1,224,7,240,3,192,7,240,7,128,7,240,31,0,255, + 255,248,0,34,44,220,37,2,255,0,7,128,128,0,0,15, + 241,128,0,0,31,255,0,0,0,16,255,0,0,0,16,60, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,224,15,255,192,31,240,3,255,0, + 15,240,0,252,0,15,248,0,120,0,7,252,0,48,0,3, + 254,0,48,0,3,254,0,48,0,3,255,0,48,0,3,255, + 128,48,0,3,255,128,48,0,3,127,192,48,0,3,63,224, + 48,0,3,31,224,48,0,3,31,240,48,0,3,15,248,48, + 0,3,7,248,48,0,3,7,252,48,0,3,3,254,48,0, + 3,1,255,48,0,3,1,255,48,0,3,0,255,176,0,3, + 0,127,240,0,3,0,127,240,0,3,0,63,240,0,3,0, + 31,240,0,3,0,15,240,0,3,0,15,240,0,3,0,7, + 240,0,3,0,3,240,0,3,0,3,240,0,7,128,1,240, + 0,15,192,0,240,0,63,240,0,240,0,255,252,0,112,0, + 0,0,0,48,0,28,45,180,33,3,0,0,192,0,0,1, + 224,0,0,1,240,0,0,0,248,0,0,0,120,0,0,0, + 60,0,0,0,28,0,0,0,6,0,0,0,2,0,0,0, + 0,0,0,0,0,0,0,0,63,192,0,0,224,112,0,3, + 192,56,0,7,128,30,0,15,128,30,0,15,0,15,0,31, + 0,15,128,63,0,15,192,63,0,15,192,127,0,15,192,127, + 0,15,224,127,0,15,224,127,0,15,224,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,127,0,15,224,127, + 0,15,224,127,0,15,224,127,0,15,192,63,0,15,192,63, + 0,15,192,31,0,15,128,15,0,15,0,15,128,31,0,7, + 128,30,0,3,192,60,0,0,224,112,0,0,63,192,0,28, + 45,180,33,3,0,0,0,48,0,0,0,120,0,0,0,248, + 0,0,1,240,0,0,1,224,0,0,3,192,0,0,3,128, + 0,0,6,0,0,0,4,0,0,0,0,0,0,0,0,0, + 0,0,63,192,0,0,224,112,0,3,192,56,0,7,128,30, + 0,15,128,30,0,15,0,15,0,31,0,15,128,63,0,15, + 192,63,0,15,192,127,0,15,192,127,0,15,224,127,0,15, + 224,127,0,15,224,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,127,0,15,224,127,0,15,224,127,0,15, + 224,127,0,15,192,63,0,15,192,63,0,15,192,31,0,15, + 128,15,0,15,0,15,128,31,0,7,128,30,0,3,192,60, + 0,0,224,112,0,0,63,192,0,28,45,180,33,3,0,0, + 6,0,0,0,14,0,0,0,15,0,0,0,31,128,0,0, + 63,192,0,0,121,224,0,0,240,240,0,3,192,60,0,3, + 0,12,0,0,0,0,0,0,0,0,0,0,63,192,0,0, + 224,112,0,3,192,56,0,7,128,30,0,15,128,30,0,15, + 0,15,0,31,0,15,128,63,0,15,192,63,0,15,192,127, + 0,15,192,127,0,15,224,127,0,15,224,127,0,15,224,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,127, + 0,15,224,127,0,15,224,127,0,15,224,127,0,15,192,63, + 0,15,192,63,0,15,192,31,0,15,128,15,0,15,0,15, + 128,31,0,7,128,30,0,3,192,60,0,0,224,112,0,0, + 63,192,0,28,44,176,33,3,0,0,0,8,0,0,126,24, + 0,0,255,248,0,1,255,240,0,1,7,224,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,63,192,0,0,224,112,0,3,192,56,0,7,128,30, + 0,15,128,30,0,15,0,15,0,31,0,15,128,63,0,15, + 192,63,0,15,192,127,0,15,192,127,0,15,224,127,0,15, + 224,127,0,15,224,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,127,0,15,224,127,0,15,224,127,0,15, + 224,127,0,15,192,63,0,15,192,63,0,15,192,31,0,15, + 128,15,0,15,0,15,128,31,0,7,128,30,0,3,192,60, + 0,0,224,112,0,0,63,192,0,28,44,176,33,3,0,1, + 224,120,0,3,240,252,0,3,240,252,0,3,240,252,0,3, + 240,252,0,1,224,120,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,63,192,0,0,224,112,0,3, + 192,56,0,7,128,30,0,15,128,30,0,15,0,15,0,31, + 0,15,128,63,0,15,192,63,0,15,192,127,0,15,192,127, + 0,15,224,127,0,15,224,127,0,15,224,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,127,0,15,224,127, + 0,15,224,127,0,15,224,127,0,15,192,63,0,15,192,63, + 0,15,192,31,0,15,128,15,0,15,0,15,128,31,0,7, + 128,30,0,3,192,60,0,0,224,112,0,0,63,192,0,31, + 30,120,45,7,253,32,0,0,0,112,0,0,12,248,0,0, + 30,124,0,0,60,62,0,0,120,31,0,1,240,15,128,3, + 224,7,192,7,192,3,224,15,128,1,240,31,0,0,248,62, + 0,0,124,124,0,0,62,248,0,0,31,240,0,0,15,224, + 0,0,7,192,0,0,15,224,0,0,31,240,0,0,62,248, + 0,0,124,60,0,0,248,30,0,1,240,15,0,3,224,7, + 128,7,192,3,192,15,128,1,224,31,0,0,240,62,0,0, + 120,124,0,0,60,248,0,0,30,112,0,0,12,28,34,136, + 33,3,1,0,63,224,48,0,224,112,96,1,192,60,192,7, + 128,31,192,15,128,31,128,15,0,15,0,31,0,15,128,63, + 0,15,192,63,0,31,192,63,0,31,224,127,0,63,224,127, + 0,111,224,127,0,239,224,255,0,207,240,255,1,143,240,255, + 3,15,240,255,7,15,240,255,14,15,240,255,12,15,240,255, + 24,15,240,255,48,15,240,255,112,15,224,127,96,15,224,127, + 192,15,224,127,128,15,192,63,128,15,192,63,0,15,192,31, + 0,15,128,15,0,15,0,31,128,30,0,63,128,30,0,51, + 192,56,0,96,224,112,0,192,127,192,0,33,45,225,38,3, + 0,0,24,0,0,0,0,60,0,0,0,0,62,0,0,0, + 0,31,0,0,0,0,15,128,0,0,0,7,128,0,0,0, + 1,192,0,0,0,0,224,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,33,45,225,38,3,0,0,0,7,0,0,0,0,15, + 0,0,0,0,15,0,0,0,0,31,0,0,0,0,60,0, + 0,0,0,56,0,0,0,0,112,0,0,0,0,224,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,7,255,128,15,224,1,254,0,15,224,0,120,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,7,224,0,48,0,7,224,0,96,0,7,240,0,96,0, + 3,240,0,192,0,1,248,1,192,0,0,252,3,128,0,0, + 127,159,0,0,0,31,252,0,0,33,45,225,38,3,0,0, + 0,64,0,0,0,0,224,0,0,0,1,240,0,0,0,3, + 240,0,0,0,7,248,0,0,0,15,28,0,0,0,30,15, + 0,0,0,112,3,128,0,0,0,0,128,0,0,0,0,0, + 0,0,0,0,0,0,255,255,7,255,128,15,224,1,254,0, + 15,224,0,120,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,7,224,0,48,0,7,224,0, + 96,0,7,240,0,96,0,3,240,0,192,0,1,248,1,192, + 0,0,252,3,128,0,0,127,159,0,0,0,31,252,0,0, + 33,44,220,38,3,0,0,60,15,0,0,0,126,31,128,0, + 0,126,31,128,0,0,126,31,128,0,0,126,31,128,0,0, + 60,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,254,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,32,45,180,35,2,0,0,0,7,0,0,0,15,0, + 0,0,31,0,0,0,31,0,0,0,60,0,0,0,120,0, + 0,0,112,0,0,0,192,0,0,0,128,0,0,0,0,0, + 0,0,0,0,255,254,15,255,31,248,1,248,15,248,0,240, + 7,248,0,224,7,248,0,192,3,252,0,192,3,252,0,192, + 1,252,1,128,1,254,1,128,0,254,3,0,0,255,3,0, + 0,255,3,0,0,127,134,0,0,127,134,0,0,63,196,0, + 0,63,204,0,0,31,204,0,0,31,248,0,0,15,248,0, + 0,15,248,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,255,255,0,29,34,136,34, + 3,0,255,255,128,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,255,248,0,7,240, + 63,0,7,240,15,192,7,240,15,224,7,240,15,240,7,240, + 7,240,7,240,7,248,7,240,7,248,7,240,7,248,7,240, + 7,248,7,240,7,248,7,240,7,248,7,240,7,240,7,240, + 15,240,7,240,15,224,7,240,15,192,7,240,31,0,7,255, + 252,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,255,255,128,0,23,34,102,27,2,0, + 0,127,0,1,227,128,3,195,224,7,193,224,7,193,240,15, + 129,240,15,129,240,15,129,240,31,129,240,31,129,224,31,129, + 224,31,129,192,31,131,128,31,188,0,31,131,0,31,129,192, + 31,128,240,31,128,248,31,128,248,31,128,124,31,128,124,31, + 128,126,31,128,126,31,128,126,31,128,126,31,128,126,31,128, + 126,31,184,126,31,252,124,31,252,124,31,248,252,31,248,248, + 31,184,240,255,159,224,21,34,102,24,2,0,24,0,0,60, + 0,0,62,0,0,30,0,0,15,0,0,7,128,0,3,128, + 0,1,192,0,0,192,0,0,0,0,0,0,0,0,0,0, + 15,248,0,24,62,0,56,63,0,120,31,0,124,31,128,126, + 31,128,126,31,128,60,31,128,0,127,128,3,223,128,15,31, + 128,30,31,128,62,31,128,124,31,128,252,31,128,252,31,128, + 252,31,136,252,31,136,252,31,152,254,63,144,127,127,240,63, + 143,224,21,34,102,24,2,0,0,12,0,0,30,0,0,62, + 0,0,62,0,0,124,0,0,120,0,0,224,0,0,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,15,248,0,24, + 62,0,56,63,0,120,31,0,124,31,128,126,31,128,126,31, + 128,62,31,128,8,63,128,1,255,128,7,159,128,30,31,128, + 62,31,128,124,31,128,124,31,128,252,31,128,252,31,136,252, + 31,136,252,31,152,254,63,144,127,127,240,63,143,224,21,34, + 102,24,2,0,1,192,0,1,224,0,3,224,0,3,224,0, + 7,240,0,7,56,0,14,28,0,28,14,0,48,7,0,0, + 0,0,0,0,0,0,0,0,15,248,0,24,62,0,56,63, + 0,120,31,0,124,31,128,126,31,128,126,31,128,62,31,128, + 8,63,128,1,255,128,7,159,128,30,31,128,62,31,128,124, + 31,128,124,31,128,252,31,128,252,31,136,252,31,136,252,31, + 152,254,63,144,127,127,240,63,143,224,21,32,96,24,2,0, + 15,3,0,31,195,0,63,254,0,49,252,0,32,120,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248, + 0,24,62,0,56,63,0,120,31,0,124,31,128,126,31,128, + 126,31,128,62,31,128,8,63,128,1,255,128,7,159,128,30, + 31,128,62,31,128,124,31,128,124,31,128,252,31,128,252,31, + 136,252,31,136,252,31,152,254,63,144,127,127,240,63,143,224, + 21,32,96,24,2,0,60,30,0,126,63,0,126,63,0,126, + 63,0,126,63,0,60,30,0,0,0,0,0,0,0,0,0, + 0,0,0,0,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,21,34,102,24,2,1,3,240,0,7, + 248,0,14,28,0,12,12,0,12,12,0,12,12,0,14,28, + 0,7,248,0,1,224,0,0,0,0,0,0,0,0,0,0, + 15,248,0,24,62,0,56,63,0,120,31,0,124,31,128,126, + 31,128,126,31,128,62,31,128,8,63,128,1,255,128,7,31, + 128,30,31,128,62,31,128,124,31,128,124,31,128,252,31,128, + 252,31,136,252,31,136,252,31,152,254,63,144,127,111,240,63, + 199,224,29,22,88,34,2,1,15,240,255,128,24,63,195,192, + 56,63,195,224,120,31,131,240,124,31,129,240,126,31,129,240, + 126,31,129,248,62,31,129,248,0,63,129,248,1,255,129,248, + 7,31,255,248,30,31,128,0,62,31,128,0,124,31,128,0, + 124,31,128,8,252,31,128,8,252,31,128,24,252,31,192,16, + 252,31,192,16,254,51,192,32,127,97,240,64,63,192,255,128, + 18,32,96,22,2,247,3,252,0,15,6,0,31,7,0,62, + 7,128,62,7,128,126,15,128,124,31,128,252,31,128,252,31, + 0,252,14,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,124,0,64,124,0,192,62,0,128,62,1,128,30, + 1,0,15,130,0,3,252,0,0,128,0,0,128,0,1,128, + 0,0,240,0,0,56,0,0,60,0,0,60,0,0,60,0, + 4,120,0,3,240,0,18,34,102,23,2,0,28,0,0,30, + 0,0,30,0,0,31,0,0,15,128,0,7,128,0,3,192, + 0,0,192,0,0,96,0,0,0,0,0,0,0,0,0,0, + 3,252,0,14,30,0,30,31,0,62,15,128,60,15,128,124, + 15,128,124,15,192,252,15,192,252,15,192,252,15,192,255,255, + 192,252,0,0,252,0,0,252,0,0,252,0,64,124,0,64, + 124,0,192,62,0,192,62,1,128,31,1,0,15,135,0,3, + 252,0,18,34,102,23,2,0,0,14,0,0,31,0,0,31, + 0,0,62,0,0,60,0,0,120,0,0,240,0,0,224,0, + 1,128,0,0,0,0,0,0,0,0,0,0,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,23,2,0,1,224,0,1,224,0,1,240,0,3,240,0, + 3,248,0,7,56,0,14,28,0,28,14,0,56,3,0,0, + 0,0,0,0,0,0,0,0,3,252,0,14,30,0,30,31, + 0,62,15,128,60,15,128,124,15,128,124,15,192,252,15,192, + 252,15,192,252,15,192,255,255,192,252,0,0,252,0,0,252, + 0,0,252,0,64,124,0,64,124,0,192,62,0,192,62,0, + 128,31,1,0,15,131,0,3,252,0,18,32,96,23,2,0, + 30,15,0,63,31,128,63,31,128,63,31,128,63,31,128,30, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,3,252, + 0,14,30,0,30,31,0,62,15,128,60,15,128,124,15,128, + 124,15,192,252,15,192,252,15,192,252,15,192,255,255,192,252, + 0,0,252,0,0,252,0,0,252,0,64,124,0,64,124,0, + 192,62,0,192,62,0,128,31,1,0,15,131,0,3,252,0, + 12,34,68,15,1,0,96,0,240,0,248,0,248,0,124,0, + 28,0,14,0,7,0,3,0,0,0,0,0,0,0,127,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,127,240,12,34,68,15,2,0, + 0,224,1,240,1,240,3,224,7,192,7,128,15,0,28,0, + 24,0,0,0,0,0,0,0,255,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,255,224,14,34,68,14,0,0,7,128,15,128,15,128, + 15,192,31,224,60,224,56,112,112,60,192,12,0,0,0,0, + 0,0,63,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,63,248,14,32, + 64,14,1,0,120,120,252,252,252,252,252,252,252,252,120,120, + 0,0,0,0,0,0,0,0,63,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,63,248,20,34,102,24,2,0,15,193,128,15,227,0, + 7,254,0,3,248,0,1,248,0,1,252,0,3,254,0,14, + 126,0,24,63,0,0,63,128,0,31,128,0,15,192,7,255, + 192,15,15,224,30,7,224,62,7,224,62,7,224,124,7,240, + 124,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,124,3,224,124,7, + 224,62,7,192,62,7,192,30,7,128,15,15,0,3,252,0, + 23,32,96,27,2,0,3,224,96,7,248,64,15,255,192,12, + 127,128,8,15,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,31,192,63,35,224,63,65,240,63,65,248, + 63,129,248,63,129,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,63,1, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,255,199,254,20,34,102,24,2,0,14,0,0,31, + 0,0,31,0,0,15,128,0,7,192,0,3,192,0,1,224, + 0,0,96,0,0,48,0,0,0,0,0,0,0,0,0,0, + 3,252,0,15,15,0,30,7,128,62,7,192,62,7,192,124, + 3,224,124,3,224,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,124,3,224, + 124,3,224,62,7,192,62,7,192,30,7,128,15,15,0,3, + 252,0,20,34,102,24,2,0,0,7,0,0,15,128,0,15, + 128,0,31,0,0,62,0,0,60,0,0,120,0,0,224,0, + 0,192,0,0,0,0,0,0,0,0,0,0,3,252,0,15, + 15,0,30,7,128,62,7,192,62,7,192,124,3,224,124,3, + 224,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,252,3,240,124,3,224,124,3,224,62, + 7,192,62,7,192,30,7,128,15,15,0,3,252,0,20,34, + 102,24,2,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,252,0,3,156,0,7,14,0,14,7,0,24,1,128,0, + 0,0,0,0,0,0,0,0,3,252,0,15,15,0,30,7, + 128,62,7,192,62,7,192,124,3,224,124,3,224,252,3,240, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,224,124,3,224,62,7,192,62,7, + 192,30,7,128,15,15,0,3,252,0,20,32,96,24,2,0, + 7,192,128,15,240,128,31,255,128,16,255,0,16,62,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,252, + 0,15,15,0,30,7,128,62,7,192,62,7,192,124,3,224, + 124,3,224,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,124,3,224,124,3, + 224,62,7,192,62,7,192,30,7,128,15,15,0,3,252,0, + 20,32,96,24,2,0,30,15,0,63,31,128,63,31,128,63, + 31,128,63,31,128,30,15,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,252,0,15,15,0,30,7,128,62,7,192, + 62,7,192,124,3,224,124,3,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,124,3,224,124,3,224,62,7,192,62,7,192,30,7,128, + 15,15,0,3,252,0,41,32,192,45,2,253,0,0,28,0, + 0,0,0,0,62,0,0,0,0,0,127,0,0,0,0,0, + 127,0,0,0,0,0,127,0,0,0,0,0,62,0,0,0, + 0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,28,0,0,0,0,0,62,0,0,0,0,0, + 127,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0, + 0,0,62,0,0,0,0,0,28,0,0,0,20,22,66,24, + 2,1,3,252,48,15,15,96,30,15,192,62,7,192,62,7, + 192,124,7,224,124,7,224,252,15,240,252,27,240,252,51,240, + 252,115,240,252,227,240,252,195,240,253,131,240,255,3,240,126, + 3,224,126,3,224,62,7,192,62,7,192,63,7,128,111,15, + 0,195,252,0,24,34,102,26,1,0,7,0,0,7,128,0, + 7,192,0,7,192,0,3,224,0,1,224,0,0,112,0,0, + 48,0,0,24,0,0,0,0,0,0,0,0,0,0,255,143, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,131, + 248,31,131,248,31,133,248,15,133,248,15,201,248,7,241,255, + 24,34,102,26,1,0,0,3,128,0,3,128,0,7,128,0, + 15,128,0,15,0,0,30,0,0,28,0,0,56,0,0,48, + 0,0,0,0,0,0,0,0,0,0,255,143,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,131,248,31,131,248, + 31,133,248,15,133,248,15,201,248,7,241,255,24,34,102,26, + 1,0,0,56,0,0,120,0,0,124,0,0,252,0,0,254, + 0,1,206,0,3,135,0,7,3,128,14,0,192,0,0,0, + 0,0,0,0,0,0,255,143,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,131,248,31,131,248,31,133,248,15, + 133,248,15,201,248,7,241,255,24,32,96,26,1,0,7,131, + 192,15,199,224,15,199,224,15,199,224,15,199,224,7,131,192, + 0,0,0,0,0,0,0,0,0,0,0,0,255,135,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,131,248,31, + 131,248,31,133,248,15,133,248,15,201,248,7,241,255,23,45, + 135,25,1,245,0,1,192,0,1,224,0,3,224,0,7,192, + 0,7,128,0,15,0,0,14,0,0,28,0,0,24,0,0, + 0,0,0,0,0,0,0,0,255,241,254,63,192,120,31,128, + 48,15,192,32,15,192,32,15,192,96,7,224,64,7,224,64, + 3,240,192,3,240,128,1,248,128,1,249,128,0,249,0,0, + 253,0,0,253,0,0,126,0,0,126,0,0,62,0,0,60, + 0,0,28,0,0,28,0,0,12,0,0,8,0,0,8,0, + 0,8,0,15,16,0,31,16,0,63,144,0,63,32,0,62, + 32,0,62,64,0,31,192,0,15,0,0,22,44,132,25,1, + 244,3,128,0,15,128,0,63,128,0,255,128,0,223,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 135,240,31,159,248,31,177,248,31,160,252,31,192,252,31,192, + 252,31,192,252,31,128,252,31,128,252,31,128,248,31,129,248, + 31,129,240,31,129,240,31,129,224,31,131,192,31,131,128,31, + 135,128,31,134,0,31,140,0,31,152,0,31,224,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,30,0,0,120,0,0,224, + 0,0,128,0,0,23,44,132,25,1,245,3,193,224,7,227, + 240,7,227,240,7,227,240,7,227,240,3,193,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,241,254,63, + 192,120,31,128,48,15,192,32,15,192,32,15,192,96,7,224, + 64,7,224,64,3,240,192,3,240,128,1,240,128,1,249,128, + 0,249,0,0,253,0,0,253,0,0,126,0,0,126,0,0, + 62,0,0,60,0,0,28,0,0,28,0,0,12,0,0,8, + 0,0,8,0,0,8,0,15,16,0,31,16,0,63,144,0, + 63,32,0,62,32,0,62,64,0,31,192,0,15,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 34 + Calculated Max Values w=41 h=44 x= 6 y=13 dx=45 dy= 0 ascent=35 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =34 descent= 0 + X Font ascent =34 descent= 0 + Max Font ascent =35 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35n[1539] U8G_SECTION(".progmem.u8g_font_osb35n") = { + 0,133,60,215,242,34,0,0,0,0,42,57,0,35,247,34, + 0,17,19,57,24,4,13,1,128,0,3,192,0,3,192,0, + 227,195,0,241,135,128,248,143,128,252,159,128,126,191,0,3, + 192,0,3,192,0,126,191,0,252,159,128,248,143,128,241,135, + 128,225,195,0,3,192,0,3,192,0,3,192,0,1,128,0, + 41,41,246,45,2,249,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,255,255,255,255,255,128,255,255, + 255,255,255,128,255,255,255,255,255,128,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,9,15,30,13, + 2,248,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,2,0,6,0,28,0,56,0,96,0, + 12,5,10,18,3,10,255,240,255,240,255,240,255,240,255,240, + 8,6,6,14,3,1,126,255,255,255,255,126,16,44,88,22, + 3,247,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,1,224,1,192,1,192,3,192,3,128, + 3,128,7,128,7,0,7,0,15,0,14,0,14,0,14,0, + 30,0,28,0,28,0,60,0,56,0,56,0,120,0,112,0, + 112,0,240,0,224,0,224,0,224,0,23,35,105,28,2,0, + 0,16,0,0,254,0,3,199,128,7,131,192,15,1,224,15, + 1,224,31,1,240,63,1,248,63,1,248,127,1,248,127,1, + 252,127,1,252,127,1,252,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,255,1,254,127,1,252,127,1,252,127,1,252,127,1, + 252,63,1,248,63,1,248,31,1,240,15,1,224,15,1,224, + 7,131,192,3,199,128,0,254,0,16,34,68,28,6,0,0, + 240,0,240,1,240,7,240,255,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,255, + 255,255,255,21,34,102,28,3,1,7,255,0,14,15,192,28, + 7,224,56,7,240,120,3,240,120,3,248,248,3,248,252,3, + 248,255,3,248,255,3,248,255,7,248,127,7,240,63,15,240, + 12,15,224,0,31,192,0,63,128,0,127,0,0,252,0,1, + 240,0,3,192,0,7,128,0,14,0,24,12,0,24,24,0, + 24,48,0,24,96,0,24,111,192,56,127,255,248,255,255,240, + 239,255,240,195,255,240,193,255,224,192,255,192,192,63,128,22, + 34,102,28,3,1,7,255,0,14,15,192,28,7,224,56,7, + 240,120,3,240,124,3,248,126,3,248,127,3,248,127,3,248, + 127,3,248,63,3,240,30,3,240,0,7,224,0,7,192,0, + 15,0,7,248,0,0,31,128,0,15,192,0,7,224,0,7, + 240,0,3,248,0,3,248,62,3,252,127,3,252,255,3,252, + 255,3,252,255,3,252,254,3,252,252,3,248,248,7,248,120, + 7,240,56,15,224,30,31,192,15,255,0,23,34,102,28,2, + 0,0,7,192,0,15,192,0,15,192,0,31,192,0,63,192, + 0,63,192,0,127,192,0,127,192,0,255,192,0,223,192,1, + 223,192,1,159,192,3,159,192,7,31,192,6,31,192,14,31, + 192,12,31,192,28,31,192,24,31,192,56,31,192,112,31,192, + 96,31,192,224,31,192,255,255,254,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,0,31, + 192,7,255,252,7,255,252,21,34,102,28,4,0,32,0,192, + 60,7,128,63,255,128,63,255,0,63,254,0,63,248,0,63, + 224,0,63,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,49,252,0,54,63,0,60,15,192,56,15,224, + 48,15,224,32,7,240,0,7,240,0,7,248,0,7,248,8, + 7,248,62,7,248,126,7,248,254,7,248,254,7,248,254,7, + 240,248,7,240,240,7,224,112,15,192,48,15,192,28,31,0, + 15,252,0,22,34,102,28,3,1,0,255,128,3,192,192,7, + 192,96,15,128,240,31,131,240,31,7,240,63,15,240,63,15, + 240,127,15,224,127,7,192,127,3,0,127,0,0,255,0,0, + 255,0,0,255,63,0,255,255,192,255,195,224,255,131,240,255, + 3,248,255,1,248,255,1,252,255,1,252,255,1,252,127,1, + 252,127,1,252,127,1,252,127,1,252,63,1,248,63,1,248, + 31,1,248,15,129,240,7,131,224,3,195,192,1,255,0,20, + 34,102,28,5,1,71,224,224,207,240,224,223,248,112,255,252, + 48,255,254,48,255,255,240,255,255,240,224,31,176,192,0,32, + 192,0,96,128,0,96,128,0,192,128,1,192,0,1,128,0, + 3,128,0,7,0,0,15,0,0,14,0,0,30,0,0,60, + 0,0,124,0,0,252,0,1,252,0,1,248,0,3,248,0, + 3,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,7,248,0,3,248,0,3,240,0,23,34,102,28,3, + 1,1,255,128,7,0,192,12,0,96,28,0,48,56,0,24, + 56,0,24,120,0,24,120,0,24,124,0,24,126,0,24,127, + 0,48,127,192,32,127,240,96,63,255,128,63,255,0,31,255, + 192,15,255,240,7,255,248,15,255,248,24,63,252,48,15,252, + 112,3,254,96,0,254,224,0,126,224,0,62,224,0,30,224, + 0,30,224,0,12,240,0,28,112,0,24,56,0,24,28,0, + 48,15,0,192,3,255,0,22,34,102,28,3,1,3,254,0, + 15,15,0,31,7,128,62,7,192,126,3,224,126,3,240,126, + 3,240,254,3,248,254,3,248,254,3,248,254,3,248,254,3, + 252,254,3,252,254,3,252,126,3,252,127,7,252,63,7,252, + 31,15,252,15,255,252,3,243,252,0,3,252,0,3,252,0, + 3,248,7,3,248,31,131,248,31,195,248,63,195,240,63,195, + 240,63,131,224,62,7,224,60,7,192,28,15,128,14,31,0, + 7,252,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 6 y=25 dx=52 dy= 0 ascent=38 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =35 descent=-10 + Max Font ascent =38 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35r[10245] U8G_SECTION(".progmem.u8g_font_osb35r") = { + 0,133,60,215,242,35,12,218,29,222,32,127,246,38,245,35, + 246,0,0,0,13,0,0,8,34,34,14,3,1,126,126,255, + 255,255,255,255,255,126,126,126,126,60,60,60,60,60,24,24, + 24,24,24,24,24,24,0,0,0,126,255,255,255,255,126,12, + 12,24,18,3,23,32,64,241,224,249,240,249,240,249,240,249, + 240,249,240,112,224,112,224,112,224,112,224,112,224,28,34,136, + 34,3,0,0,112,14,0,0,112,14,0,0,112,14,0,0, + 112,14,0,0,240,30,0,0,224,28,0,0,224,28,0,0, + 224,28,0,0,224,28,0,255,255,255,240,255,255,255,240,255, + 255,255,240,1,192,56,0,1,192,56,0,1,192,56,0,1, + 192,56,0,3,192,56,0,3,128,120,0,3,128,112,0,3, + 128,112,0,3,128,112,0,3,128,112,0,255,255,255,224,255, + 255,255,224,255,255,255,224,7,0,224,0,7,0,224,0,7, + 0,224,0,7,0,224,0,15,1,224,0,14,1,224,0,14, + 1,192,0,14,1,192,0,14,1,192,0,23,42,126,28,2, + 252,0,195,0,0,195,0,0,195,0,0,195,0,3,255,192, + 7,195,112,28,195,24,60,195,12,56,195,14,120,195,14,120, + 195,30,120,195,62,124,195,126,126,195,126,127,195,124,127,195, + 56,63,243,0,63,251,0,31,255,0,31,255,128,7,255,192, + 3,255,240,0,255,248,0,255,248,0,223,252,0,199,252,124, + 195,254,124,195,254,252,195,126,252,195,62,248,195,30,240,195, + 30,224,195,28,96,195,28,112,195,56,56,195,56,28,195,96, + 7,255,192,0,195,0,0,195,0,0,195,0,0,195,0,33, + 35,175,41,4,0,0,0,0,48,0,15,192,0,96,0,60, + 240,0,224,0,56,112,0,192,0,120,120,1,128,0,120,120, + 1,128,0,248,124,3,0,0,248,124,7,0,0,248,124,6, + 0,0,248,124,14,0,0,248,124,12,0,0,248,124,24,0, + 0,120,120,24,0,0,120,120,48,0,0,56,240,112,0,0, + 28,224,96,0,0,15,192,192,0,0,0,0,192,0,0,0, + 1,128,240,0,0,3,131,156,0,0,3,7,158,0,0,7, + 15,15,0,0,6,15,15,0,0,12,31,15,128,0,12,31, + 15,128,0,24,31,15,128,0,56,31,15,128,0,48,31,15, + 128,0,96,31,15,128,0,96,31,15,128,0,192,15,15,0, + 1,192,15,15,0,1,128,7,14,0,3,128,7,158,0,3, + 0,1,248,0,33,34,170,37,2,1,0,31,224,0,0,0, + 112,112,0,0,0,224,48,0,0,0,224,24,0,0,1,224, + 24,0,0,1,224,24,0,0,1,224,24,0,0,1,240,56, + 0,0,1,240,48,0,0,1,248,96,0,0,1,248,192,0, + 0,0,255,128,0,0,0,255,0,0,0,0,126,0,0,0, + 0,63,0,0,0,0,255,129,255,128,1,223,128,62,0,3, + 143,192,28,0,7,15,224,24,0,14,7,224,56,0,30,3, + 240,48,0,60,1,248,48,0,124,1,248,96,0,124,0,252, + 96,0,252,0,126,192,0,252,0,127,128,0,252,0,63,128, + 0,254,0,31,128,0,255,0,31,128,0,255,0,15,193,128, + 127,192,63,225,0,63,248,247,243,0,31,255,195,254,0,15, + 254,0,252,0,5,12,12,11,3,23,32,240,248,248,248,248, + 248,112,112,112,112,112,14,43,86,18,3,248,0,28,0,56, + 0,112,0,224,1,192,3,128,7,0,15,0,14,0,30,0, + 30,0,60,0,60,0,124,0,124,0,124,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 124,0,124,0,124,0,124,0,60,0,60,0,30,0,30,0, + 14,0,15,0,7,0,3,128,1,192,0,224,0,112,0,56, + 0,12,13,43,86,17,1,248,192,0,224,0,48,0,24,0, + 28,0,14,0,7,0,7,128,3,128,3,192,1,224,1,224, + 1,224,1,240,1,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 1,240,1,240,1,224,1,224,3,192,3,192,3,128,7,128, + 7,0,14,0,28,0,56,0,112,0,224,0,128,0,17,19, + 57,24,4,13,1,128,0,3,192,0,3,192,0,227,195,0, + 241,135,128,248,143,128,252,159,128,126,191,0,3,192,0,3, + 192,0,126,191,0,252,159,128,248,143,128,241,135,128,225,195, + 0,3,192,0,3,192,0,3,192,0,1,128,0,41,41,246, + 45,2,249,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,255,255,255,255,255,128,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,9,15,30,13,2,248,126, + 0,255,0,255,128,255,128,255,128,127,128,1,128,1,128,1, + 128,3,0,2,0,6,0,28,0,56,0,96,0,12,5,10, + 18,3,10,255,240,255,240,255,240,255,240,255,240,8,6,6, + 14,3,1,126,255,255,255,255,126,16,44,88,22,3,247,0, + 7,0,15,0,14,0,14,0,14,0,30,0,28,0,28,0, + 60,0,56,0,56,0,120,0,112,0,112,0,240,0,224,0, + 224,0,224,1,224,1,192,1,192,3,192,3,128,3,128,7, + 128,7,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,0,23,35,105,28,2,0,0,16,0, + 0,254,0,3,199,128,7,131,192,15,1,224,15,1,224,31, + 1,240,63,1,248,63,1,248,127,1,248,127,1,252,127,1, + 252,127,1,252,255,1,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,127,1,252,127,1,252,127,1,252,127,1,252,63,1, + 248,63,1,248,31,1,240,15,1,224,15,1,224,7,131,192, + 3,199,128,0,254,0,16,34,68,28,6,0,0,240,0,240, + 1,240,7,240,255,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,255,255,255,255, + 21,34,102,28,3,1,7,255,0,14,15,192,28,7,224,56, + 7,240,120,3,240,120,3,248,248,3,248,252,3,248,255,3, + 248,255,3,248,255,7,248,127,7,240,63,15,240,12,15,224, + 0,31,192,0,63,128,0,127,0,0,252,0,1,240,0,3, + 192,0,7,128,0,14,0,24,12,0,24,24,0,24,48,0, + 24,96,0,24,111,192,56,127,255,248,255,255,240,239,255,240, + 195,255,240,193,255,224,192,255,192,192,63,128,22,34,102,28, + 3,1,7,255,0,14,15,192,28,7,224,56,7,240,120,3, + 240,124,3,248,126,3,248,127,3,248,127,3,248,127,3,248, + 63,3,240,30,3,240,0,7,224,0,7,192,0,15,0,7, + 248,0,0,31,128,0,15,192,0,7,224,0,7,240,0,3, + 248,0,3,248,62,3,252,127,3,252,255,3,252,255,3,252, + 255,3,252,254,3,252,252,3,248,248,7,248,120,7,240,56, + 15,224,30,31,192,15,255,0,23,34,102,28,2,0,0,7, + 192,0,15,192,0,15,192,0,31,192,0,63,192,0,63,192, + 0,127,192,0,127,192,0,255,192,0,223,192,1,223,192,1, + 159,192,3,159,192,7,31,192,6,31,192,14,31,192,12,31, + 192,28,31,192,24,31,192,56,31,192,112,31,192,96,31,192, + 224,31,192,255,255,254,0,31,192,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,7,255, + 252,7,255,252,21,34,102,28,4,0,32,0,192,60,7,128, + 63,255,128,63,255,0,63,254,0,63,248,0,63,224,0,63, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,49,252,0,54,63,0,60,15,192,56,15,224,48,15,224, + 32,7,240,0,7,240,0,7,248,0,7,248,8,7,248,62, + 7,248,126,7,248,254,7,248,254,7,248,254,7,240,248,7, + 240,240,7,224,112,15,192,48,15,192,28,31,0,15,252,0, + 22,34,102,28,3,1,0,255,128,3,192,192,7,192,96,15, + 128,240,31,131,240,31,7,240,63,15,240,63,15,240,127,15, + 224,127,7,192,127,3,0,127,0,0,255,0,0,255,0,0, + 255,63,0,255,255,192,255,195,224,255,131,240,255,3,248,255, + 1,248,255,1,252,255,1,252,255,1,252,127,1,252,127,1, + 252,127,1,252,127,1,252,63,1,248,63,1,248,31,1,248, + 15,129,240,7,131,224,3,195,192,1,255,0,20,34,102,28, + 5,1,71,224,224,207,240,224,223,248,112,255,252,48,255,254, + 48,255,255,240,255,255,240,224,31,176,192,0,32,192,0,96, + 128,0,96,128,0,192,128,1,192,0,1,128,0,3,128,0, + 7,0,0,15,0,0,14,0,0,30,0,0,60,0,0,124, + 0,0,252,0,1,252,0,1,248,0,3,248,0,3,248,0, + 7,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,248,0,3,240,0,23,34,102,28,3,1,1,255, + 128,7,0,192,12,0,96,28,0,48,56,0,24,56,0,24, + 120,0,24,120,0,24,124,0,24,126,0,24,127,0,48,127, + 192,32,127,240,96,63,255,128,63,255,0,31,255,192,15,255, + 240,7,255,248,15,255,248,24,63,252,48,15,252,112,3,254, + 96,0,254,224,0,126,224,0,62,224,0,30,224,0,30,224, + 0,12,240,0,28,112,0,24,56,0,24,28,0,48,15,0, + 192,3,255,0,22,34,102,28,3,1,3,254,0,15,15,0, + 31,7,128,62,7,192,126,3,224,126,3,240,126,3,240,254, + 3,248,254,3,248,254,3,248,254,3,248,254,3,252,254,3, + 252,254,3,252,126,3,252,127,7,252,63,7,252,31,15,252, + 15,255,252,3,243,252,0,3,252,0,3,252,0,3,248,7, + 3,248,31,131,248,31,195,248,63,195,240,63,195,240,63,131, + 224,62,7,224,60,7,192,28,15,128,14,31,0,7,252,0, + 8,22,22,14,3,1,126,255,255,255,255,126,0,0,0,0, + 0,0,0,0,0,0,126,255,255,255,255,126,9,31,62,13, + 2,248,63,0,127,128,127,128,127,128,127,128,63,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,3,0,6,0,28,0,56,0,96,0, + 37,40,200,45,4,249,0,0,0,0,48,0,0,0,0,240, + 0,0,0,1,248,0,0,0,7,224,0,0,0,31,128,0, + 0,0,126,0,0,0,1,252,0,0,0,7,240,0,0,0, + 15,192,0,0,0,63,0,0,0,0,252,0,0,0,3,240, + 0,0,0,15,224,0,0,0,63,128,0,0,0,126,0,0, + 0,1,248,0,0,0,7,224,0,0,0,31,128,0,0,0, + 127,0,0,0,0,252,0,0,0,0,248,0,0,0,0,126, + 0,0,0,0,31,128,0,0,0,15,224,0,0,0,3,248, + 0,0,0,0,252,0,0,0,0,63,0,0,0,0,15,192, + 0,0,0,3,240,0,0,0,1,252,0,0,0,0,127,0, + 0,0,0,31,192,0,0,0,7,224,0,0,0,1,248,0, + 0,0,0,126,0,0,0,0,63,128,0,0,0,15,224,0, + 0,0,3,248,0,0,0,0,248,0,0,0,0,48,41,13, + 78,45,2,6,255,255,255,255,255,128,255,255,255,255,255,128, + 255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,37,40,200,45,4,249,96,0,0,0,0,120,0,0, + 0,0,252,0,0,0,0,63,0,0,0,0,15,192,0,0, + 0,3,240,0,0,0,1,252,0,0,0,0,127,0,0,0, + 0,31,128,0,0,0,7,224,0,0,0,1,248,0,0,0, + 0,126,0,0,0,0,63,128,0,0,0,15,224,0,0,0, + 3,240,0,0,0,0,252,0,0,0,0,63,0,0,0,0, + 15,192,0,0,0,7,240,0,0,0,1,248,0,0,0,0, + 248,0,0,0,3,240,0,0,0,15,192,0,0,0,63,128, + 0,0,0,254,0,0,0,1,248,0,0,0,7,224,0,0, + 0,31,128,0,0,0,126,0,0,0,1,252,0,0,0,7, + 240,0,0,0,31,192,0,0,0,63,0,0,0,0,252,0, + 0,0,3,240,0,0,0,15,224,0,0,0,63,128,0,0, + 0,254,0,0,0,0,248,0,0,0,0,96,0,0,0,0, + 15,34,68,22,3,1,31,240,59,248,96,252,96,252,192,126, + 192,126,192,126,192,126,192,126,64,252,96,252,48,248,1,240, + 1,224,3,192,3,128,7,0,7,0,14,0,12,16,12,16, + 12,16,12,16,6,32,3,192,0,0,0,0,0,128,3,224, + 7,240,7,240,7,240,7,240,3,224,35,34,170,39,2,1, + 0,15,255,0,0,0,56,1,224,0,0,224,0,112,0,1, + 128,0,28,0,7,0,0,14,0,14,0,0,7,0,12,0, + 248,3,0,28,3,205,243,128,56,7,135,241,128,56,15,7, + 225,192,112,31,7,225,192,112,62,7,224,224,112,62,7,224, + 224,224,124,7,192,224,224,124,7,192,224,224,124,7,192,224, + 224,252,15,192,224,224,248,15,128,224,224,248,15,128,224,224, + 248,15,129,192,224,248,31,129,192,224,248,31,129,128,112,248, + 31,3,128,112,248,63,3,0,112,120,111,6,0,56,60,199, + 140,0,56,31,3,240,0,28,0,0,0,0,14,0,0,0, + 0,7,0,0,0,0,3,128,0,0,0,1,192,0,96,0, + 0,120,1,192,0,0,31,255,0,0,33,35,175,36,2,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,2,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,31,0,15,252,0,255,240,255,255,128,28, + 34,136,33,3,0,255,255,240,0,15,224,126,0,15,224,31, + 0,15,224,31,128,15,224,15,192,15,224,15,192,15,224,15, + 224,15,224,15,224,15,224,15,224,15,224,15,224,15,224,15, + 224,15,224,15,192,15,224,15,192,15,224,31,128,15,224,30, + 0,15,224,60,0,15,255,224,0,15,224,124,0,15,224,63, + 0,15,224,31,128,15,224,15,192,15,224,15,224,15,224,15, + 240,15,224,15,240,15,224,15,240,15,224,15,240,15,224,15, + 240,15,224,15,240,15,224,15,224,15,224,15,224,15,224,31, + 192,15,224,31,128,15,224,126,0,255,255,248,0,26,34,136, + 31,3,1,0,127,193,128,1,224,241,128,3,192,63,128,15, + 128,31,128,15,128,15,128,31,0,15,128,63,0,7,128,63, + 0,7,128,127,0,3,128,127,0,3,128,127,0,3,128,127, + 0,1,128,255,0,1,128,255,0,1,128,255,0,1,128,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,192,127,0,0,192,127, + 0,0,192,127,0,0,128,63,0,1,128,63,0,1,128,63, + 0,1,128,31,128,3,0,15,128,3,0,7,128,6,0,3, + 192,12,0,1,224,56,0,0,127,224,0,32,34,136,37,3, + 0,255,255,248,0,15,224,31,0,15,224,7,128,15,224,3, + 224,15,224,1,240,15,224,1,240,15,224,0,248,15,224,0, + 252,15,224,0,252,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,254,15,224,0,252,15,224,0,252,15,224,0, + 248,15,224,1,240,15,224,1,224,15,224,3,192,15,224,7, + 128,15,224,30,0,255,255,248,0,27,34,136,33,3,0,255, + 255,255,224,15,224,31,224,15,224,7,224,15,224,3,224,15, + 224,1,224,15,224,1,224,15,224,0,224,15,224,0,224,15, + 224,0,96,15,224,48,96,15,224,48,96,15,224,48,0,15, + 224,112,0,15,224,112,0,15,224,240,0,15,225,240,0,15, + 255,240,0,15,225,240,0,15,224,240,0,15,224,112,0,15, + 224,112,32,15,224,48,96,15,224,48,96,15,224,48,96,15, + 224,0,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,1,224,15,224,3,224,15,224,3,224,15,224,15,224,255, + 255,255,224,255,255,255,224,28,34,136,32,3,0,255,255,255, + 240,7,240,15,240,7,240,3,240,7,240,1,240,7,240,1, + 240,7,240,0,240,7,240,0,240,7,240,0,112,7,240,0, + 112,7,240,24,48,7,240,24,48,7,240,24,48,7,240,56, + 48,7,240,56,0,7,240,120,0,7,240,248,0,7,255,248, + 0,7,240,248,0,7,240,120,0,7,240,56,0,7,240,56, + 0,7,240,24,0,7,240,24,0,7,240,24,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,128,0,30,34,136,35,3,1,0,127,224,192,0, + 224,120,192,3,192,31,192,7,128,15,192,15,128,7,192,31, + 0,7,192,31,0,3,192,63,0,3,192,63,0,1,192,127, + 0,1,192,127,0,1,192,127,0,0,192,255,0,0,192,255, + 0,0,192,255,0,0,0,255,0,0,0,255,0,0,0,255, + 3,255,252,255,3,255,252,255,0,31,192,255,0,31,192,255, + 0,31,192,127,0,31,192,127,0,31,192,127,0,31,192,127, + 0,31,192,63,0,31,192,63,0,31,192,31,0,31,192,15, + 128,57,192,15,128,49,192,7,192,96,192,1,224,192,192,0, + 127,128,192,34,34,170,39,3,0,255,255,63,255,192,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,255,255,252,0,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,255,255, + 63,255,192,16,34,68,21,3,0,255,255,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,255,255,23,34,102, + 26,2,0,1,255,254,0,15,224,0,15,224,0,15,224,0, + 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 224,0,15,224,0,15,224,0,15,224,0,15,224,0,15,224, + 0,15,224,0,15,224,0,15,224,0,15,224,0,15,224,0, + 15,224,30,15,224,126,15,224,127,15,224,255,15,224,255,15, + 224,254,15,224,254,15,224,248,15,192,112,15,192,96,15,128, + 48,31,0,24,30,0,15,248,0,33,34,170,37,3,0,255, + 255,31,254,0,7,240,7,240,0,7,240,3,192,0,7,240, + 3,128,0,7,240,3,0,0,7,240,7,0,0,7,240,14, + 0,0,7,240,12,0,0,7,240,24,0,0,7,240,48,0, + 0,7,240,96,0,0,7,240,224,0,0,7,240,224,0,0, + 7,241,240,0,0,7,243,240,0,0,7,247,248,0,0,7, + 255,252,0,0,7,255,252,0,0,7,249,254,0,0,7,241, + 254,0,0,7,240,255,0,0,7,240,255,0,0,7,240,127, + 128,0,7,240,127,128,0,7,240,63,192,0,7,240,63,192, + 0,7,240,31,224,0,7,240,31,224,0,7,240,15,240,0, + 7,240,15,240,0,7,240,7,248,0,7,240,7,248,0,7, + 240,7,252,0,255,255,63,255,128,28,34,136,32,3,0,255, + 255,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,48,7, + 240,0,48,7,240,0,48,7,240,0,112,7,240,0,112,7, + 240,0,112,7,240,0,240,7,240,0,240,7,240,0,240,7, + 240,1,240,7,240,3,240,7,240,3,240,7,240,7,240,255, + 255,255,240,255,255,255,240,39,34,170,43,2,0,255,240,0, + 63,254,7,240,0,63,192,7,248,0,63,192,7,248,0,63, + 192,7,248,0,127,192,7,252,0,127,192,7,252,0,95,192, + 7,252,0,95,192,7,254,0,223,192,6,254,0,223,192,6, + 255,0,159,192,6,127,0,159,192,6,127,1,159,192,6,127, + 129,159,192,6,63,129,31,192,6,63,129,31,192,6,63,195, + 31,192,6,31,194,31,192,6,31,226,31,192,6,15,226,31, + 192,6,15,230,31,192,6,15,244,31,192,6,7,244,31,192, + 6,7,244,31,192,6,7,252,31,192,6,3,248,31,192,6, + 3,248,31,192,6,1,248,31,192,6,1,248,31,192,6,1, + 240,31,192,6,0,240,31,192,15,0,240,31,192,63,192,240, + 31,192,255,240,97,255,254,34,35,175,37,2,255,255,224,15, + 255,192,31,240,3,255,0,15,240,0,252,0,15,248,0,120, + 0,7,252,0,48,0,3,254,0,48,0,3,254,0,48,0, + 3,255,0,48,0,3,255,128,48,0,3,255,128,48,0,3, + 127,192,48,0,3,63,224,48,0,3,31,224,48,0,3,31, + 240,48,0,3,15,248,48,0,3,7,248,48,0,3,7,252, + 48,0,3,3,254,48,0,3,1,255,48,0,3,1,255,48, + 0,3,0,255,176,0,3,0,127,240,0,3,0,127,240,0, + 3,0,63,240,0,3,0,31,240,0,3,0,15,240,0,3, + 0,15,240,0,3,0,7,240,0,3,0,3,240,0,3,0, + 3,240,0,7,128,1,240,0,15,192,0,240,0,63,240,0, + 240,0,255,252,0,112,0,0,0,0,48,0,28,34,136,33, + 3,1,0,63,192,0,0,224,112,0,3,192,56,0,7,128, + 30,0,15,128,30,0,15,0,15,0,31,0,15,128,63,0, + 15,192,63,0,15,192,127,0,15,192,127,0,15,224,127,0, + 15,224,127,0,15,224,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,127,0,15,192,63,0,15,192,63,0,15,192,31,0, + 15,128,15,0,15,0,15,128,31,0,7,128,30,0,3,192, + 60,0,0,224,112,0,0,63,192,0,29,34,136,34,3,0, + 255,255,248,0,7,240,63,0,7,240,15,192,7,240,15,224, + 7,240,15,240,7,240,7,240,7,240,7,248,7,240,7,248, + 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,248, + 7,240,7,240,7,240,15,240,7,240,15,224,7,240,15,192, + 7,240,31,0,7,255,252,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,255,255,128,0,28,45,180,33,3,246,0,63, + 192,0,0,224,112,0,3,192,56,0,7,128,30,0,15,128, + 30,0,15,0,15,0,31,0,15,128,63,0,15,128,63,0, + 15,192,127,0,15,192,127,0,15,224,127,0,15,224,127,0, + 15,224,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,63,0,15,192,63,15,15,192,31,17,143,128,15,160, + 223,0,15,160,223,0,7,160,254,0,3,224,252,16,0,240, + 248,16,0,127,224,16,0,0,224,16,0,0,224,16,0,0, + 224,48,0,0,240,48,0,0,248,112,0,0,255,240,0,0, + 255,224,0,0,127,224,0,0,127,192,0,0,63,128,0,0, + 31,0,32,36,144,36,3,254,255,255,240,0,7,240,126,0, + 7,240,63,0,7,240,63,128,7,240,31,192,7,240,31,192, + 7,240,31,224,7,240,31,224,7,240,31,224,7,240,31,224, + 7,240,31,224,7,240,31,192,7,240,63,192,7,240,63,0, + 7,240,126,0,7,255,240,0,7,240,240,0,7,240,62,0, + 7,240,63,0,7,240,31,128,7,240,31,128,7,240,31,192, + 7,240,31,192,7,240,31,192,7,240,31,192,7,240,31,195, + 7,240,31,195,7,240,31,195,7,240,31,195,7,240,31,195, + 7,240,31,198,7,240,31,198,7,240,15,238,255,255,135,252, + 0,0,3,248,0,0,0,96,23,34,102,29,4,1,7,252, + 24,24,15,24,56,3,248,112,1,248,112,0,248,240,0,120, + 248,0,120,248,0,56,252,0,24,254,0,24,255,128,24,255, + 224,8,127,240,0,127,252,0,63,254,0,31,255,128,15,255, + 192,3,255,240,1,255,248,128,127,248,192,31,252,192,15,252, + 192,3,254,224,1,254,224,0,126,224,0,62,240,0,30,248, + 0,30,248,0,28,252,0,28,254,0,24,239,0,48,195,128, + 96,193,255,128,29,34,136,34,3,0,255,255,255,248,255,63, + 231,248,252,31,193,248,248,31,192,248,248,31,192,248,240,31, + 192,120,224,31,192,56,224,31,192,56,224,31,192,56,192,31, + 192,24,192,31,192,24,192,31,192,24,192,31,192,24,128,31, + 192,8,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,3,255, + 254,0,33,34,170,38,3,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,34,34,170,37,2,0,255,255,135,255,192,15,248,0, + 126,0,7,248,0,56,0,7,248,0,56,0,3,248,0,48, + 0,3,252,0,48,0,3,252,0,48,0,1,254,0,96,0, + 1,254,0,96,0,0,254,0,96,0,0,255,0,192,0,0, + 255,0,192,0,0,127,0,192,0,0,127,129,128,0,0,127, + 129,128,0,0,63,129,128,0,0,63,195,0,0,0,63,195, + 0,0,0,31,195,0,0,0,31,230,0,0,0,15,230,0, + 0,0,15,246,0,0,0,15,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,248,0,0,0,3,248,0,0,0, + 3,248,0,0,0,3,240,0,0,0,1,240,0,0,0,1, + 240,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224, + 0,0,49,34,238,52,2,0,255,255,63,255,207,255,128,31, + 252,7,254,0,252,0,7,248,3,252,0,112,0,7,248,1, + 252,0,112,0,3,248,1,254,0,96,0,3,252,1,254,0, + 96,0,3,252,0,254,0,96,0,1,252,0,254,0,192,0, + 1,254,1,255,0,192,0,1,254,1,255,0,192,0,0,254, + 1,255,1,128,0,0,255,3,127,129,128,0,0,255,3,63, + 129,128,0,0,127,3,63,129,128,0,0,127,135,63,195,0, + 0,0,127,134,31,195,0,0,0,63,134,31,195,0,0,0, + 63,198,31,231,0,0,0,31,204,15,230,0,0,0,31,204, + 15,230,0,0,0,31,236,15,246,0,0,0,15,248,7,252, + 0,0,0,15,248,7,252,0,0,0,15,248,7,252,0,0, + 0,7,248,3,252,0,0,0,7,240,3,248,0,0,0,7, + 240,3,248,0,0,0,3,240,1,248,0,0,0,3,224,1, + 240,0,0,0,3,224,1,240,0,0,0,1,224,0,240,0, + 0,0,1,192,0,240,0,0,0,1,192,0,224,0,0,0, + 0,192,0,96,0,0,33,34,170,36,2,0,127,255,31,254, + 0,31,252,3,240,0,7,248,3,192,0,3,248,3,128,0, + 3,252,3,128,0,1,252,3,0,0,1,254,7,0,0,0, + 255,6,0,0,0,255,12,0,0,0,127,140,0,0,0,127, + 152,0,0,0,63,240,0,0,0,63,240,0,0,0,31,224, + 0,0,0,31,224,0,0,0,15,240,0,0,0,15,248,0, + 0,0,7,248,0,0,0,7,252,0,0,0,7,252,0,0, + 0,15,254,0,0,0,29,254,0,0,0,24,255,0,0,0, + 56,255,0,0,0,48,127,128,0,0,96,127,128,0,0,224, + 63,192,0,0,192,63,224,0,1,128,31,224,0,3,128,31, + 240,0,3,128,15,240,0,7,128,15,248,0,31,128,31,252, + 0,255,240,127,255,128,32,34,136,35,2,0,255,254,15,255, + 31,248,1,248,15,248,0,240,7,248,0,224,7,248,0,192, + 3,252,0,192,3,252,0,192,1,252,1,128,1,254,1,128, + 0,254,3,0,0,255,3,0,0,255,3,0,0,127,134,0, + 0,127,134,0,0,63,196,0,0,63,204,0,0,31,204,0, + 0,31,248,0,0,15,248,0,0,15,248,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,0,25,34,136,31,3,0,127,255,255,128,127,128, + 127,128,126,0,255,0,124,0,255,0,120,1,254,0,120,3, + 254,0,112,3,252,0,112,7,252,0,96,7,248,0,96,15, + 248,0,96,15,240,0,64,31,224,0,0,31,224,0,0,63, + 192,0,0,63,192,0,0,127,128,0,0,127,128,0,0,255, + 0,0,0,255,0,0,1,254,0,0,3,254,0,128,3,252, + 0,128,7,248,0,128,7,248,0,128,15,240,1,128,15,240, + 1,128,31,224,3,128,31,224,3,128,63,192,7,128,63,192, + 15,128,127,128,31,128,127,128,63,128,255,255,255,128,255,255, + 255,128,11,42,84,18,4,248,255,224,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,255,224,16,44,88,22, + 3,247,224,0,224,0,224,0,240,0,112,0,112,0,120,0, + 56,0,56,0,60,0,28,0,28,0,30,0,14,0,14,0, + 14,0,15,0,7,0,7,0,7,128,3,128,3,128,3,192, + 1,192,1,192,1,224,0,224,0,224,0,224,0,240,0,112, + 0,112,0,120,0,56,0,56,0,60,0,28,0,28,0,30, + 0,14,0,14,0,14,0,15,0,7,11,42,84,18,3,248, + 255,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,255,224,22,17,51,28,3,18,0,48,0,0,112,0, + 0,120,0,0,252,0,0,252,0,1,254,0,3,207,0,3, + 143,0,7,135,128,15,3,128,15,3,192,30,1,224,60,0, + 224,60,0,240,120,0,120,112,0,56,240,0,60,25,3,12, + 25,0,248,255,255,255,128,255,255,255,128,255,255,255,128,8, + 9,9,21,4,25,96,240,248,124,60,30,15,3,1,21,22, + 66,24,2,1,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,22,34,102,25,1,0,255,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,159,128,31,179,224,31,225,224,31,193,240,31,193,248,31, + 192,248,31,192,248,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,248, + 31,192,248,31,193,248,29,193,240,24,225,224,24,99,192,16, + 63,128,18,22,66,22,2,1,3,252,0,15,6,0,31,3, + 0,62,3,128,62,7,128,126,15,128,124,31,128,252,31,128, + 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,0, + 128,30,1,0,15,130,0,3,252,0,23,34,102,26,2,0, + 0,63,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,7,231,224,31,23,224,30,31,224,62,15,224, + 126,15,224,124,15,224,124,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, + 224,124,7,224,124,15,224,126,15,224,62,15,224,30,31,224, + 15,23,224,7,231,254,18,22,66,23,2,1,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,16,1,1,0,255,0,1,199,128,7,199,128,7,199,192, + 15,143,192,15,143,192,31,143,192,31,143,128,31,135,128,31, + 128,0,31,128,0,31,128,0,255,240,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,24,33,99,27,2,246, + 7,254,62,31,15,71,63,7,143,62,7,207,126,7,238,126, + 7,228,126,7,224,126,7,224,126,7,224,62,7,192,31,15, + 128,15,15,0,3,252,0,12,0,0,48,0,0,48,0,0, + 112,0,0,112,0,0,127,255,128,127,255,224,63,255,240,31, + 255,240,7,255,248,60,1,248,96,0,120,192,0,56,192,0, + 56,192,0,48,192,0,112,96,0,96,48,1,192,30,7,128, + 3,252,0,24,34,102,27,1,0,255,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,143,224, + 31,145,240,31,160,248,31,160,252,31,192,252,31,192,252,31, + 192,252,31,128,252,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,255,227,255,11, + 35,70,15,2,0,4,0,31,0,63,128,63,128,63,128,63, + 128,31,0,4,0,0,0,0,0,0,0,0,0,0,0,255, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,255,224,15,46,92,16,254, + 245,0,16,0,124,0,254,0,254,0,254,0,254,0,124,0, + 16,0,0,0,0,0,0,0,0,0,0,7,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,56,252,124,252,252, + 252,252,252,248,248,248,248,113,240,49,224,31,128,25,34,136, + 27,1,0,255,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,131,254,0,31,128,240,0,31,128,96,0,31, + 128,192,0,31,128,128,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,143,0,0,31,159,0,0,31,159,128,0,31, + 191,128,0,31,239,192,0,31,199,224,0,31,135,224,0,31, + 131,240,0,31,129,248,0,31,129,248,0,31,128,252,0,31, + 128,252,0,31,128,254,0,255,243,255,128,12,34,68,14,1, + 0,255,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,255,240,34,22,110,37,2,1,255,31,193,248,0, + 63,35,230,124,0,63,67,228,62,0,63,131,248,63,0,63, + 131,248,63,0,63,131,248,63,0,63,3,240,63,0,63,3, + 240,63,0,63,3,240,63,0,63,3,240,63,0,63,3,240, + 63,0,63,3,240,63,0,63,3,240,63,0,63,3,240,63, + 0,63,3,240,63,0,63,3,240,63,0,63,3,240,63,0, + 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, + 3,240,63,0,255,207,252,255,192,23,22,66,27,2,1,255, + 31,192,63,35,224,63,65,240,63,65,248,63,129,248,63,129, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,255,199, + 254,20,22,66,24,2,1,3,252,0,15,15,0,30,7,128, + 62,7,192,62,7,192,124,3,224,124,3,224,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,62,7,192,62,7,192, + 30,7,128,15,15,0,3,252,0,22,33,99,25,1,246,255, + 159,128,31,163,192,31,225,224,31,193,240,31,192,248,31,192, + 248,31,192,248,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,192,252,31, + 192,248,31,192,248,31,193,240,31,225,240,31,179,224,31,159, + 128,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,255, + 240,0,22,33,99,25,2,246,7,240,32,15,24,96,30,28, + 96,62,14,224,126,15,224,124,15,224,124,7,224,252,7,224, + 252,7,224,252,7,224,252,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,124,7,224,124,15,224,126,15,224,62,15, + 224,30,31,224,31,23,224,7,231,224,0,7,224,0,7,224, + 0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,63,252,17,22,66,20,2, + 1,255,31,0,63,63,128,63,79,128,63,79,128,63,159,128, + 63,159,128,63,159,0,63,14,0,63,0,0,63,0,0,63, + 0,0,63,0,0,63,0,0,63,0,0,63,0,0,63,0, + 0,63,0,0,63,0,0,63,0,0,63,0,0,63,0,0, + 255,192,0,16,22,44,21,3,1,31,196,48,116,96,60,224, + 28,224,28,240,12,248,4,254,4,127,128,127,224,63,240,31, + 252,7,254,129,254,192,127,192,31,224,15,224,7,240,7,248, + 6,204,14,135,248,15,32,64,17,1,0,1,128,1,128,1, + 128,1,128,1,128,3,128,3,128,7,128,15,128,63,128,255, + 248,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,130,31,130,31,130,31,130,31, + 134,31,134,31,132,15,196,15,248,7,240,24,22,66,26,1, + 0,255,143,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,131,248,31,131,248,31,133,248,15,133,248,15,201,248, + 7,241,255,23,23,69,25,1,255,255,241,254,63,192,120,31, + 128,48,15,192,48,15,192,32,7,192,96,7,224,96,7,224, + 64,3,224,192,3,240,128,3,240,128,1,241,128,1,249,0, + 0,249,0,0,255,0,0,254,0,0,126,0,0,126,0,0, + 124,0,0,60,0,0,60,0,0,24,0,0,24,0,35,23, + 115,37,1,255,255,231,255,31,224,63,129,252,7,128,31,128, + 252,3,0,15,128,252,2,0,15,192,124,2,0,15,192,124, + 6,0,7,192,126,4,0,7,224,254,4,0,3,224,191,12, + 0,3,224,191,8,0,3,241,159,24,0,1,241,31,144,0, + 1,241,31,144,0,1,251,31,176,0,0,250,15,224,0,0, + 250,15,224,0,0,254,15,224,0,0,124,7,192,0,0,124, + 7,192,0,0,60,7,192,0,0,56,3,128,0,0,56,3, + 128,0,0,24,3,0,0,23,22,66,25,1,0,255,231,252, + 63,192,240,31,192,224,15,192,192,15,225,128,7,227,0,3, + 242,0,3,254,0,1,252,0,1,252,0,0,252,0,0,126, + 0,0,127,0,0,127,0,0,223,128,1,159,192,3,15,192, + 2,15,224,6,7,224,14,7,240,30,7,248,255,207,254,23, + 33,99,25,1,245,255,241,254,63,192,120,31,128,48,15,192, + 32,15,192,32,15,192,96,7,224,64,7,224,64,3,240,192, + 3,240,128,1,248,128,1,249,128,0,249,0,0,253,0,0, + 253,0,0,126,0,0,126,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,12,0,0,8,0,0,8,0,0,8,0, + 15,16,0,31,16,0,63,144,0,63,32,0,62,32,0,62, + 64,0,31,192,0,15,0,0,18,22,66,22,2,0,127,255, + 192,124,15,192,120,31,128,112,63,0,96,63,0,96,126,0, + 64,126,0,64,252,0,1,248,0,1,248,0,3,240,0,3, + 240,0,7,224,64,15,192,64,15,192,64,31,128,192,31,0, + 192,63,1,192,126,1,192,126,3,192,252,15,192,255,255,192, + 14,43,86,20,3,247,0,60,0,240,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,0,15,0,28,0, + 240,0,60,0,30,0,15,0,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,7,128,7,128,3,192,0,240,0,60,3,44,44,13, + 5,247,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,15,43, + 86,20,3,247,240,0,60,0,15,0,7,128,7,128,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,3,192,3,192,0,240,0,62, + 0,240,1,224,3,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,128,7,128,15,0,60,0,240,0,27,9,36,31,2,8, + 31,128,1,128,63,240,0,192,127,254,0,96,255,255,128,96, + 193,255,240,96,192,63,255,224,192,15,255,192,96,1,255,128, + 48,0,63,0,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 5 y=15 dx=28 dy= 0 ascent=25 len=72 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =19 descent=-6 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_SECTION(".progmem.u8g_font_osr18") = { + 0,68,33,235,248,18,4,197,10,125,32,255,250,25,249,19, + 250,0,0,0,7,0,0,3,18,18,7,2,0,224,224,224, + 224,224,224,64,64,64,64,64,64,64,64,0,224,224,224,6, + 5,5,10,2,13,204,204,204,204,72,14,18,36,18,2,0, + 4,32,4,32,4,32,4,32,4,32,255,252,8,64,8,64, + 8,64,8,64,8,64,24,64,255,252,16,128,16,128,16,128, + 16,128,16,128,11,22,44,15,2,254,9,0,9,0,31,128, + 41,64,73,32,73,32,73,96,73,96,105,0,61,0,31,128, + 15,192,9,192,9,96,233,32,233,32,201,32,201,64,105,64, + 31,128,9,0,9,0,18,18,54,22,2,0,56,2,0,68, + 4,0,198,8,0,198,8,0,198,16,0,198,32,0,198,32, + 0,68,64,0,56,64,0,0,134,0,1,25,128,1,48,128, + 2,48,192,4,48,192,4,48,192,8,48,192,8,24,128,16, + 15,0,18,18,54,20,1,0,7,128,0,8,64,0,24,64, + 0,24,64,0,24,192,0,28,128,0,15,0,0,6,31,192, + 15,6,0,23,6,0,35,132,0,97,196,0,192,232,0,192, + 240,0,192,112,0,224,120,128,96,220,128,63,15,0,2,5, + 5,7,2,13,192,192,192,192,64,6,23,23,10,3,252,8, + 16,48,32,64,64,192,128,128,128,128,128,128,128,128,192,64, + 64,96,32,16,24,12,6,23,23,9,1,252,64,32,48,16, + 24,8,8,12,4,4,4,4,4,4,12,8,8,8,16,16, + 32,64,192,10,10,20,14,2,8,12,0,12,0,204,192,201, + 192,42,0,30,0,235,192,201,192,12,0,12,0,22,22,66, + 24,1,252,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,255,255,252,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,3,8,8,7,2,252,192,224,224,32,32, + 64,64,128,7,1,1,11,2,6,254,3,3,3,7,2,0, + 224,224,224,8,24,24,12,2,250,1,1,2,2,2,4,4, + 4,12,8,8,24,16,16,16,32,32,32,64,64,64,128,128, + 128,12,18,36,15,1,0,15,0,16,192,32,64,96,96,96, + 32,192,48,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,96,32,96,96,32,64,16,192,15,0,9,18,36,15,3, + 0,8,0,8,0,24,0,248,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,128,10,18,36,15,2,0,30,0,99,128,129, + 192,128,192,128,192,224,192,240,192,32,192,1,128,3,0,6, + 0,8,0,16,0,32,0,64,64,192,64,255,192,255,192,11, + 18,36,15,2,0,63,0,97,128,192,192,224,192,240,192,0, + 192,0,192,1,128,62,0,1,128,0,192,0,96,96,96,240, + 96,240,96,192,192,65,128,63,0,12,18,36,15,2,0,1, + 0,3,0,3,0,7,0,15,0,11,0,19,0,51,0,35, + 0,67,0,195,0,131,0,255,224,3,0,3,0,3,0,3, + 0,31,240,11,18,36,15,2,0,96,192,127,128,126,0,64, + 0,64,0,64,0,95,0,97,128,64,192,64,224,0,96,0, + 96,96,96,240,96,224,192,192,192,65,128,62,0,11,18,36, + 15,2,0,15,0,24,128,48,64,96,192,96,192,64,0,192, + 0,207,0,209,192,224,192,224,224,224,96,224,96,224,96,96, + 224,96,192,49,128,15,0,10,18,36,15,3,0,255,192,255, + 192,128,64,128,64,128,128,0,128,1,0,1,0,2,0,6, + 0,6,0,12,0,12,0,30,0,30,0,30,0,30,0,14, + 0,12,18,36,15,2,0,31,128,48,224,96,96,192,48,192, + 48,224,48,240,32,124,64,63,128,55,224,96,240,192,112,192, + 48,192,48,192,48,96,96,112,192,31,128,11,18,36,15,2, + 0,30,0,49,128,96,192,224,192,192,64,192,96,192,96,192, + 224,96,224,113,96,30,96,0,96,0,64,96,192,96,192,64, + 128,65,0,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,8,2,252,96,240,240, + 0,0,0,0,0,96,240,240,16,16,32,32,64,20,21,63, + 24,2,253,0,0,48,0,0,192,0,3,0,0,12,0,0, + 48,0,0,224,0,3,128,0,14,0,0,24,0,0,96,0, + 0,192,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,1,128,0,0,96,0, + 0,16,22,6,18,24,1,4,255,255,252,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,252,20,21,63,24,2,253, + 192,0,0,48,0,0,12,0,0,3,0,0,0,192,0,0, + 112,0,0,28,0,0,7,0,0,1,128,0,0,96,0,0, + 48,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 1,128,0,6,0,0,24,0,0,96,0,0,128,0,0,9, + 18,36,12,2,0,62,0,67,0,129,128,129,128,225,128,97, + 128,3,0,6,0,12,0,16,0,48,0,34,0,34,0,28, + 0,0,0,28,0,28,0,28,0,18,18,54,20,1,0,3, + 248,0,12,6,0,16,109,0,33,156,128,67,12,128,70,8, + 64,142,8,64,142,24,64,140,24,64,140,16,64,140,48,128, + 140,48,128,140,241,0,71,30,0,96,0,0,32,0,0,24, + 12,0,7,240,0,18,18,54,20,2,0,0,128,0,0,192, + 0,1,192,0,1,192,0,1,224,0,3,224,0,2,96,0, + 2,112,0,6,112,0,4,48,0,4,56,0,12,56,0,15, + 248,0,24,28,0,16,12,0,16,12,0,48,14,0,254,63, + 192,15,18,36,17,1,0,255,240,24,28,24,12,24,6,24, + 6,24,6,24,12,24,24,31,224,24,24,24,12,24,6,24, + 6,24,6,24,6,24,12,24,28,255,240,14,18,36,18,2, + 0,7,132,24,108,32,60,96,28,96,12,192,12,192,4,192, + 0,192,0,192,0,192,0,192,4,96,4,96,4,32,8,48, + 24,24,48,7,192,17,18,54,20,1,0,255,240,0,24,12, + 0,24,6,0,24,3,0,24,3,0,24,1,128,24,1,128, + 24,1,128,24,1,128,24,1,128,24,1,128,24,1,128,24, + 1,128,24,3,0,24,3,0,24,6,0,24,12,0,255,240, + 0,15,18,36,18,1,0,255,254,24,6,24,2,24,2,24, + 2,24,34,24,32,24,96,31,224,24,96,24,32,24,32,24, + 34,24,2,24,2,24,6,24,14,255,254,15,18,36,17,1, + 0,255,254,24,6,24,2,24,2,24,2,24,34,24,32,24, + 96,31,224,24,96,24,32,24,32,24,32,24,0,24,0,24, + 0,24,0,127,0,17,18,54,19,2,0,7,196,0,24,100, + 0,48,28,0,96,28,0,96,12,0,96,4,0,192,4,0, + 192,0,0,192,127,128,192,28,0,192,28,0,192,28,0,192, + 28,0,96,28,0,96,28,0,48,52,0,24,100,0,7,132, + 0,18,18,54,20,1,0,255,63,192,24,6,0,24,6,0, + 24,6,0,24,6,0,24,6,0,24,6,0,24,6,0,31, + 254,0,24,6,0,24,6,0,24,6,0,24,6,0,24,6, + 0,24,6,0,24,6,0,24,6,0,255,63,192,8,18,18, + 10,1,0,255,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,12,18,36,14,1,0,7,240,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,97,128,241,128,225,128,193,128,67,0,62,0,17, + 18,54,19,1,0,255,63,128,24,14,0,24,8,0,24,16, + 0,24,32,0,24,64,0,24,128,0,25,192,0,26,192,0, + 28,224,0,24,96,0,24,112,0,24,56,0,24,56,0,24, + 28,0,24,28,0,24,14,0,255,127,128,15,18,36,17,1, + 0,255,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,2,24,2,24,2,24,6,24, + 6,24,14,255,254,20,18,54,22,1,0,252,3,240,28,3, + 128,30,5,128,22,5,128,22,5,128,23,5,128,19,9,128, + 19,9,128,19,137,128,19,145,128,17,145,128,17,209,128,17, + 209,128,16,225,128,16,225,128,16,225,128,16,65,128,254,79, + 240,18,18,54,19,1,0,252,15,192,28,2,0,30,2,0, + 22,2,0,23,2,0,19,130,0,17,130,0,17,194,0,16, + 226,0,16,226,0,16,114,0,16,50,0,16,58,0,16,30, + 0,16,14,0,16,14,0,16,6,0,254,2,0,15,18,36, + 18,2,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,18,36,17,1,0,255,240,24, + 28,24,12,24,6,24,6,24,6,24,12,24,24,31,240,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,255, + 0,15,22,44,18,2,252,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,99,140,36,76,52,120,28,114,7,226,0,98,0,118,0, + 60,0,24,17,18,54,19,1,0,255,240,0,24,24,0,24, + 12,0,24,12,0,24,12,0,24,12,0,24,24,0,31,224, + 0,24,48,0,24,56,0,24,24,0,24,24,0,24,24,0, + 24,28,128,24,28,128,24,28,128,24,31,0,255,15,0,13, + 18,36,16,2,0,30,32,97,160,192,96,192,96,192,32,192, + 32,224,0,124,0,63,128,15,224,129,240,128,112,128,24,192, + 24,192,24,224,16,152,32,135,192,15,18,36,18,2,0,255, + 254,195,14,131,6,131,2,3,2,3,2,3,2,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,240,19,18,54,21,1,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,18, + 18,54,20,1,0,255,31,192,28,3,0,28,2,0,12,2, + 0,14,6,0,6,4,0,7,4,0,7,8,0,3,8,0, + 3,136,0,3,144,0,1,144,0,1,208,0,0,224,0,0, + 224,0,0,224,0,0,64,0,0,64,0,26,18,72,28,1, + 0,255,63,159,192,28,14,3,0,12,6,2,0,12,14,2, + 0,14,15,6,0,14,15,4,0,6,19,4,0,7,19,140, + 0,7,19,136,0,3,49,136,0,3,161,216,0,3,161,208, + 0,1,160,208,0,1,192,240,0,1,192,224,0,0,192,96, + 0,0,128,96,0,0,128,64,0,18,18,54,20,1,0,127, + 191,128,14,12,0,14,12,0,7,8,0,7,16,0,3,176, + 0,1,160,0,1,192,0,0,192,0,0,224,0,1,96,0, + 3,112,0,2,56,0,4,56,0,12,28,0,8,12,0,24, + 14,0,254,63,192,17,18,54,19,1,0,255,31,128,28,6, + 0,28,4,0,14,4,0,6,8,0,7,8,0,3,144,0, + 3,160,0,1,224,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,7,252, + 0,14,18,36,17,2,0,127,252,112,56,96,48,64,112,64, + 224,128,192,1,192,3,128,3,0,7,0,14,0,12,4,28, + 4,56,4,48,12,112,28,224,56,255,248,5,23,23,10,3, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,248,8,24,24,12,2,250,128,128, + 128,64,64,64,32,32,32,16,16,16,16,8,8,8,4,4, + 4,2,2,2,1,1,5,23,23,10,2,251,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,248,11,9,18,15,2,9,4,0,14,0,10,0,17, + 0,49,128,32,128,64,64,64,96,128,32,14,1,2,14,0, + 252,255,252,4,4,4,11,2,13,192,224,96,16,11,12,24, + 13,1,0,30,0,99,0,65,128,97,128,33,128,15,128,113, + 128,193,128,195,160,195,160,197,160,121,192,11,18,36,13,0, + 0,240,0,48,0,48,0,48,0,48,0,48,0,51,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,40,192,39,128,9,12,24,11,1,0,30,0,33,0,96, + 128,193,128,193,128,192,0,192,0,192,0,192,128,96,128,33, + 0,30,0,12,18,36,14,1,0,7,192,0,192,0,192,0, + 192,0,192,0,192,28,192,98,192,97,192,193,192,192,192,192, + 192,192,192,192,192,192,192,97,192,97,192,30,240,9,12,24, + 12,1,0,30,0,35,0,97,128,193,128,193,128,255,128,192, + 0,192,0,192,128,96,128,33,0,30,0,9,18,36,9,1, + 0,15,0,24,128,49,128,49,0,48,0,48,0,254,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,254,0,12,18,36,15,2,250,30,112,97,176,225, + 240,192,192,192,192,192,192,225,128,97,128,30,0,224,0,255, + 0,127,192,64,96,128,32,128,32,128,32,192,64,63,128,13, + 18,36,15,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,51,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,6,18,18,8,1,0,112, + 112,32,0,0,0,240,48,48,48,48,48,48,48,48,48,48, + 252,7,24,24,8,255,250,6,6,0,0,0,0,62,6,6, + 6,6,6,6,6,6,6,6,6,6,6,198,198,140,120,12, + 18,36,14,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,49,240,48,128,49,0,50,0,50,0,54,0,59,0,51, + 0,49,128,49,192,48,224,253,240,6,18,18,8,1,0,240, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,19,12,36,21,1,0,243,199,0,52,249,128,56,113,192, + 56,97,192,48,97,192,48,97,192,48,97,192,48,97,192,48, + 97,192,48,97,192,48,97,192,253,251,224,13,12,24,15,1, + 0,243,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,10,12,24,13,1,0,30, + 0,33,128,97,128,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,33,128,30,0,11,18,36,14,1,250,243,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,56,192,55,128,48,0,48,0,48,0,48,0,48,0,252, + 0,12,18,36,13,1,250,28,64,98,64,97,192,192,192,192, + 192,192,192,192,192,192,192,192,192,97,192,97,192,30,192,0, + 192,0,192,0,192,0,192,0,192,3,240,9,12,24,11,1, + 0,243,128,52,128,57,128,56,128,56,0,48,0,48,0,48, + 0,48,0,48,0,48,0,252,0,9,12,24,11,1,0,125, + 0,131,0,129,0,193,0,240,0,124,0,31,0,131,128,128, + 128,192,128,224,128,159,0,8,17,17,10,1,0,16,16,16, + 48,48,254,48,48,48,48,48,48,48,49,49,51,30,13,12, + 24,14,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,12,24,14, + 1,0,252,248,48,96,48,64,24,64,24,128,12,128,12,128, + 13,0,7,0,7,0,2,0,2,0,19,12,36,21,1,0, + 253,251,224,48,96,128,48,96,128,24,113,0,24,177,0,12, + 177,0,12,154,0,13,26,0,7,28,0,7,12,0,2,12, + 0,2,8,0,12,12,24,14,1,0,249,224,48,128,57,0, + 25,0,14,0,14,0,6,0,11,0,19,0,17,128,33,192, + 243,240,13,18,36,14,0,250,252,248,56,32,24,32,24,64, + 12,64,12,64,12,128,6,128,6,128,7,0,3,0,3,0, + 2,0,2,0,34,0,98,0,100,0,56,0,9,12,24,12, + 1,0,255,128,195,128,131,0,134,0,142,0,12,0,24,0, + 56,0,48,128,96,128,96,128,255,128,6,23,23,12,3,251, + 12,16,48,48,48,48,56,24,24,24,16,224,48,16,24,24, + 56,48,48,48,48,16,12,1,24,24,7,3,250,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,23,23,11,3,251,192,32,48,48,48, + 112,96,96,96,96,32,28,48,96,96,96,96,112,48,48,48, + 32,192,15,5,10,17,1,4,32,4,254,2,143,194,129,254, + 64,124,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,7,0,0,3,18,18,7,2,250,224, + 224,224,0,64,64,64,64,64,64,64,64,224,224,224,224,224, + 224,9,18,36,15,3,253,4,0,4,0,4,0,31,0,53, + 0,100,128,229,128,197,128,196,0,196,0,196,0,228,128,100, + 128,53,0,31,0,4,0,4,0,4,0,14,18,36,19,2, + 0,0,248,1,132,3,4,2,12,6,0,6,0,6,0,62, + 0,7,224,6,0,6,0,6,0,6,0,6,0,116,4,140, + 4,139,248,112,240,11,11,22,15,2,2,159,32,113,192,64, + 64,128,96,128,32,128,32,128,32,128,32,64,64,96,192,159, + 32,15,18,36,15,0,0,252,126,56,24,24,16,28,16,12, + 32,14,64,6,64,7,128,3,128,63,240,3,0,3,0,63, + 240,3,0,3,0,3,0,3,0,31,224,1,23,23,7,3, + 251,128,128,128,128,128,128,128,128,128,0,0,0,0,0,128, + 128,128,128,128,128,128,128,128,10,23,46,17,3,251,30,0, + 33,0,35,0,35,0,32,0,48,0,28,0,46,0,71,0, + 131,128,129,192,192,192,224,64,112,64,56,128,29,0,6,0, + 3,0,3,0,49,0,49,0,34,0,28,0,7,2,2,11, + 2,15,198,198,19,18,54,21,1,0,3,248,0,12,6,0, + 16,225,0,33,28,128,67,12,64,70,4,64,134,4,32,134, + 0,32,134,0,32,134,0,32,134,0,32,134,8,32,67,8, + 64,67,8,64,32,240,128,16,1,0,12,6,0,3,248,0, + 7,8,8,11,2,10,240,200,24,104,136,154,100,252,6,10, + 10,12,3,1,32,68,136,136,136,136,136,136,68,32,13,6, + 12,15,1,3,255,248,0,8,0,8,0,8,0,8,0,8, + 7,1,1,11,2,6,254,19,18,54,21,1,0,3,248,0, + 12,6,0,31,225,0,35,24,128,67,24,64,67,24,64,131, + 24,32,131,24,32,131,224,32,131,16,32,131,24,32,131,24, + 32,67,26,64,67,26,64,47,142,128,16,1,0,12,6,0, + 3,248,0,7,1,1,11,2,15,254,7,7,7,15,4,11, + 56,68,130,130,130,68,56,22,18,54,24,1,255,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,255,255,252,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,0,0,0,0,0, + 255,255,252,7,10,10,11,2,8,124,134,134,230,6,8,16, + 96,66,254,7,11,11,12,3,7,120,132,198,198,4,120,14, + 70,198,134,120,4,4,4,11,5,13,48,48,96,128,14,19, + 38,17,2,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,64,192,64,128,64,132,163,252,159,28,128,0,128,0, + 192,0,192,0,192,0,224,0,64,0,11,22,44,14,2,252, + 63,224,120,128,248,128,248,128,248,128,248,128,248,128,120,128, + 8,128,8,128,8,128,8,128,8,128,8,128,8,128,8,128, + 8,128,8,128,8,128,8,128,8,128,8,128,3,3,3,7, + 2,7,224,224,224,5,5,5,11,3,251,64,48,24,24,240, + 6,11,11,12,3,7,16,16,240,48,48,48,48,48,48,48, + 252,6,9,9,10,2,9,112,136,132,132,132,132,72,48,252, + 7,10,10,13,3,1,8,68,68,34,34,34,34,68,68,136, + 18,18,54,23,3,0,16,4,0,240,12,0,48,8,0,48, + 16,0,48,16,0,48,32,0,48,96,0,48,67,0,48,135, + 0,48,139,0,253,11,0,3,19,0,2,19,0,6,35,0, + 4,63,192,8,3,0,24,3,0,16,15,192,17,18,54,22, + 3,0,16,4,0,240,8,0,48,8,0,48,16,0,48,16, + 0,48,32,0,48,64,0,48,78,0,48,179,128,48,161,128, + 253,49,128,3,17,128,2,3,0,4,6,0,4,8,0,8, + 16,128,24,49,128,16,63,128,18,18,54,23,3,0,120,4, + 0,134,12,0,198,8,0,4,16,0,120,16,0,12,32,0, + 6,96,0,198,67,0,198,135,0,142,139,0,121,11,0,2, + 19,0,2,19,0,4,35,0,12,63,192,8,3,0,16,3, + 0,16,15,192,9,18,36,12,1,250,28,0,28,0,28,0, + 0,0,28,0,34,0,34,0,6,0,4,0,24,0,48,0, + 96,0,227,0,195,128,192,128,224,128,97,0,62,0,18,24, + 72,20,2,0,6,0,0,6,0,0,3,0,0,0,128,0, + 0,0,0,0,0,0,0,128,0,0,192,0,1,192,0,1, + 192,0,1,224,0,3,224,0,2,96,0,2,112,0,6,112, + 0,4,48,0,4,56,0,12,24,0,15,248,0,24,28,0, + 16,12,0,16,14,0,48,14,0,254,63,192,18,24,72,20, + 2,0,0,16,0,0,48,0,0,96,0,0,64,0,0,128, + 0,0,0,0,0,128,0,0,192,0,1,192,0,1,192,0, + 1,224,0,3,224,0,2,96,0,2,112,0,6,112,0,4, + 48,0,4,56,0,12,56,0,15,248,0,24,28,0,16,12, + 0,16,14,0,48,14,0,254,63,192,18,24,72,20,2,0, + 0,128,0,0,192,0,1,96,0,2,48,0,4,8,0,0, + 0,0,0,128,0,0,192,0,1,192,0,1,192,0,1,224, + 0,3,224,0,2,96,0,2,112,0,6,112,0,4,48,0, + 4,56,0,12,56,0,15,248,0,24,28,0,16,12,0,16, + 12,0,48,14,0,254,63,192,18,23,69,20,2,0,3,144, + 0,5,240,0,0,0,0,0,0,0,0,0,0,0,128,0, + 0,128,0,1,192,0,1,192,0,1,224,0,3,224,0,2, + 96,0,2,112,0,6,112,0,4,48,0,12,56,0,12,56, + 0,15,248,0,24,28,0,16,28,0,16,12,0,48,14,0, + 254,63,192,18,23,69,20,1,0,6,24,0,6,24,0,2, + 16,0,0,0,0,0,0,0,0,192,0,0,192,0,0,192, + 0,1,224,0,1,224,0,1,96,0,2,112,0,2,112,0, + 2,48,0,4,56,0,4,24,0,12,24,0,15,252,0,8, + 12,0,24,12,0,24,14,0,56,6,0,254,63,192,17,24, + 72,20,2,0,1,192,0,2,32,0,2,32,0,2,32,0, + 1,192,0,0,0,0,0,128,0,0,128,0,1,192,0,1, + 192,0,1,192,0,2,224,0,2,96,0,2,96,0,4,112, + 0,4,112,0,12,48,0,8,56,0,15,248,0,24,28,0, + 16,28,0,16,12,0,48,14,0,254,127,128,24,18,54,26, + 0,0,0,127,255,0,28,7,0,28,3,0,44,1,0,44, + 1,0,76,17,0,76,16,0,140,48,0,143,240,1,12,48, + 3,12,16,2,12,17,7,252,17,4,12,1,8,12,1,8, + 12,3,24,12,7,254,63,255,14,24,48,18,2,250,7,132, + 24,108,32,60,96,28,96,12,192,12,192,4,192,0,192,0, + 192,0,192,0,192,4,96,4,96,4,96,8,48,24,24,48, + 7,192,2,0,3,128,0,192,0,192,8,192,7,128,15,24, + 48,18,1,0,4,0,6,0,3,0,1,128,0,0,0,0, + 255,254,24,6,24,2,24,2,24,2,24,34,24,32,24,96, + 31,224,24,96,24,32,24,32,24,34,24,2,24,2,24,6, + 24,14,255,254,15,24,48,18,1,0,0,48,0,48,0,96, + 0,192,0,0,0,0,255,254,24,14,24,6,24,2,24,2, + 24,34,24,32,24,96,31,224,24,96,24,32,24,32,24,34, + 24,2,24,2,24,6,24,14,255,254,15,24,48,18,1,0, + 0,128,1,192,3,64,6,48,8,8,0,0,255,254,24,6, + 24,2,24,2,24,2,24,34,24,32,24,96,31,224,24,96, + 24,32,24,32,24,34,24,2,24,2,24,6,24,14,255,254, + 15,23,46,18,1,0,6,48,6,48,4,16,0,0,0,0, + 255,254,24,14,24,6,24,2,24,2,24,34,24,32,24,96, + 31,224,24,96,24,32,24,32,24,34,24,2,24,2,24,6, + 24,14,255,254,8,24,24,10,1,0,64,96,48,16,8,0, + 255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,255,8,24,24,10,1,0,3,3,6,8,0,0,255,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,255, + 8,24,24,10,1,0,8,24,52,66,129,0,255,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,255,8,23, + 23,10,1,0,195,195,66,0,0,255,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,255,17,18,54,19,1, + 0,255,240,0,24,12,0,24,6,0,24,3,0,24,3,0, + 24,1,128,24,1,128,24,1,128,127,1,128,24,1,128,24, + 1,128,24,1,128,24,1,128,24,3,0,24,3,0,24,6, + 0,24,12,0,255,240,0,18,24,72,19,1,0,3,200,0, + 2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 15,192,28,2,0,30,2,0,22,2,0,23,2,0,19,130, + 0,17,130,0,17,194,0,16,226,0,16,226,0,16,114,0, + 16,50,0,16,58,0,16,30,0,16,14,0,16,14,0,16, + 6,0,252,2,0,15,24,48,18,2,1,28,0,12,0,6, + 0,2,0,1,0,0,0,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,96,12,32,8,48,24,24,48,7,192,15,24,48,18,2, + 1,0,112,0,96,0,192,0,128,1,0,0,0,7,192,24, + 48,48,24,32,8,96,12,96,12,192,6,192,6,192,6,192, + 6,192,6,192,6,96,12,96,12,32,8,48,24,24,48,7, + 192,15,24,48,18,2,0,1,0,3,128,6,192,12,96,16, + 16,0,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,24,48,18,2,0,15,16,19, + 224,0,0,0,0,0,0,0,0,7,192,24,48,48,24,32, + 8,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,96,12,96,12,32,8,48,24,24,48,7,192,15,24,48, + 18,2,0,8,0,12,96,12,96,0,0,0,0,0,0,7, + 192,24,48,48,24,32,8,96,12,96,12,192,6,192,6,192, + 6,192,6,192,6,192,6,96,12,96,12,32,8,48,24,24, + 48,7,192,16,16,32,24,4,255,0,1,64,3,32,6,16, + 12,8,24,4,48,2,96,1,192,1,128,3,64,6,32,12, + 16,24,8,48,4,96,2,192,1,15,18,36,18,2,0,7, + 194,24,52,48,28,32,12,96,28,96,44,192,70,192,198,193, + 134,195,6,198,6,196,6,232,12,112,12,96,8,112,24,88, + 48,135,192,19,24,72,21,1,1,3,0,0,3,128,0,0, + 128,0,0,64,0,0,0,0,0,0,0,255,15,224,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,24,1,0,24, + 1,0,24,1,0,12,1,0,12,2,0,6,4,0,1,248, + 0,19,24,72,21,1,1,0,28,0,0,24,0,0,48,0, + 0,32,0,0,64,0,0,0,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,19, + 24,72,21,1,0,0,96,0,0,224,0,1,176,0,3,8, + 0,0,4,0,0,0,0,255,15,224,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,12,1,0,12,2,0,6,4,0,1,248,0,19,23,69, + 21,1,1,3,24,0,3,24,0,0,0,0,0,0,0,0, + 0,0,255,15,224,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,12,1,0,12, + 2,0,6,4,0,1,248,0,17,24,72,19,1,0,0,24, + 0,0,56,0,0,48,0,0,64,0,0,0,0,0,0,0, + 255,31,128,28,6,0,28,4,0,14,4,0,6,8,0,7, + 8,0,3,144,0,3,160,0,1,224,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,7,252,0,15,18,36,17,1,0,255,0,24,0, + 24,0,31,224,24,24,24,12,24,6,24,6,24,6,24,14, + 24,12,24,24,31,240,24,0,24,0,24,0,24,0,255,0, + 12,18,36,14,1,0,7,128,24,224,24,96,48,96,48,192, + 48,128,55,0,49,128,48,64,48,96,48,112,48,48,48,48, + 48,48,54,48,54,112,52,96,243,192,11,18,36,13,1,0, + 96,0,96,0,48,0,24,0,8,0,0,0,30,0,99,0, + 65,128,97,128,33,128,15,128,113,128,193,128,195,160,195,160, + 197,160,121,192,11,18,36,13,1,0,1,128,3,128,3,0, + 4,0,8,0,0,0,62,0,65,0,65,128,97,128,33,128, + 15,128,113,128,193,128,193,160,195,160,197,160,120,192,11,18, + 36,13,1,0,8,0,12,0,28,0,50,0,65,0,0,0, + 30,0,99,0,65,128,97,128,33,128,15,128,113,128,193,128, + 195,160,195,160,197,160,121,192,11,17,34,13,1,0,56,128, + 79,0,0,0,0,0,0,0,30,0,99,0,65,128,97,128, + 33,128,15,128,113,128,193,128,195,160,195,160,197,160,121,192, + 11,17,34,13,1,0,99,0,99,0,1,0,0,0,0,0, + 60,0,67,0,67,0,99,0,3,0,15,0,115,0,195,0, + 195,32,199,32,203,32,121,192,11,18,36,13,1,0,28,0, + 34,0,34,0,34,0,28,0,0,0,60,0,67,0,67,0, + 99,0,35,0,15,0,115,0,195,0,195,32,199,32,199,32, + 121,192,16,12,24,18,1,0,30,120,99,198,65,134,97,131, + 1,131,31,255,97,128,193,128,195,129,195,130,196,194,120,124, + 9,18,36,11,1,250,30,0,33,0,96,128,193,128,193,128, + 192,0,192,0,192,0,192,0,96,128,33,0,30,0,8,0, + 12,0,2,0,3,0,3,0,30,0,9,18,36,12,1,0, + 96,0,112,0,48,0,8,0,0,0,0,0,30,0,35,0, + 97,128,193,128,193,128,255,128,192,0,192,0,192,128,96,128, + 33,0,30,0,9,18,36,12,1,0,1,0,3,0,2,0, + 4,0,8,0,0,0,30,0,35,0,97,128,193,128,193,128, + 255,128,192,0,192,0,192,128,96,128,33,0,30,0,9,18, + 36,12,1,0,8,0,12,0,28,0,18,0,33,0,0,0, + 30,0,35,0,97,128,193,128,193,128,255,128,192,0,192,0, + 192,128,96,128,33,0,30,0,9,17,34,12,1,0,51,0, + 51,0,1,0,0,0,0,0,30,0,35,0,97,128,193,128, + 193,128,255,128,192,0,192,0,192,128,96,128,33,0,30,0, + 7,18,18,8,0,0,192,224,96,16,8,0,120,24,24,24, + 24,24,24,24,24,24,24,126,6,18,18,7,1,0,4,12, + 24,16,32,0,240,48,48,48,48,48,48,48,48,48,48,252, + 8,17,17,8,0,0,24,56,36,195,0,120,24,24,24,24, + 24,24,24,24,24,24,126,7,17,17,9,1,0,4,198,198, + 0,0,120,24,24,24,24,24,24,24,24,24,24,124,10,18, + 36,13,1,0,56,128,27,0,12,0,22,0,35,0,3,0, + 31,128,33,128,97,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,33,128,30,0,13,17,34,15,1,0,14,64, + 19,192,0,0,0,0,0,0,243,192,52,192,56,96,56,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,253,248, + 10,18,36,13,1,0,96,0,48,0,16,0,8,0,4,0, + 0,0,30,0,33,128,97,128,192,192,192,192,192,192,192,192, + 192,192,192,192,97,128,33,128,30,0,10,18,36,13,1,0, + 1,128,3,128,3,0,4,0,0,0,0,0,30,0,33,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,97,128, + 33,128,30,0,10,18,36,13,1,0,4,0,12,0,14,0, + 18,0,33,0,0,0,30,0,33,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,33,128,30,0,10,17, + 34,13,1,0,60,128,47,0,0,0,0,0,0,0,30,0, + 33,128,97,128,192,192,192,192,192,192,192,192,192,192,192,192, + 97,128,33,128,30,0,10,17,34,13,1,0,49,128,49,128, + 1,0,0,0,0,0,30,0,33,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,33,128,30,0,22,16, + 48,24,1,255,0,112,0,0,112,0,0,112,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,255,252,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112, + 0,0,112,0,10,12,24,13,1,0,30,64,33,128,96,128, + 193,192,194,192,196,192,200,192,208,192,208,192,97,128,97,128, + 158,0,13,18,36,14,0,0,16,0,24,0,12,0,4,0, + 2,0,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,18,36,14, + 0,0,0,192,0,192,1,128,2,0,0,0,0,0,241,224, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,224, + 48,224,57,96,30,120,13,18,36,14,0,0,2,0,6,0, + 5,0,8,128,16,0,0,0,241,224,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,224,48,224,57,96,30,120, + 13,17,34,14,0,0,24,192,24,192,0,0,0,0,0,0, + 240,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,224,48,224,57,96,30,120,13,24,48,14,0,250,0,96, + 0,224,0,192,1,0,0,0,0,0,252,248,56,32,24,32, + 24,64,12,64,12,64,12,128,6,128,6,128,7,0,3,0, + 3,0,3,0,2,0,34,0,98,0,100,0,56,0,11,24, + 48,14,1,250,48,0,240,0,48,0,48,0,48,0,48,0, + 49,192,54,224,52,96,56,96,56,96,48,96,48,192,48,192, + 49,128,49,0,50,0,60,0,48,0,48,0,48,0,48,0, + 48,0,96,0,13,23,46,14,0,250,8,64,12,96,12,96, + 0,0,0,0,252,120,24,32,24,32,24,64,12,64,12,64, + 14,128,6,128,6,128,7,0,3,0,3,0,2,0,2,0, + 34,0,114,0,100,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y= 8 dx=24 dy= 0 ascent=18 len=66 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =18 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18n[595] U8G_SECTION(".progmem.u8g_font_osr18n") = { + 0,68,33,235,248,18,0,0,0,0,42,57,0,18,250,18, + 0,10,10,20,14,2,8,12,0,12,0,204,192,201,192,42, + 0,30,0,235,192,201,192,12,0,12,0,22,22,66,24,1, + 252,0,16,0,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,255, + 255,252,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,3,8,8,7,2,252,192,224,224,32,32,64,64, + 128,7,1,1,11,2,6,254,3,3,3,7,2,0,224,224, + 224,8,24,24,12,2,250,1,1,2,2,2,4,4,4,12, + 8,8,24,16,16,16,32,32,32,64,64,64,128,128,128,12, + 18,36,15,1,0,15,0,16,192,32,64,96,96,96,32,192, + 48,192,48,192,48,192,48,192,48,192,48,192,48,192,48,96, + 32,96,96,32,64,16,192,15,0,9,18,36,15,3,0,8, + 0,8,0,24,0,248,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,255,128,10,18,36,15,2,0,30,0,99,128,129,192,128, + 192,128,192,224,192,240,192,32,192,1,128,3,0,6,0,8, + 0,16,0,32,0,64,64,192,64,255,192,255,192,11,18,36, + 15,2,0,63,0,97,128,192,192,224,192,240,192,0,192,0, + 192,1,128,62,0,1,128,0,192,0,96,96,96,240,96,240, + 96,192,192,65,128,63,0,12,18,36,15,2,0,1,0,3, + 0,3,0,7,0,15,0,11,0,19,0,51,0,35,0,67, + 0,195,0,131,0,255,224,3,0,3,0,3,0,3,0,31, + 240,11,18,36,15,2,0,96,192,127,128,126,0,64,0,64, + 0,64,0,95,0,97,128,64,192,64,224,0,96,0,96,96, + 96,240,96,224,192,192,192,65,128,62,0,11,18,36,15,2, + 0,15,0,24,128,48,64,96,192,96,192,64,0,192,0,207, + 0,209,192,224,192,224,224,224,96,224,96,224,96,96,224,96, + 192,49,128,15,0,10,18,36,15,3,0,255,192,255,192,128, + 64,128,64,128,128,0,128,1,0,1,0,2,0,6,0,6, + 0,12,0,12,0,30,0,30,0,30,0,30,0,14,0,12, + 18,36,15,2,0,31,128,48,224,96,96,192,48,192,48,224, + 48,240,32,124,64,63,128,55,224,96,240,192,112,192,48,192, + 48,192,48,96,96,112,192,31,128,11,18,36,15,2,0,30, + 0,49,128,96,192,224,192,192,64,192,96,192,96,192,224,96, + 224,113,96,30,96,0,96,0,64,96,192,96,192,64,128,65, + 0,62,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 3 y=13 dx=28 dy= 0 ascent=20 len=72 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =19 descent=-6 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_SECTION(".progmem.u8g_font_osr18r") = { + 0,68,33,235,248,18,4,197,10,125,32,127,250,20,250,19, + 250,0,0,0,7,0,0,3,18,18,7,2,0,224,224,224, + 224,224,224,64,64,64,64,64,64,64,64,0,224,224,224,6, + 5,5,10,2,13,204,204,204,204,72,14,18,36,18,2,0, + 4,32,4,32,4,32,4,32,4,32,255,252,8,64,8,64, + 8,64,8,64,8,64,24,64,255,252,16,128,16,128,16,128, + 16,128,16,128,11,22,44,15,2,254,9,0,9,0,31,128, + 41,64,73,32,73,32,73,96,73,96,105,0,61,0,31,128, + 15,192,9,192,9,96,233,32,233,32,201,32,201,64,105,64, + 31,128,9,0,9,0,18,18,54,22,2,0,56,2,0,68, + 4,0,198,8,0,198,8,0,198,16,0,198,32,0,198,32, + 0,68,64,0,56,64,0,0,134,0,1,25,128,1,48,128, + 2,48,192,4,48,192,4,48,192,8,48,192,8,24,128,16, + 15,0,18,18,54,20,1,0,7,128,0,8,64,0,24,64, + 0,24,64,0,24,192,0,28,128,0,15,0,0,6,31,192, + 15,6,0,23,6,0,35,132,0,97,196,0,192,232,0,192, + 240,0,192,112,0,224,120,128,96,220,128,63,15,0,2,5, + 5,7,2,13,192,192,192,192,64,6,23,23,10,3,252,8, + 16,48,32,64,64,192,128,128,128,128,128,128,128,128,192,64, + 64,96,32,16,24,12,6,23,23,9,1,252,64,32,48,16, + 24,8,8,12,4,4,4,4,4,4,12,8,8,8,16,16, + 32,64,192,10,10,20,14,2,8,12,0,12,0,204,192,201, + 192,42,0,30,0,235,192,201,192,12,0,12,0,22,22,66, + 24,1,252,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,255,255,252,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,3,8,8,7,2,252,192,224,224,32,32, + 64,64,128,7,1,1,11,2,6,254,3,3,3,7,2,0, + 224,224,224,8,24,24,12,2,250,1,1,2,2,2,4,4, + 4,12,8,8,24,16,16,16,32,32,32,64,64,64,128,128, + 128,12,18,36,15,1,0,15,0,16,192,32,64,96,96,96, + 32,192,48,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,96,32,96,96,32,64,16,192,15,0,9,18,36,15,3, + 0,8,0,8,0,24,0,248,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,128,10,18,36,15,2,0,30,0,99,128,129, + 192,128,192,128,192,224,192,240,192,32,192,1,128,3,0,6, + 0,8,0,16,0,32,0,64,64,192,64,255,192,255,192,11, + 18,36,15,2,0,63,0,97,128,192,192,224,192,240,192,0, + 192,0,192,1,128,62,0,1,128,0,192,0,96,96,96,240, + 96,240,96,192,192,65,128,63,0,12,18,36,15,2,0,1, + 0,3,0,3,0,7,0,15,0,11,0,19,0,51,0,35, + 0,67,0,195,0,131,0,255,224,3,0,3,0,3,0,3, + 0,31,240,11,18,36,15,2,0,96,192,127,128,126,0,64, + 0,64,0,64,0,95,0,97,128,64,192,64,224,0,96,0, + 96,96,96,240,96,224,192,192,192,65,128,62,0,11,18,36, + 15,2,0,15,0,24,128,48,64,96,192,96,192,64,0,192, + 0,207,0,209,192,224,192,224,224,224,96,224,96,224,96,96, + 224,96,192,49,128,15,0,10,18,36,15,3,0,255,192,255, + 192,128,64,128,64,128,128,0,128,1,0,1,0,2,0,6, + 0,6,0,12,0,12,0,30,0,30,0,30,0,30,0,14, + 0,12,18,36,15,2,0,31,128,48,224,96,96,192,48,192, + 48,224,48,240,32,124,64,63,128,55,224,96,240,192,112,192, + 48,192,48,192,48,96,96,112,192,31,128,11,18,36,15,2, + 0,30,0,49,128,96,192,224,192,192,64,192,96,192,96,192, + 224,96,224,113,96,30,96,0,96,0,64,96,192,96,192,64, + 128,65,0,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,8,2,252,96,240,240, + 0,0,0,0,0,96,240,240,16,16,32,32,64,20,21,63, + 24,2,253,0,0,48,0,0,192,0,3,0,0,12,0,0, + 48,0,0,224,0,3,128,0,14,0,0,24,0,0,96,0, + 0,192,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,1,128,0,0,96,0, + 0,16,22,6,18,24,1,4,255,255,252,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,252,20,21,63,24,2,253, + 192,0,0,48,0,0,12,0,0,3,0,0,0,192,0,0, + 112,0,0,28,0,0,7,0,0,1,128,0,0,96,0,0, + 48,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 1,128,0,6,0,0,24,0,0,96,0,0,128,0,0,9, + 18,36,12,2,0,62,0,67,0,129,128,129,128,225,128,97, + 128,3,0,6,0,12,0,16,0,48,0,34,0,34,0,28, + 0,0,0,28,0,28,0,28,0,18,18,54,20,1,0,3, + 248,0,12,6,0,16,109,0,33,156,128,67,12,128,70,8, + 64,142,8,64,142,24,64,140,24,64,140,16,64,140,48,128, + 140,48,128,140,241,0,71,30,0,96,0,0,32,0,0,24, + 12,0,7,240,0,18,18,54,20,2,0,0,128,0,0,192, + 0,1,192,0,1,192,0,1,224,0,3,224,0,2,96,0, + 2,112,0,6,112,0,4,48,0,4,56,0,12,56,0,15, + 248,0,24,28,0,16,12,0,16,12,0,48,14,0,254,63, + 192,15,18,36,17,1,0,255,240,24,28,24,12,24,6,24, + 6,24,6,24,12,24,24,31,224,24,24,24,12,24,6,24, + 6,24,6,24,6,24,12,24,28,255,240,14,18,36,18,2, + 0,7,132,24,108,32,60,96,28,96,12,192,12,192,4,192, + 0,192,0,192,0,192,0,192,4,96,4,96,4,32,8,48, + 24,24,48,7,192,17,18,54,20,1,0,255,240,0,24,12, + 0,24,6,0,24,3,0,24,3,0,24,1,128,24,1,128, + 24,1,128,24,1,128,24,1,128,24,1,128,24,1,128,24, + 1,128,24,3,0,24,3,0,24,6,0,24,12,0,255,240, + 0,15,18,36,18,1,0,255,254,24,6,24,2,24,2,24, + 2,24,34,24,32,24,96,31,224,24,96,24,32,24,32,24, + 34,24,2,24,2,24,6,24,14,255,254,15,18,36,17,1, + 0,255,254,24,6,24,2,24,2,24,2,24,34,24,32,24, + 96,31,224,24,96,24,32,24,32,24,32,24,0,24,0,24, + 0,24,0,127,0,17,18,54,19,2,0,7,196,0,24,100, + 0,48,28,0,96,28,0,96,12,0,96,4,0,192,4,0, + 192,0,0,192,127,128,192,28,0,192,28,0,192,28,0,192, + 28,0,96,28,0,96,28,0,48,52,0,24,100,0,7,132, + 0,18,18,54,20,1,0,255,63,192,24,6,0,24,6,0, + 24,6,0,24,6,0,24,6,0,24,6,0,24,6,0,31, + 254,0,24,6,0,24,6,0,24,6,0,24,6,0,24,6, + 0,24,6,0,24,6,0,24,6,0,255,63,192,8,18,18, + 10,1,0,255,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,12,18,36,14,1,0,7,240,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,97,128,241,128,225,128,193,128,67,0,62,0,17, + 18,54,19,1,0,255,63,128,24,14,0,24,8,0,24,16, + 0,24,32,0,24,64,0,24,128,0,25,192,0,26,192,0, + 28,224,0,24,96,0,24,112,0,24,56,0,24,56,0,24, + 28,0,24,28,0,24,14,0,255,127,128,15,18,36,17,1, + 0,255,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,2,24,2,24,2,24,6,24, + 6,24,14,255,254,20,18,54,22,1,0,252,3,240,28,3, + 128,30,5,128,22,5,128,22,5,128,23,5,128,19,9,128, + 19,9,128,19,137,128,19,145,128,17,145,128,17,209,128,17, + 209,128,16,225,128,16,225,128,16,225,128,16,65,128,254,79, + 240,18,18,54,19,1,0,252,15,192,28,2,0,30,2,0, + 22,2,0,23,2,0,19,130,0,17,130,0,17,194,0,16, + 226,0,16,226,0,16,114,0,16,50,0,16,58,0,16,30, + 0,16,14,0,16,14,0,16,6,0,254,2,0,15,18,36, + 18,2,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,18,36,17,1,0,255,240,24, + 28,24,12,24,6,24,6,24,6,24,12,24,24,31,240,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,255, + 0,15,22,44,18,2,252,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,99,140,36,76,52,120,28,114,7,226,0,98,0,118,0, + 60,0,24,17,18,54,19,1,0,255,240,0,24,24,0,24, + 12,0,24,12,0,24,12,0,24,12,0,24,24,0,31,224, + 0,24,48,0,24,56,0,24,24,0,24,24,0,24,24,0, + 24,28,128,24,28,128,24,28,128,24,31,0,255,15,0,13, + 18,36,16,2,0,30,32,97,160,192,96,192,96,192,32,192, + 32,224,0,124,0,63,128,15,224,129,240,128,112,128,24,192, + 24,192,24,224,16,152,32,135,192,15,18,36,18,2,0,255, + 254,195,14,131,6,131,2,3,2,3,2,3,2,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,240,19,18,54,21,1,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,18, + 18,54,20,1,0,255,31,192,28,3,0,28,2,0,12,2, + 0,14,6,0,6,4,0,7,4,0,7,8,0,3,8,0, + 3,136,0,3,144,0,1,144,0,1,208,0,0,224,0,0, + 224,0,0,224,0,0,64,0,0,64,0,26,18,72,28,1, + 0,255,63,159,192,28,14,3,0,12,6,2,0,12,14,2, + 0,14,15,6,0,14,15,4,0,6,19,4,0,7,19,140, + 0,7,19,136,0,3,49,136,0,3,161,216,0,3,161,208, + 0,1,160,208,0,1,192,240,0,1,192,224,0,0,192,96, + 0,0,128,96,0,0,128,64,0,18,18,54,20,1,0,127, + 191,128,14,12,0,14,12,0,7,8,0,7,16,0,3,176, + 0,1,160,0,1,192,0,0,192,0,0,224,0,1,96,0, + 3,112,0,2,56,0,4,56,0,12,28,0,8,12,0,24, + 14,0,254,63,192,17,18,54,19,1,0,255,31,128,28,6, + 0,28,4,0,14,4,0,6,8,0,7,8,0,3,144,0, + 3,160,0,1,224,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,7,252, + 0,14,18,36,17,2,0,127,252,112,56,96,48,64,112,64, + 224,128,192,1,192,3,128,3,0,7,0,14,0,12,4,28, + 4,56,4,48,12,112,28,224,56,255,248,5,23,23,10,3, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,248,8,24,24,12,2,250,128,128, + 128,64,64,64,32,32,32,16,16,16,16,8,8,8,4,4, + 4,2,2,2,1,1,5,23,23,10,2,251,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,248,11,9,18,15,2,9,4,0,14,0,10,0,17, + 0,49,128,32,128,64,64,64,96,128,32,14,1,2,14,0, + 252,255,252,4,4,4,11,2,13,192,224,96,16,11,12,24, + 13,1,0,30,0,99,0,65,128,97,128,33,128,15,128,113, + 128,193,128,195,160,195,160,197,160,121,192,11,18,36,13,0, + 0,240,0,48,0,48,0,48,0,48,0,48,0,51,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,40,192,39,128,9,12,24,11,1,0,30,0,33,0,96, + 128,193,128,193,128,192,0,192,0,192,0,192,128,96,128,33, + 0,30,0,12,18,36,14,1,0,7,192,0,192,0,192,0, + 192,0,192,0,192,28,192,98,192,97,192,193,192,192,192,192, + 192,192,192,192,192,192,192,97,192,97,192,30,240,9,12,24, + 12,1,0,30,0,35,0,97,128,193,128,193,128,255,128,192, + 0,192,0,192,128,96,128,33,0,30,0,9,18,36,9,1, + 0,15,0,24,128,49,128,49,0,48,0,48,0,254,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,254,0,12,18,36,15,2,250,30,112,97,176,225, + 240,192,192,192,192,192,192,225,128,97,128,30,0,224,0,255, + 0,127,192,64,96,128,32,128,32,128,32,192,64,63,128,13, + 18,36,15,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,51,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,6,18,18,8,1,0,112, + 112,32,0,0,0,240,48,48,48,48,48,48,48,48,48,48, + 252,7,24,24,8,255,250,6,6,0,0,0,0,62,6,6, + 6,6,6,6,6,6,6,6,6,6,6,198,198,140,120,12, + 18,36,14,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,49,240,48,128,49,0,50,0,50,0,54,0,59,0,51, + 0,49,128,49,192,48,224,253,240,6,18,18,8,1,0,240, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,19,12,36,21,1,0,243,199,0,52,249,128,56,113,192, + 56,97,192,48,97,192,48,97,192,48,97,192,48,97,192,48, + 97,192,48,97,192,48,97,192,253,251,224,13,12,24,15,1, + 0,243,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,10,12,24,13,1,0,30, + 0,33,128,97,128,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,33,128,30,0,11,18,36,14,1,250,243,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,56,192,55,128,48,0,48,0,48,0,48,0,48,0,252, + 0,12,18,36,13,1,250,28,64,98,64,97,192,192,192,192, + 192,192,192,192,192,192,192,192,192,97,192,97,192,30,192,0, + 192,0,192,0,192,0,192,0,192,3,240,9,12,24,11,1, + 0,243,128,52,128,57,128,56,128,56,0,48,0,48,0,48, + 0,48,0,48,0,48,0,252,0,9,12,24,11,1,0,125, + 0,131,0,129,0,193,0,240,0,124,0,31,0,131,128,128, + 128,192,128,224,128,159,0,8,17,17,10,1,0,16,16,16, + 48,48,254,48,48,48,48,48,48,48,49,49,51,30,13,12, + 24,14,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,12,24,14, + 1,0,252,248,48,96,48,64,24,64,24,128,12,128,12,128, + 13,0,7,0,7,0,2,0,2,0,19,12,36,21,1,0, + 253,251,224,48,96,128,48,96,128,24,113,0,24,177,0,12, + 177,0,12,154,0,13,26,0,7,28,0,7,12,0,2,12, + 0,2,8,0,12,12,24,14,1,0,249,224,48,128,57,0, + 25,0,14,0,14,0,6,0,11,0,19,0,17,128,33,192, + 243,240,13,18,36,14,0,250,252,248,56,32,24,32,24,64, + 12,64,12,64,12,128,6,128,6,128,7,0,3,0,3,0, + 2,0,2,0,34,0,98,0,100,0,56,0,9,12,24,12, + 1,0,255,128,195,128,131,0,134,0,142,0,12,0,24,0, + 56,0,48,128,96,128,96,128,255,128,6,23,23,12,3,251, + 12,16,48,48,48,48,56,24,24,24,16,224,48,16,24,24, + 56,48,48,48,48,16,12,1,24,24,7,3,250,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,23,23,11,3,251,192,32,48,48,48, + 112,96,96,96,96,32,28,48,96,96,96,96,112,48,48,48, + 32,192,15,5,10,17,1,4,32,4,254,2,143,194,129,254, + 64,124,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=29 h=28 x= 6 y=17 dx=32 dy= 0 ascent=28 len=88 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =22 descent=-7 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr21") = { + 0,76,38,232,247,21,5,131,12,189,32,255,249,28,248,22, + 249,0,0,0,8,0,0,4,21,21,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,64,0,96,240, + 240,96,7,5,5,11,2,17,238,204,204,204,68,15,21,42, + 19,2,0,2,16,6,16,6,16,4,16,4,48,4,48,255, + 254,4,32,12,32,12,32,8,32,8,96,8,96,8,64,255, + 254,24,64,24,64,16,192,16,192,16,128,16,128,13,25,50, + 17,2,254,5,0,5,0,15,128,53,96,37,16,69,24,69, + 24,69,56,69,56,117,48,61,0,63,0,15,192,7,224,5, + 240,5,48,101,24,229,24,229,24,197,24,69,48,69,32,61, + 192,7,0,5,0,19,21,63,25,3,0,60,1,0,70,2, + 0,66,2,0,195,4,0,195,8,0,195,8,0,195,16,0, + 195,16,0,66,32,0,102,32,0,56,64,0,0,67,0,0, + 140,192,1,8,64,1,24,96,2,24,96,2,24,96,4,24, + 96,4,24,96,8,8,64,8,7,128,20,21,63,23,2,0, + 3,128,0,12,64,0,8,32,0,24,32,0,24,32,0,24, + 96,0,28,64,0,12,128,0,15,0,0,7,15,240,15,1, + 128,27,129,0,51,193,0,97,194,0,96,226,0,224,244,0, + 224,124,0,224,56,0,224,60,0,96,60,32,59,198,192,3, + 5,5,7,2,17,224,192,192,192,64,6,28,28,10,3,250, + 4,12,24,16,32,32,64,64,64,128,128,128,128,128,128,128, + 128,128,128,192,64,64,32,32,16,24,8,4,6,28,28,11, + 2,250,128,192,64,32,48,16,24,8,8,8,4,4,4,4, + 4,4,4,4,12,8,8,24,16,48,32,96,192,128,10,12, + 24,14,2,9,12,0,14,0,204,64,228,192,53,0,14,0, + 63,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, + 1,252,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,255,255,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,4,8,8, + 8,2,251,224,240,240,16,16,16,32,64,7,2,2,11,2, + 7,254,254,4,4,4,8,2,0,96,240,240,96,9,28,56, + 13,2,250,0,128,0,128,1,128,1,0,1,0,1,0,2, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,16,0,16,0,16,0,32,0,32,0,32,0,64, + 0,64,0,64,0,192,0,128,0,128,0,14,21,42,17,1, + 0,7,128,24,64,48,32,32,48,96,16,96,24,96,24,224, + 24,224,24,224,24,224,28,224,28,224,24,224,24,224,24,96, + 24,96,24,96,48,48,32,16,96,15,192,10,21,42,17,3, + 0,2,0,6,0,6,0,14,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,255,192,12,21,42,17,2, + 0,31,0,32,192,64,96,128,112,128,112,192,112,240,112,112, + 112,32,96,0,224,0,192,1,0,6,0,12,0,24,0,48, + 16,96,16,64,16,224,112,255,240,255,240,12,21,42,17,2, + 0,31,0,97,192,192,224,224,96,240,96,112,112,0,96,0, + 96,0,224,48,192,63,0,0,192,0,96,0,112,0,112,96, + 112,240,112,240,112,192,96,192,192,127,128,14,21,42,17,2, + 0,0,64,0,192,1,192,1,192,3,192,7,192,5,192,13, + 192,9,192,17,192,49,192,33,192,65,192,193,192,255,252,1, + 192,1,192,1,192,1,192,1,192,15,252,12,21,42,17,2, + 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,79, + 0,112,192,64,96,64,96,0,112,0,112,0,112,96,112,240, + 112,240,112,224,96,192,224,64,192,63,128,12,21,42,17,2, + 0,7,128,24,64,16,96,48,224,96,224,96,192,96,0,224, + 0,231,128,232,192,240,96,240,96,224,112,224,112,224,112,224, + 112,96,112,96,96,112,96,48,192,31,128,11,21,42,17,3, + 0,255,224,255,224,192,32,128,32,128,64,128,64,0,64,0, + 128,1,0,1,0,2,0,6,0,6,0,12,0,12,0,12, + 0,30,0,30,0,30,0,30,0,30,0,14,21,42,17,2, + 0,15,128,48,96,96,48,224,24,224,24,224,24,224,24,240, + 16,124,32,63,192,15,224,51,240,96,248,224,56,224,28,224, + 28,224,24,224,24,96,24,112,48,31,192,12,21,42,17,2, + 0,15,0,48,128,96,64,96,96,224,96,224,96,224,112,224, + 112,224,112,96,112,96,240,49,176,14,48,0,48,0,32,48, + 96,112,96,112,64,96,192,96,128,63,0,4,14,14,8,2, + 0,96,240,240,96,0,0,0,0,0,0,96,240,240,96,4, + 18,18,8,2,251,96,240,240,96,0,0,0,0,0,0,224, + 240,240,16,16,16,32,64,22,24,72,27,2,251,0,0,12, + 0,0,56,0,0,96,0,1,128,0,7,0,0,28,0,0, + 112,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 0,224,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,3,128,0,0,224,0, + 0,56,0,0,12,24,7,21,26,1,5,255,255,255,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 22,24,72,27,3,251,192,0,0,112,0,0,24,0,0,6, + 0,0,3,128,0,0,224,0,0,56,0,0,12,0,0,3, + 0,0,0,192,0,0,112,0,0,28,0,0,28,0,0,48, + 0,0,192,0,3,128,0,14,0,0,56,0,0,96,0,1, + 128,0,7,0,0,28,0,0,112,0,0,192,0,0,11,21, + 42,14,2,0,30,0,97,128,128,192,128,192,240,224,240,192, + 97,192,1,128,3,128,6,0,12,0,8,0,17,0,17,0, + 17,0,14,0,0,0,12,0,30,0,30,0,12,0,21,21, + 63,25,2,1,3,255,0,12,0,128,24,0,64,48,0,32, + 32,59,144,64,199,16,65,135,8,131,7,8,135,6,8,134, + 6,8,142,14,8,142,14,8,142,12,16,142,28,16,142,28, + 32,70,44,64,67,199,128,32,0,0,16,0,0,8,1,128, + 7,222,0,20,21,63,22,1,0,0,32,0,0,96,0,0, + 96,0,0,112,0,0,240,0,0,240,0,0,184,0,1,56, + 0,1,56,0,3,28,0,3,28,0,2,28,0,6,14,0, + 6,14,0,7,254,0,12,7,0,12,7,0,8,7,0,24, + 3,128,24,3,128,255,31,240,16,21,42,20,2,0,255,240, + 28,12,28,6,28,7,28,7,28,7,28,7,28,6,28,12, + 31,240,28,28,28,6,28,6,28,7,28,7,28,7,28,7, + 28,7,28,6,28,12,255,240,15,21,42,19,2,1,15,226, + 16,54,48,30,32,14,96,6,96,6,224,6,224,2,224,0, + 224,0,224,0,224,0,224,0,224,2,96,2,96,2,96,4, + 32,4,48,12,24,8,7,240,19,21,63,22,2,0,255,248, + 0,28,6,0,28,3,0,28,1,128,28,1,128,28,1,192, + 28,0,192,28,0,192,28,0,192,28,0,224,28,0,224,28, + 0,224,28,0,192,28,0,192,28,0,192,28,1,192,28,1, + 128,28,1,0,28,3,0,28,6,0,255,248,0,17,21,63, + 20,2,0,255,255,128,28,3,128,28,3,128,28,1,128,28, + 1,128,28,0,128,28,32,128,28,32,0,28,32,0,28,96, + 0,31,224,0,28,96,0,28,32,0,28,32,128,28,32,128, + 28,0,128,28,1,128,28,1,128,28,3,128,28,7,128,255, + 255,128,17,21,63,20,2,0,255,255,128,28,3,128,28,3, + 128,28,1,128,28,1,128,28,0,128,28,32,128,28,32,0, + 28,32,0,28,96,0,31,224,0,28,96,0,28,32,0,28, + 32,0,28,32,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,21,63,21,2,1,15,226,0, + 24,26,0,48,14,0,32,14,0,96,6,0,96,6,0,224, + 2,0,224,2,0,224,0,0,224,0,0,224,127,192,224,14, + 0,224,14,0,224,14,0,224,14,0,96,14,0,96,14,0, + 32,14,0,48,26,0,16,50,0,15,226,0,20,21,63,23, + 2,0,255,15,240,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,31,255,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,15, + 240,8,21,21,12,2,0,255,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,255,13,21,42,15, + 1,0,7,248,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 112,224,240,192,240,192,192,192,65,128,127,0,19,21,63,22, + 2,0,255,31,224,28,7,0,28,6,0,28,12,0,28,8, + 0,28,16,0,28,32,0,28,64,0,28,192,0,29,224,0, + 30,224,0,28,112,0,28,112,0,28,56,0,28,28,0,28, + 28,0,28,14,0,28,14,0,28,7,0,28,7,0,255,63, + 224,16,21,42,20,2,0,255,128,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,1,28,1,28,1,28,1,28,3,28,3,28,15,255, + 255,21,21,63,25,2,0,252,1,248,30,1,224,30,1,224, + 30,2,224,22,2,224,23,2,224,23,2,224,19,4,224,19, + 132,224,19,132,224,17,132,224,17,200,224,17,200,224,16,200, + 224,16,208,224,16,240,224,16,240,224,16,112,224,16,96,224, + 16,96,224,254,39,248,20,21,63,23,2,0,252,7,240,28, + 0,128,30,0,128,31,0,128,23,0,128,19,128,128,19,192, + 128,17,192,128,16,224,128,16,240,128,16,112,128,16,56,128, + 16,56,128,16,28,128,16,30,128,16,14,128,16,7,128,16, + 7,128,16,3,128,16,1,128,254,1,128,17,22,66,20,2, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,21,63,20,2,0,255,248,0,28,14,0,28, + 7,0,28,3,0,28,3,0,28,3,128,28,3,0,28,3, + 0,28,6,0,28,12,0,31,240,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,255,128,0,17,27,81,20,2,251,0,128, + 0,7,112,0,24,8,0,16,12,0,48,6,0,96,6,0, + 96,3,0,96,3,0,224,3,0,224,3,0,224,3,0,224, + 3,128,224,3,128,224,3,0,224,3,0,96,3,0,96,3, + 0,97,198,0,51,38,0,26,60,0,14,60,0,7,48,128, + 0,241,0,0,49,0,0,57,0,0,31,0,0,14,0,18, + 21,63,21,2,0,255,248,0,28,14,0,28,6,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,6,0,28,12,0, + 31,240,0,28,24,0,28,24,0,28,12,0,28,12,0,28, + 12,0,28,14,0,28,14,64,28,14,64,28,14,64,28,7, + 128,255,131,128,14,21,42,18,3,1,63,144,96,208,192,112, + 192,48,192,16,192,16,224,16,240,16,124,0,63,128,31,224, + 7,240,128,248,128,56,128,28,128,12,192,12,224,12,224,8, + 144,16,142,224,17,21,63,21,2,0,255,255,128,225,195,128, + 193,193,128,193,193,128,193,192,128,129,192,128,129,192,128,129, + 192,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,15,248,0,20,21,63,23,2,0,255, + 7,240,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,12,0,128,12,1,0,6,2,0,3,252,0,20,22, + 66,23,2,255,255,143,240,28,1,192,28,1,128,14,1,128, + 14,1,0,14,1,0,7,3,0,7,2,0,7,2,0,3, + 134,0,3,132,0,3,132,0,1,196,0,1,200,0,1,200, + 0,0,232,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,32,0,0,32,0,29,22,88,32,2,255,255,63,231,248, + 28,7,0,192,28,7,0,128,28,7,0,128,12,7,128,128, + 14,15,129,128,14,11,129,0,6,9,129,0,7,9,195,0, + 7,25,194,0,7,17,194,0,3,16,230,0,3,144,228,0, + 3,176,228,0,1,160,108,0,1,224,120,0,1,224,120,0, + 1,192,120,0,0,192,48,0,0,192,48,0,0,192,48,0, + 0,128,16,0,19,21,63,22,2,0,255,159,224,14,7,0, + 14,6,0,7,4,0,7,12,0,3,136,0,3,208,0,1, + 208,0,1,224,0,0,224,0,0,112,0,0,240,0,1,184, + 0,1,56,0,2,28,0,6,28,0,4,14,0,8,14,0, + 24,7,0,24,7,0,255,31,224,19,21,63,21,1,0,255, + 143,224,30,3,128,14,3,0,14,2,0,7,2,0,7,4, + 0,3,132,0,1,200,0,1,200,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,7,254,0,15,21, + 42,19,2,0,63,254,56,14,112,28,96,56,64,56,64,112, + 64,240,0,224,1,192,1,192,3,128,7,128,7,0,14,2, + 14,2,28,2,60,2,56,6,112,6,240,14,255,254,6,27, + 27,11,3,250,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,252,9, + 28,56,13,2,250,128,0,128,0,192,0,64,0,64,0,64, + 0,32,0,32,0,32,0,16,0,16,0,16,0,24,0,8, + 0,8,0,12,0,4,0,4,0,4,0,2,0,2,0,2, + 0,1,0,1,0,1,0,1,128,0,128,0,128,6,27,27, + 11,2,250,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,252,13,11, + 22,17,2,10,2,0,2,0,5,0,13,128,8,128,24,192, + 16,64,32,32,96,48,64,16,192,24,15,1,2,15,0,251, + 255,254,5,5,5,13,2,16,192,224,96,48,8,13,14,28, + 15,1,0,31,0,33,128,97,192,113,192,113,192,1,192,15, + 192,49,192,97,192,225,192,225,200,225,200,226,216,60,240,13, + 21,42,15,1,0,248,0,56,0,56,0,56,0,56,0,56, + 0,56,0,59,192,60,96,56,48,56,48,56,48,56,48,56, + 56,56,56,56,48,56,48,56,48,56,32,44,96,35,192,10, + 14,28,12,1,0,31,0,48,128,96,64,96,192,225,192,224, + 128,224,0,224,0,224,0,224,0,96,64,96,128,48,128,31, + 0,13,21,42,15,1,0,3,224,0,224,0,224,0,224,0, + 224,0,224,0,224,30,224,49,224,97,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 248,10,14,28,13,1,0,30,0,49,128,97,128,96,192,224, + 192,224,192,255,192,224,0,224,0,224,64,96,64,96,64,48, + 128,31,0,10,21,42,10,1,0,15,0,24,128,57,192,57, + 128,56,0,56,0,56,0,254,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,254,0,14,21,42,16,2,249,31,56,113,200,96,220,224, + 248,224,224,224,224,224,224,96,192,49,128,31,0,96,0,128, + 0,224,0,127,224,56,112,64,16,128,16,128,16,128,48,64, + 96,63,128,14,21,42,16,1,0,248,0,56,0,56,0,56, + 0,56,0,56,0,56,0,57,192,62,96,60,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,252,252,6,21,21,7,1,0,112,112,112,0,0,0,0, + 240,112,112,112,112,112,112,112,112,112,112,112,112,252,8,28, + 28,9,255,249,6,7,6,0,0,0,0,31,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,70,230,198,204,120, + 13,21,42,15,1,0,248,0,56,0,56,0,56,0,56,0, + 56,0,56,0,57,248,56,192,56,128,57,0,57,0,58,0, + 63,0,63,0,59,128,57,192,56,192,56,224,56,224,253,248, + 7,21,21,8,1,0,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,254,21,14,42,23,1, + 0,249,195,192,62,100,224,60,120,96,56,120,96,56,112,96, + 56,112,96,56,112,96,56,112,96,56,112,96,56,112,96,56, + 112,96,56,112,96,56,112,96,252,253,248,14,14,28,16,1, + 0,249,192,62,96,60,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,252,252,12,14,28, + 14,1,0,15,0,48,128,96,192,96,96,224,96,224,96,224, + 112,224,112,224,96,224,96,96,96,96,192,48,128,15,0,13, + 21,42,15,1,249,251,192,60,96,56,48,56,48,56,48,56, + 48,56,56,56,56,56,48,56,48,56,48,56,48,60,96,59, + 192,56,0,56,0,56,0,56,0,56,0,56,0,252,0,13, + 21,42,15,1,249,30,32,49,32,96,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 224,0,224,0,224,0,224,0,224,0,224,0,224,3,248,10, + 14,28,12,1,0,249,128,58,64,60,192,60,192,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,252, + 0,10,14,28,13,2,0,60,128,195,128,129,128,128,128,192, + 128,240,0,62,0,15,128,131,192,128,192,192,64,192,64,160, + 128,159,0,8,20,20,10,1,0,16,16,16,16,48,48,254, + 48,48,48,48,48,48,48,48,49,49,49,59,30,14,14,28, + 16,1,0,248,240,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,240,25,112,14,124,15, + 14,28,15,0,0,254,126,56,16,24,16,28,16,12,32,12, + 32,6,32,6,64,7,64,3,64,3,128,1,128,1,128,1, + 0,22,14,42,22,0,0,254,252,252,56,56,32,24,56,32, + 28,56,32,12,56,64,12,60,64,6,76,64,6,76,128,7, + 70,128,3,134,128,3,135,0,1,131,0,1,131,0,1,2, + 0,14,14,28,16,1,0,124,248,56,96,24,64,12,128,14, + 128,7,0,7,0,3,128,5,128,5,192,8,192,16,224,16, + 96,249,252,15,21,42,15,0,249,254,126,24,16,24,16,28, + 16,12,32,12,32,14,32,6,64,6,64,6,64,3,128,3, + 128,3,128,1,128,1,0,1,0,1,0,98,0,114,0,100, + 0,56,0,10,14,28,13,1,0,255,192,193,192,129,128,131, + 0,135,0,6,0,14,0,28,0,24,0,56,64,48,64,112, + 64,224,192,255,192,6,27,27,12,3,250,12,24,48,48,48, + 48,48,56,24,24,24,16,48,192,48,16,24,24,24,56,48, + 48,48,48,48,16,12,1,28,28,8,4,250,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,27,27,12,3,250,128,96, + 32,48,48,48,112,96,96,96,96,96,32,28,48,96,96,96, + 96,96,112,48,48,48,32,96,192,16,6,12,18,1,5,56, + 2,126,1,143,193,131,241,128,255,64,62,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,8, + 0,0,4,21,21,8,2,249,96,240,240,96,0,64,64,96, + 96,96,96,96,96,96,96,240,240,240,240,240,96,10,21,42, + 17,3,253,4,0,4,0,4,0,4,0,31,0,52,128,100, + 64,100,192,229,192,228,128,228,0,228,0,228,0,228,0,100, + 64,100,64,52,128,31,0,4,0,4,0,4,0,16,21,42, + 21,2,0,0,60,0,194,0,131,1,135,1,135,3,130,3, + 128,3,128,3,128,63,128,3,240,3,128,3,128,3,128,3, + 0,3,0,123,1,142,1,135,3,135,254,120,252,13,13,26, + 17,2,4,143,136,112,112,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,64,16,96,48,112,112,143,136,16,21,42, + 17,1,0,252,63,56,8,56,8,24,16,28,16,28,32,14, + 32,14,64,6,64,7,128,3,128,63,248,3,128,3,128,63, + 248,3,128,3,128,3,128,3,128,3,128,31,240,1,27,27, + 8,4,251,128,128,128,128,128,128,128,128,128,128,128,0,0, + 0,0,0,128,128,128,128,128,128,128,128,128,128,128,11,27, + 54,19,3,250,30,0,49,0,97,128,99,128,97,0,112,0, + 56,0,60,0,62,0,79,0,131,128,129,192,128,224,192,96, + 224,32,112,32,56,64,28,128,15,0,7,0,3,0,1,128, + 33,128,113,128,97,128,35,0,28,0,8,3,3,12,2,16, + 195,231,195,21,22,66,23,1,0,0,32,0,3,222,0,12, + 1,128,24,0,192,48,114,96,33,142,32,67,6,16,67,2, + 16,135,2,8,135,0,8,135,0,8,135,0,8,135,0,8, + 135,0,8,135,2,8,67,2,16,67,4,16,33,132,32,48, + 120,96,24,0,192,12,1,128,3,222,0,8,9,9,12,2, + 12,120,196,12,52,68,197,205,118,254,7,12,12,14,3,1, + 16,34,98,68,196,196,196,196,196,66,34,16,14,6,12,16, + 1,5,255,252,0,4,0,4,0,4,0,4,0,4,7,2, + 2,11,2,7,254,254,21,22,66,23,1,0,0,32,0,3, + 222,0,12,1,128,24,0,192,63,248,96,35,140,32,67,142, + 16,67,142,16,131,142,8,131,140,8,131,240,8,131,140,8, + 131,140,8,131,142,8,131,142,72,67,142,80,67,134,80,47, + 195,160,48,0,96,24,0,192,12,1,128,3,222,0,8,1, + 1,14,3,17,255,8,8,8,16,4,13,60,66,129,129,129, + 129,66,60,24,21,63,26,1,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,255,255,255,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,0,8,0,0,8,0,0,8,0,0, + 0,0,0,0,0,255,255,255,8,13,13,13,3,8,60,198, + 135,199,231,6,12,24,48,65,193,255,255,9,13,26,13,3, + 8,60,0,70,0,67,0,99,0,3,0,6,0,120,0,7, + 0,3,0,227,128,227,0,135,0,124,0,5,5,5,13,6, + 16,24,56,48,96,128,15,22,44,18,2,248,192,64,192,96, + 224,224,192,224,192,224,192,96,192,96,192,96,64,96,64,64, + 64,66,192,194,177,190,143,12,128,0,128,0,192,0,192,0, + 192,0,224,0,224,0,96,0,12,26,52,16,2,251,31,240, + 124,64,252,64,252,64,252,64,252,64,252,64,124,64,60,64, + 4,64,4,64,4,64,4,64,4,64,4,64,4,64,4,64, + 4,64,4,64,4,64,4,64,4,64,4,64,4,64,4,64, + 4,64,4,4,4,8,2,8,96,240,240,96,6,7,7,13, + 3,250,32,32,48,8,12,140,120,6,12,12,13,4,9,16, + 48,240,48,48,48,48,48,48,48,48,252,7,10,10,11,2, + 11,56,68,198,198,198,198,198,68,56,254,8,12,12,14,3, + 1,8,132,70,66,35,35,35,35,34,70,68,8,19,21,63, + 25,4,0,16,3,0,48,2,0,240,4,0,48,4,0,48, + 8,0,48,8,0,48,16,0,48,48,0,48,32,0,48,65, + 128,48,67,128,48,131,128,252,133,128,1,9,128,3,9,128, + 2,17,128,4,31,224,4,1,128,8,1,128,8,1,128,16, + 7,224,19,21,63,25,4,0,16,2,0,48,2,0,240,4, + 0,48,4,0,48,8,0,48,16,0,48,16,0,48,32,0, + 48,39,128,48,72,192,48,80,224,48,144,224,252,156,224,1, + 12,192,2,0,192,2,1,0,4,6,0,4,12,32,8,8, + 32,8,31,224,16,31,224,20,21,63,25,3,0,60,1,0, + 70,1,0,67,2,0,99,2,0,3,4,0,6,12,0,120, + 8,0,7,16,0,3,16,0,227,160,192,227,33,192,135,65, + 192,124,130,192,0,132,192,1,4,192,1,8,192,2,15,240, + 2,0,192,4,0,192,8,0,192,8,3,240,11,21,42,14, + 1,249,12,0,30,0,30,0,12,0,0,0,14,0,17,0, + 17,0,17,0,2,0,6,0,28,0,56,0,112,0,224,192, + 225,224,225,224,224,32,96,32,112,64,31,128,20,28,84,22, + 1,0,3,0,0,3,128,0,1,128,0,0,192,0,0,64, + 0,0,0,0,0,0,0,0,32,0,0,96,0,0,96,0, + 0,112,0,0,240,0,0,240,0,0,184,0,1,56,0,1, + 56,0,3,28,0,3,28,0,2,28,0,6,14,0,6,14, + 0,7,254,0,12,7,0,12,7,0,8,7,0,24,3,128, + 24,3,128,255,31,240,20,28,84,22,1,0,0,4,0,0, + 12,0,0,24,0,0,48,0,0,32,0,0,0,0,0,0, + 0,0,32,0,0,96,0,0,96,0,0,112,0,0,240,0, + 0,240,0,1,184,0,1,56,0,1,56,0,3,28,0,3, + 28,0,2,28,0,6,14,0,6,14,0,7,254,0,12,7, + 0,12,7,0,8,7,0,24,3,128,24,3,128,255,31,240, + 20,28,84,22,1,0,0,32,0,0,96,0,0,240,0,1, + 152,0,3,4,0,0,0,0,0,0,0,0,32,0,0,96, + 0,0,96,0,0,112,0,0,240,0,0,240,0,0,184,0, + 1,56,0,1,56,0,3,28,0,3,28,0,2,28,0,6, + 14,0,6,14,0,7,254,0,12,7,0,12,7,0,8,7, + 0,24,3,128,24,3,128,255,31,240,20,27,81,22,1,0, + 1,228,0,3,252,0,2,56,0,0,0,0,0,0,0,0, + 0,0,0,32,0,0,96,0,0,96,0,0,112,0,0,240, + 0,0,240,0,0,184,0,1,184,0,1,56,0,3,28,0, + 3,28,0,2,28,0,6,14,0,6,14,0,7,254,0,12, + 7,0,12,7,0,8,7,0,24,3,128,24,3,128,255,31, + 240,19,27,81,22,2,0,6,24,0,7,28,0,6,24,0, + 0,0,0,0,0,0,0,0,0,0,64,0,0,192,0,0, + 224,0,0,224,0,1,224,0,1,224,0,1,112,0,3,112, + 0,2,48,0,2,56,0,6,56,0,4,24,0,4,28,0, + 12,28,0,15,252,0,8,14,0,24,14,0,24,6,0,24, + 7,0,56,7,0,254,31,224,20,28,84,23,2,0,0,96, + 0,1,152,0,1,8,0,1,8,0,1,152,0,0,96,0, + 0,0,0,0,96,0,0,96,0,0,96,0,0,240,0,0, + 240,0,0,240,0,1,184,0,1,56,0,1,56,0,3,28, + 0,2,28,0,2,28,0,6,14,0,4,14,0,15,254,0, + 8,7,0,8,7,0,24,7,0,24,3,128,56,3,128,255, + 31,240,27,21,84,30,1,0,0,63,255,224,0,15,0,224, + 0,15,0,96,0,31,0,96,0,23,0,32,0,55,0,32, + 0,39,8,32,0,103,8,0,0,71,8,0,0,199,24,0, + 0,135,248,0,1,7,24,0,3,7,8,0,2,7,8,32, + 7,255,8,32,4,7,0,32,12,7,0,32,8,7,0,96, + 24,7,0,96,56,7,1,224,255,63,255,224,15,28,56,19, + 2,250,15,226,16,54,48,30,32,14,96,6,96,6,224,6, + 224,2,224,0,224,0,224,0,224,0,224,0,224,2,96,2, + 96,2,96,4,32,4,48,12,24,8,6,112,1,128,1,0, + 1,192,0,96,0,112,8,96,7,192,17,28,84,20,2,0, + 4,0,0,6,0,0,3,0,0,1,0,0,0,128,0,0, + 0,0,0,0,0,255,255,128,28,3,128,28,3,128,28,1, + 128,28,1,128,28,0,128,28,32,128,28,32,0,28,32,0, + 28,96,0,31,224,0,28,96,0,28,32,0,28,32,128,28, + 32,128,28,0,128,28,1,128,28,1,128,28,3,128,28,7, + 128,255,255,128,17,28,84,20,2,0,0,24,0,0,56,0, + 0,48,0,0,96,0,0,128,0,0,0,0,0,0,0,255, + 255,128,28,3,128,28,3,128,28,1,128,28,1,128,28,0, + 128,28,32,128,28,32,0,28,32,0,28,96,0,31,224,0, + 28,96,0,28,32,0,28,32,128,28,32,128,28,0,128,28, + 1,128,28,1,128,28,3,128,28,7,128,255,255,128,17,28, + 84,20,2,0,0,128,0,0,192,0,1,192,0,2,32,0, + 4,24,0,0,0,0,0,0,0,255,255,128,28,3,128,28, + 3,128,28,1,128,28,1,128,28,0,128,28,32,128,28,32, + 0,28,32,0,28,96,0,31,224,0,28,96,0,28,32,0, + 28,32,128,28,32,128,28,0,128,28,1,128,28,1,128,28, + 3,128,28,7,128,255,255,128,17,27,81,20,2,0,6,48, + 0,7,56,0,6,48,0,0,0,0,0,0,0,0,0,0, + 255,255,128,28,7,128,28,3,128,28,1,128,28,1,128,28, + 1,128,28,32,128,28,32,0,28,32,0,28,96,0,31,224, + 0,28,96,0,28,32,0,28,32,128,28,32,128,28,1,0, + 28,1,128,28,1,128,28,3,128,28,7,128,255,255,128,8, + 28,28,12,2,0,192,224,96,48,24,0,0,255,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 255,9,28,56,12,2,0,1,0,3,0,6,0,4,0,8, + 0,0,0,0,0,255,128,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,8, + 28,28,12,2,0,8,24,28,38,193,0,0,255,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 255,9,27,54,11,2,0,195,0,227,128,195,0,0,0,0, + 0,0,0,255,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,0,19,21,63, + 22,2,0,255,248,0,28,6,0,28,3,0,28,1,128,28, + 1,192,28,0,192,28,0,192,28,0,224,28,0,224,255,128, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,192, + 28,0,192,28,1,128,28,1,128,28,3,0,28,6,0,255, + 248,0,20,27,81,23,2,0,1,226,0,3,254,0,2,28, + 0,0,0,0,0,0,0,0,0,0,252,7,240,28,0,128, + 30,0,128,31,0,128,23,0,128,19,128,128,19,192,128,17, + 192,128,16,224,128,16,240,128,16,112,128,16,56,128,16,56, + 128,16,28,128,16,30,128,16,14,128,16,7,128,16,7,128, + 16,3,128,16,1,128,254,1,128,17,28,84,20,2,0,12, + 0,0,14,0,0,6,0,0,3,0,0,1,128,0,0,0, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,28,84,20,2,0,0,24,0,0,56,0,0, + 112,0,0,64,0,0,128,0,0,0,0,0,128,0,7,112, + 0,24,8,0,16,12,0,48,6,0,96,6,0,96,3,0, + 96,3,0,224,3,0,224,3,0,224,3,0,224,3,128,224, + 3,128,224,3,0,224,3,0,96,3,0,96,3,0,96,6, + 0,48,6,0,16,12,0,24,8,0,7,240,0,17,28,84, + 20,2,0,0,128,0,1,128,0,3,192,0,6,32,0,12, + 16,0,0,8,0,0,128,0,7,112,0,24,8,0,16,12, + 0,48,6,0,96,6,0,96,3,0,96,3,0,224,3,0, + 224,3,0,224,3,0,224,3,128,224,3,128,224,3,0,224, + 3,0,96,3,0,96,3,0,96,6,0,48,6,0,16,12, + 0,24,8,0,7,240,0,17,27,81,20,2,0,7,136,0, + 15,248,0,8,112,0,0,0,0,0,0,0,0,128,0,7, + 112,0,24,8,0,16,12,0,48,6,0,96,6,0,96,3, + 0,96,3,0,224,3,0,224,3,0,224,3,0,224,3,128, + 224,3,128,224,3,0,224,3,0,96,3,0,96,3,0,96, + 6,0,48,6,0,16,12,0,24,8,0,7,240,0,17,27, + 81,20,2,0,12,48,0,14,56,0,12,48,0,0,0,0, + 0,0,0,0,128,0,7,112,0,24,8,0,16,12,0,48, + 6,0,96,6,0,96,3,0,96,3,0,224,3,0,224,3, + 0,224,3,0,224,3,128,224,3,128,224,3,0,224,3,0, + 96,3,0,96,3,0,96,6,0,48,6,0,16,12,0,24, + 8,0,7,240,0,18,18,54,27,5,255,128,0,192,192,1, + 128,96,3,0,48,6,0,24,12,0,12,24,0,6,48,0, + 3,96,0,1,192,0,1,192,0,3,96,0,6,48,0,12, + 24,0,24,12,0,48,6,0,96,3,0,64,1,128,128,0, + 192,17,21,63,20,2,1,7,241,0,8,15,0,16,14,0, + 48,6,0,96,14,0,96,27,0,96,19,0,224,35,0,224, + 99,0,224,195,128,225,131,128,225,3,0,226,3,0,230,3, + 0,236,3,0,104,3,0,112,6,0,112,6,0,112,12,0, + 88,8,0,143,240,0,20,28,84,23,2,0,3,0,0,3, + 128,0,1,128,0,0,192,0,0,32,0,0,0,0,0,0, + 0,255,7,240,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,12,0,128,12,1,0,6,2,0,3,252,0, + 20,28,84,23,2,0,0,4,0,0,12,0,0,24,0,0, + 16,0,0,32,0,0,0,0,0,0,0,255,7,240,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,12,0, + 128,12,1,0,6,2,0,3,252,0,20,28,84,23,2,0, + 0,32,0,0,96,0,0,112,0,0,136,0,3,4,0,0, + 0,0,0,0,0,255,7,240,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,12,1,128,12,1,0,6,2, + 0,3,252,0,20,27,81,23,2,0,1,134,0,3,142,0, + 1,134,0,0,0,0,0,0,0,0,0,0,255,131,240,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,12, + 0,128,12,1,0,6,2,0,3,252,0,19,28,84,21,1, + 0,0,4,0,0,12,0,0,24,0,0,16,0,0,32,0, + 0,0,0,0,0,0,255,143,224,30,3,128,14,3,0,14, + 2,0,7,2,0,7,4,0,3,132,0,1,200,0,1,200, + 0,0,240,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,254,0,17,21,63,20,2,0,255,128,0,28,0, + 0,28,0,0,31,240,0,28,12,0,28,6,0,28,3,0, + 28,3,0,28,3,128,28,3,128,28,3,0,28,3,0,28, + 6,0,28,12,0,31,240,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,255,128,0,13,21,42,15,1,0, + 7,192,12,96,24,112,56,112,56,112,56,96,56,192,59,0, + 56,192,56,96,56,48,56,48,56,56,56,56,56,56,56,56, + 58,56,63,56,62,48,60,48,251,192,13,21,42,15,1,0, + 96,0,96,0,48,0,24,0,8,0,4,0,0,0,31,0, + 97,128,65,192,97,192,113,192,1,192,15,192,49,192,97,192, + 193,192,193,200,195,200,196,216,56,240,13,21,42,15,1,0, + 0,192,1,192,1,128,3,0,6,0,4,0,0,0,31,0, + 33,128,96,192,112,192,112,192,0,192,7,192,56,192,96,192, + 224,192,224,200,225,200,226,216,60,112,13,21,42,15,1,0, + 4,0,12,0,14,0,26,0,17,0,32,128,0,0,31,0, + 33,128,97,192,113,192,113,192,1,192,15,192,49,192,97,192, + 225,192,225,200,225,200,226,216,60,240,13,20,40,15,1,0, + 24,0,63,128,71,128,0,0,0,0,0,0,31,0,33,128, + 97,192,113,192,113,192,1,192,15,192,49,192,97,192,225,192, + 225,200,225,200,226,216,60,240,13,20,40,15,1,0,97,128, + 97,192,97,128,0,0,0,0,0,0,30,0,97,128,64,128, + 96,128,96,192,0,192,15,192,48,192,96,192,192,192,193,200, + 194,200,194,216,60,112,13,21,42,15,1,0,14,0,49,0, + 33,0,33,0,19,0,14,0,0,0,30,0,33,128,97,128, + 97,128,113,192,1,192,15,192,113,192,97,192,225,192,225,200, + 227,200,229,216,120,240,18,14,42,20,1,0,31,30,0,97, + 227,0,65,227,0,97,193,128,113,193,128,1,193,128,15,255, + 192,113,192,0,65,192,0,193,192,128,193,192,128,194,224,128, + 194,97,0,60,62,0,10,20,40,12,1,250,31,0,48,128, + 96,192,96,192,225,192,224,128,224,0,224,0,224,0,224,64, + 96,64,96,128,48,128,31,0,8,0,12,0,3,0,3,0, + 3,0,30,0,10,21,42,13,1,0,96,0,112,0,56,0, + 24,0,4,0,0,0,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,21,42,13,1,0,0,192,1,192,1,128, + 3,0,6,0,0,0,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,21,42,13,1,0,4,0,4,0,14,0, + 11,0,17,0,32,128,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,20,40,13,1,0,49,128,113,192,49,128, + 0,0,0,0,0,0,30,0,49,128,97,128,96,192,224,192, + 224,192,255,192,224,0,224,0,224,64,96,64,96,64,48,128, + 31,0,7,21,21,8,0,0,192,192,96,48,24,0,0,124, + 28,28,28,28,28,28,28,28,28,28,28,28,126,7,21,21, + 8,1,0,6,14,12,24,16,0,0,248,56,56,56,56,56, + 56,56,56,56,56,56,56,252,7,20,20,9,1,0,48,48, + 104,132,2,0,248,56,56,56,56,56,56,56,56,56,56,56, + 56,252,8,19,19,9,1,0,198,231,198,0,0,124,28,28, + 28,28,28,28,28,28,28,28,28,28,126,12,21,42,14,1, + 0,56,64,29,128,14,0,15,0,19,0,33,128,1,192,15, + 192,48,224,96,224,96,96,224,96,224,112,224,112,224,96,224, + 96,224,96,96,96,96,192,48,128,15,0,14,20,40,16,1, + 0,14,32,15,32,19,192,16,192,0,0,0,0,249,192,62, + 96,60,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,252,252,12,21,42,14,1,0,32, + 0,48,0,24,0,8,0,4,0,0,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,21,42,14,1,0,0, + 192,1,192,1,128,3,0,2,0,4,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,21,42,14,1,0,4, + 0,6,0,14,0,11,0,16,128,32,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,20,40,14,1,0,28, + 64,63,192,39,128,0,0,0,0,0,0,15,0,48,128,96, + 192,96,96,224,96,224,96,224,112,224,112,224,96,224,96,96, + 96,96,192,48,128,15,0,12,20,40,14,1,0,48,192,57, + 192,48,192,0,0,0,0,0,0,15,0,48,128,96,192,96, + 96,224,96,224,96,224,112,224,112,224,96,224,96,96,96,96, + 192,48,128,15,0,24,19,57,26,1,254,0,24,0,0,60, + 0,0,60,0,0,24,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,24,0,0,60,0,0,60, + 0,0,24,0,12,14,28,14,1,0,15,32,48,160,96,192, + 96,224,225,96,227,96,226,112,228,112,232,96,240,96,96,96, + 96,192,112,128,143,0,14,21,42,16,1,0,24,0,24,0, + 12,0,6,0,2,0,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,21,42,16,1,0,0,96,0,224, + 0,192,1,128,1,0,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,21,42,16,1,0,2,0,3,0, + 7,0,4,128,8,64,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,20,40,16,1,0,24,96,28,224, + 24,96,0,0,0,0,0,0,248,240,56,112,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,240, + 25,112,14,124,14,28,56,15,0,249,0,48,0,112,0,96, + 0,192,1,128,0,0,0,0,254,124,24,16,24,16,28,16, + 12,32,12,32,14,32,6,64,6,64,6,64,3,128,3,128, + 3,128,1,128,1,0,1,0,1,0,98,0,114,0,100,0, + 56,0,12,28,56,14,1,249,56,0,248,0,56,0,56,0, + 56,0,56,0,56,0,57,224,62,112,60,112,56,112,56,112, + 56,112,56,96,56,96,56,192,56,128,57,128,58,0,60,0, + 56,0,56,0,56,0,56,0,56,0,56,0,48,0,192,0, + 14,26,52,15,0,249,12,48,14,112,12,48,0,0,0,0, + 254,60,24,16,24,16,28,32,12,32,12,32,14,32,6,64, + 6,64,7,64,3,128,3,128,3,128,1,0,1,0,1,0, + 1,0,114,0,114,0,116,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=24 h=28 x= 3 y= 9 dx=26 dy= 0 ascent=22 len=75 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21n[702] U8G_SECTION(".progmem.u8g_font_osr21n") = { + 0,76,38,232,247,21,0,0,0,0,42,57,0,22,250,21, + 0,10,12,24,14,2,9,12,0,14,0,204,64,228,192,53, + 0,14,0,63,0,229,192,196,192,12,0,14,0,12,0,24, + 25,75,26,1,252,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,0,8,0,255,255,255,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 4,8,8,8,2,251,224,240,240,16,16,16,32,64,7,2, + 2,11,2,7,254,254,4,4,4,8,2,0,96,240,240,96, + 9,28,56,13,2,250,0,128,0,128,1,128,1,0,1,0, + 1,0,2,0,2,0,2,0,6,0,4,0,4,0,12,0, + 8,0,8,0,24,0,16,0,16,0,16,0,32,0,32,0, + 32,0,64,0,64,0,64,0,192,0,128,0,128,0,14,21, + 42,17,1,0,7,128,24,64,48,32,32,48,96,16,96,24, + 96,24,224,24,224,24,224,24,224,28,224,28,224,24,224,24, + 224,24,96,24,96,24,96,48,48,32,16,96,15,192,10,21, + 42,17,3,0,2,0,6,0,6,0,14,0,254,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,255,192,12,21, + 42,17,2,0,31,0,32,192,64,96,128,112,128,112,192,112, + 240,112,112,112,32,96,0,224,0,192,1,0,6,0,12,0, + 24,0,48,16,96,16,64,16,224,112,255,240,255,240,12,21, + 42,17,2,0,31,0,97,192,192,224,224,96,240,96,112,112, + 0,96,0,96,0,224,48,192,63,0,0,192,0,96,0,112, + 0,112,96,112,240,112,240,112,192,96,192,192,127,128,14,21, + 42,17,2,0,0,64,0,192,1,192,1,192,3,192,7,192, + 5,192,13,192,9,192,17,192,49,192,33,192,65,192,193,192, + 255,252,1,192,1,192,1,192,1,192,1,192,15,252,12,21, + 42,17,2,0,96,64,127,128,127,0,64,0,64,0,64,0, + 64,0,79,0,112,192,64,96,64,96,0,112,0,112,0,112, + 96,112,240,112,240,112,224,96,192,224,64,192,63,128,12,21, + 42,17,2,0,7,128,24,64,16,96,48,224,96,224,96,192, + 96,0,224,0,231,128,232,192,240,96,240,96,224,112,224,112, + 224,112,224,112,96,112,96,96,112,96,48,192,31,128,11,21, + 42,17,3,0,255,224,255,224,192,32,128,32,128,64,128,64, + 0,64,0,128,1,0,1,0,2,0,6,0,6,0,12,0, + 12,0,12,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,17,2,0,15,128,48,96,96,48,224,24,224,24,224,24, + 224,24,240,16,124,32,63,192,15,224,51,240,96,248,224,56, + 224,28,224,28,224,24,224,24,96,24,112,48,31,192,12,21, + 42,17,2,0,15,0,48,128,96,64,96,96,224,96,224,96, + 224,112,224,112,224,112,96,112,96,240,49,176,14,48,0,48, + 0,32,48,96,112,96,112,64,96,192,96,128,63,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=29 h=28 x= 4 y=17 dx=32 dy= 0 ascent=23 len=88 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =22 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_osr21r") = { + 0,76,38,232,247,21,5,131,12,189,32,127,249,23,249,22, + 249,0,0,0,8,0,0,4,21,21,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,64,0,96,240, + 240,96,7,5,5,11,2,17,238,204,204,204,68,15,21,42, + 19,2,0,2,16,6,16,6,16,4,16,4,48,4,48,255, + 254,4,32,12,32,12,32,8,32,8,96,8,96,8,64,255, + 254,24,64,24,64,16,192,16,192,16,128,16,128,13,25,50, + 17,2,254,5,0,5,0,15,128,53,96,37,16,69,24,69, + 24,69,56,69,56,117,48,61,0,63,0,15,192,7,224,5, + 240,5,48,101,24,229,24,229,24,197,24,69,48,69,32,61, + 192,7,0,5,0,19,21,63,25,3,0,60,1,0,70,2, + 0,66,2,0,195,4,0,195,8,0,195,8,0,195,16,0, + 195,16,0,66,32,0,102,32,0,56,64,0,0,67,0,0, + 140,192,1,8,64,1,24,96,2,24,96,2,24,96,4,24, + 96,4,24,96,8,8,64,8,7,128,20,21,63,23,2,0, + 3,128,0,12,64,0,8,32,0,24,32,0,24,32,0,24, + 96,0,28,64,0,12,128,0,15,0,0,7,15,240,15,1, + 128,27,129,0,51,193,0,97,194,0,96,226,0,224,244,0, + 224,124,0,224,56,0,224,60,0,96,60,32,59,198,192,3, + 5,5,7,2,17,224,192,192,192,64,6,28,28,10,3,250, + 4,12,24,16,32,32,64,64,64,128,128,128,128,128,128,128, + 128,128,128,192,64,64,32,32,16,24,8,4,6,28,28,11, + 2,250,128,192,64,32,48,16,24,8,8,8,4,4,4,4, + 4,4,4,4,12,8,8,24,16,48,32,96,192,128,10,12, + 24,14,2,9,12,0,14,0,204,64,228,192,53,0,14,0, + 63,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, + 1,252,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,255,255,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,4,8,8, + 8,2,251,224,240,240,16,16,16,32,64,7,2,2,11,2, + 7,254,254,4,4,4,8,2,0,96,240,240,96,9,28,56, + 13,2,250,0,128,0,128,1,128,1,0,1,0,1,0,2, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,16,0,16,0,16,0,32,0,32,0,32,0,64, + 0,64,0,64,0,192,0,128,0,128,0,14,21,42,17,1, + 0,7,128,24,64,48,32,32,48,96,16,96,24,96,24,224, + 24,224,24,224,24,224,28,224,28,224,24,224,24,224,24,96, + 24,96,24,96,48,48,32,16,96,15,192,10,21,42,17,3, + 0,2,0,6,0,6,0,14,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,255,192,12,21,42,17,2, + 0,31,0,32,192,64,96,128,112,128,112,192,112,240,112,112, + 112,32,96,0,224,0,192,1,0,6,0,12,0,24,0,48, + 16,96,16,64,16,224,112,255,240,255,240,12,21,42,17,2, + 0,31,0,97,192,192,224,224,96,240,96,112,112,0,96,0, + 96,0,224,48,192,63,0,0,192,0,96,0,112,0,112,96, + 112,240,112,240,112,192,96,192,192,127,128,14,21,42,17,2, + 0,0,64,0,192,1,192,1,192,3,192,7,192,5,192,13, + 192,9,192,17,192,49,192,33,192,65,192,193,192,255,252,1, + 192,1,192,1,192,1,192,1,192,15,252,12,21,42,17,2, + 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,79, + 0,112,192,64,96,64,96,0,112,0,112,0,112,96,112,240, + 112,240,112,224,96,192,224,64,192,63,128,12,21,42,17,2, + 0,7,128,24,64,16,96,48,224,96,224,96,192,96,0,224, + 0,231,128,232,192,240,96,240,96,224,112,224,112,224,112,224, + 112,96,112,96,96,112,96,48,192,31,128,11,21,42,17,3, + 0,255,224,255,224,192,32,128,32,128,64,128,64,0,64,0, + 128,1,0,1,0,2,0,6,0,6,0,12,0,12,0,12, + 0,30,0,30,0,30,0,30,0,30,0,14,21,42,17,2, + 0,15,128,48,96,96,48,224,24,224,24,224,24,224,24,240, + 16,124,32,63,192,15,224,51,240,96,248,224,56,224,28,224, + 28,224,24,224,24,96,24,112,48,31,192,12,21,42,17,2, + 0,15,0,48,128,96,64,96,96,224,96,224,96,224,112,224, + 112,224,112,96,112,96,240,49,176,14,48,0,48,0,32,48, + 96,112,96,112,64,96,192,96,128,63,0,4,14,14,8,2, + 0,96,240,240,96,0,0,0,0,0,0,96,240,240,96,4, + 18,18,8,2,251,96,240,240,96,0,0,0,0,0,0,224, + 240,240,16,16,16,32,64,22,24,72,27,2,251,0,0,12, + 0,0,56,0,0,96,0,1,128,0,7,0,0,28,0,0, + 112,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 0,224,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,3,128,0,0,224,0, + 0,56,0,0,12,24,7,21,26,1,5,255,255,255,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 22,24,72,27,3,251,192,0,0,112,0,0,24,0,0,6, + 0,0,3,128,0,0,224,0,0,56,0,0,12,0,0,3, + 0,0,0,192,0,0,112,0,0,28,0,0,28,0,0,48, + 0,0,192,0,3,128,0,14,0,0,56,0,0,96,0,1, + 128,0,7,0,0,28,0,0,112,0,0,192,0,0,11,21, + 42,14,2,0,30,0,97,128,128,192,128,192,240,224,240,192, + 97,192,1,128,3,128,6,0,12,0,8,0,17,0,17,0, + 17,0,14,0,0,0,12,0,30,0,30,0,12,0,21,21, + 63,25,2,1,3,255,0,12,0,128,24,0,64,48,0,32, + 32,59,144,64,199,16,65,135,8,131,7,8,135,6,8,134, + 6,8,142,14,8,142,14,8,142,12,16,142,28,16,142,28, + 32,70,44,64,67,199,128,32,0,0,16,0,0,8,1,128, + 7,222,0,20,21,63,22,1,0,0,32,0,0,96,0,0, + 96,0,0,112,0,0,240,0,0,240,0,0,184,0,1,56, + 0,1,56,0,3,28,0,3,28,0,2,28,0,6,14,0, + 6,14,0,7,254,0,12,7,0,12,7,0,8,7,0,24, + 3,128,24,3,128,255,31,240,16,21,42,20,2,0,255,240, + 28,12,28,6,28,7,28,7,28,7,28,7,28,6,28,12, + 31,240,28,28,28,6,28,6,28,7,28,7,28,7,28,7, + 28,7,28,6,28,12,255,240,15,21,42,19,2,1,15,226, + 16,54,48,30,32,14,96,6,96,6,224,6,224,2,224,0, + 224,0,224,0,224,0,224,0,224,2,96,2,96,2,96,4, + 32,4,48,12,24,8,7,240,19,21,63,22,2,0,255,248, + 0,28,6,0,28,3,0,28,1,128,28,1,128,28,1,192, + 28,0,192,28,0,192,28,0,192,28,0,224,28,0,224,28, + 0,224,28,0,192,28,0,192,28,0,192,28,1,192,28,1, + 128,28,1,0,28,3,0,28,6,0,255,248,0,17,21,63, + 20,2,0,255,255,128,28,3,128,28,3,128,28,1,128,28, + 1,128,28,0,128,28,32,128,28,32,0,28,32,0,28,96, + 0,31,224,0,28,96,0,28,32,0,28,32,128,28,32,128, + 28,0,128,28,1,128,28,1,128,28,3,128,28,7,128,255, + 255,128,17,21,63,20,2,0,255,255,128,28,3,128,28,3, + 128,28,1,128,28,1,128,28,0,128,28,32,128,28,32,0, + 28,32,0,28,96,0,31,224,0,28,96,0,28,32,0,28, + 32,0,28,32,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,21,63,21,2,1,15,226,0, + 24,26,0,48,14,0,32,14,0,96,6,0,96,6,0,224, + 2,0,224,2,0,224,0,0,224,0,0,224,127,192,224,14, + 0,224,14,0,224,14,0,224,14,0,96,14,0,96,14,0, + 32,14,0,48,26,0,16,50,0,15,226,0,20,21,63,23, + 2,0,255,15,240,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,31,255,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,15, + 240,8,21,21,12,2,0,255,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,255,13,21,42,15, + 1,0,7,248,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 112,224,240,192,240,192,192,192,65,128,127,0,19,21,63,22, + 2,0,255,31,224,28,7,0,28,6,0,28,12,0,28,8, + 0,28,16,0,28,32,0,28,64,0,28,192,0,29,224,0, + 30,224,0,28,112,0,28,112,0,28,56,0,28,28,0,28, + 28,0,28,14,0,28,14,0,28,7,0,28,7,0,255,63, + 224,16,21,42,20,2,0,255,128,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,1,28,1,28,1,28,1,28,3,28,3,28,15,255, + 255,21,21,63,25,2,0,252,1,248,30,1,224,30,1,224, + 30,2,224,22,2,224,23,2,224,23,2,224,19,4,224,19, + 132,224,19,132,224,17,132,224,17,200,224,17,200,224,16,200, + 224,16,208,224,16,240,224,16,240,224,16,112,224,16,96,224, + 16,96,224,254,39,248,20,21,63,23,2,0,252,7,240,28, + 0,128,30,0,128,31,0,128,23,0,128,19,128,128,19,192, + 128,17,192,128,16,224,128,16,240,128,16,112,128,16,56,128, + 16,56,128,16,28,128,16,30,128,16,14,128,16,7,128,16, + 7,128,16,3,128,16,1,128,254,1,128,17,22,66,20,2, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,21,63,20,2,0,255,248,0,28,14,0,28, + 7,0,28,3,0,28,3,0,28,3,128,28,3,0,28,3, + 0,28,6,0,28,12,0,31,240,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,255,128,0,17,27,81,20,2,251,0,128, + 0,7,112,0,24,8,0,16,12,0,48,6,0,96,6,0, + 96,3,0,96,3,0,224,3,0,224,3,0,224,3,0,224, + 3,128,224,3,128,224,3,0,224,3,0,96,3,0,96,3, + 0,97,198,0,51,38,0,26,60,0,14,60,0,7,48,128, + 0,241,0,0,49,0,0,57,0,0,31,0,0,14,0,18, + 21,63,21,2,0,255,248,0,28,14,0,28,6,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,6,0,28,12,0, + 31,240,0,28,24,0,28,24,0,28,12,0,28,12,0,28, + 12,0,28,14,0,28,14,64,28,14,64,28,14,64,28,7, + 128,255,131,128,14,21,42,18,3,1,63,144,96,208,192,112, + 192,48,192,16,192,16,224,16,240,16,124,0,63,128,31,224, + 7,240,128,248,128,56,128,28,128,12,192,12,224,12,224,8, + 144,16,142,224,17,21,63,21,2,0,255,255,128,225,195,128, + 193,193,128,193,193,128,193,192,128,129,192,128,129,192,128,129, + 192,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,15,248,0,20,21,63,23,2,0,255, + 7,240,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,12,0,128,12,1,0,6,2,0,3,252,0,20,22, + 66,23,2,255,255,143,240,28,1,192,28,1,128,14,1,128, + 14,1,0,14,1,0,7,3,0,7,2,0,7,2,0,3, + 134,0,3,132,0,3,132,0,1,196,0,1,200,0,1,200, + 0,0,232,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,32,0,0,32,0,29,22,88,32,2,255,255,63,231,248, + 28,7,0,192,28,7,0,128,28,7,0,128,12,7,128,128, + 14,15,129,128,14,11,129,0,6,9,129,0,7,9,195,0, + 7,25,194,0,7,17,194,0,3,16,230,0,3,144,228,0, + 3,176,228,0,1,160,108,0,1,224,120,0,1,224,120,0, + 1,192,120,0,0,192,48,0,0,192,48,0,0,192,48,0, + 0,128,16,0,19,21,63,22,2,0,255,159,224,14,7,0, + 14,6,0,7,4,0,7,12,0,3,136,0,3,208,0,1, + 208,0,1,224,0,0,224,0,0,112,0,0,240,0,1,184, + 0,1,56,0,2,28,0,6,28,0,4,14,0,8,14,0, + 24,7,0,24,7,0,255,31,224,19,21,63,21,1,0,255, + 143,224,30,3,128,14,3,0,14,2,0,7,2,0,7,4, + 0,3,132,0,1,200,0,1,200,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,7,254,0,15,21, + 42,19,2,0,63,254,56,14,112,28,96,56,64,56,64,112, + 64,240,0,224,1,192,1,192,3,128,7,128,7,0,14,2, + 14,2,28,2,60,2,56,6,112,6,240,14,255,254,6,27, + 27,11,3,250,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,252,9, + 28,56,13,2,250,128,0,128,0,192,0,64,0,64,0,64, + 0,32,0,32,0,32,0,16,0,16,0,16,0,24,0,8, + 0,8,0,12,0,4,0,4,0,4,0,2,0,2,0,2, + 0,1,0,1,0,1,0,1,128,0,128,0,128,6,27,27, + 11,2,250,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,252,13,11, + 22,17,2,10,2,0,2,0,5,0,13,128,8,128,24,192, + 16,64,32,32,96,48,64,16,192,24,15,1,2,15,0,251, + 255,254,5,5,5,13,2,16,192,224,96,48,8,13,14,28, + 15,1,0,31,0,33,128,97,192,113,192,113,192,1,192,15, + 192,49,192,97,192,225,192,225,200,225,200,226,216,60,240,13, + 21,42,15,1,0,248,0,56,0,56,0,56,0,56,0,56, + 0,56,0,59,192,60,96,56,48,56,48,56,48,56,48,56, + 56,56,56,56,48,56,48,56,48,56,32,44,96,35,192,10, + 14,28,12,1,0,31,0,48,128,96,64,96,192,225,192,224, + 128,224,0,224,0,224,0,224,0,96,64,96,128,48,128,31, + 0,13,21,42,15,1,0,3,224,0,224,0,224,0,224,0, + 224,0,224,0,224,30,224,49,224,97,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 248,10,14,28,13,1,0,30,0,49,128,97,128,96,192,224, + 192,224,192,255,192,224,0,224,0,224,64,96,64,96,64,48, + 128,31,0,10,21,42,10,1,0,15,0,24,128,57,192,57, + 128,56,0,56,0,56,0,254,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,254,0,14,21,42,16,2,249,31,56,113,200,96,220,224, + 248,224,224,224,224,224,224,96,192,49,128,31,0,96,0,128, + 0,224,0,127,224,56,112,64,16,128,16,128,16,128,48,64, + 96,63,128,14,21,42,16,1,0,248,0,56,0,56,0,56, + 0,56,0,56,0,56,0,57,192,62,96,60,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,252,252,6,21,21,7,1,0,112,112,112,0,0,0,0, + 240,112,112,112,112,112,112,112,112,112,112,112,112,252,8,28, + 28,9,255,249,6,7,6,0,0,0,0,31,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,70,230,198,204,120, + 13,21,42,15,1,0,248,0,56,0,56,0,56,0,56,0, + 56,0,56,0,57,248,56,192,56,128,57,0,57,0,58,0, + 63,0,63,0,59,128,57,192,56,192,56,224,56,224,253,248, + 7,21,21,8,1,0,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,254,21,14,42,23,1, + 0,249,195,192,62,100,224,60,120,96,56,120,96,56,112,96, + 56,112,96,56,112,96,56,112,96,56,112,96,56,112,96,56, + 112,96,56,112,96,56,112,96,252,253,248,14,14,28,16,1, + 0,249,192,62,96,60,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,252,252,12,14,28, + 14,1,0,15,0,48,128,96,192,96,96,224,96,224,96,224, + 112,224,112,224,96,224,96,96,96,96,192,48,128,15,0,13, + 21,42,15,1,249,251,192,60,96,56,48,56,48,56,48,56, + 48,56,56,56,56,56,48,56,48,56,48,56,48,60,96,59, + 192,56,0,56,0,56,0,56,0,56,0,56,0,252,0,13, + 21,42,15,1,249,30,32,49,32,96,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 224,0,224,0,224,0,224,0,224,0,224,0,224,3,248,10, + 14,28,12,1,0,249,128,58,64,60,192,60,192,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,252, + 0,10,14,28,13,2,0,60,128,195,128,129,128,128,128,192, + 128,240,0,62,0,15,128,131,192,128,192,192,64,192,64,160, + 128,159,0,8,20,20,10,1,0,16,16,16,16,48,48,254, + 48,48,48,48,48,48,48,48,49,49,49,59,30,14,14,28, + 16,1,0,248,240,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,240,25,112,14,124,15, + 14,28,15,0,0,254,126,56,16,24,16,28,16,12,32,12, + 32,6,32,6,64,7,64,3,64,3,128,1,128,1,128,1, + 0,22,14,42,22,0,0,254,252,252,56,56,32,24,56,32, + 28,56,32,12,56,64,12,60,64,6,76,64,6,76,128,7, + 70,128,3,134,128,3,135,0,1,131,0,1,131,0,1,2, + 0,14,14,28,16,1,0,124,248,56,96,24,64,12,128,14, + 128,7,0,7,0,3,128,5,128,5,192,8,192,16,224,16, + 96,249,252,15,21,42,15,0,249,254,126,24,16,24,16,28, + 16,12,32,12,32,14,32,6,64,6,64,6,64,3,128,3, + 128,3,128,1,128,1,0,1,0,1,0,98,0,114,0,100, + 0,56,0,10,14,28,13,1,0,255,192,193,192,129,128,131, + 0,135,0,6,0,14,0,28,0,24,0,56,64,48,64,112, + 64,224,192,255,192,6,27,27,12,3,250,12,24,48,48,48, + 48,48,56,24,24,24,16,48,192,48,16,24,24,24,56,48, + 48,48,48,48,16,12,1,28,28,8,4,250,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,27,27,12,3,250,128,96, + 32,48,48,48,112,96,96,96,96,96,32,28,48,96,96,96, + 96,96,112,48,48,48,32,96,192,16,6,12,18,1,5,56, + 2,126,1,143,193,131,241,128,255,64,62,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=36 h=35 x= 7 y=21 dx=38 dy= 0 ascent=35 len=140 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x=-1 y=-10 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =27 descent=-8 + Max Font ascent =35 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_osr26") = { + 0,94,46,227,245,26,7,96,17,82,32,255,248,35,246,27, + 248,0,0,0,10,0,0,4,25,25,10,3,0,96,240,240, + 240,240,240,240,240,96,96,96,96,96,96,96,96,96,96,32, + 64,96,240,240,240,96,8,7,7,14,3,20,195,195,195,195, + 195,195,66,19,25,75,25,3,0,1,130,0,1,130,0,1, + 2,0,1,6,0,3,6,0,3,6,0,3,6,0,255,255, + 224,2,4,0,2,4,0,2,12,0,6,12,0,6,12,0, + 6,12,0,6,8,0,4,8,0,4,8,0,255,255,224,12, + 24,0,12,24,0,12,16,0,8,16,0,8,48,0,8,48, + 0,24,48,0,16,31,62,21,2,253,2,64,2,64,2,64, + 7,224,26,92,50,70,34,66,98,67,98,71,98,79,98,79, + 114,78,58,64,63,64,31,192,7,240,3,252,2,126,2,78, + 34,71,242,67,242,67,226,67,226,67,194,66,66,70,34,76, + 30,112,3,192,2,64,2,64,24,25,75,30,3,0,30,0, + 48,33,0,32,97,128,96,192,192,64,192,192,192,192,192,128, + 192,193,0,192,195,0,192,194,0,64,134,0,97,132,0,34, + 8,0,28,24,112,0,16,132,0,49,134,0,33,2,0,67, + 3,0,195,3,0,131,3,1,131,3,1,3,3,3,3,3, + 6,1,6,4,1,134,12,0,252,24,25,75,28,2,0,1, + 240,0,3,8,0,6,12,0,12,4,0,12,4,0,12,12, + 0,14,8,0,14,24,0,7,48,0,7,192,0,3,193,255, + 7,192,56,13,224,48,24,240,48,48,112,32,112,120,96,112, + 60,64,224,28,128,224,15,128,224,15,0,224,7,0,240,3, + 129,112,15,194,120,25,228,31,224,252,2,7,7,8,3,20, + 192,192,192,192,192,192,64,8,33,33,14,4,250,3,6,12, + 12,24,16,48,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,64,96,96,96,48,48,24,24,12,6,6,3,8,33, + 33,13,2,250,192,96,96,48,24,24,12,12,6,6,6,2, + 3,3,3,3,3,3,3,3,2,6,6,6,4,12,12,24, + 24,48,96,192,128,13,15,30,18,3,10,7,0,7,0,7, + 0,195,24,226,56,114,112,10,128,7,0,15,128,122,240,242, + 120,226,56,7,0,7,0,7,0,30,31,124,34,2,250,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,255,255,255,252,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,5,11,11,10,2, + 250,112,248,248,120,8,8,8,16,16,32,64,9,2,4,13, + 2,8,255,128,255,128,4,5,5,10,3,0,96,240,240,240, + 96,12,34,68,16,2,249,0,16,0,48,0,48,0,32,0, + 96,0,96,0,64,0,192,0,192,0,128,0,128,1,128,1, + 0,1,0,3,0,2,0,2,0,6,0,4,0,4,0,12, + 0,8,0,8,0,24,0,24,0,16,0,48,0,48,0,32, + 0,96,0,96,0,64,0,192,0,192,0,17,25,75,21,2, + 0,3,224,0,14,56,0,28,28,0,24,12,0,56,14,0, + 112,7,0,112,7,0,112,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,112,7,0,112,7,0,112,7,0,56,14,0, + 56,14,0,24,12,0,12,24,0,7,112,0,12,25,50,21, + 4,0,1,0,3,0,3,0,15,0,255,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,255,240,15,25,50,21,3,0,15,192,48,112,96,56, + 64,60,192,30,192,30,224,30,248,30,248,30,120,28,0,60, + 0,56,0,112,0,224,1,192,3,0,14,0,28,4,56,4, + 48,4,96,4,96,12,255,252,255,252,255,252,15,25,50,21, + 3,0,15,192,48,112,32,56,96,28,112,28,120,28,120,28, + 48,28,0,28,0,56,0,112,31,192,24,112,0,56,0,60, + 0,30,0,30,112,30,248,30,248,30,248,30,192,60,192,56, + 96,112,63,224,17,25,75,21,2,0,0,16,0,0,48,0, + 0,112,0,0,112,0,0,240,0,1,240,0,1,112,0,3, + 112,0,6,112,0,6,112,0,12,112,0,8,112,0,24,112, + 0,48,112,0,32,112,0,96,112,0,192,112,0,255,255,128, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,15,26,52,21,3,0,32,0,48,56,63, + 240,63,192,47,0,32,0,32,0,32,0,32,0,39,192,56, + 112,48,56,32,60,32,28,0,30,0,30,0,30,0,30,120, + 30,248,30,248,28,240,60,224,60,96,56,112,112,63,192,15, + 25,50,21,3,0,3,224,6,24,12,12,24,28,56,60,48, + 60,112,16,112,0,112,0,243,224,246,56,252,28,248,28,248, + 14,240,14,240,14,240,14,240,14,112,14,112,14,112,12,56, + 28,56,24,24,56,14,224,14,25,50,21,3,0,255,252,255, + 252,255,252,192,12,128,8,128,8,128,8,128,16,0,16,0, + 32,0,96,0,64,0,128,1,128,1,128,3,0,3,0,7, + 0,7,0,15,128,15,128,15,128,15,128,15,128,7,128,17, + 25,75,21,2,0,7,240,0,28,28,0,48,14,0,112,6, + 0,224,3,0,224,3,0,224,3,0,240,3,0,240,6,0, + 124,6,0,127,140,0,31,240,0,7,252,0,25,254,0,48, + 63,0,96,15,128,224,7,128,224,3,128,224,3,128,224,3, + 128,224,3,0,96,7,0,112,6,0,56,12,0,15,248,0, + 15,25,50,21,3,0,7,192,24,96,48,48,112,56,112,28, + 224,28,224,28,224,30,224,30,224,30,224,30,112,62,112,62, + 56,94,15,158,0,30,0,28,0,28,56,28,120,28,120,56, + 112,56,96,112,48,224,31,192,4,17,17,10,3,0,96,240, + 240,240,96,0,0,0,0,0,0,0,96,240,240,240,96,5, + 23,23,11,3,250,112,248,248,248,112,0,0,0,0,0,0, + 0,112,240,248,120,8,8,8,16,16,32,64,28,29,116,34, + 3,251,0,0,0,112,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,1,224,0,0,3,128,0,0,14, + 0,0,0,56,0,0,0,224,0,0,3,128,0,0,15,0, + 0,0,28,0,0,0,112,0,0,0,192,0,0,0,112,0, + 0,0,28,0,0,0,7,0,0,0,1,192,0,0,0,240, + 0,0,0,56,0,0,0,14,0,0,0,3,128,0,0,0, + 224,0,0,0,56,0,0,0,14,0,0,0,7,0,0,0, + 1,192,0,0,0,112,30,8,32,34,2,6,255,255,255,252, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,252,28,29,116,34, + 3,251,224,0,0,0,56,0,0,0,14,0,0,0,3,128, + 0,0,0,224,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,1,192,0,0,0,112,0,0,0,28,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,48,0,0, + 0,224,0,0,3,128,0,0,14,0,0,0,56,0,0,0, + 240,0,0,1,192,0,0,7,0,0,0,28,0,0,0,112, + 0,0,1,192,0,0,7,0,0,0,30,0,0,0,56,0, + 0,0,224,0,0,0,13,25,50,17,2,0,15,128,48,224, + 64,112,192,56,192,56,248,56,248,56,112,56,0,112,0,224, + 1,192,3,128,3,0,4,0,12,0,8,64,8,64,8,128, + 7,0,0,0,3,0,7,128,7,128,7,128,3,0,26,27, + 108,30,2,0,0,4,0,0,0,251,224,0,3,0,56,0, + 6,0,12,0,12,0,6,0,24,0,3,0,48,15,1,0, + 48,49,241,128,96,96,241,128,96,192,224,128,193,192,224,192, + 193,128,224,192,193,128,192,192,195,128,192,192,195,1,192,192, + 195,1,192,192,195,1,129,128,195,3,129,128,67,7,129,0, + 99,7,130,0,97,137,132,0,32,240,248,0,48,0,0,0, + 24,0,0,0,12,0,16,0,7,0,48,0,1,255,192,0, + 25,26,104,28,2,0,0,8,0,0,0,12,0,0,0,28, + 0,0,0,28,0,0,0,30,0,0,0,62,0,0,0,46, + 0,0,0,47,0,0,0,103,0,0,0,103,0,0,0,71, + 128,0,0,195,128,0,0,195,128,0,0,131,192,0,1,129, + 192,0,1,129,192,0,3,1,224,0,3,255,224,0,2,0, + 224,0,6,0,240,0,6,0,112,0,6,0,112,0,12,0, + 120,0,12,0,120,0,30,0,120,0,255,195,255,128,20,26, + 78,25,3,0,255,252,0,28,3,0,28,1,192,28,1,192, + 28,0,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 1,192,28,1,128,28,3,0,31,252,0,28,7,0,28,1, + 192,28,1,224,28,0,224,28,0,240,28,0,240,28,0,240, + 28,0,240,28,0,240,28,1,224,28,1,192,28,3,128,255, + 254,0,19,26,78,24,3,1,3,252,32,14,6,96,28,3, + 224,24,1,224,56,0,224,120,0,224,112,0,96,112,0,96, + 240,0,96,240,0,32,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,112,0,32,112,0, + 32,120,0,96,56,0,64,56,0,64,28,0,128,12,0,128, + 6,3,0,3,222,0,24,26,78,29,3,0,255,255,0,28, + 1,192,28,0,112,28,0,56,28,0,56,28,0,28,28,0, + 30,28,0,30,28,0,14,28,0,15,28,0,15,28,0,15, + 28,0,15,28,0,15,28,0,15,28,0,15,28,0,15,28, + 0,14,28,0,30,28,0,30,28,0,28,28,0,56,28,0, + 56,28,0,112,28,1,192,255,255,0,21,26,78,25,2,0, + 255,255,248,14,0,120,14,0,56,14,0,24,14,0,24,14, + 0,8,14,0,8,14,4,8,14,4,0,14,4,0,14,12, + 0,14,12,0,15,252,0,14,12,0,14,4,0,14,4,0, + 14,4,8,14,4,8,14,0,8,14,0,8,14,0,24,14, + 0,24,14,0,56,14,0,56,14,0,248,255,255,248,20,26, + 78,24,2,0,255,255,240,14,0,240,14,0,112,14,0,48, + 14,0,48,14,0,16,14,0,16,14,4,16,14,4,0,14, + 4,0,14,12,0,14,12,0,15,252,0,14,12,0,14,12, + 0,14,4,0,14,4,0,14,4,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,255, + 224,0,22,27,81,26,3,0,0,32,0,3,220,32,6,7, + 32,12,3,224,24,1,224,56,0,224,56,0,96,112,0,96, + 112,0,96,112,0,32,240,0,32,240,0,0,240,0,0,240, + 0,0,240,15,252,240,0,224,240,0,224,240,0,224,240,0, + 224,112,0,224,112,0,224,56,0,224,56,1,224,24,1,32, + 12,3,32,6,6,32,3,252,32,24,26,78,28,2,0,255, + 195,255,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,15,255,248,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,255,195,255,10,26,52, + 14,2,0,255,192,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,255,192,16,26,52,19,2,0,3,255,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,112,56,248,56,248,56,240,56,192,48,192,112,96,96,63, + 192,24,26,78,28,2,0,255,199,254,14,1,240,14,0,224, + 14,0,192,14,1,128,14,3,0,14,6,0,14,12,0,14, + 24,0,14,24,0,14,56,0,14,124,0,14,188,0,15,62, + 0,15,30,0,14,31,0,14,15,0,14,15,128,14,7,128, + 14,7,192,14,3,192,14,1,224,14,1,240,14,0,240,14, + 0,248,255,199,255,20,26,78,24,2,0,255,224,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,16,14,0, + 16,14,0,32,14,0,48,14,0,48,14,0,48,14,0,112, + 14,0,240,14,3,240,255,255,240,26,26,104,30,2,0,255, + 0,31,192,15,0,30,0,15,128,30,0,15,128,46,0,11, + 128,46,0,11,128,46,0,11,192,110,0,9,192,78,0,9, + 192,78,0,9,224,78,0,8,224,142,0,8,224,142,0,8, + 224,142,0,8,241,142,0,8,113,14,0,8,113,14,0,8, + 121,14,0,8,59,14,0,8,58,14,0,8,58,14,0,8, + 30,14,0,8,28,14,0,8,28,14,0,8,12,14,0,28, + 12,14,0,255,136,255,192,25,26,104,28,2,0,254,0,255, + 128,15,0,28,0,15,128,8,0,15,128,8,0,11,192,8, + 0,11,192,8,0,9,224,8,0,8,240,8,0,8,240,8, + 0,8,120,8,0,8,60,8,0,8,60,8,0,8,30,8, + 0,8,30,8,0,8,15,8,0,8,7,136,0,8,7,136, + 0,8,3,200,0,8,1,232,0,8,1,232,0,8,0,248, + 0,8,0,120,0,8,0,120,0,8,0,56,0,28,0,24, + 0,255,128,24,0,21,27,81,26,3,0,0,32,0,3,220, + 0,6,3,0,12,1,128,28,1,192,56,0,224,56,0,224, + 120,0,240,112,0,112,112,0,112,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,112,0,112,112,0,112,120,0,240,56,0,224,56,0,224, + 28,1,192,12,1,128,6,3,0,3,254,0,21,26,78,25, + 2,0,255,255,0,14,1,192,14,0,224,14,0,240,14,0, + 120,14,0,120,14,0,120,14,0,120,14,0,120,14,0,112, + 14,0,240,14,0,224,14,1,192,15,254,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,255,224,0, + 21,33,99,26,3,250,0,32,0,3,220,0,6,3,0,12, + 1,128,28,1,192,56,0,224,56,0,224,120,0,240,112,0, + 112,112,0,112,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,112,0,112,112, + 0,112,120,0,240,56,112,224,57,152,224,29,13,192,13,13, + 128,7,15,8,3,158,8,0,110,8,0,14,8,0,14,24, + 0,7,176,0,7,240,0,3,192,22,26,78,25,2,0,255, + 255,0,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,1,192,14,7,128, + 15,252,0,14,6,0,14,7,0,14,3,128,14,3,128,14, + 3,128,14,3,192,14,3,192,14,3,192,14,3,196,14,1, + 196,14,1,196,14,1,236,14,1,248,255,224,240,17,26,78, + 22,3,1,31,227,0,48,51,0,96,31,0,192,15,0,192, + 7,0,192,3,0,192,3,0,224,3,0,240,1,0,120,0, + 0,127,0,0,63,192,0,31,248,0,7,252,0,1,254,0, + 128,63,0,128,15,128,128,3,128,192,3,128,192,1,128,192, + 1,128,224,1,128,240,1,0,248,3,0,140,6,0,135,252, + 0,21,26,78,26,3,0,255,255,248,240,112,120,224,112,56, + 192,112,24,192,112,24,192,112,24,128,112,8,128,112,8,128, + 112,8,128,112,8,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,25,26,104,29,2,0,255,192,255,128,14, + 0,14,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,6, + 0,8,0,7,0,8,0,3,0,16,0,1,192,32,0,0, + 127,192,0,25,26,104,28,2,0,255,241,255,128,15,0,60, + 0,15,0,24,0,7,128,24,0,7,128,16,0,3,128,48, + 0,3,192,48,0,3,192,48,0,1,192,32,0,1,224,96, + 0,1,224,96,0,0,224,64,0,0,240,192,0,0,240,192, + 0,0,112,128,0,0,113,128,0,0,121,128,0,0,57,0, + 0,0,59,0,0,0,63,0,0,0,30,0,0,0,30,0, + 0,0,14,0,0,0,14,0,0,0,12,0,0,0,4,0, + 0,36,26,130,38,1,0,255,231,255,63,240,15,0,248,7, + 128,15,0,120,3,0,7,0,120,3,0,7,128,120,6,0, + 7,128,248,6,0,3,128,252,6,0,3,128,252,4,0,3, + 192,156,12,0,1,193,156,12,0,1,193,158,12,0,1,225, + 14,24,0,1,227,14,24,0,0,227,14,24,0,0,227,15, + 16,0,0,242,7,48,0,0,118,7,48,0,0,118,7,32, + 0,0,116,3,224,0,0,124,3,224,0,0,60,3,192,0, + 0,60,1,192,0,0,56,1,192,0,0,24,1,192,0,0, + 24,1,128,0,0,16,0,128,0,24,26,78,27,2,0,255, + 227,255,15,128,112,7,128,96,7,192,96,3,192,192,1,224, + 128,1,225,128,0,227,0,0,242,0,0,118,0,0,124,0, + 0,56,0,0,60,0,0,60,0,0,62,0,0,79,0,0, + 207,0,0,135,128,1,135,128,1,3,192,3,3,192,6,1, + 224,6,0,224,14,0,240,30,0,240,255,199,255,24,26,78, + 27,2,0,255,225,255,31,0,56,15,0,48,7,128,48,7, + 128,32,3,192,96,3,192,64,1,224,128,0,224,128,0,241, + 0,0,113,0,0,122,0,0,58,0,0,60,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,1,255, + 224,19,26,78,23,2,0,63,255,224,60,3,192,56,3,192, + 112,7,128,96,15,0,96,15,0,64,30,0,64,30,0,64, + 60,0,0,120,0,0,120,0,0,240,0,0,224,0,1,224, + 0,3,192,0,3,192,0,7,128,32,7,0,32,15,0,32, + 30,0,96,30,0,96,60,0,224,56,0,224,120,1,224,240, + 3,192,255,255,192,7,33,33,14,4,249,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,240,254,12,34,68,16, + 2,249,128,0,192,0,64,0,64,0,96,0,32,0,32,0, + 48,0,16,0,16,0,24,0,8,0,8,0,12,0,4,0, + 4,0,6,0,6,0,2,0,3,0,3,0,1,0,1,128, + 1,128,0,128,0,128,0,192,0,64,0,64,0,96,0,32, + 0,32,0,48,0,16,7,33,33,15,3,249,254,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,254,15,13,26, + 21,3,12,1,0,3,128,3,128,6,192,4,64,12,96,24, + 48,16,16,48,24,96,8,96,12,192,6,128,2,19,1,3, + 19,0,250,255,255,224,6,6,6,16,3,19,192,224,112,48, + 24,12,16,17,34,19,2,0,15,128,48,224,96,112,96,112, + 120,112,120,112,0,112,1,240,30,112,112,112,96,112,224,112, + 224,113,224,241,225,113,113,126,62,60,16,26,52,18,0,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,112,29,140,29,14,30,6,30,7,28,7,28,7, + 28,7,28,7,28,7,28,7,28,7,28,7,30,6,30,14, + 19,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, + 112,48,96,112,224,112,224,112,224,0,224,0,224,0,224,0, + 224,0,96,16,112,16,48,32,24,64,15,128,16,26,52,19, + 2,0,1,248,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,14,56,57,184,48,184,112,120,96,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,96,56,112,120, + 48,120,48,248,15,63,13,17,34,17,2,0,15,128,24,224, + 48,96,112,112,96,48,224,56,224,56,255,248,224,0,224,0, + 224,0,224,8,112,16,112,16,48,32,24,96,7,128,12,26, + 52,12,1,0,7,192,12,32,28,48,56,112,56,112,56,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,255,128,17,25,75,20,2,248,7,199, + 0,28,117,128,56,59,128,112,31,128,112,28,0,112,28,0, + 112,28,0,112,28,0,56,56,0,28,112,0,7,192,0,56, + 0,0,64,0,0,64,0,0,64,0,0,127,224,0,63,248, + 0,14,28,0,112,2,0,192,2,0,192,2,0,192,2,0, + 224,4,0,112,8,0,15,240,0,18,26,78,21,1,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,124,0,28,142,0, + 29,7,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,255,31,192,7,25,25, + 10,2,0,48,120,120,48,0,0,0,0,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,9,34,68,11, + 255,248,1,128,3,128,3,128,1,128,0,0,0,0,0,0, + 0,0,0,0,31,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,67,128,227,128,227,0, + 195,0,70,0,60,0,17,26,78,19,1,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,127,0,28,24,0,28,16,0, + 28,48,0,28,32,0,28,64,0,28,128,0,29,192,0,29, + 192,0,30,224,0,28,112,0,28,112,0,28,56,0,28,60, + 0,28,28,0,28,30,0,255,127,128,9,26,52,11,1,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,25,17,68,29,2,0,248,240,120,0,57,56, + 156,0,58,29,14,0,60,30,14,0,60,30,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,254,127,63,128,17,17, + 51,21,2,0,248,248,0,57,28,0,58,14,0,60,14,0, + 60,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,254,63,128,14,17,34,18,2,0,7,128,24, + 96,48,48,112,56,112,24,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,48,48,24,96,7,128,16, + 25,50,19,1,248,252,240,29,140,31,14,30,6,30,7,28, + 7,28,7,28,7,28,7,28,7,28,7,28,7,28,7,30, + 6,30,14,29,12,28,240,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,128,16,25,50,18,2,248,15,8,56, + 136,48,216,112,88,96,120,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,96,56,112,120,48,120,48,184,15,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,1,255,12, + 17,34,15,2,0,248,224,57,16,58,48,58,112,60,112,60, + 0,60,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,12,17,34,16,2,0,62,64,97, + 64,192,192,192,64,192,64,224,64,120,0,127,0,31,192,7, + 224,128,240,192,112,192,48,224,48,224,48,152,96,135,192,11, + 24,48,13,1,0,8,0,8,0,8,0,8,0,24,0,24, + 0,56,0,255,192,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,32,56,32,56,32,56, + 96,31,192,15,128,17,17,51,20,1,0,248,62,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 30,0,56,30,0,56,46,0,28,78,0,15,143,128,18,17, + 51,19,0,0,255,31,192,28,7,0,28,6,0,12,4,0, + 14,4,0,14,4,0,7,8,0,7,8,0,3,8,0,3, + 144,0,1,144,0,1,208,0,1,224,0,0,224,0,0,224, + 0,0,64,0,0,64,0,27,17,68,28,0,0,255,63,207, + 224,28,15,3,0,28,7,3,0,12,7,2,0,14,7,2, + 0,14,15,130,0,7,11,132,0,7,9,132,0,3,137,196, + 0,3,145,200,0,1,144,200,0,1,208,232,0,1,224,240, + 0,0,224,112,0,0,224,112,0,0,64,96,0,0,64,32, + 0,16,17,34,19,2,0,254,126,60,56,28,48,28,32,14, + 64,14,64,7,128,3,128,3,128,3,192,3,192,4,224,8, + 96,8,112,16,56,48,56,252,255,18,25,75,20,1,248,255, + 31,192,28,6,0,28,6,0,12,4,0,14,4,0,14,4, + 0,6,8,0,7,8,0,7,8,0,3,16,0,3,144,0, + 3,144,0,1,240,0,1,224,0,1,224,0,0,224,0,0, + 192,0,0,64,0,0,192,0,0,128,0,112,128,0,113,128, + 0,113,0,0,115,0,0,60,0,0,12,17,34,15,1,0, + 255,240,224,112,192,224,128,224,129,192,131,128,131,128,7,0, + 7,0,14,0,28,16,28,16,56,16,56,16,112,48,224,112, + 255,240,8,33,33,15,3,249,3,4,8,24,24,24,24,28, + 28,28,12,12,12,12,8,24,224,24,8,12,12,12,12,28, + 28,28,24,24,24,24,8,4,3,2,34,34,10,4,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,33,33,14,3,249,192,32,16,24,24,24,24,24,56, + 56,48,48,48,48,16,24,7,24,16,48,48,48,48,56,56, + 24,24,24,24,24,16,32,192,20,6,18,24,2,6,62,0, + 32,127,192,16,135,248,16,128,255,48,128,63,224,96,7,192, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,10,0,0,4,25,25,10,3,248,96,240,240, + 240,96,64,64,96,96,96,96,96,96,96,96,96,96,240,240, + 240,240,240,240,240,96,12,25,50,21,4,252,1,0,1,0, + 1,0,1,0,7,192,25,32,57,48,113,48,113,112,225,112, + 225,32,225,0,225,0,225,0,225,0,225,0,113,16,113,16, + 57,16,29,32,7,192,1,0,1,0,1,0,1,0,20,25, + 75,25,2,0,0,15,128,0,24,96,0,48,32,0,96,112, + 0,192,240,0,192,240,1,192,224,1,192,0,1,192,0,1, + 192,0,1,192,0,63,192,0,1,254,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,57,128,16, + 199,128,16,131,128,48,131,224,96,134,255,192,120,63,128,18, + 16,48,22,2,5,195,241,192,124,15,128,48,7,0,32,3, + 0,96,1,0,64,1,128,64,0,128,64,0,128,64,0,128, + 64,0,128,64,1,128,96,1,0,32,3,0,48,7,0,124, + 15,128,227,241,192,20,25,75,22,1,0,255,7,240,60,1, + 192,28,1,128,30,1,0,14,3,0,15,2,0,7,6,0, + 7,132,0,3,140,0,3,136,0,1,216,0,1,208,0,1, + 224,0,31,255,0,0,224,0,0,224,0,31,255,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,15,254,0,2,33,33,10,4,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,0,0,0,0,0,0,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,13,32,64, + 23,4,249,7,128,24,64,16,96,48,224,48,224,48,64,56, + 0,28,0,30,0,15,0,23,128,99,192,129,224,128,240,128, + 120,128,24,192,24,224,8,120,8,60,16,30,32,15,64,7, + 128,3,192,1,192,0,224,16,96,56,96,56,96,48,64,16, + 192,15,0,10,4,8,16,3,20,96,192,225,192,225,192,96, + 192,26,26,104,30,2,1,0,255,192,0,3,0,48,0,4, + 0,8,0,8,0,4,0,16,30,2,0,32,113,225,0,32, + 224,225,0,65,192,96,128,65,192,96,128,129,128,32,64,131, + 128,32,64,131,128,0,64,131,128,0,64,131,128,0,64,131, + 128,0,64,131,128,0,64,131,128,32,64,65,192,64,128,65, + 192,64,128,32,224,65,0,32,112,129,0,16,31,2,0,8, + 0,4,0,4,0,8,0,3,0,48,0,0,255,192,0,9, + 13,26,13,2,12,120,0,132,0,198,0,198,0,14,0,54, + 0,70,0,198,0,198,128,206,128,115,0,0,0,255,0,10, + 14,28,18,4,2,16,64,48,128,97,128,97,0,195,0,195, + 0,195,0,195,0,195,0,67,0,97,0,32,128,16,192,8, + 0,18,7,21,22,2,6,255,255,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,9,2,4,13, + 2,8,255,128,255,128,26,26,104,30,2,1,0,255,192,0, + 3,0,48,0,4,0,8,0,8,0,4,0,19,255,2,0, + 32,225,193,0,32,224,225,0,64,224,224,128,64,224,224,128, + 128,224,224,64,128,224,224,64,128,225,192,64,128,254,0,64, + 128,225,128,64,128,224,192,64,128,224,224,64,128,224,224,64, + 64,224,228,128,64,224,228,128,32,224,233,0,35,248,121,0, + 16,0,2,0,8,0,4,0,4,0,8,0,3,0,48,0, + 0,255,192,0,9,1,2,15,3,21,255,128,10,9,18,22, + 6,16,30,0,97,128,192,128,128,64,128,64,128,64,64,128, + 97,128,30,0,30,25,100,34,2,255,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,255,255,255,252,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,255,255,252,10,15, + 30,16,3,10,63,0,67,128,129,192,129,192,225,192,225,192, + 1,128,3,0,6,0,8,0,48,0,64,64,64,64,255,192, + 255,192,10,16,32,16,4,9,62,0,67,0,193,128,225,128, + 225,128,1,128,3,0,124,0,3,128,1,192,1,192,225,192, + 225,192,129,192,131,128,126,0,6,6,6,16,7,19,12,28, + 56,48,96,192,19,27,81,22,2,246,96,24,0,224,60,0, + 224,60,0,224,60,0,224,60,0,224,60,0,224,60,0,224, + 60,0,224,60,0,192,24,0,64,24,0,64,24,0,64,56, + 0,96,48,32,112,124,96,95,227,224,71,193,192,128,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,224,0,0,224, + 0,0,224,0,0,240,0,0,96,0,0,15,31,62,19,2, + 251,31,254,62,16,126,16,254,16,254,16,254,16,254,16,254, + 16,254,16,126,16,62,16,2,16,2,16,2,16,2,16,2, + 16,2,16,2,16,2,16,2,16,2,16,2,16,2,16,2, + 16,2,16,2,16,2,16,2,16,2,16,2,16,2,16,4, + 5,5,10,3,9,96,240,240,240,96,7,7,7,16,4,248, + 16,32,28,6,6,134,124,8,15,15,16,4,10,8,24,248, + 24,24,24,24,24,24,24,24,24,24,24,255,9,13,26,15, + 3,12,28,0,99,0,67,0,193,128,193,128,193,128,193,128, + 193,128,67,0,99,0,28,0,0,0,255,128,9,14,28,17, + 4,2,132,0,66,0,99,0,33,0,49,128,49,128,49,128, + 49,128,49,128,33,128,99,0,67,0,134,0,4,0,24,25, + 75,31,4,0,8,0,16,24,0,48,248,0,32,24,0,64, + 24,0,64,24,0,128,24,1,128,24,1,0,24,2,0,24, + 6,0,24,4,12,24,8,28,24,8,28,24,16,44,255,48, + 76,0,32,76,0,64,140,0,192,140,0,129,12,1,2,12, + 1,3,255,2,0,12,6,0,12,4,0,12,8,0,127,24, + 25,75,31,4,0,8,0,32,24,0,96,248,0,64,24,0, + 192,24,0,128,24,1,0,24,1,0,24,2,0,24,6,0, + 24,4,0,24,12,248,24,9,14,24,18,15,24,18,7,255, + 35,135,0,97,135,0,64,14,0,128,12,0,128,24,1,0, + 32,3,0,193,2,1,1,6,1,1,4,3,255,8,3,254, + 24,25,75,31,4,0,62,0,32,67,0,32,193,128,64,225, + 128,192,1,128,128,3,1,128,124,1,0,3,130,0,1,194, + 0,1,196,0,225,204,24,225,200,24,129,208,56,131,144,88, + 126,32,88,0,96,152,0,64,152,0,193,24,0,129,24,1, + 2,24,3,3,255,2,0,24,6,0,24,4,0,24,8,0, + 127,13,25,50,17,1,248,6,0,15,0,15,0,15,0,6, + 0,7,0,8,192,16,64,16,64,16,192,0,128,1,0,7, + 0,14,0,28,0,56,0,112,0,240,112,224,120,224,120,224, + 24,224,24,112,16,56,96,15,192,25,34,136,28,2,0,0, + 192,0,0,0,224,0,0,0,224,0,0,0,48,0,0,0, + 24,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,12,0,0,0,28,0,0,0,28,0,0,0, + 30,0,0,0,62,0,0,0,46,0,0,0,47,0,0,0, + 103,0,0,0,103,0,0,0,71,128,0,0,195,128,0,0, + 195,128,0,0,131,192,0,1,129,192,0,1,129,192,0,3, + 1,224,0,3,255,224,0,2,0,224,0,6,0,240,0,6, + 0,112,0,6,0,112,0,12,0,120,0,12,0,120,0,30, + 0,120,0,255,195,255,128,25,34,136,28,2,0,0,0,192, + 0,0,1,192,0,0,3,128,0,0,7,0,0,0,6,0, + 0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,12,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,46,0,0,0,47,0,0,0,103,0, + 0,0,103,0,0,0,71,128,0,0,195,128,0,0,195,128, + 0,1,131,192,0,1,129,192,0,1,129,192,0,3,1,224, + 0,3,255,224,0,2,0,224,0,6,0,240,0,6,0,112, + 0,4,0,112,0,12,0,120,0,12,0,56,0,30,0,124, + 0,255,195,255,128,25,34,136,28,2,0,0,8,0,0,0, + 28,0,0,0,30,0,0,0,51,0,0,0,65,128,0,1, + 128,64,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 12,0,0,0,28,0,0,0,28,0,0,0,30,0,0,0, + 62,0,0,0,46,0,0,0,47,0,0,0,103,0,0,0, + 103,0,0,0,71,128,0,0,195,128,0,0,195,128,0,0, + 131,192,0,1,129,192,0,1,129,192,0,3,1,224,0,3, + 255,224,0,2,0,224,0,6,0,240,0,6,0,112,0,6, + 0,112,0,12,0,120,0,12,0,120,0,30,0,120,0,255, + 195,255,128,25,33,132,28,2,0,0,112,64,0,0,252,64, + 0,0,159,192,0,1,7,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,12,0,0,0,28,0, + 0,0,28,0,0,0,30,0,0,0,62,0,0,0,46,0, + 0,0,47,0,0,0,103,0,0,0,103,0,0,0,71,128, + 0,0,195,128,0,0,195,128,0,1,131,192,0,1,129,192, + 0,1,129,192,0,3,1,224,0,3,255,224,0,2,0,224, + 0,6,0,240,0,6,0,112,0,4,0,112,0,12,0,120, + 0,12,0,56,0,30,0,124,0,255,195,255,128,25,33,132, + 28,2,0,0,193,128,0,1,193,192,0,1,193,192,0,0, + 193,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,24,0,0,0,28,0,0,0,28,0,0,0, + 60,0,0,0,62,0,0,0,62,0,0,0,110,0,0,0, + 79,0,0,0,71,0,0,0,199,0,0,0,199,128,0,0, + 131,128,0,1,131,128,0,1,129,192,0,1,1,192,0,3, + 1,192,0,3,255,224,0,2,0,224,0,6,0,224,0,6, + 0,112,0,4,0,112,0,12,0,112,0,12,0,120,0,30, + 0,120,0,255,195,255,128,25,35,140,28,2,0,0,28,0, + 0,0,34,0,0,0,65,0,0,0,65,0,0,0,65,0, + 0,0,65,0,0,0,34,0,0,0,28,0,0,0,0,0, + 0,0,8,0,0,0,12,0,0,0,28,0,0,0,28,0, + 0,0,30,0,0,0,62,0,0,0,46,0,0,0,47,0, + 0,0,111,0,0,0,71,0,0,0,71,128,0,0,199,128, + 0,0,131,128,0,1,131,192,0,1,131,192,0,1,1,192, + 0,3,1,224,0,3,255,224,0,2,0,224,0,6,0,240, + 0,6,0,240,0,4,0,112,0,12,0,120,0,12,0,120, + 0,28,0,120,0,255,195,255,128,33,26,130,36,1,0,0, + 7,255,255,128,0,1,224,7,128,0,1,224,3,128,0,3, + 224,1,128,0,2,224,1,128,0,6,224,0,128,0,4,224, + 0,128,0,12,224,32,128,0,8,224,32,0,0,24,224,32, + 0,0,16,224,96,0,0,48,224,96,0,0,48,255,224,0, + 0,96,224,96,0,0,96,224,96,0,0,192,224,32,0,0, + 192,224,32,128,1,255,224,32,128,1,0,224,0,128,3,0, + 224,0,128,2,0,224,1,128,6,0,224,1,128,6,0,224, + 1,128,14,0,224,3,128,30,0,224,15,128,255,199,255,255, + 128,19,34,102,24,3,249,3,252,64,14,6,96,28,3,224, + 24,1,224,56,0,224,120,0,224,112,0,96,112,0,96,240, + 0,96,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,32,112,0,32, + 120,0,96,56,0,64,56,0,64,24,0,128,12,0,128,6, + 3,0,3,204,0,0,112,0,0,64,0,0,240,0,0,28, + 0,0,28,0,0,28,0,2,28,0,1,240,0,21,34,102, + 25,2,0,3,0,0,3,128,0,1,192,0,0,192,0,0, + 96,0,0,16,0,0,0,0,0,0,0,255,255,248,14,0, + 120,14,0,56,14,0,24,14,0,24,14,0,8,14,0,8, + 14,4,8,14,4,0,14,4,0,14,12,0,14,12,0,15, + 252,0,14,12,0,14,4,0,14,4,0,14,4,8,14,4, + 8,14,0,8,14,0,8,14,0,24,14,0,24,14,0,56, + 14,0,56,14,0,248,255,255,248,21,34,102,25,2,0,0, + 3,0,0,7,128,0,7,0,0,12,0,0,24,0,0,48, + 0,0,0,0,0,0,0,255,255,248,14,0,120,14,0,56, + 14,0,24,14,0,24,14,0,8,14,0,8,14,4,8,14, + 4,0,14,4,0,14,12,0,14,12,0,15,252,0,14,12, + 0,14,4,0,14,4,0,14,4,8,14,4,8,14,0,8, + 14,0,8,14,0,24,14,0,24,14,0,56,14,0,56,14, + 0,248,255,255,248,21,34,102,25,2,0,0,48,0,0,48, + 0,0,120,0,0,204,0,1,134,0,2,1,128,0,0,0, + 0,0,0,255,255,248,14,0,120,14,0,56,14,0,24,14, + 0,24,14,0,8,14,0,8,14,4,8,14,4,0,14,4, + 0,14,12,0,14,12,0,15,252,0,14,12,0,14,4,0, + 14,4,0,14,4,8,14,4,8,14,0,8,14,0,8,14, + 0,24,14,0,24,14,0,56,14,0,56,14,0,248,255,255, + 248,21,33,99,25,2,0,1,131,0,3,135,0,3,135,0, + 1,131,0,0,0,0,0,0,0,0,0,0,255,255,248,14, + 0,120,14,0,56,14,0,24,14,0,24,14,0,8,14,0, + 8,14,4,8,14,4,0,14,4,0,14,12,0,14,12,0, + 15,252,0,14,12,0,14,4,0,14,4,0,14,4,8,14, + 4,8,14,0,8,14,0,8,14,0,24,14,0,24,14,0, + 56,14,0,56,14,0,248,255,255,248,10,34,68,14,2,0, + 192,0,224,0,112,0,56,0,8,0,4,0,0,0,0,0, + 255,192,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,192,10,34,68,14,2,0,0,192,1,192,1,128, + 3,0,6,0,4,0,0,0,0,0,255,192,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,255,192,10,34, + 68,14,2,0,4,0,14,0,30,0,59,0,97,128,128,64, + 0,0,0,0,255,192,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,255,192,11,33,66,14,2,0,96,192, + 224,224,224,224,96,192,0,0,0,0,0,0,127,224,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,127,224, + 24,26,78,27,2,0,255,255,0,14,0,192,14,0,112,14, + 0,56,14,0,60,14,0,28,14,0,30,14,0,30,14,0, + 14,14,0,15,14,0,15,14,0,15,255,224,15,14,0,15, + 14,0,15,14,0,15,14,0,15,14,0,14,14,0,30,14, + 0,30,14,0,28,14,0,56,14,0,56,14,0,112,14,0, + 192,255,255,0,25,33,132,28,2,0,0,120,32,0,0,254, + 96,0,0,143,192,0,0,131,128,0,0,0,0,0,0,0, + 0,0,0,0,0,0,254,0,255,128,15,0,28,0,15,128, + 8,0,15,128,8,0,11,192,8,0,11,192,8,0,9,224, + 8,0,8,240,8,0,8,240,8,0,8,120,8,0,8,60, + 8,0,8,60,8,0,8,30,8,0,8,30,8,0,8,15, + 8,0,8,7,136,0,8,7,136,0,8,3,200,0,8,1, + 232,0,8,1,232,0,8,0,248,0,8,0,120,0,8,0, + 120,0,8,0,56,0,28,0,24,0,255,128,24,0,21,34, + 102,26,3,0,3,0,0,7,0,0,3,128,0,1,192,0, + 0,64,0,0,32,0,0,0,0,0,32,0,3,220,0,6, + 3,0,12,1,128,28,1,192,56,0,224,56,0,224,120,0, + 240,112,0,112,112,0,112,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,240,0,120,112, + 0,112,112,0,112,120,0,240,56,0,224,56,0,224,28,1, + 192,12,1,128,6,3,0,3,254,0,21,34,102,26,3,0, + 0,6,0,0,7,0,0,14,0,0,28,0,0,16,0,0, + 32,0,0,0,0,0,32,0,3,220,0,6,3,0,12,1, + 128,28,1,192,56,0,224,56,0,224,120,0,240,112,0,112, + 112,0,112,240,0,120,240,0,120,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,112,0,112,112,0, + 112,120,0,240,56,0,224,56,0,224,28,1,192,12,1,128, + 6,3,0,3,254,0,21,34,102,26,3,0,0,32,0,0, + 112,0,0,112,0,0,216,0,1,4,0,6,3,0,0,0, + 0,0,32,0,3,220,0,6,3,0,12,1,128,28,1,192, + 56,0,224,56,0,224,120,0,240,112,0,112,112,0,112,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,240,0,120,240,0,120,112,0,112,112,0,112,120,0,240, + 56,0,224,56,0,224,28,1,192,12,1,128,6,3,0,3, + 254,0,21,33,99,26,3,0,3,225,0,3,255,0,4,62, + 0,0,0,0,0,0,0,0,0,0,0,32,0,3,220,0, + 6,3,0,12,1,128,28,1,192,56,0,224,56,0,224,120, + 0,240,112,0,112,112,0,112,240,0,120,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,120,240,0,120,240,0,120, + 112,0,112,112,0,112,120,0,240,56,0,224,56,0,224,28, + 1,192,12,1,128,6,3,0,3,254,0,21,33,99,26,3, + 0,3,6,0,7,7,0,7,7,0,3,6,0,0,0,0, + 0,0,0,0,32,0,3,220,0,6,3,0,12,1,128,28, + 1,192,56,0,224,56,0,224,120,0,240,112,0,112,112,0, + 112,240,0,120,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,112,0,112,112,0,112,120, + 0,240,56,0,224,56,0,224,28,1,192,12,1,128,6,3, + 0,3,254,0,22,23,69,34,6,254,128,0,4,192,0,12, + 96,0,24,48,0,48,24,0,96,12,0,192,6,1,128,3, + 3,0,1,134,0,0,204,0,0,120,0,0,48,0,0,120, + 0,0,204,0,1,134,0,3,3,0,6,1,128,12,0,192, + 24,0,96,48,0,48,96,0,24,192,0,12,128,0,0,21, + 27,81,26,3,0,0,32,0,3,222,24,6,3,48,12,1, + 224,28,1,192,56,0,224,56,1,224,120,3,240,112,2,112, + 112,6,112,240,12,120,240,24,120,240,16,120,240,48,120,240, + 96,120,240,192,120,240,192,120,241,128,120,115,0,112,114,0, + 112,126,0,240,60,0,224,56,0,224,28,1,192,60,1,128, + 102,3,0,195,222,0,25,34,136,29,2,0,0,192,0,0, + 0,224,0,0,0,224,0,0,0,48,0,0,0,16,0,0, + 0,8,0,0,0,0,0,0,0,0,0,0,255,192,255,128, + 14,0,14,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 6,0,8,0,7,0,8,0,3,0,16,0,1,192,32,0, + 0,127,192,0,25,34,136,29,2,0,0,0,192,0,0,1, + 192,0,0,3,128,0,0,7,0,0,0,4,0,0,0,8, + 0,0,0,0,0,0,0,0,0,0,255,192,255,128,14,0, + 14,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,6,0, + 8,0,7,0,8,0,3,0,16,0,1,192,32,0,0,127, + 192,0,25,34,136,29,2,0,0,8,0,0,0,28,0,0, + 0,30,0,0,0,55,0,0,0,65,128,0,1,128,96,0, + 0,0,0,0,0,0,0,0,255,192,255,128,14,0,14,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,6,0,8,0, + 7,0,8,0,3,128,16,0,1,192,96,0,0,127,192,0, + 25,33,132,29,2,0,0,192,192,0,0,225,192,0,0,225, + 192,0,0,192,192,0,0,0,0,0,0,0,0,0,0,0, + 0,0,255,192,255,128,14,0,14,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,6,0,8,0,7,0,8,0,3,0, + 16,0,1,192,32,0,0,127,192,0,24,34,102,27,2,0, + 0,0,192,0,1,192,0,3,128,0,7,0,0,4,0,0, + 8,0,0,0,0,0,0,0,255,225,255,31,0,56,15,0, + 48,7,128,48,7,128,32,3,192,96,3,192,64,1,224,128, + 0,224,128,0,241,0,0,113,0,0,122,0,0,58,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,1,255,224,21,26,78,25,2,0,255,224,0,14, + 0,0,14,0,0,14,0,0,14,0,0,15,255,0,14,1, + 192,14,0,224,14,0,240,14,0,120,14,0,120,14,0,120, + 14,0,120,14,0,120,14,0,240,14,0,224,14,1,192,15, + 255,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,255,224,0,16,26,52,19,1,0, + 1,240,3,28,6,14,14,14,28,14,28,14,28,12,28,28, + 28,48,29,192,28,48,28,24,28,12,28,14,28,6,28,7, + 28,7,28,7,28,7,28,7,28,135,29,199,29,199,29,142, + 29,140,252,120,16,25,50,19,2,1,112,0,112,0,56,0, + 28,0,12,0,2,0,0,0,0,0,15,128,48,224,32,112, + 96,112,120,112,120,112,0,112,1,240,30,112,112,112,96,112, + 224,112,224,113,224,241,225,113,113,126,62,60,16,25,50,19, + 2,1,0,112,0,240,0,224,1,128,3,0,2,0,0,0, + 0,0,15,128,48,224,96,112,96,112,120,112,120,112,0,112, + 1,240,30,112,112,112,96,112,224,112,224,113,224,241,225,113, + 113,126,62,60,16,25,50,19,2,0,6,0,7,0,7,0, + 13,128,24,192,48,96,0,0,0,0,15,128,48,224,96,112, + 96,112,120,112,120,112,0,112,1,240,30,112,112,112,96,112, + 224,112,224,113,224,241,225,113,113,126,62,60,16,24,48,19, + 2,0,30,48,63,224,35,192,0,0,0,0,0,0,0,0, + 15,128,48,224,96,112,96,112,120,112,120,112,0,112,1,240, + 30,112,112,112,96,112,224,112,224,113,224,241,225,113,113,126, + 62,60,16,24,48,19,2,0,48,96,112,224,112,224,48,96, + 0,0,0,0,0,0,15,0,48,192,96,96,96,96,112,96, + 112,96,0,96,1,224,30,96,112,96,96,96,224,96,224,97, + 224,225,225,99,113,126,62,60,16,25,50,19,2,0,7,0, + 24,192,16,64,16,64,24,192,7,0,0,0,0,0,15,128, + 48,224,96,112,96,112,120,112,120,112,0,112,1,240,30,112, + 112,112,96,112,224,112,224,113,224,241,225,113,113,126,62,60, + 22,17,51,26,2,0,15,135,192,48,236,112,96,120,48,112, + 120,56,120,112,24,56,112,28,0,112,28,7,255,252,56,112, + 0,112,112,0,224,112,0,224,112,4,224,248,8,224,184,8, + 225,56,16,113,28,48,62,7,192,12,24,48,16,2,249,15, + 128,24,96,48,48,112,48,96,112,224,112,224,112,224,0,224, + 0,224,0,224,0,224,0,96,16,112,16,48,32,24,96,15, + 128,2,0,6,0,1,128,0,192,0,192,16,192,15,128,13, + 25,50,17,2,1,48,0,56,0,28,0,12,0,6,0,3, + 0,0,0,0,0,15,128,24,224,48,96,112,112,96,48,224, + 56,224,56,255,248,224,0,224,0,224,0,224,8,112,16,112, + 16,48,16,24,96,7,128,13,25,50,17,2,1,0,112,0, + 112,0,224,0,192,1,128,3,0,0,0,0,0,15,128,24, + 224,48,96,112,112,96,48,224,56,224,56,255,248,224,0,224, + 0,224,0,224,8,112,16,112,16,48,16,24,96,7,128,13, + 25,50,17,2,0,3,0,3,0,7,128,5,128,8,64,16, + 32,0,0,0,0,15,128,24,224,48,96,112,112,96,48,224, + 56,224,56,255,248,224,0,224,0,224,0,224,8,112,16,112, + 16,48,32,24,96,7,128,13,24,48,17,2,0,24,96,56, + 112,56,112,24,96,0,0,0,0,0,0,15,128,24,224,48, + 96,112,48,96,48,224,56,224,56,255,248,224,0,224,0,224, + 0,224,8,112,16,112,16,48,32,24,96,7,128,9,25,50, + 11,0,0,192,0,224,0,112,0,56,0,8,0,4,0,0, + 0,0,0,62,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,63,128,8,25,25,10,2,0,3,7,7,12,24, + 48,0,0,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,9,25,50,11,1,0,24,0,28,0,60,0, + 54,0,99,0,128,128,0,0,0,0,124,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,127,0,9,24,48,11, + 1,0,97,128,227,128,227,128,97,128,0,0,0,0,0,0, + 126,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 127,128,14,26,52,18,2,0,28,16,14,48,15,192,7,128, + 7,128,13,192,48,224,0,224,0,112,7,240,24,120,48,56, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,112,24,112,56,48,48,24,96,7,128,17,24,72,21, + 2,0,7,4,0,15,204,0,9,248,0,8,112,0,0,0, + 0,0,0,0,0,0,0,248,248,0,57,28,0,58,14,0, + 60,14,0,60,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,254,63,128,14,25,50,18,2,1, + 56,0,56,0,28,0,12,0,6,0,3,0,0,0,0,0, + 7,128,24,96,48,48,112,56,112,24,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,112,24,112,56,48,48,24,96, + 7,128,14,25,50,18,2,1,0,48,0,112,0,224,0,192, + 1,128,1,0,0,0,0,0,7,128,24,96,48,48,112,56, + 112,24,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 112,24,112,56,48,48,24,96,7,128,14,25,50,18,2,0, + 3,0,3,0,7,128,4,128,8,64,16,32,0,0,0,0, + 7,128,24,96,48,48,112,56,112,24,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,112,24,112,56,48,48,24,96, + 7,128,14,24,48,18,2,0,30,16,31,240,33,224,0,0, + 0,0,0,0,0,0,7,128,24,96,48,48,112,56,112,24, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,112,24, + 112,56,48,48,24,96,7,128,14,24,48,18,2,0,24,48, + 56,112,56,112,24,48,0,0,0,0,0,0,7,128,24,96, + 48,48,112,56,112,24,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,112,24,112,56,48,48,24,96,7,128,30,23, + 92,34,2,254,0,3,0,0,0,7,128,0,0,7,128,0, + 0,7,128,0,0,3,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,7,128,0,0,7,128,0,0,7,128,0,0,3,0,0, + 14,17,34,18,2,0,7,132,24,104,48,56,112,56,112,56, + 224,92,224,156,225,156,227,28,226,28,228,28,232,28,120,24, + 112,56,48,48,88,96,135,192,17,25,75,20,1,1,28,0, + 0,28,0,0,14,0,0,3,0,0,1,0,0,0,128,0, + 0,0,0,0,0,0,248,62,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,30,0,56,30,0, + 56,46,0,28,78,0,15,143,128,17,25,75,20,1,1,0, + 28,0,0,60,0,0,48,0,0,96,0,0,192,0,0,128, + 0,0,0,0,0,0,0,248,62,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,30,0,56,30, + 0,56,46,0,28,78,0,15,143,128,17,25,75,20,1,0, + 0,128,0,1,192,0,1,192,0,3,96,0,4,48,0,8, + 8,0,0,0,0,0,0,0,248,62,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,30,0,56, + 30,0,56,46,0,28,78,0,15,143,128,17,24,72,20,1, + 0,12,48,0,28,56,0,28,56,0,12,48,0,0,0,0, + 0,0,0,0,0,0,248,62,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,30,0,56,30,0, + 56,46,0,28,78,0,15,143,128,18,33,99,19,1,249,0, + 12,0,0,28,0,0,24,0,0,48,0,0,96,0,0,64, + 0,0,0,0,0,0,0,255,31,192,28,6,0,28,4,0, + 12,4,0,14,4,0,14,4,0,6,8,0,7,8,0,7, + 8,0,3,16,0,3,144,0,3,144,0,1,224,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,64,0,0,128,0, + 0,128,0,112,128,0,113,128,0,113,0,0,114,0,0,60, + 0,0,16,34,68,19,1,247,12,0,60,0,92,0,28,0, + 28,0,28,0,28,0,28,0,28,60,28,126,28,143,29,7, + 30,7,30,7,30,7,28,6,28,14,28,14,28,12,28,24, + 28,16,28,32,28,64,29,128,31,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,224,0,17,32,96,19, + 1,248,6,12,0,7,28,0,7,28,0,6,12,0,0,0, + 0,0,0,0,0,0,0,255,31,128,28,6,0,28,4,0, + 14,4,0,14,4,0,14,8,0,7,8,0,7,8,0,7, + 16,0,3,144,0,3,144,0,3,160,0,1,224,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,64,0,0,128,0, + 0,128,0,112,128,0,121,0,0,121,0,0,114,0,0,60, + 0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=30 h=34 x= 4 y=10 dx=34 dy= 0 ascent=27 len=124 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26n[932] U8G_SECTION(".progmem.u8g_font_osr26n") = { + 0,94,46,227,245,25,0,0,0,0,42,57,0,27,249,25, + 0,13,15,30,18,3,10,7,0,7,0,7,0,195,24,226, + 56,114,112,10,128,7,0,15,128,122,240,242,120,226,56,7, + 0,7,0,7,0,30,31,124,34,2,250,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,255,255,255,252,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,5,11,11,10,2,250,112,248,248, + 120,8,8,8,16,16,32,64,9,2,4,13,2,8,255,128, + 255,128,4,5,5,10,3,0,96,240,240,240,96,12,34,68, + 16,2,249,0,16,0,48,0,48,0,32,0,96,0,96,0, + 64,0,192,0,192,0,128,0,128,1,128,1,0,1,0,3, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,24,0,16,0,48,0,48,0,32,0,96,0,96, + 0,64,0,192,0,192,0,17,25,75,21,2,0,3,224,0, + 14,56,0,28,28,0,24,12,0,56,14,0,112,7,0,112, + 7,0,112,7,0,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 112,7,0,112,7,0,112,7,0,56,14,0,56,14,0,24, + 12,0,12,24,0,7,112,0,12,25,50,21,4,0,1,0, + 3,0,3,0,15,0,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,255,240, + 15,25,50,21,3,0,15,192,48,112,96,56,64,60,192,30, + 192,30,224,30,248,30,248,30,120,28,0,60,0,56,0,112, + 0,224,1,192,3,0,14,0,28,4,56,4,48,4,96,4, + 96,12,255,252,255,252,255,252,15,25,50,21,3,0,15,192, + 48,112,32,56,96,28,112,28,120,28,120,28,48,28,0,28, + 0,56,0,112,31,192,24,112,0,56,0,60,0,30,0,30, + 112,30,248,30,248,30,248,30,192,60,192,56,96,112,63,224, + 17,25,75,21,2,0,0,16,0,0,48,0,0,112,0,0, + 112,0,0,240,0,1,240,0,1,112,0,3,112,0,6,112, + 0,6,112,0,12,112,0,8,112,0,24,112,0,48,112,0, + 32,112,0,96,112,0,192,112,0,255,255,128,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,7,255, + 128,15,26,52,21,3,0,32,0,48,56,63,240,63,192,47, + 0,32,0,32,0,32,0,32,0,39,192,56,112,48,56,32, + 60,32,28,0,30,0,30,0,30,0,30,120,30,248,30,248, + 28,240,60,224,60,96,56,112,112,63,192,15,25,50,21,3, + 0,3,224,6,24,12,12,24,28,56,60,48,60,112,16,112, + 0,112,0,243,224,246,56,252,28,248,28,248,14,240,14,240, + 14,240,14,240,14,112,14,112,14,112,12,56,28,56,24,24, + 56,14,224,14,25,50,21,3,0,255,252,255,252,255,252,192, + 12,128,8,128,8,128,8,128,16,0,16,0,32,0,96,0, + 64,0,128,1,128,1,128,3,0,3,0,7,0,7,0,15, + 128,15,128,15,128,15,128,15,128,7,128,17,25,75,21,2, + 0,7,240,0,28,28,0,48,14,0,112,6,0,224,3,0, + 224,3,0,224,3,0,240,3,0,240,6,0,124,6,0,127, + 140,0,31,240,0,7,252,0,25,254,0,48,63,0,96,15, + 128,224,7,128,224,3,128,224,3,128,224,3,128,224,3,0, + 96,7,0,112,6,0,56,12,0,15,248,0,15,25,50,21, + 3,0,7,192,24,96,48,48,112,56,112,28,224,28,224,28, + 224,30,224,30,224,30,224,30,112,62,112,62,56,94,15,158, + 0,30,0,28,0,28,56,28,120,28,120,56,112,56,96,112, + 48,224,31,192}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=36 h=34 x= 4 y=20 dx=38 dy= 0 ascent=28 len=130 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =27 descent=-8 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_SECTION(".progmem.u8g_font_osr26r") = { + 0,94,46,227,245,26,7,96,17,82,32,127,248,28,248,27, + 248,0,0,0,10,0,0,4,25,25,10,3,0,96,240,240, + 240,240,240,240,240,96,96,96,96,96,96,96,96,96,96,32, + 64,96,240,240,240,96,8,7,7,14,3,20,195,195,195,195, + 195,195,66,19,25,75,25,3,0,1,130,0,1,130,0,1, + 2,0,1,6,0,3,6,0,3,6,0,3,6,0,255,255, + 224,2,4,0,2,4,0,2,12,0,6,12,0,6,12,0, + 6,12,0,6,8,0,4,8,0,4,8,0,255,255,224,12, + 24,0,12,24,0,12,16,0,8,16,0,8,48,0,8,48, + 0,24,48,0,16,31,62,21,2,253,2,64,2,64,2,64, + 7,224,26,92,50,70,34,66,98,67,98,71,98,79,98,79, + 114,78,58,64,63,64,31,192,7,240,3,252,2,126,2,78, + 34,71,242,67,242,67,226,67,226,67,194,66,66,70,34,76, + 30,112,3,192,2,64,2,64,24,25,75,30,3,0,30,0, + 48,33,0,32,97,128,96,192,192,64,192,192,192,192,192,128, + 192,193,0,192,195,0,192,194,0,64,134,0,97,132,0,34, + 8,0,28,24,112,0,16,132,0,49,134,0,33,2,0,67, + 3,0,195,3,0,131,3,1,131,3,1,3,3,3,3,3, + 6,1,6,4,1,134,12,0,252,24,25,75,28,2,0,1, + 240,0,3,8,0,6,12,0,12,4,0,12,4,0,12,12, + 0,14,8,0,14,24,0,7,48,0,7,192,0,3,193,255, + 7,192,56,13,224,48,24,240,48,48,112,32,112,120,96,112, + 60,64,224,28,128,224,15,128,224,15,0,224,7,0,240,3, + 129,112,15,194,120,25,228,31,224,252,2,7,7,8,3,20, + 192,192,192,192,192,192,64,8,33,33,14,4,250,3,6,12, + 12,24,16,48,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,64,96,96,96,48,48,24,24,12,6,6,3,8,33, + 33,13,2,250,192,96,96,48,24,24,12,12,6,6,6,2, + 3,3,3,3,3,3,3,3,2,6,6,6,4,12,12,24, + 24,48,96,192,128,13,15,30,18,3,10,7,0,7,0,7, + 0,195,24,226,56,114,112,10,128,7,0,15,128,122,240,242, + 120,226,56,7,0,7,0,7,0,30,31,124,34,2,250,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,255,255,255,252,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,5,11,11,10,2, + 250,112,248,248,120,8,8,8,16,16,32,64,9,2,4,13, + 2,8,255,128,255,128,4,5,5,10,3,0,96,240,240,240, + 96,12,34,68,16,2,249,0,16,0,48,0,48,0,32,0, + 96,0,96,0,64,0,192,0,192,0,128,0,128,1,128,1, + 0,1,0,3,0,2,0,2,0,6,0,4,0,4,0,12, + 0,8,0,8,0,24,0,24,0,16,0,48,0,48,0,32, + 0,96,0,96,0,64,0,192,0,192,0,17,25,75,21,2, + 0,3,224,0,14,56,0,28,28,0,24,12,0,56,14,0, + 112,7,0,112,7,0,112,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,112,7,0,112,7,0,112,7,0,56,14,0, + 56,14,0,24,12,0,12,24,0,7,112,0,12,25,50,21, + 4,0,1,0,3,0,3,0,15,0,255,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,255,240,15,25,50,21,3,0,15,192,48,112,96,56, + 64,60,192,30,192,30,224,30,248,30,248,30,120,28,0,60, + 0,56,0,112,0,224,1,192,3,0,14,0,28,4,56,4, + 48,4,96,4,96,12,255,252,255,252,255,252,15,25,50,21, + 3,0,15,192,48,112,32,56,96,28,112,28,120,28,120,28, + 48,28,0,28,0,56,0,112,31,192,24,112,0,56,0,60, + 0,30,0,30,112,30,248,30,248,30,248,30,192,60,192,56, + 96,112,63,224,17,25,75,21,2,0,0,16,0,0,48,0, + 0,112,0,0,112,0,0,240,0,1,240,0,1,112,0,3, + 112,0,6,112,0,6,112,0,12,112,0,8,112,0,24,112, + 0,48,112,0,32,112,0,96,112,0,192,112,0,255,255,128, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,15,26,52,21,3,0,32,0,48,56,63, + 240,63,192,47,0,32,0,32,0,32,0,32,0,39,192,56, + 112,48,56,32,60,32,28,0,30,0,30,0,30,0,30,120, + 30,248,30,248,28,240,60,224,60,96,56,112,112,63,192,15, + 25,50,21,3,0,3,224,6,24,12,12,24,28,56,60,48, + 60,112,16,112,0,112,0,243,224,246,56,252,28,248,28,248, + 14,240,14,240,14,240,14,240,14,112,14,112,14,112,12,56, + 28,56,24,24,56,14,224,14,25,50,21,3,0,255,252,255, + 252,255,252,192,12,128,8,128,8,128,8,128,16,0,16,0, + 32,0,96,0,64,0,128,1,128,1,128,3,0,3,0,7, + 0,7,0,15,128,15,128,15,128,15,128,15,128,7,128,17, + 25,75,21,2,0,7,240,0,28,28,0,48,14,0,112,6, + 0,224,3,0,224,3,0,224,3,0,240,3,0,240,6,0, + 124,6,0,127,140,0,31,240,0,7,252,0,25,254,0,48, + 63,0,96,15,128,224,7,128,224,3,128,224,3,128,224,3, + 128,224,3,0,96,7,0,112,6,0,56,12,0,15,248,0, + 15,25,50,21,3,0,7,192,24,96,48,48,112,56,112,28, + 224,28,224,28,224,30,224,30,224,30,224,30,112,62,112,62, + 56,94,15,158,0,30,0,28,0,28,56,28,120,28,120,56, + 112,56,96,112,48,224,31,192,4,17,17,10,3,0,96,240, + 240,240,96,0,0,0,0,0,0,0,96,240,240,240,96,5, + 23,23,11,3,250,112,248,248,248,112,0,0,0,0,0,0, + 0,112,240,248,120,8,8,8,16,16,32,64,28,29,116,34, + 3,251,0,0,0,112,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,1,224,0,0,3,128,0,0,14, + 0,0,0,56,0,0,0,224,0,0,3,128,0,0,15,0, + 0,0,28,0,0,0,112,0,0,0,192,0,0,0,112,0, + 0,0,28,0,0,0,7,0,0,0,1,192,0,0,0,240, + 0,0,0,56,0,0,0,14,0,0,0,3,128,0,0,0, + 224,0,0,0,56,0,0,0,14,0,0,0,7,0,0,0, + 1,192,0,0,0,112,30,8,32,34,2,6,255,255,255,252, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,252,28,29,116,34, + 3,251,224,0,0,0,56,0,0,0,14,0,0,0,3,128, + 0,0,0,224,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,1,192,0,0,0,112,0,0,0,28,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,48,0,0, + 0,224,0,0,3,128,0,0,14,0,0,0,56,0,0,0, + 240,0,0,1,192,0,0,7,0,0,0,28,0,0,0,112, + 0,0,1,192,0,0,7,0,0,0,30,0,0,0,56,0, + 0,0,224,0,0,0,13,25,50,17,2,0,15,128,48,224, + 64,112,192,56,192,56,248,56,248,56,112,56,0,112,0,224, + 1,192,3,128,3,0,4,0,12,0,8,64,8,64,8,128, + 7,0,0,0,3,0,7,128,7,128,7,128,3,0,26,27, + 108,30,2,0,0,4,0,0,0,251,224,0,3,0,56,0, + 6,0,12,0,12,0,6,0,24,0,3,0,48,15,1,0, + 48,49,241,128,96,96,241,128,96,192,224,128,193,192,224,192, + 193,128,224,192,193,128,192,192,195,128,192,192,195,1,192,192, + 195,1,192,192,195,1,129,128,195,3,129,128,67,7,129,0, + 99,7,130,0,97,137,132,0,32,240,248,0,48,0,0,0, + 24,0,0,0,12,0,16,0,7,0,48,0,1,255,192,0, + 25,26,104,28,2,0,0,8,0,0,0,12,0,0,0,28, + 0,0,0,28,0,0,0,30,0,0,0,62,0,0,0,46, + 0,0,0,47,0,0,0,103,0,0,0,103,0,0,0,71, + 128,0,0,195,128,0,0,195,128,0,0,131,192,0,1,129, + 192,0,1,129,192,0,3,1,224,0,3,255,224,0,2,0, + 224,0,6,0,240,0,6,0,112,0,6,0,112,0,12,0, + 120,0,12,0,120,0,30,0,120,0,255,195,255,128,20,26, + 78,25,3,0,255,252,0,28,3,0,28,1,192,28,1,192, + 28,0,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 1,192,28,1,128,28,3,0,31,252,0,28,7,0,28,1, + 192,28,1,224,28,0,224,28,0,240,28,0,240,28,0,240, + 28,0,240,28,0,240,28,1,224,28,1,192,28,3,128,255, + 254,0,19,26,78,24,3,1,3,252,32,14,6,96,28,3, + 224,24,1,224,56,0,224,120,0,224,112,0,96,112,0,96, + 240,0,96,240,0,32,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,112,0,32,112,0, + 32,120,0,96,56,0,64,56,0,64,28,0,128,12,0,128, + 6,3,0,3,222,0,24,26,78,29,3,0,255,255,0,28, + 1,192,28,0,112,28,0,56,28,0,56,28,0,28,28,0, + 30,28,0,30,28,0,14,28,0,15,28,0,15,28,0,15, + 28,0,15,28,0,15,28,0,15,28,0,15,28,0,15,28, + 0,14,28,0,30,28,0,30,28,0,28,28,0,56,28,0, + 56,28,0,112,28,1,192,255,255,0,21,26,78,25,2,0, + 255,255,248,14,0,120,14,0,56,14,0,24,14,0,24,14, + 0,8,14,0,8,14,4,8,14,4,0,14,4,0,14,12, + 0,14,12,0,15,252,0,14,12,0,14,4,0,14,4,0, + 14,4,8,14,4,8,14,0,8,14,0,8,14,0,24,14, + 0,24,14,0,56,14,0,56,14,0,248,255,255,248,20,26, + 78,24,2,0,255,255,240,14,0,240,14,0,112,14,0,48, + 14,0,48,14,0,16,14,0,16,14,4,16,14,4,0,14, + 4,0,14,12,0,14,12,0,15,252,0,14,12,0,14,12, + 0,14,4,0,14,4,0,14,4,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,255, + 224,0,22,27,81,26,3,0,0,32,0,3,220,32,6,7, + 32,12,3,224,24,1,224,56,0,224,56,0,96,112,0,96, + 112,0,96,112,0,32,240,0,32,240,0,0,240,0,0,240, + 0,0,240,15,252,240,0,224,240,0,224,240,0,224,240,0, + 224,112,0,224,112,0,224,56,0,224,56,1,224,24,1,32, + 12,3,32,6,6,32,3,252,32,24,26,78,28,2,0,255, + 195,255,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,15,255,248,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,255,195,255,10,26,52, + 14,2,0,255,192,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,255,192,16,26,52,19,2,0,3,255,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,112,56,248,56,248,56,240,56,192,48,192,112,96,96,63, + 192,24,26,78,28,2,0,255,199,254,14,1,240,14,0,224, + 14,0,192,14,1,128,14,3,0,14,6,0,14,12,0,14, + 24,0,14,24,0,14,56,0,14,124,0,14,188,0,15,62, + 0,15,30,0,14,31,0,14,15,0,14,15,128,14,7,128, + 14,7,192,14,3,192,14,1,224,14,1,240,14,0,240,14, + 0,248,255,199,255,20,26,78,24,2,0,255,224,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,16,14,0, + 16,14,0,32,14,0,48,14,0,48,14,0,48,14,0,112, + 14,0,240,14,3,240,255,255,240,26,26,104,30,2,0,255, + 0,31,192,15,0,30,0,15,128,30,0,15,128,46,0,11, + 128,46,0,11,128,46,0,11,192,110,0,9,192,78,0,9, + 192,78,0,9,224,78,0,8,224,142,0,8,224,142,0,8, + 224,142,0,8,241,142,0,8,113,14,0,8,113,14,0,8, + 121,14,0,8,59,14,0,8,58,14,0,8,58,14,0,8, + 30,14,0,8,28,14,0,8,28,14,0,8,12,14,0,28, + 12,14,0,255,136,255,192,25,26,104,28,2,0,254,0,255, + 128,15,0,28,0,15,128,8,0,15,128,8,0,11,192,8, + 0,11,192,8,0,9,224,8,0,8,240,8,0,8,240,8, + 0,8,120,8,0,8,60,8,0,8,60,8,0,8,30,8, + 0,8,30,8,0,8,15,8,0,8,7,136,0,8,7,136, + 0,8,3,200,0,8,1,232,0,8,1,232,0,8,0,248, + 0,8,0,120,0,8,0,120,0,8,0,56,0,28,0,24, + 0,255,128,24,0,21,27,81,26,3,0,0,32,0,3,220, + 0,6,3,0,12,1,128,28,1,192,56,0,224,56,0,224, + 120,0,240,112,0,112,112,0,112,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,112,0,112,112,0,112,120,0,240,56,0,224,56,0,224, + 28,1,192,12,1,128,6,3,0,3,254,0,21,26,78,25, + 2,0,255,255,0,14,1,192,14,0,224,14,0,240,14,0, + 120,14,0,120,14,0,120,14,0,120,14,0,120,14,0,112, + 14,0,240,14,0,224,14,1,192,15,254,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,255,224,0, + 21,33,99,26,3,250,0,32,0,3,220,0,6,3,0,12, + 1,128,28,1,192,56,0,224,56,0,224,120,0,240,112,0, + 112,112,0,112,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,112,0,112,112, + 0,112,120,0,240,56,112,224,57,152,224,29,13,192,13,13, + 128,7,15,8,3,158,8,0,110,8,0,14,8,0,14,24, + 0,7,176,0,7,240,0,3,192,22,26,78,25,2,0,255, + 255,0,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,1,192,14,7,128, + 15,252,0,14,6,0,14,7,0,14,3,128,14,3,128,14, + 3,128,14,3,192,14,3,192,14,3,192,14,3,196,14,1, + 196,14,1,196,14,1,236,14,1,248,255,224,240,17,26,78, + 22,3,1,31,227,0,48,51,0,96,31,0,192,15,0,192, + 7,0,192,3,0,192,3,0,224,3,0,240,1,0,120,0, + 0,127,0,0,63,192,0,31,248,0,7,252,0,1,254,0, + 128,63,0,128,15,128,128,3,128,192,3,128,192,1,128,192, + 1,128,224,1,128,240,1,0,248,3,0,140,6,0,135,252, + 0,21,26,78,26,3,0,255,255,248,240,112,120,224,112,56, + 192,112,24,192,112,24,192,112,24,128,112,8,128,112,8,128, + 112,8,128,112,8,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,25,26,104,29,2,0,255,192,255,128,14, + 0,14,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,6, + 0,8,0,7,0,8,0,3,0,16,0,1,192,32,0,0, + 127,192,0,25,26,104,28,2,0,255,241,255,128,15,0,60, + 0,15,0,24,0,7,128,24,0,7,128,16,0,3,128,48, + 0,3,192,48,0,3,192,48,0,1,192,32,0,1,224,96, + 0,1,224,96,0,0,224,64,0,0,240,192,0,0,240,192, + 0,0,112,128,0,0,113,128,0,0,121,128,0,0,57,0, + 0,0,59,0,0,0,63,0,0,0,30,0,0,0,30,0, + 0,0,14,0,0,0,14,0,0,0,12,0,0,0,4,0, + 0,36,26,130,38,1,0,255,231,255,63,240,15,0,248,7, + 128,15,0,120,3,0,7,0,120,3,0,7,128,120,6,0, + 7,128,248,6,0,3,128,252,6,0,3,128,252,4,0,3, + 192,156,12,0,1,193,156,12,0,1,193,158,12,0,1,225, + 14,24,0,1,227,14,24,0,0,227,14,24,0,0,227,15, + 16,0,0,242,7,48,0,0,118,7,48,0,0,118,7,32, + 0,0,116,3,224,0,0,124,3,224,0,0,60,3,192,0, + 0,60,1,192,0,0,56,1,192,0,0,24,1,192,0,0, + 24,1,128,0,0,16,0,128,0,24,26,78,27,2,0,255, + 227,255,15,128,112,7,128,96,7,192,96,3,192,192,1,224, + 128,1,225,128,0,227,0,0,242,0,0,118,0,0,124,0, + 0,56,0,0,60,0,0,60,0,0,62,0,0,79,0,0, + 207,0,0,135,128,1,135,128,1,3,192,3,3,192,6,1, + 224,6,0,224,14,0,240,30,0,240,255,199,255,24,26,78, + 27,2,0,255,225,255,31,0,56,15,0,48,7,128,48,7, + 128,32,3,192,96,3,192,64,1,224,128,0,224,128,0,241, + 0,0,113,0,0,122,0,0,58,0,0,60,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,1,255, + 224,19,26,78,23,2,0,63,255,224,60,3,192,56,3,192, + 112,7,128,96,15,0,96,15,0,64,30,0,64,30,0,64, + 60,0,0,120,0,0,120,0,0,240,0,0,224,0,1,224, + 0,3,192,0,3,192,0,7,128,32,7,0,32,15,0,32, + 30,0,96,30,0,96,60,0,224,56,0,224,120,1,224,240, + 3,192,255,255,192,7,33,33,14,4,249,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,240,254,12,34,68,16, + 2,249,128,0,192,0,64,0,64,0,96,0,32,0,32,0, + 48,0,16,0,16,0,24,0,8,0,8,0,12,0,4,0, + 4,0,6,0,6,0,2,0,3,0,3,0,1,0,1,128, + 1,128,0,128,0,128,0,192,0,64,0,64,0,96,0,32, + 0,32,0,48,0,16,7,33,33,15,3,249,254,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,254,15,13,26, + 21,3,12,1,0,3,128,3,128,6,192,4,64,12,96,24, + 48,16,16,48,24,96,8,96,12,192,6,128,2,19,1,3, + 19,0,250,255,255,224,6,6,6,16,3,19,192,224,112,48, + 24,12,16,17,34,19,2,0,15,128,48,224,96,112,96,112, + 120,112,120,112,0,112,1,240,30,112,112,112,96,112,224,112, + 224,113,224,241,225,113,113,126,62,60,16,26,52,18,0,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,112,29,140,29,14,30,6,30,7,28,7,28,7, + 28,7,28,7,28,7,28,7,28,7,28,7,30,6,30,14, + 19,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, + 112,48,96,112,224,112,224,112,224,0,224,0,224,0,224,0, + 224,0,96,16,112,16,48,32,24,64,15,128,16,26,52,19, + 2,0,1,248,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,14,56,57,184,48,184,112,120,96,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,96,56,112,120, + 48,120,48,248,15,63,13,17,34,17,2,0,15,128,24,224, + 48,96,112,112,96,48,224,56,224,56,255,248,224,0,224,0, + 224,0,224,8,112,16,112,16,48,32,24,96,7,128,12,26, + 52,12,1,0,7,192,12,32,28,48,56,112,56,112,56,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,255,128,17,25,75,20,2,248,7,199, + 0,28,117,128,56,59,128,112,31,128,112,28,0,112,28,0, + 112,28,0,112,28,0,56,56,0,28,112,0,7,192,0,56, + 0,0,64,0,0,64,0,0,64,0,0,127,224,0,63,248, + 0,14,28,0,112,2,0,192,2,0,192,2,0,192,2,0, + 224,4,0,112,8,0,15,240,0,18,26,78,21,1,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,124,0,28,142,0, + 29,7,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,255,31,192,7,25,25, + 10,2,0,48,120,120,48,0,0,0,0,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,9,34,68,11, + 255,248,1,128,3,128,3,128,1,128,0,0,0,0,0,0, + 0,0,0,0,31,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,67,128,227,128,227,0, + 195,0,70,0,60,0,17,26,78,19,1,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,127,0,28,24,0,28,16,0, + 28,48,0,28,32,0,28,64,0,28,128,0,29,192,0,29, + 192,0,30,224,0,28,112,0,28,112,0,28,56,0,28,60, + 0,28,28,0,28,30,0,255,127,128,9,26,52,11,1,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,25,17,68,29,2,0,248,240,120,0,57,56, + 156,0,58,29,14,0,60,30,14,0,60,30,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,254,127,63,128,17,17, + 51,21,2,0,248,248,0,57,28,0,58,14,0,60,14,0, + 60,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,254,63,128,14,17,34,18,2,0,7,128,24, + 96,48,48,112,56,112,24,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,48,48,24,96,7,128,16, + 25,50,19,1,248,252,240,29,140,31,14,30,6,30,7,28, + 7,28,7,28,7,28,7,28,7,28,7,28,7,28,7,30, + 6,30,14,29,12,28,240,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,128,16,25,50,18,2,248,15,8,56, + 136,48,216,112,88,96,120,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,96,56,112,120,48,120,48,184,15,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,1,255,12, + 17,34,15,2,0,248,224,57,16,58,48,58,112,60,112,60, + 0,60,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,12,17,34,16,2,0,62,64,97, + 64,192,192,192,64,192,64,224,64,120,0,127,0,31,192,7, + 224,128,240,192,112,192,48,224,48,224,48,152,96,135,192,11, + 24,48,13,1,0,8,0,8,0,8,0,8,0,24,0,24, + 0,56,0,255,192,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,32,56,32,56,32,56, + 96,31,192,15,128,17,17,51,20,1,0,248,62,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 30,0,56,30,0,56,46,0,28,78,0,15,143,128,18,17, + 51,19,0,0,255,31,192,28,7,0,28,6,0,12,4,0, + 14,4,0,14,4,0,7,8,0,7,8,0,3,8,0,3, + 144,0,1,144,0,1,208,0,1,224,0,0,224,0,0,224, + 0,0,64,0,0,64,0,27,17,68,28,0,0,255,63,207, + 224,28,15,3,0,28,7,3,0,12,7,2,0,14,7,2, + 0,14,15,130,0,7,11,132,0,7,9,132,0,3,137,196, + 0,3,145,200,0,1,144,200,0,1,208,232,0,1,224,240, + 0,0,224,112,0,0,224,112,0,0,64,96,0,0,64,32, + 0,16,17,34,19,2,0,254,126,60,56,28,48,28,32,14, + 64,14,64,7,128,3,128,3,128,3,192,3,192,4,224,8, + 96,8,112,16,56,48,56,252,255,18,25,75,20,1,248,255, + 31,192,28,6,0,28,6,0,12,4,0,14,4,0,14,4, + 0,6,8,0,7,8,0,7,8,0,3,16,0,3,144,0, + 3,144,0,1,240,0,1,224,0,1,224,0,0,224,0,0, + 192,0,0,64,0,0,192,0,0,128,0,112,128,0,113,128, + 0,113,0,0,115,0,0,60,0,0,12,17,34,15,1,0, + 255,240,224,112,192,224,128,224,129,192,131,128,131,128,7,0, + 7,0,14,0,28,16,28,16,56,16,56,16,112,48,224,112, + 255,240,8,33,33,15,3,249,3,4,8,24,24,24,24,28, + 28,28,12,12,12,12,8,24,224,24,8,12,12,12,12,28, + 28,28,24,24,24,24,8,4,3,2,34,34,10,4,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,33,33,14,3,249,192,32,16,24,24,24,24,24,56, + 56,48,48,48,48,16,24,7,24,16,48,48,48,48,56,56, + 24,24,24,24,24,16,32,192,20,6,18,24,2,6,62,0, + 32,127,192,16,135,248,16,128,255,48,128,63,224,96,7,192, + 255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=41 h=39 x= 8 y=23 dx=44 dy= 0 ascent=39 len=174 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =30 descent=-9 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_SECTION(".progmem.u8g_font_osr29") = { + 0,107,51,223,244,29,9,148,21,166,32,255,247,39,245,30, + 247,0,0,0,11,0,0,5,28,28,11,3,0,112,248,248, + 248,248,248,248,248,112,112,112,112,112,112,112,112,32,32,32, + 32,32,32,0,112,248,248,248,112,9,8,16,17,4,22,227, + 128,227,128,227,128,227,128,193,128,65,128,65,0,65,0,22, + 28,84,28,3,0,0,192,192,0,192,192,0,192,192,0,192, + 128,0,129,128,1,129,128,1,129,128,1,129,128,255,255,252, + 255,255,252,1,129,0,3,3,0,3,3,0,3,3,0,3, + 3,0,3,3,0,2,2,0,6,6,0,255,255,252,255,255, + 252,6,6,0,6,6,0,6,4,0,4,12,0,12,12,0, + 12,12,0,12,12,0,12,12,0,18,34,102,24,3,253,1, + 16,0,1,16,0,1,16,0,3,248,0,13,22,0,25,17, + 0,49,16,128,97,16,192,97,16,192,97,17,192,97,19,192, + 97,19,192,113,19,128,61,16,0,63,144,0,31,240,0,15, + 252,0,3,254,0,1,127,0,1,31,128,1,19,128,33,17, + 192,113,16,192,249,16,192,241,16,192,241,16,192,225,16,128, + 97,17,128,97,17,0,49,19,0,15,188,0,1,240,0,1, + 16,0,1,16,0,28,28,112,36,4,0,31,0,6,0,49, + 128,4,0,96,192,12,0,96,192,8,0,224,224,24,0,224, + 224,48,0,224,224,32,0,224,224,96,0,224,224,64,0,224, + 224,128,0,96,193,128,0,96,193,0,0,49,131,0,0,31, + 6,0,0,0,4,15,0,0,12,48,128,0,8,48,192,0, + 16,96,96,0,48,96,96,0,32,224,112,0,96,224,112,0, + 64,224,112,0,128,224,112,1,128,224,112,1,0,96,96,2, + 0,96,96,6,0,48,192,4,0,31,128,28,28,112,32,2, + 0,0,248,0,0,3,140,0,0,7,4,0,0,6,2,0, + 0,14,2,0,0,14,2,0,0,14,6,0,0,14,4,0, + 0,15,12,0,0,7,24,0,0,7,176,0,0,3,224,0, + 0,1,224,63,240,3,224,7,128,6,240,7,0,12,120,6, + 0,24,124,6,0,48,60,4,0,112,30,12,0,112,31,24, + 0,240,15,144,0,240,7,176,0,240,7,224,0,240,3,224, + 0,240,3,240,32,120,6,248,32,60,12,124,192,31,240,63, + 128,3,8,8,10,4,22,224,224,224,224,192,64,64,64,9, + 37,74,15,4,249,1,128,3,0,6,0,14,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,96,0,96,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,0,96,0,96,0,48,0,48,0,56, + 0,24,0,12,0,12,0,6,0,3,0,3,128,1,128,9, + 37,74,15,2,249,192,0,96,0,48,0,56,0,24,0,12, + 0,12,0,6,0,6,0,3,0,3,0,3,0,3,0,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,3,128,3,0,3,0,3,0,6,0,6,0,14, + 0,12,0,24,0,24,0,48,0,96,0,224,0,192,0,15, + 17,34,21,3,11,3,128,3,192,3,128,3,128,225,142,241, + 30,249,62,29,112,3,128,3,128,29,112,249,62,241,30,227, + 142,3,128,3,192,3,128,35,34,170,39,2,250,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,5,12,12,11,3,249,112,240,248, + 248,24,8,8,16,16,32,32,64,10,2,4,14,2,9,255, + 192,255,192,5,5,5,11,3,0,112,248,248,248,112,14,38, + 76,18,2,248,0,12,0,12,0,12,0,8,0,24,0,24, + 0,16,0,48,0,48,0,32,0,96,0,96,0,64,0,192, + 0,192,0,128,1,128,1,128,1,0,3,0,3,0,2,0, + 6,0,6,0,4,0,12,0,12,0,8,0,24,0,24,0, + 16,0,48,0,48,0,32,0,96,0,96,0,64,0,192,0, + 20,28,84,24,2,0,1,248,0,7,12,0,12,7,0,28, + 3,128,24,1,128,56,1,192,56,1,192,112,0,224,112,0, + 224,112,0,224,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,112, + 0,224,112,0,224,112,0,224,56,1,192,56,1,192,24,1, + 128,12,3,0,6,6,0,3,252,0,14,28,56,24,5,0, + 1,128,1,128,3,128,7,128,255,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,255,252,17,28,84,24,3,0,7,224, + 0,24,60,0,32,30,0,64,15,0,192,15,0,192,7,128, + 192,7,128,240,7,128,252,7,128,252,7,128,124,7,128,24, + 15,0,0,14,0,0,28,0,0,56,0,0,112,0,0,224, + 0,1,192,0,3,0,0,6,0,0,12,0,128,24,0,128, + 48,0,128,48,1,128,112,1,128,127,255,128,127,255,128,127, + 255,128,17,28,84,24,3,0,15,224,0,48,56,0,96,28, + 0,96,14,0,240,15,0,248,15,0,248,15,0,120,15,0, + 0,15,0,0,15,0,0,14,0,0,28,0,28,56,0,31, + 224,0,0,60,0,0,30,0,0,15,0,0,7,0,0,7, + 128,0,7,128,120,7,128,248,7,128,248,7,128,248,7,0, + 192,15,0,192,14,0,96,28,0,31,240,0,19,28,84,24, + 2,0,0,12,0,0,12,0,0,28,0,0,60,0,0,60, + 0,0,124,0,0,252,0,0,252,0,1,188,0,3,60,0, + 3,60,0,6,60,0,12,60,0,12,60,0,24,60,0,48, + 60,0,32,60,0,96,60,0,192,60,0,255,255,224,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,7,255,224,17,29,87,24,4,0,0,2,0,120, + 12,0,127,248,0,127,240,0,111,192,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,103,224,0,104,60,0, + 112,30,0,96,14,0,96,15,0,96,7,0,0,7,128,0, + 7,128,0,7,128,16,7,128,120,7,128,252,7,128,252,7, + 128,248,15,0,224,15,0,224,14,0,96,28,0,48,56,0, + 31,240,0,17,28,84,24,3,0,1,248,0,3,12,0,12, + 6,0,28,7,0,24,15,0,56,31,0,48,31,0,112,14, + 0,112,0,0,112,0,0,240,0,0,241,240,0,246,28,0, + 252,14,0,248,7,0,248,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,112,7,128,112,7,128,112,7,0,48,7, + 0,56,7,0,24,14,0,12,28,0,7,248,0,16,28,56, + 24,4,0,255,255,255,255,255,255,192,3,128,2,128,2,128, + 6,128,4,0,12,0,8,0,24,0,48,0,32,0,96,0, + 192,0,192,1,128,3,128,3,128,7,128,7,128,7,128,15, + 192,15,192,15,192,15,192,15,192,7,192,20,28,84,24,2, + 0,3,248,0,14,14,0,56,7,0,112,3,128,112,1,192, + 240,1,192,240,1,192,240,1,192,240,1,192,248,1,128,126, + 3,128,127,131,0,63,252,0,15,252,0,7,255,0,24,127, + 192,48,15,224,112,3,224,224,1,240,224,0,240,224,0,240, + 224,0,224,224,0,224,224,0,224,112,1,192,48,1,128,28, + 7,0,15,252,0,17,28,84,24,3,0,7,224,0,12,56, + 0,56,12,0,56,14,0,112,14,0,112,7,0,240,7,0, + 240,7,0,240,7,128,240,7,128,240,7,128,240,7,128,112, + 15,128,112,15,128,56,27,128,28,51,128,7,199,128,0,7, + 128,0,7,0,0,7,0,56,7,0,124,7,0,124,14,0, + 120,14,0,112,12,0,112,24,0,48,48,0,31,224,0,5, + 19,19,11,3,0,112,248,248,248,112,0,0,0,0,0,0, + 0,0,0,112,248,248,248,112,5,26,26,11,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,240,248,120, + 8,8,8,16,16,32,96,64,32,34,136,39,3,250,0,0, + 0,2,0,0,0,7,0,0,0,28,0,0,0,112,0,0, + 1,224,0,0,7,128,0,0,30,0,0,0,120,0,0,1, + 224,0,0,3,128,0,0,14,0,0,0,56,0,0,0,240, + 0,0,3,192,0,0,15,0,0,0,60,0,0,0,240,0, + 0,0,224,0,0,0,120,0,0,0,30,0,0,0,7,128, + 0,0,1,192,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,3,192,0,0,0,240,0,0,0,60,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,56,0,0, + 0,14,0,0,0,6,35,10,50,39,2,6,255,255,255,255, + 224,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,224,255,255,255,255,224,32,34, + 136,39,3,250,64,0,0,0,224,0,0,0,56,0,0,0, + 14,0,0,0,7,128,0,0,1,224,0,0,0,120,0,0, + 0,30,0,0,0,7,128,0,0,1,192,0,0,0,112,0, + 0,0,28,0,0,0,15,0,0,0,3,192,0,0,0,240, + 0,0,0,60,0,0,0,15,0,0,0,7,0,0,0,30, + 0,0,0,120,0,0,1,224,0,0,3,128,0,0,14,0, + 0,0,56,0,0,0,224,0,0,3,192,0,0,15,0,0, + 0,60,0,0,0,240,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,0,96,0,0,0,15,28,56,20, + 3,0,15,192,48,112,64,60,192,28,192,30,248,30,248,30, + 112,30,0,28,0,60,0,120,0,240,1,192,3,128,6,0, + 12,0,8,32,8,32,8,32,12,64,7,128,0,0,0,0, + 3,128,7,192,7,192,7,192,3,128,29,29,116,33,2,1, + 0,63,248,0,1,192,14,0,3,0,3,0,6,0,1,128, + 12,0,0,192,24,7,206,96,48,12,124,32,48,56,60,48, + 96,112,60,16,96,224,56,24,96,224,56,24,193,192,56,24, + 193,192,56,24,193,192,48,24,195,192,112,24,195,128,112,24, + 195,128,112,48,195,128,224,48,195,128,224,48,67,129,224,96, + 97,130,224,192,97,196,225,128,48,120,62,0,48,0,0,0, + 24,0,0,0,12,0,0,0,6,0,4,0,3,128,28,0, + 0,127,240,0,29,29,116,32,2,0,0,2,0,0,0,6, + 0,0,0,7,0,0,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,31,192,0,0,19,192,0,0,51, + 192,0,0,49,224,0,0,33,224,0,0,97,224,0,0,96, + 240,0,0,64,240,0,0,192,240,0,0,192,120,0,0,128, + 120,0,1,128,120,0,1,255,252,0,1,0,60,0,3,0, + 28,0,3,0,30,0,6,0,30,0,6,0,15,0,6,0, + 15,0,14,0,15,0,30,0,15,128,255,224,255,248,23,29, + 87,28,3,0,255,255,128,15,0,224,15,0,120,15,0,60, + 15,0,28,15,0,28,15,0,30,15,0,30,15,0,28,15, + 0,28,15,0,56,15,0,48,15,0,224,15,255,0,15,0, + 224,15,0,112,15,0,56,15,0,60,15,0,30,15,0,30, + 15,0,30,15,0,30,15,0,30,15,0,30,15,0,60,15, + 0,60,15,0,120,15,0,224,255,255,128,22,29,87,28,3, + 1,1,254,8,7,3,152,12,0,248,28,0,248,24,0,120, + 56,0,56,120,0,56,112,0,24,112,0,24,240,0,8,240, + 0,8,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,12,112,0,12, + 120,0,12,56,0,24,56,0,24,28,0,24,12,0,48,6, + 0,96,3,0,192,0,255,128,27,29,116,32,3,0,255,255, + 192,0,15,0,112,0,15,0,28,0,15,0,14,0,15,0, + 7,0,15,0,7,128,15,0,3,128,15,0,3,192,15,0, + 3,192,15,0,1,192,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,3,192,15,0, + 3,192,15,0,3,192,15,0,3,128,15,0,7,0,15,0, + 7,0,15,0,14,0,15,0,28,0,15,0,112,0,255,255, + 192,0,23,29,87,29,3,0,255,255,254,15,0,62,15,0, + 14,15,0,14,15,0,6,15,0,6,15,0,2,15,0,2, + 15,1,2,15,1,0,15,1,0,15,1,0,15,3,0,15, + 7,0,15,255,0,15,7,0,15,3,0,15,1,0,15,1, + 2,15,1,2,15,1,2,15,0,2,15,0,6,15,0,6, + 15,0,6,15,0,14,15,0,30,15,0,126,255,255,254,23, + 29,87,28,3,0,255,255,254,15,0,62,15,0,14,15,0, + 14,15,0,6,15,0,6,15,0,2,15,0,2,15,1,2, + 15,1,0,15,1,0,15,1,0,15,3,0,15,7,0,15, + 255,0,15,7,0,15,3,0,15,1,0,15,1,0,15,1, + 0,15,1,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,255,240,0,25,30,120,29, + 3,0,0,16,0,0,1,254,8,0,6,3,152,0,12,0, + 248,0,28,0,248,0,24,0,120,0,56,0,56,0,56,0, + 56,0,112,0,24,0,112,0,24,0,112,0,8,0,240,0, + 8,0,240,0,0,0,240,0,0,0,240,0,0,0,240,7, + 255,128,240,0,120,0,240,0,120,0,240,0,120,0,240,0, + 120,0,112,0,120,0,112,0,120,0,112,0,120,0,56,0, + 120,0,56,0,120,0,24,0,248,0,28,0,200,0,12,1, + 136,0,6,3,8,0,1,254,8,0,28,29,116,33,3,0, + 255,240,255,240,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,255,255,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 255,240,255,240,12,29,58,17,3,0,255,240,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,255,240,19,29,87,22,2,0,1,255,224,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,120,30,0,248,30,0,248,30,0,248, + 30,0,192,28,0,192,28,0,64,24,0,96,48,0,31,224, + 0,27,29,116,32,3,0,255,241,255,192,15,0,126,0,15, + 0,60,0,15,0,56,0,15,0,112,0,15,0,96,0,15, + 0,192,0,15,1,128,0,15,3,0,0,15,6,0,0,15, + 14,0,0,15,30,0,0,15,63,0,0,15,111,0,0,15, + 207,128,0,15,135,128,0,15,7,192,0,15,3,192,0,15, + 3,224,0,15,3,224,0,15,1,240,0,15,1,240,0,15, + 0,248,0,15,0,248,0,15,0,124,0,15,0,124,0,15, + 0,62,0,15,0,63,0,255,241,255,224,23,29,87,28,3, + 0,255,248,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,2,15,0,2,15,0,6, + 15,0,6,15,0,6,15,0,14,15,0,14,15,0,30,15, + 0,62,15,0,254,255,255,254,30,29,116,35,3,0,255,128, + 3,252,15,128,7,192,15,192,7,192,15,192,7,192,15,192, + 15,192,13,192,11,192,13,224,11,192,13,224,11,192,12,224, + 27,192,12,240,19,192,12,240,19,192,12,112,51,192,12,112, + 35,192,12,120,35,192,12,120,35,192,12,56,99,192,12,60, + 67,192,12,60,67,192,12,28,195,192,12,28,131,192,12,30, + 131,192,12,14,131,192,12,15,131,192,12,15,3,192,12,15, + 3,192,12,7,3,192,12,6,3,192,30,6,3,192,255,194, + 63,252,28,29,116,32,3,0,255,0,63,240,15,128,7,128, + 15,128,3,0,15,192,3,0,15,224,3,0,13,224,3,0, + 13,240,3,0,12,248,3,0,12,120,3,0,12,124,3,0, + 12,60,3,0,12,30,3,0,12,31,3,0,12,15,3,0, + 12,7,131,0,12,7,131,0,12,3,195,0,12,3,227,0, + 12,1,227,0,12,0,243,0,12,0,251,0,12,0,123,0, + 12,0,63,0,12,0,63,0,12,0,31,0,12,0,31,0, + 12,0,15,0,30,0,7,0,255,192,7,0,24,29,87,29, + 3,1,0,255,0,3,0,192,6,0,96,12,0,48,28,0, + 56,56,0,28,56,0,28,120,0,30,112,0,14,112,0,14, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,112,0,14,112,0, + 14,120,0,30,56,0,28,56,0,28,28,0,56,12,0,48, + 6,0,96,3,0,192,0,255,0,23,29,87,28,3,0,255, + 255,128,15,0,224,15,0,120,15,0,60,15,0,60,15,0, + 30,15,0,30,15,0,30,15,0,30,15,0,30,15,0,60, + 15,0,60,15,0,120,15,0,224,15,255,128,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,255,248,0,24,36,108,29,3,250,0,255,0,3, + 0,192,6,0,96,12,0,48,28,0,56,56,0,28,56,0, + 28,120,0,30,112,0,14,112,0,14,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,112,0,14,120,0,30,120,0,30,56,60, + 28,56,99,28,28,195,56,14,193,184,6,193,240,3,193,225, + 0,247,193,0,9,193,0,1,193,0,1,195,0,1,226,0, + 1,254,0,0,252,0,0,56,25,29,116,29,3,0,255,255, + 128,0,15,1,240,0,15,0,120,0,15,0,120,0,15,0, + 60,0,15,0,60,0,15,0,60,0,15,0,60,0,15,0, + 60,0,15,0,120,0,15,0,240,0,15,1,224,0,15,255, + 0,0,15,3,128,0,15,1,192,0,15,0,224,0,15,0, + 224,0,15,0,240,0,15,0,240,0,15,0,240,0,15,0, + 240,0,15,0,240,0,15,0,248,128,15,0,120,128,15,0, + 120,128,15,0,121,128,15,0,127,0,15,0,63,0,255,248, + 30,0,19,29,87,25,4,1,15,240,192,48,28,192,96,15, + 192,96,7,192,192,3,192,192,1,192,192,1,192,192,0,192, + 224,0,192,240,0,192,120,0,64,127,0,0,63,192,0,31, + 248,0,15,254,0,1,255,128,128,127,128,128,15,192,128,3, + 224,128,1,224,192,0,224,192,0,96,224,0,96,224,0,96, + 240,0,96,248,0,192,156,0,128,134,1,0,131,254,0,24, + 29,87,29,3,0,255,255,255,248,60,31,240,60,15,224,60, + 7,192,60,3,192,60,3,192,60,3,128,60,1,128,60,1, + 128,60,1,128,60,1,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,7,255,224,29,29,116,34, + 3,0,255,240,31,248,15,0,3,192,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,7,0, + 1,0,7,0,3,0,3,128,2,0,1,192,6,0,0,224, + 24,0,0,63,240,0,29,29,116,32,2,0,255,248,63,248, + 15,128,3,192,7,128,3,128,7,128,3,0,3,192,3,0, + 3,192,3,0,3,192,2,0,1,224,6,0,1,224,6,0, + 1,240,4,0,0,240,12,0,0,240,12,0,0,248,8,0, + 0,120,24,0,0,120,24,0,0,60,16,0,0,60,48,0, + 0,60,48,0,0,30,32,0,0,30,96,0,0,31,96,0, + 0,15,64,0,0,15,192,0,0,15,192,0,0,7,128,0, + 0,7,128,0,0,7,128,0,0,3,0,0,0,3,0,0, + 41,29,174,44,2,0,255,241,255,227,255,128,15,128,63,0, + 124,0,7,128,30,0,56,0,7,128,30,0,48,0,7,128, + 31,0,48,0,3,192,31,0,48,0,3,192,31,0,96,0, + 3,192,55,0,96,0,1,224,55,128,96,0,1,224,55,128, + 64,0,1,224,39,128,192,0,1,224,99,192,192,0,0,240, + 99,192,128,0,0,240,67,193,128,0,0,240,193,193,128,0, + 0,120,193,225,0,0,0,120,193,227,0,0,0,120,129,227, + 0,0,0,125,128,242,0,0,0,61,128,246,0,0,0,61, + 0,246,0,0,0,61,0,116,0,0,0,31,0,124,0,0, + 0,31,0,124,0,0,0,30,0,60,0,0,0,14,0,56, + 0,0,0,14,0,56,0,0,0,12,0,56,0,0,0,12, + 0,16,0,0,28,29,116,31,2,0,255,248,255,224,7,192, + 30,0,7,192,28,0,3,224,24,0,1,224,24,0,1,240, + 48,0,0,240,32,0,0,248,96,0,0,120,192,0,0,124, + 128,0,0,61,128,0,0,63,0,0,0,30,0,0,0,15, + 0,0,0,15,0,0,0,15,128,0,0,31,128,0,0,51, + 192,0,0,51,224,0,0,97,224,0,0,193,240,0,0,192, + 240,0,1,128,248,0,3,0,120,0,3,0,124,0,6,0, + 60,0,14,0,62,0,31,0,63,0,255,225,255,240,27,29, + 116,30,2,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,22,29,87,27,3,0,63,255, + 252,62,0,120,60,0,248,56,0,240,48,1,224,48,3,224, + 96,3,192,96,7,128,64,15,128,64,15,0,0,31,0,0, + 62,0,0,60,0,0,124,0,0,120,0,0,240,0,1,240, + 0,1,224,0,3,224,4,7,192,4,7,128,12,15,128,12, + 31,0,12,31,0,28,62,0,28,60,0,60,124,0,120,248, + 0,248,255,255,248,8,37,37,16,5,248,255,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,255, + 14,38,76,18,2,248,192,0,64,0,96,0,96,0,32,0, + 48,0,48,0,16,0,24,0,24,0,8,0,12,0,12,0, + 4,0,4,0,6,0,2,0,2,0,3,0,3,0,1,0, + 1,128,1,128,0,128,0,192,0,192,0,64,0,96,0,96, + 0,32,0,48,0,48,0,16,0,24,0,24,0,8,0,12, + 0,12,8,37,37,16,3,248,255,15,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,15,255,18,14,42, + 24,3,15,0,192,0,1,192,0,1,224,0,3,48,0,3, + 48,0,6,24,0,12,12,0,12,12,0,24,6,0,48,6, + 0,48,3,0,96,1,128,224,1,128,192,0,192,21,2,6, + 21,0,250,255,255,248,255,255,248,7,7,7,18,3,21,192, + 224,112,56,24,12,2,18,19,57,21,2,0,15,192,0,56, + 112,0,32,56,0,96,28,0,120,28,0,120,28,0,56,28, + 0,0,28,0,0,252,0,15,28,0,56,28,0,112,28,0, + 224,28,0,224,28,64,224,60,64,224,60,64,224,92,192,112, + 159,128,31,15,0,18,29,87,21,1,0,252,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,120,0,28,142,0,29, + 7,0,30,3,128,30,3,128,28,3,128,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,192,28,3,192, + 28,3,128,28,3,128,30,3,128,27,7,0,17,142,0,16, + 248,0,15,19,38,18,2,0,7,224,28,16,56,8,48,12, + 112,28,112,60,240,60,240,24,240,0,240,0,240,0,240,0, + 240,6,112,4,112,4,48,12,56,8,12,48,7,224,18,29, + 87,21,2,0,0,254,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,15,142,0,28,78,0,56,46,0,112,30,0,112,30, + 0,112,14,0,240,14,0,240,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,0,112,14,0,112,14,0,112, + 30,0,56,62,0,24,110,0,7,207,192,15,19,38,19,2, + 0,7,192,12,112,56,56,48,28,112,28,112,28,240,30,240, + 30,255,254,240,0,240,0,240,0,240,6,112,4,112,4,56, + 4,56,8,28,16,7,224,14,29,58,14,1,0,1,240,7, + 24,14,24,12,60,28,60,28,56,28,0,28,0,28,0,28, + 0,255,192,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,192,20,28,84,22,2,247,7,225,192, + 28,58,96,56,30,240,112,30,240,112,14,224,240,15,0,240, + 15,0,240,15,0,112,14,0,112,30,0,56,28,0,28,56, + 0,7,224,0,56,0,0,64,0,0,192,0,0,240,0,0, + 255,254,0,63,255,0,15,7,128,112,1,192,64,0,192,192, + 0,192,192,0,192,192,1,128,96,1,128,56,6,0,7,248, + 0,20,29,87,22,1,0,252,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,60,0,28,199,0,29,3,0,29,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,8,28, + 28,11,1,0,24,60,60,24,0,0,0,0,0,252,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,255, + 11,37,74,14,255,247,0,192,1,224,1,224,0,192,0,0, + 0,0,0,0,0,0,0,0,15,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,224,224,240,224,224,192,193,128,99,128,62,0, + 19,29,87,21,1,0,252,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,63,192,28,14,0,28,12,0,28,8,0, + 28,16,0,28,48,0,28,96,0,28,192,0,28,224,0,29, + 224,0,30,240,0,30,120,0,28,60,0,28,60,0,28,30, + 0,28,15,0,28,15,0,28,15,128,255,63,224,9,29,58, + 11,1,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,31,19,76, + 33,1,0,252,124,15,128,28,199,24,192,29,7,32,224,31, + 3,224,112,30,3,192,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,255,159,243,254,20, + 19,57,22,1,0,252,60,0,28,199,0,29,3,0,31,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,17,19, + 57,21,2,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,18,28,84, + 21,1,247,252,120,0,29,142,0,31,7,0,30,3,128,30, + 3,128,28,3,128,28,3,192,28,3,192,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,128,28,3,128, + 30,3,128,31,7,0,29,134,0,28,120,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,28,84,21,2,247,7,130,0, + 28,98,0,56,54,0,112,22,0,112,30,0,112,14,0,240, + 14,0,240,14,0,240,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,112,14,0,112,14,0,112,30,0,56,62,0, + 24,110,0,7,206,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,127, + 192,15,19,38,16,1,0,252,56,28,196,28,142,29,30,31, + 28,30,12,30,0,30,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,14,19,38, + 18,2,0,31,16,96,208,64,112,192,48,192,16,224,16,240, + 0,126,0,63,128,31,224,3,248,128,252,192,28,192,12,224, + 12,224,12,240,8,140,24,131,224,12,27,54,14,1,0,4, + 0,4,0,4,0,4,0,4,0,12,0,12,0,28,0,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,16,28,16,28,16,28,48,30, + 32,15,224,7,192,20,19,57,22,1,0,252,31,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,7,128,28,7,128,28,15,128,12,11,128,14,51, + 128,3,195,240,20,19,57,21,1,0,255,15,240,60,3,128, + 28,3,0,28,3,0,14,2,0,14,2,0,15,6,0,7, + 4,0,7,4,0,3,140,0,3,136,0,3,200,0,1,216, + 0,1,208,0,0,240,0,0,240,0,0,96,0,0,96,0, + 0,96,0,30,19,76,31,1,0,255,31,243,252,60,7,128, + 224,28,3,128,192,28,3,128,192,14,3,192,128,14,3,192, + 128,15,7,193,128,7,5,225,0,7,4,225,0,3,140,227, + 0,3,136,114,0,1,200,114,0,1,216,118,0,1,240,60, + 0,0,240,60,0,0,240,60,0,0,96,24,0,0,96,24, + 0,0,32,24,0,18,19,57,21,1,0,255,31,192,30,14, + 0,30,12,0,14,8,0,15,24,0,7,16,0,3,160,0, + 3,224,0,1,192,0,1,224,0,1,224,0,1,112,0,3, + 120,0,2,56,0,4,28,0,12,28,0,24,14,0,24,15, + 0,254,63,192,20,28,84,22,1,247,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,14,19, + 38,18,2,0,255,252,224,60,192,56,192,120,128,240,128,224, + 129,224,1,192,3,128,7,128,7,0,15,0,30,4,28,4, + 60,4,56,12,112,12,240,28,255,252,10,37,74,17,4,248, + 1,192,6,0,12,0,8,0,24,0,24,0,24,0,28,0, + 28,0,12,0,14,0,14,0,14,0,6,0,6,0,6,0, + 4,0,8,0,240,0,24,0,12,0,4,0,6,0,6,0, + 14,0,14,0,14,0,12,0,28,0,28,0,24,0,24,0, + 24,0,8,0,12,0,6,0,1,192,2,38,38,12,5,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,10,37,74,17,3,248,224,0,24,0, + 12,0,4,0,6,0,6,0,6,0,14,0,14,0,12,0, + 28,0,28,0,28,0,24,0,24,0,24,0,8,0,4,0, + 3,192,6,0,8,0,24,0,24,0,24,0,28,0,28,0, + 28,0,12,0,14,0,14,0,6,0,6,0,6,0,4,0, + 12,0,24,0,224,0,23,8,24,27,2,7,30,0,8,127, + 192,4,255,240,2,199,254,2,128,255,134,128,63,254,192,15, + 252,96,1,248,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,11,0,0,5,28,28,11,3, + 247,112,248,248,248,112,0,32,32,32,32,32,32,112,112,112, + 112,112,112,112,112,248,248,248,248,248,248,248,112,14,28,56, + 24,5,252,0,128,0,128,0,128,0,128,0,128,7,224,12, + 152,24,136,56,140,112,156,112,188,240,188,240,152,240,128,240, + 128,240,128,240,128,240,132,112,132,112,132,56,132,24,136,14, + 144,3,224,0,128,0,128,0,128,0,128,23,28,84,30,3, + 0,0,3,240,0,6,24,0,28,12,0,24,14,0,48,62, + 0,112,62,0,112,62,0,112,24,0,112,0,0,240,0,0, + 240,0,0,240,0,31,240,0,32,255,128,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,224,0, + 0,224,0,62,224,2,67,192,2,128,224,4,129,127,60,194, + 63,248,60,15,240,20,20,60,24,2,4,64,0,32,225,248, + 112,119,254,224,62,7,192,24,1,128,48,0,192,48,0,192, + 96,0,96,96,0,96,96,0,96,96,0,96,96,0,96,96, + 0,96,48,0,192,48,0,192,24,1,128,62,7,192,119,254, + 224,225,248,112,64,0,32,22,28,84,24,1,0,255,131,252, + 62,0,112,30,0,96,14,0,64,15,0,64,15,0,128,7, + 128,128,7,129,0,3,193,0,3,194,0,1,226,0,1,228, + 0,0,252,0,0,248,0,0,120,0,31,255,192,0,120,0, + 0,120,0,31,255,192,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,7,255, + 128,2,37,37,12,5,249,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,0,0,0,0,0,0,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,15,36,72,26, + 4,248,7,192,12,32,24,48,48,120,48,120,48,112,56,0, + 56,0,28,0,30,0,15,0,31,192,35,224,97,240,64,248, + 192,60,192,30,192,14,224,6,240,6,120,6,60,4,31,12, + 15,152,7,224,3,224,0,224,0,112,0,112,0,56,56,56, + 60,56,56,48,48,48,24,96,7,128,12,4,8,18,3,22, + 96,96,240,240,240,240,96,96,30,29,116,34,2,1,0,127, + 248,0,1,192,14,0,3,0,3,0,4,0,0,128,8,0, + 0,64,16,7,196,32,32,24,108,16,32,48,60,16,64,112, + 28,8,64,224,12,8,192,224,12,8,129,224,4,4,129,224, + 0,4,129,224,0,4,129,224,0,4,129,224,0,4,129,224, + 0,4,129,224,4,4,192,224,4,8,64,224,8,8,64,112, + 8,8,32,112,24,16,48,24,48,48,16,15,192,32,8,0, + 0,64,4,0,0,128,3,0,3,0,1,192,14,0,0,127, + 248,0,11,14,28,16,3,14,60,0,102,0,67,0,99,0, + 99,0,7,0,27,0,99,0,195,0,195,32,231,32,121,192, + 0,0,127,192,10,16,32,19,4,1,24,64,48,192,32,128, + 97,128,97,0,195,0,195,0,195,0,195,0,195,0,195,0, + 97,128,97,128,48,128,16,64,8,0,20,8,24,24,2,7, + 255,255,240,255,255,240,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,48,0,0,48,10,2,4,14,2,9,255,192, + 255,192,30,29,116,34,2,1,0,127,248,0,1,192,14,0, + 3,0,3,0,4,0,0,128,8,0,0,64,19,255,192,32, + 32,112,240,48,32,112,120,16,64,112,120,8,64,112,120,8, + 192,112,120,8,128,112,112,4,128,112,224,4,128,127,128,4, + 128,112,224,4,128,112,112,4,128,112,112,4,128,112,120,4, + 128,112,120,8,64,112,120,136,64,112,120,136,32,112,56,144, + 32,112,57,16,19,252,30,32,8,0,0,64,4,0,0,128, + 3,0,3,0,1,192,14,0,0,127,248,0,11,2,4,19, + 4,23,255,224,255,224,11,10,20,23,6,18,31,0,96,128, + 64,64,128,32,128,32,128,32,128,32,64,64,96,128,31,0, + 35,28,140,39,2,254,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,192,255,255,255, + 255,192,11,17,34,18,4,11,31,0,99,192,129,192,128,224, + 192,224,224,224,112,224,1,192,1,128,3,0,12,0,24,0, + 32,32,64,32,64,96,255,224,255,224,11,17,34,18,5,11, + 31,0,97,192,192,192,224,224,240,224,0,224,0,192,97,128, + 126,0,1,128,0,192,0,224,224,224,240,224,224,192,129,192, + 127,0,7,7,7,18,8,21,6,14,28,56,48,96,128,21, + 30,90,25,3,245,96,6,0,224,15,0,240,15,0,240,15, + 0,240,15,0,224,15,0,224,15,0,224,15,0,224,15,0, + 224,15,0,224,6,0,64,6,0,64,6,0,64,6,0,96, + 12,8,96,14,24,88,59,248,79,241,248,67,224,240,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,224,0,0, + 224,0,0,240,0,0,240,0,0,112,0,0,112,0,0,17, + 35,105,23,3,250,15,255,128,63,140,0,127,140,0,127,140, + 0,255,140,0,255,140,0,255,140,0,255,140,0,255,140,0, + 127,140,0,127,140,0,63,140,0,7,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,5,5, + 5,11,3,10,112,248,248,248,112,8,8,8,18,5,248,48, + 32,60,6,7,7,15,252,9,17,34,19,5,11,4,0,12, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,10, + 14,28,16,3,14,30,0,51,0,97,128,192,192,192,192,192, + 192,192,192,192,192,193,192,97,128,35,0,30,0,0,0,255, + 192,10,16,32,20,5,1,134,0,195,0,65,0,97,128,32, + 192,48,192,48,192,48,192,48,192,48,192,48,192,97,128,97, + 128,67,0,130,0,4,0,27,28,112,35,5,0,4,0,12, + 0,12,0,8,0,28,0,24,0,252,0,16,0,28,0,32, + 0,28,0,96,0,28,0,64,0,28,0,192,0,28,0,128, + 0,28,1,128,0,28,3,0,0,28,2,0,0,28,6,7, + 0,28,4,15,0,28,12,15,0,28,24,23,0,255,144,23, + 0,0,48,39,0,0,32,71,0,0,96,71,0,0,192,135, + 0,0,129,7,0,1,129,255,224,1,0,7,0,3,0,7, + 0,6,0,7,0,6,0,7,0,12,0,63,224,27,28,112, + 35,5,0,4,0,4,0,12,0,12,0,28,0,8,0,252, + 0,16,0,28,0,48,0,28,0,32,0,28,0,96,0,28, + 0,64,0,28,0,128,0,28,1,128,0,28,1,0,0,28, + 3,31,0,28,6,99,192,28,4,129,192,28,12,128,224,28, + 8,192,224,255,152,224,224,0,48,240,224,0,32,1,192,0, + 96,1,128,0,64,3,0,0,192,12,0,1,128,24,0,1, + 0,32,32,3,0,64,32,2,0,64,96,6,0,255,224,12, + 0,255,224,28,28,112,36,5,0,31,0,6,0,97,192,4, + 0,192,224,8,0,224,224,24,0,240,224,16,0,0,192,48, + 0,1,128,96,0,126,0,64,0,97,128,192,0,0,192,128, + 0,0,225,128,0,96,227,3,128,240,226,3,128,224,230,7, + 128,129,196,7,128,67,136,11,128,62,24,19,128,0,16,19, + 128,0,48,35,128,0,96,99,128,0,64,67,128,0,192,131, + 128,0,128,255,240,1,128,3,128,3,0,3,128,2,0,3, + 128,6,0,3,128,4,0,31,240,15,28,56,19,1,247,3, + 128,7,192,7,192,7,192,3,128,0,0,3,128,4,64,8, + 32,8,32,8,96,0,96,0,192,1,128,7,0,14,0,28, + 0,56,0,120,0,240,60,240,62,240,62,240,6,240,6,112, + 6,120,12,28,24,7,224,29,38,152,32,2,0,0,224,0, + 0,0,240,0,0,0,112,0,0,0,56,0,0,0,12,0, + 0,0,6,0,0,0,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,6,0,0,0,7,0,0,0,7,0, + 0,0,15,128,0,0,15,128,0,0,15,128,0,0,31,192, + 0,0,19,192,0,0,51,192,0,0,49,224,0,0,33,224, + 0,0,97,224,0,0,96,240,0,0,64,240,0,0,192,240, + 0,0,192,120,0,0,128,120,0,1,128,120,0,1,255,252, + 0,1,0,60,0,3,0,28,0,3,0,30,0,6,0,30, + 0,6,0,15,0,6,0,15,0,14,0,15,0,30,0,15, + 128,255,224,255,248,29,38,152,32,2,0,0,0,48,0,0, + 0,112,0,0,0,240,0,0,0,224,0,0,1,128,0,0, + 3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0, + 15,128,0,0,15,128,0,0,15,128,0,0,31,192,0,0, + 19,192,0,0,51,192,0,0,49,224,0,0,33,224,0,0, + 97,224,0,0,96,240,0,0,64,240,0,0,192,240,0,0, + 192,120,0,0,128,120,0,1,128,120,0,1,255,252,0,3, + 0,60,0,3,0,30,0,3,0,30,0,6,0,30,0,6, + 0,15,0,6,0,15,0,14,0,15,0,31,0,31,192,255, + 224,255,248,29,38,152,32,2,0,0,6,0,0,0,7,0, + 0,0,15,128,0,0,29,128,0,0,56,192,0,0,96,48, + 0,0,128,8,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,6,0,0,0,7,0,0,0,7,0,0,0,15,128, + 0,0,15,128,0,0,15,128,0,0,31,192,0,0,19,192, + 0,0,51,192,0,0,49,224,0,0,33,224,0,0,97,224, + 0,0,96,240,0,0,64,240,0,0,192,240,0,0,192,120, + 0,0,128,120,0,1,128,120,0,1,255,252,0,1,0,60, + 0,3,0,28,0,3,0,30,0,6,0,30,0,6,0,15, + 0,6,0,15,0,14,0,15,0,30,0,15,128,255,224,255, + 248,29,37,148,32,2,0,0,60,8,0,0,127,24,0,0, + 207,240,0,0,129,240,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0, + 7,0,0,0,7,0,0,0,15,128,0,0,15,128,0,0, + 15,128,0,0,31,192,0,0,19,192,0,0,51,192,0,0, + 49,224,0,0,33,224,0,0,97,224,0,0,96,240,0,0, + 64,240,0,0,192,240,0,0,192,120,0,0,128,120,0,1, + 128,120,0,1,255,252,0,3,0,60,0,3,0,30,0,3, + 0,30,0,6,0,30,0,6,0,15,0,6,0,15,0,14, + 0,15,0,31,0,31,192,255,224,255,248,29,37,148,32,2, + 0,0,96,48,0,0,240,120,0,0,240,120,0,0,96,48, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,6,0,0,0,7,0,0,0,7,0, + 0,0,15,128,0,0,15,128,0,0,31,128,0,0,31,192, + 0,0,19,192,0,0,51,192,0,0,49,224,0,0,33,224, + 0,0,97,224,0,0,96,240,0,0,64,240,0,0,192,112, + 0,0,192,120,0,0,128,120,0,1,128,56,0,1,255,252, + 0,1,0,28,0,3,0,28,0,3,0,30,0,6,0,30, + 0,6,0,15,0,6,0,15,0,14,0,15,0,31,0,15, + 128,255,224,255,248,29,39,156,32,2,0,0,15,0,0,0, + 16,128,0,0,32,64,0,0,32,64,0,0,32,64,0,0, + 32,64,0,0,16,128,0,0,15,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,6,0,0,0,7,0,0,0, + 7,0,0,0,15,128,0,0,15,128,0,0,31,128,0,0, + 31,192,0,0,19,192,0,0,51,192,0,0,51,224,0,0, + 33,224,0,0,97,224,0,0,97,240,0,0,64,240,0,0, + 192,240,0,0,192,248,0,0,128,120,0,1,128,120,0,1, + 255,252,0,1,0,60,0,3,0,60,0,2,0,62,0,6, + 0,30,0,6,0,31,0,6,0,31,0,14,0,15,0,30, + 0,15,128,255,224,255,248,37,29,145,41,1,0,0,3,255, + 255,248,0,0,124,0,248,0,0,124,0,56,0,0,124,0, + 56,0,0,252,0,24,0,1,188,0,24,0,1,188,0,8, + 0,3,60,0,8,0,3,60,4,8,0,6,60,4,0,0, + 6,60,4,0,0,12,60,4,0,0,12,60,12,0,0,24, + 60,28,0,0,24,63,252,0,0,48,60,28,0,0,48,60, + 12,0,0,96,60,4,0,0,96,60,4,8,0,255,252,4, + 8,0,128,60,4,8,1,128,60,0,8,1,0,60,0,24, + 3,0,60,0,24,2,0,60,0,24,6,0,60,0,56,14, + 0,60,0,120,31,0,60,1,248,255,225,255,255,248,22,38, + 114,28,3,248,1,255,12,7,1,140,14,0,252,28,0,124, + 24,0,60,56,0,60,56,0,28,112,0,28,112,0,12,112, + 0,12,240,0,8,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,112,0,4, + 112,0,4,120,0,12,56,0,8,56,0,8,28,0,16,12, + 0,16,14,0,32,3,0,192,1,247,128,0,56,0,0,32, + 0,0,56,0,0,14,0,0,7,0,0,7,0,0,7,0, + 1,14,0,0,252,0,23,38,114,29,3,0,1,128,0,1, + 192,0,1,224,0,0,224,0,0,48,0,0,24,0,0,12, + 0,0,0,0,0,0,0,255,255,254,15,0,62,15,0,14, + 15,0,14,15,0,6,15,0,6,15,0,2,15,0,2,15, + 1,2,15,1,0,15,1,0,15,1,0,15,3,0,15,7, + 0,15,255,0,15,7,0,15,3,0,15,1,0,15,1,2, + 15,1,2,15,1,2,15,0,2,15,0,6,15,0,6,15, + 0,6,15,0,14,15,0,30,15,0,126,255,255,254,23,38, + 114,29,3,0,0,0,192,0,1,224,0,3,192,0,3,128, + 0,6,0,0,12,0,0,8,0,0,0,0,0,0,0,255, + 255,254,15,0,62,15,0,14,15,0,14,15,0,6,15,0, + 6,15,0,2,15,0,2,15,1,2,15,1,0,15,1,0, + 15,1,0,15,3,0,15,7,0,15,255,0,15,7,0,15, + 3,0,15,1,0,15,1,2,15,1,2,15,1,2,15,0, + 2,15,0,6,15,0,6,15,0,6,15,0,14,15,0,30, + 15,0,126,255,255,254,23,38,114,29,3,0,0,8,0,0, + 28,0,0,62,0,0,55,0,0,99,128,1,128,192,2,0, + 32,0,0,0,0,0,0,255,255,254,15,0,62,15,0,14, + 15,0,14,15,0,6,15,0,6,15,0,2,15,0,2,15, + 1,2,15,1,0,15,1,0,15,1,0,15,3,0,15,7, + 0,15,255,0,15,7,0,15,3,0,15,1,0,15,1,2, + 15,1,2,15,1,2,15,0,2,15,0,6,15,0,6,15, + 0,6,15,0,14,15,0,30,15,0,126,255,255,254,23,37, + 111,29,3,0,1,128,192,3,193,224,3,193,224,1,128,192, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,254,15, + 0,62,15,0,14,15,0,14,15,0,6,15,0,6,15,0, + 2,15,0,2,15,1,2,15,1,0,15,1,0,15,3,0, + 15,3,0,15,7,0,15,255,0,15,7,0,15,3,0,15, + 3,0,15,1,2,15,1,2,15,1,2,15,0,2,15,0, + 6,15,0,6,15,0,6,15,0,14,15,0,30,15,0,126, + 255,255,254,12,38,76,17,3,0,192,0,224,0,112,0,56, + 0,24,0,12,0,2,0,0,0,0,0,255,240,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,255,240,12,38,76,17,3,0,0,48,0,112,0, + 224,1,192,3,128,2,0,4,0,0,0,0,0,255,240,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,255,240,12,38,76,17,3,0,6,0,14, + 0,15,0,27,128,48,192,96,96,128,16,0,0,0,0,255, + 240,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,255,240,12,37,74,15,2,0,96, + 96,240,240,240,240,96,96,0,0,0,0,0,0,0,0,255, + 240,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,255,240,27,29,116,32,3,0,255, + 255,192,0,15,0,112,0,15,0,28,0,15,0,14,0,15, + 0,7,0,15,0,7,128,15,0,3,128,15,0,3,192,15, + 0,3,192,15,0,1,192,15,0,1,224,15,0,1,224,15, + 0,1,224,255,240,1,224,15,0,1,224,15,0,1,224,15, + 0,1,224,15,0,1,224,15,0,1,224,15,0,3,192,15, + 0,3,192,15,0,3,192,15,0,3,128,15,0,7,0,15, + 0,7,0,15,0,14,0,15,0,28,0,15,0,112,0,255, + 255,192,0,28,37,148,32,3,0,0,60,8,0,0,127,152, + 0,0,71,240,0,0,65,240,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,0,63,240,15,128,7, + 128,15,128,3,0,15,192,3,0,15,224,3,0,13,224,3, + 0,13,240,3,0,12,248,3,0,12,120,3,0,12,124,3, + 0,12,60,3,0,12,30,3,0,12,31,3,0,12,15,3, + 0,12,7,131,0,12,7,131,0,12,3,195,0,12,3,227, + 0,12,1,227,0,12,0,243,0,12,0,251,0,12,0,123, + 0,12,0,63,0,12,0,63,0,12,0,31,0,12,0,31, + 0,12,0,15,0,30,0,7,0,255,192,7,0,24,38,114, + 29,3,1,3,128,0,3,192,0,1,192,0,0,224,0,0, + 112,0,0,48,0,0,8,0,0,0,0,0,0,0,0,255, + 0,3,0,192,6,0,96,12,0,48,28,0,56,56,0,28, + 56,0,28,120,0,30,112,0,14,112,0,14,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,240,0,15,240,0,15,112,0,14,112,0,14,120,0,30, + 56,0,28,56,0,28,28,0,56,12,0,48,6,0,96,3, + 0,192,0,255,0,24,38,114,29,3,1,0,1,192,0,3, + 192,0,3,128,0,7,0,0,14,0,0,12,0,0,16,0, + 0,0,0,0,0,0,0,255,0,3,0,192,6,0,96,12, + 0,48,28,0,56,56,0,28,56,0,28,120,0,30,112,0, + 14,112,0,14,240,0,15,240,0,15,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,112, + 0,14,112,0,14,120,0,30,56,0,28,56,0,28,28,0, + 56,12,0,48,6,0,96,3,0,192,0,255,0,24,38,114, + 29,3,0,0,24,0,0,24,0,0,60,0,0,126,0,0, + 195,0,1,129,128,6,0,96,0,0,0,0,0,0,0,255, + 0,3,0,192,6,0,96,12,0,48,28,0,56,56,0,28, + 56,0,28,120,0,30,112,0,14,112,0,14,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,240,0,15,240,0,15,112,0,14,112,0,14,120,0,30, + 56,0,28,56,0,28,28,0,56,12,0,48,6,0,96,3, + 0,192,0,255,0,24,37,111,29,3,0,1,240,32,3,252, + 64,2,63,192,2,7,128,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,0,3,0,192,6,0,96,12,0,48,28, + 0,56,56,0,28,56,0,28,120,0,30,112,0,14,112,0, + 14,240,0,15,240,0,15,240,0,15,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,112,0,14,112, + 0,14,120,0,30,56,0,28,56,0,28,28,0,56,12,0, + 48,6,0,96,3,0,192,0,255,0,24,37,111,29,3,0, + 1,129,128,3,195,192,3,195,192,1,129,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,0,3,0,192,6,0, + 96,12,0,48,28,0,56,56,0,28,56,0,28,120,0,30, + 112,0,14,112,0,14,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,112,0,14,112,0,14,120,0,30,56,0,28,56,0,28, + 28,0,56,12,0,48,6,0,96,3,0,192,0,255,0,25, + 25,100,39,7,254,192,0,1,128,224,0,3,0,112,0,6, + 0,56,0,12,0,28,0,24,0,14,0,48,0,7,0,96, + 0,3,128,192,0,1,193,128,0,0,227,0,0,0,118,0, + 0,0,60,0,0,0,28,0,0,0,62,0,0,0,103,0, + 0,0,195,128,0,1,129,192,0,3,0,224,0,6,0,112, + 0,12,0,56,0,24,0,28,0,48,0,14,0,96,0,7, + 0,192,0,3,128,128,0,1,0,24,29,87,29,3,1,0, + 255,131,3,0,230,6,0,124,12,0,60,28,0,56,56,0, + 60,56,0,124,120,0,254,112,0,206,112,1,142,240,3,15, + 240,6,15,240,14,15,240,12,15,240,24,15,240,48,15,240, + 96,15,240,224,15,240,192,15,113,128,14,115,0,14,126,0, + 30,62,0,28,60,0,28,28,0,56,60,0,48,62,0,96, + 103,0,192,193,255,0,29,38,152,34,3,1,0,112,0,0, + 0,112,0,0,0,56,0,0,0,28,0,0,0,14,0,0, + 0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0, + 255,240,31,248,15,0,3,192,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,7,0,1,0, + 7,0,3,0,3,128,2,0,1,192,6,0,0,224,24,0, + 0,63,240,0,29,38,152,34,3,1,0,0,56,0,0,0, + 120,0,0,0,240,0,0,0,224,0,0,1,128,0,0,3, + 0,0,0,2,0,0,0,0,0,0,0,0,0,0,255,240, + 31,248,15,0,3,192,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,7,0,1,0,7,0, + 3,0,3,128,2,0,1,192,6,0,0,224,24,0,0,63, + 240,0,29,38,152,34,3,0,0,3,0,0,0,7,0,0, + 0,7,128,0,0,13,192,0,0,24,96,0,0,96,48,0, + 0,192,8,0,0,0,0,0,0,0,0,0,255,240,31,248, + 15,0,3,192,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,7,0,3,0,7,0,3,0, + 3,128,6,0,1,192,14,0,0,224,24,0,0,63,240,0, + 29,37,148,34,3,0,0,48,48,0,0,120,120,0,0,120, + 120,0,0,48,48,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,240,31,248,15,0,3,192,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,7,0,1,0,7,0,3,0,3,128,2,0,1,192, + 6,0,0,224,24,0,0,63,240,0,27,38,152,30,2,0, + 0,0,48,0,0,0,112,0,0,0,224,0,0,0,192,0, + 0,1,128,0,0,3,0,0,0,2,0,0,0,0,0,0, + 0,0,0,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,23,29,87,28,3,0,255,248, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,255,128, + 15,0,224,15,0,120,15,0,60,15,0,60,15,0,30,15, + 0,30,15,0,30,15,0,30,15,0,30,15,0,60,15,0, + 60,15,0,120,15,0,224,15,255,128,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,255,248,0,19,29,87,22,1,0,0,252,0,3,14, + 0,6,7,0,14,7,128,12,7,128,28,7,128,28,7,128, + 28,7,0,28,14,0,28,28,0,28,224,0,28,24,0,28, + 6,0,28,7,0,28,3,128,28,3,128,28,1,192,28,1, + 192,28,1,192,28,1,224,28,1,224,28,1,224,28,1,224, + 28,225,192,29,225,192,29,225,192,28,131,128,28,199,0,252, + 60,0,18,28,84,21,2,1,112,0,0,120,0,0,60,0, + 0,28,0,0,6,0,0,3,0,0,1,0,0,0,0,0, + 0,0,0,15,192,0,56,112,0,32,56,0,96,28,0,120, + 28,0,120,28,0,56,28,0,0,28,0,0,252,0,15,28, + 0,56,28,0,112,28,0,224,28,0,224,28,64,224,60,64, + 224,60,64,224,92,192,112,159,128,31,15,0,18,28,84,21, + 2,1,0,28,0,0,60,0,0,120,0,0,112,0,0,192, + 0,1,128,0,1,0,0,0,0,0,0,0,0,15,192,0, + 56,112,0,32,56,0,96,28,0,120,28,0,120,28,0,56, + 28,0,0,28,0,0,252,0,15,28,0,56,28,0,112,28, + 0,224,28,0,224,28,64,224,60,64,224,60,64,224,92,192, + 112,159,128,31,15,0,18,28,84,21,2,0,3,128,0,3, + 128,0,7,128,0,6,192,0,12,96,0,24,48,0,32,24, + 0,0,0,0,0,0,0,15,192,0,56,112,0,32,56,0, + 96,28,0,120,28,0,120,28,0,56,28,0,0,28,0,0, + 252,0,15,28,0,56,28,0,112,28,0,224,28,0,224,28, + 64,224,60,64,224,60,64,224,92,192,112,159,128,31,15,0, + 18,27,81,21,2,0,30,8,0,63,136,0,39,248,0,64, + 240,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192, + 0,56,112,0,32,56,0,96,28,0,120,28,0,120,28,0, + 56,28,0,0,28,0,0,252,0,15,28,0,56,28,0,112, + 28,0,224,28,0,224,28,64,224,60,64,224,60,64,224,92, + 192,112,159,128,31,15,0,18,27,81,21,2,0,56,48,0, + 120,120,0,120,120,0,56,48,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,192,0,24,112,0,32,56,0,96,28, + 0,112,28,0,120,28,0,56,28,0,0,28,0,0,252,0, + 15,28,0,56,28,0,112,28,0,224,28,0,224,28,64,224, + 60,64,224,60,64,224,92,192,112,159,128,31,15,0,18,28, + 84,21,2,0,7,128,0,8,64,0,16,32,0,16,32,0, + 16,32,0,8,64,0,7,128,0,0,0,0,0,0,0,15, + 192,0,56,112,0,32,56,0,96,28,0,112,28,0,120,28, + 0,56,28,0,0,28,0,0,252,0,15,28,0,56,28,0, + 112,28,0,224,28,0,224,28,64,224,60,64,224,92,64,224, + 156,192,112,159,128,31,15,0,25,19,76,29,2,0,15,193, + 240,0,56,115,28,0,32,30,14,0,96,30,7,0,120,28, + 7,0,120,28,7,0,56,28,7,128,0,28,7,128,3,255, + 255,128,28,28,0,0,112,28,0,0,112,28,0,0,224,28, + 1,128,224,28,1,0,224,62,1,0,224,46,1,0,224,70, + 2,0,112,131,4,0,31,0,248,0,15,27,54,18,2,248, + 7,224,28,16,56,8,48,12,112,28,112,60,240,60,240,24, + 240,0,240,0,240,0,240,0,240,6,112,4,112,4,48,12, + 56,8,28,48,7,224,1,0,2,0,1,192,0,96,0,112, + 0,112,8,240,7,192,15,28,56,19,2,1,56,0,60,0, + 28,0,14,0,7,0,3,0,0,128,0,0,0,0,7,192, + 12,112,56,56,48,28,112,28,112,28,240,30,240,30,255,254, + 240,0,240,0,240,0,240,2,112,4,112,4,56,4,56,8, + 28,16,7,224,15,28,56,19,2,1,0,28,0,60,0,56, + 0,112,0,224,0,192,1,0,0,0,0,0,7,192,12,112, + 56,56,48,28,112,28,112,28,240,30,240,30,255,254,240,0, + 240,0,240,0,240,2,112,4,112,4,56,4,56,8,28,16, + 7,224,15,28,56,19,2,0,1,128,3,128,3,192,7,192, + 6,96,8,48,16,8,0,0,0,0,7,192,12,112,56,56, + 48,28,112,28,112,28,240,30,240,30,255,254,240,0,240,0, + 240,0,240,6,112,4,112,4,56,4,56,8,28,16,7,224, + 15,27,54,19,2,0,24,24,60,60,60,60,24,24,0,0, + 0,0,0,0,0,0,7,192,12,112,56,56,48,28,112,28, + 112,28,240,14,240,14,255,254,240,0,240,0,240,0,240,2, + 112,4,112,4,56,4,56,8,28,16,7,224,10,28,56,11, + 0,0,192,0,224,0,224,0,112,0,24,0,12,0,4,0, + 0,0,0,0,126,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,127,192,10,28,56,11,1,0, + 0,192,1,192,3,128,7,0,6,0,12,0,16,0,0,0, + 0,0,252,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,255,128,11,28,56,11,0,0,12,0, + 12,0,30,0,31,0,51,0,96,128,128,96,0,0,0,0, + 126,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,127,192,11,26,52,13,1,0,96,192,241,224, + 241,224,96,192,0,0,0,0,0,0,62,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,63,192, + 17,29,87,21,2,0,30,4,0,15,12,0,7,176,0,3, + 224,0,1,224,0,6,224,0,12,240,0,16,120,0,0,56, + 0,0,28,0,3,254,0,12,62,0,24,30,0,56,15,0, + 112,15,0,112,7,0,240,7,0,240,7,128,240,7,128,240, + 7,128,240,7,0,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,20,26,78, + 22,1,0,3,225,0,7,254,0,4,126,0,0,0,0,0, + 0,0,0,0,0,0,0,0,252,60,0,28,199,0,29,3, + 0,31,3,128,30,3,128,30,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,159, + 240,17,28,84,21,2,1,56,0,0,60,0,0,30,0,0, + 14,0,0,3,0,0,1,128,0,0,128,0,0,0,0,0, + 0,0,3,224,0,12,56,0,24,28,0,56,14,0,112,14, + 0,112,7,0,240,7,0,240,7,0,240,7,128,240,7,128, + 240,7,128,240,7,0,240,7,0,112,7,0,112,14,0,56, + 14,0,24,28,0,12,56,0,3,224,0,17,28,84,21,2, + 1,0,28,0,0,28,0,0,56,0,0,112,0,0,96,0, + 0,192,0,1,128,0,0,0,0,0,0,0,3,224,0,12, + 56,0,24,28,0,56,14,0,112,14,0,112,7,0,240,7, + 0,240,7,0,240,7,128,240,7,128,240,7,128,240,7,0, + 240,7,0,112,7,0,112,14,0,56,14,0,24,28,0,12, + 56,0,3,224,0,17,28,84,21,2,0,1,128,0,1,192, + 0,3,192,0,3,96,0,6,32,0,12,16,0,16,12,0, + 0,0,0,0,0,0,3,224,0,12,56,0,24,28,0,56, + 14,0,112,14,0,112,7,0,240,7,0,240,7,0,240,7, + 128,240,7,128,240,7,128,240,7,0,240,7,0,112,7,0, + 112,14,0,56,14,0,24,28,0,12,56,0,3,224,0,17, + 27,81,21,2,0,15,4,0,31,204,0,19,248,0,16,240, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,224,0, + 12,56,0,24,28,0,56,14,0,112,14,0,112,7,0,240, + 7,0,240,7,0,240,7,128,240,7,128,240,7,128,240,7, + 0,240,7,0,112,7,0,112,14,0,56,14,0,24,28,0, + 12,56,0,3,224,0,17,27,81,21,2,0,24,24,0,60, + 60,0,60,60,0,24,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,35,26,130, + 39,2,254,0,0,224,0,0,0,1,240,0,0,0,1,240, + 0,0,0,1,240,0,0,0,0,224,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,255,255,224,255,255,255,255,224,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0, + 0,0,1,240,0,0,0,1,240,0,0,0,1,240,0,0, + 0,0,224,0,0,17,19,57,21,2,0,3,225,0,12,59, + 0,24,30,0,56,14,0,112,14,0,112,31,0,240,55,0, + 240,103,0,240,199,128,240,135,128,241,7,128,242,7,0,244, + 7,0,124,7,0,120,14,0,56,14,0,120,28,0,76,56, + 0,131,224,0,20,28,84,22,1,1,14,0,0,15,0,0, + 7,0,0,3,128,0,1,192,0,0,64,0,0,32,0,0, + 0,0,0,0,0,252,31,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,7,128,28, + 7,128,28,15,128,12,11,128,14,51,128,3,195,240,20,28, + 84,22,1,1,0,7,0,0,15,0,0,30,0,0,24,0, + 0,48,0,0,96,0,0,64,0,0,0,0,0,0,0,252, + 31,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,7,128,28,7,128,28,15,128,12, + 11,128,14,51,128,3,195,240,20,28,84,22,1,0,0,96, + 0,0,224,0,0,240,0,1,176,0,3,24,0,2,4,0, + 4,2,0,0,0,0,0,0,0,252,31,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,128,28,15,128,12,11,128,14,51,128,3, + 195,240,20,27,81,22,1,0,6,6,0,15,15,0,15,15, + 0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0, + 252,15,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,7,128,28,7,128,28,15,128, + 12,11,128,14,51,128,3,195,240,20,37,111,22,1,248,0, + 3,0,0,7,0,0,15,0,0,28,0,0,24,0,0,48, + 0,0,0,0,0,0,0,0,0,0,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,18,38, + 114,21,1,246,12,0,0,60,0,0,252,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 30,0,28,127,0,28,199,128,29,3,128,31,3,192,30,3, + 192,30,3,128,28,3,128,28,3,128,28,7,0,28,7,0, + 28,6,0,28,12,0,28,28,0,28,24,0,28,48,0,28, + 192,0,29,128,0,30,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 56,0,0,192,0,0,19,36,108,21,1,247,3,6,0,7, + 143,0,7,143,0,3,6,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,143,224,30,3,128,30,1,0,14,3,0, + 14,2,0,7,2,0,7,2,0,7,6,0,3,132,0,3, + 132,0,3,140,0,1,200,0,1,200,0,1,200,0,0,240, + 0,0,240,0,0,240,0,0,96,0,0,96,0,0,96,0, + 0,64,0,0,64,0,48,64,0,120,64,0,120,128,0,121, + 128,0,59,0,0,30,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 28 + Calculated Max Values w=35 h=38 x= 5 y=11 dx=39 dy= 0 ascent=30 len=170 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =28 descent= 0 + X Font ascent =28 descent= 0 + Max Font ascent =30 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29n[1201] U8G_SECTION(".progmem.u8g_font_osr29n") = { + 0,107,51,223,244,28,0,0,0,0,42,57,0,30,248,28, + 0,15,17,34,21,3,11,3,128,3,192,3,128,3,128,225, + 142,241,30,249,62,29,112,3,128,3,128,29,112,249,62,241, + 30,227,142,3,128,3,192,3,128,35,34,170,39,2,250,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,255, + 255,255,255,224,255,255,255,255,224,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,5,12,12,11,3,249,112, + 240,248,248,24,8,8,16,16,32,32,64,10,2,4,14,2, + 9,255,192,255,192,5,5,5,11,3,0,112,248,248,248,112, + 14,38,76,18,2,248,0,12,0,12,0,12,0,8,0,24, + 0,24,0,16,0,48,0,48,0,32,0,96,0,96,0,64, + 0,192,0,192,0,128,1,128,1,128,1,0,3,0,3,0, + 2,0,6,0,6,0,4,0,12,0,12,0,8,0,24,0, + 24,0,16,0,48,0,48,0,32,0,96,0,96,0,64,0, + 192,0,20,28,84,24,2,0,1,248,0,7,12,0,12,7, + 0,28,3,128,24,1,128,56,1,192,56,1,192,112,0,224, + 112,0,224,112,0,224,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,112,0,224,112,0,224,112,0,224,56,1,192,56,1,192, + 24,1,128,12,3,0,6,6,0,3,252,0,14,28,56,24, + 5,0,1,128,1,128,3,128,7,128,255,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,255,252,17,28,84,24,3,0, + 7,224,0,24,60,0,32,30,0,64,15,0,192,15,0,192, + 7,128,192,7,128,240,7,128,252,7,128,252,7,128,124,7, + 128,24,15,0,0,14,0,0,28,0,0,56,0,0,112,0, + 0,224,0,1,192,0,3,0,0,6,0,0,12,0,128,24, + 0,128,48,0,128,48,1,128,112,1,128,127,255,128,127,255, + 128,127,255,128,17,28,84,24,3,0,15,224,0,48,56,0, + 96,28,0,96,14,0,240,15,0,248,15,0,248,15,0,120, + 15,0,0,15,0,0,15,0,0,14,0,0,28,0,28,56, + 0,31,224,0,0,60,0,0,30,0,0,15,0,0,7,0, + 0,7,128,0,7,128,120,7,128,248,7,128,248,7,128,248, + 7,0,192,15,0,192,14,0,96,28,0,31,240,0,19,28, + 84,24,2,0,0,12,0,0,12,0,0,28,0,0,60,0, + 0,60,0,0,124,0,0,252,0,0,252,0,1,188,0,3, + 60,0,3,60,0,6,60,0,12,60,0,12,60,0,24,60, + 0,48,60,0,32,60,0,96,60,0,192,60,0,255,255,224, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,7,255,224,17,29,87,24,4,0,0,2, + 0,120,12,0,127,248,0,127,240,0,111,192,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,103,224,0,104, + 60,0,112,30,0,96,14,0,96,15,0,96,7,0,0,7, + 128,0,7,128,0,7,128,16,7,128,120,7,128,252,7,128, + 252,7,128,248,15,0,224,15,0,224,14,0,96,28,0,48, + 56,0,31,240,0,17,28,84,24,3,0,1,248,0,3,12, + 0,12,6,0,28,7,0,24,15,0,56,31,0,48,31,0, + 112,14,0,112,0,0,112,0,0,240,0,0,241,240,0,246, + 28,0,252,14,0,248,7,0,248,7,0,240,7,128,240,7, + 128,240,7,128,240,7,128,112,7,128,112,7,128,112,7,0, + 48,7,0,56,7,0,24,14,0,12,28,0,7,248,0,16, + 28,56,24,4,0,255,255,255,255,255,255,192,3,128,2,128, + 2,128,6,128,4,0,12,0,8,0,24,0,48,0,32,0, + 96,0,192,0,192,1,128,3,128,3,128,7,128,7,128,7, + 128,15,192,15,192,15,192,15,192,15,192,7,192,20,28,84, + 24,2,0,3,248,0,14,14,0,56,7,0,112,3,128,112, + 1,192,240,1,192,240,1,192,240,1,192,240,1,192,248,1, + 128,126,3,128,127,131,0,63,252,0,15,252,0,7,255,0, + 24,127,192,48,15,224,112,3,224,224,1,240,224,0,240,224, + 0,240,224,0,224,224,0,224,224,0,224,112,1,192,48,1, + 128,28,7,0,15,252,0,17,28,84,24,3,0,7,224,0, + 12,56,0,56,12,0,56,14,0,112,14,0,112,7,0,240, + 7,0,240,7,0,240,7,128,240,7,128,240,7,128,240,7, + 128,112,15,128,112,15,128,56,27,128,28,51,128,7,199,128, + 0,7,128,0,7,0,0,7,0,56,7,0,124,7,0,124, + 14,0,120,14,0,112,12,0,112,24,0,48,48,0,31,224, + 0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=41 h=38 x= 5 y=22 dx=44 dy= 0 ascent=31 len=174 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =30 descent=-9 + Max Font ascent =31 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29r[7573] U8G_SECTION(".progmem.u8g_font_osr29r") = { + 0,107,51,223,244,29,9,148,21,166,32,127,247,31,247,30, + 247,0,0,0,11,0,0,5,28,28,11,3,0,112,248,248, + 248,248,248,248,248,112,112,112,112,112,112,112,112,32,32,32, + 32,32,32,0,112,248,248,248,112,9,8,16,17,4,22,227, + 128,227,128,227,128,227,128,193,128,65,128,65,0,65,0,22, + 28,84,28,3,0,0,192,192,0,192,192,0,192,192,0,192, + 128,0,129,128,1,129,128,1,129,128,1,129,128,255,255,252, + 255,255,252,1,129,0,3,3,0,3,3,0,3,3,0,3, + 3,0,3,3,0,2,2,0,6,6,0,255,255,252,255,255, + 252,6,6,0,6,6,0,6,4,0,4,12,0,12,12,0, + 12,12,0,12,12,0,12,12,0,18,34,102,24,3,253,1, + 16,0,1,16,0,1,16,0,3,248,0,13,22,0,25,17, + 0,49,16,128,97,16,192,97,16,192,97,17,192,97,19,192, + 97,19,192,113,19,128,61,16,0,63,144,0,31,240,0,15, + 252,0,3,254,0,1,127,0,1,31,128,1,19,128,33,17, + 192,113,16,192,249,16,192,241,16,192,241,16,192,225,16,128, + 97,17,128,97,17,0,49,19,0,15,188,0,1,240,0,1, + 16,0,1,16,0,28,28,112,36,4,0,31,0,6,0,49, + 128,4,0,96,192,12,0,96,192,8,0,224,224,24,0,224, + 224,48,0,224,224,32,0,224,224,96,0,224,224,64,0,224, + 224,128,0,96,193,128,0,96,193,0,0,49,131,0,0,31, + 6,0,0,0,4,15,0,0,12,48,128,0,8,48,192,0, + 16,96,96,0,48,96,96,0,32,224,112,0,96,224,112,0, + 64,224,112,0,128,224,112,1,128,224,112,1,0,96,96,2, + 0,96,96,6,0,48,192,4,0,31,128,28,28,112,32,2, + 0,0,248,0,0,3,140,0,0,7,4,0,0,6,2,0, + 0,14,2,0,0,14,2,0,0,14,6,0,0,14,4,0, + 0,15,12,0,0,7,24,0,0,7,176,0,0,3,224,0, + 0,1,224,63,240,3,224,7,128,6,240,7,0,12,120,6, + 0,24,124,6,0,48,60,4,0,112,30,12,0,112,31,24, + 0,240,15,144,0,240,7,176,0,240,7,224,0,240,3,224, + 0,240,3,240,32,120,6,248,32,60,12,124,192,31,240,63, + 128,3,8,8,10,4,22,224,224,224,224,192,64,64,64,9, + 37,74,15,4,249,1,128,3,0,6,0,14,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,96,0,96,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,0,96,0,96,0,48,0,48,0,56, + 0,24,0,12,0,12,0,6,0,3,0,3,128,1,128,9, + 37,74,15,2,249,192,0,96,0,48,0,56,0,24,0,12, + 0,12,0,6,0,6,0,3,0,3,0,3,0,3,0,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,3,128,3,0,3,0,3,0,6,0,6,0,14, + 0,12,0,24,0,24,0,48,0,96,0,224,0,192,0,15, + 17,34,21,3,11,3,128,3,192,3,128,3,128,225,142,241, + 30,249,62,29,112,3,128,3,128,29,112,249,62,241,30,227, + 142,3,128,3,192,3,128,35,34,170,39,2,250,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,5,12,12,11,3,249,112,240,248, + 248,24,8,8,16,16,32,32,64,10,2,4,14,2,9,255, + 192,255,192,5,5,5,11,3,0,112,248,248,248,112,14,38, + 76,18,2,248,0,12,0,12,0,12,0,8,0,24,0,24, + 0,16,0,48,0,48,0,32,0,96,0,96,0,64,0,192, + 0,192,0,128,1,128,1,128,1,0,3,0,3,0,2,0, + 6,0,6,0,4,0,12,0,12,0,8,0,24,0,24,0, + 16,0,48,0,48,0,32,0,96,0,96,0,64,0,192,0, + 20,28,84,24,2,0,1,248,0,7,12,0,12,7,0,28, + 3,128,24,1,128,56,1,192,56,1,192,112,0,224,112,0, + 224,112,0,224,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,112, + 0,224,112,0,224,112,0,224,56,1,192,56,1,192,24,1, + 128,12,3,0,6,6,0,3,252,0,14,28,56,24,5,0, + 1,128,1,128,3,128,7,128,255,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,255,252,17,28,84,24,3,0,7,224, + 0,24,60,0,32,30,0,64,15,0,192,15,0,192,7,128, + 192,7,128,240,7,128,252,7,128,252,7,128,124,7,128,24, + 15,0,0,14,0,0,28,0,0,56,0,0,112,0,0,224, + 0,1,192,0,3,0,0,6,0,0,12,0,128,24,0,128, + 48,0,128,48,1,128,112,1,128,127,255,128,127,255,128,127, + 255,128,17,28,84,24,3,0,15,224,0,48,56,0,96,28, + 0,96,14,0,240,15,0,248,15,0,248,15,0,120,15,0, + 0,15,0,0,15,0,0,14,0,0,28,0,28,56,0,31, + 224,0,0,60,0,0,30,0,0,15,0,0,7,0,0,7, + 128,0,7,128,120,7,128,248,7,128,248,7,128,248,7,0, + 192,15,0,192,14,0,96,28,0,31,240,0,19,28,84,24, + 2,0,0,12,0,0,12,0,0,28,0,0,60,0,0,60, + 0,0,124,0,0,252,0,0,252,0,1,188,0,3,60,0, + 3,60,0,6,60,0,12,60,0,12,60,0,24,60,0,48, + 60,0,32,60,0,96,60,0,192,60,0,255,255,224,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,7,255,224,17,29,87,24,4,0,0,2,0,120, + 12,0,127,248,0,127,240,0,111,192,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,103,224,0,104,60,0, + 112,30,0,96,14,0,96,15,0,96,7,0,0,7,128,0, + 7,128,0,7,128,16,7,128,120,7,128,252,7,128,252,7, + 128,248,15,0,224,15,0,224,14,0,96,28,0,48,56,0, + 31,240,0,17,28,84,24,3,0,1,248,0,3,12,0,12, + 6,0,28,7,0,24,15,0,56,31,0,48,31,0,112,14, + 0,112,0,0,112,0,0,240,0,0,241,240,0,246,28,0, + 252,14,0,248,7,0,248,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,112,7,128,112,7,128,112,7,0,48,7, + 0,56,7,0,24,14,0,12,28,0,7,248,0,16,28,56, + 24,4,0,255,255,255,255,255,255,192,3,128,2,128,2,128, + 6,128,4,0,12,0,8,0,24,0,48,0,32,0,96,0, + 192,0,192,1,128,3,128,3,128,7,128,7,128,7,128,15, + 192,15,192,15,192,15,192,15,192,7,192,20,28,84,24,2, + 0,3,248,0,14,14,0,56,7,0,112,3,128,112,1,192, + 240,1,192,240,1,192,240,1,192,240,1,192,248,1,128,126, + 3,128,127,131,0,63,252,0,15,252,0,7,255,0,24,127, + 192,48,15,224,112,3,224,224,1,240,224,0,240,224,0,240, + 224,0,224,224,0,224,224,0,224,112,1,192,48,1,128,28, + 7,0,15,252,0,17,28,84,24,3,0,7,224,0,12,56, + 0,56,12,0,56,14,0,112,14,0,112,7,0,240,7,0, + 240,7,0,240,7,128,240,7,128,240,7,128,240,7,128,112, + 15,128,112,15,128,56,27,128,28,51,128,7,199,128,0,7, + 128,0,7,0,0,7,0,56,7,0,124,7,0,124,14,0, + 120,14,0,112,12,0,112,24,0,48,48,0,31,224,0,5, + 19,19,11,3,0,112,248,248,248,112,0,0,0,0,0,0, + 0,0,0,112,248,248,248,112,5,26,26,11,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,240,248,120, + 8,8,8,16,16,32,96,64,32,34,136,39,3,250,0,0, + 0,2,0,0,0,7,0,0,0,28,0,0,0,112,0,0, + 1,224,0,0,7,128,0,0,30,0,0,0,120,0,0,1, + 224,0,0,3,128,0,0,14,0,0,0,56,0,0,0,240, + 0,0,3,192,0,0,15,0,0,0,60,0,0,0,240,0, + 0,0,224,0,0,0,120,0,0,0,30,0,0,0,7,128, + 0,0,1,192,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,3,192,0,0,0,240,0,0,0,60,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,56,0,0, + 0,14,0,0,0,6,35,10,50,39,2,6,255,255,255,255, + 224,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,224,255,255,255,255,224,32,34, + 136,39,3,250,64,0,0,0,224,0,0,0,56,0,0,0, + 14,0,0,0,7,128,0,0,1,224,0,0,0,120,0,0, + 0,30,0,0,0,7,128,0,0,1,192,0,0,0,112,0, + 0,0,28,0,0,0,15,0,0,0,3,192,0,0,0,240, + 0,0,0,60,0,0,0,15,0,0,0,7,0,0,0,30, + 0,0,0,120,0,0,1,224,0,0,3,128,0,0,14,0, + 0,0,56,0,0,0,224,0,0,3,192,0,0,15,0,0, + 0,60,0,0,0,240,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,0,96,0,0,0,15,28,56,20, + 3,0,15,192,48,112,64,60,192,28,192,30,248,30,248,30, + 112,30,0,28,0,60,0,120,0,240,1,192,3,128,6,0, + 12,0,8,32,8,32,8,32,12,64,7,128,0,0,0,0, + 3,128,7,192,7,192,7,192,3,128,29,29,116,33,2,1, + 0,63,248,0,1,192,14,0,3,0,3,0,6,0,1,128, + 12,0,0,192,24,7,206,96,48,12,124,32,48,56,60,48, + 96,112,60,16,96,224,56,24,96,224,56,24,193,192,56,24, + 193,192,56,24,193,192,48,24,195,192,112,24,195,128,112,24, + 195,128,112,48,195,128,224,48,195,128,224,48,67,129,224,96, + 97,130,224,192,97,196,225,128,48,120,62,0,48,0,0,0, + 24,0,0,0,12,0,0,0,6,0,4,0,3,128,28,0, + 0,127,240,0,29,29,116,32,2,0,0,2,0,0,0,6, + 0,0,0,7,0,0,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,31,192,0,0,19,192,0,0,51, + 192,0,0,49,224,0,0,33,224,0,0,97,224,0,0,96, + 240,0,0,64,240,0,0,192,240,0,0,192,120,0,0,128, + 120,0,1,128,120,0,1,255,252,0,1,0,60,0,3,0, + 28,0,3,0,30,0,6,0,30,0,6,0,15,0,6,0, + 15,0,14,0,15,0,30,0,15,128,255,224,255,248,23,29, + 87,28,3,0,255,255,128,15,0,224,15,0,120,15,0,60, + 15,0,28,15,0,28,15,0,30,15,0,30,15,0,28,15, + 0,28,15,0,56,15,0,48,15,0,224,15,255,0,15,0, + 224,15,0,112,15,0,56,15,0,60,15,0,30,15,0,30, + 15,0,30,15,0,30,15,0,30,15,0,30,15,0,60,15, + 0,60,15,0,120,15,0,224,255,255,128,22,29,87,28,3, + 1,1,254,8,7,3,152,12,0,248,28,0,248,24,0,120, + 56,0,56,120,0,56,112,0,24,112,0,24,240,0,8,240, + 0,8,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,12,112,0,12, + 120,0,12,56,0,24,56,0,24,28,0,24,12,0,48,6, + 0,96,3,0,192,0,255,128,27,29,116,32,3,0,255,255, + 192,0,15,0,112,0,15,0,28,0,15,0,14,0,15,0, + 7,0,15,0,7,128,15,0,3,128,15,0,3,192,15,0, + 3,192,15,0,1,192,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,3,192,15,0, + 3,192,15,0,3,192,15,0,3,128,15,0,7,0,15,0, + 7,0,15,0,14,0,15,0,28,0,15,0,112,0,255,255, + 192,0,23,29,87,29,3,0,255,255,254,15,0,62,15,0, + 14,15,0,14,15,0,6,15,0,6,15,0,2,15,0,2, + 15,1,2,15,1,0,15,1,0,15,1,0,15,3,0,15, + 7,0,15,255,0,15,7,0,15,3,0,15,1,0,15,1, + 2,15,1,2,15,1,2,15,0,2,15,0,6,15,0,6, + 15,0,6,15,0,14,15,0,30,15,0,126,255,255,254,23, + 29,87,28,3,0,255,255,254,15,0,62,15,0,14,15,0, + 14,15,0,6,15,0,6,15,0,2,15,0,2,15,1,2, + 15,1,0,15,1,0,15,1,0,15,3,0,15,7,0,15, + 255,0,15,7,0,15,3,0,15,1,0,15,1,0,15,1, + 0,15,1,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,255,240,0,25,30,120,29, + 3,0,0,16,0,0,1,254,8,0,6,3,152,0,12,0, + 248,0,28,0,248,0,24,0,120,0,56,0,56,0,56,0, + 56,0,112,0,24,0,112,0,24,0,112,0,8,0,240,0, + 8,0,240,0,0,0,240,0,0,0,240,0,0,0,240,7, + 255,128,240,0,120,0,240,0,120,0,240,0,120,0,240,0, + 120,0,112,0,120,0,112,0,120,0,112,0,120,0,56,0, + 120,0,56,0,120,0,24,0,248,0,28,0,200,0,12,1, + 136,0,6,3,8,0,1,254,8,0,28,29,116,33,3,0, + 255,240,255,240,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,255,255,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 255,240,255,240,12,29,58,17,3,0,255,240,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,255,240,19,29,87,22,2,0,1,255,224,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,120,30,0,248,30,0,248,30,0,248, + 30,0,192,28,0,192,28,0,64,24,0,96,48,0,31,224, + 0,27,29,116,32,3,0,255,241,255,192,15,0,126,0,15, + 0,60,0,15,0,56,0,15,0,112,0,15,0,96,0,15, + 0,192,0,15,1,128,0,15,3,0,0,15,6,0,0,15, + 14,0,0,15,30,0,0,15,63,0,0,15,111,0,0,15, + 207,128,0,15,135,128,0,15,7,192,0,15,3,192,0,15, + 3,224,0,15,3,224,0,15,1,240,0,15,1,240,0,15, + 0,248,0,15,0,248,0,15,0,124,0,15,0,124,0,15, + 0,62,0,15,0,63,0,255,241,255,224,23,29,87,28,3, + 0,255,248,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,2,15,0,2,15,0,6, + 15,0,6,15,0,6,15,0,14,15,0,14,15,0,30,15, + 0,62,15,0,254,255,255,254,30,29,116,35,3,0,255,128, + 3,252,15,128,7,192,15,192,7,192,15,192,7,192,15,192, + 15,192,13,192,11,192,13,224,11,192,13,224,11,192,12,224, + 27,192,12,240,19,192,12,240,19,192,12,112,51,192,12,112, + 35,192,12,120,35,192,12,120,35,192,12,56,99,192,12,60, + 67,192,12,60,67,192,12,28,195,192,12,28,131,192,12,30, + 131,192,12,14,131,192,12,15,131,192,12,15,3,192,12,15, + 3,192,12,7,3,192,12,6,3,192,30,6,3,192,255,194, + 63,252,28,29,116,32,3,0,255,0,63,240,15,128,7,128, + 15,128,3,0,15,192,3,0,15,224,3,0,13,224,3,0, + 13,240,3,0,12,248,3,0,12,120,3,0,12,124,3,0, + 12,60,3,0,12,30,3,0,12,31,3,0,12,15,3,0, + 12,7,131,0,12,7,131,0,12,3,195,0,12,3,227,0, + 12,1,227,0,12,0,243,0,12,0,251,0,12,0,123,0, + 12,0,63,0,12,0,63,0,12,0,31,0,12,0,31,0, + 12,0,15,0,30,0,7,0,255,192,7,0,24,29,87,29, + 3,1,0,255,0,3,0,192,6,0,96,12,0,48,28,0, + 56,56,0,28,56,0,28,120,0,30,112,0,14,112,0,14, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,112,0,14,112,0, + 14,120,0,30,56,0,28,56,0,28,28,0,56,12,0,48, + 6,0,96,3,0,192,0,255,0,23,29,87,28,3,0,255, + 255,128,15,0,224,15,0,120,15,0,60,15,0,60,15,0, + 30,15,0,30,15,0,30,15,0,30,15,0,30,15,0,60, + 15,0,60,15,0,120,15,0,224,15,255,128,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,255,248,0,24,36,108,29,3,250,0,255,0,3, + 0,192,6,0,96,12,0,48,28,0,56,56,0,28,56,0, + 28,120,0,30,112,0,14,112,0,14,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,112,0,14,120,0,30,120,0,30,56,60, + 28,56,99,28,28,195,56,14,193,184,6,193,240,3,193,225, + 0,247,193,0,9,193,0,1,193,0,1,195,0,1,226,0, + 1,254,0,0,252,0,0,56,25,29,116,29,3,0,255,255, + 128,0,15,1,240,0,15,0,120,0,15,0,120,0,15,0, + 60,0,15,0,60,0,15,0,60,0,15,0,60,0,15,0, + 60,0,15,0,120,0,15,0,240,0,15,1,224,0,15,255, + 0,0,15,3,128,0,15,1,192,0,15,0,224,0,15,0, + 224,0,15,0,240,0,15,0,240,0,15,0,240,0,15,0, + 240,0,15,0,240,0,15,0,248,128,15,0,120,128,15,0, + 120,128,15,0,121,128,15,0,127,0,15,0,63,0,255,248, + 30,0,19,29,87,25,4,1,15,240,192,48,28,192,96,15, + 192,96,7,192,192,3,192,192,1,192,192,1,192,192,0,192, + 224,0,192,240,0,192,120,0,64,127,0,0,63,192,0,31, + 248,0,15,254,0,1,255,128,128,127,128,128,15,192,128,3, + 224,128,1,224,192,0,224,192,0,96,224,0,96,224,0,96, + 240,0,96,248,0,192,156,0,128,134,1,0,131,254,0,24, + 29,87,29,3,0,255,255,255,248,60,31,240,60,15,224,60, + 7,192,60,3,192,60,3,192,60,3,128,60,1,128,60,1, + 128,60,1,128,60,1,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,7,255,224,29,29,116,34, + 3,0,255,240,31,248,15,0,3,192,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,7,0, + 1,0,7,0,3,0,3,128,2,0,1,192,6,0,0,224, + 24,0,0,63,240,0,29,29,116,32,2,0,255,248,63,248, + 15,128,3,192,7,128,3,128,7,128,3,0,3,192,3,0, + 3,192,3,0,3,192,2,0,1,224,6,0,1,224,6,0, + 1,240,4,0,0,240,12,0,0,240,12,0,0,248,8,0, + 0,120,24,0,0,120,24,0,0,60,16,0,0,60,48,0, + 0,60,48,0,0,30,32,0,0,30,96,0,0,31,96,0, + 0,15,64,0,0,15,192,0,0,15,192,0,0,7,128,0, + 0,7,128,0,0,7,128,0,0,3,0,0,0,3,0,0, + 41,29,174,44,2,0,255,241,255,227,255,128,15,128,63,0, + 124,0,7,128,30,0,56,0,7,128,30,0,48,0,7,128, + 31,0,48,0,3,192,31,0,48,0,3,192,31,0,96,0, + 3,192,55,0,96,0,1,224,55,128,96,0,1,224,55,128, + 64,0,1,224,39,128,192,0,1,224,99,192,192,0,0,240, + 99,192,128,0,0,240,67,193,128,0,0,240,193,193,128,0, + 0,120,193,225,0,0,0,120,193,227,0,0,0,120,129,227, + 0,0,0,125,128,242,0,0,0,61,128,246,0,0,0,61, + 0,246,0,0,0,61,0,116,0,0,0,31,0,124,0,0, + 0,31,0,124,0,0,0,30,0,60,0,0,0,14,0,56, + 0,0,0,14,0,56,0,0,0,12,0,56,0,0,0,12, + 0,16,0,0,28,29,116,31,2,0,255,248,255,224,7,192, + 30,0,7,192,28,0,3,224,24,0,1,224,24,0,1,240, + 48,0,0,240,32,0,0,248,96,0,0,120,192,0,0,124, + 128,0,0,61,128,0,0,63,0,0,0,30,0,0,0,15, + 0,0,0,15,0,0,0,15,128,0,0,31,128,0,0,51, + 192,0,0,51,224,0,0,97,224,0,0,193,240,0,0,192, + 240,0,1,128,248,0,3,0,120,0,3,0,124,0,6,0, + 60,0,14,0,62,0,31,0,63,0,255,225,255,240,27,29, + 116,30,2,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,22,29,87,27,3,0,63,255, + 252,62,0,120,60,0,248,56,0,240,48,1,224,48,3,224, + 96,3,192,96,7,128,64,15,128,64,15,0,0,31,0,0, + 62,0,0,60,0,0,124,0,0,120,0,0,240,0,1,240, + 0,1,224,0,3,224,4,7,192,4,7,128,12,15,128,12, + 31,0,12,31,0,28,62,0,28,60,0,60,124,0,120,248, + 0,248,255,255,248,8,37,37,16,5,248,255,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,255, + 14,38,76,18,2,248,192,0,64,0,96,0,96,0,32,0, + 48,0,48,0,16,0,24,0,24,0,8,0,12,0,12,0, + 4,0,4,0,6,0,2,0,2,0,3,0,3,0,1,0, + 1,128,1,128,0,128,0,192,0,192,0,64,0,96,0,96, + 0,32,0,48,0,48,0,16,0,24,0,24,0,8,0,12, + 0,12,8,37,37,16,3,248,255,15,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,15,255,18,14,42, + 24,3,15,0,192,0,1,192,0,1,224,0,3,48,0,3, + 48,0,6,24,0,12,12,0,12,12,0,24,6,0,48,6, + 0,48,3,0,96,1,128,224,1,128,192,0,192,21,2,6, + 21,0,250,255,255,248,255,255,248,7,7,7,18,3,21,192, + 224,112,56,24,12,2,18,19,57,21,2,0,15,192,0,56, + 112,0,32,56,0,96,28,0,120,28,0,120,28,0,56,28, + 0,0,28,0,0,252,0,15,28,0,56,28,0,112,28,0, + 224,28,0,224,28,64,224,60,64,224,60,64,224,92,192,112, + 159,128,31,15,0,18,29,87,21,1,0,252,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,120,0,28,142,0,29, + 7,0,30,3,128,30,3,128,28,3,128,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,192,28,3,192, + 28,3,128,28,3,128,30,3,128,27,7,0,17,142,0,16, + 248,0,15,19,38,18,2,0,7,224,28,16,56,8,48,12, + 112,28,112,60,240,60,240,24,240,0,240,0,240,0,240,0, + 240,6,112,4,112,4,48,12,56,8,12,48,7,224,18,29, + 87,21,2,0,0,254,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,15,142,0,28,78,0,56,46,0,112,30,0,112,30, + 0,112,14,0,240,14,0,240,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,0,112,14,0,112,14,0,112, + 30,0,56,62,0,24,110,0,7,207,192,15,19,38,19,2, + 0,7,192,12,112,56,56,48,28,112,28,112,28,240,30,240, + 30,255,254,240,0,240,0,240,0,240,6,112,4,112,4,56, + 4,56,8,28,16,7,224,14,29,58,14,1,0,1,240,7, + 24,14,24,12,60,28,60,28,56,28,0,28,0,28,0,28, + 0,255,192,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,192,20,28,84,22,2,247,7,225,192, + 28,58,96,56,30,240,112,30,240,112,14,224,240,15,0,240, + 15,0,240,15,0,112,14,0,112,30,0,56,28,0,28,56, + 0,7,224,0,56,0,0,64,0,0,192,0,0,240,0,0, + 255,254,0,63,255,0,15,7,128,112,1,192,64,0,192,192, + 0,192,192,0,192,192,1,128,96,1,128,56,6,0,7,248, + 0,20,29,87,22,1,0,252,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,60,0,28,199,0,29,3,0,29,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,8,28, + 28,11,1,0,24,60,60,24,0,0,0,0,0,252,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,255, + 11,37,74,14,255,247,0,192,1,224,1,224,0,192,0,0, + 0,0,0,0,0,0,0,0,15,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,224,224,240,224,224,192,193,128,99,128,62,0, + 19,29,87,21,1,0,252,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,63,192,28,14,0,28,12,0,28,8,0, + 28,16,0,28,48,0,28,96,0,28,192,0,28,224,0,29, + 224,0,30,240,0,30,120,0,28,60,0,28,60,0,28,30, + 0,28,15,0,28,15,0,28,15,128,255,63,224,9,29,58, + 11,1,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,31,19,76, + 33,1,0,252,124,15,128,28,199,24,192,29,7,32,224,31, + 3,224,112,30,3,192,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,255,159,243,254,20, + 19,57,22,1,0,252,60,0,28,199,0,29,3,0,31,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,17,19, + 57,21,2,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,18,28,84, + 21,1,247,252,120,0,29,142,0,31,7,0,30,3,128,30, + 3,128,28,3,128,28,3,192,28,3,192,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,128,28,3,128, + 30,3,128,31,7,0,29,134,0,28,120,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,28,84,21,2,247,7,130,0, + 28,98,0,56,54,0,112,22,0,112,30,0,112,14,0,240, + 14,0,240,14,0,240,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,112,14,0,112,14,0,112,30,0,56,62,0, + 24,110,0,7,206,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,127, + 192,15,19,38,16,1,0,252,56,28,196,28,142,29,30,31, + 28,30,12,30,0,30,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,14,19,38, + 18,2,0,31,16,96,208,64,112,192,48,192,16,224,16,240, + 0,126,0,63,128,31,224,3,248,128,252,192,28,192,12,224, + 12,224,12,240,8,140,24,131,224,12,27,54,14,1,0,4, + 0,4,0,4,0,4,0,4,0,12,0,12,0,28,0,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,16,28,16,28,16,28,48,30, + 32,15,224,7,192,20,19,57,22,1,0,252,31,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,7,128,28,7,128,28,15,128,12,11,128,14,51, + 128,3,195,240,20,19,57,21,1,0,255,15,240,60,3,128, + 28,3,0,28,3,0,14,2,0,14,2,0,15,6,0,7, + 4,0,7,4,0,3,140,0,3,136,0,3,200,0,1,216, + 0,1,208,0,0,240,0,0,240,0,0,96,0,0,96,0, + 0,96,0,30,19,76,31,1,0,255,31,243,252,60,7,128, + 224,28,3,128,192,28,3,128,192,14,3,192,128,14,3,192, + 128,15,7,193,128,7,5,225,0,7,4,225,0,3,140,227, + 0,3,136,114,0,1,200,114,0,1,216,118,0,1,240,60, + 0,0,240,60,0,0,240,60,0,0,96,24,0,0,96,24, + 0,0,32,24,0,18,19,57,21,1,0,255,31,192,30,14, + 0,30,12,0,14,8,0,15,24,0,7,16,0,3,160,0, + 3,224,0,1,192,0,1,224,0,1,224,0,1,112,0,3, + 120,0,2,56,0,4,28,0,12,28,0,24,14,0,24,15, + 0,254,63,192,20,28,84,22,1,247,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,14,19, + 38,18,2,0,255,252,224,60,192,56,192,120,128,240,128,224, + 129,224,1,192,3,128,7,128,7,0,15,0,30,4,28,4, + 60,4,56,12,112,12,240,28,255,252,10,37,74,17,4,248, + 1,192,6,0,12,0,8,0,24,0,24,0,24,0,28,0, + 28,0,12,0,14,0,14,0,14,0,6,0,6,0,6,0, + 4,0,8,0,240,0,24,0,12,0,4,0,6,0,6,0, + 14,0,14,0,14,0,12,0,28,0,28,0,24,0,24,0, + 24,0,8,0,12,0,6,0,1,192,2,38,38,12,5,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,10,37,74,17,3,248,224,0,24,0, + 12,0,4,0,6,0,6,0,6,0,14,0,14,0,12,0, + 28,0,28,0,28,0,24,0,24,0,24,0,8,0,4,0, + 3,192,6,0,8,0,24,0,24,0,24,0,28,0,28,0, + 28,0,12,0,14,0,14,0,6,0,6,0,6,0,4,0, + 12,0,24,0,224,0,23,8,24,27,2,7,30,0,8,127, + 192,4,255,240,2,199,254,2,128,255,134,128,63,254,192,15, + 252,96,1,248,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=47 x=10 y=28 dx=52 dy= 0 ascent=47 len=252 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x=-2 y=-13 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =36 descent=-10 + Max Font ascent =47 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35[22370] U8G_SECTION(".progmem.u8g_font_osr35") = { + 0,128,62,216,241,35,12,236,30,116,32,255,246,47,243,36, + 246,0,0,0,14,0,0,6,34,34,14,4,0,120,252,252, + 252,252,252,252,252,252,120,120,120,120,120,120,48,48,48,48, + 48,48,48,48,48,48,48,0,0,0,120,252,252,252,120,11, + 10,20,19,4,26,224,224,224,224,224,224,224,224,224,224,224, + 224,64,64,64,64,64,64,64,64,26,34,136,34,4,0,0, + 48,24,0,0,48,24,0,0,112,24,0,0,96,24,0,0, + 96,56,0,0,96,56,0,0,96,48,0,0,96,48,0,0, + 96,48,0,0,224,48,0,255,255,255,192,255,255,255,192,0, + 192,96,0,0,192,96,0,0,192,96,0,1,192,96,0,1, + 128,96,0,1,128,224,0,1,128,192,0,1,128,192,0,1, + 128,192,0,3,128,192,0,255,255,255,192,255,255,255,192,3, + 1,128,0,3,1,128,0,3,1,128,0,7,1,128,0,7, + 1,128,0,6,1,128,0,6,3,128,0,6,3,0,0,6, + 3,0,0,6,3,0,0,22,41,123,29,3,252,0,204,0, + 0,204,0,0,204,0,1,254,0,7,207,192,12,204,96,24, + 204,48,48,204,24,32,204,24,96,204,28,96,204,60,96,204, + 124,96,204,124,112,204,120,120,204,120,62,204,0,63,204,0, + 31,252,0,15,252,0,7,255,128,1,255,192,0,255,224,0, + 207,240,0,205,248,0,204,120,48,204,60,120,204,28,248,204, + 28,248,204,12,240,204,12,240,204,8,224,204,24,96,204,24, + 96,204,48,48,204,96,28,205,192,7,255,128,0,204,0,0, + 204,0,0,204,0,0,204,0,33,34,170,43,5,0,15,128, + 0,48,0,24,192,0,96,0,48,96,0,64,0,112,112,0, + 192,0,96,48,1,128,0,224,56,1,128,0,224,56,3,0, + 0,224,56,2,0,0,224,56,6,0,0,224,56,12,0,0, + 224,56,12,0,0,224,56,24,0,0,96,48,48,0,0,96, + 112,48,0,0,48,96,96,0,0,24,192,64,0,0,15,128, + 192,0,0,0,1,128,248,0,0,1,129,140,0,0,3,3, + 6,0,0,2,6,7,0,0,6,6,3,0,0,12,14,3, + 128,0,8,14,3,128,0,24,14,3,128,0,48,14,3,128, + 0,48,14,3,128,0,96,14,3,128,0,64,14,3,128,0, + 192,6,3,0,1,128,6,3,0,1,128,7,7,0,3,0, + 3,14,0,6,0,1,252,0,33,34,170,39,3,0,0,63, + 0,0,0,0,227,128,0,0,1,128,192,0,0,3,128,64, + 0,0,3,0,96,0,0,7,0,96,0,0,7,0,96,0, + 0,7,0,224,0,0,7,0,192,0,0,7,129,192,0,0, + 7,131,128,0,0,3,199,0,0,0,3,238,0,0,0,1, + 248,0,0,0,0,248,7,255,128,1,248,0,252,0,3,252, + 0,112,0,7,62,0,112,0,14,63,0,96,0,28,31,0, + 96,0,60,15,128,192,0,56,7,192,192,0,120,7,193,128, + 0,120,3,225,128,0,240,1,243,0,0,240,1,254,0,0, + 240,0,254,0,0,240,0,124,0,0,248,0,62,0,0,248, + 0,62,1,0,120,0,127,1,0,60,0,207,130,0,30,3, + 135,252,0,15,254,1,248,0,3,10,10,11,4,26,224,224, + 224,224,224,224,64,64,64,64,11,46,92,18,5,246,0,64, + 0,224,1,192,3,128,3,0,6,0,14,0,12,0,28,0, + 24,0,56,0,48,0,48,0,112,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,224,0,96,0,96,0,96,0,112,0, + 48,0,48,0,56,0,24,0,28,0,12,0,14,0,6,0, + 3,0,3,128,1,192,0,224,0,64,11,45,90,18,2,246, + 64,0,96,0,112,0,56,0,28,0,12,0,14,0,6,0, + 3,0,3,0,3,128,1,128,1,192,0,192,0,192,0,192, + 0,224,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,224,0,192,0,192, + 0,192,1,128,1,128,3,128,3,0,7,0,6,0,14,0, + 12,0,24,0,56,0,112,0,224,0,18,20,60,25,4,14, + 0,224,0,1,224,0,1,224,0,1,224,0,96,195,128,240, + 135,192,248,143,192,124,159,128,7,248,0,1,224,0,1,224, + 0,6,184,0,124,143,128,248,135,192,240,195,192,97,193,128, + 1,224,0,1,224,0,1,224,0,0,224,0,41,41,246,45, + 2,248,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,255,255,255,255,255,128,255,255,255,255,255,128, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,7,15,15,14,4,247,120,252, + 252,254,126,6,6,6,4,12,8,24,48,96,64,12,3,6, + 18,3,11,255,240,255,240,255,240,6,5,5,14,4,1,120, + 252,252,252,120,16,46,92,22,3,246,0,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,128,1,128,1,128,3,0,3,0, + 3,0,6,0,6,0,6,0,12,0,12,0,12,0,24,0, + 24,0,24,0,48,0,48,0,48,0,96,0,96,0,96,0, + 96,0,192,0,192,0,23,34,102,28,2,0,0,124,0,1, + 199,0,7,1,128,6,0,192,14,0,224,28,0,112,60,0, + 120,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,120,0, + 60,120,0,60,120,0,60,120,0,60,60,0,120,60,0,120, + 28,0,112,28,0,112,14,0,224,7,1,192,3,131,128,0, + 254,0,17,34,102,28,6,0,0,64,0,0,64,0,0,192, + 0,0,192,0,1,192,0,7,192,0,255,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,255,255,128,255,255,128,21,34, + 102,28,4,0,3,252,0,14,31,0,16,7,192,32,3,224, + 96,1,240,64,1,240,192,0,240,192,0,248,224,0,248,252, + 0,248,254,0,248,126,0,248,126,0,240,62,1,240,0,1, + 224,0,3,192,0,3,128,0,7,0,0,14,0,0,28,0, + 0,112,0,0,224,0,1,192,0,3,0,0,6,0,16,12, + 0,16,24,0,16,16,0,16,48,0,48,48,0,112,127,255, + 240,127,255,240,127,255,240,127,255,240,21,34,102,28,4,0, + 3,248,0,14,31,0,24,7,128,48,3,192,112,3,192,120, + 1,224,124,1,224,126,1,224,126,1,224,60,1,224,0,1, + 224,0,3,192,0,3,192,0,7,128,0,14,0,15,248,0, + 31,143,0,14,3,128,0,3,224,0,1,224,0,1,240,0, + 0,248,0,0,248,0,0,248,60,0,248,126,0,248,254,0, + 248,254,0,248,252,1,240,224,1,240,224,3,224,96,3,192, + 48,15,0,15,254,0,23,34,102,28,3,0,0,1,128,0, + 1,128,0,3,128,0,7,128,0,7,128,0,15,128,0,31, + 128,0,31,128,0,55,128,0,119,128,0,231,128,0,199,128, + 1,199,128,3,135,128,3,7,128,6,7,128,14,7,128,12, + 7,128,24,7,128,56,7,128,48,7,128,96,7,128,224,7, + 128,255,255,254,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,3,255,254,3, + 255,254,21,35,105,28,4,0,48,0,64,60,3,192,63,255, + 128,63,255,0,63,252,0,55,240,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,51, + 254,0,60,7,128,56,3,192,48,1,224,48,1,240,48,1, + 240,0,0,240,0,0,248,0,0,248,0,0,248,0,0,248, + 60,0,248,126,0,248,254,0,248,254,0,240,252,1,240,248, + 1,224,240,1,224,112,3,192,112,7,128,60,31,0,15,252, + 0,21,34,102,28,4,0,0,126,0,1,193,128,3,128,192, + 7,0,64,14,0,224,28,1,224,28,3,224,56,3,224,56, + 3,192,120,0,0,120,0,0,120,0,0,120,0,0,240,126, + 0,241,255,128,243,131,192,247,1,224,254,1,240,252,0,240, + 252,0,240,248,0,248,248,0,120,248,0,120,248,0,120,120, + 0,120,120,0,120,120,0,248,120,0,240,56,0,240,60,0, + 224,28,1,224,14,3,192,7,7,128,1,254,0,19,34,102, + 28,5,0,255,255,224,255,255,224,255,255,224,255,255,224,224, + 0,224,192,0,64,128,0,64,128,0,192,128,0,128,128,1, + 128,0,1,128,0,3,0,0,2,0,0,6,0,0,12,0, + 0,24,0,0,24,0,0,48,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,224,0,1,224,0,3,224,0,3,224, + 0,3,224,0,7,240,0,7,240,0,7,240,0,7,240,0, + 7,240,0,3,240,0,3,224,0,23,34,102,28,3,0,1, + 254,0,7,135,128,30,1,192,56,0,224,120,0,112,112,0, + 112,240,0,56,240,0,56,240,0,56,240,0,56,248,0,56, + 252,0,112,126,0,112,127,192,224,63,241,192,31,255,0,7, + 255,128,7,255,224,12,63,248,56,7,252,112,1,252,112,0, + 126,224,0,62,224,0,62,224,0,62,224,0,30,224,0,30, + 224,0,28,96,0,60,112,0,56,48,0,120,24,0,240,14, + 1,192,3,255,0,21,34,102,28,4,0,1,248,0,7,142, + 0,14,3,0,28,1,128,56,1,192,120,1,224,120,0,224, + 120,0,240,240,0,240,240,0,240,240,0,240,240,0,248,240, + 0,248,248,0,248,120,1,248,120,1,248,120,3,248,60,7, + 120,30,14,120,15,252,120,3,240,120,0,0,240,0,0,240, + 0,0,240,0,0,240,60,0,224,124,0,224,124,1,192,124, + 1,192,120,3,128,112,3,0,56,6,0,28,28,0,15,248, + 0,6,22,22,14,4,1,120,252,252,252,120,0,0,0,0, + 0,0,0,0,0,0,0,0,120,252,252,252,120,7,31,31, + 14,4,248,120,252,252,252,120,0,0,0,0,0,0,0,0, + 0,0,0,120,252,252,254,126,14,6,6,4,12,8,24,48, + 96,64,38,40,200,46,4,249,0,0,0,0,28,0,0,0, + 0,120,0,0,0,1,240,0,0,0,7,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,192,0, + 0,0,15,0,0,0,0,62,0,0,0,0,248,0,0,0, + 1,224,0,0,0,7,128,0,0,0,30,0,0,0,0,120, + 0,0,0,1,224,0,0,0,7,192,0,0,0,31,0,0, + 0,0,60,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,124,0,0,0,0,31,0,0,0,0,7,128,0,0,0, + 1,224,0,0,0,0,120,0,0,0,0,30,0,0,0,0, + 7,128,0,0,0,3,224,0,0,0,0,248,0,0,0,0, + 60,0,0,0,0,15,0,0,0,0,3,192,0,0,0,0, + 240,0,0,0,0,60,0,0,0,0,31,0,0,0,0,7, + 192,0,0,0,1,224,0,0,0,0,120,0,0,0,0,28, + 41,11,66,45,2,7,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,128,255,255,255,255,255,128,38,40,200,46,4,249,224,0, + 0,0,0,120,0,0,0,0,62,0,0,0,0,15,128,0, + 0,0,3,192,0,0,0,0,240,0,0,0,0,60,0,0, + 0,0,15,0,0,0,0,3,192,0,0,0,1,240,0,0, + 0,0,124,0,0,0,0,30,0,0,0,0,7,128,0,0, + 0,1,224,0,0,0,0,120,0,0,0,0,30,0,0,0, + 0,15,128,0,0,0,3,224,0,0,0,0,240,0,0,0, + 0,60,0,0,0,0,60,0,0,0,0,248,0,0,0,3, + 224,0,0,0,7,128,0,0,0,30,0,0,0,0,120,0, + 0,0,1,224,0,0,0,7,128,0,0,0,31,0,0,0, + 0,124,0,0,0,0,240,0,0,0,3,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,224,0, + 0,0,15,128,0,0,0,30,0,0,0,0,120,0,0,0, + 0,224,0,0,0,0,18,34,102,23,3,0,7,240,0,28, + 60,0,48,15,0,96,7,128,192,7,128,192,3,192,192,3, + 192,248,3,192,252,3,192,124,7,192,56,7,128,0,15,128, + 0,31,0,0,62,0,0,124,0,0,240,0,0,224,0,1, + 192,0,3,0,0,6,0,0,14,8,0,12,8,0,12,8, + 0,12,8,0,6,16,0,3,224,0,0,0,0,0,0,0, + 0,0,0,1,224,0,3,240,0,3,240,0,3,240,0,1, + 224,0,35,36,180,40,2,0,0,3,254,0,0,0,30,7, + 192,0,0,112,0,112,0,1,192,0,24,0,3,128,0,12, + 0,7,0,0,6,0,14,0,0,3,0,28,0,120,1,0, + 24,1,196,225,128,56,7,7,224,128,48,14,3,224,192,112, + 12,3,192,192,96,28,3,192,64,96,56,3,192,96,224,56, + 3,192,96,192,120,3,128,96,192,112,7,128,96,192,112,7, + 128,96,192,240,7,128,96,192,224,7,0,96,192,224,15,0, + 224,192,224,15,0,192,192,224,14,0,192,96,224,30,1,128, + 96,224,62,1,128,96,224,62,3,0,96,96,78,6,0,48, + 49,143,12,0,48,31,7,240,0,24,0,0,0,0,12,0, + 0,0,0,6,0,0,0,0,3,0,0,0,0,1,192,0, + 112,0,0,112,1,192,0,0,31,255,0,0,34,35,175,37, + 2,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,15,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,0, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,28,35,140,34,3,0,255,255,240,0,7,192,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,1,224,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,3,192,7,128,3,128,7, + 128,7,0,7,128,30,0,7,255,240,0,7,128,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,3,224,7, + 128,1,224,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,3,224,7, + 128,3,224,7,128,7,192,7,128,15,128,7,192,62,0,255, + 255,240,0,26,36,144,32,3,0,0,63,0,128,0,225,224, + 128,3,128,113,128,7,0,63,128,14,0,31,128,30,0,15, + 128,28,0,7,128,60,0,3,128,60,0,3,128,124,0,3, + 128,120,0,1,128,120,0,1,128,120,0,0,128,248,0,0, + 128,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,120,0,0,192,120,0,0,192,120,0,0, + 192,60,0,0,192,60,0,0,128,60,0,1,128,28,0,1, + 128,14,0,3,0,14,0,3,0,7,0,6,0,3,128,12, + 0,0,224,56,0,0,127,224,0,33,35,175,38,3,0,255, + 255,252,0,0,7,192,15,0,0,7,128,3,192,0,7,128, + 0,224,0,7,128,0,112,0,7,128,0,120,0,7,128,0, + 60,0,7,128,0,62,0,7,128,0,30,0,7,128,0,31, + 0,7,128,0,31,0,7,128,0,15,0,7,128,0,15,0, + 7,128,0,15,128,7,128,0,15,128,7,128,0,15,128,7, + 128,0,15,128,7,128,0,15,128,7,128,0,15,128,7,128, + 0,15,128,7,128,0,15,128,7,128,0,15,128,7,128,0, + 15,0,7,128,0,31,0,7,128,0,31,0,7,128,0,30, + 0,7,128,0,30,0,7,128,0,60,0,7,128,0,60,0, + 7,128,0,120,0,7,128,0,112,0,7,128,0,224,0,7, + 128,3,192,0,7,192,15,0,0,255,255,252,0,0,28,35, + 140,34,3,0,255,255,255,240,7,192,7,240,7,128,1,240, + 7,128,0,240,7,128,0,112,7,128,0,112,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,16,7,128,32,16, + 7,128,32,16,7,128,32,0,7,128,96,0,7,128,96,0, + 7,128,96,0,7,128,224,0,7,255,224,0,7,129,224,0, + 7,128,96,0,7,128,96,0,7,128,96,0,7,128,32,16, + 7,128,32,16,7,128,32,16,7,128,0,16,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,112,7,128,0,112, + 7,128,0,240,7,128,1,240,255,255,255,240,255,255,255,240, + 27,35,140,34,4,0,255,255,255,224,15,128,15,224,7,128, + 3,224,7,128,1,224,7,128,0,224,7,128,0,224,7,128, + 0,96,7,128,0,96,7,128,0,96,7,128,0,32,7,128, + 32,32,7,128,32,32,7,128,32,0,7,128,96,0,7,128, + 96,0,7,128,96,0,7,128,224,0,7,255,224,0,7,129, + 224,0,7,128,96,0,7,128,96,0,7,128,96,0,7,128, + 32,0,7,128,32,0,7,128,32,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,15,128,0,0,255,254, + 0,0,30,36,144,34,3,0,0,63,128,192,0,224,224,192, + 3,128,56,192,7,0,29,192,14,0,15,192,14,0,7,192, + 28,0,7,192,60,0,3,192,60,0,3,192,124,0,1,192, + 120,0,1,192,120,0,0,192,120,0,0,192,248,0,0,192, + 248,0,0,0,248,0,0,0,248,0,0,0,248,0,0,0, + 248,0,255,252,248,0,255,252,248,0,7,192,248,0,7,192, + 248,0,7,192,248,0,7,192,120,0,7,192,120,0,7,192, + 124,0,7,192,60,0,7,192,60,0,7,192,28,0,15,192, + 30,0,15,192,14,0,28,192,7,0,24,192,3,0,48,192, + 1,192,224,192,0,127,128,192,33,35,175,38,3,0,255,252, + 31,255,128,7,192,0,248,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,255, + 255,240,0,7,128,0,240,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,128, + 0,240,0,7,192,0,248,0,255,252,31,255,128,14,35,70, + 19,3,0,255,252,7,192,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,192,255,252,23,35,105,27,2,0,0, + 127,254,0,7,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,60,3,192,126,3,192,254,3,192, + 254,3,192,252,3,192,224,3,128,224,7,128,96,7,0,112, + 14,0,56,28,0,15,248,0,32,35,140,37,3,0,255,252, + 63,254,7,192,15,240,7,128,7,192,7,128,3,128,7,128, + 7,0,7,128,6,0,7,128,12,0,7,128,28,0,7,128, + 56,0,7,128,112,0,7,128,224,0,7,129,192,0,7,129, + 128,0,7,131,128,0,7,135,128,0,7,143,192,0,7,155, + 224,0,7,179,224,0,7,225,240,0,7,193,240,0,7,128, + 248,0,7,128,248,0,7,128,124,0,7,128,124,0,7,128, + 62,0,7,128,62,0,7,128,31,0,7,128,31,0,7,128, + 15,128,7,128,15,192,7,128,7,192,7,128,7,224,7,128, + 3,224,7,192,7,248,255,252,127,255,27,35,140,33,3,0, + 255,254,0,0,7,192,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,32,7,128,0,96, + 7,128,0,96,7,128,0,96,7,128,0,96,7,128,0,224, + 7,128,0,224,7,128,0,224,7,128,1,224,7,128,3,224, + 7,128,7,224,255,255,255,224,255,255,255,224,36,35,175,41, + 3,0,255,224,0,63,240,7,224,0,62,0,7,224,0,126, + 0,7,240,0,94,0,7,240,0,94,0,6,240,0,222,0, + 6,248,0,222,0,6,248,0,158,0,6,120,0,158,0,6, + 120,1,158,0,6,124,1,158,0,6,60,1,30,0,6,60, + 1,30,0,6,62,3,30,0,6,62,3,30,0,6,30,2, + 30,0,6,30,2,30,0,6,31,6,30,0,6,15,4,30, + 0,6,15,4,30,0,6,15,140,30,0,6,7,140,30,0, + 6,7,136,30,0,6,7,200,30,0,6,7,216,30,0,6, + 3,216,30,0,6,3,208,30,0,6,3,240,30,0,6,1, + 240,30,0,6,1,240,30,0,6,1,224,30,0,6,0,224, + 30,0,15,0,224,30,0,31,128,192,62,0,255,240,195,255, + 240,33,36,180,38,3,255,255,192,7,255,128,7,192,0,252, + 0,7,224,0,120,0,7,240,0,48,0,7,240,0,48,0, + 7,248,0,48,0,6,248,0,48,0,6,124,0,48,0,6, + 126,0,48,0,6,62,0,48,0,6,31,0,48,0,6,31, + 0,48,0,6,15,128,48,0,6,15,192,48,0,6,7,192, + 48,0,6,3,224,48,0,6,3,224,48,0,6,1,240,48, + 0,6,1,248,48,0,6,0,248,48,0,6,0,124,48,0, + 6,0,124,48,0,6,0,62,48,0,6,0,63,48,0,6, + 0,31,48,0,6,0,15,176,0,6,0,15,176,0,6,0, + 7,240,0,6,0,7,240,0,6,0,3,240,0,6,0,1, + 240,0,6,0,1,240,0,15,0,0,240,0,31,128,0,112, + 0,255,240,0,112,0,0,0,0,48,0,28,36,144,33,3, + 0,0,31,128,0,0,240,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,28,0,3, + 128,60,0,3,192,60,0,3,192,124,0,3,224,120,0,1, + 224,120,0,1,224,248,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,124,0,3,224,124,0,3,224,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,15, + 0,7,0,14,0,3,128,28,0,0,224,112,0,0,127,224, + 0,28,35,140,33,3,0,255,255,240,0,7,192,30,0,7, + 128,7,128,7,128,7,192,7,128,3,224,7,128,3,224,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,3,224,7,128,3,224,7, + 128,7,192,7,128,7,128,7,128,30,0,7,255,248,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,192,0,0,255, + 254,0,0,28,44,176,33,3,248,0,31,128,0,0,240,240, + 0,1,192,56,0,3,128,28,0,7,0,14,0,14,0,7, + 0,30,0,7,128,28,0,3,128,60,0,3,192,60,0,3, + 192,124,0,3,224,120,0,1,224,120,0,1,224,248,0,1, + 224,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,120,0,1,224,120,0,1,224,124,0,3, + 224,124,0,3,224,60,15,3,192,60,25,195,192,30,48,199, + 128,14,96,231,128,15,96,111,0,7,96,126,0,3,224,124, + 16,0,240,120,16,0,127,240,16,0,0,112,16,0,0,112, + 16,0,0,120,48,0,0,120,32,0,0,124,96,0,0,63, + 192,0,0,63,192,0,0,15,0,30,35,140,35,3,0,255, + 255,248,0,7,192,62,0,7,128,15,128,7,128,7,192,7, + 128,7,192,7,128,3,224,7,128,3,224,7,128,3,224,7, + 128,3,224,7,128,3,224,7,128,3,192,7,128,7,192,7, + 128,7,128,7,128,15,0,7,128,60,0,7,255,224,0,7, + 128,240,0,7,128,56,0,7,128,28,0,7,128,30,0,7, + 128,30,0,7,128,31,0,7,128,15,0,7,128,15,0,7, + 128,15,0,7,128,15,0,7,128,15,128,7,128,15,132,7, + 128,15,132,7,128,15,132,7,128,15,132,7,128,15,140,7, + 128,7,248,7,192,7,248,255,254,3,240,23,36,108,30,4, + 0,3,240,0,14,28,24,56,7,24,48,3,248,112,1,248, + 96,0,248,224,0,120,224,0,56,224,0,56,224,0,56,224, + 0,24,240,0,24,248,0,8,126,0,8,127,192,0,63,240, + 0,31,252,0,15,255,128,3,255,224,0,255,240,128,63,248, + 128,7,252,128,1,252,192,0,126,192,0,62,192,0,30,224, + 0,14,224,0,14,240,0,14,240,0,14,248,0,12,252,0, + 28,222,0,24,199,0,48,195,128,96,128,255,192,28,35,140, + 35,4,0,255,255,255,240,254,15,131,240,248,15,1,240,240, + 15,0,240,224,15,0,112,192,15,0,112,192,15,0,48,192, + 15,0,48,192,15,0,48,128,15,0,16,128,15,0,16,128, + 15,0,16,128,15,0,16,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,128,0,3,255,254,0,34, + 35,175,39,3,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,34,36,180,37,2,255,255,255,7,255,192,15, + 240,0,126,0,3,224,0,56,0,3,224,0,56,0,3,240, + 0,48,0,1,240,0,48,0,1,240,0,48,0,0,248,0, + 96,0,0,248,0,96,0,0,248,0,96,0,0,124,0,192, + 0,0,124,0,192,0,0,124,0,192,0,0,62,0,192,0, + 0,62,1,128,0,0,62,1,128,0,0,31,1,128,0,0, + 31,3,0,0,0,31,3,0,0,0,15,131,0,0,0,15, + 134,0,0,0,15,134,0,0,0,7,198,0,0,0,7,204, + 0,0,0,3,204,0,0,0,3,236,0,0,0,3,232,0, + 0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0, + 0,0,240,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,96,0,0,0,0,96,0,0,0,0,96,0,0,49,36, + 252,52,2,255,255,254,127,255,15,255,128,15,240,15,248,1, + 248,0,3,224,3,240,0,240,0,3,224,3,224,0,96,0, + 3,224,3,240,0,96,0,1,240,3,240,0,96,0,1,240, + 3,240,0,192,0,1,240,3,240,0,192,0,0,240,7,248, + 0,192,0,0,248,6,248,0,128,0,0,248,6,248,1,128, + 0,0,248,6,124,1,128,0,0,120,14,124,1,128,0,0, + 124,12,124,3,0,0,0,124,12,62,3,0,0,0,60,28, + 62,3,0,0,0,60,24,62,6,0,0,0,60,24,30,6, + 0,0,0,62,24,31,6,0,0,0,30,56,31,12,0,0, + 0,30,48,31,12,0,0,0,30,48,15,140,0,0,0,15, + 48,15,152,0,0,0,15,112,15,152,0,0,0,15,96,7, + 216,0,0,0,15,96,7,208,0,0,0,7,224,7,240,0, + 0,0,7,192,3,240,0,0,0,7,192,3,240,0,0,0, + 3,192,3,224,0,0,0,3,192,3,224,0,0,0,3,128, + 1,224,0,0,0,1,128,1,192,0,0,0,1,128,1,192, + 0,0,0,1,128,0,192,0,0,0,1,0,0,128,0,0, + 33,35,175,36,2,0,127,255,31,255,0,3,240,3,240,0, + 1,240,1,224,0,1,240,1,192,0,0,248,1,128,0,0, + 120,3,0,0,0,124,3,0,0,0,60,6,0,0,0,62, + 14,0,0,0,31,12,0,0,0,31,24,0,0,0,15,152, + 0,0,0,15,176,0,0,0,7,224,0,0,0,7,224,0, + 0,0,3,224,0,0,0,3,224,0,0,0,1,240,0,0, + 0,3,240,0,0,0,3,248,0,0,0,6,248,0,0,0, + 14,124,0,0,0,12,124,0,0,0,24,62,0,0,0,56, + 62,0,0,0,48,31,0,0,0,96,31,0,0,0,224,15, + 128,0,0,192,15,128,0,1,128,7,192,0,3,128,7,192, + 0,3,128,3,224,0,7,128,3,240,0,31,192,3,248,0, + 255,248,63,255,128,32,35,140,35,2,0,255,254,15,255,15, + 224,1,248,7,224,0,240,3,224,0,96,3,240,0,64,1, + 240,0,192,1,248,0,128,0,248,0,128,0,252,1,0,0, + 124,3,0,0,62,2,0,0,62,6,0,0,31,4,0,0, + 31,12,0,0,15,136,0,0,7,216,0,0,7,208,0,0, + 3,240,0,0,3,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,240,0,0,127,255,192,26,35,140,32,3,0,63,255,255, + 192,63,128,15,128,62,0,31,128,60,0,31,0,56,0,62, + 0,56,0,62,0,48,0,124,0,48,0,252,0,96,0,248, + 0,96,1,240,0,64,3,240,0,64,3,224,0,0,7,192, + 0,0,7,192,0,0,15,128,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,252,0, + 0,0,248,0,64,1,240,0,64,3,240,0,64,3,224,0, + 192,7,192,0,192,7,192,0,192,15,128,1,192,31,128,1, + 192,31,0,3,192,62,0,3,192,126,0,7,192,124,0,15, + 128,248,0,63,128,255,255,255,128,10,45,90,19,6,247,255, + 192,254,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,254,0,255,192,16,46,92,22,3,246,192, + 0,192,0,192,0,96,0,96,0,96,0,48,0,48,0,48, + 0,24,0,24,0,24,0,12,0,12,0,12,0,6,0,6, + 0,6,0,2,0,3,0,3,0,3,0,1,128,1,128,1, + 128,0,192,0,192,0,192,0,96,0,96,0,96,0,48,0, + 48,0,48,0,24,0,24,0,24,0,12,0,12,0,12,0, + 6,0,6,0,6,0,3,0,3,0,3,10,45,90,19,3, + 247,255,192,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,31,192,255,192,22,18,54,28,3, + 17,0,16,0,0,48,0,0,56,0,0,120,0,0,108,0, + 0,206,0,1,198,0,1,131,0,3,3,0,7,1,128,6, + 1,192,14,0,192,28,0,96,24,0,112,56,0,48,48,0, + 56,96,0,24,224,0,12,25,2,8,25,0,248,255,255,255, + 128,255,255,255,128,8,9,9,22,4,25,224,240,240,120,60, + 12,6,3,1,21,22,66,24,2,1,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,22,35,105,25, + 1,0,255,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,31,128,15,32,224,15, + 64,240,15,192,112,15,128,120,15,128,120,15,0,120,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,60, + 15,0,60,15,0,60,15,0,120,15,0,120,15,128,120,13, + 128,112,12,192,224,12,96,224,8,63,128,17,22,66,21,2, + 1,7,252,0,14,6,0,28,3,0,56,3,0,56,3,128, + 120,15,128,120,15,128,240,15,128,240,7,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,56,1,0,56,1,0,28,2,0,14,6,0, + 7,248,0,22,35,105,25,2,0,0,63,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 15,227,192,28,19,192,60,11,192,56,15,192,120,7,192,120, + 7,192,120,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,120,3,192, + 120,3,192,120,7,192,56,7,192,60,15,192,28,27,192,7, + 243,252,18,22,66,22,2,1,7,248,0,14,28,0,28,14, + 0,56,15,0,56,7,128,120,7,128,120,7,128,240,7,192, + 240,7,192,240,7,192,255,255,192,240,0,0,240,0,0,240, + 0,0,240,0,128,120,0,128,120,0,128,120,1,128,56,1, + 0,28,3,0,14,6,0,7,252,0,16,35,70,16,1,0, + 0,248,3,198,7,3,15,7,14,15,14,15,30,15,30,6, + 30,0,30,0,30,0,30,0,30,0,255,240,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,255,240,23,33,99,27,3,246,7,252,124,30, + 14,206,60,7,142,124,7,158,120,3,222,120,3,192,120,3, + 192,120,3,192,120,3,192,120,3,192,60,7,128,28,7,128, + 14,14,0,3,248,0,28,0,0,96,0,0,192,0,0,192, + 0,0,224,0,0,255,255,128,127,255,224,15,255,240,28,0, + 112,48,0,56,96,0,24,192,0,24,192,0,24,192,0,24, + 192,0,48,96,0,48,120,0,96,30,7,192,3,254,0,24, + 35,105,27,1,0,255,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,15,192,15, + 48,240,15,32,112,15,64,120,15,128,120,15,128,120,15,0, + 120,15,0,120,15,0,120,15,0,120,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,120,15,0,120,15,0,120,15, + 0,120,15,0,120,15,0,120,15,0,120,255,195,255,10,34, + 68,14,2,0,28,0,62,0,62,0,62,0,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,255,192,13,45,90,16,254,245,0,112, + 0,248,0,248,0,248,0,112,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,248,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,240,120,240,120,240,112, + 224,240,96,224,115,192,31,0,22,35,105,24,1,0,254,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,15,252,30,3,224,30,1,128,30,3, + 0,30,6,0,30,6,0,30,12,0,30,24,0,30,48,0, + 30,120,0,30,248,0,30,188,0,31,190,0,31,30,0,30, + 15,0,30,15,128,30,7,128,30,3,192,30,3,224,30,1, + 224,30,3,240,255,207,252,11,35,70,13,1,0,254,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,255,224,36,22,110,40,2,1,254,63,129,252,0,30,97, + 195,14,0,30,193,230,15,0,30,128,228,7,128,31,0,248, + 7,128,31,0,248,7,128,30,0,240,7,128,30,0,240,7, + 128,30,0,240,7,128,30,0,240,7,128,30,0,240,7,128, + 30,0,240,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,255,199,254,63,240,23,22,66,27,2,1,254,31,128, + 30,97,224,30,192,224,30,128,240,31,0,240,31,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,255,199,254,19, + 22,66,24,2,1,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,22,33,99,25,1,246,254,63,128, + 30,97,192,30,192,224,31,128,112,31,0,120,31,0,120,30, + 0,120,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,120,30,0,120, + 31,0,120,31,0,112,31,128,224,30,192,192,30,127,128,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,255,224,0, + 22,33,99,25,2,246,7,240,64,28,24,192,28,12,192,56, + 12,192,120,7,192,120,7,192,120,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,120,3,192,120,3,192,120,7,192,56,7,192,60, + 15,192,28,27,192,7,243,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,31,252,17,22,66,20,2,1,254, + 31,0,30,35,128,30,67,128,30,207,128,30,143,128,31,143, + 0,31,2,0,31,0,0,31,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,22,3,1,31,226,0,112,50,0,96,30,0, + 192,14,0,192,6,0,224,2,0,240,2,0,252,0,0,127, + 0,0,63,192,0,31,248,0,7,254,0,128,255,0,192,31, + 0,192,7,128,224,3,128,224,1,128,240,1,128,240,1,128, + 248,3,0,198,7,0,131,252,0,14,32,64,17,1,0,2, + 0,2,0,2,0,2,0,2,0,6,0,6,0,6,0,14, + 0,30,0,255,248,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,4,30,4,30,4,30,12,15,8,15,248,7,240,23, + 22,66,27,2,0,254,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,30,1,240,30,1,240,30,2,240,14,6, + 240,15,12,240,3,240,254,24,23,69,26,1,255,255,225,255, + 31,0,124,15,0,48,15,0,48,15,0,32,7,128,96,7, + 128,96,3,192,64,3,192,192,1,192,192,1,224,128,1,225, + 128,0,241,128,0,241,0,0,113,0,0,123,0,0,58,0, + 0,62,0,0,62,0,0,28,0,0,28,0,0,12,0,0, + 8,0,36,23,115,38,1,255,255,231,255,31,240,31,1,248, + 7,128,31,0,240,3,0,15,0,120,3,0,15,0,120,2, + 0,7,128,120,6,0,7,128,252,6,0,3,128,252,4,0, + 3,192,188,12,0,3,192,158,12,0,1,225,158,8,0,1, + 225,14,24,0,0,225,15,24,0,0,243,15,16,0,0,242, + 7,48,0,0,114,7,176,0,0,126,7,160,0,0,62,3, + 224,0,0,60,3,192,0,0,28,1,192,0,0,28,1,192, + 0,0,24,1,128,0,0,8,0,128,0,22,22,66,26,2, + 0,255,207,248,31,3,192,31,3,128,15,3,0,7,131,0, + 7,198,0,3,196,0,1,236,0,1,248,0,0,240,0,0, + 112,0,0,120,0,0,124,0,0,220,0,1,158,0,1,15, + 0,3,15,0,6,7,128,4,7,192,12,3,192,28,3,224, + 255,15,252,24,33,99,26,1,245,255,225,255,31,0,120,15, + 0,48,15,0,48,7,0,32,7,128,96,7,128,96,3,192, + 64,3,192,192,3,192,192,1,224,128,1,225,128,0,225,128, + 0,241,128,0,241,0,0,115,0,0,123,0,0,122,0,0, + 62,0,0,62,0,0,60,0,0,28,0,0,28,0,0,24, + 0,0,24,0,0,24,0,24,48,0,60,48,0,60,48,0, + 60,96,0,56,96,0,31,192,0,15,0,0,17,22,66,22, + 2,0,255,255,128,248,7,128,224,15,0,224,31,0,192,30, + 0,192,60,0,128,124,0,128,120,0,0,240,0,1,240,0, + 1,224,0,3,192,0,7,192,0,7,128,128,15,0,128,31, + 0,128,30,0,128,60,1,128,124,1,128,120,3,128,240,15, + 128,255,255,128,11,45,90,21,6,247,0,224,1,128,7,0, + 14,0,12,0,28,0,28,0,28,0,28,0,30,0,30,0, + 14,0,14,0,15,0,15,0,7,0,7,0,7,0,7,0, + 6,0,4,0,24,0,224,0,56,0,12,0,6,0,6,0, + 7,0,7,0,7,0,15,0,15,0,15,0,14,0,30,0, + 30,0,28,0,28,0,28,0,28,0,12,0,12,0,6,0, + 3,128,0,224,2,46,46,14,6,246,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,45,90,20,4,247,192,0, + 112,0,28,0,12,0,6,0,7,0,7,0,7,0,7,0, + 15,0,15,0,14,0,30,0,30,0,30,0,28,0,28,0, + 28,0,28,0,12,0,4,0,3,0,0,224,3,0,6,0, + 12,0,28,0,28,0,28,0,28,0,30,0,30,0,30,0, + 14,0,15,0,15,0,7,0,7,0,7,0,7,0,6,0, + 6,0,12,0,56,0,224,0,28,9,36,32,2,8,31,128, + 0,192,127,240,0,96,127,252,0,48,227,255,0,48,192,127, + 224,48,192,31,248,112,192,3,255,224,96,0,255,192,48,0, + 31,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,14,0,0,6,33,33,14,4,246,120, + 252,252,252,120,0,0,48,48,48,48,48,48,48,48,48,48, + 48,120,120,120,120,120,120,248,252,252,252,252,252,252,252,120, + 17,34,102,28,5,250,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,7,252,0,14,198,0,28,195, + 0,56,195,128,120,195,128,120,207,128,120,207,128,248,207,128, + 240,199,0,240,192,0,240,192,0,240,192,0,240,192,0,240, + 192,0,248,192,128,120,192,128,120,192,128,120,193,128,56,193, + 0,28,195,0,14,198,0,7,252,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,28,34,136,35, + 3,0,0,0,126,0,0,1,227,128,0,3,128,192,0,7, + 0,192,0,14,0,224,0,14,1,224,0,28,3,224,0,28, + 3,224,0,60,3,192,0,60,0,128,0,60,0,0,0,60, + 0,0,0,60,0,0,0,60,0,0,0,60,0,0,31,252, + 0,0,0,127,248,0,0,124,0,0,0,124,0,0,0,60, + 0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60, + 0,0,0,56,0,0,0,56,0,16,62,56,0,32,99,240, + 0,32,193,240,0,96,128,120,0,64,128,254,0,192,128,159, + 255,128,193,7,255,0,126,1,254,0,24,24,72,28,2,5, + 64,0,2,224,126,7,115,255,206,63,129,252,30,0,120,28, + 0,56,56,0,24,48,0,12,48,0,12,96,0,6,96,0, + 6,96,0,6,96,0,6,96,0,6,96,0,6,112,0,12, + 48,0,12,56,0,28,28,0,56,30,0,120,63,129,252,115, + 255,206,224,126,7,64,0,2,27,33,132,29,1,0,255,224, + 127,224,31,0,15,0,15,0,6,0,15,128,6,0,7,128, + 12,0,7,192,12,0,3,192,24,0,3,224,24,0,1,224, + 48,0,1,240,32,0,0,240,96,0,0,248,64,0,0,248, + 192,0,0,124,128,0,0,125,128,0,0,63,0,0,0,63, + 0,0,15,255,252,0,0,30,0,0,0,30,0,0,0,30, + 0,0,15,255,252,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,31,0,0,3,255, + 240,0,2,44,44,14,6,248,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,18,43,129,31,5,247,1,240,0,6,24,0, + 12,12,0,24,30,0,56,62,0,56,62,0,56,62,0,56, + 8,0,60,0,0,30,0,0,31,0,0,15,128,0,7,192, + 0,15,224,0,25,240,0,48,252,0,96,126,0,64,63,0, + 192,15,128,192,7,128,192,3,192,224,1,192,240,0,192,120, + 0,192,124,0,192,62,0,128,31,1,128,15,131,0,7,198, + 0,3,248,0,1,240,0,0,248,0,0,124,0,0,60,0, + 0,30,0,0,14,0,30,14,0,62,14,0,62,14,0,60, + 12,0,24,28,0,12,56,0,7,224,0,14,5,10,22,4, + 27,112,56,248,124,248,124,248,124,112,56,35,36,180,40,3, + 0,0,7,252,0,0,0,60,7,128,0,0,224,0,192,0, + 1,128,0,48,0,3,0,0,24,0,4,0,0,12,0,8, + 0,0,6,0,24,1,240,131,0,48,7,28,129,0,32,30, + 7,128,128,96,28,3,128,128,64,56,1,128,64,64,120,1, + 128,64,192,120,0,128,64,128,120,0,128,96,128,248,0,0, + 32,128,240,0,0,32,128,240,0,0,32,128,240,0,0,32, + 128,240,0,0,32,128,240,0,0,32,128,240,0,0,32,128, + 248,0,128,96,64,120,0,128,64,64,120,0,128,64,96,56, + 1,128,192,32,60,1,0,128,48,30,3,1,128,16,15,14, + 3,0,24,3,248,2,0,12,0,0,6,0,6,0,0,12, + 0,3,128,0,56,0,0,192,0,96,0,0,120,3,192,0, + 0,31,254,0,0,13,17,34,19,3,17,62,0,99,0,193, + 128,225,128,225,128,3,128,13,128,49,128,113,128,225,128,225, + 136,225,136,247,152,120,240,0,0,0,0,255,240,13,19,38, + 23,5,1,4,0,12,24,24,48,48,32,112,96,96,96,96, + 192,224,192,224,192,224,192,224,192,224,192,224,192,96,192,112, + 96,48,96,56,48,24,16,12,0,23,10,30,29,3,8,255, + 255,254,255,255,254,0,0,6,0,0,6,0,0,6,0,0, + 6,0,0,6,0,0,6,0,0,6,0,0,6,12,3,6, + 18,3,11,255,240,255,240,255,240,35,36,180,40,3,0,0, + 7,252,0,0,0,60,7,128,0,0,224,0,192,0,1,128, + 0,48,0,3,0,0,24,0,4,0,0,12,0,8,0,0, + 6,0,25,255,248,3,0,48,60,30,1,0,32,60,15,0, + 128,96,60,7,128,128,64,60,7,128,64,64,60,7,128,64, + 192,60,7,128,64,128,60,7,128,96,128,60,15,0,32,128, + 60,30,0,32,128,63,240,0,32,128,60,28,0,32,128,60, + 14,0,32,128,60,7,0,32,128,60,7,0,32,128,60,7, + 128,96,64,60,7,128,64,64,60,7,132,64,64,60,7,132, + 192,32,60,7,136,128,48,60,3,201,128,17,255,129,241,0, + 24,0,0,2,0,12,0,0,6,0,6,0,0,12,0,3, + 0,0,24,0,0,192,0,96,0,0,112,1,192,0,0,31, + 254,0,0,13,2,4,21,4,28,255,248,255,248,14,13,26, + 29,8,21,15,192,56,96,112,48,96,24,192,8,192,12,192, + 12,192,12,192,12,96,24,96,24,56,112,15,192,41,34,204, + 45,2,254,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,255,255,255,255,255,128,255,255,255,255,255,128,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,255,255,255,128,255,255,255,255,255,128,14, + 21,42,22,4,13,15,192,49,240,96,120,192,124,192,60,224, + 60,248,60,120,60,48,120,0,112,0,224,1,192,3,128,6, + 0,12,0,48,4,32,4,96,12,127,248,255,248,255,248,14, + 21,42,22,5,13,15,192,56,224,96,112,96,56,112,56,120, + 56,48,56,0,112,0,224,63,128,56,224,0,120,0,56,0, + 60,112,60,248,60,240,60,192,56,192,120,96,240,31,192,8, + 9,9,22,10,25,7,15,15,30,60,48,96,192,128,25,36, + 144,29,3,243,112,1,192,0,240,3,192,0,240,3,224,0, + 240,3,224,0,240,3,224,0,240,3,224,0,240,3,224,0, + 240,3,224,0,240,3,224,0,240,3,224,0,224,3,224,0, + 224,1,192,0,224,1,192,0,96,1,192,0,96,1,192,0, + 96,1,192,0,96,1,128,0,96,3,129,128,112,7,193,128, + 88,15,127,128,79,254,63,128,67,252,31,0,64,0,0,0, + 192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0, + 192,0,0,0,224,0,0,0,224,0,0,0,240,0,0,0, + 240,0,0,0,240,0,0,0,248,0,0,0,120,0,0,0, + 120,0,0,0,20,42,126,26,3,249,7,255,240,31,193,128, + 63,193,128,127,193,128,127,193,128,255,193,128,255,193,128,255, + 193,128,255,193,128,255,193,128,255,193,128,127,193,128,127,193, + 128,63,193,128,15,193,128,0,193,128,0,193,128,0,193,128, + 0,193,128,0,193,128,0,193,128,0,193,128,0,193,128,0, + 193,128,0,193,128,0,193,128,0,193,128,0,193,128,0,193, + 128,0,193,128,0,193,128,0,193,128,0,193,128,0,193,128, + 0,193,128,0,193,128,0,193,128,0,193,128,0,193,128,0, + 193,128,0,193,128,0,193,128,6,6,6,14,4,12,120,252, + 252,252,252,120,10,10,20,21,5,246,8,0,8,0,24,0, + 15,0,3,128,1,192,1,192,1,192,195,128,63,0,11,20, + 40,21,5,14,2,0,6,0,14,0,254,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,255,224,12,17,34,18, + 3,17,15,0,57,192,112,192,96,224,224,96,224,112,224,112, + 224,112,224,112,224,112,96,96,112,224,49,192,31,0,0,0, + 0,0,255,240,13,19,38,23,5,1,1,0,193,128,96,192, + 32,96,48,112,48,48,24,48,24,56,24,56,24,56,24,56, + 24,56,24,56,24,48,48,112,48,96,96,224,64,192,1,128, + 33,35,175,42,5,255,2,0,0,96,0,6,0,0,64,0, + 14,0,0,192,0,254,0,1,128,0,14,0,1,0,0,14, + 0,3,0,0,14,0,2,0,0,14,0,6,0,0,14,0, + 12,0,0,14,0,8,0,0,14,0,24,0,0,14,0,16, + 0,0,14,0,48,0,0,14,0,96,0,0,14,0,96,56, + 0,14,0,192,120,0,14,0,128,120,0,14,1,128,248,0, + 14,3,0,184,0,255,227,1,56,0,0,6,1,56,0,0, + 4,2,56,0,0,12,2,56,0,0,8,4,56,0,0,24, + 12,56,0,0,48,8,56,0,0,32,24,56,0,0,96,31, + 255,128,0,64,0,56,0,0,192,0,56,0,1,128,0,56, + 0,1,128,0,56,0,3,0,0,56,0,2,0,1,255,128, + 6,0,0,0,0,33,35,175,42,5,255,2,0,0,96,0, + 6,0,0,64,0,6,0,0,192,0,14,0,1,128,0,254, + 0,1,128,0,14,0,3,0,0,14,0,2,0,0,14,0, + 6,0,0,14,0,4,0,0,14,0,12,0,0,14,0,24, + 0,0,14,0,16,0,0,14,0,48,0,0,14,0,33,248, + 0,14,0,102,62,0,14,0,204,15,0,14,0,152,15,128, + 14,1,152,7,128,14,1,24,7,128,255,227,31,7,128,0, + 6,31,7,128,0,4,15,7,0,0,12,0,14,0,0,8, + 0,28,0,0,24,0,56,0,0,48,0,112,0,0,48,0, + 192,0,0,96,1,128,0,0,64,2,0,128,0,192,4,0, + 128,1,128,12,1,128,1,128,15,255,0,3,0,15,255,0, + 2,0,31,255,0,6,0,0,0,0,33,35,175,42,5,255, + 15,192,0,48,0,56,224,0,96,0,96,112,0,96,0,96, + 56,0,192,0,112,56,0,128,0,120,56,1,128,0,48,56, + 3,0,0,0,112,3,0,0,0,224,6,0,0,63,128,4, + 0,0,56,224,12,0,0,0,120,24,0,0,0,56,24,0, + 0,0,60,48,0,0,112,60,32,28,0,248,60,96,28,0, + 240,60,192,60,0,192,120,192,92,0,96,241,128,92,0,63, + 193,0,156,0,0,3,1,156,0,0,6,1,28,0,0,6, + 2,28,0,0,12,6,28,0,0,8,4,28,0,0,24,8, + 28,0,0,48,24,28,0,0,48,31,255,128,0,96,0,28, + 0,0,64,0,28,0,0,192,0,28,0,1,128,0,28,0, + 1,128,0,28,0,3,0,1,255,128,2,0,0,0,0,18, + 33,99,24,2,246,1,224,0,3,240,0,3,240,0,3,240, + 0,1,224,0,0,0,0,0,0,0,1,224,0,2,48,0, + 4,24,0,4,24,0,4,24,0,4,24,0,0,48,0,0, + 112,0,0,224,0,1,192,0,7,128,0,15,0,0,30,0, + 0,60,0,0,124,0,0,120,15,0,248,31,128,240,31,192, + 240,15,192,240,0,192,240,0,192,120,0,192,120,1,128,60, + 3,0,15,14,0,3,248,0,34,46,230,37,2,0,0,56, + 0,0,0,0,60,0,0,0,0,60,0,0,0,0,30,0, + 0,0,0,15,0,0,0,0,3,128,0,0,0,1,128,0, + 0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,224,0,0,0,1,224,0,0,0,1,224,0,0,0,3, + 240,0,0,0,3,240,0,0,0,3,240,0,0,0,6,248, + 0,0,0,6,248,0,0,0,6,248,0,0,0,12,124,0, + 0,0,12,124,0,0,0,12,124,0,0,0,24,62,0,0, + 0,24,62,0,0,0,24,30,0,0,0,48,31,0,0,0, + 48,31,0,0,0,48,15,0,0,0,96,15,128,0,0,96, + 15,128,0,0,96,7,128,0,0,255,255,192,0,0,255,255, + 192,0,0,192,3,192,0,1,128,3,224,0,1,128,3,224, + 0,3,128,1,224,0,3,0,1,240,0,3,0,1,240,0, + 7,0,0,240,0,7,0,0,248,0,31,128,1,252,0,255, + 248,31,255,192,34,46,230,37,2,0,0,0,7,0,0,0, + 0,15,0,0,0,0,15,0,0,0,0,30,0,0,0,0, + 60,0,0,0,0,48,0,0,0,0,96,0,0,0,0,192, + 0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,3,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,6,248,0,0,0,6, + 248,0,0,0,6,248,0,0,0,12,124,0,0,0,12,124, + 0,0,0,12,124,0,0,0,24,62,0,0,0,24,62,0, + 0,0,24,30,0,0,0,48,31,0,0,0,48,31,0,0, + 0,48,15,0,0,0,96,15,128,0,0,96,15,128,0,0, + 224,7,128,0,0,255,255,192,0,0,255,255,192,0,1,192, + 3,192,0,1,128,3,224,0,1,128,3,224,0,3,128,1, + 224,0,3,0,1,240,0,3,0,1,240,0,7,0,0,240, + 0,15,128,0,248,0,255,248,31,255,192,255,248,31,255,192, + 34,45,225,37,2,0,0,0,192,0,0,0,1,224,0,0, + 0,3,240,0,0,0,7,56,0,0,0,14,28,0,0,0, + 28,14,0,0,0,48,3,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0, + 0,6,248,0,0,0,6,248,0,0,0,6,248,0,0,0, + 12,124,0,0,0,12,124,0,0,0,12,124,0,0,0,24, + 62,0,0,0,24,62,0,0,0,24,30,0,0,0,48,31, + 0,0,0,48,31,0,0,0,48,15,0,0,0,96,15,128, + 0,0,96,15,128,0,0,96,7,128,0,0,255,255,192,0, + 0,255,255,192,0,0,192,3,192,0,1,128,3,224,0,1, + 128,3,224,0,3,128,1,224,0,3,0,1,240,0,3,0, + 1,240,0,7,0,0,240,0,7,0,0,248,0,31,128,1, + 252,0,255,248,31,255,192,34,45,225,37,2,0,0,15,0, + 128,0,0,31,225,128,0,0,63,255,0,0,0,33,255,0, + 0,0,32,62,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,192,0,0,0,0,192,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,3,240,0,0,0,3,240, + 0,0,0,3,240,0,0,0,6,248,0,0,0,6,248,0, + 0,0,6,248,0,0,0,12,124,0,0,0,12,124,0,0, + 0,12,124,0,0,0,24,62,0,0,0,24,62,0,0,0, + 24,30,0,0,0,48,31,0,0,0,48,31,0,0,0,112, + 15,0,0,0,96,15,128,0,0,96,15,128,0,0,224,7, + 128,0,0,255,255,192,0,0,255,255,192,0,1,192,3,192, + 0,1,128,3,224,0,1,128,3,224,0,3,128,1,224,0, + 3,0,1,240,0,3,0,1,240,0,7,0,0,240,0,15, + 128,0,248,0,255,248,31,255,192,255,248,31,255,192,34,44, + 220,37,2,0,0,28,7,0,0,0,62,15,128,0,0,62, + 15,128,0,0,62,15,128,0,0,28,7,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,64,0,0,0,0,192,0,0,0,0,224,0,0, + 0,0,224,0,0,0,1,224,0,0,0,1,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,3,248,0,0,0,7, + 248,0,0,0,6,120,0,0,0,6,124,0,0,0,14,60, + 0,0,0,12,60,0,0,0,12,62,0,0,0,28,30,0, + 0,0,24,30,0,0,0,24,31,0,0,0,48,15,0,0, + 0,48,15,0,0,0,112,15,128,0,0,96,7,128,0,0, + 96,7,128,0,0,255,255,192,0,0,255,255,192,0,0,192, + 3,192,0,1,192,3,224,0,1,192,1,224,0,1,128,1, + 224,0,3,128,1,240,0,3,128,0,240,0,7,128,0,240, + 0,7,128,0,248,0,31,192,1,252,0,255,248,31,255,192, + 34,47,235,37,2,0,0,1,224,0,0,0,6,24,0,0, + 0,4,8,0,0,0,8,4,0,0,0,8,4,0,0,0, + 8,4,0,0,0,8,4,0,0,0,4,8,0,0,0,6, + 24,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,7,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,1, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,44,35,210,48,1,0,0,0,127,255,255,240,0,0,15, + 224,3,240,0,0,15,192,0,240,0,0,15,192,0,112,0, + 0,15,192,0,112,0,0,27,192,0,48,0,0,27,192,0, + 48,0,0,51,192,0,48,0,0,51,192,0,16,0,0,99, + 192,0,16,0,0,99,192,16,16,0,0,195,192,16,16,0, + 1,195,192,16,0,0,1,131,192,48,0,0,3,131,192,48, + 0,0,3,3,192,48,0,0,7,3,192,112,0,0,6,3, + 255,240,0,0,14,3,192,240,0,0,12,3,192,48,0,0, + 24,3,192,48,0,0,24,3,192,16,0,0,48,3,192,16, + 16,0,63,255,192,16,16,0,96,3,192,16,16,0,96,3, + 192,0,16,0,192,3,192,0,16,0,192,3,192,0,48,1, + 128,3,192,0,48,1,128,3,192,0,112,3,128,3,192,0, + 112,7,128,3,192,0,240,15,128,3,192,1,240,255,248,127, + 255,255,240,255,248,127,255,255,240,26,47,188,32,3,245,0, + 63,0,128,0,225,225,128,3,128,113,128,7,0,63,128,14, + 0,31,128,30,0,15,128,28,0,7,128,60,0,7,128,60, + 0,3,128,124,0,3,128,120,0,1,128,120,0,1,128,120, + 0,0,128,248,0,0,128,248,0,0,0,248,0,0,0,248, + 0,0,0,248,0,0,0,248,0,0,0,248,0,0,0,248, + 0,0,0,248,0,0,0,248,0,0,0,120,0,0,192,120, + 0,0,192,120,0,0,192,124,0,0,192,60,0,0,128,60, + 0,1,128,28,0,1,128,30,0,3,0,14,0,3,0,7, + 0,6,0,3,128,12,0,1,192,56,0,0,127,224,0,0, + 8,0,0,0,8,0,0,0,28,0,0,0,15,128,0,0, + 3,192,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 129,224,0,0,199,192,0,0,63,0,0,28,46,184,34,3, + 0,0,224,0,0,0,240,0,0,0,240,0,0,0,120,0, + 0,0,60,0,0,0,14,0,0,0,6,0,0,0,3,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 240,255,255,255,240,7,128,1,240,7,128,0,240,7,128,0, + 112,7,128,0,112,7,128,0,48,7,128,0,48,7,128,0, + 48,7,128,0,16,7,128,32,16,7,128,32,16,7,128,32, + 0,7,128,96,0,7,128,96,0,7,128,96,0,7,128,224, + 0,7,255,224,0,7,129,224,0,7,128,96,0,7,128,96, + 0,7,128,96,0,7,128,32,16,7,128,32,16,7,128,32, + 16,7,128,0,16,7,128,0,48,7,128,0,48,7,128,0, + 48,7,128,0,112,7,128,0,112,7,128,0,240,7,128,1, + 240,255,255,255,240,255,255,255,240,28,46,184,34,3,0,0, + 0,28,0,0,0,60,0,0,0,60,0,0,0,120,0,0, + 0,240,0,0,0,192,0,0,1,128,0,0,3,0,0,0, + 2,0,0,0,0,0,0,0,0,0,0,255,255,255,240,255, + 255,255,240,7,128,1,240,7,128,0,240,7,128,0,112,7, + 128,0,112,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,16,7,128,32,16,7,128,32,16,7,128,32,0,7, + 128,96,0,7,128,96,0,7,128,96,0,7,128,224,0,7, + 255,224,0,7,129,224,0,7,128,96,0,7,128,96,0,7, + 128,96,0,7,128,32,16,7,128,32,16,7,128,32,16,7, + 128,0,16,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,112,7,128,0,112,7,128,0,240,7,128,1,240,255, + 255,255,240,255,255,255,240,28,45,180,34,3,0,0,3,0, + 0,0,7,128,0,0,15,192,0,0,12,224,0,0,24,112, + 0,0,112,24,0,0,192,12,0,0,0,2,0,0,0,0, + 0,0,0,0,0,255,255,255,240,255,255,255,240,7,128,1, + 240,7,128,0,240,7,128,0,112,7,128,0,112,7,128,0, + 48,7,128,0,48,7,128,0,48,7,128,0,16,7,128,32, + 16,7,128,32,16,7,128,32,0,7,128,96,0,7,128,96, + 0,7,128,96,0,7,128,224,0,7,255,224,0,7,129,224, + 0,7,128,96,0,7,128,96,0,7,128,96,0,7,128,32, + 16,7,128,32,16,7,128,32,16,7,128,0,16,7,128,0, + 48,7,128,0,48,7,128,0,48,7,128,0,112,7,128,0, + 112,7,128,0,240,7,128,1,240,255,255,255,240,255,255,255, + 240,28,44,176,34,3,0,0,112,28,0,0,248,62,0,0, + 248,62,0,0,248,62,0,0,112,28,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,255,255,240,7, + 192,7,240,7,128,1,240,7,128,0,240,7,128,0,112,7, + 128,0,112,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,16,7,128,32,16,7,128,32,16,7,128,32,0,7, + 128,32,0,7,128,96,0,7,128,96,0,7,128,224,0,7, + 255,224,0,7,129,224,0,7,128,96,0,7,128,96,0,7, + 128,32,0,7,128,32,16,7,128,32,16,7,128,32,16,7, + 128,0,16,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,112,7,128,0,112,7,128,0,240,7,128,1,240,255, + 255,255,240,255,255,255,240,14,46,92,19,3,0,224,0,240, + 0,240,0,120,0,60,0,12,0,6,0,3,0,1,0,0, + 0,0,0,255,252,255,252,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,15,128,255,252,14,46,92,19,3,0,0, + 28,0,60,0,60,0,120,0,240,0,192,1,128,3,0,0, + 0,0,0,0,0,255,252,255,252,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,192,255,252,14,45,90,19,3, + 0,3,0,7,128,7,192,14,192,24,96,112,56,192,12,0, + 0,0,0,0,0,255,252,7,192,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,255,252,255,252,15,44,88,20,3, + 0,112,28,248,62,248,62,248,62,112,28,0,0,0,0,0, + 0,0,0,127,254,7,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,7,192,127,254,32,35,140,38,4,0,255, + 255,248,0,15,128,15,0,7,128,3,128,7,128,1,192,7, + 128,0,224,7,128,0,240,7,128,0,120,7,128,0,124,7, + 128,0,60,7,128,0,62,7,128,0,62,7,128,0,30,7, + 128,0,30,7,128,0,31,7,128,0,31,7,128,0,31,255, + 254,0,31,7,128,0,31,7,128,0,31,7,128,0,31,7, + 128,0,31,7,128,0,31,7,128,0,30,7,128,0,62,7, + 128,0,62,7,128,0,60,7,128,0,60,7,128,0,120,7, + 128,0,120,7,128,0,240,7,128,0,224,7,128,1,192,7, + 128,3,128,15,128,30,0,255,255,248,0,33,46,230,38,3, + 255,0,7,1,128,0,0,31,225,128,0,0,31,255,0,0, + 0,16,255,0,0,0,48,62,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,192,7,255,128,255,192,7,255,128,7,224,0, + 120,0,7,240,0,48,0,7,240,0,48,0,7,248,0,48, + 0,6,248,0,48,0,6,252,0,48,0,6,126,0,48,0, + 6,62,0,48,0,6,63,0,48,0,6,31,0,48,0,6, + 15,128,48,0,6,15,192,48,0,6,7,192,48,0,6,7, + 224,48,0,6,3,224,48,0,6,1,240,48,0,6,1,248, + 48,0,6,0,248,48,0,6,0,252,48,0,6,0,124,48, + 0,6,0,62,48,0,6,0,63,48,0,6,0,31,48,0, + 6,0,15,176,0,6,0,15,176,0,6,0,7,240,0,6, + 0,7,240,0,6,0,3,240,0,6,0,1,240,0,6,0, + 1,240,0,15,0,0,240,0,31,128,0,240,0,255,240,0, + 112,0,0,0,0,48,0,28,46,184,33,3,1,1,192,0, + 0,1,224,0,0,1,240,0,0,0,112,0,0,0,56,0, + 0,0,28,0,0,0,12,0,0,0,6,0,0,0,0,0, + 0,0,0,0,0,0,31,128,0,0,255,240,0,1,192,56, + 0,3,128,28,0,7,0,14,0,14,0,7,0,30,0,7, + 128,30,0,7,128,60,0,3,192,60,0,3,192,124,0,3, + 224,124,0,3,224,120,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,120,0,1,224,120,0,1,224,120,0,3,224,124,0,3, + 192,60,0,3,192,60,0,3,192,30,0,7,128,14,0,7, + 0,14,0,7,0,7,0,14,0,3,128,28,0,0,192,48, + 0,0,127,224,0,28,46,184,33,3,1,0,0,56,0,0, + 0,120,0,0,0,248,0,0,0,224,0,0,1,192,0,0, + 3,128,0,0,3,0,0,0,6,0,0,0,0,0,0,0, + 0,0,0,0,31,128,0,0,255,240,0,1,192,56,0,3, + 128,28,0,7,0,14,0,14,0,7,0,30,0,7,128,30, + 0,7,128,60,0,3,192,60,0,3,192,124,0,3,224,124, + 0,3,224,120,0,1,224,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,120, + 0,1,224,120,0,1,224,120,0,3,224,124,0,3,192,60, + 0,3,192,60,0,3,192,30,0,7,128,14,0,7,0,14, + 0,7,0,7,0,14,0,3,128,28,0,0,192,48,0,0, + 127,224,0,28,46,184,33,3,0,0,6,0,0,0,15,0, + 0,0,15,0,0,0,31,128,0,0,57,192,0,0,112,224, + 0,0,192,48,0,3,128,28,0,0,0,0,0,0,0,0, + 0,0,31,128,0,0,255,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,30,0,7, + 128,60,0,3,192,60,0,3,192,124,0,3,224,124,0,3, + 224,120,0,1,224,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,120,0,3,224,124,0,3,192,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,7, + 0,7,0,14,0,3,128,28,0,0,192,48,0,0,127,224, + 0,28,45,180,33,3,0,0,120,12,0,0,255,8,0,1, + 255,248,0,1,143,248,0,1,1,224,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0, + 255,240,0,1,192,56,0,3,128,28,0,7,0,14,0,14, + 0,7,0,30,0,7,128,30,0,7,128,60,0,3,192,60, + 0,3,192,124,0,3,224,124,0,3,224,120,0,1,224,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,120,0,1,224,120,0,1,224,120, + 0,3,224,124,0,3,192,60,0,3,192,60,0,3,192,30, + 0,7,128,14,0,7,0,14,0,7,0,7,0,14,0,3, + 128,28,0,0,192,48,0,0,127,224,0,28,45,180,33,3, + 0,0,224,56,0,1,240,124,0,1,240,124,0,1,240,124, + 0,0,224,56,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,31,128,0,0,240,240,0,1,192,56, + 0,3,128,28,0,7,0,14,0,14,0,7,0,30,0,7, + 128,28,0,3,128,60,0,3,192,60,0,3,192,124,0,3, + 224,120,0,1,224,120,0,1,224,248,0,1,224,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,120,0,1,224,120,0,1,224,124,0,3,224,124,0,3, + 224,60,0,3,192,60,0,3,192,30,0,7,128,14,0,7, + 0,14,0,15,0,7,0,14,0,3,128,28,0,0,224,112, + 0,0,127,224,0,30,30,120,46,8,254,192,0,0,12,224, + 0,0,28,112,0,0,56,56,0,0,112,28,0,0,224,14, + 0,1,192,7,0,3,128,3,128,7,0,1,192,14,0,0, + 224,28,0,0,112,56,0,0,56,112,0,0,28,224,0,0, + 15,192,0,0,7,128,0,0,7,128,0,0,15,192,0,0, + 28,224,0,0,56,112,0,0,112,56,0,0,224,28,0,1, + 192,14,0,3,128,7,0,7,0,3,128,14,0,1,192,28, + 0,0,224,56,0,0,112,112,0,0,56,224,0,0,28,192, + 0,0,12,28,36,144,33,3,0,0,31,128,32,0,240,240, + 96,1,192,56,224,3,128,30,192,7,0,15,128,14,0,7, + 128,30,0,7,128,28,0,7,128,60,0,15,192,60,0,31, + 192,124,0,59,224,120,0,49,224,120,0,97,224,248,0,225, + 240,248,1,193,240,248,1,129,240,248,3,1,240,248,7,1, + 240,248,6,1,240,248,12,1,240,248,28,1,240,248,56,1, + 240,248,48,1,240,120,96,1,224,120,224,1,224,121,192,3, + 224,125,128,3,192,63,0,3,192,63,0,3,192,30,0,7, + 128,30,0,7,0,30,0,15,0,63,0,14,0,51,128,28, + 0,97,192,112,0,192,127,224,0,34,46,230,39,3,1,0, + 28,0,0,0,0,28,0,0,0,0,30,0,0,0,0,15, + 0,0,0,0,7,0,0,0,0,1,128,0,0,0,0,192, + 0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0, + 0,255,252,3,255,192,255,252,3,255,192,7,192,0,126,0, + 7,128,0,60,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,3,192,0, + 24,0,3,192,0,48,0,1,192,0,48,0,1,224,0,96, + 0,0,224,0,96,0,0,112,0,192,0,0,60,3,128,0, + 0,15,254,0,0,34,46,230,39,3,1,0,0,7,0,0, + 0,0,15,0,0,0,0,30,0,0,0,0,28,0,0,0, + 0,56,0,0,0,0,112,0,0,0,0,96,0,0,0,0, + 128,0,0,0,0,0,0,0,0,0,0,0,0,255,252,3, + 255,192,255,252,3,255,192,7,192,0,126,0,7,128,0,60, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,3,192,0,24,0,3,192, + 0,48,0,1,192,0,48,0,1,224,0,96,0,0,224,0, + 96,0,0,112,0,192,0,0,60,3,128,0,0,15,254,0, + 0,34,46,230,39,3,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,3,240,0,0,0,3,56,0,0, + 0,6,28,0,0,0,28,6,0,0,0,48,3,128,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252, + 3,255,192,7,192,0,126,0,7,128,0,60,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,3,192,0,24,0,3,192,0,48,0,3, + 192,0,48,0,1,224,0,96,0,0,240,0,224,0,0,120, + 1,192,0,0,62,7,128,0,0,15,254,0,0,34,45,225, + 39,3,0,0,28,7,0,0,0,62,15,128,0,0,62,15, + 128,0,0,62,15,128,0,0,28,7,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,32,46,184,35,2,0,0,0,3,0,0,0, + 7,128,0,0,15,0,0,0,30,0,0,0,60,0,0,0, + 56,0,0,0,96,0,0,0,192,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,254,15,255,255,254,15,255,7,224, + 0,240,7,224,0,96,3,224,0,96,3,240,0,64,1,240, + 0,192,0,248,0,128,0,252,1,128,0,124,1,0,0,62, + 3,0,0,62,2,0,0,31,6,0,0,31,12,0,0,15, + 136,0,0,7,152,0,0,7,208,0,0,3,240,0,0,3, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,240,0,0,127, + 255,192,28,35,140,33,3,0,255,254,0,0,7,192,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,255,240,0,7,192,30,0,7,128,7,128,7,128,7,192, + 7,128,3,224,7,128,3,224,7,128,1,240,7,128,1,240, + 7,128,1,240,7,128,1,240,7,128,1,240,7,128,1,240, + 7,128,3,224,7,128,3,224,7,128,7,192,7,128,7,128, + 7,128,30,0,7,255,248,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,192,0,0, + 255,254,0,0,22,35,105,26,1,0,0,63,128,0,243,224, + 1,192,240,3,128,240,7,128,248,7,0,120,15,0,120,15, + 0,120,15,0,248,15,0,240,15,0,224,15,1,192,15,3, + 0,15,60,0,15,6,0,15,1,128,15,0,192,15,0,224, + 15,0,112,15,0,120,15,0,120,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,60,15,56, + 60,15,120,60,15,120,60,15,112,120,15,96,112,15,48,224, + 255,31,192,21,33,99,24,2,1,56,0,0,60,0,0,30, + 0,0,14,0,0,7,0,0,3,128,0,1,128,0,0,192, + 0,0,0,0,0,0,0,0,0,0,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,21,33,99,24, + 2,1,0,7,0,0,15,128,0,15,0,0,30,0,0,60, + 0,0,48,0,0,96,0,0,192,0,0,0,0,0,0,0, + 0,0,0,7,248,0,24,30,0,16,15,0,48,7,0,56, + 7,128,60,7,128,62,7,128,28,7,128,0,7,128,0,31, + 128,3,247,128,31,7,128,60,7,128,120,7,128,248,7,128, + 240,7,128,240,15,136,240,15,136,240,23,136,248,23,152,120, + 39,240,63,195,240,21,33,99,24,2,0,0,192,0,0,224, + 0,1,224,0,1,240,0,3,48,0,6,24,0,12,12,0, + 24,2,0,0,0,0,0,0,0,0,0,0,7,248,0,24, + 30,0,16,15,0,48,7,0,56,7,128,60,7,128,62,7, + 128,28,7,128,0,7,128,0,31,128,3,247,128,31,7,128, + 60,7,128,120,7,128,248,7,128,240,7,128,240,15,136,240, + 15,136,240,23,136,248,23,152,120,39,240,63,195,240,21,32, + 96,24,2,0,15,129,0,31,227,0,31,255,0,16,254,0, + 32,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,7,248,0,24,30,0,16,15,0,48,7,0,56,7, + 128,60,7,128,62,7,128,28,7,128,0,7,128,0,31,128, + 3,247,128,31,7,128,60,7,128,120,7,128,248,7,128,240, + 7,128,240,15,136,240,15,136,240,23,136,248,23,152,120,39, + 240,63,195,240,21,32,96,24,2,0,28,14,0,62,31,0, + 62,31,0,62,31,0,28,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,7,248,0,24,30,0,16,15, + 0,48,7,0,56,7,128,60,7,128,62,7,128,28,7,128, + 0,7,128,0,31,128,3,247,128,31,7,128,60,7,128,120, + 7,128,248,7,128,240,7,128,240,15,136,240,15,136,240,23, + 136,248,23,152,120,39,240,63,195,240,21,34,102,24,2,0, + 1,224,0,2,24,0,4,8,0,8,4,0,8,4,0,8, + 4,0,4,12,0,6,24,0,1,240,0,0,0,0,0,0, + 0,0,0,0,7,248,0,24,30,0,16,15,0,48,7,0, + 56,7,128,60,7,128,60,7,128,28,7,128,0,7,128,0, + 31,128,3,247,128,31,7,128,60,7,128,120,7,128,248,7, + 128,240,7,128,240,15,136,240,15,136,240,31,136,248,23,152, + 120,39,240,63,195,240,30,22,88,34,2,1,7,248,63,128, + 24,30,97,224,16,15,224,224,48,7,192,112,56,7,192,120, + 60,7,128,120,62,7,128,120,30,7,128,60,0,7,128,60, + 0,15,128,60,1,247,255,252,15,7,128,0,60,7,128,0, + 120,7,128,0,248,7,128,0,240,7,128,8,240,15,128,8, + 240,11,192,8,240,27,192,16,248,17,224,48,120,32,240,96, + 63,192,127,192,17,32,96,21,2,247,7,252,0,14,6,0, + 28,3,0,56,3,0,56,3,128,120,15,128,120,15,128,240, + 15,128,240,7,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,128,120,0,128,120,0,128,120,1,0, + 56,1,0,28,2,0,14,6,0,7,248,0,0,128,0,0, + 128,0,1,128,0,0,240,0,0,56,0,0,28,0,0,28, + 0,0,28,0,12,56,0,3,240,0,18,33,99,22,2,1, + 60,0,0,60,0,0,30,0,0,15,0,0,7,0,0,3, + 128,0,0,192,0,0,64,0,0,0,0,0,0,0,0,0, + 0,7,248,0,14,28,0,28,14,0,56,15,0,56,7,128, + 120,7,128,120,7,128,240,7,192,240,7,192,240,7,192,255, + 255,192,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,120,1,128,56,1,0,28,3,0,14,6,0, + 7,252,0,18,33,99,22,2,1,0,7,0,0,15,0,0, + 15,0,0,30,0,0,60,0,0,48,0,0,96,0,0,192, + 0,0,0,0,0,0,0,0,0,0,7,248,0,14,28,0, + 28,14,0,56,15,0,56,7,128,120,7,128,120,7,128,240, + 7,192,240,7,192,240,7,192,255,255,192,240,0,0,240,0, + 0,240,0,0,240,0,128,120,0,128,120,0,128,120,1,128, + 56,1,0,28,3,0,14,6,0,7,252,0,18,33,99,22, + 2,0,0,192,0,0,224,0,1,224,0,1,240,0,3,184, + 0,7,24,0,4,12,0,24,2,0,0,0,0,0,0,0, + 0,0,0,7,248,0,14,28,0,28,14,0,56,15,0,56, + 7,128,120,7,128,120,7,128,240,7,192,240,7,192,240,7, + 192,255,255,192,240,0,0,240,0,0,240,0,0,240,0,128, + 120,0,128,120,0,128,120,1,128,56,1,0,28,3,0,14, + 6,0,7,252,0,18,32,96,22,2,0,28,7,0,62,15, + 128,62,15,128,62,15,128,28,7,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,7,248,0,14,12,0,28, + 14,0,60,7,0,56,7,128,120,3,128,120,3,128,240,3, + 192,240,3,192,240,3,192,255,255,192,240,0,0,240,0,0, + 240,0,0,240,0,64,120,0,128,120,0,128,120,0,128,56, + 1,128,28,1,0,14,6,0,7,252,0,12,33,66,14,0, + 1,224,0,240,0,240,0,120,0,60,0,12,0,6,0,3, + 0,0,0,0,0,0,0,63,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,63,240,11,33,66,13,2,1,0,224,1,224,1,224,3, + 192,7,128,6,0,12,0,24,0,0,0,0,0,0,0,254, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,255,192,13,33,66,14,0, + 0,7,0,7,0,7,128,15,128,29,192,24,96,48,48,192, + 24,0,0,0,0,0,0,63,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,63,240,13,32,64,15,1,0,112,112,248,248,248,248,248, + 248,112,112,0,0,0,0,0,0,0,0,0,0,63,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,63,240,19,35,105,24,2,0,31, + 0,0,15,131,128,7,198,0,3,252,0,1,240,0,0,240, + 0,1,248,0,7,124,0,12,60,0,24,30,0,0,31,0, + 0,15,0,0,7,128,3,255,128,14,15,192,28,7,192,60, + 3,192,56,3,224,120,3,224,120,1,224,248,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,240,1,224,240,1,224, + 240,1,224,120,1,192,120,3,192,56,3,192,60,3,128,28, + 7,0,14,14,0,3,252,0,23,32,96,27,2,0,1,224, + 64,3,248,192,7,255,192,6,63,128,4,7,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,31,128,30, + 97,224,30,192,224,30,128,240,31,0,240,31,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,255,199,254,19,33, + 99,24,2,1,28,0,0,30,0,0,30,0,0,15,0,0, + 7,128,0,1,128,0,0,192,0,0,96,0,0,0,0,0, + 0,0,0,0,0,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,19,33,99,24,2,1,0,7,0, + 0,7,128,0,15,0,0,30,0,0,28,0,0,56,0,0, + 96,0,0,64,0,0,0,0,0,0,0,0,0,0,3,252, + 0,14,14,0,28,7,0,60,3,128,56,3,192,120,3,192, + 120,1,224,248,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,3, + 192,56,3,192,60,3,128,28,7,0,14,14,0,3,252,0, + 19,33,99,24,2,0,0,96,0,0,224,0,0,240,0,1, + 240,0,1,184,0,3,24,0,6,4,0,8,3,0,0,0, + 0,0,0,0,0,0,0,3,252,0,14,14,0,28,7,0, + 60,3,128,56,3,192,120,3,192,120,1,224,248,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,120,1,224,120,3,192,56,3,192,60,3,128, + 28,7,0,14,14,0,3,252,0,19,32,96,24,2,0,7, + 129,0,15,225,0,31,255,0,24,254,0,16,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,252,0, + 14,14,0,28,7,0,60,3,128,56,3,192,120,3,192,120, + 1,224,248,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,120,1,224,120,3,192, + 56,3,192,60,3,128,28,7,0,14,14,0,3,252,0,19, + 32,96,24,2,0,14,7,0,31,15,128,31,15,128,31,15, + 128,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,3,252,0,14,14,0,28,7,0,60,3,128,56, + 3,192,120,3,192,120,1,224,248,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,240,1,224,240,1,224, + 120,1,224,120,3,192,56,3,192,60,3,128,28,7,0,14, + 14,0,3,252,0,41,31,186,45,2,253,0,0,30,0,0, + 0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63, + 0,0,0,0,0,63,0,0,0,0,0,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,255,255,255,128,255,255,255,255,255,128,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,30,0,0,0,0,0,63,0,0,0,0,0,63, + 0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0, + 0,30,0,0,0,19,22,66,24,2,1,3,252,96,14,14, + 64,28,7,192,60,3,128,56,3,192,120,7,192,120,13,224, + 248,9,224,240,25,224,240,49,224,240,97,224,240,193,224,240, + 129,224,241,129,224,243,1,224,126,1,224,124,3,192,56,3, + 192,60,3,128,60,7,0,110,14,0,195,252,0,23,33,99, + 27,2,1,14,0,0,15,0,0,7,128,0,3,192,0,1, + 192,0,0,224,0,0,48,0,0,16,0,0,0,0,0,0, + 0,0,0,0,254,7,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,1,240,30,1,240,30,1,240,30,2,240,14,6,240, + 15,12,240,3,240,254,23,33,99,27,2,1,0,1,192,0, + 3,192,0,3,192,0,7,128,0,14,0,0,12,0,0,24, + 0,0,48,0,0,0,0,0,0,0,0,0,0,254,7,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,1,240,30,1,240, + 30,1,240,30,2,240,14,6,240,15,12,240,3,240,254,23, + 33,99,27,2,0,0,48,0,0,56,0,0,120,0,0,124, + 0,0,204,0,1,134,0,3,3,0,6,0,128,0,0,0, + 0,0,0,0,0,0,254,7,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,1,240,30,1,240,30,1,240,30,2,240,14, + 6,240,15,12,240,3,240,254,23,32,96,27,2,0,7,3, + 128,15,135,192,15,135,192,15,135,192,7,3,128,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,7,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,1,240,30,1,240,30, + 1,240,30,2,240,14,6,240,15,12,240,3,240,254,24,45, + 135,26,1,246,0,0,240,0,0,240,0,1,224,0,1,192, + 0,3,128,0,7,0,0,6,0,0,12,0,0,24,0,0, + 0,0,0,0,0,0,0,0,255,225,255,31,0,120,15,0, + 48,15,0,48,7,0,32,7,128,96,7,128,96,3,192,64, + 3,192,192,3,192,192,1,224,128,1,225,128,0,225,128,0, + 241,128,0,241,0,0,115,0,0,123,0,0,122,0,0,62, + 0,0,62,0,0,60,0,0,28,0,0,28,0,0,24,0, + 0,24,0,0,24,0,24,48,0,60,48,0,60,48,0,60, + 96,0,56,96,0,31,192,0,15,0,0,20,46,138,25,2, + 243,30,0,0,126,0,0,254,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,15,192,30,63,224,30,97,240,30,192,240,30,128, + 240,31,128,240,31,0,240,31,0,240,30,0,240,30,0,240, + 30,1,224,30,1,224,30,1,192,30,3,128,30,3,128,30, + 7,0,30,6,0,30,12,0,30,24,0,30,48,0,30,192, + 0,31,128,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,60,0,0,240,0,0,128,0,0,24,43,129,26,1, + 245,1,192,224,3,225,240,3,225,240,3,225,240,1,192,224, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 225,255,31,128,120,15,0,48,15,0,48,7,128,32,7,128, + 96,7,128,96,3,192,64,3,192,64,3,192,192,1,224,128, + 1,224,128,0,225,128,0,241,128,0,241,0,0,115,0,0, + 123,0,0,122,0,0,62,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,24,0,0,24,0,0,24,0,24,48,0, + 60,48,0,60,48,0,60,96,0,56,96,0,31,192,0,15, + 0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 34 + Calculated Max Values w=41 h=46 x= 6 y=14 dx=45 dy= 0 ascent=36 len=246 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x= 0 y=-10 dx= 0 dy= 0 + Pure Font ascent =34 descent= 0 + X Font ascent =34 descent= 0 + Max Font ascent =36 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35n[1560] U8G_SECTION(".progmem.u8g_font_osr35n") = { + 0,128,62,216,241,34,0,0,0,0,42,57,0,36,246,34, + 0,18,20,60,25,4,14,0,224,0,1,224,0,1,224,0, + 1,224,0,96,195,128,240,135,192,248,143,192,124,159,128,7, + 248,0,1,224,0,1,224,0,6,184,0,124,143,128,248,135, + 192,240,195,192,97,193,128,1,224,0,1,224,0,1,224,0, + 0,224,0,41,41,246,45,2,248,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,7, + 15,15,14,4,247,120,252,252,254,126,6,6,6,4,12,8, + 24,48,96,64,12,3,6,18,3,11,255,240,255,240,255,240, + 6,5,5,14,4,1,120,252,252,252,120,16,46,92,22,3, + 246,0,3,0,3,0,3,0,6,0,6,0,6,0,12,0, + 12,0,12,0,24,0,24,0,24,0,48,0,48,0,48,0, + 48,0,96,0,96,0,96,0,192,0,192,0,192,1,128,1, + 128,1,128,3,0,3,0,3,0,6,0,6,0,6,0,12, + 0,12,0,12,0,24,0,24,0,24,0,48,0,48,0,48, + 0,96,0,96,0,96,0,96,0,192,0,192,0,23,34,102, + 28,2,0,0,124,0,1,199,0,7,1,128,6,0,192,14, + 0,224,28,0,112,60,0,120,60,0,120,56,0,56,120,0, + 60,120,0,60,120,0,60,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,120,0,60,120,0,60,120,0,60,120,0, + 60,60,0,120,60,0,120,28,0,112,28,0,112,14,0,224, + 7,1,192,3,131,128,0,254,0,17,34,102,28,6,0,0, + 64,0,0,64,0,0,192,0,0,192,0,1,192,0,7,192, + 0,255,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,255, + 255,128,255,255,128,21,34,102,28,4,0,3,252,0,14,31, + 0,16,7,192,32,3,224,96,1,240,64,1,240,192,0,240, + 192,0,248,224,0,248,252,0,248,254,0,248,126,0,248,126, + 0,240,62,1,240,0,1,224,0,3,192,0,3,128,0,7, + 0,0,14,0,0,28,0,0,112,0,0,224,0,1,192,0, + 3,0,0,6,0,16,12,0,16,24,0,16,16,0,16,48, + 0,48,48,0,112,127,255,240,127,255,240,127,255,240,127,255, + 240,21,34,102,28,4,0,3,248,0,14,31,0,24,7,128, + 48,3,192,112,3,192,120,1,224,124,1,224,126,1,224,126, + 1,224,60,1,224,0,1,224,0,3,192,0,3,192,0,7, + 128,0,14,0,15,248,0,31,143,0,14,3,128,0,3,224, + 0,1,224,0,1,240,0,0,248,0,0,248,0,0,248,60, + 0,248,126,0,248,254,0,248,254,0,248,252,1,240,224,1, + 240,224,3,224,96,3,192,48,15,0,15,254,0,23,34,102, + 28,3,0,0,1,128,0,1,128,0,3,128,0,7,128,0, + 7,128,0,15,128,0,31,128,0,31,128,0,55,128,0,119, + 128,0,231,128,0,199,128,1,199,128,3,135,128,3,7,128, + 6,7,128,14,7,128,12,7,128,24,7,128,56,7,128,48, + 7,128,96,7,128,224,7,128,255,255,254,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,3,255,254,3,255,254,21,35,105,28,4,0,48, + 0,64,60,3,192,63,255,128,63,255,0,63,252,0,55,240, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,0, + 48,0,0,48,0,0,51,254,0,60,7,128,56,3,192,48, + 1,224,48,1,240,48,1,240,0,0,240,0,0,248,0,0, + 248,0,0,248,0,0,248,60,0,248,126,0,248,254,0,248, + 254,0,240,252,1,240,248,1,224,240,1,224,112,3,192,112, + 7,128,60,31,0,15,252,0,21,34,102,28,4,0,0,126, + 0,1,193,128,3,128,192,7,0,64,14,0,224,28,1,224, + 28,3,224,56,3,224,56,3,192,120,0,0,120,0,0,120, + 0,0,120,0,0,240,126,0,241,255,128,243,131,192,247,1, + 224,254,1,240,252,0,240,252,0,240,248,0,248,248,0,120, + 248,0,120,248,0,120,120,0,120,120,0,120,120,0,248,120, + 0,240,56,0,240,60,0,224,28,1,224,14,3,192,7,7, + 128,1,254,0,19,34,102,28,5,0,255,255,224,255,255,224, + 255,255,224,255,255,224,224,0,224,192,0,64,128,0,64,128, + 0,192,128,0,128,128,1,128,0,1,128,0,3,0,0,2, + 0,0,6,0,0,12,0,0,24,0,0,24,0,0,48,0, + 0,112,0,0,112,0,0,224,0,0,224,0,1,224,0,1, + 224,0,3,224,0,3,224,0,3,224,0,7,240,0,7,240, + 0,7,240,0,7,240,0,7,240,0,3,240,0,3,224,0, + 23,34,102,28,3,0,1,254,0,7,135,128,30,1,192,56, + 0,224,120,0,112,112,0,112,240,0,56,240,0,56,240,0, + 56,240,0,56,248,0,56,252,0,112,126,0,112,127,192,224, + 63,241,192,31,255,0,7,255,128,7,255,224,12,63,248,56, + 7,252,112,1,252,112,0,126,224,0,62,224,0,62,224,0, + 62,224,0,30,224,0,30,224,0,28,96,0,60,112,0,56, + 48,0,120,24,0,240,14,1,192,3,255,0,21,34,102,28, + 4,0,1,248,0,7,142,0,14,3,0,28,1,128,56,1, + 192,120,1,224,120,0,224,120,0,240,240,0,240,240,0,240, + 240,0,240,240,0,248,240,0,248,248,0,248,120,1,248,120, + 1,248,120,3,248,60,7,120,30,14,120,15,252,120,3,240, + 120,0,0,240,0,0,240,0,0,240,0,0,240,60,0,224, + 124,0,224,124,1,192,124,1,192,120,3,128,112,3,0,56, + 6,0,28,28,0,15,248,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 6 y=26 dx=52 dy= 0 ascent=37 len=252 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =36 descent=-10 + Max Font ascent =37 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35r[10371] U8G_SECTION(".progmem.u8g_font_osr35r") = { + 0,128,62,216,241,35,12,236,30,116,32,127,246,37,245,36, + 246,0,0,0,14,0,0,6,34,34,14,4,0,120,252,252, + 252,252,252,252,252,252,120,120,120,120,120,120,48,48,48,48, + 48,48,48,48,48,48,48,0,0,0,120,252,252,252,120,11, + 10,20,19,4,26,224,224,224,224,224,224,224,224,224,224,224, + 224,64,64,64,64,64,64,64,64,26,34,136,34,4,0,0, + 48,24,0,0,48,24,0,0,112,24,0,0,96,24,0,0, + 96,56,0,0,96,56,0,0,96,48,0,0,96,48,0,0, + 96,48,0,0,224,48,0,255,255,255,192,255,255,255,192,0, + 192,96,0,0,192,96,0,0,192,96,0,1,192,96,0,1, + 128,96,0,1,128,224,0,1,128,192,0,1,128,192,0,1, + 128,192,0,3,128,192,0,255,255,255,192,255,255,255,192,3, + 1,128,0,3,1,128,0,3,1,128,0,7,1,128,0,7, + 1,128,0,6,1,128,0,6,3,128,0,6,3,0,0,6, + 3,0,0,6,3,0,0,22,41,123,29,3,252,0,204,0, + 0,204,0,0,204,0,1,254,0,7,207,192,12,204,96,24, + 204,48,48,204,24,32,204,24,96,204,28,96,204,60,96,204, + 124,96,204,124,112,204,120,120,204,120,62,204,0,63,204,0, + 31,252,0,15,252,0,7,255,128,1,255,192,0,255,224,0, + 207,240,0,205,248,0,204,120,48,204,60,120,204,28,248,204, + 28,248,204,12,240,204,12,240,204,8,224,204,24,96,204,24, + 96,204,48,48,204,96,28,205,192,7,255,128,0,204,0,0, + 204,0,0,204,0,0,204,0,33,34,170,43,5,0,15,128, + 0,48,0,24,192,0,96,0,48,96,0,64,0,112,112,0, + 192,0,96,48,1,128,0,224,56,1,128,0,224,56,3,0, + 0,224,56,2,0,0,224,56,6,0,0,224,56,12,0,0, + 224,56,12,0,0,224,56,24,0,0,96,48,48,0,0,96, + 112,48,0,0,48,96,96,0,0,24,192,64,0,0,15,128, + 192,0,0,0,1,128,248,0,0,1,129,140,0,0,3,3, + 6,0,0,2,6,7,0,0,6,6,3,0,0,12,14,3, + 128,0,8,14,3,128,0,24,14,3,128,0,48,14,3,128, + 0,48,14,3,128,0,96,14,3,128,0,64,14,3,128,0, + 192,6,3,0,1,128,6,3,0,1,128,7,7,0,3,0, + 3,14,0,6,0,1,252,0,33,34,170,39,3,0,0,63, + 0,0,0,0,227,128,0,0,1,128,192,0,0,3,128,64, + 0,0,3,0,96,0,0,7,0,96,0,0,7,0,96,0, + 0,7,0,224,0,0,7,0,192,0,0,7,129,192,0,0, + 7,131,128,0,0,3,199,0,0,0,3,238,0,0,0,1, + 248,0,0,0,0,248,7,255,128,1,248,0,252,0,3,252, + 0,112,0,7,62,0,112,0,14,63,0,96,0,28,31,0, + 96,0,60,15,128,192,0,56,7,192,192,0,120,7,193,128, + 0,120,3,225,128,0,240,1,243,0,0,240,1,254,0,0, + 240,0,254,0,0,240,0,124,0,0,248,0,62,0,0,248, + 0,62,1,0,120,0,127,1,0,60,0,207,130,0,30,3, + 135,252,0,15,254,1,248,0,3,10,10,11,4,26,224,224, + 224,224,224,224,64,64,64,64,11,46,92,18,5,246,0,64, + 0,224,1,192,3,128,3,0,6,0,14,0,12,0,28,0, + 24,0,56,0,48,0,48,0,112,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,224,0,96,0,96,0,96,0,112,0, + 48,0,48,0,56,0,24,0,28,0,12,0,14,0,6,0, + 3,0,3,128,1,192,0,224,0,64,11,45,90,18,2,246, + 64,0,96,0,112,0,56,0,28,0,12,0,14,0,6,0, + 3,0,3,0,3,128,1,128,1,192,0,192,0,192,0,192, + 0,224,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,224,0,192,0,192, + 0,192,1,128,1,128,3,128,3,0,7,0,6,0,14,0, + 12,0,24,0,56,0,112,0,224,0,18,20,60,25,4,14, + 0,224,0,1,224,0,1,224,0,1,224,0,96,195,128,240, + 135,192,248,143,192,124,159,128,7,248,0,1,224,0,1,224, + 0,6,184,0,124,143,128,248,135,192,240,195,192,97,193,128, + 1,224,0,1,224,0,1,224,0,0,224,0,41,41,246,45, + 2,248,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,255,255,255,255,255,128,255,255,255,255,255,128, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,7,15,15,14,4,247,120,252, + 252,254,126,6,6,6,4,12,8,24,48,96,64,12,3,6, + 18,3,11,255,240,255,240,255,240,6,5,5,14,4,1,120, + 252,252,252,120,16,46,92,22,3,246,0,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,128,1,128,1,128,3,0,3,0, + 3,0,6,0,6,0,6,0,12,0,12,0,12,0,24,0, + 24,0,24,0,48,0,48,0,48,0,96,0,96,0,96,0, + 96,0,192,0,192,0,23,34,102,28,2,0,0,124,0,1, + 199,0,7,1,128,6,0,192,14,0,224,28,0,112,60,0, + 120,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,120,0, + 60,120,0,60,120,0,60,120,0,60,60,0,120,60,0,120, + 28,0,112,28,0,112,14,0,224,7,1,192,3,131,128,0, + 254,0,17,34,102,28,6,0,0,64,0,0,64,0,0,192, + 0,0,192,0,1,192,0,7,192,0,255,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,255,255,128,255,255,128,21,34, + 102,28,4,0,3,252,0,14,31,0,16,7,192,32,3,224, + 96,1,240,64,1,240,192,0,240,192,0,248,224,0,248,252, + 0,248,254,0,248,126,0,248,126,0,240,62,1,240,0,1, + 224,0,3,192,0,3,128,0,7,0,0,14,0,0,28,0, + 0,112,0,0,224,0,1,192,0,3,0,0,6,0,16,12, + 0,16,24,0,16,16,0,16,48,0,48,48,0,112,127,255, + 240,127,255,240,127,255,240,127,255,240,21,34,102,28,4,0, + 3,248,0,14,31,0,24,7,128,48,3,192,112,3,192,120, + 1,224,124,1,224,126,1,224,126,1,224,60,1,224,0,1, + 224,0,3,192,0,3,192,0,7,128,0,14,0,15,248,0, + 31,143,0,14,3,128,0,3,224,0,1,224,0,1,240,0, + 0,248,0,0,248,0,0,248,60,0,248,126,0,248,254,0, + 248,254,0,248,252,1,240,224,1,240,224,3,224,96,3,192, + 48,15,0,15,254,0,23,34,102,28,3,0,0,1,128,0, + 1,128,0,3,128,0,7,128,0,7,128,0,15,128,0,31, + 128,0,31,128,0,55,128,0,119,128,0,231,128,0,199,128, + 1,199,128,3,135,128,3,7,128,6,7,128,14,7,128,12, + 7,128,24,7,128,56,7,128,48,7,128,96,7,128,224,7, + 128,255,255,254,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,3,255,254,3, + 255,254,21,35,105,28,4,0,48,0,64,60,3,192,63,255, + 128,63,255,0,63,252,0,55,240,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,51, + 254,0,60,7,128,56,3,192,48,1,224,48,1,240,48,1, + 240,0,0,240,0,0,248,0,0,248,0,0,248,0,0,248, + 60,0,248,126,0,248,254,0,248,254,0,240,252,1,240,248, + 1,224,240,1,224,112,3,192,112,7,128,60,31,0,15,252, + 0,21,34,102,28,4,0,0,126,0,1,193,128,3,128,192, + 7,0,64,14,0,224,28,1,224,28,3,224,56,3,224,56, + 3,192,120,0,0,120,0,0,120,0,0,120,0,0,240,126, + 0,241,255,128,243,131,192,247,1,224,254,1,240,252,0,240, + 252,0,240,248,0,248,248,0,120,248,0,120,248,0,120,120, + 0,120,120,0,120,120,0,248,120,0,240,56,0,240,60,0, + 224,28,1,224,14,3,192,7,7,128,1,254,0,19,34,102, + 28,5,0,255,255,224,255,255,224,255,255,224,255,255,224,224, + 0,224,192,0,64,128,0,64,128,0,192,128,0,128,128,1, + 128,0,1,128,0,3,0,0,2,0,0,6,0,0,12,0, + 0,24,0,0,24,0,0,48,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,224,0,1,224,0,3,224,0,3,224, + 0,3,224,0,7,240,0,7,240,0,7,240,0,7,240,0, + 7,240,0,3,240,0,3,224,0,23,34,102,28,3,0,1, + 254,0,7,135,128,30,1,192,56,0,224,120,0,112,112,0, + 112,240,0,56,240,0,56,240,0,56,240,0,56,248,0,56, + 252,0,112,126,0,112,127,192,224,63,241,192,31,255,0,7, + 255,128,7,255,224,12,63,248,56,7,252,112,1,252,112,0, + 126,224,0,62,224,0,62,224,0,62,224,0,30,224,0,30, + 224,0,28,96,0,60,112,0,56,48,0,120,24,0,240,14, + 1,192,3,255,0,21,34,102,28,4,0,1,248,0,7,142, + 0,14,3,0,28,1,128,56,1,192,120,1,224,120,0,224, + 120,0,240,240,0,240,240,0,240,240,0,240,240,0,248,240, + 0,248,248,0,248,120,1,248,120,1,248,120,3,248,60,7, + 120,30,14,120,15,252,120,3,240,120,0,0,240,0,0,240, + 0,0,240,0,0,240,60,0,224,124,0,224,124,1,192,124, + 1,192,120,3,128,112,3,0,56,6,0,28,28,0,15,248, + 0,6,22,22,14,4,1,120,252,252,252,120,0,0,0,0, + 0,0,0,0,0,0,0,0,120,252,252,252,120,7,31,31, + 14,4,248,120,252,252,252,120,0,0,0,0,0,0,0,0, + 0,0,0,120,252,252,254,126,14,6,6,4,12,8,24,48, + 96,64,38,40,200,46,4,249,0,0,0,0,28,0,0,0, + 0,120,0,0,0,1,240,0,0,0,7,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,192,0, + 0,0,15,0,0,0,0,62,0,0,0,0,248,0,0,0, + 1,224,0,0,0,7,128,0,0,0,30,0,0,0,0,120, + 0,0,0,1,224,0,0,0,7,192,0,0,0,31,0,0, + 0,0,60,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,124,0,0,0,0,31,0,0,0,0,7,128,0,0,0, + 1,224,0,0,0,0,120,0,0,0,0,30,0,0,0,0, + 7,128,0,0,0,3,224,0,0,0,0,248,0,0,0,0, + 60,0,0,0,0,15,0,0,0,0,3,192,0,0,0,0, + 240,0,0,0,0,60,0,0,0,0,31,0,0,0,0,7, + 192,0,0,0,1,224,0,0,0,0,120,0,0,0,0,28, + 41,11,66,45,2,7,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,128,255,255,255,255,255,128,38,40,200,46,4,249,224,0, + 0,0,0,120,0,0,0,0,62,0,0,0,0,15,128,0, + 0,0,3,192,0,0,0,0,240,0,0,0,0,60,0,0, + 0,0,15,0,0,0,0,3,192,0,0,0,1,240,0,0, + 0,0,124,0,0,0,0,30,0,0,0,0,7,128,0,0, + 0,1,224,0,0,0,0,120,0,0,0,0,30,0,0,0, + 0,15,128,0,0,0,3,224,0,0,0,0,240,0,0,0, + 0,60,0,0,0,0,60,0,0,0,0,248,0,0,0,3, + 224,0,0,0,7,128,0,0,0,30,0,0,0,0,120,0, + 0,0,1,224,0,0,0,7,128,0,0,0,31,0,0,0, + 0,124,0,0,0,0,240,0,0,0,3,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,224,0, + 0,0,15,128,0,0,0,30,0,0,0,0,120,0,0,0, + 0,224,0,0,0,0,18,34,102,23,3,0,7,240,0,28, + 60,0,48,15,0,96,7,128,192,7,128,192,3,192,192,3, + 192,248,3,192,252,3,192,124,7,192,56,7,128,0,15,128, + 0,31,0,0,62,0,0,124,0,0,240,0,0,224,0,1, + 192,0,3,0,0,6,0,0,14,8,0,12,8,0,12,8, + 0,12,8,0,6,16,0,3,224,0,0,0,0,0,0,0, + 0,0,0,1,224,0,3,240,0,3,240,0,3,240,0,1, + 224,0,35,36,180,40,2,0,0,3,254,0,0,0,30,7, + 192,0,0,112,0,112,0,1,192,0,24,0,3,128,0,12, + 0,7,0,0,6,0,14,0,0,3,0,28,0,120,1,0, + 24,1,196,225,128,56,7,7,224,128,48,14,3,224,192,112, + 12,3,192,192,96,28,3,192,64,96,56,3,192,96,224,56, + 3,192,96,192,120,3,128,96,192,112,7,128,96,192,112,7, + 128,96,192,240,7,128,96,192,224,7,0,96,192,224,15,0, + 224,192,224,15,0,192,192,224,14,0,192,96,224,30,1,128, + 96,224,62,1,128,96,224,62,3,0,96,96,78,6,0,48, + 49,143,12,0,48,31,7,240,0,24,0,0,0,0,12,0, + 0,0,0,6,0,0,0,0,3,0,0,0,0,1,192,0, + 112,0,0,112,1,192,0,0,31,255,0,0,34,35,175,37, + 2,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,15,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,0, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,28,35,140,34,3,0,255,255,240,0,7,192,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,1,224,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,3,192,7,128,3,128,7, + 128,7,0,7,128,30,0,7,255,240,0,7,128,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,3,224,7, + 128,1,224,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,3,224,7, + 128,3,224,7,128,7,192,7,128,15,128,7,192,62,0,255, + 255,240,0,26,36,144,32,3,0,0,63,0,128,0,225,224, + 128,3,128,113,128,7,0,63,128,14,0,31,128,30,0,15, + 128,28,0,7,128,60,0,3,128,60,0,3,128,124,0,3, + 128,120,0,1,128,120,0,1,128,120,0,0,128,248,0,0, + 128,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,120,0,0,192,120,0,0,192,120,0,0, + 192,60,0,0,192,60,0,0,128,60,0,1,128,28,0,1, + 128,14,0,3,0,14,0,3,0,7,0,6,0,3,128,12, + 0,0,224,56,0,0,127,224,0,33,35,175,38,3,0,255, + 255,252,0,0,7,192,15,0,0,7,128,3,192,0,7,128, + 0,224,0,7,128,0,112,0,7,128,0,120,0,7,128,0, + 60,0,7,128,0,62,0,7,128,0,30,0,7,128,0,31, + 0,7,128,0,31,0,7,128,0,15,0,7,128,0,15,0, + 7,128,0,15,128,7,128,0,15,128,7,128,0,15,128,7, + 128,0,15,128,7,128,0,15,128,7,128,0,15,128,7,128, + 0,15,128,7,128,0,15,128,7,128,0,15,128,7,128,0, + 15,0,7,128,0,31,0,7,128,0,31,0,7,128,0,30, + 0,7,128,0,30,0,7,128,0,60,0,7,128,0,60,0, + 7,128,0,120,0,7,128,0,112,0,7,128,0,224,0,7, + 128,3,192,0,7,192,15,0,0,255,255,252,0,0,28,35, + 140,34,3,0,255,255,255,240,7,192,7,240,7,128,1,240, + 7,128,0,240,7,128,0,112,7,128,0,112,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,16,7,128,32,16, + 7,128,32,16,7,128,32,0,7,128,96,0,7,128,96,0, + 7,128,96,0,7,128,224,0,7,255,224,0,7,129,224,0, + 7,128,96,0,7,128,96,0,7,128,96,0,7,128,32,16, + 7,128,32,16,7,128,32,16,7,128,0,16,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,112,7,128,0,112, + 7,128,0,240,7,128,1,240,255,255,255,240,255,255,255,240, + 27,35,140,34,4,0,255,255,255,224,15,128,15,224,7,128, + 3,224,7,128,1,224,7,128,0,224,7,128,0,224,7,128, + 0,96,7,128,0,96,7,128,0,96,7,128,0,32,7,128, + 32,32,7,128,32,32,7,128,32,0,7,128,96,0,7,128, + 96,0,7,128,96,0,7,128,224,0,7,255,224,0,7,129, + 224,0,7,128,96,0,7,128,96,0,7,128,96,0,7,128, + 32,0,7,128,32,0,7,128,32,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,15,128,0,0,255,254, + 0,0,30,36,144,34,3,0,0,63,128,192,0,224,224,192, + 3,128,56,192,7,0,29,192,14,0,15,192,14,0,7,192, + 28,0,7,192,60,0,3,192,60,0,3,192,124,0,1,192, + 120,0,1,192,120,0,0,192,120,0,0,192,248,0,0,192, + 248,0,0,0,248,0,0,0,248,0,0,0,248,0,0,0, + 248,0,255,252,248,0,255,252,248,0,7,192,248,0,7,192, + 248,0,7,192,248,0,7,192,120,0,7,192,120,0,7,192, + 124,0,7,192,60,0,7,192,60,0,7,192,28,0,15,192, + 30,0,15,192,14,0,28,192,7,0,24,192,3,0,48,192, + 1,192,224,192,0,127,128,192,33,35,175,38,3,0,255,252, + 31,255,128,7,192,0,248,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,255, + 255,240,0,7,128,0,240,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,128, + 0,240,0,7,192,0,248,0,255,252,31,255,128,14,35,70, + 19,3,0,255,252,7,192,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,192,255,252,23,35,105,27,2,0,0, + 127,254,0,7,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,60,3,192,126,3,192,254,3,192, + 254,3,192,252,3,192,224,3,128,224,7,128,96,7,0,112, + 14,0,56,28,0,15,248,0,32,35,140,37,3,0,255,252, + 63,254,7,192,15,240,7,128,7,192,7,128,3,128,7,128, + 7,0,7,128,6,0,7,128,12,0,7,128,28,0,7,128, + 56,0,7,128,112,0,7,128,224,0,7,129,192,0,7,129, + 128,0,7,131,128,0,7,135,128,0,7,143,192,0,7,155, + 224,0,7,179,224,0,7,225,240,0,7,193,240,0,7,128, + 248,0,7,128,248,0,7,128,124,0,7,128,124,0,7,128, + 62,0,7,128,62,0,7,128,31,0,7,128,31,0,7,128, + 15,128,7,128,15,192,7,128,7,192,7,128,7,224,7,128, + 3,224,7,192,7,248,255,252,127,255,27,35,140,33,3,0, + 255,254,0,0,7,192,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,32,7,128,0,96, + 7,128,0,96,7,128,0,96,7,128,0,96,7,128,0,224, + 7,128,0,224,7,128,0,224,7,128,1,224,7,128,3,224, + 7,128,7,224,255,255,255,224,255,255,255,224,36,35,175,41, + 3,0,255,224,0,63,240,7,224,0,62,0,7,224,0,126, + 0,7,240,0,94,0,7,240,0,94,0,6,240,0,222,0, + 6,248,0,222,0,6,248,0,158,0,6,120,0,158,0,6, + 120,1,158,0,6,124,1,158,0,6,60,1,30,0,6,60, + 1,30,0,6,62,3,30,0,6,62,3,30,0,6,30,2, + 30,0,6,30,2,30,0,6,31,6,30,0,6,15,4,30, + 0,6,15,4,30,0,6,15,140,30,0,6,7,140,30,0, + 6,7,136,30,0,6,7,200,30,0,6,7,216,30,0,6, + 3,216,30,0,6,3,208,30,0,6,3,240,30,0,6,1, + 240,30,0,6,1,240,30,0,6,1,224,30,0,6,0,224, + 30,0,15,0,224,30,0,31,128,192,62,0,255,240,195,255, + 240,33,36,180,38,3,255,255,192,7,255,128,7,192,0,252, + 0,7,224,0,120,0,7,240,0,48,0,7,240,0,48,0, + 7,248,0,48,0,6,248,0,48,0,6,124,0,48,0,6, + 126,0,48,0,6,62,0,48,0,6,31,0,48,0,6,31, + 0,48,0,6,15,128,48,0,6,15,192,48,0,6,7,192, + 48,0,6,3,224,48,0,6,3,224,48,0,6,1,240,48, + 0,6,1,248,48,0,6,0,248,48,0,6,0,124,48,0, + 6,0,124,48,0,6,0,62,48,0,6,0,63,48,0,6, + 0,31,48,0,6,0,15,176,0,6,0,15,176,0,6,0, + 7,240,0,6,0,7,240,0,6,0,3,240,0,6,0,1, + 240,0,6,0,1,240,0,15,0,0,240,0,31,128,0,112, + 0,255,240,0,112,0,0,0,0,48,0,28,36,144,33,3, + 0,0,31,128,0,0,240,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,28,0,3, + 128,60,0,3,192,60,0,3,192,124,0,3,224,120,0,1, + 224,120,0,1,224,248,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,124,0,3,224,124,0,3,224,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,15, + 0,7,0,14,0,3,128,28,0,0,224,112,0,0,127,224, + 0,28,35,140,33,3,0,255,255,240,0,7,192,30,0,7, + 128,7,128,7,128,7,192,7,128,3,224,7,128,3,224,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,3,224,7,128,3,224,7, + 128,7,192,7,128,7,128,7,128,30,0,7,255,248,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,192,0,0,255, + 254,0,0,28,44,176,33,3,248,0,31,128,0,0,240,240, + 0,1,192,56,0,3,128,28,0,7,0,14,0,14,0,7, + 0,30,0,7,128,28,0,3,128,60,0,3,192,60,0,3, + 192,124,0,3,224,120,0,1,224,120,0,1,224,248,0,1, + 224,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,120,0,1,224,120,0,1,224,124,0,3, + 224,124,0,3,224,60,15,3,192,60,25,195,192,30,48,199, + 128,14,96,231,128,15,96,111,0,7,96,126,0,3,224,124, + 16,0,240,120,16,0,127,240,16,0,0,112,16,0,0,112, + 16,0,0,120,48,0,0,120,32,0,0,124,96,0,0,63, + 192,0,0,63,192,0,0,15,0,30,35,140,35,3,0,255, + 255,248,0,7,192,62,0,7,128,15,128,7,128,7,192,7, + 128,7,192,7,128,3,224,7,128,3,224,7,128,3,224,7, + 128,3,224,7,128,3,224,7,128,3,192,7,128,7,192,7, + 128,7,128,7,128,15,0,7,128,60,0,7,255,224,0,7, + 128,240,0,7,128,56,0,7,128,28,0,7,128,30,0,7, + 128,30,0,7,128,31,0,7,128,15,0,7,128,15,0,7, + 128,15,0,7,128,15,0,7,128,15,128,7,128,15,132,7, + 128,15,132,7,128,15,132,7,128,15,132,7,128,15,140,7, + 128,7,248,7,192,7,248,255,254,3,240,23,36,108,30,4, + 0,3,240,0,14,28,24,56,7,24,48,3,248,112,1,248, + 96,0,248,224,0,120,224,0,56,224,0,56,224,0,56,224, + 0,24,240,0,24,248,0,8,126,0,8,127,192,0,63,240, + 0,31,252,0,15,255,128,3,255,224,0,255,240,128,63,248, + 128,7,252,128,1,252,192,0,126,192,0,62,192,0,30,224, + 0,14,224,0,14,240,0,14,240,0,14,248,0,12,252,0, + 28,222,0,24,199,0,48,195,128,96,128,255,192,28,35,140, + 35,4,0,255,255,255,240,254,15,131,240,248,15,1,240,240, + 15,0,240,224,15,0,112,192,15,0,112,192,15,0,48,192, + 15,0,48,192,15,0,48,128,15,0,16,128,15,0,16,128, + 15,0,16,128,15,0,16,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,128,0,3,255,254,0,34, + 35,175,39,3,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,34,36,180,37,2,255,255,255,7,255,192,15, + 240,0,126,0,3,224,0,56,0,3,224,0,56,0,3,240, + 0,48,0,1,240,0,48,0,1,240,0,48,0,0,248,0, + 96,0,0,248,0,96,0,0,248,0,96,0,0,124,0,192, + 0,0,124,0,192,0,0,124,0,192,0,0,62,0,192,0, + 0,62,1,128,0,0,62,1,128,0,0,31,1,128,0,0, + 31,3,0,0,0,31,3,0,0,0,15,131,0,0,0,15, + 134,0,0,0,15,134,0,0,0,7,198,0,0,0,7,204, + 0,0,0,3,204,0,0,0,3,236,0,0,0,3,232,0, + 0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0, + 0,0,240,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,96,0,0,0,0,96,0,0,0,0,96,0,0,49,36, + 252,52,2,255,255,254,127,255,15,255,128,15,240,15,248,1, + 248,0,3,224,3,240,0,240,0,3,224,3,224,0,96,0, + 3,224,3,240,0,96,0,1,240,3,240,0,96,0,1,240, + 3,240,0,192,0,1,240,3,240,0,192,0,0,240,7,248, + 0,192,0,0,248,6,248,0,128,0,0,248,6,248,1,128, + 0,0,248,6,124,1,128,0,0,120,14,124,1,128,0,0, + 124,12,124,3,0,0,0,124,12,62,3,0,0,0,60,28, + 62,3,0,0,0,60,24,62,6,0,0,0,60,24,30,6, + 0,0,0,62,24,31,6,0,0,0,30,56,31,12,0,0, + 0,30,48,31,12,0,0,0,30,48,15,140,0,0,0,15, + 48,15,152,0,0,0,15,112,15,152,0,0,0,15,96,7, + 216,0,0,0,15,96,7,208,0,0,0,7,224,7,240,0, + 0,0,7,192,3,240,0,0,0,7,192,3,240,0,0,0, + 3,192,3,224,0,0,0,3,192,3,224,0,0,0,3,128, + 1,224,0,0,0,1,128,1,192,0,0,0,1,128,1,192, + 0,0,0,1,128,0,192,0,0,0,1,0,0,128,0,0, + 33,35,175,36,2,0,127,255,31,255,0,3,240,3,240,0, + 1,240,1,224,0,1,240,1,192,0,0,248,1,128,0,0, + 120,3,0,0,0,124,3,0,0,0,60,6,0,0,0,62, + 14,0,0,0,31,12,0,0,0,31,24,0,0,0,15,152, + 0,0,0,15,176,0,0,0,7,224,0,0,0,7,224,0, + 0,0,3,224,0,0,0,3,224,0,0,0,1,240,0,0, + 0,3,240,0,0,0,3,248,0,0,0,6,248,0,0,0, + 14,124,0,0,0,12,124,0,0,0,24,62,0,0,0,56, + 62,0,0,0,48,31,0,0,0,96,31,0,0,0,224,15, + 128,0,0,192,15,128,0,1,128,7,192,0,3,128,7,192, + 0,3,128,3,224,0,7,128,3,240,0,31,192,3,248,0, + 255,248,63,255,128,32,35,140,35,2,0,255,254,15,255,15, + 224,1,248,7,224,0,240,3,224,0,96,3,240,0,64,1, + 240,0,192,1,248,0,128,0,248,0,128,0,252,1,0,0, + 124,3,0,0,62,2,0,0,62,6,0,0,31,4,0,0, + 31,12,0,0,15,136,0,0,7,216,0,0,7,208,0,0, + 3,240,0,0,3,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,240,0,0,127,255,192,26,35,140,32,3,0,63,255,255, + 192,63,128,15,128,62,0,31,128,60,0,31,0,56,0,62, + 0,56,0,62,0,48,0,124,0,48,0,252,0,96,0,248, + 0,96,1,240,0,64,3,240,0,64,3,224,0,0,7,192, + 0,0,7,192,0,0,15,128,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,252,0, + 0,0,248,0,64,1,240,0,64,3,240,0,64,3,224,0, + 192,7,192,0,192,7,192,0,192,15,128,1,192,31,128,1, + 192,31,0,3,192,62,0,3,192,126,0,7,192,124,0,15, + 128,248,0,63,128,255,255,255,128,10,45,90,19,6,247,255, + 192,254,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,254,0,255,192,16,46,92,22,3,246,192, + 0,192,0,192,0,96,0,96,0,96,0,48,0,48,0,48, + 0,24,0,24,0,24,0,12,0,12,0,12,0,6,0,6, + 0,6,0,2,0,3,0,3,0,3,0,1,128,1,128,1, + 128,0,192,0,192,0,192,0,96,0,96,0,96,0,48,0, + 48,0,48,0,24,0,24,0,24,0,12,0,12,0,12,0, + 6,0,6,0,6,0,3,0,3,0,3,10,45,90,19,3, + 247,255,192,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,31,192,255,192,22,18,54,28,3, + 17,0,16,0,0,48,0,0,56,0,0,120,0,0,108,0, + 0,206,0,1,198,0,1,131,0,3,3,0,7,1,128,6, + 1,192,14,0,192,28,0,96,24,0,112,56,0,48,48,0, + 56,96,0,24,224,0,12,25,2,8,25,0,248,255,255,255, + 128,255,255,255,128,8,9,9,22,4,25,224,240,240,120,60, + 12,6,3,1,21,22,66,24,2,1,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,22,35,105,25, + 1,0,255,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,31,128,15,32,224,15, + 64,240,15,192,112,15,128,120,15,128,120,15,0,120,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,60, + 15,0,60,15,0,60,15,0,120,15,0,120,15,128,120,13, + 128,112,12,192,224,12,96,224,8,63,128,17,22,66,21,2, + 1,7,252,0,14,6,0,28,3,0,56,3,0,56,3,128, + 120,15,128,120,15,128,240,15,128,240,7,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,56,1,0,56,1,0,28,2,0,14,6,0, + 7,248,0,22,35,105,25,2,0,0,63,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 15,227,192,28,19,192,60,11,192,56,15,192,120,7,192,120, + 7,192,120,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,120,3,192, + 120,3,192,120,7,192,56,7,192,60,15,192,28,27,192,7, + 243,252,18,22,66,22,2,1,7,248,0,14,28,0,28,14, + 0,56,15,0,56,7,128,120,7,128,120,7,128,240,7,192, + 240,7,192,240,7,192,255,255,192,240,0,0,240,0,0,240, + 0,0,240,0,128,120,0,128,120,0,128,120,1,128,56,1, + 0,28,3,0,14,6,0,7,252,0,16,35,70,16,1,0, + 0,248,3,198,7,3,15,7,14,15,14,15,30,15,30,6, + 30,0,30,0,30,0,30,0,30,0,255,240,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,255,240,23,33,99,27,3,246,7,252,124,30, + 14,206,60,7,142,124,7,158,120,3,222,120,3,192,120,3, + 192,120,3,192,120,3,192,120,3,192,60,7,128,28,7,128, + 14,14,0,3,248,0,28,0,0,96,0,0,192,0,0,192, + 0,0,224,0,0,255,255,128,127,255,224,15,255,240,28,0, + 112,48,0,56,96,0,24,192,0,24,192,0,24,192,0,24, + 192,0,48,96,0,48,120,0,96,30,7,192,3,254,0,24, + 35,105,27,1,0,255,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,15,192,15, + 48,240,15,32,112,15,64,120,15,128,120,15,128,120,15,0, + 120,15,0,120,15,0,120,15,0,120,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,120,15,0,120,15,0,120,15, + 0,120,15,0,120,15,0,120,15,0,120,255,195,255,10,34, + 68,14,2,0,28,0,62,0,62,0,62,0,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,255,192,13,45,90,16,254,245,0,112, + 0,248,0,248,0,248,0,112,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,248,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,240,120,240,120,240,112, + 224,240,96,224,115,192,31,0,22,35,105,24,1,0,254,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,15,252,30,3,224,30,1,128,30,3, + 0,30,6,0,30,6,0,30,12,0,30,24,0,30,48,0, + 30,120,0,30,248,0,30,188,0,31,190,0,31,30,0,30, + 15,0,30,15,128,30,7,128,30,3,192,30,3,224,30,1, + 224,30,3,240,255,207,252,11,35,70,13,1,0,254,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,255,224,36,22,110,40,2,1,254,63,129,252,0,30,97, + 195,14,0,30,193,230,15,0,30,128,228,7,128,31,0,248, + 7,128,31,0,248,7,128,30,0,240,7,128,30,0,240,7, + 128,30,0,240,7,128,30,0,240,7,128,30,0,240,7,128, + 30,0,240,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,255,199,254,63,240,23,22,66,27,2,1,254,31,128, + 30,97,224,30,192,224,30,128,240,31,0,240,31,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,255,199,254,19, + 22,66,24,2,1,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,22,33,99,25,1,246,254,63,128, + 30,97,192,30,192,224,31,128,112,31,0,120,31,0,120,30, + 0,120,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,120,30,0,120, + 31,0,120,31,0,112,31,128,224,30,192,192,30,127,128,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,255,224,0, + 22,33,99,25,2,246,7,240,64,28,24,192,28,12,192,56, + 12,192,120,7,192,120,7,192,120,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,120,3,192,120,3,192,120,7,192,56,7,192,60, + 15,192,28,27,192,7,243,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,31,252,17,22,66,20,2,1,254, + 31,0,30,35,128,30,67,128,30,207,128,30,143,128,31,143, + 0,31,2,0,31,0,0,31,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,22,3,1,31,226,0,112,50,0,96,30,0, + 192,14,0,192,6,0,224,2,0,240,2,0,252,0,0,127, + 0,0,63,192,0,31,248,0,7,254,0,128,255,0,192,31, + 0,192,7,128,224,3,128,224,1,128,240,1,128,240,1,128, + 248,3,0,198,7,0,131,252,0,14,32,64,17,1,0,2, + 0,2,0,2,0,2,0,2,0,6,0,6,0,6,0,14, + 0,30,0,255,248,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,4,30,4,30,4,30,12,15,8,15,248,7,240,23, + 22,66,27,2,0,254,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,30,1,240,30,1,240,30,2,240,14,6, + 240,15,12,240,3,240,254,24,23,69,26,1,255,255,225,255, + 31,0,124,15,0,48,15,0,48,15,0,32,7,128,96,7, + 128,96,3,192,64,3,192,192,1,192,192,1,224,128,1,225, + 128,0,241,128,0,241,0,0,113,0,0,123,0,0,58,0, + 0,62,0,0,62,0,0,28,0,0,28,0,0,12,0,0, + 8,0,36,23,115,38,1,255,255,231,255,31,240,31,1,248, + 7,128,31,0,240,3,0,15,0,120,3,0,15,0,120,2, + 0,7,128,120,6,0,7,128,252,6,0,3,128,252,4,0, + 3,192,188,12,0,3,192,158,12,0,1,225,158,8,0,1, + 225,14,24,0,0,225,15,24,0,0,243,15,16,0,0,242, + 7,48,0,0,114,7,176,0,0,126,7,160,0,0,62,3, + 224,0,0,60,3,192,0,0,28,1,192,0,0,28,1,192, + 0,0,24,1,128,0,0,8,0,128,0,22,22,66,26,2, + 0,255,207,248,31,3,192,31,3,128,15,3,0,7,131,0, + 7,198,0,3,196,0,1,236,0,1,248,0,0,240,0,0, + 112,0,0,120,0,0,124,0,0,220,0,1,158,0,1,15, + 0,3,15,0,6,7,128,4,7,192,12,3,192,28,3,224, + 255,15,252,24,33,99,26,1,245,255,225,255,31,0,120,15, + 0,48,15,0,48,7,0,32,7,128,96,7,128,96,3,192, + 64,3,192,192,3,192,192,1,224,128,1,225,128,0,225,128, + 0,241,128,0,241,0,0,115,0,0,123,0,0,122,0,0, + 62,0,0,62,0,0,60,0,0,28,0,0,28,0,0,24, + 0,0,24,0,0,24,0,24,48,0,60,48,0,60,48,0, + 60,96,0,56,96,0,31,192,0,15,0,0,17,22,66,22, + 2,0,255,255,128,248,7,128,224,15,0,224,31,0,192,30, + 0,192,60,0,128,124,0,128,120,0,0,240,0,1,240,0, + 1,224,0,3,192,0,7,192,0,7,128,128,15,0,128,31, + 0,128,30,0,128,60,1,128,124,1,128,120,3,128,240,15, + 128,255,255,128,11,45,90,21,6,247,0,224,1,128,7,0, + 14,0,12,0,28,0,28,0,28,0,28,0,30,0,30,0, + 14,0,14,0,15,0,15,0,7,0,7,0,7,0,7,0, + 6,0,4,0,24,0,224,0,56,0,12,0,6,0,6,0, + 7,0,7,0,7,0,15,0,15,0,15,0,14,0,30,0, + 30,0,28,0,28,0,28,0,28,0,12,0,12,0,6,0, + 3,128,0,224,2,46,46,14,6,246,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,45,90,20,4,247,192,0, + 112,0,28,0,12,0,6,0,7,0,7,0,7,0,7,0, + 15,0,15,0,14,0,30,0,30,0,30,0,28,0,28,0, + 28,0,28,0,12,0,4,0,3,0,0,224,3,0,6,0, + 12,0,28,0,28,0,28,0,28,0,30,0,30,0,30,0, + 14,0,15,0,15,0,7,0,7,0,7,0,7,0,6,0, + 6,0,12,0,56,0,224,0,28,9,36,32,2,8,31,128, + 0,192,127,240,0,96,127,252,0,48,227,255,0,48,192,127, + 224,48,192,31,248,112,192,3,255,224,96,0,255,192,48,0, + 31,128,255}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 4, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 4 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01type[1163] U8G_SECTION(".progmem.u8g_font_p01type") = { + 0,5,6,0,254,4,1,81,2,129,32,255,254,4,254,5, + 254,0,0,0,4,0,0,1,5,5,3,1,255,128,128,128, + 0,128,3,2,2,4,0,2,160,160,5,5,5,6,0,255, + 80,248,80,248,80,255,4,4,4,5,0,0,144,32,64,144, + 4,5,5,5,0,255,64,128,80,160,80,1,2,2,2,0, + 2,128,128,2,5,5,3,0,255,64,128,128,128,64,2,5, + 5,3,0,255,128,64,64,64,128,3,3,3,4,0,0,160, + 64,160,3,3,3,4,0,0,64,224,64,2,2,2,3,0, + 255,64,128,3,1,1,4,0,1,224,1,1,1,2,0,0, + 128,4,4,4,5,0,255,16,32,64,128,3,5,5,4,0, + 255,96,160,160,160,192,1,5,5,2,0,255,128,128,128,128, + 128,3,5,5,4,0,255,192,32,224,128,96,3,5,5,4, + 0,255,192,32,192,32,192,3,5,5,4,0,255,160,160,224, + 32,32,3,5,5,4,0,255,96,128,224,32,192,3,5,5, + 4,0,255,96,128,224,160,192,3,5,5,4,0,255,224,32, + 32,64,64,3,5,5,4,0,255,96,160,224,160,192,3,5, + 5,4,0,255,96,160,224,32,192,1,3,3,2,0,0,128, + 0,128,2,4,4,3,0,255,64,0,64,128,3,5,5,4, + 0,255,32,64,128,64,32,3,3,3,4,0,0,224,0,224, + 3,5,5,4,0,255,128,64,32,64,128,4,5,5,5,0, + 255,224,16,96,0,64,4,5,5,5,0,255,112,144,176,128, + 224,4,4,4,5,0,0,112,144,240,144,4,5,5,5,0, + 255,112,144,224,144,224,4,4,4,5,0,0,112,128,128,240, + 4,4,4,5,0,0,224,144,144,240,4,5,5,5,0,255, + 112,128,224,128,112,4,4,4,5,0,0,240,128,224,128,4, + 4,4,5,0,0,112,128,144,224,4,4,4,5,0,0,144, + 144,240,144,1,4,4,2,0,0,128,128,128,128,2,4,4, + 3,0,0,64,64,64,128,4,4,4,5,0,0,144,144,224, + 144,4,4,4,5,0,0,128,128,128,112,4,4,4,5,0, + 0,144,240,144,144,4,4,4,5,0,0,144,208,176,144,4, + 4,4,5,0,0,112,144,144,224,4,4,4,5,0,0,112, + 144,224,128,4,4,4,5,0,0,112,144,160,208,4,4,4, + 5,0,0,112,144,224,144,4,5,5,5,0,255,112,128,240, + 16,224,5,4,4,6,0,0,248,32,32,32,4,4,4,5, + 0,0,144,144,144,224,4,4,4,5,0,0,144,144,144,96, + 5,4,4,6,0,0,168,168,168,216,4,4,4,5,0,0, + 144,144,96,144,4,4,4,5,0,0,144,240,16,224,4,4, + 4,5,0,0,240,32,64,240,2,5,5,3,0,255,192,128, + 128,128,192,4,4,4,5,0,255,128,64,32,16,2,5,5, + 3,0,255,192,64,64,64,192,255,4,1,1,5,0,255,240, + 255,3,3,3,4,0,0,96,160,224,3,4,4,4,0,0, + 128,224,160,192,3,3,3,4,0,0,96,128,224,3,4,4, + 4,0,0,32,96,160,224,3,5,5,4,0,254,96,160,224, + 128,96,3,4,4,4,0,0,96,64,224,64,3,5,5,4, + 0,254,96,160,224,32,192,3,4,4,4,0,0,128,192,160, + 160,1,3,3,2,0,0,128,128,128,2,5,5,3,0,254, + 64,64,64,64,128,3,4,4,4,0,0,128,160,192,160,1, + 4,4,2,0,0,128,128,128,128,5,3,3,6,0,0,80, + 168,168,3,3,3,4,0,0,192,160,160,3,3,3,4,0, + 0,96,160,192,3,5,5,4,0,254,96,160,192,128,128,3, + 5,5,4,0,254,192,160,96,32,32,3,3,3,4,0,0, + 96,128,128,3,5,5,4,0,254,96,128,224,32,192,3,4, + 4,4,0,0,64,224,64,32,3,3,3,4,0,0,160,160, + 96,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,5,5,4, + 0,254,160,160,96,32,192,3,3,3,4,0,0,224,64,224, + 3,5,5,4,0,255,96,64,128,64,96,1,5,5,2,0, + 255,128,128,128,128,128,3,5,5,4,0,255,192,64,32,64, + 192,4,2,2,5,0,1,80,160,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,1,5,5,2,0, + 255,128,0,128,128,128,255,255,255,255,1,5,5,3,1,255, + 128,128,0,128,128,255,255,255,255,5,5,5,6,0,255,40, + 80,160,80,40,3,2,2,4,0,0,224,32,3,1,1,4, + 0,1,224,255,255,255,3,5,5,4,0,255,64,224,64,0, + 224,255,255,255,255,255,1,1,1,2,0,1,128,255,255,255, + 5,5,5,6,0,255,160,80,40,80,160,255,255,255,4,5, + 5,5,0,255,32,0,96,128,112,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 3,3,3,4,0,0,160,64,160,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,3,5,5,4,0,255,64,0, + 224,0,64,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 5 x= 0 y= 1 dx= 5 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 4 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01typen[177] U8G_SECTION(".progmem.u8g_font_p01typen") = { + 0,5,6,0,254,5,0,0,0,0,42,57,0,4,255,5, + 0,3,3,3,4,0,0,160,64,160,3,3,3,4,0,0, + 64,224,64,2,2,2,3,0,255,64,128,3,1,1,4,0, + 1,224,1,1,1,2,0,0,128,4,4,4,5,0,255,16, + 32,64,128,3,5,5,4,0,255,96,160,160,160,192,1,5, + 5,2,0,255,128,128,128,128,128,3,5,5,4,0,255,192, + 32,224,128,96,3,5,5,4,0,255,192,32,192,32,192,3, + 5,5,4,0,255,160,160,224,32,32,3,5,5,4,0,255, + 96,128,224,32,192,3,5,5,4,0,255,96,128,224,160,192, + 3,5,5,4,0,255,224,32,32,64,64,3,5,5,4,0, + 255,96,160,224,160,192,3,5,5,4,0,255,96,160,224,32, + 192}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 4, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 4 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01typer[938] U8G_SECTION(".progmem.u8g_font_p01typer") = { + 0,5,6,0,254,4,1,81,2,129,32,127,254,4,254,5, + 254,0,0,0,4,0,0,1,5,5,3,1,255,128,128,128, + 0,128,3,2,2,4,0,2,160,160,5,5,5,6,0,255, + 80,248,80,248,80,255,4,4,4,5,0,0,144,32,64,144, + 4,5,5,5,0,255,64,128,80,160,80,1,2,2,2,0, + 2,128,128,2,5,5,3,0,255,64,128,128,128,64,2,5, + 5,3,0,255,128,64,64,64,128,3,3,3,4,0,0,160, + 64,160,3,3,3,4,0,0,64,224,64,2,2,2,3,0, + 255,64,128,3,1,1,4,0,1,224,1,1,1,2,0,0, + 128,4,4,4,5,0,255,16,32,64,128,3,5,5,4,0, + 255,96,160,160,160,192,1,5,5,2,0,255,128,128,128,128, + 128,3,5,5,4,0,255,192,32,224,128,96,3,5,5,4, + 0,255,192,32,192,32,192,3,5,5,4,0,255,160,160,224, + 32,32,3,5,5,4,0,255,96,128,224,32,192,3,5,5, + 4,0,255,96,128,224,160,192,3,5,5,4,0,255,224,32, + 32,64,64,3,5,5,4,0,255,96,160,224,160,192,3,5, + 5,4,0,255,96,160,224,32,192,1,3,3,2,0,0,128, + 0,128,2,4,4,3,0,255,64,0,64,128,3,5,5,4, + 0,255,32,64,128,64,32,3,3,3,4,0,0,224,0,224, + 3,5,5,4,0,255,128,64,32,64,128,4,5,5,5,0, + 255,224,16,96,0,64,4,5,5,5,0,255,112,144,176,128, + 224,4,4,4,5,0,0,112,144,240,144,4,5,5,5,0, + 255,112,144,224,144,224,4,4,4,5,0,0,112,128,128,240, + 4,4,4,5,0,0,224,144,144,240,4,5,5,5,0,255, + 112,128,224,128,112,4,4,4,5,0,0,240,128,224,128,4, + 4,4,5,0,0,112,128,144,224,4,4,4,5,0,0,144, + 144,240,144,1,4,4,2,0,0,128,128,128,128,2,4,4, + 3,0,0,64,64,64,128,4,4,4,5,0,0,144,144,224, + 144,4,4,4,5,0,0,128,128,128,112,4,4,4,5,0, + 0,144,240,144,144,4,4,4,5,0,0,144,208,176,144,4, + 4,4,5,0,0,112,144,144,224,4,4,4,5,0,0,112, + 144,224,128,4,4,4,5,0,0,112,144,160,208,4,4,4, + 5,0,0,112,144,224,144,4,5,5,5,0,255,112,128,240, + 16,224,5,4,4,6,0,0,248,32,32,32,4,4,4,5, + 0,0,144,144,144,224,4,4,4,5,0,0,144,144,144,96, + 5,4,4,6,0,0,168,168,168,216,4,4,4,5,0,0, + 144,144,96,144,4,4,4,5,0,0,144,240,16,224,4,4, + 4,5,0,0,240,32,64,240,2,5,5,3,0,255,192,128, + 128,128,192,4,4,4,5,0,255,128,64,32,16,2,5,5, + 3,0,255,192,64,64,64,192,255,4,1,1,5,0,255,240, + 255,3,3,3,4,0,0,96,160,224,3,4,4,4,0,0, + 128,224,160,192,3,3,3,4,0,0,96,128,224,3,4,4, + 4,0,0,32,96,160,224,3,5,5,4,0,254,96,160,224, + 128,96,3,4,4,4,0,0,96,64,224,64,3,5,5,4, + 0,254,96,160,224,32,192,3,4,4,4,0,0,128,192,160, + 160,1,3,3,2,0,0,128,128,128,2,5,5,3,0,254, + 64,64,64,64,128,3,4,4,4,0,0,128,160,192,160,1, + 4,4,2,0,0,128,128,128,128,5,3,3,6,0,0,80, + 168,168,3,3,3,4,0,0,192,160,160,3,3,3,4,0, + 0,96,160,192,3,5,5,4,0,254,96,160,192,128,128,3, + 5,5,4,0,254,192,160,96,32,32,3,3,3,4,0,0, + 96,128,128,3,5,5,4,0,254,96,128,224,32,192,3,4, + 4,4,0,0,64,224,64,32,3,3,3,4,0,0,160,160, + 96,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,5,5,4, + 0,254,160,160,96,32,192,3,3,3,4,0,0,224,64,224, + 3,5,5,4,0,255,96,64,128,64,96,1,5,5,2,0, + 255,128,128,128,128,128,3,5,5,4,0,255,192,64,32,64, + 192,4,2,2,5,0,1,80,160,255}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 4 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[1140] U8G_SECTION(".progmem.u8g_font_pixelle_micro") = { + 0,6,8,255,254,5,1,97,2,188,32,255,254,6,254,6, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,0, + 80,248,80,248,80,3,7,7,4,0,255,64,224,128,224,32, + 224,64,4,4,4,5,0,0,144,32,64,144,4,5,5,5, + 0,0,96,64,208,160,208,1,2,2,2,0,3,128,128,2, + 7,7,3,0,255,64,128,128,128,128,128,64,2,7,7,3, + 0,255,128,64,64,64,64,64,128,3,4,4,4,0,0,64, + 224,64,160,3,3,3,4,0,0,64,224,64,1,2,2,2, + 0,255,128,128,3,1,1,4,0,1,224,1,1,1,2,0, + 0,128,3,6,6,4,0,0,32,32,64,64,128,128,3,5, + 5,4,0,0,64,160,224,160,64,3,5,5,4,0,0,192, + 64,64,64,224,3,5,5,4,0,0,64,160,32,64,224,3, + 5,5,4,0,0,192,32,64,32,192,3,5,5,4,0,0, + 160,160,224,32,32,3,5,5,4,0,0,224,128,224,32,192, + 3,5,5,4,0,0,64,160,192,160,64,3,5,5,4,0, + 0,224,32,64,64,128,3,5,5,4,0,0,64,160,64,160, + 64,3,5,5,4,0,0,64,160,96,160,64,1,3,3,2, + 0,0,128,0,128,1,4,4,2,0,255,128,0,128,128,2, + 3,3,3,0,0,64,128,64,3,3,3,4,0,0,224,0, + 224,2,3,3,3,0,0,128,64,128,3,5,5,4,0,0, + 64,160,32,64,64,5,6,6,6,0,0,112,136,168,184,128, + 120,3,5,5,4,0,0,64,160,224,160,160,3,5,5,4, + 0,0,192,160,192,160,192,3,5,5,4,0,0,64,160,128, + 160,64,3,5,5,4,0,0,192,160,160,160,192,3,5,5, + 4,0,0,224,128,192,128,224,3,5,5,4,0,0,224,128, + 192,128,128,3,5,5,4,0,0,64,160,128,160,96,3,5, + 5,4,0,0,160,160,224,160,160,3,5,5,4,0,0,224, + 64,64,64,224,3,5,5,4,0,0,32,32,32,160,64,3, + 5,5,4,0,0,160,160,192,160,160,3,5,5,4,0,0, + 128,128,128,128,224,3,5,5,4,0,0,160,224,224,160,160, + 3,5,5,4,0,0,160,224,224,224,160,3,5,5,4,0, + 0,64,160,160,160,64,3,5,5,4,0,0,192,160,192,128, + 128,3,5,5,4,0,0,64,160,160,224,96,3,5,5,4, + 0,0,192,160,192,160,160,3,5,5,4,0,0,96,128,64, + 32,224,3,5,5,4,0,0,224,64,64,64,64,3,5,5, + 4,0,0,160,160,160,160,64,3,5,5,4,0,0,160,160, + 160,64,64,3,5,5,4,0,0,160,160,224,224,160,3,5, + 5,4,0,0,160,160,64,160,160,3,5,5,4,0,0,160, + 160,64,64,64,3,5,5,4,0,0,224,32,64,128,224,2, + 7,7,3,0,255,192,128,128,128,128,128,192,3,6,6,4, + 0,0,128,128,64,64,32,32,2,7,7,3,0,255,192,64, + 64,64,64,64,192,3,2,2,4,0,3,64,160,3,1,1, + 4,0,0,224,1,2,2,2,0,4,128,128,3,3,3,4, + 0,0,96,160,96,3,5,5,4,0,0,128,128,192,160,192, + 3,3,3,4,0,0,96,128,96,3,5,5,4,0,0,32, + 32,96,160,96,3,3,3,4,0,0,96,224,96,2,5,5, + 3,0,0,64,128,192,128,128,3,5,5,4,0,254,96,160, + 96,160,64,3,5,5,4,0,0,128,128,192,160,160,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,160,64,3,6,6,4,0,0,128,128,128,160, + 192,160,1,6,6,2,0,0,128,128,128,128,128,128,5,3, + 3,6,0,0,208,168,168,3,3,3,4,0,0,192,160,160, + 3,3,3,4,0,0,64,160,64,3,5,5,4,0,254,192, + 160,192,128,128,3,5,5,4,0,254,96,160,96,32,32,3, + 3,3,4,0,0,192,160,128,3,3,3,4,0,0,96,64, + 192,3,5,5,4,0,0,64,64,224,64,64,3,3,3,4, + 0,0,160,160,64,3,3,3,4,0,0,160,64,64,5,3, + 3,6,0,0,168,168,208,3,3,3,4,0,0,160,64,160, + 3,5,5,4,0,254,160,160,96,160,64,3,3,3,4,0, + 0,224,64,224,3,7,7,4,0,255,32,64,64,128,64,64, + 32,1,7,7,2,0,255,128,128,128,128,128,128,128,3,7, + 7,4,0,255,128,64,64,32,64,64,128,4,2,2,5,0, + 1,80,160,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 6 x= 0 y= 1 dx= 4 dy= 0 ascent= 6 len= 6 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[180] U8G_SECTION(".progmem.u8g_font_pixelle_micron") = { + 0,6,8,255,254,5,0,0,0,0,42,57,0,6,255,5, + 0,3,4,4,4,0,0,64,224,64,160,3,3,3,4,0, + 0,64,224,64,1,2,2,2,0,255,128,128,3,1,1,4, + 0,1,224,1,1,1,2,0,0,128,3,6,6,4,0,0, + 32,32,64,64,128,128,3,5,5,4,0,0,64,160,224,160, + 64,3,5,5,4,0,0,192,64,64,64,224,3,5,5,4, + 0,0,64,160,32,64,224,3,5,5,4,0,0,192,32,64, + 32,192,3,5,5,4,0,0,160,160,224,32,32,3,5,5, + 4,0,0,224,128,224,32,192,3,5,5,4,0,0,64,160, + 192,160,64,3,5,5,4,0,0,224,32,64,64,128,3,5, + 5,4,0,0,64,160,64,160,64,3,5,5,4,0,0,64, + 160,96,160,64}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 4 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[1012] U8G_SECTION(".progmem.u8g_font_pixelle_micror") = { + 0,6,8,255,254,5,1,97,2,188,32,127,254,6,254,6, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,0, + 80,248,80,248,80,3,7,7,4,0,255,64,224,128,224,32, + 224,64,4,4,4,5,0,0,144,32,64,144,4,5,5,5, + 0,0,96,64,208,160,208,1,2,2,2,0,3,128,128,2, + 7,7,3,0,255,64,128,128,128,128,128,64,2,7,7,3, + 0,255,128,64,64,64,64,64,128,3,4,4,4,0,0,64, + 224,64,160,3,3,3,4,0,0,64,224,64,1,2,2,2, + 0,255,128,128,3,1,1,4,0,1,224,1,1,1,2,0, + 0,128,3,6,6,4,0,0,32,32,64,64,128,128,3,5, + 5,4,0,0,64,160,224,160,64,3,5,5,4,0,0,192, + 64,64,64,224,3,5,5,4,0,0,64,160,32,64,224,3, + 5,5,4,0,0,192,32,64,32,192,3,5,5,4,0,0, + 160,160,224,32,32,3,5,5,4,0,0,224,128,224,32,192, + 3,5,5,4,0,0,64,160,192,160,64,3,5,5,4,0, + 0,224,32,64,64,128,3,5,5,4,0,0,64,160,64,160, + 64,3,5,5,4,0,0,64,160,96,160,64,1,3,3,2, + 0,0,128,0,128,1,4,4,2,0,255,128,0,128,128,2, + 3,3,3,0,0,64,128,64,3,3,3,4,0,0,224,0, + 224,2,3,3,3,0,0,128,64,128,3,5,5,4,0,0, + 64,160,32,64,64,5,6,6,6,0,0,112,136,168,184,128, + 120,3,5,5,4,0,0,64,160,224,160,160,3,5,5,4, + 0,0,192,160,192,160,192,3,5,5,4,0,0,64,160,128, + 160,64,3,5,5,4,0,0,192,160,160,160,192,3,5,5, + 4,0,0,224,128,192,128,224,3,5,5,4,0,0,224,128, + 192,128,128,3,5,5,4,0,0,64,160,128,160,96,3,5, + 5,4,0,0,160,160,224,160,160,3,5,5,4,0,0,224, + 64,64,64,224,3,5,5,4,0,0,32,32,32,160,64,3, + 5,5,4,0,0,160,160,192,160,160,3,5,5,4,0,0, + 128,128,128,128,224,3,5,5,4,0,0,160,224,224,160,160, + 3,5,5,4,0,0,160,224,224,224,160,3,5,5,4,0, + 0,64,160,160,160,64,3,5,5,4,0,0,192,160,192,128, + 128,3,5,5,4,0,0,64,160,160,224,96,3,5,5,4, + 0,0,192,160,192,160,160,3,5,5,4,0,0,96,128,64, + 32,224,3,5,5,4,0,0,224,64,64,64,64,3,5,5, + 4,0,0,160,160,160,160,64,3,5,5,4,0,0,160,160, + 160,64,64,3,5,5,4,0,0,160,160,224,224,160,3,5, + 5,4,0,0,160,160,64,160,160,3,5,5,4,0,0,160, + 160,64,64,64,3,5,5,4,0,0,224,32,64,128,224,2, + 7,7,3,0,255,192,128,128,128,128,128,192,3,6,6,4, + 0,0,128,128,64,64,32,32,2,7,7,3,0,255,192,64, + 64,64,64,64,192,3,2,2,4,0,3,64,160,3,1,1, + 4,0,0,224,1,2,2,2,0,4,128,128,3,3,3,4, + 0,0,96,160,96,3,5,5,4,0,0,128,128,192,160,192, + 3,3,3,4,0,0,96,128,96,3,5,5,4,0,0,32, + 32,96,160,96,3,3,3,4,0,0,96,224,96,2,5,5, + 3,0,0,64,128,192,128,128,3,5,5,4,0,254,96,160, + 96,160,64,3,5,5,4,0,0,128,128,192,160,160,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,160,64,3,6,6,4,0,0,128,128,128,160, + 192,160,1,6,6,2,0,0,128,128,128,128,128,128,5,3, + 3,6,0,0,208,168,168,3,3,3,4,0,0,192,160,160, + 3,3,3,4,0,0,64,160,64,3,5,5,4,0,254,192, + 160,192,128,128,3,5,5,4,0,254,96,160,96,32,32,3, + 3,3,4,0,0,192,160,128,3,3,3,4,0,0,96,64, + 192,3,5,5,4,0,0,64,64,224,64,64,3,3,3,4, + 0,0,160,160,64,3,3,3,4,0,0,160,64,64,5,3, + 3,6,0,0,168,168,208,3,3,3,4,0,0,160,64,160, + 3,5,5,4,0,254,160,160,96,160,64,3,3,3,4,0, + 0,224,64,224,3,7,7,4,0,255,32,64,64,128,64,64, + 32,1,7,7,2,0,255,128,128,128,128,128,128,128,3,7, + 7,4,0,255,128,64,64,32,64,64,128,4,2,2,5,0, + 1,80,160,255}; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 6, '1' Height: 5 + Calculated Max Values w= 7 h= 8 x= 0 y= 6 dx= 8 dy= 0 ascent=10 len= 8 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x=-1 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 1 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[1376] U8G_SECTION(".progmem.u8g_font_robot_de_niro") = { + 0,10,10,255,0,6,1,97,2,193,32,255,1,10,0,9, + 0,0,0,0,2,0,0,2,5,5,3,0,3,192,128,128, + 0,128,3,2,2,4,0,6,160,160,5,5,5,6,0,3, + 80,248,80,248,80,4,7,7,5,0,2,96,224,16,96,128, + 112,96,5,5,5,6,0,3,192,208,32,88,24,4,5,5, + 5,0,3,96,160,80,160,80,1,2,2,2,0,6,128,128, + 2,7,7,3,0,2,64,128,128,128,128,128,64,2,7,7, + 3,0,2,128,64,64,64,64,64,128,3,3,3,4,0,6, + 160,64,160,3,3,3,4,0,4,64,224,64,2,2,2,3, + 0,2,64,128,3,1,1,4,0,5,224,1,1,1,2,0, + 3,128,3,5,5,4,0,3,32,32,64,128,128,3,5,5, + 4,0,3,64,160,160,160,64,3,5,5,4,0,3,192,64, + 64,64,224,3,5,5,4,0,3,192,32,96,128,224,3,5, + 5,4,0,3,192,32,224,32,224,3,5,5,4,0,3,160, + 160,224,32,32,3,5,5,4,0,3,96,128,224,32,224,3, + 5,5,4,0,3,96,128,224,160,64,4,5,5,5,0,3, + 224,32,112,32,32,3,5,5,4,0,3,96,160,224,160,192, + 3,5,5,4,0,3,96,160,224,32,192,1,3,3,2,0, + 4,128,0,128,2,4,4,3,0,3,64,0,64,128,2,3, + 3,3,0,4,64,128,64,3,3,3,4,0,4,224,0,224, + 2,3,3,3,0,4,128,64,128,3,5,5,4,0,3,224, + 32,64,0,64,5,7,7,6,0,2,120,136,184,168,184,128, + 120,4,6,6,4,255,2,48,80,112,80,80,128,4,5,5, + 5,0,3,224,80,96,80,224,3,5,5,4,0,3,96,128, + 128,160,64,4,5,5,5,0,3,224,80,80,80,32,3,5, + 5,4,0,3,96,128,192,128,224,4,6,6,5,0,2,176, + 64,96,64,64,128,4,5,5,5,0,3,96,128,176,160,96, + 4,6,6,4,255,2,80,80,112,80,80,128,1,5,5,2, + 0,3,128,128,128,128,128,3,5,5,4,0,3,64,32,32, + 32,192,5,5,5,6,0,3,208,80,96,80,72,4,5,5, + 5,0,3,192,64,64,64,176,6,5,5,6,255,3,168,84, + 84,84,68,4,5,5,5,0,3,224,80,80,80,80,3,5, + 5,4,0,3,96,160,160,160,64,4,5,5,5,0,3,176, + 80,96,64,64,4,5,5,5,0,3,64,160,160,160,112,5, + 5,5,5,255,3,176,80,96,80,72,3,5,5,4,0,3, + 96,128,224,32,192,3,5,5,4,0,3,224,64,64,64,64, + 4,5,5,5,0,3,160,160,160,160,80,3,5,5,4,0, + 3,160,160,160,160,64,6,5,5,7,0,3,172,168,168,168, + 88,4,5,5,5,0,3,160,160,64,160,176,4,7,7,4, + 255,1,208,80,80,48,16,16,32,3,5,5,4,0,3,224, + 32,64,128,224,2,7,7,3,0,2,192,128,128,128,128,128, + 192,3,5,5,4,0,3,128,128,64,32,32,2,7,7,3, + 0,2,192,64,64,64,64,64,192,3,3,3,4,0,5,64, + 160,160,4,1,1,5,0,3,240,2,2,2,3,0,6,128, + 64,4,4,4,5,0,3,96,160,160,80,4,5,5,5,0, + 3,64,96,80,80,160,3,4,4,4,0,3,96,128,160,64, + 4,6,6,5,0,3,16,32,96,160,160,208,4,4,4,5, + 0,3,96,160,208,96,4,7,7,4,255,1,48,64,96,64, + 64,64,128,4,6,6,5,0,1,80,160,160,96,32,192,3, + 7,7,4,0,3,64,128,128,192,160,160,160,1,5,5,2, + 0,3,128,0,128,128,128,3,7,7,3,255,1,32,0,32, + 32,32,32,192,4,7,7,5,0,2,128,128,160,224,160,144, + 16,4,6,6,5,0,3,32,80,96,64,64,176,6,4,4, + 7,0,3,88,168,168,164,3,4,4,4,0,3,64,160,160, + 160,3,4,4,4,0,3,96,160,160,192,4,6,6,5,0, + 1,176,80,80,96,64,128,4,6,6,5,0,1,80,160,160, + 96,32,32,4,4,4,5,0,3,160,80,64,64,3,4,4, + 4,0,3,64,160,32,192,2,6,6,3,0,3,128,128,192, + 128,128,64,4,4,4,5,0,3,160,160,160,80,3,4,4, + 4,0,3,160,160,160,64,6,4,4,7,0,3,172,168,168, + 80,3,4,4,4,0,3,160,160,64,160,3,5,5,4,0, + 2,160,160,64,32,192,4,5,5,5,0,2,224,32,64,144, + 96,3,7,7,4,0,2,96,64,64,128,64,64,96,1,7, + 7,2,0,2,128,128,128,128,128,128,128,3,7,7,4,0, + 2,192,64,64,32,64,64,192,4,2,2,5,0,5,80,160, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,4,7,7,5,0,2,96,144,64,224,64,128, + 240,255,255,255,4,7,7,5,0,2,96,128,96,144,96,16, + 96,255,7,8,8,8,0,2,124,130,154,170,162,154,130,124, + 255,255,255,255,7,8,8,8,0,2,124,130,186,170,178,170, + 130,124,255,255,255,255,255,255,255,6,5,5,7,0,3,108, + 232,104,40,40,255,255,255,255,255,255,255,255,255,255,255,255, + 255,4,8,8,4,255,2,80,0,48,80,112,80,80,128,255, + 255,3,7,7,4,0,1,96,128,128,160,96,64,32,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,3,7,7,4, + 0,3,160,0,96,160,160,160,64,4,4,4,5,0,4,144, + 96,96,144,255,255,255,255,4,7,7,5,0,3,80,0,160, + 160,160,160,80,255,255,4,7,7,4,255,1,32,80,96,80, + 96,64,128,255,255,255,255,4,6,6,5,0,3,80,0,96, + 160,160,80,255,255,255,4,6,6,5,0,3,96,0,96,160, + 208,96,4,6,6,5,0,3,96,0,96,160,208,96,4,7, + 7,5,0,3,64,160,0,96,160,208,96,255,255,255,255,255, + 255,255,255,255,255,255,3,6,6,4,0,3,160,0,96,160, + 160,192,5,5,5,6,0,3,32,0,248,0,32,255,255,255, + 255,4,6,6,5,0,3,80,0,160,160,160,80,255,255,255 + }; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 5 x= 0 y= 6 dx= 5 dy= 0 ascent= 9 len= 5 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 9 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[178] U8G_SECTION(".progmem.u8g_font_robot_de_niron") = { + 0,10,10,255,0,5,0,0,0,0,42,57,0,9,0,5, + 0,3,3,3,4,0,6,160,64,160,3,3,3,4,0,4, + 64,224,64,2,2,2,3,0,2,64,128,3,1,1,4,0, + 5,224,1,1,1,2,0,3,128,3,5,5,4,0,3,32, + 32,64,128,128,3,5,5,4,0,3,64,160,160,160,64,3, + 5,5,4,0,3,192,64,64,64,224,3,5,5,4,0,3, + 192,32,96,128,224,3,5,5,4,0,3,192,32,224,32,224, + 3,5,5,4,0,3,160,160,224,32,32,3,5,5,4,0, + 3,96,128,224,32,224,3,5,5,4,0,3,96,128,224,160, + 64,4,5,5,5,0,3,224,32,112,32,32,3,5,5,4, + 0,3,96,160,224,160,192,3,5,5,4,0,3,96,160,224, + 32,192}; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 6, '1' Height: 5 + Calculated Max Values w= 6 h= 7 x= 0 y= 6 dx= 7 dy= 0 ascent=10 len= 7 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x=-1 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 1 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[1041] U8G_SECTION(".progmem.u8g_font_robot_de_niror") = { + 0,10,10,255,0,6,1,97,2,193,32,127,1,10,0,9, + 0,0,0,0,2,0,0,2,5,5,3,0,3,192,128,128, + 0,128,3,2,2,4,0,6,160,160,5,5,5,6,0,3, + 80,248,80,248,80,4,7,7,5,0,2,96,224,16,96,128, + 112,96,5,5,5,6,0,3,192,208,32,88,24,4,5,5, + 5,0,3,96,160,80,160,80,1,2,2,2,0,6,128,128, + 2,7,7,3,0,2,64,128,128,128,128,128,64,2,7,7, + 3,0,2,128,64,64,64,64,64,128,3,3,3,4,0,6, + 160,64,160,3,3,3,4,0,4,64,224,64,2,2,2,3, + 0,2,64,128,3,1,1,4,0,5,224,1,1,1,2,0, + 3,128,3,5,5,4,0,3,32,32,64,128,128,3,5,5, + 4,0,3,64,160,160,160,64,3,5,5,4,0,3,192,64, + 64,64,224,3,5,5,4,0,3,192,32,96,128,224,3,5, + 5,4,0,3,192,32,224,32,224,3,5,5,4,0,3,160, + 160,224,32,32,3,5,5,4,0,3,96,128,224,32,224,3, + 5,5,4,0,3,96,128,224,160,64,4,5,5,5,0,3, + 224,32,112,32,32,3,5,5,4,0,3,96,160,224,160,192, + 3,5,5,4,0,3,96,160,224,32,192,1,3,3,2,0, + 4,128,0,128,2,4,4,3,0,3,64,0,64,128,2,3, + 3,3,0,4,64,128,64,3,3,3,4,0,4,224,0,224, + 2,3,3,3,0,4,128,64,128,3,5,5,4,0,3,224, + 32,64,0,64,5,7,7,6,0,2,120,136,184,168,184,128, + 120,4,6,6,4,255,2,48,80,112,80,80,128,4,5,5, + 5,0,3,224,80,96,80,224,3,5,5,4,0,3,96,128, + 128,160,64,4,5,5,5,0,3,224,80,80,80,32,3,5, + 5,4,0,3,96,128,192,128,224,4,6,6,5,0,2,176, + 64,96,64,64,128,4,5,5,5,0,3,96,128,176,160,96, + 4,6,6,4,255,2,80,80,112,80,80,128,1,5,5,2, + 0,3,128,128,128,128,128,3,5,5,4,0,3,64,32,32, + 32,192,5,5,5,6,0,3,208,80,96,80,72,4,5,5, + 5,0,3,192,64,64,64,176,6,5,5,6,255,3,168,84, + 84,84,68,4,5,5,5,0,3,224,80,80,80,80,3,5, + 5,4,0,3,96,160,160,160,64,4,5,5,5,0,3,176, + 80,96,64,64,4,5,5,5,0,3,64,160,160,160,112,5, + 5,5,5,255,3,176,80,96,80,72,3,5,5,4,0,3, + 96,128,224,32,192,3,5,5,4,0,3,224,64,64,64,64, + 4,5,5,5,0,3,160,160,160,160,80,3,5,5,4,0, + 3,160,160,160,160,64,6,5,5,7,0,3,172,168,168,168, + 88,4,5,5,5,0,3,160,160,64,160,176,4,7,7,4, + 255,1,208,80,80,48,16,16,32,3,5,5,4,0,3,224, + 32,64,128,224,2,7,7,3,0,2,192,128,128,128,128,128, + 192,3,5,5,4,0,3,128,128,64,32,32,2,7,7,3, + 0,2,192,64,64,64,64,64,192,3,3,3,4,0,5,64, + 160,160,4,1,1,5,0,3,240,2,2,2,3,0,6,128, + 64,4,4,4,5,0,3,96,160,160,80,4,5,5,5,0, + 3,64,96,80,80,160,3,4,4,4,0,3,96,128,160,64, + 4,6,6,5,0,3,16,32,96,160,160,208,4,4,4,5, + 0,3,96,160,208,96,4,7,7,4,255,1,48,64,96,64, + 64,64,128,4,6,6,5,0,1,80,160,160,96,32,192,3, + 7,7,4,0,3,64,128,128,192,160,160,160,1,5,5,2, + 0,3,128,0,128,128,128,3,7,7,3,255,1,32,0,32, + 32,32,32,192,4,7,7,5,0,2,128,128,160,224,160,144, + 16,4,6,6,5,0,3,32,80,96,64,64,176,6,4,4, + 7,0,3,88,168,168,164,3,4,4,4,0,3,64,160,160, + 160,3,4,4,4,0,3,96,160,160,192,4,6,6,5,0, + 1,176,80,80,96,64,128,4,6,6,5,0,1,80,160,160, + 96,32,32,4,4,4,5,0,3,160,80,64,64,3,4,4, + 4,0,3,64,160,32,192,2,6,6,3,0,3,128,128,192, + 128,128,64,4,4,4,5,0,3,160,160,160,80,3,4,4, + 4,0,3,160,160,160,64,6,4,4,7,0,3,172,168,168, + 80,3,4,4,4,0,3,160,160,64,160,3,5,5,4,0, + 2,160,160,64,32,192,4,5,5,5,0,2,224,32,64,144, + 96,3,7,7,4,0,2,96,64,64,128,64,64,96,1,7, + 7,2,0,2,128,128,128,128,128,128,128,3,7,7,4,0, + 2,192,64,64,32,64,64,192,4,2,2,5,0,5,80,160, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--11-80-100-100-P-61-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=15 x= 3 y= 9 dx=11 dy= 0 ascent=11 len=15 + Font Bounding box w=11 h=15 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =11 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb08[2612] U8G_SECTION(".progmem.u8g_font_symb08") = { + 0,11,15,255,252,7,1,152,3,60,32,255,254,11,252,7, + 254,0,0,0,3,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,7,7,7,7,0,0,130,68,124,40,40,16, + 16,5,7,7,5,0,0,80,80,248,80,248,80,80,5,7, + 7,6,0,0,248,8,8,120,8,8,248,7,7,7,8,0, + 0,100,188,168,86,42,42,68,6,7,7,7,0,0,32,80, + 80,108,152,152,108,4,5,5,5,0,0,224,16,112,16,224, + 3,9,9,4,0,254,32,64,64,128,128,128,64,64,32,3, + 9,9,4,1,254,128,64,64,32,32,32,64,64,128,3,3, + 3,5,1,2,160,64,160,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,2,0,254,64,64,128,5,1,1,6,0, + 2,248,1,1,1,2,1,0,128,3,7,7,3,0,0,32, + 32,64,64,64,128,128,4,7,7,5,0,0,96,144,144,144, + 144,144,96,3,7,7,5,1,0,64,192,64,64,64,64,224, + 4,7,7,5,0,0,96,144,16,32,32,64,240,4,7,7, + 5,0,0,96,144,16,96,16,16,224,5,7,7,5,0,0, + 16,48,80,144,248,16,16,4,7,7,5,0,0,112,64,224, + 16,16,16,224,4,7,7,5,0,0,112,128,224,144,144,144, + 96,4,7,7,5,0,0,240,144,32,32,64,64,64,4,7, + 7,5,0,0,96,144,144,96,144,144,96,4,7,7,5,0, + 0,96,144,144,144,112,32,192,1,5,5,2,1,0,128,0, + 0,0,128,2,7,7,2,0,254,64,0,0,0,64,64,128, + 6,5,5,7,0,0,12,48,192,48,12,5,3,3,6,0, + 1,248,0,248,6,5,5,6,0,0,192,48,12,48,192,3, + 7,7,5,1,0,64,160,32,64,64,0,64,5,6,6,6, + 0,0,104,176,0,248,0,248,7,7,7,8,0,0,16,56, + 40,40,124,68,238,5,7,7,6,0,0,240,72,72,112,72, + 72,240,7,7,7,8,0,0,238,68,40,16,40,68,238,6, + 7,7,7,0,0,48,48,88,72,140,132,252,5,7,7,6, + 0,0,248,72,64,112,64,72,248,7,7,7,8,0,0,56, + 16,124,146,124,16,56,5,7,7,6,0,0,248,72,64,64, + 64,64,224,7,7,7,8,0,0,238,68,68,124,68,68,238, + 3,7,7,3,0,0,224,64,64,64,64,64,224,6,7,7, + 7,0,0,16,40,152,76,72,72,48,6,7,7,7,0,0, + 236,72,80,96,80,72,236,7,7,7,7,0,0,16,16,40, + 40,68,68,238,9,7,14,10,0,0,227,128,99,0,85,0, + 85,0,93,0,73,0,235,128,7,7,7,8,0,0,238,100, + 84,84,76,76,228,6,7,7,7,0,0,120,204,132,132,132, + 204,120,7,7,7,8,0,0,254,68,68,68,68,68,238,6, + 7,7,7,0,0,120,204,132,180,132,204,120,5,7,7,6, + 0,0,240,72,72,112,64,64,224,5,7,7,6,0,0,248, + 136,64,32,64,136,248,5,7,7,6,0,0,248,168,32,32, + 32,32,112,7,7,7,8,0,0,238,68,40,56,16,16,56, + 4,7,7,5,0,254,112,128,128,128,96,16,96,8,7,7, + 9,0,0,60,102,66,66,102,165,231,6,7,7,7,0,0, + 120,72,0,48,0,132,252,9,7,14,9,0,0,221,128,73, + 0,73,0,62,0,8,0,8,0,28,0,5,7,7,6,0, + 0,248,136,16,32,64,136,248,2,9,9,3,0,254,192,128, + 128,128,128,128,128,128,192,5,5,5,7,1,0,32,0,0, + 0,136,2,9,9,3,1,254,192,64,64,64,64,64,64,64, + 192,5,7,7,7,1,0,32,32,32,32,32,32,248,5,1, + 1,5,0,254,248,6,1,1,5,0,9,252,6,5,5,7, + 0,0,104,168,144,148,104,4,10,10,5,0,254,96,144,144, + 160,144,144,208,160,128,128,5,7,7,6,0,254,200,80,80, + 32,80,80,152,4,8,8,5,0,0,96,144,64,96,144,144, + 144,96,4,5,5,5,0,0,96,144,192,144,96,5,9,9, + 6,0,254,32,32,112,168,168,168,112,32,32,5,7,7,6, + 0,254,200,168,40,48,16,32,32,5,7,7,6,0,254,80, + 232,72,72,72,8,8,3,5,5,4,0,0,192,64,64,64, + 96,5,7,7,6,0,254,48,168,168,168,112,32,32,5,5, + 5,6,0,0,72,216,96,80,72,6,8,8,6,0,0,192, + 160,32,32,80,80,148,136,5,7,7,6,0,254,144,144,144, + 144,232,128,192,5,5,5,6,0,0,136,136,80,80,32,4, + 5,5,5,0,0,96,144,144,144,96,5,5,5,6,0,0, + 248,80,80,88,208,4,7,7,5,0,0,96,144,144,240,144, + 144,96,4,8,8,5,0,253,96,144,144,144,224,128,128,128, + 5,5,5,6,0,0,120,144,144,144,96,4,5,5,5,0, + 0,240,64,64,80,96,5,5,5,6,0,0,80,200,72,72, + 48,7,6,6,8,0,0,254,68,130,146,146,108,7,5,5, + 8,0,0,68,130,146,146,108,4,10,10,5,0,254,128,176, + 64,112,128,128,128,96,16,112,7,7,7,7,0,254,146,84, + 84,84,56,16,16,4,10,10,5,0,254,128,176,96,128,128, + 128,128,96,16,112,3,9,9,5,1,254,32,64,64,64,128, + 64,64,64,32,1,9,9,2,0,254,128,128,128,128,128,128, + 128,128,128,3,9,9,5,1,254,128,64,64,64,32,64,64, + 64,128,5,2,2,6,0,2,104,176,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,6,7,7,7, + 0,0,140,212,112,32,32,32,112,3,3,3,3,0,5,32, + 64,128,5,7,7,6,0,0,8,48,192,48,8,0,248,4, + 7,7,3,255,0,16,16,32,32,64,64,128,7,3,3,7, + 0,1,108,146,108,5,9,9,5,0,254,24,32,112,32,32, + 32,32,32,192,5,5,5,7,1,0,112,112,248,248,32,5, + 5,5,7,1,0,32,112,248,112,32,5,5,5,7,1,0, + 216,248,248,112,32,5,5,5,7,1,0,32,112,248,248,32, + 10,5,10,10,0,0,33,0,64,128,255,192,64,128,33,0, + 10,5,10,10,0,0,32,0,64,0,255,192,64,0,32,0, + 5,14,14,6,0,252,32,112,168,32,32,32,32,32,32,32, + 32,32,32,32,10,5,10,10,0,0,1,0,0,128,255,192, + 0,128,1,0,5,13,13,6,0,254,32,32,32,32,32,32, + 32,32,32,32,168,112,32,3,4,4,4,0,3,64,160,160, + 64,5,7,7,6,0,0,32,32,248,32,32,0,248,5,3, + 3,4,0,5,40,80,160,5,7,7,6,0,0,128,96,24, + 96,128,0,248,5,5,5,6,0,0,136,80,32,80,136,6, + 3,3,7,0,1,108,144,108,4,8,8,5,0,0,96,144, + 16,16,112,144,144,96,4,3,3,5,0,1,96,240,96,5, + 5,5,6,0,0,32,0,248,0,32,5,5,5,6,0,0, + 16,248,32,248,64,5,5,5,6,0,1,248,0,248,0,248, + 5,5,5,6,0,0,104,176,0,104,176,7,1,1,9,1, + 0,146,1,15,15,6,2,252,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,10,1,2,10,0,2,255,192,6, + 6,6,7,0,0,4,4,4,68,252,64,7,7,7,8,0, + 0,204,102,52,92,76,38,98,6,9,9,7,0,255,124,132, + 200,24,12,4,68,232,48,8,8,8,8,0,0,108,146,146, + 92,20,18,82,163,7,8,8,9,1,254,16,36,74,82,106, + 108,160,96,7,7,7,8,0,0,56,68,170,146,170,68,56, + 7,7,7,8,0,0,56,68,146,186,146,68,56,7,9,9, + 8,0,255,2,60,76,138,146,162,100,120,128,7,5,5,8, + 0,0,56,68,130,130,130,7,5,5,8,0,0,130,130,130, + 68,56,7,5,5,7,0,0,248,4,2,4,248,7,7,7, + 7,0,254,248,4,2,4,248,0,254,7,7,7,7,0,255, + 4,62,72,136,80,62,32,7,5,5,7,0,0,62,64,128, + 64,62,7,7,7,7,0,254,62,64,128,64,62,0,254,5, + 5,5,7,1,0,120,128,248,128,120,5,7,7,7,1,255, + 16,120,144,248,160,120,64,7,7,7,8,0,0,2,4,8, + 16,32,64,254,6,7,7,7,0,0,252,132,132,72,72,48, + 48,7,8,8,8,0,255,56,68,250,170,178,174,68,56,7, + 8,8,8,0,255,56,68,154,170,162,154,68,56,10,5,10, + 10,0,2,253,0,170,128,42,128,42,128,122,192,8,9,9, + 9,0,255,255,66,66,66,66,66,66,66,231,6,10,10,6, + 0,0,4,4,8,8,72,208,80,80,32,32,1,1,1,3, + 1,2,128,6,3,3,7,0,0,252,4,4,5,5,5,6, + 0,0,32,80,80,136,136,5,5,5,6,0,0,136,136,80, + 80,32,10,5,10,11,0,0,33,0,127,128,128,64,127,128, + 33,0,9,5,10,10,0,0,32,0,127,128,128,0,127,128, + 32,0,5,10,10,6,0,0,32,112,216,80,80,80,80,80, + 80,80,9,5,10,10,0,0,2,0,255,0,0,128,255,0, + 2,0,5,10,10,6,0,0,80,80,80,80,80,80,80,216, + 80,32,7,7,7,7,0,0,16,40,68,198,68,40,16,3, + 9,9,3,0,254,32,32,64,64,128,64,64,32,32,7,8, + 8,8,0,255,56,68,186,170,178,170,68,56,7,8,8,8, + 0,255,56,68,154,162,162,154,68,56,8,5,5,9,0,2, + 250,85,85,85,85,6,9,9,7,0,255,252,132,64,32,16, + 32,64,132,252,3,14,14,4,1,252,32,64,64,128,128,128, + 128,128,128,128,128,128,128,128,1,15,15,4,1,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,3,15,15, + 4,1,252,128,128,128,128,128,128,128,128,128,128,128,128,64, + 64,32,3,14,14,4,1,252,224,128,128,128,128,128,128,128, + 128,128,128,128,128,128,1,15,15,4,1,252,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,4,1, + 254,128,128,128,128,128,128,128,128,128,128,128,128,224,3,14, + 14,5,2,252,96,128,128,128,128,128,128,128,128,128,128,128, + 128,128,3,15,15,5,0,252,32,32,32,32,32,64,128,64, + 32,32,32,32,32,32,32,3,13,13,5,2,254,128,128,128, + 128,128,128,128,128,128,128,128,128,96,1,15,15,5,2,252, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255, + 3,9,9,3,0,254,128,128,64,64,32,64,64,128,128,3, + 12,12,3,0,254,32,64,64,64,64,64,64,64,64,64,64, + 128,4,14,14,7,3,252,48,80,128,128,128,128,128,128,128, + 128,128,128,128,128,1,15,15,7,0,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,4,13,13,7,0,254, + 16,16,16,16,16,16,16,16,16,16,16,160,192,3,14,14, + 4,0,252,128,64,64,32,32,32,32,32,32,32,32,32,32, + 32,1,15,15,4,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,3,15,15,4,0,252,32,32,32,32, + 32,32,32,32,32,32,32,32,64,64,128,3,14,14,4,0, + 252,224,32,32,32,32,32,32,32,32,32,32,32,32,32,1, + 15,15,4,2,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,13,13,4,0,254,32,32,32,32,32,32, + 32,32,32,32,32,32,224,3,14,14,5,0,252,192,32,32, + 32,32,32,32,32,32,32,32,32,32,32,3,15,15,5,2, + 252,128,128,128,128,128,64,32,64,128,128,128,128,128,128,128, + 3,13,13,5,0,254,32,32,32,32,32,32,32,32,32,32, + 32,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--11-80-100-100-P-61-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 9 h=10 x= 1 y= 9 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w=11 h=15 x=-1 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb08r[1211] U8G_SECTION(".progmem.u8g_font_symb08r") = { + 0,11,15,255,252,7,1,152,3,60,32,127,254,10,253,7, + 254,0,0,0,3,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,7,7,7,7,0,0,130,68,124,40,40,16, + 16,5,7,7,5,0,0,80,80,248,80,248,80,80,5,7, + 7,6,0,0,248,8,8,120,8,8,248,7,7,7,8,0, + 0,100,188,168,86,42,42,68,6,7,7,7,0,0,32,80, + 80,108,152,152,108,4,5,5,5,0,0,224,16,112,16,224, + 3,9,9,4,0,254,32,64,64,128,128,128,64,64,32,3, + 9,9,4,1,254,128,64,64,32,32,32,64,64,128,3,3, + 3,5,1,2,160,64,160,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,2,0,254,64,64,128,5,1,1,6,0, + 2,248,1,1,1,2,1,0,128,3,7,7,3,0,0,32, + 32,64,64,64,128,128,4,7,7,5,0,0,96,144,144,144, + 144,144,96,3,7,7,5,1,0,64,192,64,64,64,64,224, + 4,7,7,5,0,0,96,144,16,32,32,64,240,4,7,7, + 5,0,0,96,144,16,96,16,16,224,5,7,7,5,0,0, + 16,48,80,144,248,16,16,4,7,7,5,0,0,112,64,224, + 16,16,16,224,4,7,7,5,0,0,112,128,224,144,144,144, + 96,4,7,7,5,0,0,240,144,32,32,64,64,64,4,7, + 7,5,0,0,96,144,144,96,144,144,96,4,7,7,5,0, + 0,96,144,144,144,112,32,192,1,5,5,2,1,0,128,0, + 0,0,128,2,7,7,2,0,254,64,0,0,0,64,64,128, + 6,5,5,7,0,0,12,48,192,48,12,5,3,3,6,0, + 1,248,0,248,6,5,5,6,0,0,192,48,12,48,192,3, + 7,7,5,1,0,64,160,32,64,64,0,64,5,6,6,6, + 0,0,104,176,0,248,0,248,7,7,7,8,0,0,16,56, + 40,40,124,68,238,5,7,7,6,0,0,240,72,72,112,72, + 72,240,7,7,7,8,0,0,238,68,40,16,40,68,238,6, + 7,7,7,0,0,48,48,88,72,140,132,252,5,7,7,6, + 0,0,248,72,64,112,64,72,248,7,7,7,8,0,0,56, + 16,124,146,124,16,56,5,7,7,6,0,0,248,72,64,64, + 64,64,224,7,7,7,8,0,0,238,68,68,124,68,68,238, + 3,7,7,3,0,0,224,64,64,64,64,64,224,6,7,7, + 7,0,0,16,40,152,76,72,72,48,6,7,7,7,0,0, + 236,72,80,96,80,72,236,7,7,7,7,0,0,16,16,40, + 40,68,68,238,9,7,14,10,0,0,227,128,99,0,85,0, + 85,0,93,0,73,0,235,128,7,7,7,8,0,0,238,100, + 84,84,76,76,228,6,7,7,7,0,0,120,204,132,132,132, + 204,120,7,7,7,8,0,0,254,68,68,68,68,68,238,6, + 7,7,7,0,0,120,204,132,180,132,204,120,5,7,7,6, + 0,0,240,72,72,112,64,64,224,5,7,7,6,0,0,248, + 136,64,32,64,136,248,5,7,7,6,0,0,248,168,32,32, + 32,32,112,7,7,7,8,0,0,238,68,40,56,16,16,56, + 4,7,7,5,0,254,112,128,128,128,96,16,96,8,7,7, + 9,0,0,60,102,66,66,102,165,231,6,7,7,7,0,0, + 120,72,0,48,0,132,252,9,7,14,9,0,0,221,128,73, + 0,73,0,62,0,8,0,8,0,28,0,5,7,7,6,0, + 0,248,136,16,32,64,136,248,2,9,9,3,0,254,192,128, + 128,128,128,128,128,128,192,5,5,5,7,1,0,32,0,0, + 0,136,2,9,9,3,1,254,192,64,64,64,64,64,64,64, + 192,5,7,7,7,1,0,32,32,32,32,32,32,248,5,1, + 1,5,0,254,248,6,1,1,5,0,9,252,6,5,5,7, + 0,0,104,168,144,148,104,4,10,10,5,0,254,96,144,144, + 160,144,144,208,160,128,128,5,7,7,6,0,254,200,80,80, + 32,80,80,152,4,8,8,5,0,0,96,144,64,96,144,144, + 144,96,4,5,5,5,0,0,96,144,192,144,96,5,9,9, + 6,0,254,32,32,112,168,168,168,112,32,32,5,7,7,6, + 0,254,200,168,40,48,16,32,32,5,7,7,6,0,254,80, + 232,72,72,72,8,8,3,5,5,4,0,0,192,64,64,64, + 96,5,7,7,6,0,254,48,168,168,168,112,32,32,5,5, + 5,6,0,0,72,216,96,80,72,6,8,8,6,0,0,192, + 160,32,32,80,80,148,136,5,7,7,6,0,254,144,144,144, + 144,232,128,192,5,5,5,6,0,0,136,136,80,80,32,4, + 5,5,5,0,0,96,144,144,144,96,5,5,5,6,0,0, + 248,80,80,88,208,4,7,7,5,0,0,96,144,144,240,144, + 144,96,4,8,8,5,0,253,96,144,144,144,224,128,128,128, + 5,5,5,6,0,0,120,144,144,144,96,4,5,5,5,0, + 0,240,64,64,80,96,5,5,5,6,0,0,80,200,72,72, + 48,7,6,6,8,0,0,254,68,130,146,146,108,7,5,5, + 8,0,0,68,130,146,146,108,4,10,10,5,0,254,128,176, + 64,112,128,128,128,96,16,112,7,7,7,7,0,254,146,84, + 84,84,56,16,16,4,10,10,5,0,254,128,176,96,128,128, + 128,128,96,16,112,3,9,9,5,1,254,32,64,64,64,128, + 64,64,64,32,1,9,9,2,0,254,128,128,128,128,128,128, + 128,128,128,3,9,9,5,1,254,128,64,64,64,32,64,64, + 64,128,5,2,2,6,0,2,104,176,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=15 x= 7 y=11 dx=15 dy= 0 ascent=12 len=24 + Font Bounding box w=16 h=15 x=-1 y=-3 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb10[3433] U8G_SECTION(".progmem.u8g_font_symb10") = { + 0,16,15,255,253,10,2,6,4,121,32,255,253,12,253,10, + 253,0,0,0,4,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,9,10,20,9,0,0,128,128,65, + 0,65,0,62,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,10,10,7,0,0,20,20,20,126,40,40,252,80,80, + 80,6,10,10,8,1,0,252,4,4,4,252,4,4,4,4, + 252,9,10,20,12,1,0,121,128,151,0,146,0,148,0,108, + 0,27,0,20,128,36,128,68,128,195,0,9,10,20,11,1, + 0,48,0,72,0,72,0,112,0,39,0,114,0,202,0,132, + 0,206,128,123,0,5,7,7,6,0,0,224,16,8,120,8, + 16,224,3,13,13,5,1,253,32,64,64,128,128,128,128,128, + 128,128,64,64,32,3,13,13,5,1,253,128,64,64,32,32, + 32,32,32,32,32,64,64,128,5,6,6,7,1,2,32,168, + 112,112,168,32,7,7,7,8,0,0,16,16,16,254,16,16, + 16,2,4,4,3,0,254,64,64,64,128,7,1,1,8,0, + 3,254,1,2,2,3,1,0,128,128,4,10,10,4,0,0, + 16,16,32,32,32,64,64,64,128,128,6,10,10,7,0,0, + 120,204,132,132,132,132,132,132,204,120,5,10,10,7,1,0, + 32,224,32,32,32,32,32,32,32,248,6,10,10,7,0,0, + 112,216,136,8,24,16,32,64,196,252,6,10,10,7,0,0, + 120,204,132,12,56,12,4,4,204,120,6,10,10,7,0,0, + 8,24,24,40,104,72,136,252,8,8,5,10,10,7,1,0, + 120,64,128,224,48,24,8,8,144,224,6,10,10,7,0,0, + 28,48,64,64,248,140,132,132,204,120,6,10,10,7,0,0, + 252,132,8,8,16,16,32,32,64,64,5,10,10,7,1,0, + 112,216,136,216,112,136,136,136,216,112,6,10,10,7,0,0, + 120,204,132,132,204,120,24,16,96,192,1,7,7,4,2,0, + 128,128,0,0,0,128,128,2,9,9,4,1,254,64,64,0, + 0,0,64,64,64,128,7,7,7,8,1,0,2,12,48,192, + 48,12,2,7,3,3,8,0,2,254,0,254,7,7,7,8, + 0,0,128,96,24,6,24,96,128,5,10,10,6,1,0,112, + 136,136,8,16,32,32,0,32,32,7,7,7,8,0,0,114, + 156,0,254,0,0,254,9,10,20,11,1,0,8,0,28,0, + 20,0,20,0,34,0,34,0,62,0,99,0,65,0,227,128, + 7,10,10,9,1,0,252,70,66,70,124,70,66,66,70,252, + 9,10,20,11,1,0,227,128,65,0,34,0,20,0,8,0, + 20,0,34,0,34,0,65,0,227,128,7,10,10,9,1,0, + 16,16,40,40,40,68,68,68,130,254,7,10,10,9,1,0, + 254,66,64,68,124,68,64,66,66,254,9,10,20,11,1,0, + 28,0,8,0,127,0,201,128,136,128,136,128,201,128,127,0, + 8,0,28,0,7,10,10,9,1,0,254,66,64,64,64,64, + 64,64,64,224,9,10,20,11,1,0,227,128,65,0,65,0, + 65,0,127,0,65,0,65,0,65,0,65,0,227,128,3,10, + 10,5,1,0,224,64,64,64,64,64,64,64,64,224,8,10, + 10,9,0,0,12,10,10,102,163,34,34,34,54,28,8,10, + 10,10,1,0,238,68,72,80,112,80,72,68,70,231,9,10, + 20,10,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 34,0,65,0,65,0,227,128,11,10,20,13,1,0,224,224, + 96,192,81,64,81,64,91,64,74,64,74,64,78,64,68,64, + 228,224,9,10,20,11,1,0,227,128,97,0,81,0,89,0, + 73,0,77,0,69,0,69,0,67,0,227,0,8,10,10,10, + 1,0,60,102,66,129,129,129,129,66,102,60,9,10,20,11, + 1,0,255,128,65,0,65,0,65,0,65,0,65,0,65,0, + 65,0,65,0,227,128,8,10,10,10,1,0,60,102,66,165, + 189,165,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,10,10,9,1,0,254,194,96,48, + 24,16,32,64,193,255,7,10,10,9,1,0,254,146,146,16, + 16,16,16,16,16,56,9,10,20,9,0,0,227,128,65,0, + 34,0,34,0,20,0,8,0,8,0,8,0,8,0,28,0, + 6,10,10,7,1,253,56,192,128,128,128,96,56,4,36,56, + 10,10,20,11,0,0,12,0,51,0,33,0,64,128,64,128, + 64,128,33,0,51,0,146,64,243,192,9,10,20,9,0,0, + 127,0,65,0,0,0,34,0,62,0,34,0,0,0,0,0, + 128,128,255,128,11,10,20,11,0,0,206,96,100,192,36,128, + 36,128,31,0,4,0,4,0,4,0,4,0,14,0,7,10, + 10,9,1,0,254,134,4,8,16,16,32,64,194,254,3,13, + 13,5,1,253,224,128,128,128,128,128,128,128,128,128,128,128, + 224,8,7,7,10,1,0,24,24,0,0,0,195,195,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,9,10,20,10,0,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,255,128,7,1,1,7,0, + 253,254,8,1,1,7,7,11,255,8,7,7,9,1,0,118, + 212,136,136,136,213,102,6,14,14,8,1,253,120,204,132,140, + 152,140,132,132,132,204,184,128,128,128,8,10,10,8,0,253, + 195,166,36,60,24,56,40,100,69,195,5,11,11,7,1,0, + 112,152,128,64,112,152,136,136,136,216,112,5,7,7,6,1, + 0,120,200,128,96,128,200,112,7,13,13,9,1,253,16,16, + 16,56,84,146,146,146,84,56,16,16,16,6,10,10,6,0, + 253,196,164,36,40,40,24,24,16,48,48,7,10,10,8,0, + 253,108,178,34,34,34,34,34,2,2,2,5,7,7,5,0, + 0,96,160,32,32,32,40,48,7,10,10,9,1,253,24,84, + 210,146,146,84,56,16,16,16,7,7,7,8,0,0,70,202, + 80,112,88,76,70,8,10,10,8,0,0,96,80,16,16,40, + 40,72,68,133,131,8,9,9,8,0,254,68,68,68,68,68, + 77,123,64,192,7,7,7,8,0,0,198,66,34,34,20,20, + 8,6,7,7,8,1,0,120,204,132,132,132,204,120,8,7, + 7,8,0,0,126,164,36,36,36,37,102,5,10,10,7,1, + 0,112,216,136,136,248,136,136,136,216,112,6,10,10,8,1, + 253,120,204,132,132,132,204,184,128,128,128,7,7,7,8,1, + 0,126,200,132,132,132,204,120,5,7,7,6,0,0,120,160, + 32,32,32,40,48,7,7,7,8,0,0,100,162,34,34,34, + 38,28,10,8,16,11,0,0,127,192,160,128,68,64,68,64, + 68,64,68,64,100,192,59,128,9,7,14,11,1,0,99,0, + 136,128,136,128,136,128,136,128,201,128,119,0,6,15,15,7, + 1,253,32,64,56,32,64,120,32,64,128,128,192,120,4,36, + 56,9,10,20,9,0,253,136,128,73,0,73,0,73,0,107, + 0,62,0,28,0,8,0,8,0,8,0,6,14,14,7,1, + 253,32,68,60,16,32,64,64,128,128,192,120,4,36,56,5, + 13,13,7,1,253,24,32,32,32,32,64,128,64,32,32,32, + 32,24,1,13,13,3,1,253,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,13,13,7,1,253,192,32,32,32,32, + 16,8,16,32,32,32,32,192,6,2,2,8,1,3,100,152, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,8,10,10,9,0,0,198,105,43,16,16,16,16,16, + 16,56,4,3,3,4,0,7,48,96,128,7,9,9,8,0, + 0,2,12,48,192,48,12,2,0,254,5,10,10,4,255,0, + 8,8,16,16,32,32,64,64,128,128,9,4,8,10,0,2, + 119,0,152,128,140,128,119,0,7,13,13,7,0,253,6,10, + 8,8,60,16,16,16,32,32,32,160,192,9,7,14,11,1, + 0,28,0,28,0,28,0,235,128,255,128,235,128,8,0,7, + 7,7,11,2,0,16,56,124,254,124,56,16,7,7,7,11, + 2,0,108,254,254,254,124,56,16,9,7,14,11,1,0,8, + 0,28,0,62,0,127,0,255,128,107,0,8,0,13,7,14, + 15,1,0,16,64,32,32,64,16,255,248,64,16,32,32,16, + 64,14,7,14,14,0,0,16,0,32,0,64,0,255,252,64, + 0,32,0,16,0,7,15,15,9,1,253,16,56,84,146,16, + 16,16,16,16,16,16,16,16,16,16,14,7,14,14,0,0, + 0,32,0,16,0,8,255,252,0,8,0,16,0,32,7,15, + 15,9,1,253,16,16,16,16,16,16,16,16,16,16,16,146, + 84,56,16,4,4,4,6,1,6,96,144,144,96,7,9,9, + 8,0,0,16,16,16,254,16,16,16,0,254,7,3,3,6, + 0,7,54,108,144,7,9,9,8,0,0,128,96,24,6,24, + 96,128,0,254,7,7,7,8,0,0,130,68,40,16,40,68, + 130,8,4,4,10,0,2,119,136,136,119,6,11,11,7,0, + 0,112,136,4,4,4,116,204,132,132,200,112,5,5,5,7, + 1,1,112,248,248,248,112,7,7,7,8,0,0,16,16,0, + 254,0,16,16,7,7,7,8,0,0,4,8,254,16,254,32, + 64,7,5,5,8,0,1,254,0,254,0,254,7,5,5,8, + 0,2,114,156,0,114,156,11,2,4,15,2,0,132,32,132, + 32,1,15,15,9,4,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,15,1,2,15,0,3,255,254,8,9, + 9,10,0,0,1,1,1,1,1,1,65,255,64,8,10,10, + 12,2,0,136,206,102,36,116,156,140,70,99,225,8,12,12, + 10,1,255,63,97,66,70,36,6,3,1,97,241,26,12,10, + 11,22,12,1,0,115,0,157,128,137,128,139,0,206,0,106, + 0,41,0,9,0,9,0,105,0,176,192,9,12,24,12,1, + 253,16,0,35,0,69,128,72,128,144,128,212,128,105,0,107, + 0,182,0,144,0,144,0,96,0,9,9,18,11,1,0,28, + 0,99,0,99,0,148,128,136,128,148,128,99,0,99,0,28, + 0,9,9,18,11,1,0,28,0,99,0,73,0,136,128,190, + 128,136,128,73,0,99,0,28,0,11,11,22,12,0,0,31, + 32,96,192,64,192,129,32,130,32,132,32,136,32,144,32,96, + 64,96,192,159,0,10,7,14,10,0,0,30,0,97,128,64, + 128,128,64,128,64,128,64,128,64,10,7,14,10,0,0,128, + 64,128,64,128,64,128,64,64,128,97,128,30,0,9,7,14, + 10,0,0,254,0,1,0,0,128,0,128,0,128,1,0,254, + 0,9,9,18,10,1,254,254,0,1,0,0,128,0,128,0, + 128,1,0,254,0,0,0,255,128,9,9,18,10,0,255,1, + 0,63,128,66,0,130,0,132,0,132,0,72,0,63,128,16, + 0,9,7,14,10,1,0,63,128,64,0,128,0,128,0,128, + 0,64,0,63,128,9,9,18,10,0,254,63,128,64,0,128, + 0,128,0,128,0,64,0,63,128,0,0,255,128,7,7,7, + 10,1,0,62,64,128,254,128,64,62,7,9,9,10,0,255, + 4,62,72,144,254,144,96,62,64,11,10,20,11,0,0,0, + 64,0,128,1,0,2,0,4,0,8,0,16,0,32,0,64, + 0,255,224,9,11,22,10,0,0,255,128,128,128,65,0,65, + 0,34,0,34,0,34,0,20,0,20,0,8,0,8,0,10, + 10,20,12,1,0,30,0,33,0,124,128,146,64,146,64,156, + 64,146,64,121,128,33,0,30,0,10,10,20,12,1,0,30, + 0,33,0,78,128,146,64,144,64,144,64,146,64,76,128,33, + 0,30,0,11,6,12,11,0,4,250,128,170,128,38,192,37, + 64,37,64,118,224,10,12,24,12,1,255,255,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,64, + 128,225,192,8,12,12,8,0,0,1,1,1,2,2,98,164, + 36,20,20,8,8,1,2,2,4,1,3,128,128,9,5,10, + 10,0,0,255,128,0,128,0,128,0,128,0,128,8,7,7, + 9,0,0,24,24,36,36,66,66,129,8,7,7,9,0,0, + 129,66,66,36,36,24,24,13,7,14,15,1,0,16,64,32, + 32,127,240,192,24,127,240,32,32,16,64,13,7,14,14,0, + 0,16,0,32,0,127,248,192,0,127,248,32,0,16,0,7, + 12,12,9,1,0,16,56,108,170,40,40,40,40,40,40,40, + 40,13,7,14,14,1,0,0,64,0,32,255,240,0,24,255, + 240,0,32,0,64,7,12,12,9,1,0,40,40,40,40,40, + 40,40,40,170,108,56,16,7,11,11,7,0,0,16,40,40, + 68,68,130,68,68,40,40,16,4,15,15,5,0,253,16,32, + 32,64,64,64,128,128,128,64,64,64,32,32,16,10,10,20, + 12,1,0,30,0,33,0,92,128,146,64,146,64,156,64,146, + 64,82,128,33,0,30,0,10,10,20,12,1,0,30,0,33, + 0,76,128,146,64,144,64,144,64,146,64,76,128,33,0,30, + 0,10,6,12,11,0,4,250,128,34,128,38,192,37,64,37, + 64,36,64,9,12,24,10,0,255,255,0,129,0,64,0,32, + 0,16,0,8,0,8,0,16,0,32,0,64,0,128,128,255, + 128,4,15,15,6,1,253,16,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,1,15,15,6,1,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,128,128,128,128,128,128,128,128,128,128,128,64,64,32,16, + 4,15,15,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,1,15,15,6,1,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,4,15,15,6,1,253, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,240,4, + 15,15,7,3,253,48,64,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,15,15,7,1,253,32,32,32,32,32,32, + 64,128,64,32,32,32,32,32,32,4,15,15,7,3,253,128, + 128,128,128,128,128,128,128,128,128,128,128,128,64,48,1,15, + 15,7,3,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,255,4,15,15,5,1,253,128,64,64,32,32,32, + 16,16,16,32,32,32,64,64,128,5,13,13,4,0,255,24, + 40,32,32,32,32,32,32,32,32,32,160,192,5,15,15,10, + 5,253,56,88,64,128,128,128,128,128,128,128,128,128,128,128, + 128,1,15,15,10,5,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,5,15,15,10,1,253,8,8,8,8, + 8,8,8,8,8,8,8,8,16,208,224,4,15,15,6,1, + 253,128,64,32,32,16,16,16,16,16,16,16,16,16,16,16, + 1,15,15,6,4,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,4,15,15,6,1,253,16,16,16,16,16, + 16,16,16,16,16,16,32,32,64,128,4,15,15,6,1,253, + 240,16,16,16,16,16,16,16,16,16,16,16,16,16,16,1, + 15,15,6,4,253,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,4,15,15,6,1,253,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,240,4,15,15,7,0,253,192, + 32,16,16,16,16,16,16,16,16,16,16,16,16,16,3,15, + 15,7,3,253,128,128,128,128,128,128,64,32,64,128,128,128, + 128,128,128,4,15,15,7,0,253,16,16,16,16,16,16,16, + 16,16,16,16,16,16,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=11 h=15 x= 7 y=11 dx=13 dy= 0 ascent=12 len=20 + Font Bounding box w=16 h=15 x=-1 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb10r[1633] U8G_SECTION(".progmem.u8g_font_symb10r") = { + 0,16,15,255,253,10,2,6,4,121,32,127,253,12,253,10, + 253,0,0,0,4,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,9,10,20,9,0,0,128,128,65, + 0,65,0,62,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,10,10,7,0,0,20,20,20,126,40,40,252,80,80, + 80,6,10,10,8,1,0,252,4,4,4,252,4,4,4,4, + 252,9,10,20,12,1,0,121,128,151,0,146,0,148,0,108, + 0,27,0,20,128,36,128,68,128,195,0,9,10,20,11,1, + 0,48,0,72,0,72,0,112,0,39,0,114,0,202,0,132, + 0,206,128,123,0,5,7,7,6,0,0,224,16,8,120,8, + 16,224,3,13,13,5,1,253,32,64,64,128,128,128,128,128, + 128,128,64,64,32,3,13,13,5,1,253,128,64,64,32,32, + 32,32,32,32,32,64,64,128,5,6,6,7,1,2,32,168, + 112,112,168,32,7,7,7,8,0,0,16,16,16,254,16,16, + 16,2,4,4,3,0,254,64,64,64,128,7,1,1,8,0, + 3,254,1,2,2,3,1,0,128,128,4,10,10,4,0,0, + 16,16,32,32,32,64,64,64,128,128,6,10,10,7,0,0, + 120,204,132,132,132,132,132,132,204,120,5,10,10,7,1,0, + 32,224,32,32,32,32,32,32,32,248,6,10,10,7,0,0, + 112,216,136,8,24,16,32,64,196,252,6,10,10,7,0,0, + 120,204,132,12,56,12,4,4,204,120,6,10,10,7,0,0, + 8,24,24,40,104,72,136,252,8,8,5,10,10,7,1,0, + 120,64,128,224,48,24,8,8,144,224,6,10,10,7,0,0, + 28,48,64,64,248,140,132,132,204,120,6,10,10,7,0,0, + 252,132,8,8,16,16,32,32,64,64,5,10,10,7,1,0, + 112,216,136,216,112,136,136,136,216,112,6,10,10,7,0,0, + 120,204,132,132,204,120,24,16,96,192,1,7,7,4,2,0, + 128,128,0,0,0,128,128,2,9,9,4,1,254,64,64,0, + 0,0,64,64,64,128,7,7,7,8,1,0,2,12,48,192, + 48,12,2,7,3,3,8,0,2,254,0,254,7,7,7,8, + 0,0,128,96,24,6,24,96,128,5,10,10,6,1,0,112, + 136,136,8,16,32,32,0,32,32,7,7,7,8,0,0,114, + 156,0,254,0,0,254,9,10,20,11,1,0,8,0,28,0, + 20,0,20,0,34,0,34,0,62,0,99,0,65,0,227,128, + 7,10,10,9,1,0,252,70,66,70,124,70,66,66,70,252, + 9,10,20,11,1,0,227,128,65,0,34,0,20,0,8,0, + 20,0,34,0,34,0,65,0,227,128,7,10,10,9,1,0, + 16,16,40,40,40,68,68,68,130,254,7,10,10,9,1,0, + 254,66,64,68,124,68,64,66,66,254,9,10,20,11,1,0, + 28,0,8,0,127,0,201,128,136,128,136,128,201,128,127,0, + 8,0,28,0,7,10,10,9,1,0,254,66,64,64,64,64, + 64,64,64,224,9,10,20,11,1,0,227,128,65,0,65,0, + 65,0,127,0,65,0,65,0,65,0,65,0,227,128,3,10, + 10,5,1,0,224,64,64,64,64,64,64,64,64,224,8,10, + 10,9,0,0,12,10,10,102,163,34,34,34,54,28,8,10, + 10,10,1,0,238,68,72,80,112,80,72,68,70,231,9,10, + 20,10,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 34,0,65,0,65,0,227,128,11,10,20,13,1,0,224,224, + 96,192,81,64,81,64,91,64,74,64,74,64,78,64,68,64, + 228,224,9,10,20,11,1,0,227,128,97,0,81,0,89,0, + 73,0,77,0,69,0,69,0,67,0,227,0,8,10,10,10, + 1,0,60,102,66,129,129,129,129,66,102,60,9,10,20,11, + 1,0,255,128,65,0,65,0,65,0,65,0,65,0,65,0, + 65,0,65,0,227,128,8,10,10,10,1,0,60,102,66,165, + 189,165,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,10,10,9,1,0,254,194,96,48, + 24,16,32,64,193,255,7,10,10,9,1,0,254,146,146,16, + 16,16,16,16,16,56,9,10,20,9,0,0,227,128,65,0, + 34,0,34,0,20,0,8,0,8,0,8,0,8,0,28,0, + 6,10,10,7,1,253,56,192,128,128,128,96,56,4,36,56, + 10,10,20,11,0,0,12,0,51,0,33,0,64,128,64,128, + 64,128,33,0,51,0,146,64,243,192,9,10,20,9,0,0, + 127,0,65,0,0,0,34,0,62,0,34,0,0,0,0,0, + 128,128,255,128,11,10,20,11,0,0,206,96,100,192,36,128, + 36,128,31,0,4,0,4,0,4,0,4,0,14,0,7,10, + 10,9,1,0,254,134,4,8,16,16,32,64,194,254,3,13, + 13,5,1,253,224,128,128,128,128,128,128,128,128,128,128,128, + 224,8,7,7,10,1,0,24,24,0,0,0,195,195,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,9,10,20,10,0,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,255,128,7,1,1,7,0, + 253,254,8,1,1,7,7,11,255,8,7,7,9,1,0,118, + 212,136,136,136,213,102,6,14,14,8,1,253,120,204,132,140, + 152,140,132,132,132,204,184,128,128,128,8,10,10,8,0,253, + 195,166,36,60,24,56,40,100,69,195,5,11,11,7,1,0, + 112,152,128,64,112,152,136,136,136,216,112,5,7,7,6,1, + 0,120,200,128,96,128,200,112,7,13,13,9,1,253,16,16, + 16,56,84,146,146,146,84,56,16,16,16,6,10,10,6,0, + 253,196,164,36,40,40,24,24,16,48,48,7,10,10,8,0, + 253,108,178,34,34,34,34,34,2,2,2,5,7,7,5,0, + 0,96,160,32,32,32,40,48,7,10,10,9,1,253,24,84, + 210,146,146,84,56,16,16,16,7,7,7,8,0,0,70,202, + 80,112,88,76,70,8,10,10,8,0,0,96,80,16,16,40, + 40,72,68,133,131,8,9,9,8,0,254,68,68,68,68,68, + 77,123,64,192,7,7,7,8,0,0,198,66,34,34,20,20, + 8,6,7,7,8,1,0,120,204,132,132,132,204,120,8,7, + 7,8,0,0,126,164,36,36,36,37,102,5,10,10,7,1, + 0,112,216,136,136,248,136,136,136,216,112,6,10,10,8,1, + 253,120,204,132,132,132,204,184,128,128,128,7,7,7,8,1, + 0,126,200,132,132,132,204,120,5,7,7,6,0,0,120,160, + 32,32,32,40,48,7,7,7,8,0,0,100,162,34,34,34, + 38,28,10,8,16,11,0,0,127,192,160,128,68,64,68,64, + 68,64,68,64,100,192,59,128,9,7,14,11,1,0,99,0, + 136,128,136,128,136,128,136,128,201,128,119,0,6,15,15,7, + 1,253,32,64,56,32,64,120,32,64,128,128,192,120,4,36, + 56,9,10,20,9,0,253,136,128,73,0,73,0,73,0,107, + 0,62,0,28,0,8,0,8,0,8,0,6,14,14,7,1, + 253,32,68,60,16,32,64,64,128,128,192,120,4,36,56,5, + 13,13,7,1,253,24,32,32,32,32,64,128,64,32,32,32, + 32,24,1,13,13,3,1,253,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,13,13,7,1,253,192,32,32,32,32, + 16,8,16,32,32,32,32,192,6,2,2,8,1,3,100,152, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--17-120-100-100-P-95-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=16 h=17 x= 7 y=12 dx=17 dy= 0 ascent=13 len=30 + Font Bounding box w=20 h=17 x=-3 y=-4 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb12[4136] U8G_SECTION(".progmem.u8g_font_symb12") = { + 0,20,17,253,252,11,2,70,5,85,32,255,252,13,252,12, + 252,0,0,0,4,0,1,3,11,11,5,1,0,64,224,224, + 224,64,64,64,0,64,224,64,11,12,24,11,0,0,128,32, + 128,32,64,64,64,64,63,128,32,128,17,0,17,0,10,0, + 10,0,4,0,4,0,8,11,11,8,0,0,18,18,18,127, + 36,36,36,254,72,72,72,7,12,12,9,0,0,254,2,2, + 2,2,126,2,2,2,2,2,254,11,12,24,13,1,255,48, + 64,111,128,201,0,201,0,154,0,148,192,101,160,11,32,11, + 32,18,96,34,64,33,128,12,11,22,13,0,0,14,0,25, + 0,17,0,26,0,12,240,56,64,76,128,198,128,131,0,197, + 144,120,224,5,8,8,7,1,0,224,16,24,120,24,24,16, + 224,4,14,14,5,0,254,16,32,64,64,128,128,128,128,128, + 128,64,64,32,16,4,14,14,5,0,254,128,64,32,32,16, + 16,16,16,16,16,32,32,64,128,5,5,5,8,1,3,32, + 168,112,168,32,9,9,18,9,0,0,8,0,8,0,8,0, + 8,0,255,128,8,0,8,0,8,0,8,0,3,5,5,4, + 1,254,64,224,96,64,128,9,1,2,9,0,4,255,128,3, + 3,3,4,1,0,64,224,64,5,11,11,5,255,0,8,8, + 16,16,32,32,32,64,64,128,128,7,12,12,8,0,0,56, + 108,68,198,130,130,130,130,198,68,108,56,5,12,12,8,1, + 0,32,96,160,32,32,32,32,32,32,32,32,248,7,12,12, + 8,0,0,56,76,134,2,2,4,4,8,16,34,126,252,6, + 12,12,8,1,0,56,76,132,4,8,56,12,4,4,4,200, + 112,7,12,12,8,0,0,4,4,12,20,20,36,68,68,254, + 4,4,4,7,12,12,8,0,0,62,60,64,64,240,248,12, + 4,4,4,200,240,6,12,12,8,1,0,12,48,96,64,248, + 204,132,132,132,132,76,56,6,12,12,8,1,0,252,252,136, + 8,8,16,16,16,16,32,32,32,6,12,12,8,1,0,48, + 72,132,196,104,48,88,140,132,132,72,48,6,12,12,8,1, + 0,112,200,132,132,132,132,204,124,8,24,48,192,3,8,8, + 4,1,0,64,224,64,0,0,64,224,64,3,10,10,4,1, + 254,64,224,64,0,0,64,224,96,64,128,8,9,9,9,0, + 0,1,6,24,96,128,96,24,6,1,9,4,8,9,0,2, + 255,128,0,0,0,0,255,128,8,9,9,9,0,0,128,96, + 24,6,1,6,24,96,128,6,11,11,7,0,0,120,156,140, + 12,24,16,32,0,32,112,32,8,8,8,9,0,0,113,142, + 0,0,255,0,0,255,11,11,22,12,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,63,128,65,192,64,192, + 225,224,9,11,22,11,1,0,254,0,99,0,97,128,97,128, + 99,0,126,0,99,0,97,128,97,128,99,0,254,0,10,11, + 22,12,0,0,241,192,96,128,49,0,26,0,26,0,12,0, + 22,0,19,0,35,0,65,128,227,192,10,11,22,10,0,0, + 4,0,4,0,14,0,14,0,19,0,19,0,35,0,33,128, + 65,128,64,192,255,192,8,11,11,10,1,0,255,97,96,96, + 98,126,98,96,96,97,255,12,11,22,12,0,0,15,0,6, + 0,63,192,102,96,198,48,198,48,198,48,102,96,63,192,6, + 0,15,0,9,11,22,10,1,0,255,128,97,128,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,96,0,240,0,11, + 11,22,12,0,0,241,224,96,192,96,192,96,192,96,192,127, + 192,96,192,96,192,96,192,96,192,241,224,4,11,11,6,1, + 0,240,96,96,96,96,96,96,96,96,96,240,9,12,24,10, + 0,0,12,0,18,0,17,0,9,0,69,0,163,0,33,128, + 33,0,33,0,33,0,34,0,28,0,10,11,22,12,1,0, + 243,192,97,0,98,0,100,0,104,0,120,0,108,0,102,0, + 99,0,97,128,243,192,11,11,22,11,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,33,128,64,192,64,192, + 225,224,13,11,22,14,1,0,224,56,96,112,112,112,112,176, + 88,176,89,48,77,48,78,48,70,48,68,48,224,120,10,11, + 22,11,1,0,225,192,112,128,112,128,88,128,92,128,78,128, + 70,128,67,128,67,128,65,128,224,128,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,11,11,22,12,1,0,255,224,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,11,22,12,0,0,31,0,113,192,96,192,192,96, + 209,96,223,96,209,96,192,96,96,192,113,192,31,0,8,11, + 11,9,1,0,252,102,99,99,102,124,96,96,96,96,240,9, + 11,22,10,0,0,255,128,96,128,48,0,24,0,12,0,12, + 0,8,0,16,128,32,128,127,128,255,128,10,11,22,10,0, + 0,255,192,140,64,140,64,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,30,0,10,11,22,11,1,0,241,192,96, + 128,49,0,49,0,26,0,12,0,12,0,12,0,12,0,12, + 0,30,0,7,12,12,8,0,252,60,76,128,128,128,128,124, + 62,2,2,60,56,12,12,24,12,0,0,31,128,112,224,96, + 96,192,48,192,48,192,48,192,48,96,96,48,192,137,16,249, + 240,249,240,9,11,22,11,0,0,255,128,255,128,128,128,0, + 0,34,0,62,0,34,0,0,0,128,128,255,128,255,128,12, + 11,22,13,0,0,207,48,102,96,102,96,102,96,102,96,63, + 192,6,0,6,0,6,0,6,0,15,0,8,11,11,10,1, + 0,255,131,134,12,12,24,48,48,97,193,255,3,14,14,6, + 1,254,224,128,128,128,128,128,128,128,128,128,128,128,128,224, + 9,8,16,14,2,0,8,0,28,0,8,0,0,0,0,0, + 65,0,227,128,65,0,3,14,14,5,0,254,224,32,32,32, + 32,32,32,32,32,32,32,32,32,224,9,11,22,11,1,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,8,1,1,8,0,253,255,10,1,2, + 8,7,12,255,192,10,9,18,11,0,0,57,128,101,128,195, + 0,195,0,195,0,194,0,198,64,101,64,56,128,8,17,17, + 9,0,252,60,70,66,66,70,92,70,67,67,65,65,99,94, + 64,64,64,192,8,12,12,9,0,253,99,162,150,20,28,24, + 24,56,40,105,69,198,7,12,12,8,0,0,120,140,64,48, + 24,44,70,194,130,194,68,56,7,9,9,7,0,0,56,68, + 192,192,120,192,192,66,60,7,14,14,9,1,253,16,16,56, + 84,214,146,146,146,214,84,56,16,16,16,8,13,13,7,255, + 252,97,161,146,18,20,20,8,8,16,16,48,48,48,9,12, + 24,10,0,253,110,0,177,0,33,0,33,0,33,0,33,0, + 33,0,33,0,33,0,1,0,1,0,1,128,6,9,9,5, + 255,0,32,96,160,32,32,32,32,52,24,9,12,24,10,0, + 253,39,0,73,128,201,128,136,128,136,128,136,128,201,128,73, + 0,62,0,8,0,8,0,8,0,8,9,9,9,0,0,70, + 206,80,80,120,76,76,70,79,9,13,26,9,0,0,96,0, + 208,0,144,0,16,0,8,0,24,0,24,0,56,0,40,0, + 36,0,100,128,68,128,195,0,8,13,13,9,1,252,132,132, + 132,132,132,132,132,205,182,128,128,128,128,9,9,18,8,255, + 0,225,128,33,128,49,0,51,0,18,0,26,0,12,0,12, + 0,8,0,7,9,9,9,1,0,56,68,198,130,130,130,198, + 68,56,8,9,9,9,0,0,127,255,164,36,36,36,37,103, + 102,7,12,12,9,1,0,56,108,68,198,130,254,130,130,198, + 68,108,56,7,13,13,9,1,252,56,76,134,134,130,130,198, + 196,184,128,128,128,128,9,9,18,10,1,0,31,128,116,0, + 194,0,195,0,129,0,193,0,65,0,99,0,30,0,7,9, + 9,7,0,0,60,124,144,16,16,16,18,30,12,8,9,9, + 9,1,0,68,226,161,33,33,33,33,50,28,10,10,20,11, + 0,0,127,192,155,0,32,128,100,192,68,64,68,64,68,64, + 68,64,100,192,59,128,9,9,18,11,1,0,54,0,65,0, + 201,128,136,128,136,128,136,128,136,128,201,128,119,0,7,17, + 17,8,0,252,64,88,48,64,92,60,64,128,128,128,128,124, + 62,2,2,60,56,11,13,26,11,0,252,196,96,100,192,36, + 128,36,128,36,128,36,128,36,128,53,128,31,0,4,0,4, + 0,4,0,4,0,7,17,17,8,1,252,32,76,60,32,64, + 64,128,128,128,128,128,124,62,2,2,60,56,5,14,14,8, + 1,254,24,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,14,14,3,1,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,5,14,14,8,1,254,192,32,32,32,32,32, + 24,32,32,32,32,32,32,192,8,2,2,9,0,3,113,142, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,10,11,22,10,255,0,225,128,18,192,10,192,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,30,0,3,4, + 4,4,1,8,96,96,192,128,8,11,11,9,0,0,1,6, + 24,96,128,96,24,6,1,0,255,8,11,11,3,253,0,1, + 2,2,4,8,16,16,32,64,64,128,11,5,10,12,0,2, + 113,192,138,32,132,32,138,32,113,192,7,15,15,8,0,253, + 6,10,8,8,8,126,16,16,16,16,32,32,32,160,192,9, + 10,20,12,1,255,28,0,62,0,62,0,28,0,107,0,255, + 128,255,128,107,0,8,0,28,0,7,9,9,12,2,0,16, + 56,124,124,254,124,124,56,16,8,9,9,12,2,0,102,255, + 255,255,126,60,60,24,24,9,10,20,12,2,255,8,0,28, + 0,28,0,62,0,127,0,127,0,255,128,107,0,8,0,28, + 0,15,9,18,17,0,0,8,32,16,16,32,8,64,4,255, + 254,64,4,32,8,16,16,8,32,16,9,18,16,0,0,8, + 0,16,0,32,0,64,0,255,255,64,0,32,0,16,0,8, + 0,9,15,30,10,0,254,8,0,28,0,42,0,73,0,136, + 128,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,15,9,18,16,0,0,0,32,0,16,0, + 8,0,4,255,254,0,4,0,8,0,16,0,32,9,15,30, + 10,0,254,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,136,128,73,0,42,0,28,0,8, + 0,5,5,5,6,0,6,112,136,136,136,112,9,11,22,9, + 0,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,0,0,255,128,6,4,4,7,1,8,108,108, + 216,144,8,11,11,9,0,0,128,96,24,6,1,6,24,96, + 128,0,255,9,9,18,9,0,0,128,128,65,0,34,0,20, + 0,8,0,20,0,34,0,65,0,128,128,10,5,10,11,0, + 2,113,192,138,0,132,0,138,0,113,192,7,14,14,8,0, + 255,120,196,4,2,2,2,58,102,194,194,130,196,68,56,6, + 6,6,8,1,2,120,252,252,252,252,120,8,7,7,9,0, + 1,24,24,0,255,0,24,24,9,10,20,9,0,255,2,0, + 2,0,4,0,255,128,8,0,8,0,255,128,16,0,32,0, + 32,0,8,7,7,9,0,1,255,0,0,255,0,0,255,8, + 5,5,9,0,2,113,142,0,113,142,13,3,6,16,1,0, + 66,16,231,56,66,16,1,17,17,10,4,252,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,16,1,2, + 16,0,4,255,255,9,11,22,10,0,255,0,128,0,128,0, + 128,0,128,0,128,0,128,32,128,96,128,255,128,96,0,32, + 0,9,11,22,13,2,0,68,0,231,0,103,0,50,0,26, + 0,60,0,108,0,102,0,99,0,51,128,113,0,9,14,28, + 11,0,255,30,0,63,128,67,128,65,0,66,0,34,0,19, + 0,1,0,1,128,0,128,0,128,112,128,191,0,28,0,12, + 13,26,13,0,0,113,128,138,192,140,96,196,64,100,128,37, + 0,7,128,5,128,12,192,12,192,8,208,104,96,48,64,12, + 13,26,16,2,252,12,0,17,224,34,48,36,16,72,48,114, + 32,102,96,100,192,115,0,144,0,144,0,144,0,96,0,11, + 11,22,12,1,0,14,0,49,128,64,64,81,64,138,32,132, + 32,138,32,81,64,64,64,49,128,14,0,11,11,22,12,1, + 0,14,0,49,128,68,64,68,64,132,32,191,160,132,32,68, + 64,68,64,49,128,14,0,12,12,24,13,1,0,15,16,48, + 224,64,96,64,160,129,16,130,16,132,16,136,16,80,32,96, + 32,112,192,159,0,11,9,18,12,1,0,14,0,49,128,64, + 64,64,64,128,32,128,32,128,32,128,32,128,32,11,9,18, + 12,1,0,128,32,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,10,8,16,11,0,0,255,0,0,128,0, + 64,0,64,0,64,0,64,0,128,255,0,10,10,20,11,0, + 253,255,0,0,128,0,64,0,64,0,64,0,64,0,128,255, + 0,0,0,255,192,11,10,20,11,0,255,0,128,63,224,65, + 0,129,0,130,0,130,0,132,0,68,0,63,224,8,0,10, + 8,16,11,0,0,63,192,64,0,128,0,128,0,128,0,128, + 0,64,0,63,192,10,10,20,11,0,254,63,192,64,0,128, + 0,128,0,128,0,128,0,64,0,63,192,0,0,255,192,7, + 7,7,11,0,0,62,64,128,254,128,64,62,7,9,9,11, + 0,255,4,62,72,136,254,144,80,62,32,11,11,22,12,1, + 0,0,32,0,64,0,128,1,0,2,0,4,0,8,0,16, + 0,32,0,64,0,255,192,10,11,22,11,1,1,255,192,192, + 128,96,128,97,0,49,0,50,0,50,0,28,0,28,0,8, + 0,8,0,11,11,22,13,1,0,14,0,49,128,94,64,73, + 64,137,32,142,32,138,32,73,64,93,192,49,128,14,0,11, + 11,22,13,1,0,14,0,49,128,70,64,73,64,145,32,144, + 32,144,32,73,64,70,64,49,128,14,0,13,6,12,14,0, + 5,255,24,171,16,34,176,34,176,34,80,119,88,12,15,30, + 13,1,254,255,240,96,96,96,96,96,96,96,96,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,240, + 240,7,16,16,9,1,253,2,2,2,2,2,4,68,196,36, + 36,20,20,20,8,8,8,2,2,2,4,1,3,192,192,11, + 5,10,12,0,0,255,224,0,32,0,32,0,32,0,32,9, + 8,16,10,0,0,8,0,8,0,20,0,34,0,34,0,65, + 0,128,128,128,128,9,8,16,10,0,0,128,128,128,128,65, + 0,34,0,34,0,20,0,8,0,8,0,16,9,18,17,0, + 0,8,16,16,8,63,252,64,2,128,1,64,2,63,252,16, + 8,8,16,15,9,18,16,0,0,8,0,16,0,63,254,64, + 0,128,0,64,0,63,254,16,0,8,0,9,15,30,10,0, + 254,8,0,20,0,34,0,99,0,162,128,34,0,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,15, + 9,18,16,0,0,0,32,0,16,255,248,0,4,0,2,0, + 4,255,248,0,16,0,32,9,15,30,10,0,254,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,34, + 0,162,128,99,0,34,0,20,0,8,0,7,12,12,8,0, + 0,16,40,40,68,68,130,130,68,68,40,40,16,4,15,15, + 5,0,254,16,16,32,32,64,64,128,128,128,64,64,32,32, + 16,16,11,11,22,13,1,0,14,0,49,128,94,64,81,64, + 145,32,158,32,145,32,81,64,81,64,49,128,14,0,11,11, + 22,13,1,0,14,0,49,128,70,64,73,64,144,32,144,32, + 144,32,73,64,70,64,49,128,14,0,11,6,12,13,0,5, + 252,32,38,96,38,96,37,160,37,160,36,32,11,15,30,11, + 0,254,255,192,112,64,56,64,24,0,12,0,14,0,7,0, + 3,0,2,0,4,0,8,0,16,32,32,64,127,192,255,128, + 6,17,17,6,1,252,4,8,16,32,32,64,64,64,64,128, + 128,128,128,128,128,128,128,1,17,17,6,1,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,6,17, + 17,6,1,252,128,128,128,128,128,128,128,128,64,64,64,64, + 32,32,16,8,4,5,17,17,6,0,252,248,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,1,17,17,6, + 0,252,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,17,17,6,0,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,248,4,17,17,8,3,252, + 48,64,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,4,17,17,8,0,252,16,16,16,16,16,16,16,32,192, + 32,16,16,16,16,16,16,16,4,17,17,8,3,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,64,48,1, + 17,17,8,3,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,255,4,15,15,5,0,254,128,128,64, + 64,32,32,16,16,16,32,32,64,64,128,128,5,17,17,5, + 0,252,24,40,32,32,32,32,32,32,32,32,32,32,32,32, + 32,160,192,6,17,17,11,5,252,24,44,72,64,128,128,128, + 128,128,128,128,128,128,128,128,128,128,1,17,17,11,5,252, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,11,0,252,4,4,4,4,4,4,4,4,4, + 4,4,4,4,8,72,208,96,6,17,17,7,1,252,128,64, + 32,16,16,8,8,8,8,4,4,4,4,4,4,4,4,1, + 17,17,6,5,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,6,17,17,6,0,252,4,4,4,4, + 4,4,4,4,8,8,8,8,16,16,32,64,128,5,17,17, + 6,1,252,248,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,1,17,17,6,5,252,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,5,17,17,6,1, + 252,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,248,4,17,17,8,0,252,192,32,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,4,17,17,8,3,252,128, + 128,128,128,128,128,128,64,48,64,128,128,128,128,128,128,128, + 4,17,17,8,0,252,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--17-120-100-100-P-95-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=13 h=17 x= 7 y=12 dx=14 dy= 0 ascent=13 len=26 + Font Bounding box w=20 h=17 x=-3 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb12r[1985] U8G_SECTION(".progmem.u8g_font_symb12r") = { + 0,20,17,253,252,11,2,70,5,85,32,127,252,13,252,12, + 252,0,0,0,4,0,1,3,11,11,5,1,0,64,224,224, + 224,64,64,64,0,64,224,64,11,12,24,11,0,0,128,32, + 128,32,64,64,64,64,63,128,32,128,17,0,17,0,10,0, + 10,0,4,0,4,0,8,11,11,8,0,0,18,18,18,127, + 36,36,36,254,72,72,72,7,12,12,9,0,0,254,2,2, + 2,2,126,2,2,2,2,2,254,11,12,24,13,1,255,48, + 64,111,128,201,0,201,0,154,0,148,192,101,160,11,32,11, + 32,18,96,34,64,33,128,12,11,22,13,0,0,14,0,25, + 0,17,0,26,0,12,240,56,64,76,128,198,128,131,0,197, + 144,120,224,5,8,8,7,1,0,224,16,24,120,24,24,16, + 224,4,14,14,5,0,254,16,32,64,64,128,128,128,128,128, + 128,64,64,32,16,4,14,14,5,0,254,128,64,32,32,16, + 16,16,16,16,16,32,32,64,128,5,5,5,8,1,3,32, + 168,112,168,32,9,9,18,9,0,0,8,0,8,0,8,0, + 8,0,255,128,8,0,8,0,8,0,8,0,3,5,5,4, + 1,254,64,224,96,64,128,9,1,2,9,0,4,255,128,3, + 3,3,4,1,0,64,224,64,5,11,11,5,255,0,8,8, + 16,16,32,32,32,64,64,128,128,7,12,12,8,0,0,56, + 108,68,198,130,130,130,130,198,68,108,56,5,12,12,8,1, + 0,32,96,160,32,32,32,32,32,32,32,32,248,7,12,12, + 8,0,0,56,76,134,2,2,4,4,8,16,34,126,252,6, + 12,12,8,1,0,56,76,132,4,8,56,12,4,4,4,200, + 112,7,12,12,8,0,0,4,4,12,20,20,36,68,68,254, + 4,4,4,7,12,12,8,0,0,62,60,64,64,240,248,12, + 4,4,4,200,240,6,12,12,8,1,0,12,48,96,64,248, + 204,132,132,132,132,76,56,6,12,12,8,1,0,252,252,136, + 8,8,16,16,16,16,32,32,32,6,12,12,8,1,0,48, + 72,132,196,104,48,88,140,132,132,72,48,6,12,12,8,1, + 0,112,200,132,132,132,132,204,124,8,24,48,192,3,8,8, + 4,1,0,64,224,64,0,0,64,224,64,3,10,10,4,1, + 254,64,224,64,0,0,64,224,96,64,128,8,9,9,9,0, + 0,1,6,24,96,128,96,24,6,1,9,4,8,9,0,2, + 255,128,0,0,0,0,255,128,8,9,9,9,0,0,128,96, + 24,6,1,6,24,96,128,6,11,11,7,0,0,120,156,140, + 12,24,16,32,0,32,112,32,8,8,8,9,0,0,113,142, + 0,0,255,0,0,255,11,11,22,12,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,63,128,65,192,64,192, + 225,224,9,11,22,11,1,0,254,0,99,0,97,128,97,128, + 99,0,126,0,99,0,97,128,97,128,99,0,254,0,10,11, + 22,12,0,0,241,192,96,128,49,0,26,0,26,0,12,0, + 22,0,19,0,35,0,65,128,227,192,10,11,22,10,0,0, + 4,0,4,0,14,0,14,0,19,0,19,0,35,0,33,128, + 65,128,64,192,255,192,8,11,11,10,1,0,255,97,96,96, + 98,126,98,96,96,97,255,12,11,22,12,0,0,15,0,6, + 0,63,192,102,96,198,48,198,48,198,48,102,96,63,192,6, + 0,15,0,9,11,22,10,1,0,255,128,97,128,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,96,0,240,0,11, + 11,22,12,0,0,241,224,96,192,96,192,96,192,96,192,127, + 192,96,192,96,192,96,192,96,192,241,224,4,11,11,6,1, + 0,240,96,96,96,96,96,96,96,96,96,240,9,12,24,10, + 0,0,12,0,18,0,17,0,9,0,69,0,163,0,33,128, + 33,0,33,0,33,0,34,0,28,0,10,11,22,12,1,0, + 243,192,97,0,98,0,100,0,104,0,120,0,108,0,102,0, + 99,0,97,128,243,192,11,11,22,11,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,33,128,64,192,64,192, + 225,224,13,11,22,14,1,0,224,56,96,112,112,112,112,176, + 88,176,89,48,77,48,78,48,70,48,68,48,224,120,10,11, + 22,11,1,0,225,192,112,128,112,128,88,128,92,128,78,128, + 70,128,67,128,67,128,65,128,224,128,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,11,11,22,12,1,0,255,224,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,11,22,12,0,0,31,0,113,192,96,192,192,96, + 209,96,223,96,209,96,192,96,96,192,113,192,31,0,8,11, + 11,9,1,0,252,102,99,99,102,124,96,96,96,96,240,9, + 11,22,10,0,0,255,128,96,128,48,0,24,0,12,0,12, + 0,8,0,16,128,32,128,127,128,255,128,10,11,22,10,0, + 0,255,192,140,64,140,64,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,30,0,10,11,22,11,1,0,241,192,96, + 128,49,0,49,0,26,0,12,0,12,0,12,0,12,0,12, + 0,30,0,7,12,12,8,0,252,60,76,128,128,128,128,124, + 62,2,2,60,56,12,12,24,12,0,0,31,128,112,224,96, + 96,192,48,192,48,192,48,192,48,96,96,48,192,137,16,249, + 240,249,240,9,11,22,11,0,0,255,128,255,128,128,128,0, + 0,34,0,62,0,34,0,0,0,128,128,255,128,255,128,12, + 11,22,13,0,0,207,48,102,96,102,96,102,96,102,96,63, + 192,6,0,6,0,6,0,6,0,15,0,8,11,11,10,1, + 0,255,131,134,12,12,24,48,48,97,193,255,3,14,14,6, + 1,254,224,128,128,128,128,128,128,128,128,128,128,128,128,224, + 9,8,16,14,2,0,8,0,28,0,8,0,0,0,0,0, + 65,0,227,128,65,0,3,14,14,5,0,254,224,32,32,32, + 32,32,32,32,32,32,32,32,32,224,9,11,22,11,1,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,8,1,1,8,0,253,255,10,1,2, + 8,7,12,255,192,10,9,18,11,0,0,57,128,101,128,195, + 0,195,0,195,0,194,0,198,64,101,64,56,128,8,17,17, + 9,0,252,60,70,66,66,70,92,70,67,67,65,65,99,94, + 64,64,64,192,8,12,12,9,0,253,99,162,150,20,28,24, + 24,56,40,105,69,198,7,12,12,8,0,0,120,140,64,48, + 24,44,70,194,130,194,68,56,7,9,9,7,0,0,56,68, + 192,192,120,192,192,66,60,7,14,14,9,1,253,16,16,56, + 84,214,146,146,146,214,84,56,16,16,16,8,13,13,7,255, + 252,97,161,146,18,20,20,8,8,16,16,48,48,48,9,12, + 24,10,0,253,110,0,177,0,33,0,33,0,33,0,33,0, + 33,0,33,0,33,0,1,0,1,0,1,128,6,9,9,5, + 255,0,32,96,160,32,32,32,32,52,24,9,12,24,10,0, + 253,39,0,73,128,201,128,136,128,136,128,136,128,201,128,73, + 0,62,0,8,0,8,0,8,0,8,9,9,9,0,0,70, + 206,80,80,120,76,76,70,79,9,13,26,9,0,0,96,0, + 208,0,144,0,16,0,8,0,24,0,24,0,56,0,40,0, + 36,0,100,128,68,128,195,0,8,13,13,9,1,252,132,132, + 132,132,132,132,132,205,182,128,128,128,128,9,9,18,8,255, + 0,225,128,33,128,49,0,51,0,18,0,26,0,12,0,12, + 0,8,0,7,9,9,9,1,0,56,68,198,130,130,130,198, + 68,56,8,9,9,9,0,0,127,255,164,36,36,36,37,103, + 102,7,12,12,9,1,0,56,108,68,198,130,254,130,130,198, + 68,108,56,7,13,13,9,1,252,56,76,134,134,130,130,198, + 196,184,128,128,128,128,9,9,18,10,1,0,31,128,116,0, + 194,0,195,0,129,0,193,0,65,0,99,0,30,0,7,9, + 9,7,0,0,60,124,144,16,16,16,18,30,12,8,9,9, + 9,1,0,68,226,161,33,33,33,33,50,28,10,10,20,11, + 0,0,127,192,155,0,32,128,100,192,68,64,68,64,68,64, + 68,64,100,192,59,128,9,9,18,11,1,0,54,0,65,0, + 201,128,136,128,136,128,136,128,136,128,201,128,119,0,7,17, + 17,8,0,252,64,88,48,64,92,60,64,128,128,128,128,124, + 62,2,2,60,56,11,13,26,11,0,252,196,96,100,192,36, + 128,36,128,36,128,36,128,36,128,53,128,31,0,4,0,4, + 0,4,0,4,0,7,17,17,8,1,252,32,76,60,32,64, + 64,128,128,128,128,128,124,62,2,2,60,56,5,14,14,8, + 1,254,24,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,14,14,3,1,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,5,14,14,8,1,254,192,32,32,32,32,32, + 24,32,32,32,32,32,32,192,8,2,2,9,0,3,113,142, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=19 h=19 x= 9 y=13 dx=19 dy= 0 ascent=14 len=34 + Font Bounding box w=20 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb14[4665] U8G_SECTION(".progmem.u8g_font_symb14") = { + 0,20,19,255,251,13,2,127,6,16,32,255,252,14,251,13, + 252,0,0,0,5,0,1,2,13,13,6,2,0,192,192,192, + 192,192,192,192,64,64,0,0,192,192,13,13,26,13,0,0, + 192,24,192,24,96,48,96,48,63,224,48,96,24,192,24,192, + 8,128,13,128,5,0,7,0,2,0,10,13,26,9,255,0, + 9,0,9,0,9,0,9,0,127,192,18,0,18,0,18,0, + 255,128,36,0,36,0,36,0,36,0,8,13,13,10,1,0, + 255,3,3,3,3,3,127,3,3,3,3,3,255,13,13,26, + 15,1,0,56,96,103,224,196,192,197,128,233,128,115,0,6, + 0,6,112,12,200,25,136,25,136,49,208,48,224,12,13,26, + 13,1,0,28,0,54,0,34,0,38,0,60,0,57,224,124, + 192,238,128,199,128,195,0,195,144,103,240,60,224,6,9,9, + 8,1,0,240,56,28,12,124,12,28,56,240,4,17,17,6, + 1,252,16,48,96,96,192,192,192,192,192,192,192,192,192,96, + 96,48,16,4,17,17,6,1,252,128,192,96,96,48,48,48, + 48,48,48,48,48,48,96,96,192,128,7,7,7,9,1,3, + 16,214,124,56,124,214,16,8,8,8,10,1,1,24,24,24, + 255,255,24,24,24,3,5,5,5,1,253,96,96,32,96,192, + 7,2,2,9,1,4,254,254,2,2,2,4,1,0,192,192, + 5,13,13,5,0,0,24,24,24,48,48,48,96,96,96,96, + 192,192,192,8,13,13,9,0,0,60,102,102,195,195,195,195, + 195,195,195,102,102,60,6,13,13,9,1,0,48,240,176,48, + 48,48,48,48,48,48,48,120,252,7,13,13,9,1,0,60, + 126,206,134,6,6,12,28,24,48,98,254,254,7,13,13,9, + 1,0,124,206,134,6,12,56,60,14,6,6,6,204,248,8, + 13,13,9,0,0,6,14,14,30,54,54,102,198,198,255,6, + 6,6,7,13,13,9,1,0,126,124,192,192,240,60,12,14, + 6,6,12,220,240,8,13,13,9,0,0,14,56,48,96,96, + 252,198,195,195,195,195,102,60,8,13,13,9,0,0,127,255, + 134,6,12,12,12,24,24,24,48,48,48,8,13,13,9,0, + 0,60,102,102,102,116,60,126,102,195,195,195,102,60,8,13, + 13,9,0,0,60,110,199,195,195,195,227,127,58,6,12,56, + 224,2,9,9,5,2,0,192,192,0,0,0,0,0,192,192, + 3,12,12,5,1,253,96,96,0,0,0,0,0,96,96,32, + 96,192,9,9,18,10,0,0,3,128,15,0,60,0,240,0, + 192,0,240,0,60,0,15,0,3,128,8,5,5,10,1,2, + 255,255,0,255,255,9,9,18,10,0,0,224,0,120,0,30, + 0,7,128,1,128,7,128,30,0,120,0,224,0,6,13,13, + 8,1,0,120,220,204,204,12,12,24,48,48,48,0,48,48, + 8,9,9,10,1,0,115,255,206,0,255,255,0,255,255,12, + 13,26,14,1,0,4,0,14,0,14,0,11,0,27,0,19, + 0,17,128,49,128,63,192,32,192,96,192,96,224,241,240,9, + 13,26,11,1,0,252,0,102,0,99,0,99,0,99,0,102, + 0,126,0,99,0,97,128,97,128,97,128,99,128,255,0,12, + 13,26,14,1,0,240,112,112,96,56,192,24,192,29,128,15, + 0,6,0,15,0,27,128,49,128,49,192,96,224,224,240,11, + 13,26,11,0,0,4,0,6,0,14,0,11,0,19,0,19, + 0,17,128,33,128,33,192,64,192,64,192,128,96,255,224,9, + 13,26,11,1,0,255,128,97,128,96,128,96,0,96,0,97, + 0,127,0,97,0,96,0,96,0,96,128,97,128,255,128,12, + 13,26,14,1,0,15,0,6,0,31,128,102,96,198,48,198, + 48,198,48,198,48,198,48,102,96,31,128,6,0,15,0,10, + 13,26,11,0,0,255,192,112,192,48,64,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,0,11, + 13,26,13,1,0,241,224,96,192,96,192,96,192,96,192,96, + 192,127,192,96,192,96,192,96,192,96,192,96,192,241,224,4, + 13,13,6,1,0,240,96,96,96,96,96,96,96,96,96,96, + 96,240,11,13,26,12,1,0,6,0,11,0,9,128,5,128, + 99,128,241,128,177,192,49,160,49,128,49,128,49,128,59,0, + 30,0,11,13,26,14,1,0,243,192,97,128,99,0,102,0, + 108,0,120,0,120,0,108,0,102,0,99,0,99,128,97,192, + 241,224,12,13,26,13,0,0,6,0,6,0,15,0,11,0, + 11,0,25,128,17,128,17,128,48,192,32,192,32,96,96,96, + 240,240,14,13,26,16,1,0,224,28,112,56,112,56,88,120, + 88,88,88,216,76,152,76,152,77,152,71,24,71,24,67,24, + 226,60,11,13,26,13,1,0,224,224,112,64,112,64,88,64, + 76,64,76,64,70,64,67,64,67,192,65,192,64,192,64,192, + 224,64,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,192,96,192,96,192,96,192,96,224,224,96,192,49,128, + 14,0,11,13,26,13,1,0,255,224,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,209,96,223,96,209,96,192,96,224,224,96,192,49,128, + 14,0,8,13,13,10,1,0,254,103,99,99,99,103,126,96, + 96,96,96,96,240,10,13,26,11,0,0,255,128,193,128,96, + 128,48,0,24,0,12,0,12,0,8,0,16,0,32,64,64, + 192,255,128,255,128,10,13,26,12,1,0,255,192,204,192,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,30,0,12,13,26,13,0,0,248,240,112,96,48, + 192,24,192,29,128,15,0,15,0,6,0,6,0,6,0,6, + 0,6,0,15,0,6,13,13,8,1,252,60,124,192,128,128, + 128,192,120,60,4,4,60,56,13,13,26,14,0,0,7,0, + 24,192,48,96,112,112,96,48,96,48,96,48,96,48,48,96, + 56,224,136,136,248,248,248,248,10,13,26,12,1,0,127,128, + 127,128,64,128,0,0,33,0,63,0,63,0,33,0,0,0, + 128,64,128,64,255,192,255,192,14,13,26,15,0,0,199,140, + 99,24,99,24,99,24,99,24,51,48,31,224,3,0,3,0, + 3,0,3,0,3,0,7,128,9,13,26,11,1,0,255,128, + 195,128,131,0,7,0,6,0,14,0,28,0,24,0,56,0, + 112,0,96,128,225,128,255,128,4,17,17,6,1,252,240,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,240,10, + 9,18,14,2,0,12,0,12,0,0,0,0,0,0,0,0, + 0,0,0,192,192,192,192,4,17,17,6,1,252,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,10,13, + 26,12,1,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,9,2, + 4,9,0,252,255,128,255,128,10,1,2,9,9,13,255,192, + 11,9,18,12,1,0,60,192,101,128,195,0,195,0,195,0, + 195,0,195,0,101,32,56,192,8,18,18,10,1,252,60,70, + 198,198,198,204,198,195,195,195,195,195,230,220,192,192,192,192, + 10,13,26,10,0,252,96,192,241,192,145,128,19,0,23,0, + 14,0,12,0,28,0,26,0,50,0,98,64,227,192,193,128, + 7,14,14,9,1,0,56,76,64,96,48,56,108,198,198,198, + 198,198,108,56,6,9,9,8,1,0,120,236,204,192,112,192, + 192,228,120,9,16,32,11,1,252,8,0,8,0,8,0,62, + 0,107,0,201,128,201,128,201,128,201,128,201,128,107,0,62, + 0,8,0,8,0,8,0,8,0,8,13,13,8,0,252,195, + 227,163,38,38,22,20,28,12,24,24,24,24,9,13,26,11, + 1,252,103,0,233,128,177,128,49,128,49,128,49,128,49,128, + 49,128,49,128,1,128,1,128,1,128,1,128,5,9,9,6, + 1,0,96,224,96,96,96,96,96,104,112,9,13,26,11,1, + 252,102,0,207,0,201,128,201,128,201,128,201,128,73,0,107, + 0,62,0,8,0,8,0,8,0,8,0,9,9,18,10,0, + 0,99,128,229,128,104,0,112,0,120,0,108,0,102,0,99, + 0,97,128,10,14,28,10,0,0,48,0,120,0,72,0,8, + 0,8,0,8,0,24,0,28,0,52,0,52,0,102,0,98, + 64,195,192,193,128,9,13,26,11,2,252,66,0,198,0,198, + 0,198,0,198,0,198,0,198,128,251,128,123,0,64,0,192, + 0,192,0,192,0,8,9,9,10,1,0,195,195,97,98,50, + 52,28,24,8,8,9,9,10,1,0,60,102,195,195,195,195, + 195,102,60,9,9,18,10,0,0,127,128,255,128,146,0,18, + 0,18,0,18,0,50,128,115,128,99,0,8,13,13,10,1, + 0,60,102,195,195,195,195,255,195,195,195,195,102,60,8,13, + 13,10,1,252,60,70,195,195,195,195,195,230,220,192,192,192, + 192,10,9,18,11,1,0,31,192,127,192,102,0,195,0,195, + 0,195,0,195,0,102,0,60,0,7,9,9,8,0,0,126, + 254,144,16,16,16,18,30,28,9,9,18,11,1,0,99,0, + 241,128,177,128,49,128,49,128,49,128,49,128,59,0,30,0, + 11,11,22,12,0,0,63,224,127,224,153,128,48,192,32,64, + 102,96,102,96,102,96,102,96,54,192,57,192,10,9,18,12, + 1,0,51,0,97,128,64,128,204,192,204,192,204,192,204,192, + 109,128,115,128,7,19,19,9,1,251,96,142,252,32,64,64, + 124,120,192,128,128,128,192,252,126,2,2,30,28,13,13,26, + 13,0,252,226,56,114,112,50,96,50,96,50,96,50,96,26, + 192,26,192,15,128,2,0,2,0,2,0,2,0,7,19,19, + 9,1,251,96,134,158,120,96,64,128,128,128,128,128,128,192, + 252,126,2,2,30,28,7,17,17,9,1,252,14,24,48,48, + 48,48,48,96,192,96,48,48,48,48,48,24,14,2,17,17, + 4,1,252,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,7,17,17,9,1,252,224,48,24,24,24,24, + 24,12,6,12,24,24,24,24,24,48,224,8,3,3,10,1, + 4,115,255,206,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,11,13,26,12,0,0,225,192,115,32, + 58,96,28,96,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,30,0,4,5,5,5,1,9,48,112,96,192, + 128,9,12,24,10,0,0,3,128,15,0,60,0,240,0,192, + 0,240,0,60,0,15,0,3,128,0,0,255,128,255,128,8, + 13,13,5,255,0,3,6,6,12,12,24,24,48,48,96,96, + 192,192,12,5,10,13,0,3,121,224,207,48,134,16,207,48, + 121,224,9,17,34,9,0,252,3,128,5,128,12,0,12,0, + 12,0,127,0,24,0,24,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,208,0,224,0,10,9,18,14,2,0, + 12,0,30,0,30,0,30,0,109,128,255,192,255,192,109,128, + 12,0,9,9,18,13,2,0,8,0,28,0,62,0,127,0, + 255,128,127,0,62,0,28,0,8,0,9,9,18,13,2,0, + 99,0,247,128,255,128,255,128,127,0,127,0,62,0,28,0, + 8,0,10,9,18,14,2,0,12,0,30,0,63,0,127,128, + 255,192,255,192,109,128,12,0,12,0,17,8,24,19,1,1, + 24,12,0,48,6,0,96,3,0,255,255,128,255,255,128,96, + 3,0,48,6,0,24,12,0,18,8,24,18,0,1,24,0, + 0,48,0,0,96,0,0,255,255,192,255,255,192,96,0,0, + 48,0,0,24,0,0,8,19,19,10,1,251,24,60,126,219, + 153,24,24,24,24,24,24,24,24,24,24,24,24,24,24,18, + 8,24,18,0,1,0,6,0,0,3,0,0,1,128,255,255, + 192,255,255,192,0,1,128,0,3,0,0,6,0,8,19,19, + 10,1,251,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,153,219,126,60,24,5,6,6,7,1,7,112,248,216,216, + 248,112,8,11,11,10,1,0,24,24,24,255,255,24,24,24, + 0,255,255,8,5,5,8,0,9,51,119,102,204,136,9,12, + 24,10,0,0,224,0,120,0,30,0,7,128,1,128,7,128, + 30,0,120,0,224,0,0,0,255,128,255,128,10,9,18,10, + 0,0,225,192,115,128,51,0,30,0,12,0,30,0,51,0, + 115,128,225,192,11,5,10,12,0,3,121,224,207,0,134,0, + 207,0,121,224,7,14,14,9,1,0,120,204,134,6,6,6, + 62,102,198,198,198,196,236,120,5,6,6,9,2,2,112,248, + 248,248,248,112,8,8,8,10,1,1,24,24,0,255,255,0, + 24,24,8,9,9,10,1,0,12,12,255,255,24,255,255,48, + 48,8,8,8,10,1,1,255,255,0,255,255,0,255,255,8, + 7,7,10,1,2,115,255,206,0,115,255,206,14,2,4,18, + 2,0,195,12,195,12,2,19,19,10,4,251,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,19, + 2,6,19,0,4,255,255,224,255,255,224,9,12,24,12,1, + 0,1,128,1,128,1,128,1,128,1,128,1,128,33,128,97, + 128,255,128,255,128,96,0,32,0,11,13,26,13,1,0,194, + 0,227,192,113,224,56,224,57,128,125,0,207,0,199,0,227, + 0,115,128,49,192,112,192,240,64,10,15,30,13,1,255,31, + 192,63,192,96,128,65,0,66,0,34,0,19,0,3,128,1, + 192,0,192,0,192,112,192,248,128,31,0,14,0,13,14,28, + 15,1,0,121,192,254,224,142,112,134,48,198,96,118,128,54, + 64,38,96,6,96,6,96,6,96,6,96,108,120,184,48,12, + 15,30,14,1,252,12,0,24,0,49,224,103,48,204,48,216, + 48,214,48,246,96,100,224,119,192,179,128,152,0,152,0,216, + 0,112,0,12,13,26,14,1,0,31,128,57,192,96,96,217, + 176,221,176,143,16,134,16,143,16,219,176,217,176,96,96,57, + 192,31,128,12,13,26,14,1,0,31,128,57,192,102,96,198, + 48,198,48,191,208,191,208,134,16,198,48,198,48,96,96,57, + 192,31,128,12,13,26,14,1,0,31,176,57,240,96,96,192, + 240,193,176,131,16,134,16,140,16,216,48,240,48,96,96,249, + 192,223,128,12,9,18,14,1,0,31,128,57,192,96,96,224, + 112,192,48,192,48,192,48,192,48,192,48,12,9,18,14,1, + 0,192,48,192,48,192,48,192,48,192,48,224,112,96,96,57, + 192,31,128,12,9,18,13,1,0,255,128,255,224,0,96,0, + 48,0,48,0,48,0,96,255,224,255,128,12,12,24,13,0, + 253,255,128,255,224,0,96,0,48,0,48,0,48,0,96,255, + 224,255,128,0,0,255,240,255,240,12,13,26,13,0,254,0, + 96,0,192,31,240,127,240,97,128,195,0,195,0,198,0,102, + 0,127,240,31,240,24,0,48,0,12,9,18,13,0,0,31, + 240,127,240,96,0,192,0,192,0,192,0,96,0,127,240,31, + 240,12,12,24,13,0,253,31,240,127,240,96,0,192,0,192, + 0,192,0,96,0,127,240,31,240,0,0,255,240,255,240,9, + 9,18,12,1,0,31,128,127,128,224,0,192,0,255,128,192, + 0,224,0,127,128,31,128,10,11,22,12,1,255,0,128,31, + 192,127,192,226,0,196,0,255,128,200,0,240,0,127,192,63, + 192,64,0,13,13,26,14,0,0,0,24,0,48,0,96,0, + 192,1,128,3,0,6,0,12,0,24,0,48,0,96,0,192, + 0,255,248,11,13,26,13,1,0,255,224,224,32,96,96,96, + 64,112,192,48,128,48,128,57,128,25,0,27,0,14,0,14, + 0,4,0,13,13,26,15,1,0,31,192,56,224,96,48,223, + 24,205,152,205,152,205,152,207,24,205,152,220,216,96,48,56, + 224,31,192,13,13,26,15,1,0,31,192,56,224,96,48,199, + 152,205,152,204,152,204,24,204,24,204,152,199,24,96,48,56, + 224,31,192,14,8,16,16,1,5,251,28,171,24,35,24,34, + 168,34,168,34,168,34,72,119,92,14,16,32,15,0,254,255, + 252,120,120,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,120,120,252,252,9, + 14,28,10,0,0,0,128,0,128,0,128,0,128,48,128,113, + 0,217,0,25,0,25,0,13,0,14,0,6,0,6,0,6, + 0,2,2,2,4,1,4,192,192,11,6,12,13,1,0,255, + 224,255,224,0,96,0,96,0,96,0,96,10,9,18,11,0, + 0,12,0,12,0,30,0,51,0,51,0,97,128,97,128,192, + 192,192,192,10,9,18,11,0,0,192,192,192,192,97,128,97, + 128,51,0,51,0,30,0,12,0,12,0,18,9,27,18,0, + 0,8,4,0,24,6,0,63,255,0,127,255,128,224,1,192, + 127,255,128,63,255,0,24,6,0,8,4,0,16,9,18,18, + 1,0,8,0,24,0,63,255,127,255,224,0,127,255,63,255, + 24,0,8,0,9,17,34,11,1,253,8,0,28,0,54,0, + 119,0,247,128,54,0,54,0,54,0,54,0,54,0,54,0, + 54,0,54,0,54,0,54,0,54,0,54,0,16,9,18,18, + 1,0,0,16,0,24,255,252,255,254,0,7,255,254,255,252, + 0,24,0,16,9,17,34,11,1,253,54,0,54,0,54,0, + 54,0,54,0,54,0,54,0,54,0,54,0,54,0,54,0, + 54,0,247,128,119,0,54,0,28,0,8,0,9,14,28,9, + 0,0,28,0,28,0,54,0,54,0,99,0,99,0,193,128, + 193,128,99,0,99,0,54,0,54,0,28,0,28,0,5,17, + 17,6,0,253,24,24,48,48,96,96,192,192,128,192,192,96, + 96,48,48,24,24,13,13,26,15,1,0,31,192,56,224,96, + 48,207,24,205,152,205,152,207,24,205,152,205,152,205,152,96, + 48,56,224,31,192,13,13,26,15,1,0,31,192,56,224,96, + 48,199,24,204,152,204,24,204,24,204,24,204,152,199,24,96, + 48,56,224,31,192,13,8,16,15,1,5,251,24,35,24,35, + 24,34,168,34,168,34,168,34,72,34,72,12,16,32,13,0, + 254,255,224,224,96,112,32,56,0,28,0,14,0,7,0,3, + 0,6,0,12,0,24,0,48,0,96,16,192,48,255,240,255, + 240,6,19,19,7,1,251,4,12,24,24,48,48,96,96,96, + 96,192,192,192,192,192,192,192,192,192,2,19,19,7,1,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,6,19,19,7,1,251,192,192,192,192,192,192,192, + 192,192,224,96,96,96,48,48,24,24,12,4,5,19,19,7, + 1,251,248,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,2,19,19,7,1,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,5,19, + 19,7,1,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,5,19,19,9,4,251,56,96,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 5,19,19,9,1,251,24,24,24,24,24,24,16,48,96,192, + 96,48,16,24,24,24,24,24,24,5,19,19,9,4,251,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 96,56,2,19,19,9,4,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,255,5,17,17,6, + 0,253,192,192,96,96,48,48,24,24,8,24,24,48,48,96, + 96,192,192,6,19,19,6,0,251,28,28,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,224,224,7,19,19,13, + 5,251,28,126,102,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,2,19,19,13,5,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,7,19, + 19,13,0,251,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,204,252,112,6,19,19,7,0,251,128,192,96, + 96,48,48,24,24,24,24,12,12,12,12,12,12,12,12,12, + 2,19,19,7,4,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,6,19,19,7,0,251,12, + 12,12,12,12,12,12,12,12,24,24,24,24,48,48,96,96, + 192,128,5,19,19,7,1,251,248,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,2,19,19,7,4, + 251,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,5,19,19,7,1,251,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,5,19,19, + 9,1,251,224,48,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,5,19,19,9,4,251,192,192,192,192, + 192,192,64,96,48,24,48,96,64,192,192,192,192,192,192,5, + 19,19,9,1,251,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,48,224,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=14 h=19 x= 9 y=13 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=20 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb14r[2261] U8G_SECTION(".progmem.u8g_font_symb14r") = { + 0,20,19,255,251,13,2,127,6,16,32,127,252,14,251,13, + 252,0,0,0,5,0,1,2,13,13,6,2,0,192,192,192, + 192,192,192,192,64,64,0,0,192,192,13,13,26,13,0,0, + 192,24,192,24,96,48,96,48,63,224,48,96,24,192,24,192, + 8,128,13,128,5,0,7,0,2,0,10,13,26,9,255,0, + 9,0,9,0,9,0,9,0,127,192,18,0,18,0,18,0, + 255,128,36,0,36,0,36,0,36,0,8,13,13,10,1,0, + 255,3,3,3,3,3,127,3,3,3,3,3,255,13,13,26, + 15,1,0,56,96,103,224,196,192,197,128,233,128,115,0,6, + 0,6,112,12,200,25,136,25,136,49,208,48,224,12,13,26, + 13,1,0,28,0,54,0,34,0,38,0,60,0,57,224,124, + 192,238,128,199,128,195,0,195,144,103,240,60,224,6,9,9, + 8,1,0,240,56,28,12,124,12,28,56,240,4,17,17,6, + 1,252,16,48,96,96,192,192,192,192,192,192,192,192,192,96, + 96,48,16,4,17,17,6,1,252,128,192,96,96,48,48,48, + 48,48,48,48,48,48,96,96,192,128,7,7,7,9,1,3, + 16,214,124,56,124,214,16,8,8,8,10,1,1,24,24,24, + 255,255,24,24,24,3,5,5,5,1,253,96,96,32,96,192, + 7,2,2,9,1,4,254,254,2,2,2,4,1,0,192,192, + 5,13,13,5,0,0,24,24,24,48,48,48,96,96,96,96, + 192,192,192,8,13,13,9,0,0,60,102,102,195,195,195,195, + 195,195,195,102,102,60,6,13,13,9,1,0,48,240,176,48, + 48,48,48,48,48,48,48,120,252,7,13,13,9,1,0,60, + 126,206,134,6,6,12,28,24,48,98,254,254,7,13,13,9, + 1,0,124,206,134,6,12,56,60,14,6,6,6,204,248,8, + 13,13,9,0,0,6,14,14,30,54,54,102,198,198,255,6, + 6,6,7,13,13,9,1,0,126,124,192,192,240,60,12,14, + 6,6,12,220,240,8,13,13,9,0,0,14,56,48,96,96, + 252,198,195,195,195,195,102,60,8,13,13,9,0,0,127,255, + 134,6,12,12,12,24,24,24,48,48,48,8,13,13,9,0, + 0,60,102,102,102,116,60,126,102,195,195,195,102,60,8,13, + 13,9,0,0,60,110,199,195,195,195,227,127,58,6,12,56, + 224,2,9,9,5,2,0,192,192,0,0,0,0,0,192,192, + 3,12,12,5,1,253,96,96,0,0,0,0,0,96,96,32, + 96,192,9,9,18,10,0,0,3,128,15,0,60,0,240,0, + 192,0,240,0,60,0,15,0,3,128,8,5,5,10,1,2, + 255,255,0,255,255,9,9,18,10,0,0,224,0,120,0,30, + 0,7,128,1,128,7,128,30,0,120,0,224,0,6,13,13, + 8,1,0,120,220,204,204,12,12,24,48,48,48,0,48,48, + 8,9,9,10,1,0,115,255,206,0,255,255,0,255,255,12, + 13,26,14,1,0,4,0,14,0,14,0,11,0,27,0,19, + 0,17,128,49,128,63,192,32,192,96,192,96,224,241,240,9, + 13,26,11,1,0,252,0,102,0,99,0,99,0,99,0,102, + 0,126,0,99,0,97,128,97,128,97,128,99,128,255,0,12, + 13,26,14,1,0,240,112,112,96,56,192,24,192,29,128,15, + 0,6,0,15,0,27,128,49,128,49,192,96,224,224,240,11, + 13,26,11,0,0,4,0,6,0,14,0,11,0,19,0,19, + 0,17,128,33,128,33,192,64,192,64,192,128,96,255,224,9, + 13,26,11,1,0,255,128,97,128,96,128,96,0,96,0,97, + 0,127,0,97,0,96,0,96,0,96,128,97,128,255,128,12, + 13,26,14,1,0,15,0,6,0,31,128,102,96,198,48,198, + 48,198,48,198,48,198,48,102,96,31,128,6,0,15,0,10, + 13,26,11,0,0,255,192,112,192,48,64,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,0,11, + 13,26,13,1,0,241,224,96,192,96,192,96,192,96,192,96, + 192,127,192,96,192,96,192,96,192,96,192,96,192,241,224,4, + 13,13,6,1,0,240,96,96,96,96,96,96,96,96,96,96, + 96,240,11,13,26,12,1,0,6,0,11,0,9,128,5,128, + 99,128,241,128,177,192,49,160,49,128,49,128,49,128,59,0, + 30,0,11,13,26,14,1,0,243,192,97,128,99,0,102,0, + 108,0,120,0,120,0,108,0,102,0,99,0,99,128,97,192, + 241,224,12,13,26,13,0,0,6,0,6,0,15,0,11,0, + 11,0,25,128,17,128,17,128,48,192,32,192,32,96,96,96, + 240,240,14,13,26,16,1,0,224,28,112,56,112,56,88,120, + 88,88,88,216,76,152,76,152,77,152,71,24,71,24,67,24, + 226,60,11,13,26,13,1,0,224,224,112,64,112,64,88,64, + 76,64,76,64,70,64,67,64,67,192,65,192,64,192,64,192, + 224,64,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,192,96,192,96,192,96,192,96,224,224,96,192,49,128, + 14,0,11,13,26,13,1,0,255,224,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,209,96,223,96,209,96,192,96,224,224,96,192,49,128, + 14,0,8,13,13,10,1,0,254,103,99,99,99,103,126,96, + 96,96,96,96,240,10,13,26,11,0,0,255,128,193,128,96, + 128,48,0,24,0,12,0,12,0,8,0,16,0,32,64,64, + 192,255,128,255,128,10,13,26,12,1,0,255,192,204,192,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,30,0,12,13,26,13,0,0,248,240,112,96,48, + 192,24,192,29,128,15,0,15,0,6,0,6,0,6,0,6, + 0,6,0,15,0,6,13,13,8,1,252,60,124,192,128,128, + 128,192,120,60,4,4,60,56,13,13,26,14,0,0,7,0, + 24,192,48,96,112,112,96,48,96,48,96,48,96,48,48,96, + 56,224,136,136,248,248,248,248,10,13,26,12,1,0,127,128, + 127,128,64,128,0,0,33,0,63,0,63,0,33,0,0,0, + 128,64,128,64,255,192,255,192,14,13,26,15,0,0,199,140, + 99,24,99,24,99,24,99,24,51,48,31,224,3,0,3,0, + 3,0,3,0,3,0,7,128,9,13,26,11,1,0,255,128, + 195,128,131,0,7,0,6,0,14,0,28,0,24,0,56,0, + 112,0,96,128,225,128,255,128,4,17,17,6,1,252,240,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,240,10, + 9,18,14,2,0,12,0,12,0,0,0,0,0,0,0,0, + 0,0,0,192,192,192,192,4,17,17,6,1,252,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,10,13, + 26,12,1,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,9,2, + 4,9,0,252,255,128,255,128,10,1,2,9,9,13,255,192, + 11,9,18,12,1,0,60,192,101,128,195,0,195,0,195,0, + 195,0,195,0,101,32,56,192,8,18,18,10,1,252,60,70, + 198,198,198,204,198,195,195,195,195,195,230,220,192,192,192,192, + 10,13,26,10,0,252,96,192,241,192,145,128,19,0,23,0, + 14,0,12,0,28,0,26,0,50,0,98,64,227,192,193,128, + 7,14,14,9,1,0,56,76,64,96,48,56,108,198,198,198, + 198,198,108,56,6,9,9,8,1,0,120,236,204,192,112,192, + 192,228,120,9,16,32,11,1,252,8,0,8,0,8,0,62, + 0,107,0,201,128,201,128,201,128,201,128,201,128,107,0,62, + 0,8,0,8,0,8,0,8,0,8,13,13,8,0,252,195, + 227,163,38,38,22,20,28,12,24,24,24,24,9,13,26,11, + 1,252,103,0,233,128,177,128,49,128,49,128,49,128,49,128, + 49,128,49,128,1,128,1,128,1,128,1,128,5,9,9,6, + 1,0,96,224,96,96,96,96,96,104,112,9,13,26,11,1, + 252,102,0,207,0,201,128,201,128,201,128,201,128,73,0,107, + 0,62,0,8,0,8,0,8,0,8,0,9,9,18,10,0, + 0,99,128,229,128,104,0,112,0,120,0,108,0,102,0,99, + 0,97,128,10,14,28,10,0,0,48,0,120,0,72,0,8, + 0,8,0,8,0,24,0,28,0,52,0,52,0,102,0,98, + 64,195,192,193,128,9,13,26,11,2,252,66,0,198,0,198, + 0,198,0,198,0,198,0,198,128,251,128,123,0,64,0,192, + 0,192,0,192,0,8,9,9,10,1,0,195,195,97,98,50, + 52,28,24,8,8,9,9,10,1,0,60,102,195,195,195,195, + 195,102,60,9,9,18,10,0,0,127,128,255,128,146,0,18, + 0,18,0,18,0,50,128,115,128,99,0,8,13,13,10,1, + 0,60,102,195,195,195,195,255,195,195,195,195,102,60,8,13, + 13,10,1,252,60,70,195,195,195,195,195,230,220,192,192,192, + 192,10,9,18,11,1,0,31,192,127,192,102,0,195,0,195, + 0,195,0,195,0,102,0,60,0,7,9,9,8,0,0,126, + 254,144,16,16,16,18,30,28,9,9,18,11,1,0,99,0, + 241,128,177,128,49,128,49,128,49,128,49,128,59,0,30,0, + 11,11,22,12,0,0,63,224,127,224,153,128,48,192,32,64, + 102,96,102,96,102,96,102,96,54,192,57,192,10,9,18,12, + 1,0,51,0,97,128,64,128,204,192,204,192,204,192,204,192, + 109,128,115,128,7,19,19,9,1,251,96,142,252,32,64,64, + 124,120,192,128,128,128,192,252,126,2,2,30,28,13,13,26, + 13,0,252,226,56,114,112,50,96,50,96,50,96,50,96,26, + 192,26,192,15,128,2,0,2,0,2,0,2,0,7,19,19, + 9,1,251,96,134,158,120,96,64,128,128,128,128,128,128,192, + 252,126,2,2,30,28,7,17,17,9,1,252,14,24,48,48, + 48,48,48,96,192,96,48,48,48,48,48,24,14,2,17,17, + 4,1,252,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,7,17,17,9,1,252,224,48,24,24,24,24, + 24,12,6,12,24,24,24,24,24,48,224,8,3,3,10,1, + 4,115,255,206,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=25 h=24 x=13 y=18 dx=26 dy= 0 ascent=19 len=63 + Font Bounding box w=27 h=24 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb18[6604] U8G_SECTION(".progmem.u8g_font_symb18") = { + 0,27,24,255,251,17,3,215,8,151,32,255,251,19,251,17, + 251,0,0,0,6,0,1,3,17,17,7,2,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,15,17, + 34,17,1,0,192,6,192,6,96,12,96,12,63,248,63,248, + 48,24,24,48,24,48,12,96,12,96,12,96,6,192,6,192, + 3,128,3,128,3,128,11,17,34,13,1,0,8,128,8,128, + 8,128,8,128,8,128,127,224,127,224,17,0,17,0,17,0, + 255,192,255,192,34,0,34,0,34,0,34,0,34,0,11,17, + 34,13,1,0,255,224,255,224,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,0,96,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,18,17,51,20,1,0,31,6,0,57, + 254,0,113,12,0,99,24,0,227,24,0,198,48,0,206,96, + 0,220,96,0,120,199,128,1,142,192,1,156,192,3,56,192, + 6,48,192,6,49,128,12,51,128,24,55,0,24,30,0,15, + 17,34,17,1,0,7,128,12,192,24,64,24,64,24,192,29, + 128,15,62,30,28,62,24,103,48,195,160,193,224,192,192,193, + 224,227,114,126,62,60,28,8,13,13,11,2,0,248,62,14, + 7,3,3,127,3,3,7,14,62,248,6,22,22,8,1,251, + 12,24,48,32,96,96,64,192,192,192,192,192,192,192,192,64, + 96,96,32,48,24,12,6,22,22,8,1,251,192,96,48,16, + 24,24,8,12,12,12,12,12,12,12,12,8,24,24,16,48, + 96,192,8,10,10,12,2,7,24,24,195,231,24,24,231,195, + 24,24,10,10,20,12,1,2,12,0,12,0,12,0,12,0, + 255,192,255,192,12,0,12,0,12,0,12,0,3,6,6,6, + 1,252,96,96,32,96,192,128,11,2,4,13,1,6,255,224, + 255,224,2,2,2,6,2,0,192,192,7,17,17,7,0,0, + 6,6,6,12,12,12,24,24,48,48,48,96,96,96,192,192, + 192,10,17,34,12,1,0,30,0,51,0,97,128,97,128,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,97,128,51,0,30,0,6,17,17,12,3,0,48, + 112,240,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 10,17,34,12,1,0,28,0,127,0,103,0,131,128,129,128, + 1,128,1,128,3,128,3,0,7,0,12,0,12,0,24,0, + 48,0,96,64,255,192,255,128,9,17,34,12,1,0,28,0, + 126,0,71,0,131,0,131,0,6,0,12,0,30,0,7,0, + 3,0,1,128,1,128,1,128,3,0,199,0,254,0,120,0, + 10,17,34,12,1,0,3,0,7,0,7,0,15,0,11,0, + 27,0,19,0,51,0,35,0,99,0,67,0,255,192,255,192, + 3,0,3,0,3,0,3,0,10,17,34,12,1,0,31,192, + 63,128,96,0,96,0,192,0,240,0,252,0,30,0,7,0, + 3,128,1,128,1,128,1,128,1,128,195,0,254,0,124,0, + 10,17,34,12,1,0,3,192,14,0,56,0,112,0,96,0, + 224,0,207,0,243,128,225,128,192,192,192,192,192,192,192,192, + 224,192,97,192,115,128,31,0,10,17,34,12,1,0,127,192, + 255,192,192,192,129,128,1,128,3,0,3,0,3,0,6,0, + 6,0,6,0,12,0,12,0,12,0,24,0,24,0,24,0, + 10,17,34,12,1,0,30,0,51,0,97,128,97,128,97,128, + 51,0,30,0,30,0,55,0,115,128,225,192,192,192,192,192, + 192,192,225,192,115,128,30,0,10,17,34,12,1,0,30,0, + 115,128,97,128,192,192,192,192,192,192,192,192,192,192,97,192, + 115,192,30,192,1,128,3,128,7,0,14,0,60,0,240,0, + 2,11,11,6,2,0,192,192,0,0,0,0,0,0,0,192, + 192,3,15,15,6,1,252,96,96,0,0,0,0,0,0,0, + 96,96,32,96,192,128,12,12,24,13,0,1,0,112,1,224, + 7,128,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,112,10,5,10,12,1,4,255,192,255,192,0,0, + 255,192,255,192,12,12,24,13,0,1,224,0,120,0,30,0, + 7,128,1,224,0,112,0,112,1,224,7,128,30,0,120,0, + 224,0,8,17,17,11,2,0,124,198,131,195,199,6,14,12, + 28,24,24,16,16,0,0,48,48,11,12,24,13,1,1,56, + 32,124,96,199,192,131,128,0,0,0,0,255,224,255,224,0, + 0,0,0,255,224,255,224,17,17,51,18,0,0,0,128,0, + 1,192,0,1,192,0,1,64,0,3,96,0,2,96,0,2, + 48,0,6,48,0,4,48,0,12,24,0,8,24,0,15,252, + 0,24,12,0,16,12,0,48,6,0,48,6,0,248,15,128, + 13,17,34,15,1,0,255,192,48,224,48,112,48,48,48,48, + 48,48,48,48,48,96,63,192,48,112,48,56,48,24,48,24, + 48,24,48,56,48,112,255,192,16,17,34,18,1,0,248,31, + 112,14,56,12,28,24,12,48,14,96,7,192,3,128,3,128, + 7,192,6,96,12,112,24,48,24,24,48,28,112,14,248,31, + 15,17,34,15,0,0,3,0,3,0,3,128,5,128,4,192, + 12,192,8,96,8,96,24,48,16,48,48,24,32,24,32,12, + 96,12,64,6,192,6,255,254,13,17,34,15,1,0,255,240, + 48,48,48,16,48,0,48,0,48,0,48,32,48,32,63,224, + 48,32,48,32,48,0,48,0,48,0,48,8,48,24,255,248, + 16,17,34,19,1,0,7,224,1,128,1,128,15,240,57,156, + 97,134,225,135,193,131,193,131,193,131,225,135,97,134,57,156, + 15,240,1,128,1,128,7,224,13,17,34,15,1,0,255,248, + 48,24,48,8,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 16,17,34,18,1,0,252,63,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,17,17,8,1,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,14, + 17,34,16,1,0,3,192,6,224,4,96,6,96,3,48,113, + 176,248,240,152,60,24,48,24,48,48,48,48,48,48,48,48, + 96,56,96,28,192,15,128,15,17,34,17,1,0,252,124,48, + 48,48,96,48,192,49,128,51,0,54,0,62,0,63,0,51, + 128,49,128,49,192,48,224,48,112,48,56,48,28,252,62,15, + 17,34,17,1,0,3,0,3,0,3,128,5,128,4,192,4, + 192,12,192,8,96,8,96,24,96,16,48,16,48,48,48,32, + 24,32,24,96,28,248,62,20,17,51,22,1,0,240,1,240, + 56,1,192,56,3,192,60,2,192,44,2,192,46,6,192,38, + 4,192,39,12,192,35,8,192,35,136,192,33,152,192,33,208, + 192,32,208,192,32,240,192,32,96,192,32,96,192,248,67,240, + 16,17,34,18,1,0,240,31,56,4,56,4,44,4,46,4, + 38,4,35,4,35,4,33,132,33,196,32,196,32,100,32,100, + 32,52,32,60,32,28,248,12,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,96,6,112,14,56,28,28,56,7,224, + 16,17,34,18,1,0,255,255,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,200,19,200,19,207,243,207,243, + 200,19,200,19,192,3,96,6,112,14,56,28,28,56,7,224, + 12,17,34,14,1,0,255,128,48,224,48,96,48,48,48,48, + 48,48,48,96,48,224,63,128,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,252,0,12,17,34,14,1,0,255,240, + 224,16,112,16,56,0,28,0,14,0,7,0,3,128,3,0, + 6,0,12,0,24,0,48,0,96,16,192,16,255,240,255,240, + 14,17,34,16,1,0,255,252,195,12,131,4,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,16,17,34,16,0,0,248,31, + 112,14,48,12,24,24,28,16,12,48,14,96,6,96,3,192, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 9,18,36,11,1,251,31,128,63,128,96,0,96,0,192,0, + 192,0,192,0,192,0,192,0,192,0,96,0,127,0,31,128, + 0,128,0,128,1,128,15,0,14,0,16,17,34,18,1,0, + 7,224,30,120,56,28,112,14,96,6,192,3,192,3,192,3, + 192,3,192,3,96,6,48,12,24,24,140,49,196,35,252,63, + 252,63,14,17,34,16,1,0,127,248,127,248,64,8,64,8, + 0,0,16,32,16,32,31,224,31,224,16,32,16,32,0,0, + 0,0,128,4,128,4,255,252,255,252,18,17,51,20,1,0, + 227,241,192,112,195,128,48,195,0,48,195,0,56,199,0,56, + 199,0,24,198,0,28,206,0,7,248,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 3,240,0,12,17,34,15,1,0,255,240,192,112,128,96,0, + 224,1,192,1,128,3,128,7,0,6,0,14,0,28,0,56, + 0,56,0,112,0,96,16,224,48,255,240,5,22,22,8,2, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,12,10,20,18,3,0,6,0,6, + 0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,192, + 48,5,22,22,8,1,251,248,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,14,17,34, + 16,1,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,13,2,4,13,0,251,255,248,255,248,13, + 1,2,13,13,18,255,248,14,13,26,16,1,0,31,24,113, + 184,96,176,224,240,192,96,192,96,192,96,192,96,192,96,224, + 224,96,228,113,252,31,56,10,24,48,12,1,251,62,0,103, + 0,195,128,193,128,193,128,195,128,195,0,206,0,207,0,195, + 128,193,128,193,192,192,192,192,192,192,192,193,192,225,128,243, + 128,223,0,192,0,192,0,192,0,192,0,192,0,12,18,36, + 14,1,251,112,96,248,96,216,192,136,192,9,128,9,128,11, + 0,7,0,6,0,6,0,14,0,14,0,25,0,25,0,49, + 16,49,176,97,240,96,224,10,18,36,12,1,0,31,0,51, + 128,33,128,48,0,56,0,28,0,14,0,63,0,115,128,97, + 128,192,192,192,192,192,192,192,192,192,192,97,128,115,128,30, + 0,9,13,26,11,1,0,62,0,115,0,227,0,195,0,224, + 0,96,0,60,0,96,0,224,0,192,0,224,128,113,128,63, + 0,12,22,44,14,1,251,6,0,6,0,6,0,6,0,31, + 128,54,192,102,96,230,112,198,48,198,48,198,48,198,48,198, + 48,230,112,102,96,54,192,31,128,6,0,6,0,6,0,6, + 0,6,0,11,18,36,11,0,251,112,96,248,96,152,96,152, + 192,24,192,12,192,13,128,13,128,5,128,7,0,7,0,3, + 0,6,0,6,0,6,0,6,0,6,0,6,0,12,18,36, + 15,1,251,113,192,251,224,158,48,28,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,0,48,0, + 48,0,48,0,48,0,48,7,13,13,8,1,0,48,112,240, + 48,48,48,48,48,48,48,50,62,28,12,18,36,14,1,251, + 51,128,115,192,102,96,198,112,198,48,198,48,198,48,198,48, + 198,48,230,112,102,96,54,192,31,128,6,0,6,0,6,0, + 6,0,6,0,12,13,26,14,1,0,48,112,112,240,241,176, + 51,0,54,0,60,0,60,0,62,0,55,0,51,128,49,192, + 48,224,49,240,12,19,38,14,1,0,112,0,248,0,136,0, + 8,0,8,0,12,0,12,0,12,0,28,0,30,0,26,0, + 50,0,50,0,51,0,97,0,97,0,97,144,193,240,192,224, + 13,18,36,14,1,251,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,200,63,248,111,48, + 96,0,96,0,96,0,96,0,192,0,11,13,26,13,1,0, + 192,224,192,224,192,96,96,64,96,192,96,128,49,128,49,0, + 51,0,26,0,26,0,14,0,12,0,11,13,26,13,1,0, + 31,0,113,192,96,192,224,224,192,96,192,96,192,96,192,96, + 192,96,224,224,96,192,113,192,31,0,13,13,26,14,0,0, + 127,248,255,248,152,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,200,56,248,48,240,10,17,34,12,1,0, + 30,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 255,192,192,192,192,192,192,192,192,192,97,128,97,128,51,0, + 30,0,10,18,36,12,1,251,62,0,99,128,193,128,193,192, + 192,192,192,192,192,192,192,192,192,192,193,192,193,128,227,128, + 222,0,192,0,192,0,192,0,192,0,192,0,14,13,26,15, + 1,0,31,252,113,252,96,192,224,224,192,96,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,10,13,26,11, + 0,0,63,192,127,192,204,0,140,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,128,15,128,7,0,13,13,26,14, + 0,0,48,224,120,48,216,24,152,24,24,24,24,24,24,24, + 24,24,24,24,24,48,12,48,14,224,7,192,16,14,28,18, + 1,0,127,255,255,255,152,24,48,12,49,140,97,134,97,134, + 97,134,97,134,97,134,97,134,49,140,59,220,30,120,14,13, + 26,16,1,0,24,96,48,48,96,24,99,24,195,12,195,12, + 195,12,195,12,195,12,195,12,99,24,119,184,60,240,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,48,0,32,0, + 55,128,31,128,48,0,96,0,192,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,16,18,36,18,1,251,193,131,113,142,49,140, + 57,156,57,156,57,156,57,156,57,156,57,156,25,152,25,152, + 13,176,7,224,1,128,1,128,1,128,1,128,1,128,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,24,0,48,0, + 32,0,96,0,64,0,192,0,128,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,8,22,22,10,1,251,7,12,24,24,24,24, + 24,16,48,32,192,32,48,16,24,24,24,24,24,24,12,7, + 2,22,22,4,1,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,22,22,10, + 1,251,224,48,24,24,24,24,24,8,12,4,3,4,12,8, + 24,24,24,24,24,24,48,224,11,4,8,13,1,5,56,32, + 124,96,199,192,131,128,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,13,17,34,15,1,0,224,112, + 112,216,57,184,27,48,14,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 5,6,6,6,1,12,24,56,112,96,192,128,12,15,30,14, + 0,0,0,112,1,224,7,128,30,0,120,0,224,0,224,0, + 120,0,30,0,3,192,0,240,0,48,0,0,255,240,255,240, + 8,17,17,4,255,0,3,3,6,6,12,12,24,24,24,48, + 48,96,96,96,192,192,192,15,7,14,17,1,4,56,56,124, + 124,198,198,195,134,199,198,124,124,56,56,13,22,44,13,0, + 251,0,240,1,152,1,152,3,0,3,0,3,0,31,192,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,204,0,204,0,120,0,14,13,26, + 18,2,0,7,128,15,192,15,192,15,192,15,192,119,184,251, + 124,255,252,255,252,251,124,115,56,3,0,7,128,10,13,26, + 18,4,0,12,0,30,0,63,0,63,0,127,128,127,128,255, + 192,127,128,127,128,63,0,30,0,30,0,12,0,12,13,26, + 18,3,0,112,224,249,240,255,240,255,240,255,240,255,240,127, + 224,127,224,63,192,31,128,31,128,15,0,6,0,12,13,26, + 18,3,0,6,0,15,0,31,128,31,128,63,192,127,224,127, + 224,255,240,255,240,246,240,102,96,6,0,6,0,24,12,36, + 26,1,1,6,0,96,12,0,48,24,0,24,48,0,12,96, + 0,6,255,255,255,255,255,255,96,0,6,48,0,12,24,0, + 24,12,0,48,6,0,96,25,12,48,25,0,1,6,0,0, + 0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0, + 0,255,255,255,128,255,255,255,128,96,0,0,0,48,0,0, + 0,24,0,0,0,12,0,0,0,6,0,0,0,12,24,48, + 14,1,251,6,0,15,0,31,128,54,192,102,96,198,48,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,25,12,48,25,0,1,0,0,48,0,0,0,24, + 0,0,0,12,0,0,0,6,0,0,0,3,0,255,255,255, + 128,255,255,255,128,0,0,3,0,0,0,6,0,0,0,12, + 0,0,0,24,0,0,0,48,0,12,24,48,14,1,251,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,198,48,102,96,54,192,31,128,15,0,6,0,7, + 7,7,9,1,10,56,108,198,198,198,108,56,10,14,28,12, + 1,0,12,0,12,0,12,0,12,0,255,192,255,192,12,0, + 12,0,12,0,12,0,0,0,0,0,255,192,255,192,9,6, + 12,10,1,12,25,128,59,128,119,0,102,0,204,0,136,0, + 12,15,30,14,0,0,224,0,120,0,30,0,7,128,1,224, + 0,112,0,112,1,224,7,128,62,0,240,0,192,0,0,0, + 255,240,255,240,11,10,20,13,1,2,192,96,96,192,49,128, + 27,0,14,0,14,0,27,0,49,128,96,192,192,96,14,7, + 14,16,1,4,56,56,124,124,198,192,195,128,199,192,124,124, + 56,56,10,19,38,12,1,0,62,0,99,0,193,128,1,128, + 0,192,0,192,0,192,0,192,30,192,115,192,97,192,192,192, + 192,192,193,128,193,128,193,128,227,0,119,0,62,0,8,8, + 8,12,2,3,60,126,255,255,255,255,126,60,10,8,16,12, + 1,3,12,0,12,0,0,0,255,192,255,192,0,0,12,0, + 12,0,10,13,26,14,2,0,1,128,1,128,3,0,3,0, + 255,192,255,192,12,0,255,192,255,192,48,0,48,0,96,0, + 96,0,11,8,16,13,1,3,255,224,255,224,0,0,255,224, + 255,224,0,0,255,224,255,224,11,8,16,13,1,3,56,32, + 124,96,199,192,131,128,56,32,124,96,199,192,131,128,18,2, + 6,24,3,0,192,192,192,192,192,192,2,24,24,14,6,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,25,2,8,25,0,6,255,255, + 255,128,255,255,255,128,14,16,32,16,1,0,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 32,12,96,12,255,252,255,252,96,0,32,0,12,16,32,14, + 1,0,129,128,195,0,227,240,113,240,56,96,28,192,60,128, + 110,128,199,128,195,128,227,128,241,192,112,224,48,112,112,48, + 224,16,14,19,38,16,1,255,15,128,63,252,112,248,96,48, + 64,96,64,192,96,192,48,224,28,112,0,56,0,56,0,28, + 0,28,0,12,48,12,120,12,222,24,15,240,3,192,17,18, + 54,19,1,0,30,24,0,63,60,0,99,206,0,193,135,0, + 129,131,0,193,134,0,225,140,0,113,184,0,57,176,0,25, + 152,0,17,152,0,1,152,0,1,156,0,1,140,0,1,140, + 0,25,134,128,63,7,128,78,7,0,15,20,40,19,2,251, + 6,0,12,0,24,60,48,254,49,134,99,6,102,6,108,6, + 104,12,121,156,115,152,114,48,122,112,91,224,221,128,140,0, + 140,0,140,0,216,0,112,0,16,17,34,18,1,0,7,224, + 30,120,56,28,96,6,104,22,204,51,198,99,195,195,193,131, + 195,195,198,99,204,51,104,22,96,6,56,28,30,120,7,224, + 16,17,34,18,1,0,7,224,30,120,56,28,97,134,97,134, + 193,131,193,131,207,243,207,243,193,131,193,131,193,131,97,134, + 96,6,56,28,30,120,7,224,18,17,51,20,1,0,3,240, + 192,15,253,128,28,15,0,48,7,0,48,15,0,96,25,128, + 96,49,128,96,97,128,96,193,128,97,129,128,99,1,128,102, + 1,128,60,3,0,56,3,0,60,14,0,111,252,0,195,240, + 0,16,13,26,18,1,0,7,224,31,248,56,28,96,6,96, + 6,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,16,13,26,18,1,0,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,96,6,96,6,56,28,31,248,7, + 224,15,12,24,17,1,0,255,224,255,248,0,28,0,12,0, + 6,0,6,0,6,0,6,0,12,0,28,255,248,255,224,15, + 15,30,17,1,253,255,224,255,248,0,28,0,12,0,6,0, + 6,0,6,0,6,0,12,0,28,255,248,255,224,0,0,255, + 254,255,254,15,16,32,17,1,254,0,12,0,12,15,254,63, + 254,112,48,96,48,192,96,192,96,192,192,192,192,97,128,113, + 128,63,254,15,254,6,0,6,0,15,12,24,17,1,0,15, + 254,63,254,112,0,96,0,192,0,192,0,192,0,192,0,96, + 0,112,0,63,254,15,254,15,15,30,17,1,253,15,254,63, + 254,112,0,96,0,192,0,192,0,192,0,192,0,96,0,112, + 0,63,254,15,254,0,0,255,254,255,254,12,13,26,16,2, + 0,31,240,127,240,96,0,192,0,192,0,192,0,255,240,192, + 0,192,0,192,0,96,0,127,240,31,240,12,15,30,16,2, + 255,0,192,31,240,127,240,97,128,193,128,195,0,195,0,255, + 240,198,0,198,0,204,0,108,0,127,240,31,240,24,0,17, + 16,48,19,1,0,0,1,128,0,3,0,0,6,0,0,12, + 0,0,24,0,0,48,0,0,96,0,0,192,0,1,128,0, + 3,0,0,6,0,0,12,0,0,24,0,0,48,0,0,127, + 255,128,255,255,128,16,18,36,18,1,0,255,255,192,3,192, + 2,96,6,96,4,48,12,48,8,48,24,24,16,24,48,12, + 32,12,32,6,96,6,64,3,192,3,192,1,128,1,128,16, + 17,34,18,1,0,7,224,30,120,56,28,96,6,111,230,198, + 115,198,51,198,115,199,227,198,195,198,99,198,51,111,62,96, + 6,56,28,30,120,7,224,16,17,34,18,1,0,7,224,30, + 120,56,28,96,6,99,230,198,99,204,35,204,3,204,3,204, + 3,204,3,206,51,103,230,99,198,56,28,30,120,7,224,20, + 10,30,22,1,7,255,96,112,153,96,96,24,112,224,24,112, + 224,24,89,96,24,89,96,24,78,96,24,78,96,24,70,96, + 60,230,240,17,21,63,19,1,253,255,255,128,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,252,31,128,14,19,38,14,0,0,0,12, + 0,12,0,8,0,8,0,24,48,24,112,16,216,16,24,16, + 12,48,12,48,6,32,6,32,3,32,3,96,1,192,1,192, + 0,192,0,192,2,2,2,6,2,6,192,192,15,8,16,17, + 1,0,255,254,255,254,0,6,0,6,0,6,0,6,0,6, + 0,6,13,12,24,15,1,0,7,0,7,0,13,128,13,128, + 24,192,24,192,48,96,48,96,96,48,96,48,192,24,192,24, + 13,12,24,15,1,0,192,24,192,24,96,48,96,48,48,96, + 48,96,24,192,24,192,13,128,13,128,7,0,7,0,23,12, + 36,25,1,0,6,0,192,12,0,96,24,0,48,63,255,248, + 127,255,252,224,0,14,224,0,14,127,255,252,63,255,248,24, + 0,48,12,0,96,6,0,192,23,12,36,25,1,0,6,0, + 0,12,0,0,24,0,0,63,255,254,127,255,254,224,0,0, + 224,0,0,127,255,254,63,255,254,24,0,0,12,0,0,6, + 0,0,12,19,38,14,1,0,6,0,15,0,31,128,57,192, + 121,224,217,176,25,128,25,128,25,128,25,128,25,128,25,128, + 25,128,25,128,25,128,25,128,25,128,25,128,25,128,23,12, + 36,25,1,0,0,0,192,0,0,96,0,0,48,255,255,248, + 255,255,252,0,0,14,0,0,14,255,255,252,255,255,248,0, + 0,48,0,0,96,0,0,192,12,19,38,14,1,0,25,128, + 25,128,25,128,25,128,25,128,25,128,25,128,25,128,25,128, + 25,128,25,128,25,128,25,128,217,176,121,224,57,192,31,128, + 15,0,6,0,10,18,36,12,1,0,12,0,30,0,30,0, + 51,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 97,128,97,128,51,0,51,0,30,0,30,0,12,0,7,22, + 22,8,0,251,6,6,12,12,24,24,48,48,96,96,192,192, + 96,96,48,48,24,24,12,12,6,6,16,17,34,18,1,0, + 7,224,30,120,56,28,96,6,103,230,198,51,198,51,198,51, + 199,227,198,99,198,51,198,51,102,50,96,6,56,28,30,120, + 7,224,16,17,34,18,1,0,7,224,30,120,56,28,96,6, + 99,198,198,99,204,35,204,3,200,3,200,3,204,3,204,35, + 102,102,99,198,56,28,30,120,7,224,18,10,30,20,1,7, + 254,192,192,24,192,192,24,225,192,24,225,192,24,243,192,24, + 210,192,24,222,192,24,204,192,24,204,192,24,204,192,14,20, + 40,18,2,254,255,248,224,24,112,8,56,0,28,0,14,0, + 7,0,3,128,1,192,0,192,1,128,3,0,6,0,12,0, + 24,0,48,0,96,4,192,12,255,252,255,252,9,24,48,10, + 1,251,1,128,3,0,6,0,12,0,24,0,24,0,48,0, + 48,0,96,0,96,0,96,0,96,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,2,24,24,10,1,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 9,24,48,10,1,251,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,96,0,96,0,48,0,48,0,24,0,24,0,12,0, + 6,0,3,0,1,128,7,24,24,10,1,251,254,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,2,24,24,10,1,251,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,7,24,24,10,1,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,254, + 7,24,24,12,5,251,30,48,96,96,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,5,24, + 24,12,2,251,24,24,24,24,24,24,24,24,16,48,96,192, + 96,48,16,24,24,24,24,24,24,24,24,24,7,24,24,12, + 5,251,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,96,96,48,30,2,24,24,12,5,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,255,7,22,22,8,1,251,192, + 192,96,96,48,48,24,24,12,12,6,6,12,12,24,24,48, + 48,96,96,192,192,8,24,24,8,0,251,7,15,27,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 216,240,224,8,24,24,17,8,251,14,27,51,32,96,64,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,2,24,24,17,8,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,8, + 24,24,17,2,251,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,2,6,204,216,112,9,24,48, + 10,0,251,192,0,96,0,48,0,24,0,12,0,12,0,6, + 0,6,0,3,0,3,0,3,0,3,0,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,2,24,24,10,7,251,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,9,24,48,10,0,251,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3, + 0,3,0,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,48,0,96,0,192,0,7,24,24,10,2,251,254,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,2,24,24,10,7,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,7,24,24,10,2,251,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 254,7,24,24,12,0,251,240,24,12,12,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5, + 24,24,12,5,251,192,192,192,192,192,192,192,192,64,96,48, + 24,48,96,64,192,192,192,192,192,192,192,192,192,7,24,24, + 12,0,251,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,12,12,24,240,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=20 h=24 x=13 y=18 dx=22 dy= 0 ascent=19 len=51 + Font Bounding box w=27 h=24 x=-1 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb18r[3303] U8G_SECTION(".progmem.u8g_font_symb18r") = { + 0,27,24,255,251,17,3,215,8,151,32,127,251,19,251,17, + 251,0,0,0,6,0,1,3,17,17,7,2,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,15,17, + 34,17,1,0,192,6,192,6,96,12,96,12,63,248,63,248, + 48,24,24,48,24,48,12,96,12,96,12,96,6,192,6,192, + 3,128,3,128,3,128,11,17,34,13,1,0,8,128,8,128, + 8,128,8,128,8,128,127,224,127,224,17,0,17,0,17,0, + 255,192,255,192,34,0,34,0,34,0,34,0,34,0,11,17, + 34,13,1,0,255,224,255,224,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,0,96,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,18,17,51,20,1,0,31,6,0,57, + 254,0,113,12,0,99,24,0,227,24,0,198,48,0,206,96, + 0,220,96,0,120,199,128,1,142,192,1,156,192,3,56,192, + 6,48,192,6,49,128,12,51,128,24,55,0,24,30,0,15, + 17,34,17,1,0,7,128,12,192,24,64,24,64,24,192,29, + 128,15,62,30,28,62,24,103,48,195,160,193,224,192,192,193, + 224,227,114,126,62,60,28,8,13,13,11,2,0,248,62,14, + 7,3,3,127,3,3,7,14,62,248,6,22,22,8,1,251, + 12,24,48,32,96,96,64,192,192,192,192,192,192,192,192,64, + 96,96,32,48,24,12,6,22,22,8,1,251,192,96,48,16, + 24,24,8,12,12,12,12,12,12,12,12,8,24,24,16,48, + 96,192,8,10,10,12,2,7,24,24,195,231,24,24,231,195, + 24,24,10,10,20,12,1,2,12,0,12,0,12,0,12,0, + 255,192,255,192,12,0,12,0,12,0,12,0,3,6,6,6, + 1,252,96,96,32,96,192,128,11,2,4,13,1,6,255,224, + 255,224,2,2,2,6,2,0,192,192,7,17,17,7,0,0, + 6,6,6,12,12,12,24,24,48,48,48,96,96,96,192,192, + 192,10,17,34,12,1,0,30,0,51,0,97,128,97,128,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,97,128,51,0,30,0,6,17,17,12,3,0,48, + 112,240,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 10,17,34,12,1,0,28,0,127,0,103,0,131,128,129,128, + 1,128,1,128,3,128,3,0,7,0,12,0,12,0,24,0, + 48,0,96,64,255,192,255,128,9,17,34,12,1,0,28,0, + 126,0,71,0,131,0,131,0,6,0,12,0,30,0,7,0, + 3,0,1,128,1,128,1,128,3,0,199,0,254,0,120,0, + 10,17,34,12,1,0,3,0,7,0,7,0,15,0,11,0, + 27,0,19,0,51,0,35,0,99,0,67,0,255,192,255,192, + 3,0,3,0,3,0,3,0,10,17,34,12,1,0,31,192, + 63,128,96,0,96,0,192,0,240,0,252,0,30,0,7,0, + 3,128,1,128,1,128,1,128,1,128,195,0,254,0,124,0, + 10,17,34,12,1,0,3,192,14,0,56,0,112,0,96,0, + 224,0,207,0,243,128,225,128,192,192,192,192,192,192,192,192, + 224,192,97,192,115,128,31,0,10,17,34,12,1,0,127,192, + 255,192,192,192,129,128,1,128,3,0,3,0,3,0,6,0, + 6,0,6,0,12,0,12,0,12,0,24,0,24,0,24,0, + 10,17,34,12,1,0,30,0,51,0,97,128,97,128,97,128, + 51,0,30,0,30,0,55,0,115,128,225,192,192,192,192,192, + 192,192,225,192,115,128,30,0,10,17,34,12,1,0,30,0, + 115,128,97,128,192,192,192,192,192,192,192,192,192,192,97,192, + 115,192,30,192,1,128,3,128,7,0,14,0,60,0,240,0, + 2,11,11,6,2,0,192,192,0,0,0,0,0,0,0,192, + 192,3,15,15,6,1,252,96,96,0,0,0,0,0,0,0, + 96,96,32,96,192,128,12,12,24,13,0,1,0,112,1,224, + 7,128,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,112,10,5,10,12,1,4,255,192,255,192,0,0, + 255,192,255,192,12,12,24,13,0,1,224,0,120,0,30,0, + 7,128,1,224,0,112,0,112,1,224,7,128,30,0,120,0, + 224,0,8,17,17,11,2,0,124,198,131,195,199,6,14,12, + 28,24,24,16,16,0,0,48,48,11,12,24,13,1,1,56, + 32,124,96,199,192,131,128,0,0,0,0,255,224,255,224,0, + 0,0,0,255,224,255,224,17,17,51,18,0,0,0,128,0, + 1,192,0,1,192,0,1,64,0,3,96,0,2,96,0,2, + 48,0,6,48,0,4,48,0,12,24,0,8,24,0,15,252, + 0,24,12,0,16,12,0,48,6,0,48,6,0,248,15,128, + 13,17,34,15,1,0,255,192,48,224,48,112,48,48,48,48, + 48,48,48,48,48,96,63,192,48,112,48,56,48,24,48,24, + 48,24,48,56,48,112,255,192,16,17,34,18,1,0,248,31, + 112,14,56,12,28,24,12,48,14,96,7,192,3,128,3,128, + 7,192,6,96,12,112,24,48,24,24,48,28,112,14,248,31, + 15,17,34,15,0,0,3,0,3,0,3,128,5,128,4,192, + 12,192,8,96,8,96,24,48,16,48,48,24,32,24,32,12, + 96,12,64,6,192,6,255,254,13,17,34,15,1,0,255,240, + 48,48,48,16,48,0,48,0,48,0,48,32,48,32,63,224, + 48,32,48,32,48,0,48,0,48,0,48,8,48,24,255,248, + 16,17,34,19,1,0,7,224,1,128,1,128,15,240,57,156, + 97,134,225,135,193,131,193,131,193,131,225,135,97,134,57,156, + 15,240,1,128,1,128,7,224,13,17,34,15,1,0,255,248, + 48,24,48,8,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 16,17,34,18,1,0,252,63,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,17,17,8,1,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,14, + 17,34,16,1,0,3,192,6,224,4,96,6,96,3,48,113, + 176,248,240,152,60,24,48,24,48,48,48,48,48,48,48,48, + 96,56,96,28,192,15,128,15,17,34,17,1,0,252,124,48, + 48,48,96,48,192,49,128,51,0,54,0,62,0,63,0,51, + 128,49,128,49,192,48,224,48,112,48,56,48,28,252,62,15, + 17,34,17,1,0,3,0,3,0,3,128,5,128,4,192,4, + 192,12,192,8,96,8,96,24,96,16,48,16,48,48,48,32, + 24,32,24,96,28,248,62,20,17,51,22,1,0,240,1,240, + 56,1,192,56,3,192,60,2,192,44,2,192,46,6,192,38, + 4,192,39,12,192,35,8,192,35,136,192,33,152,192,33,208, + 192,32,208,192,32,240,192,32,96,192,32,96,192,248,67,240, + 16,17,34,18,1,0,240,31,56,4,56,4,44,4,46,4, + 38,4,35,4,35,4,33,132,33,196,32,196,32,100,32,100, + 32,52,32,60,32,28,248,12,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,96,6,112,14,56,28,28,56,7,224, + 16,17,34,18,1,0,255,255,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,200,19,200,19,207,243,207,243, + 200,19,200,19,192,3,96,6,112,14,56,28,28,56,7,224, + 12,17,34,14,1,0,255,128,48,224,48,96,48,48,48,48, + 48,48,48,96,48,224,63,128,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,252,0,12,17,34,14,1,0,255,240, + 224,16,112,16,56,0,28,0,14,0,7,0,3,128,3,0, + 6,0,12,0,24,0,48,0,96,16,192,16,255,240,255,240, + 14,17,34,16,1,0,255,252,195,12,131,4,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,16,17,34,16,0,0,248,31, + 112,14,48,12,24,24,28,16,12,48,14,96,6,96,3,192, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 9,18,36,11,1,251,31,128,63,128,96,0,96,0,192,0, + 192,0,192,0,192,0,192,0,192,0,96,0,127,0,31,128, + 0,128,0,128,1,128,15,0,14,0,16,17,34,18,1,0, + 7,224,30,120,56,28,112,14,96,6,192,3,192,3,192,3, + 192,3,192,3,96,6,48,12,24,24,140,49,196,35,252,63, + 252,63,14,17,34,16,1,0,127,248,127,248,64,8,64,8, + 0,0,16,32,16,32,31,224,31,224,16,32,16,32,0,0, + 0,0,128,4,128,4,255,252,255,252,18,17,51,20,1,0, + 227,241,192,112,195,128,48,195,0,48,195,0,56,199,0,56, + 199,0,24,198,0,28,206,0,7,248,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 3,240,0,12,17,34,15,1,0,255,240,192,112,128,96,0, + 224,1,192,1,128,3,128,7,0,6,0,14,0,28,0,56, + 0,56,0,112,0,96,16,224,48,255,240,5,22,22,8,2, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,12,10,20,18,3,0,6,0,6, + 0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,192, + 48,5,22,22,8,1,251,248,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,14,17,34, + 16,1,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,13,2,4,13,0,251,255,248,255,248,13, + 1,2,13,13,18,255,248,14,13,26,16,1,0,31,24,113, + 184,96,176,224,240,192,96,192,96,192,96,192,96,192,96,224, + 224,96,228,113,252,31,56,10,24,48,12,1,251,62,0,103, + 0,195,128,193,128,193,128,195,128,195,0,206,0,207,0,195, + 128,193,128,193,192,192,192,192,192,192,192,193,192,225,128,243, + 128,223,0,192,0,192,0,192,0,192,0,192,0,12,18,36, + 14,1,251,112,96,248,96,216,192,136,192,9,128,9,128,11, + 0,7,0,6,0,6,0,14,0,14,0,25,0,25,0,49, + 16,49,176,97,240,96,224,10,18,36,12,1,0,31,0,51, + 128,33,128,48,0,56,0,28,0,14,0,63,0,115,128,97, + 128,192,192,192,192,192,192,192,192,192,192,97,128,115,128,30, + 0,9,13,26,11,1,0,62,0,115,0,227,0,195,0,224, + 0,96,0,60,0,96,0,224,0,192,0,224,128,113,128,63, + 0,12,22,44,14,1,251,6,0,6,0,6,0,6,0,31, + 128,54,192,102,96,230,112,198,48,198,48,198,48,198,48,198, + 48,230,112,102,96,54,192,31,128,6,0,6,0,6,0,6, + 0,6,0,11,18,36,11,0,251,112,96,248,96,152,96,152, + 192,24,192,12,192,13,128,13,128,5,128,7,0,7,0,3, + 0,6,0,6,0,6,0,6,0,6,0,6,0,12,18,36, + 15,1,251,113,192,251,224,158,48,28,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,0,48,0, + 48,0,48,0,48,0,48,7,13,13,8,1,0,48,112,240, + 48,48,48,48,48,48,48,50,62,28,12,18,36,14,1,251, + 51,128,115,192,102,96,198,112,198,48,198,48,198,48,198,48, + 198,48,230,112,102,96,54,192,31,128,6,0,6,0,6,0, + 6,0,6,0,12,13,26,14,1,0,48,112,112,240,241,176, + 51,0,54,0,60,0,60,0,62,0,55,0,51,128,49,192, + 48,224,49,240,12,19,38,14,1,0,112,0,248,0,136,0, + 8,0,8,0,12,0,12,0,12,0,28,0,30,0,26,0, + 50,0,50,0,51,0,97,0,97,0,97,144,193,240,192,224, + 13,18,36,14,1,251,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,200,63,248,111,48, + 96,0,96,0,96,0,96,0,192,0,11,13,26,13,1,0, + 192,224,192,224,192,96,96,64,96,192,96,128,49,128,49,0, + 51,0,26,0,26,0,14,0,12,0,11,13,26,13,1,0, + 31,0,113,192,96,192,224,224,192,96,192,96,192,96,192,96, + 192,96,224,224,96,192,113,192,31,0,13,13,26,14,0,0, + 127,248,255,248,152,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,200,56,248,48,240,10,17,34,12,1,0, + 30,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 255,192,192,192,192,192,192,192,192,192,97,128,97,128,51,0, + 30,0,10,18,36,12,1,251,62,0,99,128,193,128,193,192, + 192,192,192,192,192,192,192,192,192,192,193,192,193,128,227,128, + 222,0,192,0,192,0,192,0,192,0,192,0,14,13,26,15, + 1,0,31,252,113,252,96,192,224,224,192,96,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,10,13,26,11, + 0,0,63,192,127,192,204,0,140,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,128,15,128,7,0,13,13,26,14, + 0,0,48,224,120,48,216,24,152,24,24,24,24,24,24,24, + 24,24,24,24,24,48,12,48,14,224,7,192,16,14,28,18, + 1,0,127,255,255,255,152,24,48,12,49,140,97,134,97,134, + 97,134,97,134,97,134,97,134,49,140,59,220,30,120,14,13, + 26,16,1,0,24,96,48,48,96,24,99,24,195,12,195,12, + 195,12,195,12,195,12,195,12,99,24,119,184,60,240,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,48,0,32,0, + 55,128,31,128,48,0,96,0,192,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,16,18,36,18,1,251,193,131,113,142,49,140, + 57,156,57,156,57,156,57,156,57,156,57,156,25,152,25,152, + 13,176,7,224,1,128,1,128,1,128,1,128,1,128,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,24,0,48,0, + 32,0,96,0,64,0,192,0,128,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,8,22,22,10,1,251,7,12,24,24,24,24, + 24,16,48,32,192,32,48,16,24,24,24,24,24,24,12,7, + 2,22,22,4,1,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,22,22,10, + 1,251,224,48,24,24,24,24,24,8,12,4,3,4,12,8, + 24,24,24,24,24,24,48,224,11,4,8,13,1,5,56,32, + 124,96,199,192,131,128,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=34 x=15 y=26 dx=34 dy= 0 ascent=27 len=108 + Font Bounding box w=40 h=34 x=-5 y=-7 + Calculated Min Values x=-5 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb24[10727] U8G_SECTION(".progmem.u8g_font_symb24") = { + 0,40,34,251,249,23,5,133,13,247,32,255,249,27,249,23, + 249,0,0,0,8,0,1,4,23,23,11,4,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,0,0,0, + 96,240,240,96,20,24,72,23,1,0,192,0,48,192,0,48, + 192,0,96,96,0,96,96,0,96,48,0,192,48,0,192,63, + 255,192,31,255,128,24,1,128,12,3,0,12,3,0,12,3, + 0,6,6,0,6,6,0,3,12,0,3,12,0,3,12,0, + 1,152,0,1,152,0,0,240,0,0,240,0,0,240,0,0, + 96,0,14,23,46,16,1,0,6,48,6,48,6,48,6,48, + 12,96,12,96,12,96,127,252,127,252,12,96,12,96,12,96, + 24,192,24,192,24,192,255,248,255,248,24,192,24,192,49,128, + 49,128,49,128,49,128,15,24,48,18,0,0,255,254,255,254, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,63,254,63,254,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,255,254,255,254,23,23,69,27, + 2,255,7,192,96,30,225,192,60,63,192,56,33,128,112,33, + 128,112,35,0,240,98,0,224,70,0,224,204,0,224,204,0, + 97,152,0,119,16,124,62,48,238,0,97,198,0,99,130,0, + 199,2,0,135,2,1,142,6,3,14,4,3,14,12,6,14, + 24,14,7,48,12,3,224,23,22,66,25,1,0,0,248,0, + 3,140,0,3,6,0,7,6,0,7,6,0,7,6,0,7, + 12,0,7,152,0,3,241,252,3,192,112,7,192,96,29,224, + 96,56,240,192,112,240,128,96,121,128,224,63,0,224,30,0, + 224,31,0,240,31,130,248,55,238,127,227,252,31,128,248,12, + 17,34,14,1,0,126,0,127,128,7,192,1,224,0,224,0, + 240,0,112,0,112,63,240,63,240,0,112,0,112,0,224,1, + 224,3,192,255,0,124,0,8,29,29,11,2,250,3,7,6, + 12,24,48,48,112,112,96,96,224,224,224,224,224,224,224,96, + 96,112,112,48,48,24,12,6,7,3,8,29,29,11,1,250, + 192,224,96,48,24,12,12,14,14,6,6,7,7,7,7,7, + 7,7,6,6,14,14,12,12,24,48,96,224,192,11,14,28, + 16,2,4,4,0,14,0,14,0,196,96,228,224,127,192,31, + 0,31,0,127,192,228,224,196,96,14,0,14,0,4,0,16, + 18,36,18,1,0,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,4,9,9,8,2,251,96, + 240,240,240,16,48,96,224,192,17,2,6,18,0,8,255,255, + 128,255,255,128,4,4,4,8,2,0,96,240,240,96,7,22, + 22,9,1,0,2,2,6,6,4,12,12,8,24,24,16,48, + 48,32,32,96,64,64,192,192,128,128,14,23,46,16,1,0, + 15,192,28,224,56,112,48,48,112,56,112,56,96,24,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 96,24,112,56,112,56,48,48,56,112,28,224,15,192,9,23, + 46,16,4,0,4,0,28,0,252,0,220,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,62,0, + 255,128,14,23,46,16,1,0,15,128,31,192,63,224,97,240, + 192,240,192,112,128,112,0,112,0,112,0,96,0,96,0,192, + 0,192,1,128,3,0,3,0,6,0,12,0,24,0,48,12, + 112,24,127,248,255,240,13,23,46,16,1,0,15,128,63,224, + 113,224,64,224,192,96,128,96,0,96,0,192,0,192,1,128, + 7,192,15,224,1,240,0,112,0,120,0,56,0,56,0,56, + 0,48,0,48,96,96,121,192,127,128,15,23,46,16,0,0, + 0,48,0,112,0,112,0,240,1,240,1,240,3,112,6,112, + 6,112,12,112,24,112,24,112,48,112,32,112,96,112,192,112, + 255,254,255,254,0,112,0,112,0,112,0,112,0,112,13,23, + 46,16,1,0,15,248,15,240,31,240,16,0,48,0,32,0, + 126,0,127,128,127,192,15,224,3,224,0,240,0,112,0,112, + 0,112,0,48,0,48,0,48,0,112,0,96,224,192,251,128, + 254,0,14,23,46,16,1,0,0,56,1,224,3,128,7,0, + 14,0,28,0,56,0,56,0,112,0,119,192,255,240,240,120, + 224,56,224,60,224,28,224,28,224,28,224,28,112,28,112,56, + 56,56,28,112,15,192,13,23,46,16,1,0,127,248,127,248, + 127,248,192,24,128,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,192,1,128,1,128,1,128,3,0, + 3,0,3,0,6,0,6,0,6,0,12,23,46,16,2,0, + 31,128,113,192,96,224,224,96,192,96,224,96,224,224,112,192, + 121,192,63,0,31,0,31,128,63,192,115,192,96,224,224,240, + 192,112,192,112,224,112,224,112,96,96,121,192,31,128,14,23, + 46,16,1,0,15,128,56,224,48,112,96,56,224,56,224,56, + 224,60,224,28,224,28,224,28,240,28,112,28,120,124,63,252, + 15,56,0,56,0,112,0,240,0,224,1,192,7,128,30,0, + 112,0,4,15,15,9,2,0,96,240,240,96,0,0,0,0, + 0,0,0,96,240,240,96,4,20,20,9,3,251,96,240,240, + 96,0,0,0,0,0,0,0,96,240,240,240,16,48,96,224, + 192,16,16,32,18,1,1,0,7,0,31,0,124,1,240,7, + 128,30,0,120,0,224,0,224,0,120,0,30,0,7,128,1, + 240,0,124,0,31,0,7,17,8,24,18,0,5,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,16,16,32,18,1,1,224,0,248,0,62, + 0,15,128,1,224,0,120,0,30,0,7,0,7,0,30,0, + 120,1,224,15,128,62,0,248,0,224,0,11,23,46,14,2, + 0,63,0,99,128,193,192,192,224,192,224,224,224,192,224,1, + 224,1,192,1,128,3,128,3,0,6,0,6,0,4,0,4, + 0,4,0,0,0,0,0,12,0,30,0,30,0,12,0,17, + 16,48,18,0,0,30,1,0,63,195,128,96,255,0,64,28, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,21,23,69,23,0,0,0,32,0,0,112, + 0,0,112,0,0,112,0,0,248,0,0,248,0,0,188,0, + 1,188,0,1,156,0,3,30,0,3,14,0,2,15,0,6, + 15,0,6,7,0,12,7,128,15,255,128,8,3,128,24,3, + 192,24,1,192,48,1,224,48,1,224,112,1,240,252,7,248, + 18,23,69,22,1,0,255,224,0,63,254,0,28,31,0,28, + 7,0,28,7,128,28,7,128,28,7,128,28,7,128,28,7, + 0,28,15,0,28,62,0,31,248,0,28,31,0,28,7,128, + 28,3,128,28,3,192,28,3,192,28,3,192,28,3,192,28, + 7,128,28,15,128,63,255,0,255,248,0,22,23,69,23,0, + 0,255,195,252,63,0,224,31,0,192,15,1,192,7,129,128, + 7,195,0,3,198,0,1,230,0,1,236,0,0,248,0,0, + 120,0,0,120,0,0,124,0,0,222,0,1,158,0,1,143, + 0,3,15,128,6,7,128,14,3,192,12,3,224,24,1,224, + 56,1,240,254,7,252,19,22,66,20,0,0,0,96,0,0, + 96,0,0,240,0,0,240,0,0,240,0,1,248,0,1,56, + 0,3,60,0,2,60,0,6,28,0,4,30,0,12,14,0, + 12,15,0,8,15,0,24,7,0,16,7,128,48,3,128,32, + 3,192,96,3,192,64,1,192,255,255,224,255,255,224,18,23, + 69,20,1,0,255,255,128,63,255,128,28,3,128,28,1,128, + 28,1,128,28,0,0,28,0,0,28,2,0,28,2,0,28, + 2,0,28,14,0,31,254,0,28,6,0,28,2,0,28,2, + 0,28,0,0,28,0,0,28,0,64,28,0,64,28,0,192, + 28,1,192,63,255,128,255,255,128,23,23,69,25,1,0,1, + 255,0,0,124,0,0,56,0,0,56,0,7,255,192,31,57, + 240,60,56,120,120,56,60,120,56,60,240,56,30,240,56,30, + 240,56,30,240,56,30,240,56,30,120,56,28,120,56,60,60, + 56,120,31,57,240,7,255,192,0,56,0,0,56,0,0,124, + 0,1,255,0,18,23,69,20,1,0,255,255,128,63,255,192, + 60,1,192,28,0,192,28,0,64,28,0,64,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,62,0,0,255,128,0,22, + 23,69,24,1,0,255,135,252,62,1,240,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 28,0,224,28,0,224,31,255,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,62,1,240,255,135,252,9,23,46,11,1,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,20,23, + 69,20,0,0,0,120,0,0,220,0,0,134,0,0,135,0, + 0,131,0,0,195,128,0,67,128,28,99,128,62,57,128,126, + 29,128,199,7,128,199,1,224,6,1,176,14,1,128,14,1, + 128,14,1,128,14,3,128,14,3,0,14,3,0,14,7,0, + 7,6,0,3,156,0,1,248,0,22,23,69,23,1,0,255, + 143,240,62,3,192,28,3,128,28,3,0,28,6,0,28,12, + 0,28,24,0,28,48,0,28,96,0,29,192,0,31,224,0, + 31,224,0,30,240,0,28,120,0,28,124,0,28,62,0,28, + 31,0,28,15,128,28,7,128,28,3,192,28,1,224,62,1, + 240,255,143,252,21,22,66,22,0,0,0,32,0,0,48,0, + 0,112,0,0,112,0,0,248,0,0,248,0,0,188,0,1, + 188,0,1,156,0,1,30,0,3,14,0,3,15,0,2,15, + 0,6,7,0,6,7,128,12,3,128,12,3,192,8,3,192, + 24,1,192,24,1,224,56,1,240,254,7,248,27,23,92,29, + 1,0,254,0,15,224,30,0,15,128,31,0,15,0,31,0, + 31,0,31,0,31,0,31,128,55,0,27,128,55,0,27,192, + 39,0,27,192,103,0,25,224,103,0,25,224,199,0,24,224, + 199,0,24,240,135,0,24,113,135,0,24,121,135,0,24,123, + 7,0,24,63,7,0,24,63,7,0,24,30,7,0,24,30, + 7,0,24,12,7,0,56,12,15,128,255,12,63,224,22,23, + 69,23,1,0,252,3,252,62,0,96,30,0,96,31,0,96, + 31,128,96,31,192,96,27,192,96,25,224,96,25,240,96,24, + 240,96,24,120,96,24,60,96,24,60,96,24,30,96,24,15, + 96,24,15,224,24,7,224,24,3,224,24,1,224,24,1,224, + 24,0,224,56,0,96,255,0,32,22,23,69,23,1,0,1, + 254,0,7,135,128,14,1,192,28,0,224,60,0,240,120,0, + 112,120,0,120,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,120, + 0,120,56,0,112,60,0,240,28,0,224,14,1,192,7,207, + 128,1,254,0,23,23,69,25,1,0,255,255,254,63,255,248, + 28,0,112,28,0,112,28,0,112,28,0,112,28,0,112,28, + 0,112,28,0,112,28,0,112,28,0,112,28,0,112,28,0, + 112,28,0,112,28,0,112,28,0,112,28,0,112,28,0,112, + 28,0,112,28,0,112,28,0,112,62,0,248,255,131,254,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,60,0,240,56,0,112,120,0,120,112,0,56,112,0,56, + 242,1,60,243,3,60,243,255,60,243,255,60,243,3,60,242, + 1,60,112,0,56,112,0,56,120,0,120,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,240,0,63,254,0,28,15,0,28,7,128,28,7,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,7,128,28,7, + 0,30,62,0,31,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,18,23,69,19,1,0,255,255,0,255,255, + 0,120,3,0,60,1,0,62,1,128,30,0,0,15,0,0, + 7,128,0,7,192,0,3,192,0,1,224,0,0,192,0,1, + 192,0,1,128,0,3,0,0,6,0,0,12,0,64,28,0, + 192,24,0,128,48,1,128,127,255,128,255,255,128,255,255,128, + 19,23,69,20,1,0,255,255,224,248,227,224,192,224,224,192, + 224,96,128,224,32,128,224,32,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,1,240,0,7,252,0,23,23,69,23,0, + 0,255,193,254,62,0,112,31,0,96,15,0,224,15,128,192, + 7,129,128,3,193,128,3,227,0,1,227,0,0,246,0,0, + 252,0,0,124,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,124,0,1,255,0,13,24,48,14,1,249,3,224,15,240, + 31,240,48,0,96,0,64,0,192,0,192,0,128,0,128,0, + 128,0,192,0,192,0,240,0,127,240,63,240,31,248,0,24, + 0,8,0,8,0,24,7,240,7,240,7,192,23,23,69,25, + 1,0,0,254,0,3,131,128,14,0,224,30,0,240,28,0, + 112,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 120,0,60,120,0,60,120,0,60,56,0,56,60,0,120,28, + 0,112,14,0,224,7,1,192,129,131,2,192,130,6,255,199, + 254,255,199,254,255,199,254,19,23,69,21,1,0,127,255,192, + 127,255,192,127,255,192,96,0,192,64,0,64,0,0,0,0, + 0,0,0,0,0,8,2,0,12,6,0,15,254,0,15,254, + 0,15,254,0,8,2,0,8,2,0,0,0,0,0,0,0, + 192,0,96,192,0,96,64,0,64,127,255,192,127,255,192,127, + 255,192,25,23,92,26,0,0,224,255,131,128,112,62,7,0, + 56,28,14,0,56,28,14,0,60,28,30,0,60,28,30,0, + 60,28,30,0,60,28,30,0,60,28,30,0,28,28,28,0, + 30,28,60,0,15,156,248,0,3,255,224,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,62,0,0, + 0,255,128,0,19,23,69,20,1,0,127,255,192,120,3,192, + 96,7,128,96,15,0,64,15,0,64,30,0,0,62,0,0, + 60,0,0,120,0,0,248,0,0,240,0,1,224,0,1,224, + 0,3,192,0,7,192,0,7,128,0,15,0,0,31,0,32, + 30,0,32,62,0,96,60,0,224,120,3,192,255,255,192,7, + 28,28,11,3,251,254,224,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 254,17,16,48,28,5,0,1,224,0,1,224,0,1,224,0, + 1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,240,7,128,240,7, + 128,240,7,128,240,7,128,7,28,28,11,1,251,254,14,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,14,254,20,23,69,21,1,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,255,255, + 240,255,255,240,16,2,4,16,0,249,255,255,255,255,20,1, + 3,17,15,26,255,255,240,19,17,51,20,1,0,15,193,128, + 28,225,128,56,51,128,112,19,128,112,23,0,240,31,0,224, + 15,0,224,14,0,224,14,0,224,14,0,224,28,0,240,30, + 0,240,30,32,112,58,32,120,115,224,60,225,192,15,193,192, + 14,32,64,18,2,249,15,128,25,224,48,224,112,112,96,112, + 96,112,96,112,96,112,96,112,96,96,103,192,103,224,96,112, + 96,56,96,56,96,60,96,28,96,28,96,28,96,28,96,28, + 96,56,120,120,111,240,99,192,96,0,96,0,96,0,96,0, + 224,0,224,0,224,0,17,25,75,18,0,249,24,0,0,60, + 14,0,126,14,0,70,30,0,194,28,0,195,60,0,3,56, + 0,1,112,0,1,112,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,128,0,7,192,0,7,192,0,15,64,0,14, + 64,0,30,96,0,28,97,128,60,97,128,56,51,0,120,63, + 0,112,62,0,112,30,0,14,25,50,16,1,0,15,128,31, + 224,48,240,32,120,48,48,56,0,28,0,14,0,7,128,3, + 192,7,240,28,240,56,120,112,56,240,60,224,28,224,28,224, + 28,224,28,240,28,240,56,112,56,120,112,31,224,7,128,12, + 18,36,14,1,255,31,128,57,224,112,224,224,224,224,64,224, + 0,112,0,120,0,31,128,120,0,240,0,224,0,224,0,224, + 16,240,48,120,48,63,224,15,128,15,30,60,17,1,249,1, + 0,1,0,1,0,1,0,1,0,1,0,15,192,29,112,57, + 56,113,28,113,28,225,30,225,14,225,14,225,14,225,14,225, + 14,241,14,113,12,113,28,57,24,29,112,7,224,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,15,24,48,13,254, + 249,56,14,124,14,124,14,198,28,134,28,130,28,3,56,3, + 56,1,48,1,48,1,96,1,224,1,192,0,192,0,192,1, + 128,1,192,1,192,3,192,3,192,3,192,3,192,3,128,1, + 128,17,24,72,20,0,249,24,56,0,124,254,0,223,222,0, + 207,15,0,143,7,0,14,7,0,14,7,0,14,7,0,14, + 7,0,14,7,0,14,7,0,14,7,0,14,7,0,14,7, + 0,14,7,0,14,7,0,14,7,0,0,7,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,3,0,0,3,128,10, + 17,34,11,0,0,4,0,124,0,252,0,60,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 64,28,192,15,192,15,0,18,24,72,20,1,249,6,60,0, + 30,126,0,56,255,0,112,199,128,112,195,128,240,195,192,224, + 193,192,224,193,192,224,193,192,224,193,192,240,193,192,240,193, + 128,112,195,128,120,195,0,56,199,0,30,220,0,7,248,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,17,17,51,18,1,0,8,7,0,248,31, + 128,248,63,128,56,99,0,24,192,0,25,128,0,27,0,0, + 31,128,0,31,128,0,27,192,0,25,224,0,24,240,0,24, + 240,0,24,120,0,24,60,0,24,62,0,24,127,128,17,25, + 75,18,1,0,56,0,0,124,0,0,126,0,0,198,0,0, + 195,0,0,131,0,0,1,0,0,1,0,0,1,128,0,3, + 128,0,3,128,0,7,128,0,7,192,0,15,192,0,14,192, + 0,30,64,0,28,96,0,28,96,0,56,96,0,56,96,128, + 112,48,128,112,57,128,224,63,0,224,31,0,224,14,0,17, + 24,72,19,1,249,112,56,0,112,56,0,112,56,0,112,56, + 0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0, + 112,56,0,112,56,0,112,56,0,112,120,0,120,120,128,127, + 253,128,127,159,128,110,30,0,96,0,0,96,0,0,96,0, + 0,224,0,0,224,0,0,224,0,0,96,0,0,16,17,34, + 17,255,0,24,6,248,7,60,7,28,7,28,7,30,6,14, + 6,14,12,7,12,7,24,7,152,3,176,3,160,1,224,1, + 192,1,192,0,128,15,17,34,18,1,0,7,192,28,112,48, + 56,112,60,112,28,224,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,28,56,56,30,112,15,224,17,17,51, + 18,0,0,15,255,128,63,255,128,63,255,128,102,56,0,198, + 56,0,6,48,0,6,48,0,6,48,0,6,48,0,6,48, + 0,4,48,0,12,48,0,12,48,128,28,57,128,60,63,0, + 60,31,0,56,30,0,14,23,46,17,1,0,7,128,28,224, + 24,112,48,48,112,56,112,56,240,60,224,28,224,28,224,28, + 224,28,255,252,255,252,224,28,224,28,224,28,224,28,112,56, + 112,56,112,56,56,112,28,224,15,192,14,25,50,18,2,249, + 7,192,31,224,48,240,96,120,96,120,224,60,224,60,224,28, + 224,28,224,28,224,28,224,24,224,24,224,56,240,112,248,224, + 239,192,231,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,18,18,54,20,1,0,3,255,192,15,255,192,63,255, + 192,124,48,0,120,24,0,240,28,0,240,14,0,224,15,0, + 224,7,0,224,7,0,240,7,0,112,7,0,112,15,0,56, + 14,0,60,30,0,30,56,0,7,240,0,1,192,0,14,17, + 34,14,0,0,15,252,63,252,63,252,99,128,195,128,195,128, + 3,0,3,0,3,0,3,0,3,0,3,8,3,136,3,152, + 3,248,1,240,1,224,17,18,54,19,0,0,0,16,0,60, + 24,0,124,28,0,252,6,0,206,7,0,142,3,0,14,3, + 0,14,3,128,14,3,128,14,3,128,14,3,128,14,3,128, + 14,3,0,14,7,0,7,7,0,7,14,0,3,156,0,1, + 248,0,21,19,57,23,0,0,31,255,248,63,255,248,127,255, + 248,231,131,128,222,0,192,60,0,224,56,56,112,120,56,112, + 120,56,56,120,56,56,112,56,56,112,56,56,112,56,56,112, + 16,56,120,16,56,120,56,112,56,40,112,28,236,224,15,135, + 192,20,17,51,22,1,0,15,14,0,28,7,128,56,1,192, + 112,97,224,112,224,224,224,224,240,224,224,240,224,224,112,224, + 224,112,224,224,112,224,224,112,224,64,112,224,224,240,112,224, + 224,113,177,224,63,31,192,30,15,0,14,33,66,16,1,249, + 48,0,96,192,99,224,103,192,63,128,24,0,48,0,32,0, + 32,0,48,0,49,240,31,240,31,224,48,0,96,0,64,0, + 192,0,128,0,128,0,128,0,192,0,192,0,248,0,127,240, + 63,252,31,252,0,12,0,4,0,4,0,12,3,248,3,248, + 1,224,22,24,72,22,0,249,240,48,60,120,48,120,60,48, + 240,28,48,224,28,48,224,28,48,224,28,48,224,28,48,224, + 30,48,224,30,49,224,30,49,224,14,49,192,14,49,192,6, + 49,192,7,51,128,3,183,0,1,254,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 13,32,64,16,2,249,24,0,56,112,48,240,51,224,63,192, + 14,0,12,0,24,0,16,0,48,0,32,0,96,0,64,0, + 64,0,192,0,192,0,192,0,192,0,192,0,224,0,96,0, + 127,192,63,240,31,248,15,248,0,24,0,8,0,8,0,24, + 3,248,7,240,3,224,11,29,58,16,2,250,7,224,14,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,28,0,28,0,112,0,192,0,112,0,28,0,28,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,14,0,7,224,2,28,28,7,2,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,29,58,16,2,250,252,0, + 14,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,7,0,7,0,1,192,0,96,1,192,7,0, + 7,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,14,0,252,0,15,4,8,18,1,7,24,0, + 127,134,227,254,192,56,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,20,23,69,20,0,0,240,1, + 192,124,7,224,15,12,112,7,12,240,3,152,224,1,208,224, + 1,208,0,1,240,0,1,240,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,1,240,0, + 7,252,0,6,9,9,8,1,16,24,60,60,120,112,96,224, + 192,128,16,21,42,18,1,0,0,7,0,31,0,124,1,240, + 7,192,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,120,0,30,0,7,0,1,0,0,0,0,255,255, + 255,255,15,23,46,6,251,0,0,2,0,6,0,12,0,12, + 0,24,0,48,0,48,0,96,0,192,0,192,1,128,3,0, + 3,0,6,0,12,0,12,0,24,0,48,0,48,0,96,0, + 192,0,192,0,128,0,21,10,30,23,1,4,28,3,192,127, + 15,224,99,158,48,193,248,24,192,240,24,192,240,24,192,248, + 24,99,156,48,127,15,240,28,3,192,16,29,58,16,0,250, + 0,30,0,51,0,103,0,98,0,224,0,224,0,192,0,192, + 0,192,15,252,1,192,1,192,1,192,1,192,1,128,1,128, + 1,128,3,128,3,128,3,128,3,0,3,0,3,0,3,0, + 2,0,102,0,230,0,236,0,120,0,18,18,54,24,3,0, + 1,224,0,3,240,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,240,0,1,224,0,124,207,128,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,252,207,192,120,199,128, + 0,192,0,1,224,0,14,18,36,24,5,0,3,0,7,128, + 7,192,15,192,31,224,63,240,127,248,127,248,255,252,255,252, + 127,248,127,248,63,240,31,224,15,192,7,192,7,128,3,0, + 16,18,36,24,4,0,124,62,254,127,254,127,255,255,255,255, + 255,255,255,255,127,254,127,254,63,252,63,252,31,248,15,240, + 15,240,7,224,3,192,1,128,1,128,16,18,36,24,4,0, + 1,128,1,192,3,192,7,224,7,240,15,240,31,248,63,252, + 63,252,127,254,255,255,255,255,255,255,253,191,249,159,249,159, + 113,142,3,192,32,16,64,34,1,0,1,128,1,128,3,0, + 0,192,7,0,0,224,14,0,0,112,28,0,0,56,56,0, + 0,28,112,0,0,14,255,255,255,255,255,255,255,255,112,0, + 0,14,56,0,0,28,28,0,0,56,14,0,0,112,7,0, + 0,224,3,0,0,192,1,128,1,128,29,16,64,32,1,0, + 1,128,0,0,3,0,0,0,6,0,0,0,14,0,0,0, + 28,0,0,0,56,0,0,0,112,0,0,0,255,255,255,248, + 255,255,255,248,112,0,0,0,56,0,0,0,28,0,0,0, + 14,0,0,0,6,0,0,0,3,0,0,0,1,128,0,0, + 16,27,54,20,2,0,1,128,3,192,7,224,15,240,29,184, + 57,156,113,142,225,135,193,131,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,29,16,64,32, + 2,0,0,0,12,0,0,0,14,0,0,0,7,0,0,0, + 3,128,0,0,1,192,0,0,0,224,0,0,0,112,255,255, + 255,248,255,255,255,248,0,0,0,112,0,0,0,224,0,0, + 1,192,0,0,3,128,0,0,7,0,0,0,14,0,0,0, + 12,0,16,27,54,20,2,0,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,193,131,225,135, + 113,142,57,156,29,184,15,240,7,224,3,192,1,128,9,10, + 20,13,2,13,28,0,99,0,65,0,128,128,128,128,128,128, + 128,128,65,0,99,0,28,0,16,22,44,18,1,0,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,255,255, + 255,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,0,0,0,0,255,255,255,255,12,9,18,13,1,15, + 28,112,28,112,60,240,56,224,113,192,113,192,227,128,195,0, + 130,0,16,21,42,18,1,0,224,0,248,0,62,0,15,128, + 1,224,0,120,0,30,0,7,0,7,0,30,0,120,1,224, + 7,128,30,0,120,0,224,0,128,0,0,0,0,0,255,255, + 255,255,16,16,32,18,1,1,192,3,224,7,112,14,56,28, + 28,56,14,112,7,224,3,192,3,192,7,224,14,112,28,56, + 56,28,112,14,224,7,192,3,19,10,30,23,1,4,28,3, + 192,63,15,224,99,156,0,193,248,0,192,240,0,192,240,0, + 193,248,0,99,156,0,127,15,224,28,3,192,14,27,54,16, + 1,0,30,0,63,128,32,224,0,112,0,48,0,24,0,24, + 0,24,0,28,0,28,0,28,15,28,31,252,56,124,120,60, + 112,60,240,56,224,56,224,56,224,56,224,112,224,112,96,96, + 112,224,57,192,31,128,15,0,11,12,24,15,2,4,14,0, + 63,128,127,192,127,192,255,224,255,224,255,224,255,224,127,192, + 127,192,63,128,14,0,16,13,26,18,1,2,1,128,3,192, + 3,192,1,128,0,0,255,255,255,255,0,0,0,0,1,128, + 3,192,3,192,1,128,17,19,57,18,1,255,0,12,0,0, + 24,0,0,24,0,0,48,0,0,48,0,255,255,128,255,255, + 128,0,192,0,0,192,0,1,128,0,1,128,0,3,0,0, + 255,255,128,255,255,128,6,0,0,12,0,0,12,0,0,24, + 0,0,24,0,0,17,12,36,18,0,3,255,255,128,255,255, + 128,0,0,0,0,0,0,0,0,0,255,255,128,255,255,128, + 0,0,0,0,0,0,0,0,0,255,255,128,255,255,128,16, + 9,18,18,1,4,28,0,127,135,225,254,64,56,0,0,28, + 0,127,135,225,254,192,56,26,4,16,33,3,0,96,12,1, + 128,240,30,3,192,240,30,3,192,96,12,1,128,2,34,34, + 20,9,249,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,32,2,8,32,0,7,255,255,255,255,255, + 255,255,255,18,21,63,21,1,0,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,16,0,192,112,0,192,255,255,192,255, + 255,192,112,0,0,16,0,0,16,22,44,27,5,0,0,32, + 96,96,240,126,240,127,248,127,124,63,60,15,62,12,31,24, + 31,152,55,240,115,240,97,240,225,240,240,248,240,124,120,62, + 124,30,124,31,60,15,124,7,252,6,18,27,81,22,1,254, + 7,240,0,31,254,0,63,255,128,56,63,128,96,7,0,96, + 7,0,64,6,0,64,12,0,64,12,0,96,28,0,48,28, + 0,28,14,0,14,14,0,0,15,0,0,7,0,0,7,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,192,60, + 1,128,255,1,128,159,195,0,7,254,0,3,248,0,0,240, + 0,23,24,72,26,1,0,15,128,192,63,225,240,97,247,248, + 192,252,124,128,120,62,128,120,28,128,56,56,192,56,112,224, + 56,192,120,57,192,62,59,192,14,57,224,6,56,224,6,56, + 224,0,56,240,0,56,240,0,56,112,0,112,112,0,112,112, + 0,96,120,30,192,122,63,128,62,47,128,60,6,0,16,23, + 26,78,32,5,249,0,192,0,1,192,0,3,0,112,6,3, + 252,6,14,30,12,24,30,28,48,14,24,96,14,56,192,30, + 57,128,30,59,0,30,62,0,28,62,48,60,60,120,56,30, + 112,120,62,64,240,47,65,224,111,99,192,71,63,0,199,0, + 0,135,0,0,131,0,0,131,0,0,199,0,0,102,0,0, + 60,0,0,22,23,69,25,1,0,0,252,0,3,255,0,15, + 3,192,28,0,224,56,0,112,50,1,48,103,3,152,99,135, + 24,193,134,8,192,204,12,192,120,12,192,48,12,192,120,12, + 192,204,12,193,134,12,99,135,24,103,3,152,50,1,48,56, + 0,112,28,0,224,15,3,192,3,255,0,0,252,0,22,23, + 69,25,1,0,0,252,0,3,255,0,15,3,192,28,48,224, + 24,48,96,48,48,48,96,48,24,96,48,24,96,48,24,192, + 48,12,192,48,12,223,255,236,223,255,236,192,48,12,192,48, + 12,96,48,24,96,48,24,48,48,48,56,48,112,28,48,224, + 15,3,192,3,255,0,0,252,0,24,24,72,27,1,0,0, + 126,2,3,255,198,7,129,238,14,0,124,24,0,56,48,0, + 124,112,0,238,96,1,198,96,3,134,192,7,3,192,14,3, + 192,28,3,192,56,3,192,112,3,192,224,3,97,192,6,99, + 128,6,119,0,14,62,0,12,28,0,24,62,0,112,119,129, + 224,227,255,192,192,126,0,22,17,51,25,1,0,0,252,0, + 3,255,0,15,3,192,28,0,224,56,0,112,48,0,48,96, + 0,24,96,0,24,192,0,12,192,0,12,192,0,12,192,0, + 12,192,0,12,192,0,12,192,0,12,192,0,12,192,0,12, + 22,17,51,25,1,0,192,0,12,192,0,12,192,0,12,192, + 0,12,192,0,12,192,0,12,192,0,12,192,0,12,192,0, + 12,96,0,24,96,0,24,48,0,48,56,0,112,28,0,224, + 15,3,192,3,255,0,0,252,0,21,16,48,23,1,0,255, + 255,0,255,255,192,0,1,224,0,0,112,0,0,48,0,0, + 56,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,48,0,0,112,0,0,224,255,255,192,255,255,0,21, + 20,60,23,1,252,255,255,0,255,255,192,0,0,224,0,0, + 112,0,0,48,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,48,0,0,112,0,0,224,255, + 255,192,255,255,0,0,0,0,0,0,0,255,255,240,255,255, + 240,21,20,60,23,1,254,0,0,96,0,0,192,7,255,248, + 15,255,248,56,1,128,112,3,0,96,3,0,224,6,0,192, + 6,0,192,12,0,192,12,0,192,24,0,224,24,0,96,48, + 0,112,48,0,60,96,0,31,255,248,7,255,248,0,192,0, + 1,128,0,21,16,48,23,1,0,7,255,248,31,255,248,56, + 0,0,112,0,0,96,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,224,0,0,96,0,0,112,0,0, + 60,0,0,31,255,248,7,255,248,21,20,60,23,1,252,7, + 255,248,31,255,248,56,0,0,112,0,0,96,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 96,0,0,112,0,0,56,0,0,31,255,248,7,255,248,0, + 0,0,0,0,0,127,255,248,127,255,248,15,16,32,23,1, + 0,7,254,31,254,56,0,112,0,96,0,192,0,192,0,255, + 254,255,254,192,0,192,0,96,0,112,0,56,0,31,254,7, + 254,15,20,40,23,1,254,0,24,0,24,7,254,31,254,56, + 96,112,96,96,192,64,192,193,128,255,254,255,254,195,0,70, + 0,110,0,124,0,60,0,31,254,55,254,48,0,32,0,22, + 22,66,25,1,0,0,0,12,0,0,28,0,0,56,0,0, + 112,0,0,224,0,1,192,0,3,128,0,7,0,0,14,0, + 0,28,0,0,56,0,0,112,0,0,96,0,0,192,0,1, + 128,0,3,0,0,7,0,0,14,0,0,28,0,0,56,0, + 0,127,255,248,255,255,248,20,24,72,23,1,0,255,255,240, + 127,255,240,120,0,48,120,0,32,60,0,96,60,0,64,28, + 0,192,30,0,192,30,1,128,15,1,128,15,1,0,7,3, + 0,7,130,0,7,134,0,3,196,0,3,204,0,3,204,0, + 1,248,0,1,248,0,0,240,0,0,240,0,0,224,0,0, + 96,0,0,64,0,21,22,66,25,2,0,1,252,0,7,7, + 0,12,1,192,24,0,192,51,248,96,97,142,48,65,134,16, + 193,134,24,193,134,24,129,140,8,129,248,8,129,184,8,129, + 152,8,193,156,24,193,142,24,65,135,16,103,195,176,48,0, + 96,24,0,192,28,1,192,7,7,0,1,252,0,21,23,69, + 25,2,0,1,252,0,7,207,0,14,1,128,24,0,192,48, + 0,96,48,0,48,96,125,48,65,199,16,195,3,24,195,1, + 24,134,0,8,134,0,8,134,0,8,134,0,8,134,0,8, + 199,0,24,67,3,24,97,199,16,32,252,48,48,0,96,28, + 0,192,7,135,128,1,254,0,27,13,52,29,1,10,255,220, + 1,224,204,206,3,128,140,78,3,128,12,15,7,128,12,11, + 5,128,12,11,141,128,12,9,141,128,12,9,201,128,12,8, + 217,128,12,8,241,128,12,8,113,128,12,8,97,128,62,30, + 39,224,25,27,108,27,1,0,255,255,255,128,63,255,254,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,63,0,126,0, + 255,193,255,128,17,27,81,18,0,0,0,0,128,0,0,128, + 0,0,128,0,0,128,0,1,128,0,1,0,0,1,0,0, + 3,0,0,2,0,8,2,0,56,2,0,236,6,0,12,4, + 0,6,4,0,6,4,0,3,4,0,3,12,0,1,140,0, + 1,136,0,0,200,0,0,200,0,0,104,0,0,120,0,0, + 56,0,0,48,0,0,16,0,0,16,0,3,3,3,8,2, + 7,224,224,224,21,10,30,23,1,0,255,255,248,255,255,248, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,16,15,30,20,2,0,1,128, + 1,128,3,192,3,192,6,96,14,112,12,48,28,56,24,24, + 48,12,48,12,96,6,224,7,192,3,128,1,16,15,30,20, + 2,0,128,1,192,3,224,7,96,6,48,12,48,12,24,24, + 28,56,12,48,6,96,6,96,3,192,3,192,1,128,1,128, + 32,18,72,34,1,0,0,128,1,0,1,128,1,128,3,0, + 0,192,6,0,0,96,15,255,255,240,31,255,255,248,56,0, + 0,28,112,0,0,14,224,0,0,7,224,0,0,7,112,0, + 0,14,56,0,0,28,31,255,255,248,15,255,255,240,6,0, + 0,96,3,0,0,192,1,128,1,128,0,128,1,0,29,17, + 68,32,1,0,0,128,0,0,1,128,0,0,3,0,0,0, + 6,0,0,0,15,255,255,248,31,255,255,248,56,0,0,0, + 112,0,0,0,224,0,0,0,112,0,0,0,56,0,0,0, + 31,255,255,248,15,255,255,248,6,0,0,0,3,0,0,0, + 1,128,0,0,0,128,0,0,17,27,81,20,1,0,0,128, + 0,1,192,0,3,224,0,7,112,0,14,56,0,28,28,0, + 60,30,0,124,31,0,236,27,128,12,24,0,12,24,0,12, + 24,0,12,24,0,12,24,0,12,24,0,12,24,0,12,24, + 0,12,24,0,12,24,0,12,24,0,12,24,0,12,24,0, + 12,24,0,12,24,0,12,24,0,12,24,0,12,24,0,29, + 17,68,32,2,0,0,0,8,0,0,0,12,0,0,0,6, + 0,0,0,3,0,255,255,255,128,255,255,255,192,0,0,0, + 224,0,0,0,112,0,0,0,56,0,0,0,112,0,0,0, + 224,255,255,255,192,255,255,255,128,0,0,3,0,0,0,6, + 0,0,0,12,0,0,0,8,0,17,27,81,20,1,0,12, + 24,0,12,24,0,12,24,0,12,24,0,12,24,0,12,24, + 0,12,24,0,12,24,0,12,24,0,12,24,0,12,24,0, + 12,24,0,12,24,0,12,24,0,12,24,0,12,24,0,12, + 24,0,12,24,0,236,27,128,124,31,0,60,30,0,28,28, + 0,14,56,0,7,112,0,3,224,0,1,192,0,0,128,0, + 14,25,50,16,1,0,3,0,7,128,7,128,12,192,12,192, + 24,96,24,96,48,48,48,48,96,24,96,24,192,12,192,12, + 224,28,96,24,96,24,48,48,48,48,24,96,24,96,12,192, + 12,192,7,128,7,128,3,0,9,30,60,11,1,250,1,128, + 3,0,3,0,6,0,6,0,14,0,12,0,28,0,24,0, + 56,0,48,0,48,0,96,0,96,0,192,0,192,0,96,0, + 96,0,48,0,48,0,56,0,24,0,28,0,12,0,14,0, + 6,0,6,0,3,0,3,0,1,128,21,22,66,26,2,0, + 1,252,0,7,15,0,12,1,128,24,0,192,48,0,96,99, + 254,48,67,6,16,195,3,24,195,3,24,195,3,24,131,6, + 8,131,252,8,131,6,8,195,3,24,195,3,24,67,3,16, + 99,3,48,32,0,32,48,0,96,28,1,192,7,15,0,3, + 252,0,21,23,69,26,2,0,1,252,0,7,223,0,14,3, + 128,24,0,192,48,0,96,32,0,32,96,252,48,65,206,16, + 195,6,24,195,3,24,194,0,8,134,0,8,134,0,8,134, + 0,8,134,3,24,195,3,24,67,6,24,97,206,48,32,248, + 48,48,0,96,28,0,192,15,135,128,3,254,0,22,13,39, + 25,1,10,255,56,28,24,56,28,24,56,28,24,60,60,24, + 60,60,24,52,44,24,54,108,24,54,108,24,50,76,24,51, + 204,24,51,204,24,49,140,24,49,140,21,28,84,23,1,255, + 255,255,224,120,3,224,124,0,96,60,0,96,30,0,32,15, + 0,0,15,128,0,7,128,0,3,192,0,3,224,0,1,240, + 0,0,240,0,0,120,0,0,120,0,0,56,0,0,48,0, + 0,96,0,0,192,0,1,128,0,3,128,0,3,0,0,6, + 0,8,12,0,24,24,0,24,48,0,48,127,255,240,127,255, + 240,255,255,240,13,34,68,13,1,249,0,24,0,120,0,224, + 1,192,3,128,3,0,6,0,12,0,12,0,24,0,24,0, + 56,0,48,0,48,0,48,0,96,0,96,0,96,0,96,0, + 96,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,2,34, + 34,13,1,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,34,68,13,1,249,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,0,96,0,96,0, + 96,0,48,0,48,0,48,0,56,0,24,0,24,0,12,0, + 12,0,6,0,3,0,3,128,1,192,0,224,0,120,0,24, + 11,34,68,13,0,249,255,224,255,224,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,2,34,34,13,0,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,11,34,68,13,0,249,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,255,224,255,224,8,34,34,16, + 6,249,7,31,56,112,96,96,224,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,9,34,68,16,255,249,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 3,0,3,0,6,0,12,0,56,0,224,0,120,0,12,0, + 6,0,3,0,3,0,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,8,34, + 34,16,6,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 96,96,112,56,31,7,2,34,34,16,6,249,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,255,9, + 30,60,11,1,250,192,0,96,0,96,0,48,0,48,0,56, + 0,24,0,28,0,12,0,14,0,6,0,6,0,3,0,3, + 0,1,128,1,128,3,0,3,0,6,0,6,0,14,0,12, + 0,28,0,24,0,56,0,48,0,48,0,96,0,96,0,192, + 0,9,33,66,9,0,250,3,0,7,128,7,128,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,248,0,248,0,112,0,12,34,68,23,10,249,1, + 224,3,240,6,112,12,240,8,96,24,0,24,0,48,0,48, + 0,48,0,112,0,96,0,96,0,96,0,96,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,3,34,34,22,10,249,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,12,34,68,22,1, + 249,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,96,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,1,128,1,128,97,0,243,0,230, + 0,252,0,120,0,13,34,68,13,0,249,192,0,240,0,56, + 0,24,0,12,0,6,0,3,0,1,0,1,128,0,192,0, + 192,0,192,0,96,0,96,0,96,0,48,0,48,0,48,0, + 48,0,48,0,16,0,16,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,2, + 34,34,13,11,249,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,13,34,68,13,0,249,0,24,0, + 24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,16,0,16,0,48,0,48,0,48,0, + 48,0,48,0,96,0,96,0,96,0,192,0,192,0,192,1, + 128,1,0,3,0,6,0,12,0,28,0,56,0,240,0,192, + 0,11,34,68,13,1,249,255,224,255,224,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,2,34,34,13,10, + 249,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,11,34,68,13,1,249,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,255,224,255,224,8,34,34, + 16,0,249,224,120,28,14,6,6,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,9,34,68,16,6,249,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,96,0,96,0,48,0,24,0,14,0,3,128,14,0,24, + 0,48,0,96,0,96,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,8, + 33,33,16,0,250,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 6,6,14,28,120,224,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=27 h=33 x=15 y=26 dx=29 dy= 0 ascent=27 len=92 + Font Bounding box w=40 h=34 x=-5 y=-7 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb24r[5335] U8G_SECTION(".progmem.u8g_font_symb24r") = { + 0,40,34,251,249,23,5,133,13,247,32,127,249,27,249,23, + 249,0,0,0,8,0,1,4,23,23,11,4,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,0,0,0, + 96,240,240,96,20,24,72,23,1,0,192,0,48,192,0,48, + 192,0,96,96,0,96,96,0,96,48,0,192,48,0,192,63, + 255,192,31,255,128,24,1,128,12,3,0,12,3,0,12,3, + 0,6,6,0,6,6,0,3,12,0,3,12,0,3,12,0, + 1,152,0,1,152,0,0,240,0,0,240,0,0,240,0,0, + 96,0,14,23,46,16,1,0,6,48,6,48,6,48,6,48, + 12,96,12,96,12,96,127,252,127,252,12,96,12,96,12,96, + 24,192,24,192,24,192,255,248,255,248,24,192,24,192,49,128, + 49,128,49,128,49,128,15,24,48,18,0,0,255,254,255,254, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,63,254,63,254,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,255,254,255,254,23,23,69,27, + 2,255,7,192,96,30,225,192,60,63,192,56,33,128,112,33, + 128,112,35,0,240,98,0,224,70,0,224,204,0,224,204,0, + 97,152,0,119,16,124,62,48,238,0,97,198,0,99,130,0, + 199,2,0,135,2,1,142,6,3,14,4,3,14,12,6,14, + 24,14,7,48,12,3,224,23,22,66,25,1,0,0,248,0, + 3,140,0,3,6,0,7,6,0,7,6,0,7,6,0,7, + 12,0,7,152,0,3,241,252,3,192,112,7,192,96,29,224, + 96,56,240,192,112,240,128,96,121,128,224,63,0,224,30,0, + 224,31,0,240,31,130,248,55,238,127,227,252,31,128,248,12, + 17,34,14,1,0,126,0,127,128,7,192,1,224,0,224,0, + 240,0,112,0,112,63,240,63,240,0,112,0,112,0,224,1, + 224,3,192,255,0,124,0,8,29,29,11,2,250,3,7,6, + 12,24,48,48,112,112,96,96,224,224,224,224,224,224,224,96, + 96,112,112,48,48,24,12,6,7,3,8,29,29,11,1,250, + 192,224,96,48,24,12,12,14,14,6,6,7,7,7,7,7, + 7,7,6,6,14,14,12,12,24,48,96,224,192,11,14,28, + 16,2,4,4,0,14,0,14,0,196,96,228,224,127,192,31, + 0,31,0,127,192,228,224,196,96,14,0,14,0,4,0,16, + 18,36,18,1,0,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,4,9,9,8,2,251,96, + 240,240,240,16,48,96,224,192,17,2,6,18,0,8,255,255, + 128,255,255,128,4,4,4,8,2,0,96,240,240,96,7,22, + 22,9,1,0,2,2,6,6,4,12,12,8,24,24,16,48, + 48,32,32,96,64,64,192,192,128,128,14,23,46,16,1,0, + 15,192,28,224,56,112,48,48,112,56,112,56,96,24,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 96,24,112,56,112,56,48,48,56,112,28,224,15,192,9,23, + 46,16,4,0,4,0,28,0,252,0,220,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,62,0, + 255,128,14,23,46,16,1,0,15,128,31,192,63,224,97,240, + 192,240,192,112,128,112,0,112,0,112,0,96,0,96,0,192, + 0,192,1,128,3,0,3,0,6,0,12,0,24,0,48,12, + 112,24,127,248,255,240,13,23,46,16,1,0,15,128,63,224, + 113,224,64,224,192,96,128,96,0,96,0,192,0,192,1,128, + 7,192,15,224,1,240,0,112,0,120,0,56,0,56,0,56, + 0,48,0,48,96,96,121,192,127,128,15,23,46,16,0,0, + 0,48,0,112,0,112,0,240,1,240,1,240,3,112,6,112, + 6,112,12,112,24,112,24,112,48,112,32,112,96,112,192,112, + 255,254,255,254,0,112,0,112,0,112,0,112,0,112,13,23, + 46,16,1,0,15,248,15,240,31,240,16,0,48,0,32,0, + 126,0,127,128,127,192,15,224,3,224,0,240,0,112,0,112, + 0,112,0,48,0,48,0,48,0,112,0,96,224,192,251,128, + 254,0,14,23,46,16,1,0,0,56,1,224,3,128,7,0, + 14,0,28,0,56,0,56,0,112,0,119,192,255,240,240,120, + 224,56,224,60,224,28,224,28,224,28,224,28,112,28,112,56, + 56,56,28,112,15,192,13,23,46,16,1,0,127,248,127,248, + 127,248,192,24,128,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,192,1,128,1,128,1,128,3,0, + 3,0,3,0,6,0,6,0,6,0,12,23,46,16,2,0, + 31,128,113,192,96,224,224,96,192,96,224,96,224,224,112,192, + 121,192,63,0,31,0,31,128,63,192,115,192,96,224,224,240, + 192,112,192,112,224,112,224,112,96,96,121,192,31,128,14,23, + 46,16,1,0,15,128,56,224,48,112,96,56,224,56,224,56, + 224,60,224,28,224,28,224,28,240,28,112,28,120,124,63,252, + 15,56,0,56,0,112,0,240,0,224,1,192,7,128,30,0, + 112,0,4,15,15,9,2,0,96,240,240,96,0,0,0,0, + 0,0,0,96,240,240,96,4,20,20,9,3,251,96,240,240, + 96,0,0,0,0,0,0,0,96,240,240,240,16,48,96,224, + 192,16,16,32,18,1,1,0,7,0,31,0,124,1,240,7, + 128,30,0,120,0,224,0,224,0,120,0,30,0,7,128,1, + 240,0,124,0,31,0,7,17,8,24,18,0,5,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,16,16,32,18,1,1,224,0,248,0,62, + 0,15,128,1,224,0,120,0,30,0,7,0,7,0,30,0, + 120,1,224,15,128,62,0,248,0,224,0,11,23,46,14,2, + 0,63,0,99,128,193,192,192,224,192,224,224,224,192,224,1, + 224,1,192,1,128,3,128,3,0,6,0,6,0,4,0,4, + 0,4,0,0,0,0,0,12,0,30,0,30,0,12,0,17, + 16,48,18,0,0,30,1,0,63,195,128,96,255,0,64,28, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,21,23,69,23,0,0,0,32,0,0,112, + 0,0,112,0,0,112,0,0,248,0,0,248,0,0,188,0, + 1,188,0,1,156,0,3,30,0,3,14,0,2,15,0,6, + 15,0,6,7,0,12,7,128,15,255,128,8,3,128,24,3, + 192,24,1,192,48,1,224,48,1,224,112,1,240,252,7,248, + 18,23,69,22,1,0,255,224,0,63,254,0,28,31,0,28, + 7,0,28,7,128,28,7,128,28,7,128,28,7,128,28,7, + 0,28,15,0,28,62,0,31,248,0,28,31,0,28,7,128, + 28,3,128,28,3,192,28,3,192,28,3,192,28,3,192,28, + 7,128,28,15,128,63,255,0,255,248,0,22,23,69,23,0, + 0,255,195,252,63,0,224,31,0,192,15,1,192,7,129,128, + 7,195,0,3,198,0,1,230,0,1,236,0,0,248,0,0, + 120,0,0,120,0,0,124,0,0,222,0,1,158,0,1,143, + 0,3,15,128,6,7,128,14,3,192,12,3,224,24,1,224, + 56,1,240,254,7,252,19,22,66,20,0,0,0,96,0,0, + 96,0,0,240,0,0,240,0,0,240,0,1,248,0,1,56, + 0,3,60,0,2,60,0,6,28,0,4,30,0,12,14,0, + 12,15,0,8,15,0,24,7,0,16,7,128,48,3,128,32, + 3,192,96,3,192,64,1,192,255,255,224,255,255,224,18,23, + 69,20,1,0,255,255,128,63,255,128,28,3,128,28,1,128, + 28,1,128,28,0,0,28,0,0,28,2,0,28,2,0,28, + 2,0,28,14,0,31,254,0,28,6,0,28,2,0,28,2, + 0,28,0,0,28,0,0,28,0,64,28,0,64,28,0,192, + 28,1,192,63,255,128,255,255,128,23,23,69,25,1,0,1, + 255,0,0,124,0,0,56,0,0,56,0,7,255,192,31,57, + 240,60,56,120,120,56,60,120,56,60,240,56,30,240,56,30, + 240,56,30,240,56,30,240,56,30,120,56,28,120,56,60,60, + 56,120,31,57,240,7,255,192,0,56,0,0,56,0,0,124, + 0,1,255,0,18,23,69,20,1,0,255,255,128,63,255,192, + 60,1,192,28,0,192,28,0,64,28,0,64,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,62,0,0,255,128,0,22, + 23,69,24,1,0,255,135,252,62,1,240,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 28,0,224,28,0,224,31,255,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,62,1,240,255,135,252,9,23,46,11,1,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,20,23, + 69,20,0,0,0,120,0,0,220,0,0,134,0,0,135,0, + 0,131,0,0,195,128,0,67,128,28,99,128,62,57,128,126, + 29,128,199,7,128,199,1,224,6,1,176,14,1,128,14,1, + 128,14,1,128,14,3,128,14,3,0,14,3,0,14,7,0, + 7,6,0,3,156,0,1,248,0,22,23,69,23,1,0,255, + 143,240,62,3,192,28,3,128,28,3,0,28,6,0,28,12, + 0,28,24,0,28,48,0,28,96,0,29,192,0,31,224,0, + 31,224,0,30,240,0,28,120,0,28,124,0,28,62,0,28, + 31,0,28,15,128,28,7,128,28,3,192,28,1,224,62,1, + 240,255,143,252,21,22,66,22,0,0,0,32,0,0,48,0, + 0,112,0,0,112,0,0,248,0,0,248,0,0,188,0,1, + 188,0,1,156,0,1,30,0,3,14,0,3,15,0,2,15, + 0,6,7,0,6,7,128,12,3,128,12,3,192,8,3,192, + 24,1,192,24,1,224,56,1,240,254,7,248,27,23,92,29, + 1,0,254,0,15,224,30,0,15,128,31,0,15,0,31,0, + 31,0,31,0,31,0,31,128,55,0,27,128,55,0,27,192, + 39,0,27,192,103,0,25,224,103,0,25,224,199,0,24,224, + 199,0,24,240,135,0,24,113,135,0,24,121,135,0,24,123, + 7,0,24,63,7,0,24,63,7,0,24,30,7,0,24,30, + 7,0,24,12,7,0,56,12,15,128,255,12,63,224,22,23, + 69,23,1,0,252,3,252,62,0,96,30,0,96,31,0,96, + 31,128,96,31,192,96,27,192,96,25,224,96,25,240,96,24, + 240,96,24,120,96,24,60,96,24,60,96,24,30,96,24,15, + 96,24,15,224,24,7,224,24,3,224,24,1,224,24,1,224, + 24,0,224,56,0,96,255,0,32,22,23,69,23,1,0,1, + 254,0,7,135,128,14,1,192,28,0,224,60,0,240,120,0, + 112,120,0,120,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,120, + 0,120,56,0,112,60,0,240,28,0,224,14,1,192,7,207, + 128,1,254,0,23,23,69,25,1,0,255,255,254,63,255,248, + 28,0,112,28,0,112,28,0,112,28,0,112,28,0,112,28, + 0,112,28,0,112,28,0,112,28,0,112,28,0,112,28,0, + 112,28,0,112,28,0,112,28,0,112,28,0,112,28,0,112, + 28,0,112,28,0,112,28,0,112,62,0,248,255,131,254,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,60,0,240,56,0,112,120,0,120,112,0,56,112,0,56, + 242,1,60,243,3,60,243,255,60,243,255,60,243,3,60,242, + 1,60,112,0,56,112,0,56,120,0,120,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,240,0,63,254,0,28,15,0,28,7,128,28,7,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,7,128,28,7, + 0,30,62,0,31,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,18,23,69,19,1,0,255,255,0,255,255, + 0,120,3,0,60,1,0,62,1,128,30,0,0,15,0,0, + 7,128,0,7,192,0,3,192,0,1,224,0,0,192,0,1, + 192,0,1,128,0,3,0,0,6,0,0,12,0,64,28,0, + 192,24,0,128,48,1,128,127,255,128,255,255,128,255,255,128, + 19,23,69,20,1,0,255,255,224,248,227,224,192,224,224,192, + 224,96,128,224,32,128,224,32,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,1,240,0,7,252,0,23,23,69,23,0, + 0,255,193,254,62,0,112,31,0,96,15,0,224,15,128,192, + 7,129,128,3,193,128,3,227,0,1,227,0,0,246,0,0, + 252,0,0,124,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,124,0,1,255,0,13,24,48,14,1,249,3,224,15,240, + 31,240,48,0,96,0,64,0,192,0,192,0,128,0,128,0, + 128,0,192,0,192,0,240,0,127,240,63,240,31,248,0,24, + 0,8,0,8,0,24,7,240,7,240,7,192,23,23,69,25, + 1,0,0,254,0,3,131,128,14,0,224,30,0,240,28,0, + 112,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 120,0,60,120,0,60,120,0,60,56,0,56,60,0,120,28, + 0,112,14,0,224,7,1,192,129,131,2,192,130,6,255,199, + 254,255,199,254,255,199,254,19,23,69,21,1,0,127,255,192, + 127,255,192,127,255,192,96,0,192,64,0,64,0,0,0,0, + 0,0,0,0,0,8,2,0,12,6,0,15,254,0,15,254, + 0,15,254,0,8,2,0,8,2,0,0,0,0,0,0,0, + 192,0,96,192,0,96,64,0,64,127,255,192,127,255,192,127, + 255,192,25,23,92,26,0,0,224,255,131,128,112,62,7,0, + 56,28,14,0,56,28,14,0,60,28,30,0,60,28,30,0, + 60,28,30,0,60,28,30,0,60,28,30,0,28,28,28,0, + 30,28,60,0,15,156,248,0,3,255,224,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,62,0,0, + 0,255,128,0,19,23,69,20,1,0,127,255,192,120,3,192, + 96,7,128,96,15,0,64,15,0,64,30,0,0,62,0,0, + 60,0,0,120,0,0,248,0,0,240,0,1,224,0,1,224, + 0,3,192,0,7,192,0,7,128,0,15,0,0,31,0,32, + 30,0,32,62,0,96,60,0,224,120,3,192,255,255,192,7, + 28,28,11,3,251,254,224,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 254,17,16,48,28,5,0,1,224,0,1,224,0,1,224,0, + 1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,240,7,128,240,7, + 128,240,7,128,240,7,128,7,28,28,11,1,251,254,14,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,14,254,20,23,69,21,1,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,255,255, + 240,255,255,240,16,2,4,16,0,249,255,255,255,255,20,1, + 3,17,15,26,255,255,240,19,17,51,20,1,0,15,193,128, + 28,225,128,56,51,128,112,19,128,112,23,0,240,31,0,224, + 15,0,224,14,0,224,14,0,224,14,0,224,28,0,240,30, + 0,240,30,32,112,58,32,120,115,224,60,225,192,15,193,192, + 14,32,64,18,2,249,15,128,25,224,48,224,112,112,96,112, + 96,112,96,112,96,112,96,112,96,96,103,192,103,224,96,112, + 96,56,96,56,96,60,96,28,96,28,96,28,96,28,96,28, + 96,56,120,120,111,240,99,192,96,0,96,0,96,0,96,0, + 224,0,224,0,224,0,17,25,75,18,0,249,24,0,0,60, + 14,0,126,14,0,70,30,0,194,28,0,195,60,0,3,56, + 0,1,112,0,1,112,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,128,0,7,192,0,7,192,0,15,64,0,14, + 64,0,30,96,0,28,97,128,60,97,128,56,51,0,120,63, + 0,112,62,0,112,30,0,14,25,50,16,1,0,15,128,31, + 224,48,240,32,120,48,48,56,0,28,0,14,0,7,128,3, + 192,7,240,28,240,56,120,112,56,240,60,224,28,224,28,224, + 28,224,28,240,28,240,56,112,56,120,112,31,224,7,128,12, + 18,36,14,1,255,31,128,57,224,112,224,224,224,224,64,224, + 0,112,0,120,0,31,128,120,0,240,0,224,0,224,0,224, + 16,240,48,120,48,63,224,15,128,15,30,60,17,1,249,1, + 0,1,0,1,0,1,0,1,0,1,0,15,192,29,112,57, + 56,113,28,113,28,225,30,225,14,225,14,225,14,225,14,225, + 14,241,14,113,12,113,28,57,24,29,112,7,224,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,15,24,48,13,254, + 249,56,14,124,14,124,14,198,28,134,28,130,28,3,56,3, + 56,1,48,1,48,1,96,1,224,1,192,0,192,0,192,1, + 128,1,192,1,192,3,192,3,192,3,192,3,192,3,128,1, + 128,17,24,72,20,0,249,24,56,0,124,254,0,223,222,0, + 207,15,0,143,7,0,14,7,0,14,7,0,14,7,0,14, + 7,0,14,7,0,14,7,0,14,7,0,14,7,0,14,7, + 0,14,7,0,14,7,0,14,7,0,0,7,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,3,0,0,3,128,10, + 17,34,11,0,0,4,0,124,0,252,0,60,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 64,28,192,15,192,15,0,18,24,72,20,1,249,6,60,0, + 30,126,0,56,255,0,112,199,128,112,195,128,240,195,192,224, + 193,192,224,193,192,224,193,192,224,193,192,240,193,192,240,193, + 128,112,195,128,120,195,0,56,199,0,30,220,0,7,248,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,17,17,51,18,1,0,8,7,0,248,31, + 128,248,63,128,56,99,0,24,192,0,25,128,0,27,0,0, + 31,128,0,31,128,0,27,192,0,25,224,0,24,240,0,24, + 240,0,24,120,0,24,60,0,24,62,0,24,127,128,17,25, + 75,18,1,0,56,0,0,124,0,0,126,0,0,198,0,0, + 195,0,0,131,0,0,1,0,0,1,0,0,1,128,0,3, + 128,0,3,128,0,7,128,0,7,192,0,15,192,0,14,192, + 0,30,64,0,28,96,0,28,96,0,56,96,0,56,96,128, + 112,48,128,112,57,128,224,63,0,224,31,0,224,14,0,17, + 24,72,19,1,249,112,56,0,112,56,0,112,56,0,112,56, + 0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0, + 112,56,0,112,56,0,112,56,0,112,120,0,120,120,128,127, + 253,128,127,159,128,110,30,0,96,0,0,96,0,0,96,0, + 0,224,0,0,224,0,0,224,0,0,96,0,0,16,17,34, + 17,255,0,24,6,248,7,60,7,28,7,28,7,30,6,14, + 6,14,12,7,12,7,24,7,152,3,176,3,160,1,224,1, + 192,1,192,0,128,15,17,34,18,1,0,7,192,28,112,48, + 56,112,60,112,28,224,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,28,56,56,30,112,15,224,17,17,51, + 18,0,0,15,255,128,63,255,128,63,255,128,102,56,0,198, + 56,0,6,48,0,6,48,0,6,48,0,6,48,0,6,48, + 0,4,48,0,12,48,0,12,48,128,28,57,128,60,63,0, + 60,31,0,56,30,0,14,23,46,17,1,0,7,128,28,224, + 24,112,48,48,112,56,112,56,240,60,224,28,224,28,224,28, + 224,28,255,252,255,252,224,28,224,28,224,28,224,28,112,56, + 112,56,112,56,56,112,28,224,15,192,14,25,50,18,2,249, + 7,192,31,224,48,240,96,120,96,120,224,60,224,60,224,28, + 224,28,224,28,224,28,224,24,224,24,224,56,240,112,248,224, + 239,192,231,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,18,18,54,20,1,0,3,255,192,15,255,192,63,255, + 192,124,48,0,120,24,0,240,28,0,240,14,0,224,15,0, + 224,7,0,224,7,0,240,7,0,112,7,0,112,15,0,56, + 14,0,60,30,0,30,56,0,7,240,0,1,192,0,14,17, + 34,14,0,0,15,252,63,252,63,252,99,128,195,128,195,128, + 3,0,3,0,3,0,3,0,3,0,3,8,3,136,3,152, + 3,248,1,240,1,224,17,18,54,19,0,0,0,16,0,60, + 24,0,124,28,0,252,6,0,206,7,0,142,3,0,14,3, + 0,14,3,128,14,3,128,14,3,128,14,3,128,14,3,128, + 14,3,0,14,7,0,7,7,0,7,14,0,3,156,0,1, + 248,0,21,19,57,23,0,0,31,255,248,63,255,248,127,255, + 248,231,131,128,222,0,192,60,0,224,56,56,112,120,56,112, + 120,56,56,120,56,56,112,56,56,112,56,56,112,56,56,112, + 16,56,120,16,56,120,56,112,56,40,112,28,236,224,15,135, + 192,20,17,51,22,1,0,15,14,0,28,7,128,56,1,192, + 112,97,224,112,224,224,224,224,240,224,224,240,224,224,112,224, + 224,112,224,224,112,224,224,112,224,64,112,224,224,240,112,224, + 224,113,177,224,63,31,192,30,15,0,14,33,66,16,1,249, + 48,0,96,192,99,224,103,192,63,128,24,0,48,0,32,0, + 32,0,48,0,49,240,31,240,31,224,48,0,96,0,64,0, + 192,0,128,0,128,0,128,0,192,0,192,0,248,0,127,240, + 63,252,31,252,0,12,0,4,0,4,0,12,3,248,3,248, + 1,224,22,24,72,22,0,249,240,48,60,120,48,120,60,48, + 240,28,48,224,28,48,224,28,48,224,28,48,224,28,48,224, + 30,48,224,30,49,224,30,49,224,14,49,192,14,49,192,6, + 49,192,7,51,128,3,183,0,1,254,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 13,32,64,16,2,249,24,0,56,112,48,240,51,224,63,192, + 14,0,12,0,24,0,16,0,48,0,32,0,96,0,64,0, + 64,0,192,0,192,0,192,0,192,0,192,0,224,0,96,0, + 127,192,63,240,31,248,15,248,0,24,0,8,0,8,0,24, + 3,248,7,240,3,224,11,29,58,16,2,250,7,224,14,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,28,0,28,0,112,0,192,0,112,0,28,0,28,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,14,0,7,224,2,28,28,7,2,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,29,58,16,2,250,252,0, + 14,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,7,0,7,0,1,192,0,96,1,192,7,0, + 7,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,14,0,252,0,15,4,8,18,1,7,24,0, + 127,134,227,254,192,56,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--11-80-100-100-P-57-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=11 x= 1 y= 6 dx=11 dy= 0 ascent=10 len=18 + Font Bounding box w=13 h=18 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-3 + X Font ascent = 7 descent=-3 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB08[2551] U8G_SECTION(".progmem.u8g_font_timB08") = { + 0,13,18,254,251,7,1,164,3,77,32,255,253,10,253,7, + 253,0,0,0,2,0,1,2,7,7,4,1,0,192,192,192, + 192,0,192,192,3,3,3,5,1,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,9,9,5,0,255, + 32,112,184,224,96,48,184,112,32,7,7,7,9,1,0,118, + 220,232,16,46,90,156,7,7,7,9,1,0,48,104,104,118, + 220,204,118,1,3,3,3,1,4,128,128,128,3,10,10,3, + 255,253,32,96,64,192,192,192,192,64,96,32,3,10,10,4, + 0,253,128,192,64,96,96,96,96,64,192,128,5,5,5,6, + 0,2,32,248,112,248,32,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,4,1,255,192,192,64,3,1,1,3,0, + 2,224,2,2,2,3,0,0,192,192,3,7,7,3,0,0, + 32,32,96,64,192,128,128,4,7,7,5,0,0,96,208,208, + 208,208,208,96,4,7,7,5,0,0,96,224,96,96,96,96, + 240,4,7,7,5,0,0,96,240,48,32,64,240,240,4,7, + 7,5,0,0,96,176,48,96,48,176,224,5,7,7,5,0, + 0,16,48,80,144,248,48,48,4,7,7,5,0,0,224,224, + 128,224,48,176,224,4,7,7,5,0,0,48,96,192,240,208, + 208,96,5,7,7,5,0,0,120,240,144,48,32,96,96,4, + 7,7,5,0,0,96,208,208,96,176,176,96,4,7,7,5, + 0,0,96,176,176,176,112,48,224,2,5,5,4,1,0,192, + 192,0,192,192,2,6,6,4,1,255,192,192,0,192,192,64, + 5,5,5,6,0,0,24,112,192,112,24,5,3,3,6,0, + 1,248,0,248,5,5,5,6,0,0,192,112,24,112,192,4, + 7,7,6,1,0,96,176,176,32,0,96,96,10,9,18,11, + 0,254,31,0,48,128,109,64,218,64,210,64,210,128,205,0, + 96,0,62,0,8,7,7,7,255,0,16,24,56,44,124,78, + 239,6,7,7,7,0,0,248,108,108,120,108,108,248,6,7, + 7,7,0,0,124,204,192,192,192,236,120,7,7,7,8,0, + 0,252,102,102,102,102,102,252,6,7,7,7,0,0,252,100, + 96,120,96,100,252,6,7,7,7,0,0,252,100,104,120,104, + 96,240,6,7,7,7,0,0,124,204,192,220,204,204,120,8, + 7,7,9,0,0,231,102,102,126,102,102,231,4,7,7,5, + 0,0,240,96,96,96,96,96,240,5,8,8,5,0,255,120, + 48,48,48,48,48,176,224,7,7,7,8,0,0,238,100,104, + 120,108,110,230,6,7,7,7,0,0,240,96,96,96,100,108, + 252,9,7,14,10,0,0,243,128,119,0,91,0,91,0,91, + 0,75,0,227,128,7,7,7,8,0,0,238,100,116,92,92, + 76,228,6,7,7,7,0,0,120,204,204,204,204,204,120,6, + 7,7,6,0,0,248,108,108,120,96,96,240,6,9,9,7, + 0,254,120,204,204,204,204,204,120,48,28,7,7,7,7,0, + 0,248,108,108,120,104,108,238,5,7,7,6,0,0,120,200, + 224,112,56,152,240,6,7,7,7,0,0,252,180,48,48,48, + 48,120,7,7,7,7,0,0,246,100,100,100,100,100,56,8, + 7,7,8,0,0,243,98,116,52,56,24,16,10,7,14,10, + 0,0,238,192,108,128,109,128,109,0,55,0,54,0,18,0, + 7,7,7,7,0,0,230,100,56,56,44,76,222,8,7,7, + 8,0,0,247,98,52,56,24,24,60,6,7,7,7,0,0, + 252,204,152,48,100,204,252,3,10,10,4,0,253,224,192,192, + 192,192,192,192,192,192,224,3,7,7,3,0,0,128,128,192, + 64,96,32,32,3,10,10,4,0,253,224,96,96,96,96,96, + 96,96,96,224,5,4,4,6,0,3,32,112,216,136,5,1, + 1,5,0,253,248,2,2,2,4,0,6,128,64,5,5,5, + 5,0,0,96,176,112,176,248,5,7,7,5,255,0,224,96, + 112,104,104,104,112,4,5,5,5,0,0,112,208,192,208,112, + 6,7,7,6,0,0,56,24,120,216,216,216,108,4,5,5, + 5,0,0,112,208,240,192,112,4,7,7,3,255,0,48,96, + 240,96,96,96,240,5,8,8,5,0,253,120,208,208,112,192, + 240,144,240,6,7,7,5,255,0,224,96,120,104,104,104,108, + 2,7,7,3,0,0,192,0,192,192,192,192,192,3,10,10, + 4,0,253,96,0,96,96,96,96,96,96,96,192,6,7,7, + 5,255,0,224,96,108,104,112,104,236,3,7,7,3,255,0, + 224,96,96,96,96,96,96,8,5,5,8,0,0,172,254,214, + 214,215,6,5,5,6,0,0,176,216,216,216,220,5,5,5, + 6,0,0,112,216,216,216,112,5,8,8,5,255,253,240,104, + 104,104,112,96,96,224,5,8,8,5,0,253,112,208,208,208, + 112,48,48,56,4,5,5,4,0,0,208,240,192,192,192,3, + 5,5,4,0,0,96,192,224,96,224,4,7,7,4,255,0, + 32,96,240,96,96,96,48,5,5,5,5,0,0,216,208,208, + 208,112,5,5,5,5,0,0,216,208,112,96,32,7,5,5, + 6,255,0,214,212,92,120,40,4,5,5,5,0,0,208,240, + 96,240,176,5,8,8,5,0,253,216,216,112,112,32,32,192, + 192,4,5,5,5,0,0,240,176,96,208,240,4,10,10,4, + 255,253,48,96,96,96,192,192,96,96,96,48,1,10,10,3, + 1,253,128,128,128,128,128,128,128,128,128,128,4,10,10,4, + 0,253,192,96,96,96,48,48,96,96,96,192,5,2,2,6, + 0,2,104,176,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,2,0,1,2,7,7,4,1, + 253,192,192,0,192,192,192,192,5,7,7,6,0,255,16,120, + 208,208,224,120,32,5,7,7,6,0,0,56,104,96,248,96, + 232,216,5,5,5,6,0,1,136,112,80,112,136,5,7,7, + 6,0,0,216,216,112,32,112,32,112,1,7,7,3,1,0, + 128,128,128,0,128,128,128,4,9,9,5,0,254,96,176,192, + 160,208,112,48,208,96,3,1,1,4,0,5,160,7,7,7, + 9,1,0,56,68,154,162,154,68,56,3,6,6,4,0,1, + 192,32,224,160,0,224,5,5,5,6,0,0,40,80,160,80, + 40,5,3,3,7,1,1,248,8,8,3,1,1,3,0,2, + 224,7,7,7,9,1,0,56,68,186,178,170,68,56,3,1, + 1,4,0,5,224,4,3,3,4,0,4,96,144,96,5,7, + 7,6,0,0,32,32,248,32,32,0,248,3,4,4,3,0, + 3,96,160,64,224,3,4,4,3,0,3,224,64,32,192,2, + 2,2,4,1,5,64,128,5,8,8,5,0,253,216,208,208, + 208,240,128,192,192,6,10,10,6,0,253,124,232,232,232,104, + 40,40,40,40,40,1,2,2,3,1,2,128,128,2,3,3, + 3,1,253,128,64,192,3,4,4,3,0,3,64,192,64,224, + 3,6,6,4,0,1,64,160,160,64,0,224,5,5,5,6, + 0,0,160,80,40,80,160,7,7,7,7,0,0,68,200,72, + 244,44,62,68,7,7,7,7,0,0,68,200,72,246,42,36, + 78,7,7,7,7,0,0,228,72,40,212,44,62,68,4,7, + 7,6,1,253,96,96,0,64,208,208,96,8,10,10,7,255, + 0,32,16,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,8,16,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,16,40,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,52,88,0,16,24,56,44,124,78,239,8,9,9,7,255, + 0,36,0,16,24,56,44,124,78,239,8,10,10,7,255,0, + 24,36,24,16,24,56,44,124,78,239,9,7,14,9,255,0, + 63,128,28,128,44,0,47,0,124,0,76,128,239,128,6,10, + 10,7,0,253,124,204,192,192,192,236,120,32,16,48,6,10, + 10,7,0,0,32,16,0,252,100,96,120,96,100,252,6,10, + 10,7,0,0,8,16,0,252,100,96,120,96,100,252,6,10, + 10,7,0,0,48,72,0,252,100,96,120,96,100,252,6,9, + 9,7,0,0,40,0,252,100,96,120,96,100,252,4,10,10, + 5,0,0,64,32,0,240,96,96,96,96,96,240,4,10,10, + 5,0,0,32,64,0,240,96,96,96,96,96,240,4,10,10, + 5,0,0,96,144,0,240,96,96,96,96,96,240,4,9,9, + 5,0,0,144,0,240,96,96,96,96,96,240,7,7,7,8, + 0,0,252,102,102,246,102,102,252,7,10,10,8,0,0,52, + 88,0,238,100,116,92,92,76,228,6,10,10,7,0,0,32, + 16,0,120,204,204,204,204,204,120,6,10,10,7,0,0,16, + 32,0,120,204,204,204,204,204,120,6,10,10,7,0,0,48, + 72,0,120,204,204,204,204,204,120,6,10,10,7,0,0,52, + 88,0,120,204,204,204,204,204,120,6,9,9,7,0,0,72, + 0,120,204,204,204,204,204,120,6,5,5,6,0,0,204,120, + 48,120,204,6,9,9,8,1,255,4,120,204,220,236,236,204, + 120,128,7,10,10,7,0,0,32,16,0,246,100,100,100,100, + 100,56,7,10,10,7,0,0,8,16,0,246,100,100,100,100, + 100,56,7,10,10,7,0,0,24,36,0,246,100,100,100,100, + 100,56,7,9,9,7,0,0,36,0,246,100,100,100,100,100, + 56,8,10,10,8,0,0,4,8,0,247,98,52,56,24,24, + 60,6,7,7,6,0,0,224,120,108,108,120,96,240,5,7, + 7,6,0,0,112,200,200,208,200,200,216,5,8,8,5,0, + 0,64,32,0,96,176,112,176,248,5,8,8,5,0,0,16, + 32,0,96,176,112,176,248,5,8,8,5,0,0,32,80,0, + 96,176,112,176,248,5,8,8,5,0,0,104,176,0,96,176, + 112,176,248,5,7,7,5,0,0,80,0,96,176,112,176,248, + 5,8,8,5,0,0,32,80,32,96,176,112,176,248,7,5, + 5,8,0,0,110,186,126,184,238,4,8,8,5,0,253,112, + 208,192,208,112,64,32,96,4,8,8,5,0,0,64,32,0, + 112,208,240,192,112,4,8,8,5,0,0,16,32,0,112,208, + 240,192,112,5,8,8,5,0,0,32,80,136,112,208,240,192, + 112,4,7,7,5,0,0,80,0,112,208,240,192,112,2,8, + 8,3,0,0,128,64,0,192,192,192,192,192,2,8,8,3, + 0,0,64,128,0,192,192,192,192,192,3,8,8,3,0,0, + 64,160,0,192,192,192,192,192,3,7,7,3,0,0,160,0, + 192,192,192,192,192,5,9,9,6,0,0,128,112,96,176,24, + 120,216,216,112,6,8,8,6,0,0,104,176,0,176,216,216, + 216,220,5,8,8,6,0,0,64,32,0,112,216,216,216,112, + 5,8,8,6,0,0,16,32,0,112,216,216,216,112,5,8, + 8,6,0,0,32,80,0,112,216,216,216,112,5,8,8,6, + 0,0,104,176,0,112,216,216,216,112,5,7,7,6,0,0, + 80,0,112,216,216,216,112,5,5,5,6,0,0,32,0,248, + 0,32,5,7,7,6,0,255,16,112,216,216,216,112,64,5, + 8,8,5,0,0,64,32,0,216,208,208,208,112,5,8,8, + 5,0,0,16,32,0,216,208,208,208,112,5,8,8,5,0, + 0,32,80,0,216,208,208,208,112,5,7,7,5,0,0,80, + 0,216,208,208,208,112,5,11,11,5,0,253,16,32,0,216, + 216,112,112,32,32,192,192,5,10,10,5,255,253,224,96,112, + 104,104,104,112,96,96,224,5,10,10,5,0,253,80,0,216, + 216,112,112,32,32,192,192}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--11-80-100-100-P-57-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=10 x= 1 y= 6 dx=11 dy= 0 ascent= 8 len=18 + Font Bounding box w=13 h=18 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-3 + X Font ascent = 7 descent=-3 + Max Font ascent = 8 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB08r[1221] U8G_SECTION(".progmem.u8g_font_timB08r") = { + 0,13,18,254,251,7,1,164,3,77,32,127,253,8,253,7, + 253,0,0,0,2,0,1,2,7,7,4,1,0,192,192,192, + 192,0,192,192,3,3,3,5,1,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,9,9,5,0,255, + 32,112,184,224,96,48,184,112,32,7,7,7,9,1,0,118, + 220,232,16,46,90,156,7,7,7,9,1,0,48,104,104,118, + 220,204,118,1,3,3,3,1,4,128,128,128,3,10,10,3, + 255,253,32,96,64,192,192,192,192,64,96,32,3,10,10,4, + 0,253,128,192,64,96,96,96,96,64,192,128,5,5,5,6, + 0,2,32,248,112,248,32,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,4,1,255,192,192,64,3,1,1,3,0, + 2,224,2,2,2,3,0,0,192,192,3,7,7,3,0,0, + 32,32,96,64,192,128,128,4,7,7,5,0,0,96,208,208, + 208,208,208,96,4,7,7,5,0,0,96,224,96,96,96,96, + 240,4,7,7,5,0,0,96,240,48,32,64,240,240,4,7, + 7,5,0,0,96,176,48,96,48,176,224,5,7,7,5,0, + 0,16,48,80,144,248,48,48,4,7,7,5,0,0,224,224, + 128,224,48,176,224,4,7,7,5,0,0,48,96,192,240,208, + 208,96,5,7,7,5,0,0,120,240,144,48,32,96,96,4, + 7,7,5,0,0,96,208,208,96,176,176,96,4,7,7,5, + 0,0,96,176,176,176,112,48,224,2,5,5,4,1,0,192, + 192,0,192,192,2,6,6,4,1,255,192,192,0,192,192,64, + 5,5,5,6,0,0,24,112,192,112,24,5,3,3,6,0, + 1,248,0,248,5,5,5,6,0,0,192,112,24,112,192,4, + 7,7,6,1,0,96,176,176,32,0,96,96,10,9,18,11, + 0,254,31,0,48,128,109,64,218,64,210,64,210,128,205,0, + 96,0,62,0,8,7,7,7,255,0,16,24,56,44,124,78, + 239,6,7,7,7,0,0,248,108,108,120,108,108,248,6,7, + 7,7,0,0,124,204,192,192,192,236,120,7,7,7,8,0, + 0,252,102,102,102,102,102,252,6,7,7,7,0,0,252,100, + 96,120,96,100,252,6,7,7,7,0,0,252,100,104,120,104, + 96,240,6,7,7,7,0,0,124,204,192,220,204,204,120,8, + 7,7,9,0,0,231,102,102,126,102,102,231,4,7,7,5, + 0,0,240,96,96,96,96,96,240,5,8,8,5,0,255,120, + 48,48,48,48,48,176,224,7,7,7,8,0,0,238,100,104, + 120,108,110,230,6,7,7,7,0,0,240,96,96,96,100,108, + 252,9,7,14,10,0,0,243,128,119,0,91,0,91,0,91, + 0,75,0,227,128,7,7,7,8,0,0,238,100,116,92,92, + 76,228,6,7,7,7,0,0,120,204,204,204,204,204,120,6, + 7,7,6,0,0,248,108,108,120,96,96,240,6,9,9,7, + 0,254,120,204,204,204,204,204,120,48,28,7,7,7,7,0, + 0,248,108,108,120,104,108,238,5,7,7,6,0,0,120,200, + 224,112,56,152,240,6,7,7,7,0,0,252,180,48,48,48, + 48,120,7,7,7,7,0,0,246,100,100,100,100,100,56,8, + 7,7,8,0,0,243,98,116,52,56,24,16,10,7,14,10, + 0,0,238,192,108,128,109,128,109,0,55,0,54,0,18,0, + 7,7,7,7,0,0,230,100,56,56,44,76,222,8,7,7, + 8,0,0,247,98,52,56,24,24,60,6,7,7,7,0,0, + 252,204,152,48,100,204,252,3,10,10,4,0,253,224,192,192, + 192,192,192,192,192,192,224,3,7,7,3,0,0,128,128,192, + 64,96,32,32,3,10,10,4,0,253,224,96,96,96,96,96, + 96,96,96,224,5,4,4,6,0,3,32,112,216,136,5,1, + 1,5,0,253,248,2,2,2,4,0,6,128,64,5,5,5, + 5,0,0,96,176,112,176,248,5,7,7,5,255,0,224,96, + 112,104,104,104,112,4,5,5,5,0,0,112,208,192,208,112, + 6,7,7,6,0,0,56,24,120,216,216,216,108,4,5,5, + 5,0,0,112,208,240,192,112,4,7,7,3,255,0,48,96, + 240,96,96,96,240,5,8,8,5,0,253,120,208,208,112,192, + 240,144,240,6,7,7,5,255,0,224,96,120,104,104,104,108, + 2,7,7,3,0,0,192,0,192,192,192,192,192,3,10,10, + 4,0,253,96,0,96,96,96,96,96,96,96,192,6,7,7, + 5,255,0,224,96,108,104,112,104,236,3,7,7,3,255,0, + 224,96,96,96,96,96,96,8,5,5,8,0,0,172,254,214, + 214,215,6,5,5,6,0,0,176,216,216,216,220,5,5,5, + 6,0,0,112,216,216,216,112,5,8,8,5,255,253,240,104, + 104,104,112,96,96,224,5,8,8,5,0,253,112,208,208,208, + 112,48,48,56,4,5,5,4,0,0,208,240,192,192,192,3, + 5,5,4,0,0,96,192,224,96,224,4,7,7,4,255,0, + 32,96,240,96,96,96,48,5,5,5,5,0,0,216,208,208, + 208,112,5,5,5,5,0,0,216,208,112,96,32,7,5,5, + 6,255,0,214,212,92,120,40,4,5,5,5,0,0,208,240, + 96,240,176,5,8,8,5,0,253,216,216,112,112,32,32,192, + 192,4,5,5,5,0,0,240,176,96,208,240,4,10,10,4, + 255,253,48,96,96,96,192,192,96,96,96,48,1,10,10,3, + 1,253,128,128,128,128,128,128,128,128,128,128,4,10,10,4, + 0,253,192,96,96,96,48,48,96,96,96,192,5,2,2,6, + 0,2,104,176,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=14 x= 1 y= 8 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB10[3539] U8G_SECTION(".progmem.u8g_font_timB10") = { + 0,17,24,254,250,10,2,6,4,148,32,255,253,14,253,10, + 253,0,0,0,3,0,1,2,10,10,4,1,0,192,192,192, + 192,192,192,192,0,192,192,5,4,4,7,1,6,216,216,216, + 72,7,10,10,7,255,0,20,20,20,126,40,40,252,80,80, + 80,6,12,12,7,0,255,16,120,212,212,240,120,60,28,148, + 212,120,16,13,10,20,14,0,0,56,192,103,192,197,128,201, + 0,115,0,6,112,4,200,13,136,25,144,24,224,10,10,20, + 12,1,0,60,0,102,0,102,0,60,0,57,192,108,128,205, + 128,199,0,239,128,123,0,2,4,4,4,1,6,192,192,192, + 64,3,13,13,5,1,253,32,96,64,192,192,192,192,192,192, + 192,64,96,32,3,13,13,5,0,253,128,192,64,96,96,96, + 96,96,96,96,64,192,128,5,6,6,7,1,4,32,168,112, + 112,168,32,7,7,7,8,0,0,16,16,16,254,16,16,16, + 2,4,4,3,0,254,192,192,64,128,3,1,1,4,0,3, + 224,2,2,2,3,0,0,192,192,4,10,10,4,0,0,16, + 16,48,32,96,64,64,192,128,128,6,10,10,7,0,0,120, + 72,204,204,204,204,204,204,72,120,6,10,10,7,0,0,48, + 240,48,48,48,48,48,48,48,252,6,10,10,7,0,0,56, + 124,140,12,12,24,48,64,252,252,6,10,10,7,0,0,56, + 124,140,12,56,28,12,196,236,120,6,10,10,7,0,0,24, + 56,56,88,152,152,252,252,24,24,6,10,10,7,0,0,124, + 124,64,120,124,12,4,196,204,120,6,10,10,7,0,0,28, + 48,96,224,248,204,204,204,204,120,6,10,10,7,0,0,252, + 252,140,8,24,16,16,32,32,96,6,10,10,7,0,0,120, + 204,204,236,120,120,204,204,204,120,6,10,10,7,0,0,120, + 204,204,204,204,124,24,56,112,192,2,7,7,4,1,0,192, + 192,0,0,0,192,192,2,9,9,4,1,254,192,192,0,0, + 0,192,192,64,128,7,7,7,8,0,0,6,28,112,192,112, + 28,6,7,3,3,8,0,2,254,0,254,7,7,7,8,0, + 0,192,112,28,6,28,112,192,5,10,10,7,1,0,112,216, + 216,24,48,96,96,0,96,96,11,12,24,14,1,254,15,128, + 56,192,96,96,69,32,143,32,155,32,155,32,159,96,141,192, + 64,0,96,0,31,128,10,10,20,10,0,0,12,0,12,0, + 30,0,22,0,51,0,35,0,63,0,97,128,65,128,227,192, + 8,10,10,9,0,0,254,99,99,99,126,99,99,99,99,254, + 8,10,10,10,1,0,61,99,193,193,192,192,192,193,99,62, + 9,10,20,10,0,0,254,0,99,0,97,128,97,128,97,128, + 97,128,97,128,97,128,99,0,254,0,8,10,10,9,0,0, + 255,99,97,100,124,100,96,97,99,255,8,10,10,8,0,0, + 255,99,97,100,124,100,100,96,96,240,9,10,20,11,1,0, + 61,0,99,0,193,0,193,0,192,0,199,128,195,0,195,0, + 99,0,62,0,10,10,20,11,0,0,243,192,97,128,97,128, + 97,128,127,128,97,128,97,128,97,128,97,128,243,192,4,10, + 10,5,0,0,240,96,96,96,96,96,96,96,96,240,6,11, + 11,7,0,255,60,24,24,24,24,24,24,24,216,216,112,10, + 10,20,11,1,0,247,192,99,0,98,0,100,0,120,0,124, + 0,110,0,103,0,99,128,247,192,8,10,10,9,0,0,240, + 96,96,96,96,96,97,97,99,255,12,10,20,13,0,0,240, + 240,112,224,112,224,89,96,89,96,90,96,78,96,78,96,68, + 96,228,240,10,10,20,10,0,0,225,192,112,128,112,128,88, + 128,76,128,76,128,70,128,67,128,67,128,225,128,9,10,20, + 11,1,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,8,10,10,9,0,0,254,103,99, + 99,99,126,96,96,96,240,9,13,26,11,1,253,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,28,0,14,0,3,128,10,10,20,10,0,0,254,0,103, + 0,99,0,99,0,102,0,124,0,110,0,103,0,99,128,241, + 192,7,10,10,8,0,0,122,198,194,224,120,28,14,134,198, + 252,8,10,10,9,0,0,255,219,153,24,24,24,24,24,24, + 60,9,10,20,10,0,0,243,128,97,0,97,0,97,0,97, + 0,97,0,97,0,97,0,115,0,62,0,10,10,20,10,0, + 0,241,192,96,128,97,128,49,0,51,0,50,0,26,0,30, + 0,12,0,12,0,15,10,20,14,255,0,247,158,99,12,99, + 8,49,136,49,144,51,144,26,208,28,224,12,96,12,96,11, + 10,20,10,0,0,241,192,112,128,57,0,30,0,12,0,14, + 0,23,0,35,128,65,192,227,224,10,10,20,10,0,0,249, + 192,112,128,49,0,57,0,26,0,30,0,12,0,12,0,12, + 0,30,0,8,10,10,9,0,0,255,199,134,140,24,24,49, + 97,227,255,4,13,13,5,0,253,240,192,192,192,192,192,192, + 192,192,192,192,192,240,4,10,10,4,0,0,128,128,192,64, + 96,32,32,48,16,16,4,13,13,5,0,253,240,48,48,48, + 48,48,48,48,48,48,48,48,240,5,5,5,8,1,5,32, + 112,80,216,136,7,1,1,7,0,253,254,3,3,3,5,1, + 8,128,192,32,7,7,7,7,0,0,120,204,12,124,204,204, + 118,7,10,10,8,0,0,224,96,96,124,102,102,102,102,102, + 92,5,7,7,6,0,0,48,88,200,192,192,232,112,7,10, + 10,7,0,0,28,12,12,124,204,204,204,204,204,118,6,7, + 7,6,0,0,56,76,204,252,192,228,120,5,10,10,5,0, + 0,56,104,96,240,96,96,96,96,96,240,7,10,10,7,0, + 253,126,204,204,204,120,64,124,254,130,124,8,10,10,8,0, + 0,224,96,96,108,118,102,102,102,102,231,4,10,10,4,0, + 0,96,96,0,224,96,96,96,96,96,240,4,13,13,4,255, + 253,48,48,0,112,48,48,48,48,48,48,48,176,224,8,10, + 10,8,0,0,224,96,96,110,100,104,120,108,102,231,4,10, + 10,4,0,0,224,96,96,96,96,96,96,96,96,240,12,7, + 14,12,0,0,236,192,119,96,102,96,102,96,102,96,102,96, + 247,112,8,7,7,8,0,0,236,118,102,102,102,102,231,6, + 7,7,7,0,0,120,204,204,204,204,204,120,7,10,10,8, + 0,253,236,118,102,102,102,102,124,96,96,240,7,10,10,7, + 0,253,108,220,204,204,204,204,124,12,12,30,6,7,7,6, + 0,0,220,108,96,96,96,96,240,5,7,7,6,0,0,120, + 200,224,112,56,152,240,5,9,9,5,0,0,32,96,240,96, + 96,96,104,112,48,8,7,7,7,255,0,238,102,102,102,102, + 102,59,8,7,7,7,255,0,247,98,98,52,52,24,24,10, + 7,14,10,0,0,238,192,100,128,118,128,55,0,59,0,59, + 0,18,0,7,7,7,7,0,0,238,108,56,56,56,108,238, + 8,10,10,7,255,253,247,98,50,52,28,28,8,8,56,48, + 6,7,7,6,0,0,252,156,24,48,100,228,252,5,13,13, + 7,1,253,24,48,48,48,48,96,192,96,48,48,48,48,24, + 1,12,12,3,1,254,128,128,128,128,128,128,128,128,128,128, + 128,128,5,13,13,7,0,253,192,96,96,96,96,48,24,48, + 96,96,96,96,192,7,4,4,8,0,3,96,242,158,12,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,3,0,1,2,10,10,4,1,253,192,192,0,192, + 192,192,192,192,192,192,6,11,11,7,0,254,8,8,120,212, + 208,208,240,228,120,32,32,7,10,10,8,0,0,60,118,102, + 96,48,248,48,48,246,222,7,6,6,8,0,2,56,238,68, + 68,238,56,8,10,10,8,0,0,247,98,118,52,60,24,60, + 24,24,60,1,12,12,3,1,254,128,128,128,128,128,0,0, + 128,128,128,128,128,5,12,12,7,1,254,112,216,200,96,240, + 152,200,120,48,152,216,112,3,2,2,5,1,8,160,160,10, + 10,20,12,1,0,30,0,97,128,78,128,146,64,144,64,144, + 64,146,64,76,128,97,128,30,0,4,7,7,5,0,3,96, + 16,112,144,112,0,240,7,5,5,9,1,1,54,108,216,108, + 54,7,4,4,9,1,1,254,2,2,2,3,1,1,4,0, + 3,224,10,10,20,12,1,0,30,0,97,128,92,128,146,64, + 146,64,156,64,148,64,82,128,97,128,30,0,4,1,1,5, + 0,8,240,4,4,4,6,1,6,96,144,144,96,7,9,9, + 8,0,0,16,16,16,254,16,16,16,0,254,4,6,6,4, + 0,4,96,176,48,96,192,240,4,6,6,4,0,4,96,176, + 96,48,176,96,3,3,3,5,1,8,32,96,128,8,10,10, + 7,255,253,238,102,102,102,102,102,123,64,96,96,7,13,13, + 8,0,253,126,244,244,244,244,116,20,20,20,20,20,20,20, + 2,2,2,4,0,4,192,192,3,3,3,5,1,253,64,32, + 224,4,6,6,4,0,4,32,224,96,96,96,240,4,7,7, + 5,0,3,96,144,144,144,96,0,240,7,5,5,9,1,1, + 216,108,54,108,216,10,10,20,10,0,0,33,0,226,0,98, + 0,100,0,100,128,249,128,11,128,22,128,23,192,33,128,10, + 10,20,10,0,0,33,0,226,0,98,0,100,0,101,128,250, + 192,8,192,17,128,19,0,35,192,10,10,20,10,0,0,97, + 0,178,0,98,0,52,0,180,128,105,128,11,128,22,128,23, + 192,33,128,5,10,10,7,1,253,48,48,0,48,48,96,192, + 216,216,112,10,14,28,10,0,0,16,0,24,0,4,0,0, + 0,12,0,12,0,30,0,22,0,51,0,35,0,63,0,97, + 128,65,128,227,192,10,14,28,10,0,0,2,0,6,0,8, + 0,0,0,12,0,12,0,30,0,22,0,51,0,35,0,63, + 0,97,128,65,128,227,192,10,14,28,10,0,0,8,0,28, + 0,34,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,13,26,10,0,0,26, + 0,44,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,13,26,10,0,0,18, + 0,18,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,14,28,10,0,0,12, + 0,18,0,12,0,0,0,12,0,12,0,30,0,22,0,51, + 0,35,0,63,0,97,128,65,128,227,192,13,10,20,14,0, + 0,31,248,15,24,11,8,27,32,19,224,63,32,35,40,99, + 8,67,24,231,248,8,13,13,10,1,253,61,99,193,193,192, + 192,192,193,99,62,16,8,56,8,14,14,9,0,0,32,48, + 8,0,255,99,97,100,124,100,101,97,99,255,8,14,14,9, + 0,0,4,12,16,0,255,99,97,100,124,100,101,97,99,255, + 8,14,14,9,0,0,8,28,34,0,255,99,97,100,124,100, + 101,97,99,255,8,13,13,9,0,0,36,36,0,255,99,97, + 100,124,100,101,97,99,255,4,14,14,5,0,0,128,192,32, + 0,240,96,96,96,96,96,96,96,96,240,4,14,14,5,0, + 0,16,48,64,0,240,96,96,96,96,96,96,96,96,240,5, + 14,14,5,0,0,32,112,136,0,240,96,96,96,96,96,96, + 96,96,240,4,13,13,5,0,0,144,144,0,240,96,96,96, + 96,96,96,96,96,240,9,10,20,11,1,0,254,0,99,0, + 97,128,97,128,241,128,97,128,97,128,97,128,99,0,254,0, + 10,13,26,10,0,0,26,0,44,0,0,0,225,192,112,128, + 112,128,88,128,76,128,76,128,70,128,67,128,67,128,225,128, + 9,14,28,11,1,0,16,0,24,0,4,0,0,0,62,0, + 99,0,193,128,193,128,193,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,11,1,0,4,0,12,0,16,0,0,0, + 62,0,99,0,193,128,193,128,193,128,193,128,193,128,193,128, + 99,0,62,0,9,14,28,11,1,0,8,0,28,0,34,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,9,13,26,11,1,0,26,0,44,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,9,13,26,11,1,0,34,0,34,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,8,7,7,8,0,0,195,102,60,24, + 60,102,195,9,12,24,11,1,255,0,128,61,0,99,0,195, + 128,197,128,201,128,201,128,209,128,225,128,99,0,94,0,128, + 0,9,14,28,10,0,0,16,0,24,0,4,0,0,0,243, + 128,97,0,97,0,97,0,97,0,97,0,97,0,97,0,115, + 0,62,0,9,14,28,10,0,0,4,0,12,0,16,0,0, + 0,243,128,97,0,97,0,97,0,97,0,97,0,97,0,97, + 0,115,0,62,0,9,14,28,10,0,0,8,0,28,0,34, + 0,0,0,243,128,97,0,97,0,97,0,97,0,97,0,97, + 0,97,0,115,0,62,0,9,13,26,10,0,0,18,0,18, + 0,0,0,243,128,97,0,97,0,97,0,97,0,97,0,97, + 0,97,0,115,0,62,0,10,14,28,10,0,0,1,0,3, + 0,4,0,0,0,249,192,112,128,49,0,57,0,26,0,30, + 0,12,0,12,0,12,0,30,0,8,10,10,9,0,0,240, + 96,126,103,99,99,99,126,96,240,7,10,10,8,0,0,56, + 108,100,108,120,108,102,102,102,236,7,11,11,7,0,0,32, + 48,8,0,120,204,12,124,204,204,118,7,11,11,7,0,0, + 8,24,32,0,120,204,12,124,204,204,118,7,11,11,7,0, + 0,16,56,68,0,120,204,12,124,204,204,118,7,10,10,7, + 0,0,52,88,0,120,204,12,124,204,204,118,7,10,10,7, + 0,0,40,40,0,120,204,12,124,204,204,118,7,11,11,7, + 0,0,48,72,48,0,120,204,12,124,204,204,118,10,7,14, + 11,0,0,123,128,204,192,204,192,63,192,204,0,204,192,119, + 128,6,10,10,7,0,253,56,76,204,192,192,228,120,32,16, + 112,6,11,11,7,0,0,64,96,16,0,56,76,204,252,192, + 228,120,6,11,11,7,0,0,8,24,32,0,56,76,204,252, + 192,228,120,6,11,11,7,0,0,16,56,68,0,56,76,204, + 252,192,228,120,6,10,10,7,0,0,80,80,0,56,76,204, + 252,192,228,120,4,11,11,4,0,0,128,192,32,0,224,96, + 96,96,96,96,240,4,11,11,4,0,0,32,96,128,0,224, + 96,96,96,96,96,240,5,11,11,4,0,0,32,112,136,0, + 224,96,96,96,96,96,240,4,10,10,4,0,0,160,160,0, + 224,96,96,96,96,96,240,6,10,10,7,0,0,204,112,152, + 120,204,204,204,204,204,120,8,10,10,8,0,0,52,88,0, + 236,118,102,102,102,102,231,6,11,11,7,0,0,32,48,8, + 0,120,204,204,204,204,204,120,6,11,11,7,0,0,8,24, + 32,0,120,204,204,204,204,204,120,6,11,11,7,0,0,32, + 112,136,0,120,204,204,204,204,204,120,6,10,10,7,0,0, + 104,176,0,120,204,204,204,204,204,120,6,10,10,7,0,0, + 80,80,0,120,204,204,204,204,204,120,6,7,7,8,0,0, + 48,48,0,252,0,48,48,6,9,9,7,0,255,4,120,204, + 220,236,236,204,120,128,8,11,11,7,255,0,32,48,8,0, + 238,102,102,102,102,102,59,8,11,11,7,255,0,4,12,16, + 0,238,102,102,102,102,102,59,8,11,11,7,255,0,16,56, + 68,0,238,102,102,102,102,102,59,8,10,10,7,255,0,40, + 40,0,238,102,102,102,102,102,59,8,14,14,7,255,253,2, + 6,8,0,247,98,50,52,28,28,8,8,56,48,7,13,13, + 8,0,253,224,96,96,108,118,102,102,102,102,124,96,96,240, + 8,13,13,7,255,253,34,34,0,247,98,50,52,28,28,8, + 8,56,48}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=13 x= 1 y= 8 dx=14 dy= 0 ascent=11 len=26 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB10r[1632] U8G_SECTION(".progmem.u8g_font_timB10r") = { + 0,17,24,254,250,10,2,6,4,148,32,127,253,11,253,10, + 253,0,0,0,3,0,1,2,10,10,4,1,0,192,192,192, + 192,192,192,192,0,192,192,5,4,4,7,1,6,216,216,216, + 72,7,10,10,7,255,0,20,20,20,126,40,40,252,80,80, + 80,6,12,12,7,0,255,16,120,212,212,240,120,60,28,148, + 212,120,16,13,10,20,14,0,0,56,192,103,192,197,128,201, + 0,115,0,6,112,4,200,13,136,25,144,24,224,10,10,20, + 12,1,0,60,0,102,0,102,0,60,0,57,192,108,128,205, + 128,199,0,239,128,123,0,2,4,4,4,1,6,192,192,192, + 64,3,13,13,5,1,253,32,96,64,192,192,192,192,192,192, + 192,64,96,32,3,13,13,5,0,253,128,192,64,96,96,96, + 96,96,96,96,64,192,128,5,6,6,7,1,4,32,168,112, + 112,168,32,7,7,7,8,0,0,16,16,16,254,16,16,16, + 2,4,4,3,0,254,192,192,64,128,3,1,1,4,0,3, + 224,2,2,2,3,0,0,192,192,4,10,10,4,0,0,16, + 16,48,32,96,64,64,192,128,128,6,10,10,7,0,0,120, + 72,204,204,204,204,204,204,72,120,6,10,10,7,0,0,48, + 240,48,48,48,48,48,48,48,252,6,10,10,7,0,0,56, + 124,140,12,12,24,48,64,252,252,6,10,10,7,0,0,56, + 124,140,12,56,28,12,196,236,120,6,10,10,7,0,0,24, + 56,56,88,152,152,252,252,24,24,6,10,10,7,0,0,124, + 124,64,120,124,12,4,196,204,120,6,10,10,7,0,0,28, + 48,96,224,248,204,204,204,204,120,6,10,10,7,0,0,252, + 252,140,8,24,16,16,32,32,96,6,10,10,7,0,0,120, + 204,204,236,120,120,204,204,204,120,6,10,10,7,0,0,120, + 204,204,204,204,124,24,56,112,192,2,7,7,4,1,0,192, + 192,0,0,0,192,192,2,9,9,4,1,254,192,192,0,0, + 0,192,192,64,128,7,7,7,8,0,0,6,28,112,192,112, + 28,6,7,3,3,8,0,2,254,0,254,7,7,7,8,0, + 0,192,112,28,6,28,112,192,5,10,10,7,1,0,112,216, + 216,24,48,96,96,0,96,96,11,12,24,14,1,254,15,128, + 56,192,96,96,69,32,143,32,155,32,155,32,159,96,141,192, + 64,0,96,0,31,128,10,10,20,10,0,0,12,0,12,0, + 30,0,22,0,51,0,35,0,63,0,97,128,65,128,227,192, + 8,10,10,9,0,0,254,99,99,99,126,99,99,99,99,254, + 8,10,10,10,1,0,61,99,193,193,192,192,192,193,99,62, + 9,10,20,10,0,0,254,0,99,0,97,128,97,128,97,128, + 97,128,97,128,97,128,99,0,254,0,8,10,10,9,0,0, + 255,99,97,100,124,100,96,97,99,255,8,10,10,8,0,0, + 255,99,97,100,124,100,100,96,96,240,9,10,20,11,1,0, + 61,0,99,0,193,0,193,0,192,0,199,128,195,0,195,0, + 99,0,62,0,10,10,20,11,0,0,243,192,97,128,97,128, + 97,128,127,128,97,128,97,128,97,128,97,128,243,192,4,10, + 10,5,0,0,240,96,96,96,96,96,96,96,96,240,6,11, + 11,7,0,255,60,24,24,24,24,24,24,24,216,216,112,10, + 10,20,11,1,0,247,192,99,0,98,0,100,0,120,0,124, + 0,110,0,103,0,99,128,247,192,8,10,10,9,0,0,240, + 96,96,96,96,96,97,97,99,255,12,10,20,13,0,0,240, + 240,112,224,112,224,89,96,89,96,90,96,78,96,78,96,68, + 96,228,240,10,10,20,10,0,0,225,192,112,128,112,128,88, + 128,76,128,76,128,70,128,67,128,67,128,225,128,9,10,20, + 11,1,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,8,10,10,9,0,0,254,103,99, + 99,99,126,96,96,96,240,9,13,26,11,1,253,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,28,0,14,0,3,128,10,10,20,10,0,0,254,0,103, + 0,99,0,99,0,102,0,124,0,110,0,103,0,99,128,241, + 192,7,10,10,8,0,0,122,198,194,224,120,28,14,134,198, + 252,8,10,10,9,0,0,255,219,153,24,24,24,24,24,24, + 60,9,10,20,10,0,0,243,128,97,0,97,0,97,0,97, + 0,97,0,97,0,97,0,115,0,62,0,10,10,20,10,0, + 0,241,192,96,128,97,128,49,0,51,0,50,0,26,0,30, + 0,12,0,12,0,15,10,20,14,255,0,247,158,99,12,99, + 8,49,136,49,144,51,144,26,208,28,224,12,96,12,96,11, + 10,20,10,0,0,241,192,112,128,57,0,30,0,12,0,14, + 0,23,0,35,128,65,192,227,224,10,10,20,10,0,0,249, + 192,112,128,49,0,57,0,26,0,30,0,12,0,12,0,12, + 0,30,0,8,10,10,9,0,0,255,199,134,140,24,24,49, + 97,227,255,4,13,13,5,0,253,240,192,192,192,192,192,192, + 192,192,192,192,192,240,4,10,10,4,0,0,128,128,192,64, + 96,32,32,48,16,16,4,13,13,5,0,253,240,48,48,48, + 48,48,48,48,48,48,48,48,240,5,5,5,8,1,5,32, + 112,80,216,136,7,1,1,7,0,253,254,3,3,3,5,1, + 8,128,192,32,7,7,7,7,0,0,120,204,12,124,204,204, + 118,7,10,10,8,0,0,224,96,96,124,102,102,102,102,102, + 92,5,7,7,6,0,0,48,88,200,192,192,232,112,7,10, + 10,7,0,0,28,12,12,124,204,204,204,204,204,118,6,7, + 7,6,0,0,56,76,204,252,192,228,120,5,10,10,5,0, + 0,56,104,96,240,96,96,96,96,96,240,7,10,10,7,0, + 253,126,204,204,204,120,64,124,254,130,124,8,10,10,8,0, + 0,224,96,96,108,118,102,102,102,102,231,4,10,10,4,0, + 0,96,96,0,224,96,96,96,96,96,240,4,13,13,4,255, + 253,48,48,0,112,48,48,48,48,48,48,48,176,224,8,10, + 10,8,0,0,224,96,96,110,100,104,120,108,102,231,4,10, + 10,4,0,0,224,96,96,96,96,96,96,96,96,240,12,7, + 14,12,0,0,236,192,119,96,102,96,102,96,102,96,102,96, + 247,112,8,7,7,8,0,0,236,118,102,102,102,102,231,6, + 7,7,7,0,0,120,204,204,204,204,204,120,7,10,10,8, + 0,253,236,118,102,102,102,102,124,96,96,240,7,10,10,7, + 0,253,108,220,204,204,204,204,124,12,12,30,6,7,7,6, + 0,0,220,108,96,96,96,96,240,5,7,7,6,0,0,120, + 200,224,112,56,152,240,5,9,9,5,0,0,32,96,240,96, + 96,96,104,112,48,8,7,7,7,255,0,238,102,102,102,102, + 102,59,8,7,7,7,255,0,247,98,98,52,52,24,24,10, + 7,14,10,0,0,238,192,100,128,118,128,55,0,59,0,59, + 0,18,0,7,7,7,7,0,0,238,108,56,56,56,108,238, + 8,10,10,7,255,253,247,98,50,52,28,28,8,8,56,48, + 6,7,7,6,0,0,252,156,24,48,100,228,252,5,13,13, + 7,1,253,24,48,48,48,48,96,192,96,48,48,48,48,24, + 1,12,12,3,1,254,128,128,128,128,128,128,128,128,128,128, + 128,128,5,13,13,7,0,253,192,96,96,96,96,48,24,48, + 96,96,96,96,192,7,4,4,8,0,3,96,242,158,12,255 + }; +/* + Fontname: -Adobe-Times-Bold-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=16 x= 2 y= 9 dx=17 dy= 0 ascent=16 len=33 + Font Bounding box w=19 h=27 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB12[3887] U8G_SECTION(".progmem.u8g_font_timB12") = { + 0,19,27,254,249,11,2,42,5,41,32,255,252,16,252,11, + 252,0,0,0,5,0,1,2,11,11,6,2,0,192,192,192, + 192,192,128,128,0,0,192,192,5,5,5,9,1,6,216,216, + 216,144,144,8,11,11,8,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,13,13,8,0,255,16,122,150,210,240,120, + 60,30,22,146,210,188,16,12,12,24,16,2,0,48,128,111, + 0,201,0,201,0,202,0,210,96,100,208,9,144,9,144,17, + 144,17,160,32,192,10,11,22,14,2,0,28,0,38,0,38, + 0,52,0,57,192,120,128,156,128,141,0,198,64,231,192,123, + 128,2,5,5,5,2,6,192,192,192,128,128,4,14,14,6, + 1,253,16,32,96,64,192,192,192,192,192,192,64,96,32,16, + 4,14,14,6,0,253,128,64,96,32,48,48,48,48,48,48, + 32,96,64,128,5,7,7,8,1,4,32,168,248,112,248,168, + 32,7,8,8,9,1,0,16,16,16,254,254,16,16,16,2, + 5,5,4,1,253,192,192,64,64,128,4,2,2,5,0,3, + 240,240,2,2,2,4,1,0,192,192,4,11,11,5,0,0, + 16,48,32,32,96,64,64,64,192,128,128,6,11,11,8,1, + 0,48,72,204,204,204,204,204,204,204,72,48,6,11,11,8, + 1,0,16,240,48,48,48,48,48,48,48,48,252,7,11,11, + 8,0,0,56,124,156,12,12,8,24,16,34,124,252,7,11, + 11,8,0,0,56,124,140,8,16,60,14,6,198,204,120,7, + 11,11,8,0,0,4,12,28,44,44,76,140,254,254,12,12, + 8,11,11,8,0,0,31,62,32,56,124,14,6,6,198,204, + 112,6,11,11,8,1,0,12,48,96,96,240,204,204,204,204, + 72,48,7,11,11,8,0,0,126,126,132,4,12,8,8,24, + 16,48,32,7,11,11,8,0,0,56,68,198,228,120,60,78, + 198,198,68,56,6,11,11,8,1,0,48,72,204,204,204,204, + 124,24,24,48,192,2,7,7,5,1,0,192,192,0,0,0, + 192,192,2,10,10,5,1,253,192,192,0,0,0,192,192,64, + 64,128,8,8,8,9,0,0,3,14,56,192,192,56,14,3, + 7,5,5,9,1,2,254,254,0,254,254,8,8,8,9,0, + 0,192,112,28,3,3,28,112,192,6,11,11,8,1,0,56, + 204,204,12,12,8,16,32,0,96,96,13,13,26,16,1,254, + 7,128,28,96,48,16,103,80,204,200,216,200,216,136,217,144, + 217,176,78,224,32,0,24,96,7,128,11,11,22,12,0,0, + 4,0,14,0,14,0,27,0,19,0,51,0,33,128,127,128, + 64,192,192,192,225,224,9,11,22,10,1,0,252,0,102,0, + 99,0,99,0,102,0,126,0,99,0,97,128,97,128,99,0, + 254,0,9,11,22,11,1,0,30,128,99,128,65,128,192,128, + 192,0,192,0,192,0,192,0,96,128,115,0,62,0,9,11, + 22,11,1,0,252,0,102,0,99,0,97,128,97,128,97,128, + 97,128,97,128,99,0,102,0,252,0,8,11,11,10,1,0, + 255,99,97,96,98,126,98,96,97,99,255,8,11,11,10,1, + 0,255,99,97,96,98,126,98,96,96,96,248,10,11,22,12, + 1,0,30,128,99,128,65,128,192,128,192,0,192,0,199,192, + 193,128,193,128,97,128,63,0,10,11,22,12,1,0,243,192, + 97,128,97,128,97,128,97,128,127,128,97,128,97,128,97,128, + 97,128,243,192,4,11,11,6,1,0,240,96,96,96,96,96, + 96,96,96,96,240,6,13,13,8,1,254,60,24,24,24,24, + 24,24,24,24,24,216,208,96,11,11,22,13,1,0,251,192, + 97,0,98,0,100,0,104,0,120,0,108,0,102,0,99,0, + 97,128,251,224,9,11,22,11,1,0,240,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,128,96,128,97,128,255,128, + 14,11,22,15,0,0,224,28,112,24,112,56,120,56,88,88, + 76,88,76,152,70,152,71,24,67,24,226,60,10,11,22,12, + 1,0,241,192,112,128,88,128,88,128,76,128,70,128,71,128, + 67,128,65,128,65,128,224,128,10,11,22,12,1,0,30,0, + 97,128,64,128,192,192,192,192,192,192,192,192,192,192,64,128, + 97,128,30,0,8,11,11,10,1,0,254,103,99,99,102,124, + 96,96,96,96,240,10,14,28,12,1,253,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,63, + 0,14,0,6,0,1,128,10,11,22,12,1,0,254,0,103, + 0,99,0,99,0,102,0,124,0,108,0,102,0,99,0,97, + 128,243,192,8,11,11,9,0,0,61,67,193,224,120,60,14, + 7,131,194,188,10,11,22,11,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,30,0, + 10,11,22,12,1,0,241,192,96,128,96,128,96,128,96,128, + 96,128,96,128,96,128,96,128,33,0,30,0,11,11,22,12, + 0,0,248,224,48,64,48,64,24,128,24,128,13,0,13,0, + 7,0,6,0,2,0,2,0,17,11,33,17,0,0,251,239, + 128,112,195,0,48,194,0,56,226,0,25,230,0,29,100,0, + 13,124,0,15,56,0,6,56,0,6,16,0,2,16,0,10, + 11,22,12,1,0,251,192,113,0,58,0,58,0,28,0,14, + 0,30,0,23,0,35,0,67,128,231,192,11,11,22,12,0, + 0,248,224,112,64,56,128,24,128,29,0,15,0,6,0,6, + 0,6,0,6,0,15,0,10,11,22,11,0,0,255,192,193, + 192,131,128,7,0,14,0,14,0,28,0,56,0,112,64,240, + 192,255,192,3,14,14,6,1,253,224,192,192,192,192,192,192, + 192,192,192,192,192,192,224,4,11,11,5,0,0,128,192,64, + 64,96,32,32,32,48,16,16,3,14,14,6,1,253,224,96, + 96,96,96,96,96,96,96,96,96,96,96,224,7,7,7,9, + 1,4,16,56,40,108,68,198,130,8,1,1,8,0,252,255, + 3,3,3,6,2,9,192,64,32,8,8,8,8,0,0,56, + 204,204,28,108,204,205,118,8,11,11,9,0,0,224,96,96, + 108,118,99,99,99,99,118,236,6,8,8,7,0,0,56,108, + 204,192,192,192,100,56,8,11,11,9,0,0,14,6,6,54, + 110,198,198,198,198,78,55,6,8,8,7,0,0,56,108,204, + 252,192,192,100,56,6,11,11,6,0,0,24,108,96,240,96, + 96,96,96,96,96,240,7,12,12,8,0,252,50,78,204,204, + 200,112,64,252,126,130,132,120,8,11,11,9,0,0,224,96, + 96,108,118,102,102,102,102,102,239,4,11,11,5,0,0,96, + 96,0,224,96,96,96,96,96,96,240,5,15,15,5,254,252, + 24,24,0,56,24,24,24,24,24,24,24,24,216,208,96,9, + 11,22,9,0,0,224,0,96,0,96,0,111,0,100,0,104, + 0,120,0,124,0,110,0,103,0,247,128,4,11,11,5,0, + 0,224,96,96,96,96,96,96,96,96,96,240,12,8,16,13, + 0,0,237,192,119,96,102,96,102,96,102,96,102,96,102,96, + 246,240,8,8,8,9,0,0,236,126,102,102,102,102,102,247, + 7,8,8,8,0,0,56,108,198,198,198,198,108,56,8,12, + 12,9,0,252,236,118,99,99,99,99,118,108,96,96,96,240, + 8,12,12,9,0,252,50,110,198,198,198,198,110,54,6,6, + 6,15,6,8,8,7,0,0,236,124,96,96,96,96,96,240, + 5,8,8,6,0,0,120,200,224,112,56,152,216,176,5,11, + 11,6,0,0,32,32,96,240,96,96,96,96,96,104,48,8, + 8,8,9,0,0,238,102,102,102,102,102,111,54,8,8,8, + 8,0,0,247,98,98,100,52,56,24,16,12,8,16,12,0, + 0,239,112,102,32,102,32,119,64,55,64,57,128,25,128,17, + 0,7,8,8,8,0,0,246,116,56,56,24,60,76,238,8, + 12,12,8,0,252,247,98,98,52,52,28,24,24,16,16,224, + 192,7,8,8,7,0,0,254,140,152,24,48,114,98,254,4, + 14,14,7,1,253,48,96,96,96,96,64,128,64,96,96,96, + 96,96,48,1,14,14,4,1,253,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,4,14,14,7,1,253,192,96,96, + 96,96,32,16,32,96,96,96,96,96,192,9,4,8,9,0, + 4,48,0,120,128,159,0,14,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,5,0,1, + 2,12,12,6,2,252,192,192,0,0,64,64,64,192,192,192, + 192,192,6,12,12,8,1,254,4,4,56,76,204,208,208,224, + 100,56,64,64,8,11,11,8,0,0,28,38,38,48,48,124, + 48,16,113,158,110,6,7,7,8,1,1,180,120,204,132,204, + 120,180,8,11,11,8,0,0,227,98,50,52,28,126,24,126, + 24,24,126,1,15,15,4,1,253,128,128,128,128,128,128,0, + 0,0,128,128,128,128,128,128,6,15,15,8,1,252,56,76, + 76,96,48,120,156,204,228,120,56,24,200,200,112,5,2,2, + 6,0,9,216,216,12,11,22,12,255,0,15,0,48,192,71, + 32,72,160,152,16,152,16,152,16,72,160,71,32,48,192,15, + 0,5,7,7,5,0,4,96,144,112,176,216,0,248,7,7, + 7,8,0,0,18,54,108,216,108,54,18,7,6,6,9,1, + 1,254,254,2,2,2,2,4,2,2,5,0,3,240,240,12, + 11,22,12,0,0,15,0,48,192,78,32,73,32,137,16,142, + 16,138,16,73,32,93,32,48,192,15,0,5,1,1,6,0, + 9,248,4,5,5,7,1,6,96,144,144,144,96,7,9,9, + 9,1,0,16,16,254,254,16,16,0,254,254,4,7,7,5, + 0,4,96,240,176,32,64,240,240,4,7,7,5,0,4,96, + 176,48,96,48,176,96,3,3,3,6,1,9,96,64,128,8, + 11,11,9,0,253,238,102,102,102,102,102,111,118,64,96,96, + 7,15,15,9,1,252,62,116,244,244,244,244,116,52,20,20, + 20,20,20,20,20,2,2,2,4,1,4,192,192,5,4,4, + 6,0,252,32,48,136,112,4,7,7,5,1,4,96,224,96, + 96,96,96,240,4,7,7,6,1,4,96,144,144,144,96,0, + 240,7,7,7,8,0,0,144,216,108,54,108,216,144,11,11, + 22,12,0,0,96,128,225,0,97,0,98,0,100,64,100,192, + 249,192,10,192,19,224,32,192,32,192,10,11,22,12,0,0, + 97,0,225,0,98,0,98,0,100,0,107,128,254,192,16,128, + 17,0,35,192,39,192,11,11,22,12,0,0,96,128,177,0, + 49,0,98,0,52,64,180,192,105,192,10,192,19,224,32,192, + 32,192,6,11,11,8,1,253,24,24,0,16,32,64,192,192, + 204,204,112,11,15,30,12,0,0,48,0,24,0,4,0,0, + 0,4,0,14,0,14,0,27,0,19,0,51,0,33,128,127, + 128,64,192,192,192,225,224,11,15,30,12,0,0,1,128,3, + 0,4,0,0,0,4,0,14,0,14,0,27,0,19,0,51, + 0,33,128,127,128,64,192,192,192,225,224,11,15,30,12,0, + 0,4,0,14,0,17,0,0,0,4,0,14,0,14,0,27, + 0,19,0,51,0,33,128,127,128,64,192,192,192,225,224,11, + 14,28,12,0,0,29,0,46,0,0,0,4,0,14,0,14, + 0,27,0,19,0,51,0,33,128,127,128,64,192,192,192,225, + 224,11,14,28,12,0,0,27,0,27,0,0,0,4,0,14, + 0,14,0,27,0,19,0,51,0,33,128,127,128,64,192,192, + 192,225,224,11,16,32,12,0,0,6,0,9,0,9,0,6, + 0,0,0,4,0,14,0,14,0,27,0,19,0,51,0,33, + 128,127,128,64,192,192,192,225,224,14,11,22,16,1,0,15, + 248,7,24,11,8,11,0,19,32,31,224,35,32,35,0,67, + 4,67,12,231,252,9,15,30,11,1,252,30,128,99,128,65, + 128,192,128,192,0,192,0,192,0,192,0,96,128,115,0,62, + 0,8,0,12,0,34,0,28,0,8,15,15,10,1,0,96, + 48,8,0,255,99,97,96,98,126,98,96,97,99,255,8,15, + 15,10,1,0,6,12,16,0,255,99,97,96,98,126,98,96, + 97,99,255,8,15,15,10,1,0,8,28,34,0,255,99,97, + 96,98,126,98,96,97,99,255,8,14,14,10,1,0,102,102, + 0,255,99,97,96,98,126,98,96,97,99,255,5,15,15,6, + 0,0,192,96,16,0,120,48,48,48,48,48,48,48,48,48, + 120,4,15,15,6,1,0,48,96,128,0,240,96,96,96,96, + 96,96,96,96,96,240,5,15,15,6,0,0,32,112,136,0, + 120,48,48,48,48,48,48,48,48,48,120,6,14,14,6,0, + 0,204,204,0,120,48,48,48,48,48,48,48,48,48,120,9, + 11,22,11,1,0,252,0,102,0,99,0,97,128,97,128,249, + 128,97,128,97,128,99,0,102,0,252,0,10,14,28,12,1, + 0,29,0,46,0,0,0,241,192,112,128,88,128,88,128,76, + 128,70,128,71,128,67,128,65,128,65,128,224,128,10,15,30, + 12,1,0,48,0,24,0,4,0,0,0,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,30, + 0,10,15,30,12,1,0,3,0,6,0,8,0,0,0,30, + 0,97,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,128,30,0,10,15,30,12,1,0,4,0,14,0,17, + 0,0,0,30,0,97,128,64,128,192,192,192,192,192,192,192, + 192,192,192,64,128,97,128,30,0,10,14,28,12,1,0,29, + 0,46,0,0,0,30,0,97,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,128,30,0,10,14,28,12,1, + 0,51,0,51,0,0,0,30,0,97,128,64,128,192,192,192, + 192,192,192,192,192,192,192,64,128,97,128,30,0,7,8,8, + 9,1,0,130,198,108,56,56,108,198,130,10,13,26,13,1, + 255,0,64,30,128,97,128,65,128,194,192,194,192,196,192,200, + 192,200,192,80,128,97,128,62,0,64,0,10,15,30,12,1, + 0,48,0,24,0,4,0,0,0,241,192,96,128,96,128,96, + 128,96,128,96,128,96,128,96,128,96,128,33,0,30,0,10, + 15,30,12,1,0,3,0,6,0,8,0,0,0,241,192,96, + 128,96,128,96,128,96,128,96,128,96,128,96,128,96,128,33, + 0,30,0,10,15,30,12,1,0,4,0,14,0,17,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,33,0,30,0,10,14,28,12,1,0,51,0,51, + 0,0,0,241,192,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,96,128,33,0,30,0,11,15,30,12,0,0,1, + 128,3,0,4,0,0,0,248,224,112,64,56,128,24,128,29, + 0,15,0,6,0,6,0,6,0,6,0,15,0,8,11,11, + 10,1,0,240,96,126,103,99,99,103,126,96,96,240,8,11, + 11,9,0,0,24,38,102,102,108,98,99,99,99,98,236,8, + 12,12,8,0,0,48,16,8,0,56,204,204,28,108,204,205, + 118,8,12,12,8,0,0,24,16,32,0,56,204,204,28,108, + 204,205,118,8,12,12,8,0,0,16,56,68,0,56,204,204, + 28,108,204,205,118,8,11,11,8,0,0,52,88,0,56,204, + 204,28,108,204,205,118,8,11,11,8,0,0,108,108,0,56, + 204,204,28,108,204,205,118,8,13,13,8,0,0,16,40,40, + 16,0,56,204,204,28,108,204,205,118,10,8,16,12,1,0, + 51,128,206,192,204,192,31,192,108,0,204,0,214,64,99,128, + 6,12,12,7,0,252,56,108,204,192,192,192,100,56,32,48, + 136,112,6,12,12,7,0,0,48,16,8,0,56,108,204,252, + 192,192,100,56,6,12,12,7,0,0,24,16,32,0,56,108, + 204,252,192,192,100,56,6,12,12,7,0,0,16,56,68,0, + 56,108,204,252,192,192,100,56,6,11,11,7,0,0,108,108, + 0,56,108,204,252,192,192,100,56,4,12,12,5,0,0,192, + 64,32,0,224,96,96,96,96,96,96,240,4,12,12,5,0, + 0,48,32,64,0,224,96,96,96,96,96,96,240,5,12,12, + 5,255,0,32,112,136,0,112,48,48,48,48,48,48,120,5, + 11,11,5,255,0,216,216,0,112,48,48,48,48,48,48,120, + 7,11,11,8,0,0,108,48,216,60,108,198,198,198,198,108, + 56,8,11,11,9,0,0,52,88,0,236,126,102,102,102,102, + 102,247,7,12,12,8,0,0,48,16,8,0,56,108,198,198, + 198,198,108,56,7,12,12,8,0,0,24,16,32,0,56,108, + 198,198,198,198,108,56,7,12,12,8,0,0,16,56,68,0, + 56,108,198,198,198,198,108,56,7,11,11,8,0,0,52,88, + 0,56,108,198,198,198,198,108,56,7,11,11,8,0,0,108, + 108,0,56,108,198,198,198,198,108,56,8,8,8,9,0,0, + 24,24,0,255,255,0,24,24,7,10,10,8,0,255,2,60, + 108,206,214,214,230,108,120,128,8,12,12,9,0,0,48,16, + 8,0,238,102,102,102,102,102,111,54,8,12,12,9,0,0, + 12,8,16,0,238,102,102,102,102,102,111,54,8,12,12,9, + 0,0,16,56,68,0,238,102,102,102,102,102,111,54,8,11, + 11,9,0,0,108,108,0,238,102,102,102,102,102,111,54,8, + 16,16,8,0,252,12,8,16,0,247,98,98,52,52,28,24, + 24,16,16,224,192,8,15,15,9,0,252,224,96,96,108,118, + 99,99,99,99,114,108,96,96,96,240,8,15,15,8,0,252, + 108,108,0,247,98,98,52,52,28,24,24,16,16,224,192}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=15 x= 2 y= 9 dx=17 dy= 0 ascent=12 len=33 + Font Bounding box w=19 h=27 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB12r[1834] U8G_SECTION(".progmem.u8g_font_timB12r") = { + 0,19,27,254,249,11,2,42,5,41,32,127,252,12,252,11, + 252,0,0,0,5,0,1,2,11,11,6,2,0,192,192,192, + 192,192,128,128,0,0,192,192,5,5,5,9,1,6,216,216, + 216,144,144,8,11,11,8,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,13,13,8,0,255,16,122,150,210,240,120, + 60,30,22,146,210,188,16,12,12,24,16,2,0,48,128,111, + 0,201,0,201,0,202,0,210,96,100,208,9,144,9,144,17, + 144,17,160,32,192,10,11,22,14,2,0,28,0,38,0,38, + 0,52,0,57,192,120,128,156,128,141,0,198,64,231,192,123, + 128,2,5,5,5,2,6,192,192,192,128,128,4,14,14,6, + 1,253,16,32,96,64,192,192,192,192,192,192,64,96,32,16, + 4,14,14,6,0,253,128,64,96,32,48,48,48,48,48,48, + 32,96,64,128,5,7,7,8,1,4,32,168,248,112,248,168, + 32,7,8,8,9,1,0,16,16,16,254,254,16,16,16,2, + 5,5,4,1,253,192,192,64,64,128,4,2,2,5,0,3, + 240,240,2,2,2,4,1,0,192,192,4,11,11,5,0,0, + 16,48,32,32,96,64,64,64,192,128,128,6,11,11,8,1, + 0,48,72,204,204,204,204,204,204,204,72,48,6,11,11,8, + 1,0,16,240,48,48,48,48,48,48,48,48,252,7,11,11, + 8,0,0,56,124,156,12,12,8,24,16,34,124,252,7,11, + 11,8,0,0,56,124,140,8,16,60,14,6,198,204,120,7, + 11,11,8,0,0,4,12,28,44,44,76,140,254,254,12,12, + 8,11,11,8,0,0,31,62,32,56,124,14,6,6,198,204, + 112,6,11,11,8,1,0,12,48,96,96,240,204,204,204,204, + 72,48,7,11,11,8,0,0,126,126,132,4,12,8,8,24, + 16,48,32,7,11,11,8,0,0,56,68,198,228,120,60,78, + 198,198,68,56,6,11,11,8,1,0,48,72,204,204,204,204, + 124,24,24,48,192,2,7,7,5,1,0,192,192,0,0,0, + 192,192,2,10,10,5,1,253,192,192,0,0,0,192,192,64, + 64,128,8,8,8,9,0,0,3,14,56,192,192,56,14,3, + 7,5,5,9,1,2,254,254,0,254,254,8,8,8,9,0, + 0,192,112,28,3,3,28,112,192,6,11,11,8,1,0,56, + 204,204,12,12,8,16,32,0,96,96,13,13,26,16,1,254, + 7,128,28,96,48,16,103,80,204,200,216,200,216,136,217,144, + 217,176,78,224,32,0,24,96,7,128,11,11,22,12,0,0, + 4,0,14,0,14,0,27,0,19,0,51,0,33,128,127,128, + 64,192,192,192,225,224,9,11,22,10,1,0,252,0,102,0, + 99,0,99,0,102,0,126,0,99,0,97,128,97,128,99,0, + 254,0,9,11,22,11,1,0,30,128,99,128,65,128,192,128, + 192,0,192,0,192,0,192,0,96,128,115,0,62,0,9,11, + 22,11,1,0,252,0,102,0,99,0,97,128,97,128,97,128, + 97,128,97,128,99,0,102,0,252,0,8,11,11,10,1,0, + 255,99,97,96,98,126,98,96,97,99,255,8,11,11,10,1, + 0,255,99,97,96,98,126,98,96,96,96,248,10,11,22,12, + 1,0,30,128,99,128,65,128,192,128,192,0,192,0,199,192, + 193,128,193,128,97,128,63,0,10,11,22,12,1,0,243,192, + 97,128,97,128,97,128,97,128,127,128,97,128,97,128,97,128, + 97,128,243,192,4,11,11,6,1,0,240,96,96,96,96,96, + 96,96,96,96,240,6,13,13,8,1,254,60,24,24,24,24, + 24,24,24,24,24,216,208,96,11,11,22,13,1,0,251,192, + 97,0,98,0,100,0,104,0,120,0,108,0,102,0,99,0, + 97,128,251,224,9,11,22,11,1,0,240,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,128,96,128,97,128,255,128, + 14,11,22,15,0,0,224,28,112,24,112,56,120,56,88,88, + 76,88,76,152,70,152,71,24,67,24,226,60,10,11,22,12, + 1,0,241,192,112,128,88,128,88,128,76,128,70,128,71,128, + 67,128,65,128,65,128,224,128,10,11,22,12,1,0,30,0, + 97,128,64,128,192,192,192,192,192,192,192,192,192,192,64,128, + 97,128,30,0,8,11,11,10,1,0,254,103,99,99,102,124, + 96,96,96,96,240,10,14,28,12,1,253,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,63, + 0,14,0,6,0,1,128,10,11,22,12,1,0,254,0,103, + 0,99,0,99,0,102,0,124,0,108,0,102,0,99,0,97, + 128,243,192,8,11,11,9,0,0,61,67,193,224,120,60,14, + 7,131,194,188,10,11,22,11,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,30,0, + 10,11,22,12,1,0,241,192,96,128,96,128,96,128,96,128, + 96,128,96,128,96,128,96,128,33,0,30,0,11,11,22,12, + 0,0,248,224,48,64,48,64,24,128,24,128,13,0,13,0, + 7,0,6,0,2,0,2,0,17,11,33,17,0,0,251,239, + 128,112,195,0,48,194,0,56,226,0,25,230,0,29,100,0, + 13,124,0,15,56,0,6,56,0,6,16,0,2,16,0,10, + 11,22,12,1,0,251,192,113,0,58,0,58,0,28,0,14, + 0,30,0,23,0,35,0,67,128,231,192,11,11,22,12,0, + 0,248,224,112,64,56,128,24,128,29,0,15,0,6,0,6, + 0,6,0,6,0,15,0,10,11,22,11,0,0,255,192,193, + 192,131,128,7,0,14,0,14,0,28,0,56,0,112,64,240, + 192,255,192,3,14,14,6,1,253,224,192,192,192,192,192,192, + 192,192,192,192,192,192,224,4,11,11,5,0,0,128,192,64, + 64,96,32,32,32,48,16,16,3,14,14,6,1,253,224,96, + 96,96,96,96,96,96,96,96,96,96,96,224,7,7,7,9, + 1,4,16,56,40,108,68,198,130,8,1,1,8,0,252,255, + 3,3,3,6,2,9,192,64,32,8,8,8,8,0,0,56, + 204,204,28,108,204,205,118,8,11,11,9,0,0,224,96,96, + 108,118,99,99,99,99,118,236,6,8,8,7,0,0,56,108, + 204,192,192,192,100,56,8,11,11,9,0,0,14,6,6,54, + 110,198,198,198,198,78,55,6,8,8,7,0,0,56,108,204, + 252,192,192,100,56,6,11,11,6,0,0,24,108,96,240,96, + 96,96,96,96,96,240,7,12,12,8,0,252,50,78,204,204, + 200,112,64,252,126,130,132,120,8,11,11,9,0,0,224,96, + 96,108,118,102,102,102,102,102,239,4,11,11,5,0,0,96, + 96,0,224,96,96,96,96,96,96,240,5,15,15,5,254,252, + 24,24,0,56,24,24,24,24,24,24,24,24,216,208,96,9, + 11,22,9,0,0,224,0,96,0,96,0,111,0,100,0,104, + 0,120,0,124,0,110,0,103,0,247,128,4,11,11,5,0, + 0,224,96,96,96,96,96,96,96,96,96,240,12,8,16,13, + 0,0,237,192,119,96,102,96,102,96,102,96,102,96,102,96, + 246,240,8,8,8,9,0,0,236,126,102,102,102,102,102,247, + 7,8,8,8,0,0,56,108,198,198,198,198,108,56,8,12, + 12,9,0,252,236,118,99,99,99,99,118,108,96,96,96,240, + 8,12,12,9,0,252,50,110,198,198,198,198,110,54,6,6, + 6,15,6,8,8,7,0,0,236,124,96,96,96,96,96,240, + 5,8,8,6,0,0,120,200,224,112,56,152,216,176,5,11, + 11,6,0,0,32,32,96,240,96,96,96,96,96,104,48,8, + 8,8,9,0,0,238,102,102,102,102,102,111,54,8,8,8, + 8,0,0,247,98,98,100,52,56,24,16,12,8,16,12,0, + 0,239,112,102,32,102,32,119,64,55,64,57,128,25,128,17, + 0,7,8,8,8,0,0,246,116,56,56,24,60,76,238,8, + 12,12,8,0,252,247,98,98,52,52,28,24,24,16,16,224, + 192,7,8,8,7,0,0,254,140,152,24,48,114,98,254,4, + 14,14,7,1,253,48,96,96,96,96,64,128,64,96,96,96, + 96,96,48,1,14,14,4,1,253,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,4,14,14,7,1,253,192,96,96, + 96,96,32,16,32,96,96,96,96,96,192,9,4,8,9,0, + 4,48,0,120,128,159,0,14,0,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=11 dx=19 dy= 0 ascent=17 len=39 + Font Bounding box w=22 h=28 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =17 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB14[4851] U8G_SECTION(".progmem.u8g_font_timB14") = { + 0,22,28,254,249,13,2,178,6,78,32,255,252,17,252,13, + 252,0,0,0,5,0,1,3,13,13,6,1,0,64,224,224, + 224,224,224,224,64,64,0,224,224,224,6,6,6,10,2,7, + 204,204,204,204,136,136,10,12,24,9,0,0,25,128,25,128, + 25,128,127,192,127,192,51,0,51,0,255,128,255,128,102,0, + 102,0,102,0,8,16,16,9,0,254,24,126,219,219,216,248, + 124,62,31,31,27,219,219,126,24,24,14,13,26,18,1,0, + 60,24,119,240,226,96,226,64,228,192,253,128,115,120,6,236, + 6,196,13,196,25,200,49,248,48,224,13,13,26,16,2,0, + 30,0,51,0,51,0,51,0,58,0,28,240,60,96,94,64, + 207,128,199,128,227,192,255,248,120,240,2,6,6,5,1,7, + 192,192,192,192,128,128,5,17,17,6,1,252,8,16,48,96, + 96,224,192,192,192,192,192,224,96,96,48,16,8,5,17,17, + 6,0,252,128,64,96,48,48,56,24,24,24,24,24,56,48, + 32,96,64,128,8,9,9,9,0,4,24,24,219,255,60,255, + 219,24,24,10,10,20,11,0,0,12,0,12,0,12,0,12, + 0,255,192,255,192,12,0,12,0,12,0,12,0,4,6,6, + 5,0,253,112,112,112,48,96,192,5,3,3,6,0,4,248, + 248,248,3,3,3,5,1,0,224,224,224,5,13,13,6,0, + 0,24,24,24,48,48,48,32,96,96,96,192,192,192,8,13, + 13,9,0,0,60,102,103,231,231,231,231,231,231,231,102,102, + 60,8,13,13,9,0,0,28,60,252,28,28,28,28,28,28, + 28,28,28,127,8,13,13,9,0,0,60,126,207,135,7,7, + 6,12,24,49,99,255,255,9,13,26,9,0,0,60,0,126, + 0,143,0,7,0,14,0,28,0,62,0,15,0,7,128,3, + 128,195,0,230,0,124,0,8,13,13,9,0,0,14,30,30, + 46,46,78,206,142,255,255,14,14,14,9,13,26,9,0,0, + 63,0,63,0,62,0,64,0,120,0,126,0,63,0,7,128, + 3,128,3,128,195,0,230,0,252,0,8,13,13,9,0,0, + 7,28,56,112,96,252,230,231,231,231,231,102,60,8,13,13, + 9,0,0,255,255,254,134,12,12,12,24,24,56,48,48,112, + 8,13,13,9,0,0,60,102,227,227,246,124,60,126,207,199, + 195,231,126,8,13,13,9,0,0,60,102,231,231,231,231,103, + 63,7,6,14,60,240,3,9,9,5,1,0,224,224,224,0, + 0,0,224,224,224,4,12,12,5,0,253,112,112,112,0,0, + 0,112,112,112,48,96,192,9,9,18,11,1,0,3,128,15, + 0,60,0,240,0,192,0,240,0,60,0,15,0,3,128,9, + 6,12,11,1,2,255,128,255,128,0,0,0,0,255,128,255, + 128,9,9,18,11,1,0,224,0,120,0,30,0,7,128,1, + 128,7,128,30,0,120,0,224,0,7,13,13,9,1,0,124, + 206,238,238,78,12,24,16,16,0,56,56,56,15,16,32,17, + 1,253,3,224,15,56,56,12,48,4,115,182,103,118,231,118, + 238,102,238,102,238,236,239,252,103,184,112,0,56,0,30,0, + 7,240,14,13,26,14,0,0,3,0,3,128,7,128,5,192, + 13,192,8,192,24,224,16,96,31,240,48,112,32,56,96,56, + 248,252,10,13,26,13,1,0,254,0,115,128,113,192,113,192, + 113,192,115,128,126,0,115,128,113,192,113,192,113,192,115,128, + 255,0,12,13,26,14,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,0,224,0,224,0,112,0,112,48,60,224, + 15,128,12,13,26,14,1,0,255,0,113,192,112,224,112,96, + 112,112,112,112,112,112,112,112,112,112,112,96,112,224,113,192, + 255,0,10,13,26,13,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,64,112,192, + 255,192,10,13,26,12,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,0,112,0, + 248,0,13,13,26,15,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,248,224,112,224,112,112,112,112,112,56,240, + 15,192,13,13,26,15,1,0,248,248,112,112,112,112,112,112, + 112,112,112,112,127,240,112,112,112,112,112,112,112,112,112,112, + 249,248,5,13,13,7,1,0,248,112,112,112,112,112,112,112, + 112,112,112,112,248,8,15,15,9,0,254,31,14,14,14,14, + 14,14,14,14,14,14,14,238,236,120,12,13,26,15,2,0, + 249,240,112,192,113,128,115,0,118,0,124,0,124,0,126,0, + 119,0,119,128,115,192,113,224,248,240,10,13,26,13,2,0, + 248,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,64,112,192,255,192,15,13,26,18,2,0, + 240,30,112,28,120,60,120,60,124,92,92,92,94,220,78,156, + 79,156,71,28,71,28,67,28,226,62,12,13,26,14,1,0, + 240,112,120,32,120,32,124,32,94,32,78,32,79,32,71,160, + 67,160,67,224,65,224,64,224,224,224,13,13,26,15,1,0, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,10,13,26,12,1,0, + 255,0,115,128,113,192,113,192,113,192,115,128,127,0,112,0, + 112,0,112,0,112,0,112,0,248,0,13,17,34,15,1,252, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,15,0,7,128,3,224, + 0,248,12,13,26,14,1,0,255,0,115,128,113,192,113,192, + 113,192,115,128,127,0,119,0,115,128,113,192,113,192,112,224, + 248,240,9,13,26,11,1,0,30,128,99,128,225,128,224,0, + 248,0,124,0,63,0,15,128,7,128,3,128,195,128,231,0, + 188,0,11,13,26,13,1,0,255,224,206,96,142,32,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,12,13,26,14,1,0,248,240,112,32,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,96,56,192, + 31,128,14,13,26,14,0,0,252,124,120,24,56,16,60,48, + 28,32,30,96,30,64,14,192,15,128,7,128,7,0,3,0, + 2,0,18,13,39,19,1,0,253,247,192,121,225,128,56,225, + 0,60,227,0,60,226,0,28,114,0,30,118,0,14,116,0, + 14,188,0,15,60,0,7,60,0,6,24,0,6,24,0,14, + 13,26,14,0,0,248,120,120,48,60,96,28,192,15,128,7, + 0,7,128,7,192,13,192,24,224,48,112,96,120,240,252,13, + 13,26,14,1,0,252,120,120,48,56,96,60,64,30,192,14, + 128,15,128,7,0,7,0,7,0,7,0,7,0,31,192,10, + 13,26,13,2,0,255,192,195,192,131,128,7,128,15,0,14, + 0,30,0,60,0,56,0,120,0,240,64,224,192,255,192,4, + 16,16,6,1,253,240,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,240,5,13,13,5,0,0,192,192,192,96,96, + 96,32,48,48,48,24,24,24,4,16,16,6,1,253,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,8,7, + 7,11,1,6,24,24,60,36,102,195,195,9,2,4,9,0, + 252,255,128,255,128,5,3,3,6,0,10,224,112,24,8,9, + 9,9,0,0,124,206,206,30,110,206,206,254,119,9,13,26, + 9,255,0,240,0,112,0,112,0,112,0,118,0,127,0,115, + 128,115,128,115,128,115,128,115,128,115,0,110,0,7,9,9, + 8,0,0,62,118,230,224,224,224,224,118,60,9,13,26,10, + 0,0,15,0,7,0,7,0,7,0,55,0,127,0,231,0, + 231,0,231,0,231,0,231,0,119,0,59,128,7,9,9,8, + 0,0,60,118,230,254,224,224,224,118,60,7,13,13,6,0, + 0,62,118,118,112,252,112,112,112,112,112,112,112,248,9,13, + 26,9,0,252,63,128,231,0,231,0,231,0,230,0,120,0, + 96,0,254,0,255,128,227,128,193,128,227,0,126,0,10,13, + 26,11,0,0,240,0,112,0,112,0,112,0,119,0,127,128, + 115,128,115,128,115,128,115,128,115,128,115,128,251,192,5,13, + 13,5,0,0,96,96,96,0,240,112,112,112,112,112,112,112, + 248,6,17,17,5,254,252,24,24,24,0,60,28,28,28,28, + 28,28,28,28,28,220,216,112,10,13,26,10,0,0,240,0, + 112,0,112,0,112,0,115,128,115,0,118,0,124,0,124,0, + 126,0,119,0,115,128,247,192,5,13,13,6,0,0,240,112, + 112,112,112,112,112,112,112,112,112,112,248,15,9,18,16,0, + 0,247,56,123,220,115,156,115,156,115,156,115,156,115,156,115, + 156,251,222,10,9,18,11,0,0,231,0,127,128,115,128,115, + 128,115,128,115,128,115,128,115,128,251,192,8,9,9,9,0, + 0,60,102,231,231,231,231,231,102,60,9,13,26,10,0,252, + 230,0,127,0,115,128,115,128,115,128,115,128,115,128,123,0, + 118,0,112,0,112,0,112,0,248,0,9,13,26,9,0,252, + 57,0,119,0,231,0,231,0,231,0,231,0,231,0,127,0, + 55,0,7,0,7,0,7,0,15,128,7,9,9,8,0,0, + 238,118,112,112,112,112,112,112,248,6,9,9,7,0,0,124, + 204,228,240,120,60,156,204,248,6,11,11,7,0,0,16,48, + 252,112,112,112,112,112,112,116,56,10,9,18,11,0,0,247, + 128,115,128,115,128,115,128,115,128,115,128,115,128,127,128,61, + 192,10,9,18,9,255,0,251,192,113,128,121,0,59,0,59, + 0,30,0,30,0,12,0,12,0,14,9,18,12,255,0,247, + 156,119,24,115,144,59,176,57,160,29,224,31,224,12,192,12, + 192,9,9,18,9,0,0,243,128,115,0,122,0,60,0,28, + 0,30,0,55,0,103,128,227,128,10,13,26,9,255,252,251, + 192,113,128,121,0,59,0,58,0,30,0,30,0,12,0,12, + 0,12,0,200,0,216,0,240,0,7,9,9,8,0,0,254, + 206,142,28,56,112,114,230,254,7,17,17,8,0,252,30,56, + 48,48,48,48,48,96,192,96,48,48,48,48,48,56,30,2, + 16,16,4,1,253,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,7,17,17,8,1,252,240,56,24,24,24, + 24,24,12,6,12,24,24,24,24,24,56,240,8,4,4,10, + 1,3,112,249,159,14,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,5,0,1,3,13,13, + 6,1,252,224,224,224,0,64,64,224,224,224,224,224,224,64, + 8,13,13,9,0,254,1,3,62,119,239,236,216,216,240,115, + 62,96,64,14,13,26,9,0,0,31,0,59,0,59,0,56, + 0,56,0,56,0,254,0,56,4,56,0,48,0,240,128,191, + 128,239,0,8,8,8,9,0,2,219,255,102,195,195,102,255, + 219,9,13,26,9,0,0,251,128,113,0,115,0,58,0,58, + 0,28,0,127,0,28,0,127,0,28,0,28,0,28,0,127, + 0,2,16,16,4,1,253,192,192,192,192,192,192,0,0,0, + 0,192,192,192,192,192,192,7,16,16,9,1,253,60,102,70, + 96,48,120,220,206,230,118,60,28,12,196,204,120,6,2,2, + 6,0,10,204,204,13,13,26,15,1,0,15,128,56,224,96, + 48,79,208,220,216,152,72,152,8,152,8,220,216,79,144,96, + 48,56,224,15,128,6,8,8,6,0,5,112,216,56,216,216, + 236,0,252,9,7,14,11,1,1,25,128,51,0,102,0,204, + 0,102,0,51,0,25,128,9,6,12,11,1,1,255,128,255, + 128,1,128,1,128,1,128,1,128,5,3,3,6,0,4,248, + 248,248,13,13,26,15,1,0,15,128,56,224,96,48,95,144, + 204,216,140,200,143,136,141,136,204,216,94,240,96,48,56,224, + 15,128,6,1,1,6,0,11,252,6,5,5,7,0,8,120, + 204,204,204,120,8,11,11,11,1,0,24,24,24,255,255,24, + 24,24,0,255,255,5,8,8,5,0,5,112,152,24,48,32, + 64,248,240,5,8,8,5,0,5,112,152,24,112,56,24,152, + 112,5,3,3,6,0,10,56,112,192,10,13,26,11,0,252, + 247,128,115,128,115,128,115,128,115,128,115,128,115,128,127,128, + 125,192,96,0,224,0,240,0,96,0,9,17,34,10,0,252, + 63,128,127,128,251,0,251,0,251,0,251,0,123,0,59,0, + 27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0, + 27,0,3,3,3,5,1,4,224,224,224,5,4,4,6,1, + 252,32,24,152,112,6,8,8,5,0,5,48,240,48,48,48, + 48,48,252,6,8,8,6,0,5,120,204,204,204,204,120,0, + 252,9,7,14,11,1,1,204,0,102,0,51,0,25,128,51, + 0,102,0,204,0,13,13,26,13,0,0,48,96,240,192,48, + 192,49,128,49,128,51,16,51,48,254,112,6,176,13,176,13, + 248,24,48,24,48,13,13,26,13,0,0,48,96,240,192,48, + 192,49,128,49,128,51,112,51,152,254,24,6,48,12,32,12, + 64,24,248,24,240,13,13,26,13,0,0,112,96,152,192,24, + 192,113,128,57,128,27,16,155,48,118,112,6,176,13,176,13, + 248,24,48,24,48,7,13,13,9,1,252,56,56,56,0,16, + 16,48,96,228,238,238,230,124,14,17,34,14,0,0,14,0, + 7,0,1,128,0,0,3,0,3,128,7,128,5,192,13,192, + 8,192,24,224,16,96,31,240,48,112,32,56,96,56,248,252, + 14,17,34,14,0,0,3,128,7,0,12,0,0,0,3,0, + 3,128,7,128,5,192,13,192,8,192,24,224,16,96,31,240, + 48,112,32,56,96,56,248,252,14,17,34,14,0,0,3,0, + 7,128,12,192,0,0,3,0,3,128,7,128,5,192,13,192, + 8,192,24,224,16,96,31,240,48,112,32,56,96,56,248,252, + 14,17,34,14,0,0,6,64,15,192,9,128,0,0,3,0, + 3,128,7,128,5,192,13,192,8,192,24,224,16,96,31,240, + 48,112,32,56,96,56,248,252,14,16,32,14,0,0,12,192, + 12,192,0,0,3,0,3,128,7,128,5,192,13,192,8,192, + 24,224,16,96,31,240,48,112,32,56,96,56,248,252,14,17, + 34,14,0,0,7,0,13,128,13,128,7,0,3,0,3,128, + 7,128,5,192,13,192,8,192,24,224,16,96,31,240,48,112, + 32,56,96,56,248,252,17,13,39,19,0,0,7,255,128,3, + 225,128,2,224,128,6,224,0,4,224,0,12,226,0,8,254, + 0,31,226,0,16,224,0,48,224,0,32,224,128,96,225,128, + 249,255,128,12,17,34,14,1,252,15,144,56,240,112,112,112, + 48,224,0,224,0,224,0,224,0,224,0,112,0,112,48,60, + 224,15,128,4,0,3,0,19,0,14,0,10,17,34,13,2, + 0,56,0,28,0,6,0,0,0,255,192,112,192,112,64,112, + 0,112,0,113,0,127,0,113,0,112,0,112,0,112,64,112, + 192,255,192,10,17,34,13,2,0,14,0,28,0,48,0,0, + 0,255,192,112,192,112,64,112,0,112,0,113,0,127,0,113, + 0,112,0,112,0,112,64,112,192,255,192,10,17,34,13,2, + 0,12,0,30,0,51,0,0,0,255,192,112,192,112,64,112, + 0,112,0,113,0,127,0,113,0,112,0,112,0,112,64,112, + 192,255,192,10,16,32,13,2,0,51,0,51,0,0,0,255, + 192,112,192,112,64,112,0,112,0,113,0,127,0,113,0,112, + 0,112,0,112,64,112,192,255,192,5,17,17,7,1,0,224, + 112,24,0,248,112,112,112,112,112,112,112,112,112,112,112,248, + 5,17,17,7,1,0,56,112,192,0,248,112,112,112,112,112, + 112,112,112,112,112,112,248,6,17,17,7,1,0,48,120,204, + 0,248,112,112,112,112,112,112,112,112,112,112,112,248,6,16, + 16,7,1,0,204,204,0,248,112,112,112,112,112,112,112,112, + 112,112,112,248,13,13,26,14,0,0,127,128,56,224,56,112, + 56,48,56,56,56,56,254,56,56,56,56,56,56,48,56,112, + 56,224,127,128,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,240,112,120,32,120,32,124,32,94,32,78,32,79,32, + 71,160,67,160,67,224,65,224,64,224,224,224,13,17,34,15, + 1,0,14,0,7,0,1,128,0,0,15,128,56,224,112,112, + 112,112,224,56,224,56,224,56,224,56,224,56,112,112,112,112, + 56,224,15,128,13,17,34,15,1,0,3,128,7,0,12,0, + 0,0,15,128,56,224,112,112,112,112,224,56,224,56,224,56, + 224,56,224,56,112,112,112,112,56,224,15,128,13,17,34,15, + 1,0,6,0,15,0,25,128,0,0,15,128,56,224,112,112, + 112,112,224,56,224,56,224,56,224,56,224,56,112,112,112,112, + 56,224,15,128,13,17,34,15,1,0,12,128,31,128,19,0, + 0,0,15,128,56,224,112,112,112,112,224,56,224,56,224,56, + 224,56,224,56,112,112,112,112,56,224,15,128,13,16,32,15, + 1,0,25,128,25,128,0,0,15,128,56,224,112,112,112,112, + 224,56,224,56,224,56,224,56,224,56,112,112,112,112,56,224, + 15,128,9,8,16,11,1,1,193,128,99,0,54,0,28,0, + 28,0,54,0,99,0,193,128,13,15,30,15,1,255,0,96, + 15,192,56,224,112,176,113,176,225,56,227,56,226,56,230,56, + 228,56,108,112,104,112,56,224,31,128,48,0,12,17,34,14, + 1,0,28,0,14,0,3,0,0,0,248,240,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,32,112,96, + 56,192,31,128,12,17,34,14,1,0,1,192,3,128,6,0, + 0,0,248,240,112,32,112,32,112,32,112,32,112,32,112,32, + 112,32,112,32,112,32,112,96,56,192,31,128,12,17,34,14, + 1,0,6,0,15,0,25,128,0,0,248,240,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,32,112,96, + 56,192,31,128,12,16,32,14,1,0,25,128,25,128,0,0, + 248,240,112,32,112,32,112,32,112,32,112,32,112,32,112,32, + 112,32,112,32,112,96,56,192,31,128,13,17,34,14,1,0, + 0,224,1,192,3,0,0,0,252,120,120,48,56,96,60,64, + 30,192,14,128,15,128,7,0,7,0,7,0,7,0,7,0, + 31,192,10,13,26,11,1,0,248,0,112,0,112,0,127,0, + 115,128,113,192,113,192,113,192,115,128,127,0,112,0,112,0, + 248,0,9,13,26,10,0,0,30,0,59,0,115,128,115,128, + 115,128,119,0,114,0,115,0,115,128,115,128,115,128,115,128, + 247,0,8,13,13,9,0,0,112,56,12,0,124,206,206,30, + 110,206,206,254,119,8,13,13,9,0,0,14,28,48,0,124, + 206,206,30,110,206,206,254,119,8,13,13,9,0,0,24,60, + 102,0,124,206,206,30,110,206,206,254,119,8,13,13,9,0, + 0,50,126,76,0,124,206,206,30,110,206,206,254,119,8,12, + 12,9,0,0,102,102,0,124,206,206,30,110,206,206,254,119, + 8,13,13,9,0,0,56,108,108,56,124,206,206,30,110,206, + 206,254,119,12,9,18,13,0,0,125,224,231,176,199,48,15, + 240,127,0,231,0,199,0,239,176,121,224,7,13,13,8,0, + 252,62,118,230,224,224,224,224,118,60,16,12,76,56,7,13, + 13,8,0,0,112,56,12,0,60,118,230,254,224,224,224,118, + 60,8,13,13,8,0,0,7,14,24,0,60,118,230,254,224, + 224,224,118,60,7,13,13,8,0,0,24,60,102,0,60,118, + 230,254,224,224,224,118,60,7,12,12,8,0,0,102,102,0, + 60,118,230,254,224,224,224,118,60,5,13,13,5,0,0,224, + 112,24,0,240,112,112,112,112,112,112,112,248,5,13,13,5, + 0,0,56,112,192,0,240,112,112,112,112,112,112,112,248,6, + 13,13,5,0,0,48,120,204,0,240,112,112,112,112,112,112, + 112,248,6,12,12,5,0,0,204,204,0,240,112,112,112,112, + 112,112,112,248,8,13,13,9,0,0,96,54,56,76,62,102, + 231,231,231,231,231,102,60,10,13,26,11,0,0,25,0,63, + 0,38,0,0,0,231,0,127,128,115,128,115,128,115,128,115, + 128,115,128,115,128,251,192,8,13,13,9,0,0,112,56,12, + 0,60,102,231,231,231,231,231,102,60,8,13,13,9,0,0, + 7,14,24,0,60,102,231,231,231,231,231,102,60,8,13,13, + 9,0,0,24,60,102,0,60,102,231,231,231,231,231,102,60, + 8,13,13,9,0,0,50,126,76,0,60,102,231,231,231,231, + 231,102,60,8,12,12,9,0,0,102,102,0,60,102,231,231, + 231,231,231,102,60,8,8,8,11,1,1,24,24,0,255,255, + 0,24,24,10,11,22,9,255,255,0,64,30,128,51,0,115, + 128,115,128,119,128,123,128,113,128,51,0,94,0,128,0,10, + 13,26,11,0,0,56,0,28,0,6,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 13,26,11,0,0,14,0,28,0,48,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 13,26,11,0,0,12,0,30,0,51,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 12,24,11,0,0,51,0,51,0,0,0,247,128,115,128,115, + 128,115,128,115,128,115,128,115,128,127,128,61,192,10,17,34, + 9,255,252,3,128,7,0,12,0,0,0,251,192,113,128,121, + 0,59,0,58,0,30,0,30,0,12,0,12,0,12,0,8, + 0,216,0,240,0,9,17,34,10,0,252,240,0,112,0,112, + 0,112,0,118,0,127,0,115,128,115,128,115,128,115,128,115, + 128,123,0,118,0,112,0,112,0,112,0,248,0,10,16,32, + 9,255,252,51,0,51,0,0,0,251,192,113,128,121,0,59, + 0,58,0,30,0,30,0,12,0,12,0,12,0,8,0,216, + 0,240,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=10 dx=19 dy= 0 ascent=14 len=39 + Font Bounding box w=22 h=28 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB14r[2295] U8G_SECTION(".progmem.u8g_font_timB14r") = { + 0,22,28,254,249,13,2,178,6,78,32,127,252,14,252,13, + 252,0,0,0,5,0,1,3,13,13,6,1,0,64,224,224, + 224,224,224,224,64,64,0,224,224,224,6,6,6,10,2,7, + 204,204,204,204,136,136,10,12,24,9,0,0,25,128,25,128, + 25,128,127,192,127,192,51,0,51,0,255,128,255,128,102,0, + 102,0,102,0,8,16,16,9,0,254,24,126,219,219,216,248, + 124,62,31,31,27,219,219,126,24,24,14,13,26,18,1,0, + 60,24,119,240,226,96,226,64,228,192,253,128,115,120,6,236, + 6,196,13,196,25,200,49,248,48,224,13,13,26,16,2,0, + 30,0,51,0,51,0,51,0,58,0,28,240,60,96,94,64, + 207,128,199,128,227,192,255,248,120,240,2,6,6,5,1,7, + 192,192,192,192,128,128,5,17,17,6,1,252,8,16,48,96, + 96,224,192,192,192,192,192,224,96,96,48,16,8,5,17,17, + 6,0,252,128,64,96,48,48,56,24,24,24,24,24,56,48, + 32,96,64,128,8,9,9,9,0,4,24,24,219,255,60,255, + 219,24,24,10,10,20,11,0,0,12,0,12,0,12,0,12, + 0,255,192,255,192,12,0,12,0,12,0,12,0,4,6,6, + 5,0,253,112,112,112,48,96,192,5,3,3,6,0,4,248, + 248,248,3,3,3,5,1,0,224,224,224,5,13,13,6,0, + 0,24,24,24,48,48,48,32,96,96,96,192,192,192,8,13, + 13,9,0,0,60,102,103,231,231,231,231,231,231,231,102,102, + 60,8,13,13,9,0,0,28,60,252,28,28,28,28,28,28, + 28,28,28,127,8,13,13,9,0,0,60,126,207,135,7,7, + 6,12,24,49,99,255,255,9,13,26,9,0,0,60,0,126, + 0,143,0,7,0,14,0,28,0,62,0,15,0,7,128,3, + 128,195,0,230,0,124,0,8,13,13,9,0,0,14,30,30, + 46,46,78,206,142,255,255,14,14,14,9,13,26,9,0,0, + 63,0,63,0,62,0,64,0,120,0,126,0,63,0,7,128, + 3,128,3,128,195,0,230,0,252,0,8,13,13,9,0,0, + 7,28,56,112,96,252,230,231,231,231,231,102,60,8,13,13, + 9,0,0,255,255,254,134,12,12,12,24,24,56,48,48,112, + 8,13,13,9,0,0,60,102,227,227,246,124,60,126,207,199, + 195,231,126,8,13,13,9,0,0,60,102,231,231,231,231,103, + 63,7,6,14,60,240,3,9,9,5,1,0,224,224,224,0, + 0,0,224,224,224,4,12,12,5,0,253,112,112,112,0,0, + 0,112,112,112,48,96,192,9,9,18,11,1,0,3,128,15, + 0,60,0,240,0,192,0,240,0,60,0,15,0,3,128,9, + 6,12,11,1,2,255,128,255,128,0,0,0,0,255,128,255, + 128,9,9,18,11,1,0,224,0,120,0,30,0,7,128,1, + 128,7,128,30,0,120,0,224,0,7,13,13,9,1,0,124, + 206,238,238,78,12,24,16,16,0,56,56,56,15,16,32,17, + 1,253,3,224,15,56,56,12,48,4,115,182,103,118,231,118, + 238,102,238,102,238,236,239,252,103,184,112,0,56,0,30,0, + 7,240,14,13,26,14,0,0,3,0,3,128,7,128,5,192, + 13,192,8,192,24,224,16,96,31,240,48,112,32,56,96,56, + 248,252,10,13,26,13,1,0,254,0,115,128,113,192,113,192, + 113,192,115,128,126,0,115,128,113,192,113,192,113,192,115,128, + 255,0,12,13,26,14,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,0,224,0,224,0,112,0,112,48,60,224, + 15,128,12,13,26,14,1,0,255,0,113,192,112,224,112,96, + 112,112,112,112,112,112,112,112,112,112,112,96,112,224,113,192, + 255,0,10,13,26,13,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,64,112,192, + 255,192,10,13,26,12,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,0,112,0, + 248,0,13,13,26,15,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,248,224,112,224,112,112,112,112,112,56,240, + 15,192,13,13,26,15,1,0,248,248,112,112,112,112,112,112, + 112,112,112,112,127,240,112,112,112,112,112,112,112,112,112,112, + 249,248,5,13,13,7,1,0,248,112,112,112,112,112,112,112, + 112,112,112,112,248,8,15,15,9,0,254,31,14,14,14,14, + 14,14,14,14,14,14,14,238,236,120,12,13,26,15,2,0, + 249,240,112,192,113,128,115,0,118,0,124,0,124,0,126,0, + 119,0,119,128,115,192,113,224,248,240,10,13,26,13,2,0, + 248,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,64,112,192,255,192,15,13,26,18,2,0, + 240,30,112,28,120,60,120,60,124,92,92,92,94,220,78,156, + 79,156,71,28,71,28,67,28,226,62,12,13,26,14,1,0, + 240,112,120,32,120,32,124,32,94,32,78,32,79,32,71,160, + 67,160,67,224,65,224,64,224,224,224,13,13,26,15,1,0, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,10,13,26,12,1,0, + 255,0,115,128,113,192,113,192,113,192,115,128,127,0,112,0, + 112,0,112,0,112,0,112,0,248,0,13,17,34,15,1,252, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,15,0,7,128,3,224, + 0,248,12,13,26,14,1,0,255,0,115,128,113,192,113,192, + 113,192,115,128,127,0,119,0,115,128,113,192,113,192,112,224, + 248,240,9,13,26,11,1,0,30,128,99,128,225,128,224,0, + 248,0,124,0,63,0,15,128,7,128,3,128,195,128,231,0, + 188,0,11,13,26,13,1,0,255,224,206,96,142,32,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,12,13,26,14,1,0,248,240,112,32,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,96,56,192, + 31,128,14,13,26,14,0,0,252,124,120,24,56,16,60,48, + 28,32,30,96,30,64,14,192,15,128,7,128,7,0,3,0, + 2,0,18,13,39,19,1,0,253,247,192,121,225,128,56,225, + 0,60,227,0,60,226,0,28,114,0,30,118,0,14,116,0, + 14,188,0,15,60,0,7,60,0,6,24,0,6,24,0,14, + 13,26,14,0,0,248,120,120,48,60,96,28,192,15,128,7, + 0,7,128,7,192,13,192,24,224,48,112,96,120,240,252,13, + 13,26,14,1,0,252,120,120,48,56,96,60,64,30,192,14, + 128,15,128,7,0,7,0,7,0,7,0,7,0,31,192,10, + 13,26,13,2,0,255,192,195,192,131,128,7,128,15,0,14, + 0,30,0,60,0,56,0,120,0,240,64,224,192,255,192,4, + 16,16,6,1,253,240,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,240,5,13,13,5,0,0,192,192,192,96,96, + 96,32,48,48,48,24,24,24,4,16,16,6,1,253,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,8,7, + 7,11,1,6,24,24,60,36,102,195,195,9,2,4,9,0, + 252,255,128,255,128,5,3,3,6,0,10,224,112,24,8,9, + 9,9,0,0,124,206,206,30,110,206,206,254,119,9,13,26, + 9,255,0,240,0,112,0,112,0,112,0,118,0,127,0,115, + 128,115,128,115,128,115,128,115,128,115,0,110,0,7,9,9, + 8,0,0,62,118,230,224,224,224,224,118,60,9,13,26,10, + 0,0,15,0,7,0,7,0,7,0,55,0,127,0,231,0, + 231,0,231,0,231,0,231,0,119,0,59,128,7,9,9,8, + 0,0,60,118,230,254,224,224,224,118,60,7,13,13,6,0, + 0,62,118,118,112,252,112,112,112,112,112,112,112,248,9,13, + 26,9,0,252,63,128,231,0,231,0,231,0,230,0,120,0, + 96,0,254,0,255,128,227,128,193,128,227,0,126,0,10,13, + 26,11,0,0,240,0,112,0,112,0,112,0,119,0,127,128, + 115,128,115,128,115,128,115,128,115,128,115,128,251,192,5,13, + 13,5,0,0,96,96,96,0,240,112,112,112,112,112,112,112, + 248,6,17,17,5,254,252,24,24,24,0,60,28,28,28,28, + 28,28,28,28,28,220,216,112,10,13,26,10,0,0,240,0, + 112,0,112,0,112,0,115,128,115,0,118,0,124,0,124,0, + 126,0,119,0,115,128,247,192,5,13,13,6,0,0,240,112, + 112,112,112,112,112,112,112,112,112,112,248,15,9,18,16,0, + 0,247,56,123,220,115,156,115,156,115,156,115,156,115,156,115, + 156,251,222,10,9,18,11,0,0,231,0,127,128,115,128,115, + 128,115,128,115,128,115,128,115,128,251,192,8,9,9,9,0, + 0,60,102,231,231,231,231,231,102,60,9,13,26,10,0,252, + 230,0,127,0,115,128,115,128,115,128,115,128,115,128,123,0, + 118,0,112,0,112,0,112,0,248,0,9,13,26,9,0,252, + 57,0,119,0,231,0,231,0,231,0,231,0,231,0,127,0, + 55,0,7,0,7,0,7,0,15,128,7,9,9,8,0,0, + 238,118,112,112,112,112,112,112,248,6,9,9,7,0,0,124, + 204,228,240,120,60,156,204,248,6,11,11,7,0,0,16,48, + 252,112,112,112,112,112,112,116,56,10,9,18,11,0,0,247, + 128,115,128,115,128,115,128,115,128,115,128,115,128,127,128,61, + 192,10,9,18,9,255,0,251,192,113,128,121,0,59,0,59, + 0,30,0,30,0,12,0,12,0,14,9,18,12,255,0,247, + 156,119,24,115,144,59,176,57,160,29,224,31,224,12,192,12, + 192,9,9,18,9,0,0,243,128,115,0,122,0,60,0,28, + 0,30,0,55,0,103,128,227,128,10,13,26,9,255,252,251, + 192,113,128,121,0,59,0,58,0,30,0,30,0,12,0,12, + 0,12,0,200,0,216,0,240,0,7,9,9,8,0,0,254, + 206,142,28,56,112,114,230,254,7,17,17,8,0,252,30,56, + 48,48,48,48,48,96,192,96,48,48,48,48,48,56,30,2, + 16,16,4,1,253,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,7,17,17,8,1,252,240,56,24,24,24, + 24,24,12,6,12,24,24,24,24,24,56,240,8,4,4,10, + 1,3,112,249,159,14,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--25-180-100-100-P-132-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=24 h=23 x= 3 y=14 dx=25 dy= 0 ascent=23 len=69 + Font Bounding box w=27 h=38 x=-2 y=-10 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =23 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB18[7223] U8G_SECTION(".progmem.u8g_font_timB18") = { + 0,27,38,254,246,17,4,47,9,109,32,255,251,23,250,17, + 251,0,0,0,6,0,1,4,17,17,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,0,0,96,240,240,96,8,8, + 8,12,2,9,231,231,231,231,231,231,66,66,12,17,34,13, + 0,0,12,192,12,192,12,192,12,192,127,240,127,240,25,128, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,10,20,40,12,1,254,8,0,8,0,63,0, + 107,128,233,128,233,128,248,128,124,0,126,0,63,0,31,128, + 15,128,11,192,137,192,201,192,201,128,235,128,62,0,8,0, + 8,0,17,17,51,19,1,0,30,12,0,59,252,0,113,24, + 0,225,48,0,226,48,0,226,96,0,244,96,0,120,192,0, + 0,192,0,1,143,0,1,157,128,3,56,128,3,112,128,6, + 113,0,6,113,0,12,122,0,12,60,0,17,17,51,21,1, + 0,3,224,0,6,112,0,14,48,0,14,48,0,14,112,0, + 7,224,0,15,15,128,31,135,0,51,194,0,97,230,0,225, + 252,0,224,248,0,224,120,0,240,124,0,248,255,128,127,159, + 0,63,14,0,3,8,8,7,2,9,224,224,224,224,224,224, + 64,64,5,21,21,8,1,252,8,24,48,48,112,96,96,224, + 224,224,224,224,224,224,96,96,112,48,48,24,8,5,21,21, + 8,1,252,128,192,96,96,48,48,48,56,56,56,56,56,56, + 56,48,48,48,96,96,192,128,10,11,22,13,1,6,12,0, + 12,0,76,128,237,192,127,128,30,0,127,128,237,192,76,128, + 12,0,12,0,12,12,24,14,1,0,6,0,6,0,6,0, + 6,0,6,0,255,240,255,240,6,0,6,0,6,0,6,0, + 6,0,4,9,9,6,1,251,96,240,240,112,48,96,96,192, + 128,6,3,3,8,1,5,252,252,252,4,4,4,6,1,0, + 96,240,240,96,7,17,17,7,0,0,6,6,4,12,12,8, + 24,24,16,48,48,32,96,96,64,192,192,11,17,34,12,0, + 0,14,0,59,128,49,128,113,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,224,113,192,113,192,113,192,49,128,59, + 128,14,0,9,17,34,12,2,0,12,0,60,0,252,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,62,0,255,128,10,17,34,12,1, + 0,30,0,63,0,127,128,199,128,131,128,3,128,3,128,3, + 0,7,0,6,0,12,0,12,0,24,64,48,64,127,192,255, + 192,255,128,11,17,34,12,0,0,15,0,63,128,99,192,65, + 192,1,192,3,128,7,0,31,0,7,192,1,224,1,224,0, + 224,0,224,96,224,241,192,251,128,126,0,11,17,34,12,0, + 0,1,128,3,128,7,128,7,128,15,128,27,128,51,128,51, + 128,99,128,195,128,255,224,255,224,255,224,3,128,3,128,3, + 128,3,128,11,17,34,12,0,0,31,224,31,192,63,192,48, + 0,32,0,112,0,127,0,127,128,127,192,7,192,1,192,0, + 192,0,192,96,192,241,128,251,128,126,0,11,17,34,12,1, + 0,1,224,7,128,30,0,60,0,56,0,120,0,119,0,123, + 128,241,192,241,224,241,224,241,224,241,224,113,192,113,192,59, + 128,30,0,11,17,34,12,0,0,63,224,127,224,127,192,192, + 192,129,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,14,0,14,0,12,0,28,0,28,0,11,17,34,12,0, + 0,31,0,59,128,113,192,113,192,113,192,121,128,59,0,63, + 0,31,128,55,192,99,192,225,224,225,224,225,224,241,192,123, + 128,62,0,11,17,34,12,0,0,14,0,59,128,113,192,113, + 192,241,224,241,224,241,224,241,224,113,224,59,192,31,192,3, + 192,3,128,7,128,15,0,60,0,240,0,4,12,12,8,2, + 0,96,240,240,96,0,0,0,0,96,240,240,96,4,17,17, + 8,2,251,96,240,240,96,0,0,0,0,96,240,240,112,48, + 96,96,192,128,11,12,24,14,1,0,0,96,1,224,7,192, + 31,0,60,0,224,0,224,0,60,0,31,0,7,192,1,224, + 0,96,11,6,12,14,1,3,255,224,255,224,0,0,0,0, + 255,224,255,224,11,12,24,14,1,0,192,0,240,0,124,0, + 31,0,7,128,0,224,0,224,7,128,31,0,124,0,240,0, + 192,0,9,17,34,12,1,0,62,0,111,0,231,128,231,128, + 71,128,7,128,15,0,14,0,28,0,24,0,24,0,0,0, + 0,0,24,0,60,0,60,0,24,0,20,21,63,23,1,252, + 0,124,0,3,247,128,15,128,192,30,0,96,60,0,32,56, + 59,48,112,255,16,113,231,16,241,199,16,227,198,16,227,142, + 16,227,142,48,227,142,32,243,158,96,241,254,192,112,243,128, + 120,0,0,56,0,0,30,0,0,7,131,0,1,252,0,17, + 17,51,18,0,0,1,128,0,1,192,0,3,192,0,3,224, + 0,3,224,0,6,224,0,6,240,0,4,112,0,12,112,0, + 8,120,0,8,56,0,31,248,0,16,60,0,48,60,0,48, + 30,0,112,30,0,248,127,128,14,17,34,16,0,0,255,192, + 60,240,60,120,60,120,60,120,60,120,60,112,60,192,63,224, + 60,120,60,60,60,60,60,60,60,60,60,56,60,120,255,224, + 15,17,34,18,1,0,3,242,30,62,60,14,120,6,120,2, + 240,2,240,0,240,0,240,0,240,0,240,0,240,0,120,0, + 120,2,60,14,31,60,7,240,16,17,34,18,1,0,255,224, + 60,120,60,60,60,30,60,30,60,15,60,15,60,15,60,15, + 60,15,60,15,60,14,60,30,60,28,60,60,60,120,255,224, + 15,17,34,17,1,0,255,252,60,28,60,12,60,4,60,4, + 60,32,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,6,60,14,255,254,14,17,34,15,0,0,255,252, + 60,28,60,12,60,4,60,4,60,32,60,32,60,96,63,224, + 60,96,60,32,60,32,60,0,60,0,60,0,60,0,255,0, + 17,17,51,19,1,0,3,242,0,30,62,0,60,14,0,120, + 6,0,120,2,0,240,2,0,240,0,0,240,0,0,240,0, + 0,240,127,128,240,30,0,240,30,0,120,30,0,120,30,0, + 56,30,0,30,30,0,7,248,0,18,17,51,19,0,0,255, + 63,192,60,15,0,60,15,0,60,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,63,255,0,60,15,0,60,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,255, + 63,192,8,17,17,10,0,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,11,19,38,12,0,254,31, + 224,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,231,128,231,128,231, + 0,231,0,60,0,18,17,51,19,0,0,255,63,128,60,30, + 0,60,24,0,60,48,0,60,96,0,60,192,0,61,128,0, + 63,192,0,63,192,0,61,224,0,60,240,0,60,248,0,60, + 124,0,60,62,0,60,31,0,60,15,128,255,31,192,15,17, + 34,16,0,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,6, + 60,12,60,28,255,252,21,17,51,24,1,0,252,1,248,60, + 3,224,62,3,224,62,7,224,47,5,224,47,13,224,39,9, + 224,39,137,224,39,153,224,35,145,224,35,241,224,35,241,224, + 33,225,224,33,225,224,32,193,224,32,193,224,248,7,248,17, + 17,51,18,0,0,248,15,128,124,7,0,62,2,0,63,2, + 0,63,130,0,47,194,0,39,226,0,35,226,0,33,242,0, + 32,250,0,32,126,0,32,62,0,32,30,0,32,30,0,32, + 14,0,96,6,0,248,2,0,16,17,34,19,1,0,7,224, + 28,56,56,28,120,30,112,14,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,112,14,120,30,56,28,28,56,7,224, + 14,17,34,15,0,0,255,224,60,120,60,60,60,60,60,60, + 60,60,60,60,60,120,63,224,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,255,0,17,22,66,19,1,251,7,224, + 0,28,56,0,56,28,0,120,30,0,112,14,0,240,15,0, + 240,15,0,240,15,0,240,15,0,240,15,0,240,15,0,240, + 15,0,240,14,0,120,30,0,120,28,0,60,56,0,31,224, + 0,7,192,0,1,224,0,1,240,0,0,252,0,0,63,128, + 16,17,34,18,1,0,255,224,60,120,60,56,60,60,60,60, + 60,60,60,56,60,112,63,192,61,224,60,240,60,240,60,120, + 60,124,60,60,60,30,255,31,12,17,34,14,1,0,63,160, + 113,224,224,224,224,96,224,32,248,0,126,0,127,128,63,192, + 15,224,7,224,129,240,128,240,192,240,224,224,249,224,191,128, + 14,17,34,16,1,0,255,252,231,156,199,140,135,132,135,132, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,31,224,17,17,51,18,0,0,255,15, + 128,126,7,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,6,0,30,4,0,31,12,0,7,248, + 0,17,17,51,18,0,0,255,31,128,60,6,0,60,4,0, + 30,4,0,30,12,0,15,8,0,15,24,0,15,24,0,7, + 144,0,7,176,0,3,224,0,3,224,0,3,224,0,1,192, + 0,1,192,0,0,128,0,0,128,0,24,17,51,25,0,0, + 255,127,159,60,30,6,60,30,4,30,15,12,30,31,8,30, + 31,24,15,23,152,15,55,144,15,39,176,7,227,176,7,195, + 224,7,195,224,3,193,224,3,129,192,3,129,192,1,0,128, + 1,0,128,16,17,34,18,1,0,255,63,62,12,30,8,31, + 24,15,48,15,160,7,224,3,192,3,224,3,224,3,240,6, + 240,12,120,8,124,24,60,56,62,252,255,18,17,51,18,0, + 0,255,143,192,62,3,0,30,2,0,15,6,0,15,12,0, + 7,140,0,7,152,0,3,208,0,3,240,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,7,248,0,14,17,34,17,1,0,255,248,224,248,193,240, + 193,240,131,224,3,192,7,192,7,128,15,128,15,0,30,0, + 62,4,60,4,124,12,120,28,248,60,255,248,5,21,21,8, + 1,252,248,224,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,224,248,7,17,17,7,0,0,192,192,64, + 96,96,32,48,48,16,24,24,8,12,12,4,6,6,5,21, + 21,8,1,252,248,56,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,56,248,8,10,10,15,3,7,24, + 24,60,36,102,102,102,195,195,129,12,2,4,12,0,251,255, + 240,255,240,5,4,4,8,1,13,224,112,48,24,10,12,24, + 12,1,0,62,0,119,0,227,128,227,128,67,128,15,128,115, + 128,227,128,227,128,231,128,255,192,113,128,11,17,34,13,1, + 0,240,0,112,0,112,0,112,0,112,0,119,0,127,192,113, + 192,112,224,112,224,112,224,112,224,112,224,112,224,113,192,123, + 192,103,0,9,12,24,11,1,0,30,0,115,0,115,128,227, + 128,225,0,224,0,224,0,224,0,240,0,120,128,127,0,30, + 0,12,17,34,14,1,0,1,224,0,224,0,224,0,224,0, + 224,30,224,127,224,113,224,224,224,224,224,224,224,224,224,224, + 224,240,224,113,224,126,224,28,112,9,12,24,11,1,0,30, + 0,115,0,115,128,227,128,227,128,255,128,224,0,224,0,240, + 0,120,128,127,0,30,0,8,17,17,8,1,0,30,51,115, + 112,112,252,112,112,112,112,112,112,112,112,112,112,248,10,17, + 34,12,1,251,62,192,119,192,227,128,227,128,227,128,227,128, + 115,0,62,0,96,0,224,0,255,128,255,192,127,192,193,192, + 192,192,225,128,127,0,12,17,34,14,1,0,240,0,112,0, + 112,0,112,0,112,0,115,192,127,224,120,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,5,17, + 17,7,1,0,112,112,112,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,7,22,22,8,255,251,14,14,14,0,0, + 30,14,14,14,14,14,14,14,14,14,14,14,14,206,206,204, + 120,13,17,34,15,1,0,240,0,112,0,112,0,112,0,112, + 0,115,240,112,192,113,128,115,0,118,0,126,0,127,0,119, + 128,115,192,113,224,112,240,251,248,5,17,17,7,1,0,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,248, + 19,12,36,21,1,0,243,199,128,119,223,192,120,241,192,112, + 225,192,112,225,192,112,225,192,112,225,192,112,225,192,112,225, + 192,112,225,192,112,225,192,249,243,224,12,12,24,14,1,0, + 243,192,119,224,120,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,249,240,11,12,24,13,1,0,31,0, + 113,192,113,192,224,224,224,224,224,224,224,224,224,224,224,224, + 113,192,113,192,31,0,12,17,34,14,1,251,227,192,119,224, + 120,224,112,112,112,112,112,112,112,112,112,112,112,112,120,224, + 119,224,115,128,112,0,112,0,112,0,112,0,252,0,12,17, + 34,14,1,251,14,96,63,224,113,224,112,224,224,224,224,224, + 224,224,224,224,224,224,113,224,126,224,28,224,0,224,0,224, + 0,224,0,224,1,240,9,12,24,11,1,0,239,0,127,128, + 115,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,248,0,8,12,12,10,1,0,62,102,226,224,248,124, + 62,31,135,135,198,252,8,16,16,8,0,0,8,24,56,120, + 255,56,56,56,56,56,56,56,56,57,62,28,12,12,24,14, + 1,0,241,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,113,224,126,240,60,224,12,12,24,12,0,0, + 252,240,112,96,120,64,56,192,56,128,28,128,29,128,31,0, + 15,0,15,0,6,0,6,0,17,12,36,18,0,0,253,247, + 128,120,227,0,56,227,0,56,226,0,60,230,0,29,118,0, + 29,116,0,31,60,0,14,56,0,14,56,0,4,16,0,4, + 16,0,12,12,24,12,0,0,252,240,120,96,60,192,29,128, + 31,0,15,0,15,0,31,128,27,192,49,192,97,224,243,240, + 12,17,34,12,0,251,253,240,120,96,56,64,56,192,60,128, + 28,128,29,128,31,0,15,0,15,0,6,0,6,0,6,0, + 100,0,236,0,248,0,112,0,9,12,24,11,1,0,255,128, + 199,0,143,0,142,0,30,0,28,0,60,0,56,0,120,128, + 113,128,241,128,255,128,7,21,21,10,1,252,14,24,48,48, + 48,48,48,48,48,96,192,96,48,48,48,48,48,48,48,24, + 14,2,22,22,6,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,7,21,21, + 10,1,252,224,48,24,24,24,24,24,24,24,12,6,12,24, + 24,24,24,24,24,24,48,224,12,6,12,13,0,6,24,0, + 126,16,255,16,143,240,135,224,1,128,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,6,0, + 1,4,17,17,8,2,251,96,240,240,96,0,0,96,96,96, + 96,96,240,240,240,240,240,96,10,18,36,13,1,253,0,128, + 1,128,1,0,31,128,115,192,115,192,230,128,228,0,228,0, + 236,0,232,0,248,0,120,128,127,128,62,0,48,0,96,0, + 96,0,11,17,34,13,0,0,15,192,30,96,60,224,60,224, + 60,64,28,0,28,0,255,128,255,128,28,0,28,0,28,0, + 12,32,124,96,207,224,255,224,115,192,11,12,24,13,0,3, + 192,96,238,224,127,192,59,128,113,192,96,192,96,192,113,192, + 59,128,127,192,238,224,192,96,14,17,34,13,0,0,254,124, + 56,48,60,32,28,96,30,64,14,192,15,128,7,128,7,0, + 31,192,7,0,31,192,7,0,7,0,7,0,7,0,31,192, + 2,22,22,6,2,251,192,192,192,192,192,192,192,192,192,0, + 0,0,0,192,192,192,192,192,192,192,192,192,7,20,20,11, + 2,253,60,110,206,198,224,112,120,92,142,134,194,226,116,60, + 28,14,198,230,236,120,6,2,2,8,1,14,204,204,17,17, + 51,19,1,0,3,224,0,15,248,0,60,30,0,48,6,0, + 97,243,0,99,51,0,198,17,128,198,1,128,198,1,128,198, + 1,128,198,1,128,99,51,0,97,227,0,48,6,0,60,30, + 0,15,248,0,3,224,0,7,10,10,8,0,7,120,220,12, + 124,236,204,126,0,254,254,11,10,20,13,1,1,12,96,24, + 192,49,128,115,128,231,0,231,0,115,128,49,128,24,192,12, + 96,11,7,14,15,2,2,255,224,255,224,0,96,0,96,0, + 96,0,96,0,96,6,3,3,8,1,5,252,252,252,17,17, + 51,19,1,0,3,224,0,15,248,0,60,30,0,48,6,0, + 103,227,0,99,51,0,195,49,128,195,49,128,195,225,128,195, + 97,128,195,49,128,99,51,0,103,187,0,48,6,0,60,30, + 0,15,248,0,3,224,0,6,1,1,8,1,14,252,8,7, + 7,9,0,10,60,102,195,195,195,102,60,12,13,26,14,1, + 0,6,0,6,0,6,0,6,0,255,240,255,240,6,0,6, + 0,6,0,6,0,0,0,255,240,255,240,6,10,10,7,0, + 7,56,124,140,12,24,16,32,64,252,252,6,10,10,7,0, + 7,56,124,140,12,56,28,12,140,248,112,5,4,4,8,2, + 13,56,112,96,192,12,17,34,14,1,251,241,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,113,224,126, + 240,108,224,96,0,96,0,224,0,240,0,96,0,11,22,44, + 14,1,251,31,224,127,224,126,64,254,64,254,64,254,64,254, + 64,254,64,254,64,126,64,126,64,30,64,2,64,2,64,2, + 64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,3, + 3,3,6,1,6,224,224,224,6,6,6,8,1,250,16,48, + 56,12,140,120,6,10,10,7,0,7,48,240,48,48,48,48, + 48,48,48,252,7,10,10,8,0,7,56,108,198,198,198,108, + 56,0,254,254,11,10,20,13,1,1,198,0,99,0,49,128, + 57,192,28,224,28,224,57,192,51,128,99,0,198,0,17,17, + 51,18,0,0,48,4,0,240,12,0,48,24,0,48,24,0, + 48,48,0,48,32,0,48,96,0,48,66,0,48,198,0,252, + 142,0,1,142,0,1,22,0,3,54,0,6,38,0,6,127, + 128,12,6,0,8,6,0,17,17,51,18,0,0,48,4,0, + 240,12,0,48,24,0,48,24,0,48,48,0,48,32,0,48, + 96,0,48,71,0,48,207,128,252,145,128,1,129,128,1,3, + 0,3,2,0,6,4,0,6,8,0,12,31,128,8,31,128, + 17,17,51,18,1,0,56,4,0,124,12,0,140,24,0,12, + 24,0,56,48,0,28,32,0,12,96,0,140,66,0,248,198, + 0,113,14,0,3,14,0,2,22,0,6,54,0,12,38,0, + 12,127,128,24,6,0,16,6,0,9,17,34,12,1,251,12, + 0,30,0,30,0,12,0,0,0,0,0,12,0,12,0,28, + 0,56,0,120,0,240,0,241,0,243,128,243,128,123,0,62, + 0,17,22,66,18,0,0,3,128,0,1,192,0,0,192,0, + 0,96,0,0,0,0,1,128,0,1,192,0,3,192,0,3, + 224,0,3,224,0,6,224,0,6,240,0,4,112,0,12,112, + 0,8,120,0,8,56,0,31,248,0,16,60,0,48,60,0, + 48,30,0,112,30,0,248,127,128,17,22,66,18,0,0,0, + 224,0,1,192,0,1,128,0,3,0,0,0,0,0,1,128, + 0,1,192,0,3,192,0,3,224,0,3,224,0,6,224,0, + 6,240,0,4,112,0,12,112,0,8,120,0,8,56,0,31, + 248,0,16,60,0,48,60,0,48,30,0,112,30,0,248,127, + 128,17,22,66,18,0,0,1,128,0,3,192,0,6,96,0, + 0,0,0,0,0,0,1,128,0,1,192,0,3,192,0,3, + 224,0,3,224,0,6,224,0,6,240,0,4,112,0,12,112, + 0,8,120,0,8,56,0,31,248,0,16,60,0,48,60,0, + 48,30,0,112,30,0,248,127,128,17,21,63,18,0,0,3, + 16,0,7,224,0,8,192,0,0,0,0,1,128,0,1,192, + 0,3,192,0,3,224,0,3,224,0,6,224,0,6,240,0, + 4,112,0,12,112,0,8,120,0,8,56,0,31,248,0,16, + 60,0,48,60,0,48,30,0,112,30,0,248,127,128,17,21, + 63,18,0,0,6,96,0,6,96,0,0,0,0,0,0,0, + 1,128,0,1,192,0,3,192,0,3,224,0,3,224,0,6, + 224,0,6,240,0,4,112,0,12,112,0,8,120,0,8,56, + 0,31,248,0,16,60,0,48,60,0,48,30,0,112,30,0, + 248,127,128,17,23,69,18,0,0,1,128,0,3,192,0,6, + 96,0,6,96,0,3,192,0,1,128,0,1,128,0,1,192, + 0,3,192,0,3,224,0,3,224,0,6,224,0,6,240,0, + 4,112,0,12,112,0,8,120,0,8,56,0,31,248,0,16, + 60,0,48,60,0,48,30,0,112,30,0,248,127,128,23,17, + 51,25,0,0,1,255,252,0,124,28,0,252,12,0,188,4, + 1,188,4,1,60,32,3,60,32,2,60,96,6,63,224,7, + 252,96,12,60,32,8,60,32,24,60,2,16,60,2,48,60, + 6,112,60,14,248,255,254,15,23,46,18,1,250,3,242,30, + 62,60,14,120,6,120,2,240,2,240,0,240,0,240,0,240, + 0,240,0,240,0,120,0,120,2,60,14,31,60,7,240,1, + 0,3,0,3,128,0,192,8,192,7,128,15,22,44,17,1, + 0,7,0,3,128,1,128,0,192,0,0,255,252,60,28,60, + 12,60,4,60,4,60,32,60,32,60,96,63,224,60,96,60, + 32,60,32,60,2,60,2,60,6,60,14,255,254,15,22,44, + 17,1,0,1,192,3,128,3,0,6,0,0,0,255,252,60, + 28,60,12,60,4,60,4,60,32,60,32,60,96,63,224,60, + 96,60,32,60,32,60,2,60,2,60,6,60,14,255,254,15, + 22,44,17,1,0,3,0,7,128,12,192,0,0,0,0,255, + 252,60,28,60,12,60,4,60,4,60,32,60,32,60,96,63, + 224,60,96,60,32,60,32,60,2,60,2,60,6,60,14,255, + 254,15,21,42,17,1,0,12,192,12,192,0,0,0,0,255, + 252,60,28,60,12,60,4,60,4,60,32,60,32,60,96,63, + 224,60,96,60,32,60,32,60,2,60,2,60,6,60,14,255, + 254,8,22,22,10,0,0,112,56,24,12,0,255,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,8,22,22, + 10,0,0,14,28,24,48,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,8,22,22,10,0,0,24, + 60,102,0,0,255,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,255,8,21,21,10,0,0,102,102,0,0,255, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,255, + 16,17,34,18,1,0,255,224,60,120,60,60,60,30,60,30, + 60,15,60,15,255,143,255,143,60,15,60,15,60,14,60,30, + 60,28,60,60,60,120,255,224,17,22,66,18,0,0,1,136, + 0,3,240,0,4,96,0,0,0,0,0,0,0,248,15,128, + 124,7,0,62,2,0,63,2,0,63,130,0,47,194,0,39, + 226,0,35,226,0,33,242,0,32,250,0,32,126,0,32,62, + 0,32,30,0,32,14,0,32,14,0,96,6,0,248,2,0, + 16,22,44,19,1,0,7,0,3,128,1,128,0,192,0,0, + 7,224,30,120,60,60,120,30,120,30,240,15,240,15,240,15, + 240,15,240,15,240,15,240,15,120,30,120,30,60,60,30,120, + 7,224,16,22,44,19,1,0,0,112,0,224,0,192,1,128, + 0,0,7,224,30,120,60,60,120,30,120,30,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,120,30,120,30,60,60, + 30,120,7,224,16,22,44,19,1,0,1,128,3,192,6,96, + 0,0,0,0,7,224,30,120,60,60,120,30,120,30,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,120,30,120,30, + 60,60,30,120,7,224,16,22,44,19,1,0,3,16,7,224, + 8,192,0,0,0,0,7,224,30,120,60,60,120,30,120,30, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,120,30, + 120,30,60,60,30,120,7,224,16,21,42,19,1,0,12,96, + 12,96,0,0,0,0,7,224,30,120,60,60,120,30,120,30, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,120,30, + 120,30,60,60,30,120,7,224,12,12,24,14,1,0,192,48, + 224,112,112,224,57,192,31,128,15,0,15,0,31,128,57,192, + 112,224,224,112,192,48,16,19,38,19,1,255,0,4,7,236, + 30,120,56,28,120,62,120,62,240,111,240,207,240,207,241,143, + 243,15,243,15,246,15,124,30,124,30,56,28,62,120,55,224, + 96,0,17,22,66,18,0,0,3,128,0,1,192,0,0,192, + 0,0,96,0,0,0,0,255,15,128,62,6,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,2,0,60,2,0,60,2,0,60,6, + 0,30,4,0,31,28,0,7,248,0,17,22,66,18,0,0, + 0,56,0,0,112,0,0,96,0,0,192,0,0,0,0,255, + 15,128,62,6,0,60,2,0,60,2,0,60,2,0,60,2, + 0,60,2,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,6,0,30,4,0,31,28,0,7, + 248,0,17,22,66,18,0,0,0,96,0,0,240,0,1,152, + 0,0,0,0,0,0,0,255,15,128,62,6,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,2,0,60,2,0,60,2,0,60,6, + 0,30,4,0,31,28,0,7,248,0,17,21,63,18,0,0, + 3,24,0,3,24,0,0,0,0,0,0,0,255,15,128,62, + 6,0,60,2,0,60,2,0,60,2,0,60,2,0,60,2, + 0,60,2,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,6,0,30,4,0,31,28,0,7,248,0,18, + 23,69,18,0,0,0,14,0,0,28,0,0,24,0,0,48, + 0,0,0,0,0,0,0,255,143,192,62,3,0,30,2,0, + 15,6,0,15,12,0,7,140,0,7,152,0,3,208,0,3, + 240,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,7,248,0,14,17,34,15,0,0, + 255,0,60,0,60,0,60,0,63,224,60,120,60,60,60,60, + 60,60,60,60,60,60,60,120,63,224,60,0,60,0,60,0, + 255,0,11,17,34,14,1,0,31,0,57,128,113,192,113,192, + 113,192,113,192,115,128,119,0,115,128,113,192,112,224,112,224, + 112,224,112,224,112,224,112,192,243,128,10,17,34,12,1,0, + 56,0,28,0,12,0,6,0,0,0,62,0,119,0,227,128, + 227,128,67,128,15,128,115,128,227,128,227,128,231,128,255,192, + 113,128,10,17,34,12,1,0,14,0,28,0,24,0,48,0, + 0,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,10,17,34,12,1,0, + 12,0,30,0,51,0,0,0,0,0,62,0,119,0,227,128, + 227,128,67,128,15,128,115,128,227,128,227,128,231,128,255,192, + 113,128,10,17,34,12,1,0,24,128,63,0,70,0,0,0, + 0,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,10,16,32,12,1,0, + 51,0,51,0,0,0,0,0,62,0,119,0,227,128,227,128, + 67,128,15,128,115,128,227,128,227,128,231,128,255,192,113,128, + 10,18,36,12,1,0,12,0,30,0,51,0,51,0,30,0, + 12,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,15,12,24,17,1,0, + 62,120,119,204,227,206,99,142,3,142,31,254,115,128,227,128, + 227,192,231,226,254,252,124,120,9,18,36,11,1,250,30,0, + 115,0,115,128,227,128,225,0,224,0,224,0,224,0,240,0, + 120,128,127,0,30,0,8,0,24,0,28,0,6,0,70,0, + 60,0,9,17,34,11,1,0,56,0,28,0,12,0,6,0, + 0,0,30,0,115,0,115,128,227,128,227,128,255,128,224,0, + 224,0,240,0,120,128,127,0,30,0,9,17,34,11,1,0, + 14,0,28,0,24,0,48,0,0,0,30,0,115,0,115,128, + 227,128,227,128,255,128,224,0,224,0,240,0,120,128,127,0, + 30,0,9,17,34,11,1,0,24,0,60,0,102,0,0,0, + 0,0,30,0,115,0,115,128,227,128,227,128,255,128,224,0, + 224,0,240,0,120,128,127,0,30,0,9,16,32,11,1,0, + 51,0,51,0,0,0,0,0,30,0,115,0,115,128,227,128, + 227,128,255,128,224,0,224,0,240,0,120,128,127,0,30,0, + 5,17,17,7,1,0,224,112,48,24,0,240,112,112,112,112, + 112,112,112,112,112,112,248,6,17,17,7,1,0,28,56,48, + 96,0,240,112,112,112,112,112,112,112,112,112,112,248,6,17, + 17,7,1,0,48,120,204,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,6,16,16,7,1,0,204,204,0,0,240, + 112,112,112,112,112,112,112,112,112,112,248,11,17,34,13,1, + 0,96,0,56,192,15,0,30,0,99,0,31,128,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,12,17,34,14,1,0,12,64,31,128,35,0,0, + 0,0,0,243,192,119,224,120,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,249,240,11,17,34,13,1, + 0,28,0,14,0,6,0,3,0,0,0,31,0,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,11,17,34,13,1,0,3,128,7,0,6,0,12, + 0,0,0,31,0,123,192,113,192,224,224,224,224,224,224,224, + 224,224,224,224,224,113,192,123,192,31,0,11,17,34,13,1, + 0,12,0,30,0,51,0,0,0,0,0,31,0,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,11,17,34,13,1,0,24,128,63,0,70,0,0, + 0,0,0,31,0,123,192,113,192,224,224,224,224,224,224,224, + 224,224,224,224,224,113,192,123,192,31,0,11,16,32,13,1, + 0,49,128,49,128,0,0,0,0,31,0,123,192,113,192,224, + 224,224,224,224,224,224,224,224,224,224,224,113,192,123,192,31, + 0,12,12,24,14,1,0,6,0,6,0,6,0,0,0,0, + 0,255,240,255,240,0,0,0,0,6,0,6,0,6,0,11, + 16,32,13,1,254,0,64,0,64,30,128,121,192,113,192,226, + 224,226,224,228,224,228,224,232,224,232,224,113,192,123,192,63, + 0,64,0,64,0,12,17,34,14,1,0,28,0,14,0,6, + 0,3,0,0,0,241,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,113,224,126,240,60,224,12,17,34, + 14,1,0,7,0,14,0,12,0,24,0,0,0,241,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,113, + 224,126,240,60,224,12,17,34,14,1,0,6,0,15,0,25, + 128,0,0,0,0,241,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,113,224,126,240,60,224,12,16,32, + 14,1,0,25,128,25,128,0,0,0,0,241,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,113,224,126, + 240,60,224,12,22,44,12,0,251,1,192,3,128,3,0,6, + 0,0,0,253,240,120,96,56,64,56,192,60,128,28,128,29, + 128,31,0,15,0,15,0,6,0,6,0,6,0,100,0,236, + 0,248,0,112,0,12,22,44,14,1,251,240,0,112,0,112, + 0,112,0,112,0,115,128,119,224,124,224,120,112,112,112,112, + 112,112,112,112,112,112,112,120,224,119,224,115,128,112,0,112, + 0,112,0,112,0,252,0,12,21,42,12,0,251,25,128,25, + 128,0,0,0,0,253,240,120,96,56,64,56,192,60,128,28, + 128,29,128,31,0,15,0,15,0,6,0,6,0,6,0,100, + 0,236,0,248,0,112,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--25-180-100-100-P-132-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=24 h=22 x= 3 y=13 dx=25 dy= 0 ascent=18 len=66 + Font Bounding box w=27 h=38 x=-2 y=-10 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB18r[3355] U8G_SECTION(".progmem.u8g_font_timB18r") = { + 0,27,38,254,246,17,4,47,9,109,32,127,251,18,251,17, + 251,0,0,0,6,0,1,4,17,17,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,0,0,96,240,240,96,8,8, + 8,12,2,9,231,231,231,231,231,231,66,66,12,17,34,13, + 0,0,12,192,12,192,12,192,12,192,127,240,127,240,25,128, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,10,20,40,12,1,254,8,0,8,0,63,0, + 107,128,233,128,233,128,248,128,124,0,126,0,63,0,31,128, + 15,128,11,192,137,192,201,192,201,128,235,128,62,0,8,0, + 8,0,17,17,51,19,1,0,30,12,0,59,252,0,113,24, + 0,225,48,0,226,48,0,226,96,0,244,96,0,120,192,0, + 0,192,0,1,143,0,1,157,128,3,56,128,3,112,128,6, + 113,0,6,113,0,12,122,0,12,60,0,17,17,51,21,1, + 0,3,224,0,6,112,0,14,48,0,14,48,0,14,112,0, + 7,224,0,15,15,128,31,135,0,51,194,0,97,230,0,225, + 252,0,224,248,0,224,120,0,240,124,0,248,255,128,127,159, + 0,63,14,0,3,8,8,7,2,9,224,224,224,224,224,224, + 64,64,5,21,21,8,1,252,8,24,48,48,112,96,96,224, + 224,224,224,224,224,224,96,96,112,48,48,24,8,5,21,21, + 8,1,252,128,192,96,96,48,48,48,56,56,56,56,56,56, + 56,48,48,48,96,96,192,128,10,11,22,13,1,6,12,0, + 12,0,76,128,237,192,127,128,30,0,127,128,237,192,76,128, + 12,0,12,0,12,12,24,14,1,0,6,0,6,0,6,0, + 6,0,6,0,255,240,255,240,6,0,6,0,6,0,6,0, + 6,0,4,9,9,6,1,251,96,240,240,112,48,96,96,192, + 128,6,3,3,8,1,5,252,252,252,4,4,4,6,1,0, + 96,240,240,96,7,17,17,7,0,0,6,6,4,12,12,8, + 24,24,16,48,48,32,96,96,64,192,192,11,17,34,12,0, + 0,14,0,59,128,49,128,113,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,224,113,192,113,192,113,192,49,128,59, + 128,14,0,9,17,34,12,2,0,12,0,60,0,252,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,62,0,255,128,10,17,34,12,1, + 0,30,0,63,0,127,128,199,128,131,128,3,128,3,128,3, + 0,7,0,6,0,12,0,12,0,24,64,48,64,127,192,255, + 192,255,128,11,17,34,12,0,0,15,0,63,128,99,192,65, + 192,1,192,3,128,7,0,31,0,7,192,1,224,1,224,0, + 224,0,224,96,224,241,192,251,128,126,0,11,17,34,12,0, + 0,1,128,3,128,7,128,7,128,15,128,27,128,51,128,51, + 128,99,128,195,128,255,224,255,224,255,224,3,128,3,128,3, + 128,3,128,11,17,34,12,0,0,31,224,31,192,63,192,48, + 0,32,0,112,0,127,0,127,128,127,192,7,192,1,192,0, + 192,0,192,96,192,241,128,251,128,126,0,11,17,34,12,1, + 0,1,224,7,128,30,0,60,0,56,0,120,0,119,0,123, + 128,241,192,241,224,241,224,241,224,241,224,113,192,113,192,59, + 128,30,0,11,17,34,12,0,0,63,224,127,224,127,192,192, + 192,129,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,14,0,14,0,12,0,28,0,28,0,11,17,34,12,0, + 0,31,0,59,128,113,192,113,192,113,192,121,128,59,0,63, + 0,31,128,55,192,99,192,225,224,225,224,225,224,241,192,123, + 128,62,0,11,17,34,12,0,0,14,0,59,128,113,192,113, + 192,241,224,241,224,241,224,241,224,113,224,59,192,31,192,3, + 192,3,128,7,128,15,0,60,0,240,0,4,12,12,8,2, + 0,96,240,240,96,0,0,0,0,96,240,240,96,4,17,17, + 8,2,251,96,240,240,96,0,0,0,0,96,240,240,112,48, + 96,96,192,128,11,12,24,14,1,0,0,96,1,224,7,192, + 31,0,60,0,224,0,224,0,60,0,31,0,7,192,1,224, + 0,96,11,6,12,14,1,3,255,224,255,224,0,0,0,0, + 255,224,255,224,11,12,24,14,1,0,192,0,240,0,124,0, + 31,0,7,128,0,224,0,224,7,128,31,0,124,0,240,0, + 192,0,9,17,34,12,1,0,62,0,111,0,231,128,231,128, + 71,128,7,128,15,0,14,0,28,0,24,0,24,0,0,0, + 0,0,24,0,60,0,60,0,24,0,20,21,63,23,1,252, + 0,124,0,3,247,128,15,128,192,30,0,96,60,0,32,56, + 59,48,112,255,16,113,231,16,241,199,16,227,198,16,227,142, + 16,227,142,48,227,142,32,243,158,96,241,254,192,112,243,128, + 120,0,0,56,0,0,30,0,0,7,131,0,1,252,0,17, + 17,51,18,0,0,1,128,0,1,192,0,3,192,0,3,224, + 0,3,224,0,6,224,0,6,240,0,4,112,0,12,112,0, + 8,120,0,8,56,0,31,248,0,16,60,0,48,60,0,48, + 30,0,112,30,0,248,127,128,14,17,34,16,0,0,255,192, + 60,240,60,120,60,120,60,120,60,120,60,112,60,192,63,224, + 60,120,60,60,60,60,60,60,60,60,60,56,60,120,255,224, + 15,17,34,18,1,0,3,242,30,62,60,14,120,6,120,2, + 240,2,240,0,240,0,240,0,240,0,240,0,240,0,120,0, + 120,2,60,14,31,60,7,240,16,17,34,18,1,0,255,224, + 60,120,60,60,60,30,60,30,60,15,60,15,60,15,60,15, + 60,15,60,15,60,14,60,30,60,28,60,60,60,120,255,224, + 15,17,34,17,1,0,255,252,60,28,60,12,60,4,60,4, + 60,32,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,6,60,14,255,254,14,17,34,15,0,0,255,252, + 60,28,60,12,60,4,60,4,60,32,60,32,60,96,63,224, + 60,96,60,32,60,32,60,0,60,0,60,0,60,0,255,0, + 17,17,51,19,1,0,3,242,0,30,62,0,60,14,0,120, + 6,0,120,2,0,240,2,0,240,0,0,240,0,0,240,0, + 0,240,127,128,240,30,0,240,30,0,120,30,0,120,30,0, + 56,30,0,30,30,0,7,248,0,18,17,51,19,0,0,255, + 63,192,60,15,0,60,15,0,60,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,63,255,0,60,15,0,60,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,255, + 63,192,8,17,17,10,0,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,11,19,38,12,0,254,31, + 224,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,231,128,231,128,231, + 0,231,0,60,0,18,17,51,19,0,0,255,63,128,60,30, + 0,60,24,0,60,48,0,60,96,0,60,192,0,61,128,0, + 63,192,0,63,192,0,61,224,0,60,240,0,60,248,0,60, + 124,0,60,62,0,60,31,0,60,15,128,255,31,192,15,17, + 34,16,0,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,6, + 60,12,60,28,255,252,21,17,51,24,1,0,252,1,248,60, + 3,224,62,3,224,62,7,224,47,5,224,47,13,224,39,9, + 224,39,137,224,39,153,224,35,145,224,35,241,224,35,241,224, + 33,225,224,33,225,224,32,193,224,32,193,224,248,7,248,17, + 17,51,18,0,0,248,15,128,124,7,0,62,2,0,63,2, + 0,63,130,0,47,194,0,39,226,0,35,226,0,33,242,0, + 32,250,0,32,126,0,32,62,0,32,30,0,32,30,0,32, + 14,0,96,6,0,248,2,0,16,17,34,19,1,0,7,224, + 28,56,56,28,120,30,112,14,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,112,14,120,30,56,28,28,56,7,224, + 14,17,34,15,0,0,255,224,60,120,60,60,60,60,60,60, + 60,60,60,60,60,120,63,224,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,255,0,17,22,66,19,1,251,7,224, + 0,28,56,0,56,28,0,120,30,0,112,14,0,240,15,0, + 240,15,0,240,15,0,240,15,0,240,15,0,240,15,0,240, + 15,0,240,14,0,120,30,0,120,28,0,60,56,0,31,224, + 0,7,192,0,1,224,0,1,240,0,0,252,0,0,63,128, + 16,17,34,18,1,0,255,224,60,120,60,56,60,60,60,60, + 60,60,60,56,60,112,63,192,61,224,60,240,60,240,60,120, + 60,124,60,60,60,30,255,31,12,17,34,14,1,0,63,160, + 113,224,224,224,224,96,224,32,248,0,126,0,127,128,63,192, + 15,224,7,224,129,240,128,240,192,240,224,224,249,224,191,128, + 14,17,34,16,1,0,255,252,231,156,199,140,135,132,135,132, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,31,224,17,17,51,18,0,0,255,15, + 128,126,7,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,6,0,30,4,0,31,12,0,7,248, + 0,17,17,51,18,0,0,255,31,128,60,6,0,60,4,0, + 30,4,0,30,12,0,15,8,0,15,24,0,15,24,0,7, + 144,0,7,176,0,3,224,0,3,224,0,3,224,0,1,192, + 0,1,192,0,0,128,0,0,128,0,24,17,51,25,0,0, + 255,127,159,60,30,6,60,30,4,30,15,12,30,31,8,30, + 31,24,15,23,152,15,55,144,15,39,176,7,227,176,7,195, + 224,7,195,224,3,193,224,3,129,192,3,129,192,1,0,128, + 1,0,128,16,17,34,18,1,0,255,63,62,12,30,8,31, + 24,15,48,15,160,7,224,3,192,3,224,3,224,3,240,6, + 240,12,120,8,124,24,60,56,62,252,255,18,17,51,18,0, + 0,255,143,192,62,3,0,30,2,0,15,6,0,15,12,0, + 7,140,0,7,152,0,3,208,0,3,240,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,7,248,0,14,17,34,17,1,0,255,248,224,248,193,240, + 193,240,131,224,3,192,7,192,7,128,15,128,15,0,30,0, + 62,4,60,4,124,12,120,28,248,60,255,248,5,21,21,8, + 1,252,248,224,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,224,248,7,17,17,7,0,0,192,192,64, + 96,96,32,48,48,16,24,24,8,12,12,4,6,6,5,21, + 21,8,1,252,248,56,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,56,248,8,10,10,15,3,7,24, + 24,60,36,102,102,102,195,195,129,12,2,4,12,0,251,255, + 240,255,240,5,4,4,8,1,13,224,112,48,24,10,12,24, + 12,1,0,62,0,119,0,227,128,227,128,67,128,15,128,115, + 128,227,128,227,128,231,128,255,192,113,128,11,17,34,13,1, + 0,240,0,112,0,112,0,112,0,112,0,119,0,127,192,113, + 192,112,224,112,224,112,224,112,224,112,224,112,224,113,192,123, + 192,103,0,9,12,24,11,1,0,30,0,115,0,115,128,227, + 128,225,0,224,0,224,0,224,0,240,0,120,128,127,0,30, + 0,12,17,34,14,1,0,1,224,0,224,0,224,0,224,0, + 224,30,224,127,224,113,224,224,224,224,224,224,224,224,224,224, + 224,240,224,113,224,126,224,28,112,9,12,24,11,1,0,30, + 0,115,0,115,128,227,128,227,128,255,128,224,0,224,0,240, + 0,120,128,127,0,30,0,8,17,17,8,1,0,30,51,115, + 112,112,252,112,112,112,112,112,112,112,112,112,112,248,10,17, + 34,12,1,251,62,192,119,192,227,128,227,128,227,128,227,128, + 115,0,62,0,96,0,224,0,255,128,255,192,127,192,193,192, + 192,192,225,128,127,0,12,17,34,14,1,0,240,0,112,0, + 112,0,112,0,112,0,115,192,127,224,120,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,5,17, + 17,7,1,0,112,112,112,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,7,22,22,8,255,251,14,14,14,0,0, + 30,14,14,14,14,14,14,14,14,14,14,14,14,206,206,204, + 120,13,17,34,15,1,0,240,0,112,0,112,0,112,0,112, + 0,115,240,112,192,113,128,115,0,118,0,126,0,127,0,119, + 128,115,192,113,224,112,240,251,248,5,17,17,7,1,0,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,248, + 19,12,36,21,1,0,243,199,128,119,223,192,120,241,192,112, + 225,192,112,225,192,112,225,192,112,225,192,112,225,192,112,225, + 192,112,225,192,112,225,192,249,243,224,12,12,24,14,1,0, + 243,192,119,224,120,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,249,240,11,12,24,13,1,0,31,0, + 113,192,113,192,224,224,224,224,224,224,224,224,224,224,224,224, + 113,192,113,192,31,0,12,17,34,14,1,251,227,192,119,224, + 120,224,112,112,112,112,112,112,112,112,112,112,112,112,120,224, + 119,224,115,128,112,0,112,0,112,0,112,0,252,0,12,17, + 34,14,1,251,14,96,63,224,113,224,112,224,224,224,224,224, + 224,224,224,224,224,224,113,224,126,224,28,224,0,224,0,224, + 0,224,0,224,1,240,9,12,24,11,1,0,239,0,127,128, + 115,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,248,0,8,12,12,10,1,0,62,102,226,224,248,124, + 62,31,135,135,198,252,8,16,16,8,0,0,8,24,56,120, + 255,56,56,56,56,56,56,56,56,57,62,28,12,12,24,14, + 1,0,241,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,113,224,126,240,60,224,12,12,24,12,0,0, + 252,240,112,96,120,64,56,192,56,128,28,128,29,128,31,0, + 15,0,15,0,6,0,6,0,17,12,36,18,0,0,253,247, + 128,120,227,0,56,227,0,56,226,0,60,230,0,29,118,0, + 29,116,0,31,60,0,14,56,0,14,56,0,4,16,0,4, + 16,0,12,12,24,12,0,0,252,240,120,96,60,192,29,128, + 31,0,15,0,15,0,31,128,27,192,49,192,97,224,243,240, + 12,17,34,12,0,251,253,240,120,96,56,64,56,192,60,128, + 28,128,29,128,31,0,15,0,15,0,6,0,6,0,6,0, + 100,0,236,0,248,0,112,0,9,12,24,11,1,0,255,128, + 199,0,143,0,142,0,30,0,28,0,60,0,56,0,120,128, + 113,128,241,128,255,128,7,21,21,10,1,252,14,24,48,48, + 48,48,48,48,48,96,192,96,48,48,48,48,48,48,48,24, + 14,2,22,22,6,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,7,21,21, + 10,1,252,224,48,24,24,24,24,24,24,24,12,6,12,24, + 24,24,24,24,24,24,48,224,12,6,12,13,0,6,24,0, + 126,16,255,16,143,240,135,224,1,128,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=30 x= 4 y=18 dx=33 dy= 0 ascent=30 len=108 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =30 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24[10820] U8G_SECTION(".progmem.u8g_font_timB24") = { + 0,38,49,251,244,23,5,149,13,202,32,255,249,30,249,23, + 249,0,0,0,8,0,1,5,23,23,11,3,0,112,248,248, + 248,248,248,248,112,112,112,112,32,32,32,32,0,0,0,112, + 248,248,248,112,11,11,22,19,2,12,96,192,241,224,241,224, + 241,224,241,224,241,224,241,224,96,192,96,192,96,192,96,192, + 16,23,46,17,0,0,3,12,3,12,7,28,7,28,6,24, + 6,24,127,255,127,255,14,56,12,48,12,48,12,48,12,48, + 28,112,255,254,255,254,24,96,24,96,24,96,56,224,56,224, + 48,192,48,192,15,28,56,16,1,253,3,0,3,0,15,232, + 63,248,115,56,99,24,227,8,227,8,243,0,251,0,127,0, + 127,128,63,224,15,240,3,248,3,252,3,124,131,62,131,30, + 131,30,195,28,195,60,243,120,255,224,131,0,3,0,3,0, + 3,0,24,23,69,33,4,0,7,128,32,15,192,224,30,127, + 192,60,32,192,124,33,128,120,33,128,248,99,0,240,71,0, + 240,198,0,240,206,0,241,140,60,127,24,126,60,25,243,0, + 49,225,0,51,193,0,99,193,0,231,195,0,199,130,1,199, + 134,1,135,134,3,3,140,3,3,248,6,1,224,22,23,69, + 28,2,0,1,240,0,3,188,0,7,30,0,7,14,0,15, + 14,0,15,14,0,15,140,0,7,216,0,7,240,0,3,224, + 252,7,240,112,29,240,48,57,248,96,112,252,64,240,252,192, + 240,127,128,248,63,0,248,31,128,252,31,192,254,63,228,127, + 243,252,127,193,252,31,0,120,4,11,11,9,2,12,96,240, + 240,240,240,240,240,96,96,96,96,8,29,29,11,2,250,3, + 6,12,24,24,48,48,112,96,224,224,224,224,224,224,224,224, + 224,224,224,96,112,48,48,24,24,12,6,3,8,29,29,11, + 0,250,192,96,48,24,24,12,12,14,6,7,7,7,7,7, + 7,7,7,7,7,7,6,14,12,12,24,24,48,96,192,13, + 14,28,17,1,9,3,0,7,0,7,0,231,56,242,120,122, + 240,15,128,15,128,122,240,242,120,231,56,7,0,7,0,6, + 0,15,15,30,19,2,0,3,128,3,128,3,128,3,128,3, + 128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3, + 128,3,128,3,128,6,11,11,8,1,250,56,124,124,124,60, + 12,8,24,48,96,192,8,4,4,11,1,6,255,255,255,255, + 5,5,5,8,1,0,112,248,248,248,112,9,25,50,9,0, + 0,1,128,1,128,1,0,3,0,3,0,3,0,6,0,6, + 0,6,0,4,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,48,0,96,0,96,0,96,0,192, + 0,192,0,14,23,46,16,1,0,7,128,31,224,28,224,56, + 112,120,112,120,120,120,120,248,124,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,120,120,120,120,120,120,56, + 112,28,224,15,192,7,128,13,23,46,16,2,0,1,128,7, + 128,31,128,255,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,31,192,255,248,16,23,46,16,0, + 0,3,192,15,240,31,248,63,248,48,252,96,124,64,124,0, + 124,0,120,0,120,0,120,0,240,0,224,1,192,1,128,3, + 0,7,1,14,3,28,6,63,254,127,254,255,252,255,252,14, + 23,46,16,1,0,7,192,31,240,63,240,48,248,96,120,64, + 120,0,120,0,112,0,192,3,224,15,240,15,248,3,248,0, + 252,0,124,0,60,0,60,0,60,96,56,240,56,248,112,127, + 192,31,0,14,23,46,16,1,0,0,112,0,240,0,240,1, + 240,3,240,6,240,6,240,12,240,24,240,24,240,48,240,96, + 240,96,240,192,240,255,252,255,252,255,252,255,252,0,240,0, + 240,0,240,0,240,0,240,13,23,46,16,1,0,31,248,31, + 248,31,248,31,248,48,0,48,0,32,0,62,0,127,128,127, + 224,127,240,127,240,3,248,0,248,0,120,0,56,0,56,0, + 56,96,48,240,48,248,96,127,192,31,0,14,23,46,16,1, + 0,0,28,0,240,3,192,7,128,15,0,30,0,62,0,60, + 0,124,0,127,224,253,240,248,248,248,120,248,124,248,124,248, + 124,248,124,120,124,120,120,120,120,56,112,28,224,15,192,13, + 23,46,16,2,0,127,248,127,248,255,248,255,248,192,48,128, + 112,128,112,0,96,0,224,0,224,0,192,1,192,1,192,3, + 128,3,128,3,128,7,0,7,0,7,0,14,0,14,0,14, + 0,28,0,14,23,46,16,1,0,15,224,62,240,60,120,120, + 120,120,56,120,56,124,56,126,112,63,224,63,128,31,192,15, + 224,63,240,113,248,112,252,224,124,224,60,224,60,224,60,240, + 56,120,120,127,240,31,192,14,23,46,16,1,0,15,192,28, + 224,56,112,120,120,120,120,248,120,248,124,248,124,248,124,248, + 124,120,124,124,124,62,252,31,248,0,248,0,240,1,240,1, + 224,3,192,7,128,15,0,60,0,224,0,5,16,16,11,3, + 0,112,248,248,248,112,0,0,0,0,0,0,112,248,248,248, + 112,6,22,22,11,2,250,56,124,124,124,56,0,0,0,0, + 0,0,56,124,124,124,60,12,8,24,48,96,192,16,15,30, + 19,1,0,0,3,0,15,0,127,1,252,15,224,63,128,252, + 0,240,0,252,0,63,128,15,224,1,252,0,127,0,15,0, + 3,15,10,20,19,2,3,255,254,255,254,255,254,0,0,0, + 0,0,0,0,0,255,254,255,254,255,254,16,15,30,19,2, + 0,192,0,240,0,254,0,63,128,7,240,1,252,0,63,0, + 15,0,63,1,252,7,240,63,128,254,0,240,0,192,0,12, + 23,46,16,2,0,63,0,115,192,225,224,225,240,241,240,241, + 240,97,240,1,224,1,224,3,192,3,128,3,0,6,0,4, + 0,4,0,0,0,0,0,0,0,14,0,31,0,31,0,31, + 0,14,0,26,27,108,31,2,251,0,31,224,0,0,252,60, + 0,3,224,14,0,7,128,3,0,15,0,1,0,30,0,1, + 128,62,15,56,128,60,31,248,192,124,124,248,64,120,120,120, + 64,248,248,240,64,248,240,240,64,241,240,240,64,241,240,240, + 64,241,224,240,192,241,225,224,128,241,225,225,128,241,227,227, + 0,113,243,227,0,120,254,254,0,120,120,120,0,60,0,0, + 0,28,0,0,0,14,0,1,128,7,128,7,0,1,224,60, + 0,0,63,224,0,21,23,69,24,1,0,0,32,0,0,96, + 0,0,112,0,0,240,0,0,248,0,0,248,0,1,248,0, + 1,124,0,1,124,0,3,62,0,2,62,0,6,62,0,6, + 31,0,4,31,0,12,15,0,15,255,128,24,15,128,24,7, + 192,16,7,192,48,3,224,48,3,224,112,7,240,252,31,248, + 19,23,69,22,1,0,255,252,0,63,31,0,31,15,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 128,31,15,128,31,62,0,31,252,0,31,15,128,31,7,192, + 31,7,224,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,192,31,7,192,63,15,0,255,252,0,19,23,69,24,2, + 0,1,252,32,7,255,96,15,7,224,30,1,224,60,0,224, + 124,0,96,124,0,96,248,0,32,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,124,0,0,124,0,0,60,0,32,30,0,96,15,129,192, + 3,255,128,0,254,0,22,23,69,24,0,0,255,252,0,63, + 255,128,31,7,224,31,1,240,31,1,240,31,0,248,31,0, + 248,31,0,252,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,248,31,0,248,31, + 0,248,31,1,240,31,1,224,31,7,192,63,255,0,255,252, + 0,21,23,69,22,0,0,255,255,224,63,255,224,31,0,224, + 31,0,96,31,0,96,31,0,32,31,0,32,31,4,0,31, + 4,0,31,12,0,31,28,0,31,252,0,31,28,0,31,12, + 0,31,4,0,31,4,0,31,0,8,31,0,24,31,0,48, + 31,0,112,31,1,240,63,255,224,255,255,224,19,23,69,20, + 0,0,255,255,224,63,255,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,0,32,31,4,0,31,4,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,4,0,31, + 4,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,63,128,0,255,224,0,22,23,69,25,2,0,1,252,32, + 7,255,96,15,7,224,30,1,224,60,0,224,124,0,96,124, + 0,96,248,0,32,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,31,252,248,7,240,248,3,224,124,3,224, + 124,3,224,60,3,224,62,3,224,30,7,224,15,143,224,3, + 255,0,24,23,69,25,0,0,255,231,255,63,129,252,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,255,248,31,255,248,31,0,248,31, + 0,248,31,0,248,31,0,248,31,0,248,31,0,248,31,0, + 248,31,0,248,31,0,248,63,129,252,255,231,255,11,23,46, + 13,1,0,255,224,63,128,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,63,128,255, + 224,15,26,52,16,0,253,15,254,3,248,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,97,240,241, + 240,241,240,243,224,227,224,127,192,31,0,24,23,69,25,1, + 0,255,207,252,127,3,224,62,1,192,62,3,128,62,7,0, + 62,14,0,62,28,0,62,56,0,62,112,0,62,224,0,63, + 240,0,63,248,0,63,252,0,62,254,0,62,127,0,62,63, + 128,62,31,192,62,15,224,62,7,240,62,3,248,62,1,252, + 127,0,254,255,195,255,20,23,69,22,1,0,255,224,0,63, + 128,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,16,31, + 0,48,31,0,96,31,0,224,31,129,224,63,255,192,255,255, + 192,28,23,92,31,1,0,255,0,15,240,63,0,31,192,31, + 128,31,128,31,128,63,128,23,192,63,128,23,192,47,128,23, + 192,111,128,19,224,79,128,19,224,207,128,19,224,207,128,17, + 240,143,128,17,241,143,128,16,249,15,128,16,251,15,128,16, + 251,15,128,16,126,15,128,16,126,15,128,16,124,15,128,16, + 60,15,128,16,60,15,128,16,24,15,128,56,24,31,192,254, + 24,63,240,22,23,69,24,1,0,254,1,252,127,0,112,63, + 128,32,31,128,32,31,192,32,31,224,32,23,240,32,19,248, + 32,17,248,32,17,252,32,16,254,32,16,127,32,16,63,32, + 16,31,160,16,31,224,16,15,224,16,7,224,16,3,224,16, + 3,224,16,1,224,16,0,224,56,0,96,254,0,32,21,23, + 69,25,2,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,19,23,69,20,0,0,255, + 252,0,63,31,128,31,15,192,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,192,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,63,128, + 0,255,224,0,22,27,81,26,2,252,1,252,0,7,255,0, + 15,143,128,30,3,192,60,1,224,124,1,240,120,0,240,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,124,1,240, + 124,1,240,62,3,224,31,7,192,7,255,0,1,252,0,0, + 254,0,0,127,132,0,31,248,0,7,224,22,23,69,24,1, + 0,255,252,0,63,31,128,31,7,192,31,7,224,31,3,224, + 31,3,224,31,3,224,31,3,224,31,7,224,31,7,192,31, + 31,128,31,252,0,31,126,0,31,62,0,31,63,0,31,31, + 128,31,31,128,31,15,192,31,7,224,31,7,224,31,3,240, + 63,129,248,255,225,252,15,23,46,18,1,0,15,196,56,124, + 112,60,112,28,240,12,240,12,248,4,252,0,255,0,127,192, + 63,240,31,248,15,252,3,252,1,254,128,126,128,62,192,30, + 192,30,224,28,240,28,248,56,143,224,19,23,69,22,1,0, + 255,255,224,249,243,224,225,240,224,193,240,96,129,240,32,129, + 240,32,129,240,32,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,3, + 248,0,15,254,0,23,23,69,24,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,23,69,24,1,0,255,195,252,127,0,240,62,0,96,63, + 0,64,31,0,192,31,128,192,15,128,128,15,129,128,15,193, + 0,7,193,0,7,195,0,3,226,0,3,230,0,3,246,0, + 1,244,0,1,252,0,0,248,0,0,248,0,0,248,0,0, + 112,0,0,112,0,0,32,0,0,32,0,32,23,92,33,0, + 0,255,239,255,63,127,3,248,14,63,1,248,12,31,1,248, + 12,31,1,248,8,31,129,252,24,15,129,252,24,15,129,124, + 16,15,195,124,48,7,194,126,48,7,198,62,32,7,230,62, + 96,3,228,62,96,3,236,31,64,3,248,31,192,1,248,31, + 192,1,248,15,128,1,240,15,128,0,240,15,128,0,224,7, + 0,0,224,7,0,0,224,7,0,0,64,2,0,21,23,69, + 24,1,0,255,207,224,127,3,0,63,2,0,31,134,0,31, + 132,0,15,204,0,15,200,0,7,248,0,3,240,0,3,240, + 0,1,248,0,0,248,0,1,252,0,1,124,0,3,62,0, + 2,63,0,6,31,0,4,31,128,12,15,192,8,15,192,24, + 7,224,56,7,240,254,63,248,22,23,69,24,1,0,255,195, + 252,127,0,240,63,0,96,63,0,96,31,128,192,31,128,128, + 15,193,128,15,195,0,7,227,0,3,230,0,3,244,0,1, + 252,0,1,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,1,252,0, + 7,255,0,19,23,69,22,1,0,63,255,192,126,15,128,120, + 31,128,112,31,0,96,63,0,64,126,0,0,126,0,0,252, + 0,0,252,0,1,248,0,1,240,0,3,240,0,3,224,0, + 7,224,0,7,192,0,15,192,32,31,128,32,31,128,96,63, + 0,96,63,0,224,126,1,224,126,7,192,255,255,192,7,28, + 28,11,2,251,254,240,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,254, + 8,26,26,9,0,0,128,192,192,192,96,96,96,96,48,48, + 48,24,24,24,24,12,12,12,4,6,6,6,3,3,3,3, + 7,28,28,11,1,251,254,30,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 30,254,11,13,26,19,4,10,14,0,14,0,31,0,31,0, + 27,0,59,128,59,128,113,192,113,192,97,192,224,224,224,224, + 192,96,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,11,1,17,192,224,112,56,12,2,14,16,32,16,1,0, + 31,128,49,224,112,240,120,240,120,240,48,240,1,240,7,240, + 28,240,56,240,120,240,240,240,249,240,255,244,126,252,60,120, + 17,22,66,18,0,0,252,0,0,124,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,120,0,61,254,0,63,254, + 0,62,31,0,60,31,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,15,128,60,15,0,60,31,0,62, + 62,0,55,252,0,33,240,0,14,16,32,15,1,0,7,240, + 30,120,60,60,124,60,120,24,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,124,0,62,24,31,240,15,224,16,22, + 44,18,1,0,0,252,0,124,0,60,0,60,0,60,0,60, + 15,188,63,252,124,60,120,60,248,60,240,60,240,60,240,60, + 240,60,240,60,240,60,240,60,120,60,124,126,63,255,15,184, + 14,16,32,15,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,12,23,46,11,0,0,7,224,30,112, + 28,240,60,240,60,96,60,0,60,0,255,128,255,128,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,126,0,255,0,14,23,46,16,1,249, + 15,192,61,252,112,252,240,240,240,120,240,120,240,120,240,120, + 120,248,63,240,31,192,60,0,96,0,224,0,255,224,255,248, + 127,252,48,60,96,28,192,12,224,28,127,248,31,224,17,22, + 66,18,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,120,0,61,252,0,63,254,0,62, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 126,63,0,255,127,128,8,23,23,9,0,0,24,60,60,60, + 24,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,10,30,60,11,254,249,1,128,3,192,3,192,3, + 192,1,128,0,0,0,0,15,192,7,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,99,192,243,192,243, + 128,119,128,62,0,18,22,66,18,0,0,252,0,0,124,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,31,0, + 60,14,0,60,12,0,60,24,0,60,48,0,60,96,0,60, + 192,0,61,192,0,63,224,0,61,240,0,60,248,0,60,124, + 0,60,62,0,60,31,0,126,15,128,255,31,192,8,22,22, + 9,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,26,16,64,27,0,0,252, + 120,60,0,125,254,254,0,63,63,159,0,62,63,31,0,62, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,126,63,31,128,255,127,191,192,17, + 16,48,18,0,0,252,120,0,125,252,0,63,62,0,62,30, + 0,62,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,14,16,32,17,1,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,23,69,18,0, + 249,252,248,0,125,254,0,63,31,0,62,15,0,60,15,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,60,7,128,62,15,0,63,15,0,63,254,0,60,248, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 126,0,0,255,0,0,16,23,46,18,1,249,15,196,62,236, + 124,60,120,60,248,60,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,120,60,120,124,63,252,15,60,0,60,0,60, + 0,60,0,60,0,60,0,126,0,255,13,16,32,15,1,0, + 252,112,124,248,63,248,63,120,62,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,126,0,255,0, + 10,16,32,13,1,0,31,64,113,192,96,192,224,192,240,64, + 252,0,127,0,127,128,63,128,15,192,3,192,129,192,193,192, + 193,192,227,128,191,0,10,21,42,11,0,0,4,0,12,0, + 28,0,28,0,60,0,127,128,255,128,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,64, + 62,192,63,128,30,0,17,16,48,18,0,0,252,126,0,124, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,62,0,62,95,0,31,223,128,7,140,0,15,16,32,17, + 0,0,255,62,124,12,60,8,62,24,30,16,31,16,31,48, + 15,32,15,32,7,224,7,192,7,192,3,128,3,128,1,0, + 1,0,23,16,48,24,0,0,255,127,190,126,62,28,60,30, + 8,62,30,24,30,31,16,31,31,48,31,63,48,15,47,160, + 15,231,224,7,231,192,7,199,192,7,195,192,3,131,128,3, + 131,128,1,1,0,1,1,0,16,16,32,17,0,0,255,62, + 126,24,62,24,31,48,31,96,15,192,15,192,7,192,3,224, + 3,224,7,240,13,248,24,248,24,124,48,124,252,255,15,23, + 46,17,0,249,255,190,126,12,62,8,62,8,31,24,31,16, + 15,16,15,176,15,160,7,160,7,224,7,192,3,192,3,192, + 1,128,1,128,1,128,1,0,115,0,243,0,246,0,254,0, + 120,0,12,16,32,15,1,0,255,240,227,240,195,224,135,224, + 135,192,15,128,15,128,31,0,31,0,62,0,62,16,124,16, + 124,48,248,48,248,240,255,240,10,27,54,13,1,252,7,192, + 14,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,56,0,112,0,224,0,112,0,56,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 14,0,7,192,2,30,30,7,3,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,10,27,54,13,1,252,248,0, + 28,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,7,0,3,128,1,192,3,128,7,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 28,0,248,0,15,8,16,17,1,8,28,0,63,0,127,130, + 255,198,143,254,131,252,1,248,0,112,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,8,0, + 1,5,23,23,11,3,249,112,248,248,248,112,0,0,0,32, + 32,32,32,112,112,112,112,248,248,248,248,248,248,112,13,25, + 50,17,1,251,0,8,0,8,0,24,0,16,7,240,28,224, + 56,240,120,240,240,240,240,224,240,128,241,128,241,0,243,0, + 242,0,250,16,126,48,127,224,63,192,15,0,8,0,16,0, + 16,0,32,0,32,0,16,23,46,17,1,0,0,240,3,252, + 7,30,14,30,14,30,30,12,30,0,30,0,31,0,15,0, + 15,0,127,240,127,240,7,128,7,128,7,128,55,128,127,1, + 239,3,199,135,199,255,238,254,124,124,14,15,30,17,1,4, + 96,24,247,188,255,252,127,248,60,240,120,120,112,56,112,56, + 112,56,120,120,60,240,127,248,255,252,247,188,96,24,18,23, + 69,17,1,0,255,135,192,62,3,128,62,3,0,31,3,0, + 31,6,0,31,134,0,15,132,0,15,140,0,7,200,0,7, + 216,0,7,208,0,3,240,0,31,252,0,31,252,0,3,224, + 0,31,252,0,31,252,0,1,224,0,1,224,0,1,224,0, + 1,224,0,3,240,0,15,252,0,2,30,30,7,3,249,192, + 192,192,192,192,192,192,192,192,192,192,192,0,0,0,0,0, + 0,192,192,192,192,192,192,192,192,192,192,192,192,12,28,56, + 17,2,251,15,128,24,192,48,224,113,224,113,224,120,192,60, + 0,62,0,31,0,15,128,63,192,99,224,193,224,192,240,224, + 112,240,48,120,48,124,96,63,192,31,128,7,128,3,192,49, + 224,120,224,120,224,112,192,49,128,31,0,8,4,4,11,2, + 18,66,231,231,66,22,23,69,25,1,0,1,254,0,7,255, + 128,15,3,192,28,0,224,56,0,112,48,254,48,113,199,56, + 99,131,24,231,131,28,199,0,12,199,0,12,199,0,12,199, + 0,12,199,128,12,195,195,12,227,230,28,96,252,24,112,0, + 56,56,0,112,28,0,224,15,3,192,7,255,128,1,254,0, + 9,14,28,10,0,9,60,0,102,0,103,0,103,0,31,0, + 103,0,199,0,199,0,239,128,115,0,0,0,0,0,255,128, + 255,128,14,14,28,17,2,1,2,4,6,12,14,28,28,56, + 56,112,112,224,225,192,225,192,112,224,56,112,28,56,14,28, + 6,12,2,4,16,9,18,19,1,3,255,255,255,255,255,255, + 0,7,0,7,0,7,0,7,0,7,0,7,8,4,4,11, + 1,6,255,255,255,255,22,23,69,25,2,0,1,254,0,7, + 255,128,15,3,192,28,0,224,56,0,112,51,252,48,113,206, + 56,96,199,24,224,199,28,192,199,12,192,206,12,192,248,12, + 192,220,12,192,206,12,192,198,12,224,199,28,97,195,152,115, + 227,248,56,0,112,28,0,224,15,3,192,7,255,128,1,254, + 0,9,2,4,11,1,18,255,128,255,128,9,10,20,13,2, + 13,28,0,127,0,99,0,193,128,193,128,193,128,193,128,99, + 0,127,0,60,0,15,19,38,19,2,0,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,0,0,255,254,255,254,255, + 254,10,14,28,10,1,9,62,0,127,0,199,128,131,128,3, + 128,3,128,3,0,6,0,12,0,24,0,48,64,127,192,255, + 128,255,128,9,14,28,10,1,9,30,0,63,0,103,128,67, + 128,3,0,6,0,31,0,7,128,3,128,3,128,3,128,195, + 128,231,0,126,0,7,6,6,11,3,17,6,14,28,56,96, + 128,16,22,44,19,2,250,248,252,120,124,120,60,120,60,120, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 124,124,252,127,191,95,56,64,0,224,0,224,0,224,0,224, + 0,224,0,16,29,58,18,1,250,15,255,63,255,63,140,127, + 140,255,140,255,140,255,140,255,140,255,140,255,140,255,140,127, + 140,63,140,63,140,15,140,1,140,1,140,1,140,1,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,4,4,4,8,2,9,96,240,240,96,7,7,7, + 11,1,249,6,12,28,14,198,238,124,9,14,28,10,0,9, + 12,0,124,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,255,128,9,14,28,11, + 1,9,28,0,119,0,99,0,227,128,227,128,227,128,227,128, + 99,0,119,0,28,0,0,0,0,0,255,128,255,128,14,14, + 28,17,1,1,129,0,193,128,225,192,112,224,56,112,28,56, + 14,28,14,28,28,56,56,112,112,224,225,192,193,128,129,0, + 23,23,69,25,0,0,12,0,8,124,0,24,28,0,48,28, + 0,48,28,0,96,28,0,96,28,0,192,28,1,128,28,1, + 128,28,3,12,28,6,28,28,6,60,28,12,124,255,152,252, + 0,24,220,0,49,156,0,99,156,0,99,28,0,199,254,1, + 199,254,1,128,28,3,0,28,3,0,28,23,23,69,25,0, + 0,12,0,48,124,0,96,28,0,96,28,0,192,28,0,128, + 28,1,128,28,3,0,28,2,0,28,6,0,28,12,240,28, + 25,248,28,27,60,28,50,28,255,176,28,0,96,28,0,96, + 24,0,192,48,1,128,96,1,128,192,3,1,130,6,3,254, + 6,7,252,12,15,252,22,23,69,25,1,0,30,0,16,63, + 0,48,103,128,96,67,128,96,3,0,192,6,0,192,31,1, + 128,7,131,0,3,131,0,3,134,24,3,140,56,195,140,120, + 231,24,248,126,49,248,0,49,184,0,99,56,0,199,56,0, + 198,56,1,143,252,3,143,252,3,0,56,6,0,56,6,0, + 56,12,23,46,16,2,249,7,0,15,128,15,128,15,128,7, + 0,0,0,0,0,0,0,2,0,2,0,6,0,12,0,28, + 0,60,0,120,0,120,0,248,96,248,240,248,240,248,112,120, + 112,60,224,31,192,21,30,90,24,1,0,6,0,0,7,0, + 0,3,128,0,1,192,0,0,96,0,0,0,0,0,32,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,30,90,24,1,0,0,3,0,0,7, + 0,0,14,0,0,28,0,0,48,0,0,64,0,0,0,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,30,90,24,1,0,0,96,0,0,240, + 0,1,248,0,1,152,0,3,12,0,2,4,0,0,0,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,29,87,24,1,0,0,194,0,1,246, + 0,3,124,0,2,24,0,0,0,0,0,0,0,0,32,0, + 0,96,0,0,112,0,0,240,0,0,248,0,0,248,0,1, + 248,0,1,124,0,1,124,0,3,62,0,2,62,0,6,62, + 0,6,31,0,4,31,0,12,15,0,15,255,128,24,15,128, + 24,7,192,16,7,192,48,3,224,48,3,224,112,7,240,252, + 31,248,21,29,87,24,1,0,1,8,0,3,156,0,3,156, + 0,1,8,0,0,0,0,0,0,0,0,32,0,0,96,0, + 0,112,0,0,240,0,0,248,0,0,248,0,1,248,0,1, + 124,0,1,124,0,3,62,0,2,62,0,6,62,0,6,31, + 0,4,31,0,12,15,0,15,255,128,24,15,128,24,7,192, + 16,7,192,48,3,224,48,3,224,112,7,240,252,31,248,21, + 30,90,24,1,0,0,224,0,1,176,0,3,24,0,2,8, + 0,3,24,0,1,176,0,0,224,0,0,0,0,0,96,0, + 0,112,0,0,240,0,0,248,0,0,248,0,1,248,0,1, + 124,0,1,124,0,3,62,0,2,62,0,6,62,0,6,31, + 0,4,31,0,12,15,0,15,255,128,24,15,128,24,7,192, + 16,7,192,48,3,224,48,3,224,112,7,240,252,31,248,32, + 23,92,33,0,0,3,255,255,252,0,255,255,252,0,99,224, + 28,0,99,224,12,0,195,224,12,0,195,224,4,1,131,224, + 4,1,131,224,128,3,3,224,128,3,3,225,128,2,3,227, + 128,7,255,255,128,7,255,227,128,12,3,225,128,12,3,224, + 128,24,3,224,128,24,3,224,1,56,3,224,3,48,3,224, + 6,112,3,224,14,112,3,224,62,248,7,255,252,254,31,255, + 252,19,30,90,24,2,249,1,252,32,7,255,96,15,7,224, + 30,1,224,60,0,224,124,0,96,124,0,96,248,0,32,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,124,0,0,124,0,0,60,0,32, + 30,0,96,15,129,192,3,255,128,0,254,0,0,24,0,0, + 48,0,0,112,0,0,56,0,3,24,0,3,184,0,1,240, + 0,21,30,90,22,0,0,6,0,0,7,0,0,3,128,0, + 1,192,0,0,96,0,0,48,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,30,90,22,0,0,0,1,128,0,3,128,0,7,0, + 0,14,0,0,24,0,0,48,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,30,90,22,0,0,0,48,0,0,120,0,0,252,0, + 0,204,0,1,134,0,1,2,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,29,87,22,0,0,0,132,0,1,206,0,1,206,0, + 0,132,0,0,0,0,0,0,0,255,255,224,63,255,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,0,32,31,4, + 0,31,4,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,4,0,31,4,0,31,0,8,31,0,24,31, + 0,48,31,0,112,31,1,240,63,255,224,255,255,224,11,30, + 60,13,1,0,192,0,224,0,112,0,56,0,12,0,6,0, + 0,0,255,224,63,128,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,63,128,255,224, + 12,30,60,13,1,0,0,48,0,112,0,224,1,192,3,0, + 6,0,0,0,255,224,63,128,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,63,128, + 255,224,11,30,60,13,1,0,6,0,15,0,31,128,25,128, + 48,192,32,64,0,0,255,224,63,128,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 63,128,255,224,11,29,58,13,1,0,16,128,57,192,57,192, + 16,128,0,0,0,0,255,224,63,128,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 63,128,255,224,22,23,69,24,0,0,255,254,0,63,15,128, + 31,3,224,31,1,240,31,1,240,31,0,248,31,0,248,31, + 0,252,31,0,252,31,0,252,255,240,124,255,240,124,255,240, + 124,31,0,124,31,0,252,31,0,248,31,0,248,31,0,248, + 31,1,240,31,1,224,31,3,192,63,15,128,127,254,0,22, + 29,87,24,1,0,0,97,0,0,251,0,1,190,0,1,12, + 0,0,0,0,0,0,0,254,1,252,127,0,112,63,128,32, + 31,128,32,31,192,32,31,224,32,23,240,32,19,248,32,17, + 248,32,17,252,32,16,254,32,16,127,32,16,63,32,16,31, + 160,16,31,224,16,15,224,16,7,224,16,3,224,16,3,224, + 16,1,224,16,0,224,56,0,96,254,0,32,21,30,90,25, + 2,0,6,0,0,7,0,0,3,128,0,1,192,0,0,96, + 0,0,48,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,30,90,25, + 2,0,0,3,128,0,7,0,0,14,0,0,24,0,0,48, + 0,0,96,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,30,90,25, + 2,0,0,48,0,0,120,0,0,252,0,0,204,0,1,134, + 0,1,2,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,29,87,25, + 2,0,0,194,0,1,246,0,3,124,0,2,24,0,0,0, + 0,0,0,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,21,29,87,25,2,0,0, + 132,0,1,206,0,1,206,0,0,132,0,0,0,0,0,0, + 0,1,252,0,7,255,0,15,143,128,30,3,192,60,1,224, + 124,1,240,120,0,240,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,120,0,240,124,1,240,60,1,224,30,3,192,15,143,128, + 7,255,0,1,252,0,15,16,32,19,2,0,64,4,224,14, + 240,30,120,60,60,120,30,240,15,224,7,192,7,192,15,224, + 30,240,60,120,120,60,240,30,224,14,64,4,21,27,81,26, + 2,254,0,0,48,0,0,96,1,252,64,7,143,192,14,3, + 128,30,1,192,60,3,224,124,6,240,120,4,240,248,12,248, + 248,24,248,248,24,248,248,48,248,248,32,248,248,96,248,248, + 192,248,248,128,248,249,128,248,123,0,240,126,1,240,62,1, + 224,28,3,192,14,7,128,31,254,0,17,248,0,48,0,0, + 96,0,0,23,30,90,24,0,0,0,192,0,0,224,0,0, + 112,0,0,56,0,0,12,0,0,2,0,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,30,90,24,0,0,0,0,192,0,1,192,0, + 3,128,0,7,0,0,12,0,0,16,0,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,30,90,24,0,0,0,12,0,0,30,0,0, + 63,0,0,51,0,0,97,128,0,64,128,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,29,87,24,0,0,0,33,0,0,115,128,0, + 115,128,0,33,0,0,0,0,0,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 48,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,30,90,24,1,0,0,0,192,0,1,192,0,3,128,0, + 7,0,0,12,0,0,16,0,0,0,0,255,195,252,127,0, + 240,63,0,96,63,0,96,31,128,192,31,128,128,15,193,128, + 15,195,0,7,227,0,3,230,0,3,244,0,1,252,0,1, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,1,252,0,7,255,0, + 19,23,69,20,0,0,255,224,0,63,128,0,31,0,0,31, + 0,0,31,254,0,31,15,128,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,224,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,63,128,0,255,224,0,17,23,69,19,0, + 0,3,240,0,14,60,0,30,62,0,28,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,28,0,60,56,0,60, + 224,0,60,60,0,60,30,0,60,15,0,60,15,0,60,15, + 128,60,15,128,60,15,128,60,15,128,60,15,0,60,15,0, + 60,30,0,252,124,0,14,23,46,16,1,0,48,0,56,0, + 28,0,14,0,3,0,0,128,0,0,31,128,49,224,112,240, + 120,240,120,240,48,240,1,240,7,240,28,240,56,240,120,240, + 240,240,249,240,255,244,126,252,60,120,14,23,46,16,1,0, + 0,48,0,112,0,224,1,192,3,0,4,0,0,0,31,128, + 49,224,112,240,120,240,120,240,48,240,1,240,7,240,28,240, + 56,240,120,240,240,240,249,240,255,244,126,252,60,120,14,23, + 46,16,1,0,3,0,7,128,15,192,12,192,24,96,16,32, + 0,0,31,128,49,224,112,240,120,240,120,240,48,240,1,240, + 7,240,28,240,56,240,120,240,240,240,249,240,255,244,126,252, + 60,120,14,22,44,16,1,0,12,32,31,96,55,192,33,128, + 0,0,0,0,31,128,49,224,112,240,120,240,120,240,48,240, + 1,240,7,240,28,240,56,240,120,240,240,240,249,240,255,244, + 126,252,60,120,14,22,44,16,1,0,8,64,28,224,28,224, + 8,64,0,0,0,0,31,128,49,224,112,240,120,240,120,240, + 48,240,1,240,7,240,28,240,56,240,120,240,240,240,249,240, + 255,244,126,252,60,120,14,25,50,16,1,0,7,0,13,128, + 24,192,16,64,24,192,13,128,7,0,0,0,0,0,31,128, + 49,224,112,240,120,240,120,240,48,240,1,240,7,240,28,240, + 56,240,120,240,240,240,249,240,255,244,126,252,60,120,21,16, + 48,24,1,0,31,135,192,49,238,224,112,252,112,120,248,112, + 120,248,56,48,248,56,1,248,56,7,255,248,28,248,0,56, + 248,0,120,252,0,248,252,8,248,254,24,255,255,240,126,63, + 224,60,15,192,13,23,46,15,1,249,7,224,30,240,60,120, + 120,120,120,48,240,0,240,0,240,0,240,0,240,0,248,0, + 120,0,120,0,60,48,31,224,15,192,3,0,6,0,6,0, + 3,128,49,128,59,128,31,0,14,23,46,15,0,0,48,0, + 56,0,28,0,14,0,3,0,0,128,0,0,7,192,30,240, + 60,112,120,56,120,60,248,60,248,60,255,252,248,0,248,0, + 248,0,120,0,124,0,62,24,31,240,7,224,14,23,46,15, + 0,0,0,24,0,56,0,112,0,224,1,128,2,0,0,0, + 7,192,30,240,60,112,120,56,120,60,248,60,248,60,255,252, + 248,0,248,0,248,0,120,0,124,0,62,24,31,240,7,224, + 14,23,46,15,0,0,3,0,7,128,15,192,12,192,24,96, + 16,32,0,0,7,192,30,240,60,112,120,56,120,60,248,60, + 248,60,255,252,248,0,248,0,248,0,120,0,124,0,62,24, + 31,240,7,224,14,22,44,15,0,0,4,32,14,112,14,112, + 4,32,0,0,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,8,23,23,9,0,0,192,224,112,56, + 12,2,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,8,23,23,9,0,0,3,7,14,28,48,64,0, + 252,124,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 8,23,23,9,0,0,24,60,126,102,195,129,0,252,124,60, + 60,60,60,60,60,60,60,60,60,60,60,126,255,8,22,22, + 9,0,0,66,231,231,66,0,0,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,14,22,44,17,1,0,56, + 48,62,248,15,248,255,128,251,192,97,224,15,240,60,248,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,22,66,18,0, + 0,3,8,0,7,216,0,13,240,0,8,96,0,0,0,0, + 0,0,0,252,120,0,125,252,0,63,62,0,62,30,0,62, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,126,63,0, + 255,127,128,14,23,46,17,1,0,48,0,56,0,28,0,14, + 0,3,0,0,128,0,0,15,192,60,240,120,120,120,120,240, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,60,240,15,192,14,23,46,17,1,0,0,24,0, + 56,0,112,0,224,1,128,2,0,0,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,14,23,46,17,1, + 0,3,0,7,128,15,192,12,192,24,96,16,32,0,0,15, + 192,60,240,120,120,120,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,60,120,120,120,120,60,240,15,192,14, + 22,44,17,1,0,12,32,31,96,55,192,33,128,0,0,0, + 0,15,192,60,240,120,120,120,120,240,60,240,60,240,60,240, + 60,240,60,240,60,240,60,240,60,120,120,120,120,60,240,15, + 192,14,22,44,17,1,0,8,64,28,224,28,224,8,64,0, + 0,0,0,15,192,60,240,120,120,120,120,240,60,240,60,240, + 60,240,60,240,60,240,60,240,60,240,60,120,120,120,120,60, + 240,15,192,14,15,30,19,2,1,3,0,7,128,7,128,3, + 0,0,0,0,0,255,252,255,252,255,252,0,0,0,0,3, + 0,7,128,7,128,3,0,14,22,44,17,1,253,0,8,0, + 24,0,24,15,240,60,240,120,120,120,120,240,252,241,188,241, + 60,243,60,242,60,246,60,252,60,248,60,120,120,120,120,60, + 240,111,192,96,0,192,0,128,0,17,23,69,18,0,0,24, + 0,0,28,0,0,14,0,0,7,0,0,1,128,0,0,64, + 0,0,0,0,252,126,0,124,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,62,0,62,127,0,31,223, + 128,7,140,0,17,23,69,18,0,0,0,12,0,0,28,0, + 0,56,0,0,112,0,0,192,0,1,0,0,0,0,0,252, + 126,0,124,62,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,62,0,62,127,0,31,223,128,7,140,0,17, + 23,69,18,0,0,1,128,0,3,192,0,7,224,0,6,96, + 0,12,48,0,8,16,0,0,0,0,252,126,0,124,62,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,62, + 0,62,127,0,31,223,128,7,140,0,17,22,66,18,0,0, + 4,32,0,14,112,0,14,112,0,4,32,0,0,0,0,0, + 0,0,252,126,0,124,62,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,62,127,0,31,223,128,7, + 140,0,15,30,60,17,0,249,0,12,0,28,0,56,0,112, + 0,192,1,0,0,0,255,190,126,12,62,8,62,8,31,24, + 31,16,15,16,15,176,15,160,7,160,7,224,7,192,3,192, + 3,192,1,128,1,128,1,128,1,0,115,0,243,0,246,0, + 254,0,120,0,15,29,58,19,1,249,252,0,124,0,60,0, + 60,0,60,0,60,0,60,224,63,248,62,124,60,60,60,62, + 60,30,60,30,60,30,60,30,60,30,60,30,60,30,60,60, + 62,60,63,248,60,224,60,0,60,0,60,0,60,0,60,0, + 126,0,255,0,15,29,58,17,0,249,4,32,14,112,14,112, + 4,32,0,0,0,0,255,190,126,12,62,8,62,8,31,24, + 31,16,15,16,15,176,15,160,7,160,7,224,7,192,3,192, + 3,192,1,128,1,128,1,128,1,0,115,0,243,0,246,0, + 254,0,120,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=16 h=25 x= 2 y= 9 dx=19 dy= 0 ascent=25 len=50 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24n[701] U8G_SECTION(".progmem.u8g_font_timB24n") = { + 0,38,49,251,244,23,0,0,0,0,42,57,0,25,250,23, + 0,13,14,28,17,1,9,3,0,7,0,7,0,231,56,242, + 120,122,240,15,128,15,128,122,240,242,120,231,56,7,0,7, + 0,6,0,15,15,30,19,2,0,3,128,3,128,3,128,3, + 128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,11,11,8,1,250,56,124,124, + 124,60,12,8,24,48,96,192,8,4,4,11,1,6,255,255, + 255,255,5,5,5,8,1,0,112,248,248,248,112,9,25,50, + 9,0,0,1,128,1,128,1,0,3,0,3,0,3,0,6, + 0,6,0,6,0,4,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,14,23,46,16,1,0,7,128,31,224,28, + 224,56,112,120,112,120,120,120,120,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,248,124,120,120,120,120,120, + 120,56,112,28,224,15,192,7,128,13,23,46,16,2,0,1, + 128,7,128,31,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,31,192,255,248,16,23,46, + 16,0,0,3,192,15,240,31,248,63,248,48,252,96,124,64, + 124,0,124,0,120,0,120,0,120,0,240,0,224,1,192,1, + 128,3,0,7,1,14,3,28,6,63,254,127,254,255,252,255, + 252,14,23,46,16,1,0,7,192,31,240,63,240,48,248,96, + 120,64,120,0,120,0,112,0,192,3,224,15,240,15,248,3, + 248,0,252,0,124,0,60,0,60,0,60,96,56,240,56,248, + 112,127,192,31,0,14,23,46,16,1,0,0,112,0,240,0, + 240,1,240,3,240,6,240,6,240,12,240,24,240,24,240,48, + 240,96,240,96,240,192,240,255,252,255,252,255,252,255,252,0, + 240,0,240,0,240,0,240,0,240,13,23,46,16,1,0,31, + 248,31,248,31,248,31,248,48,0,48,0,32,0,62,0,127, + 128,127,224,127,240,127,240,3,248,0,248,0,120,0,56,0, + 56,0,56,96,48,240,48,248,96,127,192,31,0,14,23,46, + 16,1,0,0,28,0,240,3,192,7,128,15,0,30,0,62, + 0,60,0,124,0,127,224,253,240,248,248,248,120,248,124,248, + 124,248,124,248,124,120,124,120,120,120,120,56,112,28,224,15, + 192,13,23,46,16,2,0,127,248,127,248,255,248,255,248,192, + 48,128,112,128,112,0,96,0,224,0,224,0,192,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,14,0,28,0,14,23,46,16,1,0,15,224,62,240,60, + 120,120,120,120,56,120,56,124,56,126,112,63,224,63,128,31, + 192,15,224,63,240,113,248,112,252,224,124,224,60,224,60,224, + 60,240,56,120,120,127,240,31,192,14,23,46,16,1,0,15, + 192,28,224,56,112,120,120,120,120,248,120,248,124,248,124,248, + 124,248,124,120,124,124,124,62,252,31,248,0,248,0,240,1, + 240,1,224,3,192,7,128,15,0,60,0,224,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=30 x= 4 y=17 dx=33 dy= 0 ascent=26 len=108 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24r[5003] U8G_SECTION(".progmem.u8g_font_timB24r") = { + 0,38,49,251,244,23,5,149,13,202,32,127,249,26,249,23, + 249,0,0,0,8,0,1,5,23,23,11,3,0,112,248,248, + 248,248,248,248,112,112,112,112,32,32,32,32,0,0,0,112, + 248,248,248,112,11,11,22,19,2,12,96,192,241,224,241,224, + 241,224,241,224,241,224,241,224,96,192,96,192,96,192,96,192, + 16,23,46,17,0,0,3,12,3,12,7,28,7,28,6,24, + 6,24,127,255,127,255,14,56,12,48,12,48,12,48,12,48, + 28,112,255,254,255,254,24,96,24,96,24,96,56,224,56,224, + 48,192,48,192,15,28,56,16,1,253,3,0,3,0,15,232, + 63,248,115,56,99,24,227,8,227,8,243,0,251,0,127,0, + 127,128,63,224,15,240,3,248,3,252,3,124,131,62,131,30, + 131,30,195,28,195,60,243,120,255,224,131,0,3,0,3,0, + 3,0,24,23,69,33,4,0,7,128,32,15,192,224,30,127, + 192,60,32,192,124,33,128,120,33,128,248,99,0,240,71,0, + 240,198,0,240,206,0,241,140,60,127,24,126,60,25,243,0, + 49,225,0,51,193,0,99,193,0,231,195,0,199,130,1,199, + 134,1,135,134,3,3,140,3,3,248,6,1,224,22,23,69, + 28,2,0,1,240,0,3,188,0,7,30,0,7,14,0,15, + 14,0,15,14,0,15,140,0,7,216,0,7,240,0,3,224, + 252,7,240,112,29,240,48,57,248,96,112,252,64,240,252,192, + 240,127,128,248,63,0,248,31,128,252,31,192,254,63,228,127, + 243,252,127,193,252,31,0,120,4,11,11,9,2,12,96,240, + 240,240,240,240,240,96,96,96,96,8,29,29,11,2,250,3, + 6,12,24,24,48,48,112,96,224,224,224,224,224,224,224,224, + 224,224,224,96,112,48,48,24,24,12,6,3,8,29,29,11, + 0,250,192,96,48,24,24,12,12,14,6,7,7,7,7,7, + 7,7,7,7,7,7,6,14,12,12,24,24,48,96,192,13, + 14,28,17,1,9,3,0,7,0,7,0,231,56,242,120,122, + 240,15,128,15,128,122,240,242,120,231,56,7,0,7,0,6, + 0,15,15,30,19,2,0,3,128,3,128,3,128,3,128,3, + 128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3, + 128,3,128,3,128,6,11,11,8,1,250,56,124,124,124,60, + 12,8,24,48,96,192,8,4,4,11,1,6,255,255,255,255, + 5,5,5,8,1,0,112,248,248,248,112,9,25,50,9,0, + 0,1,128,1,128,1,0,3,0,3,0,3,0,6,0,6, + 0,6,0,4,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,48,0,96,0,96,0,96,0,192, + 0,192,0,14,23,46,16,1,0,7,128,31,224,28,224,56, + 112,120,112,120,120,120,120,248,124,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,120,120,120,120,120,120,56, + 112,28,224,15,192,7,128,13,23,46,16,2,0,1,128,7, + 128,31,128,255,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,31,192,255,248,16,23,46,16,0, + 0,3,192,15,240,31,248,63,248,48,252,96,124,64,124,0, + 124,0,120,0,120,0,120,0,240,0,224,1,192,1,128,3, + 0,7,1,14,3,28,6,63,254,127,254,255,252,255,252,14, + 23,46,16,1,0,7,192,31,240,63,240,48,248,96,120,64, + 120,0,120,0,112,0,192,3,224,15,240,15,248,3,248,0, + 252,0,124,0,60,0,60,0,60,96,56,240,56,248,112,127, + 192,31,0,14,23,46,16,1,0,0,112,0,240,0,240,1, + 240,3,240,6,240,6,240,12,240,24,240,24,240,48,240,96, + 240,96,240,192,240,255,252,255,252,255,252,255,252,0,240,0, + 240,0,240,0,240,0,240,13,23,46,16,1,0,31,248,31, + 248,31,248,31,248,48,0,48,0,32,0,62,0,127,128,127, + 224,127,240,127,240,3,248,0,248,0,120,0,56,0,56,0, + 56,96,48,240,48,248,96,127,192,31,0,14,23,46,16,1, + 0,0,28,0,240,3,192,7,128,15,0,30,0,62,0,60, + 0,124,0,127,224,253,240,248,248,248,120,248,124,248,124,248, + 124,248,124,120,124,120,120,120,120,56,112,28,224,15,192,13, + 23,46,16,2,0,127,248,127,248,255,248,255,248,192,48,128, + 112,128,112,0,96,0,224,0,224,0,192,1,192,1,192,3, + 128,3,128,3,128,7,0,7,0,7,0,14,0,14,0,14, + 0,28,0,14,23,46,16,1,0,15,224,62,240,60,120,120, + 120,120,56,120,56,124,56,126,112,63,224,63,128,31,192,15, + 224,63,240,113,248,112,252,224,124,224,60,224,60,224,60,240, + 56,120,120,127,240,31,192,14,23,46,16,1,0,15,192,28, + 224,56,112,120,120,120,120,248,120,248,124,248,124,248,124,248, + 124,120,124,124,124,62,252,31,248,0,248,0,240,1,240,1, + 224,3,192,7,128,15,0,60,0,224,0,5,16,16,11,3, + 0,112,248,248,248,112,0,0,0,0,0,0,112,248,248,248, + 112,6,22,22,11,2,250,56,124,124,124,56,0,0,0,0, + 0,0,56,124,124,124,60,12,8,24,48,96,192,16,15,30, + 19,1,0,0,3,0,15,0,127,1,252,15,224,63,128,252, + 0,240,0,252,0,63,128,15,224,1,252,0,127,0,15,0, + 3,15,10,20,19,2,3,255,254,255,254,255,254,0,0,0, + 0,0,0,0,0,255,254,255,254,255,254,16,15,30,19,2, + 0,192,0,240,0,254,0,63,128,7,240,1,252,0,63,0, + 15,0,63,1,252,7,240,63,128,254,0,240,0,192,0,12, + 23,46,16,2,0,63,0,115,192,225,224,225,240,241,240,241, + 240,97,240,1,224,1,224,3,192,3,128,3,0,6,0,4, + 0,4,0,0,0,0,0,0,0,14,0,31,0,31,0,31, + 0,14,0,26,27,108,31,2,251,0,31,224,0,0,252,60, + 0,3,224,14,0,7,128,3,0,15,0,1,0,30,0,1, + 128,62,15,56,128,60,31,248,192,124,124,248,64,120,120,120, + 64,248,248,240,64,248,240,240,64,241,240,240,64,241,240,240, + 64,241,224,240,192,241,225,224,128,241,225,225,128,241,227,227, + 0,113,243,227,0,120,254,254,0,120,120,120,0,60,0,0, + 0,28,0,0,0,14,0,1,128,7,128,7,0,1,224,60, + 0,0,63,224,0,21,23,69,24,1,0,0,32,0,0,96, + 0,0,112,0,0,240,0,0,248,0,0,248,0,1,248,0, + 1,124,0,1,124,0,3,62,0,2,62,0,6,62,0,6, + 31,0,4,31,0,12,15,0,15,255,128,24,15,128,24,7, + 192,16,7,192,48,3,224,48,3,224,112,7,240,252,31,248, + 19,23,69,22,1,0,255,252,0,63,31,0,31,15,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 128,31,15,128,31,62,0,31,252,0,31,15,128,31,7,192, + 31,7,224,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,192,31,7,192,63,15,0,255,252,0,19,23,69,24,2, + 0,1,252,32,7,255,96,15,7,224,30,1,224,60,0,224, + 124,0,96,124,0,96,248,0,32,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,124,0,0,124,0,0,60,0,32,30,0,96,15,129,192, + 3,255,128,0,254,0,22,23,69,24,0,0,255,252,0,63, + 255,128,31,7,224,31,1,240,31,1,240,31,0,248,31,0, + 248,31,0,252,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,248,31,0,248,31, + 0,248,31,1,240,31,1,224,31,7,192,63,255,0,255,252, + 0,21,23,69,22,0,0,255,255,224,63,255,224,31,0,224, + 31,0,96,31,0,96,31,0,32,31,0,32,31,4,0,31, + 4,0,31,12,0,31,28,0,31,252,0,31,28,0,31,12, + 0,31,4,0,31,4,0,31,0,8,31,0,24,31,0,48, + 31,0,112,31,1,240,63,255,224,255,255,224,19,23,69,20, + 0,0,255,255,224,63,255,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,0,32,31,4,0,31,4,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,4,0,31, + 4,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,63,128,0,255,224,0,22,23,69,25,2,0,1,252,32, + 7,255,96,15,7,224,30,1,224,60,0,224,124,0,96,124, + 0,96,248,0,32,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,31,252,248,7,240,248,3,224,124,3,224, + 124,3,224,60,3,224,62,3,224,30,7,224,15,143,224,3, + 255,0,24,23,69,25,0,0,255,231,255,63,129,252,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,255,248,31,255,248,31,0,248,31, + 0,248,31,0,248,31,0,248,31,0,248,31,0,248,31,0, + 248,31,0,248,31,0,248,63,129,252,255,231,255,11,23,46, + 13,1,0,255,224,63,128,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,63,128,255, + 224,15,26,52,16,0,253,15,254,3,248,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,97,240,241, + 240,241,240,243,224,227,224,127,192,31,0,24,23,69,25,1, + 0,255,207,252,127,3,224,62,1,192,62,3,128,62,7,0, + 62,14,0,62,28,0,62,56,0,62,112,0,62,224,0,63, + 240,0,63,248,0,63,252,0,62,254,0,62,127,0,62,63, + 128,62,31,192,62,15,224,62,7,240,62,3,248,62,1,252, + 127,0,254,255,195,255,20,23,69,22,1,0,255,224,0,63, + 128,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,16,31, + 0,48,31,0,96,31,0,224,31,129,224,63,255,192,255,255, + 192,28,23,92,31,1,0,255,0,15,240,63,0,31,192,31, + 128,31,128,31,128,63,128,23,192,63,128,23,192,47,128,23, + 192,111,128,19,224,79,128,19,224,207,128,19,224,207,128,17, + 240,143,128,17,241,143,128,16,249,15,128,16,251,15,128,16, + 251,15,128,16,126,15,128,16,126,15,128,16,124,15,128,16, + 60,15,128,16,60,15,128,16,24,15,128,56,24,31,192,254, + 24,63,240,22,23,69,24,1,0,254,1,252,127,0,112,63, + 128,32,31,128,32,31,192,32,31,224,32,23,240,32,19,248, + 32,17,248,32,17,252,32,16,254,32,16,127,32,16,63,32, + 16,31,160,16,31,224,16,15,224,16,7,224,16,3,224,16, + 3,224,16,1,224,16,0,224,56,0,96,254,0,32,21,23, + 69,25,2,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,19,23,69,20,0,0,255, + 252,0,63,31,128,31,15,192,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,192,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,63,128, + 0,255,224,0,22,27,81,26,2,252,1,252,0,7,255,0, + 15,143,128,30,3,192,60,1,224,124,1,240,120,0,240,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,124,1,240, + 124,1,240,62,3,224,31,7,192,7,255,0,1,252,0,0, + 254,0,0,127,132,0,31,248,0,7,224,22,23,69,24,1, + 0,255,252,0,63,31,128,31,7,192,31,7,224,31,3,224, + 31,3,224,31,3,224,31,3,224,31,7,224,31,7,192,31, + 31,128,31,252,0,31,126,0,31,62,0,31,63,0,31,31, + 128,31,31,128,31,15,192,31,7,224,31,7,224,31,3,240, + 63,129,248,255,225,252,15,23,46,18,1,0,15,196,56,124, + 112,60,112,28,240,12,240,12,248,4,252,0,255,0,127,192, + 63,240,31,248,15,252,3,252,1,254,128,126,128,62,192,30, + 192,30,224,28,240,28,248,56,143,224,19,23,69,22,1,0, + 255,255,224,249,243,224,225,240,224,193,240,96,129,240,32,129, + 240,32,129,240,32,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,3, + 248,0,15,254,0,23,23,69,24,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,23,69,24,1,0,255,195,252,127,0,240,62,0,96,63, + 0,64,31,0,192,31,128,192,15,128,128,15,129,128,15,193, + 0,7,193,0,7,195,0,3,226,0,3,230,0,3,246,0, + 1,244,0,1,252,0,0,248,0,0,248,0,0,248,0,0, + 112,0,0,112,0,0,32,0,0,32,0,32,23,92,33,0, + 0,255,239,255,63,127,3,248,14,63,1,248,12,31,1,248, + 12,31,1,248,8,31,129,252,24,15,129,252,24,15,129,124, + 16,15,195,124,48,7,194,126,48,7,198,62,32,7,230,62, + 96,3,228,62,96,3,236,31,64,3,248,31,192,1,248,31, + 192,1,248,15,128,1,240,15,128,0,240,15,128,0,224,7, + 0,0,224,7,0,0,224,7,0,0,64,2,0,21,23,69, + 24,1,0,255,207,224,127,3,0,63,2,0,31,134,0,31, + 132,0,15,204,0,15,200,0,7,248,0,3,240,0,3,240, + 0,1,248,0,0,248,0,1,252,0,1,124,0,3,62,0, + 2,63,0,6,31,0,4,31,128,12,15,192,8,15,192,24, + 7,224,56,7,240,254,63,248,22,23,69,24,1,0,255,195, + 252,127,0,240,63,0,96,63,0,96,31,128,192,31,128,128, + 15,193,128,15,195,0,7,227,0,3,230,0,3,244,0,1, + 252,0,1,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,1,252,0, + 7,255,0,19,23,69,22,1,0,63,255,192,126,15,128,120, + 31,128,112,31,0,96,63,0,64,126,0,0,126,0,0,252, + 0,0,252,0,1,248,0,1,240,0,3,240,0,3,224,0, + 7,224,0,7,192,0,15,192,32,31,128,32,31,128,96,63, + 0,96,63,0,224,126,1,224,126,7,192,255,255,192,7,28, + 28,11,2,251,254,240,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,254, + 8,26,26,9,0,0,128,192,192,192,96,96,96,96,48,48, + 48,24,24,24,24,12,12,12,4,6,6,6,3,3,3,3, + 7,28,28,11,1,251,254,30,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 30,254,11,13,26,19,4,10,14,0,14,0,31,0,31,0, + 27,0,59,128,59,128,113,192,113,192,97,192,224,224,224,224, + 192,96,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,11,1,17,192,224,112,56,12,2,14,16,32,16,1,0, + 31,128,49,224,112,240,120,240,120,240,48,240,1,240,7,240, + 28,240,56,240,120,240,240,240,249,240,255,244,126,252,60,120, + 17,22,66,18,0,0,252,0,0,124,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,120,0,61,254,0,63,254, + 0,62,31,0,60,31,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,15,128,60,15,0,60,31,0,62, + 62,0,55,252,0,33,240,0,14,16,32,15,1,0,7,240, + 30,120,60,60,124,60,120,24,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,124,0,62,24,31,240,15,224,16,22, + 44,18,1,0,0,252,0,124,0,60,0,60,0,60,0,60, + 15,188,63,252,124,60,120,60,248,60,240,60,240,60,240,60, + 240,60,240,60,240,60,240,60,120,60,124,126,63,255,15,184, + 14,16,32,15,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,12,23,46,11,0,0,7,224,30,112, + 28,240,60,240,60,96,60,0,60,0,255,128,255,128,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,126,0,255,0,14,23,46,16,1,249, + 15,192,61,252,112,252,240,240,240,120,240,120,240,120,240,120, + 120,248,63,240,31,192,60,0,96,0,224,0,255,224,255,248, + 127,252,48,60,96,28,192,12,224,28,127,248,31,224,17,22, + 66,18,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,120,0,61,252,0,63,254,0,62, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 126,63,0,255,127,128,8,23,23,9,0,0,24,60,60,60, + 24,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,10,30,60,11,254,249,1,128,3,192,3,192,3, + 192,1,128,0,0,0,0,15,192,7,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,99,192,243,192,243, + 128,119,128,62,0,18,22,66,18,0,0,252,0,0,124,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,31,0, + 60,14,0,60,12,0,60,24,0,60,48,0,60,96,0,60, + 192,0,61,192,0,63,224,0,61,240,0,60,248,0,60,124, + 0,60,62,0,60,31,0,126,15,128,255,31,192,8,22,22, + 9,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,26,16,64,27,0,0,252, + 120,60,0,125,254,254,0,63,63,159,0,62,63,31,0,62, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,126,63,31,128,255,127,191,192,17, + 16,48,18,0,0,252,120,0,125,252,0,63,62,0,62,30, + 0,62,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,14,16,32,17,1,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,23,69,18,0, + 249,252,248,0,125,254,0,63,31,0,62,15,0,60,15,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,60,7,128,62,15,0,63,15,0,63,254,0,60,248, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 126,0,0,255,0,0,16,23,46,18,1,249,15,196,62,236, + 124,60,120,60,248,60,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,120,60,120,124,63,252,15,60,0,60,0,60, + 0,60,0,60,0,60,0,126,0,255,13,16,32,15,1,0, + 252,112,124,248,63,248,63,120,62,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,126,0,255,0, + 10,16,32,13,1,0,31,64,113,192,96,192,224,192,240,64, + 252,0,127,0,127,128,63,128,15,192,3,192,129,192,193,192, + 193,192,227,128,191,0,10,21,42,11,0,0,4,0,12,0, + 28,0,28,0,60,0,127,128,255,128,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,64, + 62,192,63,128,30,0,17,16,48,18,0,0,252,126,0,124, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,62,0,62,95,0,31,223,128,7,140,0,15,16,32,17, + 0,0,255,62,124,12,60,8,62,24,30,16,31,16,31,48, + 15,32,15,32,7,224,7,192,7,192,3,128,3,128,1,0, + 1,0,23,16,48,24,0,0,255,127,190,126,62,28,60,30, + 8,62,30,24,30,31,16,31,31,48,31,63,48,15,47,160, + 15,231,224,7,231,192,7,199,192,7,195,192,3,131,128,3, + 131,128,1,1,0,1,1,0,16,16,32,17,0,0,255,62, + 126,24,62,24,31,48,31,96,15,192,15,192,7,192,3,224, + 3,224,7,240,13,248,24,248,24,124,48,124,252,255,15,23, + 46,17,0,249,255,190,126,12,62,8,62,8,31,24,31,16, + 15,16,15,176,15,160,7,160,7,224,7,192,3,192,3,192, + 1,128,1,128,1,128,1,0,115,0,243,0,246,0,254,0, + 120,0,12,16,32,15,1,0,255,240,227,240,195,224,135,224, + 135,192,15,128,15,128,31,0,31,0,62,0,62,16,124,16, + 124,48,248,48,248,240,255,240,10,27,54,13,1,252,7,192, + 14,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,56,0,112,0,224,0,112,0,56,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 14,0,7,192,2,30,30,7,3,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,10,27,54,13,1,252,248,0, + 28,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,7,0,3,128,1,192,3,128,7,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 28,0,248,0,15,8,16,17,1,8,28,0,63,0,127,130, + 255,198,143,254,131,252,1,248,0,112,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--11-80-100-100-P-54-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=11 h=10 x= 1 y= 6 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w=12 h=17 x=-2 y=-4 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR08[2512] U8G_SECTION(".progmem.u8g_font_timR08") = { + 0,12,17,254,252,7,1,147,3,56,32,255,254,10,253,7, + 254,0,0,0,2,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,3,2,2,4,0,5,160,160,5,7,7,5, + 0,0,80,80,248,80,248,80,80,4,9,9,5,0,255,32, + 112,144,128,96,16,144,224,32,7,7,7,8,0,0,126,164, + 168,86,42,42,68,8,7,7,8,0,0,48,80,110,116,152, + 141,118,1,2,2,2,0,5,128,128,3,9,9,4,0,254, + 32,64,64,128,128,128,64,64,32,3,9,9,4,0,254,128, + 64,64,32,32,32,64,64,128,3,3,3,5,1,4,160,64, + 160,5,5,5,6,0,0,32,32,248,32,32,2,2,2,3, + 0,255,192,64,3,1,1,4,0,2,224,1,1,1,3,1, + 0,128,3,7,7,3,0,0,32,32,64,64,64,128,128,4, + 7,7,5,0,0,96,144,144,144,144,144,96,3,7,7,5, + 1,0,64,192,64,64,64,64,224,4,7,7,5,0,0,96, + 144,16,32,32,64,240,4,7,7,5,0,0,96,144,16,96, + 16,16,224,5,7,7,5,0,0,16,48,80,144,248,16,16, + 4,7,7,5,0,0,112,64,224,16,16,16,224,4,7,7, + 5,0,0,48,64,224,144,144,144,96,4,7,7,5,0,0, + 240,144,32,32,64,64,64,4,7,7,5,0,0,96,144,144, + 96,144,144,96,4,7,7,5,0,0,96,144,144,144,112,32, + 192,1,5,5,3,1,0,128,0,0,0,128,2,6,6,3, + 0,255,64,0,0,0,192,64,3,5,5,5,1,0,32,64, + 128,64,32,5,3,3,6,0,1,248,0,248,3,5,5,5, + 0,0,128,64,32,64,128,3,7,7,4,0,0,224,160,32, + 64,64,0,64,8,9,9,9,0,254,60,66,157,165,165,173, + 146,64,62,7,7,7,8,0,0,16,56,40,40,124,68,238, + 5,7,7,6,0,0,240,72,72,112,72,72,240,6,7,7, + 7,0,0,124,196,128,128,128,196,120,6,7,7,7,0,0, + 248,76,68,68,68,76,248,5,7,7,6,0,0,248,72,64, + 112,64,72,248,5,7,7,6,0,0,248,72,64,112,64,64, + 224,6,7,7,7,0,0,124,196,128,156,132,196,120,7,7, + 7,8,0,0,238,68,68,124,68,68,238,3,7,7,4,0, + 0,224,64,64,64,64,64,224,4,7,7,4,0,0,112,32, + 32,32,32,160,192,6,7,7,7,0,0,236,72,80,96,80, + 72,236,5,7,7,6,0,0,224,64,64,64,64,72,248,9, + 7,14,10,0,0,227,128,99,0,85,0,85,0,93,0,73, + 0,235,128,7,7,7,8,0,0,238,100,84,84,76,76,228, + 6,7,7,7,0,0,120,204,132,132,132,204,120,5,7,7, + 6,0,0,240,72,72,112,64,64,224,6,9,9,7,0,254, + 120,204,132,132,132,204,112,24,12,6,7,7,7,0,0,240, + 72,72,112,80,72,236,4,7,7,5,0,0,112,144,192,96, + 16,144,224,5,7,7,6,0,0,248,168,32,32,32,32,112, + 7,7,7,8,0,0,238,68,68,68,68,108,56,7,7,7, + 8,0,0,238,68,108,40,40,16,16,11,7,14,10,255,0, + 238,224,68,64,100,192,46,128,42,128,17,0,17,0,7,7, + 7,8,0,0,238,68,40,16,40,68,238,7,7,7,8,0, + 0,238,68,40,56,16,16,56,5,7,7,6,0,0,248,136, + 16,32,64,136,248,2,9,9,3,0,254,192,128,128,128,128, + 128,128,128,192,3,7,7,3,0,0,128,128,64,64,64,32, + 32,2,9,9,3,0,254,192,64,64,64,64,64,64,64,192, + 3,3,3,5,1,4,64,160,160,5,1,1,5,0,253,248, + 2,2,2,3,0,6,128,64,3,5,5,4,0,0,192,32, + 96,160,224,5,7,7,5,255,0,192,64,112,72,72,72,112, + 3,5,5,4,0,0,96,128,128,128,96,5,7,7,5,0, + 0,48,16,112,144,144,144,104,3,5,5,4,0,0,96,160, + 192,128,96,4,7,7,4,0,0,48,64,224,64,64,64,224, + 4,7,7,5,0,254,112,160,160,64,96,144,224,6,7,7, + 5,255,0,192,64,112,72,72,72,108,2,7,7,3,0,0, + 64,0,192,64,64,64,64,3,9,9,3,255,254,32,0,96, + 32,32,32,32,32,192,6,7,7,5,255,0,192,64,72,80, + 112,72,76,3,7,7,4,0,0,192,64,64,64,64,64,224, + 8,5,5,8,0,0,236,146,146,146,219,5,5,5,5,0, + 0,224,144,144,144,216,4,5,5,5,0,0,96,144,144,144, + 96,5,8,8,5,255,253,240,72,72,72,112,64,64,224,5, + 8,8,5,0,253,112,144,144,144,112,16,16,56,3,5,5, + 4,0,0,160,96,64,64,224,3,5,5,4,0,0,96,128, + 64,32,224,4,6,6,4,0,0,64,224,64,64,64,48,5, + 5,5,5,0,0,216,144,144,144,104,6,5,5,5,255,0, + 236,72,40,48,16,9,5,10,8,255,0,237,128,73,0,42, + 0,54,0,20,0,5,5,5,6,0,0,216,80,32,80,216, + 6,7,7,5,255,254,220,72,80,48,32,96,192,4,5,5, + 5,0,0,240,32,64,144,240,3,9,9,4,0,254,32,64, + 64,64,128,64,64,64,32,1,9,9,2,0,254,128,128,128, + 128,128,128,128,128,128,3,9,9,4,0,254,128,64,64,64, + 32,64,64,64,128,6,2,2,7,0,2,100,152,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,2,0,1,1,7,7,3,1,254,128,0,128,128,128,128, + 128,4,7,7,5,0,255,32,112,144,128,144,96,64,5,7, + 7,5,0,0,48,80,64,224,64,200,240,5,6,6,5,0, + 1,136,112,80,80,112,136,5,7,7,5,0,0,136,80,216, + 32,248,32,112,1,7,7,2,0,0,128,128,128,0,128,128, + 128,4,9,9,5,0,254,112,144,64,160,144,80,32,144,224, + 3,1,1,5,1,5,160,7,7,7,9,1,0,56,68,154, + 162,154,68,56,3,5,5,4,0,2,192,32,160,0,224,4, + 4,4,5,0,1,80,160,160,80,5,2,2,7,1,1,248, + 8,3,1,1,4,0,2,224,7,7,7,9,1,0,56,68, + 186,178,170,68,56,3,1,1,4,0,5,224,4,4,4,4, + 0,3,96,144,144,96,5,7,7,6,0,0,32,32,248,32, + 32,0,248,3,4,4,3,0,3,96,160,64,224,3,4,4, + 3,0,3,224,64,32,192,2,2,2,3,0,5,64,128,5, + 7,7,5,0,254,144,144,144,144,232,128,128,6,9,9,6, + 0,254,124,232,232,232,104,40,40,40,40,1,1,1,2,0, + 2,128,3,3,3,4,0,253,64,32,192,3,4,4,3,0, + 3,64,192,64,224,3,5,5,4,0,2,64,160,64,0,224, + 4,4,4,5,0,1,160,80,80,160,7,7,7,8,0,0, + 68,200,72,244,44,62,68,7,7,7,8,0,0,68,200,72, + 246,42,36,78,7,7,7,8,0,0,228,72,40,212,44,62, + 68,3,7,7,4,0,254,64,0,64,64,128,160,224,7,10, + 10,8,0,0,32,16,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,8,16,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,16,40,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,20,40,0,16,56,40,40,124,68,238,7,9, + 9,8,0,0,40,0,16,56,40,40,124,68,238,7,10,10, + 8,0,0,16,40,16,16,56,40,40,124,68,238,8,7,7, + 9,0,0,31,57,40,46,120,73,239,6,10,10,7,0,253, + 124,196,128,128,128,196,120,32,16,96,5,10,10,6,0,0, + 64,32,0,248,72,64,112,64,72,248,5,10,10,6,0,0, + 16,32,0,248,72,64,112,64,72,248,5,10,10,6,0,0, + 32,80,0,248,72,64,112,64,72,248,5,9,9,6,0,0, + 80,0,248,72,64,112,64,72,248,3,10,10,4,0,0,128, + 64,0,224,64,64,64,64,64,224,3,10,10,4,0,0,32, + 64,0,224,64,64,64,64,64,224,3,10,10,4,0,0,64, + 160,0,224,64,64,64,64,64,224,3,9,9,4,0,0,160, + 0,224,64,64,64,64,64,224,6,7,7,7,0,0,248,76, + 68,228,68,76,248,7,10,10,8,0,0,20,40,0,206,100, + 100,84,84,76,228,6,10,10,7,0,0,32,16,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,16,32,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,16,40,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,40,80,0,120,204, + 132,132,132,204,120,6,9,9,7,0,0,72,0,120,204,132, + 132,132,204,120,5,5,5,6,0,0,136,80,32,80,136,8, + 9,9,8,255,255,1,62,102,74,66,82,102,124,128,7,10, + 10,8,0,0,32,16,0,238,68,68,68,68,108,56,7,10, + 10,8,0,0,8,16,0,238,68,68,68,68,108,56,7,10, + 10,8,0,0,16,40,0,238,68,68,68,68,108,56,7,9, + 9,8,0,0,40,0,238,68,68,68,68,108,56,7,10,10, + 8,0,0,8,16,0,198,68,40,56,16,16,56,5,7,7, + 6,0,0,224,64,112,72,112,64,224,4,7,7,5,0,0, + 32,80,80,96,80,80,224,3,8,8,4,0,0,128,64,0, + 192,32,96,160,224,3,8,8,4,0,0,32,64,0,192,32, + 96,160,224,3,8,8,4,0,0,64,160,0,192,32,96,160, + 224,4,8,8,4,0,0,80,160,0,192,32,96,160,224,3, + 7,7,4,0,0,160,0,192,32,96,160,224,3,8,8,4, + 0,0,64,160,64,192,32,96,160,224,5,5,5,6,0,0, + 216,40,112,160,216,3,8,8,4,0,253,96,128,128,128,96, + 64,32,192,3,8,8,4,0,0,128,64,0,96,160,192,128, + 96,3,8,8,4,0,0,32,64,0,96,160,192,128,96,3, + 8,8,4,0,0,64,160,0,96,160,192,128,96,3,7,7, + 4,0,0,160,0,96,160,192,128,96,2,8,8,3,0,0, + 128,64,0,192,64,64,64,64,3,8,8,3,0,0,32,64, + 0,192,64,64,64,64,3,8,8,3,0,0,64,160,0,192, + 64,64,64,64,3,7,7,3,0,0,160,0,192,64,64,64, + 64,4,8,8,5,0,0,64,112,160,112,144,144,144,96,5, + 8,8,5,0,0,80,160,0,224,144,144,144,216,4,8,8, + 5,0,0,64,32,0,96,144,144,144,96,4,8,8,5,0, + 0,32,64,0,96,144,144,144,96,4,8,8,5,0,0,64, + 160,0,96,144,144,144,96,4,8,8,5,0,0,80,160,0, + 96,144,144,144,96,4,7,7,5,0,0,160,0,96,144,144, + 144,96,5,5,5,6,0,0,32,0,248,0,32,6,7,7, + 5,255,255,4,56,72,72,72,112,128,5,8,8,5,0,0, + 64,32,0,144,144,144,144,104,5,8,8,5,0,0,32,64, + 0,144,144,144,144,104,5,8,8,5,0,0,32,80,0,144, + 144,144,144,104,5,7,7,5,0,0,80,0,144,144,144,144, + 104,6,10,10,5,255,254,16,32,0,220,72,80,48,32,96, + 192,5,10,10,5,255,253,192,64,112,72,72,72,112,64,64, + 224,6,9,9,5,255,254,80,0,220,72,80,48,32,96,192 + }; +/* + Fontname: -Adobe-Times-Medium-R-Normal--11-80-100-100-P-54-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=11 h= 9 x= 1 y= 6 dx=10 dy= 0 ascent= 8 len=14 + Font Bounding box w=12 h=17 x=-2 y=-4 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR08r[1198] U8G_SECTION(".progmem.u8g_font_timR08r") = { + 0,12,17,254,252,7,1,147,3,56,32,127,254,8,253,7, + 254,0,0,0,2,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,3,2,2,4,0,5,160,160,5,7,7,5, + 0,0,80,80,248,80,248,80,80,4,9,9,5,0,255,32, + 112,144,128,96,16,144,224,32,7,7,7,8,0,0,126,164, + 168,86,42,42,68,8,7,7,8,0,0,48,80,110,116,152, + 141,118,1,2,2,2,0,5,128,128,3,9,9,4,0,254, + 32,64,64,128,128,128,64,64,32,3,9,9,4,0,254,128, + 64,64,32,32,32,64,64,128,3,3,3,5,1,4,160,64, + 160,5,5,5,6,0,0,32,32,248,32,32,2,2,2,3, + 0,255,192,64,3,1,1,4,0,2,224,1,1,1,3,1, + 0,128,3,7,7,3,0,0,32,32,64,64,64,128,128,4, + 7,7,5,0,0,96,144,144,144,144,144,96,3,7,7,5, + 1,0,64,192,64,64,64,64,224,4,7,7,5,0,0,96, + 144,16,32,32,64,240,4,7,7,5,0,0,96,144,16,96, + 16,16,224,5,7,7,5,0,0,16,48,80,144,248,16,16, + 4,7,7,5,0,0,112,64,224,16,16,16,224,4,7,7, + 5,0,0,48,64,224,144,144,144,96,4,7,7,5,0,0, + 240,144,32,32,64,64,64,4,7,7,5,0,0,96,144,144, + 96,144,144,96,4,7,7,5,0,0,96,144,144,144,112,32, + 192,1,5,5,3,1,0,128,0,0,0,128,2,6,6,3, + 0,255,64,0,0,0,192,64,3,5,5,5,1,0,32,64, + 128,64,32,5,3,3,6,0,1,248,0,248,3,5,5,5, + 0,0,128,64,32,64,128,3,7,7,4,0,0,224,160,32, + 64,64,0,64,8,9,9,9,0,254,60,66,157,165,165,173, + 146,64,62,7,7,7,8,0,0,16,56,40,40,124,68,238, + 5,7,7,6,0,0,240,72,72,112,72,72,240,6,7,7, + 7,0,0,124,196,128,128,128,196,120,6,7,7,7,0,0, + 248,76,68,68,68,76,248,5,7,7,6,0,0,248,72,64, + 112,64,72,248,5,7,7,6,0,0,248,72,64,112,64,64, + 224,6,7,7,7,0,0,124,196,128,156,132,196,120,7,7, + 7,8,0,0,238,68,68,124,68,68,238,3,7,7,4,0, + 0,224,64,64,64,64,64,224,4,7,7,4,0,0,112,32, + 32,32,32,160,192,6,7,7,7,0,0,236,72,80,96,80, + 72,236,5,7,7,6,0,0,224,64,64,64,64,72,248,9, + 7,14,10,0,0,227,128,99,0,85,0,85,0,93,0,73, + 0,235,128,7,7,7,8,0,0,238,100,84,84,76,76,228, + 6,7,7,7,0,0,120,204,132,132,132,204,120,5,7,7, + 6,0,0,240,72,72,112,64,64,224,6,9,9,7,0,254, + 120,204,132,132,132,204,112,24,12,6,7,7,7,0,0,240, + 72,72,112,80,72,236,4,7,7,5,0,0,112,144,192,96, + 16,144,224,5,7,7,6,0,0,248,168,32,32,32,32,112, + 7,7,7,8,0,0,238,68,68,68,68,108,56,7,7,7, + 8,0,0,238,68,108,40,40,16,16,11,7,14,10,255,0, + 238,224,68,64,100,192,46,128,42,128,17,0,17,0,7,7, + 7,8,0,0,238,68,40,16,40,68,238,7,7,7,8,0, + 0,238,68,40,56,16,16,56,5,7,7,6,0,0,248,136, + 16,32,64,136,248,2,9,9,3,0,254,192,128,128,128,128, + 128,128,128,192,3,7,7,3,0,0,128,128,64,64,64,32, + 32,2,9,9,3,0,254,192,64,64,64,64,64,64,64,192, + 3,3,3,5,1,4,64,160,160,5,1,1,5,0,253,248, + 2,2,2,3,0,6,128,64,3,5,5,4,0,0,192,32, + 96,160,224,5,7,7,5,255,0,192,64,112,72,72,72,112, + 3,5,5,4,0,0,96,128,128,128,96,5,7,7,5,0, + 0,48,16,112,144,144,144,104,3,5,5,4,0,0,96,160, + 192,128,96,4,7,7,4,0,0,48,64,224,64,64,64,224, + 4,7,7,5,0,254,112,160,160,64,96,144,224,6,7,7, + 5,255,0,192,64,112,72,72,72,108,2,7,7,3,0,0, + 64,0,192,64,64,64,64,3,9,9,3,255,254,32,0,96, + 32,32,32,32,32,192,6,7,7,5,255,0,192,64,72,80, + 112,72,76,3,7,7,4,0,0,192,64,64,64,64,64,224, + 8,5,5,8,0,0,236,146,146,146,219,5,5,5,5,0, + 0,224,144,144,144,216,4,5,5,5,0,0,96,144,144,144, + 96,5,8,8,5,255,253,240,72,72,72,112,64,64,224,5, + 8,8,5,0,253,112,144,144,144,112,16,16,56,3,5,5, + 4,0,0,160,96,64,64,224,3,5,5,4,0,0,96,128, + 64,32,224,4,6,6,4,0,0,64,224,64,64,64,48,5, + 5,5,5,0,0,216,144,144,144,104,6,5,5,5,255,0, + 236,72,40,48,16,9,5,10,8,255,0,237,128,73,0,42, + 0,54,0,20,0,5,5,5,6,0,0,216,80,32,80,216, + 6,7,7,5,255,254,220,72,80,48,32,96,192,4,5,5, + 5,0,0,240,32,64,144,240,3,9,9,4,0,254,32,64, + 64,64,128,64,64,64,32,1,9,9,2,0,254,128,128,128, + 128,128,128,128,128,128,3,9,9,4,0,254,128,64,64,64, + 32,64,64,64,128,6,2,2,7,0,2,100,152,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=13 h=14 x= 2 y= 8 dx=13 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR10[3359] U8G_SECTION(".progmem.u8g_font_timR10") = { + 0,17,24,254,250,10,2,4,4,92,32,255,253,14,253,10, + 253,0,0,0,3,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,3,3,3,6,1,7,160,160,160, + 7,10,10,7,0,0,20,20,126,40,40,40,252,80,80,80, + 5,12,12,7,1,255,32,120,168,160,160,112,40,40,40,168, + 240,32,9,10,20,12,1,0,113,128,223,0,146,0,148,0, + 104,0,11,0,22,128,36,128,68,128,67,0,10,10,20,11, + 1,0,24,0,36,0,36,0,56,0,19,128,121,0,202,0, + 132,0,206,64,115,128,1,3,3,3,1,7,128,128,128,3, + 13,13,5,1,253,32,32,64,64,128,128,128,128,128,64,64, + 32,32,3,13,13,5,1,253,128,128,64,64,32,32,32,32, + 32,64,64,128,128,5,6,6,7,1,4,32,168,112,112,168, + 32,7,7,7,8,0,0,16,16,16,254,16,16,16,2,3, + 3,4,1,254,192,64,128,3,1,1,4,0,3,224,2,1, + 1,4,1,0,192,4,12,12,4,0,254,16,16,16,32,32, + 32,64,64,64,128,128,128,6,10,10,7,1,0,120,204,132, + 132,132,132,132,132,204,120,5,10,10,7,1,0,32,224,32, + 32,32,32,32,32,32,248,5,10,10,7,1,0,112,216,136, + 8,24,16,32,64,136,248,6,10,10,7,0,0,120,140,4, + 8,48,56,4,4,204,120,6,10,10,7,0,0,8,24,24, + 40,104,72,136,252,8,8,5,10,10,7,1,0,120,64,128, + 224,48,24,8,8,144,224,6,10,10,7,0,0,12,16,32, + 64,120,204,132,132,204,120,6,10,10,7,0,0,252,132,8, + 8,16,16,32,32,64,64,5,10,10,7,1,0,112,152,136, + 200,112,152,136,136,136,112,6,10,10,7,1,0,120,204,132, + 132,204,120,8,16,32,192,2,7,7,4,1,0,192,0,0, + 0,0,0,192,2,9,9,4,1,254,192,0,0,0,0,0, + 192,64,128,7,7,7,8,0,0,6,24,96,192,96,24,6, + 7,3,3,8,0,2,254,0,254,7,7,7,8,0,0,192, + 48,12,6,12,48,192,5,10,10,6,0,0,112,136,136,8, + 16,32,32,0,32,32,12,12,24,13,0,254,15,128,48,96, + 96,32,70,144,137,16,145,16,145,16,147,32,205,192,64,0, + 48,192,15,0,9,10,20,11,1,0,8,0,8,0,20,0, + 20,0,34,0,34,0,62,0,65,0,65,0,227,128,7,10, + 10,9,1,0,252,70,66,70,124,70,66,66,70,252,8,10, + 10,10,1,0,61,99,65,129,128,128,128,193,98,60,9,10, + 20,10,0,0,254,0,35,0,33,0,32,128,32,128,32,128, + 32,128,33,0,35,0,254,0,7,10,10,9,1,0,254,66, + 64,68,124,68,64,66,66,254,7,10,10,8,1,0,254,66, + 64,68,124,68,64,64,64,224,9,10,20,11,1,0,61,0, + 99,0,65,0,129,0,128,0,135,128,129,0,193,0,99,0, + 62,0,8,10,10,10,1,0,231,66,66,66,126,66,66,66, + 66,231,3,10,10,5,1,0,224,64,64,64,64,64,64,64, + 64,224,4,10,10,6,1,0,112,32,32,32,32,32,32,32, + 160,192,8,10,10,10,1,0,238,68,72,80,112,80,72,68, + 70,231,7,10,10,9,1,0,224,64,64,64,64,64,64,64, + 66,254,11,10,20,13,1,0,224,224,96,192,81,64,81,64, + 91,64,74,64,74,64,78,64,68,64,228,224,9,10,20,11, + 1,0,227,128,97,0,81,0,89,0,73,0,77,0,69,0, + 69,0,67,0,227,0,8,10,10,10,1,0,60,102,66,129, + 129,129,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,13,13,10,1,253,60,102,66,129, + 129,129,129,66,102,60,8,6,3,9,10,20,9,0,0,252, + 0,38,0,34,0,34,0,38,0,60,0,36,0,34,0,35, + 0,241,128,6,10,10,8,1,0,116,204,132,192,112,24,4, + 132,204,184,7,10,10,9,1,0,254,146,146,16,16,16,16, + 16,16,56,8,10,10,10,1,0,231,66,66,66,66,66,66, + 66,102,60,9,10,20,9,0,0,227,128,65,0,99,0,34, + 0,34,0,54,0,20,0,28,0,8,0,8,0,13,10,20, + 13,0,0,231,56,66,16,98,48,34,32,37,32,53,96,21, + 64,24,192,8,128,8,128,10,10,20,10,0,0,115,128,33, + 0,18,0,18,0,12,0,12,0,18,0,33,0,97,128,243, + 192,9,10,20,9,0,0,227,128,65,0,34,0,34,0,20, + 0,8,0,8,0,8,0,8,0,28,0,8,10,10,8,0, + 0,127,67,2,4,8,16,32,64,193,255,3,13,13,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,224,4,10, + 10,4,0,0,128,128,64,64,64,32,32,32,16,16,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,7,1,5,32,80,80,136,136,7,1,1,7, + 0,253,254,3,3,3,5,1,8,128,192,32,6,7,7,7, + 1,0,112,200,24,104,136,200,116,6,10,10,7,0,0,192, + 64,64,88,108,68,68,68,76,120,6,7,7,7,1,0,120, + 204,128,128,128,196,120,6,10,10,7,1,0,24,8,8,120, + 200,136,136,136,216,116,6,7,7,7,1,0,112,136,248,128, + 128,196,120,5,10,10,4,0,0,56,96,64,248,64,64,64, + 64,64,240,6,10,10,7,1,253,120,208,136,200,112,64,120, + 132,204,112,7,10,10,7,0,0,192,64,64,88,108,68,68, + 68,68,238,3,10,10,3,0,0,64,64,0,192,64,64,64, + 64,64,224,3,13,13,4,0,253,32,32,0,96,32,32,32, + 32,32,32,32,160,192,7,10,10,7,0,0,192,64,64,76, + 72,112,80,72,76,230,3,10,10,3,0,0,192,64,64,64, + 64,64,64,64,64,224,11,7,14,11,0,0,219,128,110,192, + 68,64,68,64,68,64,68,64,238,224,7,7,7,7,0,0, + 216,108,68,68,68,68,238,5,7,7,7,1,0,112,216,136, + 136,136,216,112,6,10,10,7,0,253,216,108,68,68,68,108, + 88,64,64,224,6,10,10,7,1,253,120,200,136,136,136,216, + 104,8,8,28,5,7,7,5,0,0,184,96,64,64,64,64, + 224,4,7,7,6,1,0,112,144,192,96,48,144,224,4,8, + 8,4,0,0,64,240,64,64,64,64,64,48,7,7,7,7, + 0,0,204,68,68,68,68,108,54,7,7,7,7,0,0,238, + 68,68,40,40,16,16,11,7,14,11,0,0,238,224,68,64, + 68,64,36,128,59,128,17,0,17,0,7,7,7,7,0,0, + 238,68,56,16,56,68,238,7,10,10,7,0,253,238,68,68, + 40,40,16,48,32,160,192,6,7,7,6,0,0,252,136,24, + 48,96,196,252,5,13,13,7,1,253,24,32,32,32,32,64, + 128,64,32,32,32,32,24,1,10,10,3,1,0,128,128,128, + 128,128,128,128,128,128,128,5,13,13,7,1,253,192,32,32, + 32,32,16,8,16,32,32,32,32,192,7,2,2,8,0,3, + 98,156,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,3,0,1,1,10,10,5,2,253,128, + 128,0,128,128,128,128,128,128,128,6,9,9,7,0,255,4, + 124,204,144,144,160,228,120,128,7,10,10,8,0,0,28,52, + 32,32,248,32,32,32,226,188,5,7,7,7,1,1,136,112, + 136,136,136,112,136,7,10,10,7,0,0,238,68,108,40,124, + 16,124,16,16,56,1,10,10,3,1,0,128,128,128,128,0, + 0,128,128,128,128,5,13,13,7,1,253,56,88,64,96,112, + 152,136,200,112,48,16,208,224,3,2,2,5,1,8,160,160, + 10,10,20,12,1,0,30,0,97,128,78,128,146,64,144,64, + 144,64,146,64,76,128,97,128,30,0,3,6,6,4,0,4, + 224,32,160,224,0,224,6,6,6,7,0,0,36,72,144,144, + 72,36,7,4,4,9,1,2,254,2,2,2,3,1,1,4, + 0,3,224,10,10,20,12,1,0,30,0,97,128,92,128,146, + 64,156,64,148,64,146,64,82,128,97,128,30,0,4,1,1, + 4,0,8,240,4,4,4,6,1,6,96,144,144,96,7,7, + 7,8,0,0,16,16,254,16,16,0,254,4,6,6,4,0, + 4,96,144,16,32,64,240,4,6,6,4,0,4,96,144,32, + 16,144,96,3,3,3,5,1,8,32,96,128,7,10,10,7, + 0,253,204,68,68,68,68,108,118,64,64,96,7,13,13,7, + 0,253,62,116,244,244,244,116,52,20,20,20,20,20,20,1, + 2,2,4,2,3,128,128,3,3,3,5,1,253,64,32,192, + 3,6,6,4,0,4,64,192,64,64,64,224,4,6,6,5, + 0,4,96,144,144,96,0,240,6,6,6,7,1,0,144,72, + 36,36,72,144,10,10,20,10,0,0,65,0,194,0,66,0, + 68,0,68,128,233,128,10,128,20,128,23,192,32,128,10,10, + 20,10,0,0,65,0,194,0,66,0,68,0,69,128,234,64, + 8,64,16,128,17,0,35,192,10,10,20,10,0,0,97,0, + 146,0,34,0,20,0,148,128,105,128,10,128,20,128,23,192, + 32,128,5,10,10,6,0,253,32,32,0,32,32,64,128,136, + 136,112,9,14,28,11,1,0,16,0,24,0,4,0,0,0, + 8,0,8,0,20,0,20,0,34,0,34,0,62,0,65,0, + 65,0,227,128,9,14,28,11,1,0,4,0,12,0,16,0, + 0,0,8,0,8,0,20,0,20,0,34,0,34,0,62,0, + 65,0,65,0,227,128,9,14,28,11,1,0,8,0,28,0, + 34,0,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 62,0,65,0,65,0,227,128,9,14,28,11,1,0,18,0, + 42,0,36,0,0,0,8,0,8,0,20,0,20,0,34,0, + 34,0,62,0,65,0,65,0,227,128,9,13,26,11,1,0, + 36,0,36,0,0,0,8,0,8,0,20,0,20,0,34,0, + 34,0,62,0,65,0,65,0,227,128,9,14,28,11,1,0, + 24,0,36,0,24,0,0,0,8,0,8,0,20,0,20,0, + 34,0,34,0,62,0,65,0,65,0,227,128,11,10,20,13, + 1,0,31,224,12,32,20,0,20,64,39,192,36,64,60,0, + 68,32,68,32,239,224,8,13,13,10,1,253,61,99,65,129, + 128,128,128,193,98,60,8,4,24,7,14,14,9,1,0,32, + 48,8,0,254,66,64,68,124,68,64,66,66,254,7,14,14, + 9,1,0,4,12,16,0,254,66,64,68,124,68,64,66,66, + 254,7,14,14,9,1,0,16,56,68,0,254,66,64,68,124, + 68,64,66,66,254,7,13,13,9,1,0,36,36,0,254,66, + 64,68,124,68,64,66,66,254,3,14,14,5,1,0,128,192, + 32,0,224,64,64,64,64,64,64,64,64,224,3,14,14,5, + 1,0,32,96,128,0,224,64,64,64,64,64,64,64,64,224, + 5,14,14,5,0,0,32,112,136,0,112,32,32,32,32,32, + 32,32,32,112,3,13,13,5,1,0,160,160,0,224,64,64, + 64,64,64,64,64,64,224,9,10,20,10,0,0,254,0,35, + 0,33,0,32,128,248,128,32,128,32,128,33,0,35,0,254, + 0,9,14,28,11,1,0,18,0,42,0,36,0,0,0,227, + 128,97,0,81,0,89,0,73,0,77,0,69,0,69,0,67, + 0,227,0,8,14,14,10,1,0,32,48,8,0,60,102,66, + 129,129,129,129,66,102,60,8,14,14,10,1,0,4,12,16, + 0,60,102,66,129,129,129,129,66,102,60,8,14,14,10,1, + 0,16,56,68,0,60,102,66,129,129,129,129,66,102,60,8, + 14,14,10,1,0,36,84,72,0,60,102,66,129,129,129,129, + 66,102,60,8,13,13,10,1,0,36,36,0,60,102,66,129, + 129,129,129,66,102,60,7,7,7,8,1,0,130,68,40,16, + 40,68,130,9,12,24,10,0,255,0,128,31,0,49,0,35, + 0,68,128,76,128,72,128,80,128,49,0,99,0,94,0,128, + 0,8,14,14,10,1,0,32,48,8,0,231,66,66,66,66, + 66,66,66,102,60,8,14,14,10,1,0,4,12,16,0,231, + 66,66,66,66,66,66,66,102,60,8,14,14,10,1,0,16, + 56,68,0,231,66,66,66,66,66,66,66,102,60,8,13,13, + 10,1,0,36,36,0,231,66,66,66,66,66,66,66,102,60, + 9,14,28,9,0,0,2,0,6,0,8,0,0,0,227,128, + 65,0,34,0,34,0,20,0,8,0,8,0,8,0,8,0, + 28,0,6,10,10,8,1,0,224,64,120,76,68,68,76,120, + 64,224,6,10,10,7,0,0,56,108,68,72,112,88,76,68, + 84,216,6,11,11,7,1,0,64,96,16,0,112,200,24,104, + 136,200,116,6,11,11,7,1,0,8,24,32,0,112,200,24, + 104,136,200,116,6,11,11,7,1,0,32,112,136,0,112,200, + 24,104,136,200,116,6,11,11,7,1,0,72,168,144,0,112, + 200,24,104,136,200,116,6,10,10,7,1,0,80,80,0,112, + 200,24,104,136,200,116,6,11,11,7,1,0,48,72,48,0, + 112,200,24,104,136,200,116,9,7,14,11,1,0,127,0,201, + 128,31,0,104,0,136,0,204,128,119,0,6,10,10,7,1, + 253,112,200,128,128,128,196,120,32,16,96,6,11,11,7,1, + 0,64,96,16,0,112,136,248,128,128,196,120,6,11,11,7, + 1,0,8,24,32,0,112,136,248,128,128,196,120,6,11,11, + 7,1,0,32,112,136,0,112,136,248,128,128,196,120,6,10, + 10,7,1,0,80,80,0,112,136,248,128,128,196,120,3,11, + 11,3,0,0,128,192,32,0,192,64,64,64,64,64,224,3, + 11,11,3,0,0,32,96,128,0,192,64,64,64,64,64,224, + 5,11,11,3,255,0,32,112,136,0,96,32,32,32,32,32, + 112,3,10,10,3,0,0,160,160,0,192,64,64,64,64,64, + 224,5,10,10,7,1,0,216,96,144,120,216,136,136,136,216, + 112,7,11,11,7,0,0,36,84,72,0,216,108,68,68,68, + 68,238,5,11,11,7,1,0,64,96,16,0,112,216,136,136, + 136,216,112,5,11,11,7,1,0,16,48,64,0,112,216,136, + 136,136,216,112,5,11,11,7,1,0,32,112,136,0,112,216, + 136,136,136,216,112,5,11,11,7,1,0,72,168,144,0,112, + 216,136,136,136,216,112,5,10,10,7,1,0,80,80,0,112, + 216,136,136,136,216,112,7,7,7,8,1,0,16,16,0,254, + 0,16,16,7,9,9,7,0,255,2,60,108,68,68,68,108, + 120,128,7,11,11,7,0,0,32,48,8,0,204,68,68,68, + 68,108,54,7,11,11,7,0,0,8,24,32,0,204,68,68, + 68,68,108,54,7,11,11,7,0,0,16,56,68,0,204,68, + 68,68,68,108,54,7,10,10,7,0,0,40,40,0,204,68, + 68,68,68,108,54,7,14,14,7,0,253,4,12,16,0,238, + 68,68,40,40,16,48,32,160,192,6,13,13,7,0,253,192, + 64,64,88,108,68,68,68,108,88,64,64,224,7,13,13,7, + 0,253,40,40,0,238,68,68,40,40,16,48,32,160,192}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=13 h=13 x= 2 y= 8 dx=13 dy= 0 ascent=11 len=24 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR10r[1571] U8G_SECTION(".progmem.u8g_font_timR10r") = { + 0,17,24,254,250,10,2,4,4,92,32,127,253,11,253,10, + 253,0,0,0,3,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,3,3,3,6,1,7,160,160,160, + 7,10,10,7,0,0,20,20,126,40,40,40,252,80,80,80, + 5,12,12,7,1,255,32,120,168,160,160,112,40,40,40,168, + 240,32,9,10,20,12,1,0,113,128,223,0,146,0,148,0, + 104,0,11,0,22,128,36,128,68,128,67,0,10,10,20,11, + 1,0,24,0,36,0,36,0,56,0,19,128,121,0,202,0, + 132,0,206,64,115,128,1,3,3,3,1,7,128,128,128,3, + 13,13,5,1,253,32,32,64,64,128,128,128,128,128,64,64, + 32,32,3,13,13,5,1,253,128,128,64,64,32,32,32,32, + 32,64,64,128,128,5,6,6,7,1,4,32,168,112,112,168, + 32,7,7,7,8,0,0,16,16,16,254,16,16,16,2,3, + 3,4,1,254,192,64,128,3,1,1,4,0,3,224,2,1, + 1,4,1,0,192,4,12,12,4,0,254,16,16,16,32,32, + 32,64,64,64,128,128,128,6,10,10,7,1,0,120,204,132, + 132,132,132,132,132,204,120,5,10,10,7,1,0,32,224,32, + 32,32,32,32,32,32,248,5,10,10,7,1,0,112,216,136, + 8,24,16,32,64,136,248,6,10,10,7,0,0,120,140,4, + 8,48,56,4,4,204,120,6,10,10,7,0,0,8,24,24, + 40,104,72,136,252,8,8,5,10,10,7,1,0,120,64,128, + 224,48,24,8,8,144,224,6,10,10,7,0,0,12,16,32, + 64,120,204,132,132,204,120,6,10,10,7,0,0,252,132,8, + 8,16,16,32,32,64,64,5,10,10,7,1,0,112,152,136, + 200,112,152,136,136,136,112,6,10,10,7,1,0,120,204,132, + 132,204,120,8,16,32,192,2,7,7,4,1,0,192,0,0, + 0,0,0,192,2,9,9,4,1,254,192,0,0,0,0,0, + 192,64,128,7,7,7,8,0,0,6,24,96,192,96,24,6, + 7,3,3,8,0,2,254,0,254,7,7,7,8,0,0,192, + 48,12,6,12,48,192,5,10,10,6,0,0,112,136,136,8, + 16,32,32,0,32,32,12,12,24,13,0,254,15,128,48,96, + 96,32,70,144,137,16,145,16,145,16,147,32,205,192,64,0, + 48,192,15,0,9,10,20,11,1,0,8,0,8,0,20,0, + 20,0,34,0,34,0,62,0,65,0,65,0,227,128,7,10, + 10,9,1,0,252,70,66,70,124,70,66,66,70,252,8,10, + 10,10,1,0,61,99,65,129,128,128,128,193,98,60,9,10, + 20,10,0,0,254,0,35,0,33,0,32,128,32,128,32,128, + 32,128,33,0,35,0,254,0,7,10,10,9,1,0,254,66, + 64,68,124,68,64,66,66,254,7,10,10,8,1,0,254,66, + 64,68,124,68,64,64,64,224,9,10,20,11,1,0,61,0, + 99,0,65,0,129,0,128,0,135,128,129,0,193,0,99,0, + 62,0,8,10,10,10,1,0,231,66,66,66,126,66,66,66, + 66,231,3,10,10,5,1,0,224,64,64,64,64,64,64,64, + 64,224,4,10,10,6,1,0,112,32,32,32,32,32,32,32, + 160,192,8,10,10,10,1,0,238,68,72,80,112,80,72,68, + 70,231,7,10,10,9,1,0,224,64,64,64,64,64,64,64, + 66,254,11,10,20,13,1,0,224,224,96,192,81,64,81,64, + 91,64,74,64,74,64,78,64,68,64,228,224,9,10,20,11, + 1,0,227,128,97,0,81,0,89,0,73,0,77,0,69,0, + 69,0,67,0,227,0,8,10,10,10,1,0,60,102,66,129, + 129,129,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,13,13,10,1,253,60,102,66,129, + 129,129,129,66,102,60,8,6,3,9,10,20,9,0,0,252, + 0,38,0,34,0,34,0,38,0,60,0,36,0,34,0,35, + 0,241,128,6,10,10,8,1,0,116,204,132,192,112,24,4, + 132,204,184,7,10,10,9,1,0,254,146,146,16,16,16,16, + 16,16,56,8,10,10,10,1,0,231,66,66,66,66,66,66, + 66,102,60,9,10,20,9,0,0,227,128,65,0,99,0,34, + 0,34,0,54,0,20,0,28,0,8,0,8,0,13,10,20, + 13,0,0,231,56,66,16,98,48,34,32,37,32,53,96,21, + 64,24,192,8,128,8,128,10,10,20,10,0,0,115,128,33, + 0,18,0,18,0,12,0,12,0,18,0,33,0,97,128,243, + 192,9,10,20,9,0,0,227,128,65,0,34,0,34,0,20, + 0,8,0,8,0,8,0,8,0,28,0,8,10,10,8,0, + 0,127,67,2,4,8,16,32,64,193,255,3,13,13,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,224,4,10, + 10,4,0,0,128,128,64,64,64,32,32,32,16,16,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,7,1,5,32,80,80,136,136,7,1,1,7, + 0,253,254,3,3,3,5,1,8,128,192,32,6,7,7,7, + 1,0,112,200,24,104,136,200,116,6,10,10,7,0,0,192, + 64,64,88,108,68,68,68,76,120,6,7,7,7,1,0,120, + 204,128,128,128,196,120,6,10,10,7,1,0,24,8,8,120, + 200,136,136,136,216,116,6,7,7,7,1,0,112,136,248,128, + 128,196,120,5,10,10,4,0,0,56,96,64,248,64,64,64, + 64,64,240,6,10,10,7,1,253,120,208,136,200,112,64,120, + 132,204,112,7,10,10,7,0,0,192,64,64,88,108,68,68, + 68,68,238,3,10,10,3,0,0,64,64,0,192,64,64,64, + 64,64,224,3,13,13,4,0,253,32,32,0,96,32,32,32, + 32,32,32,32,160,192,7,10,10,7,0,0,192,64,64,76, + 72,112,80,72,76,230,3,10,10,3,0,0,192,64,64,64, + 64,64,64,64,64,224,11,7,14,11,0,0,219,128,110,192, + 68,64,68,64,68,64,68,64,238,224,7,7,7,7,0,0, + 216,108,68,68,68,68,238,5,7,7,7,1,0,112,216,136, + 136,136,216,112,6,10,10,7,0,253,216,108,68,68,68,108, + 88,64,64,224,6,10,10,7,1,253,120,200,136,136,136,216, + 104,8,8,28,5,7,7,5,0,0,184,96,64,64,64,64, + 224,4,7,7,6,1,0,112,144,192,96,48,144,224,4,8, + 8,4,0,0,64,240,64,64,64,64,64,48,7,7,7,7, + 0,0,204,68,68,68,68,108,54,7,7,7,7,0,0,238, + 68,68,40,40,16,16,11,7,14,11,0,0,238,224,68,64, + 68,64,36,128,59,128,17,0,17,0,7,7,7,7,0,0, + 238,68,56,16,56,68,238,7,10,10,7,0,253,238,68,68, + 40,40,16,48,32,160,192,6,7,7,6,0,0,252,136,24, + 48,96,196,252,5,13,13,7,1,253,24,32,32,32,32,64, + 128,64,32,32,32,32,24,1,10,10,3,1,0,128,128,128, + 128,128,128,128,128,128,128,5,13,13,7,1,253,192,32,32, + 32,32,16,8,16,32,32,32,32,192,7,2,2,8,0,3, + 98,156,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--17-120-100-100-P-84-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=16 x= 2 y= 9 dx=16 dy= 0 ascent=15 len=30 + Font Bounding box w=19 h=26 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR12[3905] U8G_SECTION(".progmem.u8g_font_timR12") = { + 0,19,26,254,249,11,2,36,5,11,32,255,252,15,252,11, + 252,0,0,0,4,0,1,1,11,11,5,2,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,7,1,8,144,144, + 144,8,11,11,8,0,0,18,18,18,127,36,36,254,72,72, + 72,72,7,13,13,8,0,255,16,124,146,146,144,80,56,20, + 18,146,146,124,16,11,11,22,14,1,0,57,0,79,0,139, + 0,138,0,150,0,100,224,13,32,10,32,26,32,18,64,17, + 128,12,11,22,13,0,0,12,0,18,0,18,0,18,0,12, + 224,56,64,68,128,131,0,130,16,69,32,56,192,1,3,3, + 3,1,8,128,128,128,4,14,14,5,0,253,16,32,64,64, + 128,128,128,128,128,128,64,64,32,16,4,14,14,5,255,253, + 128,64,32,32,16,16,16,16,16,16,32,32,64,128,5,6, + 6,8,1,5,32,168,112,112,168,32,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,3,3,4,1,255,64,64,128, + 4,1,1,5,0,4,240,1,2,2,4,1,0,128,128,5, + 13,13,5,0,254,8,8,8,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,68,68,130,130,130,130,130, + 68,68,56,4,11,11,8,1,0,32,96,160,32,32,32,32, + 32,32,32,112,7,11,11,8,0,0,56,68,130,2,2,4, + 8,16,32,66,252,7,11,11,8,0,0,56,68,132,8,16, + 56,4,2,2,196,120,8,11,11,8,255,0,2,6,10,10, + 18,34,34,66,255,2,2,7,11,11,8,0,0,62,32,32, + 64,120,4,2,2,2,140,112,7,11,11,8,0,0,14,48, + 64,64,152,228,130,130,130,68,56,7,11,11,8,0,0,254, + 130,132,4,8,8,16,16,16,32,32,6,11,11,8,0,0, + 48,72,132,132,72,48,72,132,132,72,48,7,11,11,8,0, + 0,56,68,130,130,130,70,58,4,4,24,224,1,8,8,4, + 1,0,128,128,0,0,0,0,128,128,2,9,9,4,0,255, + 64,64,0,0,0,0,64,64,128,8,9,9,9,0,0,3, + 12,16,96,128,96,16,12,3,7,4,4,9,0,2,254,0, + 0,254,8,9,9,9,1,0,192,48,8,6,1,6,8,48, + 192,5,11,11,7,1,0,112,136,136,8,16,32,32,0,0, + 32,32,14,14,28,15,0,253,7,192,24,48,32,8,65,168, + 70,100,132,68,136,68,136,68,136,200,137,72,70,48,32,0, + 24,48,7,192,12,11,22,12,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 8,11,11,11,1,0,252,70,66,66,68,124,70,65,65,67, + 254,10,11,22,11,0,0,31,64,96,192,64,64,128,64,128, + 0,128,0,128,0,128,0,64,64,97,128,30,0,10,11,22, + 12,0,0,252,0,67,0,64,128,64,64,64,64,64,64,64, + 64,64,64,64,128,67,0,252,0,9,11,22,10,0,0,255, + 0,65,0,64,0,64,0,66,0,126,0,66,0,64,0,64, + 0,64,128,255,0,8,11,11,9,0,0,255,65,64,64,66, + 126,66,64,64,64,224,11,11,22,12,0,0,15,64,48,192, + 64,64,128,0,128,0,129,224,128,64,128,64,64,64,48,192, + 15,0,10,11,22,12,0,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,225,192,3,11, + 11,5,0,0,224,64,64,64,64,64,64,64,64,64,224,5, + 11,11,6,0,0,56,16,16,16,16,16,16,16,144,144,96, + 10,11,22,12,1,0,243,192,65,0,66,0,68,0,72,0, + 112,0,72,0,68,0,66,0,65,0,243,192,8,11,11,10, + 0,0,224,64,64,64,64,64,64,64,64,65,254,13,11,22, + 15,0,0,224,56,96,48,80,80,80,80,72,144,72,144,72, + 144,69,16,69,16,66,16,226,56,10,11,22,12,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,11,22,12,1,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,8,11,11,9,0,0,252,66,65,65,66,124,64,64,64, + 64,224,10,14,28,12,1,253,28,0,99,0,65,0,128,128, + 128,128,128,128,128,128,128,128,65,0,99,0,60,0,12,0, + 6,0,1,192,10,11,22,11,0,0,252,0,66,0,65,0, + 65,0,66,0,124,0,72,0,68,0,66,0,65,0,225,192, + 8,11,11,9,0,0,58,70,130,128,96,28,2,1,129,194, + 188,9,11,22,10,0,0,255,128,136,128,136,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,28,0,10,11,22, + 12,0,0,225,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,11,11,22,12,0,0,224, + 224,64,64,32,128,32,128,17,0,17,0,17,0,10,0,10, + 0,4,0,4,0,15,11,22,16,0,0,231,14,66,4,33, + 8,33,8,17,136,18,144,18,144,10,80,10,80,4,32,4, + 32,11,11,22,12,0,0,224,224,64,64,32,128,17,0,10, + 0,4,0,10,0,17,0,32,128,64,64,224,224,11,11,22, + 12,0,0,224,224,64,64,32,128,17,0,17,0,10,0,4, + 0,4,0,4,0,4,0,14,0,9,11,22,10,0,0,255, + 128,129,0,130,0,4,0,4,0,8,0,16,0,32,0,32, + 0,64,128,255,0,3,14,14,5,1,253,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,11,11,5,255,0,128, + 64,64,32,32,16,16,8,8,4,4,3,14,14,5,0,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,224,7,7, + 7,8,0,4,16,40,40,68,68,130,130,8,1,1,8,0, + 254,255,3,3,3,6,1,8,128,64,32,7,8,8,7,1, + 0,112,136,136,56,200,136,154,108,7,11,11,8,0,0,64, + 192,64,92,100,66,66,66,66,100,56,6,8,8,7,0,0, + 56,68,132,128,128,128,68,56,7,11,11,8,0,0,4,12, + 4,52,76,132,132,132,132,78,52,6,8,8,7,0,0,56, + 68,132,252,128,128,68,56,5,11,11,6,1,0,48,72,64, + 64,240,64,64,64,64,64,240,7,12,12,8,0,252,54,76, + 132,132,72,112,128,124,130,130,196,120,8,11,11,8,0,0, + 64,192,64,92,102,66,66,66,66,66,231,3,11,11,5,1, + 0,64,64,0,64,192,64,64,64,64,64,224,3,15,15,4, + 0,252,32,32,0,32,96,32,32,32,32,32,32,32,32,160, + 192,7,11,11,8,1,0,64,192,64,92,72,80,96,80,72, + 68,238,3,11,11,5,1,0,64,192,64,64,64,64,64,64, + 64,64,224,11,8,16,13,1,0,89,128,230,64,68,64,68, + 64,68,64,68,64,68,64,238,224,8,8,8,8,0,0,92, + 230,66,66,66,66,66,231,7,8,8,8,0,0,56,68,130, + 130,130,130,68,56,7,12,12,8,0,252,92,230,66,66,66, + 66,98,92,64,64,64,224,7,12,12,8,1,252,116,204,132, + 132,132,132,204,116,4,4,4,14,5,8,8,6,0,0,88, + 232,64,64,64,64,64,224,5,8,8,6,0,0,120,136,128, + 112,8,136,200,176,4,10,10,5,0,0,64,64,240,64,64, + 64,64,64,80,32,8,8,8,8,0,0,198,66,66,66,66, + 66,71,58,8,8,8,8,0,0,231,66,66,36,36,20,24, + 8,12,8,16,12,0,0,238,112,68,32,68,32,34,64,34, + 64,21,64,8,128,8,128,7,8,8,8,0,0,238,68,40, + 16,40,40,68,238,8,12,12,8,0,252,247,66,66,36,36, + 20,8,8,16,16,160,192,6,8,8,7,0,0,252,132,8, + 16,32,64,132,252,4,14,14,8,2,253,48,64,64,64,64, + 64,128,64,64,64,64,64,64,48,1,11,11,3,0,0,128, + 128,128,128,128,128,128,128,128,128,128,4,14,14,8,0,253, + 192,32,32,32,32,32,16,32,32,32,32,32,32,192,8,3, + 3,9,0,3,113,153,142,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,1,1,11, + 11,5,2,253,128,128,0,0,128,128,128,128,128,128,128,7, + 12,12,8,0,254,4,4,60,74,138,136,144,146,84,56,32, + 32,8,11,11,8,0,0,12,18,34,32,32,252,16,16,113, + 145,110,8,9,9,8,0,1,153,102,66,129,129,129,66,102, + 153,9,11,22,8,255,0,227,128,65,0,34,0,20,0,8, + 0,62,0,8,0,62,0,8,0,8,0,28,0,1,11,11, + 3,0,0,128,128,128,128,128,0,128,128,128,128,128,7,14, + 14,8,0,253,56,68,76,32,80,136,132,66,34,20,8,100, + 68,56,4,2,2,6,1,9,144,144,11,11,22,13,0,0, + 14,0,49,128,64,64,78,64,145,32,144,32,144,32,81,64, + 78,64,49,128,14,0,4,6,6,5,0,5,96,16,112,144, + 80,240,7,7,7,8,0,0,18,36,72,144,72,36,18,8, + 5,5,9,0,0,255,1,1,1,1,4,1,1,5,0,4, + 240,11,11,22,13,0,0,14,0,49,128,64,64,78,64,137, + 32,142,32,138,32,74,64,73,64,49,128,14,0,5,1,1, + 6,0,9,248,5,5,5,7,1,6,112,136,136,136,112,7, + 9,9,9,1,0,16,16,16,254,16,16,16,0,254,5,7, + 7,5,0,4,112,136,8,16,32,72,248,6,7,7,5,255, + 4,56,68,4,24,4,132,120,3,3,3,6,2,8,32,64, + 128,8,11,11,8,0,253,198,66,66,66,66,66,71,122,64, + 64,64,7,15,15,8,0,252,62,116,244,244,244,116,52,20, + 20,20,20,20,20,20,20,1,2,2,4,1,4,128,128,4, + 4,4,6,0,252,32,112,16,224,3,7,7,5,1,4,64, + 192,64,64,64,64,224,4,6,6,5,0,5,96,144,144,144, + 96,240,7,7,7,8,0,0,144,72,36,18,36,72,144,11, + 11,22,13,1,0,64,128,193,0,67,0,66,0,68,64,76, + 192,233,64,25,64,18,64,39,224,64,64,12,11,22,13,0, + 0,64,128,193,0,67,0,66,0,68,224,77,16,232,16,24, + 32,16,64,32,144,65,240,13,11,22,13,255,0,56,32,68, + 64,4,192,24,128,5,16,135,48,122,80,6,80,4,144,9, + 248,8,16,5,11,11,7,1,253,32,32,0,0,32,32,64, + 128,136,136,112,12,15,30,12,0,0,8,0,4,0,2,0, + 0,0,4,0,6,0,10,0,11,0,17,0,17,128,32,128, + 63,128,64,192,64,64,224,240,12,15,30,12,0,0,1,0, + 2,0,4,0,0,0,4,0,6,0,10,0,11,0,17,0, + 17,128,32,128,63,128,64,192,64,64,224,240,12,15,30,12, + 0,0,4,0,10,0,17,0,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 12,14,28,12,0,0,13,0,22,0,0,0,4,0,6,0, + 10,0,11,0,17,0,17,128,32,128,63,128,64,192,64,64, + 224,240,12,14,28,12,0,0,9,0,9,0,0,0,4,0, + 6,0,10,0,11,0,17,0,17,128,32,128,63,128,64,192, + 64,64,224,240,12,14,28,12,0,0,6,0,9,0,9,0, + 6,0,6,0,10,0,11,0,17,0,17,128,32,128,63,128, + 64,192,64,64,224,240,14,11,22,15,0,0,7,248,3,8, + 5,8,9,0,9,16,17,240,31,16,33,0,33,0,65,4, + 243,248,10,15,30,11,0,252,15,64,48,192,64,64,128,64, + 128,0,128,0,128,0,128,0,64,64,49,128,14,0,4,0, + 14,0,2,0,28,0,9,15,30,10,0,0,32,0,16,0, + 8,0,0,0,255,0,65,0,64,0,64,0,66,0,126,0, + 66,0,64,0,64,0,64,128,255,0,9,15,30,10,0,0, + 2,0,4,0,8,0,0,0,255,0,65,0,65,0,64,0, + 66,0,126,0,66,0,64,0,64,0,64,128,255,0,9,15, + 30,10,0,0,8,0,20,0,34,0,0,0,255,0,65,0, + 64,0,64,0,66,0,126,0,66,0,64,0,64,0,64,128, + 255,0,9,14,28,10,0,0,36,0,36,0,0,0,255,0, + 65,0,64,0,64,0,66,0,126,0,66,0,64,0,64,0, + 64,128,255,0,4,15,15,5,255,0,128,64,32,0,112,32, + 32,32,32,32,32,32,32,32,112,5,15,15,5,0,0,8, + 16,32,0,224,64,64,64,64,64,64,64,64,64,224,5,15, + 15,5,255,0,32,80,136,0,112,32,32,32,32,32,32,32, + 32,32,112,3,14,14,5,0,0,160,160,0,224,64,64,64, + 64,64,64,64,64,64,224,10,11,22,12,1,0,252,0,67, + 0,64,128,64,64,64,64,248,64,64,64,64,64,64,128,67, + 0,252,0,10,14,28,12,0,0,13,0,22,0,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,15,30,12,1,0,32,0,16,0,8, + 0,0,0,28,0,99,0,65,0,128,128,128,128,128,128,128, + 128,128,128,65,0,99,0,28,0,9,15,30,12,1,0,2, + 0,4,0,8,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,15,30, + 12,1,0,8,0,20,0,34,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,14,28,12,1,0,26,0,44,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,9,14,28,12,1,0,34,0,34,0,0,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,7,7,9,1,0,130,68,40,16,40, + 68,130,11,13,26,12,0,255,0,64,14,64,49,128,65,64, + 130,32,132,32,132,32,136,32,144,32,80,64,49,128,78,0, + 64,0,10,15,30,12,0,0,16,0,8,0,4,0,0,0, + 225,192,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,33,0,30,0,10,15,30,12,0,0,1,0,2,0, + 4,0,0,0,225,192,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,15,30,12,0,0, + 4,0,10,0,17,0,0,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,10,14, + 28,12,0,0,18,0,18,0,0,0,225,192,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,33,0,30,0, + 11,15,30,12,0,0,0,128,1,0,2,0,0,0,224,224, + 64,64,32,128,17,0,17,0,10,0,4,0,4,0,4,0, + 4,0,14,0,8,11,11,9,0,0,224,64,124,66,65,65, + 66,124,64,64,224,7,11,11,8,0,0,56,68,68,68,72, + 88,68,66,66,82,204,7,12,12,7,1,0,64,32,16,0, + 112,136,136,56,200,136,154,100,7,12,12,7,1,0,8,16, + 32,0,112,136,136,56,200,136,154,100,7,12,12,7,1,0, + 32,80,136,0,112,136,136,56,200,136,154,100,7,11,11,7, + 1,0,104,176,0,112,136,136,56,200,136,154,100,7,11,11, + 7,1,0,72,72,0,112,136,136,56,200,136,154,100,7,12, + 12,7,1,0,32,80,80,32,112,136,136,56,200,136,154,100, + 9,8,16,11,1,0,115,0,140,128,136,128,63,128,200,0, + 136,0,156,128,99,0,6,12,12,7,0,252,56,68,132,128, + 128,128,68,56,16,56,8,112,6,12,12,7,0,0,64,32, + 16,0,56,68,132,252,128,128,68,56,6,12,12,7,0,0, + 4,8,16,0,56,68,132,252,128,128,68,56,6,12,12,7, + 0,0,16,40,68,0,56,68,132,252,128,128,68,56,6,11, + 11,7,0,0,72,72,0,56,68,132,252,128,128,68,56,3, + 12,12,5,0,0,128,64,32,0,64,192,64,64,64,64,64, + 224,3,12,12,5,0,0,32,64,128,0,64,192,64,64,64, + 64,64,224,5,12,12,5,255,0,32,80,136,0,32,96,32, + 32,32,32,32,112,3,11,11,5,0,0,160,160,0,64,192, + 64,64,64,64,64,224,7,11,11,8,0,0,108,48,200,60, + 68,130,130,130,130,68,56,8,11,11,8,255,0,52,88,0, + 92,230,66,66,66,66,66,231,7,12,12,8,0,0,32,16, + 8,0,56,68,130,130,130,130,68,56,7,12,12,8,0,0, + 4,8,16,0,56,68,130,130,130,130,68,56,7,12,12,8, + 0,0,16,40,68,0,56,68,130,130,130,130,68,56,7,11, + 11,8,0,0,52,88,0,56,68,130,130,130,130,68,56,7, + 11,11,8,0,0,72,72,0,56,68,130,130,130,130,68,56, + 9,9,18,9,255,0,8,0,8,0,0,0,0,0,255,128, + 0,0,0,0,8,0,8,0,7,12,12,8,0,254,2,2, + 60,68,138,146,146,162,100,56,64,64,8,12,12,8,255,0, + 32,16,8,0,198,66,66,66,66,66,70,59,8,12,12,8, + 255,0,4,8,16,0,198,66,66,66,66,66,70,59,8,12, + 12,8,255,0,16,40,68,0,198,66,66,66,66,66,70,59, + 8,11,11,8,255,0,36,36,0,198,66,66,66,66,66,70, + 59,8,16,16,8,255,252,2,4,8,0,247,66,66,36,36, + 20,8,8,16,16,160,192,8,15,15,8,255,252,64,192,64, + 92,98,65,65,65,65,98,92,64,64,64,224,8,15,15,8, + 255,252,36,36,0,247,66,98,36,52,20,24,8,16,16,160, + 192}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--17-120-100-100-P-84-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=15 x= 2 y= 8 dx=16 dy= 0 ascent=12 len=28 + Font Bounding box w=19 h=26 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR12r[1784] U8G_SECTION(".progmem.u8g_font_timR12r") = { + 0,19,26,254,249,11,2,36,5,11,32,127,252,12,252,11, + 252,0,0,0,4,0,1,1,11,11,5,2,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,7,1,8,144,144, + 144,8,11,11,8,0,0,18,18,18,127,36,36,254,72,72, + 72,72,7,13,13,8,0,255,16,124,146,146,144,80,56,20, + 18,146,146,124,16,11,11,22,14,1,0,57,0,79,0,139, + 0,138,0,150,0,100,224,13,32,10,32,26,32,18,64,17, + 128,12,11,22,13,0,0,12,0,18,0,18,0,18,0,12, + 224,56,64,68,128,131,0,130,16,69,32,56,192,1,3,3, + 3,1,8,128,128,128,4,14,14,5,0,253,16,32,64,64, + 128,128,128,128,128,128,64,64,32,16,4,14,14,5,255,253, + 128,64,32,32,16,16,16,16,16,16,32,32,64,128,5,6, + 6,8,1,5,32,168,112,112,168,32,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,3,3,4,1,255,64,64,128, + 4,1,1,5,0,4,240,1,2,2,4,1,0,128,128,5, + 13,13,5,0,254,8,8,8,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,68,68,130,130,130,130,130, + 68,68,56,4,11,11,8,1,0,32,96,160,32,32,32,32, + 32,32,32,112,7,11,11,8,0,0,56,68,130,2,2,4, + 8,16,32,66,252,7,11,11,8,0,0,56,68,132,8,16, + 56,4,2,2,196,120,8,11,11,8,255,0,2,6,10,10, + 18,34,34,66,255,2,2,7,11,11,8,0,0,62,32,32, + 64,120,4,2,2,2,140,112,7,11,11,8,0,0,14,48, + 64,64,152,228,130,130,130,68,56,7,11,11,8,0,0,254, + 130,132,4,8,8,16,16,16,32,32,6,11,11,8,0,0, + 48,72,132,132,72,48,72,132,132,72,48,7,11,11,8,0, + 0,56,68,130,130,130,70,58,4,4,24,224,1,8,8,4, + 1,0,128,128,0,0,0,0,128,128,2,9,9,4,0,255, + 64,64,0,0,0,0,64,64,128,8,9,9,9,0,0,3, + 12,16,96,128,96,16,12,3,7,4,4,9,0,2,254,0, + 0,254,8,9,9,9,1,0,192,48,8,6,1,6,8,48, + 192,5,11,11,7,1,0,112,136,136,8,16,32,32,0,0, + 32,32,14,14,28,15,0,253,7,192,24,48,32,8,65,168, + 70,100,132,68,136,68,136,68,136,200,137,72,70,48,32,0, + 24,48,7,192,12,11,22,12,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 8,11,11,11,1,0,252,70,66,66,68,124,70,65,65,67, + 254,10,11,22,11,0,0,31,64,96,192,64,64,128,64,128, + 0,128,0,128,0,128,0,64,64,97,128,30,0,10,11,22, + 12,0,0,252,0,67,0,64,128,64,64,64,64,64,64,64, + 64,64,64,64,128,67,0,252,0,9,11,22,10,0,0,255, + 0,65,0,64,0,64,0,66,0,126,0,66,0,64,0,64, + 0,64,128,255,0,8,11,11,9,0,0,255,65,64,64,66, + 126,66,64,64,64,224,11,11,22,12,0,0,15,64,48,192, + 64,64,128,0,128,0,129,224,128,64,128,64,64,64,48,192, + 15,0,10,11,22,12,0,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,225,192,3,11, + 11,5,0,0,224,64,64,64,64,64,64,64,64,64,224,5, + 11,11,6,0,0,56,16,16,16,16,16,16,16,144,144,96, + 10,11,22,12,1,0,243,192,65,0,66,0,68,0,72,0, + 112,0,72,0,68,0,66,0,65,0,243,192,8,11,11,10, + 0,0,224,64,64,64,64,64,64,64,64,65,254,13,11,22, + 15,0,0,224,56,96,48,80,80,80,80,72,144,72,144,72, + 144,69,16,69,16,66,16,226,56,10,11,22,12,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,11,22,12,1,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,8,11,11,9,0,0,252,66,65,65,66,124,64,64,64, + 64,224,10,14,28,12,1,253,28,0,99,0,65,0,128,128, + 128,128,128,128,128,128,128,128,65,0,99,0,60,0,12,0, + 6,0,1,192,10,11,22,11,0,0,252,0,66,0,65,0, + 65,0,66,0,124,0,72,0,68,0,66,0,65,0,225,192, + 8,11,11,9,0,0,58,70,130,128,96,28,2,1,129,194, + 188,9,11,22,10,0,0,255,128,136,128,136,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,28,0,10,11,22, + 12,0,0,225,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,11,11,22,12,0,0,224, + 224,64,64,32,128,32,128,17,0,17,0,17,0,10,0,10, + 0,4,0,4,0,15,11,22,16,0,0,231,14,66,4,33, + 8,33,8,17,136,18,144,18,144,10,80,10,80,4,32,4, + 32,11,11,22,12,0,0,224,224,64,64,32,128,17,0,10, + 0,4,0,10,0,17,0,32,128,64,64,224,224,11,11,22, + 12,0,0,224,224,64,64,32,128,17,0,17,0,10,0,4, + 0,4,0,4,0,4,0,14,0,9,11,22,10,0,0,255, + 128,129,0,130,0,4,0,4,0,8,0,16,0,32,0,32, + 0,64,128,255,0,3,14,14,5,1,253,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,11,11,5,255,0,128, + 64,64,32,32,16,16,8,8,4,4,3,14,14,5,0,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,224,7,7, + 7,8,0,4,16,40,40,68,68,130,130,8,1,1,8,0, + 254,255,3,3,3,6,1,8,128,64,32,7,8,8,7,1, + 0,112,136,136,56,200,136,154,108,7,11,11,8,0,0,64, + 192,64,92,100,66,66,66,66,100,56,6,8,8,7,0,0, + 56,68,132,128,128,128,68,56,7,11,11,8,0,0,4,12, + 4,52,76,132,132,132,132,78,52,6,8,8,7,0,0,56, + 68,132,252,128,128,68,56,5,11,11,6,1,0,48,72,64, + 64,240,64,64,64,64,64,240,7,12,12,8,0,252,54,76, + 132,132,72,112,128,124,130,130,196,120,8,11,11,8,0,0, + 64,192,64,92,102,66,66,66,66,66,231,3,11,11,5,1, + 0,64,64,0,64,192,64,64,64,64,64,224,3,15,15,4, + 0,252,32,32,0,32,96,32,32,32,32,32,32,32,32,160, + 192,7,11,11,8,1,0,64,192,64,92,72,80,96,80,72, + 68,238,3,11,11,5,1,0,64,192,64,64,64,64,64,64, + 64,64,224,11,8,16,13,1,0,89,128,230,64,68,64,68, + 64,68,64,68,64,68,64,238,224,8,8,8,8,0,0,92, + 230,66,66,66,66,66,231,7,8,8,8,0,0,56,68,130, + 130,130,130,68,56,7,12,12,8,0,252,92,230,66,66,66, + 66,98,92,64,64,64,224,7,12,12,8,1,252,116,204,132, + 132,132,132,204,116,4,4,4,14,5,8,8,6,0,0,88, + 232,64,64,64,64,64,224,5,8,8,6,0,0,120,136,128, + 112,8,136,200,176,4,10,10,5,0,0,64,64,240,64,64, + 64,64,64,80,32,8,8,8,8,0,0,198,66,66,66,66, + 66,71,58,8,8,8,8,0,0,231,66,66,36,36,20,24, + 8,12,8,16,12,0,0,238,112,68,32,68,32,34,64,34, + 64,21,64,8,128,8,128,7,8,8,8,0,0,238,68,40, + 16,40,40,68,238,8,12,12,8,0,252,247,66,66,36,36, + 20,8,8,16,16,160,192,6,8,8,7,0,0,252,132,8, + 16,32,64,132,252,4,14,14,8,2,253,48,64,64,64,64, + 64,128,64,64,64,64,64,64,48,1,11,11,3,0,0,128, + 128,128,128,128,128,128,128,128,128,128,4,14,14,8,0,253, + 192,32,32,32,32,32,16,32,32,32,32,32,32,192,8,3, + 3,9,0,3,113,153,142,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--20-140-100-100-P-96-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=18 x= 2 y=10 dx=18 dy= 0 ascent=18 len=39 + Font Bounding box w=22 h=29 x=-3 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR14[4577] U8G_SECTION(".progmem.u8g_font_timR14") = { + 0,22,29,253,249,13,2,131,6,16,32,255,252,18,252,13, + 252,0,0,0,5,0,1,2,13,13,4,1,0,192,192,192, + 192,192,192,64,64,64,0,0,192,192,6,4,4,8,1,9, + 204,204,204,136,12,11,22,10,255,1,12,192,12,192,12,192, + 127,240,25,128,25,128,25,128,255,224,51,0,51,0,51,0, + 7,16,16,9,1,254,16,124,214,210,208,240,120,60,28,22, + 22,150,214,124,16,16,13,13,26,15,1,0,56,48,111,224, + 196,64,196,128,205,128,251,0,114,112,6,216,13,136,9,136, + 25,152,49,240,32,224,12,13,26,14,1,0,28,0,50,0, + 50,0,50,0,52,0,25,224,56,192,109,128,207,0,199,0, + 199,128,237,240,120,224,2,4,4,4,1,9,192,192,192,128, + 5,17,17,7,1,252,24,48,96,96,64,192,192,192,192,192, + 192,192,64,96,96,48,24,5,17,17,7,1,252,192,96,48, + 48,16,24,24,24,24,24,24,24,16,48,48,96,192,7,7, + 7,9,1,6,16,214,84,56,214,146,16,8,8,8,10,1, + 1,24,24,24,255,255,24,24,24,3,5,5,4,0,253,96, + 96,32,96,192,5,2,2,6,0,3,248,248,2,2,2,4, + 1,0,192,192,7,17,17,5,255,252,2,2,6,4,12,12, + 8,24,24,16,48,48,32,96,96,64,192,8,13,13,9,1, + 0,60,102,102,195,195,195,195,195,195,195,102,102,60,6,13, + 13,9,2,0,48,112,240,48,48,48,48,48,48,48,48,120, + 252,7,13,13,9,1,0,60,126,206,134,6,6,12,12,24, + 48,98,254,254,7,13,13,9,1,0,124,206,134,6,12,56, + 60,14,6,6,6,204,248,8,13,13,9,0,0,2,6,14, + 14,22,38,70,70,255,255,6,6,6,7,13,13,9,1,0, + 126,124,192,192,240,60,12,14,6,6,12,220,240,8,13,13, + 9,1,0,7,28,48,96,96,252,198,195,195,195,227,118,60, + 8,13,13,9,1,0,127,255,130,6,4,12,12,8,24,24, + 16,48,48,8,13,13,9,1,0,60,102,194,230,124,56,60, + 110,199,195,195,102,60,8,13,13,9,1,0,60,110,198,195, + 195,195,227,127,54,6,12,56,224,2,9,9,5,1,0,192, + 192,0,0,0,0,0,192,192,3,12,12,5,0,253,96,96, + 0,0,0,0,0,96,96,32,96,192,9,9,18,11,1,0, + 1,128,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,128,9,5,10,11,1,2,255,128,255,128,0,0,255,128, + 255,128,9,9,18,11,1,0,192,0,112,0,28,0,7,0, + 1,128,7,0,28,0,112,0,192,0,6,13,13,8,1,0, + 120,140,196,204,12,24,24,48,32,32,0,48,48,14,16,32, + 17,1,253,7,224,14,48,56,24,48,8,99,236,103,228,198, + 100,204,100,204,204,204,200,205,216,103,112,96,0,48,0,28, + 48,7,224,13,13,26,14,1,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,10,13,26,13,2,0,255,0,99,128,97,128,97, + 128,97,128,99,0,127,128,97,192,96,192,96,192,96,192,97, + 128,255,0,11,13,26,13,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,11,13,26,14,2,0,255,0,99,128,96,192,96, + 192,96,96,96,96,96,96,96,96,96,96,96,192,96,192,99, + 128,255,0,9,13,26,12,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,13,26,11,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,0,96, + 0,240,0,12,13,26,14,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,240,192,96,192,96,96,96,96,96,57, + 192,15,0,12,13,26,14,1,0,240,240,96,96,96,96,96, + 96,96,96,96,96,127,224,96,96,96,96,96,96,96,96,96, + 96,240,240,4,13,13,6,1,0,240,96,96,96,96,96,96, + 96,96,96,96,96,240,6,13,13,7,0,0,60,24,24,24, + 24,24,24,24,24,24,24,216,240,12,13,26,14,1,0,243, + 224,97,128,99,0,102,0,108,0,120,0,120,0,124,0,110, + 0,103,0,99,128,97,192,240,240,10,13,26,12,1,0,240, + 0,96,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,64,96,192,255,192,14,13,26,17,1,0,224, + 28,112,56,112,56,120,120,88,88,88,216,92,216,76,152,77, + 152,71,24,71,24,66,24,226,60,12,13,26,14,1,0,224, + 112,96,32,112,32,120,32,92,32,76,32,78,32,71,32,67, + 160,65,224,64,224,64,96,224,32,12,13,26,14,1,0,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,9,13,26,11,1,0,255, + 0,99,128,97,128,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,96,0,96,0,240,0,12,17,34,14,1,252,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,6,0,3,0,1,192,0, + 240,11,13,26,13,1,0,255,0,99,128,97,128,97,128,97, + 128,99,0,126,0,110,0,102,0,99,0,97,128,96,192,240, + 224,8,13,13,11,2,0,58,70,194,192,224,120,60,14,7, + 3,131,198,184,10,13,26,12,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,30,0,11,13,26,14,2,0,240,224,96,64,96,64, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,112,192, + 57,128,31,0,13,13,26,14,0,0,248,120,112,48,48,32, + 56,32,24,96,24,64,28,64,12,192,14,128,6,128,7,128, + 3,0,3,0,18,13,39,18,0,0,249,227,192,112,193,128, + 48,193,0,56,225,0,24,99,0,24,226,0,24,226,0,29, + 166,0,13,52,0,15,60,0,14,56,0,6,24,0,6,24, + 0,12,13,26,14,1,0,240,112,112,96,56,192,25,128,13, + 0,14,0,6,0,15,0,27,0,17,128,49,192,96,224,240, + 240,12,13,26,14,1,0,240,240,112,96,48,192,24,128,25, + 0,15,0,6,0,6,0,6,0,6,0,6,0,6,0,15, + 0,10,13,26,12,1,0,127,192,97,192,65,128,3,128,7, + 0,6,0,14,0,28,0,56,0,48,0,112,64,224,192,255, + 192,4,16,16,6,2,253,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,5,13,13,5,0,0,128,128,192, + 64,96,96,32,48,48,16,24,8,8,4,16,16,6,0,253, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,240, + 7,7,7,9,1,6,16,56,40,108,68,198,130,9,2,4, + 9,0,252,255,128,255,128,4,3,3,4,0,10,192,96,16, + 7,9,9,9,1,0,120,200,204,28,108,204,204,252,102,8, + 13,13,9,0,0,96,224,96,96,110,119,99,99,99,99,99, + 102,92,7,9,9,8,0,0,60,102,192,192,192,192,192,102, + 60,8,13,13,9,0,0,6,14,6,6,62,102,198,198,198, + 198,198,102,63,7,9,9,8,0,0,60,102,194,254,192,192, + 192,102,60,6,13,13,6,0,0,28,52,32,96,248,96,96, + 96,96,96,96,96,240,8,13,13,9,0,252,62,204,196,196, + 204,120,64,124,127,131,193,226,124,9,13,26,10,0,0,96, + 0,224,0,96,0,96,0,102,0,111,0,115,0,99,0,99, + 0,99,0,99,0,99,0,243,128,4,13,13,5,0,0,96, + 96,0,0,96,224,96,96,96,96,96,96,240,4,17,17,5, + 255,252,48,48,0,0,48,112,48,48,48,48,48,48,48,48, + 48,224,192,10,13,26,9,0,0,96,0,224,0,96,0,96, + 0,103,0,98,0,100,0,104,0,120,0,108,0,110,0,103, + 0,227,192,4,13,13,5,0,0,96,224,96,96,96,96,96, + 96,96,96,96,96,240,14,9,18,15,0,0,102,48,239,120, + 115,152,99,24,99,24,99,24,99,24,99,24,247,188,9,9, + 18,10,0,0,102,0,239,0,115,0,99,0,99,0,99,0, + 99,0,99,0,243,128,8,9,9,9,0,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,252,110,247,99,99,99, + 99,99,118,124,96,96,96,240,8,13,13,9,0,252,62,102, + 198,198,198,198,198,102,62,6,6,6,15,6,9,9,7,0, + 0,108,236,112,96,96,96,96,96,240,5,9,9,7,1,0, + 104,152,200,224,112,56,152,200,176,6,11,11,6,0,0,32, + 96,248,96,96,96,96,96,96,116,56,9,9,18,10,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,119,0, + 59,128,9,9,18,9,255,0,243,128,99,0,98,0,50,0, + 54,0,20,0,28,0,8,0,8,0,13,9,18,14,0,0, + 231,56,102,48,98,96,54,96,55,96,29,64,29,192,8,128, + 8,128,9,9,18,9,0,0,225,128,99,0,54,0,28,0, + 28,0,28,0,54,0,99,0,195,128,8,13,13,9,0,252, + 243,99,114,50,54,28,28,12,8,24,16,240,224,7,9,9, + 8,0,0,254,206,140,24,48,48,98,230,254,7,17,17,9, + 1,252,14,24,48,48,48,48,48,96,192,96,48,48,48,48, + 48,24,14,1,13,13,3,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,128,7,17,17,9,1,252,224,48,24,24, + 24,24,24,12,6,12,24,24,24,24,24,48,224,9,4,8, + 11,1,3,48,0,121,128,207,0,6,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,5, + 0,1,2,13,13,4,1,252,192,192,0,0,128,128,128,192, + 192,192,192,192,192,7,14,14,9,1,253,6,4,60,110,200, + 216,208,208,240,114,124,64,192,128,10,13,26,11,0,0,15, + 0,25,128,25,128,24,0,24,0,24,0,126,0,24,0,24, + 0,16,0,120,64,191,192,231,128,9,7,14,11,1,3,221, + 128,247,128,99,0,65,0,99,0,247,128,221,128,8,13,13, + 9,0,0,247,98,98,118,52,52,126,24,126,24,24,24,126, + 1,13,13,3,1,0,128,128,128,128,128,0,0,0,128,128, + 128,128,128,8,16,16,10,1,253,60,102,102,112,56,124,142, + 199,227,113,62,28,14,102,102,60,5,2,2,5,0,10,216, + 216,13,13,26,15,1,0,15,128,48,96,64,16,71,144,136, + 136,144,8,144,8,144,8,136,136,71,16,64,16,48,96,15, + 128,5,8,8,5,0,5,96,144,16,112,144,232,0,248,8, + 7,7,10,1,1,17,51,102,204,102,51,17,9,5,10,11, + 1,2,255,128,255,128,1,128,1,128,1,128,5,2,2,6, + 0,3,248,248,13,13,26,15,1,0,15,128,48,96,64,16, + 95,16,136,136,136,136,143,8,137,8,136,136,92,208,64,16, + 48,96,15,128,5,2,2,5,0,10,248,248,5,5,5,7, + 1,8,112,136,136,136,112,8,11,11,10,1,0,24,24,24, + 255,255,24,24,24,0,255,255,5,8,8,6,0,5,112,152, + 24,16,32,32,64,248,5,8,8,6,0,5,112,136,24,112, + 24,8,136,112,4,3,3,4,0,10,48,96,128,9,13,26, + 9,255,252,231,0,99,0,99,0,99,0,99,0,99,0,99, + 0,119,0,123,128,64,0,64,0,96,0,96,0,7,17,17, + 8,1,252,62,116,244,244,244,244,244,116,20,20,20,20,20, + 20,20,20,20,2,2,2,4,1,4,192,192,4,5,5,6, + 1,252,32,32,16,176,112,3,8,8,6,1,5,64,192,64, + 64,64,64,64,224,5,8,8,6,0,5,112,216,136,136,216, + 112,0,248,8,7,7,10,1,1,136,204,102,51,102,204,136, + 11,13,26,13,1,0,64,128,193,128,65,0,67,0,70,0, + 68,64,76,192,233,64,27,64,50,64,39,224,96,64,64,64, + 11,13,26,13,1,0,64,128,193,128,65,0,67,0,70,0, + 69,192,78,96,232,96,24,64,48,128,32,128,97,0,67,224, + 13,13,26,13,255,0,112,32,136,96,24,64,112,192,25,128, + 9,16,139,48,114,80,6,208,12,144,9,248,24,16,16,16, + 6,13,13,8,1,252,48,48,0,16,16,48,96,96,192,204, + 140,196,120,13,17,34,14,1,0,24,0,12,0,2,0,0, + 0,2,0,7,0,7,0,5,0,13,128,9,128,25,192,16, + 192,31,192,48,224,32,96,96,112,240,248,13,17,34,14,1, + 0,0,192,1,128,2,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,13,17,34,14,1,0,2,0,7,0,13,128,0, + 0,2,0,7,0,7,0,5,0,13,128,9,128,25,192,16, + 192,31,192,48,224,32,96,96,112,240,248,13,17,34,14,1, + 0,12,128,31,128,19,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,13,16,32,14,1,0,13,128,13,128,0,0,2, + 0,7,0,7,0,5,0,13,128,9,128,25,192,16,192,31, + 192,48,224,32,96,96,112,240,248,13,18,36,14,1,0,6, + 0,9,0,9,0,6,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,15,13,26,17,1,0,15,252,7,140,5,132,5, + 128,13,128,9,136,25,248,31,136,17,128,49,128,33,130,97, + 134,247,254,11,17,34,13,1,252,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,4,0,2,0,22,0,14,0,9,17,34,12,1, + 0,48,0,24,0,4,0,0,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,17,34,12,1,0,3,0,6,0,8,0,0, + 0,255,128,97,128,96,128,96,0,96,0,97,0,127,0,97, + 0,96,0,96,0,96,128,97,128,255,128,9,17,34,12,1, + 0,8,0,28,0,54,0,0,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,16,32,12,1,0,54,0,54,0,0,0,255, + 128,97,128,96,128,96,0,96,0,97,0,127,0,97,0,96, + 0,96,0,96,128,97,128,255,128,6,17,17,6,255,0,192, + 96,16,0,60,24,24,24,24,24,24,24,24,24,24,24,60, + 6,17,17,6,1,0,12,24,32,0,240,96,96,96,96,96, + 96,96,96,96,96,96,240,5,17,17,6,1,0,32,112,216, + 0,240,96,96,96,96,96,96,96,96,96,96,96,240,5,16, + 16,6,1,0,216,216,0,240,96,96,96,96,96,96,96,96, + 96,96,96,240,12,13,26,13,0,0,127,128,49,192,48,96, + 48,96,48,48,48,48,252,48,48,48,48,48,48,96,48,96, + 49,192,127,128,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,224,112,96,32,112,32,120,32,92,32,76,32,78,32, + 71,32,67,160,65,224,64,224,64,96,224,32,12,17,34,14, + 1,0,48,0,24,0,4,0,0,0,15,0,48,192,96,96, + 96,96,192,48,192,48,192,48,192,48,192,48,96,96,96,96, + 48,192,15,0,12,17,34,14,1,0,0,192,1,128,2,0, + 0,0,15,0,48,192,96,96,96,96,192,48,192,48,192,48, + 192,48,192,48,96,96,96,96,48,192,15,0,12,17,34,14, + 1,0,4,0,14,0,27,0,0,0,15,0,48,192,96,96, + 96,96,192,48,192,48,192,48,192,48,192,48,96,96,96,96, + 48,192,15,0,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,15,0,48,192,96,96,96,96,192,48,192,48,192,48, + 192,48,192,48,96,96,96,96,48,192,15,0,12,16,32,14, + 1,0,27,0,27,0,0,0,15,0,48,192,96,96,96,96, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 15,0,8,7,7,10,1,1,195,102,60,24,60,102,195,12, + 15,30,14,1,255,0,48,15,96,48,192,96,224,97,160,195, + 48,195,48,198,48,204,48,204,48,88,96,112,96,48,192,111, + 0,192,0,11,17,34,14,2,0,48,0,24,0,4,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,112,192,57,128,31,0,11,17,34,14,2, + 0,0,192,1,128,2,0,0,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,112,192,57, + 128,31,0,11,17,34,14,2,0,4,0,14,0,27,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,112,192,57,128,31,0,11,16,32,14,2, + 0,27,0,27,0,0,0,240,224,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,112,192,57,128,31, + 0,12,17,34,14,1,0,0,192,1,128,2,0,0,0,240, + 240,112,96,48,192,24,128,25,0,15,0,6,0,6,0,6, + 0,6,0,6,0,6,0,15,0,9,13,26,10,1,0,240, + 0,96,0,96,0,127,0,99,128,97,128,97,128,97,128,99, + 0,126,0,96,0,96,0,240,0,8,13,13,9,0,0,28, + 50,99,99,102,110,124,102,99,99,107,111,238,7,13,13,9, + 1,0,192,96,16,0,120,200,204,28,108,204,204,252,102,7, + 13,13,9,1,0,12,24,32,0,120,200,204,28,108,204,204, + 252,102,7,13,13,9,1,0,16,56,108,0,120,200,204,28, + 108,204,204,252,102,7,13,13,9,1,0,100,252,152,0,120, + 200,204,28,108,204,204,252,102,7,12,12,9,1,0,108,108, + 0,120,200,204,28,108,204,204,252,102,7,14,14,9,1,0, + 48,72,72,48,0,120,200,204,28,108,204,204,252,102,11,9, + 18,12,0,0,123,192,206,96,204,32,31,224,108,0,204,0, + 204,0,254,96,99,192,7,13,13,8,0,252,60,102,192,192, + 192,192,192,102,60,16,8,88,56,7,13,13,8,0,0,192, + 96,16,0,60,102,194,254,192,192,192,102,60,7,13,13,8, + 0,0,6,12,16,0,60,102,194,254,192,192,192,102,60,7, + 13,13,8,0,0,16,56,108,0,60,102,194,254,192,192,192, + 102,60,7,12,12,8,0,0,108,108,0,60,102,194,254,192, + 192,192,102,60,6,13,13,5,254,0,192,96,16,0,24,56, + 24,24,24,24,24,24,60,6,13,13,5,0,0,12,24,32, + 0,96,224,96,96,96,96,96,96,240,5,13,13,5,0,0, + 32,112,216,0,96,224,96,96,96,96,96,96,240,5,12,12, + 5,0,0,216,216,0,96,224,96,96,96,96,96,96,240,8, + 13,13,9,0,0,96,54,56,76,62,102,195,195,195,195,195, + 102,60,9,13,26,10,0,0,50,0,126,0,76,0,0,0, + 102,0,239,0,115,0,99,0,99,0,99,0,99,0,99,0, + 243,128,8,13,13,9,0,0,48,24,4,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,0,6,12,16,0,60, + 102,195,195,195,195,195,102,60,8,13,13,9,0,0,16,56, + 108,0,60,102,195,195,195,195,195,102,60,8,13,13,9,0, + 0,50,126,76,0,60,102,195,195,195,195,195,102,60,8,12, + 12,9,0,0,108,108,0,60,102,195,195,195,195,195,102,60, + 8,8,8,10,1,1,24,24,0,255,255,0,24,24,8,11, + 11,9,0,255,1,63,102,207,203,219,211,243,102,124,192,9, + 13,26,10,0,0,96,0,48,0,8,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 13,26,10,0,0,6,0,12,0,16,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 13,26,10,0,0,8,0,28,0,54,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 12,24,10,0,0,54,0,54,0,0,0,231,0,99,0,99, + 0,99,0,99,0,99,0,99,0,119,0,59,128,8,17,17, + 8,255,252,3,6,8,0,243,99,114,50,54,28,28,12,8, + 24,16,240,224,8,17,17,9,0,252,96,224,96,96,110,119, + 99,99,99,99,99,118,124,96,96,96,240,8,16,16,9,0, + 252,54,54,0,243,99,114,50,54,28,28,12,8,24,16,240, + 224}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--20-140-100-100-P-96-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=10 dx=18 dy= 0 ascent=14 len=39 + Font Bounding box w=22 h=29 x=-3 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR14r[2156] U8G_SECTION(".progmem.u8g_font_timR14r") = { + 0,22,29,253,249,13,2,131,6,16,32,127,252,14,252,13, + 252,0,0,0,5,0,1,2,13,13,4,1,0,192,192,192, + 192,192,192,64,64,64,0,0,192,192,6,4,4,8,1,9, + 204,204,204,136,12,11,22,10,255,1,12,192,12,192,12,192, + 127,240,25,128,25,128,25,128,255,224,51,0,51,0,51,0, + 7,16,16,9,1,254,16,124,214,210,208,240,120,60,28,22, + 22,150,214,124,16,16,13,13,26,15,1,0,56,48,111,224, + 196,64,196,128,205,128,251,0,114,112,6,216,13,136,9,136, + 25,152,49,240,32,224,12,13,26,14,1,0,28,0,50,0, + 50,0,50,0,52,0,25,224,56,192,109,128,207,0,199,0, + 199,128,237,240,120,224,2,4,4,4,1,9,192,192,192,128, + 5,17,17,7,1,252,24,48,96,96,64,192,192,192,192,192, + 192,192,64,96,96,48,24,5,17,17,7,1,252,192,96,48, + 48,16,24,24,24,24,24,24,24,16,48,48,96,192,7,7, + 7,9,1,6,16,214,84,56,214,146,16,8,8,8,10,1, + 1,24,24,24,255,255,24,24,24,3,5,5,4,0,253,96, + 96,32,96,192,5,2,2,6,0,3,248,248,2,2,2,4, + 1,0,192,192,7,17,17,5,255,252,2,2,6,4,12,12, + 8,24,24,16,48,48,32,96,96,64,192,8,13,13,9,1, + 0,60,102,102,195,195,195,195,195,195,195,102,102,60,6,13, + 13,9,2,0,48,112,240,48,48,48,48,48,48,48,48,120, + 252,7,13,13,9,1,0,60,126,206,134,6,6,12,12,24, + 48,98,254,254,7,13,13,9,1,0,124,206,134,6,12,56, + 60,14,6,6,6,204,248,8,13,13,9,0,0,2,6,14, + 14,22,38,70,70,255,255,6,6,6,7,13,13,9,1,0, + 126,124,192,192,240,60,12,14,6,6,12,220,240,8,13,13, + 9,1,0,7,28,48,96,96,252,198,195,195,195,227,118,60, + 8,13,13,9,1,0,127,255,130,6,4,12,12,8,24,24, + 16,48,48,8,13,13,9,1,0,60,102,194,230,124,56,60, + 110,199,195,195,102,60,8,13,13,9,1,0,60,110,198,195, + 195,195,227,127,54,6,12,56,224,2,9,9,5,1,0,192, + 192,0,0,0,0,0,192,192,3,12,12,5,0,253,96,96, + 0,0,0,0,0,96,96,32,96,192,9,9,18,11,1,0, + 1,128,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,128,9,5,10,11,1,2,255,128,255,128,0,0,255,128, + 255,128,9,9,18,11,1,0,192,0,112,0,28,0,7,0, + 1,128,7,0,28,0,112,0,192,0,6,13,13,8,1,0, + 120,140,196,204,12,24,24,48,32,32,0,48,48,14,16,32, + 17,1,253,7,224,14,48,56,24,48,8,99,236,103,228,198, + 100,204,100,204,204,204,200,205,216,103,112,96,0,48,0,28, + 48,7,224,13,13,26,14,1,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,10,13,26,13,2,0,255,0,99,128,97,128,97, + 128,97,128,99,0,127,128,97,192,96,192,96,192,96,192,97, + 128,255,0,11,13,26,13,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,11,13,26,14,2,0,255,0,99,128,96,192,96, + 192,96,96,96,96,96,96,96,96,96,96,96,192,96,192,99, + 128,255,0,9,13,26,12,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,13,26,11,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,0,96, + 0,240,0,12,13,26,14,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,240,192,96,192,96,96,96,96,96,57, + 192,15,0,12,13,26,14,1,0,240,240,96,96,96,96,96, + 96,96,96,96,96,127,224,96,96,96,96,96,96,96,96,96, + 96,240,240,4,13,13,6,1,0,240,96,96,96,96,96,96, + 96,96,96,96,96,240,6,13,13,7,0,0,60,24,24,24, + 24,24,24,24,24,24,24,216,240,12,13,26,14,1,0,243, + 224,97,128,99,0,102,0,108,0,120,0,120,0,124,0,110, + 0,103,0,99,128,97,192,240,240,10,13,26,12,1,0,240, + 0,96,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,64,96,192,255,192,14,13,26,17,1,0,224, + 28,112,56,112,56,120,120,88,88,88,216,92,216,76,152,77, + 152,71,24,71,24,66,24,226,60,12,13,26,14,1,0,224, + 112,96,32,112,32,120,32,92,32,76,32,78,32,71,32,67, + 160,65,224,64,224,64,96,224,32,12,13,26,14,1,0,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,9,13,26,11,1,0,255, + 0,99,128,97,128,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,96,0,96,0,240,0,12,17,34,14,1,252,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,6,0,3,0,1,192,0, + 240,11,13,26,13,1,0,255,0,99,128,97,128,97,128,97, + 128,99,0,126,0,110,0,102,0,99,0,97,128,96,192,240, + 224,8,13,13,11,2,0,58,70,194,192,224,120,60,14,7, + 3,131,198,184,10,13,26,12,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,30,0,11,13,26,14,2,0,240,224,96,64,96,64, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,112,192, + 57,128,31,0,13,13,26,14,0,0,248,120,112,48,48,32, + 56,32,24,96,24,64,28,64,12,192,14,128,6,128,7,128, + 3,0,3,0,18,13,39,18,0,0,249,227,192,112,193,128, + 48,193,0,56,225,0,24,99,0,24,226,0,24,226,0,29, + 166,0,13,52,0,15,60,0,14,56,0,6,24,0,6,24, + 0,12,13,26,14,1,0,240,112,112,96,56,192,25,128,13, + 0,14,0,6,0,15,0,27,0,17,128,49,192,96,224,240, + 240,12,13,26,14,1,0,240,240,112,96,48,192,24,128,25, + 0,15,0,6,0,6,0,6,0,6,0,6,0,6,0,15, + 0,10,13,26,12,1,0,127,192,97,192,65,128,3,128,7, + 0,6,0,14,0,28,0,56,0,48,0,112,64,224,192,255, + 192,4,16,16,6,2,253,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,5,13,13,5,0,0,128,128,192, + 64,96,96,32,48,48,16,24,8,8,4,16,16,6,0,253, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,240, + 7,7,7,9,1,6,16,56,40,108,68,198,130,9,2,4, + 9,0,252,255,128,255,128,4,3,3,4,0,10,192,96,16, + 7,9,9,9,1,0,120,200,204,28,108,204,204,252,102,8, + 13,13,9,0,0,96,224,96,96,110,119,99,99,99,99,99, + 102,92,7,9,9,8,0,0,60,102,192,192,192,192,192,102, + 60,8,13,13,9,0,0,6,14,6,6,62,102,198,198,198, + 198,198,102,63,7,9,9,8,0,0,60,102,194,254,192,192, + 192,102,60,6,13,13,6,0,0,28,52,32,96,248,96,96, + 96,96,96,96,96,240,8,13,13,9,0,252,62,204,196,196, + 204,120,64,124,127,131,193,226,124,9,13,26,10,0,0,96, + 0,224,0,96,0,96,0,102,0,111,0,115,0,99,0,99, + 0,99,0,99,0,99,0,243,128,4,13,13,5,0,0,96, + 96,0,0,96,224,96,96,96,96,96,96,240,4,17,17,5, + 255,252,48,48,0,0,48,112,48,48,48,48,48,48,48,48, + 48,224,192,10,13,26,9,0,0,96,0,224,0,96,0,96, + 0,103,0,98,0,100,0,104,0,120,0,108,0,110,0,103, + 0,227,192,4,13,13,5,0,0,96,224,96,96,96,96,96, + 96,96,96,96,96,240,14,9,18,15,0,0,102,48,239,120, + 115,152,99,24,99,24,99,24,99,24,99,24,247,188,9,9, + 18,10,0,0,102,0,239,0,115,0,99,0,99,0,99,0, + 99,0,99,0,243,128,8,9,9,9,0,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,252,110,247,99,99,99, + 99,99,118,124,96,96,96,240,8,13,13,9,0,252,62,102, + 198,198,198,198,198,102,62,6,6,6,15,6,9,9,7,0, + 0,108,236,112,96,96,96,96,96,240,5,9,9,7,1,0, + 104,152,200,224,112,56,152,200,176,6,11,11,6,0,0,32, + 96,248,96,96,96,96,96,96,116,56,9,9,18,10,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,119,0, + 59,128,9,9,18,9,255,0,243,128,99,0,98,0,50,0, + 54,0,20,0,28,0,8,0,8,0,13,9,18,14,0,0, + 231,56,102,48,98,96,54,96,55,96,29,64,29,192,8,128, + 8,128,9,9,18,9,0,0,225,128,99,0,54,0,28,0, + 28,0,28,0,54,0,99,0,195,128,8,13,13,9,0,252, + 243,99,114,50,54,28,28,12,8,24,16,240,224,7,9,9, + 8,0,0,254,206,140,24,48,48,98,230,254,7,17,17,9, + 1,252,14,24,48,48,48,48,48,96,192,96,48,48,48,48, + 48,24,14,1,13,13,3,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,128,7,17,17,9,1,252,224,48,24,24, + 24,24,24,12,6,12,24,24,24,24,24,48,224,9,4,8, + 11,1,3,48,0,121,128,207,0,6,0,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--25-180-100-100-P-125-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=23 x= 3 y=14 dx=23 dy= 0 ascent=23 len=69 + Font Bounding box w=29 h=37 x=-4 y=-9 + Calculated Min Values x=-2 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =17 descent=-6 + Max Font ascent =23 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR18[6850] U8G_SECTION(".progmem.u8g_font_timR18") = { + 0,29,37,252,247,17,4,9,8,241,32,255,250,23,250,17, + 250,0,0,0,6,0,1,3,17,17,8,3,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,6,5, + 5,10,1,12,204,204,204,204,136,11,17,34,13,1,0,8, + 128,8,128,8,128,8,128,8,128,127,224,127,224,17,0,17, + 0,17,0,255,192,255,192,34,0,34,0,34,0,34,0,34, + 0,11,21,42,12,0,254,4,0,4,0,63,0,101,192,196, + 192,196,64,196,64,228,0,124,0,30,0,7,128,5,192,4, + 224,4,96,132,96,132,96,196,192,229,192,63,0,4,0,4, + 0,17,16,48,19,1,0,30,12,0,51,252,0,97,24,0, + 193,16,0,193,48,0,194,96,0,228,64,0,120,192,0,1, + 143,0,1,25,128,3,48,128,6,96,128,4,96,128,12,97, + 0,24,114,0,16,60,0,17,17,51,19,1,0,7,192,0, + 8,96,0,24,32,0,24,32,0,24,96,0,12,192,0,15, + 158,0,7,12,0,15,8,0,51,136,0,97,144,0,192,208, + 0,192,224,0,192,96,0,224,240,128,127,191,0,62,14,0, + 2,5,5,6,2,12,192,192,192,192,128,6,22,22,8,1, + 251,4,8,16,48,32,96,96,192,192,192,192,192,192,192,192, + 96,96,32,48,16,8,4,6,22,22,8,1,251,128,64,32, + 48,16,24,24,12,12,12,12,12,12,12,12,24,24,16,48, + 32,64,128,9,9,18,12,2,8,28,0,28,0,201,128,235, + 128,28,0,235,128,201,128,28,0,28,0,12,12,24,12,0, + 0,6,0,6,0,6,0,6,0,6,0,255,240,255,240,6, + 0,6,0,6,0,6,0,6,0,3,5,5,7,2,253,192, + 224,32,96,192,6,2,2,8,0,5,252,252,2,2,2,6, + 2,0,192,192,9,21,42,7,254,252,1,128,1,128,1,0, + 3,0,3,0,2,0,6,0,6,0,4,0,12,0,12,0, + 8,0,24,0,24,0,16,0,48,0,48,0,96,0,96,0, + 64,0,192,0,10,17,34,12,1,0,30,0,51,0,97,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,225,192,97,128,97,128,51,0,30,0,8,17,17,12, + 2,0,8,24,120,24,24,24,24,24,24,24,24,24,24,24, + 24,24,255,10,17,34,12,1,0,28,0,127,0,67,128,129, + 128,129,128,1,128,1,128,3,0,3,0,6,0,4,0,12, + 0,24,0,48,0,96,64,255,192,255,128,9,17,34,12,1, + 0,28,0,126,0,71,0,131,0,131,0,6,0,12,0,30, + 0,7,0,3,128,1,128,1,128,1,128,1,0,195,0,230, + 0,120,0,10,17,34,12,1,0,3,0,7,0,7,0,11, + 0,27,0,19,0,51,0,35,0,99,0,67,0,195,0,255, + 192,255,192,3,0,3,0,3,0,3,0,10,17,34,12,1, + 0,31,192,31,128,32,0,32,0,96,0,120,0,126,0,15, + 128,3,128,1,192,0,192,0,192,0,192,0,192,193,128,227, + 128,126,0,10,17,34,12,1,0,3,192,14,0,24,0,48, + 0,112,0,96,0,238,0,243,128,193,128,192,192,192,192,192, + 192,192,192,224,192,97,128,123,128,30,0,10,17,34,12,1, + 0,127,192,255,192,192,192,129,128,1,128,1,0,3,0,3, + 0,2,0,6,0,6,0,4,0,12,0,12,0,12,0,24, + 0,24,0,10,17,34,12,1,0,30,0,51,0,97,128,97, + 128,97,128,115,0,62,0,30,0,63,0,99,128,65,192,192, + 192,192,192,192,192,225,128,115,128,30,0,10,17,34,12,1, + 0,30,0,119,128,97,128,193,192,192,192,192,192,192,192,192, + 192,97,192,115,192,29,128,1,128,3,128,3,0,6,0,28, + 0,240,0,2,11,11,6,2,0,192,192,0,0,0,0,0, + 0,0,192,192,3,14,14,7,2,253,192,192,0,0,0,0, + 0,0,0,192,224,32,96,192,11,11,22,14,1,0,0,96, + 1,192,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,192,0,96,9,5,10,13,2,3,255,128,255,128,0,0, + 255,128,255,128,11,11,22,13,1,0,192,0,112,0,28,0, + 7,0,1,192,0,96,1,192,7,0,28,0,112,0,192,0, + 8,17,17,11,2,0,124,198,131,195,195,7,14,12,28,24, + 24,16,16,0,0,48,48,18,20,60,22,2,253,3,248,0, + 15,14,0,28,3,0,56,1,128,112,0,128,96,236,192,225, + 252,64,195,140,64,195,12,64,198,12,64,198,24,64,198,24, + 192,198,24,128,198,57,128,99,123,0,97,222,0,48,0,0, + 24,0,0,14,12,0,3,240,0,17,17,51,17,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,14,17,34,16,1,0,255,192,48,112,48,48,48,24, + 48,24,48,24,48,48,48,64,63,224,48,56,48,24,48,12, + 48,12,48,12,48,24,48,120,255,224,14,17,34,16,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,4,56,8,30,56, + 7,224,15,17,34,17,1,0,255,192,48,112,48,56,48,12, + 48,12,48,6,48,6,48,6,48,6,48,6,48,6,48,6, + 48,12,48,12,48,56,48,112,255,192,13,17,34,15,1,0, + 255,240,48,48,48,16,48,16,48,0,48,0,48,64,48,64, + 63,192,48,64,48,64,48,0,48,0,48,8,48,8,48,24, + 255,248,12,17,34,14,1,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,32,48,32,63,224,48,32,48,32,48,0, + 48,0,48,0,48,0,48,0,252,0,16,17,34,18,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,63,192,12,192,12,96,12,96,12,56,28,30,56, + 7,224,17,17,51,19,1,0,252,31,128,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 63,254,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,48,6,0,252,31,128,6,17,17,8,1, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,9,17,34,11,1,0,31,128,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,198,0,204,0,120,0,16,17,34,17,1,0, + 252,126,48,24,48,48,48,96,48,192,49,128,51,0,62,0, + 63,0,51,128,49,192,48,224,48,112,48,56,48,28,48,14, + 252,31,13,17,34,14,1,0,252,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,21,17,51,22,1,0, + 240,0,248,48,0,224,56,1,96,56,1,96,44,2,96,44, + 2,96,38,2,96,38,4,96,35,4,96,35,8,96,33,136, + 96,33,136,96,32,208,96,32,208,96,32,96,96,32,96,96, + 248,97,248,16,17,34,18,1,0,240,31,48,4,56,4,56, + 4,44,4,38,4,38,4,35,4,33,132,33,132,32,196,32, + 100,32,100,32,52,32,28,32,28,248,12,16,17,34,18,1, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,13,17,34,15,1,0,255,192,48,112,48,48,48, + 24,48,24,48,24,48,48,48,112,63,192,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,252,0,16,22,44,18,1, + 251,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,1,192,0,224,0,112,0,56,0,15,15,17,34, + 16,1,0,255,192,48,112,48,48,48,24,48,24,48,24,48, + 48,48,112,63,192,51,128,49,128,48,192,48,96,48,112,48, + 56,48,28,252,30,11,17,34,13,1,0,30,64,99,192,192, + 192,192,64,192,64,224,0,120,0,30,0,15,128,3,192,0, + 224,0,96,128,96,128,96,192,192,241,128,158,0,14,17,34, + 16,1,0,255,252,195,12,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,15,192,16,17,34,18,1,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,17,17,51, + 17,0,0,252,31,128,48,6,0,48,4,0,24,12,0,24, + 8,0,24,8,0,12,24,0,12,16,0,6,48,0,6,32, + 0,6,32,0,3,96,0,3,64,0,3,192,0,1,128,0, + 1,128,0,1,128,0,23,17,51,23,0,0,252,126,126,48, + 24,24,48,24,16,24,24,16,24,24,48,24,44,32,12,44, + 32,12,44,96,6,76,96,6,76,64,6,70,64,3,70,192, + 3,70,128,3,135,128,1,131,128,1,131,0,1,131,0,18, + 17,51,18,0,0,126,15,128,28,6,0,14,12,0,6,8, + 0,3,16,0,1,160,0,1,192,0,0,192,0,0,224,0, + 1,112,0,2,56,0,6,24,0,4,12,0,8,14,0,24, + 7,0,48,3,128,252,15,192,16,17,34,18,1,0,252,63, + 48,12,56,8,24,24,28,16,12,48,6,32,6,96,3,64, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 13,17,34,15,1,0,255,240,192,112,128,224,128,192,1,192, + 3,128,3,0,7,0,6,0,14,0,28,0,24,0,56,0, + 48,8,112,8,224,24,255,248,5,21,21,8,2,252,248,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,248,7,17,17,7,0,0,192,192,64,96,96,32,48, + 48,16,24,24,8,12,12,4,6,6,5,21,21,8,1,252, + 248,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,248,9,9,18,11,1,8,8,0,28,0,20, + 0,54,0,34,0,99,0,65,0,193,128,128,128,12,2,4, + 12,0,251,255,240,255,240,5,4,4,8,1,13,192,224,112, + 24,9,12,24,11,1,0,62,0,103,0,99,0,3,0,15, + 0,59,0,99,0,195,0,195,0,199,0,251,0,113,128,11, + 17,34,12,0,0,48,0,240,0,48,0,48,0,48,0,55, + 0,57,192,48,192,48,96,48,96,48,96,48,96,48,96,48, + 96,48,192,57,192,47,0,9,12,24,11,1,0,31,0,99, + 128,65,128,192,0,192,0,192,0,192,0,192,0,224,0,112, + 128,127,0,30,0,10,17,34,12,1,0,1,128,7,128,1, + 128,1,128,1,128,29,128,115,128,97,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,128,127,128,25,192,9,12,24, + 11,1,0,30,0,99,0,65,128,193,128,255,128,192,0,192, + 0,192,0,224,0,112,128,127,0,30,0,7,17,17,7,0, + 0,14,22,48,48,48,254,48,48,48,48,48,48,48,48,48, + 48,120,11,18,36,12,1,250,30,192,35,192,97,0,97,128, + 97,128,97,128,97,128,51,0,60,0,64,0,96,0,127,128, + 63,192,64,224,192,96,192,96,225,192,127,0,12,17,34,13, + 0,0,48,0,240,0,48,0,48,0,48,0,51,128,55,192, + 56,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,120,240,4,17,17,6,1,0,96,96,0,0,0,96, + 224,96,96,96,96,96,96,96,96,96,240,6,23,23,6,254, + 250,12,12,0,0,0,12,28,12,12,12,12,12,12,12,12, + 12,12,12,12,12,204,200,112,12,17,34,12,0,0,48,0, + 240,0,48,0,48,0,48,0,51,224,49,128,51,0,50,0, + 52,0,60,0,54,0,55,0,51,128,49,192,48,224,121,240, + 5,17,17,6,0,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,120,18,12,36,20,1,0,103,14,0, + 239,159,0,113,227,128,96,193,128,96,193,128,96,193,128,96, + 193,128,96,193,128,96,193,128,96,193,128,96,193,128,241,227, + 192,11,12,24,13,1,0,103,0,239,128,113,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,241,224,10, + 12,24,12,1,0,30,0,115,128,97,128,192,192,192,192,192, + 192,192,192,192,192,192,192,97,128,115,128,30,0,10,18,36, + 12,1,250,110,0,243,128,97,128,96,192,96,192,96,192,96, + 192,96,192,96,192,97,128,115,128,110,0,96,0,96,0,96, + 0,96,0,96,0,240,0,10,18,36,12,1,250,29,128,115, + 128,97,128,193,128,193,128,193,128,193,128,193,128,193,128,97, + 128,115,128,29,128,1,128,1,128,1,128,1,128,1,128,3, + 192,6,12,12,8,1,0,108,236,112,96,96,96,96,96,96, + 96,96,240,8,12,12,10,1,0,62,70,194,224,112,124,30, + 7,3,131,198,248,7,15,15,7,0,0,16,48,112,254,48, + 48,48,48,48,48,48,48,48,50,28,11,12,24,13,1,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,12,24,11,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,17,12,36,17,0,0,241,231,128,96, + 195,0,96,194,0,48,194,0,48,194,0,49,100,0,25,100, + 0,26,100,0,26,40,0,14,56,0,14,56,0,4,16,0, + 11,12,24,13,1,0,241,224,96,192,49,128,57,0,26,0, + 12,0,14,0,27,0,51,128,33,128,96,192,241,224,12,18, + 36,11,255,250,120,240,48,96,48,64,24,64,24,64,24,128, + 12,128,12,128,13,0,7,0,7,0,2,0,6,0,4,0, + 12,0,200,0,240,0,96,0,8,12,12,10,1,0,255,195, + 134,14,28,24,56,48,112,97,195,255,8,22,22,10,1,251, + 7,12,24,24,24,24,24,16,48,32,192,32,48,16,24,24, + 24,24,24,24,12,7,2,17,17,5,1,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,22,22, + 10,1,251,224,48,24,24,24,24,24,8,12,4,3,4,12, + 8,24,24,24,24,24,24,48,224,11,4,8,13,1,4,56, + 32,124,96,199,192,131,128,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,6,0,1,3,17, + 17,8,3,251,96,96,0,0,0,64,64,64,64,224,224,224, + 224,224,224,224,64,9,16,32,12,1,254,2,0,2,0,15, + 0,51,128,101,128,196,0,196,0,200,0,200,0,200,0,208, + 0,112,128,113,0,62,0,64,0,64,0,10,17,34,12,1, + 0,15,0,25,128,49,128,48,0,48,0,48,0,48,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,64,190, + 192,231,128,11,12,24,13,1,3,192,96,238,224,127,192,49, + 128,96,192,96,192,96,192,96,192,49,128,127,192,238,224,192, + 96,14,17,34,14,0,0,248,124,112,48,48,32,24,96,24, + 64,12,192,12,128,7,128,3,0,31,224,3,0,31,224,3, + 0,3,0,3,0,3,0,15,192,2,17,17,6,2,0,192, + 192,192,192,192,192,192,0,0,0,192,192,192,192,192,192,192, + 8,20,20,12,2,253,28,38,70,96,112,56,60,78,135,131, + 195,226,116,56,28,14,6,98,100,56,6,2,2,8,1,14, + 204,204,17,17,51,19,1,0,7,240,0,28,28,0,48,6, + 0,97,227,0,71,49,0,196,25,128,140,0,128,136,0,128, + 136,0,128,136,0,128,140,0,128,196,25,128,71,113,0,97, + 195,0,48,6,0,28,28,0,7,240,0,7,9,9,8,0, + 8,120,204,12,124,204,204,118,0,254,9,10,20,13,1,1, + 8,128,25,128,51,0,102,0,204,0,204,0,102,0,51,0, + 25,128,8,128,11,7,14,15,2,1,255,224,255,224,0,96, + 0,96,0,96,0,96,0,96,6,2,2,8,0,5,252,252, + 17,17,51,19,1,0,7,240,0,28,28,0,48,6,0,103, + 227,0,66,49,0,194,17,128,130,16,128,130,48,128,131,224, + 128,130,64,128,130,32,128,194,49,128,71,25,0,96,3,0, + 48,6,0,28,28,0,7,240,0,7,2,2,8,1,14,254, + 254,7,7,7,9,1,10,56,68,130,130,130,68,56,10,11, + 22,14,2,0,12,0,12,0,12,0,255,192,255,192,12,0, + 12,0,12,0,0,0,255,192,255,192,6,10,10,7,0,7, + 56,76,140,12,8,16,48,32,68,252,6,10,10,7,0,7, + 56,76,140,8,48,8,12,140,136,112,5,4,4,8,2,13, + 24,56,112,192,11,17,34,13,1,251,225,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,113,192,126,192, + 92,224,64,0,192,0,192,0,224,0,64,0,9,21,42,11, + 1,252,31,128,57,0,121,0,121,0,249,0,249,0,249,0, + 121,0,121,0,57,0,25,0,9,0,9,0,9,0,9,0, + 9,0,9,0,9,0,9,0,9,0,9,0,2,3,3,6, + 2,5,192,192,192,6,6,6,8,1,250,16,48,60,12,204, + 120,5,10,10,7,1,7,32,96,160,32,32,32,32,32,32, + 248,7,9,9,8,0,8,56,68,198,198,198,68,56,0,254, + 9,10,20,12,2,1,136,0,204,0,102,0,51,0,25,128, + 25,128,51,0,102,0,204,0,136,0,16,17,34,18,1,0, + 32,24,96,24,160,48,32,96,32,96,32,192,32,192,33,132, + 35,12,251,28,6,20,6,36,12,100,24,68,24,255,48,4, + 48,4,15,17,34,18,1,0,32,24,96,24,160,48,32,96, + 32,96,32,192,32,192,33,156,35,38,251,70,6,6,6,4, + 12,8,24,24,24,16,48,34,48,126,17,17,51,18,0,0, + 56,12,0,76,12,0,140,24,0,8,48,0,48,48,0,8, + 96,0,12,96,0,140,194,0,137,134,0,113,142,0,3,10, + 0,3,18,0,6,50,0,12,34,0,12,127,128,24,2,0, + 24,2,0,8,17,17,11,1,251,12,12,0,0,8,8,24, + 24,56,48,112,224,195,195,193,99,62,17,22,66,17,0,0, + 12,0,0,14,0,0,7,0,0,1,128,0,0,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,17,22,66,17,0,0,0,24,0,0,56,0,0,112, + 0,0,192,0,0,0,0,0,128,0,1,192,0,1,192,0, + 1,96,0,2,96,0,2,48,0,6,48,0,4,48,0,4, + 24,0,12,24,0,15,248,0,8,12,0,24,12,0,16,12, + 0,16,6,0,48,6,0,252,31,128,17,22,66,17,0,0, + 1,128,0,3,192,0,6,96,0,4,32,0,0,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,17,21,63,17,0,0,3,32,0,7,224,0,4,192, + 0,0,0,0,0,128,0,1,192,0,1,192,0,1,96,0, + 2,96,0,2,48,0,6,48,0,4,48,0,4,24,0,12, + 24,0,15,248,0,8,12,0,24,12,0,16,12,0,16,6, + 0,48,6,0,252,31,128,17,21,63,17,0,0,6,96,0, + 6,96,0,0,0,0,0,0,0,0,128,0,1,192,0,1, + 192,0,1,96,0,2,96,0,2,48,0,6,48,0,4,48, + 0,4,24,0,12,24,0,15,248,0,8,12,0,24,12,0, + 16,12,0,16,6,0,48,6,0,252,31,128,17,23,69,17, + 0,0,1,192,0,2,32,0,2,32,0,2,32,0,1,192, + 0,0,0,0,0,128,0,1,192,0,1,192,0,1,96,0, + 2,96,0,2,48,0,6,48,0,4,48,0,4,24,0,12, + 24,0,15,248,0,8,12,0,24,12,0,16,12,0,16,6, + 0,48,6,0,252,31,128,21,17,51,22,0,0,3,255,240, + 0,240,48,1,176,16,1,48,16,3,48,0,2,48,0,6, + 48,64,4,48,64,4,63,192,12,48,64,15,240,64,8,48, + 0,24,48,0,16,48,8,48,48,8,32,48,24,248,255,248, + 14,23,46,16,1,250,7,228,28,60,56,12,96,4,96,4, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,4,56,8,30,56,7,224,1,0,3,0,3,192,0,192, + 12,192,7,128,13,22,44,15,1,0,24,0,28,0,14,0, + 3,0,0,0,255,240,48,48,48,16,48,16,48,0,48,0, + 48,64,48,64,63,192,48,64,48,64,48,0,48,0,48,8, + 48,8,48,24,255,248,13,22,44,15,1,0,0,96,0,224, + 1,192,3,0,0,0,255,240,48,48,48,16,48,16,48,0, + 48,0,48,64,48,64,63,192,48,64,48,64,48,0,48,0, + 48,8,48,8,48,24,255,248,13,22,44,15,1,0,6,0, + 15,0,25,128,16,128,0,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,64,48,64,63,192,48,64,48,64,48,0, + 48,0,48,8,48,8,48,24,255,248,13,21,42,15,1,0, + 25,128,25,128,0,0,0,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,64,48,64,63,192,48,64,48,64,48,0, + 48,0,48,8,48,8,48,24,255,248,7,22,22,8,0,0, + 192,224,112,24,0,126,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,126,7,22,22,8,1,0,6,14,28,48, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,6,22,22,8,1,0,48,120,204,132,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,6,21, + 21,8,1,0,204,204,0,0,252,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,16,17,34,17,0,0,127, + 224,24,56,24,28,24,6,24,6,24,3,24,3,255,3,255, + 3,24,3,24,3,24,3,24,6,24,6,24,28,24,56,127, + 224,16,21,42,18,1,0,3,32,7,224,4,192,0,0,240, + 31,48,4,56,4,56,4,44,4,38,4,38,4,35,4,33, + 132,33,132,32,196,32,100,32,100,32,52,32,28,32,28,248, + 12,16,22,44,18,1,0,12,0,14,0,7,0,1,128,0, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,16,22,44,18,1,0,0,48,0,112,0,224,1, + 128,0,0,7,224,28,56,56,28,96,6,96,6,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,96,6,96,6,56, + 28,28,56,7,224,16,22,44,18,1,0,1,128,3,192,6, + 96,4,32,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,16,21,42,18,1,0,3,32,7, + 224,4,192,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,16,21,42,18,1,0,6,96,6, + 96,0,0,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,10,9,18,12,1,1,192,192,97, + 128,51,0,30,0,12,0,30,0,51,0,97,128,192,192,16, + 19,38,18,1,255,0,4,7,228,28,56,56,28,96,38,96, + 70,192,67,192,131,192,131,193,3,193,3,194,3,194,3,100, + 6,104,6,56,28,28,56,39,224,32,0,16,22,44,18,1, + 0,6,0,7,0,3,128,0,192,0,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,16,22,44, + 18,1,0,0,48,0,112,0,224,1,128,0,0,252,31,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,8,24,8,28,48,7,224,16, + 22,44,18,1,0,1,128,3,192,6,96,4,32,0,0,252, + 31,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,4,48,8,24,8,28,48,7, + 224,16,21,42,18,1,0,6,96,6,96,0,0,0,0,252, + 31,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,4,48,8,24,8,28,48,7, + 224,16,22,44,18,1,0,0,48,0,112,0,224,1,128,0, + 0,252,63,48,12,56,8,24,24,28,16,12,48,6,32,6, + 96,3,64,3,192,1,128,1,128,1,128,1,128,1,128,1, + 128,7,224,13,17,34,15,1,0,252,0,48,0,48,0,48, + 0,63,192,48,112,48,48,48,24,48,24,48,24,48,48,48, + 112,63,192,48,0,48,0,48,0,252,0,10,17,34,12,1, + 0,30,0,51,0,97,128,97,128,97,128,97,128,99,0,108, + 0,103,0,99,128,97,128,97,192,96,192,96,192,108,192,108, + 128,231,0,9,17,34,11,1,0,96,0,112,0,56,0,12, + 0,0,0,62,0,103,0,99,0,3,0,15,0,59,0,99, + 0,195,0,195,0,199,0,251,0,113,128,9,17,34,11,1, + 0,3,0,7,0,14,0,24,0,0,0,62,0,103,0,99, + 0,3,0,15,0,59,0,99,0,195,0,195,0,199,0,251, + 0,113,128,9,17,34,11,1,0,12,0,30,0,51,0,33, + 0,0,0,62,0,103,0,99,0,3,0,15,0,59,0,99, + 0,195,0,195,0,199,0,251,0,113,128,9,16,32,11,1, + 0,50,0,126,0,76,0,0,0,62,0,103,0,99,0,3, + 0,15,0,59,0,99,0,195,0,195,0,199,0,251,0,113, + 128,9,16,32,11,1,0,102,0,102,0,0,0,0,0,62, + 0,103,0,99,0,3,0,15,0,59,0,99,0,195,0,195, + 0,199,0,251,0,113,128,9,18,36,11,1,0,28,0,34, + 0,34,0,34,0,28,0,0,0,62,0,103,0,99,0,3, + 0,15,0,59,0,99,0,195,0,195,0,199,0,251,0,113, + 128,14,12,24,16,1,0,60,240,103,152,99,12,3,12,15, + 252,59,0,99,0,195,0,195,0,199,132,251,248,112,240,9, + 18,36,11,1,250,31,0,99,128,65,128,192,0,192,0,192, + 0,192,0,192,0,224,0,112,128,127,0,30,0,8,0,24, + 0,30,0,6,0,102,0,60,0,9,17,34,11,1,0,96, + 0,112,0,56,0,12,0,0,0,30,0,99,0,65,128,193, + 128,255,128,192,0,192,0,192,0,224,0,112,128,127,0,30, + 0,9,17,34,11,1,0,3,0,7,0,14,0,24,0,0, + 0,30,0,99,0,65,128,193,128,255,128,192,0,192,0,192, + 0,224,0,112,128,127,0,30,0,9,17,34,11,1,0,12, + 0,30,0,51,0,33,0,0,0,30,0,99,0,65,128,193, + 128,255,128,192,0,192,0,192,0,224,0,112,128,127,0,30, + 0,9,16,32,11,1,0,51,0,51,0,0,0,0,0,30, + 0,99,0,65,128,193,128,255,128,192,0,192,0,192,0,224, + 0,112,128,127,0,30,0,6,17,17,6,255,0,192,224,112, + 24,0,56,24,24,24,24,24,24,24,24,24,24,60,5,17, + 17,6,1,0,24,56,112,192,0,96,224,96,96,96,96,96, + 96,96,96,96,240,6,17,17,6,0,0,48,120,204,132,0, + 48,112,48,48,48,48,48,48,48,48,48,120,6,16,16,6, + 0,0,204,204,0,0,112,48,48,48,48,48,48,48,48,48, + 48,120,10,17,34,12,1,0,192,0,113,128,30,0,60,0, + 198,0,31,0,115,128,97,128,192,192,192,192,192,192,192,192, + 192,192,192,192,97,128,115,128,30,0,11,16,32,13,1,0, + 25,0,63,0,38,0,0,0,103,0,239,128,113,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,241,224, + 10,17,34,12,1,0,96,0,112,0,56,0,12,0,0,0, + 30,0,115,128,97,128,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,17,34,12,1,0,3,0, + 7,0,14,0,24,0,0,0,30,0,115,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,97,128,115,128,30,0, + 10,17,34,12,1,0,12,0,30,0,51,0,33,0,0,0, + 30,0,115,128,97,128,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,16,32,12,1,0,25,0, + 63,0,38,0,0,0,30,0,115,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,115,128,30,0,10,16, + 32,12,1,0,51,0,51,0,0,0,0,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,97,128, + 115,128,30,0,10,10,20,12,1,1,12,0,12,0,0,0, + 0,0,255,192,255,192,0,0,0,0,12,0,12,0,10,14, + 28,12,1,255,0,192,30,192,115,128,99,128,198,192,196,192, + 204,192,200,192,216,192,208,192,113,128,115,128,222,0,192,0, + 11,17,34,13,1,0,96,0,112,0,56,0,12,0,0,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,17,34,13,1,0,1,128, + 3,128,7,0,12,0,0,0,225,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,192,62,192,28,224, + 11,17,34,13,1,0,12,0,30,0,51,0,33,0,0,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,16,32,13,1,0,51,0, + 51,0,0,0,0,0,225,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,113,192,62,192,28,224,11,22, + 44,11,0,251,1,128,3,128,7,0,12,0,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,12,0,8,0,24,0,240,0,224,0, + 10,22,44,12,1,251,96,0,224,0,96,0,96,0,96,0, + 110,0,115,128,97,128,96,192,96,192,96,192,96,192,96,192, + 96,192,97,128,115,128,110,0,96,0,96,0,96,0,96,0, + 240,0,11,21,42,11,0,251,51,0,51,0,0,0,0,0, + 241,224,96,192,96,128,48,128,48,128,49,0,25,0,25,0, + 26,0,14,0,14,0,4,0,12,0,8,0,24,0,240,0, + 224,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--25-180-100-100-P-125-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=23 x= 3 y=13 dx=23 dy= 0 ascent=19 len=60 + Font Bounding box w=29 h=37 x=-4 y=-9 + Calculated Min Values x=-2 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =17 descent=-6 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR18r[3208] U8G_SECTION(".progmem.u8g_font_timR18r") = { + 0,29,37,252,247,17,4,9,8,241,32,127,250,19,250,17, + 250,0,0,0,6,0,1,3,17,17,8,3,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,6,5, + 5,10,1,12,204,204,204,204,136,11,17,34,13,1,0,8, + 128,8,128,8,128,8,128,8,128,127,224,127,224,17,0,17, + 0,17,0,255,192,255,192,34,0,34,0,34,0,34,0,34, + 0,11,21,42,12,0,254,4,0,4,0,63,0,101,192,196, + 192,196,64,196,64,228,0,124,0,30,0,7,128,5,192,4, + 224,4,96,132,96,132,96,196,192,229,192,63,0,4,0,4, + 0,17,16,48,19,1,0,30,12,0,51,252,0,97,24,0, + 193,16,0,193,48,0,194,96,0,228,64,0,120,192,0,1, + 143,0,1,25,128,3,48,128,6,96,128,4,96,128,12,97, + 0,24,114,0,16,60,0,17,17,51,19,1,0,7,192,0, + 8,96,0,24,32,0,24,32,0,24,96,0,12,192,0,15, + 158,0,7,12,0,15,8,0,51,136,0,97,144,0,192,208, + 0,192,224,0,192,96,0,224,240,128,127,191,0,62,14,0, + 2,5,5,6,2,12,192,192,192,192,128,6,22,22,8,1, + 251,4,8,16,48,32,96,96,192,192,192,192,192,192,192,192, + 96,96,32,48,16,8,4,6,22,22,8,1,251,128,64,32, + 48,16,24,24,12,12,12,12,12,12,12,12,24,24,16,48, + 32,64,128,9,9,18,12,2,8,28,0,28,0,201,128,235, + 128,28,0,235,128,201,128,28,0,28,0,12,12,24,12,0, + 0,6,0,6,0,6,0,6,0,6,0,255,240,255,240,6, + 0,6,0,6,0,6,0,6,0,3,5,5,7,2,253,192, + 224,32,96,192,6,2,2,8,0,5,252,252,2,2,2,6, + 2,0,192,192,9,21,42,7,254,252,1,128,1,128,1,0, + 3,0,3,0,2,0,6,0,6,0,4,0,12,0,12,0, + 8,0,24,0,24,0,16,0,48,0,48,0,96,0,96,0, + 64,0,192,0,10,17,34,12,1,0,30,0,51,0,97,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,225,192,97,128,97,128,51,0,30,0,8,17,17,12, + 2,0,8,24,120,24,24,24,24,24,24,24,24,24,24,24, + 24,24,255,10,17,34,12,1,0,28,0,127,0,67,128,129, + 128,129,128,1,128,1,128,3,0,3,0,6,0,4,0,12, + 0,24,0,48,0,96,64,255,192,255,128,9,17,34,12,1, + 0,28,0,126,0,71,0,131,0,131,0,6,0,12,0,30, + 0,7,0,3,128,1,128,1,128,1,128,1,0,195,0,230, + 0,120,0,10,17,34,12,1,0,3,0,7,0,7,0,11, + 0,27,0,19,0,51,0,35,0,99,0,67,0,195,0,255, + 192,255,192,3,0,3,0,3,0,3,0,10,17,34,12,1, + 0,31,192,31,128,32,0,32,0,96,0,120,0,126,0,15, + 128,3,128,1,192,0,192,0,192,0,192,0,192,193,128,227, + 128,126,0,10,17,34,12,1,0,3,192,14,0,24,0,48, + 0,112,0,96,0,238,0,243,128,193,128,192,192,192,192,192, + 192,192,192,224,192,97,128,123,128,30,0,10,17,34,12,1, + 0,127,192,255,192,192,192,129,128,1,128,1,0,3,0,3, + 0,2,0,6,0,6,0,4,0,12,0,12,0,12,0,24, + 0,24,0,10,17,34,12,1,0,30,0,51,0,97,128,97, + 128,97,128,115,0,62,0,30,0,63,0,99,128,65,192,192, + 192,192,192,192,192,225,128,115,128,30,0,10,17,34,12,1, + 0,30,0,119,128,97,128,193,192,192,192,192,192,192,192,192, + 192,97,192,115,192,29,128,1,128,3,128,3,0,6,0,28, + 0,240,0,2,11,11,6,2,0,192,192,0,0,0,0,0, + 0,0,192,192,3,14,14,7,2,253,192,192,0,0,0,0, + 0,0,0,192,224,32,96,192,11,11,22,14,1,0,0,96, + 1,192,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,192,0,96,9,5,10,13,2,3,255,128,255,128,0,0, + 255,128,255,128,11,11,22,13,1,0,192,0,112,0,28,0, + 7,0,1,192,0,96,1,192,7,0,28,0,112,0,192,0, + 8,17,17,11,2,0,124,198,131,195,195,7,14,12,28,24, + 24,16,16,0,0,48,48,18,20,60,22,2,253,3,248,0, + 15,14,0,28,3,0,56,1,128,112,0,128,96,236,192,225, + 252,64,195,140,64,195,12,64,198,12,64,198,24,64,198,24, + 192,198,24,128,198,57,128,99,123,0,97,222,0,48,0,0, + 24,0,0,14,12,0,3,240,0,17,17,51,17,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,14,17,34,16,1,0,255,192,48,112,48,48,48,24, + 48,24,48,24,48,48,48,64,63,224,48,56,48,24,48,12, + 48,12,48,12,48,24,48,120,255,224,14,17,34,16,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,4,56,8,30,56, + 7,224,15,17,34,17,1,0,255,192,48,112,48,56,48,12, + 48,12,48,6,48,6,48,6,48,6,48,6,48,6,48,6, + 48,12,48,12,48,56,48,112,255,192,13,17,34,15,1,0, + 255,240,48,48,48,16,48,16,48,0,48,0,48,64,48,64, + 63,192,48,64,48,64,48,0,48,0,48,8,48,8,48,24, + 255,248,12,17,34,14,1,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,32,48,32,63,224,48,32,48,32,48,0, + 48,0,48,0,48,0,48,0,252,0,16,17,34,18,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,63,192,12,192,12,96,12,96,12,56,28,30,56, + 7,224,17,17,51,19,1,0,252,31,128,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 63,254,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,48,6,0,252,31,128,6,17,17,8,1, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,9,17,34,11,1,0,31,128,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,198,0,204,0,120,0,16,17,34,17,1,0, + 252,126,48,24,48,48,48,96,48,192,49,128,51,0,62,0, + 63,0,51,128,49,192,48,224,48,112,48,56,48,28,48,14, + 252,31,13,17,34,14,1,0,252,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,21,17,51,22,1,0, + 240,0,248,48,0,224,56,1,96,56,1,96,44,2,96,44, + 2,96,38,2,96,38,4,96,35,4,96,35,8,96,33,136, + 96,33,136,96,32,208,96,32,208,96,32,96,96,32,96,96, + 248,97,248,16,17,34,18,1,0,240,31,48,4,56,4,56, + 4,44,4,38,4,38,4,35,4,33,132,33,132,32,196,32, + 100,32,100,32,52,32,28,32,28,248,12,16,17,34,18,1, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,13,17,34,15,1,0,255,192,48,112,48,48,48, + 24,48,24,48,24,48,48,48,112,63,192,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,252,0,16,22,44,18,1, + 251,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,1,192,0,224,0,112,0,56,0,15,15,17,34, + 16,1,0,255,192,48,112,48,48,48,24,48,24,48,24,48, + 48,48,112,63,192,51,128,49,128,48,192,48,96,48,112,48, + 56,48,28,252,30,11,17,34,13,1,0,30,64,99,192,192, + 192,192,64,192,64,224,0,120,0,30,0,15,128,3,192,0, + 224,0,96,128,96,128,96,192,192,241,128,158,0,14,17,34, + 16,1,0,255,252,195,12,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,15,192,16,17,34,18,1,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,17,17,51, + 17,0,0,252,31,128,48,6,0,48,4,0,24,12,0,24, + 8,0,24,8,0,12,24,0,12,16,0,6,48,0,6,32, + 0,6,32,0,3,96,0,3,64,0,3,192,0,1,128,0, + 1,128,0,1,128,0,23,17,51,23,0,0,252,126,126,48, + 24,24,48,24,16,24,24,16,24,24,48,24,44,32,12,44, + 32,12,44,96,6,76,96,6,76,64,6,70,64,3,70,192, + 3,70,128,3,135,128,1,131,128,1,131,0,1,131,0,18, + 17,51,18,0,0,126,15,128,28,6,0,14,12,0,6,8, + 0,3,16,0,1,160,0,1,192,0,0,192,0,0,224,0, + 1,112,0,2,56,0,6,24,0,4,12,0,8,14,0,24, + 7,0,48,3,128,252,15,192,16,17,34,18,1,0,252,63, + 48,12,56,8,24,24,28,16,12,48,6,32,6,96,3,64, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 13,17,34,15,1,0,255,240,192,112,128,224,128,192,1,192, + 3,128,3,0,7,0,6,0,14,0,28,0,24,0,56,0, + 48,8,112,8,224,24,255,248,5,21,21,8,2,252,248,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,248,7,17,17,7,0,0,192,192,64,96,96,32,48, + 48,16,24,24,8,12,12,4,6,6,5,21,21,8,1,252, + 248,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,248,9,9,18,11,1,8,8,0,28,0,20, + 0,54,0,34,0,99,0,65,0,193,128,128,128,12,2,4, + 12,0,251,255,240,255,240,5,4,4,8,1,13,192,224,112, + 24,9,12,24,11,1,0,62,0,103,0,99,0,3,0,15, + 0,59,0,99,0,195,0,195,0,199,0,251,0,113,128,11, + 17,34,12,0,0,48,0,240,0,48,0,48,0,48,0,55, + 0,57,192,48,192,48,96,48,96,48,96,48,96,48,96,48, + 96,48,192,57,192,47,0,9,12,24,11,1,0,31,0,99, + 128,65,128,192,0,192,0,192,0,192,0,192,0,224,0,112, + 128,127,0,30,0,10,17,34,12,1,0,1,128,7,128,1, + 128,1,128,1,128,29,128,115,128,97,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,128,127,128,25,192,9,12,24, + 11,1,0,30,0,99,0,65,128,193,128,255,128,192,0,192, + 0,192,0,224,0,112,128,127,0,30,0,7,17,17,7,0, + 0,14,22,48,48,48,254,48,48,48,48,48,48,48,48,48, + 48,120,11,18,36,12,1,250,30,192,35,192,97,0,97,128, + 97,128,97,128,97,128,51,0,60,0,64,0,96,0,127,128, + 63,192,64,224,192,96,192,96,225,192,127,0,12,17,34,13, + 0,0,48,0,240,0,48,0,48,0,48,0,51,128,55,192, + 56,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,120,240,4,17,17,6,1,0,96,96,0,0,0,96, + 224,96,96,96,96,96,96,96,96,96,240,6,23,23,6,254, + 250,12,12,0,0,0,12,28,12,12,12,12,12,12,12,12, + 12,12,12,12,12,204,200,112,12,17,34,12,0,0,48,0, + 240,0,48,0,48,0,48,0,51,224,49,128,51,0,50,0, + 52,0,60,0,54,0,55,0,51,128,49,192,48,224,121,240, + 5,17,17,6,0,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,120,18,12,36,20,1,0,103,14,0, + 239,159,0,113,227,128,96,193,128,96,193,128,96,193,128,96, + 193,128,96,193,128,96,193,128,96,193,128,96,193,128,241,227, + 192,11,12,24,13,1,0,103,0,239,128,113,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,241,224,10, + 12,24,12,1,0,30,0,115,128,97,128,192,192,192,192,192, + 192,192,192,192,192,192,192,97,128,115,128,30,0,10,18,36, + 12,1,250,110,0,243,128,97,128,96,192,96,192,96,192,96, + 192,96,192,96,192,97,128,115,128,110,0,96,0,96,0,96, + 0,96,0,96,0,240,0,10,18,36,12,1,250,29,128,115, + 128,97,128,193,128,193,128,193,128,193,128,193,128,193,128,97, + 128,115,128,29,128,1,128,1,128,1,128,1,128,1,128,3, + 192,6,12,12,8,1,0,108,236,112,96,96,96,96,96,96, + 96,96,240,8,12,12,10,1,0,62,70,194,224,112,124,30, + 7,3,131,198,248,7,15,15,7,0,0,16,48,112,254,48, + 48,48,48,48,48,48,48,48,50,28,11,12,24,13,1,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,12,24,11,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,17,12,36,17,0,0,241,231,128,96, + 195,0,96,194,0,48,194,0,48,194,0,49,100,0,25,100, + 0,26,100,0,26,40,0,14,56,0,14,56,0,4,16,0, + 11,12,24,13,1,0,241,224,96,192,49,128,57,0,26,0, + 12,0,14,0,27,0,51,128,33,128,96,192,241,224,12,18, + 36,11,255,250,120,240,48,96,48,64,24,64,24,64,24,128, + 12,128,12,128,13,0,7,0,7,0,2,0,6,0,4,0, + 12,0,200,0,240,0,96,0,8,12,12,10,1,0,255,195, + 134,14,28,24,56,48,112,97,195,255,8,22,22,10,1,251, + 7,12,24,24,24,24,24,16,48,32,192,32,48,16,24,24, + 24,24,24,24,12,7,2,17,17,5,1,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,22,22, + 10,1,251,224,48,24,24,24,24,24,8,12,4,3,4,12, + 8,24,24,24,24,24,24,48,224,11,4,8,13,1,4,56, + 32,124,96,199,192,131,128,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=31 h=30 x= 4 y=18 dx=32 dy= 0 ascent=30 len=112 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =30 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24[10419] U8G_SECTION(".progmem.u8g_font_timR24") = { + 0,38,48,251,245,23,5,140,13,213,32,255,249,30,249,23, + 249,0,0,0,8,0,1,4,23,23,11,3,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,96,0,0, + 96,240,240,96,9,7,14,14,2,16,227,128,227,128,227,128, + 227,128,65,0,65,0,65,0,16,23,46,17,0,0,6,24, + 6,24,6,24,6,24,6,24,6,24,6,24,6,24,127,255, + 127,255,12,48,12,48,12,48,12,48,255,254,255,254,24,96, + 24,96,24,96,24,96,24,96,24,96,24,96,13,28,56,16, + 2,253,2,0,2,0,15,192,58,112,50,56,98,24,98,8, + 98,8,114,0,122,0,62,0,63,0,31,128,7,192,3,224, + 2,240,2,112,2,56,2,56,130,24,130,24,194,56,226,48, + 114,96,31,192,2,0,2,0,2,0,23,23,69,27,2,0, + 15,0,64,29,131,192,56,252,128,112,65,128,112,67,0,224, + 66,0,224,70,0,224,196,0,192,140,0,193,136,0,193,24, + 120,102,16,236,60,49,198,0,99,130,0,67,130,0,199,2, + 0,135,2,1,135,6,1,6,4,3,6,12,2,6,8,6, + 3,48,4,1,224,23,23,69,26,2,0,0,248,0,1,140, + 0,3,14,0,3,6,0,7,6,0,7,6,0,7,12,0, + 7,140,0,3,152,0,3,241,252,3,192,112,7,192,96,29, + 224,64,56,240,192,112,112,128,96,121,128,224,63,0,224,30, + 0,224,15,0,240,31,130,120,51,252,127,225,248,31,128,240, + 3,8,8,6,1,15,224,224,224,224,64,64,64,64,8,28, + 28,11,2,251,3,6,12,24,56,48,112,112,96,224,224,224, + 224,224,224,224,224,224,224,96,112,112,48,56,24,12,6,3, + 8,28,28,11,1,251,192,96,48,24,28,12,14,14,6,7, + 7,7,7,7,7,7,7,7,7,6,14,14,12,28,24,48, + 96,192,12,13,26,17,2,10,6,0,15,0,6,0,198,48, + 246,240,118,224,15,0,118,224,246,240,198,48,6,0,15,0, + 6,0,16,16,32,19,1,1,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,255,255,255,255,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,4,7,7,8,2,253,96,240, + 240,112,16,32,64,8,2,2,11,1,7,255,255,4,4,4, + 8,2,0,96,240,240,96,10,26,52,9,0,253,0,192,0, + 192,1,128,1,128,3,128,3,0,3,0,3,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,24, + 0,48,0,48,0,48,0,112,0,96,0,96,0,192,0,192, + 0,14,23,46,16,1,0,7,128,28,224,56,112,48,48,112, + 56,112,56,96,24,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,24,112,56,112,56,48,48,56, + 112,28,224,7,128,9,23,46,16,4,0,12,0,28,0,124, + 0,220,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,128,15,23,46,16,0,0,7, + 224,15,240,28,248,48,60,32,60,96,28,64,28,0,28,0, + 28,0,24,0,56,0,48,0,96,0,96,0,192,1,128,3, + 0,6,0,12,2,24,6,63,252,127,248,255,248,12,23,46, + 16,2,0,15,128,63,192,97,224,192,224,128,224,0,224,0, + 192,0,192,1,128,3,0,7,192,31,224,1,240,0,112,0, + 112,0,48,0,48,0,48,0,112,0,96,224,192,243,128,127, + 0,14,23,46,16,1,0,0,96,0,224,0,224,1,224,1, + 96,3,96,6,96,4,96,12,96,24,96,16,96,48,96,96, + 96,64,96,255,252,255,252,255,252,0,96,0,96,0,96,0, + 96,0,96,0,96,13,23,46,16,1,0,15,248,31,240,31, + 224,16,0,48,0,32,0,126,0,127,128,127,192,7,224,1, + 224,0,240,0,112,0,112,0,48,0,48,0,48,0,48,0, + 96,0,96,224,192,243,128,126,0,14,23,46,16,1,0,0, + 120,1,192,3,128,15,0,30,0,28,0,56,0,120,0,112, + 0,115,192,247,240,248,120,224,56,224,60,224,28,224,28,224, + 28,224,28,112,28,112,24,56,56,28,96,7,192,14,23,46, + 16,1,0,63,252,127,252,96,24,192,24,128,56,0,48,0, + 48,0,48,0,96,0,96,0,96,0,224,0,192,0,192,1, + 192,1,128,1,128,1,128,3,0,3,0,3,0,7,0,6, + 0,13,23,46,16,2,0,31,128,56,224,112,112,224,48,224, + 48,224,48,224,112,240,96,124,192,63,0,31,128,15,192,27, + 224,113,240,96,240,224,120,192,120,192,56,192,56,224,56,96, + 112,112,224,31,192,14,23,46,16,1,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,240, + 28,112,28,120,60,62,252,15,184,0,56,0,112,0,112,0, + 224,1,192,3,128,15,0,120,0,4,15,15,9,2,0,96, + 240,240,96,0,0,0,0,0,0,0,96,240,240,96,4,18, + 18,9,2,253,96,240,240,96,0,0,0,0,0,0,0,96, + 240,240,112,16,32,64,16,18,36,19,1,0,0,1,0,7, + 0,31,0,124,1,240,7,192,31,0,124,0,240,0,240,0, + 124,0,31,0,7,192,1,240,0,124,0,31,0,7,0,1, + 16,9,18,19,1,4,255,255,255,255,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,16,18,36,19,2,0,128,0, + 224,0,248,0,62,0,15,128,3,224,0,248,0,62,0,15, + 0,15,0,62,0,248,3,224,15,128,62,0,248,0,224,0, + 128,0,11,23,46,14,2,0,31,0,115,128,193,192,193,192, + 224,224,224,224,96,224,1,192,1,192,1,128,3,128,3,0, + 6,0,4,0,12,0,8,0,8,0,0,0,0,0,12,0, + 30,0,30,0,12,0,27,28,112,31,2,251,0,31,240,0, + 0,248,60,0,1,224,6,0,7,128,3,0,14,0,1,128, + 28,0,0,192,28,0,0,192,56,7,140,96,112,31,92,96, + 112,28,124,32,112,56,56,32,224,112,56,32,224,112,48,32, + 224,112,112,32,224,224,112,96,224,224,112,64,224,224,224,192, + 224,224,224,128,112,225,225,128,112,119,115,0,112,60,62,0, + 56,0,0,0,24,0,0,0,28,0,0,0,14,0,0,0, + 7,128,6,0,1,240,60,0,0,127,240,0,22,23,69,24, + 1,0,0,48,0,0,48,0,0,112,0,0,120,0,0,120, + 0,0,252,0,0,220,0,0,156,0,1,142,0,1,14,0, + 3,15,0,3,7,0,2,7,0,6,7,128,6,3,128,15, + 255,192,12,3,192,24,1,192,24,1,224,48,1,224,48,0, + 240,112,0,240,252,3,252,20,23,69,22,1,0,255,254,0, + 62,15,128,28,3,192,28,1,192,28,1,224,28,0,224,28, + 0,224,28,1,224,28,1,192,28,3,192,28,15,128,31,254, + 0,28,7,128,28,1,224,28,0,224,28,0,240,28,0,112, + 28,0,112,28,0,240,28,0,224,28,1,224,62,7,192,255, + 255,0,20,23,69,22,1,0,1,255,16,7,131,240,14,0, + 240,28,0,112,56,0,48,56,0,48,112,0,16,112,0,16, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,112,0,0,112,0,0,56,0,0,56,0, + 16,28,0,48,14,0,96,7,131,192,1,255,0,22,23,69, + 24,1,0,255,254,0,62,7,128,28,1,192,28,0,224,28, + 0,112,28,0,112,28,0,56,28,0,56,28,0,60,28,0, + 60,28,0,60,28,0,60,28,0,60,28,0,60,28,0,60, + 28,0,56,28,0,56,28,0,112,28,0,112,28,0,224,28, + 1,192,62,7,128,255,254,0,19,23,69,20,1,0,255,255, + 192,62,3,192,28,0,192,28,0,64,28,0,64,28,0,0, + 28,0,0,28,0,0,28,1,0,28,1,0,28,3,0,31, + 255,0,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,32,28,0,32,28,0,96,28,0,192,62,3,192, + 255,255,192,17,23,69,18,1,0,255,255,128,62,7,128,28, + 1,128,28,0,128,28,0,128,28,0,0,28,0,0,28,0, + 0,28,2,0,28,2,0,28,6,0,31,254,0,28,6,0, + 28,2,0,28,2,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,62,0,0,255,128,0,22,23, + 69,24,1,0,1,255,48,7,135,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,0,240,0,0,240, + 0,0,240,0,0,240,3,252,240,0,248,240,0,112,240,0, + 112,112,0,112,112,0,112,56,0,112,56,0,112,28,0,112, + 14,0,112,7,129,224,1,255,128,22,23,69,24,1,0,255, + 135,252,62,1,240,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 31,255,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,62,1, + 240,255,135,252,9,23,46,11,1,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,12,23,46,13,1,0,31,240, + 7,192,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,195,128,227,0,231,0,124,0,23,23,69,24, + 1,0,255,199,248,62,1,224,28,1,128,28,3,0,28,6, + 0,28,12,0,28,24,0,28,48,0,28,96,0,28,192,0, + 31,192,0,31,224,0,31,240,0,30,120,0,28,60,0,28, + 30,0,28,15,0,28,7,128,28,3,192,28,1,224,28,0, + 240,62,0,248,255,199,254,19,23,69,20,1,0,255,128,0, + 62,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,32,28,0,32,28,0,96,28,0,192,62,3,192,255, + 255,192,28,23,92,30,1,0,252,0,7,240,62,0,7,192, + 30,0,15,128,31,0,15,128,31,0,11,128,23,0,27,128, + 23,128,27,128,19,128,51,128,19,192,51,128,19,192,35,128, + 17,224,99,128,17,224,99,128,16,224,195,128,16,240,195,128, + 16,112,131,128,16,121,131,128,16,121,3,128,16,61,3,128, + 16,63,3,128,16,30,3,128,16,30,3,128,56,12,7,192, + 254,12,31,240,22,23,69,24,1,0,248,1,252,60,0,112, + 30,0,32,31,0,32,31,0,32,23,128,32,19,192,32,19, + 192,32,17,224,32,16,240,32,16,248,32,16,120,32,16,60, + 32,16,30,32,16,31,32,16,15,32,16,7,160,16,3,224, + 16,1,224,16,1,224,16,0,224,56,0,96,254,0,32,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,56,0,112,56,0,112,112,0,56,112,0,56,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,112,0,56,112,0,56,56,0,112,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,248,0,60,62,0,28,15,0,28,7,0,28,7,128,28, + 3,128,28,3,128,28,3,128,28,7,128,28,7,0,28,15, + 0,28,62,0,31,240,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,22,29,87,24,1,250,1,254,0,7,135, + 128,14,1,192,28,0,224,56,0,112,56,0,112,112,0,56, + 112,0,56,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,112,0,56,112,0,56,56,0, + 112,56,0,112,28,0,224,14,1,192,7,135,128,1,254,0, + 0,124,0,0,62,0,0,31,0,0,15,128,0,3,224,0, + 0,124,21,23,69,22,1,0,255,248,0,60,62,0,28,15, + 0,28,7,128,28,7,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,0,28,30,0,31,248,0,28,240,0,28, + 120,0,28,60,0,28,60,0,28,30,0,28,15,0,28,15, + 128,28,7,128,28,3,192,62,1,224,255,129,248,15,23,46, + 18,1,0,7,228,28,60,56,28,112,12,112,4,112,6,120, + 0,124,0,62,0,31,128,15,224,7,240,1,248,0,124,0, + 62,0,30,128,14,128,14,192,14,224,12,112,28,124,120,103, + 240,19,23,69,20,1,0,255,255,224,240,225,224,192,224,96, + 192,224,96,128,224,32,128,224,32,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,1,240,0,7,252,0,22,23,69,24, + 1,0,255,129,252,62,0,112,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,30,0,96,14,0,64,15,0, + 192,7,195,128,1,254,0,22,23,69,23,1,0,255,1,252, + 124,0,112,60,0,96,30,0,64,30,0,192,14,0,192,15, + 0,128,15,1,128,7,1,128,7,129,0,3,131,0,3,195, + 0,3,194,0,1,198,0,1,230,0,0,228,0,0,236,0, + 0,124,0,0,120,0,0,120,0,0,56,0,0,48,0,0, + 16,0,31,23,92,32,1,0,255,63,224,254,124,15,128,120, + 60,7,0,48,28,7,128,48,30,7,128,96,30,3,128,96, + 14,3,192,96,15,3,192,192,7,3,224,192,7,135,224,192, + 7,134,225,128,3,132,241,128,3,204,241,128,3,204,115,0, + 1,216,123,0,1,216,59,0,1,248,62,0,0,240,62,0, + 0,240,28,0,0,224,28,0,0,96,28,0,0,96,8,0, + 0,64,8,0,22,23,69,24,1,0,255,195,252,63,0,240, + 31,0,224,15,0,192,7,129,128,7,131,0,3,198,0,1, + 230,0,1,236,0,0,248,0,0,120,0,0,120,0,0,124, + 0,0,222,0,1,158,0,1,143,0,3,15,128,6,7,128, + 14,3,192,12,3,224,24,1,224,56,1,240,254,7,252,22, + 23,69,24,1,0,255,192,252,63,0,56,30,0,48,15,0, + 96,15,128,192,7,128,128,3,193,128,3,195,0,1,227,0, + 0,246,0,0,252,0,0,124,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,124,0,1,255,0,19,23,69,20,1,0, + 63,255,224,56,3,192,96,7,128,96,7,128,64,15,0,64, + 30,0,0,30,0,0,60,0,0,120,0,0,120,0,0,240, + 0,1,224,0,1,224,0,3,192,0,3,192,0,7,128,0, + 15,0,0,15,0,32,30,0,32,60,0,96,60,0,96,120, + 1,192,255,255,192,7,28,28,11,3,251,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,240,254,13,23,46,9,254,0,192,0,224, + 0,96,0,112,0,48,0,56,0,24,0,28,0,12,0,14, + 0,6,0,7,0,3,0,3,128,1,128,1,192,0,192,0, + 224,0,96,0,112,0,48,0,56,0,24,7,28,28,11,1, + 251,254,30,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,30,254,13,13,26, + 16,1,10,7,0,7,0,15,128,13,128,24,192,24,192,48, + 96,48,96,112,112,96,48,224,56,192,24,192,24,17,2,6, + 17,0,251,255,255,128,255,255,128,7,6,6,11,1,17,192, + 224,112,24,12,6,13,15,30,15,1,0,31,128,49,192,112, + 224,112,224,96,224,3,224,14,224,24,224,48,224,96,224,224, + 224,225,224,242,232,126,248,60,112,15,23,46,16,0,0,24, + 0,248,0,56,0,56,0,56,0,56,0,56,0,56,0,57, + 240,59,248,60,124,56,28,56,30,56,14,56,14,56,14,56, + 14,56,14,56,12,56,28,56,24,60,112,15,224,12,15,30, + 15,1,0,15,128,56,192,112,224,96,224,224,96,192,0,192, + 0,192,0,192,0,224,0,224,16,112,48,124,96,63,192,31, + 0,15,23,46,16,1,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,15,184,24,248,48,120,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,190,15,48,12,15,30,15,1,0,15,128,57,192,96, + 224,96,112,192,112,255,240,192,0,192,0,192,0,224,0,224, + 16,112,48,124,96,63,192,15,0,12,23,46,11,0,0,3, + 224,6,112,12,112,12,48,28,0,28,0,28,0,28,0,255, + 192,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,62,0,255,128,14,22,44, + 16,1,249,15,192,24,252,48,124,112,48,112,48,112,48,112, + 48,56,112,28,224,15,128,24,0,48,0,120,0,127,224,63, + 248,31,252,96,12,192,12,192,28,240,56,127,224,31,128,16, + 23,46,16,0,0,24,0,248,0,56,0,56,0,56,0,56, + 0,56,0,56,0,57,240,59,248,62,60,60,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,254,127,7,23,23,9,1,0,56,56,56,0,0,0,0, + 0,56,248,56,56,56,56,56,56,56,56,56,56,56,56,254, + 8,30,30,9,255,249,7,7,7,0,0,0,0,0,3,31, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 6,198,236,120,16,23,46,16,0,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,254,56,112,56,96, + 56,192,57,128,63,0,62,0,63,0,59,128,57,192,56,224, + 56,240,56,120,56,60,254,127,7,23,23,9,1,0,24,248, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,25,15,60,26,0,0,24,240,120,0,251, + 249,252,0,62,63,30,0,60,30,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,254,127,63,128,16,15,30,16,0,0,24,240,251, + 248,60,60,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,254,127,14,15,30,16,1, + 0,7,128,24,224,48,112,112,56,96,56,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,56,48,28,96,7,128,15, + 22,44,17,0,249,25,224,251,248,60,124,56,28,56,30,56, + 14,56,14,56,14,56,14,56,14,56,12,56,28,60,24,62, + 112,59,192,56,0,56,0,56,0,56,0,56,0,56,0,255, + 0,15,22,44,17,1,249,15,200,28,120,48,56,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,184,31,56,0,56,0,56,0,56,0,56,0,56,0, + 56,1,254,10,15,30,11,1,0,25,128,251,192,63,192,60, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,10,15,30,13,1,0,62,128,99, + 128,193,128,192,128,224,128,240,0,124,0,63,0,15,128,3, + 192,129,192,128,192,192,192,225,128,191,0,9,19,38,9,0, + 0,8,0,8,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,128,63,0,28,0,16,15,30,17,0,0,248,124,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,60,60,92,31,223,15,140,15,15,30,17,1, + 0,254,62,120,12,56,8,60,24,28,24,28,16,14,48,14, + 32,7,96,7,64,7,192,3,192,3,128,1,128,1,0,21, + 15,45,24,1,0,253,252,120,112,112,48,112,112,48,56,48, + 32,56,56,96,24,56,64,28,120,64,28,92,192,12,204,128, + 14,143,128,15,143,0,7,7,0,7,7,0,3,6,0,2, + 2,0,14,15,30,17,1,0,252,248,56,96,60,192,28,128, + 30,128,15,0,7,0,7,128,15,128,11,192,25,224,16,224, + 48,112,96,120,240,252,15,22,44,17,1,249,254,30,120,12, + 56,12,60,8,28,24,30,24,14,16,14,48,7,32,7,32, + 3,224,3,192,1,192,1,128,1,128,1,0,1,0,3,0, + 2,0,62,0,124,0,56,0,13,15,30,15,1,0,127,240, + 96,240,64,224,65,224,3,192,3,128,7,128,7,0,14,0, + 30,0,28,8,56,8,120,8,112,24,255,240,8,28,28,16, + 4,251,15,28,56,56,56,56,56,56,56,56,56,56,56,48, + 224,48,56,56,56,56,56,56,56,56,56,24,28,15,2,23, + 23,7,2,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,8,28,28,16,4, + 251,240,56,28,28,28,28,28,28,28,28,28,28,28,12,7, + 12,28,28,28,28,28,28,28,28,28,24,56,240,16,4,8, + 18,1,7,62,3,127,135,225,254,192,124,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,8, + 0,1,4,22,22,11,3,249,96,240,240,96,0,0,96,96, + 96,96,96,96,96,96,96,96,96,240,240,240,240,96,12,23, + 46,17,2,252,0,64,0,64,0,128,0,128,15,128,56,224, + 113,112,97,112,225,48,195,0,194,0,194,0,230,0,228,0, + 116,16,124,48,63,224,31,192,31,0,16,0,48,0,32,0, + 32,0,15,23,46,17,1,0,1,240,3,152,6,28,6,28, + 14,24,14,0,14,0,14,0,14,0,14,0,255,224,255,224, + 15,0,7,0,7,0,7,0,7,0,6,0,6,2,126,6, + 199,252,207,248,120,240,16,17,34,17,0,3,199,227,255,255, + 62,124,120,30,112,14,224,7,224,7,192,3,192,3,192,3, + 224,7,224,7,112,14,120,30,62,124,255,255,199,227,17,23, + 69,17,0,0,254,31,128,120,7,0,56,6,0,60,4,0, + 28,12,0,30,8,0,14,24,0,15,16,0,7,48,0,7, + 160,0,3,224,0,3,192,0,63,254,0,1,192,0,1,192, + 0,1,192,0,63,254,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,7,240,0,2,23,23,7,2,0,192, + 192,192,192,192,192,192,192,192,0,0,0,0,0,192,192,192, + 192,192,192,192,192,192,12,28,56,17,2,251,31,128,49,192, + 97,192,97,192,113,128,56,0,60,0,30,0,15,0,63,128, + 99,192,193,224,192,224,192,112,224,48,112,48,120,48,60,96, + 31,192,15,0,7,128,3,192,1,192,24,224,56,96,56,96, + 56,192,31,128,9,3,6,11,1,18,227,128,227,128,227,128, + 22,23,69,25,1,0,0,252,0,3,255,0,14,1,192,24, + 0,96,48,0,48,96,0,24,96,127,24,193,199,12,195,131, + 12,195,1,12,199,0,12,199,0,12,199,0,12,199,0,12, + 199,128,12,67,129,24,97,230,24,96,124,48,48,0,48,24, + 0,96,14,1,192,7,255,0,1,252,0,9,13,26,9,0, + 10,60,0,78,0,198,0,198,0,30,0,102,0,198,0,198, + 0,239,128,123,0,0,0,0,0,255,0,13,13,26,17,1, + 1,2,8,6,24,12,48,24,96,56,224,113,192,227,128,113, + 192,56,224,24,96,12,48,6,24,2,8,16,9,18,18,1, + 4,255,255,255,255,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,8,2,2,11,1,7,255,255,22,23,69,25,1, + 0,0,254,0,3,255,0,14,1,192,24,0,96,48,0,48, + 35,252,24,96,199,24,192,195,12,192,195,12,192,195,12,192, + 198,12,192,248,12,192,220,12,192,204,12,192,206,12,64,198, + 8,96,199,24,35,227,208,48,0,48,24,0,96,14,1,192, + 3,255,0,0,252,0,10,2,4,11,0,18,255,192,255,192, + 10,10,20,13,1,13,30,0,63,0,97,128,192,192,192,192, + 192,192,192,192,97,128,63,0,30,0,16,20,40,19,1,0, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,255,255, + 255,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,0,0,255,255,255,255,9,14,28,10,0,9,60,0, + 78,0,135,0,3,0,3,0,7,0,6,0,12,0,24,0, + 16,0,32,0,64,128,255,0,254,0,9,14,28,10,0,9, + 62,0,71,0,131,0,3,0,3,0,6,0,60,0,7,0, + 3,128,1,128,1,128,193,128,227,0,126,0,7,6,6,11, + 3,17,6,14,28,48,96,192,16,22,44,17,0,249,248,124, + 56,28,56,28,56,28,56,28,56,28,56,28,56,28,56,28, + 56,28,56,28,56,60,60,124,63,223,47,152,32,0,112,0, + 112,0,112,0,112,0,112,0,32,0,13,29,58,15,1,250, + 7,248,30,32,62,32,126,32,126,32,254,32,254,32,254,32, + 254,32,126,32,126,32,62,32,30,32,14,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,4,4,4,8,2,7, + 96,240,240,96,6,7,7,11,2,249,32,96,120,28,12,28, + 248,6,14,14,10,2,9,48,240,48,48,48,48,48,48,48, + 48,48,48,48,252,9,13,26,10,0,10,62,0,99,0,195, + 128,193,128,193,128,193,128,193,128,225,128,99,0,62,0,0, + 0,0,0,255,128,13,13,26,16,2,1,130,0,195,0,97, + 128,48,192,56,224,28,112,14,56,28,112,56,224,48,192,97, + 128,195,0,130,0,22,23,69,25,2,0,48,0,96,240,0, + 96,48,0,192,48,1,192,48,1,128,48,3,0,48,3,0, + 48,6,0,48,14,0,48,12,16,48,24,48,48,24,112,48, + 48,112,252,96,240,0,97,176,0,193,48,1,194,48,1,134, + 48,3,12,48,3,31,252,6,0,48,12,0,48,12,0,48, + 23,23,69,25,1,0,48,0,192,240,0,192,48,1,128,48, + 3,128,48,3,0,48,6,0,48,6,0,48,12,0,48,28, + 0,48,24,240,48,49,56,48,50,28,48,96,12,252,224,12, + 0,192,28,1,128,24,3,128,48,3,0,96,6,0,64,6, + 0,128,12,1,2,24,3,252,24,3,248,24,23,69,25,0, + 0,62,0,24,71,0,24,131,0,48,3,0,112,3,0,96, + 6,0,192,60,0,192,7,1,128,3,131,128,1,131,4,1, + 134,12,193,134,28,227,12,28,126,24,60,0,24,108,0,48, + 76,0,112,140,0,97,140,0,195,12,0,199,255,1,128,12, + 3,0,12,3,0,12,11,22,44,14,1,249,6,0,15,0, + 15,0,6,0,0,0,2,0,2,0,6,0,4,0,12,0, + 24,0,56,0,48,0,112,0,112,0,224,192,224,224,224,224, + 112,96,112,96,57,192,31,0,22,30,90,24,1,0,6,0, + 0,7,0,0,3,128,0,0,192,0,0,96,0,0,48,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,30,90,24,1,0,0,1, + 128,0,3,128,0,7,0,0,12,0,0,24,0,0,48,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,30,90,24,1,0,0,48, + 0,0,120,0,0,252,0,1,206,0,3,3,0,2,1,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,28,84,24,1,0,0,224, + 128,1,249,128,3,63,0,2,14,0,0,0,0,0,48,0, + 0,48,0,0,112,0,0,120,0,0,120,0,0,252,0,0, + 220,0,0,156,0,1,142,0,1,14,0,3,15,0,3,7, + 0,2,7,0,6,7,128,6,3,128,15,255,192,12,3,192, + 24,1,192,24,1,224,48,1,224,48,0,240,112,0,240,252, + 3,252,22,28,84,24,1,0,1,199,0,1,199,0,1,199, + 0,0,0,0,0,0,0,0,48,0,0,48,0,0,112,0, + 0,120,0,0,120,0,0,252,0,0,220,0,0,156,0,1, + 142,0,1,14,0,3,15,0,3,7,0,2,7,0,6,7, + 128,6,3,128,15,255,192,12,3,192,24,1,192,24,1,224, + 48,1,224,48,0,240,112,0,240,252,3,252,22,30,90,24, + 1,0,0,112,0,0,248,0,1,140,0,1,4,0,1,140, + 0,0,248,0,0,112,0,0,0,0,0,48,0,0,48,0, + 0,120,0,0,120,0,0,252,0,0,220,0,0,156,0,1, + 142,0,1,14,0,3,15,0,3,7,0,2,7,0,6,7, + 128,6,3,128,15,255,192,12,3,192,24,1,192,24,1,224, + 48,1,224,48,0,240,112,0,240,252,3,252,28,23,92,30, + 1,0,0,255,255,224,0,31,129,224,0,31,0,96,0,55, + 0,32,0,55,0,32,0,103,0,0,0,103,0,0,0,71, + 0,128,0,199,0,128,0,199,1,128,1,135,3,128,1,135, + 255,128,3,7,3,128,3,7,1,128,7,255,0,128,6,7, + 0,128,12,7,0,0,12,7,0,16,24,7,0,16,24,7, + 0,48,48,7,0,96,48,15,129,224,254,63,255,224,20,30, + 90,22,1,249,1,255,16,7,131,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,16,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,56,0,0,56,0,16,28,0,48, + 14,0,96,7,131,192,1,255,0,0,64,0,0,192,0,0, + 240,0,0,56,0,0,24,0,0,56,0,1,240,0,19,30, + 90,20,1,0,3,0,0,3,128,0,1,192,0,0,96,0, + 0,48,0,0,24,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,30, + 90,20,1,0,0,6,0,0,14,0,0,28,0,0,48,0, + 0,96,0,0,192,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,30, + 90,20,1,0,0,48,0,0,120,0,0,252,0,1,206,0, + 3,3,0,2,1,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,28, + 84,20,1,0,3,142,0,3,142,0,3,142,0,0,0,0, + 0,0,0,255,255,192,62,3,192,28,0,192,28,0,64,28, + 0,64,28,0,0,28,0,0,28,0,0,28,1,0,28,1, + 0,28,3,0,31,255,0,28,3,0,28,1,0,28,1,0, + 28,0,0,28,0,0,28,0,32,28,0,32,28,0,96,28, + 0,192,62,3,192,255,255,192,9,30,60,11,1,0,96,0, + 112,0,56,0,12,0,6,0,3,0,0,0,255,128,62,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,62,0,255,128,9,30,60,11,1,0, + 1,128,3,128,7,0,12,0,24,0,48,0,0,0,255,128, + 62,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,10,30,60,11, + 1,0,12,0,30,0,63,0,115,128,192,192,128,64,0,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,9,28, + 56,11,1,0,227,128,227,128,227,128,0,0,0,0,255,128, + 62,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,22,23,69,24, + 1,0,255,254,0,62,7,128,28,1,192,28,0,224,28,0, + 112,28,0,112,28,0,56,28,0,56,28,0,60,28,0,60, + 28,0,60,255,192,60,255,192,60,28,0,60,28,0,60,28, + 0,56,28,0,56,28,0,112,28,0,112,28,0,224,28,1, + 192,62,7,128,255,254,0,22,29,87,24,1,0,0,224,128, + 1,249,128,3,63,0,2,14,0,0,0,0,0,0,0,248, + 1,252,60,0,112,30,0,32,31,0,32,31,0,32,23,128, + 32,19,192,32,19,192,32,17,224,32,16,240,32,16,248,32, + 16,120,32,16,60,32,16,30,32,16,31,32,16,15,32,16, + 7,160,16,3,224,16,1,224,16,1,224,16,0,224,56,0, + 96,254,0,32,22,30,90,24,1,0,3,0,0,3,128,0, + 1,192,0,0,96,0,0,48,0,0,24,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,30,90,24,1,0,0,1,128,0,3,128, + 0,7,0,0,12,0,0,24,0,0,48,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,30,90,24,1,0,0,48,0,0,120,0, + 0,252,0,1,206,0,3,3,0,2,1,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,28,84,24,1,0,0,224,128,1,249,128, + 3,63,0,2,14,0,0,0,0,1,254,0,7,135,128,14, + 1,192,28,0,224,56,0,112,56,0,112,112,0,56,112,0, + 56,240,0,60,240,0,60,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,112,0,56,112,0,56,56,0,112,56, + 0,112,28,0,224,14,1,192,7,135,128,1,254,0,22,28, + 84,24,1,0,1,199,0,1,199,0,1,199,0,0,0,0, + 0,0,0,1,254,0,7,135,128,14,1,192,28,0,224,56, + 0,112,56,0,112,112,0,56,112,0,56,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,60,240,0,60, + 112,0,56,112,0,56,56,0,112,56,0,112,28,0,224,14, + 1,192,7,135,128,1,254,0,16,16,32,19,1,0,64,2, + 224,7,112,14,56,28,28,56,14,112,7,224,3,192,3,192, + 7,224,14,112,28,56,56,28,112,14,224,7,64,2,22,27, + 81,24,1,254,0,0,16,0,0,48,1,254,96,7,135,192, + 14,1,192,28,1,224,56,3,112,56,2,112,112,6,56,112, + 12,56,240,8,60,240,24,60,240,48,60,240,96,60,240,64, + 60,240,192,60,240,128,60,113,128,56,115,0,56,58,0,112, + 62,0,112,28,0,224,30,1,192,55,135,128,33,254,0,96, + 0,0,64,0,0,22,30,90,24,1,0,0,192,0,0,224, + 0,0,112,0,0,24,0,0,12,0,0,6,0,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,30,90,24,1,0,0,1,128,0,3, + 128,0,7,0,0,12,0,0,24,0,0,48,0,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,30,90,24,1,0,0,24,0,0,60, + 0,0,126,0,0,231,0,1,129,128,1,0,128,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,28,84,24,1,0,1,199,0,1,199, + 0,1,199,0,0,0,0,0,0,0,255,129,252,62,0,112, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,96, + 30,0,96,14,0,64,15,0,192,7,195,128,1,254,0,22, + 30,90,24,1,0,0,0,192,0,1,192,0,3,128,0,6, + 0,0,12,0,0,24,0,0,0,0,255,192,252,63,0,56, + 30,0,48,15,0,96,15,128,192,7,128,128,3,193,128,3, + 195,0,1,227,0,0,246,0,0,252,0,0,124,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,124,0,1,255,0,18, + 23,69,19,1,0,255,128,0,62,0,0,28,0,0,28,0, + 0,28,0,0,31,252,0,28,31,0,28,7,128,28,3,128, + 28,3,192,28,1,192,28,1,192,28,1,192,28,3,192,28, + 3,128,28,7,128,28,31,0,31,252,0,28,0,0,28,0, + 0,28,0,0,62,0,0,255,128,0,15,23,46,17,1,0, + 7,192,12,112,24,56,24,56,56,56,56,56,56,56,56,56, + 56,48,56,96,57,192,56,120,56,28,56,30,56,14,56,14, + 56,14,56,14,56,14,59,12,59,156,59,152,249,240,13,23, + 46,15,1,0,24,0,28,0,14,0,3,0,1,128,0,192, + 0,0,0,0,31,128,49,192,112,224,112,224,96,224,3,224, + 14,224,24,224,48,224,96,224,224,224,225,224,242,232,126,248, + 60,112,13,23,46,15,1,0,0,192,1,192,3,128,6,0, + 12,0,24,0,0,0,0,0,31,128,49,192,112,224,112,224, + 96,224,3,224,14,224,24,224,48,224,96,224,224,224,225,224, + 242,232,126,248,60,112,13,23,46,15,1,0,6,0,15,0, + 31,128,57,192,96,96,64,32,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,21,42,15,1,0, + 28,16,62,48,99,224,65,192,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,21,42,15,1,0, + 56,224,56,224,56,224,0,0,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,23,46,15,1,0, + 7,0,15,128,24,192,16,64,24,192,15,128,7,0,0,0, + 31,128,49,192,112,224,112,224,96,224,3,224,14,224,24,224, + 48,224,96,224,224,224,225,224,242,232,126,248,60,112,19,15, + 45,22,1,0,31,159,0,49,249,192,112,224,192,112,224,224, + 96,224,224,3,255,224,14,224,0,24,224,0,48,224,0,96, + 224,0,224,224,32,225,240,96,243,120,192,126,63,128,60,31, + 0,12,22,44,15,1,249,15,128,56,192,112,224,96,224,224, + 96,192,0,192,0,192,0,192,0,224,0,224,16,112,48,124, + 96,63,192,15,0,4,0,12,0,15,0,3,128,1,128,3, + 128,31,0,12,23,46,15,1,0,48,0,56,0,28,0,6, + 0,3,0,1,128,0,0,0,0,15,128,57,192,96,224,96, + 112,192,112,255,240,192,0,192,0,192,0,224,0,224,16,112, + 48,124,96,63,192,15,0,12,23,46,15,1,0,1,128,3, + 128,7,0,12,0,24,0,48,0,0,0,0,0,15,128,57, + 192,96,224,96,112,192,112,255,240,192,0,192,0,192,0,224, + 0,224,16,112,48,124,96,63,192,15,0,12,23,46,15,1, + 0,6,0,15,0,31,128,57,192,96,96,64,32,0,0,0, + 0,15,128,57,192,96,224,96,112,192,112,255,240,192,0,192, + 0,192,0,224,0,224,16,112,48,124,96,63,192,15,0,12, + 21,42,15,1,0,56,224,56,224,56,224,0,0,0,0,0, + 0,15,128,57,192,96,224,96,112,192,112,255,240,192,0,192, + 0,192,0,224,0,224,16,112,48,124,96,63,192,15,0,7, + 23,23,9,1,0,192,224,112,24,12,6,0,0,24,248,56, + 56,56,56,56,56,56,56,56,56,56,56,254,7,23,23,9, + 1,0,6,14,28,48,96,192,0,0,24,248,56,56,56,56, + 56,56,56,56,56,56,56,56,254,10,23,46,9,0,0,12, + 0,30,0,63,0,115,128,192,192,128,64,0,0,0,0,12, + 0,124,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,127,0,9,21,42, + 9,0,0,227,128,227,128,227,128,0,0,0,0,0,0,12, + 0,124,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,127,0,14,23,46, + 17,1,0,16,0,56,0,28,112,15,240,15,0,127,128,49, + 192,0,224,7,240,24,240,48,120,112,56,96,60,224,28,224, + 28,224,28,224,28,224,28,112,24,112,56,56,48,28,96,7, + 128,16,21,42,16,0,0,14,8,31,24,49,240,32,224,0, + 0,0,0,24,240,251,248,62,60,60,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,254, + 127,14,23,46,16,1,0,24,0,28,0,14,0,3,0,1, + 128,0,192,0,0,0,0,7,128,24,224,48,112,112,56,96, + 56,224,28,224,28,224,28,224,28,224,28,112,24,112,56,56, + 48,28,96,7,128,14,23,46,16,1,0,0,192,1,192,3, + 128,6,0,12,0,24,0,0,0,0,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,112, + 24,112,56,56,48,28,96,7,128,14,23,46,16,1,0,3, + 0,7,128,15,192,28,224,48,48,32,16,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,14,21,42, + 16,1,0,28,16,62,48,99,224,65,192,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,14,21,42, + 16,1,0,56,224,56,224,56,224,0,0,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,16,17,34, + 19,1,0,1,128,3,192,3,192,1,128,0,0,0,0,0, + 0,255,255,255,255,0,0,0,0,0,0,0,0,1,128,3, + 192,3,192,1,128,14,21,42,17,1,253,0,24,0,16,0, + 48,7,160,24,224,48,240,112,184,97,184,225,28,225,28,227, + 28,226,28,230,28,116,24,116,56,60,48,28,96,31,128,48, + 0,32,0,96,0,16,23,46,17,0,0,12,0,14,0,7, + 0,1,128,0,192,0,96,0,0,0,0,248,124,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,60,60,124,31,223,15,152,16,23,46,17,0,0,0, + 96,0,224,1,192,3,0,6,0,12,0,0,0,0,0,248, + 124,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,60,60,124,31,223,15,152,16,23,46, + 17,0,0,1,128,3,192,7,224,14,112,24,24,16,8,0, + 0,0,0,248,124,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,60,60,124,31,223,15, + 152,16,21,42,17,0,0,28,112,28,112,28,112,0,0,0, + 0,0,0,248,124,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,60,60,124,31,223,15, + 152,15,30,60,17,0,249,0,24,0,56,0,112,0,192,1, + 128,3,0,0,0,0,0,254,30,120,12,56,12,60,8,28, + 24,30,24,14,16,14,48,7,32,7,32,3,224,3,192,1, + 192,1,128,1,128,1,128,1,0,3,0,2,0,62,0,124, + 0,56,0,15,30,60,17,0,249,24,0,248,0,56,0,56, + 0,56,0,56,0,56,0,56,0,57,240,59,248,62,124,60, + 28,56,30,56,14,56,14,56,14,56,14,56,14,56,12,56, + 28,60,24,62,48,59,224,56,0,56,0,56,0,56,0,56, + 0,56,0,255,0,15,28,56,17,1,249,28,112,28,112,28, + 112,0,0,0,0,0,0,254,30,120,12,56,12,60,8,28, + 24,30,24,14,16,14,48,7,32,7,32,3,224,3,192,1, + 192,1,128,1,128,1,0,1,0,3,0,2,0,62,0,124, + 0,56,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=16 h=26 x= 4 y=10 dx=19 dy= 0 ascent=23 len=52 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =23 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24n[696] U8G_SECTION(".progmem.u8g_font_timR24n") = { + 0,38,48,251,245,23,0,0,0,0,42,57,0,23,253,23, + 0,12,13,26,17,2,10,6,0,15,0,6,0,198,48,246, + 240,118,224,15,0,118,224,246,240,198,48,6,0,15,0,6, + 0,16,16,32,19,1,1,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,4,7,7,8,2,253,96,240,240, + 112,16,32,64,8,2,2,11,1,7,255,255,4,4,4,8, + 2,0,96,240,240,96,10,26,52,9,0,253,0,192,0,192, + 1,128,1,128,3,128,3,0,3,0,3,0,6,0,6,0, + 6,0,14,0,12,0,12,0,28,0,24,0,24,0,24,0, + 48,0,48,0,48,0,112,0,96,0,96,0,192,0,192,0, + 14,23,46,16,1,0,7,128,28,224,56,112,48,48,112,56, + 112,56,96,24,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,24,112,56,112,56,48,48,56,112, + 28,224,7,128,9,23,46,16,4,0,12,0,28,0,124,0, + 220,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,15,23,46,16,0,0,7,224, + 15,240,28,248,48,60,32,60,96,28,64,28,0,28,0,28, + 0,24,0,56,0,48,0,96,0,96,0,192,1,128,3,0, + 6,0,12,2,24,6,63,252,127,248,255,248,12,23,46,16, + 2,0,15,128,63,192,97,224,192,224,128,224,0,224,0,192, + 0,192,1,128,3,0,7,192,31,224,1,240,0,112,0,112, + 0,48,0,48,0,48,0,112,0,96,224,192,243,128,127,0, + 14,23,46,16,1,0,0,96,0,224,0,224,1,224,1,96, + 3,96,6,96,4,96,12,96,24,96,16,96,48,96,96,96, + 64,96,255,252,255,252,255,252,0,96,0,96,0,96,0,96, + 0,96,0,96,13,23,46,16,1,0,15,248,31,240,31,224, + 16,0,48,0,32,0,126,0,127,128,127,192,7,224,1,224, + 0,240,0,112,0,112,0,48,0,48,0,48,0,48,0,96, + 0,96,224,192,243,128,126,0,14,23,46,16,1,0,0,120, + 1,192,3,128,15,0,30,0,28,0,56,0,120,0,112,0, + 115,192,247,240,248,120,224,56,224,60,224,28,224,28,224,28, + 224,28,112,28,112,24,56,56,28,96,7,192,14,23,46,16, + 1,0,63,252,127,252,96,24,192,24,128,56,0,48,0,48, + 0,48,0,96,0,96,0,96,0,224,0,192,0,192,1,192, + 1,128,1,128,1,128,3,0,3,0,3,0,7,0,6,0, + 13,23,46,16,2,0,31,128,56,224,112,112,224,48,224,48, + 224,48,224,112,240,96,124,192,63,0,31,128,15,192,27,224, + 113,240,96,240,224,120,192,120,192,56,192,56,224,56,96,112, + 112,224,31,192,14,23,46,16,1,0,7,128,24,224,48,112, + 112,56,96,56,224,28,224,28,224,28,224,28,224,28,240,28, + 112,28,120,60,62,252,15,184,0,56,0,112,0,112,0,224, + 1,192,3,128,15,0,120,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=31 h=30 x= 4 y=17 dx=32 dy= 0 ascent=25 len=112 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24r[4764] U8G_SECTION(".progmem.u8g_font_timR24r") = { + 0,38,48,251,245,23,5,140,13,213,32,127,249,25,249,23, + 249,0,0,0,8,0,1,4,23,23,11,3,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,96,0,0, + 96,240,240,96,9,7,14,14,2,16,227,128,227,128,227,128, + 227,128,65,0,65,0,65,0,16,23,46,17,0,0,6,24, + 6,24,6,24,6,24,6,24,6,24,6,24,6,24,127,255, + 127,255,12,48,12,48,12,48,12,48,255,254,255,254,24,96, + 24,96,24,96,24,96,24,96,24,96,24,96,13,28,56,16, + 2,253,2,0,2,0,15,192,58,112,50,56,98,24,98,8, + 98,8,114,0,122,0,62,0,63,0,31,128,7,192,3,224, + 2,240,2,112,2,56,2,56,130,24,130,24,194,56,226,48, + 114,96,31,192,2,0,2,0,2,0,23,23,69,27,2,0, + 15,0,64,29,131,192,56,252,128,112,65,128,112,67,0,224, + 66,0,224,70,0,224,196,0,192,140,0,193,136,0,193,24, + 120,102,16,236,60,49,198,0,99,130,0,67,130,0,199,2, + 0,135,2,1,135,6,1,6,4,3,6,12,2,6,8,6, + 3,48,4,1,224,23,23,69,26,2,0,0,248,0,1,140, + 0,3,14,0,3,6,0,7,6,0,7,6,0,7,12,0, + 7,140,0,3,152,0,3,241,252,3,192,112,7,192,96,29, + 224,64,56,240,192,112,112,128,96,121,128,224,63,0,224,30, + 0,224,15,0,240,31,130,120,51,252,127,225,248,31,128,240, + 3,8,8,6,1,15,224,224,224,224,64,64,64,64,8,28, + 28,11,2,251,3,6,12,24,56,48,112,112,96,224,224,224, + 224,224,224,224,224,224,224,96,112,112,48,56,24,12,6,3, + 8,28,28,11,1,251,192,96,48,24,28,12,14,14,6,7, + 7,7,7,7,7,7,7,7,7,6,14,14,12,28,24,48, + 96,192,12,13,26,17,2,10,6,0,15,0,6,0,198,48, + 246,240,118,224,15,0,118,224,246,240,198,48,6,0,15,0, + 6,0,16,16,32,19,1,1,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,255,255,255,255,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,4,7,7,8,2,253,96,240, + 240,112,16,32,64,8,2,2,11,1,7,255,255,4,4,4, + 8,2,0,96,240,240,96,10,26,52,9,0,253,0,192,0, + 192,1,128,1,128,3,128,3,0,3,0,3,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,24, + 0,48,0,48,0,48,0,112,0,96,0,96,0,192,0,192, + 0,14,23,46,16,1,0,7,128,28,224,56,112,48,48,112, + 56,112,56,96,24,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,24,112,56,112,56,48,48,56, + 112,28,224,7,128,9,23,46,16,4,0,12,0,28,0,124, + 0,220,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,128,15,23,46,16,0,0,7, + 224,15,240,28,248,48,60,32,60,96,28,64,28,0,28,0, + 28,0,24,0,56,0,48,0,96,0,96,0,192,1,128,3, + 0,6,0,12,2,24,6,63,252,127,248,255,248,12,23,46, + 16,2,0,15,128,63,192,97,224,192,224,128,224,0,224,0, + 192,0,192,1,128,3,0,7,192,31,224,1,240,0,112,0, + 112,0,48,0,48,0,48,0,112,0,96,224,192,243,128,127, + 0,14,23,46,16,1,0,0,96,0,224,0,224,1,224,1, + 96,3,96,6,96,4,96,12,96,24,96,16,96,48,96,96, + 96,64,96,255,252,255,252,255,252,0,96,0,96,0,96,0, + 96,0,96,0,96,13,23,46,16,1,0,15,248,31,240,31, + 224,16,0,48,0,32,0,126,0,127,128,127,192,7,224,1, + 224,0,240,0,112,0,112,0,48,0,48,0,48,0,48,0, + 96,0,96,224,192,243,128,126,0,14,23,46,16,1,0,0, + 120,1,192,3,128,15,0,30,0,28,0,56,0,120,0,112, + 0,115,192,247,240,248,120,224,56,224,60,224,28,224,28,224, + 28,224,28,112,28,112,24,56,56,28,96,7,192,14,23,46, + 16,1,0,63,252,127,252,96,24,192,24,128,56,0,48,0, + 48,0,48,0,96,0,96,0,96,0,224,0,192,0,192,1, + 192,1,128,1,128,1,128,3,0,3,0,3,0,7,0,6, + 0,13,23,46,16,2,0,31,128,56,224,112,112,224,48,224, + 48,224,48,224,112,240,96,124,192,63,0,31,128,15,192,27, + 224,113,240,96,240,224,120,192,120,192,56,192,56,224,56,96, + 112,112,224,31,192,14,23,46,16,1,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,240, + 28,112,28,120,60,62,252,15,184,0,56,0,112,0,112,0, + 224,1,192,3,128,15,0,120,0,4,15,15,9,2,0,96, + 240,240,96,0,0,0,0,0,0,0,96,240,240,96,4,18, + 18,9,2,253,96,240,240,96,0,0,0,0,0,0,0,96, + 240,240,112,16,32,64,16,18,36,19,1,0,0,1,0,7, + 0,31,0,124,1,240,7,192,31,0,124,0,240,0,240,0, + 124,0,31,0,7,192,1,240,0,124,0,31,0,7,0,1, + 16,9,18,19,1,4,255,255,255,255,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,16,18,36,19,2,0,128,0, + 224,0,248,0,62,0,15,128,3,224,0,248,0,62,0,15, + 0,15,0,62,0,248,3,224,15,128,62,0,248,0,224,0, + 128,0,11,23,46,14,2,0,31,0,115,128,193,192,193,192, + 224,224,224,224,96,224,1,192,1,192,1,128,3,128,3,0, + 6,0,4,0,12,0,8,0,8,0,0,0,0,0,12,0, + 30,0,30,0,12,0,27,28,112,31,2,251,0,31,240,0, + 0,248,60,0,1,224,6,0,7,128,3,0,14,0,1,128, + 28,0,0,192,28,0,0,192,56,7,140,96,112,31,92,96, + 112,28,124,32,112,56,56,32,224,112,56,32,224,112,48,32, + 224,112,112,32,224,224,112,96,224,224,112,64,224,224,224,192, + 224,224,224,128,112,225,225,128,112,119,115,0,112,60,62,0, + 56,0,0,0,24,0,0,0,28,0,0,0,14,0,0,0, + 7,128,6,0,1,240,60,0,0,127,240,0,22,23,69,24, + 1,0,0,48,0,0,48,0,0,112,0,0,120,0,0,120, + 0,0,252,0,0,220,0,0,156,0,1,142,0,1,14,0, + 3,15,0,3,7,0,2,7,0,6,7,128,6,3,128,15, + 255,192,12,3,192,24,1,192,24,1,224,48,1,224,48,0, + 240,112,0,240,252,3,252,20,23,69,22,1,0,255,254,0, + 62,15,128,28,3,192,28,1,192,28,1,224,28,0,224,28, + 0,224,28,1,224,28,1,192,28,3,192,28,15,128,31,254, + 0,28,7,128,28,1,224,28,0,224,28,0,240,28,0,112, + 28,0,112,28,0,240,28,0,224,28,1,224,62,7,192,255, + 255,0,20,23,69,22,1,0,1,255,16,7,131,240,14,0, + 240,28,0,112,56,0,48,56,0,48,112,0,16,112,0,16, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,112,0,0,112,0,0,56,0,0,56,0, + 16,28,0,48,14,0,96,7,131,192,1,255,0,22,23,69, + 24,1,0,255,254,0,62,7,128,28,1,192,28,0,224,28, + 0,112,28,0,112,28,0,56,28,0,56,28,0,60,28,0, + 60,28,0,60,28,0,60,28,0,60,28,0,60,28,0,60, + 28,0,56,28,0,56,28,0,112,28,0,112,28,0,224,28, + 1,192,62,7,128,255,254,0,19,23,69,20,1,0,255,255, + 192,62,3,192,28,0,192,28,0,64,28,0,64,28,0,0, + 28,0,0,28,0,0,28,1,0,28,1,0,28,3,0,31, + 255,0,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,32,28,0,32,28,0,96,28,0,192,62,3,192, + 255,255,192,17,23,69,18,1,0,255,255,128,62,7,128,28, + 1,128,28,0,128,28,0,128,28,0,0,28,0,0,28,0, + 0,28,2,0,28,2,0,28,6,0,31,254,0,28,6,0, + 28,2,0,28,2,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,62,0,0,255,128,0,22,23, + 69,24,1,0,1,255,48,7,135,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,0,240,0,0,240, + 0,0,240,0,0,240,3,252,240,0,248,240,0,112,240,0, + 112,112,0,112,112,0,112,56,0,112,56,0,112,28,0,112, + 14,0,112,7,129,224,1,255,128,22,23,69,24,1,0,255, + 135,252,62,1,240,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 31,255,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,62,1, + 240,255,135,252,9,23,46,11,1,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,12,23,46,13,1,0,31,240, + 7,192,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,195,128,227,0,231,0,124,0,23,23,69,24, + 1,0,255,199,248,62,1,224,28,1,128,28,3,0,28,6, + 0,28,12,0,28,24,0,28,48,0,28,96,0,28,192,0, + 31,192,0,31,224,0,31,240,0,30,120,0,28,60,0,28, + 30,0,28,15,0,28,7,128,28,3,192,28,1,224,28,0, + 240,62,0,248,255,199,254,19,23,69,20,1,0,255,128,0, + 62,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,32,28,0,32,28,0,96,28,0,192,62,3,192,255, + 255,192,28,23,92,30,1,0,252,0,7,240,62,0,7,192, + 30,0,15,128,31,0,15,128,31,0,11,128,23,0,27,128, + 23,128,27,128,19,128,51,128,19,192,51,128,19,192,35,128, + 17,224,99,128,17,224,99,128,16,224,195,128,16,240,195,128, + 16,112,131,128,16,121,131,128,16,121,3,128,16,61,3,128, + 16,63,3,128,16,30,3,128,16,30,3,128,56,12,7,192, + 254,12,31,240,22,23,69,24,1,0,248,1,252,60,0,112, + 30,0,32,31,0,32,31,0,32,23,128,32,19,192,32,19, + 192,32,17,224,32,16,240,32,16,248,32,16,120,32,16,60, + 32,16,30,32,16,31,32,16,15,32,16,7,160,16,3,224, + 16,1,224,16,1,224,16,0,224,56,0,96,254,0,32,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,56,0,112,56,0,112,112,0,56,112,0,56,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,112,0,56,112,0,56,56,0,112,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,248,0,60,62,0,28,15,0,28,7,0,28,7,128,28, + 3,128,28,3,128,28,3,128,28,7,128,28,7,0,28,15, + 0,28,62,0,31,240,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,22,29,87,24,1,250,1,254,0,7,135, + 128,14,1,192,28,0,224,56,0,112,56,0,112,112,0,56, + 112,0,56,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,112,0,56,112,0,56,56,0, + 112,56,0,112,28,0,224,14,1,192,7,135,128,1,254,0, + 0,124,0,0,62,0,0,31,0,0,15,128,0,3,224,0, + 0,124,21,23,69,22,1,0,255,248,0,60,62,0,28,15, + 0,28,7,128,28,7,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,0,28,30,0,31,248,0,28,240,0,28, + 120,0,28,60,0,28,60,0,28,30,0,28,15,0,28,15, + 128,28,7,128,28,3,192,62,1,224,255,129,248,15,23,46, + 18,1,0,7,228,28,60,56,28,112,12,112,4,112,6,120, + 0,124,0,62,0,31,128,15,224,7,240,1,248,0,124,0, + 62,0,30,128,14,128,14,192,14,224,12,112,28,124,120,103, + 240,19,23,69,20,1,0,255,255,224,240,225,224,192,224,96, + 192,224,96,128,224,32,128,224,32,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,1,240,0,7,252,0,22,23,69,24, + 1,0,255,129,252,62,0,112,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,30,0,96,14,0,64,15,0, + 192,7,195,128,1,254,0,22,23,69,23,1,0,255,1,252, + 124,0,112,60,0,96,30,0,64,30,0,192,14,0,192,15, + 0,128,15,1,128,7,1,128,7,129,0,3,131,0,3,195, + 0,3,194,0,1,198,0,1,230,0,0,228,0,0,236,0, + 0,124,0,0,120,0,0,120,0,0,56,0,0,48,0,0, + 16,0,31,23,92,32,1,0,255,63,224,254,124,15,128,120, + 60,7,0,48,28,7,128,48,30,7,128,96,30,3,128,96, + 14,3,192,96,15,3,192,192,7,3,224,192,7,135,224,192, + 7,134,225,128,3,132,241,128,3,204,241,128,3,204,115,0, + 1,216,123,0,1,216,59,0,1,248,62,0,0,240,62,0, + 0,240,28,0,0,224,28,0,0,96,28,0,0,96,8,0, + 0,64,8,0,22,23,69,24,1,0,255,195,252,63,0,240, + 31,0,224,15,0,192,7,129,128,7,131,0,3,198,0,1, + 230,0,1,236,0,0,248,0,0,120,0,0,120,0,0,124, + 0,0,222,0,1,158,0,1,143,0,3,15,128,6,7,128, + 14,3,192,12,3,224,24,1,224,56,1,240,254,7,252,22, + 23,69,24,1,0,255,192,252,63,0,56,30,0,48,15,0, + 96,15,128,192,7,128,128,3,193,128,3,195,0,1,227,0, + 0,246,0,0,252,0,0,124,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,124,0,1,255,0,19,23,69,20,1,0, + 63,255,224,56,3,192,96,7,128,96,7,128,64,15,0,64, + 30,0,0,30,0,0,60,0,0,120,0,0,120,0,0,240, + 0,1,224,0,1,224,0,3,192,0,3,192,0,7,128,0, + 15,0,0,15,0,32,30,0,32,60,0,96,60,0,96,120, + 1,192,255,255,192,7,28,28,11,3,251,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,240,254,13,23,46,9,254,0,192,0,224, + 0,96,0,112,0,48,0,56,0,24,0,28,0,12,0,14, + 0,6,0,7,0,3,0,3,128,1,128,1,192,0,192,0, + 224,0,96,0,112,0,48,0,56,0,24,7,28,28,11,1, + 251,254,30,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,30,254,13,13,26, + 16,1,10,7,0,7,0,15,128,13,128,24,192,24,192,48, + 96,48,96,112,112,96,48,224,56,192,24,192,24,17,2,6, + 17,0,251,255,255,128,255,255,128,7,6,6,11,1,17,192, + 224,112,24,12,6,13,15,30,15,1,0,31,128,49,192,112, + 224,112,224,96,224,3,224,14,224,24,224,48,224,96,224,224, + 224,225,224,242,232,126,248,60,112,15,23,46,16,0,0,24, + 0,248,0,56,0,56,0,56,0,56,0,56,0,56,0,57, + 240,59,248,60,124,56,28,56,30,56,14,56,14,56,14,56, + 14,56,14,56,12,56,28,56,24,60,112,15,224,12,15,30, + 15,1,0,15,128,56,192,112,224,96,224,224,96,192,0,192, + 0,192,0,192,0,224,0,224,16,112,48,124,96,63,192,31, + 0,15,23,46,16,1,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,15,184,24,248,48,120,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,190,15,48,12,15,30,15,1,0,15,128,57,192,96, + 224,96,112,192,112,255,240,192,0,192,0,192,0,224,0,224, + 16,112,48,124,96,63,192,15,0,12,23,46,11,0,0,3, + 224,6,112,12,112,12,48,28,0,28,0,28,0,28,0,255, + 192,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,62,0,255,128,14,22,44, + 16,1,249,15,192,24,252,48,124,112,48,112,48,112,48,112, + 48,56,112,28,224,15,128,24,0,48,0,120,0,127,224,63, + 248,31,252,96,12,192,12,192,28,240,56,127,224,31,128,16, + 23,46,16,0,0,24,0,248,0,56,0,56,0,56,0,56, + 0,56,0,56,0,57,240,59,248,62,60,60,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,254,127,7,23,23,9,1,0,56,56,56,0,0,0,0, + 0,56,248,56,56,56,56,56,56,56,56,56,56,56,56,254, + 8,30,30,9,255,249,7,7,7,0,0,0,0,0,3,31, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 6,198,236,120,16,23,46,16,0,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,254,56,112,56,96, + 56,192,57,128,63,0,62,0,63,0,59,128,57,192,56,224, + 56,240,56,120,56,60,254,127,7,23,23,9,1,0,24,248, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,25,15,60,26,0,0,24,240,120,0,251, + 249,252,0,62,63,30,0,60,30,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,254,127,63,128,16,15,30,16,0,0,24,240,251, + 248,60,60,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,254,127,14,15,30,16,1, + 0,7,128,24,224,48,112,112,56,96,56,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,56,48,28,96,7,128,15, + 22,44,17,0,249,25,224,251,248,60,124,56,28,56,30,56, + 14,56,14,56,14,56,14,56,14,56,12,56,28,60,24,62, + 112,59,192,56,0,56,0,56,0,56,0,56,0,56,0,255, + 0,15,22,44,17,1,249,15,200,28,120,48,56,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,184,31,56,0,56,0,56,0,56,0,56,0,56,0, + 56,1,254,10,15,30,11,1,0,25,128,251,192,63,192,60, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,10,15,30,13,1,0,62,128,99, + 128,193,128,192,128,224,128,240,0,124,0,63,0,15,128,3, + 192,129,192,128,192,192,192,225,128,191,0,9,19,38,9,0, + 0,8,0,8,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,128,63,0,28,0,16,15,30,17,0,0,248,124,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,60,60,92,31,223,15,140,15,15,30,17,1, + 0,254,62,120,12,56,8,60,24,28,24,28,16,14,48,14, + 32,7,96,7,64,7,192,3,192,3,128,1,128,1,0,21, + 15,45,24,1,0,253,252,120,112,112,48,112,112,48,56,48, + 32,56,56,96,24,56,64,28,120,64,28,92,192,12,204,128, + 14,143,128,15,143,0,7,7,0,7,7,0,3,6,0,2, + 2,0,14,15,30,17,1,0,252,248,56,96,60,192,28,128, + 30,128,15,0,7,0,7,128,15,128,11,192,25,224,16,224, + 48,112,96,120,240,252,15,22,44,17,1,249,254,30,120,12, + 56,12,60,8,28,24,30,24,14,16,14,48,7,32,7,32, + 3,224,3,192,1,192,1,128,1,128,1,0,1,0,3,0, + 2,0,62,0,124,0,56,0,13,15,30,15,1,0,127,240, + 96,240,64,224,65,224,3,192,3,128,7,128,7,0,14,0, + 30,0,28,8,56,8,120,8,112,24,255,240,8,28,28,16, + 4,251,15,28,56,56,56,56,56,56,56,56,56,56,56,48, + 224,48,56,56,56,56,56,56,56,56,56,24,28,15,2,23, + 23,7,2,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,8,28,28,16,4, + 251,240,56,28,28,28,28,28,28,28,28,28,28,28,12,7, + 12,28,28,28,28,28,28,28,28,28,24,56,240,16,4,8, + 18,1,7,62,3,127,135,225,254,192,124,255}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=11 h=13 x= 1 y=10 dx=12 dy= 0 ascent=13 len=18 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssb[2656] U8G_SECTION(".progmem.u8g_font_tpssb") = { + 0,11,17,0,252,9,1,205,3,159,32,255,252,13,252,9, + 252,0,0,0,4,0,0,2,9,9,4,1,0,192,192,192, + 192,192,192,0,192,192,5,2,2,7,1,7,216,216,5,5, + 5,7,1,0,80,248,80,248,80,7,9,9,9,1,0,124, + 146,144,124,18,18,146,146,124,8,9,9,10,1,0,198,204, + 12,24,24,24,48,51,99,9,9,18,11,1,0,124,0,198, + 0,198,0,124,0,198,0,198,0,198,0,199,128,62,0,2, + 2,2,4,1,7,192,192,5,9,9,7,1,0,24,48,96, + 96,224,96,96,48,24,5,9,9,7,1,0,192,96,48,48, + 56,48,48,96,192,5,7,7,7,1,1,32,168,112,32,112, + 168,32,6,6,6,8,1,1,48,48,252,252,48,48,3,2, + 2,5,1,255,96,192,5,2,2,7,1,3,248,248,2,1, + 1,4,1,0,192,6,9,9,8,1,0,12,24,24,48,48, + 48,96,96,192,6,9,9,7,0,0,120,204,204,204,204,204, + 204,204,120,6,9,9,7,0,0,48,112,240,48,48,48,48, + 48,252,6,9,9,7,0,0,120,204,204,12,24,48,96,192, + 252,6,9,9,7,0,0,120,204,12,56,12,12,12,204,120, + 6,9,9,7,0,0,12,204,204,252,12,12,12,12,12,6, + 9,9,7,0,0,252,192,192,248,12,12,12,204,120,6,9, + 9,7,0,0,120,204,192,248,204,204,204,204,120,6,9,9, + 7,0,0,252,12,24,48,96,96,96,96,96,6,9,9,7, + 0,0,120,204,204,120,204,204,204,204,120,6,9,9,7,0, + 0,120,204,204,204,124,12,12,204,120,2,4,4,4,1,0, + 192,0,0,192,3,5,5,5,1,255,96,0,0,96,192,6, + 9,9,8,1,0,12,24,48,96,192,96,48,24,12,6,5, + 5,8,1,1,252,252,0,252,252,6,9,9,8,1,0,192, + 96,48,24,12,24,48,96,192,6,9,9,8,1,0,120,204, + 12,24,48,48,0,48,48,10,8,16,12,1,0,63,0,64, + 128,204,192,210,192,210,128,205,0,64,64,63,128,6,9,9, + 7,0,0,120,204,204,252,204,204,204,204,204,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,248,6,9,9,7,0, + 0,120,204,192,192,192,192,192,204,120,6,9,9,7,0,0, + 248,204,204,204,204,204,204,204,248,6,9,9,7,0,0,252, + 192,192,248,192,192,192,192,252,6,9,9,7,0,0,252,192, + 192,248,192,192,192,192,192,6,9,9,7,0,0,120,204,192, + 220,204,204,204,204,120,6,9,9,7,0,0,204,204,204,252, + 204,204,204,204,204,2,9,9,3,0,0,192,192,192,192,192, + 192,192,192,192,6,9,9,7,0,0,12,12,12,12,12,12, + 12,204,120,6,9,9,7,0,0,204,204,216,240,224,240,216, + 204,204,6,9,9,7,0,0,192,192,192,192,192,192,192,192, + 252,7,9,9,9,1,0,130,238,254,146,130,130,130,130,130, + 6,9,9,7,0,0,204,236,252,220,204,204,204,204,204,6, + 9,9,7,0,0,120,204,204,204,204,204,204,204,120,6,9, + 9,7,0,0,248,204,204,248,192,192,192,192,192,7,9,9, + 8,0,0,124,130,130,130,130,146,146,146,124,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,204,6,9,9,7,0, + 0,120,204,192,120,12,12,204,204,120,6,9,9,7,0,0, + 252,48,48,48,48,48,48,48,48,6,9,9,7,0,0,204, + 204,204,204,204,204,204,204,120,7,9,9,8,0,0,198,198, + 198,108,108,108,56,56,56,9,9,18,11,1,0,128,128,128, + 128,128,128,105,128,105,128,105,128,127,0,127,0,127,0,6, + 9,9,7,0,0,204,204,120,48,48,120,204,204,204,6,9, + 9,7,0,0,204,204,120,48,48,48,48,48,48,6,9,9, + 7,0,0,252,12,12,24,48,96,192,192,252,4,9,9,6, + 1,0,240,192,192,192,192,192,192,192,240,6,7,7,8,1, + 0,192,96,96,48,24,24,12,4,9,9,6,1,0,240,48, + 48,48,48,48,48,48,240,4,2,2,6,1,10,96,144,6, + 2,2,8,1,0,252,252,2,2,2,4,1,10,64,128,6, + 6,6,7,0,0,120,204,204,204,204,124,6,9,9,7,0, + 0,192,192,192,248,204,204,204,204,120,6,6,6,7,0,0, + 120,204,192,192,204,120,6,9,9,7,0,0,12,12,12,124, + 204,204,204,204,124,6,6,6,7,0,0,120,204,252,192,204, + 120,6,9,9,7,0,0,56,108,96,240,96,96,96,96,96, + 6,10,10,7,0,252,120,204,204,204,204,124,12,12,204,120, + 6,9,9,7,0,0,192,192,192,248,236,204,204,204,204,2, + 9,9,3,0,0,192,192,0,192,192,192,192,192,192,3,13, + 13,4,0,252,96,96,0,96,96,96,96,96,96,96,96,96, + 192,6,9,9,7,0,0,192,192,192,216,240,224,240,216,204, + 2,9,9,3,0,0,192,192,192,192,192,192,192,192,192,7, + 6,6,9,1,0,254,146,146,146,146,146,6,6,6,7,0, + 0,248,236,204,204,204,204,6,6,6,7,0,0,120,204,204, + 204,204,120,6,10,10,7,0,252,120,204,204,204,204,248,192, + 192,192,192,7,10,10,7,0,252,124,204,204,204,204,124,12, + 30,12,12,5,6,6,6,0,0,248,240,192,192,192,192,6, + 6,6,7,0,0,120,224,120,12,204,120,5,9,9,6,0, + 0,96,96,96,248,96,96,96,96,96,6,6,6,7,0,0, + 204,204,204,204,204,120,6,6,6,7,0,0,204,204,120,120, + 48,48,9,6,12,10,0,0,128,128,128,128,107,0,107,0, + 127,0,127,0,6,6,6,7,0,0,204,120,48,48,120,204, + 6,10,10,7,0,252,204,204,204,204,204,124,12,12,204,120, + 6,6,6,7,0,0,124,204,24,48,96,252,6,9,9,8, + 1,0,12,24,48,48,240,48,48,24,12,2,9,9,4,1, + 0,192,192,192,192,192,192,192,192,192,6,9,9,8,1,0, + 192,96,48,48,28,48,48,96,192,5,2,2,6,0,10,232, + 184,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,2,9,9,3,0,0,192,192,0,192,192,192,192, + 192,192,5,7,7,7,1,0,32,112,168,160,168,112,32,6, + 9,9,7,0,0,192,192,248,192,192,192,204,204,252,5,5, + 5,7,1,1,136,112,80,112,136,6,9,9,8,1,0,204, + 204,120,48,48,120,48,120,48,2,9,9,4,1,0,192,192, + 192,0,0,0,192,192,192,8,10,10,10,1,0,124,192,126, + 195,126,3,3,3,195,62,5,1,1,7,1,3,216,9,7, + 14,11,1,0,62,0,65,0,221,128,209,128,221,128,65,0, + 62,0,7,8,8,9,1,0,120,204,204,204,204,126,0,254, + 7,3,3,9,1,2,102,204,102,5,3,3,7,1,1,248, + 248,24,255,9,7,14,11,1,0,62,0,65,0,221,128,209, + 128,209,128,65,0,62,0,5,1,1,6,0,6,248,3,3, + 3,5,1,2,224,160,224,5,7,7,7,1,0,32,32,248, + 32,32,0,248,255,255,255,255,255,255,255,255,255,7,3,3, + 9,1,2,204,102,204,255,255,255,255,6,12,12,7,0,0, + 96,48,0,120,204,204,252,204,204,204,204,204,6,12,12,7, + 0,0,24,48,0,120,204,204,252,204,204,204,204,204,6,12, + 12,7,0,0,48,72,0,120,204,204,252,204,204,204,204,204, + 6,12,12,7,0,0,232,184,0,120,204,204,252,204,204,204, + 204,204,6,11,11,7,0,0,72,0,120,204,204,252,204,204, + 204,204,204,6,13,13,7,0,0,48,72,48,0,120,204,204, + 252,204,204,204,204,204,11,9,18,12,0,0,127,224,206,0, + 206,0,255,192,206,0,206,0,206,0,206,0,207,224,6,11, + 11,7,0,254,120,204,192,192,192,192,192,204,120,48,96,6, + 12,12,7,0,0,96,48,0,252,192,192,248,192,192,192,192, + 252,6,12,12,7,0,0,24,48,0,252,192,192,248,192,192, + 192,192,252,6,12,12,7,0,0,48,72,0,252,192,192,248, + 192,192,192,192,252,6,11,11,7,0,0,204,0,252,192,192, + 248,192,192,192,192,252,3,12,12,4,0,0,192,96,0,96, + 96,96,96,96,96,96,96,96,3,12,12,4,0,0,96,192, + 0,192,192,192,192,192,192,192,192,192,4,12,12,5,0,0, + 96,144,0,96,96,96,96,96,96,96,96,96,6,11,11,7, + 0,0,204,0,48,48,48,48,48,48,48,48,48,6,9,9, + 7,0,0,248,204,204,236,204,204,204,204,248,6,12,12,7, + 0,0,232,184,0,204,236,252,220,204,204,204,204,204,6,12, + 12,7,0,0,96,48,0,120,204,204,204,204,204,204,204,120, + 6,12,12,7,0,0,24,48,0,120,204,204,204,204,204,204, + 204,120,6,12,12,7,0,0,48,72,0,120,204,204,204,204, + 204,204,204,120,6,12,12,7,0,0,232,184,0,120,204,204, + 204,204,204,204,204,120,6,11,11,7,0,0,204,0,120,204, + 204,204,204,204,204,204,120,3,3,3,6,1,2,160,64,160, + 6,9,9,7,0,0,120,204,220,220,236,236,236,204,120,6, + 12,12,7,0,0,96,48,0,204,204,204,204,204,204,204,204, + 120,6,12,12,7,0,0,24,48,0,204,204,204,204,204,204, + 204,204,120,6,12,12,7,0,0,48,72,0,204,204,204,204, + 204,204,204,204,120,6,11,11,7,0,0,204,0,204,204,204, + 204,204,204,204,204,120,6,12,12,7,0,0,24,48,0,204, + 204,120,48,48,48,48,48,48,7,9,9,8,0,0,192,192, + 252,198,252,192,192,192,192,7,11,11,8,0,254,252,198,220, + 198,198,198,220,192,192,192,192,6,9,9,7,0,0,96,48, + 0,120,204,204,204,204,124,6,9,9,7,0,0,24,48,0, + 120,204,204,204,204,124,6,9,9,7,0,0,48,72,0,120, + 204,204,204,204,124,6,9,9,7,0,0,232,184,0,120,204, + 204,204,204,124,6,8,8,7,0,0,204,0,120,204,204,204, + 204,124,6,10,10,7,0,0,48,72,48,0,120,204,204,204, + 204,124,9,6,12,11,1,0,127,128,136,128,143,128,136,0, + 136,128,127,128,6,8,8,7,0,254,120,204,192,192,204,120, + 48,96,6,9,9,7,0,0,96,48,0,120,204,252,192,204, + 120,6,9,9,7,0,0,24,48,0,120,204,252,192,204,120, + 6,9,9,7,0,0,48,72,0,120,204,252,192,204,120,6, + 8,8,7,0,0,204,0,120,204,252,192,204,120,3,12,12, + 4,0,0,192,96,0,96,96,96,96,96,96,96,96,96,3, + 12,12,4,0,0,96,192,0,192,192,192,192,192,192,192,192, + 192,4,12,12,5,0,0,96,144,0,96,96,96,96,96,96, + 96,96,96,6,11,11,7,0,0,204,0,48,48,48,48,48, + 48,48,48,48,6,9,9,7,0,0,12,60,12,124,204,204, + 204,204,124,6,9,9,7,0,0,232,184,0,248,236,204,204, + 204,204,6,9,9,7,0,0,96,48,0,120,204,204,204,204, + 120,6,9,9,7,0,0,24,48,0,120,204,204,204,204,120, + 6,9,9,7,0,0,48,72,0,120,204,204,204,204,120,6, + 9,9,7,0,0,232,184,0,120,204,204,204,204,120,6,8, + 8,7,0,0,204,0,120,204,204,204,204,120,6,6,6,7, + 0,1,48,0,252,252,0,48,6,6,6,7,0,0,120,220, + 220,236,236,120,6,9,9,7,0,0,96,48,0,204,204,204, + 204,204,120,6,9,9,7,0,0,24,48,0,204,204,204,204, + 204,120,6,9,9,7,0,0,48,72,0,204,204,204,204,204, + 120,6,8,8,7,0,0,204,0,204,204,204,204,204,120,6, + 13,13,7,0,252,24,48,0,204,204,204,204,204,124,12,12, + 204,120,6,6,6,7,0,0,192,248,204,248,192,192,6,12, + 12,7,0,252,204,0,204,204,204,204,204,124,12,12,204,120 + }; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 6 h= 9 x= 1 y= 3 dx= 8 dy= 0 ascent= 9 len= 9 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssbn[230] U8G_SECTION(".progmem.u8g_font_tpssbn") = { + 0,11,17,0,252,9,0,0,0,0,42,57,0,9,255,9, + 0,5,7,7,7,1,1,32,168,112,32,112,168,32,6,6, + 6,8,1,1,48,48,252,252,48,48,3,2,2,5,1,255, + 96,192,5,2,2,7,1,3,248,248,2,1,1,4,1,0, + 192,6,9,9,8,1,0,12,24,24,48,48,48,96,96,192, + 6,9,9,7,0,0,120,204,204,204,204,204,204,204,120,6, + 9,9,7,0,0,48,112,240,48,48,48,48,48,252,6,9, + 9,7,0,0,120,204,204,12,24,48,96,192,252,6,9,9, + 7,0,0,120,204,12,56,12,12,12,204,120,6,9,9,7, + 0,0,12,204,204,252,12,12,12,12,12,6,9,9,7,0, + 0,252,192,192,248,12,12,12,204,120,6,9,9,7,0,0, + 120,204,192,248,204,204,204,204,120,6,9,9,7,0,0,252, + 12,24,48,96,96,96,96,96,6,9,9,7,0,0,120,204, + 204,120,204,204,204,204,120,6,9,9,7,0,0,120,204,204, + 204,124,12,12,204,120}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=10 h=13 x= 1 y=10 dx=12 dy= 0 ascent=12 len=18 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssbr[1346] U8G_SECTION(".progmem.u8g_font_tpssbr") = { + 0,11,17,0,252,9,1,205,3,159,32,127,252,12,252,9, + 252,0,0,0,4,0,0,2,9,9,4,1,0,192,192,192, + 192,192,192,0,192,192,5,2,2,7,1,7,216,216,5,5, + 5,7,1,0,80,248,80,248,80,7,9,9,9,1,0,124, + 146,144,124,18,18,146,146,124,8,9,9,10,1,0,198,204, + 12,24,24,24,48,51,99,9,9,18,11,1,0,124,0,198, + 0,198,0,124,0,198,0,198,0,198,0,199,128,62,0,2, + 2,2,4,1,7,192,192,5,9,9,7,1,0,24,48,96, + 96,224,96,96,48,24,5,9,9,7,1,0,192,96,48,48, + 56,48,48,96,192,5,7,7,7,1,1,32,168,112,32,112, + 168,32,6,6,6,8,1,1,48,48,252,252,48,48,3,2, + 2,5,1,255,96,192,5,2,2,7,1,3,248,248,2,1, + 1,4,1,0,192,6,9,9,8,1,0,12,24,24,48,48, + 48,96,96,192,6,9,9,7,0,0,120,204,204,204,204,204, + 204,204,120,6,9,9,7,0,0,48,112,240,48,48,48,48, + 48,252,6,9,9,7,0,0,120,204,204,12,24,48,96,192, + 252,6,9,9,7,0,0,120,204,12,56,12,12,12,204,120, + 6,9,9,7,0,0,12,204,204,252,12,12,12,12,12,6, + 9,9,7,0,0,252,192,192,248,12,12,12,204,120,6,9, + 9,7,0,0,120,204,192,248,204,204,204,204,120,6,9,9, + 7,0,0,252,12,24,48,96,96,96,96,96,6,9,9,7, + 0,0,120,204,204,120,204,204,204,204,120,6,9,9,7,0, + 0,120,204,204,204,124,12,12,204,120,2,4,4,4,1,0, + 192,0,0,192,3,5,5,5,1,255,96,0,0,96,192,6, + 9,9,8,1,0,12,24,48,96,192,96,48,24,12,6,5, + 5,8,1,1,252,252,0,252,252,6,9,9,8,1,0,192, + 96,48,24,12,24,48,96,192,6,9,9,8,1,0,120,204, + 12,24,48,48,0,48,48,10,8,16,12,1,0,63,0,64, + 128,204,192,210,192,210,128,205,0,64,64,63,128,6,9,9, + 7,0,0,120,204,204,252,204,204,204,204,204,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,248,6,9,9,7,0, + 0,120,204,192,192,192,192,192,204,120,6,9,9,7,0,0, + 248,204,204,204,204,204,204,204,248,6,9,9,7,0,0,252, + 192,192,248,192,192,192,192,252,6,9,9,7,0,0,252,192, + 192,248,192,192,192,192,192,6,9,9,7,0,0,120,204,192, + 220,204,204,204,204,120,6,9,9,7,0,0,204,204,204,252, + 204,204,204,204,204,2,9,9,3,0,0,192,192,192,192,192, + 192,192,192,192,6,9,9,7,0,0,12,12,12,12,12,12, + 12,204,120,6,9,9,7,0,0,204,204,216,240,224,240,216, + 204,204,6,9,9,7,0,0,192,192,192,192,192,192,192,192, + 252,7,9,9,9,1,0,130,238,254,146,130,130,130,130,130, + 6,9,9,7,0,0,204,236,252,220,204,204,204,204,204,6, + 9,9,7,0,0,120,204,204,204,204,204,204,204,120,6,9, + 9,7,0,0,248,204,204,248,192,192,192,192,192,7,9,9, + 8,0,0,124,130,130,130,130,146,146,146,124,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,204,6,9,9,7,0, + 0,120,204,192,120,12,12,204,204,120,6,9,9,7,0,0, + 252,48,48,48,48,48,48,48,48,6,9,9,7,0,0,204, + 204,204,204,204,204,204,204,120,7,9,9,8,0,0,198,198, + 198,108,108,108,56,56,56,9,9,18,11,1,0,128,128,128, + 128,128,128,105,128,105,128,105,128,127,0,127,0,127,0,6, + 9,9,7,0,0,204,204,120,48,48,120,204,204,204,6,9, + 9,7,0,0,204,204,120,48,48,48,48,48,48,6,9,9, + 7,0,0,252,12,12,24,48,96,192,192,252,4,9,9,6, + 1,0,240,192,192,192,192,192,192,192,240,6,7,7,8,1, + 0,192,96,96,48,24,24,12,4,9,9,6,1,0,240,48, + 48,48,48,48,48,48,240,4,2,2,6,1,10,96,144,6, + 2,2,8,1,0,252,252,2,2,2,4,1,10,64,128,6, + 6,6,7,0,0,120,204,204,204,204,124,6,9,9,7,0, + 0,192,192,192,248,204,204,204,204,120,6,6,6,7,0,0, + 120,204,192,192,204,120,6,9,9,7,0,0,12,12,12,124, + 204,204,204,204,124,6,6,6,7,0,0,120,204,252,192,204, + 120,6,9,9,7,0,0,56,108,96,240,96,96,96,96,96, + 6,10,10,7,0,252,120,204,204,204,204,124,12,12,204,120, + 6,9,9,7,0,0,192,192,192,248,236,204,204,204,204,2, + 9,9,3,0,0,192,192,0,192,192,192,192,192,192,3,13, + 13,4,0,252,96,96,0,96,96,96,96,96,96,96,96,96, + 192,6,9,9,7,0,0,192,192,192,216,240,224,240,216,204, + 2,9,9,3,0,0,192,192,192,192,192,192,192,192,192,7, + 6,6,9,1,0,254,146,146,146,146,146,6,6,6,7,0, + 0,248,236,204,204,204,204,6,6,6,7,0,0,120,204,204, + 204,204,120,6,10,10,7,0,252,120,204,204,204,204,248,192, + 192,192,192,7,10,10,7,0,252,124,204,204,204,204,124,12, + 30,12,12,5,6,6,6,0,0,248,240,192,192,192,192,6, + 6,6,7,0,0,120,224,120,12,204,120,5,9,9,6,0, + 0,96,96,96,248,96,96,96,96,96,6,6,6,7,0,0, + 204,204,204,204,204,120,6,6,6,7,0,0,204,204,120,120, + 48,48,9,6,12,10,0,0,128,128,128,128,107,0,107,0, + 127,0,127,0,6,6,6,7,0,0,204,120,48,48,120,204, + 6,10,10,7,0,252,204,204,204,204,204,124,12,12,204,120, + 6,6,6,7,0,0,124,204,24,48,96,252,6,9,9,8, + 1,0,12,24,48,48,240,48,48,24,12,2,9,9,4,1, + 0,192,192,192,192,192,192,192,192,192,6,9,9,8,1,0, + 192,96,48,48,28,48,48,96,192,5,2,2,6,0,10,232, + 184,255}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 1 y=10 dx=11 dy= 0 ascent=13 len=18 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpss[2605] U8G_SECTION(".progmem.u8g_font_tpss") = { + 0,11,17,255,252,9,1,192,3,136,32,255,252,13,252,9, + 252,0,0,0,4,0,0,1,9,9,3,1,0,128,128,128, + 128,128,128,0,128,128,3,2,2,5,1,7,160,160,5,5, + 5,7,1,0,80,248,80,248,80,5,9,9,7,1,0,112, + 168,160,112,40,40,168,168,112,5,9,9,7,1,0,136,144, + 16,32,32,32,64,72,136,7,9,9,9,1,0,112,136,136, + 112,136,136,136,138,116,1,2,2,3,1,7,128,128,5,9, + 9,7,1,0,24,32,64,64,128,64,64,32,24,5,9,9, + 7,1,0,192,32,16,16,8,16,16,32,192,5,7,7,7, + 1,1,32,168,112,32,112,168,32,5,5,5,7,1,1,32, + 32,248,32,32,2,2,2,4,1,255,64,128,5,1,1,7, + 1,3,248,1,1,1,3,1,0,128,5,9,9,7,1,0, + 8,16,16,32,32,32,64,64,128,5,9,9,6,0,0,112, + 136,136,136,136,136,136,136,112,5,9,9,6,0,0,32,96, + 160,32,32,32,32,32,248,5,9,9,6,0,0,112,136,136, + 8,16,32,64,128,248,5,9,9,6,0,0,112,136,8,48, + 8,8,8,136,112,5,9,9,6,0,0,8,136,136,248,8, + 8,8,8,8,5,9,9,6,0,0,248,128,128,248,8,8, + 8,136,112,5,9,9,6,0,0,112,136,128,240,136,136,136, + 136,112,5,9,9,6,0,0,248,8,16,32,64,64,64,64, + 64,5,9,9,6,0,0,112,136,136,112,136,136,136,136,112, + 5,9,9,6,0,0,112,136,136,136,120,8,8,136,112,1, + 4,4,3,1,0,128,0,0,128,2,5,5,4,1,255,64, + 0,0,64,128,5,9,9,7,1,0,8,16,32,64,128,64, + 32,16,8,5,3,3,7,1,2,248,0,248,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,5,9,9,7,1, + 0,112,136,8,16,32,32,0,32,32,9,8,16,11,1,0, + 126,0,129,0,153,0,165,0,165,0,154,0,128,128,127,0, + 5,9,9,6,0,0,112,136,136,248,136,136,136,136,136,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,240,5,9, + 9,6,0,0,112,136,128,128,128,128,128,136,112,5,9,9, + 6,0,0,240,136,136,136,136,136,136,136,240,5,9,9,6, + 0,0,248,128,128,240,128,128,128,128,248,5,9,9,6,0, + 0,248,128,128,240,128,128,128,128,128,5,9,9,6,0,0, + 112,136,128,184,136,136,136,136,112,5,9,9,6,0,0,136, + 136,136,248,136,136,136,136,136,1,9,9,2,0,0,128,128, + 128,128,128,128,128,128,128,5,9,9,6,0,0,8,8,8, + 8,8,8,8,136,112,5,9,9,6,0,0,136,136,144,160, + 192,160,144,136,136,5,9,9,6,0,0,128,128,128,128,128, + 128,128,128,248,7,9,9,8,0,0,130,198,170,146,130,130, + 130,130,130,5,9,9,6,0,0,136,200,168,152,136,136,136, + 136,136,5,9,9,6,0,0,112,136,136,136,136,136,136,136, + 112,5,9,9,6,0,0,240,136,136,240,128,128,128,128,128, + 5,9,9,6,0,0,112,136,136,136,136,168,168,168,112,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,136,5,9, + 9,6,0,0,112,136,128,112,8,8,136,136,112,5,9,9, + 6,0,0,248,32,32,32,32,32,32,32,32,5,9,9,6, + 0,0,136,136,136,136,136,136,136,136,112,5,9,9,6,0, + 0,136,136,136,80,80,80,80,32,32,7,9,9,8,0,0, + 130,130,130,84,84,84,40,40,40,5,9,9,6,0,0,136, + 136,80,32,32,80,136,136,136,5,9,9,6,0,0,136,136, + 80,32,32,32,32,32,32,5,9,9,6,0,0,248,8,8, + 16,32,64,128,128,248,3,9,9,5,1,0,224,128,128,128, + 128,128,128,128,224,5,7,7,7,1,0,128,64,64,32,16, + 16,8,3,9,9,5,1,0,224,32,32,32,32,32,32,32, + 224,3,2,2,5,1,10,64,160,6,1,1,8,1,0,252, + 2,2,2,4,1,10,64,128,5,6,6,6,0,0,112,136, + 136,136,136,120,5,9,9,6,0,0,128,128,128,240,136,136, + 136,136,112,5,6,6,6,0,0,112,136,128,128,136,112,5, + 9,9,6,0,0,8,8,8,120,136,136,136,136,120,5,6, + 6,6,0,0,112,136,248,128,136,112,5,9,9,6,0,0, + 48,72,64,224,64,64,64,64,64,5,10,10,6,0,252,112, + 136,136,136,136,120,8,8,136,112,5,9,9,6,0,0,128, + 128,128,176,200,136,136,136,136,1,9,9,2,0,0,128,128, + 0,128,128,128,128,128,128,2,13,13,3,0,252,64,64,0, + 64,64,64,64,64,64,64,64,64,128,5,9,9,6,0,0, + 128,128,128,144,160,192,160,144,136,1,9,9,2,0,0,128, + 128,128,128,128,128,128,128,128,7,6,6,8,0,0,182,218, + 146,146,146,146,5,6,6,6,0,0,176,200,136,136,136,136, + 5,6,6,6,0,0,112,136,136,136,136,112,5,10,10,6, + 0,252,112,136,136,136,136,240,128,128,128,128,6,10,10,7, + 0,252,120,136,136,136,136,120,8,28,8,8,4,6,6,5, + 0,0,176,192,128,128,128,128,5,6,6,6,0,0,112,128, + 112,8,136,112,4,9,9,5,0,0,64,64,64,240,64,64, + 64,64,64,5,6,6,6,0,0,136,136,136,136,136,112,5, + 6,6,6,0,0,136,136,80,80,32,32,7,6,6,8,0, + 0,130,130,84,84,40,40,5,6,6,6,0,0,136,80,32, + 32,80,136,5,10,10,6,0,252,136,136,136,136,136,120,8, + 8,136,112,5,6,6,6,0,0,120,136,16,32,64,248,6, + 9,9,8,1,0,12,16,32,32,192,32,32,16,12,1,9, + 9,3,1,0,128,128,128,128,128,128,128,128,128,6,9,9, + 8,1,0,192,32,16,16,12,16,16,32,192,5,2,2,6, + 0,10,232,184,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,1,9,9,2,0,0,128,128,0,128, + 128,128,128,128,128,5,7,7,7,1,0,32,112,168,160,168, + 112,32,5,9,9,7,1,0,128,128,240,128,128,128,136,136, + 248,5,5,5,7,1,1,136,112,80,112,136,5,9,9,7, + 1,0,136,136,80,32,32,248,32,248,32,1,9,9,3,1, + 0,128,128,128,0,0,0,128,128,128,6,10,10,8,1,0, + 120,128,120,132,120,4,4,4,132,120,5,1,1,7,1,3, + 136,7,7,7,9,1,0,124,130,186,162,186,130,124,6,8, + 8,8,1,0,112,136,136,136,136,116,0,252,5,3,3,7, + 1,2,72,144,72,5,2,2,7,1,2,248,8,0,0,0, + 8,0,0,7,7,7,9,1,0,124,130,186,162,162,130,124, + 5,1,1,6,0,6,248,3,3,3,5,1,2,64,160,64, + 5,7,7,7,1,0,32,32,248,32,32,0,248,255,255,255, + 0,0,0,8,0,0,255,0,0,0,8,0,0,255,255,255, + 5,3,3,7,1,2,144,72,144,255,255,255,255,5,12,12, + 6,0,0,64,32,0,112,136,136,248,136,136,136,136,136,5, + 12,12,6,0,0,16,32,0,112,136,136,248,136,136,136,136, + 136,5,12,12,6,0,0,32,80,0,112,136,136,248,136,136, + 136,136,136,5,12,12,6,0,0,232,184,0,112,136,136,248, + 136,136,136,136,136,5,11,11,6,0,0,80,0,112,136,136, + 248,136,136,136,136,136,5,13,13,6,0,0,32,80,32,0, + 112,136,136,248,136,136,136,136,136,9,9,18,10,0,0,127, + 128,136,0,136,0,255,0,136,0,136,0,136,0,136,0,143, + 128,5,9,9,6,0,254,112,136,128,128,128,136,112,32,96, + 5,12,12,6,0,0,64,32,0,248,128,128,240,128,128,128, + 128,248,5,12,12,6,0,0,16,32,0,248,128,128,240,128, + 128,128,128,248,5,12,12,6,0,0,32,80,0,248,128,128, + 240,128,128,128,128,248,5,11,11,6,0,0,80,0,248,128, + 128,240,128,128,128,128,248,2,12,12,2,0,0,128,64,0, + 64,64,64,64,64,64,64,64,64,2,12,12,2,0,0,64, + 128,0,128,128,128,128,128,128,128,128,128,3,12,12,2,255, + 0,64,160,0,64,64,64,64,64,64,64,64,64,3,11,11, + 2,255,0,160,0,64,64,64,64,64,64,64,64,64,5,9, + 9,6,0,0,240,136,136,232,136,136,136,136,240,5,12,12, + 6,0,0,232,184,0,136,136,136,200,168,152,136,136,136,5, + 12,12,6,0,0,64,32,0,112,136,136,136,136,136,136,136, + 112,5,12,12,6,0,0,16,32,0,112,136,136,136,136,136, + 136,136,112,5,12,12,6,0,0,32,80,0,112,136,136,136, + 136,136,136,136,112,5,12,12,6,0,0,232,184,0,112,136, + 136,136,136,136,136,136,112,5,11,11,6,0,0,80,0,112, + 136,136,136,136,136,136,136,112,3,3,3,6,1,2,160,64, + 160,7,9,9,8,0,0,58,68,76,84,84,84,100,68,184, + 5,12,12,6,0,0,64,32,0,136,136,136,136,136,136,136, + 136,112,5,12,12,6,0,0,16,32,0,136,136,136,136,136, + 136,136,136,112,5,12,12,6,0,0,32,80,0,136,136,136, + 136,136,136,136,136,112,5,11,11,6,0,0,80,0,136,136, + 136,136,136,136,136,136,112,5,12,12,6,0,0,16,32,0, + 136,136,80,32,32,32,32,32,32,5,9,9,6,0,0,128, + 128,240,136,240,128,128,128,128,5,11,11,6,0,254,240,136, + 176,136,136,136,176,128,128,128,128,5,9,9,6,0,0,64, + 32,0,112,136,136,136,136,120,5,9,9,6,0,0,16,32, + 0,112,136,136,136,136,120,5,9,9,6,0,0,32,80,0, + 112,136,136,136,136,120,5,9,9,6,0,0,232,184,0,112, + 136,136,136,136,120,5,8,8,6,0,0,80,0,112,136,136, + 136,136,120,5,10,10,6,0,0,32,80,32,0,112,136,136, + 136,136,120,9,6,12,10,0,0,119,0,136,128,143,128,136, + 0,136,128,119,0,5,8,8,6,0,254,112,136,128,128,136, + 112,32,64,5,6,6,6,0,0,112,136,248,128,136,112,5, + 6,6,6,0,0,112,136,248,128,136,112,5,6,6,6,0, + 0,112,136,248,128,136,112,5,6,6,6,0,0,112,136,248, + 128,136,112,2,10,10,3,0,0,128,64,0,0,64,64,64, + 64,64,64,2,10,10,3,0,0,64,128,0,0,128,128,128, + 128,128,128,3,10,10,4,0,0,64,160,0,0,64,64,64, + 64,64,64,3,9,9,4,0,0,160,0,0,64,64,64,64, + 64,64,5,9,9,6,0,0,8,56,8,120,136,136,136,136, + 120,5,9,9,6,0,0,232,184,0,176,200,136,136,136,136, + 5,9,9,6,0,0,64,32,0,112,136,136,136,136,112,5, + 9,9,6,0,0,16,32,0,112,136,136,136,136,112,5,9, + 9,6,0,0,32,80,0,112,136,136,136,136,112,5,9,9, + 6,0,0,232,184,0,112,136,136,136,136,112,5,8,8,6, + 0,0,80,0,112,136,136,136,136,112,5,5,5,6,0,1, + 32,0,248,0,32,5,6,6,6,0,0,112,152,168,168,200, + 112,5,9,9,6,0,0,64,32,0,136,136,136,136,136,112, + 5,9,9,6,0,0,16,32,0,136,136,136,136,136,112,5, + 9,9,6,0,0,32,80,0,136,136,136,136,136,112,5,8, + 8,6,0,0,80,0,136,136,136,136,136,112,5,13,13,6, + 0,252,16,32,0,136,136,136,136,136,120,8,8,136,112,5, + 6,6,5,0,0,128,240,136,240,128,128,5,12,12,6,0, + 252,80,0,136,136,136,136,136,120,8,8,136,112}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 5 h= 9 x= 1 y= 3 dx= 7 dy= 0 ascent= 9 len= 9 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssn[228] U8G_SECTION(".progmem.u8g_font_tpssn") = { + 0,11,17,255,252,9,0,0,0,0,42,57,0,9,255,9, + 0,5,7,7,7,1,1,32,168,112,32,112,168,32,5,5, + 5,7,1,1,32,32,248,32,32,2,2,2,4,1,255,64, + 128,5,1,1,7,1,3,248,1,1,1,3,1,0,128,5, + 9,9,7,1,0,8,16,16,32,32,32,64,64,128,5,9, + 9,6,0,0,112,136,136,136,136,136,136,136,112,5,9,9, + 6,0,0,32,96,160,32,32,32,32,32,248,5,9,9,6, + 0,0,112,136,136,8,16,32,64,128,248,5,9,9,6,0, + 0,112,136,8,48,8,8,8,136,112,5,9,9,6,0,0, + 8,136,136,248,8,8,8,8,8,5,9,9,6,0,0,248, + 128,128,248,8,8,8,136,112,5,9,9,6,0,0,112,136, + 128,240,136,136,136,136,112,5,9,9,6,0,0,248,8,16, + 32,64,64,64,64,64,5,9,9,6,0,0,112,136,136,112, + 136,136,136,136,112,5,9,9,6,0,0,112,136,136,136,120, + 8,8,136,112}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 1 y=10 dx=11 dy= 0 ascent=12 len=16 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssr[1317] U8G_SECTION(".progmem.u8g_font_tpssr") = { + 0,11,17,255,252,9,1,192,3,136,32,127,252,12,252,9, + 252,0,0,0,4,0,0,1,9,9,3,1,0,128,128,128, + 128,128,128,0,128,128,3,2,2,5,1,7,160,160,5,5, + 5,7,1,0,80,248,80,248,80,5,9,9,7,1,0,112, + 168,160,112,40,40,168,168,112,5,9,9,7,1,0,136,144, + 16,32,32,32,64,72,136,7,9,9,9,1,0,112,136,136, + 112,136,136,136,138,116,1,2,2,3,1,7,128,128,5,9, + 9,7,1,0,24,32,64,64,128,64,64,32,24,5,9,9, + 7,1,0,192,32,16,16,8,16,16,32,192,5,7,7,7, + 1,1,32,168,112,32,112,168,32,5,5,5,7,1,1,32, + 32,248,32,32,2,2,2,4,1,255,64,128,5,1,1,7, + 1,3,248,1,1,1,3,1,0,128,5,9,9,7,1,0, + 8,16,16,32,32,32,64,64,128,5,9,9,6,0,0,112, + 136,136,136,136,136,136,136,112,5,9,9,6,0,0,32,96, + 160,32,32,32,32,32,248,5,9,9,6,0,0,112,136,136, + 8,16,32,64,128,248,5,9,9,6,0,0,112,136,8,48, + 8,8,8,136,112,5,9,9,6,0,0,8,136,136,248,8, + 8,8,8,8,5,9,9,6,0,0,248,128,128,248,8,8, + 8,136,112,5,9,9,6,0,0,112,136,128,240,136,136,136, + 136,112,5,9,9,6,0,0,248,8,16,32,64,64,64,64, + 64,5,9,9,6,0,0,112,136,136,112,136,136,136,136,112, + 5,9,9,6,0,0,112,136,136,136,120,8,8,136,112,1, + 4,4,3,1,0,128,0,0,128,2,5,5,4,1,255,64, + 0,0,64,128,5,9,9,7,1,0,8,16,32,64,128,64, + 32,16,8,5,3,3,7,1,2,248,0,248,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,5,9,9,7,1, + 0,112,136,8,16,32,32,0,32,32,9,8,16,11,1,0, + 126,0,129,0,153,0,165,0,165,0,154,0,128,128,127,0, + 5,9,9,6,0,0,112,136,136,248,136,136,136,136,136,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,240,5,9, + 9,6,0,0,112,136,128,128,128,128,128,136,112,5,9,9, + 6,0,0,240,136,136,136,136,136,136,136,240,5,9,9,6, + 0,0,248,128,128,240,128,128,128,128,248,5,9,9,6,0, + 0,248,128,128,240,128,128,128,128,128,5,9,9,6,0,0, + 112,136,128,184,136,136,136,136,112,5,9,9,6,0,0,136, + 136,136,248,136,136,136,136,136,1,9,9,2,0,0,128,128, + 128,128,128,128,128,128,128,5,9,9,6,0,0,8,8,8, + 8,8,8,8,136,112,5,9,9,6,0,0,136,136,144,160, + 192,160,144,136,136,5,9,9,6,0,0,128,128,128,128,128, + 128,128,128,248,7,9,9,8,0,0,130,198,170,146,130,130, + 130,130,130,5,9,9,6,0,0,136,200,168,152,136,136,136, + 136,136,5,9,9,6,0,0,112,136,136,136,136,136,136,136, + 112,5,9,9,6,0,0,240,136,136,240,128,128,128,128,128, + 5,9,9,6,0,0,112,136,136,136,136,168,168,168,112,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,136,5,9, + 9,6,0,0,112,136,128,112,8,8,136,136,112,5,9,9, + 6,0,0,248,32,32,32,32,32,32,32,32,5,9,9,6, + 0,0,136,136,136,136,136,136,136,136,112,5,9,9,6,0, + 0,136,136,136,80,80,80,80,32,32,7,9,9,8,0,0, + 130,130,130,84,84,84,40,40,40,5,9,9,6,0,0,136, + 136,80,32,32,80,136,136,136,5,9,9,6,0,0,136,136, + 80,32,32,32,32,32,32,5,9,9,6,0,0,248,8,8, + 16,32,64,128,128,248,3,9,9,5,1,0,224,128,128,128, + 128,128,128,128,224,5,7,7,7,1,0,128,64,64,32,16, + 16,8,3,9,9,5,1,0,224,32,32,32,32,32,32,32, + 224,3,2,2,5,1,10,64,160,6,1,1,8,1,0,252, + 2,2,2,4,1,10,64,128,5,6,6,6,0,0,112,136, + 136,136,136,120,5,9,9,6,0,0,128,128,128,240,136,136, + 136,136,112,5,6,6,6,0,0,112,136,128,128,136,112,5, + 9,9,6,0,0,8,8,8,120,136,136,136,136,120,5,6, + 6,6,0,0,112,136,248,128,136,112,5,9,9,6,0,0, + 48,72,64,224,64,64,64,64,64,5,10,10,6,0,252,112, + 136,136,136,136,120,8,8,136,112,5,9,9,6,0,0,128, + 128,128,176,200,136,136,136,136,1,9,9,2,0,0,128,128, + 0,128,128,128,128,128,128,2,13,13,3,0,252,64,64,0, + 64,64,64,64,64,64,64,64,64,128,5,9,9,6,0,0, + 128,128,128,144,160,192,160,144,136,1,9,9,2,0,0,128, + 128,128,128,128,128,128,128,128,7,6,6,8,0,0,182,218, + 146,146,146,146,5,6,6,6,0,0,176,200,136,136,136,136, + 5,6,6,6,0,0,112,136,136,136,136,112,5,10,10,6, + 0,252,112,136,136,136,136,240,128,128,128,128,6,10,10,7, + 0,252,120,136,136,136,136,120,8,28,8,8,4,6,6,5, + 0,0,176,192,128,128,128,128,5,6,6,6,0,0,112,128, + 112,8,136,112,4,9,9,5,0,0,64,64,64,240,64,64, + 64,64,64,5,6,6,6,0,0,136,136,136,136,136,112,5, + 6,6,6,0,0,136,136,80,80,32,32,7,6,6,8,0, + 0,130,130,84,84,40,40,5,6,6,6,0,0,136,80,32, + 32,80,136,5,10,10,6,0,252,136,136,136,136,136,120,8, + 8,136,112,5,6,6,6,0,0,120,136,16,32,64,248,6, + 9,9,8,1,0,12,16,32,32,192,32,32,16,12,1,9, + 9,3,1,0,128,128,128,128,128,128,128,128,128,6,9,9, + 8,1,0,192,32,16,16,12,16,16,32,192,5,2,2,6, + 0,10,232,184,255}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_square[1236] U8G_SECTION(".progmem.u8g_font_trixel_square") = { + 0,5,9,0,254,5,1,91,2,177,32,255,254,7,254,5, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,255, + 80,248,80,248,80,3,6,6,4,0,0,64,224,192,96,224, + 64,3,5,5,4,0,0,160,32,224,128,160,5,5,5,6, + 0,0,224,160,240,160,248,1,2,2,2,0,3,128,128,2, + 5,5,3,0,0,192,128,128,128,192,2,5,5,3,0,0, + 192,64,64,64,192,3,3,3,4,0,2,160,64,160,3,3, + 3,4,0,0,64,224,64,1,2,2,2,0,255,128,128,3, + 1,1,4,0,1,224,1,1,1,2,0,0,128,3,5,5, + 4,0,0,32,96,64,192,128,3,5,5,4,0,0,224,160, + 160,160,224,2,5,5,3,0,0,64,192,64,64,64,3,5, + 5,4,0,0,224,160,96,192,224,3,5,5,4,0,0,224, + 32,96,32,224,3,5,5,4,0,0,160,160,224,32,32,3, + 5,5,4,0,0,224,128,224,32,224,3,5,5,4,0,0, + 224,128,224,160,224,3,5,5,4,0,0,224,32,32,32,32, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,160,224,32,224,1,3,3,2,0,0,128,0,128,1, + 4,4,2,0,255,128,0,128,128,3,3,3,4,0,0,96, + 192,96,3,3,3,4,0,0,224,0,224,3,3,3,4,0, + 0,192,96,192,3,5,5,4,0,0,224,32,96,0,64,5, + 6,6,6,0,255,248,136,168,184,128,248,3,5,5,4,0, + 0,224,160,224,160,160,3,5,5,4,0,0,224,160,224,160, + 224,3,5,5,4,0,0,224,160,128,160,224,3,5,5,4, + 0,0,224,160,160,160,224,3,5,5,4,0,0,224,128,192, + 128,224,3,5,5,4,0,0,224,128,192,128,128,3,5,5, + 4,0,0,224,128,160,160,224,3,5,5,4,0,0,160,160, + 224,160,160,1,5,5,2,0,0,128,128,128,128,128,3,5, + 5,4,0,0,224,32,32,32,224,3,5,5,4,0,0,160, + 160,192,160,160,3,5,5,4,0,0,128,128,128,128,224,5, + 5,5,6,0,0,216,216,168,168,136,4,5,5,5,0,0, + 208,208,176,176,144,3,5,5,4,0,0,224,160,160,160,224, + 3,5,5,4,0,0,224,160,224,128,128,4,5,5,5,0, + 0,224,160,160,160,240,3,5,5,4,0,0,224,160,192,160, + 160,3,5,5,4,0,0,224,128,224,32,224,3,5,5,4, + 0,0,224,64,64,64,64,3,5,5,4,0,0,160,160,160, + 160,224,3,5,5,4,0,0,160,160,160,224,64,5,5,5, + 6,0,0,136,136,168,168,248,3,5,5,4,0,0,160,224, + 64,224,160,3,5,5,4,0,0,160,160,224,64,64,3,5, + 5,4,0,0,224,32,224,128,224,3,5,5,4,0,0,224, + 128,128,128,224,3,5,5,4,0,0,128,192,64,96,32,3, + 5,5,4,0,0,224,32,32,32,224,3,2,2,4,0,3, + 224,160,3,1,1,4,0,0,224,2,2,2,3,0,3,192, + 64,4,3,3,5,0,0,224,160,240,3,5,5,4,0,0, + 128,128,224,160,224,3,3,3,4,0,0,224,128,224,3,5, + 5,4,0,0,32,32,224,160,224,3,3,3,4,0,0,224, + 192,224,2,5,5,3,0,0,192,128,192,128,128,3,5,5, + 4,0,254,224,160,224,32,224,3,5,5,4,0,0,128,128, + 224,160,160,1,5,5,2,0,0,128,0,128,128,128,2,7, + 7,3,0,254,64,0,64,64,64,64,192,3,5,5,4,0, + 0,128,128,160,224,160,2,5,5,3,0,0,128,128,128,128, + 192,5,3,3,6,0,0,248,168,168,3,3,3,4,0,0, + 224,160,160,3,3,3,4,0,0,224,160,224,3,5,5,4, + 0,254,224,160,224,128,128,3,5,5,4,0,254,224,160,224, + 32,32,2,3,3,3,0,0,192,128,128,3,3,3,4,0, + 0,96,64,192,2,5,5,3,0,0,128,192,128,128,192,3, + 3,3,4,0,0,160,160,224,3,3,3,4,0,0,160,224, + 64,5,3,3,6,0,0,168,168,248,3,3,3,4,0,0, + 160,64,160,3,5,5,4,0,254,160,160,224,32,224,3,3, + 3,4,0,0,224,64,224,3,5,5,4,0,0,96,64,192, + 64,96,1,5,5,2,0,0,128,128,128,128,128,3,5,5, + 4,0,0,192,64,96,64,192,3,3,3,4,0,1,32,224, + 128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,4,5,5,5,0,0,112,64,96,64,240, + 255,255,255,3,7,7,4,0,254,224,128,224,160,224,32,224, + 255,255,255,3,2,2,4,0,1,160,160,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,3,2,2,4,0,1, + 160,160,255,255,255,255,255,255,255,255,3,7,7,4,0,0, + 160,0,224,160,224,160,160,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,3,7,7,4,0,0,160,0, + 224,160,160,160,224,255,255,255,255,255,3,7,7,4,0,0, + 160,0,160,160,160,160,224,255,255,3,7,7,4,0,254,224, + 160,224,160,224,128,128,255,255,255,255,4,5,5,5,0,0, + 160,0,224,160,240,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,3,5,5,4,0,0,160,0,224,160, + 224,255,255,255,255,255,3,5,5,4,0,0,160,0,160,160, + 224,255,255,255}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[178] U8G_SECTION(".progmem.u8g_font_trixel_squaren") = { + 0,5,9,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,3,3,4,0,2,160,64,160,3,3,3,4,0,0, + 64,224,64,1,2,2,2,0,255,128,128,3,1,1,4,0, + 1,224,1,1,1,2,0,0,128,3,5,5,4,0,0,32, + 96,64,192,128,3,5,5,4,0,0,224,160,160,160,224,2, + 5,5,3,0,0,64,192,64,64,64,3,5,5,4,0,0, + 224,160,96,192,224,3,5,5,4,0,0,224,32,96,32,224, + 3,5,5,4,0,0,160,160,224,32,32,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,128,224,160, + 224,3,5,5,4,0,0,224,32,32,32,32,3,5,5,4, + 0,0,224,160,224,160,224,3,5,5,4,0,0,224,160,224, + 32,224}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[994] U8G_SECTION(".progmem.u8g_font_trixel_squarer") = { + 0,5,9,0,254,5,1,91,2,177,32,127,254,6,254,5, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,255, + 80,248,80,248,80,3,6,6,4,0,0,64,224,192,96,224, + 64,3,5,5,4,0,0,160,32,224,128,160,5,5,5,6, + 0,0,224,160,240,160,248,1,2,2,2,0,3,128,128,2, + 5,5,3,0,0,192,128,128,128,192,2,5,5,3,0,0, + 192,64,64,64,192,3,3,3,4,0,2,160,64,160,3,3, + 3,4,0,0,64,224,64,1,2,2,2,0,255,128,128,3, + 1,1,4,0,1,224,1,1,1,2,0,0,128,3,5,5, + 4,0,0,32,96,64,192,128,3,5,5,4,0,0,224,160, + 160,160,224,2,5,5,3,0,0,64,192,64,64,64,3,5, + 5,4,0,0,224,160,96,192,224,3,5,5,4,0,0,224, + 32,96,32,224,3,5,5,4,0,0,160,160,224,32,32,3, + 5,5,4,0,0,224,128,224,32,224,3,5,5,4,0,0, + 224,128,224,160,224,3,5,5,4,0,0,224,32,32,32,32, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,160,224,32,224,1,3,3,2,0,0,128,0,128,1, + 4,4,2,0,255,128,0,128,128,3,3,3,4,0,0,96, + 192,96,3,3,3,4,0,0,224,0,224,3,3,3,4,0, + 0,192,96,192,3,5,5,4,0,0,224,32,96,0,64,5, + 6,6,6,0,255,248,136,168,184,128,248,3,5,5,4,0, + 0,224,160,224,160,160,3,5,5,4,0,0,224,160,224,160, + 224,3,5,5,4,0,0,224,160,128,160,224,3,5,5,4, + 0,0,224,160,160,160,224,3,5,5,4,0,0,224,128,192, + 128,224,3,5,5,4,0,0,224,128,192,128,128,3,5,5, + 4,0,0,224,128,160,160,224,3,5,5,4,0,0,160,160, + 224,160,160,1,5,5,2,0,0,128,128,128,128,128,3,5, + 5,4,0,0,224,32,32,32,224,3,5,5,4,0,0,160, + 160,192,160,160,3,5,5,4,0,0,128,128,128,128,224,5, + 5,5,6,0,0,216,216,168,168,136,4,5,5,5,0,0, + 208,208,176,176,144,3,5,5,4,0,0,224,160,160,160,224, + 3,5,5,4,0,0,224,160,224,128,128,4,5,5,5,0, + 0,224,160,160,160,240,3,5,5,4,0,0,224,160,192,160, + 160,3,5,5,4,0,0,224,128,224,32,224,3,5,5,4, + 0,0,224,64,64,64,64,3,5,5,4,0,0,160,160,160, + 160,224,3,5,5,4,0,0,160,160,160,224,64,5,5,5, + 6,0,0,136,136,168,168,248,3,5,5,4,0,0,160,224, + 64,224,160,3,5,5,4,0,0,160,160,224,64,64,3,5, + 5,4,0,0,224,32,224,128,224,3,5,5,4,0,0,224, + 128,128,128,224,3,5,5,4,0,0,128,192,64,96,32,3, + 5,5,4,0,0,224,32,32,32,224,3,2,2,4,0,3, + 224,160,3,1,1,4,0,0,224,2,2,2,3,0,3,192, + 64,4,3,3,5,0,0,224,160,240,3,5,5,4,0,0, + 128,128,224,160,224,3,3,3,4,0,0,224,128,224,3,5, + 5,4,0,0,32,32,224,160,224,3,3,3,4,0,0,224, + 192,224,2,5,5,3,0,0,192,128,192,128,128,3,5,5, + 4,0,254,224,160,224,32,224,3,5,5,4,0,0,128,128, + 224,160,160,1,5,5,2,0,0,128,0,128,128,128,2,7, + 7,3,0,254,64,0,64,64,64,64,192,3,5,5,4,0, + 0,128,128,160,224,160,2,5,5,3,0,0,128,128,128,128, + 192,5,3,3,6,0,0,248,168,168,3,3,3,4,0,0, + 224,160,160,3,3,3,4,0,0,224,160,224,3,5,5,4, + 0,254,224,160,224,128,128,3,5,5,4,0,254,224,160,224, + 32,32,2,3,3,3,0,0,192,128,128,3,3,3,4,0, + 0,96,64,192,2,5,5,3,0,0,128,192,128,128,192,3, + 3,3,4,0,0,160,160,224,3,3,3,4,0,0,160,224, + 64,5,3,3,6,0,0,168,168,248,3,3,3,4,0,0, + 160,64,160,3,5,5,4,0,254,160,160,224,32,224,3,3, + 3,4,0,0,224,64,224,3,5,5,4,0,0,96,64,192, + 64,96,1,5,5,2,0,0,128,128,128,128,128,3,5,5, + 4,0,0,192,64,96,64,192,3,3,3,4,0,1,32,224, + 128,255}; +/* + Fontname: u8glib_4 + Copyright: public domain + Capital A Height: 4, '1' Height: 4 + Calculated Max Values w= 8 h= 7 x= 1 y= 4 dx= 9 dy= 0 ascent= 6 len= 7 + Font Bounding box w=10 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_u8glib_4[1660] U8G_SECTION(".progmem.u8g_font_u8glib_4") = { + 1,10,6,0,255,4,0,233,1,198,32,255,255,6,255,5, + 255,2,0,32,2,20,36,128,128,0,128,5,50,66,160,160, + 1,85,101,80,248,80,248,80,1,86,102,32,120,224,56,240, + 32,2,68,84,144,32,64,144,2,69,85,64,160,64,160,240, + 5,18,34,128,128,1,38,54,64,128,128,128,128,64,1,38, + 54,128,64,64,64,64,128,3,34,50,192,192,2,51,67,64, + 224,64,1,18,34,128,128,3,49,65,224,2,17,33,128,2, + 68,84,16,32,64,128,2,52,68,224,160,160,224,2,36,52, + 64,192,64,64,2,52,68,224,32,64,224,2,52,68,224,64, + 32,224,2,52,68,128,160,224,32,2,52,68,224,192,32,224, + 2,52,68,224,128,224,224,2,52,68,224,32,64,128,2,52, + 68,224,224,160,224,2,52,68,224,224,32,224,2,19,35,128, + 0,128,1,20,36,128,0,128,128,2,35,51,64,128,64,2, + 51,67,224,0,224,2,35,51,128,64,128,2,36,52,192,64, + 0,64,2,68,84,240,176,128,240,2,68,84,96,144,240,144, + 2,68,84,224,240,144,240,2,52,68,96,128,128,96,2,68, + 84,224,144,144,224,2,68,84,240,224,128,240,2,68,84,240, + 128,224,128,2,68,84,240,128,176,240,2,68,84,144,240,144, + 144,2,20,36,128,128,128,128,2,52,68,224,32,32,192,2, + 68,84,144,224,144,144,2,52,68,128,128,128,224,2,84,100, + 136,216,168,136,2,68,84,144,208,176,144,2,68,84,96,144, + 144,96,2,68,84,224,144,224,128,2,84,100,240,144,144,232, + 2,68,84,240,240,160,144,2,68,84,112,192,48,224,2,52, + 68,224,64,64,64,2,68,84,144,144,144,240,2,68,84,144, + 144,144,96,2,84,100,136,168,168,80,2,52,68,160,64,64, + 160,2,68,84,144,240,16,240,2,68,84,240,32,64,240,1, + 38,54,192,128,128,128,128,192,2,68,84,128,64,32,16,1, + 38,54,192,64,64,64,64,192,5,50,66,64,160,1,65,81, + 240,5,34,50,128,64,2,51,67,96,160,224,2,52,68,128, + 192,160,192,2,35,51,192,128,192,2,52,68,32,96,160,96, + 2,51,67,224,192,224,2,52,68,32,64,224,64,1,52,68, + 224,224,32,96,2,52,68,128,192,160,160,2,20,36,128,0, + 128,128,1,37,53,64,0,64,64,128,2,52,68,128,160,192, + 160,2,20,36,128,128,128,128,2,83,99,208,168,168,2,51, + 67,192,160,160,2,51,67,224,160,224,1,52,68,192,160,192, + 128,1,52,68,96,160,96,32,2,35,51,192,128,128,2,51, + 67,96,64,192,2,52,68,64,224,64,96,2,51,67,160,160, + 224,2,51,67,160,160,64,2,83,99,136,168,80,2,51,67, + 160,64,160,1,52,68,160,224,32,224,2,51,67,192,64,96, + 1,54,70,96,64,128,128,64,96,1,22,38,128,128,128,128, + 128,128,1,54,70,192,64,32,32,64,192,5,66,82,80,160, + 2,69,85,240,144,144,144,240,2,0,32,2,53,69,160,0, + 160,160,224,2,54,70,64,128,0,224,192,224,2,54,70,64, + 160,0,96,160,224,2,53,69,160,0,96,160,224,2,54,70, + 64,32,0,96,160,224,2,54,70,64,160,64,96,160,224,1, + 36,52,192,128,192,192,2,54,70,64,160,0,224,192,224,2, + 53,69,160,0,224,192,224,2,54,70,64,32,0,224,192,224, + 2,52,68,160,0,64,64,2,53,149,64,160,0,64,64,2, + 37,53,128,64,0,64,64,2,69,85,144,96,144,240,144,2, + 70,86,96,144,96,144,240,144,2,70,86,32,64,240,224,128, + 240,2,83,99,120,176,248,2,132,148,31,46,120,143,2,54, + 70,64,160,0,224,160,224,2,53,69,160,0,224,160,224,2, + 54,70,128,64,0,224,160,224,2,54,70,64,160,0,160,160, + 224,2,54,70,64,32,0,160,160,224,1,54,70,160,0,160, + 224,32,96,2,69,85,144,96,144,144,96,2,69,85,144,0, + 144,144,240,2,0,64,2,0,64,2,0,64,2,0,64,2, + 0,64,2,54,70,64,128,0,96,160,224,2,37,53,64,128, + 0,128,128,2,54,70,32,64,0,224,160,224,2,54,70,32, + 64,0,160,160,224,2,70,70,80,160,0,192,160,160,2,70, + 86,80,160,144,208,176,144,2,21,37,128,128,0,128,128,1, + 54,70,224,128,224,224,32,224,6,65,81,144,1,119,151,124, + 130,186,162,186,130,124,2,0,144,2,51,67,96,192,96,3, + 50,66,224,32,2,0,144,1,119,151,124,130,186,178,170,130, + 124,6,65,81,240,4,51,67,224,160,224,2,52,148,64,224, + 64,224,4,51,67,192,64,96,4,35,51,192,64,192,5,34, + 50,64,128,1,52,148,160,160,224,128,1,101,117,124,244,116, + 20,20,19,17,49,128,2,0,144,4,35,51,192,64,64,4, + 51,67,224,160,224,2,51,67,192,96,192,1,118,134,196,72, + 80,40,78,132,1,118,134,196,72,80,44,68,134,1,118,150, + 196,72,208,40,78,132,2,0,64,2,70,86,64,32,96,144, + 240,144,2,70,86,32,64,96,144,240,144,2,70,86,96,144, + 96,144,240,144,2,70,86,80,160,96,144,240,144,2,69,85, + 144,96,144,240,144,2,70,86,96,0,96,144,240,144,2,132, + 148,31,46,120,143,1,69,85,240,128,240,32,96,2,70,86, + 64,32,240,224,128,240,2,70,86,32,64,240,224,128,240,2, + 70,86,96,144,240,224,128,240,2,70,86,144,0,240,224,128, + 240,2,38,54,128,64,128,128,128,128,2,38,54,64,128,64, + 64,64,64,2,54,70,64,160,64,64,64,64,2,53,69,160, + 64,64,64,64,2,84,100,112,232,72,112,2,70,86,80,160, + 0,144,208,176,2,70,86,64,32,96,144,144,96,2,70,86, + 32,64,96,144,144,96,2,70,86,96,144,96,144,144,96,2, + 70,86,80,160,96,144,144,96,2,69,85,144,96,144,144,96, + 2,51,67,160,64,160,1,102,118,4,56,88,104,112,128,2, + 70,86,64,32,144,144,144,240,2,70,86,32,64,144,144,144, + 240,2,70,86,96,144,0,144,144,240,2,69,85,144,0,144, + 144,240,2,70,86,32,64,144,240,16,240,1,70,86,128,224, + 144,144,224,128,1,53,69,192,192,160,192,128,2,54,70,64, + 32,0,96,160,224,2,54,70,64,128,0,96,160,224,2,54, + 70,64,160,0,96,160,224,2,70,70,80,160,0,96,160,224, + 2,53,69,160,0,96,160,224,2,54,70,64,160,64,96,160, + 224,2,83,99,120,176,248,1,36,52,192,128,192,192,2,54, + 70,64,32,0,224,192,224,2,54,70,64,128,0,224,192,224, + 2,54,70,64,160,0,224,192,224,2,53,69,160,0,224,192, + 224,2,37,53,128,64,0,64,64,2,37,53,64,128,0,128, + 128,2,53,69,64,160,0,64,64,2,52,68,160,0,64,64, + 2,70,86,96,96,16,112,144,96,2,70,70,80,160,0,192, + 160,160,2,54,70,64,32,0,224,160,224,2,54,70,64,128, + 0,224,160,224,2,54,70,64,160,0,224,160,224,2,70,70, + 80,160,0,224,160,224,2,53,69,160,0,224,160,224,2,53, + 69,64,0,224,0,64,1,85,101,8,112,80,112,128,2,54, + 70,64,32,0,160,160,224,2,54,70,64,128,0,160,160,224, + 2,54,70,64,160,0,160,160,224,2,53,69,160,0,160,160, + 224,1,55,71,64,128,0,160,224,32,96,1,53,69,128,192, + 160,192,128,1,54,150,160,0,160,224,32,96}; +/* + Fontname: u8glib_4 + Copyright: public domain + Capital A Height: 4, '1' Height: 4 + Calculated Max Values w= 5 h= 6 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w=10 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[664] U8G_SECTION(".progmem.u8g_font_u8glib_4r") = { + 1,10,6,0,255,4,0,233,1,198,32,127,255,5,255,5, + 255,2,0,32,2,20,36,128,128,0,128,5,50,66,160,160, + 1,85,101,80,248,80,248,80,1,86,102,32,120,224,56,240, + 32,2,68,84,144,32,64,144,2,69,85,64,160,64,160,240, + 5,18,34,128,128,1,38,54,64,128,128,128,128,64,1,38, + 54,128,64,64,64,64,128,3,34,50,192,192,2,51,67,64, + 224,64,1,18,34,128,128,3,49,65,224,2,17,33,128,2, + 68,84,16,32,64,128,2,52,68,224,160,160,224,2,36,52, + 64,192,64,64,2,52,68,224,32,64,224,2,52,68,224,64, + 32,224,2,52,68,128,160,224,32,2,52,68,224,192,32,224, + 2,52,68,224,128,224,224,2,52,68,224,32,64,128,2,52, + 68,224,224,160,224,2,52,68,224,224,32,224,2,19,35,128, + 0,128,1,20,36,128,0,128,128,2,35,51,64,128,64,2, + 51,67,224,0,224,2,35,51,128,64,128,2,36,52,192,64, + 0,64,2,68,84,240,176,128,240,2,68,84,96,144,240,144, + 2,68,84,224,240,144,240,2,52,68,96,128,128,96,2,68, + 84,224,144,144,224,2,68,84,240,224,128,240,2,68,84,240, + 128,224,128,2,68,84,240,128,176,240,2,68,84,144,240,144, + 144,2,20,36,128,128,128,128,2,52,68,224,32,32,192,2, + 68,84,144,224,144,144,2,52,68,128,128,128,224,2,84,100, + 136,216,168,136,2,68,84,144,208,176,144,2,68,84,96,144, + 144,96,2,68,84,224,144,224,128,2,84,100,240,144,144,232, + 2,68,84,240,240,160,144,2,68,84,112,192,48,224,2,52, + 68,224,64,64,64,2,68,84,144,144,144,240,2,68,84,144, + 144,144,96,2,84,100,136,168,168,80,2,52,68,160,64,64, + 160,2,68,84,144,240,16,240,2,68,84,240,32,64,240,1, + 38,54,192,128,128,128,128,192,2,68,84,128,64,32,16,1, + 38,54,192,64,64,64,64,192,5,50,66,64,160,1,65,81, + 240,5,34,50,128,64,2,51,67,96,160,224,2,52,68,128, + 192,160,192,2,35,51,192,128,192,2,52,68,32,96,160,96, + 2,51,67,224,192,224,2,52,68,32,64,224,64,1,52,68, + 224,224,32,96,2,52,68,128,192,160,160,2,20,36,128,0, + 128,128,1,37,53,64,0,64,64,128,2,52,68,128,160,192, + 160,2,20,36,128,128,128,128,2,83,99,208,168,168,2,51, + 67,192,160,160,2,51,67,224,160,224,1,52,68,192,160,192, + 128,1,52,68,96,160,96,32,2,35,51,192,128,128,2,51, + 67,96,64,192,2,52,68,64,224,64,96,2,51,67,160,160, + 224,2,51,67,160,160,64,2,83,99,136,168,80,2,51,67, + 160,64,160,1,52,68,160,224,32,224,2,51,67,192,64,96, + 1,54,70,96,64,128,128,64,96,1,22,38,128,128,128,128, + 128,128,1,54,70,192,64,32,32,64,192,5,66,82,80,160, + 2,69,85,240,144,144,144,240}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[4239] U8G_SECTION(".progmem.u8g_font_unifont_0_8") = { + 0,16,16,0,254,10,1,231,3,213,32,255,254,14,254,11, + 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,157,202,82,115, + 211,194,82,66,93,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,73,157,202,82,122,93,202,80,73,145,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,147,202,82,115,159,202,18,114, + 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,147,234, + 82,91,159,202,82,75,147,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,116,185,166,164,37,165,164,164,116,185,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,75,209,234,16,91,209,202, + 16,75,223,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 205,194,18,49,159,136,82,115,147,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,121,205,194,18,121,159,192,82,123,147,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,75,157,201,32,121, + 25,201,4,73,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,75,185,201,8,121,9,201,8,73,49,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,205,196,144,68,137,168,132,16, + 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,114,29,202, + 18,114,19,194,18,67,221,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,19,202,18,114,19,194,18,67,205,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,14,33,137,32,14,33,138, + 32,9,33,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 221,194,2,49,141,136,80,115,159,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,57,221,194,2,49,141,136,66,115,157,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,207,202,16,74, + 13,202,2,113,221,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,69,202,76,114,69,194,68,65,143,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,114,93,202,66,114,77,194,80,65, + 159,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,157,193, + 32,49,25,137,4,113,57,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,211,194,18,66,31,194,18,57,211,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,69,17,237,16,85,81,197, + 176,69,17,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, + 141,194,82,51,159,138,18,114,19,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,123,141,194,82,123,159,194,18,122,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,57,143,194,80,50, + 77,138,66,113,157,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,155,196,34,37,163,148,162,99,155,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,221,194,8,50,9,138,8,113, + 221,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,57,221,194, + 8,65,137,192,72,59,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,14,249,144,32,12,33,130,32,28,33,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,49,207,202,16,73,145,200, + 80,51,143,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, + 33,203,96,114,161,194,32,66,33,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,51,143,202,80,123,145,202,16,74,15,128, + 0,0,1,128,0,0,1,128,0,85,85,6,13,13,8,1, + 0,96,24,0,252,128,128,128,248,128,128,128,128,252,6,14, + 14,8,1,0,72,72,0,0,252,128,128,128,248,128,128,128, + 128,252,7,10,10,8,1,0,252,32,32,32,60,34,34,34, + 34,44,6,14,14,8,1,0,24,96,0,0,252,128,128,128, + 128,128,128,128,128,128,6,10,10,8,1,0,56,68,128,128, + 248,128,128,128,68,56,6,10,10,8,1,0,120,132,132,128, + 96,24,4,132,132,120,5,10,10,8,2,0,248,32,32,32, + 32,32,32,32,32,248,5,14,14,8,2,0,144,144,0,0, + 248,32,32,32,32,32,32,32,32,248,6,10,10,8,1,0, + 28,8,8,8,8,8,8,136,136,112,8,10,10,8,0,0, + 120,72,72,72,78,73,73,73,73,142,7,10,10,8,1,0, + 144,144,144,144,252,146,146,146,146,156,7,10,10,8,1,0, + 252,32,32,32,60,34,34,34,34,34,6,14,14,8,1,0, + 24,96,0,0,128,140,144,160,192,192,160,144,136,132,6,13, + 13,8,1,0,96,24,0,132,140,140,148,148,164,164,196,196, + 132,7,14,14,8,1,0,132,132,120,0,130,130,68,68,40, + 40,16,16,32,96,7,10,10,8,1,0,130,130,130,130,130, + 130,254,16,16,16,6,10,10,8,1,0,48,72,72,132,132, + 132,252,132,132,132,6,10,10,8,1,0,248,128,128,128,248, + 132,132,132,132,248,6,10,10,8,1,0,248,132,132,132,248, + 132,132,132,132,248,6,10,10,8,1,0,252,128,128,128,128, + 128,128,128,128,128,8,12,12,8,0,254,14,18,18,18,34, + 34,34,66,66,255,129,129,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,7,10,10,8,1,0,146,146,84, + 84,56,56,84,84,146,146,6,10,10,8,1,0,120,132,4, + 4,120,8,4,4,132,120,6,10,10,8,1,0,132,140,140, + 148,148,164,164,196,196,132,6,13,13,8,1,0,72,48,0, + 132,140,140,148,148,164,164,196,196,132,6,10,10,8,1,0, + 128,140,144,160,192,192,160,144,136,132,6,10,10,8,1,0, + 60,36,36,36,36,36,36,68,68,132,6,10,10,8,1,0, + 132,132,204,204,180,180,132,132,132,132,6,10,10,8,1,0, + 132,132,132,132,252,132,132,132,132,132,6,10,10,8,1,0, + 120,132,132,132,132,132,132,132,132,120,6,10,10,8,1,0, + 252,132,132,132,132,132,132,132,132,132,6,10,10,8,1,0, + 248,132,132,132,248,128,128,128,128,128,6,10,10,8,1,0, + 120,132,132,128,128,128,128,132,132,120,7,10,10,8,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,8,1,0, + 130,130,68,68,40,40,16,16,32,96,7,11,11,8,1,0, + 16,124,146,146,146,146,146,124,16,16,16,6,10,10,8,1, + 0,132,132,72,72,48,48,72,72,132,132,7,12,12,8,1, + 254,132,132,132,132,132,132,132,132,132,254,2,2,6,10,10, + 8,1,0,132,132,132,132,132,252,4,4,4,4,7,10,10, + 8,1,0,146,146,146,146,146,146,146,146,146,254,8,12,12, + 8,0,254,146,146,146,146,146,146,146,146,146,255,1,1,7, + 10,10,8,1,0,224,32,32,32,60,34,34,34,34,60,6, + 10,10,8,1,0,132,132,132,132,228,148,148,148,148,228,6, + 10,10,8,1,0,128,128,128,128,248,132,132,132,132,248,6, + 10,10,8,1,0,112,136,4,4,124,4,4,4,136,112,6, + 10,10,8,1,0,152,164,164,164,228,164,164,164,164,152,6, + 10,10,8,1,0,124,132,132,132,124,36,68,68,132,132,6, + 8,8,8,1,0,120,132,4,124,132,132,140,116,6,12,12, + 8,1,0,4,56,64,128,248,132,132,132,132,132,132,120,6, + 8,8,8,1,0,248,132,132,248,132,132,132,248,6,8,8, + 8,1,0,252,128,128,128,128,128,128,128,7,9,9,8,1, + 255,60,36,68,68,132,132,132,254,130,6,8,8,8,1,0, + 120,132,132,252,128,128,132,120,7,8,8,8,1,0,146,146, + 84,56,56,84,146,146,6,8,8,8,1,0,120,132,4,120, + 8,4,132,120,6,8,8,8,1,0,140,140,148,148,164,164, + 196,196,6,12,12,8,1,0,72,48,0,0,140,140,148,148, + 164,164,196,196,6,8,8,8,1,0,140,144,160,192,160,144, + 136,132,6,8,8,8,1,0,60,36,36,36,36,68,68,132, + 6,8,8,8,1,0,132,204,204,180,180,132,132,132,6,8, + 8,8,1,0,132,132,132,252,132,132,132,132,6,8,8,8, + 1,0,120,132,132,132,132,132,132,120,6,8,8,8,1,0, + 252,132,132,132,132,132,132,132,6,10,10,8,1,254,248,132, + 132,132,132,248,128,128,128,128,6,8,8,8,1,0,120,132, + 128,128,128,128,132,120,7,8,8,8,1,0,254,16,16,16, + 16,16,16,16,6,10,10,8,1,254,132,132,72,72,48,48, + 32,32,64,192,7,10,10,8,1,255,16,16,124,146,146,146, + 146,124,16,16,6,8,8,8,1,0,132,132,72,48,48,72, + 132,132,7,10,10,8,1,254,132,132,132,132,132,132,132,254, + 2,2,6,8,8,8,1,0,132,132,132,132,252,4,4,4, + 7,8,8,8,1,0,146,146,146,146,146,146,146,254,8,10, + 10,8,0,254,146,146,146,146,146,146,146,255,1,1,7,8, + 8,8,1,0,224,32,32,60,34,34,34,60,6,8,8,8, + 1,0,132,132,132,228,148,148,148,228,6,8,8,8,1,0, + 128,128,128,248,132,132,132,248,6,8,8,8,1,0,112,136, + 4,124,4,4,136,112,6,8,8,8,1,0,152,164,164,228, + 164,164,164,152,6,8,8,8,1,0,124,132,132,132,124,36, + 68,132,6,12,12,8,1,0,96,24,0,0,120,132,132,252, + 128,128,132,120,6,12,12,8,1,0,72,72,0,0,120,132, + 132,252,128,128,132,120,6,11,11,8,1,255,64,64,240,64, + 64,120,68,68,68,68,24,6,12,12,8,1,0,24,96,0, + 0,252,128,128,128,128,128,128,128,6,8,8,8,1,0,56, + 68,128,248,128,128,68,56,6,8,8,8,1,0,120,132,128, + 96,24,4,132,120,5,11,11,8,2,0,32,32,0,96,32, + 32,32,32,32,32,248,5,11,11,8,2,0,144,144,0,96, + 32,32,32,32,32,32,248,5,13,13,8,1,254,8,8,0, + 24,8,8,8,8,8,8,8,144,96,8,8,8,8,0,0, + 120,72,72,78,73,73,73,142,7,8,8,8,1,0,144,144, + 144,252,146,146,146,156,6,10,10,8,1,0,64,64,240,64, + 64,88,100,68,68,68,6,12,12,8,1,0,24,96,0,0, + 140,144,160,192,160,144,136,132,6,12,12,8,1,0,96,24, + 0,0,140,140,148,148,164,164,196,196,6,15,15,8,1,254, + 132,132,120,0,0,132,132,72,72,48,48,32,32,64,192,5, + 10,10,8,2,254,136,136,136,136,136,136,248,32,32,32}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 8, '1' Height: 7 + Calculated Max Values w=16 h=16 x= 9 y=11 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 2 + X Font ascent =13 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[3934] U8G_SECTION(".progmem.u8g_font_unifont_12_13") = { + 0,16,16,0,254,8,4,93,5,214,0,255,2,14,254,13, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,85,85,128, + 0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128, + 4,42,13,170,12,53,245,128,0,0,1,170,170,16,16,32, + 16,0,254,85,85,128,0,0,1,128,0,0,1,128,0,0, + 1,128,0,0,1,142,0,14,25,135,224,0,1,128,0,0, + 1,170,170,16,16,32,16,0,254,85,85,128,0,0,1,128, + 0,0,1,128,0,0,25,128,36,0,69,129,68,1,73,158, + 240,0,1,128,0,0,1,170,170,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,12,14,28,16,1,255,1,80,225,80,33,160,17,0,17, + 0,9,0,8,0,4,224,4,128,2,128,3,0,3,0,2, + 0,2,0,11,15,30,16,1,255,0,64,0,128,225,0,33, + 64,16,128,17,32,8,192,8,0,4,224,4,128,2,128,3, + 0,3,0,2,0,2,0,12,7,14,16,2,3,1,144,58, + 96,202,192,17,64,16,64,32,128,31,0,5,10,10,8,1, + 1,8,8,80,16,32,32,64,64,136,160,7,10,10,8,1, + 1,8,8,80,16,32,32,64,66,136,160,10,10,20,16,3, + 2,48,0,48,0,6,0,9,0,7,0,1,0,14,0,240, + 128,0,64,0,64,2,4,4,8,3,3,64,128,192,192,5, + 4,4,8,1,2,24,48,64,128,12,4,8,16,3,1,112, + 0,136,0,136,48,127,192,7,11,11,16,2,0,24,32,32, + 24,32,76,82,98,36,88,128,6,4,4,8,2,9,24,36, + 228,88,9,6,12,16,4,7,3,0,4,0,39,128,56,0, + 64,0,128,0,10,5,10,16,3,8,252,64,16,64,32,128, + 71,0,64,0,11,4,8,16,2,9,24,32,36,32,228,64, + 89,128,10,4,8,16,3,8,0,64,254,64,1,64,0,128, + 7,4,4,16,4,9,64,92,98,252,8,6,6,16,3,8, + 40,40,40,104,128,127,3,5,5,16,6,8,32,0,32,32, + 192,4,2,2,16,6,10,48,192,5,5,5,16,5,8,16, + 40,48,96,144,4,13,13,16,6,254,240,0,0,0,0,0, + 0,0,0,0,0,48,192,2,5,5,8,3,2,64,128,192, + 0,192,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,3,3,3,16,7,0, + 64,0,160,7,9,9,8,1,2,124,130,128,64,32,16,16, + 0,16,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,4,5,5,8,2,2,112,128,240,64, + 128,7,10,10,8,1,3,2,124,128,16,16,16,16,16,16, + 16,3,11,11,8,2,3,96,128,96,128,32,32,32,32,32, + 32,32,6,13,13,8,1,255,24,32,24,32,0,24,36,36, + 60,4,8,144,96,3,12,12,8,3,254,64,64,64,64,64, + 64,64,0,96,128,96,128,6,11,11,8,1,255,48,64,48, + 64,0,140,144,144,140,132,120,1,8,8,8,4,3,128,128, + 128,128,128,128,128,128,6,7,7,8,1,0,8,68,132,120, + 0,0,16,5,8,8,8,2,3,144,0,0,96,144,136,136, + 112,6,7,7,8,1,3,40,0,0,8,68,132,120,6,9, + 9,8,1,3,32,0,80,0,0,8,68,132,120,6,8,8, + 8,1,254,252,32,64,128,144,128,68,56,6,8,8,8,1, + 254,252,32,64,128,128,128,68,56,6,11,11,8,1,254,32, + 0,0,252,32,64,128,128,128,68,56,6,5,5,8,1,3, + 16,8,4,132,248,6,7,7,8,1,3,64,0,16,8,4, + 132,248,6,7,7,8,1,255,8,4,4,4,8,144,96,6, + 10,10,8,1,255,32,0,0,8,4,4,4,8,144,96,7, + 7,7,8,1,255,2,42,42,188,144,144,96,7,12,12,8, + 1,255,16,0,36,0,0,2,42,42,188,144,144,96,7,6, + 6,8,1,0,12,50,156,144,144,96,7,9,9,8,1,0, + 8,0,0,12,50,156,144,144,96,6,8,8,8,1,3,64, + 64,64,64,88,100,68,248,6,8,8,8,1,3,64,72,64, + 64,88,100,68,248,6,9,9,8,1,254,48,72,64,56,64, + 128,128,132,120,6,12,12,8,1,254,16,0,0,48,72,64, + 56,64,128,128,132,120,7,9,9,8,0,3,80,4,8,16, + 32,64,60,130,126,7,12,12,8,0,255,4,8,16,32,64, + 60,130,126,0,40,0,16,6,10,10,8,1,255,64,160,160, + 8,148,144,136,132,132,120,6,9,9,8,1,255,160,0,8, + 148,144,136,132,132,120,6,10,10,8,1,255,64,0,160,8, + 148,144,136,132,132,120,8,1,1,8,0,3,255,6,8,8, + 8,1,3,16,0,12,20,12,132,132,120,6,10,10,8,1, + 0,72,0,0,56,36,20,76,132,136,112,6,8,8,8,1, + 3,4,20,36,20,68,132,132,120,6,11,11,8,1,0,4, + 4,4,4,4,4,68,132,132,136,120,5,8,8,8,2,254, + 112,24,120,128,128,128,128,128,6,9,9,8,1,0,32,0, + 0,8,68,132,132,136,112,10,9,18,16,1,1,4,0,3, + 0,6,128,10,64,10,64,6,64,25,128,96,0,128,0,6, + 8,8,8,1,255,24,36,36,60,4,8,144,96,6,7,7, + 8,1,255,8,148,144,136,132,132,120,6,8,8,8,1,254, + 8,148,144,136,132,120,0,80,4,4,4,8,2,9,48,192, + 48,192,5,5,5,8,2,8,24,24,200,80,224,4,4,4, + 8,2,0,32,192,48,192,4,2,2,8,2,9,48,192,4, + 6,6,8,2,6,64,160,160,112,64,128,4,2,2,8,2, + 254,48,192,5,4,4,8,1,7,8,40,176,192,4,4,4, + 8,2,7,96,144,144,96,7,3,3,8,1,9,2,124,128, + 3,4,4,8,2,10,96,128,96,128,3,4,4,8,2,254, + 96,128,96,128,2,3,3,16,9,254,128,64,64,5,5,5, + 16,5,9,8,16,32,224,96,4,3,3,16,6,9,144,144, + 96,4,1,1,16,6,10,240,5,4,4,16,5,9,136,80, + 32,32,5,4,4,16,5,9,32,32,80,136,2,2,2,16, + 7,0,192,192,5,5,5,16,5,9,96,224,32,16,8,4, + 4,4,16,6,9,144,96,96,144,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,3,3,3, + 8,2,5,64,224,64,4,9,9,8,2,2,128,128,64,64, + 32,32,16,16,16,5,9,9,8,2,2,136,144,96,64,32, + 32,16,16,16,7,9,9,8,1,2,146,164,120,64,32,32, + 16,16,16,6,9,9,8,1,2,8,16,32,64,48,64,128, + 132,120,6,9,9,8,1,2,48,72,72,132,132,132,132,72, + 48,7,9,9,8,1,2,128,120,8,8,4,4,4,2,2, + 7,9,9,8,1,2,130,130,68,68,40,40,16,16,16,7, + 9,9,8,1,2,16,16,16,40,40,68,68,130,130,7,9, + 9,8,1,2,48,72,136,152,104,4,4,2,2,5,10,10, + 8,1,2,8,8,144,144,32,32,72,72,128,128,2,4,4, + 8,3,1,192,192,64,128,2,4,4,8,3,7,192,192,64, + 128,7,6,6,8,1,3,16,16,254,56,108,68,6,4,4, + 8,1,3,8,68,132,120,8,7,7,16,1,3,6,9,9, + 7,65,130,124,1,4,4,8,4,7,128,128,128,128,5,11, + 11,8,2,3,16,40,120,128,32,32,32,32,32,32,32,6, + 11,11,8,1,3,12,16,76,176,0,16,16,16,16,16,16, + 6,12,12,8,1,254,16,16,16,16,16,16,16,0,12,16, + 76,176,3,4,4,8,2,10,96,128,96,128,5,11,11,8, + 2,3,24,32,24,32,128,128,128,128,128,128,128,7,13,13, + 8,1,255,6,8,6,8,0,24,36,36,60,4,8,144,96, + 7,13,13,8,1,255,102,104,38,72,128,24,36,36,60,4, + 8,144,96,7,11,11,8,1,255,6,8,6,8,0,140,144, + 144,140,132,120,6,9,9,8,1,3,64,64,112,112,0,8, + 68,132,120,6,9,9,8,1,3,32,0,32,0,0,8,68, + 132,120,6,8,8,8,1,255,8,68,132,120,0,16,0,16, + 6,10,10,8,1,0,40,0,0,8,68,132,120,16,40,16, + 6,9,9,8,1,3,80,0,32,0,0,8,68,132,120,6, + 8,8,8,1,255,8,68,132,120,0,40,0,16,6,9,9, + 8,1,3,80,0,80,0,0,8,68,132,120,6,8,8,8, + 1,255,8,68,132,120,0,40,0,40,6,13,13,8,1,254, + 48,64,48,64,0,252,32,64,128,128,128,68,56,6,13,13, + 8,1,254,32,0,32,0,0,252,32,64,128,128,128,68,56, + 6,8,8,8,1,254,252,32,64,128,168,128,68,56,6,8, + 8,8,1,254,252,32,64,144,128,144,68,56,6,13,13,8, + 1,254,32,0,72,0,0,252,32,64,128,128,128,68,56,6, + 8,8,8,1,254,252,64,128,168,128,144,68,56,6,8,8, + 8,1,254,252,64,128,168,128,168,68,56,6,10,10,8,1, + 3,64,64,112,112,0,16,8,4,132,248,6,8,8,8,1, + 0,16,8,4,132,248,16,40,16,6,7,7,8,1,1,16, + 8,4,132,248,0,16,6,12,12,8,1,1,64,64,112,112, + 0,16,8,4,132,248,0,16,6,8,8,8,1,3,80,0, + 0,16,8,4,132,248,6,7,7,8,1,1,16,8,4,132, + 248,0,80,6,9,9,8,1,3,32,0,80,0,16,8,4, + 132,248,6,9,9,8,1,3,80,0,32,0,16,8,4,132, + 248,6,9,9,8,1,3,80,0,80,0,16,8,4,132,248, + 6,13,13,8,1,255,16,16,28,28,0,0,8,4,4,4, + 8,144,96,7,13,13,8,1,255,34,20,8,8,0,0,8, + 4,4,4,8,144,96,6,8,8,8,1,254,8,4,4,4, + 8,152,116,8,6,7,7,8,1,255,8,4,4,4,8,144, + 100,7,8,8,8,1,254,16,8,8,8,16,144,106,4,6, + 7,7,8,1,255,8,4,4,36,8,144,100,6,10,10,8, + 1,255,36,0,0,8,4,4,4,8,144,96,6,12,12,8, + 1,255,16,0,40,0,0,8,4,4,4,8,144,96,6,12, + 12,8,1,255,36,0,36,0,0,8,4,4,4,8,144,96, + 7,10,10,8,1,0,8,0,0,2,42,42,188,144,148,96, + 7,8,8,8,1,255,2,42,42,188,160,170,64,4,7,13, + 13,8,1,255,16,0,36,0,0,2,42,42,188,160,170,64, + 4,7,6,6,8,1,0,12,50,156,160,170,64,7,11,11, + 8,1,0,16,0,36,0,0,12,50,156,144,144,96,6,8, + 8,8,1,3,72,64,84,64,88,100,68,248,6,14,14,8, + 1,254,32,0,72,0,0,48,72,64,56,64,128,128,132,120, + 6,6,6,8,1,3,12,20,12,132,132,120,6,8,8,8, + 1,1,12,20,12,132,132,120,0,16,6,11,11,8,1,1, + 8,0,0,12,20,12,132,132,120,0,16,6,10,10,8,1, + 3,16,0,36,0,12,20,12,132,132,120,6,10,10,8,1, + 255,12,20,12,132,132,120,0,72,0,32,6,10,10,8,1, + 3,20,0,20,0,12,20,12,132,132,120,6,10,10,8,1, + 0,8,0,0,56,36,20,76,132,136,112,6,12,12,8,1, + 0,32,0,72,0,0,56,36,20,76,132,136,112,7,8,8, + 8,0,3,4,8,16,32,64,60,130,126,14,8,16,16,1, + 3,0,48,0,192,3,0,12,0,16,0,15,248,128,4,127, + 248,7,8,8,8,0,3,4,12,26,36,64,60,130,126,6, + 10,10,8,1,3,16,0,4,20,36,20,68,132,132,120,6, + 11,11,8,1,3,32,0,80,4,20,36,20,68,132,132,120, + 6,12,12,8,1,255,4,20,36,20,68,132,132,120,0,40, + 0,16,7,10,10,8,0,3,8,16,36,72,16,32,64,60, + 130,126,7,10,10,8,0,3,8,16,36,76,26,36,64,60, + 130,126,7,10,10,8,0,3,80,6,24,98,12,48,64,60, + 130,126,7,12,12,8,0,1,8,16,36,72,16,32,64,60, + 130,126,0,40,7,14,14,8,0,255,8,16,36,72,16,32, + 64,60,130,126,0,16,0,16,7,11,11,8,0,3,64,0, + 166,24,98,12,48,64,60,130,126,7,14,14,8,1,0,34, + 20,8,8,0,4,4,4,4,68,132,132,136,120,6,13,13, + 8,1,0,4,0,4,4,4,4,4,4,68,132,132,136,120, + 7,14,14,8,1,0,8,0,18,0,4,4,4,4,4,68, + 132,132,136,120,6,13,13,8,1,254,4,4,4,4,4,4, + 68,132,120,0,40,0,16,6,11,11,8,1,254,16,0,0, + 8,68,132,132,136,112,0,16,6,6,6,8,1,0,8,68, + 132,132,136,112,6,12,12,8,1,0,32,32,56,56,0,0, + 8,68,132,132,136,112,6,11,11,8,1,254,16,0,0,8, + 68,132,132,136,120,20,8,6,11,11,8,1,0,32,0,72, + 0,0,8,68,132,132,136,112,6,6,6,8,1,2,32,88, + 84,52,72,128,6,11,11,8,1,254,32,0,0,252,64,128, + 168,128,144,68,56,4,10,10,8,2,3,96,128,96,128,0, + 64,96,144,144,240,6,3,3,8,1,2,32,92,128,6,8, + 8,8,1,2,48,64,48,64,0,32,92,128,6,6,6,8, + 1,2,80,0,0,32,92,128,6,8,8,8,1,255,24,36, + 36,28,68,164,72,240,6,8,8,8,1,255,24,36,36,60, + 4,56,144,96,6,13,13,8,1,255,68,40,16,16,0,24, + 36,36,60,4,8,144,96,6,14,14,8,1,255,32,80,80, + 56,32,64,152,36,36,60,4,8,144,96,6,12,12,8,1, + 255,16,8,8,0,24,36,36,60,4,8,144,96,6,12,12, + 8,1,255,16,40,68,0,24,36,36,60,4,8,144,96,6, + 11,11,8,1,255,40,0,0,24,36,36,60,4,8,144,96, + 6,13,13,8,1,255,16,0,36,0,0,24,36,36,60,4, + 8,144,96,6,7,7,8,1,255,8,148,144,136,132,132,120, + 7,7,7,8,0,255,4,42,104,164,34,34,28,6,12,12, + 8,1,255,136,80,32,32,0,8,148,144,136,132,132,120,6, + 11,11,8,1,255,16,0,0,24,36,36,60,4,8,144,96, + 6,9,9,8,1,254,24,164,144,136,112,0,32,0,32,6, + 9,9,8,1,254,24,164,144,136,112,0,80,0,32,7,6, + 6,8,1,255,16,40,32,64,128,254,7,10,10,8,1,255, + 96,128,96,128,16,40,32,64,128,254,4,1,1,8,2,3, + 240,4,5,5,8,2,3,64,96,144,144,240,11,5,10,16, + 3,9,16,64,18,224,127,224,128,0,254,0,10,5,10,16, + 3,9,18,64,17,0,127,0,128,0,254,0,6,4,4,16, + 5,9,8,20,60,192,5,5,5,16,4,9,136,72,48,16, + 48,8,5,5,16,3,9,252,32,72,33,30,3,3,3,16, + 4,8,160,0,128,9,4,8,16,4,9,18,128,159,128,144, + 0,96,0,16,16,32,16,0,254,85,85,128,0,1,193,134, + 48,11,233,140,24,16,5,144,4,16,5,140,24,11,233,134, + 48,1,193,128,0,0,1,170,170,15,15,30,16,1,254,1, + 0,2,128,63,248,40,40,48,24,35,136,100,76,164,74,100, + 76,35,136,48,24,40,40,63,248,2,128,1,0,3,4,4, + 16,6,9,96,160,160,96,4,5,5,16,6,9,96,144,144, + 144,96,6,3,3,16,5,10,252,48,64,3,5,5,16,6, + 9,96,224,128,128,64,9,4,8,16,4,254,18,128,159,128, + 144,0,96,0,6,2,2,16,5,10,12,240,5,4,4,8, + 2,9,24,24,16,224,7,4,4,8,1,9,32,64,128,254, + 7,4,4,16,3,9,32,64,128,254,6,4,4,16,5,9, + 16,132,132,124,15,15,30,16,1,254,1,0,2,128,5,64, + 10,160,21,80,42,168,84,84,42,168,42,168,42,168,43,168, + 40,40,47,232,96,12,255,254,5,5,5,16,5,9,32,80, + 136,80,32,5,5,5,16,5,254,32,80,136,80,32,2,2, + 2,16,7,11,192,192,2,4,4,16,7,254,192,128,128,64, + 6,9,9,8,1,3,16,40,68,0,16,8,4,132,248,7, + 11,11,8,1,255,8,20,34,0,8,4,4,4,8,144,96, + 3,3,3,8,2,5,64,224,64,4,9,9,8,2,2,128, + 128,64,64,32,32,16,16,16,5,9,9,8,2,2,136,144, + 96,64,32,32,16,16,16,7,9,9,8,1,2,146,164,120, + 64,32,32,16,16,16,6,9,9,8,1,2,48,72,192,228, + 88,64,32,32,32,7,9,9,8,1,1,16,16,40,40,68, + 68,146,170,198,6,8,8,8,1,2,56,68,64,64,48,12, + 48,192,7,9,9,8,1,2,130,130,68,68,40,40,16,16, + 16,7,9,9,8,1,2,16,16,16,40,40,68,68,130,130, + 7,9,9,8,1,2,48,72,136,152,104,4,4,2,2,7, + 12,12,8,1,0,16,0,36,0,0,2,42,42,188,144,148, + 96,7,9,9,8,1,0,8,0,0,12,50,156,144,148,96, + 6,12,12,8,1,254,16,0,0,48,72,64,56,64,144,128, + 132,120,4,10,10,8,2,254,112,128,240,64,128,0,80,80, + 80,80,6,8,8,8,1,254,56,12,124,128,148,148,148,148, + 10,12,24,16,1,1,4,0,10,0,17,0,4,0,3,0, + 6,128,10,64,10,64,6,64,25,128,96,0,128,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 3, '1' Height: 12 + Calculated Max Values w=16 h=16 x=12 y=11 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent=-2 + X Font ascent =12 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[6498] U8G_SECTION(".progmem.u8g_font_unifont_18_19") = { + 0,16,16,0,254,3,7,129,10,5,0,255,254,14,254,12, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,8,4,4,16,4,9,152,91,35, + 28,2,2,2,16,7,11,192,192,2,5,5,16,12,3,192, + 192,0,192,192,14,15,30,16,2,255,32,0,31,0,0,128, + 57,252,68,192,4,192,12,192,56,192,8,192,135,192,134,192, + 78,192,60,192,0,192,0,64,15,12,24,16,1,255,57,254, + 68,192,4,192,12,192,56,192,8,192,135,192,134,192,78,192, + 60,192,0,192,0,64,15,12,24,16,1,255,57,254,68,204, + 4,204,12,204,56,204,8,204,135,204,134,204,78,204,60,204, + 0,204,0,68,16,13,26,16,0,254,255,255,0,192,0,192, + 15,192,24,0,24,0,15,224,0,48,3,48,5,176,7,224, + 0,64,0,32,16,16,32,16,0,254,3,192,6,32,1,0, + 255,255,0,192,0,192,15,192,24,0,24,0,15,224,0,48, + 3,48,5,176,7,224,0,64,0,32,16,12,24,16,0,255, + 255,255,1,128,0,192,0,192,1,192,15,128,65,128,64,192, + 32,192,16,192,9,192,7,128,16,12,24,16,0,255,255,255, + 1,128,0,192,0,192,1,192,15,156,65,178,64,226,32,194, + 16,198,9,196,7,128,16,13,26,16,0,254,255,255,1,128, + 57,128,101,152,3,152,7,248,31,136,57,136,33,156,1,184, + 1,160,0,160,0,30,16,12,24,16,0,255,255,255,0,32, + 0,32,56,32,116,248,99,204,99,12,48,12,16,120,12,192, + 2,128,0,124,16,16,32,16,0,254,0,152,0,112,0,0, + 255,255,12,48,12,48,12,48,12,48,12,96,4,0,2,0, + 1,128,0,96,0,16,0,24,0,24,16,16,32,16,0,254, + 16,0,15,224,0,16,255,255,12,48,12,48,12,48,12,48, + 12,96,4,0,2,0,1,128,0,96,0,16,0,24,0,24, + 16,13,26,16,0,254,255,255,12,48,12,48,12,48,12,48, + 12,96,4,0,2,0,1,128,0,96,0,16,0,24,0,24, + 16,16,32,16,0,254,15,0,0,128,0,64,255,255,12,48, + 12,48,12,48,12,48,12,96,4,0,2,0,1,128,0,96, + 0,16,0,24,0,24,15,15,30,16,1,255,0,76,0,60, + 0,0,57,254,68,204,4,204,12,204,56,204,8,204,135,204, + 134,204,78,204,60,204,0,204,0,68,15,15,30,16,1,255, + 2,0,1,240,0,8,57,254,68,204,4,204,12,204,56,204, + 8,204,135,204,134,204,78,204,60,204,0,204,0,68,15,15, + 30,16,1,255,1,192,0,32,0,16,57,254,68,204,4,204, + 12,204,56,204,8,204,135,204,134,204,78,204,60,204,0,204, + 0,68,15,15,30,16,1,255,0,224,1,208,0,40,57,254, + 68,204,4,204,12,204,56,204,8,204,135,204,134,204,78,204, + 60,204,0,204,0,68,16,12,24,16,0,255,255,255,1,128, + 1,128,29,128,51,224,35,144,39,152,29,152,1,152,1,152, + 1,128,0,128,16,12,24,16,0,255,255,255,8,24,8,24, + 9,216,59,56,58,24,18,56,17,216,8,24,6,24,1,152, + 0,8,16,12,24,16,0,255,255,255,1,152,1,152,1,152, + 1,152,7,152,3,152,1,152,0,152,0,24,0,24,0,8, + 16,12,24,16,0,255,255,255,12,24,12,24,7,216,2,24, + 4,24,4,56,4,120,3,216,0,24,0,24,0,8,16,11, + 22,16,0,0,255,255,0,96,0,96,15,224,24,0,24,4, + 15,206,0,100,16,96,8,96,7,192,16,12,24,16,0,255, + 255,255,0,24,0,24,0,24,31,248,3,24,6,56,6,120, + 3,216,0,24,0,24,0,8,16,13,26,16,0,254,255,255, + 0,16,0,16,60,120,112,228,96,196,32,68,31,44,12,24, + 24,56,24,100,7,134,0,6,16,12,24,16,0,255,255,255, + 0,24,0,24,0,24,3,248,17,152,8,216,8,216,7,152, + 0,24,0,24,0,8,16,12,24,16,0,255,255,255,3,24, + 3,24,31,24,48,24,48,24,31,248,1,24,13,24,22,24, + 29,24,0,136,16,12,24,16,0,255,255,255,0,24,0,24, + 7,24,5,152,33,184,33,248,33,216,19,152,15,24,0,24, + 0,8,16,11,22,16,0,0,255,255,0,192,0,192,0,192, + 7,192,12,0,24,0,24,0,24,0,12,16,7,224,16,12, + 24,16,0,255,255,255,1,128,1,128,1,128,3,128,7,96, + 12,16,8,24,8,24,8,56,4,112,3,224,16,11,22,16, + 0,0,255,255,0,24,0,24,3,248,6,0,6,0,3,240, + 0,24,4,24,2,24,1,240,16,12,24,16,0,255,255,255, + 0,96,0,96,7,224,12,0,24,0,24,192,25,160,9,16, + 5,16,3,48,1,224,16,12,24,16,0,255,255,255,25,152, + 25,152,25,152,25,152,25,152,9,152,7,24,0,24,0,24, + 0,24,0,8,16,12,24,16,0,255,255,255,0,24,0,24, + 0,24,7,248,14,24,12,24,12,24,6,24,2,24,1,24, + 0,136,13,12,24,16,3,255,227,248,216,192,204,192,76,192, + 28,192,120,192,97,192,35,192,30,192,0,192,0,192,0,64, + 16,12,24,16,0,255,255,255,0,24,0,24,0,24,1,248, + 2,0,6,0,6,24,2,40,1,240,0,8,0,4,13,12, + 24,16,3,255,115,248,200,192,192,192,192,192,96,192,28,192, + 48,192,96,192,97,192,99,192,30,192,0,64,16,12,24,16, + 0,255,255,255,0,24,0,24,0,24,7,248,6,24,6,24, + 2,24,0,24,0,24,0,24,0,8,16,12,24,16,0,255, + 255,255,0,24,0,24,0,24,7,248,6,24,6,24,2,24, + 0,24,1,24,3,152,1,8,16,12,24,16,0,255,255,255, + 6,24,6,24,6,24,6,24,6,24,2,56,1,216,0,24, + 0,24,0,24,0,8,16,12,24,16,0,255,255,255,49,128, + 49,128,49,128,49,240,49,200,19,132,15,132,1,132,1,140, + 1,140,0,128,16,12,24,16,0,255,255,255,0,24,0,24, + 7,216,14,120,13,24,12,152,12,120,7,248,0,24,0,24, + 0,8,14,12,24,16,2,255,227,252,216,96,200,96,76,96, + 60,96,12,96,31,224,28,96,12,96,0,96,0,96,0,32, + 16,12,24,16,0,255,255,255,6,24,6,24,6,24,6,24, + 6,24,15,248,6,24,2,24,0,24,0,24,0,8,16,12, + 24,16,0,255,255,255,3,24,3,24,3,24,3,24,6,24, + 4,56,4,120,3,216,0,24,0,24,0,8,16,12,24,16, + 0,255,255,255,0,192,0,192,0,192,3,192,3,128,3,128, + 1,0,0,128,0,64,0,32,0,24,16,12,24,16,0,255, + 255,255,0,192,0,192,0,192,3,192,3,128,3,128,1,0, + 0,128,4,64,14,32,4,24,16,12,24,16,0,255,255,255, + 0,24,0,24,28,56,58,248,49,216,49,152,24,24,8,24, + 4,24,3,24,0,8,16,11,22,16,0,0,255,255,0,48, + 0,48,0,112,14,200,25,140,49,140,49,140,49,152,19,112, + 14,0,16,13,26,16,0,254,255,255,0,48,0,48,0,112, + 14,200,25,140,49,140,49,140,49,152,19,112,14,0,0,192, + 0,192,16,12,24,16,0,255,255,255,0,24,0,24,3,216, + 15,56,12,24,12,56,4,120,3,216,0,24,0,24,0,8, + 16,12,24,16,0,255,255,255,6,24,6,24,31,24,1,152, + 1,152,25,152,21,24,30,24,2,24,1,24,0,136,16,12, + 24,16,0,255,255,255,12,24,14,24,13,24,12,152,12,88, + 12,56,6,56,1,216,0,24,0,24,0,8,16,12,24,16, + 0,255,255,255,3,24,3,24,3,24,11,24,15,24,14,248, + 4,24,4,24,2,24,1,24,0,136,16,12,24,16,0,255, + 255,255,0,24,0,24,7,248,12,0,12,0,6,240,1,152, + 3,16,3,0,1,128,0,252,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 2,2,2,16,7,255,192,192,9,11,22,16,7,0,63,128, + 64,0,64,0,96,0,48,0,24,0,8,0,12,0,12,0, + 156,0,120,0,6,13,13,16,10,254,252,48,48,48,48,48, + 48,48,48,48,48,48,16,8,14,14,16,0,0,60,98,49, + 252,48,48,48,48,48,48,48,48,48,16,9,16,32,16,7, + 254,120,0,132,0,132,0,31,128,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,2, + 0,6,3,3,16,4,255,152,68,56,6,3,3,16,6,255, + 112,136,100,4,3,3,16,6,255,96,128,112,3,5,5,16, + 6,255,96,128,96,128,96,5,3,3,16,5,10,136,72,48, + 5,3,3,16,4,10,128,112,8,5,3,3,16,4,10,224, + 16,8,6,4,4,16,3,9,112,8,228,28,6,16,16,16, + 10,254,136,120,0,252,48,48,48,48,48,48,48,48,48,48, + 48,16,8,16,16,16,8,254,128,120,4,63,12,12,12,12, + 12,12,12,12,12,12,12,4,8,16,16,16,8,254,240,8, + 4,63,12,12,12,12,12,12,12,12,12,12,12,4,9,16, + 32,16,7,254,120,0,244,0,10,0,31,128,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,2,0,5,3,3,16,6,255,224,16,8,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,14,14,28,16,1,0,0,96,0,96,0, + 0,113,8,248,240,4,0,4,24,24,60,48,36,8,36,132, + 124,135,216,121,128,48,0,1,3,3,16,8,10,128,128,128, + 4,1,1,16,6,0,240,3,3,3,16,6,10,128,64,32, + 3,3,3,16,7,10,32,64,128,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,13,26,16,0,254,255,255,0,192,0, + 192,14,192,25,248,17,200,19,204,14,204,0,204,0,204,4, + 192,14,64,4,0,16,13,26,16,0,254,255,255,8,24,8, + 24,9,216,59,56,58,24,18,56,17,216,8,24,4,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,1,152,1, + 152,1,152,1,152,7,152,3,152,1,152,0,152,0,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,0,24,0, + 24,0,24,3,248,17,152,8,216,8,216,7,152,0,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,0,24,0, + 24,3,248,6,0,6,0,3,240,0,24,4,24,3,240,0, + 0,0,192,0,192,16,13,26,16,0,254,255,255,0,96,0, + 96,7,224,12,0,24,224,25,144,25,16,13,48,7,224,0, + 0,1,128,1,128,16,13,26,16,0,254,255,255,49,128,49, + 128,49,128,49,240,49,200,19,132,15,132,1,132,1,140,9, + 140,28,128,8,0,16,13,26,16,0,254,255,255,3,24,3, + 24,3,24,3,24,6,24,4,56,4,120,3,216,0,24,1, + 24,3,136,1,0,16,13,26,16,0,254,255,255,3,0,3, + 0,51,24,75,40,7,240,15,24,51,8,67,24,3,48,3, + 28,1,16,0,14,16,13,26,16,0,254,255,255,0,32,0, + 32,30,112,49,152,49,152,16,48,8,96,4,192,0,60,0, + 192,0,192,0,60,8,5,5,16,4,255,72,146,130,68,3, + 8,6,6,16,4,254,72,146,132,67,4,3,2,12,12,16, + 7,255,128,192,192,192,192,192,192,192,192,192,192,64,5,12, + 12,16,6,255,144,216,216,216,216,216,216,216,216,216,216,72, + 8,7,7,16,4,2,60,78,199,195,227,114,60,6,13,13, + 16,5,254,112,232,204,204,76,60,24,48,96,32,16,8,4, + 9,13,26,16,4,254,252,0,226,0,1,0,1,0,1,0, + 3,0,54,0,44,0,56,0,4,0,2,0,1,0,0,128, + 8,13,13,16,4,254,252,226,2,2,60,2,1,51,46,60, + 4,2,1,12,12,24,16,2,255,128,16,64,48,32,96,16, + 192,9,128,7,0,6,0,13,0,9,128,9,128,9,128,7, + 0,8,13,13,16,4,254,192,195,195,67,62,12,12,104,88, + 120,4,2,1,8,13,13,16,4,254,60,192,128,192,124,16, + 32,35,51,15,4,4,2,11,11,22,16,3,0,128,0,135, + 0,142,192,140,64,68,96,67,224,64,32,32,32,32,64,24, + 192,7,0,10,10,20,16,3,1,255,192,32,0,64,0,128, + 0,128,0,131,0,135,128,124,128,56,128,0,128,8,12,12, + 16,4,255,56,100,98,97,32,56,72,192,192,192,32,31,5, + 4,4,16,6,3,112,136,136,112,2,2,2,16,8,6,192, + 192,15,15,30,16,1,255,2,0,1,32,0,192,57,254,68, + 192,4,192,12,192,56,192,8,192,135,192,134,192,78,192,60, + 192,0,192,0,64,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,12,24,16,0,255,255,255,1,152,1, + 152,1,152,1,152,7,152,3,152,1,152,0,152,0,24,0, + 24,15,248,16,12,24,16,0,255,255,255,0,24,0,24,0, + 24,3,248,17,152,8,216,8,216,7,152,0,24,0,24,31, + 248,8,13,13,16,4,254,124,226,193,1,1,3,62,60,48, + 48,48,48,16,16,13,26,16,0,254,255,255,0,24,0,24, + 3,248,6,0,6,0,3,240,0,24,4,24,2,24,1,240, + 0,0,15,254,16,12,24,16,0,255,255,255,0,24,0,24, + 7,216,14,120,13,24,12,152,12,120,7,248,0,24,0,24, + 15,248,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,4,4,16,5,9,48,180,132,120, + 5,8,8,16,11,0,96,144,96,0,192,96,48,8,4,7, + 7,16,11,1,96,144,96,0,96,144,96,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,16, + 12,24,16,0,255,255,255,0,12,64,12,67,140,71,204,71, + 236,99,44,32,108,48,124,24,220,15,140,0,4,16,13,26, + 16,0,255,0,6,255,247,0,110,64,102,70,102,79,102,79, + 102,69,102,65,102,97,102,51,230,30,102,0,34,16,15,30, + 16,0,255,32,0,31,192,0,32,255,255,0,0,15,192,24, + 96,60,48,60,48,24,48,0,96,63,192,7,0,1,192,0, + 124,16,15,30,16,0,255,32,0,31,240,0,8,255,255,30, + 0,63,12,59,30,25,56,1,248,1,240,3,144,79,16,60, + 16,16,24,0,14,16,15,30,16,0,255,16,0,15,224,0, + 16,255,255,3,0,3,0,67,0,67,16,67,56,99,108,33, + 204,48,12,24,12,14,24,3,240,16,15,30,16,0,255,16, + 0,15,224,0,16,255,255,3,0,3,0,83,0,83,16,83, + 56,83,108,73,204,40,12,36,12,18,24,15,240,15,14,28, + 16,1,255,64,0,228,0,230,206,133,204,121,204,3,204,14, + 204,120,204,96,236,120,252,14,220,3,204,1,204,0,68,14, + 14,28,16,1,255,64,0,128,0,128,0,64,0,127,192,31, + 240,0,56,15,12,24,140,56,76,56,76,56,76,16,216,3, + 240,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,14,13,26,16,1,255,0, + 48,0,248,1,140,3,12,135,140,135,140,131,12,128,12,192, + 12,64,108,96,156,51,12,14,4,14,15,30,16,1,255,0, + 8,0,16,0,16,0,216,3,236,6,52,140,52,158,52,158, + 52,140,56,192,48,65,176,98,112,60,48,24,16,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,14,13,26,16,1,255,0,240,3,24,6, + 12,14,12,142,12,134,120,192,248,64,120,96,12,48,12,24, + 12,12,24,7,240,14,15,30,16,1,255,0,8,0,16,0, + 16,7,216,8,108,28,52,28,52,156,52,137,228,131,248,193, + 224,64,48,96,48,48,112,31,224,16,12,24,16,0,255,255, + 255,0,96,0,96,1,248,7,100,60,98,48,98,60,110,7, + 108,1,224,0,224,0,32,14,13,26,16,2,255,64,0,226, + 60,227,48,197,48,121,48,1,48,6,48,120,48,126,48,1, + 176,0,112,0,48,0,16,14,12,24,16,2,255,62,124,113, + 96,224,224,224,96,252,96,70,96,6,96,6,96,28,96,120, + 96,32,96,0,32,16,12,24,16,0,255,255,255,24,24,48, + 24,56,24,31,152,1,152,6,24,12,24,31,24,1,216,0, + 56,0,8,12,13,26,16,2,255,32,0,35,192,22,64,12, + 64,15,128,140,0,136,32,136,112,199,176,64,48,96,48,48, + 96,31,128,16,12,24,16,0,255,255,255,24,0,24,0,28, + 0,27,0,24,252,24,12,24,12,24,12,24,24,28,48,15, + 192,16,12,24,16,0,255,255,255,24,0,24,0,28,0,27, + 224,24,56,24,104,28,200,15,16,0,96,1,248,0,14,16, + 12,24,16,0,255,255,255,1,240,3,28,70,15,76,2,76, + 196,79,36,102,44,32,44,48,100,24,196,15,131,16,12,24, + 16,0,255,255,231,0,102,0,102,1,230,7,102,60,102,48, + 102,60,102,7,126,1,238,0,230,0,34,14,13,26,16,1, + 255,7,0,13,128,25,176,49,248,57,204,185,140,145,184,129, + 140,193,204,199,248,111,176,121,128,48,128,16,15,30,16,0, + 255,16,0,15,192,0,32,255,255,24,0,24,0,24,0,24, + 96,24,240,24,112,24,48,24,96,24,192,15,128,7,0,16, + 15,30,16,0,255,16,0,15,0,0,128,255,255,0,128,0, + 128,0,192,1,192,1,96,35,48,58,24,20,24,24,24,12, + 48,7,224,16,12,24,16,0,255,255,255,3,0,3,0,67, + 0,67,16,67,56,99,108,33,204,48,12,24,12,14,24,3, + 240,16,12,24,16,0,255,255,255,24,0,24,0,24,0,24, + 96,24,240,24,112,24,48,24,96,24,192,15,128,7,0,13, + 13,26,16,3,255,28,96,62,120,97,96,192,224,192,224,224, + 96,224,96,64,96,0,96,0,96,0,96,0,96,0,32,16, + 12,24,16,0,255,255,255,0,0,65,248,67,12,67,132,67, + 134,99,134,33,6,48,6,24,12,12,28,7,240,15,13,26, + 16,1,255,60,0,98,62,241,48,241,48,97,48,1,48,6, + 48,120,48,126,48,1,176,0,112,0,48,0,16,16,12,24, + 16,0,255,255,255,12,0,12,0,12,120,12,240,13,224,13, + 96,15,96,14,96,14,96,12,48,8,28,12,13,26,16,4, + 255,96,0,240,240,224,192,128,192,99,192,30,192,56,192,224, + 192,248,192,14,192,3,192,1,192,0,64,16,12,24,16,0, + 255,255,255,0,24,0,24,0,24,0,24,30,24,63,152,60, + 216,56,120,0,56,0,24,0,8,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,15,13,26, + 16,1,255,14,48,31,190,48,240,96,112,240,240,155,176,14, + 48,24,48,32,48,0,48,0,48,0,48,0,16,16,12,24, + 16,0,255,255,255,16,0,56,120,12,100,6,98,12,98,24, + 110,48,108,63,96,1,224,0,96,0,32,16,12,24,16,0, + 255,255,255,0,24,0,24,0,120,3,216,7,24,28,24,31, + 24,1,216,0,120,0,56,0,8,16,12,24,16,0,255,255, + 255,0,0,66,16,71,8,71,12,70,20,99,230,32,6,48, + 6,24,12,12,28,7,240,16,12,24,16,0,255,255,255,12, + 24,28,24,14,24,3,24,3,24,3,24,15,216,30,120,12, + 56,0,24,0,8,16,12,24,16,0,255,255,255,8,48,28, + 48,6,48,3,48,6,48,12,48,24,48,31,176,0,240,0, + 48,0,16,16,12,24,16,0,255,255,255,0,24,0,120,3, + 216,7,24,28,24,31,24,1,216,2,120,7,56,7,24,2, + 8,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,12,24,16,0,255,255,255,0,6,0, + 6,28,22,62,62,99,102,65,198,65,198,64,134,124,6,60, + 6,24,2,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,15, + 13,26,16,1,255,112,204,249,238,143,60,143,28,31,140,63, + 204,25,140,0,12,0,12,0,12,0,12,0,12,0,4,16, + 12,24,16,0,255,255,255,28,24,14,24,7,152,1,216,6, + 120,28,24,31,24,1,216,0,120,0,56,0,8,16,12,24, + 16,0,255,255,255,16,12,56,12,28,12,6,12,2,204,1, + 236,3,28,102,12,60,12,24,12,0,4,16,12,24,16,0, + 255,255,255,0,0,15,192,24,96,60,48,60,48,24,48,0, + 96,63,192,7,0,1,192,0,124,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,2,2,2,16,7,255,192,192,14,12,24,16,0,255,240, + 0,8,0,15,192,28,96,60,48,60,48,24,48,0,96,63, + 192,7,0,1,192,0,124,5,10,10,16,11,255,48,184,112, + 48,48,48,48,48,48,16,13,14,28,16,0,255,15,128,63, + 224,96,16,96,8,32,0,248,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,16,0,12,14,28,16,4,255,63, + 0,65,128,128,192,190,64,65,64,1,240,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,64,6,5,5,16,5, + 254,4,104,144,104,4,6,5,5,16,6,254,96,128,112,8, + 4,5,5,5,16,5,254,24,96,128,96,24,3,5,5,16, + 6,255,96,128,96,128,64,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,5, + 9,9,16,0,255,248,24,48,96,64,64,64,88,56,5,12, + 12,16,0,255,128,112,8,248,24,48,96,64,64,64,88,56, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,16,10,20,16,0,255,0,6, + 248,23,24,14,48,6,96,6,64,6,64,6,64,6,88,6, + 56,2,16,13,26,16,0,255,0,128,0,112,0,8,0,4, + 248,23,24,14,48,6,96,6,64,6,64,6,64,6,88,6, + 56,2,5,3,3,16,6,0,192,48,8,8,12,12,16,4, + 255,56,92,204,236,216,192,96,56,12,6,3,1,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,8,13,13, + 16,8,255,128,112,8,4,23,14,6,6,6,6,6,6,2, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 16,13,26,16,0,254,255,255,3,0,67,16,67,56,99,108, + 35,204,49,140,24,12,14,24,3,240,0,0,0,192,0,192, + 16,13,26,16,0,254,255,255,12,0,12,0,12,0,12,48, + 12,120,12,56,12,48,7,224,3,192,0,0,1,128,1,128, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,16,13,26,16,0,254,255,255,4,24,14,24, + 3,24,1,152,3,24,6,24,12,24,15,216,0,120,1,24, + 3,136,1,0,15,15,30,16,1,254,64,0,228,0,230,206, + 133,204,121,204,3,204,14,204,120,204,96,236,120,252,14,220, + 123,204,97,204,120,68,14,0,8,14,14,16,4,255,128,124, + 3,121,197,205,158,128,124,3,121,197,205,158,7,5,5,16, + 5,255,124,2,114,202,220,10,6,12,16,5,255,3,128,112, + 64,10,64,77,64,173,128,176,0,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,10,11,22,16,3,0,30,0,63,0,97,128,192,192,192, + 192,192,192,192,192,192,192,97,128,63,0,30,0,9,12,24, + 16,4,0,64,0,64,0,96,0,56,0,14,0,3,0,1, + 128,97,128,225,128,225,128,195,0,126,0,10,11,22,16,3, + 0,224,0,56,0,14,0,3,0,3,0,227,0,126,0,28, + 0,6,0,1,128,0,64,12,12,24,16,2,255,131,192,132, + 96,136,48,140,48,142,48,142,48,134,48,64,48,64,96,32, + 96,17,192,15,0,11,13,26,16,2,255,31,0,63,128,96, + 192,64,64,96,192,49,128,31,0,96,192,192,96,192,96,224, + 224,127,192,31,0,11,13,26,16,2,255,7,0,30,0,57, + 96,112,192,97,128,195,0,198,0,198,0,198,0,198,0,99, + 96,48,192,31,128,12,12,24,16,2,255,28,0,12,0,12, + 0,140,0,140,96,140,160,141,176,199,48,64,48,96,48,48, + 96,31,192,9,13,26,16,4,255,60,0,126,0,195,0,195, + 0,199,0,127,0,59,0,3,0,3,0,3,0,3,0,3, + 0,1,128,13,13,26,16,1,255,224,0,96,0,96,0,96, + 8,103,240,127,192,112,96,96,96,96,96,96,96,112,192,63, + 128,30,0,12,15,30,16,2,254,128,0,128,0,96,0,60, + 0,15,0,3,192,0,224,0,48,60,48,66,48,225,48,225, + 48,225,96,65,192,1,0,16,12,24,16,0,255,255,255,0, + 24,0,24,0,120,3,216,7,152,28,120,31,24,1,216,0, + 120,0,56,0,8,16,13,26,16,0,254,255,255,0,24,0, + 24,0,120,3,216,7,24,28,24,31,24,1,216,28,120,7, + 56,1,136,0,64,9,8,16,16,3,3,224,0,248,0,124, + 0,14,0,3,0,1,0,0,128,0,128,12,13,26,16,1, + 255,48,0,120,0,204,0,12,0,31,240,12,0,12,96,12, + 240,12,240,12,48,12,96,7,192,3,128,9,8,16,16,3, + 2,0,128,0,128,1,0,3,0,14,0,124,0,248,0,224, + 0,12,9,18,16,2,2,56,16,124,16,226,32,242,96,242, + 192,98,192,7,128,15,0,14,0,12,13,26,16,2,255,0, + 16,0,16,0,16,56,16,124,16,126,16,62,16,6,48,12, + 96,248,224,193,192,127,128,30,0,2,13,13,16,8,255,128, + 192,192,192,192,192,192,192,192,192,192,192,64,11,13,26,16, + 2,255,224,0,96,0,96,192,97,192,99,192,98,192,102,192, + 108,192,120,192,112,192,96,192,0,192,0,96,11,10,20,16, + 3,1,31,0,63,128,96,192,192,96,192,96,192,96,192,96, + 96,192,63,128,31,0,14,9,18,16,1,255,0,4,2,4, + 135,8,135,8,66,16,96,48,48,96,31,192,15,0,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255, + 168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 8 + Calculated Max Values w=16 h=16 x= 4 y= 1 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[4628] U8G_SECTION(".progmem.u8g_font_unifont_2_3") = { + 0,16,16,0,254,10,4,220,7,27,0,255,0,14,254,14, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,6,11,11,8,1,0,120,0,0, + 120,132,4,124,132,132,140,116,6,14,14,8,1,0,132,132, + 120,0,48,72,72,132,132,252,132,132,132,132,6,13,13,8, + 1,0,132,132,120,0,0,120,132,4,124,132,132,140,116,7, + 12,12,8,1,254,48,72,72,132,132,252,132,132,132,132,8, + 6,7,10,10,8,1,254,120,132,4,124,132,132,140,116,8, + 6,6,14,14,8,1,0,24,96,0,0,120,132,132,128,128, + 128,128,132,132,120,6,12,12,8,1,0,24,96,0,0,120, + 132,128,128,128,128,132,120,6,14,14,8,1,0,48,72,0, + 0,120,132,132,128,128,128,128,132,132,120,6,12,12,8,1, + 0,48,72,0,0,120,132,128,128,128,128,132,120,6,14,14, + 8,1,0,32,32,0,0,120,132,132,128,128,128,128,132,132, + 120,6,12,12,8,1,0,32,32,0,0,120,132,128,128,128, + 128,132,120,6,14,14,8,1,0,72,48,0,0,120,132,132, + 128,128,128,128,132,132,120,6,12,12,8,1,0,72,48,0, + 0,120,132,128,128,128,128,132,120,6,14,14,8,1,0,144, + 96,0,0,240,136,132,132,132,132,132,132,136,240,6,14,14, + 8,1,0,72,48,0,4,4,4,116,140,132,132,132,132,140, + 116,7,10,10,8,0,0,120,68,66,66,242,66,66,66,68, + 120,7,12,12,8,1,0,4,30,4,4,116,140,132,132,132, + 132,140,116,6,13,13,8,1,0,120,0,0,252,128,128,128, + 248,128,128,128,128,252,6,11,11,8,1,0,120,0,0,120, + 132,132,252,128,128,132,120,6,14,14,8,1,0,132,132,120, + 0,252,128,128,128,248,128,128,128,128,252,6,12,12,8,1, + 0,132,132,120,0,120,132,132,252,128,128,132,120,6,14,14, + 8,1,0,32,32,0,0,252,128,128,128,248,128,128,128,128, + 252,6,12,12,8,1,0,32,32,0,0,120,132,132,252,128, + 128,132,120,6,12,12,8,1,254,252,128,128,128,248,128,128, + 128,128,252,16,12,6,10,10,8,1,254,120,132,132,252,128, + 128,132,120,32,24,6,14,14,8,1,0,72,48,0,0,252, + 128,128,128,248,128,128,128,128,252,6,12,12,8,1,0,72, + 48,0,0,120,132,132,252,128,128,132,120,6,14,14,8,1, + 0,48,72,0,0,120,132,132,128,128,156,132,132,140,116,6, + 14,14,8,1,254,48,72,0,4,116,136,136,136,112,64,120, + 132,132,120,6,14,14,8,1,0,132,132,120,0,120,132,132, + 128,128,156,132,132,140,116,6,15,15,8,1,254,132,132,120, + 0,4,116,136,136,136,112,64,120,132,132,120,6,14,14,8, + 1,0,32,32,0,0,120,132,132,128,128,156,132,132,140,116, + 6,14,14,8,1,254,32,32,0,4,116,136,136,136,112,64, + 120,132,132,120,6,12,12,8,1,254,120,132,132,128,128,156, + 132,132,140,116,16,96,6,14,14,8,1,254,24,32,0,4, + 116,136,136,136,112,64,120,132,132,120,6,14,14,8,1,0, + 48,72,0,0,132,132,132,132,252,132,132,132,132,132,6,14, + 14,8,1,0,96,144,0,128,128,128,184,196,132,132,132,132, + 132,132,8,10,10,8,0,0,66,66,255,66,66,126,66,66, + 66,66,7,11,11,8,0,1,64,240,64,64,92,98,66,66, + 66,66,66,6,14,14,8,1,0,100,152,0,0,124,16,16, + 16,16,16,16,16,16,124,6,12,12,8,1,0,100,152,0, + 0,48,16,16,16,16,16,16,124,5,13,13,8,2,0,240, + 0,0,248,32,32,32,32,32,32,32,32,248,5,11,11,8, + 2,0,240,0,0,96,32,32,32,32,32,32,248,6,14,14, + 8,1,0,132,132,120,0,124,16,16,16,16,16,16,16,16, + 124,6,12,12,8,1,0,132,132,120,0,48,16,16,16,16, + 16,16,124,5,12,12,8,2,254,248,32,32,32,32,32,32, + 32,32,248,32,24,5,13,13,8,2,254,32,32,0,96,32, + 32,32,32,32,32,248,32,24,5,14,14,8,2,0,32,32, + 0,0,248,32,32,32,32,32,32,32,32,248,5,8,8,8, + 2,0,96,32,32,32,32,32,32,248,6,10,10,8,1,0, + 132,132,132,132,132,132,4,4,132,120,5,14,14,8,2,254, + 136,136,0,0,136,136,136,136,136,136,104,8,136,112,7,14, + 14,8,1,0,24,36,0,0,62,8,8,8,8,8,8,136, + 136,112,6,14,14,8,1,254,24,36,0,0,24,8,8,8, + 8,8,8,8,144,96,7,12,12,8,0,254,66,68,72,80, + 96,96,80,72,68,66,32,192,7,12,12,8,0,254,64,64, + 68,72,80,96,80,72,68,66,32,192,6,8,8,8,1,0, + 132,136,144,224,224,144,136,132,6,14,14,8,1,0,48,192, + 0,0,128,128,128,128,128,128,128,128,128,252,5,14,14,8, + 2,0,48,192,0,0,96,32,32,32,32,32,32,32,32,248, + 6,12,12,8,1,254,128,128,128,128,128,128,128,128,128,252, + 16,96,5,12,12,8,2,254,96,32,32,32,32,32,32,32, + 32,248,32,192,6,14,14,8,1,0,72,48,0,0,128,128, + 128,128,128,128,128,128,128,252,5,14,14,8,2,0,144,96, + 0,0,96,32,32,32,32,32,32,32,32,248,6,10,10,8, + 1,0,128,128,128,128,136,136,128,128,128,252,5,10,10,8, + 1,0,96,32,32,32,40,40,32,32,32,248,7,10,10,8, + 0,0,64,64,72,80,96,192,64,64,64,126,5,10,10,8, + 2,0,96,32,40,48,96,160,32,32,32,248,6,14,14,8, + 1,0,24,96,0,0,132,196,196,164,164,148,148,140,140,132, + 6,12,12,8,1,0,24,96,0,0,184,196,132,132,132,132, + 132,132,7,12,12,8,0,254,66,98,98,82,82,74,74,70, + 70,66,32,192,7,10,10,8,0,254,92,98,66,66,66,66, + 66,66,32,192,6,14,14,8,1,0,72,48,0,0,132,196, + 196,164,164,148,148,140,140,132,6,12,12,8,1,0,72,48, + 0,0,184,196,132,132,132,132,132,132,6,13,13,8,1,0, + 192,64,64,128,0,184,196,132,132,132,132,132,132,6,10,10, + 8,1,0,184,196,132,132,132,132,132,132,132,152,6,10,10, + 8,1,254,184,196,132,132,132,132,132,132,4,24,6,13,13, + 8,1,0,120,0,0,120,132,132,132,132,132,132,132,132,120, + 6,11,11,8,1,0,120,0,0,120,132,132,132,132,132,132, + 120,6,14,14,8,1,0,132,132,120,0,120,132,132,132,132, + 132,132,132,132,120,6,12,12,8,1,0,132,132,120,0,120, + 132,132,132,132,132,132,120,7,14,14,8,1,0,102,136,0, + 0,120,132,132,132,132,132,132,132,132,120,7,12,12,8,1, + 0,102,136,0,0,120,132,132,132,132,132,132,120,7,10,10, + 8,1,0,110,144,144,144,156,144,144,144,144,110,7,8,8, + 8,1,0,108,146,146,158,144,144,146,108,6,14,14,8,1, + 0,24,96,0,0,248,132,132,132,248,144,136,136,132,132,6, + 12,12,8,1,0,24,96,0,0,184,196,132,128,128,128,128, + 128,7,12,12,8,0,254,124,66,66,66,124,72,68,68,66, + 66,32,192,7,10,10,8,0,254,92,98,66,64,64,64,64, + 64,32,192,6,14,14,8,1,0,72,48,0,0,248,132,132, + 132,248,144,136,136,132,132,6,12,12,8,1,0,72,48,0, + 0,184,196,132,128,128,128,128,128,6,14,14,8,1,0,24, + 96,0,0,120,132,132,128,96,24,4,132,132,120,6,12,12, + 8,1,0,24,96,0,0,120,132,128,96,24,132,132,120,6, + 14,14,8,1,0,48,72,0,0,120,132,132,128,96,24,4, + 132,132,120,6,12,12,8,1,0,48,72,0,0,120,132,128, + 96,24,4,132,120,6,12,12,8,1,254,120,132,132,128,96, + 24,4,132,132,120,16,96,6,10,10,8,1,254,120,132,128, + 96,24,4,132,120,16,96,6,14,14,8,1,0,72,48,0, + 0,120,132,132,128,96,24,4,132,132,120,6,12,12,8,1, + 0,72,48,0,0,120,132,128,96,24,4,132,120,7,12,12, + 8,1,254,254,16,16,16,16,16,16,16,16,16,16,96,5, + 12,12,8,1,254,32,32,248,32,32,32,32,32,32,24,16, + 96,7,14,14,8,1,0,72,48,0,0,254,16,16,16,16, + 16,16,16,16,16,5,14,14,8,1,0,72,48,0,0,32, + 32,248,32,32,32,32,32,32,24,7,10,10,8,1,0,254, + 16,16,20,24,48,80,16,16,16,5,10,10,8,1,0,32, + 32,248,32,40,48,96,160,32,24,6,14,14,8,1,0,100, + 152,0,0,132,132,132,132,132,132,132,132,132,120,6,12,12, + 8,1,0,100,152,0,0,132,132,132,132,132,132,140,116,6, + 13,13,8,1,0,120,0,0,132,132,132,132,132,132,132,132, + 132,120,6,11,11,8,1,0,120,0,0,132,132,132,132,132, + 132,140,116,6,14,14,8,1,0,132,132,120,0,132,132,132, + 132,132,132,132,132,132,120,6,13,13,8,1,0,132,132,120, + 0,0,132,132,132,132,132,132,140,116,6,14,14,8,1,0, + 48,72,48,0,132,132,132,132,132,132,132,132,132,120,6,12, + 12,8,1,0,48,72,48,0,132,132,132,132,132,132,140,116, + 7,14,14,8,1,0,102,136,0,0,132,132,132,132,132,132, + 132,132,132,120,7,12,12,8,1,0,102,136,0,0,132,132, + 132,132,132,132,140,116,6,12,12,8,1,254,132,132,132,132, + 132,132,132,132,132,120,32,24,7,10,10,8,1,254,132,132, + 132,132,132,132,140,116,8,6,6,14,14,8,1,0,48,72, + 0,0,132,132,132,132,180,180,204,204,132,132,7,12,12,8, + 1,0,48,72,0,0,130,146,146,146,146,146,146,108,7,14, + 14,8,1,0,48,72,0,0,130,130,68,68,40,16,16,16, + 16,16,6,14,14,8,1,254,48,72,0,0,132,132,132,132, + 132,76,52,4,4,120,7,14,14,8,1,0,72,72,0,0, + 130,130,68,68,40,16,16,16,16,16,6,14,14,8,1,0, + 24,96,0,0,252,4,4,8,16,32,64,128,128,252,6,12, + 12,8,1,0,24,96,0,0,252,4,8,16,32,64,128,252, + 6,14,14,8,1,0,32,32,0,0,252,4,4,8,16,32, + 64,128,128,252,6,12,12,8,1,0,32,32,0,0,252,4, + 8,16,32,64,128,252,6,14,14,8,1,0,72,48,0,0, + 252,4,4,8,16,32,64,128,128,252,6,12,12,8,1,0, + 72,48,0,0,252,4,8,16,32,64,128,252,4,11,11,8, + 2,0,48,64,64,64,192,64,64,64,64,64,64,7,11,11, + 8,0,0,64,240,64,92,98,66,66,66,66,98,92,7,10, + 10,8,0,0,124,162,162,34,60,34,34,34,34,60,6,10, + 10,8,1,0,252,128,128,128,248,132,132,132,132,248,6,10, + 10,8,1,0,252,128,128,184,196,132,132,132,196,184,6,10, + 10,8,1,0,192,64,64,64,120,68,68,68,68,120,6,8, + 8,8,1,0,192,64,64,64,120,68,68,120,6,10,10,8, + 1,0,120,132,132,4,4,4,4,132,132,248,7,12,12,8, + 1,0,6,8,120,136,136,128,128,128,128,136,136,112,7,10, + 10,8,1,0,6,8,120,136,128,128,128,128,136,112,7,10, + 10,8,0,0,120,68,66,66,242,66,66,66,68,120,7,10, + 10,8,0,0,120,164,162,34,34,34,34,34,36,56,6,10, + 10,8,1,0,252,4,4,4,124,132,132,132,132,124,6,10, + 10,8,1,0,252,4,4,116,140,132,132,132,140,116,6,10, + 10,8,1,254,120,132,132,132,132,72,48,8,8,112,6,10, + 10,8,1,0,252,4,4,4,124,4,4,4,4,252,6,10, + 10,8,1,0,48,72,132,4,4,252,132,132,72,48,6,10, + 10,8,1,0,120,132,132,128,112,128,128,132,132,120,7,11, + 11,8,1,255,62,32,32,32,60,32,32,32,32,32,192,5, + 12,12,8,1,255,24,32,32,32,248,32,32,32,32,32,32, + 192,7,11,11,8,1,0,6,120,136,136,128,128,184,136,136, + 152,104,6,10,10,8,1,0,132,132,132,72,72,48,48,72, + 72,48,6,11,11,8,1,0,128,128,128,128,228,148,148,148, + 148,148,136,5,10,10,8,1,0,224,32,32,32,32,32,32, + 32,32,24,5,10,10,8,2,0,248,32,32,32,248,32,32, + 32,32,248,6,10,10,8,1,0,140,148,160,160,192,192,160, + 144,136,132,6,11,11,8,1,0,96,128,128,136,144,160,192, + 160,144,136,132,5,10,10,8,2,0,96,32,32,32,248,32, + 32,32,32,248,6,10,10,8,1,0,72,80,32,96,144,48, + 72,72,132,132,7,10,10,8,1,0,146,146,146,146,146,146, + 146,146,146,110,7,11,11,8,0,255,34,34,50,50,42,42, + 38,38,34,34,192,6,10,10,8,1,254,184,196,132,132,132, + 132,132,132,4,4,6,10,10,8,1,0,120,132,132,132,252, + 132,132,132,132,120,6,11,11,8,1,0,4,116,136,136,136, + 136,136,136,136,136,112,6,9,9,8,1,0,4,116,136,136, + 136,136,136,136,112,6,12,12,8,1,254,108,148,148,148,148, + 148,148,148,148,100,4,4,6,10,10,8,1,254,108,148,148, + 148,148,148,148,100,4,4,7,10,10,8,1,0,124,162,162, + 34,60,32,32,32,32,32,7,11,11,8,1,254,6,184,200, + 136,136,136,136,200,176,128,128,7,10,10,8,1,0,224,64, + 120,68,68,120,80,72,68,66,6,10,10,8,1,0,120,132, + 132,4,24,96,128,132,132,120,6,8,8,8,1,0,120,132, + 4,24,96,128,132,120,6,10,10,8,1,0,252,128,64,32, + 16,16,32,64,128,252,5,12,12,8,1,255,64,160,160,96, + 32,32,32,32,32,32,32,24,5,12,12,8,1,254,32,32, + 248,32,32,32,32,32,32,24,8,48,7,10,10,8,1,0, + 126,144,144,16,16,16,16,16,16,16,5,11,11,8,1,0, + 24,32,32,32,248,32,32,32,32,32,24,7,11,11,8,1, + 255,254,16,16,16,16,16,16,16,16,16,12,7,12,12,8, + 1,0,2,2,140,136,136,136,136,136,136,136,136,112,7,10, + 10,8,1,0,2,2,140,136,136,136,136,136,152,104,6,10, + 10,8,1,0,132,72,72,132,132,132,132,132,72,48,6,10, + 10,8,1,0,152,132,132,132,132,132,132,136,144,96,7,10, + 10,8,1,0,98,162,34,20,20,8,8,8,8,8,7,11, + 11,8,1,254,6,136,136,136,136,136,72,56,8,8,112,6, + 10,10,8,1,0,252,4,8,16,120,32,64,128,128,252,6, + 8,8,8,1,0,252,8,16,120,32,64,128,252,6,10,10, + 8,1,0,252,8,16,32,56,4,4,4,140,120,6,10,10, + 8,1,0,252,64,32,16,112,128,128,128,196,120,6,10,10, + 8,1,254,248,64,32,16,112,128,128,128,132,120,6,10,10, + 8,1,254,124,8,16,56,4,4,120,128,132,120,6,10,10, + 8,1,0,120,132,132,8,16,252,64,128,128,252,6,10,10, + 8,1,0,252,64,64,64,120,4,4,4,132,120,6,8,8, + 8,1,0,252,64,64,120,4,4,132,120,5,10,10,8,1, + 0,32,32,248,32,32,48,8,8,136,112,6,10,10,8,1, + 254,184,196,132,132,136,144,160,192,128,128,1,11,11,8,3, + 0,128,128,128,128,128,128,128,128,128,128,128,3,11,11,8, + 2,0,160,160,160,160,160,160,160,160,160,160,160,5,11,11, + 8,1,0,32,32,32,32,248,32,248,32,32,32,32,1,10, + 10,8,4,0,128,128,128,128,128,128,128,0,128,128,7,14, + 14,8,1,0,10,4,0,0,206,162,162,162,164,164,168,168, + 168,206,7,12,12,8,1,0,10,4,192,160,174,162,162,164, + 164,168,168,206,7,12,12,8,1,0,10,36,32,32,110,162, + 162,164,164,168,168,110,7,10,10,8,1,0,142,130,130,130, + 130,130,130,146,146,236,7,13,13,8,1,254,2,130,128,134, + 130,130,130,130,130,130,242,4,24,8,13,13,8,0,254,1, + 97,32,35,33,33,33,33,33,33,249,2,12,7,10,10,8, + 1,0,150,146,146,210,210,178,178,154,154,148,7,13,13,8, + 1,254,2,146,144,214,210,210,178,178,178,146,146,36,24,7, + 13,13,8,1,254,2,2,0,166,210,146,146,146,146,146,146, + 36,24,6,14,14,8,1,0,72,48,0,0,48,72,72,132, + 132,252,132,132,132,132,6,12,12,8,1,0,72,48,0,0, + 120,132,4,124,132,132,140,116,5,14,14,8,2,0,144,96, + 0,0,248,32,32,32,32,32,32,32,32,248,5,12,12,8, + 2,0,144,96,0,0,96,32,32,32,32,32,32,248,6,14, + 14,8,1,0,72,48,0,0,120,132,132,132,132,132,132,132, + 132,120,6,12,12,8,1,0,72,48,0,0,120,132,132,132, + 132,132,132,120,6,14,14,8,1,0,72,48,0,0,132,132, + 132,132,132,132,132,132,132,120,6,12,12,8,1,0,72,48, + 0,0,132,132,132,132,132,132,140,116,6,14,14,8,1,0, + 120,0,72,0,132,132,132,132,132,132,132,132,132,120,6,13, + 13,8,1,0,120,0,72,72,0,132,132,132,132,132,132,140, + 116,6,14,14,8,1,0,24,96,0,72,0,132,132,132,132, + 132,132,132,132,120,6,14,14,8,1,0,24,96,0,72,72, + 0,132,132,132,132,132,132,140,116,6,14,14,8,1,0,72, + 48,0,72,0,132,132,132,132,132,132,132,132,120,6,14,14, + 8,1,0,72,48,0,72,72,0,132,132,132,132,132,132,140, + 116,6,14,14,8,1,0,96,24,0,72,0,132,132,132,132, + 132,132,132,132,120,6,14,14,8,1,0,96,24,0,72,72, + 0,132,132,132,132,132,132,140,116,6,8,8,8,1,0,120, + 132,4,4,252,132,132,120,6,14,14,8,1,0,120,0,72, + 0,48,72,72,132,132,252,132,132,132,132,6,13,13,8,1, + 0,120,0,72,72,0,120,132,4,124,132,132,140,116,6,14, + 14,8,1,0,120,0,48,0,48,72,72,132,132,252,132,132, + 132,132,6,13,13,8,1,0,120,0,32,32,0,120,132,4, + 124,132,132,140,116,7,13,13,8,1,0,120,0,0,62,80, + 144,144,254,144,144,144,144,158,7,11,11,8,1,0,120,0, + 0,124,146,18,126,144,144,146,124,7,10,10,8,1,0,120, + 132,132,128,128,156,132,158,132,124,7,11,11,8,1,254,4, + 116,136,136,136,112,64,120,158,132,120,6,14,14,8,1,0, + 72,48,0,0,120,132,132,128,128,156,132,132,140,116,6,14, + 14,8,1,254,72,48,0,4,116,136,136,136,112,64,120,132, + 132,120,6,14,14,8,1,0,72,48,0,0,132,136,144,160, + 192,192,160,144,136,132,6,14,14,8,1,0,144,96,0,0, + 128,128,136,144,160,192,160,144,136,132,6,12,12,8,1,254, + 120,132,132,132,132,132,132,132,132,120,32,24,6,10,10,8, + 1,254,120,132,132,132,132,132,132,120,32,24,6,15,15,8, + 1,254,120,0,0,120,132,132,132,132,132,132,132,132,120,32, + 24,6,13,13,8,1,254,120,0,0,120,132,132,132,132,132, + 132,120,32,24,6,14,14,8,1,0,72,48,0,0,252,8, + 16,32,56,4,4,4,140,120,6,14,14,8,1,254,72,48, + 0,0,124,8,16,32,56,4,4,4,132,120,6,14,14,8, + 1,254,36,24,0,0,24,8,8,8,8,8,8,8,144,96, + 7,10,10,8,1,0,206,162,162,162,164,164,168,168,168,206, + 7,10,10,8,1,0,192,160,174,162,162,164,164,168,168,206, + 7,11,11,8,1,0,32,32,32,110,162,162,164,164,168,168, + 110,6,14,14,8,1,0,24,96,0,0,120,132,132,128,128, + 156,132,132,140,116,6,14,14,8,1,254,24,96,0,4,116, + 136,136,136,112,64,120,132,132,120,6,10,10,8,1,0,144, + 144,144,148,244,148,148,148,148,136,6,11,11,8,1,255,184, + 196,132,132,136,144,160,192,128,128,128,6,13,13,8,1,0, + 96,24,0,132,196,196,164,164,148,148,140,140,132,6,11,11, + 8,1,0,96,24,0,184,196,132,132,132,132,132,132,6,14, + 14,8,1,0,24,96,48,72,48,48,72,72,132,252,132,132, + 132,132,6,14,14,8,1,0,24,96,0,48,72,48,0,120, + 132,4,124,132,140,116,7,14,14,8,1,0,12,48,0,0, + 62,80,144,144,254,144,144,144,144,158,7,12,12,8,1,0, + 12,48,0,0,124,146,18,126,144,144,146,124,6,15,15,8, + 1,255,24,96,0,4,116,136,140,148,148,164,164,196,68,184, + 128,6,13,13,8,1,255,24,96,0,4,120,140,148,148,164, + 164,196,120,128}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y=10 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =12 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[3783] U8G_SECTION(".progmem.u8g_font_unifont_4_5") = { + 0,16,16,0,254,10,4,176,6,163,0,255,0,14,254,12, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,7,12,12,8,0,0,204,34,0, + 0,60,66,2,62,66,66,70,58,6,14,14,8,1,0,120, + 132,132,0,48,72,72,132,132,252,132,132,132,132,6,12,12, + 8,1,0,120,132,132,0,120,132,4,124,132,132,140,116,7, + 14,14,8,0,0,204,34,0,0,126,64,64,64,124,64,64, + 64,64,126,7,12,12,8,0,0,204,34,0,0,60,66,66, + 126,64,64,66,60,6,14,14,8,1,0,120,132,132,0,252, + 128,128,128,248,128,128,128,128,252,6,12,12,8,1,0,120, + 132,132,0,120,132,132,252,128,128,132,120,7,14,14,8,0, + 0,204,34,0,0,62,8,8,8,8,8,8,8,8,62,7, + 12,12,8,0,0,204,34,0,0,24,8,8,8,8,8,8, + 62,6,14,14,8,1,0,120,132,132,0,124,16,16,16,16, + 16,16,16,16,124,6,12,12,8,1,0,120,132,132,0,48, + 16,16,16,16,16,16,124,7,14,14,8,0,0,204,34,0, + 0,60,66,66,66,66,66,66,66,66,60,7,12,12,8,0, + 0,204,34,0,0,60,66,66,66,66,66,66,60,6,14,14, + 8,1,0,120,132,132,0,120,132,132,132,132,132,132,132,132, + 120,6,12,12,8,1,0,120,132,132,0,120,132,132,132,132, + 132,132,120,7,14,14,8,0,0,204,34,0,0,124,66,66, + 66,124,72,68,68,66,66,7,12,12,8,0,0,204,34,0, + 0,92,98,66,64,64,64,64,64,6,14,14,8,1,0,120, + 132,132,0,248,132,132,132,248,144,136,136,132,132,6,12,12, + 8,1,0,120,132,132,0,184,196,132,128,128,128,128,128,7, + 14,14,8,0,0,204,34,0,0,66,66,66,66,66,66,66, + 66,66,60,7,12,12,8,0,0,204,34,0,0,66,66,66, + 66,66,66,70,58,6,14,14,8,1,0,120,132,132,0,132, + 132,132,132,132,132,132,132,132,120,6,12,12,8,1,0,120, + 132,132,0,132,132,132,132,132,132,140,116,6,12,12,8,1, + 254,120,132,132,128,96,24,4,132,132,120,16,32,6,10,10, + 8,1,254,120,132,128,96,24,4,132,120,16,32,7,12,12, + 8,1,254,254,16,16,16,16,16,16,16,16,16,4,8,5, + 12,12,8,1,254,32,32,248,32,32,32,32,32,32,24,64, + 128,6,10,10,8,1,0,120,132,132,4,24,104,4,4,4, + 120,6,8,8,8,1,0,120,132,4,24,100,4,24,96,6, + 13,13,8,1,0,72,48,0,132,132,132,132,252,132,132,132, + 132,132,6,13,13,8,1,0,72,48,0,128,128,128,184,196, + 132,132,132,132,132,6,10,10,8,1,254,184,196,132,132,132, + 132,132,132,4,4,7,13,13,8,1,254,4,4,4,116,140, + 132,132,132,132,142,118,4,8,6,10,10,8,1,0,16,72, + 132,132,72,120,132,132,132,120,5,8,8,8,2,0,72,136, + 144,96,144,136,136,112,6,12,12,8,1,254,252,4,4,8, + 16,32,64,128,128,252,4,8,6,10,10,8,1,254,252,4, + 8,16,32,64,128,252,4,8,6,12,12,8,1,0,16,0, + 48,72,72,132,132,252,132,132,132,132,6,10,10,8,1,0, + 16,0,120,132,4,124,132,132,140,116,6,12,12,8,1,254, + 252,128,128,128,248,128,128,128,128,252,16,96,6,10,10,8, + 1,254,120,132,132,252,128,128,132,120,16,96,6,14,14,8, + 1,0,120,0,72,0,120,132,132,132,132,132,132,132,132,120, + 6,12,12,8,1,0,120,0,72,0,120,132,132,132,132,132, + 132,120,6,14,14,8,1,0,120,0,100,152,0,120,132,132, + 132,132,132,132,132,120,6,13,13,8,1,0,120,0,100,152, + 0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,16, + 0,120,132,132,132,132,132,132,132,132,120,6,10,10,8,1, + 0,16,0,120,132,132,132,132,132,132,120,6,14,14,8,1, + 0,120,0,16,0,120,132,132,132,132,132,132,132,132,120,6, + 12,12,8,1,0,120,0,16,0,120,132,132,132,132,132,132, + 120,7,12,12,8,1,0,124,0,130,130,68,68,40,16,16, + 16,16,16,6,12,12,8,1,254,120,0,132,132,132,132,132, + 76,52,4,4,120,4,12,12,8,2,254,96,32,32,32,32, + 32,32,32,48,48,64,128,7,10,10,8,1,254,184,196,132, + 132,132,132,134,134,4,8,6,12,12,8,1,254,32,32,248, + 32,32,32,32,32,44,28,16,32,5,10,10,8,1,254,24, + 8,8,8,8,8,8,8,144,96,7,11,11,8,0,0,16, + 16,16,84,186,146,146,146,146,186,84,7,10,10,8,0,254, + 84,186,146,146,146,146,186,84,16,16,7,11,11,8,0,0, + 2,26,36,44,74,82,126,98,66,66,194,7,12,12,8,0, + 255,2,60,70,74,72,80,80,96,98,66,124,128,7,11,11, + 8,0,255,2,4,60,74,80,80,96,96,66,124,128,6,10, + 10,8,1,0,64,64,64,64,240,64,64,64,64,124,7,12, + 12,8,1,0,2,4,254,24,24,16,16,48,48,80,80,144, + 7,10,10,8,1,254,120,132,128,96,24,4,132,120,18,12, + 6,10,10,8,1,254,252,4,8,16,32,64,128,192,32,28, + 6,10,10,8,1,0,120,132,132,4,8,16,16,16,16,16, + 6,8,8,8,1,0,120,132,132,4,8,16,16,16,6,10, + 10,8,1,0,120,68,68,68,120,68,244,68,68,120,7,10, + 10,8,0,0,68,68,68,68,68,254,68,68,68,56,6,10, + 10,8,1,0,48,48,48,72,72,72,72,132,132,132,6,14, + 14,8,1,254,8,8,252,144,144,160,248,160,160,192,192,252, + 128,128,7,10,10,8,0,255,2,60,70,74,126,80,96,66, + 124,128,7,10,10,8,1,0,62,8,8,8,8,62,8,136, + 136,112,7,13,13,8,1,254,8,8,0,24,8,8,62,8, + 8,8,8,144,96,7,12,12,8,1,254,112,136,136,136,136, + 136,136,136,152,104,8,6,7,10,10,8,1,254,104,152,136, + 136,136,136,152,104,8,6,6,10,10,8,1,0,120,68,68, + 68,248,80,72,72,68,68,6,8,8,8,1,0,88,100,68, + 224,64,64,64,64,7,10,10,8,1,0,130,130,68,254,40, + 16,16,16,16,16,7,10,10,8,1,254,68,68,68,254,68, + 36,28,4,4,56,6,8,8,8,1,0,184,196,132,132,248, + 128,132,120,6,8,8,8,1,0,116,140,132,132,132,140,148, + 100,6,8,8,8,1,0,152,164,196,132,132,132,196,184,6, + 11,11,8,1,0,112,128,128,184,196,132,132,132,132,196,184, + 6,8,8,8,1,0,120,132,4,4,4,4,132,120,6,9, + 9,8,1,255,120,132,128,128,128,152,164,120,128,7,12,12, + 8,1,255,8,8,8,104,152,136,136,136,136,152,104,6,7, + 11,11,8,1,0,6,8,8,104,152,136,136,136,136,152,104, + 6,8,8,8,1,0,120,132,132,252,4,4,132,120,6,8, + 8,8,1,0,120,132,4,4,252,132,132,120,7,8,8,8, + 1,0,114,140,8,8,248,136,136,112,6,8,8,8,1,0, + 120,132,128,120,128,128,132,120,6,8,8,8,1,0,120,132, + 4,120,4,4,132,120,7,8,8,8,1,0,114,140,8,112, + 8,8,136,112,6,8,8,8,1,0,120,132,132,184,132,132, + 132,120,7,10,10,8,1,254,24,8,8,8,62,8,8,8, + 144,96,7,11,11,8,1,254,6,104,152,136,136,136,152,104, + 8,136,112,6,10,10,8,1,254,116,140,132,132,132,140,116, + 4,132,120,6,8,8,8,1,0,120,132,128,128,156,132,132, + 124,6,10,10,8,1,254,132,132,132,72,72,48,48,72,72, + 48,6,8,8,8,1,0,132,132,72,72,48,48,72,48,6, + 11,11,8,1,254,132,132,132,132,132,132,140,116,4,4,4, + 6,11,11,8,1,0,112,128,128,184,196,132,132,132,132,132, + 132,6,11,11,8,1,0,112,128,128,184,196,132,132,132,132, + 132,152,5,11,11,8,2,0,32,32,0,96,32,32,248,32, + 32,32,248,3,8,8,8,3,0,128,128,128,128,128,128,128, + 96,5,8,8,8,2,0,248,32,32,32,32,32,32,248,6, + 10,10,8,1,0,48,16,16,16,116,152,16,16,16,124,6, + 10,10,8,1,0,48,16,16,112,144,124,16,16,16,124,4, + 11,11,8,3,255,192,64,64,64,64,64,64,64,64,64,48, + 7,12,12,8,1,254,96,32,62,34,36,40,44,34,34,250, + 18,12,7,8,8,8,1,0,146,146,146,146,146,146,146,110, + 7,10,10,8,1,254,146,146,146,146,146,146,146,110,2,2, + 7,9,9,8,1,255,236,146,146,146,146,146,146,130,12,7, + 9,9,8,1,255,44,50,34,34,34,34,34,34,192,7,9, + 9,8,1,255,176,200,136,136,136,136,136,136,6,6,8,8, + 8,1,0,132,132,196,164,148,140,132,132,6,8,8,8,1, + 0,120,132,132,252,132,132,132,120,7,8,8,8,1,0,110, + 144,144,156,144,144,144,110,7,8,8,8,1,0,124,130,130, + 146,146,146,146,108,7,12,12,8,1,254,16,16,124,146,146, + 146,146,146,146,124,16,16,6,8,8,8,1,0,4,4,4, + 4,4,132,140,116,6,10,10,8,1,0,4,4,4,4,4, + 4,4,132,140,116,7,9,9,8,1,255,8,8,8,8,8, + 136,152,104,6,6,10,10,8,1,254,184,196,132,128,128,128, + 128,128,128,128,6,9,9,8,1,255,184,196,132,128,128,128, + 128,128,96,6,8,8,8,1,0,120,132,132,128,128,128,128, + 128,6,8,8,8,1,0,120,132,132,4,4,4,4,4,6, + 8,8,8,1,0,248,132,132,248,136,132,132,132,6,8,8, + 8,1,0,132,132,132,136,248,132,132,248,6,10,10,8,1, + 254,120,132,128,96,24,4,132,248,128,96,5,12,12,8,1, + 255,24,32,32,32,32,32,32,32,32,32,32,192,5,12,12, + 8,1,255,24,32,32,32,32,32,32,248,32,32,32,192,5, + 9,9,8,1,255,192,32,32,32,32,32,32,32,24,6,12, + 12,8,1,255,12,16,16,16,16,16,16,16,16,112,156,96, + 5,10,10,8,1,0,192,32,32,32,32,32,32,248,32,32, + 6,11,11,8,1,255,32,32,248,32,32,32,32,32,32,32, + 28,7,8,8,8,1,0,68,68,68,254,68,68,76,52,6, + 8,8,8,1,0,132,72,132,132,132,132,72,48,6,8,8, + 8,1,0,152,132,132,132,132,136,144,96,6,8,8,8,1, + 0,48,48,72,72,72,132,132,132,7,8,8,8,1,0,108, + 146,146,146,146,146,146,130,6,10,10,8,1,254,120,128,128, + 176,200,132,132,132,132,132,7,8,8,8,1,0,130,130,68, + 40,16,16,16,16,7,10,10,8,1,254,248,16,16,32,32, + 64,64,248,8,6,7,9,9,8,1,255,252,4,8,16,32, + 76,146,252,32,6,10,10,8,1,254,124,8,16,32,56,4, + 4,4,132,120,6,10,10,8,1,254,124,8,16,32,56,4, + 4,100,148,120,6,10,10,8,1,0,120,132,132,4,8,16, + 16,16,16,16,6,10,10,8,1,0,120,132,132,128,64,32, + 32,32,32,32,6,10,10,8,1,0,16,16,16,16,16,8, + 4,132,132,120,6,10,10,8,1,254,120,132,128,128,128,128, + 128,128,132,120,6,8,8,8,1,0,120,132,132,180,180,132, + 132,120,6,8,8,8,1,0,248,132,132,248,132,132,132,248, + 6,8,8,8,1,0,120,132,132,116,132,132,132,120,7,8, + 8,8,1,0,118,136,128,128,152,136,136,120,5,8,8,8, + 2,0,136,136,136,248,136,136,136,136,6,13,13,8,1,254, + 8,8,0,24,8,8,8,8,8,8,124,144,96,6,10,10, + 8,1,254,132,68,36,20,12,20,36,68,4,4,6,8,8, + 8,1,0,128,128,128,128,128,128,128,252,7,11,11,8,1, + 254,6,104,152,136,136,136,136,152,104,8,8,6,10,10,8, + 1,0,120,132,132,4,8,16,16,124,16,16,6,10,10,8, + 1,0,120,132,132,128,64,32,32,248,32,32,7,11,11,8, + 1,0,32,32,32,126,162,164,164,168,168,176,126,7,13,13, + 8,1,254,32,32,32,126,162,164,168,172,162,162,98,18,12, + 7,12,12,8,1,255,32,32,32,126,162,164,168,176,180,170, + 124,8,7,10,10,8,1,0,64,64,236,80,80,72,68,66, + 66,60,7,13,13,8,1,254,6,72,72,248,72,72,72,72, + 72,72,56,8,48,7,11,11,8,1,255,64,64,236,82,80, + 80,80,84,90,60,8,7,12,12,8,1,254,96,144,128,220, + 162,162,162,162,162,162,4,24,6,10,10,8,2,0,128,128, + 128,156,160,160,152,132,132,248,6,10,10,8,1,0,128,128, + 128,128,252,136,144,160,192,252,7,11,11,8,1,0,130,146, + 146,146,108,0,130,146,146,146,108,6,10,10,8,1,0,252, + 132,132,132,0,0,252,132,132,132,5,10,10,8,1,254,200, + 72,72,72,72,72,88,40,8,8,7,10,10,8,1,254,200, + 72,72,72,72,72,88,40,8,6,5,6,6,8,2,4,128, + 128,176,200,136,136,5,7,7,8,2,4,112,136,128,176,200, + 136,136,4,7,7,8,2,4,16,0,16,16,16,144,96,5, + 5,5,8,2,5,176,200,128,128,128,5,5,5,8,1,5, + 8,8,8,152,104,7,6,6,8,1,4,8,8,8,152,104, + 6,5,6,6,8,1,4,136,144,240,136,136,240,5,4,4, + 8,1,6,136,168,168,80,5,5,5,8,1,5,136,136,120, + 8,112,3,3,3,8,2,7,32,64,128,6,3,3,8,1, + 7,36,72,144,2,4,4,8,3,6,64,128,128,192,2,4, + 4,8,3,6,192,64,64,128,2,4,4,8,3,6,192,128, + 128,64,4,6,6,8,2,5,192,32,16,16,32,192,4,6, + 6,8,2,5,48,64,128,128,64,48,6,7,7,8,1,4, + 120,132,4,4,56,32,32,6,7,7,8,1,4,120,132,128, + 128,112,16,16,4,7,7,8,2,4,16,32,64,128,64,32, + 16,4,7,7,8,2,4,128,64,32,16,32,64,128,7,4, + 4,8,1,6,16,40,68,130,7,4,4,8,1,6,130,68, + 40,16,4,2,2,8,2,8,96,144,4,2,2,8,2,8, + 144,96,1,3,3,8,4,7,128,128,128,4,1,1,8,2, + 9,240,4,2,2,8,2,8,48,192,4,2,2,8,2,8, + 192,48,1,4,4,8,4,0,128,128,128,128,4,1,1,8, + 2,0,240,4,2,2,8,2,255,192,48,4,2,2,8,2, + 255,48,192,3,6,6,8,2,1,224,64,0,0,64,224,3, + 2,2,8,2,4,224,64,4,6,6,8,2,2,192,32,16, + 16,32,192,4,6,6,8,2,2,48,64,128,128,64,48,5, + 5,5,8,1,2,32,32,32,32,248,5,5,5,8,1,2, + 248,32,32,32,32,5,5,5,8,1,2,32,32,248,32,32, + 5,1,1,8,1,4,248,6,3,3,8,1,9,132,132,120, + 2,2,2,8,3,10,192,192,4,3,3,8,2,9,96,144, + 96,3,2,2,8,4,254,128,96,6,2,2,8,1,10,100, + 152,7,2,2,8,1,10,102,136,7,4,4,8,0,3,32, + 96,162,28,6,5,5,8,1,5,132,72,48,72,132,5,6, + 6,8,1,4,136,80,32,80,80,32,3,6,6,8,2,6, + 192,64,64,64,64,224,5,5,5,8,1,5,120,128,112,8, + 240,5,5,5,8,1,5,136,80,32,80,136,5,5,5,8, + 1,7,120,128,128,112,16,5,11,11,8,1,0,248,8,8, + 8,8,8,8,8,8,8,8,5,11,11,8,1,0,8,8, + 248,8,8,8,8,8,8,8,8,5,11,11,8,1,0,8, + 8,8,8,8,248,8,8,8,8,8,5,11,11,8,1,0, + 8,8,8,8,8,8,8,8,248,8,8,5,11,11,8,1, + 0,8,8,8,8,8,8,8,8,8,8,248,5,6,6,8, + 1,0,128,128,128,128,128,248,4,7,7,8,1,0,128,128, + 128,240,128,128,128,5,3,3,8,1,0,136,80,32,6,3, + 3,8,1,9,252,0,252,6,4,4,8,1,8,204,68,68, + 136,5,3,3,8,1,255,136,80,32,5,3,3,8,1,255, + 32,80,136,3,5,5,8,3,255,32,64,128,64,32,3,5, + 5,8,3,255,128,64,32,64,128,4,3,3,8,2,255,96, + 144,96,3,3,3,8,2,9,128,64,32,6,3,3,8,1, + 9,144,72,36,6,3,3,8,1,9,36,72,144,6,2,2, + 8,1,254,100,152,2,7,7,8,3,4,192,192,0,0,0, + 192,192,3,4,4,8,2,7,224,128,128,128,3,4,4,8, + 2,7,224,32,32,32,3,4,4,8,2,0,128,128,128,224, + 3,4,4,8,2,0,32,32,32,224,6,3,3,8,1,254, + 132,132,252,6,3,3,8,1,254,128,128,252,6,5,5,8, + 1,3,32,64,252,64,32}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w=16 h=16 x=14 y=12 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[3556] U8G_SECTION(".progmem.u8g_font_unifont_67_75") = { + 0,16,16,0,254,3,2,120,4,26,16,255,0,14,254,10, + 0,6,5,5,8,1,4,32,64,252,64,32,5,6,6,8, + 2,3,32,112,168,32,32,32,6,5,5,8,1,3,16,8, + 252,8,16,5,6,6,8,2,3,32,32,32,168,112,32,8, + 5,5,8,0,3,36,66,255,66,36,5,9,9,8,2,1, + 32,112,168,32,32,32,168,112,32,6,6,6,8,1,3,240, + 192,160,144,8,4,6,6,6,8,1,3,60,12,20,36,64, + 128,6,6,6,8,1,3,128,64,36,20,12,60,6,6,6, + 8,1,2,4,8,144,160,192,240,7,9,9,8,1,1,8, + 8,40,72,254,72,40,8,8,7,9,9,8,1,1,32,32, + 40,36,254,36,40,32,32,7,5,5,8,1,3,32,76,242, + 64,32,7,5,5,8,1,3,8,100,158,4,8,8,5,5, + 8,0,3,36,72,255,72,36,5,9,9,8,2,1,32,112, + 168,32,112,168,32,32,32,8,5,5,8,0,3,36,18,255, + 18,36,5,9,9,8,2,1,32,32,32,168,112,32,168,112, + 32,7,5,5,8,1,3,34,68,248,68,34,7,5,5,8, + 1,3,136,68,62,68,136,6,5,5,8,1,3,36,68,252, + 68,36,5,6,6,8,2,3,32,112,168,32,32,248,6,5, + 5,8,1,3,144,136,252,136,144,5,6,6,8,2,3,248, + 32,32,168,112,32,5,10,10,8,2,0,32,112,168,32,32, + 32,168,112,32,248,7,6,6,8,1,3,4,34,66,252,64, + 32,7,6,6,8,1,3,64,136,132,126,4,8,7,6,6, + 8,1,3,4,42,74,252,72,40,7,6,6,8,1,3,64, + 168,164,126,36,40,8,5,5,8,0,3,36,90,231,66,36, + 8,9,9,8,0,1,8,8,44,74,255,74,44,8,8,6, + 10,10,8,1,0,128,128,144,176,208,144,16,84,56,16,5, + 10,10,8,1,0,32,64,240,72,40,8,8,8,8,8,5, + 10,10,8,2,0,32,16,120,144,160,128,128,128,128,128,5, + 10,10,8,1,0,8,8,8,8,8,40,72,240,64,32,5, + 10,10,8,2,0,128,128,128,128,128,160,144,120,16,32,7, + 5,5,8,1,1,248,8,42,28,8,5,8,8,8,1,2, + 8,8,8,40,72,248,64,32,8,5,5,8,0,3,30,33, + 169,113,32,8,5,5,8,0,3,120,132,149,142,4,6,8, + 8,8,1,3,252,0,240,192,160,144,8,4,6,11,11,8, + 1,0,160,192,252,192,160,0,20,12,252,12,20,6,6,6, + 8,1,2,92,152,148,132,132,120,6,6,6,8,1,2,232, + 100,164,132,132,120,6,3,3,8,1,5,32,64,252,6,3, + 3,8,1,3,252,64,32,3,6,6,8,4,3,128,192,160, + 128,128,128,3,6,6,8,2,3,32,96,160,32,32,32,6, + 3,3,8,1,5,16,8,252,6,3,3,8,1,3,252,8, + 16,3,6,6,8,4,2,128,128,128,160,192,128,3,6,6, + 8,2,3,32,32,32,160,96,32,6,11,11,8,1,0,16, + 8,252,8,16,0,32,64,252,64,32,8,6,6,8,0,3, + 36,116,164,37,46,36,6,11,11,8,1,0,32,64,252,64, + 32,0,16,8,252,8,16,6,11,11,8,1,0,32,64,252, + 64,32,0,32,64,252,64,32,8,6,6,8,0,3,36,126, + 165,36,36,36,6,11,11,8,1,0,16,8,252,8,16,0, + 16,8,252,8,16,8,6,6,8,0,3,36,36,36,165,126, + 36,6,7,7,8,1,2,32,64,252,0,252,8,16,6,7, + 7,8,1,2,16,8,252,0,252,64,32,7,9,9,8,0, + 1,8,8,40,126,136,126,40,8,8,8,9,9,8,0,1, + 8,8,44,126,137,126,44,8,8,7,9,9,8,1,1,32, + 32,40,252,34,252,40,32,32,6,5,5,8,1,3,32,124, + 128,124,32,5,6,6,8,2,3,32,80,216,80,80,80,6, + 5,5,8,1,3,16,248,4,248,16,5,6,6,8,2,3, + 80,80,80,216,80,32,8,5,5,8,0,3,36,126,129,126, + 36,5,8,8,8,2,2,32,80,216,80,80,216,80,32,6, + 6,6,8,1,3,240,160,208,168,20,8,6,6,6,8,1, + 3,60,20,44,84,160,64,6,6,6,8,1,3,8,20,168, + 208,160,240,6,6,6,8,1,3,64,160,84,44,20,60,7, + 7,7,8,0,2,16,62,64,254,64,62,16,7,7,7,8, + 1,2,16,248,4,254,4,248,16,8,5,5,8,0,3,32, + 66,245,72,32,8,5,5,8,0,3,4,66,175,18,4,5, + 10,10,8,2,0,32,112,168,32,32,248,32,248,32,32,5, + 10,10,8,2,0,32,32,248,32,248,32,32,168,112,32,7, + 5,5,8,1,3,32,64,238,64,32,5,10,10,8,2,0, + 32,112,168,0,32,32,32,0,32,32,7,5,5,8,1,3, + 8,4,238,4,8,5,10,10,8,2,0,32,32,0,32,32, + 32,0,168,112,32,6,5,5,8,1,3,160,192,252,192,160, + 6,5,5,8,1,3,20,12,252,12,20,8,7,7,8,0, + 2,16,48,95,129,95,48,16,7,10,10,8,1,0,16,40, + 68,238,40,40,40,40,40,56,8,7,7,8,0,2,8,12, + 250,129,250,12,8,7,10,10,8,1,0,56,40,40,40,40, + 40,238,68,40,16,7,12,12,8,1,0,16,40,68,238,40, + 40,40,40,56,0,56,56,7,12,12,8,1,0,16,40,68, + 198,68,68,68,68,68,198,130,254,7,12,12,8,1,0,16, + 40,124,198,68,68,68,68,68,198,130,254,7,12,12,8,1, + 0,16,56,84,214,84,84,84,84,84,214,146,254,7,14,14, + 8,1,0,16,40,84,238,68,198,68,68,68,68,68,68,68, + 124,7,14,14,8,1,0,16,40,84,238,68,198,68,68,68, + 68,68,198,130,254,7,7,7,8,1,2,16,216,244,130,244, + 216,16,7,9,9,8,1,0,254,128,184,176,168,132,130,128, + 128,7,9,9,8,1,0,2,2,130,66,42,26,58,2,254, + 5,11,11,8,2,0,32,80,216,80,80,80,80,80,216,80, + 32,13,5,10,16,1,3,14,32,17,16,255,248,17,16,14, + 32,8,10,10,8,0,0,36,46,53,36,36,36,36,172,116, + 36,8,15,15,8,0,254,4,2,255,2,4,4,2,255,2, + 4,4,2,255,2,4,8,5,5,8,0,3,36,68,255,68, + 36,8,5,5,8,0,3,36,34,255,34,36,11,5,10,16, + 2,3,36,128,68,64,255,224,68,64,36,128,12,5,10,16, + 1,3,37,0,69,0,255,240,69,0,37,0,12,5,10,16, + 2,3,10,64,10,32,255,240,10,32,10,64,13,5,10,16, + 1,3,37,32,69,16,255,248,69,16,37,32,8,5,5,8, + 0,3,32,96,191,96,32,8,5,5,8,0,3,4,6,253, + 6,4,12,5,10,16,2,3,32,64,96,96,191,208,96,96, + 32,64,16,8,16,16,0,6,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,16,2,4,16,0,254,255,255, + 255,255,16,4,8,16,0,254,255,255,255,255,255,255,255,255, + 16,6,12,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,16,8,16,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,16,10,20,16,0,254,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,16,12,24,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 16,14,28,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,16,16,32,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,14,16,32,16,0,254,255,252, + 255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,252, + 255,252,255,252,255,252,255,252,255,252,255,252,255,252,12,16, + 32,16,0,254,255,240,255,240,255,240,255,240,255,240,255,240, + 255,240,255,240,255,240,255,240,255,240,255,240,255,240,255,240, + 255,240,255,240,10,16,32,16,0,254,255,192,255,192,255,192, + 255,192,255,192,255,192,255,192,255,192,255,192,255,192,255,192, + 255,192,255,192,255,192,255,192,255,192,8,16,16,16,0,254, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 6,16,16,16,0,254,252,252,252,252,252,252,252,252,252,252, + 252,252,252,252,252,252,4,16,16,16,0,254,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,2,16,16,16, + 0,254,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,8,16,16,16,8,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,15,16,32,16,0,254,136,136, + 34,34,136,136,34,34,136,136,34,34,136,136,34,34,136,136, + 34,34,136,136,34,34,136,136,34,34,136,136,34,34,16,16, + 32,16,0,254,170,170,85,85,170,170,85,85,170,170,85,85, + 170,170,85,85,170,170,85,85,170,170,85,85,170,170,85,85, + 170,170,85,85,16,16,32,16,0,254,238,238,187,187,238,238, + 187,187,238,238,187,187,238,238,187,187,238,238,187,187,238,238, + 187,187,238,238,187,187,238,238,187,187,16,2,4,16,0,12, + 255,255,255,255,2,16,16,16,14,254,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,8,8,8,16,0,254, + 255,255,255,255,255,255,255,255,8,8,8,16,8,254,255,255, + 255,255,255,255,255,255,8,8,8,16,0,6,255,255,255,255, + 255,255,255,255,16,16,32,16,0,254,255,0,255,0,255,0, + 255,0,255,0,255,0,255,0,255,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,16,16,32,16,0,254, + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, + 16,16,32,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,255,0,255,0,255,0,255,0, + 255,0,255,0,255,0,16,16,32,16,0,254,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,255,0,255, + 0,255,0,255,0,255,0,255,0,255,0,255,8,8,8,16, + 8,6,255,255,255,255,255,255,255,255,16,16,32,16,0,254, + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + 16,16,32,16,0,254,0,255,0,255,0,255,0,255,0,255, + 0,255,0,255,0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,7,7,7,8,1,1,254,254,254,254, + 254,254,254,7,7,7,8,1,1,254,130,130,130,130,130,254, + 7,7,7,8,1,1,124,130,130,130,130,130,124,7,7,7, + 8,1,1,254,130,186,186,186,130,254,7,7,7,8,1,1, + 254,130,254,130,254,130,254,7,7,7,8,1,1,254,170,170, + 170,170,170,254,7,7,7,8,1,1,254,170,254,170,254,170, + 254,7,7,7,8,1,1,254,166,146,202,166,146,254,7,7, + 7,8,1,1,254,202,146,166,202,146,254,7,7,7,8,1, + 1,254,170,214,170,214,170,254,4,4,4,8,2,4,240,240, + 240,240,4,4,4,8,2,4,240,144,144,240,7,4,4,8, + 1,4,254,254,254,254,7,4,4,8,1,4,254,130,130,254, + 4,7,7,8,2,2,240,240,240,240,240,240,240,4,7,7, + 8,2,2,240,144,144,144,144,144,240,8,3,3,8,0,4, + 63,126,252,8,3,3,8,0,4,63,66,252,6,6,6,8, + 1,3,48,48,120,120,252,252,6,6,6,8,1,3,48,48, + 72,72,132,252,6,3,3,8,1,3,48,120,252,6,3,3, + 8,1,3,48,72,252,6,6,6,8,1,3,192,240,252,252, + 240,192,6,6,6,8,1,3,192,176,140,140,176,192,4,4, + 4,8,2,4,192,240,240,192,4,4,4,8,2,4,192,176, + 176,192,6,5,5,8,1,3,192,240,252,240,192,6,5,5, + 8,1,3,192,176,140,176,192,6,6,6,8,1,3,252,252, + 120,120,48,48,6,6,6,8,1,3,252,132,72,72,48,48, + 6,3,3,8,1,3,252,120,48,6,3,3,8,1,3,252, + 72,48,6,6,6,8,1,3,12,60,252,252,60,12,6,6, + 6,8,1,3,12,52,196,196,52,12,4,4,4,8,2,4, + 48,240,240,48,4,4,4,8,2,4,48,208,208,48,6,5, + 5,8,1,3,12,60,252,60,12,6,5,5,8,1,3,12, + 52,196,52,12,7,7,7,8,1,2,16,56,124,254,124,56, + 16,7,7,7,8,1,2,16,40,68,130,68,40,16,7,7, + 7,8,1,2,16,40,84,186,84,40,16,7,7,7,8,1, + 2,56,68,178,186,154,68,56,6,10,10,8,1,1,48,48, + 72,72,132,132,72,72,48,48,7,7,7,8,1,2,56,68, + 130,130,130,68,56,7,7,7,8,1,2,40,0,130,0,130, + 0,40,7,7,7,8,1,2,56,108,170,170,170,108,56,7, + 7,7,8,1,2,56,68,146,170,146,68,56,7,7,7,8, + 1,2,56,124,254,254,254,124,56,7,7,7,8,1,2,56, + 100,226,226,226,100,56,7,7,7,8,1,2,56,76,142,142, + 142,76,56,7,7,7,8,1,2,56,68,130,130,254,124,56, + 7,7,7,8,1,2,56,124,254,130,130,68,56,7,7,7, + 8,1,2,56,92,158,158,130,68,56,7,7,7,8,1,2, + 56,76,142,142,254,124,56,4,7,7,8,1,2,48,112,240, + 240,240,112,48,4,7,7,8,4,2,192,224,240,240,240,224, + 192,8,16,16,8,0,254,255,255,255,255,255,255,231,195,195, + 231,255,255,255,255,255,255,8,16,16,8,0,254,255,255,255, + 255,255,231,219,189,189,219,231,255,255,255,255,255,8,8,8, + 8,0,6,255,255,255,255,255,231,219,189,8,8,8,8,0, + 254,189,219,231,255,255,255,255,255,4,4,4,8,1,5,48, + 64,128,128,4,4,4,8,4,5,192,32,16,16,4,4,4, + 8,4,2,16,16,32,192,4,4,4,8,1,2,128,128,64, + 48,7,4,4,8,1,5,56,68,130,130,7,4,4,8,1, + 2,130,130,68,56,6,6,6,8,1,255,4,12,28,60,124, + 252,6,6,6,8,1,255,128,192,224,240,248,252,6,6,6, + 8,1,6,252,248,240,224,192,128,6,6,6,8,1,6,252, + 124,60,28,12,4,5,5,5,8,1,2,112,136,136,136,112, + 6,6,6,8,1,3,252,228,228,228,228,252,6,6,6,8, + 1,3,252,156,156,156,156,252,6,6,6,8,1,3,252,244, + 228,196,132,252,6,6,6,8,1,3,252,132,140,156,188,252, + 7,6,6,8,1,3,254,146,146,146,146,254,7,7,7,8, + 1,2,16,40,40,68,84,130,254,6,6,6,8,1,2,48, + 48,104,104,228,252,6,7,7,8,1,2,48,48,88,88,156, + 156,252,8,8,8,8,0,2,60,66,129,129,129,129,66,60, + 6,6,6,8,1,0,252,164,228,132,132,252,6,6,6,8, + 1,0,252,132,132,228,164,252,6,6,6,8,1,0,252,132, + 132,156,148,252,6,6,6,8,1,0,252,148,156,132,132,252, + 8,8,8,8,0,0,60,82,145,241,129,129,66,60,8,8, + 8,8,0,0,60,66,129,129,241,145,82,60,8,8,8,8, + 0,0,60,66,129,129,143,137,74,60,8,8,8,8,0,0, + 60,74,137,143,129,129,66,60,6,6,6,8,1,6,252,136, + 144,160,192,128,6,6,6,8,1,6,252,68,36,20,12,4, + 6,6,6,8,1,255,128,192,160,144,136,252,6,6,6,8, + 1,255,252,132,132,132,132,252,6,6,6,8,1,255,252,252, + 252,252,252,252,4,4,4,8,2,0,240,144,144,240,4,4, + 4,8,2,0,240,240,240,240,6,6,6,8,1,255,4,12, + 20,36,68,252}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 14 + Calculated Max Values w=16 h=16 x= 4 y= 5 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-1 + X Font ascent =14 descent=-1 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[7240] U8G_SECTION(".progmem.u8g_font_unifont_72_73") = { + 0,16,16,0,254,10,4,144,6,240,0,255,255,14,254,14, + 255,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,14,5,10,16,1,4,115,36,132, + 164,100,188,20,164,227,36,13,5,10,16,1,4,119,72,130, + 72,98,48,18,72,226,72,13,5,10,16,1,4,247,72,130, + 72,242,48,130,72,242,72,14,5,10,16,1,4,243,124,132, + 144,244,144,132,144,243,16,14,5,10,16,1,4,244,152,132, + 164,246,164,133,172,244,156,13,5,10,16,1,4,99,72,148, + 80,244,96,148,80,147,72,14,5,10,16,1,4,231,160,148, + 32,231,160,148,32,231,188,10,5,10,16,1,4,241,192,138, + 0,241,128,136,64,243,128,11,5,10,16,1,4,139,224,136, + 128,248,128,136,128,136,128,11,5,10,16,1,4,131,224,130, + 0,131,224,130,0,250,0,11,5,10,16,1,4,139,224,136, + 128,136,128,80,128,32,128,11,5,10,16,1,4,251,224,130, + 0,251,224,130,0,130,0,11,5,10,16,1,4,123,192,130, + 32,131,192,130,64,122,32,11,5,10,16,1,4,121,192,130, + 32,114,32,10,32,241,192,11,5,10,16,1,4,123,224,128, + 128,112,128,8,128,243,224,12,5,10,16,1,4,228,112,148, + 64,148,112,148,64,231,112,13,5,10,16,1,4,227,16,148, + 48,148,16,148,16,227,56,13,5,10,16,1,4,227,48,148, + 8,148,16,148,32,227,56,13,5,10,16,1,4,227,48,148, + 8,148,48,148,8,227,48,13,5,10,16,1,4,227,8,148, + 24,148,40,148,56,227,8,14,5,10,16,1,4,147,36,212, + 168,212,176,183,168,148,164,14,5,10,16,1,4,104,164,133, + 52,98,44,18,36,226,36,13,5,10,16,1,4,247,112,130, + 72,242,112,130,72,242,112,13,5,10,16,1,4,102,72,137, + 104,143,88,137,72,105,72,11,5,10,16,1,4,250,32,131, + 96,250,160,130,32,250,32,14,5,10,16,1,4,116,184,132, + 164,100,184,20,164,227,56,14,5,10,16,1,4,243,156,132, + 32,243,32,128,160,247,28,9,5,10,16,1,4,243,128,132, + 0,243,0,128,128,135,0,9,5,10,16,1,4,115,128,132, + 0,179,0,144,128,119,0,9,5,10,16,1,4,227,128,148, + 0,227,0,160,128,151,0,9,5,10,16,1,4,147,128,148, + 0,147,0,144,128,103,0,9,5,10,16,1,4,119,0,132, + 128,103,0,20,0,228,0,14,5,10,16,1,4,231,160,148, + 32,151,160,148,32,231,188,6,10,10,8,1,0,40,48,32, + 96,184,36,36,36,36,56,6,2,2,8,1,0,132,252,6, + 9,9,8,1,1,144,208,176,144,0,32,32,32,60,7,7, + 7,8,1,2,2,20,42,84,168,80,128,6,11,11,8,1, + 0,120,132,132,128,64,32,16,16,0,16,16,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 5,10,10,8,2,0,56,40,40,40,32,32,160,160,160,224, + 5,10,10,8,2,0,8,8,8,8,8,248,136,136,136,136, + 5,10,10,8,2,0,136,136,136,136,136,248,32,32,32,32, + 5,10,10,8,2,0,32,32,32,32,32,248,136,136,136,136, + 5,10,10,8,2,0,248,168,168,168,32,32,168,168,168,248, + 5,5,5,8,2,5,136,216,168,216,136,6,8,8,8,1, + 1,28,220,220,192,192,220,220,28,8,10,10,8,0,0,3, + 3,3,27,24,24,216,192,192,192,7,10,10,8,1,0,14, + 174,174,160,160,160,160,160,160,160,7,9,9,8,1,0,218, + 218,218,218,218,218,218,218,218,8,10,10,8,0,0,160,160, + 80,40,40,20,20,10,5,5,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,15,15,30,16, + 0,255,7,192,24,48,32,8,65,4,67,4,133,2,129,2, + 129,2,129,2,129,2,65,4,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,72,36, + 128,34,128,34,128,194,131,2,132,2,72,36,79,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,72,36,128,34,128,34,128,194,128,34,128,34,72,36, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,68,64,196,129,66,130,66,132,66,136,66, + 159,242,64,68,65,244,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,228,72,4,136,2,143,194, + 128,34,128,34,128,34,72,36,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,72,36, + 136,2,136,2,143,194,136,34,136,34,72,36,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,72,36,128,66,128,66,128,130,129,2,129,2,66,4, + 66,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,72,36,136,34,136,34,135,194,136,34, + 136,34,72,36,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,71,196,72,36,136,34,136,34, + 135,226,128,34,128,34,72,36,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,72,228,89,20, + 137,18,137,18,137,18,137,18,137,18,73,20,92,228,32,8, + 24,48,7,192,14,14,28,16,1,255,31,224,32,16,72,72, + 152,196,136,68,136,68,136,68,136,68,136,68,136,68,156,228, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 73,200,154,36,139,36,136,36,136,196,137,4,138,4,138,20, + 159,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 32,16,73,200,154,36,136,36,136,36,136,196,136,36,138,36, + 138,36,157,196,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,32,16,72,72,152,196,136,196,137,68,137,68,138,68, + 143,244,136,68,156,228,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,75,40,154,196,138,4,138,196,139,36, + 136,36,136,36,138,36,157,196,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,16,72,200,153,36,138,4,138,196, + 139,36,138,36,138,36,138,36,157,196,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,75,232,154,36,136,36, + 136,68,136,132,136,132,136,132,136,132,157,196,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,73,200,154,36, + 138,36,138,36,137,196,138,36,138,36,138,36,157,196,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,73,200, + 154,36,138,36,138,36,137,228,136,36,136,36,138,36,157,196, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 88,200,165,36,133,36,133,36,137,36,145,36,161,36,165,36, + 188,196,64,8,32,16,31,224,15,14,28,16,0,255,64,4, + 129,2,129,2,129,2,129,2,129,2,129,2,129,2,129,2, + 129,2,129,2,129,2,129,2,64,4,15,14,28,16,0,255, + 64,4,135,130,136,66,136,66,128,66,128,66,128,66,128,130, + 131,2,132,2,136,66,136,66,143,194,64,4,15,14,28,16, + 0,255,64,4,135,130,136,66,136,66,128,66,128,130,131,2, + 128,130,128,66,128,66,136,66,136,66,135,130,64,4,15,14, + 28,16,0,255,65,132,130,130,130,130,130,130,132,130,132,130, + 136,130,136,130,143,226,128,130,128,130,128,130,128,130,64,4, + 15,14,28,16,0,255,64,4,143,194,136,2,136,2,136,2, + 139,130,140,66,136,66,128,66,128,66,136,66,136,66,135,130, + 64,4,15,14,28,16,0,255,64,4,135,130,136,66,136,66, + 136,2,136,2,139,130,140,66,136,66,136,66,136,66,136,66, + 135,130,64,4,15,14,28,16,0,255,64,4,143,226,136,34, + 136,34,128,66,128,130,128,130,128,130,129,2,129,2,129,2, + 129,2,129,2,64,4,15,14,28,16,0,255,64,4,135,130, + 136,66,136,66,136,66,136,66,135,130,136,66,136,66,136,66, + 136,66,136,66,135,130,64,4,15,14,28,16,0,255,64,4, + 135,130,136,66,136,66,136,66,136,66,136,194,135,66,128,66, + 128,66,136,66,136,66,135,130,64,4,15,14,28,16,0,255, + 64,4,136,226,137,18,137,18,137,18,137,18,137,18,137,18, + 137,18,137,18,137,18,137,18,136,226,64,4,15,14,28,16, + 0,255,64,4,136,34,136,34,136,34,136,34,136,34,136,34, + 136,34,136,34,136,34,136,34,136,34,136,34,64,4,15,14, + 28,16,0,255,64,4,145,226,146,18,146,18,144,18,144,18, + 144,34,144,194,145,2,146,2,146,18,146,18,147,242,64,4, + 15,14,28,16,0,255,64,4,145,226,146,18,146,18,144,18, + 144,34,144,194,144,34,144,18,144,18,146,18,146,18,145,226, + 64,4,15,14,28,16,0,255,64,4,144,98,144,162,144,162, + 144,162,145,34,145,34,146,34,146,34,147,250,144,34,144,34, + 144,34,64,4,15,14,28,16,0,255,64,4,147,242,146,2, + 146,2,146,2,146,226,147,18,146,18,144,18,144,18,146,18, + 146,18,145,226,64,4,15,14,28,16,0,255,64,4,145,226, + 146,18,146,18,146,2,146,2,146,226,147,18,146,18,146,18, + 146,18,146,18,145,226,64,4,15,14,28,16,0,255,64,4, + 147,242,146,18,146,18,144,34,144,66,144,66,144,66,144,130, + 144,130,144,130,144,130,144,130,64,4,15,14,28,16,0,255, + 64,4,145,226,146,18,146,18,146,18,146,18,145,226,146,18, + 146,18,146,18,146,18,146,18,145,226,64,4,15,14,28,16, + 0,255,64,4,145,226,146,18,146,18,146,18,146,18,146,50, + 145,210,144,18,144,18,146,18,146,18,145,226,64,4,15,14, + 28,16,0,255,64,4,156,114,162,138,162,138,130,138,130,138, + 132,138,136,138,144,138,160,138,162,138,162,138,190,114,64,4, + 6,14,14,16,4,255,32,96,160,32,32,32,32,32,32,32, + 32,32,32,36,9,14,28,16,3,255,120,0,132,0,132,0, + 4,0,4,0,4,0,8,0,48,0,64,0,128,0,128,0, + 132,0,132,0,252,128,9,14,28,16,3,255,120,0,132,0, + 132,0,4,0,4,0,8,0,48,0,8,0,4,0,4,0, + 132,0,132,0,132,0,120,128,10,15,30,16,3,254,24,0, + 40,0,40,0,40,0,72,0,72,0,72,0,136,0,136,0, + 254,0,8,0,8,0,8,0,8,64,8,0,9,14,28,16, + 3,255,252,0,128,0,128,0,128,0,128,0,128,0,184,0, + 196,0,132,0,4,0,4,0,132,0,132,0,120,128,9,14, + 28,16,3,255,120,0,132,0,132,0,132,0,128,0,128,0, + 184,0,196,0,132,0,132,0,132,0,132,0,132,0,120,128, + 10,14,28,16,3,255,254,0,130,0,130,0,4,0,8,0, + 8,0,8,0,16,0,16,0,16,0,16,0,16,0,16,0, + 16,64,9,14,28,16,3,255,120,0,132,0,132,0,132,0, + 132,0,72,0,48,0,72,0,132,0,132,0,132,0,132,0, + 132,0,120,128,9,14,28,16,3,255,120,0,132,0,132,0, + 132,0,132,0,132,0,140,0,116,0,4,0,4,0,132,0, + 132,0,132,0,120,128,13,14,28,16,0,255,35,192,100,32, + 164,32,36,32,36,32,36,32,36,32,36,32,36,32,36,32, + 36,32,36,32,36,32,35,200,12,14,28,16,0,255,32,128, + 97,128,162,128,32,128,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,32,128,32,144,14,14,28,16,0,255, + 35,192,100,32,164,32,32,32,32,32,32,32,32,64,33,128, + 34,0,36,0,36,0,36,32,36,32,39,228,14,14,28,16, + 0,255,35,192,100,32,164,32,32,32,32,32,32,64,33,128, + 32,64,32,32,32,32,36,32,36,32,36,32,35,196,13,14, + 28,16,0,255,32,192,97,64,161,64,33,64,34,64,34,64, + 34,64,36,64,36,64,39,240,32,64,32,64,32,64,32,72, + 14,14,28,16,0,255,39,224,100,0,164,0,36,0,36,0, + 36,0,37,192,38,32,36,32,32,32,32,32,36,32,36,32, + 35,196,14,14,28,16,0,255,35,192,100,32,164,32,36,32, + 36,0,36,0,37,192,38,32,36,32,36,32,36,32,36,32, + 36,32,35,196,14,14,28,16,0,255,39,240,100,16,164,16, + 32,32,32,64,32,64,32,64,32,128,32,128,32,128,32,128, + 32,128,32,128,32,132,14,14,28,16,0,255,35,192,100,32, + 164,32,36,32,36,32,34,64,33,128,34,64,36,32,36,32, + 36,32,36,32,36,32,35,196,14,14,28,16,0,255,35,192, + 100,32,164,32,36,32,36,32,36,32,36,96,35,160,32,32, + 32,32,36,32,36,32,36,32,35,196,13,14,28,16,1,255, + 113,192,138,32,138,32,10,32,10,32,10,32,50,32,66,32, + 130,32,130,32,130,32,138,32,138,32,249,200,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,135,132,136,68,128,68, + 135,196,136,68,136,68,135,180,128,4,64,8,48,48,14,14, + 28,16,1,255,48,48,72,8,152,4,136,4,139,132,140,68, + 136,36,136,36,136,36,140,68,155,132,128,4,64,8,48,48, + 14,14,28,16,1,255,48,48,64,8,128,4,128,4,135,132, + 136,68,144,4,144,4,144,36,136,68,135,132,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,64,72,128,196,128,68, + 135,68,136,196,144,68,144,68,144,68,136,196,135,100,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,143,132,144,68,144,68,159,196,144,4,144,68,143,132, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,65,136, + 130,196,130,4,143,132,130,4,130,4,130,4,130,4,130,4, + 135,4,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,100,135,132,136,68,136,68,159,132,144,4, + 143,196,144,36,144,36,79,200,48,48,14,14,28,16,1,255, + 48,48,72,8,152,4,136,4,137,196,142,68,136,68,136,68, + 136,68,136,68,156,228,128,4,64,8,48,48,14,14,28,16, + 1,255,49,48,65,8,128,4,128,4,129,4,131,4,129,4, + 129,4,129,4,129,4,131,132,128,4,64,8,48,48,14,14, + 28,16,1,255,49,48,65,8,128,4,128,4,129,4,131,4, + 129,4,129,4,129,4,129,4,129,4,137,4,70,8,48,48, + 14,14,28,16,1,255,48,48,72,8,152,4,136,4,137,196, + 136,132,137,4,143,4,137,132,136,196,156,228,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,66,8,134,4,130,4, + 130,4,130,4,130,4,130,4,130,4,130,4,135,4,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,150,196,187,68,146,68,146,68,146,68,146,68,187,100, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,64,8, + 128,4,128,4,137,196,158,68,136,68,136,68,136,68,136,68, + 156,228,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,4,143,132,144,68,144,68,144,68,144,68, + 144,68,143,132,128,4,64,8,48,48,14,14,28,16,1,255, + 48,48,64,8,128,4,128,4,139,132,156,68,136,36,136,36, + 136,36,140,68,139,132,136,4,92,8,48,48,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,135,68,136,196,144,68, + 144,68,144,68,136,196,135,68,128,68,64,232,48,48,14,14, + 28,16,1,255,48,48,64,8,128,4,128,4,137,196,158,100, + 136,4,136,4,136,4,136,4,156,4,128,4,64,8,48,48, + 14,14,28,16,1,255,48,48,64,8,128,4,128,4,135,196, + 136,36,136,4,135,196,128,36,136,36,135,196,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,64,8,128,4,130,4, + 130,4,143,132,130,4,130,4,130,4,130,68,131,132,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,136,68,152,196,136,68,136,68,136,68,136,196,143,100, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,64,8, + 128,4,128,4,156,116,136,36,132,68,132,68,130,132,130,132, + 129,4,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,4,191,116,146,36,146,36,137,68,139,68, + 132,132,132,132,128,4,64,8,48,48,14,14,28,16,1,255, + 48,48,64,8,128,4,128,4,156,228,136,68,132,132,131,4, + 132,132,136,68,156,228,128,4,64,8,48,48,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,184,228,144,68,136,132, + 133,4,130,4,130,4,135,4,128,4,64,8,48,48,14,14, + 28,16,1,255,48,48,64,8,128,4,128,4,135,228,132,68, + 136,132,129,4,130,4,132,36,143,196,128,4,64,8,48,48, + 15,15,30,16,0,255,7,192,24,48,33,8,66,132,68,68, + 132,66,132,66,135,194,132,66,132,66,68,68,76,100,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,132,68,68,132,34,132,66,135,130,132,66,132,34,68,68, + 79,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,196,68,36,132,2,132,2,132,2,132,2, + 132,2,68,36,67,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,132,68,68,132,34,132,34, + 132,34,132,34,132,34,68,68,79,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,79,228,68,36, + 132,2,132,2,135,130,132,2,132,2,68,36,79,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,68,36,132,2,132,2,135,130,132,2,132,2,68,4, + 78,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,196,68,36,132,2,132,2,132,226,132,34, + 132,34,68,100,67,164,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,228,68,68,132,66,132,66, + 135,194,132,66,132,66,68,68,78,228,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,67,132,65,4, + 129,2,129,2,129,2,129,2,129,2,65,4,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 65,196,64,132,128,130,128,130,128,130,128,130,128,130,72,132, + 71,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,78,100,68,68,132,130,133,2,134,2,133,2, + 132,130,68,68,78,100,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,4,68,4,132,2,132,2, + 132,2,132,2,132,2,68,36,79,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,76,100,70,196, + 134,194,133,66,133,66,132,66,132,66,68,68,78,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 76,100,68,68,134,66,134,66,133,66,133,66,132,194,68,196, + 76,100,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,132,68,68,136,34,136,34,136,34,136,34, + 136,34,68,68,67,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,132,68,68,132,66,132,66, + 135,130,132,2,132,2,68,4,78,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,67,132,68,68, + 136,34,136,34,136,34,136,34,137,162,68,68,67,164,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,132,68,68,132,66,132,66,135,130,133,2,132,130,68,68, + 78,36,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,132,68,68,132,2,132,2,131,130,128,66, + 128,66,68,68,67,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,228,73,36,129,2,129,2, + 129,2,129,2,129,2,65,4,67,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,78,228,68,68, + 132,66,132,66,132,66,132,66,132,66,68,68,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 76,100,68,68,132,66,132,66,130,130,130,130,130,130,65,4, + 65,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,76,100,69,68,133,66,133,66,133,66,133,66, + 134,194,68,68,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,228,68,68,132,66,130,130, + 129,2,130,130,132,66,68,68,78,228,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,78,228,68,68, + 132,66,130,130,129,2,129,2,129,2,65,4,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,72,36,128,66,128,130,129,2,130,2,132,2,72,36, + 79,228,32,8,24,48,7,192,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,143,132,144,68,128,68,143,196,144,68, + 144,68,143,180,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,40,16,88,8,136,4,139,132,140,68,136,36,136,36, + 136,36,140,68,155,132,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,64,8,128,4,135,132,136,68,144,4, + 144,4,144,4,136,100,135,132,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,80,64,200,128,68,135,68,136,196, + 144,68,144,68,144,68,144,68,143,164,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,135,132, + 136,68,144,36,159,228,144,4,136,36,135,196,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,35,144,66,200,130,4, + 143,132,130,4,130,4,130,4,130,4,130,4,135,4,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,196,135,132,136,68,136,68,143,132,144,4,159,196,144,36, + 80,40,47,208,31,224,14,14,28,16,1,255,31,224,40,16, + 88,8,136,4,139,196,140,68,136,68,136,68,136,68,136,68, + 156,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 33,16,65,8,128,4,129,4,131,4,129,4,129,4,129,4, + 129,4,131,132,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,33,16,65,8,128,4,129,4,131,4,129,4,129,4, + 129,4,129,4,129,4,89,8,38,16,31,224,14,14,28,16, + 1,255,31,224,40,16,88,8,136,4,137,228,136,132,139,4, + 141,132,136,196,136,100,156,244,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,34,16,70,8,130,4,130,4,130,4, + 130,4,130,4,130,4,130,4,135,4,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,150,196, + 187,68,146,68,146,68,146,68,146,68,187,100,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,64,8,128,4, + 139,196,156,68,136,68,136,68,136,68,136,68,156,228,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,4,135,196,136,36,136,36,136,36,136,36,136,36,135,196, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 64,8,128,4,139,132,156,68,136,36,136,36,136,36,140,68, + 139,132,72,8,40,16,31,224,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,135,68,136,196,144,68,144,68,144,68, + 136,196,135,68,64,72,32,80,31,224,14,14,28,16,1,255, + 31,224,32,16,64,8,128,4,137,196,158,100,136,4,136,4, + 136,4,136,4,156,4,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,64,8,128,4,135,196,136,36,140,4, + 131,132,128,100,136,36,135,196,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,16,64,8,130,4,130,4,143,132, + 130,4,130,4,130,4,130,68,131,132,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,136,68, + 152,196,136,68,136,68,136,68,136,68,143,164,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,64,8,128,4, + 156,116,136,36,132,68,132,68,130,132,130,132,129,4,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,4,247,116,162,36,162,36,147,68,149,68,136,132,136,132, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 64,8,128,4,184,228,136,132,133,4,130,4,133,4,136,132, + 184,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,184,228,144,68,136,132,133,4,130,4, + 130,4,135,4,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,32,16,64,8,128,4,143,196,136,68,144,132,131,4, + 132,4,136,68,159,132,64,8,32,16,31,224,16,15,30,16, + 0,254,7,224,24,24,32,4,67,194,68,34,132,33,132,33, + 132,33,132,33,132,33,68,34,67,194,32,4,24,24,7,224, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,188, + 231,60,247,188,247,188,227,28,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 231,220,247,188,247,124,227,28,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 231,220,247,60,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,246,188, + 230,188,246,28,247,188,227,188,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,28, + 231,124,247,60,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,252,246,60,246,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,246,60, + 231,188,247,188,247,124,227,124,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,220,247,60,246,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,220,247,28,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,231,156, + 251,108,247,108,239,108,227,156,127,248,127,248,63,240,15,192, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 144,137,161,133,160,133,160,133,145,201,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,145,137,160,69,160,133,161,5,145,201,80,10, + 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, + 24,24,35,196,76,50,80,10,145,137,160,69,161,133,160,69, + 145,137,80,10,76,50,35,196,24,24,7,224,16,15,30,16, + 0,254,7,224,24,24,35,196,76,50,80,10,146,137,162,133, + 163,197,160,133,144,137,80,10,76,50,35,196,24,24,7,224, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 145,201,161,5,161,133,160,69,145,137,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,145,137,162,5,163,133,162,69,145,137,80,10, + 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, + 24,24,35,196,76,50,80,10,145,201,160,69,160,69,160,133, + 144,137,80,10,76,50,35,196,24,24,7,224,16,15,30,16, + 0,254,7,224,24,24,35,196,76,50,80,10,145,137,162,69, + 161,133,162,69,145,137,80,10,76,50,35,196,24,24,7,224, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 145,137,162,69,161,197,160,69,145,137,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,146,105,166,149,162,149,162,149,151,105,80,10, + 76,50,35,196,24,24,7,224,14,13,26,16,1,255,15,192, + 63,240,127,248,127,248,252,252,251,124,251,124,251,124,252,252, + 127,248,127,248,63,240,15,192}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 6, '1' Height: 3 + Calculated Max Values w= 8 h=10 x= 2 y= 4 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent =11 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_75r[580] U8G_SECTION(".progmem.u8g_font_unifont_75r") = { + 0,16,16,0,254,6,1,137,0,0,32,79,0,11,0,8, + 0,7,7,7,8,1,1,254,254,254,254,254,254,254,7,7, + 7,8,1,1,254,130,130,130,130,130,254,7,7,7,8,1, + 1,124,130,130,130,130,130,124,7,7,7,8,1,1,254,130, + 186,186,186,130,254,7,7,7,8,1,1,254,130,254,130,254, + 130,254,7,7,7,8,1,1,254,170,170,170,170,170,254,7, + 7,7,8,1,1,254,170,254,170,254,170,254,7,7,7,8, + 1,1,254,166,146,202,166,146,254,7,7,7,8,1,1,254, + 202,146,166,202,146,254,7,7,7,8,1,1,254,170,214,170, + 214,170,254,4,4,4,8,2,4,240,240,240,240,4,4,4, + 8,2,4,240,144,144,240,7,4,4,8,1,4,254,254,254, + 254,7,4,4,8,1,4,254,130,130,254,4,7,7,8,2, + 2,240,240,240,240,240,240,240,4,7,7,8,2,2,240,144, + 144,144,144,144,240,8,3,3,8,0,4,63,126,252,8,3, + 3,8,0,4,63,66,252,6,6,6,8,1,3,48,48,120, + 120,252,252,6,6,6,8,1,3,48,48,72,72,132,252,6, + 3,3,8,1,3,48,120,252,6,3,3,8,1,3,48,72, + 252,6,6,6,8,1,3,192,240,252,252,240,192,6,6,6, + 8,1,3,192,176,140,140,176,192,4,4,4,8,2,4,192, + 240,240,192,4,4,4,8,2,4,192,176,176,192,6,5,5, + 8,1,3,192,240,252,240,192,6,5,5,8,1,3,192,176, + 140,176,192,6,6,6,8,1,3,252,252,120,120,48,48,6, + 6,6,8,1,3,252,132,72,72,48,48,6,3,3,8,1, + 3,252,120,48,6,3,3,8,1,3,252,72,48,6,6,6, + 8,1,3,12,60,252,252,60,12,6,6,6,8,1,3,12, + 52,196,196,52,12,4,4,4,8,2,4,48,240,240,48,4, + 4,4,8,2,4,48,208,208,48,6,5,5,8,1,3,12, + 60,252,60,12,6,5,5,8,1,3,12,52,196,52,12,7, + 7,7,8,1,2,16,56,124,254,124,56,16,7,7,7,8, + 1,2,16,40,68,130,68,40,16,7,7,7,8,1,2,16, + 40,84,186,84,40,16,7,7,7,8,1,2,56,68,178,186, + 154,68,56,6,10,10,8,1,1,48,48,72,72,132,132,72, + 72,48,48,7,7,7,8,1,2,56,68,130,130,130,68,56, + 7,7,7,8,1,2,40,0,130,0,130,0,40,7,7,7, + 8,1,2,56,108,170,170,170,108,56,7,7,7,8,1,2, + 56,68,146,170,146,68,56,7,7,7,8,1,2,56,124,254, + 254,254,124,56}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 8 + Calculated Max Values w=16 h=16 x= 3 y= 6 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_76[2532] U8G_SECTION(".progmem.u8g_font_unifont_76") = { + 0,16,16,0,254,10,2,68,4,220,32,159,0,14,254,10, + 0,7,12,12,8,1,0,16,146,68,0,56,124,124,56,0, + 68,146,16,8,4,4,8,0,6,32,118,255,126,7,8,8, + 8,1,2,56,124,254,16,16,16,16,32,16,16,32,16,0, + 254,139,200,3,192,47,241,4,36,138,80,40,18,10,80,73, + 148,4,33,71,224,8,16,16,136,120,30,16,136,8,16,7, + 224,7,11,11,8,1,0,68,68,72,72,80,82,4,96,144, + 144,96,7,6,6,8,1,3,16,16,254,56,108,68,7,7, + 7,8,1,3,16,16,238,68,84,108,68,5,9,9,8,2, + 0,8,16,32,64,128,64,40,24,56,6,8,8,8,1,0, + 252,132,136,144,160,148,140,156,8,8,8,8,0,0,60,66, + 129,153,153,129,66,60,8,6,6,8,0,2,24,36,36,102, + 165,66,8,6,6,8,0,2,66,165,102,36,36,24,5,6, + 6,8,1,2,8,16,96,144,144,96,7,9,9,8,1,0, + 12,18,18,12,16,96,144,144,96,7,6,6,8,1,1,124, + 198,0,84,198,254,7,7,7,8,1,1,124,130,186,124,146, + 130,254,7,7,7,8,1,0,254,130,130,130,130,130,254,7, + 8,8,8,1,0,8,254,138,138,202,178,130,254,7,7,7, + 8,1,0,254,130,170,146,170,130,254,5,10,10,8,2,0, + 136,136,80,80,32,32,80,80,136,136,7,12,12,8,1,2, + 10,160,8,130,56,124,254,16,16,16,16,32,12,13,26,16, + 2,0,36,128,73,0,73,0,36,128,36,128,73,0,0,0, + 127,32,255,208,191,80,128,80,128,224,127,0,11,13,26,16, + 2,0,4,0,10,0,17,0,32,128,64,64,128,32,128,32, + 128,32,128,32,128,32,128,32,128,32,255,224,11,13,26,16, + 2,0,4,0,14,0,31,0,63,128,127,192,255,224,255,224, + 255,224,255,224,255,224,255,224,255,224,255,224,13,13,26,16, + 1,255,5,0,15,128,15,128,103,48,242,120,127,240,242,120, + 98,48,4,0,4,0,4,0,8,0,16,0,14,15,30,16, + 1,254,102,24,79,24,223,176,159,160,255,160,255,32,255,56, + 126,228,127,36,127,40,63,152,63,144,31,176,15,32,6,0, + 7,4,4,8,1,2,252,62,62,28,7,4,4,8,1,2, + 126,248,248,112,7,4,4,8,1,2,252,34,50,28,4,7, + 7,8,2,2,16,16,112,208,144,144,96,7,4,4,8,1, + 2,126,136,152,112,4,7,7,8,2,0,96,144,144,208,112, + 16,16,8,12,12,8,0,0,231,165,126,129,165,165,129,90, + 90,66,189,231,4,10,10,8,2,0,224,16,16,32,32,64, + 64,128,128,112,13,13,26,16,1,0,31,192,32,32,69,16, + 141,136,157,200,189,232,255,248,130,8,135,8,143,136,95,208, + 32,32,31,192,15,13,26,16,0,255,4,64,8,32,16,16, + 16,16,19,144,12,96,62,248,68,68,133,66,131,130,2,128, + 4,64,24,48,13,15,30,16,1,254,6,0,2,0,255,248, + 71,16,63,224,2,0,26,192,34,32,31,192,18,64,15,128, + 10,128,7,0,10,128,2,0,5,8,8,8,2,0,112,136, + 80,32,248,32,32,32,5,9,9,8,2,0,32,112,32,248, + 32,48,96,32,32,6,10,10,8,1,0,56,36,36,56,32, + 168,112,32,112,168,5,9,9,8,2,0,32,112,32,248,32, + 32,32,32,32,7,7,7,8,1,0,56,16,146,254,146,16, + 56,8,9,9,8,0,1,30,33,64,194,199,194,64,33,30, + 11,11,22,16,2,0,21,0,27,0,0,0,85,64,164,160, + 164,160,164,160,149,32,78,64,31,0,4,0,11,12,24,16, + 3,255,4,0,21,0,36,128,78,64,213,96,213,96,206,96, + 228,224,223,96,142,32,21,0,4,0,8,8,8,8,0,0, + 12,2,57,121,13,62,99,193,7,8,8,8,1,0,124,146, + 146,146,186,214,146,124,13,12,24,16,1,0,31,192,32,32, + 64,16,64,16,152,72,188,8,254,24,239,56,255,248,127,240, + 63,224,31,192,13,10,20,16,1,0,255,248,255,248,0,0, + 0,0,255,248,255,248,0,0,0,0,255,248,255,248,13,10, + 20,16,1,0,248,248,248,248,0,0,0,0,255,248,255,248, + 0,0,0,0,255,248,255,248,13,10,20,16,1,0,255,248, + 255,248,0,0,0,0,248,248,248,248,0,0,0,0,255,248, + 255,248,13,10,20,16,1,0,248,248,248,248,0,0,0,0, + 248,248,248,248,0,0,0,0,255,248,255,248,13,10,20,16, + 1,0,255,248,255,248,0,0,0,0,255,248,255,248,0,0, + 0,0,248,248,248,248,13,10,20,16,1,0,248,248,248,248, + 0,0,0,0,255,248,255,248,0,0,0,0,248,248,248,248, + 13,10,20,16,1,0,255,248,255,248,0,0,0,0,248,248, + 248,248,0,0,0,0,248,248,248,248,13,10,20,16,1,0, + 248,248,248,248,0,0,0,0,248,248,248,248,0,0,0,0, + 248,248,248,248,7,7,7,8,1,0,146,124,124,238,124,124, + 146,8,10,10,8,0,1,60,66,129,165,129,153,165,129,66, + 60,8,9,9,8,0,1,60,66,129,165,129,165,153,66,60, + 8,9,9,8,0,1,60,126,255,219,255,219,231,126,60,7, + 7,7,8,1,2,146,84,56,238,56,84,146,6,10,10,8, + 2,0,224,48,24,20,20,20,20,24,48,224,6,10,10,8, + 1,0,28,48,96,160,160,160,160,96,48,28,5,11,11,8, + 2,0,136,136,112,136,136,136,112,32,248,32,32,5,9,9, + 8,2,0,112,136,136,136,112,32,248,32,32,5,10,10,8, + 2,1,32,32,248,32,32,112,136,136,136,112,7,8,8,8, + 1,1,14,6,10,112,136,136,136,112,6,10,10,8,1,0, + 4,4,4,116,140,12,20,252,4,4,6,10,10,8,1,0, + 64,64,224,64,88,100,68,72,72,72,7,9,9,8,1,0, + 214,84,124,84,214,16,56,40,56,8,11,11,8,0,255,8, + 89,203,73,73,73,62,8,62,8,8,6,10,10,8,1,0, + 248,132,132,132,248,128,128,128,128,252,7,10,10,8,1,0, + 68,170,40,40,16,16,16,16,16,16,7,7,7,8,1,0, + 130,68,56,68,68,68,56,7,10,10,8,1,0,130,124,40, + 40,40,40,40,40,124,130,7,8,8,8,1,0,124,146,144, + 96,12,18,146,124,8,9,9,8,0,0,28,34,34,18,116, + 148,148,101,2,7,10,10,8,1,0,168,248,170,174,170,170, + 170,170,12,248,7,6,6,8,1,1,56,68,68,238,0,254, + 7,10,10,8,1,0,168,248,168,168,168,168,168,168,170,6, + 7,7,7,8,1,0,30,6,138,82,32,80,136,6,10,10, + 8,1,0,128,240,144,144,156,20,28,16,16,96,6,6,6, + 8,1,2,84,168,0,0,84,168,6,9,9,8,1,0,132, + 132,72,72,252,72,72,132,132,7,13,13,8,1,0,16,56, + 146,186,198,130,68,68,68,130,130,130,254,7,11,11,8,1, + 0,16,56,198,130,68,68,68,130,130,130,254,7,9,9,8, + 1,0,170,254,130,130,68,68,130,130,254,7,10,10,8,1, + 0,16,40,68,68,68,68,40,238,130,254,6,11,11,8,1, + 0,4,60,68,132,132,116,36,68,132,132,252,6,8,8,8, + 1,0,48,72,72,48,72,72,132,252,7,13,13,8,1,0, + 16,56,146,186,254,254,124,124,124,254,254,254,254,7,11,11, + 8,1,0,16,56,254,238,124,124,124,254,254,254,254,7,8, + 8,8,1,0,170,254,254,124,124,254,254,254,7,10,10,8, + 1,0,16,56,108,68,108,124,56,254,254,254,6,11,11,8, + 1,0,4,60,108,252,252,124,60,124,252,252,252,6,8,8, + 8,1,0,48,120,120,48,120,120,252,252,7,10,10,8,1, + 0,16,16,56,124,254,254,254,124,16,56,7,9,9,8,1, + 0,108,146,130,130,130,68,40,16,16,5,10,10,8,2,0, + 32,32,80,80,136,136,80,80,32,32,7,10,10,8,1,0, + 56,56,56,16,254,254,214,16,16,56,7,10,10,8,1,0, + 16,16,40,68,130,130,130,124,16,56,7,9,9,8,1,0, + 108,254,254,254,254,124,56,16,16,5,10,10,8,2,0,32, + 32,112,112,248,248,112,112,32,32,7,10,10,8,1,0,56, + 40,56,16,238,186,214,16,16,56,8,11,11,8,0,0,8, + 81,146,146,146,73,73,73,82,129,126,4,10,10,8,1,0, + 16,16,16,16,16,16,16,112,240,224,6,10,10,8,1,0, + 16,24,20,20,16,16,16,112,240,224,8,11,11,8,0,0, + 28,23,17,17,17,17,113,241,231,15,14,8,11,11,8,0, + 0,28,23,17,29,23,17,113,241,231,15,14,6,12,12,8, + 1,0,128,128,128,128,128,184,204,140,136,144,160,192,6,11, + 11,8,1,0,128,128,156,252,228,132,156,252,228,4,4,6, + 13,13,8,1,255,8,72,76,124,248,200,72,76,124,248,200, + 72,64,7,10,10,8,1,0,40,16,16,146,124,146,16,16, + 16,40,7,10,10,8,1,0,56,40,16,214,186,214,16,16, + 40,16,16,16,32,16,0,254,3,184,4,165,8,179,5,9, + 18,5,40,9,68,31,238,0,40,15,48,73,36,201,13,101, + 22,19,37,120,60,192,0,64,15,16,32,16,0,254,3,128, + 4,64,4,64,8,32,0,40,57,24,27,56,41,0,33,8, + 67,132,64,4,128,34,128,66,126,252,0,64,0,32,15,16, + 32,16,0,254,3,128,4,64,4,64,8,32,0,40,59,24, + 24,184,41,0,34,8,67,132,64,4,128,34,128,66,126,252, + 0,64,0,32,15,16,32,16,0,254,3,128,4,64,4,64, + 8,32,0,40,57,24,24,184,43,0,32,136,67,4,64,4, + 128,34,128,66,126,252,0,64,0,32,15,16,32,16,0,254, + 3,128,4,64,4,64,8,32,0,40,58,152,26,184,43,128, + 32,136,64,132,64,4,128,34,128,66,126,252,0,64,0,32, + 15,16,32,16,0,254,3,128,4,64,4,64,8,32,0,40, + 59,152,26,56,43,0,32,136,67,4,64,4,128,34,128,66, + 126,252,0,64,0,32,15,16,32,16,0,254,3,128,4,64, + 4,64,8,32,0,40,57,152,26,56,43,128,34,72,65,132, + 64,4,128,34,128,66,126,252,0,64,0,32,15,16,32,16, + 0,254,3,128,4,64,4,64,8,32,0,40,59,152,24,184, + 41,0,33,8,65,4,64,4,128,34,128,66,126,252,0,64, + 0,32,15,16,32,16,0,254,3,128,4,64,4,64,8,32, + 0,40,56,24,24,56,40,0,32,8,64,4,64,4,128,34, + 128,66,126,252,0,64,0,32,16,16,32,16,0,254,3,184, + 7,189,15,191,7,15,18,7,56,15,124,31,254,0,56,15, + 48,79,36,207,13,231,31,243,61,248,60,192,0,64,15,16, + 32,16,0,254,7,192,15,224,60,120,123,188,119,172,127,204, + 199,142,231,254,215,238,223,238,111,108,118,220,124,60,62,248, + 15,96,7,192,15,16,32,16,0,254,7,192,24,48,32,8, + 67,132,68,84,64,52,184,114,152,2,168,18,160,18,80,148, + 73,36,67,196,33,8,24,176,7,192,13,12,24,16,0,255, + 7,0,24,192,32,32,64,16,77,144,146,72,146,72,77,144, + 64,16,32,32,24,192,7,0,12,11,22,16,2,0,24,0, + 24,0,16,0,30,0,16,0,95,128,128,128,128,64,129,64, + 66,48,60,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 4 y= 4 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent=-1 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_77[1587] U8G_SECTION(".progmem.u8g_font_unifont_77") = { + 0,16,16,0,254,11,3,99,5,215,32,99,0,14,254,11, + 255,9,9,18,16,3,1,255,128,128,128,128,128,128,128,136, + 128,128,128,128,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,128,128,160,128,128,128,130,128,128,128,128,128,255, + 128,9,9,18,16,3,1,255,128,128,128,160,128,128,128,136, + 128,128,128,130,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,162,128,128,128,128,128,128,128,162,128,128,128,255, + 128,9,9,18,16,3,1,255,128,128,128,162,128,128,128,136, + 128,128,128,162,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,162,128,128,128,162,128,128,128,162,128,128,128,255, + 128,13,12,24,16,0,255,7,0,24,192,32,32,64,16,64, + 16,128,200,128,200,64,16,64,16,32,32,24,192,7,0,13, + 12,24,16,0,255,7,0,24,192,32,32,64,16,64,16,152, + 200,152,200,64,16,64,16,32,32,24,192,7,0,13,12,24, + 16,0,255,7,0,31,192,63,224,127,240,127,240,255,56,255, + 56,127,240,127,240,63,224,15,128,7,0,13,12,24,16,0, + 255,7,0,31,192,63,224,127,240,127,240,231,56,231,56,127, + 240,127,240,63,224,15,128,7,0,13,2,4,16,1,4,255, + 248,255,248,13,2,4,16,1,4,248,248,248,248,13,6,12, + 16,1,2,255,248,255,248,0,0,0,0,255,248,255,248,13, + 6,12,16,1,2,248,248,248,248,0,0,0,0,255,248,255, + 248,13,6,12,16,1,2,255,248,255,248,0,0,0,0,248, + 248,248,248,13,6,12,16,1,2,248,248,248,248,0,0,0, + 0,248,248,248,248,6,11,11,8,1,0,224,156,132,132,228, + 156,128,128,128,128,128,6,11,11,8,1,0,224,252,252,252, + 252,156,128,128,128,128,128,16,14,28,16,0,255,7,50,95, + 124,62,126,124,31,248,39,116,67,34,129,1,0,2,128,4, + 64,8,32,16,16,32,8,64,4,14,12,24,16,1,0,3, + 128,4,64,4,64,3,128,1,0,7,192,1,0,65,8,225, + 28,65,8,33,16,31,224,13,13,26,16,1,0,128,8,64, + 16,32,32,16,64,8,128,5,0,2,0,5,0,8,128,80, + 80,32,32,80,80,128,8,9,14,28,16,3,255,8,0,8, + 0,127,128,137,128,136,0,126,0,9,0,9,0,62,0,72, + 0,60,0,10,0,28,0,8,0,15,11,22,16,0,0,1, + 0,17,16,127,252,57,56,84,84,84,84,146,146,146,146,254, + 254,124,124,56,56,11,8,16,16,2,0,63,128,95,192,143, + 192,135,128,128,0,15,128,18,64,34,32,11,13,26,16,2, + 255,14,0,17,0,17,0,17,0,14,0,4,0,228,224,245, + 224,117,192,53,128,14,0,4,0,4,0,13,13,26,16,1, + 255,2,0,66,16,47,160,16,64,32,32,32,32,226,56,32, + 32,32,32,16,64,47,160,66,16,2,0,15,13,26,16,0, + 0,1,0,2,128,57,56,127,252,253,126,5,64,3,128,1, + 0,1,0,1,0,1,0,1,0,1,0,13,15,30,16,1, + 254,2,0,117,112,141,136,141,136,138,136,77,144,40,160,26, + 192,40,160,77,144,138,136,141,136,141,136,117,112,2,0,15, + 16,32,16,0,254,1,0,2,128,58,184,68,68,132,66,242, + 158,138,162,6,192,6,192,8,32,6,192,6,192,10,160,50, + 152,70,196,121,60,15,15,30,16,0,255,1,0,2,128,4, + 64,4,64,8,0,107,252,136,2,136,34,96,36,24,16,6, + 80,0,136,33,8,38,72,24,48,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,13,14,28,16,1,255,2,0,5,0,5,0,8,128,8, + 128,18,64,18,64,34,32,34,32,66,16,64,16,130,8,128, + 8,255,248,6,11,11,8,1,255,4,8,16,32,64,252,8, + 16,32,64,128,11,9,18,16,2,0,59,128,68,64,138,32, + 138,32,68,64,59,128,17,0,59,128,17,0,11,11,22,16, + 2,0,7,0,3,0,5,0,56,224,68,96,142,160,149,0, + 104,128,48,128,17,0,14,0,10,14,28,16,3,255,1,192, + 0,192,1,64,14,0,17,0,56,128,84,128,139,0,134,0, + 68,0,56,0,16,0,56,0,16,0,8,12,12,16,4,254, + 7,3,5,56,68,130,130,68,56,16,56,16,11,10,20,16, + 2,0,0,224,0,96,2,160,1,0,58,128,68,0,130,0, + 130,0,68,0,56,0,15,13,26,16,0,254,224,14,192,6, + 168,10,16,16,43,160,4,64,8,32,8,32,4,64,3,128, + 1,0,3,128,1,0,7,12,12,8,0,0,16,56,84,16, + 56,16,56,68,130,130,68,56,14,7,14,16,0,255,56,0, + 68,16,130,136,131,252,130,136,68,16,56,0,7,7,7,8, + 0,255,56,68,130,130,130,68,56,7,7,7,8,0,255,56, + 124,254,254,254,124,56,5,5,5,8,2,0,112,136,136,136, + 112,11,6,12,16,2,0,59,128,68,64,138,32,138,32,68, + 64,59,128,11,7,14,16,3,255,4,0,117,192,142,32,142, + 32,142,32,117,192,4,0,13,5,10,16,1,0,112,112,136, + 136,143,136,136,136,112,112,14,10,20,16,2,0,24,0,39, + 128,64,124,128,0,128,0,128,0,128,0,64,124,39,128,24, + 0,11,13,26,16,2,0,31,0,10,0,63,128,64,64,128, + 32,128,32,64,64,64,64,64,64,32,128,32,128,32,128,31, + 0,7,9,9,8,0,254,56,68,130,130,68,56,16,16,16, + 6,9,9,8,0,254,112,136,4,4,8,48,32,248,32,7, + 10,10,8,0,254,16,40,68,130,68,40,16,16,124,16,7, + 10,10,8,0,254,146,84,56,254,56,84,146,16,124,16,13, + 11,22,16,1,0,2,0,2,0,2,0,2,0,114,112,8, + 128,5,0,242,120,8,128,5,0,2,0,6,11,11,8,1, + 0,36,40,48,40,36,32,112,136,136,136,112,6,10,10,8, + 1,254,56,112,224,224,224,112,56,16,124,16,8,7,7,8, + 0,3,66,36,24,255,24,36,66,7,8,8,8,0,0,68, + 68,68,40,40,40,16,254,7,8,8,8,0,0,254,16,40, + 40,40,68,68,68,7,8,8,8,1,0,252,132,132,132,148, + 252,16,30,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,12, + 9,18,16,2,0,31,128,96,96,134,16,134,16,224,112,191, + 208,169,80,105,96,31,128,12,12,24,16,2,0,31,128,96, + 96,134,16,134,16,224,112,191,208,169,80,233,112,191,208,169, + 80,105,96,31,128,14,11,22,16,1,255,31,224,112,56,207, + 204,188,244,188,244,143,196,160,20,171,84,203,76,112,56,31, + 224,14,14,28,16,1,255,31,224,112,56,207,204,188,244,188, + 244,143,196,160,20,171,84,139,68,160,20,171,84,203,76,112, + 56,31,224}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 15, '1' Height: 13 + Calculated Max Values w=16 h=15 x= 7 y= 4 dx=16 dy= 0 ascent=14 len=30 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =15 descent=-2 + X Font ascent =15 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[6975] U8G_SECTION(".progmem.u8g_font_unifont_78_79") = { + 0,16,16,0,254,15,7,255,11,108,1,255,254,14,254,15, + 254,15,11,22,16,0,2,56,0,124,0,108,0,124,0,60, + 0,14,0,127,252,255,254,217,192,248,224,112,0,14,11,22, + 16,0,1,112,8,248,60,216,120,254,240,127,224,7,192,127, + 224,254,240,216,120,248,60,112,8,15,11,22,16,0,255,112, + 0,248,224,217,192,255,254,127,252,14,0,60,0,124,0,108, + 0,124,0,56,0,15,11,22,16,0,1,112,12,136,50,174, + 68,129,136,121,16,6,32,120,80,129,136,174,68,136,50,112, + 12,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,15,15,30,16,0,255,7,192,24,48,32, + 8,65,196,71,228,143,242,143,114,158,98,156,2,159,2,79, + 4,70,4,32,8,24,48,7,192,15,15,30,16,0,255,7, + 192,25,48,35,136,67,132,65,4,131,130,135,194,135,194,135, + 194,139,162,92,116,88,52,32,8,24,48,7,192,15,14,28, + 16,0,255,8,0,15,0,6,0,7,192,195,128,227,192,127, + 254,127,254,227,192,195,128,7,192,6,0,15,0,8,0,14, + 7,14,16,1,3,255,252,192,12,176,52,140,196,179,52,192, + 12,255,252,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,15,15,30,16,0, + 255,24,48,36,72,34,136,18,144,17,16,9,32,8,32,124, + 252,146,130,146,114,146,34,146,66,124,4,32,8,31,240,15, + 13,26,16,1,0,0,16,0,56,0,112,7,238,25,234,35, + 154,71,10,142,10,223,202,36,10,95,250,224,10,192,14,12, + 12,24,16,1,0,48,0,76,0,170,0,149,0,226,128,81, + 64,40,160,20,80,10,80,5,144,2,48,1,240,15,7,14, + 16,0,3,63,240,80,40,143,244,168,22,143,244,80,40,63, + 240,12,12,24,16,1,0,1,240,2,48,5,144,10,80,20, + 80,40,160,81,64,226,128,149,0,170,0,76,0,48,0,15, + 7,14,16,0,3,0,240,121,8,134,108,128,254,134,108,121, + 8,0,240,15,7,14,16,0,3,0,224,121,240,255,56,255, + 14,255,56,121,240,0,224,13,10,20,16,1,255,0,8,0, + 16,0,32,128,64,128,128,65,0,66,0,36,0,40,0,16, + 0,15,11,22,16,0,255,0,4,0,14,64,28,224,56,224, + 112,112,224,113,192,59,128,63,0,30,0,12,0,11,11,22, + 16,2,1,64,64,224,224,113,192,59,128,31,0,14,0,31, + 0,59,128,113,192,224,224,64,64,15,15,30,16,0,255,16, + 16,56,56,124,124,254,254,127,252,63,248,31,240,15,224,31, + 240,63,248,127,252,254,254,124,124,56,56,16,16,12,13,26, + 16,1,0,192,48,96,192,99,128,54,0,28,0,28,0,54, + 0,51,0,97,128,96,192,192,96,192,48,64,0,12,14,28, + 16,1,255,192,48,224,224,99,192,119,0,62,0,28,0,62, + 0,55,0,115,128,97,192,224,224,192,112,192,32,64,0,15, + 15,30,16,0,255,7,192,4,64,5,64,5,64,5,64,253, + 126,129,2,191,250,129,2,253,126,5,64,5,64,5,64,4, + 64,7,192,15,15,30,16,0,255,7,192,7,192,7,192,7, + 192,7,192,255,254,255,254,255,254,255,254,255,254,7,192,7, + 192,7,192,7,192,7,192,15,15,30,16,0,255,3,128,3, + 128,3,128,3,128,3,128,3,128,252,126,252,126,252,126,3, + 128,3,128,3,128,3,128,3,128,3,128,15,15,30,16,0, + 255,7,192,7,192,7,192,7,192,7,192,248,62,248,62,248, + 62,248,62,248,62,7,192,7,192,7,192,7,192,7,192,9, + 11,22,16,3,1,28,0,28,0,28,0,255,128,255,128,255, + 128,28,0,28,0,28,0,28,0,28,0,13,15,30,16,1, + 255,15,0,9,128,9,128,9,128,249,240,128,24,128,24,249, + 248,121,248,9,128,9,128,9,128,9,128,15,128,7,128,13, + 14,28,16,1,255,31,192,16,64,247,120,135,8,191,232,191, + 232,191,232,135,8,247,120,23,64,23,64,23,64,16,64,31, + 192,15,15,30,16,0,255,31,240,7,192,3,128,131,130,131, + 130,195,134,255,254,255,254,255,254,195,134,131,130,131,130,3, + 128,7,192,31,240,15,15,30,16,0,255,1,0,2,128,4, + 64,4,64,255,254,80,20,80,20,32,8,80,20,80,20,255, + 254,4,64,4,64,2,128,1,0,15,15,30,16,0,255,3, + 128,7,192,7,192,3,128,3,128,97,12,249,62,255,254,249, + 62,97,12,3,128,3,128,7,192,7,192,3,128,15,15,30, + 16,0,255,3,128,7,192,7,192,7,192,3,128,113,28,249, + 62,255,254,249,62,113,28,3,128,7,192,7,192,7,192,3, + 128,15,15,30,16,0,255,7,192,15,224,15,224,7,192,99, + 140,243,158,255,254,255,254,255,254,243,158,99,140,7,192,15, + 224,15,224,7,192,16,15,30,16,0,255,1,0,3,128,7, + 192,7,192,1,0,49,12,113,14,255,255,113,14,49,12,1, + 0,7,192,7,192,3,128,1,0,15,15,30,16,0,255,1, + 0,3,128,3,128,7,192,7,192,31,240,127,252,255,254,127, + 252,31,240,7,192,7,192,3,128,3,128,1,0,15,15,30, + 16,0,255,1,0,2,128,2,128,4,64,4,64,24,48,96, + 12,128,2,96,12,24,48,4,64,4,64,2,128,2,128,1, + 0,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,15,12,24,16,0,1,1,0,2,128,2, + 128,252,126,64,4,56,56,8,32,16,16,17,16,38,200,40, + 40,48,24,15,15,30,16,0,255,7,192,31,240,62,248,126, + 252,124,124,192,6,240,30,248,62,240,30,241,30,103,204,111, + 236,63,248,31,240,7,192,15,12,24,16,0,1,1,0,3, + 128,3,128,255,254,124,124,56,56,8,32,28,112,31,240,62, + 248,56,56,48,24,15,12,24,16,0,1,1,0,2,128,2, + 128,252,126,67,132,39,200,23,208,19,144,16,16,39,200,40, + 40,48,24,15,12,24,16,0,1,1,0,2,128,28,112,225, + 14,79,228,35,136,23,208,20,80,17,16,34,136,44,104,48, + 24,15,12,24,16,0,1,1,0,2,128,29,112,227,142,95, + 244,47,232,23,208,22,208,21,80,34,136,44,104,48,24,15, + 13,26,16,0,0,1,0,3,128,5,192,249,254,93,140,39, + 184,19,240,15,208,29,144,25,208,50,232,44,120,48,24,16, + 13,26,16,0,0,1,0,2,128,2,192,255,254,68,71,56, + 62,8,60,22,208,17,24,39,200,47,44,60,28,24,12,15, + 13,26,16,0,0,3,128,3,128,3,128,67,132,243,158,63, + 252,15,240,63,252,243,158,67,132,3,128,3,128,3,128,15, + 13,26,16,0,0,3,128,3,128,3,128,67,132,243,158,60, + 124,8,48,60,124,243,158,67,132,3,128,3,128,3,128,15, + 15,30,16,0,255,1,0,1,0,33,8,17,16,13,96,15, + 224,7,192,255,254,7,192,15,224,13,96,17,16,33,8,1, + 0,1,0,15,15,30,16,0,255,1,0,1,0,33,8,27, + 176,31,240,15,224,31,224,255,254,31,240,15,224,31,240,27, + 176,33,8,1,0,1,0,15,15,30,16,0,255,1,0,2, + 128,60,248,44,200,38,152,50,184,125,76,131,134,77,124,58, + 152,50,200,38,104,62,120,2,128,1,0,13,13,26,16,1, + 0,2,0,2,0,2,0,135,8,119,112,63,224,31,192,63, + 224,119,112,135,8,2,0,2,0,2,0,15,15,30,16,0, + 255,8,32,8,32,12,96,6,192,230,206,59,184,31,240,7, + 192,31,240,59,184,230,206,6,192,12,96,8,32,8,32,15, + 15,30,16,0,255,8,32,12,96,14,224,15,224,255,254,127, + 252,63,248,31,240,63,248,127,252,255,254,15,224,14,224,12, + 96,8,32,15,15,30,16,0,255,1,0,25,48,15,224,79, + 228,127,252,63,248,63,248,255,254,63,248,63,248,127,252,79, + 228,15,224,25,48,1,0,15,15,30,16,0,255,9,32,73, + 36,37,72,21,80,203,166,55,216,15,224,255,254,15,224,55, + 216,203,166,21,80,37,72,73,36,9,32,15,15,30,16,0, + 255,1,0,3,128,3,128,3,128,225,14,113,28,13,96,3, + 128,13,96,113,28,225,14,3,128,3,128,3,128,1,0,15, + 15,30,16,0,255,3,128,7,192,7,192,99,140,241,30,243, + 158,60,120,8,32,60,120,243,158,241,30,99,140,7,192,7, + 192,3,128,15,15,30,16,0,255,3,128,7,192,7,192,99, + 140,243,158,241,30,61,120,7,192,61,120,241,30,243,158,99, + 140,7,192,7,192,3,128,15,15,30,16,0,255,3,128,4, + 64,4,64,116,92,252,126,254,254,127,252,33,8,67,132,135, + 194,143,226,119,220,7,192,7,192,3,128,15,14,28,16,0, + 0,3,128,7,192,15,224,119,220,255,254,252,126,240,30,112, + 28,24,48,62,248,127,252,126,252,126,252,60,120,15,14,28, + 16,0,0,3,128,4,64,9,32,121,60,133,66,179,154,143, + 226,111,236,23,208,39,200,73,36,82,148,66,132,60,120,15, + 15,30,16,0,255,3,128,60,120,69,68,81,20,77,100,111, + 236,134,194,188,122,134,194,111,236,77,100,81,20,69,68,60, + 120,3,128,15,15,30,16,0,255,7,192,30,240,62,248,92, + 116,103,204,252,126,232,46,136,34,232,46,252,126,103,204,92, + 116,62,248,30,240,7,192,15,15,30,16,0,255,3,128,4, + 192,4,192,116,220,188,230,159,158,79,60,63,248,114,100,230, + 114,206,122,118,92,6,64,6,64,3,128,15,13,26,16,0, + 0,1,0,5,64,3,128,201,38,49,24,77,100,3,128,77, + 100,49,24,201,38,3,128,5,64,1,0,15,13,26,16,0, + 0,1,0,5,64,11,160,201,38,49,24,77,100,131,130,77, + 100,49,24,201,38,11,160,5,64,1,0,15,15,30,16,0, + 255,9,32,13,96,7,192,19,144,201,38,49,24,237,110,3, + 128,237,110,49,24,201,38,17,16,7,192,13,96,9,32,14, + 14,28,16,1,255,7,128,71,136,39,144,19,32,11,64,224, + 28,251,124,251,124,224,28,11,64,19,32,39,144,71,136,7, + 128,15,15,30,16,0,255,7,192,71,196,39,200,19,144,11, + 160,224,14,251,190,251,190,251,190,224,14,11,160,19,144,39, + 200,71,196,7,192,15,15,30,16,0,255,3,128,7,192,7, + 192,119,220,251,190,249,62,125,124,7,192,125,124,249,62,251, + 190,119,220,7,192,7,192,3,128,15,15,30,16,0,255,1, + 0,3,128,51,152,49,24,9,32,5,64,99,140,255,254,99, + 140,5,64,9,32,49,24,51,152,3,128,1,0,15,15,30, + 16,0,255,1,0,3,128,51,152,59,184,25,48,7,192,119, + 220,255,254,119,220,7,192,25,48,59,184,51,152,3,128,1, + 0,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,13,13,26,16,2,255,15,0,48,192,64, + 32,64,48,128,16,128,24,128,24,128,24,64,56,64,48,48, + 240,15,224,7,128,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,12,12,24,16,3,1,255, + 192,128,64,128,112,128,112,128,112,128,112,128,112,128,112,128, + 112,255,240,63,240,63,240,12,12,24,16,3,1,63,240,63, + 240,255,240,128,112,128,112,128,112,128,112,128,112,128,112,128, + 112,128,64,255,192,12,12,24,16,3,1,255,192,128,96,128, + 112,128,112,128,112,128,112,128,112,128,112,128,112,255,240,127, + 240,63,240,12,12,24,16,3,1,63,240,127,240,255,240,128, + 112,128,112,128,112,128,112,128,112,128,112,128,112,128,96,255, + 192,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,13,13,26, + 16,1,0,2,0,7,0,15,128,7,0,34,32,112,112,248, + 248,112,112,34,32,7,0,15,128,7,0,2,0,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,2,15,15,16,7,255,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,4,15,15,16,6,255,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,8,15,15,16,4, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 7,10,10,16,4,4,28,112,192,248,252,254,254,254,124,56, + 7,10,10,16,4,4,56,124,254,254,254,126,62,6,28,112, + 15,10,20,16,0,4,28,28,112,112,192,192,248,248,252,252, + 254,254,254,254,254,254,124,124,56,56,15,10,20,16,0,4, + 56,56,124,124,254,254,254,254,254,254,126,126,62,62,6,6, + 28,28,112,112,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,14,14,28,16, + 1,255,0,32,0,32,31,252,127,240,252,32,252,32,126,32, + 31,224,0,32,96,96,240,64,240,192,99,128,62,0,9,15, + 30,16,3,255,28,0,127,0,255,128,255,128,255,128,127,0, + 28,0,8,0,8,0,0,0,28,0,62,0,62,0,62,0, + 28,0,9,13,26,16,3,0,119,0,255,128,255,128,255,128, + 127,0,28,0,8,0,0,0,28,0,62,0,62,0,62,0, + 28,0,15,13,26,16,0,255,60,120,126,252,255,254,255,254, + 255,254,127,252,127,252,63,248,31,240,15,224,7,192,3,128, + 1,0,13,15,30,16,1,255,56,0,126,0,255,0,255,128, + 255,192,255,224,127,240,63,248,127,240,255,224,255,192,255,128, + 255,0,126,0,56,0,15,14,28,16,0,255,3,0,12,134, + 56,142,103,248,1,0,57,56,126,252,255,254,255,254,127,252, + 63,248,31,226,7,238,0,248,14,15,30,16,1,254,97,152, + 99,200,55,236,23,228,23,252,19,252,115,252,157,248,147,248, + 83,248,103,240,39,240,55,224,19,192,1,128,4,12,12,8, + 3,255,16,32,96,192,192,192,192,192,192,96,32,16,4,12, + 12,8,2,255,128,64,96,48,48,48,48,48,48,96,64,128, + 5,12,12,8,2,255,24,48,112,224,224,224,224,224,224,112, + 48,24,5,12,12,8,2,255,192,96,112,56,56,56,56,56, + 56,112,96,192,5,12,12,8,2,255,24,48,48,96,96,192, + 192,96,96,48,48,24,5,12,12,8,2,255,192,96,96,48, + 48,24,24,48,48,96,96,192,6,12,12,8,2,255,28,56, + 56,112,112,224,224,112,112,56,56,28,6,12,12,8,1,255, + 224,112,112,56,56,28,28,56,56,112,112,224,7,12,12,8, + 1,255,30,60,60,120,120,240,240,120,120,60,60,30,7,12, + 12,8,0,255,240,120,120,60,60,30,30,60,60,120,120,240, + 3,12,12,8,3,255,32,64,128,128,128,128,128,128,128,128, + 64,32,3,12,12,8,2,255,128,64,32,32,32,32,32,32, + 32,32,64,128,6,12,12,8,1,255,60,112,96,96,48,48, + 224,48,48,96,112,60,6,12,12,8,1,255,240,56,24,24, + 48,48,28,48,48,24,56,240,15,15,30,16,0,255,7,192, + 31,240,63,248,126,252,124,252,250,254,254,254,254,254,254,254, + 254,254,126,252,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,119,220,255,222,255,222, + 255,62,252,254,251,254,119,220,112,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,120,60,119,220, + 255,222,255,222,255,62,255,222,255,222,119,220,120,60,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 127,188,127,60,254,190,253,190,251,190,247,190,224,14,127,188, + 126,12,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,112,28,119,252,247,254,240,62,255,222,255,222, + 255,222,119,220,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,119,220,247,254,247,254, + 240,62,247,222,247,222,119,220,120,60,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,112,28,119,220, + 255,190,255,190,255,126,254,254,254,254,125,252,125,252,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 120,60,119,220,247,222,247,222,248,62,247,222,247,222,119,220, + 120,60,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,120,60,119,220,247,222,247,222,248,30,255,222, + 255,222,119,220,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,119,28,102,236,246,238,246,238, + 246,238,246,238,246,238,118,236,99,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,132,65,132, + 131,130,129,130,129,130,129,130,129,130,65,132,65,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,79,228,140,98,128,98,129,194,135,2,140,2,79,228, + 79,228,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,79,228,140,98,128,98,129,194,128,98, + 140,98,79,228,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,228,65,228,131,98,134,98, + 140,98,159,242,159,242,64,100,64,100,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,79,228,79,228, + 140,2,143,194,143,226,128,98,140,98,79,228,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,79,228,140,2,143,194,143,226,140,98,140,98,79,228, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,79,228,79,228,128,98,128,98,128,194,131,130, + 134,2,70,4,70,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,71,196,79,228,140,98,140,98, + 135,194,140,98,140,98,79,228,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,79,228, + 140,98,140,98,143,226,135,226,128,98,79,228,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,228,77,244,157,178,141,178,141,178,141,178,141,178,77,244, + 76,228,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,127,124,126,124,252,126,254,126,254,126,254,126, + 254,126,126,124,126,124,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,112,28,243,158,255,158, + 254,62,248,254,243,254,112,28,112,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,120,60,112,28, + 243,158,255,158,254,62,255,158,243,158,112,28,120,60,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 127,28,126,28,252,158,249,158,243,158,224,14,224,14,127,156, + 127,156,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,112,28,112,28,243,254,240,62,240,30,255,158, + 243,158,112,28,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,112,28,243,254,240,62, + 240,30,243,158,243,158,112,28,120,60,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,112,28,112,28, + 255,158,255,158,255,62,252,126,249,254,121,252,121,252,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 120,60,112,28,243,158,243,158,248,62,243,158,243,158,112,28, + 120,60,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,120,60,112,28,243,158,243,158,240,30,248,30, + 255,158,112,28,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,123,28,114,12,226,78,242,78, + 242,78,242,78,242,78,114,12,115,28,63,248,31,240,7,192, + 15,13,26,16,0,0,31,128,15,192,7,224,3,240,255,248, + 255,252,255,254,255,252,255,248,3,240,7,224,15,192,31,128, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,11,11,22,16, + 2,1,32,0,112,0,248,0,120,0,60,128,12,128,3,128, + 3,192,15,192,1,192,0,32,15,9,18,16,0,2,1,0, + 1,128,224,192,252,240,255,254,252,240,224,192,1,128,1,0, + 11,11,22,16,2,0,0,32,1,192,15,192,3,192,3,128, + 12,128,60,128,120,0,248,0,112,0,32,0,15,9,18,16, + 0,2,2,0,1,0,1,192,0,240,255,254,0,240,1,192, + 1,0,2,0,15,13,26,16,0,0,0,192,1,224,1,240, + 0,248,127,252,255,254,255,254,255,254,127,252,0,248,1,240, + 1,224,0,192,15,11,22,16,0,1,0,16,0,16,0,24, + 0,24,255,252,255,254,255,252,0,24,0,24,0,16,0,16, + 15,13,26,16,0,0,0,16,0,16,0,24,0,24,255,252, + 255,252,255,254,255,252,255,252,0,24,0,24,0,16,0,16, + 15,9,18,16,0,2,0,32,0,48,0,56,170,252,170,254, + 170,252,0,56,0,48,0,32,15,9,18,16,0,2,0,32, + 0,48,170,248,170,252,170,254,170,252,170,248,0,48,0,32, + 15,9,18,16,0,2,0,32,0,48,0,56,255,252,255,254, + 255,252,0,56,0,48,0,32,14,15,30,16,1,255,128,0, + 224,0,88,0,70,0,33,128,32,96,16,24,15,252,31,248, + 63,224,63,128,126,0,120,0,224,0,128,0,14,15,30,16, + 1,255,128,0,224,0,120,0,126,0,63,128,63,224,31,248, + 15,252,16,24,32,96,33,128,70,0,88,0,224,0,128,0, + 14,15,30,16,1,255,128,0,224,0,120,0,126,0,63,128, + 63,224,31,248,15,252,31,248,63,224,63,128,126,0,120,0, + 224,0,128,0,15,8,16,16,0,3,128,0,128,16,192,24, + 127,252,127,254,63,252,0,24,0,16,15,8,16,16,0,2, + 0,16,0,24,63,252,127,254,127,252,192,24,128,16,128,0, + 7,13,13,16,5,0,16,16,24,248,252,252,254,252,252,248, + 24,16,16,15,9,18,16,0,2,0,64,0,64,255,224,255, + 240,255,254,255,240,255,224,0,64,0,64,14,9,18,16,1, + 2,0,192,0,224,255,176,128,24,128,12,128,24,255,176,0, + 224,0,192,14,9,18,16,1,2,0,192,0,224,255,208,192, + 8,192,4,192,8,255,208,0,224,0,192,15,13,26,16,0, + 255,0,8,0,24,0,36,0,68,63,130,64,2,128,6,255, + 30,254,124,5,240,15,192,15,0,12,0,15,13,26,16,0, + 0,12,0,15,0,15,192,5,240,254,124,255,30,128,6,64, + 2,63,130,0,68,0,36,0,24,0,8,15,12,24,16,0, + 0,0,128,0,192,255,160,128,16,128,8,128,4,128,14,128, + 28,255,184,127,240,0,224,0,64,15,12,24,16,0,1,0, + 64,0,224,127,240,255,184,128,28,128,14,128,4,128,8,128, + 16,255,160,0,192,0,128,16,12,24,16,0,0,0,64,0, + 96,0,80,255,200,64,4,64,2,64,7,255,206,127,220,0, + 120,0,112,0,32,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,16,12,24,16,0,1,0, + 32,0,112,0,120,127,220,255,206,64,7,64,2,64,4,255, + 200,0,80,0,96,0,64,14,15,30,16,1,255,15,128,63, + 224,126,240,254,120,254,56,0,28,0,12,0,4,0,12,0, + 28,254,56,254,120,126,240,63,224,15,128,15,7,14,16,0, + 3,254,0,73,8,36,140,31,254,36,140,73,8,254,0,11, + 11,22,16,2,1,16,0,24,0,28,0,252,0,124,0,60, + 32,2,32,1,96,0,224,1,224,7,224,14,5,10,16,1, + 4,248,16,124,24,63,252,124,24,248,16,11,11,22,16,2, + 0,7,224,1,224,0,224,1,96,2,32,60,32,124,0,252, + 0,28,0,24,0,16,0,11,11,22,16,2,1,8,0,12, + 0,14,0,14,0,254,32,126,32,63,96,3,224,1,224,3, + 224,15,224,15,9,18,16,0,2,0,32,252,16,126,24,63, + 252,31,254,63,252,126,24,252,16,0,32,11,11,22,16,2, + 0,15,224,3,224,1,224,3,224,63,96,126,32,254,32,14, + 0,14,0,12,0,8,0,15,11,22,16,0,1,0,96,0, + 240,0,240,120,56,255,12,255,254,255,12,120,56,0,240,0, + 240,0,96,15,9,18,16,0,2,0,64,96,224,120,240,252, + 120,255,254,252,120,120,240,96,224,0,64,15,7,14,16,0, + 3,248,16,124,24,62,28,31,254,62,28,124,24,248,16,15, + 9,18,16,0,2,248,96,252,112,126,120,127,252,63,254,127, + 252,126,120,252,112,248,96,15,9,18,16,0,2,2,32,1, + 16,0,136,255,196,0,2,255,196,0,136,1,16,2,32,6, + 14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,168, + 84,168,84,6,6,6,8,1,0,128,136,144,160,192,252,11, + 12,24,16,2,0,4,0,10,0,10,0,17,0,17,0,36, + 128,42,128,74,64,81,64,159,32,128,32,255,224,5,6,6, + 8,1,0,32,32,32,32,32,248,10,8,16,16,3,1,63, + 192,64,0,129,128,130,64,130,64,129,128,64,0,63,192,10, + 8,16,16,3,1,255,0,0,128,96,64,144,64,144,64,96, + 64,0,128,255,0,5,10,10,8,2,0,112,136,136,16,16, + 32,32,64,64,56,5,10,10,8,2,0,112,136,136,64,64, + 32,32,16,16,224,7,8,8,8,0,0,130,130,84,68,40, + 40,16,16,14,8,16,16,1,1,129,252,130,0,68,0,68, + 0,36,0,36,0,18,0,17,252,14,8,16,16,1,1,254, + 4,1,4,0,136,0,136,0,144,0,144,1,32,254,32,3, + 10,10,8,2,0,64,64,64,64,224,64,64,64,64,64,6, + 14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,168, + 84,168,84,12,14,28,16,2,254,255,240,128,0,64,0,64, + 0,32,0,32,0,32,0,32,0,32,0,32,0,64,0,64, + 0,128,0,128,0,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,9,9,18,16,4,0,8,0,20,0,34,0,65,0,136, + 128,65,0,34,0,20,0,8,0,7,8,8,8,0,0,16, + 16,40,40,68,84,130,130,9,10,20,16,3,0,136,128,136, + 128,136,128,136,128,136,128,136,128,136,128,136,128,73,0,62, + 0,6,6,6,8,1,0,4,4,36,4,4,252,6,6,6, + 8,1,0,252,128,128,144,128,128,12,10,20,16,2,0,224, + 16,48,48,40,80,36,144,35,16,35,16,36,144,40,80,48, + 48,224,16,12,10,20,16,2,0,128,112,192,192,161,64,146, + 64,140,64,140,64,146,64,161,64,192,192,128,112,14,10,20, + 16,1,0,224,28,48,48,40,80,36,144,35,16,35,16,36, + 144,40,80,48,48,224,28,9,12,24,16,3,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,255,128,9,12,24,16,3,0,255,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,13,7,14,16,1,2,5,0,5,0,253,248,5, + 0,253,248,5,0,5,0,13,7,14,16,1,2,5,0,5, + 0,5,0,253,248,5,0,5,0,5,0,14,3,6,16,1, + 4,64,0,191,252,64,0,14,3,6,16,1,4,128,0,255, + 252,128,0,14,3,6,16,1,4,0,4,255,252,0,4,3, + 11,11,16,7,255,64,160,64,64,64,64,64,64,64,64,224, + 7,11,11,8,0,0,16,40,40,68,68,254,68,68,40,40, + 16,13,13,26,16,1,0,2,0,5,0,5,0,8,128,16, + 64,96,48,128,8,96,48,16,64,8,128,5,0,5,0,2, + 0,15,13,26,16,0,0,0,128,1,64,1,64,2,32,4, + 16,24,12,224,2,24,12,4,16,2,32,1,64,1,64,0, + 128,15,13,26,16,1,0,2,0,5,0,5,0,8,128,16, + 64,96,48,128,14,96,48,16,64,8,128,5,0,5,0,2, + 0,15,13,26,16,0,0,31,254,16,2,16,2,16,2,16, + 2,16,2,240,2,16,2,16,2,16,2,16,2,16,2,31, + 254,15,13,26,16,1,0,255,240,128,16,128,16,128,16,128, + 16,128,16,128,30,128,16,128,16,128,16,128,16,128,16,255, + 240,5,13,13,8,2,0,248,160,160,160,160,160,160,160,160, + 160,160,160,248,5,13,13,8,1,0,248,40,40,40,40,40, + 40,40,40,40,40,40,248,4,12,12,8,2,0,16,32,32, + 64,64,128,128,64,64,32,32,16,4,12,12,8,2,0,128, + 64,64,32,32,16,16,32,32,64,64,128,6,12,12,8,1, + 0,20,40,40,80,80,160,160,80,80,40,40,20,6,12,12, + 8,1,0,160,80,80,40,40,20,20,40,40,80,80,160,4, + 12,12,8,3,255,16,32,96,160,160,160,160,160,160,96,32, + 16,4,12,12,8,1,255,128,64,96,80,80,80,80,80,80, + 96,64,128,3,12,12,8,4,255,32,64,128,128,128,128,128, + 128,128,128,64,32,3,12,12,8,1,255,128,64,32,32,32, + 32,32,32,32,32,64,128,11,12,24,16,2,0,4,0,10, + 0,27,0,42,128,106,192,170,160,42,128,42,128,42,128,42, + 128,42,128,42,128,11,12,24,16,2,0,42,128,42,128,42, + 128,42,128,42,128,42,128,170,160,106,192,42,128,27,0,10, + 0,4,0,12,10,20,16,2,1,7,128,8,64,16,32,32, + 16,168,16,112,16,32,16,0,32,8,64,7,128,12,10,20, + 16,2,1,30,0,33,0,64,128,128,64,129,80,128,224,128, + 64,64,0,33,0,30,0,15,7,14,16,0,2,3,128,5, + 72,9,36,255,254,9,36,5,72,3,128,15,5,10,16,0, + 3,32,0,64,0,255,254,64,0,32,0,15,5,10,16,0, + 3,0,8,0,4,255,254,0,4,0,8,14,5,10,16,0, + 3,32,16,64,8,255,252,64,8,32,16,15,7,14,16,0, + 2,16,0,32,0,127,254,128,0,127,254,32,0,16,0,15, + 7,14,16,0,2,0,16,0,8,255,252,0,2,255,252,0, + 8,0,16,14,7,14,16,0,2,16,32,32,16,127,248,128, + 4,127,248,32,16,16,32,14,5,10,16,0,3,32,4,64, + 4,255,252,64,4,32,4,14,5,10,16,1,3,128,16,128, + 8,255,252,128,8,128,16,14,7,14,16,0,2,16,4,32, + 4,127,252,128,4,127,252,32,4,16,4,14,7,14,16,1, + 2,128,32,128,16,255,248,128,4,255,248,128,16,128,32,15, + 5,10,16,0,3,0,8,34,36,213,94,8,132,0,8}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 11, '1' Height: 6 + Calculated Max Values w=15 h=15 x= 3 y= 3 dx=16 dy= 0 ascent=13 len=30 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 3 + X Font ascent =11 descent= 0 + Max Font ascent =13 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_86[1876] U8G_SECTION(".progmem.u8g_font_unifont_86") = { + 0,16,16,0,254,11,3,37,5,106,32,116,3,13,254,11, + 0,11,11,22,16,2,0,7,224,4,32,2,32,4,32,8, + 160,17,96,34,0,68,0,136,0,80,0,32,0,11,11,22, + 16,2,0,252,0,132,0,136,0,132,0,162,0,209,0,8, + 128,4,64,2,32,1,64,0,128,11,11,22,16,2,0,32, + 0,80,0,136,0,68,0,34,0,17,96,8,160,4,32,2, + 32,4,32,7,224,11,11,22,16,2,0,0,128,1,64,2, + 32,4,64,8,128,209,0,162,0,132,0,136,0,132,0,252, + 0,14,7,14,16,1,0,16,32,48,48,95,232,128,4,95, + 232,48,48,16,32,13,7,14,16,1,0,16,0,48,0,127, + 248,255,248,127,248,48,0,16,0,7,11,11,8,0,0,16, + 56,124,254,56,56,56,56,56,56,56,7,11,11,8,0,0, + 56,56,56,56,56,56,56,254,124,56,16,11,11,22,16,2, + 0,7,224,7,224,3,224,7,224,15,224,31,96,62,0,124, + 0,248,0,112,0,32,0,11,11,22,16,2,0,252,0,252, + 0,248,0,252,0,254,0,223,0,15,128,7,192,3,224,1, + 192,0,128,11,11,22,16,2,0,32,0,112,0,248,0,124, + 0,62,0,31,96,15,224,7,224,3,224,7,224,7,224,11, + 11,22,16,2,0,0,128,1,192,3,224,7,192,15,128,223, + 0,254,0,252,0,248,0,252,0,252,0,14,7,14,16,1, + 0,16,32,48,48,127,248,255,252,127,248,48,48,16,32,7, + 12,12,8,0,255,16,56,124,254,56,56,56,56,254,124,56, + 16,14,6,12,16,1,0,255,240,0,16,0,16,0,84,0, + 56,0,16,14,6,12,16,1,0,0,16,0,56,0,84,0, + 16,0,16,255,240,14,6,12,16,1,0,63,252,32,0,32, + 0,168,0,112,0,32,0,14,6,12,16,1,0,32,0,112, + 0,168,0,32,0,32,0,63,252,10,10,20,16,3,255,255, + 192,255,192,255,192,255,192,255,192,128,64,128,64,128,64,128, + 64,255,192,10,10,20,16,3,255,255,192,128,64,128,64,128, + 64,128,64,255,192,255,192,255,192,255,192,255,192,10,10,20, + 16,3,255,255,192,255,192,191,192,159,192,143,192,135,192,131, + 192,129,192,128,192,255,192,10,10,20,16,3,255,255,192,192, + 64,224,64,240,64,248,64,252,64,254,64,255,64,255,192,255, + 192,10,10,20,16,3,255,12,0,26,0,57,0,120,128,248, + 64,248,64,120,128,57,0,26,0,12,0,10,10,20,16,3, + 255,12,0,22,0,39,0,71,128,135,192,135,192,71,128,39, + 0,22,0,12,0,10,10,20,16,3,255,12,0,30,0,63, + 0,127,128,255,192,128,64,64,128,33,0,18,0,12,0,10, + 10,20,16,3,255,12,0,18,0,33,0,64,128,128,64,255, + 192,127,128,63,0,30,0,12,0,11,11,22,16,2,0,170, + 160,0,0,128,32,0,0,128,32,0,0,128,32,0,0,128, + 32,0,0,170,160,14,14,28,16,1,255,255,252,255,252,255, + 252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255, + 252,255,252,255,252,255,252,14,14,28,16,1,255,255,252,128, + 4,128,4,128,4,128,4,128,4,128,4,128,4,128,4,128, + 4,128,4,128,4,128,4,255,252,4,4,4,8,2,2,240, + 240,240,240,4,4,4,8,2,2,240,144,144,240,12,11,22, + 16,2,0,6,0,15,0,31,128,63,192,127,224,255,240,127, + 224,127,224,63,192,63,192,31,128,12,11,22,16,2,0,6, + 0,9,0,16,128,32,64,64,32,128,16,64,32,64,32,32, + 64,32,64,31,128,11,11,22,16,2,255,4,0,27,0,96, + 192,128,32,128,32,128,32,128,32,128,32,96,192,27,0,4, + 0,11,11,22,16,2,255,4,0,31,0,127,192,255,224,255, + 224,255,224,255,224,255,224,127,192,31,0,4,0,14,10,20, + 16,1,0,15,192,31,224,63,240,127,248,255,252,255,252,127, + 248,63,240,31,224,15,192,14,13,26,16,1,254,31,224,63, + 240,127,248,255,252,255,252,255,252,255,252,255,252,255,252,255, + 252,127,248,63,240,31,224,7,7,7,8,0,0,16,56,124, + 254,124,56,16,7,7,7,8,0,0,16,40,68,130,68,40, + 16,7,11,11,8,0,0,16,56,56,124,124,254,124,124,56, + 56,16,7,11,11,8,0,0,16,40,40,68,68,130,68,68, + 40,40,16,5,5,5,8,1,3,32,112,248,112,32,5,7, + 7,8,1,0,32,112,112,248,112,112,32,5,7,7,8,1, + 0,32,80,80,136,80,80,32,15,6,12,16,0,0,15,224, + 127,252,255,254,255,254,127,252,15,224,15,6,12,16,0,0, + 15,224,112,28,128,2,128,2,112,28,15,224,6,13,13,8, + 1,0,48,120,120,120,252,252,252,252,252,120,120,120,48,6, + 13,13,8,1,0,48,72,72,72,132,132,132,132,132,72,72, + 72,48,14,5,10,16,1,3,33,192,66,32,255,252,66,32, + 33,192,14,15,30,16,1,254,32,0,64,0,255,252,64,0, + 32,0,32,0,64,0,255,252,64,0,32,0,32,0,64,0, + 255,252,64,0,32,0,14,5,10,16,1,3,33,192,66,160, + 255,252,66,160,33,192,14,5,10,16,1,3,34,32,69,80, + 245,92,72,128,32,0,14,5,10,16,1,3,40,64,80,64, + 255,252,80,64,40,64,14,5,10,16,1,3,40,160,80,160, + 255,252,80,160,40,160,14,5,10,16,1,3,40,4,80,4, + 255,252,80,4,40,4,14,5,10,16,1,3,40,4,80,8, + 253,176,80,8,40,4,14,5,10,16,1,3,32,0,64,0, + 213,84,64,0,32,0,14,5,10,16,1,3,32,132,64,136, + 255,240,64,136,32,132,14,5,10,16,1,3,33,68,65,72, + 255,240,65,72,33,68,14,5,10,16,1,3,40,4,80,8, + 255,240,80,8,40,4,14,5,10,16,1,3,40,132,80,136, + 255,240,80,136,40,132,14,5,10,16,1,3,41,68,81,72, + 255,240,81,72,41,68,14,5,10,16,1,3,40,144,80,96, + 255,252,80,96,40,144,14,5,10,16,1,3,32,240,65,8, + 254,4,64,0,32,0,14,7,14,16,1,3,3,240,0,0, + 35,240,64,0,255,252,64,0,32,0,14,7,14,16,1,3, + 0,112,8,136,39,0,64,0,255,252,64,0,32,0,14,10, + 20,16,1,254,32,0,64,0,255,252,64,0,32,112,8,136, + 7,0,0,112,8,136,7,0,14,9,18,16,1,1,224,0, + 24,0,6,16,1,8,31,252,1,8,6,16,24,0,224,0, + 14,11,22,16,1,0,252,0,2,0,1,0,0,144,0,136, + 255,252,0,136,0,144,1,0,2,0,252,0,15,11,22,16, + 0,1,4,0,8,0,31,254,32,0,127,254,128,0,127,254, + 32,0,31,254,8,0,4,0,15,11,22,16,0,1,0,64, + 0,32,255,240,0,8,255,252,0,2,255,252,0,8,255,240, + 0,32,0,64,14,7,14,16,1,3,3,128,68,64,56,16, + 0,8,255,252,0,8,0,16,14,10,20,16,1,254,0,16, + 0,8,255,252,0,8,3,144,68,64,56,0,3,128,68,64, + 56,0,14,7,14,16,1,3,7,0,8,136,32,112,64,0, + 255,252,64,0,32,0,14,10,20,16,1,254,32,0,64,0, + 255,252,64,0,39,0,8,136,0,112,7,0,8,136,0,112, + 14,7,14,16,1,1,32,0,64,0,255,252,64,0,32,112, + 8,136,7,0,14,7,14,16,1,1,0,16,0,8,255,252, + 0,8,3,144,68,64,56,0,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,13,13,26,16,1,0,2,0,2,0,5,0, + 5,0,248,248,64,16,32,32,16,64,8,128,16,64,34,32, + 77,144,112,112,11,10,20,16,2,1,4,0,14,0,14,0, + 255,224,127,192,63,128,63,128,123,192,241,224,192,96,11,10, + 20,16,2,1,4,0,10,0,10,0,241,224,64,64,32,128, + 36,128,74,64,177,160,192,96,11,12,24,16,3,0,4,0, + 30,0,127,0,255,128,255,192,255,224,255,224,255,192,255,128, + 127,0,30,0,4,0,11,12,24,16,3,0,4,0,26,0, + 97,0,128,128,128,64,128,32,128,32,128,64,128,128,97,0, + 26,0,4,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 8, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 3 y=10 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[4272] U8G_SECTION(".progmem.u8g_font_unifont_8_9") = { + 0,16,16,0,254,8,4,65,6,56,0,255,0,14,254,12, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,6,14,14,8,1,0,72,72,0, + 0,252,128,128,128,248,128,128,128,128,252,7,10,10,8,1, + 0,252,32,32,32,60,34,34,34,34,44,6,14,14,8,1, + 0,24,96,0,0,252,128,128,128,128,128,128,128,128,128,6, + 10,10,8,1,0,56,68,128,128,248,128,128,128,68,56,6, + 10,10,8,1,0,120,132,132,128,96,24,4,132,132,120,5, + 10,10,8,2,0,248,32,32,32,32,32,32,32,32,248,5, + 14,14,8,2,0,144,144,0,0,248,32,32,32,32,32,32, + 32,32,248,6,10,10,8,1,0,28,8,8,8,8,8,8, + 136,136,112,8,10,10,8,0,0,120,72,72,72,78,73,73, + 73,73,142,7,10,10,8,1,0,144,144,144,144,252,146,146, + 146,146,156,7,10,10,8,1,0,252,32,32,32,60,34,34, + 34,34,34,6,14,14,8,1,0,24,96,0,0,128,140,144, + 160,192,192,160,144,136,132,6,13,13,8,1,0,96,24,0, + 132,140,140,148,148,164,164,196,196,132,7,14,14,8,1,0, + 132,132,120,0,130,130,68,68,40,40,16,16,32,96,7,10, + 10,8,1,0,130,130,130,130,130,130,254,16,16,16,6,10, + 10,8,1,0,48,72,72,132,132,132,252,132,132,132,6,10, + 10,8,1,0,248,128,128,128,248,132,132,132,132,248,6,10, + 10,8,1,0,248,132,132,132,248,132,132,132,132,248,6,10, + 10,8,1,0,252,128,128,128,128,128,128,128,128,128,8,12, + 12,8,0,254,14,18,18,18,34,34,34,66,66,255,129,129, + 6,10,10,8,1,0,252,128,128,128,248,128,128,128,128,252, + 7,10,10,8,1,0,146,146,84,84,56,56,84,84,146,146, + 6,10,10,8,1,0,120,132,4,4,120,8,4,4,132,120, + 6,10,10,8,1,0,132,140,140,148,148,164,164,196,196,132, + 6,13,13,8,1,0,72,48,0,132,140,140,148,148,164,164, + 196,196,132,6,10,10,8,1,0,128,140,144,160,192,192,160, + 144,136,132,6,10,10,8,1,0,60,36,36,36,36,36,36, + 68,68,132,6,10,10,8,1,0,132,132,204,204,180,180,132, + 132,132,132,6,10,10,8,1,0,132,132,132,132,252,132,132, + 132,132,132,6,10,10,8,1,0,120,132,132,132,132,132,132, + 132,132,120,6,10,10,8,1,0,252,132,132,132,132,132,132, + 132,132,132,6,10,10,8,1,0,248,132,132,132,248,128,128, + 128,128,128,6,10,10,8,1,0,120,132,132,128,128,128,128, + 132,132,120,7,10,10,8,1,0,254,16,16,16,16,16,16, + 16,16,16,7,10,10,8,1,0,130,130,68,68,40,40,16, + 16,32,96,7,11,11,8,1,0,16,124,146,146,146,146,146, + 124,16,16,16,6,10,10,8,1,0,132,132,72,72,48,48, + 72,72,132,132,7,12,12,8,1,254,132,132,132,132,132,132, + 132,132,132,254,2,2,6,10,10,8,1,0,132,132,132,132, + 132,252,4,4,4,4,7,10,10,8,1,0,146,146,146,146, + 146,146,146,146,146,254,8,12,12,8,0,254,146,146,146,146, + 146,146,146,146,146,255,1,1,7,10,10,8,1,0,224,32, + 32,32,60,34,34,34,34,60,6,10,10,8,1,0,132,132, + 132,132,228,148,148,148,148,228,6,10,10,8,1,0,128,128, + 128,128,248,132,132,132,132,248,6,10,10,8,1,0,112,136, + 4,4,124,4,4,4,136,112,6,10,10,8,1,0,152,164, + 164,164,228,164,164,164,164,152,6,10,10,8,1,0,124,132, + 132,132,124,36,68,68,132,132,6,8,8,8,1,0,120,132, + 4,124,132,132,140,116,6,12,12,8,1,0,4,56,64,128, + 248,132,132,132,132,132,132,120,6,8,8,8,1,0,248,132, + 132,248,132,132,132,248,6,8,8,8,1,0,252,128,128,128, + 128,128,128,128,7,9,9,8,1,255,60,36,68,68,132,132, + 132,254,130,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,7,8,8,8,1,0,146,146,84,56,56,84,146,146,6, + 8,8,8,1,0,120,132,4,120,8,4,132,120,6,8,8, + 8,1,0,140,140,148,148,164,164,196,196,6,12,12,8,1, + 0,72,48,0,0,140,140,148,148,164,164,196,196,6,8,8, + 8,1,0,140,144,160,192,160,144,136,132,6,8,8,8,1, + 0,60,36,36,36,36,68,68,132,6,8,8,8,1,0,132, + 204,204,180,180,132,132,132,6,8,8,8,1,0,132,132,132, + 252,132,132,132,132,6,8,8,8,1,0,120,132,132,132,132, + 132,132,120,6,8,8,8,1,0,252,132,132,132,132,132,132, + 132,6,10,10,8,1,254,248,132,132,132,132,248,128,128,128, + 128,6,8,8,8,1,0,120,132,128,128,128,128,132,120,7, + 8,8,8,1,0,254,16,16,16,16,16,16,16,6,10,10, + 8,1,254,132,132,72,72,48,48,32,32,64,192,7,10,10, + 8,1,255,16,16,124,146,146,146,146,124,16,16,6,8,8, + 8,1,0,132,132,72,48,48,72,132,132,7,10,10,8,1, + 254,132,132,132,132,132,132,132,254,2,2,6,8,8,8,1, + 0,132,132,132,132,252,4,4,4,7,8,8,8,1,0,146, + 146,146,146,146,146,146,254,8,10,10,8,0,254,146,146,146, + 146,146,146,146,255,1,1,7,8,8,8,1,0,224,32,32, + 60,34,34,34,60,6,8,8,8,1,0,132,132,132,228,148, + 148,148,228,6,8,8,8,1,0,128,128,128,248,132,132,132, + 248,6,8,8,8,1,0,112,136,4,124,4,4,136,112,6, + 8,8,8,1,0,152,164,164,228,164,164,164,152,6,8,8, + 8,1,0,124,132,132,132,124,36,68,132,6,12,12,8,1, + 0,96,24,0,0,120,132,132,252,128,128,132,120,6,12,12, + 8,1,0,72,72,0,0,120,132,132,252,128,128,132,120,6, + 11,11,8,1,255,64,64,240,64,64,120,68,68,68,68,24, + 6,12,12,8,1,0,24,96,0,0,252,128,128,128,128,128, + 128,128,6,8,8,8,1,0,56,68,128,248,128,128,68,56, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,11, + 11,8,2,0,32,32,0,96,32,32,32,32,32,32,248,5, + 11,11,8,2,0,144,144,0,96,32,32,32,32,32,32,248, + 5,13,13,8,1,254,8,8,0,24,8,8,8,8,8,8, + 8,144,96,8,8,8,8,0,0,120,72,72,78,73,73,73, + 142,7,8,8,8,1,0,144,144,144,252,146,146,146,156,6, + 10,10,8,1,0,64,64,240,64,64,88,100,68,68,68,6, + 12,12,8,1,0,24,96,0,0,140,144,160,192,160,144,136, + 132,6,12,12,8,1,0,96,24,0,0,140,140,148,148,164, + 164,196,196,6,15,15,8,1,254,132,132,120,0,0,132,132, + 72,72,48,48,32,32,64,192,5,10,10,8,2,254,136,136, + 136,136,136,136,248,32,32,32,7,10,10,8,1,0,108,130, + 130,130,130,146,146,146,146,108,7,8,8,8,1,0,68,130, + 130,146,146,146,146,108,7,10,10,8,1,0,32,248,32,32, + 60,34,34,34,34,60,6,10,10,8,1,0,64,64,240,64, + 64,120,68,68,68,120,7,10,10,8,1,0,140,146,160,160, + 252,160,160,160,146,140,7,8,8,8,1,0,140,146,160,252, + 160,160,146,140,7,10,10,8,1,0,16,16,40,40,68,108, + 84,146,146,146,7,8,8,8,1,0,16,40,40,68,108,146, + 146,146,7,10,10,8,1,0,144,144,168,168,164,236,212,146, + 146,146,7,8,8,8,1,0,144,168,168,164,236,146,146,146, + 7,10,10,8,1,0,124,68,68,40,16,56,84,146,146,146, + 7,8,8,8,1,0,124,68,40,16,124,146,146,146,7,10, + 10,8,1,0,190,162,162,148,232,156,170,170,170,170,7,8, + 8,8,1,0,190,162,148,232,156,170,170,170,6,14,14,8, + 1,254,72,48,120,132,4,4,120,8,4,4,4,120,128,128, + 6,13,13,8,1,254,72,48,0,120,132,4,120,8,4,4, + 120,128,128,7,10,10,8,1,0,146,146,146,146,146,124,16, + 16,16,16,7,8,8,8,1,254,146,146,146,146,146,124,16, + 16,6,10,10,8,1,0,120,132,132,132,252,132,132,132,132, + 120,6,8,8,8,1,0,120,132,132,252,132,132,132,120,7, + 10,10,8,1,0,134,136,136,136,80,80,80,32,32,32,6, + 8,8,8,1,0,140,144,144,80,80,80,32,32,7,14,14, + 8,1,0,204,34,0,0,134,136,136,136,80,80,80,32,32, + 32,7,12,12,8,1,0,204,34,0,0,140,144,144,80,80, + 80,32,32,7,12,12,8,1,254,64,160,178,178,178,170,172, + 168,168,72,16,16,7,10,10,8,1,254,82,178,178,170,172, + 168,168,72,16,16,7,12,12,8,1,255,16,124,146,130,130, + 130,130,130,130,146,124,16,7,10,10,8,1,255,16,124,146, + 130,130,130,130,146,124,16,7,14,14,8,1,0,120,134,48, + 0,108,130,130,130,130,146,146,146,146,108,7,12,12,8,1, + 0,120,134,48,0,68,130,130,146,146,146,146,108,7,14,14, + 8,1,0,254,16,0,0,108,130,130,130,130,146,146,146,146, + 108,7,12,12,8,1,0,254,16,0,0,68,130,130,146,146, + 146,146,108,6,12,12,8,1,254,120,132,132,128,128,128,128, + 128,120,8,8,8,6,10,10,8,1,254,120,132,132,128,128, + 128,120,8,8,8,7,7,7,8,1,1,36,24,136,84,34, + 48,72,4,3,3,8,1,10,16,240,128,5,4,4,8,0, + 9,16,40,72,128,4,3,3,8,1,10,128,240,128,4,3, + 3,8,1,10,16,240,16,8,3,3,8,0,10,48,76,131, + 14,14,28,16,0,254,1,0,2,128,16,16,40,40,0,0, + 0,0,64,8,160,20,0,0,0,0,0,0,16,16,41,40, + 2,128,14,14,28,16,1,254,1,0,33,8,19,16,24,96, + 0,0,0,0,0,16,224,28,32,0,0,0,0,0,25,176, + 17,16,33,8,7,15,15,8,1,254,72,48,0,132,140,140, + 148,148,164,164,196,196,134,4,8,7,14,14,8,1,254,72, + 48,0,0,140,140,148,148,164,164,196,198,4,8,6,10,10, + 8,1,0,64,224,64,64,64,120,68,68,76,120,6,7,7, + 8,1,0,64,224,64,120,68,68,120,6,10,10,8,1,0, + 248,132,148,136,244,128,128,128,128,128,6,10,10,8,1,254, + 184,196,132,132,132,148,200,180,128,128,6,12,12,8,1,0, + 4,4,252,128,128,128,128,128,128,128,128,128,6,10,10,8, + 1,0,4,4,252,128,128,128,128,128,128,128,7,10,10,8, + 1,0,62,32,32,32,32,248,32,32,32,32,7,8,8,8, + 1,0,62,32,32,32,248,32,32,32,6,11,11,8,1,255, + 252,128,128,128,128,248,132,132,132,132,24,6,9,9,8,1, + 255,252,128,128,128,248,132,132,132,24,7,12,12,8,1,254, + 146,146,84,84,56,56,84,84,146,146,2,2,7,10,10,8, + 1,254,146,146,84,56,56,84,146,146,2,2,6,12,12,8, + 1,254,120,132,4,4,120,8,4,4,132,120,16,96,6,10, + 10,8,1,254,120,132,4,120,8,4,132,120,16,96,6,12, + 12,8,1,254,128,140,144,160,192,192,160,144,136,132,4,4, + 6,10,10,8,1,254,140,144,160,192,160,144,136,132,4,4, + 7,10,10,8,1,0,128,134,168,168,240,168,168,168,132,130, + 7,8,8,8,1,0,134,168,168,240,168,168,132,130,7,10, + 10,8,1,0,64,230,72,80,96,96,80,72,68,66,7,8, + 8,8,1,0,70,232,80,96,80,72,68,66,8,10,10,8, + 0,0,224,35,36,40,48,48,40,36,34,33,8,8,8,8, + 0,0,227,36,40,48,40,36,34,33,7,12,12,8,1,254, + 132,132,132,132,252,132,132,132,132,134,2,2,7,10,10,8, + 1,254,132,132,132,252,132,132,132,134,2,2,7,10,10,8, + 1,0,142,136,136,136,248,136,136,136,136,136,7,8,8,8, + 1,0,142,136,136,248,136,136,136,136,7,12,12,8,1,254, + 240,144,144,144,144,156,146,146,146,146,2,12,7,10,10,8, + 1,254,240,144,144,144,156,146,146,146,2,12,6,11,11,8, + 1,255,56,64,128,152,164,164,164,164,88,48,12,6,9,9, + 8,1,255,56,64,152,164,164,164,88,48,12,6,12,12,8, + 1,254,120,132,132,128,128,128,128,132,132,120,32,24,6,10, + 10,8,1,254,120,132,132,128,128,132,132,120,32,24,7,12, + 12,8,1,254,254,16,16,16,16,16,16,16,16,24,8,8, + 7,10,10,8,1,254,254,16,16,16,16,16,16,24,8,8, + 7,10,10,8,1,0,130,130,68,68,40,16,16,16,16,16, + 5,10,10,8,2,254,136,136,136,80,80,32,32,32,32,32, + 7,10,10,8,1,0,130,130,68,68,40,16,16,124,16,16, + 5,8,8,8,2,0,136,136,136,80,32,32,248,32,7,12, + 12,8,1,254,132,132,72,72,48,48,72,72,132,134,2,2, + 7,10,10,8,1,254,132,132,72,48,48,72,132,134,2,2, + 8,12,12,8,0,254,250,34,34,34,34,34,34,34,34,63, + 1,1,8,10,10,8,0,254,250,34,34,34,34,34,34,63, + 1,1,7,12,12,8,1,254,132,132,132,132,132,140,116,4, + 4,6,2,2,7,10,10,8,1,254,132,132,132,132,140,116, + 4,6,2,2,6,10,10,8,1,0,132,132,132,132,164,172, + 116,36,36,4,6,8,8,8,1,0,132,132,132,164,172,116, + 36,4,6,10,10,8,1,0,128,128,128,184,196,132,132,132, + 132,132,6,8,8,8,1,0,128,128,184,196,132,132,132,132, + 6,10,10,8,1,0,152,164,164,164,124,32,32,36,36,24, + 6,8,8,8,1,0,152,164,164,124,32,32,36,24,6,12, + 12,8,1,254,152,164,164,164,124,32,32,36,36,24,16,12, + 6,10,10,8,1,254,152,164,164,124,32,32,36,24,16,12, + 5,10,10,8,2,0,248,32,32,32,32,32,32,32,32,248, + 7,14,14,8,1,0,130,130,124,0,146,146,84,84,56,56, + 84,84,146,146,7,13,13,8,1,0,68,68,56,0,0,146, + 146,84,56,56,84,146,146,6,12,12,8,1,254,128,140,144, + 160,192,248,132,132,132,132,4,24,6,10,10,8,1,254,140, + 144,160,192,248,132,132,132,4,24,7,12,12,8,1,254,60, + 36,36,36,36,36,36,68,68,134,4,8,7,10,10,8,1, + 254,60,36,36,36,36,68,68,134,4,8,6,12,12,8,1, + 254,132,132,132,132,252,132,132,132,132,132,4,24,6,10,10, + 8,1,254,132,132,132,252,132,132,132,132,4,24,7,12,12, + 8,1,254,132,132,132,132,252,132,132,132,132,134,4,8,7, + 10,10,8,1,254,132,132,132,252,132,132,132,134,4,8,6, + 12,12,8,1,254,132,132,132,132,132,140,116,4,4,12,8, + 8,6,10,10,8,1,254,132,132,132,132,140,116,4,12,8, + 8,7,12,12,8,1,254,132,132,204,204,180,180,132,132,132, + 134,4,8,7,10,10,8,1,254,132,204,204,180,180,132,132, + 134,4,8,3,10,10,8,3,0,224,64,64,64,64,64,64, + 64,64,224,6,14,14,8,1,0,132,132,120,0,48,72,72, + 132,132,252,132,132,132,132,6,13,13,8,1,0,132,132,120, + 0,0,120,132,4,124,132,132,140,116,6,14,14,8,1,0, + 72,72,0,0,48,72,72,132,132,252,132,132,132,132,6,12, + 12,8,1,0,72,72,0,0,120,132,4,124,132,132,140,116, + 7,10,10,8,1,0,62,80,144,144,254,144,144,144,144,158, + 7,8,8,8,1,0,124,146,18,126,144,144,146,124,6,14, + 14,8,1,0,132,132,120,0,252,128,128,128,248,128,128,128, + 128,252,6,12,12,8,1,0,132,132,120,0,120,132,132,252, + 128,128,132,120,6,10,10,8,1,0,48,72,132,4,4,252, + 132,132,72,48,6,8,8,8,1,0,120,132,4,4,252,132, + 132,120,6,14,14,8,1,0,72,72,0,0,48,72,132,4, + 4,252,132,132,72,48,6,12,12,8,1,0,72,72,0,0, + 120,132,4,4,252,132,132,120,7,14,14,8,1,0,72,72, + 0,0,146,146,84,84,56,56,84,84,146,146,7,12,12,8, + 1,0,72,72,0,0,146,146,84,56,56,84,146,146,6,14, + 14,8,1,0,72,72,0,0,120,132,4,4,120,8,4,4, + 132,120,6,12,12,8,1,0,72,72,0,0,120,132,4,120, + 8,4,132,120,6,10,10,8,1,0,252,8,16,32,56,4, + 4,4,140,120,6,10,10,8,1,254,124,8,16,32,56,4, + 4,4,132,120,6,13,13,8,1,0,120,0,0,132,140,140, + 148,148,164,164,196,196,132,6,11,11,8,1,0,120,0,0, + 140,140,148,148,164,164,196,196,6,14,14,8,1,0,72,72, + 0,0,132,140,140,148,148,164,164,196,196,132,6,12,12,8, + 1,0,72,72,0,0,140,140,148,148,164,164,196,196,6,14, + 14,8,1,0,72,72,0,0,120,132,132,132,132,132,132,132, + 132,120,6,12,12,8,1,0,72,72,0,0,120,132,132,132, + 132,132,132,120,6,10,10,8,1,0,120,132,132,132,252,132, + 132,132,132,120,6,8,8,8,1,0,120,132,132,252,132,132, + 132,120,6,14,14,8,1,0,72,72,0,0,120,132,132,132, + 252,132,132,132,132,120,6,12,12,8,1,0,72,72,0,0, + 120,132,132,252,132,132,132,120,6,12,12,8,1,0,72,0, + 120,132,4,4,124,4,4,4,132,120,6,10,10,8,1,0, + 72,0,120,132,4,60,4,4,132,120,7,13,13,8,1,0, + 124,0,0,130,130,68,68,40,40,16,16,32,96,6,13,13, + 8,1,254,120,0,0,132,132,72,72,48,48,32,32,64,192, + 7,14,14,8,1,0,72,72,0,0,130,130,68,68,40,40, + 16,16,32,96,6,14,14,8,1,254,72,72,0,0,132,132, + 72,72,48,48,32,32,64,192,7,14,14,8,1,0,102,136, + 0,0,130,130,68,68,40,40,16,16,32,96,7,14,14,8, + 1,254,102,136,0,0,132,132,72,72,48,48,32,32,64,192, + 6,14,14,8,1,0,72,72,0,0,132,132,132,132,132,140, + 116,4,4,4,6,12,12,8,1,0,72,72,0,0,132,132, + 132,132,140,116,4,4,6,12,12,8,1,254,252,128,128,128, + 128,128,128,128,128,224,96,32,6,10,10,8,1,254,252,128, + 128,128,128,128,128,224,96,32,6,14,14,8,1,0,72,72, + 0,0,132,132,132,132,228,148,148,148,148,228,6,12,12,8, + 1,0,72,72,0,0,132,132,132,228,148,148,148,228,6,12, + 12,8,1,254,252,128,128,128,248,128,128,128,128,192,64,192, + 5,10,10,8,1,254,248,128,128,240,128,128,128,192,64,192, + 6,12,12,8,1,254,132,132,72,72,48,48,72,72,132,132, + 4,8,6,10,10,8,1,254,132,132,72,48,48,72,132,132, + 4,8,6,10,10,8,1,0,132,132,72,72,48,252,72,72, + 132,132,6,8,8,8,1,0,132,132,72,48,252,72,132,132 + }; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont[5516] U8G_SECTION(".progmem.u8g_font_unifont") = { + 0,16,16,0,254,10,6,167,8,149,0,255,254,14,254,11, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,147,194,82,50,95,138,82,113, + 147,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,165,193, + 36,49,25,137,36,113,37,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,123,165,193,36,121,25,193,36,121,37,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,121,191,194,72,122,73,194, + 72,121,137,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,122, + 77,194,82,123,83,194,214,122,79,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,49,165,202,40,122,49,202,40,73,165,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,115,209,202,16,115, + 209,202,16,115,223,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,120,225,197,0,120,193,196,32,121,193,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,241,196,64,124,65,196,64,68, + 65,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,65,241,193, + 0,65,241,193,0,125,1,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,69,241,196,64,68,65,168,64,16,65,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,125,241,193,0,125,241,193, + 0,65,1,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,61, + 225,193,16,65,225,193,32,61,17,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,60,225,193,16,57,17,133,16,120,225,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,61,241,192,64,56, + 65,132,64,121,241,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,57,202,32,74,57,202,32,115,185,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,113,137,202,24,74,9,202,8,113, + 157,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,113,153,202, + 4,74,9,202,16,113,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,113,153,202,4,74,25,202,4,113,153,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,113,133,202,12,74,21,202, + 28,113,133,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,73, + 147,234,84,106,89,219,212,74,83,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,52,83,194,154,49,23,137,18,113,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,123,185,193,36,121, + 57,193,36,121,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,37,196,180,71,173,196,164,52,165,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,125,17,193,176,125,81,193,16,125, + 17,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,58,93,194, + 82,50,93,138,82,113,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,121,207,194,16,121,145,192,80,123,143,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,121,193,194,0,121,129,192, + 64,67,129,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 193,194,0,89,129,200,64,59,129,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,113,193,202,0,113,129,208,64,75,129,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,73,193,202,0,73, + 129,200,64,51,129,128,0,0,1,128,0,0,1,128,0,85, + 85,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,157,202,82,115, + 211,194,82,66,93,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,73,157,202,82,122,93,202,80,73,145,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,147,202,82,115,159,202,18,114, + 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,147,234, + 82,91,159,202,82,75,147,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,116,185,166,164,37,165,164,164,116,185,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,75,209,234,16,91,209,202, + 16,75,223,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 205,194,18,49,159,136,82,115,147,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,121,205,194,18,121,159,192,82,123,147,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,75,157,201,32,121, + 25,201,4,73,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,75,185,201,8,121,9,201,8,73,49,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,205,196,144,68,137,168,132,16, + 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,114,29,202, + 18,114,19,194,18,67,221,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,19,202,18,114,19,194,18,67,205,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,14,33,137,32,14,33,138, + 32,9,33,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 221,194,2,49,141,136,80,115,159,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,57,221,194,2,49,141,136,66,115,157,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,207,202,16,74, + 13,202,2,113,221,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,69,202,76,114,69,194,68,65,143,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,114,93,202,66,114,77,194,80,65, + 159,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,157,193, + 32,49,25,137,4,113,57,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,211,194,18,66,31,194,18,57,211,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,69,17,237,16,85,81,197, + 176,69,17,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, + 141,194,82,51,159,138,18,114,19,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,123,141,194,82,123,159,194,18,122,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,57,143,194,80,50, + 77,138,66,113,157,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,155,196,34,37,163,148,162,99,155,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,221,194,8,50,9,138,8,113, + 221,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,57,221,194, + 8,65,137,192,72,59,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,14,249,144,32,12,33,130,32,28,33,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,49,207,202,16,73,145,200, + 80,51,143,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, + 33,203,96,114,161,194,32,66,33,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,51,143,202,80,123,145,202,16,74,15,128, + 0,0,1,128,0,0,1,128,0,85,85,0,0,0,8,0, + 14,1,10,10,8,4,0,128,128,0,128,128,128,128,128,128, + 128,7,10,10,8,1,0,16,16,124,146,144,144,146,124,16, + 16,7,10,10,8,1,0,28,32,32,32,248,32,32,32,124, + 194,6,8,8,8,1,1,132,72,120,72,72,120,72,132,7, + 10,10,8,1,0,130,68,40,16,254,16,254,16,16,16,1, + 10,10,8,4,0,128,128,128,128,0,0,128,128,128,128,6, + 10,10,8,1,0,120,132,128,120,132,132,120,4,132,120,4, + 2,2,8,2,12,144,144,8,10,10,8,0,0,60,66,153, + 165,161,161,165,153,66,60,5,7,7,8,2,5,112,8,120, + 136,120,0,248,6,9,9,8,1,0,36,36,72,72,144,72, + 72,36,36,6,4,4,8,1,0,252,4,4,4,6,1,1, + 8,1,4,252,8,10,10,8,0,0,60,66,185,165,165,185, + 169,165,66,60,6,1,1,8,1,11,252,3,4,4,8,2, + 10,64,160,160,64,7,9,9,8,1,1,16,16,16,254,16, + 16,16,0,254,5,7,7,8,2,5,112,136,8,112,128,128, + 248,5,7,7,8,2,5,112,136,8,112,8,136,112,3,3, + 3,8,3,10,32,64,128,5,8,8,8,2,254,136,136,136, + 136,216,168,128,128,6,12,12,8,1,255,124,244,244,244,244, + 116,20,20,20,20,20,28,2,2,2,8,3,4,192,192,3, + 2,2,8,2,254,32,192,3,7,7,8,2,5,32,96,160, + 32,32,32,32,5,7,7,8,2,5,112,136,136,136,112,0, + 248,6,9,9,8,1,0,144,144,72,72,36,72,72,144,144, + 6,10,10,8,1,0,68,196,72,80,80,36,44,84,156,132, + 6,10,10,8,1,0,68,196,72,80,80,40,52,68,136,156, + 6,10,10,8,1,0,196,36,72,48,208,36,44,84,156,132, + 6,10,10,8,1,0,16,16,0,16,16,96,132,132,132,120, + 6,14,14,8,1,0,96,24,0,0,48,72,72,132,132,252, + 132,132,132,132,6,14,14,8,1,0,24,96,0,0,48,72, + 72,132,132,252,132,132,132,132,6,14,14,8,1,0,48,72, + 0,0,48,72,72,132,132,252,132,132,132,132,6,14,14,8, + 1,0,100,152,0,0,48,72,72,132,132,252,132,132,132,132, + 6,14,14,8,1,0,72,72,0,0,48,72,72,132,132,252, + 132,132,132,132,6,14,14,8,1,0,48,72,48,0,48,72, + 72,132,132,252,132,132,132,132,7,10,10,8,1,0,62,80, + 144,144,254,144,144,144,144,158,6,12,12,8,1,254,120,132, + 132,128,128,128,128,132,132,120,16,96,6,14,14,8,1,0, + 96,24,0,0,252,128,128,128,248,128,128,128,128,252,6,14, + 14,8,1,0,24,96,0,0,252,128,128,128,248,128,128,128, + 128,252,6,14,14,8,1,0,48,72,0,0,252,128,128,128, + 248,128,128,128,128,252,6,14,14,8,1,0,72,72,0,0, + 252,128,128,128,248,128,128,128,128,252,5,14,14,8,2,0, + 96,24,0,0,248,32,32,32,32,32,32,32,32,248,5,14, + 14,8,2,0,48,192,0,0,248,32,32,32,32,32,32,32, + 32,248,5,14,14,8,2,0,96,144,0,0,248,32,32,32, + 32,32,32,32,32,248,5,14,14,8,2,0,144,144,0,0, + 248,32,32,32,32,32,32,32,32,248,7,10,10,8,0,0, + 120,68,66,66,242,66,66,66,68,120,6,14,14,8,1,0, + 100,152,0,0,132,196,196,164,164,148,148,140,140,132,6,14, + 14,8,1,0,96,24,0,0,120,132,132,132,132,132,132,132, + 132,120,6,14,14,8,1,0,24,96,0,0,120,132,132,132, + 132,132,132,132,132,120,6,14,14,8,1,0,48,72,0,0, + 120,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0, + 100,152,0,0,120,132,132,132,132,132,132,132,132,120,6,14, + 14,8,1,0,72,72,0,0,120,132,132,132,132,132,132,132, + 132,120,6,5,5,8,1,2,132,72,48,72,132,6,12,12, + 8,1,255,4,116,136,140,148,148,164,164,196,68,184,128,6, + 14,14,8,1,0,96,24,0,0,132,132,132,132,132,132,132, + 132,132,120,6,14,14,8,1,0,24,96,0,0,132,132,132, + 132,132,132,132,132,132,120,6,14,14,8,1,0,48,72,0, + 0,132,132,132,132,132,132,132,132,132,120,6,14,14,8,1, + 0,72,72,0,0,132,132,132,132,132,132,132,132,132,120,7, + 14,14,8,1,0,24,96,0,0,130,130,68,68,40,16,16, + 16,16,16,6,11,11,8,1,0,128,128,240,136,132,132,136, + 240,128,128,128,6,10,10,8,1,0,112,136,136,136,248,132, + 132,132,196,184,6,12,12,8,1,0,96,24,0,0,120,132, + 4,124,132,132,140,116,6,12,12,8,1,0,24,96,0,0, + 120,132,4,124,132,132,140,116,6,12,12,8,1,0,48,72, + 0,0,120,132,4,124,132,132,140,116,6,12,12,8,1,0, + 100,152,0,0,120,132,4,124,132,132,140,116,6,12,12,8, + 1,0,72,72,0,0,120,132,4,124,132,132,140,116,6,13, + 13,8,1,0,48,72,48,0,0,120,132,4,124,132,132,140, + 116,7,8,8,8,1,0,124,146,18,126,144,144,146,124,6, + 10,10,8,1,254,120,132,128,128,128,128,132,120,16,96,6, + 12,12,8,1,0,96,24,0,0,120,132,132,252,128,128,132, + 120,6,12,12,8,1,0,24,96,0,0,120,132,132,252,128, + 128,132,120,6,12,12,8,1,0,48,72,0,0,120,132,132, + 252,128,128,132,120,6,12,12,8,1,0,72,72,0,0,120, + 132,132,252,128,128,132,120,5,12,12,8,2,0,192,48,0, + 0,96,32,32,32,32,32,32,248,5,12,12,8,2,0,48, + 192,0,0,96,32,32,32,32,32,32,248,5,12,12,8,2, + 0,96,144,0,0,96,32,32,32,32,32,32,248,5,12,12, + 8,2,0,144,144,0,0,96,32,32,32,32,32,32,248,6, + 12,12,8,1,0,100,24,40,68,4,124,132,132,132,132,132, + 120,6,12,12,8,1,0,100,152,0,0,184,196,132,132,132, + 132,132,132,6,12,12,8,1,0,96,24,0,0,120,132,132, + 132,132,132,132,120,6,12,12,8,1,0,24,96,0,0,120, + 132,132,132,132,132,132,120,6,12,12,8,1,0,48,72,0, + 0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,100, + 152,0,0,120,132,132,132,132,132,132,120,6,12,12,8,1, + 0,72,72,0,0,120,132,132,132,132,132,132,120,6,7,7, + 8,1,1,48,0,0,252,0,0,48,6,10,10,8,1,255, + 4,120,140,148,148,164,164,196,120,128,6,12,12,8,1,0, + 96,24,0,0,132,132,132,132,132,132,140,116,6,12,12,8, + 1,0,24,96,0,0,132,132,132,132,132,132,140,116,6,12, + 12,8,1,0,48,72,0,0,132,132,132,132,132,132,140,116, + 6,12,12,8,1,0,72,72,0,0,132,132,132,132,132,132, + 140,116,6,14,14,8,1,254,24,96,0,0,132,132,132,132, + 132,76,52,4,4,120,5,12,12,8,2,254,128,128,240,136, + 136,136,144,160,192,128,128,128,6,14,14,8,1,254,72,72, + 0,0,132,132,132,132,132,76,52,4,4,120}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=14 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifontr[1483] U8G_SECTION(".progmem.u8g_font_unifontr") = { + 0,16,16,0,254,10,1,231,3,213,32,127,254,14,254,11, + 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85}; diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_line.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_line.c new file mode 100644 index 000000000..30b309723 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_line.c @@ -0,0 +1,81 @@ +/* + + u8g_line.h + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2) +{ + u8g_uint_t tmp; + u8g_uint_t x,y; + u8g_uint_t dx, dy; + u8g_int_t err; + u8g_int_t ystep; + + uint8_t swapxy = 0; + + /* no BBX intersection check at the moment, should be added... */ + + if ( x1 > x2 ) dx = x1-x2; else dx = x2-x1; + if ( y1 > y2 ) dy = y1-y2; else dy = y2-y1; + + if ( dy > dx ) + { + swapxy = 1; + tmp = dx; dx =dy; dy = tmp; + tmp = x1; x1 =y1; y1 = tmp; + tmp = x2; x2 =y2; y2 = tmp; + } + if ( x1 > x2 ) + { + tmp = x1; x1 =x2; x2 = tmp; + tmp = y1; y1 =y2; y2 = tmp; + } + err = dx >> 1; + if ( y2 > y1 ) ystep = 1; else ystep = -1; + y = y1; + for( x = x1; x <= x2; x++ ) + { + if ( swapxy == 0 ) + u8g_DrawPixel(u8g, x, y); + else + u8g_DrawPixel(u8g, y, x); + err -= (uint8_t)dy; + if ( err < 0 ) + { + y += (u8g_uint_t)ystep; + err += (u8g_uint_t)dx; + } + } +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ll_api.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ll_api.c new file mode 100644 index 000000000..41c7fada1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_ll_api.c @@ -0,0 +1,456 @@ +/* + + u8g_ll_api.c + + low level api + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include +#include "u8g.h" + +uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + return dev->dev_fn(u8g, dev, msg, arg); +} + +/*====================================================================*/ + +uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t r; + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + r = u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_INIT, NULL); + u8g->state_cb(U8G_STATE_MSG_BACKUP_U8G); + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); + return r; +} + +void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + u8g->state_cb(U8G_STATE_MSG_RESTORE_U8G); + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_PAGE_FIRST, NULL); + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); +} + +uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t r; + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + u8g->state_cb(U8G_STATE_MSG_RESTORE_U8G); + r = u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_PAGE_NEXT, NULL); + if ( r != 0 ) + { + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); + } + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); + return r; +} + +uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_CONTRAST, &contrast); +} + +void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y) +{ + u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel); + arg->x = x; + arg->y = y; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_PIXEL, arg); +} + +void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel); + arg->x = x; + arg->y = y; + arg->dir = dir; + arg->pixel = pixel; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_8PIXEL, arg); +} + +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION +uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_IS_BBX_INTERSECTION, &arg); +} +#endif + + + +u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_uint_t r; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_WIDTH, &r); + return r; +} + +u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_uint_t r; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_HEIGHT, &r); + return r; +} + +u8g_uint_t u8g_GetModeLL(u8g_t *u8g, u8g_dev_t *dev) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_MODE, NULL); +} + + + +/*====================================================================*/ + +void u8g_UpdateDimension(u8g_t *u8g) +{ + u8g->width = u8g_GetWidthLL(u8g, u8g->dev); + u8g->height = u8g_GetHeightLL(u8g, u8g->dev); + u8g->mode = u8g_GetModeLL(u8g, u8g->dev); + /* 9 Dec 2012: u8g_scale.c requires update of current page */ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); +} + +static void u8g_init_data(u8g_t *u8g) +{ + uint8_t i; + u8g->font = NULL; + u8g->cursor_font = NULL; + u8g->cursor_bg_color = 0; + u8g->cursor_fg_color = 1; + u8g->cursor_encoding = 34; + u8g->cursor_fn = (u8g_draw_cursor_fn)0; + + for( i = 0; i < U8G_PIN_LIST_LEN; i++ ) + u8g->pin_list[i] = U8G_PIN_NONE; + + u8g_SetColorIndex(u8g, 1); + + u8g_SetFontPosBaseline(u8g); + + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_XTEXT; + u8g->font_ref_ascent = 0; + u8g->font_ref_descent = 0; + u8g->font_line_spacing_factor = 64; /* 64 = 1.0, 77 = 1.2 line spacing factor */ + u8g->line_spacing = 0; + + u8g->state_cb = u8g_state_dummy_cb; + +} + +uint8_t u8g_Begin(u8g_t *u8g) +{ + /* call and init low level driver and com device */ + if ( u8g_InitLL(u8g, u8g->dev) == 0 ) + return 0; + /* fetch width and height from the low level */ + u8g_UpdateDimension(u8g); + return 1; +} + +uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_init_data(u8g); + u8g->dev = dev; + + /* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */ + /* if - in future releases - this is removed, then still call u8g_UpdateDimension() */ + /* if Arduino call u8g_UpdateDimension else u8g_Begin */ + /* issue 146 */ + return u8g_Begin(u8g); +} + +uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + u8g->pin_list[U8G_PI_SCK] = sck; + u8g->pin_list[U8G_PI_MOSI] = mosi; + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_RESET] = reset; + + /* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */ + /* if - in future releases - this is removed, then still call u8g_UpdateDimension() */ + /* if Arduino call u8g_UpdateDimension else u8g_Begin */ + /* issue 146 */ + return u8g_Begin(u8g); +} + +uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) +{ + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + + /* assign user pins */ + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options) +{ + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + u8g->pin_list[U8G_PI_I2C_OPTION] = options; + + return u8g_Begin(u8g); +} + + +uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_EN] = en; + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_DI] = di; + u8g->pin_list[U8G_PI_RW] = rw; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_D0] = d0; + u8g->pin_list[U8G_PI_D1] = d1; + u8g->pin_list[U8G_PI_D2] = d2; + u8g->pin_list[U8G_PI_D3] = d3; + u8g->pin_list[U8G_PI_D4] = d4; + u8g->pin_list[U8G_PI_D5] = d5; + u8g->pin_list[U8G_PI_D6] = d6; + u8g->pin_list[U8G_PI_D7] = d7; + + u8g->pin_list[U8G_PI_EN] = en; + u8g->pin_list[U8G_PI_CS1] = cs1; + u8g->pin_list[U8G_PI_CS2] = cs2; + u8g->pin_list[U8G_PI_DI] = di; + u8g->pin_list[U8G_PI_RW] = rw; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +/* + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS 14 + PIN_A0 15 + PIN_RESET 16 + PIN_WR 17 + PIN_RD 18 + + u8g_InitRW8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + u8g_InitRW8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16) + +*/ + +uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_D0] = d0; + u8g->pin_list[U8G_PI_D1] = d1; + u8g->pin_list[U8G_PI_D2] = d2; + u8g->pin_list[U8G_PI_D3] = d3; + u8g->pin_list[U8G_PI_D4] = d4; + u8g->pin_list[U8G_PI_D5] = d5; + u8g->pin_list[U8G_PI_D6] = d6; + u8g->pin_list[U8G_PI_D7] = d7; + + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_WR] = wr; + u8g->pin_list[U8G_PI_RD] = rd; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +void u8g_FirstPage(u8g_t *u8g) +{ + u8g_FirstPageLL(u8g, u8g->dev); +} + +uint8_t u8g_NextPage(u8g_t *u8g) +{ + if ( u8g->cursor_fn != (u8g_draw_cursor_fn)0 ) + { + u8g->cursor_fn(u8g); + } + return u8g_NextPageLL(u8g, u8g->dev); +} + +uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast) +{ + return u8g_SetContrastLL(u8g, u8g->dev, contrast); +} + +void u8g_SleepOn(u8g_t *u8g) +{ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SLEEP_ON, NULL); +} + +void u8g_SleepOff(u8g_t *u8g) +{ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SLEEP_OFF, NULL); +} + + +void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y) +{ + u8g_DrawPixelLL(u8g, u8g->dev, x, y); +} + +void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_Draw8PixelLL(u8g, u8g->dev, x, y, dir, pixel); +} + +/* u8g_IsBBXIntersection() has been moved to u8g_clip.c */ +#ifdef OBSOLETE_CODE +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + /* new code */ + u8g_dev_arg_bbx_t arg; + arg.x = x; + arg.y = y; + arg.w = w; + arg.h = h; + return u8g_is_box_bbx_intersection(&(u8g->current_page), &arg); + + /* old code */ + //return u8g_IsBBXIntersectionLL(u8g, u8g->dev, x, y, w, h); +} +#endif + +void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx) +{ + u8g->arg_pixel.color = idx; + /*u8g->color_index = idx; */ /* must be removed */ +} + +uint8_t u8g_GetColorIndex(u8g_t *u8g) +{ + return u8g->arg_pixel.color; +} + +uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g) +{ + uint8_t mode; + mode = u8g_GetMode(u8g); + if ( mode == U8G_MODE_R3G3B2 ) + return 255; /* white */ + else if ( u8g_GetMode(u8g) == U8G_MODE_GRAY2BIT ) + return 3; /* max intensity */ + else /* if ( u8g.getMode() == U8G_MODE_BW ) */ + return 1; /* pixel on */ + return 1; +} + +void u8g_SetDefaultForegroundColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultForegroundColor(u8g)); +} + +uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g) +{ + return 0; +} + +void u8g_SetDefaultBackgroundColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultBackgroundColor(u8g)); /* pixel on / black */ +} + +uint8_t u8g_GetDefaultMidColor(u8g_t *u8g) +{ + uint8_t mode; + mode = u8g_GetMode(u8g); + if ( mode == U8G_MODE_R3G3B2 ) + return 0x06d; /* gray: 01101101 */ + else if ( u8g_GetMode(u8g) == U8G_MODE_GRAY2BIT ) + return 1; /* low mid intensity */ + else /* if ( u8g.getMode() == U8G_MODE_BW ) */ + return 1; /* pixel on */ + return 1; /* default */ +} + +void u8g_SetDefaultMidColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultMidColor(u8g)); +} + + + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_page.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_page.c new file mode 100644 index 000000000..1a3eb21ed --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_page.c @@ -0,0 +1,81 @@ +/* + + u8g_page.c + + page helper functions, only called by the dev handler. + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* + setup page count structure + conditions: page_height <= total_height +*/ +void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) +{ + p->page_height = page_height; + p->total_height = total_height; + p->page = 0; + u8g_page_First(p); +} + +void u8g_page_First(u8g_page_t *p) +{ + p->page_y0 = 0; + p->page_y1 = p->page_height; + p->page_y1--; + p->page = 0; +} + +uint8_t u8g_page_Next(u8g_page_t * p) +{ + register u8g_uint_t y1; + p->page_y0 += p->page_height; + if ( p->page_y0 >= p->total_height ) + return 0; + p->page++; + y1 = p->page_y1; + y1 += p->page_height; + if ( y1 >= p->total_height ) + { + y1 = p->total_height; + y1--; + } + p->page_y1 = y1; + + return 1; +} + + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb.c new file mode 100644 index 000000000..a94647361 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb.c @@ -0,0 +1,191 @@ +/* + + u8g_pb.c + + common procedures for the page buffer + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_pb_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* the following procedure does not work. why? Can be checked with descpic */ +/* +void u8g_pb_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t cnt = b->width; + do + { + *ptr++ = 0; + cnt--; + } while( cnt != 0 ); +} +*/ + +/* + intersection assumptions: + a1 <= a2 is always true +*/ + /* + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + */ +/* +uint8_t u8g_pb8v1_IsYIntersection___Old(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c0, c1, c; + c0 = v0 <= b->p.page_y1; + c1 = v1 >= b->p.page_y0; + c = v0 > v1; + if ( c0 && c1 ) return 1; + if ( c0 && c ) return 1; + if ( c1 && c ) return 1; + return 0; +} +*/ + +uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c1, c2, c3, tmp; + c1 = v0 <= pb->p.page_y1; + c2 = v1 >= pb->p.page_y0; + c3 = v0 > v1; + /* + if ( c1 && c2 ) + return 1; + if ( c1 && c3 ) + return 1; + if ( c2 && c3 ) + return 1; + return 0; + */ + + tmp = c1; + c1 &= c2; + c2 &= c3; + c3 &= tmp; + c1 |= c2; + c1 |= c3; + return c1 & 1; +} + + +uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t /*c0, c1, */ c2, c3; + /* + conditions: b->p.page_y0 < b->p.page_y1 + there are no restriction on v0 and v1. If v0 > v1, then warp around unsigned is assumed + */ + /* + c0 = v0 < 0; + c1 = v1 < 0; + */ + c2 = v0 > b->width; + c3 = v1 > b->width; + /*if ( c0 && c1 ) return 0;*/ + if ( c2 && c3 ) return 0; + /*if ( c1 && c2 ) return 0;*/ + return 1; +} + +uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx) +{ + u8g_uint_t tmp; + + tmp = bbx->y; + tmp += bbx->h; + tmp--; + + if ( u8g_pb_IsYIntersection(pb, bbx->y, tmp) == 0 ) + return 0; + + /* maybe this one can be skiped... probability is very high to have an intersection, so it would be ok to always return 1 */ + tmp = bbx->x; + tmp += bbx->w; + tmp--; + + return u8g_pb_IsXIntersection(pb, bbx->x, tmp); +} + +void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box) +{ + box->x0 = 0; + box->y0 = pb->p.page_y0; + box->x1 = pb->width; + box->x1--; + box->y1 = pb->p.page_y1; +} + + +uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + u8g_uint_t v0, v1; + v0 = arg_pixel->y; + v1 = v0; + switch( arg_pixel->dir ) + { + case 0: + break; + case 1: + v1 += 8; /* this is independent from the page height */ + break; + case 2: + break; + case 3: + v0 -= 8; + break; + } + return u8g_pb_IsYIntersection(b, v0, v1); +} + + + +uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev) +{ + return u8g_WriteSequence(u8g, dev, b->width, b->buf); +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb14v1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb14v1.c new file mode 100644 index 000000000..dbcd0215f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb14v1.c @@ -0,0 +1,200 @@ +/* + + u8g_pb14v1.c + + 14bit height monochrom (1 bit) page buffer, + byte has vertical orientation, 7 bits per byte + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb14v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb14v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb14v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb14v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + + +void u8g_pb14v1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb14v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb14v1_Clear(b); +} + +void u8g_pb14v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 7 ) + { + ptr += b->width; + y -= 7; + } + mask = 1; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb14v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb14v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb14v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb14v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb14v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb14v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb14v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb14v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb14v1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb14v1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h1.c new file mode 100644 index 000000000..6f1502ed7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h1.c @@ -0,0 +1,213 @@ +/* + + u8g_pb16h1.c + + 2x 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 2*256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb16h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb16h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb16h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +void u8g_pb16h1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + + +void u8g_pb16h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16h1_Clear(b); +} + + +/* limitation: total buffer must not exceed 2*256 bytes */ +void u8g_pb16h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 8 ) + { + ptr += b->width; + y &= 0x07; + } + tmp = b->width; + tmp >>= 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } + +} + + +void u8g_pb16h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb16h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb16h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb16h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb16h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16h1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16h1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h2.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h2.c new file mode 100644 index 000000000..d694efbec --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16h2.c @@ -0,0 +1,182 @@ +/* + + u8g_pb16h2.c + + 2 bit per pixel page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb16h2_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + + /* two bits per pixel, 16 bits height --> 8 pixel --> 4 pixel per byte */ + end_ptr += b->width; + end_ptr += b->width; + + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +void u8g_pb16h2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16h2_Clear(b); +} + +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + register uint16_t tmp; + + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 2; + tmp *= (uint8_t)y; + ptr += tmp; + + tmp = x; + tmp >>= 2; + ptr += tmp; + + tmp = x; + tmp &= 3; + tmp <<= 1; + mask = 3; + mask <<= tmp; + mask = ~mask; + color_index &= 3; + color_index <<= tmp; + + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb16h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16h2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb16h2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16h2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb16h2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_page_First(&(pb->p)); + u8g_pb16h2_Clear(pb); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16h2_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v1.c new file mode 100644 index 000000000..774aaec70 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v1.c @@ -0,0 +1,200 @@ +/* + + u8g_pb16v1.c + + 16bit height monochrom (1 bit) page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb16v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb16v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb16v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + + +void u8g_pb16v1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb16v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16v1_Clear(b); +} + +void u8g_pb16v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 8 ) + { + ptr += b->width; + y &= 0x07; + } + mask = 1; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb16v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb16v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb16v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb16v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb16v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16v1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16v1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v2.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v2.c new file mode 100644 index 000000000..3d40ddad7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb16v2.c @@ -0,0 +1,172 @@ +/* + + u8g_pb16v2.c + + 16 bit height 2 bit per pixel page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16v2_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + + /* two bits per pixel, 16 bits height --> 8 pixel --> 4 pixel per byte */ + end_ptr += b->width; + end_ptr += b->width; + + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +void u8g_pb16v2Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16v2_Clear(b); +} + +void u8g_pb16v2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + if ( y >= 4 ) + { + ptr += b->width; + } + mask = 0x03; + y &= 0x03; + y <<= 1; + mask <<= y; + mask ^=0xff; + color_index &= 3; + color_index <<= y; + ptr += x; + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb16v2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16v2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb16v2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16v2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb16v2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16v2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16v2_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16v2_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb32h1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb32h1.c new file mode 100644 index 000000000..6ac100f32 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb32h1.c @@ -0,0 +1,208 @@ +/* + + u8g_pb32h1.c + + 2x 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 2*256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb32h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb32h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb32h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb32h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +void u8g_pb32h1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*4; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + + +void u8g_pb32h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb32h1_Clear(b); +} + + +/* limitation: total buffer must not exceed 2*256 bytes */ +void u8g_pb32h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint16_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width; + tmp >>= 3; + tmp *= y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } + +} + + +void u8g_pb32h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb32h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb32h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb32h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb32h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb32h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb32h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb32h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb32h1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb32h1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1.c new file mode 100644 index 000000000..8a13e0b7b --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1.c @@ -0,0 +1,389 @@ +/* + + u8g_pb8h1.c + + 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 256 bytes because of the calculation inside the set pixel procedure + + 23. Sep 2012: Bug with down procedure, see FPS 1st page --> fixed (bug located in u8g_clip.c) + +*/ + +#include "u8g.h" +#include + +#ifdef __unix__ +#include +#endif + +/* NEW_CODE disabled, because the performance increase was too slow and not worth compared */ +/* to the increase of code size */ +/* #define NEW_CODE */ + +#ifdef __unix__ +void *u8g_buf_lower_limit; +void *u8g_buf_upper_limit; +#endif + +void u8g_pb8h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +#ifdef NEW_CODE +struct u8g_pb_h1_struct +{ + u8g_uint_t x; + u8g_uint_t y; + uint8_t *ptr; + uint8_t mask; + uint8_t line_byte_len; + uint8_t cnt; +}; + +static uint8_t u8g_pb8h1_bitmask[8] = { 0x080, 0x040, 0x020, 0x010, 0x008, 0x004, 0x002, 0x001 }; + +static void u8g_pb8h1_state_right(struct u8g_pb_h1_struct *s) U8G_NOINLINE; +static void u8g_pb8h1_state_right(struct u8g_pb_h1_struct *s) +{ + register u8g_uint_t x; + x = s->x; + x++; + s->x = x; + x &= 7; + s->mask = u8g_pb8h1_bitmask[x]; + if ( x == 0 ) + s->ptr++; +} + +static void u8g_pb8h1_state_left(struct u8g_pb_h1_struct *s) +{ + register u8g_uint_t x; + x = s->x; + x--; + s->x = x; + x &= 7; + s->mask = u8g_pb8h1_bitmask[x]; + if ( x == 7 ) + s->ptr--; +} + +static void u8g_pb8h1_state_down(struct u8g_pb_h1_struct *s) +{ + s->y++; + s->ptr += s->line_byte_len; +} + +static void u8g_pb8h1_state_up(struct u8g_pb_h1_struct *s) +{ + s->y--; + s->ptr -= s->line_byte_len; +} + +static void u8g_pb8h1_state_init(struct u8g_pb_h1_struct *s, u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y) U8G_NOINLINE; +static void u8g_pb8h1_state_init(struct u8g_pb_h1_struct *s, u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y) +{ + u8g_uint_t tmp; + + uint8_t *ptr = b->buf; + + s->x = x; + s->y = y; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 3; + s->line_byte_len = tmp; + + /* assume negative y values, can be down to -7, subtract this from the pointer and add correction of 8 to y */ + ptr -= tmp*8; + y+=8; + /* it is important that the result of tmp*y can be 16 bit value also for 8 bit mode */ + ptr += tmp*y; + + s->mask = u8g_pb8h1_bitmask[x & 7]; + + /* assume negative x values (to -7), subtract 8 pixel from the pointer and add 8 to x */ + ptr--; + x += 8; + x >>= 3; + ptr += x; + s->ptr = ptr; +} + +static void u8g_pb8h1_state_set_pixel(struct u8g_pb_h1_struct *s, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb8h1_state_set_pixel(struct u8g_pb_h1_struct *s, uint8_t color_index) +{ + +#ifdef __unix__ + assert( s->ptr >= u8g_buf_lower_limit ); + assert( s->ptr < u8g_buf_upper_limit ); +#endif + + if ( color_index ) + { + *s->ptr |= s->mask; + } + else + { + uint8_t mask = s->mask; + mask ^=0xff; + *s->ptr &= mask; + } +} +#endif + + +void u8g_pb8h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +/* limitation: total buffer must not exceed 256 bytes */ +void u8g_pb8h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ +#ifdef NEW_CODE + struct u8g_pb_h1_struct s; + u8g_pb8h1_state_init(&s, b, x, y); + u8g_pb8h1_state_set_pixel(&s, color_index); + +// u8g_pb8h1_state_up(&s); +// if ( s.y > b->p.page_y1 ) +// return; +// if ( s.x > b->width ) +// return; +// u8g_pb8h1_state_set_pixel(&s, color_index); +#else + register uint8_t mask; + u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width; + tmp >>= 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +#endif +} + + +void u8g_pb8h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb8h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + +#ifdef NEW_CODE +static void u8g_pb8h1_Set8PixelState(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + struct u8g_pb_h1_struct s; + uint8_t cnt; + u8g_pb8h1_state_init(&s, b, arg_pixel->x, arg_pixel->y); + cnt = 8; + switch( arg_pixel->dir ) + { + case 0: + do + { + if ( s.x < b->width ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_right(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 1: + do + { + if ( s.y >= b->p.page_y0 ) + if ( s.y <= b->p.page_y1 ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_down(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 2: + do + { + if ( s.x < b->width ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_left(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 3: + do + { + if ( s.y >= b->p.page_y0 ) + if ( s.y <= b->p.page_y1 ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_up(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + } +} +#endif + +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: +#ifdef NEW_CODE + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1_Set8PixelState(pb, (u8g_dev_arg_pixel_t *)arg); +#else + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); +#endif + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1f.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1f.c new file mode 100644 index 000000000..ffc90c2a3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h1f.c @@ -0,0 +1,194 @@ +/* + + u8g_pb8h1f.c + + 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation, same as u8g_pb8h1, but byte is flipped + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb8h1f_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8h1f_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8h1f_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8h1f_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +void u8g_pb8h1f_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +/* limitation: total buffer must not exceed 256 bytes, 20 nov 2012: extended to >256 bytes */ +void u8g_pb8h1f_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + /*register uint8_t mask, tmp;*/ + register uint8_t mask; + register u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width >> 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 1; + mask <<= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb8h1f_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h1f_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8h1f_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h1f_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb8h1f_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h1f_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1f_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h1f_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h2.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h2.c new file mode 100644 index 000000000..0e37f211f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h2.c @@ -0,0 +1,167 @@ +/* + + u8g_pb8h2.c + + 8bit height 2 bit per pixel page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb8h2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +static void u8g_pb8h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb8h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + register uint16_t tmp; + + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 2; + tmp *= (uint8_t)y; + ptr += tmp; + + tmp = x; + tmp >>= 2; + ptr += tmp; + + tmp = x; + tmp &= 3; + tmp <<= 1; + mask = 3; + mask <<= tmp; + mask = ~mask; + color_index &= 3; + color_index <<= tmp; + + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb8h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8h2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb8h2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h8.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h8.c new file mode 100644 index 000000000..5753645d1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8h8.c @@ -0,0 +1,179 @@ +/* + + u8g_pb8h8.c + + 8 bits per pixel, horizontal + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +struct _u8g_pb_t +{ + u8g_page_t p; + u8g_uint_t width; + void *buf; +}; +typedef struct _u8g_pb_t u8g_pb_t; + + +uint8_t u8g_index_color_8h8_buf[WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_index_color_8h8_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_index_color_8h8_buff}; +u8g_dev_t name = { dev_fn, &u8g_index_color_8h8_pb, com_fn } + +*/ + +#include "u8g.h" + +#define WIDTH_BITS 7 +#define WIDTH (1<buf; + uint8_t *end_ptr = ptr; + uint8_t cnt = b->p.page_height; + do + { + end_ptr += b->width; + cnt--; + } while( cnt > 0 ); + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + +void u8g_pb8h8_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb8h8_Clear(b); +} + +static void u8g_pb8h8_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + ptr += tmp; + *ptr = color_index; +} + +void u8g_pb8h8_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h8_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8h8_Set8Pixel(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h8_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h8_Set8Pixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h8_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb8h8_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb8h8_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_R3G3B2; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v1.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v1.c new file mode 100644 index 000000000..37352fd11 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v1.c @@ -0,0 +1,184 @@ +/* + + u8g_pb8v1.c + + 8bit height monochrom (1 bit) page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +void u8g_pb8v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + mask = 1; + y &= 0x07; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb8v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb8v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v2.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v2.c new file mode 100644 index 000000000..3656511db --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_pb8v2.c @@ -0,0 +1,153 @@ +/* + + u8g_pb8v2.c + + 8bit height 2 bit per pixel page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb8v2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +void u8g_pb8v2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + mask = 0x03; + y &= 0x03; + y <<= 1; + mask <<= y; + mask ^=0xff; + color_index &= 3; + color_index <<= y; + ptr += x; + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb8v2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8v2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8v2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8v2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); + +} + + + +uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb8v2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8v2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rect.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rect.c new file mode 100644 index 000000000..139a43a24 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rect.c @@ -0,0 +1,232 @@ +/* + + u8g_rect.c + + U8G high level interface for horizontal and vertical things + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_draw_hline(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + uint8_t pixel = 0x0ff; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, pixel); + w-=8; + x+=8; + } + if ( w != 0 ) + { + w ^=7; + w++; + pixel <<= w&7; + u8g_Draw8Pixel(u8g, x, y, 0, pixel); + } +} + +void u8g_draw_vline(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t h) +{ + uint8_t pixel = 0x0ff; + while( h >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 1, pixel); + h-=8; + y+=8; + } + if ( h != 0 ) + { + h ^=7; + h++; + pixel <<= h&7; + u8g_Draw8Pixel(u8g, x, y, 1, pixel); + } +} + +void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, w, 1) == 0 ) + return; + u8g_draw_hline(u8g, x, y, w); +} + +void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, 1, w) == 0 ) + return; + u8g_draw_vline(u8g, x, y, w); +} + +/* restrictions: w > 0 && h > 0 */ +void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + u8g_uint_t xtmp = x; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + + u8g_draw_hline(u8g, x, y, w); + u8g_draw_vline(u8g, x, y, h); + x+=w; + x--; + u8g_draw_vline(u8g, x, y, h); + y+=h; + y--; + u8g_draw_hline(u8g, xtmp, y, w); +} + +void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + do + { + u8g_draw_hline(u8g, x, y, w); + y++; + h--; + } while( h != 0 ); +} + +/* restrictions: h > 0 */ +void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + u8g_draw_box(u8g, x, y, w, h); +} + + +void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) +{ + u8g_uint_t xl, yu; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + xl = x; + xl += r; + yu = y; + yu += r; + + { + u8g_uint_t yl, xr; + + xr = x; + xr += w; + xr -= r; + xr -= 1; + + yl = y; + yl += h; + yl -= r; + yl -= 1; + + u8g_draw_circle(u8g, xl, yu, r, U8G_DRAW_UPPER_LEFT); + u8g_draw_circle(u8g, xr, yu, r, U8G_DRAW_UPPER_RIGHT); + u8g_draw_circle(u8g, xl, yl, r, U8G_DRAW_LOWER_LEFT); + u8g_draw_circle(u8g, xr, yl, r, U8G_DRAW_LOWER_RIGHT); + } + + { + u8g_uint_t ww, hh; + + ww = w; + ww -= r; + ww -= r; + ww -= 2; + hh = h; + hh -= r; + hh -= r; + hh -= 2; + + xl++; + yu++; + h--; + w--; + u8g_draw_hline(u8g, xl, y, ww); + u8g_draw_hline(u8g, xl, y+h, ww); + u8g_draw_vline(u8g, x, yu, hh); + u8g_draw_vline(u8g, x+w, yu, hh); + } +} + +void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) +{ + u8g_uint_t xl, yu; + u8g_uint_t yl, xr; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + xl = x; + xl += r; + yu = y; + yu += r; + + xr = x; + xr += w; + xr -= r; + xr -= 1; + + yl = y; + yl += h; + yl -= r; + yl -= 1; + + u8g_draw_disc(u8g, xl, yu, r, U8G_DRAW_UPPER_LEFT); + u8g_draw_disc(u8g, xr, yu, r, U8G_DRAW_UPPER_RIGHT); + u8g_draw_disc(u8g, xl, yl, r, U8G_DRAW_LOWER_LEFT); + u8g_draw_disc(u8g, xr, yl, r, U8G_DRAW_LOWER_RIGHT); + + { + u8g_uint_t ww, hh; + + ww = w; + ww -= r; + ww -= r; + ww -= 2; + hh = h; + hh -= r; + hh -= r; + hh -= 2; + + xl++; + yu++; + h--; + u8g_draw_box(u8g, xl, y, ww, r+1); + u8g_draw_box(u8g, xl, yl, ww, r+1); + //u8g_draw_hline(u8g, xl, y+h, ww); + u8g_draw_box(u8g, x, yu, w, hh); + //u8g_draw_vline(u8g, x+w, yu, hh); + } +} diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rot.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rot.c new file mode 100644 index 000000000..c581104cb --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_rot.c @@ -0,0 +1,398 @@ +/* + + u8g_rot.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); +uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); +uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +u8g_dev_t u8g_dev_rot = { u8g_dev_rot90_fn, NULL, NULL }; + + +void u8g_UndoRotation(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + return; + u8g->dev = u8g_dev_rot.dev_mem; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot90(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot90_fn; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot180(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot180_fn; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot270(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot270_fn; + u8g_UpdateDimension(u8g); +} + +uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y, tmp; + + /* transform the reference point */ + y = bbx->x; + x = u8g->height; + /* x = u8g_GetWidthLL(u8g, rotation_chain); */ + x -= bbx->y; + x--; + + /* adjust point to be the uppler left corner again */ + x -= bbx->h; + x++; + + /* swap box dimensions */ + tmp = bbx->w; + bbx->w = bbx->h; + bbx->h = tmp; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + //new_box.x0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + //new_box.x1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + + new_box.x0 = ((u8g_box_t *)arg)->y0; + new_box.x1 = ((u8g_box_t *)arg)->y1; + new_box.y0 = ((u8g_box_t *)arg)->x0; + new_box.y1 = ((u8g_box_t *)arg)->x1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + y = ((u8g_dev_arg_pixel_t *)arg)->x; + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + //uint16_t x,y; + y = ((u8g_dev_arg_pixel_t *)arg)->x; + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=1; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + +uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y; + + /* transform the reference point */ + //y = u8g_GetHeightLL(u8g, rotation_chain); + y = u8g->height; + y -= bbx->y; + y--; + + //x = u8g_GetWidthLL(u8g, rotation_chain); + x = u8g->width; + x -= bbx->x; + x--; + + /* adjust point to be the uppler left corner again */ + y -= bbx->h; + y++; + + x -= bbx->w; + x++; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + + new_box.x0 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x1 - 1; + new_box.x1 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x0 - 1; + new_box.y0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + new_box.y1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->y; + y--; + + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->x; + x--; + + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->y; + y--; + + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->x; + x--; + + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=2; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + +uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y, tmp; + + /* transform the reference point */ + x = bbx->y; + + y = u8g->width; + /* y = u8g_GetHeightLL(u8g, rotation_chain); */ + y -= bbx->x; + y--; + + /* adjust point to be the uppler left corner again */ + y -= bbx->w; + y++; + + /* swap box dimensions */ + tmp = bbx->w; + bbx->w = bbx->h; + bbx->h = tmp; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + + new_box.x0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + new_box.x1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + new_box.y0 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x1 - 1; + new_box.y1 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x0 - 1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + x = ((u8g_dev_arg_pixel_t *)arg)->y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->x; + y--; + + /* + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + */ + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + x = ((u8g_dev_arg_pixel_t *)arg)->y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->x; + y--; + + /* + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + */ + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=3; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_scale.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_scale.c new file mode 100644 index 000000000..e5b4b634f --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_scale.c @@ -0,0 +1,188 @@ +/* + + u8g_scale.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Scale screen by some constant factors. Usefull for making bigger fonts wiht less + memory consumption + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_scale_2x2_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +u8g_dev_t u8g_dev_scale = { u8g_dev_scale_2x2_fn, NULL, NULL }; + +void u8g_UndoScale(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_scale ) + return; + u8g->dev = u8g_dev_scale.dev_mem; + u8g_UpdateDimension(u8g); +} + +void u8g_SetScale2x2(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_scale ) + { + u8g_dev_scale.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_scale; + } + u8g_dev_scale.dev_fn = u8g_dev_scale_2x2_fn; + u8g_UpdateDimension(u8g); +} + + +uint8_t u8g_dev_scale_2x2_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *chain = (u8g_dev_t *)(dev->dev_mem); + uint8_t pixel; + uint16_t scaled_pixel; + uint8_t i; + uint8_t dir; + u8g_uint_t x, y, xx,yy; + + switch(msg) + { + default: + return u8g_call_dev_fn(u8g, chain, msg, arg); + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, chain) / 2; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g, chain) / 2; + break; + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, chain, msg, arg); + ((u8g_box_t *)arg)->x0 /= 2; + ((u8g_box_t *)arg)->x1 /= 2; + ((u8g_box_t *)arg)->y0 /= 2; + ((u8g_box_t *)arg)->y1 /= 2; + return 1; + case U8G_DEV_MSG_SET_PIXEL: + x = ((u8g_dev_arg_pixel_t *)arg)->x; + x *= 2; + y = ((u8g_dev_arg_pixel_t *)arg)->y; + y *= 2; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + x++; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + y++; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + pixel = ((u8g_dev_arg_pixel_t *)arg)->pixel; + dir = ((u8g_dev_arg_pixel_t *)arg)->dir; + scaled_pixel = 0; + for( i = 0; i < 8; i++ ) + { + scaled_pixel<<=2; + if ( pixel & 128 ) + { + scaled_pixel |= 3; + } + pixel<<=1; + } + x = ((u8g_dev_arg_pixel_t *)arg)->x; + x *= 2; + xx = x; + y = ((u8g_dev_arg_pixel_t *)arg)->y; + y *= 2; + yy = y; + if ( ((u8g_dev_arg_pixel_t *)arg)->dir & 1 ) + { + xx++; + } + else + { + yy++; + } + + ((u8g_dev_arg_pixel_t *)arg)->pixel = scaled_pixel>>8; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + + ((u8g_dev_arg_pixel_t *)arg)->x = xx; + ((u8g_dev_arg_pixel_t *)arg)->y = yy; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + ((u8g_dev_arg_pixel_t *)arg)->pixel = scaled_pixel&255; + //((u8g_dev_arg_pixel_t *)arg)->pixel = 0x00; + switch(dir) + { + case 0: + x+=8; + xx+=8; + break; + case 1: + y+=8; + yy+=8; + break; + case 2: + x-=8; + xx-=8; + break; + case 3: + y-=8; + yy-=8; + break; + } + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + ((u8g_dev_arg_pixel_t *)arg)->x = xx; + ((u8g_dev_arg_pixel_t *)arg)->y = yy; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_state.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_state.c new file mode 100644 index 000000000..3ae3eee4a --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_state.c @@ -0,0 +1,102 @@ +/* + + u8g_state.c + + backup and restore hardware state + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + state callback: backup env U8G_STATE_MSG_BACKUP_ENV + device callback: DEV_MSG_INIT + state callback: backup u8g U8G_STATE_MSG_BACKUP_U8G + state callback: restore env U8G_STATE_MSG_RESTORE_ENV + + state callback: backup env U8G_STATE_MSG_BACKUP_ENV + state callback: retore u8g U8G_STATE_MSG_RESTORE_U8G + DEV_MSG_PAGE_FIRST or DEV_MSG_PAGE_NEXT + state callback: restore env U8G_STATE_MSG_RESTORE_ENV + +*/ + +#include +#include "u8g.h" + +void u8g_state_dummy_cb(uint8_t msg) +{ + /* the dummy procedure does nothing */ +} + +void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb) +{ + u8g->state_cb = backup_cb; + /* in most cases the init message was already sent, so this will backup the */ + /* current u8g state */ + backup_cb(U8G_STATE_MSG_BACKUP_U8G); +} + + +/*===============================================================*/ +/* AVR */ + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif +#endif + +#if defined(U8G_ATMEGA_HW_SPI) +#include +static uint8_t u8g_state_avr_spi_memory[2]; + +void u8g_backup_avr_spi(uint8_t msg) +{ + if ( U8G_STATE_MSG_IS_BACKUP(msg) ) + { + u8g_state_avr_spi_memory[U8G_STATE_MSG_GET_IDX(msg)] = SPCR; + } + else + { + uint8_t tmp = SREG; + cli(); + SPCR = 0; + SPCR = u8g_state_avr_spi_memory[U8G_STATE_MSG_GET_IDX(msg)]; + SREG = tmp; + } +} + +#endif + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_u16toa.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_u16toa.c new file mode 100644 index 000000000..f1d1803cf --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_u16toa.c @@ -0,0 +1,68 @@ +/* + + u8g_u16toa.c + + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "u8g.h" + +const char *u8g_u16toap(char * dest, uint16_t v) +{ + uint8_t pos; + uint8_t d; + uint16_t c; + c = 10000; + for( pos = 0; pos < 5; pos++ ) + { + d = '0'; + while( v >= c ) + { + v -= c; + d++; + } + dest[pos] = d; + c /= 10; + } + dest[5] = '\0'; + return dest; +} + +/* v = value, d = number of digits */ +const char *u8g_u16toa(uint16_t v, uint8_t d) +{ + static char buf[6]; + d = 5-d; + return u8g_u16toap(buf, v) + d; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_u8toa.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_u8toa.c new file mode 100644 index 000000000..f3a2c06fa --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_u8toa.c @@ -0,0 +1,68 @@ +/* + + u8g_u8toa.c + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "u8g.h" + +static const unsigned char u8g_u8toa_tab[3] = { 100, 10, 1 } ; +const char *u8g_u8toap(char * dest, uint8_t v) +{ + uint8_t pos; + uint8_t d; + uint8_t c; + for( pos = 0; pos < 3; pos++ ) + { + d = '0'; + c = *(u8g_u8toa_tab+pos); + while( v >= c ) + { + v -= c; + d++; + } + dest[pos] = d; + } + dest[3] = '\0'; + return dest; +} + +/* v = value, d = number of digits */ +const char *u8g_u8toa(uint8_t v, uint8_t d) +{ + static char buf[4]; + d = 3-d; + return u8g_u8toap(buf, v) + d; +} + diff --git a/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_virtual_screen.c b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_virtual_screen.c new file mode 100644 index 000000000..8000506b4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.0.x/libraries/U8glib/utility/u8g_virtual_screen.c @@ -0,0 +1,145 @@ +/* + + u8g_virtual_screen.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +struct _u8g_vs_t +{ + u8g_uint_t x; + u8g_uint_t y; + u8g_t *u8g; +}; +typedef struct _u8g_vs_t u8g_vs_t; + +#define U8g_VS_MAX 4 +uint8_t u8g_vs_cnt = 0; +u8g_vs_t u8g_vs_list[U8g_VS_MAX]; +uint8_t u8g_vs_current; +u8g_uint_t u8g_vs_width; +u8g_uint_t u8g_vs_height; + +uint8_t u8g_dev_vs_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + default: + { + uint8_t i; + for( i = 0; i < u8g_vs_cnt; i++ ) + { + u8g_call_dev_fn(u8g_vs_list[i].u8g, u8g_vs_list[i].u8g->dev, msg, arg); + } + } + return 1; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_vs_current = 0; + if ( u8g_vs_cnt != 0 ) + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + return 0; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t ret = 0; + if ( u8g_vs_cnt != 0 ) + ret = u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + if ( ret != 0 ) + return ret; + u8g_vs_current++; /* next device */ + if ( u8g_vs_current >= u8g_vs_cnt ) /* reached end? */ + return 0; + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, U8G_DEV_MSG_PAGE_FIRST, arg); + } + return 0; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_vs_width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_vs_height; + break; + case U8G_DEV_MSG_GET_PAGE_BOX: + if ( u8g_vs_current < u8g_vs_cnt ) + { + u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + ((u8g_box_t *)arg)->x0 += u8g_vs_list[u8g_vs_current].x; + ((u8g_box_t *)arg)->x1 += u8g_vs_list[u8g_vs_current].x; + ((u8g_box_t *)arg)->y0 += u8g_vs_list[u8g_vs_current].y; + ((u8g_box_t *)arg)->y1 += u8g_vs_list[u8g_vs_current].y; + } + else + { + ((u8g_box_t *)arg)->x0 = 0; + ((u8g_box_t *)arg)->x1 = 0; + ((u8g_box_t *)arg)->y0 = 0; + ((u8g_box_t *)arg)->y1 = 0; + } + return 1; + case U8G_DEV_MSG_SET_PIXEL: + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_vs_current < u8g_vs_cnt ) + { + ((u8g_dev_arg_pixel_t *)arg)->x -= u8g_vs_list[u8g_vs_current].x; + ((u8g_dev_arg_pixel_t *)arg)->y -= u8g_vs_list[u8g_vs_current].y; + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + } + break; + } + return 1; +} + + + +u8g_dev_t u8g_dev_vs = { u8g_dev_vs_fn, NULL, NULL }; + +void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height) +{ + if ( vs_u8g->dev != &u8g_dev_vs ) + return; /* abort if there is no a virtual screen device */ + u8g_vs_width = width; + u8g_vs_height = height; +} + +uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g) +{ + if ( vs_u8g->dev != &u8g_dev_vs ) + return 0; /* abort if there is no a virtual screen device */ + if ( u8g_vs_cnt >= U8g_VS_MAX ) + return 0; /* maximum number of child u8g's reached */ + u8g_vs_list[u8g_vs_cnt].u8g = child_u8g; + u8g_vs_list[u8g_vs_cnt].x = x; + u8g_vs_list[u8g_vs_cnt].y = y; + u8g_vs_cnt++; + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/boards.txt b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/boards.txt new file mode 100644 index 000000000..6c0571cfc --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/boards.txt @@ -0,0 +1,72 @@ +# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification + +############################################################## + +menu.cpu=Processor + +######################################## +## RAMBo +######################################## +rambo.name=RAMBo + +rambo.upload.tool=arduino:avrdude +rambo.upload.protocol=wiring +rambo.upload.maximum_size=258048 +rambo.upload.speed=115200 + +rambo.bootloader.low_fuses=0xFF +rambo.bootloader.high_fuses=0xD8 +rambo.bootloader.extended_fuses=0xFD +rambo.bootloader.path=stk500v2 +rambo.bootloader.file=stk500boot_v2_mega2560.hex +rambo.bootloader.unlock_bits=0x3F +rambo.bootloader.lock_bits=0x0F + +rambo.build.mcu=atmega2560 +rambo.build.f_cpu=16000000L +rambo.build.board=AVR_RAMBO +rambo.build.core=arduino:arduino +rambo.build.variant=rambo + +######################################## +## Sanguino +######################################## +sanguino.name=Sanguino + +sanguino.upload.tool=arduino:avrdude +sanguino.upload.protocol=stk500 +sanguino.upload.maximum_size=131072 +sanguino.upload.speed=57600 + +sanguino.bootloader.low_fuses=0xD6 +sanguino.bootloader.high_fuses=0xDA +sanguino.bootloader.extended_fuses=0xFD +sanguino.bootloader.path=atmega +sanguino.bootloader.unlock_bits=0x3F +sanguino.bootloader.lock_bits=0x0F + +sanguino.build.mcu=atmega1284p +sanguino.build.f_cpu=16000000L +sanguino.build.board=AVR_SANGUINO +sanguino.build.core=arduino:arduino +sanguino.build.variant=sanguino + +sanguino.menu.cpu.atmega644=ATmega644P +sanguino.menu.cpu.atmega644.upload.maximum_size=63488 +sanguino.menu.cpu.atmega644.bootloader.low_fuses=0xFF +sanguino.menu.cpu.atmega644.bootloader.high_fuses=0x9A +sanguino.menu.cpu.atmega644.bootloader.extended_fuses=0xFF +sanguino.menu.cpu.atmega644.bootloader.file=ATmegaBOOT_168_atmega644p.hex +sanguino.menu.cpu.atmega644.build.mcu=atmega644p + +sanguino.menu.cpu.atmega12848m=ATmega1284p 8MHz +sanguino.menu.cpu.atmega12848m.upload.speed=19200 +sanguino.menu.cpu.atmega12848m.bootloader.file=ATmegaBOOT_168_atmega1284p_8m.hex +sanguino.menu.cpu.atmega12848m.build.f_cpu=8000000L + +sanguino.menu.cpu.atmega1284=ATmega1284p 16MHz +sanguino.menu.cpu.atmega1284.bootloader.file=ATmegaBOOT_168_atmega1284p.hex + +sanguino.menu.cpu.atmega1284m=ATmega1284p 20MHz +sanguino.menu.cpu.atmega1284m.bootloader.file=ATmegaBOOT_168_atmega1284p.hex +sanguino.menu.cpu.atmega1284m.build.f_cpu=20000000L diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168.c new file mode 100644 index 000000000..1df3f0311 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168.c @@ -0,0 +1,1071 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega8, ATmega128 and ATmega168 */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* */ +/* 20090308: integrated Mega changes into main bootloader */ +/* source by D. Mellis */ +/* 20080930: hacked for Arduino Mega (with the 1280 */ +/* processor, backwards compatible) */ +/* by D. Cuartielles */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) +#include +#endif + +/* Use the F_CPU defined in Makefile */ + +/* 20060803: hacked by DojoCorp */ +/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ +/* set the waiting time for the bootloader */ +/* get this from the Makefile instead */ +/* #define MAX_TIME_COUNT (F_CPU>>4) */ + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 + +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +//#define BAUD_RATE 115200 +#ifndef BAUD_RATE +#define BAUD_RATE 19200 +#endif + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* ATmega1280 has four UARTS, but for Arduino Mega, we will only use RXD0 to get code */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#elif defined __AVR_ATmega1280__ +/* we just don't do anything for the MEGA and enter bootloader on reset anyway*/ +#elif defined __AVR_ATmega1284P_ || defined __AVR_ATmega644P__ + +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#if defined __AVR_ATmega128__ || defined __AVR_ATmega1280__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128, Arduino Mega) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#elif defined __AVR_ATmega1284P__ || defined __AVR_ATmega644P__ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 +#else +/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duomilanuove */ +/* other boards like e.g. Crumb8, Crumb168 are using PB2 */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) +#define MONITOR 1 +#endif + + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega1280__ +#define SIG2 0x97 +#define SIG3 0x03 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega1284P__ +#define SIG2 0x97 +#define SIG3 0x05 +#define PAGE_SIZE 0x080U //128 words + +#elif defined __AVR_ATmega1281__ +#define SIG2 0x97 +#define SIG3 0x04 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega644P__ +#define SIG2 0x96 +#define SIG3 0x0A +#define PAGE_SIZE 0x080U //128 words + +#elif defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega328P__ +#define SIG2 0x95 +#define SIG3 0x0F +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union { + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union { + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct { + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + +uint8_t pagesz=0x80; + +uint8_t i; +uint8_t bootuart = 0; + +uint8_t error_count = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; + +#ifdef WATCHDOG_MODS + ch = MCUSR; + MCUSR = 0; + + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if it's a not an external reset... + app_start(); // skip bootloader +#else + asm volatile("nop\n\t"); +#endif + + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + /* We run the bootloader regardless of the state of this pin. Thus, don't + put it in a different state than the other pins. --DAM, 070709 + This also applies to Arduino Mega -- DC, 080930 + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); + */ +#endif + + +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) { + bootuart = 2; + } +#endif + +#if defined __AVR_ATmega1280__ || defined __AVR_ATmega1284P__ || defined __AVR_ATmega644P__ + /* the mega1280 chip has four serial ports ... we could eventually use any of them, or not? */ + /* however, we don't wanna confuse people, to avoid making a mess, we will stick to RXD0, TXD0 */ + bootuart = 1; +#endif + + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) { + +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } + +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) { + bootuart = 1; + } +#endif + + + /* initialize UART(s) depending on CPU defined */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if(bootuart == 1) { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + +#ifdef DOUBLE_SPEED + UCSR0A = (1<> 8; +#else + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; +#endif + + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif + +#if defined __AVR_ATmega1280__ + /* Enable internal pull-up resistor on pin D0 (RX), in order + to supress line noise that prevents the bootloader from + timing out (DAM: 20070509) */ + /* feature added to the Arduino Mega --DC: 080930 */ + DDRE &= ~_BV(PINE0); + PORTE |= _BV(PINE0); +#endif + + + /* set LED pin as output */ + LED_DDR |= _BV(LED); + + + /* flash onboard LED to signal entering of bootloader */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + // 4x for UART0, 5x for UART1 + flash_led(NUM_LED_FLASHES + bootuart); +#else + flash_led(NUM_LED_FLASHES); +#endif + + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + + /* forever loop */ + for (;;) { + + /* get character from UART */ + ch = getch(); + + /* A bunch of if...else if... gives smaller code than switch...case ! */ + + /* Hello is anyone home ? */ + if(ch=='0') { + nothing_response(); + } + + + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') { + if (getch() == ' ') { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + + + /* AVR ISP/STK500 board requests */ + else if(ch=='A') { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + + + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') { + getNch(20); + nothing_response(); + } + + + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') { + getNch(5); + nothing_response(); + } + + + /* P: Enter programming mode */ + /* R: Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='P' || ch=='R') { + nothing_response(); + } + + + /* Leave programming mode */ + else if(ch=='Q') { + nothing_response(); +#ifdef WATCHDOG_MODS + // autoreset via watchdog (sneaky!) + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + + + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + + + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') { + if (getch() == 0x30) { + getch(); + ch = getch(); + getch(); + if (ch == 0) { + byte_response(SIG1); + } else if (ch == 1) { + byte_response(SIG2); + } else { + byte_response(SIG3); + } + } else { + getNch(3); + byte_response(0x00); + } + } + + + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0;w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete +#else + while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete +#endif + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ || __AVR_ATmega328P__ || __AVR_ATmega128__ || __AVR_ATmega1280__ || __AVR_ATmega1281__ || __AVR_ATmega1284P__ || __AVR_ATmega644P__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + + + /* Read memory block mode, length is big endian. */ + else if(ch=='t') { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + address.word = address.word << 1; // address * 2 -> byte location + if (getch() == 'E') flags.eeprom = 1; + else flags.eeprom = 0; + if (getch() == ' ') { // Command terminator + putch(0x14); + for (w=0;w < length.word;w++) { // Can handle odd and even lengths okay + if (flags.eeprom) { // Byte access EEPROM read +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while(EECR & (1<= 'a') { + return (a - 'a' + 0x0a); + } else if(a >= '0') { + return(a - '0'); + } + return a; +} + + +char gethex(void) { + return (gethexnib() << 4) + gethexnib(); +} + + +void puthex(char ch) { + char ah; + + ah = ch >> 4; + if(ah >= 0x0a) { + ah = ah - 0x0a + 'a'; + } else { + ah += '0'; + } + + ch &= 0x0f; + if(ch >= 0x0a) { + ch = ch - 0x0a + 'a'; + } else { + ch += '0'; + } + + putch(ah); + putch(ch); +} + + +void putch(char ch) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if(bootuart == 1) { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + uint32_t count = 0; + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))) { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + + return UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))) { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + + return UDR1; + } + return 0; +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))){ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + while(count--) { +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if(bootuart == 1) { + while(!(UCSR0A & _BV(RXC0))); + UDR0; + } + else if(bootuart == 2) { + while(!(UCSR1A & _BV(RXC1))); + UDR1; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + getch(); +#else + /* m8,16,32,169,8515,8535,163 */ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + //while(!(UCSRA & _BV(RXC))); + //UDR; + getch(); // need to handle time out +#endif + } +} + + +void byte_response(uint8_t val) +{ + if (getch() == ' ') { + putch(0x14); + putch(val); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + + +void nothing_response(void) +{ + if (getch() == ' ') { + putch(0x14); + putch(0x10); + } else { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + +void flash_led(uint8_t count) +{ + while (count--) { + LED_PORT |= _BV(LED); + _delay_ms(100); + LED_PORT &= ~_BV(LED); + _delay_ms(100); + } +} + + +/* end of file ATmegaBOOT.c */ diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p.hex b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p.hex new file mode 100644 index 000000000..a63dc8dd0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p.hex @@ -0,0 +1,130 @@ +:020000021000EC +:10F000000C9446F80C9465F80C9465F80C9465F82B +:10F010000C9465F80C9465F80C9465F80C9465F8FC +:10F020000C9465F80C9465F80C9465F80C9465F8EC +:10F030000C9465F80C9465F80C9465F80C9465F8DC +:10F040000C9465F80C9465F80C9465F80C9465F8CC +:10F050000C9465F80C9465F80C9465F80C9465F8BC +:10F060000C9465F80C9465F80C9465F80C9465F8AC +:10F070000C9465F80C9465F80C9465F80C9465F89C +:10F080000C9465F80C9465F80C9465F811241FBE77 +:10F09000CFEFD0E4DEBFCDBF11E0A0E0B1E0E8EDFE +:10F0A000F7EF01E00BBF02C007900D92A230B1074D +:10F0B000D9F712E0A2E0B1E001C01D92AD30B10776 +:10F0C000E1F70E947EF90C94EAFB0C9400F8909111 +:10F0D0000201913019F0923041F008959091C000F2 +:10F0E00095FFFCCF8093C60008959091C80095FFCE +:10F0F000FCCF8093CE0008951F93982F95959595FA +:10F1000095959595905D182F1F701A304CF4105DF1 +:10F11000892F0E9467F8812F0E9467F81F91089538 +:10F12000195A892F0E9467F8812F0E9467F81F9152 +:10F130000895EF92FF920F931F9380910201813007 +:10F1400069F1823031F080E01F910F91FF90EF90D4 +:10F150000895EE24FF2487018091C80087FD17C021 +:10F160000894E11CF11C011D111D81E4E81682E4E4 +:10F17000F8068FE0080780E0180770F3E0910401BB +:10F18000F091050109958091C80087FFE9CF809132 +:10F19000CE001F910F91FF90EF900895EE24FF2471 +:10F1A00087018091C00087FD17C00894E11CF11C05 +:10F1B000011D111D81E4E81682E4F8068FE00807BE +:10F1C00080E0180770F3E0910401F09105010995C2 +:10F1D0008091C00087FFE9CF8091C6001F910F91F9 +:10F1E000FF90EF9008951F930E9499F8182F0E94A6 +:10F1F00067F8113634F410330CF01053812F1F913F +:10F2000008951755812F1F9108951F930E94F3F8B9 +:10F21000182F0E94F3F81295107F810F1F91089507 +:10F2200020910201882339F0213031F0223061F041 +:10F2300081508823C9F708959091C00097FFFCCFB3 +:10F240009091C6008150F5CF9091C80097FFFCCFF8 +:10F250009091CE008150EDCF1F93182F0E9499F806 +:10F26000803281F0809103018F5F809303018530AC +:10F2700011F01F910895E0910401F09105010995A5 +:10F280001F91089584E10E9467F8812F0E9467F81A +:10F2900080E10E9467F8EDCF0E9499F8803271F00A +:10F2A000809103018F5F80930301853009F00895F9 +:10F2B000E0910401F09105010995089584E10E940F +:10F2C00067F880E10E9467F8089515C0289A2FEF2B +:10F2D00031EE44E0215030404040E1F700C00000F2 +:10F2E00028982FEF31EE44E0215030404040E1F7C4 +:10F2F00000C000008150882349F70895EF92FF92E3 +:10F300000F931F93CF93DF93000081E0809302015E +:10F3100080E18093C4001092C5001092C00086E086 +:10F320008093C20088E18093C100209A81E00E940E +:10F3300065F90E9499F88033B1F18133B9F18034D5 +:10F3400009F454C0813409F45AC0823409F469C004 +:10F35000853409F46CC0803531F1823521F1813575 +:10F3600011F1853509F469C0863509F471C0843618 +:10F3700009F47AC0843709F4E1C0853709F43FC144 +:10F38000863709F44AC0809103018F5F809303019F +:10F39000853079F6E0910401F091050109950E940C +:10F3A00099F8803351F60E944CF9C3CF0E9499F826 +:10F3B000803249F784E10E9467F881E40E9467F88F +:10F3C00086E50E9467F882E50E9467F880E20E9465 +:10F3D00067F889E40E9467F883E50E9467F880E592 +:10F3E0000E9467F880E10E9467F8A3CF0E9499F815 +:10F3F0008638C8F20E9499F80E944CF99ACF0E9470 +:10F4000099F8803809F414C1813809F415C182389B +:10F4100009F416C1883909F407C180E00E942CF96B +:10F4200088CF84E10E9410F90E944CF982CF85E0D8 +:10F430000E9410F90E944CF97CCF0E9499F88093A9 +:10F4400006010E9499F8809307010E944CF971CF40 +:10F450000E9499F8803309F405C183E00E9410F9F5 +:10F4600080E00E942CF965CF0E9499F880930902F0 +:10F470000E9499F88093080280910C028E7F8093FD +:10F480000C020E9499F8853409F4FDC080910802AD +:10F49000909109020097A1F068E0E62E61E0F62E57 +:10F4A00000E010E00E9499F8F70181937F010F5F5F +:10F4B0001F4F80910802909109020817190790F3D5 +:10F4C0000E9499F8803209F05ECF80910C0280FF93 +:10F4D000ECC08091060190910701880F991F9093CD +:10F4E000070180930601209108023091090221153D +:10F4F0003105E9F048E0E42E41E0F42E00E010E0B0 +:10F50000F70161917F010E94DCFB809106019091DF +:10F510000701019690930701809306010F5F1F4F2B +:10F5200020910802309109020217130748F384E181 +:10F530000E9467F880E10E9467F8FBCE0E9499F86C +:10F54000809309020E9499F8809308028091060135 +:10F550009091070197FDA3C020910C022D7F20936D +:10F560000C02880F991F90930701809306010E9457 +:10F5700099F8853409F48DC080910C028E7F8093B8 +:10F580000C020E9499F8803209F0D3CE84E10E94E7 +:10F5900067F88091080290910902009709F440C031 +:10F5A00000E010E0809106019091070116C0FC0177 +:10F5B00084910E9467F8809106019091070101965D +:10F5C00090930701809306010F5F1F4F209108025F +:10F5D000309109020217130718F520910C0220FD43 +:10F5E00033C021FFE4CFA0E0B0E080509040AF4FA7 +:10F5F000BF4FABBFFC0187910E9467F8DCCF0E9430 +:10F6000099F8803209F0BFCE84E10E9467F88EE15C +:10F610000E9467F887E90E9467F885E00E9467F812 +:10F6200080E10E9467F885CE83E00E942CF981CEAC +:10F6300082E00E942CF97DCE81E00E942CF979CEE7 +:10F6400080E10E942CF975CE0E94D4FB0E9467F8DD +:10F650008091060190910701019690930701809394 +:10F660000601B2CF0E9499F80E9499F8082F0E94D3 +:10F6700099F8002309F48BC0013009F48CC085E0AF +:10F680000E942CF956CE80910C02816080930C026E +:10F69000FDCE80910C02816080930C0272CF20918C +:10F6A0000C02226020930C025CCF8091070187FD41 +:10F6B00076C010920B0280E08BBF80910601909182 +:10F6C0000701880F991F909307018093060180918D +:10F6D000080280FF09C080910802909109020196FA +:10F6E0009093090280930802F894F999FECF1127AC +:10F6F000E0910601F0910701C8E0D1E08091080295 +:10F7000090910902103091F400915700017001307E +:10F71000D9F303E000935700E8950091570001707A +:10F720000130D9F301E100935700E8950990199051 +:10F730000091570001700130D9F301E000935700A8 +:10F74000E8951395103898F0112700915700017033 +:10F750000130D9F305E000935700E8950091570078 +:10F7600001700130D9F301E100935700E89532961A +:10F77000029709F0C7CF103011F00296E5CF11249F +:10F7800084E10E9467F880E10E9467F8D2CD8EE1A3 +:10F790000E942CF9CECD87E90E942CF9CACDF1E068 +:10F7A000F0930B0281E088CFF999FECF92BD81BD25 +:10F7B000F89A992780B50895262FF999FECF1FBA98 +:10F7C00092BD81BD20BD0FB6F894FA9AF99A0FBE8A +:08F7D00001960895F894FFCFA3 +:02F7D8008000AF +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p_8m.hex b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p_8m.hex new file mode 100644 index 000000000..7f5f3f3d4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p_8m.hex @@ -0,0 +1,130 @@ +:020000021000EC +:10F000000C9446F80C9465F80C9465F80C9465F82B +:10F010000C9465F80C9465F80C9465F80C9465F8FC +:10F020000C9465F80C9465F80C9465F80C9465F8EC +:10F030000C9465F80C9465F80C9465F80C9465F8DC +:10F040000C9465F80C9465F80C9465F80C9465F8CC +:10F050000C9465F80C9465F80C9465F80C9465F8BC +:10F060000C9465F80C9465F80C9465F80C9465F8AC +:10F070000C9465F80C9465F80C9465F80C9465F89C +:10F080000C9465F80C9465F80C9465F811241FBE77 +:10F09000CFEFD0E4DEBFCDBF11E0A0E0B1E0E8EDFE +:10F0A000F7EF01E00BBF02C007900D92A230B1074D +:10F0B000D9F712E0A2E0B1E001C01D92AD30B10776 +:10F0C000E1F70E947EF90C94EAFB0C9400F8909111 +:10F0D0000201913019F0923041F008959091C000F2 +:10F0E00095FFFCCF8093C60008959091C80095FFCE +:10F0F000FCCF8093CE0008951F93982F95959595FA +:10F1000095959595905D182F1F701A304CF4105DF1 +:10F11000892F0E9467F8812F0E9467F81F91089538 +:10F12000195A892F0E9467F8812F0E9467F81F9152 +:10F130000895EF92FF920F931F9380910201813007 +:10F1400069F1823031F080E01F910F91FF90EF90D4 +:10F150000895EE24FF2487018091C80087FD17C021 +:10F160000894E11CF11C011D111D81E2E81681EAE1 +:10F17000F80687E0080780E0180770F3E0910401C3 +:10F18000F091050109958091C80087FFE9CF809132 +:10F19000CE001F910F91FF90EF900895EE24FF2471 +:10F1A00087018091C00087FD17C00894E11CF11C05 +:10F1B000011D111D81E2E81681EAF80687E00807C3 +:10F1C00080E0180770F3E0910401F09105010995C2 +:10F1D0008091C00087FFE9CF8091C6001F910F91F9 +:10F1E000FF90EF9008951F930E9499F8182F0E94A6 +:10F1F00067F8113634F410330CF01053812F1F913F +:10F2000008951755812F1F9108951F930E94F3F8B9 +:10F21000182F0E94F3F81295107F810F1F91089507 +:10F2200020910201882339F0213031F0223061F041 +:10F2300081508823C9F708959091C00097FFFCCFB3 +:10F240009091C6008150F5CF9091C80097FFFCCFF8 +:10F250009091CE008150EDCF1F93182F0E9499F806 +:10F26000803281F0809103018F5F809303018530AC +:10F2700011F01F910895E0910401F09105010995A5 +:10F280001F91089584E10E9467F8812F0E9467F81A +:10F2900080E10E9467F8EDCF0E9499F8803271F00A +:10F2A000809103018F5F80930301853009F00895F9 +:10F2B000E0910401F09105010995089584E10E940F +:10F2C00067F880E10E9467F8089515C0289A2FEF2B +:10F2D00030E742E0215030404040E1F700C00000FC +:10F2E00028982FEF30E742E0215030404040E1F7CE +:10F2F00000C000008150882349F70895EF92FF92E3 +:10F300000F931F93CF93DF93000081E0809302015E +:10F3100089E18093C4001092C5001092C00086E07D +:10F320008093C20088E18093C100209A81E00E940E +:10F3300065F90E9499F88033B1F18133B9F18034D5 +:10F3400009F454C0813409F45AC0823409F469C004 +:10F35000853409F46CC0803531F1823521F1813575 +:10F3600011F1853509F469C0863509F471C0843618 +:10F3700009F47AC0843709F4E1C0853709F43FC144 +:10F38000863709F44AC0809103018F5F809303019F +:10F39000853079F6E0910401F091050109950E940C +:10F3A00099F8803351F60E944CF9C3CF0E9499F826 +:10F3B000803249F784E10E9467F881E40E9467F88F +:10F3C00086E50E9467F882E50E9467F880E20E9465 +:10F3D00067F889E40E9467F883E50E9467F880E592 +:10F3E0000E9467F880E10E9467F8A3CF0E9499F815 +:10F3F0008638C8F20E9499F80E944CF99ACF0E9470 +:10F4000099F8803809F414C1813809F415C182389B +:10F4100009F416C1883909F407C180E00E942CF96B +:10F4200088CF84E10E9410F90E944CF982CF85E0D8 +:10F430000E9410F90E944CF97CCF0E9499F88093A9 +:10F4400006010E9499F8809307010E944CF971CF40 +:10F450000E9499F8803309F405C183E00E9410F9F5 +:10F4600080E00E942CF965CF0E9499F880930902F0 +:10F470000E9499F88093080280910C028E7F8093FD +:10F480000C020E9499F8853409F4FDC080910802AD +:10F49000909109020097A1F068E0E62E61E0F62E57 +:10F4A00000E010E00E9499F8F70181937F010F5F5F +:10F4B0001F4F80910802909109020817190790F3D5 +:10F4C0000E9499F8803209F05ECF80910C0280FF93 +:10F4D000ECC08091060190910701880F991F9093CD +:10F4E000070180930601209108023091090221153D +:10F4F0003105E9F048E0E42E41E0F42E00E010E0B0 +:10F50000F70161917F010E94DCFB809106019091DF +:10F510000701019690930701809306010F5F1F4F2B +:10F5200020910802309109020217130748F384E181 +:10F530000E9467F880E10E9467F8FBCE0E9499F86C +:10F54000809309020E9499F8809308028091060135 +:10F550009091070197FDA3C020910C022D7F20936D +:10F560000C02880F991F90930701809306010E9457 +:10F5700099F8853409F48DC080910C028E7F8093B8 +:10F580000C020E9499F8803209F0D3CE84E10E94E7 +:10F5900067F88091080290910902009709F440C031 +:10F5A00000E010E0809106019091070116C0FC0177 +:10F5B00084910E9467F8809106019091070101965D +:10F5C00090930701809306010F5F1F4F209108025F +:10F5D000309109020217130718F520910C0220FD43 +:10F5E00033C021FFE4CFA0E0B0E080509040AF4FA7 +:10F5F000BF4FABBFFC0187910E9467F8DCCF0E9430 +:10F6000099F8803209F0BFCE84E10E9467F88EE15C +:10F610000E9467F887E90E9467F885E00E9467F812 +:10F6200080E10E9467F885CE83E00E942CF981CEAC +:10F6300082E00E942CF97DCE81E00E942CF979CEE7 +:10F6400080E10E942CF975CE0E94D4FB0E9467F8DD +:10F650008091060190910701019690930701809394 +:10F660000601B2CF0E9499F80E9499F8082F0E94D3 +:10F6700099F8002309F48BC0013009F48CC085E0AF +:10F680000E942CF956CE80910C02816080930C026E +:10F69000FDCE80910C02816080930C0272CF20918C +:10F6A0000C02226020930C025CCF8091070187FD41 +:10F6B00076C010920B0280E08BBF80910601909182 +:10F6C0000701880F991F909307018093060180918D +:10F6D000080280FF09C080910802909109020196FA +:10F6E0009093090280930802F894F999FECF1127AC +:10F6F000E0910601F0910701C8E0D1E08091080295 +:10F7000090910902103091F400915700017001307E +:10F71000D9F303E000935700E8950091570001707A +:10F720000130D9F301E100935700E8950990199051 +:10F730000091570001700130D9F301E000935700A8 +:10F74000E8951395103898F0112700915700017033 +:10F750000130D9F305E000935700E8950091570078 +:10F7600001700130D9F301E100935700E89532961A +:10F77000029709F0C7CF103011F00296E5CF11249F +:10F7800084E10E9467F880E10E9467F8D2CD8EE1A3 +:10F790000E942CF9CECD87E90E942CF9CACDF1E068 +:10F7A000F0930B0281E088CFF999FECF92BD81BD25 +:10F7B000F89A992780B50895262FF999FECF1FBA98 +:10F7C00092BD81BD20BD0FB6F894FA9AF99A0FBE8A +:08F7D00001960895F894FFCFA3 +:02F7D8008000AF +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega644p.hex b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega644p.hex new file mode 100644 index 000000000..2edf9c677 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega644p.hex @@ -0,0 +1,126 @@ +:10F800000C943E7C0C945B7C0C945B7C0C945B7C39 +:10F810000C945B7C0C945B7C0C945B7C0C945B7C0C +:10F820000C945B7C0C945B7C0C945B7C0C945B7CFC +:10F830000C945B7C0C945B7C0C945B7C0C945B7CEC +:10F840000C945B7C0C945B7C0C945B7C0C945B7CDC +:10F850000C945B7C0C945B7C0C945B7C0C945B7CCC +:10F860000C945B7C0C945B7C0C945B7C0C945B7CBC +:10F870000C945B7C0C945B7C0C945B7C11241FBE11 +:10F88000CFEFD0E1DEBFCDBF11E0A0E0B1E0EAEA0A +:10F89000FFEF02C005900D92A230B107D9F712E038 +:10F8A000A2E0B1E001C01D92AD30B107E1F70E94C6 +:10F8B000747D0C94D37F0C94007C90910201913064 +:10F8C00019F0923041F008959091C00095FFFCCF5F +:10F8D0008093C60008959091C80095FFFCCF809357 +:10F8E000CE0008951F93982F95959595959595958C +:10F8F000905D182F1F701A304CF4105D892F0E94F4 +:10F900005D7C812F0E945D7C1F910895195A892F7B +:10F910000E945D7C812F0E945D7C1F910895EF9273 +:10F92000FF920F931F9380910201813069F1823021 +:10F9300031F080E01F910F91FF90EF900895EE2439 +:10F94000FF2487018091C80087FD17C00894E11C3F +:10F95000F11C011D111D81E4E81682E4F8068FE018 +:10F96000080780E0180770F3E0910401F0910501A9 +:10F9700009958091C80087FFE9CF8091CE001F9143 +:10F980000F91FF90EF900895EE24FF24870180915E +:10F99000C00087FD17C00894E11CF11C011D111D5A +:10F9A00081E4E81682E4F8068FE0080780E0180793 +:10F9B00070F3E0910401F091050109958091C00078 +:10F9C00087FFE9CF8091C6001F910F91FF90EF90C4 +:10F9D00008951F930E948F7C182F0E945D7C113622 +:10F9E00034F410330CF01053812F1F9108951755E4 +:10F9F000812F1F9108951F930E94E97C182F0E9468 +:10FA0000E97C1295107F810F1F91089520910201CA +:10FA1000882339F0213031F0223061F08150882381 +:10FA2000C9F708959091C00097FFFCCF9091C60050 +:10FA30008150F5CF9091C80097FFFCCF9091CE00F8 +:10FA40008150EDCF1F93182F0E948F7C803281F060 +:10FA5000809103018F5F80930301853011F01F9126 +:10FA60000895E0910401F091050109951F91089511 +:10FA700084E10E945D7C812F0E945D7C80E10E9478 +:10FA80005D7CEDCF0E948F7C803271F0809103010C +:10FA90008F5F80930301853009F00895E0910401A0 +:10FAA000F09105010995089584E10E945D7C80E153 +:10FAB0000E945D7C089515C0289A2FEF31EE44E036 +:10FAC000215030404040E1F700C0000028982FEF5F +:10FAD00031EE44E0215030404040E1F700C00000EA +:10FAE0008150882349F70895EF92FF920F931F9357 +:10FAF000CF93DF93000081E08093020180E1809347 +:10FB0000C4001092C5001092C00086E08093C2002D +:10FB100088E18093C100209A81E00E945B7D0E9471 +:10FB20008F7C8033B1F18133B9F1803409F454C052 +:10FB3000813409F45AC0823409F469C0853409F467 +:10FB40006CC0803531F1823521F1813511F1853577 +:10FB500009F469C0863509F471C0843609F47AC0A5 +:10FB6000843709F4E1C0853709F439C1863709F4CF +:10FB70004AC0809103018F5F80930301853079F63D +:10FB8000E0910401F091050109950E948F7C80337A +:10FB900051F60E94427DC3CF0E948F7C803249F78C +:10FBA00084E10E945D7C81E40E945D7C86E50E9488 +:10FBB0005D7C82E50E945D7C80E20E945D7C89E440 +:10FBC0000E945D7C83E50E945D7C80E50E945D7CF7 +:10FBD00080E10E945D7CA3CF0E948F7C8638C8F2B2 +:10FBE0000E948F7C0E94427D9ACF0E948F7C803839 +:10FBF00009F40EC1813809F40FC1823809F410C12B +:10FC0000883909F401C180E00E94227D88CF84E117 +:10FC10000E94067D0E94427D82CF85E00E94067D83 +:10FC20000E94427D7CCF0E948F7C809306010E94BF +:10FC30008F7C809307010E94427D71CF0E948F7C50 +:10FC4000803309F4F1C083E00E94067D80E00E94C9 +:10FC5000227D65CF0E948F7C809309020E948F7C59 +:10FC60008093080280910C028E7F80930C020E9488 +:10FC70008F7C853409F4E9C08091080290910902D3 +:10FC80000097A1F068E0E62E61E0F62E00E010E0BB +:10FC90000E948F7CF70181937F010F5F1F4F80913E +:10FCA0000802909109020817190790F30E948F7CAF +:10FCB000803209F05ECF80910C0280FFE5C0809118 +:10FCC000060190910701880F991F90930701809377 +:10FCD0000601209108023091090221153105E9F051 +:10FCE00048E0E42E41E0F42E00E010E0F7016191DD +:10FCF0007F010E94C57F80910601909107010196C6 +:10FD000090930701809306010F5F1F4F2091080217 +:10FD1000309109020217130748F384E10E945D7CC9 +:10FD200080E10E945D7CFBCE0E948F7C8093090263 +:10FD30000E948F7C809308028091060190910701B8 +:10FD400097FD9CC020910C022D7F20930C02880F00 +:10FD5000991F90930701809306010E948F7C853440 +:10FD600009F486C080910C028E7F80930C020E9461 +:10FD70008F7C803209F0D3CE84E10E945D7C20919B +:10FD800008023091090221153105D1F100E010E09F +:10FD900080910601909107010CC041FF5CC0019663 +:10FDA00090930701809306010F5F1F4F02171307FF +:10FDB00038F540910C0240FFF0CF0E94BD7F0E94B9 +:10FDC0005D7C809106019091070101969093070157 +:10FDD000809306012091080230910902E5CF0E942C +:10FDE0008F7C803209F0C5CE84E10E945D7C8EE17B +:10FDF0000E945D7C86E90E945D7C8AE00E945D7CB9 +:10FE000080E10E945D7C8BCE83E00E94227D87CEC4 +:10FE100082E00E94227D83CE81E00E94227D7FCEFF +:10FE200080E10E94227D7BCE0E948F7C0E948F7C8D +:10FE3000082F0E948F7C002309F497C0013009F439 +:10FE400098C08AE00E94227D6ACE80910C02816077 +:10FE500080930C0211CFFC0184910E945D7C209163 +:10FE6000080230910902809106019091070197CF15 +:10FE700080910C02816080930C0279CF20910C025A +:10FE8000226020930C0263CF80910701880F880BBA +:10FE9000817080930B028091060190910701880F79 +:10FEA000991F90930701809306018091080280FFBB +:10FEB00009C080910802909109020196909309026D +:10FEC00080930802F894F999FECF1127E09106017A +:10FED000F0910701C8E0D1E08091080290910902F9 +:10FEE000103091F40091570001700130D9F303E014 +:10FEF00000935700E8950091570001700130D9F345 +:10FF000001E100935700E89509901990009157007E +:10FF100001700130D9F301E000935700E895139583 +:10FF2000103898F011270091570001700130D9F373 +:10FF300005E000935700E8950091570001700130EB +:10FF4000D9F301E100935700E8953296029709F042 +:10FF5000C7CF103011F00296E5CF112484E10E9442 +:10FF60005D7C80E10E945D7CDACD8EE10E94227D85 +:10FF7000D6CD86E90E94227DD2CDF999FECF92BDE1 +:10FF800081BDF89A992780B50895262FF999FECF5B +:10FF90001FBA92BD81BD20BD0FB6F894FA9AF99AA6 +:0AFFA0000FBE01960895F894FFCFFC +:02FFAA008000D5 +:040000030000F80001 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/Makefile b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/Makefile new file mode 100644 index 000000000..3f2bb6156 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/bootloaders/atmega/Makefile @@ -0,0 +1,254 @@ +# Makefile for ATmegaBOOT +# E.Lins, 18.7.2005 +# $Id$ +# +# Instructions +# +# To make bootloader .hex file: +# make diecimila +# make lilypad +# make ng +# etc... +# +# To burn bootloader .hex file: +# make diecimila_isp +# make lilypad_isp +# make ng_isp +# etc... + +# program name should not be changed... +PROGRAM = ATmegaBOOT_168 + +# enter the parameters for the avrdude isp tool +ISPTOOL = stk500v2 +ISPPORT = usb +ISPSPEED = -b 115200 + +MCU_TARGET = atmega168 +LDSECTION = --section-start=.text=0x3800 + +# the efuse should really be 0xf8; since, however, only the lower +# three bits of that byte are used on the atmega168, avrdude gets +# confused if you specify 1's for the higher bits, see: +# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/ +# +# similarly, the lock bits should be 0xff instead of 0x3f (to +# unlock the bootloader section) and 0xcf instead of 0x0f (to +# lock it), but since the high two bits of the lock byte are +# unused, avrdude would get confused. + +ISPFUSES = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +-e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m +ISPFLASH = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ +-U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m + +STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" +STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ +-lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt +STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt + + +OBJ = $(PROGRAM).o +OPTIMIZE = -O2 + +DEFS = +LIBS = + +CC = avr-gcc + +# Override is only needed by avr-lib build system. + +override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) +override LDFLAGS = -Wl,$(LDSECTION) +#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION) + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: + +lilypad: TARGET = lilypad +lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +lilypad: AVR_FREQ = 8000000L +lilypad: $(PROGRAM)_lilypad.hex + +lilypad_isp: lilypad +lilypad_isp: TARGET = lilypad +lilypad_isp: HFUSE = DD +lilypad_isp: LFUSE = E2 +lilypad_isp: EFUSE = 00 +lilypad_isp: isp + +lilypad_resonator: TARGET = lilypad_resonator +lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3' +lilypad_resonator: AVR_FREQ = 8000000L +lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex + +lilypad_resonator_isp: lilypad_resonator +lilypad_resonator_isp: TARGET = lilypad_resonator +lilypad_resonator_isp: HFUSE = DD +lilypad_resonator_isp: LFUSE = C6 +lilypad_resonator_isp: EFUSE = 00 +lilypad_resonator_isp: isp + +pro8: TARGET = pro_8MHz +pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro8: AVR_FREQ = 8000000L +pro8: $(PROGRAM)_pro_8MHz.hex + +pro8_isp: pro8 +pro8_isp: TARGET = pro_8MHz +pro8_isp: HFUSE = DD +pro8_isp: LFUSE = C6 +pro8_isp: EFUSE = 00 +pro8_isp: isp + +pro16: TARGET = pro_16MHz +pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro16: AVR_FREQ = 16000000L +pro16: $(PROGRAM)_pro_16MHz.hex + +pro16_isp: pro16 +pro16_isp: TARGET = pro_16MHz +pro16_isp: HFUSE = DD +pro16_isp: LFUSE = C6 +pro16_isp: EFUSE = 00 +pro16_isp: isp + +pro20: TARGET = pro_20mhz +pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS' +pro20: AVR_FREQ = 20000000L +pro20: $(PROGRAM)_pro_20mhz.hex + +pro20_isp: pro20 +pro20_isp: TARGET = pro_20mhz +pro20_isp: HFUSE = DD +pro20_isp: LFUSE = C6 +pro20_isp: EFUSE = 00 +pro20_isp: isp + +diecimila: TARGET = diecimila +diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' +diecimila: AVR_FREQ = 16000000L +diecimila: $(PROGRAM)_diecimila.hex + +diecimila_isp: diecimila +diecimila_isp: TARGET = diecimila +diecimila_isp: HFUSE = DD +diecimila_isp: LFUSE = FF +diecimila_isp: EFUSE = 00 +diecimila_isp: isp + +ng: TARGET = ng +ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3' +ng: AVR_FREQ = 16000000L +ng: $(PROGRAM)_ng.hex + +ng_isp: ng +ng_isp: TARGET = ng +ng_isp: HFUSE = DD +ng_isp: LFUSE = FF +ng_isp: EFUSE = 00 +ng_isp: isp + +atmega328: TARGET = atmega328 +atmega328: MCU_TARGET = atmega328p +atmega328: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 +atmega328: AVR_FREQ = 16000000L +atmega328: LDSECTION = --section-start=.text=0x7800 +atmega328: $(PROGRAM)_atmega328.hex + +atmega328_isp: atmega328 +atmega328_isp: TARGET = atmega328 +atmega328_isp: MCU_TARGET = atmega328p +atmega328_isp: HFUSE = DA +atmega328_isp: LFUSE = FF +atmega328_isp: EFUSE = 05 +atmega328_isp: isp + +atmega328_pro8: TARGET = atmega328_pro_8MHz +atmega328_pro8: MCU_TARGET = atmega328p +atmega328_pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=57600 -DDOUBLE_SPEED +atmega328_pro8: AVR_FREQ = 8000000L +atmega328_pro8: LDSECTION = --section-start=.text=0x7800 +atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex + +atmega328_pro8_isp: atmega328_pro8 +atmega328_pro8_isp: TARGET = atmega328_pro_8MHz +atmega328_pro8_isp: MCU_TARGET = atmega328p +atmega328_pro8_isp: HFUSE = DA +atmega328_pro8_isp: LFUSE = FF +atmega328_pro8_isp: EFUSE = 05 +atmega328_pro8_isp: isp + +mega: TARGET = atmega1280 +mega: MCU_TARGET = atmega1280 +mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600 +mega: AVR_FREQ = 16000000L +mega: LDSECTION = --section-start=.text=0x1F000 +mega: $(PROGRAM)_atmega1280.hex + +mega_isp: mega +mega_isp: TARGET = atmega1280 +mega_isp: MCU_TARGET = atmega1280 +mega_isp: HFUSE = DA +mega_isp: LFUSE = FF +mega_isp: EFUSE = F5 +mega_isp: isp + +atmega1284p: TARGET = atmega1284p +atmega1284p: MCU_TARGET = atmega1284p +atmega1284p: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=57600' +atmega1284p: AVR_FREQ = 16000000L +atmega1284p: LDSECTION = --section-start=.text=0x1F000 +atmega1284p: $(PROGRAM)_atmega1284p.hex + +atmega1284p_8m: TARGET = atmega1284p +atmega1284p_8m: MCU_TARGET = atmega1284p +atmega1284p_8m: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=19200' +atmega1284p_8m: AVR_FREQ = 8000000L +atmega1284p_8m: LDSECTION = --section-start=.text=0x1F000 +atmega1284p_8m: $(PROGRAM)_atmega1284p_8m.hex + +atmega644p: TARGET = atmega644p +atmega644p: MCU_TARGET = atmega644p +atmega644p: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' '-DBAUD_RATE=57600' +atmega644p: AVR_FREQ = 16000000L +atmega644p: LDSECTION = --section-start=.text=0xF800 +atmega644p: $(PROGRAM)_atmega644p.hex + + +atmega1284p_isp: atmega1284p +atmega1284p_isp: TARGET = atmega1284p +atmega1284p_isp: MCU_TARGET = atmega1284p +atmega1284p_isp: HFUSE = DC +atmega1284p_isp: LFUSE = FF +atmega1284p_isp: EFUSE = FD +atmega1284p_isp: isp + +isp: $(TARGET) + $(ISPFUSES) + $(ISPFLASH) + +isp-stk500: $(PROGRAM)_$(TARGET).hex + $(STK500-1) + $(STK500-2) + +%.elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +%.hex: %.elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/ChangeLog b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/ChangeLog new file mode 100644 index 000000000..1ee88d6cf --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/ChangeLog @@ -0,0 +1,114 @@ + +u8glib ChangeLog + +2012-01-01 v0.01 Oliver Kraus + * first beta release for Arduino IDE with simple SSD1325 support +2012-01-04 v0.02 Oliver Kraus + * support for some more display types +2012-01-07 v0.03 Oliver Kraus + * fixed some bugs, added more examples +2012-01-07 v0.04 Oliver Kraus + * single font file +2012-01-08 v0.05 Oliver Kraus + * Cleanup + * More examples + * SSD1325 graylevel support +2012-01-15 v0.06 Oliver Kraus + * LM6063 support +2012-01-17 v0.07 Oliver Kraus + * LM6063 support (update) +2012-01-19 v0.08 Oliver Kraus + * ST7920 beta device +2012-01-21 v0.09 Oliver Kraus + * ST7920 fixed (192x32) + * fixed bug in com layer if pins are none + * str reference position +2012-01-22 v0.10 Oliver Kraus + * Experimental LM6059 +2012-01-24 v0.11 Oliver Kraus + * new st7920 memory layout for 128x64 lcd + * experimental st7920 SPI +2012-01-25 v0.12 Oliver Kraus + * fixed st7920 memory layout for 128x64 lcd + * ST7920 SPI performance improvement +2012-01-27 v0.13 Oliver Kraus + * LM6059 (Adafruit Display) fixed +2012-02-01 v0.14 Oliver Kraus + * undoRotation() + * setRot..() can be used without restrictions + * Class U8GLIB derived from Print class. New function "print" + * Fixed memory index bug in the page management procedures +2012-02-12 v1.00 Oliver Kraus + * XBM support + * F() macro support + * str-rotation commands support ref-height and ref-position +2012-03-17 v1.02 Oliver Kraus + * U8GLIB_ST7687_C144MVGD spi experimental + * U8GLIB_LC7981_160X80 8bit + * Intersection test for frame and box procedures + * 4L double memory architecture + * setContrast infrastructure implemented, but not available for all devices + * drawCircle, drawDisc + * Bugfix for drawStr270 + * New examples: Chess (ported from dogm128 lib) and GraphicsTest +2012-03-31 v1.03 Oliver Kraus + * experimental parallel mode atmega + * more unifont code pages + * double memory, for NHD OLED and DOGXL160 + * "Menu" example + * drawLine +2012-04-13 v1.04 Oliver Kraus + * Adjust U8grelease: Same version number with AVR and Arduino variant +2012-06-10 v1.05 Oliver Kraus + * m2icon font + * experimental lc7981_240x64 device + * experimental ssd1306 + * experimental ssd1322 + * Hardware state backup/restore procedure +2012-06-15 v1.06 Oliver Kraus + * SBN1661 (SED1520?) support + * SSD1306 support + * U8G_PROGMEM bugfix +2012-07-04 v1.07 Oliver Kraus + * Added Makefiles for AVR release (issue 77) + * Fixed examples for Arduino Environment (issue 78) +2012-10-02 v1.08 Oliver Kraus + * Improved delay calculation for strobe pulse (issue 20) + * Support Chipkit (issue 39) + * Improved speed for ST7920 parallel mode (issue 79) + * Overall speed optimization (new page intersection algorithm) + * Support for Displays Newhaven NHD-C12864, CrystalFontz GFAG20232, Seeedstudio 96x96 OLED + * Added SPI support for ST7920 with plain AVR (issue 85) + * Add more LC7981 devices +2012-12-23 v1.09 Oliver Kraus + * Support for Displaytech 64128n + * Support for MINI12864 + * HW SPI for ST7920 + * Add delay after sending a byte with (ST7920 com) + * Support ATTiny + * Support I2C for SSD1306 + * bdf2u8g, Windows executable released + * LC7981 320x64 + * Scalue up: u8g::setScale2x2 + * Added more bitmap fonts + * u8g::drawRBox(), u8g::drawRFrame() + * Support for CFAG20232 (st7920_202x32) + * Fixed ST7920 SW SPI for ChipKit + * Support for tls8204 +2013-02-02 v1.10 Oliver Kraus + * Support for SSD1309 + * Support for NHD-C12832A1Z + * Bugfix: Fixed reset controll in parallel modes + * Bugfix: Fixed calculation of cursor position + * Bugfix: ST7920 parallel mode +2013-03-2 v1.11 Oliver Kraus + * Support for T6963 + * Support for Arduino Due + * Sleep Mode + * 4x mode for ST7920 + * New C++ interface for ST7920 + + + + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/INSTALL.TXT b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/INSTALL.TXT new file mode 100644 index 000000000..d87f97128 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/INSTALL.TXT @@ -0,0 +1,21 @@ + +U8GLIB +http://code.google.com/p/u8glib/ + + +Install instructions for the Arduino environment. + + 1. Unzip u8glib_arduino_vX.XX.zip into the "libraries" folder + 2. Start Arduino IDE + +Install instructions for the Chipkit (Arduino) environment. + + 1. cd /libraries + 2. unzip u8glib_arduino_vX.XX.zip + 3. cd ///hardware/pic32/libraries + 4. again: u8glib_arduino_vX.XX.zip + 5. Open hardware/pic32/cores/pic32/Print.h + Remove line + #define BYTE 0 + from the file, use PRINT_BYTE instead of BYTE. + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/U8glib.cpp b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/U8glib.cpp new file mode 100644 index 000000000..aa870b114 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/U8glib.cpp @@ -0,0 +1,80 @@ +/* + + U8glib.cpp + + C++ Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "U8glib.h" + + + +uint8_t U8GLIB::initSPI(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) +{ + prepare(); + return u8g_InitSPI(&u8g, dev, sck, mosi, cs, a0, reset); +} + +uint8_t U8GLIB::initHWSPI(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) +{ + prepare(); + return u8g_InitHWSPI(&u8g, dev, cs, a0, reset); +} + +uint8_t U8GLIB::initI2C(u8g_dev_t *dev, uint8_t options) +{ + prepare(); + return u8g_InitI2C(&u8g, dev, options); +} + +uint8_t U8GLIB::init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) +{ + prepare(); + return u8g_Init8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset); +} + +uint8_t U8GLIB::init8BitFixedPort(u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset) +{ + prepare(); + return u8g_Init8BitFixedPort(&u8g, dev, en, cs, di, rw, reset); +} + +uint8_t U8GLIB::initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) +{ + prepare(); + return u8g_InitRW8Bit(&u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/U8glib.h b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/U8glib.h new file mode 100644 index 000000000..a77444425 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/U8glib.h @@ -0,0 +1,826 @@ +/* + + U8glib.h + + C++ Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef _CPP_U8GLIB +#define _CPP_U8GLIB + +#include +#include "utility/u8g.h" + + +class U8GLIB : public Print +{ + private: + u8g_t u8g; + u8g_uint_t tx, ty; // current position for the Print base class procedures + uint8_t is_begin; + + void prepare(void) { tx = 0; ty = 0; is_begin = 0; } + void cbegin(void) { if ( is_begin == 0 ) { is_begin = 1; u8g_Begin(&u8g); } } + uint8_t initSPI(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE); + uint8_t initHWSPI(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE); + uint8_t initI2C(u8g_dev_t *dev, uint8_t options); + protected: + uint8_t init8BitFixedPort(u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset); + private: + uint8_t init8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE); + uint8_t initRW8Bit(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset); + public: + + /* constructor */ + U8GLIB(void) + { } + U8GLIB(u8g_dev_t *dev) + { prepare(); u8g_Init(&u8g, dev); } + U8GLIB(u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) + { initSPI(dev, sck, mosi, cs, a0, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) + { initHWSPI(dev, cs, a0, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t options) + { initI2C(dev, options); } + U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) + { init8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset); } + U8GLIB(u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) + { initRW8Bit(dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset); } + + uint8_t begin(void) { is_begin = 1; return u8g_Begin(&u8g); } + + void setPrintPos(u8g_uint_t x, u8g_uint_t y) { tx = x; ty = y; } + u8g_t *getU8g(void) { return &u8g; } + + + /* implementation of the write interface to the print class */ +#if defined(ARDUINO) && ARDUINO >= 100 + size_t write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); return 1;} +#else + void write(uint8_t c) { tx += u8g_DrawGlyph(&u8g, tx, ty, c); } +#endif + + /* screen rotation */ + void undoRotation(void) { u8g_UndoRotation(&u8g); } + void setRot90(void) { u8g_SetRot90(&u8g); } + void setRot180(void) { u8g_SetRot180(&u8g); } + void setRot270(void) { u8g_SetRot270(&u8g); } + + /* screen scaling */ + void undoScale(void) { u8g_UndoScale(&u8g); } + void setScale2x2(void) { u8g_SetScale2x2(&u8g); } + + /* picture loop */ + void firstPage(void) { cbegin(); u8g_FirstPage(&u8g); } + uint8_t nextPage(void) { return u8g_NextPage(&u8g); } + + /* system commands */ + uint8_t setContrast(uint8_t contrast) { cbegin(); return u8g_SetContrast(&u8g, contrast); } + void sleepOn(void) { u8g_SleepOn(&u8g); } + void sleepOff(void) { u8g_SleepOff(&u8g); } + + /* graphic primitives */ + void setColorIndex(uint8_t color_index) { u8g_SetColorIndex(&u8g, color_index); } + uint8_t getColorIndex(void) { return u8g_GetColorIndex(&u8g); } + + void setDefaultForegroundColor(void) { u8g_SetDefaultForegroundColor(&u8g); } + void setDefaultBackgroundColor(void) { u8g_SetDefaultBackgroundColor(&u8g); } + void setDefaultMidColor(void) { u8g_SetDefaultMidColor(&u8g); } + + u8g_uint_t getWidth(void) { return u8g_GetWidth(&u8g); } + u8g_uint_t getHeight(void) { return u8g_GetHeight(&u8g); } + uint8_t getMode(void) { return u8g_GetMode(&u8g); } + + void drawPixel(u8g_uint_t x, u8g_uint_t y) { return u8g_DrawPixel(&u8g, x, y); } + void drawHLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) { u8g_DrawHLine(&u8g, x, y, w); } + void drawVLine(u8g_uint_t x, u8g_uint_t y, u8g_uint_t h) { u8g_DrawVLine(&u8g, x, y, h); } + void drawLine(u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2) { u8g_DrawLine(&u8g, x1, y1, x2, y2); } + + void drawFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { u8g_DrawFrame(&u8g, x, y, w, h); } + void drawRFrame(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) { u8g_DrawRFrame(&u8g, x, y, w, h,r); } + void drawBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) { u8g_DrawBox(&u8g, x, y, w, h); } + void drawRBox(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) { u8g_DrawRBox(&u8g, x, y, w, h,r); } + + void drawCircle(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawCircle(&u8g, x0, y0, rad, opt); } + void drawDisc(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawDisc(&u8g, x0, y0, rad, opt); } + + /* bitmap handling */ + void drawBitmap(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap) + { u8g_DrawBitmap(&u8g, x, y, cnt, h, bitmap); } + void drawBitmapP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) + { u8g_DrawBitmapP(&u8g, x, y, cnt, h, bitmap); } + + void drawXBM(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap) + { u8g_DrawXBM(&u8g, x, y, w, h, bitmap); } + void drawXBMP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) + { u8g_DrawXBMP(&u8g, x, y, w, h, bitmap); } + + + /* font handling */ + void setFont(const u8g_fntpgm_uint8_t *font) {u8g_SetFont(&u8g, font); } + int8_t getFontAscent(void) { return u8g_GetFontAscent(&u8g); } + int8_t getFontDescent(void) { return u8g_GetFontDescent(&u8g); } + int8_t getFontLineSpacing(void) { return u8g_GetFontLineSpacing(&u8g); } + + u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr(&u8g, x, y, s); } + u8g_uint_t drawStr90(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr90(&u8g, x, y, s); } + u8g_uint_t drawStr180(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr180(&u8g, x, y, s); } + u8g_uint_t drawStr270(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr270(&u8g, x, y, s); } + u8g_uint_t drawStrP(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStrP(&u8g, x, y, s); } + u8g_uint_t drawStr90P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr90P(&u8g, x, y, s); } + u8g_uint_t drawStr180P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr180P(&u8g, x, y, s); } + u8g_uint_t drawStr270P(u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) { return u8g_DrawStr270P(&u8g, x, y, s); } + + void setFontPosBaseline(void) { u8g_SetFontPosBaseline(&u8g); } + void setFontPosBottom(void) { u8g_SetFontPosBottom(&u8g); } + void setFontPosCenter(void) { u8g_SetFontPosCenter(&u8g); } + void setFontPosTop(void) { u8g_SetFontPosTop(&u8g); } + + void setFontRefHeightText(void) { u8g_SetFontRefHeightText(&u8g); } + void setFontRefHeightExtendedText(void) { u8g_SetFontRefHeightExtendedText(&u8g); } + void setFontRefHeightAll(void) { u8g_SetFontRefHeightAll(&u8g); } + void setFontLineSpacingFactor(uint8_t factor) { u8g_SetFontLineSpacingFactor(&u8g, factor); } + + + u8g_uint_t getStrPixelWidth(const char *s) { return u8g_GetStrPixelWidth(&u8g, s); } + u8g_uint_t getStrPixelWidthP(u8g_pgm_uint8_t *s) { return u8g_GetStrPixelWidthP(&u8g, s); } + u8g_uint_t getStrWidth(const char *s) { return u8g_GetStrWidth(&u8g, s); } + u8g_uint_t getStrWidthP(u8g_pgm_uint8_t *s) { return u8g_GetStrWidthP(&u8g, s); } + + void setHardwareBackup(u8g_state_cb backup_cb) { u8g_SetHardwareBackup(&u8g, backup_cb); } + +#if defined(ARDUINO) && ARDUINO >= 100 + // support for the F() macro + + u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStrP(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr90(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr90P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr180(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr180P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + u8g_uint_t drawStr270(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStr270P(&u8g, x, y, (u8g_pgm_uint8_t *)s); } + + u8g_uint_t getStrPixelWidth(const __FlashStringHelper *s) { return u8g_GetStrPixelWidthP(&u8g, (u8g_pgm_uint8_t *)s); } + u8g_uint_t getStrWidth(const __FlashStringHelper *s) { return u8g_GetStrWidthP(&u8g, (u8g_pgm_uint8_t *)s); } +#endif + + /* cursor handling */ + void setCursorFont(const u8g_pgm_uint8_t *cursor_font) { u8g_SetCursorFont(&u8g, cursor_font); } + void setCursorStyle(uint8_t encoding) { u8g_SetCursorStyle(&u8g, encoding); } + void setCursorPos(u8g_uint_t cursor_x, u8g_uint_t cursor_y) { u8g_SetCursorPos(&u8g, cursor_x, cursor_y); } + void setCursorColor(uint8_t fg, uint8_t bg) { u8g_SetCursorColor(&u8g, fg, bg); } + void enableCursor(void) { u8g_EnableCursor(&u8g); } + void disableCursor(void) { u8g_DisableCursor(&u8g); } + void drawCursor(void) { u8g_DrawCursor(&u8g); } + + /* virtual screen */ + + void setVirtualScreenDimension(u8g_uint_t width, u8g_uint_t height) { u8g_SetVirtualScreenDimension(&u8g, width, height); } + uint8_t addToVirtualScreen(u8g_uint_t x, u8g_uint_t y, U8GLIB &child_u8g) { return u8g_AddToVirtualScreen(&u8g, x, y, &child_u8g.u8g); } + +}; + + +class U8GLIB_DOGS102 : public U8GLIB +{ + public: + U8GLIB_DOGS102(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGS102(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_MINI12864 : public U8GLIB +{ + public: + U8GLIB_MINI12864(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_MINI12864(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGM132 : public U8GLIB +{ + public: + U8GLIB_DOGM132(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm132_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGM132(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm132_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD_C12832 : public U8GLIB +{ + public: + U8GLIB_NHD_C12832(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD_C12832(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD_C12832(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_DOGM128 : public U8GLIB +{ + public: + U8GLIB_DOGM128(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGM128(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_LM6059 : public U8GLIB +{ + public: + U8GLIB_LM6059(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6059(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_LM6063 : public U8GLIB +{ + public: + U8GLIB_LM6063(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6063(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_64128N : public U8GLIB +{ + public: + U8GLIB_64128N(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_64128N(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD_C12864 : public U8GLIB +{ + public: + U8GLIB_NHD_C12864(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD_C12864(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_ST7920_128X64 : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_128X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } + // U8GLIB_ST7920_128X64(uint8_t cs) + // : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, cs, U8G_PIN_NONE, U8G_PIN_NONE) + // { } +}; + +class U8GLIB_ST7920_128X64_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_128X64_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_128X64_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + + +class U8GLIB_ST7920_192X32 : public U8GLIB // OBSOLETE, use U8GLIB_ST7920_192X32_1X instead +{ + public: + U8GLIB_ST7920_192X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_192X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_192X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_ST7920_192X32_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_192X32_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_192X32_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_192X32_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_192X32_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_192x32_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + +class U8GLIB_ST7920_202X32 : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7920_202X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_hw_spi, cs, a0, reset) + { } + U8GLIB_ST7920_202X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_ST7920_202X32_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_1X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_1X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + +class U8GLIB_ST7920_202X32_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_202X32_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_sw_spi, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_4X(uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_hw_spi, cs, U8G_PIN_NONE, reset) // a0 = U8G_PIN_NONE + { } + U8GLIB_ST7920_202X32_4X(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_202x32_4x_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, U8G_PIN_NONE, U8G_PIN_NONE, di, rw, reset) // cs1 = cs2 = U8G_PIN_NONE + { } +}; + + +class U8GLIB_LC7981_160X80 : public U8GLIB +{ + public: + U8GLIB_LC7981_160X80(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_160x80_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_LC7981_240X64 : public U8GLIB +{ + public: + U8GLIB_LC7981_240X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_240x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_LC7981_240X128 : public U8GLIB +{ + public: + U8GLIB_LC7981_240X128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_240x128_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +// 16 bit mode required: Remove comment from "#define U8G_16BIT 1" in utility/u8g.h +class U8GLIB_LC7981_320X64 : public U8GLIB +{ + public: + U8GLIB_LC7981_320X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_lc7981_320x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + + + +class U8GLIB_DOGXL160_BW : public U8GLIB +{ + public: + U8GLIB_DOGXL160_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_GR : public U8GLIB +{ + public: + U8GLIB_DOGXL160_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_2X_BW : public U8GLIB +{ + public: + U8GLIB_DOGXL160_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_DOGXL160_2X_GR : public U8GLIB +{ + public: + U8GLIB_DOGXL160_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGXL160_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1610_dogxl160_2x_gr_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_NHD27OLED_BW : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_BW(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_NHD27OLED_2X_BW : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_BW(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_NHD31OLED_BW : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_2X_BW : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_2X_BW(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_2X_BW(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_GR : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD31OLED_2X_GR : public U8GLIB +{ + public: + U8GLIB_NHD31OLED_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD31OLED_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_SSD1306_128X64 : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_i2c, options) + { } + +}; + +class U8GLIB_SSD1309_128X64 : public U8GLIB +{ + public: + U8GLIB_SSD1309_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1309_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1309_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1309_128x64_i2c, options) + { } + +}; + +class U8GLIB_SSD1306_128X32 : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_i2c, options) + { } + +}; + + +class U8GLIB_NHD27OLED_GR : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_NHD27OLED_2X_GR : public U8GLIB +{ + public: + U8GLIB_NHD27OLED_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD27OLED_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1327_96X96_GR : public U8GLIB +{ + public: + U8GLIB_SSD1327_96X96_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_GR(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_gr_i2c, options) + { } +}; + +class U8GLIB_SSD1327_96X96_2X_GR : public U8GLIB +{ + public: + U8GLIB_SSD1327_96X96_2X_GR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_2X_GR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1327_96X96_2X_GR(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1327_96x96_2x_gr_i2c, options) + { } +}; + +class U8GLIB_PCF8812 : public U8GLIB +{ + public: + U8GLIB_PCF8812(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcf8812_96x65_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_PCD8544 : public U8GLIB +{ + public: + U8GLIB_PCD8544(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcd8544_84x48_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_TLS8204_84X48 : public U8GLIB +{ + public: + U8GLIB_TLS8204_84X48(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_tls8204_84x48_sw_spi, sck, mosi, cs, a0, reset) + { } +}; + +class U8GLIB_KS0108_128 : public U8GLIB +{ + public: + U8GLIB_KS0108_128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ks0108_128x64_fast, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_SBN1661_122X32 : public U8GLIB +{ + public: + U8GLIB_SBN1661_122X32(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sbn1661_122x32, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs1, cs2, di, rw, reset) + { } +}; + +class U8GLIB_T6963_240X128 : public U8GLIB +{ + public: + U8GLIB_T6963_240X128(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_240x128_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + +class U8GLIB_T6963_240X64 : public U8GLIB +{ + public: + U8GLIB_T6963_240X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_240x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + +class U8GLIB_T6963_128X64 : public U8GLIB +{ + public: + U8GLIB_T6963_128X64(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_t6963_128x64_8bit, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + { } +}; + + +class U8GLIB_ST7687_C144MVGD: public U8GLIB +{ + public: + U8GLIB_ST7687_C144MVGD(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7687_c144mvgd_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_ST7687_C144MVGD(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs, uint8_t a0, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ks0108_128x64_fast, d0, d1, d2, d3, d4, d5, d6, d7, en, cs, U8G_PIN_NONE, a0, rw, reset) + { } +}; + +class U8GLIB_ILI9325D_320x240 : public U8GLIB +{ + public: + /* + U8GLIB_ILI9325D_320x240(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ili9325d_320x240_8bit, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } + */ + U8GLIB_ILI9325D_320x240( uint8_t en, uint8_t cs1, uint8_t di, uint8_t rw = U8G_PIN_NONE, uint8_t reset = U8G_PIN_NONE) + { init8BitFixedPort(&u8g_dev_ili9325d_320x240_8bit, en, cs1, di, rw, reset); } +}; + +class U8GLIB_FLIPDISC_2X7 : public U8GLIB +{ + public: + U8GLIB_FLIPDISC_2X7(void) : U8GLIB(&u8g_dev_flipdisc_2x7) + { } +}; + +class U8GLIB_VS : public U8GLIB +{ + public: + U8GLIB_VS(void) : U8GLIB(&u8g_dev_vs) + { } +}; + + +#endif /* _CPP_U8GLIB */ diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Bitmap/Bitmap.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Bitmap/Bitmap.pde new file mode 100644 index 000000000..53fbe1b21 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Bitmap/Bitmap.pde @@ -0,0 +1,130 @@ +/* + + Bitmap.pde + + Show simple bitmap + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +const uint8_t rook_bitmap[] PROGMEM = { + 0x00, // 00000000 + 0x55, // 01010101 + 0x7f, // 01111111 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x3e, // 00111110 + 0x7f // 01111111 +}; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.drawBitmapP( 0, 0, 1, 8, rook_bitmap); +} + +void setup(void) { +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(1000); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Chess/Chess.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Chess/Chess.pde new file mode 100644 index 000000000..3cef35398 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Chess/Chess.pde @@ -0,0 +1,180 @@ +/* + + Chess.pde + + Little Rook Chess + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +// DOGS102 shield configuration values +uint8_t uiKeyPrev = 2; +uint8_t uiKeyNext = 4; +uint8_t uiKeySelect = 5; +uint8_t uiKeyBack = 3; + +// DOGM128-Shield configuration values +// DOGXL60-Shield configuration values +//uint8_t uiKeyPrev = 7; +//uint8_t uiKeyNext = 3; +//uint8_t uiKeySelect = 2; +//uint8_t uiKeyBack = 8; + +uint8_t uiKeyCodeFirst = CHESS_KEY_NONE; +uint8_t uiKeyCodeSecond = CHESS_KEY_NONE; +uint8_t uiKeyCode = CHESS_KEY_NONE; + + +void uiSetup(void) { + // configure input keys + + pinMode(uiKeyPrev, INPUT); // set pin to input + digitalWrite(uiKeyPrev, HIGH); // turn on pullup resistors + pinMode(uiKeyNext, INPUT); // set pin to input + digitalWrite(uiKeyNext, HIGH); // turn on pullup resistors + pinMode(uiKeySelect, INPUT); // set pin to input + digitalWrite(uiKeySelect, HIGH); // turn on pullup resistors + pinMode(uiKeyBack, INPUT); // set pin to input + digitalWrite(uiKeyBack, HIGH); // turn on pullup resistors +} + +void uiStep(void) +{ + uiKeyCodeSecond = uiKeyCodeFirst; + if ( digitalRead(uiKeyPrev) == LOW ) + uiKeyCodeFirst = CHESS_KEY_PREV; + else if ( digitalRead(uiKeyNext) == LOW ) + uiKeyCodeFirst = CHESS_KEY_NEXT; + else if ( digitalRead(uiKeySelect) == LOW ) + uiKeyCodeFirst = CHESS_KEY_SELECT; + else if ( digitalRead(uiKeyBack) == LOW ) + uiKeyCodeFirst = CHESS_KEY_BACK; + else + uiKeyCodeFirst = CHESS_KEY_NONE; + + if ( uiKeyCodeSecond == uiKeyCodeFirst ) + uiKeyCode = uiKeyCodeFirst; + else + uiKeyCode = CHESS_KEY_NONE; +} + + +void setup() { + // rotate screen, if required + u8g.setRot180(); + + uiSetup(); + chess_Init(u8g.getU8g(), 0); +} + +void loop() { + uint8_t keyCode = CHESS_KEY_NONE; + + u8g.firstPage(); + do { + chess_Draw(); + uiStep(); + if ( uiKeyCode != CHESS_KEY_NONE ) + keyCode = uiKeyCode; + } while( u8g.nextPage() ); + + u8g_Delay(10); + chess_Step(keyCode); + uiStep(); + keyCode = uiKeyCode; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Console/Console.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Console/Console.pde new file mode 100644 index 000000000..fcf4b74c5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Console/Console.pde @@ -0,0 +1,230 @@ +/* + + Console.pde + + Read from serial monitor, output to display + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +// setup input buffer +#define LINE_MAX 30 +uint8_t line_buf[LINE_MAX] = "U8GLIB Console"; +uint8_t line_pos = 0; + +// setup a text screen to support scrolling +#define ROW_MAX 12 + + +uint8_t screen[ROW_MAX][LINE_MAX]; +uint8_t rows, cols; + +// line height, which matches the selected font (5x7) +#define LINE_PIXEL_HEIGHT 7 + +// clear entire screen, called during setup +void clear_screen(void) { + uint8_t i, j; + for( i = 0; i < ROW_MAX; i++ ) + for( j = 0; j < LINE_MAX; j++ ) + screen[i][j] = 0; +} + +// append a line to the screen, scroll up +void add_line_to_screen(void) { + uint8_t i, j; + for( j = 0; j < LINE_MAX; j++ ) + for( i = 0; i < rows-1; i++ ) + screen[i][j] = screen[i+1][j]; + + for( j = 0; j < LINE_MAX; j++ ) + screen[rows-1][j] = line_buf[j]; +} + +// U8GLIB draw procedure: output the screen +void draw(void) { + uint8_t i, y; + // graphic commands to redraw the complete screen are placed here + y = 0; // reference is the top left -1 position of the string + y--; // correct the -1 position of the drawStr + for( i = 0; i < rows; i++ ) + { + u8g.drawStr( 0, y, (char *)(screen[i])); + y += u8g.getFontLineSpacing(); + } +} + +void exec_line(void) { + // echo line to the serial monitor + Serial.println((const char *)line_buf); + + // add the line to the screen + add_line_to_screen(); + + // U8GLIB picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); +} + +// clear current input buffer +void reset_line(void) { + line_pos = 0; + line_buf[line_pos] = '\0'; +} + +// add a single character to the input buffer +void char_to_line(uint8_t c) { + line_buf[line_pos] = c; + line_pos++; + line_buf[line_pos] = '\0'; +} + +// check serial in and handle the character +void read_line(void) { + if ( Serial.available() ) + { + uint8_t c; + c = Serial.read(); + if ( line_pos >= cols-1 ) { + exec_line(); + reset_line(); + char_to_line(c); + } + else if ( c == '\n' ) { + // ignore '\n' + } + else if ( c == '\r' ) { + exec_line(); + reset_line(); + } + else { + char_to_line(c); + } + } +} + +// Arduino master setup +void setup(void) { + // set font for the console window + u8g.setFont(u8g_font_5x7); + //u8g.setFont(u8g_font_9x15); + + // set upper left position for the string draw procedure + u8g.setFontPosTop(); + + // calculate the number of rows for the display + rows = u8g.getHeight() / u8g.getFontLineSpacing(); + if ( rows > ROW_MAX ) + rows = ROW_MAX; + + // estimate the number of columns for the display + cols = u8g.getWidth() / u8g.getStrWidth("m"); + if ( cols > LINE_MAX-1 ) + cols = LINE_MAX-1; + + clear_screen(); // clear screen + delay(1000); // do some delay + Serial.begin(9600); // init serial + exec_line(); // place the input buffer into the screen + reset_line(); // clear input buffer +} + +// Arduino main loop +void loop(void) { + read_line(); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/F/F.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/F/F.pde new file mode 100644 index 000000000..4cb3b20b7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/F/F.pde @@ -0,0 +1,139 @@ +/* + + F.pde + + Example code for the F() macro. + + >>> This example requires Arduino 1.0 and above. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + + // assign default font + u8g.setFont(u8g_font_unifont); + + // pointer to strings in flash memory can be stored in a special type + const __FlashStringHelper *flash_ptr; + + // the result of the F() macro can be assigned to this pointer + flash_ptr = F("Hello World!"); + + // this pointer can be used as argument to the draw procedures + u8g.drawStr( 0+1, 20+1, flash_ptr); + u8g.drawStr( 0, 20, flash_ptr); + + // of course, the F() macro can be used directly + u8g.drawStr( 0, 40, F("PROGMEM")); + +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde new file mode 100644 index 000000000..4e9135209 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/GraphicsTest/GraphicsTest.pde @@ -0,0 +1,223 @@ +/* + + GraphicsTest.pde + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void u8g_prepare(void) { + u8g.setFont(u8g_font_6x10); + u8g.setFontRefHeightExtendedText(); + u8g.setDefaultForegroundColor(); + u8g.setFontPosTop(); +} + +void u8g_box_frame(uint8_t a) { + u8g.drawStr( 0, 0, "drawBox"); + u8g.drawBox(5,10,20,10); + u8g.drawBox(10+a,15,30,7); + u8g.drawStr( 0, 30, "drawFrame"); + u8g.drawFrame(5,10+30,20,10); + u8g.drawFrame(10+a,15+30,30,7); +} + +void u8g_disc_circle(uint8_t a) { + u8g.drawStr( 0, 0, "drawDisc"); + u8g.drawDisc(10,18,9); + u8g.drawDisc(24+a,16,7); + u8g.drawStr( 0, 30, "drawCircle"); + u8g.drawCircle(10,18+30,9); + u8g.drawCircle(24+a,16+30,7); +} + +void u8g_r_frame(uint8_t a) { + u8g.drawStr( 0, 0, "drawRFrame/Box"); + u8g.drawRFrame(5, 10,40,30, a+1); + u8g.drawRBox(50, 10,25,40, a+1); +} + +void u8g_string(uint8_t a) { + u8g.drawStr(30+a,31, " 0"); + u8g.drawStr90(30,31+a, " 90"); + u8g.drawStr180(30-a,31, " 180"); + u8g.drawStr270(30,31-a, " 270"); +} + +void u8g_line(uint8_t a) { + u8g.drawStr( 0, 0, "drawLine"); + u8g.drawLine(7+a, 10, 40, 55); + u8g.drawLine(7+a*2, 10, 60, 55); + u8g.drawLine(7+a*3, 10, 80, 55); + u8g.drawLine(7+a*4, 10, 100, 55); +} + +void u8g_ascii_1() { + char s[2] = " "; + uint8_t x, y; + u8g.drawStr( 0, 0, "ASCII page 1"); + for( y = 0; y < 6; y++ ) { + for( x = 0; x < 16; x++ ) { + s[0] = y*16 + x + 32; + u8g.drawStr(x*7, y*10+10, s); + } + } +} + +void u8g_ascii_2() { + char s[2] = " "; + uint8_t x, y; + u8g.drawStr( 0, 0, "ASCII page 2"); + for( y = 0; y < 6; y++ ) { + for( x = 0; x < 16; x++ ) { + s[0] = y*16 + x + 160; + u8g.drawStr(x*7, y*10+10, s); + } + } +} + + +uint8_t draw_state = 0; + +void draw(void) { + u8g_prepare(); + switch(draw_state >> 3) { + case 0: u8g_box_frame(draw_state&7); break; + case 1: u8g_disc_circle(draw_state&7); break; + case 2: u8g_r_frame(draw_state&7); break; + case 3: u8g_string(draw_state&7); break; + case 4: u8g_line(draw_state&7); break; + case 5: u8g_ascii_1(); break; + case 6: u8g_ascii_2(); break; + } +} + +void setup(void) { + + // flip screen, if required + //u8g.setRot180(); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on + + //u8g.setContrast(0x30); + + pinMode(13, OUTPUT); + digitalWrite(13, HIGH); +} + +void loop(void) { + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // increase the state + draw_state++; + if ( draw_state >= 7*8 ) + draw_state = 0; + + // rebuild the picture after some delay + delay(150); + +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/HelloWorld/HelloWorld.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/HelloWorld/HelloWorld.pde new file mode 100644 index 000000000..5a00939a3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/HelloWorld/HelloWorld.pde @@ -0,0 +1,136 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + //u8g.setFont(u8g_font_osb21); + u8g.drawStr( 0, 22, "Hello World!"); +} + +void setup(void) { + + // flip screen, if required + // u8g.setRot180(); + + // set SPI backup if required + //u8g.setHardwareBackup(u8g_backup_avr_spi); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Menu/Menu.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Menu/Menu.pde new file mode 100644 index 000000000..fbb0af034 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Menu/Menu.pde @@ -0,0 +1,234 @@ +/* + + Menu.pde + + Simple Menu Selection + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +#define KEY_NONE 0 +#define KEY_PREV 1 +#define KEY_NEXT 2 +#define KEY_SELECT 3 +#define KEY_BACK 4 + +// DOGS102 shield configuration values +//uint8_t uiKeyPrev = 2; +//uint8_t uiKeyNext = 4; +//uint8_t uiKeySelect = 5; +//uint8_t uiKeyBack = 3; + +// DOGM128-Shield configuration values +// DOGXL60-Shield configuration values +uint8_t uiKeyPrev = 7; +uint8_t uiKeyNext = 3; +uint8_t uiKeySelect = 2; +uint8_t uiKeyBack = 8; + +uint8_t uiKeyCodeFirst = KEY_NONE; +uint8_t uiKeyCodeSecond = KEY_NONE; +uint8_t uiKeyCode = KEY_NONE; + + +void uiSetup(void) { + // configure input keys + + pinMode(uiKeyPrev, INPUT); // set pin to input + digitalWrite(uiKeyPrev, HIGH); // turn on pullup resistors + pinMode(uiKeyNext, INPUT); // set pin to input + digitalWrite(uiKeyNext, HIGH); // turn on pullup resistors + pinMode(uiKeySelect, INPUT); // set pin to input + digitalWrite(uiKeySelect, HIGH); // turn on pullup resistors + pinMode(uiKeyBack, INPUT); // set pin to input + digitalWrite(uiKeyBack, HIGH); // turn on pullup resistors +} + +void uiStep(void) { + uiKeyCodeSecond = uiKeyCodeFirst; + if ( digitalRead(uiKeyPrev) == LOW ) + uiKeyCodeFirst = KEY_PREV; + else if ( digitalRead(uiKeyNext) == LOW ) + uiKeyCodeFirst = KEY_NEXT; + else if ( digitalRead(uiKeySelect) == LOW ) + uiKeyCodeFirst = KEY_SELECT; + else if ( digitalRead(uiKeyBack) == LOW ) + uiKeyCodeFirst = KEY_BACK; + else + uiKeyCodeFirst = KEY_NONE; + + if ( uiKeyCodeSecond == uiKeyCodeFirst ) + uiKeyCode = uiKeyCodeFirst; + else + uiKeyCode = KEY_NONE; +} + + +#define MENU_ITEMS 4 +char *menu_strings[MENU_ITEMS] = { "First Line", "Second Item", "3333333", "abcdefg" }; + +uint8_t menu_current = 0; +uint8_t menu_redraw_required = 0; +uint8_t last_key_code = KEY_NONE; + + +void drawMenu(void) { + uint8_t i, h; + u8g_uint_t w, d; + + u8g.setFont(u8g_font_6x13); + u8g.setFontRefHeightText(); + u8g.setFontPosTop(); + + h = u8g.getFontAscent()-u8g.getFontDescent(); + w = u8g.getWidth(); + for( i = 0; i < MENU_ITEMS; i++ ) { + d = (w-u8g.getStrWidth(menu_strings[i]))/2; + u8g.setDefaultForegroundColor(); + if ( i == menu_current ) { + u8g.drawBox(0, i*h+1, w, h); + u8g.setDefaultBackgroundColor(); + } + u8g.drawStr(d, i*h, menu_strings[i]); + } +} + +void updateMenu(void) { + if ( uiKeyCode != KEY_NONE && last_key_code == uiKeyCode ) { + return; + } + last_key_code = uiKeyCode; + + switch ( uiKeyCode ) { + case KEY_NEXT: + menu_current++; + if ( menu_current >= MENU_ITEMS ) + menu_current = 0; + menu_redraw_required = 1; + break; + case KEY_PREV: + if ( menu_current == 0 ) + menu_current = MENU_ITEMS; + menu_current--; + menu_redraw_required = 1; + break; + } +} + + +void setup() { + // rotate screen, if required + // u8g.setRot180(); + + uiSetup(); // setup key detection and debounce algorithm + menu_redraw_required = 1; // force initial redraw +} + +void loop() { + + uiStep(); // check for key press + + if ( menu_redraw_required != 0 ) { + u8g.firstPage(); + do { + drawMenu(); + } while( u8g.nextPage() ); + menu_redraw_required = 0; + } + + updateMenu(); // update menu bar + +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/PrintTest/PrintTest.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/PrintTest/PrintTest.pde new file mode 100644 index 000000000..7535c22f1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/PrintTest/PrintTest.pde @@ -0,0 +1,124 @@ +/* + + PrintTest.pde + + How to use the base class "Print" + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.setPrintPos(0, 20); + // call procedure from base class, http://arduino.cc/en/Serial/Print + u8g.print("Hello World!"); +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Rotation/Rotation.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Rotation/Rotation.pde new file mode 100644 index 000000000..424b7bfb6 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Rotation/Rotation.pde @@ -0,0 +1,152 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +uint8_t offset = 0; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.drawStr( 0+0, 20+0, "Hello!"); + u8g.drawStr( 0+2, 20+16, "Hello!"); + + u8g.drawBox(0, 0, 3, 3); + u8g.drawBox(u8g.getWidth()-6, 0, 6, 6); + u8g.drawBox(u8g.getWidth()-9, u8g.getHeight()-9, 9, 9); + u8g.drawBox(0, u8g.getHeight()-12, 12, 12); +} + +void setup(void) { +} + + +void rotate(void) { + static uint8_t dir = 0; + static unsigned long next_rotation = 0; + + if ( next_rotation < millis() ) + { + switch(dir) { + case 0: u8g.undoRotation(); break; + case 1: u8g.setRot90(); break; + case 2: u8g.setRot180(); break; + case 3: u8g.setRot270(); offset = ( offset + 1 ) & 0x0f; break; + } + + dir++; + dir &= 3; + next_rotation = millis(); + next_rotation += 1000; + } +} + +void loop(void) { + // screen rotation + rotate(); + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(100); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Scale/Scale.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Scale/Scale.pde new file mode 100644 index 000000000..ce87c76fa --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/Scale/Scale.pde @@ -0,0 +1,141 @@ +/* + + HelloWorld.pde + + "Hello World!" example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.setFont(u8g_font_unifont); + u8g.setFontPosTop(); + u8g.drawStr(0, 1, "Hello"); + u8g.drawHLine(0, 1+14, 40); + u8g.setScale2x2(); // Scale up all draw procedures + u8g.drawStr(0, 12, "Hello"); // actual display position is (0,24) + u8g.drawHLine(0, 12+14, 40); // All other procedures are also affected + u8g.undoScale(); // IMPORTANT: Switch back to normal mode +} + +void setup(void) { + + // flip screen, if required + u8g.setRot180(); + + // set SPI backup if required + //u8g.setHardwareBackup(u8g_backup_avr_spi); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + u8g.setColorIndex(255); // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + u8g.setColorIndex(3); // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + u8g.setColorIndex(1); // pixel on +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/TextRotX/TextRotX.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/TextRotX/TextRotX.pde new file mode 100644 index 000000000..718fd821c --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/TextRotX/TextRotX.pde @@ -0,0 +1,154 @@ +/* + + TextRotX.pde + + Text rotation example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +// graphic commands to redraw the complete screen should be placed here +void draw(void) { + u8g_uint_t mx, my; + + mx = u8g.getWidth(); + mx >>= 1; + + my = u8g.getHeight(); + my >>= 1; + + u8g.drawStr( mx, my, "Ag"); + u8g.drawStr90( mx, my, "Ag"); + u8g.drawStr180( mx, my, "Ag"); + u8g.drawStr270( mx, my, "Ag"); +} + +void setup(void) { + u8g.setFont(u8g_font_9x18); +} + +void change_font_pos(void) { + static uint8_t dir = 0; + static unsigned long next = 0; + + if ( next < millis() ) + { + switch(dir) { + case 0: u8g.setFontPosBottom(); break; + case 1: u8g.setFontPosBaseline(); break; + case 2: u8g.setFontPosCenter(); break; + case 3: u8g.setFontPosTop(); break; + } + + dir++; + dir &= 3; + next = millis(); + next += 1000; + } +} + +void loop(void) { + // change the font position + change_font_pos(); + + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(100); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/U8gLogo/U8gLogo.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/U8gLogo/U8gLogo.pde new file mode 100644 index 000000000..78c866f0f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/U8gLogo/U8gLogo.pde @@ -0,0 +1,179 @@ +/* + + U8gLogo.pde + + Put the U8GLIB logo on the display. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + + +void drawColorBox(void) +{ + u8g_uint_t w,h; + u8g_uint_t r, g, b; + + w = u8g.getWidth()/32; + h = u8g.getHeight()/8; + for( b = 0; b < 4; b++ ) + for( g = 0; g < 8; g++ ) + for( r = 0; r < 8; r++ ) + { + u8g.setColorIndex((r<<5) | (g<<2) | b ); + u8g.drawBox(g*w + b*w*8, r*h, w, h); + } +} + +void drawLogo(uint8_t d) +{ + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(0+d, 30+d, "U"); + u8g.setFont(u8g_font_gdr30n); + u8g.drawStr90(23+d,10+d,"8"); + u8g.setFont(u8g_font_gdr25r); + u8g.drawStr(53+d,30+d,"g"); + + u8g.drawHLine(2+d, 35+d, 47); + u8g.drawVLine(45+d, 32+d, 12); +} + +void drawURL(void) +{ + u8g.setFont(u8g_font_4x6); + if ( u8g.getHeight() < 59 ) + { + u8g.drawStr(53,9,"code.google.com"); + u8g.drawStr(77,18,"/p/u8glib"); + } + else + { + u8g.drawStr(1,54,"code.google.com/p/u8glib"); + } +} + + +void draw(void) { + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { + drawColorBox(); + } + u8g.setColorIndex(1); + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g.getMode()) > 1 ) { + drawLogo(2); + u8g.setColorIndex(2); + drawLogo(1); + u8g.setColorIndex(3); + } + drawLogo(0); + drawURL(); + +} + +void setup(void) { + // flip screen, if required + //u8g.setRot180(); +} + +void loop(void) { + + // picture loop + u8g.firstPage(); + do { + draw(); + u8g.setColorIndex(1); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(200); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/XBM/XBM.pde b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/XBM/XBM.pde new file mode 100644 index 000000000..44dd720d9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/examples/XBM/XBM.pde @@ -0,0 +1,136 @@ +/* + + XBM.pde + + drawXBM example code. + + >>> Before compiling: Please remove comment from the constructor of the + >>> connected graphics display (see below). + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device + +//U8GLIB_NHD27OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD27OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_NHD31OLED_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGS102 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM132 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGM128 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_ST7920_128X64_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_128X64_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_128X64_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_192X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_192X32_1X u8g(13, 11, 10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10 +//U8GLIB_ST7920_192X32_4X u8g(10); // SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 10, HW SPI +//U8GLIB_ST7920_202X32_1X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_4X u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, di=17,rw=16 +//U8GLIB_ST7920_202X32_1X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_ST7920_202X32_4X u8g(18, 16, 17); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17 +//U8GLIB_LM6059 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_LM6063 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_BW u8g(10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_BW u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_DOGXL160_2X_GR u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_PCD8544 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_PCF8812 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8 +//U8GLIB_KS0108_128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs1=14, cs2=15,di=17,rw=16 +//U8GLIB_LC7981_160X80 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_LC7981_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 en=18, cs=14 ,di=15,rw=17, reset = 16 +//U8GLIB_ILI9325D_320x240 u8g(18,17,19,U8G_PIN_NONE,16 ); // 8Bit Com: D0..D7: 0,1,2,3,4,5,6,7 en=wr=18, cs=17, rs=19, rd=U8G_PIN_NONE, reset = 16 +//U8GLIB_SBN1661_122X32 u8g(8,9,10,11,4,5,6,7,14,15, 17, U8G_PIN_NONE, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7 cs1=14, cs2=15,di=17,rw=16,reset = 16 +//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_128X32 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1306_128X32 u8g(U8G_I2C_OPT_NONE); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_SSD1309_128X64 u8g(13, 11, 10, 9); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1327_96X96_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_SSD1327_96X96_2X_GR u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_NHD_C12832 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_T6963_240X128 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_240X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 +//U8GLIB_T6963_128X64 u8g(8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16); // 8Bit Com: D0..D7: 8,9,10,11,4,5,6,7, cs=14, a0=15, wr=17, rd=18, reset=16 + +#define u8g_logo_width 38 +#define u8g_logo_height 24 +//static unsigned char u8g_logo_bits[] = { +static unsigned char u8g_logo_bits[] U8G_PROGMEM = { + 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0xe0, + 0xff, 0xff, 0x3f, 0xe3, 0xe1, 0xff, 0xff, 0x3f, 0xf3, 0xf1, 0xff, 0xff, + 0x3f, 0xf3, 0xf1, 0xfe, 0xbf, 0x37, 0xf3, 0x11, 0x1c, 0x1f, 0x30, 0xf3, + 0x01, 0x08, 0x8c, 0x20, 0xf3, 0x01, 0x00, 0xc0, 0x39, 0xf3, 0x81, 0xc7, + 0xc1, 0x39, 0xf3, 0xc1, 0xc7, 0xc9, 0x38, 0xf3, 0xc1, 0xc3, 0x19, 0x3c, + 0xe3, 0x89, 0x01, 0x98, 0x3f, 0xc7, 0x18, 0x00, 0x08, 0x3e, 0x0f, 0x3c, + 0x70, 0x1c, 0x30, 0x3f, 0xff, 0xfc, 0x87, 0x31, 0xff, 0xff, 0xbf, 0xc7, + 0x23, 0x01, 0x00, 0x00, 0xc6, 0x23, 0x03, 0x00, 0x00, 0x0e, 0x30, 0xff, + 0xff, 0x3f, 0x1f, 0x3c, 0xff, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0xff, 0x3f, + 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x3f }; + +void draw(void) { + // graphic commands to redraw the complete screen should be placed here + u8g.drawXBMP( 0, 0, u8g_logo_width, u8g_logo_height, u8g_logo_bits); +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/license.txt b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/license.txt new file mode 100644 index 000000000..c9eea75c4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/license.txt @@ -0,0 +1,80 @@ + +The U8glib code (http://code.google.com/p/u8glib/) is licensed under the terms of +the new-bsd license (two-clause bsd license). +See also: http://www.opensource.org/licenses/bsd-license.php + +The repository and optionally the releases contain icons, which are +derived from the WPZOOM Developer Icon Set: +http://www.wpzoom.com/wpzoom/new-freebie-wpzoom-developer-icon-set-154-free-icons/ +WPZOOM Developer Icon Set by WPZOOM is licensed under a Creative Commons +Attribution-ShareAlike 3.0 Unported License. + +Fonts are licensed under different conditions. +See http://code.google.com/p/u8glib/wiki/fontgroup for +detailed information on the licensing conditions for each font. + +============ X11 Fonts COUR, HELV, NCEN, TIM, SYMB ============ + +For fonts derived from the following files, the license below applies. +COURB08.BDF COURB10.BDF COURB12.BDF COURB14.BDF COURB18.BDF +COURB24.BDF COURR08.BDF COURR10.BDF COURR12.BDF COURR14.BDF +COURR18.BDF COURR24.BDF HELVB08.BDF HELVB10.BDF HELVB12.BDF HELVB14.BDF +HELVB18.BDF HELVB24.BDF HELVR08.BDF HELVR10.BDF HELVR12.BDF HELVR14.BDF +HELVR18.BDF HELVR24.BDF NCENB08.BDF NCENB10.BDF NCENB12.BDF +NCENB14.BDF NCENB18.BDF NCENB24.BDF NCENR08.BDF NCENR10.BDF +NCENR12.BDF NCENR14.BDF NCENR18.BDF NCENR24.BDF SYMB08.BDF SYMB10.BDF +SYMB12.BDF SYMB14.BDF SYMB18.BDF SYMB24.BDF TIMB08.BDF TIMB10.BDF +TIMB12.BDF TIMB14.BDF TIMB18.BDF TIMB24.BDF TIMR08.BDF TIMR10.BDF +TIMR12.BDF TIMR14.BDF TIMR18.BDF TIMR24.BDF + +Copyright 1984-1989, 1994 Adobe Systems Incorporated. +Copyright 1988, 1994 Digital Equipment Corporation. + +Adobe is a trademark of Adobe Systems Incorporated which may be +registered in certain jurisdictions. +Permission to use these trademarks is hereby granted only in +association with the images described in this file. + +Permission to use, copy, modify, distribute and sell this software +and its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notices appear in all +copies and that both those copyright notices and this permission +notice appear in supporting documentation, and that the names of +Adobe Systems and Digital Equipment Corporation not be used in +advertising or publicity pertaining to distribution of the software +without specific, written prior permission. Adobe Systems and +Digital Equipment Corporation make no representations about the +suitability of this software for any purpose. It is provided "as +is" without express or implied warranty. + + +============ BSD License for U8glib Code ============ + +Universal 8bit Graphics Library (http://code.google.com/p/u8glib/) + +Copyright (c) 2011, olikraus@gmail.com +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/chessengine.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/chessengine.c new file mode 100644 index 000000000..4a8758c38 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/chessengine.c @@ -0,0 +1,2392 @@ +/* + chessengine.c + + "Little Rook Chess" (lrc) + + Port to u8g library + + chess for embedded 8-Bit controllers + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Note: + UNIX_MAIN --> unix console executable + + Current Rule Limitation + - no minor promotion, only "Queening" of the pawn + - threefold repetition is not detected (same board situation appears three times) + Note: Could be implemented, but requires tracking of the complete game + - Fifty-move rule is not checked (no pawn move, no capture within last 50 moves) + + Words + Ply a half move + + General Links + http://chessprogramming.wikispaces.com/ + + Arduino specific + http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1260055596 + + Prefixes + chess_ Generic Chess Application Interface + ce_ Chess engine, used internally, these function should not be called directly + cu_ Chess utility function + stack_ Internal function for stack handling + + Issues + 10.01.2011 + - castling to the right does not move the rook + --> done + - castling to the left: King can only move two squares + --> done + + 11.01.2011 + Next Steps: + - replace stack_NextCurrentPos with cu_NextPos, cleanup code according to the loop variable + --> done + - Castling: Need to check for fields under attack + --> done + + - Check for WIN / LOSE situation, perhaps call ce_Eval() once on the top-level board setup + just after the real move + - cleanup cu_Move + --> almost done + - add some heuristics to the eval procedure + - add right side menu + --> done + - clean up chess_ManualMove + --> done + - finish menu (consider is_game_end, undo move) + - end condition: if KING is under attack and if KING can not move to a field which is under attack... + then the game is lost. What will be returned by the Eval procedure? is it -INF? + --> finished + + - reduce the use of variable color, all should be reduced to board_orientation and ply&1 + + - chess_GetNextMarked shoud make use of cu_NextPos + --> done + - chess_ManualMove: again cleanup, solve draw issue (KING is not in check and no legal moves are available) + --> done + 22.01.2011 + - simplify eval_t ce_Eval(void) + - position eval does not work, still moves side pawn :-( + maybe because all pieces are considered + --> done + +*/ + +#include "u8g.h" + +//#ifndef __unix__ +//#else +//#include +//#define U8G_NOINLINE +//#endif + +/* +SAN identifies each piece by a single upper case letter. The standard English +values: pawn = "P", knight = "N", bishop = "B", rook = "R", queen = "Q", and +king = "K". +*/ + +/* numbers for the various pieces */ +#define PIECE_NONE 0 +#define PIECE_PAWN 1 +#define PIECE_KNIGHT 2 +#define PIECE_BISHOP 3 +#define PIECE_ROOK 4 +#define PIECE_QUEEN 5 +#define PIECE_KING 6 + +/* color definitions */ +#define COLOR_WHITE 0 +#define COLOR_BLACK 1 + +/* a mask, which includes COLOR and PIECE number */ +#define COLOR_PIECE_MASK 0x01f + +#define CP_MARK_MASK 0x20 + +#define ILLEGAL_POSITION 255 + +/* This is the build in upper limit of the search stack */ +/* This value defines the amount of memory allocated for the search stack */ +/* The search depth of this chess engine can never exceed this value */ +#define STACK_MAX_SIZE 5 + +/* chess half move stack: twice the number of undo's, a user can do */ +#define CHM_USER_SIZE 6 + +/* the CHM_LIST_SIZE must be larger than the maximum search depth */ +/* the overall size of ste half move stack */ +#define CHM_LIST_SIZE (STACK_MAX_SIZE+CHM_USER_SIZE+2) + +typedef int16_t eval_t; /* a variable type to store results from the evaluation */ +//#define EVAL_T_LOST -32768 +#define EVAL_T_MIN -32767 +#define EVAL_T_MAX 32767 +//#define EVAL_T_WIN 32767 + +/* for maintainance of our own stack: this is the definition of one element on the stack */ +struct _stack_element_struct +{ + /* the current source position which is investigated */ + uint8_t current_pos; + uint8_t current_cp; + uint8_t current_color; /* COLOR_WHITE or COLOR_BLACK: must be predefines */ + + /* the move which belongs to that value, both values are game positions */ + uint8_t best_from_pos; + uint8_t best_to_pos; + /* the best value, which has been dicovered so far */ + eval_t best_eval; +}; +typedef struct _stack_element_struct stack_element_t; +typedef struct _stack_element_struct *stack_element_p; + +/* chess half move history */ +struct _chm_struct +{ + uint8_t main_cp; /* the main piece, which is moved */ + uint8_t main_src; /* the source position of the main piece */ + uint8_t main_dest; /* the destination of the main piece */ + + uint8_t other_cp; /* another piece: the captured one, the ROOK in case of castling or PIECE_NONE */ + uint8_t other_src; /* the delete position of other_cp. Often identical to main_dest except for e.p. and castling */ + uint8_t other_dest; /* only used for castling: ROOK destination pos */ + + /* the position of the last pawn, which did a double move forward */ + /* this is required to check en passant conditions */ + /* this array can be indexed by the color of the current player */ + /* this is the condition BEFORE the move was done */ + uint8_t pawn_dbl_move[2]; + + /* flags for the movement of rook and king; required for castling */ + /* a 1 means: castling is (still) possible */ + /* a 0 means: castling not possible */ + /* bit 0 left side white */ + /* bit 1 right side white */ + /* bit 2 left side black */ + /* bit 3 right side black */ + /* this is the condition BEFORE the move was done */ + uint8_t castling_possible; +}; + +typedef struct _chm_struct chm_t; +typedef struct _chm_struct *chm_p; + +/* little rook chess, main structure */ +struct _lrc_struct +{ + /* half-move (ply) counter: Counts the number of half-moves so far. Starts with 0 */ + /* the lowest bit is used to derive the color of the current player */ + /* will be set to zero in chess_SetupBoard() */ + uint8_t ply_count; + + /* the half move stack position counter, counts the number of elements in chm_list */ + uint8_t chm_pos; + + /* each element contains a colored piece, empty fields have value 0 */ + /* the field with index 0 is black (lower left) */ + uint8_t board[64]; + /* the position of the last pawn, which did a double move forward */ + /* this is required to check en passant conditions */ + /* this array can be indexed by the color of the current player */ + uint8_t pawn_dbl_move[2]; + + /* flags for the movement of rook and king; required for castling */ + /* a 1 means: castling is (still) possible */ + /* a 0 means: castling not possible */ + /* bit 0 left side white */ + /* bit 1 right side white */ + /* bit 2 left side black */ + /* bit 3 right side black */ + uint8_t castling_possible; + + /* board orientation */ + /* 0: white is below COLOR_WHITE */ + /* 1: black is below COLOR_BLACK */ + /* bascially, this can be used as a color */ + uint8_t orientation; + + /* exchange colors of the pieces */ + /* 0: white has an empty body, use this for bright background color */ + /* 1: black has an empty body, use this for dark backround color */ + uint8_t strike_out_color; + + /* 0, when the game is ongoing */ + /* 1, when the game is stopped (lost or draw) */ + uint8_t is_game_end; + /* the color of the side which lost the game */ + /* this value is only valid, when is_game_end is not 0 */ + /* values 0 and 1 represent WHITE and BLACK, 2 means a draw */ + uint8_t lost_side_color; + + + + /* checks are executed in ce_LoopRecur */ + /* these checks will put some marks on the board */ + /* this will be used by the interface to find out */ + /* legal moves */ + uint8_t check_src_pos; + uint8_t check_mode; /* CHECK_MODE_NONE, CHECK_MODE_MOVEABLE, CHECK_MODE_TARGET_MOVE */ + + + /* count of the attacking pieces, indexed by color */ + uint8_t find_piece_cnt[2]; + + /* sum of the attacking pieces, indexed by color */ + uint8_t find_piece_weight[2]; + + /* points to the current element of the search stack */ + /* this stack is NEVER empty. The value 0 points to the first element of the stack */ + /* actually "curr_depth" represent half-moves (plies) */ + uint8_t curr_depth; + uint8_t max_depth; + stack_element_p curr_element; + + /* allocated memory for the search stack */ + stack_element_t stack_memory[STACK_MAX_SIZE]; + + /* the half move stack, used for move undo and depth search, size is stored in chm_pos */ + chm_t chm_list[CHM_LIST_SIZE]; +}; +typedef struct _lrc_struct lrc_t; + +#define CHECK_MODE_NONE 0 +#define CHECK_MODE_MOVEABLE 1 +#define CHECK_MODE_TARGET_MOVE 2 + + + +/*==============================================================*/ +/* global variables */ +/*==============================================================*/ + +u8g_t *lrc_u8g; + +lrc_t lrc_obj; + + +/*==============================================================*/ +/* forward declarations */ +/*==============================================================*/ + +/* + apply no inline to some of the functions: + avr-gcc very often inlines functions, however not inline saves a lot of program memory! + On the other hand there are some really short procedures which should be inlined (like cp_GetColor) + These procedures are marked static to prevent the generation of the expanded procedure, which + also saves space. +*/ + +uint8_t stack_Push(uint8_t color) U8G_NOINLINE; +void stack_Pop(void) U8G_NOINLINE; +void stack_InitCurrElement(void) U8G_NOINLINE; +void stack_Init(uint8_t max) U8G_NOINLINE; +void stack_SetMove(eval_t val, uint8_t to_pos) U8G_NOINLINE; +uint8_t cu_NextPos(uint8_t pos) U8G_NOINLINE; +static uint8_t cu_gpos2bpos(uint8_t gpos); +static uint8_t cp_Construct(uint8_t color, uint8_t piece); +static uint8_t cp_GetPiece(uint8_t cp); +static uint8_t cp_GetColor(uint8_t cp); +uint8_t cp_GetFromBoard(uint8_t pos) U8G_NOINLINE; +void cp_SetOnBoard(uint8_t pos, uint8_t cp) U8G_NOINLINE; + +void cu_ClearBoard(void) U8G_NOINLINE; +void chess_SetupBoard(void) U8G_NOINLINE; +eval_t ce_Eval(void); + +void cu_ClearMoveHistory(void) U8G_NOINLINE; +void cu_ReduceHistoryByFullMove(void) U8G_NOINLINE; +void cu_UndoHalfMove(void) U8G_NOINLINE; +chm_p cu_PushHalfMove(void) U8G_NOINLINE; + + +void ce_CalculatePositionWeight(uint8_t pos); +uint8_t ce_GetPositionAttackWeight(uint8_t pos, uint8_t color); + +void chess_Thinking(void); +void ce_LoopPieces(void); + + +/*==============================================================*/ +/* search stack */ +/*==============================================================*/ + +/* get current element from stack */ +stack_element_p stack_GetCurrElement(void) +{ + return lrc_obj.curr_element; +} + +uint8_t stack_Push(uint8_t color) +{ + if ( lrc_obj.curr_depth == lrc_obj.max_depth ) + return 0; + lrc_obj.curr_depth++; + lrc_obj.curr_element = lrc_obj.stack_memory+lrc_obj.curr_depth; + + /* change view for the evaluation */ + color ^= 1; + stack_GetCurrElement()->current_color = color; + + return 1; +} + +void stack_Pop(void) +{ + lrc_obj.curr_depth--; + lrc_obj.curr_element = lrc_obj.stack_memory+lrc_obj.curr_depth; +} + +/* reset the current element on the stack */ +void stack_InitCurrElement(void) +{ + stack_element_p e = stack_GetCurrElement(); + e->best_eval = EVAL_T_MIN; + e->best_from_pos = ILLEGAL_POSITION; + e->best_to_pos = ILLEGAL_POSITION; +} + +/* resets the search stack (and the check mode) */ +void stack_Init(uint8_t max) +{ + lrc_obj.curr_depth = 0; + lrc_obj.curr_element = lrc_obj.stack_memory; + lrc_obj.max_depth = max; + lrc_obj.check_mode = CHECK_MODE_NONE; + stack_InitCurrElement(); + stack_GetCurrElement()->current_color = lrc_obj.ply_count; + stack_GetCurrElement()->current_color &= 1; +} + +/* assign evaluation value and store the move, if this is the best move */ +/* assumes, that current_pos contains the source position */ +void stack_SetMove(eval_t val, uint8_t to_pos) +{ + stack_element_p e = stack_GetCurrElement(); + if ( e->best_eval < val ) + { + e->best_eval = val; + e->best_from_pos = e->current_pos; + e->best_to_pos = to_pos; + } +} + +/* + calculate next position on a 0x88 board + loop is constructed in this way: + i = 0; + do + { + ... + i = cu_NextPos(i); + } while( i != 0 ); + + next pos might be started with an illegal position like 255 +*/ +uint8_t cu_NextPos(uint8_t pos) +{ + /* calculate next gpos */ + pos++; + if ( ( pos & 0x08 ) != 0 ) + { + pos+= 0x10; + pos&= 0xf0; + } + if ( ( pos & 0x80 ) != 0 ) + pos = 0; + return pos; +} + +uint8_t cu_PrevPos(uint8_t pos) +{ + /* calculate prev gpos */ + pos--; + if ( ( pos & 0x80 ) != 0 ) + pos = 0x077; + else if ( ( pos & 0x08 ) != 0 ) + { + pos &= 0xf0; + pos |= 0x07; + } + return pos; +} + + +/*==============================================================*/ +/* position transltion */ +/*==============================================================*/ +/* + there are two positions + 1. game position (gpos): BCD encoded x-y values + 2. board position (bpos): a number between 0 and 63, only used to access the board. +*/ +/* + gpos: game position value + returns: board position + note: does not do any checks +*/ +static uint8_t cu_gpos2bpos(uint8_t gpos) +{ + uint8_t bpos = gpos; + bpos &= 0xf0; + bpos >>= 1; + gpos &= 0x0f; + bpos |= gpos; + return bpos; +} + +#define gpos_IsIllegal(gpos) ((gpos) & 0x088) + + +/*==============================================================*/ +/* colored piece handling */ +/*==============================================================*/ + +#define cp_IsMarked(cp) ((cp) & CP_MARK_MASK) + + +/* + piece: one of PIECE_xxx + color: COLOR_WHITE or COLOR_BLACK + + returns: A colored piece +*/ +static uint8_t cp_Construct(uint8_t color, uint8_t piece) +{ + color <<= 4; + color |= piece; + return color; +} + +/* inline is better than a macro */ +static uint8_t cp_GetPiece(uint8_t cp) +{ + cp &= 0x0f; + return cp; +} + +/* + we could use a macro: + #define cp_GetColor(cp) (((cp) >> 4)&1) + however, inlined functions are sometimes much better +*/ +static uint8_t cp_GetColor(uint8_t cp) +{ + cp >>= 4; + cp &= 1; + return cp; +} + +/* + pos: game position + returns the colored piece at the given position +*/ +uint8_t cp_GetFromBoard(uint8_t pos) +{ + return lrc_obj.board[cu_gpos2bpos(pos)]; +} + +/* + pos: game position + cp: colored piece +*/ +void cp_SetOnBoard(uint8_t pos, uint8_t cp) +{ + /*printf("cp_SetOnBoard gpos:%02x cp:%02x\n", pos, cp);*/ + lrc_obj.board[cu_gpos2bpos(pos)] = cp; +} + +/*==============================================================*/ +/* global board access */ +/*==============================================================*/ + +void cu_ClearBoard(void) +{ + uint8_t i; + /* clear the board */ + for( i = 0; i < 64; i++ ) + lrc_obj.board[i] = PIECE_NONE; + + lrc_obj.ply_count = 0; + lrc_obj.orientation = COLOR_WHITE; + + lrc_obj.pawn_dbl_move[0] = ILLEGAL_POSITION; + lrc_obj.pawn_dbl_move[1] = ILLEGAL_POSITION; + + lrc_obj.castling_possible = 0x0f; + + lrc_obj.is_game_end = 0; + lrc_obj.lost_side_color = 0; + + /* clear half move history */ + cu_ClearMoveHistory(); + +} + +/* + test setup + white wins in one move +*/ +void chess_SetupBoardTest01(void) +{ + cu_ClearBoard(); + lrc_obj.board[7+7*8] = cp_Construct(COLOR_BLACK, PIECE_KING); + lrc_obj.board[7+5*8] = cp_Construct(COLOR_WHITE, PIECE_PAWN); + lrc_obj.board[3] = cp_Construct(COLOR_WHITE, PIECE_KING); + lrc_obj.board[0+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + lrc_obj.board[6] = cp_Construct(COLOR_WHITE, PIECE_QUEEN); +} + +/* setup the global board */ +void chess_SetupBoard(void) +{ + uint8_t i; + register uint8_t bp, wp; + + /* clear the board */ + cu_ClearBoard(); + + /* precronstruct pawns */ + wp = cp_Construct(COLOR_WHITE, PIECE_PAWN); + bp = cp_Construct(COLOR_BLACK, PIECE_PAWN); + + /* setup pawn */ + for( i = 0; i < 8; i++ ) + { + lrc_obj.board[i+8] = wp; + lrc_obj.board[i+6*8] = bp; + } + + /* assign remaining pieces */ + + lrc_obj.board[0] = cp_Construct(COLOR_WHITE, PIECE_ROOK); + lrc_obj.board[1] = cp_Construct(COLOR_WHITE, PIECE_KNIGHT); + lrc_obj.board[2] = cp_Construct(COLOR_WHITE, PIECE_BISHOP); + lrc_obj.board[3] = cp_Construct(COLOR_WHITE, PIECE_QUEEN); + lrc_obj.board[4] = cp_Construct(COLOR_WHITE, PIECE_KING); + lrc_obj.board[5] = cp_Construct(COLOR_WHITE, PIECE_BISHOP); + lrc_obj.board[6] = cp_Construct(COLOR_WHITE, PIECE_KNIGHT); + lrc_obj.board[7] = cp_Construct(COLOR_WHITE, PIECE_ROOK); + + lrc_obj.board[0+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + lrc_obj.board[1+7*8] = cp_Construct(COLOR_BLACK, PIECE_KNIGHT); + lrc_obj.board[2+7*8] = cp_Construct(COLOR_BLACK, PIECE_BISHOP); + lrc_obj.board[3+7*8] = cp_Construct(COLOR_BLACK, PIECE_QUEEN); + lrc_obj.board[4+7*8] = cp_Construct(COLOR_BLACK, PIECE_KING); + lrc_obj.board[5+7*8] = cp_Construct(COLOR_BLACK, PIECE_BISHOP); + lrc_obj.board[6+7*8] = cp_Construct(COLOR_BLACK, PIECE_KNIGHT); + lrc_obj.board[7+7*8] = cp_Construct(COLOR_BLACK, PIECE_ROOK); + + //chess_SetupBoardTest01(); + +} + + + +/*==============================================================*/ +/* checks */ +/*==============================================================*/ + +/* + checks if the position is somehow illegal +*/ +uint8_t cu_IsIllegalPosition(uint8_t pos, uint8_t my_color) +{ + uint8_t board_cp; + /* check, if the position is offboard */ + if ( gpos_IsIllegal(pos) != 0 ) + return 1; + /* get the piece from the board */ + board_cp = cp_GetFromBoard(pos); + /* check if hit our own pieces */ + if ( board_cp != 0 ) + if ( cp_GetColor(board_cp) == my_color ) + return 1; + /* all ok, we could go to this position */ + return 0; +} + +/*==============================================================*/ +/* evaluation procedure */ +/*==============================================================*/ + +/* + basic idea is to return a value between EVAL_T_MIN and EVAL_T_MAX +*/ + +/* + the weight table uses the PIECE number as index: + #define PIECE_NONE 0 + #define PIECE_PAWN 1 + #define PIECE_KNIGHT 2 + #define PIECE_BISHOP 3 + #define PIECE_ROOK 4 + #define PIECE_QUEEN 5 + #define PIECE_KING 6 + the king itself is not counted +*/ +uint8_t ce_piece_weight[] = { 0, 1, 3, 3, 5, 9, 0 }; +uint8_t ce_pos_weight[] = { 0, 1, 1, 2, 2, 1, 1, 0}; +/* + evaluate the current situation on the global board +*/ +eval_t ce_Eval(void) +{ + uint8_t cp; + uint8_t is_my_king_present = 0; + uint8_t is_opposit_king_present = 0; + eval_t material_my_color = 0; + eval_t material_opposit_color = 0; + eval_t position_my_color = 0; + eval_t position_opposit_color = 0; + eval_t result; + uint8_t pos; + + pos = 0; + do + { + /* get colored piece from the board */ + cp = cp_GetFromBoard(pos); + + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + if ( stack_GetCurrElement()->current_color == cp_GetColor(cp) ) + { + /* this is our color */ + /* check if we found our king */ + if ( cp_GetPiece(cp) == PIECE_KING ) + is_my_king_present = 1; + material_my_color += ce_piece_weight[cp_GetPiece(cp)]; + if ( cp_GetPiece(cp) == PIECE_PAWN || cp_GetPiece(cp) == PIECE_KNIGHT ) + { + position_my_color += ce_pos_weight[pos&7]*ce_pos_weight[(pos>>4)&7]; + } + } + else + { + /* this is the opposit color */ + if ( cp_GetPiece(cp) == PIECE_KING ) + is_opposit_king_present = 1; + material_opposit_color += ce_piece_weight[cp_GetPiece(cp)]; + if ( cp_GetPiece(cp) == PIECE_PAWN || cp_GetPiece(cp) == PIECE_KNIGHT ) + { + position_opposit_color += ce_pos_weight[pos&7]*ce_pos_weight[(pos>>4)&7]; + } + } + } + pos = cu_NextPos(pos); + } while( pos != 0 ); + + + /* decide if we lost or won the game */ + if ( is_my_king_present == 0 ) + return EVAL_T_MIN; /*_LOST*/ + if ( is_opposit_king_present == 0 ) + return EVAL_T_MAX; /*_WIN*/ + + /* here is the evaluation function */ + + result = material_my_color - material_opposit_color; + result <<= 3; + result += position_my_color - position_opposit_color; + return result; +} + +/*==============================================================*/ +/* move backup and restore */ +/*==============================================================*/ + + +/* this procedure must be called to keep the size as low as possible */ +/* if the chm_list is large enough, it could hold the complete history */ +/* but for an embedded controler... it is deleted for every engine search */ +void cu_ClearMoveHistory(void) +{ + lrc_obj.chm_pos = 0; +} + +void cu_ReduceHistoryByFullMove(void) +{ + uint8_t i; + while( lrc_obj.chm_pos > CHM_USER_SIZE ) + { + i = 0; + for(;;) + { + if ( i+2 >= lrc_obj.chm_pos ) + break; + lrc_obj.chm_list[i] = lrc_obj.chm_list[i+2]; + i++; + } + lrc_obj.chm_pos -= 2; + } +} + +void cu_UndoHalfMove(void) +{ + chm_p chm; + + if ( lrc_obj.chm_pos == 0 ) + return; + + lrc_obj.chm_pos--; + + chm = lrc_obj.chm_list+lrc_obj.chm_pos; + + lrc_obj.pawn_dbl_move[0] = chm->pawn_dbl_move[0]; + lrc_obj.pawn_dbl_move[1] = chm->pawn_dbl_move[1]; + lrc_obj.castling_possible = chm->castling_possible; + + cp_SetOnBoard(chm->main_src, chm->main_cp); + cp_SetOnBoard(chm->main_dest, PIECE_NONE); + + if ( chm->other_src != ILLEGAL_POSITION ) + cp_SetOnBoard(chm->other_src, chm->other_cp); + if ( chm->other_dest != ILLEGAL_POSITION ) + cp_SetOnBoard(chm->other_dest, PIECE_NONE); + +} + +/* + assumes, that the following members of the returned chm structure are filled + uint8_t main_cp; the main piece, which is moved + uint8_t main_src; the source position of the main piece + uint8_t main_dest; the destination of the main piece + + uint8_t other_cp; another piece: the captured one, the ROOK in case of castling or PIECE_NONE + uint8_t other_src; the delete position of other_cp. Often identical to main_dest except for e.p. and castling + uint8_t other_dest; only used for castling: ROOK destination pos + +*/ +chm_p cu_PushHalfMove(void) +{ + chm_p chm; + + chm = lrc_obj.chm_list+lrc_obj.chm_pos; + if ( lrc_obj.chm_pos < CHM_LIST_SIZE-1) + lrc_obj.chm_pos++; + + chm->pawn_dbl_move[0] = lrc_obj.pawn_dbl_move[0]; + chm->pawn_dbl_move[1] = lrc_obj.pawn_dbl_move[1]; + chm->castling_possible = lrc_obj.castling_possible; + return chm; +} + + +char chess_piece_to_char[] = "NBRQK"; + +/* + simple moves on empty field: Ka1-b2 + capture moves: Ka1xb2 + castling: 0-0 or 0-0-0 +*/ + +static void cu_add_pos(char *s, uint8_t pos) U8G_NOINLINE; + +static void cu_add_pos(char *s, uint8_t pos) +{ + *s = pos; + *s >>= 4; + *s += 'a'; + s++; + *s = pos; + *s &= 15; + *s += '1'; +} + +const char *cu_GetHalfMoveStr(uint8_t idx) +{ + chm_p chm; + static char buf[7]; /*Ka1-b2*/ + char *p = buf; + chm = lrc_obj.chm_list+idx; + + if ( cp_GetPiece(chm->main_cp) != PIECE_NONE ) + { + if ( cp_GetPiece(chm->main_cp) > PIECE_PAWN ) + { + *p++ = chess_piece_to_char[cp_GetPiece(chm->main_cp)-2]; + } + cu_add_pos(p, chm->main_src); + p+=2; + if ( cp_GetPiece(chm->other_cp) == PIECE_NONE ) + *p++ = '-'; + else + *p++ = 'x'; + cu_add_pos(p, chm->main_dest); + p+=2; + } + *p = '\0'; + return buf; +} + + + + + +/*==============================================================*/ +/* move */ +/*==============================================================*/ + +/* + Move a piece from source position to a destination on the board + This function + - does not perform any checking + - however it processes "en passant" and casteling + - backup the move and allow 1x undo + + 2011-02-05: + - fill pawn_dbl_move[] for double pawn moves + --> done + - Implement casteling + --> done + - en passant + --> done + - pawn conversion/promotion + --> done + - half-move backup + --> done + - cleanup everything, minimize variables + --> done +*/ + +void cu_Move(uint8_t src, uint8_t dest) +{ + /* start backup structure */ + chm_p chm = cu_PushHalfMove(); + + /* these are the values from the board at the positions, provided as arguments to this function */ + uint8_t cp_src, cp_dest; + + /* Maybe a second position is cleared and one additional location is set */ + uint8_t clr_pos2; + uint8_t set_pos2; + uint8_t set_cp2; + + /* get values from board */ + cp_src = cp_GetFromBoard(src); + cp_dest = cp_GetFromBoard(dest); + + /* fill backup structure */ + + chm->main_cp = cp_src; + chm->main_src = src; + chm->main_dest = dest; + + chm->other_cp = cp_dest; /* prepace capture backup */ + chm->other_src = dest; + chm->other_dest = ILLEGAL_POSITION; + + /* setup results as far as possible with some suitable values */ + + clr_pos2 = ILLEGAL_POSITION; /* for en passant and castling, two positions might be cleared */ + set_pos2 = ILLEGAL_POSITION; /* only used for castling */ + set_cp2 = PIECE_NONE; /* ROOK for castling */ + + /* check for PAWN */ + if ( cp_GetPiece(cp_src) == PIECE_PAWN ) + { + + /* double step: is the distance 2 rows */ + if ( (src - dest == 32) || ( dest - src == 32 ) ) + { + /* remember the destination position */ + lrc_obj.pawn_dbl_move[cp_GetColor(cp_src)] = dest; + } + + /* check if the PAWN is able to promote */ + else if ( (dest>>4) == 0 || (dest>>4) == 7 ) + { + /* do simple "queening" */ + cp_src &= ~PIECE_PAWN; + cp_src |= PIECE_QUEEN; + } + + /* is it en passant capture? */ + /* check for side move */ + else if ( ((src + dest) & 1) != 0 ) + { + /* check, if target field is empty */ + if ( cp_GetPiece(cp_dest) == PIECE_NONE ) + { + /* this is en passant */ + /* no further checking required, because legal moves are assumed here */ + /* however... the captured pawn position must be valid */ + clr_pos2 = lrc_obj.pawn_dbl_move[cp_GetColor(cp_src) ^ 1]; + chm->other_src = clr_pos2; + chm->other_cp = cp_GetFromBoard(clr_pos2); + } + } + } + + /* check for the KING */ + else if ( cp_GetPiece(cp_src) == PIECE_KING ) + { + /* disallow castling, if the KING has moved */ + if ( cp_GetColor(cp_src) == COLOR_WHITE ) + { + /* if white KING has moved, disallow castling for white */ + lrc_obj.castling_possible &= 0x0c; + } + else + { + /* if black KING has moved, disallow castling for black */ + lrc_obj.castling_possible &= 0x03; + } + + /* has it been castling to the left? */ + if ( src - dest == 2 ) + { + /* let the ROOK move to pos2 */ + set_pos2 = src-1; + set_cp2 = cp_GetFromBoard(src-4); + + /* the ROOK must be cleared from the original position */ + clr_pos2 = src-4; + + chm->other_cp = set_cp2; + chm->other_src = clr_pos2; + chm->other_dest = set_pos2; + } + + /* has it been castling to the right? */ + else if ( dest - src == 2 ) + { + /* let the ROOK move to pos2 */ + set_pos2 = src+1; + set_cp2 = cp_GetFromBoard(src+3); + + /* the ROOK must be cleared from the original position */ + clr_pos2 = src+3; + + chm->other_cp = set_cp2; + chm->other_src = clr_pos2; + chm->other_dest = set_pos2; + + } + + } + + /* check for the ROOK */ + else if ( cp_GetPiece(cp_src) == PIECE_ROOK ) + { + /* disallow white left castling */ + if ( src == 0x00 ) + lrc_obj.castling_possible &= ~0x01; + /* disallow white right castling */ + if ( src == 0x07 ) + lrc_obj.castling_possible &= ~0x02; + /* disallow black left castling */ + if ( src == 0x70 ) + lrc_obj.castling_possible &= ~0x04; + /* disallow black right castling */ + if ( src == 0x77 ) + lrc_obj.castling_possible &= ~0x08; + } + + + /* apply new board situation */ + + cp_SetOnBoard(dest, cp_src); + + if ( set_pos2 != ILLEGAL_POSITION ) + cp_SetOnBoard(set_pos2, set_cp2); + + cp_SetOnBoard(src, PIECE_NONE); + + if ( clr_pos2 != ILLEGAL_POSITION ) + cp_SetOnBoard(clr_pos2, PIECE_NONE); + + +} + +/* + this subprocedure decides for evaluation of the current board situation or further (deeper) investigation + Argument pos is the new target position if the current piece + +*/ +uint8_t ce_LoopRecur(uint8_t pos) +{ + eval_t eval; + + /* 1. check if target position is occupied by the same player (my_color) */ + /* of if pos is somehow illegal or not valid */ + if ( cu_IsIllegalPosition(pos, stack_GetCurrElement()->current_color) != 0 ) + return 0; + + /* 2. move piece to the specified position, capture opponent piece if required */ + cu_Move(stack_GetCurrElement()->current_pos, pos); + + + /* 3. */ + /* if depth reached: evaluate */ + /* else: go down next level */ + /* no eval if there had been any valid half-moves, so the default value (MIN) will be returned. */ + if ( stack_Push(stack_GetCurrElement()->current_color) == 0 ) + { + eval = ce_Eval(); + } + else + { + /* init the element, which has been pushed */ + stack_InitCurrElement(); + /* start over with ntext level */ + ce_LoopPieces(); + /* get the best move from opponents view, so invert the result */ + eval = -stack_GetCurrElement()->best_eval; + stack_Pop(); + } + + /* 4. store result */ + stack_SetMove(eval, pos); + + /* 5. undo the move */ + cu_UndoHalfMove(); + + /* 6. check special modes */ + /* the purpose of these checks is to mark special pieces and positions on the board */ + /* these marks can be checked by the user interface to highlight special positions */ + if ( lrc_obj.check_mode != 0 ) + { + stack_element_p e = stack_GetCurrElement(); + if ( lrc_obj.check_mode == CHECK_MODE_MOVEABLE ) + { + cp_SetOnBoard(e->current_pos, e->current_cp | CP_MARK_MASK ); + } + else if ( lrc_obj.check_mode == CHECK_MODE_TARGET_MOVE ) + { + if ( e->current_pos == lrc_obj.check_src_pos ) + { + cp_SetOnBoard(pos, cp_GetFromBoard(pos) | CP_MARK_MASK ); + } + } + } + return 1; +} + +/*==============================================================*/ +/* move pieces which can move one or more steps into a direction */ +/*==============================================================*/ + +/* + subprocedure to generate various target positions for some pieces + special cases are handled in the piece specific sub-procedure + + Arguments: + d: a list of potential directions + is_multi_step: if the piece can only do one step (zero for KING and KNIGHT) +*/ +static const uint8_t ce_dir_offset_rook[] PROGMEM = { 1, 16, -16, -1, 0 }; +static const uint8_t ce_dir_offset_bishop[] PROGMEM = { 15, 17, -17, -15, 0 }; +static const uint8_t ce_dir_offset_queen[] PROGMEM = { 1, 16, -16, -1, 15, 17, -17, -15, 0 }; +static const uint8_t ce_dir_offset_knight[] PROGMEM = {14, -14, 18, -18, 31, -31, 33, -33, 0}; + +void ce_LoopDirsSingleMultiStep(const uint8_t *d, uint8_t is_multi_step) +{ + uint8_t loop_pos; + + /* with all directions */ + for(;;) + { + if ( u8g_pgm_read(d) == 0 ) + break; + + /* start again from the initial position */ + loop_pos = stack_GetCurrElement()->current_pos; + + /* check direction */ + do + { + /* check next position into one direction */ + loop_pos += u8g_pgm_read(d); + + /* + go further to ce_LoopRecur() + 0 will be returned if the target position is illegal or a piece of the own color + this is used to stop walking into one direction + */ + if ( ce_LoopRecur(loop_pos) == 0 ) + break; + + /* stop if we had hit another piece */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) != PIECE_NONE ) + break; + } while( is_multi_step ); + d++; + } +} + +void ce_LoopRook(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_rook, 1); +} + +void ce_LoopBishop(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_bishop, 1); +} + +void ce_LoopQueen(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_queen, 1); +} + +void ce_LoopKnight(void) +{ + ce_LoopDirsSingleMultiStep(ce_dir_offset_knight, 0); +} + + + +/*==============================================================*/ +/* move king */ +/*==============================================================*/ + +uint8_t cu_IsKingCastling(uint8_t mask, int8_t direction, uint8_t cnt) U8G_NOINLINE; + +/* + checks, if the king can do castling + + Arguments: + mask: the bit-mask for the global "castling possible" flag + direction: left castling: -1, right castling 1 + cnt: number of fields to be checked: 3 or 2 +*/ +uint8_t cu_IsKingCastling(uint8_t mask, int8_t direction, uint8_t cnt) +{ + uint8_t pos; + uint8_t opponent_color; + + /* check if the current board state allows castling */ + if ( (lrc_obj.castling_possible & mask) == 0 ) + return 0; /* castling not allowed */ + + /* get the position of the KING, could be white or black king */ + pos = stack_GetCurrElement()->current_pos; + + /* calculate the color of the opponent */ + opponent_color = 1; + opponent_color -= stack_GetCurrElement()->current_color; + + /* if the KING itself is given check... */ + if ( ce_GetPositionAttackWeight(pos, opponent_color) > 0 ) + return 0; + + + /* check if fields in the desired direction are emtpy */ + for(;;) + { + /* go to the next field */ + pos += direction; + /* check for a piece */ + if ( cp_GetPiece(cp_GetFromBoard(pos)) != PIECE_NONE ) + return 0; /* castling not allowed */ + + /* if some of the fields are under attack */ + if ( ce_GetPositionAttackWeight(pos, opponent_color) > 0 ) + return 0; + + cnt--; + if ( cnt == 0 ) + break; + } + return 1; /* castling allowed */ +} + +void ce_LoopKing(void) +{ + /* + there is an interessting timing problem in this procedure + it must be checked for castling first and as second step the normal + KING movement. If we would first check for normal moves, than + any marks might be overwritten by the ROOK in the case of castling. + */ + + /* castling (this must be done before checking normal moves (see above) */ + if ( stack_GetCurrElement()->current_color == COLOR_WHITE ) + { + /* white left castling */ + if ( cu_IsKingCastling(1, -1, 3) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos-2); + } + /* white right castling */ + if ( cu_IsKingCastling(2, 1, 2) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos+2); + } + } + else + { + /* black left castling */ + if ( cu_IsKingCastling(4, -1, 3) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos-2); + } + /* black right castling */ + if ( cu_IsKingCastling(8, 1, 2) != 0 ) + { + /* check for attacked fields */ + ce_LoopRecur(stack_GetCurrElement()->current_pos+2); + } + } + + /* reuse queen directions */ + ce_LoopDirsSingleMultiStep(ce_dir_offset_queen, 0); +} + + +/*==============================================================*/ +/* move pawn */ +/*==============================================================*/ + +/* + doppelschritt: nur von der grundlinie aus, beide (!) felder vor dem bauern müssen frei sein + en passant: nur unmittelbar nachdem ein doppelschritt ausgeführt wurde. +*/ +void ce_LoopPawnSideCapture(uint8_t loop_pos) +{ + if ( gpos_IsIllegal(loop_pos) == 0 ) + { + /* get the piece from the board */ + /* if the field is NOT empty */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) != PIECE_NONE ) + { + /* normal capture */ + ce_LoopRecur(loop_pos); + /* TODO: check for pawn conversion/promotion */ + } + else + { + /* check conditions for en passant capture */ + if ( stack_GetCurrElement()->current_color == COLOR_WHITE ) + { + if ( lrc_obj.pawn_dbl_move[COLOR_BLACK]+16 == loop_pos ) + { + ce_LoopRecur(loop_pos); + /* note: pawn conversion/promotion can not occur */ + } + } + else + { + if ( lrc_obj.pawn_dbl_move[COLOR_WHITE] == loop_pos+16 ) + { + ce_LoopRecur(loop_pos); + /* note: pawn conversion/promotion can not occur */ + } + } + } + } +} + +void ce_LoopPawn(void) +{ + uint8_t initial_pos = stack_GetCurrElement()->current_pos; + uint8_t my_color = stack_GetCurrElement()->current_color; + + uint8_t loop_pos; + uint8_t line; + + /* one step forward */ + + loop_pos = initial_pos; + line = initial_pos; + line >>= 4; + if ( my_color == COLOR_WHITE ) + loop_pos += 16; + else + loop_pos -= 16; + if ( gpos_IsIllegal(loop_pos) == 0 ) + { + /* if the field is empty */ + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) == PIECE_NONE ) + { + /* TODO: check for and loop through piece conversion/promotion */ + ce_LoopRecur(loop_pos); + + /* second step forward */ + + /* if pawn is on his starting line */ + if ( (my_color == COLOR_WHITE && line == 1) || (my_color == COLOR_BLACK && line == 6 ) ) + { + /* the place before the pawn is not occupied, so we can do double moves, see above */ + + if ( my_color == COLOR_WHITE ) + loop_pos += 16; + else + loop_pos -= 16; + if ( cp_GetPiece(cp_GetFromBoard(loop_pos)) == PIECE_NONE ) + { + /* this is a special case, other promotions of the pawn can not occur */ + ce_LoopRecur(loop_pos); + } + } + } + } + + /* capture */ + + loop_pos = initial_pos; + if ( my_color == COLOR_WHITE ) + loop_pos += 15; + else + loop_pos -= 15; + ce_LoopPawnSideCapture(loop_pos); + + + loop_pos = initial_pos; + if ( my_color == COLOR_WHITE ) + loop_pos += 17; + else + loop_pos -= 17; + ce_LoopPawnSideCapture(loop_pos); +} + +/*==============================================================*/ +/* attacked */ +/*==============================================================*/ + +/* + from a starting position, search for a piece, that might jump to that postion. + return: + the two global variables + lrc_obj.find_piece_weight[0]; + lrc_obj.find_piece_weight[1]; + will be increased by the weight of the attacked pieces of that color. + it is usually required to reset these global variables to zero, before using + this function. +*/ + +void ce_FindPieceByStep(uint8_t start_pos, uint8_t piece, const uint8_t *d, uint8_t is_multi_step) +{ + uint8_t loop_pos, cp; + + /* with all directions */ + for(;;) + { + if ( u8g_pgm_read(d) == 0 ) + break; + + /* start again from the initial position */ + loop_pos = start_pos; + + /* check direction */ + do + { + /* check next position into one direction */ + loop_pos += u8g_pgm_read(d); + + /* check if the board boundary has been crossed */ + if ( (loop_pos & 0x088) != 0 ) + break; + + /* get the colored piece from the board */ + cp = cp_GetFromBoard(loop_pos); + + /* stop if we had hit another piece */ + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + /* if it is the piece we are looking for, then add the weight */ + if ( cp_GetPiece(cp) == piece ) + { + lrc_obj.find_piece_weight[cp_GetColor(cp)] += ce_piece_weight[piece]; + lrc_obj.find_piece_cnt[cp_GetColor(cp)]++; + } + /* in any case, break out of the inner loop */ + break; + } + } while( is_multi_step ); + d++; + } +} + +void ce_FindPawnPiece(uint8_t dest_pos, uint8_t color) +{ + uint8_t cp; + /* check if the board boundary has been crossed */ + if ( (dest_pos & 0x088) == 0 ) + { + /* get the colored piece from the board */ + cp = cp_GetFromBoard(dest_pos); + /* only if there is a pawn of the matching color */ + if ( cp_GetPiece(cp) == PIECE_PAWN ) + { + if ( cp_GetColor(cp) == color ) + { + /* the weight of the PAWN */ + lrc_obj.find_piece_weight[color] += 1; + lrc_obj.find_piece_cnt[color]++; + } + } + } +} + + +/* + find out, which pieces do attack a specified field + used to + - check if the KING can do castling + - check if the KING must move + + may be used in the eval procedure ... once... + + the result is stored in the global array + uint8_t lrc_obj.find_piece_weight[2]; + which is indexed with the color. + lrc_obj.find_piece_weight[COLOR_WHITE] is the sum of all white pieces + which can directly move to this field. + + example: + if the black KING is at "pos" and lrc_obj.find_piece_weight[COLOR_WHITE] is not zero + (after executing ce_CalculatePositionWeight(pos)) then the KING must be protected or moveed, because + the KING was given check. +*/ + +void ce_CalculatePositionWeight(uint8_t pos) +{ + + lrc_obj.find_piece_weight[0] = 0; + lrc_obj.find_piece_weight[1] = 0; + lrc_obj.find_piece_cnt[0] = 0; + lrc_obj.find_piece_cnt[1] = 0; + + if ( (pos & 0x088) != 0 ) + return; + + ce_FindPieceByStep(pos, PIECE_ROOK, ce_dir_offset_rook, 1); + ce_FindPieceByStep(pos, PIECE_BISHOP, ce_dir_offset_bishop, 1); + ce_FindPieceByStep(pos, PIECE_QUEEN, ce_dir_offset_queen, 1); + ce_FindPieceByStep(pos, PIECE_KNIGHT, ce_dir_offset_knight, 0); + ce_FindPieceByStep(pos, PIECE_KING, ce_dir_offset_queen, 0); + + ce_FindPawnPiece(pos+17, COLOR_BLACK); + ce_FindPawnPiece(pos+15, COLOR_BLACK); + ce_FindPawnPiece(pos-17, COLOR_WHITE); + ce_FindPawnPiece(pos-15, COLOR_WHITE); +} + +/* + calculate the summed weight of pieces with specified color which can move to a specified position + + argument: + pos: the position which should be analysed + color: the color of those pieces which should be analysed + e.g. if a black piece is at 'pos' and 'color' is white then this procedure returns the white atting count +*/ +uint8_t ce_GetPositionAttackWeight(uint8_t pos, uint8_t color) +{ + ce_CalculatePositionWeight(pos); + return lrc_obj.find_piece_weight[color]; +} + +uint8_t ce_GetPositionAttackCount(uint8_t pos, uint8_t color) +{ + ce_CalculatePositionWeight(pos); + return lrc_obj.find_piece_cnt[color]; +} + + +/*==============================================================*/ +/* depth search starts here: loop over all pieces of the current color on the board */ +/*==============================================================*/ + +void ce_LoopPieces(void) +{ + stack_element_p e = stack_GetCurrElement(); + /* start with lower left position (A1) */ + e->current_pos = 0; + do + { + e->current_cp = cp_GetFromBoard(e->current_pos); + /* check if the position on the board is empty */ + if ( e->current_cp != 0 ) + { + /* only generate moves for the current color */ + if ( e->current_color == cp_GetColor(e->current_cp) ) + { + chess_Thinking(); + + /* find out which piece is used */ + switch(cp_GetPiece(e->current_cp)) + { + case PIECE_NONE: + break; + case PIECE_PAWN: + ce_LoopPawn(); + break; + case PIECE_KNIGHT: + ce_LoopKnight(); + break; + case PIECE_BISHOP: + ce_LoopBishop(); + break; + case PIECE_ROOK: + ce_LoopRook(); + break; + case PIECE_QUEEN: + ce_LoopQueen(); + break; + case PIECE_KING: + ce_LoopKing(); + break; + } + } + } + e->current_pos = cu_NextPos(e->current_pos); + } while( e->current_pos != 0 ); +} + +/*==============================================================*/ +/* user interface */ +/*==============================================================*/ + +/* +eval_t chess_EvalCurrBoard(uint8_t color) +{ + stack_Init(0); + stack_GetCurrElement()->current_color = color; + ce_LoopPieces(); + return stack_GetCurrElement()->best_eval; +} +*/ + +/* clear any marks on the board */ +void chess_ClearMarks(void) +{ + uint8_t i; + for( i = 0; i < 64; i++ ) + lrc_obj.board[i] &= ~CP_MARK_MASK; +} + +/* + Mark all pieces which can do moves. This is done by setting flags on the global board +*/ +void chess_MarkMovable(void) +{ + stack_Init(0); + //stack_GetCurrElement()->current_color = color; + lrc_obj.check_mode = CHECK_MODE_MOVEABLE; + ce_LoopPieces(); +} + +/* + Checks, if the piece can move from src_pos to dest_pos + + src_pos: The game position of a piece on the chess board +*/ +void chess_MarkTargetMoves(uint8_t src_pos) +{ + stack_Init(0); + stack_GetCurrElement()->current_color = cp_GetColor(cp_GetFromBoard(src_pos)); + lrc_obj.check_src_pos = src_pos; + lrc_obj.check_mode = CHECK_MODE_TARGET_MOVE; + ce_LoopPieces(); +} + +/* + first call should start with 255 + this procedure will return 255 if + - there are no marks at all + - it has looped over all marks once +*/ +uint8_t chess_GetNextMarked(uint8_t arg, uint8_t is_prev) +{ + uint8_t i; + uint8_t pos = arg; + for(i = 0; i < 64; i++) + { + if ( is_prev != 0 ) + pos = cu_PrevPos(pos); + else + pos = cu_NextPos(pos); + if ( arg != 255 && pos == 0 ) + return 255; + if ( cp_IsMarked(cp_GetFromBoard(pos)) ) + return pos; + } + return 255; +} + + +/* make a manual move: this is a little bit more than cu_Move() */ +void chess_ManualMove(uint8_t src, uint8_t dest) +{ + uint8_t cp; + + /* printf("chess_ManualMove %02x -> %02x\n", src, dest); */ + + /* if all other things fail, this is the place where the game is to be decided: */ + /* ... if the KING is captured */ + cp = cp_GetFromBoard(dest); + if ( cp_GetPiece(cp) == PIECE_KING ) + { + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = cp_GetColor(cp); + } + + /* clear ply history here, to avoid memory overflow */ + /* may be the last X moves can be kept here */ + cu_ReduceHistoryByFullMove(); + /* perform the move on the board */ + cu_Move(src, dest); + + /* update en passant double move positions: en passant position is removed after two half moves */ + lrc_obj.pawn_dbl_move[lrc_obj.ply_count&1] = ILLEGAL_POSITION; + + /* update the global half move counter */ + lrc_obj.ply_count++; + + + /* make a small check about the end of the game */ + /* use at least depth 1, because we must know if the king can still move */ + /* this is: King moves at level 0 and will be captured at level 1 */ + /* so we check if the king can move and will not be captured at search level 1 */ + + stack_Init(1); + ce_LoopPieces(); + + /* printf("chess_ManualMove/analysis best_from_pos %02x -> best_to_pos %02x\n", stack_GetCurrElement()->best_from_pos, stack_GetCurrElement()->best_to_pos); */ + + /* analyse the eval result */ + + /* check if the other player has any moves left */ + if ( stack_GetCurrElement()->best_from_pos == ILLEGAL_POSITION ) + { + uint8_t color; + /* conditions: */ + /* 1. no King, should never happen, opposite color has won */ + /* this is already checked above at the beginning if this procedure */ + /* 2. King is under attack, opposite color has won */ + /* 3. King is not under attack, game is a draw */ + + uint8_t i = 0; + color = lrc_obj.ply_count; + color &= 1; + do + { + cp = cp_GetFromBoard(i); + /* look for the King */ + if ( cp_GetPiece(cp) == PIECE_KING ) + { + if ( cp_GetColor(cp) == color ) + { + /* check if KING is attacked */ + if ( ce_GetPositionAttackCount(i, color^1) != 0 ) + { + /* KING is under attack (check) and can not move: Game is lost */ + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = color; + } + else + { + /* KING is NOT under attack (check) but can not move: Game is a draw */ + lrc_obj.is_game_end = 1; + lrc_obj.lost_side_color = 2; + } + /* break out of the loop */ + break; + } + } + i = cu_NextPos(i); + } while( i != 0 ); + } +} + +/* let the computer do a move */ +void chess_ComputerMove(uint8_t depth) +{ + stack_Init(depth); + + //stack_GetCurrElement()->current_color = lrc_obj.ply_count; + //stack_GetCurrElement()->current_color &= 1; + + cu_ReduceHistoryByFullMove(); + ce_LoopPieces(); + + chess_ManualMove(stack_GetCurrElement()->best_from_pos, stack_GetCurrElement()->best_to_pos); +} + + +/*==============================================================*/ +/* unix code */ +/*==============================================================*/ + +#ifdef UNIX_MAIN + +#include +#include + +char *piece_str[] = { + /* 0x00 */ + " ", + "wP", + "wN", + "wB", + + /* 0x04 */ + "wR", + "wQ", + "wK", + "w?", + + /* 0x08 */ + "w?", + "w?", + "w?", + "w?", + + /* 0x0c */ + "w?", + "w?", + "w?", + "w?", + + /* 0x10 */ + "b ", + "bP", + "bN", + "bB", + "bR", + "bQ", + "bK", + "b?", + + "b?", + "b?", + "b?", + "b?", + "b?", + "b?", + "b?", + "b?" +}; + +void chess_Thinking(void) +{ + uint8_t i; + uint8_t cp = cp_GetPiece(stack_GetCurrElement()->current_cp); + + printf("Thinking: ", piece_str[cp], stack_GetCurrElement()->current_pos); + + for( i = 0; i <= lrc_obj.curr_depth; i++ ) + printf("%s ", piece_str[(lrc_obj.stack_memory+i)->current_cp]); + + printf(" \r"); +} + +void board_Show(void) +{ + uint8_t i, j, cp; + char buf[10]; + for ( i = 0; i < 8; i++ ) + { + printf("%1d ", 7-i); + for ( j = 0; j < 8; j++ ) + { + /* get piece from global board */ + cp = lrc_obj.board[(7-i)*8+j]; + strcpy(buf, piece_str[cp&COLOR_PIECE_MASK]); + + if ( (cp & CP_MARK_MASK) != 0 ) + { + buf[0] = '#'; + } + + /* mask out any bits except color and piece index */ + cp &= COLOR_PIECE_MASK; + printf("%s %02x ", buf, cp); + + } + printf("\n"); + } +} + +int main(void) +{ + uint8_t depth = 3; + chess_SetupBoard(); + board_Show(); + puts(""); + + + /* + chess_ClearMarks(); + chess_MarkMovable(COLOR_WHITE); + board_Show(); + */ + + chess_ManualMove(0x006, 0x066); + + printf("lrc_obj.is_game_end: %d\n" , lrc_obj.is_game_end); + printf("lrc_obj.lost_side_color: %d\n" , lrc_obj.lost_side_color); + + chess_ComputerMove(2); + + printf("lrc_obj.is_game_end: %d\n" , lrc_obj.is_game_end); + printf("lrc_obj.lost_side_color: %d\n" , lrc_obj.lost_side_color); + + board_Show(); + +} + + + +#else + +/*==============================================================*/ +/* display menu */ +/*==============================================================*/ + +//#define MNU_FONT font_5x7 +#define MNU_FONT u8g_font_5x8r +//#define MNU_FONT font_6x9 +#define MNU_ENTRY_HEIGHT 9 + +char *mnu_title = "Little Rook Chess"; +char *mnu_list[] = { "New Game (White)", "New Game (Black)", "Undo Move", "Return" }; +uint8_t mnu_pos = 0; +uint8_t mnu_max = 4; + +void mnu_DrawHome(uint8_t is_highlight) +{ + uint8_t x = lrc_u8g->width - 35; + uint8_t y = (lrc_u8g->height-1); + uint8_t t; + + u8g_SetFont(lrc_u8g, u8g_font_5x7r); + u8g_SetDefaultForegroundColor(lrc_u8g); + t = u8g_DrawStrP(lrc_u8g, x, y -1, U8G_PSTR("Options")); + + if ( is_highlight ) + u8g_DrawFrame(lrc_u8g, x-1, y - MNU_ENTRY_HEIGHT +1, t, MNU_ENTRY_HEIGHT); +} + +void mnu_DrawEntry(uint8_t y, char *str, uint8_t is_clr_background, uint8_t is_highlight) +{ + uint8_t t, x; + u8g_SetFont(lrc_u8g, MNU_FONT); + t = u8g_GetStrWidth(lrc_u8g, str); + x = u8g_GetWidth(lrc_u8g); + x -= t; + x >>= 1; + + if ( is_clr_background ) + { + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBox(lrc_u8g, x-3, (lrc_u8g->height-1) - (y+MNU_ENTRY_HEIGHT-1+2), t+5, MNU_ENTRY_HEIGHT+4); + } + + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawStr(lrc_u8g, x, (lrc_u8g->height-1) - y, str); + + if ( is_highlight ) + { + u8g_DrawFrame(lrc_u8g, x-1, (lrc_u8g->height-1) - y -MNU_ENTRY_HEIGHT +1, t, MNU_ENTRY_HEIGHT); + } +} + +void mnu_Draw(void) +{ + uint8_t i; + uint8_t t,y; + /* calculate hight of the complete menu */ + y = mnu_max; + y++; /* consider also some space for the title */ + y++; /* consider also some space for the title */ + y *= MNU_ENTRY_HEIGHT; + + /* calculate how much space will be left */ + t = u8g_GetHeight(lrc_u8g); + t -= y; + + /* topmost pos start half of that empty space from the top */ + t >>= 1; + y = u8g_GetHeight(lrc_u8g); + y -= t; + + y -= MNU_ENTRY_HEIGHT; + mnu_DrawEntry(y, mnu_title, 0, 0); + + y -= MNU_ENTRY_HEIGHT; + + + for( i = 0; i < mnu_max; i++ ) + { + y -= MNU_ENTRY_HEIGHT; + mnu_DrawEntry(y, mnu_list[i], 0, i == mnu_pos); + } +} + +void mnu_Step(uint8_t key_cmd) +{ + if ( key_cmd == CHESS_KEY_NEXT ) + { + if ( mnu_pos+1 < mnu_max ) + mnu_pos++; + } + else if ( key_cmd == CHESS_KEY_PREV ) + { + if ( mnu_pos > 0 ) + mnu_pos--; + } +} + + + + +uint8_t chess_key_code = 0; +uint8_t chess_key_cmd = 0; +#define CHESS_STATE_MENU 0 +#define CHESS_STATE_SELECT_START 1 +#define CHESS_STATE_SELECT_PIECE 2 +#define CHESS_STATE_SELECT_TARGET_POS 3 +#define CHESS_STATE_THINKING 4 +#define CHESS_STATE_GAME_END 5 +uint8_t chess_state = CHESS_STATE_MENU; +uint8_t chess_source_pos = 255; +uint8_t chess_target_pos = 255; + +const uint8_t chess_pieces_body_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, /* 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x00, */ + /* KNIGHT */ 0x00, 0x00, 0x1c, 0x2c, 0x04, 0x04, 0x0e, 0x00, + /* BISHOP */ 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x08, 0x00, 0x00, /* 0x00, 0x00, 0x08, 0x1c, 0x1c, 0x08, 0x00, 0x00, */ + /* ROOK */ 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, + /* QUEEN */ 0x00, 0x00, 0x14, 0x1c, 0x08, 0x1c, 0x08, 0x00, + /* KING */ 0x00, 0x00, 0x00, 0x08, 0x3e, 0x1c, 0x08, 0x00, +}; + +#ifdef NOT_REQUIRED +/* white pieces are constructed by painting black pieces and cutting out the white area */ +const uint8_t chess_white_pieces_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x0c, 0x12, 0x12, 0x0c, 0x1e, 0x00, + /* KNIGHT */ 0x00, 0x1c, 0x22, 0x52, 0x6a, 0x0a, 0x11, 0x1f, + /* BISHOP */ 0x00, 0x08, 0x14, 0x22, 0x22, 0x14, 0x08, 0x7f, + /* ROOK */ 0x00, 0x55, 0x7f, 0x22, 0x22, 0x22, 0x22, 0x7f, + /* QUEEN */ 0x00, 0x55, 0x2a, 0x22, 0x14, 0x22, 0x14, 0x7f, + /* KING */ 0x08, 0x1c, 0x49, 0x77, 0x41, 0x22, 0x14, 0x7f, +}; +#endif + +const uint8_t chess_black_pieces_bm[] PROGMEM = +{ + /* PAWN */ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x3c, 0x00, /* 0x00, 0x00, 0x0c, 0x1e, 0x1e, 0x0c, 0x1e, 0x00, */ + /* KNIGHT */ 0x00, 0x1c, 0x3e, 0x7e, 0x6e, 0x0e, 0x1f, 0x1f, + /* BISHOP */ 0x00, 0x1c, 0x2e, 0x3e, 0x3e, 0x1c, 0x08, 0x7f, /*0x00, 0x08, 0x1c, 0x3e, 0x3e, 0x1c, 0x08, 0x7f,*/ + /* ROOK */ 0x00, 0x55, 0x7f, 0x3e, 0x3e, 0x3e, 0x3e, 0x7f, + /* QUEEN */ 0x00, 0x55, 0x3e, 0x3e, 0x1c, 0x3e, 0x1c, 0x7f, + /* KING -*/ 0x08, 0x1c, 0x49, 0x7f, 0x7f, 0x3e, 0x1c, 0x7f, +}; + + +#if defined(DOGXL160_HW_GR) +#define BOXSIZE 13 +#define BOXOFFSET 3 +#else +#define BOXSIZE 8 +#define BOXOFFSET 1 +#endif + +u8g_uint_t chess_low_edge; +uint8_t chess_boxsize = 8; +uint8_t chess_boxoffset = 1; + + +void chess_DrawFrame(uint8_t pos, uint8_t is_bold) +{ + u8g_uint_t x0, y0; + + x0 = pos; + x0 &= 15; + if ( lrc_obj.orientation != COLOR_WHITE ) + x0 ^= 7; + + y0 = pos; + y0>>= 4; + if ( lrc_obj.orientation != COLOR_WHITE ) + y0 ^= 7; + + x0 *= chess_boxsize; + y0 *= chess_boxsize; + + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawFrame(lrc_u8g, x0, chess_low_edge - y0 - chess_boxsize+1, chess_boxsize, chess_boxsize); + + + if ( is_bold ) + { + x0--; + y0++; + + u8g_DrawFrame(lrc_u8g, x0, chess_low_edge - y0 - chess_boxsize +1, chess_boxsize+2, chess_boxsize+2); + } +} + + +void chess_DrawBoard(void) +{ + uint8_t i, j, cp; + const uint8_t *ptr; /* pointer into PROGMEM */ + + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(lrc_u8g)) > 1 ) + { + for( i = 0; i < 8; i++ ) + for( j = 0; j < 8; j++ ) + { + uint8_t x,y; + x = i; + x*=chess_boxsize; + y = j; + y*=chess_boxsize; + if ( ((i^j) & 1) == 0 ) + u8g_SetDefaultMidColor(lrc_u8g); + else + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBox(lrc_u8g, x,chess_low_edge-y-chess_boxsize+1,chess_boxsize,chess_boxsize); + } + //u8g_SetDefaultForegroundColor(lrc_u8g); + } + else + { + uint8_t x_offset = 1; + u8g_SetDefaultForegroundColor(lrc_u8g); + for( i = 0; i < 8*8; i+=8 ) + { + for( j = 0; j < 8*8; j+=8 ) + { + if ( ((i^j) & 8) == 0 ) + { + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-2); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-4); + u8g_DrawPixel(lrc_u8g, j+0+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+2+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+2+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+4+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+4+x_offset, chess_low_edge - i-6); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-0); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-2); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-4); + u8g_DrawPixel(lrc_u8g, j+6+x_offset, chess_low_edge - i-6); + } + } + } + } + + for ( i = 0; i < 8; i++ ) + { + for ( j = 0; j < 8; j++ ) + { + /* get piece from global board */ + if ( lrc_obj.orientation == COLOR_WHITE ) + { + cp = lrc_obj.board[i*8+j]; + } + else + { + cp = lrc_obj.board[(7-i)*8+7-j]; + } + if ( cp_GetPiece(cp) != PIECE_NONE ) + { + ptr = chess_black_pieces_bm; + ptr += (cp_GetPiece(cp)-1)*8; + u8g_SetDefaultForegroundColor(lrc_u8g); + u8g_DrawBitmapP(lrc_u8g, j*chess_boxsize+chess_boxoffset-1, chess_low_edge - (i*chess_boxsize+chess_boxsize-chess_boxoffset), 1, 8, ptr); + + if ( cp_GetColor(cp) == lrc_obj.strike_out_color ) + { + ptr = chess_pieces_body_bm; + ptr += (cp_GetPiece(cp)-1)*8; + u8g_SetDefaultBackgroundColor(lrc_u8g); + u8g_DrawBitmapP(lrc_u8g, j*chess_boxsize+chess_boxoffset-1, chess_low_edge - (i*chess_boxsize+chess_boxsize-chess_boxoffset), 1, 8, ptr); + } + } + } + } + + if ( (chess_source_pos & 0x88) == 0 ) + { + chess_DrawFrame(chess_source_pos, 1); + } + + if ( (chess_target_pos & 0x88) == 0 ) + { + chess_DrawFrame(chess_target_pos, 0); + } + +} + + +void chess_Thinking(void) +{ +} + +void chess_Init(u8g_t *u8g, uint8_t body_color) +{ + lrc_u8g = u8g; + + chess_low_edge = u8g_GetHeight(lrc_u8g); + chess_low_edge--; + + + if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(lrc_u8g)) == 1 ) + { + + chess_boxsize = 8; + chess_boxoffset = 1; + } + else + { + + /* + if ( u8g_GetHeight(lrc_u8g) >= 12*8 ) + { + chess_boxsize = 12; + chess_boxoffset = 3; + } + else */ if ( u8g_GetHeight(lrc_u8g) >= 11*8 ) + { + chess_boxsize = 10; + chess_boxoffset = 2; + } + else + { + chess_boxsize = 8; + chess_boxoffset = 1; + } + + if ( u8g_GetHeight(lrc_u8g) > 64 ) + chess_low_edge -= (u8g_GetHeight(lrc_u8g)-chess_boxsize*8) / 2; + + } + + lrc_obj.strike_out_color = body_color; + chess_SetupBoard(); +} + + + +void chess_Draw(void) +{ + if ( chess_state == CHESS_STATE_MENU ) + { + if ( lrc_obj.ply_count == 0) + mnu_max = 2; + else + mnu_max = 4; + mnu_Draw(); + } + else + { + chess_DrawBoard(); + + { + uint8_t i; + uint8_t entries = lrc_obj.chm_pos; + if ( entries > 4 ) + entries = 4; + + u8g_SetFont(lrc_u8g, u8g_font_5x7); + u8g_SetDefaultForegroundColor(lrc_u8g); + for( i = 0; i < entries; i++ ) + { + +#if defined(DOGXL160_HW_GR) || defined(DOGXL160_HW_BW) + dog_DrawStr(u8g_GetWidth(lrc_u8g)-35, u8g_GetHeight(lrc_u8g)-8*(i+1), font_5x7, cu_GetHalfMoveStr(lrc_obj.chm_pos-entries+i)); +#else + u8g_DrawStr(lrc_u8g, u8g_GetWidth(lrc_u8g)-35, 8*(i+1), cu_GetHalfMoveStr(lrc_obj.chm_pos-entries+i)); +#endif + + } + + } + + if ( chess_state == CHESS_STATE_SELECT_PIECE ) + mnu_DrawHome(chess_source_pos == 255); + else if ( chess_state == CHESS_STATE_SELECT_TARGET_POS ) + mnu_DrawHome(chess_target_pos == 255); + else + mnu_DrawHome(0); + + if ( chess_state == CHESS_STATE_GAME_END ) + { + switch( lrc_obj.lost_side_color ) + { + case COLOR_WHITE: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "Black wins", 1, 1); + break; + case COLOR_BLACK: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "White wins", 1, 1); + break; + default: + mnu_DrawEntry(u8g_GetHeight(lrc_u8g) / 2-2, "Stalemate", 1, 1); + break; + } + } + } +} + + +void chess_Step(uint8_t keycode) +{ + if ( keycode == CHESS_KEY_NONE ) + { + chess_key_cmd = chess_key_code; + chess_key_code = CHESS_KEY_NONE; + } + else + { + chess_key_cmd = CHESS_KEY_NONE; + chess_key_code = keycode; + } + //chess_ComputerMove(2); + switch(chess_state) + { + case CHESS_STATE_MENU: + mnu_Step(chess_key_cmd); + if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + if ( mnu_pos == 0 ) + { + chess_SetupBoard(); + lrc_obj.orientation = 0; + chess_state = CHESS_STATE_SELECT_START; + } + else if ( mnu_pos == 1 ) + { + chess_SetupBoard(); + lrc_obj.orientation = 1; + chess_state = CHESS_STATE_THINKING; + } + else if ( mnu_pos == 2 ) + { + if ( lrc_obj.ply_count >= 2 ) + { + cu_UndoHalfMove(); + cu_UndoHalfMove(); + lrc_obj.ply_count-=2; + if ( lrc_obj.ply_count == 0 ) + mnu_pos = 0; + } + chess_state = CHESS_STATE_SELECT_START; + } + else if ( mnu_pos == 3 ) + { + chess_state = CHESS_STATE_SELECT_START; + } + } + break; + case CHESS_STATE_SELECT_START: + chess_ClearMarks(); + chess_MarkMovable(); + chess_source_pos = chess_GetNextMarked(255, 0); + chess_target_pos = ILLEGAL_POSITION; + chess_state = CHESS_STATE_SELECT_PIECE; + break; + + case CHESS_STATE_SELECT_PIECE: + if ( chess_key_cmd == CHESS_KEY_NEXT ) + { + chess_source_pos = chess_GetNextMarked(chess_source_pos, 0); + } + else if ( chess_key_cmd == CHESS_KEY_PREV ) + { + chess_source_pos = chess_GetNextMarked(chess_source_pos, 1); + } + else if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + if ( chess_source_pos == 255 ) + { + chess_state = CHESS_STATE_MENU; + } + else + { + chess_ClearMarks(); + chess_MarkTargetMoves(chess_source_pos); + chess_target_pos = chess_GetNextMarked(255, 0); + chess_state = CHESS_STATE_SELECT_TARGET_POS; + } + } + break; + case CHESS_STATE_SELECT_TARGET_POS: + if ( chess_key_cmd == CHESS_KEY_NEXT ) + { + chess_target_pos = chess_GetNextMarked(chess_target_pos, 0); + } + else if ( chess_key_cmd == CHESS_KEY_PREV ) + { + chess_target_pos = chess_GetNextMarked(chess_target_pos, 1); + } + else if ( chess_key_cmd == CHESS_KEY_BACK ) + { + chess_ClearMarks(); + chess_MarkMovable(); + chess_target_pos = ILLEGAL_POSITION; + chess_state = CHESS_STATE_SELECT_PIECE; + } + else if ( chess_key_cmd == CHESS_KEY_SELECT ) + { + chess_ManualMove(chess_source_pos, chess_target_pos); + if ( lrc_obj.is_game_end != 0 ) + chess_state = CHESS_STATE_GAME_END; + else + chess_state = CHESS_STATE_THINKING; + /* clear marks as some kind of feedback to the user... it simply looks better */ + chess_source_pos = ILLEGAL_POSITION; + chess_target_pos = ILLEGAL_POSITION; + chess_ClearMarks(); + } + break; + case CHESS_STATE_THINKING: + chess_ComputerMove(2); + if ( lrc_obj.is_game_end != 0 ) + chess_state = CHESS_STATE_GAME_END; + else + chess_state = CHESS_STATE_SELECT_START; + break; + case CHESS_STATE_GAME_END: + if ( chess_key_cmd != CHESS_KEY_NONE ) + { + chess_state = CHESS_STATE_MENU; + chess_SetupBoard(); + } + break; + } + +} + +#endif + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g.h b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g.h new file mode 100644 index 000000000..f5a0230ac --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g.h @@ -0,0 +1,1607 @@ +/* + + u8g.h + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#ifndef _U8G_H +#define _U8G_H + +//#define U8G_16BIT 1 + +#include + +#ifdef __18CXX +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef unsigned short uint16_t; +typedef signed short int16_t; +#else +#include +#endif + +#if defined(__AVR__) +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/*===============================================================*/ +#ifdef __GNUC__ +#define U8G_NOINLINE __attribute__((noinline)) +#define U8G_PURE __attribute__ ((pure)) +#define U8G_NOCOMMON __attribute__ ((nocommon)) +#define U8G_SECTION(name) __attribute__ ((section (name))) +#else +#define U8G_NOINLINE +#define U8G_PURE +#define U8G_NOCOMMON +#define U8G_SECTION(name) +#endif + +/*===============================================================*/ +/* flash memory access */ + +#if defined(__AVR__) +/* U8G_PROGMEM is used by the XBM example */ +#define U8G_PROGMEM U8G_SECTION(".progmem.data") +typedef uint8_t PROGMEM u8g_pgm_uint8_t; +typedef uint8_t u8g_fntpgm_uint8_t; +#define u8g_pgm_read(adr) pgm_read_byte_near(adr) +#define U8G_PSTR(s) ((u8g_pgm_uint8_t *)PSTR(s)) +#else +#define U8G_PROGMEM +#define PROGMEM +typedef uint8_t u8g_pgm_uint8_t; +typedef uint8_t u8g_fntpgm_uint8_t; +#define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr)) +#define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s)) +#endif + +/*===============================================================*/ +/* forward */ +typedef struct _u8g_t u8g_t; +typedef struct _u8g_dev_t u8g_dev_t; + +typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; +typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; +typedef struct _u8g_box_t u8g_box_t; + + +/*===============================================================*/ +/* generic */ +#if defined(U8G_16BIT) +typedef uint16_t u8g_uint_t; +typedef int16_t u8g_int_t; +#else +typedef uint8_t u8g_uint_t; +typedef int8_t u8g_int_t; +#endif + +#ifdef OBSOLETE +struct _u8g_box_t +{ + u8g_uint_t x0, y0, x1, y1; +}; +typedef struct _u8g_box_t u8g_box_t; +#endif /* OBSOLETE */ + + +/*===============================================================*/ +/* device structure */ + +#ifdef __XC8 +/* device prototype */ +typedef uint8_t (*u8g_dev_fnptr)(void *u8g, void *dev, uint8_t msg, void *arg); + +/* com prototype */ +typedef uint8_t (*u8g_com_fnptr)(void *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +#else +/* device prototype */ +typedef uint8_t (*u8g_dev_fnptr)(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* com prototype */ +typedef uint8_t (*u8g_com_fnptr)(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +#endif + + + +struct _u8g_dev_t +{ + u8g_dev_fnptr dev_fn; /* device procedure */ + void *dev_mem; /* device memory */ + u8g_com_fnptr com_fn; /* communication procedure */ +}; + + +/*===============================================================*/ +/* device list */ + +/* Size: 128x64 SDL, u8g_dev_sdl.c */ +extern u8g_dev_t u8g_dev_sdl_1bit; +extern u8g_dev_t u8g_dev_sdl_1bit_h; +extern u8g_dev_t u8g_dev_sdl_2bit; +extern u8g_dev_t u8g_dev_sdl_2bit_double_mem; +extern u8g_dev_t u8g_dev_sdl_8bit; +int u8g_sdl_get_key(void); + +/* Size: 70x30 monochrom, stdout */ +extern u8g_dev_t u8g_dev_stdout; + +/* Size: monochrom, writes "u8g.pbm" */ +extern u8g_dev_t u8g_dev_pbm; +extern u8g_dev_t u8g_dev_pbm_8h1; +extern u8g_dev_t u8g_dev_pbm_8h2; /* grayscale simulation */ + +/* Size: 128x64 monochrom, no output, used for performance measure */ +extern u8g_dev_t u8g_dev_gprof; + +/* Display: EA DOGS102, Size: 102x64 monochrom */ +extern u8g_dev_t u8g_dev_uc1701_dogs102_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_dogs102_hw_spi; + +/* Display: Mini12864 (dealextreme), Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_uc1701_mini12864_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_mini12864_hw_spi; + +/* Display: EA DOGM132, Size: 128x32 monochrom */ +extern u8g_dev_t u8g_dev_st7565_dogm132_sw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm132_hw_spi; + +/* Display: EA DOGM128, Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_st7565_dogm128_sw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm128_hw_spi; +/* Display: Topway LM6063 128x64 */ +extern u8g_dev_t u8g_dev_st7565_lm6063_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6063_hw_spi; +/* Display: Topway LM6059 128x64 (Adafruit) */ +extern u8g_dev_t u8g_dev_st7565_lm6059_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6059_hw_spi; +/* Display: Newhaven NHD-C12864 */ +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_sw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_hw_spi; +/* Display: Newhaven NHD-C12832 */ +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_sw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_parallel; +/* Display: Displaytech 64128N */ +extern u8g_dev_t u8g_dev_st7565_64128n_sw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_hw_spi; + +/* dfrobot 128x64 Graphic LCD (SKU:FIT0021) */ +extern u8g_dev_t u8g_dev_st7920_128x64_sw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_hw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_8bit; + +extern u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_128x64_4x_8bit; + +/* NHD-19232WG */ +extern u8g_dev_t u8g_dev_st7920_192x32_sw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_hw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_8bit; + +extern u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_192x32_4x_8bit; + +/* CrystalFontz CFAG20232 */ +extern u8g_dev_t u8g_dev_st7920_202x32_sw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_hw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_8bit; + +extern u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi; +extern u8g_dev_t u8g_dev_st7920_202x32_4x_8bit; + +/* LC7981 160x80 display */ +extern u8g_dev_t u8g_dev_lc7981_160x80_8bit; +/* LC7981 240x64 display */ +extern u8g_dev_t u8g_dev_lc7981_240x64_8bit; +/* LC7981 240x128 display */ +extern u8g_dev_t u8g_dev_lc7981_240x128_8bit; +/* LC7981 320x64 display */ +extern u8g_dev_t u8g_dev_lc7981_320x64_8bit; + +/* T6963, all t6963 devices have double page (2x) */ +extern u8g_dev_t u8g_dev_t6963_240x128_8bit; +extern u8g_dev_t u8g_dev_t6963_240x64_8bit; +extern u8g_dev_t u8g_dev_t6963_128x64_8bit; + +/* Display: EA DOGXL160, Size: 160x104 monochrom & gray level */ +extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_bw_hw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_gr_hw_spi; + +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi; + +/* Display: Generic KS0108b, Size: 128x64 monochrom */ +extern u8g_dev_t u8g_dev_ks0108_128x64; /* official Arduino Library interface */ +extern u8g_dev_t u8g_dev_ks0108_128x64_fast; /* faster, but uses private tables from the Arduino Library */ + +/* Nokia 84x48 Display with PCD8544 */ +extern u8g_dev_t u8g_dev_pcd8544_84x48_sw_spi; +extern u8g_dev_t u8g_dev_tls8204_84x48_sw_spi; + +/* Nokia 96x65 Display with PCF8812 */ +extern u8g_dev_t u8g_dev_pcf8812_96x65_sw_spi; + +/* NHD-2.7-12864UCY3 OLED Display with SSD1325 Controller */ +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_bw_parallel; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_gr_hw_spi; + +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi; + +/* LY120 OLED with SSD1327 Controller (tested with Seeedstudio module) */ +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_gr_i2c; + +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c; + +/* NHD-3.12-25664 OLED Display with SSD1322 Controller */ +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_bw_hw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi; + +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_gr_hw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi; +extern u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi; + +/* OLED 128x64 Display with SSD1306 Controller */ +extern u8g_dev_t u8g_dev_ssd1306_128x64_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_i2c; + +/* OLED 128x64 Display with SSD1309 Controller */ +extern u8g_dev_t u8g_dev_ssd1309_128x64_sw_spi; +extern u8g_dev_t u8g_dev_ssd1309_128x64_hw_spi; +extern u8g_dev_t u8g_dev_ssd1309_128x64_i2c; + +/* OLED 128x32 Display with SSD1306 Controller */ +extern u8g_dev_t u8g_dev_ssd1306_128x32_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_i2c; + +/* experimental 65K TFT with st7687 controller */ +extern u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi; +extern u8g_dev_t u8g_dev_st7687_c144mvgd_8bit; + +/* SBN1661/SED1520 display with 122x32 */ +extern u8g_dev_t u8g_dev_sbn1661_122x32; + +/* flip disc matrix */ +extern u8g_dev_t u8g_dev_flipdisc_2x7; +void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2)); + +/* ILI9325D based TFT */ +extern u8g_dev_t u8g_dev_ili9325d_320x240_8bit; + +/* u8g_virtual_screen.c */ +extern u8g_dev_t u8g_dev_vs; + + +/*===============================================================*/ +/* device messages */ + +struct _u8g_dev_arg_pixel_t +{ + u8g_uint_t x, y; /* will be modified */ + uint8_t pixel; /* will be modified */ + uint8_t dir; + uint8_t color; +}; +/* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */ /* forward decl */ + +struct _u8g_dev_arg_bbx_t +{ + u8g_uint_t x, y, w, h; +}; +/* typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; */ /* forward decl */ + +struct _u8g_box_t +{ + u8g_uint_t x0, y0, x1, y1; +}; +/* typedef struct _u8g_box_t u8g_box_t; */ /* forward decl */ + + +#define U8G_DEV_MSG_INIT 10 +#define U8G_DEV_MSG_STOP 11 + +/* arg: pointer to uint8_t, contranst value between 0 and 255 */ +#define U8G_DEV_MSG_CONTRAST 15 + +#define U8G_DEV_MSG_SLEEP_ON 16 +#define U8G_DEV_MSG_SLEEP_OFF 17 + +#define U8G_DEV_MSG_PAGE_FIRST 20 +#define U8G_DEV_MSG_PAGE_NEXT 21 + +/* arg: u8g_dev_arg_bbx_t * */ +/* new algorithm with U8G_DEV_MSG_GET_PAGE_BOX makes this msg obsolete */ +/* #define U8G_DEV_MSG_IS_BBX_INTERSECTION 22 */ + +/* arg: u8g_box_t *, fill structure with current page properties */ +#define U8G_DEV_MSG_GET_PAGE_BOX 23 + +/* +#define U8G_DEV_MSG_PRIMITIVE_START 30 +#define U8G_DEV_MSG_PRIMITIVE_END 31 +*/ + +/* arg: u8g_dev_arg_pixel_t * */ +#define U8G_DEV_MSG_SET_PIXEL 50 +#define U8G_DEV_MSG_SET_8PIXEL 59 + +#define U8G_DEV_MSG_SET_COLOR_INDEX 60 + +#define U8G_DEV_MSG_SET_XY_CB 61 + +#define U8G_DEV_MSG_GET_WIDTH 70 +#define U8G_DEV_MSG_GET_HEIGHT 71 +#define U8G_DEV_MSG_GET_MODE 72 + +/*===============================================================*/ +/* device modes */ +#define U8G_MODE(is_color, bits_per_pixel) (((is_color)<<4)|(bits_per_pixel)) + +#define U8G_MODE_UNKNOWN 0 +#define U8G_MODE_BW U8G_MODE(0, 1) +#define U8G_MODE_GRAY2BIT U8G_MODE(0, 2) +#define U8G_MODE_R3G3B2 U8G_MODE(1, 8) + +#define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&15) +#define U8G_MODE_IS_COLOR(mode) (((mode)&16)==0?0:1) + + +/*===============================================================*/ +/* com options */ + +/* uncomment the following line for Atmega HW SPI double speed, issue 89 */ +/* #define U8G_HW_SPI_2X 1 */ + +/* com messages */ + +#define U8G_COM_MSG_STOP 0 +#define U8G_COM_MSG_INIT 1 + +#define U8G_COM_MSG_ADDRESS 2 + +/* CHIP_SELECT argument: number of the chip which needs to be activated, so this is more like high active */ +#define U8G_COM_MSG_CHIP_SELECT 3 + +#define U8G_COM_MSG_RESET 4 + +#define U8G_COM_MSG_WRITE_BYTE 5 +#define U8G_COM_MSG_WRITE_SEQ 6 +#define U8G_COM_MSG_WRITE_SEQ_P 7 + + +/* com driver */ +uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_null.c */ +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_std_sw_spi.c */ +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_sw_spi.c */ +uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_hw_spi.c */ +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_spi.c */ +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_hw_spi.c */ +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_parallel.c */ +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_fast_parallel.c */ +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_port_d_wr.c */ +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_no_en_parallel.c */ +uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_ssd_i2c.c */ +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_t6963.c */ + + +uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_hw_spi.c */ +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_sw_spi.c */ +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_st7920_spi.c */ +uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_parallel.c */ + + +/* + Translation of system specific com drives to generic com names + At the moment, the following generic com drives are available + U8G_COM_HW_SPI + U8G_COM_SW_SPI + U8G_COM_PARALLEL + U8G_COM_T6963 + U8G_COM_FAST_PARALLEL + U8G_COM_SSD_I2C + +defined(__18CXX) || defined(__PIC32MX) + +*/ +/* ==== HW SPI, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn +#elif defined(__18CXX) || defined(__PIC32MX) +#define U8G_COM_HW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#endif +#endif +/* ==== HW SPI, not Arduino ====*/ +#ifndef U8G_COM_HW_SPI +#if defined(__AVR__) +#define U8G_COM_HW_SPI u8g_com_atmega_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_atmega_st7920_hw_spi_fn +#endif +#endif +#ifndef U8G_COM_HW_SPI +#define U8G_COM_HW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#endif + +/* ==== SW SPI, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#elif defined(__18CXX) || defined(__PIC32MX) +#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#elif defined(__arm__) /* Arduino Due */ +#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn +#endif +#endif + +#ifndef U8G_COM_SW_SPI +/* ==== SW SPI, not Arduino ====*/ +#if defined(__AVR__) +#define U8G_COM_SW_SPI u8g_com_atmega_sw_spi_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_atmega_st7920_sw_spi_fn +#endif +#endif +#ifndef U8G_COM_SW_SPI +#define U8G_COM_SW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_SW_SPI u8g_com_null_fn +#endif + +/* ==== Parallel iinterface, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_arduino_fast_parallel_fn +#define U8G_COM_T6963 u8g_com_arduino_t6963_fn +#else /* Arduino Due, Chipkit PIC32 */ +#define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_arduino_parallel_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif +#endif +#ifndef U8G_COM_PARALLEL +#if defined(__AVR__) +#define U8G_COM_PARALLEL u8g_com_atmega_parallel_fn +#define U8G_COM_FAST_PARALLEL u8g_com_atmega_parallel_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif +#endif +#ifndef U8G_COM_PARALLEL +#define U8G_COM_PARALLEL u8g_com_null_fn +#define U8G_COM_FAST_PARALLEL u8g_com_null_fn +#define U8G_COM_T6963 u8g_com_null_fn +#endif + +#if defined(ARDUINO) +#if defined(__AVR__) +#define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn +#endif +#endif + +#ifndef U8G_COM_SSD_I2C +#if defined(__AVR__) +/* AVR variant can use the arduino version at the moment */ +#define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn +#endif +#endif +#ifndef U8G_COM_SSD_I2C +#define U8G_COM_SSD_I2C u8g_com_null_fn +#endif + + + +/*===============================================================*/ +/* com api */ +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev); +void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev); +void u8g_EnableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */ +void u8g_DisableCom(u8g_t *u8g, u8g_dev_t *dev); /* obsolete */ +void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs); +void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev); +void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev); +void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address); +uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val); +uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq); +uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq); + + + +#define U8G_ESC_DLY(x) 255, ((x) & 0x7f) +#define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f)) +#define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f)) +#define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f)) +#define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01)) +#define U8G_ESC_END 255, 254 +#define U8G_ESC_255 255, 255 +//uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, u8g_pgm_uint8_t *esc_seq); +uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq); + + +/* u8g_com_api_16gr.c */ +uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b); +uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr); +uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b); +uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr); + + +/*===============================================================*/ +/* u8g_arduino_common.c */ +void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value); +void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g); + +/*===============================================================*/ +/* u8g_com_io.c */ + +/* create internal number from port and pin */ +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos); +#define PN(port,bitpos) u8g_Pin(port,bitpos) + +/* low level procedures */ +void u8g_SetPinOutput(uint8_t internal_pin_number); +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level); +void u8g_SetPinInput(uint8_t internal_pin_number); +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number); + +/* u8g level procedures, expect U8G_PI_xxx macro */ +void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi); +void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level); + + +/*===============================================================*/ +/* page */ +struct _u8g_page_t +{ + u8g_uint_t page_height; + u8g_uint_t total_height; + u8g_uint_t page_y0; + u8g_uint_t page_y1; + uint8_t page; +}; +typedef struct _u8g_page_t u8g_page_t; + +void u8g_page_First(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */ +void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) U8G_NOINLINE; /* u8g_page.c */ +uint8_t u8g_page_Next(u8g_page_t *p) U8G_NOINLINE; /* u8g_page.c */ + +/*===============================================================*/ +/* page buffer (pb) */ + +struct _u8g_pb_t +{ + u8g_page_t p; + u8g_uint_t width; /* pixel width */ + void *buf; +}; +typedef struct _u8g_pb_t u8g_pb_t; + + +/* u8g_pb.c */ +void u8g_pb_Clear(u8g_pb_t *b); +uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx); +void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box); +uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel); +uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev); + +/* + note on __attribute__ ((nocommon)) + AVR scripts often use --gc-sections on the linker to remove unused section. + This works fine for initialed data and text sections. In principle .bss is also + handled, but the name##_pb definition is not removed. Reason is, that + array definitions are placed in the COMMON section, by default + The attribute "nocommon" removes this automatic assignment to the + COMMON section and directly puts it into .bss. As a result, if more + than one buffer is defined in one file, then it will be removed with --gc-sections + + .. not sure if Arduino IDE uses -fno-common... if yes, then the attribute is + redundant. +*/ +#define U8G_PB_DEV(name, width, height, page_height, dev_fn, com_fn) \ +uint8_t name##_buf[width] U8G_NOCOMMON ; \ +u8g_pb_t name##_pb = { {page_height, height, 0, 0, 0}, width, name##_buf}; \ +u8g_dev_t name = { dev_fn, &name##_pb, com_fn } + + +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8v1_Clear(u8g_pb_t *b) U8G_NOINLINE; + +uint8_t u8g_pb8v1_IsYIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb8v1_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1); +uint8_t u8g_pb8v1_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev); + +uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16v1.c */ +uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb14v1.c */ +uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb8v2.c */ +uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16v2.c (double memory of pb8v2) */ +uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +/* u8g_pb8h1.c */ +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16h1.c */ +uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb32h1.c */ +uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +/* u8g_pb8h2.c 8 pixel rows, byte has horzontal orientation */ +uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb16h2.c */ +uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + + +/* u8g_pb8h1f.c */ +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pb8h8.c */ +uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + + +/*===============================================================*/ +/* u8g_ll_api.c */ + +/* cursor draw callback */ +typedef void (*u8g_draw_cursor_fn)(u8g_t *u8g); + +/* vertical reference point calculation callback */ +typedef u8g_uint_t (*u8g_font_calc_vref_fnptr)(u8g_t *u8g); + +/* state backup and restore procedure */ +typedef void (*u8g_state_cb)(uint8_t msg); + + +/* PI = Pin Index */ + +/* reset pin, usually optional */ +#define U8G_PI_RESET 0 + +/* address / data or instruction */ +#define U8G_PI_A0 1 +#define U8G_PI_DI 1 + +/* chip select line */ +#define U8G_PI_CS 2 +#define U8G_PI_CS1 2 +#define U8G_PI_CS2 3 +/* Feb 2013: A0 state moved from 7 to 3 for t6963 controller*/ +#define U8G_PI_A0_STATE 3 + +/* enable / clock signal */ +#define U8G_PI_EN 4 +#define U8G_PI_CS_STATE 4 +#define U8G_PI_SCK 4 +#define U8G_PI_SCL 4 +#define U8G_PI_RD 4 + + +/* data pins, shared with SPI and I2C pins */ +#define U8G_PI_D0 5 +#define U8G_PI_MOSI 5 +#define U8G_PI_SDA 5 +#define U8G_PI_D1 6 +#define U8G_PI_MISO 6 +#define U8G_PI_D2 7 +#define U8G_PI_D3 8 +#define U8G_PI_SET_A0 8 +#define U8G_PI_D4 9 +#define U8G_PI_D5 10 +#define U8G_PI_I2C_OPTION 11 +#define U8G_PI_D6 11 +#define U8G_PI_D7 12 + +/* read/write pin, must be the last pin in the list, this means U8G_PIN_LIST_LEN = U8G_PI_RW + 1*/ +#define U8G_PI_WR 13 +#define U8G_PI_RW 13 + +#define U8G_PIN_LIST_LEN 14 + + +#define U8G_PIN_NONE 255 + +#define U8G_FONT_HEIGHT_MODE_TEXT 0 +#define U8G_FONT_HEIGHT_MODE_XTEXT 1 +#define U8G_FONT_HEIGHT_MODE_ALL 2 + +struct _u8g_t +{ + u8g_uint_t width; + u8g_uint_t height; + + + u8g_dev_t *dev; /* first device in the device chain */ + const u8g_pgm_uint8_t *font; /* regular font for all text procedures */ + const u8g_pgm_uint8_t *cursor_font; /* special font for cursor procedures */ + uint8_t cursor_fg_color, cursor_bg_color; + uint8_t cursor_encoding; + uint8_t mode; /* display mode, one of U8G_MODE_xxx */ + u8g_uint_t cursor_x; + u8g_uint_t cursor_y; + u8g_draw_cursor_fn cursor_fn; + + int8_t glyph_dx; + int8_t glyph_x; + int8_t glyph_y; + uint8_t glyph_width; + uint8_t glyph_height; + + u8g_font_calc_vref_fnptr font_calc_vref; + uint8_t font_height_mode; + int8_t font_ref_ascent; + int8_t font_ref_descent; + uint8_t font_line_spacing_factor; /* line_spacing = factor * (ascent - descent) / 64 */ + uint8_t line_spacing; + + u8g_dev_arg_pixel_t arg_pixel; + /* uint8_t color_index; */ + + uint8_t pin_list[U8G_PIN_LIST_LEN]; + + u8g_state_cb state_cb; + + u8g_box_t current_page; /* current box of the visible page */ + +}; + +#define u8g_GetFontAscent(u8g) ((u8g)->font_ref_ascent) +#define u8g_GetFontDescent(u8g) ((u8g)->font_ref_descent) +#define u8g_GetFontLineSpacing(u8g) ((u8g)->line_spacing) + +uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev); +void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev); +uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev); +uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast); +void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y); +void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); +uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); /* obsolete */ +u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev); +u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev); + +void u8g_UpdateDimension(u8g_t *u8g); +uint8_t u8g_Begin(u8g_t *u8g); /* reset device, put it into default state and call u8g_UpdateDimension() */ +uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev); /* only usefull if the device only as hardcoded ports */ +uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset); +uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset); +uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options); /* use U8G_I2C_OPT_NONE as options */ +uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset); +uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset); +uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset); +void u8g_FirstPage(u8g_t *u8g); +uint8_t u8g_NextPage(u8g_t *u8g); +uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast); +void u8g_SleepOn(u8g_t *u8g); +void u8g_SleepOff(u8g_t *u8g); +void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y); +void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel); + +uint8_t u8g_Stop(u8g_t *u8g); +void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx); +uint8_t u8g_GetColorIndex(u8g_t *u8g); + +uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g); +void u8g_SetDefaultForegroundColor(u8g_t *u8g); + +uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g); +void u8g_SetDefaultBackgroundColor(u8g_t *u8g); + +uint8_t u8g_GetDefaultMidColor(u8g_t *u8g); +void u8g_SetDefaultMidColor(u8g_t *u8g); + +#define u8g_GetWidth(u8g) ((u8g)->width) +#define u8g_GetHeight(u8g) ((u8g)->height) +#define u8g_GetMode(u8g) ((u8g)->mode) +/* + U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(u8g)) + U8G_MODE_IS_COLOR(u8g_GetMode(u8g)) +*/ + +/* u8g_state.c */ +#define U8G_STATE_ENV_IDX 0 +#define U8G_STATE_U8G_IDX 1 +#define U8G_STATE_RESTORE 0 +#define U8G_STATE_BACKUP 1 +#define U8G_STATE_MSG_COMPOSE(cmd,idx) (((cmd)<<1) | (idx)) + +#define U8G_STATE_MSG_RESTORE_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_ENV_IDX) +#define U8G_STATE_MSG_BACKUP_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_ENV_IDX) +#define U8G_STATE_MSG_RESTORE_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_U8G_IDX) +#define U8G_STATE_MSG_BACKUP_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_U8G_IDX) + +#define U8G_STATE_MSG_GET_IDX(msg) ((msg)&1) +#define U8G_STATE_MSG_IS_BACKUP(msg) ((msg)&2) + + + +void u8g_state_dummy_cb(uint8_t msg); +void u8g_backup_avr_spi(uint8_t msg); /* backup SPI state on atmel avr controller */ + +void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb); + +/* u8g_clip.c */ + +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); + + +/* u8g_rot.c */ + +void u8g_UndoRotation(u8g_t *u8g); +void u8g_SetRot90(u8g_t *u8g); +void u8g_SetRot180(u8g_t *u8g); +void u8g_SetRot270(u8g_t *u8g); + +/* u8g_scale.c */ + +void u8g_UndoScale(u8g_t *u8g); +void u8g_SetScale2x2(u8g_t *u8g); + + +/* u8g_font.c */ + +size_t u8g_font_GetSize(const void *font); +uint8_t u8g_font_GetFontStartEncoding(const void *font) U8G_NOINLINE; +uint8_t u8g_font_GetFontEndEncoding(const void *font) U8G_NOINLINE; + +void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font); + +uint8_t u8g_GetFontBBXWidth(u8g_t *u8g); +uint8_t u8g_GetFontBBXHeight(u8g_t *u8g); +int8_t u8g_GetFontBBXOffX(u8g_t *u8g); +int8_t u8g_GetFontBBXOffY(u8g_t *u8g); +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g); + +uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding); +int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding); + +int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); /* used by u8g_cursor.c */ + +int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding); +int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding); + +u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); +u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); + +u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s); + + +u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s); + + +void u8g_SetFontRefHeightText(u8g_t *u8g); +void u8g_SetFontRefHeightExtendedText(u8g_t *u8g); +void u8g_SetFontRefHeightAll(u8g_t *u8g); +void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor); + +u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g); +u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g); + +void u8g_SetFontPosBaseline(u8g_t *u8g); +void u8g_SetFontPosBottom(u8g_t *u8g); +void u8g_SetFontPosCenter(u8g_t *u8g); +void u8g_SetFontPosTop(u8g_t *u8g); + + +u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s); +u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s); +int8_t u8g_GetStrX(u8g_t *u8g, const char *s); +int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s); +u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s); +u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s); + +u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s); + +void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); +void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); + +/* u8g_rect.c */ + +void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; + +void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w); +void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w); +void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); +void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h); + +void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r); +void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r); + +/* u8g_bitmap.c */ + +void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap); +void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap); +void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap); +void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap); + +void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap); +void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap); + + +/* u8g_line.c */ +void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2); + + +/* u8g_circle.c */ + +/* the following, commented code has been rewritten or is not yet finished +#define U8G_CIRC_UPPER_RIGHT 0x01 +#define U8G_CIRC_UPPER_LEFT 0x02 +#define U8G_CIRC_LOWER_LEFT 0x04 +#define U8G_CIRC_LOWER_RIGHT 0x08 +#define U8G_CIRC_ALL (U8G_CIRC_UPPER_RIGHT|U8G_CIRC_UPPER_LEFT|U8G_CIRC_LOWER_RIGHT|U8G_CIRC_LOWER_LEFT) +void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1); +*/ + +#define U8G_DRAW_UPPER_RIGHT 0x01 +#define U8G_DRAW_UPPER_LEFT 0x02 +#define U8G_DRAW_LOWER_LEFT 0x04 +#define U8G_DRAW_LOWER_RIGHT 0x08 +#define U8G_DRAW_ALL (U8G_DRAW_UPPER_RIGHT|U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_RIGHT|U8G_DRAW_LOWER_LEFT) + +void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE; +void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) U8G_NOINLINE; + +void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); +void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option); + +/* u8g_clip.c */ +uint8_t u8g_is_box_bbx_intersection(u8g_box_t *box, u8g_dev_arg_bbx_t *bbx); + + +/* u8g_cursor.c */ +void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font); +void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding); +void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y); +void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg); +void u8g_EnableCursor(u8g_t *u8g); +void u8g_DisableCursor(u8g_t *u8g); +void u8g_DrawCursor(u8g_t *u8g); + + + +/*===============================================================*/ +/* u8g_virtual_screen.c */ +void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height); +uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g); + +/*===============================================================*/ +void st_Draw(uint8_t fps); +void st_Step(uint8_t player_pos, uint8_t is_auto_fire, uint8_t is_fire); + +/*===============================================================*/ +/* u8g_com_i2c.c */ + +/* options for u8g_i2c_init() */ +#define U8G_I2C_OPT_NONE 0 + +/* retrun values from u8g_twi_get_error() */ +#define U8G_I2C_ERR_NONE 0x00 +/* the following values are bit masks */ +#define U8G_I2C_ERR_TIMEOUT 0x01 +#define U8G_I2C_ERR_BUS 0x02 + +void u8g_i2c_clear_error(void) U8G_NOINLINE; +uint8_t u8g_i2c_get_error(void) U8G_NOINLINE; +uint8_t u8g_i2c_get_err_pos(void) U8G_NOINLINE; +void u8g_i2c_init(uint8_t options) U8G_NOINLINE; /* use U8G_I2C_OPT_NONE as options */ +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) U8G_NOINLINE; +uint8_t u8g_i2c_start(uint8_t sla) U8G_NOINLINE; +uint8_t u8g_i2c_send_byte(uint8_t data) U8G_NOINLINE; +void u8g_i2c_stop(void) U8G_NOINLINE; + + +/*===============================================================*/ +/* u8g_u8toa.c */ +/* v = value, d = number of digits */ +const char *u8g_u8toa(uint8_t v, uint8_t d); + +/* u8g_u8toa.c */ +/* v = value, d = number of digits */ +const char *u8g_u16toa(uint16_t v, uint8_t d); + +/*===============================================================*/ +/* u8g_delay.c */ + +/* delay by the specified number of milliseconds */ +void u8g_Delay(uint16_t val); + +/* delay by one microsecond */ +void u8g_MicroDelay(void); + +/* delay by 10 microseconds */ +void u8g_10MicroDelay(void); + +/*===============================================================*/ +/* chessengine.c */ +#define CHESS_KEY_NONE 0 +#define CHESS_KEY_NEXT 1 +#define CHESS_KEY_PREV 2 +#define CHESS_KEY_SELECT 3 +#define CHESS_KEY_BACK 4 + +void chess_Init(u8g_t *u8g, uint8_t empty_body_color); +void chess_Draw(void); +void chess_Step(uint8_t keycode); + +/*===============================================================*/ +/* font definitions */ + +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_5[] U8G_SECTION(".progmem.u8g_font_m2icon_5"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_SECTION(".progmem.u8g_font_m2icon_7"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_SECTION(".progmem.u8g_font_m2icon_9"); + +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_SECTION(".progmem.u8g_font_u8glib_4"); +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_SECTION(".progmem.u8g_font_u8glib_4r"); + + +extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_SECTION(".progmem.u8g_font_6x12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_SECTION(".progmem.u8g_font_6x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_SECTION(".progmem.u8g_font_7x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_SECTION(".progmem.u8g_font_8x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_SECTION(".progmem.u8g_font_9x15_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_SECTION(".progmem.u8g_font_9x18_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_SECTION(".progmem.u8g_font_cu12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_SECTION(".progmem.u8g_font_unifont_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_SECTION(".progmem.u8g_font_10x20_75r"); + +extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_SECTION(".progmem.u8g_font_10x20_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_SECTION(".progmem.u8g_font_10x20_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_SECTION(".progmem.u8g_font_10x20"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_SECTION(".progmem.u8g_font_10x20r"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_SECTION(".progmem.u8g_font_4x6"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_SECTION(".progmem.u8g_font_4x6r"); +//extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_SECTION(".progmem.u8g_font_4x6n"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_SECTION(".progmem.u8g_font_5x7"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_SECTION(".progmem.u8g_font_5x7r"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_SECTION(".progmem.u8g_font_5x8"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_SECTION(".progmem.u8g_font_5x8r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_SECTION(".progmem.u8g_font_6x10"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_SECTION(".progmem.u8g_font_6x10r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_SECTION(".progmem.u8g_font_6x12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_SECTION(".progmem.u8g_font_6x12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_SECTION(".progmem.u8g_font_6x12"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_SECTION(".progmem.u8g_font_6x12r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_SECTION(".progmem.u8g_font_6x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_SECTION(".progmem.u8g_font_6x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_SECTION(".progmem.u8g_font_6x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_SECTION(".progmem.u8g_font_6x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_SECTION(".progmem.u8g_font_6x13"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_SECTION(".progmem.u8g_font_6x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_SECTION(".progmem.u8g_font_6x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_SECTION(".progmem.u8g_font_6x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_SECTION(".progmem.u8g_font_7x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_SECTION(".progmem.u8g_font_7x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_SECTION(".progmem.u8g_font_7x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_SECTION(".progmem.u8g_font_7x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_SECTION(".progmem.u8g_font_7x13"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_SECTION(".progmem.u8g_font_7x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_SECTION(".progmem.u8g_font_7x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_SECTION(".progmem.u8g_font_7x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_SECTION(".progmem.u8g_font_7x14B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_SECTION(".progmem.u8g_font_7x14Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_SECTION(".progmem.u8g_font_7x14"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_SECTION(".progmem.u8g_font_7x14r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_SECTION(".progmem.u8g_font_8x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_SECTION(".progmem.u8g_font_8x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_SECTION(".progmem.u8g_font_8x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_SECTION(".progmem.u8g_font_8x13"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_SECTION(".progmem.u8g_font_8x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_SECTION(".progmem.u8g_font_8x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_SECTION(".progmem.u8g_font_8x13Or"); + +extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_SECTION(".progmem.u8g_font_9x15_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_SECTION(".progmem.u8g_font_9x15_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_SECTION(".progmem.u8g_font_9x15B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_SECTION(".progmem.u8g_font_9x15Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_SECTION(".progmem.u8g_font_9x15"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_SECTION(".progmem.u8g_font_9x15r"); + +extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_SECTION(".progmem.u8g_font_9x18_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_SECTION(".progmem.u8g_font_9x18_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_SECTION(".progmem.u8g_font_9x18B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_SECTION(".progmem.u8g_font_9x18"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_SECTION(".progmem.u8g_font_9x18Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_SECTION(".progmem.u8g_font_9x18r"); + +extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_SECTION(".progmem.u8g_font_cursor"); +extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_SECTION(".progmem.u8g_font_cursorr"); +extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_SECTION(".progmem.u8g_font_micro"); + +extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_SECTION(".progmem.u8g_font_cu12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_SECTION(".progmem.u8g_font_cu12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_SECTION(".progmem.u8g_font_cu12"); + +/* + Free-Universal Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_fub11[] U8G_SECTION(".progmem.u8g_font_fub11"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_SECTION(".progmem.u8g_font_fub11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_SECTION(".progmem.u8g_font_fub11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_SECTION(".progmem.u8g_font_fub14"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_SECTION(".progmem.u8g_font_fub14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_SECTION(".progmem.u8g_font_fub14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_SECTION(".progmem.u8g_font_fub17"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_SECTION(".progmem.u8g_font_fub17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_SECTION(".progmem.u8g_font_fub17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_SECTION(".progmem.u8g_font_fub20"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_SECTION(".progmem.u8g_font_fub20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_SECTION(".progmem.u8g_font_fub20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_SECTION(".progmem.u8g_font_fub25"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_SECTION(".progmem.u8g_font_fub25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_SECTION(".progmem.u8g_font_fub25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_SECTION(".progmem.u8g_font_fub30"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_SECTION(".progmem.u8g_font_fub30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_SECTION(".progmem.u8g_font_fub30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_SECTION(".progmem.u8g_font_fub35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_SECTION(".progmem.u8g_font_fub42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_SECTION(".progmem.u8g_font_fub49n"); + +/* + Free-Universal Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_fur11[] U8G_SECTION(".progmem.u8g_font_fur11"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_SECTION(".progmem.u8g_font_fur11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_SECTION(".progmem.u8g_font_fur11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_SECTION(".progmem.u8g_font_fur14"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_SECTION(".progmem.u8g_font_fur14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_SECTION(".progmem.u8g_font_fur14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_SECTION(".progmem.u8g_font_fur17"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_SECTION(".progmem.u8g_font_fur17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_SECTION(".progmem.u8g_font_fur17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_SECTION(".progmem.u8g_font_fur20"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_SECTION(".progmem.u8g_font_fur20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_SECTION(".progmem.u8g_font_fur20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_SECTION(".progmem.u8g_font_fur25"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_SECTION(".progmem.u8g_font_fur25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_SECTION(".progmem.u8g_font_fur25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_SECTION(".progmem.u8g_font_fur30"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_SECTION(".progmem.u8g_font_fur30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_SECTION(".progmem.u8g_font_fur30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_SECTION(".progmem.u8g_font_fur35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_SECTION(".progmem.u8g_font_fur42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_SECTION(".progmem.u8g_font_fur49n"); + +/* + Gentium Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11[] U8G_SECTION(".progmem.u8g_font_gdb11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_SECTION(".progmem.u8g_font_gdb12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_SECTION(".progmem.u8g_font_gdb14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_SECTION(".progmem.u8g_font_gdb17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_SECTION(".progmem.u8g_font_gdb20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_SECTION(".progmem.u8g_font_gdb25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_SECTION(".progmem.u8g_font_gdb30"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_SECTION(".progmem.u8g_font_gdb11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_SECTION(".progmem.u8g_font_gdb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_SECTION(".progmem.u8g_font_gdb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_SECTION(".progmem.u8g_font_gdb17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_SECTION(".progmem.u8g_font_gdb20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_SECTION(".progmem.u8g_font_gdb25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_SECTION(".progmem.u8g_font_gdb30r"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_SECTION(".progmem.u8g_font_gdb11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_SECTION(".progmem.u8g_font_gdb12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_SECTION(".progmem.u8g_font_gdb14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_SECTION(".progmem.u8g_font_gdb17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_SECTION(".progmem.u8g_font_gdb20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_SECTION(".progmem.u8g_font_gdb25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_SECTION(".progmem.u8g_font_gdb30n"); + +/* + Gentium Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9[] U8G_SECTION(".progmem.u8g_font_gdr9"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_SECTION(".progmem.u8g_font_gdr10"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_SECTION(".progmem.u8g_font_gdr11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_SECTION(".progmem.u8g_font_gdr12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_SECTION(".progmem.u8g_font_gdr14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_SECTION(".progmem.u8g_font_gdr17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_SECTION(".progmem.u8g_font_gdr20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_SECTION(".progmem.u8g_font_gdr25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_SECTION(".progmem.u8g_font_gdr30"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_SECTION(".progmem.u8g_font_gdr9r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_SECTION(".progmem.u8g_font_gdr10r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_SECTION(".progmem.u8g_font_gdr11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_SECTION(".progmem.u8g_font_gdr12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_SECTION(".progmem.u8g_font_gdr14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_SECTION(".progmem.u8g_font_gdr17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_SECTION(".progmem.u8g_font_gdr20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_SECTION(".progmem.u8g_font_gdr25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_SECTION(".progmem.u8g_font_gdr30r"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_SECTION(".progmem.u8g_font_gdr9n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_SECTION(".progmem.u8g_font_gdr10n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_SECTION(".progmem.u8g_font_gdr11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_SECTION(".progmem.u8g_font_gdr12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_SECTION(".progmem.u8g_font_gdr14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_SECTION(".progmem.u8g_font_gdr17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_SECTION(".progmem.u8g_font_gdr20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_SECTION(".progmem.u8g_font_gdr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_SECTION(".progmem.u8g_font_gdr30n"); + +/* + Old-Standard Bold + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_osb18[] U8G_SECTION(".progmem.u8g_font_osb18"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_SECTION(".progmem.u8g_font_osb21"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_SECTION(".progmem.u8g_font_osb26"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_SECTION(".progmem.u8g_font_osb29"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_SECTION(".progmem.u8g_font_osb35"); + +extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_SECTION(".progmem.u8g_font_osb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_SECTION(".progmem.u8g_font_osb21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_SECTION(".progmem.u8g_font_osb26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_SECTION(".progmem.u8g_font_osb29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_SECTION(".progmem.u8g_font_osb35r"); + +extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_SECTION(".progmem.u8g_font_osb18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_SECTION(".progmem.u8g_font_osb21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_SECTION(".progmem.u8g_font_osb26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_SECTION(".progmem.u8g_font_osb29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_SECTION(".progmem.u8g_font_osb35n"); + +/* + Old-Standard Regular + r: Reduced char set (codes 32 - 128) + n: Numbers (codes 42 - 57) + no char: Full set (codes 32 - 255) +*/ + +extern const u8g_fntpgm_uint8_t u8g_font_osr18[] U8G_SECTION(".progmem.u8g_font_osr18"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_SECTION(".progmem.u8g_font_osr21"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_SECTION(".progmem.u8g_font_osr26"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_SECTION(".progmem.u8g_font_osr29"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_SECTION(".progmem.u8g_font_osr35"); + +extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_SECTION(".progmem.u8g_font_osr18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_SECTION(".progmem.u8g_font_osr21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_SECTION(".progmem.u8g_font_osr26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_SECTION(".progmem.u8g_font_osr29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_SECTION(".progmem.u8g_font_osr35r"); + +extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_SECTION(".progmem.u8g_font_osr18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_SECTION(".progmem.u8g_font_osr21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_SECTION(".progmem.u8g_font_osr26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_SECTION(".progmem.u8g_font_osr29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_SECTION(".progmem.u8g_font_osr35n"); + +//extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_SECTION(".progmem.u8g_font_osr41"); + +/* GNU unifont */ + +extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_SECTION(".progmem.u8g_font_unifont_18_19"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_SECTION(".progmem.u8g_font_unifont_72_73"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_SECTION(".progmem.u8g_font_unifont_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_SECTION(".progmem.u8g_font_unifont_76"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_SECTION(".progmem.u8g_font_unifont_77"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_SECTION(".progmem.u8g_font_unifont_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_SECTION(".progmem.u8g_font_unifont_86"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_SECTION(".progmem.u8g_font_unifont"); +extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_SECTION(".progmem.u8g_font_unifontr"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_SECTION(".progmem.u8g_font_unifont_0_8"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_SECTION(".progmem.u8g_font_unifont_2_3"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_SECTION(".progmem.u8g_font_unifont_4_5"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_SECTION(".progmem.u8g_font_unifont_8_9"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_SECTION(".progmem.u8g_font_unifont_12_13"); + + +/* 04b fonts */ + +extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_SECTION(".progmem.u8g_font_04b_03b"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_SECTION(".progmem.u8g_font_04b_03bn"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_SECTION(".progmem.u8g_font_04b_03br"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_SECTION(".progmem.u8g_font_04b_03"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_SECTION(".progmem.u8g_font_04b_03n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_SECTION(".progmem.u8g_font_04b_03r"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_SECTION(".progmem.u8g_font_04b_24"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_SECTION(".progmem.u8g_font_04b_24n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_SECTION(".progmem.u8g_font_04b_24r"); + +/* orgdot fonts */ + +extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_SECTION(".progmem.u8g_font_orgv01"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_SECTION(".progmem.u8g_font_orgv01r"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_SECTION(".progmem.u8g_font_orgv01n"); + +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_SECTION(".progmem.u8g_font_fixed_v0"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_SECTION(".progmem.u8g_font_fixed_v0r"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_SECTION(".progmem.u8g_font_fixed_v0n"); + +extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_SECTION(".progmem.u8g_font_tpssb"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_SECTION(".progmem.u8g_font_tpssbr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_SECTION(".progmem.u8g_font_tpssbn"); + +extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_SECTION(".progmem.u8g_font_tpss"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_SECTION(".progmem.u8g_font_tpssr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_SECTION(".progmem.u8g_font_tpssn"); + +/* contributed */ + +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_SECTION(".progmem.u8g_font_freedoomr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_SECTION(".progmem.u8g_font_freedoomr10r"); + +/* adobe X11 */ +extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_SECTION(".progmem.u8g_font_courB08"); +extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_SECTION(".progmem.u8g_font_courB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_SECTION(".progmem.u8g_font_courB10"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_SECTION(".progmem.u8g_font_courB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_SECTION(".progmem.u8g_font_courB12"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_SECTION(".progmem.u8g_font_courB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_SECTION(".progmem.u8g_font_courB14"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_SECTION(".progmem.u8g_font_courB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_SECTION(".progmem.u8g_font_courB18"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_SECTION(".progmem.u8g_font_courB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_SECTION(".progmem.u8g_font_courB24"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_SECTION(".progmem.u8g_font_courB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_SECTION(".progmem.u8g_font_courB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_SECTION(".progmem.u8g_font_courR08"); +extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_SECTION(".progmem.u8g_font_courR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_SECTION(".progmem.u8g_font_courR10"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_SECTION(".progmem.u8g_font_courR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_SECTION(".progmem.u8g_font_courR12"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_SECTION(".progmem.u8g_font_courR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_SECTION(".progmem.u8g_font_courR14"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_SECTION(".progmem.u8g_font_courR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_SECTION(".progmem.u8g_font_courR18"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_SECTION(".progmem.u8g_font_courR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_SECTION(".progmem.u8g_font_courR24"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_SECTION(".progmem.u8g_font_courR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_SECTION(".progmem.u8g_font_courR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_SECTION(".progmem.u8g_font_helvB08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_SECTION(".progmem.u8g_font_helvB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_SECTION(".progmem.u8g_font_helvB10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_SECTION(".progmem.u8g_font_helvB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_SECTION(".progmem.u8g_font_helvB12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_SECTION(".progmem.u8g_font_helvB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_SECTION(".progmem.u8g_font_helvB14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_SECTION(".progmem.u8g_font_helvB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_SECTION(".progmem.u8g_font_helvB18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_SECTION(".progmem.u8g_font_helvB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_SECTION(".progmem.u8g_font_helvB24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_SECTION(".progmem.u8g_font_helvB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_SECTION(".progmem.u8g_font_helvB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_SECTION(".progmem.u8g_font_helvR08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_SECTION(".progmem.u8g_font_helvR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_SECTION(".progmem.u8g_font_helvR10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_SECTION(".progmem.u8g_font_helvR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_SECTION(".progmem.u8g_font_helvR12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_SECTION(".progmem.u8g_font_helvR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_SECTION(".progmem.u8g_font_helvR14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_SECTION(".progmem.u8g_font_helvR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_SECTION(".progmem.u8g_font_helvR18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_SECTION(".progmem.u8g_font_helvR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_SECTION(".progmem.u8g_font_helvR24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_SECTION(".progmem.u8g_font_helvR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_SECTION(".progmem.u8g_font_helvR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_SECTION(".progmem.u8g_font_ncenB08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_SECTION(".progmem.u8g_font_ncenB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_SECTION(".progmem.u8g_font_ncenB10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_SECTION(".progmem.u8g_font_ncenB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_SECTION(".progmem.u8g_font_ncenB12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_SECTION(".progmem.u8g_font_ncenB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_SECTION(".progmem.u8g_font_ncenB14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_SECTION(".progmem.u8g_font_ncenB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_SECTION(".progmem.u8g_font_ncenB18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_SECTION(".progmem.u8g_font_ncenB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_SECTION(".progmem.u8g_font_ncenB24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_SECTION(".progmem.u8g_font_ncenB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_SECTION(".progmem.u8g_font_ncenB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_SECTION(".progmem.u8g_font_ncenR08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_SECTION(".progmem.u8g_font_ncenR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_SECTION(".progmem.u8g_font_ncenR10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_SECTION(".progmem.u8g_font_ncenR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_SECTION(".progmem.u8g_font_ncenR12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_SECTION(".progmem.u8g_font_ncenR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_SECTION(".progmem.u8g_font_ncenR14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_SECTION(".progmem.u8g_font_ncenR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_SECTION(".progmem.u8g_font_ncenR18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_SECTION(".progmem.u8g_font_ncenR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_SECTION(".progmem.u8g_font_ncenR24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_SECTION(".progmem.u8g_font_ncenR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_SECTION(".progmem.u8g_font_ncenR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_SECTION(".progmem.u8g_font_symb08"); +extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_SECTION(".progmem.u8g_font_symb08r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_SECTION(".progmem.u8g_font_symb10"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_SECTION(".progmem.u8g_font_symb10r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_SECTION(".progmem.u8g_font_symb12"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_SECTION(".progmem.u8g_font_symb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_SECTION(".progmem.u8g_font_symb14"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_SECTION(".progmem.u8g_font_symb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_SECTION(".progmem.u8g_font_symb18"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_SECTION(".progmem.u8g_font_symb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_SECTION(".progmem.u8g_font_symb24"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_SECTION(".progmem.u8g_font_symb24r"); + +extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_SECTION(".progmem.u8g_font_timB08"); +extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_SECTION(".progmem.u8g_font_timB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_SECTION(".progmem.u8g_font_timB10"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_SECTION(".progmem.u8g_font_timB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_SECTION(".progmem.u8g_font_timB12"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_SECTION(".progmem.u8g_font_timB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_SECTION(".progmem.u8g_font_timB14"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_SECTION(".progmem.u8g_font_timB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_SECTION(".progmem.u8g_font_timB18"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_SECTION(".progmem.u8g_font_timB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_SECTION(".progmem.u8g_font_timB24"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_SECTION(".progmem.u8g_font_timB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_SECTION(".progmem.u8g_font_timB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_SECTION(".progmem.u8g_font_timR08"); +extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_SECTION(".progmem.u8g_font_timR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_SECTION(".progmem.u8g_font_timR10"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_SECTION(".progmem.u8g_font_timR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_SECTION(".progmem.u8g_font_timR12"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_SECTION(".progmem.u8g_font_timR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_SECTION(".progmem.u8g_font_timR14"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_SECTION(".progmem.u8g_font_timR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_SECTION(".progmem.u8g_font_timR18"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_SECTION(".progmem.u8g_font_timR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_SECTION(".progmem.u8g_font_timR24"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_SECTION(".progmem.u8g_font_timR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_SECTION(".progmem.u8g_font_timR24n"); + +/* fontstruct */ + +extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_SECTION(".progmem.u8g_font_p01type"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_SECTION(".progmem.u8g_font_p01typer"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_SECTION(".progmem.u8g_font_p01typen"); + +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternate"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternater"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_SECTION(".progmem.u8g_font_lucasfont_alternaten"); + +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfont[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfont"); +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfontr[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfontr"); +//extern const u8g_fntpgm_uint8_t u8g_font_fs_onebrickpixelfontn[] U8G_SECTION(".progmem.u8g_font_fs_onebrickpixelfontn"); + +extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_SECTION(".progmem.u8g_font_chikita"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_SECTION(".progmem.u8g_font_chikitar"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_SECTION(".progmem.u8g_font_chikitan"); + +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_SECTION(".progmem.u8g_font_pixelle_micro"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_SECTION(".progmem.u8g_font_pixelle_micror"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_SECTION(".progmem.u8g_font_pixelle_micron"); + +extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_SECTION(".progmem.u8g_font_trixel_square"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_SECTION(".progmem.u8g_font_trixel_squarer"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_SECTION(".progmem.u8g_font_trixel_squaren"); + +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_SECTION(".progmem.u8g_font_robot_de_niro"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_SECTION(".progmem.u8g_font_robot_de_niror"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_SECTION(".progmem.u8g_font_robot_de_niron"); + +extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_SECTION(".progmem.u8g_font_baby"); +extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_SECTION(".progmem.u8g_font_babyr"); +extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_SECTION(".progmem.u8g_font_babyn"); + +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_SECTION(".progmem.u8g_font_blipfest_07"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_SECTION(".progmem.u8g_font_blipfest_07r"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_SECTION(".progmem.u8g_font_blipfest_07n"); + +extern const u8g_fntpgm_uint8_t u8g_font_6x10_marlin[] U8G_SECTION(".progmem.u8g_font_6x10_marlin"); +extern const u8g_fntpgm_uint8_t u8g_font_6x9[] U8G_SECTION(".progmem.u8g_font_6x9"); + +#ifdef __cplusplus +} +#endif + +#endif /* _U8G_H */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_bitmap.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_bitmap.c new file mode 100644 index 000000000..dc742d1d7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_bitmap.c @@ -0,0 +1,177 @@ +/* + + u8g_bitmap.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap) +{ + while( cnt > 0 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, *bitmap); + bitmap++; + cnt--; + x+=8; + } +} + +void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, cnt*8, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHBitmap(u8g, x, y, cnt, bitmap); + bitmap += cnt; + y++; + h--; + } +} + + +void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap) +{ + while( cnt > 0 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, u8g_pgm_read(bitmap)); + bitmap++; + cnt--; + x+=8; + } +} + +void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, cnt*8, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHBitmapP(u8g, x, y, cnt, bitmap); + bitmap += cnt; + y++; + h--; + } +} + +/*=========================================================================*/ + +static void u8g_DrawHXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, const uint8_t *bitmap) +{ + uint8_t d; + x+=7; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 2, *bitmap); + bitmap++; + w-= 8; + x+=8; + } + if ( w > 0 ) + { + d = *bitmap; + x -= 7; + do + { + if ( d & 1 ) + u8g_DrawPixel(u8g, x, y); + x++; + w--; + d >>= 1; + } while ( w > 0 ); + } +} + +void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap) +{ + u8g_uint_t b; + b = w; + b += 7; + b >>= 3; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + while( h > 0 ) + { + u8g_DrawHXBM(u8g, x, y, w, bitmap); + bitmap += b; + y++; + h--; + } +} + +static void u8g_DrawHXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, const u8g_pgm_uint8_t *bitmap) +{ + uint8_t d; + x+=7; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 2, u8g_pgm_read(bitmap)); + bitmap++; + w-= 8; + x+=8; + } + if ( w > 0 ) + { + d = u8g_pgm_read(bitmap); + x -= 7; + do + { + if ( d & 1 ) + u8g_DrawPixel(u8g, x, y); + x++; + w--; + d >>= 1; + } while ( w > 0 ); + } +} + +void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap) +{ + u8g_uint_t b; + b = w; + b += 7; + b >>= 3; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + while( h > 0 ) + { + u8g_DrawHXBMP(u8g, x, y, w, bitmap); + bitmap += b; + y++; + h--; + } +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_circle.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_circle.c new file mode 100644 index 000000000..8f4a0525d --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_circle.c @@ -0,0 +1,382 @@ +/* + + u8g_circle.c + + Utility to draw empty and filled circles. + + Universal 8bit Graphics Library + + Copyright (c) 2011, bjthom@gmail.com + u8g_DrawCircle & u8g_DrawDisc by olikraus@gmail.com + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Addition to the U8G Library 02/25/12 + + +*/ + +#include "u8g.h" + +#ifdef OLD_CODE + +void circ_upperRight(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 + x, y0 - y); + u8g_DrawPixel(u8g, x0 + y, y0 - x); +} + +void circ_upperLeft(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 - x, y0 - y); + u8g_DrawPixel(u8g, x0 - y, y0 - x); +} + +void circ_lowerRight(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 + x, y0 + y); + u8g_DrawPixel(u8g, x0 + y, y0 + x); +} + +void circ_lowerLeft(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + u8g_DrawPixel(u8g, x0 - x, y0 + y); + u8g_DrawPixel(u8g, x0 - y, y0 + x); +} + +void circ_all(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0) { + circ_upperRight(u8g, x, y, x0, y0); + circ_upperLeft(u8g, x, y, x0, y0); + circ_lowerRight(u8g, x, y, x0, y0); + circ_lowerLeft(u8g, x, y, x0, y0); +} + +void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + if ( u8g_IsBBXIntersection(u8g, x0-rad-1, y0-rad-1, 2*rad+1, 2*rad+1) == 0) + return; + + int f = 1 - rad; + int ddF_x = 1; + int ddF_y = -2*rad; + uint8_t x = 0; + uint8_t y = rad; + + void ( *circ_util )(u8g_t *, u8g_uint_t, u8g_uint_t, u8g_uint_t, u8g_uint_t); + + switch (option) + { + case U8G_CIRC_UPPER_RIGHT: + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + circ_util = circ_upperRight; + break; + case U8G_CIRC_UPPER_LEFT: + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_upperLeft; + break; + case U8G_CIRC_LOWER_RIGHT: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + circ_util = circ_lowerRight; + break; + case U8G_CIRC_LOWER_LEFT: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_lowerLeft; + break; + default: + case U8G_CIRC_ALL: + u8g_DrawPixel(u8g, x0, y0 + rad); + u8g_DrawPixel(u8g, x0, y0 - rad); + u8g_DrawPixel(u8g, x0 + rad, y0); + u8g_DrawPixel(u8g, x0 - rad, y0); + circ_util = circ_all; + break; + } + + while( x < y ) + { + if(f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + circ_util(u8g, x, y, x0, y0); + } +} + + +void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + if ( u8g_IsBBXIntersection(u8g, x0-rad-1, y0-rad-1, 2*rad+1, 2*rad+1) == 0) + return; + + int f = 1 - rad; + int ddF_x = 1; + int ddF_y = -2*rad; + uint8_t x = 0; + uint8_t y = rad; + + // Draw vertical diameter at the horiz. center + // u8g_DrawVLine(u8g, x0, y0 - rad, 2*rad+1); + + if (option == U8G_CIRC_UPPER_LEFT || option == U8G_CIRC_UPPER_RIGHT) { + u8g_DrawVLine(u8g, x0, y0 - rad, rad+1); + } + else if (option == U8G_CIRC_LOWER_LEFT || option == U8G_CIRC_LOWER_RIGHT) { + u8g_DrawVLine(u8g, x0, y0, rad+1); + } + else { + u8g_DrawVLine(u8g, x0, y0 - rad, 2*rad+1); + } + + while( x < y ) + { + if(f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + //Draw vertical lines from one point to another + + switch (option) + { + case U8G_CIRC_UPPER_RIGHT: + u8g_DrawVLine(u8g, x0+x, y0-y, y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, x+1); + break; + case U8G_CIRC_UPPER_LEFT: + u8g_DrawVLine(u8g, x0-x, y0-y, y+1); + u8g_DrawVLine(u8g, x0-y, y0-x, x+1); + break; + case U8G_CIRC_LOWER_RIGHT: + u8g_DrawVLine(u8g, x0+x, y0, y+1); + u8g_DrawVLine(u8g, x0+y, y0, x+1); + break; + case U8G_CIRC_LOWER_LEFT: + u8g_DrawVLine(u8g, x0-x, y0, y+1); + u8g_DrawVLine(u8g, x0-y, y0, x+1); + break; + case U8G_CIRC_ALL: + u8g_DrawVLine(u8g, x0+x, y0-y, 2*y+1); + u8g_DrawVLine(u8g, x0-x, y0-y, 2*y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, 2*x+1); + u8g_DrawVLine(u8g, x0-y, y0-x, 2*x+1); + break; + } + } +} + +#endif + +/*=========================================================================*/ + +static void u8g_draw_circle_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) U8G_NOINLINE; + +static void u8g_draw_circle_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) +{ + /* upper right */ + if ( option & U8G_DRAW_UPPER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 - y); + u8g_DrawPixel(u8g, x0 + y, y0 - x); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 - y); + u8g_DrawPixel(u8g, x0 - y, y0 - x); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 + y); + u8g_DrawPixel(u8g, x0 + y, y0 + x); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 + y); + u8g_DrawPixel(u8g, x0 - y, y0 + x); + } +} + +void u8g_draw_circle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + u8g_int_t f; + u8g_int_t ddF_x; + u8g_int_t ddF_y; + u8g_uint_t x; + u8g_uint_t y; + + f = 1; + f -= rad; + ddF_x = 1; + ddF_y = 0; + ddF_y -= rad; + ddF_y *= 2; + x = 0; + y = rad; + + u8g_draw_circle_section(u8g, x, y, x0, y0, option); + + while ( x < y ) + { + if (f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + u8g_draw_circle_section(u8g, x, y, x0, y0, option); + } +} + +void u8g_DrawCircle(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t radp, radp2; + + radp = rad; + radp++; + radp2 = radp; + radp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-radp, y0-radp, radp2, radp2) == 0) + return; + } + + /* draw circle */ + u8g_draw_circle(u8g, x0, y0, rad, option); +} + +static void u8g_draw_disc_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) U8G_NOINLINE; + +static void u8g_draw_disc_section(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t x0, u8g_uint_t y0, uint8_t option) +{ + /* upper right */ + if ( option & U8G_DRAW_UPPER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0-y, y+1); + u8g_DrawVLine(u8g, x0+y, y0-x, x+1); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0-y, y+1); + u8g_DrawVLine(u8g, x0-y, y0-x, x+1); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0, y+1); + u8g_DrawVLine(u8g, x0+y, y0, x+1); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0, y+1); + u8g_DrawVLine(u8g, x0-y, y0, x+1); + } +} + +void u8g_draw_disc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + u8g_int_t f; + u8g_int_t ddF_x; + u8g_int_t ddF_y; + u8g_uint_t x; + u8g_uint_t y; + + f = 1; + f -= rad; + ddF_x = 1; + ddF_y = 0; + ddF_y -= rad; + ddF_y *= 2; + x = 0; + y = rad; + + u8g_draw_disc_section(u8g, x, y, x0, y0, option); + + while ( x < y ) + { + if (f >= 0) + { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + u8g_draw_disc_section(u8g, x, y, x0, y0, option); + } +} + +void u8g_DrawDisc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t radp, radp2; + + radp = rad; + radp++; + radp2 = radp; + radp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-radp, y0-radp, radp2, radp2) == 0) + return; + } + + /* draw disc */ + u8g_draw_disc(u8g, x0, y0, rad, option); +} + + + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_clip.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_clip.c new file mode 100644 index 000000000..71abef2e7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_clip.c @@ -0,0 +1,156 @@ +/* + + u8g_clip.c + + procedures for clipping + taken over from procs in u8g_pb.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Notes + + This is one of the most critical parts of u8glib. It must be fast, but still reliable. + Based on the intersection program (see tools folder), there is minimized version of + the condition for the intersaction test: + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + It includes the assumption, that a1 <= a2 is always true (correct, because + a1, a2 are the page dimensions. + + The direct implementation of the above result is done in: + uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) + However, this is slower than a decision tree version: + static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) + Also suprising is, that he the macro implementation is slower than the inlined version. + + The decision tree is based on the expansion of the truth table. + +*/ + +#include "u8g.h" + +#ifdef __GNUC__ +#define U8G_ALWAYS_INLINE __attribute__((always_inline)) +#else +#define U8G_ALWAYS_INLINE + #endif + +/* + intersection assumptions: + a1 <= a2 is always true + + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + */ + +#ifdef OLD_CODE_WHICH_IS_TOO_SLOW +static uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c1, c2, c3, tmp; + c1 = v0 <= a1; + c2 = v1 >= a0; + c3 = v0 > v1; + + tmp = c1; + c1 &= c2; + c2 &= c3; + c3 &= tmp; + c1 |= c2; + c1 |= c3; + return c1 & 1; +} +#endif + +#define U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1) ((uint8_t)( (v0) <= (a1) ) ? ( ( (v1) >= (a0) ) ? ( 1 ) : ( (v0) > (v1) ) ) : ( ( (v1) >= (a0) ) ? ( (v0) > (v1) ) : ( 0 ) )) + +static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) U8G_ALWAYS_INLINE; +static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) +{ + /* surprisingly the macro leads to larger code */ + /* return U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1); */ + if ( v0 <= a1 ) + { + if ( v1 >= a0 ) + { + return 1; + } + else + { + if ( v0 > v1 ) + { + return 1; + } + else + { + return 0; + } + } + } + else + { + if ( v1 >= a0 ) + { + if ( v0 > v1 ) + { + return 1; + } + else + { + return 0; + } + } + else + { + return 0; + } + } +} + + +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + register u8g_uint_t tmp; + tmp = y; + tmp += h; + tmp--; + if ( u8g_is_intersection_decision_tree(u8g->current_page.y0, u8g->current_page.y1, y, tmp) == 0 ) + return 0; + + tmp = x; + tmp += w; + tmp--; + return u8g_is_intersection_decision_tree(u8g->current_page.x0, u8g->current_page.x1, x, tmp); +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api.c new file mode 100644 index 000000000..2dd49b126 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api.c @@ -0,0 +1,173 @@ +/* + + u8g_com_api.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev) +{ + return dev->com_fn(u8g, U8G_COM_MSG_INIT, 0, NULL); +} + +void u8g_StopCom(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_STOP, 0, NULL); +} + +/* cs contains the chip number, which should be enabled */ +void u8g_SetChipSelect(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs) +{ + dev->com_fn(u8g, U8G_COM_MSG_CHIP_SELECT, cs, NULL); +} + +void u8g_SetResetLow(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_RESET, 0, NULL); +} + +void u8g_SetResetHigh(u8g_t *u8g, u8g_dev_t *dev) +{ + dev->com_fn(u8g, U8G_COM_MSG_RESET, 1, NULL); +} + + +void u8g_SetAddress(u8g_t *u8g, u8g_dev_t *dev, uint8_t address) +{ + dev->com_fn(u8g, U8G_COM_MSG_ADDRESS, address, NULL); +} + +uint8_t u8g_WriteByte(u8g_t *u8g, u8g_dev_t *dev, uint8_t val) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, val, NULL); +} + +uint8_t u8g_WriteSequence(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *seq) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ, cnt, seq); +} + +uint8_t u8g_WriteSequenceP(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, const uint8_t *seq) +{ + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ_P, cnt, (void *)seq); +} + +/* + sequence := { direct_value | escape_sequence } + direct_value := 0..254 + escape_sequence := value_255 | sequence_end | delay | adr | cs | not_used + value_255 := 255 255 + sequence_end = 255 254 + delay := 255 0..127 + adr := 255 0x0e0 .. 0x0ef + cs := 255 0x0d0 .. 0x0df + not_used := 255 101..254 + +#define U8G_ESC_DLY(x) 255, ((x) & 0x7f) +#define U8G_ESC_CS(x) 255, (0xd0 | ((x)&0x0f)) +#define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&0x0f)) +#define U8G_ESC_VCC(x) 255, (0xbe | ((x)&0x01)) +#define U8G_ESC_END 255, 254 +#define U8G_ESC_255 255, 255 +#define U8G_ESC_RST(x) 255, (0xc0 | ((x)&0x0f)) + +*/ +uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, const uint8_t *esc_seq) +{ + uint8_t is_escape = 0; + uint8_t value; + for(;;) + { + value = u8g_pgm_read(esc_seq); + if ( is_escape == 0 ) + { + if ( value != 255 ) + { + if ( u8g_WriteByte(u8g, dev, value) == 0 ) + return 0; + } + else + { + is_escape = 1; + } + } + else + { + if ( value == 255 ) + { + if ( u8g_WriteByte(u8g, dev, value) == 0 ) + return 0; + } + else if ( value == 254 ) + { + break; + } + else if ( value >= 0x0f0 ) + { + /* not yet used, do nothing */ + } + else if ( value >= 0xe0 ) + { + u8g_SetAddress(u8g, dev, value & 0x0f); + } + else if ( value >= 0xd0 ) + { + u8g_SetChipSelect(u8g, dev, value & 0x0f); + } + else if ( value >= 0xc0 ) + { + u8g_SetResetLow(u8g, dev); + value &= 0x0f; + value <<= 4; + value+=2; + u8g_Delay(value); + u8g_SetResetHigh(u8g, dev); + u8g_Delay(value); + } + else if ( value >= 0xbe ) + { + /* not yet implemented */ + /* u8g_SetVCC(u8g, dev, value & 0x01); */ + } + else if ( value <= 127 ) + { + u8g_Delay(value); + } + is_escape = 0; + } + esc_seq++; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api_16gr.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api_16gr.c new file mode 100644 index 000000000..7ff03d865 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api_16gr.c @@ -0,0 +1,94 @@ +/* + + u8g_com_api_16gr.c + + Extension of the com api for devices with 16 graylevels (4 bit per pixel). + This should fit to the 8h and 16h architectures (pb8v1, pb8v2, pb16v1, pb16v2), + mainly intended for SSD OLEDs + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* interpret b as a monochrome bit pattern, write value 15 for high bit and value 0 for a low bit */ +/* topbit (msb) is sent last */ +/* example: b = 0x083 will send 0xff, 0x00, 0x00, 0xf0 */ +uint8_t u8g_WriteByteBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b) +{ + static uint8_t buf[4]; + static uint8_t map[4] = { 0, 0x00f, 0x0f0, 0x0ff }; + buf [3] = map[b & 3]; + b>>=2; + buf [2] = map[b & 3]; + b>>=2; + buf [1] = map[b & 3]; + b>>=2; + buf [0] = map[b & 3]; + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_SEQ, 4, buf); +} + +uint8_t u8g_WriteSequenceBWTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr) +{ + do + { + if ( u8g_WriteByteBWTo16GrDevice(u8g, dev, *ptr++) == 0 ) + return 0; + cnt--; + } while( cnt != 0 ); + return 1; +} + +/* interpret b as a 4L bit pattern, write values 0x000, 0x004, 0x008, 0x00c */ +uint8_t u8g_WriteByte4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t b) +{ + //static uint8_t map[16] = { 0x000, 0x004, 0x008, 0x00c, 0x040, 0x044, 0x048, 0x04c, 0x080, 0x084, 0x088, 0x08c, 0x0c0, 0x0c4, 0x0c8, 0x0cc}; + //static uint8_t map[16] = { 0x000, 0x004, 0x00a, 0x00f, 0x040, 0x044, 0x04a, 0x04f, 0x0a0, 0x0a4, 0x0aa, 0x0af, 0x0f0, 0x0f4, 0x0fa, 0x0ff}; + static uint8_t map[16] = { 0x000, 0x040, 0x0a0, 0x0f0, 0x004, 0x044, 0x0a4, 0x0f4, 0x00a, 0x04a, 0x0aa, 0x0fa, 0x00f, 0x04f, 0x0af, 0x0ff}; + uint8_t bb; + bb = b; + bb &= 15; + b>>=4; + dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, map[bb], NULL); + return dev->com_fn(u8g, U8G_COM_MSG_WRITE_BYTE, map[b], NULL); +} + +uint8_t u8g_WriteSequence4LTo16GrDevice(u8g_t *u8g, u8g_dev_t *dev, uint8_t cnt, uint8_t *ptr) +{ + do + { + if ( u8g_WriteByte4LTo16GrDevice(u8g, dev, *ptr++) == 0 ) + return 0; + cnt--; + } while( cnt != 0 ); + return 1; +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_common.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_common.c new file mode 100644 index 000000000..ef0b2366e --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_common.c @@ -0,0 +1,75 @@ +/* + + u8g_com_arduino_common.c + + shared procedures for the arduino communication procedures + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +void u8g_com_arduino_digital_write(u8g_t *u8g, uint8_t pin_index, uint8_t value) +{ + uint8_t pin; + pin = u8g->pin_list[pin_index]; + if ( pin != U8G_PIN_NONE ) + digitalWrite(pin, value); +} + +/* this procedure does not set the RW pin */ +void u8g_com_arduino_assign_pin_output_high(u8g_t *u8g) +{ + uint8_t i; + /* skip the RW pin, which is the last pin in the list */ + for( i = 0; i < U8G_PIN_LIST_LEN-1; i++ ) + { + if ( u8g->pin_list[i] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[i], OUTPUT); + digitalWrite(u8g->pin_list[i], HIGH); + } + } +} + + +#endif + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c new file mode 100644 index 000000000..91a32e6f0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c @@ -0,0 +1,245 @@ +/* + + u8g_arduino_fast_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + + +#define PIN_D0 8 +#define PIN_D1 9 +#define PIN_D2 10 +#define PIN_D3 11 +#define PIN_D4 4 +#define PIN_D5 5 +#define PIN_D6 6 +#define PIN_D7 7 + +#define PIN_CS1 14 +#define PIN_CS2 15 +#define PIN_RW 16 +#define PIN_DI 17 +#define PIN_EN 18 + +//#define PIN_RESET + + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_data_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_data_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_fast_parallel_init(u8g_t *u8g) +{ + u8g_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + u8g_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + u8g_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + u8g_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + u8g_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + u8g_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + u8g_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +void u8g_com_arduino_fast_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_data_port[pin] &= ~u8g_data_mask[pin]; +} + + +void u8g_com_arduino_fast_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_fast_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_fast_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_fast_write_data_pin( 7, val&1 ); + val >>= 1; + + /* EN cycle time must be 1 micro second */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + u8g_10MicroDelay(); /* ST7920 commands: 72us */ +} + + +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_fast_parallel_init(u8g); + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_fast_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_fast_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_fast_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_fast_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c new file mode 100644 index 000000000..7d7f91000 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c @@ -0,0 +1,191 @@ +/* + + u8g_com_arduino_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if defined(__AVR__) + +#include +#include + +#if ARDUINO < 100 +#include + +/* fixed pins */ +#if defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) // Sanguino.cc board +#define PIN_SCK 7 +#define PIN_MISO 6 +#define PIN_MOSI 5 +#define PIN_CS 4 +#else // Arduino Board +#define PIN_SCK 13 +#define PIN_MISO 12 +#define PIN_MOSI 11 +#define PIN_CS 10 +#endif // (__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) + +#else + +#include + +/* use Arduino pin definitions */ +#define PIN_SCK SCK +#define PIN_MISO MISO +#define PIN_MOSI MOSI +#define PIN_CS SS + +#endif + + + +//static uint8_t u8g_spi_out(uint8_t data) U8G_NOINLINE; +static uint8_t u8g_spi_out(uint8_t data) +{ + /* unsigned char x = 100; */ + /* send data */ + SPDR = data; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_spi_out(arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +/* #elif defined(__18CXX) || defined(__PIC32MX) */ + +#else /* __AVR__ */ + +#endif /* __AVR__ */ + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c new file mode 100644 index 000000000..49038c36c --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c @@ -0,0 +1,221 @@ +/* + + u8g_arduino_no_en_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + +//#define PIN_RESET + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_data_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_data_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_no_en_parallel_init(u8g_t *u8g) +{ + u8g_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + u8g_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + u8g_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + u8g_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + u8g_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + u8g_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + u8g_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +void u8g_com_arduino_no_en_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_data_port[pin] &= ~u8g_data_mask[pin]; +} + + +void u8g_com_arduino_no_en_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_no_en_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_no_en_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_no_en_write_data_pin( 7, val&1 ); + val >>= 1; + + /* EN cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + if ( u8g->pin_list[U8G_PI_CS_STATE] == 1 ) + { + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_MicroDelay(); + } + else if ( u8g->pin_list[U8G_PI_CS_STATE] == 2 ) + { + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + u8g_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + u8g_MicroDelay(); + } +} + + +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_no_en_parallel_init(u8g); + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + /* + 0: nothing selected + 1: CS1 will be used as enable line + 2: CS2 will be used as enable line + this will be used in the u8g_com_arduino_no_en_parallel_write() procedure + */ + u8g->pin_list[U8G_PI_CS_STATE] = arg_val; + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_no_en_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_no_en_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_no_en_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_no_en_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_parallel.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_parallel.c new file mode 100644 index 000000000..a73bc0dbe --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_parallel.c @@ -0,0 +1,187 @@ +/* + + u8g_arduino_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + + + + + + +void u8g_com_arduino_parallel_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_D0, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D1, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D2, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D3, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D4, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D5, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D6, val&1); + val >>= 1; + u8g_com_arduino_digital_write(u8g, U8G_PI_D7, val&1); + + /* EN cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + //u8g_Delay(1); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + //u8g_Delay(1); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + //u8g_Delay(2); +} + + +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, LOW); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c new file mode 100644 index 000000000..cfaf71f9f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c @@ -0,0 +1,168 @@ +/* + + u8g_arduino_port_d_wr.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Assumes PORTD for 8 bit data transfer. + EN is assumed to be a low active write signal (WR) + + ILI9325D_320x240 from iteadstudio.com + RS=19, WR=18, CS=17, RST=16 + + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) && defined(PORTD) + +#if ARDUINO < 100 +#include +#else +#include +#endif + + + + + + +static void u8g_com_arduino_port_d_8bit_wr(u8g_t *u8g, uint8_t val) +{ + PORTD = val; + + /* WR cycle time must be 1 micro second, digitalWrite is slow enough to do this */ + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); +} + + +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + + switch(msg) + { + case U8G_COM_MSG_INIT: + +#ifdef UCSR0B + UCSR0B = 0; // disable USART 0 +#endif + DDRD = 0x0ff; + PORTD = 0x0ff; + + /* setup the RW pin as output and force it to low */ + if ( u8g->pin_list[U8G_PI_RW] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_RW], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_RW, HIGH); + } + /* set all pins (except RW pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_EN, HIGH); + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, HIGH); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS1, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS2, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_port_d_8bit_wr(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_port_d_8bit_wr(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_port_d_8bit_wr(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_port_d_wr_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO && PORTD */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c new file mode 100644 index 000000000..afcb4088a --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c @@ -0,0 +1,201 @@ +/* + + u8g_com_arduino_ssd_i2c.c + + com interface for arduino (AND atmega) and the SSDxxxx chip (SOLOMON) variant + I2C protocol + + ToDo: Rename this to u8g_com_avr_ssd_i2c.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Special pin usage: + U8G_PI_I2C_OPTION additional options + U8G_PI_A0_STATE used to store the last value of the command/data register selection + U8G_PI_SET_A0 1: Signal request to update I2C device with new A0_STATE, 0: Do nothing, A0_STATE matches I2C device + U8G_PI_SCL clock line (NOT USED) + U8G_PI_SDA data line (NOT USED) + + U8G_PI_RESET reset line (currently disabled, see below) + + Protocol: + SLA, Cmd/Data Selection, Arguments + The command/data register is selected by a special instruction byte, which is sent after SLA + + The continue bit is always 0 so that a (re)start is equired for the change from cmd to/data mode +*/ + +#include "u8g.h" + +#define I2C_SLA (0x3c*2) +//#define I2C_CMD_MODE 0x080 +#define I2C_CMD_MODE 0x000 +#define I2C_DATA_MODE 0x040 + + +uint8_t u8g_com_arduino_ssd_start_sequence(u8g_t *u8g) +{ + /* are we requested to set the a0 state? */ + if ( u8g->pin_list[U8G_PI_SET_A0] == 0 ) + return 1; + + /* setup bus, might be a repeated start */ + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + if ( u8g_i2c_send_byte(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) + return 0; + } + + + u8g->pin_list[U8G_PI_SET_A0] = 0; + return 1; +} + +uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCL, HIGH); + //u8g_com_arduino_digital_write(u8g, U8G_PI_SDA, HIGH); + //u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: unknown mode */ + + u8g_i2c_init(u8g->pin_list[U8G_PI_I2C_OPTION]); + + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + /* Currently disabled, but it could be enable. Previous restrictions have been removed */ + /* u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); */ + break; + + case U8G_COM_MSG_CHIP_SELECT: + u8g->pin_list[U8G_PI_A0_STATE] = 0; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again, also forces start condition */ + if ( arg_val == 0 ) + { + /* disable chip, send stop condition */ + u8g_i2c_stop(); + } + else + { + /* enable, do nothing: any byte writing will trigger the i2c start */ + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + if ( u8g_i2c_send_byte(arg_val) == 0 ) + return u8g_i2c_stop(), 0; + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(*ptr++) == 0 ) + return u8g_i2c_stop(), 0; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + //u8g->pin_list[U8G_PI_SET_A0] = 1; + if ( u8g_com_arduino_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + if ( u8g_i2c_send_byte(u8g_pgm_read(ptr)) == 0 ) + return 0; + ptr++; + arg_val--; + } + } + // u8g_i2c_stop(); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + u8g->pin_list[U8G_PI_SET_A0] = 1; /* force a0 to set again */ + +#ifdef OLD_CODE + if ( i2c_state != 0 ) + { + u8g_i2c_stop(); + i2c_state = 0; + } + + if ( u8g_com_arduino_ssd_start_sequence(arg_val) == 0 ) + return 0; + + /* setup bus, might be a repeated start */ + /* + if ( u8g_i2c_start(I2C_SLA) == 0 ) + return 0; + if ( arg_val == 0 ) + { + i2c_state = 1; + + if ( u8g_i2c_send_byte(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + i2c_state = 2; + if ( u8g_i2c_send_byte(I2C_DATA_MODE) == 0 ) + return 0; + } + */ +#endif + break; + } + return 1; +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c new file mode 100644 index 000000000..d5a041386 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c @@ -0,0 +1,220 @@ +/* + + u8g_com_arduino_st7920_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special HW SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) +#define U8G_ARDUINO_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif + +#endif + + +#if defined(U8G_ARDUINO_ATMEGA_HW_SPI) + +#include +#include + +static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static uint8_t u8g_arduino_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + /* send data */ + SPDR = val; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr) ); + // u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + } + return 1; +} + +#else + +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} +#endif + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c new file mode 100644 index 000000000..a73398868 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c @@ -0,0 +1,295 @@ +/* + + u8g_com_arduino_st7920_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) + +uint8_t u8g_bitData, u8g_bitNotData; +uint8_t u8g_bitClock, u8g_bitNotClock; +volatile uint8_t *u8g_outData; +volatile uint8_t *u8g_outClock; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_outData = portOutputRegister(digitalPinToPort(dataPin)); + u8g_outClock = portOutputRegister(digitalPinToPort(clockPin)); + u8g_bitData = digitalPinToBitMask(dataPin); + u8g_bitClock = digitalPinToBitMask(clockPin); + + u8g_bitNotClock = u8g_bitClock; + u8g_bitNotClock ^= 0x0ff; + + u8g_bitNotData = u8g_bitData; + u8g_bitNotData ^= 0x0ff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) U8G_NOINLINE; +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + uint8_t bitData = u8g_bitData; + uint8_t bitNotData = u8g_bitNotData; + uint8_t bitClock = u8g_bitClock; + uint8_t bitNotClock = u8g_bitNotClock; + volatile uint8_t *outData = u8g_outData; + volatile uint8_t *outClock = u8g_outClock; + do + { + if ( val & 128 ) + *outData |= bitData; + else + *outData &= bitNotData; + + /* + *outClock |= bitClock; + val <<= 1; + cnt--; + *outClock &= bitNotClock; + */ + + val <<= 1; + *outClock &= bitNotClock; + cnt--; + // removed micro delays, because AVRs are too slow and the delay is not required + //u8g_MicroDelay(); + *outClock |= bitClock; + //u8g_MicroDelay(); + } while( cnt != 0 ); +} + +#elif defined(__18CXX) || defined(__PIC32MX) + +uint16_t dog_bitData, dog_bitNotData; +uint16_t dog_bitClock, dog_bitNotClock; +volatile uint32_t *dog_outData; +volatile uint32_t *dog_outClock; +volatile uint32_t dog_pic32_spi_tmp; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + dog_outData = portOutputRegister(digitalPinToPort(dataPin)); + dog_outClock = portOutputRegister(digitalPinToPort(clockPin)); + dog_bitData = digitalPinToBitMask(dataPin); + dog_bitClock = digitalPinToBitMask(clockPin); + + dog_bitNotClock = dog_bitClock; + dog_bitNotClock ^= 0x0ffff; + + dog_bitNotData = dog_bitData; + dog_bitNotData ^= 0x0ffff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + *dog_outData |= dog_bitData; + else + *dog_outData &= dog_bitNotData; + val <<= 1; + //u8g_MicroDelay(); + //*dog_outClock |= dog_bitClock; + *dog_outClock &= dog_bitNotClock; + cnt--; + u8g_MicroDelay(); + //*dog_outClock &= dog_bitNotClock; + *dog_outClock |= dog_bitClock; + u8g_MicroDelay(); + + } while( cnt != 0 ); +} + +#else + +/* default interface, Arduino DUE (__arm__) */ + +uint8_t u8g_data_pin; +uint8_t u8g_clock_pin; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_data_pin = dataPin; + u8g_clock_pin = clockPin; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + digitalWrite(u8g_data_pin, HIGH); + else + digitalWrite(u8g_data_pin, LOW); + val <<= 1; + //u8g_MicroDelay(); + digitalWrite(u8g_clock_pin, LOW); + cnt--; + u8g_MicroDelay(); + digitalWrite(u8g_clock_pin, HIGH); + u8g_MicroDelay(); + } while( cnt != 0 ); +} + +#endif + + + + +static void u8g_com_arduino_st7920_write_byte(uint8_t rs, uint8_t val) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_com_arduino_do_shift_out_msb_first(0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_com_arduino_do_shift_out_msb_first(0x0fa); + } + + u8g_com_arduino_do_shift_out_msb_first(val & 0x0f0); + u8g_com_arduino_do_shift_out_msb_first(val << 4); + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); + +} + + + +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + // u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_st7920_write_byte( u8g->pin_list[U8G_PI_A0_STATE], arg_val); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte(u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_st7920_write_byte(u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr) ); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_st7920_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c new file mode 100644 index 000000000..1251ef2e5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c @@ -0,0 +1,144 @@ +/* + + u8g_arduino_std_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +void u8g_arduino_sw_spi_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) +{ + uint8_t i = 8; + do + { + if ( val & 128 ) + digitalWrite(dataPin, HIGH); + else + digitalWrite(dataPin, LOW); + val <<= 1; + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + digitalWrite(clockPin, HIGH); + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + digitalWrite(clockPin, LOW); + u8g_MicroDelay(); /* 23 Sep 2012 */ + //delay(1); + i--; + } while( i != 0 ); +} + +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_std_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c new file mode 100644 index 000000000..846baeb90 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c @@ -0,0 +1,239 @@ +/* + + u8g_arduino_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +#else +#include +#include "wiring_private.h" +#endif + +#if defined(__AVR__) + +uint8_t u8g_bitData, u8g_bitNotData; +uint8_t u8g_bitClock, u8g_bitNotClock; +volatile uint8_t *u8g_outData; +volatile uint8_t *u8g_outClock; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_outData = portOutputRegister(digitalPinToPort(dataPin)); + u8g_outClock = portOutputRegister(digitalPinToPort(clockPin)); + u8g_bitData = digitalPinToBitMask(dataPin); + u8g_bitClock = digitalPinToBitMask(clockPin); + + u8g_bitNotClock = u8g_bitClock; + u8g_bitNotClock ^= 0x0ff; + + u8g_bitNotData = u8g_bitData; + u8g_bitNotData ^= 0x0ff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) U8G_NOINLINE; +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + uint8_t bitData = u8g_bitData; + uint8_t bitNotData = u8g_bitNotData; + uint8_t bitClock = u8g_bitClock; + uint8_t bitNotClock = u8g_bitNotClock; + volatile uint8_t *outData = u8g_outData; + volatile uint8_t *outClock = u8g_outClock; + do + { + if ( val & 128 ) + *outData |= bitData; + else + *outData &= bitNotData; + + *outClock |= bitClock; + val <<= 1; + cnt--; + *outClock &= bitNotClock; + } while( cnt != 0 ); +} + +#elif defined(__18CXX) || defined(__PIC32MX) + +uint16_t dog_bitData, dog_bitNotData; +uint16_t dog_bitClock, dog_bitNotClock; +volatile uint32_t *dog_outData; +volatile uint32_t *dog_outClock; +volatile uint32_t dog_pic32_spi_tmp; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + dog_outData = portOutputRegister(digitalPinToPort(dataPin)); + dog_outClock = portOutputRegister(digitalPinToPort(clockPin)); + dog_bitData = digitalPinToBitMask(dataPin); + dog_bitClock = digitalPinToBitMask(clockPin); + + dog_bitNotClock = dog_bitClock; + dog_bitNotClock ^= 0x0ffff; + + dog_bitNotData = dog_bitData; + dog_bitNotData ^= 0x0ffff; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t cnt = 8; + do + { + if ( val & 128 ) + *dog_outData |= dog_bitData; + else + *dog_outData &= dog_bitNotData; + val <<= 1; + /* + There must be some delay here. However + fetching the adress dog_outClock is enough delay, so + do not place dog_outClock in a local variable. This will + break the procedure + */ + *dog_outClock |= dog_bitClock; + cnt--; + *dog_outClock &= dog_bitNotClock; + /* + little additional delay after clk pulse, done by 3x32bit reads + from I/O. Optimized for PIC32 with 80 MHz. + */ + dog_pic32_spi_tmp = *dog_outClock; + dog_pic32_spi_tmp = *dog_outClock; + dog_pic32_spi_tmp = *dog_outClock; + } while( cnt != 0 ); +} + +#else +/* empty interface */ + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ +} + +#endif + + +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_MOSI, LOW); + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_arduino_do_shift_out_msb_first( arg_val ); + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first(*ptr++); + // u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first( u8g_pgm_read(ptr) ); + //u8g_arduino_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, arg_val); + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_t6963.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_t6963.c new file mode 100644 index 000000000..d6a817867 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_t6963.c @@ -0,0 +1,385 @@ +/* + + u8g_com_arduino_t6963.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS 14 + PIN_A0 15 + PIN_RESET 16 + PIN_WR 17 + PIN_RD 18 + + u8g_InitRW8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + u8g_InitRW8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16) + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if ARDUINO < 100 +//#include +#include +#include +#else +#include +#endif + + +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ +static volatile uint32_t *u8g_output_data_port[8]; +static volatile uint32_t *u8g_input_data_port[8]; +static volatile uint32_t *u8g_mode_port[8]; +static uint32_t u8g_data_mask[8]; +#else +static volatile uint8_t *u8g_output_data_port[8]; +static volatile uint8_t *u8g_input_data_port[8]; +static volatile uint8_t *u8g_mode_port[8]; +static uint8_t u8g_data_mask[8]; +#endif + + + +static void u8g_com_arduino_t6963_init(u8g_t *u8g) +{ + u8g_output_data_port[0] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_input_data_port[0] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_mode_port[0] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D0])); + u8g_data_mask[0] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D0]); + + u8g_output_data_port[1] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_input_data_port[1] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_mode_port[1] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D1])); + u8g_data_mask[1] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D1]); + + u8g_output_data_port[2] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_input_data_port[2] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_mode_port[2] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D2])); + u8g_data_mask[2] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D2]); + + u8g_output_data_port[3] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_input_data_port[3] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_mode_port[3] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D3])); + u8g_data_mask[3] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D3]); + + u8g_output_data_port[4] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_input_data_port[4] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_mode_port[4] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D4])); + u8g_data_mask[4] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D4]); + + u8g_output_data_port[5] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_input_data_port[5] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_mode_port[5] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D5])); + u8g_data_mask[5] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D5]); + + u8g_output_data_port[6] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_input_data_port[6] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_mode_port[6] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D6])); + u8g_data_mask[6] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D6]); + + u8g_output_data_port[7] = portOutputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_input_data_port[7] = portInputRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_mode_port[7] = portModeRegister(digitalPinToPort(u8g->pin_list[U8G_PI_D7])); + u8g_data_mask[7] = digitalPinToBitMask(u8g->pin_list[U8G_PI_D7]); +} + +static void u8g_com_arduino_t6963_write_data_pin(uint8_t pin, uint8_t val) +{ + if ( val != 0 ) + *u8g_output_data_port[pin] |= u8g_data_mask[pin]; + else + *u8g_output_data_port[pin] &= ~u8g_data_mask[pin]; +} + +static void u8g_com_arduino_t6963_set_port_output(void) +{ + uint8_t i; + for( i = 0; i < 8; i++ ) + { +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ + *u8g_mode_port[i] |= u8g_data_mask[i]; +#elif defined(__AVR__) + *u8g_mode_port[i] |= u8g_data_mask[i]; +#else + /* TODO: use generic Arduino API */ + *u8g_mode_port[i] |= u8g_data_mask[i]; +#endif + + } +} + +static void u8g_com_arduino_t6963_set_port_input(void) +{ + uint8_t i; + for( i = 0; i < 8; i++ ) + { +#if defined(__PIC32MX) +/* CHIPKIT PIC32 */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; +#elif defined(__AVR__) +/* avr */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; + *u8g_output_data_port[i] &= ~u8g_data_mask[i]; // no pullup +#else + /* TODO: use generic Arduino API */ + *u8g_mode_port[i] &= ~u8g_data_mask[i]; + *u8g_output_data_port[i] &= ~u8g_data_mask[i]; // no pullup +#endif + } +} + + +static void u8g_com_arduino_t6963_write(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_t6963_write_data_pin( 0, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 1, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 2, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 3, val&1 ); + val >>= 1; + + u8g_com_arduino_t6963_write_data_pin( 4, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 5, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 6, val&1 ); + val >>= 1; + u8g_com_arduino_t6963_write_data_pin( 7, val&1 ); + val >>= 1; + + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, 0); + u8g_MicroDelay(); /* 80ns, reference: t6963 datasheet */ + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, 1); + u8g_MicroDelay(); /* 10ns, reference: t6963 datasheet */ +} + +static uint8_t u8g_com_arduino_t6963_read(u8g_t *u8g) +{ + uint8_t val = 0; + + u8g_com_arduino_digital_write(u8g, U8G_PI_RD, 0); + u8g_MicroDelay(); /* 150ns, reference: t6963 datasheet */ + + /* only read bits 0, 1 and 3 */ + if ( (*u8g_input_data_port[3] & u8g_data_mask[3]) != 0 ) + val++; + val <<= 1; + val <<= 1; + if ( (*u8g_input_data_port[1] & u8g_data_mask[1]) != 0 ) + val++; + val <<= 1; + if ( (*u8g_input_data_port[0] & u8g_data_mask[0]) != 0 ) + val++; + + u8g_com_arduino_digital_write(u8g, U8G_PI_RD, 1); + u8g_MicroDelay(); /* 10ns, reference: t6963 datasheet */ + + return val; +} + +#define U8G_STATUS_TIMEOUT 50 + +static uint8_t u8g_com_arduino_t6963_until_01_ok(u8g_t *u8g) +{ + long x; + + u8g_com_arduino_t6963_set_port_input(); + x = millis(); + x += U8G_STATUS_TIMEOUT; + + for(;;) + { + if ( (u8g_com_arduino_t6963_read(u8g) & 3) == 3 ) + break; + if ( x < millis() ) + return 0; + } + u8g_com_arduino_t6963_set_port_output(); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_until_3_ok(u8g_t *u8g) +{ + long x; + + u8g_com_arduino_t6963_set_port_input(); + x = millis(); + x += U8G_STATUS_TIMEOUT; + + for(;;) + { + if ( (u8g_com_arduino_t6963_read(u8g) & 8) == 8 ) + break; + if ( x < millis() ) + return 0; + } + u8g_com_arduino_t6963_set_port_output(); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_cmd(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_01_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_data(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_01_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 0); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + +static uint8_t u8g_com_arduino_t6963_write_auto_data(u8g_t *u8g, uint8_t val) +{ + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 1); + if ( u8g_com_arduino_t6963_until_3_ok(u8g) == 0 ) + return 0; + u8g_com_arduino_digital_write(u8g, U8G_PI_A0, 0); + u8g_com_arduino_t6963_write(u8g, val); + return 1; +} + + +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g->pin_list[U8G_PI_A0_STATE] = 0; + u8g_com_arduino_t6963_init(u8g); + /* setup the RW (equal to WR) pin as output and force it to high */ + if ( u8g->pin_list[U8G_PI_WR] != U8G_PIN_NONE ) + { + pinMode(u8g->pin_list[U8G_PI_WR], OUTPUT); + u8g_com_arduino_digital_write(u8g, U8G_PI_WR, HIGH); + } + /* set all pins (except WR pin) */ + u8g_com_arduino_assign_pin_output_high(u8g); + break; + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, active low chip select */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + u8g_com_arduino_t6963_write_data(u8g, arg_val); + } + else + { + u8g_com_arduino_t6963_write_cmd(u8g, arg_val); + } + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b0); /* auto write */ + while( arg_val > 0 ) + { + if ( u8g_com_arduino_t6963_write_auto_data(u8g, *ptr++) == 0 ) + break; + arg_val--; + } + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b2); /* auto reset */ + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b0); /* auto write */ + while( arg_val > 0 ) + { + if ( u8g_com_arduino_t6963_write_auto_data(u8g, u8g_pgm_read(ptr)) == 0 ) + break; + ptr++; + arg_val--; + } + u8g_com_arduino_t6963_write_cmd(u8g, 0x0b2); /* auto reset */ + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 1) or data mode (arg_val = 0) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + //u8g_com_arduino_digital_write(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + if ( u8g->pin_list[U8G_PI_RESET] != U8G_PIN_NONE ) + u8g_com_arduino_digital_write(u8g, U8G_PI_RESET, arg_val); + break; + + } + return 1; +} + +#else + + +uint8_t u8g_com_arduino_t6963_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c new file mode 100644 index 000000000..30ee808ea --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c @@ -0,0 +1,174 @@ +/* + + u8g_com_atmega_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Assumes, that + MOSI is at PORTB, Pin 3 + and + SCK is at PORTB, Pin 5 + +*/ + +#include "u8g.h" + + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif +#endif + + +#if defined(U8G_ATMEGA_HW_SPI) + +#include +#include + + +static uint8_t u8g_atmega_spi_out(uint8_t data) +{ + /* unsigned char x = 100; */ + /* send data */ + SPDR = data; + /* wait for transmission */ + while (!(SPSR & (1< 0 ) + { + u8g_atmega_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + +uint8_t u8g_com_atmega_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_parallel.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_parallel.c new file mode 100644 index 000000000..603082da2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_parallel.c @@ -0,0 +1,183 @@ +/* + + u8g_atmega_parallel.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS1 14 + PIN_CS2 15 + PIN_RW 16 + PIN_DI 17 + PIN_EN 18 + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_com_atmega_parallel_write(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_com_atmega_parallel_write(u8g_t *u8g, uint8_t val) +{ + + u8g_SetPILevel(u8g, U8G_PI_D0, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D1, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D2, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D3, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D4, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D5, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D6, val&1); + val >>= 1; + u8g_SetPILevel(u8g, U8G_PI_D7, val&1); + + /* EN cycle time must be 1 micro second */ + u8g_SetPILevel(u8g, U8G_PI_EN, 1); + u8g_MicroDelay(); /* delay by 1000ns, reference: ST7920: 140ns, SBN1661: 100ns */ + u8g_SetPILevel(u8g, U8G_PI_EN, 0); + u8g_10MicroDelay(); /* ST7920 commands: 72us */ + u8g_10MicroDelay(); /* ST7920 commands: 72us */ +} + + +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + /* setup the RW pin as output and force it to low */ + u8g_SetPIOutput(u8g, U8G_PI_RW); + u8g_SetPILevel(u8g, U8G_PI_RW, 0); + + u8g_SetPIOutput(u8g, U8G_PI_D0); + u8g_SetPIOutput(u8g, U8G_PI_D1); + u8g_SetPIOutput(u8g, U8G_PI_D2); + u8g_SetPIOutput(u8g, U8G_PI_D3); + u8g_SetPIOutput(u8g, U8G_PI_D4); + u8g_SetPIOutput(u8g, U8G_PI_D5); + u8g_SetPIOutput(u8g, U8G_PI_D6); + u8g_SetPIOutput(u8g, U8G_PI_D7); + u8g_SetPIOutput(u8g, U8G_PI_EN); + u8g_SetPIOutput(u8g, U8G_PI_CS1); + u8g_SetPIOutput(u8g, U8G_PI_CS2); + u8g_SetPIOutput(u8g, U8G_PI_DI); + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + + break; + case U8G_COM_MSG_STOP: + break; + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + } + else if ( arg_val == 1 ) + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 0); + u8g_SetPILevel(u8g, U8G_PI_CS2, 1); + } + else if ( arg_val == 2 ) + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 1); + u8g_SetPILevel(u8g, U8G_PI_CS2, 0); + } + else + { + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS1, 0); + u8g_SetPILevel(u8g, U8G_PI_CS2, 0); + } + break; + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_parallel_write(u8g, arg_val); + break; + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_parallel_write(u8g, *ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_parallel_write(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_SetPILevel(u8g, U8G_PI_DI, arg_val); + break; + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + } + return 1; +} + +#else + +uint8_t u8g_com_atmega_parallel_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c new file mode 100644 index 000000000..52858a61e --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c @@ -0,0 +1,205 @@ +/* + + u8g_com_atmega_st7920_hw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller with HW SPI Support + + Assumes, that + MOSI is at PORTB, Pin 3 + and + SCK is at PORTB, Pin 5 + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif + +#endif + +#if defined(U8G_ATMEGA_HW_SPI) + +#include +#include + +static uint8_t u8g_atmega_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static uint8_t u8g_atmega_st7920_hw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + /* send data */ + SPDR = val; + /* wait for transmission */ + while (!(SPSR & (1<pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); + } + else + { + /* u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); */ + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); /* CS = 1 (high active) */ + } + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte_hw_spi(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr)); + //u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c new file mode 100644 index 000000000..24e06028a --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c @@ -0,0 +1,170 @@ +/* + + u8g_com_atmega_st7920_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + A special SPI interface for ST7920 controller + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_atmega_st7920_sw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_atmega_st7920_sw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + uint8_t i = 8; + do + { + u8g_SetPILevel(u8g, U8G_PI_MOSI, val & 128 ); + val <<= 1; + u8g_SetPILevel(u8g, U8G_PI_SCK, 1 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + i--; + } while( i != 0 ); +} + +static void u8g_com_atmega_st7920_write_byte(u8g_t *u8g, uint8_t rs, uint8_t val) U8G_NOINLINE; +static void u8g_com_atmega_st7920_write_byte(u8g_t *u8g, uint8_t rs, uint8_t val) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_atmega_st7920_sw_spi_shift_out(u8g, 0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_atmega_st7920_sw_spi_shift_out(u8g, 0x0fa); + } + + u8g_atmega_st7920_sw_spi_shift_out(u8g, val & 0x0f0); + u8g_atmega_st7920_sw_spi_shift_out(u8g, val << 4); + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + + +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_SetPIOutput(u8g, U8G_PI_SCK); + u8g_SetPIOutput(u8g, U8G_PI_MOSI); + /* u8g_SetPIOutput(u8g, U8G_PI_A0); */ + u8g_SetPIOutput(u8g, U8G_PI_CS); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_SetPILevel(u8g, U8G_PI_MOSI, 0 ); + u8g_SetPILevel(u8g, U8G_PI_CS, 0 ); + /* u8g_SetPILevel(u8g, U8G_PI_A0, 0); */ + + u8g->pin_list[U8G_PI_A0_STATE] = 0; /* inital RS state: command mode */ + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g->pin_list[U8G_PI_A0_STATE] = arg_val; + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable, note: the st7920 has an active high chip select */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); + } + else + { + /* u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); */ + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); /* CS = 1 (high active) */ + } + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], arg_val); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], *ptr++); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_com_atmega_st7920_write_byte(u8g, u8g->pin_list[U8G_PI_A0_STATE], u8g_pgm_read(ptr)); + u8g->pin_list[U8G_PI_A0_STATE] = 2; + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_st7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c new file mode 100644 index 000000000..fde3153a5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c @@ -0,0 +1,141 @@ +/* + + u8g_com_atmega_sw_spi.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +static void u8g_atmega_sw_spi_shift_out(u8g_t *u8g, uint8_t val) U8G_NOINLINE; +static void u8g_atmega_sw_spi_shift_out(u8g_t *u8g, uint8_t val) +{ + uint8_t i = 8; + do + { + u8g_SetPILevel(u8g, U8G_PI_MOSI, val & 128 ); + val <<= 1; + u8g_SetPILevel(u8g, U8G_PI_SCK, 1 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_MicroDelay(); /* 15 Aug 2012: added for high speed uC */ + i--; + } while( i != 0 ); +} + +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_SetPIOutput(u8g, U8G_PI_SCK); + u8g_SetPIOutput(u8g, U8G_PI_MOSI); + u8g_SetPIOutput(u8g, U8G_PI_A0); + u8g_SetPIOutput(u8g, U8G_PI_CS); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + u8g_SetPILevel(u8g, U8G_PI_MOSI, 0 ); + u8g_SetPILevel(u8g, U8G_PI_CS, 1 ); + u8g_SetPILevel(u8g, U8G_PI_A0, 0); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */ + u8g_SetPILevel(u8g, U8G_PI_A0, arg_val); + break; + + case U8G_COM_MSG_CHIP_SELECT: + + if ( arg_val == 0 ) + { + /* disable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 1); + } + else + { + u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); + /* enable */ + u8g_SetPILevel(u8g, U8G_PI_CS, 0); /* CS = 0 (low active) */ + } + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + + case U8G_COM_MSG_WRITE_BYTE: + u8g_atmega_sw_spi_shift_out(u8g, arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_sw_spi_shift_out(u8g, *ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_atmega_sw_spi_shift_out(u8g, u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +#else + + +uint8_t u8g_com_atmega_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + + +#endif + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_i2c.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_i2c.c new file mode 100644 index 000000000..144c7d720 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_i2c.c @@ -0,0 +1,249 @@ +/* + + u8g_com_i2c.c + + generic i2c interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +static uint8_t u8g_i2c_err_code; + +/* + position values + 1: start condition + 2: sla transfer +*/ +static uint8_t u8g_i2c_err_pos; + + +void u8g_i2c_clear_error(void) +{ + u8g_i2c_err_code = U8G_I2C_ERR_NONE; + u8g_i2c_err_pos = 0; +} + +uint8_t u8g_i2c_get_error(void) +{ + return u8g_i2c_err_code; +} + +uint8_t u8g_i2c_get_err_pos(void) +{ + return u8g_i2c_err_pos; +} + +static void u8g_i2c_set_error(uint8_t code, uint8_t pos) +{ + if ( u8g_i2c_err_code > 0 ) + return; + u8g_i2c_err_code |= code; + u8g_i2c_err_pos = pos; +} + + + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_TWI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_TWI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_TWI +#endif +#endif + +#if defined(U8G_ATMEGA_HW_TWI) + +#include +#include + + + +void u8g_i2c_init(uint8_t options) +{ + /* + TWBR: bit rate register + TWSR: status register (contains preselector bits) + + prescalar + 0 1 + 1 4 + 2 16 + 3 64 + + f = F_CPU/(16+2*TWBR*prescalar) + + F_CPU = 16MHz + TWBR = 152; + TWSR = 0; + --> 50KHz + + TWBR = 72; + TWSR = 0; + --> 100KHz + + F_CPU/(2*100000)-8 --> calculate TWBR value for 100KHz +*/ + TWSR = 0; + TWBR = F_CPU/(2*100000)-8; + u8g_i2c_clear_error(); +} + +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) +{ + volatile uint16_t cnt = 2000; /* timout value should be > 280 for 50KHz Bus and 16 Mhz CPU, however the start condition might need longer */ + while( !(TWCR & mask) ) + { + if ( cnt == 0 ) + { + u8g_i2c_set_error(U8G_I2C_ERR_TIMEOUT, pos); + return 0; /* error */ + } + cnt--; + } + return 1; /* all ok */ +} + +/* sla includes all 8 bits (with r/w bit), assums master transmit */ +uint8_t u8g_i2c_start(uint8_t sla) +{ + register uint8_t status; + + /* send start */ + TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN); + + /* wait */ + if ( u8g_i2c_wait(_BV(TWINT), 1) == 0 ) + return 0; + + status = TW_STATUS; + + /* check status after start */ + if ( status != TW_START && status != TW_REP_START ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 1); + return 0; + } + + /* set slave address */ + TWDR = sla; + + /* enable sla transfer */ + TWCR = _BV(TWINT) | _BV(TWEN); + + /* wait */ + if ( u8g_i2c_wait(_BV(TWINT), 2) == 0 ) + return 0; + status = TW_STATUS; + + /* check status after sla */ + if ( status != TW_MT_SLA_ACK ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 2); + return 0; + } + + return 1; +} + +uint8_t u8g_i2c_send_byte(uint8_t data) +{ + register uint8_t status; + TWDR = data; + TWCR = _BV(TWINT) | _BV(TWEN); + if ( u8g_i2c_wait(_BV(TWINT), 3) == 0 ) + return 0; + status = TW_STATUS; + + if ( status != TW_MT_DATA_ACK ) + { + u8g_i2c_set_error(U8G_I2C_ERR_BUS, 3); + return 0; + } + + return 1; +} + +void u8g_i2c_stop(void) +{ + /* write stop */ + TWCR = _BV(TWINT) | _BV(TWEN) | _BV(TWSTO); + + /* no error is checked for the stop condition */ + u8g_i2c_wait(_BV(TWSTO), 4); + +} + +/* +void twi_send(uint8_t adr, uint8_t data1, uint8_t data2) +{ + u8g_i2c_start(adr<<1); + u8g_i2c_send_byte(data1); + u8g_i2c_send_byte(data2); + u8g_i2c_stop(); +} +*/ + +#else + +/* empty interface */ + +void u8g_i2c_init(uint8_t options) +{ + u8g_i2c_clear_error(); +} + +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) +{ + return 1; +} + +uint8_t u8g_i2c_start(uint8_t sla) +{ + return 1; +} +uint8_t u8g_i2c_send_byte(uint8_t data) +{ + return 1; +} + +void u8g_i2c_stop(void) +{ +} + + +#endif + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_io.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_io.c new file mode 100644 index 000000000..50d26c93d --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_io.c @@ -0,0 +1,218 @@ +/* + + u8g_com_io.c + + abstraction layer for low level i/o + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#if defined(__AVR__) + +#include +#include + +typedef volatile uint8_t * IO_PTR; + +/* create internal pin number */ +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) +{ + port <<= 3; + port += bitpos; + return port; +} + +const IO_PTR u8g_avr_ddr_P[] PROGMEM = { +#ifdef DDRA + &DDRA, +#else + 0, +#endif + &DDRB, +#ifdef DDRC + &DDRC, +#ifdef DDRD + &DDRD, +#ifdef DDRE + &DDRE, +#ifdef DDRF + &DDRF, +#ifdef DDRG + &DDRG, +#ifdef DDRH + &DDRH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + + +const IO_PTR u8g_avr_port_P[] PROGMEM = { +#ifdef PORTA + &PORTA, +#else + 0, +#endif + &PORTB, +#ifdef PORTC + &PORTC, +#ifdef PORTD + &PORTD, +#ifdef PORTE + &PORTE, +#ifdef PORTF + &PORTF, +#ifdef PORTG + &PORTG, +#ifdef PORTH + &PORTH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + +const IO_PTR u8g_avr_pin_P[] PROGMEM = { +#ifdef PINA + &PINA, +#else + 0, +#endif + &PINB, +#ifdef PINC + &PINC, +#ifdef PIND + &PIND, +#ifdef PINE + &PINE, +#ifdef PINF + &PINF, +#ifdef PING + &PING, +#ifdef PINH + &PINH, +#endif +#endif +#endif +#endif +#endif +#endif +}; + +static volatile uint8_t *u8g_get_avr_io_ptr(const IO_PTR *base, uint8_t offset) +{ + volatile uint8_t * tmp; + base += offset; + memcpy_P(&tmp, base, sizeof(volatile uint8_t * PROGMEM)); + return tmp; +} + +/* set direction to output of the specified pin (internal pin number) */ +void u8g_SetPinOutput(uint8_t internal_pin_number) +{ + *u8g_get_avr_io_ptr(u8g_avr_ddr_P, internal_pin_number>>3) |= _BV(internal_pin_number&7); +} + +void u8g_SetPinInput(uint8_t internal_pin_number) +{ + *u8g_get_avr_io_ptr(u8g_avr_ddr_P, internal_pin_number>>3) &= ~_BV(internal_pin_number&7); +} + +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) +{ + volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_port_P, internal_pin_number>>3); + + if ( level == 0 ) + *tmp &= ~_BV(internal_pin_number&7); + else + *tmp |= _BV(internal_pin_number&7); +} + +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) +{ + volatile uint8_t * tmp = u8g_get_avr_io_ptr(u8g_avr_pin_P, internal_pin_number>>3); + if ( ((*tmp) & _BV(internal_pin_number&7)) != 0 ) + return 1; + return 0; +} + +#else + +uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) +{ + port <<= 3; + port += bitpos; + return port; +} + +void u8g_SetPinOutput(uint8_t internal_pin_number) +{ +} + +void u8g_SetPinInput(uint8_t internal_pin_number) +{ +} + +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) +{ +} + +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) +{ + return 0; +} + +#endif + + +void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi) +{ + uint8_t pin; + pin = u8g->pin_list[pi]; + if ( pin != U8G_PIN_NONE ) + u8g_SetPinOutput(pin); +} + +void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level) +{ + uint8_t pin; + pin = u8g->pin_list[pi]; + if ( pin != U8G_PIN_NONE ) + u8g_SetPinLevel(pin, level); +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_null.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_null.c new file mode 100644 index 000000000..1d9deebff --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_null.c @@ -0,0 +1,63 @@ +/* + + u8g_com_null.c + + communication null device + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_com_null_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + break; + case U8G_COM_MSG_STOP: + break; + + + case U8G_COM_MSG_CHIP_SELECT: + /* arg_val contains the chip number, which should be enabled */ + break; + + + case U8G_COM_MSG_WRITE_BYTE: + break; + case U8G_COM_MSG_WRITE_SEQ: + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_cursor.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_cursor.c new file mode 100644 index 000000000..62075ba6e --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_cursor.c @@ -0,0 +1,99 @@ +/* + + u8g_cursor.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_SetCursorFont(u8g_t *u8g, const u8g_pgm_uint8_t *cursor_font) +{ + u8g->cursor_font = cursor_font; +} + +void u8g_SetCursorStyle(u8g_t *u8g, uint8_t encoding) +{ + u8g->cursor_encoding = encoding; +} + +void u8g_SetCursorColor(u8g_t *u8g, uint8_t fg, uint8_t bg) +{ + u8g->cursor_bg_color = bg; + u8g->cursor_fg_color = fg; +} + +void u8g_SetCursorPos(u8g_t *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y) +{ + u8g->cursor_x = cursor_x; + u8g->cursor_y = cursor_y; +} + +void u8g_EnableCursor(u8g_t *u8g) +{ + u8g->cursor_fn = u8g_DrawCursor; +} + +void u8g_DisableCursor(u8g_t *u8g) +{ + u8g->cursor_fn = (u8g_draw_cursor_fn)0; +} + +void u8g_DrawCursor(u8g_t *u8g) +{ + const u8g_pgm_uint8_t *font; + uint8_t color; + uint8_t encoding = u8g->cursor_encoding; + + /* get current values */ + color = u8g_GetColorIndex(u8g); + font = u8g->font; + + /* draw cursor */ + u8g->font = u8g->cursor_font; + encoding++; + u8g_SetColorIndex(u8g, u8g->cursor_bg_color); + /* 27. Jan 2013: replaced call to u8g_DrawGlyph with call to u8g_draw_glyph */ + /* required, because y adjustment should not happen to the cursor fonts */ + u8g_draw_glyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); + encoding--; + u8g_SetColorIndex(u8g, u8g->cursor_fg_color); + /* 27. Jan 2013: replaced call to u8g_DrawGlyph with call to u8g_draw_glyph */ + /* required, because y adjustment should not happen to the cursor fonts */ + /* u8g_DrawGlyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); */ + u8g_draw_glyph(u8g, u8g->cursor_x, u8g->cursor_y, encoding); + + /* restore previous values */ + u8g->font = font; + u8g_SetColorIndex(u8g, color); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_delay.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_delay.c new file mode 100644 index 000000000..e6a0661b3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_delay.c @@ -0,0 +1,215 @@ +/* + + u8g_delay.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + + +#include "u8g.h" + +/*==== Part 1: Derive suitable delay procedure ====*/ + +#if defined(ARDUINO) +# if defined(__AVR__) +# define USE_AVR_DELAY +# elif defined(__PIC32MX) +# define USE_PIC32_DELAY +# elif defined(__arm__) /* Arduino Due */ +# define USE_ARDUINO_DELAY +# else +# define USE_ARDUINO_DELAY +# endif +#elif defined(__AVR__) +# define USE_AVR_DELAY +#elif defined(__18CXX) +# define USE_PIC18_DELAY +#else +# define USE_DUMMY_DELAY +#endif + + + +/*==== Part 2: Definition of the delay procedures ====*/ + +/*== AVR Delay ==*/ + +#if defined(USE_AVR_DELAY) +#include +#include +#include + +/* + Delay by the provided number of milliseconds. + Thus, a 16 bit value will allow a delay of 0..65 seconds + Makes use of the _delay_loop_2 + + _delay_loop_2 will do a delay of n * 4 prozessor cycles. + with f = F_CPU cycles per second, + n = f / (1000 * 4 ) + with f = 16000000 the result is 4000 + with f = 1000000 the result is 250 + + the millisec loop, gcc requires the following overhead: + - movev 1 + - subwi 2x2 + - bne i 2 + ==> 7 cycles + ==> must be devided by 4, rounded up 7/4 = 2 +*/ +void u8g_Delay(uint16_t val) +{ + /* old version did a call to the arduino lib: delay(val); */ + while( val != 0 ) + { + _delay_loop_2( (F_CPU / 4000 ) -2); + val--; + } +} + +/* delay by one micro second */ +void u8g_MicroDelay(void) +{ +#if (F_CPU / 4000000 ) > 0 + _delay_loop_2( (F_CPU / 4000000 ) ); +#endif +} + +/* delay by 10 micro seconds */ +void u8g_10MicroDelay(void) +{ +#if (F_CPU / 400000 ) > 0 + _delay_loop_2( (F_CPU / 400000 ) ); +#endif +} + +#endif + + +/*== Delay for PIC18 (not tested) ==*/ + +#if defined(USE_PIC18_DELAY) +#include +#define GetSystemClock() (64000000ul) // Hz +#define GetInstructionClock() (GetSystemClock()/4) + +void u8g_Delay(uint16_t val) +{/* + unsigned int _iTemp = (val); + while(_iTemp--) + Delay1KTCYx((GetInstructionClock()+999999)/1000000); + */ +} +void u8g_MicroDelay(void) +{ + /* not implemented */ +} +void u8g_10MicroDelay(void) +{ + /* not implemented */ +} +#endif + + +/*== Arduino Delay ==*/ +#if defined(USE_ARDUINO_DELAY) +void u8g_Delay(uint16_t val) +{ + delay(val); +} +void u8g_MicroDelay(void) +{ + delayMicroseconds(1); +} +void u8g_10MicroDelay(void) +{ + delayMicroseconds(10); +} +#endif + +#if defined(USE_PIC32_DELAY) +/* + Assume chipkit here with F_CPU correctly defined + The problem was, that u8g_Delay() is called within the constructor. + It seems that the chipkit is not fully setup at this time, so a + call to delay() will not work. So here is my own implementation. + +*/ +#define CPU_COUNTS_PER_SECOND (F_CPU/2UL) +#define TICKS_PER_MILLISECOND (CPU_COUNTS_PER_SECOND/1000UL) +#include "plib.h" +void u8g_Delay(uint16_t val) +{ + uint32_t d; + uint32_t s; + d = val; + d *= TICKS_PER_MILLISECOND; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +void u8g_MicroDelay(void) +{ + uint32_t d; + uint32_t s; + d = TICKS_PER_MILLISECOND/1000; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +void u8g_10MicroDelay(void) +{ + uint32_t d; + uint32_t s; + d = TICKS_PER_MILLISECOND/100; + s = ReadCoreTimer(); + while ( (uint32_t)(ReadCoreTimer() - s) < d ) + ; +} + +#endif + +/*== Any other systems: Dummy Delay ==*/ +#if defined(USE_DUMMY_DELAY) +void u8g_Delay(uint16_t val) +{ + /* do not know how to delay... */ +} +void u8g_MicroDelay(void) +{ +} +void u8g_10MicroDelay(void) +{ +} +#endif diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c new file mode 100644 index 000000000..bb368de43 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c @@ -0,0 +1,92 @@ +/* + + u8g_dev_flipdisc.c + + 1-Bit (BW) Driver for flip disc matrix + 2x 7 pixel height + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +#define WIDTH 28 +#define HEIGHT 14 +#define PAGE_HEIGHT 14 + +/* + Write data to the flip disc matrix. + This procedure must be implemented by the user. + Arguments: + id: Id for the matrix. Currently always 0. + page: A page has a height of 14 pixel. For a matrix with HEIGHT == 14 this will be always 0 + width: The width of the flip disc matrix. Always equal to WIDTH + row1: first data line (7 pixel per byte) + row2: first data line (7 pixel per byte) +*/ +void writeFlipDiscMatrix(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2); + + + +void (*u8g_write_flip_disc_matrix)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2); + +void u8g_SetFlipDiscCallback(u8g_t *u8g, void (*cb)(uint8_t id, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2)) +{ + u8g_write_flip_disc_matrix = cb; +} + +uint8_t u8g_dev_flipdisc_2x7_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + /* current page: pb->p.page */ + /* ptr to the buffer: pb->buf */ + + (*u8g_write_flip_disc_matrix)(0, pb->p.page, WIDTH, pb->buf, pb->buf+WIDTH); + } + break; + case U8G_DEV_MSG_CONTRAST: + return 1; + } + return u8g_dev_pb14v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_flipdisc_2x7_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_flipdisc_2x7_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_flipdisc_2x7_bw_buf}; +u8g_dev_t u8g_dev_flipdisc_2x7 = { u8g_dev_flipdisc_2x7_bw_fn, &u8g_dev_flipdisc_2x7_bw_pb, u8g_com_null_fn }; diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_gprof.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_gprof.c new file mode 100644 index 000000000..a486a2143 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_gprof.c @@ -0,0 +1,130 @@ +/* + + u8g_dev_gprof.c + + Device for performance measurement with gprof. + Does not write any data, but uses a buffer. + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +*/ + +#include "u8g.h" + + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +uint8_t u8g_dev_gprof_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +uint8_t u8g_pb_dev_gprof_buf[WIDTH]; +u8g_pb_t u8g_pb_dev_gprof = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_pb_dev_gprof_buf }; + +u8g_dev_t u8g_dev_gprof = { u8g_dev_gprof_fn, &u8g_pb_dev_gprof, NULL }; + +uint8_t u8g_dev_gprof_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + switch(msg) + { + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + /* + { + uint8_t i, j; + uint8_t page_height; + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( j = 0; j < page_height; j++ ) + { + printf("%02d ", j); + for( i = 0; i < WIDTH; i++ ) + { + if ( (u8g_pb_dev_stdout_buf[i] & (1<p)) == 0 ) + { + //printf("\n"); + return 0; + } + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x2, y2; + + y2 = bbx->y; + y2 += bbx->h; + y2--; + + if ( u8g_pb_IsYIntersection(pb, bbx->y, y2) == 0 ) + return 0; + + /* maybe this one can be skiped... probability is very high to have an intersection, so it would be ok to always return 1 */ + x2 = bbx->x; + x2 += bbx->w; + x2--; + + if ( u8g_pb_IsXIntersection(pb, bbx->x, x2) == 0 ) + return 0; + } + return 1; +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c new file mode 100644 index 000000000..e30ae6a71 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c @@ -0,0 +1,326 @@ +/* + + u8g_dev_ili9325d_320x240.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Color format + Red: 5 Bit + Green: 6 Bit + Blue: 5 Bit + + +*/ + +#include "u8g.h" + +#define WIDTH 240 + +#if defined(U8G_16BIT) +#define HEIGHT 320 +#else +/* if the user tries to compile the 8Bit version of the lib, then restrict the height to something which fits to 8Bit */ +#define HEIGHT 240 +#endif +#define PAGE_HEIGHT 4 + + +/* + reference board for this device: + http://iteadstudio.com/store/index.php?main_page=product_info&cPath=57_58&products_id=55 + documentation: + http://iteadstudio.com/Downloadfile/ITDB02_material.rar + datasheet + http://www.newhavendisplay.com/app_notes/ILI9325D.pdf + other libs + http://henningkarlsen.com/electronics/library.php + init sequence + http://code.google.com/p/itdb02/, ITDB02.cpp, iteadstudio.com +*/ + +static const uint8_t u8g_dev_ili9325d_320x240_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + //U8G_ESC_ADR(0), 0x000, 0x0E5, /* only used for none D version: set SRAM internal timing */ + //U8G_ESC_ADR(1), 0x078, 0x0f0, + U8G_ESC_ADR(0), 0x000, 0x001, /* Driver Output Control, bits 8 & 10 */ + U8G_ESC_ADR(1), 0x001, 0x000, + U8G_ESC_ADR(0), 0x000, 0x002, /* LCD Driving Wave Control, bit 9: Set line inversion */ + U8G_ESC_ADR(1), 0x002, 0x000, /* ITDB02 none D verion: 0x007, 0x000 */ + U8G_ESC_ADR(0), 0x000, 0x003, /* Entry Mode, GRAM write direction and BGR=1 */ + U8G_ESC_ADR(1), 0x010, 0x030, + U8G_ESC_ADR(0), 0x000, 0x004, /* Resize register */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x008, /* Display Control 2: set the back porch and front porch */ + U8G_ESC_ADR(1), 0x002, 0x007, + + U8G_ESC_ADR(0), 0x000, 0x009, /* Display Control 3 */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x00a, /* Display Control 4: FMARK */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00c, /* RGB Display Interface Control 1 */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00d, /* Frame Maker Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x00f, /* RGB Display Interface Control 2 */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x010, /* Power Control 1: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x011, /* Power Control 2: DC1[2:0], DC0[2:0], VC[2:0] */ + U8G_ESC_ADR(1), 0x000, 0x007, + U8G_ESC_ADR(0), 0x000, 0x012, /* Power Control 3: VREG1OUT voltage */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x013, /* Power Control 4: VDV[4:0] for VCOM amplitude */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x007, /* Display Control 1: Operate, but do not display */ + U8G_ESC_ADR(1), 0x000, 0x001, + + U8G_ESC_DLY(100), /* delay 100 ms */ /* ITDB02 none D verion: 50ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), 0x000, 0x010, /* Power Control 1: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x016, 0x090, /* ITDB02 none D verion: 0x010, 0x090 */ + U8G_ESC_ADR(0), 0x000, 0x011, /* Power Control 2: SAP, BT[3:0], AP, DSTB, SLP, STB */ + U8G_ESC_ADR(1), 0x002, 0x027, + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x012, /* Power Control 3: VCI: External, VCI*1.80 */ + U8G_ESC_ADR(1), 0x000, 0x00d, /* ITDB02 none D verion: 0x000, 0x01f */ + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x013, /* Power Control 4: VDV[4:0] for VCOM amplitude */ + U8G_ESC_ADR(1), 0x012, 0x000, /* ITDB02 none D verion: 0x015, 0x000 */ + U8G_ESC_ADR(0), 0x000, 0x029, /* Power Control 7 */ + U8G_ESC_ADR(1), 0x000, 0x00a, /* ITDB02 none D verion: 0x000, 0x027 */ + U8G_ESC_ADR(0), 0x000, 0x02b, /* Frame Rate: 83 */ + U8G_ESC_ADR(1), 0x000, 0x00d, + + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + + /* gamma control */ + U8G_ESC_ADR(0), 0x000, 0x030, + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x031, + U8G_ESC_ADR(1), 0x004, 0x004, + U8G_ESC_ADR(0), 0x000, 0x032, + U8G_ESC_ADR(1), 0x000, 0x003, + U8G_ESC_ADR(0), 0x000, 0x035, + U8G_ESC_ADR(1), 0x004, 0x005, + U8G_ESC_ADR(0), 0x000, 0x036, + U8G_ESC_ADR(1), 0x008, 0x008, + U8G_ESC_ADR(0), 0x000, 0x037, + U8G_ESC_ADR(1), 0x004, 0x007, + U8G_ESC_ADR(0), 0x000, 0x038, + U8G_ESC_ADR(1), 0x003, 0x003, + U8G_ESC_ADR(0), 0x000, 0x039, + U8G_ESC_ADR(1), 0x007, 0x007, + U8G_ESC_ADR(0), 0x000, 0x03c, + U8G_ESC_ADR(1), 0x005, 0x004, + U8G_ESC_ADR(0), 0x000, 0x03d, + U8G_ESC_ADR(1), 0x008, 0x008, + + U8G_ESC_ADR(0), 0x000, 0x050, /* Horizontal GRAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x051, /* Horizontal GRAM End Address: 239 */ + U8G_ESC_ADR(1), 0x000, 0x0EF, + U8G_ESC_ADR(0), 0x000, 0x052, /* Vertical GRAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x053, /* Vertical GRAM End Address: 319 */ + U8G_ESC_ADR(1), 0x001, 0x03F, + + U8G_ESC_ADR(0), 0x000, 0x060, /* Driver Output Control 2 */ + U8G_ESC_ADR(1), 0x0a7, 0x000, + U8G_ESC_ADR(0), 0x000, 0x061, /* Base Image Display Control: NDL,VLE, REV */ + U8G_ESC_ADR(1), 0x000, 0x001, + U8G_ESC_ADR(0), 0x000, 0x06a, /* Vertical Scroll Control */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x080, /* Partial Image 1 Display Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x081, /* Partial Image 1 RAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x082, /* Partial Image 1 RAM End Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x083, /* Partial Image 2 Display Position */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x084, /* Partial Image 2 RAM Start Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x085, /* Partial Image 2 RAM End Address */ + U8G_ESC_ADR(1), 0x000, 0x000, + + U8G_ESC_ADR(0), 0x000, 0x090, /* Panel Interface Control 1 */ + U8G_ESC_ADR(1), 0x000, 0x010, + U8G_ESC_ADR(0), 0x000, 0x092, /* Panel Interface Control 2 */ + U8G_ESC_ADR(1), 0x000, 0x000, /* 0x006, 0x000 */ + + U8G_ESC_ADR(0), 0x000, 0x007, /* Display Control 1: Operate, display ON */ + U8G_ESC_ADR(1), 0x001, 0x033, + + U8G_ESC_DLY(10), /* delay 10 ms */ + + /* write test pattern */ + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x010, + U8G_ESC_ADR(0), 0x000, 0x022, /* Write Data to GRAM */ + U8G_ESC_ADR(1), 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + 0x000, 0x000, + 0x0fe, 0x0fe, + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +static const uint8_t u8g_dev_ili9325d_320x240_page_seq[] PROGMEM = { + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_ADR(0), 0x000, 0x020, /* Horizontal GRAM Address Set */ + U8G_ESC_ADR(1), 0x000, 0x000, + U8G_ESC_ADR(0), 0x000, 0x021, /* Vertical GRAM Address Set */ + U8G_ESC_ADR(1), + U8G_ESC_END /* end of sequence */ +}; + +/* convert the internal RGB 332 to 65K high byte */ +static uint8_t u8g_dev_ili9325d_get_65K_high_byte(uint8_t color) +{ + uint8_t h; + h = color; + h &= 0x0e0; + h |= h>>3; + h &= 0x0f8; + color>>=2; + color &= 7; + h |= color; + return h; +} + +/* convert the internal RGB 332 to 65K high byte */ +static uint8_t u8g_dev_ili9325d_get_65K_low_byte(uint8_t color) +{ + uint8_t l; + l = color; + l <<= 3; + color &= 3; + color <<= 1; + l |= color; + return l; +} + + +uint8_t u8g_dev_ili9325d_320x240_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + //for(;;) + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_init_seq); + + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + uint16_t y, j; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < pb->p.page_height; i ++ ) + { + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ili9325d_320x240_page_seq); + u8g_WriteByte(u8g, dev, y >> 8 ); /* display ram (cursor) address high byte */ + u8g_WriteByte(u8g, dev, y & 255 ); /* display ram (cursor) address low byte */ + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0 ); + u8g_WriteByte(u8g, dev, 0x022 ); /* start gram data */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + + for( j = 0; j < pb->width; j++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_ili9325d_get_65K_high_byte(*ptr) ); + u8g_WriteByte(u8g, dev, u8g_dev_ili9325d_get_65K_low_byte(*ptr) ); + + ptr++; + } + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_ili9325d_320x240_8h8_buf[WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_ili9325d_320x240_8h8_pb U8G_NOCOMMON = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_ili9325d_320x240_8h8_buf}; +u8g_dev_t u8g_dev_ili9325d_320x240_8bit U8G_NOCOMMON = { u8g_dev_ili9325d_320x240_fn, &u8g_ili9325d_320x240_8h8_pb, u8g_com_arduino_port_d_wr_fn }; +//u8g_dev_t u8g_dev_ili9325d_320x240_8bit = { u8g_dev_ili9325d_320x240_fn, &u8g_ili9325d_320x240_8h8_pb, u8g_com_arduino_parallel_fn }; + +//U8G_PB_DEV(u8g_dev_ili9325d_320x240_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ili9325d_320x240_fn, U8G_COM_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c new file mode 100644 index 000000000..47ba18d4e --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c @@ -0,0 +1,110 @@ +/* + + u8g_dev_ks0108_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + ADDRESS = 0 (Command Mode) + 0x03f Display On + 0x0c0 Start Display at line 0 + 0x040 | y write to y address (y:0..63) + 0x0b8 | x write to page [0..7] + + + u8g_Init8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, cs2, di, rw, reset) + u8g_Init8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 18, 14, 15, 17, 16, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_ks0108_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip 1 */ + 0x03f, /* display on */ + 0x0c0, /* start at line 0 */ + U8G_ESC_DLY(20), /* delay 20 ms */ + U8G_ESC_CS(2), /* enable chip 2 */ + 0x03f, /* display on */ + 0x0c0, /* start at line 0 */ + U8G_ESC_DLY(20), /* delay 20 ms */ + U8G_ESC_CS(0), /* disable all chips */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_ks0108_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ks0108_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 2); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (KS0108b) */ + u8g_WriteByte(u8g, dev, 0x040 ); /* set address 0 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, 64, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (KS0108b) */ + u8g_WriteByte(u8g, dev, 0x040 ); /* set address 0 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, 64, 64+(uint8_t *)pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + } + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ks0108_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ks0108_128x64_fn, U8G_COM_PARALLEL); +U8G_PB_DEV(u8g_dev_ks0108_128x64_fast, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ks0108_128x64_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c new file mode 100644 index 000000000..b7bf6755e --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c @@ -0,0 +1,147 @@ +/* + + u8g_dev_lc7981_160x80.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 160 +#define HEIGHT 80 +#define PAGE_HEIGHT 8 + + +/* + code ideas: + https://github.com/vsergeev/embedded-drivers/tree/master/avr-lc7981 + data sheets: + http://www.lcd-module.de/eng/pdf/zubehoer/lc7981.pdf + http://www.lcd-module.de/pdf/grafik/w160-6.pdf +*/ + +static const uint8_t u8g_dev_lc7981_160x80_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_160x80_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_160x80_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_160x80_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_160x80_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c new file mode 100644 index 000000000..272b7c4cb --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_240x128.c + + Hitachi Display SP14N002 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + + +/* + http://www.mark-products.com/graphics.htm#240x128%20Pixel%20Format +*/ + +static const uint8_t u8g_dev_lc7981_240x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_240x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_240x128_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_240x128_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c new file mode 100644 index 000000000..781f1d90a --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_240x64.c + + Tested with Nan Ya LM_J6_003_ + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +static const uint8_t u8g_dev_lc7981_240x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_240x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_240x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_240x64_fn, U8G_COM_FAST_PARALLEL); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c new file mode 100644 index 000000000..d9ae9369f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_lc7981_320x64.c + + Note: Requires 16 bit mode (Must be enabled in u8g.h) + + Tested with Varitronix MGLS32064-03.pdf + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 320 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* + http://www.gaw.ru/pdf/lcd/lcm/Varitronix/graf/MGLS32064-03.pdf +*/ + +static const uint8_t u8g_dev_lc7981_320x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + + U8G_ESC_ADR(1), /* instruction mode */ + 0x000, /* mode register */ + U8G_ESC_ADR(0), /* data mode */ + 0x032, /* display on (bit 5), master mode on (bit 4), graphics mode on (bit 1)*/ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x001, /* character/bits per pixel pitch */ + U8G_ESC_ADR(0), /* data mode */ + 0x007, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x002, /* number of chars/byte width of the screen */ + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8-1, /* 8 bits per pixel */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x003, /* time division */ + U8G_ESC_ADR(0), /* data mode */ + 0x07f, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x008, /* display start low */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_ADR(1), /* instruction mode */ + 0x009, /* display start high */ + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* */ + + U8G_ESC_DLY(10), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_lc7981_320x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_lc7981_320x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00a ); /* display ram (cursor) address low byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr & 0x0ff ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00b ); /* display ram (cursor) address hight byte */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr >> 8 ); + + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x00c ); /* write data */ + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1f_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_lc7981_320x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_lc7981_320x64_fn, U8G_COM_FAST_PARALLEL); diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_null.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_null.c new file mode 100644 index 000000000..0e3907749 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_null.c @@ -0,0 +1,67 @@ +/* + + u8g_dev_null.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_null(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: /* most often used command */ + break; + case U8G_DEV_MSG_SET_PIXEL: + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + break; + case U8G_DEV_MSG_PAGE_NEXT: + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return 1; +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + } + return 1; +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c new file mode 100644 index 000000000..4cc011379 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c @@ -0,0 +1,110 @@ +/* + + u8g_dev_pcd8544_84x48.c + + Display: Nokia 84x48 + + Status: Tested with PCF8812 Display + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 84 +#define HEIGHT 48 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_pcd8544_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x013, /* bias system 1:48 */ + 0x0c0, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_pcd8544_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcd8544_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_pcd8544_84x48_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcd8544_fn, U8G_COM_SW_SPI); + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c new file mode 100644 index 000000000..3ac57884f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c @@ -0,0 +1,123 @@ +/* + + u8g_dev_pcf8812_96x65.c + + Display: Nokia 96x65 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + om6206 comaptible to pcf8812 ? + + Status: Tested + + + Display Controller Seen in + LPH7366 (9 pins, 84x48) PCD8544 Nokia 5110 / 5120 / 5130 / 5160 / 6110 / 6150 + LPH7677 (8 pins, 84x48) PCD8544 Nokia 3210 + LPH7779 (8 pins, 84x48) PCD8544 Nokia 3310 / 3315 / 3330 / 3110, also 3410? + ??? PCD8544 Nokia 5110 / 6110 + LPH7690 ? (96x65) PCF8455/OM6202 Nokia 3410 + LPH7690 ? (96x65?) SED1565/S1D15605 Nokia 7110 / 3510? + LPH7690 ??? Nokia 6210 + + + +*/ + +#include "u8g.h" + +#define WIDTH 96 +#define HEIGHT 65 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_pcf8812_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x013, /* bias system 1:48 */ + 0x080 | 0x040, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_pcf8812_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcf8812_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +/* u8g_com_arduino_sw_spi_fn does not work, too fast??? */ +U8G_PB_DEV(u8g_dev_pcf8812_96x65_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcf8812_fn, U8G_COM_SW_SPI); diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c new file mode 100644 index 000000000..3b0bcd625 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c @@ -0,0 +1,107 @@ +/* + + u8g_dev_sbn1661_122x32.c + + WG12232 display with 2xSBN1661 / SED1520 controller (122x32 display) + At the moment only available in the Arduino Environment + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 122 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_sbn1661_122x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip 1 */ + 0x0af, /* display on */ + 0x0c0, /* display start at line 0 */ + 0x0a0, /* a0: ADC forward, a1: ADC reverse */ + 0x0a9, /* a8: 1/16, a9: 1/32 duty */ + U8G_ESC_CS(2), /* enable chip 2 */ + 0x0af, /* display on */ + 0x0c0, /* display start at line 0 */ + 0x0a0, /* a0: ADC forward, a1: ADC reverse */ + 0x0a9, /* a8: 1/16, a9: 1/32 duty */ + + U8G_ESC_CS(0), /* disable chip */ + + + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_sbn1661_122x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_sbn1661_122x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (SBN1661/SED1520) */ + u8g_WriteByte(u8g, dev, 0x000 ); /* set X address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/2, pb->buf); + + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 2); + u8g_WriteByte(u8g, dev, 0x0b8 | pb->p.page); /* select current page (SBN1661/SED1520) */ + u8g_WriteByte(u8g, dev, 0x000 ); /* set X address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/2, WIDTH/2+(uint8_t *)pb->buf); + + u8g_SetChipSelect(u8g, dev, 0); + + } + break; + case U8G_DEV_MSG_CONTRAST: + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +/* u8g_com_arduino_sw_spi_fn does not work, too fast??? */ +U8G_PB_DEV(u8g_dev_sbn1661_122x32 , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sbn1661_122x32_fn, u8g_com_arduino_no_en_parallel_fn); diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c new file mode 100644 index 000000000..8f294374b --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c @@ -0,0 +1,247 @@ +/* + + u8g_dev_ssd1306_128x32.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + 23 Feb 2013: Fixed, Issue 147 + +*/ + + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +/* init sequence adafruit 128x32 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit1_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x010, /* [1] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* [1] set contrast control */ + 0x0d9, 0x022, /* [1] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence adafruit 128x32 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit2_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence adafruit 128x32 OLED (TESTED - WORKING 23.02.13), like adafruit3, but with page addressing mode */ +static const uint8_t u8g_dev_ssd1306_128x32_adafruit3_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x01f, /* Feb 23, 2013: 128x32 OLED: 0x01f, 128x64 OLED 0x03f */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5), Feb 23, 2013: 128x32 OLED: 0x002, 128x64 OLED 0x012 */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x002, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* init sequence Univision datasheet (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x32_univision_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* multiplex ratio */ + 0x0d3, 0x000, /* display offset */ + 0x040, /* start line */ + 0x08d, 0x010, /* charge pump setting (p62): 0x014 enable, 0x010 disable */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* set contrast control */ + 0x0d9, 0x022, /* pre-charge period */ + 0x0db, 0x040, /* vcomh deselect level */ + 0x022, 0x000, /* page addressing mode WRONG: 3 byte cmd! */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +/* select one init sequence here */ +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_univision_init_seq +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit1_init_seq +//define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit2_init_seq +#define u8g_dev_ssd1306_128x32_init_seq u8g_dev_ssd1306_128x32_adafruit3_init_seq + + +static const uint8_t u8g_dev_ssd1306_128x32_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr. to 0 */ + 0x000, /* set lower 4 bit of the col adr. to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1306_128x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; +} + + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1306_128x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x32_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x32_fn, U8G_COM_SSD_I2C); + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c new file mode 100644 index 000000000..a49b2d806 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c @@ -0,0 +1,237 @@ +/* + + u8g_dev_ssd1306_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence adafruit 128x64 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit1_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x010, /* [1] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* [1] set contrast control */ + 0x0d9, 0x022, /* [1] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence adafruit 128x64 OLED (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit2_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x000, /* */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence adafruit 128x64 OLED (NOT TESTED), like adafruit3, but with page addressing mode */ +static const uint8_t u8g_dev_ssd1306_128x64_adafruit3_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* */ + + 0x0d3, 0x000, /* */ + + 0x040, /* start line */ + + 0x08d, 0x014, /* [2] charge pump setting (p62): 0x014 enable, 0x010 disable */ + + 0x020, 0x002, /* 2012-05-27: page addressing mode */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x0cf, /* [2] set contrast control */ + 0x0d9, 0x0f1, /* [2] pre-charge period 0x022/f1*/ + 0x0db, 0x040, /* vcomh deselect level */ + + 0x02e, /* 2012-05-27: Deactivate scroll */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* init sequence Univision datasheet (NOT TESTED) */ +static const uint8_t u8g_dev_ssd1306_128x64_univision_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x0ae, /* display off, sleep mode */ + 0x0d5, 0x080, /* clock divide ratio (0x00=1) and oscillator frequency (0x8) */ + 0x0a8, 0x03f, /* multiplex ratio */ + 0x0d3, 0x000, /* display offset */ + 0x040, /* start line */ + 0x08d, 0x010, /* charge pump setting (p62): 0x014 enable, 0x010 disable */ + 0x0a1, /* segment remap a0/a1*/ + 0x0c8, /* c0: scan dir normal, c8: reverse */ + 0x0da, 0x012, /* com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5) */ + 0x081, 0x09f, /* set contrast control */ + 0x0d9, 0x022, /* pre-charge period */ + 0x0db, 0x040, /* vcomh deselect level */ + 0x022, 0x000, /* page addressing mode WRONG: 3 byte cmd! */ + 0x0a4, /* output ram to display */ + 0x0a6, /* none inverted normal display mode */ + 0x0af, /* display on */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* select one init sequence here */ +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_univision_init_seq +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit1_init_seq +//#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit2_init_seq +#define u8g_dev_ssd1306_128x64_init_seq u8g_dev_ssd1306_128x64_adafruit3_init_seq + + +static const uint8_t u8g_dev_ssd1306_128x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1306_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1306_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_128x64_fn, U8G_COM_SSD_I2C); diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c new file mode 100644 index 000000000..d16013fb7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c @@ -0,0 +1,144 @@ +/* + + u8g_dev_ssd1309_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* ssd1309 ini sequence*/ +static const uint8_t u8g_dev_ssd1309_128x64_init_seq[] PROGMEM={ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0xfd,0x12, /*Command Lock */ + 0xae, /*Set Display Off */ + 0xd5,0xa0, /*set Display Clock Divide Ratio/Oscillator Frequency */ + 0xa8,0x3f, /*Set Multiplex Ratio */ + 0x3d,0x00, /*Set Display Offset*/ + 0x40, /*Set Display Start Line*/ + 0xa1, /*Set Segment Re-Map*/ + 0xc8, /*Set COM Output Scan Direction*/ + 0xda,0x12, /*Set COM Pins Hardware Configuration*/ + 0x81,0xdf, /*Set Current Control */ + 0xd9,0x82, /*Set Pre-Charge Period */ + 0xdb,0x34, /*Set VCOMH Deselect Level */ + 0xa4, /*Set Entire Display On/Off */ + 0xa6, /*Set Normal/Inverse Display*/ + U8G_ESC_VCC(1), /*Power up VCC & Stabilized */ + U8G_ESC_DLY(50), + 0xaf, /*Set Display On */ + U8G_ESC_DLY(50), + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* select one init sequence here */ + #define u8g_dev_ssd1309_128x64_init_seq u8g_dev_ssd1309_128x64_init_seq + + + static const uint8_t u8g_dev_ssd1309_128x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1309_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1309_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1309_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1309_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1309_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1309_128x64_fn, U8G_COM_SSD_I2C); + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c new file mode 100644 index 000000000..24b94ffc7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c @@ -0,0 +1,334 @@ +/* + + u8g_dev_ssd1322_nhd31oled_bw.c + + 1-Bit (BW) Driver for SSD1322 Controller (OLED Display) + Tested with NHD-3.12-25664 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#if defined(U8G_16BIT) +#define WIDTH 256 +#else +#define WIDTH 248 +#endif +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* + http://www.newhavendisplay.com/app_notes/OLED_25664.txt + http://www.newhavendisplay.com/forum/viewtopic.php?f=15&t=3758 +*/ + +static const uint8_t u8g_dev_ssd1322_1bit_nhd_312_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0fd, /* lock command */ + U8G_ESC_ADR(1), /* data mode */ + 0x012, /* unlock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ae, /* display off, sleep mode */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b3, + U8G_ESC_ADR(1), /* data mode */ + 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 80 frames/sec) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ca, /* multiplex ratio */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, /* 1/64 Duty (0x0F~0x3F) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a2, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display offset, shift mapping ram counter */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a1, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display start line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a0, /* Set Re-Map / Dual COM Line Mode */ + U8G_ESC_ADR(1), /* data mode */ + 0x014, /* was 0x014 */ + 0x011, /* was 0x011 */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ab, + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* Enable Internal VDD Regulator */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b4, /* Display Enhancement A */ + U8G_ESC_ADR(1), /* data mode */ + 0x0a0, + 0x005|0x0fd, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c1, /* contrast */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c7, /* Set Scale Factor of Segment Output Current Control */ + U8G_ESC_ADR(1), /* data mode */ + 0x00f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b9, /* linear gray scale */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b1, /* Phase 1 (Reset) & Phase 2 (Pre-Charge) Period Adjustment */ + U8G_ESC_ADR(1), /* data mode */ + 0x0e2, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0d1, /* Display Enhancement B */ + U8G_ESC_ADR(1), /* data mode */ + 0x082|0x020, + 0x020, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0bb, /* precharge voltage */ + U8G_ESC_ADR(1), /* data mode */ + 0x01f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b6, /* precharge period */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0be, /* vcomh */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a6, /* normal display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a9, /* exit partial display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0af, /* display on */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1322_1bit_nhd_312_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + U8G_ESC_ADR(1), /* data mode */ + 0x01c, /* start at column 0 */ + 0x05b, /* end column */ + U8G_ESC_ADR(0), /* instruction mode */ + 0x075, /* row address... */ + U8G_ESC_ADR(1), /* data mode */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1322_1bit_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_ssd1322_nhd31oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_1bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_1bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_1bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x0ff); + u8g_WriteByte(u8g, dev, 0x0ff); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_HW_SPI); + +#define DWIDTH (WIDTH*2) +uint8_t u8g_dev_ssd1322_nhd31oled_2x_bw_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1322_nhd31oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1322_nhd31oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi = { u8g_dev_ssd1322_nhd31oled_2x_bw_fn, &u8g_dev_ssd1322_nhd31oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi = { u8g_dev_ssd1322_nhd31oled_2x_bw_fn, &u8g_dev_ssd1322_nhd31oled_2x_bw_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c new file mode 100644 index 000000000..5b509641c --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c @@ -0,0 +1,333 @@ +/* + + u8g_dev_ssd1322_nhd31oled_gr.c + + 2-Bit (4L) Driver for SSD1322 Controller (OLED Display) + Tested with NHD-3.12-25664 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#if defined(U8G_16BIT) +#define WIDTH 256 +#else +#define WIDTH 248 +#endif +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* + http://www.newhavendisplay.com/app_notes/OLED_25664.txt + http://www.newhavendisplay.com/forum/viewtopic.php?f=15&t=3758 +*/ + +static const uint8_t u8g_dev_ssd1322_2bit_nhd_312_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0fd, /* lock command */ + U8G_ESC_ADR(1), /* data mode */ + 0x012, /* unlock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ae, /* display off, sleep mode */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b3, + U8G_ESC_ADR(1), /* data mode */ + 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 80 frames/sec) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ca, /* multiplex ratio */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, /* 1/64 Duty (0x0F~0x3F) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a2, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display offset, shift mapping ram counter */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a1, + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* display start line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a0, /* Set Re-Map / Dual COM Line Mode */ + U8G_ESC_ADR(1), /* data mode */ + 0x014, /* was 0x014 */ + 0x011, /* was 0x011 */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0ab, + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* Enable Internal VDD Regulator */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b4, /* Display Enhancement A */ + U8G_ESC_ADR(1), /* data mode */ + 0x0a0, + 0x005|0x0fd, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c1, /* contrast */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0c7, /* Set Scale Factor of Segment Output Current Control */ + U8G_ESC_ADR(1), /* data mode */ + 0x00f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b9, /* linear gray scale */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b1, /* Phase 1 (Reset) & Phase 2 (Pre-Charge) Period Adjustment */ + U8G_ESC_ADR(1), /* data mode */ + 0x0e2, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0d1, /* Display Enhancement B */ + U8G_ESC_ADR(1), /* data mode */ + 0x082|0x020, + 0x020, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0bb, /* precharge voltage */ + U8G_ESC_ADR(1), /* data mode */ + 0x01f, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0b6, /* precharge period */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0be, /* vcomh */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a6, /* normal display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0a9, /* exit partial display */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x0af, /* display on */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1322_2bit_nhd_312_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + U8G_ESC_ADR(1), /* data mode */ + 0x01c, /* start at column 0 */ + 0x05b, /* end column */ + U8G_ESC_ADR(0), /* instruction mode */ + 0x075, /* row address... */ + U8G_ESC_ADR(1), /* data mode */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1322_2bit_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ssd1322_nhd31oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_2bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h2_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1322_2bit_nhd_312_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1322_2bit_prepare_row(u8g, dev, i); /* this will also enable chip select */ +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); +#if !defined(U8G_16BIT) + u8g_WriteByte(u8g, dev, 0x00); + u8g_WriteByte(u8g, dev, 0x00); +#endif + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h2_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_HW_SPI); + +#define DWIDTH (WIDTH*2) +uint8_t u8g_dev_ssd1322_nhd31oled_2x_gr_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1322_nhd31oled_2x_gr_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1322_nhd31oled_2x_gr_buf}; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi = { u8g_dev_ssd1322_nhd31oled_2x_gr_fn, &u8g_dev_ssd1322_nhd31oled_2x_gr_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi = { u8g_dev_ssd1322_nhd31oled_2x_gr_fn, &u8g_dev_ssd1322_nhd31oled_2x_gr_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c new file mode 100644 index 000000000..95853bdf2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c @@ -0,0 +1,263 @@ +/* + + u8g_dev_ssd1325_nhd27oled_bw.c + + 1-Bit (BW) Driver for SSD1325 Controller (OLED Display) + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#ifdef OBSOLETE_CODE + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x056, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1325_1bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 3; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 7; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1325_1bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 1; + page += is_odd; + + page <<= 3; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 7; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +#ifdef OLD +static void _OLD_u8g_dev_ssd1325_1bit_write_16_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, cnt; + cnt = 8; + do + { + d = 0; + if ( left & 1 ) + d |= 0x0f0; + if ( right & 1 ) + d |= 0x00f; + u8g_WriteByte(u8g, dev, d); + left >>= 1; + right >>= 1; + cnt--; + }while ( cnt > 0 ); +} +#endif + +static void u8g_dev_ssd1325_1bit_write_16_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, cnt; + static uint8_t buf[8]; + cnt = 8; + do + { + d = 0; + if ( left & 128 ) + d |= 0x0f0; + if ( right & 128 ) + d |= 0x00f; + cnt--; + buf[cnt] = d; + left <<= 1; + right <<= 1; + }while ( cnt > 0 ); + u8g_WriteSequence(u8g, dev, 8, buf); +} + +static void u8g_dev_ssd1325_1bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_1bit_write_16_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +uint8_t u8g_dev_ssd1325_nhd27oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_1bit_prepare_page(u8g, dev); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 0); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_1bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_1bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 0); + u8g_dev_ssd1325_1bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1325_1bit_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +/* disabled, see bw_new.c */ +/* +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_parallel , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_FAST_PARALLEL); +*/ + +/* +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_FAST_PARALLEL }; +*/ + +#endif + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c new file mode 100644 index 000000000..c9f4a51ad --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c @@ -0,0 +1,232 @@ +/* + + u8g_dev_ssd1325_nhd27oled_bw.c + + 1-Bit (BW) Driver for SSD1325 Controller (OLED Display) + Horizontal architecture, completly rewritten + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +/* width must be multiple of 8, largest value is 248 unless u8g 16 bit mode is enabled */ +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_nhd_27_12864_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x052, /* remap configuration, horizontal address increment (bit 2 = 0), enable nibble remap (upper nibble is left, bit 1 = 1) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a4, /* normal display mode */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_prepare_row_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1325_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_prepare_row_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + //u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + //u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +static uint8_t u8g_dev_ssd1325_nhd27oled_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + //case U8G_DEV_MSG_IS_BBX_INTERSECTION: + // return u8g_pb_IsIntersection((u8g_pb_t *)(dev->dev_mem), (u8g_dev_arg_bbx_t *)arg); + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_nhd_27_12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_nhd_27_12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 3; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequenceBWTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + break; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + + + +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_sw_spi , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_hw_spi , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_bw_parallel , WIDTH, HEIGHT, 8, u8g_dev_ssd1325_nhd27oled_bw_fn, U8G_COM_FAST_PARALLEL); + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_bw_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_bw_parallel = { u8g_dev_ssd1325_nhd27oled_2x_bw_fn, &u8g_dev_ssd1325_nhd27oled_2x_bw_pb, U8G_COM_FAST_PARALLEL }; + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c new file mode 100644 index 000000000..d00d18ec4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c @@ -0,0 +1,255 @@ +/* + + u8g_dev_ssd1325_nhd27oled_gr.c + + 2-Bit (gray level) Driver for SSD1325 Controller (OLED Display) + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#ifdef OBSOLETE_CODE + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x056, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1325_2bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1325_2bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + page <<= 1; + page += is_odd; + + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +static void u8g_dev_ssd1325_2bit_write_4_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, tmp, cnt; + cnt = 4; + do + { + d = left; + d &= 3; + d <<= 4; + tmp = right; + tmp &= 3; + d |= tmp; + d <<= 2; + u8g_WriteByte(u8g, dev, d); + left >>= 2; + right >>= 2; + cnt--; + }while ( cnt > 0 ); +} + +static void u8g_dev_ssd1325_2bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + cnt = pb->width; + cnt >>= 1; + ptr = pb->buf; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static void u8g_dev_ssd1325_2bit_2x_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1325_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_2bit_prepare_page(u8g, dev); + u8g_dev_ssd1325_2bit_write_buffer(u8g, dev); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1325_2bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1325_2bit_2x_write_buffer(u8g, dev, 0); + u8g_dev_ssd1325_2bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1325_2bit_2x_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +//U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_SW_SPI); +//U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_HW_SPI); + +//uint8_t u8g_dev_ssd1325_nhd27oled_2x_buf[WIDTH*2] U8G_NOCOMMON ; +//u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_buf}; +//u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_SW_SPI }; +//u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_HW_SPI }; + + +#endif /* OBSOLETE_CODE */ diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c new file mode 100644 index 000000000..2e61d9a57 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c @@ -0,0 +1,227 @@ +/* + + u8g_dev_ssd1325_nhd27oled_gr.c + + 2-Bit (gray level) Driver for SSD1325 Controller (OLED Display) + Rewritten with new architecture + Tested with NHD-2.7-12864UCY3 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 + +/* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */ +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off, sleep mode */ + 0x0b3, 0x091, /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */ + 0x0a8, 0x03f, /* multiplex ratio: 0x03f * 1/64 duty */ + 0x0a2, 0x04c, /* display offset, shift mapping ram counter */ + 0x0a1, 0x000, /* display start line */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x0a0, 0x052, /* remap configuration, horizontal address increment (bit 2 = 0), enable nibble remap (upper nibble is left, bit 1 = 1), old values: 0x0a0 0x0a6 */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 + 0x081, 0x070, /* contrast, brightness, 0..128, Newhaven: 0x040 */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b1, 0x055, /* phase length */ + 0x0bc, 0x010, /* pre-charge voltage level */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0be, 0x01c, /* VCOMH voltage */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0a4, /* normal display mode */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + 0x000, /* start at column 0 */ + 0x03f, /* end at column 63 (which is y == 127), because there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + +static void u8g_dev_ssd1325_gr_prepare_row(u8g_t *u8g, u8g_dev_t *dev, uint8_t delta_row) +{ + uint8_t row = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + row *= ((u8g_pb_t *)(dev->dev_mem))->p.page_height; + row += delta_row; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_prepare_page_seq); + + u8g_WriteByte(u8g, dev, row); /* start at the selected row */ + u8g_WriteByte(u8g, dev, row+1); /* end within the selected row */ + + //u8g_SetAddress(u8g, dev, 0); /* instruction mode mode */ + //u8g_WriteByte(u8g, dev, 0x05c); /* write to ram */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static const uint8_t u8g_dev_ssd13xx_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ae, /* display off */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd13xx_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + + +static uint8_t u8g_dev_ssd1325_nhd27oled_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_gr_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb8h2_base_fn(u8g, dev, msg, arg); +} + + + +static uint8_t u8g_dev_ssd1325_nhd27oled_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *p = pb->buf; + u8g_uint_t cnt; + cnt = pb->width; + cnt >>= 2; + + for( i = 0; i < pb->p.page_height; i++ ) + { + u8g_dev_ssd1325_gr_prepare_row(u8g, dev, i); /* this will also enable chip select */ + u8g_WriteSequence4LTo16GrDevice(u8g, dev, cnt, p); + u8g_SetChipSelect(u8g, dev, 0); + p+=cnt; + } + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd13xx_sleep_off); + return 1; + } + return u8g_dev_pb16h2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1325_nhd27oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1325_nhd27oled_gr_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_ssd1325_nhd27oled_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1325_nhd27oled_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1325_nhd27oled_2x_buf}; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi = { u8g_dev_ssd1325_nhd27oled_2x_gr_fn, &u8g_dev_ssd1325_nhd27oled_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c new file mode 100644 index 000000000..5e3b44674 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c @@ -0,0 +1,299 @@ +/* + + u8g_dev_ssd1327_96x96_gr.c + + 2-Bit (graylevel) Driver for SSD1327 Controller (OLED Display) + Tested with Seedstudio 96x96 Oled (LY120) + http://www.seeedstudio.com/wiki/index.php?title=Twig_-_OLED_96x96 + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + SSD130x Monochrom OLED Controller + SSD131x Character OLED Controller + SSD132x Graylevel OLED Controller + SSD1331 Color OLED Controller + +*/ + +#include "u8g.h" + +#define WIDTH 96 +#define HEIGHT 96 +#define XOFFSET 8 + +/* + http://www.seeedstudio.com/wiki/index.php?title=Twig_-_OLED_96x96 +*/ +static const uint8_t u8g_dev_ssd1327_2bit_96x96_init_seq[] PROGMEM = { + U8G_ESC_DLY(10), /* delay 10 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0fd, 0x012, /* unlock display, usually not required because the display is unlocked after reset */ + 0x0ae, /* display off, sleep mode */ + 0x0a8, 0x05f, /* multiplex ratio: 0x05f * 1/64 duty */ + 0x0a1, 0x000, /* display start line */ + 0x0a2, 0x060, /* display offset, shift mapping ram counter */ + //0x0a2, 0x04c, /* NHD: display offset, shift mapping ram counter */ + 0x0a0, 0x046, /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + //0x0a0, 0x056, /* NHD: remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */ + 0x0ab, 0x001, /* Enable internal VDD regulator (RESET) */ + 0x081, 0x053, /* contrast, brightness, 0..128, Newhaven: 0x040, LY120 0x053, 0x070 seems also ok */ + 0x0b1, 0x051, /* phase length */ + 0x0b3, 0x001, /* set display clock divide ratio/oscillator frequency */ + 0x0b9, /* use linear lookup table */ +#if 0 + 0x0b8, /* set gray scale table */ + //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076, + 0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077, // 4L mode uses 0, 2, 4, 7 +#endif + 0x0bc, 0x008, /* pre-charge voltage level */ + 0x0be, 0x007, /* VCOMH voltage */ + 0x0b6, 0x001, /* second precharge */ + 0x0d5, 0x062, /* enable second precharge, internal vsl (bit0 = 0) */ + +#if 0 + // the following commands are not used by the SeeedGrayOLED sequence */ + 0x0ad, 0x002, /* master configuration: disable embedded DC-DC, enable internal VCOMH */ + 0x086, /* full current range (0x084, 0x085, 0x086) */ + 0x0b2, 0x051, /* frame frequency (row period) */ + 0x0b4, 0x002, /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0b0, 0x028, /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ + 0x0bf, 0x002|0x00d, /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */ +#endif + + 0x0a5, /* all pixel on */ + //0x02e, /* no scroll (according to SeeedGrayOLED sequence) */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* all pixel on */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display mode */ + + 0x015, /* column address... */ + 0x008, /* start at column 8, special for the LY120 ??? */ + 0x037, /* end at column 55, note: there are two pixel in one column */ + + 0x075, /* row address... */ + 0x008, + 0x05f, + + U8G_ESC_ADR(1), /* data mode */ + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + 0x000f, 0x000f, 0x0000, 0x0000, 0x000f,0x000f,0x0000,0x0000, + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ssd1327_2bit_96x96_prepare_page_seq[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x015, /* column address... */ + XOFFSET, /* start at column 8, special for the LY120 ??? */ + 0x037, /* end at column 55, note: there are two pixel in one column */ + 0x075, /* row address... */ + U8G_ESC_END /* end of sequence */ +}; + + +static void u8g_dev_ssd1327_2bit_prepare_page(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_prepare_page_seq); + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +static void u8g_dev_ssd1327_2bit_2x_prepare_page(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t page = ((u8g_pb_t *)(dev->dev_mem))->p.page; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_prepare_page_seq); + + page <<= 1; + page += is_odd; + + page <<= 2; + u8g_WriteByte(u8g, dev, page); /* start at the selected page */ + page += 3; + u8g_WriteByte(u8g, dev, page); /* end within the selected page */ + + u8g_SetAddress(u8g, dev, 1); /* data mode */ +} + +/* assumes row autoincrement and activated nibble remap */ +static void u8g_dev_ssd1327_2bit_write_4_pixel(u8g_t *u8g, u8g_dev_t *dev, uint8_t left, uint8_t right) +{ + uint8_t d, tmp, cnt; + static uint8_t buf[4]; + buf[0] = 0; + buf[1] = 0; + buf[2] = 0; + buf[3] = 0; + cnt = 0; + do + { + if ( left == 0 && right == 0 ) + break; + d = left; + d &= 3; + d <<= 4; + tmp = right; + tmp &= 3; + d |= tmp; + d <<= 2; + buf[cnt] = d; + left >>= 2; + right >>= 2; + cnt++; + }while ( cnt < 4 ); + u8g_WriteSequence(u8g, dev, 4, buf); +} + +static void u8g_dev_ssd1327_2bit_write_buffer(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + cnt = pb->width; + cnt >>= 1; + ptr = pb->buf; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1327_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +static void u8g_dev_ssd1327_2bit_2x_write_buffer(u8g_t *u8g, u8g_dev_t *dev, uint8_t is_odd) +{ + uint8_t cnt, left, right; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + ptr = pb->buf; + cnt = pb->width; + if ( is_odd ) + ptr += cnt; + cnt >>= 1; + do + { + left = *ptr++; + right = *ptr++; + u8g_dev_ssd1327_2bit_write_4_pixel(u8g, dev, left, right); + cnt--; + } while( cnt > 0 ); +} + +uint8_t u8g_dev_ssd1327_96x96_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1327_2bit_prepare_page(u8g, dev); + u8g_dev_ssd1327_2bit_write_buffer(u8g, dev); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1327_96x96_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1327_2bit_96x96_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_dev_ssd1327_2bit_2x_prepare_page(u8g, dev, 0); + u8g_dev_ssd1327_2bit_2x_write_buffer(u8g, dev, 0); + u8g_dev_ssd1327_2bit_2x_prepare_page(u8g, dev, 1); + u8g_dev_ssd1327_2bit_2x_write_buffer(u8g, dev, 1); + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_sw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1327_96x96_gr_i2c , WIDTH, HEIGHT, 4, u8g_dev_ssd1327_96x96_gr_fn, U8G_COM_SSD_I2C); + +#define DWIDTH (2*WIDTH) +uint8_t u8g_dev_ssd1327_96x96_2x_buf[DWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1327_96x96_2x_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1327_96x96_2x_buf}; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_sw_spi = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_hw_spi = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1327_96x96_2x_gr_i2c = { u8g_dev_ssd1327_96x96_2x_gr_fn, &u8g_dev_ssd1327_96x96_2x_pb, U8G_COM_SSD_I2C }; + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_64128n.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_64128n.c new file mode 100644 index 000000000..01fc9fc0c --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_64128n.c @@ -0,0 +1,153 @@ +/* + + u8g_dev_st7565_64128n.c (Displaytech) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_64128n_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0A2, /* 0x0a2: LCD bias 1/9 (according to Displaytech 64128N datasheet) */ + 0x0A0, /* Normal ADC Select (according to Displaytech 64128N datasheet) */ + + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x040, /* Display start line for Displaytech 64128N */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x010, /* Set V0 voltage resistor ratio. Setting for controlling brightness of Displaytech 64128N */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x01e, /* Contrast value. Setting for controlling brightness of Displaytech 64128N */ + + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0x10 */ + 0x000, /* set lower 4 bit of the col adr to 0x00. Changed for DisplayTech 64128N */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_64128n_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_64128n_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_64128n_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_64128n_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_HW_SPI); + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c new file mode 100644 index 000000000..095ef369c --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c @@ -0,0 +1,140 @@ +/* + + u8g_dev_st7565_dogm128.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +const uint8_t u8g_dev_st7565_dogm128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode: set scan direction normal operation */ + 0x0a6, /* display normal (none reverse) */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value, EA default: 0x016 */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0a4, /* normal display (not all on) */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm128_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_dogm128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_dogm128_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_dogm128_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c new file mode 100644 index 000000000..a76d54b3f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c @@ -0,0 +1,157 @@ +/* + + u8g_dev_st7565_dogm132.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 132 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_st7565_dogm132_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x01f, /* contrast value, EA default: 0x01f */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + +#ifdef OBSOLETE_DOGM128 + 0x040, /* set display start line */ + 0x0c8, /* set scan direction inverse operation */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value, EA default: 0x016 */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ +#endif + + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_dogm132_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_dogm132_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm132_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_dogm132_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm132_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_dogm132_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm132_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c new file mode 100644 index 000000000..ab8ed39b6 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c @@ -0,0 +1,157 @@ +/* + + u8g_dev_st7565_lm6059.c (Adafruit display) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_lm6059_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0a3, /* 0x0a2: LCD bias 1/9 (suggested for the LM6063), 0x0a3: Used by Adafruit, 0x0a2 does not work */ + /* the LM6059 vs LM6063, ADC and SHL have inverted settings */ + 0x0a0, /* 0x0a1: ADC set to normal (suggested for the LM6059), 0x0a0: Used by Adafruit -> normal mode */ + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x060, /* set display start line */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x026, /* set V0 voltage resistor ratio to 6 (Adafruit Value, no info from LM6063 Manual) */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + + /*0x0ac,*/ /* indicator */ + /*0x000,*/ /* disable */ + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x001, /* set lower 4 bit of the col adr */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6059_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_st7565_lm6059_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_lm6059_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6059_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_lm6059_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6059_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c new file mode 100644 index 000000000..47ccb1ec7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c @@ -0,0 +1,188 @@ +/* + + u8g_dev_st7565_lm6063.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +#ifdef OLD_ADAFRUIT_CODE +static const uint8_t OLD_u8g_dev_st7565_lm6063_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select / 17 Jan: seems to be a bug, must be 0x0c0 */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + /*0x0f8,*/ /* set booster ratio to */ + /*0x000, */ /* 4x */ + /*0x027,*/ /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; +#endif + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7565_lm6063_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x0a3, /* 0x0a2: LCD bias 1/9 (suggested for the LM6063), 0x0a3: Used by Adafruit */ + 0x0a1, /* 0x0a1: ADC set to reverse (suggested for the LM6063), 0x0a0: Used by Adafruit -> normal mode */ + 0x0c0, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x040, /* set display start line */ + + 0x028 | 0x04, /* power control: turn on voltage converter */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x06, /* power control: turn on voltage regulator */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x028 | 0x07, /* power control: turn on voltage follower */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x026, /* set V0 voltage resistor ratio to 6 (Adafruit Value, no info from LM6063 Manual) */ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + 0x081, /* set contrast */ + 0x018, /* contrast value*/ + + /*0x0ac,*/ /* indicator */ + /*0x000,*/ /* disable */ + + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_lm6063_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_st7565_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_st7565_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_st7565_lm6063_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_st7565_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_st7565_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_lm6063_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6063_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_lm6063_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_lm6063_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c new file mode 100644 index 000000000..ed80a0693 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c @@ -0,0 +1,143 @@ +/* + + u8g_dev_st7565_nhd_c12832.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_st7565_c12832_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a0, /* ADC set, values: a0=normal, a1=reverse */ + 0x0c8, /* common output mode: c0=normal, c8=reverse */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x00a, /* contrast value */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12832_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_c12832_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12832_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_PARALLEL); diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c new file mode 100644 index 000000000..5e3f8b9fe --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c @@ -0,0 +1,145 @@ +/* + + u8g_dev_st7565_nhd_c12864.c + + Support for the NHD-C12864A1Z-FSB-FBW (Newhaven Display) + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +const uint8_t u8g_dev_st7565_nhd_c12864_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(10), /* do reset low pulse with (10*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode: set scan direction normal operation */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x027, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x008, /* contrast: 0x008 is a good value for NHD C12864, Nov 2012: User reports that 0x1a is much better */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_nhd_c12864_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x004, /* set lower 4 bit of the col adr to 4 (NHD C12864) */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12864_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0ac, /* static indicator off */ + 0x000, /* indicator register set (not sure if this is required) */ + 0x0ae, /* display off */ + 0x0a5, /* all points on */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_st7565_c12864_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x0a4, /* all points off */ + 0x0af, /* display on */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7565_nhd_c12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12864_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_c12864_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7565_nhd_c12864_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_nhd_c12864_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12864_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_nhd_c12864_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c new file mode 100644 index 000000000..4851017aa --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c @@ -0,0 +1,420 @@ +/* + + u8g_dev_st7687_c144mvgd.c (1.44" TFT) + + Status: Started, but not finished + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + + +#ifdef FIRST_VERSION +/* +see also: read.pudn.com/downloads115/sourcecode/app/484503/LCM_Display.c__.htm +http://en.pudn.com/downloads115/sourcecode/app/detail484503_en.html +*/ + +static const uint8_t u8g_dev_st7687_c144mvgd_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x001, /* A0=0, SW reset */ + U8G_ESC_DLY(200), /* delay 200 ms */ + + 0x0d7, /* EEPROM data auto re-load control */ + U8G_ESC_ADR(1), /* data mode */ + 0x09f, /* ARD = 1 */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0e0, /* EEPROM control in */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + +#ifdef NOT_REQUIRED + 0x0fa, /* EEPROM function selection 8.1.66 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ +#endif + + 0x0e3, /* Read from EEPROM, 8.1.55 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0e1, /* EEPROM control out, 8.1.53 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + //0x028, /* display off */ + 0x011, /* Sleep out & booster on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0c0, /* Vop setting, 8.1.42 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x001, /* 3.6 + 256*0.04 = 13.84 Volt */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + 0x0c3, /* Bias selection, 8.1.45 */ + U8G_ESC_ADR(1), /* data mode */ + 0x003, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c4, /* Booster setting 8.1.46 */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c5, /* ??? */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0cb, /* FV3 with Booster x2 control, 8.1.47 */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x036, /* Memory data access control, 8.1.28 */ + U8G_ESC_ADR(1), /* data mode */ + 0x080, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b5, /* N-line control, 8.1.37 */ + U8G_ESC_ADR(1), /* data mode */ + 0x089, + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0d0, /* Analog circuit setting, 8.1.49 */ + U8G_ESC_ADR(1), /* data mode */ + 0x01d, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b7, /* Com/Seg Scan Direction, 8.1.38 */ + U8G_ESC_ADR(1), /* data mode */ + 0x040, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x025, /* Write contrast, 8.1.17 */ + U8G_ESC_ADR(1), /* data mode */ + 0x03f, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x03a, /* Interface pixel format, 8.1.32 */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, /* 3: 12 bit per pixel Type A, 4: 12 bit Type B, 5: 16bit per pixel */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b0, /* Display Duty setting, 8.1.34 */ + U8G_ESC_ADR(1), /* data mode */ + 0x07f, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f0, /* Frame Freq. in Temp range A,B,C and D, 8.1.59 */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, + 0x00c, + 0x00c, + 0x015, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f9, /* Frame RGB Value, 8.1.65 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, + 0x005, + 0x008, + 0x00a, + 0x00c, + 0x00e, + 0x010, + 0x011, + 0x012, + 0x013, + 0x014, + 0x015, + 0x016, + 0x018, + 0x01a, + 0x01b, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f9, /* Frame RGB Value, 8.1.65 */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, + 0x000, + 0x000, + 0x000, + 0x033, + 0x055, + 0x055, + 0x055, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x029, /* display on */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ + +}; + +#else + +/* +http://www.waitingforfriday.com/images/e/e3/FTM144D01N_test.zip +*/ + +static const uint8_t u8g_dev_st7687_c144mvgd_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + 0x011, /* Sleep out & booster on */ + U8G_ESC_DLY(5), /* delay 5 ms */ + + 0x03a, /* Interface pixel format, 8.1.32 */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, /* 3: 12 bit per pixel Type A, 4: 12 bit Type B, 5: 16bit per pixel */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x026, /* SET_GAMMA_CURVE */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0f2, /* GAM_R_SEL */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* enable gamma adj */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0e0, /* POSITIVE_GAMMA_CORRECT */ + U8G_ESC_ADR(1), /* data mode */ + 0x3f, + 0x25, + 0x1c, + 0x1e, + 0x20, + 0x12, + 0x2a, + 0x90, + 0x24, + 0x11, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0e1, /* NEGATIVE_GAMMA_CORRECT */ + U8G_ESC_ADR(1), /* data mode */ + 0x20, + 0x20, + 0x20, + 0x20, + 0x05, + 0x00, + 0x15, + 0xa7, + 0x3d, + 0x18, + 0x25, + 0x2a, + 0x2b, + 0x2b, + 0x3a, + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0b1, /* FRAME_RATE_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x008, /* DIVA = 8 */ + 0x008, /* VPA = 8 */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x0b4, /* DISPLAY_INVERSION */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, /* NLA = 1, NLB = 1, NLC = 1 (all on Frame Inversion) */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c0, /* POWER_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x00a, /* VRH = 10: GVDD = 4.30 */ + 0x002, /* VC = 2: VCI1 = 2.65 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c1, /* POWER_CONTROL2 */ + U8G_ESC_ADR(1), /* data mode */ + 0x002, /* BT = 2: AVDD = 2xVCI1, VCL = -1xVCI1, VGH = 5xVCI1, VGL = -2xVCI1 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c5, /* VCOM_CONTROL1 */ + U8G_ESC_ADR(1), /* data mode */ + 0x050, /* VMH = 80: VCOMH voltage = 4.5 */ + 0x05b, /* VML = 91: VCOML voltage = -0.225 */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x0c7, /* VCOM_OFFSET_CONTROL */ + U8G_ESC_ADR(1), /* data mode */ + 0x040, /* nVM = 0, VMF = 64: VCOMH output = VMH, VCOML output = VML */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x02a, /* SET_COLUMN_ADDRESS */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x000, /* */ + 0x000, /* */ + 0x07f, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x02b, /* SET_PAGE_ADDRESS */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* */ + 0x000, /* */ + 0x000, /* */ + 0x07f, /* */ + U8G_ESC_ADR(0), /* instruction mode */ + + 0x036, /* SET_ADDRESS_MODE */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* Select display orientation */ + U8G_ESC_ADR(0), /* instruction mode */ + + + 0x029, /* display on */ + + 0x02c, /* write start */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ + +}; + +#endif + + + + +/* calculate bytes for Type B 4096 color display */ +static uint8_t get_byte_1(uint8_t v) +{ + v >>= 4; + v &= 0x0e; + return v; +} + +static uint8_t get_byte_2(uint8_t v) +{ + uint8_t w; + w = v; + w &= 3; + w = (w<<2) | w; + v <<= 3; + v &= 0x0e0; + w |= v; + return w; +} + +uint8_t u8g_dev_st7687_c144mvgd_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7687_c144mvgd_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i, j; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02a ); /* Column address set 8.1.20 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, 0x000 ); /* x0 */ + u8g_WriteByte(u8g, dev, WIDTH-1 ); /* x1 */ + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02b ); /* Row address set 8.1.21 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteByte(u8g, dev, y ); /* y0 */ + u8g_WriteByte(u8g, dev, y+PAGE_HEIGHT-1 ); /* y1 */ + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x02c ); /* Memory write 8.1.22 */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + + for( j = 0; j < WIDTH; j ++ ) + { + u8g_WriteByte(u8g, dev, get_byte_1(*ptr) ); + u8g_WriteByte(u8g, dev, get_byte_2(*ptr) ); + ptr++; + } + } + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_st7687_c144mvgd_8h8_buf[WIDTH*8] U8G_NOCOMMON ; +u8g_pb_t u8g_st7687_c144mvgd_8h8_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_st7687_c144mvgd_8h8_buf}; + +u8g_dev_t u8g_dev_st7687_c144mvgd_sw_spi = { u8g_dev_st7687_c144mvgd_fn, &u8g_st7687_c144mvgd_8h8_pb, u8g_com_arduino_sw_spi_fn }; + +u8g_dev_t u8g_dev_st7687_c144mvgd_8bit = { u8g_dev_st7687_c144mvgd_fn, &u8g_st7687_c144mvgd_8h8_pb, U8G_COM_PARALLEL }; diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_128x64.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_128x64.c new file mode 100644 index 000000000..b0b18d34d --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_128x64.c @@ -0,0 +1,171 @@ +/* + + u8g_dev_st7565_128x64.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + + if ( y < 32 ) + { + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + } + else + { + u8g_WriteByte(u8g, dev, 0x080 | (y-32) ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 | 8); /* set x pos to 64*/ + } + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_128x64_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + + if ( y < 32 ) + { + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + } + else + { + u8g_WriteByte(u8g, dev, 0x080 | (y-32) ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 | 8); /* set x pos to 64*/ + } + + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_st7920_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_128x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, U8G_COM_FAST_PARALLEL); + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_128x64_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_128x64_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_128x64_4x_buf}; +u8g_dev_t u8g_dev_st7920_128x64_4x_sw_spi = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_128x64_4x_hw_spi = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_128x64_4x_8bit = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, U8G_COM_FAST_PARALLEL }; + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_192x32.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_192x32.c new file mode 100644 index 000000000..28535e0cd --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_192x32.c @@ -0,0 +1,151 @@ +/* + + u8g_dev_st7920_192x32.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 192 +#define HEIGHT 32 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_192x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_192x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_192x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_192x32_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_192x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_st7920_192x32_sw_spi, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_192x32_hw_spi, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_192x32_8bit, WIDTH, HEIGHT, 8, u8g_dev_st7920_192x32_fn, U8G_COM_FAST_PARALLEL); + + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_192x32_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_192x32_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_192x32_4x_buf}; +u8g_dev_t u8g_dev_st7920_192x32_4x_sw_spi = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_192x32_4x_hw_spi = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_192x32_4x_8bit = { u8g_dev_st7920_192x32_4x_fn, &u8g_dev_st7920_192x32_4x_pb, U8G_COM_FAST_PARALLEL }; + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_202x32.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_202x32.c new file mode 100644 index 000000000..129fc748f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_202x32.c @@ -0,0 +1,154 @@ +/* + + u8g_dev_st7920_202x32.c + tested with CFAG20232 + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 202 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + + +/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */ +static const uint8_t u8g_dev_st7920_202x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + U8G_ESC_DLY(100), /* 8 Dez 2012: additional delay 100 ms because of reset*/ + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x038, /* 8 Bit interface (DL=1), basic instruction set (RE=0) */ + 0x00c, /* display on, cursor & blink off; 0x08: all off */ + 0x006, /* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */ + 0x002, /* disable scroll, enable CGRAM adress */ + 0x001, /* clear RAM, needs 1.6 ms */ + U8G_ESC_DLY(100), /* delay 10 ms */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_st7920_202x32_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_202x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 8; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_st7920_202x32_4x_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7920_202x32_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + for( i = 0; i < 32; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x03e ); /* enable extended mode */ + u8g_WriteByte(u8g, dev, 0x080 | y ); /* y pos */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set x pos to 0*/ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + ptr += WIDTH/8; + y++; + } + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_st7920_202x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_ST7920_SW_SPI); +U8G_PB_DEV(u8g_dev_st7920_202x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_ST7920_HW_SPI); +U8G_PB_DEV(u8g_dev_st7920_202x32_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_202x32_fn, U8G_COM_FAST_PARALLEL); + +#define QWIDTH (WIDTH*4) +uint8_t u8g_dev_st7920_202x32_4x_buf[QWIDTH] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7920_202x32_4x_pb = { {32, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7920_202x32_4x_buf}; +u8g_dev_t u8g_dev_st7920_202x32_4x_sw_spi = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_ST7920_SW_SPI }; +u8g_dev_t u8g_dev_st7920_202x32_4x_hw_spi = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_ST7920_HW_SPI }; +u8g_dev_t u8g_dev_st7920_202x32_4x_8bit = { u8g_dev_st7920_202x32_4x_fn, &u8g_dev_st7920_202x32_4x_pb, U8G_COM_FAST_PARALLEL }; + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_128x64.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_128x64.c new file mode 100644 index 000000000..c1626ccc1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_128x64.c @@ -0,0 +1,191 @@ +/* + + u8g_dev_t6963_128x64.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 16 + + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_128x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_128x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_128x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_128x64_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_128x64_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_128x64_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_128x64_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_128x64_8bit = { u8g_dev_t6963_128x64_fn, &u8g_dev_t6963_128x64_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x128.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x128.c new file mode 100644 index 000000000..4a28edbcf --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x128.c @@ -0,0 +1,195 @@ +/* + + u8g_dev_t6963_240x128.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 16 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_240x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_240x128_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_240x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_240x128_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_240x128_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_240x128_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_240x128_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_240x128_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_240x128_8bit = { u8g_dev_t6963_240x128_fn, &u8g_dev_t6963_240x128_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x64.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x64.c new file mode 100644 index 000000000..6d209d212 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x64.c @@ -0,0 +1,195 @@ +/* + + u8g_dev_t6963_240x64.c + + Tested with Varitronix MGLS240128TZ + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Application Notes for the MGLS 240x128 + www.baso.no/content/pdf/T6963C_Application.pdf + + Hitachi App Notes: + https://www.sparkfun.com/datasheets/LCD/Monochrome/AN-029-Toshiba_T6963C.pdf + + Notes: + The font selection pins should generate the 8x8 font. + For the MGLS240128TZ only FS1 is available on pin 18. + FS1 must be low to generate the 8x8 font. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 16 + + +/* + http://www.mark-products.com/graphics.htm#240x64%20Pixel%20Format +*/ + +/* text is not used, so settings are not relevant */ +static const uint8_t u8g_dev_t6963_240x64_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_RST(15), /* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/ + + U8G_ESC_CS(1), /* enable chip */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x021, /* set cursor position */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x022, /* set offset */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x040, /* text home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x041, /* text columns */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x042, /* graphics home */ + + U8G_ESC_ADR(0), /* data mode */ + WIDTH/8, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x043, /* graphics columns */ + + // mode set + // 0x080: Internal CG, OR Mode + // 0x081: Internal CG, EXOR Mode + // 0x083: Internal CG, AND Mode + // 0x088: External CG, OR Mode + // 0x089: External CG, EXOR Mode + // 0x08B: External CG, AND Mode + U8G_ESC_ADR(1), /* instruction mode */ + 0x080, /* mode register: OR Mode, Internal Character Mode */ + + U8G_ESC_ADR(1), /* instruction mode */ + // display mode + // 0x090: Display off + // 0x094: Graphic off, text on, cursor off, blink off + // 0x096: Graphic off, text on, cursor on, blink off + // 0x097: Graphic off, text on, cursor on, blink on + // 0x098: Graphic on, text off, cursor off, blink off + // 0x09a: Graphic on, text off, cursor on, blink off + // ... + // 0x09c: Graphic on, text on, cursor off, blink off + // 0x09f: Graphic on, text on, cursor on, blink on + 0x098, /* mode register: Display Mode, Graphics on, Text off, Cursor off */ + + U8G_ESC_ADR(0), /* data mode */ + 0x000, /* low byte */ + 0x000, /* height byte */ + U8G_ESC_ADR(1), /* instruction mode */ + 0x024, /* set adr pointer */ + + + U8G_ESC_DLY(100), /* delay 100 ms */ + + U8G_ESC_ADR(0), /* data mode */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_t6963_240x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_240x64_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i; + uint16_t disp_ram_adr; + uint8_t *ptr; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 1); + y = pb->p.page_y0; + ptr = pb->buf; + disp_ram_adr = WIDTH/8; + disp_ram_adr *= y; + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_WriteByte(u8g, dev, disp_ram_adr&255 ); /* address low byte */ + u8g_WriteByte(u8g, dev, disp_ram_adr>>8 ); /* address hight byte */ + u8g_SetAddress(u8g, dev, 1); /* cmd mode */ + u8g_WriteByte(u8g, dev, 0x024 ); /* set adr ptr */ + + u8g_WriteSequence(u8g, dev, WIDTH/8, ptr); + + ptr += WIDTH/8; + disp_ram_adr += WIDTH/8; + } + u8g_SetAddress(u8g, dev, 0); /* data mode */ + u8g_SetChipSelect(u8g, dev, 0); + } + break; + } + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +} + +// U8G_PB_DEV(u8g_dev_t6963_240x64_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_240x64_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_240x64_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_240x64_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_240x64_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_240x64_8bit = { u8g_dev_t6963_240x64_fn, &u8g_dev_t6963_240x64_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c new file mode 100644 index 000000000..17689dc4a --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c @@ -0,0 +1,115 @@ +/* + + u8g_dev_tls8204_84x48.c + + Display: Nokia 84x48 + + Status: Tested with TLS8204V12 Display by Olimex MOD-LCD3310 + + Contributed: http://code.google.com/p/u8glib/issues/detail?id=126 + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 84 +#define HEIGHT 48 +#define PAGE_HEIGHT 8 + + +static const uint8_t u8g_dev_tls8204_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x021, /* activate chip (PD=0), horizontal increment (V=0), enter extended command set (H=1) */ + 0x006, /* temp. control: b10 = 2 */ + 0x04 | !!((66-1)&(1u<<6)), + 0x40 | ((66-2) & ((1u<<6)-1)), + 0x013, /* bias system 1:48 */ + 0x0c0, /* medium Vop */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal operation */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00d, /* display on, invert */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + + +uint8_t u8g_dev_tls8204_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_tls8204_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_SetAddress(u8g, dev, 0); /* command mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x020 ); /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + u8g_WriteByte(u8g, dev, 0x080 ); /* set X address */ + u8g_WriteByte(u8g, dev, 0x040 | pb->p.page); /* set Y address */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* the contrast adjustment does not work, needs to be analysed */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_SetChipSelect(u8g, dev, 1); + u8g_WriteByte(u8g, dev, 0x021); /* command mode, extended function set */ + u8g_WriteByte(u8g, dev, 0x080 | ( (*(uint8_t *)arg) >> 1 ) ); + u8g_WriteByte(u8g, dev, 0x020); /* command mode, extended function set */ + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + + +U8G_PB_DEV(u8g_dev_tls8204_84x48_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_tls8204_fn, U8G_COM_SW_SPI); + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c new file mode 100644 index 000000000..b7111d5c8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c @@ -0,0 +1,290 @@ +/* + + u8g_dev_uc1610_dogxl160.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 160 +#define HEIGHT 104 + +static const uint8_t u8g_dev_uc1610_dogxl160_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x0f1, /* set display height-1 */ + 0x067, /* */ + 0x0c0, /* SEG & COM normal */ + 0x040, /* set display start line */ + 0x050, /* */ + 0x02b, /* set panelloading */ + 0x0eb, /* set bias 1/2 */ + 0x081, /* set contrast */ + 0x05f, /* */ + 0x089, /* set auto increment */ + 0x0a6, /* normal pixel mode */ + 0x0d3, /* 0xd3=40% RMS separation for gray levels */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565, UC1610 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1610_dogxl160_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static uint8_t u8g_dev_1to2(uint8_t n) +{ + register uint8_t a,b,c; + a = n; + a &= 1; + n <<= 1; + b = n; + b &= 4; + n <<= 1; + c = n; + c &= 16; + n <<= 1; + n &= 64; + n |= a; + n |= b; + n |= c; + n |= n << 1; + return n; +} + +uint8_t u8g_dev_uc1610_dogxl160_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + int i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2+1) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] >> 4 ) ); + } + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v2_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_2x_bw_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + int i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+1) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf))[i] >> 4 ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+2) ); /* select current page 1/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf+WIDTH))[i] ) ); + } + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*4+3) ); /* select current page 2/2 (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + for( i = 0; i < WIDTH; i++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_1to2( ((uint8_t *)(pb->buf+WIDTH))[i] >> 4 ) ); + } + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1610_dogxl160_2x_gr_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_WriteSequence(u8g, dev, WIDTH, pb->buf) == 0 ) + return 0; + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1610_dogxl160_data_start); + u8g_WriteByte(u8g, dev, 0x060 | (pb->p.page*2+1) ); /* select current page (UC1610) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_WriteSequence(u8g, dev, WIDTH, pb->buf+WIDTH) == 0 ) + return 0; + + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 1); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb16v2_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_bw_sw_spi, WIDTH, HEIGHT, 8, u8g_dev_uc1610_dogxl160_bw_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_bw_hw_spi, WIDTH, HEIGHT, 8, u8g_dev_uc1610_dogxl160_bw_fn, U8G_COM_HW_SPI); + +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_gr_sw_spi, WIDTH, HEIGHT, 4, u8g_dev_uc1610_dogxl160_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1610_dogxl160_gr_hw_spi, WIDTH, HEIGHT, 4, u8g_dev_uc1610_dogxl160_gr_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1610_dogxl160_2x_bw_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1610_dogxl160_2x_bw_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1610_dogxl160_2x_bw_buf}; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_sw_spi = { u8g_dev_uc1610_dogxl160_2x_bw_fn, &u8g_dev_uc1610_dogxl160_2x_bw_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_bw_hw_spi = { u8g_dev_uc1610_dogxl160_2x_bw_fn, &u8g_dev_uc1610_dogxl160_2x_bw_pb, U8G_COM_HW_SPI }; + +uint8_t u8g_dev_uc1610_dogxl160_2x_gr_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1610_dogxl160_2x_gr_pb = { {8, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1610_dogxl160_2x_gr_buf}; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_sw_spi = { u8g_dev_uc1610_dogxl160_2x_gr_fn, &u8g_dev_uc1610_dogxl160_2x_gr_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1610_dogxl160_2x_gr_hw_spi = { u8g_dev_uc1610_dogxl160_2x_gr_fn, &u8g_dev_uc1610_dogxl160_2x_gr_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c new file mode 100644 index 000000000..853d8c034 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c @@ -0,0 +1,113 @@ +/* + + u8g_dev_uc1701_dogs102.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 102 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_dogs102_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + 0x040, /* set display start line to 0 */ + 0x0a1, /* ADC set to reverse */ + 0x0c0, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x027, /* regulator, booster and follower */ + 0x081, /* set contrast */ + 0x00e, /* contrast value, EA default: 0x010, previous value for S102: 0x0e */ + 0x0fa, /* Set Temp compensation */ + 0x090, /* 0.11 deg/c WP Off WC Off*/ + 0x0a4, /* normal display */ + 0x0af, /* display on */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565, UC1610 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_dogs102_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_dogs102_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1701_dogs102_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_dogs102_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1701_dogs102_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_dogs102_fn, U8G_COM_HW_SPI); + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c new file mode 100644 index 000000000..55b2f9b71 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c @@ -0,0 +1,114 @@ +/* + + u8g_dev_uc1701_mini12864.c (dealextreme) + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_uc1701_mini12864_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + 0x040, /* set display start line to 0 */ + 0x0a0, /* ADC set to reverse */ + 0x0c8, /* common output mode */ + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + 0x0a2, /* LCD bias 1/9 */ + 0x02f, /* all power control circuits on */ + 0x0f8, /* set booster ratio to */ + 0x000, /* 4x */ + 0x023, /* set V0 voltage resistor ratio to large */ + 0x081, /* set contrast */ + 0x027, /* contrast value */ + 0x0ac, /* indicator */ + 0x000, /* disable */ + 0x0af, /* display on */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a5, /* display all points, ST7565 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1701_mini12864_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 */ + 0x000, /* set lower 4 bit of the col adr to 4 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1701_mini12864_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + u8g_InitCom(u8g, dev); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 0); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 1); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); + u8g_SetChipSelect(u8g, dev, 0); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1701_mini12864_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1701_mini12864_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1701_mini12864_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ellipse.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ellipse.c new file mode 100644 index 000000000..6c35fdf23 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ellipse.c @@ -0,0 +1,100 @@ +/* + + u8g_ellipse.c + + Utility to draw empty and filled ellipses. + + Universal 8bit Graphics Library + + Copyright (c) 2011, bjthom@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Addition to the U8G Library as of 02/29/12 + Adapted from Bresenham's Algorithm and the following websites: + http://free.pages.at/easyfilter/bresenham.html + http://homepage.smc.edu/kennedy_john/belipse.pdf + +*/ + +#include "u8g.h" + + +#ifdef WORK_IN_PROGRESS + +void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1) +{ + int a = abs(x1 - x0); + int b = abs(y1 - y0); //get diameters + int b1 = b&1; + long dx = 4*(1-a)*b*b; + long dy = 4*(b1+1)*a*a; + long err = dx+dy+b1*a*a; + long e2; + + if (x0 > x1) { x0 = x1; x1 += a; } + if (y0 > y1) { y0 = y1; } + y0 += (b+1)/2; + y1 = y0-b1; + a *= 8*a; + b1 = 8*b*b; + + do { + u8g_DrawPixel(u8g, x1, y0); + u8g_DrawPixel(u8g, x0, y0); + u8g_DrawPixel(u8g, x0, y1); + u8g_DrawPixel(u8g, x1, y1); + e2 = 2*err; + if (e2 >= dx) { + x0++; + x1--; + err += dx += b1; + } + if (e2 <= dy) { + y0++; + y1--; + err += dy += a; + } + } while (x0 <= x1); + + while (y0-y1 < b) { + u8g_DrawPixel(u8g, x0-1, y0); + u8g_DrawPixel(u8g, x1+1, y0++); + u8g_DrawPixel(u8g, x0-1, y1); + u8g_DrawPixel(u8g, x1+1, y1--); + } +} + +void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t xr, u8g_uint_t yr) +{ + u8g_DrawPixel(u8g, x0, y0+yr); + u8g_DrawPixel(u8g, x0, y0-yr); + u8g_DrawPixel(u8g, x0+xr, y0); + u8g_DrawPixel(u8g, x0-xr, y0); +} + +#endif + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font.c new file mode 100644 index 000000000..bfdc0b28a --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font.c @@ -0,0 +1,1422 @@ +/* + + u8g_font.c + + U8G Font High Level Interface + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* font api */ + +/* pointer to the start adress of the glyph, points to progmem area */ +typedef void * u8g_glyph_t; + +/* size of the font data structure, there is no struct or class... */ +#define U8G_FONT_DATA_STRUCT_SIZE 17 + +/* + ... instead the fields of the font data structure are accessed directly by offset + font information + offset + 0 font format + 1 FONTBOUNDINGBOX width unsigned + 2 FONTBOUNDINGBOX height unsigned + 3 FONTBOUNDINGBOX x-offset signed + 4 FONTBOUNDINGBOX y-offset signed + 5 capital A height unsigned + 6 start 'A' + 8 start 'a' + 10 encoding start + 11 encoding end + 12 descent 'g' negative: below baseline + 13 font max ascent + 14 font min decent negative: below baseline + 15 font xascent + 16 font xdecent negative: below baseline + +*/ + +/* use case: What is the width and the height of the minimal box into which string s fints? */ +void u8g_font_GetStrSize(const void *font, const char *s, u8g_uint_t *width, u8g_uint_t *height); +void u8g_font_GetStrSizeP(const void *font, const char *s, u8g_uint_t *width, u8g_uint_t *height); + +/* use case: lower left edge of a minimal box is known, what is the correct x, y position for the string draw procedure */ +void u8g_font_AdjustXYToDraw(const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y); +void u8g_font_AdjustXYToDrawP(const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y); + +/* use case: Baseline origin known, return minimal box */ +void u8g_font_GetStrMinBox(u8g_t *u8g, const void *font, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height); + +/* procedures */ + +/*========================================================================*/ +/* low level byte and word access */ + +/* removed NOINLINE, because it leads to smaller code, might also be faster */ +//static uint8_t u8g_font_get_byte(const u8g_fntpgm_uint8_t *font, uint8_t offset) U8G_NOINLINE; +static uint8_t u8g_font_get_byte(const u8g_fntpgm_uint8_t *font, uint8_t offset) +{ + font += offset; + return u8g_pgm_read( (u8g_pgm_uint8_t *)font ); +} + +static uint16_t u8g_font_get_word(const u8g_fntpgm_uint8_t *font, uint8_t offset) U8G_NOINLINE; +static uint16_t u8g_font_get_word(const u8g_fntpgm_uint8_t *font, uint8_t offset) +{ + uint16_t pos; + font += offset; + pos = u8g_pgm_read( (u8g_pgm_uint8_t *)font ); + font++; + pos <<= 8; + pos += u8g_pgm_read( (u8g_pgm_uint8_t *)font); + return pos; +} + +/*========================================================================*/ +/* direct access on the font */ + +static uint8_t u8g_font_GetFormat(const u8g_fntpgm_uint8_t *font) U8G_NOINLINE; +static uint8_t u8g_font_GetFormat(const u8g_fntpgm_uint8_t *font) +{ + return u8g_font_get_byte(font, 0); +} + +static uint8_t u8g_font_GetFontGlyphStructureSize(const u8g_fntpgm_uint8_t *font) U8G_NOINLINE; +static uint8_t u8g_font_GetFontGlyphStructureSize(const u8g_fntpgm_uint8_t *font) +{ + switch(u8g_font_GetFormat(font)) + { + case 0: return 6; + case 1: return 3; + } + return 3; +} + +static uint8_t u8g_font_GetBBXWidth(const void *font) +{ + return u8g_font_get_byte(font, 1); +} + +static uint8_t u8g_font_GetBBXHeight(const void *font) +{ + return u8g_font_get_byte(font, 2); +} + +static int8_t u8g_font_GetBBXOffX(const void *font) +{ + return u8g_font_get_byte(font, 3); +} + +static int8_t u8g_font_GetBBXOffY(const void *font) +{ + return u8g_font_get_byte(font, 4); +} + +uint8_t u8g_font_GetCapitalAHeight(const void *font) +{ + return u8g_font_get_byte(font, 5); +} + +uint16_t u8g_font_GetEncoding65Pos(const void *font) U8G_NOINLINE; +uint16_t u8g_font_GetEncoding65Pos(const void *font) +{ + return u8g_font_get_word(font, 6); +} + +uint16_t u8g_font_GetEncoding97Pos(const void *font) U8G_NOINLINE; +uint16_t u8g_font_GetEncoding97Pos(const void *font) +{ + return u8g_font_get_word(font, 8); +} + +uint8_t u8g_font_GetFontStartEncoding(const void *font) +{ + return u8g_font_get_byte(font, 10); +} + +uint8_t u8g_font_GetFontEndEncoding(const void *font) +{ + return u8g_font_get_byte(font, 11); +} + +int8_t u8g_font_GetLowerGDescent(const void *font) +{ + return u8g_font_get_byte(font, 12); +} + +int8_t u8g_font_GetFontAscent(const void *font) +{ + return u8g_font_get_byte(font, 13); +} + +int8_t u8g_font_GetFontDescent(const void *font) +{ + return u8g_font_get_byte(font, 14); +} + +int8_t u8g_font_GetFontXAscent(const void *font) +{ + return u8g_font_get_byte(font, 15); +} + +int8_t u8g_font_GetFontXDescent(const void *font) +{ + return u8g_font_get_byte(font, 16); +} + + +/* return the data start for a font and the glyph pointer */ +static uint8_t *u8g_font_GetGlyphDataStart(const void *font, u8g_glyph_t g) +{ + return ((u8g_fntpgm_uint8_t *)g) + u8g_font_GetFontGlyphStructureSize(font); +} + +/* calculate the overall length of the font, only used to create the picture for the google wiki */ +size_t u8g_font_GetSize(const void *font) +{ + uint8_t *p = (uint8_t *)(font); + uint8_t font_format = u8g_font_GetFormat(font); + uint8_t data_structure_size = u8g_font_GetFontGlyphStructureSize(font); + uint8_t start, end; + uint8_t i; + uint8_t mask = 255; + + start = u8g_font_GetFontStartEncoding(font); + end = u8g_font_GetFontEndEncoding(font); + + if ( font_format == 1 ) + mask = 15; + + p += U8G_FONT_DATA_STRUCT_SIZE; /* skip font general information */ + + i = start; + for(;;) + { + if ( u8g_pgm_read((u8g_pgm_uint8_t *)(p)) == 255 ) + { + p += 1; + } + else + { + p += u8g_pgm_read( ((u8g_pgm_uint8_t *)(p)) + 2 ) & mask; + p += data_structure_size; + } + if ( i == end ) + break; + i++; + } + + return p - (uint8_t *)font; +} + +/*========================================================================*/ +/* u8g interface, font access */ + +uint8_t u8g_GetFontBBXWidth(u8g_t *u8g) +{ + return u8g_font_GetBBXWidth(u8g->font); +} + +uint8_t u8g_GetFontBBXHeight(u8g_t *u8g) +{ + return u8g_font_GetBBXHeight(u8g->font); +} + +int8_t u8g_GetFontBBXOffX(u8g_t *u8g) U8G_NOINLINE; +int8_t u8g_GetFontBBXOffX(u8g_t *u8g) +{ + return u8g_font_GetBBXOffX(u8g->font); +} + +int8_t u8g_GetFontBBXOffY(u8g_t *u8g) U8G_NOINLINE; +int8_t u8g_GetFontBBXOffY(u8g_t *u8g) +{ + return u8g_font_GetBBXOffY(u8g->font); +} + +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g) U8G_NOINLINE; +uint8_t u8g_GetFontCapitalAHeight(u8g_t *u8g) +{ + return u8g_font_GetCapitalAHeight(u8g->font); +} + +/*========================================================================*/ +/* glyph handling */ + +static void u8g_CopyGlyphDataToCache(u8g_t *u8g, u8g_glyph_t g) +{ + uint8_t tmp; + switch( u8g_font_GetFormat(u8g->font) ) + { + case 0: + /* + format 0 + glyph information + offset + 0 BBX width unsigned + 1 BBX height unsigned + 2 data size unsigned (BBX width + 7)/8 * BBX height + 3 DWIDTH signed + 4 BBX xoffset signed + 5 BBX yoffset signed + byte 0 == 255 indicates empty glyph + */ + u8g->glyph_width = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 0 ); + u8g->glyph_height = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 1 ); + u8g->glyph_dx = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 3 ); + u8g->glyph_x = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 4 ); + u8g->glyph_y = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 5 ); + break; + case 1: + default: + /* +format 1 + 0 BBX xoffset signed --> upper 4 Bit + 0 BBX yoffset signed --> lower 4 Bit + 1 BBX width unsigned --> upper 4 Bit + 1 BBX height unsigned --> lower 4 Bit + 2 data size unsigned -(BBX width + 7)/8 * BBX height --> lower 4 Bit + 2 DWIDTH signed --> upper 4 Bit + byte 0 == 255 indicates empty glyph + */ + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 0 ); + u8g->glyph_y = tmp & 15; + u8g->glyph_y-=2; + tmp >>= 4; + u8g->glyph_x = tmp; + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 1 ); + u8g->glyph_height = tmp & 15; + tmp >>= 4; + u8g->glyph_width = tmp; + + tmp = u8g_pgm_read( ((u8g_pgm_uint8_t *)g) + 2 ); + tmp >>= 4; + u8g->glyph_dx = tmp; + + + break; + } +} + +//void u8g_FillEmptyGlyphCache(u8g_t *u8g) U8G_NOINLINE; +static void u8g_FillEmptyGlyphCache(u8g_t *u8g) +{ + u8g->glyph_dx = 0; + u8g->glyph_width = 0; + u8g->glyph_height = 0; + u8g->glyph_x = 0; + u8g->glyph_y = 0; +} + +/* + Find (with some speed optimization) and return a pointer to the glyph data structure + Also uncompress (format 1) and copy the content of the data structure to the u8g structure +*/ +u8g_glyph_t u8g_GetGlyph(u8g_t *u8g, uint8_t requested_encoding) +{ + uint8_t *p = (uint8_t *)(u8g->font); + uint8_t font_format = u8g_font_GetFormat(u8g->font); + uint8_t data_structure_size = u8g_font_GetFontGlyphStructureSize(u8g->font); + uint8_t start, end; + uint16_t pos; + uint8_t i; + uint8_t mask = 255; + + if ( font_format == 1 ) + mask = 15; + + start = u8g_font_GetFontStartEncoding(u8g->font); + end = u8g_font_GetFontEndEncoding(u8g->font); + + pos = u8g_font_GetEncoding97Pos(u8g->font); + if ( requested_encoding >= 97 && pos > 0 ) + { + p+= pos; + start = 97; + } + else + { + pos = u8g_font_GetEncoding65Pos(u8g->font); + if ( requested_encoding >= 65 && pos > 0 ) + { + p+= pos; + start = 65; + } + else + p += U8G_FONT_DATA_STRUCT_SIZE; /* skip font general information */ + } + + if ( requested_encoding > end ) + { + u8g_FillEmptyGlyphCache(u8g); + return NULL; /* not found */ + } + + i = start; + if ( i <= end ) + { + for(;;) + { + if ( u8g_pgm_read((u8g_pgm_uint8_t *)(p)) == 255 ) + { + p += 1; + } + else + { + if ( i == requested_encoding ) + { + u8g_CopyGlyphDataToCache(u8g, p); + return p; + } + p += u8g_pgm_read( ((u8g_pgm_uint8_t *)(p)) + 2 ) & mask; + p += data_structure_size; + } + if ( i == end ) + break; + i++; + } + } + + u8g_FillEmptyGlyphCache(u8g); + + return NULL; +} + +uint8_t u8g_IsGlyph(u8g_t *u8g, uint8_t requested_encoding) +{ + if ( u8g_GetGlyph(u8g, requested_encoding) != NULL ) + return 1; + return 0; +} + +int8_t u8g_GetGlyphDeltaX(u8g_t *u8g, uint8_t requested_encoding) +{ + if ( u8g_GetGlyph(u8g, requested_encoding) == NULL ) + return 0; /* should never happen, so return something */ + return u8g->glyph_dx; +} + + +/*========================================================================*/ +/* glyph drawing procedures */ + +#ifdef OBSOLETE +/* + Draw a glyph + x,y: left baseline position of the glyph +*/ +int8_t u8g_DrawGlyphDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + u8g_glyph_t g; + uint8_t w, h, i, j; + const u8g_pgm_uint8_t *data; + uint8_t bytes_per_line; + u8g_uint_t ix, iy; + + g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + w = u8g->glyph_width; + h = u8g->glyph_height; + + bytes_per_line = w; + bytes_per_line += 7; + bytes_per_line /= 8; + + data = u8g_font_GetGlyphDataStart(u8g->font, g); + + switch(dir) + { + case 0: + x += u8g->glyph_x; + y -= u8g->glyph_y; + y--; + //u8g_DrawFrame(u8g, x, y-h+1, w, h); + if ( u8g_IsBBXIntersection(u8g, x, y-h+1, w, h) == 0 ) + return u8g->glyph_dx; + + iy = y; + iy -= h; + iy++; + + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + ix+=8; + } + iy++; + } + break; + case 1: + x += u8g->glyph_y; + x++; + y += u8g->glyph_x; + //printf("enc %d, dir %d, x %d, y %d, w %d, h %d\n", encoding, dir, x, y, w, h); + //u8g_DrawFrame(u8g, x, y, h, w); + if ( u8g_IsBBXIntersection(u8g, x, y, h, w) == 0 ) + return u8g->glyph_dx; + + ix = x; + ix += h; + ix--; + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + iy+=8; + } + ix--; + } + break; + case 2: + x -= u8g->glyph_x; + y += u8g->glyph_y; + y++; + if ( u8g_IsBBXIntersection(u8g, x-w-1, y, w, h) == 0 ) + return u8g->glyph_dx; + + iy = y; + iy += h; + iy--; + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + ix-=8; + } + iy--; + } + break; + case 3: + x -= u8g->glyph_y; + x--; + y -= u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x-h-1, y-w-1, h, w) == 0 ) + return u8g->glyph_dx; + + ix = x; + ix -= h; + ix++; + + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < bytes_per_line; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, dir, u8g_pgm_read(data)); + data++; + iy-=8; + } + ix++; + } + break; + } + return u8g->glyph_dx; +} +#endif + +int8_t u8g_draw_glyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x += u8g->glyph_x; + y -= u8g->glyph_y; + y--; + + if ( u8g_IsBBXIntersection(u8g, x, y-h+1, w, h) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + iy = y; + iy -= h; + iy++; + + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 0, u8g_pgm_read(data)); + data++; + ix+=8; + } + iy++; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + y += u8g->font_calc_vref(u8g); + return u8g_draw_glyph(u8g, x, y, encoding); +} + +int8_t u8g_draw_glyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x += u8g->glyph_y; + x++; + y += u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x, y, h, w) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + ix = x; + ix += h; + ix--; + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 1, u8g_pgm_read(data)); + data++; + iy+=8; + } + ix--; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + x -= u8g->font_calc_vref(u8g); + return u8g_draw_glyph90(u8g, x, y, encoding); +} + + +int8_t u8g_draw_glyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x -= u8g->glyph_x; + y += u8g->glyph_y; + y++; + + if ( u8g_IsBBXIntersection(u8g, x-(w-1), y, w, h) == 0 ) + return u8g->glyph_dx; + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + iy = y; + iy += h; + iy--; + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 2, u8g_pgm_read(data)); + data++; + ix-=8; + } + iy--; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + y -= u8g->font_calc_vref(u8g); + return u8g_draw_glyph180(u8g, x, y, encoding); +} + + +int8_t u8g_draw_glyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + const u8g_pgm_uint8_t *data; + uint8_t w, h; + uint8_t i, j; + u8g_uint_t ix, iy; + + { + u8g_glyph_t g = u8g_GetGlyph(u8g, encoding); + if ( g == NULL ) + return 0; + data = u8g_font_GetGlyphDataStart(u8g->font, g); + } + + w = u8g->glyph_width; + h = u8g->glyph_height; + + x -= u8g->glyph_y; + x--; + y -= u8g->glyph_x; + + if ( u8g_IsBBXIntersection(u8g, x-(h-1), y-(w-1), h, w) == 0 ) + return u8g->glyph_dx; + + + /* now, w is reused as bytes per line */ + w += 7; + w /= 8; + + ix = x; + ix -= h; + ix++; + + for( j = 0; j < h; j++ ) + { + iy = y; + for( i = 0; i < w; i++ ) + { + u8g_Draw8Pixel(u8g, ix, iy, 3, u8g_pgm_read(data)); + data++; + iy-=8; + } + ix++; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawGlyph270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + x += u8g->font_calc_vref(u8g); + return u8g_draw_glyph270(u8g, x, y, encoding); +} + + + +#ifdef OBSOLETE +/* + Draw a glyph + x,y: lower left corner of the font bounding box +*/ +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + /* TODO: apply "dir" */ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + return u8g_DrawGlyphDir(u8g, x, y, dir, encoding); +} +#endif + +/*========================================================================*/ +/* string drawing procedures */ + + +u8g_uint_t u8g_DrawStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + //u8g_uint_t u8g_GetStrWidth(u8g, s); + //u8g_font_GetFontAscent(u8g->font)-u8g_font_GetFontDescent(u8g->font); + + y += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph(u8g, x, y, *s); + x += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr90(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph90(u8g, x, y, *s); + y += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr180(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + y -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph180(u8g, x, y, *s); + x -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr270(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_draw_glyph270(u8g, x, y, *s); + y -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStrDir(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s) +{ + switch(dir) + { + case 0: + return u8g_DrawStr(u8g, x, y, s); + case 1: + return u8g_DrawStr90(u8g, x, y, s); + case 2: + return u8g_DrawStr180(u8g, x, y, s); + case 3: + return u8g_DrawStr270(u8g, x, y, s); + } + return 0; +} + +u8g_uint_t u8g_DrawStrP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + uint8_t c; + + y += u8g->font_calc_vref(u8g); + + for(;;) + { + c = u8g_pgm_read(s); + if ( c == '\0' ) + break; + d = u8g_draw_glyph(u8g, x, y, c); + x += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr90P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph90(u8g, x, y, u8g_pgm_read(s)); + y += d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr180P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + y -= u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph180(u8g, x, y, u8g_pgm_read(s)); + x -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStr270P(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t t = 0; + int8_t d; + + x += u8g->font_calc_vref(u8g); + + while( *s != '\0' ) + { + d = u8g_DrawGlyph270(u8g, x, y, u8g_pgm_read(s)); + y -= d; + t += d; + s++; + } + return t; +} + +u8g_uint_t u8g_DrawStrFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, const char *s) +{ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + return u8g_DrawStrDir(u8g, x, y, dir, s); +} + +/* still used by picgen.c, dir argument is ignored */ +int8_t u8g_DrawGlyphFontBBX(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding) +{ + x -= u8g_GetFontBBXOffX(u8g); + y += u8g_GetFontBBXOffY(u8g); + u8g_draw_glyph(u8g, x, y, encoding); +} + + +/*========================================================================*/ +/* set ascent/descent for reference point calculation */ + +void u8g_UpdateRefHeight(u8g_t *u8g) +{ + uint16_t ls; + if ( u8g->font == NULL ) + return; + if ( u8g->font_height_mode == U8G_FONT_HEIGHT_MODE_TEXT ) + { + u8g->font_ref_ascent = u8g_font_GetCapitalAHeight(u8g->font); + u8g->font_ref_descent = u8g_font_GetLowerGDescent(u8g->font); + } + else if ( u8g->font_height_mode == U8G_FONT_HEIGHT_MODE_XTEXT ) + { + u8g->font_ref_ascent = u8g_font_GetFontXAscent(u8g->font); + u8g->font_ref_descent = u8g_font_GetFontXDescent(u8g->font); + } + else + { + u8g->font_ref_ascent = u8g_font_GetFontAscent(u8g->font); + u8g->font_ref_descent = u8g_font_GetFontDescent(u8g->font); + } + + ls = u8g->font_ref_ascent - u8g->font_ref_descent; + if ( u8g->font_line_spacing_factor != 64 ) + { + ls &= 255; + ls *= u8g->font_line_spacing_factor; + ls >>= 6; + } + u8g->line_spacing = ls; +} + +void u8g_SetFontRefHeightText(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_TEXT; + u8g_UpdateRefHeight(u8g); +} + +void u8g_SetFontRefHeightExtendedText(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_XTEXT; + u8g_UpdateRefHeight(u8g); +} + + +void u8g_SetFontRefHeightAll(u8g_t *u8g) +{ + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_ALL; + u8g_UpdateRefHeight(u8g); +} + +/* factor = 64: linespaceing == ascent and descent */ +void u8g_SetFontLineSpacingFactor(u8g_t *u8g, uint8_t factor) +{ + u8g->font_line_spacing_factor = factor; + u8g_UpdateRefHeight(u8g); +} + + + +/*========================================================================*/ +/* callback procedures to correct the y position */ + +u8g_uint_t u8g_font_calc_vref_font(u8g_t *u8g) +{ + return 0; +} + +void u8g_SetFontPosBaseline(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_font; +} + + +u8g_uint_t u8g_font_calc_vref_bottom(u8g_t *u8g) +{ + /* y += (u8g_uint_t)(u8g_int_t)(u8g->font_ref_descent); */ + return (u8g_uint_t)(u8g_int_t)(u8g->font_ref_descent); +} + +void u8g_SetFontPosBottom(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_bottom; +} + +u8g_uint_t u8g_font_calc_vref_top(u8g_t *u8g) +{ + u8g_uint_t tmp; + /* reference pos is one pixel above the upper edge of the reference glyph */ + + /* + y += (u8g_uint_t)(u8g_int_t)(u8g->font_ref_ascent); + y++; + */ + tmp = (u8g_uint_t)(u8g_int_t)(u8g->font_ref_ascent); + tmp++; + return tmp; +} + +void u8g_SetFontPosTop(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_top; +} + +u8g_uint_t u8g_font_calc_vref_center(u8g_t *u8g) +{ + int8_t tmp; + tmp = u8g->font_ref_ascent; + tmp -= u8g->font_ref_descent; + tmp /= 2; + tmp += u8g->font_ref_descent; + /* y += (u8g_uint_t)(u8g_int_t)(tmp); */ + return tmp; +} + +void u8g_SetFontPosCenter(u8g_t *u8g) +{ + u8g->font_calc_vref = u8g_font_calc_vref_center; +} + +/*========================================================================*/ +/* string pixel width calculation */ + +char u8g_font_get_char(const void *s) +{ + return *(const char *)(s); +} + +char u8g_font_get_charP(const void *s) +{ + return u8g_pgm_read(s); +} + +typedef char (*u8g_font_get_char_fn)(const void *s); + + +u8g_uint_t u8g_font_calc_str_pixel_width(u8g_t *u8g, const char *s, u8g_font_get_char_fn get_char ) +{ + u8g_uint_t w; + uint8_t enc; + + /* reset the total minimal width to zero, this will be expanded during calculation */ + w = 0; + + enc = get_char(s); + + /* check for empty string, width is already 0 */ + if ( enc == '\0' ) + { + return w; + } + + /* get the glyph information of the first char. This must be valid, because we already checked for the empty string */ + /* if *s is not inside the font, then the cached parameters of the glyph are all zero */ + u8g_GetGlyph(u8g, enc); + + /* strlen(s) == 1: width = width(s[0]) */ + /* strlen(s) == 2: width = - offx(s[0]) + deltax(s[0]) + offx(s[1]) + width(s[1]) */ + /* strlen(s) == 3: width = - offx(s[0]) + deltax(s[0]) + deltax(s[1]) + offx(s[2]) + width(s[2]) */ + + /* assume that the string has size 2 or more, than start with negative offset-x */ + /* for string with size 1, this will be nullified after the loop */ + w = -u8g->glyph_x; + for(;;) + { + + /* check and stop if the end of the string is reached */ + s++; + if ( get_char(s) == '\0' ) + break; + + /* if there are still more characters, add the delta to the next glyph */ + w += u8g->glyph_dx; + + /* store the encoding in a local variable, used also after the for(;;) loop */ + enc = get_char(s); + + /* load the next glyph information */ + u8g_GetGlyph(u8g, enc); + } + + /* finally calculate the width of the last char */ + /* here is another exception, if the last char is a black, use the dx value instead */ + if ( enc != ' ' ) + { + /* if g was not updated in the for loop (strlen() == 1), then the initial offset x gets removed */ + w += u8g->glyph_width; + w += u8g->glyph_x; + } + else + { + w += u8g->glyph_dx; + } + + + return w; +} + +u8g_uint_t u8g_GetStrPixelWidth(u8g_t *u8g, const char *s) +{ + return u8g_font_calc_str_pixel_width(u8g, s, u8g_font_get_char); +} + +u8g_uint_t u8g_GetStrPixelWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + return u8g_font_calc_str_pixel_width(u8g, (const char *)s, u8g_font_get_charP); +} + +int8_t u8g_GetStrX(u8g_t *u8g, const char *s) +{ + u8g_GetGlyph(u8g, *s); + return u8g->glyph_x; +} + +int8_t u8g_GetStrXP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + u8g_GetGlyph(u8g, u8g_pgm_read(s)); + return u8g->glyph_x; +} + +/*========================================================================*/ +/* string width calculation */ + +u8g_uint_t u8g_GetStrWidth(u8g_t *u8g, const char *s) +{ + u8g_uint_t w; + uint8_t encoding; + + /* reset the total width to zero, this will be expanded during calculation */ + w = 0; + + for(;;) + { + encoding = *s; + if ( encoding == 0 ) + break; + + /* load glyph information */ + u8g_GetGlyph(u8g, encoding); + w += u8g->glyph_dx; + + /* goto next char */ + s++; + } + + return w; +} + + +u8g_uint_t u8g_GetStrWidthP(u8g_t *u8g, const u8g_pgm_uint8_t *s) +{ + u8g_uint_t w; + uint8_t encoding; + + /* reset the total width to zero, this will be expanded during calculation */ + w = 0; + + for(;;) + { + encoding = u8g_pgm_read(s); + if ( encoding == 0 ) + break; + + /* load glyph information */ + u8g_GetGlyph(u8g, encoding); + w += u8g->glyph_dx; + + /* goto next char */ + s++; + } + + return w; +} + + +/*========================================================================*/ +/* calculation of font/glyph/string characteristics */ + + +/* + Description: + Calculate parameter for the minimal bounding box on a given string + Output + buf->y_min extend of the lower left edge if the string below (y_min<0) or above (y_min>0) baseline (descent) + buf->y_max extend of the upper left edge if the string below (y_min<0) or above (y_min>0) baseline (ascent) + buf->w the width of the string +*/ +struct u8g_str_size_struct +{ + int8_t y_min; /* descent */ + int8_t y_max; /* ascent */ + int8_t x, y; /* the reference point of the font (negated!) */ + u8g_uint_t w; /* width of the overall string */ +}; +typedef struct u8g_str_size_struct u8g_str_size_t; + +static void u8g_font_calc_str_min_box(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + /* u8g_glyph_t g; */ + int8_t tmp; + + /* reset the total minimal width to zero, this will be expanded during calculation */ + buf->w = 0; + + /* check for empty string, width is already 0, but also reset y_min and y_max to 0 */ + if ( *s == '\0' ) + { + buf->y_min = 0; + buf->y_max = 0; + buf->x = 0; + buf->y = 0; + return; + } + + /* reset y_min to the largest possible value. Later we search for the smallest value */ + /* y_min contains the position [pixel] of the lower left edge of the glyph above (y_min>0) or below (y_min<0) baseline */ + buf->y_min = 127; + /* reset y_max to the smallest possible value. Later we search for the highest value */ + /* y_max contains the position [pixel] of the upper left edge of the glyph above (y_max>0) or below (y_max<0) baseline */ + buf->y_max = -128; + + /* get the glyph information of the first char. This must be valid, because we already checked for the empty string */ + u8g_GetGlyph(u8g, *s); + + /* strlen(s) == 1: width = width(s[0]) */ + /* strlen(s) == 2: width = - offx(s[0]) + deltax(s[0]) + offx(s[1]) + width(s[1]) */ + /* strlen(s) == 3: width = - offx(s[0]) + deltax(s[0]) + deltax(s[1]) + offx(s[2]) + width(s[2]) */ + + /* assume that the string has size 2 or more, than start with negative offset-x */ + /* for string with size 1, this will be nullified after the loop */ + // buf->w = - u8g_font_GetGlyphBBXOffX(u8g->font, g); + buf->w = - u8g->glyph_x; + + /* Also copy the position of the first glyph. This is the reference point of the string (negated) */ + buf->x = u8g->glyph_x; + buf->y = u8g->glyph_y; + + for(;;) + { + + /* calculated y position of the upper left corner (y_max) and lower left corner (y_min) of the string */ + /* relative to the base line */ + + tmp = u8g->glyph_y; + if ( buf->y_min > tmp ) + buf->y_min = tmp; + + tmp +=u8g->glyph_height; + if ( buf->y_max < tmp ) + buf->y_max = tmp; + + /* check and stop if the end of the string is reached */ + s++; + if ( *s == '\0' ) + break; + + /* if there are still more characters, add the delta to the next glyph */ + buf->w += u8g->glyph_dx; + + /* load the next glyph information */ + u8g_GetGlyph(u8g, *s); + } + + /* finally calculate the width of the last char */ + /* if g was not updated in the for loop (strlen() == 1), then the initial offset x gets removed */ + buf->w += u8g->glyph_width; + // buf->w += u8g_font_GetGlyphBBXOffX(u8g->font, g); + + buf->w += u8g->glyph_x; +} + +/* calculate minimal box */ +void u8g_font_box_min(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + u8g_font_calc_str_min_box(u8g, s, buf); +} + +/* calculate gA box, but do not calculate the overall width */ +void u8g_font_box_left_gA(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + +} + +/* calculate gA box, including overall width */ +void u8g_font_box_all_gA(u8g_t *u8g, const char *s, u8g_str_size_t *buf) +{ + +} + + +static void u8g_font_get_str_box_fill_args(u8g_t *u8g, const char *s, u8g_str_size_t *buf, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + /* + u8g_glyph_t g; + g = + */ + u8g_GetGlyph(u8g, *s); + *x += u8g->glyph_x; + *width = buf->w; + *y -= buf->y_max; + /* +1 because y_max is a height, this compensates the next step */ + //*y += 1; + /* because the reference point is one below the string, this compensates the previous step */ + //*y -= 1; + *height = buf->y_max; + *height -= buf->y_min; +} + + +void u8g_GetStrMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + u8g_str_size_t buf; + + if ( *s == '\0' ) + { + *width= 0; + *height = 0; + return; + } + + u8g_font_calc_str_min_box(u8g, s, &buf); + u8g_font_get_str_box_fill_args(u8g, s, &buf, x, y, width, height); +} + + +void u8g_GetStrAMinBox(u8g_t *u8g, const char *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height) +{ + u8g_str_size_t buf; + uint8_t cap_a; + + if ( *s == '\0' ) + { + *width= 0; + *height = 0; + return; + } + + cap_a = u8g_font_GetCapitalAHeight(u8g->font); + u8g_font_calc_str_min_box(u8g, s, &buf); + if ( buf.y_max < cap_a ) + buf.y_max = cap_a; + u8g_font_get_str_box_fill_args(u8g, s, &buf, x, y, width, height); +} + +void u8g_SetFont(u8g_t *u8g, const u8g_fntpgm_uint8_t *font) +{ + if ( u8g->font != font ) + { + u8g->font = font; + u8g_UpdateRefHeight(u8g); + u8g_SetFontPosBaseline(u8g); + } +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font_data.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font_data.c new file mode 100644 index 000000000..dca21c5a3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font_data.c @@ -0,0 +1,84486 @@ +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03b[826] U8G_SECTION(".progmem.u8g_font_04b_03b") = { + 1,5,6,0,255,5,0,250,1,240,32,255,255,5,255,5, + 255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80, + 224,2,85,101,200,208,32,88,152,2,85,101,224,128,248,144, + 240,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 85,101,8,16,32,64,128,2,69,85,240,144,144,144,240,2, + 37,53,192,64,64,64,64,2,69,85,240,16,240,128,240,2, + 69,85,240,16,240,16,240,2,69,85,144,144,144,240,16,2, + 69,85,240,128,240,16,240,2,69,85,224,128,240,144,240,2, + 69,85,240,16,32,64,64,2,69,85,240,144,240,144,240,2, + 69,85,240,144,240,16,112,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,69,85,240,16,112, + 0,64,2,85,101,248,136,184,168,240,2,69,85,240,144,240, + 144,144,2,69,85,224,160,240,144,240,2,69,85,240,128,128, + 128,240,2,69,85,224,144,144,144,224,2,69,85,240,128,240, + 128,240,2,69,85,240,128,240,128,128,2,69,85,240,128,176, + 144,240,2,69,85,144,144,240,144,144,2,53,69,224,64,64, + 64,224,2,69,85,48,16,16,144,240,2,69,85,144,144,224, + 144,144,2,69,85,128,128,128,128,240,2,85,101,248,168,168, + 168,168,2,69,85,144,208,176,144,144,2,69,85,240,144,144, + 144,240,2,69,85,240,144,144,240,128,2,69,85,240,144,144, + 176,240,2,69,85,240,144,240,160,176,2,69,85,240,128,240, + 16,240,2,53,69,224,64,64,64,64,2,69,85,144,144,144, + 144,240,2,69,85,144,144,160,160,64,2,85,101,168,168,168, + 168,248,2,69,85,144,144,96,144,144,2,69,85,144,144,240, + 16,240,2,69,85,240,16,96,128,240,2,37,53,192,128,128, + 128,192,2,85,101,128,64,32,16,8,2,37,53,192,64,64, + 64,192,5,50,66,64,160,2,65,81,240,5,34,50,128,64, + 2,67,83,112,144,240,2,68,84,128,240,144,240,2,51,67, + 224,128,224,2,68,84,16,240,144,240,2,67,83,240,160,112, + 2,68,84,112,64,240,64,1,68,84,240,144,240,32,2,68, + 84,128,240,144,144,2,20,36,128,0,128,128,1,21,37,128, + 0,128,128,128,2,68,84,128,144,224,144,2,20,36,128,128, + 128,128,2,83,99,248,168,168,2,67,83,240,144,144,2,67, + 83,240,144,240,1,68,84,240,144,240,128,1,68,84,240,144, + 240,16,2,51,67,224,128,128,2,67,83,240,64,240,2,52, + 68,64,224,64,96,2,67,83,144,144,240,2,67,83,144,144, + 96,2,83,99,168,168,248,2,51,67,160,64,160,1,68,84, + 144,144,240,16,2,67,83,240,32,240,2,53,69,96,64,128, + 64,96,2,21,37,128,128,128,128,128,2,53,69,192,64,32, + 64,192,5,66,82,80,160,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,2,0,64,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03bn[130] U8G_SECTION(".progmem.u8g_font_04b_03bn") = { + 1,5,6,0,255,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32, + 64,128,2,69,85,240,144,144,144,240,2,37,53,192,64,64, + 64,64,2,69,85,240,16,240,128,240,2,69,85,240,16,240, + 16,240,2,69,85,144,144,144,240,16,2,69,85,240,128,240, + 16,240,2,69,85,224,128,240,144,240,2,69,85,240,16,32, + 64,64,2,69,85,240,144,240,144,240,2,69,85,240,144,240, + 16,112}; +/* + Fontname: -FreeType-04b03b-Medium-R-Normal--8-80-72-72-P-39-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03br[696] U8G_SECTION(".progmem.u8g_font_04b_03br") = { + 1,5,6,0,255,5,0,250,1,240,32,127,255,5,255,5, + 255,2,0,48,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,2,69,85,112,160,240,80, + 224,2,85,101,200,208,32,88,152,2,85,101,224,128,248,144, + 240,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 85,101,8,16,32,64,128,2,69,85,240,144,144,144,240,2, + 37,53,192,64,64,64,64,2,69,85,240,16,240,128,240,2, + 69,85,240,16,240,16,240,2,69,85,144,144,144,240,16,2, + 69,85,240,128,240,16,240,2,69,85,224,128,240,144,240,2, + 69,85,240,16,32,64,64,2,69,85,240,144,240,144,240,2, + 69,85,240,144,240,16,112,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,69,85,240,16,112, + 0,64,2,85,101,248,136,184,168,240,2,69,85,240,144,240, + 144,144,2,69,85,224,160,240,144,240,2,69,85,240,128,128, + 128,240,2,69,85,224,144,144,144,224,2,69,85,240,128,240, + 128,240,2,69,85,240,128,240,128,128,2,69,85,240,128,176, + 144,240,2,69,85,144,144,240,144,144,2,53,69,224,64,64, + 64,224,2,69,85,48,16,16,144,240,2,69,85,144,144,224, + 144,144,2,69,85,128,128,128,128,240,2,85,101,248,168,168, + 168,168,2,69,85,144,208,176,144,144,2,69,85,240,144,144, + 144,240,2,69,85,240,144,144,240,128,2,69,85,240,144,144, + 176,240,2,69,85,240,144,240,160,176,2,69,85,240,128,240, + 16,240,2,53,69,224,64,64,64,64,2,69,85,144,144,144, + 144,240,2,69,85,144,144,160,160,64,2,85,101,168,168,168, + 168,248,2,69,85,144,144,96,144,144,2,69,85,144,144,240, + 16,240,2,69,85,240,16,96,128,240,2,37,53,192,128,128, + 128,192,2,85,101,128,64,32,16,8,2,37,53,192,64,64, + 64,192,5,50,66,64,160,2,65,81,240,5,34,50,128,64, + 2,67,83,112,144,240,2,68,84,128,240,144,240,2,51,67, + 224,128,224,2,68,84,16,240,144,240,2,67,83,240,160,112, + 2,68,84,112,64,240,64,1,68,84,240,144,240,32,2,68, + 84,128,240,144,144,2,20,36,128,0,128,128,1,21,37,128, + 0,128,128,128,2,68,84,128,144,224,144,2,20,36,128,128, + 128,128,2,83,99,248,168,168,2,67,83,240,144,144,2,67, + 83,240,144,240,1,68,84,240,144,240,128,1,68,84,240,144, + 240,16,2,51,67,224,128,128,2,67,83,240,64,240,2,52, + 68,64,224,64,96,2,67,83,144,144,240,2,67,83,144,144, + 96,2,83,99,168,168,248,2,51,67,160,64,160,1,68,84, + 144,144,240,16,2,67,83,240,32,240,2,53,69,96,64,128, + 64,96,2,21,37,128,128,128,128,128,2,53,69,192,64,32, + 64,192,5,66,82,80,160,255}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 5 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03[859] U8G_SECTION(".progmem.u8g_font_04b_03") = { + 1,5,7,0,254,5,0,251,1,242,32,255,254,5,254,5, + 254,2,0,64,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,1,70,86,32,112,192,48, + 224,32,2,85,101,144,16,32,64,72,2,85,101,96,128,104, + 144,104,5,18,34,128,128,2,37,53,64,128,128,128,64,2, + 37,53,128,64,64,64,128,4,51,67,160,64,160,3,51,67, + 64,224,64,1,34,50,64,128,4,49,65,224,2,17,33,128, + 2,85,101,8,16,32,64,128,2,69,85,96,144,144,144,96, + 2,37,53,192,64,64,64,64,2,69,85,224,16,96,128,240, + 2,69,85,224,16,96,16,224,2,69,85,32,96,160,240,32, + 2,69,85,240,128,224,16,224,2,69,85,96,128,224,144,96, + 2,69,85,240,16,32,64,64,2,69,85,96,144,96,144,96, + 2,69,85,96,144,112,16,96,3,19,35,128,0,128,2,20, + 36,128,0,128,128,2,53,69,32,64,128,64,32,3,51,67, + 224,0,224,2,53,69,128,64,32,64,128,2,69,85,224,16, + 96,0,64,2,85,101,112,136,184,168,112,2,69,85,96,144, + 144,240,144,2,69,85,224,144,224,144,224,2,53,69,96,128, + 128,128,96,2,69,85,224,144,144,144,224,2,53,69,224,128, + 224,128,224,2,53,69,224,128,224,128,128,2,69,85,112,128, + 176,144,112,2,69,85,144,144,240,144,144,2,53,69,224,64, + 64,64,224,2,69,85,48,16,16,144,96,2,69,85,144,160, + 192,160,144,2,53,69,128,128,128,128,224,2,85,101,136,216, + 168,136,136,2,69,85,144,208,176,144,144,2,69,85,96,144, + 144,144,96,2,69,85,224,144,144,224,128,1,70,86,96,144, + 144,144,96,16,2,69,85,224,144,144,224,144,2,69,85,112, + 128,96,16,224,2,53,69,224,64,64,64,64,2,69,85,144, + 144,144,144,96,2,69,85,144,144,160,160,64,2,85,101,136, + 168,168,168,80,2,69,85,144,144,96,144,144,2,69,85,144, + 144,112,16,96,2,53,69,224,32,64,128,224,2,37,53,192, + 128,128,128,192,2,85,101,128,64,32,16,8,2,37,53,192, + 64,64,64,192,5,50,66,64,160,2,65,81,240,5,34,50, + 128,64,2,68,84,112,144,144,112,2,69,85,128,224,144,144, + 224,2,52,68,96,128,128,96,2,69,85,16,112,144,144,112, + 2,68,84,96,176,192,96,2,53,69,32,64,224,64,64,0, + 70,86,112,144,144,112,16,96,2,69,85,128,224,144,144,144, + 2,21,37,128,0,128,128,128,0,39,55,64,0,64,64,64, + 64,128,2,69,85,128,144,160,224,144,2,21,37,128,128,128, + 128,128,2,84,100,240,168,168,168,2,68,84,224,144,144,144, + 2,68,84,96,144,144,96,0,70,86,224,144,144,224,128,128, + 0,70,86,112,144,144,112,16,16,2,52,68,160,192,128,128, + 2,68,84,112,192,48,224,2,53,69,64,224,64,64,32,2, + 68,84,144,144,144,112,2,68,84,144,144,160,64,2,84,100, + 168,168,80,80,2,52,68,160,64,64,160,0,70,86,144,144, + 144,112,16,96,2,68,84,240,32,64,240,2,53,69,96,64, + 128,64,96,2,21,37,128,128,128,128,128,2,53,69,192,64, + 32,64,192,5,66,82,80,160,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,2,0,64,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03n[130] U8G_SECTION(".progmem.u8g_font_04b_03n") = { + 1,5,7,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,85,101,8,16,32, + 64,128,2,69,85,96,144,144,144,96,2,37,53,192,64,64, + 64,64,2,69,85,224,16,96,128,240,2,69,85,224,16,96, + 16,224,2,69,85,32,96,160,240,32,2,69,85,240,128,224, + 16,224,2,69,85,96,128,224,144,96,2,69,85,240,16,32, + 64,64,2,69,85,96,144,96,144,96,2,69,85,96,144,112, + 16,96}; +/* + Fontname: -FreeType-04b03-Medium-R-Normal--8-80-72-72-P-38-ISO10646-1 + Copyright: 19992003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 5 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_03r[729] U8G_SECTION(".progmem.u8g_font_04b_03r") = { + 1,5,7,0,254,5,0,251,1,242,32,127,254,5,254,5, + 254,2,0,64,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,85,101,80,248,80,248,80,1,70,86,32,112,192,48, + 224,32,2,85,101,144,16,32,64,72,2,85,101,96,128,104, + 144,104,5,18,34,128,128,2,37,53,64,128,128,128,64,2, + 37,53,128,64,64,64,128,4,51,67,160,64,160,3,51,67, + 64,224,64,1,34,50,64,128,4,49,65,224,2,17,33,128, + 2,85,101,8,16,32,64,128,2,69,85,96,144,144,144,96, + 2,37,53,192,64,64,64,64,2,69,85,224,16,96,128,240, + 2,69,85,224,16,96,16,224,2,69,85,32,96,160,240,32, + 2,69,85,240,128,224,16,224,2,69,85,96,128,224,144,96, + 2,69,85,240,16,32,64,64,2,69,85,96,144,96,144,96, + 2,69,85,96,144,112,16,96,3,19,35,128,0,128,2,20, + 36,128,0,128,128,2,53,69,32,64,128,64,32,3,51,67, + 224,0,224,2,53,69,128,64,32,64,128,2,69,85,224,16, + 96,0,64,2,85,101,112,136,184,168,112,2,69,85,96,144, + 144,240,144,2,69,85,224,144,224,144,224,2,53,69,96,128, + 128,128,96,2,69,85,224,144,144,144,224,2,53,69,224,128, + 224,128,224,2,53,69,224,128,224,128,128,2,69,85,112,128, + 176,144,112,2,69,85,144,144,240,144,144,2,53,69,224,64, + 64,64,224,2,69,85,48,16,16,144,96,2,69,85,144,160, + 192,160,144,2,53,69,128,128,128,128,224,2,85,101,136,216, + 168,136,136,2,69,85,144,208,176,144,144,2,69,85,96,144, + 144,144,96,2,69,85,224,144,144,224,128,1,70,86,96,144, + 144,144,96,16,2,69,85,224,144,144,224,144,2,69,85,112, + 128,96,16,224,2,53,69,224,64,64,64,64,2,69,85,144, + 144,144,144,96,2,69,85,144,144,160,160,64,2,85,101,136, + 168,168,168,80,2,69,85,144,144,96,144,144,2,69,85,144, + 144,112,16,96,2,53,69,224,32,64,128,224,2,37,53,192, + 128,128,128,192,2,85,101,128,64,32,16,8,2,37,53,192, + 64,64,64,192,5,50,66,64,160,2,65,81,240,5,34,50, + 128,64,2,68,84,112,144,144,112,2,69,85,128,224,144,144, + 224,2,52,68,96,128,128,96,2,69,85,16,112,144,144,112, + 2,68,84,96,176,192,96,2,53,69,32,64,224,64,64,0, + 70,86,112,144,144,112,16,96,2,69,85,128,224,144,144,144, + 2,21,37,128,0,128,128,128,0,39,55,64,0,64,64,64, + 64,128,2,69,85,128,144,160,224,144,2,21,37,128,128,128, + 128,128,2,84,100,240,168,168,168,2,68,84,224,144,144,144, + 2,68,84,96,144,144,96,0,70,86,224,144,144,224,128,128, + 0,70,86,112,144,144,112,16,16,2,52,68,160,192,128,128, + 2,68,84,112,192,48,224,2,53,69,64,224,64,64,32,2, + 68,84,144,144,144,112,2,68,84,144,144,160,64,2,84,100, + 168,168,80,80,2,52,68,160,64,64,160,0,70,86,144,144, + 144,112,16,96,2,68,84,240,32,64,240,2,53,69,96,64, + 128,64,96,2,21,37,128,128,128,128,128,2,53,69,192,64, + 32,64,192,5,66,82,80,160,255}; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 6 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24[912] U8G_SECTION(".progmem.u8g_font_04b_24") = { + 1,5,6,0,255,5,0,250,1,241,32,255,0,5,255,5, + 0,2,0,32,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,53,69,64,224,64,224,64,2,53,69,96,192,64,96, + 192,2,53,69,160,32,64,128,160,2,69,85,96,128,112,160, + 96,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 53,69,32,32,64,128,128,2,53,69,224,160,160,160,224,2, + 37,53,192,64,64,64,64,2,53,69,224,32,224,128,224,2, + 53,69,224,32,224,32,224,2,53,69,160,160,160,224,32,2, + 53,69,224,128,224,32,224,2,53,69,128,224,160,160,224,2, + 53,69,224,32,32,64,128,2,53,69,224,160,224,160,224,2, + 53,69,224,160,160,224,32,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,53,69,224,32,96, + 0,64,2,85,101,112,136,232,168,96,2,53,69,224,160,160, + 224,160,2,53,69,224,160,224,160,224,2,53,69,224,128,128, + 128,224,2,53,69,192,160,160,160,224,2,53,69,224,128,224, + 128,224,2,53,69,224,128,224,128,128,2,53,69,224,128,160, + 160,224,2,53,69,160,160,224,160,160,2,21,37,128,128,128, + 128,128,2,53,69,32,32,160,160,224,2,53,69,160,160,192, + 160,160,2,53,69,128,128,128,128,224,2,53,69,160,224,160, + 160,160,2,53,69,224,160,160,160,160,2,53,69,224,160,160, + 160,224,2,53,69,224,160,160,224,128,1,54,70,224,160,160, + 160,224,64,2,53,69,224,160,160,192,160,2,53,69,224,128, + 224,32,224,2,53,69,224,64,64,64,64,2,53,69,160,160, + 160,160,224,2,53,69,160,160,160,160,192,2,53,69,160,160, + 160,224,160,2,53,69,160,160,64,160,160,2,53,69,160,160, + 64,64,64,2,53,69,224,32,64,128,224,2,37,53,192,128, + 128,128,192,2,53,69,128,128,64,32,32,2,37,53,192,64, + 64,64,192,5,50,66,64,160,2,49,65,224,5,34,50,128, + 64,2,53,69,64,160,160,224,160,2,53,69,192,160,192,160, + 192,2,53,69,96,128,128,128,96,2,53,69,192,160,160,160, + 192,2,53,69,96,128,224,128,96,2,53,69,96,128,224,128, + 128,2,53,69,96,128,160,160,96,2,53,69,160,160,224,160, + 160,2,21,37,128,128,128,128,128,2,53,69,32,32,160,160, + 64,2,53,69,160,160,192,160,160,2,53,69,128,128,128,128, + 96,2,53,69,160,224,160,160,160,2,53,69,192,160,160,160, + 160,2,53,69,64,160,160,160,64,2,53,69,192,160,160,192, + 128,1,54,70,64,160,160,160,64,64,2,53,69,192,160,160, + 192,160,2,53,69,96,128,64,32,192,2,53,69,224,64,64, + 64,64,2,53,69,160,160,160,160,64,2,53,69,160,160,160, + 160,192,2,53,69,160,160,160,224,160,2,53,69,160,160,64, + 160,160,2,53,69,160,160,64,64,64,2,53,69,224,32,64, + 128,224,2,53,69,96,64,192,64,96,2,21,37,128,128,128, + 128,128,2,53,69,192,64,96,64,192,6,33,49,192,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 2,37,53,128,64,64,64,64,2,53,69,160,160,160,96,32, + 2,53,69,192,32,192,32,192,255,255,255,2,53,69,128,192, + 160,160,64,255,255,2,53,69,64,160,160,96,32,255,255,255, + 255,255,255,255,255,255,255,255,2,53,69,224,32,32,64,128, + 255,255,255,2,53,69,64,160,160,160,64,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 + }; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24n[130] U8G_SECTION(".progmem.u8g_font_04b_24n") = { + 1,5,6,0,255,5,0,0,0,0,42,57,0,5,255,5, + 0,4,51,67,160,64,160,3,51,67,64,224,64,1,34,50, + 64,128,4,49,65,224,2,17,33,128,2,53,69,32,32,64, + 128,128,2,53,69,224,160,160,160,224,2,37,53,192,64,64, + 64,64,2,53,69,224,32,224,128,224,2,53,69,224,32,224, + 32,224,2,53,69,160,160,160,224,32,2,53,69,224,128,224, + 32,224,2,53,69,128,224,160,160,224,2,53,69,224,32,32, + 64,128,2,53,69,224,160,224,160,224,2,53,69,224,160,160, + 224,32}; +/* + Fontname: -FreeType-04b24-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: 20002003 / yuji oshimoÿo / 04@dsg4.com / www.04.jp.org + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 6 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_04b_24r[735] U8G_SECTION(".progmem.u8g_font_04b_24r") = { + 1,5,6,0,255,5,0,250,1,241,32,127,0,5,255,5, + 0,2,0,32,2,21,37,128,128,128,0,128,5,50,66,160, + 160,2,53,69,64,224,64,224,64,2,53,69,96,192,64,96, + 192,2,53,69,160,32,64,128,160,2,69,85,96,128,112,160, + 96,5,18,34,128,128,2,37,53,64,128,128,128,64,2,37, + 53,128,64,64,64,128,4,51,67,160,64,160,3,51,67,64, + 224,64,1,34,50,64,128,4,49,65,224,2,17,33,128,2, + 53,69,32,32,64,128,128,2,53,69,224,160,160,160,224,2, + 37,53,192,64,64,64,64,2,53,69,224,32,224,128,224,2, + 53,69,224,32,224,32,224,2,53,69,160,160,160,224,32,2, + 53,69,224,128,224,32,224,2,53,69,128,224,160,160,224,2, + 53,69,224,32,32,64,128,2,53,69,224,160,224,160,224,2, + 53,69,224,160,160,224,32,3,19,35,128,0,128,2,20,36, + 128,0,128,128,2,53,69,32,64,128,64,32,3,51,67,224, + 0,224,2,53,69,128,64,32,64,128,2,53,69,224,32,96, + 0,64,2,85,101,112,136,232,168,96,2,53,69,224,160,160, + 224,160,2,53,69,224,160,224,160,224,2,53,69,224,128,128, + 128,224,2,53,69,192,160,160,160,224,2,53,69,224,128,224, + 128,224,2,53,69,224,128,224,128,128,2,53,69,224,128,160, + 160,224,2,53,69,160,160,224,160,160,2,21,37,128,128,128, + 128,128,2,53,69,32,32,160,160,224,2,53,69,160,160,192, + 160,160,2,53,69,128,128,128,128,224,2,53,69,160,224,160, + 160,160,2,53,69,224,160,160,160,160,2,53,69,224,160,160, + 160,224,2,53,69,224,160,160,224,128,1,54,70,224,160,160, + 160,224,64,2,53,69,224,160,160,192,160,2,53,69,224,128, + 224,32,224,2,53,69,224,64,64,64,64,2,53,69,160,160, + 160,160,224,2,53,69,160,160,160,160,192,2,53,69,160,160, + 160,224,160,2,53,69,160,160,64,160,160,2,53,69,160,160, + 64,64,64,2,53,69,224,32,64,128,224,2,37,53,192,128, + 128,128,192,2,53,69,128,128,64,32,32,2,37,53,192,64, + 64,64,192,5,50,66,64,160,2,49,65,224,5,34,50,128, + 64,2,53,69,64,160,160,224,160,2,53,69,192,160,192,160, + 192,2,53,69,96,128,128,128,96,2,53,69,192,160,160,160, + 192,2,53,69,96,128,224,128,96,2,53,69,96,128,224,128, + 128,2,53,69,96,128,160,160,96,2,53,69,160,160,224,160, + 160,2,21,37,128,128,128,128,128,2,53,69,32,32,160,160, + 64,2,53,69,160,160,192,160,160,2,53,69,128,128,128,128, + 96,2,53,69,160,224,160,160,160,2,53,69,192,160,160,160, + 160,2,53,69,64,160,160,160,64,2,53,69,192,160,160,192, + 128,1,54,70,64,160,160,160,64,64,2,53,69,192,160,160, + 192,160,2,53,69,96,128,64,32,192,2,53,69,224,64,64, + 64,64,2,53,69,160,160,160,160,64,2,53,69,160,160,160, + 160,192,2,53,69,160,160,160,224,160,2,53,69,160,160,64, + 160,160,2,53,69,160,160,64,64,64,2,53,69,224,32,64, + 128,224,2,53,69,96,64,192,64,96,2,21,37,128,128,128, + 128,128,2,53,69,192,64,96,64,192,6,33,49,192,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 13 + Calculated Max Values w=10 h=20 x= 9 y=13 dx=10 dy= 0 ascent=16 len=40 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent =13 descent= 0 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[4734] U8G_SECTION(".progmem.u8g_font_10x20_67_75") = { + 0,10,20,0,252,5,2,211,5,193,32,255,0,16,252,13, + 0,9,6,12,10,0,3,54,0,27,0,255,128,255,128,27, + 0,54,0,8,13,13,10,1,0,24,24,24,24,153,219,126, + 60,153,219,126,60,24,9,8,16,10,0,2,25,128,51,0, + 102,0,252,0,252,0,102,0,51,0,25,128,9,8,16,10, + 0,2,204,0,102,0,51,0,31,128,31,128,51,0,102,0, + 204,0,9,8,16,10,0,2,25,128,49,128,97,128,255,128, + 255,128,97,128,49,128,25,128,8,13,13,10,1,0,24,60, + 126,219,153,24,24,24,24,24,24,255,255,9,8,16,10,0, + 2,204,0,198,0,195,0,255,128,255,128,195,0,198,0,204, + 0,8,13,13,10,1,0,255,255,24,24,24,24,24,24,153, + 219,126,60,24,8,13,13,10,1,0,24,60,126,219,153,24, + 153,219,126,60,24,255,255,9,8,16,10,0,2,27,0,51, + 128,97,128,255,128,255,0,96,0,48,0,24,0,9,8,16, + 10,0,2,108,0,230,0,195,0,255,128,127,128,3,0,6, + 0,12,0,9,8,16,10,0,2,25,0,51,128,98,128,255, + 128,255,0,98,0,50,0,24,0,9,8,16,10,0,2,76, + 0,230,0,163,0,255,128,127,128,35,0,38,0,12,0,10, + 8,16,10,0,2,18,0,51,0,109,128,255,192,243,192,97, + 128,51,0,18,0,10,8,16,10,0,2,18,0,55,0,101, + 128,255,192,255,192,105,128,59,0,18,0,10,15,30,10,0, + 0,1,192,3,128,7,0,14,0,28,0,63,192,127,192,3, + 128,7,0,206,0,220,0,248,0,240,0,252,0,252,0,8, + 13,13,10,1,0,48,96,255,255,99,51,3,3,3,3,3, + 3,3,8,13,13,10,1,0,12,6,255,255,198,204,192,192, + 192,192,192,192,192,8,13,13,10,1,0,3,3,3,3,3, + 3,3,51,99,255,255,96,48,8,13,13,10,1,0,192,192, + 192,192,192,192,192,204,198,255,255,6,12,8,13,13,10,1, + 0,252,252,12,12,12,12,12,12,12,45,63,30,12,8,9, + 9,10,1,1,3,3,3,51,99,255,255,96,48,9,8,16, + 10,0,0,14,0,31,0,59,128,49,128,181,128,253,128,121, + 128,49,128,9,8,16,10,0,0,56,0,124,0,238,0,198, + 0,214,128,223,128,207,0,198,0,9,13,26,10,0,0,255, + 128,255,128,32,0,124,0,127,0,122,0,216,0,204,0,140, + 0,6,0,6,0,3,0,3,0,9,13,26,10,0,0,204, + 0,216,0,255,128,255,128,216,0,204,0,0,0,25,128,13, + 128,255,128,255,128,13,128,25,128,9,10,20,10,0,2,31, + 0,31,0,30,0,31,0,219,128,193,128,193,128,227,128,127, + 0,62,0,9,10,20,10,0,2,124,0,124,0,60,0,124, + 0,237,128,193,128,193,128,227,128,127,0,62,0,9,5,10, + 10,0,5,24,0,48,0,96,0,255,128,255,128,9,5,10, + 10,0,2,255,128,255,128,96,0,48,0,24,0,5,13,13, + 10,4,0,192,224,240,216,200,192,192,192,192,192,192,192,192, + 5,13,13,10,1,0,24,56,120,216,152,24,24,24,24,24, + 24,24,24,9,5,10,10,0,5,12,0,6,0,3,0,255, + 128,255,128,9,5,10,10,0,2,255,128,255,128,3,0,6, + 0,12,0,5,13,13,10,4,0,192,192,192,192,192,192,192, + 192,200,216,240,224,192,5,13,13,10,1,0,24,24,24,24, + 24,24,24,24,152,216,120,56,24,9,11,22,10,0,1,6, + 0,3,0,255,128,255,128,3,0,54,0,96,0,255,128,255, + 128,96,0,48,0,10,13,26,10,0,0,51,0,123,0,255, + 0,183,0,51,0,51,0,51,0,51,0,51,0,59,64,63, + 192,55,128,51,0,9,11,22,10,0,1,48,0,96,0,255, + 128,255,128,96,0,54,0,3,0,255,128,255,128,3,0,6, + 0,9,11,22,10,0,1,48,0,96,0,255,128,255,128,96, + 0,48,0,96,0,255,128,255,128,96,0,48,0,9,13,26, + 10,0,0,34,0,119,0,170,128,34,0,34,0,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,9,11,22, + 10,0,1,6,0,3,0,255,128,255,128,3,0,6,0,3, + 0,255,128,255,128,3,0,6,0,9,13,26,10,0,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,34, + 0,34,0,170,128,119,0,34,0,8,9,9,10,1,2,48, + 96,255,255,0,255,255,6,12,8,9,9,10,1,2,12,6, + 255,255,0,255,255,96,48,8,7,7,10,1,2,2,34,127, + 132,127,40,8,10,7,14,10,0,2,4,0,37,0,127,128, + 140,64,127,128,41,0,8,0,8,7,7,10,1,2,16,20, + 254,33,254,68,64,9,9,18,10,0,2,12,0,24,0,63, + 128,127,128,192,0,127,128,63,128,24,0,12,0,9,13,26, + 10,0,0,8,0,28,0,54,0,119,0,247,128,182,128,54, + 0,54,0,54,0,54,0,54,0,54,0,54,0,9,9,18, + 10,0,2,24,0,12,0,254,0,255,0,1,128,255,0,254, + 0,12,0,24,0,9,13,26,10,0,0,54,0,54,0,54, + 0,54,0,54,0,54,0,54,0,182,128,247,128,119,0,54, + 0,28,0,8,0,10,9,18,10,0,2,18,0,51,0,127, + 128,255,192,128,192,255,192,127,128,51,0,18,0,9,13,26, + 10,0,0,8,0,28,0,54,0,119,0,247,128,182,128,54, + 0,182,128,247,128,119,0,54,0,28,0,8,0,9,9,18, + 10,0,2,254,0,254,0,204,0,198,0,227,0,241,128,216, + 128,12,0,6,0,9,9,18,10,0,2,63,128,63,128,25, + 128,49,128,99,128,199,128,141,128,24,0,48,0,9,9,18, + 10,0,2,48,0,24,0,141,128,199,128,99,128,49,128,25, + 128,63,128,63,128,9,9,18,10,0,2,6,0,12,0,216, + 128,241,128,227,0,198,0,204,0,254,0,254,0,9,11,22, + 10,0,1,4,0,8,0,16,0,63,128,64,0,255,128,64, + 0,63,128,16,0,8,0,4,0,9,11,22,10,0,1,16, + 0,8,0,4,0,254,0,1,0,255,128,1,0,254,0,4, + 0,8,0,16,0,9,5,10,10,0,3,32,0,66,0,245, + 128,72,0,32,0,9,5,10,10,0,3,2,0,33,0,215, + 128,9,0,2,0,8,13,13,10,1,0,24,60,126,219,153, + 24,126,126,24,126,126,24,24,8,13,13,10,1,0,24,24, + 126,126,24,126,126,24,153,219,126,60,24,9,8,16,10,0, + 2,24,0,48,0,96,0,237,128,237,128,96,0,48,0,24, + 0,8,13,13,10,1,0,24,60,126,219,129,24,24,0,24, + 24,0,24,24,9,8,16,10,0,2,12,0,6,0,3,0, + 219,128,219,128,3,0,6,0,12,0,8,13,13,10,1,0, + 24,24,0,24,24,0,24,24,129,219,126,60,24,9,8,16, + 10,0,2,198,0,204,0,216,0,255,128,255,128,216,0,204, + 0,198,0,9,8,16,10,0,2,49,128,25,128,13,128,255, + 128,255,128,13,128,25,128,49,128,9,8,16,10,0,2,24, + 0,40,0,79,128,128,128,128,128,79,128,40,0,24,0,8, + 13,13,10,1,0,24,36,66,129,231,36,36,36,36,36,36, + 36,60,9,8,16,10,0,2,12,0,10,0,249,0,128,128, + 128,128,249,0,10,0,12,0,8,13,13,10,1,0,60,36, + 36,36,36,36,36,36,231,129,66,36,24,8,13,13,10,1, + 0,24,36,66,129,231,36,36,60,0,60,36,36,60,8,13, + 13,10,1,0,24,36,66,129,231,36,36,36,36,36,231,129, + 255,8,13,13,10,1,0,24,36,126,129,231,36,36,36,36, + 36,231,129,255,9,14,28,10,0,0,8,0,28,0,42,0, + 73,0,136,128,235,128,42,0,42,0,42,0,42,0,42,0, + 235,128,136,128,255,128,8,13,13,10,1,0,24,36,90,231, + 66,231,36,36,36,36,36,36,60,8,13,13,10,1,0,24, + 36,90,231,66,231,36,36,36,36,231,129,255,9,8,16,10, + 0,2,236,0,170,0,185,0,128,128,128,128,185,0,170,0, + 236,0,8,8,8,10,1,2,255,128,188,168,184,164,130,129, + 8,8,8,10,1,2,129,65,37,29,21,61,1,255,8,13, + 13,10,1,0,24,36,66,231,36,36,36,36,36,231,66,36, + 24,9,6,12,10,0,3,38,0,83,0,255,128,255,128,83, + 0,38,0,10,13,26,10,0,0,51,0,55,128,63,192,59, + 64,51,0,51,0,51,0,51,0,51,0,183,0,255,0,123, + 0,51,0,9,16,32,10,0,254,6,0,3,0,255,128,255, + 128,3,0,6,0,3,0,255,128,255,128,3,0,6,0,3, + 0,255,128,255,128,3,0,6,0,9,8,16,10,0,2,22, + 0,54,0,102,0,255,128,255,128,102,0,54,0,22,0,9, + 8,16,10,0,2,52,0,54,0,51,0,255,128,255,128,51, + 0,54,0,52,0,10,6,12,10,0,3,45,0,109,128,255, + 192,255,192,109,128,45,0,9,6,12,10,0,3,42,0,106, + 0,255,128,255,128,106,0,42,0,9,6,12,10,0,3,42, + 0,43,0,255,128,255,128,43,0,42,0,9,6,12,10,0, + 3,85,0,213,128,255,128,255,128,213,128,85,0,9,8,16, + 10,0,2,16,0,48,0,112,0,223,128,223,128,112,0,48, + 0,16,0,9,8,16,10,0,2,4,0,6,0,7,0,253, + 128,253,128,7,0,6,0,4,0,10,8,16,10,0,2,18, + 0,51,0,115,128,222,192,222,192,115,128,51,0,18,0,10, + 10,20,10,0,6,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,10,3,6,10,0,252,255, + 192,255,192,255,192,10,5,10,10,0,252,255,192,255,192,255, + 192,255,192,255,192,10,8,16,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,10,10,20,10,0, + 252,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,10,12,24,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,10,15,30,10,0,252,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,10,17,34,10,0,252,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,10, + 20,40,10,0,252,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,9,20,40, + 10,0,252,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,7,20,20,10,0, + 252,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254, + 254,254,254,254,254,6,20,20,10,0,252,252,252,252,252,252, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,5, + 20,20,10,0,252,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,4,20,20,10,0,252,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,3,20,20,10,0,252,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,1,20,20, + 10,0,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,5,20,20,10,5,252,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,10,19,38,10,0,253,85,64,0,0,170,128,0,0,85, + 64,0,0,170,128,0,0,85,64,0,0,170,128,0,0,85, + 64,0,0,170,128,0,0,85,64,0,0,170,128,10,20,40, + 10,0,252,85,64,170,128,85,64,170,128,85,64,170,128,85, + 64,170,128,85,64,170,128,85,64,170,128,85,64,170,128,85, + 64,170,128,85,64,170,128,85,64,170,128,10,20,40,10,0, + 252,85,64,255,192,170,128,255,192,85,64,255,192,170,128,255, + 192,85,64,255,192,170,128,255,192,85,64,255,192,170,128,255, + 192,85,64,255,192,170,128,255,192,10,3,6,10,0,13,255, + 192,255,192,255,192,1,20,20,10,9,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,5, + 10,10,10,0,252,248,248,248,248,248,248,248,248,248,248,5, + 10,10,10,5,252,248,248,248,248,248,248,248,248,248,248,5, + 10,10,10,0,6,248,248,248,248,248,248,248,248,248,248,10, + 20,40,10,0,252,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,192,255,192,255,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,10,20,40, + 10,0,252,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,10,20,40,10,0, + 252,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,255,192,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,10,20,40,10,0,252,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,5,10,10,10,5,6,248,248,248, + 248,248,248,248,248,248,248,10,20,40,10,0,252,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,10,20,40,10,0,252,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,255, + 192,255,192,255,192,255,192,255,192,255,192,255,192,255,192,255, + 192,255,192,8,8,8,10,1,1,255,255,255,255,255,255,255, + 255,8,8,8,10,1,1,255,129,129,129,129,129,129,255,8, + 8,8,10,1,1,126,129,129,129,129,129,129,126,8,8,8, + 10,1,1,255,129,189,189,189,189,129,255,9,9,18,10,0, + 0,255,128,128,128,255,128,128,128,255,128,128,128,255,128,128, + 128,255,128,9,9,18,10,0,0,255,128,170,128,170,128,170, + 128,170,128,170,128,170,128,170,128,255,128,9,9,18,10,0, + 0,255,128,170,128,255,128,170,128,255,128,170,128,255,128,170, + 128,255,128,8,8,8,10,1,1,255,201,165,147,201,165,147, + 255,8,8,8,10,1,1,255,147,165,201,147,165,201,255,8, + 8,8,10,1,1,255,171,197,171,145,171,197,255,4,4,4, + 10,3,3,240,240,240,240,4,4,4,10,3,3,240,144,144, + 240,8,6,6,10,1,3,255,255,255,255,255,255,8,6,6, + 10,1,3,255,129,129,129,129,255,6,13,13,10,2,0,252, + 252,252,252,252,252,252,252,252,252,252,252,252,6,13,13,10, + 2,0,252,132,132,132,132,132,132,132,132,132,132,132,252,8, + 4,4,10,1,3,31,62,124,248,8,4,4,10,1,3,31, + 34,68,248,8,8,8,10,1,2,24,24,60,60,126,126,255, + 255,8,8,8,10,1,2,24,24,36,36,66,66,129,255,5, + 5,5,10,3,3,32,112,112,248,248,5,5,5,10,3,3, + 32,80,80,136,248,8,8,8,10,1,2,192,240,252,255,255, + 252,240,192,8,8,8,10,1,2,192,176,140,131,131,140,176, + 192,5,5,5,10,3,3,192,240,248,240,192,5,5,5,10, + 3,3,192,176,136,176,192,8,5,5,10,1,4,224,252,255, + 252,224,8,5,5,10,1,4,224,156,131,156,224,8,8,8, + 10,1,2,255,255,126,126,60,60,24,24,8,8,8,10,1, + 2,255,129,66,66,36,36,24,24,5,5,5,10,3,3,248, + 248,112,112,32,5,5,5,10,3,3,248,136,80,80,32,8, + 8,8,10,1,2,3,15,63,255,255,63,15,3,8,8,8, + 10,1,2,3,13,49,193,193,49,13,3,5,5,5,10,3, + 3,24,120,248,120,24,5,5,5,10,3,3,24,104,136,104, + 24,8,5,5,10,1,4,7,63,255,63,7,8,5,5,10, + 1,4,7,57,193,57,7,8,8,8,10,1,2,24,60,126, + 255,255,126,60,24,8,8,8,10,1,2,24,36,66,129,129, + 66,36,24,8,8,8,10,1,2,24,36,90,189,189,90,36, + 24,8,8,8,10,1,1,60,66,153,189,189,153,66,60,9, + 15,30,10,1,255,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,65,0,65,0,34,0,34,0,20,0,20, + 0,8,0,8,8,8,10,1,1,60,66,129,129,129,129,66, + 60,7,7,7,10,1,2,40,0,130,0,130,0,40,7,7, + 7,10,1,2,56,108,170,170,170,108,56,8,8,8,10,1, + 1,60,66,153,165,165,153,66,60,8,8,8,10,1,1,60, + 126,255,255,255,255,126,60,8,8,8,10,1,1,60,114,241, + 241,241,241,114,60,8,8,8,10,1,1,60,78,143,143,143, + 143,78,60,8,8,8,10,1,1,60,66,129,129,255,255,126, + 60,8,8,8,10,1,1,60,126,255,255,129,129,66,60,8, + 8,8,10,1,1,60,78,143,143,129,129,66,60,8,8,8, + 10,1,1,60,78,143,143,255,255,126,60,4,8,8,10,1, + 1,48,112,240,240,240,240,112,48,4,8,8,10,5,1,192, + 224,240,240,240,240,224,192,10,20,40,10,0,252,255,192,255, + 192,255,192,255,192,255,192,255,192,225,192,192,192,128,64,128, + 64,128,64,128,64,192,192,225,192,255,192,255,192,255,192,255, + 192,255,192,255,192,10,20,40,10,0,252,255,192,255,192,255, + 192,255,192,255,192,255,192,225,192,222,192,191,64,191,64,191, + 64,191,64,222,192,225,192,255,192,255,192,255,192,255,192,255, + 192,255,192,10,10,20,10,0,6,255,192,255,192,255,192,255, + 192,255,192,255,192,225,192,222,192,191,64,191,64,10,10,20, + 10,0,252,191,64,191,64,222,192,225,192,255,192,255,192,255, + 192,255,192,255,192,255,192,4,4,4,10,1,5,48,64,128, + 128,4,4,4,10,5,5,192,32,16,16,4,4,4,10,5, + 1,16,16,32,192,4,4,4,10,1,1,128,128,64,48,8, + 4,4,10,1,5,60,66,129,129,8,4,4,10,1,1,129, + 129,66,60,10,19,38,10,0,252,0,64,0,64,0,192,0, + 192,1,192,1,192,3,192,3,192,7,192,7,192,15,192,15, + 192,31,192,31,192,63,192,63,192,127,192,127,192,255,192,10, + 19,38,10,0,252,128,0,128,0,192,0,192,0,224,0,224, + 0,240,0,240,0,248,0,248,0,252,0,252,0,254,0,254, + 0,255,0,255,0,255,128,255,128,255,192,10,19,38,10,0, + 253,255,192,255,128,255,128,255,0,255,0,254,0,254,0,252, + 0,252,0,248,0,248,0,240,0,240,0,224,0,224,0,192, + 0,192,0,128,0,128,0,10,19,38,10,0,253,255,192,127, + 192,127,192,63,192,63,192,31,192,31,192,15,192,15,192,7, + 192,7,192,3,192,3,192,1,192,1,192,0,192,0,192,0, + 64,0,64,5,5,5,10,3,4,112,136,136,136,112,8,8, + 8,10,1,1,255,241,241,241,241,241,241,255,8,8,8,10, + 1,1,255,143,143,143,143,143,143,255,8,8,8,10,1,1, + 255,253,249,241,225,193,129,255,8,8,8,10,1,1,255,129, + 131,135,143,159,191,255,9,9,18,10,0,0,255,128,136,128, + 136,128,136,128,136,128,136,128,136,128,136,128,255,128,8,8, + 8,10,1,2,24,24,36,36,90,90,129,255,8,8,8,10, + 1,2,24,24,52,52,114,114,241,255,8,8,8,10,1,2, + 24,24,44,44,78,78,143,255,10,10,20,10,0,0,30,0, + 33,0,64,128,128,64,128,64,128,64,128,64,64,128,33,0, + 30,0,9,9,18,10,0,0,255,128,136,128,136,128,136,128, + 248,128,128,128,128,128,128,128,255,128,9,9,18,10,0,0, + 255,128,128,128,128,128,128,128,248,128,136,128,136,128,136,128, + 255,128,9,9,18,10,0,0,255,128,128,128,128,128,128,128, + 143,128,136,128,136,128,136,128,255,128,9,9,18,10,0,0, + 255,128,136,128,136,128,136,128,143,128,128,128,128,128,128,128, + 255,128,9,9,18,10,0,0,62,0,73,0,136,128,136,128, + 248,128,128,128,128,128,65,0,62,0,9,9,18,10,0,0, + 62,0,65,0,128,128,128,128,248,128,136,128,136,128,73,0, + 62,0,9,9,18,10,0,0,62,0,65,0,128,128,128,128, + 143,128,136,128,136,128,73,0,62,0,9,9,18,10,0,0, + 62,0,73,0,136,128,136,128,143,128,128,128,128,128,65,0, + 62,0,6,6,6,10,2,2,252,136,144,160,192,128,6,6, + 6,10,2,2,252,68,36,20,12,4,6,6,6,10,2,2, + 128,192,160,144,136,252,6,6,6,10,2,2,252,132,132,132, + 132,252,6,6,6,10,2,2,252,252,252,252,252,252,4,4, + 4,10,3,3,240,144,144,240,4,4,4,10,3,3,240,240, + 240,240,6,6,6,10,2,2,4,12,20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 8, '1' Height: 4 + Calculated Max Values w= 9 h=15 x= 3 y= 4 dx=10 dy= 0 ascent=14 len=30 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =14 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_75r[693] U8G_SECTION(".progmem.u8g_font_10x20_75r") = { + 0,10,20,0,252,8,1,219,0,0,32,79,0,14,255,9, + 0,8,8,8,10,1,1,255,255,255,255,255,255,255,255,8, + 8,8,10,1,1,255,129,129,129,129,129,129,255,8,8,8, + 10,1,1,126,129,129,129,129,129,129,126,8,8,8,10,1, + 1,255,129,189,189,189,189,129,255,9,9,18,10,0,0,255, + 128,128,128,255,128,128,128,255,128,128,128,255,128,128,128,255, + 128,9,9,18,10,0,0,255,128,170,128,170,128,170,128,170, + 128,170,128,170,128,170,128,255,128,9,9,18,10,0,0,255, + 128,170,128,255,128,170,128,255,128,170,128,255,128,170,128,255, + 128,8,8,8,10,1,1,255,201,165,147,201,165,147,255,8, + 8,8,10,1,1,255,147,165,201,147,165,201,255,8,8,8, + 10,1,1,255,171,197,171,145,171,197,255,4,4,4,10,3, + 3,240,240,240,240,4,4,4,10,3,3,240,144,144,240,8, + 6,6,10,1,3,255,255,255,255,255,255,8,6,6,10,1, + 3,255,129,129,129,129,255,6,13,13,10,2,0,252,252,252, + 252,252,252,252,252,252,252,252,252,252,6,13,13,10,2,0, + 252,132,132,132,132,132,132,132,132,132,132,132,252,8,4,4, + 10,1,3,31,62,124,248,8,4,4,10,1,3,31,34,68, + 248,8,8,8,10,1,2,24,24,60,60,126,126,255,255,8, + 8,8,10,1,2,24,24,36,36,66,66,129,255,5,5,5, + 10,3,3,32,112,112,248,248,5,5,5,10,3,3,32,80, + 80,136,248,8,8,8,10,1,2,192,240,252,255,255,252,240, + 192,8,8,8,10,1,2,192,176,140,131,131,140,176,192,5, + 5,5,10,3,3,192,240,248,240,192,5,5,5,10,3,3, + 192,176,136,176,192,8,5,5,10,1,4,224,252,255,252,224, + 8,5,5,10,1,4,224,156,131,156,224,8,8,8,10,1, + 2,255,255,126,126,60,60,24,24,8,8,8,10,1,2,255, + 129,66,66,36,36,24,24,5,5,5,10,3,3,248,248,112, + 112,32,5,5,5,10,3,3,248,136,80,80,32,8,8,8, + 10,1,2,3,15,63,255,255,63,15,3,8,8,8,10,1, + 2,3,13,49,193,193,49,13,3,5,5,5,10,3,3,24, + 120,248,120,24,5,5,5,10,3,3,24,104,136,104,24,8, + 5,5,10,1,4,7,63,255,63,7,8,5,5,10,1,4, + 7,57,193,57,7,8,8,8,10,1,2,24,60,126,255,255, + 126,60,24,8,8,8,10,1,2,24,36,66,129,129,66,36, + 24,8,8,8,10,1,2,24,36,90,189,189,90,36,24,8, + 8,8,10,1,1,60,66,153,189,189,153,66,60,9,15,30, + 10,1,255,8,0,20,0,20,0,34,0,34,0,65,0,65, + 0,128,128,65,0,65,0,34,0,34,0,20,0,20,0,8, + 0,8,8,8,10,1,1,60,66,129,129,129,129,66,60,7, + 7,7,10,1,2,40,0,130,0,130,0,40,7,7,7,10, + 1,2,56,108,170,170,170,108,56,8,8,8,10,1,1,60, + 66,153,165,165,153,66,60,8,8,8,10,1,1,60,126,255, + 255,255,255,126,60}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w=10 h=13 x= 4 y= 5 dx=10 dy= 0 ascent=13 len=24 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =13 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[2638] U8G_SECTION(".progmem.u8g_font_10x20_78_79") = { + 0,10,20,0,252,9,1,212,2,205,32,255,0,13,0,11, + 0,9,9,18,10,0,0,54,0,28,0,136,128,201,128,119, + 0,201,128,136,128,28,0,54,0,9,9,18,10,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,10,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,10,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,10,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,10,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,10,0,0,8,0,28,0,28,0,127,0,255, + 128,127,0,28,0,28,0,8,0,9,9,18,10,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,10,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,10,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,10,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,127,0,119,0,99,0,255,255,255,255, + 255,8,9,9,10,0,0,24,219,255,126,24,126,255,219,24, + 8,9,9,10,0,0,24,219,255,102,36,102,255,219,24,9, + 9,18,10,0,0,8,0,73,0,42,0,28,0,255,128,28, + 0,42,0,73,0,8,0,9,9,18,10,0,0,8,0,73, + 0,62,0,62,0,255,128,62,0,62,0,73,0,8,0,7, + 7,7,10,1,0,16,146,124,56,124,146,16,9,9,18,10, + 0,0,34,0,20,0,148,128,127,0,28,0,127,0,148,128, + 20,0,34,0,255,255,255,255,9,11,22,10,0,0,28,0, + 28,0,201,128,201,128,62,0,28,0,62,0,201,128,201,128, + 28,0,28,0,9,11,22,10,0,0,28,0,28,0,201,128, + 201,128,62,0,28,0,62,0,201,128,201,128,28,0,28,0, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 9,8,16,10,0,1,62,0,67,0,129,128,129,128,129,128, + 129,128,67,0,62,0,255,9,9,18,10,0,0,254,0,130, + 0,131,128,131,128,131,128,131,128,255,128,63,128,63,128,9, + 9,18,10,0,0,63,128,63,128,255,128,131,128,131,128,131, + 128,131,128,130,0,254,0,8,8,8,10,0,0,254,131,131, + 131,131,131,255,127,8,8,8,10,0,0,127,255,131,131,131, + 131,131,254,255,255,255,9,9,18,10,0,0,8,0,28,0, + 28,0,107,0,247,128,107,0,28,0,28,0,8,0,255,1, + 10,10,10,4,0,128,128,128,128,128,128,128,128,128,128,2, + 10,10,10,3,0,192,192,192,192,192,192,192,192,192,192,3, + 10,10,10,3,0,224,224,224,224,224,224,224,224,224,224,4, + 6,6,10,3,5,112,128,224,240,240,96,4,6,6,10,3, + 5,96,240,240,112,16,224,9,6,12,10,0,5,115,128,132, + 0,231,0,247,128,247,128,99,0,9,6,12,10,0,5,99, + 0,247,128,247,128,115,128,16,128,231,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,9,9,18,10,0,0,127,0,247,128,231,128,247,128, + 247,128,247,128,247,128,227,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,253,128,251,128,247,128,237,128,193,128, + 127,0,9,9,18,10,0,0,127,0,227,128,221,128,253,128, + 243,128,253,128,221,128,227,128,127,0,9,9,18,10,0,0, + 127,0,243,128,235,128,219,128,193,128,251,128,251,128,241,128, + 127,0,9,9,18,10,0,0,127,0,193,128,223,128,223,128, + 195,128,253,128,253,128,195,128,127,0,9,9,18,10,0,0, + 127,0,225,128,223,128,223,128,195,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,193,128,253,128,251,128, + 251,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,221,128,227,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,225,128,221,128,221,128, + 225,128,253,128,253,128,227,128,127,0,9,9,18,10,0,0, + 127,0,219,128,213,128,213,128,213,128,213,128,213,128,219,128, + 127,0,9,9,18,10,0,0,127,0,128,128,136,128,152,128, + 136,128,136,128,156,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,152,128,132,128,132,128,136,128,156,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,152,128,132,128, + 136,128,132,128,152,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,136,128,152,128,168,128,188,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,156,128,144,128, + 152,128,132,128,152,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,140,128,144,128,152,128,148,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,156,128,132,128, + 136,128,136,128,136,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,136,128,148,128,136,128,148,128,136,128,128,128, + 127,0,9,9,18,10,0,0,127,0,128,128,136,128,148,128, + 140,128,132,128,136,128,128,128,127,0,9,9,18,10,0,0, + 127,0,128,128,164,128,170,128,170,128,170,128,164,128,128,128, + 127,0,9,9,18,10,0,0,127,0,247,128,231,128,247,128, + 247,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,253,128,251,128,247,128,239,128,193,128, + 127,0,9,9,18,10,0,0,127,0,227,128,221,128,253,128, + 243,128,253,128,221,128,227,128,127,0,9,9,18,10,0,0, + 127,0,243,128,235,128,219,128,193,128,251,128,251,128,251,128, + 127,0,9,9,18,10,0,0,127,0,193,128,223,128,223,128, + 195,128,253,128,253,128,195,128,127,0,9,9,18,10,0,0, + 127,0,225,128,223,128,223,128,195,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,193,128,253,128,251,128, + 251,128,247,128,247,128,247,128,127,0,9,9,18,10,0,0, + 127,0,227,128,221,128,221,128,227,128,221,128,221,128,227,128, + 127,0,9,9,18,10,0,0,127,0,225,128,221,128,221,128, + 225,128,253,128,253,128,227,128,127,0,9,9,18,10,0,0, + 127,0,219,128,213,128,213,128,213,128,213,128,213,128,219,128, + 127,0,7,8,8,10,1,1,48,24,12,254,254,12,24,48, + 255,255,255,7,5,5,10,1,1,224,250,62,14,30,8,7, + 7,10,1,1,8,12,230,255,230,12,8,7,5,5,10,1, + 1,30,14,62,250,224,9,7,14,10,0,0,48,0,28,0, + 31,0,255,128,31,0,28,0,48,0,9,9,18,10,0,0, + 28,0,30,0,15,0,255,128,255,128,255,128,15,0,30,0, + 28,0,9,5,10,10,0,1,2,0,3,0,255,128,3,0, + 2,0,9,7,14,10,0,0,4,0,6,0,255,0,255,128, + 255,0,6,0,4,0,9,5,10,10,0,1,2,0,183,0, + 183,128,183,0,2,0,9,5,10,10,0,1,2,0,171,0, + 171,128,171,0,2,0,9,5,10,10,0,1,2,0,255,0, + 255,128,255,0,2,0,9,8,16,10,0,1,128,0,112,0, + 78,0,33,128,31,128,62,0,112,0,128,0,9,8,16,10, + 0,1,128,0,112,0,62,0,31,128,33,128,78,0,112,0, + 128,0,9,8,16,10,0,1,128,0,112,0,62,0,31,128, + 31,128,62,0,112,0,128,0,9,7,14,10,0,0,132,0, + 134,0,255,0,255,128,127,0,6,0,4,0,9,7,14,10, + 0,0,4,0,6,0,127,0,255,128,255,0,134,0,132,0, + 6,9,9,10,2,0,16,16,248,248,252,248,248,16,16,8, + 9,9,10,0,1,4,4,254,254,255,254,254,4,4,9,9, + 18,10,0,0,24,0,28,0,22,0,243,0,129,128,243,0, + 22,0,28,0,24,0,9,9,18,10,0,0,24,0,28,0, + 26,0,249,0,192,128,249,0,26,0,28,0,24,0,9,9, + 18,10,0,0,0,128,1,128,62,128,64,128,129,128,243,0, + 238,0,60,0,56,0,9,9,18,10,0,0,56,0,60,0, + 238,0,243,0,129,128,64,128,62,128,1,128,0,128,8,9, + 9,10,0,1,16,24,20,242,129,243,118,28,24,8,9,9, + 10,0,1,24,28,118,243,129,242,20,24,16,9,8,16,10, + 0,1,4,0,250,0,129,0,64,128,129,128,251,0,6,0, + 4,0,255,9,8,16,10,0,2,4,0,6,0,251,0,129, + 128,64,128,129,0,250,0,4,0,9,9,18,10,0,1,28, + 0,127,0,251,128,1,128,0,128,1,128,251,128,127,0,28, + 0,9,5,10,10,0,3,210,0,43,0,127,128,43,0,210, + 0,9,9,18,10,0,0,16,0,56,0,92,0,236,0,116, + 0,60,0,2,128,1,128,3,128,9,5,10,10,0,2,242, + 0,123,0,7,128,123,0,242,0,9,9,18,10,0,0,3, + 128,1,128,2,128,60,0,116,0,236,0,92,0,56,0,16, + 0,9,9,18,10,0,0,16,0,24,0,28,0,252,0,124, + 0,60,0,2,128,1,128,3,128,9,5,10,10,0,2,242, + 0,123,0,127,128,123,0,242,0,9,9,18,10,0,0,3, + 128,1,128,2,128,60,0,124,0,252,0,28,0,24,0,16, + 0,255,255,255,255,9,7,14,10,0,1,20,0,10,0,253, + 0,0,128,253,0,10,0,20,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,9, + 12,24,10,0,0,224,128,49,128,49,128,42,128,42,128,36, + 128,36,128,42,128,42,128,49,128,49,128,224,128,9,12,24, + 10,0,0,131,128,198,0,198,0,170,0,170,0,146,0,146, + 0,170,0,170,0,198,0,198,0,131,128,9,12,24,10,0, + 0,193,128,99,0,99,0,85,0,85,0,73,0,73,0,85, + 0,85,0,99,0,99,0,193,128,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,8,13,13,10,1,0,255,216,216, + 216,216,216,216,216,216,216,216,216,255,8,13,13,10,1,0, + 255,27,27,27,27,27,27,27,27,27,27,27,255,4,13,13, + 10,4,0,16,48,32,96,64,192,128,192,64,96,32,48,16, + 4,13,13,10,4,0,128,192,64,96,32,48,16,48,32,96, + 64,192,128,7,13,13,10,1,0,18,54,36,108,72,216,144, + 216,72,108,36,54,18,7,13,13,10,2,0,144,216,72,108, + 36,54,18,54,36,108,72,216,144,255,255,255,255,255,255,255, + 255,255,10,8,16,10,0,2,24,0,48,0,96,0,255,192, + 255,192,96,0,48,0,24,0,10,8,16,10,0,2,6,0, + 3,0,1,128,255,192,255,192,1,128,3,0,6,0,10,8, + 16,10,0,2,18,0,51,0,97,128,255,192,255,192,97,128, + 51,0,18,0,10,9,18,10,0,2,12,0,24,0,63,192, + 127,192,192,0,127,192,63,192,24,0,12,0,10,9,18,10, + 0,2,12,0,6,0,255,0,255,128,0,192,255,128,255,0, + 6,0,12,0,10,9,18,10,0,2,18,0,51,0,127,128, + 255,192,128,192,255,192,127,128,51,0,18,0,10,8,16,10, + 0,2,24,192,48,192,96,192,255,192,255,192,96,192,48,192, + 24,192,10,8,16,10,0,2,198,0,195,0,193,128,255,192, + 255,192,193,128,195,0,198,0,10,9,18,10,0,2,12,64, + 24,64,63,192,127,192,192,64,127,192,63,192,24,64,12,64, + 10,9,18,10,0,2,140,0,134,0,255,0,255,128,128,192, + 255,128,255,0,134,0,140,0,10,8,16,10,0,2,6,0, + 3,0,171,128,170,192,85,192,85,128,3,0,6,0}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w= 9 h=17 x= 4 y=16 dx=10 dy= 0 ascent=16 len=26 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20[3453] U8G_SECTION(".progmem.u8g_font_10x20") = { + 0,10,20,0,252,13,2,74,4,153,32,255,252,16,252,13, + 252,0,0,0,10,0,16,2,13,13,10,4,0,192,192,192, + 192,192,192,192,192,192,192,0,192,192,6,4,4,10,2,9, + 204,204,204,72,9,11,22,10,1,1,27,0,27,0,27,0, + 127,128,54,0,54,0,54,0,255,0,108,0,108,0,108,0, + 8,13,13,10,1,0,24,126,219,216,216,216,126,27,27,27, + 219,126,24,9,12,24,10,1,0,115,0,219,0,222,0,118, + 0,12,0,12,0,24,0,24,0,55,0,61,128,109,128,103, + 0,9,13,26,10,1,0,56,0,108,0,108,0,108,0,120, + 0,48,0,112,0,216,0,205,128,199,0,198,0,239,0,121, + 128,2,5,5,10,4,8,192,192,192,192,128,5,13,13,10, + 3,0,24,48,96,96,192,192,192,192,192,96,96,48,24,5, + 13,13,10,2,0,192,96,48,48,24,24,24,24,24,48,48, + 96,192,8,7,7,10,1,3,102,102,60,255,60,102,102,8, + 7,7,10,1,3,24,24,24,255,24,24,24,4,3,3,10, + 3,255,112,112,224,8,1,1,10,1,6,255,3,3,3,10, + 4,0,224,224,224,7,12,12,10,2,0,6,6,12,12,24, + 24,48,48,96,96,192,192,8,13,13,10,1,0,24,60,102, + 102,195,195,195,195,195,102,102,60,24,8,13,13,10,1,0, + 24,56,120,216,24,24,24,24,24,24,24,24,255,8,13,13, + 10,1,0,60,102,195,195,3,3,6,28,48,96,192,192,255, + 8,13,13,10,1,0,60,102,195,195,3,6,28,6,3,195, + 195,102,60,8,13,13,10,1,0,2,6,14,30,54,102,198, + 198,255,6,6,6,6,8,13,13,10,1,0,255,192,192,192, + 192,220,230,3,3,3,195,102,60,8,13,13,10,1,0,60, + 102,194,192,192,220,230,195,195,195,195,102,60,8,13,13,10, + 1,0,255,3,3,6,6,12,12,24,24,48,48,96,96,8, + 13,13,10,1,0,60,102,195,195,195,102,60,102,195,195,195, + 102,60,8,13,13,10,1,0,60,102,195,195,195,195,103,59, + 3,3,67,102,60,3,8,8,10,4,0,224,224,0,0,0, + 0,224,224,4,9,9,10,3,255,112,112,0,0,0,0,112, + 112,224,7,13,13,10,1,0,2,6,12,24,48,96,192,96, + 48,24,12,6,2,8,6,6,10,1,3,255,0,0,0,0, + 255,7,13,13,10,2,0,128,192,96,48,24,12,6,12,24, + 48,96,192,128,8,13,13,10,1,0,60,102,195,195,195,6, + 12,24,24,24,0,24,24,8,13,13,10,1,0,60,102,195, + 207,223,219,219,219,222,204,192,99,62,8,13,13,10,1,0, + 24,60,102,102,195,195,195,255,195,195,195,195,195,8,13,13, + 10,1,0,248,204,198,198,198,204,252,198,195,195,195,198,252, + 8,13,13,10,1,0,60,102,195,192,192,192,192,192,192,192, + 195,102,60,8,13,13,10,1,0,252,198,195,195,195,195,195, + 195,195,195,195,198,252,8,13,13,10,1,0,255,192,192,192, + 192,192,252,192,192,192,192,192,255,8,13,13,10,1,0,255, + 192,192,192,192,192,252,192,192,192,192,192,192,8,13,13,10, + 1,0,60,102,195,192,192,192,207,195,195,195,195,103,61,8, + 13,13,10,1,0,195,195,195,195,195,195,255,195,195,195,195, + 195,195,8,13,13,10,1,0,255,24,24,24,24,24,24,24, + 24,24,24,24,255,9,13,26,10,1,0,31,128,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,198,0,198, + 0,108,0,56,0,8,13,13,10,1,0,195,195,198,198,204, + 204,248,204,204,198,198,195,195,8,13,13,10,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,255,8,13,13,10,1, + 0,195,195,231,231,255,219,219,219,219,195,195,195,195,8,13, + 13,10,1,0,195,227,227,243,243,219,219,207,207,199,199,195, + 195,8,13,13,10,1,0,60,102,195,195,195,195,195,195,195, + 195,195,102,60,8,13,13,10,1,0,252,198,195,195,195,195, + 198,252,192,192,192,192,192,8,14,14,10,1,255,60,102,195, + 195,195,195,195,195,195,219,207,102,62,3,8,13,13,10,1, + 0,252,198,195,195,195,195,198,252,204,198,198,195,195,8,13, + 13,10,1,0,60,102,195,192,192,96,60,6,3,3,195,102, + 60,8,13,13,10,1,0,255,24,24,24,24,24,24,24,24, + 24,24,24,24,8,13,13,10,1,0,195,195,195,195,195,195, + 195,195,195,195,195,102,60,8,13,13,10,1,0,195,195,195, + 195,102,102,102,60,60,60,24,24,24,8,13,13,10,1,0, + 195,195,195,195,195,219,219,219,219,231,231,195,195,8,13,13, + 10,1,0,195,195,102,102,60,60,24,60,60,102,102,195,195, + 8,13,13,10,1,0,195,195,102,102,60,60,24,24,24,24, + 24,24,24,8,13,13,10,1,0,255,3,3,6,12,12,24, + 48,48,96,192,192,255,6,13,13,10,2,0,252,192,192,192, + 192,192,192,192,192,192,192,192,252,7,12,12,10,2,0,192, + 192,96,96,48,48,24,24,12,12,6,6,6,13,13,10,2, + 0,252,12,12,12,12,12,12,12,12,12,12,12,252,8,4, + 4,10,1,9,24,60,102,195,9,1,2,10,1,255,255,128, + 4,3,3,10,3,10,192,96,48,8,8,8,10,1,0,62, + 99,3,127,195,195,195,125,8,13,13,10,1,0,192,192,192, + 192,192,220,230,195,195,195,195,230,220,8,8,8,10,1,0, + 62,99,192,192,192,192,99,62,8,13,13,10,1,0,3,3, + 3,3,3,59,103,195,195,195,195,103,59,8,8,8,10,1, + 0,60,102,195,255,192,192,99,62,8,13,13,10,1,0,30, + 51,51,48,48,252,48,48,48,48,48,48,48,8,12,12,10, + 1,252,125,199,198,198,198,124,192,126,195,195,195,126,8,13, + 13,10,1,0,192,192,192,192,192,220,230,195,195,195,195,195, + 195,8,11,11,10,1,0,24,24,0,120,24,24,24,24,24, + 24,255,7,15,15,10,2,252,6,6,0,30,6,6,6,6, + 6,6,6,198,198,198,124,8,13,13,10,1,0,192,192,192, + 192,192,198,204,216,240,248,204,198,195,8,13,13,10,1,0, + 120,24,24,24,24,24,24,24,24,24,24,24,255,8,8,8, + 10,1,0,182,255,219,219,219,219,219,219,8,8,8,10,1, + 0,220,230,195,195,195,195,195,195,8,8,8,10,1,0,60, + 102,195,195,195,195,102,60,8,12,12,10,1,252,220,230,195, + 195,195,195,230,220,192,192,192,192,8,12,12,10,1,252,59, + 103,195,195,195,195,103,59,3,3,3,3,8,8,8,10,1, + 0,222,115,96,96,96,96,96,96,8,8,8,10,1,0,126, + 195,192,126,3,3,195,126,8,11,11,10,1,0,48,48,48, + 252,48,48,48,48,48,51,30,8,8,8,10,1,0,195,195, + 195,195,195,195,103,59,8,8,8,10,1,0,195,195,102,102, + 60,60,24,24,8,8,8,10,1,0,195,195,195,219,219,219, + 255,102,8,8,8,10,1,0,195,102,60,24,24,60,102,195, + 8,12,12,10,1,252,195,195,195,195,195,195,103,59,3,195, + 102,60,7,8,8,10,2,0,254,6,12,24,48,96,192,254, + 8,13,13,10,1,0,15,24,24,24,24,24,240,24,24,24, + 24,24,15,2,13,13,10,4,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,8,13,13,10,1,0,240,24,24,24, + 24,24,15,24,24,24,24,24,240,8,3,3,10,1,10,115, + 219,206,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,10,0,16,2,13,13,10,4,0,192, + 192,0,192,192,192,192,192,192,192,192,192,192,7,12,12,10, + 1,0,24,24,60,102,194,192,192,194,102,60,24,24,9,12, + 24,10,1,0,30,0,51,0,51,0,48,0,48,0,252,0, + 48,0,48,0,48,0,248,0,173,128,231,0,9,9,18,10, + 0,1,128,128,221,128,127,0,99,0,99,0,99,0,127,0, + 221,128,128,128,8,11,11,10,1,0,129,195,102,60,126,24, + 126,24,24,24,24,2,13,13,10,4,0,192,192,192,192,192, + 0,0,0,192,192,192,192,192,8,13,13,10,1,0,60,102, + 198,96,120,204,102,51,30,6,99,102,60,6,2,2,10,2, + 11,204,204,8,11,11,10,1,0,60,102,195,189,165,161,165, + 189,195,102,60,8,9,9,10,1,4,62,67,3,127,195,195, + 125,0,255,9,11,22,10,0,0,4,128,13,128,27,0,54, + 0,108,0,216,0,108,0,54,0,27,0,13,128,4,128,8, + 4,4,10,1,4,255,255,3,3,6,1,1,10,2,6,252, + 8,11,11,10,1,0,60,102,195,189,165,189,169,173,195,102, + 60,8,1,1,10,1,13,255,6,6,6,10,2,7,48,120, + 204,204,120,48,8,7,7,10,1,2,24,24,255,24,24,0, + 255,5,7,7,10,2,6,112,216,24,48,96,192,248,5,7, + 7,10,2,6,112,216,24,48,24,216,112,4,3,3,10,3, + 10,48,96,192,7,10,10,10,1,253,198,198,198,198,198,238, + 250,192,192,192,8,13,13,10,1,0,127,255,251,251,251,123, + 27,27,27,27,27,27,27,3,3,3,10,4,5,224,224,224, + 5,4,4,10,2,252,48,24,216,112,4,7,7,10,2,6, + 96,224,96,96,96,96,240,7,9,9,10,1,4,56,108,198, + 198,198,108,56,0,254,9,11,22,10,1,0,144,0,216,0, + 108,0,54,0,27,0,13,128,27,0,54,0,108,0,216,0, + 144,0,8,12,12,10,1,1,64,192,65,66,228,8,18,38, + 74,158,2,2,8,12,12,10,1,1,64,192,65,66,228,8, + 22,41,65,130,4,15,8,12,12,10,1,1,224,16,97,18, + 228,8,18,38,74,159,2,2,8,13,13,10,1,0,24,24, + 0,24,24,24,48,96,195,195,195,102,60,8,15,15,10,1, + 0,96,48,24,0,24,60,102,195,195,195,255,195,195,195,195, + 8,15,15,10,1,0,6,12,24,0,24,60,102,195,195,195, + 255,195,195,195,195,8,15,15,10,1,0,24,60,102,0,24, + 60,102,195,195,195,255,195,195,195,195,8,15,15,10,1,0, + 50,126,76,0,24,60,102,195,195,195,255,195,195,195,195,8, + 15,15,10,1,0,102,102,0,24,60,102,102,195,195,195,255, + 195,195,195,195,8,16,16,10,1,0,60,102,102,60,0,24, + 60,102,195,195,195,255,195,195,195,195,8,13,13,10,1,0, + 31,60,108,108,204,204,255,204,204,204,204,204,207,8,17,17, + 10,1,252,60,102,195,192,192,192,192,192,192,192,195,102,60, + 24,12,108,56,8,15,15,10,1,0,96,48,24,0,255,192, + 192,192,192,252,192,192,192,192,255,8,15,15,10,1,0,12, + 24,48,0,255,192,192,192,192,252,192,192,192,192,255,8,15, + 15,10,1,0,24,60,102,0,255,192,192,192,192,252,192,192, + 192,192,255,8,15,15,10,1,0,102,102,0,0,255,192,192, + 192,192,252,192,192,192,192,255,6,15,15,10,2,0,96,48, + 24,0,252,48,48,48,48,48,48,48,48,48,252,6,15,15, + 10,2,0,24,48,96,0,252,48,48,48,48,48,48,48,48, + 48,252,6,15,15,10,2,0,48,120,204,0,252,48,48,48, + 48,48,48,48,48,48,252,6,15,15,10,2,0,204,204,0, + 252,48,48,48,48,48,48,48,48,48,48,252,9,13,26,10, + 0,0,126,0,99,0,97,128,97,128,97,128,97,128,249,128, + 97,128,97,128,97,128,97,128,99,0,126,0,8,15,15,10, + 1,0,50,126,76,0,195,227,243,243,219,219,207,207,199,195, + 195,8,15,15,10,1,0,48,24,12,0,60,102,195,195,195, + 195,195,195,195,102,60,8,15,15,10,1,0,12,24,48,0, + 60,102,195,195,195,195,195,195,195,102,60,8,15,15,10,1, + 0,24,60,102,0,60,102,195,195,195,195,195,195,195,102,60, + 8,15,15,10,1,0,50,126,76,0,60,102,195,195,195,195, + 195,195,195,102,60,8,15,15,10,1,0,102,102,0,60,102, + 195,195,195,195,195,195,195,195,102,60,7,8,8,10,1,0, + 130,198,108,56,56,108,198,130,8,15,15,10,1,255,1,62, + 102,199,199,203,203,203,211,211,211,227,102,124,128,8,15,15, + 10,1,0,48,24,12,0,195,195,195,195,195,195,195,195,195, + 102,60,8,15,15,10,1,0,12,24,48,0,195,195,195,195, + 195,195,195,195,195,102,60,8,15,15,10,1,0,24,60,102, + 0,195,195,195,195,195,195,195,195,195,102,60,8,15,15,10, + 1,0,102,102,0,195,195,195,195,195,195,195,195,195,195,102, + 60,8,15,15,10,1,0,12,24,48,0,195,195,102,102,60, + 60,24,24,24,24,24,7,13,13,10,2,0,192,192,192,252, + 198,198,198,198,198,252,192,192,192,8,13,13,10,1,0,28, + 54,99,99,102,236,108,102,99,99,99,102,108,8,12,12,10, + 1,0,48,24,12,0,126,195,3,127,195,195,195,125,8,12, + 12,10,1,0,12,24,48,0,126,195,3,127,195,195,195,125, + 8,12,12,10,1,0,24,60,102,0,126,195,3,127,195,195, + 195,125,8,12,12,10,1,0,50,126,76,0,126,195,3,127, + 195,195,195,125,8,11,11,10,1,0,102,102,0,126,195,3, + 127,195,195,195,125,8,13,13,10,1,0,60,102,102,60,0, + 126,195,3,127,195,195,195,125,8,8,8,10,1,0,118,155, + 27,30,120,216,217,110,8,12,12,10,1,252,62,99,192,192, + 192,192,99,62,24,12,108,56,8,12,12,10,1,0,96,48, + 24,0,60,102,195,255,192,192,99,62,8,12,12,10,1,0, + 6,12,24,0,60,102,195,255,192,192,99,62,8,12,12,10, + 1,0,24,60,102,0,60,102,195,255,192,192,99,62,8,11, + 11,10,1,0,102,102,0,60,102,195,255,192,192,99,62,8, + 12,12,10,1,0,96,48,24,0,120,24,24,24,24,24,24, + 255,8,12,12,10,1,0,12,24,48,0,120,24,24,24,24, + 24,24,255,8,12,12,10,1,0,24,60,102,0,120,24,24, + 24,24,24,24,255,8,11,11,10,1,0,102,102,0,120,24, + 24,24,24,24,24,255,8,13,13,10,1,0,136,216,112,112, + 216,140,62,103,195,195,195,102,60,8,12,12,10,1,0,50, + 126,76,0,220,230,195,195,195,195,195,195,8,12,12,10,1, + 0,96,48,24,0,60,102,195,195,195,195,102,60,8,12,12, + 10,1,0,6,12,24,0,60,102,195,195,195,195,102,60,8, + 12,12,10,1,0,24,60,102,0,60,102,195,195,195,195,102, + 60,8,12,12,10,1,0,50,126,76,0,60,102,195,195,195, + 195,102,60,8,11,11,10,1,0,102,102,0,60,102,195,195, + 195,195,102,60,8,10,10,10,1,1,24,24,0,0,255,255, + 0,0,24,24,8,10,10,10,1,255,1,62,102,203,203,211, + 211,102,124,128,8,12,12,10,1,0,48,24,12,0,195,195, + 195,195,195,195,103,59,8,12,12,10,1,0,6,12,24,0, + 195,195,195,195,195,195,103,59,8,12,12,10,1,0,24,60, + 102,0,195,195,195,195,195,195,103,59,8,11,11,10,1,0, + 102,102,0,195,195,195,195,195,195,103,59,8,16,16,10,1, + 252,12,24,48,0,195,195,195,195,195,195,103,59,3,195,102, + 60,7,17,17,10,2,252,192,192,192,192,192,192,248,204,198, + 198,198,204,248,192,192,192,192,8,15,15,10,1,252,102,102, + 0,195,195,195,195,195,195,103,59,3,195,102,60}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--20-200-75-75-C-100-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w= 9 h=15 x= 4 y=16 dx=10 dy= 0 ascent=16 len=26 + Font Bounding box w=10 h=20 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_10x20r[1667] U8G_SECTION(".progmem.u8g_font_10x20r") = { + 0,10,20,0,252,13,2,74,4,153,32,127,252,16,252,13, + 252,0,0,0,10,0,16,2,13,13,10,4,0,192,192,192, + 192,192,192,192,192,192,192,0,192,192,6,4,4,10,2,9, + 204,204,204,72,9,11,22,10,1,1,27,0,27,0,27,0, + 127,128,54,0,54,0,54,0,255,0,108,0,108,0,108,0, + 8,13,13,10,1,0,24,126,219,216,216,216,126,27,27,27, + 219,126,24,9,12,24,10,1,0,115,0,219,0,222,0,118, + 0,12,0,12,0,24,0,24,0,55,0,61,128,109,128,103, + 0,9,13,26,10,1,0,56,0,108,0,108,0,108,0,120, + 0,48,0,112,0,216,0,205,128,199,0,198,0,239,0,121, + 128,2,5,5,10,4,8,192,192,192,192,128,5,13,13,10, + 3,0,24,48,96,96,192,192,192,192,192,96,96,48,24,5, + 13,13,10,2,0,192,96,48,48,24,24,24,24,24,48,48, + 96,192,8,7,7,10,1,3,102,102,60,255,60,102,102,8, + 7,7,10,1,3,24,24,24,255,24,24,24,4,3,3,10, + 3,255,112,112,224,8,1,1,10,1,6,255,3,3,3,10, + 4,0,224,224,224,7,12,12,10,2,0,6,6,12,12,24, + 24,48,48,96,96,192,192,8,13,13,10,1,0,24,60,102, + 102,195,195,195,195,195,102,102,60,24,8,13,13,10,1,0, + 24,56,120,216,24,24,24,24,24,24,24,24,255,8,13,13, + 10,1,0,60,102,195,195,3,3,6,28,48,96,192,192,255, + 8,13,13,10,1,0,60,102,195,195,3,6,28,6,3,195, + 195,102,60,8,13,13,10,1,0,2,6,14,30,54,102,198, + 198,255,6,6,6,6,8,13,13,10,1,0,255,192,192,192, + 192,220,230,3,3,3,195,102,60,8,13,13,10,1,0,60, + 102,194,192,192,220,230,195,195,195,195,102,60,8,13,13,10, + 1,0,255,3,3,6,6,12,12,24,24,48,48,96,96,8, + 13,13,10,1,0,60,102,195,195,195,102,60,102,195,195,195, + 102,60,8,13,13,10,1,0,60,102,195,195,195,195,103,59, + 3,3,67,102,60,3,8,8,10,4,0,224,224,0,0,0, + 0,224,224,4,9,9,10,3,255,112,112,0,0,0,0,112, + 112,224,7,13,13,10,1,0,2,6,12,24,48,96,192,96, + 48,24,12,6,2,8,6,6,10,1,3,255,0,0,0,0, + 255,7,13,13,10,2,0,128,192,96,48,24,12,6,12,24, + 48,96,192,128,8,13,13,10,1,0,60,102,195,195,195,6, + 12,24,24,24,0,24,24,8,13,13,10,1,0,60,102,195, + 207,223,219,219,219,222,204,192,99,62,8,13,13,10,1,0, + 24,60,102,102,195,195,195,255,195,195,195,195,195,8,13,13, + 10,1,0,248,204,198,198,198,204,252,198,195,195,195,198,252, + 8,13,13,10,1,0,60,102,195,192,192,192,192,192,192,192, + 195,102,60,8,13,13,10,1,0,252,198,195,195,195,195,195, + 195,195,195,195,198,252,8,13,13,10,1,0,255,192,192,192, + 192,192,252,192,192,192,192,192,255,8,13,13,10,1,0,255, + 192,192,192,192,192,252,192,192,192,192,192,192,8,13,13,10, + 1,0,60,102,195,192,192,192,207,195,195,195,195,103,61,8, + 13,13,10,1,0,195,195,195,195,195,195,255,195,195,195,195, + 195,195,8,13,13,10,1,0,255,24,24,24,24,24,24,24, + 24,24,24,24,255,9,13,26,10,1,0,31,128,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,198,0,198, + 0,108,0,56,0,8,13,13,10,1,0,195,195,198,198,204, + 204,248,204,204,198,198,195,195,8,13,13,10,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,255,8,13,13,10,1, + 0,195,195,231,231,255,219,219,219,219,195,195,195,195,8,13, + 13,10,1,0,195,227,227,243,243,219,219,207,207,199,199,195, + 195,8,13,13,10,1,0,60,102,195,195,195,195,195,195,195, + 195,195,102,60,8,13,13,10,1,0,252,198,195,195,195,195, + 198,252,192,192,192,192,192,8,14,14,10,1,255,60,102,195, + 195,195,195,195,195,195,219,207,102,62,3,8,13,13,10,1, + 0,252,198,195,195,195,195,198,252,204,198,198,195,195,8,13, + 13,10,1,0,60,102,195,192,192,96,60,6,3,3,195,102, + 60,8,13,13,10,1,0,255,24,24,24,24,24,24,24,24, + 24,24,24,24,8,13,13,10,1,0,195,195,195,195,195,195, + 195,195,195,195,195,102,60,8,13,13,10,1,0,195,195,195, + 195,102,102,102,60,60,60,24,24,24,8,13,13,10,1,0, + 195,195,195,195,195,219,219,219,219,231,231,195,195,8,13,13, + 10,1,0,195,195,102,102,60,60,24,60,60,102,102,195,195, + 8,13,13,10,1,0,195,195,102,102,60,60,24,24,24,24, + 24,24,24,8,13,13,10,1,0,255,3,3,6,12,12,24, + 48,48,96,192,192,255,6,13,13,10,2,0,252,192,192,192, + 192,192,192,192,192,192,192,192,252,7,12,12,10,2,0,192, + 192,96,96,48,48,24,24,12,12,6,6,6,13,13,10,2, + 0,252,12,12,12,12,12,12,12,12,12,12,12,252,8,4, + 4,10,1,9,24,60,102,195,9,1,2,10,1,255,255,128, + 4,3,3,10,3,10,192,96,48,8,8,8,10,1,0,62, + 99,3,127,195,195,195,125,8,13,13,10,1,0,192,192,192, + 192,192,220,230,195,195,195,195,230,220,8,8,8,10,1,0, + 62,99,192,192,192,192,99,62,8,13,13,10,1,0,3,3, + 3,3,3,59,103,195,195,195,195,103,59,8,8,8,10,1, + 0,60,102,195,255,192,192,99,62,8,13,13,10,1,0,30, + 51,51,48,48,252,48,48,48,48,48,48,48,8,12,12,10, + 1,252,125,199,198,198,198,124,192,126,195,195,195,126,8,13, + 13,10,1,0,192,192,192,192,192,220,230,195,195,195,195,195, + 195,8,11,11,10,1,0,24,24,0,120,24,24,24,24,24, + 24,255,7,15,15,10,2,252,6,6,0,30,6,6,6,6, + 6,6,6,198,198,198,124,8,13,13,10,1,0,192,192,192, + 192,192,198,204,216,240,248,204,198,195,8,13,13,10,1,0, + 120,24,24,24,24,24,24,24,24,24,24,24,255,8,8,8, + 10,1,0,182,255,219,219,219,219,219,219,8,8,8,10,1, + 0,220,230,195,195,195,195,195,195,8,8,8,10,1,0,60, + 102,195,195,195,195,102,60,8,12,12,10,1,252,220,230,195, + 195,195,195,230,220,192,192,192,192,8,12,12,10,1,252,59, + 103,195,195,195,195,103,59,3,3,3,3,8,8,8,10,1, + 0,222,115,96,96,96,96,96,96,8,8,8,10,1,0,126, + 195,192,126,3,3,195,126,8,11,11,10,1,0,48,48,48, + 252,48,48,48,48,48,51,30,8,8,8,10,1,0,195,195, + 195,195,195,195,103,59,8,8,8,10,1,0,195,195,102,102, + 60,60,24,24,8,8,8,10,1,0,195,195,195,219,219,219, + 255,102,8,8,8,10,1,0,195,102,60,24,24,60,102,195, + 8,12,12,10,1,252,195,195,195,195,195,195,103,59,3,195, + 102,60,7,8,8,10,2,0,254,6,12,24,48,96,192,254, + 8,13,13,10,1,0,15,24,24,24,24,24,240,24,24,24, + 24,24,15,2,13,13,10,4,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,8,13,13,10,1,0,240,24,24,24, + 24,24,15,24,24,24,24,24,240,8,3,3,10,1,10,115, + 219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--6-60-75-75-C-40-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 4 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_4x6[1500] U8G_SECTION(".progmem.u8g_font_4x6") = { + 1,4,6,0,255,5,1,3,1,250,32,255,255,5,255,5, + 255,7,0,64,18,21,69,128,128,128,0,128,5,50,66,160, + 160,2,69,69,160,240,160,240,160,1,54,70,64,224,192,32, + 224,64,2,53,69,128,32,64,128,32,2,69,69,64,160,64, + 160,80,21,18,66,128,128,17,38,70,64,128,128,128,128,64, + 1,38,70,128,64,64,64,64,128,2,53,69,160,64,224,64, + 160,2,53,69,64,64,224,64,64,1,34,66,64,128,4,49, + 65,224,18,17,65,128,2,53,69,32,32,64,128,128,2,53, + 69,64,160,224,160,64,2,53,69,64,192,64,64,224,2,53, + 69,64,160,32,64,224,2,53,69,224,32,64,32,192,2,53, + 69,160,160,224,32,32,2,53,69,224,128,192,32,192,2,53, + 69,96,128,192,160,64,2,53,69,224,32,64,128,128,2,53, + 69,96,160,64,160,192,2,53,69,64,160,96,32,192,18,20, + 68,128,0,0,128,1,37,69,64,0,0,64,128,2,53,69, + 32,64,128,64,32,3,51,67,224,0,224,2,53,69,128,64, + 32,64,128,2,53,69,192,32,64,0,64,2,53,69,96,160, + 160,128,96,2,53,69,64,160,224,160,160,2,53,69,192,160, + 192,160,192,2,53,69,64,160,128,160,64,2,53,69,192,160, + 160,160,192,2,53,69,224,128,192,128,224,2,53,69,224,128, + 192,128,128,2,53,69,96,128,160,160,96,2,53,69,160,160, + 224,160,160,2,53,69,224,64,64,64,224,2,53,69,32,32, + 32,160,64,2,53,69,160,160,192,160,160,2,53,69,128,128, + 128,128,224,2,53,69,160,224,224,160,160,2,53,69,32,160, + 224,160,128,2,53,69,64,160,160,160,64,2,53,69,192,160, + 192,128,128,1,54,70,64,160,160,160,64,32,2,53,69,192, + 160,192,160,160,2,53,69,96,128,64,32,192,2,53,69,224, + 64,64,64,64,2,53,69,160,160,160,160,224,2,53,69,160, + 160,160,224,64,2,53,69,160,160,224,224,160,2,53,69,160, + 160,64,160,160,2,53,69,160,160,64,64,64,2,53,69,224, + 32,64,128,224,18,37,69,192,128,128,128,192,2,53,69,128, + 128,64,32,32,2,37,69,192,64,64,64,192,5,50,66,64, + 160,1,49,65,224,21,34,66,128,64,2,52,68,96,160,160, + 96,2,53,69,128,192,160,160,192,2,52,68,96,128,128,96, + 2,53,69,32,96,160,160,96,2,52,68,64,160,192,96,2, + 53,69,32,64,224,64,64,1,53,69,96,160,96,32,192,2, + 53,69,128,192,160,160,160,2,53,69,64,0,192,64,224,1, + 54,70,32,0,32,32,32,192,2,53,69,128,160,192,160,160, + 2,53,69,192,64,64,64,224,2,52,68,160,224,160,160,2, + 52,68,192,160,160,160,2,52,68,64,160,160,64,1,53,69, + 192,160,192,128,128,1,53,69,96,160,160,96,32,2,52,68, + 160,192,128,128,2,52,68,96,192,32,192,2,53,69,64,224, + 64,64,32,2,52,68,160,160,160,96,2,52,68,160,160,160, + 64,2,52,68,160,160,224,160,2,52,68,160,64,64,160,1, + 53,69,160,160,96,32,192,2,52,68,224,32,64,224,1,54, + 70,32,64,192,64,64,32,18,21,69,128,128,128,128,128,1, + 54,70,128,64,96,64,64,128,5,66,66,80,160,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0, + 64,18,21,69,128,0,128,128,128,2,53,69,64,224,128,224, + 64,2,53,69,32,64,96,64,160,2,68,68,144,96,96,144, + 2,53,69,160,64,224,64,64,18,21,69,128,128,0,128,128, + 1,54,70,96,192,160,96,32,192,6,49,65,160,1,70,70, + 96,144,208,208,144,96,2,53,69,96,160,96,0,224,3,67, + 67,80,160,80,3,50,66,224,32,4,49,65,224,3,68,68, + 96,240,208,96,6,49,65,224,4,51,67,64,160,64,2,53, + 69,64,224,64,0,224,3,36,68,192,64,128,192,2,37,69, + 192,64,128,64,128,21,34,66,64,128,1,53,69,160,160,160, + 192,128,2,69,69,112,208,208,80,80,20,17,65,128,18,34, + 66,64,128,3,36,68,64,192,64,64,2,53,69,64,160,64, + 0,224,3,67,67,160,80,160,1,70,70,128,128,128,80,112, + 16,1,70,70,128,128,176,16,32,48,1,70,70,192,64,128, + 80,176,16,2,53,69,64,0,64,128,96,2,53,69,128,64, + 160,224,160,2,53,69,32,64,160,224,160,2,53,69,192,64, + 160,224,160,2,53,69,96,192,160,224,160,2,53,69,160,64, + 160,224,160,2,53,69,64,64,160,224,160,2,69,69,112,160, + 240,160,176,1,54,70,64,160,128,160,64,128,2,53,69,128, + 224,192,128,224,2,53,69,32,224,192,128,224,2,53,69,96, + 224,192,128,224,2,53,69,160,224,192,128,224,2,53,69,128, + 224,64,64,224,2,53,69,32,224,64,64,224,2,53,69,64, + 224,64,64,224,2,53,69,160,64,64,64,224,2,69,69,224, + 80,208,80,224,2,69,69,80,160,224,224,160,2,53,69,128, + 64,160,160,64,2,53,69,32,64,160,160,64,2,53,69,64, + 64,160,160,64,2,69,69,112,224,160,160,64,2,53,69,160, + 64,160,160,64,3,51,67,160,64,160,2,53,69,96,160,224, + 160,192,2,53,69,128,64,160,160,224,2,53,69,32,64,160, + 160,224,2,53,69,64,0,160,160,224,2,53,69,160,0,160, + 160,224,2,53,69,32,0,160,64,64,2,53,69,128,192,160, + 192,128,1,54,70,64,160,192,160,224,128,2,53,69,128,64, + 96,160,96,2,53,69,32,64,96,160,96,2,53,69,96,0, + 96,160,96,2,69,69,80,160,96,160,96,2,53,69,160,0, + 96,160,96,2,53,69,64,0,96,160,96,2,68,68,112,176, + 160,112,1,53,69,64,160,128,96,64,2,53,69,128,64,160, + 192,96,2,53,69,32,64,160,192,96,2,53,69,192,64,160, + 192,96,2,53,69,160,64,160,192,96,2,53,69,128,64,64, + 64,224,2,53,69,32,192,64,64,224,2,53,69,64,160,64, + 64,224,2,53,69,160,0,192,64,224,2,53,69,160,64,96, + 160,64,2,69,69,80,160,192,160,160,2,53,69,128,64,64, + 160,64,2,53,69,32,64,64,160,64,2,53,69,64,0,64, + 160,64,2,53,69,224,0,64,160,64,2,53,69,160,0,64, + 160,64,2,53,69,64,0,224,0,64,2,52,68,96,160,160, + 192,2,53,69,128,64,160,160,96,2,53,69,32,64,160,160, + 96,2,53,69,64,0,160,160,96,2,53,69,160,0,160,160, + 96,1,54,70,32,64,160,224,32,192,1,54,70,128,128,192, + 160,192,128,1,54,70,160,0,160,224,32,192}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--6-60-75-75-C-40-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 6 + Font Bounding box w= 4 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_4x6r[734] U8G_SECTION(".progmem.u8g_font_4x6r") = { + 1,4,6,0,255,5,1,3,1,250,32,127,255,5,255,5, + 255,7,0,64,18,21,69,128,128,128,0,128,5,50,66,160, + 160,2,69,69,160,240,160,240,160,1,54,70,64,224,192,32, + 224,64,2,53,69,128,32,64,128,32,2,69,69,64,160,64, + 160,80,21,18,66,128,128,17,38,70,64,128,128,128,128,64, + 1,38,70,128,64,64,64,64,128,2,53,69,160,64,224,64, + 160,2,53,69,64,64,224,64,64,1,34,66,64,128,4,49, + 65,224,18,17,65,128,2,53,69,32,32,64,128,128,2,53, + 69,64,160,224,160,64,2,53,69,64,192,64,64,224,2,53, + 69,64,160,32,64,224,2,53,69,224,32,64,32,192,2,53, + 69,160,160,224,32,32,2,53,69,224,128,192,32,192,2,53, + 69,96,128,192,160,64,2,53,69,224,32,64,128,128,2,53, + 69,96,160,64,160,192,2,53,69,64,160,96,32,192,18,20, + 68,128,0,0,128,1,37,69,64,0,0,64,128,2,53,69, + 32,64,128,64,32,3,51,67,224,0,224,2,53,69,128,64, + 32,64,128,2,53,69,192,32,64,0,64,2,53,69,96,160, + 160,128,96,2,53,69,64,160,224,160,160,2,53,69,192,160, + 192,160,192,2,53,69,64,160,128,160,64,2,53,69,192,160, + 160,160,192,2,53,69,224,128,192,128,224,2,53,69,224,128, + 192,128,128,2,53,69,96,128,160,160,96,2,53,69,160,160, + 224,160,160,2,53,69,224,64,64,64,224,2,53,69,32,32, + 32,160,64,2,53,69,160,160,192,160,160,2,53,69,128,128, + 128,128,224,2,53,69,160,224,224,160,160,2,53,69,32,160, + 224,160,128,2,53,69,64,160,160,160,64,2,53,69,192,160, + 192,128,128,1,54,70,64,160,160,160,64,32,2,53,69,192, + 160,192,160,160,2,53,69,96,128,64,32,192,2,53,69,224, + 64,64,64,64,2,53,69,160,160,160,160,224,2,53,69,160, + 160,160,224,64,2,53,69,160,160,224,224,160,2,53,69,160, + 160,64,160,160,2,53,69,160,160,64,64,64,2,53,69,224, + 32,64,128,224,18,37,69,192,128,128,128,192,2,53,69,128, + 128,64,32,32,2,37,69,192,64,64,64,192,5,50,66,64, + 160,1,49,65,224,21,34,66,128,64,2,52,68,96,160,160, + 96,2,53,69,128,192,160,160,192,2,52,68,96,128,128,96, + 2,53,69,32,96,160,160,96,2,52,68,64,160,192,96,2, + 53,69,32,64,224,64,64,1,53,69,96,160,96,32,192,2, + 53,69,128,192,160,160,160,2,53,69,64,0,192,64,224,1, + 54,70,32,0,32,32,32,192,2,53,69,128,160,192,160,160, + 2,53,69,192,64,64,64,224,2,52,68,160,224,160,160,2, + 52,68,192,160,160,160,2,52,68,64,160,160,64,1,53,69, + 192,160,192,128,128,1,53,69,96,160,160,96,32,2,52,68, + 160,192,128,128,2,52,68,96,192,32,192,2,53,69,64,224, + 64,64,32,2,52,68,160,160,160,96,2,52,68,160,160,160, + 64,2,52,68,160,160,224,160,2,52,68,160,64,64,160,1, + 53,69,160,160,96,32,192,2,52,68,224,32,64,224,1,54, + 70,32,64,192,64,64,32,18,21,69,128,128,128,128,128,1, + 54,70,128,64,96,64,64,128,5,66,66,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 7 x= 2 y= 6 dx= 5 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x7[1624] U8G_SECTION(".progmem.u8g_font_5x7") = { + 1,5,7,0,255,6,1,21,2,39,32,255,255,6,255,6, + 255,8,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,85,85,80,248,80,248,80,2,85,85,112,160, + 112,40,112,2,70,86,128,144,32,64,144,16,2,69,85,64, + 160,64,160,80,37,19,83,128,128,128,18,38,86,64,128,128, + 128,128,64,18,38,86,128,64,64,64,64,128,18,53,85,160, + 64,224,64,160,2,85,85,32,32,248,32,32,17,51,83,96, + 64,128,4,65,81,240,18,34,82,192,192,3,68,84,16,32, + 64,128,18,54,86,64,160,160,160,160,64,18,54,86,64,192, + 64,64,64,224,2,70,86,96,144,16,32,64,240,2,70,86, + 240,16,96,16,144,96,2,70,86,32,96,160,240,32,32,2, + 70,86,240,128,224,16,144,96,2,70,86,96,128,224,144,144, + 96,2,70,86,240,16,32,32,64,64,2,70,86,96,144,96, + 144,144,96,2,70,86,96,144,144,112,16,96,18,37,85,192, + 192,0,192,192,1,54,86,96,96,0,96,64,128,18,53,85, + 32,64,128,64,32,3,67,83,240,0,240,18,53,85,128,64, + 32,64,128,18,54,86,64,160,32,64,0,64,2,70,86,96, + 144,176,176,128,96,2,70,86,96,144,144,240,144,144,2,70, + 86,224,144,224,144,144,224,2,70,86,96,144,128,128,144,96, + 2,70,86,224,144,144,144,144,224,2,70,86,240,128,224,128, + 128,240,2,70,86,240,128,224,128,128,128,2,70,86,96,144, + 128,176,144,112,2,70,86,144,144,240,144,144,144,18,54,86, + 224,64,64,64,64,224,2,70,86,16,16,16,16,144,96,2, + 70,86,144,160,192,192,160,144,2,70,86,128,128,128,128,128, + 240,2,70,86,144,240,240,144,144,144,2,70,86,144,208,208, + 176,176,144,2,70,86,96,144,144,144,144,96,2,70,86,224, + 144,144,224,128,128,1,71,87,96,144,144,144,208,96,16,2, + 70,86,224,144,144,224,160,144,2,70,86,96,144,64,32,144, + 96,18,54,86,224,64,64,64,64,64,2,70,86,144,144,144, + 144,144,96,2,70,86,144,144,144,144,96,96,2,70,86,144, + 144,144,240,240,144,2,70,86,144,144,96,96,144,144,18,54, + 86,160,160,160,64,64,64,2,70,86,240,16,32,64,128,240, + 18,54,86,224,128,128,128,128,224,3,68,84,128,64,32,16, + 18,54,86,224,32,32,32,32,224,22,50,82,64,160,2,65, + 81,240,22,34,82,128,64,2,68,84,112,144,176,80,2,70, + 86,128,128,224,144,144,224,2,52,84,96,128,128,96,2,70, + 86,16,16,112,144,144,112,2,68,84,96,176,192,96,2,70, + 86,32,80,64,224,64,64,1,69,85,112,144,96,128,112,2, + 70,86,128,128,224,144,144,144,18,54,86,64,0,192,64,64, + 224,17,55,87,32,0,32,32,32,160,64,2,70,86,128,128, + 160,192,160,144,18,54,86,192,64,64,64,64,224,2,68,84, + 160,240,144,144,2,68,84,224,144,144,144,2,68,84,96,144, + 144,96,1,69,85,224,144,144,224,128,1,69,85,112,144,144, + 112,16,2,68,84,224,144,128,128,2,68,84,112,192,48,224, + 2,70,86,64,64,224,64,64,48,2,68,84,144,144,144,112, + 18,52,84,160,160,160,64,2,68,84,144,144,240,240,2,68, + 84,144,96,96,144,1,69,85,144,144,80,32,64,2,68,84, + 240,32,64,240,18,54,86,32,64,192,64,64,32,34,22,86, + 128,128,128,128,128,128,18,54,86,128,64,96,64,64,128,6, + 66,82,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,8,0,80,34,22,86,128,0,128,128,128, + 128,1,70,86,32,112,160,160,112,32,2,69,85,48,64,224, + 64,176,2,85,85,136,112,80,112,136,18,54,86,160,160,64, + 224,64,64,34,21,85,128,128,0,128,128,17,55,87,96,128, + 192,160,96,32,192,23,49,81,160,1,87,87,112,136,168,200, + 168,136,112,5,51,83,96,160,96,3,83,83,72,144,72,3, + 66,82,240,16,20,49,81,224,1,87,87,112,136,232,200,200, + 136,112,7,65,81,240,21,51,83,64,160,64,2,86,86,32, + 32,248,32,32,248,20,36,84,192,64,128,192,20,36,84,192, + 192,64,192,22,34,82,64,128,1,69,85,144,144,144,224,128, + 2,70,86,112,208,208,80,80,80,20,34,82,192,192,17,34, + 82,64,128,20,52,84,64,192,64,224,5,51,83,64,160,64, + 3,83,83,144,72,144,1,71,87,128,128,128,144,48,112,16, + 1,71,87,128,128,128,176,16,32,48,1,71,87,192,192,64, + 208,48,112,16,18,54,86,64,0,64,128,160,64,2,70,86, + 96,144,144,240,144,144,2,70,86,96,144,144,240,144,144,2, + 70,86,96,144,144,240,144,144,2,70,86,96,144,144,240,144, + 144,2,70,86,144,96,144,240,144,144,2,70,86,96,96,144, + 240,144,144,2,70,86,112,160,176,224,160,176,1,71,87,96, + 144,128,128,144,96,64,2,70,86,240,128,224,128,128,240,2, + 70,86,240,128,224,128,128,240,2,70,86,240,128,224,128,128, + 240,2,70,86,240,128,224,128,128,240,18,54,86,224,64,64, + 64,64,224,18,54,86,224,64,64,64,64,224,18,54,86,224, + 64,64,64,64,224,18,54,86,224,64,64,64,64,224,2,70, + 86,224,80,208,80,80,224,2,70,86,176,144,208,176,176,144, + 2,70,86,96,144,144,144,144,96,2,70,86,96,144,144,144, + 144,96,2,70,86,96,144,144,144,144,96,2,70,86,96,144, + 144,144,144,96,2,70,86,144,96,144,144,144,96,2,68,84, + 144,96,96,144,2,70,86,112,176,176,208,208,224,2,70,86, + 144,144,144,144,144,96,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,144,96,2,70,86,144,0,144,144,144, + 96,18,54,86,160,160,160,64,64,64,2,70,86,128,224,144, + 224,128,128,2,70,86,96,144,160,144,144,160,2,70,86,64, + 32,112,144,176,80,2,70,86,32,64,112,144,176,80,2,70, + 86,32,80,112,144,176,80,2,70,86,80,160,112,144,176,80, + 2,70,86,80,0,112,144,176,80,2,70,86,96,96,112,144, + 176,80,2,68,84,112,176,160,112,17,53,85,96,128,128,96, + 64,2,70,86,64,32,96,176,192,96,2,70,86,32,64,96, + 176,192,96,2,70,86,64,160,96,176,192,96,2,70,86,160, + 0,96,176,192,96,18,54,86,128,64,192,64,64,224,18,54, + 86,64,128,192,64,64,224,18,54,86,64,160,192,64,64,224, + 18,54,86,160,0,192,64,64,224,2,70,86,64,48,96,144, + 144,96,2,70,86,80,160,224,144,144,144,2,70,86,64,32, + 96,144,144,96,2,70,86,32,64,96,144,144,96,2,70,86, + 96,0,96,144,144,96,2,70,86,80,160,96,144,144,96,2, + 70,86,80,0,96,144,144,96,2,69,85,96,0,240,0,96, + 2,68,84,112,176,208,224,2,70,86,64,32,144,144,144,112, + 2,70,86,32,64,144,144,144,112,2,70,86,96,0,144,144, + 144,112,2,70,86,80,0,144,144,144,112,1,71,87,32,64, + 144,144,80,32,64,1,70,86,128,224,144,144,224,128,1,71, + 87,80,0,144,144,80,32,64}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 7 x= 2 y= 6 dx= 5 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 7 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x7r[789] U8G_SECTION(".progmem.u8g_font_5x7r") = { + 1,5,7,0,255,6,1,21,2,39,32,127,255,6,255,6, + 255,8,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,85,85,80,248,80,248,80,2,85,85,112,160, + 112,40,112,2,70,86,128,144,32,64,144,16,2,69,85,64, + 160,64,160,80,37,19,83,128,128,128,18,38,86,64,128,128, + 128,128,64,18,38,86,128,64,64,64,64,128,18,53,85,160, + 64,224,64,160,2,85,85,32,32,248,32,32,17,51,83,96, + 64,128,4,65,81,240,18,34,82,192,192,3,68,84,16,32, + 64,128,18,54,86,64,160,160,160,160,64,18,54,86,64,192, + 64,64,64,224,2,70,86,96,144,16,32,64,240,2,70,86, + 240,16,96,16,144,96,2,70,86,32,96,160,240,32,32,2, + 70,86,240,128,224,16,144,96,2,70,86,96,128,224,144,144, + 96,2,70,86,240,16,32,32,64,64,2,70,86,96,144,96, + 144,144,96,2,70,86,96,144,144,112,16,96,18,37,85,192, + 192,0,192,192,1,54,86,96,96,0,96,64,128,18,53,85, + 32,64,128,64,32,3,67,83,240,0,240,18,53,85,128,64, + 32,64,128,18,54,86,64,160,32,64,0,64,2,70,86,96, + 144,176,176,128,96,2,70,86,96,144,144,240,144,144,2,70, + 86,224,144,224,144,144,224,2,70,86,96,144,128,128,144,96, + 2,70,86,224,144,144,144,144,224,2,70,86,240,128,224,128, + 128,240,2,70,86,240,128,224,128,128,128,2,70,86,96,144, + 128,176,144,112,2,70,86,144,144,240,144,144,144,18,54,86, + 224,64,64,64,64,224,2,70,86,16,16,16,16,144,96,2, + 70,86,144,160,192,192,160,144,2,70,86,128,128,128,128,128, + 240,2,70,86,144,240,240,144,144,144,2,70,86,144,208,208, + 176,176,144,2,70,86,96,144,144,144,144,96,2,70,86,224, + 144,144,224,128,128,1,71,87,96,144,144,144,208,96,16,2, + 70,86,224,144,144,224,160,144,2,70,86,96,144,64,32,144, + 96,18,54,86,224,64,64,64,64,64,2,70,86,144,144,144, + 144,144,96,2,70,86,144,144,144,144,96,96,2,70,86,144, + 144,144,240,240,144,2,70,86,144,144,96,96,144,144,18,54, + 86,160,160,160,64,64,64,2,70,86,240,16,32,64,128,240, + 18,54,86,224,128,128,128,128,224,3,68,84,128,64,32,16, + 18,54,86,224,32,32,32,32,224,22,50,82,64,160,2,65, + 81,240,22,34,82,128,64,2,68,84,112,144,176,80,2,70, + 86,128,128,224,144,144,224,2,52,84,96,128,128,96,2,70, + 86,16,16,112,144,144,112,2,68,84,96,176,192,96,2,70, + 86,32,80,64,224,64,64,1,69,85,112,144,96,128,112,2, + 70,86,128,128,224,144,144,144,18,54,86,64,0,192,64,64, + 224,17,55,87,32,0,32,32,32,160,64,2,70,86,128,128, + 160,192,160,144,18,54,86,192,64,64,64,64,224,2,68,84, + 160,240,144,144,2,68,84,224,144,144,144,2,68,84,96,144, + 144,96,1,69,85,224,144,144,224,128,1,69,85,112,144,144, + 112,16,2,68,84,224,144,128,128,2,68,84,112,192,48,224, + 2,70,86,64,64,224,64,64,48,2,68,84,144,144,144,112, + 18,52,84,160,160,160,64,2,68,84,144,144,240,240,2,68, + 84,144,96,96,144,1,69,85,144,144,80,32,64,2,68,84, + 240,32,64,240,18,54,86,32,64,192,64,64,32,34,22,86, + 128,128,128,128,128,128,18,54,86,128,64,96,64,64,128,6, + 66,82,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 5 dy= 0 ascent= 7 len= 8 + Font Bounding box w= 5 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x8[1693] U8G_SECTION(".progmem.u8g_font_5x8") = { + 1,5,8,0,255,6,1,33,2,53,32,255,255,7,255,6, + 255,9,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,87,87,80,80,248,80,248,80,80,2,87,87, + 32,112,160,112,40,112,32,19,53,85,128,160,64,160,32,2, + 71,87,64,160,160,64,160,160,80,37,19,83,128,128,128,18, + 38,86,64,128,128,128,128,64,18,38,86,128,64,64,64,64, + 128,2,69,85,144,96,240,96,144,2,85,85,32,32,248,32, + 32,17,51,83,96,64,128,4,65,81,240,17,51,83,64,224, + 64,2,70,86,16,16,32,64,128,128,18,54,86,64,160,160, + 160,160,64,18,54,86,64,192,64,64,64,224,2,70,86,96, + 144,16,96,128,240,2,70,86,240,32,96,16,144,96,2,70, + 86,32,96,160,240,32,32,2,70,86,240,128,224,16,144,96, + 2,70,86,96,128,224,144,144,96,2,70,86,240,16,32,32, + 64,64,2,70,86,96,144,96,144,144,96,2,70,86,96,144, + 144,112,16,96,18,37,85,192,192,0,192,192,17,54,86,96, + 96,0,96,64,128,18,54,86,32,64,128,128,64,32,3,67, + 83,240,0,240,18,54,86,128,64,32,32,64,128,18,54,86, + 64,160,32,64,0,64,1,88,88,48,72,152,168,168,144,64, + 48,2,70,86,96,144,144,240,144,144,2,70,86,224,144,224, + 144,144,224,2,70,86,96,144,128,128,144,96,2,70,86,224, + 144,144,144,144,224,2,70,86,240,128,224,128,128,240,2,70, + 86,240,128,224,128,128,128,2,70,86,96,144,128,176,144,96, + 2,70,86,144,144,240,144,144,144,18,54,86,224,64,64,64, + 64,224,2,70,86,112,32,32,32,160,64,2,70,86,144,160, + 192,160,160,144,2,70,86,128,128,128,128,128,240,2,70,86, + 144,240,240,144,144,144,2,70,86,144,208,240,176,176,144,2, + 70,86,96,144,144,144,144,96,2,70,86,224,144,144,224,128, + 128,1,71,87,96,144,144,208,176,96,16,2,70,86,224,144, + 144,224,144,144,2,70,86,96,144,64,32,144,96,18,54,86, + 224,64,64,64,64,64,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,96,96,2,70,86,144,144,144,240,240, + 144,2,70,86,144,144,96,96,144,144,2,86,86,136,136,80, + 32,32,32,2,70,86,240,16,32,64,128,240,18,54,86,224, + 128,128,128,128,224,2,70,86,128,128,64,32,16,16,18,54, + 86,224,32,32,32,32,224,22,50,82,64,160,1,65,81,240, + 22,34,82,128,64,2,68,84,112,144,144,112,2,70,86,128, + 128,224,144,144,224,18,52,84,96,128,128,96,2,70,86,16, + 16,112,144,144,112,2,68,84,96,176,192,96,2,70,86,32, + 80,64,224,64,64,1,69,85,96,144,112,16,96,2,70,86, + 128,128,224,144,144,144,18,54,86,64,0,192,64,64,224,17, + 55,87,32,0,32,32,32,160,64,2,70,86,128,128,144,224, + 144,144,18,54,86,192,64,64,64,64,224,2,84,84,208,168, + 168,168,2,68,84,224,144,144,144,2,68,84,96,144,144,96, + 1,69,85,224,144,224,128,128,1,69,85,112,144,112,16,16, + 2,68,84,160,208,128,128,18,52,84,96,192,32,192,2,70, + 86,64,64,224,64,80,32,2,68,84,144,144,144,112,18,52, + 84,160,160,160,64,2,84,84,136,168,168,80,2,68,84,144, + 96,96,144,1,69,85,144,144,112,144,96,2,68,84,240,32, + 64,240,2,71,87,48,64,32,192,32,64,48,34,22,86,128, + 128,128,128,128,128,2,71,87,192,32,64,48,64,32,192,6, + 66,82,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,9,0,80,34,22,86,128,0,128,128,128, + 128,1,70,86,32,112,160,160,112,32,2,70,86,32,80,224, + 64,80,160,2,85,85,136,112,80,112,136,2,86,86,136,80, + 248,32,248,32,34,23,87,128,128,128,0,128,128,128,2,71, + 87,112,128,224,144,112,16,224,23,49,81,160,2,86,86,112, + 168,200,200,168,112,20,53,85,96,160,96,0,224,3,67,83, + 80,160,80,18,51,83,224,32,32,20,49,81,224,2,86,86, + 112,232,216,232,216,112,23,49,81,224,21,51,83,64,160,64, + 18,53,85,64,224,64,0,224,20,53,85,64,160,32,64,224, + 20,53,85,192,32,192,32,192,22,34,82,64,128,1,69,85, + 144,144,144,224,128,2,86,86,120,232,232,104,40,40,36,17, + 81,128,17,34,82,64,128,20,53,85,64,192,64,64,224,20, + 53,85,64,160,64,0,224,3,67,83,160,80,160,2,71,87, + 128,128,128,160,96,240,32,2,71,87,128,128,160,208,16,32, + 112,2,71,87,128,64,128,96,160,240,32,18,54,86,64,0, + 64,128,160,64,2,71,87,64,32,96,144,240,144,144,2,71, + 87,32,64,96,144,240,144,144,2,71,87,96,144,96,144,240, + 144,144,2,71,87,80,160,96,144,240,144,144,2,71,87,144, + 0,96,144,240,144,144,2,71,87,96,144,96,144,240,144,144, + 2,70,86,112,160,160,240,160,176,1,71,87,96,144,128,128, + 144,96,64,2,71,87,64,32,240,128,224,128,240,2,71,87, + 32,64,240,128,224,128,240,2,71,87,96,144,240,128,224,128, + 240,2,71,87,144,0,240,128,224,128,240,18,55,87,128,64, + 224,64,64,64,224,18,55,87,32,64,224,64,64,64,224,18, + 55,87,64,160,224,64,64,64,224,18,55,87,160,0,224,64, + 64,64,224,2,86,86,112,72,232,72,72,112,2,71,87,80, + 160,144,208,176,144,144,2,71,87,64,32,96,144,144,144,96, + 2,71,87,32,64,96,144,144,144,96,2,71,87,96,144,96, + 144,144,144,96,2,71,87,80,160,96,144,144,144,96,2,71, + 87,144,0,96,144,144,144,96,18,51,83,160,64,160,2,70, + 86,112,176,176,208,208,224,2,71,87,64,32,144,144,144,144, + 96,2,71,87,32,64,144,144,144,144,96,2,71,87,96,144, + 144,144,144,144,96,2,71,87,144,0,144,144,144,144,96,2, + 87,87,16,32,136,80,32,32,32,2,70,86,128,224,144,144, + 224,128,2,70,86,96,144,160,160,144,160,2,71,87,64,32, + 0,112,144,144,112,2,71,87,32,64,0,112,144,144,112,2, + 71,87,32,80,0,112,144,144,112,2,71,87,80,160,0,112, + 144,144,112,2,70,86,80,0,112,144,144,112,2,71,87,96, + 144,96,112,144,144,112,2,84,84,240,104,176,120,17,53,85, + 96,128,128,96,64,2,71,87,64,32,0,96,176,192,96,2, + 71,87,32,64,0,96,176,192,96,2,71,87,96,144,0,96, + 176,192,96,2,70,86,80,0,96,176,192,96,18,55,87,128, + 64,0,192,64,64,224,18,55,87,32,64,0,192,64,64,224, + 18,55,87,64,160,0,192,64,64,224,18,54,86,160,0,192, + 64,64,224,2,71,87,160,64,160,16,112,144,96,2,71,87, + 80,160,0,224,144,144,144,2,71,87,64,32,0,96,144,144, + 96,2,71,87,32,64,0,96,144,144,96,2,71,87,96,144, + 0,96,144,144,96,2,71,87,80,160,0,96,144,144,96,2, + 70,86,144,0,96,144,144,96,18,53,85,64,0,224,0,64, + 2,68,84,112,176,208,224,2,71,87,64,32,0,144,144,144, + 112,2,71,87,32,64,0,144,144,144,112,2,71,87,96,144, + 0,144,144,144,112,2,70,86,144,0,144,144,144,112,1,72, + 88,32,64,0,144,144,112,144,96,1,71,87,128,128,224,144, + 224,128,128,1,71,87,144,0,144,144,112,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 5 dy= 0 ascent= 7 len= 8 + Font Bounding box w= 5 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-1 + X Font ascent = 6 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_5x8r[805] U8G_SECTION(".progmem.u8g_font_5x8r") = { + 1,5,8,0,255,6,1,33,2,53,32,127,255,7,255,6, + 255,9,0,80,34,22,86,128,128,128,128,0,128,21,51,83, + 160,160,160,2,87,87,80,80,248,80,248,80,80,2,87,87, + 32,112,160,112,40,112,32,19,53,85,128,160,64,160,32,2, + 71,87,64,160,160,64,160,160,80,37,19,83,128,128,128,18, + 38,86,64,128,128,128,128,64,18,38,86,128,64,64,64,64, + 128,2,69,85,144,96,240,96,144,2,85,85,32,32,248,32, + 32,17,51,83,96,64,128,4,65,81,240,17,51,83,64,224, + 64,2,70,86,16,16,32,64,128,128,18,54,86,64,160,160, + 160,160,64,18,54,86,64,192,64,64,64,224,2,70,86,96, + 144,16,96,128,240,2,70,86,240,32,96,16,144,96,2,70, + 86,32,96,160,240,32,32,2,70,86,240,128,224,16,144,96, + 2,70,86,96,128,224,144,144,96,2,70,86,240,16,32,32, + 64,64,2,70,86,96,144,96,144,144,96,2,70,86,96,144, + 144,112,16,96,18,37,85,192,192,0,192,192,17,54,86,96, + 96,0,96,64,128,18,54,86,32,64,128,128,64,32,3,67, + 83,240,0,240,18,54,86,128,64,32,32,64,128,18,54,86, + 64,160,32,64,0,64,1,88,88,48,72,152,168,168,144,64, + 48,2,70,86,96,144,144,240,144,144,2,70,86,224,144,224, + 144,144,224,2,70,86,96,144,128,128,144,96,2,70,86,224, + 144,144,144,144,224,2,70,86,240,128,224,128,128,240,2,70, + 86,240,128,224,128,128,128,2,70,86,96,144,128,176,144,96, + 2,70,86,144,144,240,144,144,144,18,54,86,224,64,64,64, + 64,224,2,70,86,112,32,32,32,160,64,2,70,86,144,160, + 192,160,160,144,2,70,86,128,128,128,128,128,240,2,70,86, + 144,240,240,144,144,144,2,70,86,144,208,240,176,176,144,2, + 70,86,96,144,144,144,144,96,2,70,86,224,144,144,224,128, + 128,1,71,87,96,144,144,208,176,96,16,2,70,86,224,144, + 144,224,144,144,2,70,86,96,144,64,32,144,96,18,54,86, + 224,64,64,64,64,64,2,70,86,144,144,144,144,144,96,2, + 70,86,144,144,144,144,96,96,2,70,86,144,144,144,240,240, + 144,2,70,86,144,144,96,96,144,144,2,86,86,136,136,80, + 32,32,32,2,70,86,240,16,32,64,128,240,18,54,86,224, + 128,128,128,128,224,2,70,86,128,128,64,32,16,16,18,54, + 86,224,32,32,32,32,224,22,50,82,64,160,1,65,81,240, + 22,34,82,128,64,2,68,84,112,144,144,112,2,70,86,128, + 128,224,144,144,224,18,52,84,96,128,128,96,2,70,86,16, + 16,112,144,144,112,2,68,84,96,176,192,96,2,70,86,32, + 80,64,224,64,64,1,69,85,96,144,112,16,96,2,70,86, + 128,128,224,144,144,144,18,54,86,64,0,192,64,64,224,17, + 55,87,32,0,32,32,32,160,64,2,70,86,128,128,144,224, + 144,144,18,54,86,192,64,64,64,64,224,2,84,84,208,168, + 168,168,2,68,84,224,144,144,144,2,68,84,96,144,144,96, + 1,69,85,224,144,224,128,128,1,69,85,112,144,112,16,16, + 2,68,84,160,208,128,128,18,52,84,96,192,32,192,2,70, + 86,64,64,224,64,80,32,2,68,84,144,144,144,112,18,52, + 84,160,160,160,64,2,84,84,136,168,168,80,2,68,84,144, + 96,96,144,1,69,85,144,144,112,144,96,2,68,84,240,32, + 64,240,2,71,87,48,64,32,192,32,64,48,34,22,86,128, + 128,128,128,128,128,2,71,87,192,32,64,48,64,32,192,6, + 66,82,80,160,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h= 9 x= 2 y= 8 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w= 6 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x10[1866] U8G_SECTION(".progmem.u8g_font_6x10") = { + 1,6,10,0,254,7,1,54,2,104,32,255,254,8,254,7, + 254,10,0,96,34,23,103,128,128,128,128,128,0,128,22,51, + 99,160,160,160,2,87,103,80,80,248,80,248,80,80,2,87, + 103,32,112,160,112,40,112,32,2,87,103,72,168,80,32,80, + 168,144,2,87,103,64,160,160,64,168,144,104,38,19,99,128, + 128,128,18,55,103,32,64,128,128,128,64,32,18,55,103,128, + 64,32,32,32,64,128,3,85,101,136,80,248,80,136,3,85, + 101,32,32,248,32,32,17,51,99,96,64,128,5,81,97,248, + 17,51,99,64,224,64,2,87,103,8,8,16,32,64,128,128, + 2,87,103,32,80,136,136,136,80,32,2,87,103,32,96,160, + 32,32,32,248,2,87,103,112,136,8,48,64,128,248,2,87, + 103,248,8,16,48,8,136,112,2,87,103,16,48,80,144,248, + 16,16,2,87,103,248,128,176,200,8,136,112,2,87,103,48, + 64,128,176,200,136,112,2,87,103,248,8,16,16,32,64,64, + 2,87,103,112,136,136,112,136,136,112,2,87,103,112,136,152, + 104,8,16,96,17,55,103,64,224,64,0,64,224,64,17,55, + 103,64,224,64,0,96,64,128,18,71,103,16,32,64,128,64, + 32,16,4,83,99,248,0,248,18,71,103,128,64,32,16,32, + 64,128,2,87,103,112,136,16,32,32,0,32,2,87,103,112, + 136,152,168,176,128,112,2,87,103,32,80,136,136,248,136,136, + 2,87,103,240,72,72,112,72,72,240,2,87,103,112,136,128, + 128,128,136,112,2,87,103,240,72,72,72,72,72,240,2,87, + 103,248,128,128,240,128,128,248,2,87,103,248,128,128,240,128, + 128,128,2,87,103,112,136,128,128,152,136,112,2,87,103,136, + 136,136,248,136,136,136,18,55,103,224,64,64,64,64,64,224, + 2,87,103,56,16,16,16,16,144,96,2,87,103,136,144,160, + 192,160,144,136,2,87,103,128,128,128,128,128,128,248,2,87, + 103,136,136,216,168,136,136,136,2,87,103,136,136,200,168,152, + 136,136,2,87,103,112,136,136,136,136,136,112,2,87,103,240, + 136,136,240,128,128,128,1,88,104,112,136,136,136,136,168,112, + 8,2,87,103,240,136,136,240,160,144,136,2,87,103,112,136, + 128,112,8,136,112,2,87,103,248,32,32,32,32,32,32,2, + 87,103,136,136,136,136,136,136,112,2,87,103,136,136,136,80, + 80,80,32,2,87,103,136,136,136,168,168,216,136,2,87,103, + 136,136,80,32,80,136,136,2,87,103,136,136,80,32,32,32, + 32,2,87,103,248,8,16,32,64,128,248,18,55,103,224,128, + 128,128,128,128,224,2,87,103,128,128,64,32,16,8,8,18, + 55,103,224,32,32,32,32,32,224,6,83,99,32,80,136,1, + 81,97,248,40,34,98,128,64,2,85,101,112,8,120,136,120, + 2,87,103,128,128,176,200,136,200,176,2,85,101,112,136,128, + 136,112,2,87,103,8,8,104,152,136,152,104,2,85,101,112, + 136,248,128,112,2,87,103,48,72,64,240,64,64,64,0,87, + 103,120,136,136,120,8,136,112,2,87,103,128,128,176,200,136, + 136,136,18,55,103,64,0,192,64,64,64,224,16,73,105,16, + 0,48,16,16,16,144,144,96,2,87,103,128,128,136,144,224, + 144,136,18,55,103,192,64,64,64,64,64,224,2,85,101,208, + 168,168,168,136,2,85,101,176,200,136,136,136,2,85,101,112, + 136,136,136,112,0,87,103,176,200,136,200,176,128,128,0,87, + 103,104,152,136,152,104,8,8,2,85,101,176,200,128,128,128, + 2,85,101,112,128,112,8,240,2,87,103,64,64,240,64,64, + 72,48,2,85,101,136,136,136,152,104,2,85,101,136,136,80, + 80,32,2,85,101,136,136,168,168,80,2,85,101,136,80,32, + 80,136,0,87,103,136,136,152,104,8,136,112,2,85,101,248, + 16,32,64,248,18,71,103,48,64,32,192,32,64,48,34,23, + 103,128,128,128,128,128,128,128,18,71,103,192,32,64,48,64, + 32,192,6,83,99,72,168,144,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,10,0,96,34,23,103,128, + 0,128,128,128,128,128,1,87,103,32,120,160,160,160,120,32, + 2,87,103,48,72,64,224,64,72,176,2,85,101,136,112,80, + 112,136,1,88,104,136,136,80,32,248,32,32,32,34,23,103, + 128,128,128,0,128,128,128,1,88,104,112,128,224,144,72,56, + 8,112,25,49,97,160,2,87,103,112,136,168,200,168,136,112, + 19,70,102,112,144,176,80,0,240,2,101,101,36,72,144,72, + 36,20,66,98,240,16,21,65,97,240,2,87,103,112,136,232, + 200,200,136,112,9,81,97,248,22,51,99,64,160,64,2,86, + 102,32,32,248,32,32,248,21,69,101,96,144,32,64,240,21, + 69,101,224,16,96,16,224,40,34,98,64,128,1,86,102,136, + 136,136,200,176,128,2,87,103,120,232,232,104,40,40,40,37, + 17,97,128,32,34,98,64,128,21,53,101,64,192,64,64,224, + 19,70,102,96,144,144,96,0,240,2,101,101,144,72,36,72, + 144,1,105,105,64,192,64,64,228,12,20,60,4,1,105,105, + 64,192,64,64,232,20,4,8,28,1,89,105,192,32,64,32, + 200,24,40,120,8,2,87,103,32,0,32,32,64,136,112,2, + 88,104,64,32,112,136,136,248,136,136,2,88,104,16,32,112, + 136,136,248,136,136,2,88,104,32,80,112,136,136,248,136,136, + 2,88,104,72,176,112,136,136,248,136,136,2,88,104,80,0, + 112,136,136,248,136,136,2,88,104,32,80,112,136,136,248,136, + 136,2,103,103,60,80,144,156,240,144,156,0,89,105,112,136, + 128,128,128,136,112,32,64,2,88,104,64,248,128,128,240,128, + 128,248,2,88,104,16,248,128,128,240,128,128,248,2,88,104, + 32,248,128,128,240,128,128,248,2,88,104,80,248,128,128,240, + 128,128,248,18,56,104,128,64,224,64,64,64,64,224,18,56, + 104,32,64,224,64,64,64,64,224,18,56,104,64,160,224,64, + 64,64,64,224,18,56,104,160,0,224,64,64,64,64,224,2, + 87,103,240,72,72,232,72,72,240,2,88,104,40,80,136,200, + 168,152,136,136,2,88,104,64,32,112,136,136,136,136,112,2, + 88,104,16,32,112,136,136,136,136,112,2,88,104,32,80,112, + 136,136,136,136,112,2,88,104,40,80,112,136,136,136,136,112, + 2,88,104,80,0,112,136,136,136,136,112,2,85,101,136,80, + 32,80,136,2,87,103,112,152,152,168,200,200,112,2,88,104, + 64,32,136,136,136,136,136,112,2,88,104,16,32,136,136,136, + 136,136,112,2,88,104,32,80,0,136,136,136,136,112,2,88, + 104,80,0,136,136,136,136,136,112,2,88,104,16,32,136,136, + 80,32,32,32,2,87,103,128,240,136,240,128,128,128,2,87, + 103,112,136,144,160,144,136,176,2,88,104,64,32,0,112,8, + 120,136,120,2,88,104,16,32,0,112,8,120,136,120,2,88, + 104,32,80,0,112,8,120,136,120,2,88,104,40,80,0,112, + 8,120,136,120,2,87,103,80,0,112,8,120,136,120,2,88, + 104,32,80,32,112,8,120,136,120,2,101,101,120,20,124,144, + 124,0,87,103,112,136,128,136,112,32,64,2,88,104,64,32, + 0,112,136,248,128,112,2,88,104,16,32,0,112,136,248,128, + 112,2,88,104,32,80,0,112,136,248,128,112,2,87,103,80, + 0,112,136,248,128,112,18,56,104,128,64,0,192,64,64,64, + 224,18,56,104,64,128,0,192,64,64,64,224,18,56,104,64, + 160,0,192,64,64,64,224,18,55,103,160,0,192,64,64,64, + 224,2,87,103,192,48,112,136,136,136,112,2,88,104,40,80, + 0,176,200,136,136,136,2,88,104,64,32,0,112,136,136,136, + 112,2,88,104,16,32,0,112,136,136,136,112,2,88,104,32, + 80,0,112,136,136,136,112,2,88,104,40,80,0,112,136,136, + 136,112,2,87,103,80,0,112,136,136,136,112,3,85,101,32, + 0,248,0,32,2,85,101,120,152,168,200,240,2,88,104,64, + 32,0,136,136,136,152,104,2,88,104,16,32,0,136,136,136, + 152,104,2,88,104,32,80,0,136,136,136,152,104,2,87,103, + 80,0,136,136,136,152,104,0,89,105,16,32,136,136,152,104, + 8,136,112,0,88,104,128,240,136,136,136,240,128,128,0,89, + 105,80,0,136,136,152,104,8,136,112}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 5 h= 9 x= 2 y= 8 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w= 6 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x10r[889] U8G_SECTION(".progmem.u8g_font_6x10r") = { + 1,6,10,0,254,7,1,54,2,104,32,127,254,8,254,7, + 254,10,0,96,34,23,103,128,128,128,128,128,0,128,22,51, + 99,160,160,160,2,87,103,80,80,248,80,248,80,80,2,87, + 103,32,112,160,112,40,112,32,2,87,103,72,168,80,32,80, + 168,144,2,87,103,64,160,160,64,168,144,104,38,19,99,128, + 128,128,18,55,103,32,64,128,128,128,64,32,18,55,103,128, + 64,32,32,32,64,128,3,85,101,136,80,248,80,136,3,85, + 101,32,32,248,32,32,17,51,99,96,64,128,5,81,97,248, + 17,51,99,64,224,64,2,87,103,8,8,16,32,64,128,128, + 2,87,103,32,80,136,136,136,80,32,2,87,103,32,96,160, + 32,32,32,248,2,87,103,112,136,8,48,64,128,248,2,87, + 103,248,8,16,48,8,136,112,2,87,103,16,48,80,144,248, + 16,16,2,87,103,248,128,176,200,8,136,112,2,87,103,48, + 64,128,176,200,136,112,2,87,103,248,8,16,16,32,64,64, + 2,87,103,112,136,136,112,136,136,112,2,87,103,112,136,152, + 104,8,16,96,17,55,103,64,224,64,0,64,224,64,17,55, + 103,64,224,64,0,96,64,128,18,71,103,16,32,64,128,64, + 32,16,4,83,99,248,0,248,18,71,103,128,64,32,16,32, + 64,128,2,87,103,112,136,16,32,32,0,32,2,87,103,112, + 136,152,168,176,128,112,2,87,103,32,80,136,136,248,136,136, + 2,87,103,240,72,72,112,72,72,240,2,87,103,112,136,128, + 128,128,136,112,2,87,103,240,72,72,72,72,72,240,2,87, + 103,248,128,128,240,128,128,248,2,87,103,248,128,128,240,128, + 128,128,2,87,103,112,136,128,128,152,136,112,2,87,103,136, + 136,136,248,136,136,136,18,55,103,224,64,64,64,64,64,224, + 2,87,103,56,16,16,16,16,144,96,2,87,103,136,144,160, + 192,160,144,136,2,87,103,128,128,128,128,128,128,248,2,87, + 103,136,136,216,168,136,136,136,2,87,103,136,136,200,168,152, + 136,136,2,87,103,112,136,136,136,136,136,112,2,87,103,240, + 136,136,240,128,128,128,1,88,104,112,136,136,136,136,168,112, + 8,2,87,103,240,136,136,240,160,144,136,2,87,103,112,136, + 128,112,8,136,112,2,87,103,248,32,32,32,32,32,32,2, + 87,103,136,136,136,136,136,136,112,2,87,103,136,136,136,80, + 80,80,32,2,87,103,136,136,136,168,168,216,136,2,87,103, + 136,136,80,32,80,136,136,2,87,103,136,136,80,32,32,32, + 32,2,87,103,248,8,16,32,64,128,248,18,55,103,224,128, + 128,128,128,128,224,2,87,103,128,128,64,32,16,8,8,18, + 55,103,224,32,32,32,32,32,224,6,83,99,32,80,136,1, + 81,97,248,40,34,98,128,64,2,85,101,112,8,120,136,120, + 2,87,103,128,128,176,200,136,200,176,2,85,101,112,136,128, + 136,112,2,87,103,8,8,104,152,136,152,104,2,85,101,112, + 136,248,128,112,2,87,103,48,72,64,240,64,64,64,0,87, + 103,120,136,136,120,8,136,112,2,87,103,128,128,176,200,136, + 136,136,18,55,103,64,0,192,64,64,64,224,16,73,105,16, + 0,48,16,16,16,144,144,96,2,87,103,128,128,136,144,224, + 144,136,18,55,103,192,64,64,64,64,64,224,2,85,101,208, + 168,168,168,136,2,85,101,176,200,136,136,136,2,85,101,112, + 136,136,136,112,0,87,103,176,200,136,200,176,128,128,0,87, + 103,104,152,136,152,104,8,8,2,85,101,176,200,128,128,128, + 2,85,101,112,128,112,8,240,2,87,103,64,64,240,64,64, + 72,48,2,85,101,136,136,136,152,104,2,85,101,136,136,80, + 80,32,2,85,101,136,136,168,168,80,2,85,101,136,80,32, + 80,136,0,87,103,136,136,152,104,8,136,112,2,85,101,248, + 16,32,64,248,18,71,103,48,64,32,192,32,64,48,34,23, + 103,128,128,128,128,128,128,128,18,71,103,192,32,64,48,64, + 32,192,6,83,99,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 3, '1' Height: 8 + Calculated Max Values w= 6 h=12 x= 5 y= 8 dx= 6 dy= 0 ascent=10 len=12 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[2382] U8G_SECTION(".progmem.u8g_font_6x12_67_75") = { + 1,6,12,0,254,3,2,41,3,99,0,255,0,10,254,8, + 0,2,87,103,168,0,136,0,136,0,168,2,87,103,240,136, + 232,168,232,136,240,2,87,103,112,168,248,168,248,168,112,2, + 87,103,112,136,8,8,8,136,112,18,69,101,96,144,16,144, + 96,1,88,104,112,136,128,128,136,120,8,8,2,87,103,32, + 32,32,32,168,112,32,2,103,103,248,252,252,156,252,252,248, + 2,87,103,112,248,248,168,248,248,112,255,255,255,255,255,255, + 255,3,85,101,32,64,248,64,32,2,87,103,32,112,168,32, + 32,32,32,3,85,101,32,16,248,16,32,2,87,103,32,32, + 32,32,168,112,32,4,83,99,80,248,80,2,87,103,32,112, + 168,32,168,112,32,2,89,105,192,240,224,160,32,16,16,8, + 8,2,89,105,24,120,56,40,32,64,64,128,128,2,89,105, + 128,128,64,64,32,40,56,120,24,2,89,105,8,8,16,16, + 32,160,224,240,192,3,101,101,40,72,252,80,48,3,101,101, + 48,40,252,72,80,4,99,99,192,216,100,4,99,99,12,108, + 152,3,101,101,40,80,252,80,40,2,88,104,32,112,168,112, + 168,32,32,32,3,101,101,80,40,252,40,80,2,88,104,32, + 32,32,168,112,168,112,32,3,101,101,36,72,240,72,36,3, + 101,101,144,72,60,72,144,3,85,101,40,72,248,72,40,2, + 87,103,32,112,168,32,32,32,248,3,85,101,160,144,248,144, + 160,2,87,103,248,32,32,32,168,112,32,2,87,103,32,112, + 168,32,168,112,248,3,101,101,40,68,248,64,32,3,101,101, + 80,136,124,8,16,3,101,101,32,76,252,72,40,3,101,101, + 16,200,252,72,80,3,100,100,72,220,236,72,3,101,101,8, + 88,252,104,64,2,87,103,128,144,176,208,144,56,16,2,88, + 104,32,64,248,72,40,8,8,8,2,88,104,32,16,248,144, + 160,128,128,128,2,88,104,8,8,8,40,72,248,64,32,2, + 87,103,128,128,160,144,248,16,32,3,84,100,240,16,56,16, + 3,85,101,8,8,72,248,64,3,85,101,48,72,72,232,72, + 3,85,101,96,144,144,184,16,2,88,104,248,128,224,192,160, + 32,16,16,2,89,105,160,192,248,192,168,24,248,24,40,2, + 86,102,56,48,168,136,136,112,2,86,102,224,96,168,136,136, + 112,5,83,99,32,64,248,3,83,99,248,64,32,34,56,104, + 128,192,160,128,128,128,128,128,2,56,104,32,96,160,32,32, + 32,32,32,5,83,99,32,16,248,3,83,99,248,16,32,34, + 56,104,128,128,128,128,128,160,192,128,2,56,104,32,32,32, + 32,32,160,96,32,2,89,105,32,16,248,16,32,64,248,64, + 32,2,88,104,80,240,80,80,80,80,120,80,2,89,105,32, + 64,248,64,32,16,248,16,32,2,89,105,32,64,248,64,32, + 64,248,64,32,2,88,104,80,248,80,80,80,80,80,80,2, + 89,105,32,16,248,16,32,16,248,16,32,2,88,104,80,80, + 80,80,80,80,248,80,2,87,103,32,64,248,0,248,16,32, + 2,87,103,32,16,248,0,248,64,32,2,103,103,20,40,124, + 144,124,32,80,2,103,103,8,88,252,164,252,104,64,2,103, + 103,160,80,248,36,248,16,40,3,85,101,32,120,128,120,32, + 2,87,103,32,80,216,80,80,80,80,3,85,101,32,240,8, + 240,32,2,87,103,80,80,80,80,216,80,32,3,101,101,72, + 252,132,252,72,2,88,104,32,80,216,80,80,216,80,32,2, + 102,102,248,160,208,168,148,8,2,102,102,124,20,44,84,164, + 64,2,102,102,64,164,84,44,20,124,2,102,102,8,148,168, + 208,160,248,2,103,103,16,60,64,252,64,60,16,2,103,103, + 32,240,8,252,8,240,32,3,100,100,64,232,212,64,3,100, + 100,8,92,172,8,2,88,104,32,112,168,32,112,32,112,32, + 2,88,104,32,112,32,112,32,168,112,32,3,101,101,32,64, + 212,64,32,2,88,104,32,112,136,32,0,32,0,32,3,101, + 101,16,8,172,8,16,2,88,104,32,0,32,0,32,136,112, + 32,3,85,101,160,192,248,192,160,3,85,101,40,24,248,24, + 40,3,85,101,32,120,136,120,32,2,88,104,32,80,216,80, + 80,80,80,112,3,85,101,32,240,136,240,32,2,88,104,112, + 80,80,80,80,216,80,32,2,89,105,32,80,216,80,112,0, + 112,80,112,2,89,105,32,80,216,80,80,80,216,136,248,2, + 89,105,32,80,248,136,80,80,216,136,248,2,89,105,32,112, + 248,112,112,112,248,168,248,2,89,105,32,80,216,80,216,80, + 80,80,112,2,89,105,32,80,216,80,216,80,216,136,248,3, + 85,101,160,240,136,240,160,2,88,104,248,128,176,160,144,16, + 8,8,2,88,104,128,128,64,72,40,104,8,248,2,88,104, + 32,80,216,80,80,216,80,32,3,101,101,16,104,252,104,16, + 2,88,104,80,120,80,80,80,80,240,80,2,89,105,16,248, + 16,16,248,16,16,248,16,3,101,101,40,72,252,72,40,3, + 101,101,80,72,252,72,80,3,101,101,48,120,252,120,48,3, + 101,101,56,88,252,88,56,3,101,101,112,104,252,104,112,3, + 101,101,48,120,252,120,48,3,85,101,32,96,184,96,32,3, + 85,101,32,48,232,48,32,3,101,101,48,120,180,120,48,6, + 102,102,252,252,252,252,252,252,0,98,98,252,252,0,99,99, + 252,252,252,0,101,101,252,252,252,252,252,0,102,102,252,252, + 252,252,252,252,0,104,104,252,252,252,252,252,252,252,252,0, + 105,105,252,252,252,252,252,252,252,252,252,0,107,107,252,252, + 252,252,252,252,252,252,252,252,252,0,108,108,252,252,252,252, + 252,252,252,252,252,252,252,252,0,92,108,248,248,248,248,248, + 248,248,248,248,248,248,248,0,76,108,240,240,240,240,240,240, + 240,240,240,240,240,240,0,76,108,240,240,240,240,240,240,240, + 240,240,240,240,240,0,60,108,224,224,224,224,224,224,224,224, + 224,224,224,224,0,44,108,192,192,192,192,192,192,192,192,192, + 192,192,192,0,44,108,192,192,192,192,192,192,192,192,192,192, + 192,192,0,28,108,128,128,128,128,128,128,128,128,128,128,128, + 128,48,60,108,224,224,224,224,224,224,224,224,224,224,224,224, + 1,107,107,168,0,84,0,168,0,84,0,168,0,84,0,108, + 108,168,84,168,84,168,84,168,84,168,84,168,84,0,108,108, + 84,252,168,252,84,252,168,252,84,252,168,252,10,98,98,252, + 252,80,28,108,128,128,128,128,128,128,128,128,128,128,128,128, + 0,54,102,224,224,224,224,224,224,48,54,102,224,224,224,224, + 224,224,6,54,102,224,224,224,224,224,224,0,108,108,224,224, + 224,224,224,224,252,252,252,252,252,252,0,108,108,224,224,224, + 224,224,224,28,28,28,28,28,28,0,108,108,252,252,252,252, + 252,252,224,224,224,224,224,224,0,108,108,252,252,252,252,252, + 252,28,28,28,28,28,28,54,54,102,224,224,224,224,224,224, + 0,108,108,28,28,28,28,28,28,224,224,224,224,224,224,0, + 108,108,28,28,28,28,28,28,252,252,252,252,252,252,2,85, + 101,248,248,248,248,248,2,85,101,248,136,136,136,248,2,85, + 101,112,136,136,136,112,2,85,101,248,136,168,136,248,2,85, + 101,248,136,248,136,248,2,85,101,248,168,168,168,248,2,85, + 101,248,168,248,168,248,2,85,101,248,200,168,152,248,2,85, + 101,248,152,168,200,248,2,85,101,248,216,168,216,248,20,51, + 99,224,224,224,20,51,99,224,160,224,3,101,101,252,252,252, + 252,252,3,101,101,252,132,132,132,252,17,74,106,240,240,240, + 240,240,240,240,240,240,240,17,74,106,240,144,144,144,144,144, + 144,144,144,240,4,99,99,60,120,240,4,99,99,60,72,240, + 2,87,103,32,32,112,112,248,248,248,2,87,103,32,32,80, + 80,136,136,248,3,85,101,32,32,112,112,248,3,85,101,32, + 32,80,80,248,18,71,103,128,192,224,240,224,192,128,18,71, + 103,128,192,160,144,160,192,128,19,53,101,128,192,224,192,128, + 19,53,101,128,192,160,192,128,3,101,101,192,240,252,240,192, + 3,101,101,192,176,140,176,192,2,87,103,248,248,248,112,112, + 32,32,2,87,103,248,136,136,80,80,32,32,2,85,101,248, + 112,112,32,32,2,85,101,248,80,80,32,32,18,71,103,16, + 48,112,240,112,48,16,18,71,103,16,48,80,144,80,48,16, + 19,53,101,32,96,224,96,32,19,53,101,32,96,160,96,32, + 3,101,101,12,60,252,60,12,3,101,101,12,52,196,52,12, + 3,85,101,32,112,248,112,32,3,85,101,32,80,136,80,32, + 3,85,101,32,80,168,80,32,2,102,102,48,72,180,180,72, + 48,2,87,103,32,80,80,136,80,80,32,2,102,102,48,72, + 132,132,72,48,2,102,102,32,8,128,4,64,16,2,85,101, + 112,168,168,168,112,2,87,103,112,136,168,216,168,136,112,2, + 102,102,48,120,252,252,120,48,2,102,102,48,104,228,228,104, + 48,2,102,102,48,88,156,156,88,48,2,102,102,48,72,132, + 252,120,48,2,102,102,48,120,252,132,72,48,2,102,102,48, + 88,156,132,72,48,2,102,102,48,104,228,132,72,48,18,89, + 105,8,56,120,120,248,120,120,56,8,2,89,105,128,224,240, + 240,248,240,240,224,128,0,108,108,252,252,252,252,204,132,132, + 204,252,252,252,252,0,108,108,252,252,252,204,180,120,120,180, + 204,252,252,252,6,102,102,252,252,252,204,180,120,0,102,102, + 120,180,204,252,252,252,5,51,99,32,64,128,53,51,99,128, + 64,32,50,51,99,32,64,128,2,51,99,128,64,32,5,99, + 99,48,72,132,2,99,99,132,72,48,2,85,101,8,24,56, + 120,248,2,85,101,128,192,224,240,248,2,85,101,248,240,224, + 192,128,2,85,101,248,120,56,24,8,2,85,101,112,136,136, + 136,112,2,85,101,248,232,232,232,248,2,85,101,248,184,184, + 184,248,2,85,101,248,248,232,200,248,2,85,101,248,152,184, + 248,248,2,85,101,248,168,168,168,248,2,87,103,32,32,80, + 112,168,136,248,2,87,103,32,32,112,112,232,232,248,2,87, + 103,32,32,112,112,184,184,248,2,103,103,48,72,132,132,132, + 72,48,2,85,101,248,168,232,136,248,2,85,101,248,136,232, + 168,248,2,85,101,248,136,184,168,248,2,85,101,248,168,184, + 136,248,2,85,101,112,168,232,136,112,2,85,101,112,136,232, + 168,112,2,85,101,112,136,184,168,112,2,85,101,112,168,184, + 136,112,3,85,101,248,144,160,192,128,3,85,101,248,72,40, + 24,8,3,85,101,128,192,160,144,248,20,68,100,240,144,144, + 240,19,68,100,240,240,240,240,20,68,100,240,144,144,240,20, + 68,100,240,240,240,240,3,85,101,8,24,40,72,248}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 3 + Calculated Max Values w= 6 h=10 x= 1 y= 2 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_75r[427] U8G_SECTION(".progmem.u8g_font_6x12_75r") = { + 1,6,12,0,254,7,1,41,0,0,32,79,0,9,255,7, + 0,2,85,101,248,248,248,248,248,2,85,101,248,136,136,136, + 248,2,85,101,112,136,136,136,112,2,85,101,248,136,168,136, + 248,2,85,101,248,136,248,136,248,2,85,101,248,168,168,168, + 248,2,85,101,248,168,248,168,248,2,85,101,248,200,168,152, + 248,2,85,101,248,152,168,200,248,2,85,101,248,216,168,216, + 248,20,51,99,224,224,224,20,51,99,224,160,224,3,101,101, + 252,252,252,252,252,3,101,101,252,132,132,132,252,17,74,106, + 240,240,240,240,240,240,240,240,240,240,17,74,106,240,144,144, + 144,144,144,144,144,144,240,4,99,99,60,120,240,4,99,99, + 60,72,240,2,87,103,32,32,112,112,248,248,248,2,87,103, + 32,32,80,80,136,136,248,3,85,101,32,32,112,112,248,3, + 85,101,32,32,80,80,248,18,71,103,128,192,224,240,224,192, + 128,18,71,103,128,192,160,144,160,192,128,19,53,101,128,192, + 224,192,128,19,53,101,128,192,160,192,128,3,101,101,192,240, + 252,240,192,3,101,101,192,176,140,176,192,2,87,103,248,248, + 248,112,112,32,32,2,87,103,248,136,136,80,80,32,32,2, + 85,101,248,112,112,32,32,2,85,101,248,80,80,32,32,18, + 71,103,16,48,112,240,112,48,16,18,71,103,16,48,80,144, + 80,48,16,19,53,101,32,96,224,96,32,19,53,101,32,96, + 160,96,32,3,101,101,12,60,252,60,12,3,101,101,12,52, + 196,52,12,3,85,101,32,112,248,112,32,3,85,101,32,80, + 136,80,32,3,85,101,32,80,168,80,32,2,102,102,48,72, + 180,180,72,48,2,87,103,32,80,80,136,80,80,32,2,102, + 102,48,72,132,132,72,48,2,102,102,32,8,128,4,64,16, + 2,85,101,112,168,168,168,112,2,87,103,112,136,168,216,168, + 136,112,2,102,102,48,120,252,252,120,48}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 6 h=12 x= 2 y= 4 dx= 6 dy= 0 ascent=10 len=12 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[2316] U8G_SECTION(".progmem.u8g_font_6x12_78_79") = { + 1,6,12,0,254,6,2,80,3,53,0,255,0,10,254,9, + 0,2,87,103,168,0,136,0,136,0,168,3,101,101,144,252, + 32,64,96,3,101,101,196,200,48,200,196,3,101,101,96,64, + 32,252,144,2,103,103,204,148,232,48,232,148,204,255,1,105, + 105,120,132,180,180,164,180,180,132,120,1,105,105,120,132,180, + 132,180,132,204,132,120,3,101,101,32,176,252,176,32,2,101, + 101,252,204,180,132,252,255,255,18,72,104,144,144,80,112,240, + 240,240,112,3,102,102,4,56,124,124,64,128,2,102,102,64, + 224,80,40,20,12,3,99,99,248,140,248,2,102,102,12,20, + 40,80,224,64,3,100,100,248,132,132,248,4,99,99,248,244, + 248,2,87,103,8,8,16,16,160,224,64,2,103,103,12,12, + 28,216,248,112,48,2,85,101,136,80,32,80,136,3,85,101, + 216,248,32,248,216,2,86,102,136,80,32,80,136,128,1,103, + 103,204,204,120,112,252,204,192,1,103,103,120,204,164,244,164, + 204,120,2,102,102,48,48,252,252,48,48,3,85,101,32,32, + 216,32,32,2,102,102,48,48,204,204,48,48,2,87,103,32, + 32,248,32,32,32,32,1,90,106,112,80,216,136,216,80,80, + 80,80,112,2,105,105,120,220,188,220,88,88,88,120,120,2, + 87,103,112,32,168,248,168,32,112,2,87,103,32,248,80,80, + 80,248,32,3,85,101,32,32,248,32,32,3,102,102,48,48, + 252,252,48,48,2,104,104,48,120,48,252,252,48,120,48,2, + 87,103,32,112,168,248,168,112,32,3,85,101,32,112,248,112, + 32,3,85,101,32,112,216,112,32,255,3,85,101,32,216,80, + 32,80,2,87,103,112,216,136,216,168,248,112,3,86,102,32, + 32,248,80,112,136,3,86,102,32,32,216,32,80,136,3,86, + 102,32,32,248,112,112,136,3,86,102,32,32,248,112,112,136, + 3,86,102,32,32,232,48,80,136,2,102,102,48,88,140,88, + 172,88,2,86,102,32,168,112,112,168,32,2,87,103,32,168, + 112,80,112,168,32,2,87,103,32,168,112,248,112,168,32,2, + 87,103,32,168,112,248,112,168,32,2,87,103,32,168,112,248, + 112,168,32,2,86,102,32,168,112,112,168,32,1,88,104,80, + 32,168,112,112,168,32,80,1,88,104,80,32,168,112,112,168, + 32,80,2,103,103,80,248,124,248,124,248,80,2,103,103,80, + 168,116,248,116,168,80,2,86,102,32,168,112,112,168,32,2, + 87,103,32,168,112,80,112,168,32,2,86,102,32,168,112,112, + 168,32,2,103,103,168,216,80,168,116,168,32,3,87,103,32, + 112,248,216,112,248,216,3,87,103,32,112,216,168,80,248,216, + 3,86,102,32,112,216,112,248,32,2,87,103,112,248,168,216, + 168,248,112,2,86,102,32,168,112,112,168,32,2,86,102,32, + 168,112,112,168,32,2,86,102,32,168,112,112,168,32,2,86, + 102,32,168,112,112,168,32,2,87,103,32,168,112,248,112,168, + 32,2,87,103,32,168,112,248,112,168,32,2,87,103,32,168, + 112,248,112,168,32,2,87,103,32,168,112,248,112,168,32,2, + 87,103,32,168,112,248,112,168,32,255,3,101,101,120,140,140, + 140,120,255,2,102,102,248,140,140,140,252,124,2,102,102,124, + 252,140,140,140,248,2,102,102,248,140,140,140,252,124,2,102, + 102,124,252,140,140,140,248,255,255,255,2,103,103,16,56,84, + 236,84,56,16,255,34,23,103,128,128,128,128,128,128,128,18, + 39,103,192,192,192,192,192,192,192,18,71,103,240,240,240,240, + 240,240,240,22,69,101,96,128,224,240,96,22,69,101,96,240, + 112,16,96,6,101,101,72,144,216,252,72,6,101,101,72,252, + 108,36,72,255,255,1,106,106,8,124,200,200,200,120,8,200, + 136,112,2,89,105,112,248,248,112,32,0,32,112,32,2,88, + 104,216,248,112,32,0,32,112,32,2,85,101,216,248,248,112, + 32,2,87,103,96,240,240,120,240,240,96,2,104,104,100,184, + 32,216,248,240,228,120,2,102,102,128,88,120,220,152,64,18, + 56,104,32,64,192,192,192,192,64,32,18,56,104,128,64,96, + 96,96,96,64,128,18,40,104,64,192,192,192,192,192,192,64, + 18,40,104,128,192,192,192,192,192,192,128,17,73,105,48,48, + 96,96,192,96,96,48,48,17,73,105,192,192,96,96,48,96, + 96,192,192,2,87,103,24,48,96,192,96,48,24,2,87,103, + 192,96,48,24,48,96,192,1,89,105,56,56,112,112,224,112, + 112,56,56,1,89,105,224,224,112,112,56,112,112,224,224,17, + 57,105,32,64,128,128,128,128,128,64,32,17,57,105,128,64, + 32,32,32,32,32,64,128,17,73,105,48,96,96,96,192,96, + 96,96,48,17,73,105,192,96,96,96,48,96,96,96,192,2, + 89,105,112,248,216,152,216,216,136,248,112,2,89,105,112,248, + 216,168,232,216,136,248,112,2,89,105,112,248,152,232,216,232, + 152,248,112,2,89,105,112,248,184,184,152,136,216,248,112,2, + 89,105,112,248,136,184,152,232,152,248,112,2,89,105,112,248, + 200,184,152,168,216,248,112,2,89,105,112,248,136,232,216,216, + 216,248,112,2,89,105,112,248,216,168,216,168,216,248,112,2, + 89,105,112,248,216,168,200,232,152,248,112,2,105,105,120,252, + 172,148,148,148,172,252,120,2,89,105,112,136,168,232,168,168, + 248,136,112,2,89,105,112,136,168,216,152,168,248,136,112,2, + 89,105,112,136,232,152,168,152,232,136,112,2,89,105,112,136, + 200,200,232,248,168,136,112,2,89,105,112,136,248,200,232,152, + 232,136,112,2,89,105,112,136,184,200,232,216,168,136,112,2, + 89,105,112,136,248,152,168,168,168,136,112,2,89,105,112,136, + 168,216,168,216,168,136,112,2,89,105,112,136,168,216,184,152, + 232,136,112,2,105,105,120,132,212,236,236,236,212,132,120,2, + 89,105,112,248,216,152,216,216,216,248,112,2,89,105,112,248, + 216,168,232,216,136,248,112,2,89,105,112,248,152,232,216,232, + 152,248,112,2,89,105,112,248,184,184,152,136,216,248,112,2, + 89,105,112,248,136,184,152,232,152,248,112,2,89,105,112,248, + 200,184,152,168,216,248,112,2,89,105,112,248,136,232,216,216, + 216,248,112,2,89,105,112,248,216,168,216,168,216,248,112,2, + 89,105,112,248,216,168,200,232,152,248,112,2,105,105,120,252, + 172,148,148,148,172,252,120,3,101,101,48,24,252,24,48,255, + 255,255,2,85,101,128,64,40,24,56,3,85,101,32,48,248, + 48,32,2,85,101,56,24,40,64,128,3,101,101,64,48,252, + 48,64,2,102,102,48,56,252,252,56,48,4,99,99,8,252, + 8,2,102,102,16,24,252,252,24,16,3,99,99,8,188,8, + 2,102,102,16,24,188,188,24,16,3,101,101,16,248,252,248, + 16,2,103,103,192,176,72,60,120,240,192,2,103,103,192,240, + 120,60,72,176,192,3,101,101,224,120,60,120,224,3,102,102, + 128,144,248,252,120,16,2,102,102,16,120,252,248,144,128,2, + 103,103,32,240,248,252,248,240,32,3,101,101,32,240,252,240, + 32,3,101,101,16,232,132,232,16,3,101,101,16,232,132,232, + 16,3,101,101,16,232,132,232,16,3,101,101,16,232,132,232, + 16,2,102,102,16,232,132,132,232,16,2,102,102,16,232,132, + 132,232,16,3,101,101,16,232,132,232,16,255,3,101,101,16, + 232,132,232,16,2,103,103,120,220,12,4,12,220,120,3,99, + 99,232,124,232,2,102,102,64,224,96,16,12,12,3,99,99, + 232,124,232,2,102,102,12,12,16,96,224,64,2,102,102,96, + 224,224,20,12,28,2,101,101,192,232,124,232,192,2,102,102, + 28,12,20,224,224,96,2,101,101,16,200,252,200,16,2,101, + 101,16,200,252,200,16,3,99,99,232,124,232,3,100,100,232, + 252,252,232,2,101,101,80,232,4,232,80,255,2,85,101,136, + 144,160,192,248,2,86,102,32,32,80,112,168,248,2,86,102, + 32,32,32,32,32,248,2,87,103,120,128,144,168,144,128,120, + 2,87,103,240,8,72,168,72,8,240,18,73,105,64,160,160, + 32,32,64,64,64,48,18,73,105,32,80,80,64,64,32,32, + 32,192,2,87,103,136,168,136,80,80,32,32,2,104,104,128, + 156,160,160,160,92,64,64,2,104,104,4,228,20,20,20,232, + 8,8,18,55,103,64,64,64,224,64,64,64,255,2,103,103, + 252,64,32,32,32,32,64,255,255,255,3,85,101,32,80,168, + 80,32,2,87,103,32,32,80,80,136,168,136,2,87,103,168, + 168,168,168,168,168,112,3,85,101,8,8,40,8,248,3,85, + 101,248,128,160,128,128,3,101,101,196,108,84,108,196,3,101, + 101,140,216,168,216,140,2,101,101,204,120,72,120,204,2,87, + 103,32,32,32,32,32,32,248,2,87,103,248,32,32,32,32, + 32,32,3,85,101,80,216,80,216,80,3,85,101,80,80,216, + 80,80,4,99,99,64,188,64,4,99,99,128,252,128,4,99, + 99,4,252,4,18,55,103,64,160,64,64,64,64,224,3,85, + 101,32,80,248,80,32,3,85,101,32,80,136,80,32,3,101, + 101,16,40,196,40,16,3,101,101,32,80,140,80,32,3,101, + 101,124,68,196,68,124,3,101,101,248,136,140,136,248,1,90, + 106,248,160,160,160,160,160,160,160,160,248,1,90,106,248,40, + 40,40,40,40,40,40,40,248,17,57,105,32,32,64,64,128, + 64,64,32,32,17,57,105,128,128,64,64,32,64,64,128,128, + 0,107,107,20,40,40,80,80,160,80,80,40,40,20,0,107, + 107,160,80,80,40,40,20,40,40,80,80,160,16,75,107,16, + 32,96,160,160,160,160,160,96,32,16,16,76,108,128,64,96, + 80,80,80,80,80,80,96,64,128,17,41,105,128,64,64,64, + 64,64,64,64,128,17,41,105,64,128,128,128,128,128,128,128, + 64,2,87,103,32,112,168,168,168,168,168,2,87,103,168,168, + 168,168,168,112,32,2,103,103,56,68,228,68,4,68,56,2, + 103,103,112,136,156,136,128,136,112,4,99,99,104,252,104,3, + 101,101,32,64,252,64,32,3,101,101,16,8,252,8,16,4, + 99,99,72,252,72,2,103,103,16,32,124,128,124,32,16,2, + 103,103,32,16,248,4,248,16,32,3,101,101,72,252,132,252, + 72,3,101,101,36,68,252,68,36,3,101,101,144,136,252,136, + 144,2,103,103,20,36,124,132,124,36,20,2,103,103,160,144, + 248,132,248,144,160,3,100,100,8,92,172,8}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h=10 x= 2 y=10 dx= 6 dy= 0 ascent=10 len=10 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12[1933] U8G_SECTION(".progmem.u8g_font_6x12") = { + 1,6,12,0,254,7,1,53,2,107,32,255,254,10,254,8, + 254,12,0,96,34,23,103,128,128,128,128,128,0,128,23,51, + 99,160,160,160,2,86,102,80,248,80,80,248,80,1,89,105, + 32,112,168,160,112,40,168,112,32,2,87,103,200,200,16,32, + 64,152,152,2,87,103,64,160,160,64,168,144,104,39,19,99, + 128,128,128,17,57,105,32,64,64,128,128,128,64,64,32,17, + 57,105,128,64,64,32,32,32,64,64,128,2,87,103,32,168, + 112,32,112,168,32,3,85,101,32,32,248,32,32,1,51,99, + 96,96,192,5,81,97,248,18,34,98,192,192,2,87,103,8, + 16,16,32,64,64,128,18,71,103,96,144,144,144,144,144,96, + 18,55,103,64,192,64,64,64,64,224,2,87,103,112,136,8, + 16,32,64,248,2,87,103,248,8,16,48,8,136,112,2,87, + 103,16,48,80,144,248,16,16,2,87,103,248,128,240,8,8, + 136,112,2,87,103,48,64,128,240,136,136,112,2,87,103,248, + 8,16,16,32,32,32,2,87,103,112,136,136,112,136,136,112, + 2,87,103,112,136,136,120,8,16,96,18,37,101,192,192,0, + 192,192,1,54,102,96,96,0,96,96,192,19,53,101,32,64, + 128,64,32,4,83,99,248,0,248,19,53,101,128,64,32,64, + 128,2,87,103,112,136,16,32,32,0,32,2,87,103,112,136, + 184,168,184,128,112,2,87,103,112,136,136,248,136,136,136,2, + 87,103,240,72,72,112,72,72,240,2,87,103,112,136,128,128, + 128,136,112,2,87,103,240,72,72,72,72,72,240,2,87,103, + 248,128,128,240,128,128,248,2,87,103,248,128,128,240,128,128, + 128,2,87,103,112,136,128,128,152,136,112,2,87,103,136,136, + 136,248,136,136,136,18,55,103,224,64,64,64,64,64,224,2, + 87,103,56,16,16,16,16,144,96,2,87,103,136,144,160,192, + 160,144,136,2,87,103,128,128,128,128,128,128,248,2,87,103, + 136,216,168,136,136,136,136,2,87,103,136,136,200,168,152,136, + 136,2,87,103,112,136,136,136,136,136,112,2,87,103,240,136, + 136,240,128,128,128,2,87,103,112,136,136,136,168,144,104,2, + 87,103,240,136,136,240,160,144,136,2,87,103,112,136,128,112, + 8,136,112,2,87,103,248,32,32,32,32,32,32,2,87,103, + 136,136,136,136,136,136,112,2,87,103,136,136,136,136,80,80, + 32,2,87,103,136,136,136,136,168,168,80,2,87,103,136,136, + 80,32,80,136,136,2,87,103,136,136,80,32,32,32,32,2, + 87,103,248,8,16,32,64,128,248,17,57,105,224,128,128,128, + 128,128,128,128,224,2,87,103,128,64,64,32,16,16,8,17, + 57,105,224,32,32,32,32,32,32,32,224,7,83,99,32,80, + 136,0,81,97,248,23,51,99,128,64,32,2,85,101,112,8, + 120,136,120,2,87,103,128,128,240,136,136,136,240,2,85,101, + 112,136,128,136,112,2,87,103,8,8,120,136,136,136,120,2, + 85,101,112,136,240,128,112,2,87,103,48,72,64,224,64,64, + 64,0,87,103,112,136,136,136,120,8,112,2,87,103,128,128, + 240,136,136,136,136,18,55,103,64,0,192,64,64,64,224,16, + 73,105,16,0,48,16,16,16,16,144,96,2,87,103,128,128, + 136,144,224,144,136,18,55,103,192,64,64,64,64,64,224,2, + 85,101,208,168,168,168,168,2,85,101,176,200,136,136,136,2, + 85,101,112,136,136,136,112,0,87,103,240,136,136,136,240,128, + 128,0,87,103,120,136,136,136,120,8,8,2,85,101,176,200, + 128,128,128,2,85,101,120,128,112,8,240,2,87,103,32,32, + 248,32,32,32,24,2,85,101,136,136,136,152,104,2,85,101, + 136,136,136,80,32,2,85,101,136,136,168,168,80,2,85,101, + 136,80,32,80,136,0,87,103,136,136,136,80,32,64,128,2, + 85,101,248,16,32,64,248,17,57,105,32,64,64,64,128,64, + 64,64,32,33,25,105,128,128,128,128,128,128,128,128,128,17, + 57,105,128,64,64,64,32,64,64,64,128,4,83,99,72,168, + 144,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,12,0,96,34,23,103,128,0,128,128,128,128,128,1, + 87,103,32,112,168,160,168,112,32,2,87,103,48,72,64,224, + 64,72,176,2,85,101,168,80,136,80,168,2,87,103,136,80, + 248,32,248,32,32,34,23,103,128,128,128,0,128,128,128,18, + 72,104,112,128,96,144,144,96,16,224,25,49,97,160,2,103, + 103,120,132,148,164,148,132,120,22,53,101,96,160,96,0,224, + 2,85,101,40,80,160,80,40,3,83,99,248,8,8,21,49, + 97,224,2,103,103,120,132,180,164,164,132,120,9,81,97,248, + 23,68,100,96,144,144,96,2,87,103,32,32,248,32,32,0, + 248,23,53,101,64,160,32,64,224,23,53,101,192,32,64,32, + 192,23,51,99,32,64,128,0,87,103,136,136,136,152,232,128, + 128,2,88,104,120,232,232,232,104,40,40,40,37,34,98,192, + 192,16,50,98,32,192,23,53,101,64,192,64,64,224,23,53, + 101,64,160,64,0,224,2,85,101,160,80,40,80,160,2,90, + 106,64,192,64,64,80,48,80,120,16,16,2,90,106,64,192, + 64,64,80,40,8,16,32,56,2,90,106,192,32,64,32,208, + 48,80,120,16,16,2,87,103,32,0,32,32,64,136,112,2, + 90,106,64,32,0,112,136,136,248,136,136,136,2,90,106,16, + 32,0,112,136,136,248,136,136,136,2,90,106,32,80,0,112, + 136,136,248,136,136,136,2,90,106,104,176,0,112,136,136,248, + 136,136,136,2,89,105,80,0,112,136,136,248,136,136,136,2, + 90,106,32,80,32,112,136,136,248,136,136,136,2,87,103,120, + 160,160,240,160,160,184,0,89,105,112,136,128,128,128,136,112, + 16,96,2,90,106,64,32,0,248,128,128,240,128,128,248,2, + 90,106,16,32,0,248,128,128,240,128,128,248,2,90,106,32, + 80,0,248,128,128,240,128,128,248,2,89,105,80,0,248,128, + 128,240,128,128,248,18,58,106,128,64,0,224,64,64,64,64, + 64,224,18,58,106,32,64,0,224,64,64,64,64,64,224,18, + 58,106,64,160,0,224,64,64,64,64,64,224,18,57,105,160, + 0,224,64,64,64,64,64,224,2,87,103,112,72,72,232,72, + 72,112,2,90,106,104,176,0,136,136,200,168,152,136,136,2, + 90,106,64,32,0,112,136,136,136,136,136,112,2,90,106,16, + 32,0,112,136,136,136,136,136,112,2,90,106,32,80,0,112, + 136,136,136,136,136,112,2,90,106,104,176,0,112,136,136,136, + 136,136,112,2,89,105,80,0,112,136,136,136,136,136,112,3, + 85,101,136,80,32,80,136,1,89,105,8,112,152,168,168,168, + 200,112,128,2,90,106,64,32,0,136,136,136,136,136,136,112, + 2,90,106,16,32,0,136,136,136,136,136,136,112,2,90,106, + 32,80,0,136,136,136,136,136,136,112,2,89,105,80,0,136, + 136,136,136,136,136,112,2,90,106,16,32,0,136,136,80,32, + 32,32,32,18,71,103,128,224,144,144,144,224,128,2,87,103, + 112,136,144,160,144,136,176,2,88,104,64,32,0,112,8,120, + 136,120,2,88,104,16,32,0,112,8,120,136,120,2,88,104, + 32,80,0,112,8,120,136,120,2,88,104,104,176,0,112,8, + 120,136,120,2,87,103,80,0,112,8,120,136,120,2,88,104, + 32,80,32,112,8,120,136,120,2,85,101,112,40,112,160,120, + 0,87,103,112,136,128,136,112,16,96,2,88,104,64,32,0, + 112,136,240,128,112,2,88,104,16,32,0,112,136,240,128,112, + 2,88,104,32,80,0,112,136,240,128,112,2,87,103,80,0, + 112,136,240,128,112,18,56,104,128,64,0,192,64,64,64,224, + 18,56,104,32,64,0,192,64,64,64,224,18,56,104,64,160, + 0,192,64,64,64,224,18,55,103,160,0,192,64,64,64,224, + 2,89,105,80,32,80,8,120,136,136,136,112,2,88,104,104, + 176,0,176,200,136,136,136,2,88,104,64,32,0,112,136,136, + 136,112,2,88,104,16,32,0,112,136,136,136,112,2,88,104, + 32,80,0,112,136,136,136,112,2,88,104,104,176,0,112,136, + 136,136,112,2,87,103,80,0,112,136,136,136,112,3,85,101, + 32,0,248,0,32,2,85,101,120,152,168,200,240,2,88,104, + 64,32,0,136,136,136,136,112,2,88,104,16,32,0,136,136, + 136,136,112,2,88,104,32,80,0,136,136,136,136,112,2,87, + 103,80,0,136,136,136,136,112,0,90,106,16,32,0,136,136, + 136,80,32,64,128,0,89,105,128,128,240,136,136,136,240,128, + 128,0,89,105,80,0,136,136,136,80,32,64,128}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1 + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 5 h= 9 x= 2 y=10 dx= 6 dy= 0 ascent=10 len= 9 + Font Bounding box w= 6 h=12 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x12r[898] U8G_SECTION(".progmem.u8g_font_6x12r") = { + 1,6,12,0,254,7,1,53,2,107,32,127,254,10,254,8, + 254,12,0,96,34,23,103,128,128,128,128,128,0,128,23,51, + 99,160,160,160,2,86,102,80,248,80,80,248,80,1,89,105, + 32,112,168,160,112,40,168,112,32,2,87,103,200,200,16,32, + 64,152,152,2,87,103,64,160,160,64,168,144,104,39,19,99, + 128,128,128,17,57,105,32,64,64,128,128,128,64,64,32,17, + 57,105,128,64,64,32,32,32,64,64,128,2,87,103,32,168, + 112,32,112,168,32,3,85,101,32,32,248,32,32,1,51,99, + 96,96,192,5,81,97,248,18,34,98,192,192,2,87,103,8, + 16,16,32,64,64,128,18,71,103,96,144,144,144,144,144,96, + 18,55,103,64,192,64,64,64,64,224,2,87,103,112,136,8, + 16,32,64,248,2,87,103,248,8,16,48,8,136,112,2,87, + 103,16,48,80,144,248,16,16,2,87,103,248,128,240,8,8, + 136,112,2,87,103,48,64,128,240,136,136,112,2,87,103,248, + 8,16,16,32,32,32,2,87,103,112,136,136,112,136,136,112, + 2,87,103,112,136,136,120,8,16,96,18,37,101,192,192,0, + 192,192,1,54,102,96,96,0,96,96,192,19,53,101,32,64, + 128,64,32,4,83,99,248,0,248,19,53,101,128,64,32,64, + 128,2,87,103,112,136,16,32,32,0,32,2,87,103,112,136, + 184,168,184,128,112,2,87,103,112,136,136,248,136,136,136,2, + 87,103,240,72,72,112,72,72,240,2,87,103,112,136,128,128, + 128,136,112,2,87,103,240,72,72,72,72,72,240,2,87,103, + 248,128,128,240,128,128,248,2,87,103,248,128,128,240,128,128, + 128,2,87,103,112,136,128,128,152,136,112,2,87,103,136,136, + 136,248,136,136,136,18,55,103,224,64,64,64,64,64,224,2, + 87,103,56,16,16,16,16,144,96,2,87,103,136,144,160,192, + 160,144,136,2,87,103,128,128,128,128,128,128,248,2,87,103, + 136,216,168,136,136,136,136,2,87,103,136,136,200,168,152,136, + 136,2,87,103,112,136,136,136,136,136,112,2,87,103,240,136, + 136,240,128,128,128,2,87,103,112,136,136,136,168,144,104,2, + 87,103,240,136,136,240,160,144,136,2,87,103,112,136,128,112, + 8,136,112,2,87,103,248,32,32,32,32,32,32,2,87,103, + 136,136,136,136,136,136,112,2,87,103,136,136,136,136,80,80, + 32,2,87,103,136,136,136,136,168,168,80,2,87,103,136,136, + 80,32,80,136,136,2,87,103,136,136,80,32,32,32,32,2, + 87,103,248,8,16,32,64,128,248,17,57,105,224,128,128,128, + 128,128,128,128,224,2,87,103,128,64,64,32,16,16,8,17, + 57,105,224,32,32,32,32,32,32,32,224,7,83,99,32,80, + 136,0,81,97,248,23,51,99,128,64,32,2,85,101,112,8, + 120,136,120,2,87,103,128,128,240,136,136,136,240,2,85,101, + 112,136,128,136,112,2,87,103,8,8,120,136,136,136,120,2, + 85,101,112,136,240,128,112,2,87,103,48,72,64,224,64,64, + 64,0,87,103,112,136,136,136,120,8,112,2,87,103,128,128, + 240,136,136,136,136,18,55,103,64,0,192,64,64,64,224,16, + 73,105,16,0,48,16,16,16,16,144,96,2,87,103,128,128, + 136,144,224,144,136,18,55,103,192,64,64,64,64,64,224,2, + 85,101,208,168,168,168,168,2,85,101,176,200,136,136,136,2, + 85,101,112,136,136,136,112,0,87,103,240,136,136,136,240,128, + 128,0,87,103,120,136,136,136,120,8,8,2,85,101,176,200, + 128,128,128,2,85,101,120,128,112,8,240,2,87,103,32,32, + 248,32,32,32,24,2,85,101,136,136,136,152,104,2,85,101, + 136,136,136,80,32,2,85,101,136,136,168,168,80,2,85,101, + 136,80,32,80,136,0,87,103,136,136,136,80,32,64,128,2, + 85,101,248,16,32,64,248,17,57,105,32,64,64,64,128,64, + 64,64,32,33,25,105,128,128,128,128,128,128,128,128,128,17, + 57,105,128,64,64,64,32,64,64,64,128,4,83,99,72,168, + 144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 9 + Calculated Max Values w= 6 h=13 x= 5 y= 9 dx= 6 dy= 0 ascent=11 len=13 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[2236] U8G_SECTION(".progmem.u8g_font_6x13_67_75") = { + 1,6,13,0,254,3,1,73,2,147,32,255,0,11,254,9, + 0,3,101,101,80,40,252,40,80,2,89,105,32,32,32,32, + 168,112,168,112,32,3,101,101,36,72,240,72,36,3,101,101, + 144,72,60,72,144,3,85,101,32,72,248,72,32,2,89,105, + 32,112,168,32,32,32,32,32,248,3,85,101,32,144,248,144, + 32,2,89,105,248,32,32,32,32,32,168,112,32,2,89,105, + 32,112,168,32,32,168,112,32,248,3,101,101,40,68,248,64, + 32,3,101,101,80,136,124,8,16,3,101,101,32,76,252,72, + 40,3,101,101,16,200,252,72,80,4,100,100,72,220,236,72, + 3,101,101,8,88,252,104,64,2,89,105,128,128,144,176,208, + 144,16,56,16,2,89,105,32,64,248,72,40,8,8,8,8, + 2,89,105,32,16,248,144,160,128,128,128,128,2,89,105,8, + 8,8,8,40,72,248,64,32,2,89,105,128,128,128,128,160, + 144,248,16,32,3,85,101,240,16,16,56,16,3,86,102,8, + 8,8,72,248,64,3,85,101,48,72,72,232,72,3,85,101, + 96,144,144,184,144,2,89,105,248,128,224,192,160,32,16,16, + 8,2,89,105,160,192,248,192,168,24,248,24,40,3,86,102, + 56,48,168,136,136,112,3,86,102,224,96,168,136,136,112,5, + 83,99,32,64,248,3,83,99,248,64,32,34,57,105,128,192, + 160,128,128,128,128,128,128,2,57,105,32,96,160,32,32,32, + 32,32,32,5,83,99,32,16,248,3,83,99,248,16,32,34, + 57,105,128,128,128,128,128,128,160,192,128,2,57,105,32,32, + 32,32,32,32,160,96,32,2,89,105,32,16,248,16,32,64, + 248,64,32,2,89,105,80,240,80,80,80,80,80,120,80,2, + 89,105,32,64,248,64,32,16,248,16,32,2,89,105,32,64, + 248,64,32,64,248,64,32,2,89,105,80,248,80,80,80,80, + 80,80,80,2,89,105,32,16,248,16,32,16,248,16,32,2, + 89,105,80,80,80,80,80,80,80,248,80,2,87,103,32,64, + 248,0,248,16,32,2,87,103,32,16,248,0,248,64,32,2, + 103,103,20,40,124,144,124,32,80,2,103,103,8,88,252,164, + 252,104,64,2,103,103,160,80,248,36,248,16,40,2,103,103, + 16,32,124,128,124,32,16,2,89,105,32,80,216,80,80,80, + 80,80,80,2,103,103,32,16,248,4,248,16,32,2,89,105, + 80,80,80,80,80,80,216,80,32,3,101,101,72,252,132,252, + 72,2,89,105,32,80,216,80,80,80,216,80,32,3,102,102, + 248,160,208,168,148,8,3,102,102,124,20,44,84,164,64,3, + 102,102,64,164,84,44,20,124,3,102,102,8,148,168,208,160, + 248,2,103,103,16,60,64,252,64,60,16,2,103,103,32,240, + 8,252,8,240,32,4,100,100,64,232,212,64,4,100,100,8, + 92,172,8,2,89,105,32,112,168,32,112,32,112,32,32,2, + 89,105,32,32,112,32,112,32,168,112,32,3,85,101,32,64, + 168,64,32,2,89,105,32,112,168,0,32,32,0,32,32,3, + 85,101,32,16,168,16,32,2,89,105,32,32,0,32,32,0, + 168,112,32,3,85,101,160,192,248,192,160,3,85,101,40,24, + 248,24,40,3,85,101,32,120,136,120,32,2,89,105,32,80, + 216,80,80,80,80,80,112,3,85,101,32,240,136,240,32,2, + 89,105,112,80,80,80,80,80,216,80,32,2,90,106,32,80, + 216,80,80,112,0,112,80,112,2,89,105,32,80,216,80,80, + 80,216,136,248,2,89,105,32,80,248,136,80,80,216,136,248, + 2,89,105,32,112,248,112,112,112,248,168,248,2,89,105,32, + 80,216,80,216,80,80,80,112,2,89,105,32,80,216,80,216, + 80,216,136,248,3,85,101,160,240,136,240,160,3,88,104,248, + 128,176,224,144,16,8,8,2,88,104,128,128,64,72,56,104, + 8,248,2,89,105,32,80,216,80,80,80,216,80,32,3,101, + 101,16,104,252,104,16,2,89,105,80,120,80,80,80,80,80, + 240,80,2,89,105,16,248,16,16,248,16,16,248,16,3,101, + 101,40,72,252,72,40,3,101,101,80,72,252,72,80,4,101, + 101,48,120,252,120,48,3,101,101,56,88,252,88,56,3,101, + 101,112,104,252,104,112,4,101,101,48,120,252,120,48,3,85, + 101,32,96,184,96,32,3,85,101,32,48,232,48,32,4,101, + 101,48,120,180,120,48,7,102,102,252,252,252,252,252,252,0, + 98,98,252,252,0,99,99,252,252,252,0,101,101,252,252,252, + 252,252,0,103,103,252,252,252,252,252,252,252,0,104,104,252, + 252,252,252,252,252,252,252,0,106,106,252,252,252,252,252,252, + 252,252,252,252,0,107,107,252,252,252,252,252,252,252,252,252, + 252,252,0,109,109,252,252,252,252,252,252,252,252,252,252,252, + 252,252,0,93,109,248,248,248,248,248,248,248,248,248,248,248, + 248,248,0,77,109,240,240,240,240,240,240,240,240,240,240,240, + 240,240,0,77,109,240,240,240,240,240,240,240,240,240,240,240, + 240,240,0,61,109,224,224,224,224,224,224,224,224,224,224,224, + 224,224,0,45,109,192,192,192,192,192,192,192,192,192,192,192, + 192,192,0,45,109,192,192,192,192,192,192,192,192,192,192,192, + 192,192,0,29,109,128,128,128,128,128,128,128,128,128,128,128, + 128,128,48,61,109,224,224,224,224,224,224,224,224,224,224,224, + 224,224,0,109,109,168,0,84,0,168,0,84,0,168,0,84, + 0,168,0,109,109,168,84,168,84,168,84,168,84,168,84,168, + 84,168,0,109,109,84,252,168,252,84,252,168,252,84,252,168, + 252,84,11,98,98,252,252,80,29,109,128,128,128,128,128,128, + 128,128,128,128,128,128,128,0,55,103,224,224,224,224,224,224, + 224,48,55,103,224,224,224,224,224,224,224,7,54,102,224,224, + 224,224,224,224,0,109,109,224,224,224,224,224,224,252,252,252, + 252,252,252,252,0,109,109,224,224,224,224,224,224,28,28,28, + 28,28,28,28,0,109,109,252,252,252,252,252,252,224,224,224, + 224,224,224,224,0,109,109,252,252,252,252,252,252,28,28,28, + 28,28,28,28,55,54,102,224,224,224,224,224,224,0,109,109, + 28,28,28,28,28,28,224,224,224,224,224,224,224,0,109,109, + 28,28,28,28,28,28,252,252,252,252,252,252,252,3,85,101, + 248,248,248,248,248,3,85,101,248,136,136,136,248,3,85,101, + 112,136,136,136,112,3,85,101,248,136,168,136,248,2,85,101, + 248,136,248,136,248,2,85,101,248,168,168,168,248,2,85,101, + 248,168,248,168,248,2,85,101,248,200,168,152,248,2,85,101, + 248,152,168,200,248,2,85,101,248,216,168,216,248,21,51,99, + 224,224,224,21,51,99,224,160,224,4,101,101,252,252,252,252, + 252,4,101,101,252,132,132,132,252,17,75,107,240,240,240,240, + 240,240,240,240,240,240,240,17,75,107,240,144,144,144,144,144, + 144,144,144,144,240,5,99,99,60,120,240,5,99,99,60,72, + 240,2,89,105,32,32,32,112,112,112,248,248,248,2,89,105, + 32,32,32,80,80,80,136,136,248,4,85,101,32,32,112,112, + 248,4,85,101,32,32,80,80,248,2,89,105,128,192,224,240, + 248,240,224,192,128,2,89,105,128,192,160,144,136,144,160,192, + 128,20,53,101,128,192,224,192,128,20,53,101,128,192,160,192, + 128,4,101,101,192,240,252,240,192,4,101,101,192,176,140,176, + 192,2,89,105,248,248,248,112,112,112,32,32,32,2,89,105, + 248,136,136,80,80,80,32,32,32,3,85,101,248,112,112,32, + 32,3,85,101,248,80,80,32,32,2,89,105,8,24,56,120, + 248,120,56,24,8,2,89,105,8,24,40,72,136,72,40,24, + 8,20,53,101,32,96,224,96,32,20,53,101,32,96,160,96, + 32,4,101,101,12,60,252,60,12,4,101,101,12,52,196,52, + 12,4,85,101,32,112,248,112,32,4,85,101,32,80,136,80, + 32,4,85,101,32,80,168,80,32,3,102,102,48,72,180,180, + 72,48,2,89,105,32,32,80,80,136,80,80,32,32,3,102, + 102,48,72,132,132,72,48,3,102,102,32,8,128,4,64,16, + 2,85,101,112,168,168,168,112,2,87,103,112,136,168,216,168, + 136,112,3,102,102,48,120,252,252,120,48,3,102,102,48,104, + 228,228,104,48,3,102,102,48,88,156,156,88,48,3,102,102, + 48,72,132,252,120,48,3,102,102,48,120,252,132,72,48,3, + 102,102,48,88,156,132,72,48,3,102,102,48,88,156,252,120, + 48,18,90,106,8,56,120,120,248,248,120,120,56,8,2,90, + 106,128,224,240,240,248,248,240,240,224,128,0,109,109,252,252, + 252,252,252,204,132,132,204,252,252,252,252,0,109,109,252,252, + 252,252,204,180,120,120,180,204,252,252,252,6,103,103,252,252, + 252,252,204,180,120,0,102,102,120,180,204,252,252,252,6,51, + 99,32,64,128,54,51,99,128,64,32,51,51,99,32,64,128, + 3,51,99,128,64,32,6,99,99,48,72,132,3,99,99,132, + 72,48,3,85,101,8,24,56,120,248,3,85,101,128,192,224, + 240,248,3,85,101,248,240,224,192,128,3,85,101,248,120,56, + 24,8,4,85,101,112,136,136,136,112,3,85,101,248,232,232, + 232,248,3,85,101,248,184,184,184,248,3,85,101,248,248,232, + 200,248,3,85,101,248,152,184,248,248,3,85,101,248,168,168, + 168,248,2,89,105,32,32,32,80,80,112,168,136,248,2,89, + 105,32,32,32,112,112,112,232,232,248,2,89,105,32,32,32, + 112,112,112,184,184,248,2,103,103,48,72,132,132,132,72,48, + 3,85,101,248,168,232,136,248,3,85,101,248,136,232,168,248, + 3,85,101,248,136,184,168,248,3,85,101,248,168,184,136,248, + 3,85,101,112,168,232,136,112,3,85,101,112,136,232,168,112, + 3,85,101,112,136,184,168,112,3,85,101,112,168,184,136,112, + 3,85,101,248,144,160,192,128,3,85,101,248,72,40,24,8, + 3,85,101,128,192,160,144,248,20,68,100,240,144,144,240,20, + 68,100,240,240,240,240,20,68,100,240,144,144,240,20,68,100, + 240,240,240,240,3,85,101,8,24,40,72,248}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 3 + Calculated Max Values w= 6 h=11 x= 1 y= 3 dx= 6 dy= 0 ascent=10 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_75r[447] U8G_SECTION(".progmem.u8g_font_6x13_75r") = { + 1,6,13,0,254,9,1,57,0,0,32,79,0,10,255,9, + 0,3,85,101,248,248,248,248,248,3,85,101,248,136,136,136, + 248,3,85,101,112,136,136,136,112,3,85,101,248,136,168,136, + 248,2,85,101,248,136,248,136,248,2,85,101,248,168,168,168, + 248,2,85,101,248,168,248,168,248,2,85,101,248,200,168,152, + 248,2,85,101,248,152,168,200,248,2,85,101,248,216,168,216, + 248,21,51,99,224,224,224,21,51,99,224,160,224,4,101,101, + 252,252,252,252,252,4,101,101,252,132,132,132,252,17,75,107, + 240,240,240,240,240,240,240,240,240,240,240,17,75,107,240,144, + 144,144,144,144,144,144,144,144,240,5,99,99,60,120,240,5, + 99,99,60,72,240,2,89,105,32,32,32,112,112,112,248,248, + 248,2,89,105,32,32,32,80,80,80,136,136,248,4,85,101, + 32,32,112,112,248,4,85,101,32,32,80,80,248,2,89,105, + 128,192,224,240,248,240,224,192,128,2,89,105,128,192,160,144, + 136,144,160,192,128,20,53,101,128,192,224,192,128,20,53,101, + 128,192,160,192,128,4,101,101,192,240,252,240,192,4,101,101, + 192,176,140,176,192,2,89,105,248,248,248,112,112,112,32,32, + 32,2,89,105,248,136,136,80,80,80,32,32,32,3,85,101, + 248,112,112,32,32,3,85,101,248,80,80,32,32,2,89,105, + 8,24,56,120,248,120,56,24,8,2,89,105,8,24,40,72, + 136,72,40,24,8,20,53,101,32,96,224,96,32,20,53,101, + 32,96,160,96,32,4,101,101,12,60,252,60,12,4,101,101, + 12,52,196,52,12,4,85,101,32,112,248,112,32,4,85,101, + 32,80,136,80,32,4,85,101,32,80,168,80,32,3,102,102, + 48,72,180,180,72,48,2,89,105,32,32,80,80,136,80,80, + 32,32,3,102,102,48,72,132,132,72,48,3,102,102,32,8, + 128,4,64,16,2,85,101,112,168,168,168,112,2,87,103,112, + 136,168,216,168,136,112,3,102,102,48,120,252,252,120,48}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 6 h=13 x= 2 y= 5 dx= 6 dy= 0 ascent=11 len=13 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[1470] U8G_SECTION(".progmem.u8g_font_6x13_78_79") = { + 1,6,13,0,254,7,1,42,2,11,32,255,0,11,254,10, + 0,2,87,103,112,32,168,248,168,32,112,255,2,104,104,48, + 48,48,252,252,48,48,48,2,89,105,32,112,32,168,248,168, + 32,112,32,2,89,105,32,112,32,168,248,168,32,112,32,2, + 89,105,32,112,32,168,248,168,32,112,32,4,85,101,32,112, + 248,112,32,4,85,101,32,80,136,80,32,255,4,86,102,32, + 32,248,80,112,136,2,89,105,112,216,216,0,136,136,112,248, + 112,4,86,102,32,32,248,80,112,136,4,86,102,32,32,248, + 112,112,136,4,86,102,32,32,248,112,112,136,4,86,102,32, + 32,248,112,112,136,4,86,102,32,32,248,112,112,136,4,102, + 102,48,48,252,88,120,204,3,87,103,32,168,112,112,112,168, + 32,3,87,103,32,168,112,80,112,168,32,3,87,103,32,168, + 112,248,112,168,32,3,87,103,32,168,112,248,112,168,32,3, + 87,103,32,168,112,248,112,168,32,3,87,103,32,168,112,112, + 112,168,32,3,87,103,80,80,248,32,248,80,80,3,87,103, + 80,112,248,112,248,112,80,255,255,3,87,103,32,168,168,112, + 168,168,32,3,87,103,32,168,168,80,168,168,32,3,87,103, + 32,168,168,112,168,168,32,3,87,103,32,168,168,80,168,168, + 32,4,85,101,32,248,80,112,216,255,255,255,3,87,103,32, + 168,168,112,168,168,32,3,87,103,32,168,168,112,168,168,32, + 3,87,103,32,168,168,112,168,168,32,3,87,103,32,168,168, + 112,168,168,32,3,87,103,32,168,112,248,112,168,32,3,87, + 103,32,168,112,248,112,168,32,3,87,103,32,168,168,112,168, + 168,32,3,87,103,32,168,112,248,112,168,32,3,87,103,32, + 168,112,248,112,168,32,255,2,102,102,120,140,140,140,140,120, + 255,2,102,102,248,136,140,140,252,60,2,102,102,60,252,140, + 140,136,248,2,102,102,248,140,140,140,252,124,2,102,102,124, + 252,140,140,140,248,255,255,255,2,89,105,32,112,32,80,248, + 80,32,112,32,255,34,25,105,128,128,128,128,128,128,128,128, + 128,18,57,105,224,224,224,224,224,224,224,224,224,2,89,105, + 248,248,248,248,248,248,248,248,248,23,53,101,96,128,224,224, + 64,23,53,101,64,224,224,32,192,7,101,101,108,144,252,252, + 72,7,101,101,72,252,252,36,216,255,255,2,106,106,8,124, + 232,232,120,8,104,104,72,48,18,57,105,64,224,224,64,64, + 0,64,224,64,2,89,105,80,248,248,112,32,0,32,112,32, + 2,87,103,80,248,248,248,112,32,32,2,103,103,96,240,248, + 124,248,240,96,2,89,105,104,176,16,216,248,240,96,104,48, + 2,104,104,64,144,184,124,92,188,184,80,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,2,89,105,112,248,216,152, + 216,216,136,248,112,2,89,105,112,248,216,168,232,216,136,248, + 112,2,89,105,112,248,216,168,216,232,152,248,112,2,89,105, + 112,248,184,184,152,136,216,248,112,2,89,105,112,248,136,184, + 152,232,152,248,112,2,89,105,112,248,200,184,152,168,216,248, + 112,2,89,105,112,248,136,232,216,216,216,248,112,2,89,105, + 112,248,216,168,216,168,216,248,112,2,89,105,112,248,216,168, + 200,232,152,248,112,2,105,105,120,252,172,148,148,148,172,252, + 120,2,89,105,112,136,168,232,168,168,168,136,112,2,89,105, + 112,136,168,216,152,168,248,136,112,2,89,105,112,136,168,216, + 168,152,232,136,112,2,89,105,112,136,200,200,232,248,168,136, + 112,2,89,105,112,136,248,200,232,152,232,136,112,2,89,105, + 112,136,184,200,232,216,168,136,112,2,89,105,112,136,248,152, + 168,168,168,136,112,2,89,105,112,136,168,216,168,216,168,136, + 112,2,89,105,112,136,168,216,184,152,232,136,112,2,105,105, + 120,132,212,236,236,236,212,132,120,2,89,105,112,248,216,152, + 216,216,216,248,112,2,89,105,112,248,216,168,232,216,136,248, + 112,2,89,105,112,248,216,168,216,232,152,248,112,2,89,105, + 112,248,184,184,152,136,216,248,112,2,89,105,112,248,136,184, + 152,232,152,248,112,2,89,105,112,248,200,184,152,168,216,248, + 112,2,89,105,112,248,136,232,216,216,216,248,112,2,89,105, + 112,248,216,168,216,168,216,248,112,2,89,105,112,248,216,168, + 200,232,152,248,112,2,105,105,120,252,172,148,148,148,172,252, + 120,4,102,102,48,24,252,252,24,48,255,255,255,4,85,101, + 128,64,40,24,56,4,85,101,32,48,248,48,32,4,85,101, + 56,24,40,64,128,3,103,103,64,32,48,252,48,32,64,3, + 104,104,32,48,24,252,252,24,48,32,4,101,101,16,24,252, + 24,16,4,102,102,16,24,252,252,24,16,4,102,102,16,24, + 188,188,24,16,3,103,103,32,48,184,188,184,48,32,3,103, + 103,32,48,248,252,248,48,32,255,255,4,101,101,192,112,60, + 112,192,3,103,103,32,176,248,252,120,48,32,3,103,103,32, + 48,120,252,248,176,32,0,109,109,32,32,48,240,248,248,252, + 248,248,240,48,32,32,255,255,255,255,255,255,255,255,255,255, + 1,107,107,120,252,220,204,4,0,4,204,220,248,120,255,4, + 102,102,32,32,224,20,12,28,4,101,101,144,200,124,200,144, + 4,102,102,28,12,20,224,32,32,4,102,102,32,32,224,20, + 12,28,4,101,101,144,200,124,200,144,4,102,102,28,12,20, + 224,32,32,4,101,101,16,8,252,8,16,4,101,101,16,200, + 252,200,16,5,99,99,232,124,232,4,101,101,208,216,124,216, + 208,2,105,105,160,80,40,244,4,244,40,80,160,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,1,91,107,248,160,160,160,160,160,160,160,160, + 160,248,1,91,107,248,40,40,40,40,40,40,40,40,40,248, + 17,75,107,16,32,32,64,64,128,64,64,32,32,16,17,75, + 107,128,64,64,32,32,16,32,32,64,64,128,1,107,107,20, + 40,40,80,80,160,80,80,40,40,20,1,107,107,160,80,80, + 40,40,20,40,40,80,80,160,255,255,255,255,255,255,255,255, + 255,3,101,101,32,64,252,64,32,3,101,101,16,8,252,8, + 16,4,99,99,72,252,72,2,103,103,16,32,124,128,124,32, + 16,2,103,103,32,16,248,4,248,16,32,3,101,101,72,252, + 132,252,72,3,101,101,36,68,252,68,36,3,101,101,144,136, + 252,136,144,2,103,103,20,36,124,132,124,36,20,2,103,103, + 160,144,248,132,248,144,160,4,100,100,8,92,172,8}; +/* + Fontname: -Misc-Fixed-Bold-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13B[2171] U8G_SECTION(".progmem.u8g_font_6x13B") = { + 1,6,13,0,254,9,1,99,2,211,32,255,254,11,254,10, + 254,13,0,96,34,41,105,192,192,192,192,192,192,192,0,192, + 8,83,99,216,216,216,3,103,103,120,120,252,120,252,120,120, + 3,103,103,48,120,240,120,60,120,48,2,105,105,108,252,120, + 24,48,96,120,252,216,2,103,103,96,240,240,96,252,216,124, + 40,35,99,192,192,192,17,75,107,48,96,96,192,192,192,192, + 192,96,96,48,17,75,107,192,96,96,48,48,48,48,48,96, + 96,192,4,101,101,204,120,252,120,204,4,101,101,48,48,252, + 48,48,17,67,99,112,96,192,6,97,97,252,17,67,99,96, + 240,96,2,105,105,12,12,24,24,48,96,96,192,192,2,105, + 105,48,120,204,204,204,204,204,120,48,2,105,105,48,112,240, + 48,48,48,48,48,252,2,105,105,120,204,204,12,24,48,96, + 192,252,2,105,105,252,12,24,48,120,12,12,204,120,2,105, + 105,24,24,56,120,88,216,252,24,24,2,105,105,252,192,192, + 248,236,12,12,204,120,2,105,105,56,96,192,192,248,236,204, + 204,120,2,105,105,252,12,24,24,48,48,96,96,96,2,105, + 105,120,204,204,204,120,204,204,204,120,2,105,105,120,204,204, + 220,124,12,12,24,112,18,72,104,96,240,96,0,0,96,240, + 96,17,72,104,96,240,96,0,0,112,96,192,2,105,105,12, + 24,48,96,192,96,48,24,12,4,100,100,252,0,0,252,2, + 105,105,192,96,48,24,12,24,48,96,192,2,105,105,120,204, + 204,12,24,48,48,0,48,2,105,105,120,204,204,220,252,252, + 248,192,124,2,105,105,48,120,204,204,204,252,204,204,204,2, + 105,105,248,108,108,108,120,108,108,108,248,2,105,105,120,204, + 192,192,192,192,192,204,120,2,105,105,248,108,108,108,108,108, + 108,108,248,2,105,105,252,192,192,192,248,192,192,192,252,2, + 105,105,252,192,192,192,248,192,192,192,192,2,105,105,120,204, + 192,192,192,220,204,204,120,2,105,105,204,204,204,204,252,204, + 204,204,204,18,73,105,240,96,96,96,96,96,96,96,240,2, + 105,105,60,12,12,12,12,12,12,204,120,2,105,105,204,204, + 216,240,224,240,216,204,204,2,105,105,192,192,192,192,192,192, + 192,192,252,2,105,105,204,204,252,252,252,204,204,204,204,2, + 105,105,204,236,236,252,252,220,220,204,204,2,105,105,120,204, + 204,204,204,204,204,204,120,2,105,105,248,204,204,204,248,192, + 192,192,192,1,106,106,120,204,204,204,204,204,204,252,120,12, + 2,105,105,248,204,204,204,248,240,216,204,204,2,105,105,120, + 204,192,192,120,12,12,204,120,2,105,105,252,48,48,48,48, + 48,48,48,48,2,105,105,204,204,204,204,204,204,204,204,120, + 2,105,105,204,204,204,204,120,120,120,48,48,2,105,105,204, + 204,204,204,252,252,252,252,204,2,105,105,204,204,120,120,48, + 120,120,204,204,2,105,105,204,204,120,120,48,48,48,48,48, + 2,105,105,252,12,24,24,48,96,96,192,252,17,75,107,240, + 192,192,192,192,192,192,192,192,192,240,2,105,105,192,192,96, + 96,48,24,24,12,12,17,75,107,240,48,48,48,48,48,48, + 48,48,48,240,8,99,99,48,120,204,1,97,97,252,26,50, + 98,192,96,2,102,102,120,12,124,204,220,108,2,105,105,192, + 192,192,216,236,204,204,236,216,2,102,102,120,204,192,192,204, + 120,2,105,105,12,12,12,108,220,204,204,220,108,2,102,102, + 120,204,252,192,192,120,2,105,105,56,108,96,96,248,96,96, + 96,96,0,104,104,124,216,216,112,192,120,204,120,2,105,105, + 192,192,192,216,236,204,204,204,204,18,73,105,96,96,0,224, + 96,96,96,96,240,0,91,107,24,24,0,56,24,24,24,24, + 216,216,112,2,105,105,192,192,192,216,240,224,240,216,204,18, + 73,105,224,96,96,96,96,96,96,96,240,2,102,102,248,252, + 252,252,252,204,2,102,102,216,236,204,204,204,204,2,102,102, + 120,204,204,204,204,120,0,104,104,216,236,204,236,216,192,192, + 192,0,104,104,108,220,204,220,108,12,12,12,2,102,102,216, + 236,192,192,192,192,2,102,102,120,204,112,24,204,120,2,104, + 104,96,96,248,96,96,96,108,56,2,102,102,204,204,204,204, + 220,108,2,102,102,204,204,204,120,120,48,2,102,102,204,204, + 252,252,252,72,2,102,102,204,120,48,48,120,204,0,104,104, + 204,204,204,220,108,12,204,120,2,102,102,252,24,48,96,192, + 252,1,91,107,56,96,96,96,48,224,48,96,96,96,56,34, + 41,105,192,192,192,192,192,192,192,192,192,1,91,107,224,48, + 48,48,96,56,96,48,48,48,224,8,83,99,104,248,144,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 13,0,96,34,42,106,192,192,0,192,192,192,192,192,192,192, + 3,104,104,16,120,212,208,208,212,120,16,2,105,105,56,108, + 96,96,248,96,96,100,248,3,102,102,204,252,72,72,252,204, + 2,105,105,204,204,120,120,252,48,252,48,48,34,42,106,192, + 192,192,192,0,0,192,192,192,192,2,106,106,120,204,192,120, + 204,204,120,12,204,120,9,98,98,204,204,2,105,105,120,204, + 180,236,228,236,180,204,120,4,103,103,248,12,252,140,252,0, + 252,3,103,103,52,104,208,160,208,104,52,4,100,100,252,252, + 4,4,22,65,97,240,2,105,105,120,204,188,172,188,180,172, + 204,120,9,82,98,248,248,7,100,100,120,204,204,120,2,105, + 105,48,48,252,252,48,48,0,252,252,6,70,102,224,176,48, + 96,192,240,6,70,102,224,176,96,48,176,224,26,50,98,96, + 192,0,104,104,204,204,204,204,204,252,128,128,2,105,105,124, + 252,244,244,244,116,52,52,52,38,34,98,192,192,16,50,98, + 96,192,6,70,102,96,224,96,96,96,240,5,87,103,112,248, + 136,248,112,0,248,3,103,103,176,88,44,20,44,88,176,2, + 106,106,96,224,96,96,100,252,28,52,60,12,2,106,106,96, + 224,96,96,120,236,12,24,48,60,2,106,106,224,176,96,48, + 180,236,28,52,60,12,2,106,106,48,48,0,48,48,96,192, + 204,204,120,2,106,106,96,48,0,48,120,204,204,252,204,204, + 2,106,106,24,48,0,48,120,204,204,252,204,204,2,106,106, + 56,108,0,48,120,204,204,252,204,204,2,106,106,52,88,0, + 48,120,204,204,252,204,204,2,106,106,204,204,0,48,120,204, + 204,252,204,204,2,106,106,48,72,120,48,120,204,204,252,204, + 204,2,105,105,124,176,176,176,184,240,240,176,188,0,107,107, + 120,204,192,192,192,192,192,204,120,48,96,2,106,106,96,48, + 0,252,192,192,248,192,192,252,2,106,106,24,48,0,252,192, + 192,248,192,192,252,2,106,106,56,108,0,252,192,192,248,192, + 192,252,2,106,106,204,204,0,252,192,192,248,192,192,252,18, + 74,106,192,96,0,240,96,96,96,96,96,240,18,74,106,48, + 96,0,240,96,96,96,96,96,240,2,90,106,112,216,0,120, + 48,48,48,48,48,120,2,106,106,204,204,0,120,48,48,48, + 48,48,120,2,105,105,248,108,108,108,236,108,108,108,248,2, + 106,106,52,88,0,204,236,236,252,220,220,204,2,106,106,96, + 48,0,120,204,204,204,204,204,120,2,106,106,24,48,0,120, + 204,204,204,204,204,120,2,106,106,56,108,0,120,204,204,204, + 204,204,120,2,106,106,52,88,0,120,204,204,204,204,204,120, + 2,106,106,204,204,0,120,204,204,204,204,204,120,3,101,101, + 204,120,48,120,204,1,105,105,4,120,220,220,204,236,236,120, + 128,2,106,106,96,48,0,204,204,204,204,204,204,120,2,106, + 106,24,48,0,204,204,204,204,204,204,120,2,106,106,56,108, + 0,204,204,204,204,204,204,120,2,106,106,108,108,0,204,204, + 204,204,204,204,120,2,106,106,24,48,0,204,72,120,48,48, + 48,48,2,105,105,192,248,204,204,204,248,192,192,192,1,105, + 105,120,204,204,248,204,204,204,248,128,2,105,105,96,48,0, + 120,12,124,204,220,108,2,105,105,24,48,0,120,12,124,204, + 220,108,2,105,105,56,108,0,120,12,124,204,220,108,2,105, + 105,52,88,0,120,12,124,204,220,108,2,105,105,108,108,0, + 120,12,124,204,220,108,2,106,106,56,40,56,0,120,12,124, + 204,220,108,2,102,102,120,52,120,176,180,104,0,104,104,120, + 204,192,192,204,120,48,96,2,105,105,96,48,0,120,204,252, + 192,192,120,2,105,105,24,48,0,120,204,252,192,192,120,2, + 105,105,56,108,0,120,204,252,192,192,120,2,105,105,108,108, + 0,120,204,252,192,192,120,18,73,105,192,96,0,224,96,96, + 96,96,240,18,73,105,48,96,0,224,96,96,96,96,240,2, + 89,105,112,216,0,112,48,48,48,48,120,2,89,105,216,216, + 0,112,48,48,48,48,120,2,106,106,216,112,240,152,120,204, + 204,204,204,120,2,105,105,52,88,0,216,236,204,204,204,204, + 2,105,105,96,48,0,120,204,204,204,204,120,2,105,105,24, + 48,0,120,204,204,204,204,120,2,105,105,56,108,0,120,204, + 204,204,204,120,2,105,105,52,88,0,120,204,204,204,204,120, + 2,105,105,204,204,0,120,204,204,204,204,120,3,103,103,48, + 48,0,252,0,48,48,1,105,105,4,120,204,220,204,236,204, + 120,128,2,105,105,96,48,0,204,204,204,204,220,108,2,105, + 105,24,48,0,204,204,204,204,220,108,2,105,105,56,108,0, + 204,204,204,204,220,108,2,105,105,204,204,0,204,204,204,204, + 220,108,0,107,107,24,48,0,204,204,204,220,108,12,204,120, + 0,106,106,192,192,216,236,204,236,216,192,192,192,0,107,107, + 204,204,0,204,204,204,220,108,12,204,120}; +/* + Fontname: -Misc-Fixed-Bold-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13Br[1040] U8G_SECTION(".progmem.u8g_font_6x13Br") = { + 1,6,13,0,254,9,1,99,2,211,32,127,254,11,254,10, + 254,13,0,96,34,41,105,192,192,192,192,192,192,192,0,192, + 8,83,99,216,216,216,3,103,103,120,120,252,120,252,120,120, + 3,103,103,48,120,240,120,60,120,48,2,105,105,108,252,120, + 24,48,96,120,252,216,2,103,103,96,240,240,96,252,216,124, + 40,35,99,192,192,192,17,75,107,48,96,96,192,192,192,192, + 192,96,96,48,17,75,107,192,96,96,48,48,48,48,48,96, + 96,192,4,101,101,204,120,252,120,204,4,101,101,48,48,252, + 48,48,17,67,99,112,96,192,6,97,97,252,17,67,99,96, + 240,96,2,105,105,12,12,24,24,48,96,96,192,192,2,105, + 105,48,120,204,204,204,204,204,120,48,2,105,105,48,112,240, + 48,48,48,48,48,252,2,105,105,120,204,204,12,24,48,96, + 192,252,2,105,105,252,12,24,48,120,12,12,204,120,2,105, + 105,24,24,56,120,88,216,252,24,24,2,105,105,252,192,192, + 248,236,12,12,204,120,2,105,105,56,96,192,192,248,236,204, + 204,120,2,105,105,252,12,24,24,48,48,96,96,96,2,105, + 105,120,204,204,204,120,204,204,204,120,2,105,105,120,204,204, + 220,124,12,12,24,112,18,72,104,96,240,96,0,0,96,240, + 96,17,72,104,96,240,96,0,0,112,96,192,2,105,105,12, + 24,48,96,192,96,48,24,12,4,100,100,252,0,0,252,2, + 105,105,192,96,48,24,12,24,48,96,192,2,105,105,120,204, + 204,12,24,48,48,0,48,2,105,105,120,204,204,220,252,252, + 248,192,124,2,105,105,48,120,204,204,204,252,204,204,204,2, + 105,105,248,108,108,108,120,108,108,108,248,2,105,105,120,204, + 192,192,192,192,192,204,120,2,105,105,248,108,108,108,108,108, + 108,108,248,2,105,105,252,192,192,192,248,192,192,192,252,2, + 105,105,252,192,192,192,248,192,192,192,192,2,105,105,120,204, + 192,192,192,220,204,204,120,2,105,105,204,204,204,204,252,204, + 204,204,204,18,73,105,240,96,96,96,96,96,96,96,240,2, + 105,105,60,12,12,12,12,12,12,204,120,2,105,105,204,204, + 216,240,224,240,216,204,204,2,105,105,192,192,192,192,192,192, + 192,192,252,2,105,105,204,204,252,252,252,204,204,204,204,2, + 105,105,204,236,236,252,252,220,220,204,204,2,105,105,120,204, + 204,204,204,204,204,204,120,2,105,105,248,204,204,204,248,192, + 192,192,192,1,106,106,120,204,204,204,204,204,204,252,120,12, + 2,105,105,248,204,204,204,248,240,216,204,204,2,105,105,120, + 204,192,192,120,12,12,204,120,2,105,105,252,48,48,48,48, + 48,48,48,48,2,105,105,204,204,204,204,204,204,204,204,120, + 2,105,105,204,204,204,204,120,120,120,48,48,2,105,105,204, + 204,204,204,252,252,252,252,204,2,105,105,204,204,120,120,48, + 120,120,204,204,2,105,105,204,204,120,120,48,48,48,48,48, + 2,105,105,252,12,24,24,48,96,96,192,252,17,75,107,240, + 192,192,192,192,192,192,192,192,192,240,2,105,105,192,192,96, + 96,48,24,24,12,12,17,75,107,240,48,48,48,48,48,48, + 48,48,48,240,8,99,99,48,120,204,1,97,97,252,26,50, + 98,192,96,2,102,102,120,12,124,204,220,108,2,105,105,192, + 192,192,216,236,204,204,236,216,2,102,102,120,204,192,192,204, + 120,2,105,105,12,12,12,108,220,204,204,220,108,2,102,102, + 120,204,252,192,192,120,2,105,105,56,108,96,96,248,96,96, + 96,96,0,104,104,124,216,216,112,192,120,204,120,2,105,105, + 192,192,192,216,236,204,204,204,204,18,73,105,96,96,0,224, + 96,96,96,96,240,0,91,107,24,24,0,56,24,24,24,24, + 216,216,112,2,105,105,192,192,192,216,240,224,240,216,204,18, + 73,105,224,96,96,96,96,96,96,96,240,2,102,102,248,252, + 252,252,252,204,2,102,102,216,236,204,204,204,204,2,102,102, + 120,204,204,204,204,120,0,104,104,216,236,204,236,216,192,192, + 192,0,104,104,108,220,204,220,108,12,12,12,2,102,102,216, + 236,192,192,192,192,2,102,102,120,204,112,24,204,120,2,104, + 104,96,96,248,96,96,96,108,56,2,102,102,204,204,204,204, + 220,108,2,102,102,204,204,204,120,120,48,2,102,102,204,204, + 252,252,252,72,2,102,102,204,120,48,48,120,204,0,104,104, + 204,204,204,220,108,12,204,120,2,102,102,252,24,48,96,192, + 252,1,91,107,56,96,96,96,48,224,48,96,96,96,56,34, + 41,105,192,192,192,192,192,192,192,192,192,1,91,107,224,48, + 48,48,96,56,96,48,48,48,224,8,83,99,104,248,144,255 + }; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 5 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13[2160] U8G_SECTION(".progmem.u8g_font_6x13") = { + 1,6,13,0,254,9,1,102,2,214,32,255,254,11,254,10, + 254,13,0,96,34,25,105,128,128,128,128,128,128,128,0,128, + 24,51,99,160,160,160,3,87,103,80,80,248,80,248,80,80, + 2,89,105,32,120,160,160,112,40,40,240,32,2,89,105,72, + 168,80,16,32,64,80,168,144,2,88,104,64,160,160,64,160, + 152,144,104,40,19,99,128,128,128,17,59,107,32,64,64,128, + 128,128,128,128,64,64,32,17,59,107,128,64,64,32,32,32, + 32,32,64,64,128,6,85,101,32,168,112,168,32,4,85,101, + 32,32,248,32,32,17,51,99,96,64,128,6,81,97,248,17, + 51,99,64,224,64,2,89,105,8,8,16,16,32,64,64,128, + 128,2,89,105,32,80,136,136,136,136,136,80,32,2,89,105, + 32,96,160,32,32,32,32,32,248,2,89,105,112,136,136,8, + 16,32,64,128,248,2,89,105,248,8,16,32,112,8,8,136, + 112,2,89,105,16,16,48,80,80,144,248,16,16,2,89,105, + 248,128,128,176,200,8,8,136,112,2,89,105,112,136,128,128, + 240,136,136,136,112,2,89,105,248,8,16,16,32,32,64,64, + 64,2,89,105,112,136,136,136,112,136,136,136,112,2,89,105, + 112,136,136,136,120,8,8,136,112,17,56,104,64,224,64,0, + 0,64,224,64,17,56,104,64,224,64,0,0,96,64,128,2, + 89,105,8,16,32,64,128,64,32,16,8,4,84,100,248,0, + 0,248,2,89,105,128,64,32,16,8,16,32,64,128,2,89, + 105,112,136,136,8,16,32,32,0,32,2,89,105,112,136,136, + 152,168,168,176,128,120,2,89,105,32,80,136,136,136,248,136, + 136,136,2,89,105,240,72,72,72,112,72,72,72,240,2,89, + 105,112,136,128,128,128,128,128,136,112,2,89,105,240,72,72, + 72,72,72,72,72,240,2,89,105,248,128,128,128,240,128,128, + 128,248,2,89,105,248,128,128,128,240,128,128,128,128,2,89, + 105,112,136,128,128,128,152,136,136,112,2,89,105,136,136,136, + 136,248,136,136,136,136,18,57,105,224,64,64,64,64,64,64, + 64,224,2,89,105,56,16,16,16,16,16,16,144,96,2,89, + 105,136,136,144,160,192,160,144,136,136,2,89,105,128,128,128, + 128,128,128,128,128,248,2,89,105,136,136,216,168,168,136,136, + 136,136,2,89,105,136,200,200,168,168,152,152,136,136,2,89, + 105,112,136,136,136,136,136,136,136,112,2,89,105,240,136,136, + 136,240,128,128,128,128,1,90,106,112,136,136,136,136,136,136, + 168,112,8,2,89,105,240,136,136,136,240,160,144,136,136,2, + 89,105,112,136,128,128,112,8,8,136,112,2,89,105,248,32, + 32,32,32,32,32,32,32,2,89,105,136,136,136,136,136,136, + 136,136,112,2,89,105,136,136,136,136,80,80,80,32,32,2, + 89,105,136,136,136,136,168,168,168,168,80,2,89,105,136,136, + 80,80,32,80,80,136,136,2,89,105,136,136,80,80,32,32, + 32,32,32,2,89,105,248,8,16,16,32,64,64,128,248,17, + 59,107,224,128,128,128,128,128,128,128,128,128,224,2,89,105, + 128,128,64,64,32,16,16,8,8,17,59,107,224,32,32,32, + 32,32,32,32,32,32,224,8,83,99,32,80,136,1,81,97, + 248,42,34,98,128,64,2,86,102,112,8,120,136,152,104,2, + 89,105,128,128,128,240,136,136,136,136,240,2,86,102,112,136, + 128,128,136,112,2,89,105,8,8,8,120,136,136,136,136,120, + 2,86,102,112,136,248,128,136,112,2,89,105,48,72,64,64, + 240,64,64,64,64,0,88,104,112,136,136,136,120,8,136,112, + 2,89,105,128,128,128,176,200,136,136,136,136,18,56,104,64, + 0,192,64,64,64,64,224,0,74,106,16,0,48,16,16,16, + 16,144,144,96,2,89,105,128,128,128,144,160,192,160,144,136, + 18,57,105,192,64,64,64,64,64,64,64,224,2,86,102,208, + 168,168,168,168,136,2,86,102,176,200,136,136,136,136,2,86, + 102,112,136,136,136,136,112,0,88,104,240,136,136,136,240,128, + 128,128,0,88,104,120,136,136,136,120,8,8,8,2,86,102, + 176,200,128,128,128,128,2,86,102,112,136,96,16,136,112,2, + 88,104,64,64,240,64,64,64,72,48,2,86,102,136,136,136, + 136,152,104,2,86,102,136,136,136,80,80,32,2,86,102,136, + 136,168,168,168,80,2,86,102,136,80,32,32,80,136,0,88, + 104,136,136,136,152,104,8,136,112,2,86,102,248,16,32,64, + 128,248,1,91,107,24,32,32,32,32,192,32,32,32,32,24, + 34,25,105,128,128,128,128,128,128,128,128,128,1,91,107,192, + 32,32,32,32,24,32,32,32,32,192,8,83,99,72,168,144, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,13,0,96,34,25,105,128,0,128,128,128,128,128,128,128, + 3,88,104,32,112,168,160,160,168,112,32,2,89,105,48,72, + 64,64,224,64,64,72,176,3,86,102,136,112,80,80,112,136, + 2,89,105,136,136,80,80,248,32,248,32,32,34,25,105,128, + 128,128,128,0,128,128,128,128,18,74,106,96,144,128,96,144, + 144,96,16,144,96,26,50,98,160,160,3,89,105,112,136,168, + 216,200,216,168,136,112,4,87,103,112,8,120,136,120,0,248, + 3,86,102,40,80,160,160,80,40,4,83,99,248,8,8,22, + 49,97,224,3,89,105,112,136,232,216,216,232,216,136,112,10, + 81,97,248,23,68,100,96,144,144,96,3,87,103,32,32,248, + 32,32,0,248,7,53,101,64,160,32,64,224,7,53,101,64, + 160,64,32,192,42,34,98,64,128,0,88,104,136,136,136,136, + 152,232,128,128,2,89,105,120,232,232,232,232,104,40,40,40, + 38,33,97,192,32,34,98,64,128,7,53,101,64,192,64,64, + 224,4,87,103,112,136,136,136,112,0,248,3,86,102,160,80, + 40,40,80,160,2,90,106,64,192,64,64,224,8,24,40,56, + 8,2,90,106,64,192,64,64,224,16,40,8,16,56,2,90, + 106,64,160,64,32,160,72,24,40,56,8,2,89,105,32,0, + 32,32,64,128,136,136,112,2,90,106,64,32,0,32,80,136, + 136,248,136,136,2,90,106,16,32,0,32,80,136,136,248,136, + 136,2,90,106,48,72,0,32,80,136,136,248,136,136,2,90, + 106,40,80,0,32,80,136,136,248,136,136,2,90,106,80,80, + 0,32,80,136,136,248,136,136,2,90,106,32,80,32,32,80, + 136,136,248,136,136,2,89,105,88,160,160,160,176,224,160,160, + 184,0,91,107,112,136,128,128,128,128,128,136,112,32,64,2, + 90,106,64,32,0,248,128,128,240,128,128,248,2,90,106,16, + 32,0,248,128,128,240,128,128,248,2,90,106,48,72,0,248, + 128,128,240,128,128,248,2,90,106,80,80,0,248,128,128,240, + 128,128,248,18,58,106,128,64,0,224,64,64,64,64,64,224, + 18,58,106,32,64,0,224,64,64,64,64,64,224,18,74,106, + 96,144,0,224,64,64,64,64,64,224,18,58,106,160,160,0, + 224,64,64,64,64,64,224,2,89,105,240,72,72,72,232,72, + 72,72,240,2,90,106,40,80,0,136,136,200,168,152,136,136, + 2,90,106,64,32,0,112,136,136,136,136,136,112,2,90,106, + 16,32,0,112,136,136,136,136,136,112,2,90,106,48,72,0, + 112,136,136,136,136,136,112,2,90,106,40,80,0,112,136,136, + 136,136,136,112,2,90,106,80,80,0,112,136,136,136,136,136, + 112,3,85,101,136,80,32,80,136,1,91,107,8,112,152,152, + 168,168,168,200,200,112,128,2,90,106,64,32,0,136,136,136, + 136,136,136,112,2,90,106,16,32,0,136,136,136,136,136,136, + 112,2,90,106,48,72,0,136,136,136,136,136,136,112,2,90, + 106,80,80,0,136,136,136,136,136,136,112,2,90,106,16,32, + 0,136,136,80,32,32,32,32,2,89,105,128,240,136,136,136, + 240,128,128,128,2,89,105,96,144,144,160,160,144,136,136,176, + 2,89,105,64,32,0,112,8,120,136,152,104,2,89,105,16, + 32,0,112,8,120,136,152,104,2,89,105,48,72,0,112,8, + 120,136,152,104,2,89,105,40,80,0,112,8,120,136,152,104, + 2,89,105,80,80,0,112,8,120,136,152,104,2,90,106,48, + 72,48,0,112,8,120,136,152,104,2,86,102,112,40,112,160, + 168,80,0,88,104,112,136,128,128,136,112,32,64,2,89,105, + 64,32,0,112,136,248,128,136,112,2,89,105,16,32,0,112, + 136,248,128,136,112,2,89,105,48,72,0,112,136,248,128,136, + 112,2,89,105,80,80,0,112,136,248,128,136,112,18,57,105, + 128,64,0,192,64,64,64,64,224,18,57,105,32,64,0,192, + 64,64,64,64,224,18,73,105,96,144,0,192,64,64,64,64, + 224,18,57,105,160,160,0,192,64,64,64,64,224,2,90,106, + 80,32,96,16,112,136,136,136,136,112,2,89,105,40,80,0, + 176,200,136,136,136,136,2,89,105,64,32,0,112,136,136,136, + 136,112,2,89,105,16,32,0,112,136,136,136,136,112,2,89, + 105,48,72,0,112,136,136,136,136,112,2,89,105,40,80,0, + 112,136,136,136,136,112,2,89,105,80,80,0,112,136,136,136, + 136,112,3,87,103,32,32,0,248,0,32,32,1,88,104,8, + 112,152,168,168,200,112,128,2,89,105,64,32,0,136,136,136, + 136,152,104,2,89,105,16,32,0,136,136,136,136,152,104,2, + 89,105,48,72,0,136,136,136,136,152,104,2,89,105,80,80, + 0,136,136,136,136,152,104,0,91,107,16,32,0,136,136,136, + 152,104,8,136,112,0,90,106,128,128,176,200,136,136,200,176, + 128,128,0,91,107,80,80,0,136,136,136,152,104,8,136,112 + }; +/* + Fontname: -Misc-Fixed-Medium-O-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13O[2162] U8G_SECTION(".progmem.u8g_font_6x13O") = { + 1,6,13,0,254,9,1,104,2,216,32,255,254,11,254,10, + 254,13,0,96,34,41,105,64,64,64,64,128,128,128,0,128, + 40,67,99,80,80,160,3,103,103,40,40,124,40,248,80,80, + 2,105,105,16,60,80,80,56,36,40,240,32,2,105,105,36, + 84,40,8,16,32,80,168,144,2,104,104,16,40,40,48,80, + 148,152,104,56,35,99,64,64,128,17,75,107,16,32,64,64, + 128,128,128,128,64,64,32,17,75,107,64,32,32,16,16,16, + 16,32,32,64,128,3,103,103,16,84,124,56,124,168,32,20, + 69,101,32,32,240,64,64,17,51,99,96,64,128,22,65,97, + 240,17,51,99,64,224,64,2,105,105,4,4,8,16,16,32, + 64,128,128,2,105,105,16,40,68,68,68,136,136,80,32,2, + 89,105,16,48,80,16,16,32,32,32,248,2,105,105,56,68, + 68,8,16,32,64,128,248,2,105,105,124,4,8,16,56,4, + 8,136,112,2,89,105,8,8,24,40,40,72,248,16,16,2, + 105,105,124,64,64,88,100,4,8,136,112,2,105,105,56,68, + 64,64,112,136,136,136,112,18,89,105,248,8,16,16,32,64, + 64,128,128,2,105,105,56,68,68,68,120,136,136,136,112,2, + 105,105,56,68,68,68,56,8,8,136,112,17,72,104,32,112, + 32,0,0,64,224,64,17,72,104,32,112,32,0,0,96,64, + 128,18,89,105,8,16,32,64,128,64,64,32,16,4,100,100, + 124,0,0,248,2,105,105,64,32,16,8,4,8,48,64,128, + 18,89,105,112,136,136,8,16,32,64,0,64,2,105,105,56, + 68,68,88,168,168,144,128,120,2,105,105,16,40,68,68,68, + 248,136,136,136,2,105,105,120,36,36,36,56,72,72,72,240, + 2,105,105,56,68,64,64,64,128,128,136,112,2,105,105,120, + 36,36,36,36,72,72,72,240,2,105,105,124,64,64,64,120, + 128,128,128,248,2,105,105,124,64,64,64,120,128,128,128,128, + 2,105,105,56,68,64,64,64,152,136,136,112,2,105,105,68, + 68,68,68,124,136,136,136,136,18,73,105,112,32,32,32,32, + 64,64,64,224,2,105,105,28,8,8,8,8,16,16,144,96, + 2,105,105,68,68,72,80,96,160,144,136,136,2,89,105,64, + 64,64,64,64,128,128,128,248,2,105,105,68,68,108,84,84, + 136,136,136,136,2,105,105,68,100,100,84,84,152,136,136,136, + 2,105,105,56,68,68,68,68,136,136,136,112,2,105,105,120, + 68,68,68,120,128,128,128,128,1,106,106,56,68,68,68,68, + 136,136,168,112,8,2,105,105,120,68,68,68,120,144,144,136, + 136,2,105,105,56,68,64,64,48,8,8,136,112,18,89,105, + 248,32,32,32,32,64,64,64,64,2,105,105,68,68,68,68, + 68,136,136,136,112,18,89,105,136,136,136,136,144,144,160,160, + 64,2,105,105,68,68,68,68,168,168,168,168,80,2,105,105, + 68,68,40,40,16,48,72,136,136,18,89,105,136,136,80,80, + 32,32,64,64,64,2,105,105,124,4,8,8,16,32,64,128, + 248,1,91,107,56,32,32,32,64,64,64,128,128,128,224,18, + 73,105,128,128,64,64,64,32,32,16,16,1,91,107,56,8, + 8,8,16,16,16,32,32,32,224,24,83,99,32,80,136,1, + 81,97,248,58,34,98,128,64,2,102,102,56,4,124,136,152, + 104,2,105,105,64,64,64,120,68,136,136,136,240,2,102,102, + 56,68,128,128,136,112,2,105,105,4,4,4,60,68,136,136, + 136,120,2,102,102,56,68,124,128,136,112,18,89,105,48,72, + 64,64,240,64,128,128,128,0,104,104,56,68,68,136,120,8, + 136,112,2,105,105,32,32,32,88,100,68,136,136,136,18,56, + 104,32,0,96,32,32,64,64,224,0,90,106,8,0,24,8, + 8,16,16,144,144,96,2,89,105,32,32,32,72,80,96,160, + 144,136,18,73,105,48,16,16,32,32,32,64,64,224,2,102, + 102,104,84,84,168,168,136,2,102,102,88,100,68,136,136,136, + 2,102,102,56,68,68,136,136,112,0,104,104,120,68,68,136, + 240,128,128,128,0,104,104,60,68,132,136,120,8,16,16,2, + 102,102,88,100,64,128,128,128,2,102,102,56,68,32,16,136, + 112,18,72,104,32,32,240,64,64,128,144,96,2,102,102,68, + 68,136,136,152,104,18,86,102,136,136,136,144,160,64,2,102, + 102,68,68,84,168,168,80,2,102,102,68,40,16,32,80,136, + 0,104,104,68,68,136,152,104,8,144,96,2,102,102,124,8, + 16,96,128,248,1,91,107,24,32,32,32,32,192,32,64,64, + 64,48,34,41,105,64,64,64,64,64,128,128,128,128,1,107, + 107,96,16,16,16,16,12,16,32,32,32,192,24,83,99,72, + 168,144,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,13,0,96,34,41,105,64,0,64,64,64,128,128, + 128,128,3,104,104,16,56,84,80,160,168,112,32,2,105,105, + 24,36,32,32,112,32,64,72,176,3,102,102,68,56,40,80, + 112,136,2,105,105,68,68,40,40,124,32,248,32,32,34,41, + 105,64,64,64,64,0,128,128,128,128,18,90,106,48,72,64, + 48,72,72,48,16,144,96,58,50,98,160,160,2,105,105,56, + 68,84,108,100,216,168,136,112,4,103,103,56,4,124,136,120, + 0,248,19,86,102,40,80,160,160,160,80,20,83,99,248,8, + 16,38,49,97,224,3,105,105,56,68,116,108,108,232,216,136, + 112,26,81,97,248,23,68,100,96,144,144,96,19,71,103,32, + 32,240,64,64,0,240,23,69,101,32,80,32,64,224,23,69, + 101,96,16,96,32,192,58,34,98,64,128,0,104,104,36,36, + 68,72,88,168,128,128,18,89,105,120,232,232,232,232,80,80, + 80,80,54,33,97,192,32,34,98,64,128,23,53,101,32,96, + 64,64,224,4,103,103,56,68,68,136,112,0,248,19,86,102, + 80,40,40,40,80,160,18,90,106,32,96,64,64,224,8,56, + 80,112,16,18,90,106,32,96,64,64,224,16,40,16,32,112, + 18,90,106,96,16,96,32,192,8,56,80,112,16,2,89,105, + 16,0,16,16,32,64,136,136,112,2,106,106,32,16,0,16, + 40,68,68,248,136,136,2,106,106,8,16,0,16,40,68,68, + 248,136,136,2,106,106,24,36,0,16,40,68,68,248,136,136, + 2,106,106,20,40,0,16,40,68,68,248,136,136,2,106,106, + 40,40,0,16,40,68,68,248,136,136,2,106,106,16,40,16, + 16,40,68,68,248,136,136,2,105,105,44,80,80,80,88,224, + 160,160,184,0,107,107,56,68,64,64,64,128,128,136,112,32, + 64,2,106,106,32,16,0,124,64,64,120,128,128,248,2,106, + 106,8,16,0,124,64,64,120,128,128,248,2,106,106,24,36, + 0,124,64,64,120,128,128,248,2,106,106,40,40,0,124,64, + 64,120,128,128,248,18,74,106,64,32,0,112,32,32,32,64, + 64,224,18,74,106,16,32,0,112,32,32,32,64,64,224,18, + 90,106,48,72,0,112,32,32,32,64,64,224,18,74,106,80, + 80,0,112,32,32,32,64,64,224,2,105,105,120,36,36,36, + 116,36,72,72,240,2,106,106,20,40,0,68,68,100,88,136, + 136,136,2,106,106,32,16,0,56,68,68,68,136,136,112,2, + 106,106,8,16,0,56,68,68,68,136,136,112,2,106,106,24, + 36,0,56,68,68,68,136,136,112,2,106,106,20,40,0,56, + 68,68,68,136,136,112,2,106,106,40,40,0,56,68,68,68, + 136,136,112,3,101,101,68,40,48,80,136,1,107,107,4,60, + 76,76,84,84,168,232,232,112,128,2,106,106,32,16,0,68, + 68,68,136,136,136,112,2,106,106,8,16,0,68,68,68,136, + 136,136,112,2,106,106,24,36,0,68,68,68,136,136,136,112, + 2,106,106,40,40,0,68,68,68,136,136,136,112,18,90,106, + 16,32,0,136,136,80,32,64,64,64,2,105,105,64,120,68, + 68,72,240,128,128,128,2,89,105,48,72,72,80,80,144,136, + 136,176,2,105,105,32,16,0,56,4,124,136,152,104,2,105, + 105,8,16,0,56,4,124,136,152,104,2,105,105,24,36,0, + 56,4,124,136,152,104,2,105,105,20,40,0,56,4,124,136, + 152,104,2,105,105,40,40,0,56,4,124,136,152,104,2,106, + 106,24,36,24,0,56,4,124,136,152,104,2,102,102,56,20, + 120,160,168,80,0,104,104,56,68,64,128,136,112,32,64,2, + 105,105,32,16,0,56,68,124,128,136,112,2,105,105,8,16, + 0,56,68,124,128,136,112,2,105,105,24,36,0,56,68,124, + 128,136,112,2,105,105,40,40,0,56,68,124,128,136,112,18, + 57,105,64,32,0,96,32,32,64,64,224,18,73,105,16,32, + 0,96,32,32,64,64,224,18,89,105,48,72,0,96,32,32, + 64,64,224,18,73,105,80,80,0,96,32,32,64,64,224,2, + 106,106,32,24,48,8,56,68,68,136,136,112,2,105,105,20, + 40,0,88,100,68,136,136,136,2,105,105,32,16,0,56,68, + 68,136,136,112,2,105,105,8,16,0,56,68,68,136,136,112, + 2,105,105,24,36,0,56,68,68,136,136,112,2,105,105,20, + 40,0,56,68,68,136,136,112,2,105,105,40,40,0,56,68, + 68,136,136,112,19,87,103,32,32,0,248,0,64,64,1,104, + 104,4,56,76,84,168,200,112,128,2,105,105,32,16,0,68, + 68,68,136,152,104,2,105,105,8,16,0,68,68,68,136,152, + 104,2,105,105,24,36,0,68,68,68,136,152,104,2,105,105, + 40,40,0,68,68,68,136,152,104,0,107,107,8,16,0,68, + 68,136,152,104,8,144,96,0,106,106,64,64,88,100,68,136, + 200,176,128,128,0,107,107,40,40,0,68,68,136,152,104,8, + 144,96}; +/* + Fontname: -Misc-Fixed-Medium-O-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13Or[1043] U8G_SECTION(".progmem.u8g_font_6x13Or") = { + 1,6,13,0,254,9,1,104,2,216,32,127,254,11,254,10, + 254,13,0,96,34,41,105,64,64,64,64,128,128,128,0,128, + 40,67,99,80,80,160,3,103,103,40,40,124,40,248,80,80, + 2,105,105,16,60,80,80,56,36,40,240,32,2,105,105,36, + 84,40,8,16,32,80,168,144,2,104,104,16,40,40,48,80, + 148,152,104,56,35,99,64,64,128,17,75,107,16,32,64,64, + 128,128,128,128,64,64,32,17,75,107,64,32,32,16,16,16, + 16,32,32,64,128,3,103,103,16,84,124,56,124,168,32,20, + 69,101,32,32,240,64,64,17,51,99,96,64,128,22,65,97, + 240,17,51,99,64,224,64,2,105,105,4,4,8,16,16,32, + 64,128,128,2,105,105,16,40,68,68,68,136,136,80,32,2, + 89,105,16,48,80,16,16,32,32,32,248,2,105,105,56,68, + 68,8,16,32,64,128,248,2,105,105,124,4,8,16,56,4, + 8,136,112,2,89,105,8,8,24,40,40,72,248,16,16,2, + 105,105,124,64,64,88,100,4,8,136,112,2,105,105,56,68, + 64,64,112,136,136,136,112,18,89,105,248,8,16,16,32,64, + 64,128,128,2,105,105,56,68,68,68,120,136,136,136,112,2, + 105,105,56,68,68,68,56,8,8,136,112,17,72,104,32,112, + 32,0,0,64,224,64,17,72,104,32,112,32,0,0,96,64, + 128,18,89,105,8,16,32,64,128,64,64,32,16,4,100,100, + 124,0,0,248,2,105,105,64,32,16,8,4,8,48,64,128, + 18,89,105,112,136,136,8,16,32,64,0,64,2,105,105,56, + 68,68,88,168,168,144,128,120,2,105,105,16,40,68,68,68, + 248,136,136,136,2,105,105,120,36,36,36,56,72,72,72,240, + 2,105,105,56,68,64,64,64,128,128,136,112,2,105,105,120, + 36,36,36,36,72,72,72,240,2,105,105,124,64,64,64,120, + 128,128,128,248,2,105,105,124,64,64,64,120,128,128,128,128, + 2,105,105,56,68,64,64,64,152,136,136,112,2,105,105,68, + 68,68,68,124,136,136,136,136,18,73,105,112,32,32,32,32, + 64,64,64,224,2,105,105,28,8,8,8,8,16,16,144,96, + 2,105,105,68,68,72,80,96,160,144,136,136,2,89,105,64, + 64,64,64,64,128,128,128,248,2,105,105,68,68,108,84,84, + 136,136,136,136,2,105,105,68,100,100,84,84,152,136,136,136, + 2,105,105,56,68,68,68,68,136,136,136,112,2,105,105,120, + 68,68,68,120,128,128,128,128,1,106,106,56,68,68,68,68, + 136,136,168,112,8,2,105,105,120,68,68,68,120,144,144,136, + 136,2,105,105,56,68,64,64,48,8,8,136,112,18,89,105, + 248,32,32,32,32,64,64,64,64,2,105,105,68,68,68,68, + 68,136,136,136,112,18,89,105,136,136,136,136,144,144,160,160, + 64,2,105,105,68,68,68,68,168,168,168,168,80,2,105,105, + 68,68,40,40,16,48,72,136,136,18,89,105,136,136,80,80, + 32,32,64,64,64,2,105,105,124,4,8,8,16,32,64,128, + 248,1,91,107,56,32,32,32,64,64,64,128,128,128,224,18, + 73,105,128,128,64,64,64,32,32,16,16,1,91,107,56,8, + 8,8,16,16,16,32,32,32,224,24,83,99,32,80,136,1, + 81,97,248,58,34,98,128,64,2,102,102,56,4,124,136,152, + 104,2,105,105,64,64,64,120,68,136,136,136,240,2,102,102, + 56,68,128,128,136,112,2,105,105,4,4,4,60,68,136,136, + 136,120,2,102,102,56,68,124,128,136,112,18,89,105,48,72, + 64,64,240,64,128,128,128,0,104,104,56,68,68,136,120,8, + 136,112,2,105,105,32,32,32,88,100,68,136,136,136,18,56, + 104,32,0,96,32,32,64,64,224,0,90,106,8,0,24,8, + 8,16,16,144,144,96,2,89,105,32,32,32,72,80,96,160, + 144,136,18,73,105,48,16,16,32,32,32,64,64,224,2,102, + 102,104,84,84,168,168,136,2,102,102,88,100,68,136,136,136, + 2,102,102,56,68,68,136,136,112,0,104,104,120,68,68,136, + 240,128,128,128,0,104,104,60,68,132,136,120,8,16,16,2, + 102,102,88,100,64,128,128,128,2,102,102,56,68,32,16,136, + 112,18,72,104,32,32,240,64,64,128,144,96,2,102,102,68, + 68,136,136,152,104,18,86,102,136,136,136,144,160,64,2,102, + 102,68,68,84,168,168,80,2,102,102,68,40,16,32,80,136, + 0,104,104,68,68,136,152,104,8,144,96,2,102,102,124,8, + 16,96,128,248,1,91,107,24,32,32,32,32,192,32,64,64, + 64,48,34,41,105,64,64,64,64,64,128,128,128,128,1,107, + 107,96,16,16,16,16,12,16,32,32,32,192,24,83,99,72, + 168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 5 h=11 x= 2 y=11 dx= 6 dy= 0 ascent=11 len=11 + Font Bounding box w= 6 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_6x13r[1041] U8G_SECTION(".progmem.u8g_font_6x13r") = { + 1,6,13,0,254,9,1,102,2,214,32,127,254,11,254,10, + 254,13,0,96,34,25,105,128,128,128,128,128,128,128,0,128, + 24,51,99,160,160,160,3,87,103,80,80,248,80,248,80,80, + 2,89,105,32,120,160,160,112,40,40,240,32,2,89,105,72, + 168,80,16,32,64,80,168,144,2,88,104,64,160,160,64,160, + 152,144,104,40,19,99,128,128,128,17,59,107,32,64,64,128, + 128,128,128,128,64,64,32,17,59,107,128,64,64,32,32,32, + 32,32,64,64,128,6,85,101,32,168,112,168,32,4,85,101, + 32,32,248,32,32,17,51,99,96,64,128,6,81,97,248,17, + 51,99,64,224,64,2,89,105,8,8,16,16,32,64,64,128, + 128,2,89,105,32,80,136,136,136,136,136,80,32,2,89,105, + 32,96,160,32,32,32,32,32,248,2,89,105,112,136,136,8, + 16,32,64,128,248,2,89,105,248,8,16,32,112,8,8,136, + 112,2,89,105,16,16,48,80,80,144,248,16,16,2,89,105, + 248,128,128,176,200,8,8,136,112,2,89,105,112,136,128,128, + 240,136,136,136,112,2,89,105,248,8,16,16,32,32,64,64, + 64,2,89,105,112,136,136,136,112,136,136,136,112,2,89,105, + 112,136,136,136,120,8,8,136,112,17,56,104,64,224,64,0, + 0,64,224,64,17,56,104,64,224,64,0,0,96,64,128,2, + 89,105,8,16,32,64,128,64,32,16,8,4,84,100,248,0, + 0,248,2,89,105,128,64,32,16,8,16,32,64,128,2,89, + 105,112,136,136,8,16,32,32,0,32,2,89,105,112,136,136, + 152,168,168,176,128,120,2,89,105,32,80,136,136,136,248,136, + 136,136,2,89,105,240,72,72,72,112,72,72,72,240,2,89, + 105,112,136,128,128,128,128,128,136,112,2,89,105,240,72,72, + 72,72,72,72,72,240,2,89,105,248,128,128,128,240,128,128, + 128,248,2,89,105,248,128,128,128,240,128,128,128,128,2,89, + 105,112,136,128,128,128,152,136,136,112,2,89,105,136,136,136, + 136,248,136,136,136,136,18,57,105,224,64,64,64,64,64,64, + 64,224,2,89,105,56,16,16,16,16,16,16,144,96,2,89, + 105,136,136,144,160,192,160,144,136,136,2,89,105,128,128,128, + 128,128,128,128,128,248,2,89,105,136,136,216,168,168,136,136, + 136,136,2,89,105,136,200,200,168,168,152,152,136,136,2,89, + 105,112,136,136,136,136,136,136,136,112,2,89,105,240,136,136, + 136,240,128,128,128,128,1,90,106,112,136,136,136,136,136,136, + 168,112,8,2,89,105,240,136,136,136,240,160,144,136,136,2, + 89,105,112,136,128,128,112,8,8,136,112,2,89,105,248,32, + 32,32,32,32,32,32,32,2,89,105,136,136,136,136,136,136, + 136,136,112,2,89,105,136,136,136,136,80,80,80,32,32,2, + 89,105,136,136,136,136,168,168,168,168,80,2,89,105,136,136, + 80,80,32,80,80,136,136,2,89,105,136,136,80,80,32,32, + 32,32,32,2,89,105,248,8,16,16,32,64,64,128,248,17, + 59,107,224,128,128,128,128,128,128,128,128,128,224,2,89,105, + 128,128,64,64,32,16,16,8,8,17,59,107,224,32,32,32, + 32,32,32,32,32,32,224,8,83,99,32,80,136,1,81,97, + 248,42,34,98,128,64,2,86,102,112,8,120,136,152,104,2, + 89,105,128,128,128,240,136,136,136,136,240,2,86,102,112,136, + 128,128,136,112,2,89,105,8,8,8,120,136,136,136,136,120, + 2,86,102,112,136,248,128,136,112,2,89,105,48,72,64,64, + 240,64,64,64,64,0,88,104,112,136,136,136,120,8,136,112, + 2,89,105,128,128,128,176,200,136,136,136,136,18,56,104,64, + 0,192,64,64,64,64,224,0,74,106,16,0,48,16,16,16, + 16,144,144,96,2,89,105,128,128,128,144,160,192,160,144,136, + 18,57,105,192,64,64,64,64,64,64,64,224,2,86,102,208, + 168,168,168,168,136,2,86,102,176,200,136,136,136,136,2,86, + 102,112,136,136,136,136,112,0,88,104,240,136,136,136,240,128, + 128,128,0,88,104,120,136,136,136,120,8,8,8,2,86,102, + 176,200,128,128,128,128,2,86,102,112,136,96,16,136,112,2, + 88,104,64,64,240,64,64,64,72,48,2,86,102,136,136,136, + 136,152,104,2,86,102,136,136,136,80,80,32,2,86,102,136, + 136,168,168,168,80,2,86,102,136,80,32,32,80,136,0,88, + 104,136,136,136,152,104,8,136,112,2,86,102,248,16,32,64, + 128,248,1,91,107,24,32,32,32,32,192,32,32,32,32,24, + 34,25,105,128,128,128,128,128,128,128,128,128,1,91,107,192, + 32,32,32,32,24,32,32,32,32,192,8,83,99,72,168,144, + 255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w= 7 h=13 x= 6 y= 9 dx= 7 dy= 0 ascent=11 len=13 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[2197] U8G_SECTION(".progmem.u8g_font_7x13_67_75") = { + 1,7,13,0,254,3,1,91,2,178,32,255,0,11,254,10, + 0,4,117,117,72,36,254,36,72,18,89,121,32,32,32,168, + 112,32,168,112,32,4,101,117,36,72,248,72,36,4,101,117, + 144,72,124,72,144,4,101,117,36,68,252,68,36,18,89,121, + 32,112,168,32,32,32,32,32,248,4,101,117,144,136,252,136, + 144,18,89,121,248,32,32,32,32,32,168,112,32,18,89,121, + 32,112,168,32,32,168,112,32,248,4,117,117,36,66,252,64, + 32,4,117,117,72,132,126,4,8,4,117,117,36,74,252,72, + 40,4,117,117,72,164,126,36,40,4,117,117,40,84,238,68, + 40,4,117,117,40,84,254,84,40,2,106,122,64,64,128,152, + 104,8,16,84,56,16,2,106,122,32,64,252,68,36,4,4, + 4,4,4,2,106,122,16,8,252,136,144,128,128,128,128,128, + 2,106,122,4,4,4,4,4,36,68,252,64,32,2,106,122, + 128,128,128,128,128,144,136,252,8,16,2,104,120,240,16,16, + 16,16,84,56,16,2,90,122,8,8,8,8,8,40,72,248, + 64,32,4,119,119,28,34,34,34,170,112,32,4,119,119,112, + 136,136,136,170,28,8,2,120,120,254,0,224,192,160,16,8, + 4,2,121,121,144,160,254,160,146,10,254,10,18,4,119,119, + 72,156,170,136,136,136,112,4,119,119,36,114,170,34,34,34, + 28,6,99,115,32,64,252,4,99,115,252,64,32,50,57,121, + 128,192,160,128,128,128,128,128,128,18,57,121,32,96,160,32, + 32,32,32,32,32,6,99,115,16,8,252,4,99,115,252,8, + 16,50,57,121,128,128,128,128,128,128,160,192,128,18,57,121, + 32,32,32,32,32,32,160,96,32,2,105,121,16,8,252,8, + 48,64,252,64,32,2,122,122,40,120,168,40,40,40,40,42, + 60,40,2,105,121,32,64,252,64,48,8,252,8,16,2,105, + 121,32,64,252,64,32,64,252,64,32,2,121,121,68,238,68, + 68,68,68,68,68,68,2,105,121,16,8,252,8,16,8,252, + 8,16,2,122,122,68,68,68,68,68,68,68,68,238,68,3, + 103,119,32,64,252,0,252,8,16,3,103,119,16,8,252,0, + 252,64,32,3,119,119,16,34,126,132,126,40,16,4,117,117, + 40,124,146,124,40,3,119,119,16,40,252,66,252,136,16,3, + 119,119,16,32,126,128,126,32,16,2,121,121,16,40,108,170, + 40,40,40,40,40,3,119,119,16,8,252,2,252,8,16,2, + 121,121,40,40,40,40,40,170,108,40,16,4,117,117,40,124, + 130,124,40,2,122,122,16,40,108,170,40,40,170,108,40,16, + 2,119,119,252,144,136,196,162,144,8,2,119,119,126,18,34, + 70,138,18,32,2,119,119,32,18,138,70,34,18,126,2,119, + 119,8,144,162,196,136,144,252,2,121,121,8,16,62,64,254, + 64,62,16,8,2,121,121,32,16,248,4,254,4,248,16,32, + 4,117,117,32,72,254,68,32,4,117,117,8,36,254,68,8, + 18,89,121,32,112,168,32,248,32,248,32,32,18,89,121,32, + 32,248,32,248,32,168,112,32,3,119,119,16,32,64,182,64, + 32,16,2,122,122,16,40,84,146,0,16,16,0,16,16,3, + 119,119,16,8,4,218,4,8,16,2,122,122,16,16,0,16, + 16,0,146,84,40,16,4,117,117,144,160,254,160,144,4,117, + 117,18,10,254,10,18,3,119,119,16,48,94,130,94,48,16, + 2,121,121,16,40,68,238,40,40,40,40,56,3,119,119,16, + 24,244,130,244,24,16,2,121,121,56,40,40,40,40,238,68, + 40,16,1,124,124,16,40,68,238,40,40,40,56,0,56,40, + 56,1,122,122,16,40,68,238,40,40,40,108,68,124,1,122, + 122,16,40,68,254,40,40,40,108,68,124,1,122,122,16,40, + 68,254,56,56,56,124,68,124,2,121,121,16,40,68,238,68, + 238,40,40,56,1,122,122,16,40,68,238,68,238,40,108,68, + 124,3,119,119,144,152,244,130,244,152,144,2,119,119,254,128, + 188,176,168,164,130,2,119,119,130,74,42,26,122,2,254,2, + 121,121,16,40,68,238,40,238,68,40,16,255,255,255,255,255, + 255,255,255,255,255,255,255,7,118,118,254,254,254,254,254,254, + 0,114,114,254,254,0,115,115,254,254,254,0,117,117,254,254, + 254,254,254,0,119,119,254,254,254,254,254,254,254,0,120,120, + 254,254,254,254,254,254,254,254,0,122,122,254,254,254,254,254, + 254,254,254,254,254,0,123,123,254,254,254,254,254,254,254,254, + 254,254,254,0,125,125,254,254,254,254,254,254,254,254,254,254, + 254,254,254,0,109,125,252,252,252,252,252,252,252,252,252,252, + 252,252,252,0,93,125,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,77,125,240,240,240,240,240,240,240,240,240,240, + 240,240,240,0,77,125,240,240,240,240,240,240,240,240,240,240, + 240,240,240,0,61,125,224,224,224,224,224,224,224,224,224,224, + 224,224,224,0,45,125,192,192,192,192,192,192,192,192,192,192, + 192,192,192,0,29,125,128,128,128,128,128,128,128,128,128,128, + 128,128,128,64,61,125,224,224,224,224,224,224,224,224,224,224, + 224,224,224,1,123,123,84,0,170,0,84,0,170,0,84,0, + 170,0,125,125,170,84,170,84,170,84,170,84,170,84,170,84, + 170,0,125,125,254,84,254,170,254,84,254,170,254,84,254,170, + 254,11,114,114,254,254,96,29,125,128,128,128,128,128,128,128, + 128,128,128,128,128,128,0,71,119,240,240,240,240,240,240,240, + 64,55,119,224,224,224,224,224,224,224,7,70,118,240,240,240, + 240,240,240,0,125,125,240,240,240,240,240,240,254,254,254,254, + 254,254,254,0,125,125,240,240,240,240,240,240,14,14,14,14, + 14,14,14,0,125,125,254,254,254,254,254,254,240,240,240,240, + 240,240,240,0,125,125,254,254,254,254,254,254,14,14,14,14, + 14,14,14,71,54,118,224,224,224,224,224,224,0,125,125,14, + 14,14,14,14,14,240,240,240,240,240,240,240,0,125,125,14, + 14,14,14,14,14,254,254,254,254,254,254,254,3,119,119,254, + 254,254,254,254,254,254,3,119,119,254,130,130,130,130,130,254, + 3,119,119,124,130,130,130,130,130,124,3,119,119,254,130,186, + 186,186,130,254,3,119,119,254,130,254,130,254,130,254,3,119, + 119,254,170,170,170,170,170,254,3,119,119,254,170,254,170,254, + 170,254,3,119,119,254,146,138,198,162,146,254,3,119,119,254, + 146,162,198,138,146,254,3,119,119,254,214,170,214,170,214,254, + 20,85,117,248,248,248,248,248,20,85,117,248,136,136,136,248, + 4,117,117,254,254,254,254,254,4,117,117,254,130,130,130,254, + 19,87,119,248,248,248,248,248,248,248,19,87,119,248,136,136, + 136,136,136,248,4,117,117,62,126,254,252,248,4,117,117,62, + 66,130,132,248,2,120,120,16,16,56,56,124,124,254,254,2, + 120,120,16,16,40,40,68,68,130,254,19,86,118,32,32,112, + 112,248,248,19,86,118,32,32,80,80,136,248,3,119,119,128, + 224,248,254,248,224,128,3,119,119,128,224,152,134,152,224,128, + 4,101,117,192,240,252,240,192,4,101,117,192,176,140,176,192, + 4,117,117,128,240,254,240,128,4,117,117,128,240,142,240,128, + 2,120,120,254,254,124,124,56,56,16,16,2,120,120,254,130, + 68,68,40,40,16,16,19,86,118,248,248,112,112,32,32,19, + 86,118,248,136,80,80,32,32,3,119,119,2,14,62,254,62, + 14,2,3,119,119,2,14,50,194,50,14,2,4,101,117,12, + 60,252,60,12,4,101,117,12,52,196,52,12,4,117,117,2, + 30,254,30,2,4,117,117,2,30,226,30,2,2,119,119,16, + 56,124,254,124,56,16,2,119,119,16,40,68,130,68,40,16, + 2,119,119,16,40,84,186,84,40,16,3,119,119,56,68,146, + 186,146,68,56,18,89,121,32,32,80,80,136,80,80,32,32, + 3,119,119,56,68,130,130,130,68,56,3,119,119,40,0,130, + 0,130,0,40,3,119,119,56,108,170,170,170,108,56,3,119, + 119,56,68,146,170,146,68,56,3,119,119,56,124,254,254,254, + 124,56,3,119,119,56,116,242,242,242,116,56,3,119,119,56, + 92,158,158,158,92,56,3,119,119,56,68,130,254,254,124,56, + 3,119,119,56,124,254,254,130,68,56,3,119,119,56,92,158, + 158,130,68,56,3,119,119,56,76,142,142,254,124,56,51,71, + 119,192,224,240,240,240,224,192,3,71,119,48,112,240,240,240, + 112,48,0,125,125,254,254,254,254,198,130,130,130,198,254,254, + 254,254,0,125,125,254,254,254,254,198,186,186,186,198,254,254, + 254,254,6,119,119,254,254,254,254,198,186,186,0,119,119,186, + 186,198,254,254,254,254,6,68,116,48,64,128,128,54,68,116, + 192,32,16,16,51,68,116,16,16,32,192,3,68,116,128,128, + 64,48,6,116,116,56,68,130,130,3,116,116,130,130,68,56, + 3,119,119,2,6,14,30,62,126,254,3,119,119,128,192,224, + 240,248,252,254,3,119,119,254,252,248,240,224,192,128,3,119, + 119,254,126,62,30,14,6,2,20,85,117,112,136,136,136,112, + 3,119,119,254,226,226,226,226,226,254,3,119,119,254,142,142, + 142,142,142,254,3,119,119,254,254,250,242,226,194,254,3,119, + 119,254,134,142,158,190,254,254,3,119,119,254,146,146,146,146, + 146,254,2,120,120,16,16,40,40,84,124,146,254,2,120,120, + 16,16,56,56,116,116,242,254,2,120,120,16,16,56,56,92, + 92,158,254,3,119,119,56,68,130,130,130,68,56,2,119,119, + 254,146,146,242,130,130,254,2,119,119,254,130,130,242,146,146, + 254,2,119,119,254,130,130,158,146,146,254,2,119,119,254,146, + 146,158,130,130,254,2,119,119,56,84,146,242,130,68,56,2, + 119,119,56,68,130,242,146,84,56,2,119,119,56,68,130,158, + 146,84,56,2,119,119,56,84,146,158,130,68,56,255,255,255, + 255,255,255,255,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 7, '1' Height: 5 + Calculated Max Values w= 7 h= 9 x= 1 y= 2 dx= 7 dy= 0 ascent= 9 len= 9 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent = 9 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13_75r[471] U8G_SECTION(".progmem.u8g_font_7x13_75r") = { + 1,7,13,0,254,7,1,71,0,0,32,79,0,9,0,8, + 0,3,119,119,254,254,254,254,254,254,254,3,119,119,254,130, + 130,130,130,130,254,3,119,119,124,130,130,130,130,130,124,3, + 119,119,254,130,186,186,186,130,254,3,119,119,254,130,254,130, + 254,130,254,3,119,119,254,170,170,170,170,170,254,3,119,119, + 254,170,254,170,254,170,254,3,119,119,254,146,138,198,162,146, + 254,3,119,119,254,146,162,198,138,146,254,3,119,119,254,214, + 170,214,170,214,254,20,85,117,248,248,248,248,248,20,85,117, + 248,136,136,136,248,4,117,117,254,254,254,254,254,4,117,117, + 254,130,130,130,254,19,87,119,248,248,248,248,248,248,248,19, + 87,119,248,136,136,136,136,136,248,4,117,117,62,126,254,252, + 248,4,117,117,62,66,130,132,248,2,120,120,16,16,56,56, + 124,124,254,254,2,120,120,16,16,40,40,68,68,130,254,19, + 86,118,32,32,112,112,248,248,19,86,118,32,32,80,80,136, + 248,3,119,119,128,224,248,254,248,224,128,3,119,119,128,224, + 152,134,152,224,128,4,101,117,192,240,252,240,192,4,101,117, + 192,176,140,176,192,4,117,117,128,240,254,240,128,4,117,117, + 128,240,142,240,128,2,120,120,254,254,124,124,56,56,16,16, + 2,120,120,254,130,68,68,40,40,16,16,19,86,118,248,248, + 112,112,32,32,19,86,118,248,136,80,80,32,32,3,119,119, + 2,14,62,254,62,14,2,3,119,119,2,14,50,194,50,14, + 2,4,101,117,12,60,252,60,12,4,101,117,12,52,196,52, + 12,4,117,117,2,30,254,30,2,4,117,117,2,30,226,30, + 2,2,119,119,16,56,124,254,124,56,16,2,119,119,16,40, + 68,130,68,40,16,2,119,119,16,40,84,186,84,40,16,3, + 119,119,56,68,146,186,146,68,56,18,89,121,32,32,80,80, + 136,80,80,32,32,3,119,119,56,68,130,130,130,68,56,3, + 119,119,40,0,130,0,130,0,40,3,119,119,56,108,170,170, + 170,108,56,3,119,119,56,68,146,170,146,68,56,3,119,119, + 56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13B[2172] U8G_SECTION(".progmem.u8g_font_7x13B") = { + 1,7,13,0,254,9,1,105,2,216,32,255,254,11,254,9, + 254,13,0,112,34,41,121,192,192,192,192,192,192,0,192,192, + 24,83,115,216,216,216,18,89,121,80,80,248,248,80,248,248, + 80,80,2,105,121,48,120,180,176,120,52,180,120,48,2,105, + 121,228,172,232,24,48,96,92,212,156,2,105,121,112,216,216, + 216,112,212,220,216,116,39,36,116,192,192,192,192,18,73,121, + 48,96,96,192,192,192,96,96,48,18,73,121,192,96,96,48, + 48,48,96,96,192,3,102,118,72,48,252,252,48,72,3,102, + 118,48,48,252,252,48,48,17,68,116,112,112,96,192,5,97, + 113,252,17,67,115,96,240,96,2,105,121,12,12,24,24,48, + 96,96,192,192,2,105,121,48,72,204,204,204,204,204,72,48, + 2,105,121,48,112,176,48,48,48,48,48,252,2,105,121,120, + 204,204,12,56,96,192,192,252,2,105,121,252,12,24,48,120, + 12,12,204,120,2,105,121,12,28,60,108,204,204,252,12,12, + 2,105,121,252,192,192,248,204,12,12,204,120,2,105,121,120, + 204,192,192,248,204,204,204,120,2,105,121,252,12,12,24,24, + 48,48,96,96,2,105,121,120,204,204,204,120,204,204,204,120, + 2,105,121,120,204,204,204,124,12,12,204,120,17,72,120,96, + 240,96,0,0,96,240,96,17,72,120,96,240,96,0,112,112, + 96,192,2,105,121,12,24,48,96,192,96,48,24,12,4,100, + 116,252,0,0,252,2,105,121,192,96,48,24,12,24,48,96, + 192,2,105,121,120,204,204,12,56,48,0,48,48,2,105,121, + 120,140,140,188,172,188,128,140,120,2,105,121,120,204,204,204, + 252,204,204,204,204,2,105,121,248,204,204,204,248,204,204,204, + 248,2,105,121,120,204,192,192,192,192,192,204,120,2,105,121, + 248,204,204,204,204,204,204,204,248,2,105,121,252,192,192,192, + 248,192,192,192,252,2,105,121,252,192,192,192,248,192,192,192, + 192,2,105,121,120,204,192,192,220,204,204,204,124,2,105,121, + 204,204,204,204,252,204,204,204,204,2,105,121,252,48,48,48, + 48,48,48,48,252,2,105,121,12,12,12,12,12,12,12,204, + 120,2,105,121,196,204,216,240,224,240,216,204,196,2,105,121, + 192,192,192,192,192,192,192,192,252,2,105,121,132,204,252,252, + 204,204,204,204,204,2,105,121,204,204,236,236,252,220,220,204, + 204,2,105,121,120,204,204,204,204,204,204,204,120,2,105,121, + 248,204,204,204,248,192,192,192,192,1,106,122,120,204,204,204, + 204,204,236,220,120,12,2,105,121,248,204,204,204,248,240,216, + 204,196,2,105,121,120,204,192,192,120,12,12,204,120,2,105, + 121,252,48,48,48,48,48,48,48,48,2,105,121,204,204,204, + 204,204,204,204,204,120,2,105,121,204,204,204,72,72,120,48, + 48,48,2,105,121,204,204,204,204,204,252,252,204,132,2,105, + 121,132,204,72,120,48,120,72,204,132,2,105,121,204,204,120, + 120,48,48,48,48,48,2,105,121,252,12,12,24,48,96,192, + 192,252,18,73,121,240,192,192,192,192,192,192,192,240,2,105, + 121,192,192,96,96,48,24,24,12,12,18,73,121,240,48,48, + 48,48,48,48,48,240,7,100,116,48,120,204,132,1,98,114, + 252,252,25,67,115,192,96,48,2,102,118,120,12,124,204,204, + 124,2,105,121,192,192,192,248,204,204,204,204,248,2,102,118, + 120,204,192,192,204,120,2,105,121,12,12,12,124,204,204,204, + 204,124,2,102,118,120,204,252,192,204,120,2,105,121,56,108, + 96,96,240,96,96,96,96,0,104,120,116,204,204,120,192,120, + 204,120,2,105,121,192,192,192,248,204,204,204,204,204,2,105, + 121,48,48,0,112,48,48,48,48,252,0,107,123,12,12,0, + 12,12,12,12,12,12,204,120,2,105,121,192,192,192,204,216, + 240,240,216,204,2,105,121,112,48,48,48,48,48,48,48,252, + 2,102,118,216,252,252,204,204,204,2,102,118,248,204,204,204, + 204,204,2,102,118,120,204,204,204,204,120,0,104,120,248,204, + 204,204,248,192,192,192,0,104,120,124,204,204,204,124,12,12, + 12,2,102,118,248,204,192,192,192,192,2,102,118,120,204,96, + 24,204,120,2,104,120,96,96,248,96,96,96,108,56,2,102, + 118,204,204,204,204,204,124,2,102,118,204,204,204,120,120,48, + 2,102,118,204,204,204,252,252,72,2,102,118,204,204,120,120, + 204,204,0,104,120,204,204,204,204,124,12,204,120,2,102,118, + 252,12,24,96,192,252,18,73,121,112,192,192,96,192,96,192, + 192,112,34,41,121,192,192,192,192,192,192,192,192,192,18,73, + 121,224,48,48,96,48,96,48,48,224,8,99,115,100,252,152, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,13,0,112,34,42,122,192,192,0,192,192,192,192,192,192, + 192,3,104,120,16,124,212,208,208,212,124,16,2,105,121,56, + 108,96,96,248,96,96,108,184,3,102,118,204,252,72,72,252, + 204,2,105,121,204,204,120,120,252,48,252,48,48,34,42,122, + 192,192,192,192,0,0,192,192,192,192,2,106,122,120,204,192, + 120,204,204,120,12,204,120,26,82,114,216,216,2,106,122,120, + 204,132,180,228,228,180,132,204,120,20,87,119,240,24,248,152, + 248,0,248,3,103,119,52,104,208,160,208,104,52,3,100,116, + 252,12,12,12,21,65,113,240,2,106,122,120,204,132,188,172, + 188,180,172,204,120,27,81,113,248,7,100,116,120,204,204,120, + 3,103,119,48,48,252,48,48,0,252,6,70,118,224,176,48, + 96,192,240,6,70,118,224,176,96,48,176,224,25,67,115,48, + 96,192,1,103,119,204,204,204,204,204,252,128,2,105,121,124, + 252,244,244,244,116,52,52,52,38,34,114,192,192,16,50,114, + 96,192,6,70,118,96,224,96,96,96,240,21,87,119,112,248, + 136,248,112,0,248,3,103,119,176,88,44,20,44,88,176,2, + 106,122,96,224,96,96,100,252,28,52,60,12,2,106,122,96, + 224,96,96,120,236,12,24,48,60,2,106,122,224,176,96,48, + 180,236,28,52,60,12,2,106,122,48,48,0,48,48,96,192, + 204,204,120,2,106,122,96,48,0,48,120,204,204,252,204,204, + 2,106,122,24,48,0,48,120,204,204,252,204,204,2,106,122, + 56,108,0,48,120,204,204,252,204,204,2,106,122,52,88,0, + 48,120,204,204,252,204,204,2,106,122,204,204,0,48,120,204, + 204,252,204,204,2,106,122,120,72,120,48,120,204,204,252,204, + 204,2,105,121,124,248,216,216,220,248,216,216,220,0,107,123, + 120,204,192,192,192,192,192,204,120,48,96,2,106,122,96,48, + 0,252,192,192,240,192,192,252,2,106,122,24,48,0,252,192, + 192,240,192,192,252,2,106,122,56,108,0,252,192,192,240,192, + 192,252,2,106,122,204,204,0,252,192,192,240,192,192,252,2, + 106,122,96,48,0,252,48,48,48,48,48,252,2,106,122,24, + 48,0,252,48,48,48,48,48,252,2,106,122,56,108,0,252, + 48,48,48,48,48,252,2,106,122,204,204,0,252,48,48,48, + 48,48,252,2,105,121,248,108,108,108,236,108,108,108,248,2, + 106,122,52,88,0,204,204,236,252,220,204,204,2,106,122,96, + 48,0,120,204,204,204,204,204,120,2,106,122,24,48,0,120, + 204,204,204,204,204,120,2,106,122,56,108,0,120,204,204,204, + 204,204,120,2,106,122,52,88,0,120,204,204,204,204,204,120, + 2,106,122,204,204,0,120,204,204,204,204,204,120,3,101,117, + 204,120,48,120,204,1,106,122,4,120,220,220,220,236,236,236, + 120,128,2,106,122,96,48,0,204,204,204,204,204,204,120,2, + 106,122,24,48,0,204,204,204,204,204,204,120,2,106,122,56, + 108,0,204,204,204,204,204,204,120,2,106,122,204,204,0,204, + 204,204,204,204,204,120,2,106,122,24,48,0,204,72,120,48, + 48,48,48,2,105,121,192,248,204,204,204,248,192,192,192,2, + 105,121,120,204,204,216,216,204,204,204,216,2,105,121,48,24, + 0,120,12,124,204,220,124,2,105,121,24,48,0,120,12,124, + 204,220,124,2,105,121,56,108,0,120,12,124,204,220,124,2, + 105,121,52,88,0,120,12,124,204,220,124,2,105,121,108,108, + 0,120,12,124,204,220,124,2,106,122,56,40,56,0,120,12, + 124,204,220,124,2,102,118,120,52,124,176,180,104,0,104,120, + 120,204,192,192,204,120,48,96,2,105,121,48,24,0,120,204, + 252,192,204,120,2,105,121,24,48,0,120,204,252,192,204,120, + 2,105,121,56,108,0,120,204,252,192,204,120,2,105,121,108, + 108,0,120,204,252,192,204,120,18,73,121,192,96,0,224,96, + 96,96,96,240,18,73,121,48,96,0,224,96,96,96,96,240, + 2,89,121,112,216,0,112,48,48,48,48,120,18,89,121,216, + 216,0,224,96,96,96,96,240,2,106,122,104,48,120,12,124, + 204,204,204,204,120,2,105,121,52,88,0,248,236,204,204,204, + 204,2,105,121,96,48,0,120,204,204,204,204,120,2,105,121, + 24,48,0,120,204,204,204,204,120,2,105,121,56,108,0,120, + 204,204,204,204,120,2,105,121,52,88,0,120,204,204,204,204, + 120,2,105,121,108,108,0,120,204,204,204,204,120,3,103,119, + 48,48,0,252,0,48,48,1,105,121,4,120,204,220,204,236, + 204,120,128,2,105,121,96,48,0,204,204,204,204,220,124,2, + 105,121,24,48,0,204,204,204,204,220,124,2,105,121,56,108, + 0,204,204,204,204,220,124,2,105,121,108,108,0,204,204,204, + 204,220,124,0,107,123,24,48,0,204,204,204,220,124,12,204, + 120,0,106,122,192,192,216,236,204,204,236,216,192,192,0,107, + 123,108,108,0,204,204,204,220,108,12,204,120}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 2 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13Br[1041] U8G_SECTION(".progmem.u8g_font_7x13Br") = { + 1,7,13,0,254,9,1,105,2,216,32,127,254,11,254,9, + 254,13,0,112,34,41,121,192,192,192,192,192,192,0,192,192, + 24,83,115,216,216,216,18,89,121,80,80,248,248,80,248,248, + 80,80,2,105,121,48,120,180,176,120,52,180,120,48,2,105, + 121,228,172,232,24,48,96,92,212,156,2,105,121,112,216,216, + 216,112,212,220,216,116,39,36,116,192,192,192,192,18,73,121, + 48,96,96,192,192,192,96,96,48,18,73,121,192,96,96,48, + 48,48,96,96,192,3,102,118,72,48,252,252,48,72,3,102, + 118,48,48,252,252,48,48,17,68,116,112,112,96,192,5,97, + 113,252,17,67,115,96,240,96,2,105,121,12,12,24,24,48, + 96,96,192,192,2,105,121,48,72,204,204,204,204,204,72,48, + 2,105,121,48,112,176,48,48,48,48,48,252,2,105,121,120, + 204,204,12,56,96,192,192,252,2,105,121,252,12,24,48,120, + 12,12,204,120,2,105,121,12,28,60,108,204,204,252,12,12, + 2,105,121,252,192,192,248,204,12,12,204,120,2,105,121,120, + 204,192,192,248,204,204,204,120,2,105,121,252,12,12,24,24, + 48,48,96,96,2,105,121,120,204,204,204,120,204,204,204,120, + 2,105,121,120,204,204,204,124,12,12,204,120,17,72,120,96, + 240,96,0,0,96,240,96,17,72,120,96,240,96,0,112,112, + 96,192,2,105,121,12,24,48,96,192,96,48,24,12,4,100, + 116,252,0,0,252,2,105,121,192,96,48,24,12,24,48,96, + 192,2,105,121,120,204,204,12,56,48,0,48,48,2,105,121, + 120,140,140,188,172,188,128,140,120,2,105,121,120,204,204,204, + 252,204,204,204,204,2,105,121,248,204,204,204,248,204,204,204, + 248,2,105,121,120,204,192,192,192,192,192,204,120,2,105,121, + 248,204,204,204,204,204,204,204,248,2,105,121,252,192,192,192, + 248,192,192,192,252,2,105,121,252,192,192,192,248,192,192,192, + 192,2,105,121,120,204,192,192,220,204,204,204,124,2,105,121, + 204,204,204,204,252,204,204,204,204,2,105,121,252,48,48,48, + 48,48,48,48,252,2,105,121,12,12,12,12,12,12,12,204, + 120,2,105,121,196,204,216,240,224,240,216,204,196,2,105,121, + 192,192,192,192,192,192,192,192,252,2,105,121,132,204,252,252, + 204,204,204,204,204,2,105,121,204,204,236,236,252,220,220,204, + 204,2,105,121,120,204,204,204,204,204,204,204,120,2,105,121, + 248,204,204,204,248,192,192,192,192,1,106,122,120,204,204,204, + 204,204,236,220,120,12,2,105,121,248,204,204,204,248,240,216, + 204,196,2,105,121,120,204,192,192,120,12,12,204,120,2,105, + 121,252,48,48,48,48,48,48,48,48,2,105,121,204,204,204, + 204,204,204,204,204,120,2,105,121,204,204,204,72,72,120,48, + 48,48,2,105,121,204,204,204,204,204,252,252,204,132,2,105, + 121,132,204,72,120,48,120,72,204,132,2,105,121,204,204,120, + 120,48,48,48,48,48,2,105,121,252,12,12,24,48,96,192, + 192,252,18,73,121,240,192,192,192,192,192,192,192,240,2,105, + 121,192,192,96,96,48,24,24,12,12,18,73,121,240,48,48, + 48,48,48,48,48,240,7,100,116,48,120,204,132,1,98,114, + 252,252,25,67,115,192,96,48,2,102,118,120,12,124,204,204, + 124,2,105,121,192,192,192,248,204,204,204,204,248,2,102,118, + 120,204,192,192,204,120,2,105,121,12,12,12,124,204,204,204, + 204,124,2,102,118,120,204,252,192,204,120,2,105,121,56,108, + 96,96,240,96,96,96,96,0,104,120,116,204,204,120,192,120, + 204,120,2,105,121,192,192,192,248,204,204,204,204,204,2,105, + 121,48,48,0,112,48,48,48,48,252,0,107,123,12,12,0, + 12,12,12,12,12,12,204,120,2,105,121,192,192,192,204,216, + 240,240,216,204,2,105,121,112,48,48,48,48,48,48,48,252, + 2,102,118,216,252,252,204,204,204,2,102,118,248,204,204,204, + 204,204,2,102,118,120,204,204,204,204,120,0,104,120,248,204, + 204,204,248,192,192,192,0,104,120,124,204,204,204,124,12,12, + 12,2,102,118,248,204,192,192,192,192,2,102,118,120,204,96, + 24,204,120,2,104,120,96,96,248,96,96,96,108,56,2,102, + 118,204,204,204,204,204,124,2,102,118,204,204,204,120,120,48, + 2,102,118,204,204,204,252,252,72,2,102,118,204,204,120,120, + 204,204,0,104,120,204,204,204,204,124,12,204,120,2,102,118, + 252,12,24,96,192,252,18,73,121,112,192,192,96,192,96,192, + 192,112,34,41,121,192,192,192,192,192,192,192,192,192,18,73, + 121,224,48,48,96,48,96,48,48,224,8,99,115,100,252,152, + 255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13[2157] U8G_SECTION(".progmem.u8g_font_7x13") = { + 1,7,13,0,254,9,1,95,2,207,32,255,254,11,254,10, + 254,13,0,112,50,25,121,128,128,128,128,128,128,128,0,128, + 40,51,115,160,160,160,19,87,119,80,80,248,80,248,80,80, + 19,87,119,32,120,160,112,40,240,32,2,105,121,68,164,72, + 16,16,32,72,148,136,2,103,119,96,144,144,96,148,136,116, + 56,19,115,128,128,128,34,57,121,32,64,64,128,128,128,64, + 64,32,34,57,121,128,64,64,32,32,32,64,64,128,4,101, + 117,72,48,252,48,72,20,85,117,32,32,248,32,32,17,67, + 115,112,96,128,22,81,113,248,33,51,115,64,224,64,18,89, + 121,8,8,16,16,32,64,64,128,128,2,105,121,48,72,132, + 132,132,132,132,72,48,18,89,121,32,96,160,32,32,32,32, + 32,248,2,105,121,120,132,132,4,8,48,64,128,252,2,105, + 121,252,4,8,16,56,4,4,132,120,2,105,121,8,24,40, + 72,136,136,252,8,8,2,105,121,252,128,128,184,196,4,4, + 132,120,2,105,121,56,64,128,128,184,196,132,132,120,2,105, + 121,252,4,8,16,16,32,32,64,64,2,105,121,120,132,132, + 132,120,132,132,132,120,2,105,121,120,132,132,140,116,4,4, + 8,112,33,56,120,64,224,64,0,0,64,224,64,17,72,120, + 32,112,32,0,0,112,96,128,18,89,121,8,16,32,64,128, + 64,32,16,8,4,100,116,252,0,0,252,18,89,121,128,64, + 32,16,8,16,32,64,128,2,105,121,120,132,132,4,8,16, + 16,0,16,2,105,121,120,132,132,156,164,172,148,128,120,2, + 105,121,48,72,132,132,132,252,132,132,132,2,105,121,248,68, + 68,68,120,68,68,68,248,2,105,121,120,132,128,128,128,128, + 128,132,120,2,105,121,248,68,68,68,68,68,68,68,248,2, + 105,121,252,128,128,128,240,128,128,128,252,2,105,121,252,128, + 128,128,240,128,128,128,128,2,105,121,120,132,128,128,128,156, + 132,140,116,2,105,121,132,132,132,132,252,132,132,132,132,18, + 89,121,248,32,32,32,32,32,32,32,248,2,105,121,28,8, + 8,8,8,8,8,136,112,2,105,121,132,136,144,160,192,160, + 144,136,132,2,105,121,128,128,128,128,128,128,128,128,252,2, + 105,121,132,204,204,180,180,132,132,132,132,2,105,121,132,132, + 196,164,148,140,132,132,132,2,105,121,120,132,132,132,132,132, + 132,132,120,2,105,121,248,132,132,132,248,128,128,128,128,1, + 106,122,120,132,132,132,132,132,164,148,120,4,2,105,121,248, + 132,132,132,248,160,144,136,132,2,105,121,120,132,128,128,120, + 4,4,132,120,18,89,121,248,32,32,32,32,32,32,32,32, + 2,105,121,132,132,132,132,132,132,132,132,120,2,105,121,132, + 132,132,72,72,72,48,48,48,2,105,121,132,132,132,132,180, + 180,204,204,132,2,105,121,132,132,72,72,48,72,72,132,132, + 18,89,121,136,136,80,80,32,32,32,32,32,2,105,121,252, + 4,8,16,48,32,64,128,252,17,75,123,240,128,128,128,128, + 128,128,128,128,128,240,18,89,121,128,128,64,64,32,16,16, + 8,8,17,75,123,240,16,16,16,16,16,16,16,16,16,240, + 24,83,115,32,80,136,1,97,113,252,42,34,114,128,64,2, + 102,118,120,4,124,132,140,116,2,105,121,128,128,128,184,196, + 132,132,196,184,2,102,118,120,132,128,128,132,120,2,105,121, + 4,4,4,116,140,132,132,140,116,2,102,118,120,132,252,128, + 132,120,2,105,121,56,68,64,64,240,64,64,64,64,0,104, + 120,116,136,136,112,128,120,132,120,2,105,121,128,128,128,184, + 196,132,132,132,132,18,88,120,32,0,96,32,32,32,32,248, + 16,90,122,8,0,24,8,8,8,8,136,136,112,2,105,121, + 128,128,128,136,144,224,144,136,132,18,89,121,96,32,32,32, + 32,32,32,32,248,18,86,118,208,168,168,168,168,136,2,102, + 118,184,196,132,132,132,132,2,102,118,120,132,132,132,132,120, + 0,104,120,184,196,132,196,184,128,128,128,0,104,120,116,140, + 132,140,116,4,4,4,2,102,118,184,68,64,64,64,64,2, + 102,118,120,132,96,24,132,120,2,104,120,64,64,240,64,64, + 64,68,56,2,102,118,132,132,132,132,140,116,18,86,118,136, + 136,136,80,80,32,18,86,118,136,136,168,168,168,80,2,102, + 118,132,72,48,48,72,132,0,104,120,132,132,132,140,116,4, + 132,120,2,102,118,252,8,16,32,64,252,17,91,123,56,64, + 64,64,32,192,32,64,64,64,56,50,25,121,128,128,128,128, + 128,128,128,128,128,17,91,123,224,16,16,16,32,24,32,16, + 16,16,224,24,83,115,72,168,144,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,13,0,112,50,25,121, + 128,0,128,128,128,128,128,128,128,19,88,120,32,112,168,160, + 160,168,112,32,2,105,121,56,68,64,64,224,64,64,68,184, + 3,102,118,132,120,72,72,120,132,2,89,121,136,136,80,80, + 248,32,248,32,32,50,25,121,128,128,128,128,0,128,128,128, + 128,18,74,122,96,144,128,96,144,144,96,16,144,96,25,66, + 114,144,144,2,105,121,120,132,180,164,164,164,180,132,120,20, + 87,119,112,8,120,136,120,0,248,3,103,119,20,40,80,160, + 80,40,20,20,83,115,248,8,8,22,65,113,240,2,105,121, + 120,132,180,172,172,180,172,132,120,26,81,113,248,23,68,116, + 96,144,144,96,19,87,119,32,32,248,32,32,0,248,22,54, + 118,64,160,32,64,128,224,22,54,118,224,32,64,32,160,64, + 42,34,114,64,128,1,103,119,132,132,132,132,204,180,128,2, + 105,121,124,232,232,232,104,40,40,40,40,38,33,113,192,32, + 34,114,64,128,22,54,118,64,192,64,64,64,224,21,70,118, + 96,144,144,96,0,240,3,103,119,160,80,40,20,40,80,160, + 2,106,122,64,192,64,64,68,236,20,20,28,4,2,106,122, + 64,192,64,64,72,244,4,8,16,28,2,106,122,224,32,64, + 32,164,76,20,20,28,4,2,105,121,32,0,32,32,64,128, + 132,132,120,2,106,122,32,16,0,48,72,132,132,252,132,132, + 2,106,122,16,32,0,48,72,132,132,252,132,132,2,106,122, + 48,72,0,48,72,132,132,252,132,132,2,106,122,100,152,0, + 48,72,132,132,252,132,132,2,106,122,72,72,0,48,72,132, + 132,252,132,132,2,106,122,48,72,48,48,72,132,132,252,132, + 132,2,105,121,92,160,160,160,184,224,160,160,188,0,107,123, + 120,132,128,128,128,128,128,132,120,16,32,2,106,122,32,16, + 0,252,128,128,240,128,128,252,2,106,122,16,32,0,252,128, + 128,240,128,128,252,2,106,122,48,72,0,252,128,128,240,128, + 128,252,2,106,122,72,72,0,252,128,128,240,128,128,252,18, + 90,122,64,32,0,248,32,32,32,32,32,248,18,90,122,32, + 64,0,248,32,32,32,32,32,248,18,90,122,32,80,0,248, + 32,32,32,32,32,248,18,90,122,136,136,0,248,32,32,32, + 32,32,248,2,105,121,248,68,68,68,228,68,68,68,248,2, + 106,122,100,152,0,132,196,164,164,148,140,132,2,106,122,32, + 16,0,120,132,132,132,132,132,120,2,106,122,16,32,0,120, + 132,132,132,132,132,120,2,106,122,48,72,0,120,132,132,132, + 132,132,120,2,106,122,100,152,0,120,132,132,132,132,132,120, + 2,106,122,72,72,0,120,132,132,132,132,132,120,3,102,118, + 132,72,48,48,72,132,1,107,123,4,120,140,148,148,164,164, + 164,196,120,128,2,106,122,32,16,0,132,132,132,132,132,132, + 120,2,106,122,16,32,0,132,132,132,132,132,132,120,2,106, + 122,48,72,0,132,132,132,132,132,132,120,2,106,122,72,72, + 0,132,132,132,132,132,132,120,18,90,122,16,32,0,136,136, + 80,32,32,32,32,2,105,121,128,248,132,132,132,248,128,128, + 128,18,89,121,96,144,144,160,160,144,136,136,176,2,105,121, + 32,16,0,120,4,124,132,140,116,2,105,121,16,32,0,120, + 4,124,132,140,116,2,105,121,48,72,0,120,4,124,132,140, + 116,2,105,121,100,152,0,120,4,124,132,140,116,2,105,121, + 72,72,0,120,4,124,132,140,116,2,106,122,48,72,48,0, + 120,4,124,132,140,116,2,102,118,104,20,124,144,148,104,0, + 104,120,120,132,128,128,132,120,16,32,2,105,121,32,16,0, + 120,132,252,128,132,120,2,105,121,16,32,0,120,132,252,128, + 132,120,2,105,121,48,72,0,120,132,252,128,132,120,2,105, + 121,72,72,0,120,132,252,128,132,120,18,89,121,64,32,0, + 96,32,32,32,32,248,18,89,121,32,64,0,96,32,32,32, + 32,248,18,89,121,96,144,0,96,32,32,32,32,248,18,89, + 121,144,144,0,96,32,32,32,32,248,2,106,122,72,48,80, + 8,120,132,132,132,132,120,2,105,121,100,152,0,184,196,132, + 132,132,132,2,105,121,32,16,0,120,132,132,132,132,120,2, + 105,121,16,32,0,120,132,132,132,132,120,2,105,121,48,72, + 0,120,132,132,132,132,120,2,105,121,100,152,0,120,132,132, + 132,132,120,2,105,121,72,72,0,120,132,132,132,132,120,19, + 87,119,32,32,0,248,0,32,32,1,104,120,4,120,140,148, + 164,196,120,128,2,105,121,32,16,0,132,132,132,132,140,116, + 2,105,121,16,32,0,132,132,132,132,140,116,2,105,121,48, + 72,0,132,132,132,132,140,116,2,105,121,72,72,0,132,132, + 132,132,140,116,0,107,123,16,32,0,132,132,132,140,116,4, + 132,120,0,106,122,128,128,184,196,132,132,196,184,128,128,0, + 107,123,72,72,0,132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13O[2158] U8G_SECTION(".progmem.u8g_font_7x13O") = { + 1,7,13,0,254,9,1,96,2,208,32,255,254,11,254,10, + 254,13,0,112,34,41,121,64,64,64,64,128,128,128,0,128, + 40,51,115,160,160,160,3,103,119,40,40,124,40,248,80,80, + 3,103,119,16,60,80,56,40,240,32,2,121,121,34,82,36, + 8,16,32,72,148,136,2,104,120,24,36,36,56,80,148,136, + 116,56,19,115,128,128,128,18,73,121,16,32,64,64,128,128, + 64,64,32,18,73,121,64,32,32,16,16,32,32,64,128,20, + 85,117,72,48,248,96,144,20,69,117,32,32,240,64,64,17, + 67,115,112,96,128,22,81,113,248,33,51,115,64,224,64,2, + 105,121,4,4,8,16,16,32,64,128,128,2,121,121,24,36, + 66,66,66,132,132,72,48,18,89,121,16,48,80,16,16,32, + 32,32,248,2,121,121,60,66,66,2,12,48,64,128,252,2, + 121,121,126,2,4,8,24,4,4,132,120,2,105,121,4,12, + 20,36,72,136,252,8,8,2,121,121,62,32,32,92,98,2, + 4,132,120,2,105,121,28,32,64,64,120,132,132,132,120,2, + 105,121,252,4,8,16,32,64,64,128,128,2,121,121,60,66, + 66,66,124,132,132,132,120,2,105,121,120,132,132,140,116,8, + 8,16,224,17,72,120,32,112,32,0,0,64,224,64,17,88, + 120,16,56,16,0,0,112,96,128,18,89,121,8,16,32,64, + 128,128,64,32,16,4,116,116,126,0,0,252,18,89,121,64, + 32,16,8,8,16,32,64,128,2,105,121,120,132,132,8,16, + 32,32,0,32,2,121,121,60,66,66,78,82,172,148,128,120, + 2,121,121,24,36,66,66,66,124,132,132,132,2,121,121,124, + 34,34,34,60,68,68,68,248,2,121,121,60,66,64,64,64, + 128,128,132,120,2,121,121,124,34,34,34,34,68,68,68,248, + 2,121,121,126,64,64,64,120,128,128,128,252,2,121,121,126, + 64,64,64,120,128,128,128,128,2,121,121,60,66,64,64,64, + 156,132,140,116,2,121,121,66,66,66,66,124,132,132,132,132, + 2,105,121,124,16,16,16,16,32,32,32,248,2,121,121,14, + 4,4,4,4,8,8,136,112,2,121,121,66,68,72,80,96, + 160,144,136,132,2,105,121,64,64,64,64,64,128,128,128,252, + 2,121,121,66,102,102,90,90,132,132,132,132,2,121,121,66, + 66,98,82,74,140,132,132,132,2,121,121,60,66,66,66,66, + 132,132,132,120,2,121,121,124,66,66,66,124,128,128,128,128, + 1,122,122,60,66,66,66,66,132,164,148,120,4,2,121,121, + 124,66,66,66,124,160,144,136,132,2,121,121,60,66,64,64, + 56,4,4,132,120,18,89,121,248,32,32,32,32,64,64,64, + 64,2,121,121,66,66,66,66,66,132,132,132,120,2,105,121, + 132,132,136,136,80,80,96,96,96,2,121,121,66,66,66,66, + 90,180,204,204,132,2,121,121,66,68,36,40,16,40,72,68, + 132,18,89,121,136,136,80,80,32,32,64,64,64,2,121,121, + 126,2,4,8,16,32,64,128,252,17,91,123,120,64,64,64, + 64,64,128,128,128,128,240,18,73,121,128,128,64,64,32,32, + 32,16,16,17,91,123,120,8,8,8,8,8,16,16,16,16, + 240,24,83,115,32,80,136,1,97,113,252,42,34,114,128,64, + 2,118,118,60,2,124,132,140,116,2,121,121,64,64,64,92, + 98,66,132,196,184,2,118,118,60,66,128,128,132,120,2,121, + 121,2,2,2,58,68,132,132,140,116,2,118,118,60,66,124, + 128,132,120,2,105,121,56,68,64,64,240,64,128,128,128,0, + 120,120,58,68,136,112,128,120,132,120,2,121,121,32,32,64, + 92,98,66,132,132,132,18,88,120,16,0,48,16,16,32,32, + 248,0,106,122,4,0,12,4,4,8,8,136,136,112,2,105, + 121,64,64,64,68,88,96,144,136,132,18,89,121,48,16,16, + 16,16,32,32,32,248,2,102,118,104,84,84,168,168,136,2, + 118,118,92,98,66,132,132,132,2,118,118,60,66,66,132,132, + 120,0,120,120,92,98,66,196,184,128,128,128,0,120,120,58, + 70,130,140,116,4,4,4,2,102,118,184,68,64,128,128,128, + 2,118,118,60,66,32,24,132,120,18,88,120,64,64,240,64, + 128,128,136,112,2,118,118,66,66,66,132,140,116,18,86,118, + 136,136,144,144,160,64,2,102,118,68,68,84,168,168,80,2, + 118,118,66,36,24,48,72,132,0,120,120,66,66,132,140,116, + 4,132,120,2,118,118,126,4,24,32,64,252,17,91,123,56, + 64,64,64,32,192,64,128,128,128,112,34,41,121,64,64,64, + 64,64,128,128,128,128,1,107,123,112,8,8,8,16,28,32, + 16,16,16,224,24,83,115,72,168,144,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,13,0,112,34,41, + 121,64,0,64,64,64,128,128,128,128,3,104,120,16,56,84, + 80,160,168,112,32,2,121,121,28,34,32,32,112,32,64,68, + 184,3,118,118,66,60,36,72,120,132,2,105,121,68,68,40, + 40,124,16,248,32,32,34,41,121,64,64,64,64,0,128,128, + 128,128,2,106,122,24,36,32,48,72,72,48,16,144,96,25, + 66,114,144,144,2,121,121,60,66,90,82,82,164,180,132,120, + 4,103,119,56,4,60,68,60,0,248,3,103,119,20,40,80, + 160,160,80,40,20,83,115,248,16,16,22,65,113,240,2,121, + 121,60,66,90,86,172,180,172,132,120,26,81,113,248,23,68, + 116,96,144,144,96,19,87,119,16,16,120,32,32,0,248,22, + 70,118,32,80,16,96,128,224,22,70,118,96,16,96,32,160, + 64,42,34,114,64,128,1,119,119,66,66,66,132,204,180,128, + 2,105,121,124,232,232,232,40,80,80,80,80,38,33,113,192, + 32,34,114,64,128,38,54,118,32,96,32,64,64,224,21,86, + 118,48,72,72,48,0,240,3,103,119,80,40,20,20,40,80, + 160,2,106,122,32,96,32,64,68,236,20,40,56,8,2,106, + 122,32,96,32,64,72,244,4,24,32,56,2,106,122,96,16, + 96,32,164,76,20,40,56,8,2,105,121,16,0,16,16,32, + 64,132,132,120,2,122,122,16,8,0,24,36,66,66,124,132, + 132,2,122,122,8,16,0,24,36,66,66,124,132,132,2,122, + 122,24,36,0,24,36,66,66,124,132,132,2,122,122,50,76, + 0,24,36,66,66,124,132,132,2,122,122,36,36,0,24,36, + 66,66,124,132,132,2,122,122,24,36,24,24,36,66,66,124, + 132,132,2,121,121,46,80,80,80,124,160,160,160,188,0,123, + 123,60,66,64,64,64,128,128,132,120,16,32,2,122,122,16, + 8,0,126,64,64,112,128,128,252,2,122,122,8,16,0,126, + 64,64,112,128,128,252,2,122,122,24,36,0,126,64,64,112, + 128,128,252,2,122,122,36,36,0,126,64,64,112,128,128,252, + 2,106,122,32,16,0,124,16,16,32,32,32,248,2,106,122, + 16,32,0,124,16,16,32,32,32,248,2,106,122,16,40,0, + 124,16,16,32,32,32,248,2,106,122,68,68,0,124,16,16, + 32,32,32,248,2,121,121,124,34,34,34,242,68,68,68,248, + 2,122,122,50,76,0,66,98,82,82,140,140,132,2,122,122, + 16,8,0,60,66,66,132,132,132,120,2,122,122,8,16,0, + 60,66,66,132,132,132,120,2,122,122,24,36,0,60,66,66, + 132,132,132,120,2,122,122,50,76,0,60,66,66,132,132,132, + 120,2,122,122,36,36,0,60,66,66,132,132,132,120,3,118, + 118,66,36,24,48,72,132,1,123,123,2,60,70,74,74,82, + 164,164,196,120,128,2,122,122,16,8,0,66,66,66,132,132, + 132,120,2,122,122,8,16,0,66,66,66,132,132,132,120,2, + 122,122,24,36,0,66,66,66,132,132,132,120,2,122,122,36, + 36,0,66,66,66,132,132,132,120,18,90,122,16,32,0,136, + 136,80,32,32,64,64,2,121,121,64,124,66,66,66,124,128, + 128,128,18,89,121,48,72,72,80,80,144,136,136,176,2,121, + 121,16,8,0,60,2,124,132,140,116,2,121,121,8,16,0, + 60,2,124,132,140,116,2,121,121,24,36,0,60,2,124,132, + 140,116,2,121,121,50,76,0,60,2,124,132,140,116,2,121, + 121,36,36,0,60,2,124,132,140,116,2,122,122,24,36,24, + 0,60,2,124,132,140,116,2,118,118,52,10,124,144,148,104, + 0,120,120,60,66,128,128,132,120,16,32,2,121,121,16,8, + 0,60,66,124,128,132,120,2,121,121,8,16,0,60,66,124, + 128,132,120,2,121,121,24,36,0,60,66,124,128,132,120,2, + 121,121,36,36,0,60,66,124,128,132,120,18,89,121,32,16, + 0,48,16,32,32,32,248,18,89,121,16,32,0,48,16,32, + 32,32,248,18,89,121,48,72,0,48,16,32,32,32,248,18, + 89,121,72,72,0,48,16,32,32,32,248,2,122,122,36,24, + 40,4,60,66,66,132,132,120,2,121,121,50,76,0,92,98, + 66,132,132,132,2,121,121,16,8,0,60,66,66,132,132,120, + 2,121,121,8,16,0,60,66,66,132,132,120,2,121,121,24, + 36,0,60,66,66,132,132,120,2,121,121,50,76,0,60,66, + 66,132,132,120,2,121,121,36,36,0,60,66,66,132,132,120, + 19,71,119,32,32,0,240,0,64,64,1,120,120,2,60,74, + 82,164,196,120,128,2,121,121,16,8,0,66,66,66,132,140, + 116,2,121,121,8,16,0,66,66,66,132,140,116,2,121,121, + 24,36,0,66,66,66,132,140,116,2,121,121,36,36,0,66, + 66,66,132,140,116,0,123,123,8,16,0,66,66,132,140,116, + 4,132,120,0,122,122,64,64,92,98,66,132,196,184,128,128, + 0,123,123,36,36,0,66,66,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13Or[1035] U8G_SECTION(".progmem.u8g_font_7x13Or") = { + 1,7,13,0,254,9,1,96,2,208,32,127,254,11,254,10, + 254,13,0,112,34,41,121,64,64,64,64,128,128,128,0,128, + 40,51,115,160,160,160,3,103,119,40,40,124,40,248,80,80, + 3,103,119,16,60,80,56,40,240,32,2,121,121,34,82,36, + 8,16,32,72,148,136,2,104,120,24,36,36,56,80,148,136, + 116,56,19,115,128,128,128,18,73,121,16,32,64,64,128,128, + 64,64,32,18,73,121,64,32,32,16,16,32,32,64,128,20, + 85,117,72,48,248,96,144,20,69,117,32,32,240,64,64,17, + 67,115,112,96,128,22,81,113,248,33,51,115,64,224,64,2, + 105,121,4,4,8,16,16,32,64,128,128,2,121,121,24,36, + 66,66,66,132,132,72,48,18,89,121,16,48,80,16,16,32, + 32,32,248,2,121,121,60,66,66,2,12,48,64,128,252,2, + 121,121,126,2,4,8,24,4,4,132,120,2,105,121,4,12, + 20,36,72,136,252,8,8,2,121,121,62,32,32,92,98,2, + 4,132,120,2,105,121,28,32,64,64,120,132,132,132,120,2, + 105,121,252,4,8,16,32,64,64,128,128,2,121,121,60,66, + 66,66,124,132,132,132,120,2,105,121,120,132,132,140,116,8, + 8,16,224,17,72,120,32,112,32,0,0,64,224,64,17,88, + 120,16,56,16,0,0,112,96,128,18,89,121,8,16,32,64, + 128,128,64,32,16,4,116,116,126,0,0,252,18,89,121,64, + 32,16,8,8,16,32,64,128,2,105,121,120,132,132,8,16, + 32,32,0,32,2,121,121,60,66,66,78,82,172,148,128,120, + 2,121,121,24,36,66,66,66,124,132,132,132,2,121,121,124, + 34,34,34,60,68,68,68,248,2,121,121,60,66,64,64,64, + 128,128,132,120,2,121,121,124,34,34,34,34,68,68,68,248, + 2,121,121,126,64,64,64,120,128,128,128,252,2,121,121,126, + 64,64,64,120,128,128,128,128,2,121,121,60,66,64,64,64, + 156,132,140,116,2,121,121,66,66,66,66,124,132,132,132,132, + 2,105,121,124,16,16,16,16,32,32,32,248,2,121,121,14, + 4,4,4,4,8,8,136,112,2,121,121,66,68,72,80,96, + 160,144,136,132,2,105,121,64,64,64,64,64,128,128,128,252, + 2,121,121,66,102,102,90,90,132,132,132,132,2,121,121,66, + 66,98,82,74,140,132,132,132,2,121,121,60,66,66,66,66, + 132,132,132,120,2,121,121,124,66,66,66,124,128,128,128,128, + 1,122,122,60,66,66,66,66,132,164,148,120,4,2,121,121, + 124,66,66,66,124,160,144,136,132,2,121,121,60,66,64,64, + 56,4,4,132,120,18,89,121,248,32,32,32,32,64,64,64, + 64,2,121,121,66,66,66,66,66,132,132,132,120,2,105,121, + 132,132,136,136,80,80,96,96,96,2,121,121,66,66,66,66, + 90,180,204,204,132,2,121,121,66,68,36,40,16,40,72,68, + 132,18,89,121,136,136,80,80,32,32,64,64,64,2,121,121, + 126,2,4,8,16,32,64,128,252,17,91,123,120,64,64,64, + 64,64,128,128,128,128,240,18,73,121,128,128,64,64,32,32, + 32,16,16,17,91,123,120,8,8,8,8,8,16,16,16,16, + 240,24,83,115,32,80,136,1,97,113,252,42,34,114,128,64, + 2,118,118,60,2,124,132,140,116,2,121,121,64,64,64,92, + 98,66,132,196,184,2,118,118,60,66,128,128,132,120,2,121, + 121,2,2,2,58,68,132,132,140,116,2,118,118,60,66,124, + 128,132,120,2,105,121,56,68,64,64,240,64,128,128,128,0, + 120,120,58,68,136,112,128,120,132,120,2,121,121,32,32,64, + 92,98,66,132,132,132,18,88,120,16,0,48,16,16,32,32, + 248,0,106,122,4,0,12,4,4,8,8,136,136,112,2,105, + 121,64,64,64,68,88,96,144,136,132,18,89,121,48,16,16, + 16,16,32,32,32,248,2,102,118,104,84,84,168,168,136,2, + 118,118,92,98,66,132,132,132,2,118,118,60,66,66,132,132, + 120,0,120,120,92,98,66,196,184,128,128,128,0,120,120,58, + 70,130,140,116,4,4,4,2,102,118,184,68,64,128,128,128, + 2,118,118,60,66,32,24,132,120,18,88,120,64,64,240,64, + 128,128,136,112,2,118,118,66,66,66,132,140,116,18,86,118, + 136,136,144,144,160,64,2,102,118,68,68,84,168,168,80,2, + 118,118,66,36,24,48,72,132,0,120,120,66,66,132,140,116, + 4,132,120,2,118,118,126,4,24,32,64,252,17,91,123,56, + 64,64,64,32,192,64,128,128,128,112,34,41,121,64,64,64, + 64,64,128,128,128,128,1,107,123,112,8,8,8,16,28,32, + 16,16,16,224,24,83,115,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 6 h=11 x= 3 y=11 dx= 7 dy= 0 ascent=11 len=11 + Font Bounding box w= 7 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x13r[1034] U8G_SECTION(".progmem.u8g_font_7x13r") = { + 1,7,13,0,254,9,1,95,2,207,32,127,254,11,254,10, + 254,13,0,112,50,25,121,128,128,128,128,128,128,128,0,128, + 40,51,115,160,160,160,19,87,119,80,80,248,80,248,80,80, + 19,87,119,32,120,160,112,40,240,32,2,105,121,68,164,72, + 16,16,32,72,148,136,2,103,119,96,144,144,96,148,136,116, + 56,19,115,128,128,128,34,57,121,32,64,64,128,128,128,64, + 64,32,34,57,121,128,64,64,32,32,32,64,64,128,4,101, + 117,72,48,252,48,72,20,85,117,32,32,248,32,32,17,67, + 115,112,96,128,22,81,113,248,33,51,115,64,224,64,18,89, + 121,8,8,16,16,32,64,64,128,128,2,105,121,48,72,132, + 132,132,132,132,72,48,18,89,121,32,96,160,32,32,32,32, + 32,248,2,105,121,120,132,132,4,8,48,64,128,252,2,105, + 121,252,4,8,16,56,4,4,132,120,2,105,121,8,24,40, + 72,136,136,252,8,8,2,105,121,252,128,128,184,196,4,4, + 132,120,2,105,121,56,64,128,128,184,196,132,132,120,2,105, + 121,252,4,8,16,16,32,32,64,64,2,105,121,120,132,132, + 132,120,132,132,132,120,2,105,121,120,132,132,140,116,4,4, + 8,112,33,56,120,64,224,64,0,0,64,224,64,17,72,120, + 32,112,32,0,0,112,96,128,18,89,121,8,16,32,64,128, + 64,32,16,8,4,100,116,252,0,0,252,18,89,121,128,64, + 32,16,8,16,32,64,128,2,105,121,120,132,132,4,8,16, + 16,0,16,2,105,121,120,132,132,156,164,172,148,128,120,2, + 105,121,48,72,132,132,132,252,132,132,132,2,105,121,248,68, + 68,68,120,68,68,68,248,2,105,121,120,132,128,128,128,128, + 128,132,120,2,105,121,248,68,68,68,68,68,68,68,248,2, + 105,121,252,128,128,128,240,128,128,128,252,2,105,121,252,128, + 128,128,240,128,128,128,128,2,105,121,120,132,128,128,128,156, + 132,140,116,2,105,121,132,132,132,132,252,132,132,132,132,18, + 89,121,248,32,32,32,32,32,32,32,248,2,105,121,28,8, + 8,8,8,8,8,136,112,2,105,121,132,136,144,160,192,160, + 144,136,132,2,105,121,128,128,128,128,128,128,128,128,252,2, + 105,121,132,204,204,180,180,132,132,132,132,2,105,121,132,132, + 196,164,148,140,132,132,132,2,105,121,120,132,132,132,132,132, + 132,132,120,2,105,121,248,132,132,132,248,128,128,128,128,1, + 106,122,120,132,132,132,132,132,164,148,120,4,2,105,121,248, + 132,132,132,248,160,144,136,132,2,105,121,120,132,128,128,120, + 4,4,132,120,18,89,121,248,32,32,32,32,32,32,32,32, + 2,105,121,132,132,132,132,132,132,132,132,120,2,105,121,132, + 132,132,72,72,72,48,48,48,2,105,121,132,132,132,132,180, + 180,204,204,132,2,105,121,132,132,72,72,48,72,72,132,132, + 18,89,121,136,136,80,80,32,32,32,32,32,2,105,121,252, + 4,8,16,48,32,64,128,252,17,75,123,240,128,128,128,128, + 128,128,128,128,128,240,18,89,121,128,128,64,64,32,16,16, + 8,8,17,75,123,240,16,16,16,16,16,16,16,16,16,240, + 24,83,115,32,80,136,1,97,113,252,42,34,114,128,64,2, + 102,118,120,4,124,132,140,116,2,105,121,128,128,128,184,196, + 132,132,196,184,2,102,118,120,132,128,128,132,120,2,105,121, + 4,4,4,116,140,132,132,140,116,2,102,118,120,132,252,128, + 132,120,2,105,121,56,68,64,64,240,64,64,64,64,0,104, + 120,116,136,136,112,128,120,132,120,2,105,121,128,128,128,184, + 196,132,132,132,132,18,88,120,32,0,96,32,32,32,32,248, + 16,90,122,8,0,24,8,8,8,8,136,136,112,2,105,121, + 128,128,128,136,144,224,144,136,132,18,89,121,96,32,32,32, + 32,32,32,32,248,18,86,118,208,168,168,168,168,136,2,102, + 118,184,196,132,132,132,132,2,102,118,120,132,132,132,132,120, + 0,104,120,184,196,132,196,184,128,128,128,0,104,120,116,140, + 132,140,116,4,4,4,2,102,118,184,68,64,64,64,64,2, + 102,118,120,132,96,24,132,120,2,104,120,64,64,240,64,64, + 64,68,56,2,102,118,132,132,132,132,140,116,18,86,118,136, + 136,136,80,80,32,18,86,118,136,136,168,168,168,80,2,102, + 118,132,72,48,48,72,132,0,104,120,132,132,132,140,116,4, + 132,120,2,102,118,252,8,16,32,64,252,17,91,123,56,64, + 64,64,32,192,32,64,64,64,56,50,25,121,128,128,128,128, + 128,128,128,128,128,17,91,123,224,16,16,16,32,24,32,16, + 16,16,224,24,83,115,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=14 x= 2 y=12 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14B[2390] U8G_SECTION(".progmem.u8g_font_7x14B") = { + 1,7,14,0,254,10,1,137,3,30,32,255,254,12,254,11, + 254,14,0,112,34,42,122,192,192,192,192,192,192,192,0,192, + 192,25,84,116,216,216,216,216,2,106,122,120,120,120,252,120, + 120,252,120,120,120,1,107,123,48,120,180,180,112,56,52,180, + 180,120,48,2,106,122,108,220,216,112,16,32,56,108,236,216, + 2,106,122,56,108,108,108,56,108,220,216,216,108,41,36,116, + 192,192,192,192,16,93,125,24,48,96,96,192,192,192,192,192, + 96,96,48,24,16,93,125,192,96,48,48,24,24,24,24,24, + 48,48,96,192,5,103,119,180,180,120,48,120,180,180,3,103, + 119,48,48,48,252,48,48,48,32,52,116,224,96,96,192,6, + 97,113,252,34,34,114,192,192,0,109,125,12,12,12,24,24, + 48,48,48,96,96,192,192,192,2,106,122,120,204,204,204,204, + 204,204,204,204,120,2,106,122,48,112,240,48,48,48,48,48, + 48,252,2,106,122,120,204,204,12,24,24,48,96,192,252,2, + 106,122,120,204,204,12,56,12,12,204,204,120,2,106,122,8, + 24,24,56,120,216,216,252,24,24,2,106,122,252,192,192,248, + 204,12,12,204,204,120,2,106,122,56,108,204,192,248,204,204, + 204,204,120,2,106,122,252,204,216,24,48,48,48,48,48,48, + 2,106,122,120,204,204,204,120,120,204,204,204,120,2,106,122, + 120,204,204,204,204,124,12,204,216,112,35,39,119,192,192,0, + 0,0,192,192,33,57,121,96,96,0,0,0,224,96,96,192, + 2,105,121,12,24,48,96,192,96,48,24,12,4,100,116,252, + 0,0,252,2,105,121,192,96,48,24,12,24,48,96,192,2, + 106,122,120,204,204,24,48,48,48,0,48,48,2,106,122,56, + 108,220,244,244,244,244,220,96,60,2,106,122,120,252,204,204, + 204,204,252,204,204,204,2,106,122,248,204,204,200,248,204,204, + 204,204,248,2,106,122,120,204,204,192,192,192,192,204,204,120, + 2,106,122,240,216,204,204,204,204,204,204,216,240,2,106,122, + 252,192,192,192,248,192,192,192,192,252,2,106,122,252,192,192, + 192,248,192,192,192,192,192,2,106,122,120,204,204,192,192,220, + 204,204,204,120,2,106,122,204,204,204,204,252,204,204,204,204, + 204,2,106,122,252,48,48,48,48,48,48,48,48,252,2,106, + 122,12,12,12,12,12,12,12,204,216,112,2,106,122,204,216, + 240,224,224,240,240,216,204,204,2,106,122,192,192,192,192,192, + 192,192,192,192,252,2,106,122,132,204,204,252,252,204,204,204, + 204,204,2,106,122,204,204,236,236,236,220,220,220,204,204,2, + 106,122,120,204,204,204,204,204,204,204,204,120,2,106,122,248, + 204,204,204,204,248,192,192,192,192,0,108,124,120,204,204,204, + 204,204,236,220,204,120,12,4,2,106,122,248,204,204,204,248, + 216,204,204,204,204,2,106,122,120,204,204,96,48,48,24,204, + 204,120,2,106,122,252,48,48,48,48,48,48,48,48,48,2, + 106,122,204,204,204,204,204,204,204,204,204,120,2,106,122,204, + 204,204,204,204,204,204,120,120,48,2,106,122,204,204,204,204, + 204,252,252,252,252,72,2,106,122,204,204,120,120,48,48,120, + 120,204,204,2,106,122,204,204,204,120,120,48,48,48,48,48, + 2,106,122,252,12,24,24,48,48,96,96,192,252,16,93,125, + 248,192,192,192,192,192,192,192,192,192,192,192,248,0,109,125, + 192,192,192,96,96,48,48,48,24,24,12,12,12,16,93,125, + 248,24,24,24,24,24,24,24,24,24,24,24,248,11,99,115, + 48,120,204,0,98,114,252,252,26,67,115,192,96,48,2,103, + 119,120,204,28,108,204,204,124,2,106,122,192,192,192,248,204, + 204,204,204,204,248,2,103,119,120,204,192,192,192,204,120,2, + 106,122,12,12,12,124,204,204,204,204,204,124,2,103,119,120, + 204,204,252,192,204,120,2,106,122,24,60,48,48,252,48,48, + 48,48,48,0,105,121,116,220,216,216,112,64,248,204,120,2, + 106,122,192,192,192,248,204,204,204,204,204,204,34,42,122,192, + 192,0,192,192,192,192,192,192,192,16,92,124,24,24,0,24, + 24,24,24,24,24,24,216,112,2,106,122,192,192,192,200,216, + 240,240,216,204,196,34,42,122,192,192,192,192,192,192,192,192, + 192,192,2,103,119,216,252,252,252,252,252,204,2,103,119,248, + 204,204,204,204,204,204,2,103,119,120,204,204,204,204,204,120, + 0,105,121,248,204,204,204,204,204,248,192,192,0,105,121,124, + 204,204,204,204,204,124,12,12,2,103,119,248,204,204,192,192, + 192,192,2,103,119,120,204,96,48,24,204,120,2,106,122,48, + 48,48,252,48,48,48,48,48,28,2,103,119,204,204,204,204, + 204,204,124,2,103,119,204,204,204,120,120,48,48,2,103,119, + 204,204,252,252,252,252,72,2,103,119,204,204,120,48,120,204, + 204,0,105,121,204,204,108,108,56,56,24,216,112,2,103,119, + 252,12,24,48,96,192,252,16,93,125,56,96,96,96,96,96, + 192,96,96,96,96,96,56,32,45,125,192,192,192,192,192,192, + 192,192,192,192,192,192,192,16,93,125,224,48,48,48,48,48, + 24,48,48,48,48,48,224,9,100,116,68,244,188,136,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,14, + 0,112,34,42,122,192,192,0,192,192,192,192,192,192,192,1, + 105,121,48,124,180,176,176,176,180,124,48,2,105,121,56,108, + 96,96,240,96,96,248,108,4,102,118,204,120,104,88,120,204, + 2,106,122,132,204,120,252,48,48,252,48,48,48,34,42,122, + 192,192,192,192,0,0,192,192,192,192,2,107,123,120,204,96, + 48,120,204,120,48,24,204,120,27,82,114,216,216,2,107,123, + 120,204,252,236,236,236,236,236,252,204,120,21,88,120,112,216, + 120,216,216,120,0,248,2,103,119,28,60,120,240,120,60,28, + 2,101,117,252,252,12,12,12,22,65,113,240,2,107,123,120, + 204,252,236,236,252,236,236,236,204,120,28,81,113,248,25,84, + 116,112,216,216,112,2,102,118,48,48,252,48,48,252,22,87, + 119,112,216,24,48,96,192,248,22,87,119,112,216,24,112,24, + 216,112,26,67,115,48,96,192,0,104,120,204,204,204,204,220, + 252,192,192,0,108,124,124,236,236,236,236,108,44,44,44,44, + 44,60,39,34,114,192,192,32,51,115,96,96,192,22,54,118, + 96,224,96,96,96,96,22,86,118,112,216,216,112,0,248,2, + 103,119,224,112,56,28,56,112,224,2,106,122,100,236,104,120, + 120,52,108,92,220,140,2,106,122,100,236,104,120,120,56,116, + 76,216,156,2,106,122,196,108,232,120,240,60,108,220,156,12, + 0,107,123,96,96,0,96,96,96,96,96,204,204,120,2,108, + 124,96,48,0,120,252,204,204,204,252,204,204,204,2,108,124, + 24,48,0,120,252,204,204,204,252,204,204,204,2,108,124,48, + 120,0,120,252,204,204,204,252,204,204,204,2,108,124,104,176, + 0,120,252,204,204,204,252,204,204,204,2,108,124,204,204,0, + 120,252,204,204,204,252,204,204,204,2,108,124,48,72,48,0, + 120,252,204,204,252,204,204,204,2,122,122,126,216,216,216,220, + 248,216,216,216,222,0,108,124,120,204,204,192,192,192,192,204, + 204,120,48,96,2,108,124,96,48,0,252,192,192,192,248,192, + 192,192,252,2,108,124,24,48,0,252,192,192,192,248,192,192, + 192,252,2,108,124,48,120,0,252,192,192,192,248,192,192,192, + 252,2,108,124,204,204,0,252,192,192,192,248,192,192,192,252, + 2,108,124,96,48,0,252,48,48,48,48,48,48,48,252,2, + 108,124,24,48,0,252,48,48,48,48,48,48,48,252,2,108, + 124,48,120,0,252,48,48,48,48,48,48,48,252,2,108,124, + 204,204,0,252,48,48,48,48,48,48,48,252,2,122,122,120, + 108,102,102,254,102,102,102,108,120,2,108,124,104,176,0,204, + 236,236,236,220,220,220,204,204,2,108,124,96,48,0,120,204, + 204,204,204,204,204,204,120,2,108,124,24,48,0,120,204,204, + 204,204,204,204,204,120,2,108,124,48,120,0,120,204,204,204, + 204,204,204,204,120,2,108,124,104,176,0,120,204,204,204,204, + 204,204,204,120,2,108,124,204,204,0,120,204,204,204,204,204, + 204,204,120,2,119,119,198,108,56,56,108,198,130,0,110,126, + 4,4,120,220,220,220,220,236,236,236,236,120,128,128,2,108, + 124,96,48,0,204,204,204,204,204,204,204,204,120,2,108,124, + 24,48,0,204,204,204,204,204,204,204,204,120,2,108,124,48, + 120,0,204,204,204,204,204,204,204,204,120,2,108,124,204,204, + 0,204,204,204,204,204,204,204,204,120,2,108,124,24,48,0, + 204,204,204,120,120,120,48,48,48,2,106,122,192,192,248,204, + 204,204,204,248,192,192,2,106,122,56,108,108,108,120,108,108, + 108,108,248,2,106,122,96,48,0,120,204,60,108,204,204,124, + 2,106,122,24,48,0,120,204,60,108,204,204,124,2,106,122, + 48,120,0,120,204,60,108,204,204,124,2,106,122,104,176,0, + 120,204,60,108,204,204,124,2,106,122,204,204,0,120,204,60, + 108,204,204,124,2,107,123,48,72,48,0,120,204,60,108,204, + 204,124,2,119,119,124,218,58,94,216,222,124,0,105,121,120, + 204,192,192,192,204,120,48,96,2,106,122,96,48,0,120,204, + 204,252,192,204,120,2,106,122,24,48,0,120,204,204,252,192, + 204,120,2,106,122,48,120,0,120,204,204,252,192,204,120,2, + 106,122,204,204,0,120,204,204,252,192,204,120,34,58,122,192, + 96,0,96,96,96,96,96,96,96,34,58,122,96,192,0,192, + 192,192,192,192,192,192,18,74,122,96,240,0,96,96,96,96, + 96,96,96,2,106,122,204,204,0,48,48,48,48,48,48,48, + 2,107,123,216,112,240,152,12,124,204,204,204,204,120,2,106, + 122,104,176,0,248,204,204,204,204,204,204,2,106,122,96,48, + 0,120,204,204,204,204,204,120,2,106,122,24,48,0,120,204, + 204,204,204,204,120,2,106,122,48,120,0,120,204,204,204,204, + 204,120,2,106,122,104,176,0,120,204,204,204,204,204,120,2, + 106,122,204,204,0,120,204,204,204,204,204,120,2,104,120,48, + 48,0,252,252,0,48,48,0,107,123,4,8,120,220,220,236, + 236,204,120,128,128,2,106,122,96,48,0,204,204,204,204,204, + 204,124,2,106,122,24,48,0,204,204,204,204,204,204,124,2, + 106,122,48,120,0,204,204,204,204,204,204,124,2,106,122,204, + 204,0,204,204,204,204,204,204,124,0,108,124,24,48,0,204, + 204,204,120,56,56,48,240,96,0,108,124,192,192,192,248,204, + 204,204,204,204,248,192,192,0,108,124,204,204,0,204,204,204, + 120,56,56,48,240,96}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 6 h=13 x= 2 y=12 dx= 7 dy= 0 ascent=12 len=13 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14Br[1151] U8G_SECTION(".progmem.u8g_font_7x14Br") = { + 1,7,14,0,254,10,1,137,3,30,32,127,254,12,254,11, + 254,14,0,112,34,42,122,192,192,192,192,192,192,192,0,192, + 192,25,84,116,216,216,216,216,2,106,122,120,120,120,252,120, + 120,252,120,120,120,1,107,123,48,120,180,180,112,56,52,180, + 180,120,48,2,106,122,108,220,216,112,16,32,56,108,236,216, + 2,106,122,56,108,108,108,56,108,220,216,216,108,41,36,116, + 192,192,192,192,16,93,125,24,48,96,96,192,192,192,192,192, + 96,96,48,24,16,93,125,192,96,48,48,24,24,24,24,24, + 48,48,96,192,5,103,119,180,180,120,48,120,180,180,3,103, + 119,48,48,48,252,48,48,48,32,52,116,224,96,96,192,6, + 97,113,252,34,34,114,192,192,0,109,125,12,12,12,24,24, + 48,48,48,96,96,192,192,192,2,106,122,120,204,204,204,204, + 204,204,204,204,120,2,106,122,48,112,240,48,48,48,48,48, + 48,252,2,106,122,120,204,204,12,24,24,48,96,192,252,2, + 106,122,120,204,204,12,56,12,12,204,204,120,2,106,122,8, + 24,24,56,120,216,216,252,24,24,2,106,122,252,192,192,248, + 204,12,12,204,204,120,2,106,122,56,108,204,192,248,204,204, + 204,204,120,2,106,122,252,204,216,24,48,48,48,48,48,48, + 2,106,122,120,204,204,204,120,120,204,204,204,120,2,106,122, + 120,204,204,204,204,124,12,204,216,112,35,39,119,192,192,0, + 0,0,192,192,33,57,121,96,96,0,0,0,224,96,96,192, + 2,105,121,12,24,48,96,192,96,48,24,12,4,100,116,252, + 0,0,252,2,105,121,192,96,48,24,12,24,48,96,192,2, + 106,122,120,204,204,24,48,48,48,0,48,48,2,106,122,56, + 108,220,244,244,244,244,220,96,60,2,106,122,120,252,204,204, + 204,204,252,204,204,204,2,106,122,248,204,204,200,248,204,204, + 204,204,248,2,106,122,120,204,204,192,192,192,192,204,204,120, + 2,106,122,240,216,204,204,204,204,204,204,216,240,2,106,122, + 252,192,192,192,248,192,192,192,192,252,2,106,122,252,192,192, + 192,248,192,192,192,192,192,2,106,122,120,204,204,192,192,220, + 204,204,204,120,2,106,122,204,204,204,204,252,204,204,204,204, + 204,2,106,122,252,48,48,48,48,48,48,48,48,252,2,106, + 122,12,12,12,12,12,12,12,204,216,112,2,106,122,204,216, + 240,224,224,240,240,216,204,204,2,106,122,192,192,192,192,192, + 192,192,192,192,252,2,106,122,132,204,204,252,252,204,204,204, + 204,204,2,106,122,204,204,236,236,236,220,220,220,204,204,2, + 106,122,120,204,204,204,204,204,204,204,204,120,2,106,122,248, + 204,204,204,204,248,192,192,192,192,0,108,124,120,204,204,204, + 204,204,236,220,204,120,12,4,2,106,122,248,204,204,204,248, + 216,204,204,204,204,2,106,122,120,204,204,96,48,48,24,204, + 204,120,2,106,122,252,48,48,48,48,48,48,48,48,48,2, + 106,122,204,204,204,204,204,204,204,204,204,120,2,106,122,204, + 204,204,204,204,204,204,120,120,48,2,106,122,204,204,204,204, + 204,252,252,252,252,72,2,106,122,204,204,120,120,48,48,120, + 120,204,204,2,106,122,204,204,204,120,120,48,48,48,48,48, + 2,106,122,252,12,24,24,48,48,96,96,192,252,16,93,125, + 248,192,192,192,192,192,192,192,192,192,192,192,248,0,109,125, + 192,192,192,96,96,48,48,48,24,24,12,12,12,16,93,125, + 248,24,24,24,24,24,24,24,24,24,24,24,248,11,99,115, + 48,120,204,0,98,114,252,252,26,67,115,192,96,48,2,103, + 119,120,204,28,108,204,204,124,2,106,122,192,192,192,248,204, + 204,204,204,204,248,2,103,119,120,204,192,192,192,204,120,2, + 106,122,12,12,12,124,204,204,204,204,204,124,2,103,119,120, + 204,204,252,192,204,120,2,106,122,24,60,48,48,252,48,48, + 48,48,48,0,105,121,116,220,216,216,112,64,248,204,120,2, + 106,122,192,192,192,248,204,204,204,204,204,204,34,42,122,192, + 192,0,192,192,192,192,192,192,192,16,92,124,24,24,0,24, + 24,24,24,24,24,24,216,112,2,106,122,192,192,192,200,216, + 240,240,216,204,196,34,42,122,192,192,192,192,192,192,192,192, + 192,192,2,103,119,216,252,252,252,252,252,204,2,103,119,248, + 204,204,204,204,204,204,2,103,119,120,204,204,204,204,204,120, + 0,105,121,248,204,204,204,204,204,248,192,192,0,105,121,124, + 204,204,204,204,204,124,12,12,2,103,119,248,204,204,192,192, + 192,192,2,103,119,120,204,96,48,24,204,120,2,106,122,48, + 48,48,252,48,48,48,48,48,28,2,103,119,204,204,204,204, + 204,204,124,2,103,119,204,204,204,120,120,48,48,2,103,119, + 204,204,252,252,252,252,72,2,103,119,204,204,120,48,120,204, + 204,0,105,121,204,204,108,108,56,56,24,216,112,2,103,119, + 252,12,24,48,96,192,252,16,93,125,56,96,96,96,96,96, + 192,96,96,96,96,96,56,32,45,125,192,192,192,192,192,192, + 192,192,192,192,192,192,192,16,93,125,224,48,48,48,48,48, + 24,48,48,48,48,48,224,9,100,116,68,244,188,136,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=14 x= 3 y=12 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14[2374] U8G_SECTION(".progmem.u8g_font_7x14") = { + 1,7,14,0,254,10,1,138,3,30,32,255,254,12,254,11, + 254,14,0,112,50,26,122,128,128,128,128,128,128,128,0,128, + 128,41,52,116,160,160,160,160,18,90,122,80,80,80,248,80, + 80,248,80,80,80,1,107,123,16,120,148,148,80,56,20,148, + 148,120,16,2,106,122,100,148,152,112,16,32,56,100,164,152, + 2,106,122,48,72,72,72,48,100,148,136,152,100,57,20,116, + 128,128,128,128,32,77,125,16,32,64,64,128,128,128,128,128, + 64,64,32,16,16,77,125,128,64,32,32,16,16,16,16,16, + 32,32,64,128,19,87,119,32,168,112,32,112,168,32,19,87, + 119,32,32,32,248,32,32,32,32,36,116,192,64,64,128,22, + 81,113,248,33,51,115,64,224,64,0,109,125,4,4,8,8, + 16,16,16,32,32,64,64,128,128,2,106,122,48,72,132,132, + 132,132,132,132,72,48,18,90,122,32,96,160,32,32,32,32, + 32,32,248,2,106,122,120,132,132,4,8,8,16,32,64,252, + 2,106,122,252,4,8,16,56,4,4,132,132,120,2,106,122, + 8,24,40,40,72,72,136,252,8,8,2,106,122,252,128,128, + 248,132,4,4,132,132,120,2,106,122,56,64,128,128,184,196, + 132,132,132,120,2,106,122,252,4,8,8,16,16,32,32,64, + 64,2,106,122,120,132,132,72,48,72,132,132,132,120,2,106, + 122,120,132,132,132,140,116,4,132,136,112,34,56,120,64,224, + 64,0,0,64,224,64,33,40,120,192,192,0,0,192,64,64, + 128,18,89,121,8,16,32,64,128,64,32,16,8,5,100,116, + 252,0,0,252,18,89,121,128,64,32,16,8,16,32,64,128, + 2,106,122,120,132,132,8,16,16,16,0,16,16,2,106,122, + 56,68,156,164,164,164,164,156,64,60,2,106,122,48,72,132, + 132,132,252,132,132,132,132,2,106,122,240,136,132,136,240,136, + 132,132,136,240,2,106,122,120,132,132,128,128,128,128,132,132, + 120,2,106,122,240,136,132,132,132,132,132,132,136,240,2,106, + 122,252,128,128,128,240,128,128,128,128,252,2,106,122,252,128, + 128,128,240,128,128,128,128,128,2,106,122,120,132,132,128,128, + 156,132,132,140,116,2,106,122,132,132,132,132,252,132,132,132, + 132,132,18,90,122,248,32,32,32,32,32,32,32,32,248,2, + 106,122,28,8,8,8,8,8,8,136,136,112,2,106,122,132, + 136,144,160,192,160,144,136,132,132,2,106,122,128,128,128,128, + 128,128,128,128,128,252,2,106,122,132,204,204,180,180,132,132, + 132,132,132,2,106,122,132,132,196,196,164,148,140,140,132,132, + 2,106,122,120,132,132,132,132,132,132,132,132,120,2,106,122, + 248,132,132,132,132,248,128,128,128,128,0,108,124,120,132,132, + 132,132,132,228,148,140,120,8,4,2,106,122,248,132,132,132, + 132,248,144,136,132,132,2,106,122,120,132,132,128,96,24,4, + 132,132,120,2,122,122,254,16,16,16,16,16,16,16,16,16, + 2,106,122,132,132,132,132,132,132,132,132,132,120,2,106,122, + 132,132,132,132,72,72,72,48,48,48,18,90,122,136,136,136, + 136,136,136,168,168,168,80,2,106,122,132,132,72,72,48,48, + 72,72,132,132,18,90,122,136,136,136,80,80,32,32,32,32, + 32,2,106,122,252,4,8,16,16,32,64,64,128,252,32,77, + 125,240,128,128,128,128,128,128,128,128,128,128,128,240,0,109, + 125,128,128,64,64,32,32,32,16,16,8,8,4,4,16,77, + 125,240,16,16,16,16,16,16,16,16,16,16,16,240,10,99, + 115,48,72,132,0,97,113,252,42,51,115,128,64,32,2,103, + 119,120,132,4,124,132,132,124,2,106,122,128,128,128,184,196, + 132,132,132,196,184,2,103,119,120,132,128,128,128,132,120,2, + 106,122,4,4,4,116,140,132,132,132,140,116,2,103,119,120, + 132,132,252,128,132,120,2,106,122,24,36,32,32,248,32,32, + 32,32,32,0,105,121,116,136,136,136,112,64,184,132,120,2, + 106,122,128,128,128,184,196,132,132,132,132,132,18,90,122,32, + 32,0,96,32,32,32,32,32,248,16,92,124,8,8,0,24, + 8,8,8,8,8,136,136,112,2,106,122,128,128,128,136,144, + 160,224,144,136,132,18,90,122,96,32,32,32,32,32,32,32, + 32,248,18,87,119,208,168,168,168,168,168,136,2,103,119,184, + 196,132,132,132,132,132,2,103,119,120,132,132,132,132,132,120, + 0,105,121,184,196,132,132,132,196,184,128,128,0,105,121,116, + 140,132,132,132,140,116,4,4,2,103,119,184,196,132,128,128, + 128,128,2,103,119,120,132,64,48,8,132,120,2,106,122,32, + 32,32,248,32,32,32,32,36,24,2,103,119,132,132,132,132, + 132,140,116,18,87,119,136,136,136,80,80,32,32,18,87,119, + 136,136,168,168,168,168,80,2,103,119,132,132,72,48,72,132, + 132,0,105,121,132,132,132,132,140,116,4,132,120,2,103,119, + 252,8,16,32,32,64,252,32,77,125,48,64,64,64,64,64, + 128,64,64,64,64,64,48,48,29,125,128,128,128,128,128,128, + 128,128,128,128,128,128,128,16,77,125,192,32,32,32,32,32, + 16,32,32,32,32,32,192,9,100,116,64,164,148,8,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,14, + 0,112,50,26,122,128,128,0,128,128,128,128,128,128,128,1, + 105,121,32,120,164,160,160,160,164,120,32,18,89,121,48,72, + 64,64,240,64,64,240,72,4,102,118,132,120,72,72,120,132, + 18,90,122,136,80,80,32,248,32,248,32,32,32,50,26,122, + 128,128,128,128,0,0,128,128,128,128,2,107,123,120,132,64, + 48,72,132,72,48,8,132,120,27,66,114,144,144,2,107,123, + 120,132,180,204,196,196,196,204,180,132,120,21,88,120,112,136, + 120,136,152,104,0,248,2,103,119,20,40,80,160,80,40,20, + 18,84,116,248,8,8,8,22,65,113,240,2,107,123,120,132, + 244,204,204,244,204,204,204,132,120,27,81,113,248,25,68,116, + 96,144,144,96,18,86,118,32,32,248,32,32,248,22,71,119, + 96,144,16,32,64,128,240,22,71,119,96,144,16,96,16,144, + 96,42,51,115,32,64,128,16,88,120,136,136,136,136,216,168, + 128,128,16,92,124,120,168,168,168,168,104,40,40,40,40,40, + 56,55,17,113,128,32,35,115,64,64,128,38,55,119,64,192, + 64,64,64,64,224,22,70,118,96,144,144,96,0,240,2,103, + 119,160,80,40,20,40,80,160,2,106,122,64,196,72,72,80, + 36,44,84,156,132,2,106,122,64,196,72,72,80,40,52,68, + 136,156,2,106,122,196,36,72,48,208,36,76,84,156,4,0, + 107,123,32,32,0,32,32,32,32,64,132,132,120,2,108,124, + 32,16,0,48,72,132,132,252,132,132,132,132,2,108,124,16, + 32,0,48,72,132,132,252,132,132,132,132,2,108,124,48,72, + 0,48,72,132,132,252,132,132,132,132,2,108,124,100,152,0, + 48,72,132,132,252,132,132,132,132,2,107,123,72,0,48,72, + 132,132,252,132,132,132,132,2,107,123,48,72,48,72,132,132, + 252,132,132,132,132,2,106,122,60,80,144,144,252,144,144,144, + 144,156,0,108,124,120,132,132,128,128,128,128,132,132,120,16, + 32,2,108,124,32,16,0,252,128,128,128,248,128,128,128,252, + 2,108,124,16,32,0,252,128,128,128,248,128,128,128,252,2, + 108,124,48,72,0,252,128,128,128,248,128,128,128,252,2,107, + 123,72,0,252,128,128,128,248,128,128,128,252,18,92,124,64, + 32,0,248,32,32,32,32,32,32,32,248,18,92,124,16,32, + 0,248,32,32,32,32,32,32,32,248,18,92,124,32,80,0, + 248,32,32,32,32,32,32,32,248,18,91,123,80,0,248,32, + 32,32,32,32,32,32,248,2,122,122,120,68,66,66,242,66, + 66,66,68,120,2,108,124,100,152,0,196,196,164,164,148,148, + 148,140,140,2,108,124,32,16,0,120,132,132,132,132,132,132, + 132,120,2,108,124,16,32,0,120,132,132,132,132,132,132,132, + 120,2,108,124,48,72,0,120,132,132,132,132,132,132,132,120, + 2,108,124,100,152,0,120,132,132,132,132,132,132,132,120,2, + 107,123,72,0,120,132,132,132,132,132,132,132,120,2,119,119, + 130,68,40,16,40,68,130,0,110,126,4,4,120,140,148,148, + 148,164,164,164,196,120,128,128,2,108,124,32,16,0,132,132, + 132,132,132,132,132,132,120,2,108,124,16,32,0,132,132,132, + 132,132,132,132,132,120,2,108,124,48,72,0,132,132,132,132, + 132,132,132,132,120,2,107,123,72,0,132,132,132,132,132,132, + 132,132,120,18,92,124,16,32,0,136,136,80,80,32,32,32, + 32,32,2,106,122,128,128,248,132,132,132,132,248,128,128,2, + 106,122,48,72,72,72,112,72,68,68,68,248,2,106,122,32, + 16,0,120,132,4,124,132,132,124,2,106,122,8,16,0,120, + 132,4,124,132,132,124,2,106,122,48,72,0,120,132,4,124, + 132,132,124,2,106,122,100,152,0,120,132,4,124,132,132,124, + 2,105,121,72,0,120,132,4,124,132,132,124,2,107,123,48, + 72,48,0,120,132,4,124,132,132,124,2,119,119,124,146,50, + 94,144,146,124,0,105,121,120,132,128,128,128,132,120,16,32, + 2,106,122,32,16,0,120,132,132,252,128,132,120,2,106,122, + 16,32,0,120,132,132,252,128,132,120,2,106,122,48,72,0, + 120,132,132,252,128,132,120,2,105,121,72,0,120,132,132,252, + 128,132,120,18,90,122,64,32,0,96,32,32,32,32,32,248, + 18,90,122,16,32,0,96,32,32,32,32,32,248,18,90,122, + 96,144,0,96,32,32,32,32,32,248,18,89,121,80,0,96, + 32,32,32,32,32,248,18,91,123,80,32,80,8,120,136,136, + 136,136,136,112,2,106,122,100,152,0,184,196,132,132,132,132, + 132,2,106,122,32,16,0,120,132,132,132,132,132,120,2,106, + 122,16,32,0,120,132,132,132,132,132,120,2,106,122,48,72, + 0,120,132,132,132,132,132,120,2,106,122,100,152,0,120,132, + 132,132,132,132,120,2,105,121,72,0,120,132,132,132,132,132, + 120,2,101,117,48,0,252,0,48,0,107,123,4,8,120,148, + 148,164,164,196,120,128,128,2,106,122,32,16,0,132,132,132, + 132,132,140,116,2,106,122,16,32,0,132,132,132,132,132,140, + 116,2,106,122,48,72,0,132,132,132,132,132,140,116,2,105, + 121,72,0,132,132,132,132,132,140,116,0,108,124,16,32,0, + 132,132,68,72,40,56,16,144,96,0,108,124,128,128,128,184, + 196,132,132,132,196,184,128,128,0,107,123,72,0,132,132,68, + 72,40,56,16,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--14-130-75-75-C-70-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=13 x= 3 y=12 dx= 7 dy= 0 ascent=12 len=13 + Font Bounding box w= 7 h=14 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_7x14r[1151] U8G_SECTION(".progmem.u8g_font_7x14r") = { + 1,7,14,0,254,10,1,138,3,30,32,127,254,12,254,11, + 254,14,0,112,50,26,122,128,128,128,128,128,128,128,0,128, + 128,41,52,116,160,160,160,160,18,90,122,80,80,80,248,80, + 80,248,80,80,80,1,107,123,16,120,148,148,80,56,20,148, + 148,120,16,2,106,122,100,148,152,112,16,32,56,100,164,152, + 2,106,122,48,72,72,72,48,100,148,136,152,100,57,20,116, + 128,128,128,128,32,77,125,16,32,64,64,128,128,128,128,128, + 64,64,32,16,16,77,125,128,64,32,32,16,16,16,16,16, + 32,32,64,128,19,87,119,32,168,112,32,112,168,32,19,87, + 119,32,32,32,248,32,32,32,32,36,116,192,64,64,128,22, + 81,113,248,33,51,115,64,224,64,0,109,125,4,4,8,8, + 16,16,16,32,32,64,64,128,128,2,106,122,48,72,132,132, + 132,132,132,132,72,48,18,90,122,32,96,160,32,32,32,32, + 32,32,248,2,106,122,120,132,132,4,8,8,16,32,64,252, + 2,106,122,252,4,8,16,56,4,4,132,132,120,2,106,122, + 8,24,40,40,72,72,136,252,8,8,2,106,122,252,128,128, + 248,132,4,4,132,132,120,2,106,122,56,64,128,128,184,196, + 132,132,132,120,2,106,122,252,4,8,8,16,16,32,32,64, + 64,2,106,122,120,132,132,72,48,72,132,132,132,120,2,106, + 122,120,132,132,132,140,116,4,132,136,112,34,56,120,64,224, + 64,0,0,64,224,64,33,40,120,192,192,0,0,192,64,64, + 128,18,89,121,8,16,32,64,128,64,32,16,8,5,100,116, + 252,0,0,252,18,89,121,128,64,32,16,8,16,32,64,128, + 2,106,122,120,132,132,8,16,16,16,0,16,16,2,106,122, + 56,68,156,164,164,164,164,156,64,60,2,106,122,48,72,132, + 132,132,252,132,132,132,132,2,106,122,240,136,132,136,240,136, + 132,132,136,240,2,106,122,120,132,132,128,128,128,128,132,132, + 120,2,106,122,240,136,132,132,132,132,132,132,136,240,2,106, + 122,252,128,128,128,240,128,128,128,128,252,2,106,122,252,128, + 128,128,240,128,128,128,128,128,2,106,122,120,132,132,128,128, + 156,132,132,140,116,2,106,122,132,132,132,132,252,132,132,132, + 132,132,18,90,122,248,32,32,32,32,32,32,32,32,248,2, + 106,122,28,8,8,8,8,8,8,136,136,112,2,106,122,132, + 136,144,160,192,160,144,136,132,132,2,106,122,128,128,128,128, + 128,128,128,128,128,252,2,106,122,132,204,204,180,180,132,132, + 132,132,132,2,106,122,132,132,196,196,164,148,140,140,132,132, + 2,106,122,120,132,132,132,132,132,132,132,132,120,2,106,122, + 248,132,132,132,132,248,128,128,128,128,0,108,124,120,132,132, + 132,132,132,228,148,140,120,8,4,2,106,122,248,132,132,132, + 132,248,144,136,132,132,2,106,122,120,132,132,128,96,24,4, + 132,132,120,2,122,122,254,16,16,16,16,16,16,16,16,16, + 2,106,122,132,132,132,132,132,132,132,132,132,120,2,106,122, + 132,132,132,132,72,72,72,48,48,48,18,90,122,136,136,136, + 136,136,136,168,168,168,80,2,106,122,132,132,72,72,48,48, + 72,72,132,132,18,90,122,136,136,136,80,80,32,32,32,32, + 32,2,106,122,252,4,8,16,16,32,64,64,128,252,32,77, + 125,240,128,128,128,128,128,128,128,128,128,128,128,240,0,109, + 125,128,128,64,64,32,32,32,16,16,8,8,4,4,16,77, + 125,240,16,16,16,16,16,16,16,16,16,16,16,240,10,99, + 115,48,72,132,0,97,113,252,42,51,115,128,64,32,2,103, + 119,120,132,4,124,132,132,124,2,106,122,128,128,128,184,196, + 132,132,132,196,184,2,103,119,120,132,128,128,128,132,120,2, + 106,122,4,4,4,116,140,132,132,132,140,116,2,103,119,120, + 132,132,252,128,132,120,2,106,122,24,36,32,32,248,32,32, + 32,32,32,0,105,121,116,136,136,136,112,64,184,132,120,2, + 106,122,128,128,128,184,196,132,132,132,132,132,18,90,122,32, + 32,0,96,32,32,32,32,32,248,16,92,124,8,8,0,24, + 8,8,8,8,8,136,136,112,2,106,122,128,128,128,136,144, + 160,224,144,136,132,18,90,122,96,32,32,32,32,32,32,32, + 32,248,18,87,119,208,168,168,168,168,168,136,2,103,119,184, + 196,132,132,132,132,132,2,103,119,120,132,132,132,132,132,120, + 0,105,121,184,196,132,132,132,196,184,128,128,0,105,121,116, + 140,132,132,132,140,116,4,4,2,103,119,184,196,132,128,128, + 128,128,2,103,119,120,132,64,48,8,132,120,2,106,122,32, + 32,32,248,32,32,32,32,36,24,2,103,119,132,132,132,132, + 132,140,116,18,87,119,136,136,136,80,80,32,32,18,87,119, + 136,136,168,168,168,168,80,2,103,119,132,132,72,48,72,132, + 132,0,105,121,132,132,132,132,140,116,4,132,120,2,103,119, + 252,8,16,32,32,64,252,32,77,125,48,64,64,64,64,64, + 128,64,64,64,64,64,48,48,29,125,128,128,128,128,128,128, + 128,128,128,128,128,128,128,16,77,125,192,32,32,32,32,32, + 16,32,32,32,32,32,192,9,100,116,64,164,148,8,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 7 y= 9 dx= 8 dy= 0 ascent=11 len=13 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[2420] U8G_SECTION(".progmem.u8g_font_8x13_67_75") = { + 1,8,13,0,254,3,1,94,2,193,32,255,0,11,254,10, + 0,3,133,133,36,18,255,18,36,18,88,136,32,32,168,112, + 32,168,112,32,2,119,135,16,34,68,248,68,34,16,18,119, + 135,16,136,68,62,68,136,16,3,133,133,32,65,255,65,32, + 18,89,137,32,112,168,32,32,32,32,32,112,3,133,133,4, + 130,255,130,4,18,89,137,112,32,32,32,32,32,168,112,32, + 2,122,138,16,56,84,16,16,16,84,56,16,254,3,133,133, + 34,65,254,64,32,3,133,133,68,130,127,2,4,3,133,133, + 34,69,254,68,36,3,133,133,68,162,127,34,36,3,133,133, + 36,90,231,66,36,3,133,133,36,82,255,82,36,18,106,138, + 64,64,128,152,104,8,16,84,56,16,18,106,138,32,64,252, + 68,36,4,4,4,4,4,18,106,138,16,8,252,136,144,128, + 128,128,128,128,18,106,138,4,4,4,4,4,36,68,252,64, + 32,18,106,138,128,128,128,128,128,144,136,252,8,16,18,104, + 136,240,16,16,16,16,84,56,16,18,90,138,8,8,8,8, + 8,40,72,248,64,32,4,135,135,12,18,33,33,169,112,32, + 4,135,135,48,72,132,132,149,14,4,2,136,136,255,0,112, + 96,80,8,4,2,2,136,136,136,144,190,144,9,125,9,17, + 4,135,135,100,142,149,132,132,72,48,4,135,135,38,113,169, + 33,33,18,12,5,131,131,32,64,255,3,131,131,255,64,32, + 50,57,137,128,192,160,128,128,128,128,128,128,34,57,137,32, + 96,160,32,32,32,32,32,32,5,131,131,4,2,255,3,131, + 131,255,2,4,50,57,137,128,128,128,128,128,128,160,192,128, + 34,57,137,32,32,32,32,32,32,160,96,32,2,121,137,8, + 4,254,4,40,64,254,64,32,2,138,138,36,116,172,36,36, + 36,36,53,46,36,2,121,137,32,64,254,64,40,4,254,4, + 8,2,139,139,32,64,255,64,32,0,32,64,255,64,32,2, + 122,138,68,238,68,68,68,68,68,68,68,68,2,139,139,4, + 2,255,2,4,0,4,2,255,2,4,2,122,138,68,68,68, + 68,68,68,68,68,238,68,2,119,135,32,64,254,0,254,4, + 8,2,119,135,8,4,254,0,254,64,32,2,135,135,16,33, + 127,130,127,36,16,3,133,133,36,126,153,126,36,2,135,135, + 8,36,254,65,254,132,8,2,135,135,16,32,127,128,127,32, + 16,18,121,137,16,40,108,170,40,40,40,40,40,2,135,135, + 8,4,254,1,254,4,8,2,121,137,40,40,40,40,40,170, + 108,40,16,3,133,133,36,126,129,126,36,2,123,139,16,40, + 108,170,40,40,40,170,108,40,16,2,119,135,252,144,136,196, + 162,144,8,18,119,135,126,18,34,70,138,18,32,18,119,135, + 32,18,138,70,34,18,126,2,119,135,8,144,162,196,136,144, + 252,2,137,137,8,16,63,64,255,64,63,16,8,2,137,137, + 16,8,252,2,255,2,252,8,16,2,135,135,16,32,72,245, + 66,32,16,2,135,135,8,4,18,175,66,4,8,2,122,138, + 16,56,84,146,16,124,16,124,16,16,2,122,138,16,16,124, + 16,124,16,146,84,56,16,2,119,135,16,32,64,182,64,32, + 16,2,122,138,16,40,84,146,0,16,16,0,16,16,18,119, + 135,16,8,4,218,4,8,16,2,122,138,16,16,0,16,16, + 0,146,84,40,16,3,117,133,144,160,254,160,144,19,117,133, + 18,10,254,10,18,2,135,135,16,48,95,129,95,48,16,2, + 121,137,16,40,68,238,40,40,40,40,56,2,135,135,8,12, + 250,129,250,12,8,2,121,137,56,40,40,40,40,238,68,40, + 16,1,123,139,16,40,68,238,40,40,56,0,56,40,56,1, + 122,138,16,40,68,238,40,40,40,108,68,124,1,122,138,16, + 40,68,254,40,40,40,108,68,124,1,122,138,16,40,68,254, + 56,56,56,124,68,124,2,121,137,16,40,68,238,68,238,40, + 40,56,1,122,138,16,40,68,238,68,238,40,108,68,124,2, + 135,135,136,140,250,129,250,140,136,2,119,135,254,128,188,176, + 168,164,130,2,119,135,130,74,42,26,122,2,254,2,121,137, + 16,40,68,238,40,238,68,40,16,4,133,133,36,82,255,82, + 36,2,138,138,36,46,53,36,36,36,36,172,116,36,0,141, + 141,4,2,255,2,4,2,255,2,4,2,255,2,4,4,117, + 133,40,72,254,72,40,20,117,133,40,36,254,36,40,4,117, + 133,16,84,254,84,16,4,133,133,42,74,255,74,42,4,133, + 133,84,82,255,82,84,4,133,133,24,90,255,90,24,3,135, + 135,16,48,80,159,80,48,16,3,135,135,8,12,10,249,10, + 12,8,4,133,133,36,102,189,102,36,7,134,134,255,255,255, + 255,255,255,0,130,130,255,255,0,131,131,255,255,255,0,133, + 133,255,255,255,255,255,0,135,135,255,255,255,255,255,255,255, + 0,136,136,255,255,255,255,255,255,255,255,0,138,138,255,255, + 255,255,255,255,255,255,255,255,0,139,139,255,255,255,255,255, + 255,255,255,255,255,255,0,141,141,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,125,141,254,254,254,254,254,254,254, + 254,254,254,254,254,254,0,109,141,252,252,252,252,252,252,252, + 252,252,252,252,252,252,0,93,141,248,248,248,248,248,248,248, + 248,248,248,248,248,248,0,77,141,240,240,240,240,240,240,240, + 240,240,240,240,240,240,0,61,141,224,224,224,224,224,224,224, + 224,224,224,224,224,224,0,45,141,192,192,192,192,192,192,192, + 192,192,192,192,192,192,0,29,141,128,128,128,128,128,128,128, + 128,128,128,128,128,128,64,77,141,240,240,240,240,240,240,240, + 240,240,240,240,240,240,1,139,139,85,0,170,0,85,0,170, + 0,85,0,170,0,141,141,170,85,170,85,170,85,170,85,170, + 85,170,85,170,0,141,141,255,85,255,170,255,85,255,170,255, + 85,255,170,255,11,130,130,255,255,112,29,141,128,128,128,128, + 128,128,128,128,128,128,128,128,128,0,71,135,240,240,240,240, + 240,240,240,64,71,135,240,240,240,240,240,240,240,7,70,134, + 240,240,240,240,240,240,0,141,141,240,240,240,240,240,240,255, + 255,255,255,255,255,255,0,141,141,240,240,240,240,240,240,15, + 15,15,15,15,15,15,0,141,141,255,255,255,255,255,255,240, + 240,240,240,240,240,240,0,141,141,255,255,255,255,255,255,15, + 15,15,15,15,15,15,71,70,134,240,240,240,240,240,240,0, + 141,141,15,15,15,15,15,15,240,240,240,240,240,240,240,0, + 141,141,15,15,15,15,15,15,255,255,255,255,255,255,255,2, + 119,135,254,254,254,254,254,254,254,2,119,135,254,130,130,130, + 130,130,254,2,119,135,124,130,130,130,130,130,124,2,119,135, + 254,130,186,186,186,130,254,2,119,135,254,130,254,130,254,130, + 254,2,119,135,254,170,170,170,170,170,254,2,119,135,254,170, + 254,170,254,170,254,2,119,135,254,146,138,198,162,146,254,2, + 119,135,254,146,162,198,138,146,254,2,119,135,254,214,170,214, + 170,214,254,37,51,131,224,224,224,37,51,131,224,160,224,21, + 100,132,252,252,252,252,21,100,132,252,132,132,252,18,89,137, + 248,248,248,248,248,248,248,248,248,18,89,137,248,136,136,136, + 136,136,136,136,248,5,132,132,31,62,124,248,5,132,132,31, + 34,68,248,2,136,136,24,24,60,60,126,126,255,255,2,136, + 136,24,24,36,36,66,66,129,255,18,102,134,48,48,120,120, + 252,252,18,102,134,48,48,72,72,132,252,18,107,139,128,192, + 224,240,248,252,248,240,224,192,128,18,107,139,128,192,160,144, + 136,132,136,144,160,192,128,20,101,133,192,240,252,240,192,20, + 101,133,192,176,140,176,192,3,119,135,128,224,248,254,248,224, + 128,3,119,135,128,224,152,134,152,224,128,2,136,136,255,255, + 126,126,60,60,24,24,2,136,136,255,129,66,66,36,36,24, + 24,18,102,134,252,252,120,120,48,48,18,102,134,252,132,72, + 72,48,48,18,107,139,4,12,28,60,124,252,124,60,28,12, + 4,18,107,139,4,12,20,36,68,132,68,36,20,12,4,20, + 101,133,12,60,252,60,12,20,101,133,12,52,196,52,12,3, + 119,135,2,14,62,254,62,14,2,3,119,135,2,14,50,194, + 50,14,2,3,119,135,16,56,124,254,124,56,16,3,119,135, + 16,40,68,130,68,40,16,3,119,135,16,40,84,186,84,40, + 16,3,119,135,56,68,146,186,146,68,56,18,105,137,48,48, + 72,72,132,72,72,48,48,2,136,136,60,66,129,129,129,129, + 66,60,2,136,136,24,66,0,129,129,0,66,24,2,136,136, + 60,106,171,171,171,171,106,60,2,136,136,60,66,153,165,165, + 153,66,60,2,136,136,60,126,255,255,255,255,126,60,2,136, + 136,60,114,241,241,241,241,114,60,2,136,136,60,78,143,143, + 143,143,78,60,2,136,136,60,66,129,129,255,255,126,60,2, + 136,136,60,126,255,255,129,129,66,60,2,136,136,60,78,143, + 143,129,129,66,60,2,136,136,60,78,143,143,255,255,126,60, + 2,72,136,48,112,240,240,240,240,112,48,66,72,136,192,224, + 240,240,240,240,224,192,0,141,141,255,255,255,255,195,129,129, + 129,129,195,255,255,255,0,141,141,255,255,255,255,195,153,189, + 189,153,195,255,255,255,6,135,135,255,255,255,255,195,153,189, + 0,134,134,189,153,195,255,255,255,6,68,132,48,64,128,128, + 70,68,132,192,32,16,16,66,68,132,16,16,32,192,2,68, + 132,128,128,64,48,6,132,132,60,66,129,129,2,132,132,129, + 129,66,60,2,136,136,1,3,7,15,31,63,127,255,2,136, + 136,128,192,224,240,248,252,254,255,2,136,136,255,254,252,248, + 240,224,192,128,2,136,136,255,127,63,31,15,7,3,1,20, + 85,133,112,136,136,136,112,2,120,136,254,226,226,226,226,226, + 226,254,2,120,136,254,142,142,142,142,142,142,254,2,120,136, + 254,254,250,242,226,194,130,254,2,120,136,254,130,134,142,158, + 190,254,254,2,120,136,254,146,146,146,146,146,146,254,2,122, + 138,16,16,40,40,68,84,124,146,130,254,2,122,138,16,16, + 56,56,116,116,116,242,242,254,2,122,138,16,16,56,56,92, + 92,92,158,158,254,2,136,136,60,66,129,129,129,129,66,60, + 2,119,135,254,146,146,242,130,130,254,2,119,135,254,130,130, + 242,146,146,254,2,119,135,254,130,130,158,146,146,254,2,119, + 135,254,146,146,158,130,130,254,2,119,135,124,146,146,242,130, + 130,124,2,119,135,124,130,130,242,146,146,124,2,119,135,124, + 130,130,158,146,146,124,2,119,135,124,146,146,158,130,130,124, + 19,102,134,252,136,144,160,192,128,19,102,134,252,68,36,20, + 12,4,19,102,134,128,192,160,144,136,252,19,102,134,252,132, + 132,132,132,252,19,102,134,252,252,252,252,252,252,37,68,132, + 240,144,144,240,37,68,132,240,240,240,240,19,102,134,4,12, + 20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 11, '1' Height: 4 + Calculated Max Values w= 8 h=11 x= 2 y= 3 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13_75r[496] U8G_SECTION(".progmem.u8g_font_8x13_75r") = { + 1,8,13,0,254,11,1,83,0,0,32,79,0,11,0,11, + 0,2,119,135,254,254,254,254,254,254,254,2,119,135,254,130, + 130,130,130,130,254,2,119,135,124,130,130,130,130,130,124,2, + 119,135,254,130,186,186,186,130,254,2,119,135,254,130,254,130, + 254,130,254,2,119,135,254,170,170,170,170,170,254,2,119,135, + 254,170,254,170,254,170,254,2,119,135,254,146,138,198,162,146, + 254,2,119,135,254,146,162,198,138,146,254,2,119,135,254,214, + 170,214,170,214,254,37,51,131,224,224,224,37,51,131,224,160, + 224,21,100,132,252,252,252,252,21,100,132,252,132,132,252,18, + 89,137,248,248,248,248,248,248,248,248,248,18,89,137,248,136, + 136,136,136,136,136,136,248,5,132,132,31,62,124,248,5,132, + 132,31,34,68,248,2,136,136,24,24,60,60,126,126,255,255, + 2,136,136,24,24,36,36,66,66,129,255,18,102,134,48,48, + 120,120,252,252,18,102,134,48,48,72,72,132,252,18,107,139, + 128,192,224,240,248,252,248,240,224,192,128,18,107,139,128,192, + 160,144,136,132,136,144,160,192,128,20,101,133,192,240,252,240, + 192,20,101,133,192,176,140,176,192,3,119,135,128,224,248,254, + 248,224,128,3,119,135,128,224,152,134,152,224,128,2,136,136, + 255,255,126,126,60,60,24,24,2,136,136,255,129,66,66,36, + 36,24,24,18,102,134,252,252,120,120,48,48,18,102,134,252, + 132,72,72,48,48,18,107,139,4,12,28,60,124,252,124,60, + 28,12,4,18,107,139,4,12,20,36,68,132,68,36,20,12, + 4,20,101,133,12,60,252,60,12,20,101,133,12,52,196,52, + 12,3,119,135,2,14,62,254,62,14,2,3,119,135,2,14, + 50,194,50,14,2,3,119,135,16,56,124,254,124,56,16,3, + 119,135,16,40,68,130,68,40,16,3,119,135,16,40,84,186, + 84,40,16,3,119,135,56,68,146,186,146,68,56,18,105,137, + 48,48,72,72,132,72,72,48,48,2,136,136,60,66,129,129, + 129,129,66,60,2,136,136,24,66,0,129,129,0,66,24,2, + 136,136,60,106,171,171,171,171,106,60,2,136,136,60,66,153, + 165,165,153,66,60,2,136,136,60,126,255,255,255,255,126,60 + }; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=12 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=12 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13B[2302] U8G_SECTION(".progmem.u8g_font_8x13B") = { + 1,8,13,0,254,10,1,127,3,12,32,255,254,11,254,10, + 254,13,0,128,50,42,138,192,192,192,192,192,192,192,0,192, + 192,24,84,132,216,216,216,216,2,121,137,108,108,254,254,108, + 254,254,108,108,1,123,139,16,124,214,208,240,124,30,22,214, + 124,16,2,122,138,230,166,236,24,24,48,48,110,202,206,2, + 119,135,120,204,204,120,206,204,126,56,36,132,192,192,192,192, + 17,91,139,24,48,96,96,192,192,192,96,96,48,24,17,91, + 139,192,96,48,48,24,24,24,48,48,96,192,3,119,135,16, + 16,254,56,56,108,68,20,102,134,48,48,252,252,48,48,33, + 69,133,240,112,112,96,192,22,97,129,252,34,67,131,96,240, + 96,2,122,138,2,6,6,12,24,48,96,192,192,128,2,122, + 138,56,108,198,198,198,198,198,198,108,56,18,106,138,48,112, + 240,48,48,48,48,48,48,252,2,122,138,124,198,198,6,12, + 24,48,96,192,254,2,122,138,254,6,12,24,60,6,6,6, + 198,124,2,122,138,12,28,60,108,204,204,254,12,12,12,2, + 122,138,254,192,192,252,230,6,6,6,198,124,2,122,138,60, + 96,192,192,252,230,198,198,230,124,2,122,138,254,6,6,12, + 24,24,48,48,48,48,2,122,138,124,198,198,198,124,198,198, + 198,198,124,2,122,138,124,206,198,198,206,126,6,6,12,120, + 34,72,136,96,240,96,0,0,96,240,96,33,73,137,96,240, + 96,0,240,112,112,96,192,18,105,137,12,24,48,96,192,96, + 48,24,12,20,100,132,252,0,0,252,18,105,137,192,96,48, + 24,12,24,48,96,192,2,122,138,124,198,198,6,12,24,24, + 0,24,24,2,121,137,124,254,206,222,210,210,222,224,126,2, + 122,138,56,124,198,198,198,254,198,198,198,198,2,122,138,252, + 102,102,102,124,102,102,102,102,252,2,122,138,124,230,198,192, + 192,192,192,198,230,124,2,122,138,252,102,102,102,102,102,102, + 102,102,252,2,122,138,254,192,192,192,248,192,192,192,192,254, + 2,122,138,254,192,192,192,248,192,192,192,192,192,2,122,138, + 124,198,198,192,192,192,206,198,198,124,2,122,138,198,198,198, + 198,254,198,198,198,198,198,34,74,138,240,96,96,96,96,96, + 96,96,96,240,2,122,138,14,6,6,6,6,6,6,198,198, + 124,2,122,138,198,198,204,216,240,240,216,204,198,198,2,122, + 138,192,192,192,192,192,192,192,192,194,254,2,122,138,198,198, + 238,254,214,198,198,198,198,198,2,122,138,198,198,230,230,246, + 222,206,206,198,198,2,122,138,124,198,198,198,198,198,198,198, + 198,124,2,122,138,252,198,198,198,198,252,192,192,192,192,1, + 123,139,124,198,198,198,198,198,198,198,222,124,6,2,122,138, + 252,198,198,198,252,248,204,204,198,198,2,122,138,124,198,198, + 192,124,6,6,198,198,124,18,106,138,252,48,48,48,48,48, + 48,48,48,48,2,122,138,198,198,198,198,198,198,198,198,198, + 124,2,122,138,198,198,198,198,68,108,108,56,56,16,2,122, + 138,198,198,198,198,198,198,214,214,254,108,2,122,138,198,198, + 108,108,56,56,108,108,198,198,18,106,138,204,204,204,120,120, + 48,48,48,48,48,2,122,138,254,6,6,12,24,48,96,192, + 192,254,17,91,139,248,192,192,192,192,192,192,192,192,192,248, + 2,122,138,128,192,192,96,48,24,12,6,6,2,17,91,139, + 248,24,24,24,24,24,24,24,24,24,248,8,116,132,16,56, + 108,198,1,113,129,254,41,67,131,192,96,48,2,119,135,124, + 6,126,198,198,206,118,2,122,138,192,192,192,220,230,198,198, + 198,230,220,2,119,135,124,230,192,192,192,230,124,2,122,138, + 6,6,6,118,206,198,198,198,206,118,2,119,135,124,198,198, + 254,192,198,124,2,122,138,60,102,96,96,96,252,96,96,96, + 96,0,121,137,126,204,204,204,120,240,124,198,124,2,122,138, + 192,192,192,220,230,198,198,198,198,198,34,73,137,96,96,0, + 224,96,96,96,96,240,0,123,139,6,6,0,14,6,6,6, + 6,198,198,124,2,122,138,192,192,192,204,216,240,240,216,204, + 198,34,74,138,224,96,96,96,96,96,96,96,96,240,2,119, + 135,108,254,214,214,198,198,198,2,119,135,220,230,198,198,198, + 198,198,2,119,135,124,198,198,198,198,198,124,0,121,137,220, + 230,198,198,198,230,220,192,192,0,121,137,118,206,198,198,198, + 206,118,6,6,2,119,135,220,230,192,192,192,192,192,2,119, + 135,124,198,96,56,12,198,124,2,122,138,96,96,96,96,252, + 96,96,96,102,60,2,119,135,198,198,198,198,198,206,118,2, + 119,135,198,198,198,198,108,108,56,2,119,135,198,198,198,214, + 214,254,108,2,119,135,198,198,108,56,108,198,198,0,121,137, + 198,198,198,198,206,118,6,198,124,2,119,135,254,12,24,48, + 96,192,254,17,107,139,60,96,96,96,48,224,48,96,96,96, + 60,50,42,138,192,192,192,192,192,192,192,192,192,192,17,107, + 139,240,24,24,24,48,28,48,24,24,24,240,8,115,131,114, + 254,156,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,13,0,128,50,42,138,192,192,0,192,192,192,192, + 192,192,192,3,104,136,16,124,212,208,208,212,124,16,1,123, + 139,60,102,96,96,252,96,96,96,240,190,224,3,119,135,198, + 254,108,68,108,254,198,18,106,138,204,204,204,120,120,252,48, + 252,48,48,50,42,138,192,192,192,192,0,0,192,192,192,192, + 18,106,138,120,204,192,120,204,204,120,12,204,120,26,82,130, + 216,216,3,121,137,124,198,186,234,226,234,186,198,124,21,87, + 135,240,24,248,152,248,0,248,3,119,135,54,108,216,176,216, + 108,54,3,101,133,252,252,4,4,4,22,81,129,248,3,121, + 137,124,198,186,170,186,178,170,198,124,28,97,129,252,24,100, + 132,120,204,204,120,19,103,135,48,48,252,48,48,0,252,22, + 70,134,224,176,48,96,192,240,22,70,134,224,176,96,48,176, + 224,41,67,131,48,96,192,0,121,137,198,198,198,198,198,238, + 252,192,192,1,123,139,62,122,202,202,202,122,58,10,10,10, + 14,54,34,130,192,192,16,67,131,48,144,96,22,70,134,96, + 224,96,96,96,240,21,87,135,112,248,136,248,112,0,248,3, + 119,135,216,108,54,26,54,108,216,2,122,138,96,224,96,96, + 98,246,14,26,30,6,2,122,138,96,224,96,96,124,246,6, + 12,24,30,2,122,138,224,176,96,48,178,230,14,26,30,6, + 18,106,138,48,48,0,48,48,96,192,204,204,120,2,122,138, + 48,24,0,56,124,198,198,254,198,198,2,122,138,24,48,0, + 56,124,198,198,254,198,198,2,122,138,56,108,0,56,124,198, + 198,254,198,198,2,122,138,52,88,0,56,124,198,198,254,198, + 198,2,122,138,108,108,0,56,124,198,198,254,198,198,2,123, + 139,24,36,24,0,56,124,198,198,254,198,198,2,122,138,126, + 248,216,216,216,252,216,216,216,222,0,124,140,124,230,192,192, + 192,192,192,230,124,24,72,48,2,122,138,48,24,0,254,192, + 192,248,192,192,254,2,122,138,24,48,0,254,192,192,248,192, + 192,254,2,122,138,56,108,0,254,192,192,248,192,192,254,2, + 122,138,108,108,0,254,192,192,248,192,192,254,34,74,138,192, + 96,0,240,96,96,96,96,96,240,34,74,138,48,96,0,240, + 96,96,96,96,96,240,34,90,138,112,216,0,240,96,96,96, + 96,96,240,34,90,138,216,216,0,240,96,96,96,96,96,240, + 2,120,136,252,102,102,246,102,102,102,252,2,122,138,52,88, + 0,198,230,246,214,222,206,198,2,123,139,48,24,0,124,198, + 198,198,198,198,198,124,2,123,139,24,48,0,124,198,198,198, + 198,198,198,124,2,123,139,56,108,0,124,198,198,198,198,198, + 198,124,2,123,139,52,88,0,124,198,198,198,198,198,198,124, + 2,123,139,108,108,0,124,198,198,198,198,198,198,124,2,119, + 135,198,198,124,56,124,198,198,1,122,138,2,124,206,214,214, + 214,214,230,124,128,2,122,138,48,24,0,198,198,198,198,198, + 198,124,2,122,138,24,48,0,198,198,198,198,198,198,124,2, + 122,138,56,108,0,198,198,198,198,198,198,124,2,122,138,108, + 108,0,198,198,198,198,198,198,124,18,106,138,24,48,0,204, + 72,120,48,48,48,48,2,121,137,192,252,198,198,198,252,192, + 192,192,2,122,138,60,102,102,108,236,108,102,102,102,108,2, + 122,138,48,24,0,124,6,126,198,198,206,118,2,122,138,24, + 48,0,124,6,126,198,198,206,118,2,122,138,56,108,0,124, + 6,126,198,198,206,118,2,122,138,52,88,0,124,6,126,198, + 198,206,118,2,122,138,108,108,0,124,6,126,198,198,206,118, + 2,123,139,24,36,24,0,124,6,126,198,198,206,118,2,119, + 135,108,218,26,124,216,218,108,0,122,138,124,230,192,192,192, + 230,124,24,72,48,2,122,138,48,24,0,124,198,198,254,192, + 198,124,2,122,138,24,48,0,124,198,198,254,192,198,124,2, + 122,138,56,108,0,124,198,198,254,192,198,124,2,122,138,108, + 108,0,124,198,198,254,192,198,124,34,74,138,192,96,0,224, + 96,96,96,96,96,240,34,74,138,96,192,0,224,96,96,96, + 96,96,240,18,90,138,112,216,0,112,48,48,48,48,48,120, + 18,90,138,216,216,0,112,48,48,48,48,48,120,2,122,138, + 108,56,120,12,126,198,198,198,198,124,2,122,138,52,88,0, + 220,230,198,198,198,198,198,2,122,138,48,24,0,124,198,198, + 198,198,198,124,2,122,138,24,48,0,124,198,198,198,198,198, + 124,2,122,138,56,108,0,124,198,198,198,198,198,124,2,122, + 138,52,88,0,124,198,198,198,198,198,124,2,122,138,108,108, + 0,124,198,198,198,198,198,124,19,103,135,48,48,0,252,0, + 48,48,1,121,137,2,124,206,214,214,214,230,124,128,2,122, + 138,48,24,0,198,198,198,198,198,206,118,2,122,138,24,48, + 0,198,198,198,198,198,206,118,2,122,138,56,108,0,198,198, + 198,198,198,206,118,2,122,138,108,108,0,198,198,198,198,198, + 206,118,0,124,140,24,48,0,198,198,198,198,206,118,6,198, + 124,0,123,139,192,192,220,230,198,198,198,230,220,192,192,0, + 124,140,108,108,0,198,198,198,198,206,118,6,198,124}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =10 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13Br[1123] U8G_SECTION(".progmem.u8g_font_8x13Br") = { + 1,8,13,0,254,10,1,127,3,12,32,127,254,11,254,10, + 254,13,0,128,50,42,138,192,192,192,192,192,192,192,0,192, + 192,24,84,132,216,216,216,216,2,121,137,108,108,254,254,108, + 254,254,108,108,1,123,139,16,124,214,208,240,124,30,22,214, + 124,16,2,122,138,230,166,236,24,24,48,48,110,202,206,2, + 119,135,120,204,204,120,206,204,126,56,36,132,192,192,192,192, + 17,91,139,24,48,96,96,192,192,192,96,96,48,24,17,91, + 139,192,96,48,48,24,24,24,48,48,96,192,3,119,135,16, + 16,254,56,56,108,68,20,102,134,48,48,252,252,48,48,33, + 69,133,240,112,112,96,192,22,97,129,252,34,67,131,96,240, + 96,2,122,138,2,6,6,12,24,48,96,192,192,128,2,122, + 138,56,108,198,198,198,198,198,198,108,56,18,106,138,48,112, + 240,48,48,48,48,48,48,252,2,122,138,124,198,198,6,12, + 24,48,96,192,254,2,122,138,254,6,12,24,60,6,6,6, + 198,124,2,122,138,12,28,60,108,204,204,254,12,12,12,2, + 122,138,254,192,192,252,230,6,6,6,198,124,2,122,138,60, + 96,192,192,252,230,198,198,230,124,2,122,138,254,6,6,12, + 24,24,48,48,48,48,2,122,138,124,198,198,198,124,198,198, + 198,198,124,2,122,138,124,206,198,198,206,126,6,6,12,120, + 34,72,136,96,240,96,0,0,96,240,96,33,73,137,96,240, + 96,0,240,112,112,96,192,18,105,137,12,24,48,96,192,96, + 48,24,12,20,100,132,252,0,0,252,18,105,137,192,96,48, + 24,12,24,48,96,192,2,122,138,124,198,198,6,12,24,24, + 0,24,24,2,121,137,124,254,206,222,210,210,222,224,126,2, + 122,138,56,124,198,198,198,254,198,198,198,198,2,122,138,252, + 102,102,102,124,102,102,102,102,252,2,122,138,124,230,198,192, + 192,192,192,198,230,124,2,122,138,252,102,102,102,102,102,102, + 102,102,252,2,122,138,254,192,192,192,248,192,192,192,192,254, + 2,122,138,254,192,192,192,248,192,192,192,192,192,2,122,138, + 124,198,198,192,192,192,206,198,198,124,2,122,138,198,198,198, + 198,254,198,198,198,198,198,34,74,138,240,96,96,96,96,96, + 96,96,96,240,2,122,138,14,6,6,6,6,6,6,198,198, + 124,2,122,138,198,198,204,216,240,240,216,204,198,198,2,122, + 138,192,192,192,192,192,192,192,192,194,254,2,122,138,198,198, + 238,254,214,198,198,198,198,198,2,122,138,198,198,230,230,246, + 222,206,206,198,198,2,122,138,124,198,198,198,198,198,198,198, + 198,124,2,122,138,252,198,198,198,198,252,192,192,192,192,1, + 123,139,124,198,198,198,198,198,198,198,222,124,6,2,122,138, + 252,198,198,198,252,248,204,204,198,198,2,122,138,124,198,198, + 192,124,6,6,198,198,124,18,106,138,252,48,48,48,48,48, + 48,48,48,48,2,122,138,198,198,198,198,198,198,198,198,198, + 124,2,122,138,198,198,198,198,68,108,108,56,56,16,2,122, + 138,198,198,198,198,198,198,214,214,254,108,2,122,138,198,198, + 108,108,56,56,108,108,198,198,18,106,138,204,204,204,120,120, + 48,48,48,48,48,2,122,138,254,6,6,12,24,48,96,192, + 192,254,17,91,139,248,192,192,192,192,192,192,192,192,192,248, + 2,122,138,128,192,192,96,48,24,12,6,6,2,17,91,139, + 248,24,24,24,24,24,24,24,24,24,248,8,116,132,16,56, + 108,198,1,113,129,254,41,67,131,192,96,48,2,119,135,124, + 6,126,198,198,206,118,2,122,138,192,192,192,220,230,198,198, + 198,230,220,2,119,135,124,230,192,192,192,230,124,2,122,138, + 6,6,6,118,206,198,198,198,206,118,2,119,135,124,198,198, + 254,192,198,124,2,122,138,60,102,96,96,96,252,96,96,96, + 96,0,121,137,126,204,204,204,120,240,124,198,124,2,122,138, + 192,192,192,220,230,198,198,198,198,198,34,73,137,96,96,0, + 224,96,96,96,96,240,0,123,139,6,6,0,14,6,6,6, + 6,198,198,124,2,122,138,192,192,192,204,216,240,240,216,204, + 198,34,74,138,224,96,96,96,96,96,96,96,96,240,2,119, + 135,108,254,214,214,198,198,198,2,119,135,220,230,198,198,198, + 198,198,2,119,135,124,198,198,198,198,198,124,0,121,137,220, + 230,198,198,198,230,220,192,192,0,121,137,118,206,198,198,198, + 206,118,6,6,2,119,135,220,230,192,192,192,192,192,2,119, + 135,124,198,96,56,12,198,124,2,122,138,96,96,96,96,252, + 96,96,96,102,60,2,119,135,198,198,198,198,198,206,118,2, + 119,135,198,198,198,198,108,108,56,2,119,135,198,198,198,214, + 214,254,108,2,119,135,198,198,108,56,108,198,198,0,121,137, + 198,198,198,198,206,118,6,198,124,2,119,135,254,12,24,48, + 96,192,254,17,107,139,60,96,96,96,48,224,48,96,96,96, + 60,50,42,138,192,192,192,192,192,192,192,192,192,192,17,107, + 139,240,24,24,24,48,28,48,24,24,24,240,8,115,131,114, + 254,156,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13[2152] U8G_SECTION(".progmem.u8g_font_8x13") = { + 1,8,13,0,254,9,1,97,2,205,32,255,254,11,254,9, + 254,13,0,128,50,25,137,128,128,128,128,128,128,128,0,128, + 40,67,131,144,144,144,19,103,135,72,72,252,72,252,72,72, + 18,89,137,32,120,160,160,112,40,40,240,32,18,105,137,68, + 164,72,16,16,32,72,84,136,18,103,135,96,144,144,96,148, + 136,116,56,19,131,128,128,128,50,57,137,32,64,64,128,128, + 128,64,64,32,34,57,137,128,64,64,32,32,32,64,64,128, + 22,101,133,72,48,252,48,72,20,85,133,32,32,248,32,32, + 17,67,131,112,96,128,22,81,129,248,33,51,131,64,224,64, + 2,121,137,2,2,4,8,16,32,64,128,128,18,105,137,48, + 72,132,132,132,132,132,72,48,18,89,137,32,96,160,32,32, + 32,32,32,248,18,105,137,120,132,132,4,8,48,64,128,252, + 18,105,137,252,4,8,16,56,4,4,132,120,18,105,137,8, + 24,40,72,136,136,252,8,8,18,105,137,252,128,128,184,196, + 4,4,132,120,18,105,137,56,64,128,128,184,196,132,132,120, + 18,105,137,252,4,8,16,16,32,32,64,64,18,105,137,120, + 132,132,132,120,132,132,132,120,18,105,137,120,132,132,140,116, + 4,4,8,112,33,56,136,64,224,64,0,0,64,224,64,17, + 72,136,32,112,32,0,0,112,96,128,34,89,137,8,16,32, + 64,128,64,32,16,8,20,100,132,252,0,0,252,18,89,137, + 128,64,32,16,8,16,32,64,128,18,105,137,120,132,132,4, + 8,16,16,0,16,18,105,137,120,132,132,156,164,172,148,128, + 120,18,105,137,48,72,132,132,132,252,132,132,132,18,105,137, + 240,136,132,136,240,136,132,136,240,18,105,137,120,132,128,128, + 128,128,128,132,120,18,105,137,240,136,132,132,132,132,132,136, + 240,18,105,137,252,128,128,128,240,128,128,128,252,18,105,137, + 252,128,128,128,240,128,128,128,128,18,105,137,120,132,128,128, + 128,156,132,140,116,18,105,137,132,132,132,132,252,132,132,132, + 132,18,89,137,248,32,32,32,32,32,32,32,248,18,121,137, + 62,8,8,8,8,8,8,136,112,18,105,137,132,136,144,160, + 192,160,144,136,132,18,105,137,128,128,128,128,128,128,128,128, + 252,2,121,137,130,130,198,170,146,146,130,130,130,18,105,137, + 132,132,196,164,148,140,132,132,132,18,105,137,120,132,132,132, + 132,132,132,132,120,18,105,137,248,132,132,132,248,128,128,128, + 128,17,106,138,120,132,132,132,132,132,164,148,120,4,18,105, + 137,248,132,132,132,248,160,144,136,132,18,105,137,120,132,128, + 128,120,4,4,132,120,2,121,137,254,16,16,16,16,16,16, + 16,16,18,105,137,132,132,132,132,132,132,132,132,120,2,121, + 137,130,130,68,68,68,40,40,40,16,2,121,137,130,130,130, + 130,146,146,146,170,68,2,121,137,130,130,68,40,16,40,68, + 130,130,2,121,137,130,130,68,40,16,16,16,16,16,18,105, + 137,252,4,8,16,32,64,128,128,252,34,73,137,240,128,128, + 128,128,128,128,128,240,2,121,137,128,128,64,32,16,8,4, + 2,2,18,73,137,240,16,16,16,16,16,16,16,240,24,83, + 131,32,80,136,1,113,129,254,58,34,130,128,64,18,102,134, + 120,4,124,132,140,116,18,105,137,128,128,128,184,196,132,132, + 196,184,18,102,134,120,132,128,128,132,120,18,105,137,4,4, + 4,116,140,132,132,140,116,18,102,134,120,132,252,128,132,120, + 18,105,137,56,68,64,64,248,64,64,64,64,16,104,136,116, + 136,136,112,128,120,132,120,18,105,137,128,128,128,184,196,132, + 132,132,132,18,88,136,32,0,96,32,32,32,32,248,16,90, + 138,8,0,24,8,8,8,8,136,136,112,18,105,137,128,128, + 128,136,144,224,144,136,132,18,89,137,96,32,32,32,32,32, + 32,32,248,2,118,134,236,146,146,146,146,130,18,102,134,184, + 196,132,132,132,132,18,102,134,120,132,132,132,132,120,16,104, + 136,184,196,132,196,184,128,128,128,16,104,136,116,140,132,140, + 116,4,4,4,18,102,134,184,68,64,64,64,64,18,102,134, + 120,132,96,24,132,120,18,104,136,64,64,248,64,64,64,68, + 56,18,102,134,136,136,136,136,136,116,18,86,134,136,136,136, + 80,80,32,2,118,134,130,130,146,146,170,68,18,102,134,132, + 72,48,48,72,132,16,104,136,132,132,132,140,116,4,132,120, + 18,102,134,252,8,16,32,64,252,34,89,137,56,64,64,32, + 192,32,64,64,56,50,25,137,128,128,128,128,128,128,128,128, + 128,18,89,137,224,16,16,32,24,32,16,16,224,24,83,131, + 72,168,144,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,13,0,128,50,25,137,128,0,128,128,128,128, + 128,128,128,19,88,136,32,112,168,160,160,168,112,32,2,121, + 137,28,34,32,112,32,32,32,98,220,19,102,134,132,120,72, + 72,120,132,2,121,137,130,130,68,40,124,16,124,16,16,50, + 25,137,128,128,128,128,0,128,128,128,128,34,74,138,96,144, + 128,96,144,144,96,16,144,96,42,66,130,144,144,3,121,137, + 56,68,146,170,162,170,146,68,56,20,87,135,112,8,120,136, + 120,0,248,3,119,135,18,36,72,144,72,36,18,19,100,132, + 252,4,4,4,38,65,129,240,3,121,137,56,68,146,170,170, + 178,170,68,56,26,97,129,252,39,68,132,96,144,144,96,19, + 87,135,32,32,248,32,32,0,248,22,70,134,96,144,16,96, + 128,240,22,70,134,96,144,32,16,144,96,58,34,130,64,128, + 17,103,135,132,132,132,132,204,180,128,18,105,137,124,232,232, + 232,104,40,40,40,40,54,33,129,192,48,34,130,64,192,22, + 54,134,64,192,64,64,64,224,21,70,134,96,144,144,96,0, + 240,3,119,135,144,72,36,18,36,72,144,2,122,138,64,192, + 64,64,66,230,10,18,26,6,2,122,138,64,192,64,64,76, + 242,2,12,16,30,2,122,138,96,144,32,16,146,102,10,18, + 26,6,18,105,137,32,0,32,32,64,128,132,132,120,18,106, + 138,32,16,0,48,72,132,132,252,132,132,18,106,138,16,32, + 0,48,72,132,132,252,132,132,18,106,138,48,72,0,48,72, + 132,132,252,132,132,18,106,138,100,152,0,48,72,132,132,252, + 132,132,18,106,138,72,72,0,48,72,132,132,252,132,132,18, + 106,138,48,72,48,48,72,132,132,252,132,132,2,121,137,110, + 144,144,144,156,240,144,144,158,16,107,139,120,132,128,128,128, + 128,128,132,120,16,32,18,106,138,32,16,0,252,128,128,240, + 128,128,252,18,106,138,16,32,0,252,128,128,240,128,128,252, + 18,106,138,48,72,0,252,128,128,240,128,128,252,18,106,138, + 72,72,0,252,128,128,240,128,128,252,18,90,138,64,32,0, + 248,32,32,32,32,32,248,18,90,138,16,32,0,248,32,32, + 32,32,32,248,18,90,138,48,72,0,248,32,32,32,32,32, + 248,18,90,138,136,136,0,248,32,32,32,32,32,248,2,121, + 137,120,68,66,66,226,66,66,68,120,2,122,138,100,152,0, + 130,194,162,146,138,134,130,2,122,138,32,16,0,124,130,130, + 130,130,130,124,2,122,138,8,16,0,124,130,130,130,130,130, + 124,2,122,138,24,36,0,124,130,130,130,130,130,124,2,122, + 138,100,152,0,124,130,130,130,130,130,124,2,122,138,68,68, + 0,124,130,130,130,130,130,124,19,102,134,132,72,48,48,72, + 132,17,107,139,4,120,140,148,148,164,164,164,196,120,128,18, + 106,138,64,32,0,132,132,132,132,132,132,120,18,106,138,16, + 32,0,132,132,132,132,132,132,120,18,106,138,48,72,0,132, + 132,132,132,132,132,120,18,106,138,72,72,0,132,132,132,132, + 132,132,120,18,90,138,16,32,0,136,136,80,32,32,32,32, + 18,105,137,128,248,132,132,132,248,128,128,128,18,105,137,112, + 136,136,144,160,152,132,132,184,18,105,137,32,16,0,120,4, + 124,132,140,116,18,105,137,8,16,0,120,4,124,132,140,116, + 18,105,137,48,72,0,120,4,124,132,140,116,18,105,137,100, + 152,0,120,4,124,132,140,116,18,105,137,72,72,0,120,4, + 124,132,140,116,18,106,138,48,72,48,0,120,4,124,132,140, + 116,2,118,134,108,18,124,144,146,108,16,104,136,120,132,128, + 128,132,120,16,32,18,105,137,32,16,0,120,132,252,128,132, + 120,18,105,137,16,32,0,120,132,252,128,132,120,18,105,137, + 48,72,0,120,132,252,128,132,120,18,105,137,72,72,0,120, + 132,252,128,132,120,18,89,137,64,32,0,96,32,32,32,32, + 248,18,89,137,32,64,0,96,32,32,32,32,248,18,89,137, + 96,144,0,96,32,32,32,32,248,18,89,137,144,144,0,96, + 32,32,32,32,248,18,106,138,72,48,80,8,120,132,132,132, + 132,120,18,105,137,100,152,0,184,196,132,132,132,132,18,105, + 137,64,32,0,120,132,132,132,132,120,18,105,137,16,32,0, + 120,132,132,132,132,120,18,105,137,48,72,0,120,132,132,132, + 132,120,18,105,137,100,152,0,120,132,132,132,132,120,18,105, + 137,72,72,0,120,132,132,132,132,120,19,87,135,32,32,0, + 248,0,32,32,17,104,136,4,120,140,148,164,196,120,128,18, + 105,137,64,32,0,136,136,136,136,136,116,18,105,137,16,32, + 0,136,136,136,136,136,116,18,105,137,48,72,0,136,136,136, + 136,136,116,18,105,137,80,80,0,136,136,136,136,136,116,16, + 107,139,16,32,0,132,132,132,140,116,4,132,120,16,106,138, + 128,128,184,196,132,132,196,184,128,128,16,107,139,72,72,0, + 132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 8 h=11 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=11 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13O[2153] U8G_SECTION(".progmem.u8g_font_8x13O") = { + 1,8,13,0,254,9,1,98,2,206,32,255,254,11,254,9, + 254,13,0,128,50,41,137,64,64,64,64,128,128,128,0,128, + 40,67,131,144,144,144,3,119,135,36,36,126,36,252,72,72, + 18,105,137,16,60,80,80,56,40,40,240,32,2,121,137,34, + 82,36,8,16,32,72,148,136,18,104,136,24,36,40,48,84, + 136,152,100,56,19,131,128,128,128,34,73,137,16,32,64,64, + 128,128,64,64,32,34,73,137,64,32,32,16,16,32,32,64, + 128,20,101,133,72,48,252,96,144,20,85,133,32,32,248,64, + 64,33,67,131,112,96,128,22,81,129,248,33,51,131,64,224, + 64,2,137,137,1,1,2,4,24,32,64,128,128,2,121,137, + 24,36,66,66,66,132,132,72,48,18,89,137,16,48,80,16, + 16,32,32,32,248,2,121,137,60,66,66,2,12,48,64,128, + 252,2,121,137,126,2,4,8,24,4,4,132,120,18,105,137, + 4,12,20,36,72,136,252,16,16,2,121,137,62,32,32,92, + 98,2,4,132,120,2,121,137,28,34,64,64,120,132,132,132, + 120,18,105,137,252,4,8,16,32,64,64,128,128,2,121,137, + 60,66,66,66,124,132,132,132,120,18,105,137,120,132,132,140, + 116,8,8,16,224,33,72,136,32,112,32,0,0,64,224,64, + 17,88,136,16,56,16,0,0,112,96,128,18,89,137,8,16, + 32,64,128,128,64,32,16,4,116,132,126,0,0,252,18,89, + 137,64,32,16,8,8,16,32,64,128,18,105,137,56,68,132, + 8,16,32,32,0,32,2,121,137,60,66,66,78,82,166,152, + 128,120,2,121,137,24,36,66,66,66,252,132,132,132,2,121, + 137,120,68,66,68,120,136,132,136,240,2,121,137,60,66,64, + 64,64,128,128,132,120,2,121,137,120,68,66,66,66,132,132, + 136,240,2,121,137,126,64,64,64,120,128,128,128,252,2,121, + 137,126,64,64,64,120,128,128,128,128,2,121,137,60,66,64, + 64,64,156,132,140,116,2,121,137,66,66,66,66,124,132,132, + 132,132,18,105,137,124,16,16,16,16,32,32,32,248,2,121, + 137,30,4,4,4,4,8,8,136,112,2,121,137,66,68,72, + 80,96,160,144,136,132,18,105,137,64,64,64,64,64,128,128, + 128,252,2,137,137,65,65,99,85,73,130,130,130,130,2,121, + 137,66,66,98,82,74,140,132,132,132,2,121,137,60,66,66, + 66,66,132,132,132,120,2,121,137,124,66,66,66,124,128,128, + 128,128,1,122,138,60,66,66,66,132,132,164,148,120,4,2, + 121,137,124,66,66,66,124,160,144,136,132,2,121,137,60,66, + 64,64,56,4,4,132,120,2,121,137,254,16,16,16,16,32, + 32,32,32,2,121,137,66,66,66,66,132,132,132,132,120,2, + 121,137,130,130,132,68,72,72,80,80,32,2,137,137,65,65, + 65,65,73,146,146,170,68,2,137,137,65,65,34,20,24,40, + 68,130,130,2,121,137,130,130,68,40,16,16,32,32,32,2, + 121,137,126,2,4,8,16,32,64,128,252,18,89,137,120,64, + 64,64,64,128,128,128,240,18,105,137,128,128,64,32,16,16, + 8,4,4,18,89,137,120,8,8,8,8,16,16,16,240,24, + 83,131,32,80,136,1,113,129,254,58,34,130,128,64,2,118, + 134,60,2,124,132,140,116,2,121,137,64,64,64,92,98,66, + 132,196,184,2,118,134,60,66,128,128,132,120,2,121,137,2, + 2,2,58,68,132,132,140,116,2,118,134,60,66,124,128,132, + 120,18,105,137,56,68,64,64,248,64,128,128,128,0,120,136, + 58,68,136,112,128,120,132,120,2,121,137,32,32,64,92,98, + 66,132,132,132,18,88,136,16,0,48,16,16,32,32,248,16, + 106,138,4,0,12,4,4,8,8,136,136,112,18,105,137,64, + 64,64,68,88,96,144,136,132,18,89,137,48,16,16,16,16, + 32,32,32,248,2,134,134,118,73,73,146,146,130,2,118,134, + 92,98,66,132,132,132,2,118,134,60,66,66,132,132,120,0, + 136,136,46,49,33,98,92,64,128,128,0,120,136,58,70,132, + 140,116,4,8,8,18,102,134,184,68,64,128,128,128,2,118, + 134,60,66,32,24,132,120,18,88,136,64,64,248,64,128,128, + 136,112,18,102,134,68,68,68,136,136,116,18,86,134,136,136, + 144,160,160,64,2,134,134,65,65,146,146,170,68,2,118,134, + 66,36,24,48,72,132,0,120,136,66,66,132,140,116,4,132, + 120,2,118,134,126,4,24,32,64,252,18,89,137,56,64,64, + 32,192,64,128,128,112,50,41,137,64,64,64,64,64,128,128, + 128,128,18,89,137,112,8,8,16,24,32,16,16,224,24,83, + 131,72,168,144,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,13,0,128,50,41,137,64,0,64,64,64, + 128,128,128,128,19,104,136,16,56,84,80,160,168,112,32,2, + 137,137,14,17,16,56,16,32,32,98,220,3,118,134,66,60, + 36,72,120,132,2,121,137,130,130,68,40,124,16,248,32,32, + 50,41,137,64,64,64,64,0,128,128,128,128,18,90,138,48, + 72,64,48,72,144,96,16,144,96,42,66,130,144,144,2,137, + 137,28,34,73,85,162,170,146,68,56,20,103,135,56,4,120, + 136,120,0,248,3,119,135,18,36,72,144,144,72,36,19,100, + 132,252,4,8,8,38,65,129,240,2,137,137,28,34,89,85, + 170,178,170,68,56,26,97,129,252,39,68,132,96,144,144,96, + 19,103,135,16,16,124,32,32,0,248,22,86,134,48,72,8, + 112,128,240,22,86,134,112,8,48,16,144,96,58,34,130,64, + 128,1,119,135,66,66,66,132,204,180,128,18,105,137,124,232, + 232,232,104,80,80,80,80,54,33,129,192,48,34,130,64,192, + 38,54,134,32,96,32,64,64,224,21,102,134,24,36,72,48, + 0,240,3,119,135,72,36,18,18,36,72,144,18,106,138,32, + 96,32,64,68,236,20,40,60,8,2,122,138,32,96,32,64, + 76,242,4,24,32,60,18,106,138,112,8,48,16,148,108,20, + 40,60,8,18,105,137,16,0,16,16,32,64,132,136,112,2, + 122,138,16,8,0,24,36,66,66,124,132,132,2,122,138,8, + 16,0,24,36,66,66,124,132,132,2,122,138,24,36,0,24, + 36,66,66,124,132,132,2,122,138,50,76,0,24,36,66,66, + 124,132,132,2,122,138,36,36,0,24,36,66,66,124,132,132, + 2,122,138,24,36,24,24,36,66,66,124,132,132,2,137,137, + 55,72,72,72,78,112,144,144,158,0,123,139,60,66,64,64, + 64,128,128,132,120,16,32,2,122,138,16,8,0,126,64,64, + 112,128,128,252,2,122,138,8,16,0,126,64,64,112,128,128, + 252,2,122,138,24,36,0,126,64,64,112,128,128,252,2,122, + 138,36,36,0,126,64,64,112,128,128,252,18,106,138,32,16, + 0,124,16,16,32,32,32,248,18,106,138,8,16,0,124,16, + 16,32,32,32,248,18,106,138,24,36,0,124,16,16,32,32, + 32,248,18,106,138,68,68,0,124,16,16,32,32,32,248,2, + 121,137,120,68,66,66,226,68,132,136,240,2,138,138,50,76, + 0,65,97,81,146,138,134,130,2,138,138,16,8,0,62,65, + 65,130,130,130,124,2,138,138,4,8,0,62,65,65,130,130, + 130,124,2,138,138,12,18,0,62,65,65,130,130,130,124,2, + 138,138,50,76,0,62,65,65,130,130,130,124,2,138,138,34, + 34,0,62,65,65,130,130,130,124,3,118,134,66,36,24,48, + 72,132,1,123,139,2,60,70,74,74,82,164,164,196,120,128, + 2,122,138,32,16,0,66,66,66,132,132,132,120,2,122,138, + 8,16,0,66,66,66,132,132,132,120,2,122,138,24,36,0, + 66,66,66,132,132,132,120,2,122,138,36,36,0,66,66,66, + 132,132,132,120,18,90,138,16,32,0,136,136,80,96,64,64, + 64,2,121,137,64,124,66,66,66,124,128,128,128,18,105,137, + 56,68,68,72,80,136,132,132,184,2,121,137,16,8,0,60, + 2,124,132,140,116,2,121,137,4,8,0,60,2,124,132,140, + 116,2,121,137,24,36,0,60,2,124,132,140,116,2,121,137, + 50,76,0,60,2,124,132,140,116,2,121,137,36,36,0,60, + 2,124,132,140,116,2,122,138,24,36,24,0,60,2,124,132, + 140,116,2,134,134,54,9,126,144,146,108,0,120,136,60,66, + 128,128,132,120,16,32,2,121,137,16,8,0,60,66,124,128, + 132,120,2,121,137,8,16,0,60,66,124,128,132,120,2,121, + 137,24,36,0,60,66,124,128,132,120,2,121,137,36,36,0, + 60,66,124,128,132,120,18,89,137,32,16,0,48,16,16,32, + 32,248,18,89,137,16,32,0,48,16,16,32,32,248,18,89, + 137,48,72,0,48,16,16,32,32,248,18,89,137,72,72,0, + 48,16,16,32,32,248,2,122,138,36,24,40,4,60,66,66, + 132,132,120,2,121,137,50,76,0,92,98,66,132,132,132,2, + 121,137,32,16,0,60,66,66,132,132,120,2,121,137,8,16, + 0,60,66,66,132,132,120,2,121,137,24,36,0,60,66,66, + 132,132,120,2,121,137,50,76,0,60,66,66,132,132,120,2, + 121,137,36,36,0,60,66,66,132,132,120,19,103,135,16,16, + 0,252,0,32,32,1,120,136,2,60,70,90,164,196,120,128, + 18,105,137,32,16,0,68,68,68,136,136,116,18,105,137,8, + 16,0,68,68,68,136,136,116,18,105,137,24,36,0,68,68, + 68,136,136,116,18,105,137,40,40,0,68,68,68,136,136,116, + 0,123,139,8,16,0,66,66,132,140,116,4,132,120,0,122, + 138,64,64,92,98,66,132,196,184,128,128,0,123,139,36,36, + 0,66,66,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-O-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 8 h=10 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13Or[1029] U8G_SECTION(".progmem.u8g_font_8x13Or") = { + 1,8,13,0,254,9,1,98,2,206,32,127,254,11,254,9, + 254,13,0,128,50,41,137,64,64,64,64,128,128,128,0,128, + 40,67,131,144,144,144,3,119,135,36,36,126,36,252,72,72, + 18,105,137,16,60,80,80,56,40,40,240,32,2,121,137,34, + 82,36,8,16,32,72,148,136,18,104,136,24,36,40,48,84, + 136,152,100,56,19,131,128,128,128,34,73,137,16,32,64,64, + 128,128,64,64,32,34,73,137,64,32,32,16,16,32,32,64, + 128,20,101,133,72,48,252,96,144,20,85,133,32,32,248,64, + 64,33,67,131,112,96,128,22,81,129,248,33,51,131,64,224, + 64,2,137,137,1,1,2,4,24,32,64,128,128,2,121,137, + 24,36,66,66,66,132,132,72,48,18,89,137,16,48,80,16, + 16,32,32,32,248,2,121,137,60,66,66,2,12,48,64,128, + 252,2,121,137,126,2,4,8,24,4,4,132,120,18,105,137, + 4,12,20,36,72,136,252,16,16,2,121,137,62,32,32,92, + 98,2,4,132,120,2,121,137,28,34,64,64,120,132,132,132, + 120,18,105,137,252,4,8,16,32,64,64,128,128,2,121,137, + 60,66,66,66,124,132,132,132,120,18,105,137,120,132,132,140, + 116,8,8,16,224,33,72,136,32,112,32,0,0,64,224,64, + 17,88,136,16,56,16,0,0,112,96,128,18,89,137,8,16, + 32,64,128,128,64,32,16,4,116,132,126,0,0,252,18,89, + 137,64,32,16,8,8,16,32,64,128,18,105,137,56,68,132, + 8,16,32,32,0,32,2,121,137,60,66,66,78,82,166,152, + 128,120,2,121,137,24,36,66,66,66,252,132,132,132,2,121, + 137,120,68,66,68,120,136,132,136,240,2,121,137,60,66,64, + 64,64,128,128,132,120,2,121,137,120,68,66,66,66,132,132, + 136,240,2,121,137,126,64,64,64,120,128,128,128,252,2,121, + 137,126,64,64,64,120,128,128,128,128,2,121,137,60,66,64, + 64,64,156,132,140,116,2,121,137,66,66,66,66,124,132,132, + 132,132,18,105,137,124,16,16,16,16,32,32,32,248,2,121, + 137,30,4,4,4,4,8,8,136,112,2,121,137,66,68,72, + 80,96,160,144,136,132,18,105,137,64,64,64,64,64,128,128, + 128,252,2,137,137,65,65,99,85,73,130,130,130,130,2,121, + 137,66,66,98,82,74,140,132,132,132,2,121,137,60,66,66, + 66,66,132,132,132,120,2,121,137,124,66,66,66,124,128,128, + 128,128,1,122,138,60,66,66,66,132,132,164,148,120,4,2, + 121,137,124,66,66,66,124,160,144,136,132,2,121,137,60,66, + 64,64,56,4,4,132,120,2,121,137,254,16,16,16,16,32, + 32,32,32,2,121,137,66,66,66,66,132,132,132,132,120,2, + 121,137,130,130,132,68,72,72,80,80,32,2,137,137,65,65, + 65,65,73,146,146,170,68,2,137,137,65,65,34,20,24,40, + 68,130,130,2,121,137,130,130,68,40,16,16,32,32,32,2, + 121,137,126,2,4,8,16,32,64,128,252,18,89,137,120,64, + 64,64,64,128,128,128,240,18,105,137,128,128,64,32,16,16, + 8,4,4,18,89,137,120,8,8,8,8,16,16,16,240,24, + 83,131,32,80,136,1,113,129,254,58,34,130,128,64,2,118, + 134,60,2,124,132,140,116,2,121,137,64,64,64,92,98,66, + 132,196,184,2,118,134,60,66,128,128,132,120,2,121,137,2, + 2,2,58,68,132,132,140,116,2,118,134,60,66,124,128,132, + 120,18,105,137,56,68,64,64,248,64,128,128,128,0,120,136, + 58,68,136,112,128,120,132,120,2,121,137,32,32,64,92,98, + 66,132,132,132,18,88,136,16,0,48,16,16,32,32,248,16, + 106,138,4,0,12,4,4,8,8,136,136,112,18,105,137,64, + 64,64,68,88,96,144,136,132,18,89,137,48,16,16,16,16, + 32,32,32,248,2,134,134,118,73,73,146,146,130,2,118,134, + 92,98,66,132,132,132,2,118,134,60,66,66,132,132,120,0, + 136,136,46,49,33,98,92,64,128,128,0,120,136,58,70,132, + 140,116,4,8,8,18,102,134,184,68,64,128,128,128,2,118, + 134,60,66,32,24,132,120,18,88,136,64,64,248,64,128,128, + 136,112,18,102,134,68,68,68,136,136,116,18,86,134,136,136, + 144,160,160,64,2,134,134,65,65,146,146,170,68,2,118,134, + 66,36,24,48,72,132,0,120,136,66,66,132,140,116,4,132, + 120,2,118,134,126,4,24,32,64,252,18,89,137,56,64,64, + 32,192,64,128,128,112,50,41,137,64,64,64,64,64,128,128, + 128,128,18,89,137,112,8,8,16,24,32,16,16,224,24,83, + 131,72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--13-120-75-75-C-80-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=10 x= 3 y=11 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w= 8 h=13 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-2 + X Font ascent = 9 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_8x13r[1028] U8G_SECTION(".progmem.u8g_font_8x13r") = { + 1,8,13,0,254,9,1,97,2,205,32,127,254,11,254,9, + 254,13,0,128,50,25,137,128,128,128,128,128,128,128,0,128, + 40,67,131,144,144,144,19,103,135,72,72,252,72,252,72,72, + 18,89,137,32,120,160,160,112,40,40,240,32,18,105,137,68, + 164,72,16,16,32,72,84,136,18,103,135,96,144,144,96,148, + 136,116,56,19,131,128,128,128,50,57,137,32,64,64,128,128, + 128,64,64,32,34,57,137,128,64,64,32,32,32,64,64,128, + 22,101,133,72,48,252,48,72,20,85,133,32,32,248,32,32, + 17,67,131,112,96,128,22,81,129,248,33,51,131,64,224,64, + 2,121,137,2,2,4,8,16,32,64,128,128,18,105,137,48, + 72,132,132,132,132,132,72,48,18,89,137,32,96,160,32,32, + 32,32,32,248,18,105,137,120,132,132,4,8,48,64,128,252, + 18,105,137,252,4,8,16,56,4,4,132,120,18,105,137,8, + 24,40,72,136,136,252,8,8,18,105,137,252,128,128,184,196, + 4,4,132,120,18,105,137,56,64,128,128,184,196,132,132,120, + 18,105,137,252,4,8,16,16,32,32,64,64,18,105,137,120, + 132,132,132,120,132,132,132,120,18,105,137,120,132,132,140,116, + 4,4,8,112,33,56,136,64,224,64,0,0,64,224,64,17, + 72,136,32,112,32,0,0,112,96,128,34,89,137,8,16,32, + 64,128,64,32,16,8,20,100,132,252,0,0,252,18,89,137, + 128,64,32,16,8,16,32,64,128,18,105,137,120,132,132,4, + 8,16,16,0,16,18,105,137,120,132,132,156,164,172,148,128, + 120,18,105,137,48,72,132,132,132,252,132,132,132,18,105,137, + 240,136,132,136,240,136,132,136,240,18,105,137,120,132,128,128, + 128,128,128,132,120,18,105,137,240,136,132,132,132,132,132,136, + 240,18,105,137,252,128,128,128,240,128,128,128,252,18,105,137, + 252,128,128,128,240,128,128,128,128,18,105,137,120,132,128,128, + 128,156,132,140,116,18,105,137,132,132,132,132,252,132,132,132, + 132,18,89,137,248,32,32,32,32,32,32,32,248,18,121,137, + 62,8,8,8,8,8,8,136,112,18,105,137,132,136,144,160, + 192,160,144,136,132,18,105,137,128,128,128,128,128,128,128,128, + 252,2,121,137,130,130,198,170,146,146,130,130,130,18,105,137, + 132,132,196,164,148,140,132,132,132,18,105,137,120,132,132,132, + 132,132,132,132,120,18,105,137,248,132,132,132,248,128,128,128, + 128,17,106,138,120,132,132,132,132,132,164,148,120,4,18,105, + 137,248,132,132,132,248,160,144,136,132,18,105,137,120,132,128, + 128,120,4,4,132,120,2,121,137,254,16,16,16,16,16,16, + 16,16,18,105,137,132,132,132,132,132,132,132,132,120,2,121, + 137,130,130,68,68,68,40,40,40,16,2,121,137,130,130,130, + 130,146,146,146,170,68,2,121,137,130,130,68,40,16,40,68, + 130,130,2,121,137,130,130,68,40,16,16,16,16,16,18,105, + 137,252,4,8,16,32,64,128,128,252,34,73,137,240,128,128, + 128,128,128,128,128,240,2,121,137,128,128,64,32,16,8,4, + 2,2,18,73,137,240,16,16,16,16,16,16,16,240,24,83, + 131,32,80,136,1,113,129,254,58,34,130,128,64,18,102,134, + 120,4,124,132,140,116,18,105,137,128,128,128,184,196,132,132, + 196,184,18,102,134,120,132,128,128,132,120,18,105,137,4,4, + 4,116,140,132,132,140,116,18,102,134,120,132,252,128,132,120, + 18,105,137,56,68,64,64,248,64,64,64,64,16,104,136,116, + 136,136,112,128,120,132,120,18,105,137,128,128,128,184,196,132, + 132,132,132,18,88,136,32,0,96,32,32,32,32,248,16,90, + 138,8,0,24,8,8,8,8,136,136,112,18,105,137,128,128, + 128,136,144,224,144,136,132,18,89,137,96,32,32,32,32,32, + 32,32,248,2,118,134,236,146,146,146,146,130,18,102,134,184, + 196,132,132,132,132,18,102,134,120,132,132,132,132,120,16,104, + 136,184,196,132,196,184,128,128,128,16,104,136,116,140,132,140, + 116,4,4,4,18,102,134,184,68,64,64,64,64,18,102,134, + 120,132,96,24,132,120,18,104,136,64,64,248,64,64,64,68, + 56,18,102,134,136,136,136,136,136,116,18,86,134,136,136,136, + 80,80,32,2,118,134,130,130,146,146,170,68,18,102,134,132, + 72,48,48,72,132,16,104,136,132,132,132,140,116,4,132,120, + 18,102,134,252,8,16,32,64,252,34,89,137,56,64,64,32, + 192,32,64,64,56,50,25,137,128,128,128,128,128,128,128,128, + 128,18,89,137,224,16,16,32,24,32,16,16,224,24,83,131, + 72,168,144,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 4, '1' Height: 10 + Calculated Max Values w= 9 h=15 x= 8 y=10 dx= 9 dy= 0 ascent=12 len=30 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 4 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[3804] U8G_SECTION(".progmem.u8g_font_9x15_67_75") = { + 0,9,15,0,253,4,1,255,4,34,32,255,0,12,253,10, + 0,8,7,7,9,0,1,72,36,18,255,18,36,72,7,10, + 10,9,1,0,16,16,16,146,84,56,146,84,56,16,7,7, + 7,9,1,1,16,34,68,248,68,34,16,7,7,7,9,1, + 1,16,136,68,62,68,136,16,7,7,7,9,1,1,16,34, + 66,254,66,34,16,7,10,10,9,1,0,16,56,84,146,16, + 16,16,16,16,124,7,7,7,9,1,1,16,136,132,254,132, + 136,16,7,10,10,9,1,0,124,16,16,16,16,16,146,84, + 56,16,7,10,10,9,1,0,16,56,84,146,16,146,84,56, + 16,254,8,7,7,9,0,1,16,34,65,254,64,32,16,8, + 7,7,9,0,1,8,68,130,127,2,4,8,8,7,7,9, + 0,1,16,34,69,254,68,36,16,8,7,7,9,0,1,8, + 68,162,127,34,36,8,9,5,10,9,0,2,34,0,73,0, + 247,128,65,0,34,0,9,5,10,9,0,2,34,0,73,0, + 255,128,73,0,34,0,5,10,10,9,2,0,32,64,72,184, + 200,16,16,160,120,32,6,10,10,9,1,0,32,64,252,68, + 36,4,4,4,4,4,7,10,10,9,1,0,8,4,254,132, + 136,128,128,128,128,128,6,10,10,9,1,0,4,4,4,4, + 4,36,68,252,64,32,7,10,10,9,1,0,128,128,128,128, + 128,136,132,254,4,8,7,8,8,9,1,0,248,8,8,8, + 8,42,28,8,7,8,8,9,1,1,2,2,2,34,66,254, + 64,32,9,7,14,9,0,2,14,0,17,0,32,128,32,128, + 168,128,112,0,32,0,9,7,14,9,0,2,56,0,68,0, + 130,0,130,0,138,128,7,0,2,0,7,10,10,9,1,0, + 254,64,112,96,80,8,8,4,2,2,7,9,9,9,1,0, + 144,160,254,160,146,10,254,10,18,9,7,14,9,0,1,50, + 0,71,0,138,128,130,0,130,0,68,0,56,0,9,7,14, + 9,0,1,38,0,113,0,168,128,32,128,32,128,17,0,14, + 0,7,4,4,9,1,3,16,32,64,254,7,4,4,9,1, + 0,254,64,32,16,4,10,10,9,4,0,128,192,160,144,128, + 128,128,128,128,128,4,10,10,9,1,0,16,48,80,144,16, + 16,16,16,16,16,7,4,4,9,1,3,16,8,4,254,7, + 4,4,9,1,0,254,4,8,16,4,10,10,9,4,0,128, + 128,128,128,128,128,144,160,192,128,4,10,10,9,1,0,16, + 16,16,16,16,16,144,80,48,16,7,9,9,9,1,0,8, + 4,254,4,40,64,254,64,32,9,10,20,9,0,0,34,0, + 114,0,170,0,34,0,34,0,34,0,34,0,42,128,39,0, + 34,0,7,9,9,9,1,0,32,64,254,64,40,4,254,4, + 8,7,10,10,9,1,0,32,64,254,64,32,32,64,254,64, + 32,9,10,20,9,0,0,34,0,119,0,170,128,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,7,10,10,9,1, + 0,8,4,254,4,8,8,4,254,4,8,9,10,20,9,0, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,170, + 128,119,0,34,0,7,7,7,9,1,1,32,64,254,0,254, + 4,8,7,7,7,9,1,1,8,4,254,0,254,64,32,9, + 7,14,9,0,1,16,0,33,0,127,128,130,0,127,128,36, + 0,16,0,9,7,14,9,0,1,20,0,34,0,127,0,136, + 128,127,0,34,0,20,0,9,7,14,9,0,1,4,0,18, + 0,255,0,32,128,255,0,66,0,4,0,9,7,14,9,0, + 1,16,0,32,0,127,128,128,0,127,128,32,0,16,0,7, + 10,10,9,1,0,16,40,108,170,40,40,40,40,40,40,9, + 7,14,9,0,1,4,0,2,0,255,0,0,128,255,0,2, + 0,4,0,7,10,10,9,1,0,40,40,40,40,40,40,170, + 108,40,16,9,7,14,9,0,1,20,0,34,0,127,0,128, + 128,127,0,34,0,20,0,7,10,10,9,1,0,16,40,108, + 170,40,40,170,108,40,16,7,7,7,9,1,1,252,144,136, + 196,162,144,8,7,7,7,9,1,1,126,18,34,70,138,18, + 32,7,7,7,9,1,1,32,18,138,70,34,18,126,7,7, + 7,9,1,1,8,144,162,196,136,144,252,9,9,18,9,0, + 0,8,0,16,0,63,128,64,0,255,128,64,0,63,128,16, + 0,8,0,9,9,18,9,0,0,8,0,4,0,254,0,1, + 0,255,128,1,0,254,0,4,0,8,0,8,7,7,9,0, + 1,16,32,72,245,66,32,16,8,7,7,9,0,1,8,4, + 18,175,66,4,8,7,10,10,9,1,0,16,56,84,146,16, + 124,16,124,16,16,7,10,10,9,1,0,16,16,124,16,124, + 16,146,84,56,16,7,7,7,9,1,1,16,32,64,182,64, + 32,16,7,10,10,9,1,0,16,40,84,146,0,16,16,0, + 16,16,7,7,7,9,1,1,16,8,4,218,4,8,16,7, + 10,10,9,1,0,16,16,0,16,16,0,146,84,40,16,7, + 5,5,9,1,2,144,160,254,160,144,7,5,5,9,1,2, + 18,10,254,10,18,9,7,14,9,0,1,16,0,48,0,95, + 128,128,128,95,128,48,0,16,0,7,10,10,9,1,0,16, + 40,68,238,40,40,40,40,40,56,9,7,14,9,0,1,4, + 0,6,0,253,0,128,128,253,0,6,0,4,0,7,10,10, + 9,1,0,56,40,40,40,40,40,238,68,40,16,7,11,11, + 9,1,0,16,40,68,238,40,40,56,0,56,40,56,7,11, + 11,9,1,255,16,40,68,238,40,40,40,40,108,68,124,7, + 11,11,9,1,255,16,40,68,254,40,40,40,40,108,68,124, + 7,11,11,9,1,255,16,40,68,254,56,56,56,56,124,68, + 124,7,11,11,9,1,255,16,40,68,238,68,238,40,40,40, + 40,56,7,11,11,9,1,255,16,40,68,238,68,238,40,40, + 108,68,124,9,7,14,9,0,1,132,0,134,0,253,0,128, + 128,253,0,134,0,132,0,7,7,7,9,1,0,254,128,188, + 176,168,164,130,7,7,7,9,1,0,130,74,42,26,122,2, + 254,7,11,11,9,1,255,16,40,68,238,40,40,40,238,68, + 40,16,9,7,14,9,0,1,4,0,50,0,73,0,255,128, + 73,0,50,0,4,0,9,10,20,9,0,0,34,0,39,0, + 42,128,34,0,34,0,34,0,34,0,170,0,114,0,34,0, + 7,13,13,9,1,254,8,4,254,4,8,4,254,4,8,4, + 254,4,8,8,5,5,9,0,2,36,68,255,68,36,8,5, + 5,9,0,2,36,34,255,34,36,9,5,10,9,0,2,42, + 0,73,0,255,128,73,0,42,0,8,5,5,9,0,2,42, + 74,255,74,42,8,5,5,9,0,2,84,82,255,82,84,9, + 5,10,9,0,2,85,0,148,128,255,128,148,128,85,0,7, + 7,7,9,1,1,16,48,80,158,80,48,16,7,7,7,9, + 1,1,16,24,20,242,20,24,16,8,5,5,9,0,2,36, + 102,189,102,36,9,7,14,9,0,5,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,9,2,4,9,0,253,255,128, + 255,128,9,4,8,9,0,253,255,128,255,128,255,128,255,128, + 9,6,12,9,0,253,255,128,255,128,255,128,255,128,255,128, + 255,128,9,8,16,9,0,253,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,9,9,18,9,0,253,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 9,11,22,9,0,253,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,13,26,9, + 0,253,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,15,30,9, + 0,253,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 8,15,15,9,0,253,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,7,15,15,9,0,253,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,254,6,15,15,9,0,253, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,5, + 15,15,9,0,253,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,3,15,15,9,0,253,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,2,15,15,9,0,253,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,1,15, + 15,9,0,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,4,15,15,9,5,253,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,9,15,30,9,0,253,170,128, + 0,0,85,0,0,0,170,128,0,0,85,0,0,0,170,128, + 0,0,85,0,0,0,170,128,0,0,85,0,9,15,30,9, + 0,253,170,128,85,0,170,128,85,0,170,128,85,0,170,128, + 85,0,170,128,85,0,170,128,85,0,170,128,85,0,170,128, + 9,15,30,9,0,253,255,128,85,0,255,128,170,128,255,128, + 85,0,255,128,170,128,255,128,85,0,255,128,170,128,255,128, + 85,0,255,128,9,2,4,9,0,10,255,128,255,128,1,15, + 15,9,8,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,8,8,9,0,253,248,248,248,248,248,248,248, + 248,4,8,8,9,5,253,240,240,240,240,240,240,240,240,5, + 7,7,9,0,5,248,248,248,248,248,248,248,9,15,30,9, + 0,253,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 9,15,30,9,0,253,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,9,15,30,9,0,253,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,9,15,30,9,0,253,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,4,7,7,9, + 5,5,240,240,240,240,240,240,240,9,15,30,9,0,253,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,9,15,30, + 9,0,253,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56,7,7,7,9,1,1,56,116, + 242,242,242,116,56,7,7,7,9,1,1,56,92,158,158,158, + 92,56,7,7,7,9,1,1,56,68,130,254,254,124,56,7, + 7,7,9,1,1,56,124,254,254,130,68,56,7,7,7,9, + 1,1,56,92,158,158,130,68,56,7,7,7,9,1,1,56, + 92,158,254,254,124,56,4,7,7,9,1,1,48,112,240,240, + 240,112,48,4,7,7,9,4,1,192,224,240,240,240,224,192, + 9,15,30,9,0,253,255,128,255,128,255,128,255,128,255,128, + 227,128,193,128,193,128,193,128,227,128,255,128,255,128,255,128, + 255,128,255,128,9,15,30,9,0,253,255,128,255,128,255,128, + 255,128,227,128,221,128,190,128,190,128,190,128,221,128,227,128, + 255,128,255,128,255,128,255,128,9,8,16,9,0,4,255,128, + 255,128,255,128,255,128,227,128,221,128,190,128,190,128,9,8, + 16,9,0,253,190,128,190,128,221,128,227,128,255,128,255,128, + 255,128,255,128,4,4,4,9,1,4,48,64,128,128,4,4, + 4,9,4,4,192,32,16,16,4,4,4,9,4,1,16,16, + 32,192,4,4,4,9,1,1,128,128,64,48,7,4,4,9, + 1,4,56,68,130,130,7,4,4,9,1,1,130,130,68,56, + 7,7,7,9,1,1,2,6,14,30,62,126,254,7,7,7, + 9,1,1,128,192,224,240,248,252,254,7,7,7,9,1,1, + 254,252,248,240,224,192,128,7,7,7,9,1,1,254,126,62, + 30,14,6,2,5,5,5,9,2,2,112,136,136,136,112,7, + 7,7,9,1,1,254,242,242,242,242,242,254,7,7,7,9, + 1,1,254,158,158,158,158,158,254,7,7,7,9,1,1,254, + 254,250,242,226,194,254,7,7,7,9,1,1,254,134,142,158, + 190,254,254,7,7,7,9,1,1,254,146,146,146,146,146,254, + 9,10,20,9,0,0,8,0,8,0,20,0,20,0,34,0, + 42,0,93,0,73,0,128,128,255,128,9,10,20,9,0,0, + 8,0,8,0,28,0,28,0,58,0,58,0,121,0,121,0, + 248,128,255,128,9,10,20,9,0,0,8,0,8,0,28,0, + 28,0,46,0,46,0,79,0,79,0,143,128,255,128,9,9, + 18,9,0,0,62,0,65,0,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,7,7,7,9,1,1,254,146,146,242, + 130,130,254,7,7,7,9,1,1,254,130,130,242,146,146,254, + 7,7,7,9,1,1,254,130,130,158,146,146,254,7,7,7, + 9,1,1,254,146,146,158,130,130,254,7,7,7,9,1,1, + 124,146,146,242,130,130,124,7,7,7,9,1,1,124,130,130, + 242,146,146,124,7,7,7,9,1,1,124,130,130,158,146,146, + 124,7,7,7,9,1,1,124,146,146,158,130,130,124,6,6, + 6,9,1,1,252,136,144,160,192,128,6,6,6,9,1,1, + 252,68,36,20,12,4,6,6,6,9,1,1,128,192,160,144, + 136,252,6,6,6,9,1,1,252,132,132,132,132,252,6,6, + 6,9,1,1,252,252,252,252,252,252,5,5,5,9,2,1, + 248,136,136,136,248,5,5,5,9,2,1,248,248,248,248,248, + 6,6,6,9,1,1,4,12,20,36,68,252}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 5 + Calculated Max Values w= 9 h=10 x= 3 y= 3 dx= 9 dy= 0 ascent=10 len=20 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_75r[792] U8G_SECTION(".progmem.u8g_font_9x15_75r") = { + 0,9,15,0,253,9,2,33,0,0,32,79,0,10,0,9, + 0,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 4 y= 5 dx= 9 dy= 0 ascent=12 len=26 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[3795] U8G_SECTION(".progmem.u8g_font_9x15_78_79") = { + 0,9,15,0,253,9,2,231,4,175,32,255,0,12,254,11, + 0,9,9,18,9,0,0,62,0,28,0,136,128,201,128,247, + 128,201,128,136,128,28,0,62,0,9,9,18,9,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,9,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,8,0,28,0,62,0,255, + 128,62,0,28,0,8,0,8,0,9,9,18,9,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,9,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,9,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,9,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,62,0,119,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 235,128,93,0,42,0,34,0,127,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 247,128,73,0,54,0,42,0,127,0,65,0,8,7,7,9, + 0,2,24,24,44,199,46,60,102,8,9,9,9,0,0,24, + 219,255,126,24,126,255,219,24,8,9,9,9,0,0,24,219, + 255,102,36,102,255,219,24,9,9,18,9,0,0,8,0,73, + 0,42,0,28,0,255,128,28,0,42,0,73,0,8,0,9, + 9,18,9,0,0,8,0,73,0,62,0,62,0,255,128,62, + 0,62,0,73,0,8,0,9,9,18,9,0,0,8,0,73, + 0,54,0,62,0,213,128,62,0,54,0,73,0,8,0,9, + 9,18,9,0,0,8,0,136,128,107,0,62,0,28,0,62, + 0,107,0,136,128,8,0,9,9,18,9,0,0,34,0,20, + 0,148,128,127,0,28,0,127,0,148,128,20,0,34,0,9, + 9,18,9,0,0,34,0,54,0,255,128,127,0,62,0,127, + 0,255,128,54,0,34,0,9,9,18,9,0,0,42,0,42, + 0,221,128,62,0,255,128,62,0,221,128,42,0,42,0,9, + 9,18,9,0,0,42,0,42,0,221,128,42,0,255,128,42, + 0,221,128,42,0,42,0,9,11,22,9,0,0,28,0,28, + 0,201,128,201,128,34,0,8,0,34,0,201,128,201,128,28, + 0,28,0,9,11,22,9,0,0,28,0,28,0,201,128,201, + 128,62,0,20,0,62,0,201,128,201,128,28,0,28,0,9, + 11,22,9,0,0,28,0,28,0,201,128,201,128,62,0,28, + 0,62,0,201,128,201,128,28,0,28,0,9,11,22,9,0, + 0,28,0,20,0,201,128,201,128,62,0,20,0,127,0,170, + 128,201,128,28,0,28,0,8,9,9,9,0,0,24,24,219, + 255,36,36,126,231,66,255,255,255,8,9,9,9,0,0,24, + 203,189,110,24,118,189,211,24,9,12,24,9,0,0,8,0, + 42,0,93,0,170,128,107,0,221,128,221,128,107,0,170,128, + 93,0,42,0,8,0,9,12,24,9,0,0,8,0,42,0, + 93,0,170,128,107,0,221,128,221,128,107,0,170,128,93,0, + 42,0,8,0,9,12,24,9,0,0,8,0,42,0,93,0, + 170,128,107,0,221,128,221,128,107,0,170,128,93,0,42,0, + 8,0,9,9,18,9,0,0,8,0,73,0,42,0,20,0, + 235,128,20,0,42,0,73,0,8,0,9,9,18,9,0,0, + 8,0,73,0,42,0,20,0,235,128,20,0,42,0,73,0, + 8,0,8,9,9,9,0,0,24,219,203,60,24,60,211,219, + 24,9,9,18,9,0,0,8,0,73,0,42,0,0,0,235, + 128,0,0,42,0,73,0,8,0,9,9,18,9,0,0,8, + 0,73,0,42,0,28,0,255,128,28,0,42,0,73,0,8, + 0,255,9,8,16,9,0,1,62,0,67,0,129,128,129,128, + 129,128,129,128,67,0,62,0,255,9,9,18,9,0,0,254, + 0,130,0,131,128,131,128,131,128,131,128,255,128,63,128,63, + 128,9,9,18,9,0,0,63,128,63,128,255,128,131,128,131, + 128,131,128,131,128,130,0,254,0,8,8,8,9,0,0,254, + 131,131,131,131,131,255,127,8,8,8,9,0,0,127,255,131, + 131,131,131,131,254,255,255,255,9,9,18,9,0,0,8,0, + 28,0,8,0,65,0,227,128,65,0,8,0,28,0,8,0, + 255,1,10,10,9,4,0,128,128,128,128,128,128,128,128,128, + 128,2,10,10,9,3,0,192,192,192,192,192,192,192,192,192, + 192,3,10,10,9,3,0,224,224,224,224,224,224,224,224,224, + 224,4,6,6,9,3,5,112,128,224,240,240,96,4,6,6, + 9,3,5,96,240,240,112,16,224,9,6,12,9,0,5,115, + 128,132,0,231,0,247,128,247,128,99,0,9,6,12,9,0, + 5,99,0,247,128,247,128,115,128,16,128,231,0,255,255,7, + 10,10,9,1,0,4,126,228,228,228,124,4,100,104,48,5, + 10,10,9,2,0,112,248,248,112,32,32,0,32,112,32,5, + 10,10,9,2,0,80,248,248,112,32,32,0,32,112,32,9, + 9,18,9,0,0,99,0,247,128,255,128,255,128,127,0,62, + 0,28,0,8,0,8,0,9,9,18,9,0,0,112,0,248, + 0,252,0,126,0,63,128,126,0,252,0,248,0,112,0,9, + 12,24,9,0,0,8,0,116,128,149,0,14,0,4,0,107, + 0,247,128,255,128,127,0,62,0,28,0,8,0,9,12,24, + 9,0,0,16,0,41,0,82,0,156,0,32,0,88,0,124, + 0,60,0,254,0,254,128,255,0,126,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,227,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,237,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,152,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,152,128,132,128,132, + 128,136,128,156,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,152,128,132,128,136,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,152,128,168, + 128,188,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,144,128,152,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,140,128,144,128,152, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,132,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,148,128,136, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,148,128,140,128,132,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,164,128,170,128,170, + 128,170,128,164,128,128,128,127,0,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,239,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,7,8,8,9,1,1,48, + 24,12,254,254,12,24,48,255,255,255,7,5,5,9,1,1, + 224,250,62,14,30,8,7,7,9,1,1,8,12,230,255,230, + 12,8,7,5,5,9,1,1,30,14,62,250,224,9,7,14, + 9,0,0,48,0,28,0,31,0,255,128,31,0,28,0,48, + 0,9,9,18,9,0,0,28,0,30,0,15,0,255,128,255, + 128,255,128,15,0,30,0,28,0,9,5,10,9,0,1,2, + 0,3,0,255,128,3,0,2,0,9,7,14,9,0,0,4, + 0,6,0,255,0,255,128,255,0,6,0,4,0,9,5,10, + 9,0,1,2,0,183,0,183,128,183,0,2,0,9,5,10, + 9,0,1,2,0,171,0,171,128,171,0,2,0,9,5,10, + 9,0,1,2,0,255,0,255,128,255,0,2,0,9,8,16, + 9,0,1,128,0,112,0,78,0,33,128,31,128,62,0,112, + 0,128,0,9,8,16,9,0,1,128,0,112,0,62,0,31, + 128,33,128,78,0,112,0,128,0,9,8,16,9,0,1,128, + 0,112,0,62,0,31,128,31,128,62,0,112,0,128,0,9, + 7,14,9,0,0,132,0,134,0,255,0,255,128,127,0,6, + 0,4,0,9,7,14,9,0,0,4,0,6,0,127,0,255, + 128,255,0,134,0,132,0,6,9,9,9,2,0,16,16,248, + 248,252,248,248,16,16,8,9,9,9,0,1,4,4,254,254, + 255,254,254,4,4,9,9,18,9,0,0,24,0,28,0,22, + 0,243,0,129,128,243,0,22,0,28,0,24,0,9,9,18, + 9,0,0,24,0,28,0,26,0,249,0,192,128,249,0,26, + 0,28,0,24,0,9,9,18,9,0,0,0,128,1,128,62, + 128,64,128,129,128,243,0,238,0,60,0,56,0,9,9,18, + 9,0,0,56,0,60,0,238,0,243,0,129,128,64,128,62, + 128,1,128,0,128,8,9,9,9,0,1,16,24,20,242,129, + 243,118,28,24,8,9,9,9,0,1,24,28,118,243,129,242, + 20,24,16,9,7,14,9,0,2,4,0,250,0,129,0,64, + 128,129,128,251,0,6,0,255,9,7,14,9,0,2,6,0, + 251,0,129,128,64,128,129,0,250,0,4,0,9,9,18,9, + 0,1,28,0,127,0,251,128,1,128,0,128,1,128,251,128, + 127,0,28,0,9,5,10,9,0,3,210,0,43,0,127,128, + 43,0,210,0,9,9,18,9,0,0,16,0,56,0,92,0, + 236,0,116,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,7,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,116,0,236,0,92,0, + 56,0,16,0,9,9,18,9,0,0,16,0,24,0,28,0, + 252,0,124,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,127,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,124,0,252,0,28,0, + 24,0,16,0,9,7,14,9,0,1,3,0,3,0,113,0, + 255,128,113,0,3,0,3,0,9,7,14,9,0,1,2,0, + 115,0,121,0,255,128,121,0,115,0,2,0,9,5,10,9, + 0,2,242,0,123,0,63,128,123,0,242,0,9,7,14,9, + 0,1,226,0,242,0,123,0,63,128,123,0,242,0,226,0, + 9,7,14,9,0,1,20,0,10,0,253,0,0,128,253,0, + 10,0,20,0,255,7,7,7,9,1,0,130,132,136,144,160, + 192,254,9,10,20,9,0,0,8,0,8,0,20,0,20,0, + 42,0,42,0,85,0,93,0,128,128,255,128,7,10,10,9, + 1,0,16,16,16,16,16,16,16,16,16,254,7,7,7,9, + 1,1,62,64,132,138,132,64,62,7,7,7,9,1,1,248, + 4,66,162,66,4,248,5,12,12,9,2,255,112,136,136,16, + 16,32,32,64,64,128,128,112,5,12,12,9,2,255,112,136, + 136,64,64,32,32,16,16,8,8,112,7,8,8,9,1,0, + 130,146,84,68,40,40,16,16,8,10,10,9,0,255,128,143, + 144,80,80,80,80,47,32,32,8,10,10,9,0,255,1,241, + 9,10,10,10,10,244,4,4,3,10,10,9,3,0,64,64, + 64,64,224,64,64,64,64,64,255,255,255,255,255,9,9,18, + 9,0,0,8,0,20,0,34,0,65,0,136,128,65,0,34, + 0,20,0,8,0,7,8,8,9,1,0,16,16,40,40,68, + 84,146,130,7,7,7,9,1,1,146,146,146,146,146,84,56, + 7,7,7,9,1,1,2,2,2,18,2,2,254,7,7,7, + 9,1,1,254,128,128,144,128,128,128,8,11,11,9,0,255, + 193,99,99,85,85,73,85,85,99,99,193,8,11,11,9,1, + 255,131,198,198,170,170,146,170,170,198,198,131,9,11,22,9, + 0,255,193,128,99,0,99,0,85,0,85,0,73,0,85,0, + 85,0,99,0,99,0,193,128,9,13,26,9,0,254,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,9,13,26,9,0,254,255,128, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,7,7,7,9,1,1,40,40, + 238,40,238,40,40,7,7,7,9,1,1,40,40,40,238,40, + 40,40,7,3,3,9,1,3,64,190,64,9,5,10,9,0, + 2,128,0,128,0,255,128,128,0,128,0,9,5,10,9,0, + 2,0,128,0,128,255,128,0,128,0,128,5,10,10,9,2, + 0,32,80,32,32,32,32,32,32,32,248,5,9,9,9,2, + 0,32,32,80,80,248,80,80,32,32,7,9,9,9,1,0, + 16,16,16,40,198,40,16,16,16,8,9,9,9,0,0,8, + 8,8,20,227,20,8,8,8,8,9,9,9,1,0,16,16, + 16,40,199,40,16,16,16,8,7,7,9,0,1,127,65,65, + 193,65,65,127,8,7,7,9,1,1,254,130,130,131,130,130, + 254,5,12,12,9,2,255,248,160,160,160,160,160,160,160,160, + 160,160,248,5,12,12,9,2,255,248,40,40,40,40,40,40, + 40,40,40,40,248,3,10,10,9,3,0,32,32,64,64,128, + 128,64,64,32,32,3,10,10,9,3,0,128,128,64,64,32, + 32,64,64,128,128,6,10,10,9,1,0,36,36,72,72,144, + 144,72,72,36,36,6,10,10,9,2,0,144,144,72,72,36, + 36,72,72,144,144,255,255,255,255,9,11,22,9,0,0,8, + 0,20,0,54,0,85,0,213,128,85,0,85,0,85,0,85, + 0,85,0,85,0,9,11,22,9,0,255,85,0,85,0,85, + 0,85,0,85,0,85,0,213,128,85,0,54,0,20,0,8, + 0,8,8,8,9,0,0,28,34,169,113,33,1,34,28,8, + 8,8,9,0,0,56,68,149,142,132,128,68,56,9,5,10, + 9,0,2,114,0,169,0,255,128,169,0,114,0,9,5,10, + 9,0,2,32,0,64,0,255,128,64,0,32,0,9,5,10, + 9,0,2,2,0,1,0,255,128,1,0,2,0,9,5,10, + 9,0,2,34,0,65,0,255,128,65,0,34,0,9,7,14, + 9,0,1,16,0,32,0,127,128,128,0,127,128,32,0,16, + 0,9,7,14,9,0,1,4,0,2,0,255,0,0,128,255, + 0,2,0,4,0,9,7,14,9,0,1,20,0,34,0,127, + 0,128,128,127,0,34,0,20,0,9,5,10,9,0,2,32, + 128,64,128,255,128,64,128,32,128,9,5,10,9,0,2,130, + 0,129,0,255,128,129,0,130,0,9,7,14,9,0,1,16, + 128,32,128,127,128,128,128,127,128,32,128,16,128,9,7,14, + 9,0,1,132,0,130,0,255,0,128,128,255,0,130,0,132, + 0,9,6,12,9,0,1,2,0,1,0,85,128,170,128,1, + 0,2,0}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=14 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=20 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15B[2990] U8G_SECTION(".progmem.u8g_font_9x15B") = { + 0,9,15,0,253,10,1,232,3,214,32,255,253,12,253,11, + 253,0,0,0,9,0,12,2,10,10,9,3,0,192,192,192, + 192,192,192,192,192,0,192,5,3,3,9,2,7,216,216,216, + 7,8,8,9,1,1,108,108,254,108,108,254,108,108,7,11, + 11,9,1,255,16,124,214,208,240,124,30,22,214,124,16,8, + 10,10,9,0,0,67,230,230,76,24,24,50,103,103,194,8, + 10,10,9,0,0,56,108,108,120,48,121,207,198,206,123,2, + 4,4,9,3,6,192,192,192,192,5,12,12,9,2,255,24, + 48,96,96,192,192,192,192,96,96,48,24,5,12,12,9,2, + 255,192,96,48,48,24,24,24,24,48,48,96,192,7,5,5, + 9,1,2,108,56,254,56,108,8,7,7,9,0,1,24,24, + 24,255,24,24,24,3,5,5,9,3,253,224,224,96,96,192, + 8,1,1,9,0,4,255,4,3,3,9,2,255,96,240,96, + 8,10,10,9,0,0,3,6,6,12,24,24,48,96,96,192, + 8,10,10,9,0,0,24,60,102,195,195,195,195,102,60,24, + 6,10,10,9,1,0,48,112,240,48,48,48,48,48,48,252, + 8,10,10,9,0,0,60,102,195,3,6,12,24,48,96,255, + 8,10,10,9,0,0,124,198,3,6,28,6,3,3,198,124, + 8,10,10,9,0,0,6,14,30,54,102,198,255,6,6,6, + 8,10,10,9,0,0,254,192,192,220,230,3,3,195,102,60, + 8,10,10,9,0,0,60,102,194,192,220,230,195,195,102,60, + 8,10,10,9,0,0,255,3,3,6,12,12,24,24,24,24, + 8,10,10,9,0,0,60,102,195,102,60,102,195,195,102,60, + 8,10,10,9,0,0,60,102,195,195,103,59,3,67,102,60, + 4,8,8,9,2,255,96,240,96,0,0,96,240,96,4,10, + 10,9,2,253,96,240,96,0,0,112,112,48,48,96,6,10, + 10,9,1,0,12,24,48,96,192,192,96,48,24,12,8,4, + 4,9,0,2,255,0,0,255,6,10,10,9,1,0,192,96, + 48,24,12,12,24,48,96,192,7,10,10,9,1,0,124,198, + 198,6,12,24,48,0,48,48,8,10,10,9,0,0,60,102, + 195,207,219,219,206,192,99,62,8,10,10,9,0,0,24,60, + 102,195,195,195,255,195,195,195,8,10,10,9,0,0,252,198, + 195,198,252,198,195,195,198,252,8,10,10,9,0,0,62,99, + 193,192,192,192,192,193,99,62,8,10,10,9,0,0,252,198, + 195,195,195,195,195,195,198,252,7,10,10,9,1,0,254,192, + 192,192,252,192,192,192,192,254,8,10,10,9,0,0,255,192, + 192,192,252,192,192,192,192,192,8,10,10,9,0,0,62,99, + 192,192,192,199,195,195,99,62,8,10,10,9,0,0,195,195, + 195,195,255,195,195,195,195,195,6,10,10,9,1,0,252,48, + 48,48,48,48,48,48,48,252,6,10,10,9,1,0,60,12, + 12,12,12,12,12,140,216,112,8,10,10,9,0,0,195,198, + 204,216,240,240,216,204,198,195,7,10,10,9,1,0,192,192, + 192,192,192,192,192,192,192,254,8,10,10,9,0,0,195,231, + 255,219,219,219,195,195,195,195,8,10,10,9,0,0,195,227, + 243,243,219,219,207,199,199,195,8,10,10,9,0,0,60,102, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,254,195, + 195,195,254,192,192,192,192,192,8,10,10,9,0,0,60,102, + 195,195,195,195,219,207,102,61,8,10,10,9,0,0,254,195, + 195,195,254,248,204,198,195,195,8,10,10,9,0,0,126,195, + 192,192,126,3,3,3,195,126,8,10,10,9,0,0,255,24, + 24,24,24,24,24,24,24,24,8,10,10,9,0,0,195,195, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,195,195, + 195,102,102,102,60,60,24,24,8,10,10,9,0,0,195,195, + 195,195,219,219,219,255,231,195,8,10,10,9,0,0,195,195, + 102,60,24,24,60,102,195,195,8,10,10,9,0,0,195,195, + 102,60,24,24,24,24,24,24,7,10,10,9,1,0,254,6, + 6,12,24,48,96,192,192,254,5,12,12,9,2,255,248,192, + 192,192,192,192,192,192,192,192,192,248,8,10,10,9,0,0, + 192,96,96,48,24,24,12,6,6,3,5,12,12,9,2,255, + 248,24,24,24,24,24,24,24,24,24,24,248,6,4,4,9, + 1,6,48,120,204,132,8,1,1,9,0,255,255,4,3,3, + 9,2,8,192,96,48,8,7,7,9,0,0,62,99,3,127, + 195,199,123,8,10,10,9,0,0,192,192,192,220,230,195,195, + 195,230,220,8,7,7,9,0,0,62,99,192,192,192,99,62, + 8,10,10,9,0,0,3,3,3,59,103,195,195,195,103,59, + 8,7,7,9,0,0,60,102,195,255,192,99,62,8,10,10, + 9,0,0,30,51,51,48,48,252,48,48,48,48,8,10,10, + 9,0,253,125,199,198,198,124,192,126,195,195,126,8,10,10, + 9,0,0,192,192,192,220,230,195,195,195,195,195,6,10,10, + 9,1,0,48,48,0,112,48,48,48,48,48,252,7,13,13, + 9,1,253,6,6,0,30,6,6,6,6,6,198,198,198,124, + 7,10,10,9,1,0,192,192,192,204,216,240,240,216,204,198, + 6,10,10,9,1,0,112,48,48,48,48,48,48,48,48,252, + 8,7,7,9,0,0,182,219,219,219,219,219,219,8,7,7, + 9,0,0,220,230,195,195,195,195,195,8,7,7,9,0,0, + 60,102,195,195,195,102,60,8,10,10,9,0,253,220,230,195, + 195,195,230,220,192,192,192,8,10,10,9,0,253,59,103,195, + 195,195,103,59,3,3,3,8,7,7,9,0,0,222,115,96, + 96,96,96,96,8,7,7,9,0,0,126,195,192,126,3,195, + 126,8,9,9,9,0,0,48,48,252,48,48,48,48,51,30, + 8,7,7,9,0,0,195,195,195,195,195,103,59,8,7,7, + 9,0,0,195,195,102,102,60,60,24,8,7,7,9,0,0, + 195,195,219,219,219,255,102,8,7,7,9,0,0,195,102,60, + 24,60,102,195,8,10,10,9,0,253,195,195,195,195,195,103, + 59,3,198,124,6,7,7,9,1,0,252,12,24,48,96,192, + 252,5,12,12,9,2,255,56,96,96,96,96,192,192,96,96, + 96,96,56,2,10,10,9,3,0,192,192,192,192,192,192,192, + 192,192,192,5,12,12,9,2,255,224,48,48,48,48,24,24, + 48,48,48,48,224,8,3,3,9,0,7,115,219,206,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,12,2,10,10,9,4,0,192,0,192,192,192, + 192,192,192,192,192,7,8,8,9,1,0,4,124,206,208,208, + 230,124,64,8,10,10,9,0,255,30,51,48,48,124,48,48, + 248,191,224,7,7,7,9,1,2,198,254,108,68,108,254,198, + 8,10,10,9,0,0,195,195,102,60,126,24,126,24,24,24, + 2,11,11,9,4,255,192,192,192,192,192,0,0,192,192,192, + 192,6,11,11,9,1,255,120,204,192,120,204,204,204,120,12, + 204,120,6,2,2,9,1,9,204,204,8,11,11,9,0,0, + 60,126,195,189,165,161,165,189,195,126,60,5,7,7,9,1, + 3,240,24,248,152,248,0,248,8,8,8,9,0,1,27,54, + 108,216,216,108,54,27,7,5,5,9,1,2,254,254,6,6, + 6,6,1,1,9,1,4,252,8,11,11,9,0,0,60,126, + 195,189,165,189,169,173,195,126,60,6,2,2,9,1,9,252, + 252,6,4,4,9,2,6,120,204,204,120,8,10,10,9,0, + 0,24,24,24,255,255,24,24,24,255,255,5,7,7,9,1, + 4,112,152,24,48,96,192,248,5,7,7,9,1,4,112,152, + 24,48,24,152,112,4,3,3,9,2,8,48,96,192,7,10, + 10,9,1,253,198,198,198,198,198,238,250,192,192,192,7,10, + 10,9,1,0,126,254,246,246,246,118,54,54,54,54,3,3, + 3,9,3,3,64,224,64,5,3,3,9,2,253,24,216,112, + 4,7,7,9,1,4,96,224,96,96,96,96,240,5,6,6, + 9,1,4,112,216,216,112,0,248,8,8,8,9,0,1,216, + 108,54,27,27,54,108,216,8,11,11,9,0,0,96,224,96, + 96,97,99,247,15,27,31,3,8,11,11,9,0,0,96,224, + 96,96,110,115,243,6,12,24,31,8,11,11,9,0,0,112, + 152,24,48,25,155,119,15,27,31,3,7,10,10,9,1,0, + 24,24,0,24,48,96,192,198,198,124,8,12,12,9,0,0, + 96,48,24,0,60,102,195,195,255,195,195,195,8,12,12,9, + 0,0,6,12,24,0,60,102,195,195,255,195,195,195,8,12, + 12,9,0,0,24,60,102,0,60,102,195,195,255,195,195,195, + 8,12,12,9,0,0,50,126,76,0,60,102,195,195,255,195, + 195,195,8,11,11,9,0,0,102,102,0,60,102,195,195,255, + 195,195,195,8,12,12,9,0,0,24,36,36,24,60,102,195, + 195,255,195,195,195,8,10,10,9,0,0,31,60,108,108,204, + 255,204,204,204,207,8,13,13,9,0,253,62,99,193,192,192, + 192,192,193,99,62,12,108,56,7,12,12,9,1,0,96,48, + 24,0,254,192,192,252,192,192,192,254,7,12,12,9,1,0, + 12,24,48,0,254,192,192,252,192,192,192,254,7,12,12,9, + 1,0,24,60,102,0,254,192,192,252,192,192,192,254,7,11, + 11,9,1,0,102,102,0,254,192,192,252,192,192,192,254,6, + 12,12,9,1,0,192,96,48,0,252,48,48,48,48,48,48, + 252,6,12,12,9,1,0,24,48,96,0,252,48,48,48,48, + 48,48,252,6,12,12,9,1,0,48,120,204,0,252,48,48, + 48,48,48,48,252,6,11,11,9,1,0,204,204,0,252,48, + 48,48,48,48,48,252,9,10,20,9,0,0,126,0,99,0, + 97,128,97,128,249,128,249,128,97,128,97,128,99,0,126,0, + 8,12,12,9,0,0,50,126,76,0,195,227,243,251,223,207, + 199,195,8,12,12,9,0,0,96,48,24,0,60,102,195,195, + 195,195,102,60,8,12,12,9,0,0,6,12,24,0,60,102, + 195,195,195,195,102,60,8,12,12,9,0,0,24,60,102,0, + 60,102,195,195,195,195,102,60,8,12,12,9,0,0,50,126, + 76,0,60,102,195,195,195,195,102,60,8,11,11,9,0,0, + 102,102,0,60,102,195,195,195,195,102,60,7,8,8,9,1, + 0,130,198,108,56,56,108,198,130,8,12,12,9,0,255,1, + 63,102,199,203,203,211,211,227,102,252,128,8,12,12,9,0, + 0,96,48,24,0,195,195,195,195,195,195,102,60,8,12,12, + 9,0,0,6,12,24,0,195,195,195,195,195,195,102,60,8, + 12,12,9,0,0,24,60,102,0,195,195,195,195,195,195,102, + 60,8,11,11,9,0,0,102,102,0,195,195,195,195,195,195, + 102,60,8,12,12,9,0,0,6,12,24,0,195,102,60,24, + 24,24,24,24,7,10,10,9,1,0,240,96,124,102,102,102, + 124,96,96,240,7,10,10,9,1,0,60,102,198,204,216,204, + 198,198,198,220,8,11,11,9,0,0,96,48,24,0,62,67, + 3,127,195,199,123,8,11,11,9,0,0,12,24,48,0,62, + 67,3,127,195,199,123,8,11,11,9,0,0,24,60,102,0, + 62,67,3,127,195,199,123,8,11,11,9,0,0,50,126,76, + 0,62,67,3,127,195,199,123,8,10,10,9,0,0,102,102, + 0,62,67,3,127,195,199,123,8,11,11,9,0,0,24,36, + 36,24,62,67,3,127,195,199,123,8,7,7,9,0,0,118, + 155,27,126,216,217,110,8,10,10,9,0,253,62,99,192,192, + 192,99,62,12,108,56,8,11,11,9,0,0,96,48,24,0, + 60,102,195,255,192,99,62,8,11,11,9,0,0,12,24,48, + 0,60,102,195,255,192,99,62,8,11,11,9,0,0,24,60, + 102,0,60,102,195,255,192,99,62,8,10,10,9,0,0,102, + 102,0,60,102,195,255,192,99,62,6,11,11,9,1,0,192, + 96,48,0,112,48,48,48,48,48,252,6,11,11,9,1,0, + 24,48,96,0,112,48,48,48,48,48,252,6,11,11,9,1, + 0,48,120,204,0,112,48,48,48,48,48,252,6,10,10,9, + 1,0,204,204,0,112,48,48,48,48,48,252,8,12,12,9, + 0,0,136,216,112,112,216,140,62,103,195,195,102,60,8,11, + 11,9,0,0,50,126,76,0,220,230,195,195,195,195,195,8, + 11,11,9,0,0,96,48,24,0,60,102,195,195,195,102,60, + 8,11,11,9,0,0,12,24,48,0,60,102,195,195,195,102, + 60,8,11,11,9,0,0,24,60,102,0,60,102,195,195,195, + 102,60,8,11,11,9,0,0,50,126,76,0,60,102,195,195, + 195,102,60,8,10,10,9,0,0,102,102,0,60,102,195,195, + 195,102,60,8,10,10,9,0,0,24,24,0,0,255,255,0, + 0,24,24,8,9,9,9,0,255,1,63,102,207,219,243,102, + 252,128,8,11,11,9,0,0,96,48,24,0,195,195,195,195, + 195,103,59,8,11,11,9,0,0,12,24,48,0,195,195,195, + 195,195,103,59,8,11,11,9,0,0,24,60,102,0,195,195, + 195,195,195,103,59,8,10,10,9,0,0,102,102,0,195,195, + 195,195,195,103,59,8,14,14,9,0,253,12,24,48,0,195, + 195,195,195,195,103,59,3,198,124,7,12,12,9,1,253,224, + 96,96,124,102,102,102,102,124,96,96,224,8,13,13,9,0, + 253,102,102,0,195,195,195,195,195,103,59,3,198,124}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 3 y=12 dx= 9 dy= 0 ascent=12 len=13 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15Br[1423] U8G_SECTION(".progmem.u8g_font_9x15Br") = { + 0,9,15,0,253,10,1,232,3,214,32,127,253,12,253,11, + 253,0,0,0,9,0,12,2,10,10,9,3,0,192,192,192, + 192,192,192,192,192,0,192,5,3,3,9,2,7,216,216,216, + 7,8,8,9,1,1,108,108,254,108,108,254,108,108,7,11, + 11,9,1,255,16,124,214,208,240,124,30,22,214,124,16,8, + 10,10,9,0,0,67,230,230,76,24,24,50,103,103,194,8, + 10,10,9,0,0,56,108,108,120,48,121,207,198,206,123,2, + 4,4,9,3,6,192,192,192,192,5,12,12,9,2,255,24, + 48,96,96,192,192,192,192,96,96,48,24,5,12,12,9,2, + 255,192,96,48,48,24,24,24,24,48,48,96,192,7,5,5, + 9,1,2,108,56,254,56,108,8,7,7,9,0,1,24,24, + 24,255,24,24,24,3,5,5,9,3,253,224,224,96,96,192, + 8,1,1,9,0,4,255,4,3,3,9,2,255,96,240,96, + 8,10,10,9,0,0,3,6,6,12,24,24,48,96,96,192, + 8,10,10,9,0,0,24,60,102,195,195,195,195,102,60,24, + 6,10,10,9,1,0,48,112,240,48,48,48,48,48,48,252, + 8,10,10,9,0,0,60,102,195,3,6,12,24,48,96,255, + 8,10,10,9,0,0,124,198,3,6,28,6,3,3,198,124, + 8,10,10,9,0,0,6,14,30,54,102,198,255,6,6,6, + 8,10,10,9,0,0,254,192,192,220,230,3,3,195,102,60, + 8,10,10,9,0,0,60,102,194,192,220,230,195,195,102,60, + 8,10,10,9,0,0,255,3,3,6,12,12,24,24,24,24, + 8,10,10,9,0,0,60,102,195,102,60,102,195,195,102,60, + 8,10,10,9,0,0,60,102,195,195,103,59,3,67,102,60, + 4,8,8,9,2,255,96,240,96,0,0,96,240,96,4,10, + 10,9,2,253,96,240,96,0,0,112,112,48,48,96,6,10, + 10,9,1,0,12,24,48,96,192,192,96,48,24,12,8,4, + 4,9,0,2,255,0,0,255,6,10,10,9,1,0,192,96, + 48,24,12,12,24,48,96,192,7,10,10,9,1,0,124,198, + 198,6,12,24,48,0,48,48,8,10,10,9,0,0,60,102, + 195,207,219,219,206,192,99,62,8,10,10,9,0,0,24,60, + 102,195,195,195,255,195,195,195,8,10,10,9,0,0,252,198, + 195,198,252,198,195,195,198,252,8,10,10,9,0,0,62,99, + 193,192,192,192,192,193,99,62,8,10,10,9,0,0,252,198, + 195,195,195,195,195,195,198,252,7,10,10,9,1,0,254,192, + 192,192,252,192,192,192,192,254,8,10,10,9,0,0,255,192, + 192,192,252,192,192,192,192,192,8,10,10,9,0,0,62,99, + 192,192,192,199,195,195,99,62,8,10,10,9,0,0,195,195, + 195,195,255,195,195,195,195,195,6,10,10,9,1,0,252,48, + 48,48,48,48,48,48,48,252,6,10,10,9,1,0,60,12, + 12,12,12,12,12,140,216,112,8,10,10,9,0,0,195,198, + 204,216,240,240,216,204,198,195,7,10,10,9,1,0,192,192, + 192,192,192,192,192,192,192,254,8,10,10,9,0,0,195,231, + 255,219,219,219,195,195,195,195,8,10,10,9,0,0,195,227, + 243,243,219,219,207,199,199,195,8,10,10,9,0,0,60,102, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,254,195, + 195,195,254,192,192,192,192,192,8,10,10,9,0,0,60,102, + 195,195,195,195,219,207,102,61,8,10,10,9,0,0,254,195, + 195,195,254,248,204,198,195,195,8,10,10,9,0,0,126,195, + 192,192,126,3,3,3,195,126,8,10,10,9,0,0,255,24, + 24,24,24,24,24,24,24,24,8,10,10,9,0,0,195,195, + 195,195,195,195,195,195,102,60,8,10,10,9,0,0,195,195, + 195,102,102,102,60,60,24,24,8,10,10,9,0,0,195,195, + 195,195,219,219,219,255,231,195,8,10,10,9,0,0,195,195, + 102,60,24,24,60,102,195,195,8,10,10,9,0,0,195,195, + 102,60,24,24,24,24,24,24,7,10,10,9,1,0,254,6, + 6,12,24,48,96,192,192,254,5,12,12,9,2,255,248,192, + 192,192,192,192,192,192,192,192,192,248,8,10,10,9,0,0, + 192,96,96,48,24,24,12,6,6,3,5,12,12,9,2,255, + 248,24,24,24,24,24,24,24,24,24,24,248,6,4,4,9, + 1,6,48,120,204,132,8,1,1,9,0,255,255,4,3,3, + 9,2,8,192,96,48,8,7,7,9,0,0,62,99,3,127, + 195,199,123,8,10,10,9,0,0,192,192,192,220,230,195,195, + 195,230,220,8,7,7,9,0,0,62,99,192,192,192,99,62, + 8,10,10,9,0,0,3,3,3,59,103,195,195,195,103,59, + 8,7,7,9,0,0,60,102,195,255,192,99,62,8,10,10, + 9,0,0,30,51,51,48,48,252,48,48,48,48,8,10,10, + 9,0,253,125,199,198,198,124,192,126,195,195,126,8,10,10, + 9,0,0,192,192,192,220,230,195,195,195,195,195,6,10,10, + 9,1,0,48,48,0,112,48,48,48,48,48,252,7,13,13, + 9,1,253,6,6,0,30,6,6,6,6,6,198,198,198,124, + 7,10,10,9,1,0,192,192,192,204,216,240,240,216,204,198, + 6,10,10,9,1,0,112,48,48,48,48,48,48,48,48,252, + 8,7,7,9,0,0,182,219,219,219,219,219,219,8,7,7, + 9,0,0,220,230,195,195,195,195,195,8,7,7,9,0,0, + 60,102,195,195,195,102,60,8,10,10,9,0,253,220,230,195, + 195,195,230,220,192,192,192,8,10,10,9,0,253,59,103,195, + 195,195,103,59,3,3,3,8,7,7,9,0,0,222,115,96, + 96,96,96,96,8,7,7,9,0,0,126,195,192,126,3,195, + 126,8,9,9,9,0,0,48,48,252,48,48,48,48,51,30, + 8,7,7,9,0,0,195,195,195,195,195,103,59,8,7,7, + 9,0,0,195,195,102,102,60,60,24,8,7,7,9,0,0, + 195,195,219,219,219,255,102,8,7,7,9,0,0,195,102,60, + 24,60,102,195,8,10,10,9,0,253,195,195,195,195,195,103, + 59,3,198,124,6,7,7,9,1,0,252,12,24,48,96,192, + 252,5,12,12,9,2,255,56,96,96,96,96,192,192,96,96, + 96,96,56,2,10,10,9,3,0,192,192,192,192,192,192,192, + 192,192,192,5,12,12,9,2,255,224,48,48,48,48,24,24, + 48,48,48,48,224,8,3,3,9,0,7,115,219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=14 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=14 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15[2959] U8G_SECTION(".progmem.u8g_font_9x15") = { + 0,9,15,0,253,10,1,232,3,216,32,255,253,12,253,11, + 253,0,0,0,9,0,12,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,9,3,7,144,144, + 144,6,8,8,9,1,1,72,72,252,72,72,252,72,72,7, + 11,11,9,1,255,16,124,146,144,80,56,20,18,146,124,16, + 7,10,10,9,1,0,66,164,164,72,16,16,36,74,74,132, + 7,10,10,9,1,0,96,144,144,144,96,98,148,136,148,98, + 1,3,3,9,4,7,128,128,128,3,12,12,9,3,255,32, + 64,64,128,128,128,128,128,128,64,64,32,3,12,12,9,3, + 255,128,64,64,32,32,32,32,32,32,64,64,128,7,7,7, + 9,1,3,16,146,84,56,84,146,16,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,5,5,9,4,253,192,192,64, + 64,128,7,1,1,9,1,4,254,2,2,2,9,4,0,192, + 192,7,10,10,9,1,0,2,4,4,8,16,16,32,64,64, + 128,7,10,10,9,1,0,56,68,130,130,130,130,130,130,68, + 56,7,10,10,9,1,0,16,48,80,144,16,16,16,16,16, + 254,7,10,10,9,1,0,124,130,130,4,8,16,32,64,128, + 254,7,10,10,9,1,0,254,2,4,8,28,2,2,2,130, + 124,7,10,10,9,1,0,4,12,20,36,68,132,254,4,4, + 4,7,10,10,9,1,0,254,128,128,188,194,2,2,2,130, + 124,7,10,10,9,1,0,60,64,128,128,188,194,130,130,130, + 124,7,10,10,9,1,0,254,2,4,4,8,8,16,16,32, + 32,7,10,10,9,1,0,56,68,130,68,56,68,130,130,68, + 56,7,10,10,9,1,0,124,130,130,130,134,122,2,2,4, + 120,2,7,7,9,4,0,192,192,0,0,0,192,192,2,10, + 10,9,4,253,192,192,0,0,0,192,192,64,64,128,5,10, + 10,9,2,0,8,16,32,64,128,128,64,32,16,8,7,4, + 4,9,1,2,254,0,0,254,5,10,10,9,2,0,128,64, + 32,16,8,8,16,32,64,128,7,10,10,9,1,0,124,130, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,124,130, + 130,158,162,166,154,128,128,124,7,10,10,9,1,0,16,40, + 68,130,130,130,254,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,124,130, + 128,128,128,128,128,128,130,124,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,124,130, + 128,128,128,142,130,130,130,124,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,8,10,10,9,1,0,31,4, + 4,4,4,4,4,4,132,120,7,10,10,9,1,0,130,132, + 136,144,224,160,144,136,132,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,170,146,146,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,252,130, + 130,130,252,128,128,128,128,128,7,12,12,9,1,254,124,130, + 130,130,130,130,130,162,146,124,8,6,7,10,10,9,1,0, + 252,130,130,130,252,144,136,132,130,130,7,10,10,9,1,0, + 124,130,130,128,112,12,2,130,130,124,7,10,10,9,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,9,1,0, + 130,130,130,130,130,130,130,130,130,124,7,10,10,9,1,0, + 130,130,130,68,68,68,40,40,40,16,7,10,10,9,1,0, + 130,130,130,130,146,146,146,146,170,68,7,10,10,9,1,0, + 130,130,68,40,16,16,40,68,130,130,7,10,10,9,1,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 254,2,4,8,16,32,64,128,128,254,4,12,12,9,3,255, + 240,128,128,128,128,128,128,128,128,128,128,240,7,10,10,9, + 1,0,128,64,64,32,16,16,8,4,4,2,4,12,12,9, + 2,255,240,16,16,16,16,16,16,16,16,16,16,240,7,4, + 4,9,1,6,16,40,68,130,8,1,1,9,0,255,255,3, + 3,3,9,3,8,128,64,32,7,7,7,9,1,0,124,2, + 2,126,130,134,122,7,10,10,9,1,0,128,128,128,188,194, + 130,130,130,194,188,7,7,7,9,1,0,124,130,128,128,128, + 130,124,7,10,10,9,1,0,2,2,2,122,134,130,130,130, + 134,122,7,7,7,9,1,0,124,130,130,254,128,128,124,7, + 10,10,9,1,0,28,34,34,32,32,248,32,32,32,32,7, + 10,10,9,1,253,122,132,132,132,120,128,124,130,130,124,7, + 10,10,9,1,0,128,128,128,188,194,130,130,130,130,130,5, + 10,10,9,2,0,96,0,0,224,32,32,32,32,32,248,6, + 13,13,9,1,253,12,0,0,28,4,4,4,4,4,132,132, + 132,120,7,10,10,9,1,0,128,128,128,130,140,176,192,176, + 140,130,5,10,10,9,2,0,224,32,32,32,32,32,32,32, + 32,248,7,7,7,9,1,0,236,146,146,146,146,146,130,7, + 7,7,9,1,0,188,194,130,130,130,130,130,7,7,7,9, + 1,0,124,130,130,130,130,130,124,7,10,10,9,1,253,188, + 194,130,130,130,194,188,128,128,128,7,10,10,9,1,253,122, + 134,130,130,130,134,122,2,2,2,7,7,7,9,1,0,156, + 98,66,64,64,64,64,7,7,7,9,1,0,124,130,128,124, + 2,130,124,7,9,9,9,1,0,32,32,252,32,32,32,32, + 34,28,7,7,7,9,1,0,132,132,132,132,132,132,122,7, + 7,7,9,1,0,130,130,68,68,40,40,16,7,7,7,9, + 1,0,130,130,146,146,146,170,68,7,7,7,9,1,0,130, + 68,40,16,40,68,130,6,10,10,9,1,253,132,132,132,132, + 132,140,116,4,132,120,7,7,7,9,1,0,254,4,8,16, + 32,64,254,5,12,12,9,3,255,56,64,64,64,32,192,192, + 32,64,64,64,56,1,12,12,9,4,255,128,128,128,128,128, + 128,128,128,128,128,128,128,5,12,12,9,1,255,224,16,16, + 16,32,24,24,32,16,16,16,224,7,3,3,9,1,7,98, + 146,140,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,9,0,12,1,11,11,9,4,0,128, + 128,0,0,128,128,128,128,128,128,128,6,8,8,9,1,0, + 8,120,148,144,160,164,120,64,7,10,10,9,1,0,28,34, + 32,32,248,32,32,96,162,92,7,6,6,9,1,3,130,124, + 68,68,124,130,7,10,10,9,1,0,130,130,68,40,124,16, + 124,16,16,16,1,11,11,9,4,255,128,128,128,128,128,0, + 128,128,128,128,128,4,11,11,9,2,255,96,144,128,96,144, + 144,144,96,16,144,96,5,2,2,9,2,9,136,136,8,9, + 9,9,0,1,60,66,153,165,161,165,153,66,60,5,7,7, + 9,1,3,96,144,112,144,120,0,248,7,8,8,9,1,1, + 18,36,72,144,144,72,36,18,6,4,4,9,1,2,252,4, + 4,4,5,1,1,9,2,4,248,8,9,9,9,0,1,60, + 66,185,165,185,169,165,66,60,6,1,1,9,1,9,252,4, + 4,4,9,3,6,96,144,144,96,7,9,9,9,1,1,16, + 16,16,254,16,16,16,0,254,4,6,6,9,1,4,96,144, + 16,96,128,240,4,6,6,9,1,4,96,144,32,16,144,96, + 3,3,3,9,3,8,32,64,128,7,9,9,9,1,254,130, + 130,130,130,130,198,186,128,128,7,10,10,9,1,0,126,138, + 138,138,122,10,10,10,10,10,2,2,2,9,4,4,192,192, + 4,3,3,9,2,253,48,144,96,3,6,6,9,1,4,64, + 192,64,64,64,224,5,6,6,9,1,4,112,136,136,112,0, + 248,7,8,8,9,1,1,144,72,36,18,18,36,72,144,7, + 10,10,9,1,0,64,192,64,64,66,230,10,18,26,6,7, + 10,10,9,1,0,64,192,64,64,76,242,2,12,16,30,7, + 10,10,9,1,0,96,144,32,16,146,102,10,18,26,6,7, + 10,10,9,1,0,16,0,16,16,32,64,128,130,130,124,7, + 12,12,9,1,0,64,32,16,0,56,68,130,130,254,130,130, + 130,7,12,12,9,1,0,4,8,16,0,56,68,130,130,254, + 130,130,130,7,12,12,9,1,0,16,40,68,0,56,68,130, + 130,254,130,130,130,7,11,11,9,1,0,98,156,0,56,68, + 130,130,254,130,130,130,7,11,11,9,1,0,68,68,0,56, + 68,130,130,254,130,130,130,7,11,11,9,1,0,56,68,56, + 40,68,130,130,254,130,130,130,7,10,10,9,1,0,110,144, + 144,144,144,252,144,144,144,158,7,13,13,9,1,253,124,130, + 128,128,128,128,128,128,130,124,24,72,48,7,12,12,9,1, + 0,64,32,16,0,254,64,64,120,64,64,64,254,7,12,12, + 9,1,0,4,8,16,0,254,64,64,120,64,64,64,254,7, + 12,12,9,1,0,16,40,68,0,254,64,64,120,64,64,64, + 254,7,11,11,9,1,0,68,68,0,254,64,64,120,64,64, + 64,254,5,12,12,9,2,0,128,64,32,0,248,32,32,32, + 32,32,32,248,5,12,12,9,2,0,8,16,32,0,248,32, + 32,32,32,32,32,248,5,12,12,9,2,0,32,80,136,0, + 248,32,32,32,32,32,32,248,5,11,11,9,2,0,136,136, + 0,248,32,32,32,32,32,32,248,8,10,10,9,0,0,124, + 66,65,65,225,65,65,65,66,124,7,11,11,9,1,0,98, + 156,0,130,194,162,146,146,138,134,130,7,12,12,9,1,0, + 64,32,16,0,124,130,130,130,130,130,130,124,7,12,12,9, + 1,0,4,8,16,0,124,130,130,130,130,130,130,124,7,12, + 12,9,1,0,16,40,68,0,124,130,130,130,130,130,130,124, + 7,11,11,9,1,0,98,156,0,124,130,130,130,130,130,130, + 124,7,11,11,9,1,0,68,68,0,124,130,130,130,130,130, + 130,124,7,7,7,9,1,1,130,68,40,16,40,68,130,7, + 12,12,9,1,255,2,124,134,138,138,146,146,162,162,194,124, + 128,7,12,12,9,1,0,64,32,16,0,130,130,130,130,130, + 130,130,124,7,12,12,9,1,0,4,8,16,0,130,130,130, + 130,130,130,130,124,7,12,12,9,1,0,16,40,68,0,130, + 130,130,130,130,130,130,124,7,11,11,9,1,0,68,68,0, + 130,130,130,130,130,130,130,124,7,12,12,9,1,0,4,8, + 16,0,130,130,68,40,16,16,16,16,7,10,10,9,1,0, + 128,128,252,130,130,130,252,128,128,128,6,10,10,9,1,0, + 56,68,68,72,208,72,68,68,68,88,7,11,11,9,1,0, + 32,16,8,0,124,2,2,126,130,134,122,7,11,11,9,1, + 0,4,8,16,0,124,2,2,126,130,134,122,7,11,11,9, + 1,0,16,40,68,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,50,76,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,68,68,0,124,2,2,126,130,134,122,7,11,11, + 9,1,0,24,36,24,0,124,2,2,126,130,134,122,7,7, + 7,9,1,0,108,146,18,124,144,146,110,7,10,10,9,1, + 253,124,130,128,128,128,130,124,24,72,48,7,11,11,9,1, + 0,64,32,16,0,124,130,130,254,128,128,124,7,11,11,9, + 1,0,4,8,16,0,124,130,130,254,128,128,124,7,11,11, + 9,1,0,16,40,68,0,124,130,130,254,128,128,124,7,10, + 10,9,1,0,68,68,0,124,130,130,254,128,128,124,5,11, + 11,9,2,0,128,64,32,0,224,32,32,32,32,32,248,5, + 11,11,9,2,0,16,32,64,0,224,32,32,32,32,32,248, + 6,11,11,9,1,0,32,80,136,0,112,16,16,16,16,16, + 124,5,10,10,9,2,0,144,144,0,224,32,32,32,32,32, + 248,7,11,11,9,1,0,72,48,80,8,124,130,130,130,130, + 130,124,7,10,10,9,1,0,98,156,0,188,194,130,130,130, + 130,130,7,11,11,9,1,0,64,32,16,0,124,130,130,130, + 130,130,124,7,11,11,9,1,0,4,8,16,0,124,130,130, + 130,130,130,124,7,11,11,9,1,0,16,40,68,0,124,130, + 130,130,130,130,124,7,10,10,9,1,0,98,156,0,124,130, + 130,130,130,130,124,7,10,10,9,1,0,68,68,0,124,130, + 130,130,130,130,124,7,9,9,9,1,0,16,56,16,0,254, + 0,16,56,16,7,9,9,9,1,255,2,124,138,138,146,162, + 162,124,128,7,11,11,9,1,0,64,32,16,0,132,132,132, + 132,132,132,122,7,11,11,9,1,0,4,8,16,0,132,132, + 132,132,132,132,122,7,11,11,9,1,0,16,40,68,0,132, + 132,132,132,132,132,122,7,10,10,9,1,0,72,72,0,132, + 132,132,132,132,132,122,6,14,14,9,1,253,8,16,32,0, + 132,132,132,132,132,140,116,4,132,120,7,12,12,9,1,253, + 128,128,128,188,194,130,130,194,188,128,128,128,6,13,13,9, + 1,253,72,72,0,132,132,132,132,132,140,116,4,132,120}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 4 y=12 dx= 9 dy= 0 ascent=12 len=13 + Font Bounding box w= 9 h=15 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x15r[1427] U8G_SECTION(".progmem.u8g_font_9x15r") = { + 0,9,15,0,253,10,1,232,3,216,32,127,253,12,253,11, + 253,0,0,0,9,0,12,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,9,3,7,144,144, + 144,6,8,8,9,1,1,72,72,252,72,72,252,72,72,7, + 11,11,9,1,255,16,124,146,144,80,56,20,18,146,124,16, + 7,10,10,9,1,0,66,164,164,72,16,16,36,74,74,132, + 7,10,10,9,1,0,96,144,144,144,96,98,148,136,148,98, + 1,3,3,9,4,7,128,128,128,3,12,12,9,3,255,32, + 64,64,128,128,128,128,128,128,64,64,32,3,12,12,9,3, + 255,128,64,64,32,32,32,32,32,32,64,64,128,7,7,7, + 9,1,3,16,146,84,56,84,146,16,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,5,5,9,4,253,192,192,64, + 64,128,7,1,1,9,1,4,254,2,2,2,9,4,0,192, + 192,7,10,10,9,1,0,2,4,4,8,16,16,32,64,64, + 128,7,10,10,9,1,0,56,68,130,130,130,130,130,130,68, + 56,7,10,10,9,1,0,16,48,80,144,16,16,16,16,16, + 254,7,10,10,9,1,0,124,130,130,4,8,16,32,64,128, + 254,7,10,10,9,1,0,254,2,4,8,28,2,2,2,130, + 124,7,10,10,9,1,0,4,12,20,36,68,132,254,4,4, + 4,7,10,10,9,1,0,254,128,128,188,194,2,2,2,130, + 124,7,10,10,9,1,0,60,64,128,128,188,194,130,130,130, + 124,7,10,10,9,1,0,254,2,4,4,8,8,16,16,32, + 32,7,10,10,9,1,0,56,68,130,68,56,68,130,130,68, + 56,7,10,10,9,1,0,124,130,130,130,134,122,2,2,4, + 120,2,7,7,9,4,0,192,192,0,0,0,192,192,2,10, + 10,9,4,253,192,192,0,0,0,192,192,64,64,128,5,10, + 10,9,2,0,8,16,32,64,128,128,64,32,16,8,7,4, + 4,9,1,2,254,0,0,254,5,10,10,9,2,0,128,64, + 32,16,8,8,16,32,64,128,7,10,10,9,1,0,124,130, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,124,130, + 130,158,162,166,154,128,128,124,7,10,10,9,1,0,16,40, + 68,130,130,130,254,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,124,130, + 128,128,128,128,128,128,130,124,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,124,130, + 128,128,128,142,130,130,130,124,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,8,10,10,9,1,0,31,4, + 4,4,4,4,4,4,132,120,7,10,10,9,1,0,130,132, + 136,144,224,160,144,136,132,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,170,146,146,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,252,130, + 130,130,252,128,128,128,128,128,7,12,12,9,1,254,124,130, + 130,130,130,130,130,162,146,124,8,6,7,10,10,9,1,0, + 252,130,130,130,252,144,136,132,130,130,7,10,10,9,1,0, + 124,130,130,128,112,12,2,130,130,124,7,10,10,9,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,9,1,0, + 130,130,130,130,130,130,130,130,130,124,7,10,10,9,1,0, + 130,130,130,68,68,68,40,40,40,16,7,10,10,9,1,0, + 130,130,130,130,146,146,146,146,170,68,7,10,10,9,1,0, + 130,130,68,40,16,16,40,68,130,130,7,10,10,9,1,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 254,2,4,8,16,32,64,128,128,254,4,12,12,9,3,255, + 240,128,128,128,128,128,128,128,128,128,128,240,7,10,10,9, + 1,0,128,64,64,32,16,16,8,4,4,2,4,12,12,9, + 2,255,240,16,16,16,16,16,16,16,16,16,16,240,7,4, + 4,9,1,6,16,40,68,130,8,1,1,9,0,255,255,3, + 3,3,9,3,8,128,64,32,7,7,7,9,1,0,124,2, + 2,126,130,134,122,7,10,10,9,1,0,128,128,128,188,194, + 130,130,130,194,188,7,7,7,9,1,0,124,130,128,128,128, + 130,124,7,10,10,9,1,0,2,2,2,122,134,130,130,130, + 134,122,7,7,7,9,1,0,124,130,130,254,128,128,124,7, + 10,10,9,1,0,28,34,34,32,32,248,32,32,32,32,7, + 10,10,9,1,253,122,132,132,132,120,128,124,130,130,124,7, + 10,10,9,1,0,128,128,128,188,194,130,130,130,130,130,5, + 10,10,9,2,0,96,0,0,224,32,32,32,32,32,248,6, + 13,13,9,1,253,12,0,0,28,4,4,4,4,4,132,132, + 132,120,7,10,10,9,1,0,128,128,128,130,140,176,192,176, + 140,130,5,10,10,9,2,0,224,32,32,32,32,32,32,32, + 32,248,7,7,7,9,1,0,236,146,146,146,146,146,130,7, + 7,7,9,1,0,188,194,130,130,130,130,130,7,7,7,9, + 1,0,124,130,130,130,130,130,124,7,10,10,9,1,253,188, + 194,130,130,130,194,188,128,128,128,7,10,10,9,1,253,122, + 134,130,130,130,134,122,2,2,2,7,7,7,9,1,0,156, + 98,66,64,64,64,64,7,7,7,9,1,0,124,130,128,124, + 2,130,124,7,9,9,9,1,0,32,32,252,32,32,32,32, + 34,28,7,7,7,9,1,0,132,132,132,132,132,132,122,7, + 7,7,9,1,0,130,130,68,68,40,40,16,7,7,7,9, + 1,0,130,130,146,146,146,170,68,7,7,7,9,1,0,130, + 68,40,16,40,68,130,6,10,10,9,1,253,132,132,132,132, + 132,140,116,4,132,120,7,7,7,9,1,0,254,4,8,16, + 32,64,254,5,12,12,9,3,255,56,64,64,64,32,192,192, + 32,64,64,64,56,1,12,12,9,4,255,128,128,128,128,128, + 128,128,128,128,128,128,128,5,12,12,9,1,255,224,16,16, + 16,32,24,24,32,16,16,16,224,7,3,3,9,1,7,98, + 146,140,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 4, '1' Height: 10 + Calculated Max Values w= 9 h=18 x= 8 y=12 dx= 9 dy= 0 ascent=14 len=36 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 4 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[3936] U8G_SECTION(".progmem.u8g_font_9x18_67_75") = { + 0,9,18,0,252,4,1,255,4,34,32,255,0,14,252,10, + 0,8,7,7,9,0,1,72,36,18,255,18,36,72,7,10, + 10,9,1,0,16,16,16,146,84,56,146,84,56,16,7,7, + 7,9,1,1,16,34,68,248,68,34,16,7,7,7,9,1, + 1,16,136,68,62,68,136,16,7,7,7,9,1,1,16,34, + 66,254,66,34,16,7,10,10,9,1,0,16,56,84,146,16, + 16,16,16,16,124,7,7,7,9,1,1,16,136,132,254,132, + 136,16,7,10,10,9,1,0,124,16,16,16,16,16,146,84, + 56,16,7,10,10,9,1,0,16,56,84,146,16,146,84,56, + 16,254,8,7,7,9,0,1,16,34,65,254,64,32,16,8, + 7,7,9,0,1,8,68,130,127,2,4,8,8,7,7,9, + 0,1,16,34,69,254,68,36,16,8,7,7,9,0,1,8, + 68,162,127,34,36,8,9,5,10,9,0,2,34,0,73,0, + 247,128,65,0,34,0,9,5,10,9,0,2,34,0,73,0, + 255,128,73,0,34,0,5,10,10,9,2,0,32,64,72,184, + 200,16,16,160,120,32,6,10,10,9,1,0,32,64,252,68, + 36,4,4,4,4,4,7,10,10,9,1,0,8,4,254,132, + 136,128,128,128,128,128,6,10,10,9,1,0,4,4,4,4, + 4,36,68,252,64,32,7,10,10,9,1,0,128,128,128,128, + 128,136,132,254,4,8,7,8,8,9,1,0,248,8,8,8, + 8,42,28,8,7,8,8,9,1,1,2,2,2,34,66,254, + 64,32,9,7,14,9,0,2,14,0,17,0,32,128,32,128, + 168,128,112,0,32,0,9,7,14,9,0,2,56,0,68,0, + 130,0,130,0,138,128,7,0,2,0,7,10,10,9,1,0, + 254,64,112,96,80,8,8,4,2,2,7,9,9,9,1,0, + 144,160,254,160,146,10,254,10,18,9,7,14,9,0,1,50, + 0,71,0,138,128,130,0,130,0,68,0,56,0,9,7,14, + 9,0,1,38,0,113,0,168,128,32,128,32,128,17,0,14, + 0,7,4,4,9,1,3,16,32,64,254,7,4,4,9,1, + 0,254,64,32,16,4,10,10,9,4,0,128,192,160,144,128, + 128,128,128,128,128,4,10,10,9,1,0,16,48,80,144,16, + 16,16,16,16,16,7,4,4,9,1,3,16,8,4,254,7, + 4,4,9,1,0,254,4,8,16,4,10,10,9,4,0,128, + 128,128,128,128,128,144,160,192,128,4,10,10,9,1,0,16, + 16,16,16,16,16,144,80,48,16,7,9,9,9,1,0,8, + 4,254,4,40,64,254,64,32,9,10,20,9,0,0,34,0, + 114,0,170,0,34,0,34,0,34,0,34,0,42,128,39,0, + 34,0,7,9,9,9,1,0,32,64,254,64,40,4,254,4, + 8,7,10,10,9,1,0,32,64,254,64,32,32,64,254,64, + 32,9,10,20,9,0,0,34,0,119,0,170,128,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,7,10,10,9,1, + 0,8,4,254,4,8,8,4,254,4,8,9,10,20,9,0, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,170, + 128,119,0,34,0,7,7,7,9,1,1,32,64,254,0,254, + 4,8,7,7,7,9,1,1,8,4,254,0,254,64,32,9, + 7,14,9,0,1,16,0,33,0,127,128,130,0,127,128,36, + 0,16,0,9,7,14,9,0,1,20,0,34,0,127,0,136, + 128,127,0,34,0,20,0,9,7,14,9,0,1,4,0,18, + 0,255,0,32,128,255,0,66,0,4,0,9,7,14,9,0, + 1,16,0,32,0,127,128,128,0,127,128,32,0,16,0,7, + 10,10,9,1,0,16,40,108,170,40,40,40,40,40,40,9, + 7,14,9,0,1,4,0,2,0,255,0,0,128,255,0,2, + 0,4,0,7,10,10,9,1,0,40,40,40,40,40,40,170, + 108,40,16,9,7,14,9,0,1,20,0,34,0,127,0,128, + 128,127,0,34,0,20,0,7,10,10,9,1,0,16,40,108, + 170,40,40,170,108,40,16,7,7,7,9,1,1,252,144,136, + 196,162,144,8,7,7,7,9,1,1,126,18,34,70,138,18, + 32,7,7,7,9,1,1,32,18,138,70,34,18,126,7,7, + 7,9,1,1,8,144,162,196,136,144,252,9,9,18,9,0, + 0,8,0,16,0,63,128,64,0,255,128,64,0,63,128,16, + 0,8,0,9,9,18,9,0,0,8,0,4,0,254,0,1, + 0,255,128,1,0,254,0,4,0,8,0,8,7,7,9,0, + 1,16,32,72,245,66,32,16,8,7,7,9,0,1,8,4, + 18,175,66,4,8,7,10,10,9,1,0,16,56,84,146,16, + 124,16,124,16,16,7,10,10,9,1,0,16,16,124,16,124, + 16,146,84,56,16,7,7,7,9,1,1,16,32,64,182,64, + 32,16,7,10,10,9,1,0,16,40,84,146,0,16,16,0, + 16,16,7,7,7,9,1,1,16,8,4,218,4,8,16,7, + 10,10,9,1,0,16,16,0,16,16,0,146,84,40,16,7, + 5,5,9,1,2,144,160,254,160,144,7,5,5,9,1,2, + 18,10,254,10,18,9,7,14,9,0,1,16,0,48,0,95, + 128,128,128,95,128,48,0,16,0,7,10,10,9,1,0,16, + 40,68,238,40,40,40,40,40,56,9,7,14,9,0,1,4, + 0,6,0,253,0,128,128,253,0,6,0,4,0,7,10,10, + 9,1,0,56,40,40,40,40,40,238,68,40,16,7,11,11, + 9,1,0,16,40,68,238,40,40,56,0,56,40,56,7,11, + 11,9,1,255,16,40,68,238,40,40,40,40,108,68,124,7, + 11,11,9,1,255,16,40,68,254,40,40,40,40,108,68,124, + 7,11,11,9,1,255,16,40,68,254,56,56,56,56,124,68, + 124,7,10,10,9,1,0,16,40,68,238,68,238,40,40,40, + 56,7,11,11,9,1,255,16,40,68,238,68,238,40,40,108, + 68,124,9,7,14,9,0,1,132,0,134,0,253,0,128,128, + 253,0,134,0,132,0,7,7,7,9,1,0,252,128,184,176, + 168,132,2,7,7,7,9,1,0,128,66,42,26,58,2,126, + 7,11,11,9,1,255,16,40,68,238,40,40,40,238,68,40, + 16,9,7,14,9,0,1,4,0,50,0,73,0,255,128,73, + 0,50,0,4,0,9,10,20,9,0,0,34,0,39,0,42, + 128,34,0,34,0,34,0,34,0,170,0,114,0,34,0,7, + 13,13,9,1,254,8,4,254,4,8,4,254,4,8,4,254, + 4,8,8,5,5,9,0,2,36,68,255,68,36,8,5,5, + 9,0,2,36,34,255,34,36,9,5,10,9,0,2,42,0, + 73,0,255,128,73,0,42,0,8,5,5,9,0,2,42,74, + 255,74,42,8,5,5,9,0,2,84,82,255,82,84,9,5, + 10,9,0,2,85,0,148,128,255,128,148,128,85,0,7,7, + 7,9,1,1,16,48,80,158,80,48,16,7,7,7,9,1, + 1,16,24,20,242,20,24,16,8,5,5,9,0,2,36,102, + 189,102,36,9,9,18,9,0,5,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,9,2,4,9,0, + 252,255,128,255,128,9,4,8,9,0,252,255,128,255,128,255, + 128,255,128,9,7,14,9,0,252,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,9,9,18,9,0,252,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,9, + 11,22,9,0,252,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,9,14,28,9,0, + 252,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,9,16,32, + 9,0,252,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,9,18,36,9,0,252,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,255,128,255,128,255,128,255,128,255,128,8,18,18, + 9,0,252,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,7,18,18,9,0,252,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,254,254,254,254,6,18,18, + 9,0,252,252,252,252,252,252,252,252,252,252,252,252,252,252, + 252,252,252,252,252,5,18,18,9,0,252,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,3,18,18, + 9,0,252,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,2,18,18,9,0,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,1,18,18, + 9,0,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,4,18,18,9,5,252,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,9,17,34, + 9,0,253,85,0,0,0,170,128,0,0,85,0,0,0,170, + 128,0,0,85,0,0,0,170,128,0,0,85,0,0,0,170, + 128,0,0,85,0,9,18,36,9,0,252,170,128,85,0,170, + 128,85,0,170,128,85,0,170,128,85,0,170,128,85,0,170, + 128,85,0,170,128,85,0,170,128,85,0,170,128,85,0,9, + 18,36,9,0,252,255,128,170,128,255,128,85,0,255,128,170, + 128,255,128,85,0,255,128,170,128,255,128,85,0,255,128,170, + 128,255,128,85,0,255,128,170,128,9,2,4,9,0,12,255, + 128,255,128,1,18,18,9,8,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,5,9,9,9,0, + 252,248,248,248,248,248,248,248,248,248,4,9,9,9,5,252, + 240,240,240,240,240,240,240,240,240,5,9,9,9,0,5,248, + 248,248,248,248,248,248,248,248,9,18,36,9,0,252,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,9,18,36,9,0,252,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,9,18,36,9, + 0,252,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,9,18,36,9,0,252,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 4,9,9,9,5,5,240,240,240,240,240,240,240,240,240,9, + 18,36,9,0,252,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,9,18,36,9,0,252,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255, + 128,255,128,7,7,7,9,1,1,254,254,254,254,254,254,254, + 7,7,7,9,1,1,254,130,130,130,130,130,254,7,7,7, + 9,1,1,124,130,130,130,130,130,124,7,7,7,9,1,1, + 254,130,186,186,186,130,254,7,7,7,9,1,1,254,130,254, + 130,254,130,254,7,7,7,9,1,1,254,170,170,170,170,170, + 254,7,7,7,9,1,1,254,170,254,170,254,170,254,7,7, + 7,9,1,1,254,146,138,198,162,146,254,7,7,7,9,1, + 1,254,146,162,198,138,146,254,7,7,7,9,1,1,254,214, + 138,214,162,214,254,3,3,3,9,3,3,224,224,224,3,3, + 3,9,3,3,224,160,224,9,5,10,9,0,2,255,128,255, + 128,255,128,255,128,255,128,9,5,10,9,0,2,255,128,128, + 128,128,128,128,128,255,128,5,9,9,9,2,0,248,248,248, + 248,248,248,248,248,248,5,9,9,9,2,0,248,136,136,136, + 136,136,136,136,248,9,5,10,9,0,2,127,128,127,128,255, + 128,255,0,255,0,9,5,10,9,0,2,127,128,64,128,128, + 128,129,0,255,0,9,10,20,9,0,0,8,0,8,0,28, + 0,28,0,62,0,62,0,127,0,127,0,255,128,255,128,9, + 10,20,9,0,0,8,0,8,0,20,0,20,0,34,0,34, + 0,65,0,65,0,128,128,255,128,7,7,7,9,1,1,16, + 16,56,56,124,124,254,7,7,7,9,1,1,16,16,40,40, + 68,68,254,9,9,18,9,0,0,192,0,240,0,252,0,255, + 0,255,128,255,0,252,0,240,0,192,0,9,9,18,9,0, + 0,192,0,176,0,140,0,131,0,128,128,131,0,140,0,176, + 0,192,0,7,7,7,9,1,1,128,224,248,254,248,224,128, + 7,7,7,9,1,1,128,224,152,134,152,224,128,9,5,10, + 9,0,2,224,0,252,0,255,128,252,0,224,0,9,5,10, + 9,0,2,224,0,156,0,131,128,156,0,224,0,9,10,20, + 9,0,0,255,128,255,128,127,0,127,0,62,0,62,0,28, + 0,28,0,8,0,8,0,9,10,20,9,0,0,255,128,128, + 128,65,0,65,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,7,7,9,1,1,254,124,124,56,56,16,16,7,7, + 7,9,1,1,254,68,68,40,40,16,16,9,9,18,9,0, + 0,1,128,7,128,31,128,127,128,255,128,127,128,31,128,7, + 128,1,128,9,9,18,9,0,0,1,128,6,128,24,128,96, + 128,128,128,96,128,24,128,6,128,1,128,7,7,7,9,1, + 1,2,14,62,254,62,14,2,7,7,7,9,1,1,2,14, + 50,194,50,14,2,9,5,10,9,0,2,3,128,31,128,255, + 128,31,128,3,128,9,5,10,9,0,2,3,128,28,128,224, + 128,28,128,3,128,9,9,18,9,0,0,8,0,28,0,62, + 0,127,0,255,128,127,0,62,0,28,0,8,0,9,9,18, + 9,0,0,8,0,20,0,34,0,65,0,128,128,65,0,34, + 0,20,0,8,0,9,9,18,9,0,0,8,0,20,0,34, + 0,73,0,156,128,73,0,34,0,20,0,8,0,7,7,7, + 9,1,1,56,68,146,186,146,68,56,5,9,9,9,2,0, + 32,32,80,80,136,80,80,32,32,7,7,7,9,1,1,56, + 68,130,130,130,68,56,7,7,7,9,1,1,16,68,0,130, + 0,68,16,7,7,7,9,1,1,56,108,170,170,170,108,56, + 7,7,7,9,1,1,56,68,146,170,146,68,56,7,7,7, + 9,1,1,56,124,254,254,254,124,56,7,7,7,9,1,1, + 56,116,242,242,242,116,56,7,7,7,9,1,1,56,92,158, + 158,158,92,56,7,7,7,9,1,1,56,68,130,254,254,124, + 56,7,7,7,9,1,1,56,124,254,254,130,68,56,7,7, + 7,9,1,1,56,92,158,158,130,68,56,7,7,7,9,1, + 1,56,92,158,254,254,124,56,4,7,7,9,1,1,48,112, + 240,240,240,112,48,4,7,7,9,4,1,192,224,240,240,240, + 224,192,9,18,36,9,0,252,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,227,128,193,128,193,128,193,128,227,128, + 255,128,255,128,255,128,255,128,255,128,255,128,9,18,36,9, + 0,252,255,128,255,128,255,128,255,128,255,128,255,128,227,128, + 221,128,190,128,190,128,190,128,221,128,227,128,255,128,255,128, + 255,128,255,128,255,128,9,10,20,9,0,4,255,128,255,128, + 255,128,255,128,255,128,255,128,227,128,221,128,190,128,190,128, + 9,9,18,9,0,252,190,128,190,128,221,128,227,128,255,128, + 255,128,255,128,255,128,255,128,4,4,4,9,1,4,48,64, + 128,128,4,4,4,9,4,4,192,32,16,16,4,4,4,9, + 4,1,16,16,32,192,4,4,4,9,1,1,128,128,64,48, + 7,4,4,9,1,4,56,68,130,130,7,4,4,9,1,1, + 130,130,68,56,7,7,7,9,1,1,2,6,14,30,62,126, + 254,7,7,7,9,1,1,128,192,224,240,248,252,254,7,7, + 7,9,1,1,254,252,248,240,224,192,128,7,7,7,9,1, + 1,254,126,62,30,14,6,2,5,5,5,9,2,2,112,136, + 136,136,112,7,7,7,9,1,1,254,242,242,242,242,242,254, + 7,7,7,9,1,1,254,158,158,158,158,158,254,7,7,7, + 9,1,1,254,254,250,242,226,194,254,7,7,7,9,1,1, + 254,134,142,158,190,254,254,7,7,7,9,1,1,254,146,146, + 146,146,146,254,9,10,20,9,0,0,8,0,8,0,20,0, + 20,0,34,0,42,0,93,0,73,0,128,128,255,128,9,10, + 20,9,0,0,8,0,8,0,28,0,28,0,58,0,58,0, + 121,0,121,0,248,128,255,128,9,10,20,9,0,0,8,0, + 8,0,28,0,28,0,46,0,46,0,79,0,79,0,143,128, + 255,128,9,9,18,9,0,0,62,0,65,0,128,128,128,128, + 128,128,128,128,128,128,65,0,62,0,7,7,7,9,1,1, + 254,146,146,242,130,130,254,7,7,7,9,1,1,254,130,130, + 242,146,146,254,7,7,7,9,1,1,254,130,130,158,146,146, + 254,7,7,7,9,1,1,254,146,146,158,130,130,254,7,7, + 7,9,1,1,124,146,146,242,130,130,124,7,7,7,9,1, + 1,124,130,130,242,146,146,124,7,7,7,9,1,1,124,130, + 130,158,146,146,124,7,7,7,9,1,1,124,146,146,158,130, + 130,124,6,6,6,9,1,1,252,136,144,160,192,128,6,6, + 6,9,1,1,252,68,36,20,12,4,6,6,6,9,1,1, + 128,192,160,144,136,252,6,6,6,9,1,1,252,132,132,132, + 132,252,6,6,6,9,1,1,252,252,252,252,252,252,5,5, + 5,9,2,1,248,136,136,136,248,5,5,5,9,2,1,248, + 248,248,248,248,6,6,6,9,1,1,4,12,20,36,68,252 + }; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 9, '1' Height: 5 + Calculated Max Values w= 9 h=10 x= 3 y= 3 dx= 9 dy= 0 ascent=10 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_75r[792] U8G_SECTION(".progmem.u8g_font_9x18_75r") = { + 0,9,18,0,252,9,2,33,0,0,32,79,0,10,0,9, + 0,7,7,7,9,1,1,254,254,254,254,254,254,254,7,7, + 7,9,1,1,254,130,130,130,130,130,254,7,7,7,9,1, + 1,124,130,130,130,130,130,124,7,7,7,9,1,1,254,130, + 186,186,186,130,254,7,7,7,9,1,1,254,130,254,130,254, + 130,254,7,7,7,9,1,1,254,170,170,170,170,170,254,7, + 7,7,9,1,1,254,170,254,170,254,170,254,7,7,7,9, + 1,1,254,146,138,198,162,146,254,7,7,7,9,1,1,254, + 146,162,198,138,146,254,7,7,7,9,1,1,254,214,138,214, + 162,214,254,3,3,3,9,3,3,224,224,224,3,3,3,9, + 3,3,224,160,224,9,5,10,9,0,2,255,128,255,128,255, + 128,255,128,255,128,9,5,10,9,0,2,255,128,128,128,128, + 128,128,128,255,128,5,9,9,9,2,0,248,248,248,248,248, + 248,248,248,248,5,9,9,9,2,0,248,136,136,136,136,136, + 136,136,248,9,5,10,9,0,2,127,128,127,128,255,128,255, + 0,255,0,9,5,10,9,0,2,127,128,64,128,128,128,129, + 0,255,0,9,10,20,9,0,0,8,0,8,0,28,0,28, + 0,62,0,62,0,127,0,127,0,255,128,255,128,9,10,20, + 9,0,0,8,0,8,0,20,0,20,0,34,0,34,0,65, + 0,65,0,128,128,255,128,7,7,7,9,1,1,16,16,56, + 56,124,124,254,7,7,7,9,1,1,16,16,40,40,68,68, + 254,9,9,18,9,0,0,192,0,240,0,252,0,255,0,255, + 128,255,0,252,0,240,0,192,0,9,9,18,9,0,0,192, + 0,176,0,140,0,131,0,128,128,131,0,140,0,176,0,192, + 0,7,7,7,9,1,1,128,224,248,254,248,224,128,7,7, + 7,9,1,1,128,224,152,134,152,224,128,9,5,10,9,0, + 2,224,0,252,0,255,128,252,0,224,0,9,5,10,9,0, + 2,224,0,156,0,131,128,156,0,224,0,9,10,20,9,0, + 0,255,128,255,128,127,0,127,0,62,0,62,0,28,0,28, + 0,8,0,8,0,9,10,20,9,0,0,255,128,128,128,65, + 0,65,0,34,0,34,0,20,0,20,0,8,0,8,0,7, + 7,7,9,1,1,254,124,124,56,56,16,16,7,7,7,9, + 1,1,254,68,68,40,40,16,16,9,9,18,9,0,0,1, + 128,7,128,31,128,127,128,255,128,127,128,31,128,7,128,1, + 128,9,9,18,9,0,0,1,128,6,128,24,128,96,128,128, + 128,96,128,24,128,6,128,1,128,7,7,7,9,1,1,2, + 14,62,254,62,14,2,7,7,7,9,1,1,2,14,50,194, + 50,14,2,9,5,10,9,0,2,3,128,31,128,255,128,31, + 128,3,128,9,5,10,9,0,2,3,128,28,128,224,128,28, + 128,3,128,9,9,18,9,0,0,8,0,28,0,62,0,127, + 0,255,128,127,0,62,0,28,0,8,0,9,9,18,9,0, + 0,8,0,20,0,34,0,65,0,128,128,65,0,34,0,20, + 0,8,0,9,9,18,9,0,0,8,0,20,0,34,0,73, + 0,156,128,73,0,34,0,20,0,8,0,7,7,7,9,1, + 1,56,68,146,186,146,68,56,5,9,9,9,2,0,32,32, + 80,80,136,80,80,32,32,7,7,7,9,1,1,56,68,130, + 130,130,68,56,7,7,7,9,1,1,16,68,0,130,0,68, + 16,7,7,7,9,1,1,56,108,170,170,170,108,56,7,7, + 7,9,1,1,56,68,146,170,146,68,56,7,7,7,9,1, + 1,56,124,254,254,254,124,56}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 9 h=12 x= 4 y= 5 dx= 9 dy= 0 ascent=12 len=24 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =12 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[3336] U8G_SECTION(".progmem.u8g_font_9x18_78_79") = { + 0,9,18,0,252,9,2,231,4,175,32,255,0,12,255,11, + 0,9,9,18,9,0,0,62,0,28,0,136,128,201,128,247, + 128,201,128,136,128,28,0,62,0,9,9,18,9,0,0,8, + 0,20,0,255,128,162,128,65,0,162,128,255,128,20,0,8, + 0,9,9,18,9,0,0,8,0,28,0,8,0,73,0,255, + 128,73,0,8,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,28,0,28,0,107,0,255, + 128,107,0,28,0,28,0,8,0,9,9,18,9,0,0,8, + 0,28,0,28,0,107,0,255,128,107,0,28,0,28,0,8, + 0,9,9,18,9,0,0,8,0,8,0,28,0,62,0,255, + 128,62,0,28,0,8,0,8,0,9,9,18,9,0,0,8, + 0,20,0,20,0,99,0,128,128,99,0,20,0,20,0,8, + 0,255,9,9,18,9,0,0,8,0,8,0,20,0,247,128, + 65,0,34,0,73,0,85,0,99,0,9,10,20,9,0,0, + 127,0,247,128,247,128,227,128,0,0,128,128,193,128,201,128, + 156,128,127,0,9,9,18,9,0,0,8,0,8,0,28,0, + 227,128,99,0,34,0,62,0,119,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 235,128,93,0,42,0,34,0,127,0,65,0,9,9,18,9, + 0,0,8,0,8,0,20,0,235,128,93,0,42,0,34,0, + 127,0,65,0,9,9,18,9,0,0,8,0,8,0,20,0, + 247,128,73,0,54,0,42,0,127,0,65,0,8,7,7,9, + 0,2,24,24,44,199,46,60,102,8,9,9,9,0,0,24, + 219,255,126,24,126,255,219,24,8,9,9,9,0,0,24,219, + 255,102,36,102,255,219,24,9,9,18,9,0,0,8,0,73, + 0,42,0,28,0,255,128,28,0,42,0,73,0,8,0,9, + 9,18,9,0,0,8,0,73,0,62,0,62,0,255,128,62, + 0,62,0,73,0,8,0,9,9,18,9,0,0,8,0,73, + 0,54,0,62,0,213,128,62,0,54,0,73,0,8,0,9, + 9,18,9,0,0,8,0,136,128,107,0,62,0,28,0,62, + 0,107,0,136,128,8,0,9,9,18,9,0,0,34,0,20, + 0,148,128,127,0,28,0,127,0,148,128,20,0,34,0,9, + 9,18,9,0,0,34,0,54,0,255,128,127,0,62,0,127, + 0,255,128,54,0,34,0,9,9,18,9,0,0,42,0,42, + 0,221,128,62,0,255,128,62,0,221,128,42,0,42,0,9, + 9,18,9,0,0,42,0,42,0,221,128,42,0,255,128,42, + 0,221,128,42,0,42,0,9,11,22,9,0,0,28,0,28, + 0,201,128,201,128,34,0,8,0,34,0,201,128,201,128,28, + 0,28,0,9,11,22,9,0,0,28,0,28,0,201,128,201, + 128,62,0,20,0,62,0,201,128,201,128,28,0,28,0,9, + 11,22,9,0,0,28,0,28,0,201,128,201,128,62,0,28, + 0,62,0,201,128,201,128,28,0,28,0,9,11,22,9,0, + 0,28,0,20,0,201,128,201,128,62,0,20,0,127,0,170, + 128,201,128,28,0,28,0,8,9,9,9,0,0,24,24,219, + 255,36,36,126,231,66,255,255,255,8,9,9,9,0,0,24, + 203,189,110,24,118,189,211,24,9,12,24,9,0,0,8,0, + 42,0,93,0,170,128,107,0,221,128,221,128,107,0,170,128, + 93,0,42,0,8,0,9,12,24,9,0,0,8,0,42,0, + 93,0,170,128,107,0,221,128,221,128,107,0,170,128,93,0, + 42,0,8,0,9,12,24,9,0,0,8,0,42,0,93,0, + 170,128,107,0,221,128,221,128,107,0,170,128,93,0,42,0, + 8,0,9,9,18,9,0,0,8,0,73,0,42,0,20,0, + 235,128,20,0,42,0,73,0,8,0,9,9,18,9,0,0, + 8,0,73,0,42,0,20,0,235,128,20,0,42,0,73,0, + 8,0,8,9,9,9,0,0,24,219,203,60,24,60,211,219, + 24,9,9,18,9,0,0,8,0,73,0,42,0,0,0,235, + 128,0,0,42,0,73,0,8,0,9,9,18,9,0,0,8, + 0,73,0,42,0,28,0,255,128,28,0,42,0,73,0,8, + 0,255,9,8,16,9,0,1,62,0,67,0,129,128,129,128, + 129,128,129,128,67,0,62,0,255,9,9,18,9,0,0,254, + 0,130,0,131,128,131,128,131,128,131,128,255,128,63,128,63, + 128,9,9,18,9,0,0,63,128,63,128,255,128,131,128,131, + 128,131,128,131,128,130,0,254,0,8,8,8,9,0,0,254, + 131,131,131,131,131,255,127,8,8,8,9,0,0,127,255,131, + 131,131,131,131,254,255,255,255,9,9,18,9,0,0,8,0, + 28,0,8,0,65,0,227,128,65,0,8,0,28,0,8,0, + 255,1,10,10,9,4,0,128,128,128,128,128,128,128,128,128, + 128,2,10,10,9,3,0,192,192,192,192,192,192,192,192,192, + 192,3,10,10,9,3,0,224,224,224,224,224,224,224,224,224, + 224,4,6,6,9,3,5,112,128,224,240,240,96,4,6,6, + 9,3,5,96,240,240,112,16,224,9,6,12,9,0,5,115, + 128,132,0,231,0,247,128,247,128,99,0,9,6,12,9,0, + 5,99,0,247,128,247,128,115,128,16,128,231,0,255,255,7, + 10,10,9,1,0,4,126,228,228,228,124,4,100,104,48,5, + 10,10,9,2,0,112,248,248,112,32,32,0,32,112,32,5, + 10,10,9,2,0,80,248,248,112,32,32,0,32,112,32,9, + 9,18,9,0,0,99,0,247,128,255,128,255,128,127,0,62, + 0,28,0,8,0,8,0,9,9,18,9,0,0,112,0,248, + 0,252,0,126,0,63,128,126,0,252,0,248,0,112,0,9, + 12,24,9,0,0,8,0,116,128,149,0,14,0,4,0,107, + 0,247,128,255,128,127,0,62,0,28,0,8,0,9,12,24, + 9,0,0,16,0,41,0,82,0,156,0,32,0,88,0,124, + 0,60,0,254,0,254,128,255,0,126,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,227,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,237,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,152,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,152,128,132,128,132, + 128,136,128,156,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,152,128,132,128,136,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,152,128,168, + 128,188,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,144,128,152,128,132,128,152,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,140,128,144,128,152, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,156,128,132,128,136,128,136,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,136,128,148,128,136, + 128,148,128,136,128,128,128,127,0,9,9,18,9,0,0,127, + 0,128,128,136,128,148,128,140,128,132,128,136,128,128,128,127, + 0,9,9,18,9,0,0,127,0,128,128,164,128,170,128,170, + 128,170,128,164,128,128,128,127,0,9,9,18,9,0,0,127, + 0,247,128,231,128,247,128,247,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,253,128,251, + 128,247,128,239,128,193,128,127,0,9,9,18,9,0,0,127, + 0,227,128,221,128,253,128,243,128,253,128,221,128,227,128,127, + 0,9,9,18,9,0,0,127,0,243,128,235,128,219,128,193, + 128,251,128,251,128,251,128,127,0,9,9,18,9,0,0,127, + 0,193,128,223,128,223,128,195,128,253,128,253,128,195,128,127, + 0,9,9,18,9,0,0,127,0,225,128,223,128,223,128,195, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,193,128,253,128,251,128,251,128,247,128,247,128,247,128,127, + 0,9,9,18,9,0,0,127,0,227,128,221,128,221,128,227, + 128,221,128,221,128,227,128,127,0,9,9,18,9,0,0,127, + 0,225,128,221,128,221,128,225,128,253,128,253,128,227,128,127, + 0,9,9,18,9,0,0,127,0,219,128,213,128,213,128,213, + 128,213,128,213,128,219,128,127,0,7,8,8,9,1,1,48, + 24,12,254,254,12,24,48,255,255,255,7,5,5,9,1,1, + 224,250,62,14,30,8,7,7,9,1,1,8,12,230,255,230, + 12,8,7,5,5,9,1,1,30,14,62,250,224,9,7,14, + 9,0,0,48,0,28,0,31,0,255,128,31,0,28,0,48, + 0,9,9,18,9,0,0,28,0,30,0,15,0,255,128,255, + 128,255,128,15,0,30,0,28,0,9,5,10,9,0,1,2, + 0,3,0,255,128,3,0,2,0,9,7,14,9,0,0,4, + 0,6,0,255,0,255,128,255,0,6,0,4,0,9,5,10, + 9,0,1,2,0,183,0,183,128,183,0,2,0,9,5,10, + 9,0,1,2,0,171,0,171,128,171,0,2,0,9,5,10, + 9,0,1,2,0,255,0,255,128,255,0,2,0,9,8,16, + 9,0,1,128,0,112,0,78,0,33,128,31,128,62,0,112, + 0,128,0,9,8,16,9,0,1,128,0,112,0,62,0,31, + 128,33,128,78,0,112,0,128,0,9,8,16,9,0,1,128, + 0,112,0,62,0,31,128,31,128,62,0,112,0,128,0,9, + 7,14,9,0,0,132,0,134,0,255,0,255,128,127,0,6, + 0,4,0,9,7,14,9,0,0,4,0,6,0,127,0,255, + 128,255,0,134,0,132,0,6,9,9,9,2,0,16,16,248, + 248,252,248,248,16,16,8,9,9,9,0,1,4,4,254,254, + 255,254,254,4,4,9,9,18,9,0,0,24,0,28,0,22, + 0,243,0,129,128,243,0,22,0,28,0,24,0,9,9,18, + 9,0,0,24,0,28,0,26,0,249,0,192,128,249,0,26, + 0,28,0,24,0,9,9,18,9,0,0,0,128,1,128,62, + 128,64,128,129,128,243,0,238,0,60,0,56,0,9,9,18, + 9,0,0,56,0,60,0,238,0,243,0,129,128,64,128,62, + 128,1,128,0,128,8,9,9,9,0,1,16,24,20,242,129, + 243,118,28,24,8,9,9,9,0,1,24,28,118,243,129,242, + 20,24,16,9,7,14,9,0,2,4,0,250,0,129,0,64, + 128,129,128,251,0,6,0,255,9,7,14,9,0,2,6,0, + 251,0,129,128,64,128,129,0,250,0,4,0,9,9,18,9, + 0,1,28,0,127,0,251,128,1,128,0,128,1,128,251,128, + 127,0,28,0,9,5,10,9,0,3,210,0,43,0,127,128, + 43,0,210,0,9,9,18,9,0,0,16,0,56,0,92,0, + 236,0,116,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,7,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,116,0,236,0,92,0, + 56,0,16,0,9,9,18,9,0,0,16,0,24,0,28,0, + 252,0,124,0,60,0,2,128,1,128,3,128,9,5,10,9, + 0,2,242,0,123,0,127,128,123,0,242,0,9,9,18,9, + 0,0,3,128,1,128,2,128,60,0,124,0,252,0,28,0, + 24,0,16,0,9,7,14,9,0,1,3,0,3,0,113,0, + 255,128,113,0,3,0,3,0,9,7,14,9,0,1,2,0, + 115,0,121,0,255,128,121,0,115,0,2,0,9,5,10,9, + 0,2,242,0,123,0,63,128,123,0,242,0,9,7,14,9, + 0,1,226,0,242,0,123,0,63,128,123,0,242,0,226,0, + 9,7,14,9,0,1,20,0,10,0,253,0,0,128,253,0, + 10,0,20,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,8,11,11,9,0,255, + 193,99,99,85,85,73,85,85,99,99,193,8,11,11,9,1, + 255,131,198,198,170,170,146,170,170,198,198,131,9,11,22,9, + 0,255,193,128,99,0,99,0,85,0,85,0,73,0,85,0, + 85,0,99,0,99,0,193,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,5,12,12,9,2,255,248,160,160,160, + 160,160,160,160,160,160,160,248,5,12,12,9,2,255,248,40, + 40,40,40,40,40,40,40,40,40,248,3,10,10,9,3,0, + 32,32,64,64,128,128,64,64,32,32,3,10,10,9,3,0, + 128,128,64,64,32,32,64,64,128,128,6,10,10,9,1,0, + 36,36,72,72,144,144,72,72,36,36,6,10,10,9,2,0, + 144,144,72,72,36,36,72,72,144,144,255,255,255,255,9,11, + 22,9,0,0,8,0,20,0,54,0,85,0,213,128,85,0, + 85,0,85,0,85,0,85,0,85,0,9,11,22,9,0,255, + 85,0,85,0,85,0,85,0,85,0,85,0,213,128,85,0, + 54,0,20,0,8,0,8,8,8,9,0,0,28,34,169,113, + 33,1,34,28,8,8,8,9,0,0,56,68,149,142,132,128, + 68,56,9,5,10,9,0,2,114,0,169,0,255,128,169,0, + 114,0,9,5,10,9,0,2,32,0,64,0,255,128,64,0, + 32,0,9,5,10,9,0,2,2,0,1,0,255,128,1,0, + 2,0,9,5,10,9,0,2,34,0,65,0,255,128,65,0, + 34,0,9,7,14,9,0,1,16,0,32,0,127,128,128,0, + 127,128,32,0,16,0,9,7,14,9,0,1,4,0,2,0, + 255,0,0,128,255,0,2,0,4,0,9,7,14,9,0,1, + 20,0,34,0,127,0,128,128,127,0,34,0,20,0,9,5, + 10,9,0,2,32,128,64,128,255,128,64,128,32,128,9,5, + 10,9,0,2,130,0,129,0,255,128,129,0,130,0,9,7, + 14,9,0,1,16,128,32,128,127,128,128,128,127,128,32,128, + 16,128,9,7,14,9,0,1,132,0,130,0,255,0,128,128, + 255,0,130,0,132,0,9,6,12,9,0,1,2,0,1,0, + 85,128,170,128,1,0,2,0}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=14 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18B[3026] U8G_SECTION(".progmem.u8g_font_9x18B") = { + 0,9,18,0,252,10,1,242,3,225,32,255,253,14,252,11, + 253,0,0,0,9,0,14,2,11,11,9,3,0,192,192,192, + 192,192,192,192,0,0,192,192,5,4,4,9,2,7,216,216, + 216,216,7,10,10,9,1,0,108,108,108,254,108,108,254,108, + 108,108,8,11,11,9,0,255,24,126,219,216,120,60,30,27, + 219,126,24,8,10,10,9,0,0,115,222,222,108,24,24,54, + 123,123,206,8,10,10,9,0,0,112,216,216,216,112,115,222, + 204,222,115,2,4,4,9,3,7,192,192,192,192,4,12,12, + 9,2,255,48,96,96,192,192,192,192,192,192,96,96,48,4, + 12,12,9,2,255,192,96,96,48,48,48,48,48,48,96,96, + 192,8,7,7,9,0,1,24,219,126,60,126,219,24,8,7, + 7,9,0,1,24,24,24,255,24,24,24,3,4,4,9,3, + 254,224,224,96,192,7,1,1,9,1,4,254,3,2,2,9, + 3,0,224,224,8,10,10,9,0,0,3,6,6,12,24,24, + 48,96,96,192,7,10,10,9,1,0,56,108,198,198,198,198, + 198,198,108,56,8,10,10,9,0,0,24,56,120,216,24,24, + 24,24,24,255,7,10,10,9,1,0,56,108,198,6,6,12, + 24,48,96,254,7,10,10,9,1,0,254,6,12,24,56,12, + 6,6,204,120,7,10,10,9,1,0,12,28,60,108,204,204, + 254,12,12,12,7,10,10,9,1,0,254,192,192,192,248,12, + 6,6,204,120,7,10,10,9,1,0,60,96,192,192,248,204, + 198,198,108,56,7,10,10,9,1,0,254,6,12,12,24,24, + 48,48,48,48,7,10,10,9,1,0,56,108,198,108,56,108, + 198,198,108,56,7,10,10,9,1,0,56,108,198,198,110,62, + 6,6,12,120,3,7,7,9,3,0,224,224,0,0,0,224, + 224,3,9,9,9,3,254,224,224,0,0,0,224,224,96,192, + 6,9,9,9,1,0,12,24,48,96,192,96,48,24,12,7, + 4,4,9,1,2,254,0,0,254,6,9,9,9,1,0,192, + 96,48,24,12,24,48,96,192,7,10,10,9,1,0,56,108, + 198,6,12,24,48,48,0,48,9,10,20,9,0,0,62,0, + 99,0,205,128,213,128,213,128,213,128,213,128,207,0,96,0, + 62,0,7,10,10,9,1,0,16,56,56,56,108,124,108,198, + 198,198,7,10,10,9,1,0,252,198,198,198,252,198,198,198, + 198,252,7,10,10,9,1,0,60,102,192,192,192,192,192,192, + 102,60,7,10,10,9,1,0,248,204,198,198,198,198,198,198, + 204,248,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,254,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,192,7,10,10,9,1,0,56,108,198,192,192,206,198,198, + 108,56,7,10,10,9,1,0,198,198,198,198,254,198,198,198, + 198,198,6,10,10,9,1,0,252,48,48,48,48,48,48,48, + 48,252,7,10,10,9,1,0,30,12,12,12,12,12,12,204, + 204,120,7,10,10,9,1,0,198,204,216,240,224,240,216,204, + 198,198,7,10,10,9,1,0,192,192,192,192,192,192,192,192, + 192,254,7,10,10,9,1,0,198,238,254,214,198,198,198,198, + 198,198,7,10,10,9,1,0,198,198,230,246,222,206,198,198, + 198,198,7,10,10,9,1,0,124,198,198,198,198,198,198,198, + 198,124,7,10,10,9,1,0,248,204,198,198,204,248,192,192, + 192,192,8,11,11,9,1,255,56,108,198,198,198,198,198,222, + 108,62,3,7,10,10,9,1,0,252,198,198,198,198,252,216, + 204,198,198,7,10,10,9,1,0,124,198,192,192,124,6,6, + 6,198,124,6,10,10,9,1,0,252,48,48,48,48,48,48, + 48,48,48,7,10,10,9,1,0,198,198,198,198,198,198,198, + 198,108,56,7,10,10,9,1,0,198,198,198,108,108,108,56, + 56,56,16,7,10,10,9,1,0,198,198,198,198,214,214,214, + 254,238,68,7,10,10,9,1,0,198,198,108,56,16,16,56, + 108,198,198,8,10,10,9,0,0,195,195,102,60,24,24,24, + 24,24,24,7,10,10,9,1,0,254,6,6,12,24,48,96, + 192,192,254,5,12,12,9,2,255,248,192,192,192,192,192,192, + 192,192,192,192,248,8,10,10,9,0,0,192,96,96,48,24, + 24,12,6,6,3,4,12,12,9,2,255,240,48,48,48,48, + 48,48,48,48,48,48,240,8,4,4,9,0,6,24,60,102, + 195,8,1,1,9,0,255,255,4,3,3,9,2,10,192,96, + 48,7,7,7,9,1,0,124,6,6,126,198,198,126,7,10, + 10,9,1,0,192,192,192,252,198,198,198,198,198,252,7,7, + 7,9,1,0,124,198,192,192,192,198,124,7,10,10,9,1, + 0,6,6,6,126,198,198,198,198,198,126,7,7,7,9,1, + 0,124,198,198,254,192,198,124,6,10,10,9,1,0,56,108, + 108,96,96,240,96,96,96,96,7,10,10,9,1,253,126,204, + 204,204,120,192,124,198,198,124,7,10,10,9,1,0,192,192, + 192,252,198,198,198,198,198,198,6,10,10,9,1,0,48,48, + 0,240,48,48,48,48,48,252,5,13,13,9,2,253,24,24, + 0,56,24,24,24,24,24,24,216,216,112,7,10,10,9,1, + 0,192,192,192,204,216,240,240,216,204,198,6,10,10,9,1, + 0,240,48,48,48,48,48,48,48,48,252,8,7,7,9,0, + 0,254,219,219,219,219,219,195,7,7,7,9,1,0,220,230, + 198,198,198,198,198,7,7,7,9,1,0,56,108,198,198,198, + 108,56,7,10,10,9,1,253,248,204,198,198,198,204,248,192, + 192,192,7,10,10,9,1,253,62,102,198,198,198,102,62,6, + 6,6,7,7,7,9,1,0,220,118,96,96,96,96,96,7, + 7,7,9,1,0,124,198,192,124,6,198,124,7,9,9,9, + 1,0,48,48,252,48,48,48,48,54,28,7,7,7,9,1, + 0,198,198,198,198,198,198,126,7,7,7,9,1,0,198,198, + 108,108,56,56,16,8,7,7,9,0,0,195,195,219,219,219, + 255,102,7,7,7,9,1,0,198,108,56,16,56,108,198,7, + 10,10,9,1,253,198,198,108,108,108,56,56,48,176,96,6, + 7,7,9,1,0,252,12,24,48,96,192,252,6,11,11,9, + 1,0,60,96,96,96,96,192,96,96,96,96,60,2,12,12, + 9,3,255,192,192,192,192,192,192,192,192,192,192,192,192,6, + 11,11,9,1,0,224,48,48,48,48,28,48,48,48,48,224, + 8,3,3,9,0,7,115,219,206,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,9,0,14, + 2,10,10,9,4,0,192,0,192,192,192,192,192,192,192,192, + 7,8,8,9,1,0,4,124,206,208,208,230,124,64,8,10, + 10,9,0,255,30,51,48,48,124,48,48,248,191,224,7,7, + 7,9,1,2,198,254,108,68,108,254,198,8,10,10,9,0, + 0,195,195,102,60,126,24,126,24,24,24,2,11,11,9,3, + 255,192,192,192,192,192,0,192,192,192,192,192,6,11,11,9, + 1,255,120,204,192,120,204,204,204,120,12,204,120,5,2,2, + 9,2,11,216,216,8,11,11,9,0,0,60,126,195,189,165, + 161,165,189,195,126,60,5,7,7,9,1,3,112,24,120,216, + 120,0,248,8,8,8,9,0,1,27,54,108,216,216,108,54, + 27,7,5,5,9,1,2,254,254,6,6,6,6,1,1,9, + 1,4,252,8,11,11,9,0,0,60,126,195,189,165,189,169, + 173,195,126,60,6,2,2,9,1,9,252,252,5,4,4,9, + 1,8,112,216,216,112,6,9,9,9,1,1,48,48,48,252, + 48,48,48,0,252,5,6,6,9,1,4,112,216,24,48,96, + 248,5,6,6,9,1,4,112,216,48,24,216,112,4,3,3, + 9,2,10,48,96,192,7,9,9,9,1,254,198,198,198,198, + 206,222,246,192,192,7,10,10,9,1,0,126,246,246,246,118, + 54,54,54,54,54,3,2,2,9,3,4,224,224,6,3,3, + 9,1,253,24,204,120,4,6,6,9,1,4,96,224,96,96, + 96,240,5,7,7,9,1,3,112,216,216,216,112,0,248,8, + 8,8,9,0,1,216,108,54,27,27,54,108,216,8,11,11, + 9,0,0,96,224,96,96,97,99,247,15,27,31,3,8,11, + 11,9,0,0,96,224,96,96,110,115,243,6,12,24,31,8, + 11,11,9,0,0,112,152,24,48,25,155,119,15,27,31,3, + 7,10,10,9,1,0,24,24,0,24,48,96,192,198,198,124, + 7,14,14,9,1,0,96,48,24,0,16,56,56,56,108,124, + 108,198,198,198,7,14,14,9,1,0,12,24,48,0,16,56, + 56,56,108,124,108,198,198,198,7,14,14,9,1,0,16,56, + 108,0,16,56,56,56,108,124,108,198,198,198,7,13,13,9, + 1,0,118,220,0,16,56,56,56,108,124,108,198,198,198,7, + 13,13,9,1,0,108,108,0,16,56,56,56,108,124,108,198, + 198,198,7,14,14,9,1,0,56,108,108,56,16,56,56,56, + 108,124,108,198,198,198,7,10,10,9,1,0,62,60,108,108, + 110,252,204,204,204,206,7,14,14,9,1,252,60,102,192,192, + 192,192,192,192,102,60,24,12,108,56,7,14,14,9,1,0, + 96,48,24,0,254,192,192,192,248,192,192,192,192,254,7,14, + 14,9,1,0,12,24,48,0,254,192,192,192,248,192,192,192, + 192,254,7,14,14,9,1,0,16,56,108,0,254,192,192,192, + 248,192,192,192,192,254,7,13,13,9,1,0,108,108,0,254, + 192,192,192,248,192,192,192,192,254,6,14,14,9,1,0,96, + 48,24,0,252,48,48,48,48,48,48,48,48,252,6,14,14, + 9,1,0,12,24,48,0,252,48,48,48,48,48,48,48,48, + 252,6,14,14,9,1,0,16,56,108,0,252,48,48,48,48, + 48,48,48,48,252,6,13,13,9,1,0,108,108,0,252,48, + 48,48,48,48,48,48,48,252,8,10,10,9,0,0,124,102, + 99,99,243,99,99,99,102,124,7,13,13,9,1,0,118,220, + 0,198,198,230,246,222,206,198,198,198,198,7,14,14,9,1, + 0,96,48,24,0,124,198,198,198,198,198,198,198,198,124,7, + 14,14,9,1,0,12,24,48,0,124,198,198,198,198,198,198, + 198,198,124,7,14,14,9,1,0,16,56,108,0,124,198,198, + 198,198,198,198,198,198,124,7,13,13,9,1,0,118,220,0, + 124,198,198,198,198,198,198,198,198,124,7,13,13,9,1,0, + 108,108,0,124,198,198,198,198,198,198,198,198,124,8,7,7, + 9,0,1,195,102,60,24,60,102,195,7,12,12,9,1,255, + 6,126,206,206,222,222,246,246,230,230,252,192,7,14,14,9, + 1,0,96,48,24,0,198,198,198,198,198,198,198,198,108,56, + 7,14,14,9,1,0,12,24,48,0,198,198,198,198,198,198, + 198,198,108,56,7,14,14,9,1,0,16,56,108,0,198,198, + 198,198,198,198,198,198,108,56,7,13,13,9,1,0,108,108, + 0,198,198,198,198,198,198,198,198,108,56,8,14,14,9,0, + 0,12,24,48,0,195,195,102,60,24,24,24,24,24,24,7, + 10,10,9,1,0,192,192,252,198,198,198,252,192,192,192,7, + 10,10,9,1,0,60,102,102,102,236,102,102,102,102,108,7, + 11,11,9,1,0,96,48,24,0,124,6,6,126,198,198,126, + 7,11,11,9,1,0,12,24,48,0,124,6,6,126,198,198, + 126,7,11,11,9,1,0,16,56,108,0,124,6,6,126,198, + 198,126,7,10,10,9,1,0,118,220,0,124,6,6,126,198, + 198,126,7,10,10,9,1,0,108,108,0,124,6,6,126,198, + 198,126,7,11,11,9,1,0,56,108,56,0,124,6,6,126, + 198,198,126,8,7,7,9,0,0,118,27,27,127,216,219,118, + 7,11,11,9,1,252,124,198,192,192,192,198,124,24,12,108, + 56,7,11,11,9,1,0,96,48,24,0,124,198,198,254,192, + 198,124,7,11,11,9,1,0,12,24,48,0,124,198,198,254, + 192,198,124,7,11,11,9,1,0,16,56,108,0,124,198,198, + 254,192,198,124,7,10,10,9,1,0,108,108,0,124,198,198, + 254,192,198,124,6,11,11,9,1,0,192,96,48,0,240,48, + 48,48,48,48,252,6,11,11,9,1,0,12,24,48,0,240, + 48,48,48,48,48,252,6,11,11,9,1,0,32,112,216,0, + 240,48,48,48,48,48,252,6,10,10,9,1,0,108,108,0, + 240,48,48,48,48,48,252,7,11,11,9,1,0,108,56,56, + 108,12,126,198,198,198,198,124,7,10,10,9,1,0,118,220, + 0,220,230,198,198,198,198,198,7,11,11,9,1,0,96,48, + 24,0,56,108,198,198,198,108,56,7,11,11,9,1,0,12, + 24,48,0,56,108,198,198,198,108,56,7,11,11,9,1,0, + 16,56,108,0,56,108,198,198,198,108,56,7,10,10,9,1, + 0,118,220,0,56,108,198,198,198,108,56,7,10,10,9,1, + 0,108,108,0,56,108,198,198,198,108,56,8,7,7,9,0, + 1,24,24,0,255,0,24,24,8,9,9,9,0,255,1,63, + 102,207,219,243,102,252,128,7,11,11,9,1,0,96,48,24, + 0,198,198,198,198,198,198,126,7,11,11,9,1,0,12,24, + 48,0,198,198,198,198,198,198,126,7,11,11,9,1,0,16, + 56,108,0,198,198,198,198,198,198,126,7,10,10,9,1,0, + 108,108,0,198,198,198,198,198,198,126,7,14,14,9,1,253, + 12,24,48,0,198,198,108,108,108,56,56,48,176,96,7,11, + 11,9,1,254,192,192,248,204,198,198,198,204,248,192,192,7, + 13,13,9,1,253,108,108,0,198,198,108,108,108,56,56,48, + 176,96}; +/* + Fontname: -Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 9 h=13 x= 3 y=14 dx= 9 dy= 0 ascent=14 len=20 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18Br[1434] U8G_SECTION(".progmem.u8g_font_9x18Br") = { + 0,9,18,0,252,10,1,242,3,225,32,127,253,14,253,11, + 253,0,0,0,9,0,14,2,11,11,9,3,0,192,192,192, + 192,192,192,192,0,0,192,192,5,4,4,9,2,7,216,216, + 216,216,7,10,10,9,1,0,108,108,108,254,108,108,254,108, + 108,108,8,11,11,9,0,255,24,126,219,216,120,60,30,27, + 219,126,24,8,10,10,9,0,0,115,222,222,108,24,24,54, + 123,123,206,8,10,10,9,0,0,112,216,216,216,112,115,222, + 204,222,115,2,4,4,9,3,7,192,192,192,192,4,12,12, + 9,2,255,48,96,96,192,192,192,192,192,192,96,96,48,4, + 12,12,9,2,255,192,96,96,48,48,48,48,48,48,96,96, + 192,8,7,7,9,0,1,24,219,126,60,126,219,24,8,7, + 7,9,0,1,24,24,24,255,24,24,24,3,4,4,9,3, + 254,224,224,96,192,7,1,1,9,1,4,254,3,2,2,9, + 3,0,224,224,8,10,10,9,0,0,3,6,6,12,24,24, + 48,96,96,192,7,10,10,9,1,0,56,108,198,198,198,198, + 198,198,108,56,8,10,10,9,0,0,24,56,120,216,24,24, + 24,24,24,255,7,10,10,9,1,0,56,108,198,6,6,12, + 24,48,96,254,7,10,10,9,1,0,254,6,12,24,56,12, + 6,6,204,120,7,10,10,9,1,0,12,28,60,108,204,204, + 254,12,12,12,7,10,10,9,1,0,254,192,192,192,248,12, + 6,6,204,120,7,10,10,9,1,0,60,96,192,192,248,204, + 198,198,108,56,7,10,10,9,1,0,254,6,12,12,24,24, + 48,48,48,48,7,10,10,9,1,0,56,108,198,108,56,108, + 198,198,108,56,7,10,10,9,1,0,56,108,198,198,110,62, + 6,6,12,120,3,7,7,9,3,0,224,224,0,0,0,224, + 224,3,9,9,9,3,254,224,224,0,0,0,224,224,96,192, + 6,9,9,9,1,0,12,24,48,96,192,96,48,24,12,7, + 4,4,9,1,2,254,0,0,254,6,9,9,9,1,0,192, + 96,48,24,12,24,48,96,192,7,10,10,9,1,0,56,108, + 198,6,12,24,48,48,0,48,9,10,20,9,0,0,62,0, + 99,0,205,128,213,128,213,128,213,128,213,128,207,0,96,0, + 62,0,7,10,10,9,1,0,16,56,56,56,108,124,108,198, + 198,198,7,10,10,9,1,0,252,198,198,198,252,198,198,198, + 198,252,7,10,10,9,1,0,60,102,192,192,192,192,192,192, + 102,60,7,10,10,9,1,0,248,204,198,198,198,198,198,198, + 204,248,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,254,7,10,10,9,1,0,254,192,192,192,248,192,192,192, + 192,192,7,10,10,9,1,0,56,108,198,192,192,206,198,198, + 108,56,7,10,10,9,1,0,198,198,198,198,254,198,198,198, + 198,198,6,10,10,9,1,0,252,48,48,48,48,48,48,48, + 48,252,7,10,10,9,1,0,30,12,12,12,12,12,12,204, + 204,120,7,10,10,9,1,0,198,204,216,240,224,240,216,204, + 198,198,7,10,10,9,1,0,192,192,192,192,192,192,192,192, + 192,254,7,10,10,9,1,0,198,238,254,214,198,198,198,198, + 198,198,7,10,10,9,1,0,198,198,230,246,222,206,198,198, + 198,198,7,10,10,9,1,0,124,198,198,198,198,198,198,198, + 198,124,7,10,10,9,1,0,248,204,198,198,204,248,192,192, + 192,192,8,11,11,9,1,255,56,108,198,198,198,198,198,222, + 108,62,3,7,10,10,9,1,0,252,198,198,198,198,252,216, + 204,198,198,7,10,10,9,1,0,124,198,192,192,124,6,6, + 6,198,124,6,10,10,9,1,0,252,48,48,48,48,48,48, + 48,48,48,7,10,10,9,1,0,198,198,198,198,198,198,198, + 198,108,56,7,10,10,9,1,0,198,198,198,108,108,108,56, + 56,56,16,7,10,10,9,1,0,198,198,198,198,214,214,214, + 254,238,68,7,10,10,9,1,0,198,198,108,56,16,16,56, + 108,198,198,8,10,10,9,0,0,195,195,102,60,24,24,24, + 24,24,24,7,10,10,9,1,0,254,6,6,12,24,48,96, + 192,192,254,5,12,12,9,2,255,248,192,192,192,192,192,192, + 192,192,192,192,248,8,10,10,9,0,0,192,96,96,48,24, + 24,12,6,6,3,4,12,12,9,2,255,240,48,48,48,48, + 48,48,48,48,48,48,240,8,4,4,9,0,6,24,60,102, + 195,8,1,1,9,0,255,255,4,3,3,9,2,10,192,96, + 48,7,7,7,9,1,0,124,6,6,126,198,198,126,7,10, + 10,9,1,0,192,192,192,252,198,198,198,198,198,252,7,7, + 7,9,1,0,124,198,192,192,192,198,124,7,10,10,9,1, + 0,6,6,6,126,198,198,198,198,198,126,7,7,7,9,1, + 0,124,198,198,254,192,198,124,6,10,10,9,1,0,56,108, + 108,96,96,240,96,96,96,96,7,10,10,9,1,253,126,204, + 204,204,120,192,124,198,198,124,7,10,10,9,1,0,192,192, + 192,252,198,198,198,198,198,198,6,10,10,9,1,0,48,48, + 0,240,48,48,48,48,48,252,5,13,13,9,2,253,24,24, + 0,56,24,24,24,24,24,24,216,216,112,7,10,10,9,1, + 0,192,192,192,204,216,240,240,216,204,198,6,10,10,9,1, + 0,240,48,48,48,48,48,48,48,48,252,8,7,7,9,0, + 0,254,219,219,219,219,219,195,7,7,7,9,1,0,220,230, + 198,198,198,198,198,7,7,7,9,1,0,56,108,198,198,198, + 108,56,7,10,10,9,1,253,248,204,198,198,198,204,248,192, + 192,192,7,10,10,9,1,253,62,102,198,198,198,102,62,6, + 6,6,7,7,7,9,1,0,220,118,96,96,96,96,96,7, + 7,7,9,1,0,124,198,192,124,6,198,124,7,9,9,9, + 1,0,48,48,252,48,48,48,48,54,28,7,7,7,9,1, + 0,198,198,198,198,198,198,126,7,7,7,9,1,0,198,198, + 108,108,56,56,16,8,7,7,9,0,0,195,195,219,219,219, + 255,102,7,7,7,9,1,0,198,108,56,16,56,108,198,7, + 10,10,9,1,253,198,198,108,108,108,56,56,48,176,96,6, + 7,7,9,1,0,252,12,24,48,96,192,252,6,11,11,9, + 1,0,60,96,96,96,96,192,96,96,96,96,60,2,12,12, + 9,3,255,192,192,192,192,192,192,192,192,192,192,192,192,6, + 11,11,9,1,0,224,48,48,48,48,28,48,48,48,48,224, + 8,3,3,9,0,7,115,219,206,255}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=14 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=14 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18[3011] U8G_SECTION(".progmem.u8g_font_9x18") = { + 0,9,18,0,252,10,1,232,3,215,32,255,253,14,253,11, + 253,0,0,0,9,0,14,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,4,4,9,3,7,144,144, + 144,144,8,10,10,9,0,0,36,36,36,255,36,36,255,36, + 36,36,7,11,11,9,1,255,16,124,146,144,80,56,20,18, + 146,124,16,7,10,10,9,1,0,66,164,164,72,16,16,36, + 74,74,132,7,10,10,9,1,0,96,144,144,144,96,98,148, + 136,148,98,1,4,4,9,4,7,128,128,128,128,3,12,12, + 9,3,255,32,64,64,128,128,128,128,128,128,64,64,32,3, + 12,12,9,3,255,128,64,64,32,32,32,32,32,32,64,64, + 128,7,7,7,9,1,3,16,146,84,56,84,146,16,7,7, + 7,9,1,1,16,16,16,254,16,16,16,2,4,4,9,4, + 254,192,192,64,128,7,1,1,9,1,4,254,2,2,2,9, + 4,0,192,192,7,10,10,9,1,0,2,4,4,8,16,16, + 32,64,64,128,7,10,10,9,1,0,56,68,130,130,130,130, + 130,130,68,56,7,10,10,9,1,0,16,48,80,144,16,16, + 16,16,16,254,7,10,10,9,1,0,56,68,130,2,4,8, + 16,32,64,254,7,10,10,9,1,0,254,2,4,8,24,4, + 2,2,132,120,7,10,10,9,1,0,4,12,20,36,68,132, + 254,4,4,4,7,10,10,9,1,0,254,128,128,128,248,4, + 2,2,132,120,7,10,10,9,1,0,60,64,128,128,184,196, + 130,130,68,56,7,10,10,9,1,0,254,2,4,4,8,8, + 16,16,16,16,7,10,10,9,1,0,56,68,130,68,56,68, + 130,130,68,56,7,10,10,9,1,0,56,68,130,130,70,58, + 2,2,4,120,2,7,7,9,4,0,192,192,0,0,0,192, + 192,2,9,9,9,4,254,192,192,0,0,0,192,192,64,128, + 5,9,9,9,2,0,8,16,32,64,128,64,32,16,8,7, + 4,4,9,1,2,254,0,0,254,5,9,9,9,2,0,128, + 64,32,16,8,16,32,64,128,7,10,10,9,1,0,56,68, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,56,68, + 154,170,170,170,170,156,64,60,7,10,10,9,1,0,16,40, + 40,40,68,124,68,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,60,66, + 128,128,128,128,128,128,66,60,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,56,68, + 130,128,128,142,130,130,68,56,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,7,10,10,9,1,0,62,8, + 8,8,8,8,8,136,136,112,7,10,10,9,1,0,130,132, + 136,144,160,208,136,132,130,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,146,130,130,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,248,132, + 130,130,132,248,128,128,128,128,8,11,11,9,1,255,56,68, + 130,130,130,130,130,138,68,58,1,7,10,10,9,1,0,248, + 132,130,130,132,248,144,136,132,130,7,10,10,9,1,0,124, + 130,128,128,124,2,2,2,130,124,7,10,10,9,1,0,254, + 16,16,16,16,16,16,16,16,16,7,10,10,9,1,0,130, + 130,130,130,130,130,130,130,68,56,7,10,10,9,1,0,130, + 130,130,68,68,68,40,40,40,16,7,10,10,9,1,0,130, + 130,130,130,146,146,146,146,170,68,7,10,10,9,1,0,130, + 130,68,40,16,16,40,68,130,130,7,10,10,9,1,0,130, + 130,68,40,16,16,16,16,16,16,7,10,10,9,1,0,254, + 2,4,8,16,32,64,128,128,254,4,12,12,9,3,255,240, + 128,128,128,128,128,128,128,128,128,128,240,7,10,10,9,1, + 0,128,64,64,32,16,16,8,4,4,2,4,12,12,9,2, + 255,240,16,16,16,16,16,16,16,16,16,16,240,7,4,4, + 9,1,6,16,40,68,130,8,1,1,9,0,255,255,3,3, + 3,9,3,10,128,64,32,7,7,7,9,1,0,124,2,2, + 126,130,134,122,7,10,10,9,1,0,128,128,128,188,194,130, + 130,130,194,188,7,7,7,9,1,0,124,130,128,128,128,130, + 124,7,10,10,9,1,0,2,2,2,122,134,130,130,130,134, + 122,7,7,7,9,1,0,124,130,130,254,128,130,124,7,10, + 10,9,1,0,28,34,34,32,32,248,32,32,32,32,7,10, + 10,9,1,253,122,132,132,132,120,128,124,130,130,124,7,10, + 10,9,1,0,128,128,128,188,194,130,130,130,130,130,5,10, + 10,9,2,0,96,0,0,224,32,32,32,32,32,248,5,13, + 13,9,2,253,24,0,0,56,8,8,8,8,8,8,136,136, + 112,7,10,10,9,1,0,128,128,128,132,136,144,176,200,132, + 130,5,10,10,9,2,0,224,32,32,32,32,32,32,32,32, + 248,7,7,7,9,1,0,236,146,146,146,146,146,130,7,7, + 7,9,1,0,188,194,130,130,130,130,130,7,7,7,9,1, + 0,124,130,130,130,130,130,124,7,10,10,9,1,253,184,196, + 130,130,130,196,184,128,128,128,7,10,10,9,1,253,58,70, + 130,130,130,70,58,2,2,2,7,7,7,9,1,0,156,98, + 66,64,64,64,64,7,7,7,9,1,0,124,130,128,124,2, + 130,124,7,9,9,9,1,0,32,32,252,32,32,32,32,34, + 28,7,7,7,9,1,0,130,130,130,130,130,134,122,7,7, + 7,9,1,0,130,130,68,68,40,40,16,7,7,7,9,1, + 0,130,130,146,146,146,170,68,7,7,7,9,1,0,130,68, + 40,16,40,68,130,7,10,10,9,1,253,66,66,36,36,36, + 24,24,16,144,96,7,7,7,9,1,0,254,4,8,16,32, + 64,254,6,11,11,9,2,0,28,32,32,32,32,192,32,32, + 32,32,28,1,12,12,9,4,255,128,128,128,128,128,128,128, + 128,128,128,128,128,6,11,11,9,1,0,224,16,16,16,16, + 12,16,16,16,16,224,7,3,3,9,1,7,98,146,140,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,9,0,14,1,11,11,9,4,0,128,128,0,0, + 128,128,128,128,128,128,128,6,8,8,9,1,0,8,120,148, + 144,160,164,120,64,7,10,10,9,1,0,28,34,32,32,248, + 32,32,96,162,92,7,6,6,9,1,3,130,124,68,68,124, + 130,7,10,10,9,1,0,130,130,68,40,124,16,124,16,16, + 16,1,11,11,9,4,255,128,128,128,128,128,0,128,128,128, + 128,128,4,11,11,9,2,255,96,144,128,96,144,144,144,96, + 16,144,96,3,2,2,9,3,11,160,160,8,9,9,9,0, + 1,60,66,153,165,161,165,153,66,60,5,7,7,9,1,3, + 96,144,112,144,120,0,248,7,8,8,9,1,1,18,36,72, + 144,144,72,36,18,6,4,4,9,1,2,252,4,4,4,5, + 1,1,9,2,4,248,8,9,9,9,0,1,60,66,185,165, + 189,169,165,66,60,6,1,1,9,1,9,252,4,4,4,9, + 3,6,96,144,144,96,7,9,9,9,1,1,16,16,16,254, + 16,16,16,0,254,4,6,6,9,1,4,96,144,16,96,128, + 240,4,6,6,9,1,4,96,144,32,16,144,96,3,3,3, + 9,3,10,32,64,128,7,9,9,9,1,254,130,130,130,130, + 130,198,186,128,128,7,10,10,9,1,0,126,138,138,138,122, + 10,10,10,10,10,2,2,2,9,4,4,192,192,4,3,3, + 9,2,253,32,144,96,3,6,6,9,1,4,64,192,64,64, + 64,224,5,6,6,9,1,4,112,136,136,112,0,248,7,8, + 8,9,1,1,144,72,36,18,18,36,72,144,7,10,10,9, + 1,0,64,192,64,64,66,230,10,18,26,6,7,10,10,9, + 1,0,64,192,64,64,76,242,2,12,16,30,7,10,10,9, + 1,0,96,144,32,16,146,102,10,18,26,6,7,10,10,9, + 1,0,16,0,16,16,32,64,128,130,130,124,7,14,14,9, + 1,0,32,16,8,0,16,40,40,40,68,124,68,130,130,130, + 7,14,14,9,1,0,8,16,32,0,16,40,40,40,68,124, + 68,130,130,130,7,14,14,9,1,0,16,40,68,0,16,40, + 40,40,68,124,68,130,130,130,7,13,13,9,1,0,52,88, + 0,16,40,40,40,68,124,68,130,130,130,7,13,13,9,1, + 0,40,40,0,16,40,40,40,68,124,68,130,130,130,7,14, + 14,9,1,0,16,40,40,16,16,40,40,40,68,124,68,130, + 130,130,7,10,10,9,1,0,30,40,40,40,78,120,72,136, + 136,142,7,13,13,9,1,253,60,66,128,128,128,128,128,128, + 66,60,8,36,24,7,14,14,9,1,0,32,16,8,0,254, + 128,128,128,248,128,128,128,128,254,7,14,14,9,1,0,8, + 16,32,0,254,128,128,128,248,128,128,128,128,254,7,14,14, + 9,1,0,16,40,68,0,254,128,128,128,248,128,128,128,128, + 254,7,13,13,9,1,0,40,40,0,254,128,128,128,248,128, + 128,128,128,254,5,14,14,9,2,0,64,32,16,0,248,32, + 32,32,32,32,32,32,32,248,5,14,14,9,2,0,16,32, + 64,0,248,32,32,32,32,32,32,32,32,248,5,14,14,9, + 2,0,32,80,136,0,248,32,32,32,32,32,32,32,32,248, + 5,13,13,9,2,0,80,80,0,248,32,32,32,32,32,32, + 32,32,248,7,10,10,9,1,0,120,68,66,66,242,66,66, + 66,68,120,7,13,13,9,1,0,52,88,0,130,130,194,162, + 146,138,134,130,130,130,7,14,14,9,1,0,32,16,8,0, + 124,130,130,130,130,130,130,130,130,124,7,14,14,9,1,0, + 8,16,32,0,124,130,130,130,130,130,130,130,130,124,7,14, + 14,9,1,0,16,40,68,0,124,130,130,130,130,130,130,130, + 130,124,7,13,13,9,1,0,52,88,0,124,130,130,130,130, + 130,130,130,130,124,7,13,13,9,1,0,40,40,0,124,130, + 130,130,130,130,130,130,130,124,7,7,7,9,1,1,130,68, + 40,16,40,68,130,7,12,12,9,1,255,2,124,134,138,138, + 146,146,162,162,194,124,128,7,14,14,9,1,0,32,16,8, + 0,130,130,130,130,130,130,130,130,68,56,7,14,14,9,1, + 0,8,16,32,0,130,130,130,130,130,130,130,130,68,56,7, + 14,14,9,1,0,16,40,68,0,130,130,130,130,130,130,130, + 130,68,56,7,13,13,9,1,0,40,40,0,130,130,130,130, + 130,130,130,130,68,56,7,14,14,9,1,0,8,16,32,0, + 130,130,68,40,16,16,16,16,16,16,7,10,10,9,1,0, + 128,128,252,130,130,130,252,128,128,128,6,10,10,9,1,0, + 56,68,68,72,208,72,68,68,68,88,7,11,11,9,1,0, + 32,16,8,0,124,2,2,126,130,134,122,7,11,11,9,1, + 0,8,16,32,0,124,2,2,126,130,134,122,7,11,11,9, + 1,0,16,40,68,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,52,88,0,124,2,2,126,130,134,122,7,10,10, + 9,1,0,40,40,0,124,2,2,126,130,134,122,7,12,12, + 9,1,0,16,40,40,16,0,124,2,2,126,130,134,122,7, + 7,7,9,1,0,108,18,18,126,144,146,108,7,10,10,9, + 1,253,124,130,128,128,128,130,124,16,72,48,7,11,11,9, + 1,0,32,16,8,0,124,130,130,254,128,130,124,7,11,11, + 9,1,0,8,16,32,0,124,130,130,254,128,130,124,7,11, + 11,9,1,0,16,40,68,0,124,130,130,254,128,130,124,7, + 10,10,9,1,0,40,40,0,124,130,130,254,128,130,124,5, + 12,12,9,2,0,128,64,32,0,0,224,32,32,32,32,32, + 248,5,12,12,9,2,0,16,32,64,0,0,224,32,32,32, + 32,32,248,5,12,12,9,2,0,32,80,136,0,0,224,32, + 32,32,32,32,248,5,11,11,9,2,0,80,80,0,0,224, + 32,32,32,32,32,248,7,11,11,9,1,0,72,48,80,8, + 60,68,130,130,130,68,56,7,10,10,9,1,0,52,88,0, + 188,194,130,130,130,130,130,7,11,11,9,1,0,32,16,8, + 0,124,130,130,130,130,130,124,7,11,11,9,1,0,8,16, + 32,0,124,130,130,130,130,130,124,7,11,11,9,1,0,16, + 40,68,0,124,130,130,130,130,130,124,7,10,10,9,1,0, + 52,88,0,124,130,130,130,130,130,124,7,10,10,9,1,0, + 40,40,0,124,130,130,130,130,130,124,7,9,9,9,1,0, + 16,56,16,0,254,0,16,56,16,7,9,9,9,1,255,2, + 124,138,138,146,162,162,124,128,7,11,11,9,1,0,64,32, + 16,0,130,130,130,130,130,134,122,7,11,11,9,1,0,8, + 16,32,0,130,130,130,130,130,134,122,7,11,11,9,1,0, + 16,40,68,0,130,130,130,130,130,134,122,7,10,10,9,1, + 0,40,40,0,130,130,130,130,130,134,122,7,14,14,9,1, + 253,4,8,16,0,66,66,36,36,36,24,24,16,144,96,7, + 11,11,9,1,254,128,128,184,196,130,130,130,196,184,128,128, + 7,13,13,9,1,253,36,36,0,66,66,36,36,36,24,24, + 16,144,96}; +/* + Fontname: -Misc-Fixed-Medium-R-Normal--18-120-100-100-C-90-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 8 h=13 x= 4 y=14 dx= 9 dy= 0 ascent=14 len=13 + Font Bounding box w= 9 h=18 x= 0 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_9x18r[1424] U8G_SECTION(".progmem.u8g_font_9x18r") = { + 0,9,18,0,252,10,1,232,3,215,32,127,253,14,253,11, + 253,0,0,0,9,0,14,1,11,11,9,4,0,128,128,128, + 128,128,128,128,0,0,128,128,4,4,4,9,3,7,144,144, + 144,144,8,10,10,9,0,0,36,36,36,255,36,36,255,36, + 36,36,7,11,11,9,1,255,16,124,146,144,80,56,20,18, + 146,124,16,7,10,10,9,1,0,66,164,164,72,16,16,36, + 74,74,132,7,10,10,9,1,0,96,144,144,144,96,98,148, + 136,148,98,1,4,4,9,4,7,128,128,128,128,3,12,12, + 9,3,255,32,64,64,128,128,128,128,128,128,64,64,32,3, + 12,12,9,3,255,128,64,64,32,32,32,32,32,32,64,64, + 128,7,7,7,9,1,3,16,146,84,56,84,146,16,7,7, + 7,9,1,1,16,16,16,254,16,16,16,2,4,4,9,4, + 254,192,192,64,128,7,1,1,9,1,4,254,2,2,2,9, + 4,0,192,192,7,10,10,9,1,0,2,4,4,8,16,16, + 32,64,64,128,7,10,10,9,1,0,56,68,130,130,130,130, + 130,130,68,56,7,10,10,9,1,0,16,48,80,144,16,16, + 16,16,16,254,7,10,10,9,1,0,56,68,130,2,4,8, + 16,32,64,254,7,10,10,9,1,0,254,2,4,8,24,4, + 2,2,132,120,7,10,10,9,1,0,4,12,20,36,68,132, + 254,4,4,4,7,10,10,9,1,0,254,128,128,128,248,4, + 2,2,132,120,7,10,10,9,1,0,60,64,128,128,184,196, + 130,130,68,56,7,10,10,9,1,0,254,2,4,4,8,8, + 16,16,16,16,7,10,10,9,1,0,56,68,130,68,56,68, + 130,130,68,56,7,10,10,9,1,0,56,68,130,130,70,58, + 2,2,4,120,2,7,7,9,4,0,192,192,0,0,0,192, + 192,2,9,9,9,4,254,192,192,0,0,0,192,192,64,128, + 5,9,9,9,2,0,8,16,32,64,128,64,32,16,8,7, + 4,4,9,1,2,254,0,0,254,5,9,9,9,2,0,128, + 64,32,16,8,16,32,64,128,7,10,10,9,1,0,56,68, + 130,2,4,8,16,16,0,16,7,10,10,9,1,0,56,68, + 154,170,170,170,170,156,64,60,7,10,10,9,1,0,16,40, + 40,40,68,124,68,130,130,130,7,10,10,9,1,0,248,132, + 130,132,248,132,130,130,132,248,7,10,10,9,1,0,60,66, + 128,128,128,128,128,128,66,60,7,10,10,9,1,0,248,132, + 130,130,130,130,130,130,132,248,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,254,7,10,10,9,1,0,254,128, + 128,128,248,128,128,128,128,128,7,10,10,9,1,0,56,68, + 130,128,128,142,130,130,68,56,7,10,10,9,1,0,130,130, + 130,130,254,130,130,130,130,130,5,10,10,9,2,0,248,32, + 32,32,32,32,32,32,32,248,7,10,10,9,1,0,62,8, + 8,8,8,8,8,136,136,112,7,10,10,9,1,0,130,132, + 136,144,160,208,136,132,130,130,7,10,10,9,1,0,128,128, + 128,128,128,128,128,128,128,254,7,10,10,9,1,0,130,130, + 198,170,146,130,130,130,130,130,7,10,10,9,1,0,130,130, + 194,162,146,138,134,130,130,130,7,10,10,9,1,0,124,130, + 130,130,130,130,130,130,130,124,7,10,10,9,1,0,248,132, + 130,130,132,248,128,128,128,128,8,11,11,9,1,255,56,68, + 130,130,130,130,130,138,68,58,1,7,10,10,9,1,0,248, + 132,130,130,132,248,144,136,132,130,7,10,10,9,1,0,124, + 130,128,128,124,2,2,2,130,124,7,10,10,9,1,0,254, + 16,16,16,16,16,16,16,16,16,7,10,10,9,1,0,130, + 130,130,130,130,130,130,130,68,56,7,10,10,9,1,0,130, + 130,130,68,68,68,40,40,40,16,7,10,10,9,1,0,130, + 130,130,130,146,146,146,146,170,68,7,10,10,9,1,0,130, + 130,68,40,16,16,40,68,130,130,7,10,10,9,1,0,130, + 130,68,40,16,16,16,16,16,16,7,10,10,9,1,0,254, + 2,4,8,16,32,64,128,128,254,4,12,12,9,3,255,240, + 128,128,128,128,128,128,128,128,128,128,240,7,10,10,9,1, + 0,128,64,64,32,16,16,8,4,4,2,4,12,12,9,2, + 255,240,16,16,16,16,16,16,16,16,16,16,240,7,4,4, + 9,1,6,16,40,68,130,8,1,1,9,0,255,255,3,3, + 3,9,3,10,128,64,32,7,7,7,9,1,0,124,2,2, + 126,130,134,122,7,10,10,9,1,0,128,128,128,188,194,130, + 130,130,194,188,7,7,7,9,1,0,124,130,128,128,128,130, + 124,7,10,10,9,1,0,2,2,2,122,134,130,130,130,134, + 122,7,7,7,9,1,0,124,130,130,254,128,130,124,7,10, + 10,9,1,0,28,34,34,32,32,248,32,32,32,32,7,10, + 10,9,1,253,122,132,132,132,120,128,124,130,130,124,7,10, + 10,9,1,0,128,128,128,188,194,130,130,130,130,130,5,10, + 10,9,2,0,96,0,0,224,32,32,32,32,32,248,5,13, + 13,9,2,253,24,0,0,56,8,8,8,8,8,8,136,136, + 112,7,10,10,9,1,0,128,128,128,132,136,144,176,200,132, + 130,5,10,10,9,2,0,224,32,32,32,32,32,32,32,32, + 248,7,7,7,9,1,0,236,146,146,146,146,146,130,7,7, + 7,9,1,0,188,194,130,130,130,130,130,7,7,7,9,1, + 0,124,130,130,130,130,130,124,7,10,10,9,1,253,184,196, + 130,130,130,196,184,128,128,128,7,10,10,9,1,253,58,70, + 130,130,130,70,58,2,2,2,7,7,7,9,1,0,156,98, + 66,64,64,64,64,7,7,7,9,1,0,124,130,128,124,2, + 130,124,7,9,9,9,1,0,32,32,252,32,32,32,32,34, + 28,7,7,7,9,1,0,130,130,130,130,130,134,122,7,7, + 7,9,1,0,130,130,68,68,40,40,16,7,7,7,9,1, + 0,130,130,146,146,146,170,68,7,7,7,9,1,0,130,68, + 40,16,40,68,130,7,10,10,9,1,253,66,66,36,36,36, + 24,24,16,144,96,7,7,7,9,1,0,254,4,8,16,32, + 64,254,6,11,11,9,2,0,28,32,32,32,32,192,32,32, + 32,32,28,1,12,12,9,4,255,128,128,128,128,128,128,128, + 128,128,128,128,128,6,11,11,9,1,0,224,16,16,16,16, + 12,16,16,16,16,224,7,3,3,9,1,7,98,146,140,255 + }; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 9 h= 9 x= 1 y= 5 dx=10 dy= 0 ascent= 8 len=12 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_baby[2227] U8G_SECTION(".progmem.u8g_font_baby") = { + 0,10,10,255,254,5,1,108,2,200,32,255,254,8,254,6, + 254,0,0,0,2,0,0,1,6,6,3,1,0,128,128,128, + 128,0,128,3,3,3,4,0,4,160,160,160,5,5,5,6, + 0,0,80,248,80,248,80,3,7,7,4,0,255,64,96,128, + 64,32,192,64,5,5,5,6,0,0,200,208,32,88,152,5, + 6,6,6,0,0,64,160,64,160,144,104,1,3,3,2,0, + 4,128,128,128,2,7,7,3,0,255,64,128,128,128,128,128, + 64,2,7,7,3,0,255,128,64,64,64,64,64,128,3,3, + 3,4,0,3,160,64,160,3,3,3,5,1,1,64,224,64, + 2,3,3,3,0,254,192,64,128,3,1,1,4,0,2,224, + 1,1,1,2,0,0,128,3,6,6,4,0,255,32,32,64, + 64,128,128,3,5,5,4,0,0,64,160,160,160,64,2,5, + 5,3,0,0,64,192,64,64,64,4,5,5,5,0,0,96, + 144,32,64,240,4,5,5,5,0,0,224,16,96,16,224,4, + 5,5,5,0,0,144,144,144,112,16,4,5,5,5,0,0, + 240,128,224,16,224,4,5,5,5,0,0,96,128,224,144,96, + 4,5,5,5,0,0,240,16,32,64,128,4,5,5,5,0, + 0,96,144,96,144,96,4,5,5,5,0,0,96,144,112,16, + 96,1,3,3,3,1,0,128,0,128,2,5,5,3,0,254, + 64,0,64,64,128,4,5,5,5,0,0,16,96,128,96,16, + 3,3,3,4,0,1,224,0,224,4,5,5,5,0,0,128, + 96,16,96,128,4,6,6,5,0,0,96,144,32,64,0,64, + 5,6,6,6,0,0,112,136,168,176,128,112,4,5,5,5, + 0,0,96,144,144,240,144,4,5,5,5,0,0,224,144,224, + 144,224,4,5,5,5,0,0,96,144,128,144,96,4,5,5, + 5,0,0,224,144,144,144,224,4,5,5,5,0,0,240,128, + 224,128,240,4,5,5,5,0,0,240,128,224,128,128,4,5, + 5,5,0,0,96,128,176,144,96,4,5,5,5,0,0,144, + 144,240,144,144,3,5,5,4,0,0,224,64,64,64,224,4, + 5,5,5,0,0,112,16,16,144,96,4,5,5,5,0,0, + 144,144,144,224,144,3,5,5,4,0,0,128,128,128,128,224, + 5,5,5,6,0,0,216,168,168,168,136,4,5,5,5,0, + 0,144,144,208,176,144,4,5,5,5,0,0,96,144,144,144, + 96,4,5,5,5,0,0,224,144,144,224,128,4,5,5,5, + 0,0,96,144,144,80,224,4,5,5,5,0,0,224,144,144, + 224,144,3,5,5,4,0,0,96,128,64,32,192,3,5,5, + 4,0,0,224,64,64,64,64,4,5,5,5,0,0,144,144, + 144,144,96,5,5,5,6,0,0,136,80,80,80,32,5,5, + 5,6,0,0,136,136,136,168,80,4,5,5,5,0,0,144, + 144,144,96,144,4,6,6,5,0,255,144,144,144,112,16,96, + 4,5,5,5,0,0,240,32,64,128,240,2,7,7,3,0, + 255,192,128,128,128,128,128,192,3,6,6,4,0,255,128,128, + 64,64,32,32,2,7,7,3,0,255,192,64,64,64,64,64, + 192,3,2,2,4,0,4,64,160,4,1,1,5,0,255,240, + 2,2,2,3,0,5,128,64,4,4,4,5,0,0,96,144, + 144,112,4,5,5,5,0,0,128,224,144,144,96,3,4,4, + 4,0,0,96,128,128,96,4,5,5,5,0,0,16,112,144, + 144,96,4,4,4,5,0,0,96,144,160,112,4,5,5,5, + 0,0,96,144,128,192,128,4,6,6,5,0,254,96,144,144, + 112,16,96,4,5,5,5,0,0,128,224,144,144,144,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,32,192,3,5,5,4,0,0,128,160,192,160, + 160,1,5,5,2,0,0,128,128,128,128,128,5,4,4,6, + 0,0,208,168,168,136,4,4,4,5,0,0,224,144,144,144, + 4,4,4,5,0,0,96,144,144,96,4,6,6,5,0,254, + 96,144,144,224,128,128,4,6,6,5,0,254,96,144,144,112, + 16,16,4,4,4,5,0,0,224,144,128,128,4,4,4,5, + 0,0,112,64,32,224,3,5,5,4,0,0,64,224,64,64, + 64,4,4,4,5,0,0,144,144,144,112,4,4,4,5,0, + 0,144,144,144,96,5,4,4,6,0,0,136,168,168,80,4, + 4,4,5,0,0,144,144,96,144,4,6,6,5,0,254,144, + 144,144,112,16,96,4,4,4,5,0,0,240,32,64,240,3, + 7,7,4,0,255,32,64,64,128,64,64,32,1,7,7,2, + 0,255,128,128,128,128,128,128,128,3,7,7,4,0,255,128, + 64,64,32,64,64,128,5,3,3,6,0,1,64,168,16,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,1,6,6,3,1,255,128,0,128,128,128,128,4,6,6, + 5,0,255,16,112,160,160,112,64,4,6,6,5,0,0,96, + 208,64,224,64,240,4,4,4,5,0,1,240,144,144,240,5, + 7,7,6,0,255,136,80,32,112,32,112,32,1,7,7,2, + 0,255,128,128,128,0,128,128,128,4,7,7,5,0,255,112, + 128,96,144,96,16,224,3,1,1,4,0,5,160,7,7,7, + 8,0,255,56,68,154,162,154,68,56,3,3,3,4,0,4, + 96,160,224,4,3,3,5,0,1,80,160,80,5,3,3,6, + 0,1,248,8,8,2,1,1,3,0,2,192,7,7,7,8, + 0,255,56,68,178,186,170,68,56,4,1,1,5,0,5,240, + 3,3,3,4,0,4,64,160,64,3,5,5,4,0,0,64, + 224,64,0,224,3,4,4,4,0,4,192,32,64,224,3,4, + 4,4,0,4,224,32,96,224,2,2,2,3,0,5,64,128, + 5,6,6,6,0,254,144,144,144,248,128,128,5,6,6,6, + 0,0,120,232,232,104,40,40,1,1,1,3,1,2,128,3, + 3,3,4,0,254,64,32,192,3,4,4,4,0,4,64,192, + 64,224,4,4,4,5,0,4,96,144,144,96,4,3,3,5, + 0,1,160,80,160,7,6,6,8,0,0,136,144,160,42,78, + 130,7,6,6,8,0,0,136,144,164,42,68,142,9,6,12, + 10,0,0,226,0,100,0,232,0,10,128,19,128,32,128,4, + 6,6,5,0,255,32,0,32,64,144,96,4,8,8,5,0, + 0,64,32,0,96,144,144,240,144,4,8,8,5,0,0,32, + 64,0,96,144,144,240,144,4,8,8,5,0,0,96,144,0, + 96,144,144,240,144,4,8,8,5,0,0,80,160,0,96,144, + 144,240,144,4,7,7,5,0,0,80,0,96,144,144,240,144, + 4,7,7,5,0,0,96,0,96,144,144,240,144,7,5,5, + 8,0,0,126,144,156,240,158,4,7,7,5,0,254,96,144, + 128,144,96,32,64,4,8,8,5,0,0,64,32,0,240,128, + 224,128,240,4,8,8,5,0,0,32,64,0,240,128,224,128, + 240,4,8,8,5,0,0,96,144,0,240,128,224,128,240,4, + 7,7,5,0,0,80,0,240,128,224,128,240,3,8,8,4, + 0,0,128,64,0,224,64,64,64,224,3,8,8,4,0,0, + 32,64,0,224,64,64,64,224,3,8,8,4,0,0,64,160, + 0,224,64,64,64,224,3,7,7,4,0,0,160,0,224,64, + 64,64,224,5,5,5,6,0,0,112,72,232,72,112,4,8, + 8,5,0,0,80,160,0,144,144,208,176,144,4,8,8,5, + 0,0,64,32,0,96,144,144,144,96,4,8,8,5,0,0, + 32,64,0,96,144,144,144,96,4,8,8,5,0,0,96,144, + 0,96,144,144,144,96,4,8,8,5,0,0,80,160,0,96, + 144,144,144,96,4,7,7,5,0,0,80,0,96,144,144,144, + 96,3,3,3,4,0,1,160,64,160,6,5,5,7,0,0, + 48,76,120,200,48,4,8,8,5,0,0,64,32,0,144,144, + 144,144,96,4,8,8,5,0,0,32,64,0,144,144,144,144, + 96,4,8,8,5,0,0,96,144,0,144,144,144,144,96,4, + 7,7,5,0,0,80,0,144,144,144,144,96,4,9,9,5, + 0,255,32,64,0,144,144,144,112,16,96,4,6,6,5,0, + 0,128,224,144,144,224,128,4,5,5,5,0,0,96,144,160, + 144,160,4,7,7,5,0,0,64,32,0,96,144,144,112,4, + 7,7,5,0,0,32,64,0,96,144,144,112,4,7,7,5, + 0,0,96,144,0,96,144,144,112,4,7,7,5,0,0,80, + 160,0,96,144,144,112,4,6,6,5,0,0,80,0,96,144, + 144,112,4,7,7,5,0,0,96,96,0,96,144,144,112,7, + 4,4,8,0,0,108,146,148,126,3,6,6,4,0,254,96, + 128,128,96,32,64,4,7,7,5,0,0,64,32,0,96,144, + 160,112,4,7,7,5,0,0,32,64,0,96,144,160,112,4, + 7,7,5,0,0,96,144,0,96,144,160,112,4,6,6,5, + 0,0,80,0,96,144,160,112,2,6,6,3,0,0,128,64, + 0,64,64,64,2,6,6,3,0,0,64,128,0,128,128,128, + 3,6,6,4,0,0,64,160,0,64,64,64,3,5,5,4, + 0,0,160,0,64,64,64,5,6,6,6,0,0,96,24,112, + 144,144,96,4,7,7,5,0,0,80,160,0,224,144,144,144, + 4,7,7,5,0,0,64,32,0,96,144,144,96,4,7,7, + 5,0,0,32,64,0,96,144,144,96,4,7,7,5,0,0, + 96,144,0,96,144,144,96,4,7,7,5,0,0,80,160,0, + 96,144,144,96,4,6,6,5,0,0,80,0,96,144,144,96, + 5,5,5,6,0,0,32,0,248,0,32,4,4,4,5,0, + 0,96,176,208,96,4,7,7,5,0,0,64,32,0,144,144, + 144,112,4,7,7,5,0,0,32,64,0,144,144,144,112,4, + 7,7,5,0,0,96,144,0,144,144,144,112,4,6,6,5, + 0,0,80,0,144,144,144,112,4,9,9,5,0,254,32,64, + 0,144,144,144,112,16,96,4,8,8,5,0,254,128,128,224, + 144,144,224,128,128,4,8,8,5,0,254,80,0,144,144,144, + 112,16,96}; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 6 x= 1 y= 3 dx= 5 dy= 0 ascent= 6 len= 6 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_babyn[180] U8G_SECTION(".progmem.u8g_font_babyn") = { + 0,10,10,255,254,5,0,0,0,0,42,57,0,6,254,5, + 0,3,3,3,4,0,3,160,64,160,3,3,3,5,1,1, + 64,224,64,2,3,3,3,0,254,192,64,128,3,1,1,4, + 0,2,224,1,1,1,2,0,0,128,3,6,6,4,0,255, + 32,32,64,64,128,128,3,5,5,4,0,0,64,160,160,160, + 64,2,5,5,3,0,0,64,192,64,64,64,4,5,5,5, + 0,0,96,144,32,64,240,4,5,5,5,0,0,224,16,96, + 16,224,4,5,5,5,0,0,144,144,144,112,16,4,5,5, + 5,0,0,240,128,224,16,224,4,5,5,5,0,0,96,128, + 224,144,96,4,5,5,5,0,0,240,16,32,64,128,4,5, + 5,5,0,0,96,144,96,144,96,4,5,5,5,0,0,96, + 144,112,16,96}; +/* + Fontname: -FreeType-Baby-Medium-R-Normal--8-80-72-72-P-42-ISO10646-1 + Copyright: Copyright mrsbarrett 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 1 y= 5 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w=10 h=10 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_babyr[1040] U8G_SECTION(".progmem.u8g_font_babyr") = { + 0,10,10,255,254,5,1,108,2,200,32,127,254,7,254,6, + 254,0,0,0,2,0,0,1,6,6,3,1,0,128,128,128, + 128,0,128,3,3,3,4,0,4,160,160,160,5,5,5,6, + 0,0,80,248,80,248,80,3,7,7,4,0,255,64,96,128, + 64,32,192,64,5,5,5,6,0,0,200,208,32,88,152,5, + 6,6,6,0,0,64,160,64,160,144,104,1,3,3,2,0, + 4,128,128,128,2,7,7,3,0,255,64,128,128,128,128,128, + 64,2,7,7,3,0,255,128,64,64,64,64,64,128,3,3, + 3,4,0,3,160,64,160,3,3,3,5,1,1,64,224,64, + 2,3,3,3,0,254,192,64,128,3,1,1,4,0,2,224, + 1,1,1,2,0,0,128,3,6,6,4,0,255,32,32,64, + 64,128,128,3,5,5,4,0,0,64,160,160,160,64,2,5, + 5,3,0,0,64,192,64,64,64,4,5,5,5,0,0,96, + 144,32,64,240,4,5,5,5,0,0,224,16,96,16,224,4, + 5,5,5,0,0,144,144,144,112,16,4,5,5,5,0,0, + 240,128,224,16,224,4,5,5,5,0,0,96,128,224,144,96, + 4,5,5,5,0,0,240,16,32,64,128,4,5,5,5,0, + 0,96,144,96,144,96,4,5,5,5,0,0,96,144,112,16, + 96,1,3,3,3,1,0,128,0,128,2,5,5,3,0,254, + 64,0,64,64,128,4,5,5,5,0,0,16,96,128,96,16, + 3,3,3,4,0,1,224,0,224,4,5,5,5,0,0,128, + 96,16,96,128,4,6,6,5,0,0,96,144,32,64,0,64, + 5,6,6,6,0,0,112,136,168,176,128,112,4,5,5,5, + 0,0,96,144,144,240,144,4,5,5,5,0,0,224,144,224, + 144,224,4,5,5,5,0,0,96,144,128,144,96,4,5,5, + 5,0,0,224,144,144,144,224,4,5,5,5,0,0,240,128, + 224,128,240,4,5,5,5,0,0,240,128,224,128,128,4,5, + 5,5,0,0,96,128,176,144,96,4,5,5,5,0,0,144, + 144,240,144,144,3,5,5,4,0,0,224,64,64,64,224,4, + 5,5,5,0,0,112,16,16,144,96,4,5,5,5,0,0, + 144,144,144,224,144,3,5,5,4,0,0,128,128,128,128,224, + 5,5,5,6,0,0,216,168,168,168,136,4,5,5,5,0, + 0,144,144,208,176,144,4,5,5,5,0,0,96,144,144,144, + 96,4,5,5,5,0,0,224,144,144,224,128,4,5,5,5, + 0,0,96,144,144,80,224,4,5,5,5,0,0,224,144,144, + 224,144,3,5,5,4,0,0,96,128,64,32,192,3,5,5, + 4,0,0,224,64,64,64,64,4,5,5,5,0,0,144,144, + 144,144,96,5,5,5,6,0,0,136,80,80,80,32,5,5, + 5,6,0,0,136,136,136,168,80,4,5,5,5,0,0,144, + 144,144,96,144,4,6,6,5,0,255,144,144,144,112,16,96, + 4,5,5,5,0,0,240,32,64,128,240,2,7,7,3,0, + 255,192,128,128,128,128,128,192,3,6,6,4,0,255,128,128, + 64,64,32,32,2,7,7,3,0,255,192,64,64,64,64,64, + 192,3,2,2,4,0,4,64,160,4,1,1,5,0,255,240, + 2,2,2,3,0,5,128,64,4,4,4,5,0,0,96,144, + 144,112,4,5,5,5,0,0,128,224,144,144,96,3,4,4, + 4,0,0,96,128,128,96,4,5,5,5,0,0,16,112,144, + 144,96,4,4,4,5,0,0,96,144,160,112,4,5,5,5, + 0,0,96,144,128,192,128,4,6,6,5,0,254,96,144,144, + 112,16,96,4,5,5,5,0,0,128,224,144,144,144,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,32,192,3,5,5,4,0,0,128,160,192,160, + 160,1,5,5,2,0,0,128,128,128,128,128,5,4,4,6, + 0,0,208,168,168,136,4,4,4,5,0,0,224,144,144,144, + 4,4,4,5,0,0,96,144,144,96,4,6,6,5,0,254, + 96,144,144,224,128,128,4,6,6,5,0,254,96,144,144,112, + 16,16,4,4,4,5,0,0,224,144,128,128,4,4,4,5, + 0,0,112,64,32,224,3,5,5,4,0,0,64,224,64,64, + 64,4,4,4,5,0,0,144,144,144,112,4,4,4,5,0, + 0,144,144,144,96,5,4,4,6,0,0,136,168,168,80,4, + 4,4,5,0,0,144,144,96,144,4,6,6,5,0,254,144, + 144,144,112,16,96,4,4,4,5,0,0,240,32,64,240,3, + 7,7,4,0,255,32,64,64,128,64,64,32,1,7,7,2, + 0,255,128,128,128,128,128,128,128,3,7,7,4,0,255,128, + 64,64,32,64,64,128,5,3,3,6,0,1,64,168,16,255 + }; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07[948] U8G_SECTION(".progmem.u8g_font_blipfest_07") = { + 0,5,6,0,255,5,1,5,2,47,32,255,255,5,255,5, + 255,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,255,255,255,4,5,5, + 5,0,0,224,160,240,160,240,1,2,2,2,0,3,128,128, + 255,255,255,3,3,3,4,0,1,64,224,64,1,2,2,2, + 0,0,128,128,3,1,1,4,0,2,224,1,1,1,2,0, + 0,128,255,3,5,5,4,0,0,224,160,160,160,224,2,5, + 5,3,0,0,192,64,64,64,64,3,5,5,4,0,0,224, + 32,224,128,224,3,5,5,4,0,0,224,32,224,32,224,3, + 5,5,4,0,0,160,160,224,32,32,3,5,5,4,0,0, + 224,128,224,32,224,3,5,5,4,0,0,224,128,224,160,224, + 3,5,5,4,0,0,224,32,32,32,32,3,5,5,4,0, + 0,224,160,224,160,224,3,5,5,4,0,0,224,160,224,32, + 224,1,3,3,2,0,0,128,0,128,1,4,4,2,0,255, + 128,0,128,128,255,3,3,3,4,0,1,224,0,224,255,3, + 5,5,4,0,0,224,32,96,0,64,5,5,5,6,0,0, + 248,136,184,168,240,3,5,5,4,0,0,224,160,160,224,160, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,128,128,128,224,3,5,5,4,0,0,192,160,160,160, + 192,3,5,5,4,0,0,224,128,224,128,224,3,5,5,4, + 0,0,224,128,224,128,128,3,5,5,4,0,0,224,128,160, + 160,224,3,5,5,4,0,0,160,160,160,224,160,3,5,5, + 4,0,0,224,64,64,64,224,3,5,5,4,0,0,32,32, + 32,160,224,3,5,5,4,0,0,160,160,160,192,160,3,5, + 5,4,0,0,128,128,128,128,224,3,5,5,4,0,0,160, + 224,160,160,160,3,5,5,4,0,0,224,160,160,160,160,3, + 5,5,4,0,0,224,160,160,160,224,3,5,5,4,0,0, + 224,160,160,224,128,3,5,5,4,0,0,224,160,160,224,64, + 3,5,5,4,0,0,224,160,160,192,160,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,64,64,64, + 64,3,5,5,4,0,0,160,160,160,160,224,3,5,5,4, + 0,0,160,160,160,160,64,3,5,5,4,0,0,160,160,160, + 224,224,3,5,5,4,0,0,160,160,64,160,160,3,5,5, + 4,0,0,160,160,160,64,64,3,5,5,4,0,0,224,32, + 224,128,224,255,255,255,255,3,1,1,4,0,0,224,255,3, + 3,3,4,0,0,96,160,224,3,5,5,4,0,0,128,128, + 224,160,224,3,3,3,4,0,0,224,128,224,3,5,5,4, + 0,0,32,32,224,160,224,3,3,3,4,0,0,224,160,192, + 3,5,5,4,0,0,96,64,224,64,64,3,4,4,4,0, + 255,224,160,224,64,3,5,5,4,0,0,128,128,224,160,160, + 1,5,5,2,0,0,128,0,128,128,128,2,5,5,3,0, + 0,64,0,64,64,192,3,5,5,4,0,0,128,128,160,192, + 160,1,5,5,2,0,0,128,128,128,128,128,5,3,3,6, + 0,0,248,168,168,3,3,3,4,0,0,192,160,160,3,3, + 3,4,0,0,224,160,224,3,4,4,4,0,255,224,160,224, + 128,3,4,4,4,0,255,224,160,224,32,3,3,3,4,0, + 0,224,128,128,3,3,3,4,0,0,96,64,192,3,5,5, + 4,0,0,64,224,64,64,96,3,3,3,4,0,0,160,160, + 224,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,4,4,4, + 0,255,160,160,224,32,3,3,3,4,0,0,224,64,224,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[160] U8G_SECTION(".progmem.u8g_font_blipfest_07n") = { + 0,5,6,0,255,5,0,0,0,0,42,57,0,5,0,5, + 0,255,3,3,3,4,0,1,64,224,64,1,2,2,2,0, + 0,128,128,3,1,1,4,0,2,224,1,1,1,2,0,0, + 128,255,3,5,5,4,0,0,224,160,160,160,224,2,5,5, + 3,0,0,192,64,64,64,64,3,5,5,4,0,0,224,32, + 224,128,224,3,5,5,4,0,0,224,32,224,32,224,3,5, + 5,4,0,0,160,160,224,32,32,3,5,5,4,0,0,224, + 128,224,32,224,3,5,5,4,0,0,224,128,224,160,224,3, + 5,5,4,0,0,224,32,32,32,32,3,5,5,4,0,0, + 224,160,224,160,224,3,5,5,4,0,0,224,160,224,32,224 + }; +/* + Fontname: -FreeType-Blipfest 07-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright cwillmor 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[820] U8G_SECTION(".progmem.u8g_font_blipfest_07r") = { + 0,5,6,0,255,5,1,5,2,47,32,127,255,5,255,5, + 255,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,255,255,255,4,5,5, + 5,0,0,224,160,240,160,240,1,2,2,2,0,3,128,128, + 255,255,255,3,3,3,4,0,1,64,224,64,1,2,2,2, + 0,0,128,128,3,1,1,4,0,2,224,1,1,1,2,0, + 0,128,255,3,5,5,4,0,0,224,160,160,160,224,2,5, + 5,3,0,0,192,64,64,64,64,3,5,5,4,0,0,224, + 32,224,128,224,3,5,5,4,0,0,224,32,224,32,224,3, + 5,5,4,0,0,160,160,224,32,32,3,5,5,4,0,0, + 224,128,224,32,224,3,5,5,4,0,0,224,128,224,160,224, + 3,5,5,4,0,0,224,32,32,32,32,3,5,5,4,0, + 0,224,160,224,160,224,3,5,5,4,0,0,224,160,224,32, + 224,1,3,3,2,0,0,128,0,128,1,4,4,2,0,255, + 128,0,128,128,255,3,3,3,4,0,1,224,0,224,255,3, + 5,5,4,0,0,224,32,96,0,64,5,5,5,6,0,0, + 248,136,184,168,240,3,5,5,4,0,0,224,160,160,224,160, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,128,128,128,224,3,5,5,4,0,0,192,160,160,160, + 192,3,5,5,4,0,0,224,128,224,128,224,3,5,5,4, + 0,0,224,128,224,128,128,3,5,5,4,0,0,224,128,160, + 160,224,3,5,5,4,0,0,160,160,160,224,160,3,5,5, + 4,0,0,224,64,64,64,224,3,5,5,4,0,0,32,32, + 32,160,224,3,5,5,4,0,0,160,160,160,192,160,3,5, + 5,4,0,0,128,128,128,128,224,3,5,5,4,0,0,160, + 224,160,160,160,3,5,5,4,0,0,224,160,160,160,160,3, + 5,5,4,0,0,224,160,160,160,224,3,5,5,4,0,0, + 224,160,160,224,128,3,5,5,4,0,0,224,160,160,224,64, + 3,5,5,4,0,0,224,160,160,192,160,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,64,64,64, + 64,3,5,5,4,0,0,160,160,160,160,224,3,5,5,4, + 0,0,160,160,160,160,64,3,5,5,4,0,0,160,160,160, + 224,224,3,5,5,4,0,0,160,160,64,160,160,3,5,5, + 4,0,0,160,160,160,64,64,3,5,5,4,0,0,224,32, + 224,128,224,255,255,255,255,3,1,1,4,0,0,224,255,3, + 3,3,4,0,0,96,160,224,3,5,5,4,0,0,128,128, + 224,160,224,3,3,3,4,0,0,224,128,224,3,5,5,4, + 0,0,32,32,224,160,224,3,3,3,4,0,0,224,160,192, + 3,5,5,4,0,0,96,64,224,64,64,3,4,4,4,0, + 255,224,160,224,64,3,5,5,4,0,0,128,128,224,160,160, + 1,5,5,2,0,0,128,0,128,128,128,2,5,5,3,0, + 0,64,0,64,64,192,3,5,5,4,0,0,128,128,160,192, + 160,1,5,5,2,0,0,128,128,128,128,128,5,3,3,6, + 0,0,248,168,168,3,3,3,4,0,0,192,160,160,3,3, + 3,4,0,0,224,160,224,3,4,4,4,0,255,224,160,224, + 128,3,4,4,4,0,255,224,160,224,32,3,3,3,4,0, + 0,224,128,128,3,3,3,4,0,0,96,64,192,3,5,5, + 4,0,0,64,224,64,64,96,3,3,3,4,0,0,160,160, + 224,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,4,4,4, + 0,255,160,160,224,32,3,3,3,4,0,0,224,64,224,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 9 h= 8 x= 1 y= 6 dx=10 dy= 0 ascent= 8 len=10 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikita[2236] U8G_SECTION(".progmem.u8g_font_chikita") = { + 0,9,10,0,254,5,1,107,2,195,32,255,254,8,254,6, + 254,0,0,0,2,0,0,1,7,7,2,0,255,128,128,128, + 128,128,0,128,3,2,2,4,0,4,160,160,5,5,5,6, + 0,0,80,248,80,248,80,5,7,7,6,0,255,32,120,160, + 112,40,240,32,5,5,5,6,0,0,200,208,32,88,152,5, + 5,5,6,0,0,32,80,104,144,104,1,2,2,2,0,4, + 128,128,3,7,7,4,0,255,32,64,128,128,128,64,32,3, + 7,7,4,0,255,128,64,32,32,32,64,128,3,3,3,5, + 1,1,160,64,160,5,5,5,6,0,0,32,32,248,32,32, + 2,2,2,3,0,255,64,128,5,1,1,6,0,2,248,1, + 1,1,2,0,0,128,3,5,5,5,1,0,32,32,64,128, + 128,4,5,5,5,0,0,96,144,144,144,96,2,5,5,3, + 0,0,64,192,64,64,64,5,5,5,6,0,0,112,136,48, + 64,248,5,5,5,6,0,0,240,8,112,8,240,5,5,5, + 6,0,0,48,80,144,248,16,5,5,5,6,0,0,248,128, + 240,8,240,5,5,5,6,0,0,120,128,240,136,112,5,5, + 5,6,0,0,248,8,16,32,64,5,5,5,6,0,0,112, + 136,112,136,112,5,5,5,6,0,0,112,136,120,8,240,1, + 3,3,2,0,1,128,0,128,1,4,4,2,0,0,128,0, + 128,128,5,5,5,6,0,0,24,96,128,96,24,5,3,3, + 6,0,1,248,0,248,5,5,5,6,0,0,192,48,8,48, + 192,5,7,7,6,0,255,112,136,16,32,32,0,32,7,7, + 7,8,0,255,124,130,154,170,190,128,124,5,5,5,6,0, + 0,112,136,136,248,136,5,5,5,6,0,0,240,136,240,136, + 240,5,5,5,6,0,0,112,136,128,136,112,5,5,5,6, + 0,0,240,136,136,136,240,5,5,5,6,0,0,248,128,240, + 128,248,5,5,5,6,0,0,248,128,240,128,128,5,5,5, + 6,0,0,112,128,184,136,112,5,5,5,6,0,0,136,136, + 248,136,136,3,5,5,4,0,0,224,64,64,64,224,5,5, + 5,6,0,0,8,8,8,136,112,5,5,5,6,0,0,136, + 144,224,144,136,5,5,5,6,0,0,128,128,128,128,248,5, + 5,5,6,0,0,136,216,168,136,136,5,5,5,6,0,0, + 136,200,168,152,136,5,5,5,6,0,0,112,136,136,136,112, + 5,5,5,6,0,0,240,136,136,240,128,5,5,5,6,0, + 0,112,136,136,152,120,5,5,5,6,0,0,240,136,136,240, + 136,5,5,5,6,0,0,120,128,112,8,240,5,5,5,6, + 0,0,248,32,32,32,32,5,5,5,6,0,0,136,136,136, + 136,112,5,5,5,6,0,0,136,136,136,80,32,5,5,5, + 6,0,0,136,168,168,168,80,5,5,5,6,0,0,136,80, + 32,80,136,5,5,5,6,0,0,136,136,80,32,32,5,5, + 5,6,0,0,248,16,32,64,248,2,6,6,3,0,255,192, + 128,128,128,128,192,3,5,5,4,0,0,128,128,64,32,32, + 2,6,6,3,0,255,192,64,64,64,64,192,3,2,2,4, + 0,4,64,160,5,1,1,6,0,255,248,2,2,2,3,0, + 4,128,64,4,4,4,5,0,0,112,144,144,240,4,5,5, + 5,0,0,128,224,144,144,224,4,4,4,5,0,0,112,128, + 128,112,4,5,5,5,0,0,16,112,144,144,112,4,4,4, + 5,0,0,96,144,224,112,4,5,5,5,0,0,48,64,240, + 64,64,4,6,6,5,0,254,112,144,144,240,16,224,4,5, + 5,5,0,0,128,224,144,144,144,1,5,5,2,0,0,128, + 0,128,128,128,2,7,7,3,0,254,64,0,64,64,64,64, + 128,4,5,5,5,0,0,128,144,160,224,144,1,5,5,2, + 0,0,128,128,128,128,128,6,4,4,7,0,0,168,212,148, + 148,4,4,4,5,0,0,160,208,144,144,4,4,4,5,0, + 0,96,144,144,96,4,6,6,5,0,254,224,144,144,224,128, + 128,4,6,6,5,0,254,112,144,144,112,16,16,4,4,4, + 5,0,0,176,192,128,128,4,4,4,5,0,0,112,192,48, + 224,4,5,5,5,0,0,64,240,64,64,48,4,4,4,5, + 0,0,144,144,144,112,5,4,4,6,0,0,136,136,80,32, + 5,4,4,6,0,0,136,136,168,80,4,4,4,5,0,0, + 144,96,96,144,4,6,6,5,0,254,144,144,144,112,16,224, + 4,4,4,5,0,0,240,32,64,240,3,6,6,4,0,255, + 96,64,128,128,64,96,1,6,6,2,0,255,128,128,128,128, + 128,128,3,6,6,4,0,255,192,64,32,32,64,192,5,3, + 3,6,0,1,64,168,16,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,1,7,7,2,0,255,128, + 0,128,128,128,128,128,3,5,5,4,0,0,64,224,128,224, + 64,5,6,6,6,0,0,112,136,72,224,64,248,5,5,5, + 6,0,0,136,112,80,112,136,5,6,6,6,0,0,136,80, + 32,112,112,32,1,5,5,2,0,0,128,128,0,128,128,4, + 7,7,5,0,254,112,128,96,144,96,16,224,3,1,1,4, + 0,6,160,7,7,7,8,0,255,124,130,186,162,186,130,124, + 3,4,4,4,0,4,96,224,160,96,6,5,5,7,0,0, + 36,72,144,72,36,5,3,3,6,0,2,248,8,8,3,1, + 1,5,1,2,224,7,7,7,8,0,255,124,130,186,178,170, + 130,124,5,1,1,6,0,6,248,4,4,4,5,0,3,96, + 144,144,96,3,5,5,5,1,0,64,224,64,0,224,4,5, + 5,5,0,2,96,144,32,64,240,4,5,5,5,0,2,224, + 16,96,16,224,2,2,2,3,0,5,64,128,5,6,6,6, + 0,254,136,136,216,168,128,128,6,7,7,7,0,254,124,232, + 232,104,40,40,40,3,3,3,5,1,1,224,224,224,3,3, + 3,5,1,254,64,32,224,2,5,5,3,0,2,64,192,64, + 64,64,4,5,5,5,0,2,96,144,144,144,96,6,5,5, + 7,0,0,144,72,36,72,144,7,8,8,8,0,254,66,196, + 72,80,38,74,142,2,7,8,8,8,0,254,66,196,72,80, + 44,66,132,14,7,8,8,8,0,254,226,68,40,208,38,74, + 142,2,5,7,7,6,0,255,32,0,32,32,72,136,112,5, + 8,8,6,0,0,64,32,0,112,136,136,248,136,5,8,8, + 6,0,0,16,32,0,112,136,136,248,136,5,8,8,6,0, + 0,32,80,0,112,136,136,248,136,5,8,8,6,0,0,40, + 80,0,112,136,136,248,136,5,7,7,6,0,0,80,0,112, + 136,136,248,136,5,8,8,6,0,0,32,80,32,112,136,136, + 248,136,9,5,10,10,0,0,63,128,72,0,143,0,248,0, + 143,128,5,7,7,6,0,254,112,136,128,136,112,16,112,5, + 8,8,6,0,0,64,32,0,248,128,240,128,248,5,8,8, + 6,0,0,16,32,0,248,128,240,128,248,5,8,8,6,0, + 0,32,80,0,248,128,240,128,248,5,7,7,6,0,0,80, + 0,248,128,240,128,248,3,8,8,4,0,0,128,64,0,224, + 64,64,64,224,3,8,8,4,0,0,32,64,0,224,64,64, + 64,224,3,8,8,4,0,0,64,160,0,224,64,64,64,224, + 3,7,7,4,0,0,160,0,224,64,64,64,224,5,5,5, + 6,0,0,112,72,232,72,112,5,8,8,6,0,0,40,80, + 0,136,200,168,152,136,5,8,8,6,0,0,64,32,0,112, + 136,136,136,112,5,8,8,6,0,0,16,32,0,112,136,136, + 136,112,5,8,8,6,0,0,32,80,0,112,136,136,136,112, + 5,8,8,6,0,0,64,168,16,112,136,136,136,112,5,7, + 7,6,0,0,80,0,112,136,136,136,112,3,3,3,4,0, + 1,160,64,160,5,5,5,6,0,0,120,152,168,200,240,5, + 8,8,6,0,0,64,32,0,136,136,136,136,112,5,8,8, + 6,0,0,16,32,0,136,136,136,136,112,5,8,8,6,0, + 0,32,80,0,136,136,136,136,112,5,7,7,6,0,0,80, + 0,136,136,136,136,112,5,8,8,6,0,0,16,32,0,136, + 136,80,32,32,5,5,5,6,0,0,128,240,136,240,128,4, + 5,5,5,0,0,96,144,160,144,160,4,7,7,5,0,0, + 64,32,0,112,144,144,240,4,7,7,5,0,0,32,64,0, + 112,144,144,240,4,7,7,5,0,0,32,80,0,112,144,144, + 240,4,7,7,5,0,0,80,160,0,112,144,144,240,4,6, + 6,5,0,0,80,0,112,144,144,240,4,7,7,5,0,0, + 32,80,32,112,144,144,240,7,5,5,8,0,0,236,18,126, + 144,238,4,6,6,5,0,254,112,128,128,112,32,96,4,7, + 7,5,0,0,64,32,0,96,144,224,112,4,7,7,5,0, + 0,32,64,0,96,144,224,112,4,7,7,5,0,0,32,80, + 0,96,144,224,112,4,6,6,5,0,0,80,0,96,144,224, + 112,2,7,7,3,0,0,128,64,0,64,64,64,64,2,7, + 7,3,0,0,64,128,0,128,128,128,128,3,7,7,4,0, + 0,64,160,0,64,64,64,64,3,6,6,4,0,0,160,0, + 64,64,64,64,4,6,6,5,0,0,64,32,112,144,144,96, + 4,7,7,5,0,0,80,160,0,160,208,144,144,4,7,7, + 5,0,0,64,32,0,96,144,144,96,4,7,7,5,0,0, + 32,64,0,96,144,144,96,4,7,7,5,0,0,96,144,0, + 96,144,144,96,4,7,7,5,0,0,80,160,0,96,144,144, + 96,4,6,6,5,0,0,80,0,96,144,144,96,5,5,5, + 6,0,0,32,0,248,0,32,4,4,4,5,0,0,112,176, + 208,224,4,7,7,5,0,0,64,32,0,144,144,144,112,4, + 7,7,5,0,0,32,64,0,144,144,144,112,4,7,7,5, + 0,0,32,80,0,144,144,144,112,4,6,6,5,0,0,80, + 0,144,144,144,112,4,8,8,5,0,254,32,64,0,144,144, + 112,16,224,4,6,6,5,0,254,128,224,144,144,224,128,4, + 7,7,5,0,254,80,0,144,144,112,16,224}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikitan[180] U8G_SECTION(".progmem.u8g_font_chikitan") = { + 0,9,10,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,3,3,5,1,1,160,64,160,5,5,5,6,0,0, + 32,32,248,32,32,2,2,2,3,0,255,64,128,5,1,1, + 6,0,2,248,1,1,1,2,0,0,128,3,5,5,5,1, + 0,32,32,64,128,128,4,5,5,5,0,0,96,144,144,144, + 96,2,5,5,3,0,0,64,192,64,64,64,5,5,5,6, + 0,0,112,136,48,64,248,5,5,5,6,0,0,240,8,112, + 8,240,5,5,5,6,0,0,48,80,144,248,16,5,5,5, + 6,0,0,248,128,240,8,240,5,5,5,6,0,0,120,128, + 240,136,112,5,5,5,6,0,0,248,8,16,32,64,5,5, + 5,6,0,0,112,136,112,136,112,5,5,5,6,0,0,112, + 136,120,8,240}; +/* + Fontname: -FreeType-Chikita-Medium-R-Normal--8-80-72-72-P-47-ISO10646-1 + Copyright: Copyright southernmedia 2008 Chikita is based on pixelspace 5x5 by David Chiu (http://fontstruct.com/fontstructors/skyleth) + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 7 h= 7 x= 1 y= 4 dx= 8 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 9 h=10 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_chikitar[1032] U8G_SECTION(".progmem.u8g_font_chikitar") = { + 0,9,10,0,254,5,1,107,2,195,32,127,254,6,254,6, + 254,0,0,0,2,0,0,1,7,7,2,0,255,128,128,128, + 128,128,0,128,3,2,2,4,0,4,160,160,5,5,5,6, + 0,0,80,248,80,248,80,5,7,7,6,0,255,32,120,160, + 112,40,240,32,5,5,5,6,0,0,200,208,32,88,152,5, + 5,5,6,0,0,32,80,104,144,104,1,2,2,2,0,4, + 128,128,3,7,7,4,0,255,32,64,128,128,128,64,32,3, + 7,7,4,0,255,128,64,32,32,32,64,128,3,3,3,5, + 1,1,160,64,160,5,5,5,6,0,0,32,32,248,32,32, + 2,2,2,3,0,255,64,128,5,1,1,6,0,2,248,1, + 1,1,2,0,0,128,3,5,5,5,1,0,32,32,64,128, + 128,4,5,5,5,0,0,96,144,144,144,96,2,5,5,3, + 0,0,64,192,64,64,64,5,5,5,6,0,0,112,136,48, + 64,248,5,5,5,6,0,0,240,8,112,8,240,5,5,5, + 6,0,0,48,80,144,248,16,5,5,5,6,0,0,248,128, + 240,8,240,5,5,5,6,0,0,120,128,240,136,112,5,5, + 5,6,0,0,248,8,16,32,64,5,5,5,6,0,0,112, + 136,112,136,112,5,5,5,6,0,0,112,136,120,8,240,1, + 3,3,2,0,1,128,0,128,1,4,4,2,0,0,128,0, + 128,128,5,5,5,6,0,0,24,96,128,96,24,5,3,3, + 6,0,1,248,0,248,5,5,5,6,0,0,192,48,8,48, + 192,5,7,7,6,0,255,112,136,16,32,32,0,32,7,7, + 7,8,0,255,124,130,154,170,190,128,124,5,5,5,6,0, + 0,112,136,136,248,136,5,5,5,6,0,0,240,136,240,136, + 240,5,5,5,6,0,0,112,136,128,136,112,5,5,5,6, + 0,0,240,136,136,136,240,5,5,5,6,0,0,248,128,240, + 128,248,5,5,5,6,0,0,248,128,240,128,128,5,5,5, + 6,0,0,112,128,184,136,112,5,5,5,6,0,0,136,136, + 248,136,136,3,5,5,4,0,0,224,64,64,64,224,5,5, + 5,6,0,0,8,8,8,136,112,5,5,5,6,0,0,136, + 144,224,144,136,5,5,5,6,0,0,128,128,128,128,248,5, + 5,5,6,0,0,136,216,168,136,136,5,5,5,6,0,0, + 136,200,168,152,136,5,5,5,6,0,0,112,136,136,136,112, + 5,5,5,6,0,0,240,136,136,240,128,5,5,5,6,0, + 0,112,136,136,152,120,5,5,5,6,0,0,240,136,136,240, + 136,5,5,5,6,0,0,120,128,112,8,240,5,5,5,6, + 0,0,248,32,32,32,32,5,5,5,6,0,0,136,136,136, + 136,112,5,5,5,6,0,0,136,136,136,80,32,5,5,5, + 6,0,0,136,168,168,168,80,5,5,5,6,0,0,136,80, + 32,80,136,5,5,5,6,0,0,136,136,80,32,32,5,5, + 5,6,0,0,248,16,32,64,248,2,6,6,3,0,255,192, + 128,128,128,128,192,3,5,5,4,0,0,128,128,64,32,32, + 2,6,6,3,0,255,192,64,64,64,64,192,3,2,2,4, + 0,4,64,160,5,1,1,6,0,255,248,2,2,2,3,0, + 4,128,64,4,4,4,5,0,0,112,144,144,240,4,5,5, + 5,0,0,128,224,144,144,224,4,4,4,5,0,0,112,128, + 128,112,4,5,5,5,0,0,16,112,144,144,112,4,4,4, + 5,0,0,96,144,224,112,4,5,5,5,0,0,48,64,240, + 64,64,4,6,6,5,0,254,112,144,144,240,16,224,4,5, + 5,5,0,0,128,224,144,144,144,1,5,5,2,0,0,128, + 0,128,128,128,2,7,7,3,0,254,64,0,64,64,64,64, + 128,4,5,5,5,0,0,128,144,160,224,144,1,5,5,2, + 0,0,128,128,128,128,128,6,4,4,7,0,0,168,212,148, + 148,4,4,4,5,0,0,160,208,144,144,4,4,4,5,0, + 0,96,144,144,96,4,6,6,5,0,254,224,144,144,224,128, + 128,4,6,6,5,0,254,112,144,144,112,16,16,4,4,4, + 5,0,0,176,192,128,128,4,4,4,5,0,0,112,192,48, + 224,4,5,5,5,0,0,64,240,64,64,48,4,4,4,5, + 0,0,144,144,144,112,5,4,4,6,0,0,136,136,80,32, + 5,4,4,6,0,0,136,136,168,80,4,4,4,5,0,0, + 144,96,96,144,4,6,6,5,0,254,144,144,144,112,16,224, + 4,4,4,5,0,0,240,32,64,240,3,6,6,4,0,255, + 96,64,128,128,64,96,1,6,6,2,0,255,128,128,128,128, + 128,128,3,6,6,4,0,255,192,64,32,32,64,192,5,3, + 3,6,0,1,64,168,16,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 7 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w=12 h=16 x=-3 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB08[2425] U8G_SECTION(".progmem.u8g_font_courB08") = { + 0,12,16,253,252,6,1,146,3,13,32,255,254,9,254,7, + 254,0,0,0,6,0,1,2,6,6,6,1,0,192,192,192, + 192,0,192,3,3,3,6,1,3,160,160,160,5,8,8,6, + 0,255,80,80,248,80,80,248,80,80,5,9,9,6,0,255, + 32,120,200,240,120,24,216,240,32,5,7,7,6,0,0,224, + 168,240,32,120,168,56,6,6,6,6,255,0,56,96,48,124, + 216,124,1,3,3,6,2,3,128,128,128,3,8,8,6,1, + 255,32,64,192,192,192,192,64,32,3,8,8,6,1,255,128, + 64,96,96,96,96,64,128,4,4,4,6,0,3,32,240,96, + 144,5,5,5,6,0,1,32,32,248,32,32,3,3,3,6, + 1,254,96,64,128,5,1,1,6,0,3,248,2,1,1,6, + 1,0,192,4,8,8,6,1,255,16,16,32,32,64,64,128, + 128,5,7,7,6,0,0,112,216,216,216,216,216,112,6,7, + 7,6,0,0,48,240,48,48,48,48,252,5,7,7,6,0, + 0,112,216,24,48,96,216,248,5,7,7,6,0,0,112,216, + 24,112,24,216,112,6,7,7,6,0,0,24,56,88,216,252, + 24,24,5,7,7,6,0,0,248,192,240,216,24,152,240,5, + 7,7,6,0,0,112,216,192,240,216,216,112,5,7,7,6, + 0,0,248,216,24,48,48,96,96,5,7,7,6,0,0,112, + 216,216,112,216,216,112,5,7,7,6,0,0,112,216,216,120, + 24,216,112,2,4,4,6,1,0,192,0,0,192,3,6,6, + 6,0,254,96,0,0,96,64,128,4,5,5,6,0,1,48, + 96,192,96,48,4,3,3,6,0,2,240,0,240,4,5,5, + 6,1,1,192,96,48,96,192,5,6,6,6,0,0,112,152, + 48,96,0,96,6,8,8,6,0,255,112,200,152,168,168,156, + 192,112,7,6,6,6,255,0,120,56,40,124,108,238,6,6, + 6,6,255,0,248,108,120,108,108,248,5,6,6,6,0,0, + 120,216,192,192,216,112,6,6,6,6,255,0,248,108,108,108, + 108,248,6,6,6,6,255,0,252,96,120,96,108,252,6,6, + 6,6,255,0,252,96,120,96,96,240,5,6,6,6,0,0, + 112,216,192,248,216,120,7,6,6,6,255,0,238,108,124,108, + 108,238,4,6,6,6,0,0,240,96,96,96,96,240,6,6, + 6,6,255,0,60,24,24,216,216,112,7,6,6,6,255,0, + 236,104,112,120,108,246,6,6,6,6,255,0,240,96,96,96, + 108,252,6,6,6,6,255,0,196,108,108,124,84,212,7,6, + 6,6,255,0,238,116,116,108,108,228,5,6,6,6,0,0, + 112,216,216,216,216,112,6,6,6,6,255,0,248,108,108,120, + 96,240,5,7,7,6,0,255,112,216,216,216,216,112,24,7, + 6,6,6,255,0,248,108,108,120,108,246,5,6,6,6,0, + 0,120,200,240,56,152,240,6,6,6,6,255,0,252,180,48, + 48,48,120,7,6,6,6,255,0,238,108,108,108,108,56,7, + 6,6,6,255,0,238,108,40,56,56,16,7,6,6,6,255, + 0,214,84,84,124,56,40,6,6,6,6,0,0,204,120,48, + 48,120,204,7,6,6,6,255,0,230,102,60,24,24,60,5, + 6,6,6,0,0,248,216,48,96,216,248,3,8,8,6,1, + 255,224,192,192,192,192,192,192,224,4,8,8,6,0,255,128, + 128,64,64,32,32,16,16,3,8,8,6,1,255,224,96,96, + 96,96,96,96,224,5,3,3,6,0,4,32,112,216,6,1, + 1,6,0,254,252,2,2,2,6,2,6,128,64,6,5,5, + 6,0,0,112,216,120,216,252,6,7,7,6,255,0,224,96, + 120,108,108,108,248,5,5,5,6,0,0,112,216,192,216,112, + 6,7,7,6,0,0,56,24,120,216,216,216,124,5,5,5, + 6,0,0,112,216,248,192,120,5,7,7,6,0,0,56,96, + 248,96,96,96,248,6,7,7,6,0,254,108,216,216,216,120, + 24,240,6,7,7,6,255,0,224,96,120,108,108,108,108,6, + 7,7,6,0,0,48,0,240,48,48,48,252,4,9,9,6, + 0,254,48,0,240,48,48,48,48,48,224,7,7,7,6,255, + 0,224,96,108,120,112,120,110,6,7,7,6,0,0,240,48, + 48,48,48,48,252,6,5,5,6,255,0,248,124,84,84,84, + 6,5,5,6,255,0,216,108,108,108,108,5,5,5,6,0, + 0,112,216,216,216,112,6,7,7,6,255,254,248,108,108,108, + 120,96,240,6,7,7,6,0,254,108,216,216,216,120,24,60, + 6,5,5,6,0,0,220,116,96,96,240,6,5,5,6,0, + 0,120,224,120,28,248,6,7,7,6,0,0,96,96,248,96, + 96,108,56,7,5,5,6,255,0,236,108,108,108,62,6,5, + 5,6,255,0,236,108,56,56,16,7,5,5,6,255,0,214, + 84,124,60,40,6,5,5,6,0,0,236,120,48,120,220,7, + 7,7,6,255,254,238,108,108,40,56,48,224,5,5,5,6, + 0,0,248,176,96,216,248,4,8,8,6,1,255,48,96,96, + 192,96,96,96,48,1,7,7,6,2,255,128,128,128,128,128, + 128,128,4,8,8,6,0,255,192,96,96,48,96,96,96,192, + 5,2,2,6,0,3,104,176,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,6,0,1,2, + 7,7,6,1,254,192,0,192,192,192,192,192,5,8,8,6, + 0,255,32,32,120,200,192,120,32,32,6,7,7,6,0,0, + 56,104,32,248,32,100,248,5,5,5,6,0,1,136,112,80, + 112,136,6,7,7,6,0,0,204,72,252,48,252,48,120,1, + 9,9,6,2,254,128,128,128,128,0,128,128,128,128,5,8, + 8,6,0,255,120,72,96,144,72,48,144,240,3,1,1,6, + 1,5,160,6,7,7,6,0,0,48,72,180,164,180,72,48, + 4,5,5,6,1,2,224,16,208,0,240,7,5,5,6,255, + 0,54,108,216,108,54,5,3,3,6,0,2,248,8,8,5, + 1,1,6,0,3,248,7,7,7,6,0,0,56,68,186,178, + 170,68,56,4,1,1,6,0,5,240,4,3,3,6,0,4, + 96,144,96,5,6,6,6,0,0,32,32,248,32,0,248,3, + 4,4,6,1,3,96,160,64,224,3,4,4,6,1,3,224, + 64,32,192,2,2,2,6,2,5,64,128,7,7,7,6,255, + 254,236,108,108,108,126,64,64,6,8,8,6,0,255,124,168, + 168,104,40,40,40,108,2,1,1,6,1,3,192,3,3,3, + 6,1,254,64,32,192,3,4,4,6,1,3,192,64,64,224, + 4,5,5,6,1,2,96,144,96,0,240,7,5,5,6,255, + 0,216,108,54,108,216,7,7,7,6,255,0,192,68,72,244, + 44,94,4,7,7,7,6,255,0,192,68,72,246,42,68,14, + 7,7,7,6,255,0,224,68,40,212,44,94,4,5,7,7, + 6,0,254,48,0,48,48,96,200,112,7,9,9,6,255,0, + 32,16,0,120,56,40,124,108,238,7,9,9,6,255,0,16, + 32,0,120,56,40,124,108,238,7,9,9,6,255,0,16,40, + 0,120,56,40,124,108,238,7,9,9,6,255,0,52,72,0, + 120,56,40,124,108,238,7,8,8,6,255,0,40,0,120,56, + 40,124,108,238,7,9,9,6,255,0,48,72,48,120,56,40, + 124,108,238,7,6,6,6,255,0,126,58,108,120,218,222,5, + 8,8,6,0,254,120,216,192,192,216,112,16,96,6,9,9, + 6,255,0,32,16,0,252,100,120,96,108,252,6,9,9,6, + 255,0,16,32,0,252,100,120,96,108,252,6,9,9,6,255, + 0,32,80,0,252,100,120,96,108,252,6,8,8,6,255,0, + 80,0,252,100,120,96,108,252,4,9,9,6,0,0,64,32, + 0,240,96,96,96,96,240,4,9,9,6,0,0,32,64,0, + 240,96,96,96,96,240,4,9,9,6,0,0,64,160,0,240, + 96,96,96,96,240,4,8,8,6,0,0,160,0,240,96,96, + 96,96,240,6,6,6,6,255,0,248,108,244,100,108,248,7, + 9,9,6,255,0,52,72,0,238,100,116,124,108,236,5,9, + 9,6,0,0,64,32,0,112,216,216,216,216,112,5,9,9, + 6,0,0,32,64,0,112,216,216,216,216,112,5,9,9,6, + 0,0,32,80,0,112,216,216,216,216,112,5,9,9,6,0, + 0,104,144,0,112,216,216,216,216,112,5,8,8,6,0,0, + 80,0,112,216,216,216,216,112,5,5,5,6,0,1,136,80, + 32,80,136,7,6,6,6,255,0,58,108,124,108,108,184,7, + 9,9,6,255,0,32,16,0,238,108,108,108,108,56,7,9, + 9,6,255,0,8,16,0,238,108,108,108,108,56,7,9,9, + 6,255,0,16,40,0,238,108,108,108,108,56,7,8,8,6, + 255,0,40,0,238,108,108,108,108,56,7,9,9,6,255,0, + 4,8,0,230,102,60,24,24,60,6,6,6,6,255,0,224, + 120,108,108,120,224,7,6,6,6,255,0,56,104,124,102,102, + 236,6,8,8,6,0,0,32,16,0,112,152,120,216,252,6, + 8,8,6,0,0,16,32,0,112,152,120,216,252,6,8,8, + 6,0,0,32,80,0,112,152,120,216,252,6,8,8,6,0, + 0,104,144,0,112,152,120,216,252,6,7,7,6,0,0,80, + 0,112,152,120,216,252,6,9,9,6,0,0,48,72,48,0, + 112,152,120,216,252,6,5,5,6,255,0,108,180,124,176,220, + 5,7,7,6,0,254,112,216,192,216,112,16,96,5,8,8, + 6,0,0,64,32,0,112,216,248,192,120,5,8,8,6,0, + 0,32,64,0,112,216,248,192,120,5,8,8,6,0,0,32, + 80,0,112,216,248,192,120,5,7,7,6,0,0,80,0,112, + 216,248,192,120,6,8,8,6,0,0,32,16,0,112,48,48, + 48,252,6,8,8,6,0,0,16,32,0,112,48,48,48,252, + 6,8,8,6,0,0,32,80,0,112,48,48,48,252,6,7, + 7,6,0,0,80,0,112,48,48,48,252,5,8,8,6,0, + 0,208,96,176,120,216,216,216,112,7,8,8,6,255,0,52, + 72,0,216,108,108,108,110,5,8,8,6,0,0,64,32,0, + 112,216,216,216,112,5,8,8,6,0,0,32,64,0,112,216, + 216,216,112,5,8,8,6,0,0,32,80,0,112,216,216,216, + 112,5,8,8,6,0,0,104,144,0,112,216,216,216,112,5, + 7,7,6,0,0,80,0,112,216,216,216,112,5,5,5,6, + 0,1,32,0,248,0,32,5,7,7,6,0,255,8,112,216, + 248,216,112,128,7,8,8,6,255,0,32,16,0,236,108,108, + 108,62,7,8,8,6,255,0,16,32,0,236,108,108,108,62, + 7,8,8,6,255,0,16,40,0,236,108,108,108,62,7,7, + 7,6,255,0,40,0,236,108,108,108,62,7,10,10,6,255, + 254,8,16,0,238,108,108,40,56,48,240,6,9,9,6,255, + 254,224,96,120,108,108,108,120,96,240,7,9,9,6,255,254, + 40,0,238,108,108,40,56,48,240}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w=12 h=16 x=-3 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB08r[1145] U8G_SECTION(".progmem.u8g_font_courB08r") = { + 0,12,16,253,252,6,1,146,3,13,32,127,254,8,254,7, + 254,0,0,0,6,0,1,2,6,6,6,1,0,192,192,192, + 192,0,192,3,3,3,6,1,3,160,160,160,5,8,8,6, + 0,255,80,80,248,80,80,248,80,80,5,9,9,6,0,255, + 32,120,200,240,120,24,216,240,32,5,7,7,6,0,0,224, + 168,240,32,120,168,56,6,6,6,6,255,0,56,96,48,124, + 216,124,1,3,3,6,2,3,128,128,128,3,8,8,6,1, + 255,32,64,192,192,192,192,64,32,3,8,8,6,1,255,128, + 64,96,96,96,96,64,128,4,4,4,6,0,3,32,240,96, + 144,5,5,5,6,0,1,32,32,248,32,32,3,3,3,6, + 1,254,96,64,128,5,1,1,6,0,3,248,2,1,1,6, + 1,0,192,4,8,8,6,1,255,16,16,32,32,64,64,128, + 128,5,7,7,6,0,0,112,216,216,216,216,216,112,6,7, + 7,6,0,0,48,240,48,48,48,48,252,5,7,7,6,0, + 0,112,216,24,48,96,216,248,5,7,7,6,0,0,112,216, + 24,112,24,216,112,6,7,7,6,0,0,24,56,88,216,252, + 24,24,5,7,7,6,0,0,248,192,240,216,24,152,240,5, + 7,7,6,0,0,112,216,192,240,216,216,112,5,7,7,6, + 0,0,248,216,24,48,48,96,96,5,7,7,6,0,0,112, + 216,216,112,216,216,112,5,7,7,6,0,0,112,216,216,120, + 24,216,112,2,4,4,6,1,0,192,0,0,192,3,6,6, + 6,0,254,96,0,0,96,64,128,4,5,5,6,0,1,48, + 96,192,96,48,4,3,3,6,0,2,240,0,240,4,5,5, + 6,1,1,192,96,48,96,192,5,6,6,6,0,0,112,152, + 48,96,0,96,6,8,8,6,0,255,112,200,152,168,168,156, + 192,112,7,6,6,6,255,0,120,56,40,124,108,238,6,6, + 6,6,255,0,248,108,120,108,108,248,5,6,6,6,0,0, + 120,216,192,192,216,112,6,6,6,6,255,0,248,108,108,108, + 108,248,6,6,6,6,255,0,252,96,120,96,108,252,6,6, + 6,6,255,0,252,96,120,96,96,240,5,6,6,6,0,0, + 112,216,192,248,216,120,7,6,6,6,255,0,238,108,124,108, + 108,238,4,6,6,6,0,0,240,96,96,96,96,240,6,6, + 6,6,255,0,60,24,24,216,216,112,7,6,6,6,255,0, + 236,104,112,120,108,246,6,6,6,6,255,0,240,96,96,96, + 108,252,6,6,6,6,255,0,196,108,108,124,84,212,7,6, + 6,6,255,0,238,116,116,108,108,228,5,6,6,6,0,0, + 112,216,216,216,216,112,6,6,6,6,255,0,248,108,108,120, + 96,240,5,7,7,6,0,255,112,216,216,216,216,112,24,7, + 6,6,6,255,0,248,108,108,120,108,246,5,6,6,6,0, + 0,120,200,240,56,152,240,6,6,6,6,255,0,252,180,48, + 48,48,120,7,6,6,6,255,0,238,108,108,108,108,56,7, + 6,6,6,255,0,238,108,40,56,56,16,7,6,6,6,255, + 0,214,84,84,124,56,40,6,6,6,6,0,0,204,120,48, + 48,120,204,7,6,6,6,255,0,230,102,60,24,24,60,5, + 6,6,6,0,0,248,216,48,96,216,248,3,8,8,6,1, + 255,224,192,192,192,192,192,192,224,4,8,8,6,0,255,128, + 128,64,64,32,32,16,16,3,8,8,6,1,255,224,96,96, + 96,96,96,96,224,5,3,3,6,0,4,32,112,216,6,1, + 1,6,0,254,252,2,2,2,6,2,6,128,64,6,5,5, + 6,0,0,112,216,120,216,252,6,7,7,6,255,0,224,96, + 120,108,108,108,248,5,5,5,6,0,0,112,216,192,216,112, + 6,7,7,6,0,0,56,24,120,216,216,216,124,5,5,5, + 6,0,0,112,216,248,192,120,5,7,7,6,0,0,56,96, + 248,96,96,96,248,6,7,7,6,0,254,108,216,216,216,120, + 24,240,6,7,7,6,255,0,224,96,120,108,108,108,108,6, + 7,7,6,0,0,48,0,240,48,48,48,252,4,9,9,6, + 0,254,48,0,240,48,48,48,48,48,224,7,7,7,6,255, + 0,224,96,108,120,112,120,110,6,7,7,6,0,0,240,48, + 48,48,48,48,252,6,5,5,6,255,0,248,124,84,84,84, + 6,5,5,6,255,0,216,108,108,108,108,5,5,5,6,0, + 0,112,216,216,216,112,6,7,7,6,255,254,248,108,108,108, + 120,96,240,6,7,7,6,0,254,108,216,216,216,120,24,60, + 6,5,5,6,0,0,220,116,96,96,240,6,5,5,6,0, + 0,120,224,120,28,248,6,7,7,6,0,0,96,96,248,96, + 96,108,56,7,5,5,6,255,0,236,108,108,108,62,6,5, + 5,6,255,0,236,108,56,56,16,7,5,5,6,255,0,214, + 84,124,60,40,6,5,5,6,0,0,236,120,48,120,220,7, + 7,7,6,255,254,238,108,108,40,56,48,224,5,5,5,6, + 0,0,248,176,96,216,248,4,8,8,6,1,255,48,96,96, + 192,96,96,96,48,1,7,7,6,2,255,128,128,128,128,128, + 128,128,4,8,8,6,0,255,192,96,96,48,96,96,96,192, + 5,2,2,6,0,3,104,176,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 3 y= 8 dx= 9 dy= 0 ascent=12 len=26 + Font Bounding box w=13 h=21 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB10[3355] U8G_SECTION(".progmem.u8g_font_courB10") = { + 0,13,21,254,250,9,1,222,4,32,32,255,253,12,252,10, + 253,0,0,0,9,0,1,2,9,9,9,3,0,192,192,192, + 192,192,128,0,192,192,5,4,4,9,2,6,216,216,216,72, + 7,11,11,9,1,255,40,40,40,254,40,40,254,40,40,40, + 40,6,12,12,9,1,255,48,48,124,204,192,240,60,12,204, + 248,48,48,7,10,10,9,1,0,96,144,146,108,16,96,152, + 36,36,24,7,8,8,9,1,0,56,96,96,48,122,204,204, + 118,2,4,4,9,3,5,192,192,192,64,4,11,11,9,2, + 254,48,96,96,192,192,192,192,192,96,96,48,4,11,11,9, + 2,254,192,96,96,48,48,48,48,48,96,96,192,5,5,5, + 9,2,4,32,168,248,112,216,7,7,7,9,1,1,16,16, + 16,254,16,16,16,3,4,4,9,2,254,96,96,192,128,6, + 1,1,9,1,4,252,2,2,2,9,3,0,192,192,7,12, + 12,9,0,254,6,6,12,12,24,24,48,48,96,96,192,192, + 7,10,10,9,1,0,56,108,198,198,198,198,198,198,108,56, + 6,10,10,9,2,0,48,240,48,48,48,48,48,48,48,252, + 6,10,10,9,1,0,120,204,204,12,12,24,48,96,192,252, + 6,10,10,9,1,0,120,204,12,12,56,12,12,12,204,120, + 7,10,10,9,1,0,12,28,60,44,76,204,140,254,12,30, + 6,10,10,9,1,0,252,192,192,248,204,12,12,12,204,120, + 6,10,10,9,1,0,60,96,192,216,236,204,204,204,204,120, + 6,10,10,9,1,0,252,140,12,24,24,24,24,48,48,48, + 6,10,10,9,1,0,120,204,204,204,120,204,204,204,204,120, + 6,10,10,9,1,0,120,204,204,204,204,204,124,12,24,240, + 2,7,7,9,3,0,192,192,0,0,0,192,192,3,9,9, + 9,2,254,96,96,0,0,0,96,96,192,128,8,7,7,9, + 0,1,7,28,112,192,112,28,7,7,4,4,9,1,2,254, + 0,0,254,8,7,7,9,1,1,224,56,14,3,14,56,224, + 6,9,9,9,1,0,248,204,140,12,56,48,0,48,48,7, + 9,9,9,1,0,120,196,156,180,164,180,158,192,120,9,9, + 18,9,0,0,124,0,28,0,54,0,54,0,34,0,99,0, + 127,0,99,0,247,128,8,9,9,9,0,0,254,99,99,99, + 126,99,99,99,254,7,9,9,9,1,0,58,102,198,192,192, + 192,192,102,60,8,9,9,9,0,0,252,102,99,99,99,99, + 99,102,252,8,9,9,9,0,0,255,99,99,104,120,104,99, + 99,255,8,9,9,9,0,0,255,99,99,104,120,104,96,96, + 248,9,9,18,9,0,0,61,0,103,0,195,0,192,0,192, + 0,207,128,195,0,99,0,63,0,9,9,18,9,0,0,247, + 128,99,0,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,6,9,9,9,1,0,252,48,48,48,48,48,48,48,252, + 9,9,18,9,0,0,31,128,6,0,6,0,6,0,6,0, + 198,0,198,0,198,0,124,0,9,9,18,9,0,0,247,0, + 102,0,108,0,120,0,124,0,102,0,102,0,99,0,243,128, + 8,9,9,9,0,0,248,96,96,96,96,99,99,99,255,9, + 9,18,9,0,0,227,128,99,0,119,0,119,0,107,0,107, + 0,99,0,99,0,247,128,9,9,18,9,0,0,231,128,99, + 0,115,0,115,0,107,0,107,0,103,0,103,0,243,0,8, + 9,9,9,0,0,60,102,195,195,195,195,195,102,60,8,9, + 9,9,0,0,254,99,99,99,102,124,96,96,248,8,11,11, + 9,0,254,60,102,195,195,195,195,195,102,60,25,110,9,9, + 18,9,0,0,254,0,99,0,99,0,99,0,102,0,124,0, + 102,0,99,0,243,128,7,9,9,9,1,0,122,206,198,224, + 124,14,198,230,188,8,9,9,9,0,0,255,219,219,24,24, + 24,24,24,60,9,9,18,9,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,9,9,18,9, + 0,0,247,128,99,0,99,0,99,0,54,0,54,0,54,0, + 28,0,28,0,9,9,18,9,0,0,247,128,99,0,107,0, + 107,0,107,0,119,0,119,0,99,0,99,0,8,9,9,9, + 0,0,231,102,102,60,24,60,102,102,231,10,9,18,9,255, + 0,243,192,97,128,51,0,51,0,30,0,12,0,12,0,12, + 0,63,0,7,9,9,9,1,0,254,198,204,24,24,48,102, + 198,254,4,11,11,9,2,254,240,192,192,192,192,192,192,192, + 192,192,240,7,12,12,9,1,254,192,192,96,96,48,48,24, + 24,12,12,6,6,4,11,11,9,2,254,240,48,48,48,48, + 48,48,48,48,48,240,5,4,4,9,2,5,32,112,216,136, + 9,1,2,9,0,254,255,128,3,2,2,9,2,7,192,96, + 8,7,7,9,0,0,124,6,6,126,198,206,119,8,10,10, + 9,0,0,224,96,96,110,115,99,99,99,115,238,8,7,7, + 9,0,0,61,103,195,192,192,99,62,8,10,10,9,0,0, + 14,6,6,118,206,198,198,198,206,119,8,7,7,9,0,0, + 60,102,195,255,192,103,62,7,10,10,9,1,0,30,48,48, + 252,48,48,48,48,48,252,8,10,10,9,0,253,119,206,198, + 198,198,206,118,6,6,124,9,10,20,9,0,0,224,0,96, + 0,96,0,110,0,115,0,99,0,99,0,99,0,99,0,247, + 128,6,10,10,9,1,0,48,48,0,240,48,48,48,48,48, + 252,5,13,13,9,1,253,24,24,0,120,24,24,24,24,24, + 24,24,24,240,8,10,10,9,0,0,224,96,96,103,108,120, + 120,108,102,231,6,10,10,9,1,0,240,48,48,48,48,48, + 48,48,48,252,9,7,14,9,0,0,223,0,109,128,109,128, + 109,128,109,128,109,128,237,128,9,7,14,9,0,0,238,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,7,7,9, + 0,0,60,102,195,195,195,102,60,8,10,10,9,0,253,238, + 115,99,99,99,115,110,96,96,240,8,10,10,9,0,253,119, + 206,198,198,198,206,118,6,6,15,7,7,7,9,1,0,238, + 112,96,96,96,96,252,7,7,7,9,1,0,126,198,192,124, + 6,198,252,7,9,9,9,1,0,96,96,252,96,96,96,96, + 102,60,9,7,14,9,0,0,231,0,99,0,99,0,99,0, + 99,0,103,0,59,128,9,7,14,9,0,0,247,128,99,0, + 99,0,54,0,54,0,28,0,28,0,10,7,14,9,255,0, + 225,192,109,128,109,128,109,128,45,0,51,0,51,0,8,7, + 7,9,0,0,231,102,60,24,60,102,231,9,10,20,9,0, + 253,227,128,99,0,99,0,54,0,54,0,28,0,28,0,24, + 0,24,0,124,0,6,7,7,9,1,0,252,140,24,48,96, + 196,252,4,11,11,9,2,254,48,96,96,96,96,192,96,96, + 96,96,48,2,11,11,9,3,254,192,192,192,192,192,192,192, + 192,192,192,192,4,11,11,9,2,254,192,96,96,96,96,48, + 96,96,96,96,192,6,3,3,9,1,3,100,252,152,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,1,2,9,9,9,3,254,192,192,0,128,192, + 192,192,192,192,6,10,10,9,1,255,48,48,124,204,192,192, + 204,120,48,48,7,9,9,9,1,0,60,102,96,96,248,96, + 96,102,252,7,6,6,9,1,1,198,124,198,198,124,198,10, + 9,18,9,0,0,243,192,97,128,51,0,30,0,63,0,12, + 0,63,0,12,0,63,0,2,11,11,9,3,254,192,192,192, + 192,192,0,192,192,192,192,192,8,11,11,9,0,255,62,98, + 96,240,140,227,57,15,6,70,124,4,2,2,9,2,8,144, + 144,9,8,16,9,0,1,28,0,99,0,205,128,209,128,209, + 128,205,128,99,0,28,0,5,7,7,9,2,2,112,24,120, + 216,104,0,248,7,5,5,9,1,1,54,108,216,108,54,7, + 3,3,9,1,2,254,2,2,6,1,1,9,1,4,252,9, + 8,16,9,0,1,62,0,99,0,217,128,213,128,217,128,213, + 128,99,0,62,0,4,1,1,9,2,8,240,4,4,4,9, + 2,5,96,144,144,96,7,7,7,9,1,1,16,16,254,16, + 16,0,254,5,6,6,9,2,4,112,152,24,48,96,248,5, + 6,6,9,2,4,112,152,48,24,152,112,3,2,2,9,3, + 7,96,192,9,10,20,9,0,253,231,0,99,0,99,0,99, + 0,99,0,103,0,123,128,96,0,96,0,96,0,7,11,11, + 9,1,255,126,212,148,148,212,116,20,20,20,20,126,2,2, + 2,9,3,3,192,192,3,4,4,9,2,253,64,96,32,224, + 4,6,6,9,3,4,96,224,96,96,96,240,5,7,7,9, + 2,2,112,216,136,216,112,0,248,7,5,5,9,1,1,216, + 108,54,108,216,9,10,20,9,0,0,96,0,224,128,97,0, + 98,0,101,0,251,0,23,0,43,0,79,128,131,0,9,10, + 20,9,0,0,96,0,224,128,97,0,98,0,103,0,253,128, + 17,128,35,0,70,0,15,128,10,10,20,9,255,0,112,0, + 152,64,48,128,25,0,154,128,117,128,11,128,21,128,39,192, + 65,128,6,9,9,9,1,254,48,48,0,48,112,192,196,204, + 124,9,12,24,9,0,0,24,0,12,0,0,0,124,0,28, + 0,54,0,54,0,34,0,99,0,127,0,99,0,247,128,9, + 12,24,9,0,0,12,0,24,0,0,0,124,0,28,0,54, + 0,54,0,34,0,99,0,127,0,99,0,247,128,9,12,24, + 9,0,0,28,0,54,0,0,0,124,0,28,0,54,0,54, + 0,34,0,99,0,127,0,99,0,247,128,9,12,24,9,0, + 0,26,0,44,0,0,0,124,0,28,0,54,0,54,0,34, + 0,99,0,127,0,99,0,247,128,9,12,24,9,0,0,36, + 0,36,0,0,0,124,0,28,0,54,0,54,0,34,0,99, + 0,127,0,99,0,247,128,9,12,24,9,0,0,24,0,36, + 0,24,0,126,0,28,0,54,0,54,0,34,0,99,0,127, + 0,99,0,247,128,9,9,18,9,0,0,63,128,28,128,28, + 0,61,0,47,0,109,0,124,0,76,128,223,128,7,13,13, + 9,1,252,58,110,198,192,192,192,192,102,60,16,24,8,56, + 8,12,12,9,0,0,24,12,0,255,99,99,104,120,104,99, + 99,255,8,12,12,9,0,0,12,24,0,255,99,99,104,120, + 104,99,99,255,8,12,12,9,0,0,28,54,0,255,99,99, + 104,120,104,99,99,255,8,12,12,9,0,0,36,36,0,255, + 99,99,104,120,104,99,99,255,6,12,12,9,1,0,96,48, + 0,252,48,48,48,48,48,48,48,252,6,12,12,9,1,0, + 24,48,0,252,48,48,48,48,48,48,48,252,6,12,12,9, + 1,0,56,108,0,252,48,48,48,48,48,48,48,252,6,12, + 12,9,1,0,72,72,0,252,48,48,48,48,48,48,48,252, + 8,9,9,9,0,0,252,102,99,99,243,99,99,102,252,9, + 12,24,9,0,0,26,0,44,0,0,0,231,128,99,0,115, + 0,115,0,107,0,107,0,103,0,103,0,243,0,8,12,12, + 9,0,0,48,24,0,60,102,195,195,195,195,195,102,60,8, + 12,12,9,0,0,12,24,0,60,102,195,195,195,195,195,102, + 60,8,12,12,9,0,0,56,108,0,60,102,195,195,195,195, + 195,102,60,8,12,12,9,0,0,52,88,0,60,102,195,195, + 195,195,195,102,60,8,12,12,9,0,0,36,36,0,60,102, + 195,195,195,195,195,102,60,6,7,7,9,1,1,132,204,120, + 48,120,204,132,8,10,10,9,0,0,1,62,102,203,203,211, + 211,227,102,188,9,12,24,9,0,0,24,0,12,0,0,0, + 247,128,99,0,99,0,99,0,99,0,99,0,99,0,99,0, + 62,0,9,12,24,9,0,0,12,0,24,0,0,0,247,128, + 99,0,99,0,99,0,99,0,99,0,99,0,99,0,62,0, + 9,12,24,9,0,0,28,0,54,0,0,0,247,128,99,0, + 99,0,99,0,99,0,99,0,99,0,99,0,62,0,9,12, + 24,9,0,0,18,0,18,0,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,10,12,24,9, + 255,0,6,0,12,0,0,0,243,192,97,128,51,0,51,0, + 30,0,12,0,12,0,12,0,63,0,8,9,9,9,0,0, + 240,96,126,99,99,102,124,96,240,8,9,9,9,0,0,60, + 102,102,108,102,99,99,107,238,8,10,10,9,0,0,48,24, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,12,24, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,56,108, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,52,88, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,36,36, + 0,124,6,6,126,198,206,119,8,10,10,9,0,0,24,36, + 24,124,6,6,126,198,206,119,9,7,14,9,0,0,119,0, + 29,128,8,128,127,128,200,0,205,128,119,0,8,11,11,9, + 0,252,61,103,195,192,192,99,62,16,24,8,56,8,10,10, + 9,0,0,48,24,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,12,24,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,28,54,0,60,102,195,255,192,103,62,8,10,10, + 9,0,0,36,36,0,60,102,195,255,192,103,62,6,10,10, + 9,1,0,96,48,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,24,48,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,112,216,0,240,48,48,48,48,48,252,6,10,10, + 9,1,0,72,72,0,240,48,48,48,48,48,252,8,10,10, + 9,0,0,236,56,204,62,102,195,195,195,102,60,9,10,20, + 9,0,0,26,0,44,0,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,247,128,8,10,10,9,0,0,48,24,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,12,24,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,28,54,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,52,88,0, + 60,102,195,195,195,102,60,8,10,10,9,0,0,36,36,0, + 60,102,195,195,195,102,60,8,7,7,9,0,1,24,24,0, + 255,0,24,24,8,7,7,9,0,0,61,102,207,219,243,102, + 188,9,10,20,9,0,0,24,0,12,0,0,0,231,0,99, + 0,99,0,99,0,99,0,103,0,59,128,9,10,20,9,0, + 0,12,0,24,0,0,0,231,0,99,0,99,0,99,0,99, + 0,103,0,59,128,9,10,20,9,0,0,28,0,54,0,0, + 0,231,0,99,0,99,0,99,0,99,0,103,0,59,128,9, + 10,20,9,0,0,36,0,36,0,0,0,231,0,99,0,99, + 0,99,0,99,0,103,0,59,128,9,13,26,9,0,253,6, + 0,12,0,0,0,227,128,99,0,99,0,54,0,54,0,28, + 0,28,0,24,0,24,0,124,0,8,12,12,9,0,253,224, + 96,110,115,99,99,99,115,110,96,96,240,9,13,26,9,0, + 253,18,0,18,0,0,0,227,128,99,0,99,0,54,0,54, + 0,28,0,28,0,24,0,24,0,124,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 3 y= 7 dx= 9 dy= 0 ascent=11 len=20 + Font Bounding box w=13 h=21 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB10r[1551] U8G_SECTION(".progmem.u8g_font_courB10r") = { + 0,13,21,254,250,9,1,222,4,32,32,127,253,11,253,10, + 253,0,0,0,9,0,1,2,9,9,9,3,0,192,192,192, + 192,192,128,0,192,192,5,4,4,9,2,6,216,216,216,72, + 7,11,11,9,1,255,40,40,40,254,40,40,254,40,40,40, + 40,6,12,12,9,1,255,48,48,124,204,192,240,60,12,204, + 248,48,48,7,10,10,9,1,0,96,144,146,108,16,96,152, + 36,36,24,7,8,8,9,1,0,56,96,96,48,122,204,204, + 118,2,4,4,9,3,5,192,192,192,64,4,11,11,9,2, + 254,48,96,96,192,192,192,192,192,96,96,48,4,11,11,9, + 2,254,192,96,96,48,48,48,48,48,96,96,192,5,5,5, + 9,2,4,32,168,248,112,216,7,7,7,9,1,1,16,16, + 16,254,16,16,16,3,4,4,9,2,254,96,96,192,128,6, + 1,1,9,1,4,252,2,2,2,9,3,0,192,192,7,12, + 12,9,0,254,6,6,12,12,24,24,48,48,96,96,192,192, + 7,10,10,9,1,0,56,108,198,198,198,198,198,198,108,56, + 6,10,10,9,2,0,48,240,48,48,48,48,48,48,48,252, + 6,10,10,9,1,0,120,204,204,12,12,24,48,96,192,252, + 6,10,10,9,1,0,120,204,12,12,56,12,12,12,204,120, + 7,10,10,9,1,0,12,28,60,44,76,204,140,254,12,30, + 6,10,10,9,1,0,252,192,192,248,204,12,12,12,204,120, + 6,10,10,9,1,0,60,96,192,216,236,204,204,204,204,120, + 6,10,10,9,1,0,252,140,12,24,24,24,24,48,48,48, + 6,10,10,9,1,0,120,204,204,204,120,204,204,204,204,120, + 6,10,10,9,1,0,120,204,204,204,204,204,124,12,24,240, + 2,7,7,9,3,0,192,192,0,0,0,192,192,3,9,9, + 9,2,254,96,96,0,0,0,96,96,192,128,8,7,7,9, + 0,1,7,28,112,192,112,28,7,7,4,4,9,1,2,254, + 0,0,254,8,7,7,9,1,1,224,56,14,3,14,56,224, + 6,9,9,9,1,0,248,204,140,12,56,48,0,48,48,7, + 9,9,9,1,0,120,196,156,180,164,180,158,192,120,9,9, + 18,9,0,0,124,0,28,0,54,0,54,0,34,0,99,0, + 127,0,99,0,247,128,8,9,9,9,0,0,254,99,99,99, + 126,99,99,99,254,7,9,9,9,1,0,58,102,198,192,192, + 192,192,102,60,8,9,9,9,0,0,252,102,99,99,99,99, + 99,102,252,8,9,9,9,0,0,255,99,99,104,120,104,99, + 99,255,8,9,9,9,0,0,255,99,99,104,120,104,96,96, + 248,9,9,18,9,0,0,61,0,103,0,195,0,192,0,192, + 0,207,128,195,0,99,0,63,0,9,9,18,9,0,0,247, + 128,99,0,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,6,9,9,9,1,0,252,48,48,48,48,48,48,48,252, + 9,9,18,9,0,0,31,128,6,0,6,0,6,0,6,0, + 198,0,198,0,198,0,124,0,9,9,18,9,0,0,247,0, + 102,0,108,0,120,0,124,0,102,0,102,0,99,0,243,128, + 8,9,9,9,0,0,248,96,96,96,96,99,99,99,255,9, + 9,18,9,0,0,227,128,99,0,119,0,119,0,107,0,107, + 0,99,0,99,0,247,128,9,9,18,9,0,0,231,128,99, + 0,115,0,115,0,107,0,107,0,103,0,103,0,243,0,8, + 9,9,9,0,0,60,102,195,195,195,195,195,102,60,8,9, + 9,9,0,0,254,99,99,99,102,124,96,96,248,8,11,11, + 9,0,254,60,102,195,195,195,195,195,102,60,25,110,9,9, + 18,9,0,0,254,0,99,0,99,0,99,0,102,0,124,0, + 102,0,99,0,243,128,7,9,9,9,1,0,122,206,198,224, + 124,14,198,230,188,8,9,9,9,0,0,255,219,219,24,24, + 24,24,24,60,9,9,18,9,0,0,247,128,99,0,99,0, + 99,0,99,0,99,0,99,0,99,0,62,0,9,9,18,9, + 0,0,247,128,99,0,99,0,99,0,54,0,54,0,54,0, + 28,0,28,0,9,9,18,9,0,0,247,128,99,0,107,0, + 107,0,107,0,119,0,119,0,99,0,99,0,8,9,9,9, + 0,0,231,102,102,60,24,60,102,102,231,10,9,18,9,255, + 0,243,192,97,128,51,0,51,0,30,0,12,0,12,0,12, + 0,63,0,7,9,9,9,1,0,254,198,204,24,24,48,102, + 198,254,4,11,11,9,2,254,240,192,192,192,192,192,192,192, + 192,192,240,7,12,12,9,1,254,192,192,96,96,48,48,24, + 24,12,12,6,6,4,11,11,9,2,254,240,48,48,48,48, + 48,48,48,48,48,240,5,4,4,9,2,5,32,112,216,136, + 9,1,2,9,0,254,255,128,3,2,2,9,2,7,192,96, + 8,7,7,9,0,0,124,6,6,126,198,206,119,8,10,10, + 9,0,0,224,96,96,110,115,99,99,99,115,238,8,7,7, + 9,0,0,61,103,195,192,192,99,62,8,10,10,9,0,0, + 14,6,6,118,206,198,198,198,206,119,8,7,7,9,0,0, + 60,102,195,255,192,103,62,7,10,10,9,1,0,30,48,48, + 252,48,48,48,48,48,252,8,10,10,9,0,253,119,206,198, + 198,198,206,118,6,6,124,9,10,20,9,0,0,224,0,96, + 0,96,0,110,0,115,0,99,0,99,0,99,0,99,0,247, + 128,6,10,10,9,1,0,48,48,0,240,48,48,48,48,48, + 252,5,13,13,9,1,253,24,24,0,120,24,24,24,24,24, + 24,24,24,240,8,10,10,9,0,0,224,96,96,103,108,120, + 120,108,102,231,6,10,10,9,1,0,240,48,48,48,48,48, + 48,48,48,252,9,7,14,9,0,0,223,0,109,128,109,128, + 109,128,109,128,109,128,237,128,9,7,14,9,0,0,238,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,7,7,9, + 0,0,60,102,195,195,195,102,60,8,10,10,9,0,253,238, + 115,99,99,99,115,110,96,96,240,8,10,10,9,0,253,119, + 206,198,198,198,206,118,6,6,15,7,7,7,9,1,0,238, + 112,96,96,96,96,252,7,7,7,9,1,0,126,198,192,124, + 6,198,252,7,9,9,9,1,0,96,96,252,96,96,96,96, + 102,60,9,7,14,9,0,0,231,0,99,0,99,0,99,0, + 99,0,103,0,59,128,9,7,14,9,0,0,247,128,99,0, + 99,0,54,0,54,0,28,0,28,0,10,7,14,9,255,0, + 225,192,109,128,109,128,109,128,45,0,51,0,51,0,8,7, + 7,9,0,0,231,102,60,24,60,102,231,9,10,20,9,0, + 253,227,128,99,0,99,0,54,0,54,0,28,0,28,0,24, + 0,24,0,124,0,6,7,7,9,1,0,252,140,24,48,96, + 196,252,4,11,11,9,2,254,48,96,96,96,96,192,96,96, + 96,96,48,2,11,11,9,3,254,192,192,192,192,192,192,192, + 192,192,192,192,4,11,11,9,2,254,192,96,96,96,96,48, + 96,96,96,96,192,6,3,3,9,1,3,100,252,152,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=11 h=14 x= 4 y= 9 dx=10 dy= 0 ascent=14 len=28 + Font Bounding box w=16 h=24 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB12[3959] U8G_SECTION(".progmem.u8g_font_courB12") = { + 0,16,24,253,250,10,2,51,4,246,32,255,253,14,253,11, + 253,0,0,0,10,0,1,2,11,11,10,3,0,192,192,192, + 192,192,192,192,192,0,192,192,6,5,5,10,2,6,204,204, + 204,204,204,9,12,24,10,0,255,54,0,54,0,54,0,54, + 0,255,128,54,0,54,0,255,128,54,0,54,0,54,0,54, + 0,7,13,13,10,1,255,24,24,126,198,192,224,124,14,6, + 198,252,48,48,8,11,11,10,1,0,120,204,204,120,7,60, + 224,30,51,51,30,7,9,9,10,1,0,56,108,96,48,118, + 222,204,204,126,2,5,5,10,4,6,192,192,192,192,192,4, + 13,13,10,3,254,48,96,96,96,192,192,192,192,192,96,96, + 96,48,4,13,13,10,2,254,192,96,96,96,48,48,48,48, + 48,96,96,96,192,8,6,6,10,1,5,24,24,255,60,60, + 102,8,8,8,10,1,1,24,24,24,255,255,24,24,24,3, + 5,5,10,3,253,224,224,96,192,128,7,2,2,10,1,4, + 254,254,3,2,2,10,3,0,224,224,7,14,14,10,1,254, + 6,6,12,12,12,24,24,48,48,48,96,96,192,192,8,11, + 11,10,1,0,60,102,102,195,195,195,195,195,102,102,60,8, + 11,11,10,1,0,24,120,216,24,24,24,24,24,24,24,255, + 7,11,11,10,1,0,120,204,134,6,6,12,24,48,96,198, + 254,7,11,11,10,1,0,120,204,134,12,56,12,6,6,134, + 204,120,8,11,11,10,1,0,6,14,30,54,102,70,198,255, + 6,6,31,7,11,11,10,1,0,254,192,192,192,252,198,6, + 6,6,204,248,8,11,11,10,1,0,30,112,96,192,220,230, + 195,195,195,102,60,7,11,11,10,1,0,254,198,6,12,12, + 24,24,24,48,48,48,7,11,11,10,1,0,56,108,198,68, + 56,108,198,198,198,108,56,8,11,11,10,1,0,60,102,195, + 195,103,59,3,3,6,14,120,3,7,7,10,3,0,224,224, + 0,0,0,224,224,3,10,10,10,3,253,224,224,0,0,0, + 224,224,96,192,128,9,9,18,10,1,0,1,128,7,128,30, + 0,120,0,224,0,120,0,30,0,7,128,1,128,9,5,10, + 10,0,2,255,128,255,128,0,0,255,128,255,128,9,9,18, + 10,0,0,192,0,240,0,60,0,15,0,3,128,15,0,60, + 0,240,0,192,0,7,10,10,10,1,0,124,198,198,6,28, + 48,48,0,48,48,9,12,24,10,0,255,62,0,99,0,193, + 128,221,128,178,128,178,128,178,128,178,128,223,0,192,0,99, + 0,62,0,10,10,20,10,0,0,60,0,12,0,30,0,18, + 0,51,0,51,0,63,0,97,128,97,128,243,192,9,10,20, + 10,0,0,254,0,99,0,97,128,99,0,126,0,99,0,97, + 128,97,128,99,0,254,0,9,10,20,10,0,0,30,128,115, + 128,97,128,192,0,192,0,192,0,192,0,97,128,115,128,30, + 0,9,10,20,10,0,0,252,0,103,0,99,0,97,128,97, + 128,97,128,97,128,99,0,103,0,252,0,8,10,10,10,1, + 0,255,99,96,100,124,100,96,99,99,255,8,10,10,10,1, + 0,255,99,96,100,124,100,96,96,96,248,10,10,20,10,0, + 0,30,128,115,128,97,128,192,0,192,0,199,192,193,128,97, + 128,113,128,31,0,9,10,20,10,0,0,247,128,99,0,99, + 0,99,0,127,0,99,0,99,0,99,0,99,0,247,128,8, + 10,10,10,1,0,255,24,24,24,24,24,24,24,24,255,9, + 10,20,10,0,0,63,128,6,0,6,0,6,0,6,0,6, + 0,198,0,198,0,198,0,124,0,9,10,20,10,0,0,247, + 128,99,0,102,0,108,0,120,0,124,0,102,0,102,0,99, + 0,251,128,9,10,20,10,0,0,252,0,48,0,48,0,48, + 0,48,0,48,0,49,128,49,128,49,128,255,128,10,10,20, + 10,0,0,225,192,97,128,115,128,115,128,127,128,109,128,109, + 128,97,128,97,128,243,192,10,10,20,10,0,0,247,192,113, + 128,121,128,105,128,109,128,109,128,101,128,103,128,99,128,251, + 128,9,10,20,10,0,0,62,0,99,0,99,0,193,128,193, + 128,193,128,193,128,99,0,99,0,62,0,9,10,20,10,0, + 0,254,0,99,0,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,252,0,9,12,24,10,0,254,62,0,99,0,99, + 0,193,128,193,128,193,128,193,128,99,0,99,0,62,0,25, + 128,63,0,9,10,20,10,0,0,252,0,102,0,99,0,99, + 0,102,0,124,0,102,0,99,0,99,0,251,128,8,10,10, + 10,1,0,61,103,195,224,120,30,7,195,230,188,8,10,10, + 10,1,0,255,153,153,153,24,24,24,24,24,126,10,10,20, + 10,0,0,243,192,97,128,97,128,97,128,97,128,97,128,97, + 128,97,128,51,0,30,0,10,10,20,10,0,0,243,192,97, + 128,97,128,51,0,51,0,51,0,30,0,30,0,12,0,12, + 0,10,10,20,10,0,0,243,192,97,128,109,128,109,128,109, + 128,63,0,51,0,51,0,51,0,51,0,10,10,20,10,0, + 0,243,192,97,128,51,0,30,0,12,0,12,0,30,0,51, + 0,97,128,243,192,10,10,20,10,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,7, + 10,10,10,1,0,254,198,204,28,24,48,112,102,198,254,4, + 13,13,10,3,254,240,192,192,192,192,192,192,192,192,192,192, + 192,240,7,14,14,10,1,254,192,192,96,96,96,48,48,56, + 24,24,12,12,6,6,4,13,13,10,2,254,240,48,48,48, + 48,48,48,48,48,48,48,48,240,8,4,4,10,1,7,24, + 60,102,195,10,2,4,10,0,253,255,192,255,192,4,3,3, + 10,2,8,192,96,48,8,7,7,10,1,0,60,102,6,126, + 198,198,123,9,11,22,10,0,0,224,0,96,0,96,0,96, + 0,110,0,115,0,97,128,97,128,97,128,115,0,238,0,8, + 7,7,10,0,0,61,103,195,192,192,99,62,9,11,22,10, + 0,0,7,0,3,0,3,0,3,0,59,0,103,0,195,0, + 195,0,195,0,103,0,59,128,8,7,7,10,1,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,30,51,48,48,254, + 48,48,48,48,48,254,9,10,20,10,0,253,59,128,103,0, + 195,0,195,0,195,0,103,0,59,0,3,0,3,0,62,0, + 9,11,22,10,0,0,224,0,96,0,96,0,96,0,110,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,10,10,10, + 1,0,24,24,0,120,24,24,24,24,24,255,6,13,13,10, + 1,253,24,24,0,252,12,12,12,12,12,12,12,12,248,9, + 11,22,10,0,0,224,0,96,0,96,0,96,0,111,128,102, + 0,108,0,120,0,108,0,102,0,239,128,8,11,11,10,1, + 0,120,24,24,24,24,24,24,24,24,24,255,10,7,14,10, + 0,0,237,128,127,128,109,128,109,128,109,128,109,128,237,192, + 9,7,14,10,0,0,238,0,115,0,99,0,99,0,99,0, + 99,0,247,128,8,7,7,10,1,0,60,102,195,195,195,102, + 60,9,10,20,10,0,253,238,0,115,0,97,128,97,128,97, + 128,115,0,110,0,96,0,96,0,248,0,9,10,20,10,0, + 253,59,128,103,0,195,0,195,0,195,0,103,0,59,0,3, + 0,3,0,15,128,9,7,14,10,0,0,247,0,57,128,48, + 0,48,0,48,0,48,0,254,0,7,7,7,10,1,0,126, + 198,224,124,14,198,252,9,9,18,10,0,0,48,0,48,0, + 255,0,48,0,48,0,48,0,48,0,49,128,31,0,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,10,7,14,10,0,0,243,192,97,128,51,0,51,0, + 30,0,30,0,12,0,10,7,14,10,0,0,243,192,97,128, + 109,128,45,0,63,0,51,0,51,0,8,7,7,10,1,0, + 231,102,60,24,60,102,231,10,10,20,10,0,253,243,192,97, + 128,51,0,51,0,30,0,30,0,12,0,24,0,24,0,124, + 0,7,7,7,10,1,0,254,204,24,48,96,198,254,4,13, + 13,10,3,254,48,96,96,96,96,64,192,96,96,96,96,96, + 48,2,13,13,10,4,254,192,192,192,192,192,192,192,192,192, + 192,192,192,192,4,13,13,10,3,254,192,96,96,96,96,32, + 48,96,96,96,96,96,192,8,3,3,10,1,3,112,219,14, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,10,0,1,2,10,10,10,4,253,192,192,0, + 192,192,192,192,192,192,192,7,10,10,10,1,0,24,24,62, + 102,192,192,102,60,24,24,8,10,10,10,1,0,30,51,48, + 48,252,252,48,51,227,254,8,7,7,10,1,1,195,126,102, + 66,102,126,195,10,10,20,10,0,0,243,192,97,128,51,0, + 51,0,30,0,63,0,12,0,63,0,12,0,63,0,2,13, + 13,10,4,254,192,192,192,192,192,192,0,192,192,192,192,192, + 192,10,12,24,10,0,255,31,128,49,128,49,128,120,0,206, + 0,195,128,112,192,28,192,7,128,99,0,99,0,126,0,5, + 2,2,10,3,8,216,216,10,10,20,10,0,0,12,0,63, + 0,97,128,78,128,216,192,216,192,78,128,97,128,63,0,12, + 0,6,7,7,10,2,3,120,12,124,204,124,0,252,9,7, + 14,10,0,0,25,128,51,0,102,0,204,0,102,0,51,0, + 25,128,8,5,5,10,1,2,255,255,3,3,3,7,2,2, + 10,1,4,254,254,10,10,20,10,0,0,12,0,63,0,97, + 128,92,128,214,192,220,192,82,128,97,128,63,0,12,0,5, + 1,1,10,2,9,248,5,5,5,10,2,6,112,216,136,216, + 112,8,9,9,10,1,0,24,24,255,255,24,24,0,255,255, + 5,6,6,10,2,5,112,216,48,96,200,248,5,6,6,10, + 2,5,112,216,48,24,216,112,4,3,3,10,3,8,48,96, + 192,9,10,20,10,0,253,231,0,99,0,99,0,99,0,99, + 0,103,0,123,128,96,0,96,0,96,0,9,12,24,10,0, + 255,63,128,91,0,219,0,219,0,219,0,91,0,59,0,27, + 0,27,0,27,0,27,0,63,128,3,2,2,10,3,4,224, + 224,4,4,4,10,3,253,32,96,48,240,6,6,6,10,2, + 5,48,240,48,48,48,252,6,7,7,10,2,3,120,204,204, + 204,120,0,252,9,7,14,10,0,0,204,0,102,0,51,0, + 25,128,51,0,102,0,204,0,10,11,22,10,0,0,32,0, + 225,0,99,0,98,0,102,0,252,128,25,128,19,128,54,128, + 111,192,65,128,10,11,22,10,0,0,32,0,224,128,97,128, + 99,0,102,0,255,128,10,192,25,128,51,0,102,64,71,192, + 11,11,22,10,0,0,112,0,216,128,49,128,27,0,218,0, + 118,64,12,192,9,192,27,64,55,224,32,192,7,10,10,10, + 1,253,24,24,0,24,24,112,192,198,198,124,10,14,28,10, + 0,0,48,0,24,0,12,0,0,0,60,0,12,0,30,0, + 18,0,51,0,51,0,63,0,97,128,97,128,243,192,10,14, + 28,10,0,0,6,0,12,0,24,0,0,0,60,0,12,0, + 30,0,18,0,51,0,51,0,63,0,97,128,97,128,243,192, + 10,14,28,10,0,0,12,0,30,0,51,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,13,26,10,0,0,59,0,110,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,13,26,10,0,0,54,0,54,0,0,0,60,0, + 12,0,30,0,18,0,51,0,51,0,63,0,97,128,97,128, + 243,192,10,14,28,10,0,0,28,0,54,0,54,0,28,0, + 60,0,12,0,30,0,18,0,51,0,51,0,63,0,97,128, + 97,128,243,192,10,10,20,10,0,0,127,192,60,192,44,0, + 45,0,111,0,77,0,124,0,76,192,204,192,255,192,9,13, + 26,10,0,253,30,128,115,128,97,128,192,0,192,0,192,0, + 192,0,97,128,115,128,30,0,24,0,12,0,60,0,8,14, + 14,10,1,0,48,24,12,0,255,99,96,100,124,100,96,99, + 99,255,8,14,14,10,1,0,6,12,24,0,255,99,96,100, + 124,100,96,99,99,255,8,14,14,10,1,0,24,60,102,0, + 255,99,96,100,124,100,96,99,99,255,8,13,13,10,1,0, + 54,54,0,255,99,96,100,124,100,96,99,99,255,8,14,14, + 10,1,0,48,24,12,0,255,24,24,24,24,24,24,24,24, + 255,8,14,14,10,1,0,12,24,48,0,255,24,24,24,24, + 24,24,24,24,255,8,14,14,10,1,0,24,60,102,0,255, + 24,24,24,24,24,24,24,24,255,8,13,13,10,1,0,54, + 54,0,255,24,24,24,24,24,24,24,24,255,9,10,20,10, + 0,0,252,0,103,0,99,0,97,128,249,128,97,128,97,128, + 99,0,103,0,252,0,10,13,26,10,0,0,59,0,110,0, + 0,0,247,192,113,128,121,128,105,128,109,128,109,128,101,128, + 103,128,99,128,251,128,9,14,28,10,0,0,48,0,24,0, + 12,0,0,0,62,0,99,0,99,0,193,128,193,128,193,128, + 193,128,99,0,99,0,62,0,9,14,28,10,0,0,6,0, + 12,0,24,0,0,0,62,0,99,0,99,0,193,128,193,128, + 193,128,193,128,99,0,99,0,62,0,9,14,28,10,0,0, + 12,0,30,0,51,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,9,13,26,10, + 0,0,59,0,110,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,9,13,26,10, + 0,0,54,0,54,0,0,0,62,0,99,0,99,0,193,128, + 193,128,193,128,193,128,99,0,99,0,62,0,8,7,7,10, + 1,1,227,118,60,24,60,110,199,9,12,24,10,0,255,0, + 128,63,128,99,0,103,0,197,128,205,128,217,128,209,128,115, + 0,99,0,254,0,128,0,10,14,28,10,0,0,48,0,24, + 0,12,0,0,0,243,192,97,128,97,128,97,128,97,128,97, + 128,97,128,97,128,51,0,30,0,10,14,28,10,0,0,3, + 0,6,0,12,0,0,0,243,192,97,128,97,128,97,128,97, + 128,97,128,97,128,97,128,51,0,30,0,10,14,28,10,0, + 0,12,0,30,0,51,0,0,0,243,192,97,128,97,128,97, + 128,97,128,97,128,97,128,97,128,51,0,30,0,10,13,26, + 10,0,0,27,0,27,0,0,0,243,192,97,128,97,128,97, + 128,97,128,97,128,97,128,97,128,51,0,30,0,10,14,28, + 10,0,0,3,0,6,0,12,0,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,9, + 10,20,10,0,0,240,0,96,0,126,0,99,0,97,128,99, + 0,126,0,96,0,96,0,240,0,8,11,11,10,0,0,60, + 102,102,100,108,102,99,99,99,122,236,8,11,11,10,1,0, + 48,24,12,0,60,102,6,126,198,198,123,8,11,11,10,1, + 0,6,12,24,0,60,102,6,126,198,198,123,8,11,11,10, + 1,0,24,60,102,0,60,102,6,126,198,198,123,8,10,10, + 10,1,0,59,110,0,60,102,6,126,198,198,123,8,10,10, + 10,1,0,54,54,0,60,102,6,126,198,198,123,8,12,12, + 10,1,0,28,54,54,28,0,60,102,6,126,198,198,123,10, + 7,14,10,255,0,59,128,108,192,12,192,127,192,204,0,204, + 192,119,128,8,10,10,10,1,253,61,103,195,192,192,227,126, + 24,12,60,8,11,11,10,1,0,48,24,12,0,60,102,195, + 255,192,99,62,8,11,11,10,1,0,6,12,24,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,24,60,102,0,60, + 102,195,255,192,99,62,8,10,10,10,1,0,54,54,0,60, + 102,195,255,192,99,62,8,11,11,10,1,0,96,48,24,0, + 120,24,24,24,24,24,255,8,11,11,10,1,0,6,12,24, + 0,120,24,24,24,24,24,255,8,11,11,10,1,0,24,60, + 102,0,120,24,24,24,24,24,255,8,10,10,10,1,0,108, + 108,0,120,24,24,24,24,24,255,8,12,12,10,1,0,224, + 118,28,60,198,62,103,227,195,195,102,60,9,10,20,10,0, + 0,59,0,110,0,0,0,238,0,115,0,99,0,99,0,99, + 0,99,0,247,128,8,11,11,10,1,0,48,24,12,0,60, + 102,195,195,195,102,60,8,11,11,10,1,0,12,24,48,0, + 60,102,195,195,195,102,60,8,11,11,10,1,0,24,60,102, + 0,60,102,195,195,195,102,60,8,10,10,10,1,0,59,110, + 0,60,102,195,195,195,102,60,8,10,10,10,1,0,108,108, + 0,60,102,195,195,195,102,60,8,8,8,10,1,1,24,24, + 0,255,255,0,24,24,8,9,9,10,1,255,3,63,102,207, + 219,243,102,252,192,9,11,22,10,0,0,48,0,24,0,12, + 0,0,0,231,0,99,0,99,0,99,0,99,0,103,0,59, + 128,9,11,22,10,0,0,12,0,24,0,48,0,0,0,231, + 0,99,0,99,0,99,0,99,0,103,0,59,128,9,11,22, + 10,0,0,24,0,60,0,102,0,0,0,231,0,99,0,99, + 0,99,0,99,0,103,0,59,128,9,10,20,10,0,0,54, + 0,54,0,0,0,231,0,99,0,99,0,99,0,99,0,103, + 0,59,128,10,14,28,10,0,253,6,0,12,0,24,0,0, + 0,243,192,97,128,51,0,51,0,30,0,30,0,12,0,24, + 0,24,0,124,0,9,14,28,10,0,253,224,0,96,0,96, + 0,96,0,110,0,115,0,97,128,97,128,97,128,115,0,110, + 0,96,0,96,0,248,0,10,13,26,10,0,253,54,0,54, + 0,0,0,243,192,97,128,51,0,51,0,30,0,30,0,12, + 0,12,0,24,0,124,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=14 x= 4 y= 8 dx=10 dy= 0 ascent=12 len=24 + Font Bounding box w=16 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB12r[1857] U8G_SECTION(".progmem.u8g_font_courB12r") = { + 0,16,24,253,250,10,2,51,4,246,32,127,253,12,253,11, + 253,0,0,0,10,0,1,2,11,11,10,3,0,192,192,192, + 192,192,192,192,192,0,192,192,6,5,5,10,2,6,204,204, + 204,204,204,9,12,24,10,0,255,54,0,54,0,54,0,54, + 0,255,128,54,0,54,0,255,128,54,0,54,0,54,0,54, + 0,7,13,13,10,1,255,24,24,126,198,192,224,124,14,6, + 198,252,48,48,8,11,11,10,1,0,120,204,204,120,7,60, + 224,30,51,51,30,7,9,9,10,1,0,56,108,96,48,118, + 222,204,204,126,2,5,5,10,4,6,192,192,192,192,192,4, + 13,13,10,3,254,48,96,96,96,192,192,192,192,192,96,96, + 96,48,4,13,13,10,2,254,192,96,96,96,48,48,48,48, + 48,96,96,96,192,8,6,6,10,1,5,24,24,255,60,60, + 102,8,8,8,10,1,1,24,24,24,255,255,24,24,24,3, + 5,5,10,3,253,224,224,96,192,128,7,2,2,10,1,4, + 254,254,3,2,2,10,3,0,224,224,7,14,14,10,1,254, + 6,6,12,12,12,24,24,48,48,48,96,96,192,192,8,11, + 11,10,1,0,60,102,102,195,195,195,195,195,102,102,60,8, + 11,11,10,1,0,24,120,216,24,24,24,24,24,24,24,255, + 7,11,11,10,1,0,120,204,134,6,6,12,24,48,96,198, + 254,7,11,11,10,1,0,120,204,134,12,56,12,6,6,134, + 204,120,8,11,11,10,1,0,6,14,30,54,102,70,198,255, + 6,6,31,7,11,11,10,1,0,254,192,192,192,252,198,6, + 6,6,204,248,8,11,11,10,1,0,30,112,96,192,220,230, + 195,195,195,102,60,7,11,11,10,1,0,254,198,6,12,12, + 24,24,24,48,48,48,7,11,11,10,1,0,56,108,198,68, + 56,108,198,198,198,108,56,8,11,11,10,1,0,60,102,195, + 195,103,59,3,3,6,14,120,3,7,7,10,3,0,224,224, + 0,0,0,224,224,3,10,10,10,3,253,224,224,0,0,0, + 224,224,96,192,128,9,9,18,10,1,0,1,128,7,128,30, + 0,120,0,224,0,120,0,30,0,7,128,1,128,9,5,10, + 10,0,2,255,128,255,128,0,0,255,128,255,128,9,9,18, + 10,0,0,192,0,240,0,60,0,15,0,3,128,15,0,60, + 0,240,0,192,0,7,10,10,10,1,0,124,198,198,6,28, + 48,48,0,48,48,9,12,24,10,0,255,62,0,99,0,193, + 128,221,128,178,128,178,128,178,128,178,128,223,0,192,0,99, + 0,62,0,10,10,20,10,0,0,60,0,12,0,30,0,18, + 0,51,0,51,0,63,0,97,128,97,128,243,192,9,10,20, + 10,0,0,254,0,99,0,97,128,99,0,126,0,99,0,97, + 128,97,128,99,0,254,0,9,10,20,10,0,0,30,128,115, + 128,97,128,192,0,192,0,192,0,192,0,97,128,115,128,30, + 0,9,10,20,10,0,0,252,0,103,0,99,0,97,128,97, + 128,97,128,97,128,99,0,103,0,252,0,8,10,10,10,1, + 0,255,99,96,100,124,100,96,99,99,255,8,10,10,10,1, + 0,255,99,96,100,124,100,96,96,96,248,10,10,20,10,0, + 0,30,128,115,128,97,128,192,0,192,0,199,192,193,128,97, + 128,113,128,31,0,9,10,20,10,0,0,247,128,99,0,99, + 0,99,0,127,0,99,0,99,0,99,0,99,0,247,128,8, + 10,10,10,1,0,255,24,24,24,24,24,24,24,24,255,9, + 10,20,10,0,0,63,128,6,0,6,0,6,0,6,0,6, + 0,198,0,198,0,198,0,124,0,9,10,20,10,0,0,247, + 128,99,0,102,0,108,0,120,0,124,0,102,0,102,0,99, + 0,251,128,9,10,20,10,0,0,252,0,48,0,48,0,48, + 0,48,0,48,0,49,128,49,128,49,128,255,128,10,10,20, + 10,0,0,225,192,97,128,115,128,115,128,127,128,109,128,109, + 128,97,128,97,128,243,192,10,10,20,10,0,0,247,192,113, + 128,121,128,105,128,109,128,109,128,101,128,103,128,99,128,251, + 128,9,10,20,10,0,0,62,0,99,0,99,0,193,128,193, + 128,193,128,193,128,99,0,99,0,62,0,9,10,20,10,0, + 0,254,0,99,0,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,252,0,9,12,24,10,0,254,62,0,99,0,99, + 0,193,128,193,128,193,128,193,128,99,0,99,0,62,0,25, + 128,63,0,9,10,20,10,0,0,252,0,102,0,99,0,99, + 0,102,0,124,0,102,0,99,0,99,0,251,128,8,10,10, + 10,1,0,61,103,195,224,120,30,7,195,230,188,8,10,10, + 10,1,0,255,153,153,153,24,24,24,24,24,126,10,10,20, + 10,0,0,243,192,97,128,97,128,97,128,97,128,97,128,97, + 128,97,128,51,0,30,0,10,10,20,10,0,0,243,192,97, + 128,97,128,51,0,51,0,51,0,30,0,30,0,12,0,12, + 0,10,10,20,10,0,0,243,192,97,128,109,128,109,128,109, + 128,63,0,51,0,51,0,51,0,51,0,10,10,20,10,0, + 0,243,192,97,128,51,0,30,0,12,0,12,0,30,0,51, + 0,97,128,243,192,10,10,20,10,0,0,243,192,97,128,51, + 0,51,0,30,0,12,0,12,0,12,0,12,0,63,0,7, + 10,10,10,1,0,254,198,204,28,24,48,112,102,198,254,4, + 13,13,10,3,254,240,192,192,192,192,192,192,192,192,192,192, + 192,240,7,14,14,10,1,254,192,192,96,96,96,48,48,56, + 24,24,12,12,6,6,4,13,13,10,2,254,240,48,48,48, + 48,48,48,48,48,48,48,48,240,8,4,4,10,1,7,24, + 60,102,195,10,2,4,10,0,253,255,192,255,192,4,3,3, + 10,2,8,192,96,48,8,7,7,10,1,0,60,102,6,126, + 198,198,123,9,11,22,10,0,0,224,0,96,0,96,0,96, + 0,110,0,115,0,97,128,97,128,97,128,115,0,238,0,8, + 7,7,10,0,0,61,103,195,192,192,99,62,9,11,22,10, + 0,0,7,0,3,0,3,0,3,0,59,0,103,0,195,0, + 195,0,195,0,103,0,59,128,8,7,7,10,1,0,60,102, + 195,255,192,99,62,8,11,11,10,1,0,30,51,48,48,254, + 48,48,48,48,48,254,9,10,20,10,0,253,59,128,103,0, + 195,0,195,0,195,0,103,0,59,0,3,0,3,0,62,0, + 9,11,22,10,0,0,224,0,96,0,96,0,96,0,110,0, + 115,0,99,0,99,0,99,0,99,0,247,128,8,10,10,10, + 1,0,24,24,0,120,24,24,24,24,24,255,6,13,13,10, + 1,253,24,24,0,252,12,12,12,12,12,12,12,12,248,9, + 11,22,10,0,0,224,0,96,0,96,0,96,0,111,128,102, + 0,108,0,120,0,108,0,102,0,239,128,8,11,11,10,1, + 0,120,24,24,24,24,24,24,24,24,24,255,10,7,14,10, + 0,0,237,128,127,128,109,128,109,128,109,128,109,128,237,192, + 9,7,14,10,0,0,238,0,115,0,99,0,99,0,99,0, + 99,0,247,128,8,7,7,10,1,0,60,102,195,195,195,102, + 60,9,10,20,10,0,253,238,0,115,0,97,128,97,128,97, + 128,115,0,110,0,96,0,96,0,248,0,9,10,20,10,0, + 253,59,128,103,0,195,0,195,0,195,0,103,0,59,0,3, + 0,3,0,15,128,9,7,14,10,0,0,247,0,57,128,48, + 0,48,0,48,0,48,0,254,0,7,7,7,10,1,0,126, + 198,224,124,14,198,252,9,9,18,10,0,0,48,0,48,0, + 255,0,48,0,48,0,48,0,48,0,49,128,31,0,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,10,7,14,10,0,0,243,192,97,128,51,0,51,0, + 30,0,30,0,12,0,10,7,14,10,0,0,243,192,97,128, + 109,128,45,0,63,0,51,0,51,0,8,7,7,10,1,0, + 231,102,60,24,60,102,231,10,10,20,10,0,253,243,192,97, + 128,51,0,51,0,30,0,30,0,12,0,24,0,24,0,124, + 0,7,7,7,10,1,0,254,204,24,48,96,198,254,4,13, + 13,10,3,254,48,96,96,96,96,64,192,96,96,96,96,96, + 48,2,13,13,10,4,254,192,192,192,192,192,192,192,192,192, + 192,192,192,192,4,13,13,10,3,254,192,96,96,96,96,32, + 48,96,96,96,96,96,192,8,3,3,10,1,3,112,219,14, + 255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=12 h=17 x= 4 y= 9 dx=11 dy= 0 ascent=15 len=34 + Font Bounding box w=17 h=26 x=-4 y=-7 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =15 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB14[4784] U8G_SECTION(".progmem.u8g_font_courB14") = { + 0,17,26,252,249,11,2,101,5,155,32,255,252,15,251,12, + 252,0,0,0,11,0,1,3,12,12,11,4,0,224,224,224, + 224,224,224,192,192,192,0,192,192,6,6,6,11,2,6,204, + 204,204,204,136,136,8,14,14,11,1,255,54,54,54,54,255, + 255,108,108,255,255,108,108,108,108,8,15,15,11,1,254,24, + 24,63,127,195,192,240,126,15,3,199,254,252,24,24,8,12, + 12,11,1,0,112,216,136,216,115,14,120,206,27,17,27,14, + 8,10,10,11,1,0,60,126,102,96,48,123,255,206,255,123, + 2,6,6,11,4,6,192,192,192,192,128,128,4,15,15,11, + 4,253,48,48,96,96,192,192,192,192,192,192,192,96,96,48, + 48,4,15,15,11,2,253,192,192,96,96,48,48,48,48,48, + 48,48,96,96,192,192,8,8,8,11,1,4,24,24,255,255, + 24,126,231,66,10,10,20,11,0,0,12,0,12,0,12,0, + 12,0,255,192,255,192,12,0,12,0,12,0,12,0,4,5, + 5,11,2,253,48,48,96,64,128,8,2,2,11,1,4,255, + 255,2,2,2,11,4,0,192,192,9,16,32,11,0,253,1, + 128,1,128,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,192,0,192,0,8, + 12,12,11,1,0,60,126,102,195,195,195,195,195,195,102,126, + 60,8,12,12,11,1,0,24,248,248,24,24,24,24,24,24, + 24,255,255,8,12,12,11,1,0,60,126,199,195,3,7,14, + 28,56,112,255,255,8,12,12,11,1,0,60,126,102,6,14, + 60,62,7,3,199,254,124,8,12,12,11,1,0,14,30,62, + 54,102,102,198,255,255,6,31,31,8,12,12,11,1,0,127, + 127,96,96,126,127,103,3,3,199,254,124,8,12,12,11,1, + 0,15,63,112,96,220,254,231,195,195,231,126,60,8,12,12, + 11,1,0,255,255,195,6,6,6,12,12,12,24,24,24,8, + 12,12,11,1,0,60,126,231,195,102,60,126,231,195,231,126, + 60,8,12,12,11,1,0,60,126,195,195,195,199,127,59,3, + 6,254,248,2,8,8,11,4,0,192,192,0,0,0,0,192, + 192,4,11,11,11,2,253,48,48,0,0,0,0,48,48,96, + 64,128,9,9,18,11,1,1,1,128,7,128,30,0,120,0, + 224,0,120,0,30,0,7,128,1,128,10,6,12,11,0,2, + 255,192,255,192,0,0,0,0,255,192,255,192,9,9,18,11, + 1,1,192,0,240,0,60,0,15,0,3,128,15,0,60,0, + 240,0,192,0,7,11,11,11,2,0,124,254,198,6,14,60, + 48,48,0,48,48,9,13,26,11,1,255,60,0,102,0,195, + 0,207,0,219,0,219,0,219,0,219,0,207,128,192,0,192, + 0,99,0,62,0,12,11,22,11,255,0,62,0,63,0,15, + 0,25,128,25,128,25,128,63,192,63,192,48,192,249,240,249, + 240,10,11,22,11,0,0,254,0,255,0,49,128,49,128,63, + 0,63,128,48,192,48,192,48,192,255,128,255,0,10,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,192, + 0,224,0,112,192,127,192,31,0,10,11,22,11,0,0,254, + 0,255,128,99,128,97,192,96,192,96,192,96,192,97,192,99, + 128,255,128,254,0,10,11,22,11,0,0,255,192,255,192,48, + 192,54,192,62,0,62,0,54,0,48,192,48,192,255,192,255, + 192,10,11,22,11,0,0,255,192,255,192,48,192,54,192,62, + 0,62,0,54,0,48,0,48,0,254,0,254,0,11,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,199, + 224,231,224,112,192,127,192,31,128,10,11,22,11,0,0,243, + 192,243,192,97,128,97,128,127,128,127,128,97,128,97,128,97, + 128,243,192,243,192,8,11,11,11,1,0,255,255,24,24,24, + 24,24,24,24,255,255,10,11,22,11,0,0,31,192,31,192, + 3,0,3,0,3,0,3,0,195,0,195,0,195,0,254,0, + 60,0,11,11,22,11,0,0,247,192,247,192,99,0,102,0, + 108,0,124,0,126,0,103,0,99,128,249,224,249,224,10,11, + 22,11,0,0,252,0,252,0,48,0,48,0,48,0,48,0, + 48,192,48,192,48,192,255,192,255,192,10,11,22,11,0,0, + 225,192,225,192,115,128,115,128,127,128,109,128,109,128,109,128, + 97,128,243,192,243,192,10,11,22,11,0,0,231,192,247,192, + 113,128,121,128,105,128,109,128,101,128,103,128,99,128,251,128, + 249,128,10,11,22,11,0,0,30,0,127,128,115,128,225,192, + 192,192,192,192,192,192,225,192,115,128,127,128,30,0,10,11, + 22,11,0,0,255,0,255,128,97,192,96,192,97,192,127,128, + 127,0,96,0,96,0,252,0,252,0,10,13,26,11,0,254, + 30,0,127,128,115,128,225,192,192,192,192,192,192,192,225,192, + 115,128,127,128,30,64,63,192,51,128,11,11,22,11,0,0, + 255,0,255,128,97,192,96,192,97,192,127,128,127,0,99,128, + 97,192,252,224,252,224,9,11,22,11,1,0,61,128,255,128, + 195,128,193,128,248,0,127,0,15,128,193,128,225,128,255,0, + 222,0,10,11,22,11,0,0,255,192,255,192,204,192,204,192, + 204,192,12,0,12,0,12,0,12,0,127,128,127,128,10,11, + 22,11,0,0,247,192,247,192,97,128,97,128,97,128,97,128, + 97,128,97,128,115,128,63,0,30,0,12,11,22,11,255,0, + 249,240,249,240,96,96,96,96,48,192,48,192,25,128,25,128, + 15,0,15,0,6,0,12,11,22,11,255,0,249,240,249,240, + 96,96,102,96,102,96,111,96,111,96,57,192,57,192,48,192, + 48,192,10,11,22,11,0,0,243,192,243,192,97,128,51,0, + 30,0,12,0,30,0,51,0,97,128,243,192,243,192,10,11, + 22,11,0,0,243,192,243,192,97,128,51,0,63,0,30,0, + 12,0,12,0,12,0,63,0,63,0,8,11,11,11,1,0, + 255,255,199,206,12,24,48,115,227,255,255,4,15,15,11,4, + 253,240,240,192,192,192,192,192,192,192,192,192,192,192,240,240, + 9,16,32,11,1,253,192,0,192,0,96,0,96,0,48,0, + 48,0,24,0,24,0,12,0,12,0,6,0,6,0,3,0, + 3,0,1,128,1,128,4,15,15,11,2,253,240,240,48,48, + 48,48,48,48,48,48,48,48,48,240,240,8,7,7,11,1, + 5,24,60,60,102,102,195,195,11,2,4,11,0,252,255,224, + 255,224,4,3,3,11,3,9,192,96,48,10,9,18,11,0, + 0,63,0,127,128,97,128,1,128,127,128,255,128,193,128,255, + 192,125,192,10,12,24,11,0,0,224,0,224,0,96,0,111, + 0,127,128,113,192,96,192,96,192,96,192,113,192,255,128,239, + 0,10,9,18,11,0,0,61,128,127,128,227,128,193,128,192, + 0,192,0,225,192,127,192,63,0,10,12,24,11,0,0,3, + 128,3,128,1,128,61,128,127,128,227,128,193,128,193,128,193, + 128,227,128,127,192,61,192,10,9,18,11,0,0,30,0,127, + 128,225,192,192,192,255,192,255,192,224,0,127,192,31,192,9, + 12,24,11,1,0,31,128,63,128,48,0,255,0,255,0,48, + 0,48,0,48,0,48,0,48,0,255,0,255,0,10,13,26, + 11,0,252,61,192,127,192,227,128,193,128,193,128,193,128,227, + 128,127,128,61,128,1,128,3,128,63,0,62,0,10,12,24, + 11,0,0,224,0,224,0,96,0,111,0,127,128,113,128,97, + 128,97,128,97,128,97,128,243,192,243,192,8,12,12,11,1, + 0,24,24,0,248,248,24,24,24,24,24,255,255,7,16,16, + 11,1,252,12,12,0,254,254,6,6,6,6,6,6,6,6, + 14,252,248,10,12,24,11,0,0,224,0,224,0,96,0,103, + 128,103,128,110,0,124,0,124,0,110,0,103,0,227,192,227, + 192,8,12,12,11,1,0,248,248,24,24,24,24,24,24,24, + 24,255,255,12,9,18,11,255,0,237,192,255,224,119,96,102, + 96,102,96,102,96,102,96,247,112,247,112,10,9,18,11,0, + 0,239,0,255,128,113,128,97,128,97,128,97,128,97,128,243, + 192,243,192,10,9,18,11,0,0,30,0,127,128,225,192,192, + 192,192,192,192,192,225,192,127,128,30,0,10,13,26,11,0, + 252,239,0,255,128,113,192,96,192,96,192,96,192,113,192,127, + 128,111,0,96,0,96,0,248,0,248,0,10,13,26,11,0, + 252,61,192,127,192,227,128,193,128,193,128,193,128,227,128,127, + 128,61,128,1,128,1,128,7,192,7,192,10,9,18,11,0, + 0,243,128,255,192,60,192,56,0,48,0,48,0,48,0,255, + 0,255,0,8,9,9,11,1,0,127,255,195,240,126,31,195, + 255,254,10,12,24,11,0,0,48,0,48,0,48,0,255,0, + 255,0,48,0,48,0,48,0,48,0,48,192,63,192,31,0, + 10,9,18,11,0,0,231,128,231,128,97,128,97,128,97,128, + 97,128,99,128,127,192,61,192,10,9,18,11,0,0,243,192, + 243,192,97,128,97,128,51,0,51,0,30,0,30,0,12,0, + 11,9,18,11,0,0,241,224,241,224,100,192,110,192,110,192, + 123,192,59,128,49,128,49,128,11,9,18,11,0,0,251,224, + 251,224,49,128,27,0,14,0,27,0,49,128,251,224,251,224, + 10,13,26,11,0,252,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0, + 8,9,9,11,1,0,255,255,198,12,24,48,99,255,255,4, + 15,15,11,3,253,48,96,96,96,96,96,192,96,96,96,96, + 96,96,96,48,2,14,14,11,4,253,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,4,15,15,11,3,253,192,96, + 96,96,96,96,48,96,96,96,96,96,96,96,192,8,3,3, + 11,1,4,115,255,222,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,11,0,1,3,12,12, + 11,4,252,192,192,0,192,192,224,224,224,224,224,224,224,8, + 13,13,11,1,0,24,24,24,63,127,227,192,192,227,127,62, + 24,24,10,11,22,11,0,0,62,0,127,0,99,0,96,0, + 48,0,252,0,252,0,48,0,96,192,255,192,255,128,8,9, + 9,11,1,1,195,255,126,195,195,195,126,255,195,10,11,22, + 11,0,0,243,192,243,192,97,128,51,0,30,0,63,0,12, + 0,63,0,12,0,63,0,63,0,2,16,16,11,4,253,192, + 192,192,192,192,192,192,0,0,192,192,192,192,192,192,192,8, + 14,14,11,1,254,63,115,99,96,248,222,199,227,123,31,6, + 198,206,252,6,2,2,11,2,9,204,204,11,12,24,11,0, + 0,14,0,63,128,113,192,110,192,219,96,216,96,216,96,219, + 96,110,192,113,192,63,128,14,0,6,8,8,11,2,3,112, + 24,120,216,216,108,0,252,9,7,14,11,0,1,25,128,51, + 0,102,0,204,0,102,0,51,0,25,128,9,4,8,11,1, + 4,255,128,255,128,1,128,1,128,8,2,2,11,1,4,255, + 255,11,12,24,11,0,0,14,0,63,128,113,192,126,192,219, + 96,219,96,222,96,223,96,123,224,112,192,63,128,14,0,5, + 2,2,11,2,9,248,248,5,5,5,11,2,6,112,136,136, + 136,112,10,10,20,11,0,0,12,0,12,0,12,0,255,192, + 255,192,12,0,12,0,0,0,255,192,255,192,6,7,7,11, + 2,5,120,204,12,24,48,100,252,6,7,7,11,2,5,120, + 204,12,56,12,204,120,4,3,3,11,4,9,48,96,192,10, + 13,26,11,0,252,231,128,231,128,97,128,97,128,97,128,97, + 128,99,128,127,192,125,192,96,0,96,0,96,0,96,0,8, + 14,14,11,1,254,63,106,202,202,202,106,58,10,10,10,10, + 10,10,59,2,3,3,11,4,3,192,192,192,4,5,5,11, + 3,252,64,96,48,240,224,6,7,7,11,2,5,48,240,48, + 48,48,48,252,6,8,8,11,2,3,120,204,132,132,204,120, + 0,252,9,7,14,11,1,1,204,0,102,0,51,0,25,128, + 51,0,102,0,204,0,11,12,24,11,0,0,48,0,240,32, + 48,96,48,192,49,128,51,64,254,192,13,192,26,192,52,192, + 103,224,64,192,11,12,24,11,0,0,48,0,240,32,48,96, + 48,192,49,128,51,192,255,96,12,96,24,192,49,128,99,32, + 71,224,11,12,24,11,0,0,120,0,204,32,12,96,56,192, + 13,128,207,64,126,192,13,192,26,192,52,192,103,224,64,192, + 7,12,12,11,2,252,24,24,0,24,24,24,120,224,192,198, + 254,124,12,15,30,11,255,0,24,0,12,0,6,0,0,0, + 62,0,63,0,15,0,15,0,25,128,25,128,63,192,63,192, + 48,192,249,240,249,240,12,15,30,11,255,0,3,0,6,0, + 12,0,0,0,62,0,63,0,15,0,15,0,25,128,25,128, + 63,192,63,192,48,192,249,240,249,240,12,15,30,11,255,0, + 6,0,15,0,25,128,0,0,62,0,63,0,15,0,15,0, + 25,128,25,128,63,192,63,192,48,192,249,240,249,240,12,14, + 28,11,255,0,29,128,55,0,0,0,62,0,63,0,15,0, + 15,0,25,128,25,128,63,192,63,192,48,192,249,240,249,240, + 12,14,28,11,255,0,25,128,25,128,0,0,62,0,63,0, + 15,0,15,0,25,128,25,128,63,192,63,192,48,192,249,240, + 249,240,12,15,30,11,255,0,6,0,9,0,9,0,6,0, + 62,0,63,0,15,0,15,0,25,128,25,128,63,192,63,192, + 48,192,249,240,249,240,11,11,22,11,0,0,63,224,63,224, + 30,96,54,0,55,192,39,192,126,0,126,0,102,96,239,224, + 239,224,10,16,32,11,0,251,30,192,127,192,97,192,192,192, + 192,0,192,0,192,0,192,0,96,192,127,192,63,0,8,0, + 12,0,2,0,30,0,28,0,10,15,30,11,0,0,24,0, + 12,0,6,0,0,0,255,192,255,192,48,192,54,192,62,0, + 62,0,54,0,48,192,48,192,255,192,255,192,10,15,30,11, + 0,0,3,0,6,0,12,0,0,0,255,192,255,192,48,192, + 54,192,62,0,62,0,54,0,48,192,48,192,255,192,255,192, + 10,15,30,11,0,0,12,0,30,0,51,0,0,0,255,192, + 255,192,48,192,54,192,62,0,62,0,54,0,48,192,48,192, + 255,192,255,192,10,14,28,11,0,0,51,0,51,0,0,0, + 255,192,255,192,48,192,54,192,62,0,62,0,54,0,48,192, + 48,192,255,192,255,192,8,15,15,11,1,0,96,48,24,0, + 255,255,24,24,24,24,24,24,24,255,255,8,15,15,11,1, + 0,6,12,24,0,255,255,24,24,24,24,24,24,24,255,255, + 8,15,15,11,1,0,24,60,102,0,255,255,24,24,24,24, + 24,24,24,255,255,8,14,14,11,1,0,102,102,0,255,255, + 24,24,24,24,24,24,24,255,255,10,11,22,11,0,0,254, + 0,255,128,97,128,96,192,248,192,248,192,96,192,96,192,97, + 128,255,128,254,0,10,14,28,11,0,0,59,0,110,0,0, + 0,231,192,247,192,113,128,121,128,105,128,109,128,101,128,103, + 128,99,128,251,128,249,128,10,15,30,11,0,0,24,0,12, + 0,6,0,0,0,30,0,127,128,97,128,192,192,192,192,192, + 192,192,192,192,192,97,128,127,128,30,0,10,15,30,11,0, + 0,3,0,6,0,12,0,0,0,30,0,127,128,97,128,192, + 192,192,192,192,192,192,192,192,192,97,128,127,128,30,0,10, + 15,30,11,0,0,12,0,30,0,51,0,0,0,30,0,127, + 128,97,128,192,192,192,192,192,192,192,192,192,192,97,128,127, + 128,30,0,10,14,28,11,0,0,59,0,110,0,0,0,30, + 0,127,128,97,128,192,192,192,192,192,192,192,192,192,192,97, + 128,127,128,30,0,10,14,28,11,0,0,51,0,51,0,0, + 0,30,0,127,128,97,128,192,192,192,192,192,192,192,192,192, + 192,97,128,127,128,30,0,10,10,20,11,0,0,64,128,225, + 192,115,128,55,0,30,0,30,0,59,0,115,128,225,192,64, + 128,12,13,26,11,255,255,0,48,15,96,63,192,49,192,99, + 96,102,96,102,96,108,96,120,96,48,192,63,192,111,0,192, + 0,10,15,30,11,0,0,48,0,24,0,12,0,0,0,251, + 192,251,192,97,128,97,128,97,128,97,128,97,128,97,128,115, + 128,63,0,30,0,10,15,30,11,0,0,3,0,6,0,12, + 0,0,0,251,192,251,192,97,128,97,128,97,128,97,128,97, + 128,97,128,115,128,63,0,30,0,10,15,30,11,0,0,12, + 0,30,0,51,0,0,0,251,192,251,192,97,128,97,128,97, + 128,97,128,97,128,97,128,115,128,63,0,30,0,10,14,28, + 11,0,0,51,0,51,0,0,0,251,192,251,192,97,128,97, + 128,97,128,97,128,97,128,97,128,115,128,63,0,30,0,10, + 15,30,11,0,0,3,0,6,0,12,0,0,0,243,192,243, + 192,97,128,51,0,63,0,30,0,12,0,12,0,12,0,63, + 0,63,0,10,11,22,11,0,0,240,0,224,0,127,0,127, + 128,97,192,96,192,97,192,127,128,127,0,224,0,240,0,9, + 12,24,11,1,0,60,0,126,0,99,0,99,0,103,0,110, + 0,103,0,97,128,97,128,105,128,239,128,231,0,10,13,26, + 11,0,0,24,0,12,0,6,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,13,26, + 11,0,0,3,0,6,0,12,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,13,26, + 11,0,0,12,0,30,0,51,0,0,0,63,0,127,128,97, + 128,1,128,127,128,255,128,193,128,255,192,125,192,10,12,24, + 11,0,0,59,0,110,0,0,0,63,0,127,128,97,128,1, + 128,127,128,255,128,193,128,255,192,125,192,10,12,24,11,0, + 0,51,0,51,0,0,0,63,0,127,128,97,128,1,128,127, + 128,255,128,193,128,255,192,125,192,10,14,28,11,0,0,12, + 0,18,0,18,0,12,0,0,0,63,0,127,128,97,128,1, + 128,127,128,255,128,193,128,255,192,125,192,10,9,18,11,0, + 0,123,128,255,192,204,192,12,192,127,192,255,192,204,0,255, + 192,123,128,10,14,28,11,0,251,61,128,127,128,227,128,193, + 128,192,0,192,0,225,192,127,192,63,0,8,0,12,0,6, + 0,30,0,28,0,10,13,26,11,0,0,24,0,12,0,6, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,13,26,11,0,0,3,0,6,0,12, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,13,26,11,0,0,12,0,30,0,51, + 0,0,0,30,0,127,128,225,192,192,192,255,192,255,192,224, + 0,127,192,31,192,10,12,24,11,0,0,51,0,51,0,0, + 0,30,0,127,128,225,192,192,192,255,192,255,192,224,0,127, + 192,31,192,8,13,13,11,1,0,48,24,12,0,248,248,24, + 24,24,24,24,255,255,8,13,13,11,1,0,12,24,48,0, + 248,248,24,24,24,24,24,255,255,8,13,13,11,1,0,24, + 60,102,0,248,248,24,24,24,24,24,255,255,8,12,12,11, + 1,0,204,204,0,248,248,24,24,24,24,24,255,255,10,13, + 26,11,0,0,225,128,251,128,62,0,119,0,195,128,63,128, + 97,192,192,192,192,192,192,192,225,192,127,128,30,0,10,12, + 24,11,0,0,59,0,110,0,0,0,239,0,255,128,113,128, + 97,128,97,128,97,128,97,128,243,192,243,192,10,13,26,11, + 0,0,24,0,12,0,6,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,13,26,11, + 0,0,3,0,6,0,12,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,13,26,11, + 0,0,12,0,30,0,51,0,0,0,30,0,127,128,225,192, + 192,192,192,192,192,192,225,192,127,128,30,0,10,12,24,11, + 0,0,59,0,110,0,0,0,30,0,127,128,225,192,192,192, + 192,192,192,192,225,192,127,128,30,0,10,12,24,11,0,0, + 51,0,51,0,0,0,30,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,30,0,10,10,20,11,0,0,12,0, + 12,0,0,0,0,0,255,192,255,192,0,0,0,0,12,0, + 12,0,12,11,22,11,255,255,0,48,15,96,63,192,113,224, + 99,96,102,96,108,96,120,224,63,192,111,0,192,0,10,13, + 26,11,0,0,24,0,12,0,6,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,13, + 26,11,0,0,6,0,12,0,24,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,13, + 26,11,0,0,12,0,30,0,51,0,0,0,231,128,231,128, + 97,128,97,128,97,128,97,128,99,128,127,192,61,192,10,12, + 24,11,0,0,51,0,51,0,0,0,231,128,231,128,97,128, + 97,128,97,128,97,128,99,128,127,192,61,192,10,17,34,11, + 0,252,3,0,6,0,12,0,0,0,243,192,243,192,97,128, + 97,128,51,0,51,0,30,0,30,0,12,0,24,0,56,0, + 252,0,252,0,10,16,32,11,0,252,224,0,224,0,96,0, + 111,0,127,128,113,192,96,192,96,192,96,192,113,192,127,128, + 111,0,96,0,96,0,248,0,248,0,10,16,32,11,0,252, + 51,0,51,0,0,0,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0 + }; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=12 h=16 x= 4 y= 9 dx=11 dy= 0 ascent=13 len=32 + Font Bounding box w=17 h=26 x=-4 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB14r[2167] U8G_SECTION(".progmem.u8g_font_courB14r") = { + 0,17,26,252,249,11,2,101,5,155,32,127,252,13,252,12, + 252,0,0,0,11,0,1,3,12,12,11,4,0,224,224,224, + 224,224,224,192,192,192,0,192,192,6,6,6,11,2,6,204, + 204,204,204,136,136,8,14,14,11,1,255,54,54,54,54,255, + 255,108,108,255,255,108,108,108,108,8,15,15,11,1,254,24, + 24,63,127,195,192,240,126,15,3,199,254,252,24,24,8,12, + 12,11,1,0,112,216,136,216,115,14,120,206,27,17,27,14, + 8,10,10,11,1,0,60,126,102,96,48,123,255,206,255,123, + 2,6,6,11,4,6,192,192,192,192,128,128,4,15,15,11, + 4,253,48,48,96,96,192,192,192,192,192,192,192,96,96,48, + 48,4,15,15,11,2,253,192,192,96,96,48,48,48,48,48, + 48,48,96,96,192,192,8,8,8,11,1,4,24,24,255,255, + 24,126,231,66,10,10,20,11,0,0,12,0,12,0,12,0, + 12,0,255,192,255,192,12,0,12,0,12,0,12,0,4,5, + 5,11,2,253,48,48,96,64,128,8,2,2,11,1,4,255, + 255,2,2,2,11,4,0,192,192,9,16,32,11,0,253,1, + 128,1,128,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,192,0,192,0,8, + 12,12,11,1,0,60,126,102,195,195,195,195,195,195,102,126, + 60,8,12,12,11,1,0,24,248,248,24,24,24,24,24,24, + 24,255,255,8,12,12,11,1,0,60,126,199,195,3,7,14, + 28,56,112,255,255,8,12,12,11,1,0,60,126,102,6,14, + 60,62,7,3,199,254,124,8,12,12,11,1,0,14,30,62, + 54,102,102,198,255,255,6,31,31,8,12,12,11,1,0,127, + 127,96,96,126,127,103,3,3,199,254,124,8,12,12,11,1, + 0,15,63,112,96,220,254,231,195,195,231,126,60,8,12,12, + 11,1,0,255,255,195,6,6,6,12,12,12,24,24,24,8, + 12,12,11,1,0,60,126,231,195,102,60,126,231,195,231,126, + 60,8,12,12,11,1,0,60,126,195,195,195,199,127,59,3, + 6,254,248,2,8,8,11,4,0,192,192,0,0,0,0,192, + 192,4,11,11,11,2,253,48,48,0,0,0,0,48,48,96, + 64,128,9,9,18,11,1,1,1,128,7,128,30,0,120,0, + 224,0,120,0,30,0,7,128,1,128,10,6,12,11,0,2, + 255,192,255,192,0,0,0,0,255,192,255,192,9,9,18,11, + 1,1,192,0,240,0,60,0,15,0,3,128,15,0,60,0, + 240,0,192,0,7,11,11,11,2,0,124,254,198,6,14,60, + 48,48,0,48,48,9,13,26,11,1,255,60,0,102,0,195, + 0,207,0,219,0,219,0,219,0,219,0,207,128,192,0,192, + 0,99,0,62,0,12,11,22,11,255,0,62,0,63,0,15, + 0,25,128,25,128,25,128,63,192,63,192,48,192,249,240,249, + 240,10,11,22,11,0,0,254,0,255,0,49,128,49,128,63, + 0,63,128,48,192,48,192,48,192,255,128,255,0,10,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,192, + 0,224,0,112,192,127,192,31,0,10,11,22,11,0,0,254, + 0,255,128,99,128,97,192,96,192,96,192,96,192,97,192,99, + 128,255,128,254,0,10,11,22,11,0,0,255,192,255,192,48, + 192,54,192,62,0,62,0,54,0,48,192,48,192,255,192,255, + 192,10,11,22,11,0,0,255,192,255,192,48,192,54,192,62, + 0,62,0,54,0,48,0,48,0,254,0,254,0,11,11,22, + 11,0,0,30,192,127,192,113,192,224,192,192,0,192,0,199, + 224,231,224,112,192,127,192,31,128,10,11,22,11,0,0,243, + 192,243,192,97,128,97,128,127,128,127,128,97,128,97,128,97, + 128,243,192,243,192,8,11,11,11,1,0,255,255,24,24,24, + 24,24,24,24,255,255,10,11,22,11,0,0,31,192,31,192, + 3,0,3,0,3,0,3,0,195,0,195,0,195,0,254,0, + 60,0,11,11,22,11,0,0,247,192,247,192,99,0,102,0, + 108,0,124,0,126,0,103,0,99,128,249,224,249,224,10,11, + 22,11,0,0,252,0,252,0,48,0,48,0,48,0,48,0, + 48,192,48,192,48,192,255,192,255,192,10,11,22,11,0,0, + 225,192,225,192,115,128,115,128,127,128,109,128,109,128,109,128, + 97,128,243,192,243,192,10,11,22,11,0,0,231,192,247,192, + 113,128,121,128,105,128,109,128,101,128,103,128,99,128,251,128, + 249,128,10,11,22,11,0,0,30,0,127,128,115,128,225,192, + 192,192,192,192,192,192,225,192,115,128,127,128,30,0,10,11, + 22,11,0,0,255,0,255,128,97,192,96,192,97,192,127,128, + 127,0,96,0,96,0,252,0,252,0,10,13,26,11,0,254, + 30,0,127,128,115,128,225,192,192,192,192,192,192,192,225,192, + 115,128,127,128,30,64,63,192,51,128,11,11,22,11,0,0, + 255,0,255,128,97,192,96,192,97,192,127,128,127,0,99,128, + 97,192,252,224,252,224,9,11,22,11,1,0,61,128,255,128, + 195,128,193,128,248,0,127,0,15,128,193,128,225,128,255,0, + 222,0,10,11,22,11,0,0,255,192,255,192,204,192,204,192, + 204,192,12,0,12,0,12,0,12,0,127,128,127,128,10,11, + 22,11,0,0,247,192,247,192,97,128,97,128,97,128,97,128, + 97,128,97,128,115,128,63,0,30,0,12,11,22,11,255,0, + 249,240,249,240,96,96,96,96,48,192,48,192,25,128,25,128, + 15,0,15,0,6,0,12,11,22,11,255,0,249,240,249,240, + 96,96,102,96,102,96,111,96,111,96,57,192,57,192,48,192, + 48,192,10,11,22,11,0,0,243,192,243,192,97,128,51,0, + 30,0,12,0,30,0,51,0,97,128,243,192,243,192,10,11, + 22,11,0,0,243,192,243,192,97,128,51,0,63,0,30,0, + 12,0,12,0,12,0,63,0,63,0,8,11,11,11,1,0, + 255,255,199,206,12,24,48,115,227,255,255,4,15,15,11,4, + 253,240,240,192,192,192,192,192,192,192,192,192,192,192,240,240, + 9,16,32,11,1,253,192,0,192,0,96,0,96,0,48,0, + 48,0,24,0,24,0,12,0,12,0,6,0,6,0,3,0, + 3,0,1,128,1,128,4,15,15,11,2,253,240,240,48,48, + 48,48,48,48,48,48,48,48,48,240,240,8,7,7,11,1, + 5,24,60,60,102,102,195,195,11,2,4,11,0,252,255,224, + 255,224,4,3,3,11,3,9,192,96,48,10,9,18,11,0, + 0,63,0,127,128,97,128,1,128,127,128,255,128,193,128,255, + 192,125,192,10,12,24,11,0,0,224,0,224,0,96,0,111, + 0,127,128,113,192,96,192,96,192,96,192,113,192,255,128,239, + 0,10,9,18,11,0,0,61,128,127,128,227,128,193,128,192, + 0,192,0,225,192,127,192,63,0,10,12,24,11,0,0,3, + 128,3,128,1,128,61,128,127,128,227,128,193,128,193,128,193, + 128,227,128,127,192,61,192,10,9,18,11,0,0,30,0,127, + 128,225,192,192,192,255,192,255,192,224,0,127,192,31,192,9, + 12,24,11,1,0,31,128,63,128,48,0,255,0,255,0,48, + 0,48,0,48,0,48,0,48,0,255,0,255,0,10,13,26, + 11,0,252,61,192,127,192,227,128,193,128,193,128,193,128,227, + 128,127,128,61,128,1,128,3,128,63,0,62,0,10,12,24, + 11,0,0,224,0,224,0,96,0,111,0,127,128,113,128,97, + 128,97,128,97,128,97,128,243,192,243,192,8,12,12,11,1, + 0,24,24,0,248,248,24,24,24,24,24,255,255,7,16,16, + 11,1,252,12,12,0,254,254,6,6,6,6,6,6,6,6, + 14,252,248,10,12,24,11,0,0,224,0,224,0,96,0,103, + 128,103,128,110,0,124,0,124,0,110,0,103,0,227,192,227, + 192,8,12,12,11,1,0,248,248,24,24,24,24,24,24,24, + 24,255,255,12,9,18,11,255,0,237,192,255,224,119,96,102, + 96,102,96,102,96,102,96,247,112,247,112,10,9,18,11,0, + 0,239,0,255,128,113,128,97,128,97,128,97,128,97,128,243, + 192,243,192,10,9,18,11,0,0,30,0,127,128,225,192,192, + 192,192,192,192,192,225,192,127,128,30,0,10,13,26,11,0, + 252,239,0,255,128,113,192,96,192,96,192,96,192,113,192,127, + 128,111,0,96,0,96,0,248,0,248,0,10,13,26,11,0, + 252,61,192,127,192,227,128,193,128,193,128,193,128,227,128,127, + 128,61,128,1,128,1,128,7,192,7,192,10,9,18,11,0, + 0,243,128,255,192,60,192,56,0,48,0,48,0,48,0,255, + 0,255,0,8,9,9,11,1,0,127,255,195,240,126,31,195, + 255,254,10,12,24,11,0,0,48,0,48,0,48,0,255,0, + 255,0,48,0,48,0,48,0,48,0,48,192,63,192,31,0, + 10,9,18,11,0,0,231,128,231,128,97,128,97,128,97,128, + 97,128,99,128,127,192,61,192,10,9,18,11,0,0,243,192, + 243,192,97,128,97,128,51,0,51,0,30,0,30,0,12,0, + 11,9,18,11,0,0,241,224,241,224,100,192,110,192,110,192, + 123,192,59,128,49,128,49,128,11,9,18,11,0,0,251,224, + 251,224,49,128,27,0,14,0,27,0,49,128,251,224,251,224, + 10,13,26,11,0,252,243,192,243,192,97,128,97,128,51,0, + 51,0,30,0,30,0,12,0,24,0,56,0,252,0,252,0, + 8,9,9,11,1,0,255,255,198,12,24,48,99,255,255,4, + 15,15,11,3,253,48,96,96,96,96,96,192,96,96,96,96, + 96,96,96,48,2,14,14,11,4,253,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,4,15,15,11,3,253,192,96, + 96,96,96,96,48,96,96,96,96,96,96,96,192,8,3,3, + 11,1,4,115,255,222,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=21 x= 6 y=13 dx=15 dy= 0 ascent=21 len=42 + Font Bounding box w=22 h=35 x=-4 y=-9 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =15 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB18[6429] U8G_SECTION(".progmem.u8g_font_courB18") = { + 0,22,35,252,247,15,3,223,8,17,32,255,251,21,251,16, + 251,0,0,0,15,0,1,4,16,16,15,5,0,96,240,240, + 240,240,240,240,96,96,96,96,96,0,96,96,96,7,7,7, + 15,3,9,238,238,238,238,68,68,68,12,19,38,15,1,254, + 12,192,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,51,0,10,20,40,15,2,253,12,0,12,0, + 61,128,127,128,195,128,193,128,192,0,224,0,126,0,31,128, + 1,192,0,192,192,192,225,192,255,128,223,0,12,0,12,0, + 12,0,12,0,11,15,30,15,2,0,60,0,102,0,195,0, + 195,0,102,0,60,0,1,192,15,0,56,0,231,128,12,192, + 24,96,24,96,12,192,7,128,11,14,28,15,2,0,30,0, + 63,0,99,0,96,0,96,0,48,0,56,0,124,192,111,192, + 199,128,195,0,199,128,255,224,124,224,3,7,7,15,5,8, + 224,224,224,224,224,64,64,5,20,20,15,6,252,24,56,48, + 96,96,96,192,192,192,192,192,192,192,192,96,96,96,48,56, + 24,5,20,20,15,3,252,192,224,96,48,48,48,24,24,24, + 24,24,24,24,24,48,48,48,96,224,192,10,11,22,15,2, + 5,12,0,12,0,12,0,204,192,255,192,63,0,12,0,63, + 0,51,0,115,128,97,128,12,12,24,15,1,1,6,0,6, + 0,6,0,6,0,6,0,255,240,255,240,6,0,6,0,6, + 0,6,0,6,0,5,6,6,15,4,253,56,56,112,96,192, + 128,11,2,4,15,2,6,255,224,255,224,3,3,3,15,5, + 0,224,224,224,11,20,40,15,2,253,0,96,0,96,0,192, + 0,192,1,128,1,128,3,0,3,0,6,0,6,0,12,0, + 12,0,24,0,24,0,48,0,48,0,96,0,96,0,192,0, + 192,0,10,16,32,15,2,0,30,0,127,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,127,128,30,0,10,16,32,15,2,0,28,0, + 252,0,252,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,11,16, + 32,15,1,0,31,128,63,192,112,224,96,96,96,96,0,96, + 0,224,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,224,255,224,11,16,32,15,1,0,31,128,63,192,112,224, + 96,96,0,96,0,224,1,192,15,128,15,192,0,224,0,96, + 0,96,192,96,224,224,127,192,63,128,11,16,32,15,1,0, + 3,128,7,128,15,128,13,128,25,128,25,128,49,128,49,128, + 97,128,97,128,255,224,255,224,1,128,1,128,15,224,15,224, + 11,16,32,15,2,0,127,192,127,192,96,0,96,0,96,0, + 111,0,127,192,113,192,0,224,0,96,0,96,0,96,192,224, + 225,192,127,192,63,0,10,16,32,15,2,0,7,192,31,192, + 60,0,112,0,96,0,224,0,223,0,255,128,225,192,192,192, + 192,192,192,192,224,192,113,192,127,128,31,0,10,16,32,15, + 2,0,255,192,255,192,192,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,10,16,32,15,2,0,30,0,127,128,225,192,192,192, + 192,192,192,192,97,128,63,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,16,32,15,3,0,30,0, + 127,128,97,128,192,192,192,192,192,192,192,192,193,192,227,192, + 126,192,60,192,0,192,1,128,3,128,255,0,252,0,3,11, + 11,15,5,0,224,224,224,0,0,0,0,0,224,224,224,5, + 14,14,15,3,253,56,56,56,0,0,0,0,0,56,56,112, + 96,192,128,13,12,24,15,1,1,0,56,0,240,3,192,15, + 0,60,0,240,0,240,0,60,0,15,0,3,192,0,240,0, + 56,12,6,12,15,1,4,255,240,255,240,0,0,0,0,255, + 240,255,240,13,12,24,15,1,1,224,0,120,0,30,0,7, + 128,1,224,0,120,0,120,1,224,7,128,30,0,120,0,224, + 0,9,15,30,15,3,0,126,0,255,0,195,128,193,128,193, + 128,1,128,3,128,15,0,28,0,24,0,24,0,0,0,24, + 0,24,0,24,0,10,18,36,15,2,254,28,0,127,0,99, + 0,193,128,193,128,199,128,207,128,221,128,217,128,217,128,221, + 128,207,192,199,192,192,0,192,0,97,128,127,128,30,0,14, + 15,30,15,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,13,15,30,15,1,0,255,192,255,224,48,112,48, + 48,48,48,48,112,63,224,63,240,48,56,48,24,48,24,48, + 24,48,56,255,240,255,224,12,15,30,15,1,0,15,176,63, + 240,112,112,96,48,224,48,192,0,192,0,192,0,192,0,192, + 0,224,0,96,0,112,48,63,240,15,192,14,15,30,15,0, + 0,255,192,255,240,48,56,48,24,48,28,48,12,48,12,48, + 12,48,12,48,12,48,12,48,24,48,56,255,240,255,224,13, + 15,30,15,1,0,255,240,255,240,48,48,48,48,49,176,49, + 128,63,128,63,128,49,128,49,128,48,24,48,24,48,24,255, + 248,255,248,13,15,30,15,1,0,255,248,255,248,48,24,48, + 24,49,152,49,128,63,128,63,128,49,128,49,128,48,0,48, + 0,48,0,255,0,255,0,13,15,30,15,1,0,15,216,63, + 248,112,56,96,24,224,24,192,0,192,0,192,0,193,248,193, + 248,224,24,96,24,112,56,63,240,15,192,14,15,30,15,0, + 0,252,252,252,252,48,48,48,48,48,48,48,48,63,240,63, + 240,48,48,48,48,48,48,48,48,48,48,252,252,252,252,10, + 15,30,15,2,0,255,192,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,15,30,15,1,0,31,248,31,248,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,192,192,192,192,192, + 192,225,192,127,128,63,0,14,15,30,15,0,0,252,248,252, + 248,48,224,49,192,51,128,55,0,62,0,63,0,59,128,49, + 192,48,224,48,96,48,112,252,60,252,60,12,15,30,15,1, + 0,255,0,255,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,48,24,48,24,48,255,240,255,240,14, + 15,30,15,0,0,240,60,240,60,120,120,120,120,108,216,108, + 216,108,216,103,152,99,24,99,24,96,24,96,24,96,24,248, + 124,248,124,13,15,30,15,1,0,240,248,240,248,120,48,120, + 48,108,48,108,48,102,48,102,48,99,48,99,48,97,176,97, + 176,96,240,248,240,248,112,13,15,30,15,1,0,15,128,63, + 224,112,112,96,48,224,56,192,24,192,24,192,24,192,24,192, + 24,224,56,96,48,112,112,63,224,15,128,13,15,30,15,1, + 0,255,192,255,240,48,56,48,24,48,24,48,24,48,24,48, + 56,63,240,63,192,48,0,48,0,48,0,255,0,255,0,13, + 18,36,15,1,253,15,128,63,224,112,112,96,48,224,56,192, + 24,192,24,192,24,192,24,192,24,224,56,96,48,112,112,63, + 224,15,128,14,24,63,248,57,224,14,15,30,15,0,0,255, + 128,255,224,48,112,48,48,48,48,48,48,48,112,63,224,63, + 128,49,192,48,224,48,96,48,112,252,60,252,60,12,15,30, + 15,1,0,31,176,63,240,112,112,96,48,96,48,112,0,62, + 0,31,192,3,224,0,112,192,48,192,48,224,112,255,224,223, + 192,12,15,30,15,1,0,255,240,255,240,198,48,198,48,198, + 48,198,48,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,63,192,63,192,13,15,30,15,1,0,248,248,248,248,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,48,96,63,224,31,192,14,15,30,15,0,0,248, + 124,248,124,96,24,96,24,48,48,48,48,48,48,24,96,24, + 96,24,96,12,192,12,192,7,128,7,128,7,128,14,15,30, + 15,0,0,248,124,248,124,96,24,99,24,99,24,103,152,103, + 152,111,216,108,216,108,216,60,240,56,112,56,112,56,112,56, + 112,14,15,30,15,0,0,252,252,252,252,112,56,56,112,28, + 224,15,192,7,128,3,0,7,128,12,192,28,224,56,112,112, + 56,252,252,252,252,14,15,30,15,0,0,252,252,252,252,112, + 56,56,112,24,96,12,192,15,192,7,128,3,0,3,0,3, + 0,3,0,3,0,31,224,31,224,11,15,30,15,2,0,255, + 224,255,224,192,224,193,192,195,128,3,0,7,0,14,0,28, + 0,24,0,56,96,112,96,224,96,255,224,255,224,5,20,20, + 15,6,252,248,248,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,248,248,11,20,40,15,2,253,192,0,192, + 0,96,0,96,0,48,0,48,0,24,0,24,0,12,0,12, + 0,6,0,6,0,3,0,3,0,1,128,1,128,0,192,0, + 192,0,96,0,96,5,20,20,15,3,252,248,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,248,248,8, + 8,8,15,3,8,24,24,60,60,102,102,195,195,15,2,4, + 15,0,252,255,254,255,254,5,4,4,15,4,11,192,96,48, + 24,12,11,22,15,1,0,63,0,127,128,97,192,0,192,31, + 192,127,192,224,192,192,192,193,192,255,240,126,240,13,16,32, + 15,1,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 240,60,112,56,56,48,24,48,24,48,24,56,56,60,112,255, + 240,247,192,12,11,22,15,1,0,31,176,127,240,112,240,224, + 112,192,48,192,0,192,0,224,0,112,112,127,240,31,192,13, + 16,32,15,1,0,1,224,1,224,0,96,0,96,0,96,31, + 96,127,224,113,224,224,224,192,96,192,96,192,96,224,224,113, + 224,127,248,31,120,12,11,22,15,1,0,31,128,127,224,112, + 224,224,112,192,48,255,240,255,240,224,0,112,112,127,240,31, + 192,11,16,32,15,2,0,7,224,15,224,28,0,24,0,24, + 0,255,192,255,192,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,192,255,192,13,16,32,15,1,251,31,120,127, + 248,113,224,224,224,192,96,192,96,192,96,224,224,113,224,127, + 224,31,96,0,96,0,96,0,224,63,192,63,128,14,16,32, + 15,0,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 224,60,112,56,48,48,48,48,48,48,48,48,48,48,48,252, + 252,252,252,10,16,32,15,2,0,28,0,28,0,28,0,0, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,8,21,21,15,2,251,14, + 14,14,0,0,255,255,3,3,3,3,3,3,3,3,3,3, + 3,7,254,252,13,16,32,15,1,0,240,0,240,0,48,0, + 48,0,48,0,49,224,49,224,51,128,55,0,62,0,62,0, + 55,0,51,128,49,192,241,248,241,248,10,16,32,15,2,0, + 124,0,124,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,255,192,255,192, + 16,11,22,15,0,0,239,120,255,252,57,204,49,140,49,140, + 49,140,49,140,49,140,49,140,249,239,249,239,14,11,22,15, + 0,0,243,192,247,224,60,112,56,48,48,48,48,48,48,48, + 48,48,48,48,252,252,252,252,12,11,22,15,1,0,31,128, + 127,224,112,224,224,112,192,48,192,48,192,48,224,112,112,224, + 127,224,31,128,13,16,32,15,0,251,247,192,255,240,60,112, + 56,56,48,24,48,24,48,24,56,56,60,112,63,240,55,192, + 48,0,48,0,48,0,254,0,254,0,13,16,32,15,1,251, + 31,120,127,248,113,224,224,224,192,96,192,96,192,96,224,224, + 113,224,127,224,31,96,0,96,0,96,0,96,3,248,3,248, + 12,11,22,15,1,0,121,224,127,240,30,48,28,0,24,0, + 24,0,24,0,24,0,24,0,255,192,255,192,11,11,22,15, + 2,0,62,192,127,192,225,192,224,192,124,0,31,0,7,192, + 192,224,224,224,255,192,223,128,11,15,30,15,1,0,48,0, + 48,0,48,0,48,0,255,192,255,192,48,0,48,0,48,0, + 48,0,48,0,48,0,56,224,31,224,15,128,14,11,22,15, + 0,0,240,240,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,252,15,188,14,11,22,15,0,0,252,252, + 252,252,48,48,48,48,24,96,24,96,12,192,12,192,7,128, + 7,128,3,0,14,11,22,15,0,0,248,124,248,124,99,24, + 99,24,51,48,55,176,55,176,60,240,28,224,24,96,24,96, + 12,11,22,15,1,0,249,240,249,240,48,192,25,128,15,0, + 6,0,15,0,25,128,48,192,249,240,249,240,12,16,32,15, + 1,251,249,240,249,240,96,96,112,224,48,192,57,192,25,128, + 27,128,15,0,15,0,6,0,14,0,12,0,28,0,254,0, + 254,0,10,11,22,15,2,0,255,192,255,192,195,128,199,0, + 14,0,28,0,56,0,112,192,224,192,255,192,255,192,7,20, + 20,15,4,252,14,24,48,48,48,48,48,48,112,224,112,48, + 48,48,48,48,48,48,24,14,2,18,18,15,6,254,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,20,20,15,3,252,224,48,24,24,24,24,24,24,28,14, + 28,24,24,24,24,24,24,24,48,224,12,4,8,15,1,5, + 60,48,126,112,231,224,195,192,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,15,0,1,4, + 16,16,15,4,251,96,96,96,0,96,96,96,96,96,240,240, + 240,240,240,240,96,9,16,32,15,2,0,12,0,12,0,12, + 0,61,128,127,128,227,128,193,128,192,0,192,0,192,0,225, + 128,127,128,63,0,12,0,12,0,12,0,12,15,30,15,1, + 0,15,128,31,192,56,192,48,0,48,0,48,0,48,0,255, + 0,255,0,24,0,24,0,56,0,112,48,255,240,255,224,10, + 11,22,15,2,2,192,192,255,192,127,128,225,192,192,192,192, + 192,192,192,225,192,127,128,255,192,192,192,12,15,30,15,1, + 0,249,240,249,240,112,224,48,192,57,192,25,128,15,0,15, + 0,63,192,6,0,63,192,6,0,6,0,63,192,63,192,2, + 18,18,15,6,254,192,192,192,192,192,192,192,192,0,0,192, + 192,192,192,192,192,192,192,12,18,36,15,1,254,15,224,31, + 224,56,96,48,96,56,0,126,0,207,128,195,224,240,240,124, + 48,31,48,7,240,1,224,0,192,96,192,97,192,127,128,127, + 0,7,3,3,15,3,12,198,198,198,14,14,28,15,0,1, + 7,128,31,224,56,112,103,152,111,216,220,204,216,12,216,12, + 220,204,111,216,103,152,56,112,31,224,7,128,8,11,11,15, + 3,4,60,102,6,126,198,198,207,123,0,255,255,13,9,18, + 15,1,1,14,56,28,112,56,224,113,192,227,128,113,192,56, + 224,28,112,14,56,12,6,12,15,1,4,255,240,255,240,0, + 48,0,48,0,48,0,48,11,2,4,15,2,6,255,224,255, + 224,14,14,28,15,0,1,7,128,31,224,56,112,111,152,111, + 216,204,204,204,204,207,140,205,140,108,216,108,216,56,112,31, + 224,7,128,7,2,2,15,3,13,254,254,8,7,7,15,3, + 9,60,102,195,195,195,102,60,12,14,28,15,1,0,6,0, + 6,0,6,0,6,0,255,240,255,240,6,0,6,0,6,0, + 6,0,0,0,0,0,255,240,255,240,7,9,9,15,4,7, + 124,198,198,12,24,48,96,198,254,7,9,9,15,4,7,124, + 198,198,12,60,6,198,198,124,6,4,4,15,4,12,28,56, + 112,224,14,16,32,15,0,251,240,240,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,56,112,63,252,63,188,48,0, + 48,0,48,0,48,0,48,0,12,18,36,15,1,254,31,240, + 127,240,230,192,230,192,230,192,230,192,230,192,126,192,30,192, + 6,192,6,192,6,192,6,192,6,192,6,192,6,192,62,240, + 62,240,3,3,3,15,5,6,224,224,224,5,6,6,15,4, + 251,48,48,120,24,248,112,8,9,9,15,3,7,24,248,24, + 24,24,24,24,24,255,8,11,11,15,3,4,60,126,195,195, + 195,195,126,60,0,255,255,13,9,18,15,1,1,227,128,113, + 192,56,224,28,112,14,56,28,112,56,224,113,192,227,128,16, + 16,32,15,255,0,24,0,248,1,24,3,24,6,24,12,24, + 24,24,48,24,100,255,204,1,156,3,44,6,76,12,140,24, + 254,48,12,32,30,16,16,32,15,255,0,24,0,248,1,24, + 3,24,6,24,12,24,24,24,48,24,126,255,243,1,163,3, + 6,6,12,12,24,24,48,48,99,32,127,15,16,32,15,0, + 0,124,0,198,2,198,6,12,12,60,24,6,48,198,96,198, + 200,125,152,3,56,6,88,12,152,25,24,49,252,96,24,64, + 60,9,15,30,15,2,252,12,0,12,0,12,0,0,0,12, + 0,12,0,28,0,120,0,224,0,192,0,193,128,193,128,225, + 128,127,128,63,0,14,20,40,15,0,0,56,0,28,0,14, + 0,7,0,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,14,20,40,15,0,0,0,224,1,192,3,128,7, + 0,0,0,63,0,63,0,7,128,7,128,12,192,12,192,28, + 224,24,96,24,96,63,240,63,240,112,56,96,24,252,252,252, + 252,14,21,42,15,0,0,6,0,15,0,31,128,57,192,112, + 224,0,0,63,0,63,0,7,128,7,128,12,192,12,192,28, + 224,24,96,24,96,63,240,63,240,112,56,96,24,252,252,252, + 252,14,19,38,15,0,0,14,96,31,192,51,128,0,0,63, + 0,63,0,7,128,7,128,12,192,12,192,28,224,24,96,24, + 96,63,240,63,240,112,56,96,24,252,252,252,252,14,19,38, + 15,0,0,24,192,24,192,24,192,0,0,63,0,63,0,7, + 128,7,128,12,192,12,192,28,224,24,96,24,96,63,240,63, + 240,112,56,96,24,252,252,252,252,14,20,40,15,0,0,7, + 0,13,128,8,128,13,128,7,0,63,0,63,0,7,128,7, + 128,12,192,12,192,28,224,24,96,24,96,63,240,63,240,112, + 56,96,24,252,252,252,252,15,15,30,15,0,0,15,254,15, + 254,3,134,7,134,7,128,13,152,9,248,25,248,31,152,63, + 128,49,128,97,134,97,134,247,254,247,254,12,20,40,15,1, + 251,15,176,63,240,112,112,96,48,224,48,192,0,192,0,192, + 0,192,0,192,0,224,0,96,16,112,48,63,224,15,192,6, + 0,15,0,3,0,31,0,14,0,13,20,40,15,1,0,56, + 0,28,0,14,0,7,0,0,0,255,240,255,240,48,48,48, + 48,49,176,49,128,63,128,63,128,49,128,49,128,48,24,48, + 24,48,24,255,248,255,248,13,20,40,15,1,0,0,224,1, + 192,3,128,7,0,0,0,255,240,255,240,48,48,48,48,49, + 176,49,128,63,128,63,128,49,128,49,128,48,24,48,24,48, + 24,255,248,255,248,13,21,42,15,1,0,3,0,7,128,15, + 192,28,224,56,112,0,0,255,240,255,240,48,48,48,48,49, + 176,49,128,63,128,63,128,49,128,49,128,48,24,48,24,48, + 24,255,248,255,248,13,19,38,15,1,0,24,192,24,192,24, + 192,0,0,255,240,255,240,48,48,48,48,49,176,49,128,63, + 128,63,128,49,128,49,128,48,24,48,24,48,24,255,248,255, + 248,10,20,40,15,2,0,112,0,56,0,28,0,14,0,0, + 0,255,192,255,192,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,192,255,192,10, + 20,40,15,2,0,3,128,7,0,14,0,28,0,0,0,255, + 192,255,192,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,255,192,255,192,10,21,42, + 15,2,0,12,0,30,0,63,0,115,128,225,192,0,0,255, + 192,255,192,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,255,192,255,192,10,19,38, + 15,2,0,51,0,51,0,51,0,0,0,255,192,255,192,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,14,15,30,15,0,0,255, + 192,255,240,48,56,48,24,48,28,48,12,254,12,254,12,48, + 12,48,12,48,12,48,24,48,56,255,240,255,224,13,19,38, + 15,1,0,14,96,31,192,51,128,0,0,240,248,240,248,120, + 48,120,48,108,48,108,48,102,48,102,48,99,48,99,48,97, + 176,97,176,96,240,248,240,248,112,13,20,40,15,1,0,28, + 0,14,0,7,0,3,128,0,0,15,128,63,224,112,112,96, + 48,224,56,192,24,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,13,20,40,15,1,0,0,224,1, + 192,3,128,7,0,0,0,15,128,63,224,112,112,96,48,224, + 56,192,24,192,24,192,24,192,24,192,24,224,56,96,48,112, + 112,63,224,15,128,13,21,42,15,1,0,3,0,7,128,15, + 192,28,224,56,112,0,0,15,128,63,224,112,112,96,48,224, + 56,192,24,192,24,192,24,192,24,192,24,224,56,96,48,112, + 112,63,224,15,128,13,19,38,15,1,0,14,96,31,192,51, + 128,0,0,15,128,63,224,112,112,96,48,224,56,192,24,192, + 24,192,24,192,24,192,24,224,56,96,48,112,112,63,224,15, + 128,13,19,38,15,1,0,24,192,24,192,24,192,0,0,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,192,24,224,56,96,48,112,112,63,224,15,128,12,12,24, + 15,1,1,64,32,224,112,112,224,57,192,31,128,15,0,15, + 0,31,128,57,192,112,224,224,112,64,32,13,18,36,15,1, + 255,0,24,0,48,15,224,63,224,112,112,96,240,225,184,193, + 24,195,24,198,24,196,24,204,24,232,56,120,48,112,112,63, + 224,111,128,192,0,13,20,40,15,1,0,56,0,28,0,14, + 0,7,0,0,0,248,248,248,248,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,48,96,63, + 224,31,192,13,20,40,15,1,0,0,224,1,192,3,128,7, + 0,0,0,248,248,248,248,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,48,96,63,224,31, + 192,13,21,42,15,1,0,3,0,7,128,15,192,28,224,56, + 112,0,0,248,248,248,248,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,96,48,48,96,63,224,31, + 192,13,19,38,15,1,0,24,192,24,192,24,192,0,0,248, + 248,248,248,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,96,48,48,96,63,224,31,192,14,20,40, + 15,0,0,0,224,1,192,3,128,7,0,0,0,252,252,252, + 252,112,56,56,112,24,96,12,192,15,192,7,128,3,0,3, + 0,3,0,3,0,3,0,31,224,31,224,13,15,30,15,1, + 0,252,0,252,0,48,0,63,192,63,240,48,56,48,24,48, + 24,48,24,48,56,63,240,63,192,48,0,252,0,252,0,12, + 16,32,15,1,0,15,0,31,128,57,192,48,192,48,192,49, + 192,55,128,55,192,48,224,48,112,48,48,48,48,48,48,51, + 112,251,224,249,192,12,16,32,15,1,0,112,0,56,0,28, + 0,14,0,0,0,63,0,127,128,97,192,0,192,31,192,127, + 192,224,192,192,192,193,192,255,240,126,240,12,16,32,15,1, + 0,1,192,3,128,7,0,14,0,0,0,63,0,127,128,97, + 192,0,192,31,192,127,192,224,192,192,192,193,192,255,240,126, + 240,12,16,32,15,1,0,14,0,31,0,59,128,113,192,0, + 0,63,0,127,128,97,192,0,192,31,192,127,192,224,192,192, + 192,193,192,255,240,126,240,12,15,30,15,1,0,28,192,63, + 128,103,0,0,0,63,0,127,128,97,192,0,192,31,192,127, + 192,224,192,192,192,193,192,255,240,126,240,12,15,30,15,1, + 0,49,128,49,128,49,128,0,0,63,0,127,128,97,192,0, + 192,31,192,127,192,224,192,192,192,193,192,255,240,126,240,12, + 16,32,15,1,0,14,0,27,0,17,0,27,0,14,0,63, + 0,127,128,97,192,0,192,31,192,127,192,224,192,192,192,193, + 192,255,240,126,240,14,11,22,15,0,0,60,240,127,248,103, + 156,3,12,31,12,127,252,227,252,195,0,199,140,255,252,124, + 240,11,16,32,15,1,251,31,96,127,224,112,224,224,96,192, + 96,192,0,192,0,224,0,112,96,127,224,31,192,6,0,15, + 0,3,0,31,0,14,0,12,16,32,15,1,0,56,0,28, + 0,14,0,7,0,0,0,31,128,127,224,112,224,224,112,192, + 48,255,240,255,240,224,0,112,112,127,240,31,192,12,16,32, + 15,1,0,1,192,3,128,7,0,14,0,0,0,31,128,127, + 224,112,224,224,112,192,48,255,240,255,240,224,0,112,112,127, + 240,31,192,12,16,32,15,1,0,7,0,15,128,29,192,56, + 224,0,0,31,128,127,224,112,224,224,112,192,48,255,240,255, + 240,224,0,112,112,127,240,31,192,12,15,30,15,1,0,49, + 128,49,128,49,128,0,0,31,128,127,224,112,224,224,112,192, + 48,255,240,255,240,224,0,112,112,127,240,31,192,10,16,32, + 15,2,0,224,0,112,0,56,0,28,0,0,0,124,0,124, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,10,16,32,15,2,0,3,128,7,0,14,0,28, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,10,16,32,15,2,0,28, + 0,62,0,119,0,227,128,0,0,124,0,124,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,192,255,192,10, + 15,30,15,2,0,99,0,99,0,99,0,0,0,124,0,124, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,17,34,15,0,0,240,0,252,112,15,240,31, + 128,125,192,112,224,15,240,63,240,56,120,112,56,96,24,96, + 24,96,24,112,56,56,112,63,240,15,192,14,15,30,15,0, + 0,14,96,31,192,51,128,0,0,243,192,247,224,60,112,56, + 48,48,48,48,48,48,48,48,48,48,48,252,252,252,252,12, + 16,32,15,1,0,56,0,28,0,14,0,7,0,0,0,31, + 128,127,224,112,224,224,112,192,48,192,48,192,48,224,112,112, + 224,127,224,31,128,12,16,32,15,1,0,1,192,3,128,7, + 0,14,0,0,0,31,128,127,224,112,224,224,112,192,48,192, + 48,192,48,224,112,112,224,127,224,31,128,12,16,32,15,1, + 0,14,0,31,0,59,128,113,192,0,0,31,128,127,224,112, + 224,224,112,192,48,192,48,192,48,224,112,112,224,127,224,31, + 128,12,15,30,15,1,0,28,192,63,128,103,0,0,0,31, + 128,127,224,112,224,224,112,192,48,192,48,192,48,224,112,112, + 224,127,224,31,128,12,15,30,15,1,0,49,128,49,128,49, + 128,0,0,31,128,127,224,112,224,224,112,192,48,192,48,192, + 48,224,112,112,224,127,224,31,128,13,12,24,15,0,1,7, + 0,7,0,7,0,0,0,0,0,255,248,255,248,0,0,0, + 0,7,0,7,0,7,0,14,14,28,15,0,254,0,12,15, + 216,63,240,56,112,112,216,97,152,99,24,102,24,108,56,56, + 112,63,240,63,192,96,0,192,0,14,16,32,15,0,0,56, + 0,28,0,14,0,7,0,0,0,240,240,240,240,48,48,48, + 48,48,48,48,48,48,48,48,48,56,112,31,252,15,188,14, + 16,32,15,0,0,1,192,3,128,7,0,14,0,0,0,240, + 240,240,240,48,48,48,48,48,48,48,48,48,48,48,48,56, + 112,31,252,15,188,14,16,32,15,0,0,7,0,15,128,29, + 192,56,224,0,0,240,240,240,240,48,48,48,48,48,48,48, + 48,48,48,48,48,56,112,31,252,15,188,14,15,30,15,0, + 0,24,192,24,192,24,192,0,0,240,240,240,240,48,48,48, + 48,48,48,48,48,48,48,48,48,56,112,31,252,15,188,12, + 21,42,15,1,251,0,224,1,192,3,128,7,0,0,0,249, + 240,249,240,96,96,112,224,48,192,57,192,25,128,27,128,15, + 0,15,0,6,0,14,0,12,0,28,0,254,0,254,0,13, + 21,42,15,1,251,240,0,240,0,48,0,48,0,48,0,55, + 192,63,240,60,112,56,56,48,24,48,24,48,24,56,56,60, + 112,63,240,55,192,48,0,48,0,48,0,254,0,254,0,12, + 20,40,15,1,251,49,128,49,128,49,128,0,0,249,240,249, + 240,96,96,112,224,48,192,57,192,25,128,27,128,15,0,15, + 0,6,0,14,0,12,0,28,0,254,0,254,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=21 x= 6 y=11 dx=15 dy= 0 ascent=17 len=40 + Font Bounding box w=22 h=35 x=-4 y=-9 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =15 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB18r[3001] U8G_SECTION(".progmem.u8g_font_courB18r") = { + 0,22,35,252,247,15,3,223,8,17,32,127,251,17,251,16, + 251,0,0,0,15,0,1,4,16,16,15,5,0,96,240,240, + 240,240,240,240,96,96,96,96,96,0,96,96,96,7,7,7, + 15,3,9,238,238,238,238,68,68,68,12,19,38,15,1,254, + 12,192,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,51,0,10,20,40,15,2,253,12,0,12,0, + 61,128,127,128,195,128,193,128,192,0,224,0,126,0,31,128, + 1,192,0,192,192,192,225,192,255,128,223,0,12,0,12,0, + 12,0,12,0,11,15,30,15,2,0,60,0,102,0,195,0, + 195,0,102,0,60,0,1,192,15,0,56,0,231,128,12,192, + 24,96,24,96,12,192,7,128,11,14,28,15,2,0,30,0, + 63,0,99,0,96,0,96,0,48,0,56,0,124,192,111,192, + 199,128,195,0,199,128,255,224,124,224,3,7,7,15,5,8, + 224,224,224,224,224,64,64,5,20,20,15,6,252,24,56,48, + 96,96,96,192,192,192,192,192,192,192,192,96,96,96,48,56, + 24,5,20,20,15,3,252,192,224,96,48,48,48,24,24,24, + 24,24,24,24,24,48,48,48,96,224,192,10,11,22,15,2, + 5,12,0,12,0,12,0,204,192,255,192,63,0,12,0,63, + 0,51,0,115,128,97,128,12,12,24,15,1,1,6,0,6, + 0,6,0,6,0,6,0,255,240,255,240,6,0,6,0,6, + 0,6,0,6,0,5,6,6,15,4,253,56,56,112,96,192, + 128,11,2,4,15,2,6,255,224,255,224,3,3,3,15,5, + 0,224,224,224,11,20,40,15,2,253,0,96,0,96,0,192, + 0,192,1,128,1,128,3,0,3,0,6,0,6,0,12,0, + 12,0,24,0,24,0,48,0,48,0,96,0,96,0,192,0, + 192,0,10,16,32,15,2,0,30,0,127,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,127,128,30,0,10,16,32,15,2,0,28,0, + 252,0,252,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,11,16, + 32,15,1,0,31,128,63,192,112,224,96,96,96,96,0,96, + 0,224,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,224,255,224,11,16,32,15,1,0,31,128,63,192,112,224, + 96,96,0,96,0,224,1,192,15,128,15,192,0,224,0,96, + 0,96,192,96,224,224,127,192,63,128,11,16,32,15,1,0, + 3,128,7,128,15,128,13,128,25,128,25,128,49,128,49,128, + 97,128,97,128,255,224,255,224,1,128,1,128,15,224,15,224, + 11,16,32,15,2,0,127,192,127,192,96,0,96,0,96,0, + 111,0,127,192,113,192,0,224,0,96,0,96,0,96,192,224, + 225,192,127,192,63,0,10,16,32,15,2,0,7,192,31,192, + 60,0,112,0,96,0,224,0,223,0,255,128,225,192,192,192, + 192,192,192,192,224,192,113,192,127,128,31,0,10,16,32,15, + 2,0,255,192,255,192,192,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,10,16,32,15,2,0,30,0,127,128,225,192,192,192, + 192,192,192,192,97,128,63,0,127,128,225,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,16,32,15,3,0,30,0, + 127,128,97,128,192,192,192,192,192,192,192,192,193,192,227,192, + 126,192,60,192,0,192,1,128,3,128,255,0,252,0,3,11, + 11,15,5,0,224,224,224,0,0,0,0,0,224,224,224,5, + 14,14,15,3,253,56,56,56,0,0,0,0,0,56,56,112, + 96,192,128,13,12,24,15,1,1,0,56,0,240,3,192,15, + 0,60,0,240,0,240,0,60,0,15,0,3,192,0,240,0, + 56,12,6,12,15,1,4,255,240,255,240,0,0,0,0,255, + 240,255,240,13,12,24,15,1,1,224,0,120,0,30,0,7, + 128,1,224,0,120,0,120,1,224,7,128,30,0,120,0,224, + 0,9,15,30,15,3,0,126,0,255,0,195,128,193,128,193, + 128,1,128,3,128,15,0,28,0,24,0,24,0,0,0,24, + 0,24,0,24,0,10,18,36,15,2,254,28,0,127,0,99, + 0,193,128,193,128,199,128,207,128,221,128,217,128,217,128,221, + 128,207,192,199,192,192,0,192,0,97,128,127,128,30,0,14, + 15,30,15,0,0,63,0,63,0,7,128,7,128,12,192,12, + 192,28,224,24,96,24,96,63,240,63,240,112,56,96,24,252, + 252,252,252,13,15,30,15,1,0,255,192,255,224,48,112,48, + 48,48,48,48,112,63,224,63,240,48,56,48,24,48,24,48, + 24,48,56,255,240,255,224,12,15,30,15,1,0,15,176,63, + 240,112,112,96,48,224,48,192,0,192,0,192,0,192,0,192, + 0,224,0,96,0,112,48,63,240,15,192,14,15,30,15,0, + 0,255,192,255,240,48,56,48,24,48,28,48,12,48,12,48, + 12,48,12,48,12,48,12,48,24,48,56,255,240,255,224,13, + 15,30,15,1,0,255,240,255,240,48,48,48,48,49,176,49, + 128,63,128,63,128,49,128,49,128,48,24,48,24,48,24,255, + 248,255,248,13,15,30,15,1,0,255,248,255,248,48,24,48, + 24,49,152,49,128,63,128,63,128,49,128,49,128,48,0,48, + 0,48,0,255,0,255,0,13,15,30,15,1,0,15,216,63, + 248,112,56,96,24,224,24,192,0,192,0,192,0,193,248,193, + 248,224,24,96,24,112,56,63,240,15,192,14,15,30,15,0, + 0,252,252,252,252,48,48,48,48,48,48,48,48,63,240,63, + 240,48,48,48,48,48,48,48,48,48,48,252,252,252,252,10, + 15,30,15,2,0,255,192,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,255, + 192,255,192,13,15,30,15,1,0,31,248,31,248,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,192,192,192,192,192, + 192,225,192,127,128,63,0,14,15,30,15,0,0,252,248,252, + 248,48,224,49,192,51,128,55,0,62,0,63,0,59,128,49, + 192,48,224,48,96,48,112,252,60,252,60,12,15,30,15,1, + 0,255,0,255,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,48,24,48,24,48,255,240,255,240,14, + 15,30,15,0,0,240,60,240,60,120,120,120,120,108,216,108, + 216,108,216,103,152,99,24,99,24,96,24,96,24,96,24,248, + 124,248,124,13,15,30,15,1,0,240,248,240,248,120,48,120, + 48,108,48,108,48,102,48,102,48,99,48,99,48,97,176,97, + 176,96,240,248,240,248,112,13,15,30,15,1,0,15,128,63, + 224,112,112,96,48,224,56,192,24,192,24,192,24,192,24,192, + 24,224,56,96,48,112,112,63,224,15,128,13,15,30,15,1, + 0,255,192,255,240,48,56,48,24,48,24,48,24,48,24,48, + 56,63,240,63,192,48,0,48,0,48,0,255,0,255,0,13, + 18,36,15,1,253,15,128,63,224,112,112,96,48,224,56,192, + 24,192,24,192,24,192,24,192,24,224,56,96,48,112,112,63, + 224,15,128,14,24,63,248,57,224,14,15,30,15,0,0,255, + 128,255,224,48,112,48,48,48,48,48,48,48,112,63,224,63, + 128,49,192,48,224,48,96,48,112,252,60,252,60,12,15,30, + 15,1,0,31,176,63,240,112,112,96,48,96,48,112,0,62, + 0,31,192,3,224,0,112,192,48,192,48,224,112,255,224,223, + 192,12,15,30,15,1,0,255,240,255,240,198,48,198,48,198, + 48,198,48,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,63,192,63,192,13,15,30,15,1,0,248,248,248,248,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,48,48,96,63,224,31,192,14,15,30,15,0,0,248, + 124,248,124,96,24,96,24,48,48,48,48,48,48,24,96,24, + 96,24,96,12,192,12,192,7,128,7,128,7,128,14,15,30, + 15,0,0,248,124,248,124,96,24,99,24,99,24,103,152,103, + 152,111,216,108,216,108,216,60,240,56,112,56,112,56,112,56, + 112,14,15,30,15,0,0,252,252,252,252,112,56,56,112,28, + 224,15,192,7,128,3,0,7,128,12,192,28,224,56,112,112, + 56,252,252,252,252,14,15,30,15,0,0,252,252,252,252,112, + 56,56,112,24,96,12,192,15,192,7,128,3,0,3,0,3, + 0,3,0,3,0,31,224,31,224,11,15,30,15,2,0,255, + 224,255,224,192,224,193,192,195,128,3,0,7,0,14,0,28, + 0,24,0,56,96,112,96,224,96,255,224,255,224,5,20,20, + 15,6,252,248,248,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,248,248,11,20,40,15,2,253,192,0,192, + 0,96,0,96,0,48,0,48,0,24,0,24,0,12,0,12, + 0,6,0,6,0,3,0,3,0,1,128,1,128,0,192,0, + 192,0,96,0,96,5,20,20,15,3,252,248,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,248,248,8, + 8,8,15,3,8,24,24,60,60,102,102,195,195,15,2,4, + 15,0,252,255,254,255,254,5,4,4,15,4,11,192,96,48, + 24,12,11,22,15,1,0,63,0,127,128,97,192,0,192,31, + 192,127,192,224,192,192,192,193,192,255,240,126,240,13,16,32, + 15,1,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 240,60,112,56,56,48,24,48,24,48,24,56,56,60,112,255, + 240,247,192,12,11,22,15,1,0,31,176,127,240,112,240,224, + 112,192,48,192,0,192,0,224,0,112,112,127,240,31,192,13, + 16,32,15,1,0,1,224,1,224,0,96,0,96,0,96,31, + 96,127,224,113,224,224,224,192,96,192,96,192,96,224,224,113, + 224,127,248,31,120,12,11,22,15,1,0,31,128,127,224,112, + 224,224,112,192,48,255,240,255,240,224,0,112,112,127,240,31, + 192,11,16,32,15,2,0,7,224,15,224,28,0,24,0,24, + 0,255,192,255,192,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,192,255,192,13,16,32,15,1,251,31,120,127, + 248,113,224,224,224,192,96,192,96,192,96,224,224,113,224,127, + 224,31,96,0,96,0,96,0,224,63,192,63,128,14,16,32, + 15,0,0,240,0,240,0,48,0,48,0,48,0,55,192,63, + 224,60,112,56,48,48,48,48,48,48,48,48,48,48,48,252, + 252,252,252,10,16,32,15,2,0,28,0,28,0,28,0,0, + 0,0,0,124,0,124,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,255,192,255,192,8,21,21,15,2,251,14, + 14,14,0,0,255,255,3,3,3,3,3,3,3,3,3,3, + 3,7,254,252,13,16,32,15,1,0,240,0,240,0,48,0, + 48,0,48,0,49,224,49,224,51,128,55,0,62,0,62,0, + 55,0,51,128,49,192,241,248,241,248,10,16,32,15,2,0, + 124,0,124,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,255,192,255,192, + 16,11,22,15,0,0,239,120,255,252,57,204,49,140,49,140, + 49,140,49,140,49,140,49,140,249,239,249,239,14,11,22,15, + 0,0,243,192,247,224,60,112,56,48,48,48,48,48,48,48, + 48,48,48,48,252,252,252,252,12,11,22,15,1,0,31,128, + 127,224,112,224,224,112,192,48,192,48,192,48,224,112,112,224, + 127,224,31,128,13,16,32,15,0,251,247,192,255,240,60,112, + 56,56,48,24,48,24,48,24,56,56,60,112,63,240,55,192, + 48,0,48,0,48,0,254,0,254,0,13,16,32,15,1,251, + 31,120,127,248,113,224,224,224,192,96,192,96,192,96,224,224, + 113,224,127,224,31,96,0,96,0,96,0,96,3,248,3,248, + 12,11,22,15,1,0,121,224,127,240,30,48,28,0,24,0, + 24,0,24,0,24,0,24,0,255,192,255,192,11,11,22,15, + 2,0,62,192,127,192,225,192,224,192,124,0,31,0,7,192, + 192,224,224,224,255,192,223,128,11,15,30,15,1,0,48,0, + 48,0,48,0,48,0,255,192,255,192,48,0,48,0,48,0, + 48,0,48,0,48,0,56,224,31,224,15,128,14,11,22,15, + 0,0,240,240,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,252,15,188,14,11,22,15,0,0,252,252, + 252,252,48,48,48,48,24,96,24,96,12,192,12,192,7,128, + 7,128,3,0,14,11,22,15,0,0,248,124,248,124,99,24, + 99,24,51,48,55,176,55,176,60,240,28,224,24,96,24,96, + 12,11,22,15,1,0,249,240,249,240,48,192,25,128,15,0, + 6,0,15,0,25,128,48,192,249,240,249,240,12,16,32,15, + 1,251,249,240,249,240,96,96,112,224,48,192,57,192,25,128, + 27,128,15,0,15,0,6,0,14,0,12,0,28,0,254,0, + 254,0,10,11,22,15,2,0,255,192,255,192,195,128,199,0, + 14,0,28,0,56,0,112,192,224,192,255,192,255,192,7,20, + 20,15,4,252,14,24,48,48,48,48,48,48,112,224,112,48, + 48,48,48,48,48,48,24,14,2,18,18,15,6,254,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,20,20,15,3,252,224,48,24,24,24,24,24,24,28,14, + 28,24,24,24,24,24,24,24,48,224,12,4,8,15,1,5, + 60,48,126,112,231,224,195,192,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 20, '1' Height: 21 + Calculated Max Values w=21 h=29 x= 8 y=17 dx=20 dy= 0 ascent=26 len=87 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24[10502] U8G_SECTION(".progmem.u8g_font_courB24") = { + 0,30,44,249,245,20,5,57,12,115,32,255,249,26,249,21, + 249,0,0,0,20,0,1,5,21,21,20,7,0,112,248,248, + 248,248,248,112,112,112,112,112,112,112,112,112,32,0,0,112, + 248,112,9,10,20,20,5,10,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,65,0,15,26,52,20, + 2,253,14,56,14,56,14,56,14,56,14,56,14,56,14,56, + 14,56,127,254,127,254,127,254,28,112,28,112,28,112,28,112, + 255,252,255,252,255,252,56,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,224,14,27,54,20,3,252,7,0,7,0, + 7,0,15,216,63,248,127,248,240,120,224,56,224,56,240,0, + 254,0,127,192,63,240,7,248,0,252,0,60,224,28,224,28, + 240,60,255,248,255,240,231,128,7,0,7,0,7,0,7,0, + 7,0,15,21,42,20,2,0,31,0,63,128,49,128,96,192, + 96,192,96,192,113,194,63,142,31,62,0,248,3,224,31,0, + 252,248,241,252,195,142,3,6,3,6,3,6,1,140,1,252, + 0,248,14,18,36,20,2,0,7,160,31,224,63,224,60,96, + 56,0,56,0,60,0,28,0,30,0,127,60,127,188,243,188, + 225,240,224,240,224,240,255,252,127,188,63,60,4,11,11,20, + 8,10,112,112,112,112,112,224,224,224,224,224,224,7,26,26, + 20,8,251,14,14,30,60,56,56,120,112,112,240,240,240,224, + 224,240,240,240,112,112,120,56,60,28,30,14,14,7,26,26, + 20,4,251,224,224,240,120,56,56,60,28,28,30,30,30,14, + 14,30,30,30,28,28,60,56,120,112,240,224,224,15,14,28, + 20,3,7,3,128,3,128,3,128,3,128,99,140,251,190,127, + 252,31,240,15,224,15,224,30,240,60,120,120,60,48,24,17, + 17,51,20,1,1,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,255,255,128,255,255,128, + 255,255,128,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,7,10,10,20,5,251,30,30, + 60,60,56,112,112,224,224,192,15,3,6,20,2,8,255,254, + 255,254,255,254,5,4,4,20,7,0,112,248,248,112,13,27, + 54,20,3,252,0,56,0,56,0,120,0,112,0,112,0,224, + 0,224,1,224,1,192,1,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,28,0,60,0,56,0,56,0, + 112,0,112,0,240,0,224,0,224,0,13,21,42,20,3,0, + 15,128,63,224,127,240,112,112,240,120,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,112,112,127,240,63,224,15,128,13,21,42,20,4,0, + 3,0,15,0,127,0,255,0,255,0,103,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,255,248,255,248,255,248,14,21,42,20,2,0, + 7,192,31,240,63,248,120,60,112,28,112,28,112,28,0,28, + 0,56,0,120,0,240,1,224,3,192,7,128,15,0,30,0, + 60,0,120,0,255,252,255,252,255,252,15,21,42,20,2,0, + 7,224,31,240,127,248,120,60,112,28,0,28,0,28,0,60, + 7,248,7,240,7,248,0,124,0,28,0,14,0,14,0,14, + 0,30,224,60,255,252,255,248,63,224,14,21,42,20,2,0, + 0,240,1,240,1,240,3,240,7,240,7,112,15,112,14,112, + 30,112,28,112,56,112,120,112,112,112,255,252,255,252,255,252, + 0,112,0,112,3,252,3,252,3,252,15,21,42,20,2,0, + 63,252,63,252,63,252,56,0,56,0,56,0,56,0,63,224, + 63,248,63,252,56,124,0,30,0,14,0,14,0,14,0,14, + 64,30,240,60,255,248,127,248,31,224,14,21,42,20,3,0, + 1,248,7,248,15,248,31,0,60,0,120,0,112,0,112,0, + 227,192,239,240,255,240,248,120,240,60,224,28,224,28,240,28, + 112,60,120,120,127,248,63,240,15,192,14,21,42,20,2,0, + 255,252,255,252,255,252,224,60,224,56,224,56,0,56,0,120, + 0,112,0,112,0,240,0,224,0,224,1,224,1,192,1,192, + 3,192,3,128,7,128,7,0,7,0,14,21,42,20,3,0, + 15,128,63,224,127,240,112,112,224,56,224,56,224,56,112,112, + 127,240,63,224,63,240,124,248,240,60,224,28,224,28,224,28, + 224,28,248,124,127,248,63,240,15,192,14,21,42,20,3,0, + 15,128,63,224,127,240,120,240,240,120,224,56,224,60,224,60, + 224,60,240,124,120,252,63,220,63,156,15,60,0,56,0,120, + 0,112,97,240,255,224,255,128,126,0,5,15,15,20,7,0, + 112,248,248,112,0,0,0,0,0,0,0,112,248,248,112,8, + 19,19,20,5,252,14,31,31,14,0,0,0,0,0,0,30, + 30,60,56,120,112,224,224,192,18,19,57,20,0,0,0,1, + 192,0,3,192,0,15,192,0,63,128,0,254,0,1,248,0, + 7,224,0,31,128,0,127,0,0,252,0,0,127,0,0,31, + 128,0,7,224,0,1,248,0,0,254,0,0,63,128,0,15, + 192,0,3,192,0,1,192,17,9,27,20,1,5,255,255,128, + 255,255,128,255,255,128,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,255,255,128,18,19,57,20,1,0,224,0, + 0,240,0,0,252,0,0,127,0,0,31,192,0,7,224,0, + 1,248,0,0,126,0,0,63,128,0,15,192,0,63,128,0, + 126,0,1,248,0,7,224,0,31,192,0,127,0,0,252,0, + 0,240,0,0,224,0,0,13,20,40,20,3,0,31,192,127, + 224,255,240,224,248,224,56,224,56,0,56,0,120,0,240,3, + 240,7,192,7,128,7,0,7,0,0,0,0,0,0,0,7, + 0,15,128,7,0,14,23,46,20,3,254,15,192,31,224,56, + 112,112,48,96,48,224,48,192,48,193,240,199,240,198,48,204, + 48,204,48,204,48,206,48,199,252,195,188,192,0,224,0,96, + 0,112,48,56,112,31,224,15,192,21,20,60,20,255,0,31, + 240,0,31,248,0,31,248,0,1,220,0,1,220,0,1,220, + 0,3,142,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,18,20,60,20,1, + 0,255,248,0,255,254,0,255,255,0,28,7,128,28,3,128, + 28,3,128,28,3,128,28,7,128,31,255,0,31,252,0,31, + 254,0,28,15,128,28,3,192,28,1,192,28,1,192,28,1, + 192,28,3,192,255,255,128,255,255,0,255,252,0,18,20,60, + 20,1,0,3,249,128,15,255,128,31,255,128,62,15,128,120, + 7,128,112,3,128,240,3,128,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,240,0,0, + 120,3,128,124,7,192,63,255,128,31,255,0,7,252,0,17, + 20,60,20,1,0,255,224,0,255,248,0,255,252,0,56,62, + 0,56,15,0,56,7,0,56,7,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 7,128,56,7,0,56,31,0,255,254,0,255,252,0,255,240, + 0,17,20,60,20,1,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,20,60,20,1,0,255,255,128,255,255,128,255, + 255,128,28,3,128,28,3,128,28,3,128,28,115,128,28,112, + 0,31,240,0,31,240,0,31,240,0,28,112,0,28,112,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,17,20,60,20,2,0,3,243,0,15,255, + 0,31,255,0,60,15,0,120,7,0,112,7,0,240,7,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,255,128,224, + 255,128,224,255,128,240,7,0,112,7,0,124,15,0,63,255, + 0,31,254,0,7,248,0,17,20,60,20,1,0,255,127,128, + 255,127,128,255,127,128,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,63,254,0,63,254,0,63,254,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 255,127,128,255,127,128,255,127,128,13,20,40,20,3,0,255, + 248,255,248,255,248,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,255,248,255,248,255,248,17,20,60,20,2,0,7,255,128, + 7,255,128,7,255,128,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,224,56,0,224,56, + 0,224,56,0,224,56,0,224,56,0,224,120,0,240,240,0, + 255,240,0,127,224,0,31,128,0,19,20,60,20,1,0,255, + 159,192,255,159,192,255,159,192,28,15,0,28,30,0,28,60, + 0,28,120,0,28,240,0,31,224,0,31,240,0,31,248,0, + 30,124,0,28,60,0,28,30,0,28,14,0,28,15,0,28, + 7,0,255,135,224,255,135,224,255,135,224,17,20,60,20,1, + 0,255,224,0,255,224,0,255,224,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,3,128,14,3,128,14,3,128,14,3,128,14,3, + 128,14,3,128,255,255,128,255,255,128,255,255,128,21,20,60, + 20,255,0,252,1,248,252,1,248,254,3,248,62,3,224,63, + 7,224,63,7,224,59,142,224,59,142,224,59,222,224,57,220, + 224,57,220,224,56,248,224,56,248,224,56,248,224,56,112,224, + 56,112,224,56,0,224,255,7,248,255,7,248,255,7,248,19, + 20,60,20,0,0,248,31,224,252,31,224,254,31,224,62,3, + 128,63,3,128,63,3,128,59,131,128,59,195,128,57,195,128, + 57,227,128,56,243,128,56,115,128,56,123,128,56,59,128,56, + 31,128,56,31,128,56,15,128,255,7,128,255,7,128,255,3, + 128,18,20,60,20,1,0,3,240,0,15,252,0,31,254,0, + 60,15,0,120,7,128,112,3,128,240,3,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,240,3, + 192,112,3,128,120,7,128,60,15,0,31,254,0,15,252,0, + 3,240,0,17,20,60,20,1,0,255,248,0,255,254,0,255, + 255,0,28,15,0,28,3,128,28,3,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,240,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,18,25,75,20,1,251,3,240,0,15,248, + 0,31,254,0,60,15,0,120,7,128,112,3,128,240,3,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,112,3,128,120,7,128,60,15,0,31,254, + 0,15,252,0,7,240,0,14,0,0,31,225,192,63,255,192, + 63,255,192,56,63,0,20,20,60,20,1,0,255,248,0,255, + 254,0,255,255,0,28,15,0,28,7,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,248,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,255, + 131,240,255,129,240,255,129,240,15,20,40,20,2,0,15,204, + 63,252,127,252,240,124,224,28,224,28,240,28,248,0,127,0, + 63,224,15,248,1,252,0,62,224,30,224,14,224,14,240,30, + 255,252,255,248,231,224,17,20,60,20,1,0,255,255,128,255, + 255,128,255,255,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,63, + 254,0,63,254,0,63,254,0,19,20,60,20,0,0,255,31, + 224,255,31,224,255,31,224,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,28,7,0,31,31, + 0,15,254,0,7,252,0,1,240,0,21,20,60,20,255,0, + 255,143,248,255,143,248,255,143,248,28,1,192,28,1,192,30, + 3,192,14,3,128,14,3,128,7,7,0,7,7,0,7,143, + 0,3,142,0,3,142,0,3,222,0,1,220,0,1,220,0, + 0,248,0,0,248,0,0,248,0,0,112,0,19,20,60,20, + 0,0,255,31,224,255,31,224,255,31,224,112,1,192,112,1, + 192,112,225,192,112,225,192,113,241,192,57,243,128,57,243,128, + 59,187,128,59,187,128,59,187,128,63,31,128,63,31,128,30, + 15,0,30,15,0,30,15,0,28,7,0,28,7,0,19,20, + 60,20,0,0,255,31,224,255,31,224,255,31,224,60,7,128, + 30,15,0,15,30,0,7,188,0,3,248,0,1,240,0,0, + 224,0,1,240,0,3,248,0,7,188,0,15,30,0,14,14, + 0,30,15,0,60,7,128,255,31,224,255,31,224,255,31,224, + 19,20,60,20,0,0,255,31,224,255,31,224,255,31,224,60, + 7,128,14,14,0,15,30,0,7,28,0,7,188,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,15,254,0,15,254,0,15, + 254,0,15,20,40,20,2,0,127,252,127,252,127,252,112,60, + 112,56,112,120,112,240,113,224,1,192,3,192,7,128,15,0, + 14,14,30,14,60,14,120,14,112,14,255,254,255,254,255,254, + 7,26,26,20,8,251,254,254,254,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,254,254,254, + 13,27,54,20,3,252,224,0,224,0,240,0,112,0,112,0, + 56,0,56,0,60,0,28,0,28,0,14,0,14,0,15,0, + 7,0,7,128,3,128,3,128,1,192,1,192,1,224,0,224, + 0,224,0,112,0,112,0,120,0,56,0,56,7,26,26,20, + 4,251,254,254,254,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,254,254,254,13,11,22,20, + 3,11,2,0,7,0,7,0,15,128,31,192,61,224,56,224, + 120,240,240,120,224,56,224,56,20,3,9,20,0,249,255,255, + 240,255,255,240,255,255,240,6,6,6,20,6,16,192,224,112, + 56,28,12,16,15,30,20,2,0,31,224,127,248,127,252,112, + 60,0,28,0,28,15,252,127,252,127,252,240,28,224,28,224, + 124,255,255,127,223,63,159,19,21,63,20,0,0,252,0,0, + 252,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 124,0,29,255,0,31,255,128,31,135,192,30,1,192,30,1, + 224,28,0,224,28,0,224,28,0,224,28,0,224,30,1,192, + 31,3,192,255,255,128,255,255,0,252,254,0,16,15,30,20, + 2,0,7,230,31,254,63,254,124,62,112,14,224,14,224,14, + 224,0,224,0,224,0,240,6,120,15,127,254,63,252,15,240, + 19,21,63,20,1,0,0,63,0,0,63,0,0,63,0,0, + 7,0,0,7,0,0,7,0,7,231,0,31,255,0,63,255, + 0,124,63,0,112,15,0,240,15,0,224,7,0,224,7,0, + 224,7,0,224,7,0,112,15,0,124,63,0,63,255,224,31, + 247,224,7,231,224,18,15,45,20,1,0,3,240,0,15,252, + 0,31,254,0,62,31,0,120,7,128,112,3,128,255,255,128, + 255,255,128,255,255,128,240,0,0,120,0,0,126,3,128,63, + 255,192,31,255,128,7,254,0,16,21,42,20,3,0,1,255, + 7,255,7,255,15,0,14,0,14,0,255,252,255,252,255,252, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,252,255,252,255,252,18,22,66,20,1,249,7,207, + 192,31,255,192,63,255,192,124,126,0,112,30,0,240,30,0, + 224,14,0,224,14,0,224,14,0,240,30,0,112,30,0,120, + 126,0,63,254,0,31,238,0,15,206,0,0,14,0,0,14, + 0,0,30,0,0,60,0,31,252,0,31,248,0,31,224,0, + 18,21,63,20,1,0,252,0,0,252,0,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,248,0,29,252,0,31,254, + 0,31,15,0,30,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,127,31,192,127, + 31,192,127,31,192,15,21,42,20,3,0,7,128,7,128,7, + 128,7,128,0,0,0,0,127,128,127,128,127,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255, + 254,255,254,255,254,12,28,56,20,3,249,3,192,3,192,3, + 192,3,192,0,0,0,0,255,240,255,240,255,240,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,240,255,224,255, + 192,255,128,17,21,63,20,1,0,252,0,0,252,0,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,255,0,28,255, + 0,28,255,0,28,120,0,28,240,0,29,224,0,31,192,0, + 31,192,0,31,224,0,29,240,0,28,248,0,28,124,0,252, + 63,128,252,63,128,252,63,128,15,21,42,20,3,0,127,128, + 127,128,127,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,255,254,255,254,255,254,20,15,45,20,1,0,243,143, + 0,255,255,128,255,255,192,120,241,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,112,225,192,112,225,192,112, + 225,192,252,249,240,252,249,240,252,249,240,17,15,45,20,2, + 0,249,240,0,251,248,0,255,252,0,62,30,0,60,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,254,63,128,254,63,128,254,63,128,17,15, + 45,20,2,0,7,240,0,31,252,0,63,254,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,240, + 7,128,112,7,0,120,15,0,63,254,0,31,252,0,7,240, + 0,19,22,66,20,0,249,252,124,0,253,255,0,255,255,128, + 31,3,192,30,1,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,1,224,30,1,192,31,7,192,31,255,128,29,254, + 0,28,120,0,28,0,0,28,0,0,28,0,0,28,0,0, + 255,192,0,255,192,0,255,192,0,19,22,66,20,1,249,7, + 231,224,31,255,224,63,255,224,124,63,0,112,15,0,240,15, + 0,224,7,0,224,7,0,224,7,0,240,15,0,112,15,0, + 124,63,0,63,255,0,31,247,0,7,199,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,127,224,0,127,224,0,127, + 224,17,15,45,20,2,0,126,62,0,126,255,0,127,255,128, + 15,199,0,15,2,0,15,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,255,252,0,255,252, + 0,255,252,0,15,15,30,20,3,0,15,236,63,252,63,252, + 120,60,112,28,120,0,127,192,63,248,15,252,224,62,224,14, + 248,30,255,252,255,248,231,224,16,20,40,20,2,0,28,0, + 28,0,28,0,28,0,28,0,255,252,255,252,255,252,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,6,30,31, + 31,255,15,254,3,240,18,15,45,20,1,0,252,63,0,252, + 63,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,30,31,0, + 31,255,192,15,255,192,7,247,192,19,15,45,20,0,0,255, + 31,224,255,31,224,255,31,224,60,7,0,28,7,0,30,14, + 0,14,14,0,15,28,0,7,28,0,7,184,0,3,184,0, + 3,240,0,1,240,0,1,224,0,0,224,0,19,15,45,20, + 0,0,254,15,224,254,15,224,254,15,224,56,227,128,56,227, + 128,57,243,128,61,247,128,29,247,0,31,191,0,31,31,0, + 31,31,0,15,30,0,14,14,0,14,14,0,14,14,0,17, + 15,45,20,1,0,254,63,128,254,63,128,254,63,128,60,28, + 0,30,56,0,15,112,0,7,224,0,3,224,0,3,240,0, + 7,120,0,14,60,0,28,30,0,254,63,128,254,63,128,254, + 63,128,19,22,66,20,1,249,255,31,224,255,31,224,255,31, + 224,60,3,128,28,7,0,30,7,0,14,14,0,15,14,0, + 7,28,0,7,156,0,3,184,0,3,248,0,1,240,0,1, + 240,0,0,224,0,0,224,0,1,192,0,1,192,0,3,128, + 0,127,240,0,127,240,0,127,240,0,13,15,30,20,4,0, + 255,248,255,248,255,248,224,240,225,224,227,192,7,128,15,0, + 30,0,60,0,120,56,240,56,255,248,255,248,255,248,9,26, + 52,20,5,251,7,128,15,128,15,128,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,60,0,248,0,248,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,31,128,15,128,7,128,3,26,26,20,8,251,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,9,26,52,20,5,251,240,0, + 248,0,248,0,60,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,30,0,15,128,15,128,31,128,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,252,0,248,0, + 240,0,15,7,14,20,2,6,12,0,63,14,127,142,247,222, + 227,252,225,248,0,96,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,20,0,1,5,21,21, + 20,7,249,112,248,248,112,0,0,112,112,112,112,112,112,112, + 112,248,248,248,248,248,112,32,13,23,46,20,3,255,7,0, + 7,0,7,0,7,0,7,0,15,216,63,248,127,248,120,120, + 240,56,224,56,224,0,224,0,224,0,240,56,120,120,127,248, + 63,240,15,192,7,0,7,0,7,0,7,0,16,20,40,20, + 1,0,3,224,7,240,15,248,30,56,28,56,28,0,28,0, + 28,0,14,0,255,224,255,224,255,224,14,0,14,0,14,0, + 14,2,30,7,127,255,127,255,127,254,15,15,30,20,2,2, + 224,14,247,222,255,254,127,252,60,120,120,60,112,28,112,28, + 112,28,120,60,60,120,127,252,255,254,247,222,224,14,17,20, + 60,20,1,0,254,63,128,254,63,128,254,63,128,56,14,0, + 28,28,0,30,60,0,14,56,0,15,120,0,7,112,0,3, + 224,0,31,252,0,31,252,0,1,192,0,31,252,0,31,252, + 0,1,192,0,1,192,0,31,252,0,31,252,0,31,252,0, + 3,26,26,20,8,251,224,224,224,224,224,224,224,224,224,224, + 224,224,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 16,24,48,20,2,253,1,254,7,254,15,254,28,6,24,6, + 24,6,60,0,127,0,231,128,193,224,96,240,112,60,60,14, + 15,6,7,131,1,231,0,254,0,60,48,24,48,24,48,56, + 63,240,63,224,63,128,11,4,8,20,4,17,96,192,241,224, + 241,224,96,192,21,20,60,20,255,0,0,252,0,3,255,0, + 15,255,192,30,3,224,56,96,224,113,246,112,115,254,112,231, + 158,56,231,14,56,206,14,56,206,0,56,206,0,56,206,6, + 56,231,15,120,231,254,112,115,252,240,120,241,224,62,7,192, + 31,255,0,7,252,0,11,14,28,20,4,6,31,0,127,128, + 97,128,1,128,63,128,127,128,225,128,193,128,195,128,255,224, + 125,224,0,0,255,224,255,224,15,14,28,20,1,0,3,6, + 7,14,14,28,28,56,56,112,112,224,225,192,225,192,112,224, + 56,112,28,56,14,28,7,14,3,6,16,8,16,20,2,5, + 255,255,255,255,255,255,0,7,0,7,0,7,0,7,0,7, + 15,3,6,20,2,8,255,254,255,254,255,254,21,20,60,20, + 255,0,1,248,0,7,254,0,31,255,128,60,3,192,59,241, + 224,115,252,224,115,254,240,227,158,112,227,142,120,227,142,56, + 227,254,56,227,252,56,227,184,56,243,188,120,115,158,112,123, + 143,240,60,3,224,31,255,192,15,255,0,3,252,0,10,2, + 4,20,5,17,255,192,255,192,9,9,18,20,5,11,28,0, + 119,0,193,128,128,128,128,128,128,128,193,128,119,0,28,0, + 17,18,54,20,1,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,255,255,128,255,255,128,255,255, + 128,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,8,14,14,20, + 5,7,60,126,231,195,3,7,14,12,24,56,112,225,255,255, + 9,14,28,20,5,7,62,0,127,0,99,0,3,0,7,0, + 30,0,31,0,3,128,1,128,1,128,193,128,227,0,127,0, + 60,0,8,6,6,20,6,15,6,15,62,120,224,64,18,22, + 66,20,1,249,252,63,0,252,63,0,252,63,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,15,0,30,31,0,31,255,192,31,247,192,29,231, + 192,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,15,24,48,20,2,253,15,254,63,254, + 123,24,243,24,227,24,227,24,227,24,227,24,227,24,115,24, + 63,24,31,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,31,62,31,62,31,62,5,4,4,20, + 7,8,112,248,248,112,5,7,7,20,6,250,48,48,48,24, + 248,248,112,8,13,13,20,6,7,56,248,216,24,24,24,24, + 24,24,24,24,255,255,11,14,28,20,4,6,14,0,63,128, + 113,192,224,224,192,96,192,96,192,96,224,224,113,192,63,128, + 14,0,0,0,255,224,255,224,15,14,28,20,2,0,193,128, + 225,192,112,224,56,112,28,56,14,28,7,14,7,14,14,28, + 28,56,56,112,112,224,225,192,193,128,19,20,60,20,0,0, + 56,0,0,248,0,0,216,0,128,24,1,192,24,1,128,24, + 3,0,24,6,0,24,12,0,24,28,192,24,25,192,255,51, + 192,255,114,192,0,102,192,0,206,192,1,140,192,3,159,224, + 7,31,224,2,0,192,0,1,224,0,1,224,19,20,60,20, + 0,0,56,0,0,248,0,0,216,2,0,24,7,0,24,14, + 0,24,12,0,24,24,0,24,56,0,24,112,0,24,103,128, + 254,239,192,255,220,224,1,152,96,3,0,224,7,1,192,14, + 7,128,4,14,0,0,28,96,0,31,224,0,31,224,19,21, + 63,20,0,0,62,0,0,127,0,0,99,0,0,3,1,0, + 3,3,128,30,7,0,31,6,0,3,142,0,1,156,0,195, + 152,192,227,49,192,127,115,192,28,98,192,0,198,192,1,206, + 192,3,140,192,7,31,224,2,31,224,0,0,192,0,3,224, + 0,3,224,13,21,42,20,3,250,7,0,15,128,15,128,7, + 0,0,0,0,0,0,0,7,0,7,0,7,0,31,0,63, + 0,124,0,240,0,224,0,224,56,224,56,240,56,127,248,63, + 248,31,224,21,26,78,20,255,0,3,0,0,7,128,0,1, + 224,0,0,240,0,0,48,0,0,0,0,31,240,0,31,248, + 0,31,248,0,1,252,0,1,220,0,1,220,0,3,222,0, + 3,142,0,3,142,0,7,7,0,7,7,0,7,7,0,15, + 255,128,15,255,128,31,255,192,28,1,192,28,1,192,255,143, + 248,255,143,248,255,143,248,21,26,78,20,255,0,0,3,0, + 0,15,0,0,30,0,0,120,0,0,96,0,0,0,0,31, + 240,0,31,248,0,31,248,0,1,252,0,1,220,0,1,220, + 0,3,222,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,21,26,78,20,255, + 0,0,64,0,0,224,0,3,184,0,7,28,0,14,14,0, + 0,0,0,31,240,0,31,248,0,31,248,0,1,252,0,1, + 220,0,1,220,0,3,222,0,3,142,0,3,142,0,7,7, + 0,7,7,0,7,7,0,15,255,128,15,255,128,31,255,192, + 28,1,192,28,1,192,255,143,248,255,143,248,255,143,248,21, + 25,75,20,255,0,3,134,0,7,230,0,6,118,0,6,28, + 0,0,0,0,31,240,0,31,248,0,31,248,0,1,252,0, + 1,220,0,1,220,0,3,222,0,3,142,0,3,142,0,7, + 7,0,7,7,0,7,7,0,15,255,128,15,255,128,31,255, + 192,28,1,192,28,1,192,255,143,248,255,143,248,255,143,248, + 21,25,75,20,255,0,12,24,0,30,60,0,30,60,0,12, + 24,0,0,0,0,31,240,0,31,248,0,31,248,0,1,252, + 0,1,220,0,1,220,0,3,222,0,3,142,0,3,142,0, + 7,7,0,7,7,0,7,7,0,15,255,128,15,255,128,31, + 255,192,28,1,192,28,1,192,255,143,248,255,143,248,255,143, + 248,21,26,78,20,255,0,0,240,0,1,152,0,1,8,0, + 1,152,0,0,240,0,0,0,0,31,240,0,31,248,0,31, + 248,0,1,252,0,1,220,0,1,220,0,3,222,0,3,142, + 0,3,142,0,7,7,0,7,7,0,7,7,0,15,255,128, + 15,255,128,31,255,192,28,1,192,28,1,192,255,143,248,255, + 143,248,255,143,248,20,20,60,20,0,0,31,255,224,31,255, + 224,31,255,224,7,112,224,7,112,224,6,112,224,14,112,224, + 14,115,0,14,115,0,14,127,0,28,127,0,28,115,0,31, + 243,0,31,243,0,56,112,112,56,112,112,56,112,112,255,255, + 240,255,255,240,255,255,240,17,26,78,20,1,250,3,227,0, + 15,255,0,31,255,0,62,31,0,120,15,0,112,7,0,240, + 7,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,240,0,0,112,1,0,120,3,128,62,15,128, + 63,255,0,15,254,0,3,248,0,0,192,0,0,192,0,0, + 224,0,4,112,0,7,240,0,3,224,0,17,26,78,20,1, + 0,3,0,0,7,128,0,1,224,0,0,240,0,0,48,0, + 0,0,0,255,255,0,255,255,0,255,255,0,28,7,0,28, + 7,0,28,7,0,28,119,0,28,112,0,31,240,0,31,240, + 0,31,240,0,28,112,0,28,112,0,28,3,128,28,3,128, + 28,3,128,28,3,128,255,255,128,255,255,128,255,255,128,17, + 26,78,20,1,0,0,12,0,0,60,0,0,120,0,1,224, + 0,1,128,0,0,0,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,26,78,20,1,0,0,128,0,1,192,0,7, + 112,0,14,56,0,28,28,0,0,0,0,255,255,0,255,255, + 0,255,255,0,28,7,0,28,7,0,28,7,0,28,119,0, + 28,112,0,31,240,0,31,240,0,31,240,0,28,112,0,28, + 112,0,28,3,128,28,3,128,28,3,128,28,3,128,255,255, + 128,255,255,128,255,255,128,17,25,75,20,1,0,6,12,0, + 15,30,0,15,30,0,6,12,0,0,0,0,255,255,0,255, + 255,0,255,255,0,28,7,0,28,7,0,28,7,0,28,119, + 0,28,112,0,31,240,0,31,240,0,31,240,0,28,112,0, + 28,112,0,28,3,128,28,3,128,28,3,128,28,3,128,255, + 255,128,255,255,128,255,255,128,13,26,52,20,3,0,24,0, + 60,0,15,0,7,128,1,128,0,0,255,248,255,248,255,248, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,255,248,255,248, + 255,248,13,26,52,20,3,0,0,48,0,240,1,224,7,128, + 6,0,0,0,255,248,255,248,255,248,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,255,248,255,248,255,248,13,26,52,20, + 3,0,2,0,7,0,29,192,56,224,112,112,0,0,255,248, + 255,248,255,248,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 255,248,255,248,255,248,13,25,50,20,3,0,48,96,120,240, + 120,240,48,96,0,0,255,248,255,248,255,248,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,255,248,255,248,255,248,17,20, + 60,20,2,0,255,224,0,255,248,0,255,252,0,56,62,0, + 56,15,0,56,7,0,56,7,0,56,3,128,255,131,128,255, + 131,128,255,131,128,56,3,128,56,3,128,56,3,128,56,7, + 0,56,7,0,56,30,0,255,254,0,255,252,0,255,240,0, + 20,25,75,20,255,0,3,134,0,7,230,0,6,118,0,6, + 28,0,0,0,0,252,31,240,254,31,240,255,31,240,31,1, + 192,31,129,192,31,129,192,29,193,192,29,225,192,28,225,192, + 28,241,192,28,121,192,28,57,192,28,61,192,28,29,192,28, + 15,192,28,15,192,28,7,192,127,199,192,127,195,192,127,193, + 192,17,26,78,20,1,0,6,0,0,15,0,0,3,192,0, + 1,224,0,0,96,0,0,0,0,7,240,0,15,252,0,31, + 252,0,60,30,0,120,15,0,112,7,0,112,7,0,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 112,7,0,120,7,0,56,14,0,62,62,0,31,252,0,15, + 248,0,3,224,0,17,26,78,20,1,0,0,24,0,0,120, + 0,0,240,0,3,192,0,3,0,0,0,0,0,7,240,0, + 15,252,0,31,252,0,60,30,0,120,15,0,112,7,0,112, + 7,0,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,112,7,0,120,7,0,56,14,0,62,62,0, + 31,252,0,15,248,0,3,224,0,17,26,78,20,1,0,0, + 128,0,1,192,0,7,112,0,14,56,0,28,28,0,0,0, + 0,7,240,0,15,252,0,31,252,0,60,30,0,120,15,0, + 112,7,0,112,7,0,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,112,7,0,120,7,0,56,14, + 0,62,62,0,31,252,0,15,248,0,3,224,0,17,25,75, + 20,1,0,7,12,0,15,204,0,12,236,0,12,56,0,0, + 0,0,7,240,0,15,252,0,31,252,0,60,30,0,120,15, + 0,112,7,0,112,7,0,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,112,7,0,120,7,0,56, + 14,0,62,62,0,31,252,0,15,248,0,3,224,0,17,25, + 75,20,1,0,12,24,0,30,60,0,30,60,0,12,24,0, + 0,0,0,7,240,0,15,252,0,31,252,0,60,30,0,120, + 15,0,112,7,0,112,7,0,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,112,7,0,120,7,0, + 56,14,0,62,62,0,31,252,0,15,248,0,3,224,0,15, + 16,32,20,2,0,224,14,240,30,248,62,120,60,60,120,30, + 240,15,224,7,192,7,192,15,224,30,240,60,120,120,60,248, + 62,240,30,224,14,17,23,69,20,1,254,0,3,128,3,227, + 128,15,255,128,31,255,0,62,62,0,56,30,0,120,63,0, + 112,127,0,224,123,128,224,243,128,225,227,128,225,195,128,227, + 195,128,231,131,128,255,7,128,126,7,0,126,15,0,60,30, + 0,127,252,0,127,248,0,247,240,0,224,0,0,224,0,0, + 19,26,78,20,0,0,3,0,0,7,128,0,1,224,0,0, + 240,0,0,48,0,0,0,0,255,31,224,255,31,224,255,31, + 224,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,28,7,128,31,31,0,15,254,0,7,252, + 0,1,248,0,19,26,78,20,0,0,0,28,0,0,60,0, + 0,240,0,1,224,0,1,128,0,0,0,0,255,31,224,255, + 31,224,255,31,224,56,3,128,56,3,128,56,3,128,56,3, + 128,56,3,128,56,3,128,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,28,7,128,31,31,0,15, + 254,0,7,252,0,1,248,0,19,26,78,20,0,0,0,64, + 0,0,224,0,3,184,0,7,28,0,14,14,0,0,0,0, + 255,31,224,255,31,224,255,31,224,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3, + 128,56,3,128,56,3,128,56,3,128,56,3,128,28,7,128, + 31,31,0,15,254,0,7,252,0,1,248,0,19,26,78,20, + 0,0,6,12,0,15,30,0,15,30,0,6,12,0,0,0, + 0,0,0,0,255,191,224,255,191,224,255,191,224,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,56,3,128,56,3, + 128,28,7,128,31,31,0,15,254,0,7,252,0,1,248,0, + 17,26,78,20,1,0,0,24,0,0,120,0,0,240,0,3, + 192,0,3,0,0,0,0,0,254,63,128,254,63,128,254,63, + 128,60,30,0,28,28,0,30,60,0,14,56,0,15,120,0, + 7,240,0,3,224,0,3,224,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,31,252,0,31,252, + 0,31,252,0,18,20,60,20,1,0,255,128,0,255,128,0, + 255,128,0,28,0,0,31,248,0,31,254,0,31,255,0,28, + 15,128,28,3,128,28,3,192,28,3,192,28,3,128,28,15, + 128,31,255,0,31,254,0,31,248,0,28,0,0,255,128,0, + 255,128,0,255,128,0,17,22,66,20,0,255,3,224,0,7, + 240,0,15,248,0,30,60,0,28,28,0,28,28,0,28,28, + 0,28,60,0,29,248,0,29,248,0,29,254,0,28,31,0, + 28,15,0,28,7,128,28,3,128,28,3,128,29,195,128,29, + 195,128,255,255,0,254,255,0,254,126,0,0,24,0,17,22, + 66,20,2,0,24,0,0,60,0,0,15,0,0,7,128,0, + 1,128,0,0,0,0,0,0,0,15,224,0,63,240,0,63, + 248,0,56,60,0,0,28,0,0,28,0,15,252,0,63,252, + 0,127,252,0,120,28,0,240,28,0,224,124,0,255,255,128, + 127,255,128,63,159,128,17,22,66,20,2,0,0,32,0,0, + 112,0,0,240,0,3,192,0,7,128,0,6,0,0,0,0, + 0,15,224,0,63,240,0,63,248,0,56,60,0,0,28,0, + 0,28,0,15,252,0,63,252,0,127,252,0,120,28,0,224, + 60,0,224,124,0,255,255,128,127,223,128,63,159,128,17,22, + 66,20,1,0,0,128,0,1,192,0,7,112,0,14,56,0, + 28,28,0,0,0,0,0,0,0,7,224,0,63,240,0,63, + 248,0,60,60,0,0,28,0,0,28,0,15,252,0,63,252, + 0,127,252,0,120,28,0,240,28,0,224,60,0,255,255,128, + 127,255,128,63,159,128,17,21,63,20,1,0,14,24,0,31, + 152,0,25,248,0,24,112,0,0,0,0,0,0,0,15,224, + 0,63,240,0,63,248,0,56,60,0,0,28,0,0,28,0, + 15,252,0,63,252,0,127,252,0,120,28,0,240,28,0,224, + 124,0,255,255,128,127,223,128,63,159,128,17,21,63,20,2, + 0,12,24,0,30,60,0,30,60,0,12,24,0,0,0,0, + 0,0,0,15,224,0,63,240,0,63,248,0,56,60,0,0, + 28,0,0,28,0,15,252,0,63,252,0,127,252,0,120,28, + 0,240,28,0,224,124,0,255,255,128,127,223,128,63,159,128, + 17,21,63,20,1,0,3,192,0,6,96,0,4,32,0,6, + 96,0,3,192,0,0,0,0,15,224,0,63,240,0,63,248, + 0,56,60,0,0,28,0,0,28,0,15,252,0,63,252,0, + 127,252,0,120,28,0,240,28,0,224,124,0,255,255,128,127, + 223,128,63,159,128,20,15,45,20,255,0,15,135,0,63,255, + 192,63,255,192,56,253,224,0,112,112,3,240,112,31,255,240, + 127,255,240,255,255,240,240,112,0,224,120,0,241,248,112,127, + 255,240,63,255,240,31,39,128,16,21,42,20,2,250,7,230, + 31,254,63,254,124,62,112,14,240,14,224,14,224,0,224,0, + 224,0,240,6,124,15,63,254,31,252,7,240,1,128,1,128, + 1,192,8,224,15,192,3,128,16,21,42,20,1,0,6,0, + 15,0,3,192,1,224,0,96,0,0,7,224,31,248,63,252, + 124,62,112,14,240,15,255,255,255,255,255,255,224,0,112,0, + 124,15,63,255,31,254,7,240,16,22,44,20,1,0,0,16, + 0,56,0,120,1,224,3,192,3,0,0,0,7,224,31,248, + 63,252,124,62,112,14,240,15,255,255,255,255,255,255,224,0, + 112,0,124,14,63,255,31,254,7,240,16,22,44,20,1,0, + 0,128,1,192,7,112,14,56,28,28,0,0,0,0,7,224, + 31,248,63,252,124,62,112,14,240,15,255,255,255,255,255,255, + 224,0,112,0,124,31,63,255,31,255,7,240,16,21,42,20, + 1,0,12,24,30,60,30,60,12,24,0,0,0,0,7,224, + 31,248,63,252,124,62,112,14,240,15,255,255,255,255,255,255, + 224,0,112,0,124,31,63,255,31,255,7,240,15,22,44,20, + 2,0,24,0,60,0,15,0,7,128,1,128,0,0,0,0, + 127,128,127,128,127,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,254,255,254,255,254,15,23, + 46,20,2,0,0,128,1,192,3,192,15,0,30,0,24,0, + 0,0,0,0,127,128,127,128,127,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254, + 255,254,15,22,44,20,2,0,2,0,7,0,29,192,56,224, + 112,112,0,0,0,0,127,128,127,128,127,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254, + 255,254,255,254,15,21,42,20,2,0,48,96,120,240,120,240, + 48,96,0,0,0,0,127,128,127,128,127,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,255,254, + 255,254,255,254,16,21,42,20,2,0,126,14,255,191,255,252, + 3,240,15,240,127,248,124,56,112,60,7,220,31,254,127,254, + 120,30,240,15,224,7,224,7,224,15,240,15,248,62,127,252, + 63,248,31,224,17,21,63,20,1,0,14,24,0,31,152,0, + 25,248,0,24,112,0,0,0,0,0,0,0,249,240,0,251, + 252,0,255,254,0,60,30,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,254,63,128,254,63,128,17,21,63,20,1,0,6, + 0,0,15,0,0,3,192,0,1,224,0,0,96,0,0,0, + 0,7,240,0,15,248,0,63,254,0,60,30,0,120,15,0, + 240,7,128,224,3,128,224,3,128,224,3,128,240,7,128,120, + 15,0,124,31,0,63,254,0,31,252,0,7,240,0,17,22, + 66,20,1,0,0,16,0,0,56,0,0,120,0,1,224,0, + 3,192,0,3,0,0,0,0,0,7,240,0,15,248,0,63, + 254,0,60,30,0,120,15,0,240,7,128,224,3,128,224,3, + 128,224,3,128,240,7,128,120,15,0,124,31,0,63,254,0, + 31,252,0,7,240,0,17,22,66,20,1,0,0,128,0,1, + 192,0,7,112,0,14,56,0,28,28,0,0,0,0,0,0, + 0,7,240,0,15,248,0,63,254,0,60,30,0,120,15,0, + 240,7,128,224,3,128,224,3,128,224,3,128,240,7,128,120, + 15,0,124,31,0,63,254,0,31,252,0,7,240,0,17,21, + 63,20,1,0,7,12,0,15,204,0,12,252,0,12,56,0, + 0,0,0,0,0,0,7,240,0,15,248,0,63,254,0,60, + 30,0,120,15,0,240,7,128,224,3,128,224,3,128,224,3, + 128,240,7,128,120,15,0,124,31,0,63,254,0,31,252,0, + 7,240,0,17,21,63,20,1,0,12,24,0,30,60,0,30, + 60,0,12,24,0,0,0,0,0,0,0,7,240,0,15,248, + 0,63,254,0,60,30,0,120,15,0,240,7,128,224,3,128, + 224,3,128,224,3,128,240,7,128,120,15,0,124,31,0,63, + 254,0,31,252,0,7,240,0,15,15,30,20,2,2,3,128, + 7,192,7,192,3,128,0,0,0,0,255,254,255,254,255,254, + 0,0,0,0,3,128,7,192,7,192,3,128,17,18,54,20, + 1,254,0,3,128,3,227,128,15,255,128,63,255,0,62,62, + 0,120,63,0,112,127,0,224,243,128,225,227,128,227,195,128, + 231,131,128,127,7,0,126,31,0,63,254,0,127,252,0,247, + 240,0,224,0,0,224,0,0,18,22,66,20,0,0,3,0, + 0,7,128,0,1,224,0,0,240,0,0,48,0,0,0,0, + 0,0,0,252,63,0,252,63,0,252,63,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,15,0,28,31,0,31,255,192,15,247,192,7,231,192, + 18,22,66,20,0,0,0,8,0,0,28,0,0,60,0,0, + 240,0,1,224,0,1,128,0,0,0,0,252,63,0,252,63, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,15,0,28,31,0,31, + 255,192,15,247,192,7,231,192,18,22,66,20,0,0,0,128, + 0,1,192,0,7,112,0,14,56,0,28,28,0,0,0,0, + 0,0,0,252,63,0,252,63,0,252,63,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,15,0,28,31,0,31,255,192,15,247,192,7,231,192, + 18,21,63,20,0,0,12,24,0,30,60,0,30,60,0,12, + 24,0,0,0,0,0,0,0,252,63,0,252,63,0,252,63, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,15,0,28,31,0,31,255,192,15, + 247,192,7,231,192,17,29,87,20,1,249,0,16,0,0,56, + 0,0,120,0,1,224,0,3,192,0,3,0,0,0,0,0, + 254,63,128,254,63,128,254,63,128,120,15,0,56,14,0,60, + 30,0,28,28,0,30,60,0,14,56,0,15,120,0,7,112, + 0,7,240,0,3,224,0,3,224,0,1,192,0,1,192,0, + 3,128,0,3,128,0,7,0,0,255,224,0,255,224,0,255, + 224,0,19,28,84,20,0,249,252,0,0,252,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,252,0,31,255,0, + 31,255,128,31,135,192,31,3,192,30,1,224,28,0,224,28, + 0,224,28,0,224,30,1,224,30,1,192,31,135,192,31,255, + 128,31,255,0,28,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,255,192,0,255,192,0,255,192,0,17,28,84,20, + 1,249,6,12,0,15,30,0,15,30,0,6,12,0,0,0, + 0,0,0,0,254,63,128,254,63,128,254,63,128,120,15,0, + 56,14,0,60,30,0,28,28,0,30,60,0,14,56,0,15, + 120,0,7,112,0,7,240,0,3,224,0,3,224,0,1,192, + 0,1,192,0,3,128,0,3,128,0,7,0,0,255,224,0, + 255,224,0,255,224,0}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 20, '1' Height: 21 + Calculated Max Values w=21 h=28 x= 8 y=16 dx=20 dy= 0 ascent=23 len=75 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24r[4775] U8G_SECTION(".progmem.u8g_font_courB24r") = { + 0,30,44,249,245,20,5,57,12,115,32,127,249,23,249,21, + 249,0,0,0,20,0,1,5,21,21,20,7,0,112,248,248, + 248,248,248,112,112,112,112,112,112,112,112,112,32,0,0,112, + 248,112,9,10,20,20,5,10,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,65,0,15,26,52,20, + 2,253,14,56,14,56,14,56,14,56,14,56,14,56,14,56, + 14,56,127,254,127,254,127,254,28,112,28,112,28,112,28,112, + 255,252,255,252,255,252,56,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,224,14,27,54,20,3,252,7,0,7,0, + 7,0,15,216,63,248,127,248,240,120,224,56,224,56,240,0, + 254,0,127,192,63,240,7,248,0,252,0,60,224,28,224,28, + 240,60,255,248,255,240,231,128,7,0,7,0,7,0,7,0, + 7,0,15,21,42,20,2,0,31,0,63,128,49,128,96,192, + 96,192,96,192,113,194,63,142,31,62,0,248,3,224,31,0, + 252,248,241,252,195,142,3,6,3,6,3,6,1,140,1,252, + 0,248,14,18,36,20,2,0,7,160,31,224,63,224,60,96, + 56,0,56,0,60,0,28,0,30,0,127,60,127,188,243,188, + 225,240,224,240,224,240,255,252,127,188,63,60,4,11,11,20, + 8,10,112,112,112,112,112,224,224,224,224,224,224,7,26,26, + 20,8,251,14,14,30,60,56,56,120,112,112,240,240,240,224, + 224,240,240,240,112,112,120,56,60,28,30,14,14,7,26,26, + 20,4,251,224,224,240,120,56,56,60,28,28,30,30,30,14, + 14,30,30,30,28,28,60,56,120,112,240,224,224,15,14,28, + 20,3,7,3,128,3,128,3,128,3,128,99,140,251,190,127, + 252,31,240,15,224,15,224,30,240,60,120,120,60,48,24,17, + 17,51,20,1,1,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,255,255,128,255,255,128, + 255,255,128,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,7,10,10,20,5,251,30,30, + 60,60,56,112,112,224,224,192,15,3,6,20,2,8,255,254, + 255,254,255,254,5,4,4,20,7,0,112,248,248,112,13,27, + 54,20,3,252,0,56,0,56,0,120,0,112,0,112,0,224, + 0,224,1,224,1,192,1,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,28,0,60,0,56,0,56,0, + 112,0,112,0,240,0,224,0,224,0,13,21,42,20,3,0, + 15,128,63,224,127,240,112,112,240,120,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,112,112,127,240,63,224,15,128,13,21,42,20,4,0, + 3,0,15,0,127,0,255,0,255,0,103,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,255,248,255,248,255,248,14,21,42,20,2,0, + 7,192,31,240,63,248,120,60,112,28,112,28,112,28,0,28, + 0,56,0,120,0,240,1,224,3,192,7,128,15,0,30,0, + 60,0,120,0,255,252,255,252,255,252,15,21,42,20,2,0, + 7,224,31,240,127,248,120,60,112,28,0,28,0,28,0,60, + 7,248,7,240,7,248,0,124,0,28,0,14,0,14,0,14, + 0,30,224,60,255,252,255,248,63,224,14,21,42,20,2,0, + 0,240,1,240,1,240,3,240,7,240,7,112,15,112,14,112, + 30,112,28,112,56,112,120,112,112,112,255,252,255,252,255,252, + 0,112,0,112,3,252,3,252,3,252,15,21,42,20,2,0, + 63,252,63,252,63,252,56,0,56,0,56,0,56,0,63,224, + 63,248,63,252,56,124,0,30,0,14,0,14,0,14,0,14, + 64,30,240,60,255,248,127,248,31,224,14,21,42,20,3,0, + 1,248,7,248,15,248,31,0,60,0,120,0,112,0,112,0, + 227,192,239,240,255,240,248,120,240,60,224,28,224,28,240,28, + 112,60,120,120,127,248,63,240,15,192,14,21,42,20,2,0, + 255,252,255,252,255,252,224,60,224,56,224,56,0,56,0,120, + 0,112,0,112,0,240,0,224,0,224,1,224,1,192,1,192, + 3,192,3,128,7,128,7,0,7,0,14,21,42,20,3,0, + 15,128,63,224,127,240,112,112,224,56,224,56,224,56,112,112, + 127,240,63,224,63,240,124,248,240,60,224,28,224,28,224,28, + 224,28,248,124,127,248,63,240,15,192,14,21,42,20,3,0, + 15,128,63,224,127,240,120,240,240,120,224,56,224,60,224,60, + 224,60,240,124,120,252,63,220,63,156,15,60,0,56,0,120, + 0,112,97,240,255,224,255,128,126,0,5,15,15,20,7,0, + 112,248,248,112,0,0,0,0,0,0,0,112,248,248,112,8, + 19,19,20,5,252,14,31,31,14,0,0,0,0,0,0,30, + 30,60,56,120,112,224,224,192,18,19,57,20,0,0,0,1, + 192,0,3,192,0,15,192,0,63,128,0,254,0,1,248,0, + 7,224,0,31,128,0,127,0,0,252,0,0,127,0,0,31, + 128,0,7,224,0,1,248,0,0,254,0,0,63,128,0,15, + 192,0,3,192,0,1,192,17,9,27,20,1,5,255,255,128, + 255,255,128,255,255,128,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,255,255,128,18,19,57,20,1,0,224,0, + 0,240,0,0,252,0,0,127,0,0,31,192,0,7,224,0, + 1,248,0,0,126,0,0,63,128,0,15,192,0,63,128,0, + 126,0,1,248,0,7,224,0,31,192,0,127,0,0,252,0, + 0,240,0,0,224,0,0,13,20,40,20,3,0,31,192,127, + 224,255,240,224,248,224,56,224,56,0,56,0,120,0,240,3, + 240,7,192,7,128,7,0,7,0,0,0,0,0,0,0,7, + 0,15,128,7,0,14,23,46,20,3,254,15,192,31,224,56, + 112,112,48,96,48,224,48,192,48,193,240,199,240,198,48,204, + 48,204,48,204,48,206,48,199,252,195,188,192,0,224,0,96, + 0,112,48,56,112,31,224,15,192,21,20,60,20,255,0,31, + 240,0,31,248,0,31,248,0,1,220,0,1,220,0,1,220, + 0,3,142,0,3,142,0,3,142,0,7,7,0,7,7,0, + 7,7,0,15,255,128,15,255,128,31,255,192,28,1,192,28, + 1,192,255,143,248,255,143,248,255,143,248,18,20,60,20,1, + 0,255,248,0,255,254,0,255,255,0,28,7,128,28,3,128, + 28,3,128,28,3,128,28,7,128,31,255,0,31,252,0,31, + 254,0,28,15,128,28,3,192,28,1,192,28,1,192,28,1, + 192,28,3,192,255,255,128,255,255,0,255,252,0,18,20,60, + 20,1,0,3,249,128,15,255,128,31,255,128,62,15,128,120, + 7,128,112,3,128,240,3,128,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,240,0,0, + 120,3,128,124,7,192,63,255,128,31,255,0,7,252,0,17, + 20,60,20,1,0,255,224,0,255,248,0,255,252,0,56,62, + 0,56,15,0,56,7,0,56,7,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 7,128,56,7,0,56,31,0,255,254,0,255,252,0,255,240, + 0,17,20,60,20,1,0,255,255,0,255,255,0,255,255,0, + 28,7,0,28,7,0,28,7,0,28,119,0,28,112,0,31, + 240,0,31,240,0,31,240,0,28,112,0,28,112,0,28,3, + 128,28,3,128,28,3,128,28,3,128,255,255,128,255,255,128, + 255,255,128,17,20,60,20,1,0,255,255,128,255,255,128,255, + 255,128,28,3,128,28,3,128,28,3,128,28,115,128,28,112, + 0,31,240,0,31,240,0,31,240,0,28,112,0,28,112,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,17,20,60,20,2,0,3,243,0,15,255, + 0,31,255,0,60,15,0,120,7,0,112,7,0,240,7,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,255,128,224, + 255,128,224,255,128,240,7,0,112,7,0,124,15,0,63,255, + 0,31,254,0,7,248,0,17,20,60,20,1,0,255,127,128, + 255,127,128,255,127,128,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,63,254,0,63,254,0,63,254,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 255,127,128,255,127,128,255,127,128,13,20,40,20,3,0,255, + 248,255,248,255,248,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,255,248,255,248,255,248,17,20,60,20,2,0,7,255,128, + 7,255,128,7,255,128,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,224,56,0,224,56, + 0,224,56,0,224,56,0,224,56,0,224,120,0,240,240,0, + 255,240,0,127,224,0,31,128,0,19,20,60,20,1,0,255, + 159,192,255,159,192,255,159,192,28,15,0,28,30,0,28,60, + 0,28,120,0,28,240,0,31,224,0,31,240,0,31,248,0, + 30,124,0,28,60,0,28,30,0,28,14,0,28,15,0,28, + 7,0,255,135,224,255,135,224,255,135,224,17,20,60,20,1, + 0,255,224,0,255,224,0,255,224,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,3,128,14,3,128,14,3,128,14,3,128,14,3, + 128,14,3,128,255,255,128,255,255,128,255,255,128,21,20,60, + 20,255,0,252,1,248,252,1,248,254,3,248,62,3,224,63, + 7,224,63,7,224,59,142,224,59,142,224,59,222,224,57,220, + 224,57,220,224,56,248,224,56,248,224,56,248,224,56,112,224, + 56,112,224,56,0,224,255,7,248,255,7,248,255,7,248,19, + 20,60,20,0,0,248,31,224,252,31,224,254,31,224,62,3, + 128,63,3,128,63,3,128,59,131,128,59,195,128,57,195,128, + 57,227,128,56,243,128,56,115,128,56,123,128,56,59,128,56, + 31,128,56,31,128,56,15,128,255,7,128,255,7,128,255,3, + 128,18,20,60,20,1,0,3,240,0,15,252,0,31,254,0, + 60,15,0,120,7,128,112,3,128,240,3,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,240,3, + 192,112,3,128,120,7,128,60,15,0,31,254,0,15,252,0, + 3,240,0,17,20,60,20,1,0,255,248,0,255,254,0,255, + 255,0,28,15,0,28,3,128,28,3,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,240,0, + 28,0,0,28,0,0,28,0,0,28,0,0,255,224,0,255, + 224,0,255,224,0,18,25,75,20,1,251,3,240,0,15,248, + 0,31,254,0,60,15,0,120,7,128,112,3,128,240,3,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,112,3,128,120,7,128,60,15,0,31,254, + 0,15,252,0,7,240,0,14,0,0,31,225,192,63,255,192, + 63,255,192,56,63,0,20,20,60,20,1,0,255,248,0,255, + 254,0,255,255,0,28,15,0,28,7,128,28,3,128,28,3, + 128,28,7,128,28,15,0,31,254,0,31,252,0,31,248,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,255, + 131,240,255,129,240,255,129,240,15,20,40,20,2,0,15,204, + 63,252,127,252,240,124,224,28,224,28,240,28,248,0,127,0, + 63,224,15,248,1,252,0,62,224,30,224,14,224,14,240,30, + 255,252,255,248,231,224,17,20,60,20,1,0,255,255,128,255, + 255,128,255,255,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,63, + 254,0,63,254,0,63,254,0,19,20,60,20,0,0,255,31, + 224,255,31,224,255,31,224,56,3,128,56,3,128,56,3,128, + 56,3,128,56,3,128,56,3,128,56,3,128,56,3,128,56, + 3,128,56,3,128,56,3,128,56,3,128,28,7,0,31,31, + 0,15,254,0,7,252,0,1,240,0,21,20,60,20,255,0, + 255,143,248,255,143,248,255,143,248,28,1,192,28,1,192,30, + 3,192,14,3,128,14,3,128,7,7,0,7,7,0,7,143, + 0,3,142,0,3,142,0,3,222,0,1,220,0,1,220,0, + 0,248,0,0,248,0,0,248,0,0,112,0,19,20,60,20, + 0,0,255,31,224,255,31,224,255,31,224,112,1,192,112,1, + 192,112,225,192,112,225,192,113,241,192,57,243,128,57,243,128, + 59,187,128,59,187,128,59,187,128,63,31,128,63,31,128,30, + 15,0,30,15,0,30,15,0,28,7,0,28,7,0,19,20, + 60,20,0,0,255,31,224,255,31,224,255,31,224,60,7,128, + 30,15,0,15,30,0,7,188,0,3,248,0,1,240,0,0, + 224,0,1,240,0,3,248,0,7,188,0,15,30,0,14,14, + 0,30,15,0,60,7,128,255,31,224,255,31,224,255,31,224, + 19,20,60,20,0,0,255,31,224,255,31,224,255,31,224,60, + 7,128,14,14,0,15,30,0,7,28,0,7,188,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,15,254,0,15,254,0,15, + 254,0,15,20,40,20,2,0,127,252,127,252,127,252,112,60, + 112,56,112,120,112,240,113,224,1,192,3,192,7,128,15,0, + 14,14,30,14,60,14,120,14,112,14,255,254,255,254,255,254, + 7,26,26,20,8,251,254,254,254,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,254,254,254, + 13,27,54,20,3,252,224,0,224,0,240,0,112,0,112,0, + 56,0,56,0,60,0,28,0,28,0,14,0,14,0,15,0, + 7,0,7,128,3,128,3,128,1,192,1,192,1,224,0,224, + 0,224,0,112,0,112,0,120,0,56,0,56,7,26,26,20, + 4,251,254,254,254,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,254,254,254,13,11,22,20, + 3,11,2,0,7,0,7,0,15,128,31,192,61,224,56,224, + 120,240,240,120,224,56,224,56,20,3,9,20,0,249,255,255, + 240,255,255,240,255,255,240,6,6,6,20,6,16,192,224,112, + 56,28,12,16,15,30,20,2,0,31,224,127,248,127,252,112, + 60,0,28,0,28,15,252,127,252,127,252,240,28,224,28,224, + 124,255,255,127,223,63,159,19,21,63,20,0,0,252,0,0, + 252,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 124,0,29,255,0,31,255,128,31,135,192,30,1,192,30,1, + 224,28,0,224,28,0,224,28,0,224,28,0,224,30,1,192, + 31,3,192,255,255,128,255,255,0,252,254,0,16,15,30,20, + 2,0,7,230,31,254,63,254,124,62,112,14,224,14,224,14, + 224,0,224,0,224,0,240,6,120,15,127,254,63,252,15,240, + 19,21,63,20,1,0,0,63,0,0,63,0,0,63,0,0, + 7,0,0,7,0,0,7,0,7,231,0,31,255,0,63,255, + 0,124,63,0,112,15,0,240,15,0,224,7,0,224,7,0, + 224,7,0,224,7,0,112,15,0,124,63,0,63,255,224,31, + 247,224,7,231,224,18,15,45,20,1,0,3,240,0,15,252, + 0,31,254,0,62,31,0,120,7,128,112,3,128,255,255,128, + 255,255,128,255,255,128,240,0,0,120,0,0,126,3,128,63, + 255,192,31,255,128,7,254,0,16,21,42,20,3,0,1,255, + 7,255,7,255,15,0,14,0,14,0,255,252,255,252,255,252, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,252,255,252,255,252,18,22,66,20,1,249,7,207, + 192,31,255,192,63,255,192,124,126,0,112,30,0,240,30,0, + 224,14,0,224,14,0,224,14,0,240,30,0,112,30,0,120, + 126,0,63,254,0,31,238,0,15,206,0,0,14,0,0,14, + 0,0,30,0,0,60,0,31,252,0,31,248,0,31,224,0, + 18,21,63,20,1,0,252,0,0,252,0,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,248,0,29,252,0,31,254, + 0,31,15,0,30,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,127,31,192,127, + 31,192,127,31,192,15,21,42,20,3,0,7,128,7,128,7, + 128,7,128,0,0,0,0,127,128,127,128,127,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,255, + 254,255,254,255,254,12,28,56,20,3,249,3,192,3,192,3, + 192,3,192,0,0,0,0,255,240,255,240,255,240,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,240,255,224,255, + 192,255,128,17,21,63,20,1,0,252,0,0,252,0,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,255,0,28,255, + 0,28,255,0,28,120,0,28,240,0,29,224,0,31,192,0, + 31,192,0,31,224,0,29,240,0,28,248,0,28,124,0,252, + 63,128,252,63,128,252,63,128,15,21,42,20,3,0,127,128, + 127,128,127,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,255,254,255,254,255,254,20,15,45,20,1,0,243,143, + 0,255,255,128,255,255,192,120,241,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,112,225,192,112,225,192,112, + 225,192,252,249,240,252,249,240,252,249,240,17,15,45,20,2, + 0,249,240,0,251,248,0,255,252,0,62,30,0,60,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,254,63,128,254,63,128,254,63,128,17,15, + 45,20,2,0,7,240,0,31,252,0,63,254,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,240, + 7,128,112,7,0,120,15,0,63,254,0,31,252,0,7,240, + 0,19,22,66,20,0,249,252,124,0,253,255,0,255,255,128, + 31,3,192,30,1,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,1,224,30,1,192,31,7,192,31,255,128,29,254, + 0,28,120,0,28,0,0,28,0,0,28,0,0,28,0,0, + 255,192,0,255,192,0,255,192,0,19,22,66,20,1,249,7, + 231,224,31,255,224,63,255,224,124,63,0,112,15,0,240,15, + 0,224,7,0,224,7,0,224,7,0,240,15,0,112,15,0, + 124,63,0,63,255,0,31,247,0,7,199,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,127,224,0,127,224,0,127, + 224,17,15,45,20,2,0,126,62,0,126,255,0,127,255,128, + 15,199,0,15,2,0,15,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,255,252,0,255,252, + 0,255,252,0,15,15,30,20,3,0,15,236,63,252,63,252, + 120,60,112,28,120,0,127,192,63,248,15,252,224,62,224,14, + 248,30,255,252,255,248,231,224,16,20,40,20,2,0,28,0, + 28,0,28,0,28,0,28,0,255,252,255,252,255,252,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,6,30,31, + 31,255,15,254,3,240,18,15,45,20,1,0,252,63,0,252, + 63,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,30,31,0, + 31,255,192,15,255,192,7,247,192,19,15,45,20,0,0,255, + 31,224,255,31,224,255,31,224,60,7,0,28,7,0,30,14, + 0,14,14,0,15,28,0,7,28,0,7,184,0,3,184,0, + 3,240,0,1,240,0,1,224,0,0,224,0,19,15,45,20, + 0,0,254,15,224,254,15,224,254,15,224,56,227,128,56,227, + 128,57,243,128,61,247,128,29,247,0,31,191,0,31,31,0, + 31,31,0,15,30,0,14,14,0,14,14,0,14,14,0,17, + 15,45,20,1,0,254,63,128,254,63,128,254,63,128,60,28, + 0,30,56,0,15,112,0,7,224,0,3,224,0,3,240,0, + 7,120,0,14,60,0,28,30,0,254,63,128,254,63,128,254, + 63,128,19,22,66,20,1,249,255,31,224,255,31,224,255,31, + 224,60,3,128,28,7,0,30,7,0,14,14,0,15,14,0, + 7,28,0,7,156,0,3,184,0,3,248,0,1,240,0,1, + 240,0,0,224,0,0,224,0,1,192,0,1,192,0,3,128, + 0,127,240,0,127,240,0,127,240,0,13,15,30,20,4,0, + 255,248,255,248,255,248,224,240,225,224,227,192,7,128,15,0, + 30,0,60,0,120,56,240,56,255,248,255,248,255,248,9,26, + 52,20,5,251,7,128,15,128,15,128,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,60,0,248,0,248,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,31,128,15,128,7,128,3,26,26,20,8,251,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,9,26,52,20,5,251,240,0, + 248,0,248,0,60,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,30,0,15,128,15,128,31,128,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,252,0,248,0, + 240,0,15,7,14,20,2,6,12,0,63,14,127,142,247,222, + 227,252,225,248,0,96,255}; +/* + Fontname: -Adobe-Courier-Bold-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=17 h=27 x= 7 y= 8 dx=20 dy= 0 ascent=23 len=54 + Font Bounding box w=30 h=44 x=-7 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =23 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courB24n[686] U8G_SECTION(".progmem.u8g_font_courB24n") = { + 0,30,44,249,245,21,0,0,0,0,42,57,0,23,251,21, + 0,15,14,28,20,3,7,3,128,3,128,3,128,3,128,99, + 140,251,190,127,252,31,240,15,224,15,224,30,240,60,120,120, + 60,48,24,17,17,51,20,1,1,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,255,255, + 128,255,255,128,255,255,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,7,10,10,20, + 5,251,30,30,60,60,56,112,112,224,224,192,15,3,6,20, + 2,8,255,254,255,254,255,254,5,4,4,20,7,0,112,248, + 248,112,13,27,54,20,3,252,0,56,0,56,0,120,0,112, + 0,112,0,224,0,224,1,224,1,192,1,192,3,128,3,128, + 7,128,7,0,15,0,14,0,14,0,28,0,28,0,60,0, + 56,0,56,0,112,0,112,0,240,0,224,0,224,0,13,21, + 42,20,3,0,15,128,63,224,127,240,112,112,240,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,240,120,112,112,127,240,63,224,15,128,13,21, + 42,20,4,0,3,0,15,0,127,0,255,0,255,0,103,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,255,248,255,248,255,248,14,21, + 42,20,2,0,7,192,31,240,63,248,120,60,112,28,112,28, + 112,28,0,28,0,56,0,120,0,240,1,224,3,192,7,128, + 15,0,30,0,60,0,120,0,255,252,255,252,255,252,15,21, + 42,20,2,0,7,224,31,240,127,248,120,60,112,28,0,28, + 0,28,0,60,7,248,7,240,7,248,0,124,0,28,0,14, + 0,14,0,14,0,30,224,60,255,252,255,248,63,224,14,21, + 42,20,2,0,0,240,1,240,1,240,3,240,7,240,7,112, + 15,112,14,112,30,112,28,112,56,112,120,112,112,112,255,252, + 255,252,255,252,0,112,0,112,3,252,3,252,3,252,15,21, + 42,20,2,0,63,252,63,252,63,252,56,0,56,0,56,0, + 56,0,63,224,63,248,63,252,56,124,0,30,0,14,0,14, + 0,14,0,14,64,30,240,60,255,248,127,248,31,224,14,21, + 42,20,3,0,1,248,7,248,15,248,31,0,60,0,120,0, + 112,0,112,0,227,192,239,240,255,240,248,120,240,60,224,28, + 224,28,240,28,112,60,120,120,127,248,63,240,15,192,14,21, + 42,20,2,0,255,252,255,252,255,252,224,60,224,56,224,56, + 0,56,0,120,0,112,0,112,0,240,0,224,0,224,1,224, + 1,192,1,192,3,192,3,128,7,128,7,0,7,0,14,21, + 42,20,3,0,15,128,63,224,127,240,112,112,224,56,224,56, + 224,56,112,112,127,240,63,224,63,240,124,248,240,60,224,28, + 224,28,224,28,224,28,248,124,127,248,63,240,15,192,14,21, + 42,20,3,0,15,128,63,224,127,240,120,240,240,120,224,56, + 224,60,224,60,224,60,240,124,120,252,63,220,63,156,15,60, + 0,56,0,120,0,112,97,240,255,224,255,128,126,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 6 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=10 + Font Bounding box w=10 h=16 x=-2 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR08[2433] U8G_SECTION(".progmem.u8g_font_courR08") = { + 0,10,16,254,252,6,1,151,3,21,32,255,254,9,254,7, + 254,0,0,0,6,0,1,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,4,160,160,160,5,8,8, + 6,1,255,80,80,248,80,80,248,80,80,4,8,8,6,1, + 255,32,112,128,96,16,144,96,32,6,7,7,6,0,0,224, + 164,200,48,92,148,24,6,6,6,6,0,0,48,64,96,148, + 136,116,1,3,3,6,2,4,128,128,128,3,9,9,6,2, + 254,32,64,64,128,128,128,64,64,32,3,9,9,6,1,254, + 128,64,64,32,32,32,64,64,128,5,4,4,6,0,3,32, + 216,32,80,5,5,5,6,0,1,32,32,248,32,32,2,3, + 3,6,1,254,64,64,128,4,1,1,6,1,3,240,1,2, + 2,6,2,0,128,128,6,9,9,6,0,255,4,8,16,16, + 32,32,64,64,128,4,7,7,6,1,0,96,144,144,144,144, + 144,96,4,7,7,6,1,0,32,224,32,32,32,32,240,4, + 7,7,6,1,0,96,144,16,32,64,128,240,4,7,7,6, + 1,0,96,144,16,96,16,144,96,5,7,7,6,0,0,16, + 48,80,144,248,16,16,4,7,7,6,1,0,240,128,128,224, + 16,16,224,4,7,7,6,1,0,112,128,128,224,144,144,96, + 4,7,7,6,1,0,240,144,16,32,32,64,64,4,7,7, + 6,1,0,96,144,144,96,144,144,96,4,7,7,6,1,0, + 96,144,144,112,16,16,224,1,5,5,6,2,0,128,128,0, + 128,128,2,6,6,6,1,254,64,64,0,64,64,128,3,5, + 5,6,1,1,32,64,128,64,32,4,3,3,6,1,2,240, + 0,240,3,5,5,6,2,1,128,64,32,64,128,4,6,6, + 6,1,0,96,144,32,64,0,64,6,8,8,6,0,255,56, + 68,156,168,168,156,64,56,6,6,6,6,0,0,112,40,72, + 120,72,204,5,6,6,6,0,0,240,72,112,72,72,240,4, + 6,6,6,1,0,96,144,128,128,144,96,5,6,6,6,0, + 0,240,72,72,72,72,240,5,6,6,6,0,0,248,72,112, + 64,72,248,5,6,6,6,0,0,248,72,112,80,64,224,4, + 6,6,6,1,0,96,144,128,176,144,96,6,6,6,6,0, + 0,204,72,120,72,72,204,5,6,6,6,1,0,248,32,32, + 32,32,248,5,6,6,6,1,0,120,16,16,144,144,96,6, + 6,6,6,0,0,216,80,96,80,72,228,5,6,6,6,1, + 0,224,64,64,64,72,248,5,6,6,6,1,0,136,216,168, + 168,136,216,6,6,6,6,0,0,220,72,104,88,72,200,4, + 6,6,6,1,0,96,144,144,144,144,96,5,6,6,6,1, + 0,240,72,72,112,64,224,4,7,7,6,1,255,96,144,144, + 144,144,96,112,6,6,6,6,0,0,240,72,72,112,72,228, + 4,6,6,6,1,0,112,128,96,16,144,224,5,6,6,6, + 0,0,248,168,32,32,32,112,6,6,6,6,0,0,204,72, + 72,72,72,48,6,6,6,6,0,0,220,136,80,80,80,32, + 6,6,6,6,0,0,220,136,168,168,80,80,5,6,6,6, + 1,0,216,80,32,32,80,216,5,6,6,6,1,0,216,136, + 80,32,32,112,4,6,6,6,1,0,240,144,32,64,144,240, + 2,9,9,6,2,254,192,128,128,128,128,128,128,128,192,5, + 9,9,6,1,255,128,128,64,64,32,32,16,16,8,2,9, + 9,6,2,254,192,64,64,64,64,64,64,64,192,5,3,3, + 6,1,4,32,80,136,6,1,1,6,0,254,252,2,2,2, + 6,1,6,128,64,5,5,5,6,0,0,96,16,112,144,104, + 5,7,7,6,0,0,192,64,112,72,72,72,240,4,5,5, + 6,1,0,96,144,128,144,96,5,7,7,6,1,0,48,16, + 112,144,144,144,104,4,5,5,6,1,0,96,144,224,144,96, + 4,7,7,6,1,0,48,64,240,64,64,64,240,5,7,7, + 6,1,254,104,144,144,144,112,16,224,6,7,7,6,0,0, + 192,64,112,72,72,72,236,5,7,7,6,1,0,32,0,96, + 32,32,32,248,3,9,9,6,1,254,32,0,224,32,32,32, + 32,32,192,5,7,7,6,0,0,192,64,88,80,96,80,216, + 5,7,7,6,1,0,96,32,32,32,32,32,248,6,5,5, + 6,0,0,208,168,168,168,172,6,5,5,6,0,0,176,72, + 72,72,236,4,5,5,6,1,0,96,144,144,144,96,5,7, + 7,6,0,254,176,72,72,72,112,64,240,5,7,7,6,1, + 254,104,144,144,144,112,16,56,5,5,5,6,1,0,184,64, + 64,64,240,4,5,5,6,1,0,112,128,96,16,224,5,7, + 7,6,1,0,64,64,240,64,64,72,48,6,5,5,6,0, + 0,216,72,72,72,52,6,5,5,6,0,0,204,68,40,40, + 16,6,5,5,6,0,0,172,168,168,80,80,5,5,5,6, + 0,0,216,80,32,80,216,5,7,7,6,0,254,216,72,72, + 72,48,32,192,4,5,5,6,1,0,240,32,64,144,240,3, + 9,9,6,2,254,32,64,64,64,128,64,64,64,32,1,9, + 9,6,2,254,128,128,128,128,128,128,128,128,128,3,9,9, + 6,2,254,128,64,64,64,32,64,64,64,128,4,2,2,6, + 1,3,80,160,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,6,0,1,1,7,7,6,2, + 254,128,0,128,128,128,128,128,4,8,8,6,1,255,32,32, + 112,128,128,112,32,32,6,7,7,6,0,0,56,64,248,32, + 32,68,252,5,5,5,6,0,1,136,112,80,112,136,5,7, + 7,6,0,0,136,80,248,32,248,32,112,1,9,9,6,2, + 254,128,128,128,0,0,128,128,128,128,4,8,8,6,1,255, + 112,128,96,144,144,96,16,224,3,1,1,6,2,5,160,6, + 7,7,6,0,0,48,72,180,164,180,72,48,4,5,5,6, + 1,1,224,16,208,0,240,6,3,3,6,0,1,108,216,108, + 5,3,3,6,0,2,248,8,8,4,1,1,6,1,3,240, + 6,7,7,6,0,0,48,72,188,180,172,72,48,4,1,1, + 6,1,5,240,4,3,3,6,1,4,96,144,96,5,6,6, + 6,0,0,32,32,248,32,0,248,3,4,4,6,2,3,96, + 160,64,224,3,4,4,6,2,3,224,64,32,192,2,2,2, + 6,2,5,64,128,6,7,7,6,0,254,216,72,72,72,116, + 64,64,6,8,8,6,0,255,124,168,168,104,40,40,40,108, + 1,2,2,6,2,2,128,128,3,3,3,6,1,254,64,32, + 192,3,4,4,6,2,3,192,64,64,224,4,5,5,6,1, + 1,96,144,96,0,240,6,3,3,6,1,1,216,108,216,6, + 7,7,6,0,0,192,68,72,244,44,92,132,6,7,7,6, + 0,0,192,68,72,252,52,72,156,6,7,7,6,0,0,224, + 68,40,212,44,92,132,4,7,7,6,0,254,32,0,32,32, + 64,144,96,6,9,9,6,0,0,32,16,0,112,40,72,120, + 72,204,6,9,9,6,0,0,16,32,0,112,40,72,120,72, + 204,6,9,9,6,0,0,32,80,0,112,40,72,120,72,204, + 6,9,9,6,0,0,40,80,0,112,40,72,120,72,204,6, + 8,8,6,0,0,80,0,112,40,72,120,72,204,6,9,9, + 6,0,0,16,40,16,112,40,72,120,72,204,6,6,6,6, + 0,0,124,48,92,112,144,156,4,8,8,6,1,254,96,144, + 128,128,144,96,32,192,5,9,9,6,0,0,32,16,0,248, + 72,112,64,72,248,5,9,9,6,0,0,16,32,0,248,72, + 112,64,72,248,5,9,9,6,0,0,32,80,0,248,72,112, + 64,72,248,5,8,8,6,0,0,80,0,248,72,112,64,72, + 248,5,9,9,6,0,0,64,32,0,248,32,32,32,32,248, + 5,9,9,6,0,0,16,32,0,248,32,32,32,32,248,5, + 9,9,6,0,0,32,80,0,248,32,32,32,32,248,5,8, + 8,6,0,0,80,0,248,32,32,32,32,248,5,6,6,6, + 0,0,240,72,232,72,72,240,6,9,9,6,0,0,40,80, + 0,220,72,104,88,72,200,4,9,9,6,1,0,64,32,0, + 96,144,144,144,144,96,4,9,9,6,1,0,32,64,0,96, + 144,144,144,144,96,4,9,9,6,1,0,32,80,0,96,144, + 144,144,144,96,4,9,9,6,1,0,80,160,0,96,144,144, + 144,144,96,4,8,8,6,1,0,160,0,96,144,144,144,144, + 96,5,5,5,6,0,1,136,80,32,80,136,6,6,6,6, + 0,0,52,72,88,104,72,176,6,9,9,6,0,0,32,16, + 0,204,72,72,72,72,48,6,9,9,6,0,0,16,32,0, + 204,72,72,72,72,48,6,9,9,6,0,0,16,40,0,204, + 72,72,72,72,48,6,8,8,6,0,0,80,0,204,72,72, + 72,72,48,5,9,9,6,0,0,16,32,0,216,136,80,32, + 32,112,5,6,6,6,0,0,192,112,72,112,64,224,6,6, + 6,6,0,0,48,72,88,68,84,200,5,8,8,6,0,0, + 64,32,0,96,16,112,144,104,5,8,8,6,0,0,16,32, + 0,96,16,112,144,104,5,8,8,6,0,0,32,80,0,96, + 16,112,144,104,5,8,8,6,0,0,80,160,0,96,16,112, + 144,104,5,7,7,6,0,0,80,0,96,16,112,144,104,5, + 9,9,6,0,0,32,80,32,0,96,16,112,144,104,6,5, + 5,6,0,0,108,148,124,144,236,4,7,7,6,1,254,96, + 144,128,144,96,32,192,4,8,8,6,1,0,64,32,0,96, + 144,240,128,112,4,8,8,6,1,0,32,64,0,96,144,240, + 128,112,4,8,8,6,1,0,64,160,0,96,144,240,128,112, + 4,7,7,6,1,0,160,0,96,144,240,128,112,5,8,8, + 6,0,0,64,32,0,96,32,32,32,248,5,8,8,6,0, + 0,16,32,0,96,32,32,32,248,5,8,8,6,0,0,32, + 80,0,96,32,32,32,248,5,7,7,6,0,0,80,0,96, + 32,32,32,248,4,8,8,6,1,0,208,96,160,112,144,144, + 144,96,6,8,8,6,0,0,40,80,0,176,72,72,72,236, + 4,8,8,6,1,0,64,32,0,96,144,144,144,96,4,8, + 8,6,1,0,16,32,0,96,144,144,144,96,4,8,8,6, + 1,0,64,160,0,96,144,144,144,96,4,8,8,6,1,0, + 80,160,0,96,144,144,144,96,4,7,7,6,1,0,160,0, + 96,144,144,144,96,5,5,5,6,0,1,32,0,248,0,32, + 6,6,6,6,0,0,4,56,88,104,72,176,6,8,8,6, + 0,0,32,16,0,216,72,72,72,52,6,8,8,6,0,0, + 16,32,0,216,72,72,72,52,6,8,8,6,0,0,32,80, + 0,216,72,72,72,52,6,7,7,6,0,0,80,0,216,72, + 72,72,52,5,10,10,6,0,254,16,32,0,216,72,72,72, + 48,32,192,5,9,9,6,0,254,192,64,112,72,72,72,112, + 64,224,5,9,9,6,0,254,80,0,216,72,72,72,48,32, + 192}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--11-80-100-100-M-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 6, '1' Height: 7 + Calculated Max Values w= 6 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len= 9 + Font Bounding box w=10 h=16 x=-2 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR08r[1157] U8G_SECTION(".progmem.u8g_font_courR08r") = { + 0,10,16,254,252,6,1,151,3,21,32,127,254,8,254,7, + 254,0,0,0,6,0,1,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,4,160,160,160,5,8,8, + 6,1,255,80,80,248,80,80,248,80,80,4,8,8,6,1, + 255,32,112,128,96,16,144,96,32,6,7,7,6,0,0,224, + 164,200,48,92,148,24,6,6,6,6,0,0,48,64,96,148, + 136,116,1,3,3,6,2,4,128,128,128,3,9,9,6,2, + 254,32,64,64,128,128,128,64,64,32,3,9,9,6,1,254, + 128,64,64,32,32,32,64,64,128,5,4,4,6,0,3,32, + 216,32,80,5,5,5,6,0,1,32,32,248,32,32,2,3, + 3,6,1,254,64,64,128,4,1,1,6,1,3,240,1,2, + 2,6,2,0,128,128,6,9,9,6,0,255,4,8,16,16, + 32,32,64,64,128,4,7,7,6,1,0,96,144,144,144,144, + 144,96,4,7,7,6,1,0,32,224,32,32,32,32,240,4, + 7,7,6,1,0,96,144,16,32,64,128,240,4,7,7,6, + 1,0,96,144,16,96,16,144,96,5,7,7,6,0,0,16, + 48,80,144,248,16,16,4,7,7,6,1,0,240,128,128,224, + 16,16,224,4,7,7,6,1,0,112,128,128,224,144,144,96, + 4,7,7,6,1,0,240,144,16,32,32,64,64,4,7,7, + 6,1,0,96,144,144,96,144,144,96,4,7,7,6,1,0, + 96,144,144,112,16,16,224,1,5,5,6,2,0,128,128,0, + 128,128,2,6,6,6,1,254,64,64,0,64,64,128,3,5, + 5,6,1,1,32,64,128,64,32,4,3,3,6,1,2,240, + 0,240,3,5,5,6,2,1,128,64,32,64,128,4,6,6, + 6,1,0,96,144,32,64,0,64,6,8,8,6,0,255,56, + 68,156,168,168,156,64,56,6,6,6,6,0,0,112,40,72, + 120,72,204,5,6,6,6,0,0,240,72,112,72,72,240,4, + 6,6,6,1,0,96,144,128,128,144,96,5,6,6,6,0, + 0,240,72,72,72,72,240,5,6,6,6,0,0,248,72,112, + 64,72,248,5,6,6,6,0,0,248,72,112,80,64,224,4, + 6,6,6,1,0,96,144,128,176,144,96,6,6,6,6,0, + 0,204,72,120,72,72,204,5,6,6,6,1,0,248,32,32, + 32,32,248,5,6,6,6,1,0,120,16,16,144,144,96,6, + 6,6,6,0,0,216,80,96,80,72,228,5,6,6,6,1, + 0,224,64,64,64,72,248,5,6,6,6,1,0,136,216,168, + 168,136,216,6,6,6,6,0,0,220,72,104,88,72,200,4, + 6,6,6,1,0,96,144,144,144,144,96,5,6,6,6,1, + 0,240,72,72,112,64,224,4,7,7,6,1,255,96,144,144, + 144,144,96,112,6,6,6,6,0,0,240,72,72,112,72,228, + 4,6,6,6,1,0,112,128,96,16,144,224,5,6,6,6, + 0,0,248,168,32,32,32,112,6,6,6,6,0,0,204,72, + 72,72,72,48,6,6,6,6,0,0,220,136,80,80,80,32, + 6,6,6,6,0,0,220,136,168,168,80,80,5,6,6,6, + 1,0,216,80,32,32,80,216,5,6,6,6,1,0,216,136, + 80,32,32,112,4,6,6,6,1,0,240,144,32,64,144,240, + 2,9,9,6,2,254,192,128,128,128,128,128,128,128,192,5, + 9,9,6,1,255,128,128,64,64,32,32,16,16,8,2,9, + 9,6,2,254,192,64,64,64,64,64,64,64,192,5,3,3, + 6,1,4,32,80,136,6,1,1,6,0,254,252,2,2,2, + 6,1,6,128,64,5,5,5,6,0,0,96,16,112,144,104, + 5,7,7,6,0,0,192,64,112,72,72,72,240,4,5,5, + 6,1,0,96,144,128,144,96,5,7,7,6,1,0,48,16, + 112,144,144,144,104,4,5,5,6,1,0,96,144,224,144,96, + 4,7,7,6,1,0,48,64,240,64,64,64,240,5,7,7, + 6,1,254,104,144,144,144,112,16,224,6,7,7,6,0,0, + 192,64,112,72,72,72,236,5,7,7,6,1,0,32,0,96, + 32,32,32,248,3,9,9,6,1,254,32,0,224,32,32,32, + 32,32,192,5,7,7,6,0,0,192,64,88,80,96,80,216, + 5,7,7,6,1,0,96,32,32,32,32,32,248,6,5,5, + 6,0,0,208,168,168,168,172,6,5,5,6,0,0,176,72, + 72,72,236,4,5,5,6,1,0,96,144,144,144,96,5,7, + 7,6,0,254,176,72,72,72,112,64,240,5,7,7,6,1, + 254,104,144,144,144,112,16,56,5,5,5,6,1,0,184,64, + 64,64,240,4,5,5,6,1,0,112,128,96,16,224,5,7, + 7,6,1,0,64,64,240,64,64,72,48,6,5,5,6,0, + 0,216,72,72,72,52,6,5,5,6,0,0,204,68,40,40, + 16,6,5,5,6,0,0,172,168,168,80,80,5,5,5,6, + 0,0,216,80,32,80,216,5,7,7,6,0,254,216,72,72, + 72,48,32,192,4,5,5,6,1,0,240,32,64,144,240,3, + 9,9,6,2,254,32,64,64,64,128,64,64,64,32,1,9, + 9,6,2,254,128,128,128,128,128,128,128,128,128,3,9,9, + 6,2,254,128,64,64,64,32,64,64,64,128,4,2,2,6, + 1,3,80,160,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w=10 h=13 x= 4 y= 8 dx= 9 dy= 0 ascent=12 len=24 + Font Bounding box w=14 h=20 x=-3 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR10[3052] U8G_SECTION(".progmem.u8g_font_courR10") = { + 0,14,20,253,251,9,1,224,3,220,32,255,253,12,253,10, + 253,0,0,0,9,0,1,1,9,9,9,3,0,128,128,128, + 128,128,128,0,128,128,4,4,4,9,2,6,144,144,144,144, + 5,10,10,9,2,255,80,80,80,248,80,80,248,80,80,80, + 5,13,13,9,2,254,32,32,120,136,128,192,48,8,136,240, + 32,32,32,8,10,10,9,0,0,96,144,144,115,12,48,204, + 18,18,12,6,8,8,9,1,0,56,64,64,64,168,144,152, + 100,1,4,4,9,3,5,128,128,128,128,3,12,12,9,3, + 254,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 9,2,254,128,64,64,32,32,32,32,32,32,64,64,128,5, + 6,6,9,1,3,32,32,248,32,80,136,7,7,7,9,1, + 1,16,16,16,254,16,16,16,3,4,4,9,2,254,96,96, + 192,128,6,1,1,9,1,4,252,2,2,2,9,3,0,192, + 192,6,11,11,9,1,255,4,8,8,16,16,32,32,64,64, + 128,128,6,10,10,9,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,9,1,0,32,96,160,32,32,32,32,32, + 32,248,5,10,10,9,1,0,112,136,136,8,16,32,64,128, + 136,248,6,10,10,9,1,0,56,68,4,4,24,4,4,4, + 132,120,6,10,10,9,1,0,24,40,40,72,72,136,136,252, + 8,28,6,10,10,9,1,0,124,64,64,64,120,4,4,4, + 132,120,6,10,10,9,1,0,56,64,128,128,184,196,132,132, + 68,56,6,10,10,9,1,0,252,132,4,8,8,8,16,16, + 16,16,5,10,10,9,2,0,112,136,136,136,112,136,136,136, + 136,112,6,10,10,9,1,0,112,136,132,132,140,116,4,4, + 8,112,2,7,7,9,3,0,192,192,0,0,0,192,192,3, + 9,9,9,2,254,96,96,0,0,0,96,96,192,128,7,7, + 7,9,0,1,6,24,96,128,96,24,6,7,3,3,9,1, + 3,254,0,254,7,7,7,9,1,1,192,48,12,2,12,48, + 192,5,9,9,9,1,0,112,136,8,8,48,32,0,32,32, + 7,10,10,9,1,255,56,68,132,156,164,164,158,128,64,56, + 9,9,18,9,255,0,56,0,8,0,20,0,20,0,34,0, + 62,0,65,0,65,0,247,128,7,9,9,9,0,0,252,66, + 66,66,124,66,66,66,252,7,9,9,9,1,0,58,70,130, + 128,128,128,128,66,60,8,9,9,9,0,0,252,66,65,65, + 65,65,65,66,252,7,9,9,9,1,0,254,66,66,72,120, + 72,66,66,254,7,9,9,9,1,0,254,66,66,72,120,72, + 64,64,240,8,9,9,9,0,0,58,70,130,128,128,143,130, + 66,60,8,9,9,9,0,0,231,66,66,66,126,66,66,66, + 231,5,9,9,9,2,0,248,32,32,32,32,32,32,32,248, + 7,9,9,9,1,0,62,8,8,8,8,136,136,136,112,8, + 9,9,9,0,0,238,68,72,80,112,72,68,68,227,8,9, + 9,9,0,0,248,32,32,32,32,33,33,33,255,9,9,18, + 9,0,0,227,128,99,0,85,0,85,0,73,0,73,0,65, + 0,65,0,227,128,8,9,9,9,0,0,231,98,82,82,74, + 74,70,70,226,8,9,9,9,0,0,60,66,129,129,129,129, + 129,66,60,7,9,9,9,1,0,252,66,66,66,66,124,64, + 64,240,8,11,11,9,0,254,60,66,129,129,129,129,129,66, + 60,49,94,8,9,9,9,0,0,252,66,66,66,68,120,68, + 66,225,6,9,9,9,1,0,116,140,132,128,120,4,132,196, + 184,7,9,9,9,1,0,254,146,146,16,16,16,16,16,124, + 8,9,9,9,0,0,231,66,66,66,66,66,66,66,60,9, + 9,18,9,0,0,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,9,9,18,9,0,0,227,128,65, + 0,73,0,73,0,85,0,85,0,34,0,34,0,34,0,8, + 9,9,9,0,0,231,66,36,36,24,36,36,66,231,7,9, + 9,9,0,0,238,68,68,40,40,16,16,16,124,6,9,9, + 9,1,0,252,132,136,16,32,32,68,132,252,3,12,12,9, + 3,254,224,128,128,128,128,128,128,128,128,128,128,224,6,11, + 11,9,1,255,128,64,64,32,32,16,16,8,8,4,4,3, + 12,12,9,2,254,224,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,9,2,4,32,80,80,136,136,9,1,2,9, + 0,253,255,128,4,2,2,9,2,8,192,48,7,7,7,9, + 1,0,120,132,4,124,132,132,122,8,10,10,9,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,9,1,0,58, + 70,130,128,128,66,60,8,10,10,9,0,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,9,1,0,56,68,130,254, + 128,66,60,7,10,10,9,1,0,30,32,32,252,32,32,32, + 32,32,248,8,10,10,9,0,253,59,70,130,130,130,70,58, + 2,4,120,8,10,10,9,0,0,192,64,64,92,98,66,66, + 66,66,231,5,10,10,9,2,0,32,32,0,224,32,32,32, + 32,32,248,5,13,13,9,1,253,8,8,0,248,8,8,8, + 8,8,8,8,16,224,7,10,10,9,1,0,192,64,64,78, + 72,80,96,80,72,206,5,10,10,9,2,0,224,32,32,32, + 32,32,32,32,32,248,9,7,14,9,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,9,0,0, + 220,98,66,66,66,66,231,8,7,7,9,0,0,60,66,129, + 129,129,66,60,8,10,10,9,0,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,9,0,253,59,70,130,130,130,70, + 58,2,2,15,7,7,7,9,1,0,204,82,96,64,64,64, + 248,6,7,7,9,1,0,124,132,128,120,4,132,248,7,9, + 9,9,0,0,32,32,252,32,32,32,32,34,28,8,7,7, + 9,0,0,198,66,66,66,66,70,59,8,7,7,9,0,0, + 231,66,66,36,36,24,24,9,7,14,9,0,0,227,128,65, + 0,73,0,73,0,42,0,54,0,34,0,7,7,7,9,0, + 0,238,68,40,16,40,68,238,8,10,10,9,0,253,231,66, + 66,36,36,24,8,16,16,120,5,7,7,9,2,0,248,136, + 16,32,64,136,248,3,12,12,9,2,254,32,64,64,64,64, + 128,64,64,64,64,64,32,1,11,11,9,3,254,128,128,128, + 128,128,128,128,128,128,128,128,3,12,12,9,2,254,128,64, + 64,64,64,32,64,64,64,64,64,128,6,2,2,9,1,3, + 100,152,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,9,0,1,1,9,9,9,4,254,128, + 128,0,128,128,128,128,128,128,5,9,9,9,2,0,32,32, + 120,136,128,136,112,32,32,7,9,9,9,1,0,24,36,32, + 32,120,32,32,66,252,6,6,6,9,1,1,180,72,132,132, + 72,180,7,9,9,9,1,0,238,68,68,40,124,16,124,16, + 56,1,11,11,9,3,254,128,128,128,128,0,0,128,128,128, + 128,128,6,10,10,9,1,255,60,68,64,240,136,68,60,8, + 136,240,5,1,1,9,2,8,216,8,9,9,9,0,0,60, + 66,153,165,161,165,153,66,60,4,6,6,9,2,3,192,32, + 224,176,0,240,8,7,7,9,0,0,17,34,68,204,68,34, + 17,7,3,3,9,1,3,254,2,2,6,1,1,9,1,4, + 252,8,9,9,9,0,0,60,66,185,165,185,169,165,66,60, + 4,1,1,9,2,8,240,4,4,4,9,2,6,96,144,144, + 96,7,7,7,9,1,1,16,16,254,16,16,0,254,4,6, + 6,9,2,4,96,144,16,32,64,240,4,6,6,9,2,4, + 96,144,96,16,144,96,4,2,2,9,2,8,48,192,8,10, + 10,9,0,253,198,66,66,66,66,70,123,64,64,64,7,10, + 10,9,1,255,126,148,148,148,116,20,20,20,20,62,2,2, + 2,9,3,3,192,192,3,3,3,9,2,253,64,32,224,3, + 6,6,9,3,4,64,192,64,64,64,224,4,6,6,9,2, + 3,96,144,144,96,0,240,8,7,7,9,0,0,136,68,34, + 51,34,68,136,10,10,20,9,255,0,64,0,193,0,66,0, + 68,0,68,128,233,128,18,128,20,128,39,192,64,128,10,10, + 20,9,255,0,64,0,193,0,66,0,68,0,69,128,234,64, + 16,64,16,128,33,0,67,192,10,10,20,9,255,0,96,0, + 145,0,98,0,20,0,148,128,105,128,18,128,20,128,39,192, + 64,128,5,9,9,9,2,254,32,32,0,32,96,128,128,136, + 112,9,12,24,9,0,0,48,0,12,0,0,0,56,0,8, + 0,20,0,20,0,34,0,62,0,65,0,65,0,247,128,9, + 12,24,9,0,0,12,0,48,0,0,0,56,0,8,0,20, + 0,20,0,34,0,62,0,65,0,65,0,247,128,9,12,24, + 9,0,0,8,0,20,0,0,0,56,0,8,0,20,0,20, + 0,34,0,62,0,65,0,65,0,247,128,9,12,24,9,0, + 0,26,0,44,0,0,0,56,0,8,0,20,0,20,0,34, + 0,62,0,65,0,65,0,247,128,9,11,22,9,0,0,54, + 0,0,0,56,0,8,0,20,0,20,0,34,0,62,0,65, + 0,65,0,247,128,9,12,24,9,0,0,24,0,36,0,24, + 0,56,0,8,0,20,0,20,0,34,0,62,0,65,0,65, + 0,247,128,9,9,18,9,255,0,31,128,12,128,20,0,20, + 128,39,128,60,128,68,0,68,128,239,128,7,12,12,9,1, + 253,58,70,130,128,128,128,128,66,60,16,8,56,7,12,12, + 9,1,0,96,24,0,254,66,66,72,120,72,66,66,254,7, + 12,12,9,1,0,12,48,0,254,66,66,72,120,72,66,66, + 254,7,12,12,9,1,0,16,40,0,254,66,66,72,120,72, + 66,66,254,7,11,11,9,1,0,108,0,254,66,66,72,120, + 72,66,66,254,5,12,12,9,2,0,192,48,0,248,32,32, + 32,32,32,32,32,248,5,12,12,9,2,0,24,96,0,248, + 32,32,32,32,32,32,32,248,5,12,12,9,2,0,32,80, + 0,248,32,32,32,32,32,32,32,248,5,11,11,9,2,0, + 216,0,248,32,32,32,32,32,32,32,248,8,9,9,9,0, + 0,252,66,65,65,241,65,65,66,252,8,12,12,9,0,0, + 26,44,0,231,98,82,82,74,74,70,70,226,8,12,12,9, + 0,0,48,12,0,60,66,129,129,129,129,129,66,60,8,12, + 12,9,0,0,12,48,0,60,66,129,129,129,129,129,66,60, + 8,12,12,9,0,0,16,40,0,60,66,129,129,129,129,129, + 66,60,8,12,12,9,0,0,26,44,0,60,66,129,129,129, + 129,129,66,60,8,11,11,9,0,0,102,0,60,66,129,129, + 129,129,129,66,60,7,7,7,9,1,1,130,68,40,16,40, + 68,130,9,9,18,9,255,0,30,128,33,0,66,128,68,128, + 72,128,80,128,32,128,97,0,158,0,8,12,12,9,0,0, + 48,12,0,231,66,66,66,66,66,66,66,60,8,12,12,9, + 0,0,12,48,0,231,66,66,66,66,66,66,66,60,8,12, + 12,9,0,0,16,40,0,231,66,66,66,66,66,66,66,60, + 8,11,11,9,0,0,102,0,231,66,66,66,66,66,66,66, + 60,7,12,12,9,1,0,12,48,0,238,68,68,40,40,16, + 16,16,124,7,9,9,9,0,0,224,64,124,66,66,66,124, + 64,224,7,9,9,9,0,0,56,68,68,88,68,66,66,82, + 204,7,10,10,9,1,0,96,24,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,24,96,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,16,40,0,120,132,4,124,132,140, + 118,7,10,10,9,1,0,52,88,0,120,132,4,124,132,140, + 118,7,9,9,9,1,0,108,0,120,132,4,124,132,140,118, + 7,10,10,9,1,0,48,72,48,120,132,4,124,132,140,118, + 8,7,7,9,0,0,118,137,9,127,136,137,118,7,10,10, + 9,1,253,58,70,130,128,128,66,60,16,8,56,7,10,10, + 9,1,0,96,24,0,56,68,130,254,128,66,60,7,10,10, + 9,1,0,12,48,0,56,68,130,254,128,66,60,7,10,10, + 9,1,0,16,40,0,56,68,130,254,128,66,60,7,9,9, + 9,1,0,108,0,56,68,130,254,128,66,60,5,10,10,9, + 2,0,192,48,0,224,32,32,32,32,32,248,5,10,10,9, + 2,0,48,192,0,224,32,32,32,32,32,248,5,10,10,9, + 2,0,32,80,0,224,32,32,32,32,32,248,5,9,9,9, + 2,0,216,0,224,32,32,32,32,32,248,8,12,12,9,0, + 0,2,228,24,40,68,60,66,129,129,129,66,60,8,10,10, + 9,0,0,26,44,0,220,98,66,66,66,66,231,8,10,10, + 9,0,0,48,12,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,12,48,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,16,40,0,60,66,129,129,129,66,60,8,10,10, + 9,0,0,26,44,0,60,66,129,129,129,66,60,8,9,9, + 9,0,0,108,0,60,66,129,129,129,66,60,8,7,7,9, + 0,1,24,24,0,255,0,24,24,8,7,7,9,0,0,61, + 70,137,145,161,66,188,8,10,10,9,0,0,48,12,0,198, + 66,66,66,66,70,59,8,10,10,9,0,0,12,48,0,198, + 66,66,66,66,70,59,8,10,10,9,0,0,16,40,0,198, + 66,66,66,66,70,59,8,9,9,9,0,0,108,0,198,66, + 66,66,66,70,59,8,13,13,9,0,253,6,24,0,231,66, + 66,36,36,24,8,16,16,120,8,12,12,9,0,253,192,64, + 92,98,65,65,65,98,92,64,64,240,8,12,12,9,0,253, + 54,0,231,66,66,36,36,24,8,16,16,120}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--14-100-100-100-M-90-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 9, '1' Height: 10 + Calculated Max Values w= 9 h=13 x= 3 y= 8 dx= 9 dy= 0 ascent=11 len=18 + Font Bounding box w=14 h=20 x=-3 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR10r[1443] U8G_SECTION(".progmem.u8g_font_courR10r") = { + 0,14,20,253,251,9,1,224,3,220,32,127,253,11,253,10, + 253,0,0,0,9,0,1,1,9,9,9,3,0,128,128,128, + 128,128,128,0,128,128,4,4,4,9,2,6,144,144,144,144, + 5,10,10,9,2,255,80,80,80,248,80,80,248,80,80,80, + 5,13,13,9,2,254,32,32,120,136,128,192,48,8,136,240, + 32,32,32,8,10,10,9,0,0,96,144,144,115,12,48,204, + 18,18,12,6,8,8,9,1,0,56,64,64,64,168,144,152, + 100,1,4,4,9,3,5,128,128,128,128,3,12,12,9,3, + 254,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 9,2,254,128,64,64,32,32,32,32,32,32,64,64,128,5, + 6,6,9,1,3,32,32,248,32,80,136,7,7,7,9,1, + 1,16,16,16,254,16,16,16,3,4,4,9,2,254,96,96, + 192,128,6,1,1,9,1,4,252,2,2,2,9,3,0,192, + 192,6,11,11,9,1,255,4,8,8,16,16,32,32,64,64, + 128,128,6,10,10,9,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,9,1,0,32,96,160,32,32,32,32,32, + 32,248,5,10,10,9,1,0,112,136,136,8,16,32,64,128, + 136,248,6,10,10,9,1,0,56,68,4,4,24,4,4,4, + 132,120,6,10,10,9,1,0,24,40,40,72,72,136,136,252, + 8,28,6,10,10,9,1,0,124,64,64,64,120,4,4,4, + 132,120,6,10,10,9,1,0,56,64,128,128,184,196,132,132, + 68,56,6,10,10,9,1,0,252,132,4,8,8,8,16,16, + 16,16,5,10,10,9,2,0,112,136,136,136,112,136,136,136, + 136,112,6,10,10,9,1,0,112,136,132,132,140,116,4,4, + 8,112,2,7,7,9,3,0,192,192,0,0,0,192,192,3, + 9,9,9,2,254,96,96,0,0,0,96,96,192,128,7,7, + 7,9,0,1,6,24,96,128,96,24,6,7,3,3,9,1, + 3,254,0,254,7,7,7,9,1,1,192,48,12,2,12,48, + 192,5,9,9,9,1,0,112,136,8,8,48,32,0,32,32, + 7,10,10,9,1,255,56,68,132,156,164,164,158,128,64,56, + 9,9,18,9,255,0,56,0,8,0,20,0,20,0,34,0, + 62,0,65,0,65,0,247,128,7,9,9,9,0,0,252,66, + 66,66,124,66,66,66,252,7,9,9,9,1,0,58,70,130, + 128,128,128,128,66,60,8,9,9,9,0,0,252,66,65,65, + 65,65,65,66,252,7,9,9,9,1,0,254,66,66,72,120, + 72,66,66,254,7,9,9,9,1,0,254,66,66,72,120,72, + 64,64,240,8,9,9,9,0,0,58,70,130,128,128,143,130, + 66,60,8,9,9,9,0,0,231,66,66,66,126,66,66,66, + 231,5,9,9,9,2,0,248,32,32,32,32,32,32,32,248, + 7,9,9,9,1,0,62,8,8,8,8,136,136,136,112,8, + 9,9,9,0,0,238,68,72,80,112,72,68,68,227,8,9, + 9,9,0,0,248,32,32,32,32,33,33,33,255,9,9,18, + 9,0,0,227,128,99,0,85,0,85,0,73,0,73,0,65, + 0,65,0,227,128,8,9,9,9,0,0,231,98,82,82,74, + 74,70,70,226,8,9,9,9,0,0,60,66,129,129,129,129, + 129,66,60,7,9,9,9,1,0,252,66,66,66,66,124,64, + 64,240,8,11,11,9,0,254,60,66,129,129,129,129,129,66, + 60,49,94,8,9,9,9,0,0,252,66,66,66,68,120,68, + 66,225,6,9,9,9,1,0,116,140,132,128,120,4,132,196, + 184,7,9,9,9,1,0,254,146,146,16,16,16,16,16,124, + 8,9,9,9,0,0,231,66,66,66,66,66,66,66,60,9, + 9,18,9,0,0,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,9,9,18,9,0,0,227,128,65, + 0,73,0,73,0,85,0,85,0,34,0,34,0,34,0,8, + 9,9,9,0,0,231,66,36,36,24,36,36,66,231,7,9, + 9,9,0,0,238,68,68,40,40,16,16,16,124,6,9,9, + 9,1,0,252,132,136,16,32,32,68,132,252,3,12,12,9, + 3,254,224,128,128,128,128,128,128,128,128,128,128,224,6,11, + 11,9,1,255,128,64,64,32,32,16,16,8,8,4,4,3, + 12,12,9,2,254,224,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,9,2,4,32,80,80,136,136,9,1,2,9, + 0,253,255,128,4,2,2,9,2,8,192,48,7,7,7,9, + 1,0,120,132,4,124,132,132,122,8,10,10,9,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,9,1,0,58, + 70,130,128,128,66,60,8,10,10,9,0,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,9,1,0,56,68,130,254, + 128,66,60,7,10,10,9,1,0,30,32,32,252,32,32,32, + 32,32,248,8,10,10,9,0,253,59,70,130,130,130,70,58, + 2,4,120,8,10,10,9,0,0,192,64,64,92,98,66,66, + 66,66,231,5,10,10,9,2,0,32,32,0,224,32,32,32, + 32,32,248,5,13,13,9,1,253,8,8,0,248,8,8,8, + 8,8,8,8,16,224,7,10,10,9,1,0,192,64,64,78, + 72,80,96,80,72,206,5,10,10,9,2,0,224,32,32,32, + 32,32,32,32,32,248,9,7,14,9,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,9,0,0, + 220,98,66,66,66,66,231,8,7,7,9,0,0,60,66,129, + 129,129,66,60,8,10,10,9,0,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,9,0,253,59,70,130,130,130,70, + 58,2,2,15,7,7,7,9,1,0,204,82,96,64,64,64, + 248,6,7,7,9,1,0,124,132,128,120,4,132,248,7,9, + 9,9,0,0,32,32,252,32,32,32,32,34,28,8,7,7, + 9,0,0,198,66,66,66,66,70,59,8,7,7,9,0,0, + 231,66,66,36,36,24,24,9,7,14,9,0,0,227,128,65, + 0,73,0,73,0,42,0,54,0,34,0,7,7,7,9,0, + 0,238,68,40,16,40,68,238,8,10,10,9,0,253,231,66, + 66,36,36,24,8,16,16,120,5,7,7,9,2,0,248,136, + 16,32,64,136,248,3,12,12,9,2,254,32,64,64,64,64, + 128,64,64,64,64,64,32,1,11,11,9,3,254,128,128,128, + 128,128,128,128,128,128,128,128,3,12,12,9,2,254,128,64, + 64,64,64,32,64,64,64,64,64,128,6,2,2,9,1,3, + 100,152,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=14 x= 4 y= 8 dx=10 dy= 0 ascent=14 len=28 + Font Bounding box w=15 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR12[3471] U8G_SECTION(".progmem.u8g_font_courR12") = { + 0,15,24,253,250,10,2,12,4,92,32,255,253,14,253,11, + 253,0,0,0,10,0,1,1,11,11,10,4,0,128,128,128, + 128,128,128,128,128,0,128,128,4,5,5,10,3,6,144,144, + 144,144,144,7,12,12,10,1,255,40,40,40,40,254,40,40, + 254,40,40,40,40,5,13,13,10,2,255,32,32,120,136,128, + 128,112,8,8,136,240,32,32,7,11,11,10,1,0,112,136, + 136,112,6,56,192,28,34,34,28,6,9,9,10,1,0,48, + 72,64,32,100,148,136,136,116,1,5,5,10,4,6,128,128, + 128,128,128,3,13,13,10,4,254,32,64,64,64,128,128,128, + 128,128,64,64,64,32,3,13,13,10,2,254,128,64,64,64, + 32,32,32,32,32,64,64,64,128,7,6,6,10,1,5,16, + 16,254,56,40,68,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,3,4,4,10,2,254,96,96,64,128,7,1, + 1,10,1,4,254,2,2,2,10,3,0,192,192,6,13,13, + 10,2,254,4,4,8,8,16,16,16,32,32,64,64,128,128, + 7,11,11,10,1,0,56,68,68,130,130,130,130,130,68,68, + 56,7,11,11,10,1,0,16,48,208,16,16,16,16,16,16, + 16,254,7,11,11,10,1,0,56,68,130,2,2,4,8,16, + 32,66,254,7,11,11,10,1,0,56,68,130,4,24,4,2, + 2,130,68,56,7,11,11,10,1,0,12,12,20,36,36,68, + 132,254,4,4,30,7,11,11,10,1,0,126,64,64,64,120, + 68,2,2,130,68,56,7,11,11,10,2,0,28,96,64,128, + 184,196,130,130,130,68,56,6,11,11,10,1,0,252,132,4, + 8,8,8,16,16,16,32,32,6,11,11,10,2,0,48,72, + 132,132,120,72,132,132,132,72,48,7,11,11,10,1,0,56, + 68,130,130,70,58,2,2,4,12,112,2,7,7,10,3,0, + 192,192,0,0,0,192,192,3,9,9,10,2,254,96,96,0, + 0,0,96,96,64,128,8,9,9,10,1,0,1,6,24,96, + 128,96,24,6,1,8,4,4,10,1,3,255,0,0,255,8, + 9,9,10,1,0,128,96,24,6,1,6,24,96,128,6,10, + 10,10,2,0,120,132,132,4,24,32,32,0,32,32,9,12, + 24,10,0,255,62,0,65,0,65,0,128,128,156,128,164,128, + 164,128,164,128,159,0,64,0,65,0,62,0,9,10,20,10, + 0,0,120,0,20,0,20,0,34,0,34,0,34,0,62,0, + 65,0,65,0,227,128,8,10,10,10,1,0,252,66,65,66, + 124,66,65,65,66,252,8,10,10,10,1,0,29,99,65,128, + 128,128,128,65,99,28,8,10,10,10,1,0,248,70,66,65, + 65,65,65,66,70,248,7,10,10,10,1,0,254,66,66,72, + 120,72,64,66,66,254,7,10,10,10,1,0,254,66,66,72, + 120,72,64,64,64,240,9,10,20,10,1,0,29,0,99,0, + 65,0,128,0,128,0,135,128,129,0,65,0,97,0,30,0, + 8,10,10,10,1,0,231,66,66,66,126,66,66,66,66,231, + 7,10,10,10,1,0,254,16,16,16,16,16,16,16,16,254, + 8,10,10,10,1,0,63,4,4,4,4,4,132,132,132,120, + 8,10,10,10,1,0,247,66,68,72,80,120,68,68,66,243, + 8,10,10,10,1,0,248,32,32,32,32,32,33,33,33,255, + 9,10,20,10,0,0,193,128,99,0,99,0,85,0,85,0, + 73,0,73,0,65,0,65,0,227,128,9,10,20,10,0,0, + 231,128,97,0,81,0,81,0,73,0,73,0,69,0,69,0, + 67,0,243,0,8,10,10,10,1,0,60,66,66,129,129,129, + 129,66,66,60,8,10,10,10,1,0,252,66,65,65,66,124, + 64,64,64,248,8,12,12,10,1,254,60,66,66,129,129,129, + 129,66,66,60,17,46,8,10,10,10,1,0,248,68,66,66, + 68,120,68,66,66,243,7,10,10,10,1,0,58,70,130,128, + 112,12,2,130,196,184,7,10,10,10,1,0,254,146,146,146, + 16,16,16,16,16,124,9,10,20,10,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,10,20,10,0,0,227,128,65,0,65,0,34,0,34,0, + 34,0,20,0,20,0,8,0,8,0,9,10,20,10,0,0, + 247,128,65,0,73,0,73,0,85,0,85,0,85,0,34,0, + 34,0,34,0,9,10,20,10,0,0,227,128,65,0,34,0, + 20,0,8,0,8,0,20,0,34,0,65,0,227,128,9,10, + 20,10,0,0,227,128,65,0,34,0,34,0,20,0,8,0, + 8,0,8,0,8,0,62,0,7,10,10,10,1,0,254,130, + 132,8,16,16,32,66,130,254,3,13,13,10,4,254,224,128, + 128,128,128,128,128,128,128,128,128,128,224,6,13,13,10,2, + 254,128,128,64,64,32,32,32,16,16,8,8,4,4,3,13, + 13,10,2,254,224,32,32,32,32,32,32,32,32,32,32,32, + 224,7,4,4,10,1,7,16,40,68,130,10,1,2,10,0, + 253,255,192,3,3,3,10,2,8,128,64,32,7,7,7,10, + 1,0,56,68,4,124,132,132,122,8,10,10,10,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,10,1,0,58, + 70,130,128,128,66,60,8,10,10,10,1,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,10,1,0,56,68,130,254, + 128,66,60,7,10,10,10,2,0,28,34,32,252,32,32,32, + 32,32,252,8,10,10,10,1,253,59,70,130,130,130,70,58, + 2,2,60,8,10,10,10,1,0,192,64,64,92,98,66,66, + 66,66,231,7,10,10,10,1,0,16,16,0,112,16,16,16, + 16,16,254,5,13,13,10,2,253,16,16,0,248,8,8,8, + 8,8,8,8,8,240,8,10,10,10,1,0,192,64,64,79, + 68,72,112,72,68,207,7,10,10,10,1,0,112,16,16,16, + 16,16,16,16,16,254,9,7,14,10,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,10,1,0, + 220,98,66,66,66,66,231,7,7,7,10,1,0,56,68,130, + 130,130,68,56,8,10,10,10,1,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,10,1,253,59,70,130,130,130,70, + 58,2,2,15,8,7,7,10,1,0,238,49,32,32,32,32, + 252,6,7,7,10,2,0,124,132,128,120,4,132,248,8,9, + 9,10,0,0,32,32,254,32,32,32,32,33,30,8,7,7, + 10,1,0,198,66,66,66,66,70,59,9,7,14,10,0,0, + 247,128,65,0,34,0,34,0,20,0,20,0,8,0,9,7, + 14,10,0,0,227,128,65,0,73,0,42,0,42,0,54,0, + 34,0,7,7,7,10,1,0,238,68,40,16,40,68,238,9, + 10,20,10,0,253,227,128,65,0,34,0,34,0,20,0,20, + 0,8,0,8,0,16,0,120,0,6,7,7,10,2,0,252, + 136,16,32,64,132,252,3,13,13,10,3,254,32,64,64,64, + 64,64,128,64,64,64,64,64,32,1,12,12,10,4,254,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,10,3, + 254,128,64,64,64,64,64,32,64,64,64,64,64,128,7,3, + 3,10,1,3,96,146,12,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,10,0,1,1,10, + 10,10,4,253,128,128,0,128,128,128,128,128,128,128,5,10, + 10,10,2,0,32,32,120,136,128,128,136,112,32,32,8,10, + 10,10,1,0,28,34,32,32,248,32,32,32,65,255,7,7, + 7,10,1,1,130,124,68,68,68,124,130,9,10,20,10,0, + 0,227,128,65,0,34,0,34,0,20,0,62,0,8,0,62, + 0,8,0,62,0,1,12,12,10,4,254,128,128,128,128,128, + 0,0,128,128,128,128,128,9,12,24,10,0,255,31,0,33, + 0,33,0,112,0,140,0,131,0,96,128,24,128,7,0,66, + 0,66,0,124,0,4,2,2,10,3,8,144,144,10,10,20, + 10,0,0,30,0,33,0,64,128,142,64,144,64,144,64,142, + 64,64,128,33,0,30,0,5,7,7,10,2,3,112,8,120, + 136,120,0,248,7,7,7,10,1,0,18,36,72,144,72,36, + 18,7,4,4,10,1,2,254,2,2,2,7,1,1,10,1, + 4,254,10,10,20,10,0,0,30,0,33,0,64,128,156,64, + 146,64,156,64,146,64,64,128,33,0,30,0,5,1,1,10, + 2,8,248,5,5,5,10,2,6,112,136,136,136,112,7,9, + 9,10,1,0,16,16,16,254,16,16,16,0,254,4,6,6, + 10,2,5,96,144,32,64,144,240,4,6,6,10,3,5,96, + 144,32,16,144,96,3,3,3,10,4,8,32,64,128,8,10, + 10,10,1,253,198,66,66,66,66,70,123,64,64,64,7,12, + 12,10,1,255,62,84,148,148,148,84,52,20,20,20,20,62, + 2,2,2,10,4,4,192,192,3,4,4,10,3,253,64,64, + 32,224,5,6,6,10,2,5,32,224,32,32,32,248,5,7, + 7,10,2,3,112,136,136,136,112,0,248,7,7,7,10,1, + 0,144,72,36,18,36,72,144,10,11,22,10,0,0,32,0, + 224,64,32,128,33,0,34,0,252,128,9,128,18,128,36,128, + 71,192,0,128,10,11,22,10,0,0,32,0,224,64,32,128, + 33,0,34,0,253,128,10,64,16,128,33,0,66,64,3,192, + 10,11,22,10,0,0,96,0,144,64,32,128,17,0,146,0, + 100,128,9,128,18,128,36,128,71,192,0,128,6,10,10,10, + 1,253,16,16,0,16,16,96,128,132,132,120,9,14,28,10, + 0,0,32,0,16,0,8,0,0,0,120,0,20,0,20,0, + 34,0,34,0,34,0,62,0,65,0,65,0,227,128,9,14, + 28,10,0,0,4,0,8,0,16,0,0,0,120,0,20,0, + 20,0,34,0,34,0,34,0,62,0,65,0,65,0,227,128, + 9,14,28,10,0,0,8,0,20,0,34,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,13,26,10,0,0,50,0,76,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,13,26,10,0,0,36,0,36,0,0,0,120,0, + 20,0,20,0,34,0,34,0,34,0,62,0,65,0,65,0, + 227,128,9,14,28,10,0,0,24,0,36,0,36,0,24,0, + 120,0,20,0,20,0,34,0,34,0,34,0,62,0,65,0, + 65,0,227,128,9,10,20,10,0,0,127,128,40,128,40,128, + 74,0,78,0,122,0,72,128,136,128,136,128,223,128,8,13, + 13,10,1,253,29,99,65,128,128,128,128,65,99,28,16,8, + 56,7,14,14,10,1,0,32,16,8,0,254,66,66,72,120, + 72,64,66,66,254,7,14,14,10,1,0,4,8,16,0,254, + 66,66,72,120,72,64,66,66,254,7,14,14,10,1,0,16, + 40,68,0,254,66,66,72,120,72,64,66,66,254,7,13,13, + 10,1,0,36,36,0,254,66,66,72,120,72,64,66,66,254, + 7,14,14,10,1,0,32,16,8,0,254,16,16,16,16,16, + 16,16,16,254,7,14,14,10,1,0,8,16,32,0,254,16, + 16,16,16,16,16,16,16,254,7,14,14,10,1,0,16,40, + 68,0,254,16,16,16,16,16,16,16,16,254,7,13,13,10, + 1,0,68,68,0,254,16,16,16,16,16,16,16,16,254,8, + 10,10,10,1,0,248,70,66,65,241,65,65,66,70,248,9, + 13,26,10,0,0,25,0,38,0,0,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,243,0,8, + 14,14,10,1,0,32,16,8,0,60,66,66,129,129,129,129, + 66,66,60,8,14,14,10,1,0,4,8,16,0,60,66,66, + 129,129,129,129,66,66,60,8,14,14,10,1,0,8,20,34, + 0,60,66,66,129,129,129,129,66,66,60,8,13,13,10,1, + 0,50,76,0,60,66,66,129,129,129,129,66,66,60,8,13, + 13,10,1,0,36,36,0,60,66,66,129,129,129,129,66,66, + 60,7,7,7,10,1,1,130,68,40,16,40,68,130,8,10, + 10,10,1,0,61,66,66,133,137,145,161,66,66,188,9,14, + 28,10,0,0,16,0,8,0,4,0,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,14,28,10,0,0,2,0,4,0,8,0,0,0,247,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 28,0,9,14,28,10,0,0,8,0,20,0,34,0,0,0, + 247,128,65,0,65,0,65,0,65,0,65,0,65,0,65,0, + 34,0,28,0,9,13,26,10,0,0,34,0,34,0,0,0, + 247,128,65,0,65,0,65,0,65,0,65,0,65,0,65,0, + 34,0,28,0,9,14,28,10,0,0,2,0,4,0,8,0, + 0,0,227,128,65,0,34,0,34,0,20,0,8,0,8,0, + 8,0,8,0,62,0,8,10,10,10,1,0,224,64,124,66, + 65,66,124,64,64,224,7,11,11,10,1,0,56,68,68,72, + 88,68,66,66,66,82,204,7,11,11,10,1,0,32,16,8, + 0,56,68,4,124,132,132,122,7,11,11,10,1,0,4,8, + 16,0,56,68,4,124,132,132,122,7,11,11,10,1,0,16, + 40,68,0,56,68,4,124,132,132,122,7,10,10,10,1,0, + 50,76,0,56,68,4,124,132,132,122,7,10,10,10,1,0, + 36,36,0,56,68,4,124,132,132,122,7,12,12,10,1,0, + 24,36,36,24,0,56,68,4,124,132,132,122,9,7,14,10, + 0,0,55,0,72,128,8,128,127,128,136,0,136,128,119,0, + 7,10,10,10,1,253,58,70,130,128,128,66,60,16,8,56, + 7,11,11,10,1,0,32,16,8,0,56,68,130,254,128,66, + 60,7,11,11,10,1,0,4,8,16,0,56,68,130,254,128, + 66,60,7,11,11,10,1,0,16,40,68,0,56,68,130,254, + 128,66,60,7,10,10,10,1,0,36,36,0,56,68,130,254, + 128,66,60,7,11,11,10,1,0,32,16,8,0,112,16,16, + 16,16,16,254,7,11,11,10,1,0,8,16,32,0,112,16, + 16,16,16,16,254,7,11,11,10,1,0,16,40,68,0,112, + 16,16,16,16,16,254,7,10,10,10,1,0,72,72,0,112, + 16,16,16,16,16,254,7,11,11,10,1,0,230,24,104,4, + 60,66,130,130,130,68,56,8,10,10,10,1,0,50,76,0, + 220,98,66,66,66,66,231,7,11,11,10,1,0,32,16,8, + 0,56,68,130,130,130,68,56,7,11,11,10,1,0,8,16, + 32,0,56,68,130,130,130,68,56,7,11,11,10,1,0,16, + 40,68,0,56,68,130,130,130,68,56,7,10,10,10,1,0, + 50,76,0,56,68,130,130,130,68,56,7,10,10,10,1,0, + 68,68,0,56,68,130,130,130,68,56,8,7,7,10,1,1, + 24,24,0,255,0,24,24,7,9,9,10,1,255,2,58,68, + 138,146,162,68,184,128,8,11,11,10,1,0,32,16,8,0, + 198,66,66,66,66,70,59,8,11,11,10,1,0,4,8,16, + 0,198,66,66,66,66,70,59,8,11,11,10,1,0,16,40, + 68,0,198,66,66,66,66,70,59,8,10,10,10,1,0,36, + 36,0,198,66,66,66,66,70,59,9,14,28,10,0,253,2, + 0,4,0,8,0,0,0,227,128,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,120,0,8,14,14,10,1, + 253,192,64,64,64,92,98,65,65,65,98,92,64,64,240,9, + 13,26,10,0,253,18,0,18,0,0,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,16,0,120,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--17-120-100-100-M-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 11 + Calculated Max Values w=10 h=13 x= 4 y= 8 dx=10 dy= 0 ascent=12 len=24 + Font Bounding box w=15 h=24 x=-3 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR12r[1592] U8G_SECTION(".progmem.u8g_font_courR12r") = { + 0,15,24,253,250,10,2,12,4,92,32,127,253,12,253,11, + 253,0,0,0,10,0,1,1,11,11,10,4,0,128,128,128, + 128,128,128,128,128,0,128,128,4,5,5,10,3,6,144,144, + 144,144,144,7,12,12,10,1,255,40,40,40,40,254,40,40, + 254,40,40,40,40,5,13,13,10,2,255,32,32,120,136,128, + 128,112,8,8,136,240,32,32,7,11,11,10,1,0,112,136, + 136,112,6,56,192,28,34,34,28,6,9,9,10,1,0,48, + 72,64,32,100,148,136,136,116,1,5,5,10,4,6,128,128, + 128,128,128,3,13,13,10,4,254,32,64,64,64,128,128,128, + 128,128,64,64,64,32,3,13,13,10,2,254,128,64,64,64, + 32,32,32,32,32,64,64,64,128,7,6,6,10,1,5,16, + 16,254,56,40,68,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,3,4,4,10,2,254,96,96,64,128,7,1, + 1,10,1,4,254,2,2,2,10,3,0,192,192,6,13,13, + 10,2,254,4,4,8,8,16,16,16,32,32,64,64,128,128, + 7,11,11,10,1,0,56,68,68,130,130,130,130,130,68,68, + 56,7,11,11,10,1,0,16,48,208,16,16,16,16,16,16, + 16,254,7,11,11,10,1,0,56,68,130,2,2,4,8,16, + 32,66,254,7,11,11,10,1,0,56,68,130,4,24,4,2, + 2,130,68,56,7,11,11,10,1,0,12,12,20,36,36,68, + 132,254,4,4,30,7,11,11,10,1,0,126,64,64,64,120, + 68,2,2,130,68,56,7,11,11,10,2,0,28,96,64,128, + 184,196,130,130,130,68,56,6,11,11,10,1,0,252,132,4, + 8,8,8,16,16,16,32,32,6,11,11,10,2,0,48,72, + 132,132,120,72,132,132,132,72,48,7,11,11,10,1,0,56, + 68,130,130,70,58,2,2,4,12,112,2,7,7,10,3,0, + 192,192,0,0,0,192,192,3,9,9,10,2,254,96,96,0, + 0,0,96,96,64,128,8,9,9,10,1,0,1,6,24,96, + 128,96,24,6,1,8,4,4,10,1,3,255,0,0,255,8, + 9,9,10,1,0,128,96,24,6,1,6,24,96,128,6,10, + 10,10,2,0,120,132,132,4,24,32,32,0,32,32,9,12, + 24,10,0,255,62,0,65,0,65,0,128,128,156,128,164,128, + 164,128,164,128,159,0,64,0,65,0,62,0,9,10,20,10, + 0,0,120,0,20,0,20,0,34,0,34,0,34,0,62,0, + 65,0,65,0,227,128,8,10,10,10,1,0,252,66,65,66, + 124,66,65,65,66,252,8,10,10,10,1,0,29,99,65,128, + 128,128,128,65,99,28,8,10,10,10,1,0,248,70,66,65, + 65,65,65,66,70,248,7,10,10,10,1,0,254,66,66,72, + 120,72,64,66,66,254,7,10,10,10,1,0,254,66,66,72, + 120,72,64,64,64,240,9,10,20,10,1,0,29,0,99,0, + 65,0,128,0,128,0,135,128,129,0,65,0,97,0,30,0, + 8,10,10,10,1,0,231,66,66,66,126,66,66,66,66,231, + 7,10,10,10,1,0,254,16,16,16,16,16,16,16,16,254, + 8,10,10,10,1,0,63,4,4,4,4,4,132,132,132,120, + 8,10,10,10,1,0,247,66,68,72,80,120,68,68,66,243, + 8,10,10,10,1,0,248,32,32,32,32,32,33,33,33,255, + 9,10,20,10,0,0,193,128,99,0,99,0,85,0,85,0, + 73,0,73,0,65,0,65,0,227,128,9,10,20,10,0,0, + 231,128,97,0,81,0,81,0,73,0,73,0,69,0,69,0, + 67,0,243,0,8,10,10,10,1,0,60,66,66,129,129,129, + 129,66,66,60,8,10,10,10,1,0,252,66,65,65,66,124, + 64,64,64,248,8,12,12,10,1,254,60,66,66,129,129,129, + 129,66,66,60,17,46,8,10,10,10,1,0,248,68,66,66, + 68,120,68,66,66,243,7,10,10,10,1,0,58,70,130,128, + 112,12,2,130,196,184,7,10,10,10,1,0,254,146,146,146, + 16,16,16,16,16,124,9,10,20,10,0,0,247,128,65,0, + 65,0,65,0,65,0,65,0,65,0,65,0,34,0,28,0, + 9,10,20,10,0,0,227,128,65,0,65,0,34,0,34,0, + 34,0,20,0,20,0,8,0,8,0,9,10,20,10,0,0, + 247,128,65,0,73,0,73,0,85,0,85,0,85,0,34,0, + 34,0,34,0,9,10,20,10,0,0,227,128,65,0,34,0, + 20,0,8,0,8,0,20,0,34,0,65,0,227,128,9,10, + 20,10,0,0,227,128,65,0,34,0,34,0,20,0,8,0, + 8,0,8,0,8,0,62,0,7,10,10,10,1,0,254,130, + 132,8,16,16,32,66,130,254,3,13,13,10,4,254,224,128, + 128,128,128,128,128,128,128,128,128,128,224,6,13,13,10,2, + 254,128,128,64,64,32,32,32,16,16,8,8,4,4,3,13, + 13,10,2,254,224,32,32,32,32,32,32,32,32,32,32,32, + 224,7,4,4,10,1,7,16,40,68,130,10,1,2,10,0, + 253,255,192,3,3,3,10,2,8,128,64,32,7,7,7,10, + 1,0,56,68,4,124,132,132,122,8,10,10,10,0,0,192, + 64,64,92,98,65,65,65,98,220,7,7,7,10,1,0,58, + 70,130,128,128,66,60,8,10,10,10,1,0,6,2,2,58, + 70,130,130,130,70,59,7,7,7,10,1,0,56,68,130,254, + 128,66,60,7,10,10,10,2,0,28,34,32,252,32,32,32, + 32,32,252,8,10,10,10,1,253,59,70,130,130,130,70,58, + 2,2,60,8,10,10,10,1,0,192,64,64,92,98,66,66, + 66,66,231,7,10,10,10,1,0,16,16,0,112,16,16,16, + 16,16,254,5,13,13,10,2,253,16,16,0,248,8,8,8, + 8,8,8,8,8,240,8,10,10,10,1,0,192,64,64,79, + 68,72,112,72,68,207,7,10,10,10,1,0,112,16,16,16, + 16,16,16,16,16,254,9,7,14,10,0,0,219,0,109,0, + 73,0,73,0,73,0,73,0,237,128,8,7,7,10,1,0, + 220,98,66,66,66,66,231,7,7,7,10,1,0,56,68,130, + 130,130,68,56,8,10,10,10,1,253,220,98,65,65,65,98, + 92,64,64,240,8,10,10,10,1,253,59,70,130,130,130,70, + 58,2,2,15,8,7,7,10,1,0,238,49,32,32,32,32, + 252,6,7,7,10,2,0,124,132,128,120,4,132,248,8,9, + 9,10,0,0,32,32,254,32,32,32,32,33,30,8,7,7, + 10,1,0,198,66,66,66,66,70,59,9,7,14,10,0,0, + 247,128,65,0,34,0,34,0,20,0,20,0,8,0,9,7, + 14,10,0,0,227,128,65,0,73,0,42,0,42,0,54,0, + 34,0,7,7,7,10,1,0,238,68,40,16,40,68,238,9, + 10,20,10,0,253,227,128,65,0,34,0,34,0,20,0,20, + 0,8,0,8,0,16,0,120,0,6,7,7,10,2,0,252, + 136,16,32,64,132,252,3,13,13,10,3,254,32,64,64,64, + 64,64,128,64,64,64,64,64,32,1,12,12,10,4,254,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,10,3, + 254,128,64,64,64,64,64,32,64,64,64,64,64,128,7,3, + 3,10,1,3,96,146,12,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=11 h=16 x= 5 y=10 dx=11 dy= 0 ascent=15 len=32 + Font Bounding box w=16 h=26 x=-3 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR14[4276] U8G_SECTION(".progmem.u8g_font_courR14") = { + 0,16,26,253,249,11,2,74,5,74,32,255,252,15,252,12, + 252,0,0,0,11,0,1,2,12,12,11,4,0,192,192,192, + 192,192,192,64,64,0,0,192,192,6,5,5,11,3,7,204, + 204,204,68,68,8,15,15,11,1,254,18,18,18,18,18,127, + 36,36,36,254,36,36,36,36,36,6,15,15,11,2,254,16, + 16,116,140,132,128,96,24,4,132,196,184,16,16,16,9,12, + 24,11,1,0,56,0,68,0,68,0,68,0,57,128,14,0, + 48,0,206,0,17,0,17,0,17,0,14,0,7,10,10,11, + 2,0,56,64,64,64,32,116,136,136,152,102,2,5,5,11, + 4,7,192,192,192,64,64,3,14,14,11,5,254,32,64,64, + 128,128,128,128,128,128,128,128,64,64,32,3,14,14,11,3, + 254,128,64,64,32,32,32,32,32,32,32,32,64,64,128,7, + 8,8,11,2,4,16,16,16,254,16,40,68,68,9,9,18, + 11,1,1,8,0,8,0,8,0,8,0,255,128,8,0,8, + 0,8,0,8,0,4,5,5,11,3,253,48,48,96,64,128, + 8,1,1,11,1,5,255,2,2,2,11,4,0,192,192,8, + 16,16,11,1,253,1,1,2,2,4,4,8,8,16,16,32, + 32,64,64,128,128,7,12,12,11,2,0,56,68,130,130,130, + 130,130,130,130,130,68,56,7,12,12,11,2,0,48,208,16, + 16,16,16,16,16,16,16,16,254,8,12,12,11,1,0,28, + 34,65,65,1,2,4,8,16,33,65,255,7,12,12,11,2, + 0,120,132,2,2,4,56,4,2,2,2,132,120,7,12,12, + 11,2,0,12,20,20,36,36,68,68,132,254,4,4,30,8, + 12,12,11,1,0,126,64,64,64,92,98,1,1,1,1,194, + 60,7,12,12,11,2,0,28,96,64,128,128,184,196,130,130, + 130,68,56,7,12,12,11,2,0,254,130,2,2,4,4,4, + 4,8,8,8,8,7,12,12,11,2,0,56,68,130,130,68, + 56,68,130,130,130,68,56,7,12,12,11,2,0,56,68,130, + 130,130,70,58,2,2,4,12,112,2,8,8,11,4,0,192, + 192,0,0,0,0,192,192,4,11,11,11,2,253,48,48,0, + 0,0,0,48,48,96,64,128,10,9,18,11,0,1,0,192, + 3,0,12,0,48,0,192,0,48,0,12,0,3,0,0,192, + 9,4,8,11,1,3,255,128,0,0,0,0,255,128,10,9, + 18,11,0,1,192,0,48,0,12,0,3,0,0,192,3,0, + 12,0,48,0,192,0,7,11,11,11,2,0,124,130,130,2, + 2,28,16,16,0,24,24,8,13,13,11,2,255,56,68,130, + 130,142,146,146,146,143,128,128,67,60,11,11,22,11,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,9,11,22,11,1,0,252,0,66,0, + 65,0,65,0,66,0,126,0,65,0,64,128,64,128,65,0, + 254,0,9,11,22,11,1,0,30,128,97,128,64,128,128,0, + 128,0,128,0,128,0,128,0,64,128,97,0,30,0,9,11, + 22,11,1,0,252,0,67,0,65,0,64,128,64,128,64,128, + 64,128,64,128,65,0,67,0,252,0,8,11,11,11,1,0, + 255,65,65,65,72,120,72,65,65,65,255,8,11,11,11,1, + 0,255,65,65,65,72,120,72,64,64,64,240,10,11,22,11, + 1,0,30,128,97,128,64,128,128,0,128,0,128,0,131,192, + 128,128,64,128,97,0,30,0,9,11,22,11,1,0,227,128, + 65,0,65,0,65,0,65,0,127,0,65,0,65,0,65,0, + 65,0,227,128,7,11,11,11,2,0,254,16,16,16,16,16, + 16,16,16,16,254,9,11,22,11,1,0,31,128,2,0,2, + 0,2,0,2,0,2,0,130,0,130,0,130,0,68,0,56, + 0,10,11,22,11,1,0,243,192,65,0,66,0,68,0,72, + 0,88,0,100,0,66,0,66,0,65,0,241,192,9,11,22, + 11,1,0,248,0,32,0,32,0,32,0,32,0,32,0,32, + 0,32,128,32,128,32,128,255,128,11,11,22,11,0,0,224, + 224,96,192,81,64,81,64,74,64,74,64,68,64,68,64,64, + 64,64,64,241,224,9,11,22,11,1,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,11,22,11,1,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,11,22, + 11,1,0,254,0,65,0,64,128,64,128,65,0,126,0,64, + 0,64,0,64,0,64,0,248,0,9,13,26,11,1,254,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,56,128,71,0,10,11,22,11,1,0,254, + 0,65,0,64,128,64,128,65,0,126,0,68,0,66,0,66, + 0,65,0,240,192,8,11,11,11,1,0,61,67,129,128,64, + 60,2,1,129,194,188,9,11,22,11,1,0,255,128,136,128, + 136,128,136,128,8,0,8,0,8,0,8,0,8,0,8,0, + 62,0,10,11,22,11,0,0,243,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,11,11, + 22,11,0,0,241,224,64,64,64,64,32,128,32,128,17,0, + 17,0,10,0,10,0,4,0,4,0,11,11,22,11,0,0, + 241,224,64,64,68,64,68,64,68,64,42,128,42,128,42,128, + 42,128,17,0,17,0,9,11,22,11,1,0,227,128,65,0, + 34,0,34,0,20,0,8,0,20,0,34,0,34,0,65,0, + 227,128,9,11,22,11,1,0,227,128,65,0,34,0,34,0, + 20,0,20,0,8,0,8,0,8,0,8,0,62,0,7,11, + 11,11,2,0,254,130,130,4,8,16,32,64,130,130,254,3, + 15,15,11,5,253,224,128,128,128,128,128,128,128,128,128,128, + 128,128,128,224,8,16,16,11,2,253,128,128,64,64,32,32, + 16,16,8,8,4,4,2,2,1,1,3,15,15,11,3,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,32,224,7, + 4,4,11,2,8,16,40,68,130,11,1,2,11,0,252,255, + 224,3,3,3,11,4,9,128,64,32,9,8,16,11,1,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,192,0,64,0,64,0,64,0,94,0, + 97,0,64,128,64,128,64,128,64,128,97,0,222,0,8,8, + 8,11,1,0,61,67,129,128,128,128,67,60,9,12,24,11, + 1,0,3,0,1,0,1,0,1,0,61,0,67,0,129,0, + 129,0,129,0,129,0,67,0,61,128,8,8,8,11,1,0, + 60,66,129,255,128,128,67,60,8,12,12,11,2,0,15,16, + 32,32,254,32,32,32,32,32,32,254,9,12,24,11,1,252, + 61,128,67,0,129,0,129,0,129,0,129,0,67,0,61,0, + 1,0,1,0,2,0,124,0,9,12,24,11,1,0,192,0, + 64,0,64,0,64,0,94,0,97,0,65,0,65,0,65,0, + 65,0,65,0,227,128,7,11,11,11,2,0,16,16,0,112, + 16,16,16,16,16,16,254,6,15,15,11,2,252,8,8,0, + 252,4,4,4,4,4,4,4,4,4,8,240,9,12,24,11, + 1,0,192,0,64,0,64,0,64,0,79,0,68,0,72,0, + 112,0,72,0,68,0,66,0,199,128,7,12,12,11,2,0, + 240,16,16,16,16,16,16,16,16,16,16,254,11,8,16,11, + 0,0,217,128,102,64,68,64,68,64,68,64,68,64,68,64, + 230,96,9,8,16,11,1,0,222,0,97,0,65,0,65,0, + 65,0,65,0,65,0,227,128,8,8,8,11,1,0,60,66, + 129,129,129,129,66,60,9,12,24,11,1,252,222,0,97,0, + 64,128,64,128,64,128,64,128,97,0,94,0,64,0,64,0, + 64,0,240,0,9,12,24,11,1,252,61,128,67,0,129,0, + 129,0,129,0,129,0,67,0,61,0,1,0,1,0,1,0, + 7,128,8,8,8,11,1,0,238,49,32,32,32,32,32,254, + 7,8,8,11,2,0,122,134,130,112,12,130,194,188,8,11, + 11,11,2,0,32,32,32,254,32,32,32,32,32,33,30,9, + 8,16,11,1,0,195,0,65,0,65,0,65,0,65,0,65, + 0,67,0,61,128,9,8,16,11,1,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,9,8,16,11,1, + 0,227,128,65,0,73,0,73,0,85,0,85,0,34,0,34, + 0,8,8,8,11,1,0,231,66,36,24,24,36,66,231,9, + 12,24,11,1,252,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,16,0,248,0,7,8,8, + 11,2,0,254,130,132,8,16,34,66,254,5,15,15,11,3, + 253,24,32,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,15,15,11,5,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,15,15,11,3,253,192,32,32,32,32, + 32,32,24,32,32,32,32,32,32,192,8,3,3,11,1,4, + 96,153,6,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,11,0,1,2,12,12,11,4,252, + 192,192,0,0,128,128,192,192,192,192,192,192,6,12,12,11, + 2,0,16,16,16,60,68,132,128,128,68,56,16,16,8,11, + 11,11,2,0,28,34,32,32,16,252,16,32,33,65,126,6, + 7,7,11,2,2,132,120,132,132,132,120,132,9,11,22,11, + 1,0,227,128,65,0,34,0,34,0,20,0,20,0,127,0, + 8,0,127,0,8,0,62,0,1,15,15,11,5,253,128,128, + 128,128,128,128,0,0,0,128,128,128,128,128,128,7,14,14, + 11,2,254,62,66,66,64,112,140,130,98,28,6,130,130,132, + 252,4,2,2,11,3,10,144,144,11,11,22,11,0,0,31, + 0,96,192,79,64,145,32,160,32,160,32,160,32,145,32,78, + 64,96,192,31,0,6,8,8,11,2,3,112,8,120,136,152, + 236,0,252,10,8,16,11,1,0,24,192,49,128,99,0,198, + 0,198,0,99,0,49,128,24,192,9,4,8,11,1,3,255, + 128,0,128,0,128,0,128,8,1,1,11,1,5,255,11,11, + 22,11,0,0,31,0,96,192,94,64,145,32,145,32,158,32, + 148,32,146,32,81,64,96,128,31,0,5,1,1,11,3,10, + 248,5,5,5,11,3,6,112,136,136,136,112,9,9,18,11, + 1,1,8,0,8,0,8,0,255,128,8,0,8,0,8,0, + 0,0,255,128,5,7,7,11,3,5,112,136,8,16,32,64, + 248,5,7,7,11,3,5,112,136,8,48,8,136,112,3,3, + 3,11,4,9,32,64,128,9,12,24,11,1,252,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,125,128,64,0,64, + 0,64,0,64,0,8,14,14,11,1,254,63,74,138,138,138, + 74,58,10,10,10,10,10,10,59,2,2,2,11,4,5,192, + 192,3,3,3,11,4,253,64,32,192,5,7,7,11,3,5, + 32,224,32,32,32,32,248,6,8,8,11,2,3,120,132,132, + 132,132,120,0,252,10,8,16,11,0,0,198,0,99,0,49, + 128,24,192,24,192,49,128,99,0,198,0,11,12,24,11,0, + 0,32,0,224,64,32,128,33,0,33,0,34,64,252,192,9, + 64,10,64,19,224,32,64,0,224,11,12,24,11,0,0,32, + 0,224,64,32,128,33,0,33,0,34,192,253,32,8,32,8, + 64,16,128,33,0,3,224,11,12,24,11,0,0,112,0,136, + 64,8,128,49,0,9,0,138,64,116,192,9,64,10,64,19, + 224,32,64,0,224,6,11,11,11,2,253,24,24,0,16,16, + 112,128,128,132,132,120,11,15,30,11,0,0,16,0,8,0, + 4,0,0,0,60,0,4,0,10,0,10,0,17,0,17,0, + 32,128,63,128,64,64,64,64,241,224,11,15,30,11,0,0, + 1,0,2,0,4,0,0,0,60,0,4,0,10,0,10,0, + 17,0,17,0,32,128,63,128,64,64,64,64,241,224,11,15, + 30,11,0,0,12,0,18,0,33,0,0,0,60,0,4,0, + 10,0,10,0,17,0,17,0,32,128,63,128,64,64,64,64, + 241,224,11,14,28,11,0,0,25,0,38,0,0,0,60,0, + 4,0,10,0,10,0,17,0,17,0,32,128,63,128,64,64, + 64,64,241,224,11,14,28,11,0,0,18,0,18,0,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,11,15,30,11,0,0,12,0,18,0, + 18,0,12,0,60,0,4,0,10,0,10,0,17,0,17,0, + 32,128,63,128,64,64,64,64,241,224,11,11,22,11,255,0, + 31,224,6,32,10,32,10,0,18,64,19,192,62,64,34,0, + 66,32,66,32,231,224,9,14,28,11,1,253,30,128,97,128, + 64,128,128,0,128,0,128,0,128,0,128,0,64,128,97,0, + 30,0,8,0,4,0,24,0,8,15,15,11,1,0,32,16, + 8,0,255,65,65,65,72,120,72,65,65,65,255,8,15,15, + 11,1,0,4,8,16,0,255,65,65,65,72,120,72,65,65, + 65,255,8,15,15,11,1,0,24,36,66,0,255,65,65,65, + 72,120,72,65,65,65,255,8,14,14,11,1,0,36,36,0, + 255,65,65,65,72,120,72,65,65,65,255,7,15,15,11,2, + 0,32,16,8,0,254,16,16,16,16,16,16,16,16,16,254, + 7,15,15,11,2,0,8,16,32,0,254,16,16,16,16,16, + 16,16,16,16,254,7,15,15,11,2,0,24,36,66,0,254, + 16,16,16,16,16,16,16,16,16,254,7,14,14,11,2,0, + 36,36,0,254,16,16,16,16,16,16,16,16,16,254,8,11, + 11,11,1,0,252,66,65,65,65,241,65,65,65,66,252,9, + 14,28,11,1,0,25,0,38,0,0,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,15,30,11,1,0,16,0,8,0,4,0,0,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,9,15,30,11,1,0,4,0,8,0,16, + 0,0,0,28,0,99,0,65,0,128,128,128,128,128,128,128, + 128,128,128,65,0,99,0,28,0,9,15,30,11,1,0,12, + 0,18,0,33,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,14,28, + 11,1,0,25,0,38,0,0,0,28,0,99,0,65,0,128, + 128,128,128,128,128,128,128,128,128,65,0,99,0,28,0,9, + 14,28,11,1,0,18,0,18,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,9,18,11,1,1,128,128,65,0,34,0,20,0,8, + 0,20,0,34,0,65,0,128,128,11,11,22,11,0,0,14, + 32,49,192,32,128,65,64,66,64,68,64,72,64,80,64,32, + 128,113,128,142,0,10,15,30,11,0,0,16,0,8,0,4, + 0,0,0,243,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,10,15,30,11,0,0,2, + 0,4,0,8,0,0,0,243,192,64,128,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,33,0,30,0,10,15,30, + 11,0,0,12,0,18,0,33,0,0,0,243,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,33,0,30, + 0,10,14,28,11,0,0,18,0,18,0,0,0,243,192,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,9,15,30,11,1,0,2,0,4,0,8,0,0, + 0,227,128,65,0,34,0,34,0,20,0,20,0,8,0,8, + 0,8,0,8,0,62,0,9,11,22,11,1,0,224,0,64, + 0,126,0,65,0,64,128,64,128,65,0,126,0,64,0,64, + 0,224,0,8,11,11,11,1,0,60,66,66,68,88,70,65, + 65,65,73,230,9,12,24,11,1,0,32,0,16,0,8,0, + 0,0,60,0,66,0,2,0,126,0,130,0,130,0,134,0, + 123,128,9,12,24,11,1,0,4,0,8,0,16,0,0,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,24,0,36,0,66,0,0,0,60,0, + 66,0,2,0,126,0,130,0,130,0,134,0,123,128,9,11, + 22,11,1,0,50,0,76,0,0,0,60,0,66,0,2,0, + 126,0,130,0,130,0,134,0,123,128,9,11,22,11,1,0, + 36,0,36,0,0,0,60,0,66,0,2,0,126,0,130,0, + 130,0,134,0,123,128,9,13,26,11,1,0,24,0,36,0, + 36,0,24,0,0,0,60,0,66,0,2,0,126,0,130,0, + 130,0,134,0,123,128,11,8,16,11,0,0,113,128,138,64, + 4,32,127,224,132,0,132,0,138,32,113,192,8,11,11,11, + 1,253,61,67,129,128,128,128,67,60,16,8,48,8,12,12, + 11,1,0,32,16,8,0,60,66,129,255,128,128,67,60,8, + 12,12,11,1,0,2,4,8,0,60,66,129,255,128,128,67, + 60,8,12,12,11,1,0,24,36,66,0,60,66,129,255,128, + 128,67,60,8,11,11,11,1,0,36,36,0,60,66,129,255, + 128,128,67,60,7,12,12,11,2,0,32,16,8,0,112,16, + 16,16,16,16,16,254,7,12,12,11,2,0,8,16,32,0, + 112,16,16,16,16,16,16,254,7,12,12,11,2,0,48,72, + 132,0,112,16,16,16,16,16,16,254,7,11,11,11,2,0, + 72,72,0,112,16,16,16,16,16,16,254,8,12,12,11,1, + 0,114,140,52,66,62,67,129,129,129,129,66,60,9,11,22, + 11,1,0,50,0,76,0,0,0,222,0,97,0,65,0,65, + 0,65,0,65,0,65,0,227,128,8,12,12,11,1,0,32, + 16,8,0,60,66,129,129,129,129,66,60,8,12,12,11,1, + 0,4,8,16,0,60,66,129,129,129,129,66,60,8,12,12, + 11,1,0,24,36,66,0,60,66,129,129,129,129,66,60,8, + 11,11,11,1,0,50,76,0,60,66,129,129,129,129,66,60, + 8,11,11,11,1,0,36,36,0,60,66,129,129,129,129,66, + 60,8,9,9,11,1,1,24,24,0,0,255,0,0,24,24, + 8,8,8,11,1,0,61,66,133,137,145,161,66,188,9,12, + 24,11,1,0,32,0,16,0,8,0,0,0,195,0,65,0, + 65,0,65,0,65,0,65,0,67,0,61,128,9,12,24,11, + 1,0,2,0,4,0,8,0,0,0,195,0,65,0,65,0, + 65,0,65,0,65,0,67,0,61,128,9,12,24,11,1,0, + 24,0,36,0,66,0,0,0,195,0,65,0,65,0,65,0, + 65,0,65,0,67,0,61,128,9,11,22,11,1,0,36,0, + 36,0,0,0,195,0,65,0,65,0,65,0,65,0,65,0, + 67,0,61,128,9,16,32,11,1,252,2,0,4,0,8,0, + 0,0,227,128,65,0,65,0,34,0,34,0,20,0,20,0, + 8,0,8,0,16,0,16,0,248,0,9,16,32,11,1,252, + 192,0,64,0,64,0,64,0,94,0,97,0,64,128,64,128, + 64,128,64,128,97,0,94,0,64,0,64,0,64,0,240,0, + 9,15,30,11,1,252,36,0,36,0,0,0,227,128,65,0, + 65,0,34,0,34,0,20,0,20,0,8,0,8,0,16,0, + 16,0,248,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--20-140-100-100-M-110-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=11 h=16 x= 5 y= 9 dx=11 dy= 0 ascent=13 len=26 + Font Bounding box w=16 h=26 x=-3 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR14r[1988] U8G_SECTION(".progmem.u8g_font_courR14r") = { + 0,16,26,253,249,11,2,74,5,74,32,127,252,13,252,12, + 252,0,0,0,11,0,1,2,12,12,11,4,0,192,192,192, + 192,192,192,64,64,0,0,192,192,6,5,5,11,3,7,204, + 204,204,68,68,8,15,15,11,1,254,18,18,18,18,18,127, + 36,36,36,254,36,36,36,36,36,6,15,15,11,2,254,16, + 16,116,140,132,128,96,24,4,132,196,184,16,16,16,9,12, + 24,11,1,0,56,0,68,0,68,0,68,0,57,128,14,0, + 48,0,206,0,17,0,17,0,17,0,14,0,7,10,10,11, + 2,0,56,64,64,64,32,116,136,136,152,102,2,5,5,11, + 4,7,192,192,192,64,64,3,14,14,11,5,254,32,64,64, + 128,128,128,128,128,128,128,128,64,64,32,3,14,14,11,3, + 254,128,64,64,32,32,32,32,32,32,32,32,64,64,128,7, + 8,8,11,2,4,16,16,16,254,16,40,68,68,9,9,18, + 11,1,1,8,0,8,0,8,0,8,0,255,128,8,0,8, + 0,8,0,8,0,4,5,5,11,3,253,48,48,96,64,128, + 8,1,1,11,1,5,255,2,2,2,11,4,0,192,192,8, + 16,16,11,1,253,1,1,2,2,4,4,8,8,16,16,32, + 32,64,64,128,128,7,12,12,11,2,0,56,68,130,130,130, + 130,130,130,130,130,68,56,7,12,12,11,2,0,48,208,16, + 16,16,16,16,16,16,16,16,254,8,12,12,11,1,0,28, + 34,65,65,1,2,4,8,16,33,65,255,7,12,12,11,2, + 0,120,132,2,2,4,56,4,2,2,2,132,120,7,12,12, + 11,2,0,12,20,20,36,36,68,68,132,254,4,4,30,8, + 12,12,11,1,0,126,64,64,64,92,98,1,1,1,1,194, + 60,7,12,12,11,2,0,28,96,64,128,128,184,196,130,130, + 130,68,56,7,12,12,11,2,0,254,130,2,2,4,4,4, + 4,8,8,8,8,7,12,12,11,2,0,56,68,130,130,68, + 56,68,130,130,130,68,56,7,12,12,11,2,0,56,68,130, + 130,130,70,58,2,2,4,12,112,2,8,8,11,4,0,192, + 192,0,0,0,0,192,192,4,11,11,11,2,253,48,48,0, + 0,0,0,48,48,96,64,128,10,9,18,11,0,1,0,192, + 3,0,12,0,48,0,192,0,48,0,12,0,3,0,0,192, + 9,4,8,11,1,3,255,128,0,0,0,0,255,128,10,9, + 18,11,0,1,192,0,48,0,12,0,3,0,0,192,3,0, + 12,0,48,0,192,0,7,11,11,11,2,0,124,130,130,2, + 2,28,16,16,0,24,24,8,13,13,11,2,255,56,68,130, + 130,142,146,146,146,143,128,128,67,60,11,11,22,11,0,0, + 60,0,4,0,10,0,10,0,17,0,17,0,32,128,63,128, + 64,64,64,64,241,224,9,11,22,11,1,0,252,0,66,0, + 65,0,65,0,66,0,126,0,65,0,64,128,64,128,65,0, + 254,0,9,11,22,11,1,0,30,128,97,128,64,128,128,0, + 128,0,128,0,128,0,128,0,64,128,97,0,30,0,9,11, + 22,11,1,0,252,0,67,0,65,0,64,128,64,128,64,128, + 64,128,64,128,65,0,67,0,252,0,8,11,11,11,1,0, + 255,65,65,65,72,120,72,65,65,65,255,8,11,11,11,1, + 0,255,65,65,65,72,120,72,64,64,64,240,10,11,22,11, + 1,0,30,128,97,128,64,128,128,0,128,0,128,0,131,192, + 128,128,64,128,97,0,30,0,9,11,22,11,1,0,227,128, + 65,0,65,0,65,0,65,0,127,0,65,0,65,0,65,0, + 65,0,227,128,7,11,11,11,2,0,254,16,16,16,16,16, + 16,16,16,16,254,9,11,22,11,1,0,31,128,2,0,2, + 0,2,0,2,0,2,0,130,0,130,0,130,0,68,0,56, + 0,10,11,22,11,1,0,243,192,65,0,66,0,68,0,72, + 0,88,0,100,0,66,0,66,0,65,0,241,192,9,11,22, + 11,1,0,248,0,32,0,32,0,32,0,32,0,32,0,32, + 0,32,128,32,128,32,128,255,128,11,11,22,11,0,0,224, + 224,96,192,81,64,81,64,74,64,74,64,68,64,68,64,64, + 64,64,64,241,224,9,11,22,11,1,0,231,128,97,0,81, + 0,81,0,73,0,73,0,69,0,69,0,67,0,67,0,241, + 0,9,11,22,11,1,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,11,22, + 11,1,0,254,0,65,0,64,128,64,128,65,0,126,0,64, + 0,64,0,64,0,64,0,248,0,9,13,26,11,1,254,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,56,128,71,0,10,11,22,11,1,0,254, + 0,65,0,64,128,64,128,65,0,126,0,68,0,66,0,66, + 0,65,0,240,192,8,11,11,11,1,0,61,67,129,128,64, + 60,2,1,129,194,188,9,11,22,11,1,0,255,128,136,128, + 136,128,136,128,8,0,8,0,8,0,8,0,8,0,8,0, + 62,0,10,11,22,11,0,0,243,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,11,11, + 22,11,0,0,241,224,64,64,64,64,32,128,32,128,17,0, + 17,0,10,0,10,0,4,0,4,0,11,11,22,11,0,0, + 241,224,64,64,68,64,68,64,68,64,42,128,42,128,42,128, + 42,128,17,0,17,0,9,11,22,11,1,0,227,128,65,0, + 34,0,34,0,20,0,8,0,20,0,34,0,34,0,65,0, + 227,128,9,11,22,11,1,0,227,128,65,0,34,0,34,0, + 20,0,20,0,8,0,8,0,8,0,8,0,62,0,7,11, + 11,11,2,0,254,130,130,4,8,16,32,64,130,130,254,3, + 15,15,11,5,253,224,128,128,128,128,128,128,128,128,128,128, + 128,128,128,224,8,16,16,11,2,253,128,128,64,64,32,32, + 16,16,8,8,4,4,2,2,1,1,3,15,15,11,3,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,32,224,7, + 4,4,11,2,8,16,40,68,130,11,1,2,11,0,252,255, + 224,3,3,3,11,4,9,128,64,32,9,8,16,11,1,0, + 60,0,66,0,2,0,126,0,130,0,130,0,134,0,123,128, + 9,12,24,11,1,0,192,0,64,0,64,0,64,0,94,0, + 97,0,64,128,64,128,64,128,64,128,97,0,222,0,8,8, + 8,11,1,0,61,67,129,128,128,128,67,60,9,12,24,11, + 1,0,3,0,1,0,1,0,1,0,61,0,67,0,129,0, + 129,0,129,0,129,0,67,0,61,128,8,8,8,11,1,0, + 60,66,129,255,128,128,67,60,8,12,12,11,2,0,15,16, + 32,32,254,32,32,32,32,32,32,254,9,12,24,11,1,252, + 61,128,67,0,129,0,129,0,129,0,129,0,67,0,61,0, + 1,0,1,0,2,0,124,0,9,12,24,11,1,0,192,0, + 64,0,64,0,64,0,94,0,97,0,65,0,65,0,65,0, + 65,0,65,0,227,128,7,11,11,11,2,0,16,16,0,112, + 16,16,16,16,16,16,254,6,15,15,11,2,252,8,8,0, + 252,4,4,4,4,4,4,4,4,4,8,240,9,12,24,11, + 1,0,192,0,64,0,64,0,64,0,79,0,68,0,72,0, + 112,0,72,0,68,0,66,0,199,128,7,12,12,11,2,0, + 240,16,16,16,16,16,16,16,16,16,16,254,11,8,16,11, + 0,0,217,128,102,64,68,64,68,64,68,64,68,64,68,64, + 230,96,9,8,16,11,1,0,222,0,97,0,65,0,65,0, + 65,0,65,0,65,0,227,128,8,8,8,11,1,0,60,66, + 129,129,129,129,66,60,9,12,24,11,1,252,222,0,97,0, + 64,128,64,128,64,128,64,128,97,0,94,0,64,0,64,0, + 64,0,240,0,9,12,24,11,1,252,61,128,67,0,129,0, + 129,0,129,0,129,0,67,0,61,0,1,0,1,0,1,0, + 7,128,8,8,8,11,1,0,238,49,32,32,32,32,32,254, + 7,8,8,11,2,0,122,134,130,112,12,130,194,188,8,11, + 11,11,2,0,32,32,32,254,32,32,32,32,32,33,30,9, + 8,16,11,1,0,195,0,65,0,65,0,65,0,65,0,65, + 0,67,0,61,128,9,8,16,11,1,0,227,128,65,0,34, + 0,34,0,20,0,20,0,8,0,8,0,9,8,16,11,1, + 0,227,128,65,0,73,0,73,0,85,0,85,0,34,0,34, + 0,8,8,8,11,1,0,231,66,36,24,24,36,66,231,9, + 12,24,11,1,252,227,128,65,0,65,0,34,0,34,0,20, + 0,20,0,8,0,8,0,16,0,16,0,248,0,7,8,8, + 11,2,0,254,130,132,8,16,34,66,254,5,15,15,11,3, + 253,24,32,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,15,15,11,5,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,15,15,11,3,253,192,32,32,32,32, + 32,32,24,32,32,32,32,32,32,192,8,3,3,11,1,4, + 96,153,6,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 15 + Calculated Max Values w=15 h=21 x= 7 y=12 dx=15 dy= 0 ascent=19 len=42 + Font Bounding box w=23 h=32 x=-5 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR18[6152] U8G_SECTION(".progmem.u8g_font_courR18") = { + 0,23,32,251,248,14,3,161,7,151,32,255,251,19,251,16, + 251,0,0,0,15,0,1,2,16,16,15,6,0,192,192,192, + 192,192,192,192,192,128,128,128,0,0,0,192,192,8,7,7, + 15,3,9,231,231,231,231,66,66,66,10,17,34,15,2,255, + 9,0,9,0,9,0,9,0,9,0,9,0,127,192,18,0, + 18,0,18,0,255,128,18,0,18,0,18,0,18,0,18,0, + 18,0,9,20,40,15,3,253,8,0,8,0,8,0,30,128, + 33,128,64,128,64,0,64,0,32,0,30,0,1,0,0,128, + 0,128,128,128,193,0,190,0,8,0,8,0,8,0,8,0, + 12,16,32,15,1,0,28,0,34,0,65,0,65,0,65,0, + 34,0,28,112,3,128,28,0,225,192,2,32,4,16,4,16, + 4,16,2,32,1,192,10,13,26,15,2,0,29,0,38,0, + 32,0,32,0,16,0,48,0,73,128,137,0,134,0,130,0, + 131,0,69,0,56,192,3,7,7,15,6,8,224,224,224,224, + 224,64,64,4,19,19,15,7,253,16,32,32,64,64,64,128, + 128,128,128,128,128,128,64,64,64,32,32,16,4,19,19,15, + 3,253,128,64,64,32,32,32,16,16,16,16,16,16,16,32, + 32,32,64,64,128,9,9,18,15,3,7,8,0,8,0,8, + 0,201,128,127,0,28,0,54,0,99,0,193,128,11,11,22, + 15,2,2,4,0,4,0,4,0,4,0,4,0,255,224,4, + 0,4,0,4,0,4,0,4,0,5,6,6,15,4,253,56, + 56,112,96,192,128,10,1,2,15,2,7,255,192,3,3,3, + 15,6,0,224,224,224,9,18,36,15,3,254,0,128,0,128, + 1,0,1,0,2,0,2,0,4,0,4,0,8,0,8,0, + 16,0,16,0,32,0,32,0,64,0,64,0,128,0,128,0, + 9,15,30,15,3,0,28,0,99,0,65,0,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 99,0,28,0,9,15,30,15,3,0,24,0,232,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,10,15,30,15,2,0,30,0, + 97,0,128,128,128,128,0,128,0,128,1,0,2,0,4,0, + 8,0,16,0,32,0,64,0,128,64,255,192,10,15,30,15, + 2,0,62,0,65,128,0,128,0,128,0,128,1,0,30,0, + 1,128,0,64,0,64,0,64,0,64,128,64,97,128,30,0, + 10,15,30,15,2,0,3,0,5,0,9,0,9,0,17,0, + 33,0,33,0,65,0,65,0,129,0,255,192,1,0,1,0, + 1,0,15,192,10,15,30,15,2,0,127,128,64,0,64,0, + 64,0,64,0,94,0,97,128,0,128,0,64,0,64,0,64, + 0,64,0,128,193,128,62,0,9,15,30,15,3,0,15,0, + 48,0,96,0,64,0,128,0,158,0,161,0,192,128,128,128, + 128,128,128,128,128,128,64,128,97,0,30,0,9,15,30,15, + 2,0,255,128,128,128,129,0,1,0,1,0,2,0,2,0, + 2,0,2,0,4,0,4,0,4,0,8,0,8,0,8,0, + 10,15,30,15,2,0,30,0,33,0,64,128,64,128,64,128, + 64,128,33,0,63,0,64,128,128,64,128,64,128,64,64,128, + 97,128,30,0,9,15,30,15,3,0,28,0,99,0,193,128, + 128,128,128,128,128,128,65,128,98,128,28,128,0,128,0,128, + 1,0,1,0,6,0,248,0,3,11,11,15,6,0,224,224, + 224,0,0,0,0,0,224,224,224,5,14,14,15,4,253,56, + 56,56,0,0,0,0,0,56,56,112,96,192,128,11,11,22, + 15,1,2,0,96,1,128,6,0,24,0,96,0,192,0,96, + 0,24,0,6,0,1,128,0,96,12,4,8,15,1,5,255, + 240,0,0,0,0,255,240,11,11,22,15,2,2,192,0,48, + 0,12,0,3,0,0,192,0,96,0,192,3,0,12,0,48, + 0,192,0,8,14,14,15,3,0,124,130,129,1,1,1,2, + 12,16,16,0,0,24,24,10,18,36,15,2,254,30,0,97, + 0,64,128,128,128,128,128,131,128,132,128,136,128,136,128,136, + 128,136,128,132,128,131,192,128,0,128,0,64,0,97,128,31, + 0,13,14,28,15,1,0,63,0,5,0,8,128,8,128,8, + 128,16,64,16,64,16,64,63,224,32,32,32,32,64,16,64, + 16,240,120,12,14,28,15,1,0,255,192,32,32,32,16,32, + 16,32,16,32,32,63,192,32,32,32,16,32,16,32,16,32, + 16,32,32,255,192,11,14,28,15,2,0,15,32,48,160,96, + 96,64,32,128,0,128,0,128,0,128,0,128,0,128,0,64, + 32,96,96,48,192,15,0,12,14,28,15,1,0,255,128,64, + 96,64,32,64,16,64,16,64,16,64,16,64,16,64,16,64, + 16,64,16,64,32,64,96,255,128,12,14,28,15,1,0,255, + 224,32,32,32,32,32,32,34,0,34,0,62,0,34,0,34, + 0,32,16,32,16,32,16,32,16,255,240,11,14,28,15,2, + 0,255,224,32,32,32,32,32,32,34,0,34,0,62,0,34, + 0,34,0,32,0,32,0,32,0,32,0,254,0,12,14,28, + 15,1,0,15,32,48,160,96,96,64,32,128,0,128,0,128, + 0,128,0,131,240,128,32,64,32,96,32,48,64,15,128,13, + 14,28,15,1,0,248,248,32,32,32,32,32,32,32,32,32, + 32,63,224,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,14,28,15,3,0,255,128,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,255,128,12,14,28,15,2,0,31,240,0,128,0,128,0, + 128,0,128,0,128,0,128,0,128,128,128,128,128,128,128,129, + 0,67,0,60,0,13,14,28,15,1,0,248,240,32,64,32, + 128,33,0,34,0,36,0,44,0,50,0,33,0,32,128,32, + 64,32,64,32,32,248,120,12,14,28,15,1,0,254,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16, + 16,16,16,16,16,16,16,255,240,13,14,28,15,1,0,224, + 56,96,48,96,48,80,80,80,80,72,144,72,144,69,16,71, + 16,64,16,64,16,64,16,64,16,240,120,14,14,28,15,0, + 0,240,252,48,16,40,16,36,16,36,16,34,16,34,16,33, + 16,33,16,32,144,32,144,32,80,32,48,252,48,13,14,28, + 15,1,0,15,128,48,96,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,128,8,64,16,96,48,48,96,15,128,11, + 14,28,15,2,0,255,128,32,64,32,32,32,32,32,32,32, + 32,32,64,63,128,32,0,32,0,32,0,32,0,32,0,254, + 0,13,16,32,15,1,254,15,128,48,96,96,48,64,16,128, + 8,128,8,128,8,128,8,128,8,128,8,64,16,96,48,48, + 96,15,128,6,48,27,192,13,14,28,15,1,0,255,128,32, + 64,32,32,32,32,32,32,32,32,32,64,63,128,33,0,32, + 128,32,64,32,64,32,32,248,56,10,14,28,15,2,0,30, + 64,97,64,128,192,128,64,128,0,96,0,30,0,1,128,0, + 64,0,64,128,64,192,64,160,128,159,0,11,14,28,15,2, + 0,255,224,132,32,132,32,132,32,132,32,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,63,128,12,14,28, + 15,1,0,249,240,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,32,64,32,64,32,32,64,31,128,13, + 14,28,15,1,0,248,248,64,16,64,16,32,32,32,32,16, + 64,16,64,16,64,8,128,8,128,8,128,5,0,7,0,2, + 0,13,14,28,15,1,0,248,248,64,16,64,16,66,16,66, + 16,69,16,69,16,37,32,40,160,40,160,40,160,48,96,48, + 96,48,96,13,14,28,15,1,0,248,248,32,32,16,64,16, + 64,8,128,5,0,2,0,5,0,8,128,8,128,16,64,32, + 32,32,32,248,248,13,14,28,15,1,0,240,120,32,32,16, + 64,16,64,8,128,8,128,5,0,2,0,2,0,2,0,2, + 0,2,0,2,0,31,192,10,14,28,15,2,0,255,192,128, + 64,128,128,129,0,130,0,2,0,4,0,8,0,16,0,16, + 64,32,64,64,64,128,64,255,192,3,19,19,15,7,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,224,9,18,36,15,3,254,128,0,128,0,64,0,64,0, + 32,0,32,0,16,0,16,0,8,0,8,0,4,0,4,0, + 2,0,2,0,1,0,1,0,0,128,0,128,3,19,19,15, + 5,253,224,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,9,5,10,15,3,11,8,0,28,0,34, + 0,65,0,128,128,15,1,2,15,0,251,255,254,5,4,4, + 15,4,12,192,96,48,24,11,11,22,15,2,0,62,0,65, + 0,0,128,0,128,62,128,65,128,128,128,128,128,128,128,65, + 128,62,224,13,15,30,15,1,0,224,0,32,0,32,0,32, + 0,39,192,40,48,48,16,32,8,32,8,32,8,32,8,32, + 8,48,16,40,48,231,192,11,11,22,15,2,0,31,64,96, + 192,64,64,128,64,128,0,128,0,128,0,128,0,64,96,96, + 192,31,0,13,15,30,15,1,0,0,224,0,32,0,32,0, + 32,31,32,96,160,64,96,128,32,128,32,128,32,128,32,128, + 32,64,96,96,160,31,56,11,11,22,15,2,0,31,0,96, + 192,64,64,128,32,128,32,255,224,128,0,128,0,64,0,96, + 96,31,128,10,15,30,15,3,0,15,128,24,64,16,0,16, + 0,255,128,16,0,16,0,16,0,16,0,16,0,16,0,16, + 0,16,0,16,0,255,128,13,16,32,15,1,251,31,56,96, + 160,64,96,128,32,128,32,128,32,128,32,128,32,64,96,96, + 160,31,32,0,32,0,32,0,64,0,192,63,0,13,15,30, + 15,1,0,224,0,32,0,32,0,32,0,39,128,40,64,48, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,16,32,15,3,0,8,0,8,0,8,0,0,0,0, + 0,120,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,128,8,21,21,15,3,251,2,2,2, + 0,0,255,1,1,1,1,1,1,1,1,1,1,1,1,2, + 6,248,11,15,30,15,2,0,224,0,32,0,32,0,32,0, + 35,192,33,0,34,0,36,0,40,0,56,0,36,0,34,0, + 33,0,32,128,225,224,11,15,30,15,2,0,124,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,14,11,22,15,0,0, + 238,112,49,136,33,8,33,8,33,8,33,8,33,8,33,8, + 33,8,33,8,249,140,13,11,22,15,1,0,231,128,40,64, + 48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 248,248,11,11,22,15,2,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,13,16, + 32,15,1,251,231,192,40,48,48,16,32,8,32,8,32,8, + 32,8,32,8,48,16,40,48,39,192,32,0,32,0,32,0, + 32,0,252,0,13,16,32,15,1,251,31,56,96,160,64,96, + 128,32,128,32,128,32,128,32,128,32,64,96,96,160,31,32, + 0,32,0,32,0,32,0,32,1,248,11,11,22,15,2,0, + 113,192,22,32,24,0,16,0,16,0,16,0,16,0,16,0, + 16,0,16,0,255,128,9,11,22,15,3,0,62,128,65,128, + 64,128,64,0,56,0,7,0,0,128,0,128,128,128,193,0, + 190,0,10,15,30,15,2,0,32,0,32,0,32,0,32,0, + 255,128,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,16,192,15,0,12,11,22,15,1,0,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,16,160, + 15,48,13,11,22,15,1,0,248,248,32,32,32,32,16,64, + 16,64,16,64,8,128,8,128,5,0,7,0,2,0,13,11, + 22,15,1,0,240,120,64,16,64,16,66,16,34,32,37,32, + 37,32,37,32,21,64,24,192,24,192,11,11,22,15,2,0, + 241,224,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,241,224,12,16,32,15,1,251,240,240,64,32, + 64,32,32,64,32,64,32,128,16,128,17,0,9,0,10,0, + 6,0,4,0,4,0,8,0,8,0,254,0,9,11,22,15, + 3,0,255,128,128,128,129,0,2,0,4,0,8,0,16,0, + 32,0,64,128,128,128,255,128,5,19,19,15,5,253,24,32, + 32,32,32,32,32,32,32,192,32,32,32,32,32,32,32,32, + 24,1,17,17,15,7,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,5,19,19,15,5,253,192,32, + 32,32,32,32,32,32,32,24,32,32,32,32,32,32,32,32, + 192,12,3,6,15,1,6,60,48,102,96,195,192,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,15,0,1,2,16,16,15,6,251,192,192,0,0,0,128, + 128,128,192,192,192,192,192,192,192,192,8,16,16,15,3,0, + 8,8,8,8,29,99,65,128,128,128,64,99,28,8,8,8, + 10,14,28,15,2,0,14,0,17,128,32,0,32,0,32,0, + 32,0,254,0,16,0,16,0,16,0,16,0,32,64,64,64, + 255,128,10,10,20,15,2,2,128,64,94,128,33,0,64,128, + 64,128,64,128,64,128,33,0,94,128,128,64,11,14,28,15, + 2,0,241,224,64,64,32,128,32,128,17,0,17,0,10,0, + 127,192,4,0,4,0,127,192,4,0,4,0,63,128,1,19, + 19,15,7,253,128,128,128,128,128,128,128,128,0,0,0,128, + 128,128,128,128,128,128,128,10,18,36,15,2,254,15,192,16, + 64,32,64,32,64,32,0,112,0,140,0,130,0,65,0,32, + 128,16,64,12,64,3,128,1,0,129,0,129,0,130,0,252, + 0,7,2,2,15,4,12,198,198,13,13,26,15,1,1,15, + 128,48,96,64,16,70,144,137,136,144,136,144,8,144,8,136, + 136,71,16,64,16,48,96,15,128,7,9,9,15,4,5,120, + 132,60,68,132,140,118,0,254,12,11,22,15,1,0,6,48, + 12,96,24,192,49,128,99,0,198,0,99,0,49,128,24,192, + 12,96,6,48,11,4,8,15,2,5,255,224,0,32,0,32, + 0,32,10,1,2,15,2,7,255,192,13,13,26,15,1,1, + 15,128,48,96,64,16,79,16,136,136,136,136,143,8,137,8, + 136,136,72,144,64,16,48,96,15,128,7,1,1,15,4,12, + 254,7,7,7,15,4,9,56,68,130,130,130,68,56,11,13, + 26,15,2,1,4,0,4,0,4,0,4,0,4,0,255,224, + 4,0,4,0,4,0,4,0,4,0,0,0,255,224,6,9, + 9,15,4,7,56,68,132,4,8,16,32,68,252,6,9,9, + 15,4,7,120,132,4,8,56,4,4,132,120,5,4,4,15, + 5,12,24,48,96,192,12,16,32,15,1,251,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,48,160, + 47,48,32,0,32,0,32,0,32,0,32,0,11,18,36,15, + 2,254,31,224,100,128,196,128,196,128,196,128,196,128,196,128, + 100,128,28,128,4,128,4,128,4,128,4,128,4,128,4,128, + 4,128,4,128,60,224,3,3,3,15,6,6,224,224,224,4, + 5,5,15,5,252,32,32,16,144,96,7,9,9,15,4,7, + 48,208,16,16,16,16,16,16,254,7,9,9,15,4,5,56, + 68,130,130,130,68,56,0,254,12,11,22,15,1,0,198,0, + 99,0,49,128,24,192,12,96,6,48,12,96,24,192,49,128, + 99,0,198,0,14,16,32,15,0,0,48,0,208,0,16,8, + 16,16,16,32,16,32,16,64,16,152,255,40,2,72,4,72, + 4,136,9,8,17,252,0,8,0,28,14,16,32,15,0,0, + 48,0,208,0,16,8,16,16,16,32,16,32,16,64,16,184, + 255,68,2,132,4,4,4,8,8,16,16,32,0,68,0,252, + 14,16,32,15,0,0,120,0,132,0,4,8,8,16,56,32, + 4,32,4,64,132,152,121,40,2,72,4,72,4,136,9,8, + 17,252,0,8,0,28,8,14,14,15,3,253,24,24,0,0, + 8,8,48,64,128,128,128,129,65,62,13,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,63,0,5,0,8,128, + 8,128,8,128,16,64,16,64,16,64,63,224,32,32,32,32, + 64,16,64,16,240,120,13,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,63,0,5,0,8,128,8,128,8,128, + 16,64,16,64,16,64,63,224,32,32,32,32,64,16,64,16, + 240,120,13,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,63,0,5,0,8,128,8,128,8,128,16,64,16,64, + 16,64,63,224,32,32,32,32,64,16,64,16,240,120,13,18, + 36,15,1,0,28,64,54,192,35,128,0,0,63,0,5,0, + 8,128,8,128,8,128,16,64,16,64,16,64,63,224,32,32, + 32,32,64,16,64,16,240,120,13,18,36,15,1,0,24,192, + 24,192,0,0,0,0,63,0,5,0,8,128,8,128,8,128, + 16,64,16,64,16,64,63,224,32,32,32,32,64,16,64,16, + 240,120,13,19,38,15,1,0,7,0,8,128,8,128,8,128, + 7,0,63,0,5,0,8,128,8,128,8,128,16,64,16,64, + 16,64,63,224,32,32,32,32,64,16,64,16,240,120,15,14, + 28,15,255,0,15,254,2,130,4,130,4,130,4,136,8,136, + 8,248,8,136,31,136,16,130,16,130,32,130,32,130,243,254, + 11,18,36,15,2,252,15,32,48,224,96,96,64,32,128,0, + 128,0,128,0,128,0,128,0,128,0,64,32,96,96,48,192, + 15,0,4,0,2,0,18,0,12,0,12,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,255,224,32,32,32,32, + 32,32,34,0,34,0,62,0,34,0,34,0,32,16,32,16, + 32,16,32,16,255,240,12,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,255,224,32,32,32,32,32,32,34,0, + 34,0,62,0,34,0,34,0,32,16,32,16,32,16,32,16, + 255,240,12,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,255,224,32,32,32,32,32,32,34,0,34,0,62,0, + 34,0,34,0,32,16,32,16,32,16,32,16,255,240,12,18, + 36,15,1,0,25,128,25,128,0,0,0,0,255,224,32,32, + 32,32,32,32,34,0,34,0,62,0,34,0,34,0,32,16, + 32,16,32,16,32,16,255,240,9,19,38,15,3,0,96,0, + 48,0,24,0,12,0,0,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,255,128,9,19,38,15,3,0,3,0,6,0,12,0, + 24,0,0,0,255,128,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,255,128, + 9,19,38,15,3,0,24,0,60,0,102,0,195,0,0,0, + 255,128,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,255,128,9,18,36,15, + 3,0,99,0,99,0,0,0,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,13,14,28,15,0,0,127,192,32,48, + 32,16,32,8,32,8,32,8,252,8,32,8,32,8,32,8, + 32,8,32,16,32,48,127,192,14,18,36,15,0,0,14,32, + 27,96,17,192,0,0,240,252,48,16,40,16,36,16,36,16, + 34,16,34,16,33,16,33,16,32,144,32,144,32,80,32,48, + 252,48,13,19,38,15,1,0,24,0,12,0,6,0,3,0, + 0,0,15,128,48,96,96,48,64,16,128,8,128,8,128,8, + 128,8,128,8,128,8,64,16,96,48,48,96,15,128,13,19, + 38,15,1,0,0,96,0,192,1,128,3,0,0,0,15,128, + 48,96,96,48,64,16,128,8,128,8,128,8,128,8,128,8, + 128,8,64,16,96,48,48,96,15,128,13,19,38,15,1,0, + 3,0,7,128,12,192,24,96,0,0,15,128,48,96,96,48, + 64,16,128,8,128,8,128,8,128,8,128,8,128,8,64,16, + 96,48,48,96,15,128,13,18,36,15,1,0,14,32,27,96, + 17,192,0,0,15,128,48,96,96,48,64,16,128,8,128,8, + 128,8,128,8,128,8,128,8,64,16,96,48,48,96,15,128, + 13,18,36,15,1,0,24,192,24,192,0,0,0,0,15,128, + 48,96,96,48,64,16,128,8,128,8,128,8,128,8,128,8, + 128,8,64,16,96,48,48,96,15,128,11,11,22,15,2,2, + 128,32,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,128,32,14,15,30,15,0,0,0,4,7,200, + 24,48,48,48,32,72,64,136,64,136,65,8,66,8,68,8, + 72,8,48,16,48,48,88,96,135,128,12,19,38,15,1,0, + 24,0,12,0,6,0,3,0,0,0,249,240,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,32,64,31,128,12,19,38,15,1,0,0,192,1,128, + 3,0,6,0,0,0,249,240,64,32,64,32,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,32,64, + 31,128,12,19,38,15,1,0,6,0,15,0,25,128,48,192, + 0,0,249,240,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,32,64,32,64,32,64,32,32,64,31,128,12,18, + 36,15,1,0,25,128,25,128,0,0,0,0,249,240,64,32, + 64,32,64,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,32,32,64,31,128,13,19,38,15,1,0,0,192, + 1,128,3,0,6,0,0,0,240,120,32,32,16,64,16,64, + 8,128,8,128,5,0,2,0,2,0,2,0,2,0,2,0, + 2,0,31,192,11,14,28,15,2,0,248,0,32,0,32,0, + 63,128,32,64,32,32,32,32,32,32,32,32,32,64,63,128, + 32,0,32,0,248,0,11,16,32,15,2,0,14,0,17,0, + 32,128,32,128,32,128,32,128,33,0,39,0,32,192,32,64, + 32,32,32,32,32,32,36,32,36,64,243,128,11,16,32,15, + 2,0,48,0,24,0,12,0,6,0,0,0,30,0,97,0, + 0,128,0,128,0,128,63,128,64,128,128,128,128,128,129,128, + 126,224,11,16,32,15,2,0,1,128,3,0,6,0,12,0, + 0,0,30,0,97,0,0,128,0,128,0,128,63,128,64,128, + 128,128,128,128,129,128,126,224,11,16,32,15,2,0,12,0, + 30,0,51,0,97,128,0,0,30,0,97,0,0,128,0,128, + 0,128,63,128,64,128,128,128,128,128,129,128,126,224,11,15, + 30,15,2,0,56,128,109,128,71,0,0,0,30,0,97,0, + 0,128,0,128,0,128,63,128,64,128,128,128,128,128,129,128, + 126,224,11,15,30,15,2,0,49,128,49,128,0,0,0,0, + 30,0,97,0,0,128,0,128,0,128,63,128,64,128,128,128, + 128,128,129,128,126,224,11,17,34,15,2,0,14,0,17,0, + 17,0,17,0,14,0,0,0,30,0,97,0,0,128,0,128, + 0,128,63,128,64,128,128,128,128,128,129,128,126,224,15,11, + 22,15,0,0,28,112,98,140,65,4,1,2,1,2,63,254, + 65,0,129,0,129,2,130,132,124,120,11,15,30,15,2,252, + 31,64,96,192,64,64,128,64,128,0,128,0,128,0,128,0, + 64,96,96,192,31,0,4,0,2,0,18,0,12,0,11,16, + 32,15,2,0,48,0,24,0,12,0,6,0,0,0,31,0, + 96,192,64,64,128,32,128,32,255,224,128,0,128,0,64,0, + 96,96,31,128,11,16,32,15,2,0,1,128,3,0,6,0, + 12,0,0,0,31,0,96,192,64,64,128,32,128,32,255,224, + 128,0,128,0,64,0,96,96,31,128,11,16,32,15,2,0, + 12,0,30,0,51,0,97,128,0,0,31,0,96,192,64,64, + 128,32,128,32,255,224,128,0,128,0,64,0,96,96,31,128, + 11,15,30,15,2,0,49,128,49,128,0,0,0,0,31,0, + 96,192,64,64,128,32,128,32,255,224,128,0,128,0,64,0, + 96,96,31,128,9,16,32,15,3,0,96,0,48,0,24,0, + 12,0,0,0,120,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,255,128,9,16,32,15,3,0, + 3,0,6,0,12,0,24,0,0,0,120,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,255,128, + 9,16,32,15,3,0,24,0,60,0,102,0,195,0,0,0, + 120,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,9,15,30,15,3,0,99,0,99,0, + 0,0,0,0,120,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,255,128,12,16,32,15,1,0, + 124,192,135,0,13,0,48,128,0,64,15,224,48,96,32,48, + 64,16,64,16,64,16,64,16,64,16,32,32,48,96,15,128, + 13,15,30,15,1,0,28,64,54,192,35,128,0,0,231,128, + 40,64,48,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,248,248,11,16,32,15,2,0,24,0,12,0,6,0, + 3,0,0,0,31,0,96,192,64,64,128,32,128,32,128,32, + 128,32,128,32,64,64,96,192,31,0,11,16,32,15,2,0, + 1,128,3,0,6,0,12,0,0,0,31,0,96,192,64,64, + 128,32,128,32,128,32,128,32,128,32,64,64,96,192,31,0, + 11,16,32,15,2,0,12,0,30,0,51,0,97,128,0,0, + 31,0,96,192,64,64,128,32,128,32,128,32,128,32,128,32, + 64,64,96,192,31,0,11,15,30,15,2,0,28,64,54,192, + 35,128,0,0,31,0,96,192,64,64,128,32,128,32,128,32, + 128,32,128,32,64,64,96,192,31,0,11,15,30,15,2,0, + 49,128,49,128,0,0,0,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,11,9, + 18,15,2,3,14,0,14,0,0,0,0,0,255,224,0,0, + 0,0,14,0,14,0,12,12,24,15,1,0,0,16,15,160, + 48,64,32,160,65,16,66,16,68,16,72,16,80,16,32,32, + 80,96,143,128,12,16,32,15,1,0,24,0,12,0,6,0, + 3,0,0,0,224,224,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,96,16,160,15,48,12,16,32,15,1,0, + 0,192,1,128,3,0,6,0,0,0,224,224,32,32,32,32, + 32,32,32,32,32,32,32,32,32,32,32,96,16,160,15,48, + 12,16,32,15,1,0,6,0,15,0,25,128,48,192,0,0, + 224,224,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,96,16,160,15,48,12,15,30,15,1,0,25,128,25,128, + 0,0,0,0,224,224,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,32,96,16,160,15,48,12,21,42,15,1,251, + 0,192,1,128,3,0,6,0,0,0,240,240,64,32,64,32, + 32,64,32,64,32,128,16,128,17,0,9,0,10,0,6,0, + 4,0,4,0,8,0,8,0,254,0,13,21,42,15,1,251, + 224,0,32,0,32,0,32,0,32,0,39,192,56,48,48,16, + 32,8,32,8,32,8,32,8,32,8,48,16,56,48,39,192, + 32,0,32,0,32,0,32,0,252,0,12,20,40,15,1,251, + 25,128,25,128,0,0,0,0,240,240,64,32,64,32,32,64, + 32,64,32,128,16,128,17,0,9,0,10,0,6,0,4,0, + 4,0,8,0,8,0,254,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--25-180-100-100-M-150-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 15 + Calculated Max Values w=15 h=21 x= 7 y=12 dx=15 dy= 0 ascent=17 len=40 + Font Bounding box w=23 h=32 x=-5 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =16 descent=-5 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR18r[2862] U8G_SECTION(".progmem.u8g_font_courR18r") = { + 0,23,32,251,248,14,3,161,7,151,32,127,251,17,251,16, + 251,0,0,0,15,0,1,2,16,16,15,6,0,192,192,192, + 192,192,192,192,192,128,128,128,0,0,0,192,192,8,7,7, + 15,3,9,231,231,231,231,66,66,66,10,17,34,15,2,255, + 9,0,9,0,9,0,9,0,9,0,9,0,127,192,18,0, + 18,0,18,0,255,128,18,0,18,0,18,0,18,0,18,0, + 18,0,9,20,40,15,3,253,8,0,8,0,8,0,30,128, + 33,128,64,128,64,0,64,0,32,0,30,0,1,0,0,128, + 0,128,128,128,193,0,190,0,8,0,8,0,8,0,8,0, + 12,16,32,15,1,0,28,0,34,0,65,0,65,0,65,0, + 34,0,28,112,3,128,28,0,225,192,2,32,4,16,4,16, + 4,16,2,32,1,192,10,13,26,15,2,0,29,0,38,0, + 32,0,32,0,16,0,48,0,73,128,137,0,134,0,130,0, + 131,0,69,0,56,192,3,7,7,15,6,8,224,224,224,224, + 224,64,64,4,19,19,15,7,253,16,32,32,64,64,64,128, + 128,128,128,128,128,128,64,64,64,32,32,16,4,19,19,15, + 3,253,128,64,64,32,32,32,16,16,16,16,16,16,16,32, + 32,32,64,64,128,9,9,18,15,3,7,8,0,8,0,8, + 0,201,128,127,0,28,0,54,0,99,0,193,128,11,11,22, + 15,2,2,4,0,4,0,4,0,4,0,4,0,255,224,4, + 0,4,0,4,0,4,0,4,0,5,6,6,15,4,253,56, + 56,112,96,192,128,10,1,2,15,2,7,255,192,3,3,3, + 15,6,0,224,224,224,9,18,36,15,3,254,0,128,0,128, + 1,0,1,0,2,0,2,0,4,0,4,0,8,0,8,0, + 16,0,16,0,32,0,32,0,64,0,64,0,128,0,128,0, + 9,15,30,15,3,0,28,0,99,0,65,0,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 99,0,28,0,9,15,30,15,3,0,24,0,232,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,8,0,255,128,10,15,30,15,2,0,30,0, + 97,0,128,128,128,128,0,128,0,128,1,0,2,0,4,0, + 8,0,16,0,32,0,64,0,128,64,255,192,10,15,30,15, + 2,0,62,0,65,128,0,128,0,128,0,128,1,0,30,0, + 1,128,0,64,0,64,0,64,0,64,128,64,97,128,30,0, + 10,15,30,15,2,0,3,0,5,0,9,0,9,0,17,0, + 33,0,33,0,65,0,65,0,129,0,255,192,1,0,1,0, + 1,0,15,192,10,15,30,15,2,0,127,128,64,0,64,0, + 64,0,64,0,94,0,97,128,0,128,0,64,0,64,0,64, + 0,64,0,128,193,128,62,0,9,15,30,15,3,0,15,0, + 48,0,96,0,64,0,128,0,158,0,161,0,192,128,128,128, + 128,128,128,128,128,128,64,128,97,0,30,0,9,15,30,15, + 2,0,255,128,128,128,129,0,1,0,1,0,2,0,2,0, + 2,0,2,0,4,0,4,0,4,0,8,0,8,0,8,0, + 10,15,30,15,2,0,30,0,33,0,64,128,64,128,64,128, + 64,128,33,0,63,0,64,128,128,64,128,64,128,64,64,128, + 97,128,30,0,9,15,30,15,3,0,28,0,99,0,193,128, + 128,128,128,128,128,128,65,128,98,128,28,128,0,128,0,128, + 1,0,1,0,6,0,248,0,3,11,11,15,6,0,224,224, + 224,0,0,0,0,0,224,224,224,5,14,14,15,4,253,56, + 56,56,0,0,0,0,0,56,56,112,96,192,128,11,11,22, + 15,1,2,0,96,1,128,6,0,24,0,96,0,192,0,96, + 0,24,0,6,0,1,128,0,96,12,4,8,15,1,5,255, + 240,0,0,0,0,255,240,11,11,22,15,2,2,192,0,48, + 0,12,0,3,0,0,192,0,96,0,192,3,0,12,0,48, + 0,192,0,8,14,14,15,3,0,124,130,129,1,1,1,2, + 12,16,16,0,0,24,24,10,18,36,15,2,254,30,0,97, + 0,64,128,128,128,128,128,131,128,132,128,136,128,136,128,136, + 128,136,128,132,128,131,192,128,0,128,0,64,0,97,128,31, + 0,13,14,28,15,1,0,63,0,5,0,8,128,8,128,8, + 128,16,64,16,64,16,64,63,224,32,32,32,32,64,16,64, + 16,240,120,12,14,28,15,1,0,255,192,32,32,32,16,32, + 16,32,16,32,32,63,192,32,32,32,16,32,16,32,16,32, + 16,32,32,255,192,11,14,28,15,2,0,15,32,48,160,96, + 96,64,32,128,0,128,0,128,0,128,0,128,0,128,0,64, + 32,96,96,48,192,15,0,12,14,28,15,1,0,255,128,64, + 96,64,32,64,16,64,16,64,16,64,16,64,16,64,16,64, + 16,64,16,64,32,64,96,255,128,12,14,28,15,1,0,255, + 224,32,32,32,32,32,32,34,0,34,0,62,0,34,0,34, + 0,32,16,32,16,32,16,32,16,255,240,11,14,28,15,2, + 0,255,224,32,32,32,32,32,32,34,0,34,0,62,0,34, + 0,34,0,32,0,32,0,32,0,32,0,254,0,12,14,28, + 15,1,0,15,32,48,160,96,96,64,32,128,0,128,0,128, + 0,128,0,131,240,128,32,64,32,96,32,48,64,15,128,13, + 14,28,15,1,0,248,248,32,32,32,32,32,32,32,32,32, + 32,63,224,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,14,28,15,3,0,255,128,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,255,128,12,14,28,15,2,0,31,240,0,128,0,128,0, + 128,0,128,0,128,0,128,0,128,128,128,128,128,128,128,129, + 0,67,0,60,0,13,14,28,15,1,0,248,240,32,64,32, + 128,33,0,34,0,36,0,44,0,50,0,33,0,32,128,32, + 64,32,64,32,32,248,120,12,14,28,15,1,0,254,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16, + 16,16,16,16,16,16,16,255,240,13,14,28,15,1,0,224, + 56,96,48,96,48,80,80,80,80,72,144,72,144,69,16,71, + 16,64,16,64,16,64,16,64,16,240,120,14,14,28,15,0, + 0,240,252,48,16,40,16,36,16,36,16,34,16,34,16,33, + 16,33,16,32,144,32,144,32,80,32,48,252,48,13,14,28, + 15,1,0,15,128,48,96,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,128,8,64,16,96,48,48,96,15,128,11, + 14,28,15,2,0,255,128,32,64,32,32,32,32,32,32,32, + 32,32,64,63,128,32,0,32,0,32,0,32,0,32,0,254, + 0,13,16,32,15,1,254,15,128,48,96,96,48,64,16,128, + 8,128,8,128,8,128,8,128,8,128,8,64,16,96,48,48, + 96,15,128,6,48,27,192,13,14,28,15,1,0,255,128,32, + 64,32,32,32,32,32,32,32,32,32,64,63,128,33,0,32, + 128,32,64,32,64,32,32,248,56,10,14,28,15,2,0,30, + 64,97,64,128,192,128,64,128,0,96,0,30,0,1,128,0, + 64,0,64,128,64,192,64,160,128,159,0,11,14,28,15,2, + 0,255,224,132,32,132,32,132,32,132,32,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,63,128,12,14,28, + 15,1,0,249,240,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,32,64,32,64,32,32,64,31,128,13, + 14,28,15,1,0,248,248,64,16,64,16,32,32,32,32,16, + 64,16,64,16,64,8,128,8,128,8,128,5,0,7,0,2, + 0,13,14,28,15,1,0,248,248,64,16,64,16,66,16,66, + 16,69,16,69,16,37,32,40,160,40,160,40,160,48,96,48, + 96,48,96,13,14,28,15,1,0,248,248,32,32,16,64,16, + 64,8,128,5,0,2,0,5,0,8,128,8,128,16,64,32, + 32,32,32,248,248,13,14,28,15,1,0,240,120,32,32,16, + 64,16,64,8,128,8,128,5,0,2,0,2,0,2,0,2, + 0,2,0,2,0,31,192,10,14,28,15,2,0,255,192,128, + 64,128,128,129,0,130,0,2,0,4,0,8,0,16,0,16, + 64,32,64,64,64,128,64,255,192,3,19,19,15,7,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,224,9,18,36,15,3,254,128,0,128,0,64,0,64,0, + 32,0,32,0,16,0,16,0,8,0,8,0,4,0,4,0, + 2,0,2,0,1,0,1,0,0,128,0,128,3,19,19,15, + 5,253,224,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,9,5,10,15,3,11,8,0,28,0,34, + 0,65,0,128,128,15,1,2,15,0,251,255,254,5,4,4, + 15,4,12,192,96,48,24,11,11,22,15,2,0,62,0,65, + 0,0,128,0,128,62,128,65,128,128,128,128,128,128,128,65, + 128,62,224,13,15,30,15,1,0,224,0,32,0,32,0,32, + 0,39,192,40,48,48,16,32,8,32,8,32,8,32,8,32, + 8,48,16,40,48,231,192,11,11,22,15,2,0,31,64,96, + 192,64,64,128,64,128,0,128,0,128,0,128,0,64,96,96, + 192,31,0,13,15,30,15,1,0,0,224,0,32,0,32,0, + 32,31,32,96,160,64,96,128,32,128,32,128,32,128,32,128, + 32,64,96,96,160,31,56,11,11,22,15,2,0,31,0,96, + 192,64,64,128,32,128,32,255,224,128,0,128,0,64,0,96, + 96,31,128,10,15,30,15,3,0,15,128,24,64,16,0,16, + 0,255,128,16,0,16,0,16,0,16,0,16,0,16,0,16, + 0,16,0,16,0,255,128,13,16,32,15,1,251,31,56,96, + 160,64,96,128,32,128,32,128,32,128,32,128,32,64,96,96, + 160,31,32,0,32,0,32,0,64,0,192,63,0,13,15,30, + 15,1,0,224,0,32,0,32,0,32,0,39,128,40,64,48, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,248, + 248,9,16,32,15,3,0,8,0,8,0,8,0,0,0,0, + 0,120,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,128,8,21,21,15,3,251,2,2,2, + 0,0,255,1,1,1,1,1,1,1,1,1,1,1,1,2, + 6,248,11,15,30,15,2,0,224,0,32,0,32,0,32,0, + 35,192,33,0,34,0,36,0,40,0,56,0,36,0,34,0, + 33,0,32,128,225,224,11,15,30,15,2,0,124,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,14,11,22,15,0,0, + 238,112,49,136,33,8,33,8,33,8,33,8,33,8,33,8, + 33,8,33,8,249,140,13,11,22,15,1,0,231,128,40,64, + 48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 248,248,11,11,22,15,2,0,31,0,96,192,64,64,128,32, + 128,32,128,32,128,32,128,32,64,64,96,192,31,0,13,16, + 32,15,1,251,231,192,40,48,48,16,32,8,32,8,32,8, + 32,8,32,8,48,16,40,48,39,192,32,0,32,0,32,0, + 32,0,252,0,13,16,32,15,1,251,31,56,96,160,64,96, + 128,32,128,32,128,32,128,32,128,32,64,96,96,160,31,32, + 0,32,0,32,0,32,0,32,1,248,11,11,22,15,2,0, + 113,192,22,32,24,0,16,0,16,0,16,0,16,0,16,0, + 16,0,16,0,255,128,9,11,22,15,3,0,62,128,65,128, + 64,128,64,0,56,0,7,0,0,128,0,128,128,128,193,0, + 190,0,10,15,30,15,2,0,32,0,32,0,32,0,32,0, + 255,128,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,16,192,15,0,12,11,22,15,1,0,224,224,32,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,96,16,160, + 15,48,13,11,22,15,1,0,248,248,32,32,32,32,16,64, + 16,64,16,64,8,128,8,128,5,0,7,0,2,0,13,11, + 22,15,1,0,240,120,64,16,64,16,66,16,34,32,37,32, + 37,32,37,32,21,64,24,192,24,192,11,11,22,15,2,0, + 241,224,64,64,32,128,17,0,10,0,4,0,10,0,17,0, + 32,128,64,64,241,224,12,16,32,15,1,251,240,240,64,32, + 64,32,32,64,32,64,32,128,16,128,17,0,9,0,10,0, + 6,0,4,0,4,0,8,0,8,0,254,0,9,11,22,15, + 3,0,255,128,128,128,129,0,2,0,4,0,8,0,16,0, + 32,0,64,128,128,128,255,128,5,19,19,15,5,253,24,32, + 32,32,32,32,32,32,32,192,32,32,32,32,32,32,32,32, + 24,1,17,17,15,7,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,5,19,19,15,5,253,192,32, + 32,32,32,32,32,32,32,24,32,32,32,32,32,32,32,32, + 192,12,3,6,15,1,6,60,48,102,96,195,192,255}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 20 + Calculated Max Values w=19 h=28 x= 9 y=17 dx=20 dy= 0 ascent=26 len=81 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =26 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24[8729] U8G_SECTION(".progmem.u8g_font_courR24") = { + 0,28,42,250,246,19,4,184,10,129,32,255,250,26,250,21, + 250,0,0,0,20,0,1,5,21,21,20,8,0,32,112,112, + 112,112,112,32,32,32,32,32,32,32,32,0,0,0,0,112, + 248,112,11,10,20,20,4,10,241,224,241,224,241,224,241,224, + 241,224,96,192,96,192,64,128,64,128,64,128,13,23,46,20, + 3,254,4,64,4,64,4,64,4,64,12,192,8,128,8,128, + 8,128,127,248,8,128,8,128,8,128,8,128,8,128,255,240, + 8,128,8,128,8,128,9,128,17,0,17,0,17,0,17,0, + 12,25,50,20,4,253,4,0,4,0,4,0,31,32,113,224, + 64,96,128,32,128,0,192,0,96,0,60,0,7,128,0,224, + 0,48,0,16,0,16,128,48,192,96,241,192,159,0,4,0, + 4,0,4,0,4,0,4,0,15,20,40,20,3,0,30,0, + 51,0,97,128,64,128,64,128,97,128,51,0,30,14,0,112, + 3,128,28,0,224,0,1,224,3,48,6,24,4,8,4,8, + 6,24,3,48,1,224,12,17,34,20,3,0,15,192,25,128, + 48,0,32,0,32,0,48,0,16,0,24,0,60,0,100,48, + 70,96,194,64,131,64,193,192,65,128,99,192,62,112,4,11, + 11,20,8,10,112,112,112,112,112,224,224,224,224,224,224,5, + 25,25,20,9,252,8,24,16,48,32,96,96,64,64,192,192, + 192,192,192,192,192,64,64,96,96,32,48,16,24,8,5,25, + 25,20,5,252,128,192,64,96,32,48,48,16,16,24,24,24, + 24,24,24,24,16,16,48,48,32,96,64,192,128,11,13,26, + 20,4,8,4,0,4,0,4,0,4,0,132,32,245,224,31, + 0,14,0,10,0,27,0,49,128,32,128,96,192,15,17,34, + 20,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,255,254,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,6,9,9,20,5,252,60,60,120,120,96, + 224,192,192,128,15,1,2,20,2,9,255,254,5,4,4,20, + 7,0,112,248,248,112,11,25,50,20,4,253,0,32,0,96, + 0,64,0,64,0,192,0,128,1,128,1,0,3,0,2,0, + 2,0,6,0,4,0,12,0,8,0,8,0,24,0,16,0, + 48,0,32,0,96,0,64,0,64,0,192,0,128,0,11,20, + 40,20,4,0,31,0,49,128,96,192,64,64,64,64,128,32, + 128,32,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 192,96,64,64,64,64,96,192,49,128,31,0,11,20,40,20, + 4,0,12,0,60,0,228,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,13,20,40,20,3,0, + 15,192,48,96,96,16,64,16,64,16,0,16,0,48,0,32, + 0,96,0,192,1,128,3,0,6,0,12,0,24,0,48,0, + 96,0,192,0,128,8,255,248,13,20,40,20,3,0,15,128, + 56,224,96,48,0,16,0,16,0,16,0,16,0,32,0,64, + 7,128,0,96,0,16,0,8,0,8,0,8,0,8,0,24, + 192,48,112,224,31,128,13,20,40,20,3,0,0,192,1,64, + 1,64,2,64,6,64,4,64,8,64,24,64,16,64,32,64, + 96,64,64,64,128,64,255,248,0,64,0,64,0,64,0,64, + 0,64,3,248,13,20,40,20,3,0,63,240,32,0,32,0, + 32,0,32,0,32,0,32,0,39,128,60,224,32,48,0,16, + 0,24,0,8,0,8,0,8,0,24,192,16,96,48,56,224, + 15,128,12,20,40,20,4,0,7,192,28,32,48,0,32,0, + 96,0,64,0,192,0,143,128,184,224,160,32,192,48,192,16, + 192,16,192,16,192,16,64,16,96,48,32,32,56,224,15,128, + 11,20,40,20,4,0,255,224,128,32,128,32,0,96,0,64, + 0,64,0,192,0,128,0,128,1,128,1,0,1,0,3,0, + 2,0,2,0,2,0,6,0,4,0,4,0,4,0,11,20, + 40,20,4,0,31,0,96,192,64,64,192,96,128,32,128,32, + 192,96,64,64,49,128,31,0,113,192,64,64,192,96,128,32, + 128,32,128,32,192,96,64,64,113,192,31,0,12,20,40,20, + 4,0,31,0,112,192,64,96,192,32,128,48,128,48,128,48, + 128,48,192,80,64,208,115,144,30,16,0,32,0,32,0,32, + 0,64,0,192,1,128,14,0,120,0,5,14,14,20,7,0, + 112,248,248,112,0,0,0,0,0,0,112,248,248,112,7,18, + 18,20,5,252,28,62,62,28,0,0,0,0,0,60,60,120, + 112,112,224,192,192,128,15,17,34,20,2,1,0,2,0,14, + 0,56,0,224,3,128,6,0,28,0,112,0,192,0,112,0, + 28,0,6,0,3,128,0,224,0,56,0,14,0,2,15,6, + 12,20,2,6,255,254,0,0,0,0,0,0,0,0,255,254, + 15,17,34,20,2,1,128,0,224,0,56,0,14,0,3,128, + 0,192,0,112,0,28,0,6,0,28,0,112,0,192,3,128, + 14,0,56,0,224,0,128,0,11,19,38,20,4,0,63,0, + 225,192,128,64,128,64,0,96,0,32,0,96,0,64,1,192, + 7,0,4,0,4,0,4,0,0,0,0,0,0,0,14,0, + 31,0,14,0,12,23,46,20,3,254,15,128,24,192,48,64, + 96,96,64,32,192,32,128,32,128,224,131,160,134,32,132,32, + 132,32,132,32,134,32,131,32,129,240,128,0,192,0,64,0, + 96,0,48,0,24,224,15,128,19,19,57,20,0,0,31,224, + 0,0,160,0,0,160,0,1,16,0,1,16,0,1,16,0, + 2,8,0,2,8,0,2,8,0,4,4,0,4,4,0,4, + 4,0,15,254,0,8,2,0,8,2,0,16,1,0,16,1, + 0,48,1,128,254,15,224,16,19,38,20,1,0,255,240,16, + 12,16,4,16,6,16,2,16,2,16,6,16,4,16,12,31, + 248,16,6,16,2,16,3,16,1,16,1,16,3,16,2,16, + 6,255,248,14,19,38,20,2,0,7,196,28,116,32,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 0,128,0,192,0,64,0,96,4,32,28,28,112,7,192,15, + 19,38,20,1,0,255,192,32,112,32,24,32,12,32,4,32, + 6,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 6,32,4,32,12,32,24,32,112,255,192,15,19,38,20,1, + 0,255,252,16,4,16,4,16,4,16,4,16,68,16,64,16, + 64,31,192,16,64,16,64,16,64,16,0,16,2,16,2,16, + 2,16,2,16,2,255,254,15,19,38,20,1,0,255,254,16, + 2,16,2,16,2,16,2,16,66,16,64,16,64,31,192,16, + 64,16,64,16,64,16,0,16,0,16,0,16,0,16,0,16, + 0,255,128,15,19,38,20,2,0,7,196,28,116,48,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 254,128,4,192,4,64,4,96,4,48,4,28,28,7,240,15, + 19,38,20,2,0,252,126,32,8,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,63,248,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,32,8,252,126,11,19,38,20,4, + 0,255,224,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,255,224,15,19,38,20,3,0,15,254,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,32,128,32,128,32,128,32,128,32,192,96,64,64,97, + 192,31,0,17,19,57,20,1,0,254,31,128,16,4,0,16, + 12,0,16,8,0,16,16,0,16,48,0,16,64,0,16,192, + 0,19,128,0,28,192,0,16,32,0,16,48,0,16,16,0, + 16,24,0,16,8,0,16,8,0,16,12,0,16,4,0,254, + 7,128,15,19,38,20,2,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,2,8,2,8,2,8,2,8,2,8,2,255,254,19,19, + 57,20,0,0,248,3,224,40,2,128,40,2,128,36,4,128, + 36,4,128,34,8,128,34,8,128,33,16,128,33,16,128,33, + 16,128,32,160,128,32,160,128,32,64,128,32,64,128,32,0, + 128,32,0,128,32,0,128,32,0,128,254,7,224,18,19,57, + 20,0,0,248,31,192,28,1,0,20,1,0,18,1,0,18, + 1,0,17,1,0,16,129,0,16,129,0,16,65,0,16,65, + 0,16,33,0,16,33,0,16,17,0,16,17,0,16,9,0, + 16,9,0,16,5,0,16,7,0,127,3,0,15,19,38,20, + 2,0,7,192,24,48,48,24,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,48,24,24,48,7,192,15,19,38,20,1,0,255,224, + 16,56,16,4,16,6,16,2,16,2,16,2,16,6,16,4, + 16,56,31,224,16,0,16,0,16,0,16,0,16,0,16,0, + 16,0,255,192,15,22,44,20,2,253,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,12,96,7,192, + 2,0,15,198,24,124,18,19,57,20,1,0,255,224,0,16, + 56,0,16,4,0,16,6,0,16,2,0,16,2,0,16,6, + 0,16,4,0,16,24,0,31,224,0,16,96,0,16,48,0, + 16,24,0,16,12,0,16,4,0,16,6,0,16,2,0,16, + 3,0,254,1,192,12,19,38,20,3,0,15,144,56,208,96, + 48,64,48,64,16,64,16,64,0,96,0,56,0,15,0,1, + 192,0,96,0,48,128,16,128,16,192,16,224,48,184,224,143, + 128,15,19,38,20,2,0,255,254,129,2,129,2,129,2,129, + 2,129,2,129,2,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,63,248,17,19,57, + 20,1,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,19,19,57,20, + 0,0,254,15,224,48,1,128,16,1,0,16,1,0,24,3, + 0,8,2,0,8,2,0,12,6,0,4,4,0,4,4,0, + 6,12,0,2,8,0,3,24,0,1,16,0,1,16,0,0, + 160,0,0,160,0,0,224,0,0,64,0,17,19,57,20,1, + 0,252,31,128,64,1,0,64,1,0,64,1,0,64,1,0, + 97,195,0,33,66,0,33,66,0,34,34,0,34,34,0,34, + 34,0,34,34,0,38,50,0,36,18,0,52,22,0,20,20, + 0,20,20,0,24,12,0,24,12,0,17,19,57,20,1,0, + 124,31,0,48,6,0,16,4,0,24,12,0,8,8,0,4, + 16,0,2,32,0,3,96,0,1,192,0,0,128,0,1,192, + 0,2,32,0,4,16,0,12,24,0,8,8,0,16,4,0, + 48,6,0,96,3,0,252,31,128,15,19,38,20,2,0,248, + 62,96,12,48,24,16,16,24,48,8,32,4,64,6,192,2, + 128,3,128,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,31,240,13,19,38,20,3,0,127,240,64,16,64, + 48,64,32,64,96,64,192,0,128,1,128,3,0,6,0,4, + 0,12,0,24,8,16,8,48,8,96,8,64,8,192,8,255, + 248,5,24,24,20,9,252,248,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,248,11, + 25,50,20,4,253,128,0,192,0,64,0,64,0,96,0,32, + 0,48,0,16,0,24,0,8,0,8,0,12,0,4,0,6, + 0,2,0,2,0,3,0,1,0,1,128,0,128,0,192,0, + 64,0,64,0,96,0,32,5,24,24,20,5,252,248,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,248,11,9,18,20,4,12,4,0,14,0,27, + 0,17,0,49,128,96,192,64,64,192,96,128,32,19,1,3, + 20,0,250,255,255,224,6,5,5,20,4,17,192,96,48,24, + 12,15,14,28,20,2,0,15,128,56,224,0,32,0,48,0, + 16,0,16,31,240,112,48,192,16,128,16,128,16,128,48,192, + 240,127,158,17,20,60,20,0,0,240,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,17,248,0,23,14, + 0,20,3,0,24,1,0,24,1,128,16,0,128,16,0,128, + 16,0,128,16,0,128,24,1,128,24,1,0,20,3,0,23, + 14,0,241,248,0,14,14,28,20,3,0,15,136,56,248,96, + 24,64,8,192,8,128,0,128,0,128,0,128,0,192,0,64, + 12,96,24,56,224,15,128,17,20,60,20,2,0,0,60,0, + 0,4,0,0,4,0,0,4,0,0,4,0,0,4,0,15, + 196,0,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,199,128,14,14,28,20,2,0,15, + 192,56,112,96,24,64,8,192,12,128,4,255,252,128,0,128, + 0,192,0,64,0,96,12,56,56,15,224,13,20,40,20,3, + 0,3,224,6,24,4,0,12,0,8,0,8,0,255,240,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,255,240,17,20,60,20,2,250,15, + 199,128,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,196,0,0,4,0,0,4,0,0, + 12,0,0,8,0,0,56,0,15,224,0,16,20,40,20,1, + 0,240,0,16,0,16,0,16,0,16,0,16,0,17,224,23, + 56,20,8,24,12,24,4,16,4,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,124,31,13,20,40,20,3,0,6, + 0,6,0,6,0,0,0,0,0,0,0,126,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,255,248,10,26,52,20,4,250,1,128,1, + 128,1,128,0,0,0,0,0,0,255,192,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,192,0,128,3,128,254, + 0,15,20,40,20,2,0,240,0,16,0,16,0,16,0,16, + 0,16,0,16,252,16,48,16,96,16,192,17,128,19,0,30, + 0,19,0,17,128,16,192,16,96,16,48,16,24,240,62,13, + 20,40,20,3,0,126,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,248,19,14,42, + 20,0,0,231,14,0,41,147,0,48,225,128,48,96,128,32, + 64,128,32,64,128,32,64,128,32,64,128,32,64,128,32,64, + 128,32,64,128,32,64,128,32,64,128,248,112,224,15,14,28, + 20,2,0,227,192,46,112,40,16,48,24,48,8,32,8,32, + 8,32,8,32,8,32,8,32,8,32,8,32,8,248,62,15, + 14,28,20,2,0,15,224,56,56,96,12,64,4,192,6,128, + 2,128,2,128,2,128,2,192,6,64,4,96,12,56,56,15, + 224,17,20,60,20,0,250,1,248,0,247,14,0,20,3,0, + 24,1,0,24,1,128,16,0,128,16,0,128,16,0,128,16, + 0,128,24,1,128,24,1,0,20,3,0,23,14,0,17,248, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 255,0,0,17,20,60,20,2,250,15,192,0,56,119,128,96, + 28,0,64,12,0,192,12,0,128,4,0,128,4,0,128,4, + 0,128,4,0,192,12,0,64,12,0,96,28,0,56,116,0, + 15,196,0,0,4,0,0,4,0,0,4,0,0,4,0,0, + 4,0,0,127,128,15,14,28,20,3,0,120,124,9,198,11, + 0,12,0,12,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,240,13,14,28,20,3,0,15,144,56, + 240,96,48,64,16,96,0,56,0,15,128,0,224,0,48,128, + 24,128,24,192,48,248,224,143,128,14,19,38,20,2,0,16, + 0,16,0,16,0,16,0,16,0,255,240,16,0,16,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,24, + 12,12,56,7,224,16,14,28,20,1,0,240,60,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,16,4,16,4,16, + 12,24,12,12,52,7,231,17,14,42,20,1,0,252,31,128, + 48,6,0,16,4,0,16,4,0,24,12,0,8,8,0,12, + 24,0,4,16,0,4,16,0,6,48,0,2,32,0,3,96, + 0,1,64,0,1,192,0,17,14,42,20,1,0,248,15,128, + 96,3,0,32,2,0,32,2,0,33,194,0,33,66,0,49, + 70,0,19,100,0,18,36,0,18,36,0,22,52,0,28,28, + 0,8,8,0,8,8,0,15,14,28,20,2,0,248,62,96, + 12,48,24,24,48,12,96,6,192,3,128,3,128,6,192,12, + 96,24,48,48,24,96,12,248,62,15,20,40,20,2,250,248, + 62,64,4,96,12,32,8,48,24,16,16,24,48,8,32,12, + 96,4,64,6,192,2,128,3,128,1,0,3,0,2,0,2, + 0,6,0,4,0,255,128,11,14,28,20,4,0,255,224,128, + 96,128,192,129,128,3,0,6,0,4,0,12,0,24,0,48, + 0,96,32,64,32,192,32,255,224,7,25,25,20,6,252,6, + 12,24,16,16,16,16,16,16,16,16,48,96,224,48,16,16, + 16,16,16,16,16,16,24,14,1,25,25,20,9,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,7,25,25,20,6,252,192,96,48, + 16,16,16,16,16,16,16,16,24,12,14,24,16,16,16,16, + 16,16,16,16,48,224,13,5,10,20,3,7,24,0,124,8, + 199,24,129,176,0,224,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,20,0,1,5,20,20, + 20,7,250,112,248,112,0,0,0,0,32,32,32,32,32,32, + 32,112,112,112,112,112,32,11,20,40,20,4,0,4,0,4, + 0,4,0,4,0,31,128,48,224,96,32,192,32,128,0,128, + 0,128,0,128,0,192,0,96,32,48,224,31,128,4,0,4, + 0,4,0,4,0,14,19,38,20,2,0,3,224,12,48,8, + 24,24,0,16,0,16,0,16,0,24,0,8,0,255,128,8, + 0,8,0,8,0,8,0,8,0,24,0,16,4,48,12,127, + 248,13,13,26,20,3,3,192,24,111,176,56,224,32,32,96, + 48,64,16,64,16,64,16,96,48,32,32,56,224,111,176,192, + 24,15,19,38,20,2,0,248,62,96,12,48,24,16,16,24, + 48,8,32,12,96,6,192,2,128,3,128,63,248,1,0,1, + 0,63,248,1,0,1,0,1,0,1,0,31,240,1,25,25, + 20,9,252,128,128,128,128,128,128,128,128,128,128,128,0,0, + 0,0,128,128,128,128,128,128,128,128,128,128,14,23,46,20, + 3,254,7,248,28,8,16,8,16,8,16,0,24,0,124,0, + 198,0,131,0,129,192,192,96,112,56,24,12,12,4,7,4, + 1,132,0,252,0,96,0,32,64,32,64,32,64,224,127,128, + 10,3,6,20,5,17,97,128,243,192,97,128,19,19,57,20, + 0,0,1,240,0,7,28,0,28,7,0,48,1,128,33,232, + 128,99,24,192,70,8,64,204,8,96,136,0,32,136,0,32, + 136,0,32,140,0,32,198,12,96,67,24,64,97,240,192,48, + 1,128,24,3,0,15,30,0,1,240,0,9,12,24,20,5, + 7,60,0,102,0,2,0,2,0,126,0,198,0,130,0,206, + 0,123,128,0,0,0,0,255,128,16,14,28,20,2,0,1, + 131,3,6,6,12,12,24,24,48,48,96,96,192,225,192,96, + 192,48,96,24,48,12,24,6,12,3,6,14,6,12,20,3, + 6,255,252,0,4,0,4,0,4,0,4,0,4,15,1,2, + 20,2,9,255,254,19,19,57,20,0,0,3,248,0,14,14, + 0,24,3,0,48,1,128,103,224,192,66,48,64,194,24,96, + 130,8,32,130,8,32,130,24,32,130,48,32,131,224,32,194, + 48,96,66,24,64,103,12,192,48,1,128,24,3,0,14,14, + 0,3,248,0,9,2,4,20,5,17,255,128,255,128,9,10, + 20,20,5,11,62,0,99,0,65,0,193,128,128,128,128,128, + 193,128,65,0,99,0,62,0,15,16,32,20,2,1,1,0, + 1,0,1,0,1,0,1,0,1,0,255,254,1,0,1,0, + 1,0,1,0,1,0,1,0,0,0,0,0,255,254,8,14, + 14,20,5,7,60,102,67,193,3,2,6,12,24,16,48,96, + 193,255,8,14,14,20,6,7,60,102,195,1,1,6,28,6, + 3,1,1,195,102,60,6,5,5,20,9,17,12,24,48,96, + 192,16,20,40,20,1,250,240,60,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,24,12,24,28,28, + 52,23,231,16,0,16,0,16,0,16,0,16,0,16,0,15, + 23,46,20,2,254,15,254,57,16,113,16,97,16,225,16,193, + 16,193,16,225,16,97,16,113,16,61,16,15,16,1,16,1, + 16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, + 16,31,190,5,4,4,20,7,7,112,248,248,112,5,5,5, + 20,7,251,32,32,48,152,240,7,14,14,20,6,7,112,208, + 16,16,16,16,16,16,16,16,16,16,16,254,9,12,24,20, + 5,7,28,0,119,0,65,0,193,128,128,128,193,128,65,0, + 119,0,28,0,0,0,0,0,255,128,16,14,28,20,2,0, + 193,128,96,192,48,96,24,48,12,24,6,12,3,6,3,135, + 3,6,6,12,12,24,24,48,48,96,96,192,18,21,63,20, + 1,0,48,0,192,240,0,128,16,1,128,16,3,0,16,2, + 0,16,6,0,16,12,0,16,8,0,16,24,0,16,48,0, + 16,35,0,16,103,0,254,197,0,0,141,0,1,153,0,3, + 17,0,2,49,0,6,63,128,12,1,0,8,1,0,24,7, + 128,18,21,63,20,1,0,48,0,128,240,1,128,16,3,0, + 16,6,0,16,4,0,16,12,0,16,24,0,16,16,0,16, + 48,0,16,96,0,16,71,128,16,204,192,253,152,64,3,0, + 192,2,0,128,6,1,128,12,7,0,8,12,0,24,24,0, + 48,48,0,96,63,192,19,21,63,20,0,0,60,0,0,102, + 0,96,3,0,192,3,1,128,6,3,0,28,6,0,6,12, + 0,3,8,0,1,24,0,1,48,0,195,33,128,102,99,128, + 60,194,128,1,134,128,1,12,128,3,8,128,6,24,128,12, + 31,192,24,0,128,48,0,128,0,3,192,11,20,40,20,4, + 250,14,0,31,0,14,0,0,0,0,0,0,0,0,0,4, + 0,4,0,12,0,24,0,112,0,64,0,192,0,128,0,128, + 0,192,32,96,32,49,224,31,0,19,26,78,20,0,0,6, + 0,0,3,0,0,1,128,0,0,192,0,0,96,0,0,0, + 0,0,0,0,31,224,0,0,160,0,1,176,0,1,16,0, + 1,16,0,3,24,0,2,8,0,2,8,0,6,12,0,4, + 4,0,4,4,0,12,6,0,15,254,0,8,2,0,24,3, + 0,16,1,0,16,1,0,48,1,128,254,15,224,19,26,78, + 20,0,0,0,12,0,0,24,0,0,48,0,0,96,0,0, + 192,0,0,0,0,0,0,0,31,224,0,0,160,0,1,176, + 0,1,16,0,1,16,0,3,24,0,2,8,0,2,8,0, + 6,12,0,4,4,0,4,4,0,12,6,0,15,254,0,8, + 2,0,24,3,0,16,1,0,16,1,0,48,1,128,254,15, + 224,19,26,78,20,0,0,0,64,0,0,224,0,1,176,0, + 3,24,0,6,12,0,0,0,0,0,0,0,31,224,0,0, + 160,0,1,176,0,1,16,0,1,16,0,3,24,0,2,8, + 0,2,8,0,6,12,0,4,4,0,4,4,0,12,6,0, + 15,254,0,8,2,0,24,3,0,16,1,0,16,1,0,48, + 1,128,254,15,224,19,24,72,20,0,0,3,132,0,6,236, + 0,4,56,0,0,0,0,0,0,0,31,224,0,0,160,0, + 1,176,0,1,16,0,1,16,0,3,24,0,2,8,0,2, + 8,0,6,12,0,4,4,0,4,4,0,12,6,0,15,254, + 0,8,2,0,24,3,0,16,1,0,16,1,0,48,1,128, + 254,15,224,19,24,72,20,0,0,6,12,0,15,30,0,6, + 12,0,0,0,0,0,0,0,31,224,0,0,160,0,1,176, + 0,1,16,0,1,16,0,3,24,0,2,8,0,2,8,0, + 6,12,0,4,4,0,4,4,0,12,6,0,15,254,0,8, + 2,0,24,3,0,16,1,0,16,1,0,48,1,128,254,15, + 224,19,26,78,20,0,0,0,224,0,1,176,0,1,16,0, + 1,16,0,1,176,0,0,224,0,0,0,0,31,224,0,0, + 160,0,1,176,0,1,16,0,1,16,0,3,24,0,2,8, + 0,2,8,0,6,12,0,4,4,0,4,4,0,12,6,0, + 15,254,0,8,2,0,24,3,0,16,1,0,16,1,0,48, + 1,128,254,15,224,18,19,57,20,1,0,31,255,128,2,64, + 128,2,64,128,6,64,128,4,64,128,4,64,128,4,64,0, + 12,68,0,8,68,0,8,124,0,8,68,0,24,68,0,31, + 192,0,16,64,0,48,64,64,32,64,64,32,64,64,32,64, + 64,251,255,192,15,24,48,20,2,251,7,196,28,116,48,12, + 96,12,64,4,192,4,128,0,128,0,128,0,128,0,128,0, + 128,0,128,0,192,0,64,2,96,4,48,28,28,112,7,192, + 1,0,1,0,1,128,4,192,7,128,15,26,52,20,1,0, + 12,0,6,0,3,0,1,128,0,192,0,0,0,0,255,252, + 16,4,16,4,16,4,16,4,16,4,16,64,16,64,16,64, + 31,192,16,64,16,64,16,0,16,2,16,2,16,2,16,2, + 16,2,255,254,15,26,52,20,1,0,0,48,0,96,0,192, + 1,128,3,0,0,0,0,0,255,252,16,4,16,4,16,4, + 16,4,16,4,16,64,16,64,16,64,31,192,16,64,16,64, + 16,0,16,2,16,2,16,2,16,2,16,2,255,254,15,26, + 52,20,1,0,0,128,1,192,3,96,6,48,12,24,0,0, + 0,0,255,252,16,4,16,4,16,4,16,4,16,4,16,64, + 16,64,16,64,31,192,16,64,16,64,16,0,16,2,16,2, + 16,2,16,2,16,2,255,254,15,24,48,20,1,0,12,48, + 30,120,12,48,0,0,0,0,255,252,16,4,16,4,16,4, + 16,4,16,4,16,64,16,64,16,64,31,192,16,64,16,64, + 16,0,16,2,16,2,16,2,16,2,16,2,255,254,11,26, + 52,20,4,0,48,0,24,0,12,0,6,0,3,0,0,0, + 0,0,255,224,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,255,224,11,26,52,20,4,0,0,192, + 1,128,3,0,6,0,12,0,0,0,0,0,255,224,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 255,224,11,26,52,20,4,0,4,0,14,0,27,0,49,128, + 96,192,0,0,0,0,255,224,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,255,224,11,24,48,20, + 4,0,96,192,241,224,96,192,0,0,0,0,255,224,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 255,224,15,19,38,20,1,0,255,192,32,112,32,24,32,12, + 32,4,32,6,32,2,32,2,32,2,254,2,32,2,32,2, + 32,2,32,6,32,4,32,12,32,24,32,112,255,192,18,24, + 72,20,0,0,3,132,0,6,236,0,4,56,0,0,0,0, + 0,0,0,248,31,192,28,1,0,20,1,0,22,1,0,18, + 1,0,19,1,0,17,129,0,16,129,0,16,193,0,16,65, + 0,16,97,0,16,33,0,16,49,0,16,25,0,16,9,0, + 16,13,0,16,5,0,16,7,0,127,3,0,15,26,52,20, + 2,0,24,0,12,0,6,0,3,0,1,128,0,0,0,0, + 7,192,28,112,48,24,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,32,8, + 48,24,28,112,7,192,15,26,52,20,2,0,0,24,0,48, + 0,96,0,192,1,128,0,0,0,0,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,192,6,64,4,96,12,32,8,48,24,28,112,7,192, + 15,26,52,20,2,0,1,0,3,128,6,192,12,96,24,48, + 0,0,0,0,7,192,28,112,48,24,96,12,64,4,192,6, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,32,8,48,24,28,112,7,192,15,24,48,20,2,0, + 14,16,27,176,16,224,0,0,0,0,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,192,6,64,4,96,12,32,8,48,24,28,112,7,192, + 15,24,48,20,2,0,48,48,120,120,48,48,0,0,0,0, + 7,192,28,112,48,24,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,32,8, + 48,24,28,112,7,192,13,14,28,20,3,1,128,8,192,24, + 96,48,48,96,24,192,13,128,7,0,7,0,13,128,24,192, + 48,96,96,48,192,24,128,8,16,21,42,20,2,255,0,1, + 7,195,28,118,48,28,32,24,96,60,64,36,192,102,128,194, + 129,130,129,2,131,2,134,2,204,6,72,4,120,12,48,8, + 48,24,124,48,199,224,128,0,17,26,78,20,1,0,6,0, + 0,3,0,0,1,128,0,0,192,0,0,96,0,0,0,0, + 0,0,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,17,26,78,20, + 1,0,0,24,0,0,48,0,0,96,0,0,192,0,1,128, + 0,0,0,0,0,0,0,254,63,128,32,2,0,32,2,0, + 32,2,0,32,2,0,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,48,6,0,16,4,0,24,12,0,14,56,0,3,224,0, + 17,26,78,20,1,0,0,128,0,1,192,0,3,96,0,6, + 48,0,12,24,0,0,0,0,0,0,0,254,63,128,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,32,2,0, + 32,2,0,32,2,0,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,48,6,0,16,4,0,24,12,0,14,56, + 0,3,224,0,17,24,72,20,1,0,12,24,0,30,60,0, + 12,24,0,0,0,0,0,0,0,254,63,128,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,32,2,0, + 32,2,0,48,6,0,16,4,0,24,12,0,14,56,0,3, + 224,0,15,26,52,20,2,0,0,48,0,96,0,192,1,128, + 3,0,0,0,0,0,248,62,96,12,48,24,16,16,24,48, + 8,32,12,96,6,192,2,128,3,128,1,0,1,0,1,0, + 1,0,1,0,1,0,1,0,1,0,31,240,16,19,38,20, + 1,0,254,0,16,0,16,0,16,0,31,224,16,60,16,6, + 16,2,16,3,16,3,16,2,16,6,16,60,31,224,16,0, + 16,0,16,0,16,0,254,0,15,21,42,20,1,0,7,192, + 12,96,8,32,24,48,16,16,16,16,16,16,16,48,16,96, + 17,192,16,112,16,24,16,4,16,6,16,2,16,2,16,2, + 17,6,17,4,17,140,248,248,15,22,44,20,2,0,24,0, + 12,0,6,0,3,0,1,128,0,0,0,0,0,0,15,128, + 56,224,0,32,0,48,0,16,0,16,31,240,112,48,192,16, + 128,16,128,16,128,48,192,240,127,158,15,22,44,20,2,0, + 0,96,0,192,1,128,3,0,6,0,0,0,0,0,0,0, + 15,128,56,224,0,32,0,48,0,16,0,16,31,240,112,48, + 192,16,128,16,128,16,128,48,192,240,127,158,15,22,44,20, + 2,0,1,0,3,128,6,192,12,96,24,48,0,0,0,0, + 0,0,15,128,56,224,0,32,0,48,0,16,0,16,31,240, + 112,48,192,16,128,16,128,16,128,48,192,240,127,158,15,20, + 40,20,2,0,14,16,27,176,16,224,0,0,0,0,0,0, + 15,128,56,224,0,32,0,48,0,16,0,16,31,240,112,48, + 192,16,128,16,128,16,128,48,192,240,127,158,15,20,40,20, + 2,0,48,192,121,224,48,192,0,0,0,0,0,0,15,128, + 56,224,0,32,0,48,0,16,0,16,31,240,112,48,192,16, + 128,16,128,16,128,48,192,240,127,158,15,23,46,20,2,0, + 7,0,13,128,8,128,8,128,13,128,7,0,0,0,0,0, + 0,0,15,128,56,224,0,32,0,48,0,16,0,16,31,240, + 112,48,192,16,128,16,128,16,128,48,192,240,127,158,19,14, + 42,20,0,0,31,15,128,113,152,192,0,240,64,0,96,96, + 0,96,32,30,64,32,115,255,224,192,192,0,128,64,0,128, + 96,0,128,224,0,193,80,96,99,88,192,62,79,128,14,19, + 38,20,3,251,15,200,56,104,96,24,64,24,192,8,128,8, + 128,0,128,0,128,0,192,0,64,4,96,28,56,112,15,192, + 2,0,2,0,3,0,9,128,15,0,14,22,44,20,2,0, + 24,0,12,0,6,0,3,0,1,128,0,0,0,0,0,0, + 15,192,56,112,96,24,64,8,192,12,128,4,255,252,128,0, + 128,0,128,0,192,0,96,12,56,56,15,224,14,22,44,20, + 2,0,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,15,192,56,112,96,24,64,8,192,12,128,4,255,252, + 128,0,128,0,128,0,192,0,96,12,56,56,15,224,14,22, + 44,20,2,0,1,0,3,128,6,192,12,96,24,48,0,0, + 0,0,0,0,15,192,56,112,96,24,64,8,192,12,128,4, + 255,252,128,0,128,0,128,0,192,0,96,12,56,56,15,224, + 14,20,40,20,2,0,48,96,120,240,48,96,0,0,0,0, + 0,0,15,192,56,112,96,24,64,8,192,12,128,4,255,252, + 128,0,128,0,128,0,192,0,96,12,56,56,15,224,13,22, + 44,20,3,0,48,0,24,0,12,0,6,0,3,0,0,0, + 0,0,0,0,126,0,2,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,255,248, + 13,22,44,20,3,0,0,192,1,128,3,0,6,0,12,0, + 0,0,0,0,0,0,126,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0, + 255,248,13,21,42,20,3,0,4,0,14,0,27,0,49,128, + 96,192,0,0,0,0,126,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0, + 255,248,13,20,40,20,3,0,97,128,243,192,97,128,0,0, + 0,0,0,0,126,0,2,0,2,0,2,0,2,0,2,0, + 2,0,2,0,2,0,2,0,2,0,2,0,2,0,255,248, + 15,20,40,20,2,0,124,12,79,56,1,224,3,192,14,96, + 56,48,32,24,0,12,15,228,56,54,96,14,192,6,128,2, + 128,2,128,2,192,6,64,4,96,12,24,56,15,224,15,20, + 40,20,2,0,14,16,27,176,16,224,0,0,0,0,0,0, + 227,192,46,112,56,16,48,24,32,8,32,8,32,8,32,8, + 32,8,32,8,32,8,32,8,32,8,248,62,15,22,44,20, + 2,0,12,0,6,0,3,0,1,128,0,192,0,0,0,0, + 0,0,15,224,56,56,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,15,224,15,22, + 44,20,2,0,0,48,0,96,0,192,1,128,3,0,0,0, + 0,0,0,0,15,224,56,56,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,192,6,64,4,96,12,56,56,15,224, + 15,22,44,20,2,0,1,128,3,192,6,96,12,48,24,24, + 0,0,0,0,0,0,15,224,56,56,96,12,64,4,192,6, + 128,2,128,2,128,2,128,2,192,6,64,4,96,12,56,56, + 15,224,15,20,40,20,2,0,14,16,27,176,16,224,0,0, + 0,0,0,0,15,224,56,56,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,192,6,64,4,96,12,56,56,15,224, + 15,20,40,20,2,0,24,96,60,240,24,96,0,0,0,0, + 0,0,15,224,56,56,96,12,64,4,192,6,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,15,224,14,16, + 32,20,2,1,3,0,7,128,3,0,0,0,0,0,0,0, + 0,0,0,0,255,252,0,0,0,0,0,0,0,0,3,0, + 7,128,3,0,15,16,32,20,2,255,0,2,7,230,28,60, + 48,24,64,52,192,102,128,194,129,130,131,2,134,2,204,6, + 88,4,112,24,120,112,207,192,128,0,16,22,44,20,1,0, + 12,0,6,0,3,0,1,128,0,192,0,0,0,0,0,0, + 240,60,16,4,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,12,24,28,12,52,7,231,16,22,44,20, + 1,0,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,240,60,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,4,16,12,24,28,12,52,7,231,16,21, + 42,20,1,0,0,128,1,192,3,96,6,48,12,24,0,0, + 0,0,240,60,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,4,16,12,24,28,12,52,7,231,16,20, + 40,20,1,0,24,48,60,120,24,48,0,0,0,0,0,0, + 240,60,16,4,16,4,16,4,16,4,16,4,16,4,16,4, + 16,4,16,4,16,12,24,28,12,52,7,231,15,28,56,20, + 2,250,0,48,0,96,0,192,1,128,3,0,0,0,0,0, + 0,0,248,62,64,4,96,12,32,8,48,24,16,16,24,48, + 8,32,12,96,4,64,6,192,2,128,3,128,1,0,3,0, + 2,0,2,0,6,0,4,0,127,128,17,27,81,20,0,250, + 240,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,17,248,0,23,14,0,28,3,0,24,1, + 0,24,1,128,16,0,128,16,0,128,16,0,128,16,0,128, + 24,1,128,24,1,0,28,3,0,23,14,0,17,248,0,16, + 0,0,16,0,0,16,0,0,16,0,0,16,0,0,255,0, + 0,15,25,50,20,2,250,24,24,60,60,24,24,0,0,0, + 0,248,62,64,4,96,12,32,8,48,24,16,16,24,48,8, + 32,12,96,4,64,6,192,2,128,3,128,1,0,3,0,2, + 0,2,0,6,0,4,0,127,128}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=15 h=25 x= 7 y= 9 dx=20 dy= 0 ascent=22 len=50 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =22 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24n[638] U8G_SECTION(".progmem.u8g_font_courR24n") = { + 0,28,42,250,246,20,0,0,0,0,42,57,0,22,252,20, + 0,11,13,26,20,4,8,4,0,4,0,4,0,4,0,132, + 32,245,224,31,0,14,0,10,0,27,0,49,128,32,128,96, + 192,15,17,34,20,2,1,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,255,254,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,6,9,9,20,5,252,60, + 60,120,120,96,224,192,192,128,15,1,2,20,2,9,255,254, + 5,4,4,20,7,0,112,248,248,112,11,25,50,20,4,253, + 0,32,0,96,0,64,0,64,0,192,0,128,1,128,1,0, + 3,0,2,0,2,0,6,0,4,0,12,0,8,0,8,0, + 24,0,16,0,48,0,32,0,96,0,64,0,64,0,192,0, + 128,0,11,20,40,20,4,0,31,0,49,128,96,192,64,64, + 64,64,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 128,32,128,32,192,96,64,64,64,64,96,192,49,128,31,0, + 11,20,40,20,4,0,12,0,60,0,228,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,255,224,13,20, + 40,20,3,0,15,192,48,96,96,16,64,16,64,16,0,16, + 0,48,0,32,0,96,0,192,1,128,3,0,6,0,12,0, + 24,0,48,0,96,0,192,0,128,8,255,248,13,20,40,20, + 3,0,15,128,56,224,96,48,0,16,0,16,0,16,0,16, + 0,32,0,64,7,128,0,96,0,16,0,8,0,8,0,8, + 0,8,0,24,192,48,112,224,31,128,13,20,40,20,3,0, + 0,192,1,64,1,64,2,64,6,64,4,64,8,64,24,64, + 16,64,32,64,96,64,64,64,128,64,255,248,0,64,0,64, + 0,64,0,64,0,64,3,248,13,20,40,20,3,0,63,240, + 32,0,32,0,32,0,32,0,32,0,32,0,39,128,60,224, + 32,48,0,16,0,24,0,8,0,8,0,8,0,24,192,16, + 96,48,56,224,15,128,12,20,40,20,4,0,7,192,28,32, + 48,0,32,0,96,0,64,0,192,0,143,128,184,224,160,32, + 192,48,192,16,192,16,192,16,192,16,64,16,96,48,32,32, + 56,224,15,128,11,20,40,20,4,0,255,224,128,32,128,32, + 0,96,0,64,0,64,0,192,0,128,0,128,1,128,1,0, + 1,0,3,0,2,0,2,0,2,0,6,0,4,0,4,0, + 4,0,11,20,40,20,4,0,31,0,96,192,64,64,192,96, + 128,32,128,32,192,96,64,64,49,128,31,0,113,192,64,64, + 192,96,128,32,128,32,128,32,192,96,64,64,113,192,31,0, + 12,20,40,20,4,0,31,0,112,192,64,96,192,32,128,48, + 128,48,128,48,128,48,192,80,64,208,115,144,30,16,0,32, + 0,32,0,32,0,64,0,192,1,128,14,0,120,0}; +/* + Fontname: -Adobe-Courier-Medium-R-Normal--34-240-100-100-M-200-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 20 + Calculated Max Values w=19 h=26 x= 9 y=17 dx=20 dy= 0 ascent=22 len=60 + Font Bounding box w=28 h=42 x=-6 y=-10 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_courR24r[3991] U8G_SECTION(".progmem.u8g_font_courR24r") = { + 0,28,42,250,246,19,4,184,10,129,32,127,250,22,250,21, + 250,0,0,0,20,0,1,5,21,21,20,8,0,32,112,112, + 112,112,112,32,32,32,32,32,32,32,32,0,0,0,0,112, + 248,112,11,10,20,20,4,10,241,224,241,224,241,224,241,224, + 241,224,96,192,96,192,64,128,64,128,64,128,13,23,46,20, + 3,254,4,64,4,64,4,64,4,64,12,192,8,128,8,128, + 8,128,127,248,8,128,8,128,8,128,8,128,8,128,255,240, + 8,128,8,128,8,128,9,128,17,0,17,0,17,0,17,0, + 12,25,50,20,4,253,4,0,4,0,4,0,31,32,113,224, + 64,96,128,32,128,0,192,0,96,0,60,0,7,128,0,224, + 0,48,0,16,0,16,128,48,192,96,241,192,159,0,4,0, + 4,0,4,0,4,0,4,0,15,20,40,20,3,0,30,0, + 51,0,97,128,64,128,64,128,97,128,51,0,30,14,0,112, + 3,128,28,0,224,0,1,224,3,48,6,24,4,8,4,8, + 6,24,3,48,1,224,12,17,34,20,3,0,15,192,25,128, + 48,0,32,0,32,0,48,0,16,0,24,0,60,0,100,48, + 70,96,194,64,131,64,193,192,65,128,99,192,62,112,4,11, + 11,20,8,10,112,112,112,112,112,224,224,224,224,224,224,5, + 25,25,20,9,252,8,24,16,48,32,96,96,64,64,192,192, + 192,192,192,192,192,64,64,96,96,32,48,16,24,8,5,25, + 25,20,5,252,128,192,64,96,32,48,48,16,16,24,24,24, + 24,24,24,24,16,16,48,48,32,96,64,192,128,11,13,26, + 20,4,8,4,0,4,0,4,0,4,0,132,32,245,224,31, + 0,14,0,10,0,27,0,49,128,32,128,96,192,15,17,34, + 20,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,255,254,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,6,9,9,20,5,252,60,60,120,120,96, + 224,192,192,128,15,1,2,20,2,9,255,254,5,4,4,20, + 7,0,112,248,248,112,11,25,50,20,4,253,0,32,0,96, + 0,64,0,64,0,192,0,128,1,128,1,0,3,0,2,0, + 2,0,6,0,4,0,12,0,8,0,8,0,24,0,16,0, + 48,0,32,0,96,0,64,0,64,0,192,0,128,0,11,20, + 40,20,4,0,31,0,49,128,96,192,64,64,64,64,128,32, + 128,32,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 192,96,64,64,64,64,96,192,49,128,31,0,11,20,40,20, + 4,0,12,0,60,0,228,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0, + 4,0,4,0,4,0,4,0,255,224,13,20,40,20,3,0, + 15,192,48,96,96,16,64,16,64,16,0,16,0,48,0,32, + 0,96,0,192,1,128,3,0,6,0,12,0,24,0,48,0, + 96,0,192,0,128,8,255,248,13,20,40,20,3,0,15,128, + 56,224,96,48,0,16,0,16,0,16,0,16,0,32,0,64, + 7,128,0,96,0,16,0,8,0,8,0,8,0,8,0,24, + 192,48,112,224,31,128,13,20,40,20,3,0,0,192,1,64, + 1,64,2,64,6,64,4,64,8,64,24,64,16,64,32,64, + 96,64,64,64,128,64,255,248,0,64,0,64,0,64,0,64, + 0,64,3,248,13,20,40,20,3,0,63,240,32,0,32,0, + 32,0,32,0,32,0,32,0,39,128,60,224,32,48,0,16, + 0,24,0,8,0,8,0,8,0,24,192,16,96,48,56,224, + 15,128,12,20,40,20,4,0,7,192,28,32,48,0,32,0, + 96,0,64,0,192,0,143,128,184,224,160,32,192,48,192,16, + 192,16,192,16,192,16,64,16,96,48,32,32,56,224,15,128, + 11,20,40,20,4,0,255,224,128,32,128,32,0,96,0,64, + 0,64,0,192,0,128,0,128,1,128,1,0,1,0,3,0, + 2,0,2,0,2,0,6,0,4,0,4,0,4,0,11,20, + 40,20,4,0,31,0,96,192,64,64,192,96,128,32,128,32, + 192,96,64,64,49,128,31,0,113,192,64,64,192,96,128,32, + 128,32,128,32,192,96,64,64,113,192,31,0,12,20,40,20, + 4,0,31,0,112,192,64,96,192,32,128,48,128,48,128,48, + 128,48,192,80,64,208,115,144,30,16,0,32,0,32,0,32, + 0,64,0,192,1,128,14,0,120,0,5,14,14,20,7,0, + 112,248,248,112,0,0,0,0,0,0,112,248,248,112,7,18, + 18,20,5,252,28,62,62,28,0,0,0,0,0,60,60,120, + 112,112,224,192,192,128,15,17,34,20,2,1,0,2,0,14, + 0,56,0,224,3,128,6,0,28,0,112,0,192,0,112,0, + 28,0,6,0,3,128,0,224,0,56,0,14,0,2,15,6, + 12,20,2,6,255,254,0,0,0,0,0,0,0,0,255,254, + 15,17,34,20,2,1,128,0,224,0,56,0,14,0,3,128, + 0,192,0,112,0,28,0,6,0,28,0,112,0,192,3,128, + 14,0,56,0,224,0,128,0,11,19,38,20,4,0,63,0, + 225,192,128,64,128,64,0,96,0,32,0,96,0,64,1,192, + 7,0,4,0,4,0,4,0,0,0,0,0,0,0,14,0, + 31,0,14,0,12,23,46,20,3,254,15,128,24,192,48,64, + 96,96,64,32,192,32,128,32,128,224,131,160,134,32,132,32, + 132,32,132,32,134,32,131,32,129,240,128,0,192,0,64,0, + 96,0,48,0,24,224,15,128,19,19,57,20,0,0,31,224, + 0,0,160,0,0,160,0,1,16,0,1,16,0,1,16,0, + 2,8,0,2,8,0,2,8,0,4,4,0,4,4,0,4, + 4,0,15,254,0,8,2,0,8,2,0,16,1,0,16,1, + 0,48,1,128,254,15,224,16,19,38,20,1,0,255,240,16, + 12,16,4,16,6,16,2,16,2,16,6,16,4,16,12,31, + 248,16,6,16,2,16,3,16,1,16,1,16,3,16,2,16, + 6,255,248,14,19,38,20,2,0,7,196,28,116,32,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 0,128,0,192,0,64,0,96,4,32,28,28,112,7,192,15, + 19,38,20,1,0,255,192,32,112,32,24,32,12,32,4,32, + 6,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 6,32,4,32,12,32,24,32,112,255,192,15,19,38,20,1, + 0,255,252,16,4,16,4,16,4,16,4,16,68,16,64,16, + 64,31,192,16,64,16,64,16,64,16,0,16,2,16,2,16, + 2,16,2,16,2,255,254,15,19,38,20,1,0,255,254,16, + 2,16,2,16,2,16,2,16,66,16,64,16,64,31,192,16, + 64,16,64,16,64,16,0,16,0,16,0,16,0,16,0,16, + 0,255,128,15,19,38,20,2,0,7,196,28,116,48,12,96, + 4,64,4,192,4,128,0,128,0,128,0,128,0,128,0,128, + 254,128,4,192,4,64,4,96,4,48,4,28,28,7,240,15, + 19,38,20,2,0,252,126,32,8,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,63,248,32,8,32,8,32,8,32, + 8,32,8,32,8,32,8,32,8,252,126,11,19,38,20,4, + 0,255,224,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4, + 0,4,0,4,0,255,224,15,19,38,20,3,0,15,254,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0, + 32,0,32,128,32,128,32,128,32,128,32,192,96,64,64,97, + 192,31,0,17,19,57,20,1,0,254,31,128,16,4,0,16, + 12,0,16,8,0,16,16,0,16,48,0,16,64,0,16,192, + 0,19,128,0,28,192,0,16,32,0,16,48,0,16,16,0, + 16,24,0,16,8,0,16,8,0,16,12,0,16,4,0,254, + 7,128,15,19,38,20,2,0,255,128,8,0,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,2,8,2,8,2,8,2,8,2,8,2,255,254,19,19, + 57,20,0,0,248,3,224,40,2,128,40,2,128,36,4,128, + 36,4,128,34,8,128,34,8,128,33,16,128,33,16,128,33, + 16,128,32,160,128,32,160,128,32,64,128,32,64,128,32,0, + 128,32,0,128,32,0,128,32,0,128,254,7,224,18,19,57, + 20,0,0,248,31,192,28,1,0,20,1,0,18,1,0,18, + 1,0,17,1,0,16,129,0,16,129,0,16,65,0,16,65, + 0,16,33,0,16,33,0,16,17,0,16,17,0,16,9,0, + 16,9,0,16,5,0,16,7,0,127,3,0,15,19,38,20, + 2,0,7,192,24,48,48,24,96,12,64,4,192,6,128,2, + 128,2,128,2,128,2,128,2,128,2,128,2,192,6,64,4, + 96,12,48,24,24,48,7,192,15,19,38,20,1,0,255,224, + 16,56,16,4,16,6,16,2,16,2,16,2,16,6,16,4, + 16,56,31,224,16,0,16,0,16,0,16,0,16,0,16,0, + 16,0,255,192,15,22,44,20,2,253,7,192,28,112,48,24, + 96,12,64,4,192,6,128,2,128,2,128,2,128,2,128,2, + 128,2,128,2,192,6,64,4,96,12,56,56,12,96,7,192, + 2,0,15,198,24,124,18,19,57,20,1,0,255,224,0,16, + 56,0,16,4,0,16,6,0,16,2,0,16,2,0,16,6, + 0,16,4,0,16,24,0,31,224,0,16,96,0,16,48,0, + 16,24,0,16,12,0,16,4,0,16,6,0,16,2,0,16, + 3,0,254,1,192,12,19,38,20,3,0,15,144,56,208,96, + 48,64,48,64,16,64,16,64,0,96,0,56,0,15,0,1, + 192,0,96,0,48,128,16,128,16,192,16,224,48,184,224,143, + 128,15,19,38,20,2,0,255,254,129,2,129,2,129,2,129, + 2,129,2,129,2,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,63,248,17,19,57, + 20,1,0,254,63,128,32,2,0,32,2,0,32,2,0,32, + 2,0,32,2,0,32,2,0,32,2,0,32,2,0,32,2, + 0,32,2,0,32,2,0,32,2,0,32,2,0,48,6,0, + 16,4,0,24,12,0,14,56,0,3,224,0,19,19,57,20, + 0,0,254,15,224,48,1,128,16,1,0,16,1,0,24,3, + 0,8,2,0,8,2,0,12,6,0,4,4,0,4,4,0, + 6,12,0,2,8,0,3,24,0,1,16,0,1,16,0,0, + 160,0,0,160,0,0,224,0,0,64,0,17,19,57,20,1, + 0,252,31,128,64,1,0,64,1,0,64,1,0,64,1,0, + 97,195,0,33,66,0,33,66,0,34,34,0,34,34,0,34, + 34,0,34,34,0,38,50,0,36,18,0,52,22,0,20,20, + 0,20,20,0,24,12,0,24,12,0,17,19,57,20,1,0, + 124,31,0,48,6,0,16,4,0,24,12,0,8,8,0,4, + 16,0,2,32,0,3,96,0,1,192,0,0,128,0,1,192, + 0,2,32,0,4,16,0,12,24,0,8,8,0,16,4,0, + 48,6,0,96,3,0,252,31,128,15,19,38,20,2,0,248, + 62,96,12,48,24,16,16,24,48,8,32,4,64,6,192,2, + 128,3,128,1,0,1,0,1,0,1,0,1,0,1,0,1, + 0,1,0,31,240,13,19,38,20,3,0,127,240,64,16,64, + 48,64,32,64,96,64,192,0,128,1,128,3,0,6,0,4, + 0,12,0,24,8,16,8,48,8,96,8,64,8,192,8,255, + 248,5,24,24,20,9,252,248,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,248,11, + 25,50,20,4,253,128,0,192,0,64,0,64,0,96,0,32, + 0,48,0,16,0,24,0,8,0,8,0,12,0,4,0,6, + 0,2,0,2,0,3,0,1,0,1,128,0,128,0,192,0, + 64,0,64,0,96,0,32,5,24,24,20,5,252,248,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,248,11,9,18,20,4,12,4,0,14,0,27, + 0,17,0,49,128,96,192,64,64,192,96,128,32,19,1,3, + 20,0,250,255,255,224,6,5,5,20,4,17,192,96,48,24, + 12,15,14,28,20,2,0,15,128,56,224,0,32,0,48,0, + 16,0,16,31,240,112,48,192,16,128,16,128,16,128,48,192, + 240,127,158,17,20,60,20,0,0,240,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,17,248,0,23,14, + 0,20,3,0,24,1,0,24,1,128,16,0,128,16,0,128, + 16,0,128,16,0,128,24,1,128,24,1,0,20,3,0,23, + 14,0,241,248,0,14,14,28,20,3,0,15,136,56,248,96, + 24,64,8,192,8,128,0,128,0,128,0,128,0,192,0,64, + 12,96,24,56,224,15,128,17,20,60,20,2,0,0,60,0, + 0,4,0,0,4,0,0,4,0,0,4,0,0,4,0,15, + 196,0,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,199,128,14,14,28,20,2,0,15, + 192,56,112,96,24,64,8,192,12,128,4,255,252,128,0,128, + 0,192,0,64,0,96,12,56,56,15,224,13,20,40,20,3, + 0,3,224,6,24,4,0,12,0,8,0,8,0,255,240,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,255,240,17,20,60,20,2,250,15, + 199,128,56,116,0,96,20,0,64,12,0,192,12,0,128,4, + 0,128,4,0,128,4,0,128,4,0,192,12,0,64,12,0, + 96,20,0,56,116,0,15,196,0,0,4,0,0,4,0,0, + 12,0,0,8,0,0,56,0,15,224,0,16,20,40,20,1, + 0,240,0,16,0,16,0,16,0,16,0,16,0,17,224,23, + 56,20,8,24,12,24,4,16,4,16,4,16,4,16,4,16, + 4,16,4,16,4,16,4,124,31,13,20,40,20,3,0,6, + 0,6,0,6,0,0,0,0,0,0,0,126,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,255,248,10,26,52,20,4,250,1,128,1, + 128,1,128,0,0,0,0,0,0,255,192,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0, + 64,0,64,0,64,0,64,0,64,0,192,0,128,3,128,254, + 0,15,20,40,20,2,0,240,0,16,0,16,0,16,0,16, + 0,16,0,16,252,16,48,16,96,16,192,17,128,19,0,30, + 0,19,0,17,128,16,192,16,96,16,48,16,24,240,62,13, + 20,40,20,3,0,126,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,248,19,14,42, + 20,0,0,231,14,0,41,147,0,48,225,128,48,96,128,32, + 64,128,32,64,128,32,64,128,32,64,128,32,64,128,32,64, + 128,32,64,128,32,64,128,32,64,128,248,112,224,15,14,28, + 20,2,0,227,192,46,112,40,16,48,24,48,8,32,8,32, + 8,32,8,32,8,32,8,32,8,32,8,32,8,248,62,15, + 14,28,20,2,0,15,224,56,56,96,12,64,4,192,6,128, + 2,128,2,128,2,128,2,192,6,64,4,96,12,56,56,15, + 224,17,20,60,20,0,250,1,248,0,247,14,0,20,3,0, + 24,1,0,24,1,128,16,0,128,16,0,128,16,0,128,16, + 0,128,24,1,128,24,1,0,20,3,0,23,14,0,17,248, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 255,0,0,17,20,60,20,2,250,15,192,0,56,119,128,96, + 28,0,64,12,0,192,12,0,128,4,0,128,4,0,128,4, + 0,128,4,0,192,12,0,64,12,0,96,28,0,56,116,0, + 15,196,0,0,4,0,0,4,0,0,4,0,0,4,0,0, + 4,0,0,127,128,15,14,28,20,3,0,120,124,9,198,11, + 0,12,0,12,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,255,240,13,14,28,20,3,0,15,144,56, + 240,96,48,64,16,96,0,56,0,15,128,0,224,0,48,128, + 24,128,24,192,48,248,224,143,128,14,19,38,20,2,0,16, + 0,16,0,16,0,16,0,16,0,255,240,16,0,16,0,16, + 0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,24, + 12,12,56,7,224,16,14,28,20,1,0,240,60,16,4,16, + 4,16,4,16,4,16,4,16,4,16,4,16,4,16,4,16, + 12,24,12,12,52,7,231,17,14,42,20,1,0,252,31,128, + 48,6,0,16,4,0,16,4,0,24,12,0,8,8,0,12, + 24,0,4,16,0,4,16,0,6,48,0,2,32,0,3,96, + 0,1,64,0,1,192,0,17,14,42,20,1,0,248,15,128, + 96,3,0,32,2,0,32,2,0,33,194,0,33,66,0,49, + 70,0,19,100,0,18,36,0,18,36,0,22,52,0,28,28, + 0,8,8,0,8,8,0,15,14,28,20,2,0,248,62,96, + 12,48,24,24,48,12,96,6,192,3,128,3,128,6,192,12, + 96,24,48,48,24,96,12,248,62,15,20,40,20,2,250,248, + 62,64,4,96,12,32,8,48,24,16,16,24,48,8,32,12, + 96,4,64,6,192,2,128,3,128,1,0,3,0,2,0,2, + 0,6,0,4,0,255,128,11,14,28,20,4,0,255,224,128, + 96,128,192,129,128,3,0,6,0,4,0,12,0,24,0,48, + 0,96,32,64,32,192,32,255,224,7,25,25,20,6,252,6, + 12,24,16,16,16,16,16,16,16,16,48,96,224,48,16,16, + 16,16,16,16,16,16,24,14,1,25,25,20,9,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,7,25,25,20,6,252,192,96,48, + 16,16,16,16,16,16,16,16,24,12,14,24,16,16,16,16, + 16,16,16,16,48,224,13,5,10,20,3,7,24,0,124,8, + 199,24,129,176,0,224,255}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 3, '1' Height: 11 + Calculated Max Values w=16 h=17 x= 7 y= 6 dx=19 dy= 0 ascent=17 len=34 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 1 + X Font ascent =12 descent= 0 + Max Font ascent =17 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[3981] U8G_SECTION(".progmem.u8g_font_cu12_67_75") = { + 0,40,30,247,246,3,2,98,5,14,32,255,1,17,254,12, + 0,11,5,10,12,1,4,2,128,1,64,255,224,1,64,2, + 128,5,11,11,6,1,1,32,32,32,32,32,32,168,112,168, + 112,32,11,5,10,12,1,4,32,96,65,128,255,0,65,128, + 32,96,11,5,10,12,1,4,192,128,48,64,31,224,48,64, + 192,128,11,7,14,12,1,3,0,32,32,32,64,32,255,224, + 64,32,32,32,0,32,7,11,11,8,1,1,16,56,84,16, + 16,16,16,16,16,16,254,11,7,14,12,1,3,128,0,128, + 128,128,64,255,224,128,64,128,128,128,0,7,11,11,8,1, + 1,254,16,16,16,16,16,16,16,84,56,16,7,11,11,8, + 1,1,16,56,84,16,16,16,16,16,84,56,254,11,7,14, + 12,1,4,1,192,0,32,32,32,64,32,255,192,64,0,32, + 0,11,7,14,12,1,4,112,0,128,0,128,128,128,64,127, + 224,0,64,0,128,11,7,14,12,1,4,1,192,2,32,34, + 32,66,32,255,192,66,0,34,0,11,7,14,12,1,4,112, + 0,136,0,136,128,136,64,127,224,8,64,8,128,12,5,10, + 13,1,4,38,64,73,32,233,112,80,160,32,64,12,5,10, + 13,1,4,33,64,66,32,255,240,68,32,40,64,4,11,11, + 5,1,1,16,16,32,64,176,208,32,160,160,192,240,6,11, + 11,7,1,1,32,64,252,68,36,4,4,4,4,4,4,6, + 11,11,7,1,1,16,8,252,136,144,128,128,128,128,128,128, + 6,11,11,7,1,1,4,4,4,4,4,4,36,68,252,64, + 32,6,11,11,7,1,1,128,128,128,128,128,128,144,136,252, + 8,16,8,6,6,9,1,2,252,4,4,21,14,4,6,8, + 8,7,1,1,4,4,4,36,68,252,64,32,11,8,16,11, + 1,1,15,128,16,64,32,32,32,32,32,32,168,32,112,0, + 32,0,11,8,16,11,1,1,62,0,65,0,128,128,128,128, + 128,128,130,160,1,192,0,128,9,11,22,10,1,1,255,128, + 0,0,240,0,192,0,160,0,144,0,8,0,4,0,2,0, + 1,0,0,128,12,13,26,13,1,0,128,0,144,0,160,0, + 255,240,160,0,144,0,128,16,0,144,0,80,255,240,0,80, + 0,144,0,16,10,7,14,11,1,2,3,192,67,0,130,128, + 130,128,128,128,65,0,62,0,10,7,14,11,1,2,240,0, + 48,128,80,64,80,64,64,64,32,128,31,0,11,3,6,12, + 1,6,32,0,64,0,255,224,11,3,6,12,1,6,255,224, + 64,0,32,0,3,11,11,4,1,1,128,192,160,128,128,128, + 128,128,128,128,128,3,11,11,4,1,1,32,96,160,32,32, + 32,32,32,32,32,32,11,3,6,12,1,6,0,128,0,64, + 255,224,11,3,6,12,1,6,255,224,0,64,0,128,3,11, + 11,4,1,1,128,128,128,128,128,128,128,128,160,192,128,3, + 11,11,4,1,1,32,32,32,32,32,32,32,32,160,96,32, + 11,11,22,12,1,1,0,128,0,64,255,224,0,64,0,128, + 0,0,32,0,64,0,255,224,64,0,32,0,11,11,22,12, + 1,1,32,128,112,128,168,128,32,128,32,128,32,128,32,128, + 32,128,34,160,33,192,32,128,11,11,22,12,1,1,32,0, + 64,0,255,224,64,0,32,0,0,0,0,128,0,64,255,224, + 0,64,0,128,11,11,22,12,1,1,32,0,64,0,255,224, + 64,0,32,0,0,0,32,0,64,0,255,224,64,0,32,0, + 11,11,22,12,1,1,32,128,113,192,170,160,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,11,11,22,12, + 1,1,0,128,0,64,255,224,0,64,0,128,0,0,0,128, + 0,64,255,224,0,64,0,128,11,11,22,12,1,1,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,32,128,170,160, + 113,192,32,128,11,8,16,12,1,3,32,0,64,0,255,224, + 0,0,0,0,255,224,0,64,0,128,11,8,16,12,1,3, + 0,128,0,64,255,224,0,0,0,0,255,224,64,0,32,0, + 11,7,14,12,1,3,16,128,32,128,127,224,129,0,127,224, + 34,0,18,0,13,7,14,14,1,3,17,64,33,32,127,240, + 130,8,127,240,36,32,20,64,11,7,14,12,1,3,9,0, + 8,128,255,192,16,32,255,192,32,128,33,0,11,7,14,12, + 1,3,16,0,32,0,127,224,128,0,127,224,32,0,16,0, + 7,11,11,8,1,1,16,40,108,170,40,40,40,40,40,40, + 40,11,7,14,12,1,3,1,0,0,128,255,192,0,32,255, + 192,0,128,1,0,7,11,11,8,1,1,40,40,40,40,40, + 40,40,170,108,40,16,12,7,14,12,1,3,16,128,32,64, + 127,224,128,16,127,224,32,64,16,128,7,12,12,8,1,0, + 16,40,108,170,40,40,40,40,170,108,40,16,10,10,20,11, + 1,1,248,0,144,0,136,0,196,0,162,0,17,0,8,128, + 4,64,2,0,1,0,10,10,20,11,1,1,7,192,2,64, + 4,64,8,192,17,64,34,0,68,0,136,0,16,0,32,0, + 10,10,20,11,1,1,32,0,16,0,136,0,68,0,34,0, + 17,64,8,192,4,64,2,64,7,192,10,10,20,11,1,1, + 1,0,2,0,4,64,8,128,17,0,162,0,196,0,136,0, + 144,0,248,0,11,7,14,12,1,3,16,0,63,224,64,0, + 255,224,64,0,63,224,16,0,11,7,14,12,1,3,1,0, + 255,128,0,64,255,224,0,64,255,128,1,0,12,5,10,13, + 1,4,32,0,72,128,245,80,66,32,32,0,12,5,10,13, + 1,4,0,64,17,32,170,240,68,32,0,64,5,11,11,6, + 1,1,32,112,168,32,32,248,32,248,32,32,32,5,11,11, + 6,1,1,32,32,32,248,32,248,32,32,168,112,32,11,5, + 10,12,1,4,32,0,64,0,238,224,64,0,32,0,5,11, + 11,6,1,1,32,112,168,0,32,32,32,0,32,32,32,11, + 5,10,12,1,4,0,128,0,64,238,224,0,64,0,128,5, + 11,11,6,1,1,32,32,32,0,32,32,32,0,168,112,32, + 12,7,14,13,1,3,128,0,144,0,160,0,255,240,160,0, + 144,0,128,0,12,7,14,13,1,3,0,16,0,144,0,80, + 255,240,0,80,0,144,0,16,12,9,18,13,1,2,8,0, + 24,0,47,240,64,16,128,16,64,16,47,240,24,0,8,0, + 9,12,24,10,1,1,8,0,20,0,34,0,65,0,227,128, + 34,0,34,0,34,0,34,0,34,0,34,0,62,0,12,9, + 18,13,1,2,1,0,1,128,255,64,128,32,128,16,128,32, + 255,64,1,128,1,0,9,12,24,10,1,1,62,0,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,65,0,34,0, + 20,0,8,0,9,17,34,10,1,0,8,0,20,0,34,0, + 65,0,227,128,34,0,34,0,34,0,34,0,34,0,34,0, + 62,0,0,0,62,0,34,0,34,0,62,0,9,14,28,10, + 1,0,8,0,20,0,34,0,65,0,227,128,34,0,34,0, + 34,0,34,0,34,0,34,0,227,128,128,128,255,128,9,14, + 28,10,1,0,8,0,20,0,62,0,65,0,227,128,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,128,128,255,128, + 9,14,28,10,1,0,8,0,28,0,42,0,73,0,235,128, + 42,0,42,0,42,0,42,0,42,0,42,0,235,128,136,128, + 255,128,9,15,30,10,1,2,8,0,20,0,34,0,73,0, + 213,128,34,0,65,0,227,128,34,0,34,0,34,0,34,0, + 34,0,34,0,62,0,9,17,34,10,1,0,8,0,20,0, + 34,0,73,0,213,128,34,0,65,0,227,128,34,0,34,0, + 34,0,34,0,34,0,34,0,227,128,128,128,255,128,14,9, + 18,16,2,2,224,64,160,96,191,208,128,24,128,20,128,24, + 191,208,160,96,224,64,11,11,22,12,1,1,255,224,128,0, + 188,0,176,0,168,0,164,0,130,0,129,0,128,128,128,64, + 128,32,11,11,22,12,1,1,128,32,64,32,32,32,16,32, + 8,32,4,160,2,160,1,160,7,160,0,32,255,224,9,16, + 32,10,1,0,8,0,20,0,34,0,65,0,227,128,34,0, + 34,0,34,0,34,0,34,0,34,0,227,128,65,0,34,0, + 20,0,8,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 11,11,22,14,2,1,255,224,255,224,255,224,255,224,255,224, + 255,224,255,224,255,224,255,224,255,224,255,224,11,11,22,14, + 2,1,255,224,128,32,128,32,128,32,128,32,128,32,128,32, + 128,32,128,32,128,32,255,224,11,11,22,14,2,1,63,128, + 64,64,128,32,128,32,128,32,128,32,128,32,128,32,128,32, + 64,64,63,128,11,11,22,14,2,1,255,224,128,32,191,160, + 191,160,191,160,191,160,191,160,191,160,191,160,128,32,255,224, + 11,11,22,14,2,1,255,224,128,32,255,224,128,32,255,224, + 128,32,255,224,128,32,255,224,128,32,255,224,11,11,22,14, + 2,1,255,224,170,160,170,160,170,160,170,160,170,160,170,160, + 170,160,170,160,170,160,255,224,11,11,22,14,2,1,255,224, + 170,160,255,224,170,160,255,224,170,160,255,224,170,160,255,224, + 170,160,255,224,11,11,22,14,2,1,255,224,201,32,164,160, + 146,96,201,32,164,160,146,96,201,32,164,160,146,96,255,224, + 11,11,22,14,2,1,255,224,146,96,164,160,201,32,146,96, + 164,160,201,32,146,96,164,160,201,32,255,224,11,11,22,14, + 2,1,255,224,213,96,170,160,213,96,170,160,213,96,170,160, + 213,96,170,160,213,96,255,224,7,7,7,12,3,3,254,254, + 254,254,254,254,254,7,7,7,12,3,3,254,130,130,130,130, + 130,254,13,6,12,16,2,3,255,248,255,248,255,248,255,248, + 255,248,255,248,13,6,12,16,2,3,255,248,128,8,128,8, + 128,8,128,8,255,248,6,13,13,9,2,254,252,252,252,252, + 252,252,252,252,252,252,252,252,252,6,13,13,9,2,254,252, + 132,132,132,132,132,132,132,132,132,132,132,252,16,6,12,19, + 2,3,31,255,63,254,63,254,127,252,127,252,255,248,16,6, + 12,19,2,3,31,255,32,2,32,2,64,4,64,4,255,248, + 11,12,24,14,2,1,4,0,4,0,14,0,14,0,31,0, + 31,0,63,128,63,128,127,192,127,192,255,224,255,224,11,12, + 24,14,2,1,4,0,4,0,10,0,10,0,17,0,17,0, + 32,128,32,128,64,64,64,64,128,32,255,224,7,8,8,12, + 3,1,16,16,56,56,124,124,254,254,7,8,8,12,3,1, + 16,16,40,40,68,68,130,254,12,11,22,15,2,1,192,0, + 240,0,252,0,255,0,255,192,255,240,255,192,255,0,252,0, + 240,0,192,0,12,11,22,15,2,1,192,0,176,0,140,0, + 131,0,128,192,128,48,128,192,131,0,140,0,176,0,192,0, + 8,7,7,13,3,1,192,240,252,255,252,240,192,8,7,7, + 13,3,1,192,176,140,131,140,176,192,12,7,14,15,2,1, + 192,0,252,0,255,192,255,240,255,192,252,0,192,0,12,7, + 14,15,2,1,192,0,188,0,131,192,128,48,131,192,188,0, + 192,0,11,12,24,14,2,1,255,224,255,224,127,192,127,192, + 63,128,63,128,31,0,31,0,14,0,14,0,4,0,4,0, + 11,12,24,14,2,1,255,224,128,32,64,64,64,64,32,128, + 32,128,17,0,17,0,10,0,10,0,4,0,4,0,7,8, + 8,12,3,1,254,254,124,124,56,56,16,16,7,8,8,12, + 3,1,254,130,68,68,40,40,16,16,12,11,22,15,2,1, + 0,48,0,240,3,240,15,240,63,240,255,240,63,240,15,240, + 3,240,0,240,0,48,12,11,22,15,2,1,0,48,0,208, + 3,16,12,16,48,16,192,16,48,16,12,16,3,16,0,208, + 0,48,8,7,7,13,3,1,3,15,63,255,63,15,3,8, + 7,7,13,3,1,3,13,49,193,49,13,3,12,7,14,15, + 2,1,0,48,3,240,63,240,255,240,63,240,3,240,0,48, + 12,7,14,15,2,1,0,48,3,208,60,16,192,16,60,16, + 3,208,0,48,11,11,22,14,2,1,4,0,14,0,31,0, + 63,128,127,192,255,224,127,192,63,128,31,0,14,0,4,0, + 11,11,22,14,2,1,4,0,10,0,17,0,32,128,64,64, + 128,32,64,64,32,128,17,0,10,0,4,0,11,11,22,14, + 2,1,4,0,10,0,17,0,36,128,78,64,159,32,78,64, + 36,128,17,0,10,0,4,0,11,11,22,14,2,1,31,0, + 96,192,64,64,142,32,159,32,159,32,159,32,142,32,64,64, + 96,192,31,0,7,12,12,8,1,0,16,40,40,68,68,130, + 130,68,68,40,40,16,11,11,22,14,2,1,31,0,96,192, + 64,64,128,32,128,32,128,32,128,32,128,32,64,64,96,192, + 31,0,11,11,22,14,2,1,14,0,32,128,64,64,0,0, + 128,32,128,32,128,32,0,0,64,64,32,128,14,0,11,11, + 22,14,2,1,31,0,106,192,106,192,170,160,170,160,170,160, + 170,160,170,160,106,192,106,192,31,0,11,11,22,14,2,1, + 31,0,96,192,64,64,142,32,145,32,145,32,145,32,142,32, + 64,64,96,192,31,0,11,11,22,14,2,1,31,0,127,192, + 127,192,255,224,255,224,255,224,255,224,255,224,127,192,127,192, + 31,0,11,11,22,14,2,1,31,0,120,192,120,64,248,32, + 248,32,248,32,248,32,248,32,120,64,120,192,31,0,11,11, + 22,14,2,1,31,0,99,192,67,192,131,224,131,224,131,224, + 131,224,131,224,67,192,99,192,31,0,11,11,22,14,2,1, + 31,0,127,192,127,192,255,224,255,224,128,32,128,32,128,32, + 64,64,96,192,31,0,11,11,22,14,2,1,31,0,96,192, + 64,64,128,32,128,32,128,32,255,224,255,224,127,192,127,192, + 31,0,11,11,22,14,2,1,31,0,103,192,71,192,135,224, + 135,224,135,224,128,32,128,32,64,64,96,192,31,0,11,11, + 22,14,2,1,31,0,99,192,67,192,131,224,131,224,131,224, + 255,224,255,224,127,192,127,192,31,0,6,11,11,8,2,1, + 28,124,124,252,252,252,252,252,124,124,28,6,11,11,9,2, + 1,224,248,248,252,252,252,252,252,248,248,224,7,12,12,10, + 2,1,254,254,254,254,254,198,130,130,130,198,254,254,13,13, + 26,16,2,0,255,248,240,120,207,152,223,216,191,232,191,232, + 191,232,191,232,191,232,223,216,207,152,240,120,255,248,13,7, + 14,16,2,6,255,248,240,120,207,152,223,216,191,232,191,232, + 191,232,13,7,14,16,2,0,191,232,191,232,191,232,223,216, + 207,152,240,120,255,248,6,6,6,8,2,6,28,96,64,128, + 128,128,6,6,6,13,7,6,224,24,8,4,4,4,6,6, + 6,13,7,1,4,4,4,8,24,224,6,6,6,8,2,1, + 128,128,128,64,96,28,11,6,12,14,2,6,31,0,96,192, + 64,64,128,32,128,32,128,32,11,6,12,14,2,1,128,32, + 128,32,128,32,64,64,96,192,31,0,12,12,24,15,2,1, + 0,16,0,48,0,112,0,240,1,240,3,240,7,240,15,240, + 31,240,63,240,127,240,255,240,12,12,24,15,2,1,128,0, + 192,0,224,0,240,0,248,0,252,0,254,0,255,0,255,128, + 255,192,255,224,255,240,12,12,24,15,2,1,255,240,255,224, + 255,192,255,128,255,0,254,0,252,0,248,0,240,0,224,0, + 192,0,128,0,12,12,24,15,2,1,255,240,127,240,63,240, + 31,240,15,240,7,240,3,240,1,240,0,240,0,112,0,48, + 0,16,7,7,7,8,1,2,56,68,130,130,130,68,56,11, + 11,22,14,2,1,255,224,248,32,248,32,248,32,248,32,248, + 32,248,32,248,32,248,32,248,32,255,224,11,11,22,14,2, + 1,255,224,131,224,131,224,131,224,131,224,131,224,131,224,131, + 224,131,224,131,224,255,224,11,11,22,14,2,1,255,224,255, + 224,255,160,255,32,254,32,252,32,248,32,240,32,224,32,192, + 32,255,224,11,11,22,14,2,1,255,224,128,96,128,224,129, + 224,131,224,135,224,143,224,159,224,191,224,255,224,255,224,11, + 11,22,14,2,1,255,224,132,32,132,32,132,32,132,32,132, + 32,132,32,132,32,132,32,132,32,255,224,11,12,24,14,2, + 1,4,0,4,0,10,0,10,0,17,0,17,0,32,128,36, + 128,78,64,68,64,128,32,255,224,11,12,24,14,2,1,4, + 0,4,0,14,0,14,0,29,0,29,0,60,128,60,128,124, + 64,124,64,252,32,255,224,11,12,24,14,2,1,4,0,4, + 0,14,0,14,0,23,0,23,0,39,128,39,128,71,192,71, + 192,135,224,255,224,13,13,26,16,2,0,31,192,32,32,64, + 16,128,8,128,8,128,8,128,8,128,8,128,8,128,8,64, + 16,32,32,31,192,11,11,22,14,2,1,255,224,132,32,132, + 32,132,32,132,32,252,32,128,32,128,32,128,32,128,32,255, + 224,11,11,22,14,2,1,255,224,128,32,128,32,128,32,128, + 32,252,32,132,32,132,32,132,32,132,32,255,224,11,11,22, + 14,2,1,255,224,128,32,128,32,128,32,128,32,135,224,132, + 32,132,32,132,32,132,32,255,224,11,11,22,14,2,1,255, + 224,132,32,132,32,132,32,132,32,135,224,128,32,128,32,128, + 32,128,32,255,224,11,11,22,14,2,1,31,0,100,192,68, + 64,132,32,132,32,252,32,128,32,128,32,64,64,96,192,31, + 0,11,11,22,14,2,1,31,0,96,192,64,64,128,32,128, + 32,252,32,132,32,132,32,68,64,100,192,31,0,11,11,22, + 14,2,1,31,0,96,192,64,64,128,32,128,32,135,224,132, + 32,132,32,68,64,100,192,31,0,11,11,22,14,2,1,31, + 0,100,192,68,64,132,32,132,32,135,224,128,32,128,32,64, + 64,96,192,31,0,255,255,255,255,255,255,255,255}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 11, '1' Height: 6 + Calculated Max Values w=16 h=13 x= 3 y= 3 dx=19 dy= 0 ascent=13 len=24 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =13 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12_75r[1123] U8G_SECTION(".progmem.u8g_font_cu12_75r") = { + 0,40,30,247,246,11,2,247,0,0,32,79,0,13,254,12, + 0,11,11,22,14,2,1,255,224,255,224,255,224,255,224,255, + 224,255,224,255,224,255,224,255,224,255,224,255,224,11,11,22, + 14,2,1,255,224,128,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,32,255,224,11,11,22,14,2,1,63, + 128,64,64,128,32,128,32,128,32,128,32,128,32,128,32,128, + 32,64,64,63,128,11,11,22,14,2,1,255,224,128,32,191, + 160,191,160,191,160,191,160,191,160,191,160,191,160,128,32,255, + 224,11,11,22,14,2,1,255,224,128,32,255,224,128,32,255, + 224,128,32,255,224,128,32,255,224,128,32,255,224,11,11,22, + 14,2,1,255,224,170,160,170,160,170,160,170,160,170,160,170, + 160,170,160,170,160,170,160,255,224,11,11,22,14,2,1,255, + 224,170,160,255,224,170,160,255,224,170,160,255,224,170,160,255, + 224,170,160,255,224,11,11,22,14,2,1,255,224,201,32,164, + 160,146,96,201,32,164,160,146,96,201,32,164,160,146,96,255, + 224,11,11,22,14,2,1,255,224,146,96,164,160,201,32,146, + 96,164,160,201,32,146,96,164,160,201,32,255,224,11,11,22, + 14,2,1,255,224,213,96,170,160,213,96,170,160,213,96,170, + 160,213,96,170,160,213,96,255,224,7,7,7,12,3,3,254, + 254,254,254,254,254,254,7,7,7,12,3,3,254,130,130,130, + 130,130,254,13,6,12,16,2,3,255,248,255,248,255,248,255, + 248,255,248,255,248,13,6,12,16,2,3,255,248,128,8,128, + 8,128,8,128,8,255,248,6,13,13,9,2,254,252,252,252, + 252,252,252,252,252,252,252,252,252,252,6,13,13,9,2,254, + 252,132,132,132,132,132,132,132,132,132,132,132,252,16,6,12, + 19,2,3,31,255,63,254,63,254,127,252,127,252,255,248,16, + 6,12,19,2,3,31,255,32,2,32,2,64,4,64,4,255, + 248,11,12,24,14,2,1,4,0,4,0,14,0,14,0,31, + 0,31,0,63,128,63,128,127,192,127,192,255,224,255,224,11, + 12,24,14,2,1,4,0,4,0,10,0,10,0,17,0,17, + 0,32,128,32,128,64,64,64,64,128,32,255,224,7,8,8, + 12,3,1,16,16,56,56,124,124,254,254,7,8,8,12,3, + 1,16,16,40,40,68,68,130,254,12,11,22,15,2,1,192, + 0,240,0,252,0,255,0,255,192,255,240,255,192,255,0,252, + 0,240,0,192,0,12,11,22,15,2,1,192,0,176,0,140, + 0,131,0,128,192,128,48,128,192,131,0,140,0,176,0,192, + 0,8,7,7,13,3,1,192,240,252,255,252,240,192,8,7, + 7,13,3,1,192,176,140,131,140,176,192,12,7,14,15,2, + 1,192,0,252,0,255,192,255,240,255,192,252,0,192,0,12, + 7,14,15,2,1,192,0,188,0,131,192,128,48,131,192,188, + 0,192,0,11,12,24,14,2,1,255,224,255,224,127,192,127, + 192,63,128,63,128,31,0,31,0,14,0,14,0,4,0,4, + 0,11,12,24,14,2,1,255,224,128,32,64,64,64,64,32, + 128,32,128,17,0,17,0,10,0,10,0,4,0,4,0,7, + 8,8,12,3,1,254,254,124,124,56,56,16,16,7,8,8, + 12,3,1,254,130,68,68,40,40,16,16,12,11,22,15,2, + 1,0,48,0,240,3,240,15,240,63,240,255,240,63,240,15, + 240,3,240,0,240,0,48,12,11,22,15,2,1,0,48,0, + 208,3,16,12,16,48,16,192,16,48,16,12,16,3,16,0, + 208,0,48,8,7,7,13,3,1,3,15,63,255,63,15,3, + 8,7,7,13,3,1,3,13,49,193,49,13,3,12,7,14, + 15,2,1,0,48,3,240,63,240,255,240,63,240,3,240,0, + 48,12,7,14,15,2,1,0,48,3,208,60,16,192,16,60, + 16,3,208,0,48,11,11,22,14,2,1,4,0,14,0,31, + 0,63,128,127,192,255,224,127,192,63,128,31,0,14,0,4, + 0,11,11,22,14,2,1,4,0,10,0,17,0,32,128,64, + 64,128,32,64,64,32,128,17,0,10,0,4,0,11,11,22, + 14,2,1,4,0,10,0,17,0,36,128,78,64,159,32,78, + 64,36,128,17,0,10,0,4,0,11,11,22,14,2,1,31, + 0,96,192,64,64,142,32,159,32,159,32,159,32,142,32,64, + 64,96,192,31,0,7,12,12,8,1,0,16,40,40,68,68, + 130,130,68,68,40,40,16,11,11,22,14,2,1,31,0,96, + 192,64,64,128,32,128,32,128,32,128,32,128,32,64,64,96, + 192,31,0,11,11,22,14,2,1,14,0,32,128,64,64,0, + 0,128,32,128,32,128,32,0,0,64,64,32,128,14,0,11, + 11,22,14,2,1,31,0,106,192,106,192,170,160,170,160,170, + 160,170,160,170,160,106,192,106,192,31,0,11,11,22,14,2, + 1,31,0,96,192,64,64,142,32,145,32,145,32,145,32,142, + 32,64,64,96,192,31,0,11,11,22,14,2,1,31,0,127, + 192,127,192,255,224,255,224,255,224,255,224,255,224,127,192,127, + 192,31,0}; +/* + Fontname: -MUTT-ClearlyU-Medium-R-Normal--17-120-100-100-P-123-ISO10646-1 + Copyright: 2001 Computing Research Lab, New Mexico State University. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 3 y=11 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=40 h=30 x=-9 y=-10 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cu12[3993] U8G_SECTION(".progmem.u8g_font_cu12") = { + 0,40,30,247,246,11,2,90,5,94,32,255,252,16,252,12, + 252,0,0,0,5,0,0,2,12,12,5,1,0,192,192,192, + 192,192,192,192,0,0,0,192,192,4,5,5,7,2,7,144, + 144,144,144,144,10,15,30,12,1,253,4,128,4,128,9,0, + 9,0,9,0,255,192,18,0,18,0,18,0,255,192,36,0, + 36,0,36,0,72,0,72,0,5,14,14,8,1,255,32,112, + 168,168,168,160,96,48,40,168,168,168,112,32,11,13,26,14, + 1,255,96,64,152,128,151,128,145,0,146,0,98,0,4,0, + 8,192,9,32,17,32,33,32,33,32,64,192,10,12,24,13, + 1,0,24,0,36,0,36,0,36,0,40,0,51,192,49,0, + 81,0,138,0,138,0,196,64,123,128,1,5,5,4,2,7, + 128,128,128,128,128,4,15,15,6,2,253,16,32,64,64,128, + 128,128,128,128,128,128,64,64,32,16,4,15,15,6,1,253, + 128,64,32,32,16,16,16,16,16,16,16,32,32,64,128,7, + 7,7,7,0,5,16,146,84,56,84,146,16,9,9,18,11, + 2,255,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,2,5,5,5,1,253,192,192,64,64,128,4, + 1,1,7,2,3,240,2,2,2,5,1,0,192,192,5,16, + 16,8,2,252,8,8,16,16,16,16,32,32,32,32,64,64, + 64,64,128,128,5,11,11,7,1,0,112,80,136,136,136,136, + 136,136,136,80,112,5,11,11,7,1,0,32,224,32,32,32, + 32,32,32,32,32,248,5,11,11,7,1,0,112,136,136,136, + 8,16,16,32,72,72,248,5,11,11,7,1,0,112,136,136, + 8,8,48,8,8,136,136,112,7,11,11,9,1,0,24,24, + 40,40,72,200,254,8,8,8,62,5,11,11,7,1,0,136, + 240,128,128,240,200,8,8,136,144,96,5,11,11,7,1,0, + 48,72,64,128,240,136,136,136,136,80,112,6,12,12,8,1, + 0,128,252,132,136,16,16,16,32,32,32,32,32,5,11,11, + 7,1,0,112,136,136,136,80,112,136,136,136,136,112,5,11, + 11,7,1,0,112,80,136,136,136,136,120,8,16,144,96,2, + 7,7,7,3,0,192,192,0,0,0,192,192,2,10,10,5, + 1,253,192,192,0,0,0,192,192,64,64,128,5,9,9,6, + 1,1,8,16,32,64,128,64,32,16,8,10,5,10,13,2, + 2,255,192,0,0,0,0,0,0,255,192,5,9,9,6,1, + 1,128,64,32,16,8,16,32,64,128,5,12,12,8,1,0, + 112,136,136,16,32,32,96,0,0,0,96,96,10,12,24,12, + 1,0,30,0,33,0,76,128,147,64,161,64,161,64,161,64, + 161,64,147,64,77,128,32,192,31,0,11,11,22,11,0,0, + 4,0,4,0,10,0,10,0,10,0,17,0,17,0,31,0, + 32,128,32,128,241,224,10,11,22,10,0,0,255,0,32,128, + 32,64,32,64,32,128,63,0,32,128,32,64,32,64,32,128, + 255,0,9,11,22,10,1,0,30,128,33,128,64,128,128,128, + 128,0,128,0,128,0,128,128,64,128,33,0,30,0,10,11, + 22,10,0,0,254,0,33,128,32,128,32,64,32,64,32,64, + 32,64,32,64,32,128,33,128,254,0,10,11,22,10,1,0, + 255,128,32,128,32,128,34,128,34,0,62,0,34,64,34,64, + 32,128,32,128,255,128,9,11,22,9,1,0,255,128,32,128, + 32,128,34,128,34,0,62,0,34,0,34,0,32,0,32,0, + 248,0,10,11,22,10,1,0,30,128,33,128,64,128,128,128, + 128,0,128,0,131,192,128,128,64,128,32,128,31,128,11,11, + 22,11,1,0,251,224,32,128,32,128,32,128,32,128,63,128, + 32,128,32,128,32,128,32,128,251,224,5,11,11,5,1,0, + 248,32,32,32,32,32,32,32,32,32,248,6,11,11,6,1, + 0,124,16,16,16,16,16,16,16,16,144,224,11,11,22,11, + 1,0,249,224,32,128,33,0,34,0,36,0,46,0,50,0, + 33,0,33,0,32,128,249,224,8,11,11,8,0,0,248,32, + 32,32,32,32,33,33,33,35,255,14,11,22,14,1,0,240, + 60,48,48,48,48,40,80,40,80,40,144,36,144,36,144,35, + 16,35,16,251,124,11,11,22,11,1,0,227,224,48,128,48, + 128,40,128,40,128,36,128,34,128,34,128,33,128,33,128,248, + 128,10,11,22,10,1,0,30,0,33,0,64,128,128,64,128, + 64,128,64,128,64,128,64,64,128,33,0,30,0,9,11,22, + 9,1,0,255,0,33,128,32,128,32,128,33,128,63,0,32, + 0,32,0,32,0,32,0,248,0,10,14,28,10,1,253,30, + 0,33,0,64,128,128,64,128,64,128,64,128,64,128,64,92, + 128,51,0,30,0,2,0,2,64,1,128,11,11,22,11,1, + 0,254,0,33,0,32,128,32,128,33,0,62,0,35,0,33, + 0,33,0,33,0,248,224,6,11,11,7,1,0,124,132,132, + 128,64,48,8,4,132,132,248,9,11,22,9,1,0,255,128, + 136,128,136,128,136,128,8,0,8,0,8,0,8,0,8,0, + 8,0,62,0,11,11,22,11,1,0,251,224,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,17,0,14,0, + 11,11,22,11,1,0,241,224,32,128,32,128,17,0,17,0, + 17,0,10,0,10,0,10,0,4,0,4,0,16,11,22,16, + 1,0,241,207,33,132,33,132,34,68,18,72,18,72,18,72, + 20,40,12,48,12,48,8,16,11,11,22,11,1,0,243,192, + 17,0,18,0,10,0,12,0,4,0,10,0,26,0,17,0, + 32,128,241,224,11,11,22,11,1,0,241,224,32,128,17,0, + 17,0,10,0,14,0,4,0,4,0,4,0,4,0,31,0, + 7,11,11,7,1,0,254,196,132,136,8,16,34,34,66,70, + 254,3,16,16,5,1,252,224,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,224,5,16,16,8,2,252,128,128,64, + 64,64,64,32,32,32,32,16,16,16,16,8,8,3,16,16, + 5,0,252,224,32,32,32,32,32,32,32,32,32,32,32,32, + 32,32,224,5,3,3,6,1,9,32,112,136,11,1,2,12, + 1,254,255,224,3,4,4,6,3,8,128,192,64,32,6,7, + 7,7,1,0,112,136,8,120,136,136,124,6,12,12,7,1, + 0,192,64,64,64,64,120,68,68,68,68,68,120,5,7,7, + 6,1,0,112,136,128,128,128,136,112,6,12,12,7,1,0, + 24,8,8,8,8,120,136,136,136,136,136,124,5,7,7,6, + 1,0,112,136,248,128,128,136,112,5,12,12,6,1,0,56, + 72,64,64,64,240,64,64,64,64,64,224,7,11,11,8,1, + 252,62,68,68,68,120,64,124,130,130,130,124,7,12,12,8, + 1,0,192,64,64,64,64,120,68,68,68,68,68,238,3,11, + 11,4,1,0,192,192,0,0,192,64,64,64,64,64,224,4, + 14,14,5,0,253,48,48,0,0,48,16,16,16,16,16,16, + 16,144,224,7,12,12,8,1,0,192,64,64,64,64,94,72, + 80,112,88,72,238,3,12,12,4,1,0,192,64,64,64,64, + 64,64,64,64,64,64,224,11,7,14,12,1,0,251,128,68, + 64,68,64,68,64,68,64,68,64,238,224,7,7,7,8,1, + 0,248,68,68,68,68,68,238,5,7,7,6,1,0,112,136, + 136,136,136,136,112,6,10,10,7,1,253,248,68,68,68,68, + 68,120,64,64,224,6,10,10,7,1,253,120,136,136,136,136, + 136,120,8,8,28,5,7,7,6,1,0,208,104,64,64,64, + 64,240,5,7,7,6,1,0,120,136,128,112,8,136,240,6, + 10,10,7,1,0,32,32,32,248,32,32,32,36,36,24,7, + 7,7,8,1,0,204,68,68,68,68,68,62,8,7,7,9, + 1,0,231,36,36,36,24,24,24,11,7,14,11,0,0,238, + 224,36,128,42,128,42,128,42,128,27,0,17,0,8,7,7, + 9,1,0,231,36,24,24,24,36,231,8,10,10,8,1,253, + 231,36,36,36,24,24,24,16,144,224,5,7,7,6,1,0, + 248,144,144,32,72,72,248,5,16,16,6,1,252,24,32,32, + 32,32,32,32,192,32,32,32,32,32,32,32,24,1,16,16, + 3,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,16,16,5,0,252,192,32,32,32,32,32,32, + 24,32,32,32,32,32,32,32,192,5,3,3,8,1,9,72, + 168,144,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,5,0,0,2,12,12,5,1,253,192, + 192,0,0,0,192,192,192,192,192,192,192,5,11,11,7,1, + 254,16,16,112,168,160,160,160,200,112,64,64,8,12,12,9, + 1,0,6,9,17,16,16,124,16,16,16,81,178,204,7,7, + 7,9,1,3,130,124,68,68,68,124,130,11,11,22,12,0, + 0,241,224,32,128,17,0,10,0,127,192,14,0,4,0,127, + 192,4,0,4,0,31,0,1,16,16,3,2,252,128,128,128, + 128,128,128,128,0,0,128,128,128,128,128,128,128,4,13,13, + 6,1,0,96,144,128,128,96,144,144,144,96,16,16,144,96, + 5,2,2,6,1,11,216,216,9,10,20,10,1,3,62,0, + 65,0,158,128,162,128,162,128,160,128,162,128,156,128,65,0, + 62,0,4,6,6,5,1,7,96,16,112,144,112,240,7,7, + 7,9,1,0,18,36,108,216,108,36,18,6,4,4,8,1, + 2,252,4,4,4,3,1,1,5,0,3,224,9,10,20,10, + 1,3,62,0,65,0,188,128,146,128,146,128,156,128,146,128, + 186,128,65,0,62,0,5,1,1,7,1,11,248,4,4,4, + 6,2,8,96,144,144,96,7,9,9,9,2,1,16,16,16, + 254,16,16,16,0,254,4,7,7,5,1,6,96,144,16,16, + 32,64,240,4,7,7,5,1,6,96,144,16,32,16,144,96, + 3,4,4,6,3,11,32,96,64,128,7,10,10,8,1,253, + 136,136,136,136,136,218,164,128,128,128,7,15,15,8,1,252, + 62,116,244,244,244,116,52,20,20,20,20,20,20,20,20,2, + 2,2,4,2,5,192,192,3,3,3,7,2,253,64,32,224, + 3,7,7,4,1,6,64,192,64,64,64,64,224,4,6,6, + 5,1,7,96,144,144,144,96,240,7,7,7,8,1,0,144, + 72,108,54,108,72,144,11,11,22,12,1,0,64,0,196,0, + 68,0,68,0,68,64,232,192,9,64,10,64,11,224,16,64, + 16,224,11,11,22,12,1,0,64,0,196,0,68,0,68,0, + 68,0,232,192,9,32,8,32,8,64,16,128,17,224,12,11, + 22,13,1,0,96,0,146,0,18,0,34,0,18,32,148,96, + 100,160,5,32,5,240,8,32,8,112,5,12,12,8,1,253, + 48,48,0,0,0,48,32,32,64,128,136,112,11,16,32,11, + 0,0,8,0,12,0,4,0,2,0,0,0,4,0,4,0, + 10,0,10,0,10,0,17,0,17,0,31,0,32,128,32,128, + 241,224,11,16,32,11,0,0,2,0,6,0,4,0,8,0, + 0,0,4,0,4,0,10,0,10,0,10,0,17,0,17,0, + 31,0,32,128,32,128,241,224,11,15,30,11,0,0,4,0, + 14,0,17,0,0,0,4,0,4,0,10,0,10,0,10,0, + 17,0,17,0,31,0,32,128,32,128,241,224,11,15,30,11, + 0,0,9,0,21,0,18,0,0,0,4,0,4,0,10,0, + 10,0,10,0,17,0,17,0,31,0,32,128,32,128,241,224, + 11,14,28,11,0,0,27,0,27,0,0,0,4,0,4,0, + 10,0,10,0,10,0,17,0,17,0,31,0,32,128,32,128, + 241,224,11,15,30,11,0,0,6,0,9,0,9,0,6,0, + 4,0,4,0,10,0,10,0,10,0,17,0,17,0,31,0, + 32,128,32,128,241,224,14,11,22,15,0,0,15,248,10,24, + 10,8,10,40,18,32,31,224,18,36,18,36,34,8,34,8, + 247,248,9,14,28,10,1,253,30,128,33,128,64,128,128,128, + 128,0,128,0,128,0,128,128,64,128,33,0,30,0,8,0, + 4,0,28,0,10,16,32,11,0,0,16,0,24,0,8,0, + 4,0,0,0,255,128,32,128,32,128,34,128,34,0,62,0, + 34,64,34,64,32,128,32,128,255,128,10,16,32,11,0,0, + 4,0,12,0,8,0,16,0,0,0,255,128,32,128,32,128, + 34,128,34,0,62,0,34,64,34,64,32,128,32,128,255,128, + 10,15,30,11,0,0,8,0,28,0,34,0,0,0,255,128, + 32,128,32,128,34,128,34,0,62,0,34,64,34,64,32,128, + 32,128,255,128,10,14,28,11,0,0,54,0,54,0,0,0, + 255,128,32,128,32,128,34,128,34,0,62,0,34,64,34,64, + 32,128,32,128,255,128,5,16,16,6,1,0,64,96,32,16, + 0,248,32,32,32,32,32,32,32,32,32,248,5,16,16,6, + 1,0,16,48,32,64,0,248,32,32,32,32,32,32,32,32, + 32,248,5,15,15,6,1,0,32,112,136,0,248,32,32,32, + 32,32,32,32,32,32,248,5,14,14,6,1,0,216,216,0, + 248,32,32,32,32,32,32,32,32,32,248,10,11,22,11,0, + 0,254,0,33,128,32,128,32,64,32,64,248,64,32,64,32, + 64,32,128,33,128,254,0,11,15,30,12,0,0,9,0,21, + 0,18,0,0,0,227,224,48,128,48,128,40,128,40,128,36, + 128,34,128,34,128,33,128,33,128,248,128,10,16,32,12,1, + 0,16,0,24,0,8,0,4,0,0,0,30,0,33,0,64, + 128,128,64,128,64,128,64,128,64,128,64,64,128,33,0,30, + 0,10,16,32,12,1,0,2,0,6,0,4,0,8,0,0, + 0,30,0,33,0,64,128,128,64,128,64,128,64,128,64,128, + 64,64,128,33,0,30,0,10,15,30,12,1,0,8,0,28, + 0,34,0,0,0,30,0,33,0,64,128,128,64,128,64,128, + 64,128,64,128,64,64,128,33,0,30,0,10,15,30,12,1, + 0,18,0,42,0,36,0,0,0,30,0,33,0,64,128,128, + 64,128,64,128,64,128,64,128,64,64,128,33,0,30,0,10, + 14,28,12,1,0,54,0,54,0,0,0,30,0,33,0,64, + 128,128,64,128,64,128,64,128,64,128,64,64,128,33,0,30, + 0,7,7,7,9,1,0,130,68,40,16,40,68,130,10,13, + 26,12,1,255,0,128,31,0,33,0,66,128,130,64,132,64, + 140,64,136,64,144,64,80,128,33,0,62,0,64,0,11,16, + 32,12,1,0,8,0,12,0,4,0,2,0,0,0,251,224, + 32,128,32,128,32,128,32,128,32,128,32,128,32,128,32,128, + 17,0,14,0,11,16,32,12,1,0,2,0,6,0,4,0, + 8,0,0,0,251,224,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,17,0,14,0,11,15,30,12,1,0, + 4,0,14,0,17,0,0,0,251,224,32,128,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,17,0,14,0,11,14, + 28,12,1,0,27,0,27,0,0,0,251,224,32,128,32,128, + 32,128,32,128,32,128,32,128,32,128,32,128,17,0,14,0, + 11,16,32,12,0,0,2,0,6,0,4,0,8,0,0,0, + 241,224,32,128,17,0,17,0,10,0,14,0,4,0,4,0, + 4,0,4,0,31,0,9,11,22,10,0,0,248,0,32,0, + 62,0,33,0,32,128,32,128,32,128,33,0,62,0,32,0, + 248,0,6,12,12,7,1,0,48,72,72,72,72,216,72,68, + 68,68,68,216,6,12,12,7,1,0,64,96,32,16,0,112, + 136,8,120,136,136,124,6,12,12,7,1,0,16,48,32,64, + 0,112,136,8,120,136,136,124,6,11,11,7,1,0,32,112, + 136,0,112,136,8,120,136,136,124,6,11,11,7,1,0,72, + 168,144,0,112,136,8,120,136,136,124,6,10,10,7,1,0, + 216,216,0,112,136,8,120,136,136,124,6,11,11,7,1,0, + 48,72,72,48,112,136,8,120,136,136,124,10,7,14,11,1, + 0,115,128,140,64,15,192,120,0,136,0,140,64,115,128,5, + 10,10,6,1,253,112,136,128,128,128,136,112,32,16,112,5, + 12,12,6,1,0,64,96,32,16,0,112,136,248,128,128,136, + 112,5,12,12,6,1,0,16,48,32,64,0,112,136,248,128, + 128,136,112,5,11,11,6,1,0,32,112,136,0,112,136,248, + 128,128,136,112,5,10,10,6,1,0,216,216,0,112,136,248, + 128,128,136,112,4,12,12,4,0,0,128,192,64,32,0,96, + 32,32,32,32,32,112,4,12,12,4,1,0,16,48,32,64, + 0,192,64,64,64,64,64,224,5,11,11,5,0,0,32,112, + 136,0,96,32,32,32,32,32,112,5,10,10,6,0,0,216, + 216,0,96,32,32,32,32,32,112,5,12,12,6,1,0,80, + 112,224,16,16,120,136,136,136,136,136,112,7,11,11,8,1, + 0,72,168,144,0,248,68,68,68,68,68,238,5,12,12,6, + 1,0,64,96,32,16,0,112,136,136,136,136,136,112,5,12, + 12,6,1,0,16,48,32,64,0,112,136,136,136,136,136,112, + 5,11,11,6,1,0,32,112,136,0,112,136,136,136,136,136, + 112,5,11,11,6,1,0,72,168,144,0,112,136,136,136,136, + 136,112,5,10,10,6,1,0,216,216,0,112,136,136,136,136, + 136,112,9,7,14,11,1,0,8,0,8,0,0,0,255,128, + 0,0,8,0,8,0,5,11,11,6,1,254,8,16,112,152, + 168,168,168,200,112,64,128,7,12,12,8,1,0,64,96,32, + 16,0,204,68,68,68,68,68,62,7,12,12,8,1,0,8, + 24,16,32,0,204,68,68,68,68,68,62,7,11,11,8,1, + 0,16,56,68,0,204,68,68,68,68,68,62,7,10,10,8, + 1,0,108,108,0,204,68,68,68,68,68,62,8,15,15,8, + 1,253,4,12,8,16,0,231,36,36,36,24,24,24,16,144, + 224,6,15,15,7,1,253,192,64,64,64,64,120,68,68,68, + 68,68,120,64,64,224,8,13,13,8,1,253,54,54,0,231, + 36,36,36,24,24,24,16,144,224}; +/* + Fontname: cursor + Copyright: These glyphs are unencumbered + Capital A Height: 15, '1' Height: 16 + Calculated Max Values w=16 h=16 x= 1 y= 0 dx=17 dy= 0 ascent=15 len=32 + Font Bounding box w=31 h=31 x=-15 y=-16 + Calculated Min Values x=-15 y=-16 dx= 0 dy= 0 + Pure Font ascent =15 descent=-8 + X Font ascent =16 descent=-16 + Max Font ascent =15 descent=-16 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cursor[5286] U8G_SECTION(".progmem.u8g_font_cursor") = { + 0,31,31,241,240,15,4,101,8,211,32,255,248,15,240,16, + 240,14,14,28,17,250,248,224,28,240,60,248,124,124,248,63, + 240,31,224,15,192,15,192,31,224,63,240,124,248,248,124,240, + 60,224,28,16,16,32,17,249,247,240,15,248,31,252,63,254, + 127,127,254,63,252,31,248,15,240,15,240,31,248,63,252,127, + 254,254,127,252,63,248,31,240,15,14,14,28,17,243,242,0, + 12,0,60,0,248,3,248,15,240,63,240,3,224,7,224,14, + 192,28,192,56,128,112,128,224,0,64,0,16,16,32,17,242, + 241,0,7,0,31,0,127,1,254,7,254,31,252,63,252,63, + 248,7,248,15,240,31,240,62,224,124,224,248,64,112,0,32, + 0,8,10,10,17,253,255,255,0,255,24,24,24,24,90,60, + 24,10,12,24,17,252,254,255,192,255,192,255,192,255,192,255, + 192,30,0,30,0,127,128,127,128,127,128,63,0,30,0,8, + 10,10,17,253,255,24,60,90,24,24,24,24,255,0,255,10, + 12,24,17,252,254,12,0,30,0,127,128,127,128,127,128,30, + 0,30,0,255,192,255,192,255,192,255,192,255,192,16,8,16, + 17,242,251,1,0,7,192,136,96,255,255,0,24,0,32,0, + 64,255,192,16,9,18,17,242,251,7,0,15,192,159,224,255, + 255,255,255,255,255,255,248,255,224,255,192,13,14,28,17,250, + 248,226,56,34,32,34,32,34,32,255,248,162,40,162,40,162, + 40,162,40,255,248,34,32,34,32,34,32,226,56,15,16,32, + 17,249,247,251,190,251,190,251,190,59,184,255,254,255,254,255, + 254,251,190,251,190,255,254,255,254,255,254,59,184,251,190,251, + 190,251,190,14,14,28,17,0,255,192,0,192,0,196,16,196, + 32,196,64,196,128,197,0,198,0,199,240,192,0,192,0,192, + 0,255,252,255,252,16,16,32,17,255,254,240,0,240,0,247, + 12,247,28,247,56,247,112,247,224,247,192,247,252,247,252,247, + 252,240,0,255,255,255,255,255,255,255,255,14,14,28,17,243, + 255,0,12,0,12,32,140,16,140,8,140,4,140,2,140,1, + 140,63,140,0,12,0,12,0,12,255,252,255,252,16,16,32, + 17,242,254,0,15,0,15,48,239,56,239,28,239,14,239,7, + 239,3,239,63,239,63,239,63,239,0,15,255,255,255,255,255, + 255,255,255,13,14,28,17,250,255,2,0,2,0,2,0,2, + 0,2,0,2,0,34,32,18,64,10,128,7,0,2,0,0, + 0,255,248,255,248,15,16,32,17,249,254,3,128,3,128,3, + 128,3,128,3,128,3,128,51,152,59,184,31,240,15,224,7, + 192,3,128,255,254,255,254,255,254,255,254,14,10,20,17,249, + 255,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,16,12,24,17,248,254,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,255,255,255,255,255, + 255,255,255,15,16,32,17,248,248,255,254,128,0,191,254,160, + 2,175,250,168,10,171,234,170,42,170,170,171,170,168,42,175, + 234,160,10,191,250,128,2,255,254,16,16,32,17,248,248,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,10, + 14,28,17,252,242,12,0,12,0,30,0,30,0,63,0,63, + 0,127,128,127,128,204,192,140,64,12,0,12,0,12,0,12, + 0,12,16,32,17,251,241,15,0,15,0,31,128,31,128,63, + 192,63,192,127,224,127,224,255,240,255,240,255,240,239,112,15, + 0,15,0,15,0,15,0,14,14,28,17,249,249,7,128,31, + 224,63,240,120,120,112,56,224,28,224,28,224,28,224,28,112, + 56,120,120,63,240,31,224,7,128,16,16,32,17,248,248,7, + 224,31,248,63,252,127,254,127,254,252,63,248,31,248,31,248, + 31,248,31,252,63,127,254,127,254,63,252,31,248,7,224,14, + 16,32,17,250,243,63,240,103,152,200,204,147,36,158,36,136, + 68,199,140,127,248,83,40,83,40,83,40,87,168,211,44,240, + 60,255,252,255,252,15,16,32,17,250,243,127,248,239,156,219, + 238,183,182,191,246,159,102,207,206,255,252,215,172,215,172,215, + 172,223,236,215,174,243,62,255,254,255,254,15,16,32,17,249, + 249,31,240,32,8,96,6,80,26,79,226,192,2,192,2,64, + 2,64,2,89,26,106,170,235,170,218,154,64,2,64,2,63, + 252,16,16,32,17,249,249,31,240,63,248,127,255,127,255,255, + 255,255,255,255,255,255,255,127,255,127,255,255,255,255,255,255, + 255,255,255,127,255,63,252,16,15,30,17,249,248,2,128,2, + 128,2,128,2,128,2,128,2,128,254,255,0,0,254,255,2, + 128,2,128,2,128,2,128,2,128,2,128,16,16,32,17,249, + 247,7,192,7,192,7,192,7,192,7,192,255,255,255,255,255, + 255,255,255,255,255,7,192,7,192,7,192,7,192,7,192,7, + 192,16,15,30,17,249,248,66,132,162,138,82,148,42,168,22, + 208,10,160,253,127,2,128,253,127,10,160,22,208,42,168,82, + 148,162,138,66,132,16,15,30,17,249,248,102,204,182,219,222, + 246,110,236,54,216,250,191,252,127,1,0,252,127,250,191,54, + 216,110,236,222,246,182,219,102,204,16,15,30,17,249,248,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,254,255,1, + 0,1,0,1,0,1,0,1,0,1,0,1,0,16,16,32, + 17,249,247,3,128,3,128,3,128,3,128,3,128,3,128,255, + 255,255,255,255,255,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,15,15,30,17,249,248,2,128,6,192,10,160,18, + 144,34,136,66,132,254,254,0,0,254,254,66,132,34,136,18, + 144,10,160,6,192,2,128,16,16,32,17,249,247,7,192,15, + 224,31,240,59,184,115,156,227,142,255,255,254,255,255,255,227, + 142,115,156,59,184,31,240,15,224,7,192,3,128,10,10,20, + 17,251,251,30,0,127,128,127,128,255,192,255,192,255,192,255, + 192,127,128,127,128,30,0,12,12,24,17,250,250,31,128,127, + 224,127,224,255,240,255,240,255,240,255,240,255,240,255,240,127, + 224,127,224,31,128,12,12,24,17,250,249,255,240,128,16,128, + 16,128,16,128,16,134,16,134,16,128,16,128,16,128,16,128, + 16,255,240,14,14,28,17,249,248,255,252,255,252,255,252,224, + 28,224,28,231,156,231,156,231,156,231,156,224,28,224,28,255, + 252,255,252,255,252,10,14,28,17,251,249,12,0,30,0,63, + 0,109,128,204,192,12,0,12,0,12,0,12,0,204,192,109, + 128,63,0,30,0,12,0,12,16,32,17,250,248,15,0,31, + 128,63,192,127,224,255,240,255,240,255,240,15,0,15,0,255, + 240,255,240,255,240,127,224,63,192,31,128,15,0,15,15,30, + 17,242,241,0,2,0,12,0,60,0,248,3,248,15,240,63, + 240,1,224,2,224,4,192,8,192,16,128,32,128,64,0,128, + 0,15,16,32,17,242,240,0,6,0,30,0,126,1,252,7, + 248,31,248,127,240,127,240,7,224,15,224,29,192,57,192,113, + 128,225,128,192,0,128,0,15,15,30,17,242,241,0,2,0, + 12,0,60,0,248,3,248,0,112,0,176,1,32,2,32,4, + 0,8,0,16,0,32,0,64,0,128,0,15,15,30,17,242, + 241,0,6,0,30,0,124,1,252,7,248,7,248,1,240,3, + 240,7,96,14,64,28,0,56,0,112,0,224,0,192,0,12, + 12,24,17,250,249,255,240,137,16,153,144,176,208,224,112,134, + 16,134,16,224,112,176,208,153,144,137,16,255,240,14,14,28, + 17,249,248,255,252,255,252,207,204,223,236,252,252,251,124,247, + 188,247,188,251,124,252,252,223,236,207,204,255,252,255,252,14, + 14,28,17,250,248,143,192,223,224,248,48,144,16,152,0,252, + 0,0,0,0,0,0,252,0,100,32,36,48,124,31,236,15, + 196,16,16,32,17,249,247,199,224,239,240,255,248,255,252,252, + 28,255,12,255,0,255,0,0,255,0,255,48,127,56,63,63, + 255,31,255,15,247,7,227,14,14,28,17,249,249,3,0,7, + 128,15,192,3,0,35,16,99,24,255,252,255,252,99,24,35, + 16,3,0,15,192,7,128,3,0,16,16,32,17,248,248,3, + 192,3,224,7,224,15,240,23,232,59,220,255,255,255,255,255, + 255,255,255,59,220,23,232,15,240,7,224,3,192,3,192,16, + 15,30,17,242,243,0,120,0,112,128,51,159,176,255,240,254, + 48,252,48,96,56,0,240,31,224,8,0,8,0,8,0,8, + 0,30,0,16,16,32,17,242,243,0,252,0,252,192,255,255, + 255,255,255,255,252,255,252,255,252,255,252,255,252,127,248,31, + 240,28,0,28,0,63,0,63,0,16,16,32,17,254,240,63, + 0,16,128,200,64,234,160,200,32,203,160,248,60,56,63,8, + 39,8,39,9,47,9,39,9,32,17,16,33,8,62,248,16, + 16,32,17,254,240,63,0,223,128,239,192,255,224,239,224,239, + 252,255,254,255,255,63,239,15,239,15,255,15,239,15,231,31, + 240,63,248,62,248,13,16,32,17,244,240,0,24,0,120,1, + 224,3,192,7,128,15,192,31,224,95,192,255,224,191,224,15, + 192,15,128,148,0,196,0,104,0,48,0,13,16,32,17,244, + 240,0,56,0,248,3,240,7,224,15,192,31,224,127,240,255, + 240,255,240,255,240,255,224,255,192,255,128,254,0,252,0,120, + 0,15,14,28,17,0,242,127,128,128,64,126,32,16,16,14, + 16,16,16,14,40,16,68,12,130,3,4,2,72,1,16,0, + 160,0,64,16,16,32,17,0,241,127,128,255,192,255,224,255, + 240,127,248,31,248,63,248,31,252,63,254,31,255,15,254,7, + 252,3,248,1,240,0,224,0,64,15,14,28,17,250,250,62, + 248,99,140,193,6,128,2,128,2,128,2,128,2,192,6,96, + 12,48,24,24,48,12,96,6,192,3,128,15,14,28,17,250, + 250,62,248,127,252,227,142,193,6,192,6,192,6,194,134,225, + 14,112,28,56,56,28,112,15,224,7,192,3,128,16,16,32, + 17,248,248,255,255,213,85,170,171,213,85,160,11,208,5,160, + 11,208,5,160,11,208,5,160,11,208,5,170,171,213,85,170, + 171,255,255,16,16,32,17,248,248,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,14,14,28,17,249,248,127, + 248,63,240,159,228,207,204,231,156,243,60,255,252,255,252,243, + 60,231,156,207,204,159,228,63,240,127,248,16,16,32,17,248, + 247,63,252,127,254,127,254,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,127,254,127,254,63, + 252,8,14,14,17,0,242,128,192,224,240,248,252,254,255,248, + 216,140,12,6,6,10,16,32,17,255,241,192,0,224,0,240, + 0,248,0,252,0,254,0,255,0,255,128,255,192,255,192,254, + 0,239,0,207,0,7,128,7,128,3,0,14,13,26,17,0, + 249,192,0,192,0,193,0,194,0,196,0,200,0,223,252,200, + 0,196,0,194,0,193,0,192,0,192,0,16,15,30,17,255, + 248,240,0,240,0,240,192,241,192,243,128,247,0,255,255,255, + 255,255,255,247,0,243,128,241,192,240,192,240,0,240,0,10, + 14,28,17,0,249,192,0,192,0,192,0,192,0,192,0,192, + 0,255,192,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,12,16,32,17,255,248,240,0,240,0,240,0,240,0,240, + 0,240,0,255,240,255,240,255,240,255,240,240,0,240,0,240, + 0,240,0,240,0,240,0,16,16,32,17,248,248,128,3,127, + 253,127,253,68,69,69,85,69,85,69,85,69,85,68,69,127, + 253,127,253,127,253,127,253,127,253,127,253,128,3,15,16,32, + 17,248,248,127,252,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,127,252,10,10,20,17,0,255,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,255,192,255,192,12,12,24, + 17,255,254,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,255,240,255,240,255,240,255,240,10,10,20,17,247, + 255,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,255,192,255,192,12,12,24,17,246,254,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,255,240,255,240,255, + 240,255,240,16,16,32,17,242,245,3,128,30,240,2,128,129, + 0,67,135,36,75,29,112,5,64,4,64,2,128,4,64,9, + 32,18,144,20,80,120,60,248,63,16,16,32,17,242,245,31, + 224,63,240,63,248,195,130,231,199,127,255,63,251,31,240,7, + 224,7,192,15,224,31,240,63,248,126,252,252,127,252,127,16, + 16,32,17,248,248,128,3,127,253,127,253,68,69,84,85,84, + 85,84,85,84,85,68,69,127,253,127,253,127,253,127,253,127, + 253,127,253,128,3,15,16,32,17,248,248,127,252,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,127,252,15,14,28,17,252, + 243,7,0,12,0,6,0,3,0,127,248,128,4,179,54,179, + 54,179,54,128,6,128,6,96,28,24,96,7,128,16,16,32, + 17,252,241,15,128,30,0,15,0,7,0,127,248,255,252,255, + 255,255,255,255,255,255,255,255,255,255,255,63,247,31,224,15, + 192,7,128,11,16,32,17,246,255,112,0,136,0,140,0,74, + 0,122,0,33,0,17,0,16,128,8,128,12,64,4,64,2, + 32,1,224,0,224,0,96,0,32,13,16,32,17,245,255,252, + 0,254,0,255,0,127,0,63,128,63,128,31,192,15,192,15, + 224,7,224,7,240,3,248,1,248,0,248,0,120,0,56,15, + 16,32,17,249,252,7,128,15,192,31,224,51,48,51,48,31, + 224,15,192,7,128,135,132,135,134,67,8,56,112,7,128,31, + 226,240,62,128,4,16,16,32,17,249,252,15,192,31,224,63, + 240,127,248,127,248,63,240,31,224,143,193,143,199,207,207,247, + 156,120,120,7,128,127,227,255,255,240,62,10,10,20,17,252, + 251,12,0,12,0,12,0,12,0,255,192,255,192,12,0,12, + 0,12,0,12,0,12,12,24,17,251,250,15,0,15,0,15, + 0,15,0,255,240,255,240,255,240,255,240,15,0,15,0,15, + 0,15,0,9,15,30,17,252,248,62,0,127,0,227,128,193, + 128,225,128,99,128,7,0,30,0,28,0,20,0,20,0,119, + 0,54,0,28,0,8,0,11,16,32,17,251,248,31,0,63, + 128,127,192,255,224,241,224,249,224,123,224,63,192,31,128,31, + 0,31,0,63,128,127,192,63,128,31,0,14,0,8,14,14, + 17,249,242,1,3,7,15,31,63,127,255,31,27,49,48,96, + 96,10,16,32,17,248,241,0,192,1,192,3,192,7,192,15, + 192,31,192,63,192,127,192,255,192,255,192,31,192,61,192,60, + 192,120,0,120,0,48,0,14,13,26,17,243,249,0,12,0, + 12,2,12,1,12,0,140,0,76,255,236,0,76,0,140,1, + 12,2,12,0,12,0,12,16,15,30,17,242,248,0,15,0, + 15,3,15,3,143,1,207,0,239,255,255,255,255,255,255,0, + 239,1,207,3,143,3,15,0,15,0,15,10,14,28,17,247, + 249,0,192,0,192,0,192,0,192,0,192,0,192,255,192,255, + 192,0,192,0,192,0,192,0,192,0,192,0,192,12,16,32, + 17,246,248,0,240,0,240,0,240,0,240,0,240,0,240,255, + 240,255,240,255,240,255,240,0,240,0,240,0,240,0,240,0, + 240,0,240,16,16,32,17,248,248,128,3,127,253,127,253,68, + 69,85,69,85,69,85,69,85,69,68,69,127,253,127,253,127, + 253,127,253,127,253,127,253,128,3,15,16,32,17,248,248,127, + 252,255,254,255,254,255,254,255,254,255,254,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,255,254,127,252,14, + 14,28,17,250,248,255,252,128,68,128,68,128,68,255,196,136, + 68,136,68,136,68,136,68,143,252,136,4,136,4,136,4,255, + 252,16,16,32,17,249,247,255,255,255,255,255,255,224,119,255, + 247,255,247,255,247,238,119,238,119,239,255,239,255,239,255,238, + 7,255,255,255,255,255,255,12,13,26,17,250,242,1,0,1, + 0,5,128,5,128,13,128,13,192,29,192,29,192,61,224,61, + 224,125,224,125,240,248,224,16,16,32,17,248,240,0,192,0, + 224,1,224,3,240,3,240,7,240,7,248,15,248,15,248,31, + 252,31,252,63,252,63,255,127,255,255,248,127,224,7,15,15, + 17,253,0,40,40,40,40,40,40,40,40,40,40,40,254,124, + 56,16,9,16,32,17,252,255,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,255,128,255,128, + 127,0,62,0,28,0,8,0,15,7,14,17,249,252,16,16, + 48,24,127,252,240,30,127,252,48,24,16,16,15,9,18,17, + 249,251,24,48,56,56,127,252,255,254,255,254,255,254,127,252, + 56,56,24,48,15,7,14,17,1,252,16,0,48,0,127,254, + 240,0,127,254,48,0,16,0,16,9,18,17,0,251,12,0, + 28,0,63,255,127,255,255,255,127,255,63,255,28,0,12,0, + 15,7,14,17,241,252,0,16,0,24,255,252,0,30,255,252, + 0,24,0,16,16,9,18,17,241,251,0,48,0,56,255,252, + 255,254,255,255,255,254,255,252,0,56,0,48,7,15,15,17, + 253,240,16,56,124,254,40,40,40,40,40,40,40,40,40,40, + 40,9,16,32,17,252,240,8,0,28,0,62,0,127,0,255, + 128,255,128,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,7,15,15,17,253,248,16,56,124, + 254,40,40,40,40,40,40,40,254,124,56,16,9,15,30,17, + 252,248,28,0,62,0,127,0,255,128,255,128,62,0,62,0, + 62,0,62,0,62,0,255,128,255,128,127,0,62,0,28,0, + 15,16,32,17,246,240,0,32,0,112,0,248,1,222,5,222, + 9,222,17,222,17,222,17,222,17,222,49,222,113,222,253,222, + 24,136,0,120,0,48,16,16,32,17,245,240,0,56,0,124, + 0,254,0,255,6,255,14,255,30,255,30,255,30,255,30,255, + 62,255,126,255,254,255,126,254,12,126,0,60,14,14,28,17, + 249,249,255,0,128,0,128,0,128,0,143,192,136,64,136,68, + 136,68,8,68,15,196,0,36,0,20,0,12,3,252,16,16, + 32,17,248,248,255,192,255,192,255,192,224,0,239,240,239,240, + 239,247,238,119,238,119,239,247,15,247,15,255,0,31,3,255, + 3,255,3,255,16,16,32,17,250,247,32,16,16,32,16,32, + 8,64,8,64,135,135,103,152,31,224,31,224,103,152,135,135, + 8,64,8,64,16,32,16,32,32,16,16,16,32,17,250,247, + 96,24,48,48,16,32,24,96,143,193,207,207,111,220,63,240, + 63,224,111,248,207,207,143,193,24,64,24,96,48,48,96,24, + 11,16,32,17,247,242,0,96,1,0,52,96,121,0,104,96, + 252,0,132,0,228,0,164,0,228,0,164,0,228,0,228,0, + 132,0,132,0,252,0,12,16,32,17,246,242,0,48,24,176, + 62,176,62,176,126,176,255,0,255,0,255,0,255,0,255,0, + 255,0,255,0,255,0,255,0,255,0,255,0,15,16,32,17, + 249,247,1,0,2,128,2,128,2,128,4,64,4,64,4,64, + 57,56,192,6,56,56,9,32,18,144,36,72,40,40,48,24, + 32,8,16,16,32,17,249,247,1,0,3,128,3,128,6,192, + 6,192,12,96,28,120,249,62,192,7,248,62,57,56,51,152, + 102,204,108,108,120,60,112,28,15,13,26,17,249,249,3,128, + 15,224,28,112,48,24,96,12,193,6,194,134,193,6,96,12, + 48,24,28,112,15,224,3,128,16,14,28,17,249,249,7,192, + 15,224,31,240,60,120,112,28,225,14,195,135,198,199,195,135, + 225,14,112,28,60,120,31,240,7,192,13,13,26,16,250,249, + 2,0,2,0,2,0,2,0,2,0,2,0,255,248,2,0, + 2,0,2,0,2,0,2,0,2,0,15,15,30,16,249,248, + 3,128,3,128,3,128,3,128,3,128,3,128,255,254,255,254, + 255,254,3,128,3,128,3,128,3,128,3,128,3,128,14,14, + 28,17,0,242,192,0,240,0,124,0,127,0,63,192,63,240, + 31,0,31,0,12,128,12,64,4,32,4,16,0,8,0,4, + 16,16,32,17,255,241,224,0,248,0,254,0,127,128,127,224, + 63,252,63,252,31,252,31,192,15,224,15,112,7,56,7,28, + 7,14,0,7,0,3,14,14,28,17,0,242,255,252,255,252, + 192,0,192,0,192,0,199,240,198,0,197,0,196,128,196,64, + 196,32,196,16,192,0,192,0,16,16,32,17,255,241,255,255, + 255,255,255,255,255,255,240,0,247,252,247,252,247,252,247,192, + 247,224,247,112,247,56,247,28,247,12,240,0,240,0,14,14, + 28,17,243,242,255,252,255,252,0,12,0,12,0,12,63,140, + 1,140,2,140,4,140,8,140,16,140,32,140,0,12,0,12, + 16,16,32,17,242,241,255,255,255,255,255,255,255,255,0,15, + 63,239,63,239,63,239,3,239,7,239,14,239,28,239,56,239, + 48,239,0,15,0,15,13,14,28,17,250,242,255,248,255,248, + 0,0,2,0,7,0,10,128,18,64,34,32,2,0,2,0, + 2,0,2,0,2,0,2,0,15,16,32,17,249,241,255,254, + 255,254,255,254,255,254,3,128,7,192,15,224,31,240,59,184, + 51,152,3,128,3,128,3,128,3,128,3,128,3,128,14,10, + 20,17,249,246,255,252,255,252,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,16,12,24,17,248,245,255,255, + 255,255,255,255,255,255,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,7,16,16,17,253,240,16,0,56,124, + 254,238,254,124,56,16,186,214,146,130,130,130,9,16,32,17, + 252,240,28,0,28,0,62,0,127,0,255,128,255,128,255,128, + 127,0,62,0,93,0,255,128,255,128,255,128,235,128,235,128, + 227,128,10,10,20,17,0,246,255,192,255,192,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,12,12,24,17, + 255,245,255,240,255,240,255,240,255,240,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,14,14,28,17,249,244, + 17,32,4,80,147,76,79,144,50,96,194,24,2,0,2,0, + 2,0,2,0,2,0,2,128,2,128,1,0,16,16,32,17, + 248,242,23,110,223,251,191,252,127,255,255,252,255,255,243,158, + 3,128,3,128,3,128,3,128,3,224,3,224,3,224,3,224, + 1,192,10,10,20,17,247,246,255,192,255,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,12,12,24,17, + 246,245,255,240,255,240,255,240,255,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,16,16,32,17,241,249, + 31,224,31,224,31,224,63,240,97,24,193,12,129,7,131,135, + 131,135,132,7,200,12,96,24,63,240,31,224,31,224,31,224, + 16,16,32,17,241,249,63,240,63,240,63,240,127,248,255,252, + 255,255,255,255,255,255,255,255,255,255,255,255,255,252,127,248, + 63,240,63,240,63,240,7,14,14,10,253,249,238,56,16,16, + 16,16,16,16,16,16,16,16,56,238,9,16,32,10,252,248, + 247,128,255,128,255,128,62,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,255,128,247,128, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255}; +/* + Fontname: cursor + Copyright: These + Capital A Height: 0, '1' Height: 0 + Calculated Max Values w=16 h=16 x= 0 y= 0 dx=17 dy= 0 ascent= 7 len=32 + Font Bounding box w=31 h=31 x=-15 y=-16 + Calculated Min Values x=-14 y=-16 dx= 0 dy= 0 + Pure Font ascent = 0 descent= 0 + X Font ascent = 0 descent= 0 + Max Font ascent = 7 descent=-16 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_cursorr[492] U8G_SECTION(".progmem.u8g_font_cursorr") = { + 0,31,31,241,240,0,1,6,0,0,32,80,0,7,240,0, + 0,255,255,14,14,28,17,243,242,0,12,0,60,0,248,3, + 248,15,240,63,240,3,224,7,224,14,192,28,192,56,128,112, + 128,224,0,64,0,16,16,32,17,242,241,0,7,0,31,0, + 127,1,254,7,254,31,252,63,252,63,248,7,248,15,240,31, + 240,62,224,124,224,248,64,112,0,32,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,10,14,28, + 17,252,242,12,0,12,0,30,0,30,0,63,0,63,0,127, + 128,127,128,204,192,140,64,12,0,12,0,12,0,12,0,12, + 16,32,17,251,241,15,0,15,0,31,128,31,128,63,192,63, + 192,127,224,127,224,255,240,255,240,255,240,239,112,15,0,15, + 0,15,0,15,0,255,255,255,255,255,255,16,15,30,17,249, + 248,2,128,2,128,2,128,2,128,2,128,2,128,254,255,0, + 0,254,255,2,128,2,128,2,128,2,128,2,128,2,128,16, + 16,32,17,249,247,7,192,7,192,7,192,7,192,7,192,255, + 255,255,255,255,255,255,255,255,255,7,192,7,192,7,192,7, + 192,7,192,7,192,255,255,16,15,30,17,249,248,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,254,255,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,16,16,32,17,249, + 247,3,128,3,128,3,128,3,128,3,128,3,128,255,255,255, + 255,255,255,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,255,255,255,255,255,255,255,255,15,15,30,17,242,241,0, + 2,0,12,0,60,0,248,3,248,15,240,63,240,1,224,2, + 224,4,192,8,192,16,128,32,128,64,0,128,0,15,16,32, + 17,242,240,0,6,0,30,0,126,1,252,7,248,31,248,127, + 240,127,240,7,224,15,224,29,192,57,192,113,128,225,128,192, + 0,128,0,15,15,30,17,242,241,0,2,0,12,0,60,0, + 248,3,248,0,112,0,176,1,32,2,32,4,0,8,0,16, + 0,32,0,64,0,128,0,15,15,30,17,242,241,0,6,0, + 30,0,124,1,252,7,248,7,248,1,240,3,240,7,96,14, + 64,28,0,56,0,112,0,224,0,192,0,255}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 6 dx= 6 dy= 0 ascent= 7 len= 9 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0[1702] U8G_SECTION(".progmem.u8g_font_fixed_v0") = { + 1,7,9,0,254,7,1,46,2,94,32,255,254,7,254,7, + 254,2,0,64,34,23,103,128,128,128,128,0,128,128,23,50, + 98,160,160,3,85,101,80,248,80,248,80,2,87,103,112,168, + 160,112,40,168,112,2,87,103,136,144,16,32,64,72,136,2, + 87,103,104,136,104,144,144,144,104,23,18,98,128,128,2,87, + 103,56,64,128,128,128,64,56,2,87,103,224,16,8,8,8, + 16,224,2,87,103,32,168,112,32,112,168,32,3,85,101,32, + 32,248,32,32,18,34,98,64,128,5,81,97,248,18,18,98, + 128,128,2,87,103,8,16,16,32,64,64,128,2,87,103,112, + 136,136,136,136,136,112,2,87,103,32,96,32,32,32,32,248, + 2,87,103,112,136,8,16,32,64,248,2,87,103,240,8,8, + 48,8,8,240,2,87,103,16,144,144,248,16,16,16,2,87, + 103,248,128,128,240,8,8,240,2,87,103,112,128,128,240,136, + 136,112,2,87,103,248,8,8,8,8,8,8,2,87,103,112, + 136,136,112,136,136,112,2,87,103,112,136,136,248,8,8,112, + 18,21,101,128,128,0,128,128,18,37,101,64,64,0,64,128, + 2,87,103,24,32,64,128,64,32,24,4,83,99,248,0,248, + 2,87,103,192,32,16,8,16,32,192,2,87,103,248,8,8, + 48,0,32,32,2,87,103,112,136,136,168,184,128,112,2,87, + 103,112,136,136,248,136,136,136,2,87,103,240,136,136,240,136, + 136,240,2,87,103,112,136,128,128,128,136,112,2,87,103,240, + 136,136,136,136,136,240,2,87,103,248,128,128,224,128,128,248, + 2,87,103,248,128,128,224,128,128,128,2,87,103,112,136,128, + 184,136,136,112,2,87,103,136,136,136,248,136,136,136,2,87, + 103,248,32,32,32,32,32,248,2,87,103,248,8,8,8,8, + 136,112,2,87,103,136,136,144,224,144,136,136,2,87,103,128, + 128,128,128,128,128,248,2,87,103,136,136,216,168,136,136,136, + 2,87,103,136,136,200,168,152,136,136,2,87,103,112,136,136, + 136,136,136,112,2,87,103,240,136,136,240,128,128,128,2,87, + 103,112,136,136,136,136,168,112,2,87,103,240,136,136,240,160, + 144,136,2,87,103,112,136,128,112,8,136,112,2,87,103,248, + 32,32,32,32,32,32,2,87,103,136,136,136,136,136,136,112, + 2,87,103,136,136,136,136,136,80,32,2,87,103,136,136,136, + 168,168,168,80,2,87,103,136,136,80,32,80,136,136,2,87, + 103,136,136,80,32,32,32,32,2,87,103,248,8,16,32,64, + 128,248,18,55,103,224,128,128,128,128,128,224,2,87,103,128, + 64,64,32,16,16,8,18,55,103,224,32,32,32,32,32,224, + 23,50,98,64,160,2,113,97,254,39,34,98,64,128,2,85, + 101,112,8,120,136,120,2,87,103,128,128,240,136,136,136,240, + 2,85,101,112,136,128,136,112,2,87,103,8,8,120,136,136, + 136,120,2,85,101,112,136,248,128,120,2,87,103,56,64,240, + 64,64,64,64,0,87,103,112,136,136,136,120,8,112,2,87, + 103,128,128,240,136,136,136,136,2,87,103,48,0,248,32,32, + 32,248,0,89,105,48,0,248,8,8,8,8,8,112,2,87, + 103,128,128,136,144,224,144,136,2,87,103,224,32,32,32,32, + 32,248,2,85,101,208,168,168,168,168,2,85,101,176,200,136, + 136,136,2,85,101,112,136,136,136,112,0,87,103,240,136,136, + 136,240,128,128,0,87,103,120,136,136,136,120,8,8,2,85, + 101,184,192,128,128,128,2,85,101,120,128,112,8,240,2,87, + 103,32,32,248,32,32,32,32,2,85,101,136,136,136,136,112, + 2,85,101,136,136,136,80,32,2,85,101,136,168,168,168,80, + 2,85,101,136,80,32,80,136,0,87,103,136,136,136,136,120, + 8,112,2,85,101,248,16,32,64,248,2,87,103,24,32,64, + 192,64,32,24,34,23,103,128,128,128,128,128,128,128,2,87, + 103,192,32,16,24,16,32,192,4,82,98,72,176,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,2, + 87,103,48,0,248,32,32,32,248,2,87,103,32,112,168,160, + 168,112,32,2,87,103,64,64,64,240,64,72,120,3,85,101, + 136,112,80,112,136,2,87,103,136,136,80,248,32,248,32,34, + 23,103,128,128,128,0,128,128,128,2,87,103,120,128,120,136, + 240,8,240,5,81,97,248,2,87,103,112,136,168,200,168,136, + 112,2,87,103,112,8,120,136,120,0,248,4,83,99,72,144, + 72,4,82,98,248,8,255,2,87,103,112,136,248,200,200,136, + 112,8,81,97,248,20,51,99,64,160,64,2,87,103,32,32, + 248,32,32,0,248,255,255,255,255,255,255,255,255,255,4,83, + 99,144,72,144,255,255,255,255,2,87,103,64,32,112,136,248, + 136,136,2,87,103,16,32,112,136,248,136,136,2,87,103,32, + 80,112,136,248,136,136,2,87,103,72,176,112,136,248,136,136, + 2,87,103,80,0,112,136,248,136,136,2,87,103,112,0,112, + 136,248,136,136,2,87,103,120,160,160,240,160,160,184,0,89, + 105,112,136,128,128,128,136,112,32,96,2,87,103,64,32,248, + 128,224,128,248,2,87,103,16,32,248,128,224,128,248,2,87, + 103,32,80,248,128,224,128,248,2,87,103,80,0,248,128,224, + 128,248,2,87,103,64,32,248,32,32,32,248,2,87,103,16, + 32,248,32,32,32,248,2,87,103,32,80,248,32,32,32,248, + 2,87,103,80,0,248,32,32,32,248,2,87,103,240,136,136, + 232,136,136,240,2,87,103,72,176,136,200,168,152,136,2,87, + 103,64,32,112,136,136,136,112,2,87,103,16,32,112,136,136, + 136,112,2,87,103,32,80,112,136,136,136,112,2,87,103,72, + 176,112,136,136,136,112,2,87,103,80,0,112,136,136,136,112, + 20,51,99,160,64,160,2,87,103,112,136,152,168,200,136,112, + 2,87,103,64,32,136,136,136,136,112,2,87,103,16,32,136, + 136,136,136,112,2,87,103,32,80,136,136,136,136,112,2,87, + 103,80,0,136,136,136,136,112,2,87,103,16,32,136,136,80, + 32,32,2,87,103,128,128,240,136,240,128,128,0,89,105,240, + 136,136,176,136,136,176,128,128,2,87,103,64,32,112,8,120, + 136,120,2,87,103,16,32,112,8,120,136,120,2,87,103,32, + 80,112,8,120,136,120,2,87,103,72,176,112,8,120,136,120, + 2,87,103,80,0,112,8,120,136,120,2,87,103,48,0,112, + 8,120,136,120,2,85,101,240,40,120,160,120,0,87,103,112, + 136,128,136,112,32,96,2,87,103,64,32,112,136,248,128,120, + 2,87,103,16,32,112,136,248,128,120,2,87,103,32,80,112, + 136,248,128,120,2,87,103,80,0,112,136,248,128,120,2,87, + 103,64,32,248,32,32,32,248,2,87,103,16,32,248,32,32, + 32,248,2,87,103,32,80,248,32,32,32,248,2,87,103,80, + 0,248,32,32,32,248,2,87,103,8,56,8,120,136,136,120, + 2,87,103,72,176,176,200,136,136,136,2,87,103,64,32,112, + 136,136,136,112,2,87,103,16,32,112,136,136,136,112,2,87, + 103,32,80,112,136,136,136,112,2,87,103,72,176,112,136,136, + 136,112,2,87,103,80,0,112,136,136,136,112,3,85,101,32, + 0,248,0,32,2,85,101,112,152,168,200,112,2,87,103,64, + 32,136,136,136,136,112,2,87,103,16,32,136,136,136,136,112, + 2,87,103,32,80,136,136,136,136,112,2,87,103,80,0,136, + 136,136,136,112,0,89,105,16,32,136,136,136,136,120,8,112, + 2,87,103,128,128,240,136,240,128,128,0,89,105,80,0,136, + 136,136,136,120,8,112}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 5 h= 7 x= 1 y= 3 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 7 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[159] U8G_SECTION(".progmem.u8g_font_fixed_v0n") = { + 1,7,9,0,254,7,0,0,0,0,42,57,0,7,0,7, + 0,2,87,103,32,168,112,32,112,168,32,3,85,101,32,32, + 248,32,32,18,34,98,64,128,5,81,97,248,18,18,98,128, + 128,2,87,103,8,16,16,32,64,64,128,2,87,103,112,136, + 136,136,136,136,112,2,87,103,32,96,32,32,32,32,248,2, + 87,103,112,136,8,16,32,64,248,2,87,103,240,8,8,48, + 8,8,240,2,87,103,16,144,144,248,16,16,16,2,87,103, + 248,128,128,240,8,8,240,2,87,103,112,128,128,240,136,136, + 112,2,87,103,248,8,8,8,8,8,8,2,87,103,112,136, + 136,112,136,136,112,2,87,103,112,136,136,248,8,8,112}; +/* + Fontname: -FreeType-fixed_v01-Medium-R-Normal--8-80-72-72-P-51-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 7 len= 9 + Font Bounding box w= 7 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[878] U8G_SECTION(".progmem.u8g_font_fixed_v0r") = { + 1,7,9,0,254,7,1,46,2,94,32,127,254,7,254,7, + 254,2,0,64,34,23,103,128,128,128,128,0,128,128,23,50, + 98,160,160,3,85,101,80,248,80,248,80,2,87,103,112,168, + 160,112,40,168,112,2,87,103,136,144,16,32,64,72,136,2, + 87,103,104,136,104,144,144,144,104,23,18,98,128,128,2,87, + 103,56,64,128,128,128,64,56,2,87,103,224,16,8,8,8, + 16,224,2,87,103,32,168,112,32,112,168,32,3,85,101,32, + 32,248,32,32,18,34,98,64,128,5,81,97,248,18,18,98, + 128,128,2,87,103,8,16,16,32,64,64,128,2,87,103,112, + 136,136,136,136,136,112,2,87,103,32,96,32,32,32,32,248, + 2,87,103,112,136,8,16,32,64,248,2,87,103,240,8,8, + 48,8,8,240,2,87,103,16,144,144,248,16,16,16,2,87, + 103,248,128,128,240,8,8,240,2,87,103,112,128,128,240,136, + 136,112,2,87,103,248,8,8,8,8,8,8,2,87,103,112, + 136,136,112,136,136,112,2,87,103,112,136,136,248,8,8,112, + 18,21,101,128,128,0,128,128,18,37,101,64,64,0,64,128, + 2,87,103,24,32,64,128,64,32,24,4,83,99,248,0,248, + 2,87,103,192,32,16,8,16,32,192,2,87,103,248,8,8, + 48,0,32,32,2,87,103,112,136,136,168,184,128,112,2,87, + 103,112,136,136,248,136,136,136,2,87,103,240,136,136,240,136, + 136,240,2,87,103,112,136,128,128,128,136,112,2,87,103,240, + 136,136,136,136,136,240,2,87,103,248,128,128,224,128,128,248, + 2,87,103,248,128,128,224,128,128,128,2,87,103,112,136,128, + 184,136,136,112,2,87,103,136,136,136,248,136,136,136,2,87, + 103,248,32,32,32,32,32,248,2,87,103,248,8,8,8,8, + 136,112,2,87,103,136,136,144,224,144,136,136,2,87,103,128, + 128,128,128,128,128,248,2,87,103,136,136,216,168,136,136,136, + 2,87,103,136,136,200,168,152,136,136,2,87,103,112,136,136, + 136,136,136,112,2,87,103,240,136,136,240,128,128,128,2,87, + 103,112,136,136,136,136,168,112,2,87,103,240,136,136,240,160, + 144,136,2,87,103,112,136,128,112,8,136,112,2,87,103,248, + 32,32,32,32,32,32,2,87,103,136,136,136,136,136,136,112, + 2,87,103,136,136,136,136,136,80,32,2,87,103,136,136,136, + 168,168,168,80,2,87,103,136,136,80,32,80,136,136,2,87, + 103,136,136,80,32,32,32,32,2,87,103,248,8,16,32,64, + 128,248,18,55,103,224,128,128,128,128,128,224,2,87,103,128, + 64,64,32,16,16,8,18,55,103,224,32,32,32,32,32,224, + 23,50,98,64,160,2,113,97,254,39,34,98,64,128,2,85, + 101,112,8,120,136,120,2,87,103,128,128,240,136,136,136,240, + 2,85,101,112,136,128,136,112,2,87,103,8,8,120,136,136, + 136,120,2,85,101,112,136,248,128,120,2,87,103,56,64,240, + 64,64,64,64,0,87,103,112,136,136,136,120,8,112,2,87, + 103,128,128,240,136,136,136,136,2,87,103,48,0,248,32,32, + 32,248,0,89,105,48,0,248,8,8,8,8,8,112,2,87, + 103,128,128,136,144,224,144,136,2,87,103,224,32,32,32,32, + 32,248,2,85,101,208,168,168,168,168,2,85,101,176,200,136, + 136,136,2,85,101,112,136,136,136,112,0,87,103,240,136,136, + 136,240,128,128,0,87,103,120,136,136,136,120,8,8,2,85, + 101,184,192,128,128,128,2,85,101,120,128,112,8,240,2,87, + 103,32,32,248,32,32,32,32,2,85,101,136,136,136,136,112, + 2,85,101,136,136,136,80,32,2,85,101,136,168,168,168,80, + 2,85,101,136,80,32,80,136,0,87,103,136,136,136,136,120, + 8,112,2,85,101,248,16,32,64,248,2,87,103,24,32,64, + 192,64,32,24,34,23,103,128,128,128,128,128,128,128,2,87, + 103,192,32,16,24,16,32,192,4,82,98,72,176,255}; +/* + Fontname: -FreeType-FreeDooM-Bold-R-Normal--34-340-72-72-P-170-ISO8859-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w= 7 h=10 x= 4 y=10 dx= 8 dy= 0 ascent=12 len=10 + Font Bounding box w= 7 h=12 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =10 descent= 1 + X Font ascent =12 descent= 0 + Max Font ascent =12 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[1042] U8G_SECTION(".progmem.u8g_font_freedoomr10r") = { + 0,7,12,0,0,10,1,113,3,88,32,127,1,12,0,12, + 0,0,0,0,7,0,1,0,0,0,7,0,1,0,0,0, + 7,0,1,0,0,0,7,0,1,0,0,0,7,0,1,0, + 0,0,7,0,1,0,0,0,7,0,1,0,0,0,7,0, + 1,3,10,10,7,0,2,96,128,128,128,128,128,128,128,128, + 96,3,10,10,7,3,2,192,32,32,32,32,32,32,32,32, + 192,5,5,5,8,1,7,168,112,32,112,168,7,7,7,8, + 0,4,16,16,16,254,16,16,16,2,2,2,7,2,10,64, + 128,7,1,1,8,0,7,254,2,2,2,7,2,2,192,192, + 7,10,10,8,0,2,2,4,4,8,16,16,32,64,64,128, + 6,10,10,7,0,2,252,132,132,132,132,132,132,132,132,252, + 2,10,10,7,4,2,192,64,64,64,64,64,64,64,64,64, + 6,10,10,7,0,2,252,4,4,4,4,252,128,128,128,252, + 6,10,10,7,0,2,252,4,4,4,60,4,4,4,4,252, + 6,10,10,7,0,2,132,132,132,132,132,252,4,4,4,4, + 6,10,10,7,0,2,252,128,128,128,252,4,4,4,4,252, + 6,10,10,7,0,2,252,128,128,128,252,132,132,132,132,252, + 6,10,10,7,0,2,252,4,4,4,4,4,4,4,4,4, + 6,10,10,7,0,2,252,132,132,132,252,132,132,132,132,252, + 6,10,10,7,0,2,252,132,132,132,252,4,4,4,4,252, + 2,7,7,7,2,2,192,192,0,0,0,192,192,0,0,0, + 7,0,1,0,0,0,7,0,1,0,0,0,7,0,1,0, + 0,0,7,0,1,0,0,0,7,0,1,0,0,0,7,0, + 1,7,10,10,8,0,2,254,130,130,130,130,254,130,130,130, + 130,7,10,10,8,0,2,254,130,130,130,252,130,130,130,130, + 254,7,10,10,8,0,2,254,128,128,128,128,128,128,128,128, + 254,7,10,10,8,0,2,252,130,130,130,130,130,130,130,130, + 252,7,10,10,8,0,2,254,128,128,128,248,128,128,128,128, + 254,7,10,10,8,0,2,254,128,128,128,248,128,128,128,128, + 128,7,10,10,8,0,2,254,128,128,128,158,130,130,130,130, + 254,7,10,10,8,0,2,130,130,130,130,254,130,130,130,130, + 130,1,10,10,8,3,2,128,128,128,128,128,128,128,128,128, + 128,7,10,10,8,0,2,30,2,2,2,2,2,130,130,130, + 124,7,10,10,8,0,2,130,132,136,144,224,160,144,136,132, + 130,7,10,10,8,0,2,128,128,128,128,128,128,128,128,128, + 254,7,10,10,8,0,2,130,198,170,146,130,130,130,130,130, + 130,7,10,10,8,0,2,194,194,162,162,146,146,138,138,134, + 134,7,10,10,8,0,2,124,130,130,130,130,130,130,130,130, + 124,7,10,10,8,0,2,254,130,130,130,254,128,128,128,128, + 128,7,10,10,8,0,2,120,132,132,132,132,132,132,132,132, + 126,7,10,10,8,0,2,254,130,130,130,254,160,144,136,132, + 130,7,10,10,8,0,2,254,128,128,128,128,254,2,2,2, + 254,7,9,9,8,0,3,254,16,16,16,16,16,16,16,16, + 7,10,10,8,0,2,130,130,130,130,130,130,130,130,130,254, + 7,10,10,8,0,2,130,130,130,68,68,108,40,40,16,16, + 7,10,10,8,0,2,130,130,130,130,130,146,146,170,170,198, + 7,10,10,8,0,2,130,68,68,40,16,16,40,68,68,130, + 7,10,10,8,0,2,130,130,130,130,254,16,16,16,16,16, + 7,10,10,8,0,2,254,2,6,12,24,48,96,192,128,254, + 4,10,10,7,0,2,240,128,128,128,128,128,128,128,128,240, + 6,10,10,7,0,2,128,64,64,32,32,16,16,8,8,4, + 4,10,10,7,2,2,240,16,16,16,16,16,16,16,16,240, + 5,3,3,7,1,9,32,80,136,6,1,1,7,0,2,252, + 2,2,2,7,2,10,128,64,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1,0,0,0,7,0,1,0,0,0,7,0,1,0,0, + 0,7,0,1,0,0,0,7,0,1,0,0,0,7,0,1, + 0,0,0,7,0,1,0,0,0,7,0,1,0,0,0,7, + 0,1}; +/* + Fontname: -FreeType-FreeDooM-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=24 x= 7 y=13 dx=19 dy= 0 ascent=26 len=72 + Font Bounding box w=18 h=26 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =26 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[943] U8G_SECTION(".progmem.u8g_font_freedoomr25n") = { + 0,18,26,0,0,24,3,112,3,144,32,127,0,26,0,24, + 0,0,0,0,11,0,0,255,255,255,255,255,255,255,255,255, + 255,17,16,48,19,1,6,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,255,255,128,255, + 255,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,7,8,8,11,3,2,62,62,62, + 62,62,240,240,240,9,2,4,11,1,13,255,128,255,128,5, + 5,5,11,5,2,248,248,248,248,248,255,17,24,72,19,1, + 2,255,255,128,255,255,128,192,3,128,192,3,128,192,3,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,192,3,128,192,3,128, + 255,255,128,255,255,128,255,255,128,6,24,24,19,7,2,252, + 252,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,17,24,72,19,1,2,255,255,128, + 255,255,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,128,0,3,128,0,3,128,0,3,128,0,3,128,255,255, + 128,255,255,128,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,255,255,128,255, + 255,128,255,255,128,17,24,72,19,1,2,255,255,128,255,255, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,0,3,128,0,3,128,31,255,128,31, + 255,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3, + 128,0,3,128,0,3,128,0,3,128,255,255,128,255,255,128, + 255,255,128,17,24,72,19,1,2,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,255,255,128,255,255,128, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,128,0,3,128,0,3,128,0,3,128,0,3,128,0,3, + 128,17,24,72,19,1,2,255,255,128,255,255,128,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,255,255,128,255,255,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,255,255,128,255,255,128,255,255,128,17, + 24,72,19,1,2,255,255,128,255,255,128,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,255,255,128,255,255,128,192,3,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,255,255,128,255,255,128,255,255,128,16,24,48, + 19,2,2,255,255,255,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,17,24,72,19,1,2,255,255,128,255,255,128,192, + 3,128,192,3,128,192,3,128,192,3,128,192,3,128,192,3, + 128,192,3,128,192,3,128,192,3,128,255,255,128,255,255,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,255,255,128,255,255,128,255,255, + 128,17,24,72,19,1,2,255,255,128,255,255,128,192,3,128, + 192,3,128,192,3,128,192,3,128,192,3,128,192,3,128,192, + 3,128,192,3,128,192,3,128,255,255,128,255,255,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,128,0,3,128, + 0,3,128,0,3,128,255,255,128,255,255,128,255,255,128,5, + 16,16,11,5,2,248,248,248,248,248,0,0,0,0,0,0, + 248,248,248,248,248,7,16,16,11,3,2,62,62,62,62,62, + 0,0,0,62,62,62,62,62,240,240,240,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=17 x= 4 y=10 dx=17 dy= 0 ascent=17 len=34 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =17 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11[3948] U8G_SECTION(".progmem.u8g_font_fub11") = { + 0,24,21,255,252,11,2,82,5,55,32,255,253,17,252,11, + 253,0,0,0,5,0,0,2,11,11,6,2,0,192,192,192, + 192,192,192,192,192,0,0,192,6,5,5,8,1,6,204,204, + 204,204,204,10,11,22,11,1,0,9,128,25,128,25,0,127, + 192,51,0,50,0,54,0,255,0,100,0,108,0,76,0,8, + 14,14,10,1,254,8,62,126,203,200,248,126,15,11,203,235, + 126,8,8,15,11,22,17,1,0,60,32,238,96,198,64,198, + 192,231,128,125,124,3,238,2,198,6,198,4,238,8,124,11, + 11,22,13,1,0,62,0,119,0,99,0,119,0,60,0,124, + 192,238,192,199,192,195,192,243,192,63,224,2,5,5,7,2, + 6,192,192,192,192,192,3,14,14,6,1,253,96,96,96,224, + 192,192,192,192,192,192,224,96,96,96,3,14,14,7,2,253, + 192,192,192,96,96,96,96,96,96,96,96,224,192,192,6,5, + 5,10,2,5,120,48,252,48,120,9,9,18,16,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,3,4,4,5,1,254,96,96,192,192,4,2,2,6,1, + 3,240,240,2,2,2,5,2,0,192,192,5,12,12,7,1, + 255,24,24,16,48,48,32,32,96,96,64,192,192,8,11,11, + 9,1,0,60,102,195,195,195,195,195,195,195,102,60,4,11, + 11,9,2,0,48,240,240,48,48,48,48,48,48,48,48,8, + 11,11,9,1,0,62,119,99,3,7,6,30,60,112,224,255, + 8,11,11,9,1,0,124,238,198,6,60,6,3,195,199,126, + 60,8,11,11,9,1,0,14,30,30,54,102,102,198,255,255, + 6,6,8,11,11,9,1,0,254,192,192,192,254,231,3,3, + 199,254,124,8,11,11,9,1,0,60,118,67,192,222,231,195, + 195,195,102,60,8,11,11,9,1,0,255,3,7,6,14,12, + 28,24,56,56,112,8,11,11,9,1,0,126,231,195,231,60, + 102,195,195,195,231,60,8,11,11,9,1,0,60,102,195,195, + 231,127,3,3,198,110,60,2,8,8,5,2,0,192,192,0, + 0,0,0,192,192,3,10,10,5,1,254,96,96,0,0,0, + 0,96,96,192,192,10,8,16,16,3,1,0,64,3,128,12, + 0,112,0,128,0,112,0,14,0,1,192,10,4,8,16,3, + 3,255,192,0,0,0,0,255,192,10,8,16,16,3,1,128, + 0,96,0,28,0,3,128,0,192,7,0,24,0,224,0,7, + 11,11,9,1,0,120,238,134,6,12,24,48,48,48,0,48, + 15,14,28,17,1,253,7,224,30,120,48,28,103,236,238,230, + 204,102,204,102,204,102,204,102,239,252,103,184,48,0,28,32, + 7,224,11,11,22,11,0,0,14,0,14,0,15,0,27,0, + 27,128,57,128,49,128,63,192,127,192,96,224,224,96,9,11, + 22,11,1,0,254,0,199,0,195,0,195,0,199,0,252,0, + 195,0,193,128,193,128,195,128,254,0,10,11,22,12,1,0, + 31,0,115,128,97,192,192,0,192,0,192,0,192,0,193,192, + 97,192,115,128,31,0,9,11,22,11,1,0,252,0,207,0, + 195,0,193,128,193,128,193,128,193,128,193,128,195,0,207,0, + 252,0,8,11,11,10,1,0,255,192,192,192,192,255,192,192, + 192,192,255,8,11,11,9,1,0,255,192,192,192,192,254,192, + 192,192,192,192,10,11,22,12,1,0,31,0,59,192,96,192, + 224,0,192,0,195,192,192,192,192,192,96,192,57,192,31,192, + 9,11,22,11,1,0,193,128,193,128,193,128,193,128,193,128, + 255,128,193,128,193,128,193,128,193,128,193,128,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,8,11,11, + 10,1,0,3,3,3,3,3,3,3,195,195,254,124,9,11, + 22,11,1,0,195,0,199,0,206,0,220,0,248,0,248,0, + 220,0,206,0,206,0,199,0,195,128,8,11,11,9,1,0, + 192,192,192,192,192,192,192,192,192,255,255,13,11,22,15,1, + 0,240,120,240,120,248,248,216,216,216,216,221,216,205,152,205, + 152,207,152,199,24,199,24,10,11,22,12,1,0,240,192,240, + 192,248,192,216,192,220,192,204,192,206,192,198,192,199,192,195, + 192,195,192,11,11,22,13,1,0,31,0,123,192,96,192,192, + 96,192,96,192,96,192,96,192,96,96,192,123,192,31,0,8, + 11,11,10,1,0,252,199,195,195,199,254,192,192,192,192,192, + 12,11,22,14,1,0,31,0,123,128,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,240,9,11,22,11, + 1,0,254,0,199,128,193,128,193,128,195,0,254,0,195,0, + 193,128,193,128,193,128,193,128,9,11,22,11,1,0,62,0, + 119,0,193,128,224,0,248,0,127,0,15,128,1,128,193,128, + 119,0,62,0,9,11,22,11,1,0,255,128,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 10,11,22,12,1,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,225,192,115,128,62,0,11,11,22,12, + 0,0,224,96,96,96,112,224,48,192,49,192,57,128,25,128, + 31,128,31,0,15,0,14,0,16,11,22,16,0,0,225,135, + 99,198,99,198,99,198,119,206,54,108,54,108,54,108,60,60, + 28,56,28,56,11,11,22,11,0,0,112,192,49,192,59,128, + 31,0,14,0,14,0,31,0,27,0,51,128,113,192,224,224, + 10,11,22,10,0,0,225,192,113,128,51,128,59,0,31,0, + 30,0,12,0,12,0,12,0,12,0,12,0,8,11,11,10, + 1,0,255,7,6,14,28,24,56,112,96,192,255,4,14,14, + 6,1,253,240,192,192,192,192,192,192,192,192,192,192,192,192, + 240,5,12,12,7,1,255,128,192,192,64,96,96,32,48,48, + 16,16,24,4,14,14,7,1,253,240,48,48,48,48,48,48, + 48,48,48,48,48,48,240,8,10,10,16,4,0,16,24,24, + 36,36,36,66,66,129,129,8,1,1,8,0,254,255,3,3, + 3,4,0,9,192,64,32,7,8,8,9,1,0,60,110,6, + 126,230,198,238,118,8,11,11,10,1,0,192,192,192,220,246, + 199,195,195,195,230,220,7,8,8,9,1,0,60,110,198,192, + 192,198,238,60,8,11,11,10,1,0,3,3,3,59,111,227, + 195,195,195,103,59,7,8,8,9,1,0,60,110,198,254,192, + 198,110,60,5,11,11,7,1,0,56,48,48,248,48,48,48, + 48,48,48,48,8,11,11,10,1,253,59,111,227,195,195,195, + 103,59,3,103,60,7,11,11,9,1,0,192,192,192,220,238, + 198,198,198,198,198,198,2,11,11,4,1,0,192,192,0,192, + 192,192,192,192,192,192,192,3,14,14,5,1,253,96,96,0, + 96,96,96,96,96,96,96,96,96,224,224,7,11,11,9,1, + 0,192,192,192,206,220,216,240,216,220,204,198,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,12,8,16, + 14,1,0,220,224,239,112,198,48,198,48,198,48,198,48,198, + 48,198,48,7,8,8,9,1,0,220,238,198,198,198,198,198, + 198,8,8,8,10,1,0,60,102,195,195,195,195,102,60,8, + 11,11,10,1,253,220,230,195,195,195,199,246,220,192,192,192, + 8,11,11,10,1,253,59,103,195,195,195,195,111,59,3,3, + 3,5,8,8,7,1,0,216,240,192,192,192,192,192,192,7, + 8,8,9,1,0,124,238,192,248,30,198,238,124,6,10,10, + 8,1,0,48,48,252,48,48,48,48,48,56,28,7,8,8, + 9,1,0,198,198,198,198,198,198,238,118,8,8,8,9,0, + 0,227,99,103,118,54,60,28,28,13,8,16,14,0,0,231, + 24,103,152,103,152,111,176,61,240,60,240,60,240,56,224,8, + 8,8,9,0,0,99,118,62,28,60,62,103,227,8,11,11, + 9,0,253,227,99,119,54,54,62,28,28,24,24,56,6,8, + 8,8,1,0,252,12,24,56,112,96,192,252,6,15,15,8, + 1,252,28,56,48,48,48,48,112,192,96,48,48,48,48,48, + 28,1,16,16,5,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,15,15,8,1,252,224,112,48, + 48,48,48,24,12,24,48,48,48,48,48,240,8,2,2,9, + 0,3,121,223,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,5,0,0,2,11,11,6,2, + 253,192,0,0,192,192,192,192,192,192,192,192,7,12,12,9, + 1,254,4,4,60,110,206,208,208,214,110,60,32,64,8,11, + 11,10,1,0,62,119,96,96,252,96,96,96,96,96,255,9, + 8,16,10,1,2,128,128,93,0,34,0,65,0,65,0,34, + 0,93,0,128,128,9,11,22,11,1,0,195,128,99,0,103, + 0,247,128,62,0,60,0,255,128,24,0,24,0,24,0,24, + 0,1,14,14,5,2,253,128,128,128,128,128,128,0,0,128, + 128,128,128,128,128,6,14,14,8,1,253,120,236,192,224,120, + 124,204,204,248,120,28,12,156,248,5,1,1,5,0,10,216, + 12,11,22,14,1,0,31,128,57,192,111,96,217,176,152,16, + 152,16,153,144,143,16,64,32,48,192,31,128,5,8,8,7, + 1,3,112,216,120,216,216,120,0,248,8,6,6,10,1,1, + 103,102,238,206,102,103,9,4,8,10,0,3,255,128,0,128, + 0,128,0,128,255,12,11,22,14,1,0,31,128,57,192,111, + 96,201,176,136,144,143,16,137,144,136,144,72,160,48,192,31, + 128,5,1,1,5,0,10,248,4,4,4,6,1,7,96,208, + 144,240,9,10,20,16,3,0,8,0,8,0,8,0,255,128, + 8,0,8,0,8,0,0,0,0,0,255,128,5,6,6,7, + 1,5,112,216,24,48,192,248,5,7,7,7,1,4,112,216, + 24,112,24,216,112,3,3,3,4,1,9,96,192,128,255,7, + 14,14,9,1,253,126,244,244,244,244,116,20,20,20,20,20, + 20,20,20,2,2,2,4,1,4,192,192,4,4,4,3,0, + 252,64,48,176,224,3,6,6,5,1,5,96,224,96,96,96, + 96,6,8,8,8,1,3,120,252,204,204,204,120,0,252,8, + 6,6,10,1,1,204,102,103,103,102,204,12,11,22,13,1, + 0,224,128,97,128,99,0,99,0,102,0,108,224,12,224,25, + 224,25,96,51,240,96,96,11,11,22,13,1,0,97,0,227, + 0,98,0,102,0,100,0,109,224,27,96,24,96,49,192,35, + 0,99,224,12,11,22,13,1,0,120,192,216,128,113,128,217, + 0,115,0,6,96,4,224,13,224,25,96,25,240,48,96,7, + 11,11,9,1,253,24,0,24,24,56,112,224,192,194,254,60, + 11,16,32,11,0,0,24,0,12,0,4,0,0,0,0,0, + 14,0,14,0,15,0,27,0,27,128,57,128,49,128,63,192, + 127,192,96,224,224,96,11,16,32,11,0,0,3,0,2,0, + 4,0,0,0,0,0,14,0,14,0,15,0,27,0,27,128, + 57,128,49,128,63,192,127,192,96,224,224,96,11,16,32,11, + 0,0,6,0,14,0,25,0,0,0,0,0,14,0,14,0, + 15,0,27,0,27,128,57,128,49,128,63,192,127,192,96,224, + 224,96,11,15,30,11,0,0,13,0,23,0,0,0,0,0, + 14,0,14,0,15,0,27,0,27,128,57,128,49,128,63,192, + 127,192,96,224,224,96,11,15,30,11,0,0,27,0,0,0, + 0,0,0,0,14,0,14,0,15,0,27,0,27,0,59,128, + 49,128,63,192,127,192,96,224,224,96,10,17,34,12,1,0, + 12,0,18,0,18,0,30,0,0,0,0,0,12,0,30,0, + 30,0,63,0,51,0,51,0,99,128,127,128,255,192,192,192, + 192,192,15,11,22,16,0,0,3,254,7,128,7,128,13,128, + 29,128,25,254,57,128,63,128,97,128,97,128,193,254,10,15, + 30,12,1,252,31,0,119,128,97,192,192,0,192,0,192,0, + 192,0,193,192,97,192,115,128,62,0,8,0,14,0,2,0, + 28,0,8,16,16,10,1,0,96,48,24,0,0,255,192,192, + 192,192,255,192,192,192,192,255,8,16,16,10,1,0,12,8, + 16,0,0,255,192,192,192,192,255,192,192,192,192,255,8,16, + 16,10,1,0,24,60,36,0,0,255,192,192,192,192,255,192, + 192,192,192,255,8,15,15,10,1,0,102,0,0,0,255,192, + 192,192,192,255,192,192,192,192,255,4,16,16,4,255,0,192, + 96,48,0,0,48,48,48,48,48,48,48,48,48,48,48,4, + 16,16,4,1,0,112,96,192,0,0,192,192,192,192,192,192, + 192,192,192,192,192,4,16,16,4,0,0,96,240,144,0,0, + 96,96,96,96,96,96,96,96,96,96,96,5,15,15,5,0, + 0,216,0,0,0,48,48,48,48,48,48,48,48,48,48,48, + 11,11,22,12,0,0,127,0,99,128,96,192,96,224,96,96, + 252,96,96,96,96,224,96,192,99,128,127,0,10,15,30,12, + 1,0,25,0,22,0,0,0,0,0,240,192,240,192,248,192, + 216,192,220,192,204,192,206,192,198,192,199,192,195,192,195,192, + 11,16,32,13,1,0,24,0,8,0,12,0,0,0,0,0, + 31,0,123,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,123,192,31,0,11,16,32,13,1,0,3,0,2,0, + 4,0,0,0,0,0,31,0,123,192,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,0,11,16,32,13, + 1,0,14,0,27,0,17,0,0,0,0,0,31,0,123,192, + 96,192,192,96,192,96,192,96,192,96,192,96,96,192,123,192, + 31,0,11,15,30,13,1,0,31,0,0,0,0,0,0,0, + 31,0,123,192,96,192,192,96,192,96,192,96,192,96,224,224, + 96,192,127,192,31,0,11,15,30,13,1,0,27,0,0,0, + 0,0,0,0,31,0,123,192,96,192,192,96,192,96,192,96, + 192,96,192,96,96,192,123,192,31,0,8,8,8,16,4,0, + 129,195,102,24,24,36,66,129,11,11,22,13,1,0,31,160, + 59,192,96,192,193,96,194,96,196,96,200,96,208,96,224,192, + 123,128,191,0,10,16,32,12,1,0,48,0,24,0,8,0, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,62,0,10,16,32,12,1,0, + 3,0,6,0,4,0,0,0,0,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,225,192,127,128,62,0, + 10,16,32,12,1,0,28,0,30,0,51,0,0,0,0,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,62,0,10,15,30,12,1,0,51,0,0,0, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,115,128,62,0,10,16,32,10,0,0, + 6,0,6,0,4,0,0,0,0,0,225,192,113,128,51,128, + 59,0,31,0,30,0,12,0,12,0,12,0,12,0,12,0, + 8,11,11,10,1,0,192,192,254,199,195,195,199,254,192,192, + 192,8,11,11,10,1,0,124,238,198,206,220,216,206,199,195, + 219,222,7,12,12,9,1,0,96,48,16,0,60,110,6,126, + 230,198,238,118,7,12,12,9,1,0,12,24,16,0,60,110, + 6,126,230,198,238,118,7,12,12,9,1,0,56,44,68,0, + 60,110,6,126,230,198,238,118,7,11,11,9,1,0,60,0, + 0,60,110,6,126,230,198,238,118,7,11,11,9,1,0,108, + 0,0,60,230,6,126,230,198,238,118,7,13,13,9,1,0, + 24,36,36,60,0,60,102,6,126,230,198,238,126,13,8,16, + 15,1,0,60,224,103,176,7,24,127,248,231,0,199,24,237, + 184,120,240,7,12,12,9,1,252,60,110,198,192,192,198,110, + 60,16,28,4,56,7,13,13,9,1,0,96,32,48,16,0, + 60,110,198,254,192,198,110,60,7,13,13,9,1,0,12,12, + 24,16,0,60,110,198,254,192,198,110,60,7,13,13,9,1, + 0,24,56,44,68,0,60,110,198,254,192,198,110,60,7,12, + 12,9,1,0,108,0,0,0,60,110,198,254,192,206,110,60, + 3,12,12,4,0,0,192,96,32,0,96,96,96,96,96,96, + 96,96,3,12,12,4,1,0,96,192,128,0,192,192,192,192, + 192,192,192,192,5,12,12,4,0,0,96,208,136,0,96,96, + 96,96,96,96,96,96,5,11,11,5,0,0,216,0,0,48, + 48,48,48,48,48,48,48,8,11,11,10,1,0,51,28,102, + 62,103,195,195,195,195,103,60,7,11,11,9,1,0,60,0, + 0,220,238,198,198,198,198,198,198,8,13,13,10,1,0,96, + 48,16,8,0,60,102,195,195,195,195,102,60,8,13,13,10, + 1,0,6,12,8,16,0,60,102,195,195,195,195,102,60,8, + 13,13,10,1,0,24,28,36,34,0,60,102,195,195,195,195, + 102,60,8,11,11,10,1,0,60,0,0,60,102,195,195,195, + 195,102,60,8,12,12,10,1,0,102,0,0,0,60,102,195, + 195,195,195,102,60,10,6,12,16,3,2,12,0,0,0,255, + 192,0,0,0,0,12,0,8,10,10,10,1,255,1,62,102, + 207,203,211,227,118,252,128,7,12,12,9,1,0,96,48,16, + 0,198,198,198,198,198,198,238,118,7,12,12,9,1,0,12, + 24,16,0,198,198,198,198,198,198,238,118,7,12,12,9,1, + 0,56,40,68,0,198,198,198,198,198,198,238,118,7,11,11, + 9,1,0,108,0,0,198,198,198,198,198,198,238,118,9,16, + 32,9,0,253,7,0,6,0,12,0,8,0,0,0,99,128, + 99,0,115,0,54,0,54,0,30,0,28,0,28,0,28,0, + 248,0,112,0,8,14,14,10,1,253,192,192,192,220,230,195, + 195,195,199,230,220,192,192,192,8,14,14,9,1,253,108,0, + 0,199,198,238,108,108,60,56,56,56,48,48}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 9 h=12 x= 3 y= 5 dx=16 dy= 0 ascent=11 len=18 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11n[266] U8G_SECTION(".progmem.u8g_font_fub11n") = { + 0,24,21,255,252,11,0,0,0,0,42,57,0,11,254,11, + 0,6,5,5,10,2,5,120,48,252,48,120,9,9,18,16, + 3,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,3,4,4,5,1,254,96,96,192,192,4,2, + 2,6,1,3,240,240,2,2,2,5,2,0,192,192,5,12, + 12,7,1,255,24,24,16,48,48,32,32,96,96,64,192,192, + 8,11,11,9,1,0,60,102,195,195,195,195,195,195,195,102, + 60,4,11,11,9,2,0,48,240,240,48,48,48,48,48,48, + 48,48,8,11,11,9,1,0,62,119,99,3,7,6,30,60, + 112,224,255,8,11,11,9,1,0,124,238,198,6,60,6,3, + 195,199,126,60,8,11,11,9,1,0,14,30,30,54,102,102, + 198,255,255,6,6,8,11,11,9,1,0,254,192,192,192,254, + 231,3,3,199,254,124,8,11,11,9,1,0,60,118,67,192, + 222,231,195,195,195,102,60,8,11,11,9,1,0,255,3,7, + 6,14,12,28,24,56,56,112,8,11,11,9,1,0,126,231, + 195,231,60,102,195,195,195,231,60,8,11,11,9,1,0,60, + 102,195,195,231,127,3,3,198,110,60}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--16-160-72-72-P-81-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 4 y= 9 dx=17 dy= 0 ascent=12 len=28 + Font Bounding box w=24 h=21 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub11r[1829] U8G_SECTION(".progmem.u8g_font_fub11r") = { + 0,24,21,255,252,11,2,82,5,55,32,127,253,12,252,11, + 253,0,0,0,5,0,0,2,11,11,6,2,0,192,192,192, + 192,192,192,192,192,0,0,192,6,5,5,8,1,6,204,204, + 204,204,204,10,11,22,11,1,0,9,128,25,128,25,0,127, + 192,51,0,50,0,54,0,255,0,100,0,108,0,76,0,8, + 14,14,10,1,254,8,62,126,203,200,248,126,15,11,203,235, + 126,8,8,15,11,22,17,1,0,60,32,238,96,198,64,198, + 192,231,128,125,124,3,238,2,198,6,198,4,238,8,124,11, + 11,22,13,1,0,62,0,119,0,99,0,119,0,60,0,124, + 192,238,192,199,192,195,192,243,192,63,224,2,5,5,7,2, + 6,192,192,192,192,192,3,14,14,6,1,253,96,96,96,224, + 192,192,192,192,192,192,224,96,96,96,3,14,14,7,2,253, + 192,192,192,96,96,96,96,96,96,96,96,224,192,192,6,5, + 5,10,2,5,120,48,252,48,120,9,9,18,16,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,3,4,4,5,1,254,96,96,192,192,4,2,2,6,1, + 3,240,240,2,2,2,5,2,0,192,192,5,12,12,7,1, + 255,24,24,16,48,48,32,32,96,96,64,192,192,8,11,11, + 9,1,0,60,102,195,195,195,195,195,195,195,102,60,4,11, + 11,9,2,0,48,240,240,48,48,48,48,48,48,48,48,8, + 11,11,9,1,0,62,119,99,3,7,6,30,60,112,224,255, + 8,11,11,9,1,0,124,238,198,6,60,6,3,195,199,126, + 60,8,11,11,9,1,0,14,30,30,54,102,102,198,255,255, + 6,6,8,11,11,9,1,0,254,192,192,192,254,231,3,3, + 199,254,124,8,11,11,9,1,0,60,118,67,192,222,231,195, + 195,195,102,60,8,11,11,9,1,0,255,3,7,6,14,12, + 28,24,56,56,112,8,11,11,9,1,0,126,231,195,231,60, + 102,195,195,195,231,60,8,11,11,9,1,0,60,102,195,195, + 231,127,3,3,198,110,60,2,8,8,5,2,0,192,192,0, + 0,0,0,192,192,3,10,10,5,1,254,96,96,0,0,0, + 0,96,96,192,192,10,8,16,16,3,1,0,64,3,128,12, + 0,112,0,128,0,112,0,14,0,1,192,10,4,8,16,3, + 3,255,192,0,0,0,0,255,192,10,8,16,16,3,1,128, + 0,96,0,28,0,3,128,0,192,7,0,24,0,224,0,7, + 11,11,9,1,0,120,238,134,6,12,24,48,48,48,0,48, + 15,14,28,17,1,253,7,224,30,120,48,28,103,236,238,230, + 204,102,204,102,204,102,204,102,239,252,103,184,48,0,28,32, + 7,224,11,11,22,11,0,0,14,0,14,0,15,0,27,0, + 27,128,57,128,49,128,63,192,127,192,96,224,224,96,9,11, + 22,11,1,0,254,0,199,0,195,0,195,0,199,0,252,0, + 195,0,193,128,193,128,195,128,254,0,10,11,22,12,1,0, + 31,0,115,128,97,192,192,0,192,0,192,0,192,0,193,192, + 97,192,115,128,31,0,9,11,22,11,1,0,252,0,207,0, + 195,0,193,128,193,128,193,128,193,128,193,128,195,0,207,0, + 252,0,8,11,11,10,1,0,255,192,192,192,192,255,192,192, + 192,192,255,8,11,11,9,1,0,255,192,192,192,192,254,192, + 192,192,192,192,10,11,22,12,1,0,31,0,59,192,96,192, + 224,0,192,0,195,192,192,192,192,192,96,192,57,192,31,192, + 9,11,22,11,1,0,193,128,193,128,193,128,193,128,193,128, + 255,128,193,128,193,128,193,128,193,128,193,128,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,8,11,11, + 10,1,0,3,3,3,3,3,3,3,195,195,254,124,9,11, + 22,11,1,0,195,0,199,0,206,0,220,0,248,0,248,0, + 220,0,206,0,206,0,199,0,195,128,8,11,11,9,1,0, + 192,192,192,192,192,192,192,192,192,255,255,13,11,22,15,1, + 0,240,120,240,120,248,248,216,216,216,216,221,216,205,152,205, + 152,207,152,199,24,199,24,10,11,22,12,1,0,240,192,240, + 192,248,192,216,192,220,192,204,192,206,192,198,192,199,192,195, + 192,195,192,11,11,22,13,1,0,31,0,123,192,96,192,192, + 96,192,96,192,96,192,96,192,96,96,192,123,192,31,0,8, + 11,11,10,1,0,252,199,195,195,199,254,192,192,192,192,192, + 12,11,22,14,1,0,31,0,123,128,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,123,192,31,240,9,11,22,11, + 1,0,254,0,199,128,193,128,193,128,195,0,254,0,195,0, + 193,128,193,128,193,128,193,128,9,11,22,11,1,0,62,0, + 119,0,193,128,224,0,248,0,127,0,15,128,1,128,193,128, + 119,0,62,0,9,11,22,11,1,0,255,128,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 10,11,22,12,1,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,225,192,115,128,62,0,11,11,22,12, + 0,0,224,96,96,96,112,224,48,192,49,192,57,128,25,128, + 31,128,31,0,15,0,14,0,16,11,22,16,0,0,225,135, + 99,198,99,198,99,198,119,206,54,108,54,108,54,108,60,60, + 28,56,28,56,11,11,22,11,0,0,112,192,49,192,59,128, + 31,0,14,0,14,0,31,0,27,0,51,128,113,192,224,224, + 10,11,22,10,0,0,225,192,113,128,51,128,59,0,31,0, + 30,0,12,0,12,0,12,0,12,0,12,0,8,11,11,10, + 1,0,255,7,6,14,28,24,56,112,96,192,255,4,14,14, + 6,1,253,240,192,192,192,192,192,192,192,192,192,192,192,192, + 240,5,12,12,7,1,255,128,192,192,64,96,96,32,48,48, + 16,16,24,4,14,14,7,1,253,240,48,48,48,48,48,48, + 48,48,48,48,48,48,240,8,10,10,16,4,0,16,24,24, + 36,36,36,66,66,129,129,8,1,1,8,0,254,255,3,3, + 3,4,0,9,192,64,32,7,8,8,9,1,0,60,110,6, + 126,230,198,238,118,8,11,11,10,1,0,192,192,192,220,246, + 199,195,195,195,230,220,7,8,8,9,1,0,60,110,198,192, + 192,198,238,60,8,11,11,10,1,0,3,3,3,59,111,227, + 195,195,195,103,59,7,8,8,9,1,0,60,110,198,254,192, + 198,110,60,5,11,11,7,1,0,56,48,48,248,48,48,48, + 48,48,48,48,8,11,11,10,1,253,59,111,227,195,195,195, + 103,59,3,103,60,7,11,11,9,1,0,192,192,192,220,238, + 198,198,198,198,198,198,2,11,11,4,1,0,192,192,0,192, + 192,192,192,192,192,192,192,3,14,14,5,1,253,96,96,0, + 96,96,96,96,96,96,96,96,96,224,224,7,11,11,9,1, + 0,192,192,192,206,220,216,240,216,220,204,198,2,11,11,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,12,8,16, + 14,1,0,220,224,239,112,198,48,198,48,198,48,198,48,198, + 48,198,48,7,8,8,9,1,0,220,238,198,198,198,198,198, + 198,8,8,8,10,1,0,60,102,195,195,195,195,102,60,8, + 11,11,10,1,253,220,230,195,195,195,199,246,220,192,192,192, + 8,11,11,10,1,253,59,103,195,195,195,195,111,59,3,3, + 3,5,8,8,7,1,0,216,240,192,192,192,192,192,192,7, + 8,8,9,1,0,124,238,192,248,30,198,238,124,6,10,10, + 8,1,0,48,48,252,48,48,48,48,48,56,28,7,8,8, + 9,1,0,198,198,198,198,198,198,238,118,8,8,8,9,0, + 0,227,99,103,118,54,60,28,28,13,8,16,14,0,0,231, + 24,103,152,103,152,111,176,61,240,60,240,60,240,56,224,8, + 8,8,9,0,0,99,118,62,28,60,62,103,227,8,11,11, + 9,0,253,227,99,119,54,54,62,28,28,24,24,56,6,8, + 8,8,1,0,252,12,24,56,112,96,192,252,6,15,15,8, + 1,252,28,56,48,48,48,48,112,192,96,48,48,48,48,48, + 28,1,16,16,5,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,15,15,8,1,252,224,112,48, + 48,48,48,24,12,24,48,48,48,48,48,240,8,2,2,9, + 0,3,121,223,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=21 x= 5 y=12 dx=21 dy= 0 ascent=21 len=54 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14[5788] U8G_SECTION(".progmem.u8g_font_fub14") = { + 0,31,26,254,251,14,3,116,7,95,32,255,252,21,251,14, + 252,0,0,0,6,0,0,3,14,14,8,3,0,224,224,224, + 224,224,224,224,224,224,224,0,0,224,224,8,6,6,10,1, + 8,231,103,103,103,103,103,12,14,28,14,1,0,6,96,6, + 96,12,96,63,240,63,240,24,192,25,128,25,128,255,224,255, + 224,51,0,51,0,99,0,102,0,10,17,34,12,1,254,4, + 0,31,0,127,128,119,128,229,192,228,0,252,0,126,0,31, + 128,7,192,5,192,229,192,229,192,127,128,63,0,4,0,4, + 0,18,14,42,20,1,0,60,4,0,126,12,0,195,24,0, + 195,16,0,195,48,0,231,96,0,126,103,0,24,205,128,0, + 152,192,1,152,192,3,24,192,3,24,192,6,15,128,12,7, + 0,14,14,28,16,1,0,31,0,127,128,113,192,113,192,115, + 128,63,0,30,0,126,56,247,48,227,176,225,240,224,224,127, + 240,31,188,3,6,6,8,3,8,224,192,192,192,192,192,4, + 17,17,8,2,253,48,112,112,96,224,224,224,224,224,224,224, + 224,224,96,112,112,48,4,17,17,8,2,253,192,192,224,224, + 96,96,112,112,112,112,112,96,96,224,224,192,192,8,7,7, + 12,2,7,102,60,24,255,24,60,102,12,12,24,20,4,0, + 2,0,2,0,2,0,2,0,2,0,255,240,255,240,2,0, + 2,0,2,0,2,0,2,0,4,5,5,6,1,254,112,112, + 96,224,192,5,3,3,7,1,4,248,248,248,3,3,3,6, + 2,0,224,224,224,6,15,15,9,1,255,12,12,12,12,24, + 24,24,48,48,48,96,96,96,96,192,10,14,28,11,1,0, + 30,0,127,0,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,6,14,14,11, + 2,0,28,124,252,220,28,28,28,28,28,28,28,28,28,28, + 10,14,28,11,1,0,31,0,127,128,97,192,225,192,1,192, + 1,192,3,128,7,128,15,0,30,0,56,0,112,0,255,192, + 255,192,10,14,28,11,1,0,62,0,127,0,227,128,3,128, + 3,128,31,0,31,0,3,128,1,192,1,192,225,192,243,128, + 127,0,62,0,11,14,28,11,1,0,7,128,15,128,15,128, + 27,128,59,128,51,128,115,128,99,128,227,128,255,224,255,224, + 3,128,3,128,3,128,10,14,28,11,1,0,255,128,255,128, + 224,0,224,0,224,0,255,0,255,128,225,128,1,192,1,192, + 225,192,227,128,127,0,62,0,10,14,28,11,1,0,30,0, + 63,128,97,128,96,0,224,0,223,0,255,128,225,128,225,192, + 225,192,225,192,97,128,127,128,30,0,10,14,28,11,1,0, + 255,192,255,192,1,192,3,128,3,128,7,128,7,0,7,0, + 14,0,14,0,28,0,28,0,60,0,56,0,10,14,28,11, + 1,0,63,0,127,128,225,192,225,192,225,128,127,0,63,0, + 115,128,225,192,225,192,225,192,225,192,127,128,63,0,10,14, + 28,11,1,0,30,0,127,0,225,128,225,128,225,192,225,192, + 243,192,127,192,25,192,1,128,225,128,99,128,127,0,62,0, + 3,10,10,7,3,0,224,224,224,0,0,0,0,224,224,224, + 4,12,12,6,1,254,112,112,112,0,0,0,0,112,96,224, + 192,192,12,10,20,20,4,1,0,16,0,224,3,128,28,0, + 224,0,192,0,56,0,7,0,1,192,0,48,12,5,10,20, + 4,3,255,240,255,240,0,0,255,240,255,240,12,10,20,20, + 4,1,128,0,112,0,28,0,3,128,0,112,0,48,1,192, + 14,0,56,0,192,0,9,14,28,11,1,0,62,0,127,0, + 195,128,67,128,3,128,7,0,6,0,12,0,24,0,24,0, + 24,0,0,0,24,0,24,0,19,18,54,21,1,252,1,248, + 0,15,254,0,30,7,128,56,3,192,113,253,192,115,252,224, + 231,28,224,231,28,224,231,28,224,231,28,224,231,28,224,231, + 60,192,115,255,192,113,231,128,56,0,0,30,4,0,15,252, + 0,3,252,0,14,14,28,14,0,0,7,128,7,128,7,192, + 15,192,14,192,28,224,28,224,28,96,56,112,63,240,63,248, + 112,56,112,56,224,28,11,14,28,13,1,0,255,0,255,128, + 225,192,225,192,225,192,227,128,255,0,255,128,224,192,224,224, + 224,224,224,224,255,192,255,0,13,14,28,15,1,0,15,128, + 63,224,112,112,96,112,224,0,224,0,224,0,224,0,224,0, + 224,120,96,112,112,240,63,224,15,128,12,14,28,14,1,0, + 255,0,255,192,225,224,224,224,224,112,224,112,224,112,224,112, + 224,112,224,112,224,224,225,224,255,192,255,0,10,14,28,12, + 1,0,255,192,255,192,224,0,224,0,224,0,224,0,255,128, + 255,128,224,0,224,0,224,0,224,0,255,192,255,192,9,14, + 28,11,1,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,128,255,128,224,0,224,0,224,0,224,0,224,0,224,0, + 13,14,28,15,1,0,15,192,31,240,56,56,112,56,224,0, + 224,0,225,248,225,248,224,56,224,56,112,56,120,56,63,248, + 15,240,12,14,28,14,1,0,224,112,224,112,224,112,224,112, + 224,112,224,112,255,240,255,240,224,112,224,112,224,112,224,112, + 224,112,224,112,3,14,14,5,1,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,10,14,28,12,1,0,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 225,192,225,192,243,192,127,128,62,0,11,14,28,13,1,0, + 225,224,227,192,227,128,231,0,238,0,252,0,252,0,254,0, + 238,0,231,0,231,128,227,192,225,192,224,224,10,14,28,11, + 1,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,192,255,192,16,14, + 28,18,1,0,248,31,248,31,252,63,252,63,252,55,236,119, + 238,119,238,103,230,231,231,231,231,199,227,199,227,199,227,135, + 13,14,28,15,1,0,240,56,248,56,248,56,252,56,238,56, + 238,56,231,56,231,56,227,184,227,184,225,248,225,248,224,248, + 224,248,14,14,28,16,1,0,15,192,63,240,112,112,96,56, + 224,24,224,28,224,28,224,28,224,28,224,24,96,56,112,112, + 63,240,15,192,11,14,28,13,1,0,255,0,255,192,225,192, + 224,224,224,224,224,224,225,192,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,15,14,28,17,1,0,15,192,63,224, + 112,112,96,56,224,24,224,28,224,28,224,28,224,28,224,24, + 96,56,112,120,63,254,15,254,11,14,28,13,1,0,255,128, + 255,192,224,224,224,224,224,224,224,224,255,128,255,192,225,192, + 224,224,224,224,224,224,224,224,224,96,12,14,28,14,1,0, + 31,128,63,192,96,224,224,224,224,0,252,0,127,128,31,224, + 3,224,0,112,224,112,224,96,127,192,31,128,12,14,28,14, + 1,0,255,240,255,240,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,12,14, + 28,14,1,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,112,224,63,192,31,128, + 14,14,28,15,0,0,240,28,112,28,112,60,56,56,56,56, + 56,112,28,112,28,112,30,224,14,224,15,192,7,192,7,192, + 7,128,20,14,42,20,0,0,240,240,240,112,240,224,112,240, + 224,113,248,224,113,248,224,57,153,192,57,153,192,59,157,192, + 59,157,192,27,13,128,31,15,128,31,15,128,31,15,128,14, + 7,0,12,14,28,14,1,0,224,112,112,224,120,224,57,192, + 31,128,31,0,15,0,15,0,31,128,59,192,57,192,112,224, + 224,240,224,112,12,14,28,13,0,0,240,112,112,240,56,224, + 56,224,29,192,29,192,15,128,15,0,7,0,7,0,7,0, + 7,0,7,0,7,0,11,14,28,13,1,0,127,224,127,224, + 1,224,3,192,3,128,7,128,15,0,30,0,30,0,60,0, + 120,0,248,0,255,224,255,224,5,18,18,8,2,252,248,248, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,248,248, + 6,15,15,9,1,255,192,192,96,96,96,48,48,48,16,24, + 24,24,12,12,12,5,18,18,8,2,252,248,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,248,248,10,12,24, + 20,5,0,12,0,12,0,12,0,18,0,18,0,51,0,33, + 0,33,0,64,128,64,128,192,192,128,64,10,2,4,10,0, + 253,255,192,255,192,5,4,4,5,255,12,224,112,48,24,9, + 10,20,11,1,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,10,14,28,12,1,0,224, + 0,224,0,224,0,224,0,239,0,255,128,225,192,225,192,225, + 192,225,192,225,192,225,128,255,128,239,0,9,10,20,11,1, + 0,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,10,14,28,12,1,0,1,192,1,192,1, + 192,1,192,61,192,127,192,225,192,225,192,225,192,225,192,225, + 192,225,192,127,192,61,192,9,10,20,11,1,0,30,0,127, + 0,227,128,227,128,255,128,255,128,224,0,227,128,127,128,62, + 0,7,14,14,8,1,0,30,62,56,56,254,254,56,56,56, + 56,56,56,56,56,10,14,28,12,1,252,61,192,127,192,113, + 192,225,192,225,192,225,192,225,192,225,192,127,192,61,192,1, + 192,97,192,127,128,63,0,9,14,28,11,1,0,224,0,224, + 0,224,0,224,0,239,0,255,128,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,3,14,14,5,1,0,224, + 224,224,0,224,224,224,224,224,224,224,224,224,224,4,18,18, + 7,2,252,112,112,112,0,112,112,112,112,112,112,112,112,112, + 112,112,112,240,224,9,14,28,11,1,0,224,0,224,0,224, + 0,224,0,231,128,231,0,238,0,252,0,252,0,252,0,238, + 0,231,0,231,0,227,128,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,15,10,20,18,1, + 0,239,60,255,254,227,206,227,134,227,134,227,134,227,134,227, + 134,227,134,227,134,9,10,20,11,1,0,239,0,255,128,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,227,128,10, + 10,20,12,1,0,30,0,127,128,97,128,225,192,225,192,225, + 192,225,192,97,128,127,128,30,0,10,14,28,12,1,252,239, + 0,255,128,225,128,225,192,225,192,225,192,225,192,225,192,255, + 128,239,0,224,0,224,0,224,0,224,0,10,14,28,12,1, + 252,61,192,127,192,225,192,225,192,225,192,225,192,225,192,225, + 192,127,192,61,192,1,192,1,192,1,192,1,192,6,10,10, + 8,1,0,236,252,240,224,224,224,224,224,224,224,9,10,20, + 11,1,0,62,0,255,0,227,128,224,0,126,0,31,0,3, + 128,227,128,255,0,62,0,7,13,13,9,1,0,8,56,56, + 254,254,56,56,56,56,56,56,62,30,9,10,20,11,1,0, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 255,128,123,128,11,10,20,11,0,0,224,224,113,192,113,192, + 49,128,59,128,59,128,27,0,31,0,31,0,14,0,17,10, + 30,17,0,0,225,195,128,97,227,0,115,231,0,115,103,0, + 51,119,0,63,118,0,63,62,0,62,62,0,30,60,0,30, + 28,0,9,10,20,11,1,0,227,128,115,0,119,0,62,0, + 28,0,62,0,62,0,119,0,227,128,227,128,11,14,28,11, + 0,252,224,224,113,192,113,192,57,128,59,128,59,128,31,0, + 31,0,15,0,14,0,14,0,14,0,28,0,28,0,8,10, + 10,10,1,0,255,255,7,14,28,56,112,224,255,255,7,19, + 19,10,2,251,14,62,56,56,56,56,56,48,240,192,240,112, + 56,56,56,56,56,62,14,1,21,21,7,3,251,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,7,19,19,10,2,251,224,240,56,56,56,56,56,56, + 28,6,28,56,56,56,56,56,56,240,224,11,3,6,11,0, + 4,48,96,127,192,199,128,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,6,0,0,3,14, + 14,9,3,252,224,224,0,0,224,224,224,224,224,224,224,224, + 224,224,9,14,28,11,1,254,2,0,2,0,62,0,127,0, + 231,128,231,128,232,0,232,0,235,128,243,128,127,0,62,0, + 32,0,32,0,10,14,28,12,1,0,31,0,63,192,113,192, + 112,0,112,0,254,0,254,0,112,0,112,0,112,0,112,0, + 112,0,255,192,255,192,10,10,20,12,1,3,128,64,94,128, + 33,0,64,128,64,128,64,128,64,128,33,0,94,128,128,64, + 11,14,28,13,1,0,224,224,225,192,113,192,113,128,251,224, + 251,224,31,0,255,224,255,224,14,0,14,0,14,0,14,0, + 14,0,1,18,18,7,3,252,128,128,128,128,128,128,128,128, + 0,0,128,128,128,128,128,128,128,128,8,18,18,10,1,252, + 62,126,224,224,112,60,126,231,231,231,254,124,30,7,7,135, + 254,56,7,2,2,7,0,12,238,238,15,14,28,17,1,0, + 7,192,31,240,55,152,111,204,204,228,156,2,156,2,156,226, + 140,226,207,198,71,132,32,24,28,112,15,192,7,9,9,8, + 1,5,120,204,124,204,204,252,36,0,254,10,8,16,12,1, + 1,57,192,113,128,115,128,231,0,231,0,115,128,113,128,57, + 192,11,5,10,13,1,4,255,224,255,224,0,32,0,32,0, + 32,255,15,14,28,17,1,0,7,192,31,240,63,152,111,236, + 204,100,140,98,143,194,143,194,140,98,204,102,76,100,32,24, + 28,112,15,192,6,2,2,6,0,12,252,252,5,5,5,7, + 1,9,112,136,136,136,112,12,12,24,20,4,0,2,0,2, + 0,2,0,255,240,255,240,2,0,2,0,2,0,0,0,0, + 0,255,240,255,240,6,8,8,8,1,6,120,204,12,24,48, + 224,252,252,6,7,7,8,1,7,120,204,12,48,12,204,120, + 4,4,4,4,1,12,48,96,96,192,255,9,17,34,11,1, + 253,63,128,121,0,249,0,249,0,249,0,249,0,121,0,9, + 0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9, + 0,9,0,3,3,3,6,2,5,224,224,224,5,5,5,5, + 1,251,64,112,24,24,240,4,8,8,6,1,6,48,240,48, + 48,48,48,48,48,7,9,9,9,1,5,56,68,198,198,198, + 68,56,0,254,10,8,16,12,1,1,231,0,99,128,115,128, + 57,192,57,192,115,128,99,128,231,0,14,14,28,16,1,0, + 112,48,240,48,48,96,48,192,48,192,49,128,49,156,51,60, + 6,60,6,108,12,204,24,252,24,12,48,12,15,14,28,17, + 1,0,112,48,240,32,48,96,48,192,48,192,49,128,51,60, + 51,102,6,6,12,14,12,28,24,48,48,126,48,126,14,14, + 28,16,1,0,120,24,204,48,12,48,48,96,12,192,204,192, + 121,156,1,188,3,60,6,108,6,204,12,252,8,12,24,12, + 9,14,28,11,1,252,14,0,14,0,0,0,14,0,14,0, + 14,0,60,0,112,0,224,0,224,0,225,128,225,128,127,128, + 62,0,14,20,40,14,0,0,12,0,14,0,6,0,3,0, + 0,0,0,0,7,128,7,128,7,192,15,192,14,192,28,224, + 28,224,28,96,56,112,63,240,63,248,112,56,112,56,224,28, + 14,20,40,14,0,0,0,192,1,192,1,128,3,0,0,0, + 0,0,7,128,7,128,7,192,15,192,14,192,28,224,28,224, + 28,96,56,112,63,240,63,248,112,56,112,56,224,28,14,20, + 40,14,0,0,3,128,7,128,6,192,12,192,0,0,0,0, + 7,128,7,128,7,192,15,192,14,192,28,224,28,224,28,96, + 56,112,63,240,63,248,112,56,112,56,224,28,14,19,38,14, + 0,0,6,64,15,192,8,128,0,0,0,0,7,128,7,128, + 7,192,15,192,14,192,28,224,28,224,28,96,56,112,63,240, + 63,248,112,56,112,56,224,28,14,19,38,15,0,0,14,224, + 14,224,0,0,0,0,0,0,3,128,7,128,7,192,7,192, + 14,192,14,224,28,224,28,112,28,112,63,248,63,248,112,56, + 112,28,224,28,13,21,42,15,1,0,7,0,8,128,8,128, + 8,128,7,0,0,0,0,0,7,0,15,128,15,128,29,192, + 29,192,29,192,56,224,56,224,48,96,127,240,127,240,224,56, + 224,56,224,56,19,14,42,20,0,0,0,255,224,1,255,224, + 3,240,0,3,112,0,7,112,0,7,112,0,14,127,192,14, + 127,192,28,112,0,31,240,0,63,240,0,112,112,0,112,127, + 224,224,127,224,13,18,36,15,1,252,15,128,63,224,112,240, + 96,112,224,0,224,0,224,0,224,0,224,0,224,120,96,112, + 112,240,63,224,31,128,4,0,7,128,1,128,15,0,10,20, + 40,12,1,0,48,0,56,0,24,0,12,0,0,0,0,0, + 255,192,255,192,224,0,224,0,224,0,224,0,255,128,255,128, + 224,0,224,0,224,0,224,0,255,192,255,192,10,20,40,12, + 1,0,7,0,6,0,12,0,8,0,0,0,0,0,255,192, + 255,192,224,0,224,0,224,0,224,0,255,128,255,128,224,0, + 224,0,224,0,224,0,255,192,255,192,10,20,40,12,1,0, + 28,0,30,0,54,0,35,0,0,0,0,0,255,192,255,192, + 224,0,224,0,224,0,224,0,255,128,255,128,224,0,224,0, + 224,0,224,0,255,192,255,192,10,19,38,12,1,0,119,0, + 119,0,0,0,0,0,0,0,255,192,255,192,224,0,224,0, + 224,0,224,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,192,255,192,5,20,20,5,255,0,224,96,48,16,0,0, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,4,20, + 20,5,1,0,48,112,96,192,0,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,5,20,20,5,0,0,112,112, + 216,136,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,7,19,19,7,0,0,238,238,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,13,14,28,14,0, + 0,127,128,127,224,112,240,112,112,112,56,112,56,254,56,254, + 56,112,56,112,56,112,112,112,240,127,224,127,128,13,19,38, + 15,1,0,12,64,31,128,17,0,0,0,0,0,240,56,248, + 56,248,56,252,56,238,56,238,56,231,56,231,56,227,184,227, + 184,225,248,225,248,224,248,224,248,14,20,40,16,1,0,28, + 0,12,0,6,0,2,0,0,0,0,0,15,192,63,240,112, + 112,96,56,224,24,224,28,224,28,224,28,224,28,224,24,96, + 56,112,112,63,240,15,192,14,20,40,16,1,0,0,224,1, + 192,1,128,3,0,0,0,0,0,15,192,63,240,112,112,96, + 56,224,24,224,28,224,28,224,28,224,28,224,24,96,56,112, + 112,63,240,15,192,14,20,40,16,1,0,7,0,7,128,13, + 192,8,192,0,0,0,0,15,192,63,240,112,112,96,56,224, + 24,224,28,224,28,224,28,224,28,224,24,96,56,112,112,63, + 240,15,192,14,19,38,16,1,0,7,192,15,192,0,0,0, + 0,0,0,15,192,63,240,112,48,96,56,224,24,224,28,224, + 28,224,28,224,28,224,24,112,56,120,240,63,240,15,192,14, + 19,38,16,1,0,29,192,29,192,0,0,0,0,0,0,15, + 192,63,240,112,112,96,56,224,24,224,28,224,28,224,28,224, + 28,224,24,96,56,112,112,63,240,15,192,10,10,20,20,5, + 1,128,64,192,192,97,128,51,0,12,0,12,0,18,0,33, + 0,64,128,128,64,15,16,32,16,0,255,0,2,7,230,31, + 252,56,60,48,60,112,108,112,238,113,206,115,142,119,14,126, + 12,124,28,56,56,63,240,239,224,64,0,12,20,40,14,1, + 0,56,0,24,0,12,0,6,0,0,0,0,0,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,113,224,63,192,31,128,12,20,40,14,1,0,1, + 192,3,128,3,0,6,0,0,0,0,0,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,113,224,63,192,31,128,12,20,40,14,1,0,14,0,15, + 0,27,0,17,128,0,0,0,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,113, + 224,63,192,31,128,12,19,38,14,1,0,29,192,29,192,0, + 0,0,0,0,0,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,63,192,31, + 128,12,19,38,13,0,0,1,128,3,0,2,0,0,0,0, + 0,240,112,112,240,56,224,56,224,29,192,29,192,15,128,15, + 0,7,0,7,0,7,0,7,0,7,0,7,0,11,14,28, + 13,1,0,224,0,224,0,255,0,255,192,225,192,224,224,224, + 224,224,224,225,192,255,128,254,0,224,0,224,0,224,0,10, + 14,28,12,1,0,62,0,127,128,227,128,227,128,227,0,231, + 0,238,0,238,0,231,128,227,192,225,192,253,192,255,192,239, + 128,9,16,32,11,1,0,112,0,48,0,24,0,8,0,0, + 0,0,0,62,0,127,128,227,128,31,128,127,128,227,128,227, + 128,227,128,255,128,57,128,9,16,32,11,1,0,7,0,6, + 0,12,0,12,0,0,0,0,0,62,0,127,128,227,128,3, + 128,63,128,251,128,227,128,227,128,255,128,121,128,9,16,32, + 11,1,0,28,0,30,0,54,0,35,0,0,0,0,0,62, + 0,127,128,227,128,31,128,127,128,227,128,227,128,227,128,255, + 128,57,128,9,14,28,11,1,0,63,0,62,0,0,0,0, + 0,62,0,127,128,227,128,31,128,127,128,227,128,227,128,227, + 128,255,128,57,128,9,15,30,11,1,0,119,0,119,0,0, + 0,0,0,0,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,9,17,34,11,1,0,28, + 0,34,0,34,0,34,0,28,0,0,0,0,0,62,0,127, + 128,227,128,31,128,127,128,227,128,227,128,227,128,255,128,57, + 128,16,10,20,18,1,0,62,124,127,254,227,135,31,255,127, + 255,227,128,227,128,227,199,254,254,60,124,9,14,28,11,1, + 252,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,16,0,30,0,6,0,62,0,9,16,32, + 11,1,0,112,0,48,0,24,0,8,0,0,0,0,0,30, + 0,127,0,227,128,227,128,255,128,255,128,224,0,227,128,127, + 128,62,0,9,16,32,11,1,0,7,0,6,0,12,0,8, + 0,0,0,0,0,30,0,127,0,227,128,227,128,255,128,255, + 128,224,0,227,128,127,128,62,0,9,16,32,11,1,0,28, + 0,30,0,54,0,35,0,0,0,0,0,30,0,127,0,227, + 128,227,128,255,128,255,128,224,0,227,128,127,128,62,0,9, + 15,30,11,1,0,119,0,119,0,0,0,0,0,0,0,30, + 0,127,0,227,128,227,128,255,128,255,128,224,0,227,128,127, + 128,62,0,4,15,15,5,0,0,192,224,96,48,0,112,112, + 112,112,112,112,112,112,112,112,4,15,15,4,1,0,112,96, + 192,128,0,224,224,224,224,224,224,224,224,224,224,7,15,15, + 5,255,0,56,124,76,198,0,56,56,56,56,56,56,56,56, + 56,56,7,14,14,6,0,0,238,238,0,0,56,56,56,56, + 56,56,56,56,56,56,10,14,28,12,1,0,57,128,15,0, + 31,0,99,0,31,128,127,128,97,192,225,192,225,192,225,192, + 225,192,97,192,127,128,31,0,9,14,28,11,1,0,62,0, + 60,0,0,0,0,0,239,0,255,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,16,32,12,1,0, + 48,0,24,0,24,0,12,0,0,0,0,0,30,0,127,128, + 97,128,225,192,225,192,225,192,225,192,97,128,127,128,30,0, + 10,16,32,12,1,0,3,0,6,0,6,0,12,0,0,0, + 0,0,30,0,127,128,97,128,225,192,225,192,225,192,225,192, + 97,128,127,128,30,0,10,16,32,12,1,0,12,0,30,0, + 26,0,51,0,0,0,0,0,30,0,127,128,97,128,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,10,14,28,12, + 1,0,31,0,62,0,0,0,0,0,30,0,127,128,97,128, + 225,192,225,192,225,192,225,192,97,128,127,128,30,0,10,15, + 30,12,1,0,59,128,59,128,0,0,0,0,0,0,30,0, + 127,128,97,128,225,192,225,192,225,192,225,192,97,128,127,128, + 30,0,12,8,16,20,4,2,6,0,14,0,0,0,255,240, + 255,240,0,0,6,0,14,0,10,12,24,12,1,0,0,192, + 31,128,127,128,99,128,231,192,237,192,233,192,241,192,113,128, + 127,128,222,0,128,0,9,16,32,11,1,0,112,0,48,0, + 24,0,8,0,0,0,0,0,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,255,128,123,128,9,16,32,11, + 1,0,7,0,6,0,12,0,8,0,0,0,0,0,227,128, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,255,128, + 123,128,9,16,32,11,1,0,28,0,28,0,54,0,34,0, + 0,0,0,0,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,255,128,123,128,9,15,30,11,1,0,119,0, + 119,0,0,0,0,0,0,0,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,255,128,123,128,11,19,38,11, + 0,252,1,128,3,0,2,0,4,0,0,0,112,224,113,192, + 113,192,57,192,59,128,27,128,31,128,31,0,15,0,14,0, + 14,0,78,0,252,0,120,0,10,18,36,12,1,252,224,0, + 224,0,224,0,224,0,239,0,255,128,225,128,225,192,225,192, + 225,192,225,192,225,192,255,128,255,0,224,0,224,0,224,0, + 224,0,11,18,36,11,0,252,59,128,59,128,0,0,0,0, + 225,224,113,192,113,192,115,128,59,128,59,128,31,0,31,0, + 31,0,14,0,14,0,12,0,28,0,28,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=12 h=15 x= 4 y= 7 dx=20 dy= 0 ascent=14 len=28 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14n[436] U8G_SECTION(".progmem.u8g_font_fub14n") = { + 0,31,26,254,251,14,0,0,0,0,42,57,0,14,254,14, + 0,8,7,7,12,2,7,102,60,24,255,24,60,102,12,12, + 24,20,4,0,2,0,2,0,2,0,2,0,2,0,255,240, + 255,240,2,0,2,0,2,0,2,0,2,0,4,5,5,6, + 1,254,112,112,96,224,192,5,3,3,7,1,4,248,248,248, + 3,3,3,6,2,0,224,224,224,6,15,15,9,1,255,12, + 12,12,12,24,24,24,48,48,48,96,96,96,96,192,10,14, + 28,11,1,0,30,0,127,0,97,128,225,192,225,192,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,127,128,30,0, + 6,14,14,11,2,0,28,124,252,220,28,28,28,28,28,28, + 28,28,28,28,10,14,28,11,1,0,31,0,127,128,97,192, + 225,192,1,192,1,192,3,128,7,128,15,0,30,0,56,0, + 112,0,255,192,255,192,10,14,28,11,1,0,62,0,127,0, + 227,128,3,128,3,128,31,0,31,0,3,128,1,192,1,192, + 225,192,243,128,127,0,62,0,11,14,28,11,1,0,7,128, + 15,128,15,128,27,128,59,128,51,128,115,128,99,128,227,128, + 255,224,255,224,3,128,3,128,3,128,10,14,28,11,1,0, + 255,128,255,128,224,0,224,0,224,0,255,0,255,128,225,128, + 1,192,1,192,225,192,227,128,127,0,62,0,10,14,28,11, + 1,0,30,0,63,128,97,128,96,0,224,0,223,0,255,128, + 225,128,225,192,225,192,225,192,97,128,127,128,30,0,10,14, + 28,11,1,0,255,192,255,192,1,192,3,128,3,128,7,128, + 7,0,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 10,14,28,11,1,0,63,0,127,128,225,192,225,192,225,128, + 127,0,63,0,115,128,225,192,225,192,225,192,225,192,127,128, + 63,0,10,14,28,11,1,0,30,0,127,0,225,128,225,128, + 225,192,225,192,243,192,127,192,25,192,1,128,225,128,99,128, + 127,0,62,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--20-200-72-72-P-101-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=21 x= 5 y=12 dx=21 dy= 0 ascent=16 len=54 + Font Bounding box w=31 h=26 x=-2 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub14r[2680] U8G_SECTION(".progmem.u8g_font_fub14r") = { + 0,31,26,254,251,14,3,116,7,95,32,127,252,16,251,14, + 252,0,0,0,6,0,0,3,14,14,8,3,0,224,224,224, + 224,224,224,224,224,224,224,0,0,224,224,8,6,6,10,1, + 8,231,103,103,103,103,103,12,14,28,14,1,0,6,96,6, + 96,12,96,63,240,63,240,24,192,25,128,25,128,255,224,255, + 224,51,0,51,0,99,0,102,0,10,17,34,12,1,254,4, + 0,31,0,127,128,119,128,229,192,228,0,252,0,126,0,31, + 128,7,192,5,192,229,192,229,192,127,128,63,0,4,0,4, + 0,18,14,42,20,1,0,60,4,0,126,12,0,195,24,0, + 195,16,0,195,48,0,231,96,0,126,103,0,24,205,128,0, + 152,192,1,152,192,3,24,192,3,24,192,6,15,128,12,7, + 0,14,14,28,16,1,0,31,0,127,128,113,192,113,192,115, + 128,63,0,30,0,126,56,247,48,227,176,225,240,224,224,127, + 240,31,188,3,6,6,8,3,8,224,192,192,192,192,192,4, + 17,17,8,2,253,48,112,112,96,224,224,224,224,224,224,224, + 224,224,96,112,112,48,4,17,17,8,2,253,192,192,224,224, + 96,96,112,112,112,112,112,96,96,224,224,192,192,8,7,7, + 12,2,7,102,60,24,255,24,60,102,12,12,24,20,4,0, + 2,0,2,0,2,0,2,0,2,0,255,240,255,240,2,0, + 2,0,2,0,2,0,2,0,4,5,5,6,1,254,112,112, + 96,224,192,5,3,3,7,1,4,248,248,248,3,3,3,6, + 2,0,224,224,224,6,15,15,9,1,255,12,12,12,12,24, + 24,24,48,48,48,96,96,96,96,192,10,14,28,11,1,0, + 30,0,127,0,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,225,192,225,192,97,128,127,128,30,0,6,14,14,11, + 2,0,28,124,252,220,28,28,28,28,28,28,28,28,28,28, + 10,14,28,11,1,0,31,0,127,128,97,192,225,192,1,192, + 1,192,3,128,7,128,15,0,30,0,56,0,112,0,255,192, + 255,192,10,14,28,11,1,0,62,0,127,0,227,128,3,128, + 3,128,31,0,31,0,3,128,1,192,1,192,225,192,243,128, + 127,0,62,0,11,14,28,11,1,0,7,128,15,128,15,128, + 27,128,59,128,51,128,115,128,99,128,227,128,255,224,255,224, + 3,128,3,128,3,128,10,14,28,11,1,0,255,128,255,128, + 224,0,224,0,224,0,255,0,255,128,225,128,1,192,1,192, + 225,192,227,128,127,0,62,0,10,14,28,11,1,0,30,0, + 63,128,97,128,96,0,224,0,223,0,255,128,225,128,225,192, + 225,192,225,192,97,128,127,128,30,0,10,14,28,11,1,0, + 255,192,255,192,1,192,3,128,3,128,7,128,7,0,7,0, + 14,0,14,0,28,0,28,0,60,0,56,0,10,14,28,11, + 1,0,63,0,127,128,225,192,225,192,225,128,127,0,63,0, + 115,128,225,192,225,192,225,192,225,192,127,128,63,0,10,14, + 28,11,1,0,30,0,127,0,225,128,225,128,225,192,225,192, + 243,192,127,192,25,192,1,128,225,128,99,128,127,0,62,0, + 3,10,10,7,3,0,224,224,224,0,0,0,0,224,224,224, + 4,12,12,6,1,254,112,112,112,0,0,0,0,112,96,224, + 192,192,12,10,20,20,4,1,0,16,0,224,3,128,28,0, + 224,0,192,0,56,0,7,0,1,192,0,48,12,5,10,20, + 4,3,255,240,255,240,0,0,255,240,255,240,12,10,20,20, + 4,1,128,0,112,0,28,0,3,128,0,112,0,48,1,192, + 14,0,56,0,192,0,9,14,28,11,1,0,62,0,127,0, + 195,128,67,128,3,128,7,0,6,0,12,0,24,0,24,0, + 24,0,0,0,24,0,24,0,19,18,54,21,1,252,1,248, + 0,15,254,0,30,7,128,56,3,192,113,253,192,115,252,224, + 231,28,224,231,28,224,231,28,224,231,28,224,231,28,224,231, + 60,192,115,255,192,113,231,128,56,0,0,30,4,0,15,252, + 0,3,252,0,14,14,28,14,0,0,7,128,7,128,7,192, + 15,192,14,192,28,224,28,224,28,96,56,112,63,240,63,248, + 112,56,112,56,224,28,11,14,28,13,1,0,255,0,255,128, + 225,192,225,192,225,192,227,128,255,0,255,128,224,192,224,224, + 224,224,224,224,255,192,255,0,13,14,28,15,1,0,15,128, + 63,224,112,112,96,112,224,0,224,0,224,0,224,0,224,0, + 224,120,96,112,112,240,63,224,15,128,12,14,28,14,1,0, + 255,0,255,192,225,224,224,224,224,112,224,112,224,112,224,112, + 224,112,224,112,224,224,225,224,255,192,255,0,10,14,28,12, + 1,0,255,192,255,192,224,0,224,0,224,0,224,0,255,128, + 255,128,224,0,224,0,224,0,224,0,255,192,255,192,9,14, + 28,11,1,0,255,128,255,128,224,0,224,0,224,0,224,0, + 255,128,255,128,224,0,224,0,224,0,224,0,224,0,224,0, + 13,14,28,15,1,0,15,192,31,240,56,56,112,56,224,0, + 224,0,225,248,225,248,224,56,224,56,112,56,120,56,63,248, + 15,240,12,14,28,14,1,0,224,112,224,112,224,112,224,112, + 224,112,224,112,255,240,255,240,224,112,224,112,224,112,224,112, + 224,112,224,112,3,14,14,5,1,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,10,14,28,12,1,0,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 225,192,225,192,243,192,127,128,62,0,11,14,28,13,1,0, + 225,224,227,192,227,128,231,0,238,0,252,0,252,0,254,0, + 238,0,231,0,231,128,227,192,225,192,224,224,10,14,28,11, + 1,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,192,255,192,16,14, + 28,18,1,0,248,31,248,31,252,63,252,63,252,55,236,119, + 238,119,238,103,230,231,231,231,231,199,227,199,227,199,227,135, + 13,14,28,15,1,0,240,56,248,56,248,56,252,56,238,56, + 238,56,231,56,231,56,227,184,227,184,225,248,225,248,224,248, + 224,248,14,14,28,16,1,0,15,192,63,240,112,112,96,56, + 224,24,224,28,224,28,224,28,224,28,224,24,96,56,112,112, + 63,240,15,192,11,14,28,13,1,0,255,0,255,192,225,192, + 224,224,224,224,224,224,225,192,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,15,14,28,17,1,0,15,192,63,224, + 112,112,96,56,224,24,224,28,224,28,224,28,224,28,224,24, + 96,56,112,120,63,254,15,254,11,14,28,13,1,0,255,128, + 255,192,224,224,224,224,224,224,224,224,255,128,255,192,225,192, + 224,224,224,224,224,224,224,224,224,96,12,14,28,14,1,0, + 31,128,63,192,96,224,224,224,224,0,252,0,127,128,31,224, + 3,224,0,112,224,112,224,96,127,192,31,128,12,14,28,14, + 1,0,255,240,255,240,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,12,14, + 28,14,1,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,112,224,63,192,31,128, + 14,14,28,15,0,0,240,28,112,28,112,60,56,56,56,56, + 56,112,28,112,28,112,30,224,14,224,15,192,7,192,7,192, + 7,128,20,14,42,20,0,0,240,240,240,112,240,224,112,240, + 224,113,248,224,113,248,224,57,153,192,57,153,192,59,157,192, + 59,157,192,27,13,128,31,15,128,31,15,128,31,15,128,14, + 7,0,12,14,28,14,1,0,224,112,112,224,120,224,57,192, + 31,128,31,0,15,0,15,0,31,128,59,192,57,192,112,224, + 224,240,224,112,12,14,28,13,0,0,240,112,112,240,56,224, + 56,224,29,192,29,192,15,128,15,0,7,0,7,0,7,0, + 7,0,7,0,7,0,11,14,28,13,1,0,127,224,127,224, + 1,224,3,192,3,128,7,128,15,0,30,0,30,0,60,0, + 120,0,248,0,255,224,255,224,5,18,18,8,2,252,248,248, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,248,248, + 6,15,15,9,1,255,192,192,96,96,96,48,48,48,16,24, + 24,24,12,12,12,5,18,18,8,2,252,248,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,248,248,10,12,24, + 20,5,0,12,0,12,0,12,0,18,0,18,0,51,0,33, + 0,33,0,64,128,64,128,192,192,128,64,10,2,4,10,0, + 253,255,192,255,192,5,4,4,5,255,12,224,112,48,24,9, + 10,20,11,1,0,62,0,127,128,227,128,31,128,127,128,227, + 128,227,128,227,128,255,128,57,128,10,14,28,12,1,0,224, + 0,224,0,224,0,224,0,239,0,255,128,225,192,225,192,225, + 192,225,192,225,192,225,128,255,128,239,0,9,10,20,11,1, + 0,62,0,127,0,227,128,227,128,224,0,224,0,227,128,227, + 128,127,0,62,0,10,14,28,12,1,0,1,192,1,192,1, + 192,1,192,61,192,127,192,225,192,225,192,225,192,225,192,225, + 192,225,192,127,192,61,192,9,10,20,11,1,0,30,0,127, + 0,227,128,227,128,255,128,255,128,224,0,227,128,127,128,62, + 0,7,14,14,8,1,0,30,62,56,56,254,254,56,56,56, + 56,56,56,56,56,10,14,28,12,1,252,61,192,127,192,113, + 192,225,192,225,192,225,192,225,192,225,192,127,192,61,192,1, + 192,97,192,127,128,63,0,9,14,28,11,1,0,224,0,224, + 0,224,0,224,0,239,0,255,128,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,3,14,14,5,1,0,224, + 224,224,0,224,224,224,224,224,224,224,224,224,224,4,18,18, + 7,2,252,112,112,112,0,112,112,112,112,112,112,112,112,112, + 112,112,112,240,224,9,14,28,11,1,0,224,0,224,0,224, + 0,224,0,231,128,231,0,238,0,252,0,252,0,252,0,238, + 0,231,0,231,0,227,128,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,15,10,20,18,1, + 0,239,60,255,254,227,206,227,134,227,134,227,134,227,134,227, + 134,227,134,227,134,9,10,20,11,1,0,239,0,255,128,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,227,128,10, + 10,20,12,1,0,30,0,127,128,97,128,225,192,225,192,225, + 192,225,192,97,128,127,128,30,0,10,14,28,12,1,252,239, + 0,255,128,225,128,225,192,225,192,225,192,225,192,225,192,255, + 128,239,0,224,0,224,0,224,0,224,0,10,14,28,12,1, + 252,61,192,127,192,225,192,225,192,225,192,225,192,225,192,225, + 192,127,192,61,192,1,192,1,192,1,192,1,192,6,10,10, + 8,1,0,236,252,240,224,224,224,224,224,224,224,9,10,20, + 11,1,0,62,0,255,0,227,128,224,0,126,0,31,0,3, + 128,227,128,255,0,62,0,7,13,13,9,1,0,8,56,56, + 254,254,56,56,56,56,56,56,62,30,9,10,20,11,1,0, + 227,128,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 255,128,123,128,11,10,20,11,0,0,224,224,113,192,113,192, + 49,128,59,128,59,128,27,0,31,0,31,0,14,0,17,10, + 30,17,0,0,225,195,128,97,227,0,115,231,0,115,103,0, + 51,119,0,63,118,0,63,62,0,62,62,0,30,60,0,30, + 28,0,9,10,20,11,1,0,227,128,115,0,119,0,62,0, + 28,0,62,0,62,0,119,0,227,128,227,128,11,14,28,11, + 0,252,224,224,113,192,113,192,57,128,59,128,59,128,31,0, + 31,0,15,0,14,0,14,0,14,0,28,0,28,0,8,10, + 10,10,1,0,255,255,7,14,28,56,112,224,255,255,7,19, + 19,10,2,251,14,62,56,56,56,56,56,48,240,192,240,112, + 56,56,56,56,56,62,14,1,21,21,7,3,251,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,7,19,19,10,2,251,224,240,56,56,56,56,56,56, + 28,6,28,56,56,56,56,56,56,240,224,11,3,6,11,0, + 4,48,96,127,192,199,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=25 x= 6 y=15 dx=24 dy= 0 ascent=25 len=66 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17[6938] U8G_SECTION(".progmem.u8g_font_fub17") = { + 0,34,31,254,250,17,4,8,8,209,32,255,251,25,250,17, + 251,0,0,0,7,0,0,3,17,17,9,3,0,224,224,224, + 224,224,224,224,224,224,224,224,224,0,0,224,224,224,8,7, + 7,12,2,10,231,231,231,231,231,231,231,14,17,34,16,1, + 0,3,24,7,24,6,56,6,48,63,252,63,252,12,96,12, + 96,28,96,24,224,255,248,255,240,57,192,49,128,49,128,113, + 128,99,128,12,21,42,14,1,253,2,0,15,128,63,192,127, + 224,242,224,226,224,226,0,250,0,126,0,63,192,15,224,3, + 240,2,240,226,112,226,112,242,240,127,224,63,192,15,0,2, + 0,2,0,21,17,51,23,1,0,62,3,0,127,7,0,99, + 6,0,193,142,0,193,140,0,193,152,0,193,184,0,99,48, + 128,127,119,224,62,102,48,0,236,24,0,204,24,1,204,24, + 1,140,24,3,14,56,7,7,240,6,3,224,16,17,34,18, + 1,0,31,128,63,192,121,224,112,224,113,224,57,192,63,128, + 31,0,63,30,119,156,243,220,225,252,224,252,224,120,120,124, + 127,254,31,207,3,7,7,9,3,10,224,224,224,224,224,224, + 96,5,20,20,9,2,253,56,56,112,112,112,240,224,224,224, + 224,224,224,224,224,240,112,112,112,48,56,5,20,20,9,2, + 253,224,96,112,112,112,56,56,56,56,56,56,56,56,56,56, + 112,112,112,96,224,9,9,18,15,3,8,54,0,54,0,54, + 0,156,128,255,128,156,128,54,0,54,0,54,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,255,252,2,0,2,0,2,0,2,0,2,0,2,0,5, + 6,6,7,1,253,56,112,112,96,96,224,6,3,3,8,1, + 4,252,252,252,3,3,3,7,2,0,224,224,224,8,18,18, + 10,1,255,7,6,6,14,12,12,12,28,24,24,56,48,48, + 48,112,96,96,224,11,17,34,13,1,0,31,0,63,128,113, + 192,112,192,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,112,192,113,192,63,128,31,0,7,17,17, + 13,2,0,14,62,254,254,206,14,14,14,14,14,14,14,14, + 14,14,14,14,12,17,34,13,1,0,15,128,63,224,120,224, + 112,112,0,112,0,112,0,240,1,224,3,224,7,192,15,128, + 30,0,60,0,248,0,255,240,255,240,255,240,11,17,34,13, + 1,0,31,0,127,192,241,224,224,224,0,224,0,224,1,192, + 15,128,15,128,1,192,0,224,0,224,224,224,241,224,255,192, + 127,128,31,0,12,17,34,13,1,0,3,192,7,192,7,192, + 15,192,29,192,29,192,57,192,113,192,113,192,225,192,255,240, + 255,240,255,240,1,192,1,192,1,192,1,192,11,17,34,13, + 1,0,255,192,255,192,255,192,224,0,224,0,224,0,239,128, + 255,192,241,224,224,224,0,224,0,224,224,224,225,224,255,192, + 127,128,63,0,11,17,34,13,1,0,15,0,63,192,57,224, + 112,224,96,0,224,0,239,128,255,192,241,224,224,224,224,224, + 224,224,224,224,96,224,113,192,63,128,31,0,11,17,34,13, + 1,0,255,224,255,224,255,224,0,224,1,224,1,192,3,192, + 3,128,7,128,7,128,7,0,15,0,14,0,30,0,28,0, + 60,0,60,0,11,17,34,13,1,0,31,0,127,192,241,224, + 224,224,224,224,224,224,113,192,63,128,63,128,113,192,224,224, + 224,224,224,224,224,224,241,224,127,192,31,0,11,17,34,13, + 1,0,31,0,63,128,113,192,224,192,224,224,224,224,224,224, + 241,224,127,224,62,224,0,224,0,224,224,224,225,192,113,192, + 127,128,30,0,3,12,12,7,3,0,224,224,224,0,0,0, + 0,0,0,224,224,224,5,14,14,8,1,254,56,56,56,0, + 0,0,0,0,56,56,112,112,96,224,14,12,24,24,5,1, + 0,12,0,60,1,224,7,0,60,0,224,0,224,0,60,0, + 7,0,1,224,0,60,0,12,14,6,12,24,5,4,255,252, + 255,252,0,0,0,0,255,252,255,252,14,12,24,24,5,1, + 192,0,240,0,30,0,3,128,0,240,0,28,0,28,0,240, + 3,128,30,0,240,0,192,0,10,17,34,12,1,0,62,0, + 127,128,227,128,193,192,1,192,1,192,3,128,7,128,14,0, + 28,0,24,0,24,0,24,0,0,0,0,0,24,0,24,0, + 22,22,66,24,1,251,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,240,120,247,120,121,255,56,113,207,60,243,135, + 28,227,135,28,227,135,28,227,135,28,227,135,28,227,207,56, + 241,255,248,113,251,240,120,113,224,60,0,0,31,0,0,15, + 255,0,7,255,0,0,255,0,16,17,34,16,0,0,3,192, + 3,192,3,224,7,224,7,240,15,112,14,112,14,120,30,56, + 28,56,28,60,63,252,63,252,127,254,120,14,112,15,240,7, + 12,17,34,15,2,0,255,192,255,224,255,240,224,240,224,112, + 224,112,224,224,255,192,255,192,224,224,224,112,224,112,224,112, + 224,240,255,240,255,224,255,128,14,17,34,16,1,0,15,192, + 31,240,63,248,120,120,112,60,240,60,224,0,224,0,224,0, + 224,0,224,0,224,0,112,60,112,60,56,120,31,240,15,192, + 14,17,34,17,2,0,255,0,255,224,255,240,224,248,224,56, + 224,60,224,28,224,28,224,28,224,28,224,28,224,60,224,56, + 224,248,255,240,255,224,255,128,11,17,34,15,2,0,255,224, + 255,224,255,224,224,0,224,0,224,0,224,0,255,224,255,224, + 224,0,224,0,224,0,224,0,224,0,255,224,255,224,255,224, + 11,17,34,14,2,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,192,255,192,255,192,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,15,17,34,18,1,0,7,224, + 31,248,63,252,124,30,112,14,240,14,224,0,224,0,224,254, + 224,254,224,254,240,14,112,14,124,14,63,254,31,254,3,248, + 13,17,34,17,2,0,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,255,248,255,248,255,248,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,3,17,17,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 17,34,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,224,224,224,224,240, + 224,255,192,127,192,63,0,13,17,34,16,2,0,224,240,224, + 224,225,224,227,192,231,128,239,0,239,0,254,0,254,0,239, + 0,231,128,231,128,227,192,225,224,225,240,224,240,224,120,11, + 17,34,14,2,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,224,255,224,255,224,18,17,51,22,2,0,252,7,192, + 252,15,192,252,15,192,252,15,192,238,31,192,238,29,192,238, + 29,192,231,61,192,231,57,192,231,57,192,231,185,192,227,241, + 192,227,241,192,227,241,192,225,241,192,225,225,192,225,225,192, + 14,17,34,18,2,0,248,28,248,28,252,28,252,28,238,28, + 238,28,231,28,231,28,231,156,227,156,227,220,225,220,225,220, + 224,252,224,252,224,124,224,124,15,17,34,17,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,240,14,112,28,120,60,63,248,31,240,7,224, + 12,17,34,15,2,0,255,128,255,192,255,224,224,240,224,112, + 224,112,224,112,224,240,255,224,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,224,0,17,17,51,19,1,0,7,192, + 0,31,240,0,63,248,0,120,60,0,112,28,0,240,30,0, + 224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,240, + 14,0,112,28,0,120,60,0,63,255,128,31,255,128,7,255, + 128,13,17,34,16,2,0,255,192,255,240,255,248,224,120,224, + 56,224,56,224,112,255,224,255,192,255,240,224,240,224,112,224, + 120,224,56,224,56,224,56,224,56,13,17,34,15,1,0,15, + 192,63,224,56,240,112,112,112,0,120,0,126,0,63,192,31, + 240,3,240,0,120,224,56,224,56,240,120,127,240,63,224,15, + 128,13,17,34,15,1,0,255,248,255,248,255,248,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,14,17,34,18,2,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,240,60,120,120,127,248,63,240,15, + 192,17,17,51,17,0,0,240,7,128,112,7,0,120,15,0, + 120,14,0,56,30,0,60,30,0,28,28,0,30,60,0,30, + 60,0,14,56,0,15,120,0,15,112,0,7,112,0,7,240, + 0,7,224,0,3,224,0,3,224,0,23,17,51,23,0,0, + 240,56,30,112,124,28,112,124,28,120,124,60,120,108,60,56, + 238,56,56,238,56,56,238,56,60,198,120,29,199,112,29,199, + 112,29,199,112,29,131,112,15,131,224,15,131,224,15,131,224, + 15,1,224,14,17,34,16,1,0,240,60,120,56,120,120,60, + 112,28,224,31,224,15,192,7,128,7,128,15,192,31,192,29, + 224,56,240,120,112,112,120,240,60,224,60,13,17,34,15,1, + 0,224,56,240,120,112,112,120,240,56,224,61,224,29,192,31, + 192,15,128,15,128,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,12,17,34,14,1,0,255,240,255,240,255,240,1, + 240,1,224,3,192,7,128,7,128,15,0,30,0,60,0,60, + 0,120,0,240,0,255,240,255,240,255,240,5,22,22,9,2, + 251,248,248,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,7,18,18,10,1,255,192,224,96, + 96,112,48,48,56,24,24,24,28,12,12,14,6,6,6,5, + 22,22,9,2,251,248,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,248,248,11,14,28,23,6, + 0,4,0,14,0,10,0,27,0,17,0,17,0,49,128,32, + 128,32,128,96,192,64,64,192,96,128,32,128,32,12,2,4, + 12,0,253,255,240,255,240,4,4,4,6,0,14,224,96,48, + 48,10,12,24,13,1,0,31,0,127,128,113,192,1,192,31, + 192,127,192,241,192,225,192,225,192,243,192,127,192,60,192,12, + 17,34,14,1,0,224,0,224,0,224,0,224,0,224,0,239, + 128,255,192,241,224,240,240,224,112,224,112,224,112,224,112,240, + 240,248,224,255,192,231,128,10,12,24,12,1,0,31,0,127, + 128,115,192,225,192,224,0,224,0,224,0,225,192,225,192,115, + 192,127,128,31,0,12,17,34,14,1,0,0,112,0,112,0, + 112,0,112,0,112,31,112,63,240,120,240,240,240,224,112,224, + 112,224,112,224,112,240,240,113,240,63,240,30,112,11,12,24, + 13,1,0,31,0,63,128,113,192,225,224,255,224,255,224,224, + 0,224,0,225,192,113,192,127,192,31,0,8,17,17,9,1, + 0,31,63,56,56,56,255,255,56,56,56,56,56,56,56,56, + 56,56,12,17,34,14,1,251,31,112,63,240,120,240,240,240, + 224,112,224,112,224,112,224,112,240,240,112,240,127,240,30,112, + 0,112,112,112,120,224,63,224,31,128,11,17,34,13,1,0, + 224,0,224,0,224,0,224,0,224,0,239,128,255,192,241,224, + 240,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,3,17,17,5,1,0,224,224,224,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,4,22,22,7,2,251,112, + 112,112,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,240,240,224,11,17,34,12,1,0,224,0,224,0,224, + 0,224,0,224,0,227,192,227,128,231,0,239,0,254,0,254, + 0,238,0,239,0,231,128,231,128,227,192,225,224,3,17,17, + 6,1,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,19,12,36,21,1,0,231,143,128,239,223,192, + 249,241,224,240,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,11,12, + 24,13,1,0,239,128,255,192,241,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,12,12,24,14, + 1,0,31,128,63,192,112,224,240,224,224,112,224,112,224,112, + 224,112,240,240,112,224,63,192,31,128,12,17,34,14,1,251, + 231,128,255,192,248,224,240,240,224,112,224,112,224,112,224,112, + 240,240,241,224,255,192,239,128,224,0,224,0,224,0,224,0, + 224,0,12,17,34,14,1,251,30,112,63,240,113,240,240,240, + 224,112,224,112,224,112,224,112,240,240,120,240,63,240,31,112, + 0,112,0,112,0,112,0,112,0,112,7,12,12,9,1,0, + 238,238,254,240,240,224,224,224,224,224,224,224,10,12,24,12, + 1,0,63,0,127,128,241,192,225,192,248,0,127,0,31,128, + 3,192,225,192,227,192,127,128,63,0,8,15,15,10,1,0, + 24,56,56,255,255,56,56,56,56,56,56,56,60,63,15,11, + 12,24,13,1,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,241,224,127,224,62,224,12,12,24, + 13,0,0,240,112,112,240,112,224,120,224,56,224,57,192,29, + 192,29,192,31,128,15,128,15,128,15,0,19,12,36,20,0, + 0,240,240,224,112,240,224,113,240,224,113,249,192,57,249,192, + 59,185,192,59,159,192,63,159,128,31,31,128,31,15,128,31, + 15,0,15,15,0,11,12,24,13,1,0,241,224,113,192,123, + 128,63,128,31,0,30,0,31,0,63,128,123,128,115,192,241, + 192,225,224,12,17,34,12,0,251,240,112,112,240,120,224,56, + 224,57,224,61,192,29,192,29,192,31,128,15,128,15,128,7, + 0,7,0,15,0,14,0,14,0,30,0,10,12,24,12,1, + 0,255,128,255,128,7,128,7,0,14,0,30,0,60,0,56, + 0,112,0,224,0,255,192,255,192,9,23,46,12,2,250,7, + 128,15,128,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,60,0,248,0,224,0,248,0,60,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,15,128,7,128,2,25,25, + 8,3,250,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,23,23,12, + 2,250,224,240,56,56,56,56,56,56,56,28,31,7,31,28, + 56,56,56,56,56,56,56,248,224,12,3,6,12,0,5,60, + 48,127,240,227,192,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,7,0,0,3,17,17,9, + 3,251,224,224,224,0,0,224,224,224,224,224,224,224,224,224, + 224,224,224,10,18,36,13,1,253,1,0,1,0,3,0,31, + 0,127,128,115,192,231,192,228,0,228,0,236,0,233,192,233, + 192,123,192,127,128,31,0,16,0,48,0,32,0,11,17,34, + 13,1,0,15,128,31,224,56,224,56,224,56,0,56,0,255, + 0,255,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,255,224,255,224,11,12,24,13,1,4,128,32,95,64,113, + 128,96,128,64,64,64,64,64,64,64,64,96,192,49,128,95, + 64,128,32,13,17,34,15,1,0,224,120,240,120,112,112,120, + 240,56,224,253,248,253,248,31,192,15,128,255,248,255,248,7, + 0,7,0,7,0,7,0,7,0,7,0,1,22,22,8,4, + 251,128,128,128,128,128,128,128,128,128,0,0,0,0,128,128, + 128,128,128,128,128,128,128,9,21,42,11,1,252,63,0,127, + 0,241,0,224,0,224,0,120,0,62,0,63,0,119,128,227, + 128,227,128,231,128,255,0,126,0,31,0,7,128,3,128,3, + 128,135,128,255,0,124,0,8,3,3,8,0,15,231,231,231, + 17,17,51,19,1,0,3,224,0,15,248,0,60,30,0,51, + 230,0,103,243,0,103,59,0,206,57,128,206,1,128,206,1, + 128,206,1,128,206,57,128,78,57,0,103,243,0,51,230,0, + 56,14,0,15,248,0,3,224,0,8,11,11,10,1,6,60, + 102,6,126,230,198,198,126,0,0,255,11,9,18,14,1,1, + 60,224,56,224,121,224,113,192,243,192,113,192,121,224,56,224, + 60,224,12,5,10,14,1,5,255,240,0,16,0,16,0,16, + 0,16,255,17,17,51,19,1,0,3,224,0,15,248,0,60, + 30,0,55,246,0,103,251,0,102,27,0,198,25,128,199,241, + 128,199,241,128,198,57,128,198,25,128,70,25,0,102,27,0, + 48,6,0,56,14,0,15,248,0,3,224,0,7,2,2,7, + 0,15,254,254,5,5,5,7,1,12,112,136,136,136,112,14, + 14,28,24,5,0,2,0,2,0,2,0,2,0,255,252,255, + 252,2,0,2,0,2,0,2,0,0,0,0,0,255,252,255, + 252,7,9,9,9,1,8,124,230,6,14,28,56,224,254,254, + 7,9,9,9,1,8,124,206,6,14,56,14,6,206,124,5, + 4,4,5,1,14,56,112,96,192,255,11,20,40,14,2,253, + 63,224,125,128,253,128,253,128,253,128,253,128,253,128,125,128, + 13,128,13,128,13,128,13,128,13,128,13,128,13,128,13,128, + 13,128,13,128,13,128,13,128,3,3,3,7,2,6,224,224, + 224,6,5,5,6,1,251,32,56,12,12,248,4,9,9,6, + 1,8,48,240,176,48,48,48,48,48,48,8,11,11,10,1, + 6,60,102,195,195,195,195,231,126,60,0,255,12,9,18,14, + 1,1,227,128,113,192,121,224,56,224,60,240,56,224,121,224, + 113,192,227,128,16,17,34,18,1,0,48,24,240,24,176,48, + 48,112,48,96,48,224,48,192,49,128,49,142,3,14,3,30, + 6,54,14,54,12,102,24,127,24,6,48,6,16,17,34,18, + 1,0,48,24,240,48,176,48,48,96,48,224,48,192,49,192, + 49,128,51,62,3,119,6,3,6,7,12,14,28,28,24,112, + 48,127,48,127,17,17,51,19,1,0,124,6,0,198,12,0, + 6,12,0,56,24,0,14,56,0,6,48,0,206,112,0,124, + 96,0,0,199,0,1,199,0,1,143,0,3,155,0,3,27, + 0,7,51,0,6,63,128,12,3,0,28,3,0,10,17,34, + 12,1,251,14,0,14,0,0,0,0,0,14,0,14,0,14, + 0,28,0,56,0,112,0,240,0,224,0,224,128,224,192,115, + 192,127,128,31,0,16,24,48,16,0,0,14,0,7,0,3, + 0,3,128,1,128,0,0,0,0,3,192,3,192,3,224,7, + 224,7,240,15,112,14,112,14,120,30,56,28,56,28,60,63, + 252,63,252,127,254,120,14,112,15,240,7,16,24,48,16,0, + 0,0,112,0,96,0,224,0,192,1,128,0,0,0,0,3, + 192,3,192,3,224,7,224,7,240,15,112,14,112,14,120,30, + 56,28,56,28,60,63,252,63,252,127,254,120,14,112,15,240, + 7,16,24,48,16,0,0,1,192,3,192,3,224,6,96,4, + 48,0,0,0,0,3,192,3,192,3,224,7,224,7,240,15, + 112,14,112,14,120,30,56,28,56,28,60,63,252,63,252,127, + 254,120,14,112,15,240,7,16,23,46,16,0,0,0,16,7, + 240,7,224,0,0,0,0,0,0,3,192,3,192,3,224,7, + 224,7,240,15,112,14,112,14,120,30,56,28,56,28,60,63, + 252,63,252,127,254,120,14,112,15,240,7,16,23,46,17,0, + 0,14,112,14,112,14,112,0,0,0,0,0,0,3,192,3, + 192,7,224,7,224,7,224,15,112,14,112,30,120,30,56,28, + 56,60,60,63,252,127,254,127,254,112,14,240,15,224,7,15, + 25,50,16,1,0,3,128,6,192,4,64,4,64,4,192,3, + 128,0,0,0,0,3,128,7,192,7,192,15,192,14,224,14, + 224,30,224,28,112,28,112,60,112,56,120,63,248,127,252,127, + 252,112,28,240,30,224,14,21,17,51,23,1,0,0,255,248, + 0,255,248,1,248,0,1,248,0,3,184,0,3,184,0,7, + 56,0,7,63,248,14,63,248,14,56,0,30,56,0,31,248, + 0,63,248,0,120,56,0,112,56,0,240,63,248,224,63,248, + 14,22,44,16,1,251,15,192,31,240,63,248,120,56,112,60, + 240,28,224,0,224,0,224,0,224,0,224,0,224,0,112,28, + 112,60,56,120,31,240,15,192,3,0,3,192,0,96,0,96, + 7,192,11,24,48,15,2,0,56,0,24,0,28,0,12,0, + 6,0,0,0,0,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,255,224,255,224,255,224,11,24,48,15,2,0,3,128, + 3,0,7,0,6,0,12,0,0,0,0,0,255,224,255,224, + 255,224,224,0,224,0,224,0,224,0,255,224,255,224,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,255,224,11,24, + 48,15,2,0,14,0,31,0,27,0,59,128,49,128,0,0, + 0,0,255,224,255,224,255,224,224,0,224,0,224,0,224,0, + 255,224,255,224,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,255,224,11,23,46,15,2,0,59,128,59,128,59,128, + 0,0,0,0,0,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,255,224,255,224,255,224,5,24,24,7,0,0,224,224, + 96,48,16,0,0,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,5,24,24,5,1,0,56,48,112,96, + 192,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,7,24,24,7,0,0,56,56,108,108,198,0, + 0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,8,23,23,8,0,0,231,231,231,0,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,15, + 17,34,16,0,0,63,192,63,240,63,248,56,60,56,28,56, + 30,56,14,56,14,255,14,255,14,56,14,56,30,56,28,56, + 60,63,248,63,240,63,192,14,23,46,18,2,0,0,32,15, + 192,15,192,0,0,0,0,0,0,248,28,248,28,252,28,252, + 28,238,28,238,28,231,28,231,28,231,156,227,156,227,220,225, + 220,225,220,224,252,224,252,224,124,224,124,15,24,48,17,1, + 0,28,0,14,0,6,0,3,0,1,0,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,240,30,224,14,224,14,224, + 14,224,14,224,14,240,14,112,28,120,60,63,248,31,240,7, + 224,15,24,48,17,1,0,0,112,0,224,0,192,1,128,1, + 0,0,0,0,0,7,192,31,240,63,248,120,60,112,28,240, + 30,224,14,224,14,224,14,224,14,224,14,240,14,112,28,120, + 60,63,248,31,240,7,224,15,24,48,17,1,0,3,128,7, + 192,6,192,12,96,8,32,0,0,0,0,7,192,31,240,63, + 248,120,60,112,28,240,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,60,63,248,31,240,7,224,15,23,46, + 17,1,0,7,32,15,224,8,192,0,0,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,120,60,63,248,31,240,7, + 224,15,23,46,17,1,0,14,112,14,112,14,112,0,0,0, + 0,0,0,7,192,31,240,63,248,120,60,112,28,240,30,224, + 14,224,14,224,14,224,14,224,14,240,14,112,28,120,60,63, + 248,31,240,7,224,13,12,24,23,5,1,192,24,96,48,48, + 96,24,192,13,128,7,0,7,0,13,128,24,192,48,96,96, + 48,192,24,17,19,57,17,0,255,0,1,0,3,241,128,15, + 251,0,31,254,0,60,30,0,56,30,0,120,63,0,112,119, + 0,112,231,0,113,199,0,115,135,0,119,7,0,126,7,0, + 60,14,0,60,30,0,63,252,0,111,248,0,227,224,0,64, + 0,0,14,24,48,18,2,0,28,0,12,0,14,0,6,0, + 3,0,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,56,127,248,63,240,15,192,14,24,48,18,2,0,0,224, + 0,192,1,192,1,128,3,0,0,0,0,0,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,240,60,112,56,127,248,63,240,15,192,14,24, + 48,18,2,0,7,128,7,128,15,192,12,192,24,96,0,0, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,240,60,112,56,127,248, + 63,240,15,192,14,23,46,16,1,0,28,224,28,224,28,224, + 0,0,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 120,120,127,248,63,240,15,192,13,23,46,15,1,0,1,192, + 1,128,3,0,2,0,0,0,0,0,224,56,240,120,112,112, + 120,240,56,224,61,224,29,192,31,192,15,128,15,128,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,12,17,34,15, + 1,0,224,0,224,0,224,0,255,128,255,224,255,224,224,240, + 224,112,224,112,224,240,255,224,255,224,255,128,224,0,224,0, + 224,0,224,0,12,17,34,14,1,0,63,0,127,128,241,192, + 225,192,225,192,227,128,231,0,238,0,238,0,239,128,231,192, + 225,224,224,112,238,112,238,112,239,224,231,192,10,19,38,13, + 1,0,112,0,56,0,24,0,12,0,4,0,0,0,0,0, + 31,0,127,128,113,192,1,192,31,192,127,192,241,192,225,192, + 225,192,243,192,127,192,60,192,10,19,38,13,1,0,3,128, + 3,0,6,0,6,0,12,0,0,0,0,0,31,0,127,128, + 113,192,1,192,31,192,127,192,241,192,225,192,225,192,243,192, + 127,192,60,192,10,19,38,13,1,0,14,0,30,0,27,0, + 51,0,33,128,0,0,0,0,31,0,127,128,113,192,1,192, + 31,192,127,192,241,192,225,192,225,192,243,192,127,192,60,192, + 10,17,34,13,1,0,31,128,63,0,0,0,0,0,0,0, + 31,0,127,128,113,192,1,192,31,192,127,192,241,192,225,192, + 225,192,243,192,127,192,60,192,10,18,36,13,1,0,115,128, + 115,128,115,128,0,0,0,0,0,0,63,0,127,128,241,192, + 1,192,31,192,127,192,241,192,225,192,225,192,243,192,127,192, + 60,192,10,20,40,13,1,0,14,0,27,0,17,0,19,0, + 31,0,14,0,0,0,0,0,31,0,127,128,113,192,1,192, + 31,192,127,192,241,192,225,192,225,192,243,192,127,192,60,192, + 18,12,36,20,1,0,31,31,0,127,191,128,113,243,128,0, + 225,192,31,255,192,127,255,192,240,224,0,224,224,0,224,225, + 192,241,243,192,127,63,128,62,31,0,10,17,34,12,1,251, + 31,0,127,128,115,192,225,192,224,0,224,0,224,0,224,0, + 225,192,115,192,127,128,63,0,8,0,14,0,3,0,3,0, + 30,0,11,19,38,13,1,0,112,0,56,0,24,0,12,0, + 4,0,0,0,0,0,31,0,63,128,113,192,225,224,255,224, + 255,224,224,0,224,0,225,192,113,192,127,192,31,0,11,19, + 38,13,1,0,3,128,3,0,7,0,6,0,12,0,0,0, + 0,0,31,0,63,128,113,192,225,224,255,224,255,224,224,0, + 224,0,225,192,113,192,127,192,31,0,11,19,38,13,1,0, + 14,0,31,0,27,0,49,128,33,128,0,0,0,0,31,0, + 63,128,113,192,225,224,255,224,255,224,224,0,224,0,225,192, + 113,192,127,192,31,0,11,18,36,13,1,0,115,128,115,128, + 115,128,0,0,0,0,0,0,31,0,63,128,115,192,225,192, + 255,224,255,224,224,0,224,0,225,192,115,192,127,128,31,0, + 5,18,18,6,255,0,224,112,48,24,0,0,56,56,56,56, + 56,56,56,56,56,56,56,56,4,18,18,5,1,0,112,96, + 224,192,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 7,18,18,6,255,0,56,124,108,198,0,0,56,56,56,56, + 56,56,56,56,56,56,56,56,8,18,18,7,255,0,231,231, + 231,0,0,0,56,56,56,56,56,56,56,56,56,56,56,56, + 12,17,34,14,1,0,28,96,15,192,15,128,59,128,33,192, + 31,224,63,224,112,224,240,240,224,112,224,112,224,112,224,112, + 240,240,112,224,63,192,31,128,11,17,34,13,1,0,31,128, + 63,0,0,0,0,0,0,0,239,128,255,192,241,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 12,19,38,14,1,0,56,0,28,0,12,0,6,0,6,0, + 0,0,0,0,31,128,63,192,112,224,240,224,224,112,224,112, + 224,112,224,112,240,240,112,224,63,192,31,128,12,19,38,14, + 1,0,1,192,3,128,3,0,6,0,4,0,0,0,0,0, + 31,128,63,192,112,224,240,224,224,112,224,112,224,112,224,112, + 240,240,112,224,63,192,31,128,12,19,38,14,1,0,15,0, + 15,0,31,128,25,128,48,192,0,0,0,0,31,128,63,192, + 112,224,240,224,224,112,224,112,224,112,224,112,240,240,112,224, + 63,192,31,128,12,17,34,14,1,0,31,192,63,128,0,0, + 0,0,0,0,31,128,63,192,112,224,240,224,224,112,224,112, + 224,112,224,112,240,240,112,224,63,192,31,128,12,18,36,14, + 1,0,57,192,57,192,57,192,0,0,0,0,0,0,31,128, + 63,192,112,224,240,224,224,112,224,112,224,112,224,112,240,240, + 112,224,63,192,31,128,14,10,20,24,5,2,7,0,7,0, + 6,0,0,0,255,252,255,252,0,0,2,0,7,0,7,0, + 12,15,30,14,1,254,0,32,0,48,31,224,63,192,113,224, + 241,240,227,112,230,112,236,112,248,112,248,240,112,224,127,192, + 223,128,192,0,11,19,38,13,1,0,112,0,56,0,28,0, + 12,0,6,0,0,0,0,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,241,224,127,224,62,224, + 11,19,38,13,1,0,3,128,3,128,7,0,6,0,12,0, + 0,0,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,241,224,127,224,62,224,11,19,38,13, + 1,0,14,0,31,0,27,0,49,128,32,128,0,0,0,0, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,241,224,127,224,62,224,11,18,36,13,1,0,115,128, + 115,128,115,128,0,0,0,0,0,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,241,224,127,224, + 62,224,11,23,46,13,1,251,1,128,3,128,3,0,6,0, + 0,0,0,0,224,224,224,224,241,224,113,192,121,192,59,192, + 59,128,63,128,31,128,31,0,31,0,15,0,14,0,14,0, + 254,0,252,0,120,0,12,22,44,15,2,251,224,0,224,0, + 224,0,224,0,224,0,239,128,255,192,248,224,240,240,224,112, + 224,112,224,112,224,112,240,240,241,224,255,192,239,128,224,0, + 224,0,224,0,224,0,224,0,12,22,44,14,1,251,57,192, + 57,192,57,192,0,0,0,0,240,112,240,240,112,240,120,224, + 121,224,57,192,61,192,31,192,31,128,31,128,15,128,15,0, + 15,0,15,0,14,0,30,0,28,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 17 + Calculated Max Values w=14 h=18 x= 5 y= 8 dx=24 dy= 0 ascent=17 len=34 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =17 descent= 0 + X Font ascent =17 descent= 0 + Max Font ascent =17 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17n[512] U8G_SECTION(".progmem.u8g_font_fub17n") = { + 0,34,31,254,250,17,0,0,0,0,42,57,0,17,253,17, + 0,9,9,18,15,3,8,54,0,54,0,54,0,156,128,255, + 128,156,128,54,0,54,0,54,0,14,14,28,24,5,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,252,255,252,2, + 0,2,0,2,0,2,0,2,0,2,0,5,6,6,7,1, + 253,56,112,112,96,96,224,6,3,3,8,1,4,252,252,252, + 3,3,3,7,2,0,224,224,224,8,18,18,10,1,255,7, + 6,6,14,12,12,12,28,24,24,56,48,48,48,112,96,96, + 224,11,17,34,13,1,0,31,0,63,128,113,192,112,192,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,112,192,113,192,63,128,31,0,7,17,17,13,2,0,14, + 62,254,254,206,14,14,14,14,14,14,14,14,14,14,14,14, + 12,17,34,13,1,0,15,128,63,224,120,224,112,112,0,112, + 0,112,0,240,1,224,3,224,7,192,15,128,30,0,60,0, + 248,0,255,240,255,240,255,240,11,17,34,13,1,0,31,0, + 127,192,241,224,224,224,0,224,0,224,1,192,15,128,15,128, + 1,192,0,224,0,224,224,224,241,224,255,192,127,128,31,0, + 12,17,34,13,1,0,3,192,7,192,7,192,15,192,29,192, + 29,192,57,192,113,192,113,192,225,192,255,240,255,240,255,240, + 1,192,1,192,1,192,1,192,11,17,34,13,1,0,255,192, + 255,192,255,192,224,0,224,0,224,0,239,128,255,192,241,224, + 224,224,0,224,0,224,224,224,225,224,255,192,127,128,63,0, + 11,17,34,13,1,0,15,0,63,192,57,224,112,224,96,0, + 224,0,239,128,255,192,241,224,224,224,224,224,224,224,224,224, + 96,224,113,192,63,128,31,0,11,17,34,13,1,0,255,224, + 255,224,255,224,0,224,1,224,1,192,3,192,3,128,7,128, + 7,128,7,0,15,0,14,0,30,0,28,0,60,0,60,0, + 11,17,34,13,1,0,31,0,127,192,241,224,224,224,224,224, + 224,224,113,192,63,128,63,128,113,192,224,224,224,224,224,224, + 224,224,241,224,127,192,31,0,11,17,34,13,1,0,31,0, + 63,128,113,192,224,192,224,224,224,224,224,224,241,224,127,224, + 62,224,0,224,0,224,224,224,225,192,113,192,127,128,30,0 + }; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--23-230-72-72-P-115-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=25 x= 6 y=14 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=34 h=31 x=-2 y=-6 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub17r[3222] U8G_SECTION(".progmem.u8g_font_fub17r") = { + 0,34,31,254,250,17,4,8,8,209,32,127,251,19,250,17, + 251,0,0,0,7,0,0,3,17,17,9,3,0,224,224,224, + 224,224,224,224,224,224,224,224,224,0,0,224,224,224,8,7, + 7,12,2,10,231,231,231,231,231,231,231,14,17,34,16,1, + 0,3,24,7,24,6,56,6,48,63,252,63,252,12,96,12, + 96,28,96,24,224,255,248,255,240,57,192,49,128,49,128,113, + 128,99,128,12,21,42,14,1,253,2,0,15,128,63,192,127, + 224,242,224,226,224,226,0,250,0,126,0,63,192,15,224,3, + 240,2,240,226,112,226,112,242,240,127,224,63,192,15,0,2, + 0,2,0,21,17,51,23,1,0,62,3,0,127,7,0,99, + 6,0,193,142,0,193,140,0,193,152,0,193,184,0,99,48, + 128,127,119,224,62,102,48,0,236,24,0,204,24,1,204,24, + 1,140,24,3,14,56,7,7,240,6,3,224,16,17,34,18, + 1,0,31,128,63,192,121,224,112,224,113,224,57,192,63,128, + 31,0,63,30,119,156,243,220,225,252,224,252,224,120,120,124, + 127,254,31,207,3,7,7,9,3,10,224,224,224,224,224,224, + 96,5,20,20,9,2,253,56,56,112,112,112,240,224,224,224, + 224,224,224,224,224,240,112,112,112,48,56,5,20,20,9,2, + 253,224,96,112,112,112,56,56,56,56,56,56,56,56,56,56, + 112,112,112,96,224,9,9,18,15,3,8,54,0,54,0,54, + 0,156,128,255,128,156,128,54,0,54,0,54,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,255,252,2,0,2,0,2,0,2,0,2,0,2,0,5, + 6,6,7,1,253,56,112,112,96,96,224,6,3,3,8,1, + 4,252,252,252,3,3,3,7,2,0,224,224,224,8,18,18, + 10,1,255,7,6,6,14,12,12,12,28,24,24,56,48,48, + 48,112,96,96,224,11,17,34,13,1,0,31,0,63,128,113, + 192,112,192,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,112,192,113,192,63,128,31,0,7,17,17, + 13,2,0,14,62,254,254,206,14,14,14,14,14,14,14,14, + 14,14,14,14,12,17,34,13,1,0,15,128,63,224,120,224, + 112,112,0,112,0,112,0,240,1,224,3,224,7,192,15,128, + 30,0,60,0,248,0,255,240,255,240,255,240,11,17,34,13, + 1,0,31,0,127,192,241,224,224,224,0,224,0,224,1,192, + 15,128,15,128,1,192,0,224,0,224,224,224,241,224,255,192, + 127,128,31,0,12,17,34,13,1,0,3,192,7,192,7,192, + 15,192,29,192,29,192,57,192,113,192,113,192,225,192,255,240, + 255,240,255,240,1,192,1,192,1,192,1,192,11,17,34,13, + 1,0,255,192,255,192,255,192,224,0,224,0,224,0,239,128, + 255,192,241,224,224,224,0,224,0,224,224,224,225,224,255,192, + 127,128,63,0,11,17,34,13,1,0,15,0,63,192,57,224, + 112,224,96,0,224,0,239,128,255,192,241,224,224,224,224,224, + 224,224,224,224,96,224,113,192,63,128,31,0,11,17,34,13, + 1,0,255,224,255,224,255,224,0,224,1,224,1,192,3,192, + 3,128,7,128,7,128,7,0,15,0,14,0,30,0,28,0, + 60,0,60,0,11,17,34,13,1,0,31,0,127,192,241,224, + 224,224,224,224,224,224,113,192,63,128,63,128,113,192,224,224, + 224,224,224,224,224,224,241,224,127,192,31,0,11,17,34,13, + 1,0,31,0,63,128,113,192,224,192,224,224,224,224,224,224, + 241,224,127,224,62,224,0,224,0,224,224,224,225,192,113,192, + 127,128,30,0,3,12,12,7,3,0,224,224,224,0,0,0, + 0,0,0,224,224,224,5,14,14,8,1,254,56,56,56,0, + 0,0,0,0,56,56,112,112,96,224,14,12,24,24,5,1, + 0,12,0,60,1,224,7,0,60,0,224,0,224,0,60,0, + 7,0,1,224,0,60,0,12,14,6,12,24,5,4,255,252, + 255,252,0,0,0,0,255,252,255,252,14,12,24,24,5,1, + 192,0,240,0,30,0,3,128,0,240,0,28,0,28,0,240, + 3,128,30,0,240,0,192,0,10,17,34,12,1,0,62,0, + 127,128,227,128,193,192,1,192,1,192,3,128,7,128,14,0, + 28,0,24,0,24,0,24,0,0,0,0,0,24,0,24,0, + 22,22,66,24,1,251,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,240,120,247,120,121,255,56,113,207,60,243,135, + 28,227,135,28,227,135,28,227,135,28,227,135,28,227,207,56, + 241,255,248,113,251,240,120,113,224,60,0,0,31,0,0,15, + 255,0,7,255,0,0,255,0,16,17,34,16,0,0,3,192, + 3,192,3,224,7,224,7,240,15,112,14,112,14,120,30,56, + 28,56,28,60,63,252,63,252,127,254,120,14,112,15,240,7, + 12,17,34,15,2,0,255,192,255,224,255,240,224,240,224,112, + 224,112,224,224,255,192,255,192,224,224,224,112,224,112,224,112, + 224,240,255,240,255,224,255,128,14,17,34,16,1,0,15,192, + 31,240,63,248,120,120,112,60,240,60,224,0,224,0,224,0, + 224,0,224,0,224,0,112,60,112,60,56,120,31,240,15,192, + 14,17,34,17,2,0,255,0,255,224,255,240,224,248,224,56, + 224,60,224,28,224,28,224,28,224,28,224,28,224,60,224,56, + 224,248,255,240,255,224,255,128,11,17,34,15,2,0,255,224, + 255,224,255,224,224,0,224,0,224,0,224,0,255,224,255,224, + 224,0,224,0,224,0,224,0,224,0,255,224,255,224,255,224, + 11,17,34,14,2,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,255,192,255,192,255,192,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,15,17,34,18,1,0,7,224, + 31,248,63,252,124,30,112,14,240,14,224,0,224,0,224,254, + 224,254,224,254,240,14,112,14,124,14,63,254,31,254,3,248, + 13,17,34,17,2,0,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,255,248,255,248,255,248,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,3,17,17,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 17,34,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,224,224,224,224,240, + 224,255,192,127,192,63,0,13,17,34,16,2,0,224,240,224, + 224,225,224,227,192,231,128,239,0,239,0,254,0,254,0,239, + 0,231,128,231,128,227,192,225,224,225,240,224,240,224,120,11, + 17,34,14,2,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,224,255,224,255,224,18,17,51,22,2,0,252,7,192, + 252,15,192,252,15,192,252,15,192,238,31,192,238,29,192,238, + 29,192,231,61,192,231,57,192,231,57,192,231,185,192,227,241, + 192,227,241,192,227,241,192,225,241,192,225,225,192,225,225,192, + 14,17,34,18,2,0,248,28,248,28,252,28,252,28,238,28, + 238,28,231,28,231,28,231,156,227,156,227,220,225,220,225,220, + 224,252,224,252,224,124,224,124,15,17,34,17,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,240,14,112,28,120,60,63,248,31,240,7,224, + 12,17,34,15,2,0,255,128,255,192,255,224,224,240,224,112, + 224,112,224,112,224,240,255,224,255,192,255,0,224,0,224,0, + 224,0,224,0,224,0,224,0,17,17,51,19,1,0,7,192, + 0,31,240,0,63,248,0,120,60,0,112,28,0,240,30,0, + 224,14,0,224,14,0,224,14,0,224,14,0,224,14,0,240, + 14,0,112,28,0,120,60,0,63,255,128,31,255,128,7,255, + 128,13,17,34,16,2,0,255,192,255,240,255,248,224,120,224, + 56,224,56,224,112,255,224,255,192,255,240,224,240,224,112,224, + 120,224,56,224,56,224,56,224,56,13,17,34,15,1,0,15, + 192,63,224,56,240,112,112,112,0,120,0,126,0,63,192,31, + 240,3,240,0,120,224,56,224,56,240,120,127,240,63,224,15, + 128,13,17,34,15,1,0,255,248,255,248,255,248,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,14,17,34,18,2,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,240,60,120,120,127,248,63,240,15, + 192,17,17,51,17,0,0,240,7,128,112,7,0,120,15,0, + 120,14,0,56,30,0,60,30,0,28,28,0,30,60,0,30, + 60,0,14,56,0,15,120,0,15,112,0,7,112,0,7,240, + 0,7,224,0,3,224,0,3,224,0,23,17,51,23,0,0, + 240,56,30,112,124,28,112,124,28,120,124,60,120,108,60,56, + 238,56,56,238,56,56,238,56,60,198,120,29,199,112,29,199, + 112,29,199,112,29,131,112,15,131,224,15,131,224,15,131,224, + 15,1,224,14,17,34,16,1,0,240,60,120,56,120,120,60, + 112,28,224,31,224,15,192,7,128,7,128,15,192,31,192,29, + 224,56,240,120,112,112,120,240,60,224,60,13,17,34,15,1, + 0,224,56,240,120,112,112,120,240,56,224,61,224,29,192,31, + 192,15,128,15,128,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,12,17,34,14,1,0,255,240,255,240,255,240,1, + 240,1,224,3,192,7,128,7,128,15,0,30,0,60,0,60, + 0,120,0,240,0,255,240,255,240,255,240,5,22,22,9,2, + 251,248,248,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,7,18,18,10,1,255,192,224,96, + 96,112,48,48,56,24,24,24,28,12,12,14,6,6,6,5, + 22,22,9,2,251,248,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,248,248,11,14,28,23,6, + 0,4,0,14,0,10,0,27,0,17,0,17,0,49,128,32, + 128,32,128,96,192,64,64,192,96,128,32,128,32,12,2,4, + 12,0,253,255,240,255,240,4,4,4,6,0,14,224,96,48, + 48,10,12,24,13,1,0,31,0,127,128,113,192,1,192,31, + 192,127,192,241,192,225,192,225,192,243,192,127,192,60,192,12, + 17,34,14,1,0,224,0,224,0,224,0,224,0,224,0,239, + 128,255,192,241,224,240,240,224,112,224,112,224,112,224,112,240, + 240,248,224,255,192,231,128,10,12,24,12,1,0,31,0,127, + 128,115,192,225,192,224,0,224,0,224,0,225,192,225,192,115, + 192,127,128,31,0,12,17,34,14,1,0,0,112,0,112,0, + 112,0,112,0,112,31,112,63,240,120,240,240,240,224,112,224, + 112,224,112,224,112,240,240,113,240,63,240,30,112,11,12,24, + 13,1,0,31,0,63,128,113,192,225,224,255,224,255,224,224, + 0,224,0,225,192,113,192,127,192,31,0,8,17,17,9,1, + 0,31,63,56,56,56,255,255,56,56,56,56,56,56,56,56, + 56,56,12,17,34,14,1,251,31,112,63,240,120,240,240,240, + 224,112,224,112,224,112,224,112,240,240,112,240,127,240,30,112, + 0,112,112,112,120,224,63,224,31,128,11,17,34,13,1,0, + 224,0,224,0,224,0,224,0,224,0,239,128,255,192,241,224, + 240,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,3,17,17,5,1,0,224,224,224,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,4,22,22,7,2,251,112, + 112,112,0,0,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,240,240,224,11,17,34,12,1,0,224,0,224,0,224, + 0,224,0,224,0,227,192,227,128,231,0,239,0,254,0,254, + 0,238,0,239,0,231,128,231,128,227,192,225,224,3,17,17, + 6,1,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,19,12,36,21,1,0,231,143,128,239,223,192, + 249,241,224,240,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,11,12, + 24,13,1,0,239,128,255,192,241,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,12,12,24,14, + 1,0,31,128,63,192,112,224,240,224,224,112,224,112,224,112, + 224,112,240,240,112,224,63,192,31,128,12,17,34,14,1,251, + 231,128,255,192,248,224,240,240,224,112,224,112,224,112,224,112, + 240,240,241,224,255,192,239,128,224,0,224,0,224,0,224,0, + 224,0,12,17,34,14,1,251,30,112,63,240,113,240,240,240, + 224,112,224,112,224,112,224,112,240,240,120,240,63,240,31,112, + 0,112,0,112,0,112,0,112,0,112,7,12,12,9,1,0, + 238,238,254,240,240,224,224,224,224,224,224,224,10,12,24,12, + 1,0,63,0,127,128,241,192,225,192,248,0,127,0,31,128, + 3,192,225,192,227,192,127,128,63,0,8,15,15,10,1,0, + 24,56,56,255,255,56,56,56,56,56,56,56,60,63,15,11, + 12,24,13,1,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,241,224,127,224,62,224,12,12,24, + 13,0,0,240,112,112,240,112,224,120,224,56,224,57,192,29, + 192,29,192,31,128,15,128,15,128,15,0,19,12,36,20,0, + 0,240,240,224,112,240,224,113,240,224,113,249,192,57,249,192, + 59,185,192,59,159,192,63,159,128,31,31,128,31,15,128,31, + 15,0,15,15,0,11,12,24,13,1,0,241,224,113,192,123, + 128,63,128,31,0,30,0,31,0,63,128,123,128,115,192,241, + 192,225,224,12,17,34,12,0,251,240,112,112,240,120,224,56, + 224,57,224,61,192,29,192,29,192,31,128,15,128,15,128,7, + 0,7,0,15,0,14,0,14,0,30,0,10,12,24,12,1, + 0,255,128,255,128,7,128,7,0,14,0,30,0,60,0,56, + 0,112,0,224,0,255,192,255,192,9,23,46,12,2,250,7, + 128,15,128,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,60,0,248,0,224,0,248,0,60,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,15,128,7,128,2,25,25, + 8,3,250,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,23,23,12, + 2,250,224,240,56,56,56,56,56,56,56,28,31,7,31,28, + 56,56,56,56,56,56,56,248,224,12,3,6,12,0,5,60, + 48,127,240,227,192,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=27 h=29 x= 7 y=18 dx=28 dy= 0 ascent=29 len=100 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =29 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20[8916] U8G_SECTION(".progmem.u8g_font_fub20") = { + 0,40,36,254,249,20,4,242,11,37,32,255,251,29,249,20, + 251,0,0,0,8,0,0,4,20,20,11,4,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,0,0,0,240,240, + 240,10,8,16,14,2,12,243,192,243,192,243,192,243,192,243, + 192,225,192,225,192,97,128,17,20,60,19,1,0,1,199,0, + 1,134,0,3,142,0,3,142,0,3,142,0,31,255,128,63, + 255,128,7,28,0,6,24,0,14,56,0,14,56,0,14,48, + 0,127,254,0,255,254,0,28,112,0,24,96,0,56,224,0, + 56,224,0,56,224,0,49,192,0,14,24,48,16,1,253,1, + 0,7,192,31,240,63,248,125,120,113,60,241,60,241,0,253, + 0,127,0,63,224,31,240,3,248,1,124,1,60,241,60,241, + 60,249,60,127,248,63,240,31,224,1,0,1,0,1,0,25, + 20,80,27,1,0,31,0,96,0,63,128,224,0,123,192,192, + 0,225,193,192,0,224,227,128,0,224,227,0,0,224,231,0, + 0,224,230,0,0,113,206,0,0,127,204,124,0,63,28,254, + 0,0,57,199,0,0,59,131,0,0,115,131,128,0,99,131, + 128,0,227,131,128,1,195,135,128,1,193,239,0,3,128,254, + 0,3,128,124,0,19,20,60,21,1,0,15,192,0,31,240, + 0,60,240,0,120,120,0,120,120,0,120,112,0,60,240,0, + 63,224,0,31,192,0,31,128,0,63,135,128,123,199,128,249, + 231,128,240,247,0,240,127,0,240,63,0,240,30,0,124,127, + 0,63,255,128,15,227,224,4,8,8,11,4,12,240,224,224, + 224,224,224,224,224,6,24,24,10,2,252,28,56,56,120,120, + 112,112,240,240,240,240,240,240,240,240,240,240,112,112,120,120, + 56,56,28,6,24,24,11,3,252,224,240,112,112,120,120,120, + 56,56,60,60,60,60,60,60,56,56,120,120,120,112,112,240, + 224,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128,4,14,14,9,4,0,240,240,240, + 240,0,0,0,0,0,0,240,240,240,240,6,17,17,8,1, + 253,60,60,60,60,0,0,0,0,0,0,60,56,120,112,112, + 224,224,16,14,28,26,5,1,0,3,0,31,0,120,3,192, + 15,0,120,0,224,0,224,0,60,0,7,128,1,224,0,60, + 0,15,0,1,16,7,14,26,5,5,255,255,255,255,0,0, + 0,0,0,0,255,255,255,255,16,14,28,26,5,1,192,0, + 248,0,30,0,3,192,0,240,0,30,0,7,0,7,0,60, + 1,224,7,128,60,0,240,0,128,0,13,20,40,15,1,0, + 31,128,63,224,121,240,240,112,32,120,0,120,0,112,0,240, + 1,224,3,192,7,128,14,0,14,0,14,0,14,0,0,0, + 0,0,15,0,15,0,15,0,26,25,100,28,1,251,0,63, + 128,0,1,255,240,0,7,255,252,0,15,224,254,0,31,0, + 31,0,62,0,15,0,60,61,231,128,120,255,231,128,121,247, + 227,192,241,225,227,192,241,193,227,192,243,193,227,192,243,193, + 227,192,243,193,227,192,243,193,227,192,241,193,227,128,113,227, + 231,128,120,255,255,0,124,254,255,0,60,60,60,0,31,0, + 0,0,15,192,32,0,7,255,224,0,1,255,224,0,0,127, + 224,0,19,20,60,19,0,0,1,240,0,1,240,0,1,248, + 0,3,248,0,3,248,0,3,188,0,7,188,0,7,156,0, + 15,30,0,15,30,0,15,30,0,30,15,0,30,15,0,31, + 255,128,63,255,128,63,255,128,56,3,192,120,3,192,120,3, + 192,240,1,224,15,20,40,18,2,0,255,224,255,240,255,248, + 240,124,240,60,240,60,240,56,240,120,255,240,255,192,255,248, + 240,60,240,28,240,30,240,30,240,30,240,60,255,252,255,248, + 255,224,17,20,60,19,1,0,7,240,0,15,252,0,63,254, + 0,60,31,0,120,15,0,112,15,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 15,128,112,15,0,120,31,0,60,62,0,63,254,0,31,248, + 0,7,224,0,16,20,40,19,2,0,255,128,255,240,255,248, + 240,124,240,62,240,30,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,240,30,240,62,240,124,255,248,255,240, + 255,128,13,20,40,17,2,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,240,0,255,248,255,248,255,248, + 13,20,40,16,2,0,255,248,255,248,255,248,240,0,240,0, + 240,0,240,0,240,0,255,240,255,240,255,240,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,18,20, + 60,20,1,0,1,248,0,15,254,0,31,255,0,62,15,128, + 124,3,128,120,3,192,112,0,0,240,0,0,240,0,0,240, + 63,192,240,63,192,240,63,192,240,3,192,240,3,192,120,3, + 192,124,3,192,63,3,192,31,255,192,15,255,192,1,254,0, + 16,20,40,20,2,0,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,255,255,255,255,255,255,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,4,20, + 20,8,2,0,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,14,20,40,17,1,0,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,240,60,240,56,248,120, + 127,240,127,224,31,192,15,20,40,18,2,0,240,60,240,124, + 240,248,241,240,241,224,243,224,247,192,255,128,255,0,255,0, + 255,128,247,192,247,192,243,224,241,240,240,240,240,248,240,124, + 240,62,240,62,13,20,40,16,2,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,255,248,255,248, + 255,248,21,20,60,25,2,0,252,1,248,254,3,248,254,3, + 248,254,3,248,255,7,248,255,7,248,247,7,120,247,15,120, + 247,143,120,247,143,120,243,142,120,243,222,120,243,222,120,241, + 220,120,241,252,120,241,252,120,240,248,120,240,248,120,240,248, + 120,240,248,120,17,20,60,21,2,0,252,7,128,252,7,128, + 254,7,128,254,7,128,255,7,128,255,7,128,247,135,128,247, + 135,128,243,199,128,243,199,128,241,231,128,241,231,128,240,247, + 128,240,247,128,240,127,128,240,127,128,240,63,128,240,63,128, + 240,31,128,240,31,128,18,20,60,20,1,0,3,240,0,15, + 252,0,31,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 254,0,15,252,0,3,240,0,14,20,40,17,2,0,255,192, + 255,240,255,248,240,124,240,60,240,60,240,60,240,60,240,124, + 255,248,255,240,255,192,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,20,20,60,22,1,0,3,240,0,15, + 252,0,63,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 255,240,15,255,240,3,255,240,15,20,40,18,2,0,255,224, + 255,248,255,252,240,62,240,30,240,30,240,30,240,30,240,124, + 255,248,255,240,255,252,240,60,240,60,240,28,240,30,240,30, + 240,30,240,30,240,14,16,20,40,18,1,0,7,224,31,248, + 63,252,60,60,120,30,120,30,120,0,124,0,63,128,31,240, + 15,252,0,254,0,30,0,15,240,15,240,14,120,62,127,252, + 63,248,7,224,16,20,40,18,1,0,255,255,255,255,255,255, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,17,20,60,21,2,0,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,0,240,15,0,120,15,0,124,30,0,63,254,0,31,248, + 0,7,224,0,19,20,60,20,0,0,248,1,224,120,1,224, + 120,3,224,60,3,192,60,3,192,62,7,192,30,7,128,30, + 7,128,31,15,128,15,15,0,15,15,0,15,158,0,7,158, + 0,7,158,0,7,252,0,3,252,0,3,252,0,1,248,0, + 1,248,0,1,240,0,27,20,80,27,0,0,248,31,3,224, + 120,31,3,192,120,31,3,192,120,63,131,192,120,63,131,192, + 60,59,135,128,60,59,135,128,60,123,199,128,60,123,199,128, + 28,113,199,0,30,113,207,0,30,241,239,0,30,241,239,0, + 14,224,238,0,14,224,238,0,15,224,254,0,15,224,254,0, + 7,192,124,0,7,192,124,0,7,192,124,0,17,20,60,19, + 1,0,248,15,128,120,15,0,124,30,0,62,30,0,30,60, + 0,31,120,0,15,120,0,7,240,0,7,224,0,3,224,0, + 7,224,0,7,240,0,15,240,0,30,120,0,30,124,0,60, + 60,0,60,30,0,120,31,0,240,15,0,240,7,128,16,20, + 40,17,1,0,240,31,248,30,120,30,124,60,60,60,60,120, + 30,120,30,240,15,240,15,224,7,224,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,20,40,17, + 1,0,127,254,127,254,127,254,0,62,0,124,0,248,0,248, + 1,240,3,224,7,224,7,192,15,128,31,0,63,0,62,0, + 124,0,248,0,255,254,255,254,255,254,6,25,25,10,2,251, + 252,252,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,252,252,9,21,42,12,1,255,224, + 0,96,0,112,0,112,0,48,0,56,0,56,0,56,0,24, + 0,28,0,28,0,12,0,14,0,14,0,6,0,6,0,7, + 0,7,0,3,0,3,128,3,128,7,25,25,11,2,251,254, + 254,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,254,254,13,17,34,27,7,0,2,0, + 7,0,5,0,5,0,13,128,8,128,24,192,24,192,16,64, + 48,96,48,96,32,32,96,48,64,16,192,24,192,24,128,8, + 14,2,4,14,0,252,255,252,255,252,5,5,5,7,0,16, + 224,112,112,56,24,12,14,28,15,1,0,31,128,63,224,121, + 240,112,240,0,240,63,240,127,240,248,240,240,240,240,240,240, + 240,251,240,127,112,62,112,14,20,40,17,2,0,240,0,240, + 0,240,0,240,0,240,0,240,0,247,192,255,240,253,240,248, + 120,240,120,240,60,240,60,240,60,240,60,240,56,248,120,252, + 240,255,240,243,192,12,14,28,14,1,0,31,128,63,224,121, + 224,112,224,240,240,240,0,240,0,240,0,240,0,240,240,240, + 224,121,224,63,192,31,128,14,20,40,16,1,0,0,60,0, + 60,0,60,0,60,0,60,0,60,31,188,63,252,124,252,120, + 124,240,60,240,60,240,60,240,60,240,60,240,60,120,124,125, + 252,63,188,15,60,13,14,28,15,1,0,15,128,63,224,121, + 240,112,240,240,240,255,240,255,248,240,0,240,0,240,240,112, + 240,121,240,63,224,31,128,10,20,40,11,1,0,15,192,31, + 192,62,64,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,14,19,38,16,1,251,31,188,63,252,124, + 252,120,124,240,60,240,60,240,60,240,60,240,60,240,60,112, + 124,124,252,63,188,15,60,0,60,120,56,124,248,63,240,15, + 192,13,20,40,16,2,0,240,0,240,0,240,0,240,0,240, + 0,240,0,247,192,255,240,253,240,248,120,240,120,240,120,240, + 120,240,120,240,120,240,120,240,120,240,120,240,120,240,120,4, + 20,20,6,1,0,240,240,240,240,0,0,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,5,25,25,9,3,251,120, + 120,120,120,0,0,120,120,120,120,120,120,120,120,120,120,120, + 120,120,120,120,120,248,248,240,12,20,40,15,2,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,240,241,224,243,192, + 247,128,255,128,255,0,255,0,255,0,247,128,247,192,243,192, + 241,224,241,240,240,240,4,20,20,7,2,0,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 22,14,42,25,2,0,243,227,224,255,247,248,253,254,248,240, + 120,120,240,120,60,240,120,60,240,120,60,240,120,60,240,120, + 60,240,120,60,240,120,60,240,120,60,240,120,60,240,120,60, + 13,14,28,16,2,0,247,192,255,240,253,240,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,14,14,28,16,1,0,15,192,63,224,124,240,120,120, + 240,60,240,60,240,60,240,60,240,60,240,60,120,120,124,248, + 63,240,15,192,14,19,38,17,2,251,243,192,255,240,253,240, + 248,120,240,56,240,60,240,60,240,60,240,60,240,120,240,120, + 253,248,255,240,247,192,240,0,240,0,240,0,240,0,240,0, + 14,19,38,16,1,251,15,60,63,252,125,252,120,124,240,60, + 240,60,240,60,240,60,240,60,240,60,120,124,124,252,63,252, + 31,188,0,60,0,60,0,60,0,60,0,60,9,14,28,11, + 2,0,247,128,255,128,255,128,252,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,12,14, + 28,14,1,0,31,128,127,192,123,224,241,224,240,0,126,0, + 127,192,31,224,1,240,240,240,240,240,249,224,127,192,31,128, + 10,18,36,12,1,0,2,0,14,0,30,0,30,0,255,192, + 255,192,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,0,15,192,7,192,13,14,28,16,2,0, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,248,249,248,127,248,62,120,14,14,28,15, + 0,0,240,60,120,60,120,60,56,120,60,120,60,112,28,240, + 30,240,30,224,15,224,15,224,15,192,7,192,7,192,23,14, + 42,23,0,0,240,124,30,112,124,28,120,124,60,120,254,60, + 56,238,60,60,238,56,61,239,120,61,231,120,29,199,112,31, + 199,240,31,199,240,15,131,224,15,131,224,15,131,224,13,14, + 28,15,1,0,240,120,120,240,124,224,61,224,31,192,31,128, + 15,128,31,128,31,192,63,224,57,224,120,240,240,248,240,120, + 14,19,38,15,0,251,248,60,120,60,120,60,60,120,60,120, + 60,112,30,240,30,240,14,224,15,224,15,224,7,192,7,192, + 3,192,7,128,7,128,7,128,15,0,15,0,11,14,28,13, + 1,0,255,224,255,224,1,224,3,224,7,192,7,128,15,0, + 30,0,60,0,124,0,248,0,240,0,255,224,255,224,10,27, + 54,13,2,249,3,192,15,192,31,128,30,0,30,0,30,0, + 30,0,30,0,30,0,28,0,28,0,60,0,248,0,224,0, + 248,0,124,0,60,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,128,15,192,7,192,2,29,29,10,4,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,10,27,54, + 14,2,249,240,0,252,0,124,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,15,0,7,192,3,192,7, + 192,15,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,124,0,252,0,240,0,14,3,6,14,0,5,63, + 156,127,248,225,240,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,8,0,0,4,19,19,10, + 3,251,240,240,240,0,0,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,12,20,40,16,2,253,0,192,0,192,0, + 128,15,128,63,224,125,224,115,240,243,240,242,0,242,0,246, + 0,244,0,244,240,124,240,121,224,63,224,31,128,24,0,16, + 0,48,0,14,20,40,15,1,0,7,224,31,248,62,120,60, + 60,60,60,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,255,252,255, + 252,15,14,28,17,1,5,192,6,99,204,55,248,28,48,24, + 24,48,12,48,12,48,12,48,12,24,24,28,48,63,248,99, + 204,192,6,15,20,40,17,1,0,240,30,240,62,120,60,120, + 124,56,120,60,120,252,254,254,254,31,224,15,224,15,192,255, + 254,255,254,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,1,25,25,9,4,251,128,128,128,128,128,128,128,128,128, + 128,128,0,0,0,128,128,128,128,128,128,128,128,128,128,128, + 11,24,48,13,1,252,31,128,63,192,121,192,240,64,240,0, + 248,0,124,0,63,0,63,128,127,192,243,224,225,224,225,192, + 243,192,255,128,126,0,31,128,7,192,3,224,1,224,1,192, + 195,192,255,128,127,0,9,3,6,9,0,17,227,128,227,128, + 227,128,20,20,60,24,2,0,1,248,0,7,254,0,31,15, + 128,60,3,192,49,252,192,99,254,224,103,158,96,199,15,48, + 207,0,48,207,0,48,207,0,48,207,15,48,199,14,48,103, + 158,96,99,252,96,49,248,192,56,1,192,30,7,128,7,254, + 0,1,248,0,9,13,26,11,1,7,62,0,127,128,99,128, + 3,128,63,128,115,128,227,128,227,128,255,128,125,128,0,0, + 0,0,255,128,14,11,22,16,1,2,30,60,28,56,60,120, + 120,240,120,240,241,224,120,240,56,240,60,120,28,56,30,60, + 15,6,12,17,1,6,255,254,255,254,0,6,0,6,0,6, + 0,6,255,20,20,60,24,2,0,1,248,0,7,254,0,31, + 15,128,60,3,192,51,252,192,99,254,224,99,14,96,195,6, + 48,195,28,48,195,248,48,195,252,48,195,12,48,195,14,48, + 99,6,96,99,6,96,51,6,192,56,1,192,30,7,128,7, + 254,0,1,248,0,9,2,4,9,0,18,255,128,255,128,6, + 6,6,8,1,14,120,204,132,132,204,120,16,16,32,26,5, + 0,1,128,1,128,1,128,1,128,255,255,255,255,1,128,1, + 128,1,128,1,128,1,128,0,0,0,0,0,0,255,255,255, + 255,9,11,22,11,1,9,62,0,127,0,227,128,3,128,7, + 0,15,0,30,0,56,0,112,0,255,0,255,0,8,11,11, + 10,1,9,60,254,231,7,30,30,7,7,231,254,124,6,5, + 5,6,1,16,60,56,112,96,192,255,13,24,48,15,1,252, + 31,248,62,96,126,96,254,96,254,96,254,96,254,96,126,96, + 126,96,30,96,6,96,6,96,6,96,6,96,6,96,6,96, + 6,96,6,96,6,96,6,96,6,96,6,96,6,96,6,96, + 4,4,4,8,2,8,240,240,240,240,7,6,6,7,1,249, + 32,60,14,6,254,252,5,11,11,8,2,9,56,248,248,56, + 56,56,56,56,56,56,56,10,13,26,12,1,7,30,0,127, + 128,115,128,225,192,225,192,225,192,225,192,99,128,127,128,30, + 0,0,0,0,0,255,192,13,11,22,16,2,2,225,192,241, + 224,112,224,120,240,120,240,60,120,120,240,120,240,113,224,241, + 224,225,192,19,20,60,22,2,0,56,7,0,248,14,0,184, + 14,0,56,28,0,56,28,0,56,56,0,56,48,0,56,112, + 0,56,224,0,56,227,192,57,195,192,1,199,192,3,143,192, + 3,13,192,7,29,192,14,57,192,14,63,224,28,63,224,28, + 1,192,56,1,192,19,20,60,21,1,0,56,6,0,248,14, + 0,184,12,0,56,28,0,56,24,0,56,48,0,56,112,0, + 56,96,0,56,224,0,56,199,128,57,207,224,3,156,224,3, + 0,224,7,1,224,6,1,192,14,3,128,28,7,0,28,30, + 0,56,31,224,48,31,224,20,20,60,22,1,0,124,1,192, + 230,3,128,231,3,0,7,7,0,30,14,0,30,14,0,7, + 28,0,231,24,0,231,56,0,126,49,224,24,115,224,0,227, + 224,0,199,224,1,198,224,1,140,224,3,156,224,3,31,240, + 7,31,240,14,0,224,12,0,224,12,19,38,15,1,251,7, + 128,7,128,7,128,0,0,0,0,7,0,7,0,7,0,14, + 0,28,0,56,0,112,0,240,0,240,0,240,112,240,112,127, + 240,63,224,15,128,19,28,84,19,0,0,7,0,0,3,128, + 0,1,128,0,1,192,0,0,192,0,0,96,0,0,0,0, + 0,0,0,1,240,0,1,240,0,1,248,0,3,248,0,3, + 248,0,3,188,0,7,188,0,7,156,0,15,30,0,15,30, + 0,15,30,0,30,15,0,30,15,0,31,255,128,63,255,128, + 63,255,128,56,3,192,120,3,192,120,3,192,240,1,224,19, + 28,84,19,0,0,0,28,0,0,56,0,0,56,0,0,112, + 0,0,96,0,0,192,0,0,0,0,0,0,0,1,240,0, + 1,240,0,1,248,0,3,248,0,3,248,0,3,188,0,7, + 188,0,7,156,0,15,30,0,15,30,0,15,30,0,30,15, + 0,30,15,0,31,255,128,63,255,128,63,255,128,56,3,192, + 120,3,192,120,3,192,240,1,224,19,28,84,19,0,0,0, + 224,0,1,240,0,1,240,0,3,184,0,3,24,0,6,12, + 0,0,0,0,0,0,0,1,240,0,1,240,0,1,248,0, + 3,248,0,3,248,0,3,188,0,7,188,0,7,156,0,15, + 30,0,15,30,0,15,30,0,30,15,0,30,15,0,31,255, + 128,63,255,128,63,255,128,56,3,192,120,3,192,120,3,192, + 240,1,224,19,26,78,19,0,0,1,204,0,3,248,0,6, + 120,0,0,0,0,0,0,0,0,0,0,1,240,0,1,240, + 0,1,248,0,3,248,0,3,248,0,3,188,0,7,188,0, + 7,156,0,15,30,0,15,30,0,15,30,0,30,15,0,30, + 15,0,31,255,128,63,255,128,63,255,128,56,3,192,120,3, + 192,120,3,192,240,1,224,19,26,78,19,0,0,7,28,0, + 7,28,0,7,28,0,0,0,0,0,0,0,0,0,0,1, + 240,0,1,240,0,3,248,0,3,248,0,3,248,0,7,188, + 0,7,188,0,7,60,0,15,30,0,15,30,0,30,31,0, + 30,15,0,30,15,0,63,255,128,63,255,128,63,255,128,120, + 3,192,120,3,192,112,3,192,240,1,224,19,29,87,19,0, + 0,0,224,0,1,240,0,3,24,0,3,24,0,3,24,0, + 1,240,0,0,224,0,0,0,0,0,0,0,1,240,0,1, + 240,0,3,240,0,3,248,0,3,248,0,7,188,0,7,188, + 0,7,60,0,15,30,0,15,30,0,30,30,0,30,15,0, + 30,15,0,63,255,128,63,255,128,63,255,128,120,3,192,120, + 3,192,240,3,192,240,1,224,25,20,80,26,0,0,0,63, + 255,128,0,63,255,128,0,127,0,0,0,127,0,0,0,255, + 0,0,1,239,0,0,1,239,0,0,3,207,0,0,3,207, + 255,128,7,143,255,128,7,143,255,128,15,15,0,0,15,255, + 0,0,31,255,0,0,31,255,0,0,60,15,0,0,56,15, + 0,0,120,15,255,128,112,15,255,128,240,15,255,128,17,27, + 81,19,1,249,7,240,0,15,252,0,63,254,0,60,31,0, + 120,31,0,112,15,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,15,128,112,15, + 0,120,31,0,60,63,0,63,254,0,15,252,0,3,240,0, + 0,128,0,0,224,0,0,240,0,0,48,0,0,48,0,3, + 240,0,0,128,0,13,28,56,17,2,0,60,0,28,0,14, + 0,6,0,7,0,3,0,0,0,0,0,255,248,255,248,255, + 248,240,0,240,0,240,0,240,0,240,0,255,248,255,248,255, + 248,240,0,240,0,240,0,240,0,240,0,240,0,255,248,255, + 248,255,248,13,28,56,17,2,0,1,224,1,192,3,128,3, + 0,6,0,6,0,0,0,0,0,255,248,255,248,255,248,240, + 0,240,0,240,0,240,0,240,0,255,248,255,248,255,248,240, + 0,240,0,240,0,240,0,240,0,240,0,255,248,255,248,255, + 248,13,28,56,17,2,0,15,0,15,128,13,128,29,192,24, + 192,48,96,0,0,0,0,255,248,255,248,255,248,240,0,240, + 0,240,0,240,0,240,0,255,248,255,248,255,248,240,0,240, + 0,240,0,240,0,240,0,240,0,255,248,255,248,255,248,13, + 26,52,17,2,0,56,224,56,224,56,224,0,0,0,0,0, + 0,255,248,255,248,255,248,240,0,240,0,240,0,240,0,240, + 0,255,248,255,248,255,248,240,0,240,0,240,0,240,0,240, + 0,240,0,255,248,255,248,255,248,7,28,28,8,255,0,240, + 112,56,24,28,12,0,0,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,6,28,28,7,2, + 0,28,56,48,112,96,192,0,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,8,28,28, + 8,0,0,60,60,126,102,198,195,0,0,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,9, + 26,52,9,0,0,227,128,227,128,227,128,0,0,0,0,0, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,18,20,60,19,0,0,63, + 224,0,63,252,0,63,254,0,60,31,0,60,15,128,60,7, + 128,60,3,192,60,3,192,60,3,192,255,195,192,255,195,192, + 60,3,192,60,3,192,60,3,192,60,7,128,60,15,128,60, + 31,0,63,254,0,63,252,0,63,224,0,17,26,78,21,2, + 0,7,152,0,7,248,0,12,240,0,0,0,0,0,0,0, + 0,0,0,252,7,128,252,7,128,254,7,128,254,7,128,255, + 7,128,255,7,128,247,135,128,247,135,128,243,199,128,243,199, + 128,241,231,128,241,231,128,240,247,128,240,247,128,240,127,128, + 240,127,128,240,63,128,240,63,128,240,31,128,240,31,128,18, + 28,84,20,1,0,14,0,0,7,0,0,3,128,0,1,128, + 0,0,192,0,0,0,0,0,0,0,0,0,0,3,240,0, + 15,252,0,31,254,0,62,31,0,120,7,128,120,7,128,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,120,7,128,120,7,128,62,31,0, + 31,254,0,15,252,0,3,240,0,18,28,84,20,1,0,0, + 60,0,0,56,0,0,112,0,0,96,0,0,192,0,0,0, + 0,0,0,0,0,0,0,3,240,0,15,252,0,31,254,0, + 62,31,0,120,7,128,120,7,128,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,120,7,128,120,7,128,62,31,0,31,254,0,15,252,0, + 3,240,0,18,28,84,20,1,0,1,224,0,3,240,0,3, + 240,0,7,56,0,6,24,0,0,0,0,0,0,0,0,0, + 0,3,240,0,15,252,0,31,254,0,62,31,0,120,7,128, + 120,7,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,120,7,128,120,7, + 128,62,31,0,31,254,0,15,252,0,3,240,0,18,27,81, + 20,1,0,0,8,0,7,248,0,7,248,0,4,0,0,0, + 0,0,0,0,0,0,0,0,3,240,0,15,252,0,31,254, + 0,62,31,0,120,7,128,120,7,128,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,120,7,128,120,7,128,62,31,0,31,254,0,15,252, + 0,3,240,0,18,27,81,20,1,0,7,28,0,7,28,0, + 7,28,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 240,0,15,252,0,31,254,0,62,31,0,120,7,128,120,7, + 128,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,120,7,128,120,7,128,62, + 31,0,31,254,0,15,252,0,3,240,0,15,14,28,27,6, + 2,192,6,96,12,48,24,24,48,12,96,6,192,3,128,3, + 128,6,192,12,96,24,48,48,24,96,12,64,4,20,22,66, + 20,0,255,0,0,32,1,252,112,7,255,224,15,255,192,31, + 15,128,60,3,192,60,7,192,120,15,224,120,29,224,120,57, + 224,120,113,224,120,225,224,121,193,224,123,129,224,127,1,224, + 62,3,192,60,3,192,31,15,128,63,255,0,127,254,0,227, + 248,0,64,0,0,17,28,84,21,2,0,30,0,0,14,0, + 0,7,0,0,3,128,0,1,128,0,0,0,0,0,0,0, + 0,0,0,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,0,240,15,0, + 120,15,0,124,30,0,63,254,0,31,248,0,7,224,0,17, + 28,84,21,2,0,0,60,0,0,120,0,0,112,0,0,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,0,240,15,0,120,15,0,124,30,0, + 63,254,0,31,248,0,7,224,0,17,28,84,21,2,0,3, + 192,0,3,224,0,7,224,0,14,112,0,12,56,0,0,0, + 0,0,0,0,0,0,0,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 0,240,15,0,120,15,0,124,30,0,63,254,0,31,248,0, + 7,224,0,17,27,81,20,2,0,14,56,0,14,56,0,14, + 56,0,0,0,0,0,0,0,0,0,0,0,0,0,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,0,240,15,0,120,15,0,124,30, + 0,63,254,0,31,248,0,7,224,0,16,27,54,17,1,0, + 0,112,0,224,0,192,1,128,0,0,0,0,0,0,240,31, + 248,30,120,30,124,60,60,60,60,120,30,120,30,240,15,240, + 15,224,7,224,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,14,20,40,17,1,0,240,0,240,0, + 240,0,240,0,255,192,255,240,255,248,240,124,240,60,240,60, + 240,60,240,124,255,248,255,240,255,192,240,0,240,0,240,0, + 240,0,240,0,14,20,40,16,1,0,31,128,127,224,121,240, + 240,240,240,240,240,240,241,224,243,192,247,128,247,128,247,128, + 243,224,241,240,240,248,240,60,240,60,255,60,255,188,247,248, + 243,240,12,22,44,15,1,0,120,0,56,0,28,0,12,0, + 6,0,2,0,0,0,0,0,31,128,63,224,121,240,112,240, + 0,240,63,240,127,240,248,240,240,240,240,240,240,240,251,240, + 127,112,62,112,12,22,44,15,1,0,1,224,1,192,3,128, + 3,0,7,0,6,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,31,240,127,240,120,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,22,44,15,1,0,15,0,15,128, + 31,128,25,192,56,192,48,96,0,0,0,0,31,128,63,224, + 121,240,112,240,0,240,63,240,127,240,248,240,240,240,240,240, + 240,240,251,240,127,112,62,112,12,20,40,15,1,0,31,192, + 63,192,48,0,0,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,63,240,127,240,248,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,21,42,15,1,0,56,224,56,224, + 56,224,0,0,0,0,0,0,0,0,31,128,63,224,121,240, + 112,240,0,240,63,240,127,240,248,240,240,240,240,240,240,240, + 251,240,127,112,62,112,12,23,46,15,1,0,7,0,31,128, + 24,192,24,192,31,128,15,0,0,0,0,0,0,0,31,128, + 63,224,121,240,112,240,0,240,63,240,127,240,248,240,240,240, + 240,240,240,240,251,240,127,112,62,112,22,14,42,24,1,0, + 15,135,192,63,207,240,124,252,248,112,120,56,0,120,56,31, + 255,252,127,255,252,120,120,0,240,120,0,240,120,0,240,252, + 56,249,222,248,127,143,240,30,7,224,12,21,42,14,1,249, + 31,128,63,224,121,224,112,224,240,240,240,0,240,0,240,0, + 240,0,240,240,240,224,121,224,63,192,31,128,4,0,7,0, + 7,128,0,192,0,192,31,128,4,0,13,22,44,15,1,0, + 56,0,56,0,28,0,12,0,6,0,2,0,0,0,0,0, + 15,128,63,224,121,240,112,240,240,240,255,240,255,248,240,0, + 240,0,240,240,112,240,121,240,63,224,31,128,13,22,44,15, + 1,0,1,224,1,192,3,128,3,0,6,0,6,0,0,0, + 0,0,15,128,63,224,121,240,112,240,240,240,255,240,255,248, + 240,0,240,0,240,240,112,240,121,240,63,224,31,128,13,22, + 44,15,1,0,15,0,15,0,31,128,25,128,56,192,48,192, + 0,0,0,0,15,128,63,224,121,240,112,240,240,240,255,240, + 255,248,240,0,240,0,240,240,112,240,121,240,63,224,31,128, + 13,21,42,15,1,0,56,224,56,224,56,224,0,0,0,0, + 0,0,0,0,15,128,63,224,121,240,112,112,240,112,255,240, + 255,248,240,0,240,0,240,112,112,112,125,240,63,224,31,128, + 6,22,22,7,0,0,224,240,112,56,24,12,0,0,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,6,22,22,6, + 2,0,60,56,112,96,192,192,0,0,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,9,22,44,7,255,0,30,0, + 62,0,63,0,115,0,99,128,193,128,0,0,0,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,9,20,40,7,255,0, + 227,128,227,128,227,128,0,0,0,0,0,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,14,20,40,16,1,0,14,24, + 15,240,3,192,15,192,60,224,48,240,15,240,63,248,124,248, + 120,60,240,60,240,60,240,60,240,60,240,60,240,60,120,56, + 124,248,63,240,15,192,13,20,40,16,2,0,30,96,63,192, + 55,128,0,0,0,0,0,0,247,192,255,240,253,240,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,14,22,44,16,1,0,60,0,28,0,14,0, + 6,0,3,0,3,0,0,0,0,0,15,192,63,224,124,240, + 120,120,240,60,240,60,240,60,240,60,240,60,240,60,120,120, + 124,248,63,240,15,192,14,22,44,16,1,0,0,240,0,224, + 1,192,1,128,3,0,3,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,14,22,44,16,1,0,7,128, + 7,128,15,192,12,192,24,96,24,96,0,0,0,0,15,192, + 63,224,124,240,120,120,240,60,240,60,240,60,240,60,240,60, + 240,60,120,120,124,248,63,240,15,192,14,20,40,16,1,0, + 15,224,31,224,24,0,0,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,14,21,42,16,1,0,28,224, + 28,224,28,224,0,0,0,0,0,0,0,0,15,192,63,224, + 124,240,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,124,248,63,240,15,192,16,12,24,26,5,2,1,192, + 3,192,1,192,0,0,0,0,255,255,255,255,0,0,0,0, + 1,192,3,192,1,192,14,18,36,16,1,254,0,8,0,28, + 15,248,63,240,124,240,120,248,241,252,241,188,243,60,246,60, + 254,60,252,60,120,120,60,248,127,240,239,192,192,0,128,0, + 13,22,44,16,2,0,56,0,60,0,28,0,14,0,6,0, + 3,0,0,0,0,0,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,248,249,248,127,248, + 62,120,13,22,44,16,2,0,1,224,1,192,3,128,3,0, + 7,0,6,0,0,0,0,0,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,248,249,248, + 127,248,62,120,13,22,44,16,2,0,15,0,15,128,31,128, + 29,192,56,192,48,96,0,0,0,0,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,248, + 249,248,127,248,62,120,13,21,42,16,2,0,56,224,56,224, + 56,224,0,0,0,0,0,0,0,0,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,248, + 249,248,127,248,62,120,14,27,54,15,0,251,0,112,0,240, + 0,224,0,192,1,128,0,0,0,0,0,0,120,28,120,60, + 60,60,60,56,60,120,30,120,30,112,14,240,15,240,15,224, + 7,224,7,224,3,192,3,192,3,128,39,128,255,128,127,0, + 62,0,14,25,50,17,2,251,240,0,240,0,240,0,240,0, + 240,0,240,0,247,192,255,240,253,240,248,120,240,56,240,60, + 240,60,240,60,240,60,240,120,240,120,253,240,255,240,247,192, + 240,0,240,0,240,0,240,0,240,0,15,26,52,15,0,251, + 28,112,28,112,28,112,0,0,0,0,0,0,0,0,248,30, + 120,60,120,60,60,56,60,120,60,120,30,112,30,240,15,240, + 15,224,15,224,7,224,7,192,3,192,7,128,7,128,7,128, + 15,0,15,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=16 h=21 x= 5 y= 9 dx=26 dy= 0 ascent=20 len=40 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =20 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20n[583] U8G_SECTION(".progmem.u8g_font_fub20n") = { + 0,40,36,254,249,20,0,0,0,0,42,57,0,20,252,20, + 0,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--27-270-72-72-P-136-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=27 h=29 x= 7 y=16 dx=28 dy= 0 ascent=22 len=100 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =22 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20r[4022] U8G_SECTION(".progmem.u8g_font_fub20r") = { + 0,40,36,254,249,20,4,242,11,37,32,127,251,22,249,20, + 251,0,0,0,8,0,0,4,20,20,11,4,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,0,0,0,240,240, + 240,10,8,16,14,2,12,243,192,243,192,243,192,243,192,243, + 192,225,192,225,192,97,128,17,20,60,19,1,0,1,199,0, + 1,134,0,3,142,0,3,142,0,3,142,0,31,255,128,63, + 255,128,7,28,0,6,24,0,14,56,0,14,56,0,14,48, + 0,127,254,0,255,254,0,28,112,0,24,96,0,56,224,0, + 56,224,0,56,224,0,49,192,0,14,24,48,16,1,253,1, + 0,7,192,31,240,63,248,125,120,113,60,241,60,241,0,253, + 0,127,0,63,224,31,240,3,248,1,124,1,60,241,60,241, + 60,249,60,127,248,63,240,31,224,1,0,1,0,1,0,25, + 20,80,27,1,0,31,0,96,0,63,128,224,0,123,192,192, + 0,225,193,192,0,224,227,128,0,224,227,0,0,224,231,0, + 0,224,230,0,0,113,206,0,0,127,204,124,0,63,28,254, + 0,0,57,199,0,0,59,131,0,0,115,131,128,0,99,131, + 128,0,227,131,128,1,195,135,128,1,193,239,0,3,128,254, + 0,3,128,124,0,19,20,60,21,1,0,15,192,0,31,240, + 0,60,240,0,120,120,0,120,120,0,120,112,0,60,240,0, + 63,224,0,31,192,0,31,128,0,63,135,128,123,199,128,249, + 231,128,240,247,0,240,127,0,240,63,0,240,30,0,124,127, + 0,63,255,128,15,227,224,4,8,8,11,4,12,240,224,224, + 224,224,224,224,224,6,24,24,10,2,252,28,56,56,120,120, + 112,112,240,240,240,240,240,240,240,240,240,240,112,112,120,120, + 56,56,28,6,24,24,11,3,252,224,240,112,112,120,120,120, + 56,56,60,60,60,60,60,60,56,56,120,120,120,112,112,240, + 224,11,11,22,17,3,9,17,0,59,128,59,128,27,0,238, + 224,255,224,206,96,27,0,59,128,59,128,17,0,16,16,32, + 26,5,0,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,255,255,255,255,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,6,7,7,8,1,252,60,56,56,112,112,112,224, + 7,4,4,9,1,5,254,254,254,254,4,4,4,9,3,0, + 240,240,240,240,8,21,21,12,2,255,7,7,7,6,14,14, + 12,28,28,24,56,56,56,48,112,112,96,224,224,224,192,14, + 20,40,15,1,0,15,128,31,224,60,240,120,112,112,56,240, + 56,240,56,240,60,240,60,240,60,240,60,240,60,240,60,240, + 56,240,56,112,56,120,120,60,240,31,224,15,128,8,20,20, + 15,3,0,15,63,127,255,239,207,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,14,20,40,15,1,0,7,192,31, + 240,63,248,124,120,120,60,120,60,0,60,0,120,0,120,0, + 240,1,240,3,224,7,192,15,128,31,0,124,0,248,0,255, + 252,255,252,255,252,13,20,40,15,1,0,15,128,63,224,127, + 240,248,240,240,120,0,120,0,120,0,240,15,224,15,128,15, + 224,0,240,0,120,0,120,240,120,240,120,248,240,127,240,63, + 224,31,128,14,20,40,15,1,0,1,240,3,240,3,240,7, + 240,7,240,14,240,30,240,28,240,60,240,56,240,120,240,112, + 240,240,240,255,252,255,252,255,252,0,240,0,240,0,240,0, + 240,13,20,40,15,1,0,255,240,255,240,255,240,240,0,240, + 0,240,0,240,0,247,192,255,224,253,240,240,120,240,120,0, + 120,0,120,0,120,240,120,240,240,127,240,63,224,31,128,13, + 20,40,15,1,0,15,192,31,224,63,240,120,120,120,120,112, + 0,240,0,247,192,239,224,253,240,248,120,240,120,240,120,240, + 120,240,120,112,120,120,240,63,240,63,224,15,128,13,20,40, + 15,1,0,255,248,255,248,255,248,0,120,0,120,0,240,0, + 240,1,224,1,224,1,224,3,192,3,192,7,128,7,128,15, + 128,15,0,31,0,30,0,30,0,62,0,14,20,40,15,1, + 0,31,192,63,240,127,240,120,248,240,120,240,120,240,120,120, + 240,63,224,31,192,63,240,120,120,240,56,240,60,240,60,240, + 60,248,120,127,248,63,240,31,192,13,20,40,15,1,0,15, + 128,63,192,127,224,120,240,240,112,240,120,240,120,240,120,240, + 120,120,248,127,184,63,56,0,120,0,120,0,112,240,240,120, + 240,127,224,63,192,15,128,4,14,14,9,4,0,240,240,240, + 240,0,0,0,0,0,0,240,240,240,240,6,17,17,8,1, + 253,60,60,60,60,0,0,0,0,0,0,60,56,120,112,112, + 224,224,16,14,28,26,5,1,0,3,0,31,0,120,3,192, + 15,0,120,0,224,0,224,0,60,0,7,128,1,224,0,60, + 0,15,0,1,16,7,14,26,5,5,255,255,255,255,0,0, + 0,0,0,0,255,255,255,255,16,14,28,26,5,1,192,0, + 248,0,30,0,3,192,0,240,0,30,0,7,0,7,0,60, + 1,224,7,128,60,0,240,0,128,0,13,20,40,15,1,0, + 31,128,63,224,121,240,240,112,32,120,0,120,0,112,0,240, + 1,224,3,192,7,128,14,0,14,0,14,0,14,0,0,0, + 0,0,15,0,15,0,15,0,26,25,100,28,1,251,0,63, + 128,0,1,255,240,0,7,255,252,0,15,224,254,0,31,0, + 31,0,62,0,15,0,60,61,231,128,120,255,231,128,121,247, + 227,192,241,225,227,192,241,193,227,192,243,193,227,192,243,193, + 227,192,243,193,227,192,243,193,227,192,241,193,227,128,113,227, + 231,128,120,255,255,0,124,254,255,0,60,60,60,0,31,0, + 0,0,15,192,32,0,7,255,224,0,1,255,224,0,0,127, + 224,0,19,20,60,19,0,0,1,240,0,1,240,0,1,248, + 0,3,248,0,3,248,0,3,188,0,7,188,0,7,156,0, + 15,30,0,15,30,0,15,30,0,30,15,0,30,15,0,31, + 255,128,63,255,128,63,255,128,56,3,192,120,3,192,120,3, + 192,240,1,224,15,20,40,18,2,0,255,224,255,240,255,248, + 240,124,240,60,240,60,240,56,240,120,255,240,255,192,255,248, + 240,60,240,28,240,30,240,30,240,30,240,60,255,252,255,248, + 255,224,17,20,60,19,1,0,7,240,0,15,252,0,63,254, + 0,60,31,0,120,15,0,112,15,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 15,128,112,15,0,120,31,0,60,62,0,63,254,0,31,248, + 0,7,224,0,16,20,40,19,2,0,255,128,255,240,255,248, + 240,124,240,62,240,30,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,240,30,240,62,240,124,255,248,255,240, + 255,128,13,20,40,17,2,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,255,248,255,248,255,248,240,0, + 240,0,240,0,240,0,240,0,240,0,255,248,255,248,255,248, + 13,20,40,16,2,0,255,248,255,248,255,248,240,0,240,0, + 240,0,240,0,240,0,255,240,255,240,255,240,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,18,20, + 60,20,1,0,1,248,0,15,254,0,31,255,0,62,15,128, + 124,3,128,120,3,192,112,0,0,240,0,0,240,0,0,240, + 63,192,240,63,192,240,63,192,240,3,192,240,3,192,120,3, + 192,124,3,192,63,3,192,31,255,192,15,255,192,1,254,0, + 16,20,40,20,2,0,240,15,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,255,255,255,255,255,255,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,4,20, + 20,8,2,0,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,14,20,40,17,1,0,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,240,60,240,56,248,120, + 127,240,127,224,31,192,15,20,40,18,2,0,240,60,240,124, + 240,248,241,240,241,224,243,224,247,192,255,128,255,0,255,0, + 255,128,247,192,247,192,243,224,241,240,240,240,240,248,240,124, + 240,62,240,62,13,20,40,16,2,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,255,248,255,248, + 255,248,21,20,60,25,2,0,252,1,248,254,3,248,254,3, + 248,254,3,248,255,7,248,255,7,248,247,7,120,247,15,120, + 247,143,120,247,143,120,243,142,120,243,222,120,243,222,120,241, + 220,120,241,252,120,241,252,120,240,248,120,240,248,120,240,248, + 120,240,248,120,17,20,60,21,2,0,252,7,128,252,7,128, + 254,7,128,254,7,128,255,7,128,255,7,128,247,135,128,247, + 135,128,243,199,128,243,199,128,241,231,128,241,231,128,240,247, + 128,240,247,128,240,127,128,240,127,128,240,63,128,240,63,128, + 240,31,128,240,31,128,18,20,60,20,1,0,3,240,0,15, + 252,0,31,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 254,0,15,252,0,3,240,0,14,20,40,17,2,0,255,192, + 255,240,255,248,240,124,240,60,240,60,240,60,240,60,240,124, + 255,248,255,240,255,192,240,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,20,20,60,22,1,0,3,240,0,15, + 252,0,63,254,0,62,31,0,120,7,128,120,7,128,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,120,7,128,120,7,128,62,31,0,31, + 255,240,15,255,240,3,255,240,15,20,40,18,2,0,255,224, + 255,248,255,252,240,62,240,30,240,30,240,30,240,30,240,124, + 255,248,255,240,255,252,240,60,240,60,240,28,240,30,240,30, + 240,30,240,30,240,14,16,20,40,18,1,0,7,224,31,248, + 63,252,60,60,120,30,120,30,120,0,124,0,63,128,31,240, + 15,252,0,254,0,30,0,15,240,15,240,14,120,62,127,252, + 63,248,7,224,16,20,40,18,1,0,255,255,255,255,255,255, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,17,20,60,21,2,0,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 240,7,128,240,7,128,240,7,128,240,7,128,240,7,128,240, + 7,0,240,15,0,120,15,0,124,30,0,63,254,0,31,248, + 0,7,224,0,19,20,60,20,0,0,248,1,224,120,1,224, + 120,3,224,60,3,192,60,3,192,62,7,192,30,7,128,30, + 7,128,31,15,128,15,15,0,15,15,0,15,158,0,7,158, + 0,7,158,0,7,252,0,3,252,0,3,252,0,1,248,0, + 1,248,0,1,240,0,27,20,80,27,0,0,248,31,3,224, + 120,31,3,192,120,31,3,192,120,63,131,192,120,63,131,192, + 60,59,135,128,60,59,135,128,60,123,199,128,60,123,199,128, + 28,113,199,0,30,113,207,0,30,241,239,0,30,241,239,0, + 14,224,238,0,14,224,238,0,15,224,254,0,15,224,254,0, + 7,192,124,0,7,192,124,0,7,192,124,0,17,20,60,19, + 1,0,248,15,128,120,15,0,124,30,0,62,30,0,30,60, + 0,31,120,0,15,120,0,7,240,0,7,224,0,3,224,0, + 7,224,0,7,240,0,15,240,0,30,120,0,30,124,0,60, + 60,0,60,30,0,120,31,0,240,15,0,240,7,128,16,20, + 40,17,1,0,240,31,248,30,120,30,124,60,60,60,60,120, + 30,120,30,240,15,240,15,224,7,224,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,20,40,17, + 1,0,127,254,127,254,127,254,0,62,0,124,0,248,0,248, + 1,240,3,224,7,224,7,192,15,128,31,0,63,0,62,0, + 124,0,248,0,255,254,255,254,255,254,6,25,25,10,2,251, + 252,252,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,252,252,9,21,42,12,1,255,224, + 0,96,0,112,0,112,0,48,0,56,0,56,0,56,0,24, + 0,28,0,28,0,12,0,14,0,14,0,6,0,6,0,7, + 0,7,0,3,0,3,128,3,128,7,25,25,11,2,251,254, + 254,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,254,254,13,17,34,27,7,0,2,0, + 7,0,5,0,5,0,13,128,8,128,24,192,24,192,16,64, + 48,96,48,96,32,32,96,48,64,16,192,24,192,24,128,8, + 14,2,4,14,0,252,255,252,255,252,5,5,5,7,0,16, + 224,112,112,56,24,12,14,28,15,1,0,31,128,63,224,121, + 240,112,240,0,240,63,240,127,240,248,240,240,240,240,240,240, + 240,251,240,127,112,62,112,14,20,40,17,2,0,240,0,240, + 0,240,0,240,0,240,0,240,0,247,192,255,240,253,240,248, + 120,240,120,240,60,240,60,240,60,240,60,240,56,248,120,252, + 240,255,240,243,192,12,14,28,14,1,0,31,128,63,224,121, + 224,112,224,240,240,240,0,240,0,240,0,240,0,240,240,240, + 224,121,224,63,192,31,128,14,20,40,16,1,0,0,60,0, + 60,0,60,0,60,0,60,0,60,31,188,63,252,124,252,120, + 124,240,60,240,60,240,60,240,60,240,60,240,60,120,124,125, + 252,63,188,15,60,13,14,28,15,1,0,15,128,63,224,121, + 240,112,240,240,240,255,240,255,248,240,0,240,0,240,240,112, + 240,121,240,63,224,31,128,10,20,40,11,1,0,15,192,31, + 192,62,64,60,0,60,0,60,0,255,128,255,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,14,19,38,16,1,251,31,188,63,252,124, + 252,120,124,240,60,240,60,240,60,240,60,240,60,240,60,112, + 124,124,252,63,188,15,60,0,60,120,56,124,248,63,240,15, + 192,13,20,40,16,2,0,240,0,240,0,240,0,240,0,240, + 0,240,0,247,192,255,240,253,240,248,120,240,120,240,120,240, + 120,240,120,240,120,240,120,240,120,240,120,240,120,240,120,4, + 20,20,6,1,0,240,240,240,240,0,0,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,5,25,25,9,3,251,120, + 120,120,120,0,0,120,120,120,120,120,120,120,120,120,120,120, + 120,120,120,120,120,248,248,240,12,20,40,15,2,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,240,241,224,243,192, + 247,128,255,128,255,0,255,0,255,0,247,128,247,192,243,192, + 241,224,241,240,240,240,4,20,20,7,2,0,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 22,14,42,25,2,0,243,227,224,255,247,248,253,254,248,240, + 120,120,240,120,60,240,120,60,240,120,60,240,120,60,240,120, + 60,240,120,60,240,120,60,240,120,60,240,120,60,240,120,60, + 13,14,28,16,2,0,247,192,255,240,253,240,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,14,14,28,16,1,0,15,192,63,224,124,240,120,120, + 240,60,240,60,240,60,240,60,240,60,240,60,120,120,124,248, + 63,240,15,192,14,19,38,17,2,251,243,192,255,240,253,240, + 248,120,240,56,240,60,240,60,240,60,240,60,240,120,240,120, + 253,248,255,240,247,192,240,0,240,0,240,0,240,0,240,0, + 14,19,38,16,1,251,15,60,63,252,125,252,120,124,240,60, + 240,60,240,60,240,60,240,60,240,60,120,124,124,252,63,252, + 31,188,0,60,0,60,0,60,0,60,0,60,9,14,28,11, + 2,0,247,128,255,128,255,128,252,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,12,14, + 28,14,1,0,31,128,127,192,123,224,241,224,240,0,126,0, + 127,192,31,224,1,240,240,240,240,240,249,224,127,192,31,128, + 10,18,36,12,1,0,2,0,14,0,30,0,30,0,255,192, + 255,192,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,0,15,192,7,192,13,14,28,16,2,0, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,248,249,248,127,248,62,120,14,14,28,15, + 0,0,240,60,120,60,120,60,56,120,60,120,60,112,28,240, + 30,240,30,224,15,224,15,224,15,192,7,192,7,192,23,14, + 42,23,0,0,240,124,30,112,124,28,120,124,60,120,254,60, + 56,238,60,60,238,56,61,239,120,61,231,120,29,199,112,31, + 199,240,31,199,240,15,131,224,15,131,224,15,131,224,13,14, + 28,15,1,0,240,120,120,240,124,224,61,224,31,192,31,128, + 15,128,31,128,31,192,63,224,57,224,120,240,240,248,240,120, + 14,19,38,15,0,251,248,60,120,60,120,60,60,120,60,120, + 60,112,30,240,30,240,14,224,15,224,15,224,7,192,7,192, + 3,192,7,128,7,128,7,128,15,0,15,0,11,14,28,13, + 1,0,255,224,255,224,1,224,3,224,7,192,7,128,15,0, + 30,0,60,0,124,0,248,0,240,0,255,224,255,224,10,27, + 54,13,2,249,3,192,15,192,31,128,30,0,30,0,30,0, + 30,0,30,0,30,0,28,0,28,0,60,0,248,0,224,0, + 248,0,124,0,60,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,31,128,15,192,7,192,2,29,29,10,4,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,10,27,54, + 14,2,249,240,0,252,0,124,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,15,0,7,192,3,192,7, + 192,15,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,124,0,252,0,240,0,14,3,6,14,0,5,63, + 156,127,248,225,240,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=34 h=37 x= 8 y=22 dx=35 dy= 0 ascent=37 len=160 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =37 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25[12908] U8G_SECTION(".progmem.u8g_font_fub25") = { + 0,50,46,254,247,25,7,111,16,148,32,255,249,37,247,25, + 249,0,0,0,10,0,0,5,25,25,14,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 0,0,248,248,248,248,13,10,20,18,2,15,248,248,248,248, + 248,248,120,248,120,120,120,120,120,120,120,120,120,112,120,112, + 21,25,75,24,2,0,0,224,224,0,225,224,0,225,192,1, + 225,192,1,195,192,1,195,128,31,255,248,31,255,240,63,255, + 240,7,135,0,7,135,0,7,15,0,7,14,0,15,14,0, + 14,14,0,255,255,192,255,255,192,255,255,192,28,60,0,28, + 60,0,60,56,0,56,56,0,56,120,0,120,112,0,112,112, + 0,18,31,93,20,1,252,0,192,0,0,192,0,3,248,0, + 15,252,0,31,254,0,63,255,0,126,223,0,120,207,128,248, + 207,128,248,192,0,252,192,0,126,192,0,127,192,0,127,240, + 0,31,252,0,7,255,0,1,255,128,0,255,128,0,207,128, + 0,199,192,248,199,192,248,199,192,248,207,128,126,223,128,127, + 255,0,63,254,0,15,252,0,3,240,0,0,192,0,0,192, + 0,0,192,0,32,26,104,34,1,0,0,0,3,128,15,192, + 7,0,63,240,7,0,124,248,14,0,120,120,14,0,240,60, + 28,0,240,60,24,0,240,60,56,0,240,60,112,0,240,60, + 112,0,120,120,224,0,120,120,224,0,63,241,199,248,15,195, + 143,252,0,3,159,62,0,7,30,30,0,7,60,15,0,14, + 60,15,0,30,60,15,0,28,60,15,0,56,60,15,0,56, + 60,15,0,112,30,30,0,112,15,60,0,224,15,252,1,224, + 3,240,24,25,75,27,2,1,7,252,0,31,254,0,31,255, + 0,62,31,0,62,31,0,62,31,0,62,31,0,30,62,0, + 31,126,0,15,252,0,7,240,0,15,224,0,63,224,124,63, + 240,120,124,248,120,252,124,120,248,62,120,248,31,248,248,15, + 240,248,7,240,252,3,224,126,15,240,63,255,248,31,255,254, + 7,252,63,5,10,10,14,4,15,248,248,120,120,120,120,120, + 120,120,120,7,30,30,13,3,251,30,30,62,60,60,124,124, + 120,120,248,248,248,248,248,248,248,248,248,248,248,248,120,120, + 124,124,60,60,62,30,30,8,30,30,14,3,251,240,120,120, + 124,60,60,60,62,62,30,30,30,30,31,31,31,31,31,30, + 30,30,62,62,62,60,60,124,120,120,240,14,13,26,22,4, + 13,28,224,60,240,28,224,15,192,135,132,255,252,255,252,231, + 156,15,192,30,224,28,224,60,240,8,64,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,255,255,240,255, + 255,240,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 7,9,9,11,2,251,62,60,60,120,120,112,240,240,224,9, + 5,10,11,1,7,255,128,255,128,255,128,255,128,255,128,5, + 5,5,10,3,0,248,248,248,248,248,11,28,56,15,2,254, + 0,224,0,224,1,192,1,192,1,192,3,128,3,128,3,128, + 3,128,7,0,7,0,7,0,14,0,14,0,14,0,28,0, + 28,0,28,0,56,0,56,0,56,0,56,0,112,0,112,0, + 112,0,224,0,224,0,224,0,17,25,75,19,1,1,7,224, + 0,31,252,0,63,254,0,60,30,0,120,15,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,120,15,0,120,15,0,120,15,0,60,30,0, + 31,252,0,15,248,0,7,224,0,11,25,50,19,3,1,3, + 224,15,224,31,224,127,224,255,224,251,224,243,224,195,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,17,25,75,19,1,1,7,248,0,31,254,0,31,255,0, + 63,255,0,126,31,128,124,15,128,124,15,128,0,15,128,0, + 15,128,0,31,0,0,31,0,0,62,0,0,126,0,0,252, + 0,1,248,0,3,240,0,7,224,0,15,192,0,63,0,0, + 126,0,0,252,0,0,255,255,128,255,255,128,255,255,128,255, + 255,128,16,25,50,19,2,1,31,240,63,252,127,254,255,254, + 248,62,248,31,0,31,0,30,0,126,7,252,7,240,7,248, + 7,252,0,62,0,31,0,31,0,31,248,31,248,31,248,31, + 252,62,127,254,127,252,31,248,15,224,18,25,75,19,1,1, + 0,126,0,0,254,0,0,254,0,1,254,0,3,254,0,3, + 254,0,7,190,0,15,190,0,15,62,0,30,62,0,30,62, + 0,60,62,0,124,62,0,120,62,0,240,62,0,255,255,192, + 255,255,192,255,255,192,255,255,192,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,17,25,75,19,1, + 1,255,254,0,255,254,0,255,254,0,255,254,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,252,63,0,248,31,0,248,15,0,0,15,128,0,15, + 128,0,15,128,0,15,0,248,15,0,248,31,0,252,63,0, + 127,254,0,127,252,0,63,248,0,15,224,0,17,25,75,19, + 1,1,3,240,0,15,252,0,31,254,0,63,255,0,62,31, + 0,126,15,128,124,0,0,124,0,0,252,0,0,248,248,0, + 251,254,0,255,254,0,255,31,0,254,15,128,252,15,128,252, + 15,128,252,15,128,252,15,128,124,15,128,126,15,128,127,31, + 0,63,255,0,31,254,0,15,252,0,3,240,0,16,25,50, + 19,2,1,255,255,255,255,255,255,255,255,0,15,0,31,0, + 30,0,62,0,62,0,124,0,124,0,248,0,248,0,240,1, + 240,1,240,3,224,3,224,7,192,7,192,15,128,15,128,15, + 128,31,0,31,0,17,25,75,19,1,1,7,240,0,31,252, + 0,127,255,0,127,255,0,252,31,128,248,15,128,248,15,128, + 120,15,0,124,31,0,63,254,0,15,248,0,31,248,0,63, + 254,0,124,63,0,248,15,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,252,31,128,127,255,0,127,255,0, + 31,252,0,7,240,0,17,25,75,19,1,1,7,240,0,31, + 252,0,63,254,0,127,254,0,124,63,0,248,31,0,248,31, + 0,248,31,128,248,31,128,248,31,128,248,63,128,124,63,128, + 127,255,128,63,239,128,15,207,128,0,15,128,0,31,0,0, + 31,0,248,31,0,120,63,0,124,126,0,63,254,0,63,252, + 0,31,248,0,7,224,0,5,18,18,11,5,0,248,248,248, + 248,248,0,0,0,0,0,0,0,0,248,248,248,248,248,7, + 22,22,11,2,252,62,62,62,62,62,0,0,0,0,0,0, + 0,0,62,60,124,120,120,112,240,224,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,248,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,248,0,0,63,0,0,7,224,0,0,248,0,0,63,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,16,25,50,19,1,1,31,240,63,248,127,252,248,62,112, + 30,48,31,0,31,0,30,0,62,0,60,0,120,0,240,1, + 224,3,192,3,128,3,128,3,128,3,128,3,128,0,0,0, + 0,7,192,7,192,7,192,7,192,33,32,160,35,1,250,0, + 31,254,0,0,0,127,255,128,0,1,255,255,224,0,3,255, + 255,240,0,7,240,3,248,0,15,192,1,252,0,31,128,0, + 124,0,63,7,159,126,0,62,31,255,63,0,124,63,255,31, + 0,124,127,255,31,0,120,126,63,31,0,248,252,31,15,0, + 248,248,31,15,128,248,248,31,15,128,248,248,31,15,128,248, + 248,31,15,0,248,248,31,15,0,248,248,31,15,0,248,248, + 31,31,0,120,124,63,30,0,124,124,127,190,0,124,63,255, + 252,0,62,31,231,248,0,63,7,195,240,0,31,128,0,0, + 0,15,192,0,0,0,7,248,3,0,0,3,255,255,0,0, + 1,255,255,0,0,0,127,255,0,0,0,7,255,0,0,23, + 25,75,24,1,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 19,25,75,23,2,0,255,248,0,255,254,0,255,255,0,255, + 255,0,248,63,0,248,15,128,248,15,128,248,15,0,248,15, + 0,248,63,0,255,254,0,255,248,0,255,252,0,255,255,0, + 248,15,192,248,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,7,224,255,255,192,255,255,128,255,255,0,255,252, + 0,21,25,75,25,2,1,3,255,0,15,255,192,31,255,224, + 63,255,240,62,3,240,124,1,240,120,1,248,120,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,1,248,120,1,248,124,1,248, + 124,3,240,63,7,240,31,255,224,15,255,192,7,255,0,1, + 252,0,20,25,75,23,2,0,255,224,0,255,252,0,255,254, + 0,255,255,0,248,63,128,248,15,192,248,7,192,248,3,224, + 248,3,224,248,1,224,248,1,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,224,248,3,224,248,3,224,248,7, + 192,248,15,192,248,63,128,255,255,0,255,254,0,255,252,0, + 255,224,0,17,25,75,21,2,0,255,255,0,255,255,0,255, + 255,0,255,255,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,0,255,255,0,255,255,0, + 255,255,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,128,255,255,128,255,255, + 128,255,255,128,16,25,50,19,2,0,255,255,255,255,255,255, + 255,255,248,0,248,0,248,0,248,0,248,0,248,0,255,254, + 255,254,255,254,255,254,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,22,25,75,26, + 2,1,1,255,192,7,255,224,15,255,240,31,255,248,63,0, + 248,62,0,124,124,0,124,124,0,0,248,0,0,248,0,0, + 248,0,0,248,7,252,248,7,252,248,7,252,248,7,252,248, + 0,124,248,0,124,124,0,124,126,0,124,63,0,124,63,192, + 124,31,255,252,15,255,252,3,255,252,0,127,192,20,25,75, + 24,2,0,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,255,255,240,255,255,240,255,255,240,255,255,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,5,25, + 25,9,2,0,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,17,25,75, + 21,2,0,0,15,128,0,15,128,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,127,255,0,127,254,0,63,252,0,15,240,0,19,25, + 75,23,2,0,248,7,192,248,15,128,248,31,128,248,63,0, + 248,126,0,248,124,0,248,248,0,249,248,0,251,240,0,251, + 224,0,255,192,0,255,192,0,255,224,0,255,240,0,251,240, + 0,249,248,0,249,252,0,248,252,0,248,126,0,248,63,0, + 248,63,128,248,31,128,248,15,192,248,15,224,248,7,224,16, + 25,50,19,2,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,255, + 255,255,255,255,255,255,255,27,25,100,31,2,0,255,0,31, + 224,255,0,63,224,255,128,63,224,255,128,63,224,255,128,127, + 224,255,192,127,224,255,192,123,224,251,192,123,224,251,224,251, + 224,251,224,243,224,251,224,243,224,249,241,243,224,249,241,243, + 224,249,241,227,224,248,243,227,224,248,251,227,224,248,251,195, + 224,248,127,195,224,248,127,195,224,248,127,131,224,248,127,131, + 224,248,63,131,224,248,63,131,224,248,63,3,224,248,31,3, + 224,21,25,75,25,2,0,254,0,248,255,0,248,255,0,248, + 255,128,248,255,128,248,255,192,248,255,192,248,251,224,248,251, + 224,248,249,224,248,249,240,248,248,240,248,248,248,248,248,120, + 248,248,124,248,248,60,248,248,62,248,248,30,248,248,31,248, + 248,31,248,248,15,248,248,15,248,248,7,248,248,7,248,248, + 3,248,23,25,75,27,2,1,3,255,128,7,255,192,31,255, + 240,31,255,240,63,1,248,126,0,252,124,0,124,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,62,0,248,63,131,248,31,255,240,15,255,224,7,255,192, + 0,254,0,18,25,75,21,2,0,255,240,0,255,252,0,255, + 255,0,255,255,128,248,31,128,248,15,128,248,7,192,248,7, + 192,248,7,192,248,15,128,248,31,128,255,255,128,255,255,0, + 255,252,0,255,240,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,26,25,100,29,2,1,3,255,128,0,7,255, + 192,0,31,255,224,0,31,255,240,0,63,1,248,0,126,0, + 252,0,124,0,124,0,120,0,60,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,120,0,60,0,124,0, + 124,0,124,0,124,0,62,0,248,0,63,131,240,0,31,255, + 255,192,15,255,255,192,3,255,255,192,0,255,255,192,19,25, + 75,22,2,0,255,252,0,255,255,0,255,255,128,255,255,192, + 248,15,192,248,7,224,248,3,224,248,3,224,248,3,192,248, + 7,192,248,31,128,255,255,0,255,252,0,255,255,0,255,255, + 128,248,15,128,248,7,192,248,7,192,248,7,192,248,3,192, + 248,3,192,248,3,192,248,3,224,248,3,224,248,3,224,20, + 25,75,23,2,1,7,254,0,15,255,0,31,255,128,63,255, + 192,126,7,192,124,3,192,124,3,224,124,0,0,124,0,0, + 127,0,0,63,240,0,31,254,0,7,255,128,1,255,192,0, + 31,224,0,3,224,0,1,240,248,1,240,248,1,240,248,3, + 224,126,7,224,127,255,192,63,255,128,15,255,0,3,248,0, + 20,25,75,22,1,0,255,255,240,255,255,240,255,255,240,255, + 255,240,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,21,25,75,25,2,0,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,240,248,0,240,120,1,240, + 124,3,240,127,7,224,63,255,192,31,255,128,15,255,0,3, + 252,0,24,25,75,25,1,0,248,0,63,248,0,62,252,0, + 62,124,0,124,124,0,124,126,0,124,62,0,248,63,0,248, + 63,1,240,31,1,240,31,129,240,31,131,224,15,131,224,15, + 195,224,7,199,192,7,199,192,7,231,128,3,239,128,3,255, + 128,3,255,0,1,255,0,1,254,0,1,254,0,0,254,0, + 0,252,0,34,25,125,34,0,0,252,3,240,15,192,252,3, + 240,15,128,124,3,240,15,128,126,7,248,15,128,126,7,248, + 15,128,126,7,248,31,0,62,7,248,31,0,62,15,252,31, + 0,63,15,60,30,0,63,15,60,62,0,31,15,60,62,0, + 31,31,62,62,0,31,30,30,60,0,31,158,30,60,0,15, + 158,30,124,0,15,190,31,124,0,15,188,15,120,0,7,252, + 15,120,0,7,252,15,120,0,7,252,15,248,0,7,248,7, + 240,0,3,248,7,240,0,3,248,7,240,0,3,248,7,240, + 0,3,240,3,224,0,22,25,75,24,1,0,252,0,248,126, + 1,248,62,1,240,63,3,224,31,135,192,15,135,192,15,207, + 128,7,239,0,3,255,0,3,254,0,1,252,0,0,252,0, + 0,252,0,1,254,0,3,254,0,3,255,0,7,223,128,15, + 143,128,15,15,192,31,7,224,62,3,224,62,3,240,124,1, + 248,248,1,248,248,0,252,21,25,75,22,1,0,252,1,248, + 252,1,240,126,3,224,126,3,224,63,7,192,31,7,192,31, + 143,128,15,143,128,15,223,0,7,223,0,7,254,0,3,254, + 0,3,252,0,1,248,0,1,248,0,0,240,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,18,25,75,22,2,0,127,255, + 192,127,255,192,127,255,192,127,255,192,0,15,192,0,31,128, + 0,63,0,0,63,0,0,126,0,0,252,0,1,252,0,1, + 248,0,3,240,0,7,224,0,7,224,0,15,192,0,31,128, + 0,63,128,0,63,0,0,126,0,0,252,0,0,255,255,192, + 255,255,192,255,255,192,255,255,192,8,32,32,13,3,249,255, + 255,255,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,255,255,255,11, + 28,56,15,2,254,224,0,224,0,240,0,240,0,240,0,112, + 0,120,0,120,0,56,0,60,0,60,0,28,0,30,0,30, + 0,30,0,15,0,15,0,15,0,7,0,7,128,7,128,3, + 128,3,192,3,192,1,192,1,224,1,224,1,224,8,32,32, + 13,3,249,255,255,255,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 255,255,255,18,21,63,34,8,0,0,192,0,0,224,0,1, + 224,0,1,224,0,1,48,0,3,48,0,2,24,0,6,24, + 0,6,24,0,4,12,0,12,12,0,12,14,0,24,6,0, + 24,6,0,24,7,0,48,3,0,48,3,0,112,1,128,96, + 1,128,96,1,192,192,0,192,17,3,9,17,0,251,255,255, + 128,255,255,128,255,255,128,7,7,7,9,255,21,248,120,60, + 60,28,14,6,15,18,36,19,2,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,17,25, + 75,20,2,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,254,63,0,252,31,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 252,31,0,254,63,0,255,254,0,251,252,0,249,240,0,15, + 18,36,18,2,0,7,224,31,248,63,252,124,124,120,60,248, + 62,248,0,248,0,248,0,248,0,248,0,248,62,248,62,120, + 60,124,124,63,252,31,248,15,224,17,25,75,21,2,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,7,207,128,31,255,128,63,255,128,126,63,128, + 124,31,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,128,126,63, + 128,63,255,128,31,239,128,7,207,128,15,18,36,19,2,0, + 7,224,31,248,63,252,124,60,120,62,248,30,248,30,255,254, + 255,254,255,254,248,0,248,0,248,30,120,62,124,62,63,252, + 31,248,7,224,12,25,50,13,1,0,7,240,15,240,31,240, + 31,0,31,0,31,0,31,0,255,224,255,224,255,224,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,17,25,75,21, + 2,249,7,207,128,31,255,128,63,255,128,126,63,128,124,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,31,128,126,63,128,63, + 255,128,31,239,128,7,207,128,0,15,128,0,15,128,124,15, + 128,124,31,0,63,254,0,31,252,0,7,240,0,16,25,50, + 20,2,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,249,248,255,252,255,254,254,63,252,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,5,25,25,9,2,0,248,248,248,248,248, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,6,32,32,12,4,249,124,124,124,124,124,0, + 0,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,252,252,248,240,16,25,50,19,2,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,62, + 248,124,248,248,249,248,249,240,251,224,255,192,255,192,255,192, + 255,192,251,224,251,240,249,240,248,248,248,252,248,124,248,126, + 248,63,5,25,25,9,2,0,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,27,18,72,31,2,0,249,248,62,0,251,252,127,128,255, + 254,255,192,254,63,199,192,252,63,135,192,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,16, + 18,36,20,2,0,249,248,251,252,255,254,252,63,252,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,18,18,54,21,2,0,3, + 240,0,15,252,0,63,254,0,62,31,0,124,15,128,120,15, + 128,248,7,128,248,7,128,248,7,192,248,7,192,248,7,192, + 248,7,128,120,15,128,124,15,128,62,31,0,63,254,0,15, + 252,0,3,240,0,17,25,75,20,2,249,249,240,0,251,252, + 0,255,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,252,31,0,254,63,0,255,254,0,255,252,0,249,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,21,2,249,7,207,128,31, + 239,128,63,255,128,126,63,128,124,31,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,128,126,63,128,63,255,128,31,255,128,7, + 207,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,11,18,36,13,2,0,249,224,251, + 224,255,224,255,224,255,0,252,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,15,18,36,18,2,0,15,224,63,248,127,248,124,124,248, + 124,248,124,126,0,127,192,63,248,15,252,1,252,0,126,248, + 62,248,62,248,124,127,252,63,248,15,192,13,23,46,14,1, + 0,1,0,7,0,31,0,31,0,31,0,255,240,255,240,255, + 240,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,15,128,15,248,7,248,3,240,16, + 18,36,20,2,0,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,252,63,127,255,63,223,31,159,18,18,54,19,0,0,248, + 7,192,124,7,192,124,15,128,124,15,128,62,15,128,62,31, + 0,62,31,0,31,30,0,31,30,0,15,62,0,15,188,0, + 15,188,0,7,252,0,7,248,0,7,248,0,3,240,0,3, + 240,0,1,240,0,29,18,72,29,0,0,248,15,128,248,124, + 31,192,240,124,31,193,240,124,31,193,240,124,31,225,224,62, + 63,225,224,62,61,227,224,62,61,227,224,31,125,243,192,31, + 120,247,192,31,120,247,192,15,248,255,128,15,248,127,128,15, + 240,127,128,15,240,127,128,7,240,127,0,7,224,63,0,7, + 224,63,0,17,18,54,19,1,0,252,31,0,124,31,0,126, + 62,0,63,60,0,31,124,0,15,248,0,15,248,0,7,240, + 0,7,224,0,7,240,0,15,248,0,31,248,0,30,252,0, + 62,126,0,60,62,0,124,63,0,248,31,0,248,15,128,17, + 25,75,18,1,249,248,15,128,248,15,128,248,15,0,124,31, + 0,124,31,0,124,30,0,62,62,0,62,60,0,30,60,0, + 31,124,0,31,120,0,15,248,0,15,248,0,15,240,0,7, + 240,0,7,240,0,3,224,0,3,224,0,3,224,0,3,192, + 0,7,192,0,7,128,0,7,128,0,15,128,0,15,128,0, + 14,18,36,18,2,0,255,252,255,252,255,252,0,124,0,248, + 1,248,3,240,7,224,7,192,15,128,31,128,63,0,126,0, + 124,0,248,0,255,252,255,252,255,252,13,35,70,18,3,248, + 0,248,3,248,7,248,15,192,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,0,15,0,15,0,31,0,126,0, + 252,0,240,0,252,0,126,0,63,0,31,0,15,0,15,0, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,192, + 7,248,3,248,0,248,2,37,37,12,5,247,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,13,35,70,17,2,248,248,0,254,0,255,0,31,0,15, + 0,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,7,128,7,192,3,224,1,248,0,248,1,248,3,224,7, + 192,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,0,31,0,255,0,254,0,248,0,18,4,12, + 18,0,7,31,195,192,63,255,128,127,255,0,240,126,0,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,10,0,0,5,25,25,13,4,249,248,248,248,248, + 0,0,0,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,15,26,52,19,2,252,0,48,0,48,0, + 48,0,32,7,224,31,248,63,252,124,252,120,254,248,254,249, + 128,249,128,249,128,249,0,251,0,251,62,251,62,126,62,126, + 124,63,252,31,248,15,224,12,0,24,0,24,0,24,0,17, + 25,75,20,2,1,7,254,0,15,255,0,31,255,0,31,15, + 128,62,15,128,62,0,0,62,0,0,62,0,0,62,0,0, + 255,240,0,255,240,0,255,240,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,255,128,255,255,128,255,255,128, + 18,19,57,20,1,6,64,0,128,224,1,192,115,227,128,63, + 255,0,30,30,0,28,14,0,24,6,0,48,3,0,48,3, + 0,48,3,0,48,3,0,48,3,0,24,6,0,28,14,0, + 30,30,0,63,255,0,115,243,128,224,1,192,64,0,128,19, + 25,75,21,1,0,248,3,224,248,7,224,124,7,192,124,7, + 192,62,15,128,62,15,128,31,31,0,255,31,224,255,191,224, + 15,190,0,7,252,0,7,252,0,3,248,0,255,255,224,255, + 255,224,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 2,33,33,12,5,249,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,0,0,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,14,31,62,16,1,251,31,240,63, + 248,127,248,124,24,248,0,248,0,124,0,126,0,63,128,31, + 192,31,240,63,248,124,248,248,124,240,60,240,120,240,120,253, + 240,127,224,63,192,31,224,7,240,1,248,0,252,0,124,0, + 124,128,248,225,248,255,240,255,224,63,128,11,4,8,11,0, + 22,241,224,241,224,241,224,241,224,25,25,100,29,2,1,0, + 255,192,0,3,255,224,0,15,0,120,0,30,0,60,0,24, + 63,14,0,56,127,134,0,112,255,199,0,97,227,195,0,225, + 193,227,128,195,193,225,128,195,192,1,128,195,192,1,128,195, + 192,1,128,195,192,1,128,195,193,225,128,227,193,227,128,97, + 227,195,0,113,255,195,0,48,255,135,0,56,62,14,0,28, + 0,28,0,15,0,120,0,7,193,240,0,1,255,224,0,0, + 127,0,0,12,17,34,14,1,8,15,128,63,192,56,224,112, + 224,0,224,15,224,63,224,120,224,112,224,112,224,121,224,63, + 224,30,96,0,0,0,0,255,240,255,240,17,14,42,21,2, + 2,31,15,128,30,31,0,62,31,0,60,62,0,124,62,0, + 124,124,0,248,124,0,248,124,0,124,124,0,124,62,0,60, + 62,0,62,31,0,30,15,0,31,15,128,18,8,24,21,2, + 7,255,255,192,255,255,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,255,25,25,100,29,2,1, + 0,255,192,0,3,255,224,0,15,0,120,0,30,0,60,0, + 25,255,142,0,57,255,198,0,113,255,231,0,97,193,227,0, + 225,192,227,128,193,193,225,128,193,255,129,128,193,255,129,128, + 193,255,193,128,193,193,193,128,193,193,193,128,225,192,227,128, + 97,192,227,0,113,192,227,0,49,192,231,0,56,0,14,0, + 28,0,28,0,15,0,120,0,7,193,240,0,1,255,224,0, + 0,127,0,0,11,3,6,11,0,22,255,224,255,224,255,224, + 7,7,7,11,2,18,56,196,130,130,130,196,120,20,21,63, + 34,7,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,255,255,240,255,255,240,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,240,255, + 255,240,11,13,26,13,1,13,63,128,127,192,241,224,1,224, + 1,224,3,192,7,192,15,128,30,0,124,0,240,0,255,192, + 255,192,11,14,28,13,1,12,127,128,255,128,227,192,3,192, + 7,192,31,128,31,128,3,192,1,224,1,224,225,224,243,192, + 127,128,63,0,7,7,7,8,2,21,62,60,56,120,112,224, + 192,255,16,31,62,19,2,250,15,255,63,255,127,24,255,24, + 255,24,255,24,255,24,255,24,255,24,255,24,127,24,63,24, + 31,24,3,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,3,24,3,24,3,24,3,24,3,24, + 3,24,3,24,3,24,5,5,5,10,3,10,248,248,248,248, + 248,9,8,16,9,1,247,48,0,48,0,63,0,7,128,3, + 128,3,128,255,0,254,0,6,14,14,9,1,12,28,124,252, + 220,28,28,28,28,28,28,28,28,28,28,12,17,34,14,1, + 8,31,128,63,192,121,224,112,224,224,112,224,112,224,112,224, + 112,224,112,112,224,121,224,63,192,31,128,0,0,0,0,255, + 240,255,240,16,14,28,21,2,2,240,120,248,124,124,60,124, + 62,62,30,62,31,31,31,31,31,62,31,62,30,124,62,124, + 60,248,124,240,120,25,26,104,27,1,0,28,0,120,0,124, + 0,112,0,252,0,240,0,156,0,224,0,28,1,192,0,28, + 1,192,0,28,3,128,0,28,7,128,0,28,7,0,0,28, + 14,0,0,28,14,0,0,28,28,0,0,28,28,30,0,28, + 56,30,0,0,120,62,0,0,112,126,0,0,224,126,0,0, + 224,238,0,1,193,206,0,1,193,206,0,3,131,142,0,7, + 3,255,128,7,3,255,128,14,0,14,0,14,0,14,0,28, + 0,14,0,25,26,104,27,1,0,28,0,112,0,124,0,224, + 0,252,0,224,0,220,1,192,0,28,3,192,0,28,3,128, + 0,28,7,0,0,28,7,0,0,28,14,0,0,28,14,0, + 0,28,28,0,0,28,56,0,0,28,56,124,0,28,113,255, + 0,0,115,199,128,0,227,199,128,0,192,7,128,1,192,15, + 128,3,128,15,0,3,128,30,0,7,0,60,0,6,0,248, + 0,14,1,240,0,12,3,192,0,28,3,255,0,24,3,255, + 0,25,25,100,27,1,1,127,128,60,0,255,192,56,0,227, + 192,112,0,3,192,112,0,31,128,224,0,31,129,224,0,3, + 193,192,0,1,227,192,0,225,227,128,0,227,231,128,0,127, + 207,0,0,63,14,30,0,0,30,62,0,0,28,62,0,0, + 60,126,0,0,56,110,0,0,120,238,0,0,241,206,0,0, + 241,206,0,1,227,142,0,1,227,255,128,3,195,255,128,3, + 128,14,0,7,128,14,0,15,0,14,0,16,25,50,18,1, + 249,3,224,3,224,3,224,3,224,0,0,0,0,0,0,1, + 192,1,192,1,192,3,192,7,128,15,0,30,0,60,0,124, + 0,248,0,248,0,248,0,248,14,248,31,124,62,63,254,31, + 248,7,224,23,35,105,24,1,0,3,192,0,3,192,0,1, + 224,0,0,224,0,0,112,0,0,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,124,0,0,252,0,0,254,0, + 0,254,0,1,254,0,1,255,0,3,255,0,3,207,0,3, + 207,128,7,207,128,7,135,192,7,135,192,15,135,192,15,3, + 224,31,3,224,31,3,240,31,255,240,63,255,240,63,255,248, + 127,255,248,124,0,248,124,0,252,248,0,124,248,0,126,240, + 0,62,23,35,105,24,1,0,0,15,0,0,15,0,0,30, + 0,0,28,0,0,56,0,0,48,0,0,112,0,0,0,0, + 0,0,0,0,0,0,0,124,0,0,252,0,0,254,0,0, + 254,0,1,254,0,1,255,0,3,255,0,3,207,0,3,207, + 128,7,207,128,7,135,192,7,135,192,15,135,192,15,3,224, + 31,3,224,31,3,240,31,255,240,63,255,240,63,255,248,127, + 255,248,124,0,248,124,0,252,248,0,124,248,0,126,240,0, + 62,23,35,105,24,1,0,0,252,0,0,252,0,0,254,0, + 1,206,0,1,199,0,3,135,0,3,3,128,0,0,0,0, + 0,0,0,0,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 23,34,102,24,1,0,0,1,128,1,255,0,3,255,0,3, + 254,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,124,0,0,252,0,0,254,0,0,254,0,1,254,0, + 1,255,0,3,255,0,3,207,0,3,207,128,7,207,128,7, + 135,192,7,135,192,15,135,192,15,3,224,31,3,224,31,3, + 240,31,255,240,63,255,240,63,255,248,127,255,248,124,0,248, + 124,0,252,248,0,124,248,0,126,240,0,62,23,34,102,25, + 1,0,3,199,128,3,199,128,3,199,128,3,199,128,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0, + 0,124,0,0,254,0,0,254,0,1,255,0,1,255,0,1, + 239,0,3,239,128,3,239,128,3,199,128,7,199,192,7,199, + 192,15,131,224,15,131,224,15,131,224,31,1,240,31,255,240, + 31,255,240,63,255,248,63,255,248,124,0,252,124,0,124,124, + 0,124,248,0,62,248,0,62,23,37,111,24,1,0,0,120, + 0,0,252,0,1,206,0,1,134,0,1,134,0,1,206,0, + 0,252,0,0,120,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,124,0,0,252,0,0,252,0,0,254,0,1,254, + 0,1,255,0,3,255,0,3,207,0,3,207,128,7,207,128, + 7,135,192,7,135,192,15,135,192,15,3,224,31,3,224,31, + 3,224,31,255,240,63,255,240,63,255,248,127,255,248,124,0, + 248,124,0,252,248,0,124,248,0,126,240,0,62,32,25,100, + 34,1,0,0,7,255,254,0,15,255,254,0,15,255,254,0, + 31,240,0,0,31,240,0,0,63,240,0,0,61,240,0,0, + 121,240,0,0,249,240,0,0,241,240,0,1,241,255,254,1, + 225,255,254,3,225,255,254,3,193,255,254,7,193,240,0,7, + 255,240,0,15,255,240,0,15,255,240,0,31,255,240,0,30, + 1,240,0,62,1,240,0,60,1,255,255,124,1,255,255,248, + 1,255,255,248,1,255,255,21,33,99,25,2,249,3,255,0, + 15,255,192,31,255,224,63,255,240,62,3,240,124,1,240,120, + 1,248,120,0,248,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,248, + 120,1,248,124,1,248,124,3,240,63,7,240,31,255,224,31, + 255,192,7,255,128,1,252,0,0,96,0,0,120,0,0,126, + 0,0,15,0,0,7,0,0,7,0,1,254,0,1,252,0, + 17,35,105,21,2,0,30,0,0,15,0,0,7,0,0,7, + 128,0,3,128,0,1,192,0,0,192,0,0,0,0,0,0, + 0,0,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,0,255,255,0,255,255,0,255,255,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,255,255,128,255,255,128,255,255,128,255,255,128,17, + 35,105,21,2,0,0,120,0,0,240,0,0,224,0,1,192, + 0,1,128,0,3,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,0,255,255,0,255,255,0,255,255,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,0,255,255,0,255,255,0,255,255,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,17,35, + 105,21,2,0,7,224,0,7,224,0,15,240,0,14,112,0, + 14,56,0,28,56,0,24,28,0,0,0,0,0,0,0,0, + 0,0,255,255,0,255,255,0,255,255,0,255,255,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 255,255,0,255,255,0,255,255,0,255,255,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,128,255,255,128,255,255,128,255,255,128,17,34,102, + 21,2,0,30,60,0,30,60,0,30,60,0,30,60,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, + 0,255,255,0,255,255,0,255,255,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,255,255,0,255, + 255,0,255,255,0,255,255,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,255,255,128, + 255,255,128,255,255,128,255,255,128,8,35,35,9,255,0,240, + 120,56,60,28,12,6,0,0,0,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,7,35,35,8,2,0,30,28,60,56,112,96,224,0, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,11,35,70,9,255, + 0,31,0,63,0,63,128,59,128,113,192,97,192,192,224,0, + 0,0,0,0,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,11,34,68,11,0,0,241,224,241, + 224,241,224,241,224,0,0,0,0,0,0,0,0,0,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,23,25,75,24,0,0,63,252,0,63,255,128,63,255,192, + 63,255,224,62,7,240,62,1,248,62,0,248,62,0,124,62, + 0,124,62,0,60,62,0,60,255,240,62,255,240,62,255,240, + 62,62,0,60,62,0,60,62,0,124,62,0,124,62,0,248, + 62,1,248,62,7,240,63,255,224,63,255,192,63,255,128,63, + 252,0,21,34,102,25,2,0,0,3,0,1,255,0,3,254, + 0,7,252,0,6,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,254,0,248,255,0,248,255,0,248,255,128,248,255, + 128,248,255,192,248,255,192,248,251,224,248,251,224,248,249,224, + 248,249,240,248,248,240,248,248,248,248,248,120,248,248,124,248, + 248,60,248,248,62,248,248,30,248,248,31,248,248,31,248,248, + 15,248,248,15,248,248,7,248,248,7,248,248,3,248,23,36, + 108,27,2,0,7,192,0,3,192,0,1,224,0,0,224,0, + 0,240,0,0,112,0,0,56,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,255,128,7,255,192,31,255,240,31,255, + 240,63,1,248,126,0,252,124,0,124,120,0,60,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,124,0,124,124,0,124,62,0, + 248,63,131,248,31,255,240,15,255,224,7,255,192,0,254,0, + 23,36,108,27,2,0,0,7,192,0,7,128,0,15,0,0, + 14,0,0,28,0,0,24,0,0,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,255,128,7,255,192,31,255,240, + 31,255,240,63,1,248,126,0,252,124,0,124,120,0,60,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,124,0,124,124,0,124, + 62,0,248,63,131,248,31,255,240,15,255,224,7,255,192,0, + 254,0,23,36,108,27,2,0,0,124,0,0,254,0,0,254, + 0,1,239,0,1,199,0,3,131,128,3,1,128,0,0,0, + 0,0,0,0,0,0,0,0,0,3,255,128,7,255,192,31, + 255,240,31,255,240,63,1,248,126,0,252,124,0,124,120,0, + 60,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,124,0,124,124, + 0,124,62,0,248,63,131,248,31,255,240,15,255,224,7,255, + 192,0,254,0,23,34,102,27,2,0,0,241,128,1,255,128, + 3,255,0,3,30,0,3,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,255,128,7,255,192,31,255,240,31,255, + 240,63,1,248,126,0,252,124,0,124,120,0,60,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,124,0,124,124,0,124,62,0, + 248,63,131,248,31,255,240,15,255,224,7,255,192,0,254,0, + 23,34,102,27,2,0,3,199,128,3,199,128,3,199,128,3, + 199,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,255,128,7,255,192,31,255,240,31,255,240,63,1,248, + 126,0,252,124,0,124,120,0,60,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,124,0,124,124,0,124,62,0,248,63,131,248, + 31,255,240,15,255,224,7,255,192,0,254,0,18,19,57,34, + 8,1,64,0,0,224,0,192,112,1,128,56,3,0,28,6, + 0,14,12,0,6,24,0,3,48,0,1,224,0,0,192,0, + 1,224,0,3,48,0,6,24,0,12,12,0,24,6,0,48, + 3,0,112,1,128,224,1,192,64,0,128,25,28,112,27,1, + 255,0,0,1,0,0,0,3,128,1,255,195,128,3,255,247, + 0,15,255,254,0,15,255,252,0,31,128,252,0,63,0,126, + 0,62,0,254,0,60,1,254,0,124,3,223,0,124,7,159, + 0,124,15,31,0,124,30,31,0,124,60,31,0,124,120,31, + 0,124,240,31,0,125,224,31,0,127,192,31,0,63,128,62, + 0,63,0,62,0,63,0,124,0,31,193,252,0,63,255,248, + 0,127,255,240,0,243,255,224,0,224,127,0,0,64,0,0, + 0,21,36,108,25,2,0,15,0,0,7,128,0,3,192,0, + 3,192,0,1,224,0,0,224,0,0,112,0,0,0,0,0, + 0,0,0,0,0,0,0,0,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,240,248,0,240,120,1, + 240,124,3,240,127,7,224,63,255,192,31,255,128,15,255,0, + 3,252,0,21,36,108,25,2,0,0,15,128,0,15,0,0, + 30,0,0,60,0,0,56,0,0,112,0,0,96,0,0,0, + 0,0,0,0,0,0,0,0,0,0,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,240,248,0,240, + 120,1,240,124,3,240,127,7,224,63,255,192,31,255,128,15, + 255,0,3,252,0,21,36,108,25,2,0,0,248,0,1,248, + 0,1,252,0,3,220,0,7,142,0,7,14,0,14,7,0, + 0,0,0,0,0,0,0,0,0,0,0,0,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,240,248, + 0,240,120,1,240,124,3,240,127,7,224,63,255,192,31,255, + 128,15,255,0,3,252,0,21,34,102,25,2,0,7,143,0, + 7,143,0,7,143,0,7,143,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,240,248,0,240,124,1, + 240,124,3,240,127,7,224,63,255,192,31,255,128,15,255,0, + 3,252,0,21,35,105,22,1,0,0,30,0,0,30,0,0, + 28,0,0,56,0,0,48,0,0,112,0,0,0,0,0,0, + 0,0,0,0,0,0,0,252,1,248,252,1,240,126,3,224, + 126,3,224,63,7,192,31,7,192,31,143,128,15,143,128,15, + 223,0,7,223,0,7,254,0,3,254,0,3,252,0,1,248, + 0,1,248,0,0,240,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,18,25,75,22,2,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,240,0,255,254,0,255,255,0,255,255,128, + 248,15,128,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,255,255,128,255,255,0,255,254,0,255,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,18,25,75,19,1,1,31,240,0,63,252,0,127, + 252,0,248,62,0,248,62,0,248,62,0,248,62,0,248,124, + 0,248,248,0,248,240,0,249,240,0,251,224,0,251,224,0, + 249,248,0,249,252,0,248,127,0,248,63,128,248,15,128,248, + 7,128,248,7,192,251,199,192,251,199,128,249,255,128,249,255, + 0,248,126,0,15,28,56,19,2,0,60,0,30,0,14,0, + 7,0,7,0,3,128,1,128,0,0,0,0,0,0,7,224, + 63,248,127,252,124,62,120,62,0,62,15,254,63,254,127,254, + 124,62,248,62,248,62,248,62,248,62,252,126,127,254,63,222, + 31,30,15,28,56,19,2,0,0,120,0,240,0,240,1,224, + 1,192,1,128,3,0,0,0,0,0,0,0,7,224,63,248, + 127,252,124,62,120,62,0,62,15,254,63,254,127,254,124,62, + 248,62,248,62,248,62,248,62,252,126,127,254,63,222,31,30, + 15,28,56,19,2,0,7,192,7,224,15,224,14,240,28,112, + 24,56,56,24,0,0,0,0,0,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,15,26, + 52,19,2,0,0,24,15,248,31,240,31,224,48,0,0,0, + 0,0,0,0,7,224,63,248,127,252,124,62,120,62,0,62, + 15,254,63,254,127,254,124,62,248,62,248,62,248,62,248,62, + 252,126,127,254,63,222,31,30,15,27,54,19,2,0,60,120, + 60,120,60,120,60,120,0,0,0,0,0,0,0,0,0,0, + 15,224,63,248,127,252,124,62,120,62,0,62,15,254,63,254, + 127,254,124,62,248,62,248,62,248,62,248,62,252,126,127,254, + 63,222,31,30,15,30,60,19,2,0,3,192,7,224,14,112, + 12,48,12,48,14,112,7,224,3,192,0,0,0,0,0,0, + 0,0,7,224,31,248,63,252,124,62,120,62,0,62,15,254, + 63,254,127,254,124,62,248,62,248,62,248,62,248,62,252,126, + 127,254,63,222,31,30,27,18,72,31,2,0,7,224,124,0, + 31,249,255,0,127,253,255,128,124,63,135,192,120,31,3,192, + 0,31,3,224,7,255,255,224,63,255,255,224,127,255,255,224, + 124,31,0,0,248,31,0,0,248,31,0,0,248,31,131,224, + 248,31,131,192,252,59,199,192,127,241,255,192,63,224,255,128, + 15,128,126,0,15,26,52,18,2,248,7,224,31,248,63,252, + 124,124,120,60,248,62,248,62,248,0,248,0,248,0,248,0, + 248,62,248,62,120,60,124,124,63,252,31,248,15,224,3,0, + 3,128,3,224,0,240,0,112,0,112,15,224,15,192,15,28, + 56,19,2,0,62,0,30,0,15,0,7,0,7,128,3,128, + 1,192,0,0,0,0,0,0,7,224,31,248,63,252,124,60, + 120,62,248,30,248,30,255,254,255,254,255,254,248,0,248,0, + 248,30,120,62,124,62,63,252,31,248,7,224,15,28,56,19, + 2,0,0,120,0,112,0,240,0,224,1,192,1,128,3,0, + 0,0,0,0,0,0,7,224,31,248,63,252,124,60,120,62, + 248,30,248,30,255,254,255,254,255,254,248,0,248,0,248,30, + 120,62,124,62,63,252,31,248,7,224,15,28,56,19,2,0, + 7,224,7,224,15,224,14,112,28,112,28,56,56,24,0,0, + 0,0,0,0,7,224,31,248,63,252,124,60,120,62,248,30, + 248,30,255,254,255,254,255,254,248,0,248,0,248,30,120,62, + 124,62,63,252,31,248,7,224,15,27,54,19,2,0,60,120, + 60,120,60,120,60,120,0,0,0,0,0,0,0,0,0,0, + 7,224,31,248,63,252,124,124,120,62,248,62,248,62,255,254, + 255,254,255,254,248,0,248,0,248,62,120,62,124,126,63,252, + 31,248,7,224,8,28,28,9,255,0,240,120,120,60,28,14, + 6,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,7,28,28,8,2,0,30,60,56,120, + 112,224,192,0,0,0,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,10,28,56,9,255,0,31,0, + 63,0,63,128,123,128,115,192,97,192,224,192,0,0,0,0, + 0,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,11,26,52,9,255,0,241,224,241,224, + 241,224,241,224,0,0,0,0,0,0,0,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 18,26,78,21,2,0,0,1,0,15,135,0,3,254,0,1, + 248,0,3,248,0,15,252,0,60,60,0,16,30,0,7,255, + 0,31,255,0,63,255,0,126,31,128,124,15,128,248,15,128, + 248,7,128,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,128,120,15,128,124,15,128,126,31,0,63,255,0,31,252, + 0,3,240,0,16,26,52,20,2,0,0,24,15,248,31,248, + 31,240,48,0,0,0,0,0,0,0,249,248,251,252,255,254, + 252,63,252,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,18,28, + 84,21,2,0,31,0,0,15,0,0,7,128,0,3,128,0, + 3,192,0,1,192,0,0,224,0,0,0,0,0,0,0,0, + 0,0,3,240,0,15,252,0,63,254,0,62,31,0,124,15, + 128,120,15,128,248,7,128,248,7,128,248,7,192,248,7,192, + 248,7,192,248,7,128,120,15,128,124,15,128,62,31,0,63, + 254,0,15,252,0,3,240,0,18,28,84,21,2,0,0,60, + 0,0,56,0,0,120,0,0,112,0,0,224,0,0,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,3,240,0,15, + 252,0,63,254,0,62,31,0,124,15,128,120,15,128,248,7, + 128,248,7,128,248,7,192,248,7,192,248,7,192,248,7,128, + 120,15,128,124,15,128,62,31,0,63,254,0,15,252,0,3, + 240,0,18,28,84,21,2,0,3,224,0,3,240,0,7,240, + 0,7,56,0,14,56,0,14,28,0,28,12,0,0,0,0, + 0,0,0,0,0,0,3,240,0,15,252,0,63,254,0,62, + 31,0,124,15,128,120,15,128,248,7,128,248,7,128,248,7, + 192,248,7,192,248,7,192,248,7,128,120,15,128,124,15,128, + 62,31,0,63,254,0,15,252,0,3,240,0,18,27,81,21, + 2,0,0,4,0,0,12,0,7,252,0,15,248,0,15,240, + 0,24,0,0,0,0,0,0,0,0,0,0,0,3,240,0, + 15,252,0,63,254,0,62,31,0,124,15,128,120,15,128,248, + 7,128,248,7,128,248,7,192,248,7,192,248,7,192,248,7, + 128,120,15,128,124,15,128,62,31,0,63,254,0,15,252,0, + 3,240,0,18,27,81,21,2,0,30,60,0,30,60,0,30, + 60,0,30,60,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,240,0,15,252,0,63,254,0,62,31,0, + 124,15,128,120,15,128,248,7,128,248,7,128,248,7,192,248, + 7,192,248,7,192,248,7,128,120,15,128,124,15,128,62,31, + 0,63,254,0,15,252,0,3,240,0,20,15,45,34,7,3, + 0,112,0,0,248,0,0,248,0,0,112,0,0,0,0,0, + 0,0,0,0,0,255,255,240,255,255,240,0,0,0,0,0, + 0,0,112,0,0,248,0,0,248,0,0,112,0,18,23,69, + 21,2,254,0,1,0,0,1,128,0,3,128,3,247,0,15, + 255,0,63,254,0,62,31,0,124,63,128,120,55,128,248,119, + 128,248,231,128,249,199,192,251,135,192,251,135,192,255,7,128, + 126,15,128,124,15,128,62,31,0,63,254,0,127,252,0,227, + 240,0,224,0,0,192,0,0,16,28,56,20,2,0,62,0, + 30,0,15,0,7,0,3,128,3,128,1,192,0,0,0,0, + 0,0,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,252,63, + 127,255,63,223,31,159,16,28,56,20,2,0,0,120,0,240, + 0,240,0,224,1,192,1,128,3,0,0,0,0,0,0,0, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,252,63,127,255, + 63,223,31,159,16,28,56,20,2,0,7,224,7,224,15,240, + 14,112,28,56,28,56,56,28,0,0,0,0,0,0,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,252,63,127,255,63,223, + 31,159,16,27,54,20,2,0,60,120,60,120,60,120,60,120, + 0,0,0,0,0,0,0,0,0,0,248,31,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,248,31,248,31,252,63,127,255,63,223,31,159,17,35, + 105,19,1,249,0,30,0,0,60,0,0,56,0,0,120,0, + 0,112,0,0,224,0,0,192,0,0,0,0,0,0,0,0, + 0,0,248,15,128,248,15,128,252,15,128,124,31,0,126,31, + 0,62,31,0,62,62,0,63,62,0,31,60,0,31,124,0, + 15,252,0,15,248,0,15,248,0,7,248,0,7,240,0,3, + 240,0,3,240,0,3,224,0,3,224,0,3,192,0,103,192, + 0,255,192,0,255,192,0,127,128,0,62,0,0,17,32,96, + 21,2,249,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,249,240,0,255,252,0,255,254, + 0,254,63,0,252,31,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,254,63,0,255,254,0,255,252,0,251,240,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,17,33,99,19,1,249,30,60,0,30,60,0,30, + 60,0,30,60,0,0,0,0,0,0,0,0,0,0,0,0, + 0,248,15,128,248,15,128,252,15,128,124,31,0,124,31,0, + 126,31,0,62,62,0,63,62,0,31,62,0,31,124,0,31, + 252,0,15,248,0,15,248,0,7,248,0,7,240,0,7,240, + 0,3,240,0,3,224,0,3,224,0,3,224,0,7,192,0, + 7,192,0,7,192,0,15,128,0,15,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=20 h=28 x= 7 y=13 dx=34 dy= 0 ascent=26 len=75 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25n[957] U8G_SECTION(".progmem.u8g_font_fub25n") = { + 0,50,46,254,247,25,0,0,0,0,42,57,0,26,251,25, + 0,14,13,26,22,4,13,28,224,60,240,28,224,15,192,135, + 132,255,252,255,252,231,156,15,192,30,224,28,224,60,240,8, + 64,20,21,63,34,7,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,255,255,240,255,255,240,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,7,9,9,11,2,251,62,60,60,120, + 120,112,240,240,224,9,5,10,11,1,7,255,128,255,128,255, + 128,255,128,255,128,5,5,5,10,3,0,248,248,248,248,248, + 11,28,56,15,2,254,0,224,0,224,1,192,1,192,1,192, + 3,128,3,128,3,128,3,128,7,0,7,0,7,0,14,0, + 14,0,14,0,28,0,28,0,28,0,56,0,56,0,56,0, + 56,0,112,0,112,0,112,0,224,0,224,0,224,0,17,25, + 75,19,1,1,7,224,0,31,252,0,63,254,0,60,30,0, + 120,15,0,120,15,0,120,15,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,120,15,0,120,15,0, + 120,15,0,60,30,0,31,252,0,15,248,0,7,224,0,11, + 25,50,19,3,1,3,224,15,224,31,224,127,224,255,224,251, + 224,243,224,195,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,17,25,75,19,1,1,7,248,0, + 31,254,0,31,255,0,63,255,0,126,31,128,124,15,128,124, + 15,128,0,15,128,0,15,128,0,31,0,0,31,0,0,62, + 0,0,126,0,0,252,0,1,248,0,3,240,0,7,224,0, + 15,192,0,63,0,0,126,0,0,252,0,0,255,255,128,255, + 255,128,255,255,128,255,255,128,16,25,50,19,2,1,31,240, + 63,252,127,254,255,254,248,62,248,31,0,31,0,30,0,126, + 7,252,7,240,7,248,7,252,0,62,0,31,0,31,0,31, + 248,31,248,31,248,31,252,62,127,254,127,252,31,248,15,224, + 18,25,75,19,1,1,0,126,0,0,254,0,0,254,0,1, + 254,0,3,254,0,3,254,0,7,190,0,15,190,0,15,62, + 0,30,62,0,30,62,0,60,62,0,124,62,0,120,62,0, + 240,62,0,255,255,192,255,255,192,255,255,192,255,255,192,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,17,25,75,19,1,1,255,254,0,255,254,0,255,254,0, + 255,254,0,248,0,0,248,0,0,248,0,0,248,0,0,249, + 240,0,255,252,0,255,254,0,252,63,0,248,31,0,248,15, + 0,0,15,128,0,15,128,0,15,128,0,15,0,248,15,0, + 248,31,0,252,63,0,127,254,0,127,252,0,63,248,0,15, + 224,0,17,25,75,19,1,1,3,240,0,15,252,0,31,254, + 0,63,255,0,62,31,0,126,15,128,124,0,0,124,0,0, + 252,0,0,248,248,0,251,254,0,255,254,0,255,31,0,254, + 15,128,252,15,128,252,15,128,252,15,128,252,15,128,124,15, + 128,126,15,128,127,31,0,63,255,0,31,254,0,15,252,0, + 3,240,0,16,25,50,19,2,1,255,255,255,255,255,255,255, + 255,0,15,0,31,0,30,0,62,0,62,0,124,0,124,0, + 248,0,248,0,240,1,240,1,240,3,224,3,224,7,192,7, + 192,15,128,15,128,15,128,31,0,31,0,17,25,75,19,1, + 1,7,240,0,31,252,0,127,255,0,127,255,0,252,31,128, + 248,15,128,248,15,128,120,15,0,124,31,0,63,254,0,15, + 248,0,31,248,0,63,254,0,124,63,0,248,15,0,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,252,31,128, + 127,255,0,127,255,0,31,252,0,7,240,0,17,25,75,19, + 1,1,7,240,0,31,252,0,63,254,0,127,254,0,124,63, + 0,248,31,0,248,31,0,248,31,128,248,31,128,248,31,128, + 248,63,128,124,63,128,127,255,128,63,239,128,15,207,128,0, + 15,128,0,31,0,0,31,0,248,31,0,120,63,0,124,126, + 0,63,254,0,63,252,0,31,248,0,7,224,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--34-340-72-72-P-170-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=34 h=37 x= 8 y=21 dx=35 dy= 0 ascent=28 len=160 + Font Bounding box w=50 h=46 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub25r[5936] U8G_SECTION(".progmem.u8g_font_fub25r") = { + 0,50,46,254,247,25,7,111,16,148,32,127,249,28,247,25, + 249,0,0,0,10,0,0,5,25,25,14,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 0,0,248,248,248,248,13,10,20,18,2,15,248,248,248,248, + 248,248,120,248,120,120,120,120,120,120,120,120,120,112,120,112, + 21,25,75,24,2,0,0,224,224,0,225,224,0,225,192,1, + 225,192,1,195,192,1,195,128,31,255,248,31,255,240,63,255, + 240,7,135,0,7,135,0,7,15,0,7,14,0,15,14,0, + 14,14,0,255,255,192,255,255,192,255,255,192,28,60,0,28, + 60,0,60,56,0,56,56,0,56,120,0,120,112,0,112,112, + 0,18,31,93,20,1,252,0,192,0,0,192,0,3,248,0, + 15,252,0,31,254,0,63,255,0,126,223,0,120,207,128,248, + 207,128,248,192,0,252,192,0,126,192,0,127,192,0,127,240, + 0,31,252,0,7,255,0,1,255,128,0,255,128,0,207,128, + 0,199,192,248,199,192,248,199,192,248,207,128,126,223,128,127, + 255,0,63,254,0,15,252,0,3,240,0,0,192,0,0,192, + 0,0,192,0,32,26,104,34,1,0,0,0,3,128,15,192, + 7,0,63,240,7,0,124,248,14,0,120,120,14,0,240,60, + 28,0,240,60,24,0,240,60,56,0,240,60,112,0,240,60, + 112,0,120,120,224,0,120,120,224,0,63,241,199,248,15,195, + 143,252,0,3,159,62,0,7,30,30,0,7,60,15,0,14, + 60,15,0,30,60,15,0,28,60,15,0,56,60,15,0,56, + 60,15,0,112,30,30,0,112,15,60,0,224,15,252,1,224, + 3,240,24,25,75,27,2,1,7,252,0,31,254,0,31,255, + 0,62,31,0,62,31,0,62,31,0,62,31,0,30,62,0, + 31,126,0,15,252,0,7,240,0,15,224,0,63,224,124,63, + 240,120,124,248,120,252,124,120,248,62,120,248,31,248,248,15, + 240,248,7,240,252,3,224,126,15,240,63,255,248,31,255,254, + 7,252,63,5,10,10,14,4,15,248,248,120,120,120,120,120, + 120,120,120,7,30,30,13,3,251,30,30,62,60,60,124,124, + 120,120,248,248,248,248,248,248,248,248,248,248,248,248,120,120, + 124,124,60,60,62,30,30,8,30,30,14,3,251,240,120,120, + 124,60,60,60,62,62,30,30,30,30,31,31,31,31,31,30, + 30,30,62,62,62,60,60,124,120,120,240,14,13,26,22,4, + 13,28,224,60,240,28,224,15,192,135,132,255,252,255,252,231, + 156,15,192,30,224,28,224,60,240,8,64,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,255,255,240,255, + 255,240,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 7,9,9,11,2,251,62,60,60,120,120,112,240,240,224,9, + 5,10,11,1,7,255,128,255,128,255,128,255,128,255,128,5, + 5,5,10,3,0,248,248,248,248,248,11,28,56,15,2,254, + 0,224,0,224,1,192,1,192,1,192,3,128,3,128,3,128, + 3,128,7,0,7,0,7,0,14,0,14,0,14,0,28,0, + 28,0,28,0,56,0,56,0,56,0,56,0,112,0,112,0, + 112,0,224,0,224,0,224,0,17,25,75,19,1,1,7,224, + 0,31,252,0,63,254,0,60,30,0,120,15,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,120,15,0,120,15,0,120,15,0,60,30,0, + 31,252,0,15,248,0,7,224,0,11,25,50,19,3,1,3, + 224,15,224,31,224,127,224,255,224,251,224,243,224,195,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,17,25,75,19,1,1,7,248,0,31,254,0,31,255,0, + 63,255,0,126,31,128,124,15,128,124,15,128,0,15,128,0, + 15,128,0,31,0,0,31,0,0,62,0,0,126,0,0,252, + 0,1,248,0,3,240,0,7,224,0,15,192,0,63,0,0, + 126,0,0,252,0,0,255,255,128,255,255,128,255,255,128,255, + 255,128,16,25,50,19,2,1,31,240,63,252,127,254,255,254, + 248,62,248,31,0,31,0,30,0,126,7,252,7,240,7,248, + 7,252,0,62,0,31,0,31,0,31,248,31,248,31,248,31, + 252,62,127,254,127,252,31,248,15,224,18,25,75,19,1,1, + 0,126,0,0,254,0,0,254,0,1,254,0,3,254,0,3, + 254,0,7,190,0,15,190,0,15,62,0,30,62,0,30,62, + 0,60,62,0,124,62,0,120,62,0,240,62,0,255,255,192, + 255,255,192,255,255,192,255,255,192,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,17,25,75,19,1, + 1,255,254,0,255,254,0,255,254,0,255,254,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,252,63,0,248,31,0,248,15,0,0,15,128,0,15, + 128,0,15,128,0,15,0,248,15,0,248,31,0,252,63,0, + 127,254,0,127,252,0,63,248,0,15,224,0,17,25,75,19, + 1,1,3,240,0,15,252,0,31,254,0,63,255,0,62,31, + 0,126,15,128,124,0,0,124,0,0,252,0,0,248,248,0, + 251,254,0,255,254,0,255,31,0,254,15,128,252,15,128,252, + 15,128,252,15,128,252,15,128,124,15,128,126,15,128,127,31, + 0,63,255,0,31,254,0,15,252,0,3,240,0,16,25,50, + 19,2,1,255,255,255,255,255,255,255,255,0,15,0,31,0, + 30,0,62,0,62,0,124,0,124,0,248,0,248,0,240,1, + 240,1,240,3,224,3,224,7,192,7,192,15,128,15,128,15, + 128,31,0,31,0,17,25,75,19,1,1,7,240,0,31,252, + 0,127,255,0,127,255,0,252,31,128,248,15,128,248,15,128, + 120,15,0,124,31,0,63,254,0,15,248,0,31,248,0,63, + 254,0,124,63,0,248,15,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,252,31,128,127,255,0,127,255,0, + 31,252,0,7,240,0,17,25,75,19,1,1,7,240,0,31, + 252,0,63,254,0,127,254,0,124,63,0,248,31,0,248,31, + 0,248,31,128,248,31,128,248,31,128,248,63,128,124,63,128, + 127,255,128,63,239,128,15,207,128,0,15,128,0,31,0,0, + 31,0,248,31,0,120,63,0,124,126,0,63,254,0,63,252, + 0,31,248,0,7,224,0,5,18,18,11,5,0,248,248,248, + 248,248,0,0,0,0,0,0,0,0,248,248,248,248,248,7, + 22,22,11,2,252,62,62,62,62,62,0,0,0,0,0,0, + 0,0,62,60,124,120,120,112,240,224,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,248,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,248,0,0,63,0,0,7,224,0,0,248,0,0,63,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,16,25,50,19,1,1,31,240,63,248,127,252,248,62,112, + 30,48,31,0,31,0,30,0,62,0,60,0,120,0,240,1, + 224,3,192,3,128,3,128,3,128,3,128,3,128,0,0,0, + 0,7,192,7,192,7,192,7,192,33,32,160,35,1,250,0, + 31,254,0,0,0,127,255,128,0,1,255,255,224,0,3,255, + 255,240,0,7,240,3,248,0,15,192,1,252,0,31,128,0, + 124,0,63,7,159,126,0,62,31,255,63,0,124,63,255,31, + 0,124,127,255,31,0,120,126,63,31,0,248,252,31,15,0, + 248,248,31,15,128,248,248,31,15,128,248,248,31,15,128,248, + 248,31,15,0,248,248,31,15,0,248,248,31,15,0,248,248, + 31,31,0,120,124,63,30,0,124,124,127,190,0,124,63,255, + 252,0,62,31,231,248,0,63,7,195,240,0,31,128,0,0, + 0,15,192,0,0,0,7,248,3,0,0,3,255,255,0,0, + 1,255,255,0,0,0,127,255,0,0,0,7,255,0,0,23, + 25,75,24,1,0,0,124,0,0,252,0,0,254,0,0,254, + 0,1,254,0,1,255,0,3,255,0,3,207,0,3,207,128, + 7,207,128,7,135,192,7,135,192,15,135,192,15,3,224,31, + 3,224,31,3,240,31,255,240,63,255,240,63,255,248,127,255, + 248,124,0,248,124,0,252,248,0,124,248,0,126,240,0,62, + 19,25,75,23,2,0,255,248,0,255,254,0,255,255,0,255, + 255,0,248,63,0,248,15,128,248,15,128,248,15,0,248,15, + 0,248,63,0,255,254,0,255,248,0,255,252,0,255,255,0, + 248,15,192,248,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,7,224,255,255,192,255,255,128,255,255,0,255,252, + 0,21,25,75,25,2,1,3,255,0,15,255,192,31,255,224, + 63,255,240,62,3,240,124,1,240,120,1,248,120,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,1,248,120,1,248,124,1,248, + 124,3,240,63,7,240,31,255,224,15,255,192,7,255,0,1, + 252,0,20,25,75,23,2,0,255,224,0,255,252,0,255,254, + 0,255,255,0,248,63,128,248,15,192,248,7,192,248,3,224, + 248,3,224,248,1,224,248,1,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,224,248,3,224,248,3,224,248,7, + 192,248,15,192,248,63,128,255,255,0,255,254,0,255,252,0, + 255,224,0,17,25,75,21,2,0,255,255,0,255,255,0,255, + 255,0,255,255,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,0,255,255,0,255,255,0, + 255,255,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,128,255,255,128,255,255, + 128,255,255,128,16,25,50,19,2,0,255,255,255,255,255,255, + 255,255,248,0,248,0,248,0,248,0,248,0,248,0,255,254, + 255,254,255,254,255,254,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,22,25,75,26, + 2,1,1,255,192,7,255,224,15,255,240,31,255,248,63,0, + 248,62,0,124,124,0,124,124,0,0,248,0,0,248,0,0, + 248,0,0,248,7,252,248,7,252,248,7,252,248,7,252,248, + 0,124,248,0,124,124,0,124,126,0,124,63,0,124,63,192, + 124,31,255,252,15,255,252,3,255,252,0,127,192,20,25,75, + 24,2,0,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,255,255,240,255,255,240,255,255,240,255,255,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,5,25, + 25,9,2,0,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,17,25,75, + 21,2,0,0,15,128,0,15,128,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,248,15,128,248,15,128,248,15,128,252, + 31,0,127,255,0,127,254,0,63,252,0,15,240,0,19,25, + 75,23,2,0,248,7,192,248,15,128,248,31,128,248,63,0, + 248,126,0,248,124,0,248,248,0,249,248,0,251,240,0,251, + 224,0,255,192,0,255,192,0,255,224,0,255,240,0,251,240, + 0,249,248,0,249,252,0,248,252,0,248,126,0,248,63,0, + 248,63,128,248,31,128,248,15,192,248,15,224,248,7,224,16, + 25,50,19,2,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,255, + 255,255,255,255,255,255,255,27,25,100,31,2,0,255,0,31, + 224,255,0,63,224,255,128,63,224,255,128,63,224,255,128,127, + 224,255,192,127,224,255,192,123,224,251,192,123,224,251,224,251, + 224,251,224,243,224,251,224,243,224,249,241,243,224,249,241,243, + 224,249,241,227,224,248,243,227,224,248,251,227,224,248,251,195, + 224,248,127,195,224,248,127,195,224,248,127,131,224,248,127,131, + 224,248,63,131,224,248,63,131,224,248,63,3,224,248,31,3, + 224,21,25,75,25,2,0,254,0,248,255,0,248,255,0,248, + 255,128,248,255,128,248,255,192,248,255,192,248,251,224,248,251, + 224,248,249,224,248,249,240,248,248,240,248,248,248,248,248,120, + 248,248,124,248,248,60,248,248,62,248,248,30,248,248,31,248, + 248,31,248,248,15,248,248,15,248,248,7,248,248,7,248,248, + 3,248,23,25,75,27,2,1,3,255,128,7,255,192,31,255, + 240,31,255,240,63,1,248,126,0,252,124,0,124,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,62,0,248,63,131,248,31,255,240,15,255,224,7,255,192, + 0,254,0,18,25,75,21,2,0,255,240,0,255,252,0,255, + 255,0,255,255,128,248,31,128,248,15,128,248,7,192,248,7, + 192,248,7,192,248,15,128,248,31,128,255,255,128,255,255,0, + 255,252,0,255,240,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,26,25,100,29,2,1,3,255,128,0,7,255, + 192,0,31,255,224,0,31,255,240,0,63,1,248,0,126,0, + 252,0,124,0,124,0,120,0,60,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,248,0,62,0,248,0, + 62,0,248,0,62,0,248,0,62,0,120,0,60,0,124,0, + 124,0,124,0,124,0,62,0,248,0,63,131,240,0,31,255, + 255,192,15,255,255,192,3,255,255,192,0,255,255,192,19,25, + 75,22,2,0,255,252,0,255,255,0,255,255,128,255,255,192, + 248,15,192,248,7,224,248,3,224,248,3,224,248,3,192,248, + 7,192,248,31,128,255,255,0,255,252,0,255,255,0,255,255, + 128,248,15,128,248,7,192,248,7,192,248,7,192,248,3,192, + 248,3,192,248,3,192,248,3,224,248,3,224,248,3,224,20, + 25,75,23,2,1,7,254,0,15,255,0,31,255,128,63,255, + 192,126,7,192,124,3,192,124,3,224,124,0,0,124,0,0, + 127,0,0,63,240,0,31,254,0,7,255,128,1,255,192,0, + 31,224,0,3,224,0,1,240,248,1,240,248,1,240,248,3, + 224,126,7,224,127,255,192,63,255,128,15,255,0,3,248,0, + 20,25,75,22,1,0,255,255,240,255,255,240,255,255,240,255, + 255,240,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,21,25,75,25,2,0,248,0,248,248,0,248,248,0,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,240,248,0,240,120,1,240, + 124,3,240,127,7,224,63,255,192,31,255,128,15,255,0,3, + 252,0,24,25,75,25,1,0,248,0,63,248,0,62,252,0, + 62,124,0,124,124,0,124,126,0,124,62,0,248,63,0,248, + 63,1,240,31,1,240,31,129,240,31,131,224,15,131,224,15, + 195,224,7,199,192,7,199,192,7,231,128,3,239,128,3,255, + 128,3,255,0,1,255,0,1,254,0,1,254,0,0,254,0, + 0,252,0,34,25,125,34,0,0,252,3,240,15,192,252,3, + 240,15,128,124,3,240,15,128,126,7,248,15,128,126,7,248, + 15,128,126,7,248,31,0,62,7,248,31,0,62,15,252,31, + 0,63,15,60,30,0,63,15,60,62,0,31,15,60,62,0, + 31,31,62,62,0,31,30,30,60,0,31,158,30,60,0,15, + 158,30,124,0,15,190,31,124,0,15,188,15,120,0,7,252, + 15,120,0,7,252,15,120,0,7,252,15,248,0,7,248,7, + 240,0,3,248,7,240,0,3,248,7,240,0,3,248,7,240, + 0,3,240,3,224,0,22,25,75,24,1,0,252,0,248,126, + 1,248,62,1,240,63,3,224,31,135,192,15,135,192,15,207, + 128,7,239,0,3,255,0,3,254,0,1,252,0,0,252,0, + 0,252,0,1,254,0,3,254,0,3,255,0,7,223,128,15, + 143,128,15,15,192,31,7,224,62,3,224,62,3,240,124,1, + 248,248,1,248,248,0,252,21,25,75,22,1,0,252,1,248, + 252,1,240,126,3,224,126,3,224,63,7,192,31,7,192,31, + 143,128,15,143,128,15,223,0,7,223,0,7,254,0,3,254, + 0,3,252,0,1,248,0,1,248,0,0,240,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,18,25,75,22,2,0,127,255, + 192,127,255,192,127,255,192,127,255,192,0,15,192,0,31,128, + 0,63,0,0,63,0,0,126,0,0,252,0,1,252,0,1, + 248,0,3,240,0,7,224,0,7,224,0,15,192,0,31,128, + 0,63,128,0,63,0,0,126,0,0,252,0,0,255,255,192, + 255,255,192,255,255,192,255,255,192,8,32,32,13,3,249,255, + 255,255,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,255,255,255,11, + 28,56,15,2,254,224,0,224,0,240,0,240,0,240,0,112, + 0,120,0,120,0,56,0,60,0,60,0,28,0,30,0,30, + 0,30,0,15,0,15,0,15,0,7,0,7,128,7,128,3, + 128,3,192,3,192,1,192,1,224,1,224,1,224,8,32,32, + 13,3,249,255,255,255,31,31,31,31,31,31,31,31,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 255,255,255,18,21,63,34,8,0,0,192,0,0,224,0,1, + 224,0,1,224,0,1,48,0,3,48,0,2,24,0,6,24, + 0,6,24,0,4,12,0,12,12,0,12,14,0,24,6,0, + 24,6,0,24,7,0,48,3,0,48,3,0,112,1,128,96, + 1,128,96,1,192,192,0,192,17,3,9,17,0,251,255,255, + 128,255,255,128,255,255,128,7,7,7,9,255,21,248,120,60, + 60,28,14,6,15,18,36,19,2,0,7,224,63,248,127,252, + 124,62,120,62,0,62,15,254,63,254,127,254,124,62,248,62, + 248,62,248,62,248,62,252,126,127,254,63,222,31,30,17,25, + 75,20,2,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,249,240,0,255,252,0,255, + 254,0,254,63,0,252,31,0,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 252,31,0,254,63,0,255,254,0,251,252,0,249,240,0,15, + 18,36,18,2,0,7,224,31,248,63,252,124,124,120,60,248, + 62,248,0,248,0,248,0,248,0,248,0,248,62,248,62,120, + 60,124,124,63,252,31,248,15,224,17,25,75,21,2,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,7,207,128,31,255,128,63,255,128,126,63,128, + 124,31,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,128,126,63, + 128,63,255,128,31,239,128,7,207,128,15,18,36,19,2,0, + 7,224,31,248,63,252,124,60,120,62,248,30,248,30,255,254, + 255,254,255,254,248,0,248,0,248,30,120,62,124,62,63,252, + 31,248,7,224,12,25,50,13,1,0,7,240,15,240,31,240, + 31,0,31,0,31,0,31,0,255,224,255,224,255,224,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,17,25,75,21, + 2,249,7,207,128,31,255,128,63,255,128,126,63,128,124,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,31,128,126,63,128,63, + 255,128,31,239,128,7,207,128,0,15,128,0,15,128,124,15, + 128,124,31,0,63,254,0,31,252,0,7,240,0,16,25,50, + 20,2,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,249,248,255,252,255,254,254,63,252,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,5,25,25,9,2,0,248,248,248,248,248, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,6,32,32,12,4,249,124,124,124,124,124,0, + 0,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,252,252,248,240,16,25,50,19,2,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,62, + 248,124,248,248,249,248,249,240,251,224,255,192,255,192,255,192, + 255,192,251,224,251,240,249,240,248,248,248,252,248,124,248,126, + 248,63,5,25,25,9,2,0,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,27,18,72,31,2,0,249,248,62,0,251,252,127,128,255, + 254,255,192,254,63,199,192,252,63,135,192,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,248, + 31,3,224,248,31,3,224,248,31,3,224,248,31,3,224,16, + 18,36,20,2,0,249,248,251,252,255,254,252,63,252,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,18,18,54,21,2,0,3, + 240,0,15,252,0,63,254,0,62,31,0,124,15,128,120,15, + 128,248,7,128,248,7,128,248,7,192,248,7,192,248,7,192, + 248,7,128,120,15,128,124,15,128,62,31,0,63,254,0,15, + 252,0,3,240,0,17,25,75,20,2,249,249,240,0,251,252, + 0,255,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,252,31,0,254,63,0,255,254,0,255,252,0,249,240, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,21,2,249,7,207,128,31, + 239,128,63,255,128,126,63,128,124,31,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,128,126,63,128,63,255,128,31,255,128,7, + 207,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,11,18,36,13,2,0,249,224,251, + 224,255,224,255,224,255,0,252,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,15,18,36,18,2,0,15,224,63,248,127,248,124,124,248, + 124,248,124,126,0,127,192,63,248,15,252,1,252,0,126,248, + 62,248,62,248,124,127,252,63,248,15,192,13,23,46,14,1, + 0,1,0,7,0,31,0,31,0,31,0,255,240,255,240,255, + 240,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,15,128,15,248,7,248,3,240,16, + 18,36,20,2,0,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,248,31,248,31,248, + 31,252,63,127,255,63,223,31,159,18,18,54,19,0,0,248, + 7,192,124,7,192,124,15,128,124,15,128,62,15,128,62,31, + 0,62,31,0,31,30,0,31,30,0,15,62,0,15,188,0, + 15,188,0,7,252,0,7,248,0,7,248,0,3,240,0,3, + 240,0,1,240,0,29,18,72,29,0,0,248,15,128,248,124, + 31,192,240,124,31,193,240,124,31,193,240,124,31,225,224,62, + 63,225,224,62,61,227,224,62,61,227,224,31,125,243,192,31, + 120,247,192,31,120,247,192,15,248,255,128,15,248,127,128,15, + 240,127,128,15,240,127,128,7,240,127,0,7,224,63,0,7, + 224,63,0,17,18,54,19,1,0,252,31,0,124,31,0,126, + 62,0,63,60,0,31,124,0,15,248,0,15,248,0,7,240, + 0,7,224,0,7,240,0,15,248,0,31,248,0,30,252,0, + 62,126,0,60,62,0,124,63,0,248,31,0,248,15,128,17, + 25,75,18,1,249,248,15,128,248,15,128,248,15,0,124,31, + 0,124,31,0,124,30,0,62,62,0,62,60,0,30,60,0, + 31,124,0,31,120,0,15,248,0,15,248,0,15,240,0,7, + 240,0,7,240,0,3,224,0,3,224,0,3,224,0,3,192, + 0,7,192,0,7,128,0,7,128,0,15,128,0,15,128,0, + 14,18,36,18,2,0,255,252,255,252,255,252,0,124,0,248, + 1,248,3,240,7,224,7,192,15,128,31,128,63,0,126,0, + 124,0,248,0,255,252,255,252,255,252,13,35,70,18,3,248, + 0,248,3,248,7,248,15,192,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,0,15,0,15,0,31,0,126,0, + 252,0,240,0,252,0,126,0,63,0,31,0,15,0,15,0, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,192, + 7,248,3,248,0,248,2,37,37,12,5,247,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,13,35,70,17,2,248,248,0,254,0,255,0,31,0,15, + 0,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,7,128,7,192,3,224,1,248,0,248,1,248,3,224,7, + 192,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,0,31,0,255,0,254,0,248,0,18,4,12, + 18,0,7,31,195,192,63,255,128,127,255,0,240,126,0,255 + }; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=38 h=43 x=10 y=26 dx=42 dy= 0 ascent=43 len=195 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =43 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30[16953] U8G_SECTION(".progmem.u8g_font_fub30") = { + 0,59,54,253,245,30,9,163,21,182,32,255,249,43,245,31, + 248,0,0,0,12,0,0,5,30,30,16,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,0,0,248,248,248,248,248,15,12,24,21,3, + 18,252,126,252,126,252,126,252,126,248,126,248,126,248,60,248, + 60,120,60,120,60,120,60,120,60,25,30,120,29,2,0,0, + 60,30,0,0,60,30,0,0,120,60,0,0,120,60,0,0, + 120,60,0,0,120,120,0,0,240,120,0,0,240,120,0,15, + 255,255,128,31,255,255,0,31,255,255,0,31,255,255,0,1, + 224,224,0,3,193,224,0,3,193,224,0,3,193,224,0,7, + 131,192,0,7,131,192,0,127,255,252,0,255,255,248,0,255, + 255,248,0,255,255,248,0,15,7,128,0,30,15,0,0,30, + 15,0,0,30,15,0,0,62,30,0,0,60,30,0,0,60, + 30,0,0,60,30,0,0,21,37,111,23,1,252,0,96,0, + 0,96,0,0,96,0,3,254,0,15,255,128,31,255,192,63, + 255,224,127,111,224,126,99,240,124,99,240,124,97,240,124,96, + 0,124,96,0,126,96,0,127,224,0,127,240,0,63,254,0, + 31,255,128,7,255,224,0,255,240,0,127,240,0,103,248,0, + 97,248,248,97,248,248,96,248,252,97,248,252,97,248,126,99, + 240,127,255,240,63,255,224,31,255,192,15,255,128,3,254,0, + 0,96,0,0,96,0,0,96,0,0,96,0,37,30,150,41, + 2,0,7,224,0,120,0,31,248,0,240,0,63,252,0,240, + 0,124,62,1,224,0,120,30,3,224,0,240,15,3,192,0, + 240,15,7,192,0,240,15,7,128,0,240,15,15,0,0,240, + 15,15,0,0,240,15,30,0,0,240,15,30,0,0,120,30, + 60,0,0,124,62,124,0,0,63,252,120,63,0,31,248,248, + 255,192,7,224,241,255,224,0,1,227,225,240,0,1,227,192, + 240,0,3,199,128,120,0,3,199,128,120,0,7,135,128,120, + 0,7,135,128,120,0,15,7,128,120,0,31,7,128,120,0, + 30,3,192,240,0,62,3,192,240,0,60,1,243,224,0,120, + 1,255,192,0,120,0,127,128,28,30,120,31,2,1,3,255, + 0,0,15,255,128,0,31,255,192,0,63,143,224,0,63,7, + 224,0,62,3,224,0,63,7,224,0,63,7,224,0,31,15, + 192,0,31,159,192,0,15,255,128,0,15,255,0,0,7,252, + 0,0,15,248,0,0,31,248,15,128,63,252,15,128,63,126, + 15,128,126,127,15,128,126,63,143,128,252,31,207,128,252,15, + 255,0,248,7,255,0,248,3,255,0,252,1,254,0,252,0, + 254,0,126,0,254,0,127,131,255,0,63,255,255,128,31,255, + 255,224,7,255,135,240,6,12,12,16,5,18,252,252,252,124, + 124,124,124,124,120,120,120,120,9,36,72,16,4,251,15,128, + 31,0,31,0,31,0,62,0,62,0,62,0,126,0,124,0, + 124,0,124,0,124,0,252,0,252,0,252,0,252,0,248,0, + 248,0,248,0,248,0,248,0,252,0,252,0,252,0,124,0, + 124,0,124,0,124,0,126,0,62,0,62,0,62,0,31,0, + 31,0,31,0,15,128,8,36,36,16,4,251,240,248,120,124, + 124,124,62,62,62,63,63,31,31,31,31,31,31,31,31,31, + 31,31,31,31,63,63,63,62,62,62,124,124,124,248,248,240, + 16,16,32,26,5,14,4,32,28,56,30,120,30,120,15,240, + 7,224,227,199,255,255,255,255,243,207,7,224,15,240,30,120, + 30,120,28,56,4,32,24,25,75,40,8,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,255,255,255, + 255,255,255,255,255,255,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,8,10,10,12,2,251,31,31,62, + 62,60,124,120,120,240,240,10,5,10,14,2,8,255,192,255, + 192,255,192,255,192,255,192,5,5,5,12,4,0,248,248,248, + 248,248,13,32,64,17,2,254,0,120,0,120,0,120,0,240, + 0,240,0,240,1,224,1,224,1,224,3,192,3,192,3,192, + 3,192,7,128,7,128,7,128,15,0,15,0,15,0,14,0, + 30,0,30,0,30,0,60,0,60,0,60,0,120,0,120,0, + 120,0,120,0,240,0,240,0,20,30,90,23,1,1,3,252, + 0,15,255,0,31,255,128,63,15,128,62,7,192,124,3,192, + 124,3,224,124,3,224,124,3,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,248,1,240,248,1,240,248,1,240,248,1,240,124,3,224, + 124,3,224,124,3,224,124,3,224,62,7,192,63,15,128,31, + 255,128,15,255,0,3,252,0,12,30,60,23,4,0,1,240, + 3,240,15,240,63,240,255,240,255,240,253,240,249,240,225,240, + 129,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,20,30,90,23,1,1, + 3,255,0,7,255,128,31,255,192,31,255,224,63,255,240,63, + 3,240,126,1,240,126,1,240,124,1,240,0,1,240,0,3, + 240,0,3,240,0,7,224,0,15,224,0,15,192,0,31,128, + 0,63,0,0,254,0,1,252,0,3,248,0,7,240,0,15, + 224,0,63,128,0,127,0,0,252,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,19,30,90,23,2,1, + 7,252,0,31,255,0,63,255,128,127,255,128,127,255,192,252, + 15,192,252,7,192,248,7,192,0,7,192,0,7,192,0,15, + 192,0,63,192,3,255,128,3,254,0,3,252,0,3,255,0, + 3,255,128,0,31,192,0,7,224,0,7,224,0,7,224,0, + 3,224,248,7,224,252,7,224,252,7,192,126,15,192,127,255, + 128,63,255,128,31,255,0,15,252,0,21,30,90,23,1,0, + 0,63,128,0,63,128,0,127,128,0,255,128,0,255,128,1, + 255,128,1,255,128,3,239,128,3,207,128,7,207,128,15,143, + 128,15,143,128,31,15,128,31,15,128,62,15,128,62,15,128, + 124,15,128,252,15,128,248,15,128,255,255,248,255,255,248,255, + 255,248,255,255,248,255,255,248,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,19,30,90,23,2,0, + 127,255,192,127,255,192,127,255,192,127,255,192,127,255,192,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,252,0,125,255,0,127,255,128,127,255,192,127,15,224, + 126,7,224,124,3,224,0,3,224,0,3,224,0,3,224,0, + 3,224,0,3,224,248,7,224,252,7,224,252,15,192,127,255, + 128,127,255,128,63,254,0,15,252,0,20,30,90,23,1,1, + 3,254,0,7,255,0,15,255,128,31,255,192,63,255,192,63, + 7,224,126,3,224,126,3,224,124,0,0,124,0,0,252,0, + 0,248,0,0,249,255,0,251,255,128,255,255,192,255,15,224, + 254,7,224,254,3,240,252,3,240,252,3,240,252,1,240,252, + 1,240,124,3,240,124,3,240,126,3,224,63,7,224,63,255, + 192,31,255,128,15,255,0,3,254,0,19,30,90,23,2,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,31, + 128,0,31,128,0,63,0,0,63,0,0,63,0,0,126,0, + 0,126,0,0,252,0,0,252,0,1,252,0,1,248,0,1, + 248,0,3,240,0,3,240,0,7,240,0,7,224,0,15,224, + 0,15,192,0,15,192,0,31,192,0,20,30,90,23,1,1, + 7,254,0,31,255,128,63,255,192,127,255,224,127,255,224,126, + 7,224,124,3,224,124,3,224,124,3,224,124,3,224,126,7, + 224,127,15,192,63,255,128,15,255,0,7,252,0,31,255,0, + 63,255,192,127,15,224,124,7,224,252,3,240,252,3,240,248, + 1,240,248,3,240,252,3,240,252,3,240,254,7,240,127,255, + 224,63,255,192,31,255,128,15,255,0,20,30,90,23,1,1, + 3,252,0,15,255,0,31,255,128,63,255,192,127,255,192,126, + 7,224,252,7,224,252,3,224,252,3,240,248,3,240,248,3, + 240,252,3,240,252,7,240,124,7,240,127,15,240,63,255,240, + 63,253,240,31,249,240,7,225,240,0,3,240,0,3,224,0, + 3,224,0,3,224,124,7,224,124,7,192,126,15,192,63,255, + 128,31,255,0,15,254,0,7,252,0,5,20,20,12,5,0, + 248,248,248,248,248,0,0,0,0,0,0,0,0,0,0,248, + 248,248,248,248,9,25,50,13,2,251,31,0,31,0,31,0, + 31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,31,128,31,0,63,0,62,0, + 62,0,124,0,124,0,120,0,248,0,240,0,24,21,63,40, + 8,2,0,0,1,0,0,15,0,0,63,0,1,252,0,7, + 224,0,63,0,0,252,0,7,224,0,63,0,0,252,0,0, + 224,0,0,248,0,0,126,0,0,15,192,0,3,240,0,0, + 126,0,0,31,192,0,3,240,0,0,126,0,0,31,0,0, + 3,24,10,30,40,8,7,255,255,255,255,255,255,255,255,255, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,255,255,255,255,24,21,63,40,8,2,128,0,0,240,0, + 0,252,0,0,63,128,0,7,224,0,0,252,0,0,63,0, + 0,7,224,0,0,252,0,0,63,0,0,7,0,0,31,0, + 0,126,0,3,240,0,15,192,0,126,0,3,248,0,15,192, + 0,126,0,0,248,0,0,192,0,0,18,30,90,22,1,1, + 7,252,0,31,254,0,63,255,128,127,255,128,252,15,192,120, + 7,192,56,7,192,0,7,192,0,7,192,0,15,192,0,15, + 128,0,31,128,0,63,0,0,126,0,0,248,0,1,240,0, + 3,224,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,0,0,0,0,0,0,0,0,0,3,224,0,3,224, + 0,3,224,0,3,224,0,3,224,0,38,39,195,42,2,248, + 0,3,255,224,0,0,31,255,248,0,0,127,255,254,0,0, + 255,255,255,0,3,255,255,255,128,7,254,0,127,192,7,248, + 0,31,224,15,224,0,15,240,31,192,0,7,240,63,128,0, + 3,248,63,1,241,241,248,63,7,253,241,252,126,15,255,240, + 252,126,31,255,240,252,124,31,135,240,252,252,63,3,240,124, + 252,63,3,240,124,252,62,1,240,124,252,62,1,240,124,248, + 62,1,240,124,248,62,1,240,124,248,62,1,240,124,252,62, + 1,240,124,252,63,3,240,252,124,63,3,248,248,124,31,135, + 249,248,126,31,255,255,240,63,15,254,255,224,63,7,252,127, + 192,31,129,248,31,0,31,192,0,0,0,15,224,0,0,0, + 7,248,0,0,0,3,254,0,56,0,1,255,255,248,0,0, + 255,255,248,0,0,63,255,248,0,0,15,255,248,0,0,1, + 255,224,0,27,30,120,28,1,0,0,63,0,0,0,63,128, + 0,0,127,128,0,0,127,128,0,0,127,192,0,0,255,192, + 0,0,255,224,0,0,255,224,0,1,251,224,0,1,243,240, + 0,3,243,240,0,3,241,240,0,3,225,248,0,7,225,248, + 0,7,224,248,0,7,192,252,0,15,192,252,0,15,192,126, + 0,15,128,126,0,31,255,254,0,31,255,255,0,63,255,255, + 0,63,255,255,0,63,255,255,128,126,0,31,128,126,0,31, + 128,126,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 224,22,30,90,27,3,0,255,254,0,255,255,128,255,255,224, + 255,255,224,255,255,240,248,7,240,248,3,240,248,1,240,248, + 1,240,248,1,240,248,3,240,248,7,224,255,255,192,255,255, + 128,255,254,0,255,255,192,255,255,240,248,3,248,248,1,248, + 248,0,252,248,0,252,248,0,252,248,0,252,248,1,252,248, + 3,252,255,255,248,255,255,240,255,255,224,255,255,192,255,255, + 0,24,30,90,29,2,1,1,255,192,3,255,240,15,255,248, + 15,255,252,31,255,254,63,128,254,62,0,127,126,0,63,124, + 0,63,124,0,63,252,0,0,252,0,0,252,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,252,0,0, + 252,0,0,124,0,63,124,0,63,126,0,127,62,0,127,63, + 128,254,31,255,254,31,255,252,15,255,248,7,255,224,1,255, + 192,24,30,90,29,3,0,255,248,0,255,255,0,255,255,192, + 255,255,224,255,255,240,248,15,248,248,1,252,248,0,252,248, + 0,126,248,0,126,248,0,62,248,0,63,248,0,63,248,0, + 63,248,0,31,248,0,31,248,0,63,248,0,63,248,0,63, + 248,0,63,248,0,126,248,0,126,248,0,252,248,1,252,248, + 15,248,255,255,240,255,255,224,255,255,192,255,255,0,255,248, + 0,20,30,90,25,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,240,255,255,240,255,255,240,255,255,240,255,255, + 240,19,30,90,24,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,26,30,120,30,2,1,0,127,240,0,1,255,252,0,3, + 255,254,0,15,255,255,0,15,255,255,128,31,192,63,128,63, + 128,15,192,63,0,15,192,126,0,15,192,126,0,7,192,124, + 0,0,0,252,0,0,0,252,0,0,0,252,0,0,0,248, + 1,255,192,248,1,255,192,248,1,255,192,252,1,255,192,252, + 1,255,192,252,0,7,192,124,0,7,192,126,0,7,192,127, + 0,7,192,63,128,7,192,63,224,7,192,31,255,255,192,15, + 255,255,192,7,255,255,192,1,255,255,192,0,127,254,0,23, + 30,90,29,3,0,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,255,255,254,255,255,254,255, + 255,254,255,255,254,255,255,254,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,5, + 30,30,11,3,0,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,20,30,90,25,2,0,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,248,1,240,248,3,240,252,3,240,252,3, + 240,254,7,224,127,255,224,127,255,192,63,255,128,31,255,0, + 15,254,0,23,30,90,27,3,0,248,1,248,248,3,248,248, + 7,240,248,15,224,248,15,192,248,31,192,248,63,128,248,127, + 0,248,126,0,248,254,0,249,252,0,251,248,0,251,240,0, + 255,240,0,255,240,0,251,248,0,249,252,0,249,254,0,248, + 254,0,248,127,0,248,127,128,248,63,128,248,31,192,248,31, + 224,248,15,224,248,7,240,248,7,248,248,3,248,248,1,252, + 248,0,254,19,30,90,23,3,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,224,255,255,224,255,255,224,255,255,224, + 255,255,224,31,30,120,37,3,0,255,192,3,254,255,192,3, + 254,255,192,7,254,255,192,7,254,255,224,7,254,251,224,15, + 254,251,224,15,254,251,240,15,190,251,240,15,190,249,240,31, + 190,249,240,31,62,249,248,31,62,248,248,63,62,248,248,63, + 62,248,252,62,62,248,124,126,62,248,124,126,62,248,126,124, + 62,248,126,124,62,248,62,252,62,248,62,248,62,248,63,248, + 62,248,31,248,62,248,31,248,62,248,31,240,62,248,31,240, + 62,248,15,240,62,248,15,224,62,248,15,224,62,248,7,224, + 62,25,30,120,31,3,0,255,128,15,128,255,128,15,128,255, + 128,15,128,255,192,15,128,255,192,15,128,255,224,15,128,251, + 224,15,128,251,240,15,128,249,240,15,128,249,248,15,128,248, + 248,15,128,248,252,15,128,248,252,15,128,248,126,15,128,248, + 126,15,128,248,63,15,128,248,63,15,128,248,31,143,128,248, + 31,143,128,248,15,143,128,248,15,207,128,248,7,207,128,248, + 7,239,128,248,3,239,128,248,3,255,128,248,1,255,128,248, + 1,255,128,248,0,255,128,248,0,255,128,248,0,127,128,27, + 30,120,31,2,1,0,255,224,0,3,255,248,0,7,255,252, + 0,15,255,254,0,31,255,255,0,63,192,127,128,63,0,31, + 128,127,0,31,192,126,0,15,192,126,0,15,192,252,0,15, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,15,224,126,0,15,192,126,0,15,192,127,0,31, + 192,63,0,31,128,63,192,127,128,31,255,255,0,15,255,254, + 0,7,255,252,0,3,255,248,0,0,255,224,0,21,30,90, + 26,3,0,255,252,0,255,255,128,255,255,192,255,255,224,255, + 255,240,248,7,240,248,3,248,248,1,248,248,1,248,248,0, + 248,248,1,248,248,1,248,248,1,248,248,7,240,255,255,240, + 255,255,224,255,255,192,255,255,128,255,252,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,30,30,120, + 33,2,1,0,255,224,0,3,255,248,0,7,255,252,0,15, + 255,254,0,31,255,255,0,63,192,127,128,63,0,31,128,127, + 0,31,192,126,0,15,192,126,0,15,192,252,0,15,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,192,126,0,15,192,126,0,15,192,127,0,31,128,63, + 0,31,128,63,192,127,0,31,255,254,252,15,255,255,252,7, + 255,255,252,3,255,255,252,0,255,255,252,23,30,90,27,3, + 0,255,255,0,255,255,224,255,255,240,255,255,248,255,255,248, + 248,3,252,248,1,252,248,0,252,248,0,124,248,0,124,248, + 0,252,248,1,248,248,7,240,255,255,224,255,255,192,255,255, + 128,255,255,224,255,255,240,248,3,248,248,1,248,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,252,248,0,252,248, + 0,252,248,0,252,248,0,124,248,0,126,23,30,90,27,2, + 1,1,255,128,7,255,224,15,255,240,31,255,240,63,255,248, + 63,1,248,126,0,252,126,0,252,124,0,124,126,0,0,126, + 0,0,63,128,0,63,240,0,31,254,0,15,255,192,3,255, + 240,0,127,248,0,7,252,0,1,252,0,0,126,248,0,126, + 248,0,62,252,0,126,252,0,126,126,0,252,127,255,252,63, + 255,248,31,255,240,15,255,224,3,255,128,23,30,90,25,1, + 0,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,24,30,90,30,3, + 0,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,252,0,31,252,0,31, + 252,0,63,124,0,63,126,0,126,127,0,254,63,255,252,31, + 255,252,31,255,248,7,255,224,1,255,192,28,30,120,30,1, + 0,252,0,3,240,252,0,7,240,254,0,7,224,126,0,7, + 224,126,0,15,192,127,0,15,192,63,0,31,192,63,0,31, + 128,63,128,31,128,31,128,63,128,31,128,63,0,31,192,63, + 0,15,192,127,0,15,192,126,0,7,224,126,0,7,224,252, + 0,7,224,252,0,3,240,252,0,3,241,248,0,3,249,248, + 0,1,249,248,0,1,251,240,0,1,255,240,0,0,255,240, + 0,0,255,224,0,0,255,224,0,0,127,192,0,0,127,192, + 0,0,127,192,0,0,63,128,0,38,30,150,40,1,0,252, + 0,252,0,252,252,1,254,0,252,252,1,254,0,252,252,1, + 254,1,252,254,1,254,1,252,126,3,255,1,248,126,3,255, + 1,248,126,3,255,1,248,126,3,255,1,248,63,7,255,131, + 240,63,7,207,131,240,63,7,207,131,240,63,7,207,131,240, + 31,15,207,195,224,31,143,135,199,224,31,143,135,199,224,31, + 143,135,199,224,15,159,135,231,192,15,159,3,231,192,15,223, + 3,239,192,15,223,3,239,192,7,255,3,255,128,7,254,1, + 255,128,7,254,1,255,128,7,254,1,255,128,3,254,1,255, + 0,3,252,0,255,0,3,252,0,255,0,3,252,0,255,0, + 3,252,0,255,0,26,30,120,28,1,0,126,0,31,128,127, + 0,63,128,63,128,63,0,63,128,126,0,31,192,126,0,15, + 192,252,0,15,225,248,0,7,241,248,0,3,243,240,0,3, + 251,224,0,1,255,224,0,0,255,192,0,0,255,128,0,0, + 127,128,0,0,127,0,0,0,127,128,0,0,255,128,0,1, + 255,192,0,1,255,224,0,3,247,224,0,3,227,240,0,7, + 227,248,0,15,193,248,0,15,129,252,0,31,128,254,0,63, + 0,126,0,63,0,127,0,126,0,63,128,252,0,31,128,252, + 0,31,192,24,30,90,25,1,0,252,0,127,254,0,126,126, + 0,254,127,0,252,63,1,252,63,1,248,31,131,248,31,131, + 240,15,195,240,15,199,224,7,231,224,7,239,192,3,255,192, + 3,255,128,1,255,128,1,255,0,0,255,0,0,254,0,0, + 126,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,22,30,90,26,2,0,127,255,252,127,255,252,127, + 255,252,127,255,252,127,255,252,0,1,252,0,3,248,0,7, + 240,0,15,240,0,31,224,0,31,192,0,63,128,0,127,128, + 0,255,0,0,254,0,1,252,0,3,252,0,7,248,0,7, + 240,0,15,224,0,31,224,0,63,192,0,63,128,0,127,0, + 0,255,0,0,255,255,252,255,255,252,255,255,252,255,255,252, + 255,255,252,9,38,76,15,3,248,255,128,255,128,255,128,255, + 128,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,255,128,255, + 128,255,128,255,128,13,32,64,17,2,254,240,0,240,0,120, + 0,120,0,120,0,120,0,60,0,60,0,60,0,30,0,30, + 0,30,0,14,0,15,0,15,0,15,0,7,128,7,128,7, + 128,3,192,3,192,3,192,3,192,1,224,1,224,1,224,0, + 240,0,240,0,240,0,112,0,120,0,120,9,38,76,15,3, + 248,255,128,255,128,255,128,255,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,255,128,255,128,255,128,20,25,75, + 40,10,0,0,96,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,152,0,3,156,0,3,12,0,3,12,0,7,14, + 0,6,6,0,6,6,0,14,7,0,12,3,0,28,3,128, + 28,1,128,24,1,128,56,1,192,48,0,192,48,0,192,112, + 0,224,96,0,96,224,0,112,224,0,112,192,0,48,20,4, + 12,20,0,250,255,255,240,255,255,240,255,255,240,255,255,240, + 9,8,16,10,255,25,248,0,124,0,60,0,62,0,30,0, + 15,0,7,0,3,128,19,20,60,22,2,1,15,254,0,31, + 255,0,63,255,128,126,15,128,124,15,192,0,7,192,0,127, + 192,15,255,192,63,255,192,127,255,192,127,7,192,252,7,192, + 252,7,192,248,15,192,248,15,192,252,15,192,254,31,192,127, + 255,192,63,247,192,31,227,224,20,30,90,25,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,254,0,251, + 255,128,255,255,192,255,15,192,254,7,224,252,3,224,252,3, + 240,252,3,240,252,3,240,248,1,240,248,1,240,248,3,240, + 252,3,240,252,3,240,252,3,224,254,7,224,255,15,192,251, + 255,192,251,255,128,248,254,0,17,20,60,21,2,1,15,252, + 0,31,254,0,63,255,0,126,63,0,124,31,128,124,31,128, + 252,15,128,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,252,15,128,252,31,128,124,31,128,126,63, + 0,63,255,0,31,254,0,15,252,0,20,30,90,25,2,0, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,7,249, + 240,31,253,240,63,255,240,63,15,240,126,7,240,124,3,240, + 252,3,240,252,3,240,252,3,240,248,1,240,248,1,240,248, + 3,240,252,3,240,252,3,240,124,3,240,126,7,240,63,15, + 240,63,253,240,31,249,240,7,241,240,19,20,60,22,2,1, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 7,192,252,7,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,7,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,14,30,60,15, + 1,1,3,252,7,252,15,252,15,192,15,128,15,128,15,128, + 15,128,15,128,15,128,255,248,255,248,255,248,255,248,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,20,28, + 84,25,2,249,7,249,240,31,253,240,63,255,240,63,15,240, + 126,7,240,124,3,240,252,3,240,252,3,240,252,3,240,248, + 1,240,248,1,240,248,3,240,252,3,240,252,3,240,124,7, + 240,126,7,240,63,255,240,63,253,240,15,249,240,3,225,240, + 0,3,240,0,3,240,124,3,240,126,7,224,63,255,224,63, + 255,192,31,255,128,3,252,0,18,30,90,24,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,255,0,251, + 255,128,255,255,192,255,31,192,254,15,192,252,7,192,252,7, + 192,252,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,6,30,30,10,2,0,252,252, + 252,252,252,0,0,0,0,0,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,124,124,124,124,124,124,7,39,39,13, + 4,247,126,126,126,126,126,0,0,0,0,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,126,254,254,254,252,248,18,30,90,22,3,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,31,192, + 248,31,128,248,63,0,248,126,0,248,252,0,249,252,0,249, + 248,0,251,240,0,255,224,0,255,240,0,251,240,0,249,248, + 0,249,252,0,248,252,0,248,126,0,248,127,0,248,63,0, + 248,31,128,248,31,192,248,15,192,5,30,30,11,3,0,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,31,20,80, + 37,3,1,248,255,15,240,249,255,159,252,251,255,191,252,255, + 31,248,254,254,15,240,126,252,7,224,62,252,7,224,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,18,20,60,24,3,1,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,20,60,24,2,1,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,28,84,25,3,249,248,254,0, + 249,255,128,251,255,192,255,15,192,254,7,224,252,3,224,252, + 3,240,252,3,240,252,3,240,248,1,240,248,1,240,252,3, + 240,252,3,240,252,3,240,252,3,224,254,7,224,255,15,192, + 255,255,192,251,255,128,249,254,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,20,28,84,25,2,249,7,241,240,31,253,240,63,253,240, + 63,15,240,126,7,240,124,3,240,252,3,240,252,3,240,248, + 3,240,248,1,240,248,1,240,252,3,240,252,3,240,252,3, + 240,124,3,240,126,7,240,63,15,240,63,255,240,31,253,240, + 7,249,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,12,20,40,16,3, + 1,248,240,249,240,251,240,255,240,255,240,255,0,254,0,252, + 0,252,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,17,20,60,21,2,1,15, + 252,0,63,254,0,127,255,0,126,31,128,124,31,128,124,15, + 128,126,0,0,127,128,0,63,248,0,63,254,0,7,255,0, + 0,255,128,0,31,128,0,15,128,248,15,128,252,15,128,126, + 31,128,127,255,0,63,254,0,31,252,0,15,26,52,17,1, + 0,0,128,1,128,7,128,15,128,15,128,15,128,255,252,255, + 252,255,252,255,252,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,192,15,224,7, + 254,7,254,1,254,18,20,60,24,3,0,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,252,7,192,252,15,192,252,15,192,254,31,192,127,255, + 192,63,247,192,31,231,192,20,20,60,22,1,0,248,3,240, + 252,3,240,252,3,224,124,7,224,126,7,224,126,7,192,62, + 15,192,63,15,192,31,15,128,31,31,128,31,159,0,15,159, + 0,15,191,0,15,254,0,7,254,0,7,254,0,3,252,0, + 3,252,0,3,248,0,1,248,0,33,20,100,34,1,0,248, + 7,224,31,128,248,15,240,31,0,252,15,240,31,0,252,15, + 240,63,0,124,15,248,62,0,126,31,248,62,0,126,31,248, + 126,0,62,31,124,126,0,62,62,124,124,0,63,62,124,124, + 0,31,62,126,252,0,31,124,62,248,0,31,252,62,248,0, + 15,252,63,248,0,15,252,31,240,0,15,248,31,240,0,15, + 248,31,240,0,7,248,15,240,0,7,240,15,224,0,7,240, + 15,224,0,20,20,60,22,1,0,254,3,224,126,7,224,63, + 15,192,31,143,128,31,159,128,15,223,0,7,254,0,7,254, + 0,3,252,0,3,252,0,3,252,0,7,254,0,15,255,0, + 15,191,0,31,159,128,63,31,192,62,15,192,126,7,224,252, + 7,224,252,3,240,20,28,84,22,1,248,252,3,240,252,3, + 240,252,3,224,126,7,224,126,7,224,63,7,192,63,15,192, + 63,15,192,31,143,128,31,159,128,15,159,128,15,223,0,15, + 255,0,7,255,0,7,254,0,3,254,0,3,252,0,3,252, + 0,1,252,0,1,248,0,1,248,0,1,248,0,1,240,0, + 3,240,0,3,240,0,7,224,0,7,224,0,7,224,0,17, + 20,60,21,2,0,255,255,0,255,255,0,255,255,0,255,255, + 0,0,63,0,0,126,0,0,252,0,1,248,0,3,240,0, + 7,240,0,15,224,0,15,192,0,31,128,0,63,0,0,126, + 0,0,252,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,15,41,82,20,3,246,0,2,0,254,1,254,3,254,7, + 240,7,224,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,15,192,15,128,63,128,254,0,252, + 0,254,0,255,0,63,128,15,128,15,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,224,7, + 224,3,254,3,254,1,254,0,62,3,43,43,13,5,245,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,15,40,80,20,3,247, + 252,0,255,0,255,0,31,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,192,15,192,7,224, + 7,224,3,248,1,254,0,126,0,254,3,252,7,224,7,192, + 7,192,15,192,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,31,128,255,128,255,0,254,0,248,0, + 21,5,15,21,0,8,15,192,120,63,255,248,127,255,240,127, + 255,224,240,31,128,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,12,0,0,5,28,28,16, + 5,248,248,248,248,248,248,0,0,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,18,30, + 90,24,3,250,0,6,0,0,14,0,0,12,0,0,12,0, + 0,28,0,7,252,0,31,255,0,63,255,128,63,63,128,124, + 63,192,124,127,192,252,103,192,248,96,0,248,96,0,248,192, + 0,248,192,0,248,192,0,253,192,0,253,143,192,125,143,192, + 127,143,192,127,31,128,63,255,128,31,255,0,7,252,0,6, + 0,0,14,0,0,12,0,0,12,0,0,28,0,0,20,31, + 93,23,2,0,0,16,0,3,255,128,7,255,192,15,255,224, + 15,199,240,31,131,240,31,131,240,31,1,240,31,0,0,31, + 0,0,31,0,0,31,0,0,255,252,0,255,252,0,255,252, + 0,255,252,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,255,255,240,255,255,240,255,255,240,255,255, + 240,21,21,63,25,2,8,192,0,24,224,0,56,113,252,112, + 63,255,224,31,7,192,28,1,192,24,1,192,56,0,224,48, + 0,96,48,0,96,48,0,96,48,0,96,48,0,224,56,0, + 224,28,1,192,30,3,192,31,143,192,63,255,224,113,252,112, + 224,0,56,192,0,24,22,30,90,24,1,0,252,0,252,252, + 0,252,124,1,248,126,1,248,62,3,240,63,3,240,63,7, + 224,31,135,224,255,135,252,255,143,252,255,207,252,7,223,128, + 7,255,0,3,255,0,3,255,0,1,254,0,255,255,252,255, + 255,252,255,255,252,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,2,38,38,14,6,248,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,16,36,72,19,1,251,15,252,31,254,63,254,126,14, + 124,2,124,0,124,0,126,0,127,0,63,192,31,224,15,248, + 31,252,63,254,126,127,124,63,248,31,248,31,248,31,252,62, + 254,252,127,248,63,240,31,248,7,252,1,254,0,127,0,63, + 0,63,0,31,0,63,64,126,127,254,127,252,127,240,31,192, + 13,5,10,13,0,26,240,120,240,120,240,120,240,120,240,120, + 30,30,120,34,2,1,0,63,240,0,0,255,252,0,3,248, + 127,0,7,192,15,128,15,0,3,192,30,0,1,224,60,31, + 240,240,56,63,248,112,120,127,252,120,112,248,124,56,112,248, + 62,56,225,240,62,28,225,240,62,28,225,240,0,28,225,240, + 0,28,225,240,0,28,225,240,0,28,225,240,62,28,225,240, + 62,28,112,248,62,56,112,248,124,56,112,127,252,120,56,63, + 248,112,60,31,224,240,30,0,1,224,15,0,3,192,7,128, + 15,128,3,240,63,0,1,255,252,0,0,63,240,0,14,20, + 40,16,1,10,15,192,63,240,120,240,120,120,0,120,15,248, + 63,248,124,120,240,120,240,120,240,120,240,248,255,248,127,248, + 63,56,0,0,0,0,0,0,255,252,255,252,20,16,48,24, + 2,2,15,193,240,15,131,224,31,135,224,31,7,192,63,15, + 192,126,15,192,126,31,128,252,31,128,252,31,128,126,31,128, + 126,15,192,63,15,192,31,7,192,31,135,224,15,131,224,15, + 193,240,21,9,27,25,2,8,255,255,248,255,255,248,0,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,255,30,30,120,34,2,1,0,63,240,0,0,255, + 252,0,3,248,127,0,7,192,15,128,15,0,3,192,30,0, + 1,224,60,255,192,240,56,255,240,112,120,255,248,120,112,240, + 124,56,112,240,60,56,224,240,60,28,224,240,60,28,224,240, + 120,28,224,255,240,28,224,255,224,28,224,255,248,28,224,240, + 120,28,224,240,120,28,112,240,56,56,112,240,60,56,112,240, + 60,120,56,240,60,112,60,240,60,240,30,0,1,224,15,0, + 3,192,7,128,15,128,3,240,63,0,1,255,252,0,0,63, + 240,0,13,4,8,13,0,26,255,248,255,248,255,248,255,248, + 9,9,18,13,2,21,62,0,127,0,227,128,193,128,193,128, + 193,128,227,128,127,0,62,0,24,24,72,40,8,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,255,255,255,255,255,255,255,255,255,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 255,255,255,255,255,255,13,16,32,15,1,15,63,224,127,240, + 248,120,240,120,0,120,0,248,1,240,3,224,7,192,15,128, + 31,0,60,0,240,0,255,240,255,240,255,240,12,15,30,14, + 1,16,63,192,127,224,240,240,240,240,0,240,1,224,15,192, + 15,192,1,224,0,240,0,240,240,240,249,240,127,224,63,128, + 8,8,8,9,2,25,31,31,62,60,120,112,240,224,255,18, + 36,108,22,2,250,7,255,192,31,255,192,63,199,0,127,199, + 0,255,199,0,255,199,0,255,199,0,255,199,0,255,199,0, + 255,199,0,255,199,0,255,199,0,127,199,0,63,199,0,15, + 199,0,1,199,0,1,199,0,1,199,0,1,199,0,1,199, + 0,1,199,0,1,199,0,1,199,0,1,199,0,1,199,0, + 1,199,0,1,199,0,1,199,0,1,199,0,1,199,0,1, + 199,0,1,199,0,1,199,0,1,199,0,1,199,0,1,199, + 0,5,5,5,12,3,11,248,248,248,248,248,9,10,20,10, + 2,246,48,0,48,0,60,0,63,0,7,128,3,128,3,128, + 135,128,255,0,252,0,7,16,16,11,2,14,30,62,254,254, + 158,30,30,30,30,30,30,30,30,30,30,30,14,19,38,16, + 1,11,15,192,31,224,60,240,120,120,112,56,240,60,240,60, + 240,60,240,60,240,60,112,56,120,120,60,240,31,224,15,192, + 0,0,0,0,255,252,255,252,20,16,48,24,2,2,252,31, + 0,124,31,0,126,15,128,62,15,192,63,15,192,31,7,224, + 31,135,224,31,131,240,31,131,240,31,135,224,31,7,224,63, + 15,192,62,15,192,126,15,128,124,31,0,252,31,0,28,31, + 124,32,2,255,30,0,15,0,62,0,30,0,254,0,30,0, + 254,0,60,0,158,0,124,0,30,0,120,0,30,0,248,0, + 30,0,240,0,30,1,240,0,30,1,224,0,30,3,192,0, + 30,3,192,0,30,7,128,0,30,15,128,0,30,15,0,0, + 30,31,3,224,0,30,7,224,0,60,15,224,0,60,15,224, + 0,120,31,224,0,120,61,224,0,240,121,224,0,240,121,224, + 1,224,241,224,3,193,225,224,3,193,255,240,7,129,255,240, + 7,128,1,224,15,0,1,224,15,0,1,224,30,0,1,224, + 28,30,120,31,2,0,30,0,30,0,62,0,60,0,254,0, + 56,0,222,0,120,0,158,0,240,0,30,0,240,0,30,1, + 224,0,30,1,224,0,30,3,192,0,30,3,192,0,30,7, + 128,0,30,7,128,0,30,15,0,0,30,30,0,0,30,30, + 31,128,30,60,63,224,0,60,125,224,0,120,240,240,0,120, + 240,240,0,240,0,240,0,240,1,240,1,224,3,224,1,192, + 7,192,3,192,15,128,7,128,31,0,7,128,62,0,15,0, + 124,0,15,0,240,0,30,0,255,240,30,0,255,240,29,30, + 120,31,1,1,63,192,3,192,127,224,7,192,240,240,7,128, + 240,240,15,0,0,240,15,0,1,224,30,0,15,192,30,0, + 15,192,60,0,1,224,124,0,0,240,120,0,0,240,240,0, + 240,240,240,0,249,241,224,0,127,225,224,0,63,131,193,240, + 0,3,195,240,0,7,135,240,0,15,7,240,0,15,15,240, + 0,30,30,240,0,30,60,240,0,60,60,240,0,60,120,240, + 0,120,240,240,0,240,255,248,0,240,255,248,1,224,0,240, + 1,224,0,240,3,192,0,240,3,192,0,240,19,28,84,23, + 2,248,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,0,0,0,0,0,0,0,0,0,240,0,0,240,0, + 0,240,0,0,240,0,1,224,0,7,224,0,15,128,0,31, + 0,0,62,0,0,124,0,0,252,0,0,252,0,0,248,1, + 0,252,3,128,252,7,224,126,15,192,127,255,192,63,255,128, + 15,254,0,3,248,0,27,41,164,28,1,0,1,240,0,0, + 1,240,0,0,0,248,0,0,0,120,0,0,0,60,0,0, + 0,28,0,0,0,14,0,0,0,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,63,128,0, + 0,127,128,0,0,127,128,0,0,127,192,0,0,255,192,0, + 0,255,224,0,0,255,224,0,1,251,224,0,1,243,240,0, + 3,243,240,0,3,241,240,0,3,225,248,0,7,225,248,0, + 7,224,248,0,7,192,252,0,15,192,252,0,15,192,126,0, + 15,128,126,0,31,255,254,0,31,255,255,0,63,255,255,0, + 63,255,255,0,63,255,255,128,126,0,31,128,126,0,31,128, + 126,0,15,192,252,0,15,192,252,0,7,192,248,0,7,224, + 27,41,164,28,1,0,0,3,240,0,0,3,224,0,0,3, + 192,0,0,7,128,0,0,7,0,0,0,15,0,0,0,14, + 0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,127, + 128,0,0,127,192,0,0,255,192,0,0,255,224,0,0,255, + 224,0,1,251,224,0,1,243,240,0,3,243,240,0,3,241, + 240,0,3,225,248,0,7,225,248,0,7,224,248,0,7,192, + 252,0,15,192,252,0,15,192,126,0,15,128,126,0,31,255, + 254,0,31,255,255,0,63,255,255,0,63,255,255,0,63,255, + 255,128,126,0,31,128,126,0,31,128,126,0,15,192,252,0, + 15,192,252,0,7,192,248,0,7,224,27,41,164,28,1,0, + 0,63,0,0,0,63,128,0,0,127,128,0,0,123,192,0, + 0,243,192,0,0,225,224,0,1,192,224,0,1,192,112,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0, + 0,63,128,0,0,127,128,0,0,127,128,0,0,127,192,0, + 0,255,192,0,0,255,224,0,0,255,224,0,1,251,224,0, + 1,243,240,0,3,243,240,0,3,241,240,0,3,225,248,0, + 7,225,248,0,7,224,248,0,7,192,252,0,15,192,252,0, + 15,192,126,0,15,128,126,0,31,255,254,0,31,255,255,0, + 63,255,255,0,63,255,255,0,63,255,255,128,126,0,31,128, + 126,0,31,128,126,0,15,192,252,0,15,192,252,0,7,192, + 248,0,7,224,27,39,156,28,1,0,0,120,112,0,0,255, + 224,0,1,255,224,0,1,255,192,0,1,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63, + 0,0,0,63,128,0,0,127,128,0,0,127,128,0,0,127, + 192,0,0,255,192,0,0,255,224,0,0,255,224,0,1,251, + 224,0,1,243,240,0,3,243,240,0,3,241,240,0,3,225, + 248,0,7,225,248,0,7,224,248,0,7,192,252,0,15,192, + 252,0,15,192,126,0,15,128,126,0,31,255,254,0,31,255, + 255,0,63,255,255,0,63,255,255,0,63,255,255,128,126,0, + 31,128,126,0,31,128,126,0,15,192,252,0,15,192,252,0, + 7,192,248,0,7,224,27,40,160,29,1,0,1,224,240,0, + 1,224,240,0,1,224,240,0,1,224,240,0,1,224,240,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,63,128,0,0,63,128,0,0,127,192,0, + 0,127,192,0,0,127,192,0,0,255,224,0,0,255,224,0, + 1,251,240,0,1,251,240,0,1,251,240,0,3,241,248,0, + 3,241,248,0,3,224,248,0,7,224,252,0,7,224,252,0, + 7,192,124,0,15,192,126,0,15,192,126,0,15,128,62,0, + 31,255,255,0,31,255,255,0,31,255,255,0,63,255,255,128, + 63,255,255,128,126,0,31,128,126,0,15,192,126,0,15,192, + 252,0,7,224,252,0,7,224,252,0,7,224,27,43,172,28, + 0,0,0,31,0,0,0,63,128,0,0,113,192,0,0,96, + 192,0,0,96,192,0,0,96,192,0,0,113,192,0,0,63, + 128,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,63,128,0,0,63,128,0,0,63, + 128,0,0,127,192,0,0,127,192,0,0,127,192,0,0,255, + 224,0,0,251,224,0,0,251,240,0,1,251,240,0,1,241, + 240,0,1,241,248,0,3,241,248,0,3,224,248,0,7,224, + 252,0,7,224,252,0,7,192,124,0,15,192,126,0,15,192, + 126,0,15,255,254,0,31,255,255,0,31,255,255,0,31,255, + 255,128,63,255,255,128,63,0,31,128,62,0,15,192,126,0, + 15,192,126,0,15,192,252,0,7,224,252,0,7,224,38,30, + 150,40,0,0,0,1,255,255,248,0,1,255,255,248,0,3, + 255,255,248,0,3,255,255,248,0,7,255,0,0,0,7,223, + 0,0,0,15,223,0,0,0,15,159,0,0,0,31,159,0, + 0,0,31,31,0,0,0,63,31,0,0,0,62,31,0,0, + 0,126,31,255,248,0,124,31,255,248,0,252,31,255,248,0, + 248,31,255,248,1,248,31,255,248,1,240,31,0,0,3,255, + 255,0,0,7,255,255,0,0,7,255,255,0,0,15,255,255, + 0,0,15,255,255,0,0,31,128,63,0,0,31,128,63,0, + 0,63,0,63,255,252,63,0,63,255,252,126,0,63,255,252, + 126,0,63,255,252,252,0,63,255,252,24,40,120,29,2,247, + 1,255,192,3,255,240,15,255,248,15,255,252,31,255,254,63, + 128,254,62,0,127,126,0,127,124,0,63,124,0,63,252,0, + 0,252,0,0,252,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,252,0,0,252,0,0,124,0,63,124, + 0,127,126,0,127,62,0,255,63,0,254,31,255,254,31,255, + 252,15,255,248,7,255,240,1,255,192,0,24,0,0,24,0, + 0,31,0,0,31,128,0,3,192,0,1,192,0,1,192,0, + 195,192,0,255,128,0,254,0,20,41,123,25,3,0,15,128, + 0,15,128,0,7,192,0,3,192,0,1,224,0,0,224,0, + 0,240,0,0,112,0,0,0,0,0,0,0,0,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,255,255,224,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,255,255,224,255,255,224,255,255,224,255, + 255,224,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,240,255,255,240, + 255,255,240,255,255,240,255,255,240,20,41,123,25,3,0,0, + 63,0,0,62,0,0,124,0,0,120,0,0,240,0,0,224, + 0,1,224,0,1,192,0,0,0,0,0,0,0,0,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,255,255,224,255,255,224,255,255,224, + 255,255,224,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,20,41,123,25,3,0, + 3,248,0,3,248,0,7,252,0,7,188,0,7,30,0,14, + 14,0,14,7,0,28,7,0,0,0,0,0,0,0,0,0, + 0,255,255,224,255,255,224,255,255,224,255,255,224,255,255,224, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,255,255,224,255,255,224,255,255, + 224,255,255,224,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,255,255,240,255, + 255,240,255,255,240,255,255,240,255,255,240,20,40,120,25,3, + 0,15,15,0,15,15,0,15,15,0,15,15,0,15,15,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,255,255,224,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,255,255,224,255,255,224,255,255,224,255, + 255,224,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,240,255,255,240, + 255,255,240,255,255,240,255,255,240,9,41,82,11,255,0,248, + 0,124,0,60,0,30,0,14,0,15,0,7,0,3,0,0, + 0,0,0,0,0,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,8,41,41,10,3,0,15,31,30,60,56,120,112,224,0, + 0,0,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 12,41,82,11,0,0,31,128,63,128,63,128,123,192,121,192, + 112,224,224,224,192,112,0,0,0,0,0,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,13,40,80,13,0,0,240,120, + 240,120,240,120,240,120,240,120,0,0,0,0,0,0,0,0, + 0,0,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,26,30, + 120,29,0,0,31,255,0,0,31,255,224,0,31,255,248,0, + 31,255,252,0,31,255,254,0,31,1,255,0,31,0,127,0, + 31,0,31,128,31,0,31,128,31,0,15,192,31,0,15,192, + 31,0,7,192,31,0,7,192,255,252,7,192,255,252,7,192, + 255,252,7,192,255,252,7,192,31,0,7,192,31,0,7,192, + 31,0,15,192,31,0,15,192,31,0,31,128,31,0,31,128, + 31,0,127,0,31,1,255,0,31,255,254,0,31,255,252,0, + 31,255,248,0,31,255,224,0,31,255,0,0,25,39,156,31, + 3,0,0,248,96,0,1,255,224,0,1,255,192,0,3,255, + 128,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,128,15,128,255,128,15,128,255,128, + 15,128,255,192,15,128,255,192,15,128,255,224,15,128,251,224, + 15,128,251,240,15,128,249,240,15,128,249,248,15,128,248,248, + 15,128,248,252,15,128,248,252,15,128,248,126,15,128,248,126, + 15,128,248,63,15,128,248,63,15,128,248,31,143,128,248,31, + 143,128,248,15,143,128,248,15,207,128,248,7,207,128,248,7, + 239,128,248,3,239,128,248,3,255,128,248,1,255,128,248,1, + 255,128,248,0,255,128,248,0,255,128,248,0,127,128,27,41, + 164,31,2,0,1,240,0,0,1,240,0,0,0,248,0,0, + 0,120,0,0,0,60,0,0,0,28,0,0,0,28,0,0, + 0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,255,224,0,3,255,248,0,7,255,252,0,15,255,254,0, + 31,255,255,0,63,192,127,128,63,0,31,128,127,0,31,192, + 126,0,15,192,126,0,15,192,252,0,15,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,15,224, + 126,0,15,192,126,0,15,192,127,0,31,192,63,0,31,128, + 63,192,127,128,31,255,255,0,15,255,254,0,7,255,252,0, + 3,255,248,0,0,255,224,0,27,41,164,31,2,0,0,1, + 240,0,0,1,224,0,0,3,224,0,0,3,192,0,0,7, + 128,0,0,7,0,0,0,14,0,0,0,14,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,224,0,3,255, + 248,0,7,255,252,0,15,255,254,0,31,255,255,0,63,192, + 127,128,63,0,31,128,127,0,31,192,126,0,15,192,126,0, + 15,192,252,0,15,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,15,224,126,0,15,192,126,0, + 15,192,127,0,31,192,63,0,31,128,63,192,127,128,31,255, + 255,0,15,255,254,0,7,255,252,0,3,255,248,0,0,255, + 224,0,27,41,164,31,2,0,0,63,0,0,0,63,128,0, + 0,63,128,0,0,123,192,0,0,113,192,0,0,240,224,0, + 0,224,224,0,1,192,112,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,224,0,3,255,248,0,7,255,252,0, + 15,255,254,0,31,255,255,0,63,192,127,128,63,0,31,128, + 127,0,31,192,126,0,15,192,126,0,15,192,252,0,15,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,15,224,126,0,15,192,126,0,15,192,127,0,31,192, + 63,0,31,128,63,192,127,128,31,255,255,0,15,255,254,0, + 7,255,252,0,3,255,248,0,0,255,224,0,27,40,160,31, + 2,0,0,0,48,0,0,124,112,0,0,255,224,0,0,255, + 224,0,1,255,192,0,1,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,224,0,3,255, + 248,0,7,255,252,0,15,255,254,0,31,255,255,0,63,192, + 127,128,63,0,31,128,127,0,31,192,126,0,15,192,126,0, + 15,192,252,0,15,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,15,224,126,0,15,192,126,0, + 15,192,127,0,31,192,63,0,31,128,63,192,127,128,31,255, + 255,0,15,255,254,0,7,255,252,0,3,255,248,0,0,255, + 224,0,27,40,160,31,2,0,0,240,240,0,0,240,240,0, + 0,240,240,0,0,240,240,0,0,240,240,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,255,224,0,3,255,248,0,7,255,252,0,15,255,254,0, + 31,255,255,0,63,192,127,128,63,0,31,128,127,0,31,192, + 126,0,15,192,126,0,15,192,252,0,15,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,7,224, + 252,0,7,224,252,0,7,224,252,0,7,224,252,0,15,224, + 126,0,15,192,126,0,15,192,127,0,31,192,63,0,31,128, + 63,192,127,128,31,255,255,0,15,255,254,0,7,255,252,0, + 3,255,248,0,0,255,224,0,22,22,66,40,9,1,96,0, + 24,240,0,60,112,0,56,56,0,112,28,0,224,14,1,192, + 7,3,128,3,135,0,1,206,0,0,252,0,0,120,0,0, + 120,0,0,252,0,1,206,0,3,135,0,7,3,128,14,1, + 192,28,0,224,56,0,112,112,0,56,96,0,24,64,0,8, + 29,34,136,31,1,254,0,0,0,16,0,0,0,56,0,127, + 240,120,1,255,252,240,3,255,255,240,7,255,255,224,15,255, + 255,192,31,224,63,192,31,128,15,192,63,128,31,224,63,0, + 63,224,63,0,127,224,126,0,251,240,126,1,243,240,126,1, + 227,240,126,3,195,240,126,7,131,240,126,15,3,240,126,30, + 3,240,126,60,3,240,126,124,3,240,126,248,7,240,63,240, + 7,224,63,224,7,224,63,192,15,224,31,128,15,192,31,224, + 63,192,31,255,255,128,63,255,255,0,127,255,254,0,249,255, + 252,0,240,127,240,0,224,0,0,0,64,0,0,0,24,41, + 123,30,3,0,7,192,0,3,224,0,1,224,0,1,240,0, + 0,240,0,0,120,0,0,56,0,0,28,0,0,0,0,0, + 0,0,0,0,0,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,252,0, + 31,252,0,31,252,0,63,124,0,63,126,0,126,127,0,254, + 63,255,252,31,255,252,31,255,248,7,255,224,1,255,192,24, + 41,123,30,3,0,0,3,224,0,3,224,0,7,192,0,15, + 128,0,15,0,0,30,0,0,28,0,0,56,0,0,0,0, + 0,0,0,0,0,0,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,252, + 0,31,252,0,31,252,0,63,124,0,63,126,0,126,127,0, + 254,63,255,252,31,255,252,31,255,248,7,255,224,1,255,192, + 24,41,123,30,3,0,0,126,0,0,255,0,0,255,0,1, + 247,128,1,231,128,3,195,192,3,129,192,7,0,224,0,0, + 0,0,0,0,0,0,0,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 252,0,31,252,0,31,252,0,63,124,0,63,126,0,126,127, + 0,254,63,255,252,31,255,252,31,255,248,7,255,224,1,255, + 192,24,40,120,30,3,0,3,193,224,3,193,224,3,193,224, + 3,193,224,3,193,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,0,31,252,0,31,252,0,31,252,0, + 31,252,0,31,252,0,31,252,0,31,252,0,31,252,0,31, + 252,0,31,252,0,31,252,0,31,252,0,31,252,0,31,252, + 0,31,252,0,31,252,0,31,252,0,31,252,0,31,252,0, + 31,252,0,31,254,0,63,126,0,63,127,0,126,127,128,254, + 63,255,252,31,255,252,31,255,248,7,255,224,1,255,192,24, + 41,123,25,1,0,0,7,192,0,15,128,0,15,0,0,14, + 0,0,30,0,0,28,0,0,56,0,0,0,0,0,0,0, + 0,0,0,0,0,0,252,0,127,254,0,126,126,0,254,127, + 0,252,63,1,252,63,1,248,31,131,248,31,131,240,15,195, + 240,15,199,224,7,231,224,7,239,192,3,255,192,3,255,128, + 1,255,128,1,255,0,0,255,0,0,254,0,0,126,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 21,30,90,26,2,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,252,0,255,255,128,255,255,192,255,255, + 224,255,255,240,248,7,240,248,1,248,248,1,248,248,0,248, + 248,0,248,248,1,248,248,1,248,248,7,240,255,255,240,255, + 255,224,255,255,192,255,255,128,255,252,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 21,30,90,24,2,1,15,252,0,63,255,0,127,255,128,126, + 31,192,252,15,192,252,7,192,248,7,192,248,15,192,248,15, + 128,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 248,248,0,248,252,0,248,254,0,248,127,128,248,63,192,248, + 31,224,248,7,240,248,3,240,248,1,248,248,1,248,251,224, + 248,251,225,248,251,241,248,249,255,240,249,255,224,248,255,192, + 19,32,96,22,2,0,31,0,0,31,0,0,15,128,0,7, + 128,0,3,192,0,1,192,0,1,224,0,0,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,15,254,0,31,255,0, + 63,255,128,126,15,128,124,15,192,0,7,192,0,127,192,15, + 255,192,63,255,192,127,255,192,127,7,192,252,7,192,252,7, + 192,248,15,192,248,15,192,252,15,192,254,31,192,127,255,192, + 63,247,192,31,227,224,19,32,96,22,2,0,0,31,0,0, + 62,0,0,60,0,0,120,0,0,120,0,0,240,0,0,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,31,255,0,63,255,128,126,15,128,124,15,192,0, + 7,192,0,127,192,15,255,192,63,255,192,127,255,192,127,7, + 192,252,7,192,252,7,192,248,15,192,248,15,192,252,15,192, + 254,31,192,127,255,192,63,247,192,31,227,224,19,32,96,22, + 2,0,3,240,0,3,248,0,7,248,0,7,188,0,15,28, + 0,14,30,0,28,14,0,28,7,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,254,0,31,255,0,63,255,128,126, + 15,128,124,15,192,0,7,192,0,127,192,15,255,192,63,255, + 192,127,255,192,127,7,192,252,7,192,252,7,192,248,15,192, + 248,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 227,224,19,30,90,22,2,0,7,135,0,15,254,0,15,254, + 0,31,252,0,24,16,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,254,0,31,255,0,63,255,128,126, + 15,128,124,15,192,0,7,192,0,127,192,15,255,192,63,255, + 192,127,255,192,127,7,192,252,7,192,252,7,192,248,15,192, + 248,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 227,224,19,31,93,23,2,0,30,30,0,30,30,0,30,30, + 0,30,30,0,30,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,15,254,0,31,255,0,63, + 255,128,126,15,128,124,15,192,0,7,192,0,127,192,15,255, + 192,63,255,192,127,255,192,127,7,192,252,7,192,252,7,192, + 248,15,192,248,15,192,252,15,192,254,31,192,127,255,192,63, + 247,192,31,231,224,19,34,102,22,2,0,1,240,0,3,248, + 0,7,28,0,6,12,0,6,12,0,6,12,0,7,28,0, + 3,248,0,1,240,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,254,0,31,255,0,63,255,128,126,15, + 128,124,15,192,0,7,192,0,127,192,15,255,192,63,255,192, + 127,255,192,127,7,192,252,7,192,252,7,192,248,15,192,248, + 15,192,252,15,192,254,31,192,127,255,192,63,247,192,31,231, + 224,32,20,80,36,2,1,15,252,31,224,31,254,127,248,63, + 255,127,252,126,15,240,126,124,7,224,62,0,7,224,62,0, + 7,192,31,7,255,255,255,31,255,255,255,63,255,255,255,127, + 255,255,255,252,7,192,0,252,7,224,0,248,7,224,0,248, + 15,224,63,252,15,240,62,254,30,248,126,127,252,127,252,63, + 248,63,248,31,224,31,240,17,30,90,21,2,247,15,252,0, + 31,254,0,63,255,0,126,63,0,124,31,128,124,31,128,252, + 15,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,252,15,128,252,31,128,124,31,128,126,63,0, + 63,255,0,31,254,0,15,252,0,1,128,0,1,128,0,1, + 224,0,1,248,0,0,60,0,0,28,0,0,28,0,6,60, + 0,7,248,0,7,224,0,19,32,96,22,2,0,31,0,0, + 31,0,0,15,128,0,7,128,0,3,192,0,1,192,0,0, + 224,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0, + 0,7,252,0,31,255,0,63,255,0,62,31,128,124,15,192, + 124,7,192,252,7,192,255,255,192,255,255,192,255,255,224,255, + 255,224,248,0,0,248,0,0,252,0,0,124,7,192,124,15, + 192,126,31,128,63,255,128,31,255,0,7,252,0,19,32,96, + 22,2,0,0,31,0,0,62,0,0,60,0,0,120,0,0, + 120,0,0,240,0,0,224,0,1,192,0,0,0,0,0,0, + 0,0,0,0,0,0,0,7,252,0,31,255,0,63,255,0, + 62,31,128,124,15,192,124,7,192,252,7,192,255,255,192,255, + 255,192,255,255,224,255,255,224,248,0,0,248,0,0,252,0, + 0,124,7,192,124,15,192,126,31,128,63,255,128,31,255,0, + 7,252,0,19,32,96,22,2,0,3,240,0,3,248,0,7, + 248,0,7,188,0,15,28,0,14,30,0,28,14,0,28,7, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,252,0, + 31,255,0,63,255,0,62,31,128,124,15,192,124,7,192,252, + 7,192,255,255,192,255,255,192,255,255,224,255,255,224,248,0, + 0,248,0,0,252,0,0,124,7,192,124,15,192,126,31,128, + 63,255,128,31,255,0,7,252,0,19,31,93,22,2,0,30, + 30,0,30,30,0,30,30,0,30,30,0,30,30,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 15,192,252,15,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,15,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,8,32,32,11, + 0,0,248,120,124,60,30,14,7,7,0,0,0,0,31,31, + 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31, + 31,31,9,32,64,10,2,0,15,128,31,0,30,0,62,0, + 60,0,120,0,112,0,224,0,0,0,0,0,0,0,0,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,13,32,64,11,255,0,15,192, + 31,192,31,224,61,224,56,240,120,112,112,56,224,56,0,0, + 0,0,0,0,0,0,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,13,31, + 62,11,255,0,240,120,240,120,240,120,240,120,240,120,0,0, + 0,0,0,0,0,0,0,0,0,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,20,31,93,24,2,0,0,0,96,7,193,224,3,247, + 224,1,255,128,0,254,0,0,254,0,3,254,0,15,159,0, + 30,15,128,24,15,128,0,7,192,7,255,192,15,255,224,63, + 255,224,63,15,240,126,3,240,124,3,240,252,1,240,252,1, + 240,252,1,240,248,1,240,248,1,240,252,1,240,252,1,240, + 252,1,240,124,3,240,126,3,224,63,15,224,31,255,192,15, + 255,128,7,254,0,18,30,90,24,3,0,7,134,0,15,254, + 0,15,254,0,31,252,0,24,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,32,96,24,2,0,15,128,0,7,128, + 0,7,192,0,3,192,0,1,224,0,0,224,0,0,112,0, + 0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 254,0,15,255,0,31,255,192,63,15,192,126,3,224,124,3, + 240,252,1,240,252,1,240,252,1,240,248,1,240,248,1,240, + 248,1,240,252,1,240,252,1,240,124,3,240,126,3,224,63, + 15,192,31,255,192,15,255,0,3,254,0,20,32,96,24,2, + 0,0,15,128,0,31,0,0,30,0,0,60,0,0,56,0, + 0,120,0,0,112,0,0,224,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,254,0,15,255,0,31,255,192,63,15, + 192,126,3,224,124,3,240,252,1,240,252,1,240,252,1,240, + 248,1,240,248,1,240,248,1,240,252,1,240,252,1,240,124, + 3,240,126,3,224,63,15,192,31,255,192,15,255,0,3,254, + 0,20,32,96,24,2,0,1,248,0,1,252,0,3,252,0, + 3,222,0,7,158,0,7,15,0,14,7,0,14,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,31,93,24,2,0,0,1,128, + 3,195,0,7,255,0,7,255,0,15,254,0,12,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,254, + 0,15,255,0,31,255,192,63,15,192,126,3,224,124,3,240, + 252,1,240,252,1,240,252,1,240,248,1,240,248,1,240,248, + 1,240,252,1,240,252,1,240,124,3,240,126,3,224,63,15, + 192,31,255,192,15,255,0,3,254,0,20,31,93,24,2,0, + 15,7,128,15,7,128,15,7,128,15,7,128,15,7,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,3,254,0,15,255,0,31,255,192,63,15,192,126,3,224, + 124,3,240,252,1,240,252,1,240,252,1,240,248,1,240,248, + 1,240,248,1,240,252,1,240,252,1,240,124,3,240,126,3, + 224,63,15,192,31,255,192,15,255,0,3,254,0,24,19,57, + 40,8,2,0,16,0,0,56,0,0,124,0,0,124,0,0, + 124,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,56,0, + 0,124,0,0,124,0,0,124,0,0,56,0,21,26,78,24, + 1,254,0,0,56,0,0,120,0,0,112,1,255,224,7,255, + 224,15,255,224,31,135,224,63,7,240,62,15,248,126,14,248, + 126,28,248,126,56,248,124,120,248,124,112,248,126,224,248,127, + 192,248,63,193,248,63,129,248,63,3,240,31,135,224,31,255, + 224,31,255,192,57,255,0,120,0,0,240,0,0,96,0,0, + 18,32,96,24,3,0,31,0,0,15,0,0,15,128,0,7, + 128,0,3,192,0,1,192,0,0,224,0,0,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,252,7,192,252,15,192,252,15,192,254,31,192,127,255,192, + 63,247,192,31,231,192,18,32,96,24,3,0,0,62,0,0, + 60,0,0,124,0,0,120,0,0,240,0,0,224,0,1,224, + 0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,0, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,252,7,192,252,15,192,252,15,192, + 254,31,192,127,255,192,63,247,192,31,231,192,18,32,96,24, + 3,0,3,240,0,3,248,0,7,248,0,7,188,0,15,60, + 0,14,30,0,30,14,0,28,6,0,0,0,0,0,0,0, + 0,0,0,0,0,0,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,252,15,192,254,31,192,127,255,192,63,247,192,31, + 231,192,18,31,93,24,3,0,30,30,0,30,30,0,30,30, + 0,30,30,0,30,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 252,7,192,252,15,192,252,15,192,254,31,192,127,255,192,63, + 247,192,31,231,192,21,41,123,22,1,248,0,7,192,0,15, + 128,0,15,0,0,30,0,0,30,0,0,60,0,0,56,0, + 0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,252,1,248,252,3,240,126,3,240,126,3,224,63,7, + 224,63,7,224,63,7,192,31,143,192,31,143,192,15,143,128, + 15,223,128,15,223,128,7,223,0,7,255,0,3,255,0,3, + 254,0,3,254,0,1,252,0,1,252,0,0,252,0,0,248, + 0,1,248,0,33,248,0,115,240,0,255,240,0,255,224,0, + 127,192,0,31,128,0,20,38,114,25,3,248,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,249,254,0,251,255,128, + 251,255,192,255,15,192,254,7,224,252,3,224,252,3,240,252, + 3,240,252,3,240,248,1,240,248,1,240,252,3,240,252,3, + 240,252,3,240,252,3,224,254,7,224,255,15,192,255,255,192, + 251,255,128,249,254,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,21,39, + 117,21,0,248,15,7,128,15,7,128,15,7,128,15,7,128, + 15,7,128,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,1,248,252,1,248,126,1,240,126,3, + 240,63,3,224,63,3,224,63,7,224,31,135,192,31,143,192, + 15,207,192,15,207,128,15,223,128,7,255,128,7,255,0,3, + 255,0,3,255,0,3,254,0,1,254,0,1,252,0,0,252, + 0,0,252,0,1,248,0,1,248,0,1,248,0,3,240,0, + 3,240,0,7,240,0,7,224,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 30 + Calculated Max Values w=24 h=32 x= 8 y=14 dx=40 dy= 0 ascent=31 len=90 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =30 descent= 0 + X Font ascent =30 descent= 0 + Max Font ascent =31 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30n[1179] U8G_SECTION(".progmem.u8g_font_fub30n") = { + 0,59,54,253,245,30,0,0,0,0,42,57,0,31,251,30, + 0,16,16,32,26,5,14,4,32,28,56,30,120,30,120,15, + 240,7,224,227,199,255,255,255,255,243,207,7,224,15,240,30, + 120,30,120,28,56,4,32,24,25,75,40,8,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,255,255, + 255,255,255,255,255,255,255,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,8,10,10,12,2,251,31,31, + 62,62,60,124,120,120,240,240,10,5,10,14,2,8,255,192, + 255,192,255,192,255,192,255,192,5,5,5,12,4,0,248,248, + 248,248,248,13,32,64,17,2,254,0,120,0,120,0,120,0, + 240,0,240,0,240,1,224,1,224,1,224,3,192,3,192,3, + 192,3,192,7,128,7,128,7,128,15,0,15,0,15,0,14, + 0,30,0,30,0,30,0,60,0,60,0,60,0,120,0,120, + 0,120,0,120,0,240,0,240,0,20,30,90,23,1,1,3, + 252,0,15,255,0,31,255,128,63,15,128,62,7,192,124,3, + 192,124,3,224,124,3,224,124,3,224,248,1,240,248,1,240, + 248,1,240,248,1,240,248,1,240,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,124,3, + 224,124,3,224,124,3,224,124,3,224,62,7,192,63,15,128, + 31,255,128,15,255,0,3,252,0,12,30,60,23,4,0,1, + 240,3,240,15,240,63,240,255,240,255,240,253,240,249,240,225, + 240,129,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,20,30,90,23,1, + 1,3,255,0,7,255,128,31,255,192,31,255,224,63,255,240, + 63,3,240,126,1,240,126,1,240,124,1,240,0,1,240,0, + 3,240,0,3,240,0,7,224,0,15,224,0,15,192,0,31, + 128,0,63,0,0,254,0,1,252,0,3,248,0,7,240,0, + 15,224,0,63,128,0,127,0,0,252,0,0,255,255,240,255, + 255,240,255,255,240,255,255,240,255,255,240,19,30,90,23,2, + 1,7,252,0,31,255,0,63,255,128,127,255,128,127,255,192, + 252,15,192,252,7,192,248,7,192,0,7,192,0,7,192,0, + 15,192,0,63,192,3,255,128,3,254,0,3,252,0,3,255, + 0,3,255,128,0,31,192,0,7,224,0,7,224,0,7,224, + 0,3,224,248,7,224,252,7,224,252,7,192,126,15,192,127, + 255,128,63,255,128,31,255,0,15,252,0,21,30,90,23,1, + 0,0,63,128,0,63,128,0,127,128,0,255,128,0,255,128, + 1,255,128,1,255,128,3,239,128,3,207,128,7,207,128,15, + 143,128,15,143,128,31,15,128,31,15,128,62,15,128,62,15, + 128,124,15,128,252,15,128,248,15,128,255,255,248,255,255,248, + 255,255,248,255,255,248,255,255,248,0,15,128,0,15,128,0, + 15,128,0,15,128,0,15,128,0,15,128,19,30,90,23,2, + 0,127,255,192,127,255,192,127,255,192,127,255,192,127,255,192, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,252,0,125,255,0,127,255,128,127,255,192,127,15, + 224,126,7,224,124,3,224,0,3,224,0,3,224,0,3,224, + 0,3,224,0,3,224,248,7,224,252,7,224,252,15,192,127, + 255,128,127,255,128,63,254,0,15,252,0,20,30,90,23,1, + 1,3,254,0,7,255,0,15,255,128,31,255,192,63,255,192, + 63,7,224,126,3,224,126,3,224,124,0,0,124,0,0,252, + 0,0,248,0,0,249,255,0,251,255,128,255,255,192,255,15, + 224,254,7,224,254,3,240,252,3,240,252,3,240,252,1,240, + 252,1,240,124,3,240,124,3,240,126,3,224,63,7,224,63, + 255,192,31,255,128,15,255,0,3,254,0,19,30,90,23,2, + 0,255,255,224,255,255,224,255,255,224,255,255,224,255,255,224, + 0,7,224,0,7,224,0,7,192,0,15,192,0,15,192,0, + 31,128,0,31,128,0,63,0,0,63,0,0,63,0,0,126, + 0,0,126,0,0,252,0,0,252,0,1,252,0,1,248,0, + 1,248,0,3,240,0,3,240,0,7,240,0,7,224,0,15, + 224,0,15,192,0,15,192,0,31,192,0,20,30,90,23,1, + 1,7,254,0,31,255,128,63,255,192,127,255,224,127,255,224, + 126,7,224,124,3,224,124,3,224,124,3,224,124,3,224,126, + 7,224,127,15,192,63,255,128,15,255,0,7,252,0,31,255, + 0,63,255,192,127,15,224,124,7,224,252,3,240,252,3,240, + 248,1,240,248,3,240,252,3,240,252,3,240,254,7,240,127, + 255,224,63,255,192,31,255,128,15,255,0,20,30,90,23,1, + 1,3,252,0,15,255,0,31,255,128,63,255,192,127,255,192, + 126,7,224,252,7,224,252,3,224,252,3,240,248,3,240,248, + 3,240,252,3,240,252,7,240,124,7,240,127,15,240,63,255, + 240,63,253,240,31,249,240,7,225,240,0,3,240,0,3,224, + 0,3,224,0,3,224,124,7,224,124,7,192,126,15,192,63, + 255,128,31,255,0,15,254,0,7,252,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--40-400-72-72-P-198-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=38 h=43 x=10 y=25 dx=42 dy= 0 ascent=33 len=195 + Font Bounding box w=59 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =33 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub30r[7686] U8G_SECTION(".progmem.u8g_font_fub30r") = { + 0,59,54,253,245,30,9,163,21,182,32,127,249,33,245,31, + 248,0,0,0,12,0,0,5,30,30,16,5,0,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,0,0,0,248,248,248,248,248,15,12,24,21,3, + 18,252,126,252,126,252,126,252,126,248,126,248,126,248,60,248, + 60,120,60,120,60,120,60,120,60,25,30,120,29,2,0,0, + 60,30,0,0,60,30,0,0,120,60,0,0,120,60,0,0, + 120,60,0,0,120,120,0,0,240,120,0,0,240,120,0,15, + 255,255,128,31,255,255,0,31,255,255,0,31,255,255,0,1, + 224,224,0,3,193,224,0,3,193,224,0,3,193,224,0,7, + 131,192,0,7,131,192,0,127,255,252,0,255,255,248,0,255, + 255,248,0,255,255,248,0,15,7,128,0,30,15,0,0,30, + 15,0,0,30,15,0,0,62,30,0,0,60,30,0,0,60, + 30,0,0,60,30,0,0,21,37,111,23,1,252,0,96,0, + 0,96,0,0,96,0,3,254,0,15,255,128,31,255,192,63, + 255,224,127,111,224,126,99,240,124,99,240,124,97,240,124,96, + 0,124,96,0,126,96,0,127,224,0,127,240,0,63,254,0, + 31,255,128,7,255,224,0,255,240,0,127,240,0,103,248,0, + 97,248,248,97,248,248,96,248,252,97,248,252,97,248,126,99, + 240,127,255,240,63,255,224,31,255,192,15,255,128,3,254,0, + 0,96,0,0,96,0,0,96,0,0,96,0,37,30,150,41, + 2,0,7,224,0,120,0,31,248,0,240,0,63,252,0,240, + 0,124,62,1,224,0,120,30,3,224,0,240,15,3,192,0, + 240,15,7,192,0,240,15,7,128,0,240,15,15,0,0,240, + 15,15,0,0,240,15,30,0,0,240,15,30,0,0,120,30, + 60,0,0,124,62,124,0,0,63,252,120,63,0,31,248,248, + 255,192,7,224,241,255,224,0,1,227,225,240,0,1,227,192, + 240,0,3,199,128,120,0,3,199,128,120,0,7,135,128,120, + 0,7,135,128,120,0,15,7,128,120,0,31,7,128,120,0, + 30,3,192,240,0,62,3,192,240,0,60,1,243,224,0,120, + 1,255,192,0,120,0,127,128,28,30,120,31,2,1,3,255, + 0,0,15,255,128,0,31,255,192,0,63,143,224,0,63,7, + 224,0,62,3,224,0,63,7,224,0,63,7,224,0,31,15, + 192,0,31,159,192,0,15,255,128,0,15,255,0,0,7,252, + 0,0,15,248,0,0,31,248,15,128,63,252,15,128,63,126, + 15,128,126,127,15,128,126,63,143,128,252,31,207,128,252,15, + 255,0,248,7,255,0,248,3,255,0,252,1,254,0,252,0, + 254,0,126,0,254,0,127,131,255,0,63,255,255,128,31,255, + 255,224,7,255,135,240,6,12,12,16,5,18,252,252,252,124, + 124,124,124,124,120,120,120,120,9,36,72,16,4,251,15,128, + 31,0,31,0,31,0,62,0,62,0,62,0,126,0,124,0, + 124,0,124,0,124,0,252,0,252,0,252,0,252,0,248,0, + 248,0,248,0,248,0,248,0,252,0,252,0,252,0,124,0, + 124,0,124,0,124,0,126,0,62,0,62,0,62,0,31,0, + 31,0,31,0,15,128,8,36,36,16,4,251,240,248,120,124, + 124,124,62,62,62,63,63,31,31,31,31,31,31,31,31,31, + 31,31,31,31,63,63,63,62,62,62,124,124,124,248,248,240, + 16,16,32,26,5,14,4,32,28,56,30,120,30,120,15,240, + 7,224,227,199,255,255,255,255,243,207,7,224,15,240,30,120, + 30,120,28,56,4,32,24,25,75,40,8,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,255,255,255, + 255,255,255,255,255,255,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,8,10,10,12,2,251,31,31,62, + 62,60,124,120,120,240,240,10,5,10,14,2,8,255,192,255, + 192,255,192,255,192,255,192,5,5,5,12,4,0,248,248,248, + 248,248,13,32,64,17,2,254,0,120,0,120,0,120,0,240, + 0,240,0,240,1,224,1,224,1,224,3,192,3,192,3,192, + 3,192,7,128,7,128,7,128,15,0,15,0,15,0,14,0, + 30,0,30,0,30,0,60,0,60,0,60,0,120,0,120,0, + 120,0,120,0,240,0,240,0,20,30,90,23,1,1,3,252, + 0,15,255,0,31,255,128,63,15,128,62,7,192,124,3,192, + 124,3,224,124,3,224,124,3,224,248,1,240,248,1,240,248, + 1,240,248,1,240,248,1,240,248,1,240,248,1,240,248,1, + 240,248,1,240,248,1,240,248,1,240,248,1,240,124,3,224, + 124,3,224,124,3,224,124,3,224,62,7,192,63,15,128,31, + 255,128,15,255,0,3,252,0,12,30,60,23,4,0,1,240, + 3,240,15,240,63,240,255,240,255,240,253,240,249,240,225,240, + 129,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,20,30,90,23,1,1, + 3,255,0,7,255,128,31,255,192,31,255,224,63,255,240,63, + 3,240,126,1,240,126,1,240,124,1,240,0,1,240,0,3, + 240,0,3,240,0,7,224,0,15,224,0,15,192,0,31,128, + 0,63,0,0,254,0,1,252,0,3,248,0,7,240,0,15, + 224,0,63,128,0,127,0,0,252,0,0,255,255,240,255,255, + 240,255,255,240,255,255,240,255,255,240,19,30,90,23,2,1, + 7,252,0,31,255,0,63,255,128,127,255,128,127,255,192,252, + 15,192,252,7,192,248,7,192,0,7,192,0,7,192,0,15, + 192,0,63,192,3,255,128,3,254,0,3,252,0,3,255,0, + 3,255,128,0,31,192,0,7,224,0,7,224,0,7,224,0, + 3,224,248,7,224,252,7,224,252,7,192,126,15,192,127,255, + 128,63,255,128,31,255,0,15,252,0,21,30,90,23,1,0, + 0,63,128,0,63,128,0,127,128,0,255,128,0,255,128,1, + 255,128,1,255,128,3,239,128,3,207,128,7,207,128,15,143, + 128,15,143,128,31,15,128,31,15,128,62,15,128,62,15,128, + 124,15,128,252,15,128,248,15,128,255,255,248,255,255,248,255, + 255,248,255,255,248,255,255,248,0,15,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,19,30,90,23,2,0, + 127,255,192,127,255,192,127,255,192,127,255,192,127,255,192,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,252,0,125,255,0,127,255,128,127,255,192,127,15,224, + 126,7,224,124,3,224,0,3,224,0,3,224,0,3,224,0, + 3,224,0,3,224,248,7,224,252,7,224,252,15,192,127,255, + 128,127,255,128,63,254,0,15,252,0,20,30,90,23,1,1, + 3,254,0,7,255,0,15,255,128,31,255,192,63,255,192,63, + 7,224,126,3,224,126,3,224,124,0,0,124,0,0,252,0, + 0,248,0,0,249,255,0,251,255,128,255,255,192,255,15,224, + 254,7,224,254,3,240,252,3,240,252,3,240,252,1,240,252, + 1,240,124,3,240,124,3,240,126,3,224,63,7,224,63,255, + 192,31,255,128,15,255,0,3,254,0,19,30,90,23,2,0, + 255,255,224,255,255,224,255,255,224,255,255,224,255,255,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,31, + 128,0,31,128,0,63,0,0,63,0,0,63,0,0,126,0, + 0,126,0,0,252,0,0,252,0,1,252,0,1,248,0,1, + 248,0,3,240,0,3,240,0,7,240,0,7,224,0,15,224, + 0,15,192,0,15,192,0,31,192,0,20,30,90,23,1,1, + 7,254,0,31,255,128,63,255,192,127,255,224,127,255,224,126, + 7,224,124,3,224,124,3,224,124,3,224,124,3,224,126,7, + 224,127,15,192,63,255,128,15,255,0,7,252,0,31,255,0, + 63,255,192,127,15,224,124,7,224,252,3,240,252,3,240,248, + 1,240,248,3,240,252,3,240,252,3,240,254,7,240,127,255, + 224,63,255,192,31,255,128,15,255,0,20,30,90,23,1,1, + 3,252,0,15,255,0,31,255,128,63,255,192,127,255,192,126, + 7,224,252,7,224,252,3,224,252,3,240,248,3,240,248,3, + 240,252,3,240,252,7,240,124,7,240,127,15,240,63,255,240, + 63,253,240,31,249,240,7,225,240,0,3,240,0,3,224,0, + 3,224,0,3,224,124,7,224,124,7,192,126,15,192,63,255, + 128,31,255,0,15,254,0,7,252,0,5,20,20,12,5,0, + 248,248,248,248,248,0,0,0,0,0,0,0,0,0,0,248, + 248,248,248,248,9,25,50,13,2,251,31,0,31,0,31,0, + 31,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,31,128,31,0,63,0,62,0, + 62,0,124,0,124,0,120,0,248,0,240,0,24,21,63,40, + 8,2,0,0,1,0,0,15,0,0,63,0,1,252,0,7, + 224,0,63,0,0,252,0,7,224,0,63,0,0,252,0,0, + 224,0,0,248,0,0,126,0,0,15,192,0,3,240,0,0, + 126,0,0,31,192,0,3,240,0,0,126,0,0,31,0,0, + 3,24,10,30,40,8,7,255,255,255,255,255,255,255,255,255, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,255,255,255,255,24,21,63,40,8,2,128,0,0,240,0, + 0,252,0,0,63,128,0,7,224,0,0,252,0,0,63,0, + 0,7,224,0,0,252,0,0,63,0,0,7,0,0,31,0, + 0,126,0,3,240,0,15,192,0,126,0,3,248,0,15,192, + 0,126,0,0,248,0,0,192,0,0,18,30,90,22,1,1, + 7,252,0,31,254,0,63,255,128,127,255,128,252,15,192,120, + 7,192,56,7,192,0,7,192,0,7,192,0,15,192,0,15, + 128,0,31,128,0,63,0,0,126,0,0,248,0,1,240,0, + 3,224,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,0,0,0,0,0,0,0,0,0,3,224,0,3,224, + 0,3,224,0,3,224,0,3,224,0,38,39,195,42,2,248, + 0,3,255,224,0,0,31,255,248,0,0,127,255,254,0,0, + 255,255,255,0,3,255,255,255,128,7,254,0,127,192,7,248, + 0,31,224,15,224,0,15,240,31,192,0,7,240,63,128,0, + 3,248,63,1,241,241,248,63,7,253,241,252,126,15,255,240, + 252,126,31,255,240,252,124,31,135,240,252,252,63,3,240,124, + 252,63,3,240,124,252,62,1,240,124,252,62,1,240,124,248, + 62,1,240,124,248,62,1,240,124,248,62,1,240,124,252,62, + 1,240,124,252,63,3,240,252,124,63,3,248,248,124,31,135, + 249,248,126,31,255,255,240,63,15,254,255,224,63,7,252,127, + 192,31,129,248,31,0,31,192,0,0,0,15,224,0,0,0, + 7,248,0,0,0,3,254,0,56,0,1,255,255,248,0,0, + 255,255,248,0,0,63,255,248,0,0,15,255,248,0,0,1, + 255,224,0,27,30,120,28,1,0,0,63,0,0,0,63,128, + 0,0,127,128,0,0,127,128,0,0,127,192,0,0,255,192, + 0,0,255,224,0,0,255,224,0,1,251,224,0,1,243,240, + 0,3,243,240,0,3,241,240,0,3,225,248,0,7,225,248, + 0,7,224,248,0,7,192,252,0,15,192,252,0,15,192,126, + 0,15,128,126,0,31,255,254,0,31,255,255,0,63,255,255, + 0,63,255,255,0,63,255,255,128,126,0,31,128,126,0,31, + 128,126,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 224,22,30,90,27,3,0,255,254,0,255,255,128,255,255,224, + 255,255,224,255,255,240,248,7,240,248,3,240,248,1,240,248, + 1,240,248,1,240,248,3,240,248,7,224,255,255,192,255,255, + 128,255,254,0,255,255,192,255,255,240,248,3,248,248,1,248, + 248,0,252,248,0,252,248,0,252,248,0,252,248,1,252,248, + 3,252,255,255,248,255,255,240,255,255,224,255,255,192,255,255, + 0,24,30,90,29,2,1,1,255,192,3,255,240,15,255,248, + 15,255,252,31,255,254,63,128,254,62,0,127,126,0,63,124, + 0,63,124,0,63,252,0,0,252,0,0,252,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,252,0,0, + 252,0,0,124,0,63,124,0,63,126,0,127,62,0,127,63, + 128,254,31,255,254,31,255,252,15,255,248,7,255,224,1,255, + 192,24,30,90,29,3,0,255,248,0,255,255,0,255,255,192, + 255,255,224,255,255,240,248,15,248,248,1,252,248,0,252,248, + 0,126,248,0,126,248,0,62,248,0,63,248,0,63,248,0, + 63,248,0,31,248,0,31,248,0,63,248,0,63,248,0,63, + 248,0,63,248,0,126,248,0,126,248,0,252,248,1,252,248, + 15,248,255,255,240,255,255,224,255,255,192,255,255,0,255,248, + 0,20,30,90,25,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,255,255,240,255,255,240,255,255,240,255,255,240,255,255, + 240,19,30,90,24,3,0,255,255,224,255,255,224,255,255,224, + 255,255,224,255,255,224,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,26,30,120,30,2,1,0,127,240,0,1,255,252,0,3, + 255,254,0,15,255,255,0,15,255,255,128,31,192,63,128,63, + 128,15,192,63,0,15,192,126,0,15,192,126,0,7,192,124, + 0,0,0,252,0,0,0,252,0,0,0,252,0,0,0,248, + 1,255,192,248,1,255,192,248,1,255,192,252,1,255,192,252, + 1,255,192,252,0,7,192,124,0,7,192,126,0,7,192,127, + 0,7,192,63,128,7,192,63,224,7,192,31,255,255,192,15, + 255,255,192,7,255,255,192,1,255,255,192,0,127,254,0,23, + 30,90,29,3,0,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,255,255,254,255,255,254,255, + 255,254,255,255,254,255,255,254,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,5, + 30,30,11,3,0,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,20,30,90,25,2,0,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,248,1,240,248,3,240,252,3,240,252,3, + 240,254,7,224,127,255,224,127,255,192,63,255,128,31,255,0, + 15,254,0,23,30,90,27,3,0,248,1,248,248,3,248,248, + 7,240,248,15,224,248,15,192,248,31,192,248,63,128,248,127, + 0,248,126,0,248,254,0,249,252,0,251,248,0,251,240,0, + 255,240,0,255,240,0,251,248,0,249,252,0,249,254,0,248, + 254,0,248,127,0,248,127,128,248,63,128,248,31,192,248,31, + 224,248,15,224,248,7,240,248,7,248,248,3,248,248,1,252, + 248,0,254,19,30,90,23,3,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,224,255,255,224,255,255,224,255,255,224, + 255,255,224,31,30,120,37,3,0,255,192,3,254,255,192,3, + 254,255,192,7,254,255,192,7,254,255,224,7,254,251,224,15, + 254,251,224,15,254,251,240,15,190,251,240,15,190,249,240,31, + 190,249,240,31,62,249,248,31,62,248,248,63,62,248,248,63, + 62,248,252,62,62,248,124,126,62,248,124,126,62,248,126,124, + 62,248,126,124,62,248,62,252,62,248,62,248,62,248,63,248, + 62,248,31,248,62,248,31,248,62,248,31,240,62,248,31,240, + 62,248,15,240,62,248,15,224,62,248,15,224,62,248,7,224, + 62,25,30,120,31,3,0,255,128,15,128,255,128,15,128,255, + 128,15,128,255,192,15,128,255,192,15,128,255,224,15,128,251, + 224,15,128,251,240,15,128,249,240,15,128,249,248,15,128,248, + 248,15,128,248,252,15,128,248,252,15,128,248,126,15,128,248, + 126,15,128,248,63,15,128,248,63,15,128,248,31,143,128,248, + 31,143,128,248,15,143,128,248,15,207,128,248,7,207,128,248, + 7,239,128,248,3,239,128,248,3,255,128,248,1,255,128,248, + 1,255,128,248,0,255,128,248,0,255,128,248,0,127,128,27, + 30,120,31,2,1,0,255,224,0,3,255,248,0,7,255,252, + 0,15,255,254,0,31,255,255,0,63,192,127,128,63,0,31, + 128,127,0,31,192,126,0,15,192,126,0,15,192,252,0,15, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,15,224,126,0,15,192,126,0,15,192,127,0,31, + 192,63,0,31,128,63,192,127,128,31,255,255,0,15,255,254, + 0,7,255,252,0,3,255,248,0,0,255,224,0,21,30,90, + 26,3,0,255,252,0,255,255,128,255,255,192,255,255,224,255, + 255,240,248,7,240,248,3,248,248,1,248,248,1,248,248,0, + 248,248,1,248,248,1,248,248,1,248,248,7,240,255,255,240, + 255,255,224,255,255,192,255,255,128,255,252,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,30,30,120, + 33,2,1,0,255,224,0,3,255,248,0,7,255,252,0,15, + 255,254,0,31,255,255,0,63,192,127,128,63,0,31,128,127, + 0,31,192,126,0,15,192,126,0,15,192,252,0,15,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,192,126,0,15,192,126,0,15,192,127,0,31,128,63, + 0,31,128,63,192,127,0,31,255,254,252,15,255,255,252,7, + 255,255,252,3,255,255,252,0,255,255,252,23,30,90,27,3, + 0,255,255,0,255,255,224,255,255,240,255,255,248,255,255,248, + 248,3,252,248,1,252,248,0,252,248,0,124,248,0,124,248, + 0,252,248,1,248,248,7,240,255,255,224,255,255,192,255,255, + 128,255,255,224,255,255,240,248,3,248,248,1,248,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,252,248,0,252,248, + 0,252,248,0,252,248,0,124,248,0,126,23,30,90,27,2, + 1,1,255,128,7,255,224,15,255,240,31,255,240,63,255,248, + 63,1,248,126,0,252,126,0,252,124,0,124,126,0,0,126, + 0,0,63,128,0,63,240,0,31,254,0,15,255,192,3,255, + 240,0,127,248,0,7,252,0,1,252,0,0,126,248,0,126, + 248,0,62,252,0,126,252,0,126,126,0,252,127,255,252,63, + 255,248,31,255,240,15,255,224,3,255,128,23,30,90,25,1, + 0,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,24,30,90,30,3, + 0,248,0,31,248,0,31,248,0,31,248,0,31,248,0,31, + 248,0,31,248,0,31,248,0,31,248,0,31,248,0,31,248, + 0,31,248,0,31,248,0,31,248,0,31,248,0,31,248,0, + 31,248,0,31,248,0,31,248,0,31,252,0,31,252,0,31, + 252,0,63,124,0,63,126,0,126,127,0,254,63,255,252,31, + 255,252,31,255,248,7,255,224,1,255,192,28,30,120,30,1, + 0,252,0,3,240,252,0,7,240,254,0,7,224,126,0,7, + 224,126,0,15,192,127,0,15,192,63,0,31,192,63,0,31, + 128,63,128,31,128,31,128,63,128,31,128,63,0,31,192,63, + 0,15,192,127,0,15,192,126,0,7,224,126,0,7,224,252, + 0,7,224,252,0,3,240,252,0,3,241,248,0,3,249,248, + 0,1,249,248,0,1,251,240,0,1,255,240,0,0,255,240, + 0,0,255,224,0,0,255,224,0,0,127,192,0,0,127,192, + 0,0,127,192,0,0,63,128,0,38,30,150,40,1,0,252, + 0,252,0,252,252,1,254,0,252,252,1,254,0,252,252,1, + 254,1,252,254,1,254,1,252,126,3,255,1,248,126,3,255, + 1,248,126,3,255,1,248,126,3,255,1,248,63,7,255,131, + 240,63,7,207,131,240,63,7,207,131,240,63,7,207,131,240, + 31,15,207,195,224,31,143,135,199,224,31,143,135,199,224,31, + 143,135,199,224,15,159,135,231,192,15,159,3,231,192,15,223, + 3,239,192,15,223,3,239,192,7,255,3,255,128,7,254,1, + 255,128,7,254,1,255,128,7,254,1,255,128,3,254,1,255, + 0,3,252,0,255,0,3,252,0,255,0,3,252,0,255,0, + 3,252,0,255,0,26,30,120,28,1,0,126,0,31,128,127, + 0,63,128,63,128,63,0,63,128,126,0,31,192,126,0,15, + 192,252,0,15,225,248,0,7,241,248,0,3,243,240,0,3, + 251,224,0,1,255,224,0,0,255,192,0,0,255,128,0,0, + 127,128,0,0,127,0,0,0,127,128,0,0,255,128,0,1, + 255,192,0,1,255,224,0,3,247,224,0,3,227,240,0,7, + 227,248,0,15,193,248,0,15,129,252,0,31,128,254,0,63, + 0,126,0,63,0,127,0,126,0,63,128,252,0,31,128,252, + 0,31,192,24,30,90,25,1,0,252,0,127,254,0,126,126, + 0,254,127,0,252,63,1,252,63,1,248,31,131,248,31,131, + 240,15,195,240,15,199,224,7,231,224,7,239,192,3,255,192, + 3,255,128,1,255,128,1,255,0,0,255,0,0,254,0,0, + 126,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,22,30,90,26,2,0,127,255,252,127,255,252,127, + 255,252,127,255,252,127,255,252,0,1,252,0,3,248,0,7, + 240,0,15,240,0,31,224,0,31,192,0,63,128,0,127,128, + 0,255,0,0,254,0,1,252,0,3,252,0,7,248,0,7, + 240,0,15,224,0,31,224,0,63,192,0,63,128,0,127,0, + 0,255,0,0,255,255,252,255,255,252,255,255,252,255,255,252, + 255,255,252,9,38,76,15,3,248,255,128,255,128,255,128,255, + 128,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,255,128,255, + 128,255,128,255,128,13,32,64,17,2,254,240,0,240,0,120, + 0,120,0,120,0,120,0,60,0,60,0,60,0,30,0,30, + 0,30,0,14,0,15,0,15,0,15,0,7,128,7,128,7, + 128,3,192,3,192,3,192,3,192,1,224,1,224,1,224,0, + 240,0,240,0,240,0,112,0,120,0,120,9,38,76,15,3, + 248,255,128,255,128,255,128,255,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,255,128,255,128,255,128,20,25,75, + 40,10,0,0,96,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,152,0,3,156,0,3,12,0,3,12,0,7,14, + 0,6,6,0,6,6,0,14,7,0,12,3,0,28,3,128, + 28,1,128,24,1,128,56,1,192,48,0,192,48,0,192,112, + 0,224,96,0,96,224,0,112,224,0,112,192,0,48,20,4, + 12,20,0,250,255,255,240,255,255,240,255,255,240,255,255,240, + 9,8,16,10,255,25,248,0,124,0,60,0,62,0,30,0, + 15,0,7,0,3,128,19,20,60,22,2,1,15,254,0,31, + 255,0,63,255,128,126,15,128,124,15,192,0,7,192,0,127, + 192,15,255,192,63,255,192,127,255,192,127,7,192,252,7,192, + 252,7,192,248,15,192,248,15,192,252,15,192,254,31,192,127, + 255,192,63,247,192,31,227,224,20,30,90,25,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,254,0,251, + 255,128,255,255,192,255,15,192,254,7,224,252,3,224,252,3, + 240,252,3,240,252,3,240,248,1,240,248,1,240,248,3,240, + 252,3,240,252,3,240,252,3,224,254,7,224,255,15,192,251, + 255,192,251,255,128,248,254,0,17,20,60,21,2,1,15,252, + 0,31,254,0,63,255,0,126,63,0,124,31,128,124,31,128, + 252,15,128,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,252,15,128,252,31,128,124,31,128,126,63, + 0,63,255,0,31,254,0,15,252,0,20,30,90,25,2,0, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,7,249, + 240,31,253,240,63,255,240,63,15,240,126,7,240,124,3,240, + 252,3,240,252,3,240,252,3,240,248,1,240,248,1,240,248, + 3,240,252,3,240,252,3,240,124,3,240,126,7,240,63,15, + 240,63,253,240,31,249,240,7,241,240,19,20,60,22,2,1, + 7,252,0,31,255,0,63,255,0,62,31,128,124,15,192,124, + 7,192,252,7,192,255,255,192,255,255,192,255,255,224,255,255, + 224,248,0,0,248,0,0,252,0,0,124,7,192,124,15,192, + 126,31,128,63,255,128,31,255,0,7,252,0,14,30,60,15, + 1,1,3,252,7,252,15,252,15,192,15,128,15,128,15,128, + 15,128,15,128,15,128,255,248,255,248,255,248,255,248,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,20,28, + 84,25,2,249,7,249,240,31,253,240,63,255,240,63,15,240, + 126,7,240,124,3,240,252,3,240,252,3,240,252,3,240,248, + 1,240,248,1,240,248,3,240,252,3,240,252,3,240,124,7, + 240,126,7,240,63,255,240,63,253,240,15,249,240,3,225,240, + 0,3,240,0,3,240,124,3,240,126,7,224,63,255,224,63, + 255,192,31,255,128,3,252,0,18,30,90,24,3,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,249,255,0,251, + 255,128,255,255,192,255,31,192,254,15,192,252,7,192,252,7, + 192,252,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,6,30,30,10,2,0,252,252, + 252,252,252,0,0,0,0,0,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,124,124,124,124,124,124,7,39,39,13, + 4,247,126,126,126,126,126,0,0,0,0,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,126,254,254,254,252,248,18,30,90,22,3,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,31,192, + 248,31,128,248,63,0,248,126,0,248,252,0,249,252,0,249, + 248,0,251,240,0,255,224,0,255,240,0,251,240,0,249,248, + 0,249,252,0,248,252,0,248,126,0,248,127,0,248,63,0, + 248,31,128,248,31,192,248,15,192,5,30,30,11,3,0,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,248,248,248,31,20,80, + 37,3,1,248,255,15,240,249,255,159,252,251,255,191,252,255, + 31,248,254,254,15,240,126,252,7,224,62,252,7,224,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,248,7,192,62,248,7,192,62,248,7,192,62,248, + 7,192,62,18,20,60,24,3,1,249,255,0,251,255,128,251, + 255,192,255,31,192,254,15,192,252,7,192,252,7,192,252,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,7,192,20,20,60,24,2,1,3,254,0,15,255, + 0,31,255,192,63,15,192,126,3,224,124,3,240,252,1,240, + 252,1,240,252,1,240,248,1,240,248,1,240,248,1,240,252, + 1,240,252,1,240,124,3,240,126,3,224,63,15,192,31,255, + 192,15,255,0,3,254,0,20,28,84,25,3,249,248,254,0, + 249,255,128,251,255,192,255,15,192,254,7,224,252,3,224,252, + 3,240,252,3,240,252,3,240,248,1,240,248,1,240,252,3, + 240,252,3,240,252,3,240,252,3,224,254,7,224,255,15,192, + 255,255,192,251,255,128,249,254,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,20,28,84,25,2,249,7,241,240,31,253,240,63,253,240, + 63,15,240,126,7,240,124,3,240,252,3,240,252,3,240,248, + 3,240,248,1,240,248,1,240,252,3,240,252,3,240,252,3, + 240,124,3,240,126,7,240,63,15,240,63,255,240,31,253,240, + 7,249,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,12,20,40,16,3, + 1,248,240,249,240,251,240,255,240,255,240,255,0,254,0,252, + 0,252,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,17,20,60,21,2,1,15, + 252,0,63,254,0,127,255,0,126,31,128,124,31,128,124,15, + 128,126,0,0,127,128,0,63,248,0,63,254,0,7,255,0, + 0,255,128,0,31,128,0,15,128,248,15,128,252,15,128,126, + 31,128,127,255,0,63,254,0,31,252,0,15,26,52,17,1, + 0,0,128,1,128,7,128,15,128,15,128,15,128,255,252,255, + 252,255,252,255,252,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,192,15,224,7, + 254,7,254,1,254,18,20,60,24,3,0,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,248, + 7,192,252,7,192,252,15,192,252,15,192,254,31,192,127,255, + 192,63,247,192,31,231,192,20,20,60,22,1,0,248,3,240, + 252,3,240,252,3,224,124,7,224,126,7,224,126,7,192,62, + 15,192,63,15,192,31,15,128,31,31,128,31,159,0,15,159, + 0,15,191,0,15,254,0,7,254,0,7,254,0,3,252,0, + 3,252,0,3,248,0,1,248,0,33,20,100,34,1,0,248, + 7,224,31,128,248,15,240,31,0,252,15,240,31,0,252,15, + 240,63,0,124,15,248,62,0,126,31,248,62,0,126,31,248, + 126,0,62,31,124,126,0,62,62,124,124,0,63,62,124,124, + 0,31,62,126,252,0,31,124,62,248,0,31,252,62,248,0, + 15,252,63,248,0,15,252,31,240,0,15,248,31,240,0,15, + 248,31,240,0,7,248,15,240,0,7,240,15,224,0,7,240, + 15,224,0,20,20,60,22,1,0,254,3,224,126,7,224,63, + 15,192,31,143,128,31,159,128,15,223,0,7,254,0,7,254, + 0,3,252,0,3,252,0,3,252,0,7,254,0,15,255,0, + 15,191,0,31,159,128,63,31,192,62,15,192,126,7,224,252, + 7,224,252,3,240,20,28,84,22,1,248,252,3,240,252,3, + 240,252,3,224,126,7,224,126,7,224,63,7,192,63,15,192, + 63,15,192,31,143,128,31,159,128,15,159,128,15,223,0,15, + 255,0,7,255,0,7,254,0,3,254,0,3,252,0,3,252, + 0,1,252,0,1,248,0,1,248,0,1,248,0,1,240,0, + 3,240,0,3,240,0,7,224,0,7,224,0,7,224,0,17, + 20,60,21,2,0,255,255,0,255,255,0,255,255,0,255,255, + 0,0,63,0,0,126,0,0,252,0,1,248,0,3,240,0, + 7,240,0,15,224,0,15,192,0,31,128,0,63,0,0,126, + 0,0,252,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,15,41,82,20,3,246,0,2,0,254,1,254,3,254,7, + 240,7,224,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,15,192,15,128,63,128,254,0,252, + 0,254,0,255,0,63,128,15,128,15,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,224,7, + 224,3,254,3,254,1,254,0,62,3,43,43,13,5,245,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,15,40,80,20,3,247, + 252,0,255,0,255,0,31,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,192,15,192,7,224, + 7,224,3,248,1,254,0,126,0,254,3,252,7,224,7,192, + 7,192,15,192,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,31,128,255,128,255,0,254,0,248,0, + 21,5,15,21,0,8,15,192,120,63,255,248,127,255,240,127, + 255,224,240,31,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--49-490-72-72-P-242-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 35 + Calculated Max Values w=29 h=39 x=10 y=17 dx=49 dy= 0 ascent=36 len=140 + Font Bounding box w=72 h=65 x=-4 y=-13 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =35 descent= 0 + X Font ascent =35 descent= 0 + Max Font ascent =36 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub35n[1667] U8G_SECTION(".progmem.u8g_font_fub35n") = { + 0,72,65,252,243,35,0,0,0,0,42,57,0,36,250,35, + 0,20,18,54,32,6,17,7,14,0,31,15,128,31,159,128, + 15,159,0,7,158,0,3,252,0,129,248,16,254,247,240,255, + 255,240,255,255,240,249,249,240,1,248,0,3,252,0,7,158, + 0,15,159,0,31,143,128,31,15,128,7,14,0,29,29,116, + 49,10,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,255,255,255,248,255,255,255,248,255, + 255,255,248,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0, + 7,0,0,0,7,0,0,11,12,24,15,2,250,15,224,15, + 192,31,192,31,128,31,128,63,0,63,0,62,0,126,0,124, + 0,124,0,248,0,13,6,12,17,2,9,255,248,255,248,255, + 248,255,248,255,248,255,248,7,6,6,15,5,0,254,254,254, + 254,254,254,17,39,117,21,2,253,0,15,128,0,15,0,0, + 31,0,0,31,0,0,30,0,0,62,0,0,62,0,0,62, + 0,0,124,0,0,124,0,0,124,0,0,120,0,0,248,0, + 0,248,0,0,240,0,1,240,0,1,240,0,1,240,0,3, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,128,0,15,128,0,31,0,0, + 31,0,0,31,0,0,62,0,0,62,0,0,62,0,0,60, + 0,0,124,0,0,124,0,0,124,0,0,248,0,0,25,35, + 140,28,2,1,1,255,128,0,7,255,224,0,15,255,240,0, + 31,255,248,0,31,255,252,0,63,129,252,0,63,0,254,0, + 127,0,126,0,126,0,126,0,126,0,63,0,126,0,63,0, + 254,0,63,0,254,0,63,0,254,0,63,0,254,0,63,128, + 254,0,63,128,254,0,63,128,254,0,63,128,254,0,63,128, + 254,0,63,128,254,0,63,128,254,0,63,0,254,0,63,0, + 254,0,63,0,126,0,63,0,126,0,63,0,126,0,127,0, + 127,0,126,0,63,0,254,0,63,129,252,0,31,255,252,0, + 31,255,248,0,15,255,240,0,7,255,224,0,1,255,128,0, + 15,35,70,28,5,0,0,254,1,254,7,254,15,254,63,254, + 255,254,255,254,254,254,252,254,240,254,192,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,0,254,0,254, + 0,254,0,254,0,254,0,254,0,254,0,254,25,35,140,28, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,255,255,0,63,192,255,0,63,128,63,128,63,0, + 63,128,127,0,63,128,0,0,63,128,0,0,63,128,0,0, + 63,128,0,0,127,0,0,0,127,0,0,0,255,0,0,1, + 254,0,0,3,252,0,0,7,252,0,0,15,248,0,0,31, + 240,0,0,63,224,0,0,127,192,0,1,255,0,0,3,254, + 0,0,7,252,0,0,15,240,0,0,63,224,0,0,127,128, + 0,0,255,0,0,0,255,255,255,128,255,255,255,128,255,255, + 255,128,255,255,255,128,255,255,255,128,255,255,255,128,24,35, + 105,28,2,1,3,255,128,15,255,224,31,255,240,63,255,248, + 127,255,252,127,3,252,254,1,252,254,0,252,254,0,254,0, + 0,254,0,0,254,0,1,252,0,1,252,0,15,248,0,255, + 240,0,255,192,0,255,128,0,255,224,0,255,248,0,3,252, + 0,0,254,0,0,254,0,0,126,0,0,127,0,0,127,254, + 0,127,254,0,127,254,0,254,255,0,254,127,1,252,127,255, + 252,63,255,248,31,255,240,15,255,224,3,255,128,26,35,140, + 28,1,0,0,7,252,0,0,15,252,0,0,31,252,0,0, + 31,252,0,0,63,252,0,0,63,252,0,0,127,252,0,0, + 253,252,0,0,253,252,0,1,249,252,0,1,249,252,0,3, + 241,252,0,7,241,252,0,7,225,252,0,15,193,252,0,15, + 193,252,0,31,129,252,0,63,129,252,0,63,1,252,0,126, + 1,252,0,254,1,252,0,252,1,252,0,255,255,255,192,255, + 255,255,192,255,255,255,192,255,255,255,192,255,255,255,192,255, + 255,255,192,0,1,252,0,0,1,252,0,0,1,252,0,0, + 1,252,0,0,1,252,0,0,1,252,0,0,1,252,0,24, + 35,105,28,2,0,127,255,252,127,255,252,127,255,252,127,255, + 252,127,255,252,127,255,252,127,0,0,127,0,0,127,0,0, + 127,0,0,127,0,0,127,0,0,127,31,192,127,127,240,127, + 255,248,127,255,252,127,255,252,127,193,254,127,0,254,127,0, + 127,126,0,127,0,0,127,0,0,127,0,0,127,0,0,127, + 0,0,127,254,0,127,254,0,254,254,0,254,255,1,252,127, + 255,252,127,255,248,63,255,240,15,255,192,7,255,128,25,35, + 140,28,2,1,0,255,192,0,3,255,240,0,7,255,248,0, + 15,255,252,0,31,255,254,0,31,224,254,0,63,192,127,0, + 63,128,127,0,127,0,0,0,127,0,0,0,127,0,0,0, + 126,0,0,0,254,31,192,0,254,127,240,0,254,255,248,0, + 254,255,252,0,255,255,254,0,255,225,254,0,255,192,255,0, + 255,128,127,0,255,0,63,0,255,0,63,128,255,0,63,128, + 255,0,63,128,255,0,63,128,127,0,63,0,127,0,63,0, + 127,128,127,0,127,128,127,0,63,192,254,0,31,255,252,0, + 31,255,252,0,15,255,248,0,7,255,224,0,1,255,128,0, + 24,35,105,28,2,0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,127,0,0,127,0,0, + 254,0,0,254,0,1,254,0,1,252,0,3,252,0,3,248, + 0,7,248,0,7,240,0,15,240,0,15,240,0,31,224,0, + 31,224,0,63,192,0,63,192,0,63,128,0,127,128,0,127, + 0,0,255,0,0,255,0,1,254,0,1,254,0,3,252,0, + 3,252,0,7,248,0,7,248,0,15,248,0,15,240,0,25, + 35,140,28,2,1,3,255,192,0,15,255,240,0,31,255,252, + 0,63,255,254,0,63,255,254,0,127,193,255,0,127,128,255, + 0,127,0,127,0,127,0,127,0,127,0,127,0,127,0,127, + 0,127,0,127,0,63,128,254,0,63,193,252,0,15,255,248, + 0,7,255,224,0,1,255,192,0,15,255,240,0,31,255,248, + 0,63,193,254,0,127,128,254,0,127,0,127,0,254,0,63, + 0,254,0,63,0,254,0,63,128,254,0,63,128,254,0,63, + 128,255,0,127,128,255,0,127,0,127,128,255,0,127,255,255, + 0,63,255,254,0,63,255,252,0,15,255,248,0,3,255,224, + 0,25,35,140,28,2,1,1,255,192,0,7,255,224,0,15, + 255,248,0,31,255,252,0,63,255,252,0,127,129,254,0,127, + 0,254,0,126,0,255,0,254,0,127,0,254,0,127,0,254, + 0,127,128,254,0,127,128,254,0,127,128,254,0,127,128,254, + 0,255,128,127,0,255,128,127,131,255,128,63,255,255,128,63, + 255,191,128,31,255,191,128,15,255,63,128,1,248,63,128,0, + 0,63,0,0,0,127,0,0,0,127,0,0,0,127,0,127, + 0,254,0,127,0,254,0,127,1,254,0,63,131,252,0,31, + 255,252,0,31,255,248,0,15,255,240,0,7,255,224,0,1, + 255,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--58-580-72-72-P-286-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 42 + Calculated Max Values w=35 h=46 x=12 y=20 dx=59 dy= 0 ascent=43 len=176 + Font Bounding box w=87 h=77 x=-5 y=-15 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =42 descent= 0 + X Font ascent =42 descent= 0 + Max Font ascent =43 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub42n[2235] U8G_SECTION(".progmem.u8g_font_fub42n") = { + 0,87,77,251,241,42,0,0,0,0,42,57,0,43,248,42, + 0,23,23,69,37,7,20,0,130,0,3,131,128,15,131,224, + 31,199,224,15,199,224,7,199,192,3,239,128,1,239,0,0, + 254,0,248,254,62,255,255,254,255,255,254,255,255,254,254,124, + 254,128,254,2,1,239,0,3,239,128,7,239,192,7,199,192, + 15,199,224,31,131,240,7,131,192,1,131,0,35,35,175,59, + 12,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,255,255,255,255,224,255,255,255,255,224,255,255,255,255, + 224,255,255,255,255,224,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,12,15,30,18,3,248,15,240,15,240,15,224,31,224,31, + 192,31,192,63,128,63,128,63,0,127,0,126,0,126,0,124, + 0,252,0,252,0,15,8,16,19,2,11,255,254,255,254,255, + 254,255,254,255,254,255,254,255,254,255,254,8,8,8,18,6, + 0,255,255,255,255,255,255,255,255,19,46,138,25,3,253,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,0,0,63,0, + 0,63,0,0,62,0,0,126,0,0,126,0,0,124,0,0, + 252,0,0,252,0,0,252,0,0,248,0,1,248,0,1,248, + 0,1,240,0,3,240,0,3,240,0,3,240,0,7,224,0, + 7,224,0,7,224,0,7,192,0,15,192,0,15,192,0,15, + 128,0,31,128,0,31,128,0,31,128,0,63,0,0,63,0, + 0,63,0,0,62,0,0,126,0,0,126,0,0,124,0,0, + 252,0,0,252,0,0,252,0,0,29,44,176,33,2,255,0, + 31,192,0,0,255,248,0,3,255,252,0,7,255,255,0,15, + 255,255,128,15,255,255,128,31,240,255,192,63,192,63,192,63, + 192,63,224,63,128,31,224,127,128,31,240,127,0,31,240,127, + 0,15,240,127,0,15,240,255,0,15,240,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,127,0,15,240,127,0,15,240,127,0,15,240,127, + 0,31,240,127,128,31,240,63,128,31,224,63,192,63,224,63, + 192,63,192,31,240,255,192,15,255,255,128,15,255,255,0,7, + 255,255,0,3,255,254,0,0,255,248,0,0,31,192,0,18, + 42,126,33,6,0,0,63,192,0,127,192,0,255,192,3,255, + 192,15,255,192,63,255,192,255,255,192,255,255,192,255,255,192, + 255,63,192,254,63,192,248,63,192,224,63,192,0,63,192,0, + 63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63, + 192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192, + 0,63,192,0,63,192,0,63,192,0,63,192,0,63,192,0, + 63,192,0,63,192,0,63,192,0,63,192,0,63,192,0,63, + 192,0,63,192,0,63,192,0,63,192,0,63,192,0,63,192, + 0,63,192,29,43,172,33,2,0,0,15,240,0,0,127,254, + 0,1,255,255,0,3,255,255,128,7,255,255,192,15,255,255, + 224,31,248,63,240,31,240,31,240,31,224,15,240,63,192,7, + 248,63,192,7,248,63,192,7,248,0,0,7,248,0,0,7, + 248,0,0,15,248,0,0,15,240,0,0,31,240,0,0,31, + 240,0,0,63,224,0,0,127,224,0,0,255,192,0,1,255, + 128,0,3,255,128,0,7,255,0,0,15,254,0,0,31,252, + 0,0,63,248,0,0,127,240,0,0,255,224,0,1,255,128, + 0,3,255,0,0,15,254,0,0,31,252,0,0,63,240,0, + 0,127,224,0,0,255,192,0,0,255,255,255,248,255,255,255, + 248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255, + 248,255,255,255,248,28,44,176,33,3,255,0,127,192,0,3, + 255,248,0,7,255,252,0,31,255,255,0,63,255,255,0,63, + 255,255,128,127,224,255,192,127,192,127,192,255,128,63,192,255, + 0,31,224,255,0,31,224,255,0,31,224,0,0,31,224,0, + 0,31,224,0,0,31,224,0,0,63,192,0,0,127,192,0, + 3,255,128,0,127,255,0,0,127,252,0,0,127,240,0,0, + 127,248,0,0,127,254,0,0,127,255,128,0,0,255,192,0, + 0,63,224,0,0,31,224,0,0,31,224,0,0,15,240,0, + 0,15,240,0,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,31,224,255,128,31,224,127,192,63,224,127, + 224,255,192,63,255,255,128,63,255,255,0,31,255,254,0,15, + 255,252,0,3,255,248,0,0,127,192,0,31,42,168,33,1, + 0,0,1,255,192,0,1,255,192,0,3,255,192,0,7,255, + 192,0,7,255,192,0,15,255,192,0,15,255,192,0,31,255, + 192,0,63,255,192,0,63,191,192,0,127,63,192,0,255,63, + 192,0,254,63,192,1,254,63,192,1,252,63,192,3,248,63, + 192,7,248,63,192,7,240,63,192,15,240,63,192,31,224,63, + 192,31,192,63,192,63,192,63,192,63,128,63,192,127,128,63, + 192,255,0,63,192,255,0,63,192,255,255,255,254,255,255,255, + 254,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255, + 254,255,255,255,254,0,0,63,192,0,0,63,192,0,0,63, + 192,0,0,63,192,0,0,63,192,0,0,63,192,0,0,63, + 192,0,0,63,192,0,0,63,192,29,43,172,33,2,255,127, + 255,255,224,127,255,255,224,127,255,255,224,127,255,255,224,127, + 255,255,224,127,255,255,224,127,255,255,224,127,128,0,0,127, + 128,0,0,127,128,0,0,127,128,0,0,127,128,0,0,127, + 128,0,0,127,128,0,0,127,128,0,0,127,135,248,0,127, + 159,254,0,127,255,255,128,127,255,255,192,127,255,255,192,127, + 255,255,224,127,240,63,240,127,192,31,240,127,128,15,240,127, + 128,15,248,127,0,7,248,0,0,7,248,0,0,7,248,0, + 0,7,248,0,0,7,248,0,0,7,248,0,0,7,240,255, + 0,15,240,255,0,15,240,255,0,31,240,255,128,63,224,127, + 224,255,192,127,255,255,192,63,255,255,128,31,255,255,0,15, + 255,252,0,3,255,248,0,0,127,192,0,29,44,176,33,2, + 255,0,15,240,0,0,127,252,0,0,255,255,0,3,255,255, + 128,7,255,255,192,7,255,255,224,15,252,63,224,31,240,15, + 240,31,224,15,240,63,192,7,248,63,192,7,248,63,128,0, + 0,127,128,0,0,127,128,0,0,127,128,0,0,127,0,0, + 0,255,3,248,0,255,31,254,0,255,63,255,0,255,127,255, + 128,255,255,255,192,255,255,255,224,255,248,63,240,255,224,31, + 240,255,192,15,240,255,192,15,248,255,128,7,248,255,128,7, + 248,255,128,7,248,255,128,7,248,255,128,7,248,127,128,7, + 248,127,128,7,248,127,128,7,240,127,192,15,240,63,192,15, + 240,63,224,31,224,31,248,63,224,31,255,255,192,15,255,255, + 128,7,255,255,0,3,255,254,0,0,255,248,0,0,63,192, + 0,28,42,168,33,3,0,255,255,255,240,255,255,255,240,255, + 255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255, + 255,255,240,0,0,15,240,0,0,15,240,0,0,31,240,0, + 0,31,224,0,0,63,224,0,0,63,192,0,0,127,192,0, + 0,127,192,0,0,255,128,0,0,255,128,0,1,255,0,0, + 1,255,0,0,1,254,0,0,3,254,0,0,3,254,0,0, + 7,252,0,0,7,252,0,0,15,248,0,0,15,248,0,0, + 31,248,0,0,31,240,0,0,31,240,0,0,63,224,0,0, + 63,224,0,0,127,192,0,0,127,192,0,0,255,192,0,0, + 255,128,0,1,255,128,0,1,255,0,0,3,255,0,0,3, + 255,0,0,3,254,0,0,7,254,0,0,7,252,0,0,29, + 44,176,33,2,255,0,63,240,0,1,255,254,0,7,255,255, + 128,15,255,255,192,31,255,255,224,63,255,255,240,63,248,127, + 240,127,224,31,240,127,224,31,248,127,192,15,248,127,192,15, + 248,127,192,15,248,127,192,15,248,127,192,15,248,63,224,31, + 240,63,224,31,240,31,248,127,224,15,255,255,192,7,255,255, + 0,1,255,252,0,0,255,248,0,3,255,254,0,15,255,255, + 128,31,255,255,192,63,240,63,224,127,224,31,224,127,192,15, + 240,127,192,15,240,255,128,7,248,255,128,7,248,255,128,7, + 248,255,128,7,248,255,128,7,248,255,128,7,248,255,192,15, + 248,255,192,15,248,127,224,31,240,127,240,63,240,127,255,255, + 224,63,255,255,224,31,255,255,192,15,255,255,128,3,255,254, + 0,0,127,240,0,29,44,176,33,2,255,0,31,192,0,0, + 255,248,0,3,255,254,0,7,255,255,0,15,255,255,128,31, + 255,255,128,63,224,255,192,63,192,63,224,127,128,31,224,127, + 128,31,224,127,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,248,255,0,15,248,255,0,15,248,255, + 0,15,248,255,128,31,248,127,128,31,248,127,192,63,248,127, + 224,255,248,63,255,255,248,31,255,255,248,31,255,247,248,15, + 255,231,248,3,255,199,248,0,254,7,240,0,0,7,240,0, + 0,15,240,0,0,15,240,0,0,15,240,0,0,15,224,127, + 128,31,224,127,128,31,224,63,128,63,192,63,192,127,192,63, + 224,255,128,31,255,255,128,15,255,255,0,7,255,254,0,3, + 255,252,0,1,255,240,0,0,63,192,0}; +/* + Fontname: -FreeType-FreeUniversal-Bold-R-Normal--68-680-72-72-P-335-ISO10646-1 + Copyright: FreeUniveral (c) Stephen Wilson 2009 Original Font Sil-Sophia Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 49 + Calculated Max Values w=41 h=54 x=14 y=23 dx=69 dy= 0 ascent=50 len=255 + Font Bounding box w=100 h=91 x=-5 y=-18 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =49 descent= 0 + X Font ascent =49 descent= 0 + Max Font ascent =50 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub49n[3074] U8G_SECTION(".progmem.u8g_font_fub49n") = { + 0,100,91,251,238,49,0,0,0,0,42,57,0,50,247,49, + 0,27,27,108,43,8,23,0,64,64,0,1,192,112,0,7, + 224,252,0,15,224,254,0,7,241,252,0,7,241,252,0,3, + 241,248,0,1,251,240,0,0,251,224,0,0,127,192,0,224, + 127,192,224,255,191,191,224,255,255,255,224,255,255,255,224,255, + 255,255,224,255,63,159,224,192,127,192,96,0,123,192,0,0, + 251,224,0,1,251,240,0,3,241,248,0,7,241,252,0,15, + 241,252,0,15,224,254,0,7,224,252,0,1,192,112,0,0, + 64,64,0,41,41,246,69,14,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,255,255,255,255,255, + 128,255,255,255,255,255,128,255,255,255,255,255,128,255,255,255, + 255,255,128,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,15, + 17,34,21,3,247,7,254,7,252,7,252,7,248,15,248,15, + 240,15,240,31,224,31,224,31,192,63,192,63,128,63,128,127, + 0,127,0,126,0,254,0,17,9,27,23,3,13,255,255,128, + 255,255,128,255,255,128,255,255,128,255,255,128,255,255,128,255, + 255,128,255,255,128,255,255,128,9,9,18,21,7,0,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,128, + 23,54,162,29,3,252,0,0,254,0,0,254,0,0,252,0, + 1,252,0,1,252,0,1,248,0,3,248,0,3,248,0,3, + 248,0,7,240,0,7,240,0,7,240,0,7,224,0,15,224, + 0,15,224,0,15,192,0,31,192,0,31,192,0,31,192,0, + 63,128,0,63,128,0,63,128,0,63,0,0,127,0,0,127, + 0,0,126,0,0,254,0,0,254,0,0,254,0,1,252,0, + 1,252,0,1,252,0,1,248,0,3,248,0,3,248,0,3, + 240,0,7,240,0,7,240,0,7,240,0,15,224,0,15,224, + 0,15,224,0,15,192,0,31,192,0,31,192,0,31,128,0, + 63,128,0,63,128,0,63,0,0,127,0,0,127,0,0,127, + 0,0,126,0,0,254,0,0,34,51,255,39,2,255,0,7, + 248,0,0,0,63,255,0,0,0,255,255,192,0,1,255,255, + 224,0,3,255,255,240,0,7,255,255,248,0,15,255,255,252, + 0,15,254,31,252,0,31,248,7,254,0,31,240,3,254,0, + 63,240,3,255,0,63,224,1,255,0,63,224,1,255,0,127, + 224,1,255,128,127,192,0,255,128,127,192,0,255,128,127,192, + 0,255,128,255,192,0,255,128,255,192,0,255,192,255,192,0, + 255,192,255,192,0,255,192,255,192,0,255,192,255,192,0,255, + 192,255,192,0,255,192,255,192,0,255,192,255,192,0,255,192, + 255,192,0,255,192,255,192,0,255,192,255,192,0,255,192,255, + 192,0,255,192,255,192,0,255,192,255,192,0,255,192,255,192, + 0,255,192,255,192,0,255,128,127,192,0,255,128,127,192,0, + 255,128,127,192,0,255,128,127,224,1,255,128,63,224,1,255, + 0,63,224,1,255,0,63,240,3,255,0,31,240,3,254,0, + 31,248,7,254,0,15,254,31,252,0,15,255,255,252,0,7, + 255,255,248,0,3,255,255,240,0,1,255,255,224,0,0,255, + 255,192,0,0,63,255,0,0,0,7,248,0,0,20,49,147, + 39,7,0,0,31,240,0,63,240,0,127,240,1,255,240,3, + 255,240,15,255,240,63,255,240,255,255,240,255,255,240,255,255, + 240,255,223,240,255,159,240,254,31,240,248,31,240,224,31,240, + 128,31,240,0,31,240,0,31,240,0,31,240,0,31,240,0, + 31,240,0,31,240,0,31,240,0,31,240,0,31,240,0,31, + 240,0,31,240,0,31,240,0,31,240,0,31,240,0,31,240, + 0,31,240,0,31,240,0,31,240,0,31,240,0,31,240,0, + 31,240,0,31,240,0,31,240,0,31,240,0,31,240,0,31, + 240,0,31,240,0,31,240,0,31,240,0,31,240,0,31,240, + 0,31,240,0,31,240,34,50,250,39,2,0,0,3,254,0, + 0,0,31,255,192,0,0,127,255,240,0,0,255,255,248,0, + 3,255,255,254,0,7,255,255,254,0,7,255,255,255,0,15, + 255,255,255,128,31,255,7,255,128,31,252,1,255,192,31,248, + 0,255,192,63,248,0,255,192,63,240,0,127,192,63,240,0, + 127,192,63,240,0,127,192,0,0,0,127,192,0,0,0,127, + 192,0,0,0,255,192,0,0,0,255,128,0,0,1,255,128, + 0,0,1,255,128,0,0,3,255,0,0,0,7,255,0,0, + 0,15,254,0,0,0,31,254,0,0,0,63,252,0,0,0, + 127,248,0,0,0,255,240,0,0,1,255,224,0,0,3,255, + 192,0,0,7,255,128,0,0,15,255,0,0,0,31,254,0, + 0,0,63,252,0,0,0,255,248,0,0,1,255,224,0,0, + 3,255,192,0,0,7,255,128,0,0,31,254,0,0,0,63, + 252,0,0,0,127,248,0,0,0,255,224,0,0,0,255,255, + 255,255,192,255,255,255,255,192,255,255,255,255,192,255,255,255, + 255,192,255,255,255,255,192,255,255,255,255,192,255,255,255,255, + 192,255,255,255,255,192,32,51,204,39,3,255,0,31,248,0, + 0,255,255,0,3,255,255,128,7,255,255,224,15,255,255,240, + 31,255,255,248,63,255,255,248,127,255,255,252,127,248,31,252, + 127,224,15,254,255,192,7,254,255,192,3,254,255,128,3,254, + 255,128,3,254,0,0,3,254,0,0,3,254,0,0,3,254, + 0,0,7,254,0,0,15,252,0,0,127,252,0,63,255,248, + 0,63,255,224,0,63,255,192,0,63,254,0,0,63,255,0, + 0,63,255,192,0,63,255,240,0,63,255,248,0,0,63,252, + 0,0,7,254,0,0,3,254,0,0,3,255,0,0,1,255, + 0,0,1,255,0,0,1,255,0,0,1,255,255,128,1,255, + 255,128,1,255,255,128,1,255,255,192,3,255,255,192,3,254, + 127,224,7,254,127,224,15,254,127,248,31,252,63,255,255,248, + 63,255,255,240,31,255,255,240,15,255,255,192,3,255,255,128, + 1,255,254,0,0,31,240,0,36,50,250,39,2,0,0,0, + 63,252,0,0,0,127,252,0,0,0,127,252,0,0,0,255, + 252,0,0,0,255,252,0,0,1,255,252,0,0,3,255,252, + 0,0,3,255,252,0,0,7,255,252,0,0,7,255,252,0, + 0,15,247,252,0,0,31,247,252,0,0,31,231,252,0,0, + 63,199,252,0,0,127,199,252,0,0,127,135,252,0,0,255, + 135,252,0,0,255,7,252,0,1,255,7,252,0,3,254,7, + 252,0,3,252,7,252,0,7,252,7,252,0,7,248,7,252, + 0,15,248,7,252,0,31,240,7,252,0,31,240,7,252,0, + 63,224,7,252,0,63,192,7,252,0,127,192,7,252,0,255, + 128,7,252,0,255,128,7,252,0,255,255,255,255,240,255,255, + 255,255,240,255,255,255,255,240,255,255,255,255,240,255,255,255, + 255,240,255,255,255,255,240,255,255,255,255,240,255,255,255,255, + 240,0,0,7,252,0,0,0,7,252,0,0,0,7,252,0, + 0,0,7,252,0,0,0,7,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,252,0,0,0,7,252,0,0,0, + 7,252,0,0,0,7,252,0,33,50,250,39,3,255,127,255, + 255,254,0,127,255,255,254,0,127,255,255,254,0,127,255,255, + 254,0,127,255,255,254,0,127,255,255,254,0,127,255,255,254, + 0,127,255,255,254,0,127,192,0,0,0,127,192,0,0,0, + 127,192,0,0,0,127,192,0,0,0,127,192,0,0,0,127, + 192,0,0,0,127,192,0,0,0,127,192,0,0,0,127,192, + 0,0,0,127,193,255,0,0,127,199,255,192,0,127,223,255, + 240,0,127,255,255,248,0,127,255,255,252,0,127,255,255,254, + 0,127,255,255,254,0,127,252,15,255,0,127,240,3,255,0, + 127,224,3,255,0,127,192,1,255,128,127,192,1,255,128,0, + 0,0,255,128,0,0,0,255,128,0,0,0,255,128,0,0, + 0,255,128,0,0,0,255,128,0,0,0,255,128,0,0,0, + 255,128,0,0,0,255,128,255,128,1,255,128,255,128,1,255, + 0,255,192,3,255,0,255,192,3,254,0,127,224,15,254,0, + 127,248,63,252,0,127,255,255,252,0,63,255,255,248,0,31, + 255,255,240,0,15,255,255,224,0,7,255,255,128,0,1,255, + 254,0,0,0,63,240,0,0,34,51,255,39,2,255,0,3, + 252,0,0,0,31,255,128,0,0,127,255,224,0,0,255,255, + 240,0,1,255,255,248,0,3,255,255,252,0,7,255,255,254, + 0,7,255,255,254,0,15,255,7,255,0,31,252,3,255,0, + 31,248,1,255,128,31,248,0,255,128,63,240,0,255,128,63, + 224,0,0,0,63,224,0,0,0,127,224,0,0,0,127,192, + 0,0,0,127,192,0,0,0,127,192,127,0,0,127,195,255, + 224,0,255,199,255,240,0,255,207,255,248,0,255,223,255,252, + 0,255,191,255,254,0,255,255,255,255,0,255,254,15,255,0, + 255,248,3,255,128,255,248,3,255,128,255,240,1,255,128,255, + 240,1,255,192,255,224,0,255,192,255,224,0,255,192,255,224, + 0,255,192,255,224,0,255,192,255,224,0,255,192,127,224,0, + 255,192,127,224,0,255,192,127,224,0,255,192,127,224,0,255, + 128,63,240,1,255,128,63,240,1,255,128,63,248,3,255,0, + 31,248,3,255,0,31,254,15,254,0,15,255,255,254,0,7, + 255,255,252,0,3,255,255,248,0,1,255,255,240,0,0,255, + 255,192,0,0,63,255,0,0,0,7,248,0,0,33,49,245, + 39,3,0,255,255,255,255,128,255,255,255,255,128,255,255,255, + 255,128,255,255,255,255,128,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,255,255,255,255,128,0,0,0,255,128, + 0,0,1,255,128,0,0,1,255,128,0,0,3,255,0,0, + 0,3,255,0,0,0,7,254,0,0,0,7,254,0,0,0, + 15,254,0,0,0,15,252,0,0,0,31,252,0,0,0,31, + 248,0,0,0,31,248,0,0,0,63,240,0,0,0,63,240, + 0,0,0,127,240,0,0,0,127,224,0,0,0,255,224,0, + 0,0,255,192,0,0,1,255,192,0,0,1,255,192,0,0, + 3,255,128,0,0,3,255,128,0,0,3,255,0,0,0,7, + 255,0,0,0,7,254,0,0,0,15,254,0,0,0,15,254, + 0,0,0,31,252,0,0,0,31,252,0,0,0,63,248,0, + 0,0,63,248,0,0,0,63,248,0,0,0,127,240,0,0, + 0,127,240,0,0,0,255,224,0,0,0,255,224,0,0,1, + 255,192,0,0,1,255,192,0,0,3,255,192,0,0,3,255, + 128,0,0,7,255,128,0,0,34,51,255,39,2,255,0,15, + 252,0,0,0,255,255,192,0,3,255,255,240,0,7,255,255, + 248,0,15,255,255,252,0,31,255,255,254,0,63,255,255,255, + 0,63,255,255,255,0,63,252,15,255,0,127,248,7,255,128, + 127,240,3,255,128,127,224,1,255,128,127,224,1,255,128,127, + 224,1,255,128,127,224,1,255,128,127,224,1,255,128,127,224, + 1,255,128,63,240,3,255,0,63,248,7,255,0,31,252,15, + 254,0,15,255,255,252,0,7,255,255,240,0,1,255,255,192, + 0,0,63,255,0,0,0,255,255,128,0,3,255,255,224,0, + 7,255,255,248,0,31,255,255,252,0,63,252,15,254,0,63, + 248,7,255,0,127,240,3,255,0,127,224,1,255,128,127,224, + 1,255,128,255,192,0,255,192,255,192,0,255,192,255,192,0, + 255,192,255,192,0,255,192,255,192,0,255,192,255,192,0,255, + 192,255,224,1,255,192,255,224,1,255,192,255,240,3,255,192, + 127,240,7,255,128,127,252,15,255,128,63,255,255,255,0,63, + 255,255,255,0,31,255,255,254,0,15,255,255,252,0,3,255, + 255,240,0,0,255,255,192,0,0,15,252,0,0,34,51,255, + 39,2,255,0,7,248,0,0,0,63,255,0,0,0,255,255, + 192,0,3,255,255,224,0,7,255,255,240,0,15,255,255,248, + 0,31,255,255,252,0,31,255,255,254,0,63,248,31,254,0, + 63,240,7,255,0,127,224,7,255,0,127,192,3,255,0,127, + 192,3,255,128,255,192,1,255,128,255,128,1,255,128,255,128, + 1,255,128,255,128,1,255,192,255,128,1,255,192,255,128,1, + 255,192,255,192,1,255,192,255,192,3,255,192,255,192,3,255, + 192,127,224,7,255,192,127,240,7,255,192,127,248,31,255,192, + 63,255,255,255,192,31,255,255,127,192,31,255,254,255,192,15, + 255,252,255,192,3,255,252,255,192,1,255,240,255,192,0,127, + 192,255,128,0,0,0,255,128,0,0,0,255,128,0,0,1, + 255,128,0,0,1,255,128,0,0,1,255,0,0,0,1,255, + 0,127,192,3,255,0,127,192,3,254,0,127,224,7,254,0, + 63,224,15,254,0,63,240,15,252,0,31,248,63,252,0,31, + 255,255,248,0,15,255,255,240,0,7,255,255,224,0,3,255, + 255,192,0,1,255,255,128,0,0,127,254,0,0,0,15,240, + 0,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=16 x= 4 y=10 dx=15 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11[3712] U8G_SECTION(".progmem.u8g_font_fur11") = { + 0,20,20,255,252,11,2,81,4,211,32,255,253,16,252,11, + 253,0,0,0,5,0,0,1,11,11,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,5,5,5,7,1,6,216,216, + 152,152,144,9,11,22,11,1,0,9,0,9,0,19,0,127, + 128,18,0,38,0,255,0,36,0,100,0,72,0,72,0,7, + 14,14,9,1,255,16,16,120,148,148,144,240,124,22,18,146, + 214,124,16,12,11,22,14,1,0,112,128,152,128,137,0,137, + 0,154,0,116,224,5,176,9,16,9,16,17,48,16,224,9, + 11,22,11,1,0,56,0,68,0,68,0,120,0,113,0,217, + 0,137,0,143,0,134,0,199,0,125,128,2,5,5,6,2, + 6,192,128,128,128,128,2,14,14,6,2,253,64,64,192,128, + 128,128,128,128,128,128,128,192,64,64,2,14,14,5,2,253, + 128,128,128,192,64,64,64,64,64,64,192,128,128,128,6,5, + 5,10,2,5,72,48,252,48,120,9,9,18,15,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,2,4,4,4,1,254,192,192,128,128,4,1,1,6,1, + 3,240,1,2,2,4,2,0,128,128,4,12,12,6,1,255, + 16,16,16,32,32,32,64,64,64,64,128,128,6,11,11,8, + 1,0,120,200,140,132,132,132,132,132,140,200,120,4,11,11, + 8,2,0,48,112,208,16,16,16,16,16,16,16,16,6,11, + 11,8,1,0,120,204,196,4,12,24,16,48,96,192,252,7, + 11,11,8,0,0,60,70,194,6,24,4,6,2,194,70,60, + 7,11,11,8,1,0,12,28,20,36,100,68,196,254,4,4, + 4,6,11,11,8,1,0,248,128,128,184,204,132,4,4,140, + 200,112,7,11,11,8,1,0,60,198,134,128,188,198,130,130, + 130,198,60,7,11,11,8,1,0,254,6,6,4,12,8,24, + 24,16,48,48,6,11,11,8,1,0,120,204,132,204,112,200, + 132,132,132,204,120,7,11,11,8,1,0,124,198,130,130,198, + 122,2,6,134,204,120,1,8,8,4,2,0,128,128,0,0, + 0,0,128,128,2,10,10,4,1,254,64,64,0,0,0,0, + 64,192,192,128,9,8,16,15,3,1,0,128,3,0,28,0, + 96,0,128,0,112,0,14,0,1,128,9,4,8,15,3,3, + 255,128,0,0,0,0,255,128,9,8,16,15,3,1,128,0, + 96,0,28,0,3,0,0,128,7,0,56,0,192,0,7,11, + 11,8,0,0,60,198,2,6,4,8,16,16,16,0,16,13, + 14,28,15,1,253,15,128,48,96,96,16,206,144,153,152,144, + 136,144,136,144,136,145,152,153,144,206,96,96,0,48,0,15, + 128,11,11,22,11,0,0,6,0,14,0,10,0,27,0,25, + 0,49,128,49,128,63,192,96,192,64,64,192,96,8,11,11, + 10,1,0,252,134,130,130,134,252,130,129,129,131,254,8,11, + 11,10,1,0,62,99,193,128,128,128,128,128,193,67,62,8, + 11,11,10,1,0,248,134,130,131,129,129,129,131,130,134,248, + 6,11,11,9,1,0,252,128,128,128,128,252,128,128,128,128, + 252,6,11,11,8,1,0,252,128,128,128,128,252,128,128,128, + 128,128,9,11,22,11,1,0,30,0,97,128,192,128,128,0, + 128,0,135,128,128,128,128,128,192,128,96,128,63,128,8,11, + 11,10,1,0,129,129,129,129,129,255,129,129,129,129,129,1, + 11,11,3,1,0,128,128,128,128,128,128,128,128,128,128,128, + 6,11,11,8,1,0,4,4,4,4,4,4,4,4,132,140, + 120,8,11,11,9,1,0,134,140,152,176,224,224,176,152,140, + 134,131,6,11,11,7,1,0,128,128,128,128,128,128,128,128, + 128,128,252,11,11,22,13,1,0,192,96,224,224,224,160,161, + 160,177,160,145,32,147,32,154,32,138,32,142,32,132,32,8, + 11,11,10,1,0,193,225,225,177,177,153,137,141,133,135,131, + 9,11,22,11,1,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,7,11,11,9, + 1,0,252,134,130,130,134,252,128,128,128,128,128,10,11,22, + 12,1,0,62,0,99,0,193,128,129,128,128,128,128,128,128, + 128,129,128,193,128,99,0,63,192,7,11,11,9,1,0,252, + 134,130,130,134,248,132,134,134,130,130,8,11,11,10,1,0, + 60,194,131,128,240,126,7,1,129,195,124,9,11,22,11,1, + 0,255,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,11,11,10,1,0,129,129,129, + 129,129,129,129,129,131,194,60,9,11,22,10,0,0,192,128, + 65,128,97,128,97,0,35,0,51,0,18,0,22,0,30,0, + 12,0,12,0,14,11,22,15,0,0,195,4,67,140,67,140, + 102,136,38,136,36,216,52,80,60,80,24,80,24,112,24,32, + 9,11,22,11,1,0,193,0,99,0,38,0,52,0,28,0, + 24,0,60,0,38,0,98,0,195,0,129,128,9,11,22,10, + 1,0,193,128,65,0,99,0,38,0,52,0,28,0,8,0, + 8,0,8,0,8,0,8,0,8,11,11,10,1,0,127,3, + 6,6,12,24,56,48,96,224,255,3,14,14,6,2,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,224,4,12,12, + 6,1,255,128,128,128,64,64,64,32,32,32,32,16,16,3, + 14,14,6,1,253,224,32,32,32,32,32,32,32,32,32,32, + 32,32,224,7,10,10,15,4,0,16,16,40,40,72,68,68, + 130,130,130,8,1,1,8,0,254,255,2,3,3,3,0,9, + 128,192,64,6,8,8,8,1,0,120,204,4,124,196,132,140, + 116,7,11,11,9,1,0,128,128,128,188,198,134,130,130,134, + 196,184,6,8,8,8,1,0,120,204,132,128,128,132,204,120, + 7,11,11,9,1,0,2,2,2,122,198,134,130,130,134,198, + 58,6,8,8,8,1,0,120,196,132,252,128,132,204,120,5, + 11,11,7,1,0,56,32,32,248,32,32,32,32,32,32,32, + 7,11,11,9,1,253,122,198,134,130,130,134,198,122,6,198, + 120,6,11,11,8,1,0,128,128,128,184,204,132,132,132,132, + 132,132,1,11,11,3,1,0,128,0,0,128,128,128,128,128, + 128,128,128,2,14,14,4,1,253,64,0,0,64,64,64,64, + 64,64,64,64,64,64,192,6,11,11,7,1,0,128,128,128, + 136,144,160,224,160,176,152,140,1,11,11,3,1,0,128,128, + 128,128,128,128,128,128,128,128,128,11,8,16,13,1,0,185, + 192,206,96,132,32,132,32,132,32,132,32,132,32,132,32,6, + 8,8,8,1,0,184,204,132,132,132,132,132,132,7,8,8, + 9,1,0,120,196,134,130,130,134,196,120,7,11,11,9,1, + 253,188,198,134,130,130,134,198,188,128,128,128,7,11,11,9, + 1,253,122,198,134,130,130,134,198,122,2,2,2,4,8,8, + 5,1,0,240,192,128,128,128,128,128,128,6,8,8,8,1, + 0,120,140,128,240,28,4,140,120,4,10,10,6,1,0,32, + 32,240,32,32,32,32,32,32,48,6,8,8,8,1,0,132, + 132,132,132,132,132,204,116,8,8,8,8,0,0,195,66,102, + 36,36,60,24,24,12,8,16,12,0,0,198,48,70,48,79, + 32,105,32,41,96,41,192,56,192,16,192,7,8,8,8,1, + 0,196,76,120,48,48,120,204,134,8,11,11,8,0,253,195, + 66,102,38,52,60,24,24,24,16,48,5,8,8,7,1,0, + 248,24,16,32,96,64,192,248,5,15,15,7,1,252,24,48, + 32,32,32,32,96,192,96,32,32,32,32,48,24,1,16,16, + 6,3,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,15,15,7,1,252,192,96,32,32,32,32,48, + 24,48,32,32,32,32,96,192,8,2,2,8,0,3,115,206, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,5,0,0,1,11,11,5,2,253,128,0,0, + 128,128,128,128,128,128,128,128,6,12,12,8,1,254,8,8, + 120,220,148,144,160,164,236,120,64,64,7,11,11,9,1,0, + 60,102,64,64,248,64,64,64,64,64,254,8,9,9,10,1, + 2,129,90,36,66,66,66,36,90,129,8,11,11,9,0,0, + 65,99,34,231,20,28,255,8,8,8,8,1,14,14,6,3, + 253,128,128,128,128,128,128,0,0,128,128,128,128,128,128,5, + 14,14,7,1,253,120,136,128,192,112,216,136,152,240,48,24, + 8,24,240,4,1,1,4,0,10,144,11,11,22,13,1,0, + 31,0,127,128,115,64,225,96,160,32,160,32,161,32,179,96, + 94,64,96,128,31,0,6,8,8,6,0,3,56,72,120,72, + 88,104,0,252,6,6,6,8,1,1,36,72,216,216,72,36, + 8,3,3,10,1,4,255,1,1,255,11,11,22,13,1,0, + 31,0,127,128,81,64,209,96,158,32,147,32,145,32,209,96, + 64,64,97,128,31,0,4,1,1,4,0,10,240,3,4,4, + 5,1,7,224,160,160,224,9,10,20,15,3,0,8,0,8, + 0,8,0,255,128,8,0,8,0,8,0,0,0,0,0,255, + 128,4,6,6,6,1,5,112,144,48,96,192,240,5,6,6, + 6,0,5,120,200,24,48,136,112,3,3,3,3,1,9,96, + 64,128,255,7,14,14,9,1,253,126,244,244,244,244,116,20, + 20,20,20,20,20,20,20,1,2,2,4,2,4,128,128,4, + 3,3,5,1,253,48,16,224,3,6,6,5,1,5,96,160, + 32,32,32,32,5,8,8,7,1,3,112,216,136,136,216,112, + 0,248,6,6,6,8,1,1,216,72,36,36,72,216,10,11, + 22,12,1,0,97,0,162,0,34,0,36,0,36,0,41,128, + 9,128,18,128,51,192,32,128,96,128,11,11,22,13,1,0, + 96,128,161,0,34,0,34,0,36,0,37,192,9,32,24,96, + 16,192,33,128,97,224,11,11,22,12,0,0,120,128,9,128, + 49,0,27,0,138,0,116,192,4,192,9,64,11,224,16,64, + 48,64,6,11,11,8,1,253,16,0,16,16,48,96,192,128, + 132,236,120,11,16,32,11,0,0,24,0,8,0,4,0,0, + 0,0,0,6,0,14,0,10,0,27,0,25,0,49,128,49, + 128,63,192,96,192,64,64,192,96,11,16,32,11,0,0,3, + 0,2,0,4,0,0,0,0,0,6,0,14,0,10,0,27, + 0,25,0,49,128,49,128,63,192,96,192,64,64,192,96,11, + 16,32,11,0,0,4,0,14,0,9,0,0,0,0,0,6, + 0,14,0,10,0,27,0,25,0,49,128,49,128,63,192,96, + 192,64,64,192,96,11,15,30,11,0,0,13,0,22,0,0, + 0,0,0,6,0,14,0,10,0,27,0,25,0,49,128,49, + 128,63,192,96,192,64,64,192,96,11,14,28,11,0,0,9, + 0,0,0,0,0,6,0,14,0,11,0,27,0,25,0,17, + 128,48,128,63,192,96,192,64,96,192,96,11,16,32,11,0, + 0,14,0,10,0,14,0,0,0,0,0,4,0,12,0,10, + 0,10,0,17,0,17,0,49,128,63,128,96,192,64,64,192, + 96,13,11,22,14,0,0,3,248,5,0,13,0,13,0,25, + 0,25,248,49,0,63,0,97,0,65,0,193,248,8,15,15, + 10,1,252,62,97,193,128,128,128,128,128,193,67,62,12,6, + 2,28,6,16,16,9,1,0,64,32,16,0,0,252,128,128, + 128,128,252,128,128,128,128,252,6,16,16,9,1,0,8,16, + 16,0,0,252,128,128,128,128,252,128,128,128,128,252,6,16, + 16,9,1,0,48,48,72,0,0,252,128,128,128,128,252,128, + 128,128,128,252,6,15,15,8,1,0,72,0,0,0,252,128, + 128,128,128,252,128,128,128,128,252,3,16,16,3,255,0,192, + 64,32,0,0,32,32,32,32,32,32,32,32,32,32,32,3, + 16,16,3,1,0,96,192,128,0,0,128,128,128,128,128,128, + 128,128,128,128,128,3,16,16,3,0,0,64,224,160,0,0, + 64,64,64,64,64,64,64,64,64,64,64,4,14,14,4,0, + 0,144,0,0,64,64,64,64,64,64,64,64,64,64,64,10, + 11,22,11,0,0,62,0,33,128,32,128,32,192,32,64,248, + 64,32,64,32,192,32,128,33,128,62,0,8,15,15,10,1, + 0,52,44,0,0,193,225,225,177,177,153,137,141,133,135,131, + 9,16,32,11,1,0,48,0,16,0,8,0,0,0,0,0, + 62,0,99,0,193,128,129,128,128,128,128,128,128,128,129,128, + 193,0,99,0,62,0,9,16,32,11,1,0,4,0,12,0, + 8,0,0,0,0,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,9,16,32,11, + 1,0,8,0,28,0,20,0,0,0,0,0,62,0,99,0, + 193,128,129,128,128,128,128,128,128,128,129,128,193,0,99,0, + 62,0,9,15,30,11,1,0,24,0,44,0,0,0,0,0, + 62,0,99,0,193,128,128,128,128,128,128,128,128,128,129,128, + 193,0,119,0,62,0,9,15,30,11,1,0,18,0,0,0, + 0,0,0,0,62,0,99,0,193,128,129,128,128,128,128,128, + 128,128,129,128,193,0,99,0,62,0,7,7,7,15,4,1, + 130,68,40,16,40,68,130,9,13,26,11,1,255,0,128,63, + 0,99,0,195,128,134,128,140,128,136,128,152,128,177,128,225, + 0,99,0,254,0,128,0,8,16,16,10,1,0,32,16,24, + 0,0,129,129,129,129,129,129,129,129,195,230,60,8,16,16, + 10,1,0,12,8,16,0,0,129,129,129,129,129,129,129,129, + 195,230,60,8,16,16,10,1,0,24,24,36,0,0,129,129, + 129,129,129,129,129,129,195,230,60,8,15,15,10,1,0,36, + 0,0,0,129,129,129,129,129,129,129,129,131,194,60,9,16, + 32,10,1,0,6,0,4,0,8,0,0,0,0,0,193,128, + 65,0,99,0,38,0,52,0,28,0,8,0,8,0,8,0, + 8,0,8,0,7,11,11,9,1,0,128,128,252,134,130,130, + 134,252,128,128,128,7,11,11,8,1,0,120,204,132,140,144, + 144,156,134,130,178,156,6,12,12,8,1,0,32,16,16,0, + 120,204,4,124,196,132,140,116,6,13,13,8,1,0,24,16, + 48,32,0,120,204,4,124,196,132,140,116,6,12,12,8,1, + 0,48,104,72,0,120,204,4,124,196,132,140,116,6,11,11, + 8,1,0,120,0,0,120,204,4,124,196,132,140,116,6,11, + 11,8,1,0,72,0,0,120,204,4,124,196,132,140,116,6, + 13,13,8,1,0,48,72,72,48,0,120,196,4,124,196,132, + 140,116,12,8,16,13,1,0,251,192,138,32,4,48,127,240, + 196,0,140,48,202,96,113,192,6,12,12,8,1,252,120,204, + 132,128,128,132,204,120,48,24,8,48,6,13,13,8,1,0, + 64,32,32,16,0,120,196,132,252,128,132,204,120,6,13,13, + 8,1,0,8,16,16,32,0,120,196,132,252,128,132,204,120, + 6,12,12,8,1,0,48,104,72,0,120,196,132,252,128,132, + 204,120,6,11,11,8,1,0,72,0,0,120,204,132,252,128, + 132,204,120,2,12,12,3,0,0,128,64,64,0,64,64,64, + 64,64,64,64,64,3,12,12,3,0,0,32,64,128,0,64, + 64,64,64,64,64,64,64,5,12,12,3,255,0,112,80,136, + 0,32,32,32,32,32,32,32,32,4,11,11,4,0,0,144, + 0,0,64,64,64,64,64,64,64,64,7,11,11,9,1,0, + 104,112,136,124,198,134,130,130,134,196,120,6,11,11,8,1, + 0,120,0,0,184,204,132,132,132,132,132,132,7,13,13,9, + 1,0,96,32,16,16,0,120,196,134,130,130,134,196,120,7, + 13,13,9,1,0,12,24,16,32,0,120,196,134,130,130,134, + 196,120,7,12,12,9,1,0,56,40,68,0,120,196,134,130, + 130,134,196,120,7,11,11,9,1,0,120,0,0,120,196,134, + 130,130,134,196,120,7,11,11,9,1,0,72,0,0,120,196, + 134,130,130,134,196,120,9,7,14,15,3,1,8,0,8,0, + 0,0,255,128,0,0,8,0,8,0,8,10,10,9,0,255, + 1,62,98,71,73,89,83,98,124,192,6,13,13,8,1,0, + 64,32,32,16,0,132,132,132,132,132,132,204,116,6,13,13, + 8,1,0,24,16,48,32,0,132,132,132,132,132,132,204,116, + 6,12,12,8,1,0,48,80,72,0,132,132,132,132,132,132, + 204,116,6,11,11,8,1,0,72,0,0,132,132,132,132,132, + 132,204,116,8,15,15,8,0,253,4,8,16,0,195,66,102, + 38,52,60,24,24,24,80,112,7,14,14,9,1,253,128,128, + 128,188,198,134,130,130,134,198,188,128,128,128,8,14,14,8, + 0,253,36,0,0,195,66,102,36,36,60,24,24,24,16,48 + }; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 9 h=12 x= 3 y= 5 dx=15 dy= 0 ascent=11 len=18 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11n[265] U8G_SECTION(".progmem.u8g_font_fur11n") = { + 0,20,20,255,252,11,0,0,0,0,42,57,0,11,254,11, + 0,6,5,5,10,2,5,72,48,252,48,120,9,9,18,15, + 3,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,2,4,4,4,1,254,192,192,128,128,4,1, + 1,6,1,3,240,1,2,2,4,2,0,128,128,4,12,12, + 6,1,255,16,16,16,32,32,32,64,64,64,64,128,128,6, + 11,11,8,1,0,120,200,140,132,132,132,132,132,140,200,120, + 4,11,11,8,2,0,48,112,208,16,16,16,16,16,16,16, + 16,6,11,11,8,1,0,120,204,196,4,12,24,16,48,96, + 192,252,7,11,11,8,0,0,60,70,194,6,24,4,6,2, + 194,70,60,7,11,11,8,1,0,12,28,20,36,100,68,196, + 254,4,4,4,6,11,11,8,1,0,248,128,128,184,204,132, + 4,4,140,200,112,7,11,11,8,1,0,60,198,134,128,188, + 198,130,130,130,198,60,7,11,11,8,1,0,254,6,6,4, + 12,8,24,24,16,48,48,6,11,11,8,1,0,120,204,132, + 204,112,200,132,132,132,204,120,7,11,11,8,1,0,124,198, + 130,130,198,122,2,6,134,204,120}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--15-150-72-72-P-71-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=16 x= 4 y= 9 dx=15 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=20 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur11r[1729] U8G_SECTION(".progmem.u8g_font_fur11r") = { + 0,20,20,255,252,11,2,81,4,211,32,127,253,13,252,11, + 253,0,0,0,5,0,0,1,11,11,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,5,5,5,7,1,6,216,216, + 152,152,144,9,11,22,11,1,0,9,0,9,0,19,0,127, + 128,18,0,38,0,255,0,36,0,100,0,72,0,72,0,7, + 14,14,9,1,255,16,16,120,148,148,144,240,124,22,18,146, + 214,124,16,12,11,22,14,1,0,112,128,152,128,137,0,137, + 0,154,0,116,224,5,176,9,16,9,16,17,48,16,224,9, + 11,22,11,1,0,56,0,68,0,68,0,120,0,113,0,217, + 0,137,0,143,0,134,0,199,0,125,128,2,5,5,6,2, + 6,192,128,128,128,128,2,14,14,6,2,253,64,64,192,128, + 128,128,128,128,128,128,128,192,64,64,2,14,14,5,2,253, + 128,128,128,192,64,64,64,64,64,64,192,128,128,128,6,5, + 5,10,2,5,72,48,252,48,120,9,9,18,15,3,0,8, + 0,8,0,8,0,8,0,255,128,8,0,8,0,8,0,8, + 0,2,4,4,4,1,254,192,192,128,128,4,1,1,6,1, + 3,240,1,2,2,4,2,0,128,128,4,12,12,6,1,255, + 16,16,16,32,32,32,64,64,64,64,128,128,6,11,11,8, + 1,0,120,200,140,132,132,132,132,132,140,200,120,4,11,11, + 8,2,0,48,112,208,16,16,16,16,16,16,16,16,6,11, + 11,8,1,0,120,204,196,4,12,24,16,48,96,192,252,7, + 11,11,8,0,0,60,70,194,6,24,4,6,2,194,70,60, + 7,11,11,8,1,0,12,28,20,36,100,68,196,254,4,4, + 4,6,11,11,8,1,0,248,128,128,184,204,132,4,4,140, + 200,112,7,11,11,8,1,0,60,198,134,128,188,198,130,130, + 130,198,60,7,11,11,8,1,0,254,6,6,4,12,8,24, + 24,16,48,48,6,11,11,8,1,0,120,204,132,204,112,200, + 132,132,132,204,120,7,11,11,8,1,0,124,198,130,130,198, + 122,2,6,134,204,120,1,8,8,4,2,0,128,128,0,0, + 0,0,128,128,2,10,10,4,1,254,64,64,0,0,0,0, + 64,192,192,128,9,8,16,15,3,1,0,128,3,0,28,0, + 96,0,128,0,112,0,14,0,1,128,9,4,8,15,3,3, + 255,128,0,0,0,0,255,128,9,8,16,15,3,1,128,0, + 96,0,28,0,3,0,0,128,7,0,56,0,192,0,7,11, + 11,8,0,0,60,198,2,6,4,8,16,16,16,0,16,13, + 14,28,15,1,253,15,128,48,96,96,16,206,144,153,152,144, + 136,144,136,144,136,145,152,153,144,206,96,96,0,48,0,15, + 128,11,11,22,11,0,0,6,0,14,0,10,0,27,0,25, + 0,49,128,49,128,63,192,96,192,64,64,192,96,8,11,11, + 10,1,0,252,134,130,130,134,252,130,129,129,131,254,8,11, + 11,10,1,0,62,99,193,128,128,128,128,128,193,67,62,8, + 11,11,10,1,0,248,134,130,131,129,129,129,131,130,134,248, + 6,11,11,9,1,0,252,128,128,128,128,252,128,128,128,128, + 252,6,11,11,8,1,0,252,128,128,128,128,252,128,128,128, + 128,128,9,11,22,11,1,0,30,0,97,128,192,128,128,0, + 128,0,135,128,128,128,128,128,192,128,96,128,63,128,8,11, + 11,10,1,0,129,129,129,129,129,255,129,129,129,129,129,1, + 11,11,3,1,0,128,128,128,128,128,128,128,128,128,128,128, + 6,11,11,8,1,0,4,4,4,4,4,4,4,4,132,140, + 120,8,11,11,9,1,0,134,140,152,176,224,224,176,152,140, + 134,131,6,11,11,7,1,0,128,128,128,128,128,128,128,128, + 128,128,252,11,11,22,13,1,0,192,96,224,224,224,160,161, + 160,177,160,145,32,147,32,154,32,138,32,142,32,132,32,8, + 11,11,10,1,0,193,225,225,177,177,153,137,141,133,135,131, + 9,11,22,11,1,0,62,0,99,0,193,128,129,128,128,128, + 128,128,128,128,129,128,193,0,99,0,62,0,7,11,11,9, + 1,0,252,134,130,130,134,252,128,128,128,128,128,10,11,22, + 12,1,0,62,0,99,0,193,128,129,128,128,128,128,128,128, + 128,129,128,193,128,99,0,63,192,7,11,11,9,1,0,252, + 134,130,130,134,248,132,134,134,130,130,8,11,11,10,1,0, + 60,194,131,128,240,126,7,1,129,195,124,9,11,22,11,1, + 0,255,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,11,11,10,1,0,129,129,129, + 129,129,129,129,129,131,194,60,9,11,22,10,0,0,192,128, + 65,128,97,128,97,0,35,0,51,0,18,0,22,0,30,0, + 12,0,12,0,14,11,22,15,0,0,195,4,67,140,67,140, + 102,136,38,136,36,216,52,80,60,80,24,80,24,112,24,32, + 9,11,22,11,1,0,193,0,99,0,38,0,52,0,28,0, + 24,0,60,0,38,0,98,0,195,0,129,128,9,11,22,10, + 1,0,193,128,65,0,99,0,38,0,52,0,28,0,8,0, + 8,0,8,0,8,0,8,0,8,11,11,10,1,0,127,3, + 6,6,12,24,56,48,96,224,255,3,14,14,6,2,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,224,4,12,12, + 6,1,255,128,128,128,64,64,64,32,32,32,32,16,16,3, + 14,14,6,1,253,224,32,32,32,32,32,32,32,32,32,32, + 32,32,224,7,10,10,15,4,0,16,16,40,40,72,68,68, + 130,130,130,8,1,1,8,0,254,255,2,3,3,3,0,9, + 128,192,64,6,8,8,8,1,0,120,204,4,124,196,132,140, + 116,7,11,11,9,1,0,128,128,128,188,198,134,130,130,134, + 196,184,6,8,8,8,1,0,120,204,132,128,128,132,204,120, + 7,11,11,9,1,0,2,2,2,122,198,134,130,130,134,198, + 58,6,8,8,8,1,0,120,196,132,252,128,132,204,120,5, + 11,11,7,1,0,56,32,32,248,32,32,32,32,32,32,32, + 7,11,11,9,1,253,122,198,134,130,130,134,198,122,6,198, + 120,6,11,11,8,1,0,128,128,128,184,204,132,132,132,132, + 132,132,1,11,11,3,1,0,128,0,0,128,128,128,128,128, + 128,128,128,2,14,14,4,1,253,64,0,0,64,64,64,64, + 64,64,64,64,64,64,192,6,11,11,7,1,0,128,128,128, + 136,144,160,224,160,176,152,140,1,11,11,3,1,0,128,128, + 128,128,128,128,128,128,128,128,128,11,8,16,13,1,0,185, + 192,206,96,132,32,132,32,132,32,132,32,132,32,132,32,6, + 8,8,8,1,0,184,204,132,132,132,132,132,132,7,8,8, + 9,1,0,120,196,134,130,130,134,196,120,7,11,11,9,1, + 253,188,198,134,130,130,134,198,188,128,128,128,7,11,11,9, + 1,253,122,198,134,130,130,134,198,122,2,2,2,4,8,8, + 5,1,0,240,192,128,128,128,128,128,128,6,8,8,8,1, + 0,120,140,128,240,28,4,140,120,4,10,10,6,1,0,32, + 32,240,32,32,32,32,32,32,48,6,8,8,8,1,0,132, + 132,132,132,132,132,204,116,8,8,8,8,0,0,195,66,102, + 36,36,60,24,24,12,8,16,12,0,0,198,48,70,48,79, + 32,105,32,41,96,41,192,56,192,16,192,7,8,8,8,1, + 0,196,76,120,48,48,120,204,134,8,11,11,8,0,253,195, + 66,102,38,52,60,24,24,24,16,48,5,8,8,7,1,0, + 248,24,16,32,96,64,192,248,5,15,15,7,1,252,24,48, + 32,32,32,32,96,192,96,32,32,32,32,48,24,1,16,16, + 6,3,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,15,15,7,1,252,192,96,32,32,32,32,48, + 24,48,32,32,32,32,96,192,8,2,2,8,0,3,115,206, + 255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=18 h=21 x= 5 y=13 dx=19 dy= 0 ascent=21 len=54 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14[5349] U8G_SECTION(".progmem.u8g_font_fur14") = { + 0,26,26,255,251,14,3,59,6,250,32,255,252,21,251,14, + 252,0,0,0,6,0,0,2,14,14,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,0,0,192,6,6,6,9,1, + 8,204,204,76,76,68,68,12,14,28,14,1,0,6,96,4, + 64,4,64,12,192,127,240,8,128,25,128,25,0,255,224,19, + 0,51,0,34,0,34,0,102,0,9,18,36,11,1,254,8, + 0,8,0,62,0,107,0,201,128,200,0,200,0,248,0,126, + 0,15,0,9,128,9,128,201,128,201,128,107,0,62,0,8, + 0,8,0,16,14,28,18,1,0,120,16,108,16,198,32,198, + 96,198,64,204,128,124,128,1,60,3,102,2,99,6,99,4, + 99,8,102,8,60,12,14,28,14,1,0,30,0,51,0,97, + 0,99,0,51,0,60,0,60,96,108,96,198,96,195,96,193, + 192,192,192,99,224,62,48,1,6,6,7,3,8,128,128,128, + 128,128,128,3,17,17,7,2,253,32,96,96,64,192,192,192, + 192,192,192,192,192,192,64,96,96,32,3,17,17,7,2,253, + 128,128,192,192,64,64,96,96,96,96,96,96,64,192,192,128, + 128,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0,2,10,10,5,2,0,192,192,0,0,0, + 0,0,0,192,192,3,12,12,5,1,254,96,96,0,0,0, + 0,0,96,96,64,192,192,12,10,20,19,4,1,0,48,0, + 224,7,0,28,0,224,0,192,0,56,0,14,0,1,192,0, + 48,11,5,10,19,4,4,255,224,0,0,0,0,0,0,255, + 224,12,10,20,19,4,1,128,0,112,0,28,0,3,128,0, + 96,0,112,1,192,14,0,112,0,192,0,8,14,14,9,0, + 0,60,126,195,3,3,2,6,12,24,24,24,0,0,24,17, + 18,54,19,1,252,7,240,0,28,60,0,48,6,0,96,3, + 0,99,243,0,198,113,0,196,49,128,204,49,128,204,49,128, + 204,49,128,204,49,128,196,51,0,70,95,0,99,158,0,96, + 0,0,48,0,0,30,16,0,7,240,0,14,14,28,14,0, + 0,3,0,7,128,7,128,4,192,12,192,12,192,24,96,24, + 96,31,240,63,240,48,24,96,24,96,24,192,12,10,14,28, + 13,2,0,255,0,193,128,192,192,192,192,192,192,193,128,254, + 0,195,128,192,192,192,192,192,192,192,192,195,128,255,0,11, + 14,28,13,1,0,31,128,57,192,96,96,64,96,192,0,192, + 0,192,0,192,0,192,0,192,0,64,96,96,96,49,192,31, + 0,11,14,28,14,2,0,254,0,195,128,192,192,192,192,192, + 96,192,96,192,96,192,96,192,96,192,96,192,192,192,192,195, + 128,254,0,9,14,28,12,2,0,255,128,192,0,192,0,192, + 0,192,0,192,0,255,128,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,8,14,14,11,2,0,255,192,192,192,192, + 192,255,192,192,192,192,192,192,192,12,14,28,14,1,0,15, + 128,56,224,96,48,64,0,192,0,192,0,193,240,192,48,192, + 48,192,48,96,48,96,48,56,112,15,224,10,14,28,14,2, + 0,192,192,192,192,192,192,192,192,192,192,192,192,255,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,2,14,14, + 5,2,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,14,14,11,1,0,3,3,3,3,3,3,3,3,3, + 3,195,195,102,60,10,14,28,13,2,0,193,128,195,0,198, + 0,204,0,216,0,240,0,240,0,216,0,220,0,206,0,199, + 0,195,0,193,128,192,192,8,14,14,11,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,255,255,14,14,28,18,2, + 0,224,28,224,28,240,60,240,60,216,108,216,108,216,108,204, + 204,204,204,196,140,199,140,199,140,195,12,195,12,11,14,28, + 14,2,0,224,96,224,96,240,96,248,96,216,96,220,96,204, + 96,198,96,198,96,195,96,195,96,193,224,193,224,192,224,12, + 14,28,14,1,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,9,14,28,12,2,0,254,0,195,0,193,128,193,128,193, + 128,193,128,195,0,254,0,192,0,192,0,192,0,192,0,192, + 0,192,0,14,14,28,15,1,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,252,9,14,28,12,2,0,254,0,195,0,193, + 128,193,128,193,128,195,0,254,0,195,0,195,0,193,0,193, + 128,193,128,193,128,193,128,10,14,28,12,1,0,63,0,97, + 128,192,192,192,0,192,0,240,0,127,0,31,128,1,192,0, + 192,192,192,192,192,97,128,62,0,11,14,28,13,1,0,255, + 224,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,11,14,28,15,2, + 0,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,96,192,113,192,31,0,12,14,28, + 12,0,0,224,48,96,112,96,96,48,96,48,96,48,192,24, + 192,24,192,25,128,13,128,13,0,15,0,7,0,6,0,18, + 14,42,18,0,0,192,224,192,96,224,192,97,225,128,97,161, + 128,33,177,128,49,49,128,51,51,0,51,19,0,27,27,0, + 26,26,0,30,30,0,14,14,0,12,14,0,12,12,0,12, + 14,28,13,1,0,224,96,96,192,49,192,57,128,27,0,15, + 0,14,0,15,0,27,0,25,128,49,192,96,192,224,224,192, + 112,12,14,28,12,0,0,224,112,96,96,112,192,48,192,25, + 128,25,128,15,0,14,0,6,0,6,0,6,0,6,0,6, + 0,6,0,10,14,28,12,1,0,127,192,0,192,1,128,3, + 128,3,0,6,0,14,0,28,0,24,0,56,0,112,0,96, + 0,224,0,255,192,4,18,18,8,2,252,240,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,5,15,15, + 8,1,255,128,192,64,64,64,96,32,32,48,16,16,16,24, + 8,8,4,18,18,8,2,252,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,9,12,24,19,5,0, + 8,0,8,0,20,0,20,0,34,0,34,0,34,0,65,0, + 65,0,193,128,128,128,128,128,10,1,2,10,0,254,255,192, + 3,4,4,4,0,12,128,192,96,32,8,10,10,10,1,0, + 62,103,195,3,63,99,195,195,231,123,9,14,28,11,1,0, + 192,0,192,0,192,0,192,0,222,0,227,0,193,128,193,128, + 193,128,193,128,193,128,193,0,227,0,222,0,8,10,10,10, + 1,0,62,103,195,192,192,192,192,195,103,60,9,14,28,11, + 1,0,1,128,1,128,1,128,1,128,61,128,103,128,195,128, + 193,128,193,128,193,128,193,128,65,128,99,128,29,128,9,10, + 20,11,1,0,62,0,99,0,193,0,193,128,255,128,192,0, + 192,0,67,0,103,0,62,0,6,14,14,8,1,0,28,48, + 48,48,252,48,48,48,48,48,48,48,48,48,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,65,128,115,0,62,0,8,14, + 14,10,1,0,192,192,192,192,222,231,195,195,195,195,195,195, + 195,195,2,14,14,4,1,0,192,0,0,0,192,192,192,192, + 192,192,192,192,192,192,3,18,18,5,1,252,96,0,0,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,192,7,14, + 14,9,1,0,192,192,192,192,198,204,216,240,240,248,216,204, + 198,198,2,14,14,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,14,10,20,17,1,0,222,120,231,156, + 195,12,195,12,195,12,195,12,195,12,195,12,195,12,195,12, + 8,10,10,10,1,0,222,231,195,195,195,195,195,195,195,195, + 9,10,20,11,1,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,99,0,62,0,9,14,28,11,1,252, + 222,0,227,0,193,128,193,128,193,128,193,128,193,128,193,128, + 227,0,222,0,192,0,192,0,192,0,192,0,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,1,128,1,128,1,128,5,10, + 10,7,1,0,248,224,192,192,192,192,192,192,192,192,8,10, + 10,10,1,0,124,231,195,192,124,30,3,195,230,124,6,13, + 13,8,1,0,16,48,48,252,48,48,48,48,48,48,48,48, + 28,8,10,10,10,1,0,195,195,195,195,195,195,195,195,231, + 123,10,10,20,10,0,0,192,192,96,128,97,128,49,128,51, + 0,51,0,26,0,30,0,14,0,12,0,15,10,20,15,0, + 0,195,134,99,134,99,196,98,204,38,76,54,72,52,120,28, + 120,28,48,24,48,9,10,20,10,1,0,195,0,99,0,118, + 0,60,0,24,0,28,0,60,0,102,0,195,0,195,128,10, + 14,28,10,0,252,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,24,0,24, + 0,7,10,10,9,1,0,254,6,12,28,24,48,96,96,192, + 254,6,19,19,10,2,251,12,24,16,48,48,48,48,48,96, + 224,224,48,48,48,48,16,16,24,28,1,21,21,7,3,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,19,19,10,2,251,224,112,48,48,48, + 48,48,16,24,12,28,16,48,48,48,48,48,48,224,10,2, + 4,10,0,4,120,192,207,128,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,6,0,0,2, + 14,14,7,3,252,192,192,0,0,192,192,192,192,192,192,192, + 192,192,192,8,14,14,10,1,254,2,4,60,102,203,200,200, + 208,208,211,102,60,32,64,10,14,28,11,1,0,31,0,49, + 128,96,192,96,0,96,0,252,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,255,128,10,10,20,12,1,3,128, + 64,94,128,51,0,65,128,64,128,64,128,64,128,33,0,94, + 128,128,64,10,14,28,12,1,0,192,192,96,128,97,128,49, + 0,243,192,27,0,30,0,255,192,12,0,12,0,12,0,12, + 0,12,0,12,0,1,18,18,7,3,252,128,128,128,128,128, + 128,128,128,0,0,128,128,128,128,128,128,128,128,7,17,17, + 9,1,253,60,100,192,192,96,56,124,198,198,206,124,60,14, + 6,6,140,248,6,1,1,6,0,13,204,14,14,28,16,1, + 0,15,192,28,224,39,144,76,200,216,108,152,4,152,4,152, + 4,152,100,140,204,71,200,32,16,16,32,15,192,7,10,10, + 8,1,4,120,204,4,124,196,132,124,0,0,254,7,8,8, + 11,2,1,38,100,204,216,152,204,100,38,10,5,10,12,1, + 3,255,192,0,64,0,64,0,64,0,64,255,14,14,28,16, + 1,0,15,192,28,224,47,208,76,104,204,108,140,100,143,132, + 140,68,140,100,204,108,76,104,32,16,28,224,15,192,6,1, + 1,6,0,13,252,4,5,5,6,1,9,96,240,144,144,96, + 11,12,24,19,4,0,6,0,6,0,6,0,6,0,255,224, + 6,0,6,0,6,0,0,0,0,0,0,0,255,224,6,8, + 8,7,1,6,120,220,12,12,24,48,192,252,6,8,8,7, + 1,6,120,204,12,48,24,140,204,120,4,4,4,4,1,12, + 48,96,64,192,255,9,18,36,11,1,252,63,128,121,0,249, + 0,249,0,249,0,249,0,121,0,25,0,9,0,9,0,9, + 0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,2, + 2,2,5,2,5,192,192,6,5,5,5,0,251,64,120,12, + 12,248,4,7,7,6,1,7,112,240,48,48,48,48,48,6, + 10,10,8,1,4,120,72,132,132,132,132,204,120,0,252,7, + 8,8,11,2,1,152,204,100,102,102,100,204,152,13,14,28, + 15,1,0,112,64,240,192,48,128,49,128,49,0,51,0,50, + 48,54,112,12,112,8,176,25,176,17,248,48,48,32,48,13, + 14,28,15,1,0,112,64,240,192,48,128,49,128,49,0,50, + 0,50,112,52,216,12,24,8,24,24,48,16,96,48,192,32, + 248,14,14,28,16,1,0,120,48,204,32,12,96,48,192,12, + 128,141,128,121,24,3,56,2,120,4,88,12,152,8,252,24, + 24,16,24,8,14,14,10,1,252,12,12,0,12,12,12,24, + 48,96,192,192,193,127,62,14,20,40,14,0,0,12,0,6, + 0,2,0,3,0,0,0,0,0,3,0,7,128,7,128,4, + 192,12,192,12,192,24,96,24,96,31,240,63,240,48,24,96, + 24,96,24,192,12,14,20,40,14,0,0,0,192,0,128,1, + 128,1,0,0,0,0,0,3,0,7,128,7,128,4,192,12, + 192,12,192,24,96,24,96,31,240,63,240,48,24,96,24,96, + 24,192,12,14,20,40,14,0,0,3,0,3,128,6,128,4, + 192,0,0,0,0,3,0,7,128,7,128,4,192,12,192,12, + 192,24,96,24,96,31,240,63,240,48,24,96,24,96,24,192, + 12,14,18,36,14,0,0,7,192,0,0,0,0,0,0,3, + 0,7,128,7,128,4,192,12,192,12,192,24,96,24,96,31, + 240,63,240,48,24,96,24,96,24,192,12,13,18,36,15,1, + 0,12,192,0,0,0,0,0,0,7,0,7,0,13,128,13, + 128,12,192,24,192,24,192,48,96,63,224,63,240,96,48,96, + 24,192,24,192,24,13,21,42,14,1,0,6,0,13,0,9, + 0,9,0,6,0,0,0,0,0,6,0,7,0,15,0,13, + 0,25,128,25,128,16,192,48,192,63,224,127,224,96,32,192, + 48,192,48,192,24,17,14,42,19,1,0,1,255,128,3,192, + 0,2,192,0,6,192,0,14,192,0,12,192,0,28,255,128, + 24,192,0,56,192,0,63,192,0,96,192,0,96,192,0,192, + 192,0,192,255,128,11,18,36,13,1,252,31,128,57,192,96, + 96,64,96,192,0,192,0,192,0,192,0,192,0,192,0,64, + 96,96,96,49,192,31,0,4,0,7,0,1,128,15,128,9, + 20,40,12,2,0,96,0,48,0,24,0,8,0,0,0,0, + 0,255,128,192,0,192,0,192,0,192,0,192,0,255,128,192, + 0,192,0,192,0,192,0,192,0,192,0,255,128,9,20,40, + 12,2,0,6,0,4,0,12,0,24,0,0,0,0,0,255, + 128,192,0,192,0,192,0,192,0,192,0,255,128,192,0,192, + 0,192,0,192,0,192,0,192,0,255,128,9,20,40,12,2, + 0,24,0,28,0,52,0,38,0,0,0,0,0,255,128,192, + 0,192,0,192,0,192,0,192,0,255,128,192,0,192,0,192, + 0,192,0,192,0,192,0,255,128,9,18,36,12,2,0,102, + 0,0,0,0,0,0,0,255,128,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,255,128,4,20,20,5,0,0,192,96,32,48,0,0,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,4,20,20, + 5,2,0,48,96,64,128,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,5,20,20,5,0,0,48,112,88, + 200,0,0,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,6,18,18,6,0,0,204,0,0,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,13,14,28,14,0,0,127, + 128,97,224,96,112,96,48,96,16,96,24,254,24,96,24,96, + 24,96,16,96,48,96,96,97,224,127,128,11,18,36,14,2, + 0,31,0,0,0,0,0,0,0,224,96,224,96,240,96,248, + 96,216,96,220,96,204,96,198,96,198,96,195,96,195,96,193, + 224,193,224,192,224,12,20,40,14,1,0,24,0,12,0,6, + 0,2,0,0,0,0,0,31,128,57,192,96,96,64,32,192, + 48,192,48,192,48,192,48,192,48,192,48,64,32,96,96,57, + 192,15,0,12,20,40,14,1,0,1,128,3,0,6,0,4, + 0,0,0,0,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,12,20,40,14,1,0,6,0,15,0,9,0,16,128,0, + 0,0,0,31,128,57,192,96,96,64,32,192,48,192,48,192, + 48,192,48,192,48,192,48,64,32,96,96,57,192,15,0,12, + 19,38,14,1,0,12,128,31,0,0,0,0,0,0,0,31, + 128,57,192,96,96,64,32,192,48,192,48,192,48,192,48,192, + 48,192,48,96,96,112,224,63,192,15,0,12,18,36,14,1, + 0,13,128,0,0,0,0,0,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,0,11,10,20,19,4,1,192,96,96,192,49, + 128,27,0,14,0,14,0,27,0,49,128,96,192,64,96,12, + 16,32,14,1,255,0,48,31,224,56,224,96,224,65,176,193, + 176,195,48,198,48,198,48,204,48,220,48,88,32,112,96,57, + 192,127,0,192,0,11,20,40,15,2,0,24,0,8,0,4, + 0,6,0,0,0,0,0,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,96,192,127, + 192,31,0,11,20,40,15,2,0,3,0,2,0,4,0,12, + 0,0,0,0,0,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,96,192,127,192,31, + 0,11,20,40,15,2,0,14,0,14,0,27,0,17,0,0, + 0,0,0,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,96,192,127,192,31,0,11, + 18,36,15,2,0,25,128,0,0,0,0,0,0,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,96,192,113,192,31,0,12,20,40,12,0,0,1, + 128,3,0,2,0,4,0,0,0,0,0,224,112,96,96,112, + 192,48,192,25,128,25,128,15,0,14,0,6,0,6,0,6, + 0,6,0,6,0,6,0,9,14,28,12,2,0,192,0,192, + 0,192,0,254,0,195,0,193,128,193,128,193,128,195,128,254, + 0,192,0,192,0,192,0,192,0,10,14,28,11,1,0,62, + 0,103,0,195,0,195,0,198,0,204,0,204,0,206,0,199, + 128,193,128,192,192,216,192,220,128,199,128,8,15,15,10,1, + 0,48,24,8,0,0,62,103,195,3,63,99,195,195,231,123, + 8,16,16,10,1,0,6,12,24,16,0,0,62,103,195,3, + 63,99,195,195,231,123,8,16,16,10,1,0,24,28,36,38, + 0,0,62,103,195,3,63,99,195,195,231,123,8,14,14,10, + 1,0,62,0,0,0,62,103,195,3,63,115,195,195,231,123, + 8,14,14,10,1,0,102,0,0,0,62,103,195,3,63,99, + 195,195,231,123,8,16,16,10,1,0,28,34,34,28,0,0, + 62,99,193,1,63,113,193,193,231,61,16,10,20,18,1,0, + 62,124,227,198,193,131,1,131,63,255,225,128,193,128,195,131, + 230,238,124,60,8,14,14,10,1,252,62,103,195,192,192,192, + 192,195,102,60,16,28,6,62,9,16,32,11,1,0,48,0, + 48,0,24,0,8,0,0,0,0,0,62,0,99,0,193,0, + 193,128,255,128,192,0,192,0,67,0,103,0,62,0,9,16, + 32,11,1,0,6,0,12,0,8,0,24,0,0,0,0,0, + 62,0,99,0,193,0,193,128,255,128,192,0,192,0,67,0, + 103,0,62,0,9,16,32,11,1,0,24,0,28,0,52,0, + 34,0,0,0,0,0,62,0,99,0,193,0,193,128,255,128, + 192,0,192,0,67,0,103,0,62,0,9,14,28,11,1,0, + 102,0,0,0,0,0,0,0,62,0,99,0,193,0,193,128, + 255,128,192,0,192,0,67,0,103,0,62,0,3,15,15,4, + 0,0,128,192,96,32,0,96,96,96,96,96,96,96,96,96, + 96,3,15,15,4,1,0,96,64,192,128,0,192,192,192,192, + 192,192,192,192,192,192,6,15,15,4,255,0,48,120,72,132, + 0,48,48,48,48,48,48,48,48,48,48,6,14,14,5,0, + 0,204,0,0,0,48,48,48,48,48,48,48,48,48,48,9, + 14,28,11,1,0,102,0,24,0,108,0,6,0,63,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,8,14,14,10,1,0,52,124,0,0,222,231,195,195,195, + 195,195,195,195,195,9,16,32,11,1,0,48,0,16,0,24, + 0,8,0,0,0,0,0,62,0,99,0,193,128,193,128,193, + 128,193,128,193,128,193,128,99,0,62,0,9,16,32,11,1, + 0,6,0,4,0,12,0,8,0,0,0,0,0,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,9,16,32,11,1,0,8,0,28,0,20,0,34,0,0, + 0,0,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,62,0,0, + 0,0,0,0,0,62,0,99,0,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,9,14,28,11,1,0,51, + 0,0,0,0,0,0,0,62,0,115,0,193,128,192,128,192, + 128,192,128,192,128,193,128,115,0,62,0,11,8,16,19,4, + 2,6,0,6,0,0,0,0,0,255,224,0,0,6,0,6, + 0,9,12,24,11,1,0,1,128,63,0,99,0,199,128,197, + 128,201,128,217,128,209,128,225,128,99,0,254,0,128,0,8, + 16,16,10,1,0,96,48,16,8,0,0,195,195,195,195,195, + 195,195,195,231,123,8,16,16,10,1,0,4,12,8,16,0, + 0,195,195,195,195,195,195,195,195,231,123,8,16,16,10,1, + 0,24,24,52,36,0,0,195,195,195,195,195,195,195,195,231, + 123,8,14,14,10,1,0,102,0,0,0,195,195,195,195,195, + 195,195,195,231,123,10,19,38,10,0,252,3,0,6,0,4, + 0,8,0,0,0,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,120,0,120, + 0,9,18,36,11,1,252,192,0,192,0,192,0,192,0,222, + 0,227,0,193,128,193,128,193,128,193,128,193,128,193,128,227, + 0,222,0,192,0,192,0,192,0,192,0,10,18,36,10,0, + 252,51,0,0,0,0,0,0,0,192,192,97,128,97,128,97, + 0,51,0,51,0,30,0,30,0,30,0,12,0,12,0,24, + 0,24,0,24,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=11 h=15 x= 4 y= 7 dx=19 dy= 0 ascent=14 len=28 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14n[405] U8G_SECTION(".progmem.u8g_font_fur14n") = { + 0,26,26,255,251,14,0,0,0,0,42,57,0,14,254,14, + 0,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--19-190-72-72-P-92-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=18 h=21 x= 5 y=12 dx=19 dy= 0 ascent=16 len=54 + Font Bounding box w=26 h=26 x=-1 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur14r[2489] U8G_SECTION(".progmem.u8g_font_fur14r") = { + 0,26,26,255,251,14,3,59,6,250,32,127,252,16,251,14, + 252,0,0,0,6,0,0,2,14,14,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,0,0,192,6,6,6,9,1, + 8,204,204,76,76,68,68,12,14,28,14,1,0,6,96,4, + 64,4,64,12,192,127,240,8,128,25,128,25,0,255,224,19, + 0,51,0,34,0,34,0,102,0,9,18,36,11,1,254,8, + 0,8,0,62,0,107,0,201,128,200,0,200,0,248,0,126, + 0,15,0,9,128,9,128,201,128,201,128,107,0,62,0,8, + 0,8,0,16,14,28,18,1,0,120,16,108,16,198,32,198, + 96,198,64,204,128,124,128,1,60,3,102,2,99,6,99,4, + 99,8,102,8,60,12,14,28,14,1,0,30,0,51,0,97, + 0,99,0,51,0,60,0,60,96,108,96,198,96,195,96,193, + 192,192,192,99,224,62,48,1,6,6,7,3,8,128,128,128, + 128,128,128,3,17,17,7,2,253,32,96,96,64,192,192,192, + 192,192,192,192,192,192,64,96,96,32,3,17,17,7,2,253, + 128,128,192,192,64,64,96,96,96,96,96,96,64,192,192,128, + 128,8,7,7,12,2,7,36,36,24,255,24,60,102,11,12, + 24,19,4,0,6,0,6,0,6,0,6,0,6,0,6,0, + 255,224,6,0,6,0,6,0,6,0,6,0,3,5,5,5, + 1,254,96,96,192,192,128,5,1,1,7,1,4,248,2,2, + 2,5,2,0,192,192,6,15,15,8,1,255,12,8,8,24, + 16,16,48,48,32,32,96,64,64,192,128,9,14,28,11,1, + 0,60,0,103,0,67,0,193,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,0,67,0,119,0,60,0,5,14,14, + 11,2,0,56,120,248,152,24,24,24,24,24,24,24,24,24, + 24,8,14,14,11,1,0,60,102,195,195,3,3,6,12,28, + 56,48,96,192,255,9,14,28,11,1,0,62,0,119,0,97, + 128,193,128,1,128,3,0,28,0,7,0,3,0,1,128,193, + 128,193,128,99,0,62,0,9,14,28,11,1,0,7,0,7, + 0,15,0,27,0,19,0,51,0,99,0,99,0,195,0,255, + 128,255,128,3,0,3,0,3,0,9,14,28,11,1,0,255, + 0,192,0,192,0,192,0,222,0,243,0,193,0,193,128,1, + 128,1,128,193,128,195,0,102,0,60,0,9,14,28,11,1, + 0,30,0,99,0,65,128,192,0,192,0,222,0,255,0,195, + 0,193,128,193,128,193,128,65,0,103,0,30,0,8,14,14, + 11,1,0,255,3,3,2,6,6,12,12,12,24,24,24,48, + 48,9,14,28,11,1,0,62,0,99,0,193,128,193,128,193, + 128,99,0,62,0,99,0,193,128,193,128,193,128,193,128,99, + 0,62,0,9,14,28,11,1,0,62,0,99,0,193,0,193, + 128,193,128,193,128,99,128,125,128,1,128,1,128,193,0,67, + 0,102,0,60,0,2,10,10,5,2,0,192,192,0,0,0, + 0,0,0,192,192,3,12,12,5,1,254,96,96,0,0,0, + 0,0,96,96,64,192,192,12,10,20,19,4,1,0,48,0, + 224,7,0,28,0,224,0,192,0,56,0,14,0,1,192,0, + 48,11,5,10,19,4,4,255,224,0,0,0,0,0,0,255, + 224,12,10,20,19,4,1,128,0,112,0,28,0,3,128,0, + 96,0,112,1,192,14,0,112,0,192,0,8,14,14,9,0, + 0,60,126,195,3,3,2,6,12,24,24,24,0,0,24,17, + 18,54,19,1,252,7,240,0,28,60,0,48,6,0,96,3, + 0,99,243,0,198,113,0,196,49,128,204,49,128,204,49,128, + 204,49,128,204,49,128,196,51,0,70,95,0,99,158,0,96, + 0,0,48,0,0,30,16,0,7,240,0,14,14,28,14,0, + 0,3,0,7,128,7,128,4,192,12,192,12,192,24,96,24, + 96,31,240,63,240,48,24,96,24,96,24,192,12,10,14,28, + 13,2,0,255,0,193,128,192,192,192,192,192,192,193,128,254, + 0,195,128,192,192,192,192,192,192,192,192,195,128,255,0,11, + 14,28,13,1,0,31,128,57,192,96,96,64,96,192,0,192, + 0,192,0,192,0,192,0,192,0,64,96,96,96,49,192,31, + 0,11,14,28,14,2,0,254,0,195,128,192,192,192,192,192, + 96,192,96,192,96,192,96,192,96,192,96,192,192,192,192,195, + 128,254,0,9,14,28,12,2,0,255,128,192,0,192,0,192, + 0,192,0,192,0,255,128,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,8,14,14,11,2,0,255,192,192,192,192, + 192,255,192,192,192,192,192,192,192,12,14,28,14,1,0,15, + 128,56,224,96,48,64,0,192,0,192,0,193,240,192,48,192, + 48,192,48,96,48,96,48,56,112,15,224,10,14,28,14,2, + 0,192,192,192,192,192,192,192,192,192,192,192,192,255,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,2,14,14, + 5,2,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,14,14,11,1,0,3,3,3,3,3,3,3,3,3, + 3,195,195,102,60,10,14,28,13,2,0,193,128,195,0,198, + 0,204,0,216,0,240,0,240,0,216,0,220,0,206,0,199, + 0,195,0,193,128,192,192,8,14,14,11,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,255,255,14,14,28,18,2, + 0,224,28,224,28,240,60,240,60,216,108,216,108,216,108,204, + 204,204,204,196,140,199,140,199,140,195,12,195,12,11,14,28, + 14,2,0,224,96,224,96,240,96,248,96,216,96,220,96,204, + 96,198,96,198,96,195,96,195,96,193,224,193,224,192,224,12, + 14,28,14,1,0,31,128,57,192,96,96,64,32,192,48,192, + 48,192,48,192,48,192,48,192,48,64,32,96,96,57,192,15, + 0,9,14,28,12,2,0,254,0,195,0,193,128,193,128,193, + 128,193,128,195,0,254,0,192,0,192,0,192,0,192,0,192, + 0,192,0,14,14,28,15,1,0,31,128,57,192,96,96,64, + 32,192,48,192,48,192,48,192,48,192,48,192,48,64,32,96, + 96,57,192,15,252,9,14,28,12,2,0,254,0,195,0,193, + 128,193,128,193,128,195,0,254,0,195,0,195,0,193,0,193, + 128,193,128,193,128,193,128,10,14,28,12,1,0,63,0,97, + 128,192,192,192,0,192,0,240,0,127,0,31,128,1,192,0, + 192,192,192,192,192,97,128,62,0,11,14,28,13,1,0,255, + 224,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,11,14,28,15,2, + 0,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,96,192,113,192,31,0,12,14,28, + 12,0,0,224,48,96,112,96,96,48,96,48,96,48,192,24, + 192,24,192,25,128,13,128,13,0,15,0,7,0,6,0,18, + 14,42,18,0,0,192,224,192,96,224,192,97,225,128,97,161, + 128,33,177,128,49,49,128,51,51,0,51,19,0,27,27,0, + 26,26,0,30,30,0,14,14,0,12,14,0,12,12,0,12, + 14,28,13,1,0,224,96,96,192,49,192,57,128,27,0,15, + 0,14,0,15,0,27,0,25,128,49,192,96,192,224,224,192, + 112,12,14,28,12,0,0,224,112,96,96,112,192,48,192,25, + 128,25,128,15,0,14,0,6,0,6,0,6,0,6,0,6, + 0,6,0,10,14,28,12,1,0,127,192,0,192,1,128,3, + 128,3,0,6,0,14,0,28,0,24,0,56,0,112,0,96, + 0,224,0,255,192,4,18,18,8,2,252,240,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,5,15,15, + 8,1,255,128,192,64,64,64,96,32,32,48,16,16,16,24, + 8,8,4,18,18,8,2,252,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,9,12,24,19,5,0, + 8,0,8,0,20,0,20,0,34,0,34,0,34,0,65,0, + 65,0,193,128,128,128,128,128,10,1,2,10,0,254,255,192, + 3,4,4,4,0,12,128,192,96,32,8,10,10,10,1,0, + 62,103,195,3,63,99,195,195,231,123,9,14,28,11,1,0, + 192,0,192,0,192,0,192,0,222,0,227,0,193,128,193,128, + 193,128,193,128,193,128,193,0,227,0,222,0,8,10,10,10, + 1,0,62,103,195,192,192,192,192,195,103,60,9,14,28,11, + 1,0,1,128,1,128,1,128,1,128,61,128,103,128,195,128, + 193,128,193,128,193,128,193,128,65,128,99,128,29,128,9,10, + 20,11,1,0,62,0,99,0,193,0,193,128,255,128,192,0, + 192,0,67,0,103,0,62,0,6,14,14,8,1,0,28,48, + 48,48,252,48,48,48,48,48,48,48,48,48,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,65,128,115,0,62,0,8,14, + 14,10,1,0,192,192,192,192,222,231,195,195,195,195,195,195, + 195,195,2,14,14,4,1,0,192,0,0,0,192,192,192,192, + 192,192,192,192,192,192,3,18,18,5,1,252,96,0,0,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,192,7,14, + 14,9,1,0,192,192,192,192,198,204,216,240,240,248,216,204, + 198,198,2,14,14,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,14,10,20,17,1,0,222,120,231,156, + 195,12,195,12,195,12,195,12,195,12,195,12,195,12,195,12, + 8,10,10,10,1,0,222,231,195,195,195,195,195,195,195,195, + 9,10,20,11,1,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,99,0,62,0,9,14,28,11,1,252, + 222,0,227,0,193,128,193,128,193,128,193,128,193,128,193,128, + 227,0,222,0,192,0,192,0,192,0,192,0,9,14,28,11, + 1,252,61,128,99,128,193,128,193,128,193,128,193,128,193,128, + 193,128,99,128,61,128,1,128,1,128,1,128,1,128,5,10, + 10,7,1,0,248,224,192,192,192,192,192,192,192,192,8,10, + 10,10,1,0,124,231,195,192,124,30,3,195,230,124,6,13, + 13,8,1,0,16,48,48,252,48,48,48,48,48,48,48,48, + 28,8,10,10,10,1,0,195,195,195,195,195,195,195,195,231, + 123,10,10,20,10,0,0,192,192,96,128,97,128,49,128,51, + 0,51,0,26,0,30,0,14,0,12,0,15,10,20,15,0, + 0,195,134,99,134,99,196,98,204,38,76,54,72,52,120,28, + 120,28,48,24,48,9,10,20,10,1,0,195,0,99,0,118, + 0,60,0,24,0,28,0,60,0,102,0,195,0,195,128,10, + 14,28,10,0,252,192,192,97,128,97,128,49,128,51,0,19, + 0,26,0,30,0,14,0,12,0,12,0,12,0,24,0,24, + 0,7,10,10,9,1,0,254,6,12,28,24,48,96,96,192, + 254,6,19,19,10,2,251,12,24,16,48,48,48,48,48,96, + 224,224,48,48,48,48,16,16,24,28,1,21,21,7,3,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,19,19,10,2,251,224,112,48,48,48, + 48,48,16,24,12,28,16,48,48,48,48,48,48,224,10,2, + 4,10,0,4,120,192,207,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=22 h=25 x= 6 y=15 dx=24 dy= 0 ascent=24 len=66 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =24 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17[6799] U8G_SECTION(".progmem.u8g_font_fur17") = { + 0,31,30,254,250,17,4,5,8,170,32,255,251,24,250,17, + 251,0,0,0,7,0,0,2,17,17,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,192,192,7,7, + 7,10,2,10,206,206,198,198,196,196,196,15,17,34,17,1, + 0,1,24,3,24,3,24,3,48,6,48,63,254,6,32,4, + 96,12,96,12,64,255,248,24,192,24,128,17,128,49,128,49, + 128,49,0,11,21,42,13,1,254,4,0,4,0,63,0,127, + 128,196,192,196,192,196,0,196,0,244,0,127,0,63,192,5, + 224,4,224,4,96,196,96,196,96,228,96,127,192,63,128,4, + 0,4,0,19,17,51,21,1,0,60,2,0,126,4,0,227, + 12,0,195,8,0,195,24,0,195,16,0,195,48,0,102,96, + 0,62,71,128,0,207,192,0,152,96,1,152,96,1,24,96, + 2,24,96,6,24,96,4,15,192,12,7,128,15,17,34,17, + 1,0,15,0,63,128,48,192,48,192,49,192,59,128,31,0, + 28,24,118,24,103,24,227,152,193,216,192,240,224,112,96,120, + 123,252,31,142,2,7,7,8,3,10,192,192,192,192,192,192, + 64,4,20,20,8,2,253,48,48,96,96,96,224,192,192,192, + 192,192,192,192,192,224,96,96,96,48,48,4,20,20,8,2, + 253,192,64,96,96,96,48,48,48,48,48,48,48,48,48,48, + 96,96,96,64,192,9,9,18,15,3,8,34,0,54,0,22, + 0,28,0,255,128,156,128,20,0,54,0,34,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4, + 6,6,6,1,253,112,112,96,96,192,192,6,1,1,8,1, + 5,252,2,3,3,6,2,0,192,192,192,7,18,18,9,1, + 255,6,6,4,12,12,8,8,24,24,16,48,48,32,32,96, + 96,64,192,10,17,34,13,1,0,30,0,63,128,97,128,96, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,97,192,97,128,63,128,30,0,5,17,17,13,3, + 0,56,120,248,216,24,24,24,24,24,24,24,24,24,24,24, + 24,24,10,17,34,13,1,0,30,0,127,128,97,128,224,192, + 224,192,0,192,1,192,3,128,3,128,7,0,14,0,28,0, + 56,0,112,0,96,0,224,0,255,192,10,17,34,13,1,0, + 31,0,127,128,96,192,224,192,0,192,0,192,3,128,14,0, + 7,128,1,192,0,192,0,192,192,192,224,192,97,192,127,128, + 30,0,11,17,34,13,1,0,3,128,3,128,7,128,13,128, + 13,128,25,128,57,128,49,128,97,128,97,128,193,128,255,224, + 255,224,1,128,1,128,1,128,1,128,10,17,34,13,1,0, + 127,128,96,0,96,0,96,0,96,0,111,0,127,128,97,128, + 64,192,0,192,0,192,0,192,0,192,192,192,225,128,127,0, + 30,0,11,17,34,13,1,0,31,0,59,128,96,192,224,192, + 192,0,192,0,207,0,223,192,241,192,224,224,192,96,192,96, + 192,96,192,96,96,192,59,192,31,0,10,17,34,13,1,0, + 255,192,0,192,0,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,14,0,12,0,12,0,28,0,24,0, + 56,0,11,17,34,13,1,0,31,0,59,128,96,192,96,192, + 96,192,96,192,49,128,31,0,59,128,96,192,192,96,192,96, + 192,96,192,96,96,224,123,192,31,0,11,17,34,13,1,0, + 31,0,127,192,96,192,192,224,192,96,192,96,192,224,224,224, + 113,224,63,96,0,96,0,96,0,224,96,192,97,192,127,128, + 31,0,2,12,12,6,2,0,192,192,192,0,0,0,0,0, + 0,192,192,192,3,15,15,6,1,253,96,96,96,0,0,0, + 0,0,0,96,96,96,192,192,192,14,12,24,24,5,1,0, + 12,0,60,1,224,7,0,56,0,224,0,224,0,60,0,7, + 0,1,224,0,60,0,12,14,5,10,24,5,4,255,252,0, + 0,0,0,0,0,255,252,14,12,24,24,5,1,192,0,240, + 0,30,0,3,128,0,112,0,28,0,28,0,240,3,128,30, + 0,240,0,192,0,9,17,34,11,1,0,60,0,255,0,195, + 128,129,128,1,128,1,128,3,0,7,0,14,0,28,0,24, + 0,24,0,24,0,0,0,0,0,24,0,24,0,20,22,66, + 23,1,251,1,252,0,7,255,0,30,7,128,56,1,192,48, + 0,224,97,236,96,99,252,112,227,28,48,198,12,48,198,12, + 48,198,12,48,198,12,48,198,12,48,198,12,48,227,28,96, + 99,31,224,97,231,192,48,0,0,56,0,0,28,0,0,7, + 220,0,1,252,0,16,17,34,17,1,0,3,128,3,128,7, + 192,6,192,14,224,12,96,12,112,24,48,24,48,56,56,63, + 248,63,252,96,12,96,12,224,6,192,6,192,7,12,17,34, + 16,2,0,255,128,195,224,192,112,192,48,192,48,192,48,192, + 112,192,224,255,128,193,224,192,112,192,48,192,48,192,48,192, + 112,195,224,255,128,13,17,34,15,1,0,15,192,63,240,48, + 56,96,24,96,24,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,24,48,48,63,240,15,192,13,17,34, + 17,2,0,255,0,199,192,192,96,192,48,192,48,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,48,192,48,192, + 224,199,192,255,0,11,17,34,14,2,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,10,17,34, + 13,2,0,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,14,17,34,17,1,0,7,224,31,248,48, + 28,96,12,96,0,192,0,192,0,192,0,192,252,192,12,192, + 12,224,12,96,12,112,12,56,12,31,252,7,248,12,17,34, + 16,2,0,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,255,240,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,192,48,2,17,17,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,10,17,34,13, + 1,0,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,225,128, + 127,128,62,0,12,17,34,15,2,0,192,96,192,192,193,128, + 195,0,199,0,206,0,220,0,248,0,220,0,222,0,206,0, + 199,0,195,128,193,192,192,224,192,224,192,112,10,17,34,12, + 2,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 255,192,255,192,17,17,51,21,2,0,240,7,128,240,7,128, + 240,7,128,216,13,128,216,13,128,220,29,128,204,25,128,204, + 25,128,206,57,128,198,49,128,198,49,128,195,97,128,195,97, + 128,195,97,128,193,193,128,193,193,128,193,193,128,13,17,34, + 17,2,0,224,24,240,24,248,24,248,24,220,24,220,24,206, + 24,198,24,199,24,195,24,195,152,193,216,193,216,192,248,192, + 248,192,120,192,56,15,17,34,17,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,240,7,192,11,17,34, + 14,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 224,193,192,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,17,34,18,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,248,7,255,11,17,34, + 15,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 96,193,192,255,0,193,192,192,192,192,192,192,224,192,96,192, + 96,192,96,192,96,12,17,34,15,1,0,31,128,63,224,96, + 112,192,48,192,0,224,0,240,0,127,128,63,224,3,240,0, + 112,0,48,192,48,192,48,96,112,123,224,31,128,13,17,34, + 15,1,0,255,248,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,13,17,34,17,2,0,192,24,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,96,56,96,48,61,224,31,192,14,17,34, + 15,1,0,192,28,192,24,224,56,96,48,96,48,112,112,48, + 96,48,96,56,224,24,192,24,192,29,192,13,128,13,128,15, + 128,7,0,7,0,22,17,51,22,0,0,224,56,28,96,120, + 28,96,120,24,112,120,24,48,108,56,48,204,48,48,204,48, + 24,206,48,24,198,112,25,134,96,29,134,96,13,131,96,13, + 131,192,15,3,192,7,3,192,7,1,192,6,1,128,14,17, + 34,16,1,0,112,24,112,56,56,48,28,96,28,224,14,192, + 7,128,7,128,7,128,7,192,13,192,28,224,24,112,48,112, + 112,56,96,28,224,28,14,17,34,15,0,0,224,28,112,24, + 112,56,56,48,24,112,28,96,12,192,14,192,7,128,3,128, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,12,17, + 34,14,1,0,127,240,0,48,0,112,0,224,1,192,1,192, + 3,128,7,0,7,0,14,0,28,0,60,0,56,0,112,0, + 240,0,224,0,255,240,4,22,22,9,2,251,240,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,18,18,9,1,255,192,192,64,96,96,32,48,48, + 16,16,24,24,8,12,12,4,4,6,4,22,22,10,3,251, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,11,14,28,23,6,0,4,0,14,0, + 10,0,27,0,17,0,17,0,49,128,32,128,32,128,96,192, + 64,64,192,96,128,32,128,32,12,1,2,12,0,253,255,240, + 4,4,4,5,0,14,192,96,96,48,10,12,24,13,1,0, + 31,0,123,128,96,192,96,192,0,192,63,192,120,192,224,192, + 192,192,193,192,119,192,60,192,11,17,34,14,2,0,192,0, + 192,0,192,0,192,0,192,0,207,0,223,192,224,192,224,224, + 192,96,192,96,192,96,192,96,224,224,224,192,251,128,207,0, + 10,12,24,12,1,0,31,0,127,128,97,192,192,192,192,0, + 192,0,192,0,192,0,192,192,97,192,127,128,31,0,11,17, + 34,14,1,0,0,96,0,96,0,96,0,96,0,96,30,96, + 127,224,97,224,224,224,192,96,192,96,192,96,192,96,224,224, + 96,224,59,224,30,96,10,12,24,13,1,0,31,0,127,128, + 96,192,192,192,192,192,255,192,192,0,192,0,192,192,96,192, + 63,128,31,0,7,17,17,9,1,0,30,62,48,48,48,254, + 48,48,48,48,48,48,48,48,48,48,48,11,17,34,14,1, + 251,31,96,63,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,96,224,96,192,63, + 128,31,0,10,17,34,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,251,128,225,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,2,17,17,5,1, + 0,192,192,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,3,22,22,7,2,251,96,96,0,0,0,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,224,192,9,17, + 34,12,2,0,192,0,192,0,192,0,192,0,192,0,195,128, + 199,0,206,0,220,0,216,0,248,0,216,0,204,0,206,0, + 199,0,195,0,195,128,2,17,17,6,2,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,18,12,36, + 21,2,0,207,31,0,255,191,128,225,225,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,10,12,24,14,2,0,223,0,255, + 128,225,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,12,24,13,1,0,31,0,63,192,96, + 192,224,224,192,96,192,96,192,96,192,96,224,224,96,192,63, + 192,31,0,11,17,34,14,2,251,207,0,251,192,224,192,224, + 224,192,96,192,96,192,96,192,96,224,224,224,192,251,192,207, + 0,192,0,192,0,192,0,192,0,192,0,11,17,34,14,1, + 251,30,96,123,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,0,96,0,96,0, + 96,0,96,7,12,12,9,2,0,222,252,224,192,192,192,192, + 192,192,192,192,192,9,12,24,11,1,0,62,0,127,128,193, + 128,192,0,224,0,126,0,31,128,3,128,193,128,193,128,119, + 0,62,0,7,15,15,9,1,0,48,48,48,254,48,48,48, + 48,48,48,48,48,48,58,30,10,12,24,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,192,60,192,11,12,24,12,1,0,192,96,192,192, + 224,192,97,192,97,128,49,128,51,0,59,0,27,0,30,0, + 30,0,12,0,18,12,36,19,0,0,224,224,192,96,224,192, + 97,161,192,113,177,128,49,177,128,51,49,128,51,27,0,27, + 27,0,30,27,0,30,14,0,14,14,0,12,14,0,11,12, + 24,13,1,0,224,192,113,192,49,128,59,0,31,0,14,0, + 30,0,31,0,51,128,113,128,97,192,192,224,11,17,34,12, + 1,251,192,96,192,192,224,192,97,192,113,128,49,128,51,128, + 59,0,27,0,30,0,14,0,14,0,12,0,12,0,28,0, + 24,0,24,0,8,12,12,10,1,0,255,3,7,14,12,24, + 56,48,96,224,192,255,8,23,23,11,2,251,15,14,24,24, + 24,24,24,24,24,56,112,224,240,48,24,24,24,24,24,24, + 24,12,15,1,25,25,8,4,250,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,8,23,23,11,2,251,224,112,56,24,24,24,24,24, + 24,28,14,7,14,28,24,24,24,24,24,24,24,48,240,12, + 2,4,12,0,5,62,112,231,224,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,7,0,0, + 2,17,17,8,3,251,192,192,0,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,10,18,36,14,2,253,1,0,1, + 0,1,0,31,0,127,128,98,192,198,192,196,0,196,0,204, + 0,200,0,200,192,121,192,127,128,31,0,32,0,32,0,32, + 0,11,17,34,13,1,0,15,128,29,192,48,96,48,0,48, + 0,48,0,254,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,255,224,11,14,28,13,1,3,0, + 32,128,32,95,64,123,128,96,128,64,64,64,64,64,64,64, + 64,96,128,113,128,95,64,128,32,0,32,12,17,34,14,1, + 0,192,48,96,96,96,96,48,224,48,192,249,240,25,128,15, + 128,15,0,255,240,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,1,22,22,8,4,251,128,128,128,128,128,128,128, + 128,128,0,0,0,0,128,128,128,128,128,128,128,128,128,8, + 21,21,10,1,252,62,126,192,192,192,112,120,62,119,227,195, + 199,238,124,30,7,3,3,3,142,252,7,2,2,7,0,15, + 198,198,17,17,51,19,1,0,3,224,0,15,120,0,56,14, + 0,35,242,0,71,57,0,78,25,0,140,0,128,140,0,128, + 140,0,128,140,0,128,140,24,128,70,57,0,67,241,0,32, + 2,0,48,6,0,12,24,0,3,224,0,9,11,22,9,0, + 6,62,0,127,0,97,0,1,0,63,0,113,0,65,0,67, + 0,61,0,0,0,255,128,9,9,18,13,2,1,49,128,51, + 0,99,0,230,0,204,0,230,0,99,0,51,0,17,128,12, + 5,10,14,1,5,255,240,0,16,0,16,0,16,0,16,255, + 17,17,51,19,1,0,3,224,0,15,120,0,56,14,0,39, + 242,0,70,57,0,70,25,0,134,24,128,135,224,128,134,48, + 128,134,16,128,134,24,128,70,25,0,70,25,0,32,2,0, + 56,14,0,15,120,0,3,224,0,7,1,1,7,0,15,254, + 5,6,6,7,1,11,112,216,136,136,216,112,14,14,28,24, + 5,0,2,0,2,0,2,0,2,0,255,252,2,0,2,0, + 2,0,2,0,2,0,0,0,0,0,0,0,255,252,7,9, + 9,9,1,8,60,126,198,6,12,24,48,224,254,7,9,9, + 9,1,8,60,126,198,14,24,14,6,206,124,3,4,4,5, + 2,14,96,96,192,128,255,10,21,42,13,1,252,31,192,60, + 128,124,128,252,128,252,128,252,128,124,128,124,128,60,128,4, + 128,4,128,4,128,4,128,4,128,4,128,4,128,4,128,4, + 128,4,128,4,128,4,128,2,3,3,6,2,7,192,192,192, + 6,5,5,6,1,250,64,120,12,12,252,3,9,9,7,2, + 8,96,224,32,32,32,32,32,32,32,8,11,11,10,1,6, + 60,126,195,193,193,193,195,98,124,0,255,9,9,18,13,2, + 1,204,0,102,0,99,0,51,0,57,128,51,0,99,0,102, + 0,204,0,15,17,34,18,2,0,96,48,224,32,32,96,32, + 64,32,192,32,128,33,0,35,0,34,24,6,24,4,40,12, + 72,8,200,16,254,48,8,32,8,96,8,16,17,34,19,2, + 0,96,16,224,48,32,32,32,96,32,192,32,128,33,128,33, + 0,35,62,6,119,4,99,12,3,8,6,24,28,16,48,32, + 96,96,127,17,17,51,19,1,0,124,4,0,254,12,0,6, + 8,0,24,16,0,30,48,0,6,32,0,198,96,0,206,64, + 0,124,198,0,1,134,0,1,10,0,3,26,0,2,50,0, + 6,63,128,4,2,0,8,2,0,24,2,0,10,17,34,12, + 1,251,6,0,6,0,0,0,0,0,6,0,6,0,6,0, + 14,0,28,0,112,0,96,0,192,0,192,0,192,192,241,192, + 127,128,31,0,16,23,46,17,1,0,14,0,6,0,3,0, + 1,0,0,0,0,0,3,128,3,128,7,192,6,192,14,224, + 12,96,12,112,24,48,24,48,56,56,63,248,63,252,96,12, + 96,12,224,6,192,6,192,7,16,23,46,17,1,0,0,96, + 0,192,0,128,1,0,0,0,0,0,3,128,3,128,7,192, + 6,192,14,224,12,96,12,112,24,48,24,48,56,56,63,248, + 63,252,96,12,96,12,224,6,192,6,192,7,16,23,46,17, + 1,0,3,128,3,192,6,192,4,96,0,0,0,0,3,128, + 3,128,7,192,6,192,14,224,12,96,12,112,24,48,24,48, + 56,56,63,248,63,252,96,12,96,12,224,6,192,6,192,7, + 16,22,44,17,1,0,7,96,13,192,0,0,0,0,0,0, + 3,128,3,128,7,192,6,192,14,224,12,96,12,112,24,48, + 24,48,56,56,63,248,63,252,96,12,96,12,224,6,192,6, + 192,7,16,22,44,18,1,0,6,48,6,48,0,0,0,0, + 0,0,1,192,3,192,3,224,7,96,6,96,6,112,12,48, + 12,56,28,24,24,28,63,252,63,252,48,6,96,6,96,7, + 224,3,192,3,16,24,48,17,1,0,3,128,6,192,4,64, + 4,64,3,128,0,0,0,0,3,128,3,128,7,192,6,192, + 6,224,12,96,12,112,28,48,24,48,24,24,63,248,63,252, + 96,12,96,12,224,6,192,6,192,7,21,17,51,23,1,0, + 0,255,248,0,240,0,1,240,0,1,176,0,3,176,0,3, + 48,0,7,48,0,6,48,0,14,63,248,12,48,0,28,48, + 0,31,240,0,56,48,0,48,48,0,112,48,0,96,48,0, + 192,63,248,13,22,44,15,1,251,15,192,63,240,48,56,96, + 24,96,24,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,96,0,96,24,112,48,63,240,15,192,2,0,3,192,0, + 224,0,96,7,224,11,23,46,14,2,0,48,0,24,0,12, + 0,4,0,0,0,0,0,255,224,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,255,224,11,23,46,14,2,0,3, + 0,6,0,6,0,12,0,0,0,0,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,11,23,46, + 14,2,0,30,0,30,0,51,0,33,0,0,0,0,0,255, + 224,192,0,192,0,192,0,192,0,192,0,192,0,192,0,255, + 192,192,0,192,0,192,0,192,0,192,0,192,0,192,0,255, + 224,11,22,44,14,2,0,51,0,51,0,0,0,0,0,0, + 0,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,192,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,224,4,23,23,6,0,0,192,96,48,16,0,0,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 4,23,23,6,2,0,48,96,64,192,0,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,6,23,23, + 6,0,0,56,120,76,196,0,0,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,7,22,22,7,0,0, + 198,198,0,0,0,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,15,17,34,17,0,0,63,192,49,240, + 48,56,48,12,48,12,48,6,48,6,48,6,255,6,48,6, + 48,6,48,6,48,12,48,28,48,56,49,240,63,192,13,22, + 44,17,2,0,14,192,31,128,0,0,0,0,0,0,224,24, + 240,24,248,24,248,24,220,24,220,24,206,24,198,24,199,24, + 195,24,195,152,193,216,193,216,192,248,192,248,192,120,192,56, + 15,24,48,17,1,0,14,0,6,0,3,0,1,0,1,128, + 0,0,0,0,7,192,30,240,48,24,96,12,96,12,192,6, + 192,6,192,6,192,6,192,6,192,6,224,14,96,12,96,12, + 48,24,30,240,7,192,15,24,48,17,1,0,0,224,0,192, + 1,128,1,0,3,0,0,0,0,0,7,192,30,240,48,24, + 96,12,96,12,192,6,192,6,192,6,192,6,192,6,192,6, + 224,14,96,12,96,12,48,24,30,240,7,192,15,24,48,17, + 1,0,3,128,3,128,6,192,4,64,12,32,0,0,0,0, + 7,192,30,240,48,24,96,12,96,12,192,6,192,6,192,6, + 192,6,192,6,192,6,224,14,96,12,96,12,48,24,30,240, + 7,192,15,22,44,17,1,0,7,96,13,192,0,0,0,0, + 0,0,7,192,30,240,48,24,96,12,96,12,192,6,192,6, + 192,6,192,6,192,6,192,6,224,14,96,12,112,28,56,56, + 31,240,7,192,15,22,44,17,1,0,6,96,6,96,0,0, + 0,0,0,0,7,192,30,240,48,24,96,12,96,12,192,6, + 192,6,192,6,192,6,192,6,192,6,224,14,96,12,96,12, + 48,24,30,240,7,192,13,12,24,23,5,1,192,24,96,48, + 48,96,24,192,13,128,7,0,7,0,13,128,24,192,48,96, + 96,48,192,24,15,21,42,17,1,254,0,4,0,14,7,236, + 30,248,48,60,96,60,96,110,192,230,192,198,193,198,195,134, + 195,6,199,6,238,14,108,12,124,12,120,24,62,240,111,192, + 224,0,64,0,13,24,48,17,2,0,28,0,12,0,6,0, + 2,0,1,0,0,0,0,0,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 224,24,96,56,112,112,63,224,31,192,13,24,48,17,2,0, + 1,192,1,128,3,0,2,0,6,0,0,0,0,0,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,224,24,96,56,112,112,63,224,31,192, + 13,24,48,17,2,0,7,0,7,0,13,128,8,128,24,64, + 0,0,0,0,192,24,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,224,24,96,56, + 112,112,63,224,31,192,13,22,44,17,2,0,12,192,12,192, + 0,0,0,0,0,0,192,24,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,24,192,24,192,24,192,24,192,24, + 96,56,96,48,61,224,31,192,14,23,46,15,0,0,0,192, + 1,128,1,128,3,0,0,0,0,0,224,28,112,24,112,56, + 56,48,24,112,28,96,12,192,14,192,7,128,3,128,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,11,17,34,14, + 2,0,192,0,192,0,192,0,192,0,255,128,193,192,192,224, + 192,96,192,96,192,96,193,192,255,128,192,0,192,0,192,0, + 192,0,192,0,12,17,34,13,1,0,31,0,127,128,224,192, + 192,192,193,192,195,128,199,0,198,0,198,0,195,128,193,224, + 192,112,192,48,192,48,204,48,207,96,195,192,10,18,36,13, + 1,0,24,0,12,0,4,0,6,0,0,0,0,0,31,0, + 123,128,96,192,96,192,0,192,63,192,120,192,224,192,192,192, + 193,192,119,192,60,192,10,19,38,13,1,0,3,0,6,0, + 6,0,12,0,8,0,0,0,0,0,31,0,123,128,96,192, + 96,192,0,192,63,192,120,192,224,192,192,192,193,192,119,192, + 60,192,10,19,38,13,1,0,14,0,14,0,27,0,51,0, + 33,128,0,0,0,0,31,0,123,128,96,192,96,192,0,192, + 63,192,120,192,224,192,192,192,193,192,119,192,60,192,10,17, + 34,13,1,0,29,128,63,0,0,0,0,0,0,0,31,0, + 123,128,96,192,0,192,7,192,63,192,112,192,192,192,193,192, + 193,192,119,192,60,192,10,17,34,13,1,0,49,128,49,128, + 0,0,0,0,0,0,31,0,123,128,96,192,96,192,0,192, + 63,192,120,192,224,192,192,192,193,192,119,192,60,192,10,20, + 40,13,1,0,14,0,27,0,17,0,17,0,27,0,14,0, + 0,0,0,0,31,0,123,128,96,192,96,192,0,192,63,192, + 120,192,224,192,192,192,193,192,119,192,62,192,18,12,36,20, + 1,0,30,31,0,127,191,128,97,225,128,0,224,192,0,192, + 192,63,255,192,120,192,0,224,192,0,192,224,192,193,225,128, + 127,63,128,62,31,0,10,17,34,12,1,251,31,0,127,128, + 97,192,192,192,192,0,192,0,192,0,192,0,192,192,97,192, + 127,128,31,0,8,0,15,0,3,128,1,128,31,0,10,19, + 38,13,1,0,48,0,24,0,8,0,12,0,6,0,0,0, + 0,0,31,0,127,128,96,192,192,192,192,192,255,192,192,0, + 192,0,192,192,96,192,63,128,31,0,10,19,38,13,1,0, + 3,0,7,0,6,0,12,0,8,0,0,0,0,0,31,0, + 127,128,96,192,192,192,192,192,255,192,192,0,192,0,192,192, + 96,192,63,128,31,0,10,19,38,13,1,0,12,0,30,0, + 26,0,51,0,33,0,0,0,0,0,31,0,127,128,96,192, + 192,192,192,192,255,192,192,0,192,0,192,192,96,192,63,128, + 31,0,11,17,34,13,1,0,49,128,49,128,0,0,0,0, + 0,0,31,0,59,192,96,192,224,96,192,96,255,224,192,0, + 192,0,192,96,96,192,59,192,31,0,4,18,18,6,0,0, + 192,96,48,16,0,0,48,48,48,48,48,48,48,48,48,48, + 48,48,4,18,18,6,2,0,48,96,192,128,0,0,192,192, + 192,192,192,192,192,192,192,192,192,192,6,18,18,6,0,0, + 120,120,204,132,0,0,48,48,48,48,48,48,48,48,48,48, + 48,48,6,17,17,5,255,0,204,204,0,0,0,48,48,48, + 48,48,48,48,48,48,48,48,48,11,17,34,13,1,0,97, + 128,63,0,30,0,119,0,3,128,31,192,127,192,96,224,224, + 96,192,96,192,96,192,96,192,96,224,96,96,192,63,192,31, + 0,10,17,34,14,2,0,25,0,63,0,0,0,0,0,0, + 0,223,0,255,128,225,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,11,19,38,13,1,0,56, + 0,24,0,12,0,4,0,2,0,0,0,0,0,31,0,63, + 192,96,192,224,224,192,96,192,96,192,96,192,96,224,224,96, + 192,63,192,31,0,11,19,38,13,1,0,3,128,3,0,6, + 0,4,0,12,0,0,0,0,0,31,0,63,192,96,192,224, + 224,192,96,192,96,192,96,192,96,224,224,96,192,63,192,31, + 0,11,19,38,13,1,0,14,0,14,0,27,0,17,0,49, + 128,0,0,0,0,31,0,63,192,96,192,224,224,192,96,192, + 96,192,96,192,96,224,224,96,192,63,192,31,0,11,17,34, + 13,1,0,29,128,63,0,0,0,0,0,0,0,31,0,63, + 192,96,192,224,224,192,96,192,96,192,96,192,96,224,224,96, + 192,63,192,31,0,11,17,34,13,1,0,49,128,49,128,0, + 0,0,0,0,0,31,0,63,192,96,192,224,224,192,96,192, + 96,192,96,192,96,224,224,96,192,63,192,31,0,14,10,20, + 24,5,2,3,0,3,0,3,0,0,0,0,0,255,252,0, + 0,3,0,3,0,3,0,11,15,30,13,1,254,0,32,0, + 96,31,192,63,192,97,192,227,224,194,96,198,96,204,96,216, + 96,248,224,112,192,123,192,95,0,192,0,10,19,38,14,2, + 0,48,0,24,0,24,0,12,0,4,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,225,192,119,192,60,192,10,19,38,14,2,0,3,0,6, + 0,6,0,12,0,8,0,0,0,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,119, + 192,60,192,10,19,38,14,2,0,12,0,30,0,30,0,51, + 0,33,0,0,0,0,0,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,225,192,119,192,60,192,10, + 17,34,14,2,0,51,0,51,0,0,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,11,23,46,12,1,251,3,0,3, + 0,6,0,12,0,0,0,0,0,192,96,192,192,224,192,97, + 192,113,128,49,128,51,128,59,0,27,0,30,0,14,0,14, + 0,12,0,12,0,220,0,248,0,112,0,11,22,44,14,2, + 251,192,0,192,0,192,0,192,0,192,0,207,0,251,192,224, + 192,224,224,192,96,192,96,192,96,192,96,224,224,224,192,251, + 192,207,0,192,0,192,0,192,0,192,0,192,0,11,22,44, + 13,1,251,49,128,49,128,0,0,0,0,0,0,192,96,224, + 96,96,224,96,192,113,192,49,128,57,128,27,128,27,0,31, + 0,14,0,14,0,14,0,12,0,12,0,28,0,24,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 17 + Calculated Max Values w=14 h=18 x= 5 y= 8 dx=24 dy= 0 ascent=17 len=34 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =17 descent= 0 + X Font ascent =17 descent= 0 + Max Font ascent =17 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17n[510] U8G_SECTION(".progmem.u8g_font_fur17n") = { + 0,31,30,254,250,17,0,0,0,0,42,57,0,17,253,17, + 0,9,9,18,15,3,8,34,0,54,0,22,0,28,0,255, + 128,156,128,20,0,54,0,34,0,14,14,28,24,5,0,2, + 0,2,0,2,0,2,0,2,0,2,0,255,252,2,0,2, + 0,2,0,2,0,2,0,2,0,2,0,4,6,6,6,1, + 253,112,112,96,96,192,192,6,1,1,8,1,5,252,2,3, + 3,6,2,0,192,192,192,7,18,18,9,1,255,6,6,4, + 12,12,8,8,24,24,16,48,48,32,32,96,96,64,192,10, + 17,34,13,1,0,30,0,63,128,97,128,96,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,97, + 192,97,128,63,128,30,0,5,17,17,13,3,0,56,120,248, + 216,24,24,24,24,24,24,24,24,24,24,24,24,24,10,17, + 34,13,1,0,30,0,127,128,97,128,224,192,224,192,0,192, + 1,192,3,128,3,128,7,0,14,0,28,0,56,0,112,0, + 96,0,224,0,255,192,10,17,34,13,1,0,31,0,127,128, + 96,192,224,192,0,192,0,192,3,128,14,0,7,128,1,192, + 0,192,0,192,192,192,224,192,97,192,127,128,30,0,11,17, + 34,13,1,0,3,128,3,128,7,128,13,128,13,128,25,128, + 57,128,49,128,97,128,97,128,193,128,255,224,255,224,1,128, + 1,128,1,128,1,128,10,17,34,13,1,0,127,128,96,0, + 96,0,96,0,96,0,111,0,127,128,97,128,64,192,0,192, + 0,192,0,192,0,192,192,192,225,128,127,0,30,0,11,17, + 34,13,1,0,31,0,59,128,96,192,224,192,192,0,192,0, + 207,0,223,192,241,192,224,224,192,96,192,96,192,96,192,96, + 96,192,59,192,31,0,10,17,34,13,1,0,255,192,0,192, + 0,192,1,128,1,128,3,128,3,0,3,0,7,0,6,0, + 6,0,14,0,12,0,12,0,28,0,24,0,56,0,11,17, + 34,13,1,0,31,0,59,128,96,192,96,192,96,192,96,192, + 49,128,31,0,59,128,96,192,192,96,192,96,192,96,192,96, + 96,224,123,192,31,0,11,17,34,13,1,0,31,0,127,192, + 96,192,192,224,192,96,192,96,192,224,224,224,113,224,63,96, + 0,96,0,96,0,224,96,192,97,192,127,128,31,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--23-230-72-72-P-109-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=22 h=25 x= 6 y=14 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=31 h=30 x=-2 y=-6 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur17r[3146] U8G_SECTION(".progmem.u8g_font_fur17r") = { + 0,31,30,254,250,17,4,5,8,170,32,127,251,19,250,17, + 251,0,0,0,7,0,0,2,17,17,8,3,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,192,192,7,7, + 7,10,2,10,206,206,198,198,196,196,196,15,17,34,17,1, + 0,1,24,3,24,3,24,3,48,6,48,63,254,6,32,4, + 96,12,96,12,64,255,248,24,192,24,128,17,128,49,128,49, + 128,49,0,11,21,42,13,1,254,4,0,4,0,63,0,127, + 128,196,192,196,192,196,0,196,0,244,0,127,0,63,192,5, + 224,4,224,4,96,196,96,196,96,228,96,127,192,63,128,4, + 0,4,0,19,17,51,21,1,0,60,2,0,126,4,0,227, + 12,0,195,8,0,195,24,0,195,16,0,195,48,0,102,96, + 0,62,71,128,0,207,192,0,152,96,1,152,96,1,24,96, + 2,24,96,6,24,96,4,15,192,12,7,128,15,17,34,17, + 1,0,15,0,63,128,48,192,48,192,49,192,59,128,31,0, + 28,24,118,24,103,24,227,152,193,216,192,240,224,112,96,120, + 123,252,31,142,2,7,7,8,3,10,192,192,192,192,192,192, + 64,4,20,20,8,2,253,48,48,96,96,96,224,192,192,192, + 192,192,192,192,192,224,96,96,96,48,48,4,20,20,8,2, + 253,192,64,96,96,96,48,48,48,48,48,48,48,48,48,48, + 96,96,96,64,192,9,9,18,15,3,8,34,0,54,0,22, + 0,28,0,255,128,156,128,20,0,54,0,34,0,14,14,28, + 24,5,0,2,0,2,0,2,0,2,0,2,0,2,0,255, + 252,2,0,2,0,2,0,2,0,2,0,2,0,2,0,4, + 6,6,6,1,253,112,112,96,96,192,192,6,1,1,8,1, + 5,252,2,3,3,6,2,0,192,192,192,7,18,18,9,1, + 255,6,6,4,12,12,8,8,24,24,16,48,48,32,32,96, + 96,64,192,10,17,34,13,1,0,30,0,63,128,97,128,96, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,97,192,97,128,63,128,30,0,5,17,17,13,3, + 0,56,120,248,216,24,24,24,24,24,24,24,24,24,24,24, + 24,24,10,17,34,13,1,0,30,0,127,128,97,128,224,192, + 224,192,0,192,1,192,3,128,3,128,7,0,14,0,28,0, + 56,0,112,0,96,0,224,0,255,192,10,17,34,13,1,0, + 31,0,127,128,96,192,224,192,0,192,0,192,3,128,14,0, + 7,128,1,192,0,192,0,192,192,192,224,192,97,192,127,128, + 30,0,11,17,34,13,1,0,3,128,3,128,7,128,13,128, + 13,128,25,128,57,128,49,128,97,128,97,128,193,128,255,224, + 255,224,1,128,1,128,1,128,1,128,10,17,34,13,1,0, + 127,128,96,0,96,0,96,0,96,0,111,0,127,128,97,128, + 64,192,0,192,0,192,0,192,0,192,192,192,225,128,127,0, + 30,0,11,17,34,13,1,0,31,0,59,128,96,192,224,192, + 192,0,192,0,207,0,223,192,241,192,224,224,192,96,192,96, + 192,96,192,96,96,192,59,192,31,0,10,17,34,13,1,0, + 255,192,0,192,0,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,14,0,12,0,12,0,28,0,24,0, + 56,0,11,17,34,13,1,0,31,0,59,128,96,192,96,192, + 96,192,96,192,49,128,31,0,59,128,96,192,192,96,192,96, + 192,96,192,96,96,224,123,192,31,0,11,17,34,13,1,0, + 31,0,127,192,96,192,192,224,192,96,192,96,192,224,224,224, + 113,224,63,96,0,96,0,96,0,224,96,192,97,192,127,128, + 31,0,2,12,12,6,2,0,192,192,192,0,0,0,0,0, + 0,192,192,192,3,15,15,6,1,253,96,96,96,0,0,0, + 0,0,0,96,96,96,192,192,192,14,12,24,24,5,1,0, + 12,0,60,1,224,7,0,56,0,224,0,224,0,60,0,7, + 0,1,224,0,60,0,12,14,5,10,24,5,4,255,252,0, + 0,0,0,0,0,255,252,14,12,24,24,5,1,192,0,240, + 0,30,0,3,128,0,112,0,28,0,28,0,240,3,128,30, + 0,240,0,192,0,9,17,34,11,1,0,60,0,255,0,195, + 128,129,128,1,128,1,128,3,0,7,0,14,0,28,0,24, + 0,24,0,24,0,0,0,0,0,24,0,24,0,20,22,66, + 23,1,251,1,252,0,7,255,0,30,7,128,56,1,192,48, + 0,224,97,236,96,99,252,112,227,28,48,198,12,48,198,12, + 48,198,12,48,198,12,48,198,12,48,198,12,48,227,28,96, + 99,31,224,97,231,192,48,0,0,56,0,0,28,0,0,7, + 220,0,1,252,0,16,17,34,17,1,0,3,128,3,128,7, + 192,6,192,14,224,12,96,12,112,24,48,24,48,56,56,63, + 248,63,252,96,12,96,12,224,6,192,6,192,7,12,17,34, + 16,2,0,255,128,195,224,192,112,192,48,192,48,192,48,192, + 112,192,224,255,128,193,224,192,112,192,48,192,48,192,48,192, + 112,195,224,255,128,13,17,34,15,1,0,15,192,63,240,48, + 56,96,24,96,24,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,24,48,48,63,240,15,192,13,17,34, + 17,2,0,255,0,199,192,192,96,192,48,192,48,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,48,192,48,192, + 224,199,192,255,0,11,17,34,14,2,0,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,192,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,10,17,34, + 13,2,0,255,192,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,14,17,34,17,1,0,7,224,31,248,48, + 28,96,12,96,0,192,0,192,0,192,0,192,252,192,12,192, + 12,224,12,96,12,112,12,56,12,31,252,7,248,12,17,34, + 16,2,0,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,255,240,192,48,192,48,192,48,192,48,192,48,192, + 48,192,48,192,48,2,17,17,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,10,17,34,13, + 1,0,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,225,128, + 127,128,62,0,12,17,34,15,2,0,192,96,192,192,193,128, + 195,0,199,0,206,0,220,0,248,0,220,0,222,0,206,0, + 199,0,195,128,193,192,192,224,192,224,192,112,10,17,34,12, + 2,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 255,192,255,192,17,17,51,21,2,0,240,7,128,240,7,128, + 240,7,128,216,13,128,216,13,128,220,29,128,204,25,128,204, + 25,128,206,57,128,198,49,128,198,49,128,195,97,128,195,97, + 128,195,97,128,193,193,128,193,193,128,193,193,128,13,17,34, + 17,2,0,224,24,240,24,248,24,248,24,220,24,220,24,206, + 24,198,24,199,24,195,24,195,152,193,216,193,216,192,248,192, + 248,192,120,192,56,15,17,34,17,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,240,7,192,11,17,34, + 14,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 224,193,192,255,128,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,17,34,18,1,0,7,192,30,240,48, + 24,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,224,14,96,12,96,12,48,24,30,248,7,255,11,17,34, + 15,2,0,255,0,199,192,192,224,192,96,192,96,192,96,192, + 96,193,192,255,0,193,192,192,192,192,192,192,224,192,96,192, + 96,192,96,192,96,12,17,34,15,1,0,31,128,63,224,96, + 112,192,48,192,0,224,0,240,0,127,128,63,224,3,240,0, + 112,0,48,192,48,192,48,96,112,123,224,31,128,13,17,34, + 15,1,0,255,248,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,13,17,34,17,2,0,192,24,192,24,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,96,56,96,48,61,224,31,192,14,17,34, + 15,1,0,192,28,192,24,224,56,96,48,96,48,112,112,48, + 96,48,96,56,224,24,192,24,192,29,192,13,128,13,128,15, + 128,7,0,7,0,22,17,51,22,0,0,224,56,28,96,120, + 28,96,120,24,112,120,24,48,108,56,48,204,48,48,204,48, + 24,206,48,24,198,112,25,134,96,29,134,96,13,131,96,13, + 131,192,15,3,192,7,3,192,7,1,192,6,1,128,14,17, + 34,16,1,0,112,24,112,56,56,48,28,96,28,224,14,192, + 7,128,7,128,7,128,7,192,13,192,28,224,24,112,48,112, + 112,56,96,28,224,28,14,17,34,15,0,0,224,28,112,24, + 112,56,56,48,24,112,28,96,12,192,14,192,7,128,3,128, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,12,17, + 34,14,1,0,127,240,0,48,0,112,0,224,1,192,1,192, + 3,128,7,0,7,0,14,0,28,0,60,0,56,0,112,0, + 240,0,224,0,255,240,4,22,22,9,2,251,240,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,18,18,9,1,255,192,192,64,96,96,32,48,48, + 16,16,24,24,8,12,12,4,4,6,4,22,22,10,3,251, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,11,14,28,23,6,0,4,0,14,0, + 10,0,27,0,17,0,17,0,49,128,32,128,32,128,96,192, + 64,64,192,96,128,32,128,32,12,1,2,12,0,253,255,240, + 4,4,4,5,0,14,192,96,96,48,10,12,24,13,1,0, + 31,0,123,128,96,192,96,192,0,192,63,192,120,192,224,192, + 192,192,193,192,119,192,60,192,11,17,34,14,2,0,192,0, + 192,0,192,0,192,0,192,0,207,0,223,192,224,192,224,224, + 192,96,192,96,192,96,192,96,224,224,224,192,251,128,207,0, + 10,12,24,12,1,0,31,0,127,128,97,192,192,192,192,0, + 192,0,192,0,192,0,192,192,97,192,127,128,31,0,11,17, + 34,14,1,0,0,96,0,96,0,96,0,96,0,96,30,96, + 127,224,97,224,224,224,192,96,192,96,192,96,192,96,224,224, + 96,224,59,224,30,96,10,12,24,13,1,0,31,0,127,128, + 96,192,192,192,192,192,255,192,192,0,192,0,192,192,96,192, + 63,128,31,0,7,17,17,9,1,0,30,62,48,48,48,254, + 48,48,48,48,48,48,48,48,48,48,48,11,17,34,14,1, + 251,31,96,63,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,96,224,96,192,63, + 128,31,0,10,17,34,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,251,128,225,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,2,17,17,5,1, + 0,192,192,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,3,22,22,7,2,251,96,96,0,0,0,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,224,192,9,17, + 34,12,2,0,192,0,192,0,192,0,192,0,192,0,195,128, + 199,0,206,0,220,0,216,0,248,0,216,0,204,0,206,0, + 199,0,195,0,195,128,2,17,17,6,2,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,18,12,36, + 21,2,0,207,31,0,255,191,128,225,225,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,10,12,24,14,2,0,223,0,255, + 128,225,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,12,24,13,1,0,31,0,63,192,96, + 192,224,224,192,96,192,96,192,96,192,96,224,224,96,192,63, + 192,31,0,11,17,34,14,2,251,207,0,251,192,224,192,224, + 224,192,96,192,96,192,96,192,96,224,224,224,192,251,192,207, + 0,192,0,192,0,192,0,192,0,192,0,11,17,34,14,1, + 251,30,96,123,224,96,224,224,224,192,96,192,96,192,96,192, + 96,224,224,96,224,123,224,30,96,0,96,0,96,0,96,0, + 96,0,96,7,12,12,9,2,0,222,252,224,192,192,192,192, + 192,192,192,192,192,9,12,24,11,1,0,62,0,127,128,193, + 128,192,0,224,0,126,0,31,128,3,128,193,128,193,128,119, + 0,62,0,7,15,15,9,1,0,48,48,48,254,48,48,48, + 48,48,48,48,48,48,58,30,10,12,24,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,192,60,192,11,12,24,12,1,0,192,96,192,192, + 224,192,97,192,97,128,49,128,51,0,59,0,27,0,30,0, + 30,0,12,0,18,12,36,19,0,0,224,224,192,96,224,192, + 97,161,192,113,177,128,49,177,128,51,49,128,51,27,0,27, + 27,0,30,27,0,30,14,0,14,14,0,12,14,0,11,12, + 24,13,1,0,224,192,113,192,49,128,59,0,31,0,14,0, + 30,0,31,0,51,128,113,128,97,192,192,224,11,17,34,12, + 1,251,192,96,192,192,224,192,97,192,113,128,49,128,51,128, + 59,0,27,0,30,0,14,0,14,0,12,0,12,0,28,0, + 24,0,24,0,8,12,12,10,1,0,255,3,7,14,12,24, + 56,48,96,224,192,255,8,23,23,11,2,251,15,14,24,24, + 24,24,24,24,24,56,112,224,240,48,24,24,24,24,24,24, + 24,12,15,1,25,25,8,4,250,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,8,23,23,11,2,251,224,112,56,24,24,24,24,24, + 24,28,14,7,14,28,24,24,24,24,24,24,24,48,240,12, + 2,4,12,0,5,62,112,231,224,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=26 h=29 x= 7 y=17 dx=29 dy= 0 ascent=28 len=96 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =28 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20[8654] U8G_SECTION(".progmem.u8g_font_fur20") = { + 0,38,35,254,249,20,5,12,11,23,32,255,251,28,249,20, + 251,0,0,0,8,0,0,3,20,20,11,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,0,0,224,224, + 224,9,8,16,13,2,12,227,128,227,128,227,0,227,0,227, + 0,195,0,195,0,67,0,18,20,60,21,1,0,0,195,0, + 0,195,0,0,195,0,1,198,0,1,134,0,1,134,0,31, + 255,192,63,255,192,3,12,0,3,24,0,6,24,0,6,24, + 0,127,255,128,255,255,0,12,48,0,12,48,0,28,96,0, + 24,96,0,24,96,0,24,192,0,14,25,50,16,1,253,2, + 0,2,0,31,192,63,224,114,112,98,48,226,56,226,0,226, + 0,114,0,126,0,63,224,15,240,2,248,2,56,2,28,226, + 28,226,28,226,24,114,56,127,240,31,192,2,0,2,0,2, + 0,23,20,60,25,1,0,30,0,192,127,128,192,97,129,128, + 225,193,0,225,195,0,225,198,0,225,198,0,97,140,0,127, + 136,0,30,24,224,0,49,248,0,51,156,0,103,14,0,71, + 14,0,199,14,1,135,14,1,135,14,3,3,12,2,3,252, + 6,0,240,19,20,60,22,2,0,7,192,0,31,240,0,56, + 48,0,56,48,0,56,48,0,56,112,0,29,224,0,15,192, + 0,31,3,128,63,131,128,115,195,128,225,227,128,224,243,0, + 224,123,0,224,63,0,224,30,0,112,15,0,120,31,128,63, + 251,192,15,225,224,3,8,8,10,4,12,224,224,192,192,192, + 192,192,192,5,24,24,10,3,252,24,48,48,112,112,96,96, + 224,224,224,224,224,224,224,224,224,224,96,96,112,112,48,48, + 24,5,24,24,10,3,252,192,192,96,96,96,112,112,48,48, + 48,56,56,56,56,48,48,48,112,112,96,96,96,192,192,11, + 11,22,19,4,9,17,0,49,128,27,0,27,0,14,0,255, + 224,142,32,27,0,27,0,49,128,17,0,17,16,48,29,6, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,1,128,0,255,255,128,255,255,128,1,128,0,1, + 128,0,1,128,0,1,128,0,1,128,0,1,128,0,1,128, + 0,5,7,7,8,1,253,56,56,112,112,96,96,224,7,2, + 2,9,1,6,254,254,3,3,3,8,3,0,224,224,224,8, + 21,21,11,2,255,3,6,6,6,4,12,12,12,24,24,24, + 48,48,48,96,96,96,64,192,192,192,13,20,40,16,1,0, + 15,128,63,192,112,224,96,112,96,112,224,48,224,48,224,56, + 224,56,224,56,224,56,224,56,224,56,224,48,224,48,96,112, + 112,112,48,224,63,192,15,128,7,20,20,16,4,0,30,62, + 126,254,206,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,12,20,40,16,2,0,31,128,63,192,112,96,112,112, + 224,112,0,112,0,112,0,112,0,224,1,224,3,192,3,128, + 7,0,14,0,28,0,60,0,120,0,240,0,255,240,255,240, + 13,20,40,16,1,0,15,128,63,224,112,112,112,48,224,56, + 0,56,0,48,0,224,7,192,7,192,0,224,0,112,0,56, + 0,56,224,56,224,56,224,56,112,112,63,224,31,128,14,20, + 40,16,1,0,0,240,1,240,1,240,3,240,7,112,6,112, + 14,112,28,112,24,112,56,112,112,112,96,112,224,112,255,252, + 255,252,0,112,0,112,0,112,0,112,0,112,13,20,40,16, + 1,0,255,224,255,224,224,0,224,0,224,0,224,0,224,0, + 239,128,255,224,240,112,224,112,224,48,0,56,0,56,0,56, + 224,48,224,112,112,224,127,192,31,128,13,20,40,16,1,0, + 15,192,63,224,120,112,112,48,224,56,224,0,224,0,231,192, + 255,224,248,240,224,56,224,56,224,56,224,56,224,56,224,56, + 96,48,48,112,63,224,15,128,12,20,40,16,2,0,255,240, + 255,240,0,112,0,112,0,96,0,224,0,224,1,192,1,192, + 1,128,3,128,3,128,3,0,7,0,7,0,14,0,14,0, + 14,0,28,0,28,0,13,20,40,16,1,0,15,128,63,224, + 112,112,224,48,224,56,224,56,96,48,112,112,31,192,31,192, + 56,96,96,48,224,56,224,56,224,56,224,56,224,56,112,112, + 63,224,15,128,13,20,40,16,1,0,31,192,63,224,112,112, + 224,56,224,56,224,56,224,56,224,56,224,56,112,120,63,248, + 31,56,0,56,0,56,0,56,96,48,96,112,112,224,63,192, + 31,128,3,14,14,8,3,0,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,4,17,17,8,2,253,112,112,112,0, + 0,0,0,0,0,0,112,112,96,224,192,192,192,17,14,42, + 29,6,1,0,1,128,0,15,128,0,124,0,1,224,0,15, + 0,0,120,0,0,224,0,0,240,0,0,62,0,0,7,128, + 0,0,240,0,0,62,0,0,7,128,0,0,128,17,7,21, + 29,6,5,255,255,128,255,255,128,0,0,0,0,0,0,0, + 0,0,255,255,128,255,255,128,17,14,42,29,6,1,192,0, + 0,248,0,0,31,0,0,3,192,0,0,120,0,0,15,0, + 0,3,128,0,7,128,0,62,0,0,240,0,7,128,0,62, + 0,0,240,0,0,128,0,0,12,20,40,15,1,0,31,0, + 63,192,127,224,224,240,64,112,0,112,0,112,0,96,0,192, + 3,128,7,0,14,0,14,0,14,0,14,0,0,0,0,0, + 14,0,14,0,14,0,25,24,96,28,2,252,0,127,0,0, + 3,255,224,0,15,129,248,0,30,0,60,0,56,0,14,0, + 48,0,6,0,112,125,199,0,96,255,199,0,225,195,195,0, + 227,131,195,0,227,129,195,128,227,129,195,128,227,129,195,128, + 227,129,195,0,227,129,195,0,225,131,199,0,113,199,206,0, + 112,252,252,0,56,56,48,0,60,0,0,0,30,0,0,0, + 15,128,64,0,3,255,192,0,0,127,128,0,19,20,60,21, + 1,0,0,224,0,1,240,0,1,240,0,3,176,0,3,184, + 0,3,56,0,7,28,0,7,28,0,14,14,0,14,14,0, + 30,15,0,28,7,0,28,7,0,63,255,128,63,255,128,112, + 1,192,112,1,192,224,0,224,224,0,224,224,0,224,15,20, + 40,19,2,0,255,224,255,248,224,120,224,28,224,28,224,28, + 224,28,224,24,224,56,255,224,255,240,224,28,224,12,224,14, + 224,14,224,14,224,30,224,60,255,248,255,224,16,20,40,19, + 2,0,7,240,31,252,60,14,48,6,112,7,96,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,96,0, + 96,7,112,6,56,14,31,252,7,240,16,20,40,20,2,0, + 255,192,255,240,224,120,224,28,224,14,224,14,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,14,224,14, + 224,28,224,120,255,240,255,192,13,20,40,17,2,0,255,248, + 255,248,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,240,255,240,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,248,255,248,12,20,40,16,2,0,255,240,255,240, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,18,20,60,22,2,0,3,248,0,15,254,0, + 30,15,128,56,3,128,112,1,192,96,0,0,224,0,0,224, + 0,0,224,0,0,224,63,192,224,63,192,224,1,192,224,1, + 192,224,1,192,112,1,192,112,1,192,56,1,192,30,7,192, + 15,255,192,3,254,0,15,20,40,19,2,0,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,255,254, + 255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,3,20,20,7,2,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,12,20, + 40,16,2,0,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,224,112,224,96,113,224,63,192,31,128,15,20,40,18, + 2,0,224,60,224,120,224,240,224,224,225,192,227,128,231,0, + 238,0,252,0,254,0,238,0,239,0,231,128,227,192,225,224, + 224,240,224,120,224,56,224,60,224,30,12,20,40,15,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,240,255,240,21,20,60,25,2,0,248,0, + 248,248,0,248,248,1,248,252,1,248,252,1,184,236,3,184, + 238,3,184,238,3,56,230,7,56,231,6,56,227,14,56,227, + 142,56,227,140,56,225,156,56,225,220,56,225,216,56,224,248, + 56,224,240,56,224,112,56,224,112,56,16,20,40,20,2,0, + 240,7,248,7,248,7,252,7,252,7,238,7,238,7,231,7, + 231,135,227,135,227,199,225,199,224,231,224,231,224,119,224,119, + 224,63,224,63,224,31,224,31,18,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,252,0,3,240,0,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,120,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,20,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,255,240,3,255,240,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,112,255,224,255,224,224,112,224,56,224,56,224,56,224,24, + 224,24,224,24,224,28,224,28,15,20,40,19,2,0,15,192, + 63,240,120,120,96,28,224,28,224,0,224,0,120,0,127,0, + 63,240,7,252,0,60,0,14,0,14,224,14,224,14,224,14, + 120,60,63,248,15,192,16,20,40,18,1,0,255,255,255,255, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,16,20,40,20,2,0,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,96,6,112,14,60,60,31,248, + 15,224,17,20,60,18,1,0,224,3,128,224,7,0,224,7, + 0,112,7,0,112,14,0,112,14,0,56,14,0,56,28,0, + 56,28,0,28,56,0,28,56,0,12,56,0,14,112,0,14, + 112,0,7,112,0,7,224,0,7,224,0,3,224,0,3,192, + 0,3,192,0,26,20,80,27,1,0,224,28,1,192,224,30, + 3,128,224,62,3,128,224,62,3,128,112,54,3,0,112,119, + 7,0,112,115,7,0,48,99,7,0,56,99,134,0,56,227, + 142,0,24,225,142,0,28,193,140,0,28,193,220,0,29,193, + 220,0,13,192,216,0,15,128,216,0,15,128,248,0,7,128, + 120,0,7,0,112,0,7,0,112,0,18,20,60,20,1,0, + 120,7,128,56,7,0,60,14,0,30,30,0,14,28,0,15, + 56,0,7,56,0,3,240,0,1,224,0,1,224,0,3,224, + 0,3,240,0,7,120,0,14,56,0,14,28,0,28,30,0, + 56,15,0,120,7,0,112,7,128,224,3,192,17,20,60,19, + 1,0,224,3,128,240,7,0,112,7,0,56,14,0,60,28, + 0,28,28,0,14,56,0,14,48,0,7,112,0,7,96,0, + 3,224,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,15,20, + 40,17,1,0,255,252,255,252,0,28,0,56,0,120,0,240, + 0,224,1,192,3,192,3,128,7,0,14,0,30,0,28,0, + 56,0,112,0,240,0,224,0,255,254,255,254,5,25,25,11, + 3,251,248,248,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,248,248,9,21,42,11,1, + 255,192,0,96,0,96,0,96,0,48,0,48,0,48,0,24, + 0,24,0,24,0,8,0,12,0,12,0,12,0,6,0,6, + 0,6,0,3,0,3,0,3,0,1,128,6,25,25,12,3, + 251,252,252,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,252,252,14,17,34,28,7,0, + 3,0,3,0,7,128,7,128,4,128,12,192,8,64,24,96, + 24,96,16,32,48,48,48,48,96,24,96,24,64,8,192,12, + 192,12,14,2,4,14,0,252,255,252,255,252,6,5,5,6, + 255,16,224,112,48,24,12,12,14,28,15,1,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,13,20,40,16,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,231,192,255,224,240, + 112,224,48,224,56,224,56,224,56,224,56,224,56,224,56,224, + 112,240,112,255,224,231,128,12,14,28,14,1,0,31,128,63, + 224,112,112,224,112,224,112,224,0,224,0,224,0,224,0,224, + 112,96,112,112,224,63,224,31,128,13,20,40,16,1,0,0, + 56,0,56,0,56,0,56,0,56,0,56,31,56,63,248,112, + 248,96,120,224,56,224,56,224,56,224,56,224,56,224,56,112, + 56,112,120,63,248,15,184,13,14,28,15,1,0,15,128,63, + 224,112,112,96,48,224,56,255,248,255,248,224,0,224,0,224, + 56,96,112,112,112,63,224,15,128,9,20,40,10,1,0,7, + 128,31,128,28,0,28,0,28,0,28,0,255,128,255,128,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,13,19,38,16,1,251,31,184,63, + 248,112,120,96,56,224,56,224,56,224,56,224,56,224,56,224, + 56,96,56,112,120,63,248,31,56,0,56,112,48,112,112,63, + 224,15,128,12,20,40,16,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,239,192,255,224,240,240,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,3,20,20,7,2,0,224,224,224,0,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,5,25,25,7,1, + 251,56,56,56,0,0,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,240,224,11,20,40,14,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,225,224,225,192, + 227,128,231,0,238,0,252,0,252,0,254,0,238,0,231,0, + 227,128,227,192,225,192,224,224,3,20,20,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,21,14,42,25,2,0,231,195,224,255,239,240,240,248, + 56,224,120,56,224,112,24,224,112,24,224,112,24,224,112,24, + 224,112,24,224,112,24,224,112,24,224,112,24,224,112,24,224, + 112,24,12,14,28,16,2,0,239,128,255,224,240,240,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,14,14,28,16,1,0,15,192,63,224,112,112, + 112,56,224,24,224,28,224,28,224,28,224,28,224,24,112,56, + 112,112,63,224,15,192,14,19,38,17,2,251,231,192,255,240, + 240,112,240,56,224,24,224,28,224,28,224,28,224,28,224,24, + 224,56,240,112,255,240,231,192,224,0,224,0,224,0,224,0, + 224,0,14,19,38,17,1,251,15,156,63,220,112,124,112,60, + 224,28,224,28,224,28,224,28,224,28,224,28,96,60,112,124, + 63,252,15,156,0,28,0,28,0,28,0,28,0,28,8,14, + 14,10,2,0,239,255,240,224,224,224,224,224,224,224,224,224, + 224,224,12,14,28,14,1,0,31,128,127,192,112,224,224,224, + 224,0,120,0,63,128,15,224,0,224,0,112,224,112,224,224, + 127,192,63,128,8,18,18,10,1,0,8,56,56,56,255,255, + 56,56,56,56,56,56,56,56,56,56,31,15,12,14,28,16, + 2,0,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,240,240,127,240,63,112,13,14, + 28,15,1,0,224,24,224,56,224,56,112,48,112,112,56,96, + 56,224,24,192,28,192,29,192,15,128,15,128,7,0,7,0, + 21,14,42,23,1,0,192,112,24,224,248,56,224,248,56,96, + 216,48,97,216,112,113,156,112,49,140,96,51,140,224,59,14, + 224,27,6,192,27,7,192,30,7,128,14,3,128,14,3,128, + 13,14,28,15,1,0,240,56,112,112,56,96,28,224,31,192, + 15,128,7,0,7,128,15,192,29,192,56,224,112,112,112,120, + 224,56,13,19,38,15,1,251,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,15,128, + 7,128,7,0,7,0,6,0,14,0,14,0,12,0,10,14, + 28,12,1,0,255,192,255,192,1,192,3,128,7,0,14,0, + 14,0,28,0,56,0,48,0,112,0,224,0,255,192,255,192, + 9,27,54,13,2,249,3,128,15,128,14,0,12,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,56,0,248,0, + 240,0,240,0,56,0,24,0,28,0,28,0,28,0,28,0, + 12,0,12,0,12,0,14,0,15,128,3,128,1,29,29,9, + 4,249,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,9, + 27,54,13,2,249,240,0,248,0,24,0,28,0,28,0,28, + 0,28,0,28,0,28,0,12,0,12,0,14,0,7,128,3, + 128,7,128,14,0,12,0,12,0,28,0,28,0,28,0,28, + 0,28,0,28,0,24,0,248,0,240,0,15,3,6,15,0, + 5,62,14,127,252,224,248,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,8,0,0,3,19, + 19,10,4,251,224,224,224,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,12,20,40,16,2,253,0,192,0, + 128,0,128,31,128,63,192,113,96,227,96,226,0,226,0,230, + 0,228,0,228,0,236,112,232,96,120,224,63,192,31,128,16, + 0,48,0,48,0,14,20,40,16,1,0,7,224,31,248,60, + 60,56,28,56,0,56,0,56,0,255,128,255,128,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,255, + 248,255,248,16,14,28,18,1,4,192,3,97,134,55,236,28, + 56,24,24,48,12,48,12,48,12,48,12,24,24,28,56,63, + 252,115,198,192,3,15,20,40,17,1,0,224,14,224,28,112, + 28,48,56,56,56,24,112,252,126,252,254,14,224,7,192,255, + 254,255,254,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,1,25,25,9,4,251,128,128,128,128,128,128,128, + 128,128,128,128,0,0,0,128,128,128,128,128,128,128,128,128, + 128,128,10,25,50,12,1,251,31,0,63,128,112,0,224,0, + 224,0,112,0,120,0,62,0,31,0,127,128,113,192,225,192, + 225,192,225,128,247,128,126,0,31,0,7,128,3,192,1,192, + 1,192,1,192,131,128,255,0,60,0,8,3,3,8,0,17, + 231,231,231,21,20,60,25,2,0,1,252,0,7,255,0,28, + 3,128,56,112,192,35,254,96,103,142,48,199,7,16,134,7, + 24,142,0,8,142,0,8,142,0,8,134,0,8,134,7,24, + 199,7,16,67,254,16,32,248,32,48,0,64,28,1,128,7, + 143,0,1,252,0,10,13,26,12,1,7,63,0,127,128,97, + 128,1,128,31,128,127,128,225,128,193,128,227,128,127,128,24, + 0,0,0,255,192,11,11,22,16,2,2,12,96,24,224,56, + 192,113,128,99,128,227,0,99,128,113,128,56,192,24,224,12, + 96,15,6,12,18,2,6,255,254,255,254,0,6,0,6,0, + 6,0,6,255,21,20,60,25,2,0,1,252,0,7,255,0, + 28,3,128,59,252,192,35,254,96,99,3,48,195,3,16,131, + 3,24,131,254,8,131,252,8,131,6,8,131,6,8,131,3, + 24,195,3,16,67,3,48,35,3,96,56,0,192,28,3,128, + 7,255,0,1,252,0,8,2,2,8,0,17,255,255,6,6, + 6,8,1,14,120,204,132,132,204,120,17,17,51,29,6,0, + 1,128,0,1,128,0,1,128,0,1,128,0,1,128,0,255, + 255,128,255,255,128,1,128,0,1,128,0,1,128,0,1,128, + 0,1,128,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,9,11,22,11,1,9,62,0,127,0,227,128,3, + 128,3,0,7,0,28,0,56,0,112,0,255,128,255,128,8, + 11,11,10,1,9,62,127,195,3,30,30,7,3,195,126,60, + 5,5,5,6,2,16,56,48,96,224,192,255,13,24,48,16, + 1,252,15,248,62,32,126,32,126,32,254,32,254,32,254,32, + 126,32,62,32,30,32,2,32,2,32,2,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 2,32,3,3,3,7,2,8,224,224,224,7,7,7,7,1, + 249,32,32,60,14,6,254,248,4,10,10,8,2,10,112,240, + 176,48,48,48,48,48,48,48,10,12,24,12,1,8,30,0, + 99,128,193,128,192,192,192,192,192,192,192,192,193,128,99,128, + 30,0,0,0,255,192,12,11,22,16,2,2,227,0,99,128, + 49,128,56,192,24,224,28,112,24,224,56,192,49,128,99,128, + 227,0,18,20,60,22,2,0,112,12,0,240,12,0,176,24, + 0,48,24,0,48,48,0,48,96,0,48,96,0,48,192,0, + 48,192,0,49,131,0,49,7,0,3,15,0,6,31,0,6, + 27,0,12,51,0,12,99,0,24,127,192,16,3,0,48,3, + 0,96,3,0,18,20,60,22,2,0,112,12,0,240,24,0, + 176,24,0,48,48,0,48,48,0,48,96,0,48,64,0,48, + 192,0,48,128,0,49,143,0,51,31,128,3,49,192,6,1, + 192,6,1,192,12,3,128,8,7,0,24,14,0,16,24,0, + 48,63,192,96,63,192,20,20,60,22,1,0,62,1,128,127, + 3,0,195,3,0,3,6,0,28,6,0,30,12,0,3,24, + 0,195,24,0,199,48,0,126,48,192,56,97,192,0,99,192, + 0,198,192,1,134,192,1,140,192,3,24,192,3,31,240,6, + 0,192,12,0,192,12,0,192,12,19,38,15,2,251,7,0, + 7,0,7,0,0,0,0,0,7,0,7,0,7,0,15,0, + 30,0,56,0,112,0,224,0,224,0,224,0,224,112,127,224, + 63,224,31,128,19,27,81,21,1,0,7,0,0,3,128,0, + 1,128,0,0,192,0,0,96,0,0,0,0,0,0,0,0, + 224,0,1,240,0,1,240,0,3,176,0,3,184,0,3,56, + 0,7,28,0,7,28,0,14,14,0,14,14,0,30,15,0, + 28,7,0,28,7,0,63,255,128,63,255,128,112,1,192,112, + 1,192,224,0,224,224,0,224,224,0,224,19,27,81,21,1, + 0,0,28,0,0,56,0,0,48,0,0,96,0,0,192,0, + 0,0,0,0,0,0,0,224,0,1,240,0,1,240,0,3, + 176,0,3,184,0,3,56,0,7,28,0,7,28,0,14,14, + 0,14,14,0,30,15,0,28,7,0,28,7,0,63,255,128, + 63,255,128,112,1,192,112,1,192,224,0,224,224,0,224,224, + 0,224,19,27,81,21,1,0,0,224,0,1,240,0,1,176, + 0,3,24,0,6,12,0,0,0,0,0,0,0,0,224,0, + 1,240,0,1,240,0,3,176,0,3,184,0,3,56,0,7, + 28,0,7,28,0,14,14,0,14,14,0,30,15,0,28,7, + 0,28,7,0,63,255,128,63,255,128,112,1,192,112,1,192, + 224,0,224,224,0,224,224,0,224,19,26,78,21,1,0,1, + 140,0,3,248,0,6,112,0,0,0,0,0,0,0,0,0, + 0,0,224,0,1,240,0,1,240,0,3,176,0,3,184,0, + 3,56,0,7,28,0,7,28,0,14,14,0,14,14,0,30, + 15,0,28,7,0,28,7,0,63,255,128,63,255,128,112,1, + 192,112,1,192,224,0,224,224,0,224,224,0,224,19,26,78, + 21,1,0,3,156,0,3,156,0,3,156,0,0,0,0,0, + 0,0,0,0,0,0,224,0,0,240,0,1,240,0,1,184, + 0,3,184,0,3,152,0,7,28,0,7,28,0,7,14,0, + 14,14,0,14,15,0,28,7,0,28,7,0,63,255,128,63, + 255,128,56,1,192,112,1,192,112,0,224,224,0,224,224,0, + 224,20,28,84,21,0,0,0,240,0,1,152,0,1,8,0, + 1,8,0,1,152,0,0,240,0,0,0,0,0,0,0,0, + 240,0,0,240,0,0,248,0,1,248,0,1,220,0,3,156, + 0,3,158,0,7,14,0,7,14,0,7,7,0,14,7,0, + 14,7,128,30,3,128,31,255,192,31,255,192,56,1,192,56, + 0,224,112,0,224,112,0,112,224,0,112,25,20,80,28,1, + 0,0,63,255,128,0,127,255,128,0,126,0,0,0,238,0, + 0,0,238,0,0,1,206,0,0,1,206,0,0,3,206,0, + 0,3,142,0,0,7,143,255,128,7,15,255,128,15,14,0, + 0,14,14,0,0,31,254,0,0,63,254,0,0,56,14,0, + 0,120,14,0,0,112,14,0,0,224,15,255,128,224,15,255, + 128,16,27,54,19,2,249,7,240,31,252,60,14,48,6,112, + 7,96,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,96,0,96,7,48,6,56,14,31,252,7,240,0, + 128,0,224,0,248,0,24,0,24,3,248,1,224,13,27,54, + 17,2,0,24,0,28,0,14,0,6,0,3,0,0,0,0, + 0,255,248,255,248,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,255,240,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,255,248,255,248,13,27,54,17,2,0,1, + 192,1,128,3,0,6,0,4,0,0,0,0,0,255,248,255, + 248,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,255,248,255,248,13,27,54,17,2,0,15,0,15,0,25, + 128,16,192,48,192,0,0,0,0,255,248,255,248,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,240,255,240,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,248,255, + 248,13,26,52,17,2,0,56,224,56,224,56,224,0,0,0, + 0,0,0,255,248,255,248,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,248,255,248,5,27,27,7,0, + 0,224,96,48,48,24,0,0,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,5,27,27,7, + 2,0,56,112,96,192,128,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,8,27,27, + 7,255,0,28,62,118,99,193,0,0,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,8,26, + 26,8,0,0,227,227,227,0,0,0,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,19,20, + 60,20,0,0,63,240,0,63,254,0,56,31,0,56,7,128, + 56,3,128,56,1,192,56,1,192,56,0,192,56,0,224,255, + 192,224,255,192,224,56,0,224,56,0,192,56,1,192,56,1, + 192,56,3,128,56,7,128,56,31,0,63,254,0,63,240,0, + 16,26,52,20,2,0,6,48,15,224,9,224,0,0,0,0, + 0,0,240,7,248,7,248,7,252,7,252,7,238,7,238,7, + 231,7,231,135,227,135,227,199,225,199,224,231,224,231,224,119, + 224,119,224,63,224,63,224,31,224,31,18,28,84,22,2,0, + 7,0,0,3,128,0,1,128,0,0,192,0,0,64,0,0, + 0,0,0,0,0,0,0,0,3,240,0,15,252,0,62,31, + 0,56,7,0,112,3,128,96,1,128,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,96, + 1,192,112,3,128,112,3,128,56,7,0,30,30,0,15,252, + 0,3,240,0,18,28,84,22,2,0,0,56,0,0,112,0, + 0,96,0,0,192,0,0,128,0,0,0,0,0,0,0,0, + 0,0,3,240,0,15,252,0,62,31,0,56,7,0,112,3, + 128,96,1,128,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,96,1,192,112,3,128,112, + 3,128,56,7,0,30,30,0,15,252,0,3,240,0,18,28, + 84,22,2,0,1,224,0,1,224,0,3,240,0,3,48,0, + 6,24,0,0,0,0,0,0,0,0,0,0,3,240,0,15, + 252,0,62,31,0,56,7,0,112,3,128,96,1,128,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,96,1,192,112,3,128,112,3,128,56,7,0,30, + 30,0,15,252,0,3,240,0,18,26,78,22,2,0,3,152, + 0,7,248,0,6,112,0,0,0,0,0,0,0,0,0,0, + 3,240,0,15,252,0,62,31,0,56,7,0,112,3,128,96, + 1,128,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,96,1,192,112,3,128,112,3,128, + 56,7,0,31,62,0,15,252,0,3,240,0,18,26,78,22, + 2,0,7,28,0,7,28,0,7,28,0,0,0,0,0,0, + 0,0,0,0,3,240,0,15,252,0,62,31,0,56,7,0, + 112,3,128,96,1,128,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,96,1,192,112,3, + 128,112,3,128,56,7,0,30,30,0,15,252,0,3,240,0, + 16,15,30,28,6,1,64,2,224,7,112,14,56,28,12,56, + 6,96,3,192,1,128,3,192,6,96,12,48,24,24,48,12, + 96,6,64,2,18,24,72,22,2,254,0,0,128,0,1,192, + 3,251,128,15,255,0,62,31,0,56,15,128,112,31,128,96, + 29,128,224,57,192,224,113,192,224,113,192,224,225,192,225,193, + 192,227,193,192,227,129,192,231,1,128,111,3,128,126,3,128, + 60,7,0,62,30,0,63,252,0,115,240,0,224,0,0,96, + 0,0,16,28,56,20,2,0,14,0,7,0,3,0,1,128, + 0,128,0,0,0,0,0,0,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,96,14,112,14,62,124,31,248,15,224, + 16,28,56,20,2,0,0,112,0,224,0,192,1,128,1,0, + 0,0,0,0,0,0,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,96,14,112,14,62,124,31,248,15,224,16,28, + 56,20,2,0,3,192,3,192,7,224,6,96,12,48,0,0, + 0,0,0,0,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,96,14,112,14,62,124,31,248,15,224,16,26,52,20, + 2,0,14,56,14,56,14,56,0,0,0,0,0,0,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,96,6,112,14, + 60,60,31,248,15,224,17,27,81,19,1,0,0,112,0,0, + 96,0,0,192,0,0,128,0,1,128,0,0,0,0,0,0, + 0,224,3,128,240,7,0,112,7,0,56,14,0,60,28,0, + 28,28,0,14,56,0,14,48,0,7,112,0,7,96,0,3, + 224,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,14,20,40, + 17,2,0,224,0,224,0,224,0,224,0,255,192,255,240,224, + 120,224,56,224,28,224,28,224,28,224,56,224,120,255,240,255, + 192,224,0,224,0,224,0,224,0,224,0,14,20,40,15,1, + 0,15,128,63,224,112,112,224,112,224,112,224,112,225,224,227, + 128,231,0,231,0,227,128,227,224,224,248,224,56,224,28,224, + 28,238,28,230,28,231,248,225,240,12,21,42,15,1,0,12, + 0,14,0,6,0,3,0,1,128,0,0,0,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,12,22,44,15,1,0,1, + 192,1,128,3,0,3,0,6,0,12,0,0,0,0,0,31, + 192,63,224,112,112,112,112,0,112,15,240,63,240,112,112,224, + 112,224,112,224,112,224,240,127,176,30,48,12,22,44,15,1, + 0,7,0,15,0,13,128,29,128,24,192,48,64,0,0,0, + 0,31,192,63,224,112,112,112,112,0,112,15,240,63,240,112, + 112,224,112,224,112,224,112,224,240,127,176,30,48,12,20,40, + 15,1,0,30,64,31,192,49,128,0,0,0,0,0,0,31, + 192,63,224,112,112,112,112,0,112,15,240,63,240,112,112,224, + 112,224,112,224,112,224,240,127,176,30,48,12,20,40,15,1, + 0,56,224,56,224,56,224,0,0,0,0,0,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,12,23,46,15,1,0,15, + 0,25,128,16,128,16,128,25,128,15,0,0,0,0,0,0, + 0,31,192,63,224,112,112,112,112,0,112,15,240,63,240,112, + 112,224,112,224,112,224,112,224,240,127,176,30,48,23,14,42, + 25,1,0,31,131,240,63,207,248,112,108,28,112,56,12,0, + 56,14,15,255,254,63,255,254,120,56,0,224,56,0,224,56, + 14,224,120,12,240,236,28,127,199,248,31,3,240,12,21,42, + 14,1,249,31,128,63,224,112,112,224,112,224,112,224,0,224, + 0,224,0,224,0,224,112,224,112,112,224,63,224,31,128,4, + 0,7,128,7,192,0,96,0,96,31,192,15,0,13,22,44, + 15,1,0,56,0,28,0,12,0,6,0,6,0,3,0,0, + 0,0,0,15,128,63,224,112,112,96,48,224,56,255,248,255, + 248,224,0,224,0,224,56,96,112,112,112,63,224,15,128,13, + 22,44,15,1,0,1,192,1,128,3,128,3,0,6,0,4, + 0,0,0,0,0,15,128,63,224,112,112,96,48,224,56,255, + 248,255,248,224,0,224,0,224,56,96,112,112,112,63,224,15, + 128,13,22,44,15,1,0,7,0,15,0,15,128,25,128,24, + 192,48,64,0,0,0,0,15,128,63,224,112,112,96,48,224, + 56,255,248,255,248,224,0,224,0,224,56,96,112,112,112,63, + 224,15,128,13,20,40,15,1,0,56,224,56,224,56,224,0, + 0,0,0,0,0,15,192,63,224,112,112,96,56,224,56,255, + 248,255,248,224,0,224,0,224,56,96,56,112,112,63,224,15, + 128,5,21,21,7,0,0,224,96,48,48,24,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,5,21,21,7, + 2,0,56,112,96,192,128,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,8,21,21,7,255,0,60,62,118, + 99,193,0,0,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,8,20,20,7,255,0,227,227,227,0,0,0,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,14,20,40,16, + 1,0,48,32,57,224,15,0,31,128,113,192,0,224,15,240, + 63,240,120,120,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,96,56,112,112,63,224,15,192,12,20,40,16,2,0, + 28,192,63,192,51,128,0,0,0,0,0,0,239,128,255,224, + 240,240,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,14,22,44,16,1,0,28,0, + 12,0,14,0,6,0,3,0,1,0,0,0,0,0,15,192, + 63,224,112,112,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,112,56,112,112,63,224,15,192,14,22,44,16,1,0, + 0,224,1,192,1,128,3,0,3,0,6,0,0,0,0,0, + 15,192,63,224,112,112,112,56,224,24,224,28,224,28,224,28, + 224,28,224,24,112,56,112,112,63,224,15,192,14,22,44,16, + 1,0,7,0,7,128,15,128,12,192,24,192,24,96,0,0, + 0,0,15,192,63,224,112,112,112,56,224,24,224,28,224,28, + 224,28,224,28,224,24,112,56,112,112,63,224,15,192,14,20, + 40,16,1,0,14,96,31,192,17,128,0,0,0,0,0,0, + 15,192,63,224,112,112,112,56,224,24,224,28,224,28,224,28, + 224,28,224,24,112,56,112,112,63,224,15,192,14,20,40,16, + 1,0,28,224,28,224,28,224,0,0,0,0,0,0,15,192, + 63,224,112,112,112,56,224,24,224,28,224,28,224,28,224,28, + 224,24,112,56,112,112,63,224,15,192,17,12,36,29,6,2, + 1,192,0,1,192,0,1,192,0,0,0,0,0,0,0,255, + 255,128,255,255,128,0,0,0,0,0,0,1,192,0,1,192, + 0,1,192,0,14,18,36,16,1,254,0,8,0,24,15,248, + 63,240,112,112,112,248,225,216,225,152,227,28,230,28,238,28, + 236,24,120,56,112,112,127,224,111,192,192,0,128,0,12,22, + 44,16,2,0,56,0,24,0,12,0,12,0,6,0,3,0, + 0,0,0,0,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,240,240,127,240,63,112, + 12,22,44,16,2,0,1,192,1,128,3,0,7,0,6,0, + 12,0,0,0,0,0,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,240,240,127,240, + 63,112,12,22,44,16,2,0,6,0,15,0,15,0,25,128, + 16,128,48,192,0,0,0,0,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,240,240, + 127,240,63,112,12,20,40,16,2,0,57,192,57,192,57,192, + 0,0,0,0,0,0,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,240,240,127,240, + 63,112,13,27,54,15,1,251,0,224,1,192,1,128,3,0, + 2,0,0,0,0,0,0,0,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,7,128, + 7,128,7,0,7,0,6,0,238,0,252,0,120,0,14,25, + 50,17,2,251,224,0,224,0,224,0,224,0,224,0,224,0, + 231,192,255,240,240,112,240,56,224,24,224,28,224,28,224,28, + 224,28,224,24,224,56,240,112,255,240,231,192,224,0,224,0, + 224,0,224,0,224,0,14,25,50,14,0,251,28,224,28,224, + 28,224,0,0,0,0,0,0,224,28,112,24,112,56,48,56, + 56,112,56,112,28,96,28,224,14,224,14,192,7,192,7,128, + 3,128,3,128,3,0,7,0,6,0,6,0,14,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 20 + Calculated Max Values w=17 h=21 x= 6 y= 9 dx=29 dy= 0 ascent=20 len=48 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =20 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20n[596] U8G_SECTION(".progmem.u8g_font_fur20n") = { + 0,38,35,254,249,20,0,0,0,0,42,57,0,20,253,20, + 0,11,11,22,19,4,9,17,0,49,128,27,0,27,0,14, + 0,255,224,142,32,27,0,27,0,49,128,17,0,17,16,48, + 29,6,0,1,128,0,1,128,0,1,128,0,1,128,0,1, + 128,0,1,128,0,1,128,0,255,255,128,255,255,128,1,128, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,5,7,7,8,1,253,56,56,112,112,96,96,224, + 7,2,2,9,1,6,254,254,3,3,3,8,3,0,224,224, + 224,8,21,21,11,2,255,3,6,6,6,4,12,12,12,24, + 24,24,48,48,48,96,96,96,64,192,192,192,13,20,40,16, + 1,0,15,128,63,192,112,224,96,112,96,112,224,48,224,48, + 224,56,224,56,224,56,224,56,224,56,224,56,224,48,224,48, + 96,112,112,112,48,224,63,192,15,128,7,20,20,16,4,0, + 30,62,126,254,206,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,12,20,40,16,2,0,31,128,63,192,112,96, + 112,112,224,112,0,112,0,112,0,112,0,224,1,224,3,192, + 3,128,7,0,14,0,28,0,60,0,120,0,240,0,255,240, + 255,240,13,20,40,16,1,0,15,128,63,224,112,112,112,48, + 224,56,0,56,0,48,0,224,7,192,7,192,0,224,0,112, + 0,56,0,56,224,56,224,56,224,56,112,112,63,224,31,128, + 14,20,40,16,1,0,0,240,1,240,1,240,3,240,7,112, + 6,112,14,112,28,112,24,112,56,112,112,112,96,112,224,112, + 255,252,255,252,0,112,0,112,0,112,0,112,0,112,13,20, + 40,16,1,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,239,128,255,224,240,112,224,112,224,48,0,56,0,56, + 0,56,224,48,224,112,112,224,127,192,31,128,13,20,40,16, + 1,0,15,192,63,224,120,112,112,48,224,56,224,0,224,0, + 231,192,255,224,248,240,224,56,224,56,224,56,224,56,224,56, + 224,56,96,48,48,112,63,224,15,128,12,20,40,16,2,0, + 255,240,255,240,0,112,0,112,0,96,0,224,0,224,1,192, + 1,192,1,128,3,128,3,128,3,0,7,0,7,0,14,0, + 14,0,14,0,28,0,28,0,13,20,40,16,1,0,15,128, + 63,224,112,112,224,48,224,56,224,56,96,48,112,112,31,192, + 31,192,56,96,96,48,224,56,224,56,224,56,224,56,224,56, + 112,112,63,224,15,128,13,20,40,16,1,0,31,192,63,224, + 112,112,224,56,224,56,224,56,224,56,224,56,224,56,112,120, + 63,248,31,56,0,56,0,56,0,56,96,48,96,112,112,224, + 63,192,31,128}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--28-280-72-72-P-133-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 20, '1' Height: 20 + Calculated Max Values w=26 h=29 x= 7 y=16 dx=29 dy= 0 ascent=22 len=96 + Font Bounding box w=38 h=35 x=-2 y=-7 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =20 descent=-5 + X Font ascent =20 descent=-5 + Max Font ascent =22 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur20r[3976] U8G_SECTION(".progmem.u8g_font_fur20r") = { + 0,38,35,254,249,20,5,12,11,23,32,127,251,22,249,20, + 251,0,0,0,8,0,0,3,20,20,11,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,0,0,224,224, + 224,9,8,16,13,2,12,227,128,227,128,227,0,227,0,227, + 0,195,0,195,0,67,0,18,20,60,21,1,0,0,195,0, + 0,195,0,0,195,0,1,198,0,1,134,0,1,134,0,31, + 255,192,63,255,192,3,12,0,3,24,0,6,24,0,6,24, + 0,127,255,128,255,255,0,12,48,0,12,48,0,28,96,0, + 24,96,0,24,96,0,24,192,0,14,25,50,16,1,253,2, + 0,2,0,31,192,63,224,114,112,98,48,226,56,226,0,226, + 0,114,0,126,0,63,224,15,240,2,248,2,56,2,28,226, + 28,226,28,226,24,114,56,127,240,31,192,2,0,2,0,2, + 0,23,20,60,25,1,0,30,0,192,127,128,192,97,129,128, + 225,193,0,225,195,0,225,198,0,225,198,0,97,140,0,127, + 136,0,30,24,224,0,49,248,0,51,156,0,103,14,0,71, + 14,0,199,14,1,135,14,1,135,14,3,3,12,2,3,252, + 6,0,240,19,20,60,22,2,0,7,192,0,31,240,0,56, + 48,0,56,48,0,56,48,0,56,112,0,29,224,0,15,192, + 0,31,3,128,63,131,128,115,195,128,225,227,128,224,243,0, + 224,123,0,224,63,0,224,30,0,112,15,0,120,31,128,63, + 251,192,15,225,224,3,8,8,10,4,12,224,224,192,192,192, + 192,192,192,5,24,24,10,3,252,24,48,48,112,112,96,96, + 224,224,224,224,224,224,224,224,224,224,96,96,112,112,48,48, + 24,5,24,24,10,3,252,192,192,96,96,96,112,112,48,48, + 48,56,56,56,56,48,48,48,112,112,96,96,96,192,192,11, + 11,22,19,4,9,17,0,49,128,27,0,27,0,14,0,255, + 224,142,32,27,0,27,0,49,128,17,0,17,16,48,29,6, + 0,1,128,0,1,128,0,1,128,0,1,128,0,1,128,0, + 1,128,0,1,128,0,255,255,128,255,255,128,1,128,0,1, + 128,0,1,128,0,1,128,0,1,128,0,1,128,0,1,128, + 0,5,7,7,8,1,253,56,56,112,112,96,96,224,7,2, + 2,9,1,6,254,254,3,3,3,8,3,0,224,224,224,8, + 21,21,11,2,255,3,6,6,6,4,12,12,12,24,24,24, + 48,48,48,96,96,96,64,192,192,192,13,20,40,16,1,0, + 15,128,63,192,112,224,96,112,96,112,224,48,224,48,224,56, + 224,56,224,56,224,56,224,56,224,56,224,48,224,48,96,112, + 112,112,48,224,63,192,15,128,7,20,20,16,4,0,30,62, + 126,254,206,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,12,20,40,16,2,0,31,128,63,192,112,96,112,112, + 224,112,0,112,0,112,0,112,0,224,1,224,3,192,3,128, + 7,0,14,0,28,0,60,0,120,0,240,0,255,240,255,240, + 13,20,40,16,1,0,15,128,63,224,112,112,112,48,224,56, + 0,56,0,48,0,224,7,192,7,192,0,224,0,112,0,56, + 0,56,224,56,224,56,224,56,112,112,63,224,31,128,14,20, + 40,16,1,0,0,240,1,240,1,240,3,240,7,112,6,112, + 14,112,28,112,24,112,56,112,112,112,96,112,224,112,255,252, + 255,252,0,112,0,112,0,112,0,112,0,112,13,20,40,16, + 1,0,255,224,255,224,224,0,224,0,224,0,224,0,224,0, + 239,128,255,224,240,112,224,112,224,48,0,56,0,56,0,56, + 224,48,224,112,112,224,127,192,31,128,13,20,40,16,1,0, + 15,192,63,224,120,112,112,48,224,56,224,0,224,0,231,192, + 255,224,248,240,224,56,224,56,224,56,224,56,224,56,224,56, + 96,48,48,112,63,224,15,128,12,20,40,16,2,0,255,240, + 255,240,0,112,0,112,0,96,0,224,0,224,1,192,1,192, + 1,128,3,128,3,128,3,0,7,0,7,0,14,0,14,0, + 14,0,28,0,28,0,13,20,40,16,1,0,15,128,63,224, + 112,112,224,48,224,56,224,56,96,48,112,112,31,192,31,192, + 56,96,96,48,224,56,224,56,224,56,224,56,224,56,112,112, + 63,224,15,128,13,20,40,16,1,0,31,192,63,224,112,112, + 224,56,224,56,224,56,224,56,224,56,224,56,112,120,63,248, + 31,56,0,56,0,56,0,56,96,48,96,112,112,224,63,192, + 31,128,3,14,14,8,3,0,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,4,17,17,8,2,253,112,112,112,0, + 0,0,0,0,0,0,112,112,96,224,192,192,192,17,14,42, + 29,6,1,0,1,128,0,15,128,0,124,0,1,224,0,15, + 0,0,120,0,0,224,0,0,240,0,0,62,0,0,7,128, + 0,0,240,0,0,62,0,0,7,128,0,0,128,17,7,21, + 29,6,5,255,255,128,255,255,128,0,0,0,0,0,0,0, + 0,0,255,255,128,255,255,128,17,14,42,29,6,1,192,0, + 0,248,0,0,31,0,0,3,192,0,0,120,0,0,15,0, + 0,3,128,0,7,128,0,62,0,0,240,0,7,128,0,62, + 0,0,240,0,0,128,0,0,12,20,40,15,1,0,31,0, + 63,192,127,224,224,240,64,112,0,112,0,112,0,96,0,192, + 3,128,7,0,14,0,14,0,14,0,14,0,0,0,0,0, + 14,0,14,0,14,0,25,24,96,28,2,252,0,127,0,0, + 3,255,224,0,15,129,248,0,30,0,60,0,56,0,14,0, + 48,0,6,0,112,125,199,0,96,255,199,0,225,195,195,0, + 227,131,195,0,227,129,195,128,227,129,195,128,227,129,195,128, + 227,129,195,0,227,129,195,0,225,131,199,0,113,199,206,0, + 112,252,252,0,56,56,48,0,60,0,0,0,30,0,0,0, + 15,128,64,0,3,255,192,0,0,127,128,0,19,20,60,21, + 1,0,0,224,0,1,240,0,1,240,0,3,176,0,3,184, + 0,3,56,0,7,28,0,7,28,0,14,14,0,14,14,0, + 30,15,0,28,7,0,28,7,0,63,255,128,63,255,128,112, + 1,192,112,1,192,224,0,224,224,0,224,224,0,224,15,20, + 40,19,2,0,255,224,255,248,224,120,224,28,224,28,224,28, + 224,28,224,24,224,56,255,224,255,240,224,28,224,12,224,14, + 224,14,224,14,224,30,224,60,255,248,255,224,16,20,40,19, + 2,0,7,240,31,252,60,14,48,6,112,7,96,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,96,0, + 96,7,112,6,56,14,31,252,7,240,16,20,40,20,2,0, + 255,192,255,240,224,120,224,28,224,14,224,14,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,14,224,14, + 224,28,224,120,255,240,255,192,13,20,40,17,2,0,255,248, + 255,248,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,240,255,240,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,248,255,248,12,20,40,16,2,0,255,240,255,240, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,18,20,60,22,2,0,3,248,0,15,254,0, + 30,15,128,56,3,128,112,1,192,96,0,0,224,0,0,224, + 0,0,224,0,0,224,63,192,224,63,192,224,1,192,224,1, + 192,224,1,192,112,1,192,112,1,192,56,1,192,30,7,192, + 15,255,192,3,254,0,15,20,40,19,2,0,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,255,254, + 255,254,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,3,20,20,7,2,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,12,20, + 40,16,2,0,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,0,112,0,112,0,112,0,112, + 0,112,224,112,224,96,113,224,63,192,31,128,15,20,40,18, + 2,0,224,60,224,120,224,240,224,224,225,192,227,128,231,0, + 238,0,252,0,254,0,238,0,239,0,231,128,227,192,225,224, + 224,240,224,120,224,56,224,60,224,30,12,20,40,15,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,240,255,240,21,20,60,25,2,0,248,0, + 248,248,0,248,248,1,248,252,1,248,252,1,184,236,3,184, + 238,3,184,238,3,56,230,7,56,231,6,56,227,14,56,227, + 142,56,227,140,56,225,156,56,225,220,56,225,216,56,224,248, + 56,224,240,56,224,112,56,224,112,56,16,20,40,20,2,0, + 240,7,248,7,248,7,252,7,252,7,238,7,238,7,231,7, + 231,135,227,135,227,199,225,199,224,231,224,231,224,119,224,119, + 224,63,224,63,224,31,224,31,18,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,252,0,3,240,0,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,120,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,20,20,60,22,2,0,3,240, + 0,15,252,0,62,31,0,56,7,0,112,3,128,96,1,128, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,96,1,192,112,3,128,112,3,128,56,7, + 0,30,30,0,15,255,240,3,255,240,14,20,40,17,2,0, + 255,192,255,240,224,120,224,56,224,28,224,28,224,28,224,56, + 224,112,255,224,255,224,224,112,224,56,224,56,224,56,224,24, + 224,24,224,24,224,28,224,28,15,20,40,19,2,0,15,192, + 63,240,120,120,96,28,224,28,224,0,224,0,120,0,127,0, + 63,240,7,252,0,60,0,14,0,14,224,14,224,14,224,14, + 120,60,63,248,15,192,16,20,40,18,1,0,255,255,255,255, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,16,20,40,20,2,0,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,96,6,112,14,60,60,31,248, + 15,224,17,20,60,18,1,0,224,3,128,224,7,0,224,7, + 0,112,7,0,112,14,0,112,14,0,56,14,0,56,28,0, + 56,28,0,28,56,0,28,56,0,12,56,0,14,112,0,14, + 112,0,7,112,0,7,224,0,7,224,0,3,224,0,3,192, + 0,3,192,0,26,20,80,27,1,0,224,28,1,192,224,30, + 3,128,224,62,3,128,224,62,3,128,112,54,3,0,112,119, + 7,0,112,115,7,0,48,99,7,0,56,99,134,0,56,227, + 142,0,24,225,142,0,28,193,140,0,28,193,220,0,29,193, + 220,0,13,192,216,0,15,128,216,0,15,128,248,0,7,128, + 120,0,7,0,112,0,7,0,112,0,18,20,60,20,1,0, + 120,7,128,56,7,0,60,14,0,30,30,0,14,28,0,15, + 56,0,7,56,0,3,240,0,1,224,0,1,224,0,3,224, + 0,3,240,0,7,120,0,14,56,0,14,28,0,28,30,0, + 56,15,0,120,7,0,112,7,128,224,3,192,17,20,60,19, + 1,0,224,3,128,240,7,0,112,7,0,56,14,0,60,28, + 0,28,28,0,14,56,0,14,48,0,7,112,0,7,96,0, + 3,224,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,15,20, + 40,17,1,0,255,252,255,252,0,28,0,56,0,120,0,240, + 0,224,1,192,3,192,3,128,7,0,14,0,30,0,28,0, + 56,0,112,0,240,0,224,0,255,254,255,254,5,25,25,11, + 3,251,248,248,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,248,248,9,21,42,11,1, + 255,192,0,96,0,96,0,96,0,48,0,48,0,48,0,24, + 0,24,0,24,0,8,0,12,0,12,0,12,0,6,0,6, + 0,6,0,3,0,3,0,3,0,1,128,6,25,25,12,3, + 251,252,252,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,252,252,14,17,34,28,7,0, + 3,0,3,0,7,128,7,128,4,128,12,192,8,64,24,96, + 24,96,16,32,48,48,48,48,96,24,96,24,64,8,192,12, + 192,12,14,2,4,14,0,252,255,252,255,252,6,5,5,6, + 255,16,224,112,48,24,12,12,14,28,15,1,0,31,192,63, + 224,112,112,112,112,0,112,15,240,63,240,112,112,224,112,224, + 112,224,112,224,240,127,176,30,48,13,20,40,16,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,231,192,255,224,240, + 112,224,48,224,56,224,56,224,56,224,56,224,56,224,56,224, + 112,240,112,255,224,231,128,12,14,28,14,1,0,31,128,63, + 224,112,112,224,112,224,112,224,0,224,0,224,0,224,0,224, + 112,96,112,112,224,63,224,31,128,13,20,40,16,1,0,0, + 56,0,56,0,56,0,56,0,56,0,56,31,56,63,248,112, + 248,96,120,224,56,224,56,224,56,224,56,224,56,224,56,112, + 56,112,120,63,248,15,184,13,14,28,15,1,0,15,128,63, + 224,112,112,96,48,224,56,255,248,255,248,224,0,224,0,224, + 56,96,112,112,112,63,224,15,128,9,20,40,10,1,0,7, + 128,31,128,28,0,28,0,28,0,28,0,255,128,255,128,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,13,19,38,16,1,251,31,184,63, + 248,112,120,96,56,224,56,224,56,224,56,224,56,224,56,224, + 56,96,56,112,120,63,248,31,56,0,56,112,48,112,112,63, + 224,15,128,12,20,40,16,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,239,192,255,224,240,240,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,3,20,20,7,2,0,224,224,224,0,0,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,5,25,25,7,1, + 251,56,56,56,0,0,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,240,224,11,20,40,14,2,0, + 224,0,224,0,224,0,224,0,224,0,224,0,225,224,225,192, + 227,128,231,0,238,0,252,0,252,0,254,0,238,0,231,0, + 227,128,227,192,225,192,224,224,3,20,20,7,2,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,21,14,42,25,2,0,231,195,224,255,239,240,240,248, + 56,224,120,56,224,112,24,224,112,24,224,112,24,224,112,24, + 224,112,24,224,112,24,224,112,24,224,112,24,224,112,24,224, + 112,24,12,14,28,16,2,0,239,128,255,224,240,240,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,14,14,28,16,1,0,15,192,63,224,112,112, + 112,56,224,24,224,28,224,28,224,28,224,28,224,24,112,56, + 112,112,63,224,15,192,14,19,38,17,2,251,231,192,255,240, + 240,112,240,56,224,24,224,28,224,28,224,28,224,28,224,24, + 224,56,240,112,255,240,231,192,224,0,224,0,224,0,224,0, + 224,0,14,19,38,17,1,251,15,156,63,220,112,124,112,60, + 224,28,224,28,224,28,224,28,224,28,224,28,96,60,112,124, + 63,252,15,156,0,28,0,28,0,28,0,28,0,28,8,14, + 14,10,2,0,239,255,240,224,224,224,224,224,224,224,224,224, + 224,224,12,14,28,14,1,0,31,128,127,192,112,224,224,224, + 224,0,120,0,63,128,15,224,0,224,0,112,224,112,224,224, + 127,192,63,128,8,18,18,10,1,0,8,56,56,56,255,255, + 56,56,56,56,56,56,56,56,56,56,31,15,12,14,28,16, + 2,0,224,112,224,112,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,240,240,127,240,63,112,13,14, + 28,15,1,0,224,24,224,56,224,56,112,48,112,112,56,96, + 56,224,24,192,28,192,29,192,15,128,15,128,7,0,7,0, + 21,14,42,23,1,0,192,112,24,224,248,56,224,248,56,96, + 216,48,97,216,112,113,156,112,49,140,96,51,140,224,59,14, + 224,27,6,192,27,7,192,30,7,128,14,3,128,14,3,128, + 13,14,28,15,1,0,240,56,112,112,56,96,28,224,31,192, + 15,128,7,0,7,128,15,192,29,192,56,224,112,112,112,120, + 224,56,13,19,38,15,1,251,224,24,224,56,96,56,112,112, + 112,112,56,96,56,224,28,224,29,192,13,192,15,128,15,128, + 7,128,7,0,7,0,6,0,14,0,14,0,12,0,10,14, + 28,12,1,0,255,192,255,192,1,192,3,128,7,0,14,0, + 14,0,28,0,56,0,48,0,112,0,224,0,255,192,255,192, + 9,27,54,13,2,249,3,128,15,128,14,0,12,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,56,0,248,0, + 240,0,240,0,56,0,24,0,28,0,28,0,28,0,28,0, + 12,0,12,0,12,0,14,0,15,128,3,128,1,29,29,9, + 4,249,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,9, + 27,54,13,2,249,240,0,248,0,24,0,28,0,28,0,28, + 0,28,0,28,0,28,0,12,0,12,0,14,0,7,128,3, + 128,7,128,14,0,12,0,12,0,28,0,28,0,28,0,28, + 0,28,0,28,0,24,0,248,0,240,0,15,3,6,15,0, + 5,62,14,127,252,224,248,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=31 h=37 x= 8 y=22 dx=34 dy= 0 ascent=36 len=132 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =36 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25[11949] U8G_SECTION(".progmem.u8g_font_fur25") = { + 0,46,45,254,247,25,6,119,15,27,32,255,249,36,247,25, + 249,0,0,0,10,0,0,3,25,25,12,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 0,0,0,224,224,224,11,10,20,15,2,15,241,224,112,224, + 112,224,112,224,112,224,112,224,112,224,96,192,96,192,96,192, + 22,25,75,25,2,0,0,112,224,0,112,224,0,96,192,0, + 225,192,0,225,192,0,193,128,0,193,128,63,255,252,63,255, + 248,1,131,0,3,135,0,3,134,0,3,6,0,7,14,0, + 255,255,224,255,255,224,14,28,0,14,28,0,12,24,0,12, + 24,0,28,56,0,28,56,0,24,48,0,56,112,0,56,112, + 0,16,32,64,18,1,252,1,128,1,128,1,128,15,240,31, + 248,63,252,121,158,113,142,113,142,113,142,113,128,113,128,121, + 128,63,128,31,240,15,252,1,254,1,159,1,143,1,135,225, + 135,225,135,225,135,241,135,121,143,127,254,63,252,15,240,1, + 128,1,128,1,128,1,128,28,27,108,32,2,0,0,0,14, + 0,0,0,12,0,31,128,24,0,63,192,24,0,121,224,48, + 0,240,240,48,0,224,112,96,0,224,112,224,0,224,112,192, + 0,224,113,192,0,240,113,128,0,112,227,128,0,63,227,0, + 0,31,134,31,128,0,6,63,192,0,12,121,224,0,12,240, + 240,0,24,224,112,0,56,224,112,0,48,224,112,0,112,224, + 112,0,96,224,112,0,224,224,112,0,192,240,240,1,128,121, + 224,1,128,63,192,3,0,31,128,23,25,75,26,2,1,7, + 248,0,15,252,0,30,30,0,28,14,0,28,14,0,28,14, + 0,30,28,0,30,60,0,15,248,0,7,224,0,15,192,112, + 31,224,112,61,224,112,120,240,112,240,120,112,224,60,112,224, + 30,224,224,15,224,224,7,224,240,3,192,120,3,224,124,15, + 240,63,255,120,31,252,124,7,240,62,4,10,10,13,4,15, + 240,112,112,112,112,112,112,96,96,96,6,30,30,12,3,251, + 12,24,24,56,56,112,112,112,112,240,224,224,224,224,224,224, + 224,224,224,224,240,112,112,112,112,56,56,24,24,12,6,30, + 30,12,3,251,224,96,112,112,48,56,56,56,56,28,28,28, + 28,28,28,28,28,28,28,28,28,60,56,56,56,48,112,112, + 96,224,14,13,26,22,4,12,24,96,28,224,28,224,12,192, + 7,128,243,60,255,252,231,156,7,128,12,192,28,224,60,224, + 24,96,20,21,63,34,7,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,6,9,9,9,2,252,60,120,120, + 112,112,224,224,224,192,8,3,3,10,1,7,255,255,255,3, + 4,4,9,3,0,224,224,224,224,10,28,56,13,2,254,0, + 192,1,192,1,128,1,128,3,128,3,0,3,0,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,28,0,24, + 0,24,0,56,0,48,0,48,0,112,0,112,0,96,0,96, + 0,224,0,192,0,192,0,15,25,50,19,2,1,15,224,63, + 248,62,248,120,60,112,28,112,30,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 14,112,30,112,28,120,28,60,60,63,248,31,240,7,192,8, + 25,25,19,5,0,15,31,63,127,255,231,135,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,25, + 50,19,2,1,15,240,63,248,62,252,120,28,120,30,112,14, + 240,14,0,14,0,30,0,28,0,60,0,120,0,120,0,240, + 1,224,3,192,7,128,15,0,31,0,62,0,60,0,120,0, + 240,0,255,254,255,254,16,25,50,19,2,1,15,240,63,248, + 60,28,120,14,112,14,112,14,0,14,0,14,0,28,0,120, + 3,240,3,240,0,248,0,30,0,14,0,15,0,7,0,7, + 240,7,240,7,240,14,120,30,60,124,31,248,7,224,17,25, + 75,19,1,0,0,60,0,0,124,0,0,124,0,0,252,0, + 1,220,0,1,220,0,3,156,0,7,28,0,7,28,0,14, + 28,0,28,28,0,60,28,0,56,28,0,112,28,0,240,28, + 0,224,28,0,255,255,128,255,255,128,255,255,128,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,15, + 25,50,19,2,0,127,252,127,252,127,252,112,0,112,0,112, + 0,112,0,112,0,115,240,127,248,124,60,120,28,112,30,96, + 14,0,14,0,14,0,14,0,14,0,14,224,30,240,28,112, + 60,124,120,63,240,15,192,16,25,50,19,1,1,15,240,31, + 252,60,28,120,30,112,14,240,14,224,0,224,0,224,0,227, + 240,231,252,239,252,252,30,248,14,240,15,240,7,240,7,240, + 7,240,7,112,7,120,14,56,14,62,60,15,248,7,224,15, + 25,50,19,2,0,255,254,255,254,0,14,0,30,0,28,0, + 28,0,60,0,56,0,56,0,120,0,112,0,240,0,240,0, + 224,1,224,1,224,1,192,3,192,3,128,7,128,7,128,7, + 0,15,0,15,0,14,0,16,25,50,19,1,1,15,240,63, + 252,60,60,120,30,112,14,112,14,112,14,112,14,56,28,60, + 60,15,240,15,240,62,56,56,28,112,14,224,7,224,7,224, + 7,224,7,224,7,240,15,120,14,60,60,31,248,7,224,16, + 25,50,19,2,1,31,248,63,252,120,30,112,14,240,15,224, + 15,224,15,224,15,224,15,240,15,112,31,120,63,63,247,15, + 231,0,7,0,7,0,7,0,14,112,14,112,14,112,30,112, + 60,60,120,31,240,15,224,3,18,18,9,3,0,224,224,224, + 224,0,0,0,0,0,0,0,0,0,0,224,224,224,224,6, + 22,22,9,1,252,56,56,56,56,0,0,0,0,0,0,0, + 0,0,60,56,56,56,112,112,112,96,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,240,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,252,0,0,31,0,0,7,224,0,0,248,0,0,31,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,15,25,50,18,1,1,31,224,63,248,125,252,240,30,96, + 14,0,14,0,14,0,30,0,28,0,60,0,120,0,240,1, + 192,3,128,7,128,7,0,7,0,7,0,7,0,0,0,0, + 0,0,0,7,0,7,0,7,0,30,30,120,34,2,251,0, + 31,240,0,0,255,254,0,3,255,255,0,7,224,31,192,15, + 128,3,224,30,0,0,240,60,0,0,112,56,31,56,120,112, + 63,184,56,112,125,248,56,240,112,120,60,224,240,120,28,224, + 224,56,28,224,224,56,28,224,224,56,28,224,224,56,28,224, + 224,56,28,224,224,56,56,240,224,120,56,112,112,120,120,112, + 120,254,240,120,63,223,224,56,31,15,192,60,0,0,0,30, + 0,0,0,15,128,0,0,7,224,0,0,3,255,248,0,0, + 255,248,0,0,31,240,0,24,25,75,26,1,0,0,60,0, + 0,124,0,0,126,0,0,254,0,0,238,0,0,239,0,1, + 231,0,1,199,128,3,195,128,3,131,192,7,131,192,7,1, + 192,7,1,224,15,0,224,14,0,240,31,255,240,31,255,240, + 31,255,248,60,0,56,56,0,60,120,0,28,112,0,30,112, + 0,30,240,0,14,224,0,15,18,25,75,23,3,0,255,248, + 0,255,254,0,255,255,0,224,15,128,224,7,128,224,3,128, + 224,3,128,224,3,128,224,7,128,224,15,0,255,254,0,255, + 252,0,255,254,0,224,15,0,224,3,128,224,3,192,224,1, + 192,224,1,192,224,1,192,224,3,192,224,7,192,224,15,128, + 255,255,0,255,254,0,255,248,0,19,25,75,23,2,1,3, + 254,0,15,255,128,30,3,192,60,1,192,56,0,224,112,0, + 224,112,0,0,112,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,112,0,0,112,0,224,112,0,224,56,1,224,60,1, + 192,31,7,128,15,255,0,1,252,0,20,25,75,25,3,0, + 255,240,0,255,254,0,255,255,0,224,31,128,224,7,192,224, + 3,192,224,1,224,224,0,224,224,0,240,224,0,240,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,240, + 224,0,240,224,0,224,224,1,224,224,3,192,224,7,192,224, + 31,128,255,255,0,255,252,0,255,240,0,16,25,50,21,3, + 0,255,254,255,254,255,254,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,255,255, + 255,255,255,15,25,50,20,3,0,255,254,255,254,255,254,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 252,255,252,255,252,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,21,25,75,26,2, + 1,1,255,128,7,255,192,15,255,224,30,0,240,60,0,120, + 120,0,56,112,0,0,112,0,0,240,0,0,224,0,0,224, + 0,0,224,15,248,224,15,248,224,15,248,224,0,56,240,0, + 56,112,0,56,112,0,56,120,0,56,60,0,56,62,0,56, + 31,0,248,15,255,248,7,255,240,0,255,128,18,25,75,24, + 3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,3,25,25, + 9,3,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,14,25,50,19, + 2,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,224,28,224,28,240,60,120,120,127,240, + 63,224,15,192,18,25,75,23,3,0,224,7,128,224,15,0, + 224,30,0,224,60,0,224,120,0,224,240,0,225,224,0,227, + 192,0,231,128,0,239,0,0,254,0,0,255,0,0,239,128, + 0,231,128,0,231,192,0,227,224,0,225,240,0,224,248,0, + 224,120,0,224,60,0,224,62,0,224,31,0,224,15,128,224, + 7,192,224,3,192,15,25,50,19,3,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,25,25,100, + 31,3,0,248,0,15,128,252,0,31,128,252,0,31,128,252, + 0,31,128,238,0,59,128,238,0,59,128,239,0,123,128,231, + 0,115,128,231,0,115,128,231,128,243,128,227,128,227,128,227, + 128,227,128,225,193,195,128,225,193,195,128,225,193,195,128,224, + 227,131,128,224,227,131,128,224,247,131,128,224,119,3,128,224, + 119,3,128,224,127,3,128,224,62,3,128,224,62,3,128,224, + 28,3,128,224,28,3,128,19,25,75,25,3,0,248,0,224, + 248,0,224,252,0,224,254,0,224,254,0,224,239,0,224,239, + 0,224,231,128,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,120,224,224,60,224, + 224,60,224,224,30,224,224,30,224,224,15,224,224,15,224,224, + 7,224,224,3,224,224,3,224,22,25,75,26,2,1,3,255, + 0,15,255,192,31,255,224,62,1,240,56,0,112,120,0,120, + 112,0,56,240,0,56,240,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,112,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,31,3,224, + 15,255,192,7,255,128,0,252,0,16,25,50,21,3,0,255, + 224,255,252,255,254,224,30,224,15,224,7,224,7,224,7,224, + 7,224,15,224,30,255,254,255,252,255,224,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,24,25,75,27,2,1,3,255,0,15,255,192,31,255,224, + 62,1,240,56,0,112,120,0,120,112,0,56,240,0,56,240, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,240,0,60,112,0,56,112,0,56,120,0,120, + 56,0,112,60,0,240,31,3,224,15,255,255,7,255,255,0, + 255,255,17,25,75,21,3,0,255,240,0,255,252,0,255,254, + 0,224,31,0,224,15,0,224,7,0,224,7,0,224,7,0, + 224,15,0,224,30,0,255,252,0,255,240,0,255,252,0,224, + 60,0,224,30,0,224,14,0,224,14,0,224,14,0,224,15, + 0,224,7,0,224,7,0,224,7,0,224,7,0,224,7,0, + 224,7,128,18,25,75,22,2,1,7,252,0,31,254,0,63, + 255,0,120,7,128,112,3,128,112,3,128,112,0,0,112,0, + 0,120,0,0,124,0,0,63,192,0,31,252,0,7,255,0, + 0,63,128,0,7,128,0,3,192,0,1,192,224,1,192,224, + 1,192,240,1,192,112,3,192,124,15,128,63,255,0,31,254, + 0,7,240,0,19,25,75,21,1,0,255,255,224,255,255,224, + 255,255,224,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,19,25,75,25,3,0,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,240,0, + 224,240,1,224,112,1,192,120,3,192,62,7,192,63,255,128, + 31,255,0,3,248,0,21,25,75,22,1,0,240,0,120,240, + 0,240,240,0,240,120,0,240,120,1,224,120,1,224,60,1, + 192,60,3,192,60,3,192,28,3,128,30,7,128,14,7,128, + 14,7,0,15,15,0,7,15,0,7,14,0,7,158,0,3, + 158,0,3,156,0,3,252,0,1,252,0,1,248,0,1,248, + 0,0,248,0,0,240,0,31,25,100,33,1,0,224,7,192, + 14,240,7,192,14,240,7,192,30,112,7,192,30,112,14,224, + 28,120,14,224,60,120,14,224,60,56,14,240,56,56,28,112, + 56,60,28,112,120,28,28,112,120,28,60,56,112,28,56,56, + 112,30,56,56,240,14,56,56,224,14,112,28,224,14,112,28, + 224,7,112,29,192,7,112,29,192,7,224,15,192,7,224,15, + 192,3,224,15,128,3,224,7,128,3,192,7,128,1,192,7, + 0,22,25,75,24,1,0,124,0,120,60,0,240,30,1,224, + 31,1,224,15,3,192,7,135,128,7,135,128,3,207,0,1, + 238,0,1,254,0,0,252,0,0,120,0,0,252,0,0,252, + 0,1,222,0,3,207,0,3,143,0,7,135,128,15,3,192, + 14,3,192,30,1,224,60,1,240,56,0,240,120,0,120,240, + 0,124,21,25,75,23,1,0,240,0,120,120,0,112,120,0, + 240,60,1,224,30,1,224,30,3,192,15,3,128,15,7,128, + 7,135,0,3,143,0,3,206,0,1,252,0,1,252,0,0, + 248,0,0,120,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,18,25,75,22,2,0,127,255,192,127,255,192,127, + 255,192,0,3,192,0,7,128,0,15,128,0,31,0,0,30, + 0,0,60,0,0,124,0,0,248,0,0,240,0,1,224,0, + 3,224,0,7,192,0,15,128,0,15,0,0,31,0,0,62, + 0,0,124,0,0,120,0,0,240,0,0,255,255,192,255,255, + 192,255,255,192,7,32,32,14,4,249,254,254,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,254,254,10,28,56,13,2,254, + 192,0,192,0,224,0,224,0,96,0,96,0,112,0,48,0, + 48,0,56,0,56,0,24,0,24,0,28,0,12,0,12,0, + 14,0,6,0,6,0,6,0,7,0,3,0,3,0,3,128, + 1,128,1,128,1,128,1,192,6,32,32,14,4,249,252,252, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,252,252,18,21, + 63,34,8,0,0,192,0,1,224,0,1,224,0,1,224,0, + 3,48,0,3,48,0,2,16,0,6,24,0,6,24,0,12, + 12,0,12,12,0,12,12,0,24,6,0,24,6,0,24,6, + 0,48,3,0,48,3,0,112,1,128,96,1,128,96,1,128, + 192,0,192,17,2,6,17,0,251,255,255,128,255,255,128,6, + 6,6,8,0,21,224,224,112,56,24,12,15,18,36,19,2, + 0,15,240,63,252,60,60,120,30,112,14,0,14,0,14,15, + 254,63,254,124,14,112,14,224,14,224,30,224,30,240,62,120, + 238,63,238,15,142,16,25,50,20,2,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,227,240,239,248,238,124,248, + 30,240,14,240,15,224,7,224,7,224,7,224,7,224,7,224, + 15,240,14,240,14,248,28,254,124,239,248,227,224,14,18,36, + 18,2,0,15,224,63,240,124,120,112,60,112,28,240,28,224, + 0,224,0,224,0,224,0,224,0,224,0,240,28,112,28,112, + 60,60,120,31,240,15,224,16,25,50,20,2,0,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,15,199,31,247,60, + 127,120,31,112,31,112,15,224,15,224,7,224,7,224,7,224, + 7,224,7,112,15,112,15,56,31,62,63,15,247,7,199,16, + 18,36,19,2,0,7,224,31,248,60,124,120,30,112,14,240, + 14,224,14,255,254,255,255,224,0,224,0,224,0,112,14,112, + 14,120,30,62,124,31,248,7,224,11,25,50,12,1,0,7, + 224,15,224,31,32,28,0,28,0,28,0,28,0,255,224,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,16,25,50,20,2,249,7,231,31,247,62,127,120,31,112, + 15,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,112,15,120,31,62,127,31,247,15,199,0,7,0,15,112, + 14,120,30,60,60,31,248,7,224,15,25,50,19,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,227,240,239, + 248,252,124,248,28,240,30,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,3,25,25,7,2,0,224,224,224,0,0,0,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 5,32,32,9,2,249,56,56,56,0,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,240,224,14,25,50,17,2,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,120,224,240,225,224, + 225,192,227,192,231,128,239,0,254,0,254,0,239,0,231,128, + 231,128,227,192,225,224,225,224,224,240,224,120,224,60,3,25, + 25,8,2,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,26,18,72, + 30,2,0,227,224,124,0,239,241,255,0,252,123,143,128,248, + 63,3,128,240,30,3,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,15,18,36,19,2, + 0,227,240,239,248,252,124,248,30,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,17,18,54,21,2,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,16,25,50,20,2,249,227,240,231,248,254,60,248,30,240, + 14,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,240,14,248,30,254,124,239,248,227,240,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,16,25,50,21,2,249,7, + 199,31,247,62,63,120,31,112,15,240,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,15,112,15,120,31,62,127,31, + 247,7,199,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,10,18,36,12,2,0,231,192,239,192,254,0,248,0,240, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,14,18,36,18,2, + 0,31,192,127,240,120,248,240,56,224,56,224,0,240,0,126, + 0,63,224,15,248,0,252,0,60,0,28,224,28,240,60,120, + 248,63,240,31,192,10,22,44,12,1,1,28,0,28,0,28, + 0,28,0,255,192,255,192,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,30,0,15,192,7,192,15,18,36,19,2,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,62,124,126,63,238,31, + 142,16,18,36,18,1,0,224,7,240,7,240,15,112,14,120, + 14,56,30,56,28,60,28,28,56,30,56,14,56,14,112,15, + 112,7,224,7,224,3,224,3,192,3,192,26,18,72,28,1, + 0,224,30,1,192,224,62,3,192,224,63,3,128,112,63,3, + 128,112,119,3,128,112,115,7,0,56,115,135,0,56,115,135, + 0,56,227,142,0,24,225,206,0,28,225,206,0,29,193,206, + 0,29,192,220,0,15,192,252,0,15,128,252,0,15,128,120, + 0,7,128,120,0,7,128,120,0,17,18,54,19,1,0,112, + 7,0,120,14,0,60,30,0,30,28,0,30,56,0,15,112, + 0,7,240,0,3,224,0,3,192,0,3,224,0,7,224,0, + 15,240,0,14,120,0,28,60,0,60,28,0,120,30,0,112, + 15,0,240,7,128,16,25,50,18,1,249,224,7,240,7,112, + 15,112,14,120,14,56,30,60,28,28,28,28,60,30,56,14, + 56,15,112,7,112,7,240,7,224,3,224,3,224,1,192,1, + 192,3,128,3,128,7,128,7,0,7,0,15,0,13,18,36, + 17,2,0,127,248,127,248,0,120,0,112,0,240,1,224,3, + 192,3,192,7,128,15,0,31,0,30,0,60,0,120,0,120, + 0,240,0,255,248,255,248,11,35,70,17,3,248,1,224,3, + 224,7,128,15,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,30,0,28,0,60,0,248,0,240, + 0,248,0,60,0,28,0,30,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,7,0,7,128,3, + 224,1,224,2,37,37,12,5,247,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,11,35, + 70,17,3,248,240,0,248,0,60,0,28,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,15,0, + 7,0,7,128,3,224,1,224,3,224,7,128,7,0,15,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,28,0,60,0,248,0,240,0,18,4,12,18,0,7, + 31,1,192,63,231,128,121,255,0,224,62,0,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 10,0,0,3,25,25,13,5,249,224,224,224,0,0,0,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,14,26,52,19,2,252,0,48,0,48,0,32,0,96, + 15,224,63,240,124,248,112,220,112,156,241,156,225,128,225,128, + 227,0,227,0,227,0,226,0,246,28,118,28,124,60,60,120, + 63,240,15,192,24,0,24,0,16,0,48,0,17,26,78,19, + 1,0,0,64,0,7,252,0,15,254,0,30,15,0,60,7, + 128,56,3,128,56,0,0,56,0,0,56,0,0,56,0,0, + 255,224,0,255,224,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,255,255,0,255,255,0, + 18,19,57,20,1,6,64,0,128,224,1,192,113,227,128,63, + 255,0,31,62,0,28,14,0,24,6,0,48,3,0,48,3, + 0,48,3,0,48,3,0,48,3,0,24,6,0,28,14,0, + 31,62,0,55,251,0,113,225,128,224,1,192,64,0,128,18, + 25,75,20,1,0,240,1,192,112,3,192,120,3,128,56,7, + 128,60,7,0,28,15,0,30,14,0,254,15,192,255,31,192, + 7,28,0,7,184,0,3,184,0,3,240,0,255,255,192,255, + 255,192,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 2,33,33,12,5,249,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,0,0,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,12,31,62,16,2,251,31,224,63, + 224,56,32,112,0,112,0,112,0,120,0,124,0,62,0,31, + 128,15,192,63,224,120,240,240,112,224,112,224,112,224,240,241, + 224,127,192,63,128,31,128,7,224,1,224,0,240,0,112,0, + 112,0,112,0,240,65,224,127,192,63,128,10,3,6,10,0, + 22,225,192,225,192,225,192,26,25,100,30,2,1,0,255,192, + 0,3,255,240,0,7,128,120,0,14,0,28,0,28,127,14, + 0,57,255,135,0,115,227,195,0,99,129,225,128,103,128,225, + 128,199,0,0,192,199,0,0,192,199,0,0,192,199,0,0, + 192,199,0,0,192,199,0,0,192,199,0,224,128,99,129,225, + 128,99,195,193,128,49,255,131,0,48,127,7,0,24,0,14, + 0,14,0,28,0,7,128,120,0,1,255,224,0,0,127,128, + 0,12,17,34,14,1,8,31,128,63,192,120,224,96,96,0, + 96,7,224,63,224,56,96,96,96,96,96,96,224,113,224,63, + 96,30,96,0,0,0,0,255,240,13,14,28,19,3,2,14, + 56,28,56,56,112,56,224,112,224,113,192,227,192,227,192,113, + 192,112,224,56,224,24,112,28,56,14,56,18,8,24,21,2, + 7,255,255,192,255,255,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,255,26,25,100,30,2,1, + 0,255,192,0,3,255,240,0,7,128,120,0,14,255,156,0, + 24,255,206,0,48,193,231,0,112,192,99,0,96,192,97,128, + 96,192,97,128,192,192,192,192,192,255,128,192,192,255,128,192, + 192,193,192,192,192,192,192,192,192,192,192,192,192,192,225,128, + 96,192,97,128,96,192,97,128,48,192,99,0,56,0,7,0, + 28,0,14,0,15,0,60,0,7,193,248,0,1,255,224,0, + 0,127,128,0,10,2,4,10,0,22,255,192,255,192,7,7, + 7,11,2,18,56,196,130,130,130,196,120,20,21,63,34,7, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,255,240,255,255,240, + 10,13,26,12,1,13,63,128,127,128,97,192,225,192,1,192, + 3,128,7,128,14,0,28,0,56,0,240,0,255,192,255,192, + 10,14,28,13,2,12,127,128,255,192,193,192,1,192,7,128, + 14,0,15,128,3,192,0,192,192,192,192,192,227,128,127,128, + 62,0,6,6,6,8,2,21,28,60,56,112,96,192,255,16, + 31,62,20,2,250,7,255,31,140,63,140,127,140,255,140,255, + 140,255,140,255,140,255,140,127,140,127,140,31,140,7,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,3,4,4,9,3,10,224,224,224,224,8,9,9, + 9,2,247,32,32,60,62,7,3,135,255,252,5,13,13,10, + 2,12,56,120,248,152,24,24,24,24,24,24,24,24,24,12, + 16,32,14,1,9,31,128,63,192,112,224,224,96,192,112,192, + 48,192,48,192,48,192,112,224,112,112,224,63,192,31,128,0, + 0,0,0,255,240,13,14,28,19,3,2,227,128,225,192,112, + 192,56,224,56,112,28,112,28,56,30,56,28,112,56,112,56, + 224,112,192,225,192,227,128,23,27,81,27,2,0,56,0,192, + 120,1,192,248,1,128,216,3,128,24,3,0,24,7,0,24, + 6,0,24,14,0,24,12,0,24,24,0,24,24,0,24,48, + 0,24,112,0,24,96,112,0,224,112,0,192,240,1,193,176, + 1,129,48,3,131,48,3,6,48,7,12,48,6,15,254,14, + 15,254,12,0,48,24,0,48,24,0,48,48,0,48,23,27, + 81,27,2,0,56,0,224,120,1,192,248,1,128,216,3,128, + 24,3,0,24,7,0,24,6,0,24,14,0,24,12,0,24, + 28,0,24,24,0,24,56,0,24,48,0,24,112,248,0,227, + 252,0,195,142,1,199,6,1,128,6,3,128,14,3,0,12, + 7,0,56,6,0,112,14,0,224,12,3,192,28,7,128,24, + 7,254,48,7,254,24,26,78,27,2,0,0,0,24,127,128, + 56,255,192,112,193,192,96,3,128,224,14,0,192,15,129,192, + 3,193,128,0,195,128,192,199,0,192,198,0,227,142,0,127, + 140,28,62,28,60,0,24,60,0,48,108,0,112,204,0,97, + 204,0,227,140,0,195,12,1,199,255,1,135,255,3,0,12, + 7,0,12,6,0,12,14,0,12,15,25,50,18,2,249,1, + 192,1,192,1,192,0,0,0,0,0,0,1,192,1,192,1, + 192,1,192,3,192,7,128,15,0,62,0,124,0,120,0,240, + 0,224,0,224,0,224,8,240,14,120,60,63,252,31,248,7, + 224,24,35,105,26,1,0,1,192,0,1,224,0,0,224,0, + 0,112,0,0,48,0,0,24,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,60,0,0,124,0,0,126,0,0,254, + 0,0,238,0,0,239,0,1,231,0,1,199,128,3,195,128, + 3,131,192,7,131,192,7,1,192,7,1,224,15,0,224,14, + 0,240,31,255,240,31,255,240,31,255,248,60,0,56,56,0, + 60,120,0,28,112,0,30,112,0,30,240,0,14,224,0,15, + 24,35,105,26,1,0,0,7,128,0,7,0,0,14,0,0, + 12,0,0,28,0,0,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,60,0,0,124,0,0,126,0,0,254,0, + 0,238,0,0,239,0,1,231,0,1,199,128,3,195,128,3, + 131,192,7,131,192,7,1,192,7,1,224,15,0,224,14,0, + 240,31,255,240,31,255,240,31,255,248,60,0,56,56,0,60, + 120,0,28,112,0,30,112,0,30,240,0,14,224,0,15,24, + 35,105,26,1,0,0,60,0,0,124,0,0,110,0,0,230, + 0,0,195,0,1,131,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,60,0,0,124,0,0,126,0,0,254,0,0, + 238,0,0,239,0,1,231,0,1,199,128,3,195,128,3,131, + 192,7,131,192,7,1,192,7,1,224,15,0,224,14,0,240, + 31,255,240,31,255,240,31,255,248,60,0,56,56,0,60,120, + 0,28,112,0,30,112,0,30,240,0,14,224,0,15,24,33, + 99,26,1,0,0,241,128,1,255,0,1,159,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,0, + 124,0,0,126,0,0,254,0,0,238,0,0,239,0,1,231, + 0,1,199,128,3,195,128,3,131,192,7,131,192,7,1,192, + 7,1,224,15,0,224,14,0,240,31,255,240,31,255,240,31, + 255,248,60,0,56,56,0,60,120,0,28,112,0,30,112,0, + 30,240,0,14,224,0,15,25,33,132,25,0,0,0,225,192, + 0,0,225,192,0,0,225,192,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,0, + 0,0,62,0,0,0,62,0,0,0,127,0,0,0,119,0, + 0,0,247,128,0,0,227,128,0,0,227,192,0,1,227,192, + 0,1,193,192,0,3,193,224,0,3,128,224,0,7,128,240, + 0,7,0,112,0,7,0,112,0,15,255,248,0,15,255,248, + 0,31,255,252,0,28,0,28,0,28,0,30,0,60,0,14, + 0,56,0,14,0,120,0,15,0,112,0,7,0,240,0,7, + 128,24,36,108,25,1,0,0,56,0,0,196,0,0,130,0, + 0,130,0,0,130,0,0,196,0,0,124,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,60,0,0,124,0,0,126, + 0,0,254,0,0,238,0,0,239,0,1,231,0,1,199,128, + 3,195,128,3,131,128,7,131,192,7,129,192,7,1,224,15, + 0,224,14,0,240,31,255,240,31,255,240,31,255,248,60,0, + 56,56,0,60,120,0,60,120,0,28,112,0,30,240,0,14, + 224,0,15,31,25,100,34,1,0,0,7,255,252,0,15,255, + 252,0,15,255,252,0,31,192,0,0,29,192,0,0,61,192, + 0,0,57,192,0,0,121,192,0,0,241,192,0,0,241,192, + 0,1,225,192,0,1,225,255,252,3,193,255,252,3,193,255, + 252,7,129,192,0,7,255,192,0,15,255,192,0,15,255,192, + 0,30,1,192,0,28,1,192,0,60,1,192,0,56,1,192, + 0,120,1,255,254,112,1,255,254,240,1,255,254,19,33,99, + 23,2,249,3,254,0,15,255,128,30,3,192,60,1,192,56, + 0,224,112,0,224,112,0,0,112,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,112,0,0,112,0,224,112,0,224,56, + 1,224,60,1,192,31,7,128,15,255,0,3,252,0,0,64, + 0,0,120,0,0,124,0,0,30,0,0,6,0,0,6,0, + 1,254,0,1,252,0,16,35,70,21,3,0,28,0,14,0, + 7,0,7,0,3,128,1,128,0,0,0,0,0,0,0,0, + 255,254,255,254,255,254,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,254,255,254,255,254,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,255,255,255,255, + 255,255,16,35,70,21,3,0,0,112,0,240,0,224,1,192, + 1,128,3,0,0,0,0,0,0,0,0,0,255,254,255,254, + 255,254,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,255,254,255,254,255,254,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,255,255,255,255,255,16,35, + 70,21,3,0,7,192,7,192,14,224,12,96,28,112,24,48, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,255,254, + 255,254,255,254,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,255,255,255,255,255,255,16,33,66,21,3,0, + 28,112,28,112,28,112,0,0,0,0,0,0,0,0,0,0, + 255,254,255,254,255,254,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,254,255,254,255,254,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,255,255,255,255, + 255,255,6,35,35,9,0,0,240,112,56,24,28,12,0,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,6,35,35,9,3, + 0,28,56,48,112,224,192,0,0,0,0,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,9,35,70,9,0,0,30,0,62,0,55,0, + 115,0,99,128,193,128,0,0,0,0,0,0,0,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 10,33,66,10,0,0,225,192,225,192,225,192,0,0,0,0, + 0,0,0,0,0,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,22,25,75,24,0,0,31,252, + 0,31,255,128,31,255,192,28,7,224,28,0,240,28,0,120, + 28,0,120,28,0,60,28,0,60,28,0,28,28,0,28,255, + 240,28,255,240,28,255,240,28,28,0,28,28,0,28,28,0, + 60,28,0,56,28,0,120,28,0,120,28,0,240,28,7,224, + 31,255,192,31,255,128,31,252,0,19,33,99,25,3,0,3, + 204,0,7,252,0,14,248,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,248,0,224,248,0,224,252,0,224, + 254,0,224,254,0,224,239,0,224,239,0,224,231,128,224,231, + 128,224,227,192,224,227,192,224,225,224,224,224,224,224,224,240, + 224,224,120,224,224,120,224,224,60,224,224,60,224,224,30,224, + 224,30,224,224,15,224,224,15,224,224,7,224,224,3,224,224, + 3,224,22,36,108,26,2,0,3,192,0,1,192,0,0,224, + 0,0,96,0,0,112,0,0,56,0,0,24,0,0,0,0, + 0,0,0,0,0,0,0,0,0,3,255,0,15,255,192,31, + 255,224,62,1,240,56,0,112,120,0,120,112,0,56,240,0, + 56,240,0,28,224,0,28,224,0,28,224,0,28,224,0,28, + 224,0,28,224,0,28,240,0,60,112,0,56,112,0,56,120, + 0,120,56,0,112,60,0,240,31,3,224,15,255,192,7,255, + 128,0,252,0,22,36,108,26,2,0,0,15,0,0,14,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,96,0,0, + 0,0,0,0,0,0,0,0,0,0,0,3,255,0,15,255, + 192,31,255,224,62,1,240,56,0,112,120,0,120,112,0,56, + 240,0,56,240,0,28,224,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,240,0,60,112,0,56,112,0, + 56,120,0,120,56,0,112,60,0,240,31,3,224,15,255,192, + 7,255,128,0,252,0,22,36,108,26,2,0,0,120,0,0, + 120,0,0,252,0,0,206,0,1,206,0,3,135,0,3,3, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,255,0, + 15,255,192,31,255,224,62,1,240,56,0,112,120,0,120,112, + 0,56,240,0,56,240,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,224,0,28,224,0,28,240,0,60,112,0,56, + 112,0,56,120,0,120,56,0,112,60,0,240,31,3,224,15, + 255,192,7,255,128,0,252,0,22,33,99,26,2,0,1,243, + 0,3,255,0,3,30,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,255,0,15,255,192,31,255,224,62, + 1,240,56,0,112,120,0,120,112,0,56,240,0,56,240,0, + 28,224,0,28,224,0,28,224,0,28,224,0,28,224,0,28, + 224,0,28,240,0,60,112,0,56,112,0,56,120,0,120,56, + 0,112,60,0,240,31,3,224,15,255,192,7,255,128,0,252, + 0,22,33,99,26,2,0,1,195,128,1,195,128,1,195,128, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3, + 255,0,15,255,192,31,255,224,62,1,240,56,0,112,120,0, + 120,112,0,56,240,0,56,240,0,28,224,0,28,224,0,28, + 224,0,28,224,0,28,224,0,28,224,0,28,240,0,60,112, + 0,56,112,0,56,120,0,120,56,0,112,60,0,240,31,3, + 224,15,255,192,7,255,128,0,252,0,18,19,57,34,8,1, + 64,0,128,224,1,192,112,3,128,56,7,0,24,6,0,12, + 12,0,6,24,0,3,48,0,1,224,0,0,192,0,1,224, + 0,3,48,0,6,24,0,12,12,0,24,6,0,48,3,0, + 96,1,128,224,1,192,64,0,128,22,31,93,26,2,253,0, + 0,24,0,0,60,0,0,56,3,255,120,15,255,240,31,255, + 240,62,1,240,56,1,240,120,3,248,112,7,184,240,15,60, + 240,15,60,224,30,28,224,60,28,224,60,28,224,120,28,224, + 240,28,224,224,28,241,224,60,115,192,56,115,128,56,127,128, + 120,63,0,112,62,0,240,31,3,224,63,255,192,63,255,128, + 121,252,0,240,0,0,224,0,0,32,0,0,19,36,108,25, + 3,0,7,0,0,3,128,0,3,128,0,1,192,0,0,224, + 0,0,96,0,0,48,0,0,0,0,0,0,0,0,0,0, + 0,0,0,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,240,0,224,240,1,224,112,1,192,120, + 3,192,62,7,192,63,255,128,31,255,0,3,248,0,19,36, + 108,25,3,0,0,28,0,0,60,0,0,56,0,0,112,0, + 0,96,0,0,192,0,1,192,0,0,0,0,0,0,0,0, + 0,0,0,0,0,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,240,0,224,240,1,224,112,1, + 192,120,3,192,62,7,192,63,255,128,31,255,0,3,248,0, + 19,36,108,25,3,0,0,224,0,1,240,0,1,240,0,3, + 184,0,3,28,0,6,12,0,6,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,240,0,224,240,1,224, + 112,1,192,120,3,192,62,7,192,63,255,128,31,255,0,3, + 248,0,19,33,99,25,3,0,7,14,0,7,14,0,7,14, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,240,0,224,240,1,224,112,1,192,120,3,192,62, + 7,192,63,255,128,31,255,0,3,248,0,21,35,105,23,1, + 0,0,14,0,0,30,0,0,28,0,0,56,0,0,48,0, + 0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 0,120,120,0,112,120,0,240,60,1,224,30,1,224,30,3, + 192,15,3,128,15,7,128,7,135,0,3,143,0,3,206,0, + 1,252,0,1,252,0,0,248,0,0,120,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,16,25,50,21,3,0, + 224,0,224,0,224,0,224,0,255,224,255,252,255,254,224,62, + 224,15,224,7,224,7,224,7,224,7,224,7,224,15,224,62, + 255,254,255,252,255,224,224,0,224,0,224,0,224,0,224,0, + 224,0,17,25,75,19,2,0,7,224,0,31,248,0,126,124, + 0,112,60,0,240,28,0,224,28,0,224,28,0,224,56,0, + 224,248,0,225,224,0,225,192,0,225,192,0,225,224,0,225, + 240,0,224,252,0,224,63,0,224,15,0,224,7,128,224,3, + 128,224,3,128,231,3,128,227,131,128,227,231,128,225,255,0, + 224,124,0,15,27,54,19,2,0,14,0,7,0,3,128,3, + 128,1,192,0,192,0,0,0,0,0,0,15,240,63,252,60, + 60,120,30,112,14,0,14,0,14,15,254,63,254,124,14,112, + 14,224,14,224,30,224,30,240,62,120,238,63,238,15,142,15, + 28,56,19,2,0,0,112,0,224,0,224,1,192,3,128,3, + 0,6,0,0,0,0,0,0,0,15,240,63,252,60,60,120, + 30,112,14,0,14,0,14,15,254,63,254,124,14,112,14,224, + 14,224,30,224,30,240,62,120,238,63,238,15,142,15,28,56, + 19,2,0,3,192,7,192,7,224,14,224,12,112,28,48,24, + 24,0,0,0,0,0,0,15,240,63,252,60,60,120,30,112, + 14,0,14,0,14,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,15,25,50,19,2, + 0,15,152,31,240,25,224,0,0,0,0,0,0,0,0,15, + 240,63,252,60,60,120,30,112,14,0,14,0,14,15,254,63, + 254,124,14,112,14,224,14,224,30,224,30,240,62,120,238,63, + 238,15,142,15,25,50,19,2,0,28,56,28,56,28,56,0, + 0,0,0,0,0,0,0,15,240,63,252,60,60,120,30,112, + 14,0,14,0,14,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,15,29,58,19,2, + 0,3,128,12,64,8,32,8,32,8,32,12,64,7,192,0, + 0,0,0,0,0,0,0,15,240,63,252,60,124,120,30,112, + 30,0,30,0,30,15,254,63,254,124,14,112,14,224,14,224, + 30,224,30,240,62,120,238,63,238,15,142,27,18,72,31,2, + 0,15,224,126,0,63,241,255,0,124,121,199,128,112,31,129, + 192,112,15,1,192,0,15,0,224,0,14,0,224,15,255,255, + 224,63,255,255,224,124,14,0,0,240,14,0,0,224,14,0, + 0,224,31,0,224,224,27,1,192,240,59,131,192,124,241,239, + 128,63,225,255,128,31,192,126,0,14,26,52,18,2,248,15, + 224,63,248,60,120,112,60,112,28,240,28,224,0,224,0,224, + 0,224,0,224,0,224,0,240,28,112,28,112,60,60,120,31, + 240,7,224,1,0,1,224,1,240,0,120,0,24,0,24,7, + 240,7,224,16,28,56,19,2,0,28,0,14,0,14,0,7, + 0,3,128,1,128,0,192,0,0,0,0,0,0,7,224,31, + 248,60,124,120,30,112,14,240,14,224,14,255,254,255,255,224, + 0,224,0,224,0,112,14,112,14,120,30,62,124,31,248,7, + 224,16,28,56,19,2,0,0,120,0,240,0,224,1,192,1, + 128,3,128,3,0,0,0,0,0,0,0,7,224,31,248,60, + 124,120,30,112,14,240,14,224,14,255,254,255,255,224,0,224, + 0,224,0,112,14,112,14,120,30,62,124,31,248,7,224,16, + 28,56,19,2,0,3,192,7,192,7,224,14,224,12,112,24, + 48,24,24,0,0,0,0,0,0,7,224,31,248,60,124,120, + 30,112,14,240,14,224,14,255,254,255,255,224,0,224,0,224, + 0,112,14,112,14,120,30,62,124,31,248,7,224,16,25,50, + 19,2,0,28,56,28,56,28,56,0,0,0,0,0,0,0, + 0,7,224,31,248,60,60,120,14,112,14,240,14,224,6,255, + 254,255,255,224,0,224,0,224,0,112,14,112,14,120,30,62, + 60,31,248,7,224,6,27,27,8,255,0,240,112,56,24,28, + 12,0,0,0,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,6,27,27,8,2,0,28,56,112,112, + 224,192,0,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,9,27,54,8,255,0,62,0,62, + 0,119,0,115,0,227,128,193,128,0,0,0,0,0,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,10,25,50,8,255,0,227,192,227,192,227,192,0, + 0,0,0,0,0,0,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,17,26,78,21,2, + 0,16,4,0,56,28,0,30,248,0,7,192,0,15,192,0, + 60,240,0,112,120,0,0,60,0,7,252,0,31,254,0,62, + 63,0,120,15,0,112,7,0,240,7,128,240,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,240,7,0, + 112,7,0,120,15,0,62,62,0,31,252,0,7,240,0,15, + 25,50,19,2,0,15,48,31,240,27,224,0,0,0,0,0, + 0,0,0,227,240,239,248,252,124,248,30,240,30,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,17,28,84,21,2,0,14,0,0, + 15,0,0,7,0,0,3,128,0,1,128,0,0,192,0,0, + 224,0,0,0,0,0,0,0,0,0,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,17,28,84,21,2,0,0,56,0,0,120,0,0,112,0, + 0,224,0,0,192,0,1,128,0,3,0,0,0,0,0,0, + 0,0,0,0,0,7,240,0,31,252,0,62,62,0,120,15, + 0,112,7,0,240,7,0,240,7,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,7,128,240,7,128,112,7,0,120, + 15,0,62,62,0,31,252,0,7,240,0,17,28,84,21,2, + 0,1,192,0,3,224,0,3,224,0,7,112,0,14,56,0, + 12,24,0,28,28,0,0,0,0,0,0,0,0,0,0,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 0,240,7,128,224,3,128,224,3,128,224,3,128,224,3,128, + 240,7,128,240,7,128,112,7,0,120,15,0,62,62,0,31, + 252,0,7,240,0,17,25,75,21,2,0,7,152,0,15,248, + 0,12,240,0,0,0,0,0,0,0,0,0,0,0,0,0, + 7,240,0,31,252,0,62,62,0,120,15,0,112,7,0,240, + 7,0,240,7,128,224,3,128,224,3,128,224,3,128,224,3, + 128,240,7,128,240,7,128,112,7,0,120,15,0,62,62,0, + 31,252,0,7,240,0,17,25,75,21,2,0,28,56,0,28, + 56,0,28,56,0,0,0,0,0,0,0,0,0,0,0,0, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,240,7,128,240,7,128,112,7,0,120,15,0,62,62, + 0,31,252,0,7,240,0,20,15,45,34,7,3,0,96,0, + 0,240,0,0,240,0,0,96,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,0,0,0,0,0,0,0,96, + 0,0,240,0,0,240,0,0,96,0,17,23,69,21,2,254, + 0,1,0,0,1,128,0,3,128,7,247,0,31,254,0,62, + 62,0,120,31,0,112,63,0,240,55,128,240,119,128,224,227, + 128,225,195,128,225,131,128,227,131,128,231,7,128,254,7,128, + 124,7,0,124,15,0,62,62,0,127,252,0,103,240,0,224, + 0,0,192,0,0,15,28,56,19,2,0,28,0,30,0,14, + 0,7,0,3,0,1,128,1,128,0,0,0,0,0,0,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,240,30,124,126,63, + 238,31,142,15,28,56,19,2,0,0,112,0,240,0,224,1, + 192,1,128,3,0,7,0,0,0,0,0,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,30,124,126,63,238,31, + 142,15,28,56,19,2,0,3,128,7,192,7,192,14,224,12, + 96,24,48,24,48,0,0,0,0,0,0,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,240,30,240,30,124,126,63,238,31,142,15, + 25,50,19,2,0,56,112,56,112,56,112,0,0,0,0,0, + 0,0,0,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,240,30,240, + 62,124,126,63,238,31,142,16,34,68,18,1,249,0,56,0, + 112,0,96,0,224,1,192,1,128,0,0,0,0,0,0,224, + 7,240,7,112,15,112,14,120,14,56,30,60,28,28,28,28, + 60,30,56,14,120,15,112,7,112,7,240,7,224,3,224,3, + 224,1,192,1,192,3,128,3,128,231,128,255,0,127,0,62, + 0,16,32,64,20,2,249,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,227,240,231,248,254,60,248,30,240,14,240, + 15,224,7,224,7,224,7,224,7,224,7,224,7,240,15,240, + 14,248,30,254,124,239,248,227,240,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,16,32,64,18,1,249,28,56,28, + 56,28,56,0,0,0,0,0,0,0,0,224,7,224,7,240, + 15,112,14,120,14,56,30,60,28,60,28,28,56,30,56,14, + 120,15,112,15,112,7,240,7,224,3,224,3,192,3,192,3, + 192,3,128,3,128,7,128,7,0,7,0,15,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=20 h=28 x= 7 y=12 dx=34 dy= 0 ascent=26 len=75 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25n[774] U8G_SECTION(".progmem.u8g_font_fur25n") = { + 0,46,45,254,247,25,0,0,0,0,42,57,0,26,252,25, + 0,14,13,26,22,4,12,24,96,28,224,28,224,12,192,7, + 128,243,60,255,252,231,156,7,128,12,192,28,224,60,224,24, + 96,20,21,63,34,7,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,255,255,240,255,255,240,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,6,9,9,9,2,252,60,120,120,112, + 112,224,224,224,192,8,3,3,10,1,7,255,255,255,3,4, + 4,9,3,0,224,224,224,224,10,28,56,13,2,254,0,192, + 1,192,1,128,1,128,3,128,3,0,3,0,3,0,7,0, + 6,0,6,0,14,0,12,0,12,0,28,0,28,0,24,0, + 24,0,56,0,48,0,48,0,112,0,112,0,96,0,96,0, + 224,0,192,0,192,0,15,25,50,19,2,1,15,224,63,248, + 62,248,120,60,112,28,112,30,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,240,14, + 112,30,112,28,120,28,60,60,63,248,31,240,7,192,8,25, + 25,19,5,0,15,31,63,127,255,231,135,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,15,25,50, + 19,2,1,15,240,63,248,62,252,120,28,120,30,112,14,240, + 14,0,14,0,30,0,28,0,60,0,120,0,120,0,240,1, + 224,3,192,7,128,15,0,31,0,62,0,60,0,120,0,240, + 0,255,254,255,254,16,25,50,19,2,1,15,240,63,248,60, + 28,120,14,112,14,112,14,0,14,0,14,0,28,0,120,3, + 240,3,240,0,248,0,30,0,14,0,15,0,7,0,7,240, + 7,240,7,240,14,120,30,60,124,31,248,7,224,17,25,75, + 19,1,0,0,60,0,0,124,0,0,124,0,0,252,0,1, + 220,0,1,220,0,3,156,0,7,28,0,7,28,0,14,28, + 0,28,28,0,60,28,0,56,28,0,112,28,0,240,28,0, + 224,28,0,255,255,128,255,255,128,255,255,128,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,15,25, + 50,19,2,0,127,252,127,252,127,252,112,0,112,0,112,0, + 112,0,112,0,115,240,127,248,124,60,120,28,112,30,96,14, + 0,14,0,14,0,14,0,14,0,14,224,30,240,28,112,60, + 124,120,63,240,15,192,16,25,50,19,1,1,15,240,31,252, + 60,28,120,30,112,14,240,14,224,0,224,0,224,0,227,240, + 231,252,239,252,252,30,248,14,240,15,240,7,240,7,240,7, + 240,7,112,7,120,14,56,14,62,60,15,248,7,224,15,25, + 50,19,2,0,255,254,255,254,0,14,0,30,0,28,0,28, + 0,60,0,56,0,56,0,120,0,112,0,240,0,240,0,224, + 1,224,1,224,1,192,3,192,3,128,7,128,7,128,7,0, + 15,0,15,0,14,0,16,25,50,19,1,1,15,240,63,252, + 60,60,120,30,112,14,112,14,112,14,112,14,56,28,60,60, + 15,240,15,240,62,56,56,28,112,14,224,7,224,7,224,7, + 224,7,224,7,240,15,120,14,60,60,31,248,7,224,16,25, + 50,19,2,1,31,248,63,252,120,30,112,14,240,15,224,15, + 224,15,224,15,224,15,240,15,112,31,120,63,63,247,15,231, + 0,7,0,7,0,7,0,14,112,14,112,14,112,30,112,60, + 60,120,31,240,15,224}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--34-340-72-72-P-161-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 25, '1' Height: 25 + Calculated Max Values w=31 h=37 x= 8 y=21 dx=34 dy= 0 ascent=28 len=120 + Font Bounding box w=46 h=45 x=-2 y=-9 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur25r[5389] U8G_SECTION(".progmem.u8g_font_fur25r") = { + 0,46,45,254,247,25,6,119,15,27,32,127,249,28,247,25, + 249,0,0,0,10,0,0,3,25,25,12,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 0,0,0,224,224,224,11,10,20,15,2,15,241,224,112,224, + 112,224,112,224,112,224,112,224,112,224,96,192,96,192,96,192, + 22,25,75,25,2,0,0,112,224,0,112,224,0,96,192,0, + 225,192,0,225,192,0,193,128,0,193,128,63,255,252,63,255, + 248,1,131,0,3,135,0,3,134,0,3,6,0,7,14,0, + 255,255,224,255,255,224,14,28,0,14,28,0,12,24,0,12, + 24,0,28,56,0,28,56,0,24,48,0,56,112,0,56,112, + 0,16,32,64,18,1,252,1,128,1,128,1,128,15,240,31, + 248,63,252,121,158,113,142,113,142,113,142,113,128,113,128,121, + 128,63,128,31,240,15,252,1,254,1,159,1,143,1,135,225, + 135,225,135,225,135,241,135,121,143,127,254,63,252,15,240,1, + 128,1,128,1,128,1,128,28,27,108,32,2,0,0,0,14, + 0,0,0,12,0,31,128,24,0,63,192,24,0,121,224,48, + 0,240,240,48,0,224,112,96,0,224,112,224,0,224,112,192, + 0,224,113,192,0,240,113,128,0,112,227,128,0,63,227,0, + 0,31,134,31,128,0,6,63,192,0,12,121,224,0,12,240, + 240,0,24,224,112,0,56,224,112,0,48,224,112,0,112,224, + 112,0,96,224,112,0,224,224,112,0,192,240,240,1,128,121, + 224,1,128,63,192,3,0,31,128,23,25,75,26,2,1,7, + 248,0,15,252,0,30,30,0,28,14,0,28,14,0,28,14, + 0,30,28,0,30,60,0,15,248,0,7,224,0,15,192,112, + 31,224,112,61,224,112,120,240,112,240,120,112,224,60,112,224, + 30,224,224,15,224,224,7,224,240,3,192,120,3,224,124,15, + 240,63,255,120,31,252,124,7,240,62,4,10,10,13,4,15, + 240,112,112,112,112,112,112,96,96,96,6,30,30,12,3,251, + 12,24,24,56,56,112,112,112,112,240,224,224,224,224,224,224, + 224,224,224,224,240,112,112,112,112,56,56,24,24,12,6,30, + 30,12,3,251,224,96,112,112,48,56,56,56,56,28,28,28, + 28,28,28,28,28,28,28,28,28,60,56,56,56,48,112,112, + 96,224,14,13,26,22,4,12,24,96,28,224,28,224,12,192, + 7,128,243,60,255,252,231,156,7,128,12,192,28,224,60,224, + 24,96,20,21,63,34,7,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,255,255,240,255,255,240,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,6,9,9,9,2,252,60,120,120, + 112,112,224,224,224,192,8,3,3,10,1,7,255,255,255,3, + 4,4,9,3,0,224,224,224,224,10,28,56,13,2,254,0, + 192,1,192,1,128,1,128,3,128,3,0,3,0,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,28,0,24, + 0,24,0,56,0,48,0,48,0,112,0,112,0,96,0,96, + 0,224,0,192,0,192,0,15,25,50,19,2,1,15,224,63, + 248,62,248,120,60,112,28,112,30,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 14,112,30,112,28,120,28,60,60,63,248,31,240,7,192,8, + 25,25,19,5,0,15,31,63,127,255,231,135,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,25, + 50,19,2,1,15,240,63,248,62,252,120,28,120,30,112,14, + 240,14,0,14,0,30,0,28,0,60,0,120,0,120,0,240, + 1,224,3,192,7,128,15,0,31,0,62,0,60,0,120,0, + 240,0,255,254,255,254,16,25,50,19,2,1,15,240,63,248, + 60,28,120,14,112,14,112,14,0,14,0,14,0,28,0,120, + 3,240,3,240,0,248,0,30,0,14,0,15,0,7,0,7, + 240,7,240,7,240,14,120,30,60,124,31,248,7,224,17,25, + 75,19,1,0,0,60,0,0,124,0,0,124,0,0,252,0, + 1,220,0,1,220,0,3,156,0,7,28,0,7,28,0,14, + 28,0,28,28,0,60,28,0,56,28,0,112,28,0,240,28, + 0,224,28,0,255,255,128,255,255,128,255,255,128,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,15, + 25,50,19,2,0,127,252,127,252,127,252,112,0,112,0,112, + 0,112,0,112,0,115,240,127,248,124,60,120,28,112,30,96, + 14,0,14,0,14,0,14,0,14,0,14,224,30,240,28,112, + 60,124,120,63,240,15,192,16,25,50,19,1,1,15,240,31, + 252,60,28,120,30,112,14,240,14,224,0,224,0,224,0,227, + 240,231,252,239,252,252,30,248,14,240,15,240,7,240,7,240, + 7,240,7,112,7,120,14,56,14,62,60,15,248,7,224,15, + 25,50,19,2,0,255,254,255,254,0,14,0,30,0,28,0, + 28,0,60,0,56,0,56,0,120,0,112,0,240,0,240,0, + 224,1,224,1,224,1,192,3,192,3,128,7,128,7,128,7, + 0,15,0,15,0,14,0,16,25,50,19,1,1,15,240,63, + 252,60,60,120,30,112,14,112,14,112,14,112,14,56,28,60, + 60,15,240,15,240,62,56,56,28,112,14,224,7,224,7,224, + 7,224,7,224,7,240,15,120,14,60,60,31,248,7,224,16, + 25,50,19,2,1,31,248,63,252,120,30,112,14,240,15,224, + 15,224,15,224,15,224,15,240,15,112,31,120,63,63,247,15, + 231,0,7,0,7,0,7,0,14,112,14,112,14,112,30,112, + 60,60,120,31,240,15,224,3,18,18,9,3,0,224,224,224, + 224,0,0,0,0,0,0,0,0,0,0,224,224,224,224,6, + 22,22,9,1,252,56,56,56,56,0,0,0,0,0,0,0, + 0,0,60,56,56,56,112,112,112,96,224,21,19,57,34,7, + 1,0,0,8,0,0,56,0,1,240,0,15,192,0,62,0, + 1,248,0,7,192,0,62,0,0,248,0,0,192,0,0,248, + 0,0,62,0,0,7,192,0,1,248,0,0,62,0,0,7, + 192,0,1,248,0,0,56,0,0,8,20,8,24,34,7,6, + 255,255,240,255,255,240,0,0,0,0,0,0,0,0,0,0, + 0,0,255,255,240,255,255,240,21,17,51,34,7,2,224,0, + 0,252,0,0,31,0,0,7,224,0,0,248,0,0,31,0, + 0,7,192,0,0,248,0,0,56,0,0,248,0,7,192,0, + 63,0,0,248,0,7,224,0,31,0,0,248,0,0,224,0, + 0,15,25,50,18,1,1,31,224,63,248,125,252,240,30,96, + 14,0,14,0,14,0,30,0,28,0,60,0,120,0,240,1, + 192,3,128,7,128,7,0,7,0,7,0,7,0,0,0,0, + 0,0,0,7,0,7,0,7,0,30,30,120,34,2,251,0, + 31,240,0,0,255,254,0,3,255,255,0,7,224,31,192,15, + 128,3,224,30,0,0,240,60,0,0,112,56,31,56,120,112, + 63,184,56,112,125,248,56,240,112,120,60,224,240,120,28,224, + 224,56,28,224,224,56,28,224,224,56,28,224,224,56,28,224, + 224,56,28,224,224,56,56,240,224,120,56,112,112,120,120,112, + 120,254,240,120,63,223,224,56,31,15,192,60,0,0,0,30, + 0,0,0,15,128,0,0,7,224,0,0,3,255,248,0,0, + 255,248,0,0,31,240,0,24,25,75,26,1,0,0,60,0, + 0,124,0,0,126,0,0,254,0,0,238,0,0,239,0,1, + 231,0,1,199,128,3,195,128,3,131,192,7,131,192,7,1, + 192,7,1,224,15,0,224,14,0,240,31,255,240,31,255,240, + 31,255,248,60,0,56,56,0,60,120,0,28,112,0,30,112, + 0,30,240,0,14,224,0,15,18,25,75,23,3,0,255,248, + 0,255,254,0,255,255,0,224,15,128,224,7,128,224,3,128, + 224,3,128,224,3,128,224,7,128,224,15,0,255,254,0,255, + 252,0,255,254,0,224,15,0,224,3,128,224,3,192,224,1, + 192,224,1,192,224,1,192,224,3,192,224,7,192,224,15,128, + 255,255,0,255,254,0,255,248,0,19,25,75,23,2,1,3, + 254,0,15,255,128,30,3,192,60,1,192,56,0,224,112,0, + 224,112,0,0,112,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,112,0,0,112,0,224,112,0,224,56,1,224,60,1, + 192,31,7,128,15,255,0,1,252,0,20,25,75,25,3,0, + 255,240,0,255,254,0,255,255,0,224,31,128,224,7,192,224, + 3,192,224,1,224,224,0,224,224,0,240,224,0,240,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,240, + 224,0,240,224,0,224,224,1,224,224,3,192,224,7,192,224, + 31,128,255,255,0,255,252,0,255,240,0,16,25,50,21,3, + 0,255,254,255,254,255,254,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,255,255, + 255,255,255,15,25,50,20,3,0,255,254,255,254,255,254,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 252,255,252,255,252,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,21,25,75,26,2, + 1,1,255,128,7,255,192,15,255,224,30,0,240,60,0,120, + 120,0,56,112,0,0,112,0,0,240,0,0,224,0,0,224, + 0,0,224,15,248,224,15,248,224,15,248,224,0,56,240,0, + 56,112,0,56,112,0,56,120,0,56,60,0,56,62,0,56, + 31,0,248,15,255,248,7,255,240,0,255,128,18,25,75,24, + 3,0,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,255,255,192,255,255,192,255,255,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,3,25,25, + 9,3,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,14,25,50,19, + 2,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,224,28,224,28,240,60,120,120,127,240, + 63,224,15,192,18,25,75,23,3,0,224,7,128,224,15,0, + 224,30,0,224,60,0,224,120,0,224,240,0,225,224,0,227, + 192,0,231,128,0,239,0,0,254,0,0,255,0,0,239,128, + 0,231,128,0,231,192,0,227,224,0,225,240,0,224,248,0, + 224,120,0,224,60,0,224,62,0,224,31,0,224,15,128,224, + 7,192,224,3,192,15,25,50,19,3,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,255,254,255,254,255,254,25,25,100, + 31,3,0,248,0,15,128,252,0,31,128,252,0,31,128,252, + 0,31,128,238,0,59,128,238,0,59,128,239,0,123,128,231, + 0,115,128,231,0,115,128,231,128,243,128,227,128,227,128,227, + 128,227,128,225,193,195,128,225,193,195,128,225,193,195,128,224, + 227,131,128,224,227,131,128,224,247,131,128,224,119,3,128,224, + 119,3,128,224,127,3,128,224,62,3,128,224,62,3,128,224, + 28,3,128,224,28,3,128,19,25,75,25,3,0,248,0,224, + 248,0,224,252,0,224,254,0,224,254,0,224,239,0,224,239, + 0,224,231,128,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,120,224,224,60,224, + 224,60,224,224,30,224,224,30,224,224,15,224,224,15,224,224, + 7,224,224,3,224,224,3,224,22,25,75,26,2,1,3,255, + 0,15,255,192,31,255,224,62,1,240,56,0,112,120,0,120, + 112,0,56,240,0,56,240,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,112,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,31,3,224, + 15,255,192,7,255,128,0,252,0,16,25,50,21,3,0,255, + 224,255,252,255,254,224,30,224,15,224,7,224,7,224,7,224, + 7,224,15,224,30,255,254,255,252,255,224,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,24,25,75,27,2,1,3,255,0,15,255,192,31,255,224, + 62,1,240,56,0,112,120,0,120,112,0,56,240,0,56,240, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,240,0,60,112,0,56,112,0,56,120,0,120, + 56,0,112,60,0,240,31,3,224,15,255,255,7,255,255,0, + 255,255,17,25,75,21,3,0,255,240,0,255,252,0,255,254, + 0,224,31,0,224,15,0,224,7,0,224,7,0,224,7,0, + 224,15,0,224,30,0,255,252,0,255,240,0,255,252,0,224, + 60,0,224,30,0,224,14,0,224,14,0,224,14,0,224,15, + 0,224,7,0,224,7,0,224,7,0,224,7,0,224,7,0, + 224,7,128,18,25,75,22,2,1,7,252,0,31,254,0,63, + 255,0,120,7,128,112,3,128,112,3,128,112,0,0,112,0, + 0,120,0,0,124,0,0,63,192,0,31,252,0,7,255,0, + 0,63,128,0,7,128,0,3,192,0,1,192,224,1,192,224, + 1,192,240,1,192,112,3,192,124,15,128,63,255,0,31,254, + 0,7,240,0,19,25,75,21,1,0,255,255,224,255,255,224, + 255,255,224,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,19,25,75,25,3,0,224,0,224,224,0, + 224,224,0,224,224,0,224,224,0,224,224,0,224,224,0,224, + 224,0,224,224,0,224,224,0,224,224,0,224,224,0,224,224, + 0,224,224,0,224,224,0,224,224,0,224,224,0,224,240,0, + 224,240,1,224,112,1,192,120,3,192,62,7,192,63,255,128, + 31,255,0,3,248,0,21,25,75,22,1,0,240,0,120,240, + 0,240,240,0,240,120,0,240,120,1,224,120,1,224,60,1, + 192,60,3,192,60,3,192,28,3,128,30,7,128,14,7,128, + 14,7,0,15,15,0,7,15,0,7,14,0,7,158,0,3, + 158,0,3,156,0,3,252,0,1,252,0,1,248,0,1,248, + 0,0,248,0,0,240,0,31,25,100,33,1,0,224,7,192, + 14,240,7,192,14,240,7,192,30,112,7,192,30,112,14,224, + 28,120,14,224,60,120,14,224,60,56,14,240,56,56,28,112, + 56,60,28,112,120,28,28,112,120,28,60,56,112,28,56,56, + 112,30,56,56,240,14,56,56,224,14,112,28,224,14,112,28, + 224,7,112,29,192,7,112,29,192,7,224,15,192,7,224,15, + 192,3,224,15,128,3,224,7,128,3,192,7,128,1,192,7, + 0,22,25,75,24,1,0,124,0,120,60,0,240,30,1,224, + 31,1,224,15,3,192,7,135,128,7,135,128,3,207,0,1, + 238,0,1,254,0,0,252,0,0,120,0,0,252,0,0,252, + 0,1,222,0,3,207,0,3,143,0,7,135,128,15,3,192, + 14,3,192,30,1,224,60,1,240,56,0,240,120,0,120,240, + 0,124,21,25,75,23,1,0,240,0,120,120,0,112,120,0, + 240,60,1,224,30,1,224,30,3,192,15,3,128,15,7,128, + 7,135,0,3,143,0,3,206,0,1,252,0,1,252,0,0, + 248,0,0,120,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,18,25,75,22,2,0,127,255,192,127,255,192,127, + 255,192,0,3,192,0,7,128,0,15,128,0,31,0,0,30, + 0,0,60,0,0,124,0,0,248,0,0,240,0,1,224,0, + 3,224,0,7,192,0,15,128,0,15,0,0,31,0,0,62, + 0,0,124,0,0,120,0,0,240,0,0,255,255,192,255,255, + 192,255,255,192,7,32,32,14,4,249,254,254,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,254,254,10,28,56,13,2,254, + 192,0,192,0,224,0,224,0,96,0,96,0,112,0,48,0, + 48,0,56,0,56,0,24,0,24,0,28,0,12,0,12,0, + 14,0,6,0,6,0,6,0,7,0,3,0,3,0,3,128, + 1,128,1,128,1,128,1,192,6,32,32,14,4,249,252,252, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,252,252,18,21, + 63,34,8,0,0,192,0,1,224,0,1,224,0,1,224,0, + 3,48,0,3,48,0,2,16,0,6,24,0,6,24,0,12, + 12,0,12,12,0,12,12,0,24,6,0,24,6,0,24,6, + 0,48,3,0,48,3,0,112,1,128,96,1,128,96,1,128, + 192,0,192,17,2,6,17,0,251,255,255,128,255,255,128,6, + 6,6,8,0,21,224,224,112,56,24,12,15,18,36,19,2, + 0,15,240,63,252,60,60,120,30,112,14,0,14,0,14,15, + 254,63,254,124,14,112,14,224,14,224,30,224,30,240,62,120, + 238,63,238,15,142,16,25,50,20,2,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,227,240,239,248,238,124,248, + 30,240,14,240,15,224,7,224,7,224,7,224,7,224,7,224, + 15,240,14,240,14,248,28,254,124,239,248,227,224,14,18,36, + 18,2,0,15,224,63,240,124,120,112,60,112,28,240,28,224, + 0,224,0,224,0,224,0,224,0,224,0,240,28,112,28,112, + 60,60,120,31,240,15,224,16,25,50,20,2,0,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,15,199,31,247,60, + 127,120,31,112,31,112,15,224,15,224,7,224,7,224,7,224, + 7,224,7,112,15,112,15,56,31,62,63,15,247,7,199,16, + 18,36,19,2,0,7,224,31,248,60,124,120,30,112,14,240, + 14,224,14,255,254,255,255,224,0,224,0,224,0,112,14,112, + 14,120,30,62,124,31,248,7,224,11,25,50,12,1,0,7, + 224,15,224,31,32,28,0,28,0,28,0,28,0,255,224,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,16,25,50,20,2,249,7,231,31,247,62,127,120,31,112, + 15,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,112,15,120,31,62,127,31,247,15,199,0,7,0,15,112, + 14,120,30,60,60,31,248,7,224,15,25,50,19,2,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,227,240,239, + 248,252,124,248,28,240,30,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,3,25,25,7,2,0,224,224,224,0,0,0,0,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 5,32,32,9,2,249,56,56,56,0,0,0,0,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,240,224,14,25,50,17,2,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,120,224,240,225,224, + 225,192,227,192,231,128,239,0,254,0,254,0,239,0,231,128, + 231,128,227,192,225,224,225,224,224,240,224,120,224,60,3,25, + 25,8,2,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,26,18,72, + 30,2,0,227,224,124,0,239,241,255,0,252,123,143,128,248, + 63,3,128,240,30,3,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,224,28,1,192,224, + 28,1,192,224,28,1,192,224,28,1,192,15,18,36,19,2, + 0,227,240,239,248,252,124,248,30,240,30,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,17,18,54,21,2,0,7,240,0,31,252, + 0,62,62,0,120,15,0,112,7,0,240,7,0,240,7,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,240, + 7,128,112,7,0,120,15,0,62,62,0,31,252,0,7,240, + 0,16,25,50,20,2,249,227,240,231,248,254,60,248,30,240, + 14,240,15,224,7,224,7,224,7,224,7,224,7,224,7,240, + 15,240,14,248,30,254,124,239,248,227,240,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,16,25,50,21,2,249,7, + 199,31,247,62,63,120,31,112,15,240,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,15,112,15,120,31,62,127,31, + 247,7,199,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,10,18,36,12,2,0,231,192,239,192,254,0,248,0,240, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,14,18,36,18,2, + 0,31,192,127,240,120,248,240,56,224,56,224,0,240,0,126, + 0,63,224,15,248,0,252,0,60,0,28,224,28,240,60,120, + 248,63,240,31,192,10,22,44,12,1,1,28,0,28,0,28, + 0,28,0,255,192,255,192,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,30,0,15,192,7,192,15,18,36,19,2,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,240,30,240,62,124,126,63,238,31, + 142,16,18,36,18,1,0,224,7,240,7,240,15,112,14,120, + 14,56,30,56,28,60,28,28,56,30,56,14,56,14,112,15, + 112,7,224,7,224,3,224,3,192,3,192,26,18,72,28,1, + 0,224,30,1,192,224,62,3,192,224,63,3,128,112,63,3, + 128,112,119,3,128,112,115,7,0,56,115,135,0,56,115,135, + 0,56,227,142,0,24,225,206,0,28,225,206,0,29,193,206, + 0,29,192,220,0,15,192,252,0,15,128,252,0,15,128,120, + 0,7,128,120,0,7,128,120,0,17,18,54,19,1,0,112, + 7,0,120,14,0,60,30,0,30,28,0,30,56,0,15,112, + 0,7,240,0,3,224,0,3,192,0,3,224,0,7,224,0, + 15,240,0,14,120,0,28,60,0,60,28,0,120,30,0,112, + 15,0,240,7,128,16,25,50,18,1,249,224,7,240,7,112, + 15,112,14,120,14,56,30,60,28,28,28,28,60,30,56,14, + 56,15,112,7,112,7,240,7,224,3,224,3,224,1,192,1, + 192,3,128,3,128,7,128,7,0,7,0,15,0,13,18,36, + 17,2,0,127,248,127,248,0,120,0,112,0,240,1,224,3, + 192,3,192,7,128,15,0,31,0,30,0,60,0,120,0,120, + 0,240,0,255,248,255,248,11,35,70,17,3,248,1,224,3, + 224,7,128,15,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,30,0,28,0,60,0,248,0,240, + 0,248,0,60,0,28,0,30,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,7,0,7,128,3, + 224,1,224,2,37,37,12,5,247,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,11,35, + 70,17,3,248,240,0,248,0,60,0,28,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,15,0, + 7,0,7,128,3,224,1,224,3,224,7,128,7,0,15,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,28,0,60,0,248,0,240,0,18,4,12,18,0,7, + 31,1,192,63,231,128,121,255,0,224,62,0,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=37 h=43 x=10 y=26 dx=40 dy= 0 ascent=43 len=185 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =43 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30[16505] U8G_SECTION(".progmem.u8g_font_fur30") = { + 0,54,54,253,245,30,9,94,20,223,32,255,249,43,245,31, + 248,0,0,0,12,0,0,4,30,30,14,5,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,0,0,0,240,240,240,240,12,12,24,18,3, + 18,240,240,240,240,240,240,240,240,240,240,240,240,240,112,224, + 112,224,112,96,112,96,112,96,96,26,30,120,30,2,0,0, + 28,14,0,0,28,28,0,0,28,28,0,0,28,28,0,0, + 56,24,0,0,56,56,0,0,56,56,0,0,112,56,0,0, + 112,112,0,31,255,255,192,31,255,255,128,31,255,255,128,0, + 224,224,0,0,224,224,0,1,192,224,0,1,193,192,0,1, + 193,192,0,127,255,254,0,255,255,254,0,255,255,254,0,3, + 3,128,0,7,7,0,0,7,7,0,0,7,7,0,0,14, + 7,0,0,14,14,0,0,14,14,0,0,14,14,0,0,28, + 28,0,0,28,28,0,0,20,37,111,22,1,252,0,96,0, + 0,96,0,0,96,0,3,252,0,15,254,0,63,255,0,63, + 255,128,124,103,128,120,99,192,240,99,192,240,99,192,240,96, + 0,240,96,0,240,96,0,120,96,0,127,96,0,63,240,0, + 31,254,0,15,255,128,1,255,192,0,111,224,0,97,224,0, + 96,240,0,96,240,0,96,240,240,96,240,240,96,240,240,96, + 240,120,96,240,124,97,224,63,255,192,31,255,128,15,255,0, + 0,96,0,0,96,0,0,96,0,0,96,0,33,31,155,37, + 2,0,0,0,0,224,0,15,192,0,192,0,31,240,1,192, + 0,63,248,1,128,0,120,60,3,0,0,240,60,7,0,0, + 240,30,6,0,0,240,30,14,0,0,240,30,12,0,0,240, + 30,28,0,0,240,30,24,0,0,240,28,56,0,0,112,60, + 48,0,0,120,124,112,0,0,63,248,224,0,0,31,240,192, + 96,0,3,129,195,252,0,0,1,135,254,0,0,3,143,15, + 0,0,3,14,7,0,0,7,30,7,128,0,6,30,7,128, + 0,14,30,7,128,0,28,30,7,128,0,28,30,7,128,0, + 56,30,7,128,0,56,30,7,128,0,112,15,15,0,0,96, + 15,254,0,0,224,7,252,0,0,192,1,248,0,27,30,120, + 30,2,1,3,254,0,0,7,255,0,0,15,143,128,0,15, + 3,192,0,30,3,192,0,30,3,192,0,30,3,192,0,30, + 3,192,0,31,7,128,0,15,15,128,0,15,191,0,0,7, + 252,0,0,3,248,0,0,7,224,15,0,15,240,15,0,63, + 248,15,0,124,124,15,0,120,62,15,0,248,31,15,0,240, + 15,142,0,240,7,206,0,240,3,254,0,240,1,254,0,240, + 0,252,0,248,0,124,0,124,0,126,0,126,1,255,0,63, + 255,255,128,31,255,207,192,7,255,3,224,4,12,12,15,5, + 18,240,240,240,240,112,112,112,112,112,112,112,112,7,36,36, + 15,4,251,14,14,28,28,60,56,56,120,120,120,112,112,240, + 240,240,240,240,240,240,240,240,240,240,240,112,112,120,120,120, + 56,56,60,28,28,14,14,7,36,36,14,4,251,224,224,96, + 112,112,120,56,56,60,60,60,28,28,28,30,30,30,30,30, + 30,30,30,28,28,60,60,60,60,56,56,120,112,112,224,224, + 224,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0,4,20,20,11,4,0,240,240,240, + 240,240,0,0,0,0,0,0,0,0,0,0,240,240,240,240, + 240,6,26,26,11,2,250,60,60,60,60,60,0,0,0,0, + 0,0,0,0,0,0,0,60,60,60,56,120,112,112,112,224, + 224,24,21,63,40,8,2,0,0,1,0,0,15,0,0,63, + 0,1,252,0,7,224,0,63,0,1,252,0,7,224,0,63, + 0,0,252,0,0,224,0,0,248,0,0,126,0,0,15,192, + 0,3,248,0,0,126,0,0,31,192,0,3,240,0,0,126, + 0,0,31,0,0,3,24,10,30,40,8,7,255,255,255,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,255,255,255,24,21,63,40,8,2, + 128,0,0,240,0,0,252,0,0,63,128,0,7,224,0,0, + 252,0,0,63,0,0,7,224,0,0,252,0,0,63,0,0, + 7,0,0,31,0,0,126,0,3,240,0,31,192,0,126,0, + 3,248,0,15,192,0,126,0,0,248,0,0,192,0,0,18, + 30,90,21,1,1,15,248,0,31,254,0,63,255,0,126,127, + 128,248,7,128,112,3,192,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,15,0,0,30,0,0,60,0,0, + 120,0,1,240,0,1,224,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,0,0,0,0,0,0, + 0,0,0,3,192,0,3,192,0,3,192,0,3,192,0,35, + 37,185,39,2,249,0,7,252,0,0,0,63,255,128,0,0, + 255,255,240,0,1,255,255,248,0,7,248,3,252,0,15,224, + 0,126,0,15,128,0,31,0,31,0,0,15,128,62,0,0, + 7,128,60,0,0,7,192,120,7,231,131,192,120,15,247,131, + 192,112,31,255,129,224,240,62,31,129,224,240,60,15,129,224, + 240,120,7,129,224,240,120,7,129,224,240,120,7,129,224,240, + 120,7,129,224,240,120,7,129,224,240,120,7,129,224,240,120, + 7,129,192,240,120,7,129,192,112,56,15,131,192,120,60,15, + 135,128,120,30,27,255,0,124,31,251,255,0,60,15,240,252, + 0,62,1,128,48,0,31,0,0,0,0,31,128,0,0,0, + 15,224,0,0,0,7,248,0,128,0,3,255,255,128,0,0, + 255,255,128,0,0,63,255,128,0,0,7,254,0,0,28,30, + 120,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,63,192,0,0,127,192,0,0,121,224,0, + 0,121,224,0,0,241,240,0,0,240,240,0,1,240,240,0, + 1,224,248,0,1,224,120,0,3,224,124,0,3,192,60,0, + 7,192,60,0,7,128,62,0,7,128,30,0,15,128,31,0, + 15,255,255,0,31,255,255,128,31,255,255,128,30,0,7,128, + 60,0,3,192,60,0,3,192,124,0,3,224,120,0,1,224, + 120,0,1,224,240,0,0,240,240,0,0,240,21,30,90,26, + 3,0,255,254,0,255,255,128,255,255,192,255,255,224,240,7, + 224,240,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,224,240,1,224,240,7,192,255,255,128,255,255,0,255, + 255,192,240,3,224,240,0,240,240,0,112,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,248,240,1,248,240,7,240, + 255,255,224,255,255,224,255,255,128,255,254,0,22,30,90,26, + 2,1,1,255,128,7,255,224,15,255,240,31,0,248,62,0, + 120,60,0,60,120,0,60,120,0,60,120,0,0,112,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,112,0, + 0,112,0,0,120,0,60,120,0,60,60,0,60,60,0,120, + 31,0,248,15,255,240,7,255,224,1,255,128,23,30,90,28, + 3,0,255,248,0,255,255,0,255,255,192,255,255,224,240,15, + 240,240,1,248,240,0,248,240,0,124,240,0,60,240,0,60, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 60,240,0,60,240,0,124,240,0,248,240,1,240,240,7,240, + 255,255,224,255,255,192,255,255,0,255,248,0,19,30,90,24, + 3,0,255,255,192,255,255,192,255,255,192,255,255,192,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,17,30,90,23, + 3,0,255,255,128,255,255,128,255,255,128,255,255,128,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,0,255,255,0,255, + 255,0,255,255,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,25,30,120,30, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,128,63,0,62,0,15,0,60,0,7,128,120,0, + 7,128,120,0,0,0,112,0,0,0,240,0,0,0,240,0, + 0,0,240,0,0,0,240,0,0,0,240,3,255,128,240,3, + 255,128,240,3,255,128,240,3,255,128,240,0,7,128,240,0, + 7,128,120,0,7,128,120,0,7,128,124,0,7,128,62,0, + 7,128,62,0,7,128,31,128,7,128,15,255,255,128,7,255, + 255,128,3,255,255,0,0,255,248,0,22,30,90,28,3,0, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,255,255,252,255,255,252,255,255,252, + 255,255,252,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,4,30,30,10,3,0, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,17,30, + 90,22,2,0,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,0,7,128,0, + 7,128,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,240,7,128,240,7,128,240,15,128,120, + 31,0,127,255,0,63,254,0,31,252,0,15,240,0,22,30, + 90,26,3,0,240,1,240,240,3,224,240,7,192,240,15,128, + 240,31,0,240,30,0,240,60,0,240,124,0,240,248,0,241, + 240,0,243,224,0,247,192,0,255,128,0,255,128,0,255,192, + 0,247,192,0,243,224,0,243,240,0,241,248,0,240,252,0, + 240,124,0,240,62,0,240,31,0,240,31,128,240,15,192,240, + 7,192,240,3,224,240,1,240,240,1,248,240,0,252,17,30, + 90,21,3,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,30,30, + 120,36,3,0,252,0,0,252,254,0,1,252,254,0,1,252, + 254,0,1,252,255,0,3,252,255,0,3,252,247,128,7,188, + 247,128,7,188,247,128,7,188,243,192,15,60,243,192,15,60, + 243,192,14,60,241,224,30,60,241,224,30,60,240,224,28,60, + 240,240,60,60,240,240,60,60,240,120,120,60,240,120,120,60, + 240,120,120,60,240,60,240,60,240,60,240,60,240,28,224,60, + 240,31,224,60,240,31,224,60,240,15,192,60,240,15,192,60, + 240,15,192,60,240,7,128,60,240,7,128,60,22,30,90,28, + 3,0,252,0,60,252,0,60,254,0,60,254,0,60,255,0, + 60,255,0,60,255,128,60,247,128,60,247,192,60,243,192,60, + 243,224,60,241,224,60,241,240,60,240,240,60,240,248,60,240, + 120,60,240,124,60,240,60,60,240,62,60,240,30,60,240,31, + 60,240,15,60,240,15,188,240,7,188,240,3,252,240,3,252, + 240,1,252,240,1,252,240,0,252,240,0,252,26,30,120,30, + 2,1,1,255,224,0,3,255,240,0,15,255,252,0,31,255, + 254,0,31,0,62,0,62,0,31,0,60,0,15,0,120,0, + 7,128,120,0,7,128,112,0,3,128,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,112,0, + 3,128,120,0,7,128,120,0,7,128,120,0,15,128,60,0, + 15,0,62,0,31,0,31,128,126,0,15,255,252,0,7,255, + 248,0,3,255,240,0,0,255,192,0,19,30,90,24,3,0, + 255,248,0,255,254,0,255,255,128,255,255,192,240,15,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,240,15,192,255,255,192,255,255,128, + 255,254,0,255,248,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,28,30,120,31,2,1, + 0,255,192,0,3,255,240,0,15,255,252,0,31,255,254,0, + 31,0,62,0,62,0,31,0,60,0,15,128,120,0,7,128, + 120,0,7,128,112,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,112,0,3,128, + 120,0,7,128,120,0,7,128,120,0,15,0,60,0,15,0, + 62,0,30,0,31,128,126,0,15,255,255,240,7,255,255,240, + 3,255,255,240,0,255,255,240,20,30,90,25,3,0,255,252, + 0,255,255,0,255,255,192,255,255,224,240,7,224,240,1,224, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 1,224,240,7,192,255,255,128,255,255,0,255,255,0,255,255, + 128,240,7,192,240,3,192,240,3,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,0,224,240,0,224,240,0,240,240, + 0,240,240,0,240,240,0,112,22,30,90,26,2,1,3,255, + 0,15,255,192,63,255,224,63,255,240,124,0,240,120,0,120, + 240,0,120,240,0,120,240,0,0,240,0,0,120,0,0,124, + 0,0,63,128,0,31,252,0,15,255,128,0,255,224,0,7, + 240,0,0,248,0,0,120,0,0,56,0,0,60,240,0,60, + 240,0,60,240,0,60,120,0,120,124,0,248,63,255,240,63, + 255,240,31,255,192,7,255,0,23,30,90,25,1,0,255,255, + 254,255,255,254,255,255,254,255,255,254,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,23,30,90,29,3,0,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 120,0,60,120,0,60,124,0,124,62,0,248,63,255,248,31, + 255,240,15,255,224,3,255,128,24,30,90,26,1,0,240,0, + 15,248,0,15,248,0,31,120,0,30,124,0,30,124,0,62, + 60,0,60,62,0,60,30,0,124,30,0,120,31,0,120,15, + 0,248,15,0,240,15,0,240,7,129,240,7,129,224,7,129, + 224,3,195,224,3,195,192,3,195,192,1,231,192,1,231,128, + 1,231,128,0,255,128,0,255,0,0,255,0,0,126,0,0, + 126,0,0,126,0,0,60,0,37,30,150,39,1,0,240,0, + 248,0,120,240,0,248,0,120,240,1,248,0,248,120,1,252, + 0,240,120,1,252,0,240,120,1,220,0,240,124,3,222,1, + 224,60,3,222,1,224,60,3,222,1,224,60,3,142,1,224, + 30,7,143,3,192,30,7,143,3,192,30,7,15,3,192,30, + 7,7,3,128,15,15,7,135,128,15,15,7,135,128,15,14, + 3,135,128,7,14,3,135,0,7,158,3,207,0,7,158,3, + 207,0,7,156,1,206,0,3,156,1,222,0,3,252,1,254, + 0,3,252,1,254,0,1,248,0,252,0,1,248,0,252,0, + 1,248,0,252,0,1,240,0,248,0,0,240,0,120,0,0, + 240,0,120,0,26,30,120,28,1,0,62,0,15,0,62,0, + 31,0,31,0,30,0,15,128,60,0,15,128,124,0,7,192, + 120,0,3,224,240,0,3,224,240,0,1,241,224,0,0,243, + 224,0,0,251,192,0,0,127,128,0,0,63,128,0,0,63, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,247, + 192,0,0,243,224,0,1,227,224,0,3,225,240,0,3,192, + 248,0,7,128,248,0,15,128,124,0,15,0,62,0,31,0, + 62,0,62,0,31,0,60,0,31,0,124,0,15,128,248,0, + 7,192,24,30,90,26,1,0,248,0,15,248,0,31,124,0, + 30,124,0,60,62,0,124,30,0,120,31,0,248,15,0,240, + 15,129,224,7,129,224,3,195,192,3,227,192,1,231,128,1, + 247,0,0,255,0,0,254,0,0,126,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,21,30,90,25,2,0,127,255,248,127,255,248,127,255, + 248,127,255,248,0,0,248,0,1,248,0,1,240,0,3,224, + 0,7,192,0,15,128,0,31,128,0,31,0,0,62,0,0, + 124,0,0,252,0,0,248,0,1,240,0,3,224,0,7,192, + 0,15,192,0,15,128,0,31,0,0,62,0,0,126,0,0, + 252,0,0,248,0,0,255,255,248,255,255,248,255,255,248,255, + 255,248,8,38,38,16,4,248,255,255,255,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,255,255,255,12,33, + 66,16,2,254,224,0,224,0,224,0,96,0,112,0,112,0, + 48,0,56,0,56,0,56,0,28,0,28,0,28,0,12,0, + 14,0,14,0,6,0,7,0,7,0,7,0,3,0,3,128, + 3,128,1,128,1,192,1,192,1,192,0,192,0,224,0,224, + 0,96,0,112,0,112,8,38,38,16,4,248,255,255,255,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255, + 255,255,20,25,75,40,10,0,0,96,0,0,240,0,0,240, + 0,0,240,0,1,248,0,1,152,0,3,156,0,3,12,0, + 3,12,0,7,14,0,6,6,0,6,6,0,14,7,0,12, + 3,0,28,3,128,28,1,128,24,1,128,56,1,192,48,0, + 192,48,0,192,112,0,224,96,0,96,224,0,112,224,0,112, + 192,0,48,20,3,9,20,0,251,255,255,240,255,255,240,255, + 255,240,8,7,7,9,255,25,240,120,56,28,14,14,7,18, + 20,60,23,2,1,15,254,0,63,255,0,62,15,128,120,7, + 128,120,3,192,0,3,192,0,3,192,3,255,192,15,255,192, + 63,255,192,126,3,192,120,3,192,240,3,192,240,3,192,240, + 7,192,240,7,192,248,15,192,124,63,192,63,251,192,31,227, + 192,19,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,252,0,247,255,0,255,15,128,252,7, + 128,248,3,192,248,3,192,240,1,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,192,240,3,192,240, + 3,192,248,7,128,252,7,128,254,31,0,247,254,0,243,252, + 0,17,20,60,21,2,1,15,252,0,31,254,0,62,31,0, + 120,15,128,120,7,128,240,7,128,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,7, + 128,112,7,128,120,7,128,120,15,0,62,31,0,31,254,0, + 15,252,0,19,30,90,24,2,0,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,15,249,224,31,253,224,62,31,224, + 60,7,224,120,7,224,120,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,120,3,224,120,3,224,60,7,224,31,15,224,15,255,224, + 7,249,224,18,20,60,22,2,1,7,252,0,31,254,0,62, + 31,0,60,7,128,120,3,128,112,3,192,240,3,192,240,3, + 192,255,255,192,255,255,192,255,255,192,240,0,0,240,0,0, + 240,0,0,112,3,192,120,7,128,56,7,128,62,31,0,31, + 254,0,7,252,0,13,30,60,14,1,0,1,248,3,248,7, + 248,15,128,15,0,15,0,15,0,15,0,15,0,15,0,255, + 240,255,240,255,240,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,19,28,84,24,2,249,15,249,224, + 31,253,224,62,31,224,120,7,224,120,3,224,112,3,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,120,3,224,124,7,224,62,15,224, + 31,253,224,15,249,224,0,129,224,0,1,224,0,3,192,120, + 3,192,120,3,192,60,7,128,63,255,0,15,254,0,3,248, + 0,18,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,254,0,247,255,0,254,31,128,248,7, + 128,240,7,128,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,4,30,30,8,2,0,240,240,240,240,0,0,0,0,0, + 0,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,7,38,38,11,2,248,30,30,30,30,0, + 0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,254,252, + 248,16,30,60,20,3,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,30,240,62,240, + 124,240,248,241,240,243,224,247,192,255,128,255,0,255,0,247, + 128,247,192,243,224,241,240,240,240,240,248,240,124,240,62,240, + 30,240,31,4,30,30,10,3,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,30,20,80,36,3,1,243,252,31, + 224,247,254,63,240,254,31,112,248,252,15,224,120,248,7,192, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,18,20,60, + 24,3,1,243,254,0,247,255,0,254,31,128,248,7,128,248, + 7,128,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,20, + 20,60,24,2,1,7,252,0,15,255,0,63,15,128,60,3, + 192,120,3,224,120,1,224,240,1,224,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,1,224,120, + 1,224,120,3,224,60,3,192,63,15,128,15,255,0,7,254, + 0,19,28,84,24,3,249,243,254,0,247,255,0,254,15,128, + 252,7,192,248,3,192,248,3,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,248,3,192,248,3,192,252,7,192,254,15,128,247,255,0, + 243,254,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,19,28,84,24,2, + 249,15,249,224,31,253,224,62,15,224,124,7,224,120,3,224, + 120,3,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,3,224,120,3, + 224,124,7,224,62,15,224,31,253,224,15,249,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,11,20,40,15,3,0,243,224,247,224,255, + 224,254,0,248,0,248,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,16,20,40,20,2,1,31,248,63,254,124,62,248, + 31,240,15,240,0,240,0,124,0,127,192,63,248,15,254,0, + 126,0,31,0,15,240,15,240,15,240,31,124,62,127,252,31, + 248,12,25,50,14,1,1,14,0,30,0,30,0,30,0,30, + 0,255,240,255,240,255,240,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,15,0,15,240,7,240,18,20,60,24,3,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,20,60,21,1, + 0,240,0,240,240,1,224,120,1,224,120,1,192,124,3,192, + 60,3,192,60,7,128,30,7,128,30,7,0,15,15,0,15, + 14,0,15,14,0,7,158,0,7,156,0,3,252,0,3,248, + 0,3,248,0,1,248,0,1,240,0,0,240,0,31,20,80, + 33,1,0,240,7,192,30,240,15,192,28,240,15,192,60,120, + 15,224,60,120,30,224,56,120,30,224,120,56,28,240,120,60, + 28,112,112,60,60,112,112,28,56,120,240,30,56,56,224,30, + 120,56,224,14,112,57,224,15,112,29,192,15,240,29,192,7, + 224,31,192,7,224,31,128,7,224,15,128,3,192,15,128,3, + 192,15,0,20,20,60,22,1,0,120,1,224,60,3,192,62, + 3,192,31,7,128,15,15,0,7,158,0,7,222,0,3,252, + 0,1,248,0,0,240,0,1,248,0,3,252,0,3,188,0, + 7,158,0,15,31,0,30,15,128,62,7,128,60,3,192,120, + 3,224,240,1,240,20,28,84,21,1,248,240,0,240,240,1, + 224,120,1,224,120,1,192,60,3,192,60,3,192,62,7,128, + 30,7,128,30,7,128,15,15,0,15,15,0,15,158,0,7, + 158,0,7,158,0,3,252,0,3,252,0,1,248,0,1,248, + 0,1,248,0,0,240,0,0,240,0,0,224,0,1,224,0, + 1,224,0,1,192,0,3,192,0,3,128,0,7,128,0,15, + 20,40,19,2,0,127,254,127,254,127,254,0,62,0,124,0, + 120,0,240,1,240,3,224,3,192,7,128,15,128,31,0,30, + 0,60,0,124,0,248,0,255,254,255,254,255,254,13,41,82, + 19,3,246,0,24,1,248,3,248,3,224,7,128,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,7,0,7, + 0,7,0,15,0,31,0,62,0,252,0,248,0,252,0,126, + 0,30,0,15,0,15,0,7,0,7,0,7,0,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,3,192,3, + 248,1,248,0,120,2,43,43,14,6,245,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,41,82,19,3,246,192,0,252,0, + 254,0,30,0,15,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,128,7,128,7,128,7,128,7,128,7,128,3,192, + 3,224,1,248,0,248,1,248,1,240,3,192,3,192,7,128, + 7,128,7,128,7,128,7,128,7,128,7,0,7,0,7,0, + 7,0,7,0,15,0,31,0,254,0,252,0,240,0,21,5, + 15,21,0,8,2,0,56,31,240,120,63,255,240,120,127,224, + 240,15,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,12,0,0,4,28,28,14,5,248, + 240,240,240,240,0,0,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,17,31,93,23, + 3,250,0,12,0,0,12,0,0,24,0,0,24,0,0,24, + 0,15,248,0,63,254,0,62,63,0,120,119,0,120,103,0, + 240,103,128,240,96,0,240,192,0,240,192,0,240,192,0,241, + 128,0,241,128,0,241,128,0,243,7,128,243,7,128,123,7, + 0,126,15,0,62,30,0,31,254,0,15,248,0,12,0,0, + 12,0,0,28,0,0,24,0,0,24,0,0,8,0,0,20, + 31,93,23,2,0,0,16,0,1,255,0,7,255,192,15,135, + 224,15,1,224,30,0,240,30,0,240,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,248,0,255,248,0,255, + 248,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,255,224,255,255,224,255, + 255,224,21,22,66,25,2,7,192,0,24,224,0,56,96,48, + 48,51,254,96,63,255,224,31,7,192,28,1,192,24,0,192, + 56,0,224,48,0,96,48,0,96,48,0,96,48,0,96,56, + 0,224,24,0,192,28,1,192,14,3,128,31,255,192,59,254, + 224,112,248,112,224,0,56,192,0,24,21,30,90,23,1,0, + 240,0,120,248,0,120,120,0,240,124,0,240,60,1,240,62, + 1,224,30,1,224,30,3,192,15,3,192,15,7,128,255,135, + 248,255,143,248,255,207,248,3,207,0,1,254,0,1,252,0, + 255,255,248,255,255,248,255,255,248,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,2,38,38,14,6,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 0,0,0,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,15,37,74,19,2,250,15,248,31,248, + 62,24,60,0,120,0,120,0,120,0,120,0,60,0,63,0, + 31,128,15,224,15,240,63,248,124,124,120,62,240,30,240,30, + 240,30,240,60,248,120,127,240,63,224,31,224,7,240,1,248, + 0,124,0,60,0,30,0,30,0,30,0,28,0,60,96,248, + 127,240,127,224,3,0,12,4,8,12,0,26,240,240,240,240, + 240,240,240,240,30,30,120,34,2,1,0,63,240,0,0,255, + 252,0,3,240,63,0,7,128,7,128,15,0,3,192,28,3, + 0,224,56,63,240,112,56,127,248,112,112,248,124,56,97,240, + 30,24,97,224,30,24,225,224,30,28,195,192,0,12,195,192, + 0,12,195,192,0,12,195,192,0,12,195,192,0,12,195,192, + 0,12,193,192,30,12,97,224,30,24,97,224,30,24,96,240, + 60,56,48,255,252,48,56,63,248,112,28,15,224,224,14,0, + 1,192,7,0,3,128,3,192,15,0,1,255,252,0,0,63, + 240,0,14,19,38,16,1,11,15,192,63,240,56,120,112,56, + 0,56,0,56,15,248,63,248,120,56,224,56,224,56,224,120, + 240,248,127,184,31,56,0,0,0,0,255,252,255,252,16,16, + 32,22,3,2,7,7,15,14,14,14,28,28,60,60,56,120, + 120,112,240,240,240,240,120,112,56,120,60,60,28,28,14,14, + 15,14,7,7,21,10,30,25,2,8,255,255,248,255,255,248, + 255,255,248,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,255,30,30,120,34,2,1,0, + 63,240,0,0,255,252,0,3,240,63,0,7,128,7,128,14, + 0,1,192,28,127,240,224,56,127,248,112,48,127,252,48,112, + 112,30,56,96,112,14,24,96,112,14,24,192,112,14,12,192, + 112,28,12,192,127,248,12,192,127,240,12,192,127,248,12,192, + 112,28,12,192,112,28,12,192,112,28,12,96,112,12,24,96, + 112,12,24,112,112,14,56,48,112,14,48,56,112,14,112,28, + 0,0,224,14,0,1,192,7,128,7,128,3,240,63,0,1, + 255,252,0,0,63,240,0,12,3,6,12,0,26,255,240,255, + 240,255,240,9,9,18,13,2,21,62,0,127,0,227,128,193, + 128,193,128,193,128,227,128,127,0,62,0,24,24,72,40,8, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,255,255,255,255,255,255,255,255,255,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,255,255,255,255,12,16,32,14,1,15,31, + 192,127,224,120,240,112,112,224,112,0,112,0,224,1,224,3, + 192,7,128,14,0,60,0,120,0,255,240,255,240,255,240,12, + 16,32,14,1,15,63,192,127,224,112,240,96,112,0,112,0, + 240,7,224,7,128,7,224,0,240,0,112,224,112,224,112,127, + 224,127,192,31,128,8,7,7,9,2,25,15,30,28,56,56, + 112,224,255,18,36,108,22,2,250,3,255,192,15,255,192,63, + 195,0,127,195,0,127,195,0,255,195,0,255,195,0,255,195, + 0,255,195,0,255,195,0,255,195,0,127,195,0,127,195,0, + 63,195,0,15,195,0,0,195,0,0,195,0,0,195,0,0, + 195,0,0,195,0,0,195,0,0,195,0,0,195,0,0,195, + 0,0,195,0,0,195,0,0,195,0,0,195,0,0,195,0, + 0,195,0,0,195,0,0,195,0,0,195,0,0,195,0,0, + 195,0,0,195,0,4,5,5,10,3,11,240,240,240,240,240, + 10,10,20,10,2,246,48,0,48,0,62,0,63,128,7,128, + 1,192,1,192,3,192,255,128,254,0,7,16,16,12,2,14, + 30,62,254,238,142,14,14,14,14,14,14,14,14,14,14,14, + 14,19,38,16,1,10,15,192,63,224,120,112,112,56,224,56, + 224,28,224,28,224,28,224,28,224,28,224,56,112,56,56,112, + 31,224,7,128,0,0,0,0,255,252,255,252,16,16,32,22, + 3,2,224,224,112,112,120,120,56,56,28,60,30,30,15,14, + 15,15,15,15,15,14,30,30,28,60,56,56,120,120,112,112, + 224,224,28,30,120,32,2,0,30,0,12,0,62,0,28,0, + 254,0,56,0,238,0,56,0,142,0,112,0,14,0,112,0, + 14,0,224,0,14,0,192,0,14,1,192,0,14,3,128,0, + 14,3,128,0,14,7,0,0,14,7,0,0,14,14,0,0, + 14,12,7,128,14,28,7,128,0,56,15,128,0,56,31,128, + 0,112,27,128,0,112,59,128,0,224,115,128,0,224,99,128, + 1,192,195,128,1,129,195,128,3,129,255,240,7,1,255,240, + 7,0,3,128,14,0,3,128,14,0,3,128,28,0,3,128, + 28,30,120,32,2,0,30,0,28,0,62,0,28,0,254,0, + 56,0,238,0,56,0,142,0,112,0,14,0,112,0,14,0, + 224,0,14,0,224,0,14,1,192,0,14,3,128,0,14,3, + 128,0,14,7,0,0,14,7,0,0,14,14,0,0,14,14, + 31,128,14,28,63,224,0,56,121,224,0,56,112,112,0,112, + 240,112,0,112,0,112,0,224,0,240,0,224,0,224,1,192, + 3,192,1,128,7,128,3,128,15,0,7,0,60,0,7,0, + 120,0,14,0,255,240,14,0,255,240,28,0,255,240,30,31, + 124,32,1,0,0,0,1,192,63,192,3,128,127,224,3,128, + 112,240,7,0,96,112,6,0,0,112,14,0,0,240,28,0, + 7,224,28,0,7,128,56,0,7,224,56,0,0,240,112,0, + 0,112,112,0,224,112,224,0,224,113,192,0,127,225,192,0, + 127,195,129,224,31,131,129,224,0,7,3,224,0,7,7,224, + 0,14,6,224,0,12,12,224,0,28,28,224,0,56,24,224, + 0,56,48,224,0,112,112,224,0,112,127,252,0,224,127,252, + 0,224,0,224,1,192,0,224,1,128,0,224,3,128,0,224, + 17,28,84,21,2,248,0,240,0,0,240,0,0,240,0,0, + 240,0,0,0,0,0,0,0,0,0,0,0,240,0,0,240, + 0,0,240,0,0,240,0,1,240,0,1,224,0,7,192,0, + 15,128,0,31,0,0,60,0,0,120,0,0,240,0,0,240, + 0,0,240,0,0,240,3,0,240,3,128,124,15,128,127,255, + 0,63,254,0,31,252,0,3,240,0,28,41,164,30,1,0, + 0,240,0,0,0,240,0,0,0,120,0,0,0,56,0,0, + 0,28,0,0,0,14,0,0,0,14,0,0,0,7,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0, + 0,31,128,0,0,31,128,0,0,63,192,0,0,63,192,0, + 0,127,192,0,0,121,224,0,0,121,224,0,0,241,240,0, + 0,240,240,0,1,240,240,0,1,224,248,0,1,224,120,0, + 3,224,124,0,3,192,60,0,7,192,60,0,7,128,62,0, + 7,128,30,0,15,128,31,0,15,255,255,0,31,255,255,128, + 31,255,255,128,30,0,7,128,60,0,3,192,60,0,3,192, + 124,0,3,224,120,0,1,224,120,0,1,224,240,0,0,240, + 240,0,0,240,28,41,164,30,1,0,0,0,240,0,0,0, + 240,0,0,1,224,0,0,1,192,0,0,3,128,0,0,7, + 0,0,0,7,0,0,0,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,15,0,0,0,31,128,0,0,31, + 128,0,0,63,192,0,0,63,192,0,0,127,192,0,0,121, + 224,0,0,121,224,0,0,241,240,0,0,240,240,0,1,240, + 240,0,1,224,248,0,1,224,120,0,3,224,124,0,3,192, + 60,0,7,192,60,0,7,128,62,0,7,128,30,0,15,128, + 31,0,15,255,255,0,31,255,255,128,31,255,255,128,30,0, + 7,128,60,0,3,192,60,0,3,192,124,0,3,224,120,0, + 1,224,120,0,1,224,240,0,0,240,240,0,0,240,28,41, + 164,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,57,192,0,0,112,224,0,0,96,96,0, + 0,224,112,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,15,0,0,0,31,128,0,0,31,128,0,0,63,192,0, + 0,63,192,0,0,127,192,0,0,121,224,0,0,121,224,0, + 0,241,240,0,0,240,240,0,1,240,240,0,1,224,248,0, + 1,224,120,0,3,224,124,0,3,192,60,0,7,192,60,0, + 7,128,62,0,7,128,30,0,15,128,31,0,15,255,255,0, + 31,255,255,128,31,255,255,128,30,0,7,128,60,0,3,192, + 60,0,3,192,124,0,3,224,120,0,1,224,120,0,1,224, + 240,0,0,240,240,0,0,240,28,39,156,30,1,0,0,16, + 48,0,0,126,112,0,0,127,224,0,0,231,224,0,0,192, + 128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,15,0,0,0,31,128,0,0,31,128,0,0,63, + 192,0,0,63,192,0,0,127,192,0,0,121,224,0,0,121, + 224,0,0,241,240,0,0,240,240,0,1,240,240,0,1,224, + 248,0,1,224,120,0,3,224,124,0,3,192,60,0,7,192, + 60,0,7,128,62,0,7,128,30,0,15,128,31,0,15,255, + 255,0,31,255,255,128,31,255,255,128,30,0,7,128,60,0, + 3,192,60,0,3,192,124,0,3,224,120,0,1,224,120,0, + 1,224,240,0,0,240,240,0,0,240,29,39,156,30,1,0, + 0,120,120,0,0,120,120,0,0,120,120,0,0,120,120,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,128,0,0,15,128,0,0,31,128,0, + 0,31,192,0,0,63,192,0,0,61,224,0,0,125,224,0, + 0,121,240,0,0,120,240,0,0,240,240,0,0,240,248,0, + 1,240,120,0,1,224,124,0,1,224,60,0,3,224,60,0, + 3,192,62,0,7,192,30,0,7,128,31,0,7,128,15,0, + 15,255,255,128,15,255,255,128,31,255,255,128,30,0,3,192, + 30,0,3,192,60,0,3,224,60,0,1,224,120,0,1,224, + 120,0,0,240,120,0,0,240,240,0,0,248,28,43,172,30, + 1,0,0,14,0,0,0,63,0,0,0,49,128,0,0,96, + 192,0,0,96,192,0,0,96,192,0,0,96,192,0,0,49, + 128,0,0,63,128,0,0,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,31,0,0,0,31,0,0,0,31, + 128,0,0,63,128,0,0,63,192,0,0,123,192,0,0,123, + 192,0,0,121,224,0,0,241,224,0,0,241,240,0,1,224, + 240,0,1,224,248,0,1,224,120,0,3,192,120,0,3,192, + 124,0,7,192,60,0,7,128,62,0,15,128,30,0,15,0, + 30,0,15,255,255,0,31,255,255,0,31,255,255,128,60,0, + 7,128,60,0,7,192,60,0,3,192,120,0,3,192,120,0, + 1,224,240,0,1,224,240,0,1,240,240,0,0,240,37,30, + 150,39,0,0,0,1,255,255,240,0,1,255,255,240,0,3, + 255,255,240,0,3,255,255,240,0,7,252,0,0,0,7,188, + 0,0,0,15,188,0,0,0,15,60,0,0,0,31,60,0, + 0,0,30,60,0,0,0,62,60,0,0,0,60,60,0,0, + 0,124,60,0,0,0,120,63,255,240,0,248,63,255,240,0, + 240,63,255,240,1,240,63,255,240,1,224,60,0,0,3,224, + 60,0,0,3,255,252,0,0,7,255,252,0,0,7,255,252, + 0,0,15,0,60,0,0,31,0,60,0,0,30,0,60,0, + 0,62,0,60,0,0,60,0,63,255,248,124,0,63,255,248, + 120,0,63,255,248,248,0,63,255,248,22,40,120,26,2,247, + 1,255,128,7,255,224,15,255,240,31,0,248,62,0,120,60, + 0,60,120,0,60,120,0,60,120,0,0,112,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,112, + 0,0,120,0,60,120,0,60,60,0,60,60,0,120,31,0, + 248,15,255,240,7,255,224,3,255,128,0,48,0,0,48,0, + 0,62,0,0,63,128,0,63,192,0,1,192,0,1,192,0, + 1,192,0,255,128,0,254,0,19,41,123,24,3,0,30,0, + 0,15,0,0,7,0,0,3,128,0,3,128,0,1,192,0, + 0,224,0,0,96,0,0,0,0,0,0,0,0,0,0,255, + 255,192,255,255,192,255,255,192,255,255,192,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,255,255,192,255,255,192,255,255,192,255, + 255,192,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,255,255,224, + 255,255,224,255,255,224,255,255,224,19,41,123,24,3,0,0, + 30,0,0,60,0,0,56,0,0,120,0,0,240,0,0,224, + 0,1,192,0,1,128,0,0,0,0,0,0,0,0,0,0, + 255,255,192,255,255,192,255,255,192,255,255,192,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 255,255,192,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,255,255, + 224,255,255,224,255,255,224,255,255,224,19,41,123,24,3,0, + 1,224,0,3,240,0,7,240,0,7,120,0,15,56,0,14, + 28,0,28,28,0,24,14,0,0,0,0,0,0,0,0,0, + 0,255,255,192,255,255,192,255,255,192,255,255,192,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,255,255,192,255,255,192,255,255, + 192,255,255,192,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,255, + 255,224,255,255,224,255,255,224,255,255,224,19,39,117,24,3, + 0,30,30,0,30,30,0,30,30,0,30,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,192,255, + 255,192,255,255,192,255,255,192,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,255,255,192,255,255,192,255,255,192,255,255,192,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,255,255,224,255,255,224, + 255,255,224,255,255,224,8,41,41,10,255,0,240,120,56,28, + 30,14,7,3,0,0,0,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,7,41,41,10,3,0,30,30,60,56,112, + 112,224,192,0,0,0,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,12,41,82,10,255,0,15,0,31,0,31,128, + 63,128,57,192,112,224,96,224,224,112,0,0,0,0,0,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,12,39,78,11, + 0,0,240,240,240,240,240,240,240,240,0,0,0,0,0,0, + 0,0,0,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 26,30,120,28,0,0,31,255,0,0,31,255,224,0,31,255, + 248,0,31,255,252,0,30,0,254,0,30,0,63,0,30,0, + 31,0,30,0,15,128,30,0,7,128,30,0,7,128,30,0, + 3,192,30,0,3,192,30,0,3,192,30,0,3,192,255,252, + 3,192,255,252,3,192,255,252,3,192,30,0,3,192,30,0, + 3,192,30,0,3,192,30,0,7,128,30,0,7,128,30,0, + 15,128,30,0,31,0,30,0,63,0,30,0,254,0,31,255, + 252,0,31,255,248,0,31,255,224,0,31,255,0,0,22,39, + 117,28,3,0,0,131,0,3,243,0,7,255,0,7,62,0, + 6,8,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 0,60,252,0,60,254,0,60,254,0,60,255,0,60,255,0, + 60,255,128,60,247,128,60,247,192,60,243,192,60,243,224,60, + 241,224,60,241,240,60,240,240,60,240,248,60,240,120,60,240, + 124,60,240,60,60,240,62,60,240,30,60,240,31,60,240,15, + 60,240,15,188,240,7,188,240,3,252,240,3,252,240,1,252, + 240,1,252,240,0,252,240,0,252,26,41,164,30,2,0,1, + 224,0,0,0,240,0,0,0,120,0,0,0,56,0,0,0, + 28,0,0,0,28,0,0,0,14,0,0,0,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,255,224,0,3, + 255,240,0,15,255,252,0,31,255,254,0,31,0,62,0,62, + 0,31,0,60,0,15,0,120,0,7,128,120,0,7,128,112, + 0,3,128,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,112,0,3,128,120,0,7,128,120, + 0,7,128,120,0,15,128,60,0,15,0,62,0,31,0,31, + 128,126,0,15,255,252,0,7,255,248,0,3,255,240,0,0, + 255,192,0,26,41,164,30,2,0,0,1,224,0,0,3,192, + 0,0,7,128,0,0,7,0,0,0,15,0,0,0,14,0, + 0,0,28,0,0,0,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,255,224,0,3,255,240,0,15,255,252, + 0,31,255,254,0,31,0,62,0,62,0,31,0,60,0,15, + 0,120,0,7,128,120,0,7,128,112,0,3,128,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,112,0,3,128,120,0,7,128,120,0,7,128,120,0,15, + 128,60,0,15,0,62,0,31,0,31,128,126,0,15,255,252, + 0,7,255,248,0,3,255,240,0,0,255,192,0,26,41,164, + 30,2,0,0,30,0,0,0,63,0,0,0,63,0,0,0, + 127,128,0,0,115,128,0,0,225,192,0,0,192,224,0,1, + 192,96,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 255,224,0,3,255,240,0,15,255,252,0,31,255,254,0,31, + 0,62,0,62,0,31,0,60,0,15,0,120,0,7,128,120, + 0,7,128,112,0,3,128,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,112,0,3,128,120, + 0,7,128,120,0,7,128,120,0,15,128,60,0,15,0,62, + 0,31,0,31,128,126,0,15,255,252,0,7,255,248,0,3, + 255,240,0,0,255,192,0,26,39,156,30,2,0,0,32,96, + 0,0,252,224,0,0,255,224,0,1,207,192,0,1,129,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,255,224,0,3,255,240,0,15,255,252,0,31,255,254, + 0,31,0,62,0,62,0,31,0,60,0,15,0,120,0,7, + 128,120,0,7,128,112,0,3,128,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,240,0,3, + 192,240,0,3,192,240,0,3,192,240,0,3,192,112,0,3, + 128,120,0,7,128,120,0,7,128,120,0,15,128,60,0,15, + 0,62,0,31,0,31,128,126,0,15,255,252,0,7,255,248, + 0,3,255,240,0,0,255,192,0,26,39,156,30,2,0,0, + 240,240,0,0,240,240,0,0,240,240,0,0,240,240,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,1,255,224,0,3,255,240,0,15,255,252,0,31, + 255,254,0,31,0,62,0,62,0,31,0,60,0,15,0,120, + 0,7,128,120,0,7,128,112,0,3,128,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,240, + 0,3,192,240,0,3,192,240,0,3,192,240,0,3,192,112, + 0,3,128,120,0,7,128,120,0,7,128,120,0,15,128,60, + 0,15,0,62,0,31,0,31,128,126,0,15,255,252,0,7, + 255,248,0,3,255,240,0,0,255,192,0,22,22,66,40,9, + 1,96,0,24,240,0,60,120,0,120,56,0,112,28,0,224, + 14,1,192,7,3,128,3,135,0,1,206,0,0,252,0,0, + 120,0,0,120,0,0,252,0,1,206,0,3,135,0,7,3, + 128,14,1,192,28,0,224,56,0,112,112,0,56,96,0,24, + 64,0,8,26,38,152,30,2,252,0,0,1,0,0,0,3, + 128,0,0,3,192,0,0,7,128,0,255,199,128,3,255,255, + 0,15,255,255,0,31,255,254,0,31,0,62,0,62,0,127, + 0,124,0,127,0,120,0,255,128,120,1,247,128,240,1,227, + 128,240,3,195,192,240,7,195,192,240,7,131,192,240,15,3, + 192,240,31,3,192,240,30,3,192,240,60,3,192,240,124,3, + 192,240,248,3,192,112,240,3,192,121,240,7,128,123,224,7, + 128,127,192,15,128,63,192,15,0,63,128,31,0,31,128,126, + 0,31,255,252,0,31,255,248,0,63,255,240,0,124,255,192, + 0,120,0,0,0,240,0,0,0,112,0,0,0,32,0,0, + 0,23,41,123,29,3,0,3,192,0,1,192,0,1,224,0, + 0,240,0,0,112,0,0,56,0,0,24,0,0,28,0,0, + 0,0,0,0,0,0,0,0,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,120,0,60,120,0,60, + 124,0,124,62,0,248,63,255,248,31,255,240,15,255,224,3, + 255,128,23,41,123,29,3,0,0,7,128,0,7,0,0,15, + 0,0,30,0,0,28,0,0,56,0,0,48,0,0,112,0, + 0,0,0,0,0,0,0,0,0,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,120,0,60,120,0, + 60,124,0,124,62,0,248,63,255,248,31,255,240,15,255,224, + 3,255,128,23,41,123,29,3,0,0,124,0,0,124,0,0, + 254,0,0,238,0,1,199,0,1,199,0,3,131,128,7,1, + 128,0,0,0,0,0,0,0,0,0,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,120,0,60,120, + 0,60,124,0,124,62,0,248,63,255,248,31,255,240,15,255, + 224,3,255,128,23,38,114,29,3,0,3,195,192,3,195,192, + 3,195,192,3,195,192,0,0,0,0,0,0,0,0,0,0, + 0,0,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,120,0,60,120,0,60,124,0,124,62,0,248, + 63,255,248,31,255,240,15,255,224,3,255,128,24,41,123,26, + 1,0,0,3,192,0,7,128,0,7,0,0,15,0,0,14, + 0,0,28,0,0,24,0,0,48,0,0,0,0,0,0,0, + 0,0,0,248,0,15,248,0,31,124,0,30,124,0,60,62, + 0,124,30,0,120,31,0,248,15,0,240,15,129,224,7,129, + 224,3,195,192,3,227,192,1,231,128,1,247,0,0,255,0, + 0,254,0,0,126,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,19,30,90, + 24,3,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,255,248,0,255,255,0,255,255,128,255,255, + 192,240,15,192,240,3,224,240,1,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,3,224,240,15,192,255,255,192,255, + 255,128,255,255,0,255,248,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,20,30,90, + 22,2,0,3,248,0,15,254,0,63,255,0,124,15,0,248, + 7,128,240,7,128,240,7,128,240,7,128,240,15,0,240,31, + 0,240,62,0,240,124,0,240,248,0,240,240,0,240,240,0, + 240,248,0,240,126,0,240,63,0,240,31,192,240,15,224,240, + 3,224,240,1,240,240,0,240,240,0,240,243,192,240,243,192, + 240,241,224,240,241,241,224,240,255,224,240,63,128,18,31,93, + 23,2,0,7,128,0,7,128,0,3,192,0,1,192,0,0, + 224,0,0,112,0,0,48,0,0,0,0,0,0,0,0,0, + 0,0,0,0,15,254,0,63,255,0,62,15,128,120,7,128, + 120,3,192,0,3,192,0,3,192,3,255,192,15,255,192,63, + 255,192,126,3,192,120,3,192,240,3,192,240,3,192,240,7, + 192,240,7,192,248,15,192,124,63,192,63,251,192,31,227,192, + 18,32,96,23,2,0,0,60,0,0,60,0,0,120,0,0, + 240,0,0,224,0,1,192,0,1,128,0,3,128,0,0,0, + 0,0,0,0,0,0,0,0,0,0,15,254,0,63,255,0, + 62,15,128,120,7,128,120,3,192,0,3,192,0,3,192,3, + 255,192,15,255,192,63,255,192,126,3,192,120,3,192,240,3, + 192,240,3,192,240,7,192,240,7,192,248,15,192,124,63,192, + 63,251,192,31,227,192,18,32,96,23,2,0,1,224,0,3, + 240,0,3,240,0,7,184,0,7,60,0,14,28,0,12,14, + 0,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,227,192,18,30,90,23, + 2,0,7,134,0,15,206,0,15,254,0,28,124,0,24,16, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,243,192,18,30,90,23, + 2,0,30,30,0,30,30,0,30,30,0,30,30,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 15,254,0,63,255,0,62,15,128,120,7,128,120,3,192,0, + 3,192,0,3,192,3,255,192,15,255,192,63,255,192,126,3, + 192,120,3,192,240,3,192,240,3,192,240,7,192,240,7,192, + 248,15,192,124,63,192,63,251,192,31,227,192,18,34,102,23, + 2,0,1,224,0,3,240,0,6,24,0,12,12,0,12,12, + 0,12,12,0,12,12,0,6,24,0,3,240,0,1,224,0, + 0,0,0,0,0,0,0,0,0,0,0,0,15,254,0,63, + 255,0,62,15,128,120,7,128,120,3,192,0,3,192,0,3, + 192,3,255,192,15,255,192,63,255,192,126,3,192,120,3,192, + 240,3,192,240,3,192,240,7,192,240,7,192,248,15,192,124, + 63,192,63,251,192,31,227,192,32,20,80,36,2,1,15,248, + 31,240,63,254,63,248,124,30,120,60,120,7,112,30,120,7, + 224,14,0,3,224,15,0,3,192,15,0,127,255,255,31,255, + 255,255,63,255,255,255,126,3,192,0,120,3,192,0,240,3, + 192,0,240,3,192,15,240,7,224,14,240,7,224,30,248,14, + 112,30,126,62,124,124,63,252,63,248,31,240,15,240,17,30, + 90,21,2,247,15,252,0,31,254,0,62,31,0,120,15,128, + 120,7,128,240,7,128,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,7,128,112,7, + 128,120,7,128,120,15,0,62,31,0,31,254,0,15,252,0, + 1,128,0,1,128,0,1,240,0,1,252,0,1,254,0,0, + 14,0,0,14,0,0,14,0,7,252,0,7,240,0,18,32, + 96,22,2,0,30,0,0,15,0,0,7,0,0,3,128,0, + 3,192,0,1,192,0,0,224,0,0,96,0,0,0,0,0, + 0,0,0,0,0,0,0,0,7,252,0,31,254,0,62,31, + 0,60,7,128,120,3,128,112,3,192,240,3,192,240,3,192, + 255,255,192,255,255,192,255,255,192,240,0,0,240,0,0,240, + 0,0,112,3,192,120,7,128,56,7,128,62,31,0,31,254, + 0,7,252,0,18,32,96,22,2,0,0,30,0,0,60,0, + 0,120,0,0,112,0,0,224,0,0,224,0,1,192,0,1, + 128,0,0,0,0,0,0,0,0,0,0,0,0,0,7,252, + 0,31,254,0,62,31,0,60,7,128,120,3,128,112,3,192, + 240,3,192,240,3,192,255,255,192,255,255,192,255,255,192,240, + 0,0,240,0,0,240,0,0,112,3,192,120,7,128,56,7, + 128,62,31,0,31,254,0,7,252,0,18,32,96,22,2,0, + 1,224,0,3,240,0,3,240,0,7,248,0,7,56,0,14, + 28,0,12,12,0,28,14,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,31,254,0,62,31,0,60,7,128, + 120,3,128,112,3,192,240,3,192,240,3,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,112,3, + 192,120,7,128,56,7,128,62,31,0,31,254,0,7,252,0, + 18,30,90,22,2,0,30,30,0,30,30,0,30,30,0,30, + 30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,31,254,0,62,15,0,60,7,128, + 120,3,128,112,3,192,240,3,192,240,3,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,112,3, + 192,120,3,128,60,7,128,62,15,0,31,254,0,7,252,0, + 8,32,32,10,255,0,240,120,56,28,30,14,7,3,0,0, + 0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,9,32,64,10,2,0,15,128,15,0, + 30,0,28,0,56,0,56,0,112,0,224,0,0,0,0,0, + 0,0,0,0,120,0,120,0,120,0,120,0,120,0,120,0, + 120,0,120,0,120,0,120,0,120,0,120,0,120,0,120,0, + 120,0,120,0,120,0,120,0,120,0,120,0,12,32,64,10, + 255,0,15,0,31,128,31,128,59,192,57,192,112,224,224,96, + 192,112,0,0,0,0,0,0,0,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,12,30,60,10,255,0,240,240,240,240,240,240,240,240, + 0,0,0,0,0,0,0,0,0,0,0,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,20,30,90,24,2,0,16,1,0,60,7,0, + 30,31,0,7,252,0,3,240,0,7,240,0,62,120,0,120, + 60,0,96,30,0,0,15,0,7,255,128,31,255,192,63,15, + 192,60,3,192,120,1,224,120,1,224,240,1,224,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,240, + 1,224,120,1,224,120,3,224,60,3,192,63,15,128,31,255, + 0,7,254,0,18,30,90,24,3,0,7,14,0,15,204,0, + 31,252,0,28,248,0,24,16,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,243,254,0,247,255,0,254,31, + 128,248,7,128,248,7,128,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,20,32,96,24,2,0,15,0,0,7,128,0, + 3,128,0,1,192,0,1,192,0,0,224,0,0,112,0,0, + 48,0,0,0,0,0,0,0,0,0,0,0,0,0,7,252, + 0,15,255,0,63,15,128,60,3,192,120,3,224,120,1,224, + 240,1,224,240,0,240,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,1,224,120,1,224,120,3,224,60,3, + 192,63,15,128,15,255,0,7,254,0,20,32,96,24,2,0, + 0,30,0,0,30,0,0,60,0,0,56,0,0,112,0,0, + 96,0,0,224,0,1,192,0,0,0,0,0,0,0,0,0, + 0,0,0,0,7,252,0,15,255,0,63,15,128,60,3,192, + 120,3,224,120,1,224,240,1,224,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,1,224,120,1, + 224,120,3,224,60,3,192,63,15,128,15,255,0,7,254,0, + 20,32,96,24,2,0,0,240,0,1,248,0,1,248,0,3, + 188,0,3,156,0,7,14,0,6,6,0,12,7,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,20,30,90,24,2,0,3,135,0,7, + 230,0,15,254,0,14,124,0,12,8,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,20,30,90,24,2,0,15,15,0,15, + 15,0,15,15,0,15,15,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,7,252,0,15,255,0, + 63,15,128,60,3,192,120,3,224,120,1,224,240,1,224,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,1,224,120,1,224,120,3,224,60,3,192,63,15,128, + 15,255,0,7,254,0,24,19,57,40,8,2,0,16,0,0, + 56,0,0,124,0,0,124,0,0,124,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,255,255,255,255,255,0,0,0, + 0,0,0,0,0,0,0,56,0,0,124,0,0,124,0,0, + 124,0,0,56,0,21,26,78,24,1,254,0,0,56,0,0, + 120,0,0,112,3,255,224,7,255,192,31,135,192,30,3,224, + 60,7,240,60,15,240,120,14,240,120,28,120,120,56,120,120, + 120,120,120,112,120,120,224,120,121,192,120,123,192,240,63,128, + 240,63,1,240,30,1,224,15,135,192,31,255,128,59,255,0, + 112,0,0,240,0,0,96,0,0,18,32,96,24,3,0,30, + 0,0,15,0,0,7,0,0,3,128,0,3,192,0,1,192, + 0,0,224,0,0,96,0,0,0,0,0,0,0,0,0,0, + 0,0,0,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,7,192,120,7,192,124,31,192,63,251,192,31,243,192,18, + 32,96,24,3,0,0,62,0,0,60,0,0,120,0,0,112, + 0,0,224,0,0,224,0,1,192,0,3,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,7,192,120,7,192,124,31,192,63, + 251,192,31,243,192,18,32,96,24,3,0,1,224,0,3,240, + 0,3,240,0,7,120,0,7,56,0,14,28,0,28,12,0, + 24,14,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 7,192,124,31,192,63,251,192,31,243,192,18,30,90,24,3, + 0,30,30,0,30,30,0,30,30,0,30,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,40,120,21,1, + 248,0,15,0,0,30,0,0,28,0,0,56,0,0,112,0, + 0,112,0,0,224,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,240,0,240,240,1,224,120,1,224,120,1, + 192,60,3,192,60,3,192,62,7,128,30,7,128,30,7,0, + 15,15,0,15,15,0,15,158,0,7,158,0,7,156,0,3, + 252,0,3,252,0,1,248,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,224,0,1,224,0,33,224,0,243,192,0, + 127,192,0,127,128,0,31,0,0,19,38,114,24,3,248,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,243,254,0, + 247,255,0,254,15,128,252,7,192,248,3,192,248,3,192,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,248,3,192,248,3,192,252,7,192, + 254,15,128,247,255,0,243,254,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,20,38,114,22,1,248,15,15,0,15,15,0,15,15,0, + 15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,240,0,240,248,0,224,120,1,224,120,1, + 224,60,3,192,60,3,192,62,3,128,30,7,128,30,7,128, + 15,15,0,15,15,0,7,143,0,7,158,0,7,222,0,3, + 252,0,3,252,0,1,252,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 30 + Calculated Max Values w=24 h=33 x= 8 y=15 dx=40 dy= 0 ascent=31 len=90 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =30 descent= 0 + X Font ascent =30 descent= 0 + Max Font ascent =31 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30n[1175] U8G_SECTION(".progmem.u8g_font_fur30n") = { + 0,54,54,253,245,30,0,0,0,0,42,57,0,31,251,30, + 0,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--40-400-72-72-P-189-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 30, '1' Height: 30 + Calculated Max Values w=37 h=43 x=10 y=25 dx=40 dy= 0 ascent=33 len=185 + Font Bounding box w=54 h=54 x=-3 y=-11 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-7 + X Font ascent =31 descent=-8 + Max Font ascent =33 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur30r[7380] U8G_SECTION(".progmem.u8g_font_fur30r") = { + 0,54,54,253,245,30,9,94,20,223,32,127,249,33,245,31, + 248,0,0,0,12,0,0,4,30,30,14,5,0,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,0,0,0,240,240,240,240,12,12,24,18,3, + 18,240,240,240,240,240,240,240,240,240,240,240,240,240,112,224, + 112,224,112,96,112,96,112,96,96,26,30,120,30,2,0,0, + 28,14,0,0,28,28,0,0,28,28,0,0,28,28,0,0, + 56,24,0,0,56,56,0,0,56,56,0,0,112,56,0,0, + 112,112,0,31,255,255,192,31,255,255,128,31,255,255,128,0, + 224,224,0,0,224,224,0,1,192,224,0,1,193,192,0,1, + 193,192,0,127,255,254,0,255,255,254,0,255,255,254,0,3, + 3,128,0,7,7,0,0,7,7,0,0,7,7,0,0,14, + 7,0,0,14,14,0,0,14,14,0,0,14,14,0,0,28, + 28,0,0,28,28,0,0,20,37,111,22,1,252,0,96,0, + 0,96,0,0,96,0,3,252,0,15,254,0,63,255,0,63, + 255,128,124,103,128,120,99,192,240,99,192,240,99,192,240,96, + 0,240,96,0,240,96,0,120,96,0,127,96,0,63,240,0, + 31,254,0,15,255,128,1,255,192,0,111,224,0,97,224,0, + 96,240,0,96,240,0,96,240,240,96,240,240,96,240,240,96, + 240,120,96,240,124,97,224,63,255,192,31,255,128,15,255,0, + 0,96,0,0,96,0,0,96,0,0,96,0,33,31,155,37, + 2,0,0,0,0,224,0,15,192,0,192,0,31,240,1,192, + 0,63,248,1,128,0,120,60,3,0,0,240,60,7,0,0, + 240,30,6,0,0,240,30,14,0,0,240,30,12,0,0,240, + 30,28,0,0,240,30,24,0,0,240,28,56,0,0,112,60, + 48,0,0,120,124,112,0,0,63,248,224,0,0,31,240,192, + 96,0,3,129,195,252,0,0,1,135,254,0,0,3,143,15, + 0,0,3,14,7,0,0,7,30,7,128,0,6,30,7,128, + 0,14,30,7,128,0,28,30,7,128,0,28,30,7,128,0, + 56,30,7,128,0,56,30,7,128,0,112,15,15,0,0,96, + 15,254,0,0,224,7,252,0,0,192,1,248,0,27,30,120, + 30,2,1,3,254,0,0,7,255,0,0,15,143,128,0,15, + 3,192,0,30,3,192,0,30,3,192,0,30,3,192,0,30, + 3,192,0,31,7,128,0,15,15,128,0,15,191,0,0,7, + 252,0,0,3,248,0,0,7,224,15,0,15,240,15,0,63, + 248,15,0,124,124,15,0,120,62,15,0,248,31,15,0,240, + 15,142,0,240,7,206,0,240,3,254,0,240,1,254,0,240, + 0,252,0,248,0,124,0,124,0,126,0,126,1,255,0,63, + 255,255,128,31,255,207,192,7,255,3,224,4,12,12,15,5, + 18,240,240,240,240,112,112,112,112,112,112,112,112,7,36,36, + 15,4,251,14,14,28,28,60,56,56,120,120,120,112,112,240, + 240,240,240,240,240,240,240,240,240,240,240,112,112,120,120,120, + 56,56,60,28,28,14,14,7,36,36,14,4,251,224,224,96, + 112,112,120,56,56,60,60,60,28,28,28,30,30,30,30,30, + 30,30,30,28,28,60,60,60,60,56,56,120,112,112,224,224, + 224,16,15,30,26,5,15,12,48,28,56,14,112,14,112,7, + 224,3,192,253,191,255,255,243,207,3,192,6,96,14,112,30, + 120,28,56,12,48,24,25,75,40,8,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,255,255,255,255, + 255,255,255,255,255,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,7,10,10,11,2,251,62,60,60,124, + 120,120,112,112,224,224,10,3,6,14,2,8,255,192,255,192, + 255,192,4,5,5,11,4,0,240,240,240,240,240,12,33,66, + 16,2,254,0,112,0,112,0,96,0,224,0,224,0,224,0, + 192,1,192,1,192,1,128,3,128,3,128,3,128,7,0,7, + 0,7,0,6,0,14,0,14,0,14,0,28,0,28,0,28, + 0,24,0,56,0,56,0,56,0,112,0,112,0,112,0,96, + 0,224,0,224,0,18,30,90,22,2,1,7,248,0,31,254, + 0,63,255,0,60,15,0,120,7,128,120,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,112,3,192,112,3,128, + 120,7,128,120,7,128,56,7,0,60,15,0,31,254,0,15, + 254,0,7,248,0,10,30,60,22,5,0,7,192,15,192,31, + 192,63,192,127,192,251,192,243,192,195,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,17,30,90,22,2,1,15,248,0, + 31,252,0,63,254,0,124,15,0,120,7,0,120,7,128,120, + 7,128,240,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,31,0,0,30,0,0,62,0,0,124,0,0,248,0, + 0,248,0,1,240,0,3,224,0,7,192,0,15,128,0,31, + 0,0,31,0,0,62,0,0,124,0,0,248,0,0,255,255, + 128,255,255,128,255,255,128,18,30,90,22,2,1,7,248,0, + 31,254,0,62,31,0,60,7,128,124,3,128,120,3,192,120, + 3,192,120,3,192,0,3,192,0,3,128,0,7,128,0,15, + 0,0,62,0,3,252,0,3,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,240, + 3,192,240,3,192,248,3,192,120,7,128,124,15,128,62,31, + 0,31,254,0,15,248,0,20,30,90,22,1,0,0,15,128, + 0,31,128,0,31,128,0,63,128,0,127,128,0,127,128,0, + 247,128,1,231,128,1,231,128,3,199,128,3,135,128,7,135, + 128,15,7,128,14,7,128,30,7,128,60,7,128,60,7,128, + 120,7,128,240,7,128,240,7,128,255,255,240,255,255,240,255, + 255,240,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,18,30,90,22,2,0,127,255,0, + 127,255,0,127,255,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,96,0,123,252, + 0,127,254,0,126,31,0,124,7,128,120,7,128,112,3,128, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,240,3,192,240,7,128,240,7,128,120,15,0,127,254, + 0,31,252,0,15,248,0,19,30,90,22,2,1,3,252,0, + 15,255,0,31,255,0,63,15,128,62,7,128,124,3,192,120, + 3,192,120,3,192,240,0,0,240,0,0,240,0,0,240,0, + 0,241,252,0,243,255,0,247,255,128,254,7,128,252,3,192, + 252,3,192,248,1,192,248,1,224,248,1,224,248,1,224,248, + 1,224,248,1,224,120,1,192,124,3,192,60,7,128,31,15, + 128,15,255,0,7,252,0,18,30,90,22,2,0,255,255,192, + 255,255,192,255,255,192,0,3,192,0,3,192,0,7,128,0, + 7,128,0,7,128,0,15,0,0,15,0,0,31,0,0,30, + 0,0,30,0,0,60,0,0,60,0,0,60,0,0,120,0, + 0,120,0,0,248,0,0,240,0,0,240,0,1,240,0,1, + 224,0,1,224,0,3,192,0,3,192,0,7,192,0,7,128, + 0,7,128,0,15,128,0,19,30,90,22,2,1,7,252,0, + 31,254,0,62,15,128,60,7,128,120,3,192,120,3,192,120, + 3,192,120,3,192,120,3,192,120,3,192,56,3,128,60,7, + 128,30,15,0,15,254,0,7,252,0,31,254,0,60,7,128, + 120,3,128,112,1,192,240,1,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,120,3,192,120,3,192,62,15, + 128,31,255,0,7,252,0,19,30,90,22,2,1,7,252,0, + 31,255,0,62,31,128,120,7,128,120,3,192,112,3,192,240, + 3,192,240,3,224,240,1,224,240,1,224,240,3,224,240,3, + 224,240,3,224,112,3,224,120,7,224,60,15,224,63,253,224, + 31,249,224,7,241,224,0,1,192,0,1,192,0,1,192,0, + 3,192,112,3,192,112,3,128,120,7,128,56,15,0,62,31, + 0,31,254,0,15,248,0,4,20,20,11,4,0,240,240,240, + 240,240,0,0,0,0,0,0,0,0,0,0,240,240,240,240, + 240,6,26,26,11,2,250,60,60,60,60,60,0,0,0,0, + 0,0,0,0,0,0,0,60,60,60,56,120,112,112,112,224, + 224,24,21,63,40,8,2,0,0,1,0,0,15,0,0,63, + 0,1,252,0,7,224,0,63,0,1,252,0,7,224,0,63, + 0,0,252,0,0,224,0,0,248,0,0,126,0,0,15,192, + 0,3,248,0,0,126,0,0,31,192,0,3,240,0,0,126, + 0,0,31,0,0,3,24,10,30,40,8,7,255,255,255,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,255,255,255,24,21,63,40,8,2, + 128,0,0,240,0,0,252,0,0,63,128,0,7,224,0,0, + 252,0,0,63,0,0,7,224,0,0,252,0,0,63,0,0, + 7,0,0,31,0,0,126,0,3,240,0,31,192,0,126,0, + 3,248,0,15,192,0,126,0,0,248,0,0,192,0,0,18, + 30,90,21,1,1,15,248,0,31,254,0,63,255,0,126,127, + 128,248,7,128,112,3,192,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,15,0,0,30,0,0,60,0,0, + 120,0,1,240,0,1,224,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,0,0,0,0,0,0, + 0,0,0,3,192,0,3,192,0,3,192,0,3,192,0,35, + 37,185,39,2,249,0,7,252,0,0,0,63,255,128,0,0, + 255,255,240,0,1,255,255,248,0,7,248,3,252,0,15,224, + 0,126,0,15,128,0,31,0,31,0,0,15,128,62,0,0, + 7,128,60,0,0,7,192,120,7,231,131,192,120,15,247,131, + 192,112,31,255,129,224,240,62,31,129,224,240,60,15,129,224, + 240,120,7,129,224,240,120,7,129,224,240,120,7,129,224,240, + 120,7,129,224,240,120,7,129,224,240,120,7,129,224,240,120, + 7,129,192,240,120,7,129,192,112,56,15,131,192,120,60,15, + 135,128,120,30,27,255,0,124,31,251,255,0,60,15,240,252, + 0,62,1,128,48,0,31,0,0,0,0,31,128,0,0,0, + 15,224,0,0,0,7,248,0,128,0,3,255,255,128,0,0, + 255,255,128,0,0,63,255,128,0,0,7,254,0,0,28,30, + 120,30,1,0,0,15,0,0,0,31,128,0,0,31,128,0, + 0,63,192,0,0,63,192,0,0,127,192,0,0,121,224,0, + 0,121,224,0,0,241,240,0,0,240,240,0,1,240,240,0, + 1,224,248,0,1,224,120,0,3,224,124,0,3,192,60,0, + 7,192,60,0,7,128,62,0,7,128,30,0,15,128,31,0, + 15,255,255,0,31,255,255,128,31,255,255,128,30,0,7,128, + 60,0,3,192,60,0,3,192,124,0,3,224,120,0,1,224, + 120,0,1,224,240,0,0,240,240,0,0,240,21,30,90,26, + 3,0,255,254,0,255,255,128,255,255,192,255,255,224,240,7, + 224,240,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,224,240,1,224,240,7,192,255,255,128,255,255,0,255, + 255,192,240,3,224,240,0,240,240,0,112,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,248,240,1,248,240,7,240, + 255,255,224,255,255,224,255,255,128,255,254,0,22,30,90,26, + 2,1,1,255,128,7,255,224,15,255,240,31,0,248,62,0, + 120,60,0,60,120,0,60,120,0,60,120,0,0,112,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,112,0, + 0,112,0,0,120,0,60,120,0,60,60,0,60,60,0,120, + 31,0,248,15,255,240,7,255,224,1,255,128,23,30,90,28, + 3,0,255,248,0,255,255,0,255,255,192,255,255,224,240,15, + 240,240,1,248,240,0,248,240,0,124,240,0,60,240,0,60, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 60,240,0,60,240,0,124,240,0,248,240,1,240,240,7,240, + 255,255,224,255,255,192,255,255,0,255,248,0,19,30,90,24, + 3,0,255,255,192,255,255,192,255,255,192,255,255,192,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,192,255,255,192,255, + 255,192,255,255,192,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 255,255,224,255,255,224,255,255,224,255,255,224,17,30,90,23, + 3,0,255,255,128,255,255,128,255,255,128,255,255,128,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,255,255,0,255,255,0,255, + 255,0,255,255,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,25,30,120,30, + 2,1,0,255,224,0,3,255,248,0,7,255,252,0,15,255, + 254,0,31,128,63,0,62,0,15,0,60,0,7,128,120,0, + 7,128,120,0,0,0,112,0,0,0,240,0,0,0,240,0, + 0,0,240,0,0,0,240,0,0,0,240,3,255,128,240,3, + 255,128,240,3,255,128,240,3,255,128,240,0,7,128,240,0, + 7,128,120,0,7,128,120,0,7,128,124,0,7,128,62,0, + 7,128,62,0,7,128,31,128,7,128,15,255,255,128,7,255, + 255,128,3,255,255,0,0,255,248,0,22,30,90,28,3,0, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,255,255,252,255,255,252,255,255,252, + 255,255,252,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,4,30,30,10,3,0, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,17,30, + 90,22,2,0,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,0,7,128,0, + 7,128,0,7,128,0,7,128,0,7,128,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,240,7,128,240,7,128,240,15,128,120, + 31,0,127,255,0,63,254,0,31,252,0,15,240,0,22,30, + 90,26,3,0,240,1,240,240,3,224,240,7,192,240,15,128, + 240,31,0,240,30,0,240,60,0,240,124,0,240,248,0,241, + 240,0,243,224,0,247,192,0,255,128,0,255,128,0,255,192, + 0,247,192,0,243,224,0,243,240,0,241,248,0,240,252,0, + 240,124,0,240,62,0,240,31,0,240,31,128,240,15,192,240, + 7,192,240,3,224,240,1,240,240,1,248,240,0,252,17,30, + 90,21,3,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,30,30, + 120,36,3,0,252,0,0,252,254,0,1,252,254,0,1,252, + 254,0,1,252,255,0,3,252,255,0,3,252,247,128,7,188, + 247,128,7,188,247,128,7,188,243,192,15,60,243,192,15,60, + 243,192,14,60,241,224,30,60,241,224,30,60,240,224,28,60, + 240,240,60,60,240,240,60,60,240,120,120,60,240,120,120,60, + 240,120,120,60,240,60,240,60,240,60,240,60,240,28,224,60, + 240,31,224,60,240,31,224,60,240,15,192,60,240,15,192,60, + 240,15,192,60,240,7,128,60,240,7,128,60,22,30,90,28, + 3,0,252,0,60,252,0,60,254,0,60,254,0,60,255,0, + 60,255,0,60,255,128,60,247,128,60,247,192,60,243,192,60, + 243,224,60,241,224,60,241,240,60,240,240,60,240,248,60,240, + 120,60,240,124,60,240,60,60,240,62,60,240,30,60,240,31, + 60,240,15,60,240,15,188,240,7,188,240,3,252,240,3,252, + 240,1,252,240,1,252,240,0,252,240,0,252,26,30,120,30, + 2,1,1,255,224,0,3,255,240,0,15,255,252,0,31,255, + 254,0,31,0,62,0,62,0,31,0,60,0,15,0,120,0, + 7,128,120,0,7,128,112,0,3,128,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,240,0, + 3,192,240,0,3,192,240,0,3,192,240,0,3,192,112,0, + 3,128,120,0,7,128,120,0,7,128,120,0,15,128,60,0, + 15,0,62,0,31,0,31,128,126,0,15,255,252,0,7,255, + 248,0,3,255,240,0,0,255,192,0,19,30,90,24,3,0, + 255,248,0,255,254,0,255,255,128,255,255,192,240,15,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,240,15,192,255,255,192,255,255,128, + 255,254,0,255,248,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,28,30,120,31,2,1, + 0,255,192,0,3,255,240,0,15,255,252,0,31,255,254,0, + 31,0,62,0,62,0,31,0,60,0,15,128,120,0,7,128, + 120,0,7,128,112,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,240,0,3,192, + 240,0,3,192,240,0,3,192,240,0,3,192,112,0,3,128, + 120,0,7,128,120,0,7,128,120,0,15,0,60,0,15,0, + 62,0,30,0,31,128,126,0,15,255,255,240,7,255,255,240, + 3,255,255,240,0,255,255,240,20,30,90,25,3,0,255,252, + 0,255,255,0,255,255,192,255,255,224,240,7,224,240,1,224, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 1,224,240,7,192,255,255,128,255,255,0,255,255,0,255,255, + 128,240,7,192,240,3,192,240,3,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,0,224,240,0,224,240,0,240,240, + 0,240,240,0,240,240,0,112,22,30,90,26,2,1,3,255, + 0,15,255,192,63,255,224,63,255,240,124,0,240,120,0,120, + 240,0,120,240,0,120,240,0,0,240,0,0,120,0,0,124, + 0,0,63,128,0,31,252,0,15,255,128,0,255,224,0,7, + 240,0,0,248,0,0,120,0,0,56,0,0,60,240,0,60, + 240,0,60,240,0,60,120,0,120,124,0,248,63,255,240,63, + 255,240,31,255,192,7,255,0,23,30,90,25,1,0,255,255, + 254,255,255,254,255,255,254,255,255,254,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,23,30,90,29,3,0,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 240,0,30,240,0,30,240,0,30,240,0,30,240,0,30,240, + 0,30,240,0,30,240,0,30,240,0,30,240,0,30,240,0, + 30,240,0,30,240,0,30,240,0,30,240,0,30,240,0,30, + 120,0,60,120,0,60,124,0,124,62,0,248,63,255,248,31, + 255,240,15,255,224,3,255,128,24,30,90,26,1,0,240,0, + 15,248,0,15,248,0,31,120,0,30,124,0,30,124,0,62, + 60,0,60,62,0,60,30,0,124,30,0,120,31,0,120,15, + 0,248,15,0,240,15,0,240,7,129,240,7,129,224,7,129, + 224,3,195,224,3,195,192,3,195,192,1,231,192,1,231,128, + 1,231,128,0,255,128,0,255,0,0,255,0,0,126,0,0, + 126,0,0,126,0,0,60,0,37,30,150,39,1,0,240,0, + 248,0,120,240,0,248,0,120,240,1,248,0,248,120,1,252, + 0,240,120,1,252,0,240,120,1,220,0,240,124,3,222,1, + 224,60,3,222,1,224,60,3,222,1,224,60,3,142,1,224, + 30,7,143,3,192,30,7,143,3,192,30,7,15,3,192,30, + 7,7,3,128,15,15,7,135,128,15,15,7,135,128,15,14, + 3,135,128,7,14,3,135,0,7,158,3,207,0,7,158,3, + 207,0,7,156,1,206,0,3,156,1,222,0,3,252,1,254, + 0,3,252,1,254,0,1,248,0,252,0,1,248,0,252,0, + 1,248,0,252,0,1,240,0,248,0,0,240,0,120,0,0, + 240,0,120,0,26,30,120,28,1,0,62,0,15,0,62,0, + 31,0,31,0,30,0,15,128,60,0,15,128,124,0,7,192, + 120,0,3,224,240,0,3,224,240,0,1,241,224,0,0,243, + 224,0,0,251,192,0,0,127,128,0,0,63,128,0,0,63, + 0,0,0,63,0,0,0,63,128,0,0,127,128,0,0,247, + 192,0,0,243,224,0,1,227,224,0,3,225,240,0,3,192, + 248,0,7,128,248,0,15,128,124,0,15,0,62,0,31,0, + 62,0,62,0,31,0,60,0,31,0,124,0,15,128,248,0, + 7,192,24,30,90,26,1,0,248,0,15,248,0,31,124,0, + 30,124,0,60,62,0,124,30,0,120,31,0,248,15,0,240, + 15,129,224,7,129,224,3,195,192,3,227,192,1,231,128,1, + 247,0,0,255,0,0,254,0,0,126,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,21,30,90,25,2,0,127,255,248,127,255,248,127,255, + 248,127,255,248,0,0,248,0,1,248,0,1,240,0,3,224, + 0,7,192,0,15,128,0,31,128,0,31,0,0,62,0,0, + 124,0,0,252,0,0,248,0,1,240,0,3,224,0,7,192, + 0,15,192,0,15,128,0,31,0,0,62,0,0,126,0,0, + 252,0,0,248,0,0,255,255,248,255,255,248,255,255,248,255, + 255,248,8,38,38,16,4,248,255,255,255,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,255,255,255,12,33, + 66,16,2,254,224,0,224,0,224,0,96,0,112,0,112,0, + 48,0,56,0,56,0,56,0,28,0,28,0,28,0,12,0, + 14,0,14,0,6,0,7,0,7,0,7,0,3,0,3,128, + 3,128,1,128,1,192,1,192,1,192,0,192,0,224,0,224, + 0,96,0,112,0,112,8,38,38,16,4,248,255,255,255,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,255, + 255,255,20,25,75,40,10,0,0,96,0,0,240,0,0,240, + 0,0,240,0,1,248,0,1,152,0,3,156,0,3,12,0, + 3,12,0,7,14,0,6,6,0,6,6,0,14,7,0,12, + 3,0,28,3,128,28,1,128,24,1,128,56,1,192,48,0, + 192,48,0,192,112,0,224,96,0,96,224,0,112,224,0,112, + 192,0,48,20,3,9,20,0,251,255,255,240,255,255,240,255, + 255,240,8,7,7,9,255,25,240,120,56,28,14,14,7,18, + 20,60,23,2,1,15,254,0,63,255,0,62,15,128,120,7, + 128,120,3,192,0,3,192,0,3,192,3,255,192,15,255,192, + 63,255,192,126,3,192,120,3,192,240,3,192,240,3,192,240, + 7,192,240,7,192,248,15,192,124,63,192,63,251,192,31,227, + 192,19,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,252,0,247,255,0,255,15,128,252,7, + 128,248,3,192,248,3,192,240,1,192,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,192,240,3,192,240, + 3,192,248,7,128,252,7,128,254,31,0,247,254,0,243,252, + 0,17,20,60,21,2,1,15,252,0,31,254,0,62,31,0, + 120,15,128,120,7,128,240,7,128,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,7, + 128,112,7,128,120,7,128,120,15,0,62,31,0,31,254,0, + 15,252,0,19,30,90,24,2,0,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,15,249,224,31,253,224,62,31,224, + 60,7,224,120,7,224,120,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,120,3,224,120,3,224,60,7,224,31,15,224,15,255,224, + 7,249,224,18,20,60,22,2,1,7,252,0,31,254,0,62, + 31,0,60,7,128,120,3,128,112,3,192,240,3,192,240,3, + 192,255,255,192,255,255,192,255,255,192,240,0,0,240,0,0, + 240,0,0,112,3,192,120,7,128,56,7,128,62,31,0,31, + 254,0,7,252,0,13,30,60,14,1,0,1,248,3,248,7, + 248,15,128,15,0,15,0,15,0,15,0,15,0,15,0,255, + 240,255,240,255,240,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,19,28,84,24,2,249,15,249,224, + 31,253,224,62,31,224,120,7,224,120,3,224,112,3,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,3,224,120,3,224,124,7,224,62,15,224, + 31,253,224,15,249,224,0,129,224,0,1,224,0,3,192,120, + 3,192,120,3,192,60,7,128,63,255,0,15,254,0,3,248, + 0,18,30,90,24,3,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,243,254,0,247,255,0,254,31,128,248,7, + 128,240,7,128,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,4,30,30,8,2,0,240,240,240,240,0,0,0,0,0, + 0,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,7,38,38,11,2,248,30,30,30,30,0, + 0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,254,252, + 248,16,30,60,20,3,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,30,240,62,240, + 124,240,248,241,240,243,224,247,192,255,128,255,0,255,0,247, + 128,247,192,243,224,241,240,240,240,240,248,240,124,240,62,240, + 30,240,31,4,30,30,10,3,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,30,20,80,36,3,1,243,252,31, + 224,247,254,63,240,254,31,112,248,252,15,224,120,248,7,192, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,240,7,128, + 60,240,7,128,60,240,7,128,60,240,7,128,60,18,20,60, + 24,3,1,243,254,0,247,255,0,254,31,128,248,7,128,248, + 7,128,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,20, + 20,60,24,2,1,7,252,0,15,255,0,63,15,128,60,3, + 192,120,3,224,120,1,224,240,1,224,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,1,224,120, + 1,224,120,3,224,60,3,192,63,15,128,15,255,0,7,254, + 0,19,28,84,24,3,249,243,254,0,247,255,0,254,15,128, + 252,7,192,248,3,192,248,3,192,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,248,3,192,248,3,192,252,7,192,254,15,128,247,255,0, + 243,254,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,19,28,84,24,2, + 249,15,249,224,31,253,224,62,15,224,124,7,224,120,3,224, + 120,3,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,3,224,120,3, + 224,124,7,224,62,15,224,31,253,224,15,249,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,11,20,40,15,3,0,243,224,247,224,255, + 224,254,0,248,0,248,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,16,20,40,20,2,1,31,248,63,254,124,62,248, + 31,240,15,240,0,240,0,124,0,127,192,63,248,15,254,0, + 126,0,31,0,15,240,15,240,15,240,31,124,62,127,252,31, + 248,12,25,50,14,1,1,14,0,30,0,30,0,30,0,30, + 0,255,240,255,240,255,240,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,15,0,15,240,7,240,18,20,60,24,3,0,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,7,192,120, + 15,192,126,31,192,63,251,192,31,243,192,20,20,60,21,1, + 0,240,0,240,240,1,224,120,1,224,120,1,192,124,3,192, + 60,3,192,60,7,128,30,7,128,30,7,0,15,15,0,15, + 14,0,15,14,0,7,158,0,7,156,0,3,252,0,3,248, + 0,3,248,0,1,248,0,1,240,0,0,240,0,31,20,80, + 33,1,0,240,7,192,30,240,15,192,28,240,15,192,60,120, + 15,224,60,120,30,224,56,120,30,224,120,56,28,240,120,60, + 28,112,112,60,60,112,112,28,56,120,240,30,56,56,224,30, + 120,56,224,14,112,57,224,15,112,29,192,15,240,29,192,7, + 224,31,192,7,224,31,128,7,224,15,128,3,192,15,128,3, + 192,15,0,20,20,60,22,1,0,120,1,224,60,3,192,62, + 3,192,31,7,128,15,15,0,7,158,0,7,222,0,3,252, + 0,1,248,0,0,240,0,1,248,0,3,252,0,3,188,0, + 7,158,0,15,31,0,30,15,128,62,7,128,60,3,192,120, + 3,224,240,1,240,20,28,84,21,1,248,240,0,240,240,1, + 224,120,1,224,120,1,192,60,3,192,60,3,192,62,7,128, + 30,7,128,30,7,128,15,15,0,15,15,0,15,158,0,7, + 158,0,7,158,0,3,252,0,3,252,0,1,248,0,1,248, + 0,1,248,0,0,240,0,0,240,0,0,224,0,1,224,0, + 1,224,0,1,192,0,3,192,0,3,128,0,7,128,0,15, + 20,40,19,2,0,127,254,127,254,127,254,0,62,0,124,0, + 120,0,240,1,240,3,224,3,192,7,128,15,128,31,0,30, + 0,60,0,124,0,248,0,255,254,255,254,255,254,13,41,82, + 19,3,246,0,24,1,248,3,248,3,224,7,128,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,7,0,7, + 0,7,0,15,0,31,0,62,0,252,0,248,0,252,0,126, + 0,30,0,15,0,15,0,7,0,7,0,7,0,7,128,7, + 128,7,0,7,0,7,0,7,0,7,128,7,128,3,192,3, + 248,1,248,0,120,2,43,43,14,6,245,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,41,82,19,3,246,192,0,252,0, + 254,0,30,0,15,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,128,7,128,7,128,7,128,7,128,7,128,3,192, + 3,224,1,248,0,248,1,248,1,240,3,192,3,192,7,128, + 7,128,7,128,7,128,7,128,7,128,7,0,7,0,7,0, + 7,0,7,0,15,0,31,0,254,0,252,0,240,0,21,5, + 15,21,0,8,2,0,56,31,240,120,63,255,240,120,127,224, + 240,15,128,255}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--48-480-72-72-P-226-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 35 + Calculated Max Values w=29 h=39 x=10 y=16 dx=49 dy= 0 ascent=36 len=116 + Font Bounding box w=65 h=64 x=-4 y=-13 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =35 descent= 0 + X Font ascent =35 descent= 0 + Max Font ascent =36 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur35n[1417] U8G_SECTION(".progmem.u8g_font_fur35n") = { + 0,65,64,252,243,35,0,0,0,0,42,57,0,36,250,35, + 0,19,19,57,31,6,16,6,12,0,30,15,0,15,30,0, + 15,30,0,7,28,0,3,184,0,1,176,0,193,240,96,255, + 255,224,255,255,224,248,227,224,1,240,0,3,184,0,7,188, + 0,7,28,0,15,30,0,30,15,0,14,14,0,2,8,0, + 29,29,116,49,10,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,255,255,255,248,255,255, + 255,248,255,255,255,248,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7, + 0,0,0,7,0,0,0,7,0,0,9,12,24,13,2,250, + 31,128,31,0,31,0,62,0,62,0,62,0,60,0,124,0, + 120,0,120,0,112,0,240,0,12,4,8,16,2,10,255,240, + 255,240,255,240,255,240,5,6,6,13,5,0,248,248,248,248, + 248,248,15,39,78,19,2,253,0,14,0,30,0,28,0,28, + 0,60,0,56,0,56,0,120,0,112,0,112,0,112,0,240, + 0,224,0,224,1,224,1,192,1,192,1,192,3,192,3,128, + 3,128,7,128,7,0,7,0,15,0,15,0,14,0,14,0, + 30,0,28,0,28,0,60,0,56,0,56,0,56,0,120,0, + 112,0,112,0,240,0,22,35,105,27,2,1,3,255,0,7, + 255,128,31,255,224,31,255,224,62,3,240,62,1,240,124,0, + 248,120,0,248,120,0,120,248,0,120,248,0,124,248,0,124, + 248,0,124,248,0,124,248,0,124,248,0,124,248,0,124,248, + 0,124,248,0,124,248,0,124,248,0,124,248,0,124,248,0, + 124,248,0,124,120,0,124,120,0,120,120,0,120,124,0,248, + 60,0,248,62,1,240,63,3,240,31,255,224,15,255,192,7, + 255,128,1,255,0,12,35,70,27,7,0,3,240,7,240,15, + 240,31,240,127,240,255,240,253,240,241,240,193,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,21,35,105,27,3,1,3,255,0,15,255,128,31,255,192, + 63,255,224,63,1,240,126,0,240,124,0,248,124,0,248,124, + 0,248,124,0,248,0,0,248,0,0,248,0,0,240,0,1, + 240,0,3,224,0,7,224,0,7,192,0,15,128,0,31,128, + 0,63,0,0,126,0,0,252,0,1,248,0,3,240,0,7, + 224,0,15,192,0,31,192,0,31,128,0,63,0,0,126,0, + 0,252,0,0,255,255,248,255,255,248,255,255,248,255,255,248, + 22,35,105,27,2,1,3,255,0,15,255,192,31,255,224,31, + 255,240,63,1,248,62,0,248,124,0,120,124,0,120,124,0, + 124,0,0,120,0,0,120,0,0,248,0,1,240,0,15,224, + 0,255,192,0,255,0,0,255,128,0,255,192,0,15,224,0, + 1,240,0,0,248,0,0,248,0,0,124,0,0,124,0,0, + 124,248,0,124,248,0,124,252,0,124,252,0,120,124,0,248, + 127,3,248,63,255,240,31,255,224,15,255,192,3,255,0,24, + 35,105,27,1,0,0,3,240,0,7,240,0,7,240,0,15, + 240,0,31,240,0,63,240,0,61,240,0,121,240,0,249,240, + 0,241,240,1,225,240,3,225,240,3,193,240,7,129,240,15, + 129,240,15,1,240,30,1,240,62,1,240,60,1,240,120,1, + 240,248,1,240,240,1,240,255,255,255,255,255,255,255,255,255, + 255,255,255,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,21,35, + 105,27,3,0,127,255,224,127,255,224,127,255,224,127,255,224, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,254,0,125,255,128,127,255, + 192,127,131,224,126,1,240,124,0,240,120,0,248,120,0,120, + 0,0,120,0,0,120,0,0,120,0,0,120,0,0,120,0, + 0,120,248,0,120,248,0,248,248,0,240,248,1,240,126,3, + 224,63,255,224,63,255,192,15,255,128,7,254,0,23,35,105, + 27,2,1,1,255,128,7,255,192,15,255,224,31,193,240,31, + 0,248,62,0,248,62,0,120,124,0,120,124,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,127,0,120,255,192, + 249,255,240,251,255,240,255,131,248,254,0,248,252,0,124,252, + 0,124,248,0,60,248,0,60,248,0,60,248,0,62,248,0, + 60,248,0,60,120,0,60,124,0,124,124,0,120,63,1,248, + 31,255,240,15,255,224,7,255,192,1,255,0,21,35,105,27, + 3,0,255,255,248,255,255,248,255,255,248,255,255,248,0,0, + 120,0,0,248,0,0,240,0,1,240,0,1,240,0,1,224, + 0,3,224,0,3,224,0,7,192,0,7,192,0,7,128,0, + 15,128,0,15,128,0,15,0,0,31,0,0,31,0,0,62, + 0,0,62,0,0,62,0,0,124,0,0,124,0,0,248,0, + 0,248,0,0,248,0,1,240,0,1,240,0,3,240,0,3, + 224,0,3,224,0,7,192,0,7,192,0,22,35,105,27,2, + 1,3,255,128,15,255,224,31,255,240,63,255,248,63,1,248, + 126,0,252,124,0,124,124,0,124,124,0,124,124,0,124,124, + 0,124,60,0,120,62,0,248,31,131,240,15,255,224,3,255, + 128,7,255,128,15,255,224,31,3,240,62,0,248,124,0,120, + 120,0,124,248,0,60,248,0,60,248,0,60,248,0,60,248, + 0,60,248,0,60,248,0,124,124,0,124,126,1,248,63,255, + 248,31,255,240,15,255,224,3,255,128,22,35,105,27,2,1, + 3,255,128,15,255,192,31,255,224,63,255,240,126,1,248,124, + 0,248,120,0,248,248,0,124,248,0,124,248,0,124,248,0, + 124,248,0,124,248,0,124,248,0,124,248,0,252,120,0,252, + 124,1,252,127,3,252,63,255,252,31,255,124,15,254,124,3, + 248,124,0,0,124,0,0,124,0,0,120,0,0,120,0,0, + 248,120,0,248,120,1,240,124,1,240,62,3,224,63,255,224, + 31,255,192,15,255,128,7,254,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--58-580-72-72-P-271-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 42 + Calculated Max Values w=35 h=46 x=12 y=20 dx=59 dy= 0 ascent=43 len=175 + Font Bounding box w=78 h=76 x=-4 y=-15 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =42 descent= 0 + X Font ascent =42 descent= 0 + Max Font ascent =43 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur42n[2135] U8G_SECTION(".progmem.u8g_font_fur42n") = { + 0,78,76,252,241,42,0,0,0,0,42,57,0,43,249,42, + 0,23,22,66,37,7,20,3,1,128,7,131,192,15,131,224, + 7,131,192,7,199,192,3,199,128,1,239,0,0,238,0,0, + 254,0,254,124,254,255,255,254,255,255,254,254,124,254,0,124, + 0,0,238,0,1,239,0,3,199,128,3,199,128,7,195,192, + 15,131,224,15,131,224,3,1,128,35,35,175,59,12,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,255,255,255,255,224,255, + 255,255,255,224,255,255,255,255,224,255,255,255,255,224,0,1, + 224,0,0,0,1,224,0,0,0,1,224,0,0,0,1,224, + 0,0,0,1,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,1,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,1,224,0,0,0, + 1,224,0,0,0,1,224,0,0,0,1,224,0,0,10,15, + 30,16,3,249,31,192,31,192,31,128,63,128,63,0,63,0, + 62,0,62,0,126,0,124,0,124,0,120,0,248,0,248,0, + 240,0,14,5,10,18,2,12,255,252,255,252,255,252,255,252, + 255,252,6,7,7,16,6,0,252,252,252,252,252,252,252,17, + 46,138,23,3,253,0,7,128,0,7,128,0,7,128,0,15, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,60,0,0,60,0,0,60,0,0,120,0,0, + 120,0,0,120,0,0,240,0,0,240,0,0,240,0,0,240, + 0,1,224,0,1,224,0,1,224,0,3,192,0,3,192,0, + 3,192,0,7,128,0,7,128,0,7,128,0,7,128,0,15, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,62,0,0,60,0,0,60,0,0,60,0,0,120,0,0, + 120,0,0,120,0,0,240,0,0,240,0,0,240,0,0,26, + 42,168,32,3,1,0,255,224,0,3,255,240,0,7,255,252, + 0,15,255,254,0,31,255,254,0,63,128,127,0,63,0,63, + 0,62,0,31,128,126,0,31,128,124,0,15,128,124,0,15, + 192,124,0,15,192,252,0,15,192,252,0,7,192,248,0,7, + 192,248,0,7,192,248,0,7,192,248,0,7,192,248,0,7, + 192,248,0,7,192,248,0,7,192,248,0,7,192,248,0,7, + 192,248,0,7,192,252,0,7,192,252,0,7,192,252,0,7, + 192,252,0,7,192,252,0,15,192,124,0,15,192,124,0,15, + 192,126,0,15,192,126,0,15,128,62,0,31,128,63,0,31, + 128,63,0,63,0,31,192,127,0,31,255,254,0,15,255,252, + 0,7,255,252,0,3,255,240,0,0,255,192,0,14,42,84, + 32,8,0,0,252,1,252,3,252,7,252,15,252,63,252,127, + 252,255,124,254,124,248,124,224,124,128,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,0,124,0,124,0,124,0,124,0, + 124,0,124,0,124,0,124,25,42,168,32,4,1,1,255,192, + 0,7,255,240,0,15,255,248,0,31,255,252,0,31,255,254, + 0,63,128,127,0,63,0,63,0,127,0,31,128,126,0,31, + 128,126,0,31,128,126,0,15,128,126,0,15,128,0,0,31, + 128,0,0,31,128,0,0,31,0,0,0,63,0,0,0,63, + 0,0,0,126,0,0,0,252,0,0,1,252,0,0,3,248, + 0,0,7,240,0,0,7,224,0,0,15,224,0,0,31,192, + 0,0,63,128,0,0,127,0,0,0,254,0,0,1,252,0, + 0,3,248,0,0,7,240,0,0,15,224,0,0,31,224,0, + 0,63,192,0,0,63,128,0,0,127,0,0,0,254,0,0, + 0,255,255,255,128,255,255,255,128,255,255,255,128,255,255,255, + 128,255,255,255,128,26,42,168,32,3,1,1,255,192,0,7, + 255,240,0,15,255,252,0,31,255,254,0,63,255,255,0,63, + 128,127,0,127,0,31,128,126,0,31,128,126,0,15,128,126, + 0,15,128,252,0,15,128,0,0,15,128,0,0,15,128,0, + 0,31,128,0,0,63,0,0,0,126,0,0,3,252,0,0, + 127,248,0,0,127,240,0,0,127,224,0,0,127,240,0,0, + 127,252,0,0,3,254,0,0,0,127,0,0,0,63,128,0, + 0,31,128,0,0,15,192,0,0,15,192,0,0,7,192,0, + 0,7,192,252,0,7,192,252,0,7,192,252,0,7,192,252, + 0,15,192,254,0,31,192,127,0,63,128,127,128,127,128,63, + 255,255,0,63,255,254,0,31,255,252,0,7,255,248,0,1, + 255,224,0,29,42,168,32,2,0,0,0,127,0,0,0,127, + 0,0,0,255,0,0,1,255,0,0,3,255,0,0,3,255, + 0,0,7,223,0,0,15,223,0,0,15,159,0,0,31,31, + 0,0,63,31,0,0,62,31,0,0,124,31,0,0,252,31, + 0,0,248,31,0,1,240,31,0,3,240,31,0,3,224,31, + 0,7,192,31,0,15,192,31,0,15,128,31,0,31,0,31, + 0,63,0,31,0,126,0,31,0,124,0,31,0,252,0,31, + 0,248,0,31,0,255,255,255,248,255,255,255,248,255,255,255, + 248,255,255,255,248,255,255,255,248,0,0,31,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,31,0,0,0,31, + 0,26,42,168,32,3,0,127,255,255,0,127,255,255,0,127, + 255,255,0,127,255,255,0,127,255,255,0,124,0,0,0,124, + 0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,124, + 0,0,0,124,0,0,0,124,0,0,0,124,0,0,0,124, + 31,192,0,124,127,240,0,124,255,252,0,125,255,254,0,127, + 224,254,0,127,128,63,0,127,0,31,0,126,0,31,128,126, + 0,15,128,124,0,15,128,0,0,15,192,0,0,15,192,0, + 0,7,192,0,0,7,192,0,0,7,192,0,0,15,192,0, + 0,15,192,252,0,15,192,252,0,15,128,252,0,31,128,254, + 0,31,128,126,0,63,0,127,128,126,0,63,255,254,0,63, + 255,252,0,15,255,248,0,7,255,224,0,1,255,192,0,27, + 42,168,32,3,1,0,127,240,0,1,255,252,0,3,255,254, + 0,15,240,127,0,15,192,63,128,31,128,31,128,63,0,15, + 192,63,0,15,192,62,0,15,192,126,0,0,0,126,0,0, + 0,124,0,0,0,124,0,0,0,124,0,0,0,124,0,0, + 0,124,15,224,0,124,63,248,0,124,255,254,0,124,255,255, + 0,125,255,255,128,127,224,127,128,127,192,31,192,255,128,15, + 192,255,0,7,192,255,0,7,224,254,0,7,224,254,0,7, + 224,254,0,3,224,254,0,3,224,254,0,3,224,254,0,7, + 224,254,0,7,224,126,0,7,224,127,0,7,192,127,0,15, + 192,63,128,15,192,31,192,63,128,31,255,255,0,15,255,255, + 0,7,255,254,0,1,255,248,0,0,127,224,0,26,42,168, + 32,3,0,255,255,255,192,255,255,255,192,255,255,255,192,255, + 255,255,192,255,255,255,192,0,0,7,192,0,0,15,192,0, + 0,15,128,0,0,31,128,0,0,31,128,0,0,31,0,0, + 0,63,0,0,0,63,0,0,0,126,0,0,0,126,0,0, + 0,124,0,0,0,252,0,0,0,252,0,0,1,248,0,0, + 1,248,0,0,1,248,0,0,3,240,0,0,3,240,0,0, + 7,224,0,0,7,224,0,0,15,224,0,0,15,192,0,0, + 15,192,0,0,31,128,0,0,31,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,127,0,0,0,126,0,0,0, + 254,0,0,0,252,0,0,0,252,0,0,1,252,0,0,1, + 248,0,0,3,248,0,0,3,240,0,0,27,42,168,32,2, + 1,0,255,224,0,3,255,252,0,15,255,254,0,31,255,255, + 0,63,255,255,128,63,128,63,192,127,0,31,192,126,0,15, + 192,126,0,7,192,126,0,7,192,124,0,7,192,124,0,7, + 192,126,0,7,192,62,0,15,192,63,0,15,128,31,128,31, + 0,15,224,127,0,7,255,254,0,3,255,248,0,0,255,240, + 0,3,255,248,0,15,255,254,0,31,224,127,0,63,128,31, + 128,62,0,15,192,126,0,7,192,124,0,7,224,252,0,3, + 224,252,0,3,224,248,0,3,224,248,0,3,224,252,0,3, + 224,252,0,3,224,252,0,7,224,254,0,7,224,127,0,15, + 224,127,128,31,192,63,255,255,128,31,255,255,128,15,255,255, + 0,3,255,252,0,0,255,240,0,27,42,168,32,3,1,1, + 255,240,0,7,255,252,0,15,255,254,0,31,255,255,0,63, + 255,255,128,63,128,63,128,126,0,31,192,126,0,15,192,252, + 0,15,192,252,0,7,224,252,0,7,224,248,0,7,224,248, + 0,7,224,248,0,7,224,252,0,7,224,252,0,7,224,252, + 0,15,224,124,0,15,224,126,0,31,224,63,0,63,224,63, + 192,123,224,31,255,243,224,15,255,243,224,3,255,195,224,0, + 255,7,224,0,0,7,224,0,0,7,224,0,0,7,224,0, + 0,7,192,0,0,7,192,0,0,7,192,124,0,15,192,124, + 0,15,128,126,0,31,128,62,0,31,128,63,0,63,0,63, + 128,255,0,31,255,254,0,31,255,252,0,15,255,248,0,7, + 255,240,0,1,255,192,0}; +/* + Fontname: -FreeType-FreeUniversal-Medium-R-Normal--68-680-72-72-P-317-ISO10646-1 + Copyright: (FreeUniversal) Copyright (c) Stephen Wilson 2009 a modification of: Original Font (SIL Sophia) Copyright (c) SIL International, 1994-2008. + Capital A Height: 0, '1' Height: 49 + Calculated Max Values w=41 h=54 x=14 y=23 dx=69 dy= 0 ascent=50 len=250 + Font Bounding box w=92 h=89 x=-5 y=-18 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =49 descent= 0 + X Font ascent =49 descent= 0 + Max Font ascent =50 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fur49n[2643] U8G_SECTION(".progmem.u8g_font_fur49n") = { + 0,92,89,251,238,49,0,0,0,0,42,57,0,50,247,49, + 0,27,26,104,45,9,23,0,192,96,0,3,192,120,0,15, + 192,126,0,7,224,252,0,3,224,248,0,1,241,240,0,1, + 241,240,0,0,251,224,0,0,123,192,0,0,59,128,0,224, + 63,128,224,255,255,255,224,255,255,255,224,255,255,255,224,255, + 159,63,224,128,63,128,32,0,123,192,0,0,123,192,0,0, + 241,224,0,1,241,240,0,3,241,248,0,3,224,248,0,7, + 224,252,0,15,192,124,0,3,192,120,0,0,128,32,0,41, + 41,246,69,14,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,255,255,255,255,255,128,255,255,255, + 255,255,128,255,255,255,255,255,128,255,255,255,255,255,128,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,0,0,60,0,0, + 0,0,0,60,0,0,0,0,0,60,0,0,0,0,0,60, + 0,0,0,0,0,60,0,0,0,0,0,60,0,0,0,0, + 0,60,0,0,0,0,0,60,0,0,0,12,17,34,19,3, + 247,15,240,15,240,15,224,15,224,31,224,31,192,31,192,31, + 128,63,128,63,0,63,0,62,0,126,0,126,0,124,0,124, + 0,248,0,16,6,12,22,3,14,255,255,255,255,255,255,255, + 255,255,255,255,255,7,8,8,19,7,0,254,254,254,254,254, + 254,254,254,21,54,162,27,3,252,0,0,248,0,0,240,0, + 1,240,0,1,240,0,1,240,0,1,224,0,3,224,0,3, + 224,0,3,192,0,7,192,0,7,192,0,7,128,0,15,128, + 0,15,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,124,0,0,120,0,0,248,0,0,248,0,0,240,0, + 1,240,0,1,240,0,1,240,0,1,224,0,3,224,0,3, + 224,0,3,192,0,7,192,0,7,192,0,7,128,0,15,128, + 0,15,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,124,0,0,120,0,0,248,0,0,31,51,204,38,3, + 255,0,31,240,0,0,127,252,0,1,255,255,0,3,255,255, + 128,7,255,255,192,15,255,255,224,31,240,31,240,31,192,15, + 240,63,128,7,248,63,128,3,248,63,0,1,248,127,0,1, + 252,126,0,1,252,126,0,0,252,126,0,0,252,254,0,0, + 252,254,0,0,254,252,0,0,254,252,0,0,254,252,0,0, + 254,252,0,0,126,252,0,0,126,252,0,0,126,252,0,0, + 126,252,0,0,126,252,0,0,126,252,0,0,126,252,0,0, + 126,252,0,0,126,252,0,0,254,254,0,0,254,254,0,0, + 254,254,0,0,254,254,0,0,254,126,0,0,254,126,0,0, + 252,126,0,0,252,127,0,1,252,127,0,1,252,63,0,1, + 252,63,128,3,248,63,128,3,248,31,192,7,248,31,224,15, + 240,15,248,63,240,15,255,255,224,7,255,255,192,3,255,255, + 128,1,255,255,0,0,127,252,0,0,15,240,0,16,49,98, + 38,9,0,0,127,0,255,1,255,3,255,7,255,31,255,63, + 255,127,255,255,255,255,63,252,63,240,63,192,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,29,50,200,38,4,0,0,31,224,0,0, + 255,252,0,3,255,255,0,7,255,255,128,15,255,255,192,31, + 255,255,224,31,240,31,224,63,224,7,240,63,192,3,240,63, + 128,3,248,127,128,3,248,127,0,1,248,127,0,1,248,127, + 0,1,248,127,0,1,248,0,0,1,248,0,0,1,248,0, + 0,3,248,0,0,3,248,0,0,7,240,0,0,7,240,0, + 0,15,224,0,0,31,224,0,0,63,192,0,0,127,128,0, + 0,127,0,0,0,255,0,0,1,254,0,0,3,252,0,0, + 7,248,0,0,15,240,0,0,31,240,0,0,63,224,0,0, + 127,192,0,0,127,128,0,0,255,0,0,1,254,0,0,3, + 252,0,0,7,248,0,0,15,248,0,0,31,240,0,0,63, + 224,0,0,127,192,0,0,255,128,0,0,255,0,0,0,255, + 255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255, + 255,255,248,31,51,204,38,3,255,0,31,240,0,0,255,254, + 0,1,255,255,128,3,255,255,192,7,255,255,224,15,248,31, + 240,31,224,7,248,31,192,3,248,63,192,1,252,63,128,0, + 252,63,128,0,252,127,0,0,252,127,0,0,252,127,0,0, + 252,0,0,0,252,0,0,0,252,0,0,1,252,0,0,1, + 248,0,0,3,248,0,0,7,240,0,0,31,224,0,0,255, + 192,0,31,255,128,0,31,254,0,0,31,252,0,0,31,255, + 0,0,31,255,192,0,0,255,224,0,0,15,240,0,0,7, + 248,0,0,3,252,0,0,1,252,0,0,0,254,0,0,0, + 254,0,0,0,126,0,0,0,126,0,0,0,126,254,0,0, + 126,254,0,0,126,255,0,0,126,255,0,0,254,127,0,0, + 254,127,128,1,252,127,128,3,252,63,224,7,248,31,248,31, + 240,15,255,255,224,7,255,255,192,3,255,255,128,0,255,254, + 0,0,31,240,0,34,50,250,38,2,0,0,0,15,240,0, + 0,0,15,240,0,0,0,31,240,0,0,0,63,240,0,0, + 0,63,240,0,0,0,127,240,0,0,0,255,240,0,0,0, + 255,240,0,0,1,251,240,0,0,3,251,240,0,0,3,243, + 240,0,0,7,227,240,0,0,15,227,240,0,0,15,195,240, + 0,0,31,131,240,0,0,63,131,240,0,0,63,3,240,0, + 0,126,3,240,0,0,254,3,240,0,1,252,3,240,0,1, + 248,3,240,0,3,248,3,240,0,7,240,3,240,0,7,224, + 3,240,0,15,224,3,240,0,31,192,3,240,0,31,128,3, + 240,0,63,128,3,240,0,127,0,3,240,0,126,0,3,240, + 0,252,0,3,240,0,252,0,3,240,0,255,255,255,255,192, + 255,255,255,255,192,255,255,255,255,192,255,255,255,255,192,255, + 255,255,255,192,255,255,255,255,192,0,0,3,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,3,240,0,0,0,3, + 240,0,0,0,3,240,0,0,0,3,240,0,0,0,3,240, + 0,0,0,3,240,0,0,0,3,240,0,0,0,3,240,0, + 0,0,3,240,0,30,50,200,38,4,255,63,255,255,224,63, + 255,255,224,63,255,255,224,63,255,255,224,63,255,255,224,63, + 255,255,224,63,0,0,0,63,0,0,0,63,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,3,248,0,63, + 31,254,0,63,63,255,128,63,127,255,192,63,255,255,224,63, + 248,31,224,63,224,7,240,63,192,3,240,63,128,3,248,63, + 0,1,248,63,0,1,252,62,0,1,252,0,0,0,252,0, + 0,0,252,0,0,0,252,0,0,0,252,0,0,0,252,0, + 0,0,252,0,0,0,252,0,0,0,252,0,0,0,252,254, + 0,1,252,254,0,1,248,254,0,1,248,255,0,3,248,127, + 0,3,240,127,128,7,224,127,192,15,224,63,240,63,192,31, + 255,255,128,15,255,255,0,7,255,254,0,1,255,248,0,0, + 31,224,0,31,51,204,38,3,255,0,7,248,0,0,63,255, + 0,0,255,255,192,1,255,255,224,3,255,255,240,7,252,15, + 240,15,248,7,248,31,224,3,248,31,192,1,252,63,192,1, + 252,63,128,0,252,63,0,0,252,127,0,0,252,127,0,0, + 0,127,0,0,0,126,0,0,0,126,0,0,0,126,0,0, + 0,126,0,0,0,126,0,0,0,126,7,252,0,126,31,255, + 0,126,63,255,192,126,127,255,224,126,255,255,240,127,252,15, + 248,127,240,3,248,255,192,1,252,255,192,1,252,255,128,0, + 254,255,128,0,254,255,0,0,126,255,0,0,126,255,0,0, + 126,255,0,0,126,255,0,0,126,255,0,0,126,255,0,0, + 126,127,0,0,126,127,0,0,126,127,128,0,254,63,128,0, + 252,63,128,1,252,31,192,1,252,31,224,3,248,15,248,15, + 240,7,255,255,224,3,255,255,192,1,255,255,128,0,127,254, + 0,0,15,248,0,30,49,196,38,4,0,255,255,255,252,255, + 255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,0, + 0,0,252,0,0,1,252,0,0,1,252,0,0,1,248,0, + 0,3,248,0,0,3,240,0,0,7,240,0,0,7,240,0, + 0,7,224,0,0,15,224,0,0,15,224,0,0,31,192,0, + 0,31,192,0,0,31,128,0,0,63,128,0,0,63,128,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,254,0,0, + 0,254,0,0,0,254,0,0,1,252,0,0,1,252,0,0, + 3,248,0,0,3,248,0,0,3,248,0,0,7,240,0,0, + 7,240,0,0,15,240,0,0,15,224,0,0,15,224,0,0, + 31,192,0,0,31,192,0,0,63,192,0,0,63,128,0,0, + 63,128,0,0,127,128,0,0,127,0,0,0,127,0,0,0, + 254,0,0,0,254,0,0,1,254,0,0,1,252,0,0,32, + 51,204,38,3,255,0,15,248,0,0,127,255,0,1,255,255, + 128,3,255,255,224,7,255,255,240,15,248,31,248,31,224,7, + 252,31,192,1,252,63,128,1,252,63,128,0,254,63,0,0, + 254,63,0,0,254,63,0,0,126,63,0,0,126,63,0,0, + 126,63,0,0,254,63,0,0,252,31,128,0,252,31,128,1, + 248,15,192,3,248,15,224,7,240,7,248,31,224,3,255,255, + 192,0,255,255,128,0,127,254,0,1,255,255,128,3,255,255, + 192,15,248,15,240,31,192,3,248,31,128,1,248,63,0,0, + 252,127,0,0,126,126,0,0,126,126,0,0,126,254,0,0, + 127,252,0,0,63,252,0,0,63,252,0,0,63,254,0,0, + 127,254,0,0,127,254,0,0,127,254,0,0,127,127,0,0, + 254,127,128,1,254,63,192,3,252,63,240,15,252,31,255,255, + 248,15,255,255,240,3,255,255,192,0,255,255,0,0,15,248, + 0,31,51,204,38,3,255,0,31,248,0,0,255,255,0,3, + 255,255,192,7,255,255,224,15,255,255,240,31,240,31,248,63, + 192,7,248,63,128,3,252,127,0,1,252,126,0,1,252,126, + 0,0,254,254,0,0,254,254,0,0,254,252,0,0,254,252, + 0,0,254,252,0,0,254,252,0,0,254,252,0,0,254,254, + 0,0,254,254,0,0,254,254,0,0,254,126,0,1,254,127, + 0,1,254,63,128,3,254,63,192,7,254,31,240,31,254,31, + 255,255,126,15,255,254,126,7,255,252,126,1,255,248,126,0, + 63,224,126,0,0,0,126,0,0,0,126,0,0,0,126,0, + 0,0,254,0,0,0,252,0,0,0,252,0,0,0,252,126, + 0,0,252,127,0,1,248,63,0,1,248,63,0,3,248,63, + 0,7,240,63,128,7,240,31,192,31,224,31,224,63,224,15, + 255,255,192,7,255,255,128,3,255,255,0,1,255,252,0,0, + 63,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y=11 dx=16 dy= 0 ascent=16 len=34 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11[4313] U8G_SECTION(".progmem.u8g_font_gdb11") = { + 0,27,26,247,250,11,2,67,5,71,32,255,252,16,251,14, + 252,0,0,0,4,0,0,3,14,14,6,1,255,96,224,96, + 96,96,96,96,64,64,64,0,224,224,192,6,6,6,8,1, + 7,108,236,204,76,76,76,8,10,10,9,1,1,26,18,22, + 127,36,36,254,72,72,216,7,14,14,9,1,254,16,16,126, + 150,144,240,120,30,18,146,210,252,16,16,11,11,22,13,1, + 0,112,64,144,128,137,128,139,0,146,0,85,192,42,32,26, + 32,50,32,34,32,65,192,11,13,26,12,1,0,28,0,102, + 0,70,0,70,0,124,0,120,0,113,224,248,128,252,128,222, + 128,207,0,195,128,125,224,3,6,6,5,1,7,96,224,192, + 64,64,64,4,17,17,6,1,253,16,32,96,64,64,192,192, + 192,192,192,192,192,192,64,96,32,16,4,17,17,6,1,253, + 128,64,96,32,48,48,48,48,48,48,48,48,32,32,96,64, + 128,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224,3,9,9,5,1,255,224,224,192, + 0,0,0,224,224,192,3,11,11,5,1,253,224,224,192,0, + 0,0,96,224,96,64,192,8,6,6,8,0,2,3,30,112, + 240,30,7,8,4,4,8,0,3,127,128,0,255,8,6,6, + 8,0,2,96,188,15,14,120,192,7,14,14,8,1,255,60, + 198,198,134,12,8,16,32,32,32,0,56,56,56,14,16,32, + 16,1,252,7,192,31,240,48,56,64,8,71,68,136,196,152, + 196,152,196,152,196,152,200,159,248,206,224,192,32,112,112,63, + 192,31,128,11,11,22,11,0,0,6,0,14,0,14,0,11, + 0,19,0,19,0,63,128,33,128,33,192,96,192,241,224,9, + 11,22,11,1,0,254,0,99,0,99,0,99,0,126,0,99, + 128,97,128,97,128,97,128,97,128,254,0,8,11,11,10,1, + 0,31,99,64,192,192,192,192,192,192,97,62,9,11,22,11, + 1,0,254,0,99,0,97,0,97,128,97,128,97,128,97,128, + 97,128,97,0,99,0,252,0,9,11,22,9,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,11,22,9,0,0,255,128,49,0,49,0, + 48,0,48,0,62,0,48,0,48,0,48,0,48,0,248,0, + 11,11,22,11,0,0,15,192,49,192,64,0,192,0,192,0, + 192,0,193,224,192,192,64,192,112,192,31,128,10,11,22,12, + 1,0,243,192,97,128,97,128,97,128,97,128,127,128,97,128, + 97,128,97,128,97,128,243,192,4,11,11,6,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,14,14,6,254,253,62, + 12,12,12,12,12,12,12,12,12,12,8,136,240,10,11,22, + 11,1,0,243,192,99,0,102,0,108,0,104,0,120,0,108, + 0,102,0,103,0,99,128,241,192,8,11,11,9,1,0,240, + 96,96,96,96,96,96,96,97,97,255,15,11,22,15,0,0, + 112,28,56,56,56,56,56,120,44,88,44,88,38,216,38,152, + 35,152,35,24,243,62,10,11,22,12,1,0,225,192,96,128, + 112,128,120,128,92,128,76,128,70,128,71,128,67,128,65,128, + 225,128,10,11,22,11,0,0,30,0,33,128,64,128,192,192, + 192,192,192,192,192,192,192,192,64,128,97,0,30,0,8,11, + 11,10,1,0,254,99,99,99,98,124,96,96,96,96,240,12, + 14,28,11,0,253,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,3,144,1,240,0, + 96,10,11,22,11,1,0,254,0,99,0,99,0,99,0,98, + 0,124,0,100,0,102,0,99,0,99,128,241,192,7,11,11, + 9,1,0,62,198,128,192,112,60,6,2,130,196,248,10,11, + 22,10,0,0,255,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,30,0,10,11,22,12,1,0, + 241,192,96,128,96,128,96,128,96,128,96,128,96,128,96,128, + 96,128,49,0,30,0,12,11,22,12,0,0,248,240,112,64, + 48,64,48,128,24,128,25,128,29,0,13,0,15,0,6,0, + 6,0,15,11,22,15,0,0,241,30,97,132,49,140,51,200, + 50,200,50,200,28,120,28,112,28,48,24,48,8,48,11,11, + 22,11,0,0,249,224,48,128,57,128,31,0,14,0,6,0, + 15,0,27,0,49,128,33,192,243,224,10,11,22,11,1,0, + 227,192,113,128,49,0,59,0,26,0,14,0,12,0,12,0, + 12,0,12,0,30,0,9,11,22,10,0,0,127,128,67,0, + 71,0,6,0,14,0,12,0,24,0,56,0,48,128,112,128, + 255,128,4,17,17,6,1,253,240,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,240,8,17,17,8,0,253,192, + 64,96,32,48,48,16,24,24,8,12,4,6,6,2,3,3, + 4,17,17,6,1,253,240,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,240,7,9,9,9,1,5,16,48,56, + 40,76,76,68,134,130,8,1,1,9,0,254,255,4,4,4, + 6,0,9,192,96,32,16,8,8,8,9,1,0,60,102,198, + 30,102,198,207,118,9,14,28,10,0,0,96,0,224,0,96, + 0,96,0,96,0,96,0,103,0,127,128,112,128,96,128,96, + 128,97,0,97,0,62,0,7,8,8,8,1,0,62,70,196, + 192,192,192,66,124,9,14,28,10,1,0,3,0,7,0,3, + 0,3,0,3,0,3,0,63,0,67,0,195,0,195,0,195, + 0,195,0,127,128,59,0,7,8,8,9,1,0,60,70,198, + 254,192,192,98,60,7,13,13,6,1,0,30,36,96,96,96, + 252,96,96,96,96,96,96,248,10,12,24,10,0,252,62,192, + 193,0,129,0,193,0,62,0,112,0,254,0,255,128,227,128, + 192,128,193,0,62,0,9,14,28,10,1,0,96,0,224,0, + 96,0,96,0,96,0,96,0,102,0,127,0,115,0,99,0, + 99,0,99,0,99,0,247,128,4,12,12,6,1,0,48,112, + 0,0,96,224,96,96,96,96,96,240,7,16,16,5,253,252, + 14,14,0,0,28,12,12,12,12,12,12,12,12,140,248,224, + 9,14,28,10,1,0,96,0,224,0,96,0,96,0,96,0, + 96,0,103,128,102,0,108,0,120,0,108,0,102,0,103,0, + 243,128,4,14,14,5,1,0,96,224,96,96,96,96,96,96, + 96,96,96,96,96,240,14,8,16,15,1,0,110,112,255,248, + 99,24,99,24,99,24,99,24,99,24,247,188,9,8,16,10, + 1,0,110,0,255,0,115,0,99,0,99,0,99,0,99,0, + 247,128,7,8,8,9,1,0,56,68,198,198,198,198,68,56, + 8,12,12,10,1,252,110,255,97,97,97,97,98,124,96,96, + 96,240,9,12,24,10,1,252,61,0,67,0,195,0,195,0, + 195,0,195,0,127,0,59,0,3,0,3,0,3,0,7,128, + 8,8,8,8,0,0,119,255,50,50,48,48,48,248,6,8, + 8,8,1,0,240,152,144,240,60,132,196,248,6,11,11,7, + 0,0,32,96,96,252,96,96,96,96,100,124,48,10,8,16, + 10,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,9,8,16,9,0,0,243,128,97,0,51,0,50, + 0,30,0,28,0,28,0,8,0,13,8,16,13,0,0,242, + 56,99,16,51,32,53,160,53,160,24,224,24,192,24,192,9, + 8,16,9,0,0,251,128,115,0,62,0,28,0,28,0,22, + 0,35,0,247,128,10,12,24,9,255,252,121,192,48,128,25, + 128,25,0,15,0,14,0,14,0,6,0,4,0,12,0,120, + 0,240,0,7,8,8,8,1,0,254,140,152,56,48,98,226, + 254,6,17,17,5,0,253,8,28,48,48,48,48,48,48,224, + 48,48,48,48,48,48,24,8,1,19,19,4,2,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,5,255,253,64,96,48,48,48,48,48,48,28, + 48,48,48,48,48,48,96,192,8,2,2,9,0,4,57,206, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,4,0,0,3,13,13,6,1,251,96,224,64, + 64,64,64,96,96,96,96,96,96,192,7,11,11,9,1,0, + 16,24,126,148,144,144,144,210,124,16,16,8,11,11,9,1, + 0,30,34,98,96,96,252,96,96,97,127,158,7,7,7,9, + 1,2,132,126,68,68,68,68,254,10,11,22,9,255,0,227, + 192,113,0,51,0,58,0,26,0,30,0,12,0,127,128,12, + 0,12,0,30,0,1,19,19,4,2,252,128,128,128,128,128, + 128,128,128,0,0,0,128,128,128,128,128,128,128,128,7,13, + 13,9,1,0,112,152,144,240,252,158,130,98,60,12,68,100, + 124,6,3,3,7,0,9,196,204,140,11,12,24,13,1,0, + 31,0,32,128,79,64,147,32,146,32,144,32,144,32,144,32, + 137,32,78,64,32,128,31,0,5,6,6,5,0,5,112,208, + 176,144,248,240,7,8,8,9,1,0,18,38,108,220,220,108, + 38,18,7,4,4,9,1,1,254,2,2,2,6,1,1,6, + 0,4,252,6,7,7,6,0,6,120,72,188,188,180,104,120, + 7,1,1,9,1,11,254,4,4,4,6,1,7,112,144,144, + 224,7,8,8,7,0,1,16,16,254,16,16,16,0,254,4, + 7,7,6,1,5,112,208,16,32,64,144,240,4,7,7,6, + 1,5,48,80,144,48,16,144,224,4,4,4,6,2,9,112, + 96,192,128,9,12,24,10,1,252,227,0,99,0,99,0,99, + 0,99,0,99,0,127,128,91,0,64,0,64,0,96,0,112, + 0,10,13,26,11,0,254,63,192,98,128,194,128,194,128,98, + 128,62,128,2,128,2,128,2,128,2,128,2,128,2,128,7, + 192,3,3,3,4,0,5,224,224,192,2,4,4,4,2,252, + 192,64,64,192,4,7,7,6,1,5,32,224,32,32,32,32, + 240,4,6,6,5,0,5,96,144,144,144,96,240,8,8,8, + 9,1,0,136,76,102,55,55,102,76,136,10,11,22,11,1, + 0,192,192,65,128,65,0,66,0,68,0,172,0,8,128,19, + 128,50,128,99,192,197,192,9,11,22,11,1,0,192,128,65, + 0,66,0,66,0,68,0,168,0,25,128,18,128,33,0,98, + 128,199,128,11,11,22,11,0,0,96,96,80,192,32,128,17, + 0,146,0,230,0,4,64,9,192,25,64,49,224,98,224,6, + 13,13,8,1,251,56,56,48,16,16,16,32,96,192,196,204, + 204,112,11,16,32,11,0,0,16,0,24,0,12,0,6,0, + 0,0,6,0,14,0,14,0,11,0,19,0,19,0,63,128, + 33,128,33,192,96,192,241,224,11,16,32,11,0,0,1,0, + 3,128,6,0,12,0,0,0,6,0,14,0,14,0,11,0, + 19,0,19,0,63,128,33,128,33,192,96,192,241,224,11,16, + 32,11,0,0,4,0,14,0,31,0,17,0,0,128,6,0, + 14,0,14,0,11,0,19,0,19,0,63,128,33,128,33,192, + 96,192,241,224,11,15,30,11,0,0,12,128,31,128,39,0, + 0,0,6,0,14,0,14,0,11,0,19,0,19,0,63,128, + 33,128,33,192,96,192,241,224,11,15,30,11,0,0,16,128, + 49,128,49,128,0,0,6,0,14,0,14,0,11,0,19,0, + 19,0,63,128,33,128,33,192,96,192,241,224,11,16,32,11, + 0,0,6,0,10,0,10,0,14,0,0,0,6,0,14,0, + 14,0,11,0,19,0,19,0,63,128,33,128,33,192,96,192, + 241,224,14,11,22,15,0,0,15,252,7,140,5,136,13,128, + 9,128,31,248,25,128,17,128,49,132,33,132,243,252,9,15, + 30,10,0,252,31,0,99,0,64,0,192,0,192,0,192,0, + 192,0,192,0,96,0,112,128,31,0,4,0,2,0,6,0, + 28,0,9,16,32,9,0,0,32,0,48,0,24,0,4,0, + 0,0,255,0,49,0,49,0,48,0,48,0,63,0,48,0, + 48,0,48,128,48,128,255,128,9,16,32,9,0,0,2,0, + 7,0,14,0,24,0,0,0,255,0,49,0,49,0,48,0, + 48,0,63,0,48,0,48,0,48,128,48,128,255,128,9,16, + 32,9,0,0,8,0,28,0,30,0,35,0,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,15,30,9,0,0,33,0,97,0,99,0, + 0,0,255,0,49,0,49,0,48,0,48,0,63,0,48,0, + 48,0,48,128,48,128,255,128,5,16,16,6,0,0,64,224, + 112,16,8,120,48,48,48,48,48,48,48,48,48,120,5,16, + 16,6,1,0,16,56,112,192,0,240,96,96,96,96,96,96, + 96,96,96,240,6,16,16,6,0,0,48,112,120,204,0,120, + 48,48,48,48,48,48,48,48,48,120,7,15,15,6,255,0, + 66,194,194,0,60,24,24,24,24,24,24,24,24,24,60,9, + 11,22,11,1,0,254,0,99,0,97,0,97,128,97,128,249, + 128,97,128,97,128,97,0,99,0,252,0,10,15,30,12,1, + 0,25,0,63,0,46,0,0,0,225,192,96,128,112,128,120, + 128,92,128,76,128,70,128,71,128,67,128,65,128,225,128,10, + 16,32,11,0,0,16,0,24,0,12,0,2,0,0,0,30, + 0,33,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,0,30,0,10,16,32,11,0,0,1,0,3,128,6, + 0,12,0,0,0,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,10,16,32,11,0, + 0,4,0,14,0,31,0,17,128,0,0,30,0,33,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,0,30, + 0,10,15,30,11,0,0,12,128,31,128,39,0,0,0,30, + 0,33,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,0,30,0,10,15,30,11,0,0,16,128,49,128,49, + 128,0,0,30,0,33,128,64,128,192,192,192,192,192,192,192, + 192,192,192,64,128,97,0,30,0,6,6,6,8,1,2,140, + 216,112,112,216,140,10,11,22,11,0,0,31,192,35,128,99, + 128,195,192,198,192,204,192,216,192,240,192,113,128,113,0,254, + 0,10,16,32,12,1,0,16,0,56,0,28,0,6,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,49,0,30,0,10,16,32,12,1,0,2,0,7, + 0,14,0,24,0,0,0,241,192,96,128,96,128,96,128,96, + 128,96,128,96,128,96,128,96,128,49,0,30,0,10,16,32, + 12,1,0,12,0,14,0,30,0,51,0,0,0,241,192,96, + 128,96,128,96,128,96,128,96,128,96,128,96,128,96,128,49, + 0,30,0,10,15,30,12,1,0,33,0,33,128,33,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,49,0,30,0,10,16,32,11,1,0,4,0,7, + 0,12,0,24,0,0,0,227,192,113,128,49,0,59,0,26, + 0,14,0,12,0,12,0,12,0,12,0,30,0,8,11,11, + 10,1,0,240,96,126,99,99,99,99,98,124,96,240,9,13, + 26,11,1,0,14,0,49,128,33,128,97,128,97,0,102,0, + 104,0,100,0,103,0,97,128,104,128,104,128,239,0,8,13, + 13,9,1,0,96,48,16,8,0,60,102,198,30,102,198,207, + 118,8,13,13,9,1,0,12,28,24,48,0,60,102,198,30, + 102,198,207,118,8,13,13,9,1,0,16,56,108,198,0,60, + 102,198,30,102,198,207,118,8,12,12,9,1,0,114,252,0, + 0,60,102,198,30,102,198,207,118,8,12,12,9,1,0,194, + 198,134,0,60,102,198,30,102,198,207,118,8,13,13,9,1, + 0,24,40,40,48,0,60,102,198,30,102,198,207,118,11,8, + 16,13,1,0,61,192,102,32,196,32,63,224,68,0,198,32, + 255,192,115,128,7,12,12,8,1,252,62,70,196,192,192,192, + 102,56,16,8,24,48,7,13,13,9,1,0,96,48,24,8, + 0,60,70,198,254,192,192,98,60,7,13,13,9,1,0,12, + 14,24,48,0,60,70,198,254,192,192,98,60,7,13,13,9, + 1,0,24,56,108,66,0,60,70,198,254,192,192,98,60,7, + 12,12,9,1,0,66,198,194,0,60,70,198,254,192,192,98, + 60,5,13,13,5,0,0,224,96,48,16,0,48,112,48,48, + 48,48,48,120,5,13,13,5,1,0,48,56,96,64,128,96, + 224,96,96,96,96,96,240,6,13,13,5,0,0,48,112,216, + 132,0,48,112,48,48,48,48,48,120,7,12,12,5,255,0, + 66,194,194,0,24,56,24,24,24,24,24,60,7,13,13,9, + 1,0,112,62,56,108,4,62,78,198,198,198,196,76,56,9, + 12,24,10,1,0,57,0,126,0,0,0,0,0,110,0,255, + 0,115,0,99,0,99,0,99,0,99,0,247,128,7,13,13, + 9,1,0,112,48,24,8,0,56,68,198,198,198,198,68,56, + 7,13,13,9,1,0,14,12,24,16,0,56,68,198,198,198, + 198,68,56,7,13,13,9,1,0,24,60,44,66,0,56,68, + 198,198,198,198,68,56,7,12,12,9,1,0,50,124,128,0, + 56,68,198,198,198,198,68,56,7,12,12,9,1,0,66,194, + 66,0,56,68,198,198,198,198,68,56,7,6,6,8,0,2, + 16,16,0,126,144,16,7,9,9,9,1,0,2,58,68,206, + 214,230,230,68,248,10,13,26,10,0,0,24,0,56,0,12, + 0,4,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,13,26,10,0,0,7,0,6,0,12, + 0,8,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,13,26,10,0,0,12,0,30,0,18, + 0,33,0,0,0,227,128,97,128,97,128,97,128,97,128,97, + 128,127,192,57,128,10,12,24,10,0,0,33,0,33,128,33, + 0,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,10,17,34,9,255,252,3,0,3,128,6,0,4, + 0,8,0,121,192,48,128,25,128,25,0,15,0,14,0,14, + 0,6,0,4,0,12,0,120,0,240,0,8,18,18,10,1, + 252,96,224,96,96,96,96,110,127,97,97,97,97,98,124,96, + 96,96,240,10,16,32,9,255,252,16,128,48,128,48,128,0, + 0,121,192,48,128,25,128,25,0,15,0,14,0,14,0,6, + 0,4,0,12,0,120,0,240,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 8 h=17 x= 1 y= 6 dx=10 dy= 0 ascent=14 len=17 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11n[263] U8G_SECTION(".progmem.u8g_font_gdb11n") = { + 0,27,26,247,250,11,0,0,0,0,42,57,0,14,253,11, + 0,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--18-180-72-72-P-89-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y= 9 dx=16 dy= 0 ascent=15 len=32 + Font Bounding box w=27 h=26 x=-9 y=-6 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb11r[2001] U8G_SECTION(".progmem.u8g_font_gdb11r") = { + 0,27,26,247,250,11,2,67,5,71,32,127,252,15,252,14, + 252,0,0,0,4,0,0,3,14,14,6,1,255,96,224,96, + 96,96,96,96,64,64,64,0,224,224,192,6,6,6,8,1, + 7,108,236,204,76,76,76,8,10,10,9,1,1,26,18,22, + 127,36,36,254,72,72,216,7,14,14,9,1,254,16,16,126, + 150,144,240,120,30,18,146,210,252,16,16,11,11,22,13,1, + 0,112,64,144,128,137,128,139,0,146,0,85,192,42,32,26, + 32,50,32,34,32,65,192,11,13,26,12,1,0,28,0,102, + 0,70,0,70,0,124,0,120,0,113,224,248,128,252,128,222, + 128,207,0,195,128,125,224,3,6,6,5,1,7,96,224,192, + 64,64,64,4,17,17,6,1,253,16,32,96,64,64,192,192, + 192,192,192,192,192,192,64,96,32,16,4,17,17,6,1,253, + 128,64,96,32,48,48,48,48,48,48,48,48,32,32,96,64, + 128,6,8,8,8,1,6,48,176,252,120,120,252,52,48,7, + 6,6,8,0,2,16,16,16,254,16,16,3,5,5,5,1, + 253,96,224,96,64,192,6,1,1,6,0,4,252,3,3,3, + 5,1,255,224,224,192,8,17,17,9,0,253,3,3,2,6, + 6,4,12,12,24,24,16,48,48,32,96,64,192,7,11,11, + 9,1,0,56,76,70,198,198,198,198,198,196,100,56,7,11, + 11,9,1,0,24,248,24,24,24,24,24,24,24,24,126,7, + 11,11,9,1,0,60,102,102,6,4,8,16,34,66,126,254, + 7,11,11,8,0,0,60,102,102,6,8,28,6,6,6,140, + 120,7,11,11,8,0,0,4,12,12,20,52,36,68,126,132, + 4,30,7,11,11,9,1,0,126,124,64,64,124,134,6,6, + 6,134,124,7,11,11,9,1,0,12,48,96,64,252,198,198, + 198,198,100,56,7,11,11,9,1,0,254,254,134,4,4,8, + 8,24,48,48,96,8,11,11,10,1,0,60,102,102,102,124, + 62,71,195,195,195,60,7,11,11,9,1,0,56,68,198,198, + 198,198,126,4,12,24,224,3,9,9,5,1,255,224,224,192, + 0,0,0,224,224,192,3,11,11,5,1,253,224,224,192,0, + 0,0,96,224,96,64,192,8,6,6,8,0,2,3,30,112, + 240,30,7,8,4,4,8,0,3,127,128,0,255,8,6,6, + 8,0,2,96,188,15,14,120,192,7,14,14,8,1,255,60, + 198,198,134,12,8,16,32,32,32,0,56,56,56,14,16,32, + 16,1,252,7,192,31,240,48,56,64,8,71,68,136,196,152, + 196,152,196,152,196,152,200,159,248,206,224,192,32,112,112,63, + 192,31,128,11,11,22,11,0,0,6,0,14,0,14,0,11, + 0,19,0,19,0,63,128,33,128,33,192,96,192,241,224,9, + 11,22,11,1,0,254,0,99,0,99,0,99,0,126,0,99, + 128,97,128,97,128,97,128,97,128,254,0,8,11,11,10,1, + 0,31,99,64,192,192,192,192,192,192,97,62,9,11,22,11, + 1,0,254,0,99,0,97,0,97,128,97,128,97,128,97,128, + 97,128,97,0,99,0,252,0,9,11,22,9,0,0,255,0, + 49,0,49,0,48,0,48,0,63,0,48,0,48,0,48,128, + 48,128,255,128,9,11,22,9,0,0,255,128,49,0,49,0, + 48,0,48,0,62,0,48,0,48,0,48,0,48,0,248,0, + 11,11,22,11,0,0,15,192,49,192,64,0,192,0,192,0, + 192,0,193,224,192,192,64,192,112,192,31,128,10,11,22,12, + 1,0,243,192,97,128,97,128,97,128,97,128,127,128,97,128, + 97,128,97,128,97,128,243,192,4,11,11,6,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,14,14,6,254,253,62, + 12,12,12,12,12,12,12,12,12,12,8,136,240,10,11,22, + 11,1,0,243,192,99,0,102,0,108,0,104,0,120,0,108, + 0,102,0,103,0,99,128,241,192,8,11,11,9,1,0,240, + 96,96,96,96,96,96,96,97,97,255,15,11,22,15,0,0, + 112,28,56,56,56,56,56,120,44,88,44,88,38,216,38,152, + 35,152,35,24,243,62,10,11,22,12,1,0,225,192,96,128, + 112,128,120,128,92,128,76,128,70,128,71,128,67,128,65,128, + 225,128,10,11,22,11,0,0,30,0,33,128,64,128,192,192, + 192,192,192,192,192,192,192,192,64,128,97,0,30,0,8,11, + 11,10,1,0,254,99,99,99,98,124,96,96,96,96,240,12, + 14,28,11,0,253,30,0,33,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,0,30,0,3,144,1,240,0, + 96,10,11,22,11,1,0,254,0,99,0,99,0,99,0,98, + 0,124,0,100,0,102,0,99,0,99,128,241,192,7,11,11, + 9,1,0,62,198,128,192,112,60,6,2,130,196,248,10,11, + 22,10,0,0,255,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,30,0,10,11,22,12,1,0, + 241,192,96,128,96,128,96,128,96,128,96,128,96,128,96,128, + 96,128,49,0,30,0,12,11,22,12,0,0,248,240,112,64, + 48,64,48,128,24,128,25,128,29,0,13,0,15,0,6,0, + 6,0,15,11,22,15,0,0,241,30,97,132,49,140,51,200, + 50,200,50,200,28,120,28,112,28,48,24,48,8,48,11,11, + 22,11,0,0,249,224,48,128,57,128,31,0,14,0,6,0, + 15,0,27,0,49,128,33,192,243,224,10,11,22,11,1,0, + 227,192,113,128,49,0,59,0,26,0,14,0,12,0,12,0, + 12,0,12,0,30,0,9,11,22,10,0,0,127,128,67,0, + 71,0,6,0,14,0,12,0,24,0,56,0,48,128,112,128, + 255,128,4,17,17,6,1,253,240,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,240,8,17,17,8,0,253,192, + 64,96,32,48,48,16,24,24,8,12,4,6,6,2,3,3, + 4,17,17,6,1,253,240,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,240,7,9,9,9,1,5,16,48,56, + 40,76,76,68,134,130,8,1,1,9,0,254,255,4,4,4, + 6,0,9,192,96,32,16,8,8,8,9,1,0,60,102,198, + 30,102,198,207,118,9,14,28,10,0,0,96,0,224,0,96, + 0,96,0,96,0,96,0,103,0,127,128,112,128,96,128,96, + 128,97,0,97,0,62,0,7,8,8,8,1,0,62,70,196, + 192,192,192,66,124,9,14,28,10,1,0,3,0,7,0,3, + 0,3,0,3,0,3,0,63,0,67,0,195,0,195,0,195, + 0,195,0,127,128,59,0,7,8,8,9,1,0,60,70,198, + 254,192,192,98,60,7,13,13,6,1,0,30,36,96,96,96, + 252,96,96,96,96,96,96,248,10,12,24,10,0,252,62,192, + 193,0,129,0,193,0,62,0,112,0,254,0,255,128,227,128, + 192,128,193,0,62,0,9,14,28,10,1,0,96,0,224,0, + 96,0,96,0,96,0,96,0,102,0,127,0,115,0,99,0, + 99,0,99,0,99,0,247,128,4,12,12,6,1,0,48,112, + 0,0,96,224,96,96,96,96,96,240,7,16,16,5,253,252, + 14,14,0,0,28,12,12,12,12,12,12,12,12,140,248,224, + 9,14,28,10,1,0,96,0,224,0,96,0,96,0,96,0, + 96,0,103,128,102,0,108,0,120,0,108,0,102,0,103,0, + 243,128,4,14,14,5,1,0,96,224,96,96,96,96,96,96, + 96,96,96,96,96,240,14,8,16,15,1,0,110,112,255,248, + 99,24,99,24,99,24,99,24,99,24,247,188,9,8,16,10, + 1,0,110,0,255,0,115,0,99,0,99,0,99,0,99,0, + 247,128,7,8,8,9,1,0,56,68,198,198,198,198,68,56, + 8,12,12,10,1,252,110,255,97,97,97,97,98,124,96,96, + 96,240,9,12,24,10,1,252,61,0,67,0,195,0,195,0, + 195,0,195,0,127,0,59,0,3,0,3,0,3,0,7,128, + 8,8,8,8,0,0,119,255,50,50,48,48,48,248,6,8, + 8,8,1,0,240,152,144,240,60,132,196,248,6,11,11,7, + 0,0,32,96,96,252,96,96,96,96,100,124,48,10,8,16, + 10,0,0,227,128,97,128,97,128,97,128,97,128,97,128,127, + 192,57,128,9,8,16,9,0,0,243,128,97,0,51,0,50, + 0,30,0,28,0,28,0,8,0,13,8,16,13,0,0,242, + 56,99,16,51,32,53,160,53,160,24,224,24,192,24,192,9, + 8,16,9,0,0,251,128,115,0,62,0,28,0,28,0,22, + 0,35,0,247,128,10,12,24,9,255,252,121,192,48,128,25, + 128,25,0,15,0,14,0,14,0,6,0,4,0,12,0,120, + 0,240,0,7,8,8,8,1,0,254,140,152,56,48,98,226, + 254,6,17,17,5,0,253,8,28,48,48,48,48,48,48,224, + 48,48,48,48,48,48,24,8,1,19,19,4,2,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,5,255,253,64,96,48,48,48,48,48,48,28, + 48,48,48,48,48,48,96,192,8,2,2,9,0,4,57,206, + 255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=11 dx=16 dy= 0 ascent=17 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12[4626] U8G_SECTION(".progmem.u8g_font_gdb12") = { + 0,29,28,246,249,12,2,113,5,210,32,255,252,17,251,15, + 252,0,0,0,5,0,0,3,14,14,6,1,0,32,96,96, + 96,96,96,96,96,96,96,0,224,224,192,7,6,6,9,1, + 8,102,236,108,76,68,68,9,11,22,10,1,1,27,0,26, + 0,18,0,127,128,54,0,36,0,36,0,255,0,104,0,72, + 0,88,0,8,15,15,9,0,254,8,8,63,75,74,104,60, + 30,11,137,73,235,126,8,8,12,12,24,14,1,0,112,32, + 144,64,136,128,137,128,139,0,146,0,100,224,13,16,25,16, + 17,16,33,16,96,224,12,13,26,13,1,0,30,0,35,0, + 99,0,99,0,118,0,124,0,120,240,252,64,222,64,207,64, + 199,128,193,192,62,240,3,6,6,5,1,8,96,224,96,64, + 64,64,4,18,18,6,1,253,16,48,96,96,64,192,192,192, + 192,192,192,192,192,192,96,96,48,16,4,18,18,6,1,253, + 128,192,96,96,48,48,48,48,48,48,48,48,48,32,96,96, + 192,128,7,7,7,8,1,7,48,180,222,48,222,148,48,7, + 7,7,8,1,2,16,16,16,254,16,16,16,3,6,6,5, + 1,252,96,224,96,96,64,128,6,1,1,7,0,4,252,3, + 3,3,5,1,0,224,224,192,9,18,36,9,0,253,1,128, + 3,0,3,0,3,0,6,0,6,0,4,0,12,0,12,0, + 24,0,24,0,16,0,48,0,48,0,32,0,96,0,96,0, + 192,0,8,11,11,10,1,0,60,102,66,195,195,195,195,195, + 66,98,60,7,12,12,10,1,0,8,120,152,24,24,24,24, + 24,24,24,24,254,7,11,11,9,1,0,60,102,230,6,4, + 8,16,34,66,126,254,7,11,11,9,1,0,60,102,230,6, + 8,28,6,6,6,140,120,8,12,12,9,0,0,6,14,14, + 22,22,38,102,70,255,6,6,31,7,11,11,10,1,0,126, + 124,64,64,124,134,6,6,6,134,124,8,12,12,10,1,0, + 14,56,112,96,192,254,195,195,195,195,98,60,8,11,11,10, + 1,0,255,254,130,6,4,12,8,24,24,48,96,8,11,11, + 10,1,0,60,102,102,102,124,62,71,195,195,195,60,8,11, + 11,10,1,0,60,70,195,195,195,195,63,2,6,12,112,3, + 9,9,5,1,0,224,224,192,0,0,0,224,224,192,3,13, + 13,5,1,252,224,224,64,0,0,0,0,96,224,96,96,64, + 128,8,7,7,9,0,2,1,15,60,96,248,31,3,8,4, + 4,9,0,3,127,128,0,255,8,7,7,9,0,2,96,248, + 15,7,30,120,192,7,14,14,9,1,0,60,70,198,134,6, + 12,8,16,16,16,0,56,56,56,14,17,34,16,1,252,7, + 192,31,240,56,56,32,8,99,164,68,100,204,100,204,100,204, + 100,204,100,204,104,199,248,103,112,112,8,56,24,31,240,15, + 192,12,12,24,12,0,0,6,0,14,0,15,0,11,0,27, + 0,19,128,17,128,63,128,33,192,32,192,96,224,241,240,9, + 12,24,11,1,0,254,0,99,0,99,0,99,0,98,0,126, + 0,99,128,97,128,97,128,97,128,97,128,254,0,9,12,24, + 11,1,0,31,0,99,128,65,0,192,0,192,0,192,0,192, + 0,192,0,192,0,97,128,127,0,60,0,10,12,24,12,1, + 0,254,0,99,128,97,128,96,192,96,192,96,192,96,192,96, + 192,96,192,97,128,99,0,254,0,10,12,24,10,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,9,12,24,10,0,0,255,128,48, + 128,48,128,48,0,48,0,63,0,50,0,48,0,48,0,48, + 0,48,0,252,0,10,12,24,11,1,0,31,128,33,128,65, + 0,64,0,192,0,192,0,192,0,195,192,193,128,65,128,97, + 128,31,0,11,12,24,13,1,0,241,224,96,192,96,192,96, + 192,96,192,127,192,96,192,96,192,96,192,96,192,96,192,241, + 224,4,12,12,6,1,0,240,96,96,96,96,96,96,96,96, + 96,96,240,8,16,16,6,253,252,31,6,6,6,6,6,6, + 6,6,6,6,6,6,68,124,240,11,12,24,12,1,0,243, + 192,99,0,99,0,102,0,108,0,120,0,124,0,110,0,103, + 0,99,0,97,128,241,224,8,12,12,10,1,0,240,96,96, + 96,96,96,96,96,96,97,97,255,15,12,24,16,0,0,112, + 30,56,28,56,28,60,60,44,44,44,108,38,76,38,204,35, + 140,35,140,35,140,241,30,11,12,24,13,1,0,224,224,112, + 64,112,64,120,64,92,64,78,64,78,64,71,64,67,192,65, + 192,65,192,224,192,10,12,24,12,1,0,30,0,33,128,65, + 128,64,192,192,192,192,192,192,192,192,192,192,128,96,128,97, + 0,30,0,9,12,24,11,1,0,254,0,99,0,97,128,97, + 128,97,128,97,0,126,0,96,0,96,0,96,0,96,0,248, + 0,12,15,30,12,1,253,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,192,96,128,33,0,30,0,3, + 144,1,240,0,96,11,12,24,12,1,0,254,0,99,128,97, + 128,97,128,97,128,127,0,126,0,102,0,99,0,99,128,97, + 192,241,224,8,12,12,10,1,0,62,198,128,128,240,124,30, + 7,3,131,194,252,10,12,24,11,0,0,255,192,140,64,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,30,0,11,12,24,13,1,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,128,48,128,31, + 0,12,12,24,13,0,0,248,240,112,96,48,64,56,64,24, + 192,24,128,28,128,13,128,15,0,7,0,7,0,6,0,16, + 12,24,16,0,0,248,143,49,134,49,196,49,196,51,196,58, + 108,26,108,30,120,28,56,28,56,12,24,8,16,12,12,24, + 12,0,0,249,224,48,192,56,128,29,0,15,0,14,0,15, + 0,11,0,27,128,49,192,32,224,241,240,11,12,24,12,0, + 0,241,224,48,192,24,128,29,128,13,0,15,0,6,0,6, + 0,6,0,6,0,6,0,15,0,10,12,24,10,0,0,127, + 192,67,128,67,0,7,0,6,0,14,0,28,0,24,0,56, + 0,48,64,112,192,255,192,5,18,18,6,1,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,9, + 18,36,9,0,253,192,0,96,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,12,0,12,0,4,0,6,0,6, + 0,2,0,3,0,3,0,1,128,5,18,18,6,0,253,248, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 248,7,9,9,9,1,5,16,24,40,44,44,68,70,130,130, + 9,1,2,9,0,254,255,128,4,4,4,6,0,10,192,96, + 48,16,8,9,9,9,1,0,60,102,198,14,126,198,198,207, + 118,9,14,28,10,0,0,96,0,224,0,96,0,96,0,96, + 0,103,0,127,0,112,128,96,128,96,128,96,128,97,0,126, + 0,60,0,7,9,9,9,1,0,62,70,196,192,192,192,194, + 124,56,9,14,28,11,1,0,7,0,3,0,3,0,3,0, + 3,0,63,0,67,0,195,0,195,0,195,0,195,0,227,0, + 127,128,59,0,7,9,9,9,1,0,60,100,198,198,254,192, + 226,124,56,7,14,14,6,1,0,30,38,96,96,96,252,96, + 96,96,96,96,96,96,248,10,13,26,10,0,252,60,192,67, + 0,195,0,195,0,226,0,60,0,112,0,124,0,127,128,195, + 128,193,128,193,0,62,0,9,14,28,10,1,0,96,0,224, + 0,96,0,96,0,96,0,102,0,127,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,4,12,12,6,1,0,48, + 112,0,96,224,96,96,96,96,96,96,240,7,16,16,5,253, + 252,14,14,0,12,28,12,12,12,12,12,12,12,12,136,248, + 224,10,14,28,10,1,0,96,0,224,0,96,0,96,0,96, + 0,103,128,99,0,100,0,104,0,124,0,110,0,102,0,99, + 0,243,192,5,14,14,6,0,0,48,240,48,48,48,48,48, + 48,48,48,48,48,48,248,14,9,18,16,1,0,110,112,255, + 248,115,152,99,24,99,24,99,24,99,24,99,24,247,188,9, + 9,18,10,1,0,102,0,255,0,115,0,99,0,99,0,99, + 0,99,0,99,0,247,128,8,9,9,10,1,0,60,70,195, + 195,195,195,194,98,60,9,13,26,11,1,252,103,0,255,0, + 97,128,97,128,97,128,97,128,97,0,127,0,110,0,96,0, + 96,0,96,0,248,0,9,13,26,10,1,252,29,0,103,0, + 195,0,195,0,195,0,195,0,199,0,127,0,59,0,3,0, + 3,0,3,0,15,128,8,9,9,8,0,0,55,255,57,49, + 48,48,48,48,252,6,9,9,8,1,0,240,152,144,224,120, + 28,132,196,248,6,12,12,7,1,0,32,96,96,252,96,96, + 96,96,96,100,124,48,10,9,18,11,0,0,227,128,97,128, + 97,128,97,128,97,128,97,128,99,128,127,192,57,128,10,9, + 18,10,0,0,241,192,97,128,49,0,51,0,58,0,26,0, + 30,0,12,0,8,0,14,9,18,14,0,0,241,60,99,24, + 51,144,51,144,53,176,60,224,28,224,24,96,24,64,10,9, + 18,10,0,0,251,192,113,0,58,0,28,0,12,0,30,0, + 55,0,35,128,247,192,11,13,26,10,255,252,121,224,56,128, + 24,128,25,128,13,0,13,0,14,0,6,0,6,0,4,0, + 12,0,120,0,240,0,7,9,9,9,1,0,254,142,156,24, + 56,48,98,226,254,5,18,18,6,1,253,24,48,96,96,96, + 48,48,48,96,224,48,48,48,96,96,96,48,24,1,20,20, + 4,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,18,18,6,0,253,64,224,48, + 48,48,48,48,48,28,24,48,48,48,48,48,48,96,192,9, + 4,8,9,0,4,48,0,125,128,79,0,134,0,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,5,0,0,3,14,14,6,1,251,96,224,64,0,96,96, + 96,96,96,96,96,96,96,64,7,12,12,10,2,0,16,16, + 62,86,144,144,144,144,86,124,16,16,9,11,22,10,0,0, + 15,128,49,128,49,0,112,0,112,0,254,0,112,0,112,0, + 96,128,123,128,255,0,8,7,7,10,1,2,255,66,66,66, + 66,102,255,10,11,22,10,0,0,227,192,113,0,51,0,26, + 0,26,0,12,0,127,128,12,0,12,0,12,0,30,0,1, + 20,20,4,2,252,128,128,128,128,128,128,128,128,128,0,0, + 128,128,128,128,128,128,128,128,128,8,13,13,10,1,0,120, + 152,136,240,190,135,193,113,62,14,34,50,62,6,3,3,7, + 0,10,236,252,220,12,13,26,14,1,0,15,0,48,192,64, + 32,143,32,145,16,145,16,144,16,144,16,144,16,136,160,79, + 32,32,64,31,128,5,7,7,5,0,5,112,208,112,144,248, + 0,240,8,9,9,10,1,0,17,34,102,204,220,204,102,34, + 17,8,4,4,10,1,2,255,1,1,1,6,1,1,7,0, + 4,252,7,7,7,7,0,7,56,68,186,170,178,108,56,8, + 2,2,9,1,11,255,254,5,5,5,7,1,7,112,136,136, + 136,112,8,9,9,8,0,1,8,8,8,127,8,8,8,0, + 255,4,7,7,7,2,6,112,208,16,32,64,144,240,5,7, + 7,6,0,6,56,104,8,24,8,136,112,4,4,4,6,2, + 10,48,96,192,128,10,13,26,11,1,252,99,0,227,0,99, + 0,99,0,99,0,99,0,103,0,127,128,91,64,64,0,64, + 0,96,0,112,0,9,14,28,11,1,254,63,128,101,0,197, + 0,197,0,197,0,101,0,61,0,5,0,5,0,5,0,5, + 0,5,0,5,0,15,128,3,3,3,4,0,5,224,224,192, + 3,4,4,4,1,252,64,96,96,192,5,7,7,7,1,6, + 32,224,32,32,32,32,248,4,7,7,5,0,5,96,144,144, + 144,96,0,240,8,9,9,10,1,0,136,76,102,55,51,55, + 102,76,136,11,11,22,12,1,0,64,64,192,128,65,0,67, + 0,70,0,228,0,8,192,25,64,50,64,35,224,192,224,10, + 11,22,12,1,0,64,64,192,128,65,0,65,0,66,0,228, + 192,9,64,26,128,16,128,33,64,99,192,11,11,22,11,0, + 0,96,32,208,64,32,128,145,128,227,0,2,0,4,192,13, + 64,25,64,19,224,96,224,7,14,14,9,1,251,56,56,48, + 0,16,16,16,32,96,192,194,198,196,120,12,16,32,12,0, + 0,24,0,28,0,3,0,0,0,6,0,14,0,15,0,11, + 0,27,0,19,128,17,128,63,128,33,192,32,192,96,224,241, + 240,12,16,32,12,0,0,1,0,7,128,12,0,0,0,6, + 0,14,0,15,0,11,0,27,0,19,128,17,128,63,128,33, + 192,32,192,96,224,241,240,12,16,32,12,0,0,6,0,15, + 0,16,128,0,0,6,0,14,0,15,0,11,0,27,0,19, + 128,17,128,63,128,33,192,32,192,96,224,241,240,12,16,32, + 12,0,0,12,192,31,128,35,0,0,0,6,0,14,0,15, + 0,11,0,27,0,19,128,17,128,63,128,33,192,32,192,96, + 224,241,240,12,16,32,12,0,0,27,0,27,128,27,0,0, + 0,6,0,14,0,15,0,11,0,27,0,19,128,17,128,63, + 128,33,192,32,192,96,224,241,240,12,17,34,12,0,0,6, + 0,9,0,17,0,14,0,0,0,6,0,14,0,15,0,11, + 0,27,0,19,128,17,128,63,128,33,192,32,192,96,224,241, + 240,15,12,24,15,0,0,31,252,5,132,5,132,13,128,9, + 128,31,248,17,144,17,128,49,128,33,130,97,132,243,252,9, + 16,32,11,1,252,31,0,99,128,65,0,192,0,192,0,192, + 0,192,0,192,0,192,0,96,128,59,128,30,0,8,0,6, + 0,14,0,28,0,10,16,32,10,0,0,48,0,56,0,6, + 0,0,0,255,128,48,128,48,128,48,0,48,0,63,0,50, + 0,48,0,48,0,48,64,48,128,255,128,10,16,32,10,0, + 0,3,0,7,0,24,0,0,0,255,128,48,128,48,128,48, + 0,48,0,63,0,50,0,48,0,48,0,48,64,48,128,255, + 128,10,16,32,10,0,0,12,0,30,0,33,0,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,10,16,32,10,0,0,51,0,63, + 0,54,0,0,0,255,128,48,128,48,128,48,0,48,0,63, + 0,50,0,48,0,48,0,48,64,48,128,255,128,5,16,16, + 6,0,0,192,224,24,0,120,48,48,48,48,48,48,48,48, + 48,48,120,5,16,16,6,1,0,24,56,192,0,240,96,96, + 96,96,96,96,96,96,96,96,240,6,16,16,6,0,0,48, + 120,132,0,120,48,48,48,48,48,48,48,48,48,48,120,6, + 16,16,6,0,0,204,252,216,0,120,48,48,48,48,48,48, + 48,48,48,48,120,10,12,24,12,1,0,254,0,99,128,97, + 128,96,192,96,192,248,192,96,192,96,192,96,192,97,128,99, + 0,254,0,11,16,32,13,1,0,28,128,63,0,39,0,0, + 0,224,224,112,64,112,64,120,64,92,64,78,64,78,64,71, + 64,67,192,65,192,65,192,224,192,10,16,32,12,1,0,48, + 0,56,0,6,0,0,0,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,128,96,128,97,0,30,0,10, + 16,32,12,1,0,2,0,15,0,24,0,0,0,30,0,33, + 128,65,128,64,192,192,192,192,192,192,192,192,192,192,128,96, + 128,97,0,30,0,10,16,32,12,1,0,12,0,30,0,33, + 0,0,0,30,0,33,128,65,128,64,192,192,192,192,192,192, + 192,192,192,192,128,96,128,97,0,30,0,10,16,32,12,1, + 0,25,128,63,0,70,0,0,0,30,0,33,128,65,128,64, + 192,192,192,192,192,192,192,192,192,192,128,96,128,97,0,30, + 0,10,16,32,12,1,0,55,0,55,0,54,0,0,0,30, + 0,33,128,65,128,64,192,192,192,192,192,192,192,192,192,192, + 128,96,128,97,0,30,0,6,6,6,8,1,2,132,72,48, + 48,72,132,10,12,24,12,1,0,30,192,33,128,97,128,67, + 192,198,192,196,192,200,192,216,192,240,128,97,128,97,0,222, + 0,11,16,32,13,1,0,16,0,60,0,6,0,0,0,240, + 224,96,64,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,128,48,128,31,0,11,16,32,13,1,0,3,0,7, + 128,12,0,0,0,240,224,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,128,48,128,31,0,11,16,32, + 13,1,0,12,0,30,0,49,0,0,128,240,224,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,96,128,48, + 128,31,0,11,16,32,13,1,0,27,0,63,0,51,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,128,48,128,31,0,11,16,32,12,0,0,1, + 0,7,128,12,0,0,0,241,224,48,192,24,128,29,128,13, + 0,15,0,6,0,6,0,6,0,6,0,6,0,15,0,9, + 12,24,11,1,0,248,0,96,0,126,0,99,0,97,128,97, + 128,97,128,97,128,113,0,110,0,96,0,248,0,9,14,28, + 12,1,0,14,0,51,0,33,128,97,128,97,128,103,0,108, + 0,108,0,102,0,99,0,97,128,104,128,104,128,239,0,8, + 14,14,9,1,0,112,48,24,8,0,60,102,198,14,126,198, + 198,207,118,8,14,14,9,1,0,14,12,24,48,0,60,102, + 198,14,126,198,198,207,118,8,14,14,9,1,0,24,60,108, + 66,0,60,102,198,14,126,198,198,207,118,8,13,13,9,1, + 0,114,126,140,0,60,102,198,14,126,198,198,207,118,8,13, + 13,9,1,0,108,110,108,0,60,102,198,14,126,198,198,207, + 118,8,14,14,9,1,0,56,68,72,56,0,60,102,198,14, + 126,198,198,207,118,12,9,18,14,1,0,29,192,111,32,198, + 48,166,48,63,240,70,0,199,16,251,224,113,192,8,13,13, + 9,1,252,62,70,196,192,192,192,194,127,60,16,12,28,48, + 7,14,14,9,1,0,112,48,24,8,0,60,100,198,198,254, + 192,226,124,56,7,14,14,9,1,0,14,12,24,16,0,60, + 100,198,198,254,192,226,124,56,7,14,14,9,1,0,24,60, + 100,66,0,60,100,198,198,254,192,226,124,56,7,13,13,9, + 1,0,110,126,108,0,60,100,198,198,254,192,226,124,56,5, + 14,14,6,0,0,224,96,48,16,0,48,112,48,48,48,48, + 48,48,120,5,14,14,6,1,0,56,48,96,64,0,96,224, + 96,96,96,96,96,96,240,6,14,14,6,0,0,48,120,200, + 132,0,48,112,48,48,48,48,48,48,120,6,13,13,6,0, + 0,220,220,216,0,48,112,48,48,48,48,48,48,120,8,14, + 14,10,1,0,48,255,28,102,6,63,71,195,195,195,195,194, + 102,60,9,13,26,11,1,0,57,0,63,0,78,0,0,0, + 102,0,255,0,115,0,99,0,99,0,99,0,99,0,99,0, + 247,128,8,14,14,10,1,0,48,112,24,12,0,60,70,195, + 195,195,195,194,98,60,8,14,14,10,1,0,6,12,24,16, + 0,60,70,195,195,195,195,194,98,60,8,14,14,10,1,0, + 24,60,38,66,0,60,70,195,195,195,195,194,98,60,8,13, + 13,10,1,0,57,126,76,0,60,70,195,195,195,195,194,98, + 60,8,13,13,10,1,0,118,126,108,0,60,70,195,195,195, + 195,194,98,60,8,7,7,8,0,2,8,8,0,127,128,8, + 8,8,9,9,10,1,0,63,102,71,203,219,211,226,102,252, + 10,14,28,11,0,0,24,0,60,0,12,0,6,0,0,0, + 227,128,97,128,97,128,97,128,97,128,97,128,99,128,127,192, + 57,128,10,14,28,11,0,0,3,0,7,0,4,0,8,0, + 0,0,227,128,97,128,97,128,97,128,97,128,97,128,99,128, + 127,192,57,128,10,14,28,11,0,0,12,0,14,0,27,0, + 33,0,0,0,227,128,97,128,97,128,97,128,97,128,97,128, + 99,128,127,192,57,128,10,13,26,11,0,0,27,0,63,0, + 51,0,0,0,227,128,97,128,97,128,97,128,97,128,97,128, + 99,128,127,192,57,128,11,18,36,10,255,252,3,128,3,0, + 6,0,4,0,0,0,121,224,56,128,24,128,25,128,13,0, + 13,0,14,0,6,0,6,0,4,0,12,0,120,0,240,0, + 9,18,36,11,1,252,96,0,224,0,96,0,96,0,96,0, + 103,0,111,0,113,128,97,128,97,128,97,128,97,0,127,0, + 110,0,96,0,96,0,96,0,248,0,11,17,34,10,255,252, + 25,128,31,128,27,0,0,0,121,224,56,128,24,128,25,128, + 13,0,13,0,14,0,6,0,6,0,4,0,12,0,120,0, + 240,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 12 + Calculated Max Values w= 9 h=18 x= 1 y= 7 dx=10 dy= 0 ascent=15 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12n[286] U8G_SECTION(".progmem.u8g_font_gdb12n") = { + 0,29,28,246,249,12,0,0,0,0,42,57,0,15,252,12, + 0,7,7,7,8,1,7,48,180,222,48,222,148,48,7,7, + 7,8,1,2,16,16,16,254,16,16,16,3,6,6,5,1, + 252,96,224,96,96,64,128,6,1,1,7,0,4,252,3,3, + 3,5,1,0,224,224,192,9,18,36,9,0,253,1,128,3, + 0,3,0,3,0,6,0,6,0,4,0,12,0,12,0,24, + 0,24,0,16,0,48,0,48,0,32,0,96,0,96,0,192, + 0,8,11,11,10,1,0,60,102,66,195,195,195,195,195,66, + 98,60,7,12,12,10,1,0,8,120,152,24,24,24,24,24, + 24,24,24,254,7,11,11,9,1,0,60,102,230,6,4,8, + 16,34,66,126,254,7,11,11,9,1,0,60,102,230,6,8, + 28,6,6,6,140,120,8,12,12,9,0,0,6,14,14,22, + 22,38,102,70,255,6,6,31,7,11,11,10,1,0,126,124, + 64,64,124,134,6,6,6,134,124,8,12,12,10,1,0,14, + 56,112,96,192,254,195,195,195,195,98,60,8,11,11,10,1, + 0,255,254,130,6,4,12,8,24,24,48,96,8,11,11,10, + 1,0,60,102,102,102,124,62,71,195,195,195,60,8,11,11, + 10,1,0,60,70,195,195,195,195,63,2,6,12,112}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--19-190-72-72-P-94-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=10 dx=16 dy= 0 ascent=16 len=36 + Font Bounding box w=29 h=28 x=-10 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb12r[2190] U8G_SECTION(".progmem.u8g_font_gdb12r") = { + 0,29,28,246,249,12,2,113,5,210,32,127,252,16,252,15, + 252,0,0,0,5,0,0,3,14,14,6,1,0,32,96,96, + 96,96,96,96,96,96,96,0,224,224,192,7,6,6,9,1, + 8,102,236,108,76,68,68,9,11,22,10,1,1,27,0,26, + 0,18,0,127,128,54,0,36,0,36,0,255,0,104,0,72, + 0,88,0,8,15,15,9,0,254,8,8,63,75,74,104,60, + 30,11,137,73,235,126,8,8,12,12,24,14,1,0,112,32, + 144,64,136,128,137,128,139,0,146,0,100,224,13,16,25,16, + 17,16,33,16,96,224,12,13,26,13,1,0,30,0,35,0, + 99,0,99,0,118,0,124,0,120,240,252,64,222,64,207,64, + 199,128,193,192,62,240,3,6,6,5,1,8,96,224,96,64, + 64,64,4,18,18,6,1,253,16,48,96,96,64,192,192,192, + 192,192,192,192,192,192,96,96,48,16,4,18,18,6,1,253, + 128,192,96,96,48,48,48,48,48,48,48,48,48,32,96,96, + 192,128,7,7,7,8,1,7,48,180,222,48,222,148,48,7, + 7,7,8,1,2,16,16,16,254,16,16,16,3,6,6,5, + 1,252,96,224,96,96,64,128,6,1,1,7,0,4,252,3, + 3,3,5,1,0,224,224,192,9,18,36,9,0,253,1,128, + 3,0,3,0,3,0,6,0,6,0,4,0,12,0,12,0, + 24,0,24,0,16,0,48,0,48,0,32,0,96,0,96,0, + 192,0,8,11,11,10,1,0,60,102,66,195,195,195,195,195, + 66,98,60,7,12,12,10,1,0,8,120,152,24,24,24,24, + 24,24,24,24,254,7,11,11,9,1,0,60,102,230,6,4, + 8,16,34,66,126,254,7,11,11,9,1,0,60,102,230,6, + 8,28,6,6,6,140,120,8,12,12,9,0,0,6,14,14, + 22,22,38,102,70,255,6,6,31,7,11,11,10,1,0,126, + 124,64,64,124,134,6,6,6,134,124,8,12,12,10,1,0, + 14,56,112,96,192,254,195,195,195,195,98,60,8,11,11,10, + 1,0,255,254,130,6,4,12,8,24,24,48,96,8,11,11, + 10,1,0,60,102,102,102,124,62,71,195,195,195,60,8,11, + 11,10,1,0,60,70,195,195,195,195,63,2,6,12,112,3, + 9,9,5,1,0,224,224,192,0,0,0,224,224,192,3,13, + 13,5,1,252,224,224,64,0,0,0,0,96,224,96,96,64, + 128,8,7,7,9,0,2,1,15,60,96,248,31,3,8,4, + 4,9,0,3,127,128,0,255,8,7,7,9,0,2,96,248, + 15,7,30,120,192,7,14,14,9,1,0,60,70,198,134,6, + 12,8,16,16,16,0,56,56,56,14,17,34,16,1,252,7, + 192,31,240,56,56,32,8,99,164,68,100,204,100,204,100,204, + 100,204,100,204,104,199,248,103,112,112,8,56,24,31,240,15, + 192,12,12,24,12,0,0,6,0,14,0,15,0,11,0,27, + 0,19,128,17,128,63,128,33,192,32,192,96,224,241,240,9, + 12,24,11,1,0,254,0,99,0,99,0,99,0,98,0,126, + 0,99,128,97,128,97,128,97,128,97,128,254,0,9,12,24, + 11,1,0,31,0,99,128,65,0,192,0,192,0,192,0,192, + 0,192,0,192,0,97,128,127,0,60,0,10,12,24,12,1, + 0,254,0,99,128,97,128,96,192,96,192,96,192,96,192,96, + 192,96,192,97,128,99,0,254,0,10,12,24,10,0,0,255, + 128,48,128,48,128,48,0,48,0,63,0,50,0,48,0,48, + 0,48,64,48,128,255,128,9,12,24,10,0,0,255,128,48, + 128,48,128,48,0,48,0,63,0,50,0,48,0,48,0,48, + 0,48,0,252,0,10,12,24,11,1,0,31,128,33,128,65, + 0,64,0,192,0,192,0,192,0,195,192,193,128,65,128,97, + 128,31,0,11,12,24,13,1,0,241,224,96,192,96,192,96, + 192,96,192,127,192,96,192,96,192,96,192,96,192,96,192,241, + 224,4,12,12,6,1,0,240,96,96,96,96,96,96,96,96, + 96,96,240,8,16,16,6,253,252,31,6,6,6,6,6,6, + 6,6,6,6,6,6,68,124,240,11,12,24,12,1,0,243, + 192,99,0,99,0,102,0,108,0,120,0,124,0,110,0,103, + 0,99,0,97,128,241,224,8,12,12,10,1,0,240,96,96, + 96,96,96,96,96,96,97,97,255,15,12,24,16,0,0,112, + 30,56,28,56,28,60,60,44,44,44,108,38,76,38,204,35, + 140,35,140,35,140,241,30,11,12,24,13,1,0,224,224,112, + 64,112,64,120,64,92,64,78,64,78,64,71,64,67,192,65, + 192,65,192,224,192,10,12,24,12,1,0,30,0,33,128,65, + 128,64,192,192,192,192,192,192,192,192,192,192,128,96,128,97, + 0,30,0,9,12,24,11,1,0,254,0,99,0,97,128,97, + 128,97,128,97,0,126,0,96,0,96,0,96,0,96,0,248, + 0,12,15,30,12,1,253,30,0,33,128,65,128,64,192,192, + 192,192,192,192,192,192,192,192,192,96,128,33,0,30,0,3, + 144,1,240,0,96,11,12,24,12,1,0,254,0,99,128,97, + 128,97,128,97,128,127,0,126,0,102,0,99,0,99,128,97, + 192,241,224,8,12,12,10,1,0,62,198,128,128,240,124,30, + 7,3,131,194,252,10,12,24,11,0,0,255,192,140,64,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,30,0,11,12,24,13,1,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,128,48,128,31, + 0,12,12,24,13,0,0,248,240,112,96,48,64,56,64,24, + 192,24,128,28,128,13,128,15,0,7,0,7,0,6,0,16, + 12,24,16,0,0,248,143,49,134,49,196,49,196,51,196,58, + 108,26,108,30,120,28,56,28,56,12,24,8,16,12,12,24, + 12,0,0,249,224,48,192,56,128,29,0,15,0,14,0,15, + 0,11,0,27,128,49,192,32,224,241,240,11,12,24,12,0, + 0,241,224,48,192,24,128,29,128,13,0,15,0,6,0,6, + 0,6,0,6,0,6,0,15,0,10,12,24,10,0,0,127, + 192,67,128,67,0,7,0,6,0,14,0,28,0,24,0,56, + 0,48,64,112,192,255,192,5,18,18,6,1,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,248,9, + 18,36,9,0,253,192,0,96,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,12,0,12,0,4,0,6,0,6, + 0,2,0,3,0,3,0,1,128,5,18,18,6,0,253,248, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 248,7,9,9,9,1,5,16,24,40,44,44,68,70,130,130, + 9,1,2,9,0,254,255,128,4,4,4,6,0,10,192,96, + 48,16,8,9,9,9,1,0,60,102,198,14,126,198,198,207, + 118,9,14,28,10,0,0,96,0,224,0,96,0,96,0,96, + 0,103,0,127,0,112,128,96,128,96,128,96,128,97,0,126, + 0,60,0,7,9,9,9,1,0,62,70,196,192,192,192,194, + 124,56,9,14,28,11,1,0,7,0,3,0,3,0,3,0, + 3,0,63,0,67,0,195,0,195,0,195,0,195,0,227,0, + 127,128,59,0,7,9,9,9,1,0,60,100,198,198,254,192, + 226,124,56,7,14,14,6,1,0,30,38,96,96,96,252,96, + 96,96,96,96,96,96,248,10,13,26,10,0,252,60,192,67, + 0,195,0,195,0,226,0,60,0,112,0,124,0,127,128,195, + 128,193,128,193,0,62,0,9,14,28,10,1,0,96,0,224, + 0,96,0,96,0,96,0,102,0,127,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,4,12,12,6,1,0,48, + 112,0,96,224,96,96,96,96,96,96,240,7,16,16,5,253, + 252,14,14,0,12,28,12,12,12,12,12,12,12,12,136,248, + 224,10,14,28,10,1,0,96,0,224,0,96,0,96,0,96, + 0,103,128,99,0,100,0,104,0,124,0,110,0,102,0,99, + 0,243,192,5,14,14,6,0,0,48,240,48,48,48,48,48, + 48,48,48,48,48,48,248,14,9,18,16,1,0,110,112,255, + 248,115,152,99,24,99,24,99,24,99,24,99,24,247,188,9, + 9,18,10,1,0,102,0,255,0,115,0,99,0,99,0,99, + 0,99,0,99,0,247,128,8,9,9,10,1,0,60,70,195, + 195,195,195,194,98,60,9,13,26,11,1,252,103,0,255,0, + 97,128,97,128,97,128,97,128,97,0,127,0,110,0,96,0, + 96,0,96,0,248,0,9,13,26,10,1,252,29,0,103,0, + 195,0,195,0,195,0,195,0,199,0,127,0,59,0,3,0, + 3,0,3,0,15,128,8,9,9,8,0,0,55,255,57,49, + 48,48,48,48,252,6,9,9,8,1,0,240,152,144,224,120, + 28,132,196,248,6,12,12,7,1,0,32,96,96,252,96,96, + 96,96,96,100,124,48,10,9,18,11,0,0,227,128,97,128, + 97,128,97,128,97,128,97,128,99,128,127,192,57,128,10,9, + 18,10,0,0,241,192,97,128,49,0,51,0,58,0,26,0, + 30,0,12,0,8,0,14,9,18,14,0,0,241,60,99,24, + 51,144,51,144,53,176,60,224,28,224,24,96,24,64,10,9, + 18,10,0,0,251,192,113,0,58,0,28,0,12,0,30,0, + 55,0,35,128,247,192,11,13,26,10,255,252,121,224,56,128, + 24,128,25,128,13,0,13,0,14,0,6,0,6,0,4,0, + 12,0,120,0,240,0,7,9,9,9,1,0,254,142,156,24, + 56,48,98,226,254,5,18,18,6,1,253,24,48,96,96,96, + 48,48,48,96,224,48,48,48,96,96,96,48,24,1,20,20, + 4,2,252,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,6,18,18,6,0,253,64,224,48, + 48,48,48,48,48,28,24,48,48,48,48,48,48,96,192,9, + 4,8,9,0,4,48,0,125,128,79,0,134,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=19 h=24 x= 2 y=13 dx=20 dy= 0 ascent=20 len=60 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14[6044] U8G_SECTION(".progmem.u8g_font_gdb14") = { + 0,36,33,244,248,14,3,134,7,177,32,255,251,20,250,18, + 251,0,0,0,6,0,0,4,17,17,7,2,0,96,224,224, + 224,224,224,224,224,224,64,64,64,0,0,96,240,224,7,8, + 8,11,2,9,102,238,206,206,198,198,198,196,11,13,26,12, + 1,1,12,192,12,128,9,128,127,224,25,0,19,0,19,0, + 51,0,255,128,38,0,38,0,100,0,140,0,10,18,36,12, + 1,254,12,0,12,0,63,128,127,192,205,128,204,128,236,0, + 124,0,63,0,15,128,13,192,140,192,140,192,204,192,255,128, + 127,0,12,0,12,0,15,14,28,17,1,0,56,24,76,16, + 198,48,198,96,198,192,199,128,101,128,59,56,6,68,12,198, + 12,198,24,198,48,100,96,56,15,16,32,16,1,0,15,0, + 17,128,49,128,49,128,51,0,62,0,60,0,28,254,124,120, + 126,48,207,48,199,160,195,224,193,240,97,252,62,56,3,8, + 8,6,2,9,96,224,192,192,192,192,192,192,5,22,22,8, + 2,252,8,24,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,96,96,96,48,24,8,5,22,22,8,1,252,128,192, + 96,48,48,48,24,24,24,24,24,24,24,24,24,24,48,48, + 48,96,192,128,9,10,20,10,1,8,24,0,24,0,219,0, + 255,128,60,0,62,0,255,0,219,0,24,0,24,0,8,8, + 8,10,1,2,24,24,24,255,24,24,24,24,4,7,7,6, + 1,252,48,240,48,48,32,96,64,7,1,1,8,1,5,254, + 4,3,3,6,1,0,96,240,224,11,22,44,11,0,252,0, + 96,0,192,0,192,1,128,1,128,3,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,24,0,56, + 0,48,0,48,0,96,0,96,0,192,0,10,14,28,12,1, + 0,30,0,51,0,97,128,97,128,225,192,225,192,225,192,225, + 192,225,192,225,192,97,128,97,128,51,0,30,0,8,14,14, + 12,2,0,8,120,248,24,24,24,24,24,24,24,24,24,24, + 255,8,14,14,11,2,0,62,103,227,195,3,6,4,12,24, + 48,33,65,255,255,9,14,28,11,1,0,30,0,99,0,227, + 0,67,0,3,0,6,0,31,0,7,128,3,128,1,128,1, + 128,1,128,67,0,190,0,10,14,28,12,1,0,1,0,7, + 0,7,0,15,0,27,0,19,0,51,0,99,0,99,0,255, + 192,3,0,3,0,3,0,15,192,9,14,28,12,1,0,63, + 128,63,0,32,0,96,0,96,0,126,0,67,0,1,128,1, + 128,1,128,1,128,1,128,195,0,62,0,10,14,28,12,1, + 0,7,0,28,0,48,0,96,0,64,0,223,0,225,128,192, + 192,192,192,192,192,192,192,96,128,49,128,30,0,10,14,28, + 12,1,0,127,192,255,128,129,128,129,128,3,0,3,0,2, + 0,6,0,6,0,12,0,12,0,24,0,56,0,48,0,9, + 14,28,11,1,0,62,0,113,128,241,128,241,128,249,128,127, + 0,63,0,63,128,99,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,12,1,0,31,0,35,128,65,128,192,192,192, + 192,192,192,192,192,97,192,62,192,0,128,1,128,3,0,14, + 0,56,0,4,10,10,6,1,0,224,240,96,0,0,0,0, + 96,240,224,4,15,15,6,1,252,96,240,224,0,0,0,0, + 0,48,240,48,48,32,96,64,9,7,14,10,1,3,1,128, + 15,128,124,0,224,0,248,0,31,0,3,128,9,4,8,10, + 1,4,255,128,0,0,0,0,255,128,9,7,14,10,1,3, + 192,0,248,0,31,0,3,128,31,0,240,0,128,0,9,16, + 32,10,1,0,63,0,103,128,227,128,227,128,3,128,7,0, + 7,0,14,0,12,0,24,0,24,0,24,0,0,0,28,0, + 60,0,56,0,18,20,60,20,1,251,1,248,0,7,254,0, + 28,15,0,56,3,128,48,1,128,97,233,192,99,24,192,194, + 24,192,198,24,192,198,24,192,198,24,192,198,24,128,199,57, + 128,227,255,0,97,222,0,112,0,0,56,1,0,62,7,0, + 15,252,0,3,240,0,14,14,28,14,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,13,14,28,14,0,0,127,128, + 176,192,48,96,48,96,48,96,48,192,63,224,48,112,48,56, + 48,56,48,56,48,56,48,112,255,224,11,14,28,13,1,0, + 15,192,49,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,192,0,224,0,112,96,127,128,31,0,14,14,28,15, + 0,0,127,192,240,240,48,56,48,24,48,28,48,28,48,28, + 48,28,48,28,48,28,48,24,48,56,48,240,255,192,12,14, + 28,12,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 11,14,28,12,0,0,255,224,56,96,56,32,56,32,56,0, + 56,0,63,128,57,0,56,0,56,0,56,0,56,0,56,0, + 254,0,12,14,28,14,1,0,15,192,16,224,32,64,96,0, + 64,0,192,0,192,0,192,0,193,240,192,96,96,96,96,96, + 48,96,15,128,16,14,28,16,0,0,252,63,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,252,63,6,14,14,8,1,0,252,48,48,48, + 48,48,48,48,48,48,48,48,48,252,10,19,38,8,253,251, + 15,192,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 38,0,124,0,248,0,13,14,28,14,0,0,252,248,48,224, + 48,192,49,128,51,0,54,0,60,0,62,0,55,0,51,128, + 49,192,48,224,48,120,252,120,11,14,28,12,0,0,252,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,96,48,64,255,192,18,14,42,19,1,0, + 240,7,128,120,15,0,120,15,0,124,15,0,124,31,0,108, + 23,0,110,55,0,102,55,0,103,103,0,99,103,0,99,199, + 0,99,199,0,97,135,0,241,143,192,15,14,28,15,0,0, + 248,126,56,24,60,24,62,24,54,24,55,24,51,152,49,152, + 49,216,48,248,48,120,48,56,48,56,252,24,12,14,28,14, + 1,0,15,128,48,192,96,96,64,96,192,48,192,48,192,48, + 192,48,192,48,192,48,96,96,96,64,48,128,31,0,12,14, + 28,13,0,0,127,192,176,224,48,48,48,48,48,48,48,48, + 48,96,55,128,48,0,48,0,48,0,48,0,48,0,252,0, + 15,18,36,14,1,252,15,128,48,192,96,96,64,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 31,0,1,192,0,228,0,126,0,24,14,14,28,14,0,0, + 127,192,240,224,48,48,48,48,48,48,48,96,63,192,51,128, + 49,192,49,192,48,224,48,112,48,124,252,60,10,14,28,12, + 1,0,31,128,97,192,192,128,192,0,240,0,124,0,63,0, + 15,128,3,192,1,192,128,192,192,128,225,128,254,0,12,14, + 28,13,1,0,255,240,198,48,134,16,134,16,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 15,14,28,15,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,14,28,15,0,0,252,62,56,8,56,24,56,16, + 28,48,28,48,14,32,14,96,6,96,7,64,7,192,3,128, + 3,128,1,0,19,14,42,20,0,0,252,99,224,48,96,192, + 56,112,192,56,240,128,56,241,128,24,185,128,25,153,128,29, + 29,0,29,29,0,15,15,0,14,15,0,14,7,0,14,6, + 0,4,6,0,14,14,28,14,0,0,252,124,56,48,28,96, + 28,96,14,192,7,128,7,128,7,128,7,192,12,224,24,224, + 24,112,48,56,248,252,13,14,28,14,0,0,240,120,56,48, + 28,96,28,96,14,192,6,128,7,128,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,11,14,28,13,1,0,127,224, + 193,192,195,128,131,128,7,0,15,0,14,0,28,0,28,0, + 56,0,120,32,112,96,224,96,255,224,6,21,21,8,2,253, + 248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,252,10,22,44,11,0,252,192,0,96,0,96, + 0,48,0,48,0,48,0,24,0,24,0,28,0,12,0,12, + 0,6,0,6,0,6,0,3,0,3,0,3,0,1,128,1, + 128,1,192,0,192,0,192,5,21,21,7,1,253,248,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,248,9,11,22,11,1,6,8,0,12,0,28,0,22,0, + 54,0,34,0,35,0,99,0,65,128,65,128,129,128,10,1, + 2,11,1,253,255,192,5,5,5,7,0,12,224,224,112,56, + 8,10,10,20,11,1,0,62,0,99,0,227,0,3,0,63, + 0,99,0,195,0,195,0,255,192,123,0,11,17,34,12,0, + 0,96,0,224,0,96,0,96,0,96,0,96,0,96,0,119, + 128,127,192,112,224,96,96,96,96,96,96,96,64,96,192,127, + 128,30,0,9,10,20,10,1,0,31,0,99,128,65,0,192, + 0,192,0,192,0,192,0,225,0,127,128,60,0,12,17,34, + 13,1,0,0,192,3,192,0,192,0,192,0,192,0,192,0, + 192,31,192,33,192,64,192,192,192,192,192,192,192,192,192,97, + 192,127,240,60,192,9,10,20,11,1,0,30,0,99,0,65, + 128,193,128,255,128,192,0,192,0,225,128,127,0,62,0,9, + 17,34,8,0,0,7,128,25,0,16,0,48,0,48,0,48, + 0,48,0,126,0,176,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,124,0,11,15,30,12,1,251,30,96,35, + 192,97,128,97,128,97,128,115,0,62,0,48,0,124,0,63, + 128,111,192,192,192,192,192,225,128,62,0,12,17,34,13,1, + 0,48,0,240,0,48,0,48,0,48,0,48,0,48,0,51, + 128,63,192,56,192,48,192,48,192,48,192,48,192,48,192,48, + 192,249,240,5,15,15,7,1,0,48,112,48,0,0,112,240, + 48,48,48,48,48,48,48,248,7,20,20,6,254,251,6,14, + 6,0,0,6,14,6,6,6,6,6,6,6,6,6,6,68, + 248,240,12,17,34,13,1,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,49,240,49,192,51,0,54,0,62,0, + 55,0,51,128,49,192,49,224,248,240,6,17,17,7,1,0, + 48,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,18,10,30,19,1,0,103,142,0,255,255,0,112,227,0, + 96,195,0,96,195,0,96,195,0,96,195,0,96,195,0,96, + 195,0,241,231,192,12,10,20,13,1,0,51,128,247,192,56, + 192,48,192,48,192,48,192,48,192,48,192,48,192,249,240,10, + 10,20,12,1,0,30,0,33,128,65,128,192,192,192,192,192, + 192,192,192,96,128,113,0,30,0,11,15,30,13,1,251,51, + 128,255,192,56,224,48,96,48,96,48,96,48,96,48,192,63, + 128,55,0,48,0,48,0,48,0,48,0,252,0,11,15,30, + 13,1,251,30,64,97,192,64,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,0,192,0,192,0,192,0,192,3, + 224,9,10,20,10,1,0,119,128,255,128,121,128,113,0,112, + 0,112,0,112,0,112,0,112,0,252,0,8,10,10,10,1, + 0,126,198,198,240,124,63,135,131,194,252,8,14,14,9,0, + 0,16,48,48,48,127,176,48,48,48,48,48,50,63,24,12, + 10,20,13,1,0,97,192,224,192,96,192,96,192,96,192,96, + 192,96,192,97,192,127,240,60,192,12,10,20,12,0,0,248, + 240,112,64,56,192,56,128,28,128,29,128,13,0,15,0,6, + 0,6,0,16,10,20,17,0,0,248,135,112,194,49,198,57, + 230,59,100,27,124,30,124,14,56,12,56,12,16,12,10,20, + 12,0,0,253,240,56,192,29,128,31,0,14,0,15,0,27, + 128,17,192,33,224,243,240,13,15,30,12,255,251,124,120,56, + 32,28,96,28,64,14,192,14,192,6,128,7,128,7,0,3, + 0,3,0,6,0,70,0,124,0,248,0,9,10,20,11,1, + 0,255,128,199,0,135,0,14,0,28,0,60,0,57,0,112, + 128,225,128,255,128,5,22,22,8,2,252,24,48,96,96,96, + 96,48,48,48,48,96,224,48,48,48,48,96,96,96,96,48, + 24,2,24,24,5,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,5, + 22,22,8,1,252,192,96,48,48,48,48,96,96,96,96,56, + 48,96,96,96,96,48,48,48,48,96,192,10,4,8,11,1, + 5,48,64,124,128,159,0,135,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,6,0,0, + 4,16,16,7,1,250,112,240,96,0,32,32,32,112,112,112, + 112,112,112,112,112,96,10,14,28,12,1,0,12,0,12,0, + 31,128,125,192,108,128,204,0,204,0,204,0,204,0,236,192, + 127,128,63,0,12,0,12,0,11,14,28,12,0,0,7,192, + 12,224,24,64,24,64,56,0,56,0,56,0,127,0,184,0, + 56,0,56,32,48,32,127,224,255,224,10,9,18,12,1,2, + 128,64,94,128,51,0,97,128,97,128,97,128,51,128,94,128, + 128,64,12,14,28,12,0,0,241,240,120,192,56,192,29,128, + 29,128,13,0,15,0,6,0,63,192,6,0,6,0,6,0, + 6,0,31,128,2,24,24,5,2,251,192,192,192,192,192,192, + 192,192,192,192,128,0,0,64,192,192,192,192,192,192,192,192, + 192,192,9,16,32,11,1,0,62,0,99,0,99,0,112,0, + 60,0,127,0,199,128,195,128,225,128,121,128,63,0,31,0, + 71,0,67,0,99,0,126,0,7,3,3,9,1,12,198,238, + 198,15,15,30,17,1,0,7,192,24,48,48,24,99,204,108, + 236,200,70,216,6,216,6,216,6,216,6,108,44,103,204,48, + 24,24,48,7,192,6,7,7,6,0,7,120,216,24,248,216, + 252,248,9,10,20,12,1,0,8,128,17,128,51,0,103,0, + 238,0,238,0,103,0,51,0,17,128,8,128,10,5,10,12, + 1,2,255,192,0,192,0,192,0,192,0,192,7,1,1,8, + 1,5,254,8,8,8,8,0,8,60,66,157,149,153,153,86, + 60,9,2,4,11,1,13,255,128,255,128,6,5,5,8,1, + 9,56,76,204,200,112,8,10,10,9,1,2,24,24,24,24, + 255,24,24,24,0,255,6,8,8,8,1,7,120,204,140,24, + 16,32,68,252,6,8,8,8,1,7,56,204,140,56,12,12, + 140,120,6,5,5,7,2,12,56,60,112,96,192,12,15,30, + 13,1,251,96,192,225,192,96,192,96,192,96,192,96,192,96, + 192,113,192,127,240,110,192,96,0,96,0,112,0,112,0,96, + 0,14,17,34,14,0,253,31,252,113,176,225,176,225,176,225, + 176,225,176,113,176,31,176,1,176,1,176,1,176,1,176,1, + 176,1,176,1,176,1,176,7,252,4,3,3,5,0,6,96, + 240,224,4,5,5,5,1,251,32,96,48,48,224,6,8,8, + 8,1,7,48,240,48,48,48,48,48,252,5,7,7,6,0, + 7,112,216,216,216,216,112,248,10,10,20,12,1,0,196,0, + 102,0,99,0,51,128,57,192,61,192,49,128,99,0,102,0, + 196,0,12,14,28,14,1,0,48,16,240,48,48,96,48,192, + 48,128,49,128,255,0,6,96,4,224,13,224,25,96,19,240, + 48,96,96,240,12,14,28,14,1,0,48,48,240,96,48,192, + 48,192,49,128,51,0,254,0,6,240,13,48,26,48,16,96, + 48,192,97,144,195,240,14,14,28,15,0,0,56,8,76,24, + 40,48,60,96,12,64,140,192,121,128,3,24,2,56,6,88, + 12,88,8,252,24,24,48,60,9,16,32,11,1,250,28,0, + 30,0,12,0,0,0,12,0,12,0,12,0,24,0,56,0, + 112,0,96,0,224,0,227,128,227,128,231,0,126,0,14,20, + 40,14,0,0,8,0,28,0,15,0,3,128,0,0,0,0, + 1,0,7,128,7,128,5,128,13,192,12,192,8,224,24,224, + 31,224,16,112,48,112,48,48,32,56,248,124,14,20,40,14, + 0,0,0,128,0,224,3,192,7,0,0,0,0,0,1,0, + 7,128,7,128,5,128,13,192,12,192,8,224,24,224,31,224, + 16,112,48,112,48,48,32,56,248,124,14,20,40,14,0,0, + 3,0,7,128,15,192,12,96,16,0,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,14,19,38,14,0,0,4,32, + 15,240,27,192,0,0,0,0,1,0,7,128,7,128,5,128, + 13,192,12,192,8,224,24,224,31,224,16,112,48,112,48,48, + 32,56,248,124,14,19,38,14,0,0,8,64,28,224,24,224, + 0,0,0,0,1,0,7,128,7,128,5,128,13,192,12,192, + 8,224,24,224,31,224,16,112,48,112,48,48,32,56,248,124, + 14,20,40,14,0,0,1,128,6,192,6,192,7,128,0,0, + 0,0,1,0,7,128,7,128,5,128,13,192,12,192,8,224, + 24,224,31,224,16,112,48,112,48,48,32,56,248,124,18,14, + 42,19,0,0,7,255,128,1,225,128,3,96,128,3,96,128, + 6,96,0,6,96,0,7,255,0,12,98,0,12,96,0,24, + 96,0,24,96,0,48,96,64,48,96,192,249,255,128,11,19, + 38,13,1,251,15,192,49,192,96,128,64,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,112,96,63,192,31,128, + 4,0,6,0,3,0,3,0,12,0,12,20,40,12,0,0, + 16,0,56,0,30,0,7,0,0,0,0,0,255,224,56,96, + 56,96,56,64,56,0,56,0,63,192,56,128,56,0,56,0, + 56,0,56,48,56,32,255,224,12,20,40,12,0,0,1,0, + 1,192,7,128,14,0,0,0,0,0,255,224,56,96,56,96, + 56,64,56,0,56,0,63,192,56,128,56,0,56,0,56,0, + 56,48,56,32,255,224,12,20,40,12,0,0,6,0,15,0, + 31,128,48,192,0,0,0,0,255,224,56,96,56,96,56,64, + 56,0,56,0,63,192,56,128,56,0,56,0,56,0,56,48, + 56,32,255,224,12,19,38,12,0,0,16,128,49,192,49,192, + 0,0,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 7,20,20,8,0,0,64,224,112,24,4,0,126,24,24,24, + 24,24,24,24,24,24,24,24,24,126,7,20,20,8,1,0, + 8,30,60,96,128,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,252,7,20,20,8,0,0,16,56,124,198,0,0, + 126,24,24,24,24,24,24,24,24,24,24,24,24,126,8,19, + 19,8,255,0,65,99,227,0,0,63,12,12,12,12,12,12, + 12,12,12,12,12,12,63,14,14,28,15,0,0,127,192,240, + 240,48,56,48,24,48,28,48,28,254,28,48,28,48,28,48, + 28,48,24,48,56,48,240,255,192,15,19,38,15,0,0,2, + 32,15,240,11,224,16,0,0,0,248,126,56,24,60,24,62, + 24,54,24,55,24,51,152,49,152,49,216,48,248,48,120,48, + 56,48,56,252,24,12,20,40,14,1,0,16,0,60,0,30, + 0,3,0,0,0,0,0,15,128,48,192,96,96,64,96,192, + 48,192,48,192,48,192,48,192,48,192,48,96,96,96,64,48, + 128,31,0,12,20,40,14,1,0,1,0,1,192,7,128,14, + 0,0,0,0,0,15,128,48,192,96,96,64,96,192,48,192, + 48,192,48,192,48,192,48,192,48,96,96,96,64,48,128,31, + 0,12,20,40,14,1,0,6,0,15,0,15,128,24,192,32, + 0,0,0,15,128,48,192,96,96,64,96,192,48,192,48,192, + 48,192,48,192,48,192,48,96,96,96,64,48,128,31,0,12, + 19,38,14,1,0,8,64,31,224,55,128,0,0,0,0,15, + 128,48,192,96,96,64,96,192,48,192,48,192,48,192,48,192, + 48,192,48,96,96,96,64,48,128,31,0,12,19,38,14,1, + 0,16,128,57,192,49,192,0,0,0,0,15,128,48,192,96, + 96,64,96,192,48,192,48,192,48,192,48,192,48,192,48,96, + 96,96,64,48,128,31,0,8,7,7,10,1,3,195,102,60, + 24,60,102,195,12,15,30,14,1,255,15,176,16,224,32,224, + 96,224,193,240,195,112,195,48,198,48,204,48,232,32,120,96, + 112,64,112,128,223,0,128,0,15,20,40,15,0,0,4,0, + 14,0,7,0,1,192,0,0,0,0,252,126,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,24, + 24,48,24,32,7,192,15,20,40,15,0,0,0,64,0,240, + 1,224,3,0,0,0,0,0,252,126,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,24,48, + 24,32,7,192,15,20,40,15,0,0,1,128,3,128,7,192, + 12,96,0,16,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,19,38,15,0,0,4,32,12,112,12,96,0,0, + 0,0,252,126,48,24,48,24,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,24,48,24,32,7,192,13,20, + 40,14,0,0,0,128,0,224,3,192,7,0,0,0,0,0, + 240,120,56,48,28,96,28,96,14,192,6,128,7,128,3,0, + 3,0,3,0,3,0,3,0,3,0,15,192,12,14,28,13, + 0,0,252,0,48,0,48,0,63,192,48,96,48,48,48,48, + 48,48,48,48,48,96,55,192,48,0,48,0,252,0,11,17, + 34,14,1,0,15,128,16,192,32,96,32,96,96,96,96,96, + 97,192,99,0,99,0,99,0,99,192,97,192,96,224,104,96, + 104,96,108,64,239,128,10,17,34,11,1,0,48,0,120,0, + 24,0,12,0,6,0,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,10,17, + 34,11,1,0,7,0,7,0,14,0,12,0,24,0,0,0, + 0,0,62,0,99,0,227,0,3,0,63,0,99,0,195,0, + 195,0,255,192,123,0,10,17,34,11,1,0,12,0,30,0, + 62,0,115,0,65,128,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,10,16, + 32,11,1,0,56,128,124,128,127,0,198,0,0,0,0,0, + 62,0,99,0,227,0,3,0,63,0,99,0,195,0,195,0, + 255,192,123,0,10,15,30,11,1,0,99,0,99,128,99,0, + 0,0,0,0,62,0,99,0,227,0,3,0,63,0,99,0, + 195,0,195,0,255,192,123,0,10,16,32,11,1,0,14,0, + 27,0,26,0,28,0,0,0,0,0,62,0,99,0,227,0, + 3,0,63,0,99,0,195,0,195,0,255,192,123,0,15,10, + 20,17,1,0,30,120,119,140,227,6,131,6,31,252,99,0, + 195,0,199,132,253,252,112,240,9,15,30,10,1,251,31,0, + 99,128,65,0,192,0,192,0,192,0,192,0,225,0,126,0, + 60,0,16,0,28,0,12,0,12,0,48,0,9,17,34,11, + 1,0,56,0,56,0,28,0,12,0,6,0,0,0,0,0, + 30,0,99,0,65,128,193,128,255,128,192,0,192,0,225,128, + 127,0,62,0,9,17,34,11,1,0,7,0,7,128,14,0, + 12,0,24,0,0,0,0,0,30,0,99,0,65,128,193,128, + 255,128,192,0,192,0,225,128,127,0,62,0,9,17,34,11, + 1,0,12,0,30,0,63,0,51,0,96,128,0,0,0,0, + 30,0,99,0,65,128,193,128,255,128,192,0,192,0,225,128, + 127,0,62,0,9,15,30,11,1,0,97,128,99,128,99,0, + 0,0,0,0,30,0,99,0,65,128,193,128,255,128,192,0, + 192,0,225,128,127,0,62,0,6,17,17,7,0,0,224,112, + 48,24,8,0,0,56,120,24,24,24,24,24,24,24,124,6, + 17,17,7,1,0,28,60,56,96,64,0,0,112,240,48,48, + 48,48,48,48,48,248,7,17,17,7,0,0,56,56,124,198, + 130,0,0,56,120,24,24,24,24,24,24,24,124,8,15,15, + 7,255,0,99,227,195,0,0,28,60,12,12,12,12,12,12, + 12,62,10,17,34,12,1,0,24,0,125,192,15,128,31,0, + 51,128,3,128,1,192,31,192,97,192,64,192,192,192,192,192, + 192,192,192,128,225,128,113,0,30,0,12,16,32,13,1,0, + 28,64,62,64,63,128,99,0,0,0,0,0,51,128,247,192, + 56,192,48,192,48,192,48,192,48,192,48,192,48,192,249,240, + 10,17,34,12,1,0,56,0,56,0,28,0,6,0,2,0, + 0,0,0,0,30,0,33,128,65,128,192,192,192,192,192,192, + 192,192,96,128,113,0,30,0,10,17,34,12,1,0,3,128, + 7,0,6,0,12,0,8,0,0,0,0,0,30,0,33,128, + 65,128,192,192,192,192,192,192,192,192,96,128,113,0,30,0, + 10,17,34,12,1,0,12,0,30,0,31,0,49,128,96,128, + 0,0,0,0,30,0,33,128,65,128,192,192,192,192,192,192, + 192,192,96,128,113,0,30,0,10,16,32,12,1,0,24,64, + 60,128,127,128,71,0,0,0,0,0,30,0,33,128,65,128, + 192,192,192,192,192,192,192,192,96,128,113,0,30,0,10,15, + 30,12,1,0,49,128,115,128,97,128,0,0,0,0,30,0, + 33,128,65,128,192,192,192,192,192,192,192,192,96,128,113,0, + 30,0,8,8,8,10,1,2,24,24,16,255,0,24,24,24, + 10,12,24,12,1,255,0,64,30,192,51,128,99,192,199,192, + 196,192,200,192,248,192,113,128,113,0,94,0,128,0,12,17, + 34,13,1,0,56,0,28,0,12,0,6,0,2,0,0,0, + 0,0,97,192,224,192,96,192,96,192,96,192,96,192,96,192, + 97,192,127,240,60,192,12,17,34,13,1,0,3,128,7,128, + 6,0,12,0,8,0,0,0,0,0,97,192,224,192,96,192, + 96,192,96,192,96,192,96,192,97,192,127,240,60,192,12,17, + 34,13,1,0,14,0,14,0,31,0,49,128,32,128,0,0, + 0,0,97,192,224,192,96,192,96,192,96,192,96,192,96,192, + 97,192,127,240,60,192,12,15,30,13,1,0,49,128,113,128, + 97,128,0,0,0,0,97,192,224,192,96,192,96,192,96,192, + 96,192,96,192,97,192,127,240,60,192,13,22,44,12,255,251, + 0,192,1,224,1,128,3,0,6,0,0,0,0,0,124,120, + 56,32,28,96,28,64,14,192,14,192,6,128,7,128,7,0, + 3,0,3,0,6,0,70,0,124,0,248,0,11,22,44,13, + 1,251,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 51,128,63,192,56,224,48,96,48,96,48,96,48,96,48,192, + 63,128,55,0,48,0,48,0,48,0,48,0,252,0,13,20, + 40,12,255,251,24,96,28,224,24,192,0,0,0,0,124,120, + 56,32,28,96,28,64,14,192,14,192,6,128,7,128,7,0, + 3,0,3,0,6,0,70,0,124,0,248,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=11 h=22 x= 2 y= 8 dx=12 dy= 0 ascent=18 len=44 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14n[448] U8G_SECTION(".progmem.u8g_font_gdb14n") = { + 0,36,33,244,248,14,0,0,0,0,42,57,0,18,252,14, + 0,9,10,20,10,1,8,24,0,24,0,219,0,255,128,60, + 0,62,0,255,0,219,0,24,0,24,0,8,8,8,10,1, + 2,24,24,24,255,24,24,24,24,4,7,7,6,1,252,48, + 240,48,48,32,96,64,7,1,1,8,1,5,254,4,3,3, + 6,1,0,96,240,224,11,22,44,11,0,252,0,96,0,192, + 0,192,1,128,1,128,3,128,3,0,3,0,7,0,6,0, + 6,0,12,0,12,0,28,0,24,0,24,0,56,0,48,0, + 48,0,96,0,96,0,192,0,10,14,28,12,1,0,30,0, + 51,0,97,128,97,128,225,192,225,192,225,192,225,192,225,192, + 225,192,97,128,97,128,51,0,30,0,8,14,14,12,2,0, + 8,120,248,24,24,24,24,24,24,24,24,24,24,255,8,14, + 14,11,2,0,62,103,227,195,3,6,4,12,24,48,33,65, + 255,255,9,14,28,11,1,0,30,0,99,0,227,0,67,0, + 3,0,6,0,31,0,7,128,3,128,1,128,1,128,1,128, + 67,0,190,0,10,14,28,12,1,0,1,0,7,0,7,0, + 15,0,27,0,19,0,51,0,99,0,99,0,255,192,3,0, + 3,0,3,0,15,192,9,14,28,12,1,0,63,128,63,0, + 32,0,96,0,96,0,126,0,67,0,1,128,1,128,1,128, + 1,128,1,128,195,0,62,0,10,14,28,12,1,0,7,0, + 28,0,48,0,96,0,64,0,223,0,225,128,192,192,192,192, + 192,192,192,192,96,128,49,128,30,0,10,14,28,12,1,0, + 127,192,255,128,129,128,129,128,3,0,3,0,2,0,6,0, + 6,0,12,0,12,0,24,0,56,0,48,0,9,14,28,11, + 1,0,62,0,113,128,241,128,241,128,249,128,127,0,63,0, + 63,128,99,128,193,128,193,128,193,128,99,0,62,0,10,14, + 28,12,1,0,31,0,35,128,65,128,192,192,192,192,192,192, + 192,192,97,192,62,192,0,128,1,128,3,0,14,0,56,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--23-230-72-72-P-114-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=19 h=24 x= 2 y=12 dx=20 dy= 0 ascent=19 len=60 + Font Bounding box w=36 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb14r[2842] U8G_SECTION(".progmem.u8g_font_gdb14r") = { + 0,36,33,244,248,14,3,134,7,177,32,127,251,19,251,18, + 251,0,0,0,6,0,0,4,17,17,7,2,0,96,224,224, + 224,224,224,224,224,224,64,64,64,0,0,96,240,224,7,8, + 8,11,2,9,102,238,206,206,198,198,198,196,11,13,26,12, + 1,1,12,192,12,128,9,128,127,224,25,0,19,0,19,0, + 51,0,255,128,38,0,38,0,100,0,140,0,10,18,36,12, + 1,254,12,0,12,0,63,128,127,192,205,128,204,128,236,0, + 124,0,63,0,15,128,13,192,140,192,140,192,204,192,255,128, + 127,0,12,0,12,0,15,14,28,17,1,0,56,24,76,16, + 198,48,198,96,198,192,199,128,101,128,59,56,6,68,12,198, + 12,198,24,198,48,100,96,56,15,16,32,16,1,0,15,0, + 17,128,49,128,49,128,51,0,62,0,60,0,28,254,124,120, + 126,48,207,48,199,160,195,224,193,240,97,252,62,56,3,8, + 8,6,2,9,96,224,192,192,192,192,192,192,5,22,22,8, + 2,252,8,24,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,96,96,96,48,24,8,5,22,22,8,1,252,128,192, + 96,48,48,48,24,24,24,24,24,24,24,24,24,24,48,48, + 48,96,192,128,9,10,20,10,1,8,24,0,24,0,219,0, + 255,128,60,0,62,0,255,0,219,0,24,0,24,0,8,8, + 8,10,1,2,24,24,24,255,24,24,24,24,4,7,7,6, + 1,252,48,240,48,48,32,96,64,7,1,1,8,1,5,254, + 4,3,3,6,1,0,96,240,224,11,22,44,11,0,252,0, + 96,0,192,0,192,1,128,1,128,3,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,24,0,56, + 0,48,0,48,0,96,0,96,0,192,0,10,14,28,12,1, + 0,30,0,51,0,97,128,97,128,225,192,225,192,225,192,225, + 192,225,192,225,192,97,128,97,128,51,0,30,0,8,14,14, + 12,2,0,8,120,248,24,24,24,24,24,24,24,24,24,24, + 255,8,14,14,11,2,0,62,103,227,195,3,6,4,12,24, + 48,33,65,255,255,9,14,28,11,1,0,30,0,99,0,227, + 0,67,0,3,0,6,0,31,0,7,128,3,128,1,128,1, + 128,1,128,67,0,190,0,10,14,28,12,1,0,1,0,7, + 0,7,0,15,0,27,0,19,0,51,0,99,0,99,0,255, + 192,3,0,3,0,3,0,15,192,9,14,28,12,1,0,63, + 128,63,0,32,0,96,0,96,0,126,0,67,0,1,128,1, + 128,1,128,1,128,1,128,195,0,62,0,10,14,28,12,1, + 0,7,0,28,0,48,0,96,0,64,0,223,0,225,128,192, + 192,192,192,192,192,192,192,96,128,49,128,30,0,10,14,28, + 12,1,0,127,192,255,128,129,128,129,128,3,0,3,0,2, + 0,6,0,6,0,12,0,12,0,24,0,56,0,48,0,9, + 14,28,11,1,0,62,0,113,128,241,128,241,128,249,128,127, + 0,63,0,63,128,99,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,12,1,0,31,0,35,128,65,128,192,192,192, + 192,192,192,192,192,97,192,62,192,0,128,1,128,3,0,14, + 0,56,0,4,10,10,6,1,0,224,240,96,0,0,0,0, + 96,240,224,4,15,15,6,1,252,96,240,224,0,0,0,0, + 0,48,240,48,48,32,96,64,9,7,14,10,1,3,1,128, + 15,128,124,0,224,0,248,0,31,0,3,128,9,4,8,10, + 1,4,255,128,0,0,0,0,255,128,9,7,14,10,1,3, + 192,0,248,0,31,0,3,128,31,0,240,0,128,0,9,16, + 32,10,1,0,63,0,103,128,227,128,227,128,3,128,7,0, + 7,0,14,0,12,0,24,0,24,0,24,0,0,0,28,0, + 60,0,56,0,18,20,60,20,1,251,1,248,0,7,254,0, + 28,15,0,56,3,128,48,1,128,97,233,192,99,24,192,194, + 24,192,198,24,192,198,24,192,198,24,192,198,24,128,199,57, + 128,227,255,0,97,222,0,112,0,0,56,1,0,62,7,0, + 15,252,0,3,240,0,14,14,28,14,0,0,1,0,7,128, + 7,128,5,128,13,192,12,192,8,224,24,224,31,224,16,112, + 48,112,48,48,32,56,248,124,13,14,28,14,0,0,127,128, + 176,192,48,96,48,96,48,96,48,192,63,224,48,112,48,56, + 48,56,48,56,48,56,48,112,255,224,11,14,28,13,1,0, + 15,192,49,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,192,0,224,0,112,96,127,128,31,0,14,14,28,15, + 0,0,127,192,240,240,48,56,48,24,48,28,48,28,48,28, + 48,28,48,28,48,28,48,24,48,56,48,240,255,192,12,14, + 28,12,0,0,255,224,56,96,56,96,56,64,56,0,56,0, + 63,192,56,128,56,0,56,0,56,0,56,48,56,32,255,224, + 11,14,28,12,0,0,255,224,56,96,56,32,56,32,56,0, + 56,0,63,128,57,0,56,0,56,0,56,0,56,0,56,0, + 254,0,12,14,28,14,1,0,15,192,16,224,32,64,96,0, + 64,0,192,0,192,0,192,0,193,240,192,96,96,96,96,96, + 48,96,15,128,16,14,28,16,0,0,252,63,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,252,63,6,14,14,8,1,0,252,48,48,48, + 48,48,48,48,48,48,48,48,48,252,10,19,38,8,253,251, + 15,192,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 38,0,124,0,248,0,13,14,28,14,0,0,252,248,48,224, + 48,192,49,128,51,0,54,0,60,0,62,0,55,0,51,128, + 49,192,48,224,48,120,252,120,11,14,28,12,0,0,252,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,96,48,64,255,192,18,14,42,19,1,0, + 240,7,128,120,15,0,120,15,0,124,15,0,124,31,0,108, + 23,0,110,55,0,102,55,0,103,103,0,99,103,0,99,199, + 0,99,199,0,97,135,0,241,143,192,15,14,28,15,0,0, + 248,126,56,24,60,24,62,24,54,24,55,24,51,152,49,152, + 49,216,48,248,48,120,48,56,48,56,252,24,12,14,28,14, + 1,0,15,128,48,192,96,96,64,96,192,48,192,48,192,48, + 192,48,192,48,192,48,96,96,96,64,48,128,31,0,12,14, + 28,13,0,0,127,192,176,224,48,48,48,48,48,48,48,48, + 48,96,55,128,48,0,48,0,48,0,48,0,48,0,252,0, + 15,18,36,14,1,252,15,128,48,192,96,96,64,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 31,0,1,192,0,228,0,126,0,24,14,14,28,14,0,0, + 127,192,240,224,48,48,48,48,48,48,48,96,63,192,51,128, + 49,192,49,192,48,224,48,112,48,124,252,60,10,14,28,12, + 1,0,31,128,97,192,192,128,192,0,240,0,124,0,63,0, + 15,128,3,192,1,192,128,192,192,128,225,128,254,0,12,14, + 28,13,1,0,255,240,198,48,134,16,134,16,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 15,14,28,15,0,0,252,126,48,24,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,24,48,24,32, + 7,192,15,14,28,15,0,0,252,62,56,8,56,24,56,16, + 28,48,28,48,14,32,14,96,6,96,7,64,7,192,3,128, + 3,128,1,0,19,14,42,20,0,0,252,99,224,48,96,192, + 56,112,192,56,240,128,56,241,128,24,185,128,25,153,128,29, + 29,0,29,29,0,15,15,0,14,15,0,14,7,0,14,6, + 0,4,6,0,14,14,28,14,0,0,252,124,56,48,28,96, + 28,96,14,192,7,128,7,128,7,128,7,192,12,224,24,224, + 24,112,48,56,248,252,13,14,28,14,0,0,240,120,56,48, + 28,96,28,96,14,192,6,128,7,128,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,11,14,28,13,1,0,127,224, + 193,192,195,128,131,128,7,0,15,0,14,0,28,0,28,0, + 56,0,120,32,112,96,224,96,255,224,6,21,21,8,2,253, + 248,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,252,10,22,44,11,0,252,192,0,96,0,96, + 0,48,0,48,0,48,0,24,0,24,0,28,0,12,0,12, + 0,6,0,6,0,6,0,3,0,3,0,3,0,1,128,1, + 128,1,192,0,192,0,192,5,21,21,7,1,253,248,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,248,9,11,22,11,1,6,8,0,12,0,28,0,22,0, + 54,0,34,0,35,0,99,0,65,128,65,128,129,128,10,1, + 2,11,1,253,255,192,5,5,5,7,0,12,224,224,112,56, + 8,10,10,20,11,1,0,62,0,99,0,227,0,3,0,63, + 0,99,0,195,0,195,0,255,192,123,0,11,17,34,12,0, + 0,96,0,224,0,96,0,96,0,96,0,96,0,96,0,119, + 128,127,192,112,224,96,96,96,96,96,96,96,64,96,192,127, + 128,30,0,9,10,20,10,1,0,31,0,99,128,65,0,192, + 0,192,0,192,0,192,0,225,0,127,128,60,0,12,17,34, + 13,1,0,0,192,3,192,0,192,0,192,0,192,0,192,0, + 192,31,192,33,192,64,192,192,192,192,192,192,192,192,192,97, + 192,127,240,60,192,9,10,20,11,1,0,30,0,99,0,65, + 128,193,128,255,128,192,0,192,0,225,128,127,0,62,0,9, + 17,34,8,0,0,7,128,25,0,16,0,48,0,48,0,48, + 0,48,0,126,0,176,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,124,0,11,15,30,12,1,251,30,96,35, + 192,97,128,97,128,97,128,115,0,62,0,48,0,124,0,63, + 128,111,192,192,192,192,192,225,128,62,0,12,17,34,13,1, + 0,48,0,240,0,48,0,48,0,48,0,48,0,48,0,51, + 128,63,192,56,192,48,192,48,192,48,192,48,192,48,192,48, + 192,249,240,5,15,15,7,1,0,48,112,48,0,0,112,240, + 48,48,48,48,48,48,48,248,7,20,20,6,254,251,6,14, + 6,0,0,6,14,6,6,6,6,6,6,6,6,6,6,68, + 248,240,12,17,34,13,1,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,49,240,49,192,51,0,54,0,62,0, + 55,0,51,128,49,192,49,224,248,240,6,17,17,7,1,0, + 48,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,18,10,30,19,1,0,103,142,0,255,255,0,112,227,0, + 96,195,0,96,195,0,96,195,0,96,195,0,96,195,0,96, + 195,0,241,231,192,12,10,20,13,1,0,51,128,247,192,56, + 192,48,192,48,192,48,192,48,192,48,192,48,192,249,240,10, + 10,20,12,1,0,30,0,33,128,65,128,192,192,192,192,192, + 192,192,192,96,128,113,0,30,0,11,15,30,13,1,251,51, + 128,255,192,56,224,48,96,48,96,48,96,48,96,48,192,63, + 128,55,0,48,0,48,0,48,0,48,0,252,0,11,15,30, + 13,1,251,30,64,97,192,64,192,192,192,192,192,192,192,192, + 192,225,192,127,192,60,192,0,192,0,192,0,192,0,192,3, + 224,9,10,20,10,1,0,119,128,255,128,121,128,113,0,112, + 0,112,0,112,0,112,0,112,0,252,0,8,10,10,10,1, + 0,126,198,198,240,124,63,135,131,194,252,8,14,14,9,0, + 0,16,48,48,48,127,176,48,48,48,48,48,50,63,24,12, + 10,20,13,1,0,97,192,224,192,96,192,96,192,96,192,96, + 192,96,192,97,192,127,240,60,192,12,10,20,12,0,0,248, + 240,112,64,56,192,56,128,28,128,29,128,13,0,15,0,6, + 0,6,0,16,10,20,17,0,0,248,135,112,194,49,198,57, + 230,59,100,27,124,30,124,14,56,12,56,12,16,12,10,20, + 12,0,0,253,240,56,192,29,128,31,0,14,0,15,0,27, + 128,17,192,33,224,243,240,13,15,30,12,255,251,124,120,56, + 32,28,96,28,64,14,192,14,192,6,128,7,128,7,0,3, + 0,3,0,6,0,70,0,124,0,248,0,9,10,20,11,1, + 0,255,128,199,0,135,0,14,0,28,0,60,0,57,0,112, + 128,225,128,255,128,5,22,22,8,2,252,24,48,96,96,96, + 96,48,48,48,48,96,224,48,48,48,48,96,96,96,96,48, + 24,2,24,24,5,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,5, + 22,22,8,1,252,192,96,48,48,48,48,96,96,96,96,56, + 48,96,96,96,96,48,48,48,48,96,192,10,4,8,11,1, + 5,48,64,124,128,159,0,135,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=23 h=27 x= 3 y=16 dx=23 dy= 0 ascent=23 len=69 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x=-4 y=-7 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17[7600] U8G_SECTION(".progmem.u8g_font_gdb17") = { + 0,42,39,242,246,17,4,81,9,172,32,255,250,23,249,21, + 250,0,0,0,7,0,0,4,21,21,8,2,255,48,240,240, + 240,240,112,112,96,96,96,96,96,96,96,64,0,0,112,240, + 240,224,9,9,18,13,2,11,113,128,231,128,231,128,231,128, + 227,0,227,0,99,0,99,0,99,0,13,15,30,14,1,2, + 2,32,6,96,6,96,6,96,12,96,63,248,76,192,24,128, + 25,128,255,224,51,0,51,0,51,0,35,0,102,0,11,20, + 40,13,1,254,6,0,6,0,31,128,127,224,230,224,198,96, + 198,0,246,0,126,0,63,128,7,192,6,224,6,96,198,96, + 198,96,246,192,255,192,31,0,6,0,6,0,18,17,51,20, + 1,0,0,1,0,60,6,0,102,14,0,195,12,0,195,24, + 0,195,48,0,195,112,0,195,96,0,102,192,0,61,143,0, + 3,144,128,3,48,192,6,48,192,12,48,192,24,48,192,56, + 25,128,48,15,0,17,19,57,18,1,0,7,128,0,25,224, + 0,16,224,0,48,224,0,48,224,0,49,192,0,63,128,0, + 63,0,0,30,0,0,62,63,128,127,29,0,127,140,0,239, + 140,0,231,204,0,227,248,0,225,248,0,96,252,0,112,255, + 0,31,14,128,4,9,9,7,2,11,112,224,224,224,224,224, + 96,96,96,7,25,25,9,2,252,4,14,28,56,48,112,112, + 112,224,224,224,224,224,224,224,224,224,96,112,112,48,56,28, + 12,6,7,25,25,9,0,252,64,224,112,56,24,28,28,28, + 14,14,14,14,14,14,14,14,14,28,28,28,56,56,112,96, + 192,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0,4,13, + 13,7,2,255,112,240,240,224,0,0,0,0,0,112,240,240, + 224,5,17,17,7,1,251,56,120,120,48,0,0,0,0,0, + 48,248,120,56,48,48,96,192,11,9,18,12,1,3,0,96, + 3,192,31,128,252,0,240,0,248,0,63,0,7,192,0,224, + 11,5,10,12,1,5,255,224,0,0,0,0,0,0,255,224, + 11,9,18,12,1,3,192,0,248,0,63,0,7,192,1,224, + 15,192,126,0,240,0,192,0,9,20,40,12,1,255,63,0, + 119,128,227,128,227,128,195,128,3,128,3,0,7,0,6,0, + 14,0,12,0,12,0,12,0,12,0,0,0,0,0,28,0, + 60,0,60,0,56,0,20,23,69,23,2,251,0,252,0,3, + 255,0,14,7,128,24,1,192,48,0,224,32,0,96,96,242, + 112,97,142,48,195,14,48,195,14,48,199,14,48,199,14,48, + 199,14,48,199,14,96,199,158,96,227,255,192,99,239,128,113, + 199,0,120,0,0,60,0,64,31,3,192,15,255,0,3,252, + 0,17,17,51,17,0,0,0,192,0,1,192,0,3,192,0, + 3,224,0,2,224,0,6,240,0,6,112,0,6,112,0,12, + 120,0,12,56,0,15,248,0,24,28,0,24,28,0,16,28, + 0,48,14,0,48,14,0,252,63,128,13,17,34,16,1,0, + 127,192,248,224,56,112,56,112,56,112,56,112,56,224,63,192, + 56,240,56,112,56,56,56,56,56,56,56,56,56,48,56,112, + 255,192,13,17,34,15,1,0,7,240,24,120,48,48,112,0, + 96,0,96,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,0,120,8,60,56,31,224,15,128,16,17,34,17,0,0, + 127,224,248,120,56,60,56,30,56,30,56,15,56,15,56,15, + 56,15,56,15,56,15,56,15,56,30,56,30,56,60,56,120, + 255,224,13,17,34,14,1,0,255,240,120,48,120,48,120,32, + 120,32,120,0,120,0,120,0,127,192,120,128,120,0,120,0, + 120,0,120,16,120,24,120,48,255,240,12,17,34,14,1,0, + 255,240,120,48,120,48,120,48,120,32,120,0,120,0,120,0, + 127,192,120,128,120,0,120,0,120,0,120,0,120,0,120,0, + 254,0,14,17,34,16,1,0,3,240,12,120,48,48,48,0, + 112,0,96,0,224,0,224,0,224,0,224,252,224,56,224,56, + 112,56,112,56,60,56,31,240,7,192,17,17,51,18,0,0, + 254,63,128,60,30,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,63,254,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,7,17,17,9,1,0,254,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,12,22,44,9,252,251, + 7,240,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,128,1,128,51,0,126,0,252,0,16,17,34,17, + 1,0,254,126,56,56,56,48,56,112,56,224,57,192,59,128, + 63,0,63,0,59,128,57,192,57,224,56,240,56,120,56,60, + 56,31,254,30,13,17,34,14,1,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,8,56,24,56,24,255,240,21,17,51,23, + 1,0,248,1,248,56,1,224,60,1,224,60,3,224,62,3, + 224,62,6,224,63,6,224,55,12,224,39,140,224,35,156,224, + 35,152,224,33,216,224,33,240,224,97,240,224,96,224,224,112, + 224,224,248,67,248,18,17,51,18,0,0,248,15,192,124,3, + 0,60,3,0,62,3,0,63,3,0,55,131,0,51,195,0, + 51,195,0,49,227,0,48,243,0,48,123,0,48,123,0,48, + 63,0,48,31,0,48,15,0,48,7,0,252,3,0,15,17, + 34,17,1,0,7,192,24,112,48,56,48,28,96,28,96,14, + 224,14,224,14,224,14,224,14,224,14,224,12,112,28,112,24, + 56,24,28,32,7,192,14,17,34,15,0,0,127,224,248,120, + 56,56,56,28,56,28,56,28,56,28,56,56,60,112,59,224, + 56,0,56,0,56,0,56,0,56,0,56,0,254,0,18,22, + 66,17,1,251,7,192,0,24,112,0,48,56,0,48,28,0, + 96,28,0,96,14,0,224,14,0,224,14,0,224,14,0,224, + 14,0,224,14,0,224,14,0,112,28,0,112,28,0,56,24, + 0,28,48,0,7,192,0,0,112,0,0,60,64,0,31,192, + 0,15,128,0,3,0,16,17,34,16,0,0,63,192,248,112, + 56,56,56,56,56,56,56,56,56,112,63,240,63,192,57,192, + 56,224,56,224,56,112,56,120,56,60,56,63,254,30,12,17, + 34,14,1,0,15,240,48,240,64,32,192,0,224,0,248,0, + 126,0,63,128,31,192,7,224,0,240,0,112,0,48,192,48, + 192,32,240,64,255,128,15,17,34,16,0,0,255,254,195,134, + 195,134,131,134,131,132,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,7,192,15,224,17,17, + 51,18,0,0,254,31,128,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,4,0,28,12, + 0,14,24,0,3,224,0,18,17,51,18,0,0,254,15,192, + 56,7,0,60,6,0,28,6,0,28,6,0,30,12,0,14, + 12,0,15,24,0,7,24,0,7,24,0,7,176,0,3,176, + 0,3,176,0,1,224,0,1,224,0,1,224,0,0,128,0, + 23,17,51,23,0,0,254,24,126,56,24,24,56,56,24,56, + 60,16,28,60,48,28,110,48,28,110,48,28,110,48,14,199, + 96,14,199,96,14,135,96,15,131,224,15,131,224,7,1,192, + 7,1,192,7,1,192,6,0,128,17,17,51,17,0,0,255, + 63,0,60,12,0,28,24,0,30,24,0,15,48,0,7,112, + 0,7,224,0,3,192,0,1,192,0,3,224,0,3,240,0, + 6,112,0,12,120,0,12,60,0,24,28,0,56,30,0,252, + 63,128,16,17,34,17,0,0,248,31,60,14,28,12,14,24, + 15,24,7,48,7,48,3,224,3,224,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,7,240,13,17,34,15,1,0, + 127,248,96,240,64,240,193,224,1,192,3,192,7,128,7,128, + 15,0,15,0,30,0,60,0,60,0,120,24,120,24,240,24, + 255,248,6,25,25,9,3,252,252,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 252,11,25,50,13,1,252,192,0,192,0,224,0,96,0,112, + 0,112,0,48,0,56,0,24,0,24,0,28,0,12,0,14, + 0,6,0,6,0,7,0,3,0,3,0,3,128,1,128,1, + 192,0,192,0,192,0,224,0,96,6,25,25,8,0,252,252, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,252,11,13,26,13,1,7,6,0, + 14,0,14,0,15,0,27,0,19,0,17,128,49,128,33,192, + 96,192,96,192,64,96,192,64,11,1,2,13,1,253,255,224, + 6,6,6,9,0,14,224,240,112,56,24,12,12,12,24,13, + 1,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,14,20,40,15,0,0, + 24,0,248,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,240,59,248,62,56,56,28,56,12,56,12,56,12,56,8, + 56,8,60,16,63,224,7,128,11,12,24,12,1,0,15,224, + 48,192,112,192,96,64,224,0,224,0,224,0,224,0,240,64, + 120,224,63,192,31,0,14,20,40,15,1,0,0,48,1,240, + 0,112,0,112,0,112,0,112,0,112,0,112,15,240,48,240, + 96,112,96,112,224,112,224,112,224,112,240,112,248,240,127,244, + 63,124,30,48,11,12,24,13,1,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,11,19,38,9,1,0,3,224,12,192,24,0,24,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,255,0,14,18, + 36,15,0,250,15,140,16,252,32,112,96,48,96,48,112,48, + 56,96,31,128,28,0,124,0,127,224,63,248,127,252,240,60, + 224,28,224,24,112,48,31,192,15,20,40,16,1,0,24,0, + 248,0,56,0,56,0,56,0,56,0,56,0,56,0,56,240, + 59,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,7,18,18,8,1,0,56,120,112,0, + 0,0,56,248,56,56,56,56,56,56,56,56,56,254,10,24, + 48,8,252,250,1,192,3,192,3,128,0,0,0,0,0,0, + 3,128,15,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,0,102,0, + 252,0,120,0,14,20,40,15,1,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,252,56,112,56,224, + 57,128,59,0,63,0,59,128,57,192,56,224,56,240,56,120, + 252,60,7,20,20,8,1,0,24,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,23,12,36,23, + 0,0,25,241,240,251,255,248,62,62,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,254,254,15,12,24,16,1,0,24,240,251,248, + 62,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,254,12,12,24,14,1,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,13,18,36,15,1,250,25,224,251,240,60,112,56,56, + 56,24,56,24,56,24,56,24,56,16,60,48,63,224,59,192, + 56,0,56,0,56,0,56,0,56,0,254,0,14,18,36,15, + 1,250,15,16,48,240,96,112,96,112,224,112,224,112,224,112, + 240,112,248,240,127,240,127,112,28,112,0,112,0,112,0,112, + 0,112,0,112,1,252,11,12,24,12,1,0,49,224,247,224, + 124,192,120,64,120,64,120,0,120,0,120,0,120,0,120,0, + 120,0,254,0,9,12,24,11,1,0,62,0,71,0,194,0, + 224,0,248,0,126,0,63,0,15,128,131,128,193,128,225,0, + 254,0,10,17,34,10,0,0,8,0,24,0,56,0,56,0, + 56,0,255,192,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,128,63,192,30,0,15,12,24,15,0,0, + 56,56,248,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,250,63,190,30,56,14,12,24,14,0,0,252,124, + 120,48,56,48,60,32,28,96,30,96,14,192,14,192,7,128, + 7,128,7,128,3,0,19,12,36,19,0,0,252,33,224,120, + 96,192,56,112,192,56,241,128,28,249,128,28,185,128,29,159, + 0,15,31,0,15,31,0,15,14,0,6,14,0,4,4,0, + 14,12,24,14,0,0,254,252,60,112,28,96,30,192,15,128, + 7,128,7,128,15,192,25,224,24,240,48,120,249,252,15,18, + 36,14,255,250,126,62,60,24,28,24,30,16,14,48,15,48, + 7,96,7,96,3,192,3,192,3,192,1,128,1,128,3,0, + 3,0,126,0,124,0,248,0,11,12,24,13,1,0,127,224, + 67,192,67,192,135,128,15,0,15,0,30,0,60,0,56,32, + 120,96,240,96,255,224,7,25,25,9,1,252,2,14,28,56, + 56,56,56,28,28,28,28,56,240,248,28,28,28,28,56,56, + 56,56,28,14,6,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,7,25,25,9,1,252,192,224,112,56, + 56,56,56,112,112,112,112,62,30,56,112,112,112,112,56,56, + 56,56,112,224,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,7,0,0,4,19,19,8,2,249, + 112,240,240,224,32,96,96,96,96,96,96,112,112,112,240,240, + 240,240,192,10,17,34,14,2,255,12,0,12,0,15,128,63, + 192,109,192,108,192,204,0,204,0,204,0,204,0,204,0,236, + 64,125,192,63,128,30,0,12,0,12,0,13,16,32,14,0, + 0,3,240,6,56,12,16,28,16,28,16,60,0,60,0,60, + 0,255,192,60,0,60,0,60,16,56,24,56,24,127,248,255, + 240,12,11,22,14,1,2,192,48,239,112,112,224,96,96,96, + 96,96,96,96,96,112,224,111,96,192,48,128,16,15,16,32, + 14,255,0,248,126,120,56,60,48,30,48,30,96,15,96,7, + 192,7,192,7,192,3,128,63,248,3,128,3,128,3,128,3, + 128,15,224,2,27,27,6,2,251,192,192,192,192,192,192,192, + 192,192,192,192,192,128,0,0,192,192,192,192,192,192,192,192, + 192,192,192,192,10,19,38,13,2,0,31,0,35,128,97,0, + 113,0,120,0,62,0,127,128,207,128,195,192,225,192,240,192, + 124,192,63,128,31,128,7,128,65,128,65,128,97,0,126,0, + 9,4,8,11,1,14,115,128,247,128,247,128,231,0,18,18, + 54,20,1,0,3,240,0,14,28,0,24,6,0,48,3,0, + 97,241,128,102,57,128,198,16,192,204,0,192,204,0,192,204, + 0,192,204,0,192,204,0,192,102,1,128,103,25,128,49,243, + 0,24,6,0,12,12,0,3,240,0,6,9,9,7,1,8, + 120,216,24,120,216,216,252,0,252,11,12,24,14,1,0,4, + 32,8,96,24,192,49,192,115,128,231,128,231,128,115,128,49, + 192,24,192,8,96,4,32,12,6,12,14,1,2,127,240,128, + 48,0,48,0,48,0,48,0,32,8,1,1,10,1,6,255, + 10,9,18,10,255,10,30,0,97,128,255,128,219,192,222,192, + 220,192,251,192,97,128,30,0,11,2,4,13,1,16,127,224, + 255,224,6,7,7,10,2,10,56,76,204,204,204,200,112,10, + 12,24,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,0,0,0,0,255,192,7,10,10, + 9,1,8,60,102,230,6,12,24,16,50,98,254,7,10,10, + 9,1,8,60,102,70,6,28,6,6,6,142,120,6,6,6, + 9,3,14,56,60,112,96,192,128,15,18,36,15,0,250,24, + 24,248,120,56,56,56,56,56,56,56,56,56,56,56,56,60, + 120,63,248,63,190,55,24,48,0,48,0,56,0,56,0,60, + 0,48,0,15,20,40,17,1,253,15,254,49,248,113,152,225, + 152,225,152,225,152,225,152,113,152,121,152,31,152,1,152,1, + 152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,7, + 254,4,4,4,6,1,7,112,240,240,224,5,6,6,6,1, + 250,32,96,120,56,112,224,7,10,10,9,1,8,24,248,24, + 24,24,24,24,24,24,126,7,9,9,8,0,8,56,76,198, + 198,198,228,120,0,254,11,12,24,14,2,0,132,0,198,0, + 99,0,115,128,57,192,61,224,61,224,57,192,115,128,99,0, + 198,0,132,0,15,16,32,17,1,0,48,6,240,12,48,24, + 48,48,48,48,48,96,48,192,253,128,1,140,3,28,6,44, + 12,44,12,76,24,254,48,12,96,62,15,16,32,17,1,0, + 48,6,240,12,48,24,48,24,48,48,48,96,48,192,252,192, + 1,188,3,102,6,70,6,12,12,8,24,16,48,34,112,126, + 15,16,32,17,1,0,56,6,204,12,12,24,56,48,12,48, + 12,96,140,192,121,128,1,140,3,28,6,60,12,44,12,76, + 24,254,48,12,96,62,10,19,38,12,1,249,14,0,30,0, + 30,0,28,0,0,0,6,0,6,0,6,0,14,0,12,0, + 24,0,56,0,112,0,224,0,224,192,225,192,225,192,243,128, + 62,0,17,23,69,17,0,0,6,0,0,15,0,0,7,128, + 0,1,192,0,0,96,0,0,0,0,0,192,0,1,192,0, + 3,192,0,3,224,0,2,224,0,6,240,0,6,112,0,6, + 112,0,12,120,0,12,56,0,15,248,0,24,28,0,24,28, + 0,16,28,0,48,14,0,48,14,0,252,63,128,17,23,69, + 17,0,0,0,48,0,0,120,0,1,224,0,3,128,0,2, + 0,0,0,0,0,0,192,0,1,192,0,3,192,0,3,224, + 0,2,224,0,6,240,0,6,112,0,6,112,0,12,120,0, + 12,56,0,15,248,0,24,28,0,24,28,0,16,28,0,48, + 14,0,48,14,0,252,63,128,17,23,69,17,0,0,1,192, + 0,3,224,0,7,240,0,14,48,0,8,24,0,0,0,0, + 0,192,0,1,192,0,3,192,0,3,224,0,2,224,0,6, + 240,0,6,112,0,6,112,0,12,120,0,12,56,0,15,248, + 0,24,28,0,24,28,0,16,28,0,48,14,0,48,14,0, + 252,63,128,17,22,66,17,0,0,7,140,0,15,248,0,15, + 240,0,16,96,0,0,0,0,0,192,0,1,192,0,3,192, + 0,3,224,0,2,224,0,6,240,0,6,112,0,6,112,0, + 12,120,0,12,56,0,15,248,0,24,28,0,24,28,0,16, + 28,0,48,14,0,48,14,0,252,63,128,17,22,66,17,0, + 0,7,56,0,15,120,0,15,120,0,6,48,0,0,0,0, + 0,192,0,1,192,0,3,192,0,3,224,0,2,224,0,6, + 240,0,6,112,0,6,112,0,12,120,0,12,56,0,15,248, + 0,24,28,0,24,28,0,16,28,0,48,14,0,48,14,0, + 252,63,128,17,23,69,17,0,0,3,224,0,6,96,0,6, + 96,0,7,96,0,3,128,0,0,0,0,0,192,0,1,192, + 0,3,192,0,3,224,0,2,224,0,6,240,0,6,112,0, + 6,112,0,12,120,0,12,56,0,15,248,0,24,28,0,24, + 28,0,16,28,0,48,14,0,48,14,0,252,63,128,21,17, + 51,22,0,0,7,255,240,1,248,48,1,248,48,3,184,48, + 3,184,48,3,56,0,7,56,0,6,56,0,7,255,224,12, + 56,64,12,56,0,28,56,0,24,56,0,24,56,8,48,56, + 24,48,56,24,248,255,248,14,23,46,15,1,250,7,240,24, + 120,48,48,112,0,96,0,96,0,224,0,224,0,224,0,224, + 0,224,0,240,0,112,0,120,8,60,60,63,240,15,192,1, + 0,3,128,3,192,1,192,3,128,6,0,13,23,46,14,1, + 0,24,0,60,0,94,0,7,0,1,128,0,0,255,240,120, + 48,120,48,120,32,120,32,120,0,120,0,120,0,127,192,120, + 128,120,0,120,0,120,0,120,16,120,24,120,48,255,240,13, + 23,46,14,1,0,1,192,3,224,7,128,14,0,24,0,0, + 0,255,240,120,48,120,48,120,32,120,32,120,0,120,0,120, + 0,127,192,120,128,120,0,120,0,120,0,120,16,120,24,120, + 48,255,240,13,23,46,14,1,0,7,0,15,0,31,128,56, + 192,32,96,0,0,255,240,120,48,120,48,120,32,120,32,120, + 0,120,0,120,0,127,192,120,128,120,0,120,0,120,0,120, + 16,120,24,120,48,255,240,13,22,44,14,1,0,28,224,61, + 224,61,224,24,192,0,0,255,240,120,48,120,48,120,32,120, + 32,120,0,120,0,120,0,127,192,120,128,120,0,120,0,120, + 0,120,16,120,24,120,48,255,240,8,23,23,9,0,0,96, + 240,120,28,6,0,127,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,127,8,23,23,9,1,0,6,31,60,112, + 64,0,254,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,9,23,46,9,0,0,28,0,62,0,126,0,227, + 0,129,128,0,0,127,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,127,0,9,22,44,9,0,0,115,128,247, + 128,247,128,99,0,0,0,127,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,127,0,16,17,34,17,0,0,63, + 224,248,120,56,60,56,30,56,30,56,15,56,15,56,15,255, + 143,56,15,56,15,56,15,56,30,56,30,56,60,56,120,255, + 224,18,22,66,18,0,0,3,204,0,7,248,0,15,248,0, + 8,112,0,0,0,0,248,15,192,124,3,0,60,3,0,62, + 3,0,63,3,0,55,131,0,51,195,0,51,195,0,49,227, + 0,48,243,0,48,123,0,48,123,0,48,63,0,48,31,0, + 48,15,0,48,7,0,252,3,0,15,23,46,17,1,0,12, + 0,30,0,15,0,3,128,0,64,0,0,7,192,24,112,48, + 56,48,28,96,28,96,14,224,14,224,14,224,14,224,14,224, + 14,224,12,112,28,112,24,56,24,28,32,7,192,15,23,46, + 17,1,0,0,96,0,240,3,224,7,0,4,0,0,0,7, + 192,24,112,48,56,48,28,96,28,96,14,224,14,224,14,224, + 14,224,14,224,14,224,12,112,28,112,24,56,24,28,32,7, + 192,15,23,46,17,1,0,3,128,7,192,15,224,28,96,16, + 48,0,0,7,192,24,112,48,56,48,28,96,28,96,14,224, + 14,224,14,224,14,224,14,224,14,224,12,112,28,112,24,56, + 24,28,32,7,192,15,22,44,17,1,0,15,24,31,240,31, + 224,48,192,0,0,7,192,24,112,48,56,48,28,96,28,96, + 14,224,14,224,14,224,14,224,14,224,14,224,12,112,28,112, + 24,56,24,28,32,7,192,15,22,44,17,1,0,14,112,30, + 240,30,240,12,96,0,0,7,192,24,112,48,56,48,28,96, + 28,96,14,224,14,224,14,224,14,224,14,224,14,224,12,112, + 28,112,24,56,24,28,32,7,192,9,9,18,11,1,3,193, + 128,227,128,119,0,62,0,28,0,62,0,119,0,227,128,193, + 128,15,18,36,17,1,255,7,238,8,124,56,56,48,60,112, + 124,96,254,224,238,225,206,227,142,227,14,231,14,254,12,124, + 28,124,24,56,48,124,32,239,192,128,0,17,23,69,18,0, + 0,3,0,0,7,128,0,3,192,0,0,224,0,0,48,0, + 0,0,0,254,31,128,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,6,0,56,6, + 0,56,6,0,56,6,0,56,6,0,56,4,0,28,12,0, + 14,24,0,3,224,0,17,23,69,18,0,0,0,56,0,0, + 124,0,0,240,0,1,192,0,3,0,0,0,0,0,254,31, + 128,56,6,0,56,6,0,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,4,0,28,12,0,14,24,0,3,224, + 0,17,23,69,18,0,0,0,224,0,1,224,0,3,240,0, + 7,24,0,4,12,0,0,0,0,254,31,128,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,6,0,56,6, + 0,56,6,0,56,6,0,56,6,0,56,6,0,56,6,0, + 56,4,0,28,12,0,14,24,0,3,224,0,17,22,66,18, + 0,0,3,156,0,7,188,0,7,188,0,3,24,0,0,0, + 0,254,31,128,56,6,0,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,4,0,28,12,0,14,24, + 0,3,224,0,16,23,46,17,0,0,0,48,0,248,1,224, + 3,128,2,0,0,0,248,31,60,14,28,12,14,24,15,24, + 7,48,7,48,3,224,3,224,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,7,240,14,17,34,15,0,0,254,0, + 56,0,56,0,63,192,56,112,56,56,56,28,56,28,56,28, + 56,28,56,56,56,112,59,224,56,0,56,0,56,0,254,0, + 15,20,40,17,0,0,1,240,6,60,12,28,24,14,24,14, + 56,14,56,28,56,56,56,96,56,192,56,192,56,224,56,120, + 56,60,56,30,56,14,57,6,57,134,57,132,249,248,12,20, + 40,13,1,0,56,0,60,0,28,0,14,0,6,0,3,0, + 0,0,0,0,31,128,113,192,241,192,129,192,3,192,63,192, + 113,192,225,192,225,192,227,240,253,224,121,128,12,20,40,13, + 1,0,3,192,3,192,7,128,7,0,14,0,12,0,0,0, + 0,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,12,20,40,13,1,0, + 6,0,15,0,31,0,59,128,48,192,96,64,0,0,0,0, + 31,128,113,192,241,192,129,192,3,192,63,192,113,192,225,192, + 225,192,227,240,253,224,121,128,12,19,38,13,1,0,0,32, + 28,96,63,192,71,192,67,128,0,0,0,0,31,128,113,192, + 241,192,129,192,3,192,63,192,113,192,225,192,225,192,227,240, + 253,224,121,128,12,18,36,13,1,0,57,192,61,224,57,192, + 57,192,0,0,0,0,31,128,113,192,241,192,129,192,3,192, + 63,192,113,192,225,192,225,192,227,240,253,224,121,128,12,19, + 38,13,1,0,15,0,27,0,25,128,27,0,30,0,0,0, + 0,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,18,12,36,20,1,0, + 7,158,0,31,227,0,56,225,128,112,193,128,64,193,128,15, + 255,0,56,192,0,96,192,0,224,224,128,227,241,192,254,127, + 0,124,62,0,11,18,36,12,1,250,15,224,48,192,112,192, + 96,64,224,0,224,0,224,0,224,0,240,64,120,192,63,128, + 31,0,4,0,14,0,15,0,7,0,14,0,24,0,11,20, + 40,13,1,0,60,0,60,0,30,0,14,0,7,0,1,0, + 0,0,0,0,15,0,49,192,112,192,96,224,224,224,255,192, + 224,0,224,0,240,64,120,224,63,192,31,0,11,20,40,13, + 1,0,1,192,3,192,3,128,7,0,6,0,12,0,0,0, + 0,0,15,0,49,192,112,192,96,224,224,224,255,192,224,0, + 224,0,240,64,120,224,63,192,31,0,11,20,40,13,1,0, + 6,0,15,0,31,128,29,128,48,192,32,96,0,0,0,0, + 15,0,49,192,112,192,96,224,224,224,255,192,224,0,224,0, + 240,64,120,224,63,192,31,0,11,18,36,13,1,0,24,192, + 61,224,61,224,57,192,0,0,0,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,8,20,20,8,0,0,240,240,120,24,12,4,0,0, + 28,124,28,28,28,28,28,28,28,28,28,127,7,20,20,8, + 1,0,14,30,28,56,48,96,0,0,56,248,56,56,56,56, + 56,56,56,56,56,254,9,20,40,8,0,0,24,0,60,0, + 126,0,118,0,195,0,129,128,0,0,0,0,28,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,127,0,9,18,36,8,0,0,115,128,247,128,247,128, + 231,0,0,0,0,0,28,0,124,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,127,0,12,19, + 38,14,1,0,12,0,126,112,15,224,15,128,61,192,0,224, + 0,224,15,224,49,240,96,240,96,112,224,112,224,112,224,112, + 224,96,224,96,112,192,56,128,31,0,15,19,38,16,1,0, + 0,16,14,48,31,224,51,224,33,192,0,0,0,0,24,240, + 251,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,12,20,40,14,1,0,28,0,60,0, + 14,0,6,0,3,0,1,128,0,0,0,0,15,128,49,192, + 112,224,96,112,224,112,224,112,224,112,224,112,224,96,112,96, + 56,192,31,0,12,20,40,14,1,0,1,192,3,224,3,128, + 7,0,6,0,12,0,0,0,0,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,12,20,40,14,1,0,7,0,15,0,15,128,29,192, + 56,192,32,96,0,0,0,0,15,128,49,192,112,224,96,112, + 224,112,224,112,224,112,224,112,224,96,112,96,56,192,31,0, + 12,19,38,14,1,0,0,48,30,32,63,224,39,192,65,128, + 0,0,0,0,15,128,49,192,112,224,96,112,224,112,224,112, + 224,112,224,112,224,96,112,96,56,192,31,0,12,18,36,14, + 1,0,28,224,61,224,61,224,24,192,0,0,0,0,15,128, + 49,192,112,224,96,112,224,112,224,112,224,112,224,112,224,96, + 112,96,56,192,31,0,10,10,20,11,1,2,12,0,12,0, + 12,0,0,0,255,192,0,0,0,0,12,0,12,0,12,0, + 12,14,28,14,1,255,0,16,15,176,49,224,112,224,97,240, + 227,112,230,112,230,112,236,112,248,96,112,224,120,192,95,0, + 128,0,15,20,40,15,0,0,14,0,15,0,7,0,3,128, + 1,128,0,192,0,0,0,0,56,56,248,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,250,63,190,30,56, + 15,20,40,15,0,0,0,224,0,240,1,192,1,128,3,0, + 2,0,0,0,0,0,56,56,248,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,250,63,190,30,56,15,20, + 40,15,0,0,3,128,3,192,7,192,14,224,28,112,24,16, + 0,0,0,0,56,56,248,248,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,250,63,190,30,56,15,18,36,15, + 0,0,14,112,14,112,30,240,14,112,0,0,0,0,56,56, + 248,248,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,250,63,190,30,56,15,26,52,14,255,250,0,112,0,240, + 0,224,1,192,1,128,3,0,0,0,0,0,126,62,60,24, + 28,24,30,16,14,48,15,48,7,96,7,96,3,192,3,192, + 3,192,1,128,1,128,3,0,3,0,126,0,124,0,248,0, + 13,26,52,15,1,250,24,0,248,0,56,0,56,0,56,0, + 56,0,56,0,56,0,57,224,63,240,60,112,56,56,56,24, + 56,24,56,24,56,24,56,16,60,48,63,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,15,24,48,14,255,250, + 7,56,15,120,15,120,14,112,0,0,0,0,126,62,60,24, + 28,24,30,16,14,48,15,48,7,96,7,96,3,192,3,192, + 3,192,1,128,1,128,3,0,3,0,126,0,124,0,248,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 16 + Calculated Max Values w=12 h=25 x= 2 y= 9 dx=14 dy= 0 ascent=21 len=50 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =16 descent= 0 + X Font ascent =16 descent= 0 + Max Font ascent =21 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17n[542] U8G_SECTION(".progmem.u8g_font_gdb17n") = { + 0,42,39,242,246,16,0,0,0,0,42,57,0,21,251,16, + 0,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--27-270-72-72-P-135-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=23 h=27 x= 3 y=14 dx=23 dy= 0 ascent=22 len=69 + Font Bounding box w=42 h=39 x=-14 y=-10 + Calculated Min Values x=-4 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb17r[3540] U8G_SECTION(".progmem.u8g_font_gdb17r") = { + 0,42,39,242,246,17,4,81,9,172,32,127,250,22,250,21, + 250,0,0,0,7,0,0,4,21,21,8,2,255,48,240,240, + 240,240,112,112,96,96,96,96,96,96,96,64,0,0,112,240, + 240,224,9,9,18,13,2,11,113,128,231,128,231,128,231,128, + 227,0,227,0,99,0,99,0,99,0,13,15,30,14,1,2, + 2,32,6,96,6,96,6,96,12,96,63,248,76,192,24,128, + 25,128,255,224,51,0,51,0,51,0,35,0,102,0,11,20, + 40,13,1,254,6,0,6,0,31,128,127,224,230,224,198,96, + 198,0,246,0,126,0,63,128,7,192,6,224,6,96,198,96, + 198,96,246,192,255,192,31,0,6,0,6,0,18,17,51,20, + 1,0,0,1,0,60,6,0,102,14,0,195,12,0,195,24, + 0,195,48,0,195,112,0,195,96,0,102,192,0,61,143,0, + 3,144,128,3,48,192,6,48,192,12,48,192,24,48,192,56, + 25,128,48,15,0,17,19,57,18,1,0,7,128,0,25,224, + 0,16,224,0,48,224,0,48,224,0,49,192,0,63,128,0, + 63,0,0,30,0,0,62,63,128,127,29,0,127,140,0,239, + 140,0,231,204,0,227,248,0,225,248,0,96,252,0,112,255, + 0,31,14,128,4,9,9,7,2,11,112,224,224,224,224,224, + 96,96,96,7,25,25,9,2,252,4,14,28,56,48,112,112, + 112,224,224,224,224,224,224,224,224,224,96,112,112,48,56,28, + 12,6,7,25,25,9,0,252,64,224,112,56,24,28,28,28, + 14,14,14,14,14,14,14,14,14,28,28,28,56,56,112,96, + 192,10,12,24,12,1,9,12,0,12,0,204,128,237,192,255, + 192,63,0,63,0,255,192,237,192,76,128,12,0,12,0,10, + 10,20,11,1,2,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,12,0,5,8,8,7,1,251,48, + 248,120,56,48,48,96,192,8,1,1,10,1,6,255,4,4, + 4,7,2,255,112,240,240,224,12,25,50,13,0,252,0,48, + 0,112,0,112,0,96,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,6,0,14,0,14,0,12,0, + 28,0,24,0,56,0,56,0,48,0,112,0,96,0,224,0, + 12,16,32,14,1,0,15,0,49,192,48,224,96,224,96,96, + 224,112,224,112,224,112,224,112,224,112,224,112,96,96,112,96, + 112,192,56,192,15,0,10,16,32,14,2,0,6,0,62,0, + 254,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,31,0,255,192,11,16,32,14, + 1,0,15,128,57,192,112,224,112,224,128,224,0,192,1,192, + 3,128,3,0,7,0,14,0,28,32,56,32,48,32,127,224, + 255,224,11,16,32,14,1,0,31,0,115,128,113,192,225,192, + 1,192,3,128,7,128,15,192,3,192,1,224,0,224,0,224, + 0,224,128,192,193,192,63,0,11,16,32,14,2,0,0,128, + 3,128,7,128,7,128,13,128,13,128,25,128,49,128,49,128, + 97,128,255,224,1,128,1,128,1,128,3,192,15,224,11,16, + 32,14,1,0,63,224,63,192,32,0,32,0,96,0,96,0, + 127,0,99,192,1,192,0,224,0,224,0,224,0,224,1,192, + 193,192,63,0,12,16,32,14,1,0,1,192,7,0,28,0, + 56,0,112,0,96,0,239,128,240,224,224,224,224,112,224,112, + 224,112,112,112,112,96,56,192,15,128,12,16,32,14,1,0, + 127,240,127,224,192,96,128,192,0,192,1,192,1,128,1,128, + 3,0,3,0,7,0,6,0,14,0,28,0,28,0,56,0, + 11,16,32,13,1,0,15,128,57,192,112,224,112,224,120,224, + 125,192,63,128,31,128,63,192,115,224,225,224,224,224,224,224, + 224,192,113,128,31,0,12,17,34,14,1,255,15,128,49,192, + 96,224,224,224,224,112,224,112,224,112,240,112,112,240,31,112, + 0,96,0,224,0,224,1,192,3,128,30,0,56,0,4,13, + 13,7,2,255,112,240,240,224,0,0,0,0,0,112,240,240, + 224,5,17,17,7,1,251,56,120,120,48,0,0,0,0,0, + 48,248,120,56,48,48,96,192,11,9,18,12,1,3,0,96, + 3,192,31,128,252,0,240,0,248,0,63,0,7,192,0,224, + 11,5,10,12,1,5,255,224,0,0,0,0,0,0,255,224, + 11,9,18,12,1,3,192,0,248,0,63,0,7,192,1,224, + 15,192,126,0,240,0,192,0,9,20,40,12,1,255,63,0, + 119,128,227,128,227,128,195,128,3,128,3,0,7,0,6,0, + 14,0,12,0,12,0,12,0,12,0,0,0,0,0,28,0, + 60,0,60,0,56,0,20,23,69,23,2,251,0,252,0,3, + 255,0,14,7,128,24,1,192,48,0,224,32,0,96,96,242, + 112,97,142,48,195,14,48,195,14,48,199,14,48,199,14,48, + 199,14,48,199,14,96,199,158,96,227,255,192,99,239,128,113, + 199,0,120,0,0,60,0,64,31,3,192,15,255,0,3,252, + 0,17,17,51,17,0,0,0,192,0,1,192,0,3,192,0, + 3,224,0,2,224,0,6,240,0,6,112,0,6,112,0,12, + 120,0,12,56,0,15,248,0,24,28,0,24,28,0,16,28, + 0,48,14,0,48,14,0,252,63,128,13,17,34,16,1,0, + 127,192,248,224,56,112,56,112,56,112,56,112,56,224,63,192, + 56,240,56,112,56,56,56,56,56,56,56,56,56,48,56,112, + 255,192,13,17,34,15,1,0,7,240,24,120,48,48,112,0, + 96,0,96,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,0,120,8,60,56,31,224,15,128,16,17,34,17,0,0, + 127,224,248,120,56,60,56,30,56,30,56,15,56,15,56,15, + 56,15,56,15,56,15,56,15,56,30,56,30,56,60,56,120, + 255,224,13,17,34,14,1,0,255,240,120,48,120,48,120,32, + 120,32,120,0,120,0,120,0,127,192,120,128,120,0,120,0, + 120,0,120,16,120,24,120,48,255,240,12,17,34,14,1,0, + 255,240,120,48,120,48,120,48,120,32,120,0,120,0,120,0, + 127,192,120,128,120,0,120,0,120,0,120,0,120,0,120,0, + 254,0,14,17,34,16,1,0,3,240,12,120,48,48,48,0, + 112,0,96,0,224,0,224,0,224,0,224,252,224,56,224,56, + 112,56,112,56,60,56,31,240,7,192,17,17,51,18,0,0, + 254,63,128,60,30,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,63,254,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 254,63,128,7,17,17,9,1,0,254,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,12,22,44,9,252,251, + 7,240,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192, + 1,192,1,128,1,128,51,0,126,0,252,0,16,17,34,17, + 1,0,254,126,56,56,56,48,56,112,56,224,57,192,59,128, + 63,0,63,0,59,128,57,192,57,224,56,240,56,120,56,60, + 56,31,254,30,13,17,34,14,1,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,8,56,24,56,24,255,240,21,17,51,23, + 1,0,248,1,248,56,1,224,60,1,224,60,3,224,62,3, + 224,62,6,224,63,6,224,55,12,224,39,140,224,35,156,224, + 35,152,224,33,216,224,33,240,224,97,240,224,96,224,224,112, + 224,224,248,67,248,18,17,51,18,0,0,248,15,192,124,3, + 0,60,3,0,62,3,0,63,3,0,55,131,0,51,195,0, + 51,195,0,49,227,0,48,243,0,48,123,0,48,123,0,48, + 63,0,48,31,0,48,15,0,48,7,0,252,3,0,15,17, + 34,17,1,0,7,192,24,112,48,56,48,28,96,28,96,14, + 224,14,224,14,224,14,224,14,224,14,224,12,112,28,112,24, + 56,24,28,32,7,192,14,17,34,15,0,0,127,224,248,120, + 56,56,56,28,56,28,56,28,56,28,56,56,60,112,59,224, + 56,0,56,0,56,0,56,0,56,0,56,0,254,0,18,22, + 66,17,1,251,7,192,0,24,112,0,48,56,0,48,28,0, + 96,28,0,96,14,0,224,14,0,224,14,0,224,14,0,224, + 14,0,224,14,0,224,14,0,112,28,0,112,28,0,56,24, + 0,28,48,0,7,192,0,0,112,0,0,60,64,0,31,192, + 0,15,128,0,3,0,16,17,34,16,0,0,63,192,248,112, + 56,56,56,56,56,56,56,56,56,112,63,240,63,192,57,192, + 56,224,56,224,56,112,56,120,56,60,56,63,254,30,12,17, + 34,14,1,0,15,240,48,240,64,32,192,0,224,0,248,0, + 126,0,63,128,31,192,7,224,0,240,0,112,0,48,192,48, + 192,32,240,64,255,128,15,17,34,16,0,0,255,254,195,134, + 195,134,131,134,131,132,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,7,192,15,224,17,17, + 51,18,0,0,254,31,128,56,6,0,56,6,0,56,6,0, + 56,6,0,56,6,0,56,6,0,56,6,0,56,6,0,56, + 6,0,56,6,0,56,6,0,56,6,0,56,4,0,28,12, + 0,14,24,0,3,224,0,18,17,51,18,0,0,254,15,192, + 56,7,0,60,6,0,28,6,0,28,6,0,30,12,0,14, + 12,0,15,24,0,7,24,0,7,24,0,7,176,0,3,176, + 0,3,176,0,1,224,0,1,224,0,1,224,0,0,128,0, + 23,17,51,23,0,0,254,24,126,56,24,24,56,56,24,56, + 60,16,28,60,48,28,110,48,28,110,48,28,110,48,14,199, + 96,14,199,96,14,135,96,15,131,224,15,131,224,7,1,192, + 7,1,192,7,1,192,6,0,128,17,17,51,17,0,0,255, + 63,0,60,12,0,28,24,0,30,24,0,15,48,0,7,112, + 0,7,224,0,3,192,0,1,192,0,3,224,0,3,240,0, + 6,112,0,12,120,0,12,60,0,24,28,0,56,30,0,252, + 63,128,16,17,34,17,0,0,248,31,60,14,28,12,14,24, + 15,24,7,48,7,48,3,224,3,224,1,192,1,192,1,192, + 1,192,1,192,1,192,1,192,7,240,13,17,34,15,1,0, + 127,248,96,240,64,240,193,224,1,192,3,192,7,128,7,128, + 15,0,15,0,30,0,60,0,60,0,120,24,120,24,240,24, + 255,248,6,25,25,9,3,252,252,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 252,11,25,50,13,1,252,192,0,192,0,224,0,96,0,112, + 0,112,0,48,0,56,0,24,0,24,0,28,0,12,0,14, + 0,6,0,6,0,7,0,3,0,3,0,3,128,1,128,1, + 192,0,192,0,192,0,224,0,96,6,25,25,8,0,252,252, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,252,11,13,26,13,1,7,6,0, + 14,0,14,0,15,0,27,0,19,0,17,128,49,128,33,192, + 96,192,96,192,64,96,192,64,11,1,2,13,1,253,255,224, + 6,6,6,9,0,14,224,240,112,56,24,12,12,12,24,13, + 1,0,31,128,113,192,241,192,129,192,3,192,63,192,113,192, + 225,192,225,192,227,240,253,224,121,128,14,20,40,15,0,0, + 24,0,248,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,240,59,248,62,56,56,28,56,12,56,12,56,12,56,8, + 56,8,60,16,63,224,7,128,11,12,24,12,1,0,15,224, + 48,192,112,192,96,64,224,0,224,0,224,0,224,0,240,64, + 120,224,63,192,31,0,14,20,40,15,1,0,0,48,1,240, + 0,112,0,112,0,112,0,112,0,112,0,112,15,240,48,240, + 96,112,96,112,224,112,224,112,224,112,240,112,248,240,127,244, + 63,124,30,48,11,12,24,13,1,0,15,0,49,192,112,192, + 96,224,224,224,255,192,224,0,224,0,240,64,120,224,63,192, + 31,0,11,19,38,9,1,0,3,224,12,192,24,0,24,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,255,0,14,18, + 36,15,0,250,15,140,16,252,32,112,96,48,96,48,112,48, + 56,96,31,128,28,0,124,0,127,224,63,248,127,252,240,60, + 224,28,224,24,112,48,31,192,15,20,40,16,1,0,24,0, + 248,0,56,0,56,0,56,0,56,0,56,0,56,0,56,240, + 59,248,62,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,254,7,18,18,8,1,0,56,120,112,0, + 0,0,56,248,56,56,56,56,56,56,56,56,56,254,10,24, + 48,8,252,250,1,192,3,192,3,128,0,0,0,0,0,0, + 3,128,15,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,0,102,0, + 252,0,120,0,14,20,40,15,1,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,252,56,112,56,224, + 57,128,59,0,63,0,59,128,57,192,56,224,56,240,56,120, + 252,60,7,20,20,8,1,0,24,248,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,23,12,36,23, + 0,0,25,241,240,251,255,248,62,62,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,254,254,15,12,24,16,1,0,24,240,251,248, + 62,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,254,254,12,12,24,14,1,0,15,128,49,192,112,224, + 96,112,224,112,224,112,224,112,224,112,224,96,112,96,56,192, + 31,0,13,18,36,15,1,250,25,224,251,240,60,112,56,56, + 56,24,56,24,56,24,56,24,56,16,60,48,63,224,59,192, + 56,0,56,0,56,0,56,0,56,0,254,0,14,18,36,15, + 1,250,15,16,48,240,96,112,96,112,224,112,224,112,224,112, + 240,112,248,240,127,240,127,112,28,112,0,112,0,112,0,112, + 0,112,0,112,1,252,11,12,24,12,1,0,49,224,247,224, + 124,192,120,64,120,64,120,0,120,0,120,0,120,0,120,0, + 120,0,254,0,9,12,24,11,1,0,62,0,71,0,194,0, + 224,0,248,0,126,0,63,0,15,128,131,128,193,128,225,0, + 254,0,10,17,34,10,0,0,8,0,24,0,56,0,56,0, + 56,0,255,192,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,128,63,192,30,0,15,12,24,15,0,0, + 56,56,248,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,250,63,190,30,56,14,12,24,14,0,0,252,124, + 120,48,56,48,60,32,28,96,30,96,14,192,14,192,7,128, + 7,128,7,128,3,0,19,12,36,19,0,0,252,33,224,120, + 96,192,56,112,192,56,241,128,28,249,128,28,185,128,29,159, + 0,15,31,0,15,31,0,15,14,0,6,14,0,4,4,0, + 14,12,24,14,0,0,254,252,60,112,28,96,30,192,15,128, + 7,128,7,128,15,192,25,224,24,240,48,120,249,252,15,18, + 36,14,255,250,126,62,60,24,28,24,30,16,14,48,15,48, + 7,96,7,96,3,192,3,192,3,192,1,128,1,128,3,0, + 3,0,126,0,124,0,248,0,11,12,24,13,1,0,127,224, + 67,192,67,192,135,128,15,0,15,0,30,0,60,0,56,32, + 120,96,240,96,255,224,7,25,25,9,1,252,2,14,28,56, + 56,56,56,28,28,28,28,56,240,248,28,28,28,28,56,56, + 56,56,28,14,6,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,7,25,25,9,1,252,192,224,112,56, + 56,56,56,112,112,112,112,62,30,56,112,112,112,112,56,56, + 56,56,112,224,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=18 dx=28 dy= 0 ascent=28 len=112 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x=-5 y=-9 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =28 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20[10077] U8G_SECTION(".progmem.u8g_font_gdb20") = { + 0,49,47,240,244,20,5,86,12,137,32,255,248,28,247,25, + 248,0,0,0,8,0,0,5,24,24,10,2,255,24,120,120, + 120,120,120,120,120,120,112,112,112,112,48,48,48,48,0,0, + 112,248,248,248,112,11,10,20,15,2,13,56,224,243,224,241, + 224,241,192,113,192,113,192,113,192,113,192,112,192,96,192,15, + 18,36,16,1,2,1,140,3,152,3,24,3,24,3,56,63, + 254,63,254,6,112,14,96,12,96,12,96,127,252,255,248,24, + 192,24,192,57,128,49,128,49,128,14,25,50,16,1,253,3, + 0,3,0,3,0,31,240,63,248,115,120,227,56,227,16,243, + 0,255,0,127,0,63,224,15,240,3,248,3,124,3,28,195, + 28,195,28,227,28,251,120,255,240,63,224,3,0,3,0,3, + 0,21,20,60,23,1,0,0,0,96,30,0,192,115,129,192, + 97,131,128,225,195,0,225,198,0,225,206,0,225,220,0,97, + 152,0,115,176,0,30,113,224,0,231,112,1,198,48,1,142, + 56,3,142,56,7,14,56,14,14,56,12,6,48,28,7,48, + 56,3,192,21,23,69,22,1,0,1,240,0,7,120,0,14, + 60,0,14,60,0,30,60,0,30,124,0,30,120,0,31,240, + 0,31,224,0,15,192,0,15,128,0,31,143,248,63,195,160, + 123,225,128,123,241,128,241,249,128,240,251,0,240,127,0,240, + 126,0,248,63,0,120,31,240,63,247,240,15,195,192,5,10, + 10,9,2,13,56,240,240,240,112,112,112,112,112,96,9,30, + 60,11,2,251,1,0,3,128,6,0,14,0,28,0,60,0, + 56,0,120,0,120,0,112,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 120,0,56,0,60,0,28,0,30,0,14,0,7,0,1,128, + 9,30,60,11,0,251,64,0,240,0,56,0,60,0,28,0, + 30,0,14,0,15,0,15,0,15,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,0,15,0, + 15,0,15,0,14,0,30,0,28,0,56,0,48,0,96,0, + 192,0,12,13,26,14,1,11,3,0,15,0,70,64,102,112, + 246,240,63,192,15,0,63,224,254,240,230,112,70,32,7,0, + 14,0,12,12,24,13,1,3,6,0,6,0,6,0,6,0, + 6,0,127,240,255,224,6,0,6,0,6,0,6,0,6,0, + 6,10,10,9,2,250,56,252,252,60,60,56,56,112,96,192, + 10,2,4,11,1,7,255,192,255,128,5,5,5,9,2,255, + 112,248,248,248,112,14,30,60,15,1,251,0,28,0,56,0, + 56,0,120,0,112,0,112,0,224,0,224,0,224,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,28,0,28,0,28,0,56,0,56,0,120,0,112,0,112, + 0,224,0,224,0,192,0,14,18,36,16,1,0,7,192,24, + 224,56,112,112,120,112,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,56,112,56,120,56,56,112,28,96,15, + 128,13,19,38,16,2,0,1,128,15,128,127,128,239,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,224,127,248,13,19,38, + 16,1,0,15,224,56,240,120,120,240,120,112,120,0,120,0, + 240,0,240,1,224,1,192,3,128,7,0,14,0,28,8,28, + 8,56,24,127,248,255,248,255,248,13,19,38,16,1,0,31, + 128,121,224,112,240,240,240,64,240,0,240,1,224,7,192,15, + 192,3,240,0,240,0,120,0,120,0,120,0,120,128,240,192, + 240,127,224,31,128,14,19,38,17,1,0,0,48,1,240,1, + 240,3,240,7,240,6,240,12,240,12,240,24,240,56,240,48, + 240,96,240,255,252,255,248,0,240,0,240,0,240,1,248,7, + 252,13,19,38,16,1,0,63,248,63,240,63,224,112,0,112, + 0,96,0,96,0,127,128,127,224,97,240,0,248,0,120,0, + 120,0,120,0,120,0,112,128,240,193,224,127,128,14,20,40, + 16,1,0,0,112,3,240,7,128,15,0,28,0,60,0,120, + 0,120,0,115,224,255,240,252,120,240,124,240,60,240,60,240, + 60,112,60,120,56,56,56,28,112,7,192,13,19,38,16,2, + 0,255,248,255,248,255,240,192,48,128,96,128,96,0,224,0, + 192,1,192,1,128,3,128,3,128,7,0,7,0,14,0,14, + 0,30,0,28,0,56,0,14,19,38,16,1,0,15,192,24, + 240,48,120,112,120,112,120,120,120,126,240,63,192,31,224,15, + 240,63,248,120,252,248,124,240,60,240,60,240,56,112,56,56, + 112,31,192,14,20,40,16,1,255,7,192,24,240,56,120,112, + 120,240,60,240,60,240,60,240,60,248,60,124,124,63,252,31, + 60,0,56,0,120,0,112,0,240,1,224,7,128,63,0,56, + 0,5,16,16,9,2,255,112,248,248,248,112,0,0,0,0, + 0,0,112,248,248,248,112,6,21,21,9,2,250,112,248,248, + 248,112,0,0,0,0,0,0,56,252,252,60,60,56,56,112, + 96,192,13,10,20,15,1,4,0,24,0,240,7,240,63,128, + 252,0,248,0,127,0,15,224,1,248,0,48,13,7,14,15, + 1,5,255,248,255,240,0,0,0,0,0,0,255,248,255,240, + 13,10,20,15,1,4,96,0,252,0,63,128,7,240,0,248, + 1,240,15,224,127,0,248,0,192,0,12,24,48,15,1,255, + 31,192,121,224,240,240,240,240,240,240,192,240,0,240,1,224, + 1,192,3,192,3,128,7,0,7,0,6,0,6,0,6,0, + 0,0,0,0,0,0,14,0,31,0,31,0,31,0,14,0, + 26,28,112,28,1,249,0,31,192,0,0,255,248,0,3,255, + 252,0,7,224,62,0,15,128,15,0,30,0,7,128,60,30, + 35,128,60,49,225,128,120,97,225,192,120,225,224,192,240,225, + 224,192,241,225,224,192,241,225,224,192,241,225,224,192,241,225, + 224,192,241,225,225,128,241,225,225,128,248,243,227,0,120,255, + 254,0,120,125,252,0,124,56,240,0,62,0,0,0,62,0, + 2,0,31,128,6,0,15,224,63,0,7,255,248,0,1,255, + 240,0,0,63,128,0,20,20,60,20,0,0,0,32,0,0, + 240,0,0,240,0,1,248,0,1,248,0,1,248,0,3,188, + 0,3,60,0,3,60,0,7,30,0,6,30,0,14,31,0, + 15,255,0,12,7,0,28,7,128,24,7,128,24,3,128,56, + 3,192,56,3,192,254,15,240,17,20,60,19,1,0,63,224, + 0,252,120,0,60,60,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,60,0,60,120,0,63,248,0,60,30,0,60, + 15,0,60,15,0,60,7,128,60,7,128,60,7,128,60,7, + 128,60,15,0,124,30,0,255,248,0,16,20,40,18,1,0, + 1,254,6,31,28,14,56,4,56,0,112,0,112,0,240,0, + 240,0,240,0,240,0,240,0,240,0,248,0,120,0,124,3, + 63,14,31,252,15,248,3,224,18,20,60,20,1,0,63,240, + 0,252,60,0,60,14,0,60,15,0,60,7,128,60,7,128, + 60,3,192,60,3,192,60,3,192,60,3,192,60,3,192,60, + 3,192,60,3,192,60,3,128,60,7,128,60,7,128,60,15, + 0,60,14,0,124,28,0,255,240,0,15,20,40,17,1,0, + 255,252,124,12,60,12,60,12,60,12,60,0,60,0,60,0, + 60,0,63,240,60,32,60,0,60,0,60,0,60,0,60,0, + 60,2,60,6,124,14,255,254,14,20,40,16,1,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,126,0,255,0,18,20,60,19,1,0,1,254,0,6, + 15,0,28,6,0,56,4,0,56,0,0,120,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,127,192,240,127,192, + 240,15,0,240,15,0,120,15,0,120,15,0,60,15,0,30, + 15,0,15,254,0,3,240,0,20,20,60,22,1,0,255,15, + 240,126,7,224,60,3,192,60,3,192,60,3,192,60,3,192, + 60,3,192,60,3,192,60,3,192,63,255,192,60,3,192,60, + 3,192,60,3,192,60,3,192,60,3,192,60,3,192,60,3, + 192,60,3,192,126,7,224,255,15,240,8,20,20,10,1,0, + 255,126,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,126,255,14,27,54,11,252,249,7,252,1,248,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,224,1,224,49,192,127,128,255,0,60,0, + 19,20,60,20,1,0,255,31,192,126,15,0,60,14,0,60, + 28,0,60,56,0,60,112,0,60,224,0,60,224,0,61,192, + 0,63,128,0,63,192,0,61,224,0,60,240,0,60,120,0, + 60,60,0,60,62,0,60,31,0,60,15,128,126,7,224,255, + 3,128,15,20,40,16,1,0,255,0,126,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 25,20,80,27,1,0,252,0,31,128,62,0,62,0,62,0, + 62,0,62,0,126,0,63,0,126,0,55,0,254,0,55,128, + 222,0,55,129,222,0,51,193,158,0,51,195,158,0,49,195, + 158,0,49,227,30,0,48,231,30,0,48,246,30,0,48,254, + 30,0,48,124,30,0,48,124,30,0,48,56,30,0,120,56, + 63,0,252,24,127,128,19,20,60,21,1,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,20,60,20,1,0,3,240, + 0,12,28,0,28,14,0,56,7,0,56,7,128,112,7,128, + 112,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,248,3,128,120,7,128,120,7,0,60,15, + 0,30,30,0,15,248,0,3,224,0,16,20,40,18,1,0, + 63,240,252,60,60,30,60,15,60,15,60,15,60,15,60,15, + 60,14,60,30,62,60,61,240,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,128,21,25,75,20,1,251,3,240, + 0,14,28,0,28,14,0,56,15,0,56,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,128,120,3,128,120,7,128,60,7, + 0,28,14,0,14,28,0,3,248,0,0,60,0,0,15,8, + 0,7,248,0,3,240,0,0,224,18,20,60,19,1,0,63, + 224,0,252,120,0,60,60,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,60,0,60,252,0,63,240,0,63,224,0, + 60,240,0,60,112,0,60,120,0,60,60,0,60,62,0,60, + 30,0,60,15,0,126,15,192,255,7,128,13,20,40,16,2, + 0,15,224,48,224,96,96,224,0,224,0,240,0,252,0,127, + 0,127,192,31,224,15,240,3,248,0,248,0,120,128,120,192, + 120,192,112,224,224,255,192,63,0,18,20,60,19,0,0,255, + 255,192,193,225,192,193,224,192,193,224,192,129,224,128,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,3,240,0,7,248,0,19,20,60,21,1, + 0,255,7,224,126,3,192,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,3, + 0,30,3,0,15,6,0,7,252,0,3,240,0,21,20,60, + 21,0,0,255,3,248,60,0,224,60,0,192,30,0,192,30, + 1,128,15,1,128,15,3,128,15,3,0,7,131,0,7,135, + 0,3,198,0,3,198,0,3,206,0,1,236,0,1,236,0, + 0,248,0,0,248,0,0,248,0,0,112,0,0,96,0,27, + 20,80,27,0,0,255,6,15,224,60,6,3,192,28,15,3, + 128,28,15,3,0,28,15,3,0,30,31,131,0,30,27,131, + 0,14,27,199,0,14,59,198,0,15,49,198,0,15,49,230, + 0,7,112,238,0,7,96,252,0,7,224,252,0,7,192,124, + 0,3,192,124,0,3,192,60,0,3,128,56,0,3,128,56, + 0,3,0,16,0,20,20,60,20,0,0,127,143,224,62,3, + 128,30,7,0,15,6,0,15,142,0,7,140,0,3,220,0, + 3,248,0,1,240,0,0,240,0,0,248,0,1,248,0,3, + 188,0,3,190,0,7,30,0,6,15,0,14,15,128,28,7, + 128,60,7,192,254,31,240,19,20,60,20,0,0,252,7,224, + 60,3,192,30,3,128,15,3,0,15,7,0,7,134,0,3, + 142,0,3,204,0,1,220,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,1,248,0,3,252,0,15,20,40,17,1,0,127, + 254,96,62,96,124,64,124,64,248,0,240,1,240,1,224,3, + 224,7,192,7,192,15,128,15,0,31,0,62,0,62,2,124, + 2,124,6,248,6,255,254,9,30,60,11,2,251,255,128,255, + 128,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,255,128,255,128,13,30,60,15,1,251,192, + 0,224,0,224,0,112,0,112,0,48,0,56,0,56,0,28, + 0,28,0,28,0,14,0,14,0,6,0,7,0,7,0,3, + 128,3,128,3,128,1,192,1,192,0,192,0,224,0,224,0, + 112,0,112,0,112,0,56,0,56,0,24,9,30,60,11,0, + 251,255,128,255,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,255,128,255,128,12,15,30, + 16,2,9,2,0,6,0,15,0,15,0,27,0,27,128,17, + 128,49,192,49,192,96,192,96,224,96,96,192,112,192,48,128, + 32,14,2,4,15,1,252,255,252,255,248,7,8,8,10,0, + 16,112,240,120,56,60,28,14,6,14,15,30,16,1,0,31, + 192,112,224,240,240,192,240,0,240,3,240,31,240,63,240,120, + 240,240,240,240,240,240,240,251,252,126,248,56,96,16,24,48, + 17,0,0,12,0,252,0,124,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,120,61,252,63,254,63,30,60,15,60, + 7,60,7,60,7,60,7,60,6,60,14,62,28,63,248,31, + 240,7,192,13,15,30,15,1,0,3,248,12,120,56,48,112, + 16,112,0,240,0,240,0,240,0,240,0,248,0,248,8,124, + 56,63,240,31,224,15,128,16,24,48,18,1,0,0,28,0, + 252,0,60,0,60,0,60,0,60,0,60,0,60,0,60,7, + 252,24,124,56,60,112,60,112,60,240,60,240,60,240,60,240, + 60,248,60,248,60,124,124,127,255,63,190,30,24,13,15,30, + 15,1,0,7,192,24,224,56,112,112,120,112,120,240,120,255, + 240,240,0,240,0,240,0,248,8,124,56,127,240,63,224,15, + 128,13,24,48,11,1,0,1,240,7,248,14,112,28,32,28, + 0,60,0,60,0,60,0,60,0,255,192,60,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,127,0,255,128,16,23,46,17,0,248,7,227,28, + 127,56,126,120,60,120,60,120,60,120,60,60,56,60,112,15, + 192,14,0,28,0,31,192,63,252,15,254,31,255,120,127,240, + 15,240,14,240,14,120,28,63,248,15,192,17,24,72,18,1, + 0,12,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,120,0,61, + 252,0,63,254,0,63,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,126,63,0,255,127,128,8,21,21,10,1,0,28, + 62,62,28,0,0,28,252,124,60,60,60,60,60,60,60,60, + 60,60,126,255,12,29,58,9,251,248,0,224,1,240,1,240, + 0,224,0,0,0,0,0,224,7,224,3,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,192,1,192,99,128,255,0, + 254,0,120,0,17,24,72,18,1,0,12,0,0,252,0,0, + 124,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,63,128,60,30,0,60,60,0,60,112, + 0,60,224,0,61,192,0,63,192,0,63,224,0,61,224,0, + 60,240,0,60,120,0,60,60,0,60,62,0,126,31,128,255, + 15,0,8,24,24,10,1,0,12,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 26,15,60,28,1,0,28,120,60,0,252,252,254,0,127,255, + 255,0,63,31,143,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,126,63,31,128,255,127, + 191,192,17,15,45,18,1,0,12,60,0,252,252,0,127,254, + 0,63,30,0,62,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,15,15,30,17,1,0,7,224,24,112,56, + 56,112,60,112,30,240,30,240,30,240,30,240,30,240,30,240, + 28,120,28,56,56,28,48,15,192,16,23,46,18,1,248,12, + 120,252,252,127,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,62,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,23,69, + 18,1,248,3,194,0,12,54,0,56,30,0,112,30,0,112, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,248,30, + 0,248,30,0,124,126,0,127,254,0,63,222,0,15,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,63,0,0,255,128,13,15,30,14,1,0,24,240, + 249,248,123,248,62,48,60,48,60,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,11,15,30,13, + 1,0,31,192,97,192,225,128,224,128,248,0,254,0,127,128, + 127,192,31,224,7,224,129,224,192,224,192,192,224,192,255,0, + 11,20,40,12,0,0,4,0,28,0,60,0,60,0,60,0, + 255,224,60,64,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,96,63,224,31,128,14,0,17,15, + 45,18,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,16,15,30,16,0,0,254,31,124,14,60,12,60,12,30, + 28,30,24,15,24,15,48,7,48,7,240,7,224,3,224,3, + 192,1,192,1,128,23,15,45,23,0,0,254,24,62,124,24, + 28,60,28,24,60,60,24,28,62,48,30,126,48,30,111,48, + 14,111,112,15,199,96,15,199,224,7,195,224,7,131,192,7, + 131,192,3,1,192,2,1,128,16,15,30,17,0,0,255,63, + 62,28,30,24,15,48,15,240,7,224,3,192,3,224,3,224, + 6,240,14,248,28,120,24,60,120,62,252,127,17,23,69,16, + 255,248,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,13,15,30,15,1,0,127,248,96, + 248,65,240,65,224,3,224,7,192,7,128,15,128,15,0,31, + 0,62,16,60,24,124,24,248,24,255,248,9,30,60,12,2, + 251,1,0,7,128,14,0,28,0,60,0,60,0,60,0,60, + 0,62,0,30,0,30,0,30,0,30,0,60,0,120,0,252, + 0,60,0,30,0,30,0,30,0,30,0,62,0,60,0,60, + 0,60,0,60,0,28,0,30,0,7,0,1,128,2,32,32, + 7,3,250,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,128,9,30,60,12,1,251,64,0,240,0,60,0,28, + 0,30,0,30,0,30,0,30,0,62,0,60,0,60,0,60, + 0,60,0,30,0,31,128,15,0,30,0,60,0,60,0,60, + 0,60,0,62,0,30,0,30,0,30,0,30,0,28,0,56, + 0,112,0,192,0,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,8,0,0,5,24, + 24,10,2,247,112,248,248,248,112,0,0,48,48,48,48,112, + 112,112,112,120,120,120,120,120,120,120,120,96,13,20,40,16, + 2,255,3,0,3,0,3,0,15,248,31,248,59,56,115,16, + 227,0,227,0,227,0,227,0,227,0,227,0,115,24,123,48, + 63,224,31,192,3,0,3,0,3,0,14,19,38,16,1,0, + 1,252,6,60,14,28,28,12,28,8,60,0,60,0,60,0, + 60,0,255,224,60,0,60,0,60,0,60,4,56,4,56,12, + 127,252,255,252,128,48,12,13,26,16,2,3,192,48,239,112, + 112,224,48,192,96,96,96,96,96,96,96,96,112,224,57,192, + 111,96,192,48,128,16,18,19,57,16,255,0,248,31,192,252, + 15,128,62,6,0,30,14,0,31,12,0,15,156,0,7,152, + 0,7,248,0,3,240,0,3,240,0,3,240,0,1,224,0, + 63,255,0,1,224,0,1,224,0,1,224,0,1,224,0,3, + 240,0,7,248,0,2,32,32,7,3,250,64,192,192,192,192, + 192,192,192,192,192,192,192,192,192,128,0,0,64,192,192,192, + 192,192,192,192,192,192,192,192,192,192,128,12,22,44,16,2, + 0,15,192,49,224,112,224,112,64,124,0,126,0,63,128,127, + 192,99,224,225,240,224,240,240,112,252,112,127,112,63,224,31, + 192,7,224,65,224,64,224,224,224,240,192,127,0,11,5,10, + 13,1,17,112,224,241,224,241,224,241,224,225,192,21,21,63, + 23,1,0,1,252,0,7,7,0,12,1,128,24,0,192,48, + 126,96,96,199,48,97,134,48,195,2,24,199,0,24,199,0, + 24,199,0,24,199,0,24,199,0,24,199,128,24,99,199,48, + 97,252,48,48,248,96,16,0,64,8,1,128,6,3,0,1, + 252,0,7,11,11,9,1,9,60,204,140,60,108,204,206,252, + 0,0,254,14,15,30,16,1,0,2,8,6,28,12,56,28, + 112,56,112,120,224,241,224,243,192,241,224,120,224,56,112,28, + 112,12,56,6,24,2,12,13,7,14,16,2,3,255,248,255, + 248,0,24,0,24,0,24,0,24,0,16,10,2,4,11,1, + 7,255,192,255,128,12,11,22,11,0,11,31,128,48,192,126, + 96,219,48,219,48,222,48,219,48,217,48,100,224,48,192,31, + 128,14,3,6,16,1,18,127,248,127,252,255,248,7,8,8, + 11,2,12,60,126,70,198,198,204,252,120,12,15,30,13,1, + 2,6,0,6,0,6,0,6,0,6,0,127,240,255,224,6, + 0,6,0,6,0,6,0,4,0,0,0,255,240,255,224,8, + 11,11,11,2,10,62,115,227,3,6,6,12,24,49,97,255, + 9,11,22,11,1,10,62,0,231,0,231,0,7,0,28,0, + 63,0,7,128,3,128,3,128,199,0,126,0,8,8,8,10, + 3,16,28,30,63,60,120,112,224,192,18,23,69,19,1,248, + 28,6,0,252,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,62,62,0,63,255,128,63,223,192,51,142,0,48,0,0, + 48,0,0,56,0,0,56,0,0,56,0,0,60,0,0,62, + 0,0,48,0,0,17,24,72,19,1,252,15,255,128,60,127, + 0,120,102,0,112,102,0,240,102,0,240,102,0,240,102,0, + 240,102,0,120,102,0,120,102,0,60,102,0,15,230,0,0, + 102,0,0,102,0,0,102,0,0,102,0,0,102,0,0,102, + 0,0,102,0,0,102,0,0,102,0,0,102,0,0,255,0, + 1,255,128,5,5,5,7,1,8,112,248,248,248,112,7,7, + 7,7,0,249,24,48,60,62,30,60,240,8,11,11,11,2, + 10,8,248,24,24,24,24,24,24,24,24,255,7,11,11,9, + 1,9,56,76,198,198,198,198,198,108,56,0,254,13,15,30, + 16,2,0,129,0,195,128,97,128,112,192,56,224,60,112,30, + 120,30,120,30,120,60,112,56,224,112,192,97,192,193,128,131, + 0,17,19,57,20,2,0,48,3,128,240,3,0,48,6,0, + 48,12,0,48,28,0,48,24,0,48,48,0,48,96,0,120, + 224,0,132,193,0,1,135,0,3,15,0,7,11,0,6,19, + 0,12,51,0,24,63,128,56,67,0,48,3,0,224,15,128, + 17,19,57,20,2,0,48,1,128,240,3,0,48,7,0,48, + 6,0,48,12,0,48,24,0,48,56,0,48,48,0,120,96, + 0,132,192,0,1,207,0,1,153,128,3,49,128,7,1,0, + 14,3,0,12,6,0,24,12,0,56,24,128,112,63,128,18, + 19,57,20,1,0,60,1,192,102,1,128,70,3,0,12,6, + 0,28,14,0,6,12,0,6,24,0,134,48,0,124,112,0, + 0,96,128,0,195,128,1,135,128,3,133,128,3,9,128,6, + 25,128,12,31,192,28,33,128,24,1,128,112,7,192,13,23, + 46,15,1,248,7,0,15,128,15,128,15,128,7,0,0,0, + 0,0,3,0,3,0,3,0,7,0,6,0,14,0,28,0, + 60,0,120,0,112,0,240,24,240,120,240,120,240,120,120,240, + 63,192,20,28,84,20,0,0,3,0,0,7,128,0,7,192, + 0,15,224,0,1,224,0,0,112,0,0,24,0,0,0,0, + 0,32,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 248,0,3,188,0,3,60,0,3,60,0,7,30,0,6,30, + 0,14,31,0,15,255,0,12,7,0,28,7,128,24,7,128, + 24,3,128,56,3,192,56,3,192,254,15,240,20,28,84,20, + 0,0,0,8,0,0,30,0,0,62,0,0,124,0,0,240, + 0,1,224,0,1,128,0,0,0,0,0,32,0,0,240,0, + 0,240,0,1,248,0,1,248,0,1,248,0,3,188,0,3, + 60,0,3,60,0,7,30,0,6,30,0,14,31,0,15,255, + 0,12,7,0,28,7,128,24,7,128,24,3,128,56,3,192, + 56,3,192,254,15,240,20,27,81,20,0,0,0,224,0,0, + 240,0,1,248,0,3,252,0,7,14,0,4,6,0,0,0, + 0,0,32,0,0,240,0,0,240,0,1,248,0,1,248,0, + 1,248,0,3,188,0,3,60,0,3,60,0,7,30,0,6, + 30,0,14,31,0,15,255,0,12,7,0,28,7,128,24,7, + 128,24,3,128,56,3,192,56,3,192,254,15,240,20,26,78, + 20,0,0,3,195,0,7,254,0,7,254,0,12,124,0,8, + 0,0,0,0,0,0,32,0,0,240,0,0,240,0,1,248, + 0,1,248,0,1,248,0,3,188,0,3,60,0,3,60,0, + 7,30,0,6,30,0,14,31,0,15,255,0,12,7,0,28, + 7,128,24,7,128,24,3,128,56,3,192,56,3,192,254,15, + 240,20,26,78,20,0,0,6,12,0,15,30,0,15,30,0, + 15,30,0,14,28,0,0,0,0,0,32,0,0,240,0,0, + 240,0,1,248,0,1,248,0,1,248,0,3,188,0,3,60, + 0,3,60,0,7,30,0,6,30,0,14,31,0,15,255,0, + 12,7,0,28,7,128,24,7,128,24,3,128,56,3,192,56, + 3,192,254,15,240,20,27,81,20,0,0,0,112,0,1,152, + 0,1,152,0,1,144,0,0,224,0,0,0,0,0,0,0, + 0,32,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 248,0,3,188,0,3,60,0,3,60,0,7,30,0,6,30, + 0,14,31,0,15,255,0,12,7,0,28,7,128,24,7,128, + 24,3,128,56,3,192,56,3,192,254,15,240,25,20,80,26, + 0,0,3,255,255,0,0,255,3,0,0,255,3,0,0,239, + 3,0,0,239,3,0,1,207,0,0,1,207,0,0,3,143, + 0,0,3,143,0,0,3,255,254,0,7,15,4,0,6,15, + 0,0,14,15,0,0,14,15,0,0,12,15,0,0,28,15, + 0,0,24,15,0,128,24,15,1,128,56,31,1,128,254,63, + 255,128,16,27,54,18,1,249,1,254,6,31,28,14,56,4, + 56,0,112,0,112,0,240,0,240,0,240,0,240,0,240,0, + 240,0,248,0,120,0,124,1,126,7,63,254,31,252,15,240, + 0,192,1,192,1,240,0,240,0,240,1,224,3,128,15,28, + 56,17,1,0,8,0,28,0,62,0,31,0,7,128,1,192, + 0,64,0,0,255,252,124,12,60,12,60,12,60,12,60,0, + 60,0,60,0,60,0,63,240,60,32,60,0,60,0,60,0, + 60,0,60,0,60,2,60,6,124,14,255,254,15,28,56,17, + 1,0,0,96,0,240,1,248,1,240,3,192,7,0,12,0, + 0,0,255,252,124,12,60,12,60,12,60,12,60,0,60,0, + 60,0,60,0,63,240,60,32,60,0,60,0,60,0,60,0, + 60,0,60,2,60,6,124,14,255,254,15,27,54,17,1,0, + 3,128,7,192,15,192,31,224,28,112,48,24,0,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,2, + 60,6,124,14,255,254,15,26,52,17,1,0,56,112,56,112, + 120,240,120,240,48,96,0,0,255,252,124,12,60,12,60,12, + 60,12,60,0,60,0,60,0,60,0,63,240,60,32,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 9,28,56,10,0,0,32,0,240,0,248,0,124,0,30,0, + 15,0,3,0,0,0,127,128,63,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,63,0,127,128,10,28, + 56,10,1,0,2,0,7,128,15,192,31,0,62,0,120,0, + 96,0,0,0,255,0,126,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,10,27,54,10, + 0,0,12,0,30,0,63,0,127,128,225,192,192,64,0,0, + 127,128,63,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,127,128,11,26,52,10,255,0,112,224, + 241,224,241,224,241,224,96,192,0,0,63,192,31,128,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,31,128, + 63,192,18,20,60,20,1,0,63,240,0,252,60,0,60,14, + 0,60,15,0,60,7,128,60,7,128,60,3,192,60,3,192, + 60,3,192,255,195,192,60,3,192,60,3,192,60,3,192,60, + 3,128,60,7,128,60,7,128,60,15,0,60,14,0,124,28, + 0,255,240,0,19,26,78,21,1,0,3,195,0,7,254,0, + 15,252,0,12,120,0,24,0,0,0,0,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,28,84,20,1,0,2,0, + 0,15,0,0,15,128,0,7,192,0,3,224,0,0,240,0, + 0,48,0,0,0,0,3,240,0,12,28,0,28,14,0,56, + 7,0,56,7,128,112,7,128,112,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,248,3,128, + 120,7,128,120,7,0,60,15,0,30,30,0,15,248,0,3, + 224,0,18,28,84,20,1,0,0,16,0,0,60,0,0,124, + 0,0,248,0,1,224,0,3,192,0,3,0,0,0,0,0, + 3,240,0,12,28,0,28,14,0,56,7,0,56,7,128,112, + 7,128,112,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,248,3,128,120,7,128,120,7,0, + 60,15,0,30,30,0,15,248,0,3,224,0,18,27,81,20, + 1,0,0,192,0,1,224,0,3,240,0,7,248,0,14,28, + 0,8,12,0,0,0,0,3,240,0,12,28,0,28,14,0, + 56,7,0,56,7,128,112,7,128,112,3,192,240,3,192,240, + 3,192,240,3,192,240,3,192,240,3,192,240,3,192,248,3, + 128,120,7,128,120,7,0,60,15,0,30,30,0,15,248,0, + 3,224,0,18,26,78,20,1,0,3,198,0,15,252,0,15, + 252,0,24,120,0,16,0,0,0,0,0,3,240,0,12,28, + 0,28,14,0,56,7,0,56,7,128,112,7,128,112,3,192, + 240,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,248,3,128,120,7,128,120,7,0,60,15,0,30,30, + 0,15,248,0,3,224,0,18,26,78,20,1,0,14,28,0, + 30,60,0,30,60,0,30,60,0,28,56,0,0,0,0,3, + 240,0,12,28,0,28,14,0,56,7,0,56,7,128,112,7, + 128,112,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,192,248,3,128,120,7,128,120,7,0,60, + 15,0,30,30,0,15,248,0,3,224,0,11,10,20,13,1, + 4,96,96,240,224,57,192,31,128,15,0,15,0,31,128,57, + 192,112,224,224,96,18,21,63,20,1,255,3,241,192,12,31, + 128,28,15,0,56,15,0,56,31,128,112,63,128,112,63,192, + 240,123,192,240,243,192,240,227,192,241,195,192,241,195,192,243, + 131,192,247,3,128,126,7,128,126,7,0,60,7,0,62,14, + 0,127,248,0,227,224,0,128,0,0,19,28,84,21,1,0, + 3,0,0,7,128,0,15,192,0,7,192,0,1,224,0,0, + 112,0,0,24,0,0,0,0,255,7,224,126,3,192,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,3,0,30,3,0,15,6,0,7,252, + 0,3,240,0,19,28,84,21,1,0,0,8,0,0,30,0, + 0,62,0,0,124,0,0,240,0,1,192,0,1,128,0,0, + 0,0,255,7,224,126,3,192,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 3,0,30,3,0,15,6,0,7,252,0,3,240,0,19,27, + 81,21,1,0,0,224,0,0,240,0,1,248,0,3,252,0, + 7,14,0,12,6,0,0,0,0,255,7,224,126,3,192,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,3,0,30,3,0,15,6,0,7, + 252,0,3,240,0,19,26,78,21,1,0,6,12,0,15,30, + 0,15,30,0,15,30,0,14,28,0,0,0,0,255,7,224, + 126,3,192,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,1, + 128,60,1,128,60,1,128,60,1,128,60,3,0,30,3,0, + 15,6,0,7,252,0,3,240,0,19,28,84,20,0,0,0, + 8,0,0,30,0,0,62,0,0,124,0,0,240,0,1,192, + 0,1,128,0,0,0,0,252,7,224,60,3,192,30,3,128, + 15,3,0,15,7,0,7,134,0,3,142,0,3,204,0,1, + 220,0,1,248,0,0,248,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,1,248,0, + 3,252,0,16,20,40,18,1,0,255,128,126,0,60,0,60, + 0,63,240,60,60,60,30,60,15,60,15,60,15,60,15,60, + 14,60,30,60,60,63,240,60,0,60,0,60,0,126,0,255, + 128,18,24,72,21,1,0,0,248,0,3,254,0,15,31,0, + 14,15,128,28,7,128,28,7,128,60,7,128,60,7,128,60, + 15,0,60,60,0,60,112,0,60,224,0,60,224,0,60,240, + 0,60,252,0,60,127,0,60,63,128,60,15,192,60,7,192, + 61,3,192,60,129,192,60,193,128,124,225,128,252,254,0,14, + 24,48,16,1,0,28,0,62,0,30,0,15,0,7,0,3, + 128,1,128,0,192,0,0,31,192,112,224,240,240,192,240,0, + 240,3,240,31,240,63,240,120,240,240,240,240,240,240,240,251, + 252,126,248,56,96,14,24,48,16,1,0,0,224,1,240,1, + 224,3,192,3,128,3,0,7,0,6,0,0,0,31,192,112, + 224,240,240,192,240,0,240,3,240,31,240,63,240,120,240,240, + 240,240,240,240,240,251,252,126,248,56,96,14,23,46,16,1, + 0,3,128,7,128,15,192,31,224,28,224,56,48,32,16,0, + 0,31,192,112,224,240,240,192,240,0,240,3,240,31,240,63, + 240,120,240,240,240,240,240,240,240,251,252,126,248,56,96,14, + 22,44,16,1,0,14,8,31,24,63,240,99,240,64,224,0, + 0,0,0,31,192,112,224,240,240,192,240,0,240,3,240,31, + 240,63,240,120,240,240,240,240,240,240,240,251,252,126,248,56, + 96,14,22,44,16,1,0,56,112,120,240,120,240,120,240,48, + 96,0,0,0,0,31,192,112,224,240,240,192,240,0,240,3, + 240,31,240,63,240,120,240,240,240,240,240,240,240,251,252,126, + 248,56,96,14,22,44,16,1,0,3,128,4,192,12,192,12, + 192,7,128,0,0,0,0,31,192,112,224,240,240,192,240,0, + 240,3,240,31,240,63,240,120,240,240,240,240,240,240,240,251, + 252,126,248,56,96,22,15,45,23,1,0,3,227,224,31,252, + 112,60,252,56,120,120,60,112,120,60,128,120,60,7,255,248, + 28,120,0,120,120,0,112,120,0,240,124,8,249,254,28,255, + 191,248,127,31,240,60,7,192,14,22,44,15,1,249,3,248, + 12,120,56,48,112,16,112,0,240,0,240,0,240,0,240,0, + 240,0,248,8,124,28,63,248,31,240,15,192,3,0,3,192, + 3,224,5,224,1,224,3,192,14,0,13,24,48,15,1,0, + 14,0,30,0,31,0,15,0,7,128,3,128,1,192,0,192, + 0,0,7,192,24,224,56,112,112,120,112,120,240,120,255,240, + 240,0,240,0,240,0,248,8,124,56,127,240,63,224,15,128, + 13,24,48,15,1,0,0,224,0,240,1,240,1,224,3,192, + 3,128,7,0,6,0,0,0,7,192,24,224,56,112,112,120, + 112,120,240,120,255,240,240,0,240,0,240,0,248,8,124,56, + 127,240,63,224,15,128,13,23,46,15,1,0,3,128,7,192, + 15,192,15,224,28,112,56,48,48,24,0,0,7,192,24,224, + 56,112,112,120,112,120,240,120,255,240,240,0,240,0,240,0, + 248,8,124,56,127,240,63,224,15,128,13,22,44,15,1,0, + 56,112,56,112,120,240,120,240,48,96,0,0,0,0,7,192, + 24,224,56,112,112,120,112,120,240,120,255,240,240,0,240,0, + 240,0,248,8,124,56,127,240,63,224,15,128,9,24,48,10, + 0,0,112,0,248,0,120,0,60,0,28,0,14,0,6,0, + 2,0,0,0,14,0,126,0,62,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,63,0, + 127,128,9,24,48,10,1,0,7,0,15,128,15,0,30,0, + 28,0,56,0,48,0,32,0,0,0,28,0,252,0,124,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,0,10,23,46,10,0,0,28,0, + 30,0,63,0,127,0,115,128,193,192,128,64,0,0,14,0, + 126,0,62,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,63,0,127,128,11,22,44,10, + 255,0,112,224,241,224,241,224,241,224,225,192,0,0,0,0, + 7,0,63,0,31,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,31,128,63,192,14,23, + 46,16,1,0,14,0,63,28,95,248,3,224,15,224,60,224, + 0,112,0,56,15,248,24,248,56,124,112,60,112,60,240,60, + 240,60,240,60,240,60,240,56,240,56,120,112,120,112,60,96, + 15,128,17,22,66,19,1,0,7,6,0,15,204,0,31,252, + 0,17,248,0,48,112,0,0,0,0,0,0,0,12,60,0, + 252,252,0,127,254,0,63,30,0,62,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,126,63,0,255,127,128,15,24,48,17,1,0, + 14,0,31,0,15,0,7,0,3,128,1,128,0,192,0,192, + 0,0,7,224,24,112,56,56,112,60,112,30,240,30,240,30, + 240,30,240,30,240,30,240,28,120,28,56,56,28,48,15,192, + 15,24,48,17,1,0,0,240,0,248,0,240,1,224,1,192, + 3,128,3,0,6,0,0,0,7,224,24,112,56,56,112,60, + 112,30,240,30,240,30,240,30,240,30,240,30,240,28,120,28, + 56,56,28,48,15,192,15,23,46,17,1,0,3,128,3,192, + 7,224,15,224,30,112,24,56,48,24,0,0,7,224,24,112, + 56,56,112,60,112,30,240,30,240,30,240,30,240,30,240,30, + 240,28,120,28,56,56,28,48,15,192,15,22,44,17,1,0, + 14,12,31,136,31,248,49,240,32,224,0,0,0,0,7,224, + 24,112,56,56,112,60,112,30,240,30,240,30,240,30,240,30, + 240,30,240,28,120,28,56,56,28,48,15,192,15,22,44,17, + 1,0,24,48,60,120,60,120,56,112,56,112,0,0,0,0, + 7,224,24,112,56,56,112,60,112,30,240,30,240,30,240,30, + 240,30,240,30,240,28,120,28,56,56,28,48,15,192,12,12, + 24,13,1,3,6,0,14,0,14,0,12,0,0,0,255,240, + 255,224,0,0,6,0,14,0,14,0,12,0,15,16,32,17, + 1,255,7,238,24,124,56,60,112,124,112,254,240,254,241,222, + 243,158,243,158,247,30,254,28,124,28,124,56,124,48,111,192, + 128,0,17,24,72,18,0,0,7,0,0,15,128,0,7,128, + 0,3,192,0,1,192,0,0,224,0,0,96,0,0,48,0, + 0,0,0,28,14,0,252,126,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,126,0,63,255,128,31,223,0,15,12,0, + 17,24,72,18,0,0,0,56,0,0,124,0,0,120,0,0, + 240,0,0,224,0,0,192,0,1,128,0,1,128,0,0,0, + 0,28,14,0,252,126,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,126,0,63,255,128,31,223,0,15,12,0,17,23, + 69,18,0,0,0,192,0,1,224,0,3,240,0,7,248,0, + 7,56,0,14,12,0,8,4,0,0,0,0,28,14,0,252, + 126,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,126,0, + 63,255,128,31,223,0,15,12,0,17,22,66,18,0,0,14, + 28,0,30,60,0,30,60,0,30,60,0,12,24,0,0,0, + 0,0,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,17,32,96,16,255,248,0,56,0,0,62,0,0,124,0, + 0,120,0,0,240,0,0,224,0,0,192,0,1,128,0,0, + 0,0,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,16,32,64,18,1,248,12,0,252, + 0,124,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 120,61,252,63,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,63,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,30,90, + 16,255,248,6,12,0,15,30,0,15,30,0,14,28,0,14, + 28,0,0,0,0,0,0,0,127,15,128,62,7,0,30,6, + 0,30,6,0,15,14,0,15,12,0,7,140,0,7,152,0, + 7,152,0,3,248,0,3,240,0,1,240,0,1,240,0,1, + 224,0,0,224,0,0,192,0,0,192,0,1,192,0,1,128, + 0,39,128,0,127,0,0,254,0,0,120,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 19 + Calculated Max Values w=14 h=30 x= 2 y=11 dx=17 dy= 0 ascent=25 len=60 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =19 descent= 0 + X Font ascent =19 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20n[624] U8G_SECTION(".progmem.u8g_font_gdb20n") = { + 0,49,47,240,244,19,0,0,0,0,42,57,0,25,250,19, + 0,12,13,26,14,1,11,3,0,15,0,70,64,102,112,246, + 240,63,192,15,0,63,224,254,240,230,112,70,32,7,0,14, + 0,12,12,24,13,1,3,6,0,6,0,6,0,6,0,6, + 0,127,240,255,224,6,0,6,0,6,0,6,0,6,0,6, + 10,10,9,2,250,56,252,252,60,60,56,56,112,96,192,10, + 2,4,11,1,7,255,192,255,128,5,5,5,9,2,255,112, + 248,248,248,112,14,30,60,15,1,251,0,28,0,56,0,56, + 0,120,0,112,0,112,0,224,0,224,0,224,1,192,1,192, + 3,128,3,128,3,128,7,0,7,0,7,0,14,0,14,0, + 28,0,28,0,28,0,56,0,56,0,120,0,112,0,112,0, + 224,0,224,0,192,0,14,18,36,16,1,0,7,192,24,224, + 56,112,112,120,112,120,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,240,56,112,56,120,56,56,112,28,96,15,128, + 13,19,38,16,2,0,1,128,15,128,127,128,239,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,63,224,127,248,13,19,38,16, + 1,0,15,224,56,240,120,120,240,120,112,120,0,120,0,240, + 0,240,1,224,1,192,3,128,7,0,14,0,28,8,28,8, + 56,24,127,248,255,248,255,248,13,19,38,16,1,0,31,128, + 121,224,112,240,240,240,64,240,0,240,1,224,7,192,15,192, + 3,240,0,240,0,120,0,120,0,120,0,120,128,240,192,240, + 127,224,31,128,14,19,38,17,1,0,0,48,1,240,1,240, + 3,240,7,240,6,240,12,240,12,240,24,240,56,240,48,240, + 96,240,255,252,255,248,0,240,0,240,0,240,1,248,7,252, + 13,19,38,16,1,0,63,248,63,240,63,224,112,0,112,0, + 96,0,96,0,127,128,127,224,97,240,0,248,0,120,0,120, + 0,120,0,120,0,112,128,240,193,224,127,128,14,20,40,16, + 1,0,0,112,3,240,7,128,15,0,28,0,60,0,120,0, + 120,0,115,224,255,240,252,120,240,124,240,60,240,60,240,60, + 112,60,120,56,56,56,28,112,7,192,13,19,38,16,2,0, + 255,248,255,248,255,240,192,48,128,96,128,96,0,224,0,192, + 1,192,1,128,3,128,3,128,7,0,7,0,14,0,14,0, + 30,0,28,0,56,0,14,19,38,16,1,0,15,192,24,240, + 48,120,112,120,112,120,120,120,126,240,63,192,31,224,15,240, + 63,248,120,252,248,124,240,60,240,60,240,56,112,56,56,112, + 31,192,14,20,40,16,1,255,7,192,24,240,56,120,112,120, + 240,60,240,60,240,60,240,60,248,60,124,124,63,252,31,60, + 0,56,0,120,0,112,0,240,1,224,7,128,63,0,56,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--32-320-72-72-P-159-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=16 dx=28 dy= 0 ascent=26 len=112 + Font Bounding box w=49 h=47 x=-16 y=-12 + Calculated Min Values x=-5 y=-8 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =26 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb20r[4680] U8G_SECTION(".progmem.u8g_font_gdb20r") = { + 0,49,47,240,244,20,5,86,12,137,32,127,248,26,248,25, + 248,0,0,0,8,0,0,5,24,24,10,2,255,24,120,120, + 120,120,120,120,120,120,112,112,112,112,48,48,48,48,0,0, + 112,248,248,248,112,11,10,20,15,2,13,56,224,243,224,241, + 224,241,192,113,192,113,192,113,192,113,192,112,192,96,192,15, + 18,36,16,1,2,1,140,3,152,3,24,3,24,3,56,63, + 254,63,254,6,112,14,96,12,96,12,96,127,252,255,248,24, + 192,24,192,57,128,49,128,49,128,14,25,50,16,1,253,3, + 0,3,0,3,0,31,240,63,248,115,120,227,56,227,16,243, + 0,255,0,127,0,63,224,15,240,3,248,3,124,3,28,195, + 28,195,28,227,28,251,120,255,240,63,224,3,0,3,0,3, + 0,21,20,60,23,1,0,0,0,96,30,0,192,115,129,192, + 97,131,128,225,195,0,225,198,0,225,206,0,225,220,0,97, + 152,0,115,176,0,30,113,224,0,231,112,1,198,48,1,142, + 56,3,142,56,7,14,56,14,14,56,12,6,48,28,7,48, + 56,3,192,21,23,69,22,1,0,1,240,0,7,120,0,14, + 60,0,14,60,0,30,60,0,30,124,0,30,120,0,31,240, + 0,31,224,0,15,192,0,15,128,0,31,143,248,63,195,160, + 123,225,128,123,241,128,241,249,128,240,251,0,240,127,0,240, + 126,0,248,63,0,120,31,240,63,247,240,15,195,192,5,10, + 10,9,2,13,56,240,240,240,112,112,112,112,112,96,9,30, + 60,11,2,251,1,0,3,128,6,0,14,0,28,0,60,0, + 56,0,120,0,120,0,112,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 120,0,56,0,60,0,28,0,30,0,14,0,7,0,1,128, + 9,30,60,11,0,251,64,0,240,0,56,0,60,0,28,0, + 30,0,14,0,15,0,15,0,15,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,0,15,0, + 15,0,15,0,14,0,30,0,28,0,56,0,48,0,96,0, + 192,0,12,13,26,14,1,11,3,0,15,0,70,64,102,112, + 246,240,63,192,15,0,63,224,254,240,230,112,70,32,7,0, + 14,0,12,12,24,13,1,3,6,0,6,0,6,0,6,0, + 6,0,127,240,255,224,6,0,6,0,6,0,6,0,6,0, + 6,10,10,9,2,250,56,252,252,60,60,56,56,112,96,192, + 10,2,4,11,1,7,255,192,255,128,5,5,5,9,2,255, + 112,248,248,248,112,14,30,60,15,1,251,0,28,0,56,0, + 56,0,120,0,112,0,112,0,224,0,224,0,224,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,28,0,28,0,28,0,56,0,56,0,120,0,112,0,112, + 0,224,0,224,0,192,0,14,18,36,16,1,0,7,192,24, + 224,56,112,112,120,112,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,56,112,56,120,56,56,112,28,96,15, + 128,13,19,38,16,2,0,1,128,15,128,127,128,239,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,224,127,248,13,19,38, + 16,1,0,15,224,56,240,120,120,240,120,112,120,0,120,0, + 240,0,240,1,224,1,192,3,128,7,0,14,0,28,8,28, + 8,56,24,127,248,255,248,255,248,13,19,38,16,1,0,31, + 128,121,224,112,240,240,240,64,240,0,240,1,224,7,192,15, + 192,3,240,0,240,0,120,0,120,0,120,0,120,128,240,192, + 240,127,224,31,128,14,19,38,17,1,0,0,48,1,240,1, + 240,3,240,7,240,6,240,12,240,12,240,24,240,56,240,48, + 240,96,240,255,252,255,248,0,240,0,240,0,240,1,248,7, + 252,13,19,38,16,1,0,63,248,63,240,63,224,112,0,112, + 0,96,0,96,0,127,128,127,224,97,240,0,248,0,120,0, + 120,0,120,0,120,0,112,128,240,193,224,127,128,14,20,40, + 16,1,0,0,112,3,240,7,128,15,0,28,0,60,0,120, + 0,120,0,115,224,255,240,252,120,240,124,240,60,240,60,240, + 60,112,60,120,56,56,56,28,112,7,192,13,19,38,16,2, + 0,255,248,255,248,255,240,192,48,128,96,128,96,0,224,0, + 192,1,192,1,128,3,128,3,128,7,0,7,0,14,0,14, + 0,30,0,28,0,56,0,14,19,38,16,1,0,15,192,24, + 240,48,120,112,120,112,120,120,120,126,240,63,192,31,224,15, + 240,63,248,120,252,248,124,240,60,240,60,240,56,112,56,56, + 112,31,192,14,20,40,16,1,255,7,192,24,240,56,120,112, + 120,240,60,240,60,240,60,240,60,248,60,124,124,63,252,31, + 60,0,56,0,120,0,112,0,240,1,224,7,128,63,0,56, + 0,5,16,16,9,2,255,112,248,248,248,112,0,0,0,0, + 0,0,112,248,248,248,112,6,21,21,9,2,250,112,248,248, + 248,112,0,0,0,0,0,0,56,252,252,60,60,56,56,112, + 96,192,13,10,20,15,1,4,0,24,0,240,7,240,63,128, + 252,0,248,0,127,0,15,224,1,248,0,48,13,7,14,15, + 1,5,255,248,255,240,0,0,0,0,0,0,255,248,255,240, + 13,10,20,15,1,4,96,0,252,0,63,128,7,240,0,248, + 1,240,15,224,127,0,248,0,192,0,12,24,48,15,1,255, + 31,192,121,224,240,240,240,240,240,240,192,240,0,240,1,224, + 1,192,3,192,3,128,7,0,7,0,6,0,6,0,6,0, + 0,0,0,0,0,0,14,0,31,0,31,0,31,0,14,0, + 26,28,112,28,1,249,0,31,192,0,0,255,248,0,3,255, + 252,0,7,224,62,0,15,128,15,0,30,0,7,128,60,30, + 35,128,60,49,225,128,120,97,225,192,120,225,224,192,240,225, + 224,192,241,225,224,192,241,225,224,192,241,225,224,192,241,225, + 224,192,241,225,225,128,241,225,225,128,248,243,227,0,120,255, + 254,0,120,125,252,0,124,56,240,0,62,0,0,0,62,0, + 2,0,31,128,6,0,15,224,63,0,7,255,248,0,1,255, + 240,0,0,63,128,0,20,20,60,20,0,0,0,32,0,0, + 240,0,0,240,0,1,248,0,1,248,0,1,248,0,3,188, + 0,3,60,0,3,60,0,7,30,0,6,30,0,14,31,0, + 15,255,0,12,7,0,28,7,128,24,7,128,24,3,128,56, + 3,192,56,3,192,254,15,240,17,20,60,19,1,0,63,224, + 0,252,120,0,60,60,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,60,0,60,120,0,63,248,0,60,30,0,60, + 15,0,60,15,0,60,7,128,60,7,128,60,7,128,60,7, + 128,60,15,0,124,30,0,255,248,0,16,20,40,18,1,0, + 1,254,6,31,28,14,56,4,56,0,112,0,112,0,240,0, + 240,0,240,0,240,0,240,0,240,0,248,0,120,0,124,3, + 63,14,31,252,15,248,3,224,18,20,60,20,1,0,63,240, + 0,252,60,0,60,14,0,60,15,0,60,7,128,60,7,128, + 60,3,192,60,3,192,60,3,192,60,3,192,60,3,192,60, + 3,192,60,3,192,60,3,128,60,7,128,60,7,128,60,15, + 0,60,14,0,124,28,0,255,240,0,15,20,40,17,1,0, + 255,252,124,12,60,12,60,12,60,12,60,0,60,0,60,0, + 60,0,63,240,60,32,60,0,60,0,60,0,60,0,60,0, + 60,2,60,6,124,14,255,254,14,20,40,16,1,0,255,252, + 124,12,60,12,60,12,60,12,60,0,60,0,60,0,60,0, + 63,240,60,32,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,126,0,255,0,18,20,60,19,1,0,1,254,0,6, + 15,0,28,6,0,56,4,0,56,0,0,120,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,127,192,240,127,192, + 240,15,0,240,15,0,120,15,0,120,15,0,60,15,0,30, + 15,0,15,254,0,3,240,0,20,20,60,22,1,0,255,15, + 240,126,7,224,60,3,192,60,3,192,60,3,192,60,3,192, + 60,3,192,60,3,192,60,3,192,63,255,192,60,3,192,60, + 3,192,60,3,192,60,3,192,60,3,192,60,3,192,60,3, + 192,60,3,192,126,7,224,255,15,240,8,20,20,10,1,0, + 255,126,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,126,255,14,27,54,11,252,249,7,252,1,248,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,224,1,224,49,192,127,128,255,0,60,0, + 19,20,60,20,1,0,255,31,192,126,15,0,60,14,0,60, + 28,0,60,56,0,60,112,0,60,224,0,60,224,0,61,192, + 0,63,128,0,63,192,0,61,224,0,60,240,0,60,120,0, + 60,60,0,60,62,0,60,31,0,60,15,128,126,7,224,255, + 3,128,15,20,40,16,1,0,255,0,126,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,2,60,6,124,14,255,254, + 25,20,80,27,1,0,252,0,31,128,62,0,62,0,62,0, + 62,0,62,0,126,0,63,0,126,0,55,0,254,0,55,128, + 222,0,55,129,222,0,51,193,158,0,51,195,158,0,49,195, + 158,0,49,227,30,0,48,231,30,0,48,246,30,0,48,254, + 30,0,48,124,30,0,48,124,30,0,48,56,30,0,120,56, + 63,0,252,24,127,128,19,20,60,21,1,0,248,7,224,124, + 3,192,60,1,128,62,1,128,63,1,128,63,129,128,55,129, + 128,51,193,128,51,225,128,49,225,128,48,241,128,48,249,128, + 48,125,128,48,61,128,48,31,128,48,31,128,48,15,128,48, + 7,128,120,7,128,252,1,128,18,20,60,20,1,0,3,240, + 0,12,28,0,28,14,0,56,7,0,56,7,128,112,7,128, + 112,3,192,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,248,3,128,120,7,128,120,7,0,60,15, + 0,30,30,0,15,248,0,3,224,0,16,20,40,18,1,0, + 63,240,252,60,60,30,60,15,60,15,60,15,60,15,60,15, + 60,14,60,30,62,60,61,240,60,0,60,0,60,0,60,0, + 60,0,60,0,126,0,255,128,21,25,75,20,1,251,3,240, + 0,14,28,0,28,14,0,56,15,0,56,7,128,112,7,128, + 112,3,128,240,3,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,192,240,3,128,120,3,128,120,7,128,60,7, + 0,28,14,0,14,28,0,3,248,0,0,60,0,0,15,8, + 0,7,248,0,3,240,0,0,224,18,20,60,19,1,0,63, + 224,0,252,120,0,60,60,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,60,0,60,252,0,63,240,0,63,224,0, + 60,240,0,60,112,0,60,120,0,60,60,0,60,62,0,60, + 30,0,60,15,0,126,15,192,255,7,128,13,20,40,16,2, + 0,15,224,48,224,96,96,224,0,224,0,240,0,252,0,127, + 0,127,192,31,224,15,240,3,248,0,248,0,120,128,120,192, + 120,192,112,224,224,255,192,63,0,18,20,60,19,0,0,255, + 255,192,193,225,192,193,224,192,193,224,192,129,224,128,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,3,240,0,7,248,0,19,20,60,21,1, + 0,255,7,224,126,3,192,60,1,128,60,1,128,60,1,128, + 60,1,128,60,1,128,60,1,128,60,1,128,60,1,128,60, + 1,128,60,1,128,60,1,128,60,1,128,60,1,128,60,3, + 0,30,3,0,15,6,0,7,252,0,3,240,0,21,20,60, + 21,0,0,255,3,248,60,0,224,60,0,192,30,0,192,30, + 1,128,15,1,128,15,3,128,15,3,0,7,131,0,7,135, + 0,3,198,0,3,198,0,3,206,0,1,236,0,1,236,0, + 0,248,0,0,248,0,0,248,0,0,112,0,0,96,0,27, + 20,80,27,0,0,255,6,15,224,60,6,3,192,28,15,3, + 128,28,15,3,0,28,15,3,0,30,31,131,0,30,27,131, + 0,14,27,199,0,14,59,198,0,15,49,198,0,15,49,230, + 0,7,112,238,0,7,96,252,0,7,224,252,0,7,192,124, + 0,3,192,124,0,3,192,60,0,3,128,56,0,3,128,56, + 0,3,0,16,0,20,20,60,20,0,0,127,143,224,62,3, + 128,30,7,0,15,6,0,15,142,0,7,140,0,3,220,0, + 3,248,0,1,240,0,0,240,0,0,248,0,1,248,0,3, + 188,0,3,190,0,7,30,0,6,15,0,14,15,128,28,7, + 128,60,7,192,254,31,240,19,20,60,20,0,0,252,7,224, + 60,3,192,30,3,128,15,3,0,15,7,0,7,134,0,3, + 142,0,3,204,0,1,220,0,1,248,0,0,248,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,1,248,0,3,252,0,15,20,40,17,1,0,127, + 254,96,62,96,124,64,124,64,248,0,240,1,240,1,224,3, + 224,7,192,7,192,15,128,15,0,31,0,62,0,62,2,124, + 2,124,6,248,6,255,254,9,30,60,11,2,251,255,128,255, + 128,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,255,128,255,128,13,30,60,15,1,251,192, + 0,224,0,224,0,112,0,112,0,48,0,56,0,56,0,28, + 0,28,0,28,0,14,0,14,0,6,0,7,0,7,0,3, + 128,3,128,3,128,1,192,1,192,0,192,0,224,0,224,0, + 112,0,112,0,112,0,56,0,56,0,24,9,30,60,11,0, + 251,255,128,255,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,255,128,255,128,12,15,30, + 16,2,9,2,0,6,0,15,0,15,0,27,0,27,128,17, + 128,49,192,49,192,96,192,96,224,96,96,192,112,192,48,128, + 32,14,2,4,15,1,252,255,252,255,248,7,8,8,10,0, + 16,112,240,120,56,60,28,14,6,14,15,30,16,1,0,31, + 192,112,224,240,240,192,240,0,240,3,240,31,240,63,240,120, + 240,240,240,240,240,240,240,251,252,126,248,56,96,16,24,48, + 17,0,0,12,0,252,0,124,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,120,61,252,63,254,63,30,60,15,60, + 7,60,7,60,7,60,7,60,6,60,14,62,28,63,248,31, + 240,7,192,13,15,30,15,1,0,3,248,12,120,56,48,112, + 16,112,0,240,0,240,0,240,0,240,0,248,0,248,8,124, + 56,63,240,31,224,15,128,16,24,48,18,1,0,0,28,0, + 252,0,60,0,60,0,60,0,60,0,60,0,60,0,60,7, + 252,24,124,56,60,112,60,112,60,240,60,240,60,240,60,240, + 60,248,60,248,60,124,124,127,255,63,190,30,24,13,15,30, + 15,1,0,7,192,24,224,56,112,112,120,112,120,240,120,255, + 240,240,0,240,0,240,0,248,8,124,56,127,240,63,224,15, + 128,13,24,48,11,1,0,1,240,7,248,14,112,28,32,28, + 0,60,0,60,0,60,0,60,0,255,192,60,128,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,127,0,255,128,16,23,46,17,0,248,7,227,28, + 127,56,126,120,60,120,60,120,60,120,60,60,56,60,112,15, + 192,14,0,28,0,31,192,63,252,15,254,31,255,120,127,240, + 15,240,14,240,14,120,28,63,248,15,192,17,24,72,18,1, + 0,12,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,120,0,61, + 252,0,63,254,0,63,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,126,63,0,255,127,128,8,21,21,10,1,0,28, + 62,62,28,0,0,28,252,124,60,60,60,60,60,60,60,60, + 60,60,126,255,12,29,58,9,251,248,0,224,1,240,1,240, + 0,224,0,0,0,0,0,224,7,224,3,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,192,1,192,99,128,255,0, + 254,0,120,0,17,24,72,18,1,0,12,0,0,252,0,0, + 124,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,63,128,60,30,0,60,60,0,60,112, + 0,60,224,0,61,192,0,63,192,0,63,224,0,61,224,0, + 60,240,0,60,120,0,60,60,0,60,62,0,126,31,128,255, + 15,0,8,24,24,10,1,0,12,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 26,15,60,28,1,0,28,120,60,0,252,252,254,0,127,255, + 255,0,63,31,143,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,60,30,15,0,60,30, + 15,0,60,30,15,0,60,30,15,0,126,63,31,128,255,127, + 191,192,17,15,45,18,1,0,12,60,0,252,252,0,127,254, + 0,63,30,0,62,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,15,15,30,17,1,0,7,224,24,112,56, + 56,112,60,112,30,240,30,240,30,240,30,240,30,240,30,240, + 28,120,28,56,56,28,48,15,192,16,23,46,18,1,248,12, + 120,252,252,127,254,62,62,60,31,60,15,60,15,60,15,60, + 15,60,15,60,14,62,30,63,252,61,248,60,240,60,0,60, + 0,60,0,60,0,60,0,60,0,127,0,255,128,17,23,69, + 18,1,248,3,194,0,12,54,0,56,30,0,112,30,0,112, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,248,30, + 0,248,30,0,124,126,0,127,254,0,63,222,0,15,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,63,0,0,255,128,13,15,30,14,1,0,24,240, + 249,248,123,248,62,48,60,48,60,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,126,0,255,0,11,15,30,13, + 1,0,31,192,97,192,225,128,224,128,248,0,254,0,127,128, + 127,192,31,224,7,224,129,224,192,224,192,192,224,192,255,0, + 11,20,40,12,0,0,4,0,28,0,60,0,60,0,60,0, + 255,224,60,64,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,96,63,224,31,128,14,0,17,15, + 45,18,0,0,28,14,0,252,126,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,126,0,63,255,128,31,223,0,15,12, + 0,16,15,30,16,0,0,254,31,124,14,60,12,60,12,30, + 28,30,24,15,24,15,48,7,48,7,240,7,224,3,224,3, + 192,1,192,1,128,23,15,45,23,0,0,254,24,62,124,24, + 28,60,28,24,60,60,24,28,62,48,30,126,48,30,111,48, + 14,111,112,15,199,96,15,199,224,7,195,224,7,131,192,7, + 131,192,3,1,192,2,1,128,16,15,30,17,0,0,255,63, + 62,28,30,24,15,48,15,240,7,224,3,192,3,224,3,224, + 6,240,14,248,28,120,24,60,120,62,252,127,17,23,69,16, + 255,248,127,15,128,62,7,0,30,6,0,30,6,0,15,14, + 0,15,12,0,7,140,0,7,152,0,7,152,0,3,248,0, + 3,240,0,1,240,0,1,240,0,1,224,0,0,224,0,0, + 192,0,0,192,0,1,192,0,1,128,0,39,128,0,127,0, + 0,254,0,0,120,0,0,13,15,30,15,1,0,127,248,96, + 248,65,240,65,224,3,224,7,192,7,128,15,128,15,0,31, + 0,62,16,60,24,124,24,248,24,255,248,9,30,60,12,2, + 251,1,0,7,128,14,0,28,0,60,0,60,0,60,0,60, + 0,62,0,30,0,30,0,30,0,30,0,60,0,120,0,252, + 0,60,0,30,0,30,0,30,0,30,0,62,0,60,0,60, + 0,60,0,60,0,28,0,30,0,7,0,1,128,2,32,32, + 7,3,250,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,128,9,30,60,12,1,251,64,0,240,0,60,0,28, + 0,30,0,30,0,30,0,30,0,62,0,60,0,60,0,60, + 0,60,0,30,0,31,128,15,0,30,0,60,0,60,0,60, + 0,60,0,62,0,30,0,30,0,30,0,30,0,28,0,56, + 0,112,0,192,0,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=34 h=41 x= 4 y=23 dx=35 dy= 0 ascent=34 len=136 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x=-6 y=-11 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =34 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25[14643] U8G_SECTION(".progmem.u8g_font_gdb25") = { + 0,61,57,236,242,25,7,167,18,92,32,255,247,34,245,31, + 247,0,0,0,10,0,0,6,30,30,12,3,255,12,60,252, + 252,252,124,120,120,120,120,120,120,120,120,120,120,120,120,56, + 48,48,32,0,0,56,124,252,252,252,120,13,13,26,19,3, + 16,24,56,248,248,248,248,248,248,248,248,248,248,248,240,112, + 240,112,112,112,112,112,112,112,112,112,112,19,23,69,20,1, + 2,0,97,192,0,227,128,0,227,128,0,195,128,1,195,0, + 1,199,0,31,255,224,31,255,224,35,142,0,3,142,0,3, + 14,0,7,12,0,7,28,0,7,28,0,127,255,128,255,255, + 128,14,56,0,12,56,0,28,48,0,28,112,0,24,112,0, + 24,112,0,32,224,0,17,30,90,21,2,253,0,192,0,1, + 192,0,1,192,0,3,240,0,31,254,0,63,255,128,113,223, + 0,225,207,0,225,199,0,225,194,0,241,192,0,255,192,0, + 127,192,0,63,248,0,15,252,0,3,254,0,1,255,0,1, + 223,128,1,207,128,193,199,128,193,199,128,225,199,128,241,207, + 0,253,207,0,255,254,0,63,252,0,7,224,0,1,192,0, + 1,192,0,1,128,0,26,25,100,28,1,0,0,0,3,0, + 15,128,15,0,63,192,14,0,113,224,28,0,112,224,56,0, + 224,112,120,0,224,112,112,0,224,112,224,0,224,113,192,0, + 224,115,192,0,96,103,128,0,112,103,0,0,48,206,62,0, + 31,28,99,0,0,60,195,128,0,56,193,128,0,113,193,192, + 0,225,193,192,1,225,193,192,1,193,193,192,3,129,193,192, + 7,0,225,128,15,0,227,128,14,0,127,0,28,0,62,0, + 27,28,112,28,1,0,0,126,0,0,1,255,128,0,3,143, + 128,0,7,7,192,0,7,7,192,0,15,7,192,0,15,7, + 192,0,15,15,128,0,15,159,0,0,15,191,0,0,7,254, + 0,0,7,248,0,0,7,240,0,0,15,240,255,224,31,241, + 255,192,63,248,61,128,125,252,60,0,124,254,28,0,248,254, + 28,0,248,127,28,0,248,63,184,0,248,31,248,0,248,15, + 240,0,252,7,248,0,124,3,252,0,63,7,255,192,31,254, + 127,128,7,240,28,0,5,13,13,11,3,16,24,248,248,248, + 248,248,248,112,112,112,112,112,112,11,37,74,13,2,250,0, + 64,1,224,3,192,7,128,15,0,15,0,30,0,30,0,60, + 0,60,0,124,0,124,0,120,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,120, + 0,124,0,124,0,124,0,60,0,62,0,30,0,31,0,15, + 0,7,128,3,192,1,224,0,64,11,37,74,13,0,250,64, + 0,240,0,120,0,60,0,30,0,31,0,15,0,15,128,7, + 128,7,192,7,192,7,192,7,192,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,192,7, + 192,7,192,7,192,7,128,15,128,15,0,15,0,30,0,30, + 0,60,0,120,0,240,0,64,0,16,16,32,18,1,14,0, + 192,3,192,3,192,99,140,123,158,125,191,127,252,15,224,7, + 224,63,252,253,190,249,158,51,142,3,192,3,192,3,0,15, + 14,28,17,1,4,1,128,3,128,3,128,3,128,3,128,3, + 128,127,254,255,252,3,128,3,128,3,128,3,128,3,128,3, + 0,8,12,12,11,2,249,30,127,255,127,31,31,30,30,60, + 56,112,96,12,2,4,14,1,9,127,240,255,240,6,6,6, + 11,3,255,56,124,252,252,252,120,17,38,114,19,1,249,0, + 1,128,0,7,128,0,7,128,0,15,0,0,15,0,0,15, + 0,0,30,0,0,30,0,0,28,0,0,60,0,0,60,0, + 0,120,0,0,120,0,0,120,0,0,240,0,0,240,0,0, + 224,0,1,224,0,1,224,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,7,0,0,15,0,0,15,0,0, + 30,0,0,30,0,0,30,0,0,60,0,0,60,0,0,56, + 0,0,120,0,0,120,0,0,240,0,0,240,0,0,192,0, + 0,18,24,72,20,1,0,3,240,0,7,252,0,30,62,0, + 28,31,0,60,15,0,120,15,128,120,15,128,120,7,128,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,120,7,128,124,7,128,124,15,128, + 60,15,0,62,14,0,31,30,0,15,248,0,3,224,0,16, + 24,48,20,2,0,0,96,3,224,31,224,255,224,99,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,7, + 240,127,255,127,255,16,24,48,20,2,0,3,248,15,252,60, + 62,124,63,120,31,248,31,112,31,0,31,0,62,0,60,0, + 124,0,120,0,240,1,224,3,224,3,192,7,128,15,1,30, + 3,60,3,120,3,127,255,255,255,255,255,16,24,48,20,2, + 0,7,240,31,248,60,124,120,62,248,62,248,62,64,62,0, + 60,0,124,0,240,7,240,7,252,0,254,0,62,0,63,0, + 31,0,31,0,31,0,31,0,30,192,62,240,124,127,248,15, + 192,17,24,72,20,1,0,0,12,0,0,124,0,0,124,0, + 0,252,0,1,252,0,1,252,0,3,188,0,7,188,0,7, + 60,0,14,60,0,14,60,0,28,60,0,56,60,0,56,60, + 0,112,60,0,255,255,128,255,255,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,3,255,128,3,255,128,17, + 24,72,20,1,0,31,255,0,31,255,128,31,254,0,31,252, + 0,24,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 63,240,0,63,252,0,48,126,0,96,31,0,0,31,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,31, + 0,96,31,0,248,126,0,63,252,0,7,224,0,17,24,72, + 20,2,0,0,14,0,0,126,0,1,240,0,7,192,0,15, + 128,0,30,0,0,62,0,0,60,0,0,124,0,0,121,248, + 0,127,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,15,128,124,15,0,60, + 31,0,31,30,0,15,252,0,3,240,0,17,24,72,20,2, + 0,127,255,128,127,255,0,255,255,0,255,255,0,224,6,0, + 192,14,0,128,12,0,0,28,0,0,28,0,0,56,0,0, + 56,0,0,112,0,0,112,0,0,240,0,0,224,0,1,224, + 0,1,192,0,3,192,0,3,192,0,7,128,0,7,128,0, + 15,128,0,31,0,0,28,0,0,17,24,72,21,2,0,3, + 240,0,15,252,0,28,62,0,24,31,0,56,31,0,56,31, + 0,56,31,0,60,62,0,63,60,0,31,248,0,15,240,0, + 7,252,0,14,254,0,62,63,0,124,31,128,120,31,128,248, + 15,128,248,15,128,248,15,128,248,15,0,124,31,0,126,62, + 0,63,252,0,7,224,0,17,25,75,20,2,255,3,240,0, + 15,252,0,30,62,0,60,30,0,120,31,0,120,31,0,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 128,126,63,128,63,255,128,15,207,0,0,15,0,0,31,0, + 0,30,0,0,62,0,0,124,0,0,248,0,1,240,0,15, + 192,0,63,0,0,56,0,0,6,19,19,11,3,255,56,124, + 252,252,252,120,0,0,0,0,0,0,0,56,124,252,252,252, + 120,8,26,26,11,2,249,8,62,126,126,126,124,0,0,0, + 0,0,0,0,0,30,127,255,127,31,31,30,30,60,56,112, + 96,16,13,26,18,1,5,0,3,0,31,0,255,3,252,31, + 224,127,128,252,0,254,0,127,192,15,248,1,255,0,63,0, + 6,16,8,16,18,1,7,127,255,255,255,0,0,0,0,0, + 0,0,0,127,255,255,255,16,13,26,18,1,5,112,0,252, + 0,255,128,31,240,3,254,0,127,0,63,0,255,7,248,63, + 224,127,0,248,0,192,0,15,30,60,18,1,255,7,240,31, + 248,60,124,120,126,248,62,248,62,248,62,224,62,0,62,0, + 124,0,124,0,248,0,240,1,240,1,224,1,192,3,192,3, + 128,3,128,3,128,3,128,0,0,0,0,0,0,3,128,7, + 192,15,192,15,192,15,192,7,128,31,34,136,35,2,248,0, + 7,248,0,0,63,255,0,0,255,255,192,1,248,15,224,3, + 192,1,240,7,128,0,248,15,0,0,120,30,0,0,60,60, + 3,195,60,56,15,238,28,120,30,126,30,120,60,62,14,112, + 120,62,14,240,120,62,14,240,248,62,14,240,248,62,14,240, + 248,62,14,240,248,62,14,240,248,62,12,240,248,62,28,240, + 252,62,28,248,124,126,56,120,127,255,240,120,127,191,224,124, + 63,159,192,60,30,15,0,62,0,0,0,31,0,0,0,31, + 128,0,48,15,224,0,240,7,248,7,224,1,255,255,192,0, + 127,255,0,0,15,248,0,25,25,100,25,0,0,0,4,0, + 0,0,30,0,0,0,62,0,0,0,126,0,0,0,127,0, + 0,0,111,0,0,0,239,128,0,0,239,128,0,0,199,128, + 0,1,199,192,0,1,199,192,0,1,131,192,0,3,131,224, + 0,3,131,224,0,3,255,224,0,7,255,240,0,7,0,240, + 0,6,0,248,0,14,0,248,0,14,0,120,0,12,0,124, + 0,28,0,124,0,28,0,124,0,255,129,255,0,255,129,255, + 128,22,25,75,24,0,0,15,254,0,255,255,128,223,15,224, + 31,3,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,224,31,15,128,31,255,0,31,255,224,31,3, + 240,31,1,248,31,0,248,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,248,31,3,240,127,255,224,255, + 255,0,20,25,75,22,1,0,0,127,128,3,255,240,7,135, + 224,15,1,224,30,0,192,60,0,64,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,252,0,0,124,0,0,124,0, + 0,126,0,32,63,0,112,31,193,224,15,255,192,7,255,0, + 1,252,0,22,25,75,25,1,0,15,252,0,255,255,128,255, + 15,192,31,3,224,31,1,240,31,1,248,31,0,248,31,0, + 248,31,0,124,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,120,31,0,248,31, + 0,248,31,1,240,31,1,240,31,3,224,31,7,192,127,255, + 128,255,252,0,19,25,75,21,1,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,18,25,75,20,1,0,255,255,192,255,255, + 192,62,1,192,30,1,192,30,1,192,30,0,192,30,0,128, + 30,0,0,30,0,0,30,0,0,30,0,0,31,254,0,31, + 254,0,30,4,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,62,0,0, + 255,192,0,255,224,0,22,25,75,24,1,0,0,127,128,1, + 255,240,7,131,240,15,1,224,30,0,224,60,0,64,60,0, + 0,124,0,0,120,0,0,248,0,0,248,0,0,248,0,0, + 248,15,252,248,15,252,248,1,240,248,1,240,252,1,240,124, + 1,240,124,1,240,126,1,240,63,1,240,31,129,240,15,255, + 192,7,255,128,0,252,0,25,25,100,27,1,0,255,227,255, + 128,127,227,255,128,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,255,252,0,31,255,252, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,127,195,255,128,255,227,255, + 128,11,25,50,13,1,0,255,224,127,224,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,127,192,255,224,18,33,99,13,251,248,3, + 255,192,1,255,128,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,60,0,0,60,0, + 0,56,0,16,120,0,56,112,0,127,224,0,255,128,0,62, + 0,0,24,25,75,25,0,0,255,227,254,127,193,254,31,0, + 240,31,1,224,31,3,192,31,7,128,31,15,0,31,14,0, + 31,28,0,31,60,0,31,120,0,31,240,0,31,248,0,31, + 124,0,31,60,0,31,62,0,31,31,0,31,15,128,31,7, + 192,31,3,224,31,3,240,31,1,248,31,0,255,127,224,127, + 255,224,60,20,25,75,20,0,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,48,31,0,96,31,0,96,31,128,224,127,255, + 224,255,255,224,31,25,100,34,1,0,255,0,1,254,127,0, + 1,254,31,128,1,240,31,128,3,240,31,192,3,240,31,192, + 7,240,31,192,7,240,31,224,14,240,29,224,14,240,29,240, + 30,240,28,240,28,240,28,248,28,240,28,248,56,240,28,124, + 56,248,28,124,112,248,28,60,112,248,28,62,224,248,28,30, + 224,248,28,31,224,248,28,31,192,248,28,15,192,248,28,15, + 128,248,28,7,128,248,255,7,7,254,255,3,7,254,25,25, + 100,27,1,0,254,0,255,128,255,0,127,0,31,0,28,0, + 31,128,28,0,31,192,28,0,31,192,28,0,31,224,28,0, + 29,240,28,0,29,248,28,0,28,248,28,0,28,124,28,0, + 28,126,28,0,28,62,28,0,28,31,28,0,28,15,156,0, + 28,15,156,0,28,7,220,0,28,3,252,0,28,3,252,0, + 28,1,252,0,28,0,252,0,28,0,252,0,28,0,124,0, + 127,0,60,0,255,128,12,0,23,25,75,25,1,0,0,126, + 0,3,255,192,7,135,224,14,1,240,30,0,248,60,0,248, + 60,0,124,124,0,124,120,0,126,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,252,0, + 60,124,0,124,124,0,120,62,0,120,62,0,240,31,1,224, + 15,195,192,7,255,0,0,252,0,21,25,75,23,1,0,15, + 254,0,255,255,192,255,7,224,31,3,240,31,1,248,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,1,240, + 31,1,240,31,135,224,31,127,128,31,62,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,127,224,0,255,224,0,27,31,124,25,1,250, + 0,126,0,0,3,255,192,0,7,135,224,0,14,1,240,0, + 30,0,248,0,60,0,248,0,60,0,124,0,124,0,124,0, + 120,0,124,0,248,0,62,0,248,0,62,0,248,0,62,0, + 248,0,62,0,248,0,62,0,248,0,62,0,248,0,62,0, + 252,0,60,0,124,0,124,0,124,0,120,0,62,0,120,0, + 62,0,240,0,31,1,224,0,15,195,192,0,7,255,128,0, + 0,255,0,0,0,7,224,0,0,1,248,96,0,0,255,224, + 0,0,127,192,0,0,31,128,0,0,7,0,23,25,75,24, + 1,0,15,252,0,255,255,128,255,15,192,31,7,192,31,3, + 224,31,3,224,31,3,224,31,3,224,31,3,224,31,7,192, + 31,7,128,31,255,0,31,254,0,31,124,0,31,30,0,31, + 15,0,31,15,0,31,7,128,31,7,192,31,3,224,31,3, + 224,31,1,240,31,1,254,127,192,254,255,224,248,17,25,75, + 21,2,0,3,252,0,31,255,0,60,63,0,112,14,0,240, + 6,0,240,0,0,248,0,0,252,0,0,254,0,0,127,128, + 0,63,224,0,31,248,0,7,254,0,1,255,0,0,127,0, + 0,31,128,0,15,128,0,7,128,192,7,128,192,7,128,224, + 7,0,240,14,0,252,28,0,255,248,0,31,224,0,23,25, + 75,23,0,0,127,255,252,127,255,254,96,124,14,224,124,12, + 192,124,12,192,124,12,192,124,12,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,3,255,128,3,255,128,25, + 25,100,27,1,0,255,224,255,128,127,224,255,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,24, + 0,15,128,56,0,15,128,56,0,7,192,112,0,3,224,224, + 0,1,255,192,0,0,127,0,0,26,25,100,27,0,0,255, + 192,63,192,127,192,63,192,31,0,14,0,31,0,14,0,15, + 128,28,0,15,128,28,0,15,128,28,0,7,192,56,0,7, + 192,56,0,3,224,48,0,3,224,112,0,3,224,112,0,1, + 240,224,0,1,240,224,0,0,240,224,0,0,249,192,0,0, + 249,192,0,0,125,192,0,0,127,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,31,0,0,0,30,0,0,0, + 8,0,0,34,25,125,34,0,0,255,192,224,127,192,127,128, + 224,63,192,30,0,224,14,0,31,1,240,14,0,31,1,240, + 12,0,15,1,248,28,0,15,3,248,28,0,15,131,248,28, + 0,15,131,252,28,0,7,135,60,24,0,7,135,60,56,0, + 7,134,62,56,0,7,206,30,56,0,3,206,31,56,0,3, + 204,15,48,0,3,220,15,112,0,3,252,15,240,0,3,248, + 7,240,0,1,248,7,224,0,1,248,7,224,0,1,240,3, + 224,0,1,240,3,224,0,0,240,1,224,0,0,224,1,192, + 0,0,192,1,128,0,25,25,100,25,0,0,127,225,255,0, + 127,225,255,0,31,128,124,0,15,128,112,0,15,192,240,0, + 7,224,224,0,3,225,192,0,1,243,192,0,1,251,128,0, + 0,255,0,0,0,127,0,0,0,126,0,0,0,62,0,0, + 0,127,0,0,0,127,128,0,0,239,192,0,1,231,192,0, + 1,195,224,0,3,131,240,0,7,129,240,0,7,0,248,0, + 14,0,252,0,30,0,254,0,255,131,255,128,255,131,255,128, + 24,25,75,25,0,0,126,0,255,255,0,255,31,0,56,15, + 128,56,15,192,112,7,192,112,3,224,224,3,224,224,1,241, + 192,1,241,192,0,251,128,0,251,128,0,127,0,0,127,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,1,255,192,1,255, + 192,19,25,75,22,1,0,63,255,224,63,255,224,120,7,192, + 112,15,192,96,15,128,96,31,128,32,63,0,0,62,0,0, + 126,0,0,124,0,0,252,0,1,248,0,1,240,0,3,240, + 0,3,224,0,7,224,0,15,192,0,15,128,0,31,128,32, + 31,0,96,63,0,96,126,0,96,124,0,224,255,255,224,255, + 255,224,11,37,74,14,2,250,255,224,255,224,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,255,224, + 255,224,17,38,114,19,1,249,192,0,0,240,0,0,112,0, + 0,112,0,0,120,0,0,56,0,0,60,0,0,60,0,0, + 28,0,0,30,0,0,30,0,0,14,0,0,15,0,0,7, + 0,0,7,128,0,7,128,0,3,128,0,3,192,0,3,192, + 0,1,192,0,1,224,0,0,224,0,0,224,0,0,240,0, + 0,112,0,0,120,0,0,120,0,0,56,0,0,60,0,0, + 60,0,0,28,0,0,30,0,0,14,0,0,15,0,0,15, + 0,0,7,0,0,7,128,0,1,128,10,37,74,13,1,250, + 255,192,255,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,255,192,255,192,16,19,38,20,2,11, + 0,128,3,128,3,192,3,192,7,224,6,224,14,224,12,112, + 12,112,28,120,24,56,24,56,48,28,48,28,112,28,96,14, + 96,14,224,7,128,6,17,2,6,19,1,251,127,255,128,255, + 255,128,9,10,20,13,0,20,56,0,248,0,252,0,124,0, + 62,0,30,0,15,0,7,0,3,128,1,0,19,18,54,20, + 1,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,20,30,90,21,0,0,6,0, + 0,254,0,0,254,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,31,0,62,127,192,63,255,192,63,199,224,63,1, + 224,62,1,240,62,0,240,62,0,240,62,0,240,62,0,240, + 62,0,240,62,0,224,62,1,224,62,1,192,63,131,128,63, + 255,0,15,252,0,1,240,0,16,18,36,18,1,0,1,252, + 7,255,31,31,60,15,60,7,120,6,120,0,248,0,248,0, + 248,0,248,0,248,0,124,0,126,3,63,7,63,254,15,252, + 3,240,21,30,90,22,1,0,0,1,192,0,63,192,0,63, + 192,0,7,192,0,7,192,0,7,192,0,7,192,0,7,192, + 0,7,192,0,7,192,0,7,192,0,7,192,3,247,192,15, + 255,192,30,31,192,60,15,192,124,7,192,120,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,126,31,192,127,255,248,63,247,248,31,231,224,7, + 131,128,17,18,54,19,1,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,14,0,0,0,63,0,0,255,128,3,143,0,7,134,0, + 7,0,0,15,0,0,15,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,252,0,255,248,0,31,16,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,240,0,255,240,0,21,27,81,22,0, + 247,1,248,24,15,255,248,30,31,240,60,15,128,124,7,192, + 124,7,192,124,7,192,124,7,192,62,7,128,63,15,0,31, + 254,0,3,248,0,7,128,0,15,128,0,31,192,0,31,255, + 0,31,255,224,7,255,240,30,255,248,124,3,248,120,0,248, + 248,0,248,248,0,240,252,1,224,127,3,192,31,255,0,3, + 248,0,22,30,90,23,1,0,6,0,0,254,0,0,254,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,15,128,62, + 63,192,62,127,224,62,255,224,63,199,224,63,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,255,143,248,255, + 223,252,10,27,54,12,1,0,30,0,63,0,63,0,63,0, + 30,0,0,0,0,0,0,0,0,0,14,0,254,0,254,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,15,36, + 72,11,250,247,0,60,0,126,0,126,0,126,0,60,0,0, + 0,0,0,0,0,0,0,28,3,252,3,252,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,120, + 0,120,32,240,120,224,255,192,255,128,60,0,21,30,90,22, + 1,0,6,0,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,15,240,62,7,240,62,7,128,62, + 15,0,62,62,0,62,120,0,62,240,0,63,224,0,63,240, + 0,62,248,0,62,124,0,62,62,0,62,31,0,62,31,128, + 62,15,192,62,7,224,255,131,248,255,129,224,10,30,60,12, + 1,0,6,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,34,18, + 90,34,0,0,6,15,192,248,0,255,63,227,252,0,255,127, + 255,254,0,31,227,252,126,0,31,129,248,62,0,31,1,240, + 62,0,31,1,240,62,0,31,1,240,62,0,31,1,240,62, + 0,31,1,240,62,0,31,1,240,62,0,31,1,240,62,0, + 31,1,240,62,0,31,1,240,62,0,31,1,240,62,0,31, + 1,240,62,0,127,199,252,255,128,255,199,252,255,192,22,18, + 54,23,1,0,14,15,128,254,63,192,254,255,224,63,255,224, + 63,199,224,63,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,255,143,248,255,223,252,19,18,54,21,1,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,20,27,81,22,1,247,14,31,0,254, + 127,128,254,255,192,63,135,224,63,3,224,62,1,240,62,0, + 240,62,0,240,62,0,240,62,0,240,62,0,240,62,0,224, + 62,0,224,62,1,192,63,195,192,63,255,128,62,255,0,62, + 60,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,192,0,255,192,0,21,27,81, + 22,1,247,1,240,64,7,252,224,14,31,192,60,15,192,60, + 7,192,120,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,252,7,192,252,15,192,126,31,192,127,255,192, + 63,247,192,31,231,192,7,135,192,0,7,192,0,7,192,0, + 7,192,0,7,192,0,7,192,0,7,192,0,7,192,0,63, + 240,0,63,248,16,18,36,18,1,0,14,30,254,127,254,255, + 63,255,63,207,31,135,31,6,30,6,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,62,0,255,192,255,224,14,18, + 36,17,2,0,15,192,63,248,120,248,240,112,240,48,248,48, + 254,0,127,128,63,224,15,248,3,248,192,252,192,124,224,60, + 224,60,248,120,255,240,63,192,15,25,50,15,0,0,3,0, + 7,0,15,0,31,0,31,0,31,0,31,0,127,254,255,252, + 31,8,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,140,31,254,31,248,15,224,7,128, + 22,18,54,23,1,0,14,0,224,254,31,224,126,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,7,224, + 63,31,252,31,251,252,31,243,240,15,193,192,20,18,54,20, + 0,0,255,131,240,127,3,240,62,1,192,31,1,192,31,1, + 128,15,3,128,15,131,0,15,135,0,7,199,0,7,206,0, + 3,238,0,3,236,0,1,252,0,1,252,0,0,248,0,0, + 248,0,0,240,0,0,96,0,28,18,72,29,0,0,255,131, + 3,240,127,3,129,240,62,3,128,192,30,7,193,192,31,7, + 193,192,31,15,193,192,15,15,227,128,15,157,227,128,15,157, + 243,128,7,153,243,0,7,248,255,0,7,240,255,0,3,240, + 126,0,3,240,126,0,3,224,62,0,1,224,60,0,1,192, + 28,0,1,128,24,0,21,18,54,21,0,0,255,199,240,255, + 199,240,63,131,192,15,131,128,15,199,0,7,238,0,3,252, + 0,1,248,0,1,248,0,0,252,0,1,254,0,3,190,0, + 7,31,0,6,31,128,12,15,192,28,7,224,127,31,248,255, + 31,248,21,27,81,20,255,247,127,193,248,63,129,248,31,0, + 224,15,128,224,15,129,192,7,193,192,7,193,128,7,195,128, + 3,227,128,3,231,0,1,247,0,1,246,0,0,254,0,0, + 254,0,0,252,0,0,124,0,0,120,0,0,56,0,0,56, + 0,0,112,0,0,112,0,0,224,0,33,224,0,127,192,0, + 127,128,0,255,0,0,124,0,0,16,18,36,19,1,0,63, + 255,63,255,112,62,112,126,96,124,96,248,1,248,1,240,3, + 224,7,224,7,192,15,128,31,129,31,3,62,3,124,3,127, + 255,255,255,11,37,74,14,2,250,0,96,1,224,3,192,7, + 128,15,0,31,0,31,0,31,0,31,0,31,0,31,128,15, + 128,15,128,15,128,15,128,15,0,31,0,62,0,252,0,255, + 0,31,0,15,128,15,128,15,128,15,128,15,128,31,128,31, + 0,31,0,31,0,31,0,31,0,15,0,15,128,7,192,1, + 224,0,96,3,41,41,9,3,248,96,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,192,11,37,74,14,1,250,192,0,240,0,124,0,62,0, + 30,0,31,0,31,0,31,0,31,0,31,0,63,0,62,0, + 62,0,62,0,62,0,62,0,31,0,31,224,7,224,15,128, + 31,0,30,0,62,0,62,0,62,0,62,0,63,0,31,0, + 31,0,31,0,31,0,31,0,30,0,60,0,120,0,240,0, + 192,0,18,6,18,20,1,9,15,0,192,31,192,128,63,225, + 0,99,255,0,192,254,0,128,56,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,10,0, + 0,6,29,29,12,3,245,120,252,252,252,248,112,0,16,48, + 56,56,120,120,120,120,120,120,120,120,120,120,120,124,124,252, + 252,252,248,192,16,25,50,20,2,255,0,192,1,192,1,192, + 1,248,7,255,31,255,61,223,121,198,121,198,113,192,241,192, + 241,192,241,192,241,192,241,192,241,192,121,195,125,199,63,206, + 31,252,15,248,3,192,1,192,1,192,1,128,19,25,75,20, + 1,255,0,127,0,1,255,192,3,199,192,7,131,192,7,1, + 192,15,1,128,15,1,128,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,127,252,0,255,248,0,31,0,0,31, + 0,0,31,0,0,31,0,0,30,0,96,30,0,192,30,0, + 192,63,255,192,127,255,192,255,255,192,64,31,128,17,16,48, + 20,1,4,64,0,128,224,1,128,115,243,128,63,255,0,30, + 30,0,28,14,0,56,7,0,56,7,0,56,7,0,56,7, + 0,56,7,0,28,14,0,62,31,0,127,255,128,243,243,128, + 96,1,128,22,24,72,20,254,0,254,3,252,255,3,252,31, + 0,240,31,128,224,15,193,192,7,193,192,7,227,128,3,227, + 128,3,247,128,1,247,0,0,255,0,0,254,0,0,254,0, + 0,124,0,31,255,240,31,255,224,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,3,41,41,9,3,248,96,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,128,0,0,0,64,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,192, + 16,28,56,20,2,0,7,224,31,252,60,124,120,56,120,24, + 124,24,127,0,63,192,63,240,127,248,243,252,240,254,240,63, + 240,31,248,15,126,15,127,15,63,206,15,254,3,252,0,254, + 48,126,48,62,48,30,56,30,60,60,63,248,15,224,14,6, + 12,16,1,21,112,56,120,60,248,124,248,124,240,120,112,56, + 27,26,104,30,1,0,0,63,128,0,1,255,240,0,7,192, + 124,0,15,0,30,0,30,0,15,0,60,31,135,128,56,127, + 227,128,112,225,193,192,113,193,193,192,225,192,193,224,227,128, + 128,224,227,128,0,224,227,128,0,224,227,128,0,224,227,128, + 0,224,227,128,0,224,225,192,1,224,113,224,33,192,112,240, + 113,192,56,127,227,128,60,31,7,128,30,0,15,0,15,0, + 30,0,7,192,124,0,1,255,240,0,0,63,128,0,9,14, + 28,11,1,11,30,0,62,0,103,0,231,0,7,0,63,0, + 103,0,231,0,231,0,255,128,119,0,0,0,255,128,255,128, + 17,18,54,21,1,0,0,128,128,1,129,128,3,3,0,7, + 7,0,14,14,0,30,30,0,60,60,0,124,124,0,248,248, + 0,252,248,0,124,124,0,60,60,0,30,30,0,14,14,0, + 7,7,0,3,3,0,1,129,128,0,128,128,17,9,27,20, + 2,3,255,255,128,255,255,128,0,3,128,0,3,128,0,3, + 128,0,3,128,0,3,128,0,3,128,0,3,0,12,2,4, + 14,1,9,127,240,255,240,13,15,30,14,1,14,15,128,31, + 192,48,96,96,48,95,16,137,136,137,136,143,136,139,8,137, + 8,73,144,124,240,48,96,31,192,15,128,16,3,6,20,2, + 23,255,255,255,255,255,254,10,10,20,14,2,15,15,0,63, + 128,115,192,97,192,225,192,225,192,225,128,243,128,127,0,60, + 0,15,18,36,16,1,3,1,128,3,128,3,128,3,128,3, + 128,3,128,127,254,255,252,3,128,3,128,3,128,3,128,3, + 128,3,0,0,0,0,0,127,254,255,252,11,15,30,13,1, + 12,7,192,31,224,56,224,120,224,112,224,0,192,1,192,3, + 128,3,0,6,0,12,0,24,32,48,96,127,224,255,224,11, + 15,30,13,0,12,7,128,31,224,56,224,56,224,32,224,1, + 192,3,128,7,192,0,224,0,224,0,224,128,224,225,192,127, + 192,31,0,9,10,20,13,4,20,14,0,31,128,31,128,63, + 0,62,0,60,0,120,0,112,0,224,0,64,0,22,27,81, + 23,1,247,14,0,96,254,7,224,254,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,63,7,224,63,143,224,63,255,228, + 63,251,252,59,241,248,57,225,224,56,0,0,56,0,0,60, + 0,0,60,0,0,60,0,0,62,0,0,63,0,0,62,0, + 0,48,0,0,22,30,90,24,1,251,3,255,252,31,255,252, + 63,29,240,124,28,224,124,28,224,248,28,224,248,28,224,248, + 28,224,248,28,224,248,28,224,124,28,224,126,28,224,63,28, + 224,31,252,224,3,252,224,0,28,224,0,28,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,224,0,28,224,0, + 28,224,0,28,224,0,28,224,0,28,224,0,28,224,0,127, + 248,0,255,252,6,6,6,8,1,11,56,124,252,252,252,120, + 8,9,9,9,1,247,24,56,60,63,127,31,30,252,224,10, + 15,30,14,2,12,6,0,62,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,63, + 0,255,192,9,14,28,11,1,11,30,0,63,0,119,0,227, + 128,227,128,227,128,227,128,227,128,119,0,126,0,60,0,0, + 0,255,128,255,128,17,18,54,21,2,0,64,64,0,224,224, + 0,112,112,0,56,56,0,60,60,0,30,30,0,31,31,0, + 15,143,128,15,143,128,15,143,128,15,143,128,31,31,0,30, + 30,0,60,60,0,56,56,0,112,112,0,96,96,0,192,192, + 0,22,24,72,25,2,0,12,0,24,252,0,56,28,0,112, + 28,0,224,28,1,192,28,1,192,28,3,128,28,7,0,28, + 6,0,28,14,0,62,28,0,255,184,0,0,56,112,0,112, + 240,0,225,240,1,193,112,1,195,112,3,134,112,7,4,112, + 14,15,252,14,31,248,28,0,112,56,0,112,112,1,252,21, + 24,72,25,2,0,12,0,56,252,0,112,28,0,112,28,0, + 224,28,1,192,28,3,128,28,3,128,28,7,0,28,14,0, + 28,28,0,62,28,0,255,184,0,0,113,240,0,227,248,0, + 230,56,1,206,56,3,128,48,7,0,96,7,0,224,14,0, + 192,28,1,136,60,7,8,56,15,248,112,15,248,23,24,72, + 25,1,0,31,0,12,63,128,28,115,128,56,227,128,112,7, + 0,224,31,0,224,3,129,192,3,131,128,3,131,0,135,135, + 0,255,14,0,60,28,0,0,28,56,0,56,120,0,112,248, + 0,224,184,0,225,184,1,195,56,3,130,56,7,7,254,7, + 15,252,14,0,56,28,0,56,56,0,254,16,29,58,18,1, + 245,3,192,7,224,7,224,7,224,7,192,3,128,0,0,0, + 0,1,192,1,192,1,192,1,192,3,192,3,128,7,128,15, + 0,31,0,62,0,60,0,124,0,248,0,248,7,248,31,248, + 31,248,31,252,30,126,60,63,248,15,224,25,34,136,25,0, + 0,0,192,0,0,3,224,0,0,3,240,0,0,3,248,0, + 0,0,252,0,0,0,62,0,0,0,15,0,0,0,2,0, + 0,0,0,0,0,0,4,0,0,0,30,0,0,0,62,0, + 0,0,126,0,0,0,127,0,0,0,111,0,0,0,239,128, + 0,0,239,128,0,0,199,128,0,1,199,192,0,1,199,192, + 0,1,131,192,0,3,131,224,0,3,131,224,0,3,255,224, + 0,7,255,240,0,7,0,240,0,6,0,248,0,14,0,248, + 0,14,0,120,0,12,0,124,0,28,0,124,0,28,0,124, + 0,255,129,255,0,255,129,255,128,25,34,136,25,0,0,0, + 1,128,0,0,3,192,0,0,7,224,0,0,15,192,0,0, + 31,0,0,0,124,0,0,0,240,0,0,0,64,0,0,0, + 0,0,0,0,4,0,0,0,30,0,0,0,62,0,0,0, + 126,0,0,0,127,0,0,0,111,0,0,0,239,128,0,0, + 239,128,0,0,199,128,0,1,199,192,0,1,199,192,0,1, + 131,192,0,3,131,224,0,3,131,224,0,3,255,224,0,7, + 255,240,0,7,0,240,0,6,0,248,0,14,0,248,0,14, + 0,120,0,12,0,124,0,28,0,124,0,28,0,124,0,255, + 129,255,0,255,129,255,128,25,34,136,25,0,0,0,28,0, + 0,0,62,0,0,0,127,0,0,0,255,128,0,1,255,128, + 0,1,227,192,0,3,128,224,0,2,0,64,0,0,0,0, + 0,0,4,0,0,0,30,0,0,0,62,0,0,0,126,0, + 0,0,127,0,0,0,111,0,0,0,239,128,0,0,239,128, + 0,0,199,128,0,1,199,192,0,1,199,192,0,1,131,192, + 0,3,131,224,0,3,131,224,0,3,255,224,0,7,255,240, + 0,7,0,240,0,6,0,248,0,14,0,248,0,14,0,120, + 0,12,0,124,0,28,0,124,0,28,0,124,0,255,129,255, + 0,255,129,255,128,25,33,132,25,0,0,0,248,48,0,1, + 254,240,0,3,255,224,0,3,255,192,0,6,31,128,0,6, + 3,0,0,4,0,0,0,0,0,0,0,0,4,0,0,0, + 30,0,0,0,62,0,0,0,126,0,0,0,127,0,0,0, + 111,0,0,0,239,128,0,0,239,128,0,0,199,128,0,1, + 199,192,0,1,199,192,0,1,131,192,0,3,131,224,0,3, + 131,224,0,3,255,224,0,7,255,240,0,7,0,240,0,6, + 0,248,0,14,0,248,0,14,0,120,0,12,0,124,0,28, + 0,124,0,28,0,124,0,255,129,255,0,255,129,255,128,25, + 32,128,25,0,0,1,192,224,0,3,193,224,0,7,195,224, + 0,7,195,224,0,3,193,224,0,1,129,192,0,0,0,0, + 0,0,4,0,0,0,30,0,0,0,62,0,0,0,126,0, + 0,0,127,0,0,0,111,0,0,0,239,128,0,0,239,128, + 0,0,199,128,0,1,199,192,0,1,199,192,0,1,131,192, + 0,3,131,224,0,3,131,224,0,3,255,224,0,7,255,240, + 0,7,0,240,0,6,0,248,0,14,0,248,0,14,0,120, + 0,12,0,124,0,28,0,124,0,28,0,124,0,255,129,255, + 0,255,129,255,128,25,34,136,25,0,0,0,30,0,0,0, + 127,0,0,0,119,0,0,0,103,0,0,0,231,0,0,0, + 119,0,0,0,126,0,0,0,56,0,0,0,0,0,0,0, + 4,0,0,0,30,0,0,0,62,0,0,0,126,0,0,0, + 127,0,0,0,111,0,0,0,239,128,0,0,239,128,0,0, + 199,128,0,1,199,192,0,1,199,192,0,1,131,192,0,3, + 131,224,0,3,131,224,0,3,255,224,0,7,255,240,0,7, + 0,240,0,6,0,248,0,14,0,248,0,14,0,120,0,12, + 0,124,0,28,0,124,0,28,0,124,0,255,129,255,0,255, + 129,255,128,32,25,100,32,0,0,0,255,255,252,0,255,255, + 252,0,31,240,28,0,61,240,12,0,61,240,12,0,57,240, + 12,0,121,240,12,0,113,240,0,0,241,240,0,0,225,240, + 0,0,225,240,0,1,255,255,240,1,255,255,240,3,193,240, + 32,3,129,240,0,3,129,240,0,7,129,240,0,7,1,240, + 0,15,1,240,0,14,1,240,3,14,1,240,3,30,1,240, + 6,28,1,240,14,255,7,255,254,255,15,255,254,20,34,102, + 22,1,247,0,127,128,3,255,240,7,135,224,15,1,224,30, + 0,192,60,0,64,60,0,0,124,0,0,120,0,0,120,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,252,0,0,124,0,0,126,0,0,127, + 0,96,63,129,224,31,255,192,15,255,0,7,254,0,1,240, + 0,0,224,0,0,248,0,0,252,0,1,252,0,0,124,0, + 0,120,0,1,240,0,1,192,0,19,34,102,21,1,0,6, + 0,0,31,0,0,31,128,0,31,192,0,7,224,0,1,240, + 0,0,120,0,0,16,0,0,0,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,19,34,102,21,1,0,0,12,0,0,31, + 0,0,63,0,0,126,0,0,248,0,1,224,0,3,128,0, + 2,0,0,0,0,0,255,255,192,255,255,192,62,1,192,30, + 1,192,30,1,128,30,1,128,30,0,128,30,0,0,30,0, + 0,30,0,0,30,0,0,31,255,0,31,254,0,30,6,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,96,30,0,96,30,0,224,63,1,224,255,255,224,255,255, + 192,19,34,102,21,1,0,0,224,0,1,240,0,3,248,0, + 7,252,0,15,252,0,15,30,0,28,7,0,16,2,0,0, + 0,0,255,255,192,255,255,192,62,1,192,30,1,192,30,1, + 128,30,1,128,30,0,128,30,0,0,30,0,0,30,0,0, + 30,0,0,31,255,0,31,254,0,30,6,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,96,30,0, + 96,30,0,224,63,1,224,255,255,224,255,255,192,19,32,96, + 21,1,0,14,7,0,30,15,0,31,15,128,30,15,0,30, + 15,0,12,6,0,0,0,0,255,255,192,255,255,192,62,1, + 192,30,1,192,30,1,128,30,1,128,30,0,128,30,0,0, + 30,0,0,30,0,0,30,0,0,31,255,0,31,254,0,30, + 6,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,96,30,0,96,30,0,224,63,1,224,255,255,224, + 255,255,192,12,34,68,13,0,0,48,0,248,0,252,0,254, + 0,63,0,15,128,3,192,0,128,0,0,127,240,63,240,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,63,224,127,240,12,34,68, + 13,1,0,0,192,1,224,3,240,7,224,31,128,62,0,120, + 0,32,0,0,0,255,224,127,224,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,127,192,255,224,13,34,68,13,0,0,7,0,15, + 128,31,192,63,224,127,224,248,240,224,56,128,16,0,0,127, + 240,63,240,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,63,224,127, + 240,14,32,64,13,255,0,56,28,120,60,248,124,248,124,120, + 60,112,56,0,0,63,248,31,248,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,7,192,7,192,7,192,7,192,7,192,7,192,7, + 192,7,192,31,240,63,248,22,25,75,25,1,0,15,252,0, + 255,255,128,255,15,192,31,3,224,31,1,240,31,1,248,31, + 0,248,31,0,248,31,0,124,31,0,124,31,0,124,255,248, + 124,255,248,124,31,0,124,31,0,124,31,0,124,31,0,120, + 31,0,248,31,0,248,31,1,240,31,1,240,31,3,224,31, + 7,192,127,255,128,255,252,0,25,33,132,27,1,0,0,240, + 48,0,1,254,224,0,3,255,224,0,3,255,192,0,6,31, + 128,0,6,3,0,0,4,0,0,0,0,0,0,0,254,0, + 255,128,255,0,127,0,31,0,28,0,31,128,28,0,31,192, + 28,0,31,192,28,0,31,224,28,0,29,240,28,0,29,248, + 28,0,28,248,28,0,28,124,28,0,28,126,28,0,28,62, + 28,0,28,31,28,0,28,15,156,0,28,15,156,0,28,7, + 220,0,28,3,252,0,28,3,252,0,28,1,252,0,28,0, + 252,0,28,0,252,0,28,0,124,0,127,0,60,0,255,128, + 12,0,23,34,102,25,1,0,1,128,0,7,192,0,7,224, + 0,7,240,0,1,248,0,0,124,0,0,30,0,0,4,0, + 0,0,0,0,126,0,3,255,192,7,135,224,14,1,240,30, + 0,248,60,0,248,60,0,124,124,0,124,120,0,126,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,252,0,60,124,0,124,124,0,120,62,0,120,62, + 0,240,31,1,224,15,195,192,7,255,0,0,252,0,23,34, + 102,25,1,0,0,3,0,0,7,192,0,15,192,0,31,128, + 0,62,0,0,120,0,0,224,0,0,128,0,0,0,0,0, + 126,0,3,255,192,7,135,224,14,1,240,30,0,248,60,0, + 248,60,0,124,124,0,124,120,0,126,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,252, + 0,60,124,0,124,124,0,120,62,0,120,62,0,240,31,1, + 224,15,195,192,7,255,0,0,252,0,23,34,102,25,1,0, + 0,56,0,0,124,0,0,254,0,1,255,0,3,255,0,3, + 199,128,7,1,192,4,0,128,0,0,0,0,126,0,3,255, + 192,7,135,224,14,1,240,30,0,248,60,0,248,60,0,124, + 124,0,124,120,0,126,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,252,0,60,124,0, + 124,124,0,120,62,0,120,62,0,240,31,1,224,15,195,192, + 7,255,0,0,252,0,23,33,99,25,1,0,1,240,96,3, + 252,224,7,255,192,7,255,128,14,63,128,12,6,0,8,0, + 0,0,0,0,0,126,0,3,255,192,7,135,224,14,1,240, + 30,0,248,60,0,248,60,0,124,124,0,124,120,0,126,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,252,0,60,124,0,124,124,0,120,62,0,120, + 62,0,240,31,1,224,15,195,192,7,255,0,0,252,0,23, + 32,96,25,1,0,3,129,192,7,131,192,7,195,224,7,131, + 192,7,131,192,3,1,128,0,0,0,0,126,0,3,255,192, + 7,135,224,14,1,240,30,0,248,60,0,248,60,0,124,124, + 0,124,120,0,126,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,248,0,62,248,0,62,252,0,60,124,0,124, + 124,0,120,62,0,120,62,0,240,31,1,224,15,195,192,7, + 255,0,0,252,0,13,12,24,17,2,5,96,48,240,120,120, + 240,61,224,31,192,15,128,15,128,31,192,57,224,120,240,240, + 120,96,48,23,26,78,25,1,255,0,126,30,3,255,252,7, + 135,248,14,3,240,30,1,248,60,1,252,60,3,252,124,7, + 252,120,15,254,248,15,126,248,30,62,248,62,62,248,60,62, + 248,120,62,248,240,62,248,240,62,253,224,60,127,192,124,127, + 128,120,127,128,120,63,0,240,31,129,224,63,195,192,127,255, + 0,240,252,0,192,0,0,25,34,136,27,1,0,0,192,0, + 0,3,224,0,0,3,240,0,0,3,248,0,0,0,252,0, + 0,0,30,0,0,0,7,0,0,0,2,0,0,0,0,0, + 0,255,224,255,128,127,224,255,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,24,0,15,128,56, + 0,15,128,56,0,7,192,112,0,3,224,224,0,1,255,192, + 0,0,127,0,0,25,34,136,27,1,0,0,1,128,0,0, + 3,224,0,0,7,224,0,0,15,192,0,0,31,0,0,0, + 60,0,0,0,112,0,0,0,64,0,0,0,0,0,0,255, + 224,255,128,127,224,255,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,24,0,15,128,56,0,15, + 128,56,0,7,192,112,0,3,224,224,0,1,255,192,0,0, + 127,0,0,25,34,136,27,1,0,0,28,0,0,0,62,0, + 0,0,127,0,0,0,255,128,0,1,255,192,0,1,227,192, + 0,3,128,224,0,2,0,64,0,0,0,0,0,255,224,255, + 128,127,224,255,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,24,0,15,128,56,0,15,128,56, + 0,7,192,112,0,3,224,224,0,1,255,192,0,0,127,0, + 0,25,32,128,27,1,0,1,192,224,0,3,225,240,0,3, + 225,240,0,3,193,224,0,3,193,224,0,1,128,192,0,0, + 0,0,0,255,224,255,128,127,224,255,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,28,0,31, + 0,28,0,31,0,28,0,31,0,28,0,31,0,24,0,15, + 128,56,0,15,128,56,0,7,192,112,0,3,224,224,0,1, + 255,192,0,0,127,0,0,24,34,102,25,0,0,0,1,128, + 0,3,192,0,7,224,0,31,192,0,63,0,0,124,0,0, + 240,0,0,64,0,0,0,0,126,0,255,255,0,255,31,0, + 56,15,128,56,15,192,112,7,192,112,3,224,224,3,224,224, + 1,241,192,1,241,192,0,251,128,0,251,128,0,127,0,0, + 127,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,1,255,192, + 1,255,192,21,25,75,23,1,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,254,0,31,255,192,31,7, + 224,31,3,240,31,1,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,1,240,31,1,240,31,135,224,31, + 127,128,31,62,0,31,0,0,31,0,0,31,0,0,127,224, + 0,255,224,0,23,30,90,25,0,0,0,31,128,0,255,224, + 1,195,240,3,128,248,7,128,248,15,0,124,15,0,124,15, + 0,124,31,0,124,31,0,248,31,1,248,31,7,240,31,15, + 128,31,31,0,31,30,0,31,30,0,31,31,0,31,31,128, + 31,15,224,31,7,248,31,3,252,31,0,252,31,0,126,31, + 48,62,31,48,30,31,48,30,31,56,28,31,60,60,127,63, + 248,255,15,224,19,30,90,20,1,0,7,0,0,31,128,0, + 15,128,0,15,192,0,7,192,0,3,224,0,1,224,0,0, + 224,0,0,112,0,0,48,0,0,0,0,0,0,0,1,248, + 0,15,254,0,62,63,0,124,31,0,124,31,0,112,31,0, + 0,31,0,1,255,0,15,255,0,63,31,0,124,31,0,120, + 31,0,248,31,0,248,31,32,248,127,224,255,223,192,127,159, + 128,62,14,0,19,30,90,20,1,0,0,56,0,0,62,0, + 0,126,0,0,124,0,0,248,0,0,240,0,1,224,0,1, + 192,0,3,128,0,1,0,0,0,0,0,0,0,0,1,248, + 0,15,254,0,62,63,0,124,31,0,124,31,0,112,31,0, + 0,31,0,1,255,0,15,255,0,63,31,0,124,31,0,120, + 31,0,248,31,0,248,31,32,248,127,224,255,223,192,127,159, + 128,62,14,0,19,29,87,20,1,0,1,224,0,1,224,0, + 3,240,0,7,248,0,7,252,0,15,60,0,30,30,0,56, + 7,0,16,2,0,0,0,0,0,0,0,1,248,0,15,254, + 0,62,63,0,124,31,0,124,31,0,112,31,0,0,31,0, + 1,255,0,15,255,0,63,31,0,124,31,0,120,31,0,248, + 31,0,248,31,32,248,127,224,255,223,192,127,159,128,62,14, + 0,19,27,81,20,1,0,7,129,128,15,227,0,31,255,0, + 63,254,0,49,252,0,96,56,0,0,0,0,0,0,0,0, + 0,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,19,27,81,20,1,0,12,6, + 0,30,15,0,62,31,0,62,31,0,62,31,0,28,14,0, + 0,0,0,0,0,0,0,0,0,1,248,0,15,254,0,62, + 63,0,124,31,0,124,31,0,112,31,0,0,31,0,1,255, + 0,15,255,0,63,31,0,124,31,0,120,31,0,248,31,0, + 248,31,32,248,127,224,255,223,192,127,159,128,62,14,0,19, + 28,84,20,1,0,0,240,0,3,248,0,3,184,0,7,56, + 0,7,56,0,7,56,0,3,240,0,1,224,0,0,0,0, + 0,0,0,1,248,0,15,254,0,62,63,0,124,31,0,124, + 31,0,112,31,0,0,31,0,1,255,0,15,255,0,63,31, + 0,124,31,0,120,31,0,248,31,0,248,31,32,248,127,224, + 255,223,192,127,159,128,62,14,0,27,18,72,29,1,0,0, + 252,62,0,7,254,255,128,15,191,199,128,30,15,131,192,62, + 15,129,192,124,15,1,224,0,15,1,224,0,255,255,224,15, + 255,255,192,31,15,0,0,124,15,0,0,120,15,0,0,248, + 15,128,0,248,31,128,96,252,127,225,224,255,227,255,192,127, + 193,255,0,63,0,124,0,17,27,81,18,1,247,1,252,0, + 7,255,0,31,31,0,60,15,0,60,7,0,120,6,0,120, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,252,0,0,126,1,0,127,7,128,63,254,0,31,252,0, + 7,240,0,1,192,0,1,192,0,1,240,0,3,248,0,0, + 248,0,0,248,0,1,240,0,3,224,0,7,0,0,17,30, + 90,19,1,0,3,128,0,15,128,0,31,192,0,7,192,0, + 3,192,0,1,224,0,0,224,0,0,112,0,0,48,0,0, + 56,0,0,0,0,0,0,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,30, + 90,19,1,0,0,60,0,0,63,0,0,62,0,0,124,0, + 0,120,0,0,240,0,0,240,0,1,224,0,1,192,0,1, + 128,0,0,0,0,0,0,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,19,1,0,0,224,0,1,240,0,3,248,0,3,248,0, + 7,252,0,15,30,0,14,14,0,28,7,0,24,3,0,0, + 0,0,0,0,0,1,240,0,15,252,0,30,62,0,60,31, + 0,120,15,0,120,15,128,248,15,128,255,255,128,255,254,0, + 248,0,0,248,0,0,248,0,0,252,0,0,126,1,128,127, + 7,0,63,254,0,31,252,0,7,240,0,17,27,81,19,1, + 0,14,7,0,30,15,0,31,15,128,30,15,0,30,15,0, + 28,14,0,0,0,0,0,0,0,0,0,0,1,240,0,15, + 252,0,30,62,0,60,31,0,120,15,0,120,15,128,248,15, + 128,255,255,128,255,254,0,248,0,0,248,0,0,248,0,0, + 252,0,0,126,1,128,127,7,0,63,254,0,31,252,0,7, + 240,0,11,30,60,12,0,0,56,0,252,0,124,0,62,0, + 62,0,31,0,15,0,7,128,3,128,1,128,0,0,0,0, + 7,0,127,0,127,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 127,192,127,224,11,30,60,12,1,0,3,128,3,224,7,224, + 7,192,15,128,15,0,30,0,28,0,24,0,48,0,0,0, + 0,0,14,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,128,255,192,14,29,58,12,255,0,7,128,7,192, + 15,192,31,224,31,240,60,240,120,120,112,28,192,8,0,0, + 0,0,3,128,63,128,63,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,63,224,63,240,14,27,54,12,255,0,48,24,120,60, + 248,124,248,124,248,124,112,56,0,0,0,0,0,0,3,128, + 63,128,63,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,63,224, + 63,240,18,29,87,20,1,0,3,0,0,31,192,0,63,231, + 192,3,255,0,0,252,0,3,252,0,15,252,0,30,30,0, + 0,31,0,0,15,0,0,15,128,3,231,128,15,255,128,30, + 63,192,60,31,192,124,15,192,120,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,248,7,128,248,7,128,124,15,128, + 124,15,0,126,14,0,63,28,0,15,248,0,3,224,0,22, + 27,81,23,1,0,1,192,64,3,248,224,7,255,192,15,255, + 128,12,127,0,24,30,0,0,0,0,0,0,0,0,0,0, + 14,15,128,254,63,192,254,255,224,63,255,224,63,199,224,63, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 255,143,248,255,223,252,19,30,90,21,1,0,3,128,0,15, + 192,0,15,192,0,7,192,0,3,224,0,1,224,0,0,240, + 0,0,112,0,0,56,0,0,16,0,0,0,0,0,0,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,19,30,90,21,1,0,0,28,0,0, + 63,0,0,63,0,0,62,0,0,124,0,0,120,0,0,240, + 0,0,224,0,1,192,0,0,128,0,0,0,0,0,0,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,19,29,87,21,1,0,0,240,0,0, + 240,0,1,248,0,3,252,0,7,252,0,7,158,0,15,15, + 0,28,3,0,8,1,128,0,0,0,0,0,0,1,248,0, + 7,254,0,30,31,128,60,15,128,124,7,192,120,7,192,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 192,124,3,192,124,7,128,62,7,128,63,15,0,15,252,0, + 3,240,0,19,27,81,21,1,0,3,128,128,7,241,192,15, + 255,128,31,255,0,24,254,0,48,60,0,0,0,0,0,0, + 0,0,0,0,1,248,0,7,254,0,30,31,128,60,15,128, + 124,7,192,120,7,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,192,124,3,192,124,7,128,62,7, + 128,63,15,0,15,252,0,3,240,0,19,27,81,21,1,0, + 14,7,0,15,7,128,31,15,128,31,15,128,30,15,0,14, + 7,0,0,0,0,0,0,0,0,0,0,1,248,0,7,254, + 0,30,31,128,60,15,128,124,7,192,120,7,192,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,192,124, + 3,192,124,7,128,62,7,128,63,15,0,15,252,0,3,240, + 0,15,15,30,17,1,3,3,0,7,0,7,0,7,0,6, + 0,0,0,127,254,255,252,0,0,0,0,3,0,7,0,7, + 0,7,0,6,0,19,20,60,21,1,255,0,0,32,1,248, + 224,7,255,192,30,31,128,60,15,192,60,31,192,120,31,224, + 120,59,224,248,115,224,248,227,224,249,227,224,249,195,224,251, + 131,192,127,3,192,126,7,128,62,7,128,63,15,0,63,252, + 0,99,240,0,192,0,0,22,30,90,23,1,0,3,128,0, + 7,192,0,15,192,0,3,224,0,1,224,0,0,240,0,0, + 240,0,0,120,0,0,56,0,0,24,0,0,0,0,0,0, + 0,14,0,224,254,31,224,126,7,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,7,224,63,31,252,31,251, + 252,31,243,240,15,193,192,22,30,90,23,1,0,0,30,0, + 0,31,0,0,63,128,0,62,0,0,124,0,0,120,0,0, + 112,0,0,224,0,0,224,0,1,192,0,0,0,0,0,0, + 0,14,0,224,254,31,224,126,7,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,7,224,63,31,252,31,251, + 252,31,243,240,15,193,192,22,29,87,23,1,0,0,112,0, + 0,248,0,1,248,0,3,252,0,3,254,0,7,158,0,15, + 7,0,14,3,128,8,1,0,0,0,0,0,0,0,14,0, + 224,254,31,224,126,7,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,7,224,63,31,252,31,251,252,31,243, + 240,15,193,192,22,27,81,23,1,0,7,3,128,15,7,128, + 31,15,128,31,15,128,31,15,128,14,7,0,0,0,0,0, + 0,0,0,0,0,14,0,224,254,31,224,126,7,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,62,7,224,63, + 31,252,31,251,252,31,243,240,15,193,192,21,39,117,20,255, + 247,0,7,0,0,15,192,0,15,128,0,31,0,0,31,0, + 0,62,0,0,60,0,0,120,0,0,112,0,0,96,0,0, + 0,0,0,0,0,127,193,248,63,129,248,31,0,224,15,128, + 224,15,129,192,7,193,192,7,193,128,7,195,128,3,227,128, + 3,231,0,1,247,0,1,246,0,0,254,0,0,254,0,0, + 252,0,0,124,0,0,120,0,0,56,0,0,56,0,0,112, + 0,0,112,0,0,224,0,33,224,0,127,192,0,127,128,0, + 255,0,0,124,0,0,20,39,117,22,1,247,6,0,0,254, + 0,0,254,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,31,0,62,127,128,62,255,192,63,135,224,63,3,224,62, + 1,240,62,0,240,62,0,240,62,0,240,62,0,240,62,0, + 240,62,0,224,62,0,224,62,1,192,63,195,192,63,255,128, + 62,255,0,62,60,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,255,192,0,255,192, + 0,21,36,108,20,255,247,3,129,192,7,195,224,7,195,224, + 7,195,224,7,131,192,7,3,128,0,0,0,0,0,0,0, + 0,0,127,193,248,63,129,248,31,0,224,15,128,224,15,129, + 192,7,193,192,7,193,128,7,195,128,3,227,128,3,231,0, + 1,247,0,1,246,0,0,254,0,0,254,0,0,252,0,0, + 124,0,0,120,0,0,56,0,0,56,0,0,112,0,0,112, + 0,0,224,0,33,224,0,127,192,0,127,128,0,255,0,0, + 124,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=18 h=38 x= 3 y=14 dx=21 dy= 0 ascent=31 len=114 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25n[960] U8G_SECTION(".progmem.u8g_font_gdb25n") = { + 0,61,57,236,242,24,0,0,0,0,42,57,0,31,249,24, + 0,16,16,32,18,1,14,0,192,3,192,3,192,99,140,123, + 158,125,191,127,252,15,224,7,224,63,252,253,190,249,158,51, + 142,3,192,3,192,3,0,15,14,28,17,1,4,1,128,3, + 128,3,128,3,128,3,128,3,128,127,254,255,252,3,128,3, + 128,3,128,3,128,3,128,3,0,8,12,12,11,2,249,30, + 127,255,127,31,31,30,30,60,56,112,96,12,2,4,14,1, + 9,127,240,255,240,6,6,6,11,3,255,56,124,252,252,252, + 120,17,38,114,19,1,249,0,1,128,0,7,128,0,7,128, + 0,15,0,0,15,0,0,15,0,0,30,0,0,30,0,0, + 28,0,0,60,0,0,60,0,0,120,0,0,120,0,0,120, + 0,0,240,0,0,240,0,0,224,0,1,224,0,1,224,0, + 3,192,0,3,192,0,3,192,0,7,128,0,7,128,0,7, + 0,0,15,0,0,15,0,0,30,0,0,30,0,0,30,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,120,0,0, + 240,0,0,240,0,0,192,0,0,18,24,72,20,1,0,3, + 240,0,7,252,0,30,62,0,28,31,0,60,15,0,120,15, + 128,120,15,128,120,7,128,248,7,192,248,7,192,248,7,192, + 248,7,192,248,7,192,248,7,192,248,7,192,248,7,192,120, + 7,128,124,7,128,124,15,128,60,15,0,62,14,0,31,30, + 0,15,248,0,3,224,0,16,24,48,20,2,0,0,96,3, + 224,31,224,255,224,99,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,7,240,127,255,127,255,16,24,48, + 20,2,0,3,248,15,252,60,62,124,63,120,31,248,31,112, + 31,0,31,0,62,0,60,0,124,0,120,0,240,1,224,3, + 224,3,192,7,128,15,1,30,3,60,3,120,3,127,255,255, + 255,255,255,16,24,48,20,2,0,7,240,31,248,60,124,120, + 62,248,62,248,62,64,62,0,60,0,124,0,240,7,240,7, + 252,0,254,0,62,0,63,0,31,0,31,0,31,0,31,0, + 30,192,62,240,124,127,248,15,192,17,24,72,20,1,0,0, + 12,0,0,124,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,188,0,7,188,0,7,60,0,14,60,0,14,60,0, + 28,60,0,56,60,0,56,60,0,112,60,0,255,255,128,255, + 255,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,3,255,128,3,255,128,17,24,72,20,1,0,31,255,0, + 31,255,128,31,254,0,31,252,0,24,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,63,240,0,63,252,0,48,126, + 0,96,31,0,0,31,0,0,15,128,0,15,128,0,15,128, + 0,15,128,0,15,128,0,31,0,96,31,0,248,126,0,63, + 252,0,7,224,0,17,24,72,20,2,0,0,14,0,0,126, + 0,1,240,0,7,192,0,15,128,0,30,0,0,62,0,0, + 60,0,0,124,0,0,121,248,0,127,254,0,254,63,0,252, + 31,0,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,124,15,128,124,15,0,60,31,0,31,30,0,15,252,0, + 3,240,0,17,24,72,20,2,0,127,255,128,127,255,0,255, + 255,0,255,255,0,224,6,0,192,14,0,128,12,0,0,28, + 0,0,28,0,0,56,0,0,56,0,0,112,0,0,112,0, + 0,240,0,0,224,0,1,224,0,1,192,0,3,192,0,3, + 192,0,7,128,0,7,128,0,15,128,0,31,0,0,28,0, + 0,17,24,72,21,2,0,3,240,0,15,252,0,28,62,0, + 24,31,0,56,31,0,56,31,0,56,31,0,60,62,0,63, + 60,0,31,248,0,15,240,0,7,252,0,14,254,0,62,63, + 0,124,31,128,120,31,128,248,15,128,248,15,128,248,15,128, + 248,15,0,124,31,0,126,62,0,63,252,0,7,224,0,17, + 25,75,20,2,255,3,240,0,15,252,0,30,62,0,60,30, + 0,120,31,0,120,31,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,128,126,63,128,63,255,128,15, + 207,0,0,15,0,0,31,0,0,30,0,0,62,0,0,124, + 0,0,248,0,1,240,0,15,192,0,63,0,0,56,0,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--40-400-72-72-P-200-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=34 h=41 x= 3 y=20 dx=35 dy= 0 ascent=33 len=136 + Font Bounding box w=61 h=57 x=-20 y=-14 + Calculated Min Values x=-6 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =33 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb25r[6779] U8G_SECTION(".progmem.u8g_font_gdb25r") = { + 0,61,57,236,242,25,7,167,18,92,32,127,247,33,247,31, + 247,0,0,0,10,0,0,6,30,30,12,3,255,12,60,252, + 252,252,124,120,120,120,120,120,120,120,120,120,120,120,120,56, + 48,48,32,0,0,56,124,252,252,252,120,13,13,26,19,3, + 16,24,56,248,248,248,248,248,248,248,248,248,248,248,240,112, + 240,112,112,112,112,112,112,112,112,112,112,19,23,69,20,1, + 2,0,97,192,0,227,128,0,227,128,0,195,128,1,195,0, + 1,199,0,31,255,224,31,255,224,35,142,0,3,142,0,3, + 14,0,7,12,0,7,28,0,7,28,0,127,255,128,255,255, + 128,14,56,0,12,56,0,28,48,0,28,112,0,24,112,0, + 24,112,0,32,224,0,17,30,90,21,2,253,0,192,0,1, + 192,0,1,192,0,3,240,0,31,254,0,63,255,128,113,223, + 0,225,207,0,225,199,0,225,194,0,241,192,0,255,192,0, + 127,192,0,63,248,0,15,252,0,3,254,0,1,255,0,1, + 223,128,1,207,128,193,199,128,193,199,128,225,199,128,241,207, + 0,253,207,0,255,254,0,63,252,0,7,224,0,1,192,0, + 1,192,0,1,128,0,26,25,100,28,1,0,0,0,3,0, + 15,128,15,0,63,192,14,0,113,224,28,0,112,224,56,0, + 224,112,120,0,224,112,112,0,224,112,224,0,224,113,192,0, + 224,115,192,0,96,103,128,0,112,103,0,0,48,206,62,0, + 31,28,99,0,0,60,195,128,0,56,193,128,0,113,193,192, + 0,225,193,192,1,225,193,192,1,193,193,192,3,129,193,192, + 7,0,225,128,15,0,227,128,14,0,127,0,28,0,62,0, + 27,28,112,28,1,0,0,126,0,0,1,255,128,0,3,143, + 128,0,7,7,192,0,7,7,192,0,15,7,192,0,15,7, + 192,0,15,15,128,0,15,159,0,0,15,191,0,0,7,254, + 0,0,7,248,0,0,7,240,0,0,15,240,255,224,31,241, + 255,192,63,248,61,128,125,252,60,0,124,254,28,0,248,254, + 28,0,248,127,28,0,248,63,184,0,248,31,248,0,248,15, + 240,0,252,7,248,0,124,3,252,0,63,7,255,192,31,254, + 127,128,7,240,28,0,5,13,13,11,3,16,24,248,248,248, + 248,248,248,112,112,112,112,112,112,11,37,74,13,2,250,0, + 64,1,224,3,192,7,128,15,0,15,0,30,0,30,0,60, + 0,60,0,124,0,124,0,120,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,120, + 0,124,0,124,0,124,0,60,0,62,0,30,0,31,0,15, + 0,7,128,3,192,1,224,0,64,11,37,74,13,0,250,64, + 0,240,0,120,0,60,0,30,0,31,0,15,0,15,128,7, + 128,7,192,7,192,7,192,7,192,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,192,7, + 192,7,192,7,192,7,128,15,128,15,0,15,0,30,0,30, + 0,60,0,120,0,240,0,64,0,16,16,32,18,1,14,0, + 192,3,192,3,192,99,140,123,158,125,191,127,252,15,224,7, + 224,63,252,253,190,249,158,51,142,3,192,3,192,3,0,15, + 14,28,17,1,4,1,128,3,128,3,128,3,128,3,128,3, + 128,127,254,255,252,3,128,3,128,3,128,3,128,3,128,3, + 0,8,12,12,11,2,249,30,127,255,127,31,31,30,30,60, + 56,112,96,12,2,4,14,1,9,127,240,255,240,6,6,6, + 11,3,255,56,124,252,252,252,120,17,38,114,19,1,249,0, + 1,128,0,7,128,0,7,128,0,15,0,0,15,0,0,15, + 0,0,30,0,0,30,0,0,28,0,0,60,0,0,60,0, + 0,120,0,0,120,0,0,120,0,0,240,0,0,240,0,0, + 224,0,1,224,0,1,224,0,3,192,0,3,192,0,3,192, + 0,7,128,0,7,128,0,7,0,0,15,0,0,15,0,0, + 30,0,0,30,0,0,30,0,0,60,0,0,60,0,0,56, + 0,0,120,0,0,120,0,0,240,0,0,240,0,0,192,0, + 0,18,24,72,20,1,0,3,240,0,7,252,0,30,62,0, + 28,31,0,60,15,0,120,15,128,120,15,128,120,7,128,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,248,7,192,120,7,128,124,7,128,124,15,128, + 60,15,0,62,14,0,31,30,0,15,248,0,3,224,0,16, + 24,48,20,2,0,0,96,3,224,31,224,255,224,99,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,3, + 224,3,224,3,224,3,224,3,224,3,224,3,224,3,224,7, + 240,127,255,127,255,16,24,48,20,2,0,3,248,15,252,60, + 62,124,63,120,31,248,31,112,31,0,31,0,62,0,60,0, + 124,0,120,0,240,1,224,3,224,3,192,7,128,15,1,30, + 3,60,3,120,3,127,255,255,255,255,255,16,24,48,20,2, + 0,7,240,31,248,60,124,120,62,248,62,248,62,64,62,0, + 60,0,124,0,240,7,240,7,252,0,254,0,62,0,63,0, + 31,0,31,0,31,0,31,0,30,192,62,240,124,127,248,15, + 192,17,24,72,20,1,0,0,12,0,0,124,0,0,124,0, + 0,252,0,1,252,0,1,252,0,3,188,0,7,188,0,7, + 60,0,14,60,0,14,60,0,28,60,0,56,60,0,56,60, + 0,112,60,0,255,255,128,255,255,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,3,255,128,3,255,128,17, + 24,72,20,1,0,31,255,0,31,255,128,31,254,0,31,252, + 0,24,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 63,240,0,63,252,0,48,126,0,96,31,0,0,31,0,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,31, + 0,96,31,0,248,126,0,63,252,0,7,224,0,17,24,72, + 20,2,0,0,14,0,0,126,0,1,240,0,7,192,0,15, + 128,0,30,0,0,62,0,0,60,0,0,124,0,0,121,248, + 0,127,254,0,254,63,0,252,31,0,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,124,15,128,124,15,0,60, + 31,0,31,30,0,15,252,0,3,240,0,17,24,72,20,2, + 0,127,255,128,127,255,0,255,255,0,255,255,0,224,6,0, + 192,14,0,128,12,0,0,28,0,0,28,0,0,56,0,0, + 56,0,0,112,0,0,112,0,0,240,0,0,224,0,1,224, + 0,1,192,0,3,192,0,3,192,0,7,128,0,7,128,0, + 15,128,0,31,0,0,28,0,0,17,24,72,21,2,0,3, + 240,0,15,252,0,28,62,0,24,31,0,56,31,0,56,31, + 0,56,31,0,60,62,0,63,60,0,31,248,0,15,240,0, + 7,252,0,14,254,0,62,63,0,124,31,128,120,31,128,248, + 15,128,248,15,128,248,15,128,248,15,0,124,31,0,126,62, + 0,63,252,0,7,224,0,17,25,75,20,2,255,3,240,0, + 15,252,0,30,62,0,60,30,0,120,31,0,120,31,0,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 128,126,63,128,63,255,128,15,207,0,0,15,0,0,31,0, + 0,30,0,0,62,0,0,124,0,0,248,0,1,240,0,15, + 192,0,63,0,0,56,0,0,6,19,19,11,3,255,56,124, + 252,252,252,120,0,0,0,0,0,0,0,56,124,252,252,252, + 120,8,26,26,11,2,249,8,62,126,126,126,124,0,0,0, + 0,0,0,0,0,30,127,255,127,31,31,30,30,60,56,112, + 96,16,13,26,18,1,5,0,3,0,31,0,255,3,252,31, + 224,127,128,252,0,254,0,127,192,15,248,1,255,0,63,0, + 6,16,8,16,18,1,7,127,255,255,255,0,0,0,0,0, + 0,0,0,127,255,255,255,16,13,26,18,1,5,112,0,252, + 0,255,128,31,240,3,254,0,127,0,63,0,255,7,248,63, + 224,127,0,248,0,192,0,15,30,60,18,1,255,7,240,31, + 248,60,124,120,126,248,62,248,62,248,62,224,62,0,62,0, + 124,0,124,0,248,0,240,1,240,1,224,1,192,3,192,3, + 128,3,128,3,128,3,128,0,0,0,0,0,0,3,128,7, + 192,15,192,15,192,15,192,7,128,31,34,136,35,2,248,0, + 7,248,0,0,63,255,0,0,255,255,192,1,248,15,224,3, + 192,1,240,7,128,0,248,15,0,0,120,30,0,0,60,60, + 3,195,60,56,15,238,28,120,30,126,30,120,60,62,14,112, + 120,62,14,240,120,62,14,240,248,62,14,240,248,62,14,240, + 248,62,14,240,248,62,14,240,248,62,12,240,248,62,28,240, + 252,62,28,248,124,126,56,120,127,255,240,120,127,191,224,124, + 63,159,192,60,30,15,0,62,0,0,0,31,0,0,0,31, + 128,0,48,15,224,0,240,7,248,7,224,1,255,255,192,0, + 127,255,0,0,15,248,0,25,25,100,25,0,0,0,4,0, + 0,0,30,0,0,0,62,0,0,0,126,0,0,0,127,0, + 0,0,111,0,0,0,239,128,0,0,239,128,0,0,199,128, + 0,1,199,192,0,1,199,192,0,1,131,192,0,3,131,224, + 0,3,131,224,0,3,255,224,0,7,255,240,0,7,0,240, + 0,6,0,248,0,14,0,248,0,14,0,120,0,12,0,124, + 0,28,0,124,0,28,0,124,0,255,129,255,0,255,129,255, + 128,22,25,75,24,0,0,15,254,0,255,255,128,223,15,224, + 31,3,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,224,31,15,128,31,255,0,31,255,224,31,3, + 240,31,1,248,31,0,248,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,248,31,3,240,127,255,224,255, + 255,0,20,25,75,22,1,0,0,127,128,3,255,240,7,135, + 224,15,1,224,30,0,192,60,0,64,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,252,0,0,124,0,0,124,0, + 0,126,0,32,63,0,112,31,193,224,15,255,192,7,255,0, + 1,252,0,22,25,75,25,1,0,15,252,0,255,255,128,255, + 15,192,31,3,224,31,1,240,31,1,248,31,0,248,31,0, + 248,31,0,124,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,120,31,0,248,31, + 0,248,31,1,240,31,1,240,31,3,224,31,7,192,127,255, + 128,255,252,0,19,25,75,21,1,0,255,255,192,255,255,192, + 62,1,192,30,1,192,30,1,128,30,1,128,30,0,128,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,0,31,254, + 0,30,6,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,96,30,0,96,30,0,224,63,1,224,255, + 255,224,255,255,192,18,25,75,20,1,0,255,255,192,255,255, + 192,62,1,192,30,1,192,30,1,192,30,0,192,30,0,128, + 30,0,0,30,0,0,30,0,0,30,0,0,31,254,0,31, + 254,0,30,4,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,62,0,0, + 255,192,0,255,224,0,22,25,75,24,1,0,0,127,128,1, + 255,240,7,131,240,15,1,224,30,0,224,60,0,64,60,0, + 0,124,0,0,120,0,0,248,0,0,248,0,0,248,0,0, + 248,15,252,248,15,252,248,1,240,248,1,240,252,1,240,124, + 1,240,124,1,240,126,1,240,63,1,240,31,129,240,15,255, + 192,7,255,128,0,252,0,25,25,100,27,1,0,255,227,255, + 128,127,227,255,128,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,255,252,0,31,255,252, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,31,0,124,0,31,0,124, + 0,31,0,124,0,31,0,124,0,127,195,255,128,255,227,255, + 128,11,25,50,13,1,0,255,224,127,224,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,127,192,255,224,18,33,99,13,251,248,3, + 255,192,1,255,128,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,60,0,0,60,0, + 0,56,0,16,120,0,56,112,0,127,224,0,255,128,0,62, + 0,0,24,25,75,25,0,0,255,227,254,127,193,254,31,0, + 240,31,1,224,31,3,192,31,7,128,31,15,0,31,14,0, + 31,28,0,31,60,0,31,120,0,31,240,0,31,248,0,31, + 124,0,31,60,0,31,62,0,31,31,0,31,15,128,31,7, + 192,31,3,224,31,3,240,31,1,248,31,0,255,127,224,127, + 255,224,60,20,25,75,20,0,0,255,224,0,127,224,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,48,31,0,96,31,0,96,31,128,224,127,255, + 224,255,255,224,31,25,100,34,1,0,255,0,1,254,127,0, + 1,254,31,128,1,240,31,128,3,240,31,192,3,240,31,192, + 7,240,31,192,7,240,31,224,14,240,29,224,14,240,29,240, + 30,240,28,240,28,240,28,248,28,240,28,248,56,240,28,124, + 56,248,28,124,112,248,28,60,112,248,28,62,224,248,28,30, + 224,248,28,31,224,248,28,31,192,248,28,15,192,248,28,15, + 128,248,28,7,128,248,255,7,7,254,255,3,7,254,25,25, + 100,27,1,0,254,0,255,128,255,0,127,0,31,0,28,0, + 31,128,28,0,31,192,28,0,31,192,28,0,31,224,28,0, + 29,240,28,0,29,248,28,0,28,248,28,0,28,124,28,0, + 28,126,28,0,28,62,28,0,28,31,28,0,28,15,156,0, + 28,15,156,0,28,7,220,0,28,3,252,0,28,3,252,0, + 28,1,252,0,28,0,252,0,28,0,252,0,28,0,124,0, + 127,0,60,0,255,128,12,0,23,25,75,25,1,0,0,126, + 0,3,255,192,7,135,224,14,1,240,30,0,248,60,0,248, + 60,0,124,124,0,124,120,0,126,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,252,0, + 60,124,0,124,124,0,120,62,0,120,62,0,240,31,1,224, + 15,195,192,7,255,0,0,252,0,21,25,75,23,1,0,15, + 254,0,255,255,192,255,7,224,31,3,240,31,1,248,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,1,240, + 31,1,240,31,135,224,31,127,128,31,62,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,127,224,0,255,224,0,27,31,124,25,1,250, + 0,126,0,0,3,255,192,0,7,135,224,0,14,1,240,0, + 30,0,248,0,60,0,248,0,60,0,124,0,124,0,124,0, + 120,0,124,0,248,0,62,0,248,0,62,0,248,0,62,0, + 248,0,62,0,248,0,62,0,248,0,62,0,248,0,62,0, + 252,0,60,0,124,0,124,0,124,0,120,0,62,0,120,0, + 62,0,240,0,31,1,224,0,15,195,192,0,7,255,128,0, + 0,255,0,0,0,7,224,0,0,1,248,96,0,0,255,224, + 0,0,127,192,0,0,31,128,0,0,7,0,23,25,75,24, + 1,0,15,252,0,255,255,128,255,15,192,31,7,192,31,3, + 224,31,3,224,31,3,224,31,3,224,31,3,224,31,7,192, + 31,7,128,31,255,0,31,254,0,31,124,0,31,30,0,31, + 15,0,31,15,0,31,7,128,31,7,192,31,3,224,31,3, + 224,31,1,240,31,1,254,127,192,254,255,224,248,17,25,75, + 21,2,0,3,252,0,31,255,0,60,63,0,112,14,0,240, + 6,0,240,0,0,248,0,0,252,0,0,254,0,0,127,128, + 0,63,224,0,31,248,0,7,254,0,1,255,0,0,127,0, + 0,31,128,0,15,128,0,7,128,192,7,128,192,7,128,224, + 7,0,240,14,0,252,28,0,255,248,0,31,224,0,23,25, + 75,23,0,0,127,255,252,127,255,254,96,124,14,224,124,12, + 192,124,12,192,124,12,192,124,12,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,0,124,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,0,124,0,3,255,128,3,255,128,25, + 25,100,27,1,0,255,224,255,128,127,224,255,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,28, + 0,31,0,28,0,31,0,28,0,31,0,28,0,31,0,24, + 0,15,128,56,0,15,128,56,0,7,192,112,0,3,224,224, + 0,1,255,192,0,0,127,0,0,26,25,100,27,0,0,255, + 192,63,192,127,192,63,192,31,0,14,0,31,0,14,0,15, + 128,28,0,15,128,28,0,15,128,28,0,7,192,56,0,7, + 192,56,0,3,224,48,0,3,224,112,0,3,224,112,0,1, + 240,224,0,1,240,224,0,0,240,224,0,0,249,192,0,0, + 249,192,0,0,125,192,0,0,127,128,0,0,63,128,0,0, + 63,0,0,0,63,0,0,0,31,0,0,0,30,0,0,0, + 8,0,0,34,25,125,34,0,0,255,192,224,127,192,127,128, + 224,63,192,30,0,224,14,0,31,1,240,14,0,31,1,240, + 12,0,15,1,248,28,0,15,3,248,28,0,15,131,248,28, + 0,15,131,252,28,0,7,135,60,24,0,7,135,60,56,0, + 7,134,62,56,0,7,206,30,56,0,3,206,31,56,0,3, + 204,15,48,0,3,220,15,112,0,3,252,15,240,0,3,248, + 7,240,0,1,248,7,224,0,1,248,7,224,0,1,240,3, + 224,0,1,240,3,224,0,0,240,1,224,0,0,224,1,192, + 0,0,192,1,128,0,25,25,100,25,0,0,127,225,255,0, + 127,225,255,0,31,128,124,0,15,128,112,0,15,192,240,0, + 7,224,224,0,3,225,192,0,1,243,192,0,1,251,128,0, + 0,255,0,0,0,127,0,0,0,126,0,0,0,62,0,0, + 0,127,0,0,0,127,128,0,0,239,192,0,1,231,192,0, + 1,195,224,0,3,131,240,0,7,129,240,0,7,0,248,0, + 14,0,252,0,30,0,254,0,255,131,255,128,255,131,255,128, + 24,25,75,25,0,0,126,0,255,255,0,255,31,0,56,15, + 128,56,15,192,112,7,192,112,3,224,224,3,224,224,1,241, + 192,1,241,192,0,251,128,0,251,128,0,127,0,0,127,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,1,255,192,1,255, + 192,19,25,75,22,1,0,63,255,224,63,255,224,120,7,192, + 112,15,192,96,15,128,96,31,128,32,63,0,0,62,0,0, + 126,0,0,124,0,0,252,0,1,248,0,1,240,0,3,240, + 0,3,224,0,7,224,0,15,192,0,15,128,0,31,128,32, + 31,0,96,63,0,96,126,0,96,124,0,224,255,255,224,255, + 255,224,11,37,74,14,2,250,255,224,255,224,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,255,224, + 255,224,17,38,114,19,1,249,192,0,0,240,0,0,112,0, + 0,112,0,0,120,0,0,56,0,0,60,0,0,60,0,0, + 28,0,0,30,0,0,30,0,0,14,0,0,15,0,0,7, + 0,0,7,128,0,7,128,0,3,128,0,3,192,0,3,192, + 0,1,192,0,1,224,0,0,224,0,0,224,0,0,240,0, + 0,112,0,0,120,0,0,120,0,0,56,0,0,60,0,0, + 60,0,0,28,0,0,30,0,0,14,0,0,15,0,0,15, + 0,0,7,0,0,7,128,0,1,128,10,37,74,13,1,250, + 255,192,255,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,255,192,255,192,16,19,38,20,2,11, + 0,128,3,128,3,192,3,192,7,224,6,224,14,224,12,112, + 12,112,28,120,24,56,24,56,48,28,48,28,112,28,96,14, + 96,14,224,7,128,6,17,2,6,19,1,251,127,255,128,255, + 255,128,9,10,20,13,0,20,56,0,248,0,252,0,124,0, + 62,0,30,0,15,0,7,0,3,128,1,0,19,18,54,20, + 1,0,1,248,0,15,254,0,62,63,0,124,31,0,124,31, + 0,112,31,0,0,31,0,1,255,0,15,255,0,63,31,0, + 124,31,0,120,31,0,248,31,0,248,31,32,248,127,224,255, + 223,192,127,159,128,62,14,0,20,30,90,21,0,0,6,0, + 0,254,0,0,254,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,62, + 0,0,62,31,0,62,127,192,63,255,192,63,199,224,63,1, + 224,62,1,240,62,0,240,62,0,240,62,0,240,62,0,240, + 62,0,240,62,0,224,62,1,224,62,1,192,63,131,128,63, + 255,0,15,252,0,1,240,0,16,18,36,18,1,0,1,252, + 7,255,31,31,60,15,60,7,120,6,120,0,248,0,248,0, + 248,0,248,0,248,0,124,0,126,3,63,7,63,254,15,252, + 3,240,21,30,90,22,1,0,0,1,192,0,63,192,0,63, + 192,0,7,192,0,7,192,0,7,192,0,7,192,0,7,192, + 0,7,192,0,7,192,0,7,192,0,7,192,3,247,192,15, + 255,192,30,31,192,60,15,192,124,7,192,120,7,192,248,7, + 192,248,7,192,248,7,192,248,7,192,248,7,192,252,7,192, + 252,15,192,126,31,192,127,255,248,63,247,248,31,231,224,7, + 131,128,17,18,54,19,1,0,1,240,0,15,252,0,30,62, + 0,60,31,0,120,15,0,120,15,128,248,15,128,255,255,128, + 255,254,0,248,0,0,248,0,0,248,0,0,252,0,0,126, + 1,128,127,7,0,63,254,0,31,252,0,7,240,0,17,29, + 87,14,0,0,0,63,0,0,255,128,3,143,0,7,134,0, + 7,0,0,15,0,0,15,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,252,0,255,248,0,31,16,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,127,240,0,255,240,0,21,27,81,22,0, + 247,1,248,24,15,255,248,30,31,240,60,15,128,124,7,192, + 124,7,192,124,7,192,124,7,192,62,7,128,63,15,0,31, + 254,0,3,248,0,7,128,0,15,128,0,31,192,0,31,255, + 0,31,255,224,7,255,240,30,255,248,124,3,248,120,0,248, + 248,0,248,248,0,240,252,1,224,127,3,192,31,255,0,3, + 248,0,22,30,90,23,1,0,6,0,0,254,0,0,254,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,15,128,62, + 63,192,62,127,224,62,255,224,63,199,224,63,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,3,224, + 62,3,224,62,3,224,62,3,224,62,3,224,255,143,248,255, + 223,252,10,27,54,12,1,0,30,0,63,0,63,0,63,0, + 30,0,0,0,0,0,0,0,0,0,14,0,254,0,254,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,15,36, + 72,11,250,247,0,60,0,126,0,126,0,126,0,60,0,0, + 0,0,0,0,0,0,0,28,3,252,3,252,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,124, + 0,124,0,124,0,124,0,124,0,124,0,124,0,124,0,120, + 0,120,32,240,120,224,255,192,255,128,60,0,21,30,90,22, + 1,0,6,0,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,15,240,62,7,240,62,7,128,62, + 15,0,62,62,0,62,120,0,62,240,0,63,224,0,63,240, + 0,62,248,0,62,124,0,62,62,0,62,31,0,62,31,128, + 62,15,192,62,7,224,255,131,248,255,129,224,10,30,60,12, + 1,0,6,0,254,0,254,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,128,255,192,34,18, + 90,34,0,0,6,15,192,248,0,255,63,227,252,0,255,127, + 255,254,0,31,227,252,126,0,31,129,248,62,0,31,1,240, + 62,0,31,1,240,62,0,31,1,240,62,0,31,1,240,62, + 0,31,1,240,62,0,31,1,240,62,0,31,1,240,62,0, + 31,1,240,62,0,31,1,240,62,0,31,1,240,62,0,31, + 1,240,62,0,127,199,252,255,128,255,199,252,255,192,22,18, + 54,23,1,0,14,15,128,254,63,192,254,255,224,63,255,224, + 63,199,224,63,3,224,62,3,224,62,3,224,62,3,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,255,143,248,255,223,252,19,18,54,21,1,0, + 1,248,0,7,254,0,30,31,128,60,15,128,124,7,192,120, + 7,192,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,192,124,3,192,124,7,128,62,7,128,63,15,0, + 15,252,0,3,240,0,20,27,81,22,1,247,14,31,0,254, + 127,128,254,255,192,63,135,224,63,3,224,62,1,240,62,0, + 240,62,0,240,62,0,240,62,0,240,62,0,240,62,0,224, + 62,0,224,62,1,192,63,195,192,63,255,128,62,255,0,62, + 60,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,255,192,0,255,192,0,21,27,81, + 22,1,247,1,240,64,7,252,224,14,31,192,60,15,192,60, + 7,192,120,7,192,248,7,192,248,7,192,248,7,192,248,7, + 192,248,7,192,252,7,192,252,15,192,126,31,192,127,255,192, + 63,247,192,31,231,192,7,135,192,0,7,192,0,7,192,0, + 7,192,0,7,192,0,7,192,0,7,192,0,7,192,0,63, + 240,0,63,248,16,18,36,18,1,0,14,30,254,127,254,255, + 63,255,63,207,31,135,31,6,30,6,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,62,0,255,192,255,224,14,18, + 36,17,2,0,15,192,63,248,120,248,240,112,240,48,248,48, + 254,0,127,128,63,224,15,248,3,248,192,252,192,124,224,60, + 224,60,248,120,255,240,63,192,15,25,50,15,0,0,3,0, + 7,0,15,0,31,0,31,0,31,0,31,0,127,254,255,252, + 31,8,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,140,31,254,31,248,15,224,7,128, + 22,18,54,23,1,0,14,0,224,254,31,224,126,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,62,3,224,62,3,224,62,3,224,62,3,224,62,7,224, + 63,31,252,31,251,252,31,243,240,15,193,192,20,18,54,20, + 0,0,255,131,240,127,3,240,62,1,192,31,1,192,31,1, + 128,15,3,128,15,131,0,15,135,0,7,199,0,7,206,0, + 3,238,0,3,236,0,1,252,0,1,252,0,0,248,0,0, + 248,0,0,240,0,0,96,0,28,18,72,29,0,0,255,131, + 3,240,127,3,129,240,62,3,128,192,30,7,193,192,31,7, + 193,192,31,15,193,192,15,15,227,128,15,157,227,128,15,157, + 243,128,7,153,243,0,7,248,255,0,7,240,255,0,3,240, + 126,0,3,240,126,0,3,224,62,0,1,224,60,0,1,192, + 28,0,1,128,24,0,21,18,54,21,0,0,255,199,240,255, + 199,240,63,131,192,15,131,128,15,199,0,7,238,0,3,252, + 0,1,248,0,1,248,0,0,252,0,1,254,0,3,190,0, + 7,31,0,6,31,128,12,15,192,28,7,224,127,31,248,255, + 31,248,21,27,81,20,255,247,127,193,248,63,129,248,31,0, + 224,15,128,224,15,129,192,7,193,192,7,193,128,7,195,128, + 3,227,128,3,231,0,1,247,0,1,246,0,0,254,0,0, + 254,0,0,252,0,0,124,0,0,120,0,0,56,0,0,56, + 0,0,112,0,0,112,0,0,224,0,33,224,0,127,192,0, + 127,128,0,255,0,0,124,0,0,16,18,36,19,1,0,63, + 255,63,255,112,62,112,126,96,124,96,248,1,248,1,240,3, + 224,7,224,7,192,15,128,31,129,31,3,62,3,124,3,127, + 255,255,255,11,37,74,14,2,250,0,96,1,224,3,192,7, + 128,15,0,31,0,31,0,31,0,31,0,31,0,31,128,15, + 128,15,128,15,128,15,128,15,0,31,0,62,0,252,0,255, + 0,31,0,15,128,15,128,15,128,15,128,15,128,31,128,31, + 0,31,0,31,0,31,0,31,0,15,0,15,128,7,192,1, + 224,0,96,3,41,41,9,3,248,96,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,192,11,37,74,14,1,250,192,0,240,0,124,0,62,0, + 30,0,31,0,31,0,31,0,31,0,31,0,63,0,62,0, + 62,0,62,0,62,0,62,0,31,0,31,224,7,224,15,128, + 31,0,30,0,62,0,62,0,62,0,62,0,63,0,31,0, + 31,0,31,0,31,0,31,0,30,0,60,0,120,0,240,0, + 192,0,18,6,18,20,1,9,15,0,192,31,192,128,63,225, + 0,99,255,0,192,254,0,128,56,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=41 h=49 x= 5 y=27 dx=42 dy= 0 ascent=42 len=210 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x=-7 y=-13 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =42 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30[19508] U8G_SECTION(".progmem.u8g_font_gdb30") = { + 0,74,69,232,239,30,10,50,24,78,32,255,245,42,243,38, + 245,0,0,0,12,0,0,8,36,36,15,3,255,6,31,127, + 126,126,126,126,126,126,126,62,62,62,62,62,62,62,60,60, + 60,60,60,60,28,28,24,0,0,0,62,127,255,255,255,254, + 124,16,16,32,23,3,19,14,3,126,31,254,63,254,63,124, + 63,124,63,124,63,124,63,124,30,124,30,124,30,60,30,60, + 30,56,30,56,30,56,14,22,27,81,24,2,3,0,56,48, + 0,120,112,0,112,240,0,112,224,0,240,224,0,225,224,0, + 225,192,31,255,252,31,255,252,63,255,252,3,195,128,3,195, + 128,3,135,128,3,135,0,7,135,0,7,135,0,255,255,240, + 255,255,240,255,255,224,14,30,0,14,28,0,30,28,0,28, + 60,0,28,60,0,28,56,0,60,56,0,56,112,0,20,36, + 108,24,2,252,0,48,0,0,112,0,0,112,0,0,112,0, + 3,255,0,15,255,224,63,255,240,124,119,240,120,115,224,240, + 113,224,240,112,192,248,112,0,252,112,0,255,112,0,127,240, + 0,63,248,0,31,254,0,7,255,128,0,255,192,0,127,224, + 0,119,224,0,113,240,0,113,240,224,112,240,224,112,240,240, + 112,240,248,112,224,252,113,224,255,119,192,255,255,192,63,255, + 0,7,252,0,0,112,0,0,112,0,0,112,0,0,96,0, + 31,30,120,34,2,0,0,0,0,16,7,192,0,240,31,224, + 1,224,56,240,3,192,120,120,3,128,112,120,7,128,240,60, + 15,0,240,60,30,0,240,60,28,0,240,60,60,0,240,60, + 120,0,240,60,240,0,112,57,224,0,120,57,224,0,56,115, + 192,0,31,231,131,224,15,143,12,48,0,15,24,56,0,30, + 56,28,0,60,56,28,0,120,120,30,0,120,120,30,0,240, + 120,30,1,224,120,30,3,192,120,30,3,192,120,28,7,128, + 60,60,15,0,30,56,30,0,15,240,28,0,7,192,31,34, + 136,33,2,0,0,31,128,0,0,127,224,0,0,227,240,0, + 1,225,248,0,3,193,248,0,3,193,248,0,7,193,248,0, + 7,193,248,0,7,195,240,0,7,195,240,0,7,231,224,0, + 7,239,192,0,3,255,128,0,3,255,0,0,3,252,0,0, + 1,248,0,0,7,252,63,252,15,252,127,254,31,254,31,184, + 63,127,15,128,62,127,7,128,126,63,135,128,252,31,199,128, + 252,31,231,128,252,15,247,0,252,7,255,0,252,3,254,0, + 252,1,252,0,254,0,255,0,127,0,127,128,127,129,255,248, + 63,255,223,248,15,255,15,244,3,252,7,128,7,16,16,13, + 3,19,14,126,254,254,124,124,124,124,124,124,124,60,60,56, + 56,56,13,45,90,16,3,249,0,16,0,120,0,240,1,224, + 3,224,7,192,7,128,15,128,31,0,31,0,63,0,62,0, + 62,0,126,0,126,0,126,0,124,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,126,0,126,0,126,0,126,0,62,0,63,0,63,0, + 31,0,15,128,15,128,7,192,3,192,1,224,0,240,0,120, + 0,16,13,44,88,16,0,249,64,0,240,0,120,0,60,0, + 30,0,31,0,15,128,15,192,7,192,7,224,7,224,3,224, + 3,240,3,240,3,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 3,240,3,240,3,240,3,224,3,224,7,224,7,192,7,192, + 15,128,15,0,31,0,62,0,60,0,120,0,240,0,64,0, + 19,20,60,21,1,17,0,48,0,1,240,0,1,240,0,32, + 240,0,112,225,128,120,227,192,126,231,224,127,255,224,31,255, + 0,3,248,0,3,248,0,31,255,0,127,255,192,254,231,192, + 124,227,192,48,225,192,0,240,128,0,240,0,1,240,0,0, + 192,0,18,18,54,20,1,4,0,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,127,255,192, + 255,255,192,255,255,128,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,192,0,10,15, + 30,13,1,247,7,0,63,128,255,192,127,192,63,192,15,192, + 15,192,15,128,15,128,15,0,31,0,30,0,60,0,120,0, + 48,0,15,3,6,17,1,11,127,254,127,252,255,252,8,7, + 7,13,3,255,62,127,255,255,255,254,124,21,46,138,23,1, + 248,0,0,56,0,0,248,0,0,240,0,1,240,0,1,240, + 0,1,224,0,3,224,0,3,224,0,3,192,0,7,192,0, + 7,128,0,15,128,0,15,128,0,15,0,0,31,0,0,31, + 0,0,30,0,0,62,0,0,60,0,0,124,0,0,124,0, + 0,120,0,0,248,0,0,248,0,0,240,0,1,240,0,1, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,120, + 0,0,248,0,0,248,0,0,192,0,0,22,29,87,24,1, + 0,0,252,0,3,255,0,7,143,192,15,7,224,30,3,224, + 62,1,240,62,1,240,124,1,248,124,1,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,124,0,248,124,0,248, + 126,0,248,62,1,240,62,1,240,31,1,224,31,3,192,15, + 135,128,3,255,0,0,252,0,19,29,87,24,3,0,0,16, + 0,0,248,0,7,248,0,63,248,0,255,248,0,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,15,255,0,127, + 255,224,127,255,224,20,29,87,24,1,0,0,255,0,7,255, + 192,15,143,224,63,7,224,62,3,240,126,3,240,126,3,240, + 120,3,240,0,3,240,0,7,224,0,7,224,0,15,192,0, + 15,128,0,31,128,0,31,0,0,62,0,0,124,0,0,248, + 0,0,248,0,1,240,0,3,224,32,7,192,48,15,128,48, + 15,0,48,30,0,112,63,255,240,127,255,240,255,255,240,127, + 255,240,20,29,87,24,1,0,1,254,0,7,255,128,31,31, + 192,63,15,192,62,7,224,126,7,224,60,7,224,0,7,224, + 0,7,192,0,15,192,0,31,128,0,127,0,1,254,0,1, + 255,128,2,63,192,0,15,224,0,7,224,0,3,240,0,3, + 240,0,3,240,0,3,240,0,3,240,0,3,240,64,7,224, + 96,15,224,252,31,192,63,255,128,31,254,0,3,248,0,21, + 29,87,25,2,0,0,1,128,0,15,128,0,31,128,0,63, + 128,0,63,128,0,127,128,0,255,128,0,239,128,1,239,128, + 3,207,128,3,143,128,7,143,128,7,15,128,14,15,128,30, + 15,128,28,15,128,56,15,128,56,15,128,127,255,248,255,255, + 240,255,255,224,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,31,192,1,255,240,1,255,240,20,29,87,24, + 2,0,0,0,32,31,255,240,31,255,192,31,255,192,31,255, + 128,28,0,0,28,0,0,28,0,0,60,0,0,60,0,0, + 56,0,0,59,252,0,63,255,0,63,255,128,120,31,192,32, + 15,224,0,7,224,0,7,240,0,3,240,0,3,240,0,3, + 240,0,3,240,0,3,240,0,7,224,64,7,224,224,15,192, + 252,31,128,63,254,0,7,248,0,20,29,87,24,2,0,0, + 1,128,0,31,192,0,127,0,1,252,0,3,240,0,7,192, + 0,15,128,0,31,128,0,63,0,0,62,0,0,126,0,0, + 124,126,0,125,255,128,255,255,192,255,15,224,254,7,224,252, + 7,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 240,126,3,224,126,3,224,62,3,192,31,7,192,15,143,128, + 7,255,0,1,248,0,21,28,84,24,2,0,127,255,240,127, + 255,248,127,255,240,127,255,224,112,1,224,224,1,224,192,1, + 192,64,3,192,0,3,128,0,7,128,0,7,0,0,15,0, + 0,15,0,0,30,0,0,30,0,0,60,0,0,60,0,0, + 124,0,0,120,0,0,248,0,0,240,0,1,240,0,1,240, + 0,3,224,0,3,224,0,7,224,0,15,192,0,6,0,0, + 20,29,87,24,2,0,0,252,0,7,255,128,15,31,192,30, + 15,192,28,7,224,60,7,224,60,7,224,60,7,224,62,15, + 192,63,143,128,31,255,0,31,254,0,15,252,0,3,255,0, + 7,255,128,15,255,192,31,31,224,62,15,240,126,7,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,224,126,3, + 224,126,7,192,63,15,128,31,254,0,3,248,0,20,29,87, + 24,2,255,1,252,0,7,255,0,15,31,128,30,15,192,62, + 7,224,124,7,224,124,7,224,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,254,3,240,126,7,240,127,15,240, + 63,255,240,31,251,224,7,227,224,0,7,224,0,7,192,0, + 7,192,0,15,128,0,31,0,0,62,0,0,252,0,3,248, + 0,15,224,0,63,128,0,56,0,0,8,23,23,13,3,255, + 62,127,255,255,255,254,124,0,0,0,0,0,0,0,0,0, + 62,127,255,255,255,254,124,10,31,62,13,1,247,15,128,31, + 192,63,192,63,192,63,192,31,128,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,63, + 128,255,192,127,192,63,192,15,192,15,192,15,128,15,128,15, + 0,31,0,30,0,60,0,120,0,48,0,20,16,48,22,1, + 6,0,0,96,0,1,240,0,15,224,0,127,224,3,255,128, + 15,252,0,127,224,0,127,0,0,254,0,0,255,192,0,63, + 248,0,7,254,0,1,255,192,0,63,224,0,7,240,0,0, + 192,20,10,30,22,1,8,127,255,224,127,255,240,255,255,224, + 0,0,0,0,0,0,0,0,0,0,0,0,127,255,224,127, + 255,240,255,255,224,20,16,48,22,1,6,48,0,0,126,0, + 0,255,192,0,63,240,0,15,254,0,1,255,192,0,63,224, + 0,7,240,0,31,224,0,127,224,3,255,0,31,248,0,127, + 224,0,127,0,0,248,0,0,64,0,0,19,35,105,22,2, + 255,1,254,0,15,255,128,63,31,192,126,15,192,124,7,224, + 252,7,224,252,7,224,252,7,224,240,7,224,0,7,192,0, + 15,192,0,15,128,0,31,128,0,63,0,0,126,0,0,124, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,128,0,0,0,0,0, + 0,0,0,0,0,1,240,0,3,248,0,7,248,0,7,248, + 0,7,248,0,7,240,0,3,224,0,38,42,210,42,2,246, + 0,0,255,192,0,0,7,255,248,0,0,31,255,254,0,0, + 127,255,255,0,0,255,0,255,128,1,248,0,31,192,3,224, + 0,7,224,7,192,0,3,224,15,128,0,1,240,31,0,0, + 1,240,31,0,252,24,248,62,3,254,120,248,60,7,255,240, + 120,124,15,135,240,124,124,31,3,240,124,120,31,3,240,60, + 120,62,3,240,60,248,62,3,240,60,248,126,3,240,60,248, + 126,3,240,60,248,126,3,240,60,248,126,3,240,60,248,126, + 3,240,56,248,126,3,240,56,248,126,3,240,120,252,127,3, + 240,112,252,63,7,240,224,124,63,143,249,224,124,31,255,255, + 192,126,31,251,255,128,62,15,241,254,0,63,3,224,248,0, + 63,128,0,0,0,31,192,0,0,0,15,224,0,0,128,15, + 240,0,1,192,7,252,0,7,192,3,255,128,127,128,0,255, + 255,254,0,0,127,255,252,0,0,31,255,240,0,0,1,255, + 0,0,30,30,120,30,0,0,0,1,128,0,0,7,128,0, + 0,15,192,0,0,31,192,0,0,31,224,0,0,31,224,0, + 0,63,224,0,0,63,240,0,0,59,240,0,0,121,240,0, + 0,121,248,0,0,113,248,0,0,240,252,0,0,240,252,0, + 0,224,252,0,1,224,126,0,1,224,126,0,1,192,126,0, + 3,255,255,0,3,255,255,0,3,128,31,0,7,128,31,128, + 7,0,31,128,7,0,15,192,15,0,15,192,14,0,15,192, + 14,0,7,224,30,0,7,224,255,192,63,252,255,192,63,252, + 26,30,120,29,0,0,3,255,128,0,255,255,240,0,127,193, + 252,0,15,192,126,0,15,192,127,0,15,192,63,0,15,192, + 63,0,15,192,63,0,15,192,63,0,15,192,62,0,15,192, + 126,0,15,192,252,0,15,195,248,0,15,255,224,0,15,255, + 252,0,15,192,254,0,15,192,63,0,15,192,31,128,15,192, + 31,128,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,128,15,192,31,128,15,192, + 63,0,31,192,254,0,127,255,252,0,127,255,224,0,24,30, + 90,27,1,0,0,31,224,0,255,252,1,255,254,7,224,254, + 15,128,126,31,128,60,31,0,28,62,0,0,62,0,0,126, + 0,0,124,0,0,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 126,0,0,126,0,0,127,0,0,63,128,2,63,192,15,31, + 240,62,15,255,248,7,255,240,1,255,192,0,127,0,29,30, + 120,31,0,0,3,255,192,0,255,255,248,0,127,192,254,0, + 143,192,63,128,15,192,31,192,15,192,15,192,15,192,7,224, + 15,192,7,240,15,192,3,240,15,192,3,240,15,192,3,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,240,15,192,3,240,15,192,3,240,15,192,7,224, + 15,192,7,224,15,192,15,192,15,192,31,128,15,192,63,0, + 31,224,254,0,127,255,248,0,127,255,192,0,23,30,90,25, + 1,0,255,255,248,255,255,252,63,128,56,31,128,56,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,224,31,255,224,31, + 128,192,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,6,31,128,6,31,128,14, + 31,128,14,63,192,30,255,255,254,255,255,252,22,30,90,24, + 1,0,255,255,248,255,255,252,63,128,60,31,128,28,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,192,31,255,224,31, + 129,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,63,192,0,255,248,0,255,248,0,27,30,120,29, + 1,0,0,15,248,0,0,127,255,128,1,240,127,128,3,192, + 63,0,7,128,15,0,15,0,14,0,31,0,0,0,62,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,124,0, + 0,0,252,0,0,0,252,0,0,0,252,1,255,224,252,1, + 255,224,252,0,127,192,252,0,31,128,252,0,31,128,254,0, + 31,128,126,0,31,128,127,0,31,128,127,0,31,128,63,128, + 31,128,63,192,31,128,31,240,63,0,15,255,254,0,7,255, + 252,0,1,255,240,0,0,63,128,0,30,30,120,33,1,0, + 255,240,63,252,255,240,63,252,63,192,15,240,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,255,255,224,31,255,255,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,63,192,15,240, + 255,240,63,252,255,240,63,252,12,30,60,16,2,0,255,240, + 255,240,63,192,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,21,40,120,16,249,246, + 0,255,248,0,255,248,0,31,224,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,192,0,15,192, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,128,0,15,128, + 0,15,128,0,31,0,24,30,0,62,62,0,127,248,0,255, + 240,0,127,224,0,31,128,0,29,30,120,30,1,0,255,240, + 255,224,255,240,255,224,63,192,31,0,31,128,62,0,31,128, + 124,0,31,128,248,0,31,129,240,0,31,129,224,0,31,131, + 192,0,31,135,128,0,31,143,0,0,31,159,0,0,31,190, + 0,0,31,188,0,0,31,252,0,0,31,254,0,0,31,191, + 0,0,31,159,128,0,31,143,192,0,31,135,224,0,31,135, + 240,0,31,131,248,0,31,129,252,0,31,128,254,0,31,128, + 126,0,31,128,127,0,31,128,63,192,63,192,31,240,255,240, + 15,248,255,240,7,128,23,30,90,24,1,0,255,240,0,255, + 240,0,63,192,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,4,31,128,6,31,128,14,31,128,30,63,192,60, + 255,255,252,255,255,252,38,30,150,41,1,0,255,128,0,15, + 248,255,192,0,15,248,15,192,0,31,192,15,224,0,31,192, + 15,224,0,31,192,15,240,0,63,192,15,240,0,63,192,15, + 248,0,127,192,15,248,0,119,192,14,252,0,247,192,14,252, + 0,247,192,14,124,1,231,192,14,126,1,231,192,14,62,1, + 199,192,14,63,3,199,192,14,31,3,135,192,14,31,135,135, + 192,14,31,135,135,192,14,15,143,7,192,14,15,207,7,192, + 30,7,222,7,192,30,7,254,7,192,30,3,252,7,192,30, + 3,252,7,192,30,3,248,7,192,30,1,248,7,224,30,1, + 248,7,224,31,0,240,15,224,255,192,240,63,252,255,192,96, + 63,252,30,30,120,32,1,0,255,0,15,252,255,128,15,252, + 63,192,3,240,31,192,1,224,31,224,1,224,31,240,1,224, + 31,240,1,224,31,248,1,224,31,252,1,224,30,254,1,224, + 30,126,1,224,30,63,1,224,30,63,129,224,30,31,129,224, + 30,15,193,224,30,7,225,224,30,7,225,224,30,3,241,224, + 30,1,249,224,30,1,253,224,30,0,253,224,30,0,127,224, + 30,0,63,224,30,0,63,224,30,0,31,224,30,0,15,224, + 30,0,7,224,63,0,7,224,255,192,3,224,255,192,0,224, + 27,30,120,30,1,0,0,31,192,0,0,255,240,0,3,225, + 252,0,7,128,126,0,15,0,63,0,31,0,31,0,30,0, + 31,128,62,0,15,128,126,0,15,192,124,0,15,192,124,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,254,0,7,192,126,0,15,192,126,0,15,128,127,0, + 15,128,63,0,31,0,31,128,31,0,31,192,62,0,15,240, + 252,0,7,255,240,0,1,255,224,0,0,127,0,0,25,30, + 120,27,0,0,3,255,192,0,255,255,248,0,127,193,252,0, + 143,192,126,0,15,192,63,0,15,192,63,0,15,192,31,128, + 15,192,31,128,15,192,31,128,15,192,31,128,15,192,31,128, + 15,192,31,0,15,192,63,0,15,192,62,0,15,192,126,0, + 15,208,252,0,15,223,240,0,15,207,192,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 31,224,0,0,127,252,0,0,127,252,0,0,32,38,152,30, + 1,248,0,31,192,0,0,255,240,0,3,225,252,0,7,128, + 126,0,15,0,63,0,31,0,31,0,30,0,31,128,62,0, + 15,128,126,0,15,192,124,0,15,192,124,0,7,192,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,254,0, + 7,192,126,0,15,192,126,0,15,128,127,0,15,128,63,0, + 31,0,31,128,31,0,31,192,62,0,15,240,252,0,7,255, + 248,0,1,255,224,0,0,127,240,0,0,1,252,0,0,0, + 254,2,0,0,63,135,0,0,31,255,0,0,15,254,0,0, + 3,252,0,0,1,252,0,0,0,120,29,30,120,29,0,0, + 7,255,128,0,255,255,240,0,127,193,252,0,143,192,126,0, + 15,192,126,0,15,192,63,0,15,192,63,0,15,192,63,0, + 15,192,63,0,15,192,63,0,15,192,126,0,15,192,126,0, + 15,192,252,0,15,255,248,0,15,255,240,0,15,255,192,0, + 15,199,192,0,15,195,224,0,15,193,240,0,15,193,240,0, + 15,192,248,0,15,192,252,0,15,192,126,0,15,192,126,0, + 15,192,63,0,15,192,63,128,15,192,31,192,31,224,31,248, + 127,248,15,248,127,248,15,128,20,30,90,25,3,0,1,255, + 0,15,255,192,30,15,224,60,7,192,120,3,192,248,1,128, + 248,0,0,252,0,0,254,0,0,255,0,0,127,192,0,127, + 240,0,63,252,0,31,255,0,7,255,128,1,255,192,0,127, + 224,0,31,224,0,7,240,0,3,240,0,1,240,192,1,240, + 224,1,240,224,1,224,240,3,224,248,3,192,254,15,128,255, + 255,0,127,254,0,15,240,0,27,30,120,28,0,0,127,255, + 255,224,127,255,255,224,112,31,128,224,112,31,128,224,96,31, + 128,224,96,31,128,224,224,31,128,96,64,31,128,96,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,63,192,0,1,255, + 248,0,1,255,248,0,29,30,120,32,1,0,255,240,31,248, + 255,240,31,248,63,192,7,224,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,128,31,192,7,128,15,192,7,128,15,224,7,0, + 7,224,15,0,3,248,62,0,1,255,252,0,0,255,240,0, + 0,31,192,0,31,30,120,32,0,0,255,240,7,254,255,240, + 7,254,31,128,0,240,15,192,0,224,15,192,0,224,15,192, + 1,224,7,224,1,192,7,224,3,192,3,240,3,192,3,240, + 3,128,3,240,7,128,1,248,7,128,1,248,7,0,0,248, + 15,0,0,252,14,0,0,252,14,0,0,126,30,0,0,126, + 28,0,0,62,28,0,0,63,60,0,0,63,56,0,0,31, + 248,0,0,31,240,0,0,15,240,0,0,15,240,0,0,15, + 224,0,0,7,224,0,0,7,224,0,0,3,192,0,0,3, + 0,0,41,30,180,41,0,0,255,240,12,3,255,128,255,240, + 30,3,255,128,31,128,30,0,124,0,15,128,30,0,56,0, + 15,128,63,0,120,0,15,128,63,0,120,0,15,192,63,128, + 112,0,7,192,127,128,112,0,7,192,127,128,112,0,7,192, + 127,192,240,0,7,224,247,192,224,0,3,224,231,224,224,0, + 3,224,227,224,224,0,3,225,227,225,224,0,3,241,195,241, + 224,0,3,241,193,241,192,0,1,243,193,241,192,0,1,243, + 128,249,192,0,1,251,128,251,192,0,1,255,128,255,192,0, + 0,255,0,127,128,0,0,255,0,127,128,0,0,254,0,127, + 128,0,0,254,0,63,128,0,0,126,0,63,0,0,0,124, + 0,31,0,0,0,124,0,31,0,0,0,124,0,31,0,0, + 0,120,0,14,0,0,0,48,0,12,0,0,29,30,120,30, + 1,0,255,240,127,240,255,240,127,240,63,192,31,128,31,192, + 15,0,15,192,30,0,7,224,60,0,7,240,60,0,3,240, + 120,0,1,248,240,0,1,252,240,0,0,255,224,0,0,127, + 192,0,0,127,192,0,0,63,128,0,0,31,128,0,0,31, + 192,0,0,63,224,0,0,127,224,0,0,127,240,0,0,243, + 248,0,1,241,248,0,1,225,252,0,3,192,254,0,7,192, + 126,0,7,128,63,0,15,0,63,128,31,0,31,192,63,0, + 63,224,255,192,255,248,255,192,255,248,29,30,120,29,0,0, + 127,0,31,248,255,128,31,248,31,192,3,192,15,192,3,128, + 7,224,7,128,3,240,7,0,3,240,15,0,1,248,14,0, + 1,248,30,0,0,252,28,0,0,124,60,0,0,126,56,0, + 0,63,120,0,0,63,240,0,0,31,240,0,0,31,224,0, + 0,15,224,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,31,224,0, + 0,255,252,0,0,255,252,0,23,30,90,26,1,0,63,255, + 254,63,255,254,60,0,254,56,1,252,56,1,248,48,3,248, + 48,7,240,64,7,240,0,15,224,0,15,192,0,31,192,0, + 63,128,0,63,128,0,127,0,0,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,248,0,7,240,0,15,224,0, + 15,224,4,31,192,6,31,192,6,63,128,14,127,0,14,127, + 0,30,255,255,254,127,255,254,12,45,90,16,3,248,255,240, + 255,240,255,240,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,255,240,255,240,255,240,21,46,138,23,1,248,224,0, + 0,248,0,0,120,0,0,120,0,0,124,0,0,60,0,0, + 60,0,0,62,0,0,30,0,0,31,0,0,15,0,0,15, + 0,0,15,128,0,7,128,0,7,128,0,7,192,0,3,192, + 0,3,192,0,3,224,0,1,224,0,1,240,0,0,240,0, + 0,240,0,0,248,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,60,0,0,62,0,0,30,0,0,31,0,0,15, + 0,0,15,0,0,15,128,0,7,128,0,7,128,0,7,192, + 0,3,192,0,3,192,0,1,224,0,1,224,0,1,240,0, + 0,240,0,0,240,0,0,56,12,45,90,16,1,248,255,240, + 255,240,255,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,255,240,255,240,255,240,19,23,69,24,2,13,0,32, + 0,0,112,0,0,240,0,1,240,0,1,248,0,1,248,0, + 3,188,0,3,188,0,7,60,0,7,30,0,6,30,0,14, + 14,0,14,15,0,12,15,0,28,7,128,28,7,128,24,3, + 128,56,3,192,48,3,192,112,1,224,112,1,224,96,0,224, + 192,0,192,21,3,9,23,1,250,127,255,248,127,255,248,255, + 255,240,11,11,22,15,0,24,60,0,252,0,254,0,126,0, + 63,0,31,0,15,128,7,128,3,192,1,192,0,224,23,22, + 66,24,1,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,24,36,108,26,0,0,3,0,0,63, + 128,0,255,128,0,127,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,131,224,31,143,248,31,191,252,31, + 255,252,31,240,254,31,192,126,31,128,63,31,128,63,31,128, + 31,31,128,31,31,128,31,31,128,31,31,128,31,31,128,30, + 31,128,30,31,128,60,31,128,56,31,240,248,31,255,240,15, + 255,192,3,255,128,0,126,0,20,22,66,22,1,0,0,127, + 128,1,255,240,7,135,224,15,3,224,30,1,224,62,0,192, + 124,0,192,124,0,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,0,254,0,0,126,0,32,127,0, + 112,63,193,224,63,255,192,31,255,128,7,255,0,1,252,0, + 25,36,144,27,2,0,0,0,56,0,0,15,248,0,0,15, + 248,0,0,3,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,249, + 248,0,7,255,248,0,15,255,248,0,31,135,248,0,63,3, + 248,0,62,1,248,0,126,1,248,0,124,1,248,0,252,1, + 248,0,252,1,248,0,252,1,248,0,252,1,248,0,252,1, + 248,0,252,1,248,0,254,1,248,0,126,1,248,0,127,3, + 248,0,127,135,253,0,63,255,255,128,31,253,254,0,15,248, + 252,0,3,224,224,0,19,22,66,23,2,0,0,252,0,7, + 255,0,15,31,128,30,15,128,62,15,192,124,7,192,124,7, + 224,124,7,224,252,7,224,255,255,224,255,255,128,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,64,127,0,224,63, + 131,192,63,255,128,31,255,0,15,254,0,3,248,0,20,37, + 111,16,1,0,0,15,128,0,63,224,0,255,240,1,255,224, + 3,227,224,7,193,192,7,193,0,15,128,0,15,128,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,127,255,0,255,254,0,31,132,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,63,224,0,255,252,0, + 255,252,0,25,33,132,25,0,245,0,126,1,128,3,255,223, + 128,7,135,255,0,15,3,254,0,30,1,240,0,30,0,248, + 0,62,0,248,0,62,0,248,0,62,0,248,0,62,0,248, + 0,63,0,240,0,31,129,224,0,15,195,192,0,7,255,128, + 0,1,254,0,0,3,224,0,0,7,192,0,0,15,192,0, + 0,31,254,0,0,31,255,240,0,15,255,252,0,7,255,254, + 0,15,159,255,0,62,0,127,0,124,0,63,0,252,0,31, + 0,252,0,30,0,254,0,30,0,255,0,60,0,127,192,248, + 0,63,255,240,0,15,255,192,0,1,254,0,0,26,36,144, + 28,1,0,1,128,0,0,63,128,0,0,255,128,0,0,255, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,129,240,0,31, + 143,252,0,31,159,252,0,31,255,254,0,31,248,254,0,31, + 224,126,0,31,192,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,63,192,255,0,255,243,255,192,255, + 243,255,192,12,32,64,14,1,0,7,128,15,192,31,192,31, + 192,31,128,15,0,0,0,0,0,0,0,0,0,3,128,127, + 128,255,128,127,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,63,192,255,240,255,240,17,43,129,14,250,245,0, + 15,0,0,31,128,0,63,128,0,63,128,0,63,0,0,30, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128, + 0,127,128,0,255,128,0,127,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,0,0,31,0,0,62,0,16,62, + 0,60,124,0,127,248,0,255,224,0,255,192,0,63,0,0, + 26,36,144,26,1,0,1,128,0,0,63,128,0,0,255,128, + 0,0,255,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,129, + 255,128,31,129,255,128,31,128,252,0,31,128,248,0,31,131, + 224,0,31,135,192,0,31,143,128,0,31,158,0,0,31,188, + 0,0,31,252,0,0,31,190,0,0,31,191,0,0,31,159, + 128,0,31,143,192,0,31,135,224,0,31,135,240,0,31,131, + 248,0,31,129,252,0,31,128,252,0,63,128,255,192,255,240, + 127,192,255,240,62,0,12,36,72,14,1,0,1,128,63,128, + 255,128,255,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,192, + 255,240,255,240,39,22,110,41,1,0,3,3,224,31,128,127, + 143,248,127,192,255,159,249,255,224,127,255,255,255,240,31,241, + 255,135,240,31,224,255,3,240,31,128,252,3,240,31,128,252, + 3,240,31,128,252,3,240,31,128,252,3,240,31,128,252,3, + 240,31,128,252,3,240,31,128,252,3,240,31,128,252,3,240, + 31,128,252,3,240,31,128,252,3,240,31,128,252,3,240,31, + 128,252,3,240,31,128,252,3,240,63,128,252,3,248,255,247, + 255,159,254,255,247,255,159,254,26,22,88,28,1,0,3,1, + 240,0,127,135,252,0,255,159,252,0,63,191,254,0,31,248, + 254,0,31,224,126,0,31,192,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,63,192,255,0,255,243, + 255,192,255,243,255,192,21,22,66,25,2,0,0,252,0,3, + 255,0,15,15,192,30,7,224,62,7,224,62,3,240,124,3, + 240,124,1,248,252,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,240,126,1,240,126,3,224,62, + 3,224,63,3,192,31,135,128,7,254,0,1,248,0,24,33, + 99,27,1,245,3,3,224,127,143,248,255,159,252,63,255,252, + 31,240,254,31,192,126,31,128,63,31,128,63,31,128,31,31, + 128,31,31,128,31,31,128,31,31,128,31,31,128,30,31,128, + 30,31,128,62,31,192,60,31,240,124,31,255,248,31,255,240, + 31,159,224,31,135,128,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,63,192, + 0,255,248,0,255,248,0,24,33,99,26,2,245,0,124,8, + 1,255,28,7,255,248,15,135,248,30,3,248,62,1,248,124, + 1,248,124,1,248,252,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,254,1,248,126,1,248,127,3,248, + 127,143,248,63,255,248,31,253,248,15,249,248,3,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,3,248,0,31,255,0,31,255, + 20,22,66,21,1,0,3,7,192,127,143,240,255,191,240,63, + 255,224,31,241,224,31,224,224,31,192,224,31,128,192,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 192,0,255,248,0,255,248,0,16,22,44,20,2,0,7,248, + 31,254,60,62,120,30,248,14,248,12,252,0,255,0,127,192, + 127,240,63,248,15,254,3,254,0,255,128,127,192,63,224,31, + 224,31,240,30,248,60,255,248,63,224,18,30,90,18,255,0, + 0,192,0,1,192,0,7,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,63,255,192,255,255,128,15,193, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,128,15,227,192,15,255, + 128,7,255,0,3,252,0,1,240,0,26,22,88,27,1,0, + 3,128,28,0,255,135,252,0,255,135,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,129,252,0,31,199,252,128,31,255,255,128,15,254,255,192, + 7,248,126,0,3,224,112,0,24,22,66,24,0,0,255,224, + 255,255,224,255,63,128,60,31,128,60,31,128,56,15,192,120, + 15,192,112,7,192,112,7,224,240,7,224,224,3,241,224,3, + 241,192,1,249,192,1,251,128,0,255,128,0,255,128,0,127, + 0,0,127,0,0,126,0,0,62,0,0,60,0,0,24,0, + 34,22,110,34,0,0,255,224,96,63,192,255,224,112,63,192, + 63,0,240,7,0,31,0,248,15,0,31,128,248,14,0,15, + 129,252,14,0,15,129,252,30,0,15,195,252,28,0,7,195, + 254,28,0,7,195,190,28,0,7,231,63,60,0,3,231,31, + 56,0,3,239,31,184,0,3,254,31,248,0,1,254,15,240, + 0,1,252,15,240,0,1,252,7,240,0,0,252,7,224,0, + 0,248,3,224,0,0,248,3,224,0,0,112,1,192,0,0, + 96,1,128,0,25,22,88,25,0,0,127,241,255,0,127,241, + 255,0,31,192,124,0,15,224,112,0,7,224,224,0,7,241, + 224,0,3,251,192,0,1,255,128,0,0,255,0,0,0,254, + 0,0,0,127,0,0,0,127,0,0,0,127,128,0,0,255, + 192,0,1,207,224,0,3,199,224,0,7,131,240,0,7,3, + 248,0,14,1,252,0,30,1,254,0,255,135,255,128,255,135, + 255,128,25,33,132,24,255,245,127,240,127,128,127,240,127,128, + 31,192,30,0,15,192,28,0,15,192,28,0,7,224,60,0, + 7,224,56,0,3,240,56,0,3,240,112,0,1,240,112,0, + 1,248,240,0,1,248,224,0,0,252,224,0,0,253,224,0, + 0,125,192,0,0,127,192,0,0,127,128,0,0,63,128,0, + 0,63,128,0,0,31,0,0,0,31,0,0,0,14,0,0, + 0,14,0,0,0,30,0,0,0,28,0,0,0,60,0,0, + 0,120,0,0,32,248,0,0,63,240,0,0,127,224,0,0, + 255,192,0,0,255,128,0,0,126,0,0,0,20,22,66,22, + 1,0,63,255,240,63,255,240,56,15,224,56,15,192,48,31, + 192,48,31,128,32,63,0,0,127,0,0,126,0,0,252,0, + 1,252,0,1,248,0,3,240,0,7,240,0,7,224,0,15, + 224,48,31,192,48,31,128,112,63,128,112,127,0,240,127,255, + 240,255,255,224,14,45,90,17,2,249,0,8,0,60,0,248, + 1,240,3,224,7,224,7,192,15,192,15,192,15,192,15,192, + 15,192,15,224,7,224,7,224,7,224,7,224,7,224,7,192, + 15,192,15,128,63,0,254,0,255,128,31,192,7,192,7,224, + 7,224,7,224,7,224,7,224,7,224,15,224,15,192,15,192, + 15,192,15,192,15,192,15,192,7,192,7,224,3,240,0,248, + 0,124,0,8,4,49,49,11,4,246,48,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,192,14,44,88,17,1, + 249,64,0,248,0,124,0,63,0,31,128,15,128,15,192,15, + 192,15,192,15,192,15,192,15,192,31,192,31,128,31,128,31, + 128,31,128,31,128,31,128,15,192,15,252,7,252,1,248,7, + 224,15,192,15,128,31,128,31,128,31,128,31,128,31,128,31, + 192,15,192,15,192,15,192,15,192,15,192,15,128,31,128,31, + 0,62,0,124,0,240,0,64,0,21,8,24,23,1,11,7, + 128,8,15,224,24,31,240,16,63,252,48,49,255,224,96,127, + 192,64,31,128,192,15,0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,12,0,0,8,35, + 35,15,3,243,62,127,255,255,255,254,124,0,0,12,28,28, + 28,60,60,60,60,60,62,62,62,62,62,62,62,62,126,126, + 126,126,126,127,126,120,96,21,30,90,24,2,255,0,24,0, + 0,56,0,0,56,0,0,56,0,0,127,192,3,255,240,7, + 255,248,31,187,240,62,56,240,60,56,96,124,56,32,120,56, + 0,248,56,0,248,56,0,248,56,0,248,56,0,248,56,0, + 248,56,0,252,56,0,124,56,16,126,56,56,63,56,240,31, + 251,224,15,255,192,7,255,128,1,252,0,0,56,0,0,56, + 0,0,56,0,0,48,0,22,29,87,24,1,0,0,31,192, + 0,255,248,1,225,248,3,192,248,7,192,120,7,128,112,15, + 128,48,15,128,48,15,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,255,0,255,255,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,16,31,0,12,31, + 0,24,30,0,56,62,0,120,63,255,248,127,255,248,255,255, + 248,128,15,240,20,20,60,24,2,4,64,0,32,224,0,96, + 113,248,240,63,255,192,31,15,128,30,7,128,28,3,128,56, + 1,192,56,1,192,56,1,192,56,1,192,56,1,192,60,3, + 192,30,7,128,31,15,128,31,255,128,57,249,192,112,0,224, + 224,0,112,64,0,32,27,28,112,24,254,0,127,0,127,224, + 255,128,127,224,127,192,15,0,15,224,30,0,15,224,30,0, + 7,240,60,0,3,240,60,0,3,248,56,0,1,252,120,0, + 0,252,112,0,0,254,240,0,0,126,224,0,0,127,224,0, + 0,63,192,0,0,63,192,0,0,31,192,0,0,31,128,0, + 15,255,255,0,15,255,254,0,0,31,128,0,0,31,128,0, + 0,31,128,0,0,31,128,0,0,31,128,0,0,31,128,0, + 0,63,192,0,1,255,248,0,1,255,248,0,4,49,49,11, + 4,246,48,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,224,0,0,0,0,0,112,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,192,18,34,102,23,3,0,3,252,0,15,255,0,30, + 31,0,60,15,0,124,7,0,124,6,0,126,2,0,127,128, + 0,63,224,0,63,240,0,63,252,0,127,254,0,123,255,0, + 240,255,128,240,63,128,240,31,192,240,7,192,248,7,192,124, + 3,192,127,3,192,63,195,192,31,243,128,15,255,128,7,255, + 0,1,255,0,0,127,128,96,63,128,96,31,128,112,15,128, + 112,15,128,120,15,0,126,30,0,127,252,0,15,240,0,17, + 7,21,19,1,26,56,7,0,124,15,128,252,31,128,252,31, + 128,252,31,128,248,31,0,112,14,0,31,31,124,35,2,0, + 0,31,224,0,0,127,252,0,1,240,31,0,7,192,7,128, + 15,0,1,224,30,0,0,224,28,3,240,112,56,31,254,56, + 56,60,124,56,112,120,60,28,112,240,28,28,240,240,24,28, + 224,224,0,14,225,224,0,14,225,224,0,14,225,224,0,14, + 225,224,0,14,225,224,0,14,225,240,0,14,240,240,0,30, + 112,248,6,28,112,126,30,28,56,127,252,56,56,31,240,56, + 28,7,192,112,14,0,0,224,15,0,1,224,7,192,7,128, + 1,240,31,0,0,127,252,0,0,31,240,0,12,16,32,13, + 1,14,15,0,63,128,99,192,227,192,131,192,7,192,63,192, + 123,192,243,192,243,192,247,224,255,240,115,128,0,0,255,224, + 255,224,20,22,66,25,2,0,0,192,32,1,192,112,1,192, + 224,3,129,224,7,131,192,15,7,192,31,15,128,62,15,128, + 126,31,0,252,63,0,252,126,0,252,126,0,252,63,0,126, + 31,0,62,15,128,31,15,128,15,7,192,7,131,192,3,129, + 224,1,192,224,0,192,112,0,192,32,21,11,33,24,2,4, + 127,255,248,255,255,248,255,255,248,0,0,120,0,0,120,0, + 0,120,0,0,120,0,0,120,0,0,120,0,0,120,0,0, + 96,15,3,6,17,1,11,127,254,127,252,255,252,17,17,51, + 17,0,17,3,224,0,15,248,0,60,30,0,48,6,0,103, + 227,0,99,51,0,195,49,128,195,49,128,195,225,128,195,65, + 128,195,97,128,99,35,0,99,51,0,55,158,0,60,30,0, + 15,248,0,3,224,0,20,4,12,24,2,27,127,255,240,255, + 255,240,255,255,224,255,255,224,11,13,26,17,3,17,15,0, + 31,192,63,192,123,224,113,224,241,224,241,224,241,224,241,192, + 251,192,127,128,127,0,30,0,18,22,66,20,1,3,0,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,127,255,192,255,255,192,255,255,128,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,192, + 0,0,0,0,0,0,0,127,255,192,127,255,192,255,255,128, + 13,17,34,17,2,15,7,224,31,240,120,248,120,120,248,120, + 0,120,0,240,0,224,1,224,3,192,7,128,15,0,30,8, + 60,8,120,24,255,248,255,248,13,18,36,17,1,14,7,224, + 31,240,60,248,120,120,124,120,0,120,0,240,1,224,7,240, + 5,240,0,120,0,120,0,120,0,120,128,120,224,240,127,224, + 31,128,11,11,22,15,5,24,15,0,15,192,31,224,31,128, + 63,0,62,0,124,0,120,0,240,0,224,0,64,0,27,33, + 132,28,1,245,3,0,6,0,255,128,254,0,255,128,126,0, + 63,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,192,254,0,31,227,254,0,31,255,254,64,31,255,127,224, + 30,254,127,192,30,124,63,128,30,56,28,0,30,0,0,0, + 30,0,0,0,31,0,0,0,31,0,0,0,31,0,0,0, + 31,0,0,0,31,128,0,0,31,128,0,0,31,192,0,0, + 31,0,0,0,24,0,0,0,26,36,144,29,1,250,1,255, + 255,192,7,255,255,192,31,195,255,0,63,3,222,0,126,3, + 222,0,124,3,222,0,252,3,222,0,252,3,222,0,252,3, + 222,0,252,3,222,0,252,3,222,0,126,3,222,0,127,3, + 222,0,63,3,222,0,31,195,222,0,7,255,222,0,1,255, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,3,222,0,0,3,222,0,0,3,222,0,0,3, + 222,0,0,7,255,0,0,31,255,192,0,31,255,192,7,7, + 7,10,1,13,60,126,254,254,254,252,120,10,10,20,11,1, + 246,14,0,28,0,30,0,63,128,63,192,15,192,15,192,31, + 128,254,0,112,0,13,17,34,17,2,15,1,128,15,128,255, + 128,71,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,63,240,127,248,11,16,32, + 13,1,14,15,0,63,128,123,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,192,123,192,63,128,30,0,0,0,255, + 224,255,224,20,22,66,25,3,0,64,32,0,224,112,0,112, + 56,0,120,28,0,56,30,0,60,15,0,30,15,128,31,7, + 192,31,135,224,15,199,240,15,227,240,15,227,240,15,199,240, + 31,135,224,31,7,192,30,15,128,60,15,0,56,30,0,120, + 28,0,112,56,0,224,48,0,64,96,0,27,29,116,30,2, + 0,3,0,1,192,63,0,3,128,255,0,7,128,15,0,15, + 0,15,0,14,0,15,0,28,0,15,0,60,0,15,0,120, + 0,15,0,112,0,15,0,240,0,15,1,224,0,15,1,192, + 0,31,131,128,0,255,231,128,0,0,15,0,0,0,14,1, + 0,0,28,15,128,0,60,15,128,0,120,31,128,0,112,55, + 128,0,224,55,128,1,224,103,128,3,192,199,128,3,129,199, + 128,7,129,255,224,15,3,255,192,30,0,7,128,28,0,7, + 128,60,0,63,224,26,29,116,30,2,0,3,0,1,192,63, + 0,7,128,255,0,7,128,15,0,15,0,15,0,30,0,15, + 0,60,0,15,0,60,0,15,0,120,0,15,0,240,0,15, + 0,224,0,15,1,224,0,15,3,192,0,31,135,128,0,255, + 231,0,0,0,15,0,0,0,30,63,0,0,60,127,192,0, + 56,231,192,0,121,195,192,0,241,131,192,1,224,3,128,1, + 192,7,0,3,192,14,0,7,128,28,0,15,0,56,0,14, + 0,112,64,30,0,224,64,60,1,255,192,120,3,255,192,28, + 29,116,30,1,0,15,128,0,224,63,192,1,192,115,224,3, + 192,241,224,7,128,129,192,7,0,3,128,14,0,15,192,30, + 0,15,224,60,0,1,240,56,0,0,240,120,0,0,240,240, + 0,0,240,224,0,225,225,192,0,127,195,192,0,31,7,128, + 0,0,7,0,128,0,14,7,192,0,30,7,192,0,60,11, + 192,0,56,27,192,0,112,19,192,0,240,51,192,1,224,99, + 192,1,192,227,192,3,192,255,240,7,129,255,224,15,0,3, + 192,14,0,3,192,30,0,31,240,18,35,105,22,2,243,0, + 248,0,1,252,0,3,252,0,3,252,0,3,252,0,3,248, + 0,1,240,0,0,0,0,0,0,0,0,0,0,0,112,0, + 0,240,0,0,240,0,0,240,0,0,240,0,1,240,0,1, + 224,0,3,224,0,7,192,0,15,192,0,15,128,0,31,0, + 0,63,0,0,126,0,0,126,0,0,252,0,0,252,3,192, + 252,15,192,252,15,192,252,15,192,252,15,128,126,31,128,127, + 31,0,63,254,0,15,240,0,30,42,168,30,0,0,0,32, + 0,0,0,112,0,0,0,248,0,0,1,252,0,0,1,254, + 0,0,0,255,0,0,0,63,128,0,0,15,192,0,0,3, + 224,0,0,0,224,0,0,0,64,0,0,0,0,0,0,1, + 128,0,0,7,128,0,0,15,192,0,0,31,192,0,0,31, + 224,0,0,31,224,0,0,63,224,0,0,63,240,0,0,59, + 240,0,0,121,240,0,0,121,248,0,0,113,248,0,0,240, + 252,0,0,240,252,0,0,224,252,0,1,224,126,0,1,224, + 126,0,1,192,126,0,3,255,255,0,3,255,255,0,3,128, + 31,0,7,128,31,128,7,0,31,128,7,0,15,192,15,0, + 15,192,14,0,15,192,14,0,7,224,30,0,7,224,255,192, + 63,252,255,192,63,252,30,42,168,30,0,0,0,0,32,0, + 0,0,48,0,0,0,124,0,0,0,254,0,0,1,254,0, + 0,3,248,0,0,7,224,0,0,15,128,0,0,31,0,0, + 0,60,0,0,0,16,0,0,0,0,0,0,0,1,128,0, + 0,7,128,0,0,15,192,0,0,31,192,0,0,31,224,0, + 0,31,224,0,0,63,224,0,0,63,240,0,0,59,240,0, + 0,121,240,0,0,121,248,0,0,113,248,0,0,240,252,0, + 0,240,252,0,0,224,252,0,1,224,126,0,1,224,126,0, + 1,192,126,0,3,255,255,0,3,255,255,0,3,128,31,0, + 7,128,31,128,7,0,31,128,7,0,15,192,15,0,15,192, + 14,0,15,192,14,0,7,224,30,0,7,224,255,192,63,252, + 255,192,63,252,30,41,164,30,0,0,0,7,0,0,0,7, + 128,0,0,15,192,0,0,31,224,0,0,63,240,0,0,127, + 248,0,0,248,248,0,1,240,60,0,1,192,14,0,1,0, + 8,0,0,0,0,0,0,1,128,0,0,7,128,0,0,15, + 192,0,0,31,192,0,0,31,224,0,0,31,224,0,0,63, + 224,0,0,63,240,0,0,59,240,0,0,121,240,0,0,121, + 248,0,0,113,248,0,0,240,252,0,0,240,252,0,0,224, + 252,0,1,224,126,0,1,224,126,0,1,192,126,0,3,255, + 255,0,3,255,255,0,3,128,31,0,7,128,31,128,7,0, + 31,128,7,0,15,192,15,0,15,192,14,0,15,192,14,0, + 7,224,30,0,7,224,255,192,63,252,255,192,63,252,30,40, + 160,30,0,0,0,16,4,0,0,127,7,0,0,255,254,0, + 1,255,254,0,1,255,252,0,3,255,248,0,3,3,240,0, + 2,0,64,0,0,0,0,0,0,0,0,0,0,1,128,0, + 0,7,128,0,0,15,192,0,0,31,192,0,0,31,224,0, + 0,31,224,0,0,63,224,0,0,63,240,0,0,59,240,0, + 0,121,240,0,0,121,248,0,0,113,248,0,0,240,252,0, + 0,240,252,0,0,224,252,0,1,224,126,0,1,224,126,0, + 1,192,126,0,3,255,255,0,3,255,255,0,3,128,31,0, + 7,128,31,128,7,0,31,128,7,0,15,192,15,0,15,192, + 14,0,15,192,14,0,7,224,30,0,7,224,255,192,63,252, + 255,192,63,252,30,40,160,30,0,0,0,64,16,0,0,240, + 60,0,1,248,126,0,1,248,126,0,1,248,126,0,1,240, + 124,0,1,240,124,0,0,64,32,0,0,0,0,0,0,0, + 0,0,0,1,128,0,0,7,128,0,0,15,192,0,0,31, + 192,0,0,31,224,0,0,31,224,0,0,63,224,0,0,63, + 240,0,0,59,240,0,0,121,240,0,0,121,248,0,0,113, + 248,0,0,240,252,0,0,240,252,0,0,224,252,0,1,224, + 126,0,1,224,126,0,1,192,126,0,3,255,255,0,3,255, + 255,0,3,128,31,0,7,128,31,128,7,0,31,128,7,0, + 15,192,15,0,15,192,14,0,15,192,14,0,7,224,30,0, + 7,224,255,192,63,252,255,192,63,252,30,42,168,30,0,0, + 0,1,0,0,0,15,224,0,0,31,224,0,0,28,240,0, + 0,60,240,0,0,60,240,0,0,60,224,0,0,63,224,0, + 0,31,128,0,0,4,0,0,0,0,0,0,0,0,0,0, + 0,1,128,0,0,7,128,0,0,15,192,0,0,31,192,0, + 0,31,224,0,0,31,224,0,0,63,224,0,0,63,240,0, + 0,59,240,0,0,121,240,0,0,121,248,0,0,113,248,0, + 0,240,252,0,0,240,252,0,0,224,252,0,1,224,126,0, + 1,224,126,0,1,192,126,0,3,255,255,0,3,255,255,0, + 3,128,31,0,7,128,31,128,7,0,31,128,7,0,15,192, + 15,0,15,192,14,0,15,192,14,0,7,224,30,0,7,224, + 255,192,63,252,255,192,63,252,38,30,150,39,0,0,0,127, + 255,255,240,0,127,255,255,248,0,15,255,0,112,0,7,255, + 0,112,0,15,63,0,112,0,15,63,0,48,0,15,63,0, + 48,0,30,63,0,48,0,30,63,0,0,0,60,63,0,0, + 0,60,63,0,0,0,60,63,0,0,0,120,63,0,0,0, + 127,255,255,192,0,255,255,255,128,0,240,63,1,128,0,224, + 63,0,0,1,224,63,0,0,1,224,63,0,0,3,192,63, + 0,0,3,192,63,0,0,3,128,63,0,0,7,128,63,0, + 0,7,128,63,0,12,15,0,63,0,12,15,0,63,0,28, + 14,0,63,0,28,31,0,127,128,124,255,193,255,255,248,255, + 193,255,255,248,24,40,120,27,1,246,0,31,224,0,255,252, + 1,255,254,7,224,254,15,192,126,31,128,60,31,0,28,62, + 0,0,62,0,0,126,0,0,124,0,0,124,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,0,127,0,0,63, + 128,2,63,128,7,31,224,15,15,252,254,7,255,248,3,255, + 240,0,255,192,0,30,0,0,28,0,0,31,0,0,63,192, + 0,63,192,0,15,192,0,15,128,0,31,128,0,254,0,0, + 112,0,23,42,126,25,1,0,1,0,0,3,128,0,15,192, + 0,15,224,0,31,240,0,7,248,0,1,252,0,0,126,0, + 0,31,0,0,7,0,0,2,0,0,0,0,255,255,248,255, + 255,252,63,128,56,31,128,56,31,128,24,31,128,24,31,128, + 24,31,128,24,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,255,224,31,255,224,31,128,192,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,6,31,128,6,31,128,14,31,128,14,63,192,30, + 255,255,254,255,255,252,23,42,126,25,1,0,0,2,0,0, + 3,128,0,7,224,0,15,240,0,31,240,0,63,192,0,127, + 0,0,252,0,1,240,0,1,192,0,1,0,0,0,0,0, + 255,255,248,255,255,252,63,128,56,31,128,56,31,128,24,31, + 128,24,31,128,24,31,128,24,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,255,224,31,255,224,31,128,192, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,6,31,128,6,31,128,14,31,128, + 14,63,192,30,255,255,254,255,255,252,23,41,123,25,1,0, + 0,56,0,0,124,0,0,254,0,0,255,0,1,255,0,3, + 255,128,7,199,192,15,1,224,14,0,224,8,0,64,0,0, + 0,255,255,248,255,255,252,63,128,56,31,128,56,31,128,24, + 31,128,24,31,128,24,31,128,24,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,255,224,31,255,224,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,6,31,128,6,31,128,14,31, + 128,14,63,192,30,255,255,254,255,255,252,23,40,120,25,1, + 0,2,0,128,7,129,224,15,195,240,15,195,240,15,195,240, + 15,131,224,15,3,192,4,1,0,0,0,0,0,0,0,255, + 255,248,255,255,252,63,128,56,31,128,56,31,128,24,31,128, + 24,31,128,24,31,128,24,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,255,224,31,255,224,31,128,192,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,6,31,128,6,31,128,14,31,128,14, + 63,192,30,255,255,254,255,255,252,15,42,84,16,255,0,8, + 0,28,0,62,0,127,0,127,128,191,192,15,224,3,240,0, + 248,0,56,0,16,0,0,31,254,31,254,7,248,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,3,240,3, + 240,3,240,3,240,3,240,3,240,3,240,3,240,7,248,31, + 254,31,254,14,42,84,16,2,0,0,128,0,224,1,248,3, + 252,7,252,15,240,31,192,63,0,124,0,112,0,32,0,0, + 0,255,240,255,240,63,192,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,63,192,255,240,255,240,16,41,82, + 16,0,0,3,128,7,192,15,224,15,240,31,240,63,248,124, + 124,240,30,224,15,128,4,0,0,63,252,63,252,15,240,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,15, + 240,63,252,63,252,16,40,80,16,0,0,32,8,120,30,252, + 63,252,63,252,63,248,62,240,60,64,16,0,0,0,0,63, + 252,63,252,15,240,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,7,224,7,224,7,224,7,224,7,224,7, + 224,7,224,7,224,15,240,63,252,63,252,29,30,120,31,0, + 0,3,255,192,0,255,255,248,0,127,192,254,0,143,192,63, + 128,15,192,31,192,15,192,15,192,15,192,7,224,15,192,7, + 240,15,192,3,240,15,192,3,240,15,192,3,248,15,192,1, + 248,15,192,1,248,127,255,1,248,255,255,1,248,15,192,1, + 248,15,192,1,248,15,192,1,248,15,192,1,248,15,192,1, + 240,15,192,3,240,15,192,3,240,15,192,7,224,15,192,7, + 224,15,192,15,192,15,192,31,128,15,192,63,0,31,224,254, + 0,127,255,248,0,127,255,192,0,30,40,160,32,1,0,0, + 16,4,0,0,127,7,0,0,255,255,0,0,255,254,0,1, + 255,252,0,3,255,252,0,3,3,248,0,2,0,64,0,0, + 0,0,0,0,0,0,0,255,0,15,252,255,128,15,252,63, + 192,3,240,31,192,1,224,31,224,1,224,31,240,1,224,31, + 240,1,224,31,248,1,224,31,252,1,224,30,254,1,224,30, + 126,1,224,30,63,1,224,30,63,129,224,30,31,129,224,30, + 15,193,224,30,7,225,224,30,7,225,224,30,3,241,224,30, + 1,249,224,30,1,253,224,30,0,253,224,30,0,127,224,30, + 0,63,224,30,0,63,224,30,0,31,224,30,0,15,224,30, + 0,7,224,63,0,7,224,255,192,3,224,255,192,0,224,27, + 42,168,30,1,0,0,64,0,0,0,224,0,0,1,240,0, + 0,3,248,0,0,3,252,0,0,1,254,0,0,0,127,0, + 0,0,31,128,0,0,7,192,0,0,1,192,0,0,0,128, + 0,0,0,0,0,0,31,192,0,0,255,240,0,3,225,252, + 0,7,128,126,0,15,0,63,0,31,0,31,0,30,0,31, + 128,62,0,15,128,126,0,15,192,124,0,15,192,124,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,254,0,7,192,126,0,15,192,126,0,15,128,127,0,15, + 128,63,0,31,0,31,128,31,0,31,192,62,0,15,240,252, + 0,7,255,240,0,1,255,224,0,0,127,0,0,27,42,168, + 30,1,0,0,0,64,0,0,0,96,0,0,0,248,0,0, + 1,252,0,0,3,252,0,0,7,240,0,0,15,192,0,0, + 31,128,0,0,62,0,0,0,120,0,0,0,32,0,0,0, + 0,0,0,0,31,192,0,0,255,240,0,3,225,252,0,7, + 128,126,0,15,0,63,0,31,0,31,0,30,0,31,128,62, + 0,15,128,126,0,15,192,124,0,15,192,124,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,254, + 0,7,192,126,0,15,192,126,0,15,128,127,0,15,128,63, + 0,31,0,31,128,31,0,31,192,62,0,15,240,252,0,7, + 255,240,0,1,255,224,0,0,127,0,0,27,41,164,30,1, + 0,0,6,0,0,0,15,0,0,0,31,128,0,0,63,192, + 0,0,127,224,0,0,255,240,0,1,249,248,0,3,224,120, + 0,3,128,28,0,2,0,8,0,0,0,0,0,0,31,192, + 0,0,255,240,0,3,225,252,0,7,128,126,0,15,0,63, + 0,31,0,31,0,30,0,31,128,62,0,15,128,126,0,15, + 192,124,0,15,192,124,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,254,0,7,192,126,0,15, + 192,126,0,15,128,127,0,15,128,63,0,31,0,31,128,31, + 0,31,192,62,0,15,240,252,0,7,255,240,0,1,255,224, + 0,0,127,0,0,27,40,160,30,1,0,0,32,8,0,0, + 254,14,0,1,255,254,0,1,255,252,0,3,255,248,0,7, + 255,248,0,6,7,240,0,2,0,128,0,0,0,0,0,0, + 0,0,0,0,31,192,0,0,255,240,0,3,225,252,0,7, + 128,126,0,15,0,63,0,31,0,31,0,30,0,31,128,62, + 0,15,128,126,0,15,192,124,0,15,192,124,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,252, + 0,7,224,252,0,7,224,252,0,7,224,252,0,7,224,254, + 0,7,192,126,0,15,192,126,0,15,128,127,0,15,128,63, + 0,31,0,31,128,31,0,31,192,62,0,15,240,252,0,7, + 255,240,0,1,255,224,0,0,127,0,0,27,40,160,30,1, + 0,0,128,32,0,1,240,124,0,1,240,124,0,3,240,252, + 0,3,240,252,0,3,240,252,0,3,224,248,0,0,128,32, + 0,0,0,0,0,0,0,0,0,0,31,192,0,0,255,240, + 0,3,225,252,0,7,128,126,0,15,0,63,0,31,0,31, + 0,30,0,31,128,62,0,15,128,126,0,15,192,124,0,15, + 192,124,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,252,0,7,224,252,0,7,224,252,0,7, + 224,252,0,7,224,254,0,7,192,126,0,15,192,126,0,15, + 128,127,0,15,128,63,0,31,0,31,128,31,0,31,192,62, + 0,15,240,252,0,7,255,240,0,1,255,224,0,0,127,0, + 0,16,15,30,20,2,6,96,6,240,15,120,31,60,62,30, + 124,15,248,7,240,3,192,7,224,15,248,30,124,60,62,120, + 31,240,15,96,6,27,31,124,30,1,255,0,31,195,224,0, + 255,247,192,3,225,255,128,7,128,127,0,15,0,63,0,31, + 0,63,128,30,0,127,128,62,0,255,192,126,0,255,192,124, + 1,255,192,124,3,239,224,252,3,231,224,252,7,199,224,252, + 15,135,224,252,15,7,224,252,31,7,224,252,62,7,224,252, + 60,7,224,252,120,7,192,254,248,7,192,127,240,15,192,127, + 224,15,128,127,192,15,128,63,128,31,0,63,128,31,0,31, + 192,62,0,31,240,252,0,63,255,240,0,121,255,224,0,248, + 127,0,0,192,0,0,0,29,42,168,32,1,0,0,32,0, + 0,0,48,0,0,0,248,0,0,1,252,0,0,1,254,0, + 0,0,127,0,0,0,31,128,0,0,15,192,0,0,3,224, + 0,0,0,240,0,0,0,64,0,0,0,0,0,255,240,31, + 248,255,240,31,248,63,192,7,224,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,128,31,192,7,128,15,192,7,128,15,224,7, + 0,7,224,15,0,3,248,62,0,1,255,252,0,0,255,240, + 0,0,31,192,0,29,42,168,32,1,0,0,0,32,0,0, + 0,56,0,0,0,124,0,0,0,254,0,0,1,254,0,0, + 3,252,0,0,7,240,0,0,15,192,0,0,31,0,0,0, + 28,0,0,0,16,0,0,0,0,0,0,255,240,31,248,255, + 240,31,248,63,192,7,224,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,128,31,192,7,128,15,192,7,128,15,224,7,0,7, + 224,15,0,3,248,62,0,1,255,252,0,0,255,240,0,0, + 31,192,0,29,41,164,32,1,0,0,3,128,0,0,7,128, + 0,0,15,192,0,0,31,224,0,0,63,240,0,0,127,248, + 0,0,124,124,0,0,240,62,0,1,192,14,0,0,128,4, + 0,0,0,0,0,255,240,31,248,255,240,31,248,63,192,7, + 224,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,192,31,128,3, + 192,31,128,3,192,31,128,3,192,31,128,3,128,31,192,7, + 128,15,192,7,128,15,224,7,0,7,224,15,0,3,248,62, + 0,1,255,252,0,0,255,240,0,0,31,192,0,29,40,160, + 32,1,0,0,32,8,0,0,248,62,0,0,248,62,0,1, + 248,126,0,1,248,126,0,1,248,126,0,0,240,60,0,0, + 64,16,0,0,0,0,0,0,0,0,0,255,240,31,248,255, + 240,31,248,63,192,7,224,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,192,31,128,3,192,31,128,3,192,31,128,3,192,31, + 128,3,128,31,192,7,128,15,192,7,128,15,224,7,0,7, + 224,15,0,3,248,62,0,1,255,252,0,0,255,240,0,0, + 31,192,0,29,42,168,29,0,0,0,0,32,0,0,0,48, + 0,0,0,124,0,0,1,254,0,0,3,254,0,0,7,248, + 0,0,15,224,0,0,31,128,0,0,62,0,0,0,60,0, + 0,0,16,0,0,0,0,0,0,127,0,31,248,255,128,31, + 248,31,192,3,192,15,192,3,128,7,224,7,128,3,240,7, + 0,3,240,15,0,1,248,14,0,1,248,30,0,0,252,28, + 0,0,124,60,0,0,126,56,0,0,63,120,0,0,63,240, + 0,0,31,240,0,0,31,224,0,0,15,224,0,0,15,192, + 0,0,15,192,0,0,15,192,0,0,15,192,0,0,15,192, + 0,0,15,192,0,0,15,192,0,0,15,192,0,0,15,192, + 0,0,15,192,0,0,31,224,0,0,255,252,0,0,255,252, + 0,24,30,90,27,1,0,255,248,0,255,248,0,63,192,0, + 31,128,0,31,128,0,31,128,0,31,255,128,31,255,240,31, + 131,248,31,128,252,31,128,126,31,128,127,31,128,63,31,128, + 63,31,128,63,31,128,63,31,128,63,31,128,62,31,128,126, + 31,128,252,31,129,248,31,191,240,31,191,128,31,128,0,31, + 128,0,31,128,0,31,128,0,63,192,0,255,248,0,255,248, + 0,28,36,144,31,1,0,0,7,240,0,0,63,252,0,0, + 255,254,0,1,240,255,0,3,224,63,128,7,192,31,128,7, + 192,31,192,15,128,15,192,15,128,15,192,31,128,15,192,31, + 128,15,192,31,128,31,128,31,128,63,0,31,128,126,0,31, + 129,248,0,31,135,224,0,31,135,128,0,31,143,128,0,31, + 143,128,0,31,143,192,0,31,143,224,0,31,135,248,0,31, + 135,254,0,31,131,255,128,31,128,255,192,31,128,63,224,31, + 128,31,240,31,128,7,240,31,140,3,240,31,142,1,240,31, + 142,1,240,31,142,1,240,31,143,1,224,63,143,195,192,255, + 143,255,128,255,129,254,0,23,35,105,24,1,0,1,192,0, + 15,192,0,15,224,0,7,240,0,3,240,0,1,248,0,0, + 248,0,0,124,0,0,60,0,0,30,0,0,12,0,0,0, + 0,0,0,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,23,35,105,24,1,0,0,15,0,0, + 15,192,0,31,224,0,31,128,0,63,0,0,62,0,0,124, + 0,0,120,0,0,240,0,0,224,0,0,192,0,0,0,0, + 0,0,0,0,255,0,15,255,128,31,15,192,62,7,224,126, + 7,224,252,7,224,96,7,224,0,7,224,0,31,224,1,255, + 224,7,255,224,31,231,224,63,135,224,63,7,224,126,7,224, + 126,7,224,126,7,224,126,31,228,127,63,252,63,247,254,63, + 231,240,15,131,128,23,35,105,24,1,0,0,120,0,0,252, + 0,0,252,0,1,254,0,3,255,0,3,255,0,7,207,128, + 15,135,192,15,1,192,28,0,224,8,0,64,0,0,0,0, + 0,0,0,255,0,15,255,128,31,15,192,62,7,224,126,7, + 224,252,7,224,96,7,224,0,7,224,0,31,224,1,255,224, + 7,255,224,31,231,224,63,135,224,63,7,224,126,7,224,126, + 7,224,126,7,224,126,31,228,127,63,252,63,247,254,63,231, + 240,15,131,128,23,33,99,24,1,0,3,192,48,7,240,48, + 15,252,96,31,255,224,31,255,192,56,127,128,48,15,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,0,15,255, + 128,31,15,192,62,7,224,126,7,224,252,7,224,96,7,224, + 0,7,224,0,31,224,1,255,224,7,255,224,31,231,224,63, + 135,224,63,7,224,126,7,224,126,7,224,126,7,224,126,31, + 228,127,63,252,63,247,254,63,231,240,15,131,128,23,33,99, + 24,1,0,7,1,192,15,131,224,31,135,224,31,135,224,31, + 135,224,31,7,192,14,3,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,23,34,102,24,1,0,0,60,0,0, + 254,0,1,239,0,3,207,0,3,207,0,3,207,0,3,238, + 0,1,252,0,0,248,0,0,0,0,0,0,0,0,0,0, + 0,255,0,15,255,128,31,15,192,62,7,224,126,7,224,252, + 7,224,96,7,224,0,7,224,0,31,224,1,255,224,7,255, + 224,31,231,224,63,135,224,63,7,224,126,7,224,126,7,224, + 126,7,224,126,31,228,127,63,252,63,247,254,63,231,240,15, + 131,128,33,22,110,35,1,0,0,63,3,224,0,1,255,159, + 248,0,7,255,252,62,0,15,135,248,30,0,31,3,240,31, + 0,63,3,240,15,0,127,3,224,15,128,120,3,224,15,128, + 0,3,224,15,128,0,127,255,255,128,3,255,255,254,0,15, + 195,224,0,0,63,3,224,0,0,126,3,224,0,0,124,3, + 240,0,0,252,3,240,1,0,252,7,248,7,0,254,31,252, + 31,0,255,252,255,254,0,127,248,127,252,0,127,224,63,240, + 0,31,128,15,192,0,20,32,96,22,2,246,0,127,128,1, + 255,240,7,135,224,15,3,224,30,1,224,62,0,192,124,0, + 192,124,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,0,127,0,96,127, + 129,224,63,255,192,31,255,128,15,254,0,3,252,0,0,240, + 0,0,224,0,0,252,0,1,254,0,0,254,0,0,126,0, + 0,124,0,0,252,0,3,240,0,1,128,0,19,35,105,23, + 2,0,3,128,0,15,192,0,31,224,0,7,224,0,3,240, + 0,1,240,0,0,248,0,0,120,0,0,60,0,0,28,0, + 0,8,0,0,0,0,0,0,0,0,252,0,7,255,0,15, + 31,128,30,15,128,62,15,192,124,7,192,124,7,224,124,7, + 224,252,7,224,255,255,224,255,255,128,252,0,0,252,0,0, + 252,0,0,254,0,0,126,0,64,127,0,224,63,131,192,63, + 255,128,31,255,0,15,254,0,3,248,0,19,35,105,23,2, + 0,0,14,0,0,31,192,0,31,192,0,63,128,0,63,0, + 0,126,0,0,124,0,0,248,0,0,240,0,1,224,0,0, + 192,0,0,0,0,0,0,0,0,252,0,7,255,0,15,31, + 128,30,15,128,62,15,192,124,7,192,124,7,224,124,7,224, + 252,7,224,255,255,224,255,255,128,252,0,0,252,0,0,252, + 0,0,254,0,0,126,0,64,127,0,224,63,131,192,63,255, + 128,31,255,0,15,254,0,3,248,0,19,35,105,23,2,0, + 0,120,0,0,248,0,1,252,0,1,254,0,3,254,0,7, + 255,0,15,223,128,15,7,128,30,3,192,60,1,224,24,0, + 64,0,0,0,0,0,0,0,252,0,7,255,0,15,31,128, + 30,15,128,62,15,192,124,7,192,124,7,224,124,7,224,252, + 7,224,255,255,224,255,255,128,252,0,0,252,0,0,252,0, + 0,254,0,0,126,0,64,127,0,224,63,131,192,63,255,128, + 31,255,0,15,254,0,3,248,0,19,33,99,23,2,0,15, + 3,192,31,7,192,31,135,224,31,135,224,31,7,192,31,7, + 192,14,3,128,0,0,0,0,0,0,0,0,0,0,0,0, + 0,252,0,7,255,0,15,31,128,30,15,128,62,15,192,124, + 7,192,124,7,224,124,7,224,252,7,224,255,255,224,255,255, + 128,252,0,0,252,0,0,252,0,0,254,0,0,126,0,64, + 127,0,224,63,131,192,63,255,128,31,255,0,15,254,0,3, + 248,0,13,35,70,14,0,0,28,0,126,0,254,0,127,0, + 31,0,15,128,7,128,3,192,1,192,0,224,0,64,0,0, + 0,0,1,192,63,192,127,192,63,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,31,224,127,248,127,248,14,35, + 70,14,1,0,0,224,1,252,1,252,3,248,3,240,7,224, + 7,192,15,128,15,0,30,0,8,0,0,0,0,0,3,128, + 127,128,255,128,127,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,16,35,70,14,255,0, + 3,192,3,224,7,240,15,240,15,248,31,252,62,124,60,30, + 120,15,240,7,64,3,0,0,0,0,0,224,31,224,63,224, + 31,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 15,240,63,252,63,252,16,33,66,14,255,0,56,14,124,31, + 124,31,252,63,252,63,124,31,120,30,0,0,0,0,0,0, + 0,0,0,224,31,224,63,224,31,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,240,63,252,63,252,21,34, + 102,25,2,0,1,192,0,15,224,0,63,240,248,31,255,248, + 0,255,192,0,126,0,1,255,0,7,239,128,31,143,128,2, + 7,192,0,3,224,0,3,224,1,251,240,7,253,240,15,255, + 240,31,15,248,62,7,248,62,3,248,124,3,248,124,1,248, + 252,1,248,252,1,248,252,1,248,252,1,248,252,1,240,252, + 1,240,252,1,240,126,3,224,126,3,224,63,3,192,63,7, + 128,31,143,0,7,254,0,1,248,0,26,33,132,28,1,0, + 0,240,12,0,1,252,12,0,3,255,28,0,3,255,248,0, + 7,255,240,0,14,31,224,0,12,3,192,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,3,1,240,0, + 127,135,252,0,255,159,252,0,63,191,254,0,31,248,254,0, + 31,224,126,0,31,192,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,31,128,126,0,31,128,126,0, + 31,128,126,0,31,128,126,0,63,192,255,0,255,243,255,192, + 255,243,255,192,21,35,105,25,2,0,1,192,0,15,224,0, + 15,224,0,7,240,0,3,240,0,1,248,0,0,248,0,0, + 124,0,0,60,0,0,30,0,0,12,0,0,0,0,0,0, + 0,0,252,0,3,255,0,15,15,192,30,7,224,62,7,224, + 62,3,240,124,3,240,124,1,248,252,1,248,252,1,248,252, + 1,248,252,1,248,252,1,248,252,1,248,252,1,240,126,1, + 240,126,3,224,62,3,224,63,3,192,31,135,128,7,254,0, + 1,248,0,21,35,105,25,2,0,0,15,0,0,15,192,0, + 31,224,0,31,128,0,63,0,0,62,0,0,124,0,0,120, + 0,0,240,0,0,224,0,0,192,0,0,0,0,0,0,0, + 0,252,0,3,255,0,15,15,192,30,7,224,62,7,224,62, + 3,240,124,3,240,124,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,252,1,248,252,1,240,126,1,240, + 126,3,224,62,3,224,63,3,192,31,135,128,7,254,0,1, + 248,0,21,35,105,25,2,0,0,120,0,0,252,0,0,252, + 0,1,254,0,3,255,0,3,255,0,7,207,128,15,135,192, + 15,1,192,28,0,224,8,0,64,0,0,0,0,0,0,0, + 252,0,3,255,0,15,15,192,30,7,224,62,7,224,62,3, + 240,124,3,240,124,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,248,252,1,240,126,1,240,126, + 3,224,62,3,224,63,3,192,31,135,128,7,254,0,1,248, + 0,21,33,99,25,2,0,3,192,48,7,240,48,15,252,96, + 31,255,224,31,255,192,56,127,128,48,15,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,252,0,3,255,0,15,15, + 192,30,7,224,62,7,224,62,3,240,124,3,240,124,1,248, + 252,1,248,252,1,248,252,1,248,252,1,248,252,1,248,252, + 1,248,252,1,240,126,1,240,126,3,224,62,3,224,63,3, + 192,31,135,128,7,254,0,1,248,0,21,33,99,25,2,0, + 7,1,192,15,131,224,31,135,224,31,135,224,31,135,224,31, + 7,192,14,3,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,252,0,3,255,0,15,15,192,30,7,224,62,7,224, + 62,3,240,124,3,240,124,1,248,252,1,248,252,1,248,252, + 1,248,252,1,248,252,1,248,252,1,248,252,1,240,126,1, + 240,126,3,224,62,3,224,63,3,192,31,135,128,7,254,0, + 1,248,0,18,18,54,20,1,4,0,192,0,1,224,0,1, + 224,0,1,224,0,1,224,0,0,192,0,0,0,0,127,255, + 192,127,255,192,255,255,128,0,0,0,0,0,0,0,192,0, + 1,224,0,1,224,0,1,224,0,1,224,0,0,192,0,21, + 24,72,25,2,255,0,0,24,0,252,56,3,255,240,15,15, + 224,30,7,224,62,3,240,60,7,240,124,15,240,124,31,248, + 252,29,248,252,57,248,252,121,248,252,241,248,252,225,248,253, + 193,248,255,193,240,127,129,240,127,1,224,62,3,224,63,3, + 192,63,135,128,127,254,0,113,248,0,192,0,0,26,35,140, + 27,1,0,0,224,0,0,3,240,0,0,7,240,0,0,1, + 248,0,0,0,248,0,0,0,124,0,0,0,62,0,0,0, + 30,0,0,0,15,0,0,0,7,0,0,0,2,0,0,0, + 0,0,0,0,0,0,0,3,128,28,0,255,135,252,0,255, + 135,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,129,252,0,31,199,252,128,31, + 255,255,128,15,254,255,192,7,248,126,0,3,224,112,0,26, + 35,140,27,1,0,0,3,128,0,0,7,240,0,0,7,240, + 0,0,15,224,0,0,15,192,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,60,0,0,0,120,0,0,0,48,0, + 0,0,0,0,0,0,0,0,0,3,128,28,0,255,135,252, + 0,255,135,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,129,252,0,31,199,252, + 128,31,255,255,128,15,254,255,192,7,248,126,0,3,224,112, + 0,26,35,140,27,1,0,0,30,0,0,0,62,0,0,0, + 127,0,0,0,255,128,0,0,255,128,0,1,255,192,0,3, + 247,224,0,3,193,224,0,7,128,240,0,15,0,112,0,6, + 0,48,0,0,0,0,0,0,0,0,0,3,128,28,0,255, + 135,252,0,255,135,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,128,252,0,31, + 128,252,0,31,128,252,0,31,128,252,0,31,129,252,0,31, + 199,252,128,31,255,255,128,15,254,255,192,7,248,126,0,3, + 224,112,0,26,33,132,27,1,0,3,192,240,0,7,193,240, + 0,7,225,248,0,7,225,248,0,7,193,240,0,7,193,240, + 0,7,129,224,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,3,128,28,0,255,135,252,0,255,135,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,128,252,0,31,128,252,0,31,128,252, + 0,31,128,252,0,31,129,252,0,31,199,252,128,31,255,255, + 128,15,254,255,192,7,248,126,0,3,224,112,0,25,46,184, + 24,255,245,0,1,224,0,0,3,248,0,0,3,248,0,0, + 3,240,0,0,7,224,0,0,7,192,0,0,15,128,0,0, + 15,0,0,0,30,0,0,0,28,0,0,0,56,0,0,0, + 0,0,0,0,0,0,0,127,240,127,128,127,240,127,128,31, + 192,30,0,15,192,28,0,15,192,28,0,7,224,60,0,7, + 224,56,0,3,240,56,0,3,240,112,0,1,240,112,0,1, + 248,240,0,1,248,224,0,0,252,224,0,0,253,224,0,0, + 125,192,0,0,127,192,0,0,127,128,0,0,63,128,0,0, + 63,128,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,30,0,0,0,28,0,0,0,60,0,0,0, + 120,0,0,32,248,0,0,63,240,0,0,127,224,0,0,255, + 192,0,0,255,128,0,0,126,0,0,0,24,47,141,27,1, + 245,3,0,0,63,128,0,255,128,0,255,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,131,224,31,143, + 248,31,191,252,31,255,252,31,240,254,31,192,126,31,128,63, + 31,128,63,31,128,31,31,128,31,31,128,31,31,128,31,31, + 128,31,31,128,30,31,128,30,31,128,62,31,192,60,31,240, + 124,31,255,248,31,255,240,31,159,224,31,135,128,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,63,192,0,255,248,0,255,248,0,25,44, + 176,24,255,245,0,224,56,0,1,240,124,0,3,240,252,0, + 3,240,252,0,3,240,252,0,3,224,248,0,1,192,112,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 127,240,127,128,127,240,127,128,31,192,30,0,15,192,28,0, + 15,192,28,0,7,224,60,0,7,224,56,0,3,240,56,0, + 3,240,112,0,1,240,112,0,1,248,240,0,1,248,224,0, + 0,252,224,0,0,253,224,0,0,125,192,0,0,127,192,0, + 0,127,128,0,0,63,128,0,0,63,128,0,0,31,0,0, + 0,31,0,0,0,14,0,0,0,14,0,0,0,30,0,0, + 0,28,0,0,0,60,0,0,0,120,0,0,32,248,0,0, + 63,240,0,0,127,224,0,0,255,192,0,0,255,128,0,0, + 126,0,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 29 + Calculated Max Values w=22 h=46 x= 3 y=17 dx=25 dy= 0 ascent=38 len=138 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent= 0 + X Font ascent =29 descent= 0 + Max Font ascent =38 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30n[1275] U8G_SECTION(".progmem.u8g_font_gdb30n") = { + 0,74,69,232,239,29,0,0,0,0,42,57,0,38,247,29, + 0,19,20,60,21,1,17,0,48,0,1,240,0,1,240,0, + 32,240,0,112,225,128,120,227,192,126,231,224,127,255,224,31, + 255,0,3,248,0,3,248,0,31,255,0,127,255,192,254,231, + 192,124,227,192,48,225,192,0,240,128,0,240,0,1,240,0, + 0,192,0,18,18,54,20,1,4,0,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,127,255, + 192,255,255,192,255,255,128,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,192,0,10, + 15,30,13,1,247,7,0,63,128,255,192,127,192,63,192,15, + 192,15,192,15,128,15,128,15,0,31,0,30,0,60,0,120, + 0,48,0,15,3,6,17,1,11,127,254,127,252,255,252,8, + 7,7,13,3,255,62,127,255,255,255,254,124,21,46,138,23, + 1,248,0,0,56,0,0,248,0,0,240,0,1,240,0,1, + 240,0,1,224,0,3,224,0,3,224,0,3,192,0,7,192, + 0,7,128,0,15,128,0,15,128,0,15,0,0,31,0,0, + 31,0,0,30,0,0,62,0,0,60,0,0,124,0,0,124, + 0,0,120,0,0,248,0,0,248,0,0,240,0,1,240,0, + 1,224,0,3,224,0,3,224,0,3,192,0,7,192,0,7, + 192,0,7,128,0,15,128,0,15,0,0,31,0,0,31,0, + 0,30,0,0,62,0,0,62,0,0,60,0,0,124,0,0, + 120,0,0,248,0,0,248,0,0,192,0,0,22,29,87,24, + 1,0,0,252,0,3,255,0,7,143,192,15,7,224,30,3, + 224,62,1,240,62,1,240,124,1,248,124,1,248,124,0,248, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,124,0,248,124,0, + 248,126,0,248,62,1,240,62,1,240,31,1,224,31,3,192, + 15,135,128,3,255,0,0,252,0,19,29,87,24,3,0,0, + 16,0,0,248,0,7,248,0,63,248,0,255,248,0,225,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,15,255,0, + 127,255,224,127,255,224,20,29,87,24,1,0,0,255,0,7, + 255,192,15,143,224,63,7,224,62,3,240,126,3,240,126,3, + 240,120,3,240,0,3,240,0,7,224,0,7,224,0,15,192, + 0,15,128,0,31,128,0,31,0,0,62,0,0,124,0,0, + 248,0,0,248,0,1,240,0,3,224,32,7,192,48,15,128, + 48,15,0,48,30,0,112,63,255,240,127,255,240,255,255,240, + 127,255,240,20,29,87,24,1,0,1,254,0,7,255,128,31, + 31,192,63,15,192,62,7,224,126,7,224,60,7,224,0,7, + 224,0,7,192,0,15,192,0,31,128,0,127,0,1,254,0, + 1,255,128,2,63,192,0,15,224,0,7,224,0,3,240,0, + 3,240,0,3,240,0,3,240,0,3,240,0,3,240,64,7, + 224,96,15,224,252,31,192,63,255,128,31,254,0,3,248,0, + 21,29,87,25,2,0,0,1,128,0,15,128,0,31,128,0, + 63,128,0,63,128,0,127,128,0,255,128,0,239,128,1,239, + 128,3,207,128,3,143,128,7,143,128,7,15,128,14,15,128, + 30,15,128,28,15,128,56,15,128,56,15,128,127,255,248,255, + 255,240,255,255,224,0,15,128,0,15,128,0,15,128,0,15, + 128,0,15,128,0,31,192,1,255,240,1,255,240,20,29,87, + 24,2,0,0,0,32,31,255,240,31,255,192,31,255,192,31, + 255,128,28,0,0,28,0,0,28,0,0,60,0,0,60,0, + 0,56,0,0,59,252,0,63,255,0,63,255,128,120,31,192, + 32,15,224,0,7,224,0,7,240,0,3,240,0,3,240,0, + 3,240,0,3,240,0,3,240,0,7,224,64,7,224,224,15, + 192,252,31,128,63,254,0,7,248,0,20,29,87,24,2,0, + 0,1,128,0,31,192,0,127,0,1,252,0,3,240,0,7, + 192,0,15,128,0,31,128,0,63,0,0,62,0,0,126,0, + 0,124,126,0,125,255,128,255,255,192,255,15,224,254,7,224, + 252,7,240,252,3,240,252,3,240,252,3,240,252,3,240,124, + 3,240,126,3,224,126,3,224,62,3,192,31,7,192,15,143, + 128,7,255,0,1,248,0,21,28,84,24,2,0,127,255,240, + 127,255,248,127,255,240,127,255,224,112,1,224,224,1,224,192, + 1,192,64,3,192,0,3,128,0,7,128,0,7,0,0,15, + 0,0,15,0,0,30,0,0,30,0,0,60,0,0,60,0, + 0,124,0,0,120,0,0,248,0,0,240,0,1,240,0,1, + 240,0,3,224,0,3,224,0,7,224,0,15,192,0,6,0, + 0,20,29,87,24,2,0,0,252,0,7,255,128,15,31,192, + 30,15,192,28,7,224,60,7,224,60,7,224,60,7,224,62, + 15,192,63,143,128,31,255,0,31,254,0,15,252,0,3,255, + 0,7,255,128,15,255,192,31,31,224,62,15,240,126,7,240, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,224,126, + 3,224,126,7,192,63,15,128,31,254,0,3,248,0,20,29, + 87,24,2,255,1,252,0,7,255,0,15,31,128,30,15,192, + 62,7,224,124,7,224,124,7,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,254,3,240,126,7,240,127,15, + 240,63,255,240,31,251,224,7,227,224,0,7,224,0,7,192, + 0,7,192,0,15,128,0,31,0,0,62,0,0,252,0,3, + 248,0,15,224,0,63,128,0,56,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Bold-R-Normal--48-480-72-72-P-238-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=41 h=49 x= 4 y=24 dx=42 dy= 0 ascent=39 len=210 + Font Bounding box w=74 h=69 x=-24 y=-17 + Calculated Min Values x=-7 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdb30r[9112] U8G_SECTION(".progmem.u8g_font_gdb30r") = { + 0,74,69,232,239,30,10,50,24,78,32,127,245,39,245,38, + 245,0,0,0,12,0,0,8,36,36,15,3,255,6,31,127, + 126,126,126,126,126,126,126,62,62,62,62,62,62,62,60,60, + 60,60,60,60,28,28,24,0,0,0,62,127,255,255,255,254, + 124,16,16,32,23,3,19,14,3,126,31,254,63,254,63,124, + 63,124,63,124,63,124,63,124,30,124,30,124,30,60,30,60, + 30,56,30,56,30,56,14,22,27,81,24,2,3,0,56,48, + 0,120,112,0,112,240,0,112,224,0,240,224,0,225,224,0, + 225,192,31,255,252,31,255,252,63,255,252,3,195,128,3,195, + 128,3,135,128,3,135,0,7,135,0,7,135,0,255,255,240, + 255,255,240,255,255,224,14,30,0,14,28,0,30,28,0,28, + 60,0,28,60,0,28,56,0,60,56,0,56,112,0,20,36, + 108,24,2,252,0,48,0,0,112,0,0,112,0,0,112,0, + 3,255,0,15,255,224,63,255,240,124,119,240,120,115,224,240, + 113,224,240,112,192,248,112,0,252,112,0,255,112,0,127,240, + 0,63,248,0,31,254,0,7,255,128,0,255,192,0,127,224, + 0,119,224,0,113,240,0,113,240,224,112,240,224,112,240,240, + 112,240,248,112,224,252,113,224,255,119,192,255,255,192,63,255, + 0,7,252,0,0,112,0,0,112,0,0,112,0,0,96,0, + 31,30,120,34,2,0,0,0,0,16,7,192,0,240,31,224, + 1,224,56,240,3,192,120,120,3,128,112,120,7,128,240,60, + 15,0,240,60,30,0,240,60,28,0,240,60,60,0,240,60, + 120,0,240,60,240,0,112,57,224,0,120,57,224,0,56,115, + 192,0,31,231,131,224,15,143,12,48,0,15,24,56,0,30, + 56,28,0,60,56,28,0,120,120,30,0,120,120,30,0,240, + 120,30,1,224,120,30,3,192,120,30,3,192,120,28,7,128, + 60,60,15,0,30,56,30,0,15,240,28,0,7,192,31,34, + 136,33,2,0,0,31,128,0,0,127,224,0,0,227,240,0, + 1,225,248,0,3,193,248,0,3,193,248,0,7,193,248,0, + 7,193,248,0,7,195,240,0,7,195,240,0,7,231,224,0, + 7,239,192,0,3,255,128,0,3,255,0,0,3,252,0,0, + 1,248,0,0,7,252,63,252,15,252,127,254,31,254,31,184, + 63,127,15,128,62,127,7,128,126,63,135,128,252,31,199,128, + 252,31,231,128,252,15,247,0,252,7,255,0,252,3,254,0, + 252,1,252,0,254,0,255,0,127,0,127,128,127,129,255,248, + 63,255,223,248,15,255,15,244,3,252,7,128,7,16,16,13, + 3,19,14,126,254,254,124,124,124,124,124,124,124,60,60,56, + 56,56,13,45,90,16,3,249,0,16,0,120,0,240,1,224, + 3,224,7,192,7,128,15,128,31,0,31,0,63,0,62,0, + 62,0,126,0,126,0,126,0,124,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,126,0,126,0,126,0,126,0,62,0,63,0,63,0, + 31,0,15,128,15,128,7,192,3,192,1,224,0,240,0,120, + 0,16,13,44,88,16,0,249,64,0,240,0,120,0,60,0, + 30,0,31,0,15,128,15,192,7,192,7,224,7,224,3,224, + 3,240,3,240,3,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 3,240,3,240,3,240,3,224,3,224,7,224,7,192,7,192, + 15,128,15,0,31,0,62,0,60,0,120,0,240,0,64,0, + 19,20,60,21,1,17,0,48,0,1,240,0,1,240,0,32, + 240,0,112,225,128,120,227,192,126,231,224,127,255,224,31,255, + 0,3,248,0,3,248,0,31,255,0,127,255,192,254,231,192, + 124,227,192,48,225,192,0,240,128,0,240,0,1,240,0,0, + 192,0,18,18,54,20,1,4,0,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,127,255,192, + 255,255,192,255,255,128,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,192,0,10,15, + 30,13,1,247,7,0,63,128,255,192,127,192,63,192,15,192, + 15,192,15,128,15,128,15,0,31,0,30,0,60,0,120,0, + 48,0,15,3,6,17,1,11,127,254,127,252,255,252,8,7, + 7,13,3,255,62,127,255,255,255,254,124,21,46,138,23,1, + 248,0,0,56,0,0,248,0,0,240,0,1,240,0,1,240, + 0,1,224,0,3,224,0,3,224,0,3,192,0,7,192,0, + 7,128,0,15,128,0,15,128,0,15,0,0,31,0,0,31, + 0,0,30,0,0,62,0,0,60,0,0,124,0,0,124,0, + 0,120,0,0,248,0,0,248,0,0,240,0,1,240,0,1, + 224,0,3,224,0,3,224,0,3,192,0,7,192,0,7,192, + 0,7,128,0,15,128,0,15,0,0,31,0,0,31,0,0, + 30,0,0,62,0,0,62,0,0,60,0,0,124,0,0,120, + 0,0,248,0,0,248,0,0,192,0,0,22,29,87,24,1, + 0,0,252,0,3,255,0,7,143,192,15,7,224,30,3,224, + 62,1,240,62,1,240,124,1,248,124,1,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,124,0,248,124,0,248, + 126,0,248,62,1,240,62,1,240,31,1,224,31,3,192,15, + 135,128,3,255,0,0,252,0,19,29,87,24,3,0,0,16, + 0,0,248,0,7,248,0,63,248,0,255,248,0,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,15,255,0,127, + 255,224,127,255,224,20,29,87,24,1,0,0,255,0,7,255, + 192,15,143,224,63,7,224,62,3,240,126,3,240,126,3,240, + 120,3,240,0,3,240,0,7,224,0,7,224,0,15,192,0, + 15,128,0,31,128,0,31,0,0,62,0,0,124,0,0,248, + 0,0,248,0,1,240,0,3,224,32,7,192,48,15,128,48, + 15,0,48,30,0,112,63,255,240,127,255,240,255,255,240,127, + 255,240,20,29,87,24,1,0,1,254,0,7,255,128,31,31, + 192,63,15,192,62,7,224,126,7,224,60,7,224,0,7,224, + 0,7,192,0,15,192,0,31,128,0,127,0,1,254,0,1, + 255,128,2,63,192,0,15,224,0,7,224,0,3,240,0,3, + 240,0,3,240,0,3,240,0,3,240,0,3,240,64,7,224, + 96,15,224,252,31,192,63,255,128,31,254,0,3,248,0,21, + 29,87,25,2,0,0,1,128,0,15,128,0,31,128,0,63, + 128,0,63,128,0,127,128,0,255,128,0,239,128,1,239,128, + 3,207,128,3,143,128,7,143,128,7,15,128,14,15,128,30, + 15,128,28,15,128,56,15,128,56,15,128,127,255,248,255,255, + 240,255,255,224,0,15,128,0,15,128,0,15,128,0,15,128, + 0,15,128,0,31,192,1,255,240,1,255,240,20,29,87,24, + 2,0,0,0,32,31,255,240,31,255,192,31,255,192,31,255, + 128,28,0,0,28,0,0,28,0,0,60,0,0,60,0,0, + 56,0,0,59,252,0,63,255,0,63,255,128,120,31,192,32, + 15,224,0,7,224,0,7,240,0,3,240,0,3,240,0,3, + 240,0,3,240,0,3,240,0,7,224,64,7,224,224,15,192, + 252,31,128,63,254,0,7,248,0,20,29,87,24,2,0,0, + 1,128,0,31,192,0,127,0,1,252,0,3,240,0,7,192, + 0,15,128,0,31,128,0,63,0,0,62,0,0,126,0,0, + 124,126,0,125,255,128,255,255,192,255,15,224,254,7,224,252, + 7,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 240,126,3,224,126,3,224,62,3,192,31,7,192,15,143,128, + 7,255,0,1,248,0,21,28,84,24,2,0,127,255,240,127, + 255,248,127,255,240,127,255,224,112,1,224,224,1,224,192,1, + 192,64,3,192,0,3,128,0,7,128,0,7,0,0,15,0, + 0,15,0,0,30,0,0,30,0,0,60,0,0,60,0,0, + 124,0,0,120,0,0,248,0,0,240,0,1,240,0,1,240, + 0,3,224,0,3,224,0,7,224,0,15,192,0,6,0,0, + 20,29,87,24,2,0,0,252,0,7,255,128,15,31,192,30, + 15,192,28,7,224,60,7,224,60,7,224,60,7,224,62,15, + 192,63,143,128,31,255,0,31,254,0,15,252,0,3,255,0, + 7,255,128,15,255,192,31,31,224,62,15,240,126,7,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,224,126,3, + 224,126,7,192,63,15,128,31,254,0,3,248,0,20,29,87, + 24,2,255,1,252,0,7,255,0,15,31,128,30,15,192,62, + 7,224,124,7,224,124,7,224,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,254,3,240,126,7,240,127,15,240, + 63,255,240,31,251,224,7,227,224,0,7,224,0,7,192,0, + 7,192,0,15,128,0,31,0,0,62,0,0,252,0,3,248, + 0,15,224,0,63,128,0,56,0,0,8,23,23,13,3,255, + 62,127,255,255,255,254,124,0,0,0,0,0,0,0,0,0, + 62,127,255,255,255,254,124,10,31,62,13,1,247,15,128,31, + 192,63,192,63,192,63,192,31,128,14,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,63, + 128,255,192,127,192,63,192,15,192,15,192,15,128,15,128,15, + 0,31,0,30,0,60,0,120,0,48,0,20,16,48,22,1, + 6,0,0,96,0,1,240,0,15,224,0,127,224,3,255,128, + 15,252,0,127,224,0,127,0,0,254,0,0,255,192,0,63, + 248,0,7,254,0,1,255,192,0,63,224,0,7,240,0,0, + 192,20,10,30,22,1,8,127,255,224,127,255,240,255,255,224, + 0,0,0,0,0,0,0,0,0,0,0,0,127,255,224,127, + 255,240,255,255,224,20,16,48,22,1,6,48,0,0,126,0, + 0,255,192,0,63,240,0,15,254,0,1,255,192,0,63,224, + 0,7,240,0,31,224,0,127,224,3,255,0,31,248,0,127, + 224,0,127,0,0,248,0,0,64,0,0,19,35,105,22,2, + 255,1,254,0,15,255,128,63,31,192,126,15,192,124,7,224, + 252,7,224,252,7,224,252,7,224,240,7,224,0,7,192,0, + 15,192,0,15,128,0,31,128,0,63,0,0,126,0,0,124, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,128,0,0,0,0,0, + 0,0,0,0,0,1,240,0,3,248,0,7,248,0,7,248, + 0,7,248,0,7,240,0,3,224,0,38,42,210,42,2,246, + 0,0,255,192,0,0,7,255,248,0,0,31,255,254,0,0, + 127,255,255,0,0,255,0,255,128,1,248,0,31,192,3,224, + 0,7,224,7,192,0,3,224,15,128,0,1,240,31,0,0, + 1,240,31,0,252,24,248,62,3,254,120,248,60,7,255,240, + 120,124,15,135,240,124,124,31,3,240,124,120,31,3,240,60, + 120,62,3,240,60,248,62,3,240,60,248,126,3,240,60,248, + 126,3,240,60,248,126,3,240,60,248,126,3,240,60,248,126, + 3,240,56,248,126,3,240,56,248,126,3,240,120,252,127,3, + 240,112,252,63,7,240,224,124,63,143,249,224,124,31,255,255, + 192,126,31,251,255,128,62,15,241,254,0,63,3,224,248,0, + 63,128,0,0,0,31,192,0,0,0,15,224,0,0,128,15, + 240,0,1,192,7,252,0,7,192,3,255,128,127,128,0,255, + 255,254,0,0,127,255,252,0,0,31,255,240,0,0,1,255, + 0,0,30,30,120,30,0,0,0,1,128,0,0,7,128,0, + 0,15,192,0,0,31,192,0,0,31,224,0,0,31,224,0, + 0,63,224,0,0,63,240,0,0,59,240,0,0,121,240,0, + 0,121,248,0,0,113,248,0,0,240,252,0,0,240,252,0, + 0,224,252,0,1,224,126,0,1,224,126,0,1,192,126,0, + 3,255,255,0,3,255,255,0,3,128,31,0,7,128,31,128, + 7,0,31,128,7,0,15,192,15,0,15,192,14,0,15,192, + 14,0,7,224,30,0,7,224,255,192,63,252,255,192,63,252, + 26,30,120,29,0,0,3,255,128,0,255,255,240,0,127,193, + 252,0,15,192,126,0,15,192,127,0,15,192,63,0,15,192, + 63,0,15,192,63,0,15,192,63,0,15,192,62,0,15,192, + 126,0,15,192,252,0,15,195,248,0,15,255,224,0,15,255, + 252,0,15,192,254,0,15,192,63,0,15,192,31,128,15,192, + 31,128,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,128,15,192,31,128,15,192, + 63,0,31,192,254,0,127,255,252,0,127,255,224,0,24,30, + 90,27,1,0,0,31,224,0,255,252,1,255,254,7,224,254, + 15,128,126,31,128,60,31,0,28,62,0,0,62,0,0,126, + 0,0,124,0,0,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 126,0,0,126,0,0,127,0,0,63,128,2,63,192,15,31, + 240,62,15,255,248,7,255,240,1,255,192,0,127,0,29,30, + 120,31,0,0,3,255,192,0,255,255,248,0,127,192,254,0, + 143,192,63,128,15,192,31,192,15,192,15,192,15,192,7,224, + 15,192,7,240,15,192,3,240,15,192,3,240,15,192,3,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,248,15,192,1,248,15,192,1,248,15,192,1,248, + 15,192,1,240,15,192,3,240,15,192,3,240,15,192,7,224, + 15,192,7,224,15,192,15,192,15,192,31,128,15,192,63,0, + 31,224,254,0,127,255,248,0,127,255,192,0,23,30,90,25, + 1,0,255,255,248,255,255,252,63,128,56,31,128,56,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,224,31,255,224,31, + 128,192,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,6,31,128,6,31,128,14, + 31,128,14,63,192,30,255,255,254,255,255,252,22,30,90,24, + 1,0,255,255,248,255,255,252,63,128,60,31,128,28,31,128, + 24,31,128,24,31,128,24,31,128,24,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,255,192,31,255,224,31, + 129,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,63,192,0,255,248,0,255,248,0,27,30,120,29, + 1,0,0,15,248,0,0,127,255,128,1,240,127,128,3,192, + 63,0,7,128,15,0,15,0,14,0,31,0,0,0,62,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,124,0, + 0,0,252,0,0,0,252,0,0,0,252,1,255,224,252,1, + 255,224,252,0,127,192,252,0,31,128,252,0,31,128,254,0, + 31,128,126,0,31,128,127,0,31,128,127,0,31,128,63,128, + 31,128,63,192,31,128,31,240,63,0,15,255,254,0,7,255, + 252,0,1,255,240,0,0,63,128,0,30,30,120,33,1,0, + 255,240,63,252,255,240,63,252,63,192,15,240,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,255,255,224,31,255,255,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,31,128,7,224, + 31,128,7,224,31,128,7,224,31,128,7,224,63,192,15,240, + 255,240,63,252,255,240,63,252,12,30,60,16,2,0,255,240, + 255,240,63,192,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,63,192,255,240,255,240,21,40,120,16,249,246, + 0,255,248,0,255,248,0,31,224,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,192,0,15,192, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,0,15,128,0,15,128, + 0,15,128,0,31,0,24,30,0,62,62,0,127,248,0,255, + 240,0,127,224,0,31,128,0,29,30,120,30,1,0,255,240, + 255,224,255,240,255,224,63,192,31,0,31,128,62,0,31,128, + 124,0,31,128,248,0,31,129,240,0,31,129,224,0,31,131, + 192,0,31,135,128,0,31,143,0,0,31,159,0,0,31,190, + 0,0,31,188,0,0,31,252,0,0,31,254,0,0,31,191, + 0,0,31,159,128,0,31,143,192,0,31,135,224,0,31,135, + 240,0,31,131,248,0,31,129,252,0,31,128,254,0,31,128, + 126,0,31,128,127,0,31,128,63,192,63,192,31,240,255,240, + 15,248,255,240,7,128,23,30,90,24,1,0,255,240,0,255, + 240,0,63,192,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,4,31,128,6,31,128,14,31,128,30,63,192,60, + 255,255,252,255,255,252,38,30,150,41,1,0,255,128,0,15, + 248,255,192,0,15,248,15,192,0,31,192,15,224,0,31,192, + 15,224,0,31,192,15,240,0,63,192,15,240,0,63,192,15, + 248,0,127,192,15,248,0,119,192,14,252,0,247,192,14,252, + 0,247,192,14,124,1,231,192,14,126,1,231,192,14,62,1, + 199,192,14,63,3,199,192,14,31,3,135,192,14,31,135,135, + 192,14,31,135,135,192,14,15,143,7,192,14,15,207,7,192, + 30,7,222,7,192,30,7,254,7,192,30,3,252,7,192,30, + 3,252,7,192,30,3,248,7,192,30,1,248,7,224,30,1, + 248,7,224,31,0,240,15,224,255,192,240,63,252,255,192,96, + 63,252,30,30,120,32,1,0,255,0,15,252,255,128,15,252, + 63,192,3,240,31,192,1,224,31,224,1,224,31,240,1,224, + 31,240,1,224,31,248,1,224,31,252,1,224,30,254,1,224, + 30,126,1,224,30,63,1,224,30,63,129,224,30,31,129,224, + 30,15,193,224,30,7,225,224,30,7,225,224,30,3,241,224, + 30,1,249,224,30,1,253,224,30,0,253,224,30,0,127,224, + 30,0,63,224,30,0,63,224,30,0,31,224,30,0,15,224, + 30,0,7,224,63,0,7,224,255,192,3,224,255,192,0,224, + 27,30,120,30,1,0,0,31,192,0,0,255,240,0,3,225, + 252,0,7,128,126,0,15,0,63,0,31,0,31,0,30,0, + 31,128,62,0,15,128,126,0,15,192,124,0,15,192,124,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,254,0,7,192,126,0,15,192,126,0,15,128,127,0, + 15,128,63,0,31,0,31,128,31,0,31,192,62,0,15,240, + 252,0,7,255,240,0,1,255,224,0,0,127,0,0,25,30, + 120,27,0,0,3,255,192,0,255,255,248,0,127,193,252,0, + 143,192,126,0,15,192,63,0,15,192,63,0,15,192,31,128, + 15,192,31,128,15,192,31,128,15,192,31,128,15,192,31,128, + 15,192,31,0,15,192,63,0,15,192,62,0,15,192,126,0, + 15,208,252,0,15,223,240,0,15,207,192,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 15,192,0,0,15,192,0,0,15,192,0,0,15,192,0,0, + 31,224,0,0,127,252,0,0,127,252,0,0,32,38,152,30, + 1,248,0,31,192,0,0,255,240,0,3,225,252,0,7,128, + 126,0,15,0,63,0,31,0,31,0,30,0,31,128,62,0, + 15,128,126,0,15,192,124,0,15,192,124,0,7,192,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,252,0, + 7,224,252,0,7,224,252,0,7,224,252,0,7,224,254,0, + 7,192,126,0,15,192,126,0,15,128,127,0,15,128,63,0, + 31,0,31,128,31,0,31,192,62,0,15,240,252,0,7,255, + 248,0,1,255,224,0,0,127,240,0,0,1,252,0,0,0, + 254,2,0,0,63,135,0,0,31,255,0,0,15,254,0,0, + 3,252,0,0,1,252,0,0,0,120,29,30,120,29,0,0, + 7,255,128,0,255,255,240,0,127,193,252,0,143,192,126,0, + 15,192,126,0,15,192,63,0,15,192,63,0,15,192,63,0, + 15,192,63,0,15,192,63,0,15,192,126,0,15,192,126,0, + 15,192,252,0,15,255,248,0,15,255,240,0,15,255,192,0, + 15,199,192,0,15,195,224,0,15,193,240,0,15,193,240,0, + 15,192,248,0,15,192,252,0,15,192,126,0,15,192,126,0, + 15,192,63,0,15,192,63,128,15,192,31,192,31,224,31,248, + 127,248,15,248,127,248,15,128,20,30,90,25,3,0,1,255, + 0,15,255,192,30,15,224,60,7,192,120,3,192,248,1,128, + 248,0,0,252,0,0,254,0,0,255,0,0,127,192,0,127, + 240,0,63,252,0,31,255,0,7,255,128,1,255,192,0,127, + 224,0,31,224,0,7,240,0,3,240,0,1,240,192,1,240, + 224,1,240,224,1,224,240,3,224,248,3,192,254,15,128,255, + 255,0,127,254,0,15,240,0,27,30,120,28,0,0,127,255, + 255,224,127,255,255,224,112,31,128,224,112,31,128,224,96,31, + 128,224,96,31,128,224,224,31,128,96,64,31,128,96,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,63,192,0,1,255, + 248,0,1,255,248,0,29,30,120,32,1,0,255,240,31,248, + 255,240,31,248,63,192,7,224,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,192,31,128,3,192,31,128,3,192,31,128,3,192, + 31,128,3,128,31,192,7,128,15,192,7,128,15,224,7,0, + 7,224,15,0,3,248,62,0,1,255,252,0,0,255,240,0, + 0,31,192,0,31,30,120,32,0,0,255,240,7,254,255,240, + 7,254,31,128,0,240,15,192,0,224,15,192,0,224,15,192, + 1,224,7,224,1,192,7,224,3,192,3,240,3,192,3,240, + 3,128,3,240,7,128,1,248,7,128,1,248,7,0,0,248, + 15,0,0,252,14,0,0,252,14,0,0,126,30,0,0,126, + 28,0,0,62,28,0,0,63,60,0,0,63,56,0,0,31, + 248,0,0,31,240,0,0,15,240,0,0,15,240,0,0,15, + 224,0,0,7,224,0,0,7,224,0,0,3,192,0,0,3, + 0,0,41,30,180,41,0,0,255,240,12,3,255,128,255,240, + 30,3,255,128,31,128,30,0,124,0,15,128,30,0,56,0, + 15,128,63,0,120,0,15,128,63,0,120,0,15,192,63,128, + 112,0,7,192,127,128,112,0,7,192,127,128,112,0,7,192, + 127,192,240,0,7,224,247,192,224,0,3,224,231,224,224,0, + 3,224,227,224,224,0,3,225,227,225,224,0,3,241,195,241, + 224,0,3,241,193,241,192,0,1,243,193,241,192,0,1,243, + 128,249,192,0,1,251,128,251,192,0,1,255,128,255,192,0, + 0,255,0,127,128,0,0,255,0,127,128,0,0,254,0,127, + 128,0,0,254,0,63,128,0,0,126,0,63,0,0,0,124, + 0,31,0,0,0,124,0,31,0,0,0,124,0,31,0,0, + 0,120,0,14,0,0,0,48,0,12,0,0,29,30,120,30, + 1,0,255,240,127,240,255,240,127,240,63,192,31,128,31,192, + 15,0,15,192,30,0,7,224,60,0,7,240,60,0,3,240, + 120,0,1,248,240,0,1,252,240,0,0,255,224,0,0,127, + 192,0,0,127,192,0,0,63,128,0,0,31,128,0,0,31, + 192,0,0,63,224,0,0,127,224,0,0,127,240,0,0,243, + 248,0,1,241,248,0,1,225,252,0,3,192,254,0,7,192, + 126,0,7,128,63,0,15,0,63,128,31,0,31,192,63,0, + 63,224,255,192,255,248,255,192,255,248,29,30,120,29,0,0, + 127,0,31,248,255,128,31,248,31,192,3,192,15,192,3,128, + 7,224,7,128,3,240,7,0,3,240,15,0,1,248,14,0, + 1,248,30,0,0,252,28,0,0,124,60,0,0,126,56,0, + 0,63,120,0,0,63,240,0,0,31,240,0,0,31,224,0, + 0,15,224,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,15,192,0, + 0,15,192,0,0,15,192,0,0,15,192,0,0,31,224,0, + 0,255,252,0,0,255,252,0,23,30,90,26,1,0,63,255, + 254,63,255,254,60,0,254,56,1,252,56,1,248,48,3,248, + 48,7,240,64,7,240,0,15,224,0,15,192,0,31,192,0, + 63,128,0,63,128,0,127,0,0,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,248,0,7,240,0,15,224,0, + 15,224,4,31,192,6,31,192,6,63,128,14,127,0,14,127, + 0,30,255,255,254,127,255,254,12,45,90,16,3,248,255,240, + 255,240,255,240,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,255,240,255,240,255,240,21,46,138,23,1,248,224,0, + 0,248,0,0,120,0,0,120,0,0,124,0,0,60,0,0, + 60,0,0,62,0,0,30,0,0,31,0,0,15,0,0,15, + 0,0,15,128,0,7,128,0,7,128,0,7,192,0,3,192, + 0,3,192,0,3,224,0,1,224,0,1,240,0,0,240,0, + 0,240,0,0,248,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,60,0,0,62,0,0,30,0,0,31,0,0,15, + 0,0,15,0,0,15,128,0,7,128,0,7,128,0,7,192, + 0,3,192,0,3,192,0,1,224,0,1,224,0,1,240,0, + 0,240,0,0,240,0,0,56,12,45,90,16,1,248,255,240, + 255,240,255,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240, + 1,240,255,240,255,240,255,240,19,23,69,24,2,13,0,32, + 0,0,112,0,0,240,0,1,240,0,1,248,0,1,248,0, + 3,188,0,3,188,0,7,60,0,7,30,0,6,30,0,14, + 14,0,14,15,0,12,15,0,28,7,128,28,7,128,24,3, + 128,56,3,192,48,3,192,112,1,224,112,1,224,96,0,224, + 192,0,192,21,3,9,23,1,250,127,255,248,127,255,248,255, + 255,240,11,11,22,15,0,24,60,0,252,0,254,0,126,0, + 63,0,31,0,15,128,7,128,3,192,1,192,0,224,23,22, + 66,24,1,0,0,255,0,15,255,128,31,15,192,62,7,224, + 126,7,224,252,7,224,96,7,224,0,7,224,0,31,224,1, + 255,224,7,255,224,31,231,224,63,135,224,63,7,224,126,7, + 224,126,7,224,126,7,224,126,31,228,127,63,252,63,247,254, + 63,231,240,15,131,128,24,36,108,26,0,0,3,0,0,63, + 128,0,255,128,0,127,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,131,224,31,143,248,31,191,252,31, + 255,252,31,240,254,31,192,126,31,128,63,31,128,63,31,128, + 31,31,128,31,31,128,31,31,128,31,31,128,31,31,128,30, + 31,128,30,31,128,60,31,128,56,31,240,248,31,255,240,15, + 255,192,3,255,128,0,126,0,20,22,66,22,1,0,0,127, + 128,1,255,240,7,135,224,15,3,224,30,1,224,62,0,192, + 124,0,192,124,0,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,0,254,0,0,126,0,32,127,0, + 112,63,193,224,63,255,192,31,255,128,7,255,0,1,252,0, + 25,36,144,27,2,0,0,0,56,0,0,15,248,0,0,15, + 248,0,0,3,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,1, + 248,0,0,1,248,0,0,1,248,0,0,1,248,0,0,249, + 248,0,7,255,248,0,15,255,248,0,31,135,248,0,63,3, + 248,0,62,1,248,0,126,1,248,0,124,1,248,0,252,1, + 248,0,252,1,248,0,252,1,248,0,252,1,248,0,252,1, + 248,0,252,1,248,0,254,1,248,0,126,1,248,0,127,3, + 248,0,127,135,253,0,63,255,255,128,31,253,254,0,15,248, + 252,0,3,224,224,0,19,22,66,23,2,0,0,252,0,7, + 255,0,15,31,128,30,15,128,62,15,192,124,7,192,124,7, + 224,124,7,224,252,7,224,255,255,224,255,255,128,252,0,0, + 252,0,0,252,0,0,254,0,0,126,0,64,127,0,224,63, + 131,192,63,255,128,31,255,0,15,254,0,3,248,0,20,37, + 111,16,1,0,0,15,128,0,63,224,0,255,240,1,255,224, + 3,227,224,7,193,192,7,193,0,15,128,0,15,128,0,15, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,127,255,0,255,254,0,31,132,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,63,224,0,255,252,0, + 255,252,0,25,33,132,25,0,245,0,126,1,128,3,255,223, + 128,7,135,255,0,15,3,254,0,30,1,240,0,30,0,248, + 0,62,0,248,0,62,0,248,0,62,0,248,0,62,0,248, + 0,63,0,240,0,31,129,224,0,15,195,192,0,7,255,128, + 0,1,254,0,0,3,224,0,0,7,192,0,0,15,192,0, + 0,31,254,0,0,31,255,240,0,15,255,252,0,7,255,254, + 0,15,159,255,0,62,0,127,0,124,0,63,0,252,0,31, + 0,252,0,30,0,254,0,30,0,255,0,60,0,127,192,248, + 0,63,255,240,0,15,255,192,0,1,254,0,0,26,36,144, + 28,1,0,1,128,0,0,63,128,0,0,255,128,0,0,255, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,129,240,0,31, + 143,252,0,31,159,252,0,31,255,254,0,31,248,254,0,31, + 224,126,0,31,192,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,31,128,126,0,31,128,126,0,31, + 128,126,0,31,128,126,0,63,192,255,0,255,243,255,192,255, + 243,255,192,12,32,64,14,1,0,7,128,15,192,31,192,31, + 192,31,128,15,0,0,0,0,0,0,0,0,0,3,128,127, + 128,255,128,127,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,63,192,255,240,255,240,17,43,129,14,250,245,0, + 15,0,0,31,128,0,63,128,0,63,128,0,63,0,0,30, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,128, + 0,127,128,0,255,128,0,127,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,0,0,31,0,0,62,0,16,62, + 0,60,124,0,127,248,0,255,224,0,255,192,0,63,0,0, + 26,36,144,26,1,0,1,128,0,0,63,128,0,0,255,128, + 0,0,255,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,128, + 0,0,31,128,0,0,31,128,0,0,31,128,0,0,31,129, + 255,128,31,129,255,128,31,128,252,0,31,128,248,0,31,131, + 224,0,31,135,192,0,31,143,128,0,31,158,0,0,31,188, + 0,0,31,252,0,0,31,190,0,0,31,191,0,0,31,159, + 128,0,31,143,192,0,31,135,224,0,31,135,240,0,31,131, + 248,0,31,129,252,0,31,128,252,0,63,128,255,192,255,240, + 127,192,255,240,62,0,12,36,72,14,1,0,1,128,63,128, + 255,128,255,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,192, + 255,240,255,240,39,22,110,41,1,0,3,3,224,31,128,127, + 143,248,127,192,255,159,249,255,224,127,255,255,255,240,31,241, + 255,135,240,31,224,255,3,240,31,128,252,3,240,31,128,252, + 3,240,31,128,252,3,240,31,128,252,3,240,31,128,252,3, + 240,31,128,252,3,240,31,128,252,3,240,31,128,252,3,240, + 31,128,252,3,240,31,128,252,3,240,31,128,252,3,240,31, + 128,252,3,240,31,128,252,3,240,63,128,252,3,248,255,247, + 255,159,254,255,247,255,159,254,26,22,88,28,1,0,3,1, + 240,0,127,135,252,0,255,159,252,0,63,191,254,0,31,248, + 254,0,31,224,126,0,31,192,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,63,192,255,0,255,243, + 255,192,255,243,255,192,21,22,66,25,2,0,0,252,0,3, + 255,0,15,15,192,30,7,224,62,7,224,62,3,240,124,3, + 240,124,1,248,252,1,248,252,1,248,252,1,248,252,1,248, + 252,1,248,252,1,248,252,1,240,126,1,240,126,3,224,62, + 3,224,63,3,192,31,135,128,7,254,0,1,248,0,24,33, + 99,27,1,245,3,3,224,127,143,248,255,159,252,63,255,252, + 31,240,254,31,192,126,31,128,63,31,128,63,31,128,31,31, + 128,31,31,128,31,31,128,31,31,128,31,31,128,30,31,128, + 30,31,128,62,31,192,60,31,240,124,31,255,248,31,255,240, + 31,159,224,31,135,128,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,63,192, + 0,255,248,0,255,248,0,24,33,99,26,2,245,0,124,8, + 1,255,28,7,255,248,15,135,248,30,3,248,62,1,248,124, + 1,248,124,1,248,252,1,248,252,1,248,252,1,248,252,1, + 248,252,1,248,252,1,248,254,1,248,126,1,248,127,3,248, + 127,143,248,63,255,248,31,253,248,15,249,248,3,225,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,3,248,0,31,255,0,31,255, + 20,22,66,21,1,0,3,7,192,127,143,240,255,191,240,63, + 255,224,31,241,224,31,224,224,31,192,224,31,128,192,31,128, + 192,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 192,0,255,248,0,255,248,0,16,22,44,20,2,0,7,248, + 31,254,60,62,120,30,248,14,248,12,252,0,255,0,127,192, + 127,240,63,248,15,254,3,254,0,255,128,127,192,63,224,31, + 224,31,240,30,248,60,255,248,63,224,18,30,90,18,255,0, + 0,192,0,1,192,0,7,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,63,255,192,255,255,128,15,193, + 0,15,192,0,15,192,0,15,192,0,15,192,0,15,192,0, + 15,192,0,15,192,0,15,192,0,15,192,0,15,192,0,15, + 192,0,15,192,0,15,192,0,15,192,128,15,227,192,15,255, + 128,7,255,0,3,252,0,1,240,0,26,22,88,27,1,0, + 3,128,28,0,255,135,252,0,255,135,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,129,252,0,31,199,252,128,31,255,255,128,15,254,255,192, + 7,248,126,0,3,224,112,0,24,22,66,24,0,0,255,224, + 255,255,224,255,63,128,60,31,128,60,31,128,56,15,192,120, + 15,192,112,7,192,112,7,224,240,7,224,224,3,241,224,3, + 241,192,1,249,192,1,251,128,0,255,128,0,255,128,0,127, + 0,0,127,0,0,126,0,0,62,0,0,60,0,0,24,0, + 34,22,110,34,0,0,255,224,96,63,192,255,224,112,63,192, + 63,0,240,7,0,31,0,248,15,0,31,128,248,14,0,15, + 129,252,14,0,15,129,252,30,0,15,195,252,28,0,7,195, + 254,28,0,7,195,190,28,0,7,231,63,60,0,3,231,31, + 56,0,3,239,31,184,0,3,254,31,248,0,1,254,15,240, + 0,1,252,15,240,0,1,252,7,240,0,0,252,7,224,0, + 0,248,3,224,0,0,248,3,224,0,0,112,1,192,0,0, + 96,1,128,0,25,22,88,25,0,0,127,241,255,0,127,241, + 255,0,31,192,124,0,15,224,112,0,7,224,224,0,7,241, + 224,0,3,251,192,0,1,255,128,0,0,255,0,0,0,254, + 0,0,0,127,0,0,0,127,0,0,0,127,128,0,0,255, + 192,0,1,207,224,0,3,199,224,0,7,131,240,0,7,3, + 248,0,14,1,252,0,30,1,254,0,255,135,255,128,255,135, + 255,128,25,33,132,24,255,245,127,240,127,128,127,240,127,128, + 31,192,30,0,15,192,28,0,15,192,28,0,7,224,60,0, + 7,224,56,0,3,240,56,0,3,240,112,0,1,240,112,0, + 1,248,240,0,1,248,224,0,0,252,224,0,0,253,224,0, + 0,125,192,0,0,127,192,0,0,127,128,0,0,63,128,0, + 0,63,128,0,0,31,0,0,0,31,0,0,0,14,0,0, + 0,14,0,0,0,30,0,0,0,28,0,0,0,60,0,0, + 0,120,0,0,32,248,0,0,63,240,0,0,127,224,0,0, + 255,192,0,0,255,128,0,0,126,0,0,0,20,22,66,22, + 1,0,63,255,240,63,255,240,56,15,224,56,15,192,48,31, + 192,48,31,128,32,63,0,0,127,0,0,126,0,0,252,0, + 1,252,0,1,248,0,3,240,0,7,240,0,7,224,0,15, + 224,48,31,192,48,31,128,112,63,128,112,127,0,240,127,255, + 240,255,255,224,14,45,90,17,2,249,0,8,0,60,0,248, + 1,240,3,224,7,224,7,192,15,192,15,192,15,192,15,192, + 15,192,15,224,7,224,7,224,7,224,7,224,7,224,7,192, + 15,192,15,128,63,0,254,0,255,128,31,192,7,192,7,224, + 7,224,7,224,7,224,7,224,7,224,15,224,15,192,15,192, + 15,192,15,192,15,192,15,192,7,192,7,224,3,240,0,248, + 0,124,0,8,4,49,49,11,4,246,48,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,192,14,44,88,17,1, + 249,64,0,248,0,124,0,63,0,31,128,15,128,15,192,15, + 192,15,192,15,192,15,192,15,192,31,192,31,128,31,128,31, + 128,31,128,31,128,31,128,15,192,15,252,7,252,1,248,7, + 224,15,192,15,128,31,128,31,128,31,128,31,128,31,128,31, + 192,15,192,15,192,15,192,15,192,15,192,15,128,31,128,31, + 0,62,0,124,0,240,0,64,0,21,8,24,23,1,11,7, + 128,8,15,224,24,31,240,16,63,252,48,49,255,224,96,127, + 192,64,31,128,192,15,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=14 h=17 x= 2 y= 9 dx=14 dy= 0 ascent=15 len=30 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =10 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =15 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10[3670] U8G_SECTION(".progmem.u8g_font_gdr10") = { + 0,25,24,247,250,10,2,30,4,177,32,255,252,15,251,13, + 252,0,0,0,4,0,0,2,12,12,5,1,0,64,192,64, + 64,64,64,64,64,64,0,64,64,5,5,5,7,1,7,216, + 216,88,72,72,7,9,9,8,1,1,20,36,126,40,72,252, + 80,80,144,7,12,12,8,0,255,16,56,84,80,112,56,30, + 18,146,212,120,16,10,10,20,12,1,0,96,128,145,0,146, + 0,150,0,164,0,105,128,18,64,50,64,34,64,65,128,10, + 12,24,11,1,0,28,0,36,0,36,0,36,0,40,0,51, + 192,81,0,153,0,141,0,134,0,135,0,121,192,2,5,5, + 4,1,7,192,192,64,64,64,3,16,16,5,1,253,32,64, + 64,128,128,128,128,128,128,128,128,128,128,64,64,32,3,16, + 16,5,1,253,128,64,64,32,32,32,32,32,32,32,32,32, + 32,64,64,128,6,7,7,8,1,6,32,168,236,48,252,164, + 32,6,6,6,7,1,2,32,32,32,252,32,32,2,4,4, + 4,1,253,192,64,64,128,4,1,1,6,1,4,240,1,2, + 2,4,2,0,128,128,8,16,16,8,0,253,3,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,10,10,8, + 1,0,56,72,132,132,132,132,132,132,72,112,5,10,10,8, + 2,0,32,224,32,32,32,32,32,32,32,248,5,10,10,8, + 2,0,56,200,136,8,16,32,32,64,136,248,6,10,10,8, + 1,0,112,136,136,16,48,8,4,4,140,120,6,10,10,8, + 1,0,8,24,40,40,72,136,252,8,8,60,6,10,10,8, + 1,0,124,64,64,120,140,4,4,4,132,120,6,10,10,8, + 1,0,24,32,64,128,248,132,132,132,72,56,6,10,10,8, + 1,0,252,132,8,8,8,16,16,32,32,64,6,10,10,8, + 1,0,120,196,196,200,56,204,132,132,132,120,6,10,10,8, + 1,0,56,200,132,132,132,124,4,8,16,96,1,8,8,4, + 2,0,128,128,0,0,0,0,128,128,2,11,11,4,1,253, + 64,64,0,0,0,0,0,192,64,64,128,6,5,5,7,1, + 2,12,112,128,112,12,6,3,3,7,1,3,252,0,252,6, + 5,5,7,1,2,192,56,12,112,128,6,12,12,7,1,0, + 56,68,132,4,4,8,16,32,32,32,32,32,12,14,28,14, + 1,253,15,128,16,64,96,32,71,144,136,144,144,144,144,144, + 144,144,144,144,137,160,78,192,96,0,48,96,15,128,10,10, + 20,10,0,0,4,0,12,0,20,0,18,0,18,0,30,0, + 33,0,33,0,65,128,227,192,7,10,10,9,1,0,248,68, + 68,68,124,70,66,66,66,252,7,10,10,9,1,0,62,66, + 128,128,128,128,128,128,66,60,8,10,10,10,1,0,252,70, + 65,65,65,65,65,66,66,252,7,10,10,8,1,0,252,68, + 64,64,124,64,64,64,66,254,7,10,10,8,1,0,254,68, + 64,64,120,64,64,64,64,224,9,10,20,10,1,0,30,0, + 99,0,128,0,128,0,128,0,135,128,129,0,129,0,97,0, + 62,0,9,10,20,11,1,0,227,128,65,0,65,0,65,0, + 127,0,65,0,65,0,65,0,65,0,227,128,3,10,10,5, + 1,0,224,64,64,64,64,64,64,64,64,224,6,13,13,5, + 254,253,60,8,8,8,8,8,8,8,8,8,8,16,224,9, + 10,20,10,1,0,231,0,68,0,72,0,80,0,96,0,80, + 0,88,0,76,0,70,0,227,128,7,10,10,8,1,0,224, + 64,64,64,64,64,64,64,66,254,12,10,20,14,1,0,192, + 112,96,96,96,224,112,224,81,96,89,32,74,32,78,32,68, + 32,228,240,9,10,20,11,1,0,195,128,97,0,97,0,81, + 0,73,0,77,0,69,0,67,0,67,0,225,0,8,10,10, + 10,1,0,60,66,129,129,129,129,129,130,66,60,7,10,10, + 9,1,0,252,70,66,66,70,120,64,64,64,224,10,12,24, + 10,1,254,60,0,66,0,129,0,129,0,129,0,129,0,129, + 0,130,0,66,0,60,0,6,128,3,192,9,10,20,10,1, + 0,252,0,70,0,66,0,66,0,68,0,120,0,76,0,68, + 0,70,0,227,128,6,10,10,8,1,0,120,140,128,192,112, + 8,4,132,132,248,9,10,20,9,0,0,255,128,136,128,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,28,0,9, + 10,20,11,1,0,227,128,65,0,65,0,65,0,65,0,65, + 0,65,0,65,0,34,0,60,0,11,10,20,11,0,0,241, + 224,32,128,32,128,49,0,17,0,25,0,10,0,10,0,14, + 0,4,0,14,10,20,14,0,0,241,28,99,8,35,16,35, + 144,36,144,52,144,20,80,24,96,24,96,24,32,10,10,20, + 10,0,0,243,192,33,0,51,0,26,0,12,0,12,0,18, + 0,49,0,33,128,243,192,9,10,20,10,1,0,195,128,97, + 0,50,0,22,0,28,0,8,0,8,0,8,0,8,0,28, + 0,8,10,10,9,0,0,127,66,70,4,8,24,16,33,97, + 255,4,16,16,5,1,253,240,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,16,16,8,0,253,192,64,64, + 32,32,48,16,16,8,8,12,4,4,6,2,3,4,16,16, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,240,7,8,8,8,1,5,16,48,56,72,72,76,132, + 134,6,1,1,8,1,254,252,4,3,3,5,0,9,192,96, + 48,7,8,8,8,1,0,28,100,4,28,100,132,140,118,8, + 13,13,9,0,0,64,192,64,64,64,78,115,65,65,65,65, + 66,60,6,8,8,7,1,0,60,72,128,128,128,128,196,120, + 8,13,13,9,1,0,6,2,2,2,2,62,66,130,130,130, + 130,70,59,6,8,8,8,1,0,56,68,132,252,128,128,68, + 120,6,13,13,5,1,0,28,40,64,64,64,240,64,64,64, + 64,64,64,240,8,12,12,8,0,252,63,70,130,130,196,56, + 96,60,195,129,194,124,8,13,13,9,1,0,64,192,64,64, + 64,78,82,98,66,66,66,66,231,3,11,11,5,1,0,64, + 192,0,64,192,64,64,64,64,64,224,5,15,15,4,254,252, + 8,24,0,8,24,8,8,8,8,8,8,8,8,16,224,8, + 13,13,9,1,0,64,192,64,64,64,78,72,80,96,80,72, + 76,231,3,13,13,5,1,0,64,192,64,64,64,64,64,64, + 64,64,64,64,224,11,8,16,12,1,0,221,192,102,64,68, + 64,68,64,68,64,68,64,68,64,238,224,8,8,8,9,1, + 0,78,210,98,66,66,66,66,231,7,8,8,9,1,0,56, + 68,130,130,130,130,68,56,7,12,12,9,1,252,92,230,66, + 66,66,66,68,120,64,64,64,224,8,12,12,9,1,252,62, + 66,130,130,130,130,70,58,2,2,2,7,6,8,8,7,1, + 0,220,104,64,64,64,64,64,224,5,8,8,7,1,0,112, + 136,128,96,24,136,136,240,5,10,10,6,1,0,64,64,248, + 64,64,64,64,64,64,120,9,8,16,9,0,0,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,61,128,8,8,8, + 8,0,0,227,98,34,36,52,20,24,8,12,8,16,12,0, + 0,226,112,102,32,38,32,39,64,41,64,57,64,24,128,16, + 128,8,8,8,9,0,0,247,34,52,24,28,36,66,231,8, + 12,12,8,0,252,231,98,34,36,52,20,24,8,8,16,160, + 192,6,8,8,8,1,0,252,136,16,48,32,64,196,252,4, + 16,16,6,1,253,48,64,64,64,96,32,32,64,224,32,32, + 96,64,64,64,32,1,17,17,4,2,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,16,16,5, + 0,253,64,32,32,32,32,32,32,56,48,32,32,32,32,32, + 32,192,8,2,2,8,0,4,57,206,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,4,0, + 0,2,13,13,5,1,251,64,64,0,0,64,64,64,64,64, + 64,64,192,192,6,10,10,8,1,0,16,28,116,144,144,144, + 144,116,56,16,7,11,11,8,1,255,60,68,68,64,64,240, + 64,64,66,134,252,4,6,6,8,2,2,144,240,144,144,240, + 144,9,10,20,8,255,0,231,128,34,0,22,0,20,0,8, + 0,62,0,8,0,8,0,8,0,28,0,1,17,17,4,2, + 253,128,128,128,128,128,128,128,128,0,128,128,128,128,128,128, + 128,128,6,12,12,8,1,0,112,152,128,96,184,140,196,100, + 24,136,200,112,5,2,2,7,1,9,136,136,10,10,20,12, + 1,0,30,0,127,128,114,128,160,64,160,64,160,64,176,64, + 94,128,97,128,30,0,4,6,6,4,0,5,96,160,96,160, + 240,240,6,8,8,8,1,0,36,72,72,144,144,72,72,36, + 7,3,3,8,0,2,254,2,2,4,1,1,6,1,4,240, + 6,6,6,6,0,6,120,132,180,180,180,120,6,1,1,8, + 1,9,252,4,4,4,6,1,6,112,144,144,224,6,8,8, + 7,1,1,32,32,32,252,32,32,64,248,4,7,7,6,1, + 5,112,144,16,32,64,144,240,4,7,7,5,0,5,112,144, + 16,48,16,144,224,3,3,3,5,2,9,96,64,128,9,12, + 24,9,0,252,195,0,65,0,65,0,65,0,65,0,65,0, + 99,0,125,128,64,0,64,0,96,0,96,0,8,12,12,10, + 1,254,63,202,138,138,202,122,10,10,10,10,10,31,1,2, + 2,2,1,5,128,128,2,4,4,4,1,252,128,192,64,128, + 4,6,6,6,0,5,96,160,32,32,32,112,4,6,6,5, + 0,5,96,144,144,144,96,240,7,8,8,8,1,0,144,72, + 108,36,54,108,72,144,9,10,20,10,1,0,193,0,66,0, + 66,0,68,0,72,0,169,0,23,0,37,0,39,128,67,128, + 8,10,10,10,1,0,193,66,68,68,72,171,21,34,37,79, + 10,11,22,10,0,0,112,0,80,128,33,0,18,0,18,0, + 228,0,8,128,11,128,18,128,19,192,33,192,6,13,13,8, + 1,251,32,32,0,32,32,32,64,64,128,128,132,136,112,10, + 15,30,10,0,0,32,0,24,0,12,0,0,0,0,0,4, + 0,12,0,20,0,18,0,18,0,30,0,33,0,33,0,65, + 128,227,192,10,15,30,10,0,0,2,0,7,0,12,0,16, + 0,0,0,4,0,12,0,20,0,18,0,18,0,30,0,33, + 0,33,0,65,128,227,192,10,15,30,10,0,0,12,0,12, + 0,18,0,33,0,0,0,4,0,12,0,20,0,18,0,18, + 0,30,0,33,0,33,0,65,128,227,192,10,14,28,10,0, + 0,10,0,25,0,38,0,0,0,4,0,12,0,20,0,18, + 0,18,0,30,0,33,0,33,0,65,128,227,192,10,13,26, + 10,0,0,34,0,34,0,0,0,4,0,12,0,20,0,18, + 0,18,0,30,0,33,0,33,0,65,128,227,192,10,15,30, + 10,0,0,12,0,20,0,28,0,0,0,0,0,4,0,12, + 0,20,0,18,0,18,0,30,0,33,0,33,0,65,128,227, + 192,12,10,20,13,1,0,31,224,10,32,10,0,18,0,31, + 224,50,0,34,0,34,0,66,16,231,240,7,14,14,9,1, + 252,62,66,128,128,128,128,128,128,66,102,24,24,8,16,7, + 15,15,8,1,0,64,224,16,8,0,252,68,64,64,124,64, + 64,64,66,254,7,15,15,8,1,0,8,28,48,0,0,252, + 68,64,64,124,64,64,64,66,254,7,15,15,8,1,0,16, + 56,72,4,0,252,68,64,64,124,64,64,64,66,254,7,13, + 13,8,1,0,136,136,0,252,68,64,64,124,64,64,64,66, + 254,4,15,15,5,0,0,128,192,32,16,0,112,32,32,32, + 32,32,32,32,32,112,4,15,15,5,1,0,32,48,64,128, + 0,224,64,64,64,64,64,64,64,64,224,5,15,15,5,0, + 0,32,112,136,0,0,112,32,32,32,32,32,32,32,32,112, + 5,13,13,5,0,0,136,136,0,112,32,32,32,32,32,32, + 32,32,112,8,10,10,10,1,0,252,70,65,65,241,65,65, + 66,66,252,9,14,28,11,1,0,18,0,58,0,4,0,0, + 0,195,128,97,0,97,0,81,0,73,0,77,0,69,0,67, + 0,67,0,225,0,8,15,15,10,1,0,32,112,8,4,0, + 60,66,129,129,129,129,129,130,66,60,8,15,15,10,1,0, + 4,14,24,0,0,60,66,129,129,129,129,129,130,66,60,8, + 15,15,10,1,0,8,28,36,66,0,60,66,129,129,129,129, + 129,130,66,60,8,14,14,10,1,0,18,50,76,0,60,66, + 129,129,129,129,129,130,66,60,8,13,13,10,1,0,68,68, + 0,60,66,129,129,129,129,129,130,66,60,5,5,5,7,1, + 2,136,80,32,80,136,8,10,10,10,1,0,29,98,131,133, + 137,145,161,194,66,188,9,15,30,11,1,0,32,0,48,0, + 12,0,0,0,0,0,227,128,65,0,65,0,65,0,65,0, + 65,0,65,0,65,0,34,0,60,0,9,15,30,11,1,0, + 2,0,6,0,8,0,16,0,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,65,0,34,0,60,0,9,15, + 30,11,1,0,8,0,28,0,34,0,0,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 60,0,9,13,26,11,1,0,34,0,34,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,65,0,34,0, + 60,0,9,15,30,10,1,0,4,0,14,0,24,0,0,0, + 0,0,195,128,97,0,50,0,22,0,28,0,8,0,8,0, + 8,0,8,0,28,0,7,10,10,9,1,0,224,64,124,70, + 66,66,66,124,64,224,8,13,13,10,1,0,28,38,66,66, + 68,72,80,88,78,67,81,81,206,7,12,12,8,1,0,64, + 32,16,0,28,100,4,28,100,132,140,118,7,12,12,8,1, + 0,8,16,32,0,28,100,4,28,100,132,140,118,7,12,12, + 8,1,0,48,72,136,4,28,100,4,28,100,132,140,118,7, + 11,11,8,1,0,100,152,0,28,100,4,28,100,132,140,118, + 7,11,11,8,1,0,136,136,0,28,100,4,28,100,132,140, + 118,7,12,12,8,1,0,48,80,112,0,28,100,4,28,100, + 132,140,118,10,8,16,12,1,0,59,128,204,64,136,64,63, + 192,72,0,136,0,156,192,231,0,6,12,12,7,1,252,60, + 72,128,128,128,128,196,120,32,48,16,32,6,12,12,8,1, + 0,96,32,16,0,56,68,132,252,128,128,68,120,6,12,12, + 8,1,0,12,24,32,0,56,68,132,252,128,128,68,120,6, + 12,12,8,1,0,48,72,132,0,56,68,132,252,128,128,68, + 120,6,11,11,8,1,0,132,136,0,56,68,132,252,128,128, + 68,120,4,12,12,5,0,0,192,64,32,0,32,96,32,32, + 32,32,32,112,4,12,12,5,1,0,48,96,64,0,64,192, + 64,64,64,64,64,224,5,12,12,5,0,0,32,80,136,0, + 32,96,32,32,32,32,32,112,5,11,11,5,0,0,136,136, + 0,32,96,32,32,32,32,32,112,6,12,12,8,1,0,104, + 28,120,8,52,204,132,132,132,132,72,112,8,11,11,9,1, + 0,54,76,0,78,210,98,66,66,66,66,231,7,12,12,9, + 1,0,96,32,16,0,56,68,130,130,130,130,68,56,7,12, + 12,9,1,0,12,8,16,0,56,68,130,130,130,130,68,56, + 7,12,12,9,1,0,16,40,68,0,56,68,130,130,130,130, + 68,56,7,11,11,9,1,0,52,216,0,56,68,130,130,130, + 130,68,56,7,11,11,9,1,0,132,132,0,56,68,130,130, + 130,130,68,56,5,6,6,7,1,2,32,32,0,248,32,32, + 7,8,8,9,1,0,62,68,142,146,146,226,68,248,9,12, + 24,9,0,0,48,0,24,0,8,0,0,0,195,0,65,0, + 65,0,65,0,65,0,65,0,67,0,61,128,9,12,24,9, + 0,0,6,0,4,0,8,0,0,0,195,0,65,0,65,0, + 65,0,65,0,65,0,67,0,61,128,9,12,24,9,0,0, + 8,0,20,0,34,0,0,0,195,0,65,0,65,0,65,0, + 65,0,65,0,67,0,61,128,9,11,22,9,0,0,34,0, + 66,0,0,0,195,0,65,0,65,0,65,0,65,0,65,0, + 67,0,61,128,8,16,16,8,0,252,6,12,8,0,231,98, + 34,36,52,20,24,8,8,16,160,192,7,17,17,9,1,252, + 64,192,64,64,64,92,102,66,66,66,66,100,120,64,64,64, + 224,8,15,15,8,0,252,66,66,0,231,98,34,36,52,20, + 24,8,8,16,160,192}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 10 + Calculated Max Values w= 8 h=16 x= 2 y= 6 dx= 8 dy= 0 ascent=13 len=16 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =13 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10n[249] U8G_SECTION(".progmem.u8g_font_gdr10n") = { + 0,25,24,247,250,10,0,0,0,0,42,57,0,13,253,10, + 0,6,7,7,8,1,6,32,168,236,48,252,164,32,6,6, + 6,7,1,2,32,32,32,252,32,32,2,4,4,4,1,253, + 192,64,64,128,4,1,1,6,1,4,240,1,2,2,4,2, + 0,128,128,8,16,16,8,0,253,3,2,6,4,4,12,8, + 8,16,16,48,32,32,96,64,192,6,10,10,8,1,0,56, + 72,132,132,132,132,132,132,72,112,5,10,10,8,2,0,32, + 224,32,32,32,32,32,32,32,248,5,10,10,8,2,0,56, + 200,136,8,16,32,32,64,136,248,6,10,10,8,1,0,112, + 136,136,16,48,8,4,4,140,120,6,10,10,8,1,0,8, + 24,40,40,72,136,252,8,8,60,6,10,10,8,1,0,124, + 64,64,120,140,4,4,4,132,120,6,10,10,8,1,0,24, + 32,64,128,248,132,132,132,72,56,6,10,10,8,1,0,252, + 132,8,8,8,16,16,32,32,64,6,10,10,8,1,0,120, + 196,196,200,56,204,132,132,132,120,6,10,10,8,1,0,56, + 200,132,132,132,124,4,8,16,96}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--17-170-72-72-P-77-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=14 h=17 x= 2 y= 9 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=25 h=24 x=-9 y=-6 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =10 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr10r[1723] U8G_SECTION(".progmem.u8g_font_gdr10r") = { + 0,25,24,247,250,10,2,30,4,177,32,127,252,14,252,13, + 252,0,0,0,4,0,0,2,12,12,5,1,0,64,192,64, + 64,64,64,64,64,64,0,64,64,5,5,5,7,1,7,216, + 216,88,72,72,7,9,9,8,1,1,20,36,126,40,72,252, + 80,80,144,7,12,12,8,0,255,16,56,84,80,112,56,30, + 18,146,212,120,16,10,10,20,12,1,0,96,128,145,0,146, + 0,150,0,164,0,105,128,18,64,50,64,34,64,65,128,10, + 12,24,11,1,0,28,0,36,0,36,0,36,0,40,0,51, + 192,81,0,153,0,141,0,134,0,135,0,121,192,2,5,5, + 4,1,7,192,192,64,64,64,3,16,16,5,1,253,32,64, + 64,128,128,128,128,128,128,128,128,128,128,64,64,32,3,16, + 16,5,1,253,128,64,64,32,32,32,32,32,32,32,32,32, + 32,64,64,128,6,7,7,8,1,6,32,168,236,48,252,164, + 32,6,6,6,7,1,2,32,32,32,252,32,32,2,4,4, + 4,1,253,192,64,64,128,4,1,1,6,1,4,240,1,2, + 2,4,2,0,128,128,8,16,16,8,0,253,3,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,10,10,8, + 1,0,56,72,132,132,132,132,132,132,72,112,5,10,10,8, + 2,0,32,224,32,32,32,32,32,32,32,248,5,10,10,8, + 2,0,56,200,136,8,16,32,32,64,136,248,6,10,10,8, + 1,0,112,136,136,16,48,8,4,4,140,120,6,10,10,8, + 1,0,8,24,40,40,72,136,252,8,8,60,6,10,10,8, + 1,0,124,64,64,120,140,4,4,4,132,120,6,10,10,8, + 1,0,24,32,64,128,248,132,132,132,72,56,6,10,10,8, + 1,0,252,132,8,8,8,16,16,32,32,64,6,10,10,8, + 1,0,120,196,196,200,56,204,132,132,132,120,6,10,10,8, + 1,0,56,200,132,132,132,124,4,8,16,96,1,8,8,4, + 2,0,128,128,0,0,0,0,128,128,2,11,11,4,1,253, + 64,64,0,0,0,0,0,192,64,64,128,6,5,5,7,1, + 2,12,112,128,112,12,6,3,3,7,1,3,252,0,252,6, + 5,5,7,1,2,192,56,12,112,128,6,12,12,7,1,0, + 56,68,132,4,4,8,16,32,32,32,32,32,12,14,28,14, + 1,253,15,128,16,64,96,32,71,144,136,144,144,144,144,144, + 144,144,144,144,137,160,78,192,96,0,48,96,15,128,10,10, + 20,10,0,0,4,0,12,0,20,0,18,0,18,0,30,0, + 33,0,33,0,65,128,227,192,7,10,10,9,1,0,248,68, + 68,68,124,70,66,66,66,252,7,10,10,9,1,0,62,66, + 128,128,128,128,128,128,66,60,8,10,10,10,1,0,252,70, + 65,65,65,65,65,66,66,252,7,10,10,8,1,0,252,68, + 64,64,124,64,64,64,66,254,7,10,10,8,1,0,254,68, + 64,64,120,64,64,64,64,224,9,10,20,10,1,0,30,0, + 99,0,128,0,128,0,128,0,135,128,129,0,129,0,97,0, + 62,0,9,10,20,11,1,0,227,128,65,0,65,0,65,0, + 127,0,65,0,65,0,65,0,65,0,227,128,3,10,10,5, + 1,0,224,64,64,64,64,64,64,64,64,224,6,13,13,5, + 254,253,60,8,8,8,8,8,8,8,8,8,8,16,224,9, + 10,20,10,1,0,231,0,68,0,72,0,80,0,96,0,80, + 0,88,0,76,0,70,0,227,128,7,10,10,8,1,0,224, + 64,64,64,64,64,64,64,66,254,12,10,20,14,1,0,192, + 112,96,96,96,224,112,224,81,96,89,32,74,32,78,32,68, + 32,228,240,9,10,20,11,1,0,195,128,97,0,97,0,81, + 0,73,0,77,0,69,0,67,0,67,0,225,0,8,10,10, + 10,1,0,60,66,129,129,129,129,129,130,66,60,7,10,10, + 9,1,0,252,70,66,66,70,120,64,64,64,224,10,12,24, + 10,1,254,60,0,66,0,129,0,129,0,129,0,129,0,129, + 0,130,0,66,0,60,0,6,128,3,192,9,10,20,10,1, + 0,252,0,70,0,66,0,66,0,68,0,120,0,76,0,68, + 0,70,0,227,128,6,10,10,8,1,0,120,140,128,192,112, + 8,4,132,132,248,9,10,20,9,0,0,255,128,136,128,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,28,0,9, + 10,20,11,1,0,227,128,65,0,65,0,65,0,65,0,65, + 0,65,0,65,0,34,0,60,0,11,10,20,11,0,0,241, + 224,32,128,32,128,49,0,17,0,25,0,10,0,10,0,14, + 0,4,0,14,10,20,14,0,0,241,28,99,8,35,16,35, + 144,36,144,52,144,20,80,24,96,24,96,24,32,10,10,20, + 10,0,0,243,192,33,0,51,0,26,0,12,0,12,0,18, + 0,49,0,33,128,243,192,9,10,20,10,1,0,195,128,97, + 0,50,0,22,0,28,0,8,0,8,0,8,0,8,0,28, + 0,8,10,10,9,0,0,127,66,70,4,8,24,16,33,97, + 255,4,16,16,5,1,253,240,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,16,16,8,0,253,192,64,64, + 32,32,48,16,16,8,8,12,4,4,6,2,3,4,16,16, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,240,7,8,8,8,1,5,16,48,56,72,72,76,132, + 134,6,1,1,8,1,254,252,4,3,3,5,0,9,192,96, + 48,7,8,8,8,1,0,28,100,4,28,100,132,140,118,8, + 13,13,9,0,0,64,192,64,64,64,78,115,65,65,65,65, + 66,60,6,8,8,7,1,0,60,72,128,128,128,128,196,120, + 8,13,13,9,1,0,6,2,2,2,2,62,66,130,130,130, + 130,70,59,6,8,8,8,1,0,56,68,132,252,128,128,68, + 120,6,13,13,5,1,0,28,40,64,64,64,240,64,64,64, + 64,64,64,240,8,12,12,8,0,252,63,70,130,130,196,56, + 96,60,195,129,194,124,8,13,13,9,1,0,64,192,64,64, + 64,78,82,98,66,66,66,66,231,3,11,11,5,1,0,64, + 192,0,64,192,64,64,64,64,64,224,5,15,15,4,254,252, + 8,24,0,8,24,8,8,8,8,8,8,8,8,16,224,8, + 13,13,9,1,0,64,192,64,64,64,78,72,80,96,80,72, + 76,231,3,13,13,5,1,0,64,192,64,64,64,64,64,64, + 64,64,64,64,224,11,8,16,12,1,0,221,192,102,64,68, + 64,68,64,68,64,68,64,68,64,238,224,8,8,8,9,1, + 0,78,210,98,66,66,66,66,231,7,8,8,9,1,0,56, + 68,130,130,130,130,68,56,7,12,12,9,1,252,92,230,66, + 66,66,66,68,120,64,64,64,224,8,12,12,9,1,252,62, + 66,130,130,130,130,70,58,2,2,2,7,6,8,8,7,1, + 0,220,104,64,64,64,64,64,224,5,8,8,7,1,0,112, + 136,128,96,24,136,136,240,5,10,10,6,1,0,64,64,248, + 64,64,64,64,64,64,120,9,8,16,9,0,0,195,0,65, + 0,65,0,65,0,65,0,65,0,67,0,61,128,8,8,8, + 8,0,0,227,98,34,36,52,20,24,8,12,8,16,12,0, + 0,226,112,102,32,38,32,39,64,41,64,57,64,24,128,16, + 128,8,8,8,9,0,0,247,34,52,24,28,36,66,231,8, + 12,12,8,0,252,231,98,34,36,52,20,24,8,8,16,160, + 192,6,8,8,8,1,0,252,136,16,48,32,64,196,252,4, + 16,16,6,1,253,48,64,64,64,96,32,32,64,224,32,32, + 96,64,64,64,32,1,17,17,4,2,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,16,16,5, + 0,253,64,32,32,32,32,32,32,56,48,32,32,32,32,32, + 32,192,8,2,2,8,0,4,57,206,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y=10 dx=15 dy= 0 ascent=16 len=34 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11[3977] U8G_SECTION(".progmem.u8g_font_gdr11") = { + 0,26,25,247,250,11,2,61,5,21,32,255,252,16,251,14, + 252,0,0,0,4,0,0,2,13,13,5,1,0,64,64,64, + 64,64,64,64,64,64,64,0,192,128,5,6,6,8,1,7, + 200,200,72,72,72,72,8,10,10,8,1,1,18,20,20,127, + 36,40,254,72,80,144,7,14,14,8,1,254,16,16,126,148, + 144,240,56,28,20,148,148,248,16,16,11,11,22,13,1,0, + 96,192,161,128,145,0,146,0,166,0,101,192,10,32,18,32, + 50,32,34,32,65,192,11,13,26,12,1,0,28,0,34,0, + 34,0,34,0,36,0,56,0,49,224,216,128,156,128,142,128, + 135,0,135,128,124,224,2,6,6,5,1,7,192,192,64,64, + 64,64,3,17,17,6,1,253,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,64,64,32,3,17,17,6,1,253,128, + 64,64,32,32,32,32,32,32,32,32,32,32,32,64,64,128, + 6,8,8,8,1,6,48,16,164,120,120,164,16,48,7,6, + 6,7,0,2,16,16,16,254,16,16,2,5,5,4,1,253, + 64,192,64,64,128,5,1,1,6,1,4,248,2,2,2,4, + 1,0,192,128,8,17,17,8,0,253,1,2,2,6,4,4, + 12,8,8,16,16,48,32,32,96,64,192,6,11,11,8,1, + 0,48,72,132,132,132,132,132,132,132,72,48,6,11,11,8, + 1,0,16,240,16,16,16,16,16,16,16,16,124,6,11,11, + 8,1,0,28,100,68,4,8,8,16,32,68,68,252,6,11, + 11,7,0,0,56,68,68,4,24,12,4,4,4,140,120,7, + 11,11,8,0,0,4,12,12,20,36,36,68,254,4,4,30, + 6,11,11,8,1,0,124,64,64,64,120,132,4,4,4,132, + 120,6,11,11,8,1,0,12,48,64,192,184,196,132,132,132, + 72,56,7,11,11,8,1,0,254,132,4,8,8,8,16,16, + 32,32,96,7,11,11,9,1,0,120,196,196,196,120,60,194, + 130,130,130,124,6,11,11,8,1,0,56,200,132,132,132,132, + 124,4,8,16,224,2,8,8,4,1,0,192,128,0,0,0, + 0,192,128,2,11,11,4,1,253,192,128,0,0,0,0,64, + 192,64,64,128,6,6,6,8,1,2,4,56,224,192,56,12, + 6,4,4,8,1,3,252,0,0,252,6,6,6,8,1,2, + 192,112,12,28,112,128,6,13,13,8,1,0,56,68,132,132, + 4,8,16,32,32,32,0,48,32,13,15,30,15,1,253,7, + 192,24,96,32,16,64,16,135,136,136,136,144,136,144,136,144, + 136,144,144,137,144,78,224,96,16,48,32,15,192,11,11,22, + 11,0,0,4,0,12,0,14,0,18,0,18,0,19,0,31, + 0,33,0,33,128,32,128,241,224,8,11,11,10,1,0,252, + 66,66,68,126,67,65,65,65,67,254,8,11,11,10,1,0, + 62,66,128,128,128,128,128,128,128,67,60,9,11,22,11,1, + 0,252,0,67,0,65,0,64,128,64,128,64,128,64,128,64, + 128,65,0,67,0,252,0,7,11,11,9,1,0,254,66,64, + 64,124,64,64,64,66,66,254,7,11,11,9,1,0,254,66, + 64,64,124,64,64,64,64,64,240,10,11,22,11,1,0,15, + 0,49,128,64,0,128,0,128,0,128,0,131,192,128,128,64, + 128,96,128,31,0,10,11,22,12,1,0,225,192,64,128,64, + 128,64,128,64,128,127,128,64,128,64,128,64,128,64,128,225, + 192,3,11,11,5,1,0,224,64,64,64,64,64,64,64,64, + 64,224,6,14,14,6,254,253,60,8,8,8,8,8,8,8, + 8,8,8,8,144,224,9,11,22,10,1,0,231,128,70,0, + 76,0,72,0,80,0,112,0,88,0,72,0,68,0,70,0, + 227,128,7,11,11,9,1,0,224,64,64,64,64,64,64,64, + 66,66,254,13,11,22,15,1,0,224,56,96,96,96,96,80, + 160,80,160,88,160,73,32,77,48,70,48,70,48,228,120,10, + 11,22,12,1,0,193,192,96,128,112,128,80,128,72,128,76, + 128,70,128,66,128,65,128,65,128,224,128,9,11,22,11,1, + 0,30,0,99,0,129,0,128,128,128,128,128,128,128,128,128, + 128,65,0,98,0,60,0,7,11,11,9,1,0,252,66,66, + 66,66,92,96,64,64,64,240,10,14,28,11,1,253,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,6,0,3,64,1,192,9,11,22,10,1,0, + 252,0,70,0,66,0,66,0,68,0,72,0,120,0,76,0, + 70,0,66,0,227,128,7,11,11,9,1,0,60,198,128,128, + 112,28,6,2,130,196,248,9,11,22,10,0,0,255,128,136, + 128,136,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,28,0,10,11,22,12,1,0,225,192,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,33,0,30,0,11, + 11,22,12,0,0,240,224,32,64,32,128,48,128,16,128,25, + 0,9,0,9,0,14,0,6,0,4,0,15,11,22,15,0, + 0,241,30,33,8,33,136,34,136,50,136,50,200,20,80,20, + 112,20,48,24,48,8,32,11,11,22,11,0,0,243,192,32, + 128,49,0,26,0,14,0,4,0,14,0,19,0,49,128,32, + 192,241,224,10,11,22,11,0,0,225,192,48,128,17,0,25, + 0,10,0,14,0,4,0,4,0,4,0,4,0,14,0,8, + 11,11,9,1,0,255,134,132,12,24,16,48,32,65,193,255, + 4,17,17,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,17,17,8,0,253,192,64,96, + 32,32,48,16,16,8,8,12,4,4,6,2,2,1,4,17, + 17,5,0,253,240,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,48,56,40,76, + 76,68,134,130,7,1,1,8,1,254,254,4,4,4,6,0, + 9,192,96,32,16,7,8,8,8,1,0,60,68,132,28,100, + 132,140,118,8,14,14,9,0,0,64,192,64,64,64,64,78, + 115,65,65,65,65,66,60,6,8,8,8,1,0,60,68,128, + 128,128,128,196,120,7,14,14,9,1,0,12,4,4,4,4, + 4,60,196,132,132,132,132,76,118,6,8,8,8,1,0,56, + 68,132,252,128,128,68,120,6,14,14,6,1,0,28,40,64, + 64,64,64,248,64,64,64,64,64,64,240,9,12,24,8,0, + 252,61,128,194,0,130,0,194,0,124,0,32,0,112,0,63, + 0,193,0,129,0,130,0,124,0,8,14,14,10,1,0,64, + 192,64,64,64,64,78,114,98,66,66,66,66,231,3,12,12, + 5,1,0,192,192,0,0,64,192,64,64,64,64,64,224,5, + 16,16,5,254,252,24,24,0,0,8,24,8,8,8,8,8, + 8,8,8,16,224,8,14,14,9,1,0,64,192,64,64,64, + 64,79,72,80,112,80,72,68,231,3,14,14,5,1,0,64, + 192,64,64,64,64,64,64,64,64,64,64,64,224,13,8,16, + 15,1,0,206,112,115,144,98,16,66,16,66,16,66,16,66, + 16,231,56,8,8,8,10,1,0,78,210,98,66,66,66,66, + 231,7,8,8,9,1,0,56,196,130,130,130,130,68,56,8, + 12,12,10,1,252,206,115,65,65,65,65,98,92,64,64,64, + 224,8,12,12,9,1,252,62,66,130,130,130,130,70,58,2, + 2,2,15,6,8,8,7,1,0,220,100,64,64,64,64,64, + 224,5,8,8,7,1,0,112,136,128,96,24,136,136,240,5, + 11,11,6,1,0,64,64,64,248,64,64,64,64,64,64,120, + 8,8,8,10,1,0,198,66,66,66,66,66,70,59,9,8, + 16,9,0,0,243,128,98,0,34,0,50,0,20,0,20,0, + 28,0,8,0,13,8,16,13,0,0,242,56,98,32,39,32, + 37,32,53,160,24,192,24,192,16,192,9,8,16,9,0,0, + 247,128,34,0,20,0,24,0,28,0,38,0,35,0,247,128, + 9,12,24,9,0,252,243,128,97,0,34,0,50,0,20,0, + 20,0,28,0,8,0,8,0,16,0,176,0,224,0,6,8, + 8,8,1,0,252,136,24,16,32,64,196,252,5,17,17,6, + 1,253,24,32,32,32,32,32,32,32,192,32,32,32,32,32, + 32,32,24,1,19,19,4,2,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,17,17,6, + 0,253,64,160,32,32,32,32,32,32,24,32,32,32,32,32, + 32,64,192,8,2,2,9,0,4,57,206,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,4, + 0,0,2,13,13,5,1,251,64,192,0,64,64,64,64,64, + 64,64,64,64,64,7,11,11,8,1,0,16,24,118,144,144, + 144,144,212,126,16,16,7,11,11,8,1,0,60,68,68,64, + 64,240,64,64,66,130,254,6,6,6,8,1,2,248,76,72, + 72,120,132,9,11,22,8,0,0,231,128,98,0,50,0,20, + 0,28,0,8,0,127,0,8,0,8,0,8,0,28,0,1, + 19,19,4,2,252,128,128,128,128,128,128,128,128,0,0,0, + 128,128,128,128,128,128,128,128,7,13,13,9,1,0,112,152, + 128,224,248,142,130,66,60,12,132,196,120,5,2,2,7,1, + 10,136,136,11,11,22,13,1,0,31,0,32,128,94,64,162, + 32,160,32,160,32,160,32,177,32,94,64,32,128,31,0,5, + 6,6,5,0,5,48,80,112,144,248,240,7,8,8,9,1, + 0,38,36,72,152,152,72,36,38,7,3,3,8,1,2,254, + 2,2,5,1,1,6,1,4,248,6,7,7,6,0,6,120, + 72,188,188,180,104,120,6,1,1,9,1,10,252,4,4,4, + 6,1,7,112,144,144,224,7,8,8,7,0,1,16,16,254, + 16,16,16,0,126,4,7,7,6,1,5,112,144,16,32,64, + 144,240,5,7,7,6,0,5,56,72,8,24,8,136,112,3, + 4,4,6,2,9,32,96,64,128,8,12,12,10,1,252,198, + 66,66,66,66,66,102,123,64,64,64,96,8,13,13,10,1, + 254,63,202,138,138,138,202,122,10,10,10,10,10,31,1,2, + 2,3,1,5,128,128,2,4,4,4,1,252,192,64,192,128, + 4,7,7,6,1,5,32,224,32,32,32,32,240,4,6,6, + 5,0,5,96,144,144,144,96,240,7,8,8,9,1,0,144, + 72,100,54,54,100,72,144,10,11,22,11,1,0,192,128,65, + 0,65,0,66,0,70,0,164,0,8,128,27,128,18,128,35, + 192,101,192,9,11,22,11,1,0,193,0,65,0,66,0,68, + 0,68,0,168,0,11,128,20,128,33,0,34,128,71,128,10, + 11,22,10,0,0,96,128,144,128,33,0,17,0,18,0,228, + 0,4,128,11,128,18,128,19,192,37,192,6,13,13,8,1, + 251,16,48,0,16,16,16,32,64,128,132,132,136,112,11,15, + 30,11,0,0,16,0,56,0,4,0,2,0,4,0,12,0, + 14,0,18,0,18,0,19,0,31,0,33,0,33,128,32,128, + 241,224,11,15,30,11,0,0,1,0,7,0,12,0,0,0, + 4,0,12,0,14,0,18,0,18,0,19,0,31,0,33,0, + 33,128,32,128,241,224,11,15,30,11,0,0,4,0,14,0, + 17,0,32,0,4,0,12,0,14,0,18,0,18,0,19,0, + 31,0,33,0,33,128,32,128,241,224,11,15,30,11,0,0, + 9,0,29,0,34,0,0,0,4,0,12,0,14,0,18,0, + 18,0,19,0,31,0,33,0,33,128,32,128,241,224,11,14, + 28,11,0,0,33,0,33,0,0,0,4,0,12,0,14,0, + 18,0,18,0,19,0,31,0,33,0,33,128,32,128,241,224, + 11,16,32,11,0,0,4,0,10,0,18,0,12,0,0,0, + 4,0,12,0,14,0,18,0,18,0,19,0,31,0,33,0, + 33,128,32,128,241,224,13,11,22,14,0,0,15,248,5,8, + 5,0,9,0,15,240,17,0,17,0,17,0,33,8,33,8, + 243,248,9,15,30,10,1,252,62,0,66,0,128,0,128,0, + 128,0,128,0,128,0,128,0,192,0,97,128,62,0,8,0, + 12,0,4,0,8,0,7,15,15,9,1,0,64,224,24,0, + 254,66,64,64,124,64,64,64,66,66,254,7,15,15,9,1, + 0,4,12,48,0,254,66,64,64,124,64,64,64,66,66,254, + 7,15,15,9,1,0,16,40,68,0,254,66,64,64,124,64, + 64,64,66,66,254,7,14,14,9,1,0,68,68,0,254,66, + 64,64,124,64,64,64,66,66,254,4,15,15,5,0,0,128, + 192,48,0,112,32,32,32,32,32,32,32,32,32,112,5,15, + 15,5,1,0,16,56,192,0,224,64,64,64,64,64,64,64, + 64,64,224,5,15,15,5,0,0,32,80,136,0,112,32,32, + 32,32,32,32,32,32,32,112,5,14,14,5,0,0,136,136, + 0,112,32,32,32,32,32,32,32,32,32,112,9,11,22,11, + 1,0,252,0,67,0,65,0,64,128,64,128,240,128,64,128, + 64,128,65,0,67,0,252,0,10,15,30,12,1,0,25,0, + 57,0,38,0,0,0,193,192,96,128,112,128,80,128,72,128, + 76,128,70,128,66,128,65,128,65,128,224,128,9,15,30,11, + 1,0,32,0,112,0,12,0,0,0,30,0,99,0,129,0, + 128,128,128,128,128,128,128,128,128,128,65,0,98,0,60,0, + 9,15,30,11,1,0,2,0,6,0,24,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,9,15,30,11,1,0,8,0,20,0,34,0, + 0,0,30,0,99,0,129,0,128,128,128,128,128,128,128,128, + 128,128,65,0,98,0,60,0,9,15,30,11,1,0,18,0, + 58,0,68,0,0,0,30,0,99,0,129,0,128,128,128,128, + 128,128,128,128,128,128,65,0,98,0,60,0,9,14,28,11, + 1,0,34,0,34,0,0,0,30,0,99,0,129,0,128,128, + 128,128,128,128,128,128,128,128,65,0,98,0,60,0,6,6, + 6,7,1,2,140,88,48,48,88,140,9,11,22,11,1,0, + 30,128,35,0,67,0,134,128,132,128,136,128,144,128,176,128, + 97,0,98,0,188,0,10,15,30,12,1,0,32,0,24,0, + 4,0,2,0,225,192,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,15,30,12,1,0, + 2,0,7,0,8,0,16,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,10,15, + 30,12,1,0,12,0,30,0,34,0,1,0,225,192,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,33,0, + 30,0,10,14,28,12,1,0,34,0,34,0,0,0,225,192, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 33,0,30,0,10,15,30,11,0,0,1,0,7,0,12,0, + 0,0,225,192,48,128,17,0,25,0,10,0,14,0,4,0, + 4,0,4,0,4,0,14,0,7,11,11,9,1,0,240,64, + 124,70,66,66,66,68,124,64,240,8,14,14,10,1,0,28, + 38,66,66,66,76,80,80,76,71,65,81,81,222,7,13,13, + 8,1,0,64,96,48,16,0,60,68,132,28,100,132,140,118, + 7,13,13,8,1,0,12,8,16,32,0,60,68,132,28,100, + 132,140,118,7,13,13,8,1,0,48,56,72,132,0,60,68, + 132,28,100,132,140,118,7,12,12,8,1,0,116,152,0,0, + 60,68,132,28,100,132,140,118,7,12,12,8,1,0,132,132, + 0,0,60,68,132,28,100,132,140,118,7,13,13,8,1,0, + 48,72,72,48,0,60,68,132,28,100,132,140,118,11,8,16, + 12,1,0,29,192,102,32,68,32,159,224,100,0,132,0,142, + 32,115,192,7,12,12,8,1,252,60,68,128,128,128,128,194, + 124,16,24,8,16,6,13,13,8,1,0,96,32,16,16,0, + 56,68,132,252,128,128,68,120,6,13,13,8,1,0,12,8, + 16,16,0,56,68,132,252,128,128,68,120,6,13,13,8,1, + 0,16,56,108,68,0,56,68,132,252,128,128,68,120,6,12, + 12,8,1,0,68,68,0,0,56,68,132,252,128,128,68,120, + 4,13,13,5,0,0,192,64,32,32,16,32,96,32,32,32, + 32,32,112,4,13,13,5,1,0,48,32,64,64,0,64,192, + 64,64,64,64,64,224,5,13,13,5,0,0,32,112,216,136, + 0,32,96,32,32,32,32,32,112,5,12,12,5,0,0,136, + 136,0,0,32,96,32,32,32,32,32,112,7,13,13,9,1, + 0,96,30,56,68,4,62,198,130,130,130,132,68,56,8,12, + 12,10,1,0,50,76,0,0,78,210,98,66,66,66,66,231, + 7,13,13,9,1,0,96,32,16,8,0,56,196,130,130,130, + 130,68,56,7,13,13,9,1,0,4,12,24,16,0,56,196, + 130,130,130,130,68,56,7,13,13,9,1,0,16,56,36,68, + 0,56,196,130,130,130,130,68,56,7,12,12,9,1,0,50, + 92,0,0,56,196,130,130,130,130,68,56,7,12,12,9,1, + 0,68,68,0,0,56,196,130,130,130,130,68,56,6,6,6, + 7,1,2,32,32,0,252,32,32,7,9,9,9,1,0,2, + 62,68,138,146,162,226,68,248,8,13,13,10,1,0,96,48, + 16,8,0,198,66,66,66,66,66,70,59,8,13,13,10,1, + 0,4,12,8,16,0,198,66,66,66,66,66,70,59,8,13, + 13,10,1,0,24,56,36,66,0,198,66,66,66,66,66,70, + 59,8,12,12,10,1,0,68,68,0,0,198,66,66,66,66, + 66,70,59,9,17,34,9,0,252,2,0,4,0,12,0,8, + 0,0,0,243,128,97,0,34,0,50,0,20,0,20,0,28, + 0,8,0,8,0,16,0,176,0,224,0,8,18,18,10,1, + 252,64,192,64,64,64,64,78,115,65,65,65,65,98,124,64, + 64,64,240,9,16,32,9,0,252,34,0,34,0,0,0,0, + 0,243,128,97,0,34,0,50,0,20,0,20,0,28,0,8, + 0,8,0,16,0,176,0,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 11 + Calculated Max Values w= 8 h=17 x= 1 y= 6 dx= 9 dy= 0 ascent=14 len=17 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11n[262] U8G_SECTION(".progmem.u8g_font_gdr11n") = { + 0,26,25,247,250,11,0,0,0,0,42,57,0,14,253,11, + 0,6,8,8,8,1,6,48,16,164,120,120,164,16,48,7, + 6,6,7,0,2,16,16,16,254,16,16,2,5,5,4,1, + 253,64,192,64,64,128,5,1,1,6,1,4,248,2,2,2, + 4,1,0,192,128,8,17,17,8,0,253,1,2,2,6,4, + 4,12,8,8,16,16,48,32,32,96,64,192,6,11,11,8, + 1,0,48,72,132,132,132,132,132,132,132,72,48,6,11,11, + 8,1,0,16,240,16,16,16,16,16,16,16,16,124,6,11, + 11,8,1,0,28,100,68,4,8,8,16,32,68,68,252,6, + 11,11,7,0,0,56,68,68,4,24,12,4,4,4,140,120, + 7,11,11,8,0,0,4,12,12,20,36,36,68,254,4,4, + 30,6,11,11,8,1,0,124,64,64,64,120,132,4,4,4, + 132,120,6,11,11,8,1,0,12,48,64,192,184,196,132,132, + 132,72,56,7,11,11,8,1,0,254,132,4,8,8,8,16, + 16,32,32,96,7,11,11,9,1,0,120,196,196,196,120,60, + 194,130,130,130,124,6,11,11,8,1,0,56,200,132,132,132, + 132,124,4,8,16,224}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--18-180-72-72-P-81-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=19 x= 2 y= 9 dx=15 dy= 0 ascent=15 len=30 + Font Bounding box w=26 h=25 x=-9 y=-6 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr11r[1868] U8G_SECTION(".progmem.u8g_font_gdr11r") = { + 0,26,25,247,250,11,2,61,5,21,32,127,252,15,252,14, + 252,0,0,0,4,0,0,2,13,13,5,1,0,64,64,64, + 64,64,64,64,64,64,64,0,192,128,5,6,6,8,1,7, + 200,200,72,72,72,72,8,10,10,8,1,1,18,20,20,127, + 36,40,254,72,80,144,7,14,14,8,1,254,16,16,126,148, + 144,240,56,28,20,148,148,248,16,16,11,11,22,13,1,0, + 96,192,161,128,145,0,146,0,166,0,101,192,10,32,18,32, + 50,32,34,32,65,192,11,13,26,12,1,0,28,0,34,0, + 34,0,34,0,36,0,56,0,49,224,216,128,156,128,142,128, + 135,0,135,128,124,224,2,6,6,5,1,7,192,192,64,64, + 64,64,3,17,17,6,1,253,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,64,64,32,3,17,17,6,1,253,128, + 64,64,32,32,32,32,32,32,32,32,32,32,32,64,64,128, + 6,8,8,8,1,6,48,16,164,120,120,164,16,48,7,6, + 6,7,0,2,16,16,16,254,16,16,2,5,5,4,1,253, + 64,192,64,64,128,5,1,1,6,1,4,248,2,2,2,4, + 1,0,192,128,8,17,17,8,0,253,1,2,2,6,4,4, + 12,8,8,16,16,48,32,32,96,64,192,6,11,11,8,1, + 0,48,72,132,132,132,132,132,132,132,72,48,6,11,11,8, + 1,0,16,240,16,16,16,16,16,16,16,16,124,6,11,11, + 8,1,0,28,100,68,4,8,8,16,32,68,68,252,6,11, + 11,7,0,0,56,68,68,4,24,12,4,4,4,140,120,7, + 11,11,8,0,0,4,12,12,20,36,36,68,254,4,4,30, + 6,11,11,8,1,0,124,64,64,64,120,132,4,4,4,132, + 120,6,11,11,8,1,0,12,48,64,192,184,196,132,132,132, + 72,56,7,11,11,8,1,0,254,132,4,8,8,8,16,16, + 32,32,96,7,11,11,9,1,0,120,196,196,196,120,60,194, + 130,130,130,124,6,11,11,8,1,0,56,200,132,132,132,132, + 124,4,8,16,224,2,8,8,4,1,0,192,128,0,0,0, + 0,192,128,2,11,11,4,1,253,192,128,0,0,0,0,64, + 192,64,64,128,6,6,6,8,1,2,4,56,224,192,56,12, + 6,4,4,8,1,3,252,0,0,252,6,6,6,8,1,2, + 192,112,12,28,112,128,6,13,13,8,1,0,56,68,132,132, + 4,8,16,32,32,32,0,48,32,13,15,30,15,1,253,7, + 192,24,96,32,16,64,16,135,136,136,136,144,136,144,136,144, + 136,144,144,137,144,78,224,96,16,48,32,15,192,11,11,22, + 11,0,0,4,0,12,0,14,0,18,0,18,0,19,0,31, + 0,33,0,33,128,32,128,241,224,8,11,11,10,1,0,252, + 66,66,68,126,67,65,65,65,67,254,8,11,11,10,1,0, + 62,66,128,128,128,128,128,128,128,67,60,9,11,22,11,1, + 0,252,0,67,0,65,0,64,128,64,128,64,128,64,128,64, + 128,65,0,67,0,252,0,7,11,11,9,1,0,254,66,64, + 64,124,64,64,64,66,66,254,7,11,11,9,1,0,254,66, + 64,64,124,64,64,64,64,64,240,10,11,22,11,1,0,15, + 0,49,128,64,0,128,0,128,0,128,0,131,192,128,128,64, + 128,96,128,31,0,10,11,22,12,1,0,225,192,64,128,64, + 128,64,128,64,128,127,128,64,128,64,128,64,128,64,128,225, + 192,3,11,11,5,1,0,224,64,64,64,64,64,64,64,64, + 64,224,6,14,14,6,254,253,60,8,8,8,8,8,8,8, + 8,8,8,8,144,224,9,11,22,10,1,0,231,128,70,0, + 76,0,72,0,80,0,112,0,88,0,72,0,68,0,70,0, + 227,128,7,11,11,9,1,0,224,64,64,64,64,64,64,64, + 66,66,254,13,11,22,15,1,0,224,56,96,96,96,96,80, + 160,80,160,88,160,73,32,77,48,70,48,70,48,228,120,10, + 11,22,12,1,0,193,192,96,128,112,128,80,128,72,128,76, + 128,70,128,66,128,65,128,65,128,224,128,9,11,22,11,1, + 0,30,0,99,0,129,0,128,128,128,128,128,128,128,128,128, + 128,65,0,98,0,60,0,7,11,11,9,1,0,252,66,66, + 66,66,92,96,64,64,64,240,10,14,28,11,1,253,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,65,0, + 98,0,60,0,6,0,3,64,1,192,9,11,22,10,1,0, + 252,0,70,0,66,0,66,0,68,0,72,0,120,0,76,0, + 70,0,66,0,227,128,7,11,11,9,1,0,60,198,128,128, + 112,28,6,2,130,196,248,9,11,22,10,0,0,255,128,136, + 128,136,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,28,0,10,11,22,12,1,0,225,192,64,128,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,33,0,30,0,11, + 11,22,12,0,0,240,224,32,64,32,128,48,128,16,128,25, + 0,9,0,9,0,14,0,6,0,4,0,15,11,22,15,0, + 0,241,30,33,8,33,136,34,136,50,136,50,200,20,80,20, + 112,20,48,24,48,8,32,11,11,22,11,0,0,243,192,32, + 128,49,0,26,0,14,0,4,0,14,0,19,0,49,128,32, + 192,241,224,10,11,22,11,0,0,225,192,48,128,17,0,25, + 0,10,0,14,0,4,0,4,0,4,0,4,0,14,0,8, + 11,11,9,1,0,255,134,132,12,24,16,48,32,65,193,255, + 4,17,17,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,240,8,17,17,8,0,253,192,64,96, + 32,32,48,16,16,8,8,12,4,4,6,2,2,1,4,17, + 17,5,0,253,240,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,48,56,40,76, + 76,68,134,130,7,1,1,8,1,254,254,4,4,4,6,0, + 9,192,96,32,16,7,8,8,8,1,0,60,68,132,28,100, + 132,140,118,8,14,14,9,0,0,64,192,64,64,64,64,78, + 115,65,65,65,65,66,60,6,8,8,8,1,0,60,68,128, + 128,128,128,196,120,7,14,14,9,1,0,12,4,4,4,4, + 4,60,196,132,132,132,132,76,118,6,8,8,8,1,0,56, + 68,132,252,128,128,68,120,6,14,14,6,1,0,28,40,64, + 64,64,64,248,64,64,64,64,64,64,240,9,12,24,8,0, + 252,61,128,194,0,130,0,194,0,124,0,32,0,112,0,63, + 0,193,0,129,0,130,0,124,0,8,14,14,10,1,0,64, + 192,64,64,64,64,78,114,98,66,66,66,66,231,3,12,12, + 5,1,0,192,192,0,0,64,192,64,64,64,64,64,224,5, + 16,16,5,254,252,24,24,0,0,8,24,8,8,8,8,8, + 8,8,8,16,224,8,14,14,9,1,0,64,192,64,64,64, + 64,79,72,80,112,80,72,68,231,3,14,14,5,1,0,64, + 192,64,64,64,64,64,64,64,64,64,64,64,224,13,8,16, + 15,1,0,206,112,115,144,98,16,66,16,66,16,66,16,66, + 16,231,56,8,8,8,10,1,0,78,210,98,66,66,66,66, + 231,7,8,8,9,1,0,56,196,130,130,130,130,68,56,8, + 12,12,10,1,252,206,115,65,65,65,65,98,92,64,64,64, + 224,8,12,12,9,1,252,62,66,130,130,130,130,70,58,2, + 2,2,15,6,8,8,7,1,0,220,100,64,64,64,64,64, + 224,5,8,8,7,1,0,112,136,128,96,24,136,136,240,5, + 11,11,6,1,0,64,64,64,248,64,64,64,64,64,64,120, + 8,8,8,10,1,0,198,66,66,66,66,66,70,59,9,8, + 16,9,0,0,243,128,98,0,34,0,50,0,20,0,20,0, + 28,0,8,0,13,8,16,13,0,0,242,56,98,32,39,32, + 37,32,53,160,24,192,24,192,16,192,9,8,16,9,0,0, + 247,128,34,0,20,0,24,0,28,0,38,0,35,0,247,128, + 9,12,24,9,0,252,243,128,97,0,34,0,50,0,20,0, + 20,0,28,0,8,0,8,0,16,0,176,0,224,0,6,8, + 8,8,1,0,252,136,24,16,32,64,196,252,5,17,17,6, + 1,253,24,32,32,32,32,32,32,32,192,32,32,32,32,32, + 32,32,24,1,19,19,4,2,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,5,17,17,6, + 0,253,64,160,32,32,32,32,32,32,24,32,32,32,32,32, + 32,64,192,8,2,2,9,0,4,57,206,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=11 dx=16 dy= 0 ascent=17 len=36 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =17 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12[4200] U8G_SECTION(".progmem.u8g_font_gdr12") = { + 0,28,28,246,249,12,2,80,5,85,32,255,252,17,251,15, + 252,0,0,0,4,0,0,2,15,15,5,2,255,128,128,128, + 128,128,128,128,128,128,128,0,0,192,192,128,6,6,6,8, + 1,8,204,76,72,72,72,72,8,11,11,9,1,1,26,18, + 18,127,36,36,36,254,72,72,80,7,15,15,9,1,254,16, + 16,126,148,144,208,112,28,22,18,146,146,252,16,16,11,11, + 22,13,1,0,112,64,144,128,137,128,139,0,146,0,117,192, + 10,32,26,32,18,32,34,32,65,192,11,13,26,12,1,0, + 28,0,34,0,34,0,34,0,36,0,56,0,49,224,216,128, + 140,128,140,128,135,0,199,128,60,224,2,6,6,5,1,8, + 192,64,64,64,64,64,4,18,18,6,1,253,48,96,64,64, + 128,128,128,128,128,128,128,128,128,128,192,64,96,48,4,18, + 18,6,1,253,192,96,32,48,16,16,16,16,16,16,16,16, + 16,16,32,32,96,128,7,7,7,8,1,7,16,148,222,48, + 252,146,16,7,7,7,8,0,2,16,16,16,254,16,16,16, + 2,5,5,4,1,253,64,192,64,64,128,5,1,1,6,1, + 4,248,2,3,3,4,1,255,192,192,128,8,18,18,9,0, + 253,1,1,3,2,6,4,4,12,8,8,24,16,48,32,32, + 96,64,192,7,11,11,9,1,0,56,68,130,130,130,130,130, + 130,132,68,56,6,12,12,9,1,0,16,112,144,16,16,16, + 16,16,16,16,16,252,6,12,12,8,1,0,60,68,196,4, + 4,8,16,16,32,68,132,252,7,12,12,8,0,0,28,38, + 98,2,4,28,2,2,2,2,134,124,7,12,12,9,1,0, + 4,12,12,20,20,36,68,68,254,4,4,30,6,11,11,9, + 2,0,124,64,64,64,120,132,4,4,4,132,120,7,12,12, + 9,1,0,12,48,64,64,128,252,198,130,130,130,68,56,7, + 11,11,9,1,0,254,130,4,4,8,8,24,16,48,32,96, + 7,12,12,9,1,0,120,196,196,196,232,60,78,130,130,130, + 194,124,7,11,11,9,1,0,56,68,130,130,130,198,122,2, + 4,8,112,2,10,10,4,1,255,128,192,128,0,0,0,0, + 192,192,128,2,12,12,4,1,253,128,192,128,0,0,0,0, + 64,192,64,64,128,7,6,6,8,1,2,6,28,224,192,56, + 6,7,4,4,8,1,3,254,0,0,254,7,6,6,8,1, + 2,192,112,14,28,112,128,6,15,15,8,1,255,56,68,132, + 132,4,8,16,16,32,32,32,0,48,48,32,14,15,30,16, + 1,253,7,224,24,48,32,8,71,200,136,68,144,68,144,68, + 144,68,144,68,144,72,136,200,71,112,32,8,24,48,15,192, + 11,12,24,11,0,0,4,0,6,0,14,0,10,0,11,0, + 17,0,17,0,31,128,33,128,32,128,32,192,241,224,8,12, + 12,10,1,0,252,66,66,66,68,126,67,65,65,65,67,254, + 8,12,12,10,1,0,30,99,128,128,128,128,128,128,128,192, + 99,60,9,12,24,11,1,0,252,0,67,0,65,0,64,128, + 64,128,64,128,64,128,64,128,64,128,65,0,66,0,252,0, + 8,12,12,9,1,0,254,66,64,64,64,124,72,64,64,66, + 67,254,7,12,12,9,1,0,254,66,64,64,64,124,72,64, + 64,64,64,240,10,12,24,11,1,0,15,0,49,128,64,0, + 128,0,128,0,128,0,131,192,128,128,128,128,64,128,96,128, + 31,0,10,12,24,12,1,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,64,128,225,192, + 3,12,12,6,1,0,224,64,64,64,64,64,64,64,64,64, + 64,224,6,15,15,6,255,253,60,8,8,8,8,8,8,8, + 8,8,8,8,8,144,224,10,12,24,11,1,0,231,128,66, + 0,68,0,72,0,80,0,96,0,80,0,88,0,76,0,70, + 0,67,0,225,192,7,12,12,9,1,0,224,64,64,64,64, + 64,64,64,64,66,66,254,14,12,24,15,1,0,224,56,96, + 48,112,112,80,80,80,80,88,144,72,144,77,16,69,16,71, + 16,66,16,226,124,10,12,24,12,1,0,193,192,96,128,112, + 128,80,128,88,128,76,128,68,128,70,128,67,128,65,128,65, + 128,224,128,9,12,24,11,1,0,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,8,12,12,10,1,0,252,66,65,65,65,66,92,64,64, + 64,64,240,11,15,30,11,1,253,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,6,0,3,32,0,192,10,12,24,11,1,0,252,0,67, + 0,65,0,65,0,65,0,66,0,124,0,76,0,70,0,67, + 0,67,0,225,192,7,12,12,9,1,0,60,198,128,128,224, + 56,12,2,2,130,196,248,9,12,24,10,1,0,255,128,136, + 128,136,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,62,0,10,12,24,12,1,0,225,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,12,12,24,12,0,0,240,240,32,64,48,64,48, + 64,16,128,24,128,9,128,9,0,13,0,7,0,6,0,6, + 0,16,12,24,16,0,0,241,15,33,132,33,132,33,132,50, + 196,50,72,18,104,20,104,28,40,28,56,8,48,8,16,11, + 12,24,12,0,0,249,224,32,128,49,128,25,0,14,0,6, + 0,6,0,11,0,25,128,48,128,32,192,241,224,11,12,24, + 11,0,0,225,224,48,128,49,128,25,0,10,0,14,0,4, + 0,4,0,4,0,4,0,4,0,31,0,8,12,12,10,1, + 0,255,130,134,4,12,24,16,48,96,65,193,255,4,18,18, + 6,1,253,240,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,240,7,18,18,9,1,253,128,128,192,64,64, + 32,32,48,16,16,24,8,8,4,4,6,2,2,4,18,18, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,24,40,44,44, + 68,70,130,130,7,1,1,9,1,254,254,4,4,4,6,0, + 10,192,96,32,16,7,9,9,9,1,0,60,68,132,4,60, + 196,132,140,118,9,14,28,10,0,0,64,0,192,0,64,0, + 64,0,64,0,70,0,89,0,96,128,64,128,64,128,64,128, + 65,0,97,0,62,0,6,9,9,8,1,0,60,68,128,128, + 128,128,128,196,120,8,14,14,10,1,0,6,2,2,2,2, + 62,66,130,130,130,130,130,70,59,7,9,9,9,1,0,60, + 68,130,130,254,128,128,66,60,6,14,14,6,1,0,28,36, + 64,64,64,248,64,64,64,64,64,64,64,240,10,13,26,10, + 0,252,62,192,67,0,129,0,129,0,194,0,60,0,48,0, + 120,0,39,128,192,128,128,128,193,0,62,0,8,14,14,10, + 1,0,64,192,64,64,64,76,82,98,66,66,66,66,66,231, + 3,12,12,5,1,0,192,192,0,64,192,64,64,64,64,64, + 64,224,5,16,16,5,254,252,24,24,0,8,24,8,8,8, + 8,8,8,8,8,8,16,224,8,14,14,10,1,0,64,192, + 64,64,64,79,68,72,112,112,88,76,70,231,3,14,14,5, + 1,0,64,192,64,64,64,64,64,64,64,64,64,64,64,224, + 13,9,18,15,1,0,204,96,82,144,99,16,66,16,66,16, + 66,16,66,16,66,16,231,56,8,9,9,10,1,0,76,210, + 98,66,66,66,66,66,231,8,9,9,10,1,0,60,66,129, + 129,129,129,130,66,60,8,13,13,10,1,252,206,114,65,65, + 65,65,66,98,92,64,64,64,240,9,13,26,10,1,252,29, + 0,99,0,129,0,129,0,129,0,129,0,129,0,71,0,57, + 0,1,0,1,0,1,0,7,128,6,9,9,8,1,0,92, + 228,96,64,64,64,64,64,240,5,9,9,7,1,0,112,136, + 128,192,48,8,136,136,240,5,12,12,7,1,0,64,64,64, + 248,64,64,64,64,64,64,72,112,8,9,9,10,1,0,198, + 66,66,66,66,66,66,70,59,9,9,18,9,0,0,243,128, + 97,0,33,0,50,0,18,0,18,0,28,0,12,0,8,0, + 13,9,18,13,0,0,242,56,99,16,35,16,37,16,53,160, + 20,160,24,224,24,192,24,64,9,9,18,10,0,0,243,128, + 33,0,50,0,28,0,12,0,22,0,34,0,33,0,243,128, + 9,13,26,9,0,252,243,128,97,0,33,0,50,0,18,0, + 20,0,28,0,12,0,8,0,8,0,16,0,176,0,224,0, + 7,9,9,8,1,0,254,132,8,24,48,32,98,194,254,5, + 18,18,6,1,253,8,16,32,32,32,32,32,32,64,224,32, + 32,32,32,32,32,32,24,1,20,20,4,2,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,5,18,18,6,0,253,192,32,32,32,32,32,32,32,56, + 16,32,32,32,32,32,32,64,128,9,4,8,9,0,4,48, + 0,125,128,79,0,134,0,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,0,2,14, + 14,5,2,251,64,192,64,128,128,128,128,128,128,128,128,128, + 128,128,7,12,12,9,1,0,16,16,62,212,144,144,144,144, + 210,124,16,16,7,12,12,9,1,0,60,70,68,64,64,64, + 240,64,64,66,66,254,7,6,6,9,1,3,132,126,68,68, + 68,254,9,11,22,9,0,0,231,128,99,0,50,0,20,0, + 28,0,8,0,127,0,8,0,8,0,8,0,62,0,1,20, + 20,4,2,252,128,128,128,128,128,128,128,128,128,0,0,128, + 128,128,128,128,128,128,128,128,7,13,13,9,1,0,112,152, + 128,224,184,134,130,98,60,12,132,196,120,5,2,2,7,1, + 10,136,136,12,12,24,14,1,0,15,0,48,192,94,32,146, + 32,160,16,160,16,160,16,160,16,144,160,79,32,32,64,31, + 128,5,7,7,5,0,5,48,208,112,208,176,72,240,7,8, + 8,9,1,0,34,36,76,216,216,76,36,34,8,4,4,9, + 0,2,255,1,1,1,5,1,1,6,1,4,248,7,6,6, + 7,0,7,56,238,170,178,238,56,6,1,1,9,2,11,252, + 5,5,5,7,1,7,112,136,136,136,112,7,9,9,8,0, + 1,16,16,16,254,16,16,16,0,126,4,7,7,6,1,6, + 112,144,16,32,64,144,240,5,8,8,6,0,5,56,72,8, + 16,8,8,136,112,4,4,4,6,2,10,48,96,64,128,8, + 13,13,10,1,252,194,70,66,66,66,66,102,126,91,64,64, + 64,96,8,14,14,10,1,254,63,70,134,134,134,70,62,6, + 6,6,6,6,6,15,1,2,2,3,1,5,128,128,2,4, + 4,4,2,252,192,192,64,128,5,7,7,6,1,6,32,224, + 32,32,32,32,248,4,7,7,5,0,5,96,144,144,144,144, + 96,240,7,8,8,9,1,0,136,72,36,50,50,36,72,136, + 10,11,22,11,1,0,192,128,65,0,65,0,66,0,68,0, + 228,0,9,128,18,128,18,128,39,192,65,192,9,11,22,11, + 1,0,192,128,65,0,66,0,66,0,68,0,239,128,12,128, + 17,0,49,0,34,128,71,128,10,12,24,11,1,0,96,0, + 144,128,33,0,18,0,146,0,228,0,8,0,9,128,18,128, + 50,128,39,192,65,192,6,14,14,8,1,251,16,48,16,16, + 16,16,32,32,64,128,132,132,136,112,11,16,32,11,0,0, + 16,0,60,0,2,0,0,0,4,0,6,0,14,0,10,0, + 11,0,17,0,17,0,31,128,33,128,32,128,32,192,241,224, + 11,16,32,11,0,0,1,0,7,128,8,0,0,0,4,0, + 6,0,14,0,10,0,11,0,17,0,17,0,31,128,33,128, + 32,128,32,192,241,224,11,16,32,11,0,0,4,0,10,0, + 17,0,0,0,4,0,6,0,14,0,10,0,11,0,17,0, + 17,0,31,128,33,128,32,128,32,192,241,224,11,15,30,11, + 0,0,29,128,39,0,0,0,4,0,6,0,14,0,10,0, + 11,0,17,0,17,0,31,128,33,128,32,128,32,192,241,224, + 11,15,30,11,0,0,33,0,33,0,0,0,4,0,6,0, + 14,0,10,0,11,0,17,0,17,0,31,128,33,128,32,128, + 32,192,241,224,11,17,34,11,0,0,14,0,18,0,18,0, + 12,0,0,0,4,0,6,0,14,0,10,0,11,0,17,0, + 17,0,31,128,33,128,32,128,32,192,241,224,14,12,24,15, + 0,0,31,248,5,8,5,0,9,0,9,0,31,240,17,32, + 17,0,33,0,33,8,97,12,243,248,9,16,32,10,1,252, + 30,0,99,0,128,0,128,0,128,0,128,0,128,0,128,0, + 128,0,65,0,97,128,62,0,8,0,12,0,4,0,8,0, + 8,16,16,9,1,0,64,48,8,0,254,66,64,64,64,124, + 72,64,64,66,67,254,8,16,16,9,1,0,4,14,48,0, + 254,66,64,64,64,124,72,64,64,66,67,254,8,16,16,9, + 1,0,24,44,68,2,254,66,64,64,64,124,72,64,64,66, + 67,254,8,15,15,9,1,0,132,132,0,254,66,64,64,64, + 124,72,64,64,66,67,254,4,16,16,6,0,0,128,96,16, + 0,112,32,32,32,32,32,32,32,32,32,32,112,5,16,16, + 6,1,0,24,48,192,0,224,64,64,64,64,64,64,64,64, + 64,64,224,6,16,16,6,0,0,48,88,132,0,112,32,32, + 32,32,32,32,32,32,32,32,112,6,15,15,6,0,0,132, + 136,0,112,32,32,32,32,32,32,32,32,32,32,112,10,12, + 24,11,0,0,126,0,33,128,32,128,32,64,32,64,124,64, + 160,64,32,64,32,64,32,128,33,0,126,0,10,15,30,12, + 1,0,25,0,38,0,0,0,193,192,96,128,112,128,80,128, + 88,128,76,128,68,128,70,128,67,128,65,128,65,128,224,128, + 9,16,32,11,1,0,32,0,24,0,4,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,128,128, + 65,0,98,0,60,0,9,16,32,11,1,0,3,0,6,0, + 24,0,0,0,30,0,99,0,129,0,128,128,128,128,128,128, + 128,128,128,128,128,128,65,0,98,0,60,0,9,16,32,11, + 1,0,12,0,22,0,34,0,1,0,30,0,99,0,129,0, + 128,128,128,128,128,128,128,128,128,128,128,128,65,0,98,0, + 60,0,9,15,30,11,1,0,25,0,110,0,0,0,30,0, + 99,0,129,0,128,128,128,128,128,128,128,128,128,128,128,128, + 65,0,98,0,60,0,9,15,30,11,1,0,66,0,66,0, + 0,0,30,0,99,0,129,0,128,128,128,128,128,128,128,128, + 128,128,128,128,65,0,98,0,60,0,6,6,6,8,1,2, + 132,72,48,48,72,132,9,12,24,11,1,0,30,128,35,0, + 67,0,131,128,132,128,136,128,136,128,144,128,225,0,97,0, + 98,0,188,0,10,16,32,12,1,0,48,0,24,0,6,0, + 0,0,225,192,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,16,32,12,1,0, + 1,0,6,0,8,0,0,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,33,0,30,0, + 10,16,32,12,1,0,12,0,26,0,33,0,0,0,225,192, + 64,128,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,33,0,30,0,10,15,30,12,1,0,33,0,33,0, + 0,0,225,192,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,11,16,32,11,0,0, + 1,0,3,128,12,0,0,0,225,224,48,128,49,128,25,0, + 10,0,14,0,4,0,4,0,4,0,4,0,4,0,31,0, + 8,12,12,10,1,0,240,64,124,66,65,65,65,65,98,92, + 64,240,9,14,28,11,1,0,30,0,35,0,65,0,65,0, + 65,0,70,0,72,0,72,0,70,0,67,128,64,128,72,128, + 72,128,207,0,7,14,14,9,1,0,96,32,16,16,8,60, + 68,132,4,60,196,132,140,118,7,14,14,9,1,0,12,8, + 16,16,0,60,68,132,4,60,196,132,140,118,7,14,14,9, + 1,0,16,56,76,132,0,60,68,132,4,60,196,132,140,118, + 7,13,13,9,1,0,34,116,152,0,60,68,132,4,60,196, + 132,140,118,7,12,12,9,1,0,132,132,0,60,68,132,4, + 60,196,132,140,118,7,14,14,9,1,0,56,72,72,48,0, + 60,68,132,4,60,196,132,140,118,11,9,18,13,1,0,57, + 192,70,64,196,32,4,32,31,224,100,0,132,0,142,32,115, + 192,7,13,13,8,1,252,60,68,128,128,128,128,128,98,60, + 16,24,8,16,7,14,14,9,1,0,96,32,16,8,0,60, + 68,130,130,254,128,128,66,60,7,14,14,9,1,0,4,14, + 8,16,0,60,68,130,130,254,128,128,66,60,7,14,14,9, + 1,0,24,56,36,66,0,60,68,130,130,254,128,128,66,60, + 7,12,12,9,1,0,130,132,0,60,68,130,130,254,128,128, + 66,60,4,14,14,5,0,0,192,64,32,16,0,32,96,32, + 32,32,32,32,32,112,4,14,14,5,1,0,16,48,96,64, + 0,64,192,64,64,64,64,64,64,224,6,14,14,5,0,0, + 32,112,200,132,0,32,96,32,32,32,32,32,32,112,6,12, + 12,5,255,0,132,132,0,16,48,16,16,16,16,16,16,56, + 7,13,13,9,1,0,96,30,56,68,60,70,130,130,130,130, + 132,68,56,8,13,13,10,1,0,51,58,76,0,76,210,98, + 66,66,66,66,66,231,8,14,14,10,1,0,96,48,16,8, + 0,60,66,129,129,129,129,130,66,60,8,14,14,10,1,0, + 6,12,8,16,0,60,66,129,129,129,129,130,66,60,8,14, + 14,10,1,0,24,56,36,66,0,60,66,129,129,129,129,130, + 66,60,8,13,13,10,1,0,50,122,76,0,60,66,129,129, + 129,129,130,66,60,8,12,12,10,1,0,130,130,0,60,66, + 129,129,129,129,130,66,60,6,6,6,8,1,2,32,32,252, + 0,32,32,8,9,9,10,1,0,29,102,135,137,153,145,226, + 98,252,8,14,14,10,1,0,96,48,16,8,0,198,66,66, + 66,66,66,66,70,59,8,14,14,10,1,0,6,12,8,16, + 0,198,66,66,66,66,66,66,70,59,8,14,14,10,1,0, + 24,28,36,66,0,198,66,66,66,66,66,66,70,59,8,12, + 12,10,1,0,130,130,0,198,66,66,66,66,66,66,70,59, + 9,18,36,9,0,252,3,0,6,0,4,0,8,0,0,0, + 243,128,97,0,33,0,50,0,18,0,20,0,28,0,12,0, + 8,0,8,0,16,0,176,0,224,0,8,18,18,10,1,252, + 64,192,64,64,64,78,114,65,65,65,65,66,98,124,64,64, + 64,240,9,16,32,9,0,252,65,0,65,0,0,0,243,128, + 97,0,33,0,50,0,18,0,20,0,28,0,12,0,8,0, + 8,0,16,0,176,0,224,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 12 + Calculated Max Values w= 8 h=18 x= 2 y= 7 dx= 9 dy= 0 ascent=15 len=18 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =15 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12n[270] U8G_SECTION(".progmem.u8g_font_gdr12n") = { + 0,28,28,246,249,12,0,0,0,0,42,57,0,15,253,12, + 0,7,7,7,8,1,7,16,148,222,48,252,146,16,7,7, + 7,8,0,2,16,16,16,254,16,16,16,2,5,5,4,1, + 253,64,192,64,64,128,5,1,1,6,1,4,248,2,3,3, + 4,1,255,192,192,128,8,18,18,9,0,253,1,1,3,2, + 6,4,4,12,8,8,24,16,48,32,32,96,64,192,7,11, + 11,9,1,0,56,68,130,130,130,130,130,130,132,68,56,6, + 12,12,9,1,0,16,112,144,16,16,16,16,16,16,16,16, + 252,6,12,12,8,1,0,60,68,196,4,4,8,16,16,32, + 68,132,252,7,12,12,8,0,0,28,38,98,2,4,28,2, + 2,2,2,134,124,7,12,12,9,1,0,4,12,12,20,20, + 36,68,68,254,4,4,30,6,11,11,9,2,0,124,64,64, + 64,120,132,4,4,4,132,120,7,12,12,9,1,0,12,48, + 64,64,128,252,198,130,130,130,68,56,7,11,11,9,1,0, + 254,130,4,4,8,8,24,16,48,32,96,7,12,12,9,1, + 0,120,196,196,196,232,60,78,130,130,130,194,124,7,11,11, + 9,1,0,56,68,130,130,130,198,122,2,4,8,112}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--19-190-72-72-P-84-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=20 x= 2 y=10 dx=16 dy= 0 ascent=16 len=30 + Font Bounding box w=28 h=28 x=-10 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =15 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr12r[1992] U8G_SECTION(".progmem.u8g_font_gdr12r") = { + 0,28,28,246,249,12,2,80,5,85,32,127,252,16,252,15, + 252,0,0,0,4,0,0,2,15,15,5,2,255,128,128,128, + 128,128,128,128,128,128,128,0,0,192,192,128,6,6,6,8, + 1,8,204,76,72,72,72,72,8,11,11,9,1,1,26,18, + 18,127,36,36,36,254,72,72,80,7,15,15,9,1,254,16, + 16,126,148,144,208,112,28,22,18,146,146,252,16,16,11,11, + 22,13,1,0,112,64,144,128,137,128,139,0,146,0,117,192, + 10,32,26,32,18,32,34,32,65,192,11,13,26,12,1,0, + 28,0,34,0,34,0,34,0,36,0,56,0,49,224,216,128, + 140,128,140,128,135,0,199,128,60,224,2,6,6,5,1,8, + 192,64,64,64,64,64,4,18,18,6,1,253,48,96,64,64, + 128,128,128,128,128,128,128,128,128,128,192,64,96,48,4,18, + 18,6,1,253,192,96,32,48,16,16,16,16,16,16,16,16, + 16,16,32,32,96,128,7,7,7,8,1,7,16,148,222,48, + 252,146,16,7,7,7,8,0,2,16,16,16,254,16,16,16, + 2,5,5,4,1,253,64,192,64,64,128,5,1,1,6,1, + 4,248,2,3,3,4,1,255,192,192,128,8,18,18,9,0, + 253,1,1,3,2,6,4,4,12,8,8,24,16,48,32,32, + 96,64,192,7,11,11,9,1,0,56,68,130,130,130,130,130, + 130,132,68,56,6,12,12,9,1,0,16,112,144,16,16,16, + 16,16,16,16,16,252,6,12,12,8,1,0,60,68,196,4, + 4,8,16,16,32,68,132,252,7,12,12,8,0,0,28,38, + 98,2,4,28,2,2,2,2,134,124,7,12,12,9,1,0, + 4,12,12,20,20,36,68,68,254,4,4,30,6,11,11,9, + 2,0,124,64,64,64,120,132,4,4,4,132,120,7,12,12, + 9,1,0,12,48,64,64,128,252,198,130,130,130,68,56,7, + 11,11,9,1,0,254,130,4,4,8,8,24,16,48,32,96, + 7,12,12,9,1,0,120,196,196,196,232,60,78,130,130,130, + 194,124,7,11,11,9,1,0,56,68,130,130,130,198,122,2, + 4,8,112,2,10,10,4,1,255,128,192,128,0,0,0,0, + 192,192,128,2,12,12,4,1,253,128,192,128,0,0,0,0, + 64,192,64,64,128,7,6,6,8,1,2,6,28,224,192,56, + 6,7,4,4,8,1,3,254,0,0,254,7,6,6,8,1, + 2,192,112,14,28,112,128,6,15,15,8,1,255,56,68,132, + 132,4,8,16,16,32,32,32,0,48,48,32,14,15,30,16, + 1,253,7,224,24,48,32,8,71,200,136,68,144,68,144,68, + 144,68,144,68,144,72,136,200,71,112,32,8,24,48,15,192, + 11,12,24,11,0,0,4,0,6,0,14,0,10,0,11,0, + 17,0,17,0,31,128,33,128,32,128,32,192,241,224,8,12, + 12,10,1,0,252,66,66,66,68,126,67,65,65,65,67,254, + 8,12,12,10,1,0,30,99,128,128,128,128,128,128,128,192, + 99,60,9,12,24,11,1,0,252,0,67,0,65,0,64,128, + 64,128,64,128,64,128,64,128,64,128,65,0,66,0,252,0, + 8,12,12,9,1,0,254,66,64,64,64,124,72,64,64,66, + 67,254,7,12,12,9,1,0,254,66,64,64,64,124,72,64, + 64,64,64,240,10,12,24,11,1,0,15,0,49,128,64,0, + 128,0,128,0,128,0,131,192,128,128,128,128,64,128,96,128, + 31,0,10,12,24,12,1,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,64,128,225,192, + 3,12,12,6,1,0,224,64,64,64,64,64,64,64,64,64, + 64,224,6,15,15,6,255,253,60,8,8,8,8,8,8,8, + 8,8,8,8,8,144,224,10,12,24,11,1,0,231,128,66, + 0,68,0,72,0,80,0,96,0,80,0,88,0,76,0,70, + 0,67,0,225,192,7,12,12,9,1,0,224,64,64,64,64, + 64,64,64,64,66,66,254,14,12,24,15,1,0,224,56,96, + 48,112,112,80,80,80,80,88,144,72,144,77,16,69,16,71, + 16,66,16,226,124,10,12,24,12,1,0,193,192,96,128,112, + 128,80,128,88,128,76,128,68,128,70,128,67,128,65,128,65, + 128,224,128,9,12,24,11,1,0,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,8,12,12,10,1,0,252,66,65,65,65,66,92,64,64, + 64,64,240,11,15,30,11,1,253,30,0,99,0,129,0,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,98,0,60, + 0,6,0,3,32,0,192,10,12,24,11,1,0,252,0,67, + 0,65,0,65,0,65,0,66,0,124,0,76,0,70,0,67, + 0,67,0,225,192,7,12,12,9,1,0,60,198,128,128,224, + 56,12,2,2,130,196,248,9,12,24,10,1,0,255,128,136, + 128,136,128,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,62,0,10,12,24,12,1,0,225,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,33, + 0,30,0,12,12,24,12,0,0,240,240,32,64,48,64,48, + 64,16,128,24,128,9,128,9,0,13,0,7,0,6,0,6, + 0,16,12,24,16,0,0,241,15,33,132,33,132,33,132,50, + 196,50,72,18,104,20,104,28,40,28,56,8,48,8,16,11, + 12,24,12,0,0,249,224,32,128,49,128,25,0,14,0,6, + 0,6,0,11,0,25,128,48,128,32,192,241,224,11,12,24, + 11,0,0,225,224,48,128,49,128,25,0,10,0,14,0,4, + 0,4,0,4,0,4,0,4,0,31,0,8,12,12,10,1, + 0,255,130,134,4,12,24,16,48,96,65,193,255,4,18,18, + 6,1,253,240,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,240,7,18,18,9,1,253,128,128,192,64,64, + 32,32,48,16,16,24,8,8,4,4,6,2,2,4,18,18, + 5,0,253,240,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,240,7,9,9,9,1,5,16,24,40,44,44, + 68,70,130,130,7,1,1,9,1,254,254,4,4,4,6,0, + 10,192,96,32,16,7,9,9,9,1,0,60,68,132,4,60, + 196,132,140,118,9,14,28,10,0,0,64,0,192,0,64,0, + 64,0,64,0,70,0,89,0,96,128,64,128,64,128,64,128, + 65,0,97,0,62,0,6,9,9,8,1,0,60,68,128,128, + 128,128,128,196,120,8,14,14,10,1,0,6,2,2,2,2, + 62,66,130,130,130,130,130,70,59,7,9,9,9,1,0,60, + 68,130,130,254,128,128,66,60,6,14,14,6,1,0,28,36, + 64,64,64,248,64,64,64,64,64,64,64,240,10,13,26,10, + 0,252,62,192,67,0,129,0,129,0,194,0,60,0,48,0, + 120,0,39,128,192,128,128,128,193,0,62,0,8,14,14,10, + 1,0,64,192,64,64,64,76,82,98,66,66,66,66,66,231, + 3,12,12,5,1,0,192,192,0,64,192,64,64,64,64,64, + 64,224,5,16,16,5,254,252,24,24,0,8,24,8,8,8, + 8,8,8,8,8,8,16,224,8,14,14,10,1,0,64,192, + 64,64,64,79,68,72,112,112,88,76,70,231,3,14,14,5, + 1,0,64,192,64,64,64,64,64,64,64,64,64,64,64,224, + 13,9,18,15,1,0,204,96,82,144,99,16,66,16,66,16, + 66,16,66,16,66,16,231,56,8,9,9,10,1,0,76,210, + 98,66,66,66,66,66,231,8,9,9,10,1,0,60,66,129, + 129,129,129,130,66,60,8,13,13,10,1,252,206,114,65,65, + 65,65,66,98,92,64,64,64,240,9,13,26,10,1,252,29, + 0,99,0,129,0,129,0,129,0,129,0,129,0,71,0,57, + 0,1,0,1,0,1,0,7,128,6,9,9,8,1,0,92, + 228,96,64,64,64,64,64,240,5,9,9,7,1,0,112,136, + 128,192,48,8,136,136,240,5,12,12,7,1,0,64,64,64, + 248,64,64,64,64,64,64,72,112,8,9,9,10,1,0,198, + 66,66,66,66,66,66,70,59,9,9,18,9,0,0,243,128, + 97,0,33,0,50,0,18,0,18,0,28,0,12,0,8,0, + 13,9,18,13,0,0,242,56,99,16,35,16,37,16,53,160, + 20,160,24,224,24,192,24,64,9,9,18,10,0,0,243,128, + 33,0,50,0,28,0,12,0,22,0,34,0,33,0,243,128, + 9,13,26,9,0,252,243,128,97,0,33,0,50,0,18,0, + 20,0,28,0,12,0,8,0,8,0,16,0,176,0,224,0, + 7,9,9,8,1,0,254,132,8,24,48,32,98,194,254,5, + 18,18,6,1,253,8,16,32,32,32,32,32,32,64,224,32, + 32,32,32,32,32,32,24,1,20,20,4,2,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,5,18,18,6,0,253,192,32,32,32,32,32,32,32,56, + 16,32,32,32,32,32,32,64,128,9,4,8,9,0,4,48, + 0,125,128,79,0,134,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=24 x= 2 y=13 dx=20 dy= 0 ascent=20 len=57 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14[5942] U8G_SECTION(".progmem.u8g_font_gdr14") = { + 0,35,33,244,248,14,3,95,7,136,32,255,251,20,250,18, + 251,0,0,0,5,0,0,2,17,17,6,2,0,64,192,192, + 192,192,192,192,192,192,192,192,192,128,0,192,192,192,6,8, + 8,10,2,9,204,204,204,204,204,204,204,140,10,13,26,11, + 1,1,12,128,9,128,9,0,9,0,127,192,19,0,18,0, + 50,0,255,128,36,0,100,0,68,0,76,0,9,18,36,11, + 1,254,12,0,12,0,63,128,109,128,205,0,204,0,236,0, + 124,0,63,0,15,0,13,128,13,128,141,128,205,128,239,0, + 126,0,12,0,12,0,14,14,28,16,1,0,56,24,72,48, + 204,96,204,64,204,192,205,128,75,0,114,56,6,76,12,204, + 8,204,16,204,48,200,96,112,14,16,32,16,1,0,15,0, + 25,128,49,128,49,128,49,0,51,0,60,0,60,252,124,112, + 102,48,199,48,195,176,193,224,192,224,96,176,63,28,2,8, + 8,6,2,9,192,192,192,192,192,192,192,128,6,22,22,7, + 1,252,12,24,16,32,96,96,64,192,192,192,192,192,192,192, + 192,64,96,96,32,48,24,12,6,22,22,7,0,252,192,96, + 48,16,24,24,8,12,12,12,12,12,12,12,12,8,24,24, + 16,32,96,192,9,10,20,10,1,8,24,0,24,0,137,0, + 235,128,60,0,60,0,235,0,137,0,24,0,24,0,8,8, + 8,9,1,2,24,24,24,255,24,24,24,24,4,6,6,5, + 0,253,112,240,48,48,32,64,6,1,1,8,1,5,252,2, + 3,3,5,2,0,192,192,192,9,22,44,11,1,252,0,128, + 1,128,1,0,3,0,3,0,2,0,6,0,6,0,12,0, + 12,0,8,0,24,0,24,0,16,0,48,0,48,0,96,0, + 96,0,64,0,192,0,192,0,128,0,9,14,28,11,1,0, + 28,0,39,0,99,0,67,128,193,128,193,128,193,128,193,128, + 193,128,193,128,193,0,97,0,98,0,28,0,8,14,14,11, + 2,0,24,120,152,24,24,24,24,24,24,24,24,24,24,255, + 8,14,14,11,1,0,60,103,195,131,3,6,6,12,24,24, + 48,97,193,255,9,14,28,12,1,0,30,0,103,0,195,0, + 3,0,2,0,4,0,30,0,3,0,1,128,1,128,1,128, + 1,128,195,0,60,0,10,14,28,11,0,0,3,0,7,0, + 7,0,11,0,27,0,19,0,35,0,99,0,67,0,255,192, + 3,0,3,0,3,0,15,192,9,14,28,11,0,0,0,128, + 63,0,32,0,32,0,96,0,126,0,67,0,1,128,1,128, + 1,128,1,128,1,0,195,0,60,0,9,14,28,11,1,0, + 3,0,12,0,48,0,32,0,96,0,222,0,227,0,193,128, + 193,128,193,128,193,128,97,0,99,0,30,0,9,13,26,11, + 1,0,127,128,129,0,129,0,3,0,2,0,6,0,4,0, + 12,0,8,0,24,0,24,0,48,0,32,0,9,14,28,11, + 1,0,62,0,71,0,195,0,195,0,195,0,118,0,30,0, + 39,0,99,128,193,128,193,128,193,128,99,0,60,0,9,14, + 28,11,1,0,30,0,99,0,67,0,193,128,193,128,193,128, + 193,128,99,128,61,128,1,0,3,0,6,0,8,0,112,0, + 2,11,11,5,2,0,192,192,192,0,0,0,0,0,192,192, + 192,4,14,14,5,0,253,48,48,48,0,0,0,0,0,112, + 240,48,48,32,64,8,7,7,10,1,3,1,15,120,192,112, + 30,3,8,4,4,10,1,4,255,0,0,255,8,7,7,10, + 1,3,192,120,15,3,30,240,128,8,17,17,10,1,0,62, + 103,195,195,3,3,6,12,12,24,24,24,16,0,24,24,24, + 17,19,57,19,1,252,1,240,0,6,28,0,24,6,0,48, + 3,0,32,3,0,97,211,128,66,49,128,196,49,128,204,49, + 128,204,49,128,204,49,128,204,49,0,236,51,0,102,114,0, + 99,156,0,48,0,0,56,2,0,14,15,0,3,240,0,13, + 14,28,14,0,0,2,0,3,0,5,0,5,128,5,128,8, + 128,8,192,8,192,31,192,16,96,16,96,32,48,32,48,248, + 120,11,14,28,12,0,0,127,0,177,192,48,192,48,192,48, + 192,49,128,63,128,49,192,48,224,48,96,48,96,48,96,48, + 192,255,128,11,14,28,12,1,0,7,192,24,96,32,0,96, + 0,64,0,192,0,192,0,192,0,192,0,192,0,96,0,96, + 32,56,64,15,128,13,14,28,14,0,0,127,128,176,224,48, + 112,48,48,48,24,48,24,48,24,48,24,48,24,48,24,48, + 48,48,112,48,224,255,128,11,14,28,11,0,0,255,192,48, + 64,48,64,48,0,48,0,48,0,63,128,49,0,48,0,48, + 0,48,0,48,32,48,96,255,192,10,14,28,11,0,0,255, + 192,48,64,48,64,48,0,48,0,48,0,63,128,49,0,48, + 0,48,0,48,0,48,0,48,0,252,0,11,14,28,13,1, + 0,15,128,16,192,32,0,96,0,192,0,192,0,192,0,195, + 224,192,192,192,192,96,192,96,192,48,192,31,0,15,14,28, + 15,0,0,252,126,48,24,48,24,48,24,48,24,48,24,63, + 248,48,24,48,24,48,24,48,24,48,24,48,24,252,126,6, + 14,14,7,0,0,252,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,18,36,7,254,252,31,128,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,4,0,72,0,240,0,13,14,28, + 13,0,0,252,240,48,64,48,128,49,0,50,0,54,0,60, + 0,54,0,54,0,51,0,49,128,48,192,48,96,252,56,11, + 14,28,11,0,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,32,48,64,255, + 192,17,14,42,19,1,0,240,7,0,112,14,0,112,14,0, + 120,30,0,104,22,0,108,22,0,108,38,0,102,38,0,102, + 102,0,99,70,0,99,198,0,97,134,0,97,134,0,241,15, + 128,15,14,28,15,0,0,240,126,48,24,56,24,60,24,52, + 24,50,24,51,24,49,152,48,152,48,216,48,120,48,56,48, + 56,252,24,12,14,28,14,1,0,15,128,48,192,32,96,96, + 96,192,48,192,48,192,48,192,48,192,48,192,48,96,96,96, + 64,48,128,31,0,11,14,28,12,0,0,127,128,176,192,48, + 96,48,96,48,96,48,96,48,192,63,0,48,0,48,0,48, + 0,48,0,48,0,252,0,14,17,34,14,1,253,15,128,48, + 192,32,96,96,96,192,48,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,31,0,1,128,0,196,0,56,13, + 14,28,13,0,0,127,0,177,128,48,192,48,192,48,192,48, + 128,49,0,62,0,51,0,49,0,49,128,48,192,48,192,252, + 120,9,14,28,11,1,0,62,0,99,0,192,0,192,0,224, + 0,120,0,62,0,15,0,3,128,1,128,129,128,129,0,195, + 0,124,0,12,14,28,13,0,0,255,240,134,16,134,16,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,31,128,15,14,28,15,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,14,14,28,15,0,0,248,60,48, + 24,48,16,24,16,24,48,24,32,12,96,12,64,4,64,6, + 192,6,128,3,128,3,128,1,0,19,14,42,20,0,0,248, + 67,224,48,96,128,48,96,128,48,224,128,16,177,128,16,177, + 0,25,145,0,25,25,0,25,25,0,11,11,0,14,14,0, + 14,14,0,14,6,0,4,6,0,14,14,28,14,0,0,252, + 248,48,48,24,96,28,192,12,128,7,128,3,0,3,128,5, + 128,12,192,24,96,16,112,48,48,248,124,14,14,28,14,0, + 0,224,124,48,48,24,32,24,96,12,64,6,192,7,128,3, + 0,3,0,3,0,3,0,3,0,3,0,15,192,10,14,28, + 12,1,0,127,192,65,128,129,128,3,0,6,0,6,0,12, + 0,28,0,24,0,48,0,48,0,96,64,192,64,255,192,5, + 22,22,7,1,252,248,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,248,9,22,44,11,1, + 252,128,0,192,0,192,0,64,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,8,0,12,0,4,0,4,0,6, + 0,2,0,3,0,3,0,1,0,1,128,0,128,5,22,22, + 8,1,252,248,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,248,9,11,22,11,1,6,8, + 0,12,0,28,0,22,0,54,0,34,0,35,0,99,0,65, + 128,65,128,129,128,9,1,2,11,1,253,255,128,5,5,5, + 7,0,12,224,96,48,16,8,10,10,20,11,1,0,30,0, + 99,0,195,0,3,0,31,0,99,0,195,0,195,0,199,0, + 123,192,10,17,34,12,1,0,96,0,224,0,96,0,96,0, + 96,0,96,0,96,0,103,0,121,128,113,192,96,192,96,192, + 96,192,96,192,96,128,113,0,30,0,9,10,20,10,1,0, + 15,0,49,128,96,0,192,0,192,0,192,0,192,0,96,0, + 113,128,30,0,11,17,34,12,1,0,1,128,7,128,1,128, + 1,128,1,128,1,128,1,128,31,128,35,128,65,128,193,128, + 193,128,193,128,193,128,225,128,103,160,57,192,9,10,20,11, + 1,0,30,0,33,0,65,128,255,128,192,0,192,0,192,0, + 224,0,113,128,62,0,9,17,34,7,0,0,7,128,9,0, + 16,0,48,0,48,0,48,0,48,0,126,0,176,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,252,0,12,15, + 30,12,0,251,31,48,49,192,96,192,96,192,96,192,49,128, + 31,0,24,0,56,0,31,192,96,112,192,48,192,48,96,96, + 63,128,13,17,34,13,0,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,96,56,96,48,96,48,96, + 48,96,48,96,48,96,48,96,253,248,6,15,15,6,0,0, + 48,48,48,0,0,48,240,48,48,48,48,48,48,48,252,7, + 20,20,6,253,251,6,6,6,0,0,6,30,6,6,6,6, + 6,6,6,6,6,6,4,8,240,12,17,34,12,0,0,48, + 0,240,0,48,0,48,0,48,0,48,0,48,0,49,224,49, + 128,51,0,52,0,60,0,54,0,51,0,49,128,48,192,248, + 240,6,17,17,6,0,0,48,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,10,30,20,0,0,113,199, + 128,182,104,192,56,112,192,48,96,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,253,251,240,13,10,20,13, + 0,0,113,192,182,96,56,96,48,96,48,96,48,96,48,96, + 48,96,48,96,253,248,10,10,20,12,1,0,30,0,35,128, + 65,128,192,192,192,192,192,192,192,192,224,128,113,0,30,0, + 11,15,30,12,0,251,115,128,188,192,56,224,48,96,48,96, + 48,96,48,96,48,64,56,192,55,0,48,0,48,0,48,0, + 48,0,252,0,11,15,30,12,1,251,30,128,35,128,97,128, + 193,128,193,128,193,128,193,128,225,128,99,128,61,128,1,128, + 1,128,1,128,1,128,7,224,9,10,20,9,0,0,51,128, + 252,128,56,0,48,0,48,0,48,0,48,0,48,0,48,0, + 252,0,7,10,10,9,1,0,124,204,192,224,120,30,6,134, + 134,248,8,14,14,8,0,0,16,48,48,48,127,176,48,48, + 48,48,48,48,49,30,11,10,20,12,1,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,10,20,11,0,0,249,224,32,64,48,128,48,128,25,128, + 25,0,9,0,14,0,6,0,4,0,16,10,20,16,0,0, + 248,143,33,130,49,196,49,196,19,100,26,108,26,40,12,56, + 12,56,12,16,11,10,20,12,0,0,249,224,48,128,25,0, + 15,0,6,0,14,0,11,0,17,128,32,192,241,224,12,15, + 30,11,255,251,124,240,16,32,24,64,24,64,12,192,12,128, + 4,128,7,0,3,0,3,0,2,0,6,0,4,0,120,0, + 240,0,8,10,10,10,1,0,255,131,134,12,8,24,48,97, + 65,255,6,22,22,8,1,252,4,24,16,48,48,48,56,24, + 24,24,48,240,24,24,24,24,48,48,48,48,24,4,2,24, + 24,5,2,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,6,22,22,8, + 1,252,128,96,48,48,48,48,96,96,96,96,60,16,32,96, + 96,112,48,48,48,32,96,128,10,4,8,11,1,5,48,64, + 124,128,159,0,135,0,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,5,0,0,2,16,16, + 6,2,250,192,192,128,64,192,192,192,192,192,192,192,192,192, + 192,192,128,9,14,28,11,1,0,12,0,12,0,31,128,109, + 128,76,0,204,0,204,0,204,0,204,0,236,128,125,128,63, + 0,12,0,12,0,10,14,28,11,0,0,7,128,24,192,16, + 128,48,128,48,0,48,0,48,0,126,0,48,0,48,0,48, + 0,32,64,32,64,255,192,9,7,14,11,1,3,221,128,119, + 0,99,0,99,0,115,0,127,0,128,128,12,14,28,11,255, + 0,225,240,48,64,48,192,25,128,29,128,15,0,7,0,6, + 0,63,192,6,0,6,0,6,0,6,0,31,128,2,24,24, + 5,2,251,192,192,192,192,192,192,192,192,192,192,128,0,0, + 64,192,192,192,192,192,192,192,192,192,192,9,16,32,11,1, + 0,30,0,99,0,98,0,112,0,56,0,94,0,199,0,195, + 128,225,128,113,128,63,0,15,0,7,0,67,0,99,0,62, + 0,7,3,3,9,1,12,198,198,198,15,14,28,16,0,0, + 7,192,24,48,49,248,98,44,198,6,204,6,204,6,204,6, + 204,6,206,38,102,76,51,152,24,48,7,192,6,8,8,6, + 0,6,112,152,24,56,120,124,0,124,9,10,20,11,1,0, + 17,128,17,0,34,0,102,0,204,0,204,0,102,0,34,0, + 17,0,17,128,10,5,10,11,0,2,255,192,0,192,0,192, + 0,192,0,192,6,1,1,8,1,5,252,8,8,8,8,0, + 8,60,66,189,149,153,153,86,60,7,1,1,11,2,13,254, + 4,5,5,8,2,9,96,240,240,240,96,8,10,10,9,1, + 2,24,24,24,24,255,24,24,24,0,255,6,8,8,8,1, + 7,120,140,140,8,16,32,68,252,7,8,8,7,255,7,60, + 102,6,28,6,6,134,120,5,5,5,7,2,12,24,48,32, + 64,192,12,15,30,13,1,251,96,192,224,192,96,192,96,192, + 96,192,96,192,96,192,113,192,127,208,92,224,64,0,64,0, + 96,0,96,0,112,0,13,17,34,14,0,253,31,248,99,96, + 195,96,195,96,195,96,227,96,115,96,63,96,3,96,3,96, + 3,96,3,96,3,96,3,96,3,96,3,96,15,248,2,3, + 3,3,1,6,192,192,192,4,5,5,5,1,251,96,96,112, + 48,192,6,8,8,8,1,7,48,240,48,48,48,48,48,252, + 4,8,8,6,1,6,96,240,240,240,240,96,0,240,8,10, + 10,11,2,0,136,140,68,98,51,51,102,68,140,136,12,14, + 28,13,0,0,24,96,120,192,24,192,25,128,27,0,27,0, + 126,0,4,96,12,224,25,96,18,96,51,240,96,96,192,240, + 13,14,28,14,0,0,48,16,240,32,48,96,48,64,48,128, + 48,128,249,0,3,120,2,152,4,24,12,48,8,32,16,72, + 49,248,12,14,28,14,1,0,112,32,152,64,24,64,56,128, + 77,128,141,0,114,0,6,96,4,224,9,96,25,96,19,240, + 32,96,96,240,8,16,16,10,1,250,24,24,16,4,12,12, + 12,24,48,96,96,192,195,195,230,124,13,20,40,14,0,0, + 16,0,28,0,14,0,3,0,0,128,0,0,2,0,3,0, + 5,0,5,128,5,128,8,128,8,192,8,192,31,192,16,96, + 16,96,32,48,32,48,248,120,13,20,40,14,0,0,0,128, + 0,192,3,160,6,0,0,0,0,0,2,0,3,0,5,0, + 5,128,5,128,8,128,8,192,8,192,31,192,16,96,16,96, + 32,48,32,48,248,120,13,20,40,14,0,0,2,0,7,0, + 13,128,8,64,16,0,0,0,2,0,3,0,5,0,5,128, + 5,128,8,128,8,192,8,192,31,192,16,96,16,96,32,48, + 32,48,248,120,13,19,38,14,0,0,4,64,14,96,19,192, + 0,0,0,0,2,0,3,0,5,0,5,128,5,128,8,128, + 8,192,8,192,31,192,16,96,16,96,32,48,32,48,248,120, + 13,18,36,14,0,0,8,64,12,96,8,64,0,0,2,0, + 3,0,5,0,5,128,5,128,8,128,8,192,8,192,31,192, + 16,96,16,96,32,48,32,48,248,120,13,20,40,14,0,0, + 2,0,7,0,7,128,7,0,0,0,0,0,2,0,3,0, + 5,0,5,128,5,128,8,128,8,192,8,192,31,192,16,96, + 16,96,32,48,32,48,248,120,18,14,42,18,0,0,7,255, + 128,1,96,128,3,96,128,2,96,0,6,96,0,6,96,0, + 7,255,0,12,98,0,8,96,0,24,96,0,16,96,0,16, + 96,64,48,96,64,249,255,128,11,19,38,12,1,251,7,192, + 24,96,32,0,96,0,64,0,192,0,192,0,192,0,192,0, + 192,0,224,0,96,128,113,192,62,0,8,0,4,0,14,0, + 6,0,24,0,11,20,40,11,0,0,32,0,56,0,28,0, + 6,0,1,0,0,0,255,192,48,64,48,64,48,0,48,0, + 48,0,63,128,49,0,48,0,48,0,48,0,48,32,48,96, + 255,192,11,20,40,11,0,0,1,0,1,128,7,0,12,0, + 0,0,0,0,255,192,48,64,48,64,48,0,48,0,48,0, + 63,128,49,0,48,0,48,0,48,0,48,32,48,96,255,192, + 11,20,40,11,0,0,4,0,14,0,27,0,48,128,0,0, + 0,0,255,192,48,64,48,64,48,0,48,0,48,0,63,128, + 49,0,48,0,48,0,48,0,48,32,48,96,255,192,11,18, + 36,11,0,0,16,128,49,128,49,128,0,0,255,192,48,64, + 48,64,48,0,48,0,48,0,63,128,49,0,48,0,48,0, + 48,0,48,32,48,96,255,192,6,20,20,7,0,0,128,192, + 112,24,0,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,252,7,20,20,7,0,0,4,14,28,48,64,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,252,7,20,20,7, + 0,0,16,56,108,134,0,0,252,48,48,48,48,48,48,48, + 48,48,48,48,48,252,7,18,18,7,0,0,66,198,198,0, + 252,48,48,48,48,48,48,48,48,48,48,48,48,252,13,14, + 28,14,0,0,127,128,176,224,48,112,48,48,48,24,48,24, + 254,24,48,24,48,24,48,24,48,48,48,112,48,224,255,128, + 15,19,38,15,0,0,2,32,7,32,9,192,0,0,0,0, + 240,126,48,24,56,24,60,24,52,24,50,24,51,24,49,152, + 48,152,48,216,48,120,48,56,48,56,252,24,12,20,40,14, + 1,0,16,0,56,0,12,0,2,0,1,0,0,0,15,128, + 48,192,32,96,96,96,192,48,192,48,192,48,192,48,192,48, + 192,48,96,96,96,64,48,128,31,0,12,20,40,14,1,0, + 1,0,1,192,3,0,12,0,0,0,0,0,15,128,48,192, + 32,96,96,96,192,48,192,48,192,48,192,48,192,48,192,48, + 96,96,96,64,48,128,31,0,12,20,40,14,1,0,6,0, + 14,0,11,0,16,128,32,0,0,0,15,128,48,192,32,96, + 96,96,192,48,192,48,192,48,192,48,192,48,192,48,96,96, + 96,64,48,128,31,0,12,19,38,14,1,0,8,128,28,64, + 55,128,0,0,0,0,15,128,48,192,32,96,96,96,192,48, + 192,48,192,48,192,48,192,48,192,48,96,96,96,64,48,128, + 31,0,12,18,36,14,1,0,16,128,24,192,16,128,0,0, + 15,128,48,192,32,96,96,96,192,48,192,48,192,48,192,48, + 192,48,192,48,96,96,96,64,48,128,31,0,7,7,7,9, + 1,3,194,102,60,24,60,102,194,12,15,30,14,1,255,15, + 48,48,224,32,224,64,224,193,176,195,48,194,48,198,48,204, + 48,200,48,88,32,112,64,112,128,207,0,128,0,15,20,40, + 15,0,0,8,0,14,0,7,0,1,128,0,64,0,0,252, + 126,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,24,48,28,96,7,192,15,20,40,15,0, + 0,0,64,0,96,1,192,3,0,0,0,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,24,48,28,96,7,192,15,20,40,15,0,0,1, + 0,3,128,6,192,12,96,0,0,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,15,18,36,15,0,0,4,32,12, + 96,12,96,0,0,252,126,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,24,48,28,96,7, + 192,14,20,40,14,0,0,0,128,0,224,1,128,6,0,0, + 0,0,0,224,124,48,48,24,32,24,96,12,64,6,192,7, + 128,3,0,3,0,3,0,3,0,3,0,3,0,15,192,11, + 14,28,12,0,0,252,0,48,0,48,0,63,128,48,192,48, + 96,48,96,48,96,48,96,48,192,63,128,48,0,48,0,252, + 0,13,17,34,13,0,0,7,128,8,192,16,96,48,96,48, + 96,48,224,51,192,55,0,54,0,55,0,51,192,48,240,48, + 56,48,24,52,24,50,16,243,224,10,17,34,11,1,0,96, + 0,48,0,16,0,8,0,4,0,0,0,0,0,30,0,99, + 0,195,0,3,0,31,0,99,0,195,0,195,0,199,0,123, + 192,10,17,34,11,1,0,3,0,6,0,12,0,8,0,16, + 0,0,0,0,0,30,0,99,0,195,0,3,0,31,0,99, + 0,195,0,195,0,199,0,123,192,10,17,34,11,1,0,24, + 0,28,0,54,0,98,0,65,0,0,0,0,0,30,0,99, + 0,195,0,3,0,31,0,99,0,195,0,195,0,199,0,123, + 192,10,15,30,11,1,0,57,0,78,0,0,0,0,0,0, + 0,30,0,99,0,195,0,3,0,31,0,99,0,195,0,195, + 0,199,0,123,192,10,15,30,11,1,0,33,0,99,0,99, + 0,0,0,0,0,30,0,99,0,195,0,3,0,31,0,99, + 0,195,0,195,0,199,0,123,192,10,16,32,11,1,0,28, + 0,60,0,60,0,24,0,0,0,0,0,30,0,99,0,195, + 0,3,0,31,0,99,0,195,0,195,0,199,0,123,192,14, + 10,20,16,1,0,30,112,99,152,195,12,131,12,31,252,115, + 0,195,0,195,0,197,132,120,248,9,15,30,10,1,251,15, + 0,49,128,96,0,192,0,192,0,192,0,192,0,192,0,99, + 0,124,0,16,0,8,0,28,0,12,0,48,0,9,17,34, + 11,1,0,48,0,112,0,24,0,8,0,4,0,0,0,0, + 0,30,0,33,0,65,128,255,128,192,0,192,0,192,0,224, + 0,113,128,62,0,9,17,34,11,1,0,3,0,6,0,6, + 0,12,0,8,0,0,0,0,0,30,0,33,0,65,128,255, + 128,192,0,192,0,192,0,224,0,113,128,62,0,9,17,34, + 11,1,0,12,0,28,0,54,0,35,0,65,0,0,0,0, + 0,30,0,33,0,65,128,255,128,192,0,192,0,192,0,224, + 0,113,128,62,0,9,15,30,11,1,0,33,0,49,128,33, + 0,0,0,0,0,30,0,33,0,65,128,255,128,192,0,192, + 0,192,0,224,0,113,128,62,0,6,17,17,6,0,0,192, + 96,32,48,16,0,0,48,240,48,48,48,48,48,48,48,252, + 7,17,17,6,0,0,12,14,24,16,32,0,0,48,240,48, + 48,48,48,48,48,48,252,7,17,17,6,0,0,48,56,104, + 196,130,0,0,48,240,48,48,48,48,48,48,48,252,7,15, + 15,6,0,0,198,198,198,0,0,48,240,48,48,48,48,48, + 48,48,252,9,16,32,11,1,0,48,0,91,128,12,0,50, + 0,3,0,1,0,31,128,99,128,67,128,193,128,193,128,193, + 128,193,0,227,0,98,0,60,0,13,15,30,13,0,0,14, + 64,19,128,0,0,0,0,0,0,113,192,182,96,56,96,48, + 96,48,96,48,96,48,96,48,96,48,96,253,248,10,17,34, + 12,1,0,48,0,48,0,24,0,12,0,4,0,0,0,0, + 0,30,0,35,128,65,128,192,192,192,192,192,192,192,192,224, + 128,113,0,30,0,10,17,34,12,1,0,3,0,3,0,6, + 0,4,0,8,0,0,0,0,0,30,0,35,128,65,128,192, + 192,192,192,192,192,192,192,224,128,113,0,30,0,10,17,34, + 12,1,0,12,0,30,0,18,0,33,0,64,128,0,0,0, + 0,30,0,35,128,65,128,192,192,192,192,192,192,192,192,224, + 128,113,0,30,0,10,15,30,12,1,0,56,128,71,0,0, + 0,0,0,0,0,30,0,35,128,65,128,192,192,192,192,192, + 192,192,192,224,128,113,0,30,0,10,15,30,12,1,0,49, + 128,49,128,33,0,0,0,0,0,30,0,35,128,65,128,192, + 192,192,192,192,192,192,192,224,128,113,0,30,0,8,7,7, + 9,1,3,24,24,0,255,0,24,24,10,12,24,12,1,255, + 0,64,30,192,35,128,67,192,194,192,196,192,200,192,216,192, + 240,128,113,0,222,0,128,0,11,17,34,12,1,0,48,0, + 24,0,24,0,12,0,4,0,0,0,0,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,17,34,12,1,0,3,0,3,128,6,0,4,0,8,0, + 0,0,0,0,97,128,231,128,97,128,97,128,97,128,97,128, + 97,128,97,128,103,160,57,192,11,17,34,12,1,0,12,0, + 14,0,26,0,49,0,32,128,0,0,0,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,15,30,12,1,0,49,128,49,128,49,128,0,0,0,0, + 97,128,231,128,97,128,97,128,97,128,97,128,97,128,97,128, + 103,160,57,192,12,22,44,11,255,251,0,192,0,192,1,128, + 3,0,2,0,0,0,0,0,124,240,16,32,24,64,24,64, + 12,192,12,128,4,128,7,0,3,0,3,0,2,0,6,0, + 4,0,120,0,240,0,11,22,44,12,0,251,48,0,240,0, + 48,0,48,0,48,0,48,0,48,0,51,128,60,192,56,224, + 48,96,48,96,48,96,48,96,48,64,56,128,55,0,48,0, + 48,0,48,0,48,0,252,0,12,20,40,11,255,251,12,96, + 12,96,8,64,0,0,0,0,124,240,16,32,24,64,24,64, + 12,192,12,128,4,128,7,0,3,0,3,0,2,0,6,0, + 4,0,120,0,240,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 14 + Calculated Max Values w=10 h=22 x= 2 y= 8 dx=12 dy= 0 ascent=18 len=44 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14n[445] U8G_SECTION(".progmem.u8g_font_gdr14n") = { + 0,35,33,244,248,14,0,0,0,0,42,57,0,18,252,14, + 0,9,10,20,10,1,8,24,0,24,0,137,0,235,128,60, + 0,60,0,235,0,137,0,24,0,24,0,8,8,8,9,1, + 2,24,24,24,255,24,24,24,24,4,6,6,5,0,253,112, + 240,48,48,32,64,6,1,1,8,1,5,252,2,3,3,5, + 2,0,192,192,192,9,22,44,11,1,252,0,128,1,128,1, + 0,3,0,3,0,2,0,6,0,6,0,12,0,12,0,8, + 0,24,0,24,0,16,0,48,0,48,0,96,0,96,0,64, + 0,192,0,192,0,128,0,9,14,28,11,1,0,28,0,39, + 0,99,0,67,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,0,97,0,98,0,28,0,8,14,14,11,2,0,24, + 120,152,24,24,24,24,24,24,24,24,24,24,255,8,14,14, + 11,1,0,60,103,195,131,3,6,6,12,24,24,48,97,193, + 255,9,14,28,12,1,0,30,0,103,0,195,0,3,0,2, + 0,4,0,30,0,3,0,1,128,1,128,1,128,1,128,195, + 0,60,0,10,14,28,11,0,0,3,0,7,0,7,0,11, + 0,27,0,19,0,35,0,99,0,67,0,255,192,3,0,3, + 0,3,0,15,192,9,14,28,11,0,0,0,128,63,0,32, + 0,32,0,96,0,126,0,67,0,1,128,1,128,1,128,1, + 128,1,0,195,0,60,0,9,14,28,11,1,0,3,0,12, + 0,48,0,32,0,96,0,222,0,227,0,193,128,193,128,193, + 128,193,128,97,0,99,0,30,0,9,13,26,11,1,0,127, + 128,129,0,129,0,3,0,2,0,6,0,4,0,12,0,8, + 0,24,0,24,0,48,0,32,0,9,14,28,11,1,0,62, + 0,71,0,195,0,195,0,195,0,118,0,30,0,39,0,99, + 128,193,128,193,128,193,128,99,0,60,0,9,14,28,11,1, + 0,30,0,99,0,67,0,193,128,193,128,193,128,193,128,99, + 128,61,128,1,0,3,0,6,0,8,0,112,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--23-230-72-72-P-110-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=24 x= 2 y=12 dx=20 dy= 0 ascent=19 len=57 + Font Bounding box w=35 h=33 x=-12 y=-8 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr14r[2791] U8G_SECTION(".progmem.u8g_font_gdr14r") = { + 0,35,33,244,248,14,3,95,7,136,32,127,251,19,251,18, + 251,0,0,0,5,0,0,2,17,17,6,2,0,64,192,192, + 192,192,192,192,192,192,192,192,192,128,0,192,192,192,6,8, + 8,10,2,9,204,204,204,204,204,204,204,140,10,13,26,11, + 1,1,12,128,9,128,9,0,9,0,127,192,19,0,18,0, + 50,0,255,128,36,0,100,0,68,0,76,0,9,18,36,11, + 1,254,12,0,12,0,63,128,109,128,205,0,204,0,236,0, + 124,0,63,0,15,0,13,128,13,128,141,128,205,128,239,0, + 126,0,12,0,12,0,14,14,28,16,1,0,56,24,72,48, + 204,96,204,64,204,192,205,128,75,0,114,56,6,76,12,204, + 8,204,16,204,48,200,96,112,14,16,32,16,1,0,15,0, + 25,128,49,128,49,128,49,0,51,0,60,0,60,252,124,112, + 102,48,199,48,195,176,193,224,192,224,96,176,63,28,2,8, + 8,6,2,9,192,192,192,192,192,192,192,128,6,22,22,7, + 1,252,12,24,16,32,96,96,64,192,192,192,192,192,192,192, + 192,64,96,96,32,48,24,12,6,22,22,7,0,252,192,96, + 48,16,24,24,8,12,12,12,12,12,12,12,12,8,24,24, + 16,32,96,192,9,10,20,10,1,8,24,0,24,0,137,0, + 235,128,60,0,60,0,235,0,137,0,24,0,24,0,8,8, + 8,9,1,2,24,24,24,255,24,24,24,24,4,6,6,5, + 0,253,112,240,48,48,32,64,6,1,1,8,1,5,252,2, + 3,3,5,2,0,192,192,192,9,22,44,11,1,252,0,128, + 1,128,1,0,3,0,3,0,2,0,6,0,6,0,12,0, + 12,0,8,0,24,0,24,0,16,0,48,0,48,0,96,0, + 96,0,64,0,192,0,192,0,128,0,9,14,28,11,1,0, + 28,0,39,0,99,0,67,128,193,128,193,128,193,128,193,128, + 193,128,193,128,193,0,97,0,98,0,28,0,8,14,14,11, + 2,0,24,120,152,24,24,24,24,24,24,24,24,24,24,255, + 8,14,14,11,1,0,60,103,195,131,3,6,6,12,24,24, + 48,97,193,255,9,14,28,12,1,0,30,0,103,0,195,0, + 3,0,2,0,4,0,30,0,3,0,1,128,1,128,1,128, + 1,128,195,0,60,0,10,14,28,11,0,0,3,0,7,0, + 7,0,11,0,27,0,19,0,35,0,99,0,67,0,255,192, + 3,0,3,0,3,0,15,192,9,14,28,11,0,0,0,128, + 63,0,32,0,32,0,96,0,126,0,67,0,1,128,1,128, + 1,128,1,128,1,0,195,0,60,0,9,14,28,11,1,0, + 3,0,12,0,48,0,32,0,96,0,222,0,227,0,193,128, + 193,128,193,128,193,128,97,0,99,0,30,0,9,13,26,11, + 1,0,127,128,129,0,129,0,3,0,2,0,6,0,4,0, + 12,0,8,0,24,0,24,0,48,0,32,0,9,14,28,11, + 1,0,62,0,71,0,195,0,195,0,195,0,118,0,30,0, + 39,0,99,128,193,128,193,128,193,128,99,0,60,0,9,14, + 28,11,1,0,30,0,99,0,67,0,193,128,193,128,193,128, + 193,128,99,128,61,128,1,0,3,0,6,0,8,0,112,0, + 2,11,11,5,2,0,192,192,192,0,0,0,0,0,192,192, + 192,4,14,14,5,0,253,48,48,48,0,0,0,0,0,112, + 240,48,48,32,64,8,7,7,10,1,3,1,15,120,192,112, + 30,3,8,4,4,10,1,4,255,0,0,255,8,7,7,10, + 1,3,192,120,15,3,30,240,128,8,17,17,10,1,0,62, + 103,195,195,3,3,6,12,12,24,24,24,16,0,24,24,24, + 17,19,57,19,1,252,1,240,0,6,28,0,24,6,0,48, + 3,0,32,3,0,97,211,128,66,49,128,196,49,128,204,49, + 128,204,49,128,204,49,128,204,49,0,236,51,0,102,114,0, + 99,156,0,48,0,0,56,2,0,14,15,0,3,240,0,13, + 14,28,14,0,0,2,0,3,0,5,0,5,128,5,128,8, + 128,8,192,8,192,31,192,16,96,16,96,32,48,32,48,248, + 120,11,14,28,12,0,0,127,0,177,192,48,192,48,192,48, + 192,49,128,63,128,49,192,48,224,48,96,48,96,48,96,48, + 192,255,128,11,14,28,12,1,0,7,192,24,96,32,0,96, + 0,64,0,192,0,192,0,192,0,192,0,192,0,96,0,96, + 32,56,64,15,128,13,14,28,14,0,0,127,128,176,224,48, + 112,48,48,48,24,48,24,48,24,48,24,48,24,48,24,48, + 48,48,112,48,224,255,128,11,14,28,11,0,0,255,192,48, + 64,48,64,48,0,48,0,48,0,63,128,49,0,48,0,48, + 0,48,0,48,32,48,96,255,192,10,14,28,11,0,0,255, + 192,48,64,48,64,48,0,48,0,48,0,63,128,49,0,48, + 0,48,0,48,0,48,0,48,0,252,0,11,14,28,13,1, + 0,15,128,16,192,32,0,96,0,192,0,192,0,192,0,195, + 224,192,192,192,192,96,192,96,192,48,192,31,0,15,14,28, + 15,0,0,252,126,48,24,48,24,48,24,48,24,48,24,63, + 248,48,24,48,24,48,24,48,24,48,24,48,24,252,126,6, + 14,14,7,0,0,252,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,18,36,7,254,252,31,128,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,4,0,72,0,240,0,13,14,28, + 13,0,0,252,240,48,64,48,128,49,0,50,0,54,0,60, + 0,54,0,54,0,51,0,49,128,48,192,48,96,252,56,11, + 14,28,11,0,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,32,48,64,255, + 192,17,14,42,19,1,0,240,7,0,112,14,0,112,14,0, + 120,30,0,104,22,0,108,22,0,108,38,0,102,38,0,102, + 102,0,99,70,0,99,198,0,97,134,0,97,134,0,241,15, + 128,15,14,28,15,0,0,240,126,48,24,56,24,60,24,52, + 24,50,24,51,24,49,152,48,152,48,216,48,120,48,56,48, + 56,252,24,12,14,28,14,1,0,15,128,48,192,32,96,96, + 96,192,48,192,48,192,48,192,48,192,48,192,48,96,96,96, + 64,48,128,31,0,11,14,28,12,0,0,127,128,176,192,48, + 96,48,96,48,96,48,96,48,192,63,0,48,0,48,0,48, + 0,48,0,48,0,252,0,14,17,34,14,1,253,15,128,48, + 192,32,96,96,96,192,48,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,31,0,1,128,0,196,0,56,13, + 14,28,13,0,0,127,0,177,128,48,192,48,192,48,192,48, + 128,49,0,62,0,51,0,49,0,49,128,48,192,48,192,252, + 120,9,14,28,11,1,0,62,0,99,0,192,0,192,0,224, + 0,120,0,62,0,15,0,3,128,1,128,129,128,129,0,195, + 0,124,0,12,14,28,13,0,0,255,240,134,16,134,16,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,31,128,15,14,28,15,0,0,252,126,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,24,48,28,96,7,192,14,14,28,15,0,0,248,60,48, + 24,48,16,24,16,24,48,24,32,12,96,12,64,4,64,6, + 192,6,128,3,128,3,128,1,0,19,14,42,20,0,0,248, + 67,224,48,96,128,48,96,128,48,224,128,16,177,128,16,177, + 0,25,145,0,25,25,0,25,25,0,11,11,0,14,14,0, + 14,14,0,14,6,0,4,6,0,14,14,28,14,0,0,252, + 248,48,48,24,96,28,192,12,128,7,128,3,0,3,128,5, + 128,12,192,24,96,16,112,48,48,248,124,14,14,28,14,0, + 0,224,124,48,48,24,32,24,96,12,64,6,192,7,128,3, + 0,3,0,3,0,3,0,3,0,3,0,15,192,10,14,28, + 12,1,0,127,192,65,128,129,128,3,0,6,0,6,0,12, + 0,28,0,24,0,48,0,48,0,96,64,192,64,255,192,5, + 22,22,7,1,252,248,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,248,9,22,44,11,1, + 252,128,0,192,0,192,0,64,0,96,0,32,0,48,0,48, + 0,16,0,24,0,24,0,8,0,12,0,4,0,4,0,6, + 0,2,0,3,0,3,0,1,0,1,128,0,128,5,22,22, + 8,1,252,248,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,248,9,11,22,11,1,6,8, + 0,12,0,28,0,22,0,54,0,34,0,35,0,99,0,65, + 128,65,128,129,128,9,1,2,11,1,253,255,128,5,5,5, + 7,0,12,224,96,48,16,8,10,10,20,11,1,0,30,0, + 99,0,195,0,3,0,31,0,99,0,195,0,195,0,199,0, + 123,192,10,17,34,12,1,0,96,0,224,0,96,0,96,0, + 96,0,96,0,96,0,103,0,121,128,113,192,96,192,96,192, + 96,192,96,192,96,128,113,0,30,0,9,10,20,10,1,0, + 15,0,49,128,96,0,192,0,192,0,192,0,192,0,96,0, + 113,128,30,0,11,17,34,12,1,0,1,128,7,128,1,128, + 1,128,1,128,1,128,1,128,31,128,35,128,65,128,193,128, + 193,128,193,128,193,128,225,128,103,160,57,192,9,10,20,11, + 1,0,30,0,33,0,65,128,255,128,192,0,192,0,192,0, + 224,0,113,128,62,0,9,17,34,7,0,0,7,128,9,0, + 16,0,48,0,48,0,48,0,48,0,126,0,176,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,252,0,12,15, + 30,12,0,251,31,48,49,192,96,192,96,192,96,192,49,128, + 31,0,24,0,56,0,31,192,96,112,192,48,192,48,96,96, + 63,128,13,17,34,13,0,0,48,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,96,56,96,48,96,48,96, + 48,96,48,96,48,96,48,96,253,248,6,15,15,6,0,0, + 48,48,48,0,0,48,240,48,48,48,48,48,48,48,252,7, + 20,20,6,253,251,6,6,6,0,0,6,30,6,6,6,6, + 6,6,6,6,6,6,4,8,240,12,17,34,12,0,0,48, + 0,240,0,48,0,48,0,48,0,48,0,48,0,49,224,49, + 128,51,0,52,0,60,0,54,0,51,0,49,128,48,192,248, + 240,6,17,17,6,0,0,48,240,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,10,30,20,0,0,113,199, + 128,182,104,192,56,112,192,48,96,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,253,251,240,13,10,20,13, + 0,0,113,192,182,96,56,96,48,96,48,96,48,96,48,96, + 48,96,48,96,253,248,10,10,20,12,1,0,30,0,35,128, + 65,128,192,192,192,192,192,192,192,192,224,128,113,0,30,0, + 11,15,30,12,0,251,115,128,188,192,56,224,48,96,48,96, + 48,96,48,96,48,64,56,192,55,0,48,0,48,0,48,0, + 48,0,252,0,11,15,30,12,1,251,30,128,35,128,97,128, + 193,128,193,128,193,128,193,128,225,128,99,128,61,128,1,128, + 1,128,1,128,1,128,7,224,9,10,20,9,0,0,51,128, + 252,128,56,0,48,0,48,0,48,0,48,0,48,0,48,0, + 252,0,7,10,10,9,1,0,124,204,192,224,120,30,6,134, + 134,248,8,14,14,8,0,0,16,48,48,48,127,176,48,48, + 48,48,48,48,49,30,11,10,20,12,1,0,97,128,231,128, + 97,128,97,128,97,128,97,128,97,128,97,128,103,160,57,192, + 11,10,20,11,0,0,249,224,32,64,48,128,48,128,25,128, + 25,0,9,0,14,0,6,0,4,0,16,10,20,16,0,0, + 248,143,33,130,49,196,49,196,19,100,26,108,26,40,12,56, + 12,56,12,16,11,10,20,12,0,0,249,224,48,128,25,0, + 15,0,6,0,14,0,11,0,17,128,32,192,241,224,12,15, + 30,11,255,251,124,240,16,32,24,64,24,64,12,192,12,128, + 4,128,7,0,3,0,3,0,2,0,6,0,4,0,120,0, + 240,0,8,10,10,10,1,0,255,131,134,12,8,24,48,97, + 65,255,6,22,22,8,1,252,4,24,16,48,48,48,56,24, + 24,24,48,240,24,24,24,24,48,48,48,48,24,4,2,24, + 24,5,2,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,6,22,22,8, + 1,252,128,96,48,48,48,48,96,96,96,96,60,16,32,96, + 96,112,48,48,48,32,96,128,10,4,8,11,1,5,48,64, + 124,128,159,0,135,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=22 h=27 x= 3 y=16 dx=23 dy= 0 ascent=23 len=66 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17[7056] U8G_SECTION(".progmem.u8g_font_gdr17") = { + 0,40,38,242,247,17,4,64,9,46,32,255,250,23,249,21, + 250,0,0,0,6,0,0,3,21,21,7,2,255,96,224,224, + 224,224,96,96,96,96,96,64,64,64,64,64,0,0,96,224, + 224,192,7,9,9,11,2,11,102,230,230,198,198,70,70,70, + 70,12,15,30,13,1,2,6,96,6,96,4,64,4,64,12, + 192,63,240,8,128,25,128,17,0,255,224,51,0,34,0,34, + 0,102,0,68,0,11,20,40,12,0,254,6,0,6,0,15, + 128,55,224,102,64,102,0,102,0,118,0,62,0,31,128,7, + 192,6,224,6,96,134,96,198,96,230,192,127,192,31,0,6, + 0,6,0,17,16,48,19,1,0,56,6,0,108,12,0,198, + 24,0,198,24,0,198,48,0,198,96,0,198,192,0,108,192, + 0,57,158,0,3,51,0,6,97,128,6,97,128,12,97,128, + 24,97,128,48,51,0,32,30,0,17,19,57,18,1,0,3, + 192,0,12,224,0,8,96,0,24,96,0,24,96,0,24,192, + 0,29,192,0,31,128,0,14,0,0,62,63,128,119,29,0, + 103,12,0,195,140,0,193,204,0,193,232,0,192,248,0,96, + 120,0,112,222,0,31,7,128,3,9,9,7,2,11,96,224, + 224,192,192,64,64,64,64,6,25,25,9,2,252,4,8,24, + 48,32,96,96,96,192,192,192,192,192,192,192,192,192,224,96, + 96,96,48,24,8,4,6,25,25,9,1,252,128,64,96,48, + 24,24,24,24,12,12,12,12,12,12,12,12,12,24,24,24, + 48,48,96,64,128,10,12,24,12,1,9,12,0,12,0,140, + 0,204,192,119,128,30,0,30,0,119,128,204,192,12,128,12, + 0,12,0,10,9,18,11,1,3,12,0,12,0,12,0,12, + 0,255,192,12,0,12,0,12,0,12,0,4,7,7,6,1, + 252,112,240,48,48,32,96,64,7,1,1,9,1,6,254,3, + 4,4,6,2,255,96,224,224,192,11,25,50,13,1,252,0, + 96,0,96,0,192,0,192,1,128,1,128,1,128,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,224,0,192,0,192, + 0,11,16,32,13,1,0,15,0,49,128,96,192,64,192,64, + 224,192,96,192,96,192,96,192,96,192,96,192,96,192,64,96, + 64,96,192,49,128,30,0,9,16,32,13,2,0,12,0,60, + 0,252,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,128,10,16,32, + 13,1,0,15,0,49,128,96,192,96,192,0,192,0,192,1, + 128,1,128,3,0,6,0,12,0,28,0,24,0,48,64,96, + 64,255,192,10,16,32,13,1,0,30,0,99,0,97,128,193, + 128,1,128,3,0,6,0,31,0,3,128,1,192,0,192,0, + 192,0,192,1,128,193,128,62,0,11,16,32,13,1,0,1, + 128,3,128,7,128,5,128,13,128,25,128,17,128,49,128,97, + 128,65,128,255,224,1,128,1,128,1,128,1,128,15,224,10, + 16,32,13,1,0,63,192,32,0,32,0,32,0,96,0,96, + 0,127,0,67,128,1,192,0,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,3,128,14,0,24, + 0,48,0,96,0,96,0,207,0,241,192,192,224,192,96,192, + 96,192,96,96,96,96,64,48,128,31,0,11,16,32,13,1, + 0,127,224,64,192,128,192,0,128,1,128,1,128,3,0,3, + 0,6,0,6,0,4,0,12,0,12,0,24,0,24,0,48, + 0,11,16,32,13,1,0,31,0,113,128,224,192,224,192,224, + 192,241,128,63,0,15,128,51,192,96,224,192,96,192,96,192, + 96,192,64,96,128,31,0,11,17,34,13,1,255,31,0,49, + 128,96,192,192,192,192,96,192,96,192,96,224,96,113,224,30, + 96,0,224,0,192,0,192,1,128,3,0,14,0,48,0,3, + 14,14,6,2,255,64,224,224,224,0,0,0,0,0,0,96, + 224,224,192,4,17,17,6,1,252,32,112,112,112,0,0,0, + 0,0,0,112,240,48,48,32,96,64,10,9,18,12,1,3, + 0,192,3,192,31,0,120,0,224,0,248,0,30,0,7,192, + 0,192,10,5,10,12,1,5,255,192,0,0,0,0,0,0, + 255,192,10,9,18,12,1,3,192,0,248,0,30,0,7,192, + 1,192,7,128,60,0,240,0,128,0,10,20,40,12,1,255, + 31,0,97,128,192,192,192,192,192,192,0,192,1,128,1,128, + 3,0,6,0,6,0,12,0,12,0,12,0,8,0,0,0, + 12,0,28,0,28,0,24,0,20,22,66,22,1,251,0,252, + 0,3,7,0,12,1,192,24,0,192,48,0,96,32,244,96, + 97,28,112,67,12,48,194,12,48,198,12,48,198,12,48,198, + 12,48,198,12,32,198,12,96,227,12,64,99,60,128,97,199, + 0,48,0,0,56,0,0,28,0,64,7,3,128,1,252,0, + 16,17,34,16,0,0,0,128,1,128,3,128,3,192,2,192, + 6,192,6,96,4,96,12,112,12,48,15,240,24,24,24,24, + 16,24,48,12,48,12,248,63,12,17,34,14,1,0,127,128, + 176,192,48,96,48,96,48,96,48,64,49,128,63,192,48,224, + 48,96,48,48,48,48,48,48,48,48,48,96,48,224,255,128, + 12,17,34,14,1,0,7,224,24,112,48,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,48,16,24,32,15,192,14,17,34,16,1,0,127,128, + 176,224,48,48,48,24,48,24,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,24,48,24,48,48,48,96,255,128, + 12,17,34,13,1,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,11,17,34,13,1,0,255,224, + 48,32,48,32,48,0,48,0,48,0,48,0,63,128,49,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 14,17,34,16,1,0,3,240,12,56,16,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,252,192,24,192,24,96,24, + 96,24,48,24,24,24,7,224,16,17,34,18,1,0,252,63, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,63,252, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,252,63, + 6,17,17,8,1,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,10,22,44,8,253,251,31,192,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,2,0,6,0,68,0,248,0,15,17,34,16,1,0,252, + 252,48,48,48,96,48,192,49,128,51,0,54,0,52,0,62, + 0,54,0,51,0,49,128,49,192,48,224,48,112,48,56,252, + 30,12,17,34,13,1,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,16,48,48,255,224,20,17,51,22,1,0,240, + 1,224,56,1,192,56,3,192,44,2,192,44,6,192,44,6, + 192,38,4,192,38,12,192,35,8,192,35,24,192,35,152,192, + 33,144,192,33,176,192,32,224,192,32,224,192,32,64,192,248, + 67,240,16,17,34,18,1,0,240,63,48,12,56,12,60,12, + 52,12,54,12,51,12,51,12,49,140,48,204,48,204,48,108, + 48,60,48,60,48,28,48,28,252,12,14,17,34,16,1,0, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,8,96,24,96,16,48,48,24,96, + 15,128,12,17,34,14,1,0,127,128,176,224,48,96,48,48, + 48,48,48,48,48,48,48,96,48,192,63,128,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,16,21,42,16,1,252, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,96,24,48,48,24,96, + 15,192,0,192,0,96,0,49,0,14,14,17,34,15,1,0, + 127,0,177,192,48,96,48,96,48,96,48,96,48,192,49,192, + 63,0,51,0,49,128,49,128,48,192,48,224,48,96,48,112, + 252,60,10,17,34,13,2,0,31,0,99,128,193,0,192,0, + 224,0,240,0,124,0,126,0,31,128,7,128,1,192,0,192, + 0,192,128,192,128,128,193,0,126,0,14,17,34,15,0,0, + 255,252,131,4,131,4,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 15,192,16,17,34,18,1,0,252,63,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,24,24,24,12,48,7,224,17,17,51,18,0,0, + 252,15,128,48,6,0,24,6,0,24,4,0,24,12,0,12, + 12,0,12,8,0,14,24,0,6,24,0,6,16,0,3,48, + 0,3,32,0,3,96,0,1,224,0,1,192,0,1,192,0, + 0,128,0,22,17,51,23,0,0,252,16,124,48,16,16,48, + 56,16,24,56,48,24,56,48,24,108,48,24,108,32,24,76, + 32,12,198,96,12,198,96,12,134,96,13,131,64,7,131,64, + 7,3,192,7,1,192,7,1,192,6,1,128,16,17,34,17, + 0,0,124,63,56,28,24,24,12,48,14,48,7,96,3,192, + 3,192,1,192,3,192,3,224,6,112,12,48,12,24,24,28, + 56,14,252,63,15,17,34,16,0,0,240,62,56,12,24,24, + 28,24,14,48,6,32,7,96,3,192,3,192,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,7,224,12,17,34,14, + 1,0,127,240,64,96,64,224,128,192,1,192,3,128,3,0, + 7,0,6,0,14,0,28,0,24,0,56,0,48,16,112,16, + 224,48,255,240,6,25,25,8,2,252,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,252,11,25,50,13,1,252,128,0,192,0,64,0,96, + 0,96,0,48,0,48,0,48,0,24,0,24,0,8,0,12, + 0,12,0,6,0,6,0,2,0,3,0,3,0,1,128,1, + 128,1,128,0,192,0,192,0,64,0,96,6,25,25,9,1, + 252,252,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,252,11,13,26,13,1,7, + 6,0,14,0,14,0,15,0,27,0,19,0,17,128,49,128, + 33,192,96,192,96,192,64,96,192,64,11,1,2,13,1,253, + 255,224,6,6,6,9,0,14,96,224,48,24,8,4,11,12, + 24,12,1,0,31,0,97,128,225,128,1,128,1,128,31,128, + 121,128,225,128,193,128,193,128,199,128,121,224,13,20,40,14, + 0,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,54,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,16,48,48,56,96,15,128,10,12,24,12,1,0, + 15,192,48,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,96,64,48,192,31,0,13,20,40,14,1,0,0,96, + 1,224,0,96,0,96,0,96,0,96,0,96,0,96,15,224, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,120,30,96,10,12,24,12,1,0,15,0,49,128, + 96,192,64,192,255,192,192,0,192,0,192,0,224,0,96,64, + 48,128,31,0,10,20,40,8,1,0,3,192,12,128,24,0, + 16,0,48,0,48,0,48,0,48,0,255,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,13,18,36,13,0,250,15,24,48,240,32,96,96,96, + 96,96,96,96,56,192,31,0,24,0,56,0,63,128,31,240, + 48,120,192,24,192,24,192,16,112,96,31,128,14,20,40,15, + 1,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,50,48,52,48,56,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,252,6,18,18,7,1,0, + 48,112,48,0,0,0,48,240,48,48,48,48,48,48,48,48, + 48,252,8,24,24,7,253,250,3,7,3,0,0,0,3,15, + 3,3,3,3,3,3,3,3,3,3,3,3,2,2,4,248, + 13,20,40,14,1,0,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,240,48,192,49,128,51,0,52,0, + 60,0,54,0,51,0,49,128,48,192,48,224,248,120,6,20, + 20,7,1,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,12,36,21,1,0,113,195, + 128,182,108,192,56,112,192,56,112,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,48,96,192,48,96,192,253, + 251,240,14,12,24,15,1,0,113,224,178,48,52,48,56,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,252, + 12,12,24,14,1,0,15,128,48,192,96,96,64,112,192,48, + 192,48,192,48,192,48,224,32,96,96,48,192,31,0,12,18, + 36,14,1,250,113,192,182,224,56,96,48,48,48,48,48,48, + 48,48,48,48,48,32,48,96,56,64,55,128,48,0,48,0, + 48,0,48,0,48,0,252,0,13,18,36,14,1,250,15,32, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,96,30,96,0,96,0,96,0,96,0,96,0,96, + 1,248,10,12,24,11,1,0,51,192,244,128,56,128,56,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 8,12,12,10,1,0,62,70,194,224,240,124,30,7,131,131, + 198,124,9,17,34,9,0,0,16,0,48,0,48,0,48,0, + 48,0,255,128,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,0,30,128,14,12,24,14,0,0, + 48,48,240,240,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,112,56,188,31,48,13,12,24,13,0,0,248,120, + 48,48,48,32,24,96,24,64,28,64,12,192,12,128,7,128, + 7,0,7,0,2,0,19,12,36,19,0,0,248,99,224,48, + 96,128,48,96,128,48,241,128,24,177,128,25,177,0,25,153, + 0,13,27,0,15,26,0,14,14,0,6,14,0,4,4,0, + 13,12,24,14,0,0,252,248,56,96,24,64,12,128,7,128, + 7,0,7,128,13,128,8,192,16,96,48,112,248,248,14,18, + 36,13,255,250,124,60,24,24,24,16,12,48,12,32,14,32, + 6,96,6,64,3,192,3,128,3,128,1,128,1,0,3,0, + 2,0,6,0,124,0,240,0,10,12,24,12,1,0,127,192, + 65,128,131,128,3,0,6,0,12,0,28,0,24,0,48,0, + 112,64,96,64,255,192,6,25,25,9,2,252,4,8,24,48, + 48,48,48,24,24,24,24,48,224,56,24,24,24,24,48,48, + 48,48,16,24,4,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,6,25,25,9,1,252,128,96,32,48, + 48,48,48,96,96,96,96,48,28,48,96,96,96,96,48,48, + 48,48,96,64,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,6,0,0,3,19,19,7,2,249, + 96,224,224,192,64,64,64,64,64,96,96,96,96,224,224,224, + 224,224,192,11,17,34,13,1,255,6,0,6,0,7,128,31, + 224,38,64,102,0,198,0,198,0,198,0,198,0,198,0,230, + 32,118,64,63,128,15,0,6,0,6,0,11,16,32,13,1, + 0,7,192,24,224,16,64,48,64,48,0,48,0,48,0,48, + 0,255,0,48,0,48,0,48,0,48,32,32,32,96,96,255, + 224,9,8,16,13,2,4,128,128,93,0,119,0,99,0,99, + 0,119,0,93,0,128,128,14,16,32,13,255,0,240,124,48, + 48,24,96,28,96,12,192,14,192,7,128,3,128,3,0,63, + 240,3,0,3,0,3,0,3,0,3,0,15,192,2,27,27, + 6,2,251,192,192,192,192,192,192,192,192,192,192,192,192,128, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,31,0,35,128,97,0,96,0,112,0,60,0, + 127,0,199,128,195,192,193,192,224,192,120,192,63,128,15,0, + 3,128,65,128,65,128,97,0,62,0,9,3,6,11,1,15, + 193,128,193,128,193,128,17,17,51,19,1,0,3,224,0,12, + 24,0,48,6,0,48,246,0,99,27,0,102,1,0,204,1, + 128,204,1,128,204,1,128,204,1,128,204,1,128,70,19,0, + 103,19,0,49,230,0,48,6,0,12,24,0,3,224,0,7, + 8,8,7,0,8,56,76,140,60,108,108,126,126,10,12,24, + 13,1,0,8,64,24,192,16,128,49,128,99,0,230,0,231, + 0,99,0,49,128,16,128,8,192,8,64,11,6,12,13,1, + 2,255,224,0,96,0,96,0,96,0,96,0,96,7,1,1, + 9,1,6,254,9,9,18,10,0,10,62,0,99,0,255,128, + 146,128,156,128,152,128,213,128,107,0,62,0,9,1,2,13, + 2,16,255,128,6,6,6,10,2,10,56,76,204,204,200,112, + 10,12,24,11,1,2,12,0,12,0,12,0,12,0,255,192, + 12,0,12,0,12,0,12,0,0,0,0,0,255,128,7,10, + 10,9,1,8,60,70,198,6,12,24,16,32,66,254,8,10, + 10,9,255,8,30,35,67,2,14,3,3,3,198,60,5,6, + 6,9,3,14,24,56,48,96,192,128,14,18,36,14,0,250, + 48,48,240,112,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,240,63,188,55,56,48,0,48,0,48,0,48,0, + 56,0,48,0,13,20,40,15,1,253,31,248,49,224,97,224, + 193,224,193,224,193,224,193,224,97,224,113,224,31,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 7,248,2,3,3,4,1,8,192,192,192,5,6,6,6,0, + 250,48,32,56,88,16,224,7,10,10,9,1,8,24,248,24, + 24,24,24,24,24,24,126,6,8,8,8,1,8,56,76,204, + 204,204,200,112,252,10,12,24,13,2,0,132,0,198,0,98, + 0,35,0,49,128,24,192,25,192,49,128,35,0,98,0,198, + 0,132,0,14,16,32,16,1,0,48,24,240,56,48,48,48, + 96,48,192,48,192,49,128,255,0,3,24,6,56,12,88,12, + 88,24,152,17,252,48,24,96,60,13,16,32,15,1,0,48, + 8,240,16,48,48,48,32,48,96,48,192,48,128,253,128,3, + 112,2,152,7,24,4,16,8,48,24,96,16,200,49,248,14, + 16,32,16,1,0,56,24,204,16,12,48,56,32,12,64,12, + 192,140,128,113,128,3,24,2,56,6,88,12,88,8,152,25, + 252,16,24,48,60,10,19,38,12,1,249,6,0,14,0,14, + 0,12,0,2,0,6,0,6,0,6,0,12,0,28,0,56, + 0,112,0,96,0,192,0,192,192,192,192,192,192,97,128,62, + 0,16,23,46,16,0,0,12,0,30,0,7,0,1,128,0, + 64,0,0,0,128,1,128,3,128,3,192,2,192,6,192,6, + 96,4,96,12,112,12,48,15,240,24,24,24,24,16,24,48, + 12,48,12,248,63,16,23,46,16,0,0,0,48,0,112,1, + 192,3,128,2,0,0,0,0,128,1,128,3,128,3,192,2, + 192,6,192,6,96,4,96,12,112,12,48,15,240,24,24,24, + 24,16,24,48,12,48,12,248,63,16,22,44,16,0,0,3, + 128,6,192,12,32,8,16,0,0,0,128,1,128,3,128,3, + 192,2,192,6,192,6,96,4,96,12,112,12,48,15,240,24, + 24,24,24,16,24,48,12,48,12,248,63,16,22,44,16,0, + 0,0,16,7,176,9,224,16,192,0,0,0,128,1,128,3, + 128,3,192,2,192,6,192,6,96,4,96,12,112,12,48,15, + 240,24,24,24,24,16,24,48,12,48,12,248,63,16,21,42, + 16,0,0,12,48,12,48,8,32,0,0,0,128,1,128,3, + 128,3,192,2,192,6,192,6,96,4,96,12,112,12,48,15, + 240,24,24,24,24,16,24,48,12,48,12,248,63,16,23,46, + 16,0,0,1,192,3,96,3,96,3,192,1,128,0,0,0, + 128,1,128,3,128,3,192,2,192,6,192,6,96,4,96,12, + 112,12,48,15,240,24,24,24,24,16,24,48,12,48,12,248, + 63,20,17,51,21,0,0,7,255,224,1,176,32,1,176,32, + 1,48,0,3,48,0,3,48,0,6,48,0,7,255,192,4, + 48,128,12,48,0,12,48,0,24,48,0,24,48,0,16,48, + 0,48,48,16,48,48,48,248,255,240,12,23,46,14,1,250, + 7,224,24,112,48,0,32,0,96,0,64,0,192,0,192,0, + 192,0,192,0,192,0,192,0,224,0,96,32,112,32,61,192, + 31,128,4,0,4,0,7,0,3,0,2,0,28,0,12,23, + 46,13,1,0,48,0,120,0,28,0,6,0,1,0,0,0, + 255,224,48,32,48,32,48,0,48,0,48,0,48,0,63,192, + 48,128,48,0,48,0,48,0,48,0,48,0,48,16,48,48, + 255,224,12,23,46,13,1,0,0,192,3,192,7,0,12,0, + 16,0,0,0,255,224,48,32,48,32,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,16,48,48,255,224,12,22,44,13,1,0,14,0,27,0, + 48,128,64,64,0,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,12,21,42,13,1,0,32,128, + 97,128,32,128,0,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,8,23,23,8,255,0,96,240, + 56,12,2,0,63,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,63,7,23,23,8,1,0,6,14,56,112,64, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,8,22,22,8,0,0,56,108,194,129,0,126,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,126,8,21, + 21,8,0,0,195,195,130,0,126,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,126,14,17,34,16,1,0,127, + 128,176,224,48,48,48,24,48,24,48,12,48,12,48,12,255, + 12,48,12,48,12,48,12,48,24,48,24,48,48,48,96,255, + 128,16,22,44,18,1,0,0,16,7,176,9,224,16,192,0, + 0,240,63,48,12,56,12,60,12,52,12,54,12,51,12,51, + 12,49,140,48,204,48,204,48,108,48,60,48,60,48,28,48, + 28,252,12,14,23,46,16,1,0,24,0,28,0,7,0,3, + 128,0,128,0,0,7,192,24,96,48,48,96,24,96,24,64, + 12,192,12,192,12,192,12,192,12,192,12,192,8,96,24,96, + 16,48,48,24,96,15,128,14,23,46,16,1,0,0,96,0, + 240,1,192,3,0,4,0,0,0,7,192,24,96,48,48,96, + 24,96,24,64,12,192,12,192,12,192,12,192,12,192,12,192, + 8,96,24,96,16,48,48,24,96,15,128,14,22,44,16,1, + 0,3,128,4,192,8,96,16,32,0,0,7,192,24,96,48, + 48,96,24,96,24,64,12,192,12,192,12,192,12,192,12,192, + 12,192,8,96,24,96,16,48,48,24,96,15,128,14,22,44, + 16,1,0,0,32,15,48,19,224,32,128,0,0,7,192,24, + 96,48,48,96,24,96,24,64,12,192,12,192,12,192,12,192, + 12,192,12,192,8,96,24,96,16,48,48,24,96,15,128,14, + 21,42,16,1,0,24,96,24,96,16,64,0,0,7,192,24, + 96,48,48,96,24,96,24,64,12,192,12,192,12,192,12,192, + 12,192,12,192,8,96,24,96,16,48,48,24,96,15,128,9, + 9,18,11,1,3,193,128,99,0,54,0,28,0,28,0,28, + 0,54,0,99,0,193,128,14,18,36,16,1,255,7,204,24, + 120,48,48,32,120,96,120,64,220,193,204,193,140,195,12,199, + 12,198,12,204,8,104,24,120,16,48,48,120,96,207,128,128, + 0,16,23,46,18,1,0,12,0,30,0,7,0,1,192,0, + 64,0,0,252,63,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,24,24, + 24,12,48,7,224,16,23,46,18,1,0,0,48,0,112,1, + 192,3,128,2,0,0,0,252,63,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,24,24,24,12,48,7,224,16,22,44,18,1,0,1, + 128,2,64,4,32,8,16,0,0,252,63,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,24,24,24,12,48,7,224,16,21,42,18,1, + 0,12,48,12,48,8,32,0,0,252,63,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,48,12,48,12,48, + 12,48,12,48,24,24,24,12,48,7,224,15,23,46,16,0, + 0,0,48,0,112,0,192,3,128,2,0,0,0,240,62,56, + 12,24,24,28,24,14,48,6,32,7,96,3,192,3,192,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,7,224,12, + 17,34,14,1,0,252,0,48,0,48,0,63,128,48,224,48, + 96,48,48,48,48,48,48,48,48,48,48,48,96,56,192,55, + 128,48,0,48,0,252,0,14,20,40,15,1,0,3,192,12, + 224,24,112,16,48,48,48,48,48,48,96,49,192,51,0,54, + 0,54,0,55,128,51,224,48,248,48,60,48,28,50,12,50, + 12,51,24,243,240,11,20,40,12,1,0,48,0,120,0,24, + 0,12,0,4,0,2,0,0,0,0,0,31,0,97,128,225, + 128,1,128,1,128,31,128,121,128,225,128,193,128,193,128,199, + 128,121,224,11,20,40,12,1,0,1,128,3,128,3,0,6, + 0,4,0,8,0,0,0,0,0,31,0,97,128,225,128,1, + 128,1,128,31,128,121,128,225,128,193,128,193,128,199,128,121, + 224,11,19,38,12,1,0,12,0,30,0,19,0,33,128,64, + 192,0,0,0,0,31,0,97,128,225,128,1,128,1,128,31, + 128,121,128,225,128,193,128,193,128,199,128,121,224,11,18,36, + 12,1,0,24,64,60,128,71,0,0,0,0,0,0,0,31, + 0,97,128,225,128,1,128,1,128,31,128,121,128,225,128,193, + 128,193,128,199,128,121,224,11,18,36,12,1,0,97,128,97, + 128,97,128,0,0,0,0,0,0,31,0,97,128,225,128,1, + 128,1,128,31,128,121,128,225,128,193,128,193,128,199,128,121, + 224,11,19,38,12,1,0,14,0,11,0,27,0,27,0,14, + 0,0,0,0,0,31,0,97,128,225,128,1,128,1,128,31, + 128,121,128,225,128,193,128,193,128,199,128,121,224,17,12,36, + 19,1,0,31,62,0,97,195,0,97,193,128,193,129,128,15, + 255,128,57,128,0,97,128,0,193,128,0,193,128,0,193,193, + 0,198,227,0,120,124,0,10,18,36,12,1,250,15,192,48, + 192,96,128,64,0,192,0,192,0,192,0,192,0,224,0,96, + 64,120,192,63,0,12,0,4,0,7,0,3,0,2,0,28, + 0,10,20,40,12,1,0,48,0,56,0,24,0,12,0,6, + 0,2,0,0,0,0,0,15,0,49,128,96,192,64,192,255, + 192,192,0,192,0,192,0,224,0,96,64,48,128,31,0,10, + 20,40,12,1,0,1,192,1,128,3,0,2,0,4,0,12, + 0,0,0,0,0,15,0,49,128,96,192,64,192,255,192,192, + 0,192,0,192,0,224,0,96,64,48,128,31,0,10,19,38, + 12,1,0,6,0,15,0,25,0,48,128,32,64,0,0,0, + 0,15,0,49,128,96,192,64,192,255,192,192,0,192,0,192, + 0,224,0,96,64,48,128,31,0,10,18,36,12,1,0,32, + 128,48,192,32,128,0,0,0,0,0,0,15,0,49,128,96, + 192,64,192,255,192,192,0,192,0,192,0,224,0,96,64,48, + 128,31,0,7,20,20,7,0,0,192,224,112,48,24,8,0, + 0,24,120,24,24,24,24,24,24,24,24,24,126,7,20,20, + 7,1,0,14,12,24,16,48,96,0,0,48,240,48,48,48, + 48,48,48,48,48,48,252,8,19,19,7,0,0,24,60,100, + 194,129,0,0,24,120,24,24,24,24,24,24,24,24,24,126, + 8,18,18,7,0,0,130,195,130,0,0,0,24,120,24,24, + 24,24,24,24,24,24,24,126,11,19,38,13,1,0,24,0, + 60,224,7,128,31,0,49,128,0,192,0,192,15,192,49,224, + 96,224,64,96,192,96,192,96,192,96,192,64,224,192,96,192, + 49,128,30,0,14,18,36,15,1,0,12,32,31,64,35,128, + 0,0,0,0,0,0,113,224,178,48,52,48,56,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,12,20, + 40,14,1,0,56,0,24,0,12,0,4,0,6,0,3,0, + 0,0,0,0,15,128,48,192,96,96,64,112,192,48,192,48, + 192,48,192,48,224,32,96,96,48,192,31,0,12,20,40,14, + 1,0,0,192,1,128,3,128,3,0,6,0,4,0,0,0, + 0,0,15,128,48,192,96,96,64,112,192,48,192,48,192,48, + 192,48,224,32,96,96,48,192,31,0,12,19,38,14,1,0, + 6,0,15,0,25,128,16,128,32,64,0,0,0,0,15,128, + 48,192,96,96,64,112,192,48,192,48,192,48,192,48,224,32, + 96,96,48,192,31,0,12,18,36,14,1,0,28,96,62,64, + 35,128,0,0,0,0,0,0,15,128,48,192,96,96,64,112, + 192,48,192,48,192,48,192,48,224,32,96,96,48,192,31,0, + 12,18,36,14,1,0,48,192,48,192,48,192,0,0,0,0, + 0,0,15,128,48,192,96,96,64,112,192,48,192,48,192,48, + 192,48,224,32,96,96,48,192,31,0,9,9,18,11,1,3, + 12,0,12,0,0,0,0,0,255,128,0,0,0,0,12,0, + 12,0,12,14,28,14,1,255,0,16,15,176,49,224,96,224, + 65,240,195,48,198,48,198,48,204,48,248,32,112,96,120,192, + 223,0,128,0,14,20,40,14,0,0,28,0,12,0,6,0, + 3,0,1,0,1,128,0,0,0,0,48,48,240,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,112,56,188, + 31,48,14,20,40,14,0,0,0,96,0,224,0,192,1,128, + 3,0,2,0,0,0,0,0,48,48,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,112,56,188,31,48, + 14,19,38,14,0,0,3,0,7,128,4,192,8,96,16,32, + 0,0,0,0,48,48,240,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,112,56,188,31,48,14,18,36,14, + 0,0,24,96,24,96,24,96,0,0,0,0,0,0,48,48, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,112,56,188,31,48,14,26,52,13,255,250,0,112,0,96, + 0,224,0,192,1,128,1,0,0,0,0,0,124,60,24,24, + 24,16,12,48,12,32,14,32,6,96,6,64,3,192,3,128, + 3,128,1,128,1,0,3,0,2,0,6,0,124,0,240,0, + 12,26,52,14,1,250,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,51,192,52,224,56,96,48,48,48,48, + 48,48,48,48,48,48,48,32,48,96,56,64,55,128,48,0, + 48,0,48,0,48,0,48,0,252,0,14,24,48,13,255,250, + 12,48,12,48,8,32,0,0,0,0,0,0,124,60,24,24, + 24,16,12,48,12,32,14,32,6,96,6,64,3,192,3,128, + 3,128,1,128,1,0,3,0,2,0,6,0,124,0,240,0 + }; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 16 + Calculated Max Values w=11 h=25 x= 2 y= 9 dx=13 dy= 0 ascent=21 len=50 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =16 descent= 0 + X Font ascent =16 descent= 0 + Max Font ascent =21 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17n[539] U8G_SECTION(".progmem.u8g_font_gdr17n") = { + 0,40,38,242,247,16,0,0,0,0,42,57,0,21,252,16, + 0,10,12,24,12,1,9,12,0,12,0,140,0,204,192,119, + 128,30,0,30,0,119,128,204,192,12,128,12,0,12,0,10, + 9,18,11,1,3,12,0,12,0,12,0,12,0,255,192,12, + 0,12,0,12,0,12,0,4,7,7,6,1,252,112,240,48, + 48,32,96,64,7,1,1,9,1,6,254,3,4,4,6,2, + 255,96,224,224,192,11,25,50,13,1,252,0,96,0,96,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,6,0,6, + 0,6,0,12,0,12,0,12,0,24,0,24,0,48,0,48, + 0,48,0,96,0,96,0,224,0,192,0,192,0,11,16,32, + 13,1,0,15,0,49,128,96,192,64,192,64,224,192,96,192, + 96,192,96,192,96,192,96,192,96,192,64,96,64,96,192,49, + 128,30,0,9,16,32,13,2,0,12,0,60,0,252,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,255,128,10,16,32,13,1,0,15, + 0,49,128,96,192,96,192,0,192,0,192,1,128,1,128,3, + 0,6,0,12,0,28,0,24,0,48,64,96,64,255,192,10, + 16,32,13,1,0,30,0,99,0,97,128,193,128,1,128,3, + 0,6,0,31,0,3,128,1,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,1,128,3,128,7, + 128,5,128,13,128,25,128,17,128,49,128,97,128,65,128,255, + 224,1,128,1,128,1,128,1,128,15,224,10,16,32,13,1, + 0,63,192,32,0,32,0,32,0,96,0,96,0,127,0,67, + 128,1,192,0,192,0,192,0,192,0,192,1,128,193,128,62, + 0,11,16,32,13,1,0,3,128,14,0,24,0,48,0,96, + 0,96,0,207,0,241,192,192,224,192,96,192,96,192,96,96, + 96,96,64,48,128,31,0,11,16,32,13,1,0,127,224,64, + 192,128,192,0,128,1,128,1,128,3,0,3,0,6,0,6, + 0,4,0,12,0,12,0,24,0,24,0,48,0,11,16,32, + 13,1,0,31,0,113,128,224,192,224,192,224,192,241,128,63, + 0,15,128,51,192,96,224,192,96,192,96,192,96,192,64,96, + 128,31,0,11,17,34,13,1,255,31,0,49,128,96,192,192, + 192,192,96,192,96,192,96,224,96,113,224,30,96,0,224,0, + 192,0,192,1,128,3,0,14,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--27-270-72-72-P-125-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 17, '1' Height: 16 + Calculated Max Values w=22 h=27 x= 2 y=14 dx=23 dy= 0 ascent=22 len=66 + Font Bounding box w=40 h=38 x=-14 y=-9 + Calculated Min Values x=-3 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =21 descent=-6 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr17r[3380] U8G_SECTION(".progmem.u8g_font_gdr17r") = { + 0,40,38,242,247,17,4,64,9,46,32,127,250,22,250,21, + 250,0,0,0,6,0,0,3,21,21,7,2,255,96,224,224, + 224,224,96,96,96,96,96,64,64,64,64,64,0,0,96,224, + 224,192,7,9,9,11,2,11,102,230,230,198,198,70,70,70, + 70,12,15,30,13,1,2,6,96,6,96,4,64,4,64,12, + 192,63,240,8,128,25,128,17,0,255,224,51,0,34,0,34, + 0,102,0,68,0,11,20,40,12,0,254,6,0,6,0,15, + 128,55,224,102,64,102,0,102,0,118,0,62,0,31,128,7, + 192,6,224,6,96,134,96,198,96,230,192,127,192,31,0,6, + 0,6,0,17,16,48,19,1,0,56,6,0,108,12,0,198, + 24,0,198,24,0,198,48,0,198,96,0,198,192,0,108,192, + 0,57,158,0,3,51,0,6,97,128,6,97,128,12,97,128, + 24,97,128,48,51,0,32,30,0,17,19,57,18,1,0,3, + 192,0,12,224,0,8,96,0,24,96,0,24,96,0,24,192, + 0,29,192,0,31,128,0,14,0,0,62,63,128,119,29,0, + 103,12,0,195,140,0,193,204,0,193,232,0,192,248,0,96, + 120,0,112,222,0,31,7,128,3,9,9,7,2,11,96,224, + 224,192,192,64,64,64,64,6,25,25,9,2,252,4,8,24, + 48,32,96,96,96,192,192,192,192,192,192,192,192,192,224,96, + 96,96,48,24,8,4,6,25,25,9,1,252,128,64,96,48, + 24,24,24,24,12,12,12,12,12,12,12,12,12,24,24,24, + 48,48,96,64,128,10,12,24,12,1,9,12,0,12,0,140, + 0,204,192,119,128,30,0,30,0,119,128,204,192,12,128,12, + 0,12,0,10,9,18,11,1,3,12,0,12,0,12,0,12, + 0,255,192,12,0,12,0,12,0,12,0,4,7,7,6,1, + 252,112,240,48,48,32,96,64,7,1,1,9,1,6,254,3, + 4,4,6,2,255,96,224,224,192,11,25,50,13,1,252,0, + 96,0,96,0,192,0,192,1,128,1,128,1,128,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,224,0,192,0,192, + 0,11,16,32,13,1,0,15,0,49,128,96,192,64,192,64, + 224,192,96,192,96,192,96,192,96,192,96,192,96,192,64,96, + 64,96,192,49,128,30,0,9,16,32,13,2,0,12,0,60, + 0,252,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,255,128,10,16,32, + 13,1,0,15,0,49,128,96,192,96,192,0,192,0,192,1, + 128,1,128,3,0,6,0,12,0,28,0,24,0,48,64,96, + 64,255,192,10,16,32,13,1,0,30,0,99,0,97,128,193, + 128,1,128,3,0,6,0,31,0,3,128,1,192,0,192,0, + 192,0,192,1,128,193,128,62,0,11,16,32,13,1,0,1, + 128,3,128,7,128,5,128,13,128,25,128,17,128,49,128,97, + 128,65,128,255,224,1,128,1,128,1,128,1,128,15,224,10, + 16,32,13,1,0,63,192,32,0,32,0,32,0,96,0,96, + 0,127,0,67,128,1,192,0,192,0,192,0,192,0,192,1, + 128,193,128,62,0,11,16,32,13,1,0,3,128,14,0,24, + 0,48,0,96,0,96,0,207,0,241,192,192,224,192,96,192, + 96,192,96,96,96,96,64,48,128,31,0,11,16,32,13,1, + 0,127,224,64,192,128,192,0,128,1,128,1,128,3,0,3, + 0,6,0,6,0,4,0,12,0,12,0,24,0,24,0,48, + 0,11,16,32,13,1,0,31,0,113,128,224,192,224,192,224, + 192,241,128,63,0,15,128,51,192,96,224,192,96,192,96,192, + 96,192,64,96,128,31,0,11,17,34,13,1,255,31,0,49, + 128,96,192,192,192,192,96,192,96,192,96,224,96,113,224,30, + 96,0,224,0,192,0,192,1,128,3,0,14,0,48,0,3, + 14,14,6,2,255,64,224,224,224,0,0,0,0,0,0,96, + 224,224,192,4,17,17,6,1,252,32,112,112,112,0,0,0, + 0,0,0,112,240,48,48,32,96,64,10,9,18,12,1,3, + 0,192,3,192,31,0,120,0,224,0,248,0,30,0,7,192, + 0,192,10,5,10,12,1,5,255,192,0,0,0,0,0,0, + 255,192,10,9,18,12,1,3,192,0,248,0,30,0,7,192, + 1,192,7,128,60,0,240,0,128,0,10,20,40,12,1,255, + 31,0,97,128,192,192,192,192,192,192,0,192,1,128,1,128, + 3,0,6,0,6,0,12,0,12,0,12,0,8,0,0,0, + 12,0,28,0,28,0,24,0,20,22,66,22,1,251,0,252, + 0,3,7,0,12,1,192,24,0,192,48,0,96,32,244,96, + 97,28,112,67,12,48,194,12,48,198,12,48,198,12,48,198, + 12,48,198,12,32,198,12,96,227,12,64,99,60,128,97,199, + 0,48,0,0,56,0,0,28,0,64,7,3,128,1,252,0, + 16,17,34,16,0,0,0,128,1,128,3,128,3,192,2,192, + 6,192,6,96,4,96,12,112,12,48,15,240,24,24,24,24, + 16,24,48,12,48,12,248,63,12,17,34,14,1,0,127,128, + 176,192,48,96,48,96,48,96,48,64,49,128,63,192,48,224, + 48,96,48,48,48,48,48,48,48,48,48,96,48,224,255,128, + 12,17,34,14,1,0,7,224,24,112,48,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,48,16,24,32,15,192,14,17,34,16,1,0,127,128, + 176,224,48,48,48,24,48,24,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,24,48,24,48,48,48,96,255,128, + 12,17,34,13,1,0,255,224,48,32,48,32,48,0,48,0, + 48,0,48,0,63,192,48,128,48,0,48,0,48,0,48,0, + 48,0,48,16,48,48,255,224,11,17,34,13,1,0,255,224, + 48,32,48,32,48,0,48,0,48,0,48,0,63,128,49,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 14,17,34,16,1,0,3,240,12,56,16,0,32,0,96,0, + 64,0,192,0,192,0,192,0,192,252,192,24,192,24,96,24, + 96,24,48,24,24,24,7,224,16,17,34,18,1,0,252,63, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,63,252, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,252,63, + 6,17,17,8,1,0,252,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,10,22,44,8,253,251,31,192,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,2,0,6,0,68,0,248,0,15,17,34,16,1,0,252, + 252,48,48,48,96,48,192,49,128,51,0,54,0,52,0,62, + 0,54,0,51,0,49,128,49,192,48,224,48,112,48,56,252, + 30,12,17,34,13,1,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,16,48,48,255,224,20,17,51,22,1,0,240, + 1,224,56,1,192,56,3,192,44,2,192,44,6,192,44,6, + 192,38,4,192,38,12,192,35,8,192,35,24,192,35,152,192, + 33,144,192,33,176,192,32,224,192,32,224,192,32,64,192,248, + 67,240,16,17,34,18,1,0,240,63,48,12,56,12,60,12, + 52,12,54,12,51,12,51,12,49,140,48,204,48,204,48,108, + 48,60,48,60,48,28,48,28,252,12,14,17,34,16,1,0, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,8,96,24,96,16,48,48,24,96, + 15,128,12,17,34,14,1,0,127,128,176,224,48,96,48,48, + 48,48,48,48,48,48,48,96,48,192,63,128,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,16,21,42,16,1,252, + 7,192,24,96,48,48,96,24,96,24,64,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,96,24,48,48,24,96, + 15,192,0,192,0,96,0,49,0,14,14,17,34,15,1,0, + 127,0,177,192,48,96,48,96,48,96,48,96,48,192,49,192, + 63,0,51,0,49,128,49,128,48,192,48,224,48,96,48,112, + 252,60,10,17,34,13,2,0,31,0,99,128,193,0,192,0, + 224,0,240,0,124,0,126,0,31,128,7,128,1,192,0,192, + 0,192,128,192,128,128,193,0,126,0,14,17,34,15,0,0, + 255,252,131,4,131,4,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 15,192,16,17,34,18,1,0,252,63,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,24,24,24,12,48,7,224,17,17,51,18,0,0, + 252,15,128,48,6,0,24,6,0,24,4,0,24,12,0,12, + 12,0,12,8,0,14,24,0,6,24,0,6,16,0,3,48, + 0,3,32,0,3,96,0,1,224,0,1,192,0,1,192,0, + 0,128,0,22,17,51,23,0,0,252,16,124,48,16,16,48, + 56,16,24,56,48,24,56,48,24,108,48,24,108,32,24,76, + 32,12,198,96,12,198,96,12,134,96,13,131,64,7,131,64, + 7,3,192,7,1,192,7,1,192,6,1,128,16,17,34,17, + 0,0,124,63,56,28,24,24,12,48,14,48,7,96,3,192, + 3,192,1,192,3,192,3,224,6,112,12,48,12,24,24,28, + 56,14,252,63,15,17,34,16,0,0,240,62,56,12,24,24, + 28,24,14,48,6,32,7,96,3,192,3,192,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,7,224,12,17,34,14, + 1,0,127,240,64,96,64,224,128,192,1,192,3,128,3,0, + 7,0,6,0,14,0,28,0,24,0,56,0,48,16,112,16, + 224,48,255,240,6,25,25,8,2,252,252,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,252,11,25,50,13,1,252,128,0,192,0,64,0,96, + 0,96,0,48,0,48,0,48,0,24,0,24,0,8,0,12, + 0,12,0,6,0,6,0,2,0,3,0,3,0,1,128,1, + 128,1,128,0,192,0,192,0,64,0,96,6,25,25,9,1, + 252,252,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,252,11,13,26,13,1,7, + 6,0,14,0,14,0,15,0,27,0,19,0,17,128,49,128, + 33,192,96,192,96,192,64,96,192,64,11,1,2,13,1,253, + 255,224,6,6,6,9,0,14,96,224,48,24,8,4,11,12, + 24,12,1,0,31,0,97,128,225,128,1,128,1,128,31,128, + 121,128,225,128,193,128,193,128,199,128,121,224,13,20,40,14, + 0,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,54,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,16,48,48,56,96,15,128,10,12,24,12,1,0, + 15,192,48,192,96,128,64,0,192,0,192,0,192,0,192,0, + 192,0,96,64,48,192,31,0,13,20,40,14,1,0,0,96, + 1,224,0,96,0,96,0,96,0,96,0,96,0,96,15,224, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,120,30,96,10,12,24,12,1,0,15,0,49,128, + 96,192,64,192,255,192,192,0,192,0,192,0,224,0,96,64, + 48,128,31,0,10,20,40,8,1,0,3,192,12,128,24,0, + 16,0,48,0,48,0,48,0,48,0,255,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,13,18,36,13,0,250,15,24,48,240,32,96,96,96, + 96,96,96,96,56,192,31,0,24,0,56,0,63,128,31,240, + 48,120,192,24,192,24,192,16,112,96,31,128,14,20,40,15, + 1,0,48,0,240,0,48,0,48,0,48,0,48,0,48,0, + 48,0,49,224,50,48,52,48,56,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,252,6,18,18,7,1,0, + 48,112,48,0,0,0,48,240,48,48,48,48,48,48,48,48, + 48,252,8,24,24,7,253,250,3,7,3,0,0,0,3,15, + 3,3,3,3,3,3,3,3,3,3,3,3,2,2,4,248, + 13,20,40,14,1,0,48,0,240,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,240,48,192,49,128,51,0,52,0, + 60,0,54,0,51,0,49,128,48,192,48,224,248,120,6,20, + 20,7,1,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,20,12,36,21,1,0,113,195, + 128,182,108,192,56,112,192,56,112,192,48,96,192,48,96,192, + 48,96,192,48,96,192,48,96,192,48,96,192,48,96,192,253, + 251,240,14,12,24,15,1,0,113,224,178,48,52,48,56,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,252, + 12,12,24,14,1,0,15,128,48,192,96,96,64,112,192,48, + 192,48,192,48,192,48,224,32,96,96,48,192,31,0,12,18, + 36,14,1,250,113,192,182,224,56,96,48,48,48,48,48,48, + 48,48,48,48,48,32,48,96,56,64,55,128,48,0,48,0, + 48,0,48,0,48,0,252,0,13,18,36,14,1,250,15,32, + 48,224,96,96,64,96,192,96,192,96,192,96,192,96,192,96, + 96,224,49,96,30,96,0,96,0,96,0,96,0,96,0,96, + 1,248,10,12,24,11,1,0,51,192,244,128,56,128,56,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 8,12,12,10,1,0,62,70,194,224,240,124,30,7,131,131, + 198,124,9,17,34,9,0,0,16,0,48,0,48,0,48,0, + 48,0,255,128,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,49,0,30,128,14,12,24,14,0,0, + 48,48,240,240,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,112,56,188,31,48,13,12,24,13,0,0,248,120, + 48,48,48,32,24,96,24,64,28,64,12,192,12,128,7,128, + 7,0,7,0,2,0,19,12,36,19,0,0,248,99,224,48, + 96,128,48,96,128,48,241,128,24,177,128,25,177,0,25,153, + 0,13,27,0,15,26,0,14,14,0,6,14,0,4,4,0, + 13,12,24,14,0,0,252,248,56,96,24,64,12,128,7,128, + 7,0,7,128,13,128,8,192,16,96,48,112,248,248,14,18, + 36,13,255,250,124,60,24,24,24,16,12,48,12,32,14,32, + 6,96,6,64,3,192,3,128,3,128,1,128,1,0,3,0, + 2,0,6,0,124,0,240,0,10,12,24,12,1,0,127,192, + 65,128,131,128,3,0,6,0,12,0,28,0,24,0,48,0, + 112,64,96,64,255,192,6,25,25,9,2,252,4,8,24,48, + 48,48,48,24,24,24,24,48,224,56,24,24,24,24,48,48, + 48,48,16,24,4,2,27,27,6,2,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,6,25,25,9,1,252,128,96,32,48, + 48,48,48,96,96,96,96,48,28,48,96,96,96,96,48,48, + 48,48,96,64,128,12,4,8,13,1,6,56,48,126,32,143, + 192,131,128,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=19 dx=27 dy= 0 ascent=27 len=81 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x=-4 y=-9 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =27 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20[9119] U8G_SECTION(".progmem.u8g_font_gdr20") = { + 0,47,44,240,246,20,4,220,11,144,32,255,248,27,247,25, + 248,0,0,0,7,0,0,4,23,23,9,2,0,48,112,112, + 112,112,112,112,112,112,96,96,96,96,96,96,96,96,64,0, + 112,240,240,224,8,10,10,14,3,13,227,199,199,199,199,195, + 195,195,195,194,14,18,36,15,1,2,1,24,3,24,3,16, + 2,48,6,48,63,252,4,96,12,96,12,96,12,64,8,192, + 255,248,24,128,17,128,49,128,49,128,49,0,35,0,12,25, + 50,15,1,253,6,0,6,0,6,0,31,192,63,240,102,96, + 102,0,102,0,102,0,118,0,62,0,31,128,7,192,7,224, + 6,112,6,48,6,48,134,48,198,48,230,96,255,192,127,128, + 6,0,6,0,6,0,20,20,60,22,1,255,30,0,192,99, + 1,128,67,3,128,193,131,0,193,134,0,193,140,0,193,156, + 0,97,24,0,99,48,0,60,115,192,0,108,96,0,200,96, + 1,152,48,3,152,48,3,24,48,6,24,48,14,8,32,28, + 12,96,24,7,128,48,0,0,19,22,66,21,2,0,3,192, + 0,4,224,0,8,96,0,24,96,0,24,96,0,24,96,0, + 24,192,0,29,128,0,15,0,0,12,0,0,28,63,224,62, + 14,128,119,6,0,99,134,0,193,134,0,193,198,0,192,236, + 0,192,124,0,192,60,0,96,30,0,48,47,192,31,195,128, + 3,10,10,8,3,13,224,192,192,192,192,192,192,192,192,192, + 7,30,30,10,2,251,2,12,24,24,48,48,96,96,96,96, + 192,192,192,192,192,192,192,192,192,192,224,96,96,96,112,48, + 56,24,12,2,7,30,30,10,1,251,128,96,48,56,24,28, + 12,12,12,14,6,6,6,6,6,6,6,6,6,6,12,12, + 12,12,24,24,48,48,96,128,12,13,26,14,1,11,6,0, + 6,0,134,0,102,48,242,240,27,128,6,0,27,128,114,240, + 230,48,6,32,6,0,6,0,12,11,22,13,1,3,6,0, + 6,0,6,0,6,0,6,0,255,240,6,0,6,0,6,0, + 6,0,6,0,4,8,8,7,2,251,112,240,48,48,48,32, + 64,192,9,1,2,11,1,8,255,128,4,4,4,7,2,0, + 112,240,240,224,13,30,60,15,1,251,0,24,0,56,0,48, + 0,48,0,112,0,96,0,96,0,224,0,192,1,192,1,128, + 1,128,3,128,3,0,7,0,6,0,6,0,14,0,12,0, + 12,0,28,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,13,19,38,15,1,0,7,128,24,192, + 32,96,96,48,64,48,64,56,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,16,96,16,96,48,48,32,24,64, + 15,128,11,19,38,15,2,0,2,0,30,0,126,0,134,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,15,0,127,224,11,19, + 38,15,2,0,15,128,48,192,96,96,96,96,96,96,0,96, + 0,96,0,192,0,192,1,128,3,0,7,0,6,0,12,0, + 24,0,48,32,112,32,224,32,255,224,11,19,38,15,2,0, + 31,0,113,128,96,192,224,192,0,192,0,192,1,128,3,0, + 15,0,3,192,0,192,0,224,0,96,0,96,0,96,0,96, + 128,192,193,128,127,0,12,19,38,15,1,0,0,64,1,192, + 3,192,3,192,6,192,12,192,12,192,24,192,48,192,48,192, + 96,192,224,192,255,240,0,192,0,192,0,192,0,192,0,192, + 7,240,11,19,38,15,2,0,63,224,32,0,32,0,96,0, + 96,0,96,0,96,0,127,0,97,192,0,192,0,96,0,96, + 0,96,0,96,0,96,0,64,128,192,193,128,63,0,12,20, + 40,15,2,0,0,192,7,0,14,0,24,0,48,0,112,0, + 96,0,96,0,207,128,240,224,224,96,192,112,192,48,192,48, + 192,48,96,48,96,32,32,96,48,64,15,128,12,19,38,15, + 2,0,255,240,128,96,128,96,0,224,0,192,0,192,1,128, + 1,128,3,0,3,0,7,0,6,0,6,0,12,0,12,0, + 28,0,24,0,56,0,48,0,12,19,38,15,2,0,31,128, + 48,192,96,96,224,96,224,96,224,96,248,192,127,128,31,128, + 31,192,49,224,96,112,192,112,192,48,192,48,192,32,96,32, + 112,64,31,128,12,20,40,15,2,255,15,128,49,192,32,224, + 64,96,192,112,192,48,192,48,192,48,192,48,96,112,48,176, + 31,48,0,96,0,96,0,96,0,192,1,128,7,0,30,0, + 48,0,4,15,15,7,2,0,112,240,240,96,0,0,0,0, + 0,0,0,112,240,240,224,4,20,20,7,2,251,112,240,240, + 96,0,0,0,0,0,0,0,0,112,240,48,48,48,32,64, + 192,12,10,20,14,1,4,0,48,0,240,7,192,62,0,248, + 0,240,0,126,0,15,128,1,240,0,112,12,6,12,14,1, + 6,255,240,0,0,0,0,0,0,0,0,255,240,12,10,20, + 14,1,4,96,0,248,0,31,0,7,224,0,240,1,240,7, + 192,62,0,240,0,192,0,10,23,46,14,2,0,31,0,99, + 128,65,192,192,192,192,192,128,192,0,192,1,128,1,128,3, + 0,3,0,6,0,14,0,12,0,12,0,12,0,12,0,0, + 0,0,0,14,0,30,0,30,0,28,0,24,25,75,26,1, + 251,0,63,128,1,192,224,2,0,56,12,0,28,24,0,12, + 16,60,142,32,67,134,96,129,135,65,129,131,193,1,131,195, + 1,131,195,1,131,195,1,131,195,1,131,195,1,131,195,1, + 130,225,129,134,97,131,132,112,197,200,48,120,240,56,0,0, + 28,0,4,15,0,28,3,192,112,0,127,128,19,20,60,19, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,14,20, + 40,17,1,0,63,192,240,112,48,56,48,24,48,24,48,24, + 48,24,48,48,48,224,63,224,48,112,48,56,48,28,48,12, + 48,12,48,12,48,12,48,24,48,48,255,192,14,20,40,17, + 1,0,3,248,12,28,16,8,48,0,96,0,96,0,64,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,112,0,56,4,28,24,7,224,17,20,60,19,1,0, + 63,224,0,240,56,0,48,12,0,48,6,0,48,3,0,48, + 3,0,48,3,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,3,0,48,3,0,48,3,0, + 48,6,0,48,12,0,48,56,0,255,224,0,13,20,40,16, + 1,0,255,240,48,16,48,16,48,16,48,0,48,0,48,0, + 48,0,48,0,63,224,48,64,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,12,20,40,15,1,0, + 255,240,48,16,48,16,48,16,48,0,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,254,0,18,20,60,19,1,0,1,254, + 0,6,15,0,8,0,0,16,0,0,32,0,0,96,0,0, + 64,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 31,192,192,7,0,192,3,0,96,3,0,96,3,0,48,3, + 0,24,3,0,12,3,0,3,252,0,19,20,60,21,1,0, + 252,7,224,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,63,255,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,252,7,224,6,20,20,10, + 2,0,252,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,11,25,50,10,253,251,15,224,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,0,1,0,3,0,98,0,252,0,17,20, + 60,19,1,0,252,127,0,48,24,0,48,48,0,48,96,0, + 48,224,0,49,192,0,49,128,0,51,0,0,54,0,0,62, + 0,0,54,0,0,55,0,0,51,128,0,49,192,0,48,224, + 0,48,112,0,48,120,0,48,60,0,48,30,0,252,15,128, + 13,20,40,15,1,0,252,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,8,48,8,48,24,255,248,24,20, + 60,26,1,0,248,0,62,60,0,56,60,0,120,62,0,120, + 54,0,216,54,0,216,55,0,152,51,1,152,51,129,152,49, + 131,24,49,195,24,49,198,24,48,198,24,48,230,24,48,108, + 24,48,124,24,48,56,24,48,56,24,48,56,24,252,16,255, + 19,20,60,21,1,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,20,60,19,1,0,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,2,0,48,6,0,56,4,0,12,24, + 0,7,224,0,15,20,40,17,1,0,63,224,240,56,48,28, + 48,14,48,6,48,6,48,6,48,6,48,12,48,12,52,56, + 51,224,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,19,25,75,19,1,251,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,3,0,48,6,0,24,4,0,12,24, + 0,7,240,0,0,112,0,0,24,0,0,14,32,0,7,192, + 0,1,128,18,20,60,18,1,0,63,192,0,240,112,0,48, + 24,0,48,12,0,48,12,0,48,12,0,48,12,0,48,24, + 0,48,112,0,63,224,0,63,192,0,49,192,0,48,224,0, + 48,112,0,48,112,0,48,56,0,48,60,0,48,28,0,48, + 15,0,252,15,192,12,20,40,15,2,0,15,224,48,224,64, + 64,192,0,192,0,224,0,248,0,126,0,127,0,31,192,7, + 224,1,240,0,240,0,112,0,48,0,48,128,32,192,96,224, + 192,127,0,16,20,40,18,1,0,255,255,129,131,129,129,129, + 129,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,15, + 240,19,20,60,21,1,0,252,7,224,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,0,24,3,0,28,6,0,14,12,0, + 3,240,0,20,20,60,21,0,0,254,3,240,56,0,192,24, + 0,128,28,1,128,12,1,128,14,3,0,14,3,0,6,3, + 0,7,6,0,7,6,0,3,6,0,3,140,0,1,140,0, + 1,204,0,1,216,0,0,216,0,0,248,0,0,240,0,0, + 112,0,0,96,0,27,20,80,27,0,0,254,4,15,224,56, + 4,3,0,24,14,3,0,24,14,3,0,28,15,3,0,28, + 27,2,0,12,27,6,0,12,27,134,0,12,49,134,0,14, + 49,134,0,14,49,196,0,6,96,204,0,6,96,204,0,7, + 96,236,0,7,192,108,0,3,192,120,0,3,192,120,0,3, + 128,56,0,3,128,56,0,3,0,48,0,19,20,60,20,0, + 0,127,31,192,60,7,0,28,6,0,14,6,0,7,12,0, + 7,28,0,3,152,0,1,240,0,1,240,0,0,224,0,0, + 240,0,1,240,0,1,184,0,3,28,0,7,12,0,6,14, + 0,12,7,0,28,3,128,56,3,192,255,15,224,18,20,60, + 19,0,0,240,31,192,56,7,0,28,6,0,12,12,0,14, + 12,0,7,24,0,7,24,0,3,48,0,3,176,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,7,248,0,14, + 20,40,17,1,0,127,252,96,28,64,56,64,120,0,112,0, + 224,0,224,1,192,3,192,3,128,7,0,7,0,14,0,30, + 0,28,0,56,0,56,4,112,4,240,12,255,252,7,30,30, + 10,2,251,254,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 254,13,30,60,15,1,251,192,0,192,0,96,0,96,0,112, + 0,48,0,48,0,24,0,24,0,28,0,12,0,12,0,14, + 0,6,0,6,0,3,0,3,0,3,128,1,128,1,128,0, + 192,0,192,0,192,0,96,0,96,0,112,0,48,0,48,0, + 24,0,24,7,30,30,10,1,251,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,254,12,15,30,16,2,9,2,0,6, + 0,15,0,15,0,27,0,27,128,17,128,49,192,49,192,96, + 192,96,224,96,96,192,112,192,48,128,32,13,1,2,15,1, + 253,255,248,7,7,7,10,0,16,96,240,56,24,12,4,2, + 13,15,30,15,1,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,15,24,48,16,0,0,48,0,240,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,240,49,248, + 54,28,60,12,56,14,48,6,48,6,48,6,48,6,48,6, + 48,4,48,12,48,8,28,16,7,224,12,15,30,14,1,0, + 7,224,24,96,32,32,96,0,64,0,192,0,192,0,192,0, + 192,0,192,0,192,0,96,0,112,32,56,112,31,128,15,24, + 48,17,1,0,0,24,0,120,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,7,248,24,56,32,24,96,24,64,24, + 192,24,192,24,192,24,192,24,192,24,192,24,96,24,112,56, + 56,222,15,24,13,15,30,15,1,0,7,192,24,96,32,48, + 96,24,64,24,192,24,255,240,192,0,192,0,192,0,224,0, + 96,0,112,8,56,48,15,192,11,24,48,10,1,0,3,224, + 4,192,24,0,16,0,48,0,48,0,48,0,48,0,48,0, + 255,0,50,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,15,23, + 46,16,1,248,7,134,24,252,32,96,96,48,96,48,96,48, + 96,48,112,96,56,64,31,128,8,0,16,0,60,0,63,224, + 15,248,63,252,112,124,224,12,192,12,192,8,96,16,112,32, + 31,192,16,24,48,18,1,0,16,0,240,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,112,49,136,54,12, + 56,12,56,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,21,21,9,1,0,48,112, + 112,96,0,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,29,58,8,252,248,1,128,3,128,3,128,3, + 0,0,0,0,0,1,128,7,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,0,3,0,2,0,124, + 0,248,0,15,24,48,16,1,0,16,0,240,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,252,48,112,48, + 224,49,128,51,0,54,0,62,0,54,0,55,0,51,128,49, + 192,48,224,48,112,48,120,252,62,6,24,24,9,1,0,16, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,24,15,45,26,1,0,240,240,120, + 51,25,140,52,26,12,56,28,12,56,28,12,48,24,12,48, + 24,12,48,24,12,48,24,12,48,24,12,48,24,12,48,24, + 12,48,24,12,48,24,12,252,126,63,16,15,30,18,1,0, + 112,112,177,136,54,12,56,12,56,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,252,63,14,15, + 30,16,1,0,7,192,24,112,32,56,96,24,64,28,192,12, + 192,12,192,12,192,12,192,12,224,8,96,24,112,16,56,32, + 15,192,15,23,46,17,1,248,112,240,179,24,52,28,56,12, + 48,14,48,6,48,6,48,6,48,6,48,6,48,4,48,12, + 48,8,60,16,55,224,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,254,0,14,23,46,16,1,248,7,144,24,112, + 32,48,96,48,64,48,192,48,192,48,192,48,192,48,192,48, + 192,48,96,48,96,112,48,176,31,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,1,252,11,15,30,13,1,0, + 49,224,243,224,52,64,56,64,56,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,9,15, + 30,12,2,0,63,0,67,0,193,0,192,0,224,0,248,0, + 126,0,63,0,15,128,3,128,1,128,129,128,129,0,195,0, + 252,0,10,20,40,11,1,0,16,0,48,0,48,0,48,0, + 48,0,255,192,49,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,128,31,64, + 15,15,30,17,1,0,48,24,240,120,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,56, + 24,222,15,24,15,15,30,16,0,0,252,62,56,12,56,8, + 24,24,28,24,12,16,12,48,14,48,6,32,7,96,7,64, + 3,64,3,192,1,128,1,0,22,15,45,23,0,0,252,16, + 124,48,24,24,56,56,16,24,56,48,24,60,48,28,108,48, + 12,110,32,12,78,96,12,198,96,14,199,64,6,131,64,7, + 131,192,7,131,192,3,1,128,2,1,0,16,15,30,16,0, + 0,254,63,60,28,28,16,14,48,6,96,7,192,3,192,1, + 192,3,192,6,224,12,112,12,56,24,24,56,28,252,63,16, + 23,46,16,255,248,126,31,28,6,28,4,12,12,14,12,14, + 8,6,24,7,24,3,16,3,48,3,176,1,160,1,224,1, + 224,0,192,0,192,0,128,1,128,1,128,3,0,126,0,124, + 0,248,0,12,15,30,14,1,0,127,240,64,96,64,224,1, + 192,1,128,3,128,7,0,6,0,14,0,28,0,28,0,56, + 16,112,16,112,48,255,240,8,30,30,11,2,251,3,6,12, + 8,24,24,24,24,28,12,12,12,12,24,48,248,28,12,12, + 12,12,28,24,24,24,24,24,12,6,3,2,32,32,7,3, + 250,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,30,30,11,1,251,192,96,48,24,24,24,24,24,56, + 48,48,48,48,56,31,12,24,48,48,48,48,56,24,24,24, + 24,16,48,96,192,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,7,0,0,4,24, + 24,9,2,247,112,240,240,224,0,0,32,96,96,96,96,96, + 96,96,96,96,112,112,112,112,112,112,112,64,12,20,40,15, + 2,255,6,0,6,0,6,0,15,224,54,224,102,96,102,0, + 198,0,198,0,198,0,198,0,198,0,198,0,230,32,118,48, + 63,192,31,128,6,0,6,0,6,0,13,19,38,15,1,0, + 7,224,8,112,16,48,16,32,48,32,48,0,48,0,48,0, + 48,0,255,0,48,0,48,0,48,0,48,0,48,8,32,24, + 96,48,127,240,131,240,11,10,20,15,2,4,192,96,127,192, + 49,192,96,192,96,192,96,192,113,192,63,128,64,64,128,32, + 16,19,38,15,255,0,240,63,56,28,28,24,28,56,14,48, + 6,112,7,96,3,192,3,192,1,128,1,128,63,252,1,128, + 1,128,1,128,1,128,1,128,1,128,15,240,2,32,32,7, + 3,250,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 128,0,0,64,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,11,22,44,15,2,0,31,128,49,192,96,128,96,0, + 112,0,120,0,62,0,111,128,199,192,193,224,192,224,224,96, + 240,96,124,96,63,192,15,128,3,192,1,192,64,192,64,192, + 96,128,63,0,9,4,8,13,2,17,97,128,227,128,227,128, + 195,0,21,20,60,24,1,0,1,252,0,6,3,0,24,0, + 192,48,0,96,48,124,96,97,134,48,99,0,48,194,0,24, + 198,0,24,198,0,24,198,0,24,198,0,24,199,0,24,99, + 0,48,97,198,48,48,248,96,48,0,96,24,0,192,6,3, + 0,1,252,0,7,10,10,8,1,9,56,204,140,28,108,204, + 220,238,0,254,12,14,28,16,1,0,6,16,4,48,8,96, + 24,96,48,192,113,192,227,128,227,128,113,192,48,192,24,96, + 8,96,4,48,6,16,13,6,12,15,1,3,255,248,0,24, + 0,24,0,24,0,24,0,24,9,1,2,11,1,8,255,128, + 10,11,22,11,1,11,30,0,97,0,126,128,147,64,151,64, + 156,64,148,64,146,64,105,128,33,0,30,0,10,1,2,16, + 3,19,255,192,7,7,7,11,2,12,60,110,198,198,198,236, + 120,12,14,28,13,1,2,6,0,6,0,6,0,6,0,6, + 0,255,240,6,0,6,0,6,0,6,0,4,0,0,0,0, + 0,255,224,8,11,11,10,1,10,62,99,195,3,6,6,12, + 24,50,97,255,9,12,24,11,0,9,31,0,51,128,97,128, + 1,128,3,0,15,0,1,128,1,128,1,128,1,128,195,0, + 62,0,7,7,7,10,3,16,12,30,24,48,48,96,192,15, + 23,46,17,1,248,48,8,240,56,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,56,56,56,120,63,248,55, + 222,51,152,48,0,48,0,48,0,48,0,56,0,56,0,56, + 0,48,0,15,24,48,18,1,252,15,254,48,252,96,216,64, + 216,192,216,192,216,192,216,192,216,224,216,112,216,56,216,15, + 216,0,216,0,216,0,216,0,216,0,216,0,216,0,216,0, + 216,0,216,0,216,0,216,3,254,3,4,4,5,1,9,96, + 224,224,192,5,7,7,7,1,249,48,32,48,120,24,48,224, + 8,11,11,11,2,10,24,248,24,24,24,24,24,24,24,24, + 255,7,10,10,9,1,9,56,108,198,198,198,198,108,56,0, + 254,12,14,28,16,2,0,130,0,65,0,97,128,48,192,56, + 224,28,96,12,112,28,112,30,96,56,224,48,192,97,128,65, + 0,130,0,16,19,38,19,2,0,48,6,240,14,48,12,48, + 24,48,56,48,48,48,96,48,224,48,192,205,130,1,142,3, + 30,6,22,6,38,12,70,24,127,24,134,48,6,96,31,15, + 19,38,18,2,0,48,6,240,12,48,8,48,24,48,48,48, + 48,48,96,48,192,48,192,205,128,1,28,3,102,6,70,4, + 6,12,12,24,24,24,48,48,98,96,254,17,19,57,19,1, + 0,60,3,0,70,6,0,6,4,0,28,12,0,6,24,0, + 6,16,0,6,48,0,142,96,0,120,96,0,0,193,0,1, + 135,0,1,143,0,3,11,0,2,19,0,6,35,0,12,63, + 128,12,67,0,24,3,0,48,15,128,10,24,48,13,2,247, + 14,0,30,0,30,0,28,0,0,0,0,0,0,0,12,0, + 12,0,12,0,12,0,28,0,24,0,48,0,48,0,96,0, + 96,0,192,0,192,64,192,192,192,192,224,128,97,128,62,0, + 19,27,81,19,0,0,6,0,0,15,0,0,7,128,0,1, + 192,0,0,96,0,0,16,0,0,0,0,0,64,0,0,224, + 0,0,224,0,1,224,0,1,240,0,1,176,0,3,48,0, + 3,56,0,3,24,0,6,28,0,6,28,0,6,12,0,15, + 254,0,12,6,0,8,6,0,24,7,0,24,3,0,16,3, + 0,48,3,128,254,15,224,19,27,81,19,0,0,0,8,0, + 0,30,0,0,60,0,0,112,0,1,192,0,1,0,0,0, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,19,27, + 81,19,0,0,0,224,0,1,224,0,1,240,0,3,56,0, + 6,12,0,12,4,0,0,0,0,0,64,0,0,224,0,0, + 224,0,1,224,0,1,240,0,1,176,0,3,48,0,3,56, + 0,3,24,0,6,28,0,6,28,0,6,12,0,15,254,0, + 12,6,0,8,6,0,24,7,0,24,3,0,16,3,0,48, + 3,128,254,15,224,19,26,78,19,0,0,3,132,0,7,230, + 0,4,252,0,8,56,0,0,0,0,0,0,0,0,64,0, + 0,224,0,0,224,0,1,224,0,1,240,0,1,176,0,3, + 48,0,3,56,0,3,24,0,6,28,0,6,28,0,6,12, + 0,15,254,0,12,6,0,8,6,0,24,7,0,24,3,0, + 16,3,0,48,3,128,254,15,224,19,25,75,19,0,0,6, + 12,0,6,12,0,14,28,0,6,12,0,0,0,0,0,64, + 0,0,224,0,0,224,0,1,224,0,1,240,0,1,176,0, + 3,48,0,3,56,0,3,24,0,6,28,0,6,28,0,6, + 12,0,15,254,0,12,6,0,8,6,0,24,7,0,24,3, + 0,16,3,0,48,3,128,254,15,224,19,27,81,19,0,0, + 0,224,0,1,176,0,1,48,0,3,48,0,1,176,0,1, + 224,0,0,0,0,0,64,0,0,224,0,0,224,0,1,224, + 0,1,240,0,1,176,0,3,48,0,3,56,0,3,24,0, + 6,28,0,6,28,0,6,12,0,15,254,0,12,6,0,8, + 6,0,24,7,0,24,3,0,16,3,0,48,3,128,254,15, + 224,23,20,60,25,0,0,3,255,252,0,124,4,0,108,4, + 0,236,4,0,204,0,1,204,0,1,140,0,1,140,0,3, + 140,0,3,255,248,7,12,16,6,12,0,6,12,0,12,12, + 0,12,12,0,28,12,0,24,12,2,24,12,2,48,12,6, + 252,63,254,15,27,54,17,1,249,3,248,12,28,16,8,48, + 0,96,0,96,0,64,0,192,0,192,0,192,0,192,0,192, + 0,192,0,224,0,96,0,112,0,120,2,60,12,31,248,15, + 240,0,128,0,128,1,224,0,224,0,96,0,192,3,0,13, + 27,54,16,1,0,16,0,56,0,28,0,15,0,3,128,0, + 192,0,0,255,240,48,16,48,16,48,16,48,0,48,0,48, + 0,48,0,48,0,63,224,48,64,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,24,255,248,13,27,54,16,1, + 0,0,32,0,240,1,224,3,128,7,0,12,0,0,0,255, + 240,48,16,48,16,48,16,48,0,48,0,48,0,48,0,48, + 0,63,224,48,64,48,0,48,0,48,0,48,0,48,0,48, + 8,48,8,48,24,255,248,13,27,54,16,1,0,3,0,7, + 128,15,192,28,192,56,96,32,48,0,0,255,240,48,16,48, + 16,48,16,48,0,48,0,48,0,48,0,48,0,63,224,48, + 64,48,0,48,0,48,0,48,0,48,0,48,8,48,8,48, + 24,255,248,13,25,50,16,1,0,24,48,56,112,56,112,48, + 96,0,0,255,240,48,16,48,16,48,16,48,0,48,0,48, + 0,48,0,48,0,63,224,48,64,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,24,255,248,9,27,54,10,255, + 0,96,0,240,0,120,0,28,0,7,0,1,0,0,0,31, + 128,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,31,128,8,27,27,10,2,0,6,15,30, + 56,96,128,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,252,10,27,54,10,0,0,28,0, + 30,0,62,0,115,0,193,128,128,192,0,0,63,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,63,0,10,25,50,10,0,0,193,128,225,192,225,192, + 193,128,0,0,63,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,63,0,18,20,60,19, + 0,0,31,240,0,120,28,0,24,6,0,24,3,0,24,1, + 128,24,1,128,24,1,192,24,0,192,24,0,192,255,128,192, + 24,0,192,24,0,192,24,0,192,24,1,128,24,1,128,24, + 1,128,24,3,0,24,6,0,24,28,0,127,240,0,19,26, + 78,21,1,0,3,132,0,7,230,0,4,124,0,8,56,0, + 0,0,0,0,0,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,27,81,19,1,0,12,0,0,30,0,0,15,0, + 0,3,128,0,0,224,0,0,32,0,0,0,0,3,240,0, + 12,24,0,16,12,0,48,6,0,32,3,0,96,3,0,64, + 3,128,192,1,128,192,1,128,192,1,128,192,1,128,192,1, + 128,192,1,128,224,1,0,96,3,0,96,2,0,48,6,0, + 56,4,0,12,24,0,7,224,0,17,27,81,19,1,0,0, + 24,0,0,60,0,0,120,0,0,224,0,1,128,0,2,0, + 0,0,0,0,3,240,0,12,24,0,16,12,0,48,6,0, + 32,3,0,96,3,0,64,3,128,192,1,128,192,1,128,192, + 1,128,192,1,128,192,1,128,192,1,128,224,1,0,96,3, + 0,96,2,0,48,6,0,56,4,0,12,24,0,7,224,0, + 17,27,81,19,1,0,1,192,0,1,224,0,3,224,0,7, + 48,0,12,24,0,8,12,0,0,0,0,3,240,0,12,24, + 0,16,12,0,48,6,0,32,3,0,96,3,0,64,3,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,192, + 1,128,224,1,0,96,3,0,96,2,0,48,6,0,56,4, + 0,12,24,0,7,224,0,17,26,78,19,1,0,3,4,0, + 7,204,0,8,248,0,16,112,0,0,0,0,0,0,0,3, + 240,0,12,24,0,16,12,0,48,6,0,32,3,0,96,3, + 0,64,3,128,192,1,128,192,1,128,192,1,128,192,1,128, + 192,1,128,192,1,128,224,1,0,96,3,0,96,2,0,48, + 6,0,56,4,0,12,24,0,7,224,0,17,25,75,19,1, + 0,12,24,0,14,28,0,14,28,0,12,24,0,0,0,0, + 3,240,0,12,24,0,16,12,0,48,6,0,32,3,0,96, + 3,0,64,3,128,192,1,128,192,1,128,192,1,128,192,1, + 128,192,1,128,192,1,128,224,1,0,96,3,0,96,2,0, + 48,6,0,56,4,0,12,24,0,7,224,0,11,10,20,13, + 1,4,192,96,96,192,49,128,27,0,14,0,14,0,27,0, + 49,128,96,192,192,96,17,21,63,19,1,255,3,241,128,4, + 31,0,24,14,0,48,30,0,32,31,0,96,63,0,64,59, + 128,192,115,128,192,225,128,192,225,128,193,193,128,195,129,128, + 195,1,128,231,1,0,110,3,0,124,2,0,124,6,0,56, + 4,0,124,24,0,199,224,0,128,0,0,19,27,81,21,1, + 0,6,0,0,15,0,0,7,128,0,1,192,0,0,96,0, + 0,16,0,0,0,0,252,7,224,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,0,24,3,0,28,6,0,14,12,0,3, + 240,0,19,27,81,21,1,0,0,12,0,0,30,0,0,60, + 0,0,112,0,0,192,0,1,0,0,0,0,0,252,7,224, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,0,24,3,0, + 28,6,0,14,12,0,3,240,0,19,27,81,21,1,0,0, + 224,0,0,240,0,1,240,0,3,152,0,6,12,0,4,6, + 0,0,0,0,252,7,224,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,0,24,3,0,28,6,0,14,12,0,3,240,0, + 19,25,75,21,1,0,6,12,0,7,14,0,7,14,0,6, + 12,0,0,0,0,252,7,224,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,0,24,3,0,28,6,0,14,12,0,3,240, + 0,18,27,81,19,0,0,0,12,0,0,30,0,0,60,0, + 0,112,0,0,192,0,1,0,0,0,0,0,240,31,192,56, + 7,0,28,6,0,12,12,0,14,12,0,7,24,0,7,24, + 0,3,48,0,3,176,0,1,224,0,1,224,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,7,248,0,15,20,40,17,1,0,254,0, + 48,0,48,0,48,0,63,224,48,120,48,28,48,14,48,6, + 48,6,48,6,48,6,48,12,48,12,52,56,51,224,48,0, + 48,0,48,0,254,0,16,24,48,18,1,0,1,224,6,56, + 8,24,16,28,16,12,48,12,48,12,48,28,48,56,48,240, + 49,192,49,128,49,128,49,192,48,240,48,124,48,62,48,15, + 48,7,48,3,49,3,49,3,49,134,241,248,13,23,46,15, + 1,0,56,0,56,0,28,0,14,0,6,0,3,0,1,0, + 0,0,15,192,48,224,112,96,96,96,0,96,0,96,15,224, + 63,224,126,96,240,96,224,96,192,96,192,96,65,224,62,120, + 13,23,46,15,1,0,0,224,0,224,1,192,1,128,3,0, + 2,0,4,0,0,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,13,23,46,15,1,0,7,0,7,0,15,128, + 29,192,24,192,48,96,32,32,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,21,42,15,1,0,28,16, + 63,32,35,192,64,0,0,0,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,21,42,15,1,0,48,96, + 56,112,48,96,48,96,0,0,0,0,15,192,48,224,112,96, + 96,96,0,96,0,96,15,224,63,224,126,96,240,96,224,96, + 192,96,192,96,65,224,62,120,13,22,44,15,1,0,7,128, + 13,128,12,192,12,128,13,128,15,0,0,0,15,192,48,224, + 112,96,96,96,0,96,0,96,15,224,63,224,126,96,240,96, + 224,96,192,96,192,96,65,224,62,120,19,15,45,22,2,0, + 31,143,0,113,176,192,96,224,192,224,224,96,128,192,96,0, + 192,96,7,255,192,28,192,0,112,192,0,96,192,0,192,192, + 0,192,224,0,193,96,64,194,112,224,124,31,0,12,22,44, + 14,1,249,7,224,24,96,32,32,96,0,64,0,192,0,192, + 0,192,0,192,0,192,0,224,0,112,16,120,96,63,192,31, + 128,2,0,2,0,7,128,3,128,1,128,3,0,12,0,13, + 23,46,15,1,0,24,0,60,0,12,0,6,0,3,0,1, + 0,1,128,0,0,7,192,24,96,32,48,96,24,64,24,192, + 24,255,240,192,0,192,0,192,0,224,0,96,0,112,8,56, + 48,15,192,13,23,46,15,1,0,0,96,0,240,0,192,1, + 128,1,128,3,0,6,0,0,0,7,192,24,96,32,48,96, + 24,64,24,192,24,255,240,192,0,192,0,192,0,224,0,96, + 0,112,8,56,48,15,192,13,23,46,15,1,0,3,0,7, + 128,15,128,12,192,24,96,16,32,32,16,0,0,7,192,24, + 96,32,48,96,24,64,24,192,24,255,240,192,0,192,0,192, + 0,224,0,96,0,112,8,56,48,15,192,13,21,42,15,1, + 0,24,48,56,112,56,112,48,96,0,0,0,0,7,192,24, + 96,32,48,96,24,64,24,192,24,255,240,192,0,192,0,192, + 0,224,0,96,0,112,8,56,48,15,192,7,23,23,9,0, + 0,224,224,112,48,24,12,4,0,24,120,24,24,24,24,24, + 24,24,24,24,24,24,24,126,8,23,23,9,1,0,7,7, + 14,12,24,48,32,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,252,9,23,46,9,0,0,28,0,28,0,62, + 0,119,0,99,0,193,128,128,128,0,0,24,0,120,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,126,0,10,21,42,9,0,0,193, + 128,193,128,227,192,193,128,0,0,0,0,24,0,120,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,126,0,14,23,46,16,1,0,12, + 0,62,24,3,240,3,192,30,224,48,96,0,112,0,56,7, + 152,24,120,32,60,96,28,64,12,192,12,192,12,192,12,192, + 12,192,8,224,24,96,16,112,48,56,96,15,128,16,21,42, + 18,1,0,7,8,15,144,24,224,16,0,0,0,0,0,112, + 112,177,136,54,12,56,12,56,12,48,12,48,12,48,12,48, + 12,48,12,48,12,48,12,48,12,48,12,252,63,14,23,46, + 16,1,0,28,0,28,0,14,0,6,0,3,0,1,128,0, + 128,0,0,7,192,24,112,32,56,96,24,64,28,192,12,192, + 12,192,12,192,12,192,12,224,8,96,24,112,16,56,32,15, + 192,14,23,46,16,1,0,0,112,0,112,0,224,1,192,1, + 128,3,0,2,0,0,0,7,192,24,112,32,56,96,24,64, + 28,192,12,192,12,192,12,192,12,192,12,224,8,96,24,112, + 16,56,32,15,192,14,23,46,16,1,0,3,128,3,128,7, + 192,14,192,12,96,24,48,48,16,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,14,21,42,16,1,0,14, + 8,31,144,17,224,32,0,0,0,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,14,21,42,16,1,0,24, + 48,24,48,56,112,24,48,0,0,0,0,7,192,24,112,32, + 56,96,24,64,28,192,12,192,12,192,12,192,12,192,12,224, + 8,96,24,112,16,56,32,15,192,11,10,20,13,1,4,6, + 0,6,0,6,0,0,0,0,0,255,224,0,0,6,0,6, + 0,6,0,14,16,32,16,1,255,7,204,24,120,32,120,96, + 120,64,252,193,220,193,140,195,140,199,12,198,12,236,8,124, + 24,120,16,120,32,207,192,128,0,15,23,46,17,1,0,28, + 0,28,0,14,0,7,0,3,0,1,128,0,128,0,0,48, + 24,240,120,48,24,48,24,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,56,24,222,15,24,15,23,46, + 17,1,0,0,112,0,112,0,224,0,192,1,128,1,0,2, + 0,0,0,48,24,240,120,48,24,48,24,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,56,24,222,15, + 24,15,23,46,17,1,0,3,128,3,128,7,192,14,224,12, + 96,24,48,16,16,0,0,48,24,240,120,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 56,24,222,15,24,15,21,42,17,1,0,24,48,28,56,24, + 48,24,48,0,0,0,0,48,24,240,120,48,24,48,24,48, + 24,48,24,48,24,48,24,48,24,48,24,48,24,48,24,48, + 56,24,222,15,24,16,31,62,16,255,248,0,28,0,28,0, + 56,0,112,0,96,0,192,0,128,0,0,126,31,28,6,28, + 4,12,12,14,12,14,8,6,24,7,24,3,16,3,48,3, + 176,1,160,1,224,1,224,0,192,0,192,0,128,1,128,1, + 128,3,0,126,0,124,0,248,0,15,32,64,17,1,248,16, + 0,240,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,240,51,24,52,28,56,12,48,14,48,6,48,6,48, + 6,48,6,48,6,48,4,48,12,56,8,60,16,55,224,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,254,0,16, + 29,58,16,255,248,6,12,14,28,14,28,6,12,0,0,0, + 0,126,31,28,6,28,4,12,12,14,12,14,8,6,24,7, + 24,3,16,3,48,3,176,1,160,1,224,1,224,0,192,0, + 192,0,128,1,128,1,128,3,0,126,0,124,0,248,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 19 + Calculated Max Values w=13 h=30 x= 2 y=11 dx=15 dy= 0 ascent=25 len=60 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent= 0 + X Font ascent =19 descent= 0 + Max Font ascent =25 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20n[619] U8G_SECTION(".progmem.u8g_font_gdr20n") = { + 0,47,44,240,246,19,0,0,0,0,42,57,0,25,251,19, + 0,12,13,26,14,1,11,6,0,6,0,134,0,102,48,242, + 240,27,128,6,0,27,128,114,240,230,48,6,32,6,0,6, + 0,12,11,22,13,1,3,6,0,6,0,6,0,6,0,6, + 0,255,240,6,0,6,0,6,0,6,0,6,0,4,8,8, + 7,2,251,112,240,48,48,48,32,64,192,9,1,2,11,1, + 8,255,128,4,4,4,7,2,0,112,240,240,224,13,30,60, + 15,1,251,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,1,192,1,128,1,128,3,128,3,0,7, + 0,6,0,6,0,14,0,12,0,12,0,28,0,24,0,56, + 0,48,0,48,0,112,0,96,0,96,0,224,0,192,0,13, + 19,38,15,1,0,7,128,24,192,32,96,96,48,64,48,64, + 56,192,24,192,24,192,24,192,24,192,24,192,24,192,24,192, + 16,96,16,96,48,48,32,24,64,15,128,11,19,38,15,2, + 0,2,0,30,0,126,0,134,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,15,0,127,224,11,19,38,15,2,0,15,128,48, + 192,96,96,96,96,96,96,0,96,0,96,0,192,0,192,1, + 128,3,0,7,0,6,0,12,0,24,0,48,32,112,32,224, + 32,255,224,11,19,38,15,2,0,31,0,113,128,96,192,224, + 192,0,192,0,192,1,128,3,0,15,0,3,192,0,192,0, + 224,0,96,0,96,0,96,0,96,128,192,193,128,127,0,12, + 19,38,15,1,0,0,64,1,192,3,192,3,192,6,192,12, + 192,12,192,24,192,48,192,48,192,96,192,224,192,255,240,0, + 192,0,192,0,192,0,192,0,192,7,240,11,19,38,15,2, + 0,63,224,32,0,32,0,96,0,96,0,96,0,96,0,127, + 0,97,192,0,192,0,96,0,96,0,96,0,96,0,96,0, + 64,128,192,193,128,63,0,12,20,40,15,2,0,0,192,7, + 0,14,0,24,0,48,0,112,0,96,0,96,0,207,128,240, + 224,224,96,192,112,192,48,192,48,192,48,96,48,96,32,32, + 96,48,64,15,128,12,19,38,15,2,0,255,240,128,96,128, + 96,0,224,0,192,0,192,1,128,1,128,3,0,3,0,7, + 0,6,0,6,0,12,0,12,0,28,0,24,0,56,0,48, + 0,12,19,38,15,2,0,31,128,48,192,96,96,224,96,224, + 96,224,96,248,192,127,128,31,128,31,192,49,224,96,112,192, + 112,192,48,192,48,192,32,96,32,112,64,31,128,12,20,40, + 15,2,255,15,128,49,192,32,224,64,96,192,112,192,48,192, + 48,192,48,192,48,96,112,48,176,31,48,0,96,0,96,0, + 96,0,192,1,128,7,0,30,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--32-320-72-72-P-146-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 20, '1' Height: 19 + Calculated Max Values w=27 h=32 x= 3 y=16 dx=27 dy= 0 ascent=26 len=80 + Font Bounding box w=47 h=44 x=-16 y=-10 + Calculated Min Values x=-4 y=-8 dx= 0 dy= 0 + Pure Font ascent =20 descent=-8 + X Font ascent =25 descent=-8 + Max Font ascent =26 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr20r[4232] U8G_SECTION(".progmem.u8g_font_gdr20r") = { + 0,47,44,240,246,20,4,220,11,144,32,127,248,26,248,25, + 248,0,0,0,7,0,0,4,23,23,9,2,0,48,112,112, + 112,112,112,112,112,112,96,96,96,96,96,96,96,96,64,0, + 112,240,240,224,8,10,10,14,3,13,227,199,199,199,199,195, + 195,195,195,194,14,18,36,15,1,2,1,24,3,24,3,16, + 2,48,6,48,63,252,4,96,12,96,12,96,12,64,8,192, + 255,248,24,128,17,128,49,128,49,128,49,0,35,0,12,25, + 50,15,1,253,6,0,6,0,6,0,31,192,63,240,102,96, + 102,0,102,0,102,0,118,0,62,0,31,128,7,192,7,224, + 6,112,6,48,6,48,134,48,198,48,230,96,255,192,127,128, + 6,0,6,0,6,0,20,20,60,22,1,255,30,0,192,99, + 1,128,67,3,128,193,131,0,193,134,0,193,140,0,193,156, + 0,97,24,0,99,48,0,60,115,192,0,108,96,0,200,96, + 1,152,48,3,152,48,3,24,48,6,24,48,14,8,32,28, + 12,96,24,7,128,48,0,0,19,22,66,21,2,0,3,192, + 0,4,224,0,8,96,0,24,96,0,24,96,0,24,96,0, + 24,192,0,29,128,0,15,0,0,12,0,0,28,63,224,62, + 14,128,119,6,0,99,134,0,193,134,0,193,198,0,192,236, + 0,192,124,0,192,60,0,96,30,0,48,47,192,31,195,128, + 3,10,10,8,3,13,224,192,192,192,192,192,192,192,192,192, + 7,30,30,10,2,251,2,12,24,24,48,48,96,96,96,96, + 192,192,192,192,192,192,192,192,192,192,224,96,96,96,112,48, + 56,24,12,2,7,30,30,10,1,251,128,96,48,56,24,28, + 12,12,12,14,6,6,6,6,6,6,6,6,6,6,12,12, + 12,12,24,24,48,48,96,128,12,13,26,14,1,11,6,0, + 6,0,134,0,102,48,242,240,27,128,6,0,27,128,114,240, + 230,48,6,32,6,0,6,0,12,11,22,13,1,3,6,0, + 6,0,6,0,6,0,6,0,255,240,6,0,6,0,6,0, + 6,0,6,0,4,8,8,7,2,251,112,240,48,48,48,32, + 64,192,9,1,2,11,1,8,255,128,4,4,4,7,2,0, + 112,240,240,224,13,30,60,15,1,251,0,24,0,56,0,48, + 0,48,0,112,0,96,0,96,0,224,0,192,1,192,1,128, + 1,128,3,128,3,0,7,0,6,0,6,0,14,0,12,0, + 12,0,28,0,24,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,13,19,38,15,1,0,7,128,24,192, + 32,96,96,48,64,48,64,56,192,24,192,24,192,24,192,24, + 192,24,192,24,192,24,192,16,96,16,96,48,48,32,24,64, + 15,128,11,19,38,15,2,0,2,0,30,0,126,0,134,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,15,0,127,224,11,19, + 38,15,2,0,15,128,48,192,96,96,96,96,96,96,0,96, + 0,96,0,192,0,192,1,128,3,0,7,0,6,0,12,0, + 24,0,48,32,112,32,224,32,255,224,11,19,38,15,2,0, + 31,0,113,128,96,192,224,192,0,192,0,192,1,128,3,0, + 15,0,3,192,0,192,0,224,0,96,0,96,0,96,0,96, + 128,192,193,128,127,0,12,19,38,15,1,0,0,64,1,192, + 3,192,3,192,6,192,12,192,12,192,24,192,48,192,48,192, + 96,192,224,192,255,240,0,192,0,192,0,192,0,192,0,192, + 7,240,11,19,38,15,2,0,63,224,32,0,32,0,96,0, + 96,0,96,0,96,0,127,0,97,192,0,192,0,96,0,96, + 0,96,0,96,0,96,0,64,128,192,193,128,63,0,12,20, + 40,15,2,0,0,192,7,0,14,0,24,0,48,0,112,0, + 96,0,96,0,207,128,240,224,224,96,192,112,192,48,192,48, + 192,48,96,48,96,32,32,96,48,64,15,128,12,19,38,15, + 2,0,255,240,128,96,128,96,0,224,0,192,0,192,1,128, + 1,128,3,0,3,0,7,0,6,0,6,0,12,0,12,0, + 28,0,24,0,56,0,48,0,12,19,38,15,2,0,31,128, + 48,192,96,96,224,96,224,96,224,96,248,192,127,128,31,128, + 31,192,49,224,96,112,192,112,192,48,192,48,192,32,96,32, + 112,64,31,128,12,20,40,15,2,255,15,128,49,192,32,224, + 64,96,192,112,192,48,192,48,192,48,192,48,96,112,48,176, + 31,48,0,96,0,96,0,96,0,192,1,128,7,0,30,0, + 48,0,4,15,15,7,2,0,112,240,240,96,0,0,0,0, + 0,0,0,112,240,240,224,4,20,20,7,2,251,112,240,240, + 96,0,0,0,0,0,0,0,0,112,240,48,48,48,32,64, + 192,12,10,20,14,1,4,0,48,0,240,7,192,62,0,248, + 0,240,0,126,0,15,128,1,240,0,112,12,6,12,14,1, + 6,255,240,0,0,0,0,0,0,0,0,255,240,12,10,20, + 14,1,4,96,0,248,0,31,0,7,224,0,240,1,240,7, + 192,62,0,240,0,192,0,10,23,46,14,2,0,31,0,99, + 128,65,192,192,192,192,192,128,192,0,192,1,128,1,128,3, + 0,3,0,6,0,14,0,12,0,12,0,12,0,12,0,0, + 0,0,0,14,0,30,0,30,0,28,0,24,25,75,26,1, + 251,0,63,128,1,192,224,2,0,56,12,0,28,24,0,12, + 16,60,142,32,67,134,96,129,135,65,129,131,193,1,131,195, + 1,131,195,1,131,195,1,131,195,1,131,195,1,131,195,1, + 130,225,129,134,97,131,132,112,197,200,48,120,240,56,0,0, + 28,0,4,15,0,28,3,192,112,0,127,128,19,20,60,19, + 0,0,0,64,0,0,224,0,0,224,0,1,224,0,1,240, + 0,1,176,0,3,48,0,3,56,0,3,24,0,6,28,0, + 6,28,0,6,12,0,15,254,0,12,6,0,8,6,0,24, + 7,0,24,3,0,16,3,0,48,3,128,254,15,224,14,20, + 40,17,1,0,63,192,240,112,48,56,48,24,48,24,48,24, + 48,24,48,48,48,224,63,224,48,112,48,56,48,28,48,12, + 48,12,48,12,48,12,48,24,48,48,255,192,14,20,40,17, + 1,0,3,248,12,28,16,8,48,0,96,0,96,0,64,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,112,0,56,4,28,24,7,224,17,20,60,19,1,0, + 63,224,0,240,56,0,48,12,0,48,6,0,48,3,0,48, + 3,0,48,3,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,128,48,3,0,48,3,0,48,3,0, + 48,6,0,48,12,0,48,56,0,255,224,0,13,20,40,16, + 1,0,255,240,48,16,48,16,48,16,48,0,48,0,48,0, + 48,0,48,0,63,224,48,64,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,12,20,40,15,1,0, + 255,240,48,16,48,16,48,16,48,0,48,0,48,0,48,0, + 48,0,63,192,48,128,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,254,0,18,20,60,19,1,0,1,254, + 0,6,15,0,8,0,0,16,0,0,32,0,0,96,0,0, + 64,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 31,192,192,7,0,192,3,0,96,3,0,96,3,0,48,3, + 0,24,3,0,12,3,0,3,252,0,19,20,60,21,1,0, + 252,7,224,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,63,255,128,48,1, + 128,48,1,128,48,1,128,48,1,128,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,252,7,224,6,20,20,10, + 2,0,252,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,11,25,50,10,253,251,15,224,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,0,1,0,3,0,98,0,252,0,17,20, + 60,19,1,0,252,127,0,48,24,0,48,48,0,48,96,0, + 48,224,0,49,192,0,49,128,0,51,0,0,54,0,0,62, + 0,0,54,0,0,55,0,0,51,128,0,49,192,0,48,224, + 0,48,112,0,48,120,0,48,60,0,48,30,0,252,15,128, + 13,20,40,15,1,0,252,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,8,48,8,48,24,255,248,24,20, + 60,26,1,0,248,0,62,60,0,56,60,0,120,62,0,120, + 54,0,216,54,0,216,55,0,152,51,1,152,51,129,152,49, + 131,24,49,195,24,49,198,24,48,198,24,48,230,24,48,108, + 24,48,124,24,48,56,24,48,56,24,48,56,24,252,16,255, + 19,20,60,21,1,0,240,7,224,56,1,128,60,1,128,60, + 1,128,62,1,128,55,1,128,51,129,128,51,129,128,49,193, + 128,48,225,128,48,97,128,48,113,128,48,57,128,48,29,128, + 48,13,128,48,15,128,48,7,128,48,3,128,48,3,128,252, + 1,128,17,20,60,19,1,0,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,2,0,48,6,0,56,4,0,12,24, + 0,7,224,0,15,20,40,17,1,0,63,224,240,56,48,28, + 48,14,48,6,48,6,48,6,48,6,48,12,48,12,52,56, + 51,224,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 254,0,19,25,75,19,1,251,3,240,0,12,24,0,16,12, + 0,48,6,0,32,3,0,96,3,0,64,3,128,192,1,128, + 192,1,128,192,1,128,192,1,128,192,1,128,192,1,128,224, + 1,0,96,3,0,96,3,0,48,6,0,24,4,0,12,24, + 0,7,240,0,0,112,0,0,24,0,0,14,32,0,7,192, + 0,1,128,18,20,60,18,1,0,63,192,0,240,112,0,48, + 24,0,48,12,0,48,12,0,48,12,0,48,12,0,48,24, + 0,48,112,0,63,224,0,63,192,0,49,192,0,48,224,0, + 48,112,0,48,112,0,48,56,0,48,60,0,48,28,0,48, + 15,0,252,15,192,12,20,40,15,2,0,15,224,48,224,64, + 64,192,0,192,0,224,0,248,0,126,0,127,0,31,192,7, + 224,1,240,0,240,0,112,0,48,0,48,128,32,192,96,224, + 192,127,0,16,20,40,18,1,0,255,255,129,131,129,129,129, + 129,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,15, + 240,19,20,60,21,1,0,252,7,224,48,1,128,48,1,128, + 48,1,128,48,1,128,48,1,128,48,1,128,48,1,128,48, + 1,128,48,1,128,48,1,128,48,1,128,48,1,128,48,1, + 128,48,1,128,48,1,0,24,3,0,28,6,0,14,12,0, + 3,240,0,20,20,60,21,0,0,254,3,240,56,0,192,24, + 0,128,28,1,128,12,1,128,14,3,0,14,3,0,6,3, + 0,7,6,0,7,6,0,3,6,0,3,140,0,1,140,0, + 1,204,0,1,216,0,0,216,0,0,248,0,0,240,0,0, + 112,0,0,96,0,27,20,80,27,0,0,254,4,15,224,56, + 4,3,0,24,14,3,0,24,14,3,0,28,15,3,0,28, + 27,2,0,12,27,6,0,12,27,134,0,12,49,134,0,14, + 49,134,0,14,49,196,0,6,96,204,0,6,96,204,0,7, + 96,236,0,7,192,108,0,3,192,120,0,3,192,120,0,3, + 128,56,0,3,128,56,0,3,0,48,0,19,20,60,20,0, + 0,127,31,192,60,7,0,28,6,0,14,6,0,7,12,0, + 7,28,0,3,152,0,1,240,0,1,240,0,0,224,0,0, + 240,0,1,240,0,1,184,0,3,28,0,7,12,0,6,14, + 0,12,7,0,28,3,128,56,3,192,255,15,224,18,20,60, + 19,0,0,240,31,192,56,7,0,28,6,0,12,12,0,14, + 12,0,7,24,0,7,24,0,3,48,0,3,176,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,7,248,0,14, + 20,40,17,1,0,127,252,96,28,64,56,64,120,0,112,0, + 224,0,224,1,192,3,192,3,128,7,0,7,0,14,0,30, + 0,28,0,56,0,56,4,112,4,240,12,255,252,7,30,30, + 10,2,251,254,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 254,13,30,60,15,1,251,192,0,192,0,96,0,96,0,112, + 0,48,0,48,0,24,0,24,0,28,0,12,0,12,0,14, + 0,6,0,6,0,3,0,3,0,3,128,1,128,1,128,0, + 192,0,192,0,192,0,96,0,96,0,112,0,48,0,48,0, + 24,0,24,7,30,30,10,1,251,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,254,12,15,30,16,2,9,2,0,6, + 0,15,0,15,0,27,0,27,128,17,128,49,192,49,192,96, + 192,96,224,96,96,192,112,192,48,128,32,13,1,2,15,1, + 253,255,248,7,7,7,10,0,16,96,240,56,24,12,4,2, + 13,15,30,15,1,0,15,192,48,224,112,96,96,96,0,96, + 0,96,15,224,63,224,126,96,240,96,224,96,192,96,192,96, + 65,224,62,120,15,24,48,16,0,0,48,0,240,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,240,49,248, + 54,28,60,12,56,14,48,6,48,6,48,6,48,6,48,6, + 48,4,48,12,48,8,28,16,7,224,12,15,30,14,1,0, + 7,224,24,96,32,32,96,0,64,0,192,0,192,0,192,0, + 192,0,192,0,192,0,96,0,112,32,56,112,31,128,15,24, + 48,17,1,0,0,24,0,120,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,7,248,24,56,32,24,96,24,64,24, + 192,24,192,24,192,24,192,24,192,24,192,24,96,24,112,56, + 56,222,15,24,13,15,30,15,1,0,7,192,24,96,32,48, + 96,24,64,24,192,24,255,240,192,0,192,0,192,0,224,0, + 96,0,112,8,56,48,15,192,11,24,48,10,1,0,3,224, + 4,192,24,0,16,0,48,0,48,0,48,0,48,0,48,0, + 255,0,50,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,15,23, + 46,16,1,248,7,134,24,252,32,96,96,48,96,48,96,48, + 96,48,112,96,56,64,31,128,8,0,16,0,60,0,63,224, + 15,248,63,252,112,124,224,12,192,12,192,8,96,16,112,32, + 31,192,16,24,48,18,1,0,16,0,240,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,112,49,136,54,12, + 56,12,56,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,21,21,9,1,0,48,112, + 112,96,0,0,48,240,48,48,48,48,48,48,48,48,48,48, + 48,48,252,9,29,58,8,252,248,1,128,3,128,3,128,3, + 0,0,0,0,0,1,128,7,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,0,3,0,2,0,124, + 0,248,0,15,24,48,16,1,0,16,0,240,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,252,48,112,48, + 224,49,128,51,0,54,0,62,0,54,0,55,0,51,128,49, + 192,48,224,48,112,48,120,252,62,6,24,24,9,1,0,16, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,24,15,45,26,1,0,240,240,120, + 51,25,140,52,26,12,56,28,12,56,28,12,48,24,12,48, + 24,12,48,24,12,48,24,12,48,24,12,48,24,12,48,24, + 12,48,24,12,48,24,12,252,126,63,16,15,30,18,1,0, + 112,112,177,136,54,12,56,12,56,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,252,63,14,15, + 30,16,1,0,7,192,24,112,32,56,96,24,64,28,192,12, + 192,12,192,12,192,12,192,12,224,8,96,24,112,16,56,32, + 15,192,15,23,46,17,1,248,112,240,179,24,52,28,56,12, + 48,14,48,6,48,6,48,6,48,6,48,6,48,4,48,12, + 48,8,60,16,55,224,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,254,0,14,23,46,16,1,248,7,144,24,112, + 32,48,96,48,64,48,192,48,192,48,192,48,192,48,192,48, + 192,48,96,48,96,112,48,176,31,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,1,252,11,15,30,13,1,0, + 49,224,243,224,52,64,56,64,56,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,254,0,9,15, + 30,12,2,0,63,0,67,0,193,0,192,0,224,0,248,0, + 126,0,63,0,15,128,3,128,1,128,129,128,129,0,195,0, + 252,0,10,20,40,11,1,0,16,0,48,0,48,0,48,0, + 48,0,255,192,49,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,128,31,64, + 15,15,30,17,1,0,48,24,240,120,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,24,48,56, + 24,222,15,24,15,15,30,16,0,0,252,62,56,12,56,8, + 24,24,28,24,12,16,12,48,14,48,6,32,7,96,7,64, + 3,64,3,192,1,128,1,0,22,15,45,23,0,0,252,16, + 124,48,24,24,56,56,16,24,56,48,24,60,48,28,108,48, + 12,110,32,12,78,96,12,198,96,14,199,64,6,131,64,7, + 131,192,7,131,192,3,1,128,2,1,0,16,15,30,16,0, + 0,254,63,60,28,28,16,14,48,6,96,7,192,3,192,1, + 192,3,192,6,224,12,112,12,56,24,24,56,28,252,63,16, + 23,46,16,255,248,126,31,28,6,28,4,12,12,14,12,14, + 8,6,24,7,24,3,16,3,48,3,176,1,160,1,224,1, + 224,0,192,0,192,0,128,1,128,1,128,3,0,126,0,124, + 0,248,0,12,15,30,14,1,0,127,240,64,96,64,224,1, + 192,1,128,3,128,7,0,6,0,14,0,28,0,28,0,56, + 16,112,16,112,48,255,240,8,30,30,11,2,251,3,6,12, + 8,24,24,24,24,28,12,12,12,12,24,48,248,28,12,12, + 12,12,28,24,24,24,24,24,12,6,3,2,32,32,7,3, + 250,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,30,30,11,1,251,192,96,48,24,24,24,24,24,56, + 48,48,48,48,56,31,12,24,48,48,48,48,56,24,24,24, + 24,16,48,96,192,14,6,12,16,1,7,28,8,62,12,127, + 136,71,240,131,240,128,224,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=33 h=41 x= 4 y=23 dx=34 dy= 0 ascent=34 len=132 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x=-4 y=-11 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =34 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25[13042] U8G_SECTION(".progmem.u8g_font_gdr25") = { + 0,59,57,236,242,25,6,209,16,163,32,255,247,34,245,31, + 247,0,0,0,9,0,0,5,30,30,11,3,255,48,112,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 96,96,96,0,0,0,112,248,248,248,112,11,13,26,17,3, + 16,112,224,241,224,241,224,241,224,241,224,112,224,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,17,23,69,19,2, + 2,0,194,0,1,134,0,1,134,0,1,142,0,3,140,0, + 3,12,0,3,12,0,63,255,128,63,255,128,6,24,0,6, + 56,0,14,48,0,12,48,0,12,48,0,255,254,0,255,254, + 0,24,96,0,24,224,0,48,192,0,48,192,0,48,192,0, + 113,192,0,97,128,0,16,30,60,19,1,253,1,128,1,128, + 1,128,3,224,15,252,57,254,49,156,113,136,113,128,113,128, + 121,128,61,128,63,128,31,224,7,248,1,252,1,190,1,143, + 1,143,1,135,193,135,193,135,225,142,241,142,255,252,63,240, + 15,192,1,128,1,128,1,128,25,25,100,27,1,255,15,128, + 6,0,63,192,28,0,113,224,56,0,112,224,56,0,224,112, + 112,0,224,112,224,0,224,112,224,0,224,113,192,0,224,115, + 128,0,112,231,0,0,120,231,0,0,63,206,60,0,31,28, + 254,0,0,29,207,0,0,57,199,0,0,115,131,128,0,227, + 131,128,0,227,131,128,1,195,131,128,3,131,131,128,3,131, + 131,128,7,1,199,0,14,1,199,0,28,0,254,0,24,0, + 120,0,24,28,84,27,2,0,0,248,0,1,252,0,3,30, + 0,7,14,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,7,112,0,7,192,0,7,131,255,15, + 135,255,29,193,242,57,224,240,112,240,112,112,112,112,224,120, + 112,224,60,112,224,30,224,224,15,224,224,7,192,240,3,192, + 120,3,240,60,30,248,31,252,127,7,224,56,4,13,13,10, + 3,16,112,240,240,240,240,112,96,96,96,96,96,96,96,9, + 37,74,13,3,250,0,128,3,128,7,0,14,0,12,0,28, + 0,24,0,56,0,56,0,112,0,112,0,112,0,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,112,0,112,0,112,0,112,0,56, + 0,56,0,28,0,28,0,14,0,7,0,3,128,0,128,9, + 37,74,13,1,250,128,0,224,0,112,0,56,0,28,0,28, + 0,14,0,14,0,14,0,7,0,7,0,7,0,7,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,7,0,7,0,7,0,7,0,14,0,14, + 0,12,0,28,0,24,0,56,0,112,0,224,0,128,0,16, + 16,32,18,1,14,1,128,1,128,1,128,97,132,113,142,121, + 159,31,248,7,192,3,192,31,248,121,158,241,142,33,134,1, + 128,1,128,1,128,15,14,28,16,1,4,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,10,10,9,2,250,60,252,60, + 28,28,24,24,48,32,64,11,2,4,13,1,9,127,224,255, + 224,5,5,5,9,2,255,112,248,248,248,112,17,38,114,19, + 1,249,0,1,128,0,7,0,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,56,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,192,0,1,192,0,1,192,0,3,128, + 0,3,128,0,3,128,0,7,0,0,7,0,0,14,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,28,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,112,0,0,224,0, + 0,192,0,0,17,24,72,19,1,0,3,224,0,15,248,0, + 28,60,0,56,30,0,48,14,0,112,7,0,96,7,0,96, + 7,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,3,0,112,7,0, + 112,7,0,120,6,0,60,14,0,30,28,0,15,248,0,7, + 224,0,14,24,48,19,3,0,1,128,7,128,63,128,255,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,15,224,127,252,14,24,48,19,2,0,3,224, + 15,248,24,120,48,60,112,28,96,28,224,28,0,28,0,24, + 0,56,0,48,0,112,0,224,1,192,1,128,3,128,7,0, + 14,0,28,0,24,4,48,4,112,12,255,252,255,252,15,24, + 48,19,1,0,3,224,15,248,28,120,56,60,112,28,112,28, + 0,28,0,24,0,48,0,96,3,224,3,248,0,60,0,28, + 0,14,0,14,0,14,0,14,0,14,0,28,64,28,240,120, + 63,240,15,192,16,24,48,19,1,0,0,24,0,120,0,120, + 0,248,1,248,1,184,3,56,7,56,6,56,12,56,28,56, + 24,56,48,56,112,56,96,56,255,255,255,254,0,56,0,56, + 0,56,0,56,0,56,0,124,3,255,15,24,48,19,1,0, + 0,4,31,252,31,248,24,0,24,0,24,0,48,0,48,0, + 48,0,63,224,63,248,48,124,64,28,0,30,0,14,0,14, + 0,14,0,14,0,14,0,28,64,28,240,120,63,240,15,192, + 15,24,48,19,2,0,0,56,0,240,3,192,7,0,14,0, + 28,0,56,0,112,0,112,0,99,224,239,248,248,60,240,28, + 224,30,224,14,224,14,224,14,224,14,112,14,112,12,56,28, + 60,56,31,240,7,192,15,23,46,19,2,0,127,254,255,254, + 192,12,192,12,128,28,0,24,0,56,0,48,0,112,0,96, + 0,96,0,224,0,192,1,192,1,128,3,128,3,0,7,0, + 7,0,14,0,14,0,28,0,56,0,15,24,48,19,2,0, + 15,192,63,240,120,120,112,60,240,28,224,28,224,28,240,24, + 120,48,62,96,31,192,7,240,24,120,48,60,112,30,96,14, + 224,14,224,14,224,14,224,12,112,28,124,56,63,240,15,192, + 15,25,50,19,2,255,7,192,15,240,56,120,48,60,112,28, + 96,28,224,14,224,14,224,14,224,14,240,14,112,30,120,62, + 63,238,15,140,0,28,0,28,0,24,0,56,0,112,0,224, + 1,192,7,128,30,0,48,0,5,19,19,9,2,255,120,248, + 248,248,96,0,0,0,0,0,0,0,0,0,112,248,248,248, + 112,6,24,24,9,2,250,120,248,248,248,96,0,0,0,0, + 0,0,0,0,0,60,252,60,28,28,24,24,48,32,64,15, + 13,26,18,1,5,0,2,0,30,0,254,3,240,31,192,126, + 0,240,0,252,0,63,128,7,224,1,252,0,62,0,12,15, + 8,16,18,1,7,127,254,255,254,0,0,0,0,0,0,0, + 0,127,254,255,254,15,13,26,18,1,5,96,0,252,0,63, + 0,15,224,1,252,0,126,0,30,0,126,3,240,31,192,126, + 0,248,0,192,0,14,30,60,17,2,255,7,224,31,240,56, + 120,112,56,224,28,224,28,224,28,192,28,0,28,0,56,0, + 56,0,112,0,240,0,224,1,192,3,128,3,128,7,0,7, + 0,7,0,7,0,7,0,0,0,0,0,0,0,7,0,15, + 128,15,128,15,128,7,0,30,33,132,32,1,249,0,7,248, + 0,0,63,254,0,0,240,31,128,1,192,7,192,3,0,1, + 224,6,0,0,240,12,0,0,112,24,0,0,120,56,3,198, + 56,48,15,252,56,112,28,60,60,112,56,28,28,96,112,28, + 28,224,96,28,28,224,224,28,28,224,224,28,28,224,224,28, + 28,224,224,28,28,224,224,28,28,224,224,28,24,240,240,28, + 56,112,112,28,48,112,120,60,96,120,60,94,224,56,31,143, + 128,60,15,15,0,30,0,0,0,31,0,0,0,15,128,0, + 32,7,192,0,192,1,248,15,128,0,255,254,0,0,31,240, + 0,23,25,75,24,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,19,25,75,22,1,0,31,240,0,255,254,0,28,31, + 0,28,7,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,0,28,6,0,28,28,0,31,254,0,31,255,0,28, + 15,128,28,3,192,28,1,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,1,224,28,1,192,28,7,128,63,255,0, + 255,252,0,19,25,75,21,1,0,0,254,0,3,255,192,7, + 7,192,12,1,128,24,0,0,56,0,0,112,0,0,112,0, + 0,112,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,112,0,0,112, + 0,0,120,0,0,60,0,64,30,1,224,15,135,128,7,254, + 0,1,248,0,21,25,75,24,1,0,31,248,0,255,255,0, + 28,15,128,28,3,192,28,1,224,28,0,240,28,0,112,28, + 0,112,28,0,120,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,28,0,112, + 28,0,112,28,0,224,28,1,224,28,3,192,28,15,128,63, + 254,0,255,248,0,18,25,75,20,1,0,255,255,0,63,255, + 0,28,3,0,28,1,0,28,1,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,31,252,0,31,252,0,28, + 8,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,64,28,0,192,28,1,128, + 63,255,128,255,255,128,17,25,75,19,1,0,255,255,128,63, + 255,128,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,31,252,0,31,248,0, + 28,24,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,62,0,0,255,128,0,21,25,75,23,1,0,0,127,0, + 1,255,192,7,3,224,14,0,192,28,0,0,56,0,0,48, + 0,0,112,0,0,112,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,15,248,224,1,224,224,0,224,224,0,224, + 112,0,224,112,0,224,120,0,224,60,0,224,30,0,224,15, + 129,192,7,255,128,1,252,0,24,25,75,26,1,0,255,129, + 255,62,0,124,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31, + 255,248,31,255,248,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,62,0,124,255,129,255,9,25,50,12,1,0,255, + 128,62,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,62,0,255, + 128,15,32,64,12,252,249,7,254,0,248,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,96,0,96,0,224,0, + 192,49,128,127,0,252,0,22,25,75,23,1,0,255,135,248, + 62,1,192,28,3,128,28,7,0,28,14,0,28,12,0,28, + 24,0,28,56,0,28,112,0,28,224,0,29,192,0,31,128, + 0,31,192,0,29,224,0,28,224,0,28,112,0,28,56,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,28, + 3,224,62,1,252,255,128,240,18,25,75,19,1,0,255,128, + 0,62,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,192,28,0,128, + 30,1,128,63,255,128,255,255,128,30,25,100,32,1,0,254, + 0,1,248,30,0,3,224,31,0,3,224,31,0,3,224,31, + 0,7,224,27,128,6,224,27,128,14,224,25,192,12,224,25, + 192,12,224,24,224,28,224,24,224,24,224,24,224,56,224,24, + 112,48,224,24,112,112,224,24,56,96,224,24,56,96,224,24, + 28,224,224,24,28,192,224,24,31,192,224,24,15,128,224,24, + 15,128,224,24,7,128,224,24,7,0,224,60,7,1,224,255, + 2,7,252,24,25,75,26,1,0,248,1,255,60,0,124,30, + 0,56,30,0,56,31,0,56,31,128,56,29,128,56,29,192, + 56,28,224,56,28,96,56,28,112,56,28,56,56,28,28,56, + 28,28,56,28,14,56,28,7,56,28,7,56,28,3,184,28, + 3,248,28,1,248,28,0,248,28,0,248,28,0,120,62,0, + 56,255,128,24,21,25,75,24,1,0,0,252,0,3,255,0, + 7,7,128,12,3,192,24,1,224,56,0,224,112,0,112,112, + 0,112,96,0,120,224,0,56,224,0,56,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,240,0,48,112,0,112, + 112,0,96,120,0,224,60,0,192,30,1,128,15,7,0,7, + 254,0,1,248,0,18,25,75,21,1,0,31,248,0,255,254, + 0,28,31,0,28,7,128,28,3,192,28,1,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,3,128,28,7,128,28, + 15,0,29,254,0,28,248,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 62,0,0,255,128,0,24,31,93,24,1,250,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,112,56,0,224,60,0,192,30,1,192,15,7, + 128,7,254,0,1,252,0,0,14,0,0,7,0,0,3,130, + 0,1,227,0,0,254,0,0,60,21,25,75,22,1,0,31, + 240,0,255,254,0,28,31,0,28,7,0,28,7,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,7,0,28,6,0, + 28,28,0,31,240,0,28,112,0,28,56,0,28,56,0,28, + 28,0,28,30,0,28,14,0,28,7,0,28,7,128,28,3, + 128,28,3,192,62,1,248,255,129,240,15,25,50,19,2,0, + 7,224,31,248,120,124,112,24,224,0,224,0,224,0,240,0, + 248,0,126,0,63,128,31,224,7,248,1,252,0,124,0,30, + 0,30,0,14,128,14,128,14,192,28,224,28,240,120,255,240, + 31,128,21,25,75,22,0,0,127,255,248,255,255,248,192,112, + 24,192,112,24,128,112,16,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,248,0, + 3,254,0,24,25,75,26,1,0,255,129,255,62,0,124,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,112,14,0,112,14,0,112,15,0,224,7,193,192,3,255, + 128,0,126,0,25,25,100,26,0,0,255,128,127,128,28,0, + 14,0,30,0,12,0,14,0,28,0,14,0,24,0,15,0, + 24,0,7,0,56,0,7,0,48,0,3,128,48,0,3,128, + 112,0,3,192,96,0,1,192,224,0,1,192,224,0,1,224, + 192,0,0,225,192,0,0,225,128,0,0,113,128,0,0,115, + 128,0,0,123,0,0,0,59,0,0,0,63,0,0,0,62, + 0,0,0,30,0,0,0,30,0,0,0,8,0,0,33,25, + 125,34,0,0,255,128,192,127,128,28,0,192,14,0,28,0, + 192,12,0,28,1,224,12,0,14,1,224,28,0,14,1,224, + 28,0,14,3,240,24,0,14,3,112,24,0,7,3,48,24, + 0,7,7,56,56,0,7,6,56,56,0,7,6,24,48,0, + 7,14,28,48,0,3,140,28,48,0,3,140,14,112,0,3, + 156,14,96,0,3,152,14,96,0,1,216,7,96,0,1,248, + 7,96,0,1,240,7,224,0,1,240,3,192,0,1,240,3, + 192,0,0,224,3,192,0,0,224,1,192,0,0,192,1,128, + 0,23,25,75,25,1,0,255,135,252,60,0,240,28,0,224, + 30,1,192,15,1,128,7,3,128,7,135,0,3,198,0,1, + 238,0,0,252,0,0,252,0,0,120,0,0,120,0,0,124, + 0,0,254,0,1,206,0,1,207,0,3,135,128,3,3,128, + 7,3,192,14,1,224,12,0,224,28,0,240,60,0,248,255, + 3,254,23,25,75,24,0,0,248,1,254,60,0,120,30,0, + 96,14,0,224,7,0,192,7,129,192,3,129,128,3,195,128, + 1,195,0,0,231,0,0,238,0,0,126,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,124,0, + 1,255,0,18,25,75,21,1,0,63,255,192,63,255,192,48, + 3,128,32,7,128,96,15,0,96,14,0,0,30,0,0,28, + 0,0,56,0,0,120,0,0,112,0,0,240,0,1,224,0, + 1,192,0,3,192,0,3,128,0,7,0,0,15,0,0,14, + 0,0,30,0,64,60,0,64,56,0,192,120,0,192,127,255, + 192,255,255,192,9,37,74,12,3,250,255,128,255,128,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,128,255,128,17,38,114,19,1,249,192,0,0,224,0,0, + 112,0,0,112,0,0,48,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,14,0,0,14,0,0,6,0, + 0,7,0,0,7,0,0,3,0,0,3,128,0,3,128,0, + 1,192,0,1,192,0,0,192,0,0,224,0,0,224,0,0, + 96,0,0,112,0,0,112,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,12,0,0,14,0,0,14,0, + 0,7,0,0,7,0,0,3,0,0,1,128,9,37,74,13, + 1,250,255,128,255,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,128,255,128,16,19,38,20, + 2,11,0,128,3,128,3,192,3,192,7,224,6,224,14,224, + 12,112,12,112,28,120,24,56,24,56,48,28,48,28,112,28, + 96,14,96,14,224,7,128,6,17,2,6,19,1,251,127,255, + 128,255,255,0,8,9,9,13,1,20,224,240,112,56,56,28, + 14,6,3,16,18,36,18,2,0,3,224,31,240,56,120,112, + 56,240,56,192,56,0,56,0,120,7,248,28,56,112,56,96, + 56,224,56,224,56,224,120,241,185,127,63,60,24,18,30,90, + 20,0,0,12,0,0,124,0,0,188,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,60,0,28,255,0,29,143,0, + 31,7,128,30,3,128,28,3,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,128,28,1,128,28,3, + 128,30,3,0,31,134,0,7,252,0,1,240,0,15,18,36, + 17,2,0,1,248,7,254,28,28,56,12,112,4,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,0,112,4,120, + 6,62,28,31,248,7,224,19,30,90,21,2,0,0,3,0, + 0,63,0,0,15,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7, + 0,3,247,0,15,255,0,28,31,0,56,15,0,48,7,0, + 112,7,0,96,7,0,224,7,0,224,7,0,224,7,0,224, + 7,0,224,7,0,240,7,0,112,15,0,120,31,0,60,55, + 224,31,231,192,7,131,0,14,18,36,18,2,0,3,192,15, + 240,28,120,48,56,112,28,96,28,224,28,255,252,255,248,224, + 0,224,0,224,0,240,0,112,4,120,12,60,56,31,240,7, + 192,15,30,60,12,1,0,0,120,1,254,3,28,6,8,14, + 0,12,0,12,0,28,0,28,0,28,0,28,0,28,0,127, + 240,255,224,28,64,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,62, + 0,255,192,18,27,81,19,1,247,3,224,192,15,255,192,28, + 63,0,56,28,0,112,14,0,112,14,0,112,14,0,112,14, + 0,120,28,0,60,56,0,31,240,0,7,192,0,6,0,0, + 12,0,0,28,0,0,31,224,0,15,254,0,12,63,128,24, + 3,192,112,1,192,224,1,192,224,1,192,224,3,128,240,3, + 128,124,15,0,63,252,0,7,240,0,21,30,90,22,1,0, + 12,0,0,252,0,0,124,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,31,0,28,63,128,28,227,192,29,129,192, + 31,1,192,30,1,192,30,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,62,3,192,255,143,248,9,27,54,11,1,0, + 28,0,60,0,60,0,60,0,24,0,0,0,0,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,11,36,72,10,252,247,0,224,1,224, + 1,224,1,224,0,192,0,0,0,0,0,0,0,0,0,96, + 7,224,1,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,192,0,192,1,192,1,128,35,0, + 254,0,248,0,19,30,90,20,1,0,12,0,0,252,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,31, + 224,28,7,0,28,14,0,28,28,0,28,48,0,28,224,0, + 29,192,0,31,128,0,29,192,0,29,224,0,28,240,0,28, + 120,0,28,56,0,28,28,0,28,30,0,28,15,0,60,7, + 128,255,3,224,9,30,60,11,1,0,12,0,252,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,31,18,72,32,1,0,12,30,3,192, + 252,127,15,224,60,199,152,240,29,131,176,112,31,3,224,112, + 30,3,192,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,60,7,192,240, + 255,159,243,254,21,18,54,22,1,0,12,15,0,252,63,128, + 60,99,192,29,129,192,29,1,192,30,1,192,30,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,62,3,192,255,143,248, + 16,18,36,20,2,0,3,224,15,248,28,60,48,30,112,14, + 96,15,224,7,224,7,224,7,224,7,224,7,224,7,240,6, + 112,14,120,12,62,56,31,240,7,192,18,27,81,21,1,247, + 12,28,0,252,127,0,60,143,128,29,7,128,30,3,128,30, + 3,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,128,28,1,128,28,3,128,30,3,0,31,6,0, + 29,252,0,28,120,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,62,0,0,255,128, + 0,19,27,81,21,2,247,1,241,128,7,251,0,28,31,0, + 56,15,0,48,7,0,112,7,0,96,7,0,224,7,0,224, + 7,0,224,7,0,224,7,0,224,7,0,240,7,0,112,15, + 0,120,31,0,60,55,0,31,231,0,7,135,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,63,224,14,18,36,16,1,0,12,60, + 252,252,61,140,29,12,31,4,30,0,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,0, + 255,128,11,18,36,15,2,0,31,0,127,128,115,192,225,128, + 224,128,240,0,248,0,126,0,31,0,15,192,3,224,1,224, + 128,224,128,224,192,224,225,192,255,128,62,0,13,25,50,14, + 0,0,4,0,12,0,28,0,28,0,28,0,28,0,28,0, + 127,248,255,240,28,32,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,56, + 15,240,7,128,21,18,54,21,0,0,12,0,192,252,15,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,3,192,28,7,192,30,29,200,15,241,240,7,192,192, + 19,18,54,20,0,0,255,7,224,60,1,192,28,1,128,28, + 3,128,14,3,0,14,3,0,14,6,0,7,6,0,7,6, + 0,3,140,0,3,140,0,3,156,0,1,216,0,1,216,0, + 0,240,0,0,240,0,0,240,0,0,64,0,28,18,72,28, + 0,0,255,3,7,240,60,7,0,192,28,7,0,192,28,7, + 129,128,28,15,129,128,14,15,129,128,14,13,195,128,14,25, + 195,0,6,25,195,0,7,24,227,0,7,48,230,0,3,48, + 118,0,3,176,118,0,3,224,124,0,1,224,60,0,1,224, + 60,0,1,192,60,0,1,128,16,0,20,18,54,20,0,0, + 127,143,224,30,3,128,14,3,0,7,6,0,7,140,0,3, + 156,0,1,216,0,0,240,0,0,240,0,0,240,0,1,184, + 0,1,156,0,3,30,0,6,14,0,14,7,0,12,3,128, + 60,3,192,255,15,240,20,27,81,20,255,247,127,131,240,30, + 0,224,14,0,192,14,0,192,7,1,128,7,1,128,7,3, + 0,3,131,0,3,131,0,1,198,0,1,198,0,1,198,0, + 0,236,0,0,236,0,0,120,0,0,120,0,0,120,0,0, + 48,0,0,48,0,0,96,0,0,96,0,0,224,0,1,192, + 0,67,128,0,127,0,0,254,0,0,124,0,0,15,18,36, + 18,1,0,63,254,63,254,96,28,96,56,64,56,0,112,0, + 224,1,192,1,192,3,128,7,0,7,0,14,0,28,2,56, + 2,56,6,127,254,255,254,11,37,74,14,2,250,0,64,1, + 224,3,128,7,0,6,0,14,0,14,0,14,0,14,0,14, + 0,15,0,7,0,7,0,7,0,7,0,7,0,14,0,28, + 0,124,0,254,0,15,0,7,0,7,0,7,0,7,0,7, + 0,15,0,14,0,14,0,14,0,14,0,14,0,14,0,7, + 0,3,0,1,192,0,64,3,41,41,9,3,248,96,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,192,11,37,74,14,1,250,64,0,112,0, + 56,0,28,0,12,0,14,0,14,0,14,0,14,0,14,0, + 30,0,28,0,28,0,28,0,28,0,28,0,14,0,15,192, + 3,224,7,0,14,0,12,0,28,0,28,0,28,0,28,0, + 30,0,14,0,14,0,14,0,14,0,14,0,12,0,28,0, + 56,0,112,0,192,0,18,6,18,20,1,9,15,0,192,31, + 192,128,63,225,0,99,255,0,192,254,0,128,56,0,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0, + 0,0,9,0,0,5,29,29,11,3,245,112,248,248,248,112, + 0,0,96,96,96,96,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,240,240,240,192,15,25,50,19,2,255,1,128, + 1,128,1,128,1,240,7,252,31,254,57,140,113,132,113,128, + 97,128,225,128,225,128,225,128,225,128,225,128,241,128,113,128, + 121,134,61,140,63,248,31,240,3,192,1,128,1,128,1,128, + 17,25,75,19,1,255,0,252,0,3,255,0,7,15,0,14, + 7,0,12,6,0,12,2,0,28,2,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,127,224,0,255,224,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,24, + 0,128,24,1,0,24,3,0,63,223,0,127,255,0,192,255, + 0,13,13,26,19,3,5,192,24,239,184,127,240,56,224,96, + 112,96,48,96,48,96,48,120,240,63,224,111,176,192,24,128, + 8,21,24,72,19,255,0,120,7,248,252,1,248,62,1,224, + 31,3,128,15,3,128,7,135,0,7,135,0,3,206,0,1, + 206,0,1,252,0,0,248,0,0,248,0,0,112,0,0,112, + 0,15,255,192,31,255,128,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,248,0,3,254,0,3, + 41,41,9,3,248,96,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,128,0,0,0,64,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,192,15,28, + 56,19,2,0,7,224,15,248,28,120,56,24,56,8,56,0, + 60,0,31,0,31,128,63,224,99,248,224,252,224,124,224,30, + 240,30,120,14,62,14,31,14,15,220,3,248,0,248,0,60, + 32,28,32,28,48,28,60,56,63,240,7,192,12,5,10,16, + 2,22,96,48,224,112,224,112,224,112,192,96,25,25,100,29, + 2,0,0,127,0,0,3,255,224,0,7,128,240,0,14,0, + 56,0,28,31,28,0,56,127,206,0,112,225,199,0,97,192, + 131,0,99,128,3,0,195,0,1,128,199,0,1,128,199,0, + 1,128,199,0,1,128,199,0,1,128,199,0,1,128,199,128, + 1,128,99,128,3,0,99,192,67,0,113,241,135,0,56,255, + 14,0,28,60,28,0,14,0,56,0,7,128,240,0,3,255, + 224,0,0,127,0,0,8,14,14,10,1,11,28,60,70,198, + 6,30,102,198,198,206,119,0,255,255,15,18,36,19,2,0, + 2,6,6,4,12,12,12,24,24,56,56,112,112,224,241,224, + 225,192,225,192,241,224,112,240,56,112,24,56,12,24,12,12, + 6,4,2,6,17,8,24,19,1,4,255,255,128,255,255,128, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 3,0,11,2,4,13,1,9,127,224,255,224,13,14,28,14, + 1,14,15,128,63,224,112,96,127,48,200,152,136,136,143,8, + 138,8,137,8,201,152,92,240,112,112,63,224,15,128,13,2, + 4,20,3,23,127,248,255,248,8,9,9,14,3,15,28,62, + 103,231,231,231,230,124,56,15,18,36,16,1,3,3,128,3, + 128,3,128,3,128,3,128,3,128,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,0,0,0,0,0,127,252,255, + 252,11,15,30,14,1,12,15,128,31,192,49,224,96,224,64, + 224,0,192,1,192,1,128,3,0,6,0,12,0,24,32,48, + 32,127,224,255,224,11,16,32,13,1,11,31,0,63,128,99, + 192,225,192,1,192,1,128,7,0,31,128,1,192,0,224,0, + 224,0,224,0,224,193,192,127,128,30,0,8,9,9,13,4, + 20,7,15,30,28,56,48,112,96,192,20,27,81,21,1,247, + 12,1,128,252,7,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,30,7,128,31,31,128,31,251,144, + 27,243,224,25,225,128,24,0,0,24,0,0,24,0,0,28, + 0,0,28,0,0,28,0,0,30,0,0,30,0,0,24,0, + 0,20,30,90,22,1,251,3,255,240,28,63,192,48,59,128, + 112,59,128,96,59,128,224,59,128,224,59,128,224,59,128,224, + 59,128,240,59,128,112,59,128,120,59,128,62,59,128,31,251, + 128,7,251,128,0,59,128,0,59,128,0,59,128,0,59,128, + 0,59,128,0,59,128,0,59,128,0,59,128,0,59,128,0, + 59,128,0,59,128,0,59,128,0,59,128,0,127,192,1,255, + 240,3,5,5,6,1,11,96,224,224,224,192,7,9,9,9, + 1,247,24,16,56,60,62,14,12,56,224,10,15,30,13,2, + 12,6,0,62,0,254,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,255,192,9, + 14,28,11,1,11,30,0,63,0,103,0,67,128,193,128,193, + 128,193,128,193,128,225,0,115,0,126,0,60,0,255,128,255, + 128,15,18,36,19,3,0,129,0,193,128,96,192,112,96,48, + 112,56,48,28,56,30,28,15,30,15,30,30,28,28,56,56, + 56,48,112,112,224,96,192,193,128,129,0,19,24,72,23,2, + 0,12,0,192,252,1,224,28,1,128,28,3,128,28,3,0, + 28,6,0,28,14,0,28,12,0,28,24,0,28,56,0,28, + 48,0,255,224,0,0,224,0,0,192,192,1,193,192,1,130, + 192,3,2,192,7,4,192,6,8,192,12,16,192,28,31,224, + 24,63,224,48,0,192,112,3,224,20,24,72,24,2,0,12, + 0,96,252,0,192,28,0,192,28,1,128,28,3,0,28,3, + 0,28,6,0,28,14,0,28,12,0,28,24,0,28,56,0, + 255,176,0,0,97,224,0,99,240,0,196,112,1,204,112,1, + 128,96,3,0,224,7,0,192,6,1,128,12,3,32,28,6, + 16,24,15,240,48,31,240,20,25,75,23,1,0,30,0,0, + 63,0,48,103,128,96,195,128,224,3,0,192,6,1,128,31, + 129,128,3,195,0,0,231,0,0,230,0,97,204,0,63,220, + 0,15,24,0,0,48,0,0,48,96,0,96,224,0,225,96, + 0,195,96,1,130,96,3,132,96,3,12,112,6,31,240,14, + 0,96,12,0,96,24,1,240,14,29,58,18,2,245,3,128, + 7,192,7,192,7,192,3,128,0,0,0,0,3,128,3,128, + 3,128,3,128,3,128,7,0,7,0,14,0,28,0,60,0, + 56,0,112,0,112,0,224,0,224,12,224,28,224,28,224,28, + 240,56,120,112,63,224,31,128,23,34,102,24,0,0,3,0, + 0,7,128,0,7,224,0,1,240,0,0,120,0,0,60,0, + 0,14,0,0,2,0,0,0,0,0,8,0,0,56,0,0, + 60,0,0,60,0,0,108,0,0,110,0,0,110,0,0,198, + 0,0,199,0,0,199,0,1,131,0,1,131,128,1,131,128, + 3,1,128,3,255,192,3,255,192,6,0,224,6,0,224,6, + 0,224,12,0,112,12,0,112,12,0,112,24,0,56,28,0, + 120,255,1,254,23,34,102,24,0,0,0,1,128,0,3,192, + 0,7,192,0,15,0,0,30,0,0,56,0,0,96,0,0, + 192,0,0,0,0,0,8,0,0,56,0,0,60,0,0,60, + 0,0,108,0,0,110,0,0,110,0,0,198,0,0,199,0, + 0,199,0,1,131,0,1,131,128,1,131,128,3,1,128,3, + 255,192,3,255,192,6,0,224,6,0,224,6,0,224,12,0, + 112,12,0,112,12,0,112,24,0,56,28,0,120,255,1,254, + 23,33,99,24,0,0,0,56,0,0,124,0,0,254,0,1, + 231,0,1,131,128,3,1,192,6,0,128,0,0,0,0,8, + 0,0,56,0,0,60,0,0,60,0,0,108,0,0,110,0, + 0,110,0,0,198,0,0,199,0,0,199,0,1,131,0,1, + 131,128,1,131,128,3,1,128,3,255,192,3,255,192,6,0, + 224,6,0,224,6,0,224,12,0,112,12,0,112,12,0,112, + 24,0,56,28,0,120,255,1,254,23,32,96,24,0,0,0, + 224,64,1,248,192,3,253,128,6,31,0,4,6,0,0,0, + 0,0,0,0,0,8,0,0,56,0,0,60,0,0,60,0, + 0,108,0,0,110,0,0,110,0,0,198,0,0,199,0,0, + 199,0,1,131,0,1,131,128,1,131,128,3,1,128,3,255, + 192,3,255,192,6,0,224,6,0,224,6,0,224,12,0,112, + 12,0,112,12,0,112,24,0,56,28,0,120,255,1,254,23, + 31,93,24,0,0,3,129,192,3,129,192,3,129,192,3,1, + 128,3,1,128,0,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,23,34,102,24,0,0,0,62,0,0,126,0,0,199, + 0,0,195,0,0,195,0,0,230,0,0,252,0,0,48,0, + 0,0,0,0,8,0,0,56,0,0,60,0,0,60,0,0, + 108,0,0,110,0,0,110,0,0,198,0,0,199,0,0,199, + 0,1,131,0,1,131,128,1,131,128,3,1,128,3,255,192, + 3,255,192,6,0,224,6,0,224,6,0,224,12,0,112,12, + 0,112,12,0,112,24,0,56,28,0,120,255,1,254,30,25, + 100,31,0,0,1,255,255,240,0,63,255,240,0,25,192,48, + 0,25,192,16,0,57,192,16,0,49,192,0,0,113,192,0, + 0,97,192,0,0,97,192,0,0,225,192,0,0,255,255,192, + 1,255,255,192,1,193,192,128,1,129,192,0,3,129,192,0, + 3,1,192,0,7,1,192,0,7,1,192,0,6,1,192,0, + 14,1,192,0,12,1,192,4,28,1,192,12,28,1,192,24, + 60,3,255,248,255,15,255,248,18,34,102,21,1,247,0,126, + 0,3,255,192,7,7,192,14,1,128,28,0,0,56,0,0, + 48,0,0,112,0,0,112,0,0,96,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,240,0,0,112,0,0,120,0,0,56,0,64,60,0,192, + 30,3,128,15,254,0,7,252,0,1,240,0,0,64,0,0, + 96,0,0,240,0,0,120,0,0,56,0,0,48,0,0,224, + 0,3,128,0,18,34,102,20,1,0,12,0,0,62,0,0, + 63,0,0,15,128,0,3,192,0,0,224,0,0,112,0,0, + 16,0,0,0,0,255,255,0,63,255,0,28,3,0,28,1, + 0,28,1,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,31,252,0,31,252,0,28,8,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,64,28,0,192,28,1,128,63,255,128,255,255,128, + 18,34,102,20,1,0,0,12,0,0,30,0,0,62,0,0, + 120,0,0,240,0,1,192,0,3,0,0,6,0,0,0,0, + 0,255,255,0,63,255,0,28,3,0,28,1,0,28,1,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,31, + 252,0,31,252,0,28,8,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,64, + 28,0,192,28,1,128,63,255,128,255,255,128,18,33,99,20, + 1,0,1,192,0,3,224,0,7,240,0,7,56,0,12,28, + 0,24,14,0,16,2,0,0,0,0,255,255,0,63,255,0, + 28,3,0,28,1,0,28,1,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,31,252,0,31,252,0,28,8, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,64,28,0,192,28,1,128,63, + 255,128,255,255,128,18,31,93,20,1,0,28,14,0,28,14, + 0,28,14,0,28,14,0,24,12,0,0,0,0,255,255,0, + 63,255,0,28,3,0,28,1,0,28,1,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,31,252,0,31,252, + 0,28,8,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,64,28,0,192,28, + 1,128,63,255,128,255,255,128,11,34,68,12,255,0,96,0, + 248,0,252,0,62,0,15,0,3,128,1,192,0,64,0,0, + 63,224,15,128,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,15,128, + 63,224,11,34,68,12,1,0,0,192,1,224,3,224,7,128, + 15,0,28,0,48,0,96,0,0,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,12,33,66,12, + 0,0,14,0,31,0,63,128,57,192,96,224,192,112,128,32, + 0,0,127,192,31,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,127,192,12,31,62,12,0,0,224,112,224,112,224,112, + 224,112,192,96,0,0,127,192,31,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,31,0,127,192,21,25,75,24,1,0,31,248, + 0,255,255,0,28,15,128,28,3,192,28,1,224,28,0,240, + 28,0,112,28,0,112,28,0,120,28,0,56,28,0,56,255, + 240,56,255,224,56,28,0,56,28,0,56,28,0,56,28,0, + 112,28,0,112,28,0,112,28,0,224,28,1,224,28,3,192, + 28,15,128,63,254,0,255,248,0,24,32,96,26,1,0,0, + 240,64,1,248,96,3,252,192,2,31,128,6,6,0,0,0, + 0,0,0,0,248,1,255,60,0,124,30,0,56,30,0,56, + 31,0,56,31,128,56,29,128,56,29,192,56,28,224,56,28, + 96,56,28,112,56,28,56,56,28,28,56,28,28,56,28,14, + 56,28,7,56,28,7,56,28,3,184,28,3,248,28,1,248, + 28,0,248,28,0,248,28,0,120,62,0,56,255,128,24,21, + 34,102,24,1,0,3,0,0,7,128,0,15,192,0,3,224, + 0,0,240,0,0,56,0,0,28,0,0,4,0,0,0,0, + 0,252,0,3,255,0,7,7,128,12,3,192,24,1,224,56, + 0,224,112,0,112,112,0,112,96,0,120,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,224,0,56,224,0,56, + 240,0,48,112,0,112,112,0,96,120,0,224,60,0,192,30, + 1,128,15,7,0,7,254,0,1,248,0,21,34,102,24,1, + 0,0,3,0,0,7,128,0,15,192,0,31,0,0,60,0, + 0,112,0,0,224,0,0,128,0,0,0,0,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,96,120,0,224,60,0,192,30,1,128,15,7, + 0,7,254,0,1,248,0,21,33,99,24,1,0,0,120,0, + 0,252,0,0,252,0,1,206,0,3,135,0,6,1,128,4, + 0,128,0,0,0,0,252,0,3,255,0,7,7,128,12,3, + 192,24,1,224,56,0,224,112,0,112,112,0,112,96,0,120, + 224,0,56,224,0,56,224,0,56,224,0,56,224,0,56,224, + 0,56,224,0,56,240,0,48,112,0,112,112,0,96,120,0, + 224,60,0,192,30,1,128,15,7,0,7,254,0,1,248,0, + 21,32,96,24,1,0,1,224,128,3,240,192,7,249,128,6, + 63,0,12,12,0,0,0,0,0,0,0,0,252,0,3,255, + 0,7,7,128,12,3,192,24,1,224,56,0,224,112,0,112, + 112,0,112,96,0,120,224,0,56,224,0,56,224,0,56,224, + 0,56,224,0,56,224,0,56,224,0,56,240,0,48,112,0, + 112,112,0,96,120,0,224,60,0,192,30,1,128,15,7,0, + 7,254,0,1,248,0,21,31,93,24,1,0,3,1,128,7, + 3,128,7,3,128,7,3,128,2,1,0,0,0,0,0,252, + 0,3,255,0,7,7,128,12,3,192,24,1,224,56,0,224, + 112,0,112,112,0,112,96,0,120,224,0,56,224,0,56,224, + 0,56,224,0,56,224,0,56,224,0,56,224,0,56,240,0, + 48,112,0,112,112,0,96,120,0,224,60,0,192,30,1,128, + 15,7,0,7,254,0,1,248,0,13,12,24,16,2,5,192, + 48,224,120,112,224,57,192,31,128,15,0,15,0,31,128,57, + 192,112,224,224,112,192,56,21,26,78,24,1,255,0,252,56, + 3,255,112,7,7,224,12,3,224,24,1,224,56,3,240,48, + 7,240,112,7,112,96,14,120,224,28,56,224,28,56,224,56, + 56,224,112,56,224,112,56,224,224,56,225,192,56,243,128,48, + 115,128,112,119,0,96,126,0,224,60,0,192,62,1,128,63, + 7,0,119,254,0,225,248,0,128,0,0,24,34,102,26,1, + 0,1,128,0,3,192,0,3,224,0,0,240,0,0,120,0, + 0,28,0,0,6,0,0,3,0,0,0,0,255,129,255,62, + 0,124,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,112,14,0,112,14,0,112,15,0,224,7,193, + 192,3,255,128,0,126,0,24,34,102,26,1,0,0,1,128, + 0,3,224,0,7,224,0,15,128,0,30,0,0,56,0,0, + 112,0,0,64,0,0,0,0,255,129,255,62,0,124,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 112,14,0,112,14,0,112,15,0,224,7,193,192,3,255,128, + 0,126,0,24,33,99,26,1,0,0,28,0,0,62,0,0, + 127,0,0,231,0,1,193,128,3,128,192,2,0,64,0,0, + 0,255,129,255,62,0,124,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,112,14,0,112,14,0,112, + 15,0,224,7,193,192,3,255,128,0,126,0,24,31,93,26, + 1,0,1,128,192,3,129,192,3,129,192,3,129,192,1,0, + 128,0,0,0,255,129,255,62,0,124,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,14,0,112, + 14,0,112,15,0,224,7,193,192,3,255,128,0,126,0,23, + 34,102,24,0,0,0,1,128,0,3,192,0,7,192,0,15, + 0,0,30,0,0,56,0,0,96,0,0,192,0,0,0,0, + 248,1,254,60,0,120,30,0,96,14,0,224,7,0,192,7, + 129,192,3,129,128,3,195,128,1,195,0,0,231,0,0,238, + 0,0,126,0,0,124,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,124,0,1,255,0,18,25,75,21,1, + 0,255,128,0,60,0,0,28,0,0,28,0,0,31,248,0, + 31,254,0,28,31,0,28,7,128,28,3,128,28,3,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,3, + 128,28,7,128,28,15,0,29,254,0,28,248,0,28,0,0, + 28,0,0,28,0,0,62,0,0,255,128,0,20,30,90,23, + 1,0,0,124,0,1,255,0,3,15,128,6,3,128,14,3, + 192,12,1,192,12,1,192,28,1,192,28,1,192,28,3,128, + 28,7,128,28,31,0,28,120,0,28,240,0,28,224,0,28, + 224,0,28,240,0,28,124,0,28,63,0,28,31,192,28,7, + 224,28,1,224,28,0,240,28,0,112,28,128,112,28,128,112, + 28,192,96,28,224,224,60,255,192,252,63,0,16,29,58,18, + 2,0,56,0,60,0,28,0,14,0,14,0,7,0,3,128, + 1,128,0,192,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,29,58,18, + 2,0,0,56,0,120,0,112,0,224,0,192,1,192,3,128, + 3,0,6,0,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,29,58,18, + 2,0,3,128,7,128,7,192,15,224,30,224,28,112,56,56, + 48,24,96,12,0,0,0,0,3,224,31,240,56,120,112,56, + 240,56,192,56,0,56,0,120,7,248,28,56,112,56,96,56, + 224,56,224,56,224,120,241,185,127,63,60,24,16,27,54,18, + 2,0,14,4,31,12,63,152,99,240,64,224,0,0,0,0, + 0,0,0,0,3,224,31,240,56,120,112,56,240,56,192,56, + 0,56,0,120,7,248,28,56,112,56,96,56,224,56,224,56, + 224,120,241,185,127,63,60,24,16,27,54,18,2,0,48,24, + 48,24,112,56,112,56,48,24,0,0,0,0,0,0,0,0, + 3,224,31,240,56,120,112,56,240,56,192,56,0,56,0,120, + 7,248,28,56,112,56,96,56,224,56,224,56,224,120,241,185, + 127,63,60,24,16,28,56,18,2,0,3,192,7,224,12,96, + 12,96,24,96,12,96,15,192,7,128,0,0,0,0,3,224, + 31,240,56,120,112,56,240,56,192,56,0,56,0,120,7,248, + 28,56,112,56,96,56,224,56,224,56,224,120,241,185,127,63, + 60,24,24,18,54,28,2,0,3,225,240,15,243,252,56,119, + 30,112,60,14,224,60,7,240,56,7,192,56,7,1,255,255, + 15,255,254,30,56,0,120,56,0,112,56,0,224,56,0,224, + 60,2,224,92,3,241,159,14,127,15,248,60,3,224,15,27, + 54,17,2,247,1,248,7,254,28,28,56,12,48,4,112,0, + 96,0,224,0,224,0,224,0,224,0,224,0,224,0,240,0, + 112,8,120,24,63,240,31,224,15,128,2,0,2,0,3,128, + 7,192,1,192,1,128,7,0,28,0,14,29,58,18,2,0, + 28,0,60,0,30,0,14,0,7,0,3,128,1,128,0,192, + 0,64,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,29,58,18,2,0, + 0,56,0,60,0,120,0,112,0,224,0,192,1,128,1,0, + 3,0,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,29,58,18,2,0, + 1,128,3,192,7,224,7,224,14,112,28,56,24,24,48,12, + 32,4,0,0,0,0,3,192,15,240,28,120,48,56,112,28, + 96,28,224,28,255,252,255,248,224,0,224,0,224,0,240,0, + 112,4,120,12,60,56,31,240,7,192,14,27,54,18,2,0, + 24,12,56,28,56,28,56,28,48,24,0,0,0,0,0,0, + 0,0,3,192,15,240,28,120,48,56,112,28,96,28,224,28, + 255,252,255,248,224,0,224,0,224,0,240,0,112,4,120,12, + 60,56,31,240,7,192,10,29,58,11,0,0,224,0,240,0, + 120,0,56,0,28,0,12,0,14,0,6,0,3,0,0,0, + 0,0,6,0,126,0,30,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,30,0,127,192,10,29,58,11,1,0,1,192,3,192, + 3,128,7,128,7,0,14,0,12,0,24,0,16,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,13,29,58,11,255,0,7,0,7,128, + 15,128,31,192,29,192,56,224,112,112,96,48,192,24,0,0, + 0,0,3,0,63,0,15,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,15,0,63,224,12,27,54,11,0,0,192,96,224,112, + 224,112,192,96,192,96,0,0,0,0,0,0,0,0,6,0, + 126,0,30,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,30,0, + 127,192,16,28,56,20,2,0,6,0,63,6,7,159,1,248, + 3,224,15,112,28,56,0,28,0,28,0,14,3,206,15,254, + 28,127,48,31,112,15,96,15,224,7,224,7,224,7,224,7, + 224,6,224,6,240,14,112,12,120,28,60,56,31,240,7,192, + 21,27,81,22,1,0,1,192,128,7,225,0,7,243,0,12, + 126,0,8,28,0,0,0,0,0,0,0,0,0,0,0,0, + 0,12,15,0,252,63,128,60,99,192,29,129,192,29,1,192, + 30,1,192,30,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,62,3,192,255,143,248,16,29,58,20,2,0,28,0,30, + 0,14,0,7,0,3,128,3,128,1,192,0,192,0,96,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,29,58,20,2,0,0,28,0, + 60,0,56,0,112,0,112,0,224,0,192,1,128,3,0,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,29,58,20,2,0,1,192,3, + 192,3,224,7,240,7,112,14,56,28,28,24,12,48,6,0, + 0,0,0,3,224,15,248,28,60,48,30,112,14,96,15,224, + 7,224,7,224,7,224,7,224,7,224,7,240,6,112,14,120, + 12,62,56,31,240,7,192,16,27,54,20,2,0,7,2,15, + 134,31,204,49,248,32,112,0,0,0,0,0,0,0,0,3, + 224,15,248,28,60,48,30,112,14,96,15,224,7,224,7,224, + 7,224,7,224,7,224,7,240,6,112,14,120,12,62,56,31, + 240,7,192,16,27,54,20,2,0,24,12,24,12,28,14,24, + 12,24,12,0,0,0,0,0,0,0,0,3,224,15,248,28, + 60,48,30,112,14,96,15,224,7,224,7,224,7,224,7,224, + 7,224,7,240,6,112,14,120,12,62,56,31,240,7,192,14, + 14,28,16,1,4,1,128,3,128,3,128,3,0,0,0,0, + 0,127,252,255,252,0,0,0,0,1,128,3,128,3,128,3, + 0,16,20,40,20,2,255,0,1,3,227,15,254,28,60,48, + 30,112,30,96,63,224,103,224,199,224,135,225,135,227,7,230, + 7,252,6,120,14,120,12,60,56,127,240,199,192,128,0,21, + 29,87,21,0,0,7,0,0,7,128,0,3,192,0,1,192, + 0,0,224,0,0,96,0,0,48,0,0,48,0,0,24,0, + 0,0,0,0,0,0,12,0,192,252,15,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,28,1,192,28,3,192, + 28,7,192,30,29,200,15,241,240,7,192,192,21,29,87,21, + 0,0,0,7,0,0,15,128,0,14,0,0,30,0,0,28, + 0,0,56,0,0,48,0,0,96,0,0,64,0,0,0,0, + 0,0,0,12,0,192,252,15,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,28,3,192,28,7,192, + 30,29,200,15,241,240,7,192,192,21,29,87,21,0,0,0, + 112,0,0,120,0,0,248,0,1,252,0,1,222,0,3,142, + 0,7,7,0,6,3,0,12,1,128,0,0,0,0,0,0, + 12,0,192,252,15,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,3,192,28,7,192,30,29,200, + 15,241,240,7,192,192,21,27,81,21,0,0,6,3,0,7, + 3,128,7,3,128,6,3,0,6,3,0,0,0,0,0,0, + 0,0,0,0,0,0,0,12,0,192,252,15,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,3, + 192,28,7,192,30,29,200,15,241,240,7,192,192,20,38,114, + 20,255,247,0,3,128,0,7,128,0,7,0,0,14,0,0, + 12,0,0,28,0,0,56,0,0,48,0,0,96,0,0,0, + 0,0,0,0,127,131,240,30,0,224,14,0,192,14,0,192, + 7,1,128,7,1,128,7,3,0,3,131,0,3,131,0,1, + 198,0,1,198,0,1,198,0,0,236,0,0,236,0,0,120, + 0,0,120,0,0,120,0,0,48,0,0,48,0,0,96,0, + 0,96,0,0,224,0,1,192,0,67,128,0,127,0,0,254, + 0,0,124,0,0,18,39,117,21,1,247,12,0,0,252,0, + 0,60,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 60,0,28,255,0,29,143,0,31,7,128,30,3,128,28,3, + 192,28,1,192,28,1,192,28,1,192,28,1,192,28,1,192, + 28,1,128,28,1,128,28,3,128,30,3,0,31,134,0,31, + 252,0,28,240,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,62,0,0,255,128,0, + 20,36,108,20,255,247,3,1,128,3,1,128,7,3,128,7, + 3,128,3,1,128,0,0,0,0,0,0,0,0,0,0,0, + 0,127,131,240,30,0,224,14,0,192,14,0,192,7,1,128, + 7,1,128,7,3,0,3,131,0,3,131,0,1,198,0,1, + 198,0,1,198,0,0,236,0,0,236,0,0,120,0,0,120, + 0,0,120,0,0,48,0,0,48,0,0,96,0,0,96,0, + 0,224,0,1,192,0,67,128,0,127,0,0,254,0,0,124, + 0,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=38 x= 3 y=14 dx=19 dy= 0 ascent=31 len=114 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25n[810] U8G_SECTION(".progmem.u8g_font_gdr25n") = { + 0,59,57,236,242,24,0,0,0,0,42,57,0,31,249,24, + 0,16,16,32,18,1,14,1,128,1,128,1,128,97,132,113, + 142,121,159,31,248,7,192,3,192,31,248,121,158,241,142,33, + 134,1,128,1,128,1,128,15,14,28,16,1,4,3,128,3, + 128,3,128,3,128,3,128,3,128,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,6,10,10,9,2,250,60, + 252,60,28,28,24,24,48,32,64,11,2,4,13,1,9,127, + 224,255,224,5,5,5,9,2,255,112,248,248,248,112,17,38, + 114,19,1,249,0,1,128,0,7,0,0,7,0,0,7,0, + 0,14,0,0,14,0,0,14,0,0,28,0,0,28,0,0, + 56,0,0,56,0,0,56,0,0,112,0,0,112,0,0,112, + 0,0,224,0,0,224,0,1,192,0,1,192,0,1,192,0, + 3,128,0,3,128,0,3,128,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,28,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,192,0,0,17,24,72,19,1,0,3,224,0,15, + 248,0,28,60,0,56,30,0,48,14,0,112,7,0,96,7, + 0,96,7,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,3,0,112, + 7,0,112,7,0,120,6,0,60,14,0,30,28,0,15,248, + 0,7,224,0,14,24,48,19,3,0,1,128,7,128,63,128, + 255,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,15,224,127,252,14,24,48,19,2,0, + 3,224,15,248,24,120,48,60,112,28,96,28,224,28,0,28, + 0,24,0,56,0,48,0,112,0,224,1,192,1,128,3,128, + 7,0,14,0,28,0,24,4,48,4,112,12,255,252,255,252, + 15,24,48,19,1,0,3,224,15,248,28,120,56,60,112,28, + 112,28,0,28,0,24,0,48,0,96,3,224,3,248,0,60, + 0,28,0,14,0,14,0,14,0,14,0,14,0,28,64,28, + 240,120,63,240,15,192,16,24,48,19,1,0,0,24,0,120, + 0,120,0,248,1,248,1,184,3,56,7,56,6,56,12,56, + 28,56,24,56,48,56,112,56,96,56,255,255,255,254,0,56, + 0,56,0,56,0,56,0,56,0,124,3,255,15,24,48,19, + 1,0,0,4,31,252,31,248,24,0,24,0,24,0,48,0, + 48,0,48,0,63,224,63,248,48,124,64,28,0,30,0,14, + 0,14,0,14,0,14,0,14,0,28,64,28,240,120,63,240, + 15,192,15,24,48,19,2,0,0,56,0,240,3,192,7,0, + 14,0,28,0,56,0,112,0,112,0,99,224,239,248,248,60, + 240,28,224,30,224,14,224,14,224,14,224,14,112,14,112,12, + 56,28,60,56,31,240,7,192,15,23,46,19,2,0,127,254, + 255,254,192,12,192,12,128,28,0,24,0,56,0,48,0,112, + 0,96,0,96,0,224,0,192,1,192,1,128,3,128,3,0, + 7,0,7,0,14,0,14,0,28,0,56,0,15,24,48,19, + 2,0,15,192,63,240,120,120,112,60,240,28,224,28,224,28, + 240,24,120,48,62,96,31,192,7,240,24,120,48,60,112,30, + 96,14,224,14,224,14,224,14,224,12,112,28,124,56,63,240, + 15,192,15,25,50,19,2,255,7,192,15,240,56,120,48,60, + 112,28,96,28,224,14,224,14,224,14,224,14,240,14,112,30, + 120,62,63,238,15,140,0,28,0,28,0,24,0,56,0,112, + 0,224,1,192,7,128,30,0,48,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--40-400-72-72-P-182-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=33 h=41 x= 3 y=20 dx=34 dy= 0 ascent=33 len=132 + Font Bounding box w=59 h=57 x=-20 y=-14 + Calculated Min Values x=-4 y=-9 dx= 0 dy= 0 + Pure Font ascent =25 descent=-9 + X Font ascent =31 descent=-9 + Max Font ascent =33 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr25r[6239] U8G_SECTION(".progmem.u8g_font_gdr25r") = { + 0,59,57,236,242,25,6,209,16,163,32,127,247,33,247,31, + 247,0,0,0,9,0,0,5,30,30,11,3,255,48,112,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 96,96,96,0,0,0,112,248,248,248,112,11,13,26,17,3, + 16,112,224,241,224,241,224,241,224,241,224,112,224,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,17,23,69,19,2, + 2,0,194,0,1,134,0,1,134,0,1,142,0,3,140,0, + 3,12,0,3,12,0,63,255,128,63,255,128,6,24,0,6, + 56,0,14,48,0,12,48,0,12,48,0,255,254,0,255,254, + 0,24,96,0,24,224,0,48,192,0,48,192,0,48,192,0, + 113,192,0,97,128,0,16,30,60,19,1,253,1,128,1,128, + 1,128,3,224,15,252,57,254,49,156,113,136,113,128,113,128, + 121,128,61,128,63,128,31,224,7,248,1,252,1,190,1,143, + 1,143,1,135,193,135,193,135,225,142,241,142,255,252,63,240, + 15,192,1,128,1,128,1,128,25,25,100,27,1,255,15,128, + 6,0,63,192,28,0,113,224,56,0,112,224,56,0,224,112, + 112,0,224,112,224,0,224,112,224,0,224,113,192,0,224,115, + 128,0,112,231,0,0,120,231,0,0,63,206,60,0,31,28, + 254,0,0,29,207,0,0,57,199,0,0,115,131,128,0,227, + 131,128,0,227,131,128,1,195,131,128,3,131,131,128,3,131, + 131,128,7,1,199,0,14,1,199,0,28,0,254,0,24,0, + 120,0,24,28,84,27,2,0,0,248,0,1,252,0,3,30, + 0,7,14,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,7,112,0,7,192,0,7,131,255,15, + 135,255,29,193,242,57,224,240,112,240,112,112,112,112,224,120, + 112,224,60,112,224,30,224,224,15,224,224,7,192,240,3,192, + 120,3,240,60,30,248,31,252,127,7,224,56,4,13,13,10, + 3,16,112,240,240,240,240,112,96,96,96,96,96,96,96,9, + 37,74,13,3,250,0,128,3,128,7,0,14,0,12,0,28, + 0,24,0,56,0,56,0,112,0,112,0,112,0,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,112,0,112,0,112,0,112,0,56, + 0,56,0,28,0,28,0,14,0,7,0,3,128,0,128,9, + 37,74,13,1,250,128,0,224,0,112,0,56,0,28,0,28, + 0,14,0,14,0,14,0,7,0,7,0,7,0,7,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,7,0,7,0,7,0,7,0,14,0,14, + 0,12,0,28,0,24,0,56,0,112,0,224,0,128,0,16, + 16,32,18,1,14,1,128,1,128,1,128,97,132,113,142,121, + 159,31,248,7,192,3,192,31,248,121,158,241,142,33,134,1, + 128,1,128,1,128,15,14,28,16,1,4,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,10,10,9,2,250,60,252,60, + 28,28,24,24,48,32,64,11,2,4,13,1,9,127,224,255, + 224,5,5,5,9,2,255,112,248,248,248,112,17,38,114,19, + 1,249,0,1,128,0,7,0,0,7,0,0,7,0,0,14, + 0,0,14,0,0,14,0,0,28,0,0,28,0,0,56,0, + 0,56,0,0,56,0,0,112,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,192,0,1,192,0,1,192,0,3,128, + 0,3,128,0,3,128,0,7,0,0,7,0,0,14,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,28,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,112,0,0,224,0, + 0,192,0,0,17,24,72,19,1,0,3,224,0,15,248,0, + 28,60,0,56,30,0,48,14,0,112,7,0,96,7,0,96, + 7,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,3,0,112,7,0, + 112,7,0,120,6,0,60,14,0,30,28,0,15,248,0,7, + 224,0,14,24,48,19,3,0,1,128,7,128,63,128,255,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,15,224,127,252,14,24,48,19,2,0,3,224, + 15,248,24,120,48,60,112,28,96,28,224,28,0,28,0,24, + 0,56,0,48,0,112,0,224,1,192,1,128,3,128,7,0, + 14,0,28,0,24,4,48,4,112,12,255,252,255,252,15,24, + 48,19,1,0,3,224,15,248,28,120,56,60,112,28,112,28, + 0,28,0,24,0,48,0,96,3,224,3,248,0,60,0,28, + 0,14,0,14,0,14,0,14,0,14,0,28,64,28,240,120, + 63,240,15,192,16,24,48,19,1,0,0,24,0,120,0,120, + 0,248,1,248,1,184,3,56,7,56,6,56,12,56,28,56, + 24,56,48,56,112,56,96,56,255,255,255,254,0,56,0,56, + 0,56,0,56,0,56,0,124,3,255,15,24,48,19,1,0, + 0,4,31,252,31,248,24,0,24,0,24,0,48,0,48,0, + 48,0,63,224,63,248,48,124,64,28,0,30,0,14,0,14, + 0,14,0,14,0,14,0,28,64,28,240,120,63,240,15,192, + 15,24,48,19,2,0,0,56,0,240,3,192,7,0,14,0, + 28,0,56,0,112,0,112,0,99,224,239,248,248,60,240,28, + 224,30,224,14,224,14,224,14,224,14,112,14,112,12,56,28, + 60,56,31,240,7,192,15,23,46,19,2,0,127,254,255,254, + 192,12,192,12,128,28,0,24,0,56,0,48,0,112,0,96, + 0,96,0,224,0,192,1,192,1,128,3,128,3,0,7,0, + 7,0,14,0,14,0,28,0,56,0,15,24,48,19,2,0, + 15,192,63,240,120,120,112,60,240,28,224,28,224,28,240,24, + 120,48,62,96,31,192,7,240,24,120,48,60,112,30,96,14, + 224,14,224,14,224,14,224,12,112,28,124,56,63,240,15,192, + 15,25,50,19,2,255,7,192,15,240,56,120,48,60,112,28, + 96,28,224,14,224,14,224,14,224,14,240,14,112,30,120,62, + 63,238,15,140,0,28,0,28,0,24,0,56,0,112,0,224, + 1,192,7,128,30,0,48,0,5,19,19,9,2,255,120,248, + 248,248,96,0,0,0,0,0,0,0,0,0,112,248,248,248, + 112,6,24,24,9,2,250,120,248,248,248,96,0,0,0,0, + 0,0,0,0,0,60,252,60,28,28,24,24,48,32,64,15, + 13,26,18,1,5,0,2,0,30,0,254,3,240,31,192,126, + 0,240,0,252,0,63,128,7,224,1,252,0,62,0,12,15, + 8,16,18,1,7,127,254,255,254,0,0,0,0,0,0,0, + 0,127,254,255,254,15,13,26,18,1,5,96,0,252,0,63, + 0,15,224,1,252,0,126,0,30,0,126,3,240,31,192,126, + 0,248,0,192,0,14,30,60,17,2,255,7,224,31,240,56, + 120,112,56,224,28,224,28,224,28,192,28,0,28,0,56,0, + 56,0,112,0,240,0,224,1,192,3,128,3,128,7,0,7, + 0,7,0,7,0,7,0,0,0,0,0,0,0,7,0,15, + 128,15,128,15,128,7,0,30,33,132,32,1,249,0,7,248, + 0,0,63,254,0,0,240,31,128,1,192,7,192,3,0,1, + 224,6,0,0,240,12,0,0,112,24,0,0,120,56,3,198, + 56,48,15,252,56,112,28,60,60,112,56,28,28,96,112,28, + 28,224,96,28,28,224,224,28,28,224,224,28,28,224,224,28, + 28,224,224,28,28,224,224,28,28,224,224,28,24,240,240,28, + 56,112,112,28,48,112,120,60,96,120,60,94,224,56,31,143, + 128,60,15,15,0,30,0,0,0,31,0,0,0,15,128,0, + 32,7,192,0,192,1,248,15,128,0,255,254,0,0,31,240, + 0,23,25,75,24,0,0,0,8,0,0,56,0,0,60,0, + 0,60,0,0,108,0,0,110,0,0,110,0,0,198,0,0, + 199,0,0,199,0,1,131,0,1,131,128,1,131,128,3,1, + 128,3,255,192,3,255,192,6,0,224,6,0,224,6,0,224, + 12,0,112,12,0,112,12,0,112,24,0,56,28,0,120,255, + 1,254,19,25,75,22,1,0,31,240,0,255,254,0,28,31, + 0,28,7,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,0,28,6,0,28,28,0,31,254,0,31,255,0,28, + 15,128,28,3,192,28,1,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,1,224,28,1,192,28,7,128,63,255,0, + 255,252,0,19,25,75,21,1,0,0,254,0,3,255,192,7, + 7,192,12,1,128,24,0,0,56,0,0,112,0,0,112,0, + 0,112,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,112,0,0,112, + 0,0,120,0,0,60,0,64,30,1,224,15,135,128,7,254, + 0,1,248,0,21,25,75,24,1,0,31,248,0,255,255,0, + 28,15,128,28,3,192,28,1,224,28,0,240,28,0,112,28, + 0,112,28,0,120,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,112,28,0,112, + 28,0,112,28,0,224,28,1,224,28,3,192,28,15,128,63, + 254,0,255,248,0,18,25,75,20,1,0,255,255,0,63,255, + 0,28,3,0,28,1,0,28,1,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,31,252,0,31,252,0,28, + 8,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,64,28,0,192,28,1,128, + 63,255,128,255,255,128,17,25,75,19,1,0,255,255,128,63, + 255,128,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,31,252,0,31,248,0, + 28,24,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,62,0,0,255,128,0,21,25,75,23,1,0,0,127,0, + 1,255,192,7,3,224,14,0,192,28,0,0,56,0,0,48, + 0,0,112,0,0,112,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,15,248,224,1,224,224,0,224,224,0,224, + 112,0,224,112,0,224,120,0,224,60,0,224,30,0,224,15, + 129,192,7,255,128,1,252,0,24,25,75,26,1,0,255,129, + 255,62,0,124,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,31, + 255,248,31,255,248,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,62,0,124,255,129,255,9,25,50,12,1,0,255, + 128,62,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,62,0,255, + 128,15,32,64,12,252,249,7,254,0,248,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,96,0,96,0,224,0, + 192,49,128,127,0,252,0,22,25,75,23,1,0,255,135,248, + 62,1,192,28,3,128,28,7,0,28,14,0,28,12,0,28, + 24,0,28,56,0,28,112,0,28,224,0,29,192,0,31,128, + 0,31,192,0,29,224,0,28,224,0,28,112,0,28,56,0, + 28,60,0,28,30,0,28,15,0,28,7,128,28,3,192,28, + 3,224,62,1,252,255,128,240,18,25,75,19,1,0,255,128, + 0,62,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,192,28,0,128, + 30,1,128,63,255,128,255,255,128,30,25,100,32,1,0,254, + 0,1,248,30,0,3,224,31,0,3,224,31,0,3,224,31, + 0,7,224,27,128,6,224,27,128,14,224,25,192,12,224,25, + 192,12,224,24,224,28,224,24,224,24,224,24,224,56,224,24, + 112,48,224,24,112,112,224,24,56,96,224,24,56,96,224,24, + 28,224,224,24,28,192,224,24,31,192,224,24,15,128,224,24, + 15,128,224,24,7,128,224,24,7,0,224,60,7,1,224,255, + 2,7,252,24,25,75,26,1,0,248,1,255,60,0,124,30, + 0,56,30,0,56,31,0,56,31,128,56,29,128,56,29,192, + 56,28,224,56,28,96,56,28,112,56,28,56,56,28,28,56, + 28,28,56,28,14,56,28,7,56,28,7,56,28,3,184,28, + 3,248,28,1,248,28,0,248,28,0,248,28,0,120,62,0, + 56,255,128,24,21,25,75,24,1,0,0,252,0,3,255,0, + 7,7,128,12,3,192,24,1,224,56,0,224,112,0,112,112, + 0,112,96,0,120,224,0,56,224,0,56,224,0,56,224,0, + 56,224,0,56,224,0,56,224,0,56,240,0,48,112,0,112, + 112,0,96,120,0,224,60,0,192,30,1,128,15,7,0,7, + 254,0,1,248,0,18,25,75,21,1,0,31,248,0,255,254, + 0,28,31,0,28,7,128,28,3,192,28,1,192,28,1,192, + 28,1,192,28,1,192,28,1,192,28,3,128,28,7,128,28, + 15,0,29,254,0,28,248,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 62,0,0,255,128,0,24,31,93,24,1,250,0,252,0,3, + 255,0,7,7,128,12,3,192,24,1,224,56,0,224,112,0, + 112,112,0,112,96,0,120,224,0,56,224,0,56,224,0,56, + 224,0,56,224,0,56,224,0,56,224,0,56,240,0,48,112, + 0,112,112,0,112,56,0,224,60,0,192,30,1,192,15,7, + 128,7,254,0,1,252,0,0,14,0,0,7,0,0,3,130, + 0,1,227,0,0,254,0,0,60,21,25,75,22,1,0,31, + 240,0,255,254,0,28,31,0,28,7,0,28,7,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,7,0,28,6,0, + 28,28,0,31,240,0,28,112,0,28,56,0,28,56,0,28, + 28,0,28,30,0,28,14,0,28,7,0,28,7,128,28,3, + 128,28,3,192,62,1,248,255,129,240,15,25,50,19,2,0, + 7,224,31,248,120,124,112,24,224,0,224,0,224,0,240,0, + 248,0,126,0,63,128,31,224,7,248,1,252,0,124,0,30, + 0,30,0,14,128,14,128,14,192,28,224,28,240,120,255,240, + 31,128,21,25,75,22,0,0,127,255,248,255,255,248,192,112, + 24,192,112,24,128,112,16,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,248,0, + 3,254,0,24,25,75,26,1,0,255,129,255,62,0,124,28, + 0,56,28,0,56,28,0,56,28,0,56,28,0,56,28,0, + 56,28,0,56,28,0,56,28,0,56,28,0,56,28,0,56, + 28,0,56,28,0,56,28,0,56,28,0,56,28,0,56,28, + 0,112,14,0,112,14,0,112,15,0,224,7,193,192,3,255, + 128,0,126,0,25,25,100,26,0,0,255,128,127,128,28,0, + 14,0,30,0,12,0,14,0,28,0,14,0,24,0,15,0, + 24,0,7,0,56,0,7,0,48,0,3,128,48,0,3,128, + 112,0,3,192,96,0,1,192,224,0,1,192,224,0,1,224, + 192,0,0,225,192,0,0,225,128,0,0,113,128,0,0,115, + 128,0,0,123,0,0,0,59,0,0,0,63,0,0,0,62, + 0,0,0,30,0,0,0,30,0,0,0,8,0,0,33,25, + 125,34,0,0,255,128,192,127,128,28,0,192,14,0,28,0, + 192,12,0,28,1,224,12,0,14,1,224,28,0,14,1,224, + 28,0,14,3,240,24,0,14,3,112,24,0,7,3,48,24, + 0,7,7,56,56,0,7,6,56,56,0,7,6,24,48,0, + 7,14,28,48,0,3,140,28,48,0,3,140,14,112,0,3, + 156,14,96,0,3,152,14,96,0,1,216,7,96,0,1,248, + 7,96,0,1,240,7,224,0,1,240,3,192,0,1,240,3, + 192,0,0,224,3,192,0,0,224,1,192,0,0,192,1,128, + 0,23,25,75,25,1,0,255,135,252,60,0,240,28,0,224, + 30,1,192,15,1,128,7,3,128,7,135,0,3,198,0,1, + 238,0,0,252,0,0,252,0,0,120,0,0,120,0,0,124, + 0,0,254,0,1,206,0,1,207,0,3,135,128,3,3,128, + 7,3,192,14,1,224,12,0,224,28,0,240,60,0,248,255, + 3,254,23,25,75,24,0,0,248,1,254,60,0,120,30,0, + 96,14,0,224,7,0,192,7,129,192,3,129,128,3,195,128, + 1,195,0,0,231,0,0,238,0,0,126,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,124,0, + 1,255,0,18,25,75,21,1,0,63,255,192,63,255,192,48, + 3,128,32,7,128,96,15,0,96,14,0,0,30,0,0,28, + 0,0,56,0,0,120,0,0,112,0,0,240,0,1,224,0, + 1,192,0,3,192,0,3,128,0,7,0,0,15,0,0,14, + 0,0,30,0,64,60,0,64,56,0,192,120,0,192,127,255, + 192,255,255,192,9,37,74,12,3,250,255,128,255,128,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,128,255,128,17,38,114,19,1,249,192,0,0,224,0,0, + 112,0,0,112,0,0,48,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,14,0,0,14,0,0,6,0, + 0,7,0,0,7,0,0,3,0,0,3,128,0,3,128,0, + 1,192,0,1,192,0,0,192,0,0,224,0,0,224,0,0, + 96,0,0,112,0,0,112,0,0,56,0,0,56,0,0,24, + 0,0,28,0,0,28,0,0,12,0,0,14,0,0,14,0, + 0,7,0,0,7,0,0,3,0,0,1,128,9,37,74,13, + 1,250,255,128,255,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,255,128,255,128,16,19,38,20, + 2,11,0,128,3,128,3,192,3,192,7,224,6,224,14,224, + 12,112,12,112,28,120,24,56,24,56,48,28,48,28,112,28, + 96,14,96,14,224,7,128,6,17,2,6,19,1,251,127,255, + 128,255,255,0,8,9,9,13,1,20,224,240,112,56,56,28, + 14,6,3,16,18,36,18,2,0,3,224,31,240,56,120,112, + 56,240,56,192,56,0,56,0,120,7,248,28,56,112,56,96, + 56,224,56,224,56,224,120,241,185,127,63,60,24,18,30,90, + 20,0,0,12,0,0,124,0,0,188,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,60,0,28,255,0,29,143,0, + 31,7,128,30,3,128,28,3,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,128,28,1,128,28,3, + 128,30,3,0,31,134,0,7,252,0,1,240,0,15,18,36, + 17,2,0,1,248,7,254,28,28,56,12,112,4,112,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,0,112,4,120, + 6,62,28,31,248,7,224,19,30,90,21,2,0,0,3,0, + 0,63,0,0,15,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,7,0,0,7,0,0,7,0,0,7, + 0,3,247,0,15,255,0,28,31,0,56,15,0,48,7,0, + 112,7,0,96,7,0,224,7,0,224,7,0,224,7,0,224, + 7,0,224,7,0,240,7,0,112,15,0,120,31,0,60,55, + 224,31,231,192,7,131,0,14,18,36,18,2,0,3,192,15, + 240,28,120,48,56,112,28,96,28,224,28,255,252,255,248,224, + 0,224,0,224,0,240,0,112,4,120,12,60,56,31,240,7, + 192,15,30,60,12,1,0,0,120,1,254,3,28,6,8,14, + 0,12,0,12,0,28,0,28,0,28,0,28,0,28,0,127, + 240,255,224,28,64,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,62, + 0,255,192,18,27,81,19,1,247,3,224,192,15,255,192,28, + 63,0,56,28,0,112,14,0,112,14,0,112,14,0,112,14, + 0,120,28,0,60,56,0,31,240,0,7,192,0,6,0,0, + 12,0,0,28,0,0,31,224,0,15,254,0,12,63,128,24, + 3,192,112,1,192,224,1,192,224,1,192,224,3,128,240,3, + 128,124,15,0,63,252,0,7,240,0,21,30,90,22,1,0, + 12,0,0,252,0,0,124,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,31,0,28,63,128,28,227,192,29,129,192, + 31,1,192,30,1,192,30,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,62,3,192,255,143,248,9,27,54,11,1,0, + 28,0,60,0,60,0,60,0,24,0,0,0,0,0,0,0, + 0,0,12,0,252,0,60,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,11,36,72,10,252,247,0,224,1,224, + 1,224,1,224,0,192,0,0,0,0,0,0,0,0,0,96, + 7,224,1,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,192,0,192,1,192,1,128,35,0, + 254,0,248,0,19,30,90,20,1,0,12,0,0,252,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,31, + 224,28,7,0,28,14,0,28,28,0,28,48,0,28,224,0, + 29,192,0,31,128,0,29,192,0,29,224,0,28,240,0,28, + 120,0,28,56,0,28,28,0,28,30,0,28,15,0,60,7, + 128,255,3,224,9,30,60,11,1,0,12,0,252,0,124,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,60,0,255,128,31,18,72,32,1,0,12,30,3,192, + 252,127,15,224,60,199,152,240,29,131,176,112,31,3,224,112, + 30,3,192,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,28,3,128,112, + 28,3,128,112,28,3,128,112,28,3,128,112,60,7,192,240, + 255,159,243,254,21,18,54,22,1,0,12,15,0,252,63,128, + 60,99,192,29,129,192,29,1,192,30,1,192,30,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,192,28,1,192,28,1,192,62,3,192,255,143,248, + 16,18,36,20,2,0,3,224,15,248,28,60,48,30,112,14, + 96,15,224,7,224,7,224,7,224,7,224,7,224,7,240,6, + 112,14,120,12,62,56,31,240,7,192,18,27,81,21,1,247, + 12,28,0,252,127,0,60,143,128,29,7,128,30,3,128,30, + 3,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,1,128,28,1,128,28,3,128,30,3,0,31,6,0, + 29,252,0,28,120,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,62,0,0,255,128, + 0,19,27,81,21,2,247,1,241,128,7,251,0,28,31,0, + 56,15,0,48,7,0,112,7,0,96,7,0,224,7,0,224, + 7,0,224,7,0,224,7,0,224,7,0,240,7,0,112,15, + 0,120,31,0,60,55,0,31,231,0,7,135,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,7,0,0,7,0,0, + 7,0,0,7,0,0,63,224,14,18,36,16,1,0,12,60, + 252,252,61,140,29,12,31,4,30,0,30,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,0, + 255,128,11,18,36,15,2,0,31,0,127,128,115,192,225,128, + 224,128,240,0,248,0,126,0,31,0,15,192,3,224,1,224, + 128,224,128,224,192,224,225,192,255,128,62,0,13,25,50,14, + 0,0,4,0,12,0,28,0,28,0,28,0,28,0,28,0, + 127,248,255,240,28,32,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,30,56, + 15,240,7,128,21,18,54,21,0,0,12,0,192,252,15,192, + 28,1,192,28,1,192,28,1,192,28,1,192,28,1,192,28, + 1,192,28,1,192,28,1,192,28,1,192,28,1,192,28,1, + 192,28,3,192,28,7,192,30,29,200,15,241,240,7,192,192, + 19,18,54,20,0,0,255,7,224,60,1,192,28,1,128,28, + 3,128,14,3,0,14,3,0,14,6,0,7,6,0,7,6, + 0,3,140,0,3,140,0,3,156,0,1,216,0,1,216,0, + 0,240,0,0,240,0,0,240,0,0,64,0,28,18,72,28, + 0,0,255,3,7,240,60,7,0,192,28,7,0,192,28,7, + 129,128,28,15,129,128,14,15,129,128,14,13,195,128,14,25, + 195,0,6,25,195,0,7,24,227,0,7,48,230,0,3,48, + 118,0,3,176,118,0,3,224,124,0,1,224,60,0,1,224, + 60,0,1,192,60,0,1,128,16,0,20,18,54,20,0,0, + 127,143,224,30,3,128,14,3,0,7,6,0,7,140,0,3, + 156,0,1,216,0,0,240,0,0,240,0,0,240,0,1,184, + 0,1,156,0,3,30,0,6,14,0,14,7,0,12,3,128, + 60,3,192,255,15,240,20,27,81,20,255,247,127,131,240,30, + 0,224,14,0,192,14,0,192,7,1,128,7,1,128,7,3, + 0,3,131,0,3,131,0,1,198,0,1,198,0,1,198,0, + 0,236,0,0,236,0,0,120,0,0,120,0,0,120,0,0, + 48,0,0,48,0,0,96,0,0,96,0,0,224,0,1,192, + 0,67,128,0,127,0,0,254,0,0,124,0,0,15,18,36, + 18,1,0,63,254,63,254,96,28,96,56,64,56,0,112,0, + 224,1,192,1,192,3,128,7,0,7,0,14,0,28,2,56, + 2,56,6,127,254,255,254,11,37,74,14,2,250,0,64,1, + 224,3,128,7,0,6,0,14,0,14,0,14,0,14,0,14, + 0,15,0,7,0,7,0,7,0,7,0,7,0,14,0,28, + 0,124,0,254,0,15,0,7,0,7,0,7,0,7,0,7, + 0,15,0,14,0,14,0,14,0,14,0,14,0,14,0,7, + 0,3,0,1,192,0,64,3,41,41,9,3,248,96,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,192,11,37,74,14,1,250,64,0,112,0, + 56,0,28,0,12,0,14,0,14,0,14,0,14,0,14,0, + 30,0,28,0,28,0,28,0,28,0,28,0,14,0,15,192, + 3,224,7,0,14,0,12,0,28,0,28,0,28,0,28,0, + 30,0,14,0,14,0,14,0,14,0,14,0,12,0,28,0, + 56,0,112,0,192,0,18,6,18,20,1,9,15,0,192,31, + 192,128,63,225,0,99,255,0,192,254,0,128,56,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=40 h=49 x= 5 y=28 dx=41 dy= 0 ascent=42 len=195 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x=-5 y=-13 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =42 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30[18369] U8G_SECTION(".progmem.u8g_font_gdr30") = { + 0,71,68,232,239,30,9,231,23,124,32,255,245,42,243,38, + 245,0,0,0,11,0,0,6,36,36,13,3,255,12,60,124, + 124,124,124,124,120,120,120,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,0,0,0,0,56,124,252,252,248, + 112,13,16,32,20,4,19,48,56,240,248,240,248,240,240,240, + 240,240,240,240,112,240,112,240,112,240,112,112,112,112,112,96, + 112,96,112,96,112,96,112,21,27,81,23,2,3,0,48,96, + 0,112,224,0,96,192,0,224,192,0,225,192,0,225,192,0, + 193,128,1,195,128,31,255,248,31,255,248,3,135,0,3,135, + 0,3,7,0,3,6,0,7,14,0,7,14,0,6,14,0, + 255,255,192,255,255,192,12,28,0,12,24,0,28,56,0,28, + 56,0,24,48,0,56,112,0,56,112,0,48,96,0,20,36, + 108,23,1,252,0,96,0,0,96,0,0,96,0,0,96,0, + 3,254,0,15,255,128,62,127,192,120,103,128,112,99,128,240, + 96,0,240,96,0,240,96,0,248,96,0,126,96,0,127,224, + 0,63,240,0,15,254,0,1,255,0,0,127,192,0,111,224, + 0,99,224,0,97,240,0,96,240,0,96,240,64,96,240,96, + 96,240,112,96,224,120,97,224,124,99,192,127,255,128,31,255, + 0,7,248,0,0,96,0,0,96,0,0,96,0,0,96,0, + 31,30,120,34,1,255,7,192,0,96,31,224,1,240,60,240, + 1,192,120,120,3,192,112,120,7,128,240,60,7,0,240,60, + 14,0,240,60,30,0,240,60,60,0,240,60,56,0,240,60, + 120,0,120,56,240,0,120,120,224,0,60,241,192,0,31,227, + 195,224,15,135,143,240,0,7,30,120,0,15,60,60,0,30, + 56,60,0,28,120,30,0,56,120,30,0,120,120,30,0,240, + 120,30,0,224,120,30,1,192,120,30,3,192,60,28,3,128, + 60,60,7,0,30,120,15,0,15,240,12,0,7,192,30,34, + 136,32,2,0,0,63,0,0,0,255,128,0,1,199,192,0, + 3,131,224,0,7,1,224,0,7,1,224,0,15,1,224,0, + 15,1,224,0,15,3,224,0,15,3,192,0,15,135,192,0, + 15,143,128,0,7,191,0,0,7,254,0,0,7,248,0,0, + 7,240,0,0,15,240,63,248,31,240,127,252,62,120,30,48, + 60,124,15,0,124,60,15,0,120,30,7,0,240,31,7,0, + 240,15,135,0,240,7,198,0,240,3,198,0,240,3,236,0, + 240,1,252,0,248,0,252,0,120,0,126,0,60,0,255,0, + 63,3,143,200,15,255,7,240,3,248,3,192,4,16,16,12, + 4,19,48,240,240,240,240,240,240,240,240,240,112,112,96,96, + 96,96,11,45,90,15,3,249,0,32,0,224,1,192,3,128, + 3,128,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 56,0,120,0,120,0,120,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,120,0,120,0,120,0,120,0,56,0,60,0,60,0, + 28,0,30,0,14,0,15,0,7,0,3,128,1,192,0,224, + 0,32,11,45,90,15,1,249,128,0,224,0,112,0,56,0, + 28,0,30,0,14,0,15,0,7,0,7,128,7,128,3,128, + 3,192,3,192,3,192,3,192,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,192,3,192,3,192,3,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,56,0,56,0,112,0,224,0, + 128,0,18,20,60,21,2,17,0,192,0,1,192,0,1,192, + 0,1,192,0,193,193,0,240,195,192,248,207,192,124,223,0, + 15,252,0,3,224,0,3,224,0,15,252,0,60,223,0,248, + 207,128,240,195,128,64,193,128,1,192,0,1,192,0,1,192, + 0,1,128,0,17,17,51,20,1,5,0,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,255,255,128,255,255,128,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,128,0,7,13,13, + 11,2,249,8,60,254,254,30,30,30,28,28,56,48,96,64, + 14,2,4,16,1,11,127,252,255,248,6,6,6,11,3,255, + 56,124,252,252,248,112,20,46,138,23,1,248,0,0,48,0, + 0,240,0,0,240,0,0,224,0,1,224,0,1,192,0,1, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,15,0,0,14,0,0,30,0,0,28,0,0, + 28,0,0,60,0,0,56,0,0,120,0,0,120,0,0,112, + 0,0,240,0,0,224,0,0,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0,7,128,0,7,128,0,7, + 0,0,15,0,0,14,0,0,30,0,0,30,0,0,28,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,112,0,0, + 240,0,0,192,0,0,19,29,87,23,2,0,1,248,0,7, + 252,0,14,30,0,28,15,0,24,7,128,56,7,128,56,3, + 192,112,3,192,112,3,192,112,3,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,192,120,1,192,120,3,192,120,3, + 128,60,3,128,60,3,0,30,7,0,15,14,0,7,252,0, + 3,240,0,17,29,87,23,3,0,0,96,0,1,224,0,15, + 224,0,127,224,0,255,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,3,240,0,63,254,0,127,255,128, + 17,29,87,22,2,0,1,248,0,7,254,0,28,31,0,56, + 15,0,120,15,128,112,7,128,240,7,128,224,7,128,0,7, + 128,0,7,128,0,15,0,0,15,0,0,30,0,0,30,0, + 0,60,0,0,120,0,0,240,0,0,240,0,1,224,0,3, + 192,0,7,128,0,15,0,0,15,0,0,30,0,128,60,0, + 128,120,0,128,240,1,128,255,255,128,255,255,128,18,29,87, + 22,1,0,1,248,0,7,254,0,30,31,0,60,15,0,56, + 7,128,120,7,128,112,7,128,0,7,128,0,7,0,0,15, + 0,0,30,0,0,60,0,0,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,7,128,128,7,128,224,15, + 0,120,62,0,63,252,0,7,224,0,19,29,87,23,1,0, + 0,3,0,0,15,0,0,31,0,0,63,0,0,127,0,0, + 127,0,0,239,0,0,207,0,1,207,0,3,143,0,3,143, + 0,7,15,0,14,15,0,14,15,0,28,15,0,24,15,0, + 56,15,0,112,15,0,112,15,0,255,255,224,255,255,192,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,63,128,1,255,224,18,29,87,23,2,0,0,0,128, + 0,1,128,31,255,0,31,254,0,24,0,0,24,0,0,24, + 0,0,24,0,0,56,0,0,56,0,0,56,0,0,63,240, + 0,63,252,0,120,63,0,32,15,0,0,7,128,0,7,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,128,0,7,128,128,7,128,224,15,0,120,62,0,63,252, + 0,7,240,0,18,29,87,23,3,0,0,7,0,0,63,0, + 0,248,0,1,224,0,3,192,0,15,0,0,14,0,0,30, + 0,0,60,0,0,56,0,0,120,0,0,120,248,0,119,254, + 0,254,31,0,248,15,128,240,7,128,240,7,192,240,3,192, + 240,3,192,240,3,192,240,3,192,248,3,192,120,3,128,120, + 3,128,60,7,128,60,7,0,31,14,0,15,252,0,3,240, + 0,19,27,81,23,2,0,127,255,192,127,255,224,96,1,192, + 64,3,192,192,3,128,0,3,128,0,7,0,0,7,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,56,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,224,0,0,224,0, + 1,192,0,1,192,0,3,192,0,7,128,0,7,128,0,15, + 0,0,15,0,0,28,0,0,18,29,87,22,2,0,3,248, + 0,15,254,0,28,31,0,56,15,0,48,7,128,112,7,128, + 112,7,128,112,7,128,112,7,0,120,15,0,62,30,0,31, + 188,0,15,240,0,3,252,0,7,254,0,30,63,0,60,15, + 128,120,7,192,112,7,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,128,120,7,128,124,7,0,62,14,0,31, + 252,0,7,224,0,19,30,90,23,2,255,1,248,0,7,254, + 0,14,31,0,28,15,128,56,7,128,120,3,192,112,3,192, + 240,3,224,240,1,224,240,1,224,240,1,224,240,1,224,248, + 1,224,120,3,224,124,7,224,62,13,224,31,249,224,7,225, + 192,0,3,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,30,0,0,60,0,0,120,0,0,240,0,3,224,0,31, + 128,0,56,0,0,6,23,23,11,3,255,56,124,252,252,248, + 112,0,0,0,0,0,0,0,0,0,0,0,56,124,252,252, + 248,112,7,29,29,11,2,249,28,62,126,126,124,56,0,0, + 0,0,0,0,0,0,0,0,8,60,254,254,30,30,30,28, + 28,56,48,96,64,19,15,45,21,1,6,0,0,96,0,3, + 192,0,31,192,0,127,0,3,252,0,31,224,0,127,0,0, + 124,0,0,254,0,0,63,192,0,7,240,0,1,254,0,0, + 63,192,0,7,224,0,1,128,19,9,27,21,1,9,127,255, + 224,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,127,255,224,255,255,192,19,15,45,21,1,6,48, + 0,0,252,0,0,127,128,0,15,240,0,3,254,0,0,127, + 128,0,15,224,0,3,192,0,31,192,0,255,0,3,248,0, + 31,192,0,127,0,0,120,0,0,192,0,0,17,36,108,21, + 2,255,3,248,0,15,254,0,60,63,0,120,15,0,120,15, + 128,240,7,128,240,7,128,240,7,128,224,7,128,0,7,128, + 0,15,0,0,15,0,0,30,0,0,30,0,0,60,0,0, + 120,0,0,112,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,3, + 224,0,7,224,0,7,224,0,7,192,0,3,128,0,36,39, + 195,39,1,248,0,0,255,128,0,0,7,255,224,0,0,31, + 1,248,0,0,120,0,62,0,0,224,0,31,0,1,192,0, + 15,0,7,128,0,7,128,7,0,0,3,192,14,0,0,1, + 192,28,0,124,33,224,28,1,255,96,224,56,3,135,224,224, + 56,7,3,224,224,120,14,1,224,240,112,14,1,224,112,112, + 30,1,224,112,240,28,1,224,112,240,60,1,224,112,240,60, + 1,224,112,240,60,1,224,112,240,60,1,224,112,240,60,1, + 224,112,240,60,1,224,96,248,60,1,224,224,248,62,1,224, + 192,120,30,1,224,192,120,31,3,225,128,124,15,5,225,0, + 60,15,141,242,0,62,7,248,252,0,31,1,224,112,0,31, + 0,0,0,0,15,128,0,0,0,7,192,0,1,0,3,240, + 0,3,128,1,248,0,14,0,0,127,0,252,0,0,31,255, + 240,0,0,3,255,0,0,28,30,120,29,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,24,30,90,27,0,0,7,254,0,255,255, + 192,111,7,224,15,1,240,15,0,248,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,112,15,0,240,15,1,224,15, + 7,192,15,255,192,15,255,240,15,1,248,15,0,124,15,0, + 62,15,0,30,15,0,31,15,0,15,15,0,15,15,0,15, + 15,0,15,15,0,14,15,0,30,15,0,60,15,0,248,63, + 255,240,127,255,128,23,30,90,26,1,0,0,31,224,0,255, + 252,1,192,252,7,128,56,14,0,16,14,0,0,28,0,0, + 56,0,0,56,0,0,120,0,0,112,0,0,112,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,30,0,4,31,0,14,15,128,56,7,224,240,1, + 255,192,0,127,0,25,30,120,28,1,0,7,254,0,0,255, + 255,192,0,111,3,240,0,15,0,248,0,15,0,124,0,15, + 0,62,0,15,0,30,0,15,0,31,0,15,0,15,0,15, + 0,15,0,15,0,15,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,0,15,0,15,0,15, + 0,15,0,15,0,30,0,15,0,30,0,15,0,60,0,15, + 0,124,0,15,0,248,0,15,3,224,0,63,255,192,0,127, + 254,0,0,21,30,90,24,1,0,255,255,224,127,255,240,30, + 0,96,30,0,96,30,0,96,30,0,96,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,128,31,255,128,30,3,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,8,30,0,24,30,0,24,31,0,56,127,255,240, + 255,255,240,20,30,90,23,1,0,255,255,240,127,255,240,30, + 0,96,30,0,96,30,0,32,30,0,32,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,0,31,255,0,30,6,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,127,128,0, + 255,224,0,24,30,90,28,2,0,0,31,224,0,255,248,1, + 192,252,7,128,56,15,0,16,30,0,0,28,0,0,56,0, + 0,56,0,0,120,0,0,112,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,7,255,240,0,254,240, + 0,60,240,0,60,248,0,60,120,0,60,120,0,60,60,0, + 60,62,0,60,30,0,60,15,0,60,7,192,248,3,255,224, + 0,127,0,27,30,120,31,2,0,255,192,127,224,127,128,63, + 192,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,31,255,255,0,31,255,255,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,127,0,31,192,255,192,127, + 224,10,30,60,14,2,0,255,192,127,128,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,127, + 128,255,192,17,38,114,15,252,248,7,255,128,0,255,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,56,0,0,56,0,0,56,0,0,112,0,0,112,0,0, + 224,0,112,192,0,255,0,0,124,0,0,26,30,120,28,1, + 0,255,193,255,128,127,128,124,0,30,0,120,0,30,0,240, + 0,30,1,224,0,30,1,192,0,30,3,128,0,30,7,0, + 0,30,14,0,0,30,28,0,0,30,56,0,0,30,120,0, + 0,30,112,0,0,30,224,0,0,31,224,0,0,30,240,0, + 0,30,120,0,0,30,124,0,0,30,62,0,0,30,30,0, + 0,30,15,0,0,30,7,128,0,30,7,192,0,30,3,224, + 0,30,1,240,0,30,0,248,0,30,0,124,0,30,0,126, + 0,127,128,63,192,255,192,31,0,21,30,90,23,1,0,255, + 192,0,127,128,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,8,30,0,24,30,0,24, + 31,0,48,127,255,240,255,255,240,36,30,150,39,1,0,127, + 0,0,15,224,31,128,0,31,128,15,128,0,31,0,15,128, + 0,63,0,15,192,0,63,0,15,192,0,55,0,15,224,0, + 119,0,14,224,0,119,0,14,240,0,231,0,14,240,0,231, + 0,14,120,0,199,0,14,120,1,199,0,14,56,1,199,0, + 14,60,3,135,0,14,28,3,135,0,14,30,7,7,0,14, + 30,7,7,0,14,15,6,7,0,14,15,14,7,0,14,7, + 14,7,0,14,7,156,7,0,14,3,156,7,0,14,3,216, + 7,0,14,3,248,7,0,14,1,248,7,0,14,1,240,7, + 0,14,0,240,7,0,14,0,224,7,0,63,0,224,31,192, + 255,192,96,127,240,27,30,120,31,2,0,252,0,63,224,124, + 0,15,128,30,0,7,0,31,0,7,0,31,0,7,0,31, + 128,7,0,31,192,7,0,29,192,7,0,28,224,7,0,28, + 240,7,0,28,120,7,0,28,56,7,0,28,60,7,0,28, + 30,7,0,28,14,7,0,28,15,7,0,28,7,135,0,28, + 7,135,0,28,3,199,0,28,1,231,0,28,1,231,0,28, + 0,247,0,28,0,127,0,28,0,127,0,28,0,63,0,28, + 0,31,0,28,0,31,0,28,0,15,0,62,0,7,0,255, + 128,3,0,25,30,120,29,2,0,0,63,0,0,0,255,224, + 0,3,193,240,0,7,0,248,0,14,0,124,0,28,0,62, + 0,60,0,30,0,56,0,31,0,120,0,15,0,120,0,15, + 0,112,0,15,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,248,0,7,0,120,0,15,0,120,0,15, + 0,124,0,14,0,60,0,28,0,62,0,28,0,31,0,56, + 0,15,128,112,0,7,193,224,0,3,255,128,0,0,254,0, + 0,22,30,90,25,1,0,7,254,0,255,255,192,111,7,224, + 15,1,240,15,0,248,15,0,124,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,120,15,0, + 120,15,0,240,15,131,224,15,127,192,15,62,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,63,192,0,127,240, + 0,28,37,148,29,2,249,0,63,0,0,0,255,224,0,3, + 193,240,0,7,0,248,0,14,0,124,0,28,0,62,0,60, + 0,30,0,56,0,31,0,120,0,15,0,120,0,15,0,112, + 0,15,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,248,0,7,0,120,0,15,0,120,0,15,0,124, + 0,14,0,60,0,30,0,62,0,28,0,31,0,56,0,15, + 128,112,0,7,193,224,0,3,255,192,0,0,127,128,0,0, + 3,192,0,0,1,224,0,0,0,248,16,0,0,124,48,0, + 0,31,224,0,0,15,224,0,0,3,128,26,30,120,27,1, + 0,7,254,0,0,255,255,192,0,111,7,224,0,15,1,240, + 0,15,0,240,0,15,0,120,0,15,0,120,0,15,0,120, + 0,15,0,120,0,15,0,120,0,15,0,112,0,15,0,240, + 0,15,1,224,0,15,3,192,0,15,255,0,0,15,254,0, + 0,15,14,0,0,15,7,0,0,15,7,128,0,15,3,128, + 0,15,3,192,0,15,1,192,0,15,1,224,0,15,0,240, + 0,15,0,240,0,15,0,120,0,15,0,124,0,15,0,62, + 0,63,192,63,192,127,224,31,0,18,30,90,23,3,0,3, + 248,0,31,254,0,60,63,0,120,14,0,112,4,0,240,0, + 0,240,0,0,240,0,0,248,0,0,252,0,0,127,0,0, + 127,192,0,63,240,0,31,248,0,7,254,0,1,255,0,0, + 127,128,0,31,128,0,15,192,0,7,192,0,3,192,0,3, + 192,0,3,192,128,3,128,192,3,128,224,7,0,240,15,0, + 252,62,0,255,248,0,15,224,0,26,30,120,26,0,0,127, + 255,255,192,127,255,255,192,96,30,1,128,192,30,1,128,192, + 30,1,128,128,30,0,128,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 127,128,0,1,255,224,0,27,30,120,31,2,0,255,192,127, + 224,127,128,63,192,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,30,0,15,0,30,0,15,0,30, + 0,7,128,60,0,7,192,120,0,3,224,240,0,1,255,224, + 0,0,63,128,0,30,30,120,31,0,0,255,224,15,252,31, + 0,1,240,15,0,0,224,15,0,1,192,7,0,1,192,7, + 128,1,192,7,128,3,128,3,192,3,128,3,192,3,128,3, + 192,7,0,1,224,7,0,1,224,6,0,0,224,14,0,0, + 240,14,0,0,240,12,0,0,120,28,0,0,120,28,0,0, + 120,56,0,0,60,56,0,0,60,56,0,0,28,112,0,0, + 30,112,0,0,30,112,0,0,15,224,0,0,15,224,0,0, + 15,224,0,0,7,192,0,0,7,192,0,0,3,128,0,0, + 3,0,0,40,30,150,41,0,0,255,224,24,3,255,63,0, + 24,0,252,14,0,28,0,48,15,0,60,0,112,15,0,60, + 0,112,15,0,62,0,112,7,0,126,0,96,7,0,127,0, + 224,7,128,127,0,224,7,128,103,0,224,7,128,231,128,224, + 3,128,231,128,192,3,192,195,129,192,3,193,195,193,192,3, + 193,195,193,192,1,193,129,193,192,1,195,129,225,128,1,227, + 129,227,128,1,227,0,227,128,1,231,0,243,128,0,231,0, + 243,128,0,246,0,115,0,0,254,0,127,0,0,254,0,63, + 0,0,124,0,63,0,0,124,0,62,0,0,124,0,30,0, + 0,124,0,30,0,0,120,0,30,0,0,48,0,8,0,28, + 30,120,30,1,0,255,224,255,224,255,224,255,224,63,0,31, + 0,31,0,30,0,15,128,28,0,7,128,56,0,3,192,120, + 0,3,224,112,0,1,224,224,0,0,241,224,0,0,249,192, + 0,0,127,128,0,0,63,128,0,0,31,0,0,0,31,0, + 0,0,31,0,0,0,63,128,0,0,63,192,0,0,115,224, + 0,0,241,224,0,0,224,240,0,1,192,248,0,3,192,120, + 0,3,128,60,0,7,0,62,0,15,0,31,0,14,0,15, + 0,62,0,15,192,255,192,127,240,255,192,127,240,28,30,120, + 29,0,0,252,0,63,240,254,0,63,240,31,0,15,128,15, + 0,7,0,15,128,14,0,7,192,14,0,3,192,28,0,3, + 224,60,0,1,224,56,0,0,240,120,0,0,248,112,0,0, + 120,224,0,0,125,224,0,0,61,192,0,0,63,192,0,0, + 31,128,0,0,31,128,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,63,192,0,0,255,240,0,22,30,90,25,1, + 0,63,255,252,63,255,252,56,0,120,48,0,248,48,1,240, + 32,1,224,32,3,224,0,3,192,0,7,128,0,15,128,0, + 15,0,0,31,0,0,30,0,0,60,0,0,124,0,0,120, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 7,128,0,15,128,0,15,0,4,31,0,12,62,0,12,60, + 0,12,124,0,28,127,255,252,255,255,252,11,45,90,15,3, + 248,255,224,255,224,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,255,224,255,224,20,46,138,23,1, + 248,224,0,0,112,0,0,112,0,0,120,0,0,56,0,0, + 56,0,0,28,0,0,28,0,0,30,0,0,14,0,0,14, + 0,0,15,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,192,0,1,192,0,1,192,0,1,224,0,0,224,0, + 0,224,0,0,240,0,0,112,0,0,112,0,0,56,0,0, + 56,0,0,60,0,0,28,0,0,28,0,0,30,0,0,14, + 0,0,14,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,224,0, + 0,224,0,0,240,0,0,112,0,0,48,11,45,90,15,1, + 248,255,224,255,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,255,224,255,224,19,23,69,24,2, + 13,0,32,0,0,112,0,0,240,0,1,240,0,1,248,0, + 1,248,0,3,188,0,3,188,0,7,60,0,7,30,0,6, + 30,0,14,14,0,14,15,0,12,15,0,28,7,128,28,7, + 128,24,3,128,56,3,192,48,3,192,112,1,224,112,1,224, + 96,0,224,192,0,192,20,2,6,23,1,251,127,255,240,255, + 255,240,9,10,20,15,1,25,240,0,248,0,120,0,60,0, + 28,0,14,0,7,0,3,0,1,128,1,128,20,22,66,22, + 2,0,1,248,0,15,254,0,28,30,0,120,15,0,112,15, + 0,240,15,0,128,15,0,0,15,0,0,15,0,0,255,0, + 7,255,0,31,143,0,62,15,0,120,15,0,248,15,0,240, + 15,0,240,15,0,240,31,0,240,63,0,120,239,32,127,143, + 240,30,7,128,22,36,108,24,0,0,6,0,0,126,0,0, + 254,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,15,128,30,63,224,30,127,240,30,227,240, + 31,192,248,31,128,248,31,0,124,30,0,124,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 56,30,0,56,30,0,112,30,0,96,31,0,224,15,193,192, + 3,255,0,0,252,0,18,22,66,21,2,0,0,127,0,3, + 255,192,7,7,192,14,1,128,28,0,128,56,0,0,120,0, + 0,112,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,248,0,0,120,0,0,120,0,0,60, + 0,64,62,1,192,31,131,128,7,254,0,1,248,0,23,36, + 108,25,2,0,0,0,224,0,15,224,0,15,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,253, + 224,3,255,224,15,15,224,28,3,224,60,1,224,56,1,224, + 120,1,224,112,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,1, + 224,124,3,224,62,5,228,31,25,254,15,240,248,7,192,224, + 18,22,66,22,2,0,0,248,0,7,254,0,14,15,0,28, + 7,128,56,7,128,56,3,192,112,3,192,112,3,192,255,255, + 192,255,255,128,240,0,0,240,0,0,240,0,0,240,0,0, + 248,0,0,120,0,0,120,0,0,124,0,192,62,1,128,31, + 7,0,15,254,0,3,248,0,19,36,108,15,0,0,0,15, + 128,0,63,224,0,99,192,1,193,128,3,128,0,3,128,0, + 7,128,0,7,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,63,254,0,255,252,0,15,8, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,31,224,0,127,248,0,24,33,99,24,0,245, + 0,252,2,3,255,126,7,7,252,14,3,224,30,1,224,28, + 1,240,60,0,240,60,0,240,60,0,240,60,0,240,62,0, + 224,31,1,192,15,131,128,7,255,0,1,252,0,3,192,0, + 7,128,0,15,128,0,15,224,0,7,255,128,3,255,240,7, + 191,252,14,0,254,60,0,31,120,0,15,240,0,15,240,0, + 15,240,0,14,248,0,28,124,0,56,63,128,240,15,255,192, + 1,254,0,23,36,108,26,2,0,6,0,0,126,0,0,254, + 0,0,62,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,7,128,28,31,224,28,49,224,28,96,240,28, + 192,240,29,128,240,31,0,240,31,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,63, + 131,248,255,199,254,10,32,64,13,2,0,28,0,30,0,62, + 0,62,0,28,0,0,0,0,0,0,0,0,0,0,0,6, + 0,126,0,254,0,62,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,63,0,255,192,14,43,86,12,251, + 245,0,56,0,60,0,124,0,124,0,56,0,0,0,0,0, + 0,0,0,0,0,0,12,0,252,1,252,0,124,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,56,0,56,0,120,0,112,0,112,48, + 224,127,128,255,0,124,0,23,36,108,24,1,0,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,7,252,30,1,240,30,1,192, + 30,3,128,30,7,0,30,14,0,30,56,0,30,112,0,30, + 224,0,31,224,0,30,240,0,30,248,0,30,120,0,30,60, + 0,30,30,0,30,15,0,30,15,128,30,7,192,30,3,224, + 30,1,224,63,0,254,255,192,124,12,36,72,13,1,0,3, + 0,63,0,127,0,31,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,31,128,255,240,36,22,110,39,2,0,12,7,192, + 124,0,254,31,224,255,0,62,49,227,143,0,30,96,247,7, + 128,30,192,254,7,128,31,128,252,7,128,31,0,248,7,128, + 31,0,248,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,30,0,240,7,128,30,0,240,7,128,30,0,240,7, + 128,127,131,252,31,192,255,199,254,63,240,23,22,66,26,2, + 0,12,7,192,254,15,224,62,49,224,30,96,240,30,192,240, + 30,128,240,31,0,240,31,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,127,131,248, + 255,199,254,20,22,66,24,2,0,0,252,0,7,255,0,14, + 15,128,28,7,192,56,3,192,56,3,224,112,1,224,112,1, + 240,240,0,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,248,0,224,120,1,224,124,1,192,60,1,192,62, + 3,128,31,7,0,15,254,0,3,240,0,21,33,99,25,2, + 245,12,7,128,254,31,192,62,35,224,30,65,240,30,129,240, + 31,0,240,31,0,248,30,0,248,30,0,120,30,0,120,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,112,30,0, + 112,30,0,224,30,0,224,31,1,192,31,195,128,30,255,0, + 30,62,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,127,0, + 0,255,224,0,22,33,99,25,2,245,0,252,48,3,255,96, + 7,15,224,30,3,224,28,1,224,56,1,224,120,1,224,112, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,120,1,224,120,1,224,124,3,224, + 62,7,224,31,29,224,15,249,224,3,225,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,240,0,31,252,17,22,66, + 19,1,0,4,15,0,126,63,128,254,127,128,30,227,128,30, + 195,128,31,129,0,31,128,0,31,0,0,31,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,63, + 128,0,255,224,0,15,22,44,19,2,0,15,192,63,248,120, + 120,112,56,240,16,240,0,248,0,252,0,127,0,63,192,31, + 240,7,248,1,252,0,126,0,62,128,30,128,30,192,30,224, + 60,240,120,255,240,31,192,16,30,60,17,0,0,3,0,7, + 0,15,0,15,0,15,0,15,0,15,0,15,0,63,255,255, + 255,15,4,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,1,7,135,7,254,3,240,24,22,66,25,1,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,23,22,66,24,0,0,255,192,254,62,0,60,30,0,56, + 30,0,48,15,0,112,15,0,112,7,0,96,7,128,224,7, + 128,192,3,193,192,3,193,192,1,193,128,1,227,128,1,227, + 0,0,243,0,0,247,0,0,118,0,0,126,0,0,126,0, + 0,60,0,0,60,0,0,16,0,33,22,110,34,0,0,255, + 192,96,63,128,62,0,224,15,0,30,0,224,14,0,30,0, + 240,14,0,14,1,240,12,0,15,1,240,12,0,15,1,248, + 28,0,7,3,248,28,0,7,3,56,24,0,7,131,60,24, + 0,3,135,28,56,0,3,134,30,48,0,3,198,30,48,0, + 1,206,14,112,0,1,204,15,96,0,1,252,15,96,0,1, + 252,7,96,0,0,248,7,224,0,0,248,7,192,0,0,240, + 3,192,0,0,112,3,192,0,0,96,3,0,0,24,22,66, + 24,0,0,127,227,254,127,227,254,31,128,248,15,128,224,7, + 128,192,3,193,192,1,227,128,0,247,0,0,254,0,0,124, + 0,0,60,0,0,62,0,0,127,0,0,239,0,1,199,128, + 3,131,192,3,1,224,7,0,240,14,0,248,62,0,252,255, + 131,255,255,131,255,24,33,99,24,255,245,127,224,255,31,0, + 62,15,0,28,15,0,24,7,128,56,7,128,56,3,128,48, + 3,192,112,3,192,96,1,224,224,1,224,224,0,224,192,0, + 241,192,0,241,192,0,121,128,0,123,128,0,59,0,0,63, + 0,0,63,0,0,30,0,0,30,0,0,12,0,0,12,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,112,0,0, + 224,0,63,192,0,127,128,0,255,0,0,124,0,0,17,22, + 66,21,2,0,127,255,128,127,255,128,96,15,0,96,15,0, + 64,30,0,64,60,0,0,60,0,0,120,0,0,240,0,0, + 240,0,1,224,0,3,192,0,3,192,0,7,128,0,15,0, + 0,14,0,0,30,0,128,60,0,128,120,0,128,120,1,128, + 255,255,128,255,255,128,13,45,90,16,2,249,0,8,0,56, + 0,112,1,224,1,192,3,128,3,128,7,128,7,128,7,128, + 7,128,7,128,7,192,3,192,3,192,3,192,3,192,3,192, + 3,128,7,128,7,0,30,0,126,0,255,0,7,128,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,7,192,7,128, + 7,128,7,128,7,128,7,128,7,128,3,128,3,192,1,192, + 0,224,0,120,0,24,4,49,49,11,4,246,112,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,224,13,45,90, + 16,1,249,192,0,240,0,56,0,28,0,30,0,14,0,15, + 0,15,0,15,0,15,0,15,0,15,0,31,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,15,0,7,240,3, + 248,3,192,7,0,15,0,14,0,30,0,30,0,30,0,30, + 0,30,0,31,0,15,0,15,0,15,0,15,0,15,0,14, + 0,30,0,28,0,56,0,112,0,224,0,128,0,21,8,24, + 23,1,11,7,128,8,15,224,24,31,240,16,63,252,48,49, + 255,224,96,127,192,64,31,128,192,15,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,11, + 0,0,6,35,35,13,3,243,56,124,252,252,252,248,112,0, + 16,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 120,120,120,120,120,124,124,124,124,120,96,18,30,90,23,2, + 255,0,96,0,0,96,0,0,96,0,0,96,0,0,255,0, + 3,255,128,15,255,192,30,99,128,60,97,128,56,97,0,120, + 96,0,112,96,0,240,96,0,240,96,0,240,96,0,240,96, + 0,240,96,0,240,96,0,248,96,0,120,96,0,124,96,192, + 62,97,128,63,231,128,31,255,0,15,252,0,3,248,0,0, + 96,0,0,96,0,0,96,0,0,96,0,19,29,87,23,2, + 0,0,127,0,1,255,224,3,131,224,7,1,192,6,0,192, + 14,0,192,14,0,192,30,0,64,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,255,248,0,255,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 28,0,0,28,0,32,28,0,32,24,0,96,56,0,224,63, + 255,224,127,255,224,192,255,224,15,15,30,23,4,7,128,2, + 192,6,103,204,63,248,56,56,112,28,96,12,96,12,96,12, + 96,12,48,24,56,56,127,252,231,206,192,6,25,28,112,23, + 254,0,126,0,255,128,254,0,63,128,31,0,30,0,15,128, + 60,0,7,192,120,0,3,192,112,0,3,224,240,0,1,224, + 224,0,0,241,224,0,0,241,192,0,0,123,192,0,0,127, + 128,0,0,63,0,0,0,63,0,0,0,30,0,0,0,30, + 0,0,15,255,252,0,15,255,252,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,127,128,0,1,255, + 224,0,4,49,49,11,4,246,112,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,224,0,0, + 0,0,0,112,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,224,19,34,102,24,2,0,1, + 248,0,7,254,0,30,31,0,60,7,0,60,6,0,60,0, + 0,62,0,0,63,0,0,31,128,0,31,224,0,31,248,0, + 63,252,0,121,255,0,240,127,128,240,63,192,240,15,192,240, + 7,224,248,3,224,124,1,224,126,1,224,63,129,192,31,225, + 192,7,251,128,3,255,0,0,255,0,0,63,128,0,15,128, + 16,7,128,16,7,128,24,7,128,28,7,0,30,15,0,31, + 254,0,3,240,0,15,5,10,19,2,27,112,14,240,30,240, + 30,240,30,224,28,30,30,120,34,2,0,0,31,224,0,0, + 255,252,0,1,224,30,0,7,128,7,128,14,0,1,192,28, + 3,240,224,24,15,252,96,48,60,60,48,112,112,8,56,96, + 224,0,24,97,224,0,24,193,224,0,12,195,192,0,12,195, + 192,0,12,195,192,0,12,195,192,0,12,195,192,0,12,195, + 192,0,12,195,224,0,12,97,224,0,24,97,240,8,24,112, + 248,12,56,48,124,48,48,24,63,224,96,28,15,128,224,14, + 0,1,192,7,128,7,128,1,224,30,0,0,255,252,0,0, + 31,224,0,11,15,30,12,1,14,15,0,31,0,51,128,97, + 128,97,128,3,128,29,128,97,128,193,128,193,128,239,128,253, + 224,121,128,255,192,255,192,18,21,63,23,2,0,0,128,64, + 1,128,192,3,1,128,7,3,0,14,7,0,14,14,0,28, + 30,0,60,60,0,120,60,0,240,120,0,240,120,0,248,120, + 0,120,60,0,60,60,0,28,30,0,14,14,0,14,7,0, + 7,3,0,3,1,128,1,128,192,0,128,64,20,10,30,23, + 1,4,127,255,240,255,255,240,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,0,96, + 14,2,4,16,1,11,127,252,255,248,15,17,34,17,1,17, + 7,192,31,240,56,56,96,12,79,132,196,70,132,66,132,194, + 135,130,133,130,132,130,196,198,68,100,106,60,56,56,31,240, + 7,192,16,2,4,24,4,28,127,255,255,254,11,11,22,17, + 3,18,15,0,63,192,113,224,96,224,224,224,224,224,224,224, + 224,192,241,128,127,0,62,0,17,22,66,20,1,3,0,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,0,0,0,0,0,0,0,0,0,127,255,128,255,255,128, + 13,17,34,17,2,15,7,192,31,240,112,248,96,120,224,120, + 0,120,0,112,0,224,1,224,3,192,7,128,15,0,30,0, + 60,8,120,24,255,248,255,248,14,18,36,16,1,14,15,128, + 63,224,113,240,224,240,192,240,0,240,1,224,7,128,15,224, + 1,240,0,120,0,60,0,60,0,60,128,120,224,248,63,224, + 15,128,10,10,20,15,5,25,7,128,7,192,15,0,15,0, + 30,0,60,0,56,0,112,0,96,0,192,0,25,33,132,26, + 1,245,6,0,24,0,254,0,248,0,126,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,30,0, + 120,0,30,0,120,0,30,0,120,0,30,0,120,0,31,0, + 248,0,31,1,248,0,31,131,248,0,31,255,121,0,27,254, + 127,128,25,252,126,0,24,240,56,0,24,0,0,0,24,0, + 0,0,24,0,0,0,28,0,0,0,28,0,0,0,28,0, + 0,0,30,0,0,0,30,0,0,0,31,0,0,0,31,0, + 0,0,24,0,0,0,23,36,108,26,1,250,1,255,254,15, + 255,254,31,7,252,60,7,112,120,7,112,120,7,112,240,7, + 112,240,7,112,240,7,112,240,7,112,240,7,112,248,7,112, + 120,7,112,124,7,112,62,7,112,31,135,112,15,255,112,1, + 255,112,0,7,112,0,7,112,0,7,112,0,7,112,0,7, + 112,0,7,112,0,7,112,0,7,112,0,7,112,0,7,112, + 0,7,112,0,7,112,0,7,112,0,7,112,0,7,112,0, + 7,112,0,31,248,0,63,254,4,5,5,7,2,14,112,240, + 240,240,224,8,10,10,11,2,246,24,56,48,62,127,15,15, + 30,120,224,13,17,34,16,2,15,3,128,31,128,255,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,15,192,127,248,12,15,30,14,1, + 14,15,128,63,192,49,224,96,96,192,112,192,48,192,48,192, + 48,224,48,224,96,120,192,63,128,31,0,255,240,255,240,18, + 21,63,23,3,0,64,64,0,224,96,0,96,48,0,48,24, + 0,56,28,0,28,14,0,14,15,0,15,7,128,7,135,128, + 7,195,192,3,195,192,7,195,192,7,135,128,15,7,128,30, + 15,0,28,14,0,56,28,0,48,56,0,112,48,0,96,96, + 0,192,64,0,24,29,87,28,2,0,4,0,4,60,0,14, + 204,0,24,12,0,56,12,0,48,12,0,112,12,0,224,12, + 0,192,12,1,192,12,3,128,12,3,0,12,7,0,12,6, + 0,127,142,0,0,28,0,0,24,4,0,56,28,0,112,28, + 0,96,44,0,224,108,1,192,76,1,192,140,3,129,12,3, + 3,12,7,3,255,14,7,254,12,0,12,28,0,12,56,0, + 127,24,29,87,28,2,0,4,0,6,60,0,14,204,0,28, + 12,0,24,12,0,56,12,0,112,12,0,112,12,0,224,12, + 0,192,12,1,192,12,3,128,12,3,0,12,7,0,127,142, + 0,0,14,0,0,28,60,0,24,255,0,57,199,0,115,131, + 0,99,3,0,224,2,1,192,4,1,128,8,3,128,16,7, + 0,32,7,0,65,14,0,129,12,1,255,28,1,255,25,29, + 116,28,1,0,15,128,3,0,31,192,7,0,49,192,14,0, + 112,192,12,0,0,192,28,0,1,128,24,0,15,0,56,0, + 1,192,112,0,0,192,96,0,0,192,224,0,0,193,192,0, + 0,193,128,0,193,195,128,0,127,135,0,0,30,7,0,0, + 0,14,2,0,0,12,14,0,0,28,14,0,0,56,22,0, + 0,48,38,0,0,112,102,0,0,224,198,0,0,224,134,0, + 1,193,134,128,3,131,255,0,3,128,6,0,7,0,6,0, + 6,0,6,0,14,0,63,128,17,35,105,21,2,243,0,224, + 0,1,240,0,3,240,0,3,240,0,3,224,0,1,192,0, + 0,0,0,0,0,0,0,0,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,7,0,0,15,0,0,30,0,0,60,0,0, + 60,0,0,120,0,0,120,0,0,240,0,0,240,3,128,240, + 7,128,240,7,128,240,7,128,248,15,0,120,15,0,126,30, + 0,63,248,0,15,224,0,28,41,164,29,0,0,0,128,0, + 0,1,192,0,0,3,240,0,0,1,248,0,0,0,124,0, + 0,0,31,0,0,0,7,128,0,0,1,192,0,0,0,128, + 0,0,0,0,0,0,0,0,0,0,2,0,0,0,7,0, + 0,0,15,0,0,0,15,0,0,0,31,128,0,0,31,128, + 0,0,27,128,0,0,59,192,0,0,57,192,0,0,49,224, + 0,0,113,224,0,0,112,224,0,0,96,240,0,0,224,240, + 0,0,224,112,0,0,192,120,0,1,192,120,0,1,192,56, + 0,1,255,252,0,3,255,252,0,3,128,30,0,3,0,30, + 0,7,0,30,0,7,0,15,0,6,0,15,0,14,0,15, + 0,14,0,7,128,12,0,7,128,62,0,7,192,255,192,63, + 240,28,41,164,29,0,0,0,0,32,0,0,0,56,0,0, + 0,252,0,0,1,248,0,0,3,224,0,0,15,128,0,0, + 30,0,0,0,56,0,0,0,32,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,7,0,0,0,15,0,0,0, + 15,0,0,0,31,128,0,0,31,128,0,0,27,128,0,0, + 59,192,0,0,57,192,0,0,49,224,0,0,113,224,0,0, + 112,224,0,0,96,240,0,0,224,240,0,0,224,112,0,0, + 192,120,0,1,192,120,0,1,192,56,0,1,255,252,0,3, + 255,252,0,3,128,30,0,3,0,30,0,7,0,30,0,7, + 0,15,0,6,0,15,0,14,0,15,0,14,0,7,128,12, + 0,7,128,62,0,7,192,255,192,63,240,28,41,164,29,0, + 0,0,6,0,0,0,15,0,0,0,31,128,0,0,63,192, + 0,0,121,224,0,0,240,240,0,1,192,56,0,1,128,24, + 0,1,0,16,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,28,39,156,29,0,0,0,16,8,0,0, + 124,12,0,0,254,28,0,1,255,248,0,1,135,240,0,3, + 3,224,0,2,1,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,7,0,0,0,15,0,0,0,15,0,0,0, + 31,128,0,0,31,128,0,0,27,128,0,0,59,192,0,0, + 57,192,0,0,49,224,0,0,113,224,0,0,112,224,0,0, + 96,240,0,0,224,240,0,0,224,112,0,0,192,120,0,1, + 192,120,0,1,192,56,0,1,255,252,0,3,255,252,0,3, + 128,30,0,3,0,30,0,7,0,30,0,7,0,15,0,6, + 0,15,0,14,0,15,0,14,0,7,128,12,0,7,128,62, + 0,7,192,255,192,63,240,28,38,152,29,0,0,0,128,32, + 0,0,224,56,0,1,224,120,0,1,224,120,0,1,224,120, + 0,0,128,32,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,28,42,168,29,0,0,0,2,0,0,0, + 15,128,0,0,31,192,0,0,24,192,0,0,48,192,0,0, + 48,192,0,0,48,192,0,0,63,128,0,0,31,0,0,0, + 8,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, + 7,0,0,0,15,0,0,0,15,0,0,0,31,128,0,0, + 31,128,0,0,27,128,0,0,59,192,0,0,57,192,0,0, + 49,224,0,0,113,224,0,0,112,224,0,0,96,240,0,0, + 224,240,0,0,224,112,0,0,192,120,0,1,192,120,0,1, + 192,56,0,1,255,252,0,3,255,252,0,3,128,30,0,3, + 0,30,0,7,0,30,0,7,0,15,0,6,0,15,0,14, + 0,15,0,14,0,7,128,12,0,7,128,62,0,7,192,255, + 192,63,240,36,30,150,37,0,0,0,127,255,255,192,0,31, + 255,255,224,0,7,252,0,192,0,7,60,0,192,0,7,60, + 0,192,0,14,60,0,192,0,14,60,0,0,0,30,60,0, + 0,0,28,60,0,0,0,28,60,0,0,0,60,60,0,0, + 0,56,60,0,0,0,120,60,0,0,0,127,255,255,0,0, + 127,255,255,0,0,240,60,6,0,0,224,60,0,0,1,224, + 60,0,0,1,192,60,0,0,1,192,60,0,0,3,128,60, + 0,0,3,128,60,0,0,7,128,60,0,0,7,0,60,0, + 0,7,0,60,0,16,14,0,60,0,48,14,0,60,0,48, + 30,0,62,0,112,62,0,127,255,224,255,193,255,255,224,22, + 40,120,26,2,246,0,31,224,0,255,252,1,192,252,7,128, + 56,14,0,16,14,0,0,28,0,0,56,0,0,56,0,0, + 120,0,0,112,0,0,112,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,248,0,0,120,0,0,124,0,0,60,0,0,62,0,8, + 31,0,60,15,128,240,15,255,224,3,255,128,0,254,0,0, + 24,0,0,16,0,0,28,0,0,62,0,0,63,0,0,15, + 0,0,15,0,0,30,0,0,120,0,1,192,0,21,41,123, + 24,1,0,4,0,0,14,0,0,31,0,0,15,192,0,3, + 224,0,0,240,0,0,60,0,0,14,0,0,4,0,0,0, + 0,0,0,0,255,255,224,127,255,240,30,0,96,30,0,96, + 30,0,96,30,0,96,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,31,255,128,31,255, + 128,30,3,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,8,30, + 0,24,30,0,24,31,0,56,127,255,240,255,255,240,21,41, + 123,24,1,0,0,1,0,0,3,192,0,7,224,0,15,192, + 0,63,0,0,124,0,0,240,0,1,192,0,1,0,0,0, + 0,0,0,0,0,255,255,224,127,255,240,30,0,96,30,0, + 96,30,0,96,30,0,96,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,31,255,128,31, + 255,128,30,3,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,8, + 30,0,24,30,0,24,31,0,56,127,255,240,255,255,240,21, + 41,123,24,1,0,0,48,0,0,120,0,0,252,0,1,254, + 0,3,207,0,7,7,0,14,1,128,28,0,192,16,0,128, + 0,0,0,0,0,0,255,255,224,127,255,240,30,0,96,30, + 0,96,30,0,96,30,0,96,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,31,255,128, + 31,255,128,30,3,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 8,30,0,24,30,0,24,31,0,56,127,255,240,255,255,240, + 21,38,114,24,1,0,4,1,0,15,3,192,15,3,192,15, + 3,192,14,3,128,4,1,0,0,0,0,0,0,0,255,255, + 224,127,255,240,30,0,96,30,0,96,30,0,96,30,0,96, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,31,255,128,31,255,128,30,3,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,8,30,0,24,30,0,24,31, + 0,56,127,255,240,255,255,240,13,41,82,14,255,0,32,0, + 112,0,252,0,126,0,31,0,7,128,1,224,0,112,0,32, + 0,0,0,0,31,248,15,240,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,240,31,248, + 13,41,82,14,2,0,0,64,0,112,1,248,3,240,7,192, + 31,0,60,0,112,0,64,0,0,0,0,0,255,192,127,128, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,127,128,255,192,15,41,82,14,255,0,1,128, + 3,192,7,224,15,240,30,120,56,60,112,12,224,6,64,4, + 0,0,0,0,31,248,15,240,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,15,240,31,248, + 14,38,76,14,0,0,64,16,112,28,240,60,240,60,224,56, + 64,16,0,0,0,0,63,240,31,224,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,31,224, + 63,240,25,30,120,28,1,0,7,254,0,0,255,255,192,0, + 127,3,240,0,15,0,248,0,15,0,124,0,15,0,62,0, + 15,0,30,0,15,0,31,0,15,0,15,0,15,0,15,0, + 15,0,15,128,15,0,7,128,15,0,7,128,15,0,7,128, + 255,254,7,128,255,252,7,128,15,0,7,128,15,0,7,128, + 15,0,7,128,15,0,7,0,15,0,15,0,15,0,15,0, + 15,0,30,0,15,0,30,0,15,0,60,0,15,0,124,0, + 15,0,248,0,15,3,224,0,31,255,192,0,127,254,0,0, + 27,39,156,31,2,0,0,32,16,0,0,124,12,0,0,254, + 24,0,1,255,240,0,3,15,240,0,3,3,224,0,2,1, + 0,0,0,0,0,0,0,0,0,0,252,0,63,224,124,0, + 15,128,30,0,7,0,31,0,7,0,31,0,7,0,31,128, + 7,0,31,192,7,0,29,192,7,0,28,224,7,0,28,240, + 7,0,28,120,7,0,28,56,7,0,28,60,7,0,28,30, + 7,0,28,14,7,0,28,15,7,0,28,7,135,0,28,7, + 135,0,28,3,199,0,28,1,231,0,28,1,231,0,28,0, + 247,0,28,0,127,0,28,0,127,0,28,0,63,0,28,0, + 31,0,28,0,31,0,28,0,15,0,62,0,7,0,255,128, + 3,0,25,41,164,29,2,0,2,0,0,0,3,128,0,0, + 7,192,0,0,7,224,0,0,1,248,0,0,0,124,0,0, + 0,30,0,0,0,7,128,0,0,1,0,0,0,0,0,0, + 0,0,0,0,0,63,0,0,0,255,224,0,3,193,240,0, + 7,0,248,0,14,0,124,0,28,0,62,0,60,0,30,0, + 56,0,31,0,120,0,15,0,120,0,15,0,112,0,15,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 248,0,7,0,120,0,15,0,120,0,15,0,124,0,14,0, + 60,0,28,0,62,0,28,0,31,0,56,0,15,128,112,0, + 7,193,224,0,3,255,128,0,0,254,0,0,25,41,164,29, + 2,0,0,0,128,0,0,0,224,0,0,1,240,0,0,7, + 240,0,0,15,192,0,0,30,0,0,0,56,0,0,0,224, + 0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,63, + 0,0,0,255,224,0,3,193,240,0,7,0,248,0,14,0, + 124,0,28,0,62,0,60,0,30,0,56,0,31,0,120,0, + 15,0,120,0,15,0,112,0,15,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,248,0,7,0,120,0, + 15,0,120,0,15,0,124,0,14,0,60,0,28,0,62,0, + 28,0,31,0,56,0,15,128,112,0,7,193,224,0,3,255, + 128,0,0,254,0,0,25,41,164,29,2,0,0,28,0,0, + 0,62,0,0,0,126,0,0,0,127,0,0,0,227,128,0, + 1,193,192,0,3,128,224,0,6,0,112,0,4,0,32,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,255,224,0, + 3,193,240,0,7,0,248,0,14,0,124,0,28,0,62,0, + 60,0,30,0,56,0,31,0,120,0,15,0,120,0,15,0, + 112,0,15,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,248,0,7,0,120,0,15,0,120,0,15,0, + 124,0,14,0,60,0,28,0,62,0,28,0,31,0,56,0, + 15,128,112,0,7,193,224,0,3,255,128,0,0,254,0,0, + 25,39,156,29,2,0,0,64,32,0,1,248,48,0,3,252, + 48,0,3,255,224,0,6,31,192,0,4,15,128,0,12,2, + 0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,255, + 224,0,3,193,240,0,7,0,248,0,14,0,124,0,28,0, + 62,0,60,0,30,0,56,0,31,0,120,0,15,0,120,0, + 15,0,112,0,15,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,240,0,7,128,240,0,7,128,240,0, + 7,128,240,0,7,128,248,0,7,0,120,0,15,0,120,0, + 15,0,124,0,14,0,60,0,28,0,62,0,28,0,31,0, + 56,0,15,128,112,0,7,193,224,0,3,255,128,0,0,254, + 0,0,25,38,152,29,2,0,1,0,64,0,3,128,224,0, + 3,128,224,0,7,129,224,0,3,128,224,0,2,0,128,0, + 0,0,0,0,0,0,0,0,0,63,0,0,0,255,224,0, + 3,193,240,0,7,0,248,0,14,0,124,0,28,0,62,0, + 60,0,30,0,56,0,31,0,120,0,15,0,120,0,15,0, + 112,0,15,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,240,0,7,128,240,0,7,128,240,0,7,128, + 240,0,7,128,248,0,7,0,120,0,15,0,120,0,15,0, + 124,0,14,0,60,0,28,0,62,0,28,0,31,0,56,0, + 15,128,112,0,7,193,224,0,3,255,128,0,0,254,0,0, + 15,14,28,20,2,6,96,6,240,14,120,28,60,56,30,112, + 15,224,7,192,7,192,15,224,30,112,60,56,120,28,240,14, + 96,6,25,31,124,29,2,255,0,63,7,128,1,255,207,0, + 3,193,254,0,7,0,126,0,14,0,60,0,28,0,126,0, + 56,0,126,0,56,0,255,0,120,1,239,0,120,1,239,0, + 112,3,207,128,240,7,135,128,240,7,7,128,240,15,7,128, + 240,30,7,128,240,60,7,128,240,60,7,128,240,120,7,128, + 240,240,7,128,240,224,7,0,121,224,7,0,123,192,15,0, + 123,128,14,0,63,128,12,0,63,0,28,0,30,0,56,0, + 31,0,112,0,63,193,224,0,121,255,128,0,240,126,0,0, + 192,0,0,0,27,41,164,31,2,0,0,128,0,0,1,192, + 0,0,3,240,0,0,1,248,0,0,0,124,0,0,0,30, + 0,0,0,7,128,0,0,1,192,0,0,0,128,0,0,0, + 0,0,0,0,0,0,255,192,127,224,127,128,63,192,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 30,0,15,0,30,0,15,0,30,0,7,128,60,0,7,192, + 120,0,3,224,240,0,1,255,224,0,0,63,128,0,27,41, + 164,31,2,0,0,0,32,0,0,0,120,0,0,0,252,0, + 0,1,248,0,0,3,224,0,0,15,128,0,0,30,0,0, + 0,56,0,0,0,32,0,0,0,0,0,0,0,0,0,0, + 255,192,127,224,127,128,63,192,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,30,0,15,0,30,0, + 15,0,30,0,7,128,60,0,7,192,120,0,3,224,240,0, + 1,255,224,0,0,63,128,0,27,41,164,31,2,0,0,6, + 0,0,0,15,0,0,0,31,128,0,0,63,192,0,0,121, + 224,0,0,224,240,0,1,192,48,0,3,128,24,0,1,0, + 16,0,0,0,0,0,0,0,0,0,255,192,127,224,127,128, + 63,192,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,15,0,30,0,15,0,30,0,15,0,30,0, + 15,0,30,0,30,0,15,0,30,0,15,0,30,0,7,128, + 60,0,7,192,120,0,3,224,240,0,1,255,224,0,0,63, + 128,0,27,38,152,31,2,0,0,128,32,0,0,224,56,0, + 1,224,120,0,1,224,120,0,1,192,112,0,0,128,32,0, + 0,0,0,0,0,0,0,0,255,192,127,224,127,128,63,192, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,15,0,30,0,15,0,30,0,15,0,30,0,15,0, + 30,0,30,0,15,0,30,0,15,0,30,0,7,128,60,0, + 7,192,120,0,3,224,240,0,1,255,224,0,0,63,128,0, + 28,41,164,29,0,0,0,0,32,0,0,0,56,0,0,0, + 252,0,0,1,248,0,0,3,224,0,0,7,128,0,0,30, + 0,0,0,56,0,0,0,32,0,0,0,0,0,0,0,0, + 0,0,252,0,63,240,254,0,63,240,31,0,15,128,15,0, + 7,0,15,128,14,0,7,192,14,0,3,192,28,0,3,224, + 60,0,1,224,56,0,0,240,120,0,0,248,112,0,0,120, + 224,0,0,125,224,0,0,61,192,0,0,63,192,0,0,31, + 128,0,0,31,128,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15, + 0,0,0,63,192,0,0,255,240,0,21,30,90,25,2,0, + 255,224,0,127,128,0,30,0,0,30,0,0,30,0,0,30, + 0,0,31,254,0,31,255,128,30,15,192,30,3,224,30,1, + 240,30,0,248,30,0,120,30,0,120,30,0,120,30,0,120, + 30,0,120,30,0,120,30,0,240,30,0,240,30,1,224,31, + 7,192,30,255,128,30,124,0,30,0,0,30,0,0,30,0, + 0,30,0,0,127,128,0,255,224,0,25,36,144,27,1,0, + 0,31,128,0,0,127,224,0,1,195,240,0,3,128,248,0, + 7,0,120,0,7,0,124,0,14,0,60,0,14,0,60,0, + 14,0,60,0,30,0,60,0,30,0,60,0,30,0,120,0, + 30,1,248,0,30,7,240,0,30,15,192,0,30,31,0,0, + 30,60,0,0,30,60,0,0,30,60,0,0,30,62,0,0, + 30,63,0,0,30,31,192,0,30,15,240,0,30,3,252,0, + 30,0,254,0,30,0,127,0,30,0,31,128,30,0,15,128, + 30,0,7,128,30,32,7,128,30,48,7,128,30,48,7,0, + 30,56,15,0,30,60,30,0,62,63,252,0,254,7,224,0, + 20,35,105,22,2,0,30,0,0,62,0,0,31,0,0,15, + 0,0,7,128,0,3,192,0,1,192,0,0,224,0,0,96, + 0,0,48,0,0,0,0,0,0,0,0,0,0,1,248,0, + 15,254,0,28,30,0,120,15,0,112,15,0,240,15,0,128, + 15,0,0,15,0,0,15,0,0,255,0,7,255,0,31,143, + 0,62,15,0,120,15,0,248,15,0,240,15,0,240,15,0, + 240,31,0,240,63,0,120,239,32,127,143,240,30,7,128,20, + 35,105,22,2,0,0,15,0,0,31,0,0,30,0,0,60, + 0,0,56,0,0,112,0,0,112,0,0,224,0,1,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,1,248,0,15, + 254,0,28,30,0,120,15,0,112,15,0,240,15,0,128,15, + 0,0,15,0,0,15,0,0,255,0,7,255,0,31,143,0, + 62,15,0,120,15,0,248,15,0,240,15,0,240,15,0,240, + 31,0,240,63,0,120,239,32,127,143,240,30,7,128,20,34, + 102,22,2,0,0,224,0,1,240,0,3,240,0,7,56,0, + 6,28,0,12,14,0,24,6,0,48,3,0,32,1,128,0, + 0,0,0,0,0,0,0,0,1,248,0,15,254,0,28,30, + 0,120,15,0,112,15,0,240,15,0,128,15,0,0,15,0, + 0,15,0,0,255,0,7,255,0,31,143,0,62,15,0,120, + 15,0,248,15,0,240,15,0,240,15,0,240,31,0,240,63, + 0,120,239,32,127,143,240,30,7,128,20,32,96,22,2,0, + 7,0,128,15,193,128,31,193,0,63,243,0,48,254,0,96, + 56,0,0,0,0,0,0,0,0,0,0,0,0,0,1,248, + 0,15,254,0,28,30,0,120,15,0,112,15,0,240,15,0, + 128,15,0,0,15,0,0,15,0,0,255,0,7,255,0,31, + 143,0,62,15,0,120,15,0,248,15,0,240,15,0,240,15, + 0,240,31,0,240,63,0,120,239,32,127,143,240,30,7,128, + 20,32,96,22,2,0,28,7,0,28,7,0,60,15,0,60, + 15,0,24,6,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,248,0,15,254,0,28,30,0,120,15,0, + 112,15,0,240,15,0,128,15,0,0,15,0,0,15,0,0, + 255,0,7,255,0,31,143,0,62,15,0,120,15,0,248,15, + 0,240,15,0,240,15,0,240,31,0,240,63,0,120,239,32, + 127,143,240,30,7,128,20,34,102,22,2,0,0,240,0,1, + 248,0,3,24,0,3,24,0,6,24,0,6,24,0,7,56, + 0,3,240,0,1,192,0,0,0,0,0,0,0,0,0,0, + 1,248,0,15,254,0,28,30,0,120,15,0,112,15,0,240, + 15,0,128,15,0,0,15,0,0,15,0,0,255,0,7,255, + 0,31,143,0,62,15,0,120,15,0,248,15,0,240,15,0, + 240,15,0,240,31,0,240,63,0,120,239,32,127,143,240,30, + 7,128,29,22,88,33,2,0,1,248,31,128,7,252,127,192, + 28,62,225,224,56,31,192,240,112,15,128,112,240,15,128,120, + 240,15,0,120,192,15,0,120,0,127,255,248,3,255,255,240, + 15,143,0,0,30,15,0,0,60,15,0,0,120,15,0,0, + 240,15,0,0,240,15,128,0,240,31,128,24,240,63,192,48, + 248,243,224,240,127,227,255,192,127,128,255,128,30,0,126,0, + 18,32,96,21,2,246,0,127,0,1,255,192,7,7,192,14, + 1,128,28,0,128,56,0,0,120,0,0,112,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,248,0,0,120,1,0,124,3,128,62,7,0,31, + 254,0,31,248,0,7,240,0,0,192,0,0,128,0,0,224, + 0,0,240,0,1,248,0,0,120,0,0,120,0,0,240,0, + 3,192,0,14,0,0,18,35,105,22,2,0,14,0,0,31, + 0,0,15,128,0,7,128,0,3,192,0,1,192,0,0,224, + 0,0,112,0,0,48,0,0,24,0,0,0,0,0,0,0, + 0,0,0,0,248,0,7,254,0,14,15,0,28,7,128,56, + 7,128,56,3,192,112,3,192,112,3,192,255,255,192,255,255, + 128,240,0,0,240,0,0,240,0,0,240,0,0,248,0,0, + 120,0,0,120,0,0,124,0,192,62,1,128,31,7,0,15, + 254,0,3,248,0,18,35,105,22,2,0,0,7,0,0,15, + 128,0,15,0,0,30,0,0,60,0,0,56,0,0,112,0, + 0,96,0,0,192,0,0,128,0,0,0,0,0,0,0,0, + 0,0,0,248,0,7,254,0,14,15,0,28,7,128,56,7, + 128,56,3,192,112,3,192,112,3,192,255,255,192,255,255,128, + 240,0,0,240,0,0,240,0,0,240,0,0,248,0,0,120, + 0,0,120,0,0,124,0,192,62,1,128,31,7,0,15,254, + 0,3,248,0,18,34,102,22,2,0,0,240,0,0,240,0, + 1,248,0,3,156,0,7,14,0,14,6,0,12,3,0,24, + 1,128,16,0,128,0,0,0,0,0,0,0,0,0,0,248, + 0,7,254,0,14,15,0,28,7,128,56,7,128,56,3,192, + 112,3,192,112,3,192,255,255,192,255,255,128,240,0,0,240, + 0,0,240,0,0,240,0,0,248,0,0,120,0,0,120,0, + 0,124,0,192,62,1,128,31,7,0,15,254,0,3,248,0, + 18,32,96,22,2,0,14,3,128,30,7,128,30,7,128,30, + 7,128,28,7,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,248,0,7,254,0,14,15,0,28,7,128, + 56,7,128,56,3,192,112,3,192,112,3,192,255,255,192,255, + 255,128,240,0,0,240,0,0,240,0,0,240,0,0,248,0, + 0,120,0,0,120,0,0,124,0,192,62,1,128,31,7,0, + 15,254,0,3,248,0,12,35,70,13,0,0,240,0,248,0, + 120,0,60,0,28,0,14,0,7,0,3,0,1,128,0,128, + 0,0,0,0,0,0,1,128,31,128,63,128,15,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,15,192, + 63,240,12,35,70,13,2,0,0,224,1,240,3,224,3,192, + 7,128,7,0,14,0,28,0,24,0,48,0,0,0,0,0, + 0,0,6,0,126,0,254,0,62,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,63,0,255,192,15,34, + 68,13,255,0,3,128,7,192,7,224,14,240,28,112,56,56, + 112,12,96,6,192,2,0,0,0,0,0,0,0,192,15,192, + 31,192,7,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,7,224,31,248,14,32,64,13,0,0,96,24, + 240,60,240,60,224,56,224,56,0,0,0,0,0,0,0,0, + 0,0,1,128,31,128,63,128,15,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,15,192,63,240,20,34, + 102,24,2,0,3,0,0,31,192,128,31,225,224,1,255,192, + 0,126,0,0,252,0,3,254,0,15,143,0,4,7,128,0, + 3,128,0,3,192,0,1,192,1,241,224,7,255,224,14,31, + 224,28,7,240,56,3,240,56,1,240,120,1,240,112,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,224,240, + 0,224,248,1,224,120,1,192,124,1,192,124,3,128,62,7, + 0,31,14,0,15,252,0,3,240,0,23,32,96,26,2,0, + 1,224,32,3,240,48,7,248,96,7,252,192,14,63,128,8, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,12,7, + 192,254,15,224,62,49,224,30,96,240,30,192,240,30,128,240, + 31,0,240,31,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,127,131,248,255,199,254, + 20,35,105,24,2,0,15,0,0,15,0,0,7,128,0,3, + 192,0,1,192,0,0,224,0,0,112,0,0,112,0,0,56, + 0,0,24,0,0,0,0,0,0,0,0,0,0,0,252,0, + 7,255,0,14,15,128,28,7,192,56,3,192,56,3,224,112, + 1,224,112,1,240,240,0,240,240,0,240,240,0,240,240,0, + 240,240,0,240,240,0,240,248,0,224,120,1,224,124,1,192, + 60,1,192,62,3,128,31,7,0,15,254,0,3,240,0,20, + 35,105,24,2,0,0,7,128,0,7,192,0,15,128,0,15, + 0,0,30,0,0,60,0,0,56,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,0,0,0,0,0,0,252,0,7, + 255,0,14,15,128,28,7,192,56,3,192,56,3,224,112,1, + 224,112,1,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,248,0,224,120,1,224,124,1,192,60, + 1,192,62,3,128,31,7,0,15,254,0,3,240,0,20,34, + 102,24,2,0,0,112,0,0,248,0,1,252,0,1,220,0, + 3,142,0,7,7,0,14,3,128,12,1,192,24,0,192,0, + 0,0,0,0,0,0,0,0,0,252,0,7,255,0,14,15, + 128,28,7,192,56,3,192,56,3,224,112,1,224,112,1,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,240, + 0,240,248,0,224,120,1,224,124,1,192,60,1,192,62,3, + 128,31,7,0,15,254,0,3,240,0,20,32,96,24,2,0, + 3,192,64,7,224,96,15,240,192,15,249,128,28,127,0,16, + 30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 0,7,255,0,14,15,128,28,7,192,56,3,192,56,3,224, + 112,1,224,112,1,240,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,248,0,224,120,1,224,124,1, + 192,60,1,192,62,3,128,31,7,0,15,254,0,3,240,0, + 20,32,96,24,2,0,6,1,128,15,3,192,15,3,192,14, + 3,128,14,3,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,252,0,7,255,0,14,15,128,28,7,192, + 56,3,192,56,3,224,112,1,224,112,1,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,248,0, + 224,120,1,224,124,1,192,60,1,192,62,3,128,31,7,0, + 15,254,0,3,240,0,17,15,45,20,1,6,0,224,0,1, + 224,0,1,224,0,1,192,0,0,0,0,0,0,0,0,0, + 0,127,255,128,255,255,128,0,0,0,0,0,0,0,224,0, + 1,224,0,1,224,0,1,192,0,20,24,72,24,2,255,0, + 0,48,1,248,112,7,254,224,14,15,192,28,7,192,56,3, + 224,56,7,224,112,15,224,112,28,240,240,24,240,240,56,240, + 240,112,240,240,224,240,240,192,240,241,192,240,243,128,224,255, + 0,224,126,1,192,126,1,192,62,3,128,63,7,0,119,254, + 0,225,248,0,128,0,0,24,35,105,25,1,0,3,128,0, + 7,192,0,3,192,0,1,224,0,0,240,0,0,112,0,0, + 56,0,0,24,0,0,12,0,0,4,0,0,0,0,0,0, + 0,0,0,0,6,0,112,254,7,240,126,7,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,1,240,31,2,240,15,12,255, + 15,248,252,3,224,112,24,35,105,25,1,0,0,1,192,0, + 3,224,0,7,192,0,7,128,0,15,0,0,14,0,0,28, + 0,0,56,0,0,48,0,0,96,0,0,0,0,0,0,0, + 0,0,0,6,0,112,254,7,240,126,7,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,1,240,31,2,240,15,12,255,15, + 248,252,3,224,112,24,34,102,25,1,0,0,56,0,0,124, + 0,0,126,0,0,231,0,1,195,0,3,129,128,3,0,192, + 6,0,96,12,0,32,0,0,0,0,0,0,0,0,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,24,32,96,25,1,0,3,0,192,7,129,224,7,129,224, + 7,129,224,7,1,192,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,6,0,112,254,7,240,126,7,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,1,240,31,2,240,15,12, + 255,15,248,252,3,224,112,24,46,138,24,255,245,0,0,240, + 0,0,248,0,1,224,0,3,224,0,3,192,0,7,128,0, + 7,0,0,14,0,0,12,0,0,24,0,0,0,0,0,0, + 0,0,0,0,127,224,255,31,0,62,15,0,28,15,0,24, + 7,128,56,7,128,56,3,128,48,3,192,112,3,192,96,1, + 224,224,1,224,224,0,224,192,0,241,192,0,241,192,0,121, + 128,0,123,128,0,59,0,0,63,0,0,63,0,0,30,0, + 0,30,0,0,12,0,0,12,0,0,28,0,0,24,0,0, + 56,0,0,112,0,0,112,0,0,224,0,63,192,0,127,128, + 0,255,0,0,124,0,0,21,47,141,25,2,245,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,15,0,28,63,192,28,99,224, + 28,193,224,29,129,240,31,0,240,31,0,248,30,0,248,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,120,30,0, + 120,30,0,112,30,0,112,30,0,224,30,0,224,31,129,192, + 31,195,128,31,255,0,30,124,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,63,0,0,255,224,0,24,43,129,24,255,245, + 0,192,48,1,192,112,1,224,120,3,192,240,1,128,96,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,224, + 255,31,0,62,15,0,28,15,0,24,7,128,56,7,128,56, + 3,128,48,3,192,112,3,192,96,1,224,224,1,224,224,0, + 224,192,0,241,192,0,241,192,0,121,128,0,123,128,0,59, + 0,0,63,0,0,63,0,0,30,0,0,30,0,0,12,0, + 0,12,0,0,28,0,0,24,0,0,56,0,0,112,0,0, + 112,0,0,224,0,63,192,0,127,128,0,255,0,0,124,0, + 0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 29 + Calculated Max Values w=20 h=46 x= 3 y=17 dx=23 dy= 0 ascent=38 len=138 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =29 descent= 0 + X Font ascent =29 descent= 0 + Max Font ascent =38 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30n[1252] U8G_SECTION(".progmem.u8g_font_gdr30n") = { + 0,71,68,232,239,29,0,0,0,0,42,57,0,38,248,29, + 0,18,20,60,21,2,17,0,192,0,1,192,0,1,192,0, + 1,192,0,193,193,0,240,195,192,248,207,192,124,223,0,15, + 252,0,3,224,0,3,224,0,15,252,0,60,223,0,248,207, + 128,240,195,128,64,193,128,1,192,0,1,192,0,1,192,0, + 1,128,0,17,17,51,20,1,5,0,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,255,255,128,255,255,128,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,128,0,7,13,13,11, + 2,249,8,60,254,254,30,30,30,28,28,56,48,96,64,14, + 2,4,16,1,11,127,252,255,248,6,6,6,11,3,255,56, + 124,252,252,248,112,20,46,138,23,1,248,0,0,48,0,0, + 240,0,0,240,0,0,224,0,1,224,0,1,192,0,1,192, + 0,3,192,0,3,128,0,7,128,0,7,128,0,7,0,0, + 15,0,0,15,0,0,14,0,0,30,0,0,28,0,0,28, + 0,0,60,0,0,56,0,0,120,0,0,120,0,0,112,0, + 0,240,0,0,224,0,0,224,0,1,224,0,1,192,0,3, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,14,0,0,30,0,0,30,0,0,28,0,0, + 60,0,0,60,0,0,56,0,0,120,0,0,112,0,0,240, + 0,0,192,0,0,19,29,87,23,2,0,1,248,0,7,252, + 0,14,30,0,28,15,0,24,7,128,56,7,128,56,3,192, + 112,3,192,112,3,192,112,3,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,192,120,1,192,120,3,192,120,3,128, + 60,3,128,60,3,0,30,7,0,15,14,0,7,252,0,3, + 240,0,17,29,87,23,3,0,0,96,0,1,224,0,15,224, + 0,127,224,0,255,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,3,240,0,63,254,0,127,255,128,17, + 29,87,22,2,0,1,248,0,7,254,0,28,31,0,56,15, + 0,120,15,128,112,7,128,240,7,128,224,7,128,0,7,128, + 0,7,128,0,15,0,0,15,0,0,30,0,0,30,0,0, + 60,0,0,120,0,0,240,0,0,240,0,1,224,0,3,192, + 0,7,128,0,15,0,0,15,0,0,30,0,128,60,0,128, + 120,0,128,240,1,128,255,255,128,255,255,128,18,29,87,22, + 1,0,1,248,0,7,254,0,30,31,0,60,15,0,56,7, + 128,120,7,128,112,7,128,0,7,128,0,7,0,0,15,0, + 0,30,0,0,60,0,0,248,0,3,254,0,0,63,0,0, + 15,128,0,7,128,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,7,128,128,7,128,224,15,0, + 120,62,0,63,252,0,7,224,0,19,29,87,23,1,0,0, + 3,0,0,15,0,0,31,0,0,63,0,0,127,0,0,127, + 0,0,239,0,0,207,0,1,207,0,3,143,0,3,143,0, + 7,15,0,14,15,0,14,15,0,28,15,0,24,15,0,56, + 15,0,112,15,0,112,15,0,255,255,224,255,255,192,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,63,128,1,255,224,18,29,87,23,2,0,0,0,128,0, + 1,128,31,255,0,31,254,0,24,0,0,24,0,0,24,0, + 0,24,0,0,56,0,0,56,0,0,56,0,0,63,240,0, + 63,252,0,120,63,0,32,15,0,0,7,128,0,7,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 128,0,7,128,128,7,128,224,15,0,120,62,0,63,252,0, + 7,240,0,18,29,87,23,3,0,0,7,0,0,63,0,0, + 248,0,1,224,0,3,192,0,15,0,0,14,0,0,30,0, + 0,60,0,0,56,0,0,120,0,0,120,248,0,119,254,0, + 254,31,0,248,15,128,240,7,128,240,7,192,240,3,192,240, + 3,192,240,3,192,240,3,192,248,3,192,120,3,128,120,3, + 128,60,7,128,60,7,0,31,14,0,15,252,0,3,240,0, + 19,27,81,23,2,0,127,255,192,127,255,224,96,1,192,64, + 3,192,192,3,128,0,3,128,0,7,0,0,7,0,0,14, + 0,0,14,0,0,28,0,0,28,0,0,56,0,0,56,0, + 0,56,0,0,112,0,0,112,0,0,224,0,0,224,0,1, + 192,0,1,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,15,0,0,28,0,0,18,29,87,22,2,0,3,248,0, + 15,254,0,28,31,0,56,15,0,48,7,128,112,7,128,112, + 7,128,112,7,128,112,7,0,120,15,0,62,30,0,31,188, + 0,15,240,0,3,252,0,7,254,0,30,63,0,60,15,128, + 120,7,192,112,7,192,240,3,192,240,3,192,240,3,192,240, + 3,192,240,3,128,120,7,128,124,7,0,62,14,0,31,252, + 0,7,224,0,19,30,90,23,2,255,1,248,0,7,254,0, + 14,31,0,28,15,128,56,7,128,120,3,192,112,3,192,240, + 3,224,240,1,224,240,1,224,240,1,224,240,1,224,248,1, + 224,120,3,224,124,7,224,62,13,224,31,249,224,7,225,192, + 0,3,192,0,3,192,0,7,128,0,7,128,0,15,0,0, + 30,0,0,60,0,0,120,0,0,240,0,3,224,0,31,128, + 0,56,0,0}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--48-480-72-72-P-218-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 30, '1' Height: 29 + Calculated Max Values w=40 h=49 x= 4 y=25 dx=41 dy= 0 ascent=39 len=195 + Font Bounding box w=71 h=68 x=-24 y=-17 + Calculated Min Values x=-5 y=-11 dx= 0 dy= 0 + Pure Font ascent =30 descent=-11 + X Font ascent =38 descent=-11 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr30r[8588] U8G_SECTION(".progmem.u8g_font_gdr30r") = { + 0,71,68,232,239,30,9,231,23,124,32,127,245,39,245,38, + 245,0,0,0,11,0,0,6,36,36,13,3,255,12,60,124, + 124,124,124,124,120,120,120,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,0,0,0,0,56,124,252,252,248, + 112,13,16,32,20,4,19,48,56,240,248,240,248,240,240,240, + 240,240,240,240,112,240,112,240,112,240,112,112,112,112,112,96, + 112,96,112,96,112,96,112,21,27,81,23,2,3,0,48,96, + 0,112,224,0,96,192,0,224,192,0,225,192,0,225,192,0, + 193,128,1,195,128,31,255,248,31,255,248,3,135,0,3,135, + 0,3,7,0,3,6,0,7,14,0,7,14,0,6,14,0, + 255,255,192,255,255,192,12,28,0,12,24,0,28,56,0,28, + 56,0,24,48,0,56,112,0,56,112,0,48,96,0,20,36, + 108,23,1,252,0,96,0,0,96,0,0,96,0,0,96,0, + 3,254,0,15,255,128,62,127,192,120,103,128,112,99,128,240, + 96,0,240,96,0,240,96,0,248,96,0,126,96,0,127,224, + 0,63,240,0,15,254,0,1,255,0,0,127,192,0,111,224, + 0,99,224,0,97,240,0,96,240,0,96,240,64,96,240,96, + 96,240,112,96,224,120,97,224,124,99,192,127,255,128,31,255, + 0,7,248,0,0,96,0,0,96,0,0,96,0,0,96,0, + 31,30,120,34,1,255,7,192,0,96,31,224,1,240,60,240, + 1,192,120,120,3,192,112,120,7,128,240,60,7,0,240,60, + 14,0,240,60,30,0,240,60,60,0,240,60,56,0,240,60, + 120,0,120,56,240,0,120,120,224,0,60,241,192,0,31,227, + 195,224,15,135,143,240,0,7,30,120,0,15,60,60,0,30, + 56,60,0,28,120,30,0,56,120,30,0,120,120,30,0,240, + 120,30,0,224,120,30,1,192,120,30,3,192,60,28,3,128, + 60,60,7,0,30,120,15,0,15,240,12,0,7,192,30,34, + 136,32,2,0,0,63,0,0,0,255,128,0,1,199,192,0, + 3,131,224,0,7,1,224,0,7,1,224,0,15,1,224,0, + 15,1,224,0,15,3,224,0,15,3,192,0,15,135,192,0, + 15,143,128,0,7,191,0,0,7,254,0,0,7,248,0,0, + 7,240,0,0,15,240,63,248,31,240,127,252,62,120,30,48, + 60,124,15,0,124,60,15,0,120,30,7,0,240,31,7,0, + 240,15,135,0,240,7,198,0,240,3,198,0,240,3,236,0, + 240,1,252,0,248,0,252,0,120,0,126,0,60,0,255,0, + 63,3,143,200,15,255,7,240,3,248,3,192,4,16,16,12, + 4,19,48,240,240,240,240,240,240,240,240,240,112,112,96,96, + 96,96,11,45,90,15,3,249,0,32,0,224,1,192,3,128, + 3,128,7,0,14,0,14,0,28,0,28,0,60,0,56,0, + 56,0,120,0,120,0,120,0,112,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,120,0,120,0,120,0,120,0,56,0,60,0,60,0, + 28,0,30,0,14,0,15,0,7,0,3,128,1,192,0,224, + 0,32,11,45,90,15,1,249,128,0,224,0,112,0,56,0, + 28,0,30,0,14,0,15,0,7,0,7,128,7,128,3,128, + 3,192,3,192,3,192,3,192,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,192,3,192,3,192,3,192,3,128,3,128,7,128,7,0, + 15,0,14,0,14,0,28,0,56,0,56,0,112,0,224,0, + 128,0,18,20,60,21,2,17,0,192,0,1,192,0,1,192, + 0,1,192,0,193,193,0,240,195,192,248,207,192,124,223,0, + 15,252,0,3,224,0,3,224,0,15,252,0,60,223,0,248, + 207,128,240,195,128,64,193,128,1,192,0,1,192,0,1,192, + 0,1,128,0,17,17,51,20,1,5,0,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,255,255,128,255,255,128,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,128,0,7,13,13, + 11,2,249,8,60,254,254,30,30,30,28,28,56,48,96,64, + 14,2,4,16,1,11,127,252,255,248,6,6,6,11,3,255, + 56,124,252,252,248,112,20,46,138,23,1,248,0,0,48,0, + 0,240,0,0,240,0,0,224,0,1,224,0,1,192,0,1, + 192,0,3,192,0,3,128,0,7,128,0,7,128,0,7,0, + 0,15,0,0,15,0,0,14,0,0,30,0,0,28,0,0, + 28,0,0,60,0,0,56,0,0,120,0,0,120,0,0,112, + 0,0,240,0,0,224,0,0,224,0,1,224,0,1,192,0, + 3,192,0,3,192,0,3,128,0,7,128,0,7,128,0,7, + 0,0,15,0,0,14,0,0,30,0,0,30,0,0,28,0, + 0,60,0,0,60,0,0,56,0,0,120,0,0,112,0,0, + 240,0,0,192,0,0,19,29,87,23,2,0,1,248,0,7, + 252,0,14,30,0,28,15,0,24,7,128,56,7,128,56,3, + 192,112,3,192,112,3,192,112,3,224,240,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,192,120,1,192,120,3,192,120,3, + 128,60,3,128,60,3,0,30,7,0,15,14,0,7,252,0, + 3,240,0,17,29,87,23,3,0,0,96,0,1,224,0,15, + 224,0,127,224,0,255,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,3,240,0,63,254,0,127,255,128, + 17,29,87,22,2,0,1,248,0,7,254,0,28,31,0,56, + 15,0,120,15,128,112,7,128,240,7,128,224,7,128,0,7, + 128,0,7,128,0,15,0,0,15,0,0,30,0,0,30,0, + 0,60,0,0,120,0,0,240,0,0,240,0,1,224,0,3, + 192,0,7,128,0,15,0,0,15,0,0,30,0,128,60,0, + 128,120,0,128,240,1,128,255,255,128,255,255,128,18,29,87, + 22,1,0,1,248,0,7,254,0,30,31,0,60,15,0,56, + 7,128,120,7,128,112,7,128,0,7,128,0,7,0,0,15, + 0,0,30,0,0,60,0,0,248,0,3,254,0,0,63,0, + 0,15,128,0,7,128,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,7,128,128,7,128,224,15, + 0,120,62,0,63,252,0,7,224,0,19,29,87,23,1,0, + 0,3,0,0,15,0,0,31,0,0,63,0,0,127,0,0, + 127,0,0,239,0,0,207,0,1,207,0,3,143,0,3,143, + 0,7,15,0,14,15,0,14,15,0,28,15,0,24,15,0, + 56,15,0,112,15,0,112,15,0,255,255,224,255,255,192,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,63,128,1,255,224,18,29,87,23,2,0,0,0,128, + 0,1,128,31,255,0,31,254,0,24,0,0,24,0,0,24, + 0,0,24,0,0,56,0,0,56,0,0,56,0,0,63,240, + 0,63,252,0,120,63,0,32,15,0,0,7,128,0,7,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,128,0,7,128,128,7,128,224,15,0,120,62,0,63,252, + 0,7,240,0,18,29,87,23,3,0,0,7,0,0,63,0, + 0,248,0,1,224,0,3,192,0,15,0,0,14,0,0,30, + 0,0,60,0,0,56,0,0,120,0,0,120,248,0,119,254, + 0,254,31,0,248,15,128,240,7,128,240,7,192,240,3,192, + 240,3,192,240,3,192,240,3,192,248,3,192,120,3,128,120, + 3,128,60,7,128,60,7,0,31,14,0,15,252,0,3,240, + 0,19,27,81,23,2,0,127,255,192,127,255,224,96,1,192, + 64,3,192,192,3,128,0,3,128,0,7,0,0,7,0,0, + 14,0,0,14,0,0,28,0,0,28,0,0,56,0,0,56, + 0,0,56,0,0,112,0,0,112,0,0,224,0,0,224,0, + 1,192,0,1,192,0,3,192,0,7,128,0,7,128,0,15, + 0,0,15,0,0,28,0,0,18,29,87,22,2,0,3,248, + 0,15,254,0,28,31,0,56,15,0,48,7,128,112,7,128, + 112,7,128,112,7,128,112,7,0,120,15,0,62,30,0,31, + 188,0,15,240,0,3,252,0,7,254,0,30,63,0,60,15, + 128,120,7,192,112,7,192,240,3,192,240,3,192,240,3,192, + 240,3,192,240,3,128,120,7,128,124,7,0,62,14,0,31, + 252,0,7,224,0,19,30,90,23,2,255,1,248,0,7,254, + 0,14,31,0,28,15,128,56,7,128,120,3,192,112,3,192, + 240,3,224,240,1,224,240,1,224,240,1,224,240,1,224,248, + 1,224,120,3,224,124,7,224,62,13,224,31,249,224,7,225, + 192,0,3,192,0,3,192,0,7,128,0,7,128,0,15,0, + 0,30,0,0,60,0,0,120,0,0,240,0,3,224,0,31, + 128,0,56,0,0,6,23,23,11,3,255,56,124,252,252,248, + 112,0,0,0,0,0,0,0,0,0,0,0,56,124,252,252, + 248,112,7,29,29,11,2,249,28,62,126,126,124,56,0,0, + 0,0,0,0,0,0,0,0,8,60,254,254,30,30,30,28, + 28,56,48,96,64,19,15,45,21,1,6,0,0,96,0,3, + 192,0,31,192,0,127,0,3,252,0,31,224,0,127,0,0, + 124,0,0,254,0,0,63,192,0,7,240,0,1,254,0,0, + 63,192,0,7,224,0,1,128,19,9,27,21,1,9,127,255, + 224,255,255,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,127,255,224,255,255,192,19,15,45,21,1,6,48, + 0,0,252,0,0,127,128,0,15,240,0,3,254,0,0,127, + 128,0,15,224,0,3,192,0,31,192,0,255,0,3,248,0, + 31,192,0,127,0,0,120,0,0,192,0,0,17,36,108,21, + 2,255,3,248,0,15,254,0,60,63,0,120,15,0,120,15, + 128,240,7,128,240,7,128,240,7,128,224,7,128,0,7,128, + 0,15,0,0,15,0,0,30,0,0,30,0,0,60,0,0, + 120,0,0,112,0,0,224,0,1,224,0,1,192,0,3,192, + 0,3,128,0,3,128,0,3,128,0,3,128,0,3,128,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,3, + 224,0,7,224,0,7,224,0,7,192,0,3,128,0,36,39, + 195,39,1,248,0,0,255,128,0,0,7,255,224,0,0,31, + 1,248,0,0,120,0,62,0,0,224,0,31,0,1,192,0, + 15,0,7,128,0,7,128,7,0,0,3,192,14,0,0,1, + 192,28,0,124,33,224,28,1,255,96,224,56,3,135,224,224, + 56,7,3,224,224,120,14,1,224,240,112,14,1,224,112,112, + 30,1,224,112,240,28,1,224,112,240,60,1,224,112,240,60, + 1,224,112,240,60,1,224,112,240,60,1,224,112,240,60,1, + 224,112,240,60,1,224,96,248,60,1,224,224,248,62,1,224, + 192,120,30,1,224,192,120,31,3,225,128,124,15,5,225,0, + 60,15,141,242,0,62,7,248,252,0,31,1,224,112,0,31, + 0,0,0,0,15,128,0,0,0,7,192,0,1,0,3,240, + 0,3,128,1,248,0,14,0,0,127,0,252,0,0,31,255, + 240,0,0,3,255,0,0,28,30,120,29,0,0,0,2,0, + 0,0,7,0,0,0,15,0,0,0,15,0,0,0,31,128, + 0,0,31,128,0,0,27,128,0,0,59,192,0,0,57,192, + 0,0,49,224,0,0,113,224,0,0,112,224,0,0,96,240, + 0,0,224,240,0,0,224,112,0,0,192,120,0,1,192,120, + 0,1,192,56,0,1,255,252,0,3,255,252,0,3,128,30, + 0,3,0,30,0,7,0,30,0,7,0,15,0,6,0,15, + 0,14,0,15,0,14,0,7,128,12,0,7,128,62,0,7, + 192,255,192,63,240,24,30,90,27,0,0,7,254,0,255,255, + 192,111,7,224,15,1,240,15,0,248,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,112,15,0,240,15,1,224,15, + 7,192,15,255,192,15,255,240,15,1,248,15,0,124,15,0, + 62,15,0,30,15,0,31,15,0,15,15,0,15,15,0,15, + 15,0,15,15,0,14,15,0,30,15,0,60,15,0,248,63, + 255,240,127,255,128,23,30,90,26,1,0,0,31,224,0,255, + 252,1,192,252,7,128,56,14,0,16,14,0,0,28,0,0, + 56,0,0,56,0,0,120,0,0,112,0,0,112,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,120,0,0,120,0,0,124,0,0, + 60,0,0,30,0,4,31,0,14,15,128,56,7,224,240,1, + 255,192,0,127,0,25,30,120,28,1,0,7,254,0,0,255, + 255,192,0,111,3,240,0,15,0,248,0,15,0,124,0,15, + 0,62,0,15,0,30,0,15,0,31,0,15,0,15,0,15, + 0,15,0,15,0,15,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,128,15,0,7,128,15, + 0,7,128,15,0,7,128,15,0,7,0,15,0,15,0,15, + 0,15,0,15,0,30,0,15,0,30,0,15,0,60,0,15, + 0,124,0,15,0,248,0,15,3,224,0,63,255,192,0,127, + 254,0,0,21,30,90,24,1,0,255,255,224,127,255,240,30, + 0,96,30,0,96,30,0,96,30,0,96,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,128,31,255,128,30,3,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,8,30,0,24,30,0,24,31,0,56,127,255,240, + 255,255,240,20,30,90,23,1,0,255,255,240,127,255,240,30, + 0,96,30,0,96,30,0,32,30,0,32,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 31,255,0,31,255,0,30,6,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,127,128,0, + 255,224,0,24,30,90,28,2,0,0,31,224,0,255,248,1, + 192,252,7,128,56,15,0,16,30,0,0,28,0,0,56,0, + 0,56,0,0,120,0,0,112,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,240,0,0,240,7,255,240,0,254,240, + 0,60,240,0,60,248,0,60,120,0,60,120,0,60,60,0, + 60,62,0,60,30,0,60,15,0,60,7,192,248,3,255,224, + 0,127,0,27,30,120,31,2,0,255,192,127,224,127,128,63, + 192,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,31,255,255,0,31,255,255,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,127,0,31,192,255,192,127, + 224,10,30,60,14,2,0,255,192,127,128,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,127, + 128,255,192,17,38,114,15,252,248,7,255,128,0,255,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,56,0,0,56,0,0,56,0,0,112,0,0,112,0,0, + 224,0,112,192,0,255,0,0,124,0,0,26,30,120,28,1, + 0,255,193,255,128,127,128,124,0,30,0,120,0,30,0,240, + 0,30,1,224,0,30,1,192,0,30,3,128,0,30,7,0, + 0,30,14,0,0,30,28,0,0,30,56,0,0,30,120,0, + 0,30,112,0,0,30,224,0,0,31,224,0,0,30,240,0, + 0,30,120,0,0,30,124,0,0,30,62,0,0,30,30,0, + 0,30,15,0,0,30,7,128,0,30,7,192,0,30,3,224, + 0,30,1,240,0,30,0,248,0,30,0,124,0,30,0,126, + 0,127,128,63,192,255,192,31,0,21,30,90,23,1,0,255, + 192,0,127,128,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,8,30,0,24,30,0,24, + 31,0,48,127,255,240,255,255,240,36,30,150,39,1,0,127, + 0,0,15,224,31,128,0,31,128,15,128,0,31,0,15,128, + 0,63,0,15,192,0,63,0,15,192,0,55,0,15,224,0, + 119,0,14,224,0,119,0,14,240,0,231,0,14,240,0,231, + 0,14,120,0,199,0,14,120,1,199,0,14,56,1,199,0, + 14,60,3,135,0,14,28,3,135,0,14,30,7,7,0,14, + 30,7,7,0,14,15,6,7,0,14,15,14,7,0,14,7, + 14,7,0,14,7,156,7,0,14,3,156,7,0,14,3,216, + 7,0,14,3,248,7,0,14,1,248,7,0,14,1,240,7, + 0,14,0,240,7,0,14,0,224,7,0,63,0,224,31,192, + 255,192,96,127,240,27,30,120,31,2,0,252,0,63,224,124, + 0,15,128,30,0,7,0,31,0,7,0,31,0,7,0,31, + 128,7,0,31,192,7,0,29,192,7,0,28,224,7,0,28, + 240,7,0,28,120,7,0,28,56,7,0,28,60,7,0,28, + 30,7,0,28,14,7,0,28,15,7,0,28,7,135,0,28, + 7,135,0,28,3,199,0,28,1,231,0,28,1,231,0,28, + 0,247,0,28,0,127,0,28,0,127,0,28,0,63,0,28, + 0,31,0,28,0,31,0,28,0,15,0,62,0,7,0,255, + 128,3,0,25,30,120,29,2,0,0,63,0,0,0,255,224, + 0,3,193,240,0,7,0,248,0,14,0,124,0,28,0,62, + 0,60,0,30,0,56,0,31,0,120,0,15,0,120,0,15, + 0,112,0,15,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,240,0,7,128,240,0,7,128,240,0,7, + 128,240,0,7,128,248,0,7,0,120,0,15,0,120,0,15, + 0,124,0,14,0,60,0,28,0,62,0,28,0,31,0,56, + 0,15,128,112,0,7,193,224,0,3,255,128,0,0,254,0, + 0,22,30,90,25,1,0,7,254,0,255,255,192,111,7,224, + 15,1,240,15,0,248,15,0,124,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,120,15,0, + 120,15,0,240,15,131,224,15,127,192,15,62,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,63,192,0,127,240, + 0,28,37,148,29,2,249,0,63,0,0,0,255,224,0,3, + 193,240,0,7,0,248,0,14,0,124,0,28,0,62,0,60, + 0,30,0,56,0,31,0,120,0,15,0,120,0,15,0,112, + 0,15,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,240,0,7,128,240,0,7,128,240,0,7,128,240, + 0,7,128,248,0,7,0,120,0,15,0,120,0,15,0,124, + 0,14,0,60,0,30,0,62,0,28,0,31,0,56,0,15, + 128,112,0,7,193,224,0,3,255,192,0,0,127,128,0,0, + 3,192,0,0,1,224,0,0,0,248,16,0,0,124,48,0, + 0,31,224,0,0,15,224,0,0,3,128,26,30,120,27,1, + 0,7,254,0,0,255,255,192,0,111,7,224,0,15,1,240, + 0,15,0,240,0,15,0,120,0,15,0,120,0,15,0,120, + 0,15,0,120,0,15,0,120,0,15,0,112,0,15,0,240, + 0,15,1,224,0,15,3,192,0,15,255,0,0,15,254,0, + 0,15,14,0,0,15,7,0,0,15,7,128,0,15,3,128, + 0,15,3,192,0,15,1,192,0,15,1,224,0,15,0,240, + 0,15,0,240,0,15,0,120,0,15,0,124,0,15,0,62, + 0,63,192,63,192,127,224,31,0,18,30,90,23,3,0,3, + 248,0,31,254,0,60,63,0,120,14,0,112,4,0,240,0, + 0,240,0,0,240,0,0,248,0,0,252,0,0,127,0,0, + 127,192,0,63,240,0,31,248,0,7,254,0,1,255,0,0, + 127,128,0,31,128,0,15,192,0,7,192,0,3,192,0,3, + 192,0,3,192,128,3,128,192,3,128,224,7,0,240,15,0, + 252,62,0,255,248,0,15,224,0,26,30,120,26,0,0,127, + 255,255,192,127,255,255,192,96,30,1,128,192,30,1,128,192, + 30,1,128,128,30,0,128,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 30,0,0,0,30,0,0,0,30,0,0,0,30,0,0,0, + 127,128,0,1,255,224,0,27,30,120,31,2,0,255,192,127, + 224,127,128,63,192,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,15,0,30,0,15,0,30,0,15, + 0,30,0,15,0,30,0,30,0,15,0,30,0,15,0,30, + 0,7,128,60,0,7,192,120,0,3,224,240,0,1,255,224, + 0,0,63,128,0,30,30,120,31,0,0,255,224,15,252,31, + 0,1,240,15,0,0,224,15,0,1,192,7,0,1,192,7, + 128,1,192,7,128,3,128,3,192,3,128,3,192,3,128,3, + 192,7,0,1,224,7,0,1,224,6,0,0,224,14,0,0, + 240,14,0,0,240,12,0,0,120,28,0,0,120,28,0,0, + 120,56,0,0,60,56,0,0,60,56,0,0,28,112,0,0, + 30,112,0,0,30,112,0,0,15,224,0,0,15,224,0,0, + 15,224,0,0,7,192,0,0,7,192,0,0,3,128,0,0, + 3,0,0,40,30,150,41,0,0,255,224,24,3,255,63,0, + 24,0,252,14,0,28,0,48,15,0,60,0,112,15,0,60, + 0,112,15,0,62,0,112,7,0,126,0,96,7,0,127,0, + 224,7,128,127,0,224,7,128,103,0,224,7,128,231,128,224, + 3,128,231,128,192,3,192,195,129,192,3,193,195,193,192,3, + 193,195,193,192,1,193,129,193,192,1,195,129,225,128,1,227, + 129,227,128,1,227,0,227,128,1,231,0,243,128,0,231,0, + 243,128,0,246,0,115,0,0,254,0,127,0,0,254,0,63, + 0,0,124,0,63,0,0,124,0,62,0,0,124,0,30,0, + 0,124,0,30,0,0,120,0,30,0,0,48,0,8,0,28, + 30,120,30,1,0,255,224,255,224,255,224,255,224,63,0,31, + 0,31,0,30,0,15,128,28,0,7,128,56,0,3,192,120, + 0,3,224,112,0,1,224,224,0,0,241,224,0,0,249,192, + 0,0,127,128,0,0,63,128,0,0,31,0,0,0,31,0, + 0,0,31,0,0,0,63,128,0,0,63,192,0,0,115,224, + 0,0,241,224,0,0,224,240,0,1,192,248,0,3,192,120, + 0,3,128,60,0,7,0,62,0,15,0,31,0,14,0,15, + 0,62,0,15,192,255,192,127,240,255,192,127,240,28,30,120, + 29,0,0,252,0,63,240,254,0,63,240,31,0,15,128,15, + 0,7,0,15,128,14,0,7,192,14,0,3,192,28,0,3, + 224,60,0,1,224,56,0,0,240,120,0,0,248,112,0,0, + 120,224,0,0,125,224,0,0,61,192,0,0,63,192,0,0, + 31,128,0,0,31,128,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,63,192,0,0,255,240,0,22,30,90,25,1, + 0,63,255,252,63,255,252,56,0,120,48,0,248,48,1,240, + 32,1,224,32,3,224,0,3,192,0,7,128,0,15,128,0, + 15,0,0,31,0,0,30,0,0,60,0,0,124,0,0,120, + 0,0,248,0,1,240,0,1,224,0,3,224,0,3,192,0, + 7,128,0,15,128,0,15,0,4,31,0,12,62,0,12,60, + 0,12,124,0,28,127,255,252,255,255,252,11,45,90,15,3, + 248,255,224,255,224,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,255,224,255,224,20,46,138,23,1, + 248,224,0,0,112,0,0,112,0,0,120,0,0,56,0,0, + 56,0,0,28,0,0,28,0,0,30,0,0,14,0,0,14, + 0,0,15,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,192,0,1,192,0,1,192,0,1,224,0,0,224,0, + 0,224,0,0,240,0,0,112,0,0,112,0,0,56,0,0, + 56,0,0,60,0,0,28,0,0,28,0,0,30,0,0,14, + 0,0,14,0,0,7,0,0,7,0,0,7,128,0,3,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,224,0, + 0,224,0,0,240,0,0,112,0,0,48,11,45,90,15,1, + 248,255,224,255,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1, + 224,1,224,1,224,1,224,255,224,255,224,19,23,69,24,2, + 13,0,32,0,0,112,0,0,240,0,1,240,0,1,248,0, + 1,248,0,3,188,0,3,188,0,7,60,0,7,30,0,6, + 30,0,14,14,0,14,15,0,12,15,0,28,7,128,28,7, + 128,24,3,128,56,3,192,48,3,192,112,1,224,112,1,224, + 96,0,224,192,0,192,20,2,6,23,1,251,127,255,240,255, + 255,240,9,10,20,15,1,25,240,0,248,0,120,0,60,0, + 28,0,14,0,7,0,3,0,1,128,1,128,20,22,66,22, + 2,0,1,248,0,15,254,0,28,30,0,120,15,0,112,15, + 0,240,15,0,128,15,0,0,15,0,0,15,0,0,255,0, + 7,255,0,31,143,0,62,15,0,120,15,0,248,15,0,240, + 15,0,240,15,0,240,31,0,240,63,0,120,239,32,127,143, + 240,30,7,128,22,36,108,24,0,0,6,0,0,126,0,0, + 254,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,15,128,30,63,224,30,127,240,30,227,240, + 31,192,248,31,128,248,31,0,124,30,0,124,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 56,30,0,56,30,0,112,30,0,96,31,0,224,15,193,192, + 3,255,0,0,252,0,18,22,66,21,2,0,0,127,0,3, + 255,192,7,7,192,14,1,128,28,0,128,56,0,0,120,0, + 0,112,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,0,248,0,0,120,0,0,120,0,0,60, + 0,64,62,1,192,31,131,128,7,254,0,1,248,0,23,36, + 108,25,2,0,0,0,224,0,15,224,0,15,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,253, + 224,3,255,224,15,15,224,28,3,224,60,1,224,56,1,224, + 120,1,224,112,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,1, + 224,124,3,224,62,5,228,31,25,254,15,240,248,7,192,224, + 18,22,66,22,2,0,0,248,0,7,254,0,14,15,0,28, + 7,128,56,7,128,56,3,192,112,3,192,112,3,192,255,255, + 192,255,255,128,240,0,0,240,0,0,240,0,0,240,0,0, + 248,0,0,120,0,0,120,0,0,124,0,192,62,1,128,31, + 7,0,15,254,0,3,248,0,19,36,108,15,0,0,0,15, + 128,0,63,224,0,99,192,1,193,128,3,128,0,3,128,0, + 7,128,0,7,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,63,254,0,255,252,0,15,8, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,31,224,0,127,248,0,24,33,99,24,0,245, + 0,252,2,3,255,126,7,7,252,14,3,224,30,1,224,28, + 1,240,60,0,240,60,0,240,60,0,240,60,0,240,62,0, + 224,31,1,192,15,131,128,7,255,0,1,252,0,3,192,0, + 7,128,0,15,128,0,15,224,0,7,255,128,3,255,240,7, + 191,252,14,0,254,60,0,31,120,0,15,240,0,15,240,0, + 15,240,0,14,248,0,28,124,0,56,63,128,240,15,255,192, + 1,254,0,23,36,108,26,2,0,6,0,0,126,0,0,254, + 0,0,62,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,7,128,28,31,224,28,49,224,28,96,240,28, + 192,240,29,128,240,31,0,240,31,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,63, + 131,248,255,199,254,10,32,64,13,2,0,28,0,30,0,62, + 0,62,0,28,0,0,0,0,0,0,0,0,0,0,0,6, + 0,126,0,254,0,62,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,63,0,255,192,14,43,86,12,251, + 245,0,56,0,60,0,124,0,124,0,56,0,0,0,0,0, + 0,0,0,0,0,0,12,0,252,1,252,0,124,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,56,0,56,0,120,0,112,0,112,48, + 224,127,128,255,0,124,0,23,36,108,24,1,0,6,0,0, + 126,0,0,254,0,0,62,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,7,252,30,1,240,30,1,192, + 30,3,128,30,7,0,30,14,0,30,56,0,30,112,0,30, + 224,0,31,224,0,30,240,0,30,248,0,30,120,0,30,60, + 0,30,30,0,30,15,0,30,15,128,30,7,192,30,3,224, + 30,1,224,63,0,254,255,192,124,12,36,72,13,1,0,3, + 0,63,0,127,0,31,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,31,128,255,240,36,22,110,39,2,0,12,7,192, + 124,0,254,31,224,255,0,62,49,227,143,0,30,96,247,7, + 128,30,192,254,7,128,31,128,252,7,128,31,0,248,7,128, + 31,0,248,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,30,0,240,7,128,30,0,240,7,128,30,0,240,7, + 128,127,131,252,31,192,255,199,254,63,240,23,22,66,26,2, + 0,12,7,192,254,15,224,62,49,224,30,96,240,30,192,240, + 30,128,240,31,0,240,31,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,127,131,248, + 255,199,254,20,22,66,24,2,0,0,252,0,7,255,0,14, + 15,128,28,7,192,56,3,192,56,3,224,112,1,224,112,1, + 240,240,0,240,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,248,0,224,120,1,224,124,1,192,60,1,192,62, + 3,128,31,7,0,15,254,0,3,240,0,21,33,99,25,2, + 245,12,7,128,254,31,192,62,35,224,30,65,240,30,129,240, + 31,0,240,31,0,248,30,0,248,30,0,120,30,0,120,30, + 0,120,30,0,120,30,0,120,30,0,120,30,0,112,30,0, + 112,30,0,224,30,0,224,31,1,192,31,195,128,30,255,0, + 30,62,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,127,0, + 0,255,224,0,22,33,99,25,2,245,0,252,48,3,255,96, + 7,15,224,30,3,224,28,1,224,56,1,224,120,1,224,112, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,120,1,224,120,1,224,124,3,224, + 62,7,224,31,29,224,15,249,224,3,225,224,0,1,224,0, + 1,224,0,1,224,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,240,0,31,252,17,22,66, + 19,1,0,4,15,0,126,63,128,254,127,128,30,227,128,30, + 195,128,31,129,0,31,128,0,31,0,0,31,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,63, + 128,0,255,224,0,15,22,44,19,2,0,15,192,63,248,120, + 120,112,56,240,16,240,0,248,0,252,0,127,0,63,192,31, + 240,7,248,1,252,0,126,0,62,128,30,128,30,192,30,224, + 60,240,120,255,240,31,192,16,30,60,17,0,0,3,0,7, + 0,15,0,15,0,15,0,15,0,15,0,15,0,63,255,255, + 255,15,4,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,1,7,135,7,254,3,240,24,22,66,25,1,0,6, + 0,112,254,7,240,126,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,31,2,240,15,12,255,15,248,252,3,224, + 112,23,22,66,24,0,0,255,192,254,62,0,60,30,0,56, + 30,0,48,15,0,112,15,0,112,7,0,96,7,128,224,7, + 128,192,3,193,192,3,193,192,1,193,128,1,227,128,1,227, + 0,0,243,0,0,247,0,0,118,0,0,126,0,0,126,0, + 0,60,0,0,60,0,0,16,0,33,22,110,34,0,0,255, + 192,96,63,128,62,0,224,15,0,30,0,224,14,0,30,0, + 240,14,0,14,1,240,12,0,15,1,240,12,0,15,1,248, + 28,0,7,3,248,28,0,7,3,56,24,0,7,131,60,24, + 0,3,135,28,56,0,3,134,30,48,0,3,198,30,48,0, + 1,206,14,112,0,1,204,15,96,0,1,252,15,96,0,1, + 252,7,96,0,0,248,7,224,0,0,248,7,192,0,0,240, + 3,192,0,0,112,3,192,0,0,96,3,0,0,24,22,66, + 24,0,0,127,227,254,127,227,254,31,128,248,15,128,224,7, + 128,192,3,193,192,1,227,128,0,247,0,0,254,0,0,124, + 0,0,60,0,0,62,0,0,127,0,0,239,0,1,199,128, + 3,131,192,3,1,224,7,0,240,14,0,248,62,0,252,255, + 131,255,255,131,255,24,33,99,24,255,245,127,224,255,31,0, + 62,15,0,28,15,0,24,7,128,56,7,128,56,3,128,48, + 3,192,112,3,192,96,1,224,224,1,224,224,0,224,192,0, + 241,192,0,241,192,0,121,128,0,123,128,0,59,0,0,63, + 0,0,63,0,0,30,0,0,30,0,0,12,0,0,12,0, + 0,28,0,0,24,0,0,56,0,0,112,0,0,112,0,0, + 224,0,63,192,0,127,128,0,255,0,0,124,0,0,17,22, + 66,21,2,0,127,255,128,127,255,128,96,15,0,96,15,0, + 64,30,0,64,60,0,0,60,0,0,120,0,0,240,0,0, + 240,0,1,224,0,3,192,0,3,192,0,7,128,0,15,0, + 0,14,0,0,30,0,128,60,0,128,120,0,128,120,1,128, + 255,255,128,255,255,128,13,45,90,16,2,249,0,8,0,56, + 0,112,1,224,1,192,3,128,3,128,7,128,7,128,7,128, + 7,128,7,128,7,192,3,192,3,192,3,192,3,192,3,192, + 3,128,7,128,7,0,30,0,126,0,255,0,7,128,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,7,192,7,128, + 7,128,7,128,7,128,7,128,7,128,3,128,3,192,1,192, + 0,224,0,120,0,24,4,49,49,11,4,246,112,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,224,13,45,90, + 16,1,249,192,0,240,0,56,0,28,0,30,0,14,0,15, + 0,15,0,15,0,15,0,15,0,15,0,31,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,15,0,7,240,3, + 248,3,192,7,0,15,0,14,0,30,0,30,0,30,0,30, + 0,30,0,31,0,15,0,15,0,15,0,15,0,15,0,14, + 0,30,0,28,0,56,0,112,0,224,0,128,0,21,8,24, + 23,1,11,7,128,8,15,224,24,31,240,16,63,252,48,49, + 255,224,96,127,192,64,31,128,192,15,0,255}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=12 h=15 x= 2 y= 8 dx=13 dy= 0 ascent=13 len=26 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9[3248] U8G_SECTION(".progmem.u8g_font_gdr9") = { + 0,23,21,248,251,9,1,255,4,54,32,255,252,13,252,12, + 252,0,0,0,3,0,0,2,11,11,4,1,0,192,192,192, + 192,192,64,128,128,0,128,128,4,5,5,6,1,6,208,144, + 144,144,144,6,8,8,7,1,1,44,40,252,72,80,248,80, + 160,6,11,11,7,0,255,16,60,84,80,112,24,20,148,212, + 120,16,9,9,18,11,1,0,97,0,146,0,148,0,152,0, + 107,0,20,128,36,128,68,128,195,0,9,11,22,10,1,0, + 56,0,72,0,72,0,72,0,112,0,103,128,162,0,146,0, + 138,0,134,0,123,0,2,5,5,4,1,6,192,128,128,128, + 128,3,14,14,5,1,254,32,64,64,128,128,128,128,128,128, + 128,128,64,64,32,3,14,14,5,1,254,128,64,64,32,32, + 32,32,32,32,32,32,64,64,128,5,6,6,7,1,5,32, + 168,112,112,168,32,5,5,5,6,1,2,32,32,248,32,32, + 2,4,4,3,1,254,64,192,64,128,5,1,1,5,0,3, + 248,1,2,2,3,1,0,128,128,7,14,14,7,0,254,6, + 4,4,8,8,8,16,16,32,32,32,64,64,192,5,9,9, + 7,1,0,112,144,136,136,136,136,136,80,112,5,9,9,7, + 1,0,32,224,32,32,32,32,32,32,248,5,9,9,7,1, + 0,56,72,136,8,16,32,64,136,248,6,9,9,7,0,0, + 48,72,136,16,120,4,4,132,120,6,9,9,7,0,0,8, + 24,40,40,72,72,252,8,60,5,9,9,7,1,0,120,128, + 128,240,136,8,8,136,112,5,9,9,7,1,0,24,96,64, + 176,200,136,136,136,112,5,9,9,7,1,0,248,136,8,16, + 16,32,32,96,64,5,9,9,7,1,0,112,200,136,208,112, + 136,136,136,112,5,9,9,7,1,0,112,152,136,136,136,120, + 16,16,224,1,7,7,3,1,0,128,128,0,0,0,128,128, + 2,9,9,3,1,254,128,128,0,0,0,64,192,64,128,6, + 5,5,7,0,2,4,56,64,176,12,6,3,3,7,0,3, + 124,128,252,6,5,5,7,0,2,192,56,4,56,192,5,11, + 11,7,1,0,112,136,136,8,16,16,32,32,32,32,32,11, + 13,26,13,1,253,15,0,48,192,64,64,142,32,178,32,162, + 32,162,32,162,32,162,64,95,128,64,0,48,192,31,0,9, + 9,18,9,0,0,8,0,8,0,20,0,20,0,36,0,62, + 0,34,0,67,0,227,128,7,9,9,9,1,0,248,68,68, + 124,70,66,66,66,252,7,9,9,8,1,0,60,68,128,128, + 128,128,128,70,56,8,9,9,9,0,0,252,66,65,65,65, + 65,65,66,252,6,9,9,7,1,0,252,68,64,120,64,64, + 64,68,252,6,9,9,7,1,0,252,68,64,120,64,64,64, + 64,224,8,9,9,9,1,0,30,100,128,128,143,130,130,66, + 60,9,9,18,10,0,0,227,128,65,0,65,0,65,0,127, + 0,65,0,65,0,65,0,227,128,3,9,9,4,1,0,224, + 64,64,64,64,64,64,64,224,5,12,12,5,255,253,56,16, + 16,16,16,16,16,16,16,16,32,192,8,9,9,9,1,0, + 239,68,72,80,96,80,72,68,231,6,9,9,7,1,0,224, + 64,64,64,64,64,64,68,252,12,9,18,12,0,0,96,96, + 32,192,80,192,81,64,73,64,73,64,70,64,70,64,228,240, + 10,9,18,10,0,0,193,192,96,128,80,128,88,128,76,128, + 70,128,67,128,65,128,224,128,7,9,9,9,1,0,56,68, + 130,130,130,130,130,68,56,7,9,9,8,0,0,252,66,66, + 66,92,96,64,64,224,8,11,11,9,1,254,56,68,130,130, + 130,130,130,68,56,13,3,8,9,9,8,0,0,248,68,68, + 68,88,104,72,68,231,5,9,9,7,1,0,112,152,128,64, + 48,8,136,136,240,7,9,9,8,1,0,254,146,16,16,16, + 16,16,16,56,9,9,18,10,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,9,18,10, + 0,0,227,128,97,0,33,0,34,0,18,0,18,0,28,0, + 12,0,8,0,12,9,18,13,0,0,226,112,66,32,38,32, + 37,32,41,32,41,192,56,192,16,192,16,192,9,9,18,9, + 0,0,247,128,98,0,54,0,28,0,8,0,20,0,34,0, + 35,0,243,128,9,9,18,9,0,0,227,128,98,0,50,0, + 20,0,28,0,8,0,8,0,8,0,28,0,7,9,9,8, + 0,0,126,68,4,8,16,16,34,66,254,3,15,15,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,128,128,224, + 7,14,14,7,0,254,192,64,64,32,32,32,16,16,8,8, + 8,4,4,6,3,15,15,5,1,253,224,32,32,32,32,32, + 32,32,32,32,32,32,32,32,224,6,7,7,7,1,4,32, + 48,80,80,136,136,140,7,1,1,7,0,254,254,3,3,3, + 5,0,8,192,64,32,6,7,7,7,1,0,56,72,136,56, + 200,136,252,7,11,11,8,0,0,192,64,64,64,92,98,66, + 66,66,68,56,5,7,7,7,1,0,120,136,128,128,128,200, + 112,7,11,11,8,1,0,12,4,4,4,60,196,132,132,132, + 204,118,5,7,7,7,1,0,112,72,136,248,128,200,112,5, + 11,11,5,1,0,24,104,64,64,240,64,64,64,64,64,240, + 7,11,11,7,0,252,126,132,132,196,120,96,120,70,130,134, + 120,8,11,11,8,0,0,192,64,64,64,78,114,66,66,66, + 66,231,3,10,10,4,1,0,64,64,0,192,64,64,64,64, + 64,224,4,14,14,4,255,252,16,16,0,48,16,16,16,16, + 16,16,16,16,32,192,7,11,11,8,0,0,192,64,64,64, + 78,72,112,112,80,72,230,3,11,11,4,1,0,192,64,64, + 64,64,64,64,64,64,64,224,11,7,14,11,0,0,221,192, + 102,64,68,64,68,64,68,64,68,64,238,224,8,7,7,8, + 0,0,78,242,66,66,66,66,231,6,7,7,8,1,0,56, + 204,132,132,132,200,112,7,11,11,8,0,252,92,230,66,66, + 66,68,120,64,64,64,224,7,11,11,8,1,252,60,68,132, + 132,132,204,116,4,4,4,14,5,7,7,6,0,0,216,104, + 64,64,64,64,224,4,7,7,6,1,0,96,176,128,96,16, + 144,224,5,9,9,5,0,0,64,64,248,64,64,64,64,64, + 120,8,7,7,8,0,0,198,66,66,66,66,70,59,7,7, + 7,7,0,0,230,68,36,40,56,24,16,10,7,14,11,0, + 0,228,192,68,128,110,128,42,128,50,128,49,0,17,0,7, + 7,7,8,0,0,238,100,56,24,40,68,238,7,11,11,7, + 0,252,230,68,36,36,40,24,16,16,16,32,192,5,7,7, + 7,1,0,248,144,32,32,64,136,248,3,14,14,5,1,254, + 32,64,64,64,32,32,64,224,32,32,64,64,64,32,1,15, + 15,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,3,14,14,5,1,254,128,64,64,64,128,128,192, + 96,128,128,64,64,64,128,7,3,3,7,0,3,50,220,128, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,3,0,0,2,11,11,4,1,252,128,128,0, + 128,128,128,192,192,192,192,192,5,9,9,7,1,0,32,56, + 232,160,160,160,232,112,32,6,9,9,7,1,0,56,68,72, + 64,240,64,64,68,252,3,5,5,7,2,2,160,224,160,160, + 224,7,9,9,7,0,0,206,100,40,56,16,124,16,16,56, + 1,15,15,3,1,253,128,128,128,128,128,128,128,0,128,128, + 128,128,128,128,128,6,11,11,8,1,0,112,144,128,224,184, + 132,68,56,136,136,112,4,2,2,6,1,8,144,144,9,9, + 18,11,1,0,62,0,93,0,166,128,160,128,160,128,160,128, + 182,128,93,0,62,0,4,5,5,4,0,4,96,160,224,224, + 240,5,7,7,7,1,0,104,72,144,176,144,72,104,6,4, + 4,7,1,1,252,4,4,4,5,1,1,5,0,3,248,5, + 6,6,5,0,5,112,136,184,168,168,112,5,1,1,7,1, + 8,248,3,4,4,5,1,5,96,160,160,192,6,7,7,6, + 0,1,16,16,124,16,16,0,252,4,6,6,5,0,4,48, + 208,32,32,80,240,4,6,6,5,0,4,48,80,32,16,144, + 96,3,3,3,5,2,8,96,128,128,8,11,11,8,0,252, + 198,66,66,66,66,70,123,64,64,64,96,8,11,11,9,0, + 254,127,138,138,202,122,10,10,10,10,10,31,1,2,2,2, + 1,4,128,128,2,3,3,3,1,253,128,64,192,3,5,5, + 5,1,5,192,64,64,64,224,3,5,5,4,0,4,96,160, + 160,192,224,6,7,7,7,1,0,160,80,72,44,72,80,160, + 8,9,9,9,1,0,194,68,68,72,178,22,42,79,199,7, + 9,9,9,1,0,194,68,72,72,182,26,36,74,206,9,9, + 18,9,0,0,49,0,82,0,52,0,20,0,233,0,11,0, + 21,0,39,128,99,128,5,11,11,7,1,252,32,32,32,32, + 32,64,128,128,136,136,112,9,12,24,9,0,0,48,0,12, + 0,0,0,8,0,8,0,20,0,20,0,36,0,62,0,34, + 0,67,0,227,128,9,12,24,9,0,0,6,0,24,0,0, + 0,8,0,8,0,20,0,20,0,36,0,62,0,34,0,67, + 0,227,128,9,12,24,9,0,0,28,0,34,0,0,0,8, + 0,8,0,20,0,20,0,36,0,62,0,34,0,67,0,227, + 128,9,12,24,9,0,0,58,0,60,0,0,0,8,0,8, + 0,20,0,20,0,36,0,62,0,34,0,67,0,227,128,9, + 11,22,9,0,0,36,0,36,0,8,0,8,0,20,0,20, + 0,36,0,62,0,34,0,67,0,227,128,9,13,26,9,0, + 0,12,0,20,0,20,0,8,0,8,0,8,0,20,0,20, + 0,36,0,62,0,34,0,67,0,227,128,11,9,18,12,0, + 0,31,224,10,32,18,0,31,192,18,0,34,0,34,0,34, + 32,231,224,6,12,12,8,1,253,60,68,128,128,128,128,128, + 68,120,32,16,48,6,12,12,7,1,0,224,16,0,252,68, + 64,120,64,64,64,68,252,6,12,12,7,1,0,24,96,0, + 252,68,64,120,64,64,64,68,252,6,12,12,7,1,0,112, + 136,0,252,68,64,120,64,64,64,68,252,6,11,11,7,1, + 0,144,144,124,68,64,120,64,64,64,68,252,4,12,12,4, + 0,0,192,32,0,112,32,32,32,32,32,32,32,112,4,12, + 12,4,1,0,112,128,0,224,64,64,64,64,64,64,64,224, + 4,12,12,4,0,0,96,144,0,112,32,32,32,32,32,32, + 32,112,4,11,11,4,0,0,144,144,96,32,32,32,32,32, + 32,32,112,8,9,9,9,0,0,252,66,65,65,241,65,65, + 66,252,10,12,24,10,0,0,26,0,60,0,0,0,193,192, + 96,128,80,128,88,128,76,128,70,128,67,128,65,128,224,128, + 7,12,12,9,1,0,96,24,0,56,68,130,130,130,130,130, + 68,56,7,12,12,9,1,0,12,48,0,56,68,130,130,130, + 130,130,68,56,7,12,12,9,1,0,56,68,0,56,68,130, + 130,130,130,130,68,56,7,12,12,9,1,0,52,120,0,56, + 68,130,130,130,130,130,68,56,7,11,11,9,1,0,72,72, + 56,68,130,130,130,130,130,68,56,4,4,4,6,1,2,144, + 96,96,144,7,9,9,9,1,0,58,68,138,138,146,162,194, + 68,184,9,12,24,10,0,0,56,0,4,0,0,0,227,128, + 65,0,65,0,65,0,65,0,65,0,65,0,98,0,60,0, + 9,12,24,10,0,0,6,0,24,0,0,0,227,128,65,0, + 65,0,65,0,65,0,65,0,65,0,98,0,60,0,9,12, + 24,10,0,0,28,0,34,0,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,11,22,10, + 0,0,34,0,36,0,195,128,65,0,65,0,65,0,65,0, + 65,0,65,0,98,0,60,0,9,12,24,9,0,0,6,0, + 24,0,0,0,227,128,98,0,50,0,20,0,28,0,8,0, + 8,0,8,0,28,0,7,9,9,8,0,0,224,124,70,66, + 66,66,100,92,224,8,11,11,8,0,0,28,34,66,66,68, + 72,76,67,65,73,206,6,11,11,7,1,0,192,96,32,0, + 56,72,136,56,200,136,252,6,11,11,7,1,0,24,16,32, + 0,56,72,136,56,200,136,252,6,11,11,7,1,0,32,80, + 136,0,56,72,136,56,200,136,252,6,10,10,7,1,0,104, + 176,0,56,72,136,56,200,136,252,6,10,10,7,1,0,144, + 144,0,56,72,136,56,200,136,252,6,11,11,7,1,0,48, + 80,80,48,56,72,136,56,200,136,252,9,7,14,10,1,0, + 63,0,76,128,136,128,63,128,200,0,136,128,247,0,5,10, + 10,7,1,253,120,136,128,128,128,200,112,32,16,48,5,11, + 11,7,1,0,64,32,32,16,112,72,136,248,128,200,112,5, + 11,11,7,1,0,24,16,32,0,112,72,136,248,128,200,112, + 5,11,11,7,1,0,32,80,136,0,112,72,136,248,128,200, + 112,5,10,10,7,1,0,144,152,0,112,72,136,248,128,200, + 112,4,11,11,4,0,0,128,64,32,0,96,32,32,32,32, + 32,112,3,11,11,4,1,0,32,64,128,0,192,64,64,64, + 64,64,224,4,11,11,4,0,0,96,80,144,0,96,32,32, + 32,32,32,112,4,10,10,4,0,0,144,144,0,96,32,32, + 32,32,32,112,5,11,11,7,1,0,200,48,80,16,120,136, + 136,136,136,144,112,8,10,10,8,0,0,18,108,0,78,242, + 66,66,66,66,231,6,11,11,8,1,0,64,32,16,0,56, + 204,132,132,132,200,112,6,11,11,8,1,0,8,16,32,0, + 56,204,132,132,132,200,112,6,11,11,8,1,0,48,80,136, + 0,56,204,132,132,132,200,112,6,10,10,8,1,0,104,152, + 0,56,204,132,132,132,200,112,6,10,10,8,1,0,136,136, + 0,56,204,132,132,132,200,112,6,4,4,6,0,2,16,124, + 128,16,6,7,7,8,1,0,60,204,148,164,164,200,240,8, + 11,11,8,0,0,32,16,8,0,198,66,66,66,66,70,59, + 8,11,11,8,0,0,4,8,16,0,198,66,66,66,66,70, + 59,8,11,11,8,0,0,24,24,36,0,198,66,66,66,66, + 70,59,8,10,10,8,0,0,36,68,0,198,66,66,66,66, + 70,59,7,15,15,7,0,252,4,8,16,0,230,68,36,36, + 40,24,16,16,16,32,192,7,15,15,8,0,252,192,64,64, + 64,76,114,66,66,66,68,120,64,64,64,224,7,14,14,7, + 0,252,68,68,0,230,68,36,36,40,24,16,16,16,32,192 + }; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 7 h=14 x= 1 y= 5 dx= 7 dy= 0 ascent=12 len=14 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9n[235] U8G_SECTION(".progmem.u8g_font_gdr9n") = { + 0,23,21,248,251,9,0,0,0,0,42,57,0,12,254,9, + 0,5,6,6,7,1,5,32,168,112,112,168,32,5,5,5, + 6,1,2,32,32,248,32,32,2,4,4,3,1,254,64,192, + 64,128,5,1,1,5,0,3,248,1,2,2,3,1,0,128, + 128,7,14,14,7,0,254,6,4,4,8,8,8,16,16,32, + 32,32,64,64,192,5,9,9,7,1,0,112,144,136,136,136, + 136,136,80,112,5,9,9,7,1,0,32,224,32,32,32,32, + 32,32,248,5,9,9,7,1,0,56,72,136,8,16,32,64, + 136,248,6,9,9,7,0,0,48,72,136,16,120,4,4,132, + 120,6,9,9,7,0,0,8,24,40,40,72,72,252,8,60, + 5,9,9,7,1,0,120,128,128,240,136,8,8,136,112,5, + 9,9,7,1,0,24,96,64,176,200,136,136,136,112,5,9, + 9,7,1,0,248,136,8,16,16,32,32,96,64,5,9,9, + 7,1,0,112,200,136,208,112,136,136,136,112,5,9,9,7, + 1,0,112,152,136,136,136,120,16,16,224}; +/* + Fontname: -FreeType-Gentium Basic-Medium-R-Normal--15-150-72-72-P-70-ISO10646-1 + Copyright: Copyright (c) SIL International, 2003-2008. + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=12 h=15 x= 1 y= 8 dx=13 dy= 0 ascent=12 len=26 + Font Bounding box w=23 h=21 x=-8 y=-5 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_gdr9r[1553] U8G_SECTION(".progmem.u8g_font_gdr9r") = { + 0,23,21,248,251,9,1,255,4,54,32,127,252,12,252,12, + 252,0,0,0,3,0,0,2,11,11,4,1,0,192,192,192, + 192,192,64,128,128,0,128,128,4,5,5,6,1,6,208,144, + 144,144,144,6,8,8,7,1,1,44,40,252,72,80,248,80, + 160,6,11,11,7,0,255,16,60,84,80,112,24,20,148,212, + 120,16,9,9,18,11,1,0,97,0,146,0,148,0,152,0, + 107,0,20,128,36,128,68,128,195,0,9,11,22,10,1,0, + 56,0,72,0,72,0,72,0,112,0,103,128,162,0,146,0, + 138,0,134,0,123,0,2,5,5,4,1,6,192,128,128,128, + 128,3,14,14,5,1,254,32,64,64,128,128,128,128,128,128, + 128,128,64,64,32,3,14,14,5,1,254,128,64,64,32,32, + 32,32,32,32,32,32,64,64,128,5,6,6,7,1,5,32, + 168,112,112,168,32,5,5,5,6,1,2,32,32,248,32,32, + 2,4,4,3,1,254,64,192,64,128,5,1,1,5,0,3, + 248,1,2,2,3,1,0,128,128,7,14,14,7,0,254,6, + 4,4,8,8,8,16,16,32,32,32,64,64,192,5,9,9, + 7,1,0,112,144,136,136,136,136,136,80,112,5,9,9,7, + 1,0,32,224,32,32,32,32,32,32,248,5,9,9,7,1, + 0,56,72,136,8,16,32,64,136,248,6,9,9,7,0,0, + 48,72,136,16,120,4,4,132,120,6,9,9,7,0,0,8, + 24,40,40,72,72,252,8,60,5,9,9,7,1,0,120,128, + 128,240,136,8,8,136,112,5,9,9,7,1,0,24,96,64, + 176,200,136,136,136,112,5,9,9,7,1,0,248,136,8,16, + 16,32,32,96,64,5,9,9,7,1,0,112,200,136,208,112, + 136,136,136,112,5,9,9,7,1,0,112,152,136,136,136,120, + 16,16,224,1,7,7,3,1,0,128,128,0,0,0,128,128, + 2,9,9,3,1,254,128,128,0,0,0,64,192,64,128,6, + 5,5,7,0,2,4,56,64,176,12,6,3,3,7,0,3, + 124,128,252,6,5,5,7,0,2,192,56,4,56,192,5,11, + 11,7,1,0,112,136,136,8,16,16,32,32,32,32,32,11, + 13,26,13,1,253,15,0,48,192,64,64,142,32,178,32,162, + 32,162,32,162,32,162,64,95,128,64,0,48,192,31,0,9, + 9,18,9,0,0,8,0,8,0,20,0,20,0,36,0,62, + 0,34,0,67,0,227,128,7,9,9,9,1,0,248,68,68, + 124,70,66,66,66,252,7,9,9,8,1,0,60,68,128,128, + 128,128,128,70,56,8,9,9,9,0,0,252,66,65,65,65, + 65,65,66,252,6,9,9,7,1,0,252,68,64,120,64,64, + 64,68,252,6,9,9,7,1,0,252,68,64,120,64,64,64, + 64,224,8,9,9,9,1,0,30,100,128,128,143,130,130,66, + 60,9,9,18,10,0,0,227,128,65,0,65,0,65,0,127, + 0,65,0,65,0,65,0,227,128,3,9,9,4,1,0,224, + 64,64,64,64,64,64,64,224,5,12,12,5,255,253,56,16, + 16,16,16,16,16,16,16,16,32,192,8,9,9,9,1,0, + 239,68,72,80,96,80,72,68,231,6,9,9,7,1,0,224, + 64,64,64,64,64,64,68,252,12,9,18,12,0,0,96,96, + 32,192,80,192,81,64,73,64,73,64,70,64,70,64,228,240, + 10,9,18,10,0,0,193,192,96,128,80,128,88,128,76,128, + 70,128,67,128,65,128,224,128,7,9,9,9,1,0,56,68, + 130,130,130,130,130,68,56,7,9,9,8,0,0,252,66,66, + 66,92,96,64,64,224,8,11,11,9,1,254,56,68,130,130, + 130,130,130,68,56,13,3,8,9,9,8,0,0,248,68,68, + 68,88,104,72,68,231,5,9,9,7,1,0,112,152,128,64, + 48,8,136,136,240,7,9,9,8,1,0,254,146,16,16,16, + 16,16,16,56,9,9,18,10,0,0,227,128,65,0,65,0, + 65,0,65,0,65,0,65,0,98,0,60,0,9,9,18,10, + 0,0,227,128,97,0,33,0,34,0,18,0,18,0,28,0, + 12,0,8,0,12,9,18,13,0,0,226,112,66,32,38,32, + 37,32,41,32,41,192,56,192,16,192,16,192,9,9,18,9, + 0,0,247,128,98,0,54,0,28,0,8,0,20,0,34,0, + 35,0,243,128,9,9,18,9,0,0,227,128,98,0,50,0, + 20,0,28,0,8,0,8,0,8,0,28,0,7,9,9,8, + 0,0,126,68,4,8,16,16,34,66,254,3,15,15,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,128,128,224, + 7,14,14,7,0,254,192,64,64,32,32,32,16,16,8,8, + 8,4,4,6,3,15,15,5,1,253,224,32,32,32,32,32, + 32,32,32,32,32,32,32,32,224,6,7,7,7,1,4,32, + 48,80,80,136,136,140,7,1,1,7,0,254,254,3,3,3, + 5,0,8,192,64,32,6,7,7,7,1,0,56,72,136,56, + 200,136,252,7,11,11,8,0,0,192,64,64,64,92,98,66, + 66,66,68,56,5,7,7,7,1,0,120,136,128,128,128,200, + 112,7,11,11,8,1,0,12,4,4,4,60,196,132,132,132, + 204,118,5,7,7,7,1,0,112,72,136,248,128,200,112,5, + 11,11,5,1,0,24,104,64,64,240,64,64,64,64,64,240, + 7,11,11,7,0,252,126,132,132,196,120,96,120,70,130,134, + 120,8,11,11,8,0,0,192,64,64,64,78,114,66,66,66, + 66,231,3,10,10,4,1,0,64,64,0,192,64,64,64,64, + 64,224,4,14,14,4,255,252,16,16,0,48,16,16,16,16, + 16,16,16,16,32,192,7,11,11,8,0,0,192,64,64,64, + 78,72,112,112,80,72,230,3,11,11,4,1,0,192,64,64, + 64,64,64,64,64,64,64,224,11,7,14,11,0,0,221,192, + 102,64,68,64,68,64,68,64,68,64,238,224,8,7,7,8, + 0,0,78,242,66,66,66,66,231,6,7,7,8,1,0,56, + 204,132,132,132,200,112,7,11,11,8,0,252,92,230,66,66, + 66,68,120,64,64,64,224,7,11,11,8,1,252,60,68,132, + 132,132,204,116,4,4,4,14,5,7,7,6,0,0,216,104, + 64,64,64,64,224,4,7,7,6,1,0,96,176,128,96,16, + 144,224,5,9,9,5,0,0,64,64,248,64,64,64,64,64, + 120,8,7,7,8,0,0,198,66,66,66,66,70,59,7,7, + 7,7,0,0,230,68,36,40,56,24,16,10,7,14,11,0, + 0,228,192,68,128,110,128,42,128,50,128,49,0,17,0,7, + 7,7,8,0,0,238,100,56,24,40,68,238,7,11,11,7, + 0,252,230,68,36,36,40,24,16,16,16,32,192,5,7,7, + 7,1,0,248,144,32,32,64,136,248,3,14,14,5,1,254, + 32,64,64,64,32,32,64,224,32,32,64,64,64,32,1,15, + 15,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,3,14,14,5,1,254,128,64,64,64,128,128,192, + 96,128,128,64,64,64,128,7,3,3,7,0,3,50,220,128, + 255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=11 x= 1 y= 7 dx=11 dy= 0 ascent=11 len=18 + Font Bounding box w=12 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB08[2677] U8G_SECTION(".progmem.u8g_font_helvB08") = { + 0,12,19,255,251,8,1,182,3,122,32,255,254,11,254,8, + 254,0,0,0,3,0,1,2,8,8,4,1,0,192,192,192, + 192,128,128,0,192,3,3,3,5,1,5,160,160,160,7,7, + 7,6,255,0,40,40,126,40,252,80,80,5,10,10,6,0, + 255,32,112,168,224,112,56,40,168,112,32,7,8,8,8,0, + 0,98,180,104,16,16,44,86,140,7,8,8,8,0,0,112, + 216,216,112,222,204,220,118,1,3,3,3,1,5,128,128,128, + 3,10,10,4,0,254,32,96,64,192,192,192,192,64,96,32, + 3,10,10,4,0,254,128,192,64,96,96,96,96,64,192,128, + 3,3,3,4,0,5,160,64,160,6,5,5,6,0,1,48, + 48,252,48,48,2,4,4,3,0,254,192,192,64,128,4,1, + 1,5,0,3,240,2,2,2,3,0,0,192,192,4,8,8, + 4,0,0,16,16,32,32,64,64,128,128,5,8,8,6,0, + 0,112,216,216,216,216,216,216,112,3,8,8,6,1,0,96, + 224,96,96,96,96,96,96,5,8,8,6,0,0,112,216,24, + 24,48,96,192,248,5,8,8,6,0,0,112,216,24,48,24, + 24,216,112,6,8,8,6,0,0,8,24,56,88,152,252,24, + 24,5,8,8,6,0,0,248,192,192,240,24,152,216,112,5, + 8,8,6,0,0,112,216,192,240,216,216,216,112,5,8,8, + 6,0,0,248,24,24,48,48,96,96,96,5,8,8,6,0, + 0,112,216,216,112,216,216,216,112,5,8,8,6,0,0,112, + 216,216,216,120,24,216,112,2,6,6,3,0,0,192,192,0, + 0,192,192,2,8,8,3,0,254,192,192,0,0,192,192,64, + 128,4,5,5,5,0,1,48,96,192,96,48,5,3,3,6, + 0,2,248,0,248,4,5,5,5,0,1,192,96,48,96,192, + 5,8,8,6,0,0,112,216,24,48,96,96,0,96,10,9, + 18,11,0,255,31,0,96,128,77,64,146,64,162,64,164,128, + 155,0,64,0,62,0,7,8,8,8,0,0,56,56,108,108, + 108,254,198,198,6,8,8,7,0,0,248,204,204,248,204,204, + 204,248,7,8,8,8,0,0,60,102,194,192,192,194,102,60, + 6,8,8,7,0,0,240,216,204,204,204,204,216,240,5,8, + 8,6,0,0,248,192,192,248,192,192,192,248,5,8,8,6, + 0,0,248,192,192,240,192,192,192,192,7,8,8,8,0,0, + 60,102,194,192,206,198,102,58,6,8,8,7,0,0,204,204, + 204,252,204,204,204,204,2,8,8,3,0,0,192,192,192,192, + 192,192,192,192,5,8,8,6,0,0,24,24,24,24,24,24, + 216,112,7,8,8,7,0,0,204,216,240,224,240,216,204,198, + 5,8,8,6,0,0,192,192,192,192,192,192,192,248,9,8, + 16,10,0,0,193,128,227,128,227,128,247,128,213,128,221,128, + 201,128,201,128,7,8,8,8,0,0,198,230,230,214,214,206, + 206,198,7,8,8,8,0,0,56,108,198,198,198,198,108,56, + 6,8,8,7,0,0,248,204,204,204,248,192,192,192,7,9, + 9,8,0,255,56,108,198,198,198,214,108,60,2,6,8,8, + 7,0,0,248,204,204,204,248,204,204,204,6,8,8,7,0, + 0,120,204,224,120,28,140,204,120,6,8,8,7,0,0,252, + 48,48,48,48,48,48,48,6,8,8,7,0,0,204,204,204, + 204,204,204,204,120,7,8,8,8,0,0,198,198,108,108,108, + 56,56,16,10,8,16,11,0,0,204,192,204,192,204,192,109, + 128,109,128,127,128,51,0,51,0,7,8,8,8,0,0,198, + 198,108,56,56,108,198,198,8,8,8,9,0,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,252,12,24,48,112, + 96,192,252,3,10,10,4,0,254,224,192,192,192,192,192,192, + 192,192,224,4,8,8,4,0,0,128,128,64,64,32,32,16, + 16,3,10,10,4,0,254,224,96,96,96,96,96,96,96,96, + 224,4,4,4,5,0,4,96,240,144,144,6,1,1,6,0, + 254,252,2,2,2,3,0,7,128,64,6,6,6,6,0,0, + 112,152,120,216,216,108,5,8,8,6,0,0,192,192,240,216, + 216,216,216,240,4,6,6,5,0,0,112,208,192,192,208,112, + 5,8,8,6,0,0,24,24,120,216,216,216,216,120,5,6, + 6,6,0,0,112,216,248,192,216,112,5,8,8,4,255,0, + 56,96,240,96,96,96,96,96,5,8,8,6,0,254,104,216, + 216,216,216,120,24,112,5,8,8,6,0,0,192,192,240,216, + 216,216,216,216,2,8,8,3,0,0,192,0,192,192,192,192, + 192,192,3,10,10,3,255,254,96,0,96,96,96,96,96,96, + 96,192,6,8,8,6,0,0,192,192,216,240,224,240,216,204, + 2,8,8,3,0,0,192,192,192,192,192,192,192,192,8,6, + 6,9,0,0,182,219,219,219,219,219,5,6,6,6,0,0, + 176,216,216,216,216,216,5,6,6,6,0,0,112,216,216,216, + 216,112,5,8,8,6,0,254,176,216,216,216,216,240,192,192, + 5,8,8,6,0,254,104,216,216,216,216,120,24,24,4,6, + 6,4,0,0,176,224,192,192,192,192,5,6,6,6,0,0, + 112,216,112,24,216,112,4,8,8,4,255,0,96,96,240,96, + 96,96,96,48,5,6,6,6,0,0,216,216,216,216,216,104, + 5,6,6,6,0,0,216,216,216,80,112,32,7,6,6,8, + 0,0,214,214,214,108,108,108,6,6,6,7,0,0,204,120, + 48,120,204,204,5,8,8,6,0,254,216,216,216,216,120,48, + 48,96,5,6,6,6,0,0,248,24,48,96,192,248,4,10, + 10,5,0,254,48,96,96,96,192,96,96,96,96,48,1,10, + 10,3,1,254,128,128,128,128,128,128,128,128,128,128,4,10, + 10,5,0,254,192,96,96,96,48,96,96,96,96,192,5,2, + 2,6,0,3,104,176,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,3,0,1,2,8,8, + 4,1,254,192,0,64,64,192,192,192,192,5,8,8,6,0, + 255,16,112,216,160,160,216,112,64,5,8,8,6,0,0,56, + 104,96,240,96,96,104,216,6,6,6,6,0,1,132,120,72, + 72,120,132,6,8,8,7,0,0,132,132,204,72,252,48,252, + 48,1,10,10,3,1,254,128,128,128,128,0,0,128,128,128, + 128,5,10,10,6,0,254,112,200,224,112,152,200,112,56,152, + 112,3,1,1,3,0,7,160,8,8,8,10,1,0,60,66, + 153,165,161,157,66,60,3,5,5,5,1,3,224,32,160,0, + 224,6,3,3,7,0,1,108,216,108,5,3,3,7,1,2, + 248,8,8,4,1,1,5,0,3,240,8,8,8,10,1,0, + 60,66,189,165,185,165,66,60,3,1,1,3,0,7,224,3, + 3,3,4,0,5,96,160,192,6,7,7,6,0,0,48,48, + 252,48,48,0,252,3,4,4,3,0,4,96,160,64,224,3, + 4,4,3,0,4,224,64,32,192,2,2,2,3,0,7,64, + 128,5,8,8,6,0,254,216,216,216,216,216,232,192,192,6, + 10,10,6,0,254,124,232,232,232,104,40,40,40,40,40,2, + 1,1,3,0,3,192,2,2,2,3,0,254,64,192,2,4, + 4,3,0,4,64,192,64,64,3,5,5,5,1,3,224,160, + 224,0,224,6,3,3,7,0,1,216,108,216,8,8,8,9, + 0,0,68,196,72,72,18,38,47,66,7,8,8,9,0,0, + 68,196,72,72,22,42,36,78,8,8,8,9,0,0,228,68, + 40,200,18,38,47,66,5,8,8,6,0,254,48,0,48,48, + 96,192,216,112,7,11,11,8,0,0,32,16,0,56,56,108, + 108,108,254,198,198,7,11,11,8,0,0,8,16,0,56,56, + 108,108,108,254,198,198,7,11,11,8,0,0,16,40,0,56, + 56,108,108,108,254,198,198,7,11,11,8,0,0,20,40,0, + 56,56,108,108,108,254,198,198,7,10,10,8,0,0,40,0, + 56,56,108,108,108,254,198,198,7,11,11,8,0,0,16,40, + 16,56,56,108,108,108,254,198,198,9,8,16,10,0,0,63, + 128,60,0,108,0,111,128,108,0,252,0,204,0,207,128,7, + 10,10,8,0,254,60,102,194,192,192,194,102,60,16,48,5, + 11,11,6,0,0,64,32,0,248,192,192,248,192,192,192,248, + 5,11,11,6,0,0,16,32,0,248,192,192,248,192,192,192, + 248,5,11,11,6,0,0,32,80,0,248,192,192,248,192,192, + 192,248,5,10,10,6,0,0,80,0,248,192,192,248,192,192, + 192,248,2,11,11,3,0,0,128,64,0,192,192,192,192,192, + 192,192,192,2,11,11,3,0,0,64,128,0,192,192,192,192, + 192,192,192,192,3,11,11,3,255,0,64,160,0,96,96,96, + 96,96,96,96,96,4,10,10,3,255,0,144,0,96,96,96, + 96,96,96,96,96,7,8,8,7,255,0,120,108,102,246,102, + 102,108,120,7,11,11,8,0,0,20,40,0,198,230,230,214, + 214,206,206,198,7,11,11,8,0,0,16,8,0,56,108,198, + 198,198,198,108,56,7,11,11,8,0,0,8,16,0,56,108, + 198,198,198,198,108,56,7,11,11,8,0,0,16,40,0,56, + 108,198,198,198,198,108,56,7,11,11,8,0,0,20,40,0, + 56,108,198,198,198,198,108,56,7,10,10,8,0,0,40,0, + 56,108,198,198,198,198,108,56,6,5,5,6,0,1,204,120, + 48,120,204,7,8,8,8,0,0,58,108,206,214,214,230,108, + 184,6,11,11,7,0,0,32,16,0,204,204,204,204,204,204, + 204,120,6,11,11,7,0,0,8,16,0,204,204,204,204,204, + 204,204,120,6,11,11,7,0,0,32,80,0,204,204,204,204, + 204,204,204,120,6,10,10,7,0,0,72,0,204,204,204,204, + 204,204,204,120,8,11,11,9,0,0,4,8,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,192,248,204,204,204, + 248,192,192,5,8,8,6,0,0,112,200,200,208,200,200,200, + 208,6,9,9,6,0,0,32,16,0,112,152,120,216,216,108, + 6,9,9,6,0,0,16,32,0,112,152,120,216,216,108,6, + 9,9,6,0,0,32,80,0,112,152,120,216,216,108,6,9, + 9,6,0,0,40,80,0,112,152,120,216,216,108,6,8,8, + 6,0,0,80,0,112,152,120,216,216,108,6,9,9,6,0, + 0,32,80,32,112,152,120,216,216,108,8,6,6,9,0,0, + 126,155,127,216,219,110,4,8,8,5,0,254,112,208,192,192, + 208,112,32,96,5,9,9,6,0,0,64,32,0,112,216,248, + 192,216,112,5,9,9,6,0,0,16,32,0,112,216,248,192, + 216,112,5,9,9,6,0,0,32,80,0,112,216,248,192,216, + 112,5,8,8,6,0,0,80,0,112,216,248,192,216,112,2, + 9,9,3,0,0,128,64,0,192,192,192,192,192,192,2,9, + 9,3,0,0,64,128,0,192,192,192,192,192,192,3,9,9, + 3,0,0,64,160,0,192,192,192,192,192,192,3,8,8,3, + 0,0,160,0,192,192,192,192,192,192,5,9,9,6,0,0, + 80,96,160,112,216,216,216,216,112,5,9,9,6,0,0,80, + 160,0,176,216,216,216,216,216,5,9,9,6,0,0,64,32, + 0,112,216,216,216,216,112,5,9,9,6,0,0,16,32,0, + 112,216,216,216,216,112,5,9,9,6,0,0,32,80,0,112, + 216,216,216,216,112,5,9,9,6,0,0,80,160,0,112,216, + 216,216,216,112,5,8,8,6,0,0,80,0,112,216,216,216, + 216,112,6,5,5,6,0,1,48,0,252,0,48,7,6,6, + 6,255,0,58,108,124,108,108,184,5,9,9,6,0,0,64, + 32,0,216,216,216,216,216,104,5,9,9,6,0,0,16,32, + 0,216,216,216,216,216,104,5,9,9,6,0,0,32,80,0, + 216,216,216,216,216,104,5,8,8,6,0,0,80,0,216,216, + 216,216,216,104,5,11,11,6,0,254,16,32,0,216,216,216, + 216,120,48,48,96,5,10,10,6,0,254,192,192,240,216,200, + 200,216,240,192,192,5,10,10,6,0,254,80,0,216,216,216, + 216,120,48,48,96}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=10 x= 1 y= 7 dx=11 dy= 0 ascent= 9 len=18 + Font Bounding box w=12 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB08r[1287] U8G_SECTION(".progmem.u8g_font_helvB08r") = { + 0,12,19,255,251,8,1,182,3,122,32,127,254,9,254,8, + 254,0,0,0,3,0,1,2,8,8,4,1,0,192,192,192, + 192,128,128,0,192,3,3,3,5,1,5,160,160,160,7,7, + 7,6,255,0,40,40,126,40,252,80,80,5,10,10,6,0, + 255,32,112,168,224,112,56,40,168,112,32,7,8,8,8,0, + 0,98,180,104,16,16,44,86,140,7,8,8,8,0,0,112, + 216,216,112,222,204,220,118,1,3,3,3,1,5,128,128,128, + 3,10,10,4,0,254,32,96,64,192,192,192,192,64,96,32, + 3,10,10,4,0,254,128,192,64,96,96,96,96,64,192,128, + 3,3,3,4,0,5,160,64,160,6,5,5,6,0,1,48, + 48,252,48,48,2,4,4,3,0,254,192,192,64,128,4,1, + 1,5,0,3,240,2,2,2,3,0,0,192,192,4,8,8, + 4,0,0,16,16,32,32,64,64,128,128,5,8,8,6,0, + 0,112,216,216,216,216,216,216,112,3,8,8,6,1,0,96, + 224,96,96,96,96,96,96,5,8,8,6,0,0,112,216,24, + 24,48,96,192,248,5,8,8,6,0,0,112,216,24,48,24, + 24,216,112,6,8,8,6,0,0,8,24,56,88,152,252,24, + 24,5,8,8,6,0,0,248,192,192,240,24,152,216,112,5, + 8,8,6,0,0,112,216,192,240,216,216,216,112,5,8,8, + 6,0,0,248,24,24,48,48,96,96,96,5,8,8,6,0, + 0,112,216,216,112,216,216,216,112,5,8,8,6,0,0,112, + 216,216,216,120,24,216,112,2,6,6,3,0,0,192,192,0, + 0,192,192,2,8,8,3,0,254,192,192,0,0,192,192,64, + 128,4,5,5,5,0,1,48,96,192,96,48,5,3,3,6, + 0,2,248,0,248,4,5,5,5,0,1,192,96,48,96,192, + 5,8,8,6,0,0,112,216,24,48,96,96,0,96,10,9, + 18,11,0,255,31,0,96,128,77,64,146,64,162,64,164,128, + 155,0,64,0,62,0,7,8,8,8,0,0,56,56,108,108, + 108,254,198,198,6,8,8,7,0,0,248,204,204,248,204,204, + 204,248,7,8,8,8,0,0,60,102,194,192,192,194,102,60, + 6,8,8,7,0,0,240,216,204,204,204,204,216,240,5,8, + 8,6,0,0,248,192,192,248,192,192,192,248,5,8,8,6, + 0,0,248,192,192,240,192,192,192,192,7,8,8,8,0,0, + 60,102,194,192,206,198,102,58,6,8,8,7,0,0,204,204, + 204,252,204,204,204,204,2,8,8,3,0,0,192,192,192,192, + 192,192,192,192,5,8,8,6,0,0,24,24,24,24,24,24, + 216,112,7,8,8,7,0,0,204,216,240,224,240,216,204,198, + 5,8,8,6,0,0,192,192,192,192,192,192,192,248,9,8, + 16,10,0,0,193,128,227,128,227,128,247,128,213,128,221,128, + 201,128,201,128,7,8,8,8,0,0,198,230,230,214,214,206, + 206,198,7,8,8,8,0,0,56,108,198,198,198,198,108,56, + 6,8,8,7,0,0,248,204,204,204,248,192,192,192,7,9, + 9,8,0,255,56,108,198,198,198,214,108,60,2,6,8,8, + 7,0,0,248,204,204,204,248,204,204,204,6,8,8,7,0, + 0,120,204,224,120,28,140,204,120,6,8,8,7,0,0,252, + 48,48,48,48,48,48,48,6,8,8,7,0,0,204,204,204, + 204,204,204,204,120,7,8,8,8,0,0,198,198,108,108,108, + 56,56,16,10,8,16,11,0,0,204,192,204,192,204,192,109, + 128,109,128,127,128,51,0,51,0,7,8,8,8,0,0,198, + 198,108,56,56,108,198,198,8,8,8,9,0,0,195,195,102, + 102,60,24,24,24,6,8,8,7,0,0,252,12,24,48,112, + 96,192,252,3,10,10,4,0,254,224,192,192,192,192,192,192, + 192,192,224,4,8,8,4,0,0,128,128,64,64,32,32,16, + 16,3,10,10,4,0,254,224,96,96,96,96,96,96,96,96, + 224,4,4,4,5,0,4,96,240,144,144,6,1,1,6,0, + 254,252,2,2,2,3,0,7,128,64,6,6,6,6,0,0, + 112,152,120,216,216,108,5,8,8,6,0,0,192,192,240,216, + 216,216,216,240,4,6,6,5,0,0,112,208,192,192,208,112, + 5,8,8,6,0,0,24,24,120,216,216,216,216,120,5,6, + 6,6,0,0,112,216,248,192,216,112,5,8,8,4,255,0, + 56,96,240,96,96,96,96,96,5,8,8,6,0,254,104,216, + 216,216,216,120,24,112,5,8,8,6,0,0,192,192,240,216, + 216,216,216,216,2,8,8,3,0,0,192,0,192,192,192,192, + 192,192,3,10,10,3,255,254,96,0,96,96,96,96,96,96, + 96,192,6,8,8,6,0,0,192,192,216,240,224,240,216,204, + 2,8,8,3,0,0,192,192,192,192,192,192,192,192,8,6, + 6,9,0,0,182,219,219,219,219,219,5,6,6,6,0,0, + 176,216,216,216,216,216,5,6,6,6,0,0,112,216,216,216, + 216,112,5,8,8,6,0,254,176,216,216,216,216,240,192,192, + 5,8,8,6,0,254,104,216,216,216,216,120,24,24,4,6, + 6,4,0,0,176,224,192,192,192,192,5,6,6,6,0,0, + 112,216,112,24,216,112,4,8,8,4,255,0,96,96,240,96, + 96,96,96,48,5,6,6,6,0,0,216,216,216,216,216,104, + 5,6,6,6,0,0,216,216,216,80,112,32,7,6,6,8, + 0,0,214,214,214,108,108,108,6,6,6,7,0,0,204,120, + 48,120,204,204,5,8,8,6,0,254,216,216,216,216,120,48, + 48,96,5,6,6,6,0,0,248,24,48,96,192,248,4,10, + 10,5,0,254,48,96,96,96,192,96,96,96,96,48,1,10, + 10,3,1,254,128,128,128,128,128,128,128,128,128,128,4,10, + 10,5,0,254,192,96,96,96,48,96,96,96,96,192,5,2, + 2,6,0,3,104,176,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 2 y= 9 dx=15 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=23 x=-1 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB10[3692] U8G_SECTION(".progmem.u8g_font_helvB10") = { + 0,17,23,255,250,11,2,27,4,205,32,255,253,14,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,192,128,128,0,192,192,5,3,3,7,1,8,216,216, + 144,9,10,20,9,0,0,27,0,27,0,27,0,127,128,54, + 0,54,0,255,0,108,0,108,0,108,0,7,14,14,8,0, + 254,16,124,214,214,208,240,120,28,22,214,214,124,16,16,12, + 11,22,13,0,0,120,64,204,192,205,128,121,0,3,0,6, + 0,4,0,13,224,11,48,27,48,17,224,9,10,20,11,1, + 0,56,0,108,0,108,0,56,0,115,0,251,0,206,0,198, + 0,207,0,125,128,2,3,3,4,1,8,192,192,128,4,14, + 14,5,1,253,48,96,96,192,192,192,192,192,192,192,192,96, + 96,48,4,14,14,5,0,253,192,96,96,48,48,48,48,48, + 48,48,48,96,96,192,5,4,4,6,0,7,32,248,112,216, + 8,7,7,9,0,1,24,24,24,255,24,24,24,3,3,3, + 4,0,255,96,96,192,3,1,1,4,0,4,224,2,2,2, + 4,1,0,192,192,4,11,11,4,0,0,16,16,48,32,32, + 96,64,64,192,128,128,7,11,11,8,0,0,56,108,198,198, + 198,198,198,198,198,108,56,4,11,11,8,1,0,48,240,48, + 48,48,48,48,48,48,48,48,7,11,11,8,0,0,124,198, + 198,6,14,12,24,48,96,192,254,7,11,11,8,0,0,124, + 198,198,6,6,60,6,6,198,198,124,8,11,11,8,0,0, + 6,14,30,54,102,198,198,255,6,6,6,7,11,11,8,0, + 0,126,96,96,192,252,14,6,6,198,204,120,7,11,11,8, + 0,0,60,102,102,192,220,230,198,198,198,198,124,7,11,11, + 8,0,0,254,6,12,12,24,24,48,48,96,96,96,7,11, + 11,8,0,0,124,198,198,198,198,124,198,198,198,198,124,7, + 11,11,8,0,0,124,198,198,198,198,198,126,6,198,204,120, + 2,8,8,5,2,0,192,192,0,0,0,0,192,192,3,9, + 9,5,1,255,96,96,0,0,0,0,96,96,192,6,5,5, + 8,1,2,28,112,192,112,28,7,3,3,9,1,3,254,0, + 254,6,5,5,8,1,2,224,56,12,56,224,7,11,11,9, + 1,0,124,198,198,6,12,24,48,48,0,48,48,13,12,24, + 14,0,255,15,128,56,224,112,112,102,176,205,152,217,152,219, + 24,219,48,206,224,96,0,49,128,31,0,10,11,22,10,0, + 0,12,0,12,0,30,0,18,0,51,0,51,0,97,128,127, + 128,97,128,192,192,192,192,8,11,11,10,1,0,254,199,195, + 195,198,252,198,195,195,199,254,9,11,22,11,1,0,31,0, + 123,128,96,128,192,0,192,0,192,0,192,0,192,0,96,128, + 123,128,31,0,9,11,22,11,1,0,252,0,199,0,195,0, + 193,128,193,128,193,128,193,128,193,128,195,0,199,0,252,0, + 7,11,11,9,1,0,254,192,192,192,192,254,192,192,192,192, + 254,7,11,11,9,1,0,254,192,192,192,192,252,192,192,192, + 192,192,9,11,22,11,1,0,31,0,123,128,96,128,192,0, + 192,0,199,128,193,128,193,128,97,128,123,128,30,128,8,11, + 11,10,1,0,195,195,195,195,195,255,195,195,195,195,195,2, + 11,11,4,1,0,192,192,192,192,192,192,192,192,192,192,192, + 7,11,11,8,0,0,6,6,6,6,6,6,6,198,198,238, + 124,9,11,22,10,1,0,195,0,198,0,204,0,216,0,240, + 0,240,0,216,0,204,0,198,0,195,0,193,128,7,11,11, + 8,1,0,192,192,192,192,192,192,192,192,192,192,254,11,11, + 22,13,1,0,192,96,192,96,224,224,224,224,241,224,209,96, + 209,96,219,96,202,96,206,96,196,96,9,11,22,11,1,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,11,22,12,1,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,97,128,115,128, + 30,0,8,11,11,10,1,0,254,199,195,195,199,254,192,192, + 192,192,192,10,11,22,12,1,0,30,0,115,128,97,128,192, + 192,192,192,192,192,192,192,198,192,99,128,115,128,30,192,9, + 11,22,11,1,0,254,0,199,0,195,0,195,0,198,0,254, + 0,199,0,195,0,195,0,195,0,193,128,8,11,11,10,1, + 0,126,231,195,224,120,30,7,3,195,238,124,8,11,11,8, + 0,0,255,24,24,24,24,24,24,24,24,24,24,9,11,22, + 11,1,0,193,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,10,11,22,10,0,0,192, + 192,192,192,97,128,97,128,115,128,51,0,51,0,30,0,30, + 0,12,0,12,0,14,11,22,14,0,0,195,12,195,12,195, + 12,103,152,100,152,100,152,108,216,44,208,56,112,24,96,24, + 96,9,11,22,9,0,0,193,128,193,128,99,0,54,0,28, + 0,28,0,54,0,99,0,99,0,193,128,193,128,10,11,22, + 10,0,0,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,12,0,12,0,8,11,11,9,0,0,255, + 3,6,12,28,24,48,112,96,192,255,4,14,14,5,1,253, + 240,192,192,192,192,192,192,192,192,192,192,192,192,240,4,11, + 11,4,0,0,128,128,192,64,64,96,32,32,48,16,16,4, + 14,14,5,0,253,240,48,48,48,48,48,48,48,48,48,48, + 48,48,240,6,5,5,8,1,6,48,120,72,204,204,8,1, + 1,8,0,253,255,3,2,2,5,1,9,192,96,7,8,8, + 8,1,0,120,204,12,124,204,204,220,118,7,11,11,9,1, + 0,192,192,192,216,236,198,198,198,198,236,216,6,8,8,8, + 1,0,56,108,204,192,192,204,108,56,7,11,11,9,1,0, + 6,6,6,54,110,198,198,198,198,110,54,6,8,8,8,1, + 0,120,204,204,252,192,192,236,120,5,11,11,4,0,0,56, + 96,96,240,96,96,96,96,96,96,96,7,11,11,9,1,253, + 58,110,198,198,198,198,110,54,6,206,124,7,11,11,9,1, + 0,192,192,192,220,238,198,198,198,198,198,198,2,11,11,4, + 1,0,192,192,0,192,192,192,192,192,192,192,192,3,14,14, + 4,0,253,96,96,0,96,96,96,96,96,96,96,96,96,224, + 192,6,11,11,8,1,0,192,192,192,204,216,240,240,216,216, + 204,204,2,11,11,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,10,8,16,12,1,0,219,128,238,192,204,192,204, + 192,204,192,204,192,204,192,204,192,7,8,8,9,1,0,220, + 238,198,198,198,198,198,198,7,8,8,9,1,0,56,108,198, + 198,198,198,108,56,7,11,11,9,1,253,216,236,198,198,198, + 198,236,216,192,192,192,7,11,11,9,1,253,54,110,198,198, + 198,198,110,54,6,6,6,5,8,8,6,1,0,216,248,192, + 192,192,192,192,192,6,8,8,8,1,0,120,204,224,120,28, + 12,236,120,5,10,10,5,0,0,96,96,248,96,96,96,96, + 96,104,48,7,8,8,9,1,0,198,198,198,198,198,198,238, + 118,8,8,8,8,0,0,195,195,102,102,36,60,24,24,10, + 8,16,10,0,0,204,192,204,192,204,192,109,128,109,128,51, + 0,51,0,51,0,7,8,8,7,0,0,198,198,108,56,56, + 108,198,198,8,11,11,8,0,253,195,195,102,102,36,60,24, + 24,24,48,112,6,8,8,6,0,0,252,12,24,48,48,96, + 192,252,5,14,14,6,0,253,24,48,48,48,48,96,192,96, + 48,48,48,48,48,24,1,14,14,4,2,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,5,14,14,6,1,253, + 192,96,96,96,96,48,24,48,96,96,96,96,96,192,7,3, + 3,9,1,3,114,222,140,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,1,2,11, + 11,4,1,253,192,192,0,64,64,192,192,192,192,192,192,7, + 10,10,8,0,255,4,60,110,200,208,208,230,102,124,64,8, + 11,11,8,0,0,60,102,102,96,252,48,48,48,96,251,222, + 7,7,7,8,0,2,130,124,108,108,108,124,130,8,11,11, + 9,0,0,195,195,195,102,102,60,126,24,126,24,24,1,14, + 14,4,2,253,128,128,128,128,128,128,0,0,128,128,128,128, + 128,128,6,14,14,8,1,253,120,204,204,224,120,220,204,204, + 236,120,28,204,204,120,5,2,2,5,0,9,216,216,10,11, + 22,12,1,0,30,0,97,128,76,128,210,192,144,64,144,64, + 144,64,146,64,76,128,97,128,30,0,5,7,7,6,0,4, + 112,144,112,208,248,0,248,7,5,5,9,1,2,54,108,216, + 108,54,7,4,4,9,1,2,254,254,2,2,3,1,1,4, + 0,4,224,10,11,22,12,1,0,30,0,97,128,92,128,146, + 64,146,64,156,64,146,64,146,64,82,128,97,128,30,0,5, + 1,1,5,0,9,248,4,4,4,6,1,7,96,144,144,96, + 8,9,9,9,0,0,24,24,24,255,24,24,24,0,255,4, + 6,6,5,0,5,96,176,48,96,192,240,4,6,6,5,0, + 5,96,176,96,48,176,96,3,2,2,5,1,9,96,192,7, + 11,11,9,1,253,198,198,198,198,198,198,238,246,192,192,192, + 8,14,14,8,0,253,63,122,250,250,250,122,58,10,10,10, + 10,10,10,10,2,2,2,4,1,3,192,192,5,3,3,5, + 0,253,24,216,112,3,6,6,4,0,5,96,224,96,96,96, + 96,5,7,7,6,0,4,112,216,216,216,112,0,248,7,5, + 5,9,1,2,216,108,54,108,216,12,11,22,12,0,0,97, + 128,225,128,99,0,99,0,102,0,102,32,6,96,12,224,13, + 96,25,240,24,96,11,11,22,12,0,0,97,128,225,128,99, + 0,99,0,102,0,102,192,7,96,12,96,12,192,25,128,25, + 224,12,11,22,12,0,0,97,128,177,128,99,0,51,0,182, + 0,102,32,6,96,12,224,13,96,25,240,24,96,7,11,11, + 9,1,253,24,24,0,24,24,48,96,192,198,198,124,10,14, + 28,10,0,0,24,0,12,0,0,0,12,0,12,0,30,0, + 18,0,51,0,51,0,97,128,127,128,97,128,192,192,192,192, + 10,14,28,10,0,0,6,0,12,0,0,0,12,0,12,0, + 30,0,18,0,51,0,51,0,97,128,127,128,97,128,192,192, + 192,192,10,14,28,10,0,0,14,0,27,0,0,0,12,0, + 12,0,30,0,18,0,51,0,51,0,97,128,127,128,97,128, + 192,192,192,192,10,14,28,10,0,0,13,0,22,0,0,0, + 12,0,12,0,30,0,18,0,51,0,51,0,97,128,127,128, + 97,128,192,192,192,192,10,14,28,10,0,0,51,0,51,0, + 0,0,12,0,12,0,30,0,18,0,51,0,51,0,97,128, + 127,128,97,128,192,192,192,192,10,14,28,10,0,0,12,0, + 18,0,12,0,12,0,12,0,30,0,18,0,51,0,51,0, + 97,128,127,128,97,128,192,192,192,192,14,11,22,15,0,0, + 15,252,15,0,27,0,19,0,51,0,51,248,99,0,127,0, + 99,0,195,0,195,252,9,14,28,11,1,253,31,0,123,128, + 96,128,192,0,192,0,192,0,192,0,192,0,96,128,123,128, + 31,0,6,0,54,0,28,0,7,14,14,9,1,0,48,24, + 0,254,192,192,192,192,254,192,192,192,192,254,7,14,14,9, + 1,0,12,24,0,254,192,192,192,192,254,192,192,192,192,254, + 7,14,14,9,1,0,28,54,0,254,192,192,192,192,254,192, + 192,192,192,254,7,14,14,9,1,0,108,108,0,254,192,192, + 192,192,254,192,192,192,192,254,3,14,14,4,0,0,192,96, + 0,96,96,96,96,96,96,96,96,96,96,96,3,14,14,4, + 1,0,96,192,0,192,192,192,192,192,192,192,192,192,192,192, + 5,14,14,4,0,0,112,216,0,96,96,96,96,96,96,96, + 96,96,96,96,5,14,14,4,0,0,216,216,0,96,96,96, + 96,96,96,96,96,96,96,96,10,11,22,11,0,0,126,0, + 99,128,97,128,96,192,96,192,248,192,96,192,96,192,97,128, + 99,128,126,0,9,14,28,11,1,0,26,0,44,0,0,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,14,28,12,1,0,24,0,12,0, + 0,0,30,0,115,128,97,128,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,14,28,12,1,0,6,0, + 12,0,0,0,30,0,115,128,97,128,192,192,192,192,192,192, + 192,192,192,192,97,128,115,128,30,0,10,14,28,12,1,0, + 14,0,27,0,0,0,30,0,115,128,97,128,192,192,192,192, + 192,192,192,192,192,192,97,128,115,128,30,0,10,14,28,12, + 1,0,13,0,22,0,0,0,30,0,115,128,97,128,192,192, + 192,192,192,192,192,192,192,192,97,128,115,128,30,0,10,14, + 28,12,1,0,51,0,51,0,0,0,30,0,115,128,97,128, + 192,192,192,192,192,192,192,192,192,192,97,128,115,128,30,0, + 8,7,7,9,0,1,195,102,60,24,60,102,195,12,11,22, + 12,0,0,15,48,57,224,48,192,97,224,99,96,102,96,108, + 96,120,96,48,192,121,192,207,0,9,14,28,11,1,0,24, + 0,12,0,0,0,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,0,62,0,9,14,28,11,1, + 0,6,0,12,0,0,0,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,99,0,62,0,9,14,28, + 11,1,0,28,0,54,0,0,0,193,128,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,193,128,99,0,62,0,9, + 14,28,11,1,0,99,0,99,0,0,0,193,128,193,128,193, + 128,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,10,14,28,10,0,0,6,0,12,0,0,0,192,192,97, + 128,97,128,51,0,51,0,30,0,30,0,12,0,12,0,12, + 0,12,0,8,11,11,10,1,0,192,192,254,199,195,195,199, + 254,192,192,192,6,11,11,8,1,0,120,204,204,204,216,216, + 204,204,204,204,216,7,11,11,8,1,0,48,24,0,120,204, + 12,124,204,204,220,118,7,11,11,8,1,0,24,48,0,120, + 204,12,124,204,204,220,118,7,11,11,8,1,0,56,108,0, + 120,204,12,124,204,204,220,118,7,11,11,8,1,0,52,88, + 0,120,204,12,124,204,204,220,118,7,11,11,8,1,0,108, + 108,0,120,204,12,124,204,204,220,118,7,11,11,8,1,0, + 48,72,48,120,204,12,124,204,204,220,118,11,8,16,13,1, + 0,123,192,206,96,12,96,127,224,204,0,204,0,222,96,119, + 192,7,11,11,9,1,253,60,102,198,192,192,198,102,60,24, + 88,112,6,11,11,8,1,0,96,48,0,120,204,204,252,192, + 192,236,120,6,11,11,8,1,0,24,48,0,120,204,204,252, + 192,192,236,120,6,11,11,8,1,0,56,108,0,120,204,204, + 252,192,192,236,120,6,11,11,8,1,0,108,108,0,120,204, + 204,252,192,192,236,120,3,11,11,4,0,0,192,96,0,96, + 96,96,96,96,96,96,96,3,11,11,4,1,0,96,192,0, + 192,192,192,192,192,192,192,192,5,11,11,4,0,0,112,216, + 0,96,96,96,96,96,96,96,96,5,11,11,4,0,0,216, + 216,0,96,96,96,96,96,96,96,96,7,11,11,9,1,0, + 108,56,72,60,108,198,198,198,198,108,56,7,11,11,9,1, + 0,52,88,0,220,238,198,198,198,198,198,198,7,11,11,9, + 1,0,48,24,0,56,108,198,198,198,198,108,56,7,11,11, + 9,1,0,24,48,0,56,108,198,198,198,198,108,56,7,11, + 11,9,1,0,56,108,0,56,108,198,198,198,198,108,56,7, + 11,11,9,1,0,52,88,0,56,108,198,198,198,198,108,56, + 7,11,11,9,1,0,108,108,0,56,108,198,198,198,198,108, + 56,8,7,7,9,0,1,24,24,0,255,0,24,24,7,8, + 8,9,1,0,58,108,206,214,214,230,108,184,7,11,11,9, + 1,0,48,24,0,198,198,198,198,198,198,238,118,7,11,11, + 9,1,0,12,24,0,198,198,198,198,198,198,238,118,7,11, + 11,9,1,0,56,108,0,198,198,198,198,198,198,238,118,7, + 11,11,9,1,0,108,108,0,198,198,198,198,198,198,238,118, + 8,14,14,8,0,253,12,24,0,195,195,102,102,36,60,24, + 24,24,48,112,7,14,14,9,1,253,192,192,192,216,236,198, + 198,198,198,236,216,192,192,192,8,14,14,8,0,253,54,54, + 0,195,195,102,102,36,60,24,24,24,48,112}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 2 y= 9 dx=14 dy= 0 ascent=12 len=24 + Font Bounding box w=17 h=23 x=-1 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB10r[1720] U8G_SECTION(".progmem.u8g_font_helvB10r") = { + 0,17,23,255,250,11,2,27,4,205,32,127,253,12,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,192,128,128,0,192,192,5,3,3,7,1,8,216,216, + 144,9,10,20,9,0,0,27,0,27,0,27,0,127,128,54, + 0,54,0,255,0,108,0,108,0,108,0,7,14,14,8,0, + 254,16,124,214,214,208,240,120,28,22,214,214,124,16,16,12, + 11,22,13,0,0,120,64,204,192,205,128,121,0,3,0,6, + 0,4,0,13,224,11,48,27,48,17,224,9,10,20,11,1, + 0,56,0,108,0,108,0,56,0,115,0,251,0,206,0,198, + 0,207,0,125,128,2,3,3,4,1,8,192,192,128,4,14, + 14,5,1,253,48,96,96,192,192,192,192,192,192,192,192,96, + 96,48,4,14,14,5,0,253,192,96,96,48,48,48,48,48, + 48,48,48,96,96,192,5,4,4,6,0,7,32,248,112,216, + 8,7,7,9,0,1,24,24,24,255,24,24,24,3,3,3, + 4,0,255,96,96,192,3,1,1,4,0,4,224,2,2,2, + 4,1,0,192,192,4,11,11,4,0,0,16,16,48,32,32, + 96,64,64,192,128,128,7,11,11,8,0,0,56,108,198,198, + 198,198,198,198,198,108,56,4,11,11,8,1,0,48,240,48, + 48,48,48,48,48,48,48,48,7,11,11,8,0,0,124,198, + 198,6,14,12,24,48,96,192,254,7,11,11,8,0,0,124, + 198,198,6,6,60,6,6,198,198,124,8,11,11,8,0,0, + 6,14,30,54,102,198,198,255,6,6,6,7,11,11,8,0, + 0,126,96,96,192,252,14,6,6,198,204,120,7,11,11,8, + 0,0,60,102,102,192,220,230,198,198,198,198,124,7,11,11, + 8,0,0,254,6,12,12,24,24,48,48,96,96,96,7,11, + 11,8,0,0,124,198,198,198,198,124,198,198,198,198,124,7, + 11,11,8,0,0,124,198,198,198,198,198,126,6,198,204,120, + 2,8,8,5,2,0,192,192,0,0,0,0,192,192,3,9, + 9,5,1,255,96,96,0,0,0,0,96,96,192,6,5,5, + 8,1,2,28,112,192,112,28,7,3,3,9,1,3,254,0, + 254,6,5,5,8,1,2,224,56,12,56,224,7,11,11,9, + 1,0,124,198,198,6,12,24,48,48,0,48,48,13,12,24, + 14,0,255,15,128,56,224,112,112,102,176,205,152,217,152,219, + 24,219,48,206,224,96,0,49,128,31,0,10,11,22,10,0, + 0,12,0,12,0,30,0,18,0,51,0,51,0,97,128,127, + 128,97,128,192,192,192,192,8,11,11,10,1,0,254,199,195, + 195,198,252,198,195,195,199,254,9,11,22,11,1,0,31,0, + 123,128,96,128,192,0,192,0,192,0,192,0,192,0,96,128, + 123,128,31,0,9,11,22,11,1,0,252,0,199,0,195,0, + 193,128,193,128,193,128,193,128,193,128,195,0,199,0,252,0, + 7,11,11,9,1,0,254,192,192,192,192,254,192,192,192,192, + 254,7,11,11,9,1,0,254,192,192,192,192,252,192,192,192, + 192,192,9,11,22,11,1,0,31,0,123,128,96,128,192,0, + 192,0,199,128,193,128,193,128,97,128,123,128,30,128,8,11, + 11,10,1,0,195,195,195,195,195,255,195,195,195,195,195,2, + 11,11,4,1,0,192,192,192,192,192,192,192,192,192,192,192, + 7,11,11,8,0,0,6,6,6,6,6,6,6,198,198,238, + 124,9,11,22,10,1,0,195,0,198,0,204,0,216,0,240, + 0,240,0,216,0,204,0,198,0,195,0,193,128,7,11,11, + 8,1,0,192,192,192,192,192,192,192,192,192,192,254,11,11, + 22,13,1,0,192,96,192,96,224,224,224,224,241,224,209,96, + 209,96,219,96,202,96,206,96,196,96,9,11,22,11,1,0, + 193,128,225,128,225,128,209,128,217,128,201,128,205,128,197,128, + 195,128,195,128,193,128,10,11,22,12,1,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,97,128,115,128, + 30,0,8,11,11,10,1,0,254,199,195,195,199,254,192,192, + 192,192,192,10,11,22,12,1,0,30,0,115,128,97,128,192, + 192,192,192,192,192,192,192,198,192,99,128,115,128,30,192,9, + 11,22,11,1,0,254,0,199,0,195,0,195,0,198,0,254, + 0,199,0,195,0,195,0,195,0,193,128,8,11,11,10,1, + 0,126,231,195,224,120,30,7,3,195,238,124,8,11,11,8, + 0,0,255,24,24,24,24,24,24,24,24,24,24,9,11,22, + 11,1,0,193,128,193,128,193,128,193,128,193,128,193,128,193, + 128,193,128,193,128,99,0,62,0,10,11,22,10,0,0,192, + 192,192,192,97,128,97,128,115,128,51,0,51,0,30,0,30, + 0,12,0,12,0,14,11,22,14,0,0,195,12,195,12,195, + 12,103,152,100,152,100,152,108,216,44,208,56,112,24,96,24, + 96,9,11,22,9,0,0,193,128,193,128,99,0,54,0,28, + 0,28,0,54,0,99,0,99,0,193,128,193,128,10,11,22, + 10,0,0,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,12,0,12,0,8,11,11,9,0,0,255, + 3,6,12,28,24,48,112,96,192,255,4,14,14,5,1,253, + 240,192,192,192,192,192,192,192,192,192,192,192,192,240,4,11, + 11,4,0,0,128,128,192,64,64,96,32,32,48,16,16,4, + 14,14,5,0,253,240,48,48,48,48,48,48,48,48,48,48, + 48,48,240,6,5,5,8,1,6,48,120,72,204,204,8,1, + 1,8,0,253,255,3,2,2,5,1,9,192,96,7,8,8, + 8,1,0,120,204,12,124,204,204,220,118,7,11,11,9,1, + 0,192,192,192,216,236,198,198,198,198,236,216,6,8,8,8, + 1,0,56,108,204,192,192,204,108,56,7,11,11,9,1,0, + 6,6,6,54,110,198,198,198,198,110,54,6,8,8,8,1, + 0,120,204,204,252,192,192,236,120,5,11,11,4,0,0,56, + 96,96,240,96,96,96,96,96,96,96,7,11,11,9,1,253, + 58,110,198,198,198,198,110,54,6,206,124,7,11,11,9,1, + 0,192,192,192,220,238,198,198,198,198,198,198,2,11,11,4, + 1,0,192,192,0,192,192,192,192,192,192,192,192,3,14,14, + 4,0,253,96,96,0,96,96,96,96,96,96,96,96,96,224, + 192,6,11,11,8,1,0,192,192,192,204,216,240,240,216,216, + 204,204,2,11,11,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,10,8,16,12,1,0,219,128,238,192,204,192,204, + 192,204,192,204,192,204,192,204,192,7,8,8,9,1,0,220, + 238,198,198,198,198,198,198,7,8,8,9,1,0,56,108,198, + 198,198,198,108,56,7,11,11,9,1,253,216,236,198,198,198, + 198,236,216,192,192,192,7,11,11,9,1,253,54,110,198,198, + 198,198,110,54,6,6,6,5,8,8,6,1,0,216,248,192, + 192,192,192,192,192,6,8,8,8,1,0,120,204,224,120,28, + 12,236,120,5,10,10,5,0,0,96,96,248,96,96,96,96, + 96,104,48,7,8,8,9,1,0,198,198,198,198,198,198,238, + 118,8,8,8,8,0,0,195,195,102,102,36,60,24,24,10, + 8,16,10,0,0,204,192,204,192,204,192,109,128,109,128,51, + 0,51,0,51,0,7,8,8,7,0,0,198,198,108,56,56, + 108,198,198,8,11,11,8,0,253,195,195,102,102,36,60,24, + 24,24,48,112,6,8,8,6,0,0,252,12,24,48,48,96, + 192,252,5,14,14,6,0,253,24,48,48,48,48,96,192,96, + 48,48,48,48,48,24,1,14,14,4,2,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,5,14,14,6,1,253, + 192,96,96,96,96,48,24,48,96,96,96,96,96,192,7,3, + 3,9,1,3,114,222,140,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=17 x= 2 y=10 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=27 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB12[4077] U8G_SECTION(".progmem.u8g_font_helvB12") = { + 0,20,27,254,249,12,2,74,5,106,32,255,252,16,252,12, + 252,0,0,0,5,0,1,2,12,12,6,2,0,192,192,192, + 192,192,192,128,128,128,0,192,192,5,4,4,8,1,8,216, + 216,216,72,9,12,24,9,0,0,27,0,27,0,27,0,127, + 128,127,128,54,0,54,0,255,0,255,0,108,0,108,0,108, + 0,7,14,14,9,1,255,16,124,254,214,208,240,120,60,30, + 22,214,254,124,16,13,12,24,14,0,0,48,64,120,128,204, + 128,205,0,121,0,50,0,2,96,4,240,5,152,9,152,8, + 240,16,96,10,12,24,12,1,0,60,0,126,0,102,0,102, + 0,60,0,56,192,125,192,207,128,199,0,199,0,127,128,57, + 192,2,4,4,4,1,8,192,192,192,64,4,15,15,6,1, + 253,48,112,96,192,192,192,192,192,192,192,192,192,96,112,48, + 4,15,15,6,0,253,192,224,96,48,48,48,48,48,48,48, + 48,48,96,224,192,5,5,5,6,0,7,32,168,112,112,136, + 8,8,8,10,1,0,24,24,24,255,255,24,24,24,2,5, + 5,4,1,253,192,192,64,64,128,4,2,2,5,0,3,240, + 240,2,2,2,4,1,0,192,192,4,12,12,5,0,0,16, + 16,48,32,32,96,64,64,192,128,128,128,8,12,12,9,0, + 0,60,126,231,195,195,195,195,195,195,231,126,60,5,12,12, + 9,1,0,8,24,248,248,24,24,24,24,24,24,24,24,8, + 12,12,9,0,0,60,126,231,195,195,7,14,28,56,112,255, + 255,8,12,12,9,0,0,60,126,231,195,7,30,30,7,195, + 231,126,60,8,12,12,9,0,0,14,30,54,54,102,102,198, + 255,255,6,6,6,8,12,12,9,0,0,63,63,48,48,124, + 126,71,3,3,231,126,60,8,12,12,9,0,0,60,126,231, + 192,220,254,231,195,195,231,126,60,8,12,12,9,0,0,255, + 255,6,6,12,12,24,24,24,48,48,48,8,12,12,9,0, + 0,60,126,231,195,102,60,126,231,195,231,126,60,8,12,12, + 9,0,0,60,126,231,195,195,231,127,59,3,231,126,60,2, + 8,8,5,2,0,192,192,0,0,0,0,192,192,2,11,11, + 5,2,253,192,192,0,0,0,0,192,192,64,64,128,8,8, + 8,10,1,0,3,15,60,224,224,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,0,192,240, + 60,7,7,60,240,192,7,12,12,10,1,0,124,254,198,198, + 6,14,12,24,24,0,24,24,13,14,28,16,1,254,15,192, + 56,96,96,16,71,216,204,72,136,200,152,200,152,136,153,152, + 201,144,70,96,96,0,56,192,15,128,11,12,24,12,0,0, + 14,0,14,0,31,0,27,0,59,128,49,128,113,192,96,192, + 127,192,255,224,192,96,192,96,9,12,24,11,1,0,254,0, + 255,0,195,128,193,128,195,128,255,0,255,0,195,128,193,128, + 195,128,255,0,254,0,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,10,12,24,12,1,0,252,0,255,0,195,128, + 193,128,193,192,192,192,192,192,193,192,193,128,195,128,255,0, + 252,0,8,12,12,10,1,0,255,255,192,192,192,254,254,192, + 192,192,255,255,8,12,12,10,1,0,255,255,192,192,192,254, + 254,192,192,192,192,192,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,195,192,227,192,96,192,113,192, + 63,192,30,192,10,12,24,12,1,0,192,192,192,192,192,192, + 192,192,255,192,255,192,192,192,192,192,192,192,192,192,192,192, + 192,192,2,12,12,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,7,12,12,9,1,0,6,6,6,6,6,6, + 6,6,198,198,254,124,11,12,24,12,1,0,193,192,195,128, + 199,0,206,0,220,0,248,0,252,0,206,0,199,0,195,128, + 193,192,192,224,8,12,12,10,1,0,192,192,192,192,192,192, + 192,192,192,192,255,255,11,12,24,13,1,0,224,224,224,224, + 224,224,241,224,241,224,209,96,219,96,219,96,202,96,206,96, + 206,96,196,96,10,12,24,12,1,0,224,192,240,192,240,192, + 216,192,216,192,204,192,204,192,198,192,198,192,195,192,195,192, + 193,192,11,12,24,13,1,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 9,12,24,11,1,0,254,0,255,0,195,128,193,128,193,128, + 195,128,255,0,254,0,192,0,192,0,192,0,192,0,11,13, + 26,13,1,255,31,0,63,128,113,192,96,192,224,224,192,96, + 192,96,226,96,103,192,115,192,63,128,31,192,0,128,10,12, + 24,12,1,0,255,0,255,128,193,128,193,128,195,128,255,0, + 255,0,195,128,193,128,193,128,193,192,193,192,9,12,24,11, + 1,0,62,0,127,0,227,128,193,128,240,0,126,0,31,0, + 3,128,193,128,227,128,127,0,62,0,10,12,24,10,0,0, + 255,192,255,192,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,10,12,24,12,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,12,24,11,0,0,192,192,192,192, + 97,128,97,128,97,128,51,0,51,0,51,0,30,0,30,0, + 12,0,12,0,14,12,24,15,0,0,195,12,195,12,195,12, + 99,24,103,152,103,152,52,176,60,240,60,240,24,96,24,96, + 24,96,9,12,24,11,1,0,193,128,227,128,99,0,54,0, + 62,0,28,0,28,0,62,0,54,0,99,0,227,128,193,128, + 10,12,24,11,0,0,192,192,225,192,97,128,51,0,51,0, + 30,0,30,0,12,0,12,0,12,0,12,0,12,0,8,12, + 12,10,1,0,255,255,7,6,12,28,56,48,96,224,255,255, + 4,15,15,6,1,253,240,240,192,192,192,192,192,192,192,192, + 192,192,192,240,240,4,12,12,5,0,0,128,128,192,64,64, + 96,32,32,48,16,16,16,4,15,15,6,0,253,240,240,48, + 48,48,48,48,48,48,48,48,48,48,240,240,8,7,7,10, + 1,5,24,24,60,102,102,195,195,9,1,2,9,0,253,255, + 128,3,3,3,6,2,10,128,192,32,8,9,9,9,1,0, + 124,254,198,14,126,230,198,254,119,8,12,12,10,1,0,192, + 192,192,220,254,231,195,195,195,231,254,220,8,9,9,9,1, + 0,60,126,231,192,192,192,231,126,60,8,12,12,10,1,0, + 3,3,3,63,127,231,195,195,195,231,127,59,8,9,9,10, + 1,0,60,126,195,255,255,192,231,126,60,4,12,12,6,1, + 0,48,112,96,240,240,96,96,96,96,96,96,96,8,13,13, + 10,1,252,59,127,231,195,195,195,231,127,59,3,231,126,60, + 8,12,12,10,1,0,192,192,192,222,255,227,195,195,195,195, + 195,195,2,12,12,4,1,0,192,192,0,192,192,192,192,192, + 192,192,192,192,3,16,16,5,1,252,96,96,0,96,96,96, + 96,96,96,96,96,96,96,96,224,192,8,12,12,9,1,0, + 192,192,192,199,206,220,248,252,236,206,198,199,2,12,12,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,192,12,9, + 18,14,1,0,222,224,255,240,231,48,198,48,198,48,198,48, + 198,48,198,48,198,48,8,9,9,10,1,0,222,255,227,195, + 195,195,195,195,195,8,9,9,10,1,0,60,126,231,195,195, + 195,231,126,60,8,13,13,10,1,252,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,13,13,10,1,252,59,127,231, + 195,195,195,231,127,59,3,3,3,3,5,9,9,6,1,0, + 216,248,224,192,192,192,192,192,192,7,9,9,9,1,0,124, + 254,198,240,124,14,198,254,124,4,11,11,6,1,0,96,96, + 240,240,96,96,96,96,96,112,48,8,9,9,10,1,0,195, + 195,195,195,195,195,199,255,123,8,9,9,9,0,0,195,195, + 102,102,102,60,60,24,24,12,9,18,13,0,0,198,48,198, + 48,102,96,102,96,111,96,63,192,57,192,25,128,25,128,7, + 9,9,9,1,0,198,198,108,124,56,124,108,198,198,8,13, + 13,9,0,252,195,195,99,102,54,54,60,28,24,24,24,112, + 96,7,9,9,8,0,0,254,254,14,28,24,56,112,254,254, + 4,15,15,6,1,253,48,112,96,96,96,96,96,192,96,96, + 96,96,96,112,48,1,16,16,4,1,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,192,224,96,96,96,96,96,48,96,96,96,96,96,224,192, + 8,3,3,10,1,3,113,153,142,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,5,0,1, + 2,12,12,6,1,253,192,192,0,64,64,64,192,192,192,192, + 192,192,8,11,11,9,0,255,4,60,126,239,200,216,208,247, + 126,60,32,8,12,12,9,0,0,28,62,99,99,96,48,124, + 48,48,32,127,255,7,7,7,9,1,2,186,124,198,198,198, + 124,186,8,12,12,9,0,0,195,195,102,102,60,24,126,24, + 126,24,24,24,1,16,16,5,2,252,128,128,128,128,128,128, + 128,0,0,128,128,128,128,128,128,128,8,15,15,9,0,253, + 60,126,102,96,120,126,199,195,243,126,30,6,102,126,60,5, + 2,2,6,0,10,216,216,12,12,24,12,0,0,15,0,57, + 192,96,96,79,32,217,176,144,16,144,16,217,176,79,32,96, + 32,57,192,15,0,5,7,7,6,1,5,96,144,112,144,120, + 0,248,8,6,6,9,0,2,51,102,204,204,102,51,8,5, + 5,10,0,2,255,255,3,3,3,4,2,2,5,0,3,240, + 240,12,12,24,12,0,0,15,0,57,192,96,96,95,32,217, + 176,153,144,158,16,219,48,91,32,96,96,57,192,15,0,5, + 1,1,6,0,10,248,4,5,5,7,1,7,96,144,144,144, + 96,8,11,11,10,1,0,24,24,24,255,255,24,24,24,0, + 255,255,5,7,7,6,0,5,112,216,216,48,96,248,248,5, + 7,7,6,0,5,112,216,24,48,24,216,112,3,3,3,6, + 1,10,32,96,128,8,12,12,10,1,253,195,195,195,195,195, + 195,199,255,251,192,192,192,8,15,15,9,0,253,127,242,242, + 242,242,242,114,18,18,18,18,18,18,18,18,2,2,2,5, + 1,4,192,192,5,4,4,6,0,252,32,48,152,112,4,7, + 7,6,1,5,48,240,240,48,48,48,48,5,7,7,6,0, + 5,112,216,136,216,112,0,248,8,6,6,9,1,2,204,102, + 51,51,102,204,13,12,24,14,1,0,48,192,240,128,241,128, + 49,0,51,48,50,112,54,240,4,176,13,176,9,248,24,48, + 16,48,12,12,24,14,0,0,48,128,241,128,241,0,51,0, + 50,0,54,224,53,176,13,176,8,96,24,192,17,240,49,240, + 13,12,24,14,0,0,112,64,216,192,24,128,49,128,25,48, + 219,112,114,240,6,176,5,176,13,248,8,48,24,48,7,12, + 12,10,1,253,48,48,0,48,48,96,224,192,198,198,254,124, + 11,16,32,12,0,0,16,0,24,0,4,0,0,0,14,0, + 14,0,31,0,27,0,59,128,49,128,113,192,96,192,127,192, + 255,224,192,96,192,96,11,16,32,12,0,0,2,0,6,0, + 8,0,0,0,14,0,14,0,31,0,27,0,59,128,49,128, + 113,192,96,192,127,192,255,224,192,96,192,96,11,16,32,12, + 0,0,4,0,14,0,17,0,0,0,14,0,14,0,31,0, + 27,0,59,128,49,128,113,192,96,192,127,192,255,224,192,96, + 192,96,11,15,30,12,0,0,14,128,23,0,0,0,14,0, + 14,0,31,0,27,0,59,128,49,128,113,192,96,192,127,192, + 255,224,192,96,192,96,11,15,30,12,0,0,49,128,49,128, + 0,0,14,0,14,0,31,0,27,0,59,128,49,128,113,192, + 96,192,127,192,255,224,192,96,192,96,11,16,32,12,0,0, + 12,0,18,0,18,0,12,0,14,0,14,0,31,0,27,0, + 59,128,49,128,113,192,96,192,127,192,255,224,192,96,192,96, + 14,12,24,15,0,0,31,252,31,252,27,0,51,0,51,0, + 51,248,99,248,127,0,127,0,195,0,195,252,195,252,10,16, + 32,12,1,252,31,0,63,128,113,192,96,192,224,0,192,0, + 192,0,224,0,96,192,113,192,63,128,31,0,4,0,6,0, + 19,0,14,0,8,16,16,10,1,0,32,48,8,0,255,255, + 192,192,192,254,254,192,192,192,255,255,8,16,16,10,1,0, + 4,12,16,0,255,255,192,192,192,254,254,192,192,192,255,255, + 8,16,16,10,1,0,8,28,34,0,255,255,192,192,192,254, + 254,192,192,192,255,255,8,15,15,10,1,0,102,102,0,255, + 255,192,192,192,254,254,192,192,192,255,255,3,16,16,4,0, + 0,128,192,32,0,96,96,96,96,96,96,96,96,96,96,96, + 96,3,16,16,4,1,0,32,96,128,0,192,192,192,192,192, + 192,192,192,192,192,192,192,5,16,16,4,0,0,32,112,136, + 0,96,96,96,96,96,96,96,96,96,96,96,96,6,15,15, + 4,255,0,204,204,0,48,48,48,48,48,48,48,48,48,48, + 48,48,12,12,24,12,0,0,63,0,63,192,48,224,48,96, + 48,112,252,48,252,48,48,112,48,96,48,224,63,192,63,0, + 10,15,30,12,1,0,29,0,46,0,0,0,224,192,240,192, + 240,192,216,192,216,192,204,192,204,192,198,192,198,192,195,192, + 195,192,193,192,11,16,32,13,1,0,8,0,12,0,2,0, + 0,0,31,0,63,128,113,192,96,192,224,224,192,96,192,96, + 224,224,96,192,113,192,63,128,31,0,11,16,32,13,1,0, + 1,0,3,0,4,0,0,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 11,16,32,13,1,0,4,0,14,0,17,0,0,0,31,0, + 63,128,113,192,96,192,224,224,192,96,192,96,224,224,96,192, + 113,192,63,128,31,0,11,15,30,13,1,0,14,128,23,0, + 0,0,31,0,63,128,113,192,96,192,224,224,192,96,192,96, + 224,224,96,192,113,192,63,128,31,0,11,15,30,13,1,0, + 25,128,25,128,0,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,224,224,96,192,113,192,63,128,31,0,9,9, + 18,10,0,0,65,0,227,128,119,0,62,0,28,0,62,0, + 119,0,227,128,65,0,11,12,24,13,1,0,31,32,63,192, + 112,192,97,192,227,96,198,96,204,96,216,224,112,192,97,192, + 127,128,159,0,10,16,32,12,1,0,16,0,24,0,4,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,16,32,12,1,0, + 2,0,6,0,8,0,0,0,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,225,192,127,128,63,0, + 10,16,32,12,1,0,4,0,14,0,17,0,0,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,15,30,12,1,0,51,0,51,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,16,32,11,0,0, + 2,0,6,0,8,0,0,0,192,192,225,192,97,128,51,0, + 51,0,30,0,30,0,12,0,12,0,12,0,12,0,12,0, + 9,12,24,11,1,0,192,0,254,0,255,0,195,128,193,128, + 193,128,195,128,255,0,254,0,192,0,192,0,192,0,8,12, + 12,10,1,0,124,254,198,198,220,222,195,195,195,195,222,220, + 8,13,13,9,1,0,32,48,8,0,124,254,198,14,126,230, + 198,254,119,8,13,13,9,1,0,4,12,16,0,124,254,198, + 14,126,230,198,254,119,8,13,13,9,1,0,16,56,68,0, + 124,254,198,14,126,230,198,254,119,8,12,12,9,1,0,58, + 92,0,124,254,198,14,126,230,198,254,119,8,12,12,9,1, + 0,108,108,0,124,254,198,14,126,230,198,254,119,8,13,13, + 9,1,0,24,36,36,24,124,254,198,14,126,230,198,254,119, + 13,9,18,15,1,0,125,224,255,240,198,24,15,248,127,248, + 230,0,207,56,255,240,121,224,8,13,13,9,1,252,60,126, + 231,192,192,192,231,126,60,16,24,76,56,8,13,13,10,1, + 0,32,48,8,0,60,126,195,255,255,192,231,126,60,8,13, + 13,10,1,0,4,12,16,0,60,126,195,255,255,192,231,126, + 60,8,13,13,10,1,0,8,28,34,0,60,126,195,255,255, + 192,231,126,60,8,12,12,10,1,0,54,54,0,60,126,195, + 255,255,192,231,126,60,3,13,13,4,0,0,128,192,32,0, + 96,96,96,96,96,96,96,96,96,3,13,13,4,1,0,32, + 96,128,0,192,192,192,192,192,192,192,192,192,5,13,13,4, + 0,0,32,112,136,0,96,96,96,96,96,96,96,96,96,5, + 12,12,4,0,0,216,216,0,96,96,96,96,96,96,96,96, + 96,8,12,12,10,1,0,96,124,248,28,126,231,195,195,195, + 231,126,60,8,12,12,10,1,0,58,92,0,222,255,227,195, + 195,195,195,195,195,8,13,13,10,1,0,32,48,8,0,60, + 126,231,195,195,195,231,126,60,8,13,13,10,1,0,8,24, + 32,0,60,126,231,195,195,195,231,126,60,8,13,13,10,1, + 0,16,56,68,0,60,126,231,195,195,195,231,126,60,8,12, + 12,10,1,0,58,92,0,60,126,231,195,195,195,231,126,60, + 8,12,12,10,1,0,108,108,0,60,126,231,195,195,195,231, + 126,60,8,8,8,10,1,0,24,24,0,255,255,0,24,24, + 8,9,9,10,1,0,61,127,231,207,219,243,231,254,188,8, + 13,13,10,1,0,32,48,8,0,195,195,195,195,195,195,199, + 255,123,8,13,13,10,1,0,8,24,32,0,195,195,195,195, + 195,195,199,255,123,8,13,13,10,1,0,16,56,68,0,195, + 195,195,195,195,195,199,255,123,8,12,12,10,1,0,108,108, + 0,195,195,195,195,195,195,199,255,123,8,17,17,9,0,252, + 4,12,16,0,195,195,99,102,54,54,60,28,24,24,24,112, + 96,8,16,16,10,1,252,192,192,192,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,16,16,9,0,252,54,54,0, + 195,195,99,102,54,54,60,28,24,24,24,112,96}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=16 x= 2 y=10 dx=16 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=27 x=-2 y=-7 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB12r[1914] U8G_SECTION(".progmem.u8g_font_helvB12r") = { + 0,20,27,254,249,12,2,74,5,106,32,127,252,13,252,12, + 252,0,0,0,5,0,1,2,12,12,6,2,0,192,192,192, + 192,192,192,128,128,128,0,192,192,5,4,4,8,1,8,216, + 216,216,72,9,12,24,9,0,0,27,0,27,0,27,0,127, + 128,127,128,54,0,54,0,255,0,255,0,108,0,108,0,108, + 0,7,14,14,9,1,255,16,124,254,214,208,240,120,60,30, + 22,214,254,124,16,13,12,24,14,0,0,48,64,120,128,204, + 128,205,0,121,0,50,0,2,96,4,240,5,152,9,152,8, + 240,16,96,10,12,24,12,1,0,60,0,126,0,102,0,102, + 0,60,0,56,192,125,192,207,128,199,0,199,0,127,128,57, + 192,2,4,4,4,1,8,192,192,192,64,4,15,15,6,1, + 253,48,112,96,192,192,192,192,192,192,192,192,192,96,112,48, + 4,15,15,6,0,253,192,224,96,48,48,48,48,48,48,48, + 48,48,96,224,192,5,5,5,6,0,7,32,168,112,112,136, + 8,8,8,10,1,0,24,24,24,255,255,24,24,24,2,5, + 5,4,1,253,192,192,64,64,128,4,2,2,5,0,3,240, + 240,2,2,2,4,1,0,192,192,4,12,12,5,0,0,16, + 16,48,32,32,96,64,64,192,128,128,128,8,12,12,9,0, + 0,60,126,231,195,195,195,195,195,195,231,126,60,5,12,12, + 9,1,0,8,24,248,248,24,24,24,24,24,24,24,24,8, + 12,12,9,0,0,60,126,231,195,195,7,14,28,56,112,255, + 255,8,12,12,9,0,0,60,126,231,195,7,30,30,7,195, + 231,126,60,8,12,12,9,0,0,14,30,54,54,102,102,198, + 255,255,6,6,6,8,12,12,9,0,0,63,63,48,48,124, + 126,71,3,3,231,126,60,8,12,12,9,0,0,60,126,231, + 192,220,254,231,195,195,231,126,60,8,12,12,9,0,0,255, + 255,6,6,12,12,24,24,24,48,48,48,8,12,12,9,0, + 0,60,126,231,195,102,60,126,231,195,231,126,60,8,12,12, + 9,0,0,60,126,231,195,195,231,127,59,3,231,126,60,2, + 8,8,5,2,0,192,192,0,0,0,0,192,192,2,11,11, + 5,2,253,192,192,0,0,0,0,192,192,64,64,128,8,8, + 8,10,1,0,3,15,60,224,224,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,0,192,240, + 60,7,7,60,240,192,7,12,12,10,1,0,124,254,198,198, + 6,14,12,24,24,0,24,24,13,14,28,16,1,254,15,192, + 56,96,96,16,71,216,204,72,136,200,152,200,152,136,153,152, + 201,144,70,96,96,0,56,192,15,128,11,12,24,12,0,0, + 14,0,14,0,31,0,27,0,59,128,49,128,113,192,96,192, + 127,192,255,224,192,96,192,96,9,12,24,11,1,0,254,0, + 255,0,195,128,193,128,195,128,255,0,255,0,195,128,193,128, + 195,128,255,0,254,0,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,10,12,24,12,1,0,252,0,255,0,195,128, + 193,128,193,192,192,192,192,192,193,192,193,128,195,128,255,0, + 252,0,8,12,12,10,1,0,255,255,192,192,192,254,254,192, + 192,192,255,255,8,12,12,10,1,0,255,255,192,192,192,254, + 254,192,192,192,192,192,10,12,24,12,1,0,31,0,63,128, + 113,192,96,192,224,0,192,0,195,192,227,192,96,192,113,192, + 63,192,30,192,10,12,24,12,1,0,192,192,192,192,192,192, + 192,192,255,192,255,192,192,192,192,192,192,192,192,192,192,192, + 192,192,2,12,12,4,1,0,192,192,192,192,192,192,192,192, + 192,192,192,192,7,12,12,9,1,0,6,6,6,6,6,6, + 6,6,198,198,254,124,11,12,24,12,1,0,193,192,195,128, + 199,0,206,0,220,0,248,0,252,0,206,0,199,0,195,128, + 193,192,192,224,8,12,12,10,1,0,192,192,192,192,192,192, + 192,192,192,192,255,255,11,12,24,13,1,0,224,224,224,224, + 224,224,241,224,241,224,209,96,219,96,219,96,202,96,206,96, + 206,96,196,96,10,12,24,12,1,0,224,192,240,192,240,192, + 216,192,216,192,204,192,204,192,198,192,198,192,195,192,195,192, + 193,192,11,12,24,13,1,0,31,0,63,128,113,192,96,192, + 224,224,192,96,192,96,224,224,96,192,113,192,63,128,31,0, + 9,12,24,11,1,0,254,0,255,0,195,128,193,128,193,128, + 195,128,255,0,254,0,192,0,192,0,192,0,192,0,11,13, + 26,13,1,255,31,0,63,128,113,192,96,192,224,224,192,96, + 192,96,226,96,103,192,115,192,63,128,31,192,0,128,10,12, + 24,12,1,0,255,0,255,128,193,128,193,128,195,128,255,0, + 255,0,195,128,193,128,193,128,193,192,193,192,9,12,24,11, + 1,0,62,0,127,0,227,128,193,128,240,0,126,0,31,0, + 3,128,193,128,227,128,127,0,62,0,10,12,24,10,0,0, + 255,192,255,192,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,10,12,24,12,1,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,12,24,11,0,0,192,192,192,192, + 97,128,97,128,97,128,51,0,51,0,51,0,30,0,30,0, + 12,0,12,0,14,12,24,15,0,0,195,12,195,12,195,12, + 99,24,103,152,103,152,52,176,60,240,60,240,24,96,24,96, + 24,96,9,12,24,11,1,0,193,128,227,128,99,0,54,0, + 62,0,28,0,28,0,62,0,54,0,99,0,227,128,193,128, + 10,12,24,11,0,0,192,192,225,192,97,128,51,0,51,0, + 30,0,30,0,12,0,12,0,12,0,12,0,12,0,8,12, + 12,10,1,0,255,255,7,6,12,28,56,48,96,224,255,255, + 4,15,15,6,1,253,240,240,192,192,192,192,192,192,192,192, + 192,192,192,240,240,4,12,12,5,0,0,128,128,192,64,64, + 96,32,32,48,16,16,16,4,15,15,6,0,253,240,240,48, + 48,48,48,48,48,48,48,48,48,48,240,240,8,7,7,10, + 1,5,24,24,60,102,102,195,195,9,1,2,9,0,253,255, + 128,3,3,3,6,2,10,128,192,32,8,9,9,9,1,0, + 124,254,198,14,126,230,198,254,119,8,12,12,10,1,0,192, + 192,192,220,254,231,195,195,195,231,254,220,8,9,9,9,1, + 0,60,126,231,192,192,192,231,126,60,8,12,12,10,1,0, + 3,3,3,63,127,231,195,195,195,231,127,59,8,9,9,10, + 1,0,60,126,195,255,255,192,231,126,60,4,12,12,6,1, + 0,48,112,96,240,240,96,96,96,96,96,96,96,8,13,13, + 10,1,252,59,127,231,195,195,195,231,127,59,3,231,126,60, + 8,12,12,10,1,0,192,192,192,222,255,227,195,195,195,195, + 195,195,2,12,12,4,1,0,192,192,0,192,192,192,192,192, + 192,192,192,192,3,16,16,5,1,252,96,96,0,96,96,96, + 96,96,96,96,96,96,96,96,224,192,8,12,12,9,1,0, + 192,192,192,199,206,220,248,252,236,206,198,199,2,12,12,4, + 1,0,192,192,192,192,192,192,192,192,192,192,192,192,12,9, + 18,14,1,0,222,224,255,240,231,48,198,48,198,48,198,48, + 198,48,198,48,198,48,8,9,9,10,1,0,222,255,227,195, + 195,195,195,195,195,8,9,9,10,1,0,60,126,231,195,195, + 195,231,126,60,8,13,13,10,1,252,220,254,231,195,195,195, + 231,254,220,192,192,192,192,8,13,13,10,1,252,59,127,231, + 195,195,195,231,127,59,3,3,3,3,5,9,9,6,1,0, + 216,248,224,192,192,192,192,192,192,7,9,9,9,1,0,124, + 254,198,240,124,14,198,254,124,4,11,11,6,1,0,96,96, + 240,240,96,96,96,96,96,112,48,8,9,9,10,1,0,195, + 195,195,195,195,195,199,255,123,8,9,9,9,0,0,195,195, + 102,102,102,60,60,24,24,12,9,18,13,0,0,198,48,198, + 48,102,96,102,96,111,96,63,192,57,192,25,128,25,128,7, + 9,9,9,1,0,198,198,108,124,56,124,108,198,198,8,13, + 13,9,0,252,195,195,99,102,54,54,60,28,24,24,24,112, + 96,7,9,9,8,0,0,254,254,14,28,24,56,112,254,254, + 4,15,15,6,1,253,48,112,96,96,96,96,96,192,96,96, + 96,96,96,112,48,1,16,16,4,1,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,192,224,96,96,96,96,96,48,96,96,96,96,96,224,192, + 8,3,3,10,1,3,113,153,142,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=19 x= 2 y=12 dx=18 dy= 0 ascent=18 len=38 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB14[5489] U8G_SECTION(".progmem.u8g_font_helvB14") = { + 0,22,29,254,249,14,3,23,6,234,32,255,252,18,251,14, + 252,0,0,0,5,0,1,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,192,192,0,224,224,224,5,5,5,7,1, + 9,216,216,216,216,144,11,13,26,11,0,0,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,27,0,255,192,255,192, + 54,0,54,0,54,0,10,16,32,10,0,254,4,0,63,0, + 127,128,229,128,228,0,228,0,124,0,63,0,15,128,9,192, + 233,192,233,192,127,128,63,0,8,0,8,0,13,13,26,16, + 1,0,120,96,252,96,204,192,204,128,253,128,123,0,2,0, + 6,240,13,248,9,152,25,152,49,248,48,240,13,14,28,14, + 1,0,30,0,63,0,115,128,97,128,115,0,62,0,28,96, + 126,96,231,224,195,192,193,192,227,224,127,112,62,56,2,5, + 5,4,1,9,192,192,192,192,128,6,18,18,7,1,252,28, + 56,48,112,96,224,224,224,224,224,224,224,224,96,112,48,56, + 28,6,18,18,7,0,252,224,112,48,56,24,28,28,28,28, + 28,28,28,28,24,56,48,112,224,7,6,6,9,1,8,16, + 214,124,56,108,68,8,8,8,11,1,1,24,24,24,255,255, + 24,24,24,3,6,6,5,1,253,224,224,224,96,192,128,5, + 3,3,6,0,4,248,248,248,3,3,3,5,1,0,224,224, + 224,5,14,14,5,0,0,24,24,24,56,48,48,48,112,96, + 96,224,192,192,192,9,13,26,10,0,0,28,0,127,0,119, + 0,227,128,227,128,227,128,227,128,227,128,227,128,227,128,119, + 0,127,0,28,0,6,13,13,10,1,0,28,60,252,252,28, + 28,28,28,28,28,28,28,28,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,3,128,7,0,31,0,62,0,120,0, + 112,0,224,0,255,128,255,128,9,13,26,10,0,0,62,0, + 127,0,231,0,227,0,7,0,30,0,31,0,7,128,3,128, + 227,128,231,128,127,0,62,0,9,13,26,10,0,0,7,0, + 15,0,31,0,63,0,55,0,119,0,103,0,231,0,255,128, + 255,128,7,0,7,0,7,0,9,13,26,10,0,0,255,0, + 255,0,224,0,224,0,254,0,255,0,231,128,3,128,3,128, + 227,128,231,128,255,0,126,0,9,13,26,10,0,0,63,0, + 127,128,113,128,224,0,238,0,255,0,243,128,225,128,225,128, + 225,128,243,128,127,0,62,0,9,13,26,10,0,0,255,128, + 255,128,3,128,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,112,0,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,227,128,127,0,62,0,119,0,227,128, + 227,128,227,128,127,0,62,0,9,13,26,10,0,0,62,0, + 127,0,231,128,195,128,195,128,195,128,231,128,127,128,59,128, + 3,128,199,0,255,0,126,0,3,10,10,6,1,0,224,224, + 224,0,0,0,0,224,224,224,3,13,13,6,1,253,224,224, + 224,0,0,0,0,224,224,224,96,192,128,9,9,18,11,1, + 0,3,128,15,128,62,0,120,0,224,0,120,0,62,0,15, + 128,3,128,9,5,10,11,1,3,255,128,255,128,0,0,255, + 128,255,128,9,9,18,11,1,0,224,0,248,0,62,0,15, + 0,3,128,15,0,62,0,248,0,224,0,8,14,14,10,1, + 0,126,255,231,231,14,30,28,56,56,56,0,56,56,56,16, + 17,34,18,1,253,7,240,31,252,60,30,112,6,99,183,231, + 243,198,99,204,99,204,195,204,198,204,198,239,252,231,184,112, + 0,60,0,31,240,7,240,12,14,28,14,1,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,11,14,28,14,2,0,254, + 0,255,128,227,192,225,192,225,192,227,128,255,128,255,192,225, + 224,224,224,224,224,225,224,255,192,255,0,12,14,28,14,1, + 0,15,128,63,224,120,224,112,112,240,112,224,0,224,0,224, + 0,224,0,240,112,112,112,120,224,63,224,15,128,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,112,224,112,224, + 112,224,112,224,112,224,112,224,224,225,224,255,192,255,0,10, + 14,28,13,2,0,255,192,255,192,224,0,224,0,224,0,224, + 0,255,128,255,128,224,0,224,0,224,0,224,0,255,192,255, + 192,10,14,28,12,1,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,224, + 0,224,0,12,14,28,15,1,0,15,128,63,224,120,224,112, + 112,240,112,224,0,224,0,227,240,227,240,240,112,112,112,120, + 240,63,240,31,176,12,14,28,14,1,0,224,112,224,112,224, + 112,224,112,224,112,224,112,255,240,255,240,224,112,224,112,224, + 112,224,112,224,112,224,112,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,9,14,28,10,0, + 0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,227,128,227,128,247,128,127,0,62,0,13,14,28, + 14,1,0,224,240,225,224,227,192,231,128,239,0,254,0,252, + 0,254,0,239,0,231,128,227,192,225,224,224,240,224,120,9, + 14,28,11,1,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,128,255, + 128,14,14,28,16,1,0,224,28,224,28,240,60,240,60,248, + 124,248,124,248,124,236,220,236,220,236,220,231,156,231,156,227, + 28,227,28,12,14,28,14,1,0,224,112,240,112,240,112,248, + 112,252,112,236,112,238,112,230,112,231,112,227,112,225,240,225, + 240,224,240,224,112,13,14,28,15,1,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,11,14,28,13,1,0,255,0,255, + 192,225,224,224,224,224,224,224,224,225,224,255,192,255,0,224, + 0,224,0,224,0,224,0,224,0,13,15,30,15,1,255,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,243,120,115,240,121,240,63,224,15,240,0,48,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,224,225,224,255, + 192,255,128,225,192,224,224,224,224,224,224,224,224,224,240,11, + 14,28,13,1,0,63,128,127,192,241,224,224,224,240,0,126, + 0,63,128,15,192,1,224,224,224,224,224,241,224,127,192,63, + 128,11,14,28,11,0,0,255,224,255,224,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,12,14,28,14,1,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,127,224,31,128,13,14,28,13,0,0,224,56,224,56,112, + 112,112,112,48,96,56,224,56,224,29,192,29,192,13,128,15, + 128,15,128,7,0,7,0,15,14,28,17,1,0,227,142,227, + 142,227,142,227,142,115,156,115,156,115,156,118,220,54,216,54, + 216,62,248,28,112,28,112,28,112,12,14,28,12,0,0,224, + 112,224,112,112,224,121,224,25,128,31,128,15,0,31,128,25, + 128,57,192,112,224,112,224,224,112,224,112,13,14,28,13,0, + 0,224,56,224,56,112,112,56,224,56,224,29,192,29,192,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,10,14,28, + 12,1,0,255,192,255,192,1,192,3,128,7,0,7,0,14, + 0,28,0,56,0,56,0,112,0,224,0,255,192,255,192,5, + 18,18,6,1,252,248,248,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,5,14,14,5,0,0,192,192,192, + 224,96,96,96,112,48,48,56,24,24,24,5,18,18,6,0, + 252,248,248,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,248,248,10,7,14,10,0,6,12,0,30,0,30,0,51, + 0,115,128,97,128,225,192,10,2,4,10,0,252,255,192,255, + 192,5,3,3,5,0,11,224,112,56,10,10,20,11,1,0, + 62,0,127,0,99,128,7,128,63,128,123,128,227,128,231,128, + 251,128,123,192,10,14,28,12,1,0,224,0,224,0,224,0, + 224,0,239,0,255,128,243,128,225,192,225,192,225,192,225,192, + 243,128,255,128,239,0,9,10,20,11,1,0,30,0,127,128, + 115,128,224,0,224,0,224,0,224,0,115,128,127,128,30,0, + 10,14,28,12,1,0,1,192,1,192,1,192,1,192,61,192, + 127,192,115,192,225,192,225,192,225,192,225,192,115,192,127,192, + 61,192,9,10,20,11,1,0,30,0,127,0,115,128,225,128, + 255,128,255,128,224,0,115,128,127,128,30,0,7,14,14,7, + 0,0,30,62,56,56,254,254,56,56,56,56,56,56,56,56, + 10,14,28,12,1,252,61,192,127,192,115,192,225,192,225,192, + 225,192,225,192,115,192,127,192,61,192,1,192,115,128,127,128, + 30,0,9,14,28,11,1,0,224,0,224,0,224,0,224,0, + 239,0,255,128,243,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,3,14,14,5,1,0,224,224,224,0,224,224, + 224,224,224,224,224,224,224,224,5,18,18,5,255,252,56,56, + 56,0,56,56,56,56,56,56,56,56,56,56,56,56,248,240, + 9,14,28,10,1,0,224,0,224,0,224,0,224,0,231,0, + 238,0,252,0,248,0,248,0,252,0,238,0,231,0,231,128, + 227,128,3,14,14,5,1,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,15,10,20,17,1,0,239,60,255,254, + 243,206,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 9,10,20,11,1,0,239,0,255,128,243,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,10,20,12,1,0, + 30,0,127,128,115,128,225,192,225,192,225,192,225,192,115,128, + 127,128,30,0,10,14,28,12,1,252,239,0,255,128,243,128, + 225,192,225,192,225,192,225,192,243,128,255,128,239,0,224,0, + 224,0,224,0,224,0,10,14,28,12,1,252,61,192,127,192, + 115,192,225,192,225,192,225,192,225,192,115,192,127,192,61,192, + 1,192,1,192,1,192,1,192,6,10,10,7,1,0,236,252, + 252,224,224,224,224,224,224,224,9,10,20,11,1,0,63,0, + 127,128,227,128,224,0,255,0,63,128,3,128,227,128,255,0, + 126,0,6,13,13,6,0,0,112,112,112,252,252,112,112,112, + 112,112,112,124,60,9,10,20,11,1,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 10,20,9,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,15,10,20,15,0,0,227, + 142,227,142,227,142,115,156,119,220,118,220,62,248,60,120,28, + 112,28,112,9,10,20,11,1,0,227,128,227,128,119,0,62, + 0,28,0,62,0,119,0,119,0,227,128,227,128,9,14,28, + 11,1,252,227,128,227,128,227,128,119,0,119,0,119,0,62, + 0,62,0,28,0,28,0,28,0,24,0,120,0,112,0,8, + 10,10,10,1,0,255,255,7,14,28,56,112,224,255,255,7, + 18,18,8,1,252,14,28,56,56,56,56,56,112,224,112,56, + 56,56,56,56,56,28,14,2,18,18,5,1,252,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,7, + 18,18,8,0,252,224,112,56,56,56,56,56,28,14,28,56, + 56,56,56,56,56,112,224,9,3,6,11,1,4,121,128,255, + 128,207,0,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,5,0,1,3,14,14,6,2,252, + 224,224,224,0,96,96,224,224,224,224,224,224,224,224,8,14, + 14,10,1,254,2,2,62,127,231,200,200,208,208,227,127,126, + 64,64,10,13,26,11,0,0,31,0,63,192,113,192,112,0, + 112,0,56,0,127,0,28,0,28,0,56,0,112,192,255,192, + 239,128,9,8,16,11,1,2,193,128,255,128,119,0,99,0, + 99,0,119,0,255,128,193,128,9,13,26,10,0,0,227,128, + 227,128,227,128,119,0,119,0,62,0,255,128,28,0,255,128, + 28,0,28,0,28,0,28,0,2,18,18,5,1,252,192,192, + 192,192,192,192,192,192,0,0,192,192,192,192,192,192,192,192, + 9,18,36,10,0,252,62,0,127,0,227,128,227,128,240,0, + 124,0,254,0,199,0,195,128,225,128,113,128,63,128,15,0, + 7,128,227,128,227,128,127,0,62,0,5,2,2,7,1,12, + 216,216,14,14,28,15,1,0,15,192,56,112,96,24,199,140, + 207,204,152,196,152,4,152,4,152,68,207,204,199,140,96,24, + 56,112,15,192,6,9,9,8,1,5,120,140,124,204,204,116, + 0,252,252,10,8,16,11,0,1,29,192,59,128,119,0,238, + 0,238,0,119,0,59,128,29,192,9,5,10,11,1,3,255, + 128,255,128,1,128,1,128,1,128,5,3,3,6,0,4,248, + 248,248,13,14,28,15,1,0,15,128,48,96,96,16,95,144, + 153,200,152,200,153,200,159,8,153,136,153,136,88,208,96,48, + 56,224,15,128,5,2,2,7,1,12,248,248,6,6,6,7, + 0,7,120,252,204,204,252,120,9,9,18,11,1,0,28,0, + 28,0,255,128,255,128,28,0,28,0,0,0,255,128,255,128, + 6,8,8,6,0,5,120,252,204,28,120,224,252,252,6,8, + 8,6,0,5,120,252,204,56,60,204,252,120,5,3,3,5, + 0,11,56,112,224,9,14,28,11,1,252,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,251,128,224, + 0,224,0,224,0,224,0,9,18,36,10,0,252,63,128,123, + 0,251,0,251,0,251,0,251,0,251,0,123,0,59,0,27, + 0,27,0,27,0,27,0,27,0,27,0,27,0,27,0,27, + 0,2,2,2,5,1,6,192,192,5,5,5,7,1,251,96, + 112,24,248,240,4,8,8,6,0,5,48,240,240,48,48,48, + 48,48,6,9,9,8,1,5,120,204,204,204,204,120,0,252, + 252,10,8,16,11,0,1,238,0,119,0,59,128,29,192,29, + 192,59,128,119,0,238,0,14,13,26,15,0,0,48,96,240, + 96,240,192,48,192,49,128,49,152,51,56,54,56,6,120,12, + 216,12,252,24,24,24,24,15,13,26,15,0,0,48,96,240, + 96,240,192,48,192,49,128,49,188,51,126,54,102,6,14,12, + 60,12,112,24,126,24,126,14,13,26,15,0,0,120,48,252, + 48,204,96,56,96,60,192,204,216,253,184,123,56,3,120,6, + 216,6,252,12,24,12,24,8,14,14,10,1,252,28,28,28, + 0,28,28,28,56,120,112,231,231,255,126,12,18,36,14,1, + 0,56,0,28,0,6,0,0,0,15,0,15,0,31,128,25, + 128,25,128,57,192,57,192,48,192,112,224,127,224,127,224,224, + 112,224,112,224,112,12,18,36,14,1,0,1,192,3,128,6, + 0,0,0,15,0,15,0,31,128,25,128,25,128,57,192,57, + 192,48,192,112,224,127,224,127,224,224,112,224,112,224,112,12, + 18,36,14,1,0,7,0,15,128,29,192,0,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,12,18,36,14,1,0,14, + 32,31,192,35,128,0,0,15,0,15,0,31,128,25,128,25, + 128,57,192,57,192,48,192,112,224,127,224,127,224,224,112,224, + 112,224,112,12,18,36,14,1,0,25,128,25,128,25,128,0, + 0,15,0,15,0,31,128,25,128,25,128,57,192,57,192,48, + 192,112,224,127,224,127,224,224,112,224,112,224,112,12,18,36, + 14,1,0,15,0,25,128,25,128,15,0,15,0,15,0,31, + 128,25,128,25,128,57,192,57,192,48,192,112,224,127,224,127, + 224,224,112,224,112,224,112,16,14,28,18,1,0,15,255,15, + 255,31,128,27,128,59,128,59,128,51,254,115,254,115,128,127, + 128,255,128,227,128,227,255,227,255,12,19,38,14,1,251,15, + 128,63,224,120,224,112,112,240,112,224,0,224,0,224,0,224, + 0,240,112,112,112,120,224,63,224,15,128,12,0,14,0,3, + 0,31,0,30,0,10,18,36,13,2,0,56,0,28,0,6, + 0,0,0,255,192,255,192,224,0,224,0,224,0,224,0,255, + 128,255,128,224,0,224,0,224,0,224,0,255,192,255,192,10, + 18,36,13,2,0,3,128,7,0,12,0,0,0,255,192,255, + 192,224,0,224,0,224,0,224,0,255,128,255,128,224,0,224, + 0,224,0,224,0,255,192,255,192,10,18,36,13,2,0,14, + 0,31,0,59,128,0,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,255, + 192,255,192,10,18,36,13,2,0,51,0,51,0,51,0,0, + 0,255,192,255,192,224,0,224,0,224,0,224,0,255,128,255, + 128,224,0,224,0,224,0,224,0,255,192,255,192,5,18,18, + 5,255,0,224,112,24,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,5,18,18,5,1,0,56,112,192,0,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,7,18,18, + 5,255,0,56,124,238,0,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,6,18,18,5,0,0,204,204,204,0,112, + 112,112,112,112,112,112,112,112,112,112,112,112,112,14,14,28, + 14,255,0,63,192,63,240,56,120,56,56,56,28,56,28,255, + 28,255,28,56,28,56,28,56,56,56,120,63,240,63,192,12, + 18,36,14,1,0,14,32,31,192,35,128,0,0,224,112,240, + 112,240,112,248,112,252,112,236,112,238,112,230,112,231,112,227, + 112,225,240,225,240,224,240,224,112,13,18,36,15,1,0,28, + 0,14,0,3,0,0,0,15,128,63,224,120,240,112,112,240, + 120,224,56,224,56,224,56,224,56,240,120,112,112,120,240,63, + 224,15,128,13,18,36,15,1,0,1,192,3,128,6,0,0, + 0,15,128,63,224,120,240,112,112,240,120,224,56,224,56,224, + 56,224,56,240,120,112,112,120,240,63,224,15,128,13,18,36, + 15,1,0,7,0,15,128,29,192,0,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,13,18,36,15,1,0,7,16,15, + 224,17,192,0,0,15,128,63,224,120,240,112,112,240,120,224, + 56,224,56,224,56,224,56,240,120,112,112,120,240,63,224,15, + 128,13,18,36,15,1,0,12,192,12,192,12,192,0,0,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,240,120,112,112,120,240,63,224,15,128,10,8,16,11,0, + 1,225,192,115,128,63,0,30,0,30,0,63,0,115,128,225, + 192,15,14,28,15,0,0,7,198,31,252,60,56,56,120,120, + 220,113,156,113,28,115,28,118,28,124,60,56,56,60,120,127, + 240,199,192,12,18,36,14,1,0,28,0,14,0,3,0,0, + 0,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,112,224,127,224,31,128,12,18,36, + 14,1,0,1,192,3,128,6,0,0,0,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,112,224,127,224,31,128,12,18,36,14,1,0,7,0,15, + 128,29,192,0,0,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,127,224,31, + 128,12,18,36,14,1,0,25,128,25,128,25,128,0,0,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,112,224,127,224,31,128,13,18,36,13,0, + 0,1,192,3,128,6,0,0,0,224,56,224,56,112,112,56, + 224,56,224,29,192,29,192,15,128,7,0,7,0,7,0,7, + 0,7,0,7,0,11,14,28,13,1,0,224,0,224,0,224, + 0,255,0,255,192,225,224,224,224,224,224,225,224,255,192,255, + 0,224,0,224,0,224,0,8,14,14,10,1,0,60,126,231, + 231,231,231,238,238,231,231,231,231,239,238,10,14,28,11,1, + 0,112,0,56,0,12,0,0,0,62,0,127,0,115,128,7, + 128,63,128,123,128,227,128,231,128,251,128,123,192,10,14,28, + 11,1,0,3,128,7,0,12,0,0,0,62,0,127,0,115, + 128,7,128,63,128,123,128,227,128,231,128,251,128,123,192,10, + 14,28,11,1,0,28,0,62,0,119,0,0,0,62,0,127, + 0,115,128,7,128,63,128,123,128,227,128,231,128,251,128,123, + 192,10,14,28,11,1,0,59,0,127,0,110,0,0,0,62, + 0,127,0,115,128,7,128,63,128,123,128,227,128,231,128,251, + 128,123,192,10,14,28,11,1,0,51,0,51,0,51,0,0, + 0,62,0,127,0,115,128,7,128,63,128,123,128,227,128,231, + 128,251,128,123,192,10,14,28,11,1,0,60,0,102,0,102, + 0,60,0,62,0,127,0,115,128,7,128,63,128,123,128,227, + 128,231,128,251,128,123,192,14,10,20,16,1,0,61,240,127, + 248,103,28,15,28,63,252,119,0,231,0,239,156,255,252,121, + 240,9,15,30,10,1,251,30,0,127,128,115,128,224,0,224, + 0,224,0,224,0,115,128,127,128,30,0,24,0,28,0,6, + 0,62,0,60,0,9,14,28,11,1,0,112,0,56,0,12, + 0,0,0,30,0,127,0,115,128,225,128,255,128,255,128,224, + 0,115,128,127,128,30,0,9,14,28,11,1,0,3,128,7, + 0,12,0,0,0,30,0,127,0,115,128,225,128,255,128,255, + 128,224,0,115,128,127,128,30,0,9,14,28,11,1,0,28, + 0,62,0,119,0,0,0,30,0,127,0,115,128,225,128,255, + 128,255,128,224,0,115,128,127,128,30,0,9,14,28,11,1, + 0,51,0,51,0,51,0,0,0,30,0,127,0,115,128,225, + 128,255,128,255,128,224,0,115,128,127,128,30,0,5,14,14, + 5,255,0,224,112,24,0,56,56,56,56,56,56,56,56,56, + 56,5,14,14,5,1,0,56,112,192,0,224,224,224,224,224, + 224,224,224,224,224,7,14,14,5,255,0,56,124,238,0,56, + 56,56,56,56,56,56,56,56,56,5,14,14,5,0,0,216, + 216,216,0,112,112,112,112,112,112,112,112,112,112,10,14,28, + 12,1,0,96,0,55,0,60,0,102,0,31,0,127,128,115, + 128,225,192,225,192,225,192,225,192,115,128,127,128,30,0,9, + 14,28,11,1,0,59,0,127,0,110,0,0,0,239,0,255, + 128,243,128,227,128,227,128,227,128,227,128,227,128,227,128,227, + 128,10,14,28,12,1,0,112,0,56,0,12,0,0,0,30, + 0,127,128,115,128,225,192,225,192,225,192,225,192,115,128,127, + 128,30,0,10,14,28,12,1,0,3,128,7,0,12,0,0, + 0,30,0,127,128,115,128,225,192,225,192,225,192,225,192,115, + 128,127,128,30,0,10,14,28,12,1,0,28,0,62,0,119, + 0,0,0,30,0,127,128,115,128,225,192,225,192,225,192,225, + 192,115,128,127,128,30,0,10,14,28,12,1,0,59,0,127, + 0,110,0,0,0,30,0,127,128,115,128,225,192,225,192,225, + 192,225,192,115,128,127,128,30,0,10,14,28,12,1,0,51, + 0,51,0,51,0,0,0,30,0,127,128,115,128,225,192,225, + 192,225,192,225,192,115,128,127,128,30,0,9,8,16,11,1, + 1,28,0,28,0,0,0,255,128,255,128,0,0,28,0,28, + 0,12,10,20,12,0,0,15,48,63,224,57,192,115,224,119, + 224,126,224,124,224,57,192,127,192,207,0,9,14,28,11,1, + 0,112,0,56,0,12,0,0,0,227,128,227,128,227,128,227, + 128,227,128,227,128,227,128,231,128,255,128,123,128,9,14,28, + 11,1,0,3,128,7,0,12,0,0,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 14,28,11,1,0,28,0,62,0,119,0,0,0,227,128,227, + 128,227,128,227,128,227,128,227,128,227,128,231,128,255,128,123, + 128,9,14,28,11,1,0,51,0,51,0,51,0,0,0,227, + 128,227,128,227,128,227,128,227,128,227,128,227,128,231,128,255, + 128,123,128,9,18,36,11,1,252,7,0,14,0,24,0,0, + 0,227,128,227,128,227,128,119,0,119,0,119,0,62,0,62, + 0,28,0,28,0,28,0,24,0,120,0,112,0,10,18,36, + 12,1,252,224,0,224,0,224,0,224,0,239,0,255,128,243, + 128,225,192,225,192,225,192,225,192,243,128,255,128,239,0,224, + 0,224,0,224,0,224,0,9,18,36,11,1,252,51,0,51, + 0,51,0,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,28,0,24,0,120,0,112, + 0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=11 dx=18 dy= 0 ascent=14 len=34 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB14r[2548] U8G_SECTION(".progmem.u8g_font_helvB14r") = { + 0,22,29,254,249,14,3,23,6,234,32,127,252,14,252,14, + 252,0,0,0,5,0,1,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,192,192,0,224,224,224,5,5,5,7,1, + 9,216,216,216,216,144,11,13,26,11,0,0,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,27,0,255,192,255,192, + 54,0,54,0,54,0,10,16,32,10,0,254,4,0,63,0, + 127,128,229,128,228,0,228,0,124,0,63,0,15,128,9,192, + 233,192,233,192,127,128,63,0,8,0,8,0,13,13,26,16, + 1,0,120,96,252,96,204,192,204,128,253,128,123,0,2,0, + 6,240,13,248,9,152,25,152,49,248,48,240,13,14,28,14, + 1,0,30,0,63,0,115,128,97,128,115,0,62,0,28,96, + 126,96,231,224,195,192,193,192,227,224,127,112,62,56,2,5, + 5,4,1,9,192,192,192,192,128,6,18,18,7,1,252,28, + 56,48,112,96,224,224,224,224,224,224,224,224,96,112,48,56, + 28,6,18,18,7,0,252,224,112,48,56,24,28,28,28,28, + 28,28,28,28,24,56,48,112,224,7,6,6,9,1,8,16, + 214,124,56,108,68,8,8,8,11,1,1,24,24,24,255,255, + 24,24,24,3,6,6,5,1,253,224,224,224,96,192,128,5, + 3,3,6,0,4,248,248,248,3,3,3,5,1,0,224,224, + 224,5,14,14,5,0,0,24,24,24,56,48,48,48,112,96, + 96,224,192,192,192,9,13,26,10,0,0,28,0,127,0,119, + 0,227,128,227,128,227,128,227,128,227,128,227,128,227,128,119, + 0,127,0,28,0,6,13,13,10,1,0,28,60,252,252,28, + 28,28,28,28,28,28,28,28,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,3,128,7,0,31,0,62,0,120,0, + 112,0,224,0,255,128,255,128,9,13,26,10,0,0,62,0, + 127,0,231,0,227,0,7,0,30,0,31,0,7,128,3,128, + 227,128,231,128,127,0,62,0,9,13,26,10,0,0,7,0, + 15,0,31,0,63,0,55,0,119,0,103,0,231,0,255,128, + 255,128,7,0,7,0,7,0,9,13,26,10,0,0,255,0, + 255,0,224,0,224,0,254,0,255,0,231,128,3,128,3,128, + 227,128,231,128,255,0,126,0,9,13,26,10,0,0,63,0, + 127,128,113,128,224,0,238,0,255,0,243,128,225,128,225,128, + 225,128,243,128,127,0,62,0,9,13,26,10,0,0,255,128, + 255,128,3,128,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,112,0,9,13,26,10,0,0,62,0, + 127,0,227,128,227,128,227,128,127,0,62,0,119,0,227,128, + 227,128,227,128,127,0,62,0,9,13,26,10,0,0,62,0, + 127,0,231,128,195,128,195,128,195,128,231,128,127,128,59,128, + 3,128,199,0,255,0,126,0,3,10,10,6,1,0,224,224, + 224,0,0,0,0,224,224,224,3,13,13,6,1,253,224,224, + 224,0,0,0,0,224,224,224,96,192,128,9,9,18,11,1, + 0,3,128,15,128,62,0,120,0,224,0,120,0,62,0,15, + 128,3,128,9,5,10,11,1,3,255,128,255,128,0,0,255, + 128,255,128,9,9,18,11,1,0,224,0,248,0,62,0,15, + 0,3,128,15,0,62,0,248,0,224,0,8,14,14,10,1, + 0,126,255,231,231,14,30,28,56,56,56,0,56,56,56,16, + 17,34,18,1,253,7,240,31,252,60,30,112,6,99,183,231, + 243,198,99,204,99,204,195,204,198,204,198,239,252,231,184,112, + 0,60,0,31,240,7,240,12,14,28,14,1,0,15,0,15, + 0,31,128,25,128,25,128,57,192,57,192,48,192,112,224,127, + 224,127,224,224,112,224,112,224,112,11,14,28,14,2,0,254, + 0,255,128,227,192,225,192,225,192,227,128,255,128,255,192,225, + 224,224,224,224,224,225,224,255,192,255,0,12,14,28,14,1, + 0,15,128,63,224,120,224,112,112,240,112,224,0,224,0,224, + 0,224,0,240,112,112,112,120,224,63,224,15,128,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,112,224,112,224, + 112,224,112,224,112,224,112,224,224,225,224,255,192,255,0,10, + 14,28,13,2,0,255,192,255,192,224,0,224,0,224,0,224, + 0,255,128,255,128,224,0,224,0,224,0,224,0,255,192,255, + 192,10,14,28,12,1,0,255,192,255,192,224,0,224,0,224, + 0,224,0,255,128,255,128,224,0,224,0,224,0,224,0,224, + 0,224,0,12,14,28,15,1,0,15,128,63,224,120,224,112, + 112,240,112,224,0,224,0,227,240,227,240,240,112,112,112,120, + 240,63,240,31,176,12,14,28,14,1,0,224,112,224,112,224, + 112,224,112,224,112,224,112,255,240,255,240,224,112,224,112,224, + 112,224,112,224,112,224,112,3,14,14,5,1,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,9,14,28,10,0, + 0,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,227,128,227,128,247,128,127,0,62,0,13,14,28, + 14,1,0,224,240,225,224,227,192,231,128,239,0,254,0,252, + 0,254,0,239,0,231,128,227,192,225,224,224,240,224,120,9, + 14,28,11,1,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,255,128,255, + 128,14,14,28,16,1,0,224,28,224,28,240,60,240,60,248, + 124,248,124,248,124,236,220,236,220,236,220,231,156,231,156,227, + 28,227,28,12,14,28,14,1,0,224,112,240,112,240,112,248, + 112,252,112,236,112,238,112,230,112,231,112,227,112,225,240,225, + 240,224,240,224,112,13,14,28,15,1,0,15,128,63,224,120, + 240,112,112,240,120,224,56,224,56,224,56,224,56,240,120,112, + 112,120,240,63,224,15,128,11,14,28,13,1,0,255,0,255, + 192,225,224,224,224,224,224,224,224,225,224,255,192,255,0,224, + 0,224,0,224,0,224,0,224,0,13,15,30,15,1,255,15, + 128,63,224,120,240,112,112,240,120,224,56,224,56,224,56,224, + 56,243,120,115,240,121,240,63,224,15,240,0,48,12,14,28, + 14,1,0,255,0,255,192,225,224,224,224,224,224,225,224,255, + 192,255,128,225,192,224,224,224,224,224,224,224,224,224,240,11, + 14,28,13,1,0,63,128,127,192,241,224,224,224,240,0,126, + 0,63,128,15,192,1,224,224,224,224,224,241,224,127,192,63, + 128,11,14,28,11,0,0,255,224,255,224,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,12,14,28,14,1,0,224,112,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,127,224,31,128,13,14,28,13,0,0,224,56,224,56,112, + 112,112,112,48,96,56,224,56,224,29,192,29,192,13,128,15, + 128,15,128,7,0,7,0,15,14,28,17,1,0,227,142,227, + 142,227,142,227,142,115,156,115,156,115,156,118,220,54,216,54, + 216,62,248,28,112,28,112,28,112,12,14,28,12,0,0,224, + 112,224,112,112,224,121,224,25,128,31,128,15,0,31,128,25, + 128,57,192,112,224,112,224,224,112,224,112,13,14,28,13,0, + 0,224,56,224,56,112,112,56,224,56,224,29,192,29,192,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,10,14,28, + 12,1,0,255,192,255,192,1,192,3,128,7,0,7,0,14, + 0,28,0,56,0,56,0,112,0,224,0,255,192,255,192,5, + 18,18,6,1,252,248,248,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,248,248,5,14,14,5,0,0,192,192,192, + 224,96,96,96,112,48,48,56,24,24,24,5,18,18,6,0, + 252,248,248,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,248,248,10,7,14,10,0,6,12,0,30,0,30,0,51, + 0,115,128,97,128,225,192,10,2,4,10,0,252,255,192,255, + 192,5,3,3,5,0,11,224,112,56,10,10,20,11,1,0, + 62,0,127,0,99,128,7,128,63,128,123,128,227,128,231,128, + 251,128,123,192,10,14,28,12,1,0,224,0,224,0,224,0, + 224,0,239,0,255,128,243,128,225,192,225,192,225,192,225,192, + 243,128,255,128,239,0,9,10,20,11,1,0,30,0,127,128, + 115,128,224,0,224,0,224,0,224,0,115,128,127,128,30,0, + 10,14,28,12,1,0,1,192,1,192,1,192,1,192,61,192, + 127,192,115,192,225,192,225,192,225,192,225,192,115,192,127,192, + 61,192,9,10,20,11,1,0,30,0,127,0,115,128,225,128, + 255,128,255,128,224,0,115,128,127,128,30,0,7,14,14,7, + 0,0,30,62,56,56,254,254,56,56,56,56,56,56,56,56, + 10,14,28,12,1,252,61,192,127,192,115,192,225,192,225,192, + 225,192,225,192,115,192,127,192,61,192,1,192,115,128,127,128, + 30,0,9,14,28,11,1,0,224,0,224,0,224,0,224,0, + 239,0,255,128,243,128,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,3,14,14,5,1,0,224,224,224,0,224,224, + 224,224,224,224,224,224,224,224,5,18,18,5,255,252,56,56, + 56,0,56,56,56,56,56,56,56,56,56,56,56,56,248,240, + 9,14,28,10,1,0,224,0,224,0,224,0,224,0,231,0, + 238,0,252,0,248,0,248,0,252,0,238,0,231,0,231,128, + 227,128,3,14,14,5,1,0,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,15,10,20,17,1,0,239,60,255,254, + 243,206,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 9,10,20,11,1,0,239,0,255,128,243,128,227,128,227,128, + 227,128,227,128,227,128,227,128,227,128,10,10,20,12,1,0, + 30,0,127,128,115,128,225,192,225,192,225,192,225,192,115,128, + 127,128,30,0,10,14,28,12,1,252,239,0,255,128,243,128, + 225,192,225,192,225,192,225,192,243,128,255,128,239,0,224,0, + 224,0,224,0,224,0,10,14,28,12,1,252,61,192,127,192, + 115,192,225,192,225,192,225,192,225,192,115,192,127,192,61,192, + 1,192,1,192,1,192,1,192,6,10,10,7,1,0,236,252, + 252,224,224,224,224,224,224,224,9,10,20,11,1,0,63,0, + 127,128,227,128,224,0,255,0,63,128,3,128,227,128,255,0, + 126,0,6,13,13,6,0,0,112,112,112,252,252,112,112,112, + 112,112,112,124,60,9,10,20,11,1,0,227,128,227,128,227, + 128,227,128,227,128,227,128,227,128,231,128,255,128,123,128,9, + 10,20,9,0,0,227,128,227,128,227,128,119,0,119,0,119, + 0,62,0,62,0,28,0,28,0,15,10,20,15,0,0,227, + 142,227,142,227,142,115,156,119,220,118,220,62,248,60,120,28, + 112,28,112,9,10,20,11,1,0,227,128,227,128,119,0,62, + 0,28,0,62,0,119,0,119,0,227,128,227,128,9,14,28, + 11,1,252,227,128,227,128,227,128,119,0,119,0,119,0,62, + 0,62,0,28,0,28,0,28,0,24,0,120,0,112,0,8, + 10,10,10,1,0,255,255,7,14,28,56,112,224,255,255,7, + 18,18,8,1,252,14,28,56,56,56,56,56,112,224,112,56, + 56,56,56,56,56,28,14,2,18,18,5,1,252,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,7, + 18,18,8,0,252,224,112,56,56,56,56,56,28,14,28,56, + 56,56,56,56,56,112,224,9,3,6,11,1,4,121,128,255, + 128,207,0,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=17 dx=24 dy= 0 ascent=24 len=72 + Font Bounding box w=28 h=37 x=-2 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB18[7527] U8G_SECTION(".progmem.u8g_font_helvB18") = { + 0,28,37,254,248,19,4,35,9,107,32,255,251,24,251,19, + 251,0,0,0,6,0,1,3,19,19,7,2,0,224,224,224, + 224,224,224,224,224,224,224,224,192,192,192,0,0,224,224,224, + 5,6,6,9,2,13,216,216,216,216,216,144,12,18,36,14, + 1,0,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,25,128,255,224,255,224,51,0,51,0, + 51,0,51,0,51,0,12,21,42,13,0,254,6,0,63,128, + 127,224,246,224,230,112,230,112,246,0,126,0,62,0,15,0, + 7,192,7,224,6,240,230,112,230,112,230,112,246,240,127,224, + 31,192,6,0,6,0,21,18,54,22,0,0,0,7,0,62, + 7,0,127,14,0,227,142,0,193,156,0,193,156,0,227,184, + 0,127,56,0,62,112,0,0,112,0,0,227,224,0,231,240, + 1,206,56,1,204,24,3,140,24,3,142,56,7,7,240,7, + 3,224,16,18,36,18,1,0,15,128,31,192,61,224,56,224, + 56,224,56,224,29,192,15,128,31,0,63,156,123,220,113,252, + 224,248,224,112,224,248,241,252,127,206,31,135,2,6,6,6, + 2,13,192,192,192,192,192,128,6,24,24,8,1,251,12,28, + 56,56,112,112,96,224,224,224,224,224,224,224,224,224,224,96, + 112,112,56,56,28,12,6,24,24,8,1,251,192,224,112,112, + 56,56,24,28,28,28,28,28,28,28,28,28,28,24,56,56, + 112,112,224,192,8,7,7,10,1,12,24,24,219,255,60,102, + 102,12,12,24,15,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,3, + 6,6,7,2,253,224,224,224,96,96,192,7,3,3,8,0, + 6,254,254,254,3,3,3,7,2,0,224,224,224,7,19,19, + 8,1,0,6,6,6,12,12,12,24,24,24,24,48,48,48, + 96,96,96,192,192,192,12,18,36,13,0,0,31,128,63,192, + 121,224,112,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,112,224,112,224,121,224,63,192,31,128, + 7,18,18,13,2,0,14,14,30,254,254,14,14,14,14,14, + 14,14,14,14,14,14,14,14,12,18,36,13,0,0,31,0, + 127,192,113,224,224,224,224,112,224,112,0,112,0,224,1,224, + 3,192,7,128,31,0,60,0,120,0,240,0,224,0,255,240, + 255,240,12,18,36,13,0,0,31,0,127,192,113,192,224,224, + 224,224,224,224,0,224,1,192,15,128,15,224,0,224,0,112, + 0,112,224,112,224,240,113,224,127,224,31,128,12,18,36,13, + 0,0,1,192,3,192,3,192,7,192,7,192,13,192,29,192, + 25,192,49,192,113,192,97,192,225,192,255,240,255,240,1,192, + 1,192,1,192,1,192,12,18,36,13,0,0,127,224,127,224, + 112,0,112,0,112,0,112,0,127,128,127,192,113,224,0,224, + 0,112,0,112,0,112,224,112,224,240,241,224,127,192,31,128, + 12,18,36,13,0,0,15,128,63,224,120,224,112,112,224,112, + 224,0,224,0,239,0,255,192,249,224,240,224,224,112,224,112, + 224,112,112,224,121,224,63,192,31,128,12,18,36,13,0,0, + 255,240,255,240,0,240,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,14,0,14,0,30,0,28,0,28,0,60,0, + 56,0,56,0,12,18,36,13,0,0,15,0,63,192,57,192, + 112,224,112,224,112,224,112,224,57,192,31,128,63,192,112,224, + 224,112,224,112,224,112,224,112,112,224,127,224,31,128,12,18, + 36,13,0,0,31,128,127,192,121,224,240,224,224,112,224,112, + 224,112,224,112,240,240,121,240,127,240,31,112,0,112,0,112, + 224,224,243,224,127,192,31,0,3,14,14,7,2,0,224,224, + 224,0,0,0,0,0,0,0,0,224,224,224,3,17,17,7, + 2,253,224,224,224,0,0,0,0,0,0,0,0,224,224,224, + 96,96,192,13,12,24,15,0,1,0,56,0,248,3,224,15, + 128,62,0,240,0,240,0,62,0,15,128,3,224,0,248,0, + 56,10,5,10,14,2,5,255,192,255,192,0,0,255,192,255, + 192,13,12,24,14,1,1,224,0,248,0,62,0,15,128,3, + 224,0,120,0,120,3,224,15,128,62,0,248,0,224,0,11, + 19,38,15,2,0,31,128,127,192,121,224,240,224,224,224,225, + 224,1,192,3,192,7,128,7,0,14,0,14,0,14,0,14, + 0,0,0,0,0,14,0,14,0,14,0,22,22,66,24,1, + 252,1,255,0,7,255,192,15,129,240,30,0,120,60,0,56, + 120,125,156,112,255,156,241,199,28,227,135,28,227,14,28,231, + 14,56,231,12,56,231,28,112,231,28,112,227,157,224,243,255, + 192,113,247,0,120,0,0,60,0,0,31,7,0,15,255,0, + 3,252,0,16,19,38,18,1,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,15, + 19,38,18,2,0,255,224,255,248,224,120,224,28,224,28,224, + 28,224,28,224,56,255,240,255,248,224,28,224,14,224,14,224, + 14,224,14,224,30,224,124,255,248,255,224,16,19,38,18,1, + 0,7,240,31,252,62,62,120,15,112,7,240,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,7,112,7,120, + 15,62,62,31,252,7,240,16,19,38,19,2,0,255,224,255, + 248,224,124,224,30,224,14,224,15,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,224,14,224,30,224,124,255, + 248,255,224,13,19,38,16,2,0,255,240,255,240,224,0,224, + 0,224,0,224,0,224,0,224,0,255,224,255,224,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,248,255,248,12, + 19,38,15,2,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,255,224,255,224,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,17,19,57,19,1, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,0,0,224,0,0,224,0,0,224,0,0,224,127,128,224, + 127,128,224,3,128,224,3,128,240,3,128,112,7,128,120,15, + 128,62,63,128,31,251,128,7,243,128,15,19,38,19,2,0, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,3,19,19,7,2,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 19,38,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,224,224,224, + 224,224,224,224,224,113,224,127,192,63,128,14,19,38,18,2, + 0,224,60,224,120,224,240,225,224,227,192,231,128,239,0,254, + 0,254,0,255,0,247,128,227,128,225,192,225,224,224,224,224, + 112,224,120,224,56,224,60,12,19,38,15,2,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,19,19,57,23,2,0,224,0,224,240,1,224,240, + 1,224,248,3,224,248,3,224,252,7,224,236,6,224,238,14, + 224,230,12,224,231,28,224,231,28,224,227,24,224,227,184,224, + 227,184,224,225,240,224,225,240,224,224,224,224,224,224,224,224, + 224,224,15,19,38,19,2,0,224,14,240,14,240,14,248,14, + 248,14,252,14,238,14,238,14,231,14,227,142,227,142,225,206, + 224,206,224,238,224,126,224,62,224,62,224,30,224,14,17,19, + 57,19,1,0,7,240,0,31,252,0,62,62,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,240,7,128,112,7, + 0,120,15,0,62,62,0,31,252,0,7,240,0,14,19,38, + 17,2,0,255,224,255,248,224,56,224,28,224,28,224,28,224, + 28,224,56,255,248,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,17,20,60,19,1,255,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,39,128,112,119,0,120,63,0,62, + 30,0,31,254,0,7,247,0,0,2,0,14,19,38,17,2, + 0,255,224,255,248,224,56,224,28,224,28,224,28,224,28,224, + 56,255,248,255,240,224,120,224,56,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,14,19,38,17,2,0,15,192,63, + 240,120,248,240,56,224,56,224,0,240,0,124,0,63,192,7, + 240,0,248,0,60,0,28,224,28,224,28,224,60,248,248,127, + 240,31,192,15,19,38,15,0,0,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 19,38,19,2,0,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,112,28,124,124,63,248,15,224,16,19,38,18,1, + 0,224,7,224,7,240,15,112,14,120,30,56,28,56,28,60, + 60,28,56,28,56,30,120,14,112,14,112,14,112,7,224,7, + 224,3,192,3,192,3,192,21,19,57,23,1,0,224,112,56, + 224,112,56,224,112,56,224,112,56,112,248,112,112,248,112,112, + 216,112,113,220,112,49,220,96,57,220,224,57,140,224,59,142, + 224,27,142,192,27,142,192,31,7,192,31,7,192,14,3,128, + 14,3,128,14,3,128,16,19,38,18,1,0,224,7,240,15, + 120,30,56,28,28,56,14,112,15,240,7,224,3,192,3,192, + 7,224,15,240,14,112,28,56,60,60,56,28,112,14,240,15, + 224,7,15,19,38,17,1,0,224,14,240,14,112,28,120,28, + 56,56,60,56,28,112,28,112,14,224,14,224,7,192,7,192, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,14,19, + 38,16,1,0,255,252,255,252,0,60,0,120,0,240,1,224, + 1,224,3,192,7,128,7,128,15,0,30,0,30,0,60,0, + 56,0,120,0,240,0,255,252,255,252,5,24,24,8,1,251, + 248,248,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,248,248,7,19,19,8,0,0,192,192, + 192,96,96,96,48,48,48,48,24,24,24,12,12,12,6,6, + 6,5,24,24,8,2,251,248,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,248,248,11, + 9,18,14,1,10,14,0,14,0,31,0,27,0,59,128,113, + 192,113,192,224,224,224,224,14,2,4,14,0,251,255,252,255, + 252,6,4,4,8,1,15,224,112,56,28,12,14,28,14,1, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 15,2,0,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,11,14,28,13,1,0,31, + 128,63,192,121,224,112,224,224,0,224,0,224,0,224,0,224, + 0,224,0,112,224,121,224,63,192,31,128,12,19,38,15,1, + 0,0,112,0,112,0,112,0,112,0,112,31,112,63,240,121, + 240,112,240,224,112,224,112,224,112,224,112,224,112,224,112,112, + 240,121,240,63,240,31,112,12,14,28,14,1,0,15,0,63, + 192,121,224,112,224,224,112,224,112,255,240,255,240,224,0,224, + 0,112,112,120,240,63,224,15,128,7,19,19,9,1,0,30, + 62,56,56,56,254,254,56,56,56,56,56,56,56,56,56,56, + 56,56,12,19,38,15,1,251,31,112,63,240,121,240,112,240, + 224,112,224,112,224,112,224,112,224,112,224,112,112,240,121,240, + 63,240,31,112,0,112,224,112,240,224,127,224,31,128,11,19, + 38,15,2,0,224,0,224,0,224,0,224,0,224,0,239,0, + 255,192,241,192,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,3,19,19,7,2,0, + 224,224,224,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,5,24,24,7,0,251,56,56,56,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,248, + 240,11,19,38,14,2,0,224,0,224,0,224,0,224,0,224, + 0,225,192,227,192,231,128,239,0,254,0,252,0,254,0,239, + 0,231,0,231,128,227,192,225,192,225,224,224,224,3,19,19, + 7,2,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,17,14,42,21,2,0,239,62,0,255, + 255,0,243,231,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,225,195,128,225,195,128,225,195,128, + 225,195,128,225,195,128,11,14,28,15,2,0,239,128,255,192, + 241,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,12,14,28,14,1,0,15,0, + 63,192,121,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,112,224,121,224,63,192,15,0,12,19,38,15,2,251, + 239,128,255,192,249,224,240,224,224,112,224,112,224,112,224,112, + 224,112,224,112,240,224,249,224,255,192,239,128,224,0,224,0, + 224,0,224,0,224,0,12,19,38,15,1,251,31,112,63,240, + 121,240,112,240,224,112,224,112,224,112,224,112,224,112,224,112, + 112,240,121,240,63,240,31,112,0,112,0,112,0,112,0,112, + 0,112,7,14,14,10,2,0,238,254,254,240,224,224,224,224, + 224,224,224,224,224,224,11,14,28,13,1,0,63,0,127,128, + 243,192,225,192,224,0,252,0,127,128,15,192,1,224,224,224, + 224,224,241,224,127,192,63,128,7,18,18,9,1,0,56,56, + 56,56,254,254,56,56,56,56,56,56,56,56,56,56,62,30, + 11,14,28,15,2,0,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,225,224,115,224,126,224, + 28,224,12,14,28,14,1,0,224,112,224,112,224,112,112,224, + 112,224,112,224,57,192,57,192,57,192,31,128,31,128,15,0, + 15,0,15,0,19,14,42,19,0,0,224,224,224,224,224,224, + 96,224,192,113,241,192,113,241,192,49,177,128,51,185,128,59, + 187,128,27,27,0,31,31,0,31,31,0,14,14,0,14,14, + 0,14,14,0,11,14,28,13,1,0,224,224,241,224,113,192, + 59,128,63,128,31,0,14,0,31,0,31,0,59,128,123,192, + 113,192,241,224,224,224,13,19,38,15,1,251,224,56,224,56, + 112,56,120,112,56,112,60,240,28,224,28,224,15,192,15,192, + 7,192,7,128,3,128,3,128,7,0,7,0,14,0,62,0, + 60,0,11,14,28,13,1,0,255,224,255,224,1,192,3,128, + 7,128,15,0,14,0,30,0,60,0,56,0,112,0,240,0, + 255,224,255,224,7,24,24,10,1,251,14,28,56,56,56,56, + 56,56,56,56,112,224,224,112,56,56,56,56,56,56,56,56, + 28,14,2,24,24,7,3,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,24,24,10,2,251,224,112,56,56,56,56,56,56,56,56, + 28,14,14,28,56,56,56,56,56,56,56,56,112,224,11,4, + 8,14,1,5,120,224,254,224,239,224,227,192,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 6,0,1,3,19,19,7,2,251,224,224,224,0,0,96,96, + 96,224,224,224,224,224,224,224,224,224,224,224,11,18,36,14, + 1,254,1,128,1,128,31,128,63,192,123,224,115,96,227,0, + 230,0,230,0,230,0,230,0,236,0,236,224,125,224,127,192, + 63,128,24,0,24,0,13,18,36,14,1,0,31,128,63,192, + 112,224,112,224,112,0,120,0,56,0,28,0,255,192,255,192, + 28,0,28,0,28,0,56,0,56,0,127,56,255,248,241,240, + 12,12,24,14,1,3,192,48,239,112,127,224,57,192,112,224, + 112,224,112,224,112,224,57,192,127,224,239,112,192,48,13,18, + 36,14,0,0,224,56,224,56,112,112,112,112,56,224,56,224, + 29,192,29,192,127,240,127,240,7,0,127,240,127,240,7,0, + 7,0,7,0,7,0,7,0,2,24,24,7,3,251,192,192, + 192,192,192,192,192,192,192,192,0,0,0,0,192,192,192,192, + 192,192,192,192,192,192,12,24,48,14,1,251,31,128,63,192, + 121,224,112,224,120,224,60,0,30,0,127,0,247,128,227,192, + 225,224,224,224,112,112,120,112,60,112,30,224,15,192,7,128, + 3,192,113,224,112,224,121,224,63,192,31,128,7,2,2,9, + 1,16,238,238,19,19,57,19,0,0,1,240,0,15,254,0, + 30,15,0,56,3,128,112,1,192,97,240,192,227,184,224,198, + 12,96,198,0,96,198,0,96,198,0,96,198,12,96,227,184, + 224,97,240,192,112,1,192,56,3,128,30,15,0,15,254,0, + 1,240,0,8,12,12,10,1,7,124,254,198,30,126,230,198, + 255,123,0,255,255,10,8,16,13,1,3,29,192,59,128,119, + 0,238,0,238,0,119,0,59,128,29,192,12,7,14,15,1, + 4,255,240,255,240,0,48,0,48,0,48,0,48,0,48,7, + 3,3,8,0,6,254,254,254,19,19,57,19,0,0,3,248, + 0,15,254,0,28,15,0,56,3,128,115,249,192,99,28,192, + 227,12,224,195,12,96,195,24,96,195,240,96,195,48,96,195, + 24,96,227,24,96,99,12,224,112,0,192,56,1,192,30,3, + 128,15,254,0,3,248,0,7,2,2,9,1,17,254,254,8, + 7,7,9,0,11,60,102,195,195,195,102,60,11,13,26,15, + 2,0,14,0,14,0,14,0,14,0,255,224,255,224,14,0, + 14,0,14,0,14,0,0,0,255,224,255,224,6,10,10,7, + 0,8,120,252,204,12,28,120,224,192,252,252,6,10,10,7, + 0,8,120,252,204,12,56,56,12,204,252,120,6,4,4,8, + 1,15,28,56,112,224,11,19,38,15,2,251,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 225,224,243,224,254,224,236,224,224,0,224,0,224,0,224,0, + 224,0,11,24,48,13,1,251,15,224,63,224,124,192,124,192, + 252,192,252,192,252,192,252,192,252,192,124,192,124,192,60,192, + 28,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,3,3,3,7,2,6,224,224, + 224,6,6,6,8,1,251,112,120,28,28,252,120,4,10,10, + 7,1,8,48,48,240,240,48,48,48,48,48,48,8,12,12, + 10,1,7,60,126,231,195,195,195,231,126,60,0,255,255,10, + 8,16,13,1,3,238,0,119,0,59,128,29,192,29,192,59, + 128,119,0,238,0,17,18,54,19,1,0,48,24,0,48,24, + 0,240,48,0,240,48,0,48,96,0,48,96,0,48,192,0, + 48,192,0,49,134,0,49,142,0,3,30,0,3,30,0,6, + 54,0,6,102,0,12,127,128,12,127,128,24,6,0,24,6, + 0,16,18,36,19,1,0,48,24,48,24,240,48,240,48,48, + 96,48,96,48,192,48,192,49,158,49,191,3,51,3,3,6, + 7,6,30,12,56,12,48,24,63,24,63,17,18,54,19,1, + 0,120,24,0,252,24,0,204,48,0,12,48,0,56,96,0, + 56,96,0,12,192,0,204,192,0,253,134,0,121,142,0,3, + 30,0,3,30,0,6,54,0,6,102,0,12,127,128,12,127, + 128,24,6,0,24,6,0,11,19,38,15,2,251,14,0,14, + 0,14,0,0,0,0,0,14,0,14,0,14,0,14,0,28, + 0,60,0,120,0,112,0,240,224,224,224,225,224,243,192,127, + 192,63,0,16,24,48,18,1,0,14,0,7,0,3,128,1, + 192,0,0,3,192,3,192,7,224,7,224,14,96,14,112,14, + 112,28,56,28,56,28,56,56,28,56,28,63,252,127,254,112, + 14,112,14,224,7,224,7,224,7,16,24,48,18,1,0,0, + 112,0,224,1,192,3,128,0,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,16, + 24,48,18,1,0,1,192,3,224,7,112,14,56,0,0,3, + 192,3,192,7,224,7,224,14,96,14,112,14,112,28,56,28, + 56,28,56,56,28,56,28,63,252,127,254,112,14,112,14,224, + 7,224,7,224,7,16,23,46,18,1,0,7,152,15,248,12, + 240,0,0,3,192,3,192,7,224,7,224,14,96,14,112,14, + 112,28,56,28,56,28,56,56,28,56,28,63,252,127,254,112, + 14,112,14,224,7,224,7,224,7,16,23,46,18,1,0,14, + 112,14,112,0,0,0,0,3,192,3,192,7,224,7,224,14, + 96,14,112,14,112,28,56,28,56,28,56,56,28,56,28,63, + 252,127,254,112,14,112,14,224,7,224,7,224,7,16,24,48, + 18,1,0,3,192,6,96,4,32,6,96,3,192,3,192,3, + 192,7,224,7,224,14,96,14,112,14,112,28,56,28,56,28, + 56,56,28,56,28,63,252,127,254,112,14,112,14,224,7,224, + 7,224,7,22,19,57,24,1,0,3,255,248,3,255,248,7, + 112,0,7,112,0,14,112,0,14,112,0,14,112,0,28,112, + 0,28,127,240,28,127,240,56,112,0,56,112,0,63,240,0, + 127,240,0,112,112,0,112,112,0,224,112,0,224,127,252,224, + 127,252,16,24,48,18,1,251,7,240,31,252,62,62,120,15, + 112,7,240,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,240,7,112,7,120,15,62,62,31,252,7,240,3,192, + 0,224,0,224,7,224,3,192,13,24,48,16,2,0,56,0, + 28,0,14,0,7,0,0,0,255,240,255,240,224,0,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,248,255,248,13,24, + 48,16,2,0,1,192,3,128,7,0,14,0,0,0,255,240, + 255,240,224,0,224,0,224,0,224,0,224,0,224,0,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,248,255,248,13,24,48,16,2,0,7,0,15,128,29,192, + 56,224,0,0,255,240,255,240,224,0,224,0,224,0,224,0, + 224,0,224,0,255,224,255,224,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,255,248,255,248,13,23,46,16,2,0, + 56,224,56,224,0,0,0,0,255,240,255,240,224,0,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,255,248,255,248,6,24, + 24,7,0,0,224,112,56,28,0,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,6,24,24,7, + 1,0,28,56,112,224,0,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,112,112,112,9,24,48,7,255,0, + 28,0,62,0,119,0,227,128,0,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 7,23,23,7,0,0,238,238,0,0,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,19,19,57, + 19,255,0,31,252,0,31,255,0,28,15,128,28,3,192,28, + 1,192,28,1,224,28,0,224,28,0,224,255,192,224,255,192, + 224,28,0,224,28,0,224,28,0,224,28,1,224,28,1,192, + 28,3,192,28,15,128,31,255,0,31,252,0,15,23,46,19, + 2,0,15,48,31,240,25,224,0,0,224,14,240,14,240,14, + 248,14,248,14,252,14,238,14,238,14,231,14,227,142,227,142, + 225,206,224,206,224,238,224,126,224,62,224,62,224,30,224,14, + 17,24,72,19,1,0,14,0,0,7,0,0,3,128,0,1, + 192,0,0,0,0,7,240,0,31,252,0,62,62,0,120,15, + 0,112,7,0,240,7,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,240,7,128,112, + 7,0,120,15,0,62,62,0,31,252,0,7,240,0,17,24, + 72,19,1,0,0,56,0,0,112,0,0,224,0,1,192,0, + 0,0,0,7,240,0,31,252,0,62,62,0,120,15,0,112, + 7,0,240,7,128,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,224,3,128,240,7,128,112,7,0, + 120,15,0,62,62,0,31,252,0,7,240,0,17,24,72,19, + 1,0,1,192,0,3,224,0,7,112,0,14,56,0,0,0, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,7,128,224,3,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,240,7,128,112,7,0,120,15, + 0,62,62,0,31,252,0,7,240,0,17,23,69,19,1,0, + 7,152,0,15,248,0,12,240,0,0,0,0,7,240,0,31, + 252,0,62,62,0,120,15,0,112,7,0,240,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,240,7,128,112,7,0,120,15,0,62,62,0,31, + 252,0,7,240,0,17,23,69,19,1,0,14,56,0,14,56, + 0,0,0,0,0,0,0,7,240,0,31,252,0,62,62,0, + 120,15,0,112,7,0,240,7,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,240,7, + 128,112,7,0,120,15,0,62,62,0,31,252,0,7,240,0, + 12,12,24,15,1,1,64,32,224,112,112,224,57,192,31,128, + 15,0,15,0,31,128,57,192,112,224,224,112,64,32,19,19, + 57,19,0,0,3,248,96,15,254,224,31,31,192,60,3,128, + 56,7,128,120,15,192,112,29,192,112,57,192,112,113,192,112, + 225,192,113,193,192,115,129,192,119,1,192,126,3,192,60,3, + 128,60,7,128,127,31,0,239,254,0,195,248,0,15,24,48, + 19,2,0,14,0,7,0,3,128,1,192,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,112,28,124,124,63, + 248,15,224,15,24,48,19,2,0,0,112,0,224,1,192,3, + 128,0,0,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,112,28,124,124,63,248,15,224,15,24,48,19,2,0,3, + 128,7,192,14,224,28,112,0,0,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,240,30,112,28,124,124,63,248,15,224,15, + 23,46,19,2,0,28,112,28,112,0,0,0,0,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,240,30,112,28,124,124,63, + 248,15,224,15,24,48,17,1,0,0,112,0,224,1,192,3, + 128,0,0,224,14,240,30,112,28,120,60,56,56,60,120,28, + 112,30,240,14,224,15,224,7,192,7,192,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,14,19,38,17,2,0,224, + 0,224,0,224,0,224,0,255,224,255,248,224,56,224,28,224, + 28,224,28,224,28,224,56,255,248,255,240,224,0,224,0,224, + 0,224,0,224,0,11,19,38,14,2,0,30,0,127,128,243, + 128,225,192,225,192,225,192,225,192,227,128,239,0,239,128,227, + 192,225,192,224,224,224,224,224,224,224,224,225,192,239,192,239, + 128,12,19,38,14,1,0,28,0,14,0,7,0,3,128,0, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 14,1,0,1,192,3,128,7,0,14,0,0,0,31,128,63, + 192,113,224,112,224,0,224,7,224,63,224,124,224,240,224,224, + 224,225,224,243,224,127,240,62,112,12,19,38,14,1,0,7, + 0,15,128,29,192,56,224,0,0,31,128,63,192,113,224,112, + 224,0,224,7,224,63,224,124,224,240,224,224,224,225,224,243, + 224,127,240,62,112,12,19,38,14,1,0,60,192,127,192,103, + 128,0,0,0,0,31,128,63,192,113,224,112,224,0,224,7, + 224,63,224,124,224,240,224,224,224,225,224,243,224,127,240,62, + 112,12,18,36,14,1,0,57,192,57,192,0,0,0,0,31, + 128,63,192,113,224,112,224,0,224,7,224,63,224,124,224,240, + 224,224,224,225,224,243,224,127,240,62,112,12,19,38,14,1, + 0,7,0,13,128,8,128,13,128,7,0,31,128,63,192,113, + 224,112,224,0,224,7,224,63,224,124,224,240,224,224,224,225, + 224,243,224,127,240,62,112,20,14,42,22,1,0,31,143,0, + 63,255,192,113,249,224,112,240,224,0,224,112,7,224,112,63, + 255,240,124,255,240,240,224,0,224,224,0,225,240,112,243,248, + 240,127,63,224,62,15,128,11,19,38,13,1,251,31,128,63, + 192,121,224,112,224,224,0,224,0,224,0,224,0,224,0,224, + 0,112,224,121,224,63,192,31,128,30,0,7,0,7,0,63, + 0,30,0,12,19,38,14,1,0,28,0,14,0,7,0,3, + 128,0,0,15,0,63,192,121,224,112,224,224,112,224,112,255, + 240,255,240,224,0,224,0,112,112,120,240,63,224,15,128,12, + 19,38,14,1,0,3,128,7,0,14,0,28,0,0,0,15, + 0,63,192,121,224,112,224,224,112,224,112,255,240,255,240,224, + 0,224,0,112,112,120,240,63,224,15,128,12,19,38,14,1, + 0,7,0,15,128,29,192,56,224,0,0,15,0,63,192,121, + 224,112,224,224,112,224,112,255,240,255,240,224,0,224,0,112, + 112,120,240,63,224,15,128,12,18,36,14,1,0,57,192,57, + 192,0,0,0,0,15,0,63,192,121,224,112,224,224,112,224, + 112,255,240,255,240,224,0,224,0,112,112,120,240,63,224,15, + 128,6,19,19,7,0,0,224,112,56,28,0,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,6,19,19,7,1,0, + 28,56,112,224,0,112,112,112,112,112,112,112,112,112,112,112, + 112,112,112,9,19,38,7,255,0,28,0,62,0,119,0,227, + 128,0,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,7, + 18,18,7,0,0,238,238,0,0,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,12,19,38,14,1,0,112,0,29, + 192,7,0,31,0,97,128,15,192,63,192,121,224,112,224,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,121,224,63, + 192,15,0,11,19,38,15,2,0,60,192,127,192,103,128,0, + 0,0,0,239,128,255,192,241,192,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,12, + 19,38,14,1,0,28,0,14,0,7,0,3,128,0,0,15, + 0,63,192,121,224,112,224,224,112,224,112,224,112,224,112,224, + 112,224,112,112,224,121,224,63,192,15,0,12,19,38,14,1, + 0,3,128,7,0,14,0,28,0,0,0,15,0,63,192,121, + 224,112,224,224,112,224,112,224,112,224,112,224,112,224,112,112, + 224,121,224,63,192,15,0,12,19,38,14,1,0,14,0,31, + 0,59,128,113,192,0,0,15,0,63,192,121,224,112,224,224, + 112,224,112,224,112,224,112,224,112,224,112,112,224,121,224,63, + 192,15,0,12,19,38,14,1,0,60,192,127,192,103,128,0, + 0,0,0,15,0,63,192,121,224,112,224,224,112,224,112,224, + 112,224,112,224,112,224,112,112,224,121,224,63,192,15,0,12, + 18,36,14,1,0,57,192,57,192,0,0,0,0,15,0,63, + 192,121,224,112,224,224,112,224,112,224,112,224,112,224,112,224, + 112,112,224,121,224,63,192,15,0,11,12,24,15,2,1,14, + 0,14,0,14,0,0,0,0,0,255,224,255,224,0,0,0, + 0,14,0,14,0,14,0,14,14,28,14,0,0,7,140,31, + 252,60,248,56,112,112,248,113,248,115,184,119,56,126,56,124, + 56,56,112,124,240,255,224,199,128,11,19,38,15,2,0,56, + 0,28,0,14,0,7,0,0,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,225,224,115, + 224,126,224,28,224,11,19,38,15,2,0,3,128,7,0,14, + 0,28,0,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,225,224,115,224,126,224,28, + 224,11,19,38,15,2,0,14,0,31,0,59,128,113,192,0, + 0,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,225,224,115,224,126,224,28,224,11,18,36, + 15,2,0,57,192,57,192,0,0,0,0,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,225, + 224,115,224,126,224,28,224,13,24,48,15,1,251,0,224,1, + 192,3,128,7,0,0,0,224,56,224,56,112,56,120,112,56, + 112,60,240,28,224,28,224,15,192,15,192,7,192,7,128,3, + 128,3,128,7,0,7,0,14,0,62,0,60,0,12,24,48, + 15,2,251,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,224,0,224,0,224,0,224, + 0,224,0,13,23,46,15,1,251,28,224,28,224,0,0,0, + 0,224,56,224,56,112,56,120,112,56,112,60,240,28,224,28, + 224,15,192,15,192,7,192,7,128,3,128,3,128,7,0,7, + 0,14,0,62,0,60,0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=15 dx=24 dy= 0 ascent=19 len=66 + Font Bounding box w=28 h=37 x=-2 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB18r[3453] U8G_SECTION(".progmem.u8g_font_helvB18r") = { + 0,28,37,254,248,19,4,35,9,107,32,127,251,19,251,19, + 251,0,0,0,6,0,1,3,19,19,7,2,0,224,224,224, + 224,224,224,224,224,224,224,224,192,192,192,0,0,224,224,224, + 5,6,6,9,2,13,216,216,216,216,216,144,12,18,36,14, + 1,0,12,192,12,192,12,192,12,192,12,192,127,240,127,240, + 25,128,25,128,25,128,25,128,255,224,255,224,51,0,51,0, + 51,0,51,0,51,0,12,21,42,13,0,254,6,0,63,128, + 127,224,246,224,230,112,230,112,246,0,126,0,62,0,15,0, + 7,192,7,224,6,240,230,112,230,112,230,112,246,240,127,224, + 31,192,6,0,6,0,21,18,54,22,0,0,0,7,0,62, + 7,0,127,14,0,227,142,0,193,156,0,193,156,0,227,184, + 0,127,56,0,62,112,0,0,112,0,0,227,224,0,231,240, + 1,206,56,1,204,24,3,140,24,3,142,56,7,7,240,7, + 3,224,16,18,36,18,1,0,15,128,31,192,61,224,56,224, + 56,224,56,224,29,192,15,128,31,0,63,156,123,220,113,252, + 224,248,224,112,224,248,241,252,127,206,31,135,2,6,6,6, + 2,13,192,192,192,192,192,128,6,24,24,8,1,251,12,28, + 56,56,112,112,96,224,224,224,224,224,224,224,224,224,224,96, + 112,112,56,56,28,12,6,24,24,8,1,251,192,224,112,112, + 56,56,24,28,28,28,28,28,28,28,28,28,28,24,56,56, + 112,112,224,192,8,7,7,10,1,12,24,24,219,255,60,102, + 102,12,12,24,15,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,3, + 6,6,7,2,253,224,224,224,96,96,192,7,3,3,8,0, + 6,254,254,254,3,3,3,7,2,0,224,224,224,7,19,19, + 8,1,0,6,6,6,12,12,12,24,24,24,24,48,48,48, + 96,96,96,192,192,192,12,18,36,13,0,0,31,128,63,192, + 121,224,112,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,112,224,112,224,121,224,63,192,31,128, + 7,18,18,13,2,0,14,14,30,254,254,14,14,14,14,14, + 14,14,14,14,14,14,14,14,12,18,36,13,0,0,31,0, + 127,192,113,224,224,224,224,112,224,112,0,112,0,224,1,224, + 3,192,7,128,31,0,60,0,120,0,240,0,224,0,255,240, + 255,240,12,18,36,13,0,0,31,0,127,192,113,192,224,224, + 224,224,224,224,0,224,1,192,15,128,15,224,0,224,0,112, + 0,112,224,112,224,240,113,224,127,224,31,128,12,18,36,13, + 0,0,1,192,3,192,3,192,7,192,7,192,13,192,29,192, + 25,192,49,192,113,192,97,192,225,192,255,240,255,240,1,192, + 1,192,1,192,1,192,12,18,36,13,0,0,127,224,127,224, + 112,0,112,0,112,0,112,0,127,128,127,192,113,224,0,224, + 0,112,0,112,0,112,224,112,224,240,241,224,127,192,31,128, + 12,18,36,13,0,0,15,128,63,224,120,224,112,112,224,112, + 224,0,224,0,239,0,255,192,249,224,240,224,224,112,224,112, + 224,112,112,224,121,224,63,192,31,128,12,18,36,13,0,0, + 255,240,255,240,0,240,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,14,0,14,0,30,0,28,0,28,0,60,0, + 56,0,56,0,12,18,36,13,0,0,15,0,63,192,57,192, + 112,224,112,224,112,224,112,224,57,192,31,128,63,192,112,224, + 224,112,224,112,224,112,224,112,112,224,127,224,31,128,12,18, + 36,13,0,0,31,128,127,192,121,224,240,224,224,112,224,112, + 224,112,224,112,240,240,121,240,127,240,31,112,0,112,0,112, + 224,224,243,224,127,192,31,0,3,14,14,7,2,0,224,224, + 224,0,0,0,0,0,0,0,0,224,224,224,3,17,17,7, + 2,253,224,224,224,0,0,0,0,0,0,0,0,224,224,224, + 96,96,192,13,12,24,15,0,1,0,56,0,248,3,224,15, + 128,62,0,240,0,240,0,62,0,15,128,3,224,0,248,0, + 56,10,5,10,14,2,5,255,192,255,192,0,0,255,192,255, + 192,13,12,24,14,1,1,224,0,248,0,62,0,15,128,3, + 224,0,120,0,120,3,224,15,128,62,0,248,0,224,0,11, + 19,38,15,2,0,31,128,127,192,121,224,240,224,224,224,225, + 224,1,192,3,192,7,128,7,0,14,0,14,0,14,0,14, + 0,0,0,0,0,14,0,14,0,14,0,22,22,66,24,1, + 252,1,255,0,7,255,192,15,129,240,30,0,120,60,0,56, + 120,125,156,112,255,156,241,199,28,227,135,28,227,14,28,231, + 14,56,231,12,56,231,28,112,231,28,112,227,157,224,243,255, + 192,113,247,0,120,0,0,60,0,0,31,7,0,15,255,0, + 3,252,0,16,19,38,18,1,0,3,192,3,192,7,224,7, + 224,14,96,14,112,14,112,28,56,28,56,28,56,56,28,56, + 28,63,252,127,254,112,14,112,14,224,7,224,7,224,7,15, + 19,38,18,2,0,255,224,255,248,224,120,224,28,224,28,224, + 28,224,28,224,56,255,240,255,248,224,28,224,14,224,14,224, + 14,224,14,224,30,224,124,255,248,255,224,16,19,38,18,1, + 0,7,240,31,252,62,62,120,15,112,7,240,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,240,7,112,7,120, + 15,62,62,31,252,7,240,16,19,38,19,2,0,255,224,255, + 248,224,124,224,30,224,14,224,15,224,7,224,7,224,7,224, + 7,224,7,224,7,224,7,224,15,224,14,224,30,224,124,255, + 248,255,224,13,19,38,16,2,0,255,240,255,240,224,0,224, + 0,224,0,224,0,224,0,224,0,255,224,255,224,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,255,248,255,248,12, + 19,38,15,2,0,255,240,255,240,224,0,224,0,224,0,224, + 0,224,0,224,0,255,224,255,224,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,17,19,57,19,1, + 0,7,240,0,31,252,0,62,62,0,120,15,0,112,7,0, + 240,0,0,224,0,0,224,0,0,224,0,0,224,127,128,224, + 127,128,224,3,128,224,3,128,240,3,128,112,7,128,120,15, + 128,62,63,128,31,251,128,7,243,128,15,19,38,19,2,0, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 255,254,255,254,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,224,14,224,14,3,19,19,7,2,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,11, + 19,38,14,1,0,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,224,224,224, + 224,224,224,224,224,113,224,127,192,63,128,14,19,38,18,2, + 0,224,60,224,120,224,240,225,224,227,192,231,128,239,0,254, + 0,254,0,255,0,247,128,227,128,225,192,225,224,224,224,224, + 112,224,120,224,56,224,60,12,19,38,15,2,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,255, + 240,255,240,19,19,57,23,2,0,224,0,224,240,1,224,240, + 1,224,248,3,224,248,3,224,252,7,224,236,6,224,238,14, + 224,230,12,224,231,28,224,231,28,224,227,24,224,227,184,224, + 227,184,224,225,240,224,225,240,224,224,224,224,224,224,224,224, + 224,224,15,19,38,19,2,0,224,14,240,14,240,14,248,14, + 248,14,252,14,238,14,238,14,231,14,227,142,227,142,225,206, + 224,206,224,238,224,126,224,62,224,62,224,30,224,14,17,19, + 57,19,1,0,7,240,0,31,252,0,62,62,0,120,15,0, + 112,7,0,240,7,128,224,3,128,224,3,128,224,3,128,224, + 3,128,224,3,128,224,3,128,224,3,128,240,7,128,112,7, + 0,120,15,0,62,62,0,31,252,0,7,240,0,14,19,38, + 17,2,0,255,224,255,248,224,56,224,28,224,28,224,28,224, + 28,224,56,255,248,255,240,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,17,20,60,19,1,255,7, + 240,0,31,252,0,62,62,0,120,15,0,112,7,0,240,7, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,3,128, + 224,3,128,224,3,128,240,39,128,112,119,0,120,63,0,62, + 30,0,31,254,0,7,247,0,0,2,0,14,19,38,17,2, + 0,255,224,255,248,224,56,224,28,224,28,224,28,224,28,224, + 56,255,248,255,240,224,120,224,56,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,14,19,38,17,2,0,15,192,63, + 240,120,248,240,56,224,56,224,0,240,0,124,0,63,192,7, + 240,0,248,0,60,0,28,224,28,224,28,224,60,248,248,127, + 240,31,192,15,19,38,15,0,0,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 19,38,19,2,0,224,14,224,14,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,112,28,124,124,63,248,15,224,16,19,38,18,1, + 0,224,7,224,7,240,15,112,14,120,30,56,28,56,28,60, + 60,28,56,28,56,30,120,14,112,14,112,14,112,7,224,7, + 224,3,192,3,192,3,192,21,19,57,23,1,0,224,112,56, + 224,112,56,224,112,56,224,112,56,112,248,112,112,248,112,112, + 216,112,113,220,112,49,220,96,57,220,224,57,140,224,59,142, + 224,27,142,192,27,142,192,31,7,192,31,7,192,14,3,128, + 14,3,128,14,3,128,16,19,38,18,1,0,224,7,240,15, + 120,30,56,28,28,56,14,112,15,240,7,224,3,192,3,192, + 7,224,15,240,14,112,28,56,60,60,56,28,112,14,240,15, + 224,7,15,19,38,17,1,0,224,14,240,14,112,28,120,28, + 56,56,60,56,28,112,28,112,14,224,14,224,7,192,7,192, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,14,19, + 38,16,1,0,255,252,255,252,0,60,0,120,0,240,1,224, + 1,224,3,192,7,128,7,128,15,0,30,0,30,0,60,0, + 56,0,120,0,240,0,255,252,255,252,5,24,24,8,1,251, + 248,248,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,248,248,7,19,19,8,0,0,192,192, + 192,96,96,96,48,48,48,48,24,24,24,12,12,12,6,6, + 6,5,24,24,8,2,251,248,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,248,248,11, + 9,18,14,1,10,14,0,14,0,31,0,27,0,59,128,113, + 192,113,192,224,224,224,224,14,2,4,14,0,251,255,252,255, + 252,6,4,4,8,1,15,224,112,56,28,12,14,28,14,1, + 0,31,128,63,192,113,224,112,224,0,224,7,224,63,224,124, + 224,240,224,224,224,225,224,243,224,127,240,62,112,12,19,38, + 15,2,0,224,0,224,0,224,0,224,0,224,0,239,128,255, + 192,249,224,240,224,224,112,224,112,224,112,224,112,224,112,224, + 112,240,224,249,224,255,192,239,128,11,14,28,13,1,0,31, + 128,63,192,121,224,112,224,224,0,224,0,224,0,224,0,224, + 0,224,0,112,224,121,224,63,192,31,128,12,19,38,15,1, + 0,0,112,0,112,0,112,0,112,0,112,31,112,63,240,121, + 240,112,240,224,112,224,112,224,112,224,112,224,112,224,112,112, + 240,121,240,63,240,31,112,12,14,28,14,1,0,15,0,63, + 192,121,224,112,224,224,112,224,112,255,240,255,240,224,0,224, + 0,112,112,120,240,63,224,15,128,7,19,19,9,1,0,30, + 62,56,56,56,254,254,56,56,56,56,56,56,56,56,56,56, + 56,56,12,19,38,15,1,251,31,112,63,240,121,240,112,240, + 224,112,224,112,224,112,224,112,224,112,224,112,112,240,121,240, + 63,240,31,112,0,112,224,112,240,224,127,224,31,128,11,19, + 38,15,2,0,224,0,224,0,224,0,224,0,224,0,239,0, + 255,192,241,192,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,3,19,19,7,2,0, + 224,224,224,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,5,24,24,7,0,251,56,56,56,0,0,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,248, + 240,11,19,38,14,2,0,224,0,224,0,224,0,224,0,224, + 0,225,192,227,192,231,128,239,0,254,0,252,0,254,0,239, + 0,231,0,231,128,227,192,225,192,225,224,224,224,3,19,19, + 7,2,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,17,14,42,21,2,0,239,62,0,255, + 255,0,243,231,128,225,195,128,225,195,128,225,195,128,225,195, + 128,225,195,128,225,195,128,225,195,128,225,195,128,225,195,128, + 225,195,128,225,195,128,11,14,28,15,2,0,239,128,255,192, + 241,192,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,12,14,28,14,1,0,15,0, + 63,192,121,224,112,224,224,112,224,112,224,112,224,112,224,112, + 224,112,112,224,121,224,63,192,15,0,12,19,38,15,2,251, + 239,128,255,192,249,224,240,224,224,112,224,112,224,112,224,112, + 224,112,224,112,240,224,249,224,255,192,239,128,224,0,224,0, + 224,0,224,0,224,0,12,19,38,15,1,251,31,112,63,240, + 121,240,112,240,224,112,224,112,224,112,224,112,224,112,224,112, + 112,240,121,240,63,240,31,112,0,112,0,112,0,112,0,112, + 0,112,7,14,14,10,2,0,238,254,254,240,224,224,224,224, + 224,224,224,224,224,224,11,14,28,13,1,0,63,0,127,128, + 243,192,225,192,224,0,252,0,127,128,15,192,1,224,224,224, + 224,224,241,224,127,192,63,128,7,18,18,9,1,0,56,56, + 56,56,254,254,56,56,56,56,56,56,56,56,56,56,62,30, + 11,14,28,15,2,0,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,225,224,115,224,126,224, + 28,224,12,14,28,14,1,0,224,112,224,112,224,112,112,224, + 112,224,112,224,57,192,57,192,57,192,31,128,31,128,15,0, + 15,0,15,0,19,14,42,19,0,0,224,224,224,224,224,224, + 96,224,192,113,241,192,113,241,192,49,177,128,51,185,128,59, + 187,128,27,27,0,31,31,0,31,31,0,14,14,0,14,14, + 0,14,14,0,11,14,28,13,1,0,224,224,241,224,113,192, + 59,128,63,128,31,0,14,0,31,0,31,0,59,128,123,192, + 113,192,241,224,224,224,13,19,38,15,1,251,224,56,224,56, + 112,56,120,112,56,112,60,240,28,224,28,224,15,192,15,192, + 7,192,7,128,3,128,3,128,7,0,7,0,14,0,62,0, + 60,0,11,14,28,13,1,0,255,224,255,224,1,192,3,128, + 7,128,15,0,14,0,30,0,60,0,56,0,112,0,240,0, + 255,224,255,224,7,24,24,10,1,251,14,28,56,56,56,56, + 56,56,56,56,112,224,224,112,56,56,56,56,56,56,56,56, + 28,14,2,24,24,7,3,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 7,24,24,10,2,251,224,112,56,56,56,56,56,56,56,56, + 28,14,14,28,56,56,56,56,56,56,56,56,112,224,11,4, + 8,14,1,5,120,224,254,224,239,224,227,192,255}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 23 + Calculated Max Values w=31 h=32 x= 4 y=21 dx=33 dy= 0 ascent=31 len=120 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24[11554] U8G_SECTION(".progmem.u8g_font_helvB24") = { + 0,40,49,250,244,25,5,252,14,144,32,255,249,31,249,25, + 249,0,0,0,9,0,1,5,25,25,11,3,0,248,248,248, + 248,248,248,248,248,248,248,248,112,112,112,112,112,112,112,0, + 0,248,248,248,248,248,11,9,18,16,2,16,241,224,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,18,25, + 75,19,0,255,3,199,0,3,199,0,3,143,0,3,143,0, + 7,143,0,7,142,0,7,142,0,127,255,192,127,255,192,127, + 255,192,127,255,192,15,28,0,14,28,0,14,28,0,14,60, + 0,255,255,128,255,255,128,255,255,128,255,255,128,28,120,0, + 60,120,0,60,112,0,60,112,0,56,240,0,56,240,0,16, + 28,56,18,1,253,1,128,1,128,15,240,63,252,127,254,253, + 190,249,159,241,159,241,143,249,128,255,128,127,192,63,240,15, + 252,1,254,1,255,1,159,1,143,241,143,241,159,249,159,127, + 254,127,254,63,248,7,224,1,128,1,128,1,128,26,23,92, + 29,1,0,14,0,48,0,63,128,112,0,127,192,96,0,113, + 192,224,0,224,224,192,0,224,225,192,0,224,227,128,0,224, + 227,128,0,113,199,0,0,127,198,0,0,63,142,0,0,14, + 12,28,0,0,28,127,0,0,24,255,128,0,56,227,128,0, + 49,193,192,0,113,193,192,0,97,193,192,0,225,193,192,1, + 192,227,128,1,192,255,128,3,128,127,0,3,0,28,0,20, + 25,75,24,2,0,3,224,0,15,248,0,31,252,0,31,252, + 0,30,60,0,62,60,0,62,60,0,31,60,0,31,248,0, + 15,248,0,15,240,0,15,224,0,63,241,224,127,241,224,124, + 249,192,248,255,192,240,127,192,240,63,128,240,31,0,248,15, + 128,252,63,192,127,255,224,127,251,224,31,241,240,7,192,0, + 4,9,9,8,2,16,240,240,240,240,240,240,240,96,96,8, + 31,31,11,1,250,7,15,30,30,60,60,56,120,120,120,240, + 240,240,240,240,240,240,240,240,248,120,120,120,120,60,60,28, + 30,14,15,7,8,31,31,11,1,250,224,240,120,120,60,60, + 28,30,30,30,15,15,15,15,15,15,15,15,15,31,30,30, + 30,28,60,60,56,120,112,240,224,10,11,22,13,1,13,12, + 0,12,0,76,128,237,192,255,192,127,128,30,0,63,0,127, + 128,115,128,33,0,16,16,32,19,1,0,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,5,11,11,9,2, + 250,248,248,248,248,248,24,24,56,112,224,128,9,5,10,11, + 1,7,255,128,255,128,255,128,255,128,255,128,5,5,5,9, + 2,0,248,248,248,248,248,8,25,25,9,0,0,3,3,3, + 3,6,6,6,14,12,12,12,28,24,24,24,48,48,48,112, + 96,96,96,192,192,192,15,24,48,18,1,0,15,224,31,240, + 63,248,127,252,124,124,248,62,248,62,248,62,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,248,62,248,62, + 248,62,124,124,127,252,63,248,31,240,15,224,10,23,46,18, + 2,0,1,192,3,192,7,192,31,192,255,192,255,192,255,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 16,24,48,18,1,0,15,224,63,248,127,252,127,254,252,126, + 248,63,248,31,240,31,240,31,0,63,0,62,0,126,0,252, + 1,248,7,240,15,224,31,128,63,0,126,0,252,0,255,255, + 255,255,255,255,255,255,16,24,48,18,1,0,15,224,63,248, + 127,252,127,252,248,62,240,62,240,30,240,30,0,62,0,124, + 3,248,3,240,3,252,0,126,0,63,0,31,240,31,240,31, + 240,63,248,62,127,254,127,252,63,248,15,224,16,24,48,18, + 1,0,0,248,0,248,1,248,3,248,3,248,7,248,15,120, + 14,120,30,120,28,120,60,120,120,120,112,120,240,120,224,120, + 255,255,255,255,255,255,255,255,0,120,0,120,0,120,0,120, + 0,120,15,24,48,18,1,0,63,252,63,252,63,252,63,252, + 56,0,120,0,120,0,120,0,123,224,127,248,127,252,127,252, + 120,126,0,62,0,62,0,30,0,30,240,62,240,62,248,124, + 127,252,127,248,63,240,15,192,15,24,48,18,1,0,7,224, + 31,248,63,252,63,254,124,62,120,30,240,0,240,0,243,224, + 247,248,255,252,255,252,252,126,248,62,240,30,240,30,240,30, + 240,30,248,62,124,124,127,252,63,248,31,240,7,192,16,24, + 48,18,1,0,255,255,255,255,255,255,255,255,0,30,0,62, + 0,60,0,120,0,248,0,240,1,240,1,224,3,224,3,192, + 7,192,7,192,7,128,15,128,15,128,15,128,31,0,31,0, + 31,0,31,0,17,24,72,18,0,0,7,240,0,31,252,0, + 63,254,0,62,62,0,124,31,0,120,15,0,120,15,0,120, + 15,0,124,31,0,62,62,0,31,252,0,31,252,0,63,254, + 0,124,31,0,248,15,128,240,7,128,240,7,128,240,7,128, + 248,15,128,126,63,0,127,254,0,63,254,0,31,252,0,7, + 240,0,15,24,48,18,1,0,7,192,31,240,63,248,127,252, + 124,124,248,62,240,30,240,30,240,30,240,30,248,62,252,126, + 127,254,127,254,63,222,7,158,0,30,0,30,240,60,248,124, + 127,248,127,248,31,240,7,192,5,17,17,11,3,0,248,248, + 248,248,248,0,0,0,0,0,0,0,248,248,248,248,248,5, + 23,23,11,3,250,248,248,248,248,248,0,0,0,0,0,0, + 0,248,248,248,248,248,24,24,56,112,224,128,16,16,32,19, + 1,0,0,3,0,31,0,127,3,255,15,254,127,248,255,192, + 254,0,254,0,255,192,127,240,15,254,3,255,0,127,0,31, + 0,3,15,12,24,19,2,2,255,254,255,254,255,254,255,254, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,255,254, + 16,16,32,19,1,0,192,0,240,0,254,0,255,192,127,240, + 31,254,3,255,0,127,0,127,3,255,31,254,127,240,255,192, + 254,0,240,0,192,0,16,25,50,20,2,0,15,224,63,248, + 127,252,127,254,252,126,248,63,248,31,240,31,240,31,0,63, + 0,126,0,254,1,252,1,248,3,224,3,192,7,192,7,192, + 0,0,0,0,7,192,7,192,7,192,7,192,7,192,29,30, + 120,33,1,251,0,15,224,0,0,127,252,0,1,255,254,0, + 3,240,63,128,7,192,7,192,15,0,3,192,30,0,1,224, + 28,0,0,240,60,7,220,112,56,31,252,112,112,60,252,56, + 112,120,120,56,240,240,56,56,224,224,56,56,225,224,56,56, + 225,192,112,120,225,192,112,112,225,192,112,112,225,224,240,224, + 241,225,241,224,112,255,255,192,120,127,63,128,56,62,30,0, + 60,0,0,0,30,0,0,0,15,128,0,0,15,240,60,0, + 3,255,252,0,1,255,252,0,0,127,224,0,22,25,75,23, + 0,0,0,252,0,0,252,0,1,254,0,1,254,0,1,254, + 0,3,255,0,3,255,0,3,255,0,7,207,128,7,207,128, + 7,207,128,15,135,128,15,135,192,15,135,192,31,3,192,31, + 3,224,31,255,224,31,255,224,63,255,240,63,255,240,62,1, + 240,124,0,248,124,0,248,252,0,252,248,0,124,19,25,75, + 24,3,0,255,252,0,255,255,0,255,255,128,255,255,128,248, + 15,192,248,7,192,248,7,192,248,7,192,248,7,192,248,15, + 128,255,255,0,255,255,0,255,255,128,255,255,192,248,7,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 7,224,255,255,192,255,255,192,255,255,128,255,254,0,21,25, + 75,24,1,0,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,248,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,254,0,21, + 25,75,24,2,0,255,248,0,255,255,0,255,255,128,255,255, + 192,248,15,224,248,3,224,248,3,240,248,1,240,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,1,248,248,1,240,248,3,240,248,3, + 224,248,15,224,255,255,192,255,255,128,255,255,0,255,248,0, + 18,25,75,22,2,0,255,255,128,255,255,128,255,255,128,255, + 255,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,255,192,255,255,192,255,255,192,255,255, + 192,16,25,50,20,2,0,255,255,255,255,255,255,255,255,248, + 0,248,0,248,0,248,0,248,0,248,0,255,254,255,254,255, + 254,255,254,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,22,25,75,25,1,0,0, + 255,0,3,255,192,15,255,224,31,255,240,31,195,248,63,0, + 248,126,0,124,124,0,124,252,0,0,248,0,0,248,0,0, + 248,0,0,248,15,252,248,15,252,248,15,252,248,15,252,252, + 0,124,124,0,124,126,0,124,126,0,252,63,131,252,63,255, + 252,31,255,220,7,255,156,3,254,28,19,25,75,23,2,0, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,255,255, + 224,255,255,224,255,255,224,255,255,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,5,25,25,9,2, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,15,25,50,18,1,0, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,248,62, + 248,62,248,62,248,62,248,62,252,126,255,252,127,252,63,248, + 15,224,20,25,75,24,2,0,248,7,224,248,7,224,248,15, + 192,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 249,248,0,251,240,0,255,224,0,255,224,0,255,240,0,255, + 240,0,255,248,0,252,252,0,248,126,0,248,126,0,248,63, + 0,248,31,128,248,15,128,248,15,192,248,7,224,248,3,240, + 248,3,240,16,25,50,20,2,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,255,255,255,255,255,255,255,255,23,25,75,27,2, + 0,254,0,254,254,0,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,131,254,255,131,254,251,131,190,251,131,190,251, + 199,190,251,199,190,251,199,190,249,199,62,249,239,62,249,239, + 62,249,239,62,249,239,62,248,238,62,248,254,62,248,254,62, + 248,254,62,248,124,62,248,124,62,248,124,62,19,25,75,24, + 2,0,248,3,224,252,3,224,252,3,224,254,3,224,254,3, + 224,255,3,224,255,3,224,255,131,224,255,195,224,251,195,224, + 251,227,224,249,227,224,249,243,224,248,243,224,248,251,224,248, + 123,224,248,63,224,248,63,224,248,31,224,248,31,224,248,15, + 224,248,15,224,248,7,224,248,7,224,248,3,224,23,25,75, + 25,1,0,1,255,0,7,255,192,15,255,224,31,255,240,63, + 199,248,63,1,248,126,0,252,124,0,124,124,0,124,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,124,0,124,124,0,124,126,0,252,63,1,248,63, + 199,248,31,255,240,15,255,224,7,255,192,1,255,0,18,25, + 75,22,2,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,252, + 0,255,240,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,23, + 26,78,26,1,255,1,255,0,7,255,192,15,255,224,31,255, + 240,63,199,248,63,1,248,126,0,252,124,0,124,252,0,126, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,2,62,252,7,62,124,15,188,126,15,252,63,7, + 248,63,195,240,31,255,248,15,255,252,7,255,254,1,255,60, + 0,0,24,19,25,75,24,2,0,255,254,0,255,255,128,255, + 255,192,255,255,192,248,7,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,7,192,248,15,192,255,255,128,255,255,0, + 255,255,0,255,255,128,248,15,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 224,248,3,224,19,25,75,22,1,0,3,248,0,15,254,0, + 31,255,0,63,255,128,62,31,128,124,7,192,120,7,192,120, + 3,192,124,0,0,127,0,0,63,240,0,63,254,0,31,255, + 128,3,255,192,0,63,192,0,7,224,0,3,224,248,3,224, + 248,3,224,124,3,224,126,15,192,63,255,192,31,255,128,15, + 255,0,3,248,0,19,25,75,20,0,0,255,255,224,255,255, + 224,255,255,224,255,255,224,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,19,25,75,24,2,0,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,252,7,224,127,31,192,127,255,192,63,255, + 128,31,255,0,7,252,0,20,25,75,22,1,0,248,1,240, + 248,1,240,124,3,224,124,3,224,124,3,224,60,3,192,62, + 7,192,62,7,192,30,7,128,31,15,128,31,15,128,15,15, + 0,15,15,0,15,15,0,7,158,0,7,158,0,7,158,0, + 7,254,0,3,252,0,3,252,0,3,252,0,1,248,0,1, + 248,0,1,248,0,0,240,0,29,25,100,31,1,0,248,31, + 129,248,248,31,129,248,120,31,129,240,120,31,129,240,120,31, + 129,240,124,63,195,224,124,63,195,224,124,63,195,224,60,63, + 195,224,60,57,195,192,62,121,227,192,62,121,231,192,30,121, + 231,192,30,121,231,128,30,112,231,128,30,112,231,128,15,240, + 255,0,15,240,255,0,15,240,255,0,15,224,127,0,7,224, + 126,0,7,224,126,0,7,224,126,0,3,192,60,0,3,192, + 60,0,20,25,75,22,1,0,252,3,224,126,7,224,126,7, + 192,63,15,192,31,15,128,31,159,0,15,159,0,15,190,0, + 7,254,0,7,252,0,3,252,0,3,248,0,1,248,0,3, + 248,0,3,252,0,7,252,0,7,254,0,15,191,0,31,159, + 0,31,31,128,63,15,128,62,15,192,126,7,192,252,7,224, + 252,3,240,20,25,75,22,1,0,252,3,240,252,3,224,126, + 7,224,62,7,192,63,15,192,63,15,128,31,15,128,31,159, + 0,15,159,0,15,254,0,7,254,0,7,252,0,3,252,0, + 3,248,0,3,248,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,17,25,75,20,1,0,255,255,128,255,255,128, + 255,255,128,255,255,128,0,15,128,0,31,128,0,63,0,0, + 126,0,0,124,0,0,252,0,1,248,0,3,240,0,3,240, + 0,7,224,0,15,192,0,15,128,0,31,128,0,63,0,0, + 126,0,0,126,0,0,252,0,0,255,255,128,255,255,128,255, + 255,128,255,255,128,8,31,31,11,2,250,255,255,255,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,255,255,255,9,25,50,9,0,0, + 192,0,192,0,224,0,96,0,96,0,112,0,112,0,48,0, + 56,0,56,0,24,0,28,0,28,0,12,0,12,0,14,0, + 14,0,6,0,7,0,7,0,3,0,3,128,3,128,1,128, + 1,128,8,31,31,11,0,250,255,255,255,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,255,255,255,14,14,28,19,2,9,7,128,15, + 192,15,192,15,192,31,224,31,224,60,240,60,240,56,112,120, + 120,120,120,112,60,240,60,240,60,18,2,6,18,0,250,255, + 255,192,255,255,192,5,5,5,11,2,20,224,240,112,120,56, + 15,18,36,18,1,0,15,240,63,252,127,252,124,62,248,30, + 248,30,0,254,15,254,63,254,127,30,248,30,248,30,240,62, + 248,126,255,254,255,254,127,222,63,30,16,25,50,20,2,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,243,240, + 247,252,255,252,255,254,252,62,248,31,240,31,240,15,240,15, + 240,15,240,15,240,31,240,31,248,62,255,254,255,252,247,248, + 241,240,15,18,36,18,1,0,7,224,31,248,63,252,63,252, + 124,62,120,62,240,30,240,0,240,0,240,0,240,0,240,30, + 248,30,124,62,127,252,63,248,31,248,7,224,16,25,50,20, + 1,0,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 15,207,31,239,63,255,127,255,124,63,248,31,240,15,240,15, + 240,15,240,15,240,15,240,15,248,31,124,63,127,255,63,239, + 31,239,15,143,16,18,36,18,1,0,7,224,31,248,63,252, + 127,254,124,62,248,31,240,31,255,255,255,255,255,255,240,0, + 240,0,248,30,124,62,127,252,63,252,31,240,7,192,10,25, + 50,11,0,0,7,192,15,192,31,192,31,0,30,0,30,0, + 30,0,255,192,255,192,255,192,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,16,25,50,20,1,249,15,207,31,239, + 63,255,127,255,124,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,124,63,127,255,63,255,31,239,15,207, + 0,15,248,31,248,31,126,126,127,254,63,252,15,240,15,25, + 50,20,2,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,241,224,247,248,255,252,255,252,252,62,248,30,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,4,25,25,9,2,0,240,240,240,240, + 0,0,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,6,32,32,9,0,249,60,60,60,60,0, + 0,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,252,252,248,248,15,25,50,19,2, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 62,240,124,240,248,241,240,243,224,247,192,255,128,255,192,255, + 192,255,224,255,224,249,240,241,240,240,248,240,120,240,124,240, + 62,240,62,4,25,25,9,2,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,24,18,54,30,2,0,241,224,248,247,251,254,255,255, + 254,255,255,255,252,127,31,248,62,15,240,60,15,240,60,15, + 240,60,15,240,60,15,240,60,15,240,60,15,240,60,15,240, + 60,15,240,60,15,240,60,15,240,60,15,240,60,15,15,18, + 36,20,2,0,241,240,247,252,255,252,255,254,252,62,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,17,18,54,20,1,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,16,25,50,20,2,249,241,240,247,248,255,252, + 255,254,252,62,248,31,248,31,240,15,240,15,240,15,240,15, + 248,31,248,31,252,62,255,254,255,252,247,248,241,240,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,16,25,50,20, + 1,249,7,207,31,239,63,255,127,255,124,63,248,31,240,15, + 240,15,240,15,240,15,240,15,240,15,248,31,124,63,127,255, + 63,255,63,239,15,207,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,10,18,36,13,2,0,240,192,243,192,247,192, + 255,192,255,192,252,0,248,0,248,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,18, + 36,19,1,0,7,240,31,252,63,254,124,62,120,31,120,31, + 124,0,127,192,63,248,15,254,3,255,0,63,248,15,248,15, + 124,31,127,254,63,252,15,240,9,22,44,11,1,0,60,0, + 60,0,60,0,60,0,255,128,255,128,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,63,128,63,128,31,128,15,128,15,18,36,20,2,0, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,248,62,248,126,255,254,127,254, + 127,222,31,30,17,18,54,19,0,0,248,15,128,248,15,128, + 124,31,0,124,31,0,60,30,0,60,30,0,62,62,0,30, + 60,0,30,60,0,30,60,0,15,120,0,15,120,0,15,120, + 0,7,240,0,7,240,0,7,240,0,3,224,0,3,224,0, + 25,18,72,26,0,0,248,62,15,128,248,62,15,128,120,62, + 15,0,124,62,31,0,124,127,31,0,60,127,30,0,60,127, + 30,0,60,119,30,0,60,247,158,0,30,227,188,0,30,227, + 188,0,30,227,188,0,31,227,252,0,15,193,248,0,15,193, + 248,0,15,193,248,0,7,128,240,0,7,128,240,0,16,18, + 36,19,1,0,248,31,252,63,124,62,62,124,62,120,31,248, + 15,240,7,224,3,192,7,224,15,224,15,240,31,248,62,120, + 62,124,124,62,252,63,248,31,16,25,50,19,1,249,248,31, + 248,31,248,30,120,62,124,62,124,60,60,60,62,124,62,120, + 30,120,30,120,31,240,15,240,15,240,15,224,7,224,7,224, + 7,192,7,192,7,192,15,128,63,128,63,0,63,0,60,0, + 14,18,36,17,1,0,255,252,255,252,255,252,255,252,0,248, + 1,240,3,240,7,224,15,192,31,128,31,0,62,0,124,0, + 248,0,255,252,255,252,255,252,255,252,9,32,64,13,2,249, + 15,128,31,128,63,128,62,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,124,0,120,0, + 224,0,120,0,124,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,63,128,31,128,15,128, + 3,31,31,9,3,250,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,9,32,64,13,2,249,248,0,252,0,254, + 0,62,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,31,0,15,0,3,128,15,0,31, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,254,0,252,0,248,0,14,6,12,19,2, + 5,56,0,126,12,255,156,231,252,193,248,0,112,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,9,0,1,5,24,24,11,2,250,248,248,248,248,248,0, + 0,112,112,112,112,112,112,248,248,248,248,248,248,248,248,248, + 248,248,15,24,48,18,1,253,0,32,0,32,0,96,7,240, + 31,248,63,252,127,252,124,190,248,158,249,158,241,128,241,128, + 243,0,243,0,243,30,250,30,126,62,127,252,63,248,31,240, + 15,192,12,0,8,0,8,0,17,24,72,18,0,0,3,240, + 0,31,252,0,63,254,0,63,255,0,126,31,0,124,15,128, + 124,15,128,124,7,128,124,0,0,126,0,0,62,0,0,255, + 240,0,255,240,0,31,0,0,15,0,0,15,0,0,15,0, + 0,31,0,0,30,0,0,61,227,0,127,255,128,255,255,128, + 255,255,0,96,126,0,15,15,30,18,1,4,224,14,247,222, + 255,254,127,252,60,120,120,60,112,28,112,28,112,28,120,60, + 60,120,127,252,255,254,247,222,224,14,18,24,72,18,0,0, + 248,7,192,248,7,192,124,15,128,60,15,0,30,30,0,30, + 30,0,15,60,0,15,60,0,7,248,0,7,248,0,3,240, + 0,1,224,0,63,255,0,63,255,0,1,224,0,1,224,0, + 63,255,0,63,255,0,1,224,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,3,31,31,9,3,250,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,0,0,0, + 0,224,224,224,224,224,224,224,224,224,224,224,224,16,32,64, + 18,1,249,15,240,31,248,63,248,126,124,124,60,124,60,126, + 0,127,0,63,192,31,224,63,248,127,252,113,254,240,255,240, + 63,248,31,252,15,127,15,127,159,63,254,31,248,7,252,1, + 254,0,126,0,62,120,30,120,30,124,62,63,252,63,252,31, + 248,7,224,10,4,8,11,0,21,243,192,243,192,243,192,243, + 192,26,25,100,24,0,0,0,127,128,0,3,255,224,0,7, + 128,248,0,31,0,60,0,28,0,14,0,56,0,7,0,112, + 63,3,0,112,127,131,128,224,243,193,128,225,192,225,192,193, + 192,224,192,195,128,0,192,195,128,0,192,195,128,0,192,195, + 128,0,192,193,192,224,192,225,192,225,192,224,243,195,128,96, + 127,131,128,112,63,7,0,56,0,14,0,30,0,60,0,15, + 128,248,0,7,255,224,0,1,255,128,0,9,16,32,12,1, + 9,62,0,127,0,227,128,195,128,31,128,127,128,243,128,227, + 128,227,128,255,128,123,128,0,0,0,0,255,128,255,128,255, + 128,12,13,26,18,3,2,8,16,24,48,56,112,120,240,241, + 224,225,192,225,192,241,224,249,240,120,240,56,112,24,48,8, + 16,16,10,20,19,1,4,255,255,255,255,255,255,255,255,0, + 15,0,15,0,15,0,15,0,15,0,15,9,5,10,11,1, + 7,255,128,255,128,255,128,255,128,255,128,26,25,100,24,0, + 0,0,255,128,0,3,255,224,0,7,128,248,0,30,0,60, + 0,28,0,14,0,56,255,135,0,112,255,195,0,112,225,227, + 128,224,224,225,128,224,224,225,128,192,224,225,192,192,225,193, + 192,192,255,129,192,192,255,1,192,192,227,129,192,192,227,193, + 192,224,225,193,128,224,224,227,128,112,224,243,128,112,224,119, + 0,56,0,14,0,30,0,28,0,15,128,120,0,7,255,224, + 0,1,255,128,0,10,3,6,11,0,21,255,192,255,192,255, + 192,9,10,20,13,2,14,62,0,127,0,99,0,193,128,193, + 128,193,128,193,128,99,0,127,0,62,0,16,22,44,19,1, + 0,3,192,3,192,3,192,3,192,3,192,3,192,255,255,255, + 255,255,255,255,255,3,192,3,192,3,192,3,192,3,192,3, + 192,0,0,0,0,255,255,255,255,255,255,255,255,10,15,30, + 11,0,9,63,0,127,128,243,192,225,192,225,192,1,192,3, + 192,7,128,15,0,62,0,120,0,112,0,255,192,255,192,255, + 192,10,15,30,11,0,9,30,0,127,128,243,192,225,192,225, + 192,3,192,15,128,15,128,3,192,1,192,225,192,225,192,243, + 192,127,128,62,0,6,5,5,11,4,20,60,120,112,224,224, + 15,25,50,20,2,249,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,255,254,255,222,247,158,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,17,31,93,18,0,250,15,255, + 128,31,255,128,63,140,0,127,140,0,127,140,0,255,140,0, + 255,140,0,255,140,0,255,140,0,255,140,0,127,140,0,127, + 140,0,63,140,0,63,140,0,15,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,4,5,5,9,2, + 11,96,240,240,240,96,7,8,8,11,2,249,48,48,48,124, + 30,14,252,248,6,15,15,11,2,9,28,60,252,252,28,28, + 28,28,28,28,28,28,28,28,28,10,16,32,12,1,9,63, + 0,127,128,115,128,225,192,225,192,225,192,225,192,225,192,115, + 128,127,128,63,0,0,0,0,0,255,192,255,192,255,192,12, + 12,24,18,3,3,129,0,193,128,225,192,241,224,120,240,56, + 112,56,112,120,240,241,224,225,192,193,128,129,0,26,24,96, + 28,0,0,0,0,56,0,6,0,112,0,30,0,112,0,254, + 0,224,0,254,1,192,0,14,1,192,0,14,3,128,0,14, + 3,128,0,14,7,0,0,14,7,0,0,14,14,7,0,14, + 28,15,0,14,28,31,0,14,56,31,0,0,56,55,0,0, + 112,103,0,0,112,231,0,0,224,199,0,1,193,135,0,1, + 193,255,192,3,129,255,192,3,128,7,0,7,0,7,0,7, + 0,7,0,25,24,96,28,1,0,0,0,224,0,12,1,192, + 0,28,1,192,0,252,3,128,0,252,3,128,0,28,7,0, + 0,28,14,0,0,28,14,0,0,28,28,0,0,28,28,0, + 0,28,56,126,0,28,48,255,0,28,113,231,128,28,225,195, + 128,0,225,195,128,1,192,7,128,1,192,15,0,3,128,30, + 0,7,0,60,0,7,0,120,0,14,0,240,0,14,1,255, + 128,28,1,255,128,28,1,255,128,25,24,96,27,1,0,63, + 0,28,0,127,128,56,0,243,192,56,0,225,192,112,0,225, + 192,224,0,3,192,224,0,15,129,192,0,15,129,192,0,15, + 195,128,0,1,199,0,0,225,199,14,0,225,206,30,0,243, + 206,30,0,127,156,62,0,63,28,126,0,0,56,238,0,0, + 112,206,0,0,113,142,0,0,227,142,0,0,227,255,128,1, + 195,255,128,1,192,14,0,3,128,14,0,3,128,14,0,16, + 24,48,20,1,250,3,224,3,224,3,224,3,224,0,0,0, + 0,3,192,3,192,3,192,7,192,31,128,63,128,127,0,126, + 0,252,0,248,15,248,15,248,15,252,31,126,127,127,254,63, + 254,63,252,15,240,22,31,93,23,0,0,3,192,0,1,224, + 0,0,240,0,0,120,0,0,60,0,0,0,0,0,252,0, + 0,252,0,1,254,0,1,254,0,1,254,0,3,255,0,3, + 255,0,3,255,0,7,207,128,7,207,128,7,207,128,15,135, + 128,15,135,192,15,135,192,31,3,192,31,3,224,31,255,224, + 31,255,224,63,255,240,63,255,240,62,1,240,124,0,248,124, + 0,248,252,0,252,248,0,124,22,31,93,23,0,0,0,15, + 0,0,30,0,0,60,0,0,120,0,0,240,0,0,0,0, + 0,252,0,0,252,0,1,254,0,1,254,0,1,254,0,3, + 255,0,3,255,0,3,255,0,7,207,128,7,207,128,7,207, + 128,15,135,128,15,135,192,15,135,192,31,3,192,31,3,224, + 31,255,224,31,255,224,63,255,240,63,255,240,62,1,240,124, + 0,248,124,0,248,252,0,252,248,0,124,22,31,93,23,0, + 0,0,48,0,0,120,0,0,252,0,1,206,0,3,135,0, + 0,0,0,0,252,0,0,252,0,1,254,0,1,254,0,1, + 254,0,3,255,0,3,255,0,3,255,0,7,207,128,7,207, + 128,7,207,128,15,135,128,15,135,192,15,135,192,31,3,192, + 31,3,224,31,255,224,31,255,224,63,255,240,63,255,240,62, + 1,240,124,0,248,124,0,248,252,0,252,248,0,124,22,30, + 90,23,0,0,0,241,128,1,255,128,3,255,0,3,30,0, + 0,0,0,0,252,0,0,252,0,1,254,0,1,254,0,1, + 254,0,3,255,0,3,255,0,3,255,0,7,207,128,7,207, + 128,7,207,128,15,135,128,15,135,192,15,135,192,31,3,192, + 31,3,224,31,255,224,31,255,224,63,255,240,63,255,240,62, + 1,240,124,0,248,124,0,248,252,0,252,248,0,124,22,31, + 93,23,0,0,3,207,0,3,207,0,3,207,0,3,207,0, + 0,0,0,0,0,0,0,252,0,0,252,0,1,254,0,1, + 254,0,1,254,0,3,255,0,3,255,0,3,255,0,7,207, + 128,7,207,128,7,207,128,15,135,128,15,135,192,15,135,192, + 31,3,192,31,3,224,31,255,224,31,255,224,63,255,240,63, + 255,240,62,1,240,124,0,248,124,0,248,252,0,252,248,0, + 124,22,31,93,23,0,0,0,120,0,0,204,0,0,132,0, + 0,132,0,0,204,0,0,120,0,0,0,0,0,252,0,1, + 254,0,1,254,0,1,254,0,3,255,0,3,255,0,3,255, + 0,7,207,128,7,207,128,7,207,128,15,135,128,15,135,192, + 15,135,192,31,3,192,31,3,224,31,255,224,31,255,224,63, + 255,240,63,255,240,62,1,240,124,0,248,124,0,248,252,0, + 252,248,0,124,31,25,100,32,0,0,0,255,255,252,0,255, + 255,252,0,255,255,252,1,255,255,252,1,243,192,0,1,227, + 192,0,3,227,192,0,3,227,192,0,3,195,192,0,7,195, + 192,0,7,195,192,0,7,195,255,248,15,131,255,248,15,131, + 255,248,15,131,255,248,31,3,192,0,31,255,192,0,31,255, + 192,0,63,255,192,0,63,255,192,0,62,3,192,0,124,3, + 255,254,124,3,255,254,248,3,255,254,248,3,255,254,21,32, + 96,23,1,249,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,240,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,252,0,0, + 96,0,0,96,0,0,248,0,0,28,0,0,28,0,1,248, + 0,1,240,0,18,31,93,22,2,0,30,0,0,15,0,0, + 7,128,0,3,192,0,1,224,0,0,0,0,255,255,128,255, + 255,128,255,255,128,255,255,128,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,255,255,0,255,255,0, + 255,255,0,255,255,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,255,255,192,255,255, + 192,255,255,192,255,255,192,18,31,93,22,2,0,0,120,0, + 0,240,0,1,224,0,3,192,0,7,128,0,0,0,0,255, + 255,128,255,255,128,255,255,128,255,255,128,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,255,255,0, + 255,255,0,255,255,0,255,255,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,255,255, + 192,255,255,192,255,255,192,255,255,192,18,31,93,22,2,0, + 0,192,0,1,224,0,3,240,0,7,56,0,14,28,0,0, + 0,0,255,255,128,255,255,128,255,255,128,255,255,128,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 255,255,0,255,255,0,255,255,0,255,255,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,255,255,192,255,255,192,255,255,192,255,255,192,18,31,93, + 22,2,0,30,60,0,30,60,0,30,60,0,30,60,0,0, + 0,0,0,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,248,0,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,255,255,0,255,255,0,255,255,0,255,255,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,192,255,255,192,255,255,192,255,255,192, + 8,31,31,9,0,0,240,120,60,30,15,0,62,62,62,62, + 62,62,62,62,62,62,62,62,62,62,62,62,62,62,62,62, + 62,62,62,62,62,8,31,31,9,2,0,15,30,60,120,240, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,10,31,62,9,0,0, + 12,0,30,0,63,0,115,128,225,192,0,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,10,31, + 62,9,0,0,243,192,243,192,243,192,243,192,0,0,0,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,23,25,75,23,255,0,31,255,128,31,255,224,31,255, + 240,31,255,248,31,7,248,31,0,252,31,0,252,31,0,124, + 31,0,126,31,0,62,31,0,62,255,240,62,255,240,62,255, + 240,62,31,0,62,31,0,62,31,0,124,31,0,124,31,0, + 124,31,0,248,31,3,248,31,255,240,31,255,240,31,255,192, + 31,255,128,19,30,90,24,2,0,3,198,0,7,254,0,15, + 252,0,12,120,0,0,0,0,248,3,224,252,3,224,252,3, + 224,254,3,224,254,3,224,255,3,224,255,3,224,255,131,224, + 255,195,224,251,195,224,251,227,224,249,227,224,249,243,224,248, + 243,224,248,251,224,248,123,224,248,63,224,248,63,224,248,31, + 224,248,31,224,248,15,224,248,15,224,248,7,224,248,7,224, + 248,3,224,23,31,93,25,1,0,1,224,0,0,240,0,0, + 120,0,0,60,0,0,30,0,0,0,0,1,255,0,7,255, + 192,15,255,224,31,255,240,63,199,248,63,1,248,126,0,252, + 124,0,124,124,0,124,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,124,0,124,124,0, + 124,126,0,252,63,1,248,63,199,248,31,255,240,15,255,224, + 7,255,192,1,255,0,23,31,93,25,1,0,0,7,128,0, + 15,0,0,30,0,0,60,0,0,120,0,0,0,0,1,255, + 0,7,255,192,15,255,224,31,255,240,63,199,248,63,1,248, + 126,0,252,124,0,124,124,0,124,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,124,0, + 124,124,0,124,126,0,252,63,1,248,63,199,248,31,255,240, + 15,255,224,7,255,192,1,255,0,23,31,93,25,1,0,0, + 24,0,0,60,0,0,126,0,0,231,0,1,195,128,0,0, + 0,1,255,0,7,255,192,15,255,224,31,255,240,63,199,248, + 63,1,248,126,0,252,124,0,124,124,0,124,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,124,0,124,124,0,124,126,0,252,63,1,248,63,199,248, + 31,255,240,15,255,224,7,255,192,1,255,0,23,30,90,25, + 1,0,0,120,192,0,255,192,1,255,128,1,143,0,0,0, + 0,1,255,0,7,255,192,15,255,224,31,255,240,63,199,248, + 63,1,248,126,0,252,124,0,124,124,0,124,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,124,0,124,124,0,124,126,0,252,63,1,248,63,199,248, + 31,255,240,15,255,224,7,255,192,1,255,0,23,31,93,25, + 1,0,1,231,128,1,231,128,1,231,128,1,231,128,0,0, + 0,0,0,0,1,255,0,7,255,192,15,255,224,31,255,240, + 63,199,248,63,1,248,126,0,252,124,0,124,124,0,124,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,248,0, + 62,248,0,62,124,0,124,124,0,124,126,0,252,63,1,248, + 63,199,248,31,255,240,15,255,224,7,255,192,1,255,0,15, + 16,32,19,2,0,32,8,112,28,248,62,252,126,126,252,63, + 248,31,240,15,224,15,224,31,240,63,248,126,252,252,126,248, + 62,112,28,32,8,24,25,75,25,1,0,1,255,7,7,255, + 206,15,255,252,31,255,248,63,199,248,63,0,248,126,1,252, + 124,3,252,124,7,188,248,7,62,248,14,62,248,28,62,248, + 56,62,248,112,62,248,224,62,248,224,62,125,192,124,127,128, + 124,127,0,252,63,1,248,63,199,248,63,255,240,63,255,224, + 119,255,192,225,255,0,19,31,93,24,2,0,7,128,0,3, + 192,0,1,224,0,0,240,0,0,120,0,0,0,0,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,252,7,224,127,31,192,127,255,192, + 63,255,128,31,255,0,7,252,0,19,31,93,24,2,0,0, + 30,0,0,60,0,0,120,0,0,240,0,1,224,0,0,0, + 0,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,252,7,224,127,31,192, + 127,255,192,63,255,128,31,255,0,7,252,0,19,31,93,24, + 2,0,0,96,0,0,240,0,1,248,0,3,156,0,7,14, + 0,0,0,0,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,252,7,224, + 127,31,192,127,255,192,63,255,128,31,255,0,7,252,0,19, + 31,93,24,2,0,15,30,0,15,30,0,15,30,0,15,30, + 0,0,0,0,0,0,0,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 252,7,224,127,31,192,127,255,192,63,255,128,31,255,0,7, + 252,0,20,31,93,22,1,0,0,30,0,0,60,0,0,120, + 0,0,240,0,1,224,0,0,0,0,252,3,240,252,3,240, + 126,7,224,62,7,192,63,15,192,63,15,128,31,15,128,31, + 159,0,15,159,0,15,254,0,7,254,0,7,252,0,3,252, + 0,3,248,0,3,248,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,18,25,75,22,2,0,248,0,0,248,0, + 0,248,0,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,254, + 0,255,252,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,17,25,75,20,2,0,15,192,0,63, + 240,0,127,252,0,255,252,0,248,126,0,248,62,0,240,62, + 0,240,62,0,240,124,0,240,252,0,241,248,0,241,252,0, + 241,254,0,240,127,0,240,31,0,240,31,128,240,15,128,240, + 15,128,240,15,128,240,31,128,240,63,0,241,255,0,241,254, + 0,241,252,0,241,240,0,15,25,50,18,1,0,15,0,7, + 128,3,128,1,192,0,224,0,0,0,0,15,240,63,252,127, + 252,124,62,248,30,248,30,1,254,15,254,63,254,127,30,248, + 30,240,30,240,62,248,126,255,254,255,254,127,222,63,30,15, + 25,50,18,1,0,0,120,0,240,0,224,1,192,3,128,0, + 0,0,0,15,240,63,252,127,252,124,62,248,30,248,30,1, + 254,15,254,63,254,127,30,248,30,240,30,240,62,248,126,255, + 254,255,254,127,222,63,30,15,25,50,18,1,0,1,128,3, + 192,7,224,14,112,28,56,0,0,0,0,15,240,63,252,127, + 252,124,62,248,30,248,30,1,254,15,254,63,254,127,30,248, + 30,240,30,240,62,248,126,255,254,255,254,127,222,63,30,15, + 24,48,18,1,0,7,140,15,252,31,248,24,240,0,0,0, + 0,15,240,63,252,127,252,124,62,248,30,248,30,1,254,15, + 254,63,254,127,30,248,30,240,30,240,62,248,126,255,254,255, + 254,127,222,63,30,15,24,48,18,1,0,30,120,30,120,30, + 120,30,120,0,0,0,0,15,240,63,252,127,252,124,62,248, + 30,248,30,1,254,15,254,63,254,127,30,248,30,240,30,240, + 62,248,126,255,254,255,254,127,222,63,30,15,25,50,18,1, + 0,3,192,6,96,4,32,4,32,6,96,3,192,0,0,15, + 240,63,252,127,252,124,62,248,30,248,30,1,254,15,254,63, + 254,127,30,248,30,248,30,240,62,248,126,255,254,255,254,127, + 222,63,30,26,19,76,29,1,0,7,224,248,0,31,251,254, + 0,63,255,255,0,63,255,255,0,124,63,15,128,120,30,7, + 128,120,30,7,192,0,62,7,192,7,255,255,192,63,255,255, + 192,127,255,255,192,124,30,0,0,248,30,0,0,248,30,7, + 192,252,63,15,192,255,255,255,128,127,247,255,0,63,227,254, + 0,15,129,248,0,15,25,50,18,1,249,7,224,31,248,63, + 252,63,252,124,62,120,30,248,30,240,0,240,0,240,0,240, + 0,248,30,248,30,124,62,127,252,63,248,31,248,7,224,3, + 0,3,0,7,192,0,224,0,224,15,192,15,128,16,25,50, + 18,1,0,15,0,7,128,3,128,1,192,0,224,0,0,0, + 0,7,224,31,248,63,252,127,254,124,62,248,30,240,31,255, + 255,255,255,255,255,240,0,240,0,248,30,124,62,127,254,63, + 252,31,240,7,192,16,25,50,18,1,0,0,120,0,240,0, + 224,1,192,3,128,0,0,0,0,7,224,31,248,63,252,127, + 254,124,62,248,30,240,31,255,255,255,255,255,255,240,0,240, + 0,248,30,124,62,127,254,63,252,31,240,7,192,16,25,50, + 18,1,0,1,128,3,192,7,224,14,112,28,56,0,0,0, + 0,7,224,31,248,63,252,127,254,124,62,248,30,240,31,255, + 255,255,255,255,255,240,0,240,0,248,30,124,62,127,254,63, + 252,31,240,7,192,16,24,48,18,1,0,30,120,30,120,30, + 120,30,120,0,0,0,0,7,224,31,248,63,252,127,254,124, + 62,248,30,240,31,255,255,255,255,255,255,240,0,240,0,248, + 30,124,62,127,254,63,252,31,240,7,192,7,25,25,9,1, + 0,240,120,56,28,14,0,0,30,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,6,25,25,9,2,0, + 60,56,112,112,224,0,0,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,10,25,50,9,255,0,12, + 0,30,0,63,0,115,128,225,192,0,0,0,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,10,24,48,9,255,0,243,192,243,192,243,192,243,192,0, + 0,0,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,17,26,78,20,1,0,48,0,0, + 120,32,0,124,240,0,63,224,0,31,192,0,63,224,0,115, + 240,0,33,248,0,7,252,0,31,254,0,63,254,0,127,255, + 0,124,31,0,248,15,128,248,15,128,240,7,128,240,7,128, + 240,7,128,248,15,128,248,15,128,252,31,128,126,63,0,127, + 255,0,63,254,0,31,252,0,7,240,0,15,24,48,20,2, + 0,15,24,31,248,63,240,49,224,0,0,0,0,243,240,247, + 248,255,252,255,254,252,62,248,62,240,30,240,30,240,30,240, + 30,240,30,240,30,240,30,240,30,240,30,240,30,240,30,240, + 30,17,25,75,20,1,0,7,128,0,3,192,0,1,192,0, + 1,224,0,0,240,0,0,0,0,0,0,0,7,240,0,31, + 252,0,63,254,0,127,255,0,124,31,0,248,15,128,248,15, + 128,240,7,128,240,7,128,240,7,128,240,7,128,248,15,128, + 248,15,128,124,31,0,127,255,0,63,254,0,31,252,0,7, + 240,0,17,25,75,20,1,0,0,120,0,0,240,0,0,224, + 0,1,192,0,3,192,0,0,0,0,0,0,0,7,240,0, + 31,252,0,63,254,0,127,255,0,124,31,0,248,15,128,248, + 15,128,240,7,128,240,7,128,240,7,128,240,7,128,248,15, + 128,248,15,128,124,31,0,127,255,0,63,254,0,31,252,0, + 7,240,0,17,25,75,20,1,0,0,192,0,1,224,0,3, + 240,0,7,56,0,14,28,0,0,0,0,0,0,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,17,24,72,20,1,0,7,140,0,15,252,0, + 31,248,0,24,240,0,0,0,0,0,0,0,7,240,0,31, + 252,0,63,254,0,127,255,0,124,31,0,248,15,128,248,15, + 128,240,7,128,240,7,128,240,7,128,240,7,128,248,15,128, + 248,15,128,124,31,0,127,255,0,63,254,0,31,252,0,7, + 240,0,17,24,72,20,1,0,30,60,0,30,60,0,30,60, + 0,30,60,0,0,0,0,0,0,0,7,240,0,31,252,0, + 63,254,0,127,255,0,124,31,0,248,15,128,248,15,128,240, + 7,128,240,7,128,240,7,128,240,7,128,248,15,128,248,15, + 128,124,31,0,127,255,0,63,254,0,31,252,0,7,240,0, + 16,16,32,19,1,0,3,192,3,192,3,192,3,192,0,0, + 0,0,255,255,255,255,255,255,255,255,0,0,0,0,3,192, + 3,192,3,192,3,192,21,18,54,20,255,0,1,252,56,7, + 255,112,15,255,224,31,255,192,31,143,192,62,7,224,62,15, + 224,60,29,224,60,57,224,60,113,224,62,227,224,63,131,224, + 63,7,224,31,143,192,31,255,192,63,255,128,119,255,0,225, + 252,0,15,25,50,20,2,0,30,0,15,0,7,0,3,128, + 1,192,0,0,0,0,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,127,254,127,222,31,30,15,25,50,20,2,0, + 0,240,1,224,1,192,3,128,7,0,0,0,0,0,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,248,62,248,126,255,254,127,254,127,222, + 31,30,15,25,50,20,2,0,3,0,7,128,15,192,28,224, + 56,112,0,0,0,0,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,248,62, + 248,126,255,254,127,254,127,222,31,30,15,25,50,20,2,0, + 60,120,60,120,60,120,60,120,0,0,0,0,0,0,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,248,62,248,126,255,254,127,254,127,222, + 31,30,16,32,64,19,1,249,0,120,0,240,1,224,1,192, + 3,128,0,0,0,0,248,31,248,31,248,31,120,30,124,62, + 124,60,60,60,60,60,62,120,62,120,30,120,31,240,31,240, + 15,240,15,224,7,224,7,224,7,192,7,192,7,192,15,128, + 63,128,63,0,63,0,60,0,16,32,64,20,2,249,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,243,240,247,252, + 255,254,255,254,252,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,252,62,255,254,255,252,247,248,241,240, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,31, + 62,19,1,249,30,120,30,120,30,120,30,120,0,0,0,0, + 248,31,248,31,248,31,120,62,124,62,124,60,124,60,62,124, + 62,120,62,120,30,120,31,240,31,240,15,240,15,224,7,224, + 7,224,7,192,7,192,7,192,15,128,63,128,63,0,63,0, + 60,0}; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=17 h=25 x= 2 y=13 dx=19 dy= 0 ascent=25 len=72 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24n[720] U8G_SECTION(".progmem.u8g_font_helvB24n") = { + 0,40,49,250,244,23,0,0,0,0,42,57,0,25,250,23, + 0,10,11,22,13,1,13,12,0,12,0,76,128,237,192,255, + 192,127,128,30,0,63,0,127,128,115,128,33,0,16,16,32, + 19,1,0,3,192,3,192,3,192,3,192,3,192,3,192,255, + 255,255,255,255,255,255,255,3,192,3,192,3,192,3,192,3, + 192,3,192,5,11,11,9,2,250,248,248,248,248,248,24,24, + 56,112,224,128,9,5,10,11,1,7,255,128,255,128,255,128, + 255,128,255,128,5,5,5,9,2,0,248,248,248,248,248,8, + 25,25,9,0,0,3,3,3,3,6,6,6,14,12,12,12, + 28,24,24,24,48,48,48,112,96,96,96,192,192,192,15,24, + 48,18,1,0,15,224,31,240,63,248,127,252,124,124,248,62, + 248,62,248,62,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,248,62,248,62,248,62,124,124,127,252,63,248, + 31,240,15,224,10,23,46,18,2,0,1,192,3,192,7,192, + 31,192,255,192,255,192,255,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,16,24,48,18,1,0,15,224, + 63,248,127,252,127,254,252,126,248,63,248,31,240,31,240,31, + 0,63,0,62,0,126,0,252,1,248,7,240,15,224,31,128, + 63,0,126,0,252,0,255,255,255,255,255,255,255,255,16,24, + 48,18,1,0,15,224,63,248,127,252,127,252,248,62,240,62, + 240,30,240,30,0,62,0,124,3,248,3,240,3,252,0,126, + 0,63,0,31,240,31,240,31,240,63,248,62,127,254,127,252, + 63,248,15,224,16,24,48,18,1,0,0,248,0,248,1,248, + 3,248,3,248,7,248,15,120,14,120,30,120,28,120,60,120, + 120,120,112,120,240,120,224,120,255,255,255,255,255,255,255,255, + 0,120,0,120,0,120,0,120,0,120,15,24,48,18,1,0, + 63,252,63,252,63,252,63,252,56,0,120,0,120,0,120,0, + 123,224,127,248,127,252,127,252,120,126,0,62,0,62,0,30, + 0,30,240,62,240,62,248,124,127,252,127,248,63,240,15,192, + 15,24,48,18,1,0,7,224,31,248,63,252,63,254,124,62, + 120,30,240,0,240,0,243,224,247,248,255,252,255,252,252,126, + 248,62,240,30,240,30,240,30,240,30,248,62,124,124,127,252, + 63,248,31,240,7,192,16,24,48,18,1,0,255,255,255,255, + 255,255,255,255,0,30,0,62,0,60,0,120,0,248,0,240, + 1,240,1,224,3,224,3,192,7,192,7,192,7,128,15,128, + 15,128,15,128,31,0,31,0,31,0,31,0,17,24,72,18, + 0,0,7,240,0,31,252,0,63,254,0,62,62,0,124,31, + 0,120,15,0,120,15,0,120,15,0,124,31,0,62,62,0, + 31,252,0,31,252,0,63,254,0,124,31,0,248,15,128,240, + 7,128,240,7,128,240,7,128,248,15,128,126,63,0,127,254, + 0,63,254,0,31,252,0,7,240,0,15,24,48,18,1,0, + 7,192,31,240,63,248,127,252,124,124,248,62,240,30,240,30, + 240,30,240,30,248,62,252,126,127,254,127,254,63,222,7,158, + 0,30,0,30,240,60,248,124,127,248,127,248,31,240,7,192 + }; +/* + Fontname: -Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 23 + Calculated Max Values w=29 h=32 x= 3 y=20 dx=33 dy= 0 ascent=25 len=120 + Font Bounding box w=40 h=49 x=-6 y=-12 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB24r[5214] U8G_SECTION(".progmem.u8g_font_helvB24r") = { + 0,40,49,250,244,25,5,252,14,144,32,127,249,25,249,25, + 249,0,0,0,9,0,1,5,25,25,11,3,0,248,248,248, + 248,248,248,248,248,248,248,248,112,112,112,112,112,112,112,0, + 0,248,248,248,248,248,11,9,18,16,2,16,241,224,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,18,25, + 75,19,0,255,3,199,0,3,199,0,3,143,0,3,143,0, + 7,143,0,7,142,0,7,142,0,127,255,192,127,255,192,127, + 255,192,127,255,192,15,28,0,14,28,0,14,28,0,14,60, + 0,255,255,128,255,255,128,255,255,128,255,255,128,28,120,0, + 60,120,0,60,112,0,60,112,0,56,240,0,56,240,0,16, + 28,56,18,1,253,1,128,1,128,15,240,63,252,127,254,253, + 190,249,159,241,159,241,143,249,128,255,128,127,192,63,240,15, + 252,1,254,1,255,1,159,1,143,241,143,241,159,249,159,127, + 254,127,254,63,248,7,224,1,128,1,128,1,128,26,23,92, + 29,1,0,14,0,48,0,63,128,112,0,127,192,96,0,113, + 192,224,0,224,224,192,0,224,225,192,0,224,227,128,0,224, + 227,128,0,113,199,0,0,127,198,0,0,63,142,0,0,14, + 12,28,0,0,28,127,0,0,24,255,128,0,56,227,128,0, + 49,193,192,0,113,193,192,0,97,193,192,0,225,193,192,1, + 192,227,128,1,192,255,128,3,128,127,0,3,0,28,0,20, + 25,75,24,2,0,3,224,0,15,248,0,31,252,0,31,252, + 0,30,60,0,62,60,0,62,60,0,31,60,0,31,248,0, + 15,248,0,15,240,0,15,224,0,63,241,224,127,241,224,124, + 249,192,248,255,192,240,127,192,240,63,128,240,31,0,248,15, + 128,252,63,192,127,255,224,127,251,224,31,241,240,7,192,0, + 4,9,9,8,2,16,240,240,240,240,240,240,240,96,96,8, + 31,31,11,1,250,7,15,30,30,60,60,56,120,120,120,240, + 240,240,240,240,240,240,240,240,248,120,120,120,120,60,60,28, + 30,14,15,7,8,31,31,11,1,250,224,240,120,120,60,60, + 28,30,30,30,15,15,15,15,15,15,15,15,15,31,30,30, + 30,28,60,60,56,120,112,240,224,10,11,22,13,1,13,12, + 0,12,0,76,128,237,192,255,192,127,128,30,0,63,0,127, + 128,115,128,33,0,16,16,32,19,1,0,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,5,11,11,9,2, + 250,248,248,248,248,248,24,24,56,112,224,128,9,5,10,11, + 1,7,255,128,255,128,255,128,255,128,255,128,5,5,5,9, + 2,0,248,248,248,248,248,8,25,25,9,0,0,3,3,3, + 3,6,6,6,14,12,12,12,28,24,24,24,48,48,48,112, + 96,96,96,192,192,192,15,24,48,18,1,0,15,224,31,240, + 63,248,127,252,124,124,248,62,248,62,248,62,240,30,240,30, + 240,30,240,30,240,30,240,30,240,30,240,30,248,62,248,62, + 248,62,124,124,127,252,63,248,31,240,15,224,10,23,46,18, + 2,0,1,192,3,192,7,192,31,192,255,192,255,192,255,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 16,24,48,18,1,0,15,224,63,248,127,252,127,254,252,126, + 248,63,248,31,240,31,240,31,0,63,0,62,0,126,0,252, + 1,248,7,240,15,224,31,128,63,0,126,0,252,0,255,255, + 255,255,255,255,255,255,16,24,48,18,1,0,15,224,63,248, + 127,252,127,252,248,62,240,62,240,30,240,30,0,62,0,124, + 3,248,3,240,3,252,0,126,0,63,0,31,240,31,240,31, + 240,63,248,62,127,254,127,252,63,248,15,224,16,24,48,18, + 1,0,0,248,0,248,1,248,3,248,3,248,7,248,15,120, + 14,120,30,120,28,120,60,120,120,120,112,120,240,120,224,120, + 255,255,255,255,255,255,255,255,0,120,0,120,0,120,0,120, + 0,120,15,24,48,18,1,0,63,252,63,252,63,252,63,252, + 56,0,120,0,120,0,120,0,123,224,127,248,127,252,127,252, + 120,126,0,62,0,62,0,30,0,30,240,62,240,62,248,124, + 127,252,127,248,63,240,15,192,15,24,48,18,1,0,7,224, + 31,248,63,252,63,254,124,62,120,30,240,0,240,0,243,224, + 247,248,255,252,255,252,252,126,248,62,240,30,240,30,240,30, + 240,30,248,62,124,124,127,252,63,248,31,240,7,192,16,24, + 48,18,1,0,255,255,255,255,255,255,255,255,0,30,0,62, + 0,60,0,120,0,248,0,240,1,240,1,224,3,224,3,192, + 7,192,7,192,7,128,15,128,15,128,15,128,31,0,31,0, + 31,0,31,0,17,24,72,18,0,0,7,240,0,31,252,0, + 63,254,0,62,62,0,124,31,0,120,15,0,120,15,0,120, + 15,0,124,31,0,62,62,0,31,252,0,31,252,0,63,254, + 0,124,31,0,248,15,128,240,7,128,240,7,128,240,7,128, + 248,15,128,126,63,0,127,254,0,63,254,0,31,252,0,7, + 240,0,15,24,48,18,1,0,7,192,31,240,63,248,127,252, + 124,124,248,62,240,30,240,30,240,30,240,30,248,62,252,126, + 127,254,127,254,63,222,7,158,0,30,0,30,240,60,248,124, + 127,248,127,248,31,240,7,192,5,17,17,11,3,0,248,248, + 248,248,248,0,0,0,0,0,0,0,248,248,248,248,248,5, + 23,23,11,3,250,248,248,248,248,248,0,0,0,0,0,0, + 0,248,248,248,248,248,24,24,56,112,224,128,16,16,32,19, + 1,0,0,3,0,31,0,127,3,255,15,254,127,248,255,192, + 254,0,254,0,255,192,127,240,15,254,3,255,0,127,0,31, + 0,3,15,12,24,19,2,2,255,254,255,254,255,254,255,254, + 0,0,0,0,0,0,0,0,255,254,255,254,255,254,255,254, + 16,16,32,19,1,0,192,0,240,0,254,0,255,192,127,240, + 31,254,3,255,0,127,0,127,3,255,31,254,127,240,255,192, + 254,0,240,0,192,0,16,25,50,20,2,0,15,224,63,248, + 127,252,127,254,252,126,248,63,248,31,240,31,240,31,0,63, + 0,126,0,254,1,252,1,248,3,224,3,192,7,192,7,192, + 0,0,0,0,7,192,7,192,7,192,7,192,7,192,29,30, + 120,33,1,251,0,15,224,0,0,127,252,0,1,255,254,0, + 3,240,63,128,7,192,7,192,15,0,3,192,30,0,1,224, + 28,0,0,240,60,7,220,112,56,31,252,112,112,60,252,56, + 112,120,120,56,240,240,56,56,224,224,56,56,225,224,56,56, + 225,192,112,120,225,192,112,112,225,192,112,112,225,224,240,224, + 241,225,241,224,112,255,255,192,120,127,63,128,56,62,30,0, + 60,0,0,0,30,0,0,0,15,128,0,0,15,240,60,0, + 3,255,252,0,1,255,252,0,0,127,224,0,22,25,75,23, + 0,0,0,252,0,0,252,0,1,254,0,1,254,0,1,254, + 0,3,255,0,3,255,0,3,255,0,7,207,128,7,207,128, + 7,207,128,15,135,128,15,135,192,15,135,192,31,3,192,31, + 3,224,31,255,224,31,255,224,63,255,240,63,255,240,62,1, + 240,124,0,248,124,0,248,252,0,252,248,0,124,19,25,75, + 24,3,0,255,252,0,255,255,0,255,255,128,255,255,128,248, + 15,192,248,7,192,248,7,192,248,7,192,248,7,192,248,15, + 128,255,255,0,255,255,0,255,255,128,255,255,192,248,7,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 7,224,255,255,192,255,255,192,255,255,128,255,254,0,21,25, + 75,24,1,0,1,254,0,7,255,128,15,255,192,31,255,224, + 63,135,240,62,1,240,124,1,248,124,0,248,124,0,248,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,124,0,248,124,0,248,126,1,248,62,1,240, + 63,135,240,31,255,224,15,255,192,7,255,128,1,254,0,21, + 25,75,24,2,0,255,248,0,255,255,0,255,255,128,255,255, + 192,248,15,224,248,3,224,248,3,240,248,1,240,248,1,248, + 248,0,248,248,0,248,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,1,248,248,1,240,248,3,240,248,3, + 224,248,15,224,255,255,192,255,255,128,255,255,0,255,248,0, + 18,25,75,22,2,0,255,255,128,255,255,128,255,255,128,255, + 255,128,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,255,255,0,255,255,0,255,255,0,255,255,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,255,255,192,255,255,192,255,255,192,255,255, + 192,16,25,50,20,2,0,255,255,255,255,255,255,255,255,248, + 0,248,0,248,0,248,0,248,0,248,0,255,254,255,254,255, + 254,255,254,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,22,25,75,25,1,0,0, + 255,0,3,255,192,15,255,224,31,255,240,31,195,248,63,0, + 248,126,0,124,124,0,124,252,0,0,248,0,0,248,0,0, + 248,0,0,248,15,252,248,15,252,248,15,252,248,15,252,252, + 0,124,124,0,124,126,0,124,126,0,252,63,131,252,63,255, + 252,31,255,220,7,255,156,3,254,28,19,25,75,23,2,0, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,255,255, + 224,255,255,224,255,255,224,255,255,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,5,25,25,9,2, + 0,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,248,248,248,248,248,15,25,50,18,1,0, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,248,62, + 248,62,248,62,248,62,248,62,252,126,255,252,127,252,63,248, + 15,224,20,25,75,24,2,0,248,7,224,248,7,224,248,15, + 192,248,31,128,248,63,0,248,126,0,248,252,0,248,248,0, + 249,248,0,251,240,0,255,224,0,255,224,0,255,240,0,255, + 240,0,255,248,0,252,252,0,248,126,0,248,126,0,248,63, + 0,248,31,128,248,15,128,248,15,192,248,7,224,248,3,240, + 248,3,240,16,25,50,20,2,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,255,255,255,255,255,255,255,255,23,25,75,27,2, + 0,254,0,254,254,0,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,131,254,255,131,254,251,131,190,251,131,190,251, + 199,190,251,199,190,251,199,190,249,199,62,249,239,62,249,239, + 62,249,239,62,249,239,62,248,238,62,248,254,62,248,254,62, + 248,254,62,248,124,62,248,124,62,248,124,62,19,25,75,24, + 2,0,248,3,224,252,3,224,252,3,224,254,3,224,254,3, + 224,255,3,224,255,3,224,255,131,224,255,195,224,251,195,224, + 251,227,224,249,227,224,249,243,224,248,243,224,248,251,224,248, + 123,224,248,63,224,248,63,224,248,31,224,248,31,224,248,15, + 224,248,15,224,248,7,224,248,7,224,248,3,224,23,25,75, + 25,1,0,1,255,0,7,255,192,15,255,224,31,255,240,63, + 199,248,63,1,248,126,0,252,124,0,124,124,0,124,248,0, + 62,248,0,62,248,0,62,248,0,62,248,0,62,248,0,62, + 248,0,62,124,0,124,124,0,124,126,0,252,63,1,248,63, + 199,248,31,255,240,15,255,224,7,255,192,1,255,0,18,25, + 75,22,2,0,255,248,0,255,254,0,255,255,0,255,255,128, + 248,31,128,248,15,192,248,7,192,248,7,192,248,7,192,248, + 7,192,248,15,192,248,31,128,255,255,128,255,255,0,255,252, + 0,255,240,0,248,0,0,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,23, + 26,78,26,1,255,1,255,0,7,255,192,15,255,224,31,255, + 240,63,199,248,63,1,248,126,0,252,124,0,124,252,0,126, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,2,62,252,7,62,124,15,188,126,15,252,63,7, + 248,63,195,240,31,255,248,15,255,252,7,255,254,1,255,60, + 0,0,24,19,25,75,24,2,0,255,254,0,255,255,128,255, + 255,192,255,255,192,248,7,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,7,192,248,15,192,255,255,128,255,255,0, + 255,255,0,255,255,128,248,15,192,248,7,192,248,7,192,248, + 7,192,248,7,192,248,7,192,248,7,192,248,7,192,248,7, + 224,248,3,224,19,25,75,22,1,0,3,248,0,15,254,0, + 31,255,0,63,255,128,62,31,128,124,7,192,120,7,192,120, + 3,192,124,0,0,127,0,0,63,240,0,63,254,0,31,255, + 128,3,255,192,0,63,192,0,7,224,0,3,224,248,3,224, + 248,3,224,124,3,224,126,15,192,63,255,192,31,255,128,15, + 255,0,3,248,0,19,25,75,20,0,0,255,255,224,255,255, + 224,255,255,224,255,255,224,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,19,25,75,24,2,0,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,252,7,224,127,31,192,127,255,192,63,255, + 128,31,255,0,7,252,0,20,25,75,22,1,0,248,1,240, + 248,1,240,124,3,224,124,3,224,124,3,224,60,3,192,62, + 7,192,62,7,192,30,7,128,31,15,128,31,15,128,15,15, + 0,15,15,0,15,15,0,7,158,0,7,158,0,7,158,0, + 7,254,0,3,252,0,3,252,0,3,252,0,1,248,0,1, + 248,0,1,248,0,0,240,0,29,25,100,31,1,0,248,31, + 129,248,248,31,129,248,120,31,129,240,120,31,129,240,120,31, + 129,240,124,63,195,224,124,63,195,224,124,63,195,224,60,63, + 195,224,60,57,195,192,62,121,227,192,62,121,231,192,30,121, + 231,192,30,121,231,128,30,112,231,128,30,112,231,128,15,240, + 255,0,15,240,255,0,15,240,255,0,15,224,127,0,7,224, + 126,0,7,224,126,0,7,224,126,0,3,192,60,0,3,192, + 60,0,20,25,75,22,1,0,252,3,224,126,7,224,126,7, + 192,63,15,192,31,15,128,31,159,0,15,159,0,15,190,0, + 7,254,0,7,252,0,3,252,0,3,248,0,1,248,0,3, + 248,0,3,252,0,7,252,0,7,254,0,15,191,0,31,159, + 0,31,31,128,63,15,128,62,15,192,126,7,192,252,7,224, + 252,3,240,20,25,75,22,1,0,252,3,240,252,3,224,126, + 7,224,62,7,192,63,15,192,63,15,128,31,15,128,31,159, + 0,15,159,0,15,254,0,7,254,0,7,252,0,3,252,0, + 3,248,0,3,248,0,1,240,0,1,240,0,1,240,0,1, + 240,0,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,17,25,75,20,1,0,255,255,128,255,255,128, + 255,255,128,255,255,128,0,15,128,0,31,128,0,63,0,0, + 126,0,0,124,0,0,252,0,1,248,0,3,240,0,3,240, + 0,7,224,0,15,192,0,15,128,0,31,128,0,63,0,0, + 126,0,0,126,0,0,252,0,0,255,255,128,255,255,128,255, + 255,128,255,255,128,8,31,31,11,2,250,255,255,255,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,255,255,255,9,25,50,9,0,0, + 192,0,192,0,224,0,96,0,96,0,112,0,112,0,48,0, + 56,0,56,0,24,0,28,0,28,0,12,0,12,0,14,0, + 14,0,6,0,7,0,7,0,3,0,3,128,3,128,1,128, + 1,128,8,31,31,11,0,250,255,255,255,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,255,255,255,14,14,28,19,2,9,7,128,15, + 192,15,192,15,192,31,224,31,224,60,240,60,240,56,112,120, + 120,120,120,112,60,240,60,240,60,18,2,6,18,0,250,255, + 255,192,255,255,192,5,5,5,11,2,20,224,240,112,120,56, + 15,18,36,18,1,0,15,240,63,252,127,252,124,62,248,30, + 248,30,0,254,15,254,63,254,127,30,248,30,248,30,240,62, + 248,126,255,254,255,254,127,222,63,30,16,25,50,20,2,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,243,240, + 247,252,255,252,255,254,252,62,248,31,240,31,240,15,240,15, + 240,15,240,15,240,31,240,31,248,62,255,254,255,252,247,248, + 241,240,15,18,36,18,1,0,7,224,31,248,63,252,63,252, + 124,62,120,62,240,30,240,0,240,0,240,0,240,0,240,30, + 248,30,124,62,127,252,63,248,31,248,7,224,16,25,50,20, + 1,0,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 15,207,31,239,63,255,127,255,124,63,248,31,240,15,240,15, + 240,15,240,15,240,15,240,15,248,31,124,63,127,255,63,239, + 31,239,15,143,16,18,36,18,1,0,7,224,31,248,63,252, + 127,254,124,62,248,31,240,31,255,255,255,255,255,255,240,0, + 240,0,248,30,124,62,127,252,63,252,31,240,7,192,10,25, + 50,11,0,0,7,192,15,192,31,192,31,0,30,0,30,0, + 30,0,255,192,255,192,255,192,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,16,25,50,20,1,249,15,207,31,239, + 63,255,127,255,124,63,248,31,248,31,240,15,240,15,240,15, + 240,15,248,31,248,31,124,63,127,255,63,255,31,239,15,207, + 0,15,248,31,248,31,126,126,127,254,63,252,15,240,15,25, + 50,20,2,0,240,0,240,0,240,0,240,0,240,0,240,0, + 240,0,241,224,247,248,255,252,255,252,252,62,248,30,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,4,25,25,9,2,0,240,240,240,240, + 0,0,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,6,32,32,9,0,249,60,60,60,60,0, + 0,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,252,252,248,248,15,25,50,19,2, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 62,240,124,240,248,241,240,243,224,247,192,255,128,255,192,255, + 192,255,224,255,224,249,240,241,240,240,248,240,120,240,124,240, + 62,240,62,4,25,25,9,2,0,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,24,18,54,30,2,0,241,224,248,247,251,254,255,255, + 254,255,255,255,252,127,31,248,62,15,240,60,15,240,60,15, + 240,60,15,240,60,15,240,60,15,240,60,15,240,60,15,240, + 60,15,240,60,15,240,60,15,240,60,15,240,60,15,15,18, + 36,20,2,0,241,240,247,252,255,252,255,254,252,62,248,30, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,17,18,54,20,1,0,7,240, + 0,31,252,0,63,254,0,127,255,0,124,31,0,248,15,128, + 248,15,128,240,7,128,240,7,128,240,7,128,240,7,128,248, + 15,128,248,15,128,124,31,0,127,255,0,63,254,0,31,252, + 0,7,240,0,16,25,50,20,2,249,241,240,247,248,255,252, + 255,254,252,62,248,31,248,31,240,15,240,15,240,15,240,15, + 248,31,248,31,252,62,255,254,255,252,247,248,241,240,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,16,25,50,20, + 1,249,7,207,31,239,63,255,127,255,124,63,248,31,240,15, + 240,15,240,15,240,15,240,15,240,15,248,31,124,63,127,255, + 63,255,63,239,15,207,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,10,18,36,13,2,0,240,192,243,192,247,192, + 255,192,255,192,252,0,248,0,248,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,240,0,16,18, + 36,19,1,0,7,240,31,252,63,254,124,62,120,31,120,31, + 124,0,127,192,63,248,15,254,3,255,0,63,248,15,248,15, + 124,31,127,254,63,252,15,240,9,22,44,11,1,0,60,0, + 60,0,60,0,60,0,255,128,255,128,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,63,128,63,128,31,128,15,128,15,18,36,20,2,0, + 240,30,240,30,240,30,240,30,240,30,240,30,240,30,240,30, + 240,30,240,30,240,30,240,30,248,62,248,126,255,254,127,254, + 127,222,31,30,17,18,54,19,0,0,248,15,128,248,15,128, + 124,31,0,124,31,0,60,30,0,60,30,0,62,62,0,30, + 60,0,30,60,0,30,60,0,15,120,0,15,120,0,15,120, + 0,7,240,0,7,240,0,7,240,0,3,224,0,3,224,0, + 25,18,72,26,0,0,248,62,15,128,248,62,15,128,120,62, + 15,0,124,62,31,0,124,127,31,0,60,127,30,0,60,127, + 30,0,60,119,30,0,60,247,158,0,30,227,188,0,30,227, + 188,0,30,227,188,0,31,227,252,0,15,193,248,0,15,193, + 248,0,15,193,248,0,7,128,240,0,7,128,240,0,16,18, + 36,19,1,0,248,31,252,63,124,62,62,124,62,120,31,248, + 15,240,7,224,3,192,7,224,15,224,15,240,31,248,62,120, + 62,124,124,62,252,63,248,31,16,25,50,19,1,249,248,31, + 248,31,248,30,120,62,124,62,124,60,60,60,62,124,62,120, + 30,120,30,120,31,240,15,240,15,240,15,224,7,224,7,224, + 7,192,7,192,7,192,15,128,63,128,63,0,63,0,60,0, + 14,18,36,17,1,0,255,252,255,252,255,252,255,252,0,248, + 1,240,3,240,7,224,15,192,31,128,31,0,62,0,124,0, + 248,0,255,252,255,252,255,252,255,252,9,32,64,13,2,249, + 15,128,31,128,63,128,62,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,124,0,120,0, + 224,0,120,0,124,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,63,128,31,128,15,128, + 3,31,31,9,3,250,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,9,32,64,13,2,249,248,0,252,0,254, + 0,62,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,31,0,15,0,3,128,15,0,31, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,254,0,252,0,248,0,14,6,12,19,2, + 5,56,0,126,12,255,156,231,252,193,248,0,112,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=11 x= 1 y= 7 dx=11 dy= 0 ascent=11 len=18 + Font Bounding box w=13 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR08[2687] U8G_SECTION(".progmem.u8g_font_helvR08") = { + 0,13,18,254,252,8,1,178,3,111,32,255,254,11,254,8, + 254,0,0,0,3,0,1,1,8,8,3,1,0,128,128,128, + 128,128,128,0,128,3,2,2,4,1,6,160,160,6,7,7, + 6,0,0,40,40,124,40,248,80,80,5,10,10,6,0,255, + 32,112,168,160,112,40,40,168,112,32,8,8,8,9,0,0, + 100,148,104,8,16,22,41,38,6,8,8,8,1,0,96,144, + 144,96,148,136,152,100,1,2,2,2,0,6,128,128,3,10, + 10,4,0,254,32,64,64,128,128,128,128,64,64,32,3,10, + 10,4,1,254,128,64,64,32,32,32,32,64,64,128,3,3, + 3,4,0,5,160,64,160,5,5,5,6,0,1,32,32,248, + 32,32,2,3,3,3,0,254,64,64,128,3,1,1,4,0, + 3,224,1,1,1,3,1,0,128,3,8,8,3,0,0,32, + 32,64,64,64,64,128,128,5,8,8,6,0,0,112,136,136, + 136,136,136,136,112,2,8,8,6,1,0,64,192,64,64,64, + 64,64,64,5,8,8,6,0,0,112,136,8,8,48,64,128, + 248,5,8,8,6,0,0,112,136,8,48,8,8,136,112,5, + 8,8,6,0,0,16,48,80,80,144,248,16,16,5,8,8, + 6,0,0,120,64,64,112,8,8,136,112,5,8,8,6,0, + 0,112,136,128,240,136,136,136,112,5,8,8,6,0,0,248, + 8,16,32,32,64,64,64,5,8,8,6,0,0,112,136,136, + 112,136,136,136,112,5,8,8,6,0,0,112,136,136,136,120, + 8,136,112,1,6,6,3,1,0,128,0,0,0,0,128,2, + 8,8,3,0,254,64,0,0,0,0,64,64,128,3,5,5, + 6,1,1,32,64,128,64,32,4,3,3,5,0,2,240,0, + 240,3,5,5,6,1,1,128,64,32,64,128,4,8,8,6, + 1,0,96,144,16,32,64,64,0,64,10,9,18,11,0,255, + 31,0,32,128,77,64,146,64,162,64,164,128,155,0,64,0, + 62,0,7,8,8,7,0,0,16,16,40,40,68,124,130,130, + 5,8,8,7,1,0,240,136,136,240,136,136,136,240,6,8, + 8,8,1,0,120,132,128,128,128,128,132,120,6,8,8,8, + 1,0,240,136,132,132,132,132,136,240,5,8,8,7,1,0, + 248,128,128,248,128,128,128,248,5,8,8,6,1,0,248,128, + 128,240,128,128,128,128,6,8,8,8,1,0,120,132,128,128, + 140,132,132,124,6,8,8,8,1,0,132,132,132,252,132,132, + 132,132,1,8,8,3,1,0,128,128,128,128,128,128,128,128, + 4,8,8,5,0,0,16,16,16,16,16,16,144,96,5,8, + 8,7,1,0,136,144,160,224,144,144,136,136,4,8,8,6, + 1,0,128,128,128,128,128,128,128,240,7,8,8,9,1,0, + 130,198,198,170,170,146,146,146,6,8,8,8,1,0,196,196, + 164,164,148,148,140,140,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,5,8,8,7,1,0,240,136,136,240,128,128, + 128,128,7,9,9,8,1,255,120,132,132,132,132,148,140,124, + 2,5,8,8,7,1,0,240,136,136,240,136,136,136,136,5, + 8,8,7,1,0,112,136,128,112,8,136,136,112,5,8,8, + 5,0,0,248,32,32,32,32,32,32,32,6,8,8,8,1, + 0,132,132,132,132,132,132,132,120,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,9,0,0,136,128,136, + 128,73,0,73,0,85,0,34,0,34,0,34,0,5,8,8, + 7,1,0,136,136,80,32,80,80,136,136,7,8,8,7,0, + 0,130,68,68,40,40,16,16,16,5,8,8,7,1,0,248, + 8,16,32,32,64,128,248,2,10,10,3,1,254,192,128,128, + 128,128,128,128,128,128,192,3,8,8,3,0,0,128,128,64, + 64,64,64,32,32,2,10,10,3,0,254,192,64,64,64,64, + 64,64,64,64,192,5,5,5,6,0,3,32,32,80,80,136, + 6,1,1,6,0,254,252,2,2,2,3,0,7,128,64,5, + 6,6,5,0,0,224,16,112,144,144,104,5,8,8,6,0, + 0,128,128,176,200,136,136,200,176,4,6,6,5,0,0,96, + 144,128,128,144,96,5,8,8,6,0,0,8,8,104,152,136, + 136,152,104,4,6,6,5,0,0,96,144,240,128,144,96,4, + 8,8,4,0,0,48,64,224,64,64,64,64,64,5,8,8, + 6,0,254,104,152,136,136,152,104,8,112,5,8,8,6,0, + 0,128,128,176,200,136,136,136,136,1,8,8,2,0,0,128, + 0,128,128,128,128,128,128,2,10,10,2,255,254,64,0,64, + 64,64,64,64,64,64,128,4,8,8,5,0,0,128,128,144, + 160,192,160,144,144,1,8,8,2,0,0,128,128,128,128,128, + 128,128,128,7,6,6,8,0,0,236,146,146,146,146,146,5, + 6,6,6,0,0,176,200,136,136,136,136,5,6,6,6,0, + 0,112,136,136,136,136,112,5,8,8,6,0,254,176,200,136, + 136,200,176,128,128,5,8,8,6,0,254,104,152,136,136,152, + 104,8,8,3,6,6,4,0,0,160,192,128,128,128,128,4, + 6,6,5,0,0,96,144,96,16,144,96,3,8,8,4,0, + 0,64,64,224,64,64,64,64,96,4,6,6,5,0,0,144, + 144,144,144,144,112,5,6,6,6,0,0,136,136,80,80,32, + 32,7,6,6,8,0,0,146,146,84,84,40,40,5,6,6, + 6,0,0,136,80,32,80,136,136,5,8,8,5,255,254,72, + 72,80,80,48,32,32,192,4,6,6,5,0,0,240,16,32, + 64,128,240,3,10,10,3,0,254,32,64,64,64,128,64,64, + 64,64,32,1,10,10,3,1,254,128,128,128,128,128,128,128, + 128,128,128,3,10,10,3,0,254,128,64,64,64,32,64,64, + 64,64,128,6,2,2,7,0,3,100,152,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,3, + 0,1,1,8,8,3,1,254,128,0,128,128,128,128,128,128, + 5,8,8,6,1,255,16,112,168,160,160,168,112,64,5,8, + 8,6,0,0,48,72,64,224,64,64,72,176,4,6,6,5, + 0,1,144,96,144,144,96,144,5,8,8,6,0,0,136,136, + 136,80,248,32,248,32,1,10,10,3,1,254,128,128,128,128, + 0,0,128,128,128,128,5,10,10,6,0,254,112,136,192,112, + 152,200,112,24,136,112,3,1,1,3,0,7,160,7,7,7, + 9,1,0,56,68,154,162,154,68,56,3,5,5,4,0,3, + 224,32,160,0,224,5,5,5,6,0,0,40,80,160,80,40, + 5,3,3,7,1,2,248,8,8,3,1,1,4,0,3,224, + 7,7,7,9,1,0,56,68,186,178,170,68,56,3,1,1, + 3,0,7,224,4,4,4,4,0,4,96,144,144,96,5,7, + 7,6,0,0,32,32,248,32,32,0,248,3,4,4,3,0, + 4,96,160,64,224,3,4,4,3,0,4,224,64,32,192,2, + 2,2,3,0,7,64,128,4,8,8,5,0,254,144,144,144, + 144,144,240,128,128,6,10,10,6,0,254,124,232,232,232,104, + 40,40,40,40,40,2,1,1,3,0,3,192,2,2,2,3, + 0,254,64,192,2,4,4,3,0,4,64,192,64,64,3,5, + 5,4,0,3,224,160,224,0,224,5,5,5,6,0,0,160, + 80,40,80,160,9,8,16,9,0,0,68,0,196,0,72,0, + 72,0,17,0,19,0,39,128,33,0,8,8,8,9,0,0, + 68,196,72,72,19,21,34,39,9,8,16,9,0,0,224,0, + 68,0,36,0,200,0,9,0,19,0,23,128,33,0,4,8, + 8,6,1,254,32,0,32,32,64,128,144,96,7,11,11,7, + 0,0,32,16,0,16,16,40,40,68,124,130,130,7,11,11, + 7,0,0,8,16,0,16,16,40,40,68,124,130,130,7,11, + 11,7,0,0,16,40,0,16,16,40,40,68,124,130,130,7, + 11,11,7,0,0,20,40,0,16,16,40,40,68,124,130,130, + 7,10,10,7,0,0,40,0,16,16,40,40,68,124,130,130, + 7,11,11,7,0,0,16,40,16,16,16,40,40,68,124,130, + 130,9,8,16,10,0,0,31,128,24,0,40,0,47,128,72, + 0,120,0,136,0,143,128,6,10,10,8,1,254,120,132,128, + 128,128,128,132,120,16,48,5,11,11,7,1,0,64,32,0, + 248,128,128,248,128,128,128,248,5,11,11,7,1,0,16,32, + 0,248,128,128,248,128,128,128,248,5,11,11,7,1,0,32, + 80,0,248,128,128,248,128,128,128,248,5,10,10,7,1,0, + 80,0,248,128,128,248,128,128,128,248,2,11,11,3,0,0, + 128,64,0,64,64,64,64,64,64,64,64,2,11,11,3,1, + 0,64,128,0,128,128,128,128,128,128,128,128,3,11,11,3, + 0,0,64,160,0,64,64,64,64,64,64,64,64,3,10,10, + 3,0,0,160,0,64,64,64,64,64,64,64,64,7,8,8, + 8,0,0,120,68,66,242,66,66,68,120,6,11,11,8,1, + 0,40,80,0,196,196,164,164,148,148,140,140,6,11,11,8, + 1,0,32,16,0,120,132,132,132,132,132,132,120,6,11,11, + 8,1,0,8,16,0,120,132,132,132,132,132,132,120,6,11, + 11,8,1,0,32,80,0,120,132,132,132,132,132,132,120,6, + 11,11,8,1,0,40,80,0,120,132,132,132,132,132,132,120, + 6,10,10,8,1,0,72,0,120,132,132,132,132,132,132,120, + 5,5,5,6,0,1,136,80,32,80,136,6,10,10,8,1, + 255,4,120,140,148,148,164,164,196,120,128,6,11,11,8,1, + 0,32,16,0,132,132,132,132,132,132,132,120,6,11,11,8, + 1,0,8,16,0,132,132,132,132,132,132,132,120,6,11,11, + 8,1,0,32,80,0,132,132,132,132,132,132,132,120,6,10, + 10,8,1,0,72,0,132,132,132,132,132,132,132,120,7,11, + 11,7,0,0,8,16,0,130,68,68,40,40,16,16,16,5, + 8,8,7,1,0,128,128,240,136,136,240,128,128,4,8,8, + 5,0,0,96,144,144,160,144,144,144,160,5,9,9,5,0, + 0,64,32,0,224,16,112,144,144,104,5,9,9,5,0,0, + 32,64,0,224,16,112,144,144,104,5,9,9,5,0,0,32, + 80,0,224,16,112,144,144,104,5,9,9,5,0,0,80,160, + 0,224,16,112,144,144,104,5,8,8,5,0,0,80,0,224, + 16,112,144,144,104,5,9,9,5,0,0,32,80,32,224,16, + 112,144,144,104,7,6,6,8,0,0,236,18,126,144,146,108, + 4,8,8,5,0,254,96,144,128,128,144,96,32,96,4,9, + 9,5,0,0,64,32,0,96,144,240,128,144,96,4,9,9, + 5,0,0,32,64,0,96,144,240,128,144,96,4,9,9,5, + 0,0,64,160,0,96,144,240,128,144,96,4,8,8,5,0, + 0,160,0,96,144,240,128,144,96,2,9,9,2,255,0,128, + 64,0,64,64,64,64,64,64,2,9,9,2,0,0,64,128, + 0,128,128,128,128,128,128,3,9,9,2,255,0,64,160,0, + 64,64,64,64,64,64,3,8,8,2,255,0,160,0,64,64, + 64,64,64,64,5,9,9,6,0,0,64,120,144,120,136,136, + 136,136,112,4,9,9,5,0,0,80,160,0,224,144,144,144, + 144,144,5,9,9,6,0,0,64,32,0,112,136,136,136,136, + 112,5,9,9,6,0,0,16,32,0,112,136,136,136,136,112, + 5,9,9,6,0,0,32,80,0,112,136,136,136,136,112,5, + 9,9,6,0,0,40,80,0,112,136,136,136,136,112,5,8, + 8,6,0,0,80,0,112,136,136,136,136,112,5,5,5,6, + 0,1,32,0,248,0,32,7,6,6,6,255,0,58,76,84, + 100,68,184,4,9,9,5,0,0,64,32,0,144,144,144,144, + 144,112,4,9,9,5,0,0,16,32,0,144,144,144,144,144, + 112,4,9,9,5,0,0,64,160,0,144,144,144,144,144,112, + 4,8,8,5,0,0,160,0,144,144,144,144,144,112,5,11, + 11,5,255,254,8,16,0,72,72,80,80,48,32,32,192,5, + 10,10,6,0,254,128,128,176,200,136,136,200,176,128,128,5, + 10,10,5,255,254,80,0,72,72,80,80,48,32,32,192}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=10 h=10 x= 1 y= 7 dx=11 dy= 0 ascent= 9 len=18 + Font Bounding box w=13 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR08r[1276] U8G_SECTION(".progmem.u8g_font_helvR08r") = { + 0,13,18,254,252,8,1,178,3,111,32,127,254,9,254,8, + 254,0,0,0,3,0,1,1,8,8,3,1,0,128,128,128, + 128,128,128,0,128,3,2,2,4,1,6,160,160,6,7,7, + 6,0,0,40,40,124,40,248,80,80,5,10,10,6,0,255, + 32,112,168,160,112,40,40,168,112,32,8,8,8,9,0,0, + 100,148,104,8,16,22,41,38,6,8,8,8,1,0,96,144, + 144,96,148,136,152,100,1,2,2,2,0,6,128,128,3,10, + 10,4,0,254,32,64,64,128,128,128,128,64,64,32,3,10, + 10,4,1,254,128,64,64,32,32,32,32,64,64,128,3,3, + 3,4,0,5,160,64,160,5,5,5,6,0,1,32,32,248, + 32,32,2,3,3,3,0,254,64,64,128,3,1,1,4,0, + 3,224,1,1,1,3,1,0,128,3,8,8,3,0,0,32, + 32,64,64,64,64,128,128,5,8,8,6,0,0,112,136,136, + 136,136,136,136,112,2,8,8,6,1,0,64,192,64,64,64, + 64,64,64,5,8,8,6,0,0,112,136,8,8,48,64,128, + 248,5,8,8,6,0,0,112,136,8,48,8,8,136,112,5, + 8,8,6,0,0,16,48,80,80,144,248,16,16,5,8,8, + 6,0,0,120,64,64,112,8,8,136,112,5,8,8,6,0, + 0,112,136,128,240,136,136,136,112,5,8,8,6,0,0,248, + 8,16,32,32,64,64,64,5,8,8,6,0,0,112,136,136, + 112,136,136,136,112,5,8,8,6,0,0,112,136,136,136,120, + 8,136,112,1,6,6,3,1,0,128,0,0,0,0,128,2, + 8,8,3,0,254,64,0,0,0,0,64,64,128,3,5,5, + 6,1,1,32,64,128,64,32,4,3,3,5,0,2,240,0, + 240,3,5,5,6,1,1,128,64,32,64,128,4,8,8,6, + 1,0,96,144,16,32,64,64,0,64,10,9,18,11,0,255, + 31,0,32,128,77,64,146,64,162,64,164,128,155,0,64,0, + 62,0,7,8,8,7,0,0,16,16,40,40,68,124,130,130, + 5,8,8,7,1,0,240,136,136,240,136,136,136,240,6,8, + 8,8,1,0,120,132,128,128,128,128,132,120,6,8,8,8, + 1,0,240,136,132,132,132,132,136,240,5,8,8,7,1,0, + 248,128,128,248,128,128,128,248,5,8,8,6,1,0,248,128, + 128,240,128,128,128,128,6,8,8,8,1,0,120,132,128,128, + 140,132,132,124,6,8,8,8,1,0,132,132,132,252,132,132, + 132,132,1,8,8,3,1,0,128,128,128,128,128,128,128,128, + 4,8,8,5,0,0,16,16,16,16,16,16,144,96,5,8, + 8,7,1,0,136,144,160,224,144,144,136,136,4,8,8,6, + 1,0,128,128,128,128,128,128,128,240,7,8,8,9,1,0, + 130,198,198,170,170,146,146,146,6,8,8,8,1,0,196,196, + 164,164,148,148,140,140,6,8,8,8,1,0,120,132,132,132, + 132,132,132,120,5,8,8,7,1,0,240,136,136,240,128,128, + 128,128,7,9,9,8,1,255,120,132,132,132,132,148,140,124, + 2,5,8,8,7,1,0,240,136,136,240,136,136,136,136,5, + 8,8,7,1,0,112,136,128,112,8,136,136,112,5,8,8, + 5,0,0,248,32,32,32,32,32,32,32,6,8,8,8,1, + 0,132,132,132,132,132,132,132,120,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,9,0,0,136,128,136, + 128,73,0,73,0,85,0,34,0,34,0,34,0,5,8,8, + 7,1,0,136,136,80,32,80,80,136,136,7,8,8,7,0, + 0,130,68,68,40,40,16,16,16,5,8,8,7,1,0,248, + 8,16,32,32,64,128,248,2,10,10,3,1,254,192,128,128, + 128,128,128,128,128,128,192,3,8,8,3,0,0,128,128,64, + 64,64,64,32,32,2,10,10,3,0,254,192,64,64,64,64, + 64,64,64,64,192,5,5,5,6,0,3,32,32,80,80,136, + 6,1,1,6,0,254,252,2,2,2,3,0,7,128,64,5, + 6,6,5,0,0,224,16,112,144,144,104,5,8,8,6,0, + 0,128,128,176,200,136,136,200,176,4,6,6,5,0,0,96, + 144,128,128,144,96,5,8,8,6,0,0,8,8,104,152,136, + 136,152,104,4,6,6,5,0,0,96,144,240,128,144,96,4, + 8,8,4,0,0,48,64,224,64,64,64,64,64,5,8,8, + 6,0,254,104,152,136,136,152,104,8,112,5,8,8,6,0, + 0,128,128,176,200,136,136,136,136,1,8,8,2,0,0,128, + 0,128,128,128,128,128,128,2,10,10,2,255,254,64,0,64, + 64,64,64,64,64,64,128,4,8,8,5,0,0,128,128,144, + 160,192,160,144,144,1,8,8,2,0,0,128,128,128,128,128, + 128,128,128,7,6,6,8,0,0,236,146,146,146,146,146,5, + 6,6,6,0,0,176,200,136,136,136,136,5,6,6,6,0, + 0,112,136,136,136,136,112,5,8,8,6,0,254,176,200,136, + 136,200,176,128,128,5,8,8,6,0,254,104,152,136,136,152, + 104,8,8,3,6,6,4,0,0,160,192,128,128,128,128,4, + 6,6,5,0,0,96,144,96,16,144,96,3,8,8,4,0, + 0,64,64,224,64,64,64,64,96,4,6,6,5,0,0,144, + 144,144,144,144,112,5,6,6,6,0,0,136,136,80,80,32, + 32,7,6,6,8,0,0,146,146,84,84,40,40,5,6,6, + 6,0,0,136,80,32,80,136,136,5,8,8,5,255,254,72, + 72,80,80,48,32,32,192,4,6,6,5,0,0,240,16,32, + 64,128,240,3,10,10,3,0,254,32,64,64,64,128,64,64, + 64,64,32,1,10,10,3,1,254,128,128,128,128,128,128,128, + 128,128,128,3,10,10,3,0,254,128,64,64,64,32,64,64, + 64,64,128,6,2,2,7,0,3,100,152,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=13 h=14 x= 2 y= 9 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=22 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR10[3527] U8G_SECTION(".progmem.u8g_font_helvR10") = { + 0,17,22,254,251,11,2,10,4,133,32,255,253,14,253,11, + 253,0,0,0,4,0,1,1,11,11,4,2,0,128,128,128, + 128,128,128,128,128,0,128,128,3,3,3,5,1,8,160,160, + 160,7,10,10,8,0,0,20,20,20,126,40,40,252,80,80, + 80,7,14,14,8,0,254,16,124,146,146,144,80,56,20,18, + 146,146,124,16,16,11,11,22,12,0,0,112,128,137,0,137, + 0,114,0,2,0,4,0,8,0,9,192,18,32,18,32,33, + 192,8,10,10,10,1,0,48,72,72,48,32,82,138,132,138, + 113,1,3,3,3,1,8,128,128,128,3,14,14,5,1,253, + 32,64,64,128,128,128,128,128,128,128,128,64,64,32,3,14, + 14,5,1,253,128,64,64,32,32,32,32,32,32,32,32,64, + 64,128,5,5,5,7,1,6,32,168,112,168,32,7,7,7, + 9,1,1,16,16,16,254,16,16,16,2,4,4,3,0,254, + 64,64,64,128,3,1,1,4,0,4,224,1,2,2,3,1, + 0,128,128,4,11,11,4,0,0,16,16,32,32,32,64,64, + 64,128,128,128,6,11,11,8,1,0,120,132,132,132,132,132, + 132,132,132,132,120,3,11,11,8,2,0,32,224,32,32,32, + 32,32,32,32,32,32,6,11,11,8,1,0,120,132,132,4, + 8,16,32,64,128,128,252,6,11,11,8,1,0,120,132,132, + 4,4,56,4,4,132,132,120,7,11,11,8,1,0,4,12, + 20,36,68,132,132,254,4,4,4,6,11,11,8,1,0,252, + 128,128,128,248,4,4,4,132,132,120,6,11,11,8,1,0, + 120,132,128,128,184,196,132,132,132,132,120,6,11,11,8,1, + 0,252,4,8,8,16,16,32,32,64,64,64,6,11,11,8, + 1,0,120,132,132,132,132,120,132,132,132,132,120,6,11,11, + 8,1,0,120,132,132,132,132,124,4,4,132,132,120,1,8, + 8,3,1,0,128,128,0,0,0,0,128,128,2,10,10,4, + 0,254,64,64,0,0,0,0,64,64,64,128,6,5,5,8, + 1,2,12,48,192,48,12,6,3,3,9,1,3,252,0,252, + 6,5,5,8,1,2,192,48,12,48,192,6,11,11,8,1, + 0,48,204,132,132,4,8,16,32,0,32,32,11,12,24,13, + 1,255,15,0,48,192,64,32,70,160,137,32,145,32,145,32, + 147,64,141,128,64,0,96,128,31,0,9,11,22,9,0,0, + 8,0,28,0,20,0,20,0,34,0,34,0,65,0,127,0, + 65,0,128,128,128,128,7,11,11,9,1,0,252,134,130,130, + 132,248,132,130,130,134,252,8,11,11,10,1,0,28,99,65, + 128,128,128,128,128,65,99,28,8,11,11,10,1,0,248,134, + 130,129,129,129,129,129,130,134,248,7,11,11,9,1,0,254, + 128,128,128,128,252,128,128,128,128,254,7,11,11,8,1,0, + 254,128,128,128,128,252,128,128,128,128,128,9,11,22,11,1, + 0,30,0,97,128,64,128,128,0,128,0,135,128,128,128,128, + 128,64,128,99,128,28,128,8,11,11,10,1,0,129,129,129, + 129,129,255,129,129,129,129,129,1,11,11,4,2,0,128,128, + 128,128,128,128,128,128,128,128,128,6,11,11,7,0,0,4, + 4,4,4,4,4,4,4,132,132,120,8,11,11,9,1,0, + 130,132,136,144,160,224,144,136,132,130,129,6,11,11,8,2, + 0,128,128,128,128,128,128,128,128,128,128,252,11,11,22,12, + 0,0,128,32,192,96,192,96,160,160,160,160,145,32,145,32, + 138,32,138,32,132,32,132,32,8,11,11,10,1,0,193,161, + 161,145,145,137,137,133,133,131,131,9,11,22,11,1,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,11,11,9,1,0,252,134,130,130,134, + 252,128,128,128,128,128,9,11,22,11,1,0,28,0,99,0, + 65,0,128,128,128,128,128,128,136,128,132,128,67,0,99,0, + 28,128,8,11,11,10,1,0,254,131,129,129,130,252,130,129, + 129,129,129,7,11,11,9,1,0,56,198,130,128,96,24,6, + 2,130,198,56,9,11,22,9,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,11,11,10,1,0,129,129,129,129,129,129,129,129,129,66, + 60,9,11,22,9,0,0,128,128,128,128,65,0,65,0,99, + 0,34,0,34,0,20,0,20,0,8,0,8,0,13,11,22, + 13,0,0,130,8,130,8,133,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,9,11,22,9,0,0,128, + 128,65,0,34,0,20,0,8,0,8,0,20,0,34,0,65, + 0,65,0,128,128,9,11,22,9,0,0,128,128,193,128,65, + 0,34,0,34,0,20,0,28,0,8,0,8,0,8,0,8, + 0,7,11,11,9,1,0,254,2,4,8,24,16,32,96,64, + 128,254,3,14,14,4,1,253,224,128,128,128,128,128,128,128, + 128,128,128,128,128,224,4,11,11,4,0,0,128,128,64,64, + 64,32,32,32,16,16,16,3,14,14,4,0,253,224,32,32, + 32,32,32,32,32,32,32,32,32,32,224,5,5,5,7,1, + 6,32,80,80,136,136,8,1,1,8,0,253,255,2,2,2, + 5,1,9,128,64,7,8,8,8,1,0,120,204,4,124,196, + 132,204,118,6,11,11,7,1,0,128,128,128,184,204,132,132, + 132,132,204,184,6,8,8,7,1,0,120,204,128,128,128,132, + 204,120,6,11,11,8,1,0,4,4,4,116,204,132,132,132, + 132,204,116,6,8,8,8,1,0,120,204,132,252,128,128,204, + 120,4,11,11,4,0,0,48,64,64,224,64,64,64,64,64, + 64,64,6,11,11,8,1,253,116,204,132,132,132,132,204,116, + 4,204,120,6,11,11,8,1,0,128,128,128,184,204,132,132, + 132,132,132,132,1,11,11,3,1,0,128,128,0,128,128,128, + 128,128,128,128,128,3,14,14,3,255,253,32,32,0,32,32, + 32,32,32,32,32,32,32,32,192,6,11,11,7,1,0,128, + 128,128,136,144,160,192,160,144,136,132,1,11,11,3,1,0, + 128,128,128,128,128,128,128,128,128,128,128,9,8,16,11,1, + 0,179,0,204,128,136,128,136,128,136,128,136,128,136,128,136, + 128,6,8,8,8,1,0,184,204,132,132,132,132,132,132,6, + 8,8,8,1,0,120,204,132,132,132,132,204,120,6,11,11, + 8,1,253,184,204,132,132,132,132,204,184,128,128,128,6,11, + 11,8,1,253,116,204,132,132,132,132,204,116,4,4,4,4, + 8,8,5,1,0,176,192,128,128,128,128,128,128,5,8,8, + 7,1,0,112,136,192,112,24,8,136,112,4,10,10,4,0, + 0,64,64,224,64,64,64,64,64,64,48,6,8,8,7,1, + 0,132,132,132,132,132,132,204,116,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,10,0,0,136,128,136, + 128,136,128,73,0,73,0,85,0,34,0,34,0,7,8,8, + 7,0,0,198,68,40,16,16,40,68,198,7,11,11,7,0, + 253,130,194,68,68,36,40,24,16,16,48,96,6,8,8,7, + 0,0,252,4,8,16,32,64,128,252,5,14,14,5,0,253, + 24,32,32,32,32,64,128,64,32,32,32,32,32,24,1,14, + 14,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,5,14,14,5,0,253,192,32,32,32,32,16,8,16, + 32,32,32,32,32,192,6,3,3,8,1,3,100,180,152,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,4,0,1,1,11,11,4,1,253,128,128,0,128, + 128,128,128,128,128,128,128,6,10,10,8,1,255,4,120,204, + 144,144,160,164,204,120,128,7,11,11,8,0,0,56,68,64, + 64,248,32,32,32,64,98,220,6,6,6,8,1,2,132,120, + 72,72,120,132,7,11,11,7,0,0,130,130,130,68,68,40, + 254,16,254,16,16,1,14,14,3,1,253,128,128,128,128,128, + 128,0,0,128,128,128,128,128,128,5,14,14,8,2,253,112, + 216,136,192,112,152,136,136,200,112,24,136,216,112,5,1,1, + 5,0,9,216,10,11,22,12,1,0,30,0,97,128,92,128, + 162,192,162,64,160,64,162,64,156,64,64,128,97,128,30,0, + 4,7,7,6,1,4,224,16,112,144,208,0,240,6,5,5, + 8,1,2,36,72,144,72,36,7,4,4,9,1,2,254,2, + 2,2,3,1,1,4,0,4,224,10,11,22,12,1,0,30, + 0,97,128,92,128,146,64,146,64,156,64,146,64,146,64,64, + 128,97,128,30,0,4,1,1,4,0,9,240,4,4,4,6, + 1,7,96,144,144,96,7,9,9,9,1,0,16,16,16,254, + 16,16,16,0,254,4,6,6,5,0,5,96,144,16,32,64, + 240,4,6,6,5,0,5,96,144,32,16,144,96,2,2,2, + 5,2,9,64,128,6,11,11,8,1,253,132,132,132,132,132, + 132,204,180,128,128,128,7,14,14,8,0,253,62,116,244,244, + 244,116,52,20,20,20,20,20,20,20,2,1,1,4,1,4, + 192,4,3,3,5,0,253,32,144,96,2,6,6,5,1,5, + 64,192,64,64,64,64,4,7,7,6,1,4,96,144,144,144, + 96,0,240,6,5,5,8,1,2,144,72,36,72,144,10,11, + 22,12,1,0,66,0,194,0,68,0,68,0,72,0,72,128, + 9,128,18,128,20,128,39,192,32,128,9,11,22,12,1,0, + 66,0,194,0,68,0,68,0,72,0,75,0,20,128,16,128, + 17,0,34,0,39,128,11,11,22,12,0,0,97,0,145,0, + 34,0,18,0,148,0,100,64,4,192,9,64,10,64,19,224, + 16,64,6,11,11,8,1,253,16,16,0,16,32,64,128,132, + 132,204,48,9,14,28,9,0,0,16,0,8,0,0,0,8, + 0,28,0,20,0,20,0,34,0,34,0,65,0,127,0,65, + 0,128,128,128,128,9,14,28,9,0,0,4,0,8,0,0, + 0,8,0,28,0,20,0,20,0,34,0,34,0,65,0,127, + 0,65,0,128,128,128,128,9,14,28,9,0,0,12,0,18, + 0,0,0,8,0,28,0,20,0,20,0,34,0,34,0,65, + 0,127,0,65,0,128,128,128,128,9,14,28,9,0,0,26, + 0,44,0,0,0,8,0,28,0,20,0,20,0,34,0,34, + 0,65,0,127,0,65,0,128,128,128,128,9,13,26,9,0, + 0,54,0,0,0,8,0,28,0,20,0,20,0,34,0,34, + 0,65,0,127,0,65,0,128,128,128,128,9,14,28,9,0, + 0,12,0,18,0,18,0,12,0,12,0,20,0,20,0,34, + 0,34,0,65,0,127,0,65,0,128,128,128,128,12,11,22, + 14,1,0,31,240,18,0,18,0,34,0,34,0,35,240,126, + 0,66,0,66,0,130,0,131,240,8,14,14,10,1,253,28, + 99,65,128,128,128,128,128,65,99,28,8,36,24,7,14,14, + 9,1,0,32,16,0,254,128,128,128,128,252,128,128,128,128, + 254,7,14,14,9,1,0,8,16,0,254,128,128,128,128,252, + 128,128,128,128,254,7,14,14,9,1,0,24,36,0,254,128, + 128,128,128,252,128,128,128,128,254,7,13,13,9,1,0,108, + 0,254,128,128,128,128,252,128,128,128,128,254,2,14,14,4, + 1,0,128,64,0,64,64,64,64,64,64,64,64,64,64,64, + 2,14,14,4,2,0,64,128,0,128,128,128,128,128,128,128, + 128,128,128,128,4,14,14,4,1,0,96,144,0,64,64,64, + 64,64,64,64,64,64,64,64,5,13,13,4,0,0,216,0, + 32,32,32,32,32,32,32,32,32,32,32,9,11,22,10,0, + 0,124,0,67,0,65,0,64,128,64,128,240,128,64,128,64, + 128,65,0,67,0,124,0,8,14,14,10,1,0,26,44,0, + 193,161,161,145,145,137,137,133,133,131,131,9,14,28,11,1, + 0,16,0,8,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,14,28, + 11,1,0,4,0,8,0,0,0,28,0,99,0,65,0,128, + 128,128,128,128,128,128,128,128,128,65,0,99,0,28,0,9, + 14,28,11,1,0,12,0,18,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,14,28,11,1,0,26,0,44,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,9,13,26,11,1,0,51,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,7,7,7,9,1,1,130,68,40,16,40,68,130, + 11,11,22,11,0,0,14,32,49,192,32,128,65,64,66,64, + 68,64,72,64,80,64,32,128,113,128,142,0,8,14,14,10, + 1,0,16,8,0,129,129,129,129,129,129,129,129,129,66,60, + 8,14,14,10,1,0,4,8,0,129,129,129,129,129,129,129, + 129,129,66,60,8,14,14,10,1,0,24,36,0,129,129,129, + 129,129,129,129,129,129,66,60,8,13,13,10,1,0,102,0, + 129,129,129,129,129,129,129,129,129,66,60,9,14,28,9,0, + 0,4,0,8,0,0,0,128,128,193,128,65,0,34,0,34, + 0,20,0,28,0,8,0,8,0,8,0,8,0,7,11,11, + 9,1,0,128,128,252,134,130,130,134,252,128,128,128,5,11, + 11,7,1,0,112,136,136,136,176,144,136,136,136,136,176,7, + 11,11,8,1,0,32,16,0,120,204,4,124,196,132,204,118, + 7,11,11,8,1,0,16,32,0,120,204,4,124,196,132,204, + 118,7,11,11,8,1,0,48,72,0,120,204,4,124,196,132, + 204,118,7,11,11,8,1,0,52,88,0,120,204,4,124,196, + 132,204,118,7,11,11,8,1,0,72,72,0,120,204,4,124, + 196,132,204,118,7,12,12,8,1,0,48,72,48,0,120,204, + 4,124,196,132,204,118,11,8,16,13,1,0,123,192,198,96, + 4,32,127,224,196,0,132,0,206,96,123,192,6,11,11,8, + 1,253,120,204,128,128,128,132,204,120,16,72,48,6,11,11, + 8,1,0,32,16,0,120,204,132,252,128,128,204,120,6,11, + 11,8,1,0,16,32,0,120,204,132,252,128,128,204,120,6, + 11,11,8,1,0,48,72,0,120,204,132,252,128,128,204,120, + 6,11,11,8,1,0,72,72,0,120,204,132,252,128,128,204, + 120,2,11,11,3,1,0,128,64,0,128,128,128,128,128,128, + 128,128,2,11,11,3,1,0,64,128,0,128,128,128,128,128, + 128,128,128,4,11,11,3,0,0,96,144,0,64,64,64,64, + 64,64,64,64,3,11,11,3,0,0,160,160,0,64,64,64, + 64,64,64,64,64,6,11,11,8,1,0,216,112,144,120,204, + 132,132,132,132,204,120,6,11,11,8,1,0,104,176,0,184, + 204,132,132,132,132,132,132,6,11,11,8,1,0,32,16,0, + 120,204,132,132,132,132,204,120,6,11,11,8,1,0,16,32, + 0,120,204,132,132,132,132,204,120,6,11,11,8,1,0,48, + 72,0,120,204,132,132,132,132,204,120,6,11,11,8,1,0, + 104,176,0,120,204,132,132,132,132,204,120,6,11,11,8,1, + 0,72,72,0,120,204,132,132,132,132,204,120,7,7,7,9, + 1,1,16,16,0,254,0,16,16,8,8,8,8,0,0,61, + 98,70,74,82,98,70,188,6,11,11,8,1,0,32,16,0, + 132,132,132,132,132,132,204,116,6,11,11,8,1,0,16,32, + 0,132,132,132,132,132,132,204,116,6,11,11,8,1,0,48, + 72,0,132,132,132,132,132,132,204,116,6,11,11,8,1,0, + 72,72,0,132,132,132,132,132,132,204,116,7,14,14,7,0, + 253,8,16,0,130,194,68,68,36,40,24,16,16,48,96,6, + 14,14,8,1,253,128,128,128,184,204,132,132,132,132,204,184, + 128,128,128,7,14,14,7,0,253,36,36,0,130,194,68,68, + 36,40,24,16,16,48,96}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=13 h=14 x= 2 y= 9 dx=13 dy= 0 ascent=12 len=24 + Font Bounding box w=17 h=22 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR10r[1648] U8G_SECTION(".progmem.u8g_font_helvR10r") = { + 0,17,22,254,251,11,2,10,4,133,32,127,253,12,253,11, + 253,0,0,0,4,0,1,1,11,11,4,2,0,128,128,128, + 128,128,128,128,128,0,128,128,3,3,3,5,1,8,160,160, + 160,7,10,10,8,0,0,20,20,20,126,40,40,252,80,80, + 80,7,14,14,8,0,254,16,124,146,146,144,80,56,20,18, + 146,146,124,16,16,11,11,22,12,0,0,112,128,137,0,137, + 0,114,0,2,0,4,0,8,0,9,192,18,32,18,32,33, + 192,8,10,10,10,1,0,48,72,72,48,32,82,138,132,138, + 113,1,3,3,3,1,8,128,128,128,3,14,14,5,1,253, + 32,64,64,128,128,128,128,128,128,128,128,64,64,32,3,14, + 14,5,1,253,128,64,64,32,32,32,32,32,32,32,32,64, + 64,128,5,5,5,7,1,6,32,168,112,168,32,7,7,7, + 9,1,1,16,16,16,254,16,16,16,2,4,4,3,0,254, + 64,64,64,128,3,1,1,4,0,4,224,1,2,2,3,1, + 0,128,128,4,11,11,4,0,0,16,16,32,32,32,64,64, + 64,128,128,128,6,11,11,8,1,0,120,132,132,132,132,132, + 132,132,132,132,120,3,11,11,8,2,0,32,224,32,32,32, + 32,32,32,32,32,32,6,11,11,8,1,0,120,132,132,4, + 8,16,32,64,128,128,252,6,11,11,8,1,0,120,132,132, + 4,4,56,4,4,132,132,120,7,11,11,8,1,0,4,12, + 20,36,68,132,132,254,4,4,4,6,11,11,8,1,0,252, + 128,128,128,248,4,4,4,132,132,120,6,11,11,8,1,0, + 120,132,128,128,184,196,132,132,132,132,120,6,11,11,8,1, + 0,252,4,8,8,16,16,32,32,64,64,64,6,11,11,8, + 1,0,120,132,132,132,132,120,132,132,132,132,120,6,11,11, + 8,1,0,120,132,132,132,132,124,4,4,132,132,120,1,8, + 8,3,1,0,128,128,0,0,0,0,128,128,2,10,10,4, + 0,254,64,64,0,0,0,0,64,64,64,128,6,5,5,8, + 1,2,12,48,192,48,12,6,3,3,9,1,3,252,0,252, + 6,5,5,8,1,2,192,48,12,48,192,6,11,11,8,1, + 0,48,204,132,132,4,8,16,32,0,32,32,11,12,24,13, + 1,255,15,0,48,192,64,32,70,160,137,32,145,32,145,32, + 147,64,141,128,64,0,96,128,31,0,9,11,22,9,0,0, + 8,0,28,0,20,0,20,0,34,0,34,0,65,0,127,0, + 65,0,128,128,128,128,7,11,11,9,1,0,252,134,130,130, + 132,248,132,130,130,134,252,8,11,11,10,1,0,28,99,65, + 128,128,128,128,128,65,99,28,8,11,11,10,1,0,248,134, + 130,129,129,129,129,129,130,134,248,7,11,11,9,1,0,254, + 128,128,128,128,252,128,128,128,128,254,7,11,11,8,1,0, + 254,128,128,128,128,252,128,128,128,128,128,9,11,22,11,1, + 0,30,0,97,128,64,128,128,0,128,0,135,128,128,128,128, + 128,64,128,99,128,28,128,8,11,11,10,1,0,129,129,129, + 129,129,255,129,129,129,129,129,1,11,11,4,2,0,128,128, + 128,128,128,128,128,128,128,128,128,6,11,11,7,0,0,4, + 4,4,4,4,4,4,4,132,132,120,8,11,11,9,1,0, + 130,132,136,144,160,224,144,136,132,130,129,6,11,11,8,2, + 0,128,128,128,128,128,128,128,128,128,128,252,11,11,22,12, + 0,0,128,32,192,96,192,96,160,160,160,160,145,32,145,32, + 138,32,138,32,132,32,132,32,8,11,11,10,1,0,193,161, + 161,145,145,137,137,133,133,131,131,9,11,22,11,1,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,11,11,9,1,0,252,134,130,130,134, + 252,128,128,128,128,128,9,11,22,11,1,0,28,0,99,0, + 65,0,128,128,128,128,128,128,136,128,132,128,67,0,99,0, + 28,128,8,11,11,10,1,0,254,131,129,129,130,252,130,129, + 129,129,129,7,11,11,9,1,0,56,198,130,128,96,24,6, + 2,130,198,56,9,11,22,9,0,0,255,128,8,0,8,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,11,11,10,1,0,129,129,129,129,129,129,129,129,129,66, + 60,9,11,22,9,0,0,128,128,128,128,65,0,65,0,99, + 0,34,0,34,0,20,0,20,0,8,0,8,0,13,11,22, + 13,0,0,130,8,130,8,133,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,9,11,22,9,0,0,128, + 128,65,0,34,0,20,0,8,0,8,0,20,0,34,0,65, + 0,65,0,128,128,9,11,22,9,0,0,128,128,193,128,65, + 0,34,0,34,0,20,0,28,0,8,0,8,0,8,0,8, + 0,7,11,11,9,1,0,254,2,4,8,24,16,32,96,64, + 128,254,3,14,14,4,1,253,224,128,128,128,128,128,128,128, + 128,128,128,128,128,224,4,11,11,4,0,0,128,128,64,64, + 64,32,32,32,16,16,16,3,14,14,4,0,253,224,32,32, + 32,32,32,32,32,32,32,32,32,32,224,5,5,5,7,1, + 6,32,80,80,136,136,8,1,1,8,0,253,255,2,2,2, + 5,1,9,128,64,7,8,8,8,1,0,120,204,4,124,196, + 132,204,118,6,11,11,7,1,0,128,128,128,184,204,132,132, + 132,132,204,184,6,8,8,7,1,0,120,204,128,128,128,132, + 204,120,6,11,11,8,1,0,4,4,4,116,204,132,132,132, + 132,204,116,6,8,8,8,1,0,120,204,132,252,128,128,204, + 120,4,11,11,4,0,0,48,64,64,224,64,64,64,64,64, + 64,64,6,11,11,8,1,253,116,204,132,132,132,132,204,116, + 4,204,120,6,11,11,8,1,0,128,128,128,184,204,132,132, + 132,132,132,132,1,11,11,3,1,0,128,128,0,128,128,128, + 128,128,128,128,128,3,14,14,3,255,253,32,32,0,32,32, + 32,32,32,32,32,32,32,32,192,6,11,11,7,1,0,128, + 128,128,136,144,160,192,160,144,136,132,1,11,11,3,1,0, + 128,128,128,128,128,128,128,128,128,128,128,9,8,16,11,1, + 0,179,0,204,128,136,128,136,128,136,128,136,128,136,128,136, + 128,6,8,8,8,1,0,184,204,132,132,132,132,132,132,6, + 8,8,8,1,0,120,204,132,132,132,132,204,120,6,11,11, + 8,1,253,184,204,132,132,132,132,204,184,128,128,128,6,11, + 11,8,1,253,116,204,132,132,132,132,204,116,4,4,4,4, + 8,8,5,1,0,176,192,128,128,128,128,128,128,5,8,8, + 7,1,0,112,136,192,112,24,8,136,112,4,10,10,4,0, + 0,64,64,224,64,64,64,64,64,64,48,6,8,8,7,1, + 0,132,132,132,132,132,132,204,116,7,8,8,7,0,0,130, + 130,68,68,68,40,40,16,9,8,16,10,0,0,136,128,136, + 128,136,128,73,0,73,0,85,0,34,0,34,0,7,8,8, + 7,0,0,198,68,40,16,16,40,68,198,7,11,11,7,0, + 253,130,194,68,68,36,40,24,16,16,48,96,6,8,8,7, + 0,0,252,4,8,16,32,64,128,252,5,14,14,5,0,253, + 24,32,32,32,32,64,128,64,32,32,32,32,32,24,1,14, + 14,3,1,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,5,14,14,5,0,253,192,32,32,32,32,16,8,16, + 32,32,32,32,32,192,6,3,3,8,1,3,100,180,152,255 + }; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=14 h=16 x= 3 y=10 dx=17 dy= 0 ascent=16 len=32 + Font Bounding box w=20 h=26 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR12[4077] U8G_SECTION(".progmem.u8g_font_helvR12") = { + 0,20,26,254,250,12,2,91,5,99,32,255,252,16,252,12, + 252,0,0,0,5,0,1,1,12,12,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,128,4,4,4,6,1,8,144, + 144,144,144,8,11,11,9,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,15,15,9,1,254,16,124,146,146,144,80, + 48,24,20,18,146,146,124,16,16,12,12,24,14,0,0,112, + 64,136,128,136,128,137,0,114,0,2,0,4,0,4,224,9, + 16,17,16,17,16,32,224,10,12,24,11,0,0,24,0,36, + 0,66,0,66,0,36,0,24,0,41,0,69,0,130,0,131, + 0,68,128,56,64,2,4,4,3,0,8,192,192,64,64,3, + 16,16,6,1,252,32,64,64,64,128,128,128,128,128,128,128, + 128,64,64,64,32,3,16,16,6,1,252,128,64,64,64,32, + 32,32,32,32,32,32,32,64,64,64,128,5,5,5,6,0, + 7,32,168,112,80,136,9,9,18,10,0,0,8,0,8,0, + 8,0,8,0,255,128,8,0,8,0,8,0,8,0,2,4, + 4,4,1,254,64,64,64,128,4,1,1,5,0,4,240,1, + 2,2,4,2,0,128,128,4,12,12,5,0,0,16,16,32, + 32,32,32,64,64,64,128,128,128,7,12,12,9,1,0,56, + 68,68,130,130,130,130,130,130,68,68,56,3,12,12,9,3, + 0,32,32,96,160,32,32,32,32,32,32,32,32,7,12,12, + 9,1,0,56,68,130,130,2,4,8,48,64,128,128,254,7, + 12,12,9,1,0,56,68,130,130,4,56,4,2,130,130,68, + 56,8,12,12,9,0,0,12,20,20,36,36,68,68,132,255, + 4,4,4,7,12,12,9,1,0,62,32,32,64,120,68,2, + 2,2,130,68,56,7,12,12,9,1,0,60,66,130,128,184, + 196,130,130,130,130,68,56,8,12,12,9,0,0,255,1,2, + 4,4,8,8,16,16,16,32,32,7,12,12,9,1,0,56, + 68,130,130,68,56,68,130,130,130,68,56,7,12,12,9,1, + 0,56,68,130,130,130,130,70,58,2,130,132,120,1,9,9, + 4,2,0,128,128,0,0,0,0,0,128,128,2,11,11,4, + 1,254,64,64,0,0,0,0,0,64,64,64,128,9,9,18, + 10,0,0,1,128,6,0,24,0,96,0,128,0,96,0,24, + 0,6,0,1,128,8,4,4,10,0,2,255,0,0,255,9, + 9,18,10,1,0,192,0,48,0,12,0,3,0,0,128,3, + 0,12,0,48,0,192,0,7,12,12,9,1,0,56,68,130, + 130,2,4,8,16,16,0,16,16,13,14,28,17,1,254,7, + 128,24,96,32,16,67,208,76,72,136,72,144,136,144,136,144, + 144,153,144,78,96,64,0,48,96,15,128,10,12,24,11,0, + 0,12,0,12,0,18,0,18,0,18,0,33,0,33,0,127, + 128,64,128,64,128,128,64,128,64,9,12,24,11,1,0,252, + 0,130,0,129,0,129,0,130,0,254,0,129,0,128,128,128, + 128,128,128,129,0,254,0,10,12,24,12,1,0,15,0,48, + 128,64,64,64,0,128,0,128,0,128,0,128,0,64,0,64, + 64,48,128,15,0,10,12,24,12,1,0,252,0,131,0,128, + 128,128,128,128,64,128,64,128,64,128,64,128,128,128,128,131, + 0,252,0,8,12,12,11,1,0,255,128,128,128,128,255,128, + 128,128,128,128,255,7,12,12,10,1,0,254,128,128,128,128, + 254,128,128,128,128,128,128,10,12,24,13,1,0,14,0,49, + 128,64,64,64,0,128,0,128,0,135,192,128,64,64,64,64, + 192,49,64,14,64,9,12,24,12,1,0,128,128,128,128,128, + 128,128,128,128,128,255,128,128,128,128,128,128,128,128,128,128, + 128,128,128,1,12,12,4,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,6,12,12,8,0,0,4,4,4,4,4, + 4,4,4,132,132,132,120,8,12,12,11,1,0,129,130,132, + 136,144,176,200,136,132,130,130,129,7,12,12,9,1,0,128, + 128,128,128,128,128,128,128,128,128,128,254,11,12,24,13,1, + 0,128,32,192,96,192,96,160,160,160,160,160,160,145,32,145, + 32,145,32,138,32,138,32,132,32,9,12,24,12,1,0,128, + 128,192,128,160,128,160,128,144,128,136,128,136,128,132,128,130, + 128,130,128,129,128,128,128,11,12,24,13,1,0,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,8,12,12,11,2,0,252,130,129,129,130, + 252,128,128,128,128,128,128,11,13,26,13,1,255,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,66, + 64,49,128,14,128,0,64,9,12,24,12,2,0,252,0,130, + 0,129,0,129,0,130,0,252,0,130,0,129,0,129,0,129, + 0,129,0,128,128,9,12,24,11,1,0,62,0,65,0,128, + 128,128,128,64,0,48,0,14,0,1,0,128,128,128,128,65, + 0,62,0,9,12,24,10,0,0,255,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,9,12,24,12,1,0,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,62,0,10, + 12,24,11,0,0,128,64,128,64,64,128,64,128,64,128,33, + 0,33,0,18,0,18,0,18,0,12,0,12,0,13,12,24, + 15,1,0,130,8,130,8,130,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,16,64,8,12,12,11,1, + 0,129,66,66,36,36,24,24,36,36,66,66,129,9,12,24, + 11,1,0,128,128,65,0,65,0,34,0,34,0,20,0,28, + 0,8,0,8,0,8,0,8,0,8,0,9,12,24,10,0, + 0,127,128,1,0,3,0,2,0,4,0,12,0,8,0,16, + 0,48,0,32,0,64,0,255,128,3,15,15,5,1,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,224,4,12, + 12,5,0,0,128,128,64,64,64,64,32,32,32,16,16,16, + 3,15,15,5,0,253,224,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,7,7,7,8,0,5,16,40,40,68,68, + 130,130,9,1,2,9,0,253,255,128,3,3,3,6,0,10, + 128,192,32,8,9,9,9,1,0,124,130,2,6,122,130,130, + 134,123,7,12,12,9,1,0,128,128,128,184,196,130,130,130, + 130,130,196,184,7,9,9,8,1,0,56,68,130,128,128,128, + 130,68,56,7,12,12,9,1,0,2,2,2,58,70,130,130, + 130,130,130,70,58,7,9,9,9,1,0,56,68,130,130,254, + 128,130,68,56,4,12,12,5,1,0,48,64,64,240,64,64, + 64,64,64,64,64,64,7,13,13,9,1,252,58,70,130,130, + 130,130,130,70,58,2,130,132,120,7,12,12,9,1,0,128, + 128,128,188,194,130,130,130,130,130,130,130,1,12,12,3,1, + 0,128,128,0,128,128,128,128,128,128,128,128,128,3,16,16, + 4,255,252,32,32,0,32,32,32,32,32,32,32,32,32,32, + 32,32,192,7,12,12,8,0,0,128,128,128,132,136,144,160, + 224,144,136,132,130,1,12,12,3,1,0,128,128,128,128,128, + 128,128,128,128,128,128,128,11,9,18,14,2,0,185,192,198, + 32,132,32,132,32,132,32,132,32,132,32,132,32,132,32,7, + 9,9,9,1,0,188,194,130,130,130,130,130,130,130,7,9, + 9,9,1,0,56,68,130,130,130,130,130,68,56,7,13,13, + 9,1,252,184,196,130,130,130,130,130,196,184,128,128,128,128, + 7,13,13,9,1,252,58,70,130,130,130,130,130,70,58,2, + 2,2,2,4,9,9,5,1,0,176,192,128,128,128,128,128, + 128,128,6,9,9,8,1,0,120,132,132,192,48,12,132,132, + 120,4,11,11,5,1,0,64,64,240,64,64,64,64,64,64, + 64,48,7,9,9,9,1,0,130,130,130,130,130,130,130,134, + 122,7,9,9,8,0,0,130,130,68,68,68,40,40,56,16, + 11,9,18,12,0,0,132,32,132,32,68,64,78,64,74,64, + 42,128,42,128,17,0,17,0,7,9,9,8,0,0,130,68, + 68,40,16,40,68,68,130,7,12,12,8,0,253,130,130,68, + 68,40,40,56,16,16,32,32,192,6,9,9,8,1,0,252, + 4,8,16,32,32,64,128,252,3,16,16,6,1,252,32,64, + 64,64,64,64,64,128,64,64,64,64,64,64,64,32,1,16, + 16,4,1,252,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,16,16,6,1,252,128,64,64,64,64,64, + 64,32,64,64,64,64,64,64,64,128,8,2,2,10,1,4, + 113,142,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,5,0,1,1,12,12,6,2,253,128, + 128,0,128,128,128,128,128,128,128,128,128,7,13,13,9,1, + 254,4,4,56,76,138,144,144,144,162,100,56,64,64,8,12, + 12,9,0,0,14,17,33,32,32,16,126,8,16,32,121,134, + 8,7,7,9,0,3,189,102,66,66,66,102,189,9,12,24, + 9,0,0,128,128,65,0,65,0,34,0,34,0,20,0,127, + 0,8,0,127,0,8,0,8,0,8,0,1,16,16,4,1, + 252,128,128,128,128,128,128,0,0,0,0,128,128,128,128,128, + 128,7,15,15,9,1,253,56,68,70,96,152,140,134,194,98, + 50,28,4,196,68,56,3,2,2,5,1,10,160,160,12,12, + 24,12,0,0,15,0,48,192,71,32,72,160,144,16,144,16, + 144,16,144,16,72,160,71,32,48,192,15,0,5,7,7,6, + 1,5,96,144,112,144,120,0,248,6,6,6,9,1,2,36, + 72,144,144,72,36,8,5,5,10,0,1,255,1,1,1,1, + 4,1,1,5,0,4,240,12,12,24,12,0,0,15,0,48, + 192,64,32,79,32,136,144,136,144,143,16,138,16,73,32,72, + 160,48,192,15,0,5,1,1,6,0,10,248,5,5,5,7, + 1,7,112,136,136,136,112,9,11,22,10,0,0,8,0,8, + 0,8,0,8,0,255,128,8,0,8,0,8,0,8,0,0, + 0,255,128,5,7,7,6,0,5,112,136,136,16,96,128,248, + 5,7,7,6,0,5,112,136,8,48,8,136,112,3,3,3, + 6,1,10,32,96,128,7,13,13,9,1,252,130,130,130,130, + 130,130,130,134,250,128,128,128,128,7,15,15,9,1,253,62, + 116,244,244,244,244,116,52,20,20,20,20,20,20,20,1,2, + 2,5,2,4,128,128,4,4,4,6,0,252,32,32,144,96, + 3,7,7,6,0,5,32,224,32,32,32,32,32,4,7,7, + 6,1,5,96,144,144,144,96,0,240,6,6,6,9,1,2, + 144,72,36,36,72,144,12,12,24,14,0,0,32,64,224,128, + 32,128,33,0,34,0,34,32,36,96,4,160,9,32,17,240, + 16,32,32,32,12,13,26,14,0,0,0,64,32,128,224,128, + 33,0,34,0,34,0,36,224,37,16,9,16,8,32,16,192, + 33,0,33,240,13,12,24,14,0,0,112,64,136,64,8,128, + 48,128,9,0,137,16,114,48,2,80,4,144,4,248,8,16, + 8,16,7,12,12,10,1,253,16,16,0,16,16,32,64,128, + 130,130,68,56,10,16,32,11,0,0,16,0,24,0,4,0, + 0,0,12,0,12,0,18,0,18,0,18,0,33,0,33,0, + 127,128,64,128,64,128,128,64,128,64,10,16,32,11,0,0, + 2,0,6,0,8,0,0,0,12,0,12,0,18,0,18,0, + 18,0,33,0,33,0,127,128,64,128,64,128,128,64,128,64, + 10,16,32,11,0,0,4,0,14,0,17,0,0,0,12,0, + 12,0,18,0,18,0,18,0,33,0,33,0,127,128,64,128, + 64,128,128,64,128,64,10,15,30,11,0,0,26,0,44,0, + 0,0,12,0,12,0,18,0,18,0,18,0,33,0,33,0, + 127,128,64,128,64,128,128,64,128,64,10,15,30,11,0,0, + 18,0,18,0,0,0,12,0,12,0,18,0,18,0,18,0, + 33,0,33,0,127,128,64,128,64,128,128,64,128,64,10,15, + 30,11,0,0,12,0,18,0,18,0,12,0,12,0,18,0, + 18,0,18,0,33,0,33,0,127,128,64,128,64,128,128,64, + 128,64,14,12,24,16,0,0,7,252,9,0,9,0,17,0, + 17,0,33,252,33,0,127,0,65,0,65,0,129,0,129,252, + 10,16,32,12,1,252,15,0,48,128,64,64,64,0,128,0, + 128,0,128,0,128,0,64,0,64,64,48,128,15,0,4,0, + 4,0,18,0,12,0,8,16,16,11,1,0,32,48,8,0, + 255,128,128,128,128,255,128,128,128,128,128,255,8,16,16,11, + 1,0,4,12,16,0,255,128,128,128,128,255,128,128,128,128, + 128,255,8,16,16,11,1,0,16,56,68,0,255,128,128,128, + 128,255,128,128,128,128,128,255,8,15,15,11,1,0,36,36, + 0,255,128,128,128,128,255,128,128,128,128,128,255,3,16,16, + 4,0,0,128,192,32,0,64,64,64,64,64,64,64,64,64, + 64,64,64,3,16,16,4,0,0,32,96,128,0,64,64,64, + 64,64,64,64,64,64,64,64,64,5,16,16,4,255,0,32, + 112,136,0,32,32,32,32,32,32,32,32,32,32,32,32,3, + 15,15,4,0,0,160,160,0,64,64,64,64,64,64,64,64, + 64,64,64,64,12,12,24,12,0,0,63,0,32,192,32,32, + 32,32,32,16,248,16,32,16,32,16,32,32,32,32,32,192, + 63,0,9,15,30,12,1,0,26,0,44,0,0,0,128,128, + 192,128,160,128,160,128,144,128,136,128,136,128,132,128,130,128, + 130,128,129,128,128,128,11,16,32,13,1,0,8,0,12,0, + 2,0,0,0,14,0,49,128,64,64,64,64,128,32,128,32, + 128,32,128,32,64,64,64,64,49,128,14,0,11,16,32,13, + 1,0,1,0,3,0,4,0,0,0,14,0,49,128,64,64, + 64,64,128,32,128,32,128,32,128,32,64,64,64,64,49,128, + 14,0,11,16,32,13,1,0,4,0,14,0,17,0,0,0, + 14,0,49,128,64,64,64,64,128,32,128,32,128,32,128,32, + 64,64,64,64,49,128,14,0,11,15,30,13,1,0,13,0, + 22,0,0,0,14,0,49,128,64,64,64,64,128,32,128,32, + 128,32,128,32,64,64,64,64,49,128,14,0,11,15,30,13, + 1,0,17,0,17,0,0,0,14,0,49,128,64,64,64,64, + 128,32,128,32,128,32,128,32,64,64,64,64,49,128,14,0, + 8,8,8,10,1,0,129,66,36,24,24,36,66,129,11,14, + 28,13,1,255,0,64,14,128,49,128,65,64,66,64,130,32, + 132,32,132,32,136,32,72,64,80,64,49,128,46,0,64,0, + 9,16,32,12,1,0,32,0,48,0,8,0,0,0,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,9,16,32,12,1,0,2,0,6,0, + 8,0,0,0,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,65,0,62,0,9,16,32,12, + 1,0,8,0,28,0,34,0,0,0,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,65,0, + 62,0,9,15,30,12,1,0,34,0,34,0,0,0,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,65,0,62,0,9,16,32,11,1,0,2,0,6,0, + 8,0,0,0,128,128,65,0,65,0,34,0,34,0,20,0, + 28,0,8,0,8,0,8,0,8,0,8,0,8,12,12,11, + 2,0,128,128,252,130,129,129,130,252,128,128,128,128,7,12, + 12,10,2,0,120,132,130,130,132,188,134,130,130,130,132,184, + 8,13,13,9,1,0,32,48,8,0,124,130,2,6,122,130, + 130,134,123,8,13,13,9,1,0,4,12,16,0,124,130,2, + 6,122,130,130,134,123,8,13,13,9,1,0,16,56,68,0, + 124,130,2,6,122,130,130,134,123,8,12,12,9,1,0,52, + 88,0,124,130,2,6,122,130,130,134,123,8,12,12,9,1, + 0,40,40,0,124,130,2,6,122,130,130,134,123,8,13,13, + 9,1,0,16,40,16,0,124,130,2,6,122,130,130,134,123, + 13,9,18,15,1,0,124,224,131,16,2,8,6,8,123,248, + 130,0,130,8,135,16,120,224,7,13,13,8,1,252,56,68, + 130,128,128,128,130,68,56,16,16,72,48,7,13,13,9,1, + 0,64,96,16,0,56,68,130,130,254,128,130,68,56,7,13, + 13,9,1,0,8,24,32,0,56,68,130,130,254,128,130,68, + 56,7,13,13,9,1,0,16,56,68,0,56,68,130,130,254, + 128,130,68,56,7,12,12,9,1,0,40,40,0,56,68,130, + 130,254,128,130,68,56,3,13,13,4,1,0,128,192,32,0, + 64,64,64,64,64,64,64,64,64,3,13,13,4,1,0,32, + 96,128,0,64,64,64,64,64,64,64,64,64,5,13,13,4, + 0,0,32,112,136,0,32,32,32,32,32,32,32,32,32,3, + 12,12,4,1,0,160,160,0,64,64,64,64,64,64,64,64, + 64,7,12,12,9,1,0,72,48,88,60,68,130,130,130,130, + 130,68,56,7,12,12,9,1,0,52,88,0,188,194,130,130, + 130,130,130,130,130,7,13,13,9,1,0,32,48,8,0,56, + 68,130,130,130,130,130,68,56,7,13,13,9,1,0,8,24, + 32,0,56,68,130,130,130,130,130,68,56,7,13,13,9,1, + 0,16,56,68,0,56,68,130,130,130,130,130,68,56,7,12, + 12,9,1,0,52,88,0,56,68,130,130,130,130,130,68,56, + 7,12,12,9,1,0,40,40,0,56,68,130,130,130,130,130, + 68,56,7,9,9,10,1,0,16,16,0,0,254,0,0,16, + 16,7,10,10,10,1,0,2,60,68,138,146,146,162,162,68, + 184,7,13,13,9,1,0,32,48,8,0,130,130,130,130,130, + 130,130,134,122,7,13,13,9,1,0,4,12,16,0,130,130, + 130,130,130,130,130,134,122,7,13,13,9,1,0,16,56,68, + 0,130,130,130,130,130,130,130,134,122,7,12,12,9,1,0, + 40,40,0,130,130,130,130,130,130,130,134,122,7,16,16,8, + 0,253,8,24,32,0,130,130,68,68,40,40,56,16,16,32, + 32,192,7,16,16,9,1,252,128,128,128,184,196,130,130,130, + 130,130,196,184,128,128,128,128,7,15,15,8,0,253,40,40, + 0,130,130,68,68,40,40,56,16,16,32,32,192}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=13 h=16 x= 3 y=10 dx=17 dy= 0 ascent=13 len=28 + Font Bounding box w=20 h=26 x=-2 y=-6 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =12 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR12r[1907] U8G_SECTION(".progmem.u8g_font_helvR12r") = { + 0,20,26,254,250,12,2,91,5,99,32,127,252,13,252,12, + 252,0,0,0,5,0,1,1,12,12,5,2,0,128,128,128, + 128,128,128,128,128,128,0,128,128,4,4,4,6,1,8,144, + 144,144,144,8,11,11,9,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,15,15,9,1,254,16,124,146,146,144,80, + 48,24,20,18,146,146,124,16,16,12,12,24,14,0,0,112, + 64,136,128,136,128,137,0,114,0,2,0,4,0,4,224,9, + 16,17,16,17,16,32,224,10,12,24,11,0,0,24,0,36, + 0,66,0,66,0,36,0,24,0,41,0,69,0,130,0,131, + 0,68,128,56,64,2,4,4,3,0,8,192,192,64,64,3, + 16,16,6,1,252,32,64,64,64,128,128,128,128,128,128,128, + 128,64,64,64,32,3,16,16,6,1,252,128,64,64,64,32, + 32,32,32,32,32,32,32,64,64,64,128,5,5,5,6,0, + 7,32,168,112,80,136,9,9,18,10,0,0,8,0,8,0, + 8,0,8,0,255,128,8,0,8,0,8,0,8,0,2,4, + 4,4,1,254,64,64,64,128,4,1,1,5,0,4,240,1, + 2,2,4,2,0,128,128,4,12,12,5,0,0,16,16,32, + 32,32,32,64,64,64,128,128,128,7,12,12,9,1,0,56, + 68,68,130,130,130,130,130,130,68,68,56,3,12,12,9,3, + 0,32,32,96,160,32,32,32,32,32,32,32,32,7,12,12, + 9,1,0,56,68,130,130,2,4,8,48,64,128,128,254,7, + 12,12,9,1,0,56,68,130,130,4,56,4,2,130,130,68, + 56,8,12,12,9,0,0,12,20,20,36,36,68,68,132,255, + 4,4,4,7,12,12,9,1,0,62,32,32,64,120,68,2, + 2,2,130,68,56,7,12,12,9,1,0,60,66,130,128,184, + 196,130,130,130,130,68,56,8,12,12,9,0,0,255,1,2, + 4,4,8,8,16,16,16,32,32,7,12,12,9,1,0,56, + 68,130,130,68,56,68,130,130,130,68,56,7,12,12,9,1, + 0,56,68,130,130,130,130,70,58,2,130,132,120,1,9,9, + 4,2,0,128,128,0,0,0,0,0,128,128,2,11,11,4, + 1,254,64,64,0,0,0,0,0,64,64,64,128,9,9,18, + 10,0,0,1,128,6,0,24,0,96,0,128,0,96,0,24, + 0,6,0,1,128,8,4,4,10,0,2,255,0,0,255,9, + 9,18,10,1,0,192,0,48,0,12,0,3,0,0,128,3, + 0,12,0,48,0,192,0,7,12,12,9,1,0,56,68,130, + 130,2,4,8,16,16,0,16,16,13,14,28,17,1,254,7, + 128,24,96,32,16,67,208,76,72,136,72,144,136,144,136,144, + 144,153,144,78,96,64,0,48,96,15,128,10,12,24,11,0, + 0,12,0,12,0,18,0,18,0,18,0,33,0,33,0,127, + 128,64,128,64,128,128,64,128,64,9,12,24,11,1,0,252, + 0,130,0,129,0,129,0,130,0,254,0,129,0,128,128,128, + 128,128,128,129,0,254,0,10,12,24,12,1,0,15,0,48, + 128,64,64,64,0,128,0,128,0,128,0,128,0,64,0,64, + 64,48,128,15,0,10,12,24,12,1,0,252,0,131,0,128, + 128,128,128,128,64,128,64,128,64,128,64,128,128,128,128,131, + 0,252,0,8,12,12,11,1,0,255,128,128,128,128,255,128, + 128,128,128,128,255,7,12,12,10,1,0,254,128,128,128,128, + 254,128,128,128,128,128,128,10,12,24,13,1,0,14,0,49, + 128,64,64,64,0,128,0,128,0,135,192,128,64,64,64,64, + 192,49,64,14,64,9,12,24,12,1,0,128,128,128,128,128, + 128,128,128,128,128,255,128,128,128,128,128,128,128,128,128,128, + 128,128,128,1,12,12,4,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,6,12,12,8,0,0,4,4,4,4,4, + 4,4,4,132,132,132,120,8,12,12,11,1,0,129,130,132, + 136,144,176,200,136,132,130,130,129,7,12,12,9,1,0,128, + 128,128,128,128,128,128,128,128,128,128,254,11,12,24,13,1, + 0,128,32,192,96,192,96,160,160,160,160,160,160,145,32,145, + 32,145,32,138,32,138,32,132,32,9,12,24,12,1,0,128, + 128,192,128,160,128,160,128,144,128,136,128,136,128,132,128,130, + 128,130,128,129,128,128,128,11,12,24,13,1,0,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,8,12,12,11,2,0,252,130,129,129,130, + 252,128,128,128,128,128,128,11,13,26,13,1,255,14,0,49, + 128,64,64,64,64,128,32,128,32,128,32,128,32,64,64,66, + 64,49,128,14,128,0,64,9,12,24,12,2,0,252,0,130, + 0,129,0,129,0,130,0,252,0,130,0,129,0,129,0,129, + 0,129,0,128,128,9,12,24,11,1,0,62,0,65,0,128, + 128,128,128,64,0,48,0,14,0,1,0,128,128,128,128,65, + 0,62,0,9,12,24,10,0,0,255,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,9,12,24,12,1,0,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,65,0,62,0,10, + 12,24,11,0,0,128,64,128,64,64,128,64,128,64,128,33, + 0,33,0,18,0,18,0,18,0,12,0,12,0,13,12,24, + 15,1,0,130,8,130,8,130,8,69,16,69,16,69,16,40, + 160,40,160,40,160,16,64,16,64,16,64,8,12,12,11,1, + 0,129,66,66,36,36,24,24,36,36,66,66,129,9,12,24, + 11,1,0,128,128,65,0,65,0,34,0,34,0,20,0,28, + 0,8,0,8,0,8,0,8,0,8,0,9,12,24,10,0, + 0,127,128,1,0,3,0,2,0,4,0,12,0,8,0,16, + 0,48,0,32,0,64,0,255,128,3,15,15,5,1,253,224, + 128,128,128,128,128,128,128,128,128,128,128,128,128,224,4,12, + 12,5,0,0,128,128,64,64,64,64,32,32,32,16,16,16, + 3,15,15,5,0,253,224,32,32,32,32,32,32,32,32,32, + 32,32,32,32,224,7,7,7,8,0,5,16,40,40,68,68, + 130,130,9,1,2,9,0,253,255,128,3,3,3,6,0,10, + 128,192,32,8,9,9,9,1,0,124,130,2,6,122,130,130, + 134,123,7,12,12,9,1,0,128,128,128,184,196,130,130,130, + 130,130,196,184,7,9,9,8,1,0,56,68,130,128,128,128, + 130,68,56,7,12,12,9,1,0,2,2,2,58,70,130,130, + 130,130,130,70,58,7,9,9,9,1,0,56,68,130,130,254, + 128,130,68,56,4,12,12,5,1,0,48,64,64,240,64,64, + 64,64,64,64,64,64,7,13,13,9,1,252,58,70,130,130, + 130,130,130,70,58,2,130,132,120,7,12,12,9,1,0,128, + 128,128,188,194,130,130,130,130,130,130,130,1,12,12,3,1, + 0,128,128,0,128,128,128,128,128,128,128,128,128,3,16,16, + 4,255,252,32,32,0,32,32,32,32,32,32,32,32,32,32, + 32,32,192,7,12,12,8,0,0,128,128,128,132,136,144,160, + 224,144,136,132,130,1,12,12,3,1,0,128,128,128,128,128, + 128,128,128,128,128,128,128,11,9,18,14,2,0,185,192,198, + 32,132,32,132,32,132,32,132,32,132,32,132,32,132,32,7, + 9,9,9,1,0,188,194,130,130,130,130,130,130,130,7,9, + 9,9,1,0,56,68,130,130,130,130,130,68,56,7,13,13, + 9,1,252,184,196,130,130,130,130,130,196,184,128,128,128,128, + 7,13,13,9,1,252,58,70,130,130,130,130,130,70,58,2, + 2,2,2,4,9,9,5,1,0,176,192,128,128,128,128,128, + 128,128,6,9,9,8,1,0,120,132,132,192,48,12,132,132, + 120,4,11,11,5,1,0,64,64,240,64,64,64,64,64,64, + 64,48,7,9,9,9,1,0,130,130,130,130,130,130,130,134, + 122,7,9,9,8,0,0,130,130,68,68,68,40,40,56,16, + 11,9,18,12,0,0,132,32,132,32,68,64,78,64,74,64, + 42,128,42,128,17,0,17,0,7,9,9,8,0,0,130,68, + 68,40,16,40,68,68,130,7,12,12,8,0,253,130,130,68, + 68,40,40,56,16,16,32,32,192,6,9,9,8,1,0,252, + 4,8,16,32,32,64,128,252,3,16,16,6,1,252,32,64, + 64,64,64,64,64,128,64,64,64,64,64,64,64,32,1,16, + 16,4,1,252,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,16,16,6,1,252,128,64,64,64,64,64, + 64,32,64,64,64,64,64,64,64,128,8,2,2,10,1,4, + 113,142,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=12 dx=18 dy= 0 ascent=18 len=36 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR14[4920] U8G_SECTION(".progmem.u8g_font_helvR14") = { + 0,22,29,254,249,14,2,149,6,82,32,255,252,18,252,14, + 252,0,0,0,5,0,1,2,14,14,6,2,0,192,192,192, + 192,192,192,192,192,128,128,0,0,192,192,5,5,5,5,0, + 9,216,216,216,216,216,10,13,26,10,0,0,9,0,9,0, + 9,0,127,192,127,192,18,0,18,0,18,0,255,128,255,128, + 36,0,36,0,36,0,9,16,32,10,1,254,8,0,62,0, + 127,0,203,0,200,0,232,0,120,0,62,0,15,0,9,128, + 201,128,235,128,127,0,62,0,8,0,8,0,14,13,26,16, + 1,0,120,96,204,192,204,192,205,128,205,128,123,0,3,0, + 6,120,6,204,12,204,12,204,24,204,24,120,12,13,26,13, + 1,0,60,0,126,0,102,0,102,0,60,0,124,0,238,192, + 198,192,195,192,195,128,231,192,126,224,60,112,1,5,5,3, + 1,9,128,128,128,128,128,4,18,18,6,0,252,16,48,96, + 96,192,192,192,192,192,192,192,192,192,192,96,96,48,16,4, + 18,18,6,1,252,128,192,96,96,48,48,48,48,48,48,48, + 48,48,48,96,96,192,128,5,7,7,7,1,7,32,168,248, + 32,248,168,32,8,10,10,10,1,0,24,24,24,24,255,255, + 24,24,24,24,2,5,5,5,1,253,192,192,64,64,128,5, + 1,1,6,0,5,248,2,2,2,5,1,0,192,192,5,14, + 14,5,0,0,24,24,24,24,48,48,48,96,96,96,192,192, + 192,192,8,13,13,10,1,0,60,126,102,195,195,195,195,195, + 195,195,102,126,60,5,13,13,10,2,0,24,248,248,24,24, + 24,24,24,24,24,24,24,24,8,13,13,10,1,0,60,254, + 195,3,7,14,28,56,112,224,192,255,255,8,13,13,10,1, + 0,62,127,195,195,6,28,30,7,3,195,199,126,60,9,13, + 26,10,0,0,3,0,7,0,15,0,27,0,51,0,51,0, + 99,0,195,0,255,128,255,128,3,0,3,0,3,0,8,13, + 13,10,1,0,254,254,192,192,252,254,199,3,3,195,199,254, + 124,8,13,13,10,1,0,60,127,99,192,192,220,254,195,195, + 195,227,126,60,8,13,13,10,1,0,255,255,3,6,12,12, + 24,24,48,48,96,96,96,8,13,13,10,1,0,60,126,231, + 195,195,102,126,231,195,195,231,126,60,8,13,13,10,1,0, + 60,126,199,195,195,195,127,59,3,3,198,254,124,2,10,10, + 5,1,0,192,192,0,0,0,0,0,0,192,192,2,13,13, + 5,1,253,192,192,0,0,0,0,0,0,192,192,64,64,128, + 8,9,9,10,1,0,3,15,60,112,192,112,60,15,3,7, + 5,5,11,2,2,254,254,0,254,254,8,9,9,10,1,0, + 192,240,60,14,3,14,60,240,192,7,14,14,10,1,0,124, + 254,198,198,14,28,56,48,48,48,0,0,48,48,16,17,34, + 18,1,253,3,240,15,252,28,14,48,6,99,211,103,115,198, + 51,204,99,204,102,204,102,204,204,207,248,103,112,112,0,56, + 0,31,240,7,224,12,14,28,13,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,11,14,28,13,1,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,128,255,192,192,224,192, + 96,192,96,192,224,255,192,255,128,12,14,28,14,1,0,15, + 128,63,224,112,112,96,48,224,0,192,0,192,0,192,0,192, + 0,224,0,96,48,112,112,63,224,15,128,12,14,28,14,1, + 0,255,128,255,192,192,224,192,96,192,48,192,48,192,48,192, + 48,192,48,192,48,192,96,192,224,255,192,255,128,10,14,28, + 13,2,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,9, + 14,28,12,2,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,13,14,28,15,1,0,15,192,63,240,112,56,96,24,224, + 24,192,0,192,0,192,248,192,248,224,24,96,24,112,56,63, + 248,15,216,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,255,224,255,224,192,96,192,96,192,96,192, + 96,192,96,192,96,2,14,14,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,8,14,14,10,0,0,3, + 3,3,3,3,3,3,3,3,195,195,231,126,60,12,14,28, + 13,2,0,192,224,193,192,195,128,199,0,206,0,220,0,248, + 0,252,0,206,0,199,0,195,128,193,192,192,224,192,112,9, + 14,28,11,1,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,128,255, + 128,14,14,28,16,1,0,192,12,192,12,224,28,224,28,240, + 60,240,60,216,108,216,108,204,204,204,204,196,140,199,140,195, + 12,195,12,11,14,28,14,1,0,192,96,224,96,240,96,240, + 96,216,96,204,96,204,96,198,96,198,96,195,96,193,224,193, + 224,192,224,192,96,13,14,28,15,1,0,15,128,63,224,112, + 112,96,48,224,56,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,10,14,28,13,2,0,255,0,255, + 128,193,192,192,192,192,192,193,192,255,128,255,0,192,0,192, + 0,192,0,192,0,192,0,192,0,13,15,30,15,1,255,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,225,184,97,176,112,240,63,224,15,176,0,48,11,14,28, + 14,1,0,255,128,255,192,192,224,192,96,192,96,192,224,255, + 192,255,128,192,192,192,192,192,96,192,96,192,96,192,96,10, + 14,28,13,1,0,30,0,127,128,225,192,192,192,224,0,124, + 0,31,0,3,128,1,192,0,192,192,192,225,192,127,128,63, + 0,10,14,28,12,1,0,255,192,255,192,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,96, + 192,127,192,31,0,12,14,28,13,0,0,192,48,192,48,96, + 96,96,96,96,96,48,192,48,192,48,192,25,128,25,128,25, + 128,15,0,15,0,6,0,16,14,28,18,1,0,193,131,193, + 131,193,131,195,195,99,198,98,70,102,102,102,102,54,108,54, + 108,52,44,28,56,24,24,24,24,11,14,28,13,1,0,192, + 96,192,96,96,192,113,192,49,128,27,0,14,0,14,0,27, + 0,49,128,113,192,96,192,192,96,192,96,12,14,28,13,0, + 0,192,48,192,48,96,96,96,96,48,192,57,192,25,128,15, + 0,6,0,6,0,6,0,6,0,6,0,6,0,10,14,28, + 12,1,0,255,192,255,192,0,192,1,128,3,0,6,0,12, + 0,28,0,24,0,48,0,96,0,192,0,255,192,255,192,4, + 18,18,5,0,252,240,240,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,240,240,5,14,14,5,0,0,192,192,192, + 96,96,96,48,48,48,48,24,24,24,24,4,18,18,5,0, + 252,240,240,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,240,240,7,6,6,9,1,7,16,56,108,108,198,198,11, + 2,4,11,0,252,255,224,255,224,4,3,3,4,0,11,192, + 96,48,9,10,20,11,1,0,126,0,231,0,195,0,7,0, + 127,0,227,0,195,0,195,0,231,128,121,128,9,14,28,11, + 1,0,192,0,192,0,192,0,192,0,222,0,255,0,227,0, + 193,128,193,128,193,128,193,128,227,0,255,0,222,0,8,10, + 10,10,1,0,62,127,99,192,192,192,192,99,127,62,9,14, + 28,11,1,0,1,128,1,128,1,128,1,128,61,128,127,128, + 99,128,193,128,193,128,193,128,193,128,99,128,127,128,61,128, + 8,10,10,10,1,0,60,126,195,195,255,192,192,227,127,60, + 6,14,14,6,0,0,28,60,48,48,252,252,48,48,48,48, + 48,48,48,48,9,14,28,11,1,252,61,128,127,128,97,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 99,0,127,0,28,0,8,14,14,10,1,0,192,192,192,192, + 222,255,227,195,195,195,195,195,195,195,2,14,14,4,1,0, + 192,192,0,0,192,192,192,192,192,192,192,192,192,192,4,18, + 18,4,255,252,48,48,0,0,48,48,48,48,48,48,48,48, + 48,48,48,48,240,224,8,14,14,9,1,0,192,192,192,192, + 198,204,216,240,248,216,204,206,198,199,2,14,14,4,1,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,14,10, + 20,16,1,0,222,120,255,252,227,140,195,12,195,12,195,12, + 195,12,195,12,195,12,195,12,8,10,10,10,1,0,222,255, + 227,195,195,195,195,195,195,195,9,10,20,11,1,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,252,222,0,255,0,227,0,193,128, + 193,128,193,128,193,128,227,0,255,0,222,0,192,0,192,0, + 192,0,192,0,9,14,28,11,1,252,61,128,127,128,99,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 1,128,1,128,1,128,5,10,10,6,1,0,216,216,224,192, + 192,192,192,192,192,192,7,10,10,9,1,0,60,126,198,192, + 252,62,6,198,252,120,6,13,13,6,0,0,48,48,48,252, + 252,48,48,48,48,48,48,60,28,8,10,10,10,1,0,195, + 195,195,195,195,195,195,199,255,123,8,10,10,10,1,0,195, + 195,195,102,102,102,36,60,24,24,12,10,20,14,1,0,198, + 48,198,48,198,48,102,96,102,96,105,96,41,64,57,192,25, + 128,25,128,8,10,10,10,1,0,195,231,102,60,24,24,60, + 102,231,195,8,14,14,10,1,252,195,195,195,102,102,102,36, + 60,24,24,24,24,112,112,7,10,10,9,1,0,254,254,6, + 12,24,48,96,192,254,254,6,18,18,6,255,252,12,24,48, + 48,48,48,48,96,192,96,48,48,48,48,48,48,24,12,2, + 18,18,5,1,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,6,18,18,6,0,252,192,96,48, + 48,48,48,48,24,12,24,48,48,48,48,48,48,96,192,8, + 3,3,10,1,4,115,255,206,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,5,0,1,2, + 14,14,6,2,252,192,192,0,0,64,64,192,192,192,192,192, + 192,192,192,8,14,14,10,1,254,4,4,62,127,107,200,200, + 200,200,107,127,62,16,16,9,13,26,10,0,0,30,0,63, + 0,97,128,97,128,96,0,48,0,126,0,24,0,24,0,48, + 0,96,128,255,128,223,0,8,7,7,10,1,3,195,255,102, + 102,102,255,195,8,13,13,10,1,0,195,195,102,102,102,60, + 255,24,255,24,24,24,24,2,18,18,5,1,252,192,192,192, + 192,192,192,192,0,0,0,0,192,192,192,192,192,192,192,8, + 18,18,10,1,252,60,126,195,195,240,124,110,199,195,227,115, + 62,14,7,195,195,126,60,5,2,2,6,0,12,216,216,13, + 14,28,15,1,0,15,128,48,96,64,16,71,16,136,136,144, + 136,144,8,144,8,144,8,136,136,71,16,64,16,48,96,15, + 128,5,8,8,7,1,6,112,152,56,72,216,104,0,248,7, + 6,6,9,1,2,54,108,216,216,108,54,9,5,10,11,1, + 3,255,128,255,128,1,128,1,128,1,128,5,1,1,6,0, + 5,248,13,14,28,14,0,0,15,128,48,96,64,16,79,144, + 136,72,136,72,136,72,143,136,137,8,136,136,72,80,64,16, + 48,96,15,128,5,1,1,5,0,12,248,5,5,5,7,1, + 8,112,216,136,216,112,8,11,11,10,1,0,24,24,24,255, + 255,24,24,24,0,255,255,5,8,8,6,0,5,112,248,152, + 24,48,96,248,248,5,8,8,6,0,5,112,248,152,48,48, + 152,248,112,4,3,3,4,0,11,48,96,192,8,14,14,10, + 1,252,195,195,195,195,195,195,195,231,255,219,192,192,192,192, + 8,18,18,10,1,252,63,114,242,242,242,242,242,114,50,18, + 18,18,18,18,18,18,18,18,2,2,2,4,1,4,192,192, + 5,5,5,5,0,252,96,112,24,216,240,4,8,8,6,0, + 5,48,240,240,48,48,48,48,48,5,8,8,7,1,6,112, + 216,136,136,216,112,0,248,7,6,6,9,1,2,216,108,54, + 54,108,216,14,13,26,15,0,0,48,48,240,48,240,96,48, + 192,48,192,49,136,49,24,51,56,6,120,6,216,12,252,24, + 24,24,24,14,13,26,15,0,0,48,48,240,48,240,96,48, + 192,48,192,49,184,49,124,51,76,6,12,6,24,12,48,24, + 124,24,124,14,13,26,15,0,0,112,48,248,48,152,96,48, + 192,48,192,153,136,249,24,115,56,6,120,6,216,12,252,24, + 24,24,24,7,14,14,10,1,252,24,24,0,0,24,24,24, + 56,112,224,198,198,254,124,12,18,36,13,0,0,24,0,12, + 0,6,0,0,0,6,0,6,0,15,0,15,0,25,128,25, + 128,48,192,48,192,63,192,127,224,96,96,96,96,192,48,192, + 48,12,18,36,13,0,0,1,128,3,0,6,0,0,0,6, + 0,6,0,15,0,15,0,25,128,25,128,48,192,48,192,63, + 192,127,224,96,96,96,96,192,48,192,48,12,18,36,13,0, + 0,6,0,15,0,25,128,0,0,6,0,6,0,15,0,15, + 0,25,128,25,128,48,192,48,192,63,192,127,224,96,96,96, + 96,192,48,192,48,12,18,36,13,0,0,12,128,22,128,19, + 0,0,0,6,0,6,0,15,0,15,0,25,128,25,128,48, + 192,48,192,63,192,127,224,96,96,96,96,192,48,192,48,12, + 17,34,13,0,0,25,128,25,128,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,12,17,34,13,0,0,6,0,9, + 0,9,0,6,0,6,0,15,0,15,0,25,128,25,128,48, + 192,48,192,63,192,127,224,96,96,96,96,192,48,192,48,16, + 14,28,18,1,0,7,255,7,255,13,128,13,128,25,128,25, + 128,49,254,49,254,63,128,127,128,97,128,97,128,193,255,193, + 255,12,18,36,14,1,252,15,128,63,224,112,112,96,48,224, + 0,192,0,192,0,192,0,192,0,224,0,96,48,112,112,63, + 224,15,128,6,0,3,0,27,0,30,0,10,18,36,13,2, + 0,48,0,24,0,12,0,0,0,255,192,255,192,192,0,192, + 0,192,0,192,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,192,255,192,10,18,36,13,2,0,3,0,6,0,12, + 0,0,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,10, + 18,36,13,2,0,12,0,30,0,51,0,0,0,255,192,255, + 192,192,0,192,0,192,0,192,0,255,128,255,128,192,0,192, + 0,192,0,192,0,255,192,255,192,10,17,34,13,2,0,51, + 0,51,0,0,0,255,192,255,192,192,0,192,0,192,0,192, + 0,255,128,255,128,192,0,192,0,192,0,192,0,255,192,255, + 192,4,18,18,6,0,0,192,96,48,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,4,18,18,6,2,0,48, + 96,192,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,6,18,18,6,0,0,48,120,132,0,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,6,17,17,6,0,0,204, + 204,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 14,14,28,14,255,0,63,224,63,240,48,56,48,24,48,12, + 48,12,254,12,254,12,48,12,48,12,48,24,48,56,63,240, + 63,224,11,18,36,14,1,0,12,128,22,128,19,0,0,0, + 192,96,224,96,240,96,240,96,216,96,204,96,204,96,198,96, + 198,96,195,96,193,224,193,224,192,224,192,96,13,18,36,15, + 1,0,24,0,12,0,6,0,0,0,15,128,63,224,112,112, + 96,48,224,56,192,24,192,24,192,24,192,24,224,56,96,48, + 112,112,63,224,15,128,13,18,36,15,1,0,1,128,3,0, + 6,0,0,0,15,128,63,224,112,112,96,48,224,56,192,24, + 192,24,192,24,192,24,224,56,96,48,112,112,63,224,15,128, + 13,18,36,15,1,0,3,0,7,128,12,192,0,0,15,128, + 63,224,112,112,96,48,224,56,192,24,192,24,192,24,192,24, + 224,56,96,48,112,112,63,224,15,128,13,18,36,15,1,0, + 6,64,11,64,9,128,0,0,15,128,63,224,112,112,96,48, + 224,56,192,24,192,24,192,24,192,24,224,56,96,48,112,112, + 63,224,15,128,13,17,34,15,1,0,12,192,12,192,0,0, + 15,128,63,224,112,112,96,48,224,56,192,24,192,24,192,24, + 192,24,224,56,96,48,112,112,63,224,15,128,10,9,18,10, + 0,0,192,192,97,128,51,0,30,0,12,0,30,0,51,0, + 97,128,192,192,14,14,28,15,0,0,7,204,31,248,56,48, + 48,120,112,220,97,140,99,12,98,12,102,12,108,28,56,24, + 56,56,111,240,199,192,11,18,36,14,1,0,24,0,12,0, + 6,0,0,0,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,96,192,127,192,31,0, + 11,18,36,14,1,0,3,0,6,0,12,0,0,0,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,96,192,127,192,31,0,11,18,36,14,1,0, + 6,0,15,0,25,128,0,0,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,96,192, + 127,192,31,0,11,17,34,14,1,0,49,128,49,128,0,0, + 192,96,192,96,192,96,192,96,192,96,192,96,192,96,192,96, + 192,96,192,96,192,96,96,192,127,192,31,0,12,18,36,13, + 0,0,1,128,3,0,6,0,0,0,192,48,192,48,96,96, + 96,96,48,192,57,192,25,128,15,0,6,0,6,0,6,0, + 6,0,6,0,6,0,10,14,28,12,1,0,192,0,192,0, + 192,0,255,0,255,128,193,192,192,192,192,192,193,192,255,128, + 255,0,192,0,192,0,192,0,7,14,14,9,1,0,56,124, + 198,198,198,198,220,220,198,198,198,198,222,220,9,14,28,11, + 1,0,48,0,24,0,12,0,0,0,126,0,231,0,195,0, + 7,0,127,0,227,0,195,0,195,0,231,128,121,128,9,14, + 28,11,1,0,12,0,24,0,48,0,0,0,126,0,231,0, + 195,0,7,0,127,0,227,0,195,0,195,0,231,128,121,128, + 9,14,28,11,1,0,24,0,60,0,102,0,0,0,126,0, + 231,0,195,0,7,0,127,0,227,0,195,0,195,0,231,128, + 121,128,9,14,28,11,1,0,50,0,90,0,76,0,0,0, + 126,0,231,0,195,0,7,0,127,0,227,0,195,0,195,0, + 231,128,121,128,9,14,28,11,1,0,102,0,102,0,0,0, + 0,0,126,0,231,0,195,0,7,0,127,0,227,0,195,0, + 195,0,231,128,121,128,9,14,28,11,1,0,24,0,36,0, + 36,0,24,0,126,0,231,0,195,0,7,0,127,0,227,0, + 195,0,195,0,231,128,121,128,14,10,20,17,2,0,126,240, + 231,248,195,12,7,12,127,252,227,0,195,0,195,140,231,252, + 122,240,8,14,14,10,1,252,62,127,99,192,192,192,192,99, + 127,62,24,12,108,120,8,14,14,10,1,0,48,24,12,0, + 60,126,195,195,255,192,192,227,127,60,8,14,14,10,1,0, + 12,24,48,0,60,126,195,195,255,192,192,227,127,60,8,14, + 14,10,1,0,24,60,102,0,60,126,195,195,255,192,192,227, + 127,60,8,14,14,10,1,0,102,102,0,0,60,126,195,195, + 255,192,192,227,127,60,4,14,14,4,0,0,192,96,48,0, + 96,96,96,96,96,96,96,96,96,96,4,14,14,4,0,0, + 48,96,192,0,96,96,96,96,96,96,96,96,96,96,6,14, + 14,4,255,0,48,120,204,0,48,48,48,48,48,48,48,48, + 48,48,5,14,14,4,0,0,216,216,0,0,96,96,96,96, + 96,96,96,96,96,96,9,14,28,11,1,0,96,0,54,0, + 56,0,76,0,62,0,127,0,99,0,193,128,193,128,193,128, + 193,128,99,0,127,0,62,0,8,14,14,10,1,0,50,90, + 76,0,222,255,227,195,195,195,195,195,195,195,9,14,28,11, + 1,0,48,0,24,0,12,0,0,0,62,0,127,0,99,0, + 193,128,193,128,193,128,193,128,99,0,127,0,62,0,9,14, + 28,11,1,0,6,0,12,0,24,0,0,0,62,0,127,0, + 99,0,193,128,193,128,193,128,193,128,99,0,127,0,62,0, + 9,14,28,11,1,0,24,0,60,0,102,0,0,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,0,50,0,90,0,76,0,0,0, + 62,0,127,0,99,0,193,128,193,128,193,128,193,128,99,0, + 127,0,62,0,9,14,28,11,1,0,51,0,51,0,0,0, + 0,0,62,0,127,0,99,0,193,128,193,128,193,128,193,128, + 99,0,127,0,62,0,8,8,8,10,1,1,24,24,0,255, + 255,0,24,24,11,10,20,11,0,0,14,96,63,192,49,128, + 99,192,102,192,108,192,120,192,49,128,127,128,206,0,8,14, + 14,10,1,0,48,24,12,0,195,195,195,195,195,195,195,199, + 255,123,8,14,14,10,1,0,6,12,24,0,195,195,195,195, + 195,195,195,199,255,123,8,14,14,10,1,0,24,60,102,0, + 195,195,195,195,195,195,195,199,255,123,8,14,14,10,1,0, + 102,102,0,0,195,195,195,195,195,195,195,199,255,123,8,18, + 18,10,1,252,6,12,24,0,195,195,195,102,102,102,36,60, + 24,24,24,24,112,112,9,18,36,11,1,252,192,0,192,0, + 192,0,192,0,222,0,255,0,227,0,193,128,193,128,193,128, + 193,128,227,0,255,0,222,0,192,0,192,0,192,0,192,0, + 8,18,18,10,1,252,102,102,0,0,195,195,195,102,102,102, + 36,60,24,24,24,24,112,112}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 13 + Calculated Max Values w=16 h=18 x= 2 y=11 dx=18 dy= 0 ascent=14 len=34 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR14r[2281] U8G_SECTION(".progmem.u8g_font_helvR14r") = { + 0,22,29,254,249,14,2,149,6,82,32,127,252,14,252,14, + 252,0,0,0,5,0,1,2,14,14,6,2,0,192,192,192, + 192,192,192,192,192,128,128,0,0,192,192,5,5,5,5,0, + 9,216,216,216,216,216,10,13,26,10,0,0,9,0,9,0, + 9,0,127,192,127,192,18,0,18,0,18,0,255,128,255,128, + 36,0,36,0,36,0,9,16,32,10,1,254,8,0,62,0, + 127,0,203,0,200,0,232,0,120,0,62,0,15,0,9,128, + 201,128,235,128,127,0,62,0,8,0,8,0,14,13,26,16, + 1,0,120,96,204,192,204,192,205,128,205,128,123,0,3,0, + 6,120,6,204,12,204,12,204,24,204,24,120,12,13,26,13, + 1,0,60,0,126,0,102,0,102,0,60,0,124,0,238,192, + 198,192,195,192,195,128,231,192,126,224,60,112,1,5,5,3, + 1,9,128,128,128,128,128,4,18,18,6,0,252,16,48,96, + 96,192,192,192,192,192,192,192,192,192,192,96,96,48,16,4, + 18,18,6,1,252,128,192,96,96,48,48,48,48,48,48,48, + 48,48,48,96,96,192,128,5,7,7,7,1,7,32,168,248, + 32,248,168,32,8,10,10,10,1,0,24,24,24,24,255,255, + 24,24,24,24,2,5,5,5,1,253,192,192,64,64,128,5, + 1,1,6,0,5,248,2,2,2,5,1,0,192,192,5,14, + 14,5,0,0,24,24,24,24,48,48,48,96,96,96,192,192, + 192,192,8,13,13,10,1,0,60,126,102,195,195,195,195,195, + 195,195,102,126,60,5,13,13,10,2,0,24,248,248,24,24, + 24,24,24,24,24,24,24,24,8,13,13,10,1,0,60,254, + 195,3,7,14,28,56,112,224,192,255,255,8,13,13,10,1, + 0,62,127,195,195,6,28,30,7,3,195,199,126,60,9,13, + 26,10,0,0,3,0,7,0,15,0,27,0,51,0,51,0, + 99,0,195,0,255,128,255,128,3,0,3,0,3,0,8,13, + 13,10,1,0,254,254,192,192,252,254,199,3,3,195,199,254, + 124,8,13,13,10,1,0,60,127,99,192,192,220,254,195,195, + 195,227,126,60,8,13,13,10,1,0,255,255,3,6,12,12, + 24,24,48,48,96,96,96,8,13,13,10,1,0,60,126,231, + 195,195,102,126,231,195,195,231,126,60,8,13,13,10,1,0, + 60,126,199,195,195,195,127,59,3,3,198,254,124,2,10,10, + 5,1,0,192,192,0,0,0,0,0,0,192,192,2,13,13, + 5,1,253,192,192,0,0,0,0,0,0,192,192,64,64,128, + 8,9,9,10,1,0,3,15,60,112,192,112,60,15,3,7, + 5,5,11,2,2,254,254,0,254,254,8,9,9,10,1,0, + 192,240,60,14,3,14,60,240,192,7,14,14,10,1,0,124, + 254,198,198,14,28,56,48,48,48,0,0,48,48,16,17,34, + 18,1,253,3,240,15,252,28,14,48,6,99,211,103,115,198, + 51,204,99,204,102,204,102,204,204,207,248,103,112,112,0,56, + 0,31,240,7,224,12,14,28,13,0,0,6,0,6,0,15, + 0,15,0,25,128,25,128,48,192,48,192,63,192,127,224,96, + 96,96,96,192,48,192,48,11,14,28,13,1,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,128,255,192,192,224,192, + 96,192,96,192,224,255,192,255,128,12,14,28,14,1,0,15, + 128,63,224,112,112,96,48,224,0,192,0,192,0,192,0,192, + 0,224,0,96,48,112,112,63,224,15,128,12,14,28,14,1, + 0,255,128,255,192,192,224,192,96,192,48,192,48,192,48,192, + 48,192,48,192,48,192,96,192,224,255,192,255,128,10,14,28, + 13,2,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 128,255,128,192,0,192,0,192,0,192,0,255,192,255,192,9, + 14,28,12,2,0,255,128,255,128,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,13,14,28,15,1,0,15,192,63,240,112,56,96,24,224, + 24,192,0,192,0,192,248,192,248,224,24,96,24,112,56,63, + 248,15,216,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,255,224,255,224,192,96,192,96,192,96,192, + 96,192,96,192,96,2,14,14,6,2,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,8,14,14,10,0,0,3, + 3,3,3,3,3,3,3,3,195,195,231,126,60,12,14,28, + 13,2,0,192,224,193,192,195,128,199,0,206,0,220,0,248, + 0,252,0,206,0,199,0,195,128,193,192,192,224,192,112,9, + 14,28,11,1,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,128,255, + 128,14,14,28,16,1,0,192,12,192,12,224,28,224,28,240, + 60,240,60,216,108,216,108,204,204,204,204,196,140,199,140,195, + 12,195,12,11,14,28,14,1,0,192,96,224,96,240,96,240, + 96,216,96,204,96,204,96,198,96,198,96,195,96,193,224,193, + 224,192,224,192,96,13,14,28,15,1,0,15,128,63,224,112, + 112,96,48,224,56,192,24,192,24,192,24,192,24,224,56,96, + 48,112,112,63,224,15,128,10,14,28,13,2,0,255,0,255, + 128,193,192,192,192,192,192,193,192,255,128,255,0,192,0,192, + 0,192,0,192,0,192,0,192,0,13,15,30,15,1,255,15, + 128,63,224,112,112,96,48,224,56,192,24,192,24,192,24,192, + 24,225,184,97,176,112,240,63,224,15,176,0,48,11,14,28, + 14,1,0,255,128,255,192,192,224,192,96,192,96,192,224,255, + 192,255,128,192,192,192,192,192,96,192,96,192,96,192,96,10, + 14,28,13,1,0,30,0,127,128,225,192,192,192,224,0,124, + 0,31,0,3,128,1,192,0,192,192,192,225,192,127,128,63, + 0,10,14,28,12,1,0,255,192,255,192,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,11,14,28,14,1,0,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,96, + 192,127,192,31,0,12,14,28,13,0,0,192,48,192,48,96, + 96,96,96,96,96,48,192,48,192,48,192,25,128,25,128,25, + 128,15,0,15,0,6,0,16,14,28,18,1,0,193,131,193, + 131,193,131,195,195,99,198,98,70,102,102,102,102,54,108,54, + 108,52,44,28,56,24,24,24,24,11,14,28,13,1,0,192, + 96,192,96,96,192,113,192,49,128,27,0,14,0,14,0,27, + 0,49,128,113,192,96,192,192,96,192,96,12,14,28,13,0, + 0,192,48,192,48,96,96,96,96,48,192,57,192,25,128,15, + 0,6,0,6,0,6,0,6,0,6,0,6,0,10,14,28, + 12,1,0,255,192,255,192,0,192,1,128,3,0,6,0,12, + 0,28,0,24,0,48,0,96,0,192,0,255,192,255,192,4, + 18,18,5,0,252,240,240,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,240,240,5,14,14,5,0,0,192,192,192, + 96,96,96,48,48,48,48,24,24,24,24,4,18,18,5,0, + 252,240,240,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,240,240,7,6,6,9,1,7,16,56,108,108,198,198,11, + 2,4,11,0,252,255,224,255,224,4,3,3,4,0,11,192, + 96,48,9,10,20,11,1,0,126,0,231,0,195,0,7,0, + 127,0,227,0,195,0,195,0,231,128,121,128,9,14,28,11, + 1,0,192,0,192,0,192,0,192,0,222,0,255,0,227,0, + 193,128,193,128,193,128,193,128,227,0,255,0,222,0,8,10, + 10,10,1,0,62,127,99,192,192,192,192,99,127,62,9,14, + 28,11,1,0,1,128,1,128,1,128,1,128,61,128,127,128, + 99,128,193,128,193,128,193,128,193,128,99,128,127,128,61,128, + 8,10,10,10,1,0,60,126,195,195,255,192,192,227,127,60, + 6,14,14,6,0,0,28,60,48,48,252,252,48,48,48,48, + 48,48,48,48,9,14,28,11,1,252,61,128,127,128,97,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 99,0,127,0,28,0,8,14,14,10,1,0,192,192,192,192, + 222,255,227,195,195,195,195,195,195,195,2,14,14,4,1,0, + 192,192,0,0,192,192,192,192,192,192,192,192,192,192,4,18, + 18,4,255,252,48,48,0,0,48,48,48,48,48,48,48,48, + 48,48,48,48,240,224,8,14,14,9,1,0,192,192,192,192, + 198,204,216,240,248,216,204,206,198,199,2,14,14,4,1,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,14,10, + 20,16,1,0,222,120,255,252,227,140,195,12,195,12,195,12, + 195,12,195,12,195,12,195,12,8,10,10,10,1,0,222,255, + 227,195,195,195,195,195,195,195,9,10,20,11,1,0,62,0, + 127,0,99,0,193,128,193,128,193,128,193,128,99,0,127,0, + 62,0,9,14,28,11,1,252,222,0,255,0,227,0,193,128, + 193,128,193,128,193,128,227,0,255,0,222,0,192,0,192,0, + 192,0,192,0,9,14,28,11,1,252,61,128,127,128,99,128, + 193,128,193,128,193,128,193,128,99,128,127,128,61,128,1,128, + 1,128,1,128,1,128,5,10,10,6,1,0,216,216,224,192, + 192,192,192,192,192,192,7,10,10,9,1,0,60,126,198,192, + 252,62,6,198,252,120,6,13,13,6,0,0,48,48,48,252, + 252,48,48,48,48,48,48,60,28,8,10,10,10,1,0,195, + 195,195,195,195,195,195,199,255,123,8,10,10,10,1,0,195, + 195,195,102,102,102,36,60,24,24,12,10,20,14,1,0,198, + 48,198,48,198,48,102,96,102,96,105,96,41,64,57,192,25, + 128,25,128,8,10,10,10,1,0,195,231,102,60,24,24,60, + 102,231,195,8,14,14,10,1,252,195,195,195,102,102,102,36, + 60,24,24,24,24,112,112,7,10,10,9,1,0,254,254,6, + 12,24,48,96,192,254,254,6,18,18,6,255,252,12,24,48, + 48,48,48,48,96,192,96,48,48,48,48,48,48,24,12,2, + 18,18,5,1,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,6,18,18,6,0,252,192,96,48, + 48,48,48,48,24,12,24,48,48,48,48,48,48,96,192,8, + 3,3,10,1,4,115,255,206,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=16 dx=25 dy= 0 ascent=24 len=69 + Font Bounding box w=28 h=37 x=-3 y=-8 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR18[7307] U8G_SECTION(".progmem.u8g_font_helvR18") = { + 0,28,37,253,248,19,4,37,9,49,32,255,251,24,251,19, + 251,0,0,0,6,0,1,2,19,19,6,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,128,128,0,0,192,192,192, + 6,6,6,8,1,13,204,204,204,204,204,68,11,17,34,14, + 2,0,12,192,12,192,12,192,25,128,255,224,255,224,25,128, + 25,128,51,0,51,0,255,224,255,224,51,0,51,0,102,0, + 102,0,102,0,11,22,44,13,1,254,6,0,6,0,31,128, + 63,192,118,224,102,96,102,96,102,0,118,0,62,0,62,0, + 15,128,7,192,6,224,6,96,198,96,198,96,230,224,127,192, + 63,128,6,0,6,0,19,18,54,22,1,0,0,6,0,60, + 12,0,126,12,0,195,24,0,195,24,0,195,48,0,195,48, + 0,126,96,0,60,96,0,0,192,0,0,199,128,1,143,192, + 1,152,96,3,24,96,3,24,96,6,24,96,6,15,192,4, + 7,128,14,18,36,17,2,0,15,0,31,128,57,192,48,192, + 48,192,48,192,25,128,15,0,30,0,63,24,115,152,97,216, + 192,240,192,96,192,240,225,216,127,156,30,0,2,6,6,6, + 2,13,192,192,192,192,192,64,5,24,24,8,2,251,24,24, + 48,48,96,96,96,192,192,192,192,192,192,192,192,192,192,96, + 96,96,48,48,24,24,5,24,24,8,1,251,192,192,96,96, + 48,48,48,24,24,24,24,24,24,24,24,24,24,48,48,48, + 96,96,192,192,7,7,7,10,1,12,16,16,214,124,56,108, + 68,12,12,24,14,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,2, + 6,6,6,2,253,192,192,192,64,64,128,6,2,2,8,1, + 6,252,252,2,3,3,6,2,0,192,192,192,7,19,19,7, + 0,0,6,4,12,12,8,24,24,16,16,48,48,32,96,96, + 64,192,192,128,128,11,18,36,13,1,0,31,0,63,128,113, + 192,96,192,96,192,224,224,192,96,192,96,192,96,192,96,192, + 96,192,96,224,224,96,192,96,192,113,192,63,128,31,0,6, + 18,18,13,2,0,12,12,28,252,252,12,12,12,12,12,12, + 12,12,12,12,12,12,12,11,18,36,13,1,0,30,0,127, + 128,97,192,192,192,192,96,192,96,0,224,0,192,1,192,3, + 128,15,0,28,0,56,0,112,0,224,0,192,0,255,224,255, + 224,11,18,36,13,1,0,31,0,127,128,97,128,192,192,192, + 192,192,192,0,192,1,128,15,0,15,192,0,192,0,96,0, + 96,192,96,192,192,97,192,127,128,31,0,11,18,36,13,1, + 0,1,128,3,128,3,128,7,128,15,128,13,128,25,128,57, + 128,49,128,97,128,225,128,193,128,255,224,255,224,1,128,1, + 128,1,128,1,128,11,18,36,13,1,0,127,192,127,192,96, + 0,96,0,96,0,96,0,126,0,127,128,113,192,0,192,0, + 224,0,96,0,96,192,224,192,192,225,192,127,128,30,0,11, + 18,36,13,1,0,15,0,63,192,112,192,96,96,224,96,192, + 0,192,0,207,0,223,128,241,192,224,192,192,96,192,96,192, + 96,224,224,113,192,127,192,31,0,11,18,36,13,1,0,255, + 224,255,224,0,224,0,192,1,128,1,128,3,0,3,0,6, + 0,6,0,12,0,12,0,28,0,24,0,24,0,56,0,48, + 0,48,0,11,18,36,13,1,0,14,0,63,128,49,128,96, + 192,96,192,96,192,49,128,31,0,63,128,113,192,96,192,192, + 96,192,96,192,96,192,96,96,192,127,192,31,0,11,18,36, + 13,1,0,31,0,127,192,113,192,224,192,192,96,192,96,192, + 96,192,96,224,224,113,224,127,96,30,96,0,96,0,224,192, + 192,225,192,127,128,30,0,2,14,14,6,2,0,192,192,192, + 0,0,0,0,0,0,0,0,192,192,192,2,17,17,6,2, + 253,192,192,192,0,0,0,0,0,0,0,0,192,192,192,64, + 64,128,12,12,24,15,1,1,0,48,0,240,3,192,15,0, + 60,0,224,0,224,0,60,0,15,0,3,192,0,240,0,48, + 10,5,10,15,2,5,255,192,255,192,0,0,255,192,255,192, + 12,12,24,15,1,1,192,0,240,0,60,0,15,0,3,192, + 0,112,0,112,3,192,15,0,60,0,240,0,192,0,10,19, + 38,12,1,0,31,0,127,128,113,192,224,192,192,192,193,192, + 1,128,3,128,7,0,6,0,12,0,12,0,12,0,12,0, + 0,0,0,0,12,0,12,0,12,0,22,23,69,25,2,252, + 0,255,0,3,255,192,15,1,224,28,0,112,56,0,24,48, + 0,24,96,115,12,96,251,12,193,199,12,195,134,12,195,6, + 12,198,6,12,198,12,28,198,12,24,198,12,56,231,28,112, + 99,247,224,113,227,128,56,0,0,28,0,0,15,3,0,7, + 255,0,0,252,0,15,19,38,17,1,0,3,128,3,128,6, + 192,6,192,12,64,12,96,12,96,24,48,24,48,24,48,48, + 24,63,248,63,248,96,12,96,12,96,12,192,6,192,6,192, + 6,14,19,38,17,2,0,255,192,255,240,192,112,192,24,192, + 24,192,24,192,24,192,48,255,224,255,240,192,24,192,12,192, + 12,192,12,192,12,192,28,192,120,255,240,255,192,15,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,15,19,38,18,2,0,255, + 192,255,240,192,120,192,28,192,12,192,14,192,6,192,6,192, + 6,192,6,192,6,192,6,192,6,192,14,192,12,192,28,192, + 120,255,240,255,192,12,19,38,16,2,0,255,240,255,240,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,255,224,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,240,255, + 240,11,19,38,14,2,0,255,224,255,224,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,255,192,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,16,19,38, + 19,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,127,192,127,192,3,192,3,224,3,96, + 7,112,15,60,63,31,251,7,227,14,19,38,18,2,0,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,255, + 252,255,252,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,2,19,19,8,3,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,192,192, + 192,192,192,192,97,128,127,128,63,0,13,19,38,18,3,0, + 192,56,192,112,192,224,193,192,195,128,199,0,206,0,220,0, + 252,0,254,0,231,0,195,128,193,128,193,192,192,224,192,96, + 192,112,192,56,192,24,11,19,38,14,2,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,255,224, + 255,224,17,19,57,21,2,0,192,1,128,224,3,128,224,3, + 128,240,7,128,240,7,128,216,13,128,216,13,128,216,13,128, + 204,25,128,204,25,128,204,25,128,198,49,128,198,49,128,198, + 49,128,195,97,128,195,97,128,195,97,128,193,193,128,193,193, + 128,14,19,38,18,2,0,224,12,240,12,240,12,216,12,220, + 12,204,12,206,12,198,12,199,12,195,12,195,140,193,140,193, + 204,192,204,192,236,192,108,192,60,192,60,192,28,16,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,13,19,38,16,2,0,255, + 224,255,240,192,48,192,24,192,24,192,24,192,24,192,48,255, + 240,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,19,38,18,1,0,7,224,31,248,60, + 60,112,14,96,6,224,7,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,224,7,96,230,112,126,60,28,31,254,7, + 231,13,19,38,17,2,0,255,224,255,240,192,48,192,24,192, + 24,192,24,192,24,192,48,255,240,255,224,192,112,192,48,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,13,19,38, + 16,2,0,15,128,63,224,96,96,192,48,192,48,192,0,224, + 0,124,0,63,128,7,224,0,240,0,56,0,24,0,24,192, + 24,192,56,240,112,127,224,31,128,14,19,38,16,1,0,255, + 252,255,252,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,14,19,38,18,2,0,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,96,24,112,56,63,240,15, + 192,15,19,38,17,1,0,192,6,192,6,224,14,96,12,112, + 28,48,24,48,24,56,56,24,48,24,48,28,112,12,96,12, + 96,14,224,6,192,6,192,3,128,3,128,3,128,20,19,57, + 22,1,0,192,96,48,192,96,48,192,96,48,192,240,48,96, + 240,96,97,152,96,97,152,96,97,152,96,97,152,96,49,152, + 192,51,12,192,51,12,192,51,12,192,27,13,128,27,13,128, + 30,7,128,14,7,0,12,3,0,12,3,0,15,19,38,17, + 1,0,192,6,224,14,112,28,48,24,24,48,28,112,14,224, + 7,192,3,128,3,128,7,192,14,224,12,96,28,112,56,56, + 48,24,96,12,224,14,192,6,14,19,38,16,1,0,192,12, + 224,28,96,24,112,56,48,48,56,112,24,96,28,224,12,192, + 15,192,7,128,7,128,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,13,19,38,15,1,0,255,248,255,248,0,56, + 0,112,0,224,1,192,1,192,3,128,7,0,7,0,14,0, + 28,0,28,0,56,0,112,0,112,0,224,0,255,248,255,248, + 4,24,24,7,2,251,240,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,240,8,19, + 19,7,0,0,192,64,64,96,32,32,48,16,16,16,24,8, + 8,12,4,4,6,2,3,4,24,24,7,1,251,240,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,240,240,10,9,18,12,1,10,12,0,12,0,30, + 0,18,0,51,0,97,128,97,128,192,192,192,192,14,2,4, + 14,0,251,255,252,255,252,5,4,4,7,1,15,192,96,48, + 24,11,14,28,13,1,0,31,0,63,128,97,192,96,192,0, + 192,7,192,63,192,120,192,224,192,192,192,193,192,227,192,126, + 224,60,96,11,19,38,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,223,128,241,192,224,192,192,224,192,96,192, + 96,192,96,192,96,192,224,224,192,241,192,223,128,207,0,10, + 14,28,12,1,0,31,0,63,128,113,192,96,192,224,0,192, + 0,192,0,192,0,192,0,224,0,96,192,113,192,63,128,31, + 0,11,19,38,14,1,0,0,96,0,96,0,96,0,96,0, + 96,30,96,63,96,113,224,96,224,224,96,192,96,192,96,192, + 96,192,96,224,96,96,224,113,224,63,96,30,96,11,14,28, + 13,1,0,14,0,63,128,113,192,96,192,192,96,192,96,255, + 224,255,224,192,0,192,0,96,96,112,224,63,192,15,0,6, + 19,19,8,1,0,28,60,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,48,48,11,19,38,14,1,251,30,96, + 63,96,113,224,96,224,224,96,192,96,192,96,192,96,192,96, + 224,96,96,224,113,224,63,96,30,96,0,96,192,96,224,192, + 127,192,31,0,10,19,38,13,2,0,192,0,192,0,192,0, + 192,0,192,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 2,19,19,6,2,0,192,192,192,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,4,24,24,6,0,251,48, + 48,48,0,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,224,10,19,38,12,2,0,192,0,192, + 0,192,0,192,0,192,0,193,128,195,128,199,0,206,0,220, + 0,248,0,252,0,206,0,198,0,199,0,195,128,193,128,193, + 192,192,192,2,19,19,6,2,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,16,14,28,20, + 2,0,206,60,255,126,227,199,193,131,193,131,193,131,193,131, + 193,131,193,131,193,131,193,131,193,131,193,131,193,131,10,14, + 28,14,2,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 11,14,28,13,1,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,63,128, + 31,0,11,19,38,14,2,251,207,0,223,128,241,192,224,192, + 192,224,192,96,192,96,192,96,192,96,192,224,224,192,241,192, + 223,128,207,0,192,0,192,0,192,0,192,0,192,0,11,19, + 38,14,1,251,30,96,63,96,113,224,96,224,224,96,192,96, + 192,96,192,96,192,96,224,96,96,224,113,224,63,96,30,96, + 0,96,0,96,0,96,0,96,0,96,6,14,14,9,2,0, + 204,220,248,240,224,192,192,192,192,192,192,192,192,192,10,14, + 28,12,1,0,63,0,127,128,225,192,192,192,192,0,248,0, + 127,0,15,128,1,192,192,192,192,192,225,192,127,128,63,0, + 6,18,18,8,1,0,48,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,60,28,10,14,28,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,193,192,99,192,126,192,28,192,11,14,28,13,1,0, + 192,96,192,96,192,96,96,192,96,192,113,192,49,128,49,128, + 27,0,27,0,27,0,14,0,14,0,14,0,18,14,42,18, + 0,0,192,192,192,192,192,192,97,225,128,97,225,128,97,225, + 128,49,35,0,51,51,0,51,51,0,27,54,0,26,22,0, + 30,30,0,14,28,0,12,12,0,12,12,0,10,14,28,12, + 1,0,192,192,225,192,97,128,51,0,30,0,30,0,12,0, + 30,0,30,0,51,0,115,128,97,128,192,192,192,192,12,19, + 38,13,0,251,192,48,192,48,96,48,112,96,48,96,56,224, + 24,192,24,192,13,128,13,128,7,128,7,0,3,0,3,0, + 6,0,6,0,12,0,60,0,56,0,10,14,28,12,1,0, + 255,192,255,192,1,128,3,0,7,0,14,0,12,0,28,0, + 56,0,48,0,96,0,224,0,255,192,255,192,6,24,24,8, + 1,251,12,24,48,48,48,48,48,48,48,48,96,192,192,96, + 48,48,48,48,48,48,48,48,24,12,1,24,24,6,2,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,24,24,8,1,251,192,96, + 48,48,48,48,48,48,48,48,24,12,12,24,48,48,48,48, + 48,48,48,48,96,192,10,4,8,14,2,5,112,192,252,192, + 207,192,195,128,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,6,0,1,2,19,19,6,2, + 251,192,192,192,0,0,64,64,192,192,192,192,192,192,192,192, + 192,192,192,192,10,18,36,13,1,254,1,128,1,128,31,0, + 63,128,115,192,102,192,198,0,204,0,204,0,204,0,216,0, + 216,0,216,192,113,192,127,128,63,0,96,0,96,0,12,18, + 36,14,1,0,31,128,63,224,112,112,96,48,96,0,112,0, + 48,0,24,0,255,128,255,128,24,0,24,0,24,0,48,0, + 48,0,103,48,255,240,240,224,11,12,24,13,1,3,192,96, + 238,224,127,192,49,128,96,192,96,192,96,192,96,192,49,128, + 127,192,238,224,192,96,14,18,36,14,0,0,224,28,96,24, + 112,56,48,48,56,112,24,96,28,224,12,192,63,240,63,240, + 3,0,63,240,63,240,3,0,3,0,3,0,3,0,3,0, + 2,24,24,6,2,251,192,192,192,192,192,192,192,192,192,192, + 0,0,0,0,192,192,192,192,192,192,192,192,192,192,11,24, + 48,13,1,251,31,0,63,128,113,192,96,192,112,192,56,0, + 28,0,126,0,231,0,195,128,193,192,192,192,96,96,112,96, + 56,96,28,192,15,128,7,0,3,128,97,192,96,192,113,192, + 63,128,31,0,6,2,2,8,1,16,204,204,19,19,57,19, + 1,0,3,248,0,14,14,0,48,1,128,96,0,192,65,240, + 64,195,24,96,134,12,32,132,0,32,132,0,32,132,0,32, + 132,0,32,134,12,32,195,24,96,65,240,64,96,0,192,48, + 1,128,24,3,0,14,14,0,3,248,0,7,12,12,9,1, + 7,120,204,204,28,108,204,204,220,118,0,254,254,9,8,16, + 14,2,3,25,128,51,0,102,0,204,0,204,0,102,0,51, + 0,25,128,13,8,16,15,1,2,255,248,255,248,0,24,0, + 24,0,24,0,24,0,24,0,24,6,2,2,8,1,6,252, + 252,18,19,57,19,1,0,7,248,0,28,14,0,48,3,0, + 96,1,128,67,240,128,194,24,192,130,8,64,130,8,64,130, + 8,64,130,16,64,131,240,64,130,32,64,130,16,64,194,16, + 192,66,8,128,96,1,128,48,3,0,28,14,0,7,248,0, + 6,2,2,8,1,16,252,252,8,7,7,9,0,11,60,102, + 195,195,195,102,60,12,13,26,14,1,0,6,0,6,0,6, + 0,6,0,255,240,255,240,6,0,6,0,6,0,6,0,0, + 0,255,240,255,240,7,10,10,7,0,8,60,126,198,6,12, + 24,48,96,254,254,7,10,10,7,0,8,124,254,198,6,60, + 60,6,198,254,124,5,4,4,7,1,15,24,48,96,192,10, + 19,38,14,2,251,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,193,192,227,192,254,192,220, + 192,192,0,192,0,192,0,192,0,192,0,10,24,48,12,1, + 251,31,192,127,192,125,128,253,128,253,128,253,128,253,128,253, + 128,253,128,125,128,125,128,61,128,13,128,13,128,13,128,13, + 128,13,128,13,128,13,128,13,128,13,128,13,128,13,128,13, + 128,2,3,3,6,2,6,192,192,192,5,6,6,7,1,251, + 96,112,24,24,248,112,4,10,10,7,0,8,48,48,240,240, + 48,48,48,48,48,48,7,12,12,9,1,7,56,108,198,198, + 198,198,198,108,56,0,254,254,9,8,16,14,3,3,204,0, + 102,0,51,0,25,128,25,128,51,0,102,0,204,0,18,18, + 54,19,1,0,48,24,0,48,24,0,240,48,0,240,48,0, + 48,96,0,48,96,0,48,192,0,48,192,0,49,131,0,49, + 135,0,3,15,0,3,15,0,6,27,0,6,51,0,12,127, + 192,12,127,192,24,3,0,24,3,0,18,18,54,19,1,0, + 48,24,0,48,24,0,240,48,0,240,48,0,48,96,0,48, + 96,0,48,192,0,48,192,0,49,135,128,49,143,192,3,24, + 192,3,0,192,6,1,128,6,3,0,12,6,0,12,12,0, + 24,31,192,24,31,192,19,18,54,19,0,0,124,12,0,254, + 12,0,198,24,0,6,24,0,60,48,0,60,48,0,6,96, + 0,198,96,0,254,193,128,124,195,128,1,135,128,1,135,128, + 3,13,128,3,25,128,6,63,224,6,63,224,12,1,128,12, + 1,128,10,19,38,12,1,251,12,0,12,0,12,0,0,0, + 0,0,12,0,12,0,12,0,12,0,24,0,56,0,112,0, + 96,0,224,192,192,192,193,192,227,128,127,128,62,0,15,24, + 48,17,1,0,12,0,6,0,3,0,1,128,0,0,3,128, + 3,128,6,192,6,192,12,64,12,96,12,96,24,48,24,48, + 24,48,48,24,63,248,63,248,96,12,96,12,96,12,192,6, + 192,6,192,6,15,24,48,17,1,0,0,96,0,192,1,128, + 3,0,0,0,3,128,3,128,6,192,6,192,12,64,12,96, + 12,96,24,48,24,48,24,48,48,24,63,248,63,248,96,12, + 96,12,96,12,192,6,192,6,192,6,15,24,48,17,1,0, + 1,128,3,192,6,96,12,48,0,0,3,128,3,128,6,192, + 6,192,12,64,12,96,12,96,24,48,24,48,24,48,48,24, + 63,248,63,248,96,12,96,12,96,12,192,6,192,6,192,6, + 15,23,46,17,1,0,7,16,13,176,8,224,0,0,3,128, + 3,128,6,192,6,192,12,64,12,96,12,96,24,48,24,48, + 24,48,48,24,63,248,63,248,96,12,96,12,96,12,192,6, + 192,6,192,6,15,23,46,17,1,0,12,96,12,96,0,0, + 0,0,3,128,3,128,6,192,6,192,12,64,12,96,12,96, + 24,48,24,48,24,48,48,24,63,248,63,248,96,12,96,12, + 96,12,192,6,192,6,192,6,15,24,48,17,1,0,3,128, + 4,64,4,64,3,128,0,0,3,128,3,128,6,192,6,192, + 12,64,12,96,12,96,24,48,24,48,24,48,48,24,63,248, + 63,248,96,12,96,12,96,12,192,6,192,6,192,6,21,19, + 57,23,1,0,3,255,248,3,255,248,6,96,0,6,96,0, + 12,96,0,12,96,0,12,96,0,24,96,0,24,127,248,24, + 127,248,48,96,0,63,224,0,63,224,0,96,96,0,96,96, + 0,96,96,0,192,96,0,192,127,248,192,127,248,15,24,48, + 18,1,251,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,1,128,0,192,0,192,7, + 192,3,128,12,24,48,16,2,0,48,0,24,0,12,0,6, + 0,0,0,255,240,255,240,192,0,192,0,192,0,192,0,192, + 0,192,0,255,224,255,224,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,255,240,255,240,12,24,48,16,2,0,1, + 128,3,0,6,0,12,0,0,0,255,240,255,240,192,0,192, + 0,192,0,192,0,192,0,192,0,255,224,255,224,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,255,240,255,240,12, + 24,48,16,2,0,6,0,15,0,25,128,48,192,0,0,255, + 240,255,240,192,0,192,0,192,0,192,0,192,0,192,0,255, + 224,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,255,240,255,240,12,23,46,16,2,0,24,192,24,192,0, + 0,0,0,255,240,255,240,192,0,192,0,192,0,192,0,192, + 0,192,0,255,224,255,224,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,255,240,255,240,5,24,24,8,1,0,192, + 96,48,24,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,5,24,24,8,2,0,24,48,96, + 192,0,96,96,96,96,96,96,96,96,96,96,96,96,96,96, + 96,96,96,96,96,8,24,24,8,0,0,24,60,102,195,0, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,6,23,23,8,1,0,204,204,0,0,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 18,19,57,18,255,0,31,248,0,31,254,0,24,15,0,24, + 3,128,24,1,128,24,1,192,24,0,192,24,0,192,255,128, + 192,255,128,192,24,0,192,24,0,192,24,0,192,24,1,192, + 24,1,128,24,3,128,24,15,0,31,254,0,31,248,0,14, + 23,46,18,2,0,14,32,27,96,17,192,0,0,224,12,240, + 12,240,12,216,12,220,12,204,12,206,12,198,12,199,12,195, + 12,195,140,193,140,193,204,192,204,192,236,192,108,192,60,192, + 60,192,28,16,24,48,18,1,0,12,0,6,0,3,0,1, + 128,0,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,16,24,48,18,1,0,0, + 48,0,96,0,192,1,128,0,0,7,224,31,248,60,60,112, + 14,96,6,224,7,192,3,192,3,192,3,192,3,192,3,192, + 3,192,3,224,7,96,6,112,14,60,60,31,248,7,224,16, + 24,48,18,1,0,0,192,1,224,3,48,6,24,0,0,7, + 224,31,248,60,60,112,14,96,6,224,7,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,224,7,96,6,112,14,60, + 60,31,248,7,224,16,23,46,18,1,0,3,136,6,216,4, + 112,0,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,16,23,46,18,1,0,6, + 48,6,48,0,0,0,0,7,224,31,248,60,60,112,14,96, + 6,224,7,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,224,7,96,6,112,14,60,60,31,248,7,224,13,12,24, + 14,0,1,192,24,96,48,48,96,24,192,13,128,7,0,7, + 0,13,128,24,192,48,96,96,48,192,24,18,19,57,18,0, + 0,3,240,192,15,253,192,30,31,128,56,7,0,48,15,0, + 112,29,128,96,57,128,96,113,128,96,225,128,97,193,128,99, + 129,128,103,1,128,110,1,128,124,3,128,56,3,0,56,7, + 0,126,30,0,239,252,0,195,240,0,14,24,48,18,2,0, + 24,0,12,0,6,0,3,0,0,0,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,112,56,63,240,15,192, + 14,24,48,18,2,0,0,96,0,192,1,128,3,0,0,0, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 112,56,63,240,15,192,14,24,48,18,2,0,3,0,7,128, + 12,192,24,96,0,0,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,96,24,112,56,63,240,15,192,14,23,46,18, + 2,0,24,192,24,192,0,0,0,0,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,192,12,192,12,192,12,192,12, + 192,12,192,12,192,12,192,12,96,24,112,56,63,240,15,192, + 14,24,48,16,1,0,0,96,0,192,1,128,3,0,0,0, + 192,12,224,28,96,24,112,56,48,48,56,112,24,96,28,224, + 12,192,15,192,7,128,7,128,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,13,19,38,16,2,0,192,0,192,0, + 192,0,192,0,255,224,255,240,192,48,192,24,192,24,192,24, + 192,24,192,48,255,240,255,224,192,0,192,0,192,0,192,0, + 192,0,10,19,38,15,3,0,28,0,127,0,227,0,193,128, + 193,128,193,128,195,0,199,0,206,0,207,0,195,128,193,128, + 192,192,192,192,192,192,193,128,195,128,207,0,206,0,11,19, + 38,13,1,0,24,0,12,0,6,0,3,0,0,0,31,0, + 63,128,97,192,96,192,0,192,7,192,63,192,120,192,224,192, + 192,192,193,192,227,192,126,224,60,96,11,19,38,13,1,0, + 1,128,3,0,6,0,12,0,0,0,31,0,63,128,97,192, + 96,192,0,192,7,192,63,192,120,192,224,192,192,192,193,192, + 227,192,126,224,60,96,11,19,38,13,1,0,12,0,30,0, + 51,0,97,128,0,0,31,0,63,128,97,192,96,192,0,192, + 7,192,63,192,120,192,224,192,192,192,193,192,227,192,126,224, + 60,96,11,18,36,13,1,0,28,64,54,192,35,128,0,0, + 31,0,63,128,97,192,96,192,0,192,7,192,63,192,120,192, + 224,192,192,192,193,192,227,192,126,224,60,96,11,18,36,13, + 1,0,51,0,51,0,0,0,0,0,31,0,63,128,97,192, + 96,192,0,192,7,192,63,192,120,192,224,192,192,192,193,192, + 227,192,126,224,60,96,11,19,38,13,1,0,6,0,9,0, + 9,0,6,0,0,0,31,0,63,128,97,192,96,192,0,192, + 7,192,63,192,120,192,224,192,192,192,193,192,227,192,126,224, + 60,96,19,14,42,21,1,0,31,14,0,63,191,128,97,241, + 192,96,224,192,0,192,96,7,192,96,63,255,224,120,255,224, + 224,192,0,192,192,0,193,224,96,227,240,224,126,63,192,60, + 15,0,10,19,38,12,1,251,31,0,63,128,113,192,96,192, + 224,0,192,0,192,0,192,0,192,0,224,0,96,192,113,192, + 63,128,31,0,12,0,6,0,6,0,62,0,28,0,11,19, + 38,13,1,0,24,0,12,0,6,0,3,0,0,0,14,0, + 63,128,113,192,96,192,192,96,192,96,255,224,255,224,192,0, + 192,0,96,96,112,224,63,192,15,0,11,19,38,13,1,0, + 3,0,6,0,12,0,24,0,0,0,14,0,63,128,113,192, + 96,192,192,96,192,96,255,224,255,224,192,0,192,0,96,96, + 112,224,63,192,15,0,11,19,38,13,1,0,12,0,30,0, + 51,0,97,128,0,0,14,0,63,128,113,192,96,192,192,96, + 192,96,255,224,255,224,192,0,192,0,96,96,112,224,63,192, + 15,0,11,18,36,13,1,0,51,0,51,0,0,0,0,0, + 14,0,63,128,113,192,96,192,192,96,192,96,255,224,255,224, + 192,0,192,0,96,96,112,224,63,192,15,0,5,19,19,6, + 0,0,192,96,48,24,0,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,5,19,19,6,1,0,24,48,96,192,0, + 96,96,96,96,96,96,96,96,96,96,96,96,96,96,8,19, + 19,6,255,0,24,60,102,195,0,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,6,18,18,6,0,0,204,204,0, + 0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,11, + 19,38,13,1,0,96,0,57,128,14,0,30,0,99,0,31, + 128,63,128,113,192,96,192,224,224,192,96,192,96,192,96,192, + 96,224,224,96,192,113,192,63,128,31,0,10,18,36,14,2, + 0,56,128,109,128,71,0,0,0,206,0,223,128,241,128,224, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,11,19,38,13,1,0,24,0,12,0,6, + 0,3,0,0,0,31,0,63,128,113,192,96,192,224,224,192, + 96,192,96,192,96,192,96,224,224,96,192,113,192,63,128,31, + 0,11,19,38,13,1,0,3,0,6,0,12,0,24,0,0, + 0,31,0,63,128,113,192,96,192,224,224,192,96,192,96,192, + 96,192,96,224,224,96,192,113,192,63,128,31,0,11,19,38, + 13,1,0,12,0,30,0,51,0,97,128,0,0,31,0,63, + 128,113,192,96,192,224,224,192,96,192,96,192,96,192,96,224, + 224,96,192,113,192,63,128,31,0,11,18,36,13,1,0,28, + 64,54,192,35,128,0,0,31,0,63,128,113,192,96,192,224, + 224,192,96,192,96,192,96,192,96,224,224,96,192,113,192,63, + 128,31,0,11,18,36,13,1,0,51,0,51,0,0,0,0, + 0,31,0,63,128,113,192,96,192,224,224,192,96,192,96,192, + 96,192,96,224,224,96,192,113,192,63,128,31,0,12,12,24, + 14,1,1,6,0,6,0,6,0,0,0,0,0,255,240,255, + 240,0,0,0,0,6,0,6,0,6,0,13,14,28,13,0, + 0,15,152,31,248,56,112,48,224,113,240,99,176,99,48,102, + 48,108,48,124,112,56,96,112,224,255,192,207,128,10,19,38, + 14,2,0,48,0,24,0,12,0,6,0,0,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,193,192,99,192,126,192,28,192,10,19,38,14,2,0,3, + 0,6,0,12,0,24,0,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,193,192,99, + 192,126,192,28,192,10,19,38,14,2,0,12,0,30,0,51, + 0,97,128,0,0,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,193,192,99,192,126,192,28, + 192,10,18,36,14,2,0,51,0,51,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,193,192,99,192,126,192,28,192,12,24,48,13,0, + 251,0,192,1,128,3,0,6,0,0,0,192,48,192,48,96, + 48,112,96,48,96,56,224,24,192,24,192,13,128,13,128,7, + 128,7,0,3,0,3,0,6,0,6,0,12,0,60,0,56, + 0,11,24,48,14,2,251,192,0,192,0,192,0,192,0,192, + 0,207,0,223,128,241,192,224,192,192,224,192,96,192,96,192, + 96,192,96,192,224,224,192,241,192,223,128,207,0,192,0,192, + 0,192,0,192,0,192,0,12,23,46,13,0,251,25,128,25, + 128,0,0,0,0,192,48,192,48,96,48,112,96,48,96,56, + 224,24,192,24,192,13,128,13,128,7,128,7,0,3,0,3, + 0,6,0,6,0,12,0,60,0,56,0}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 19, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y=15 dx=25 dy= 0 ascent=20 len=69 + Font Bounding box w=28 h=37 x=-3 y=-8 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =19 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR18r[3381] U8G_SECTION(".progmem.u8g_font_helvR18r") = { + 0,28,37,253,248,19,4,37,9,49,32,127,251,20,251,19, + 251,0,0,0,6,0,1,2,19,19,6,2,0,192,192,192, + 192,192,192,192,192,192,192,192,192,128,128,0,0,192,192,192, + 6,6,6,8,1,13,204,204,204,204,204,68,11,17,34,14, + 2,0,12,192,12,192,12,192,25,128,255,224,255,224,25,128, + 25,128,51,0,51,0,255,224,255,224,51,0,51,0,102,0, + 102,0,102,0,11,22,44,13,1,254,6,0,6,0,31,128, + 63,192,118,224,102,96,102,96,102,0,118,0,62,0,62,0, + 15,128,7,192,6,224,6,96,198,96,198,96,230,224,127,192, + 63,128,6,0,6,0,19,18,54,22,1,0,0,6,0,60, + 12,0,126,12,0,195,24,0,195,24,0,195,48,0,195,48, + 0,126,96,0,60,96,0,0,192,0,0,199,128,1,143,192, + 1,152,96,3,24,96,3,24,96,6,24,96,6,15,192,4, + 7,128,14,18,36,17,2,0,15,0,31,128,57,192,48,192, + 48,192,48,192,25,128,15,0,30,0,63,24,115,152,97,216, + 192,240,192,96,192,240,225,216,127,156,30,0,2,6,6,6, + 2,13,192,192,192,192,192,64,5,24,24,8,2,251,24,24, + 48,48,96,96,96,192,192,192,192,192,192,192,192,192,192,96, + 96,96,48,48,24,24,5,24,24,8,1,251,192,192,96,96, + 48,48,48,24,24,24,24,24,24,24,24,24,24,48,48,48, + 96,96,192,192,7,7,7,10,1,12,16,16,214,124,56,108, + 68,12,12,24,14,1,1,6,0,6,0,6,0,6,0,6, + 0,255,240,255,240,6,0,6,0,6,0,6,0,6,0,2, + 6,6,6,2,253,192,192,192,64,64,128,6,2,2,8,1, + 6,252,252,2,3,3,6,2,0,192,192,192,7,19,19,7, + 0,0,6,4,12,12,8,24,24,16,16,48,48,32,96,96, + 64,192,192,128,128,11,18,36,13,1,0,31,0,63,128,113, + 192,96,192,96,192,224,224,192,96,192,96,192,96,192,96,192, + 96,192,96,224,224,96,192,96,192,113,192,63,128,31,0,6, + 18,18,13,2,0,12,12,28,252,252,12,12,12,12,12,12, + 12,12,12,12,12,12,12,11,18,36,13,1,0,30,0,127, + 128,97,192,192,192,192,96,192,96,0,224,0,192,1,192,3, + 128,15,0,28,0,56,0,112,0,224,0,192,0,255,224,255, + 224,11,18,36,13,1,0,31,0,127,128,97,128,192,192,192, + 192,192,192,0,192,1,128,15,0,15,192,0,192,0,96,0, + 96,192,96,192,192,97,192,127,128,31,0,11,18,36,13,1, + 0,1,128,3,128,3,128,7,128,15,128,13,128,25,128,57, + 128,49,128,97,128,225,128,193,128,255,224,255,224,1,128,1, + 128,1,128,1,128,11,18,36,13,1,0,127,192,127,192,96, + 0,96,0,96,0,96,0,126,0,127,128,113,192,0,192,0, + 224,0,96,0,96,192,224,192,192,225,192,127,128,30,0,11, + 18,36,13,1,0,15,0,63,192,112,192,96,96,224,96,192, + 0,192,0,207,0,223,128,241,192,224,192,192,96,192,96,192, + 96,224,224,113,192,127,192,31,0,11,18,36,13,1,0,255, + 224,255,224,0,224,0,192,1,128,1,128,3,0,3,0,6, + 0,6,0,12,0,12,0,28,0,24,0,24,0,56,0,48, + 0,48,0,11,18,36,13,1,0,14,0,63,128,49,128,96, + 192,96,192,96,192,49,128,31,0,63,128,113,192,96,192,192, + 96,192,96,192,96,192,96,96,192,127,192,31,0,11,18,36, + 13,1,0,31,0,127,192,113,192,224,192,192,96,192,96,192, + 96,192,96,224,224,113,224,127,96,30,96,0,96,0,224,192, + 192,225,192,127,128,30,0,2,14,14,6,2,0,192,192,192, + 0,0,0,0,0,0,0,0,192,192,192,2,17,17,6,2, + 253,192,192,192,0,0,0,0,0,0,0,0,192,192,192,64, + 64,128,12,12,24,15,1,1,0,48,0,240,3,192,15,0, + 60,0,224,0,224,0,60,0,15,0,3,192,0,240,0,48, + 10,5,10,15,2,5,255,192,255,192,0,0,255,192,255,192, + 12,12,24,15,1,1,192,0,240,0,60,0,15,0,3,192, + 0,112,0,112,3,192,15,0,60,0,240,0,192,0,10,19, + 38,12,1,0,31,0,127,128,113,192,224,192,192,192,193,192, + 1,128,3,128,7,0,6,0,12,0,12,0,12,0,12,0, + 0,0,0,0,12,0,12,0,12,0,22,23,69,25,2,252, + 0,255,0,3,255,192,15,1,224,28,0,112,56,0,24,48, + 0,24,96,115,12,96,251,12,193,199,12,195,134,12,195,6, + 12,198,6,12,198,12,28,198,12,24,198,12,56,231,28,112, + 99,247,224,113,227,128,56,0,0,28,0,0,15,3,0,7, + 255,0,0,252,0,15,19,38,17,1,0,3,128,3,128,6, + 192,6,192,12,64,12,96,12,96,24,48,24,48,24,48,48, + 24,63,248,63,248,96,12,96,12,96,12,192,6,192,6,192, + 6,14,19,38,17,2,0,255,192,255,240,192,112,192,24,192, + 24,192,24,192,24,192,48,255,224,255,240,192,24,192,12,192, + 12,192,12,192,12,192,28,192,120,255,240,255,192,15,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,224,6,96, + 6,112,14,60,60,31,248,7,224,15,19,38,18,2,0,255, + 192,255,240,192,120,192,28,192,12,192,14,192,6,192,6,192, + 6,192,6,192,6,192,6,192,6,192,14,192,12,192,28,192, + 120,255,240,255,192,12,19,38,16,2,0,255,240,255,240,192, + 0,192,0,192,0,192,0,192,0,192,0,255,224,255,224,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,255,240,255, + 240,11,19,38,14,2,0,255,224,255,224,192,0,192,0,192, + 0,192,0,192,0,192,0,255,192,255,192,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,16,19,38, + 19,1,0,7,224,31,248,60,60,112,14,96,6,224,6,192, + 0,192,0,192,0,192,127,192,127,192,3,192,3,224,3,96, + 7,112,15,60,63,31,251,7,227,14,19,38,18,2,0,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,255, + 252,255,252,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,2,19,19,8,3,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,10,19, + 38,13,1,0,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,192,192,192,192, + 192,192,192,192,97,128,127,128,63,0,13,19,38,18,3,0, + 192,56,192,112,192,224,193,192,195,128,199,0,206,0,220,0, + 252,0,254,0,231,0,195,128,193,128,193,192,192,224,192,96, + 192,112,192,56,192,24,11,19,38,14,2,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,255,224, + 255,224,17,19,57,21,2,0,192,1,128,224,3,128,224,3, + 128,240,7,128,240,7,128,216,13,128,216,13,128,216,13,128, + 204,25,128,204,25,128,204,25,128,198,49,128,198,49,128,198, + 49,128,195,97,128,195,97,128,195,97,128,193,193,128,193,193, + 128,14,19,38,18,2,0,224,12,240,12,240,12,216,12,220, + 12,204,12,206,12,198,12,199,12,195,12,195,140,193,140,193, + 204,192,204,192,236,192,108,192,60,192,60,192,28,16,19,38, + 18,1,0,7,224,31,248,60,60,112,14,96,6,224,7,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,224,7,96, + 6,112,14,60,60,31,248,7,224,13,19,38,16,2,0,255, + 224,255,240,192,48,192,24,192,24,192,24,192,24,192,48,255, + 240,255,224,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,16,19,38,18,1,0,7,224,31,248,60, + 60,112,14,96,6,224,7,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,224,7,96,230,112,126,60,28,31,254,7, + 231,13,19,38,17,2,0,255,224,255,240,192,48,192,24,192, + 24,192,24,192,24,192,48,255,240,255,224,192,112,192,48,192, + 24,192,24,192,24,192,24,192,24,192,24,192,24,13,19,38, + 16,2,0,15,128,63,224,96,96,192,48,192,48,192,0,224, + 0,124,0,63,128,7,224,0,240,0,56,0,24,0,24,192, + 24,192,56,240,112,127,224,31,128,14,19,38,16,1,0,255, + 252,255,252,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,14,19,38,18,2,0,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,192,12,192,12,192,12,192, + 12,192,12,192,12,192,12,192,12,96,24,112,56,63,240,15, + 192,15,19,38,17,1,0,192,6,192,6,224,14,96,12,112, + 28,48,24,48,24,56,56,24,48,24,48,28,112,12,96,12, + 96,14,224,6,192,6,192,3,128,3,128,3,128,20,19,57, + 22,1,0,192,96,48,192,96,48,192,96,48,192,240,48,96, + 240,96,97,152,96,97,152,96,97,152,96,97,152,96,49,152, + 192,51,12,192,51,12,192,51,12,192,27,13,128,27,13,128, + 30,7,128,14,7,0,12,3,0,12,3,0,15,19,38,17, + 1,0,192,6,224,14,112,28,48,24,24,48,28,112,14,224, + 7,192,3,128,3,128,7,192,14,224,12,96,28,112,56,56, + 48,24,96,12,224,14,192,6,14,19,38,16,1,0,192,12, + 224,28,96,24,112,56,48,48,56,112,24,96,28,224,12,192, + 15,192,7,128,7,128,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,13,19,38,15,1,0,255,248,255,248,0,56, + 0,112,0,224,1,192,1,192,3,128,7,0,7,0,14,0, + 28,0,28,0,56,0,112,0,112,0,224,0,255,248,255,248, + 4,24,24,7,2,251,240,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,240,240,8,19, + 19,7,0,0,192,64,64,96,32,32,48,16,16,16,24,8, + 8,12,4,4,6,2,3,4,24,24,7,1,251,240,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,240,240,10,9,18,12,1,10,12,0,12,0,30, + 0,18,0,51,0,97,128,97,128,192,192,192,192,14,2,4, + 14,0,251,255,252,255,252,5,4,4,7,1,15,192,96,48, + 24,11,14,28,13,1,0,31,0,63,128,97,192,96,192,0, + 192,7,192,63,192,120,192,224,192,192,192,193,192,227,192,126, + 224,60,96,11,19,38,14,2,0,192,0,192,0,192,0,192, + 0,192,0,207,0,223,128,241,192,224,192,192,224,192,96,192, + 96,192,96,192,96,192,224,224,192,241,192,223,128,207,0,10, + 14,28,12,1,0,31,0,63,128,113,192,96,192,224,0,192, + 0,192,0,192,0,192,0,224,0,96,192,113,192,63,128,31, + 0,11,19,38,14,1,0,0,96,0,96,0,96,0,96,0, + 96,30,96,63,96,113,224,96,224,224,96,192,96,192,96,192, + 96,192,96,224,96,96,224,113,224,63,96,30,96,11,14,28, + 13,1,0,14,0,63,128,113,192,96,192,192,96,192,96,255, + 224,255,224,192,0,192,0,96,96,112,224,63,192,15,0,6, + 19,19,8,1,0,28,60,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,48,48,11,19,38,14,1,251,30,96, + 63,96,113,224,96,224,224,96,192,96,192,96,192,96,192,96, + 224,96,96,224,113,224,63,96,30,96,0,96,192,96,224,192, + 127,192,31,0,10,19,38,13,2,0,192,0,192,0,192,0, + 192,0,192,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 2,19,19,6,2,0,192,192,192,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,4,24,24,6,0,251,48, + 48,48,0,0,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,240,224,10,19,38,12,2,0,192,0,192, + 0,192,0,192,0,192,0,193,128,195,128,199,0,206,0,220, + 0,248,0,252,0,206,0,198,0,199,0,195,128,193,128,193, + 192,192,192,2,19,19,6,2,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,16,14,28,20, + 2,0,206,60,255,126,227,199,193,131,193,131,193,131,193,131, + 193,131,193,131,193,131,193,131,193,131,193,131,193,131,10,14, + 28,14,2,0,206,0,223,128,241,128,224,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 11,14,28,13,1,0,31,0,63,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,63,128, + 31,0,11,19,38,14,2,251,207,0,223,128,241,192,224,192, + 192,224,192,96,192,96,192,96,192,96,192,224,224,192,241,192, + 223,128,207,0,192,0,192,0,192,0,192,0,192,0,11,19, + 38,14,1,251,30,96,63,96,113,224,96,224,224,96,192,96, + 192,96,192,96,192,96,224,96,96,224,113,224,63,96,30,96, + 0,96,0,96,0,96,0,96,0,96,6,14,14,9,2,0, + 204,220,248,240,224,192,192,192,192,192,192,192,192,192,10,14, + 28,12,1,0,63,0,127,128,225,192,192,192,192,0,248,0, + 127,0,15,128,1,192,192,192,192,192,225,192,127,128,63,0, + 6,18,18,8,1,0,48,48,48,48,252,252,48,48,48,48, + 48,48,48,48,48,48,60,28,10,14,28,14,2,0,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,193,192,99,192,126,192,28,192,11,14,28,13,1,0, + 192,96,192,96,192,96,96,192,96,192,113,192,49,128,49,128, + 27,0,27,0,27,0,14,0,14,0,14,0,18,14,42,18, + 0,0,192,192,192,192,192,192,97,225,128,97,225,128,97,225, + 128,49,35,0,51,51,0,51,51,0,27,54,0,26,22,0, + 30,30,0,14,28,0,12,12,0,12,12,0,10,14,28,12, + 1,0,192,192,225,192,97,128,51,0,30,0,30,0,12,0, + 30,0,30,0,51,0,115,128,97,128,192,192,192,192,12,19, + 38,13,0,251,192,48,192,48,96,48,112,96,48,96,56,224, + 24,192,24,192,13,128,13,128,7,128,7,0,3,0,3,0, + 6,0,6,0,12,0,60,0,56,0,10,14,28,12,1,0, + 255,192,255,192,1,128,3,0,7,0,14,0,12,0,28,0, + 56,0,48,0,96,0,224,0,255,192,255,192,6,24,24,8, + 1,251,12,24,48,48,48,48,48,48,48,48,96,192,192,96, + 48,48,48,48,48,48,48,48,24,12,1,24,24,6,2,251, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,24,24,8,1,251,192,96, + 48,48,48,48,48,48,48,48,24,12,12,24,48,48,48,48, + 48,48,48,48,96,192,10,4,8,14,2,5,112,192,252,192, + 207,192,195,128,255}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=29 h=32 x= 4 y=22 dx=34 dy= 0 ascent=31 len=120 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =31 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24[10931] U8G_SECTION(".progmem.u8g_font_helvR24") = { + 0,39,48,251,245,25,5,215,14,105,32,255,249,31,249,25, + 249,0,0,0,9,0,1,3,25,25,9,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,64,64, + 0,0,224,224,224,224,8,8,8,12,2,15,231,231,231,231, + 231,231,66,66,17,23,69,19,1,0,3,135,0,3,135,0, + 3,6,0,3,6,0,7,14,0,7,14,0,127,255,128,127, + 255,128,127,255,128,14,28,0,14,28,0,12,24,0,28,56, + 0,28,56,0,255,255,0,255,255,0,255,255,0,56,112,0, + 56,112,0,48,96,0,48,96,0,112,224,0,112,224,0,16, + 31,62,18,1,252,1,128,1,128,1,128,15,240,31,248,61, + 188,113,142,113,142,225,142,225,128,225,128,113,128,125,128,63, + 192,31,240,7,252,1,254,1,158,1,143,1,135,225,135,225, + 135,113,142,113,142,61,188,63,248,15,240,1,128,1,128,1, + 128,1,128,26,24,96,29,1,0,0,0,48,0,31,0,112, + 0,127,128,96,0,115,192,224,0,224,192,192,0,192,225,192, + 0,192,225,128,0,192,227,128,0,224,195,0,0,115,199,0, + 0,127,134,0,0,31,14,0,0,0,12,0,0,0,28,62, + 0,0,24,127,128,0,56,243,128,0,48,193,192,0,113,192, + 192,0,97,192,192,0,225,192,192,0,192,193,192,1,192,227, + 128,1,128,127,128,3,128,62,0,18,23,69,22,2,0,7, + 192,0,15,224,0,30,112,0,60,56,0,56,56,0,56,56, + 0,60,112,0,30,240,0,15,224,0,7,192,0,15,128,0, + 63,192,0,121,199,0,112,231,0,224,246,0,224,126,0,224, + 60,0,224,28,0,240,62,0,120,127,0,127,247,128,63,227, + 192,15,0,0,3,8,8,6,2,15,224,224,224,224,224,224, + 224,64,7,31,31,11,2,249,6,12,12,24,24,56,48,112, + 112,112,96,224,224,224,224,224,224,224,224,224,96,112,112,112, + 48,56,24,24,12,12,6,7,31,31,11,1,249,192,96,96, + 48,48,56,24,28,28,28,12,14,14,14,14,14,14,14,14, + 12,12,28,28,24,24,56,48,112,96,96,192,10,11,22,13, + 1,15,12,0,12,0,76,128,237,192,127,128,63,0,30,0, + 63,0,115,128,225,192,64,128,17,16,48,19,1,1,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,3,9, + 9,9,3,251,224,224,224,224,32,96,96,192,128,8,2,2, + 11,1,8,255,255,3,4,4,9,3,0,224,224,224,224,9, + 24,48,9,0,0,1,128,1,128,1,128,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,8,0,24, + 0,24,0,24,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,15,24,48,18,1,0,7,192,31,240,63, + 248,60,120,120,60,112,28,112,28,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,112,60,60,120,63,248,31,240,7,192,8,24,24,18,3, + 0,3,7,7,15,63,255,255,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,15,24,48,18,1,0,7, + 192,31,240,63,248,120,60,112,28,240,14,224,14,224,14,0, + 14,0,28,0,60,0,120,0,240,3,224,7,192,31,0,60, + 0,120,0,112,0,224,0,224,0,255,254,255,254,255,254,15, + 24,48,18,1,0,7,192,31,240,63,248,56,56,112,28,112, + 28,112,28,112,28,0,28,0,56,3,248,3,240,3,248,0, + 60,0,30,0,14,224,14,224,14,224,14,112,28,120,60,63, + 248,31,240,7,192,16,24,48,18,0,0,0,24,0,56,0, + 120,0,120,0,248,1,248,3,184,3,184,7,56,14,56,14, + 56,28,56,56,56,56,56,112,56,224,56,255,255,255,255,255, + 255,0,56,0,56,0,56,0,56,0,56,15,24,48,18,1, + 0,63,252,63,252,63,252,56,0,56,0,56,0,112,0,112, + 0,119,192,127,240,127,248,120,124,112,28,0,30,0,14,0, + 14,0,14,224,14,224,30,240,28,120,124,127,248,63,240,15, + 128,15,24,48,18,1,0,3,192,15,240,31,248,60,56,56, + 28,112,28,112,0,112,0,96,0,227,192,239,240,255,248,248, + 60,240,28,240,14,224,14,224,14,96,14,112,14,112,28,56, + 60,63,248,31,240,7,192,15,24,48,18,1,0,255,254,255, + 254,255,254,0,14,0,28,0,24,0,56,0,112,0,112,0, + 224,0,224,1,192,1,192,3,128,3,128,7,0,7,0,7, + 0,14,0,14,0,14,0,28,0,28,0,28,0,15,24,48, + 18,1,0,7,192,31,240,63,248,56,60,112,28,112,28,112, + 28,112,28,120,60,60,120,31,240,15,224,63,248,120,60,112, + 28,224,14,224,14,224,14,224,14,240,28,120,60,63,248,31, + 240,7,192,15,24,48,18,1,0,7,192,31,240,63,248,120, + 124,112,60,240,28,224,30,224,14,224,14,224,14,224,30,224, + 30,112,62,127,254,63,238,15,206,0,14,0,28,224,28,240, + 60,120,120,63,240,63,224,15,128,3,18,18,9,4,0,224, + 224,224,224,0,0,0,0,0,0,0,0,0,0,224,224,224, + 224,3,22,22,9,4,251,224,224,224,224,0,0,0,0,0, + 0,0,0,0,224,224,224,224,32,96,96,192,128,16,16,32, + 19,2,0,0,3,0,15,0,63,1,252,7,224,31,128,254, + 0,240,0,240,0,254,0,31,128,7,224,1,252,0,127,0, + 15,0,3,15,9,18,19,2,4,255,254,255,254,255,254,0, + 0,0,0,0,0,255,254,255,254,255,254,16,16,32,19,1, + 0,192,0,240,0,254,0,63,128,7,224,1,248,0,127,0, + 15,0,15,0,127,1,248,7,224,63,128,254,0,240,0,192, + 0,14,25,50,18,2,0,7,192,31,240,63,248,120,56,112, + 28,240,28,224,28,224,28,0,28,0,56,0,56,0,112,0, + 224,1,224,1,192,3,128,3,128,3,128,3,128,0,0,0, + 0,3,128,3,128,3,128,3,128,29,30,120,34,1,251,0, + 7,192,0,0,63,248,0,0,255,254,0,3,240,63,128,7, + 192,7,192,15,0,3,224,30,0,1,224,28,0,0,240,56, + 15,140,112,56,31,220,56,112,60,252,56,112,112,124,56,96, + 224,56,24,224,224,56,24,225,224,56,24,225,192,112,56,225, + 192,112,56,225,192,112,112,225,192,224,112,225,224,224,224,112, + 243,243,192,112,255,127,128,120,62,127,0,60,0,0,0,30, + 0,0,0,31,0,0,0,15,128,0,0,3,224,120,0,1, + 255,248,0,0,127,224,0,20,25,75,22,1,0,0,240,0, + 0,240,0,0,248,0,1,248,0,1,248,0,3,156,0,3, + 156,0,3,156,0,7,158,0,7,14,0,7,14,0,15,15, + 0,15,15,0,14,7,0,30,7,128,31,255,128,31,255,128, + 63,255,192,60,3,192,56,1,192,120,1,224,120,1,224,112, + 0,224,240,0,240,240,0,240,17,25,75,22,3,0,255,240, + 0,255,252,0,255,254,0,224,62,0,224,15,0,224,15,0, + 224,7,0,224,7,0,224,15,0,224,14,0,224,62,0,255, + 252,0,255,252,0,255,254,0,224,31,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,7,128,224,15,0, + 255,254,0,255,254,0,255,248,0,20,25,75,24,2,0,1, + 252,0,7,255,0,15,255,128,31,7,192,60,1,224,56,0, + 224,112,0,240,112,0,112,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,112,240,0,112,112,0,240,120,0,224,60,1,224,63,7, + 192,31,255,128,7,254,0,1,248,0,18,25,75,24,3,0, + 255,240,0,255,252,0,255,254,0,224,31,0,224,15,0,224, + 7,128,224,3,128,224,3,128,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,3,192,224,3,128,224,3,128,224,7,128,224,15,0,224, + 30,0,255,254,0,255,252,0,255,240,0,17,25,75,22,3, + 0,255,255,0,255,255,0,255,255,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,128,255,255,128,255,255,128,16,25,50,20, + 3,0,255,255,255,255,255,255,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,22,25,75,25,1,0,0,254,0,3,255,128, + 15,255,192,31,131,240,62,0,240,60,0,120,120,0,56,112, + 0,56,240,0,0,224,0,0,224,0,0,224,0,0,224,15, + 252,224,15,252,224,15,252,224,0,28,240,0,28,112,0,28, + 120,0,60,56,0,60,60,0,252,31,1,252,15,255,220,7, + 255,28,1,252,28,18,25,75,24,3,0,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255, + 255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,3,25,25,9,3,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,13,25,50,16,1,0,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,224,56,224,56,224, + 56,224,56,240,120,120,240,127,240,63,224,31,128,20,25,75, + 22,3,0,224,3,192,224,7,128,224,15,0,224,30,0,224, + 60,0,224,120,0,224,240,0,225,224,0,227,192,0,231,192, + 0,239,128,0,255,192,0,255,192,0,249,224,0,240,240,0, + 224,112,0,224,120,0,224,60,0,224,28,0,224,30,0,224, + 15,0,224,7,128,224,3,192,224,3,224,224,1,240,14,25, + 50,18,3,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,21,25,75,27,3,0,240,0,120,240, + 0,120,248,0,248,248,0,248,252,1,248,252,1,248,252,1, + 248,236,1,184,238,3,184,238,3,184,230,3,56,231,7,56, + 231,7,56,227,6,56,227,142,56,227,142,56,227,142,56,225, + 140,56,225,220,56,225,220,56,224,216,56,224,248,56,224,248, + 56,224,112,56,224,112,56,19,25,75,24,2,0,240,0,224, + 240,0,224,248,0,224,252,0,224,252,0,224,254,0,224,239, + 0,224,231,0,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,56,224,224,60,224, + 224,28,224,224,30,224,224,15,224,224,7,224,224,7,224,224, + 3,224,224,1,224,224,1,224,23,25,75,25,1,0,0,254, + 0,3,255,128,15,239,224,31,1,240,62,0,248,60,0,120, + 120,0,60,112,0,28,240,0,30,224,0,14,224,0,14,224, + 0,14,224,0,14,224,0,14,224,0,14,224,0,14,240,0, + 30,240,0,30,120,0,60,60,0,120,62,0,248,31,1,240, + 15,239,224,3,255,128,0,254,0,17,25,75,22,3,0,255, + 248,0,255,254,0,255,255,0,224,15,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,7,128, + 224,15,0,255,255,0,255,254,0,255,248,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,23,26,78,26,1,255, + 0,254,0,3,255,128,15,239,224,31,1,240,62,0,248,60, + 0,120,120,0,60,112,0,28,240,0,30,224,0,14,224,0, + 14,224,0,14,224,0,14,224,0,14,224,0,14,224,0,14, + 240,0,30,240,2,30,120,7,60,60,7,184,62,3,248,31, + 1,240,15,239,248,3,255,188,0,254,30,0,0,12,19,25, + 75,24,3,0,255,252,0,255,255,0,255,255,128,224,7,128, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 3,192,224,3,128,224,15,128,255,255,0,255,254,0,255,255, + 0,224,15,128,224,7,128,224,3,128,224,3,192,224,3,192, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,224,19, + 25,75,22,1,0,3,248,0,15,254,0,31,255,0,60,15, + 128,56,3,192,112,1,192,112,1,192,112,0,0,120,0,0, + 124,0,0,63,192,0,31,248,0,7,255,0,0,127,128,0, + 15,192,0,1,224,0,0,224,224,0,224,240,0,224,112,1, + 224,120,1,192,62,7,192,63,255,128,15,254,0,3,248,0, + 19,25,75,20,0,0,255,255,224,255,255,224,255,255,224,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,18,25,75,24,3,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,25,75,22,1,0,240,1,224,240,1,224,240,1, + 224,112,1,192,120,3,192,120,3,192,56,3,128,56,3,128, + 60,7,128,28,7,0,28,7,0,30,15,0,14,14,0,14, + 14,0,15,14,0,7,28,0,7,28,0,7,156,0,3,184, + 0,3,184,0,3,184,0,1,240,0,1,240,0,0,224,0, + 0,224,0,29,25,100,31,1,0,240,7,0,120,240,7,0, + 120,240,15,128,120,112,15,128,112,112,15,128,112,120,29,192, + 240,120,29,192,240,56,29,192,224,56,29,192,224,56,56,224, + 224,60,56,225,224,28,56,225,192,28,48,225,192,28,112,113, + 192,28,112,113,192,14,112,115,128,14,224,59,128,14,224,59, + 128,14,224,59,128,7,224,63,128,7,192,31,0,7,192,31, + 0,7,192,31,0,3,128,14,0,3,128,14,0,20,25,75, + 22,1,0,248,0,240,120,1,224,60,3,192,28,3,192,30, + 7,128,15,7,0,15,15,0,7,158,0,3,156,0,3,252, + 0,1,248,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,156,0,7,158,0,7,14,0,15,15,0,30,7,128,30, + 7,128,60,3,192,120,1,224,120,1,224,240,0,240,21,25, + 75,22,0,0,240,0,120,120,0,240,120,0,224,60,1,224, + 28,1,192,30,3,192,14,7,128,15,7,128,7,143,0,3, + 142,0,3,222,0,1,220,0,1,252,0,0,248,0,0,248, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,18, + 25,75,20,1,0,127,255,192,127,255,192,127,255,192,0,7, + 128,0,15,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,1,224,0,1,224,0,3,192,0,7, + 128,0,7,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 6,32,32,9,2,249,252,252,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,252,252,9,24,48,9,0,0,192,0,192,0, + 96,0,96,0,96,0,48,0,48,0,48,0,16,0,24,0, + 24,0,24,0,12,0,12,0,12,0,6,0,6,0,6,0, + 2,0,3,0,3,0,3,0,1,128,1,128,6,32,32,9, + 1,249,252,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 252,252,12,13,26,16,1,11,6,0,15,0,15,0,31,128, + 25,128,25,128,57,192,48,192,112,224,96,96,96,96,224,112, + 192,48,18,2,6,18,0,250,255,255,192,255,255,192,6,5, + 5,11,1,20,224,240,112,56,28,16,18,36,18,1,0,15, + 224,63,248,60,120,112,60,112,28,0,28,0,60,1,252,31, + 252,126,28,120,28,240,28,224,28,224,60,224,124,121,254,127, + 223,63,143,15,25,50,18,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,227,224,239,240,255,248,248,60,240, + 28,240,30,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,240,28,252,60,255,248,239,240,231,224,14,18,36,16,1, + 0,7,192,31,240,63,248,56,60,112,28,112,28,224,0,224, + 0,224,0,224,0,224,0,224,28,224,28,112,28,120,56,63, + 248,31,240,7,192,15,25,50,18,1,0,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,7,206,31,238,63,254,124, + 62,112,30,240,30,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,240,30,120,62,127,254,63,238,15,206,15,18,36, + 18,2,0,7,192,31,240,63,248,120,60,112,28,240,14,224, + 14,224,14,255,254,255,254,224,0,224,0,240,14,112,30,120, + 60,63,248,31,240,7,192,8,25,25,9,1,0,15,31,60, + 56,56,56,56,255,255,255,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,15,25,50,18,1,249,7,206,31,238, + 63,254,124,62,112,30,240,30,224,14,224,14,224,14,224,14, + 224,14,224,14,240,30,112,62,120,62,63,254,31,238,7,142, + 0,14,224,14,224,28,240,28,124,120,63,248,31,224,14,25, + 50,18,2,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,227,224,239,240,255,248,248,60,240,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,3,25,25,7,2,0,224,224,224,224, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,6,32,32,7,255,249,28,28,28,28,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,60,252,248,15,25,50,16,1, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 120,224,240,225,224,227,192,231,128,239,0,255,0,255,0,251, + 128,243,192,225,192,225,224,224,224,224,240,224,120,224,56,224, + 60,224,30,3,25,25,7,2,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,23,18,54,27,2,0,227,192,240,239,243,252,255,247, + 252,248,126,30,240,60,14,224,56,14,224,56,14,224,56,14, + 224,56,14,224,56,14,224,56,14,224,56,14,224,56,14,224, + 56,14,224,56,14,224,56,14,224,56,14,224,56,14,14,18, + 36,18,2,0,227,224,239,248,255,248,248,60,240,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,15,18,36,18,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,224,14,240,30,112,28,120,60,63,248,31,240, + 7,192,15,25,50,18,2,249,3,192,239,240,255,248,248,60, + 240,28,240,30,224,14,224,14,224,14,224,14,224,14,224,14, + 240,30,240,28,248,60,255,248,239,240,231,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,15,25,50,18,1,249, + 7,192,31,238,63,254,124,62,112,30,240,30,224,14,224,14, + 224,14,224,14,224,14,224,14,240,30,112,30,120,62,63,254, + 31,238,15,206,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,8,18,18,11,2,0,231,239,255,252,240,240,224,224, + 224,224,224,224,224,224,224,224,224,224,13,18,36,16,2,0, + 15,128,63,224,127,224,112,240,224,112,224,0,112,0,126,0, + 63,192,7,240,0,240,0,120,224,56,224,56,240,112,127,240, + 127,224,31,128,8,22,22,9,1,0,56,56,56,56,255,255, + 255,56,56,56,56,56,56,56,56,56,56,56,56,60,63,31, + 14,18,36,18,2,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,60,240,124,127,252,127,220,31,28,15,18,36,16,0,0, + 224,14,224,14,112,28,112,28,112,28,56,56,56,56,56,56, + 28,112,28,112,28,112,14,224,14,224,14,224,7,192,7,192, + 3,128,3,128,23,18,54,23,0,0,224,56,14,224,56,14, + 112,124,28,112,124,28,112,108,28,56,238,28,56,238,56,56, + 238,56,56,198,56,24,198,48,29,199,112,29,199,112,29,199, + 112,13,131,96,15,131,224,15,131,224,7,1,192,7,1,192, + 15,18,36,16,0,0,240,30,120,28,56,56,60,112,28,112, + 14,224,15,224,7,192,3,128,7,192,7,192,15,224,30,224, + 28,112,56,120,56,56,112,28,240,30,14,25,50,16,1,249, + 224,28,224,28,240,56,112,56,112,56,112,112,56,112,56,112, + 56,224,60,224,28,224,29,192,29,192,15,192,15,128,15,128, + 7,0,7,0,7,0,14,0,14,0,28,0,124,0,120,0, + 112,0,14,18,36,16,1,0,127,248,127,248,127,248,0,120, + 0,240,0,224,1,192,3,192,7,128,7,0,14,0,28,0, + 60,0,120,0,112,0,255,252,255,252,255,252,8,32,32,11, + 1,249,15,31,28,24,24,24,24,24,24,24,24,24,56,56, + 112,224,224,112,56,56,24,24,24,24,24,24,24,24,24,28, + 31,15,2,31,31,9,3,249,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,8,32,32,11,1,249,240,248,56, + 24,24,24,24,24,24,24,24,24,28,28,14,7,7,14,28, + 28,24,24,24,24,24,24,24,24,24,56,248,240,14,6,12, + 19,2,9,24,0,124,12,127,12,199,220,193,248,0,240,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,9,0,1,3,25,25,11,4,249,224,224,224,224, + 0,0,64,64,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,14,25,50,19,2,252,0,32,0,96,0, + 64,7,224,31,240,60,248,120,188,112,156,112,156,225,128,225, + 0,225,0,227,0,227,0,226,12,226,28,118,28,124,60,60, + 120,31,240,15,224,8,0,24,0,16,0,16,0,15,24,48, + 19,1,0,3,192,15,248,31,252,60,60,120,30,112,14,112, + 14,112,0,112,0,56,0,56,0,255,192,255,192,12,0,14, + 0,14,0,12,0,28,0,24,0,56,0,115,134,255,254,255, + 254,96,124,12,13,26,18,3,5,230,48,255,240,127,240,112, + 224,96,96,224,112,224,112,224,112,96,96,112,224,127,240,255, + 240,230,48,16,24,48,18,1,0,224,7,224,7,112,14,112, + 14,56,28,56,28,28,56,28,56,14,112,14,112,7,224,127, + 254,127,254,127,254,1,192,1,192,127,254,127,254,127,254,1, + 192,1,192,1,192,1,192,1,192,2,32,32,9,3,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,15, + 32,64,18,1,249,3,192,15,240,31,248,28,120,56,60,56, + 28,56,28,60,0,30,0,31,128,63,224,113,240,224,248,224, + 124,224,28,224,30,112,14,124,14,62,14,31,28,15,156,3, + 248,1,240,0,240,0,120,112,56,112,56,120,56,56,112,63, + 240,31,224,7,128,8,3,3,11,1,22,231,231,231,24,25, + 75,25,0,0,0,254,0,3,255,128,7,1,224,12,0,112, + 24,0,24,48,126,12,96,255,134,97,193,198,195,128,195,195, + 0,3,199,0,3,134,0,1,134,0,1,134,0,1,134,0, + 1,199,0,3,195,128,195,97,225,198,96,255,134,48,62,12, + 24,0,24,28,0,56,7,1,224,3,255,128,0,254,0,10, + 15,30,12,1,10,63,0,119,128,97,128,1,128,7,128,127, + 128,225,128,193,128,195,128,231,128,125,192,0,0,0,0,255, + 192,255,192,12,9,18,18,3,5,28,112,56,224,113,192,227, + 128,195,0,227,128,113,192,56,224,28,112,16,9,18,19,1, + 3,255,255,255,255,255,255,0,7,0,7,0,7,0,7,0, + 7,0,7,8,2,2,11,1,8,255,255,24,25,75,25,0, + 0,0,126,0,3,255,128,7,1,224,12,0,112,24,0,24, + 48,0,12,97,255,6,97,255,134,193,129,195,193,128,195,193, + 128,195,129,129,129,129,255,1,129,252,1,129,142,1,193,134, + 3,193,131,3,97,129,134,97,129,198,48,0,12,24,0,24, + 28,0,56,7,1,224,3,255,128,0,126,0,9,2,4,11, + 1,22,255,128,255,128,9,9,18,13,2,15,62,0,127,0, + 227,128,193,128,193,128,193,128,227,128,127,0,62,0,17,21, + 63,19,1,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,1,192,0,255,255,128,255,255,128,255, + 255,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,0,0,0,0,0,0,255,255,128,255,255,128, + 255,255,128,9,15,30,11,1,9,30,0,127,0,99,0,193, + 128,193,128,1,128,3,0,7,0,30,0,56,0,112,0,224, + 0,192,0,255,128,255,128,9,15,30,11,1,9,62,0,127, + 0,227,128,193,128,193,128,3,128,15,0,15,0,3,128,1, + 128,193,128,193,128,227,128,127,0,62,0,7,5,5,11,3, + 22,30,60,56,112,224,14,24,48,19,2,250,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,60,240,124,255,252,255,220,255,28, + 224,0,224,0,224,0,224,0,224,0,224,0,16,30,60,17, + 1,251,7,255,31,255,63,140,63,140,127,140,127,140,255,140, + 255,140,255,140,255,140,127,140,127,140,63,140,63,140,31,140, + 3,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140, + 1,140,1,140,1,140,1,140,1,140,1,140,1,140,4,4, + 4,9,3,11,96,240,240,96,7,7,7,11,2,249,24,24, + 60,14,6,206,124,5,15,15,11,2,9,24,56,248,248,24, + 24,24,24,24,24,24,24,24,24,24,10,15,30,12,1,10, + 30,0,127,128,97,128,225,192,192,192,192,192,192,192,192,192, + 225,192,97,128,127,128,30,0,0,0,255,192,255,192,12,9, + 18,18,3,5,227,128,113,192,56,224,28,112,12,48,28,112, + 56,224,113,192,227,128,25,25,100,28,1,0,0,0,48,0, + 24,0,112,0,56,0,96,0,248,0,224,0,248,1,192,0, + 24,1,128,0,24,3,128,0,24,3,0,0,24,7,0,0, + 24,14,0,0,24,12,0,0,24,28,6,0,24,24,14,0, + 24,56,30,0,24,112,62,0,24,96,118,0,0,224,102,0, + 1,192,198,0,1,129,198,0,3,131,134,0,3,3,255,128, + 7,3,255,128,6,0,6,0,14,0,6,0,12,0,6,0, + 25,25,100,28,1,0,0,0,96,0,24,0,224,0,56,0, + 192,0,248,1,128,0,248,3,128,0,24,3,0,0,24,6, + 0,0,24,14,0,0,24,12,0,0,24,28,0,0,24,24, + 0,0,24,56,60,0,24,48,255,0,24,112,195,128,24,97, + 129,128,24,193,129,128,1,192,3,128,1,128,7,0,3,128, + 14,0,3,0,60,0,6,0,112,0,14,0,224,0,12,1, + 192,0,28,1,255,128,24,1,255,128,25,24,96,28,1,0, + 62,0,14,0,127,0,12,0,99,128,24,0,193,128,56,0, + 193,128,48,0,3,128,96,0,15,0,224,0,15,128,192,0, + 1,193,128,0,0,195,128,0,192,195,6,0,192,199,14,0, + 97,206,30,0,127,140,62,0,30,24,118,0,0,56,102,0, + 0,48,198,0,0,97,198,0,0,227,134,0,1,195,255,128, + 1,131,255,128,3,0,6,0,7,0,6,0,6,0,6,0, + 14,25,50,19,3,249,3,128,3,128,3,128,3,128,0,0, + 0,0,3,128,3,128,3,128,7,128,7,0,15,0,30,0, + 60,0,120,0,112,0,240,0,224,28,224,28,224,28,240,60, + 120,120,127,240,63,224,7,128,20,31,93,22,1,0,3,192, + 0,1,224,0,0,224,0,0,112,0,0,56,0,0,0,0, + 0,240,0,0,240,0,0,240,0,1,248,0,1,248,0,3, + 252,0,3,156,0,3,156,0,7,158,0,7,14,0,7,14, + 0,15,15,0,14,15,0,14,7,0,30,7,128,31,255,128, + 31,255,128,63,255,192,60,3,192,56,1,192,120,1,224,120, + 1,224,112,0,224,240,0,240,240,0,240,20,31,93,22,1, + 0,0,60,0,0,120,0,0,112,0,0,224,0,1,192,0, + 0,0,0,0,240,0,0,240,0,0,240,0,1,248,0,1, + 248,0,3,252,0,3,156,0,3,156,0,7,158,0,7,14, + 0,7,14,0,15,15,0,15,15,0,14,7,0,30,7,128, + 31,255,128,31,255,128,63,255,192,60,3,192,120,1,192,120, + 1,224,120,1,224,112,0,224,240,0,240,240,0,240,20,31, + 93,22,1,0,0,64,0,0,224,0,1,240,0,3,184,0, + 7,28,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,30,90,22,1,0,1,198,0,3,254,0,7,252,0, + 6,56,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,30,90,22,1,0,3,156,0,3,156,0,3,156,0, + 0,0,0,0,0,0,0,240,0,0,240,0,0,240,0,1, + 248,0,1,248,0,3,252,0,3,156,0,3,156,0,7,158, + 0,7,14,0,7,14,0,15,15,0,15,15,0,14,7,0, + 30,7,128,31,255,128,31,255,128,63,255,192,60,3,192,56, + 1,192,120,1,224,120,1,224,112,0,224,240,0,240,240,0, + 240,20,31,93,22,1,0,0,240,0,1,152,0,1,8,0, + 1,8,0,1,152,0,0,240,0,0,0,0,0,240,0,0, + 240,0,1,248,0,1,248,0,3,252,0,3,156,0,3,156, + 0,7,158,0,7,14,0,7,14,0,15,15,0,14,15,0, + 14,7,0,30,7,128,31,255,128,31,255,128,63,255,192,60, + 3,192,56,1,192,120,1,224,120,1,224,112,0,224,240,0, + 240,240,0,240,29,25,100,32,1,0,0,127,255,248,0,127, + 255,248,0,255,255,248,0,227,128,0,1,195,128,0,1,195, + 128,0,3,195,128,0,3,131,128,0,3,131,128,0,7,131, + 128,0,7,3,128,0,7,3,255,240,15,3,255,240,14,3, + 255,240,30,3,128,0,31,255,128,0,31,255,128,0,63,255, + 128,0,56,3,128,0,120,3,128,0,120,3,128,0,112,3, + 128,0,240,3,255,248,224,3,255,248,224,3,255,248,20,32, + 96,23,2,249,1,248,0,7,254,0,15,255,128,31,7,128, + 60,3,192,120,1,224,112,0,224,112,0,224,240,0,0,240, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,240,0,112,240,0,112,112,0,240,112,0,224,120,1,224, + 60,3,192,31,7,192,15,255,128,7,254,0,1,248,0,0, + 96,0,0,96,0,0,240,0,0,56,0,0,24,0,3,56, + 0,1,240,0,17,31,93,22,3,0,15,0,0,7,128,0, + 3,128,0,1,192,0,0,224,0,0,0,0,255,255,0,255, + 255,0,255,255,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,255,255,0, + 255,255,0,255,255,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,255,255, + 128,255,255,128,255,255,128,17,31,93,22,3,0,0,120,0, + 0,240,0,0,224,0,1,192,0,3,128,0,0,0,0,255, + 255,0,255,255,0,255,255,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 255,255,0,255,255,0,255,255,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,255,255,128,255,255,128,255,255,128,17,31,93,22,3,0, + 0,128,0,1,192,0,3,224,0,7,112,0,14,56,0,0, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,0,255,255,0,255,255,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,255,255,128,255,255,128,255,255,128,17,30,90, + 22,3,0,28,56,0,28,56,0,28,56,0,0,0,0,0, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,0,255,255,0,255,255,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,255,255,128,255,255,128,255,255,128,7,31,31, + 9,0,0,240,120,56,28,14,0,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,7,31,31,9,2,0,30,60,56,112,224,0,112,112, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,9,31,62,9,0,0,8,0,28, + 0,62,0,119,0,227,128,0,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,9,30,60,9,0, + 0,227,128,227,128,227,128,0,0,0,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,21,25,75, + 23,0,0,31,254,0,31,255,128,31,255,192,28,3,224,28, + 0,224,28,0,240,28,0,112,28,0,112,28,0,56,28,0, + 56,28,0,56,255,192,56,255,192,56,28,0,56,28,0,56, + 28,0,56,28,0,120,28,0,112,28,0,112,28,0,240,28, + 0,224,28,3,192,31,255,192,31,255,128,31,254,0,19,30, + 90,24,2,0,1,198,0,3,254,0,7,252,0,6,56,0, + 0,0,0,240,0,224,248,0,224,248,0,224,252,0,224,252, + 0,224,254,0,224,239,0,224,231,0,224,231,128,224,227,192, + 224,227,192,224,225,224,224,224,224,224,224,240,224,224,120,224, + 224,56,224,224,60,224,224,28,224,224,30,224,224,15,224,224, + 7,224,224,7,224,224,3,224,224,1,224,224,1,224,23,31, + 93,25,1,0,0,240,0,0,120,0,0,56,0,0,28,0, + 0,14,0,0,0,0,0,254,0,3,255,128,15,255,224,31, + 1,240,62,0,248,60,0,120,120,0,60,112,0,28,112,0, + 28,240,0,30,224,0,14,224,0,14,224,0,14,224,0,14, + 224,0,14,240,0,30,240,0,30,112,0,28,120,0,60,60, + 0,120,62,0,248,31,1,240,15,255,224,3,255,128,0,254, + 0,23,31,93,25,1,0,0,15,0,0,30,0,0,28,0, + 0,56,0,0,112,0,0,0,0,0,254,0,3,255,128,15, + 255,224,31,1,240,62,0,248,60,0,120,120,0,60,112,0, + 28,112,0,28,240,0,30,224,0,14,224,0,14,224,0,14, + 224,0,14,224,0,14,240,0,30,240,0,30,112,0,28,120, + 0,60,60,0,120,62,0,248,31,1,240,15,255,224,3,255, + 128,0,254,0,23,31,93,25,1,0,0,16,0,0,56,0, + 0,124,0,0,238,0,1,199,0,0,0,0,0,254,0,3, + 255,128,15,255,224,31,1,240,62,0,248,60,0,120,120,0, + 60,112,0,28,112,0,28,240,0,30,224,0,14,224,0,14, + 224,0,14,224,0,14,224,0,14,240,0,30,240,0,30,112, + 0,28,120,0,60,60,0,120,62,0,248,31,1,240,15,255, + 224,3,255,128,0,254,0,23,30,90,25,1,0,0,113,128, + 0,255,128,1,255,0,1,142,0,0,0,0,0,254,0,3, + 255,128,15,255,224,31,1,240,62,0,248,60,0,120,120,0, + 60,112,0,28,112,0,28,240,0,30,224,0,14,224,0,14, + 224,0,14,224,0,14,224,0,14,240,0,30,240,0,30,112, + 0,28,120,0,60,60,0,120,62,0,248,31,1,240,15,255, + 224,3,255,128,0,254,0,23,29,87,25,1,0,1,195,128, + 1,195,128,1,195,128,0,0,0,0,254,0,3,255,128,15, + 255,224,31,1,240,62,0,248,60,0,120,120,0,60,112,0, + 28,112,0,28,240,0,30,224,0,14,224,0,14,224,0,14, + 224,0,14,224,0,14,240,0,30,240,0,30,112,0,28,120, + 0,60,60,0,120,62,0,248,31,1,240,15,255,224,3,255, + 128,0,254,0,15,15,30,19,2,1,64,4,224,14,240,30, + 120,60,60,120,31,240,15,224,7,192,7,192,15,224,30,240, + 60,120,120,60,240,30,96,12,23,25,75,25,1,0,0,254, + 6,3,255,140,15,255,248,31,1,240,62,0,248,60,0,248, + 120,1,188,112,3,28,112,6,28,240,6,30,224,12,14,224, + 24,14,224,48,14,224,96,14,224,192,14,225,128,30,243,0, + 30,118,0,28,124,0,60,60,0,120,62,0,248,63,1,240, + 111,255,224,195,255,128,0,254,0,18,31,93,24,3,0,7, + 128,0,3,192,0,1,192,0,0,224,0,0,112,0,0,0, + 0,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,240,3,192,120,7,128, + 124,15,128,63,255,0,31,254,0,3,240,0,18,31,93,24, + 3,0,0,120,0,0,240,0,0,224,0,1,192,0,3,128, + 0,0,0,0,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,240,3,192, + 120,7,128,124,15,128,63,255,0,31,254,0,3,240,0,18, + 31,93,24,3,0,0,64,0,0,224,0,1,240,0,3,184, + 0,7,28,0,0,0,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,18,30,90,24,3,0,14,28,0,14,28,0,14,28, + 0,0,0,0,0,0,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,31,93,22,1,0,0,60,0,0,120,0,0,112, + 0,0,224,0,1,192,0,0,0,0,224,0,224,240,1,224, + 112,1,192,120,3,192,56,3,128,60,7,128,28,15,0,30, + 15,0,15,30,0,7,28,0,7,188,0,3,184,0,3,248, + 0,1,240,0,1,240,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,17,25,75,22,3,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,255,248,0,255,254,0, + 255,255,0,224,15,0,224,7,0,224,7,128,224,3,128,224, + 3,128,224,7,128,224,7,0,224,15,0,255,254,0,255,252, + 0,255,248,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,14,25,50,20,4,0,15,128,63,224, + 127,240,120,240,240,120,224,56,224,56,224,56,224,120,224,240, + 227,224,227,224,227,240,224,120,224,60,224,28,224,28,224,28, + 224,28,224,28,224,56,224,120,231,240,231,224,231,128,16,25, + 50,18,1,0,15,0,7,128,3,128,1,192,0,224,0,0, + 0,0,15,224,63,248,60,124,112,28,112,28,0,28,0,28, + 0,252,31,252,127,156,120,28,240,28,224,28,224,60,224,124, + 121,252,127,223,63,143,16,25,50,18,1,0,0,240,1,224, + 1,192,3,128,7,0,0,0,0,0,15,224,63,248,60,124, + 112,28,112,28,0,28,0,28,0,252,31,252,127,156,120,28, + 240,28,224,28,224,60,224,124,120,252,127,223,63,143,16,25, + 50,18,1,0,1,0,3,128,7,192,14,224,28,112,0,0, + 0,0,15,224,63,248,60,124,112,28,112,28,0,28,0,28, + 0,252,31,252,127,156,120,28,240,28,224,28,224,60,224,124, + 120,252,127,223,63,143,16,24,48,18,1,0,7,24,15,248, + 31,240,24,224,0,0,0,0,15,224,63,248,60,124,112,28, + 112,28,0,28,0,28,0,252,31,252,127,156,120,28,240,28, + 224,28,224,60,224,124,120,252,127,223,63,143,16,23,46,18, + 1,0,14,112,14,112,14,112,0,0,0,0,15,224,63,248, + 60,252,112,28,112,28,0,28,0,28,0,252,31,252,127,156, + 120,28,240,28,224,28,224,60,224,124,121,252,127,223,63,143, + 16,25,50,18,1,0,3,128,6,192,4,64,4,64,6,192, + 3,128,0,0,15,224,63,248,60,124,112,28,112,28,0,28, + 0,28,0,252,31,252,127,156,120,28,240,28,224,28,224,60, + 224,124,120,252,127,223,63,143,26,18,72,29,1,0,7,192, + 248,0,31,241,254,0,60,127,143,0,112,62,3,128,112,30, + 3,128,0,28,1,192,0,28,1,192,0,252,1,192,15,255, + 255,192,63,255,255,192,126,31,255,192,240,28,0,0,224,28, + 1,192,224,30,1,192,224,126,3,128,248,247,143,0,127,231, + 255,0,63,129,252,0,14,25,50,17,1,249,7,192,31,240, + 63,248,56,56,112,28,112,28,224,0,224,0,224,0,224,0, + 224,0,224,28,224,28,112,56,120,120,63,240,31,224,7,128, + 3,0,3,0,7,128,1,192,0,192,25,192,15,128,15,25, + 50,18,1,0,30,0,15,0,7,0,3,128,1,192,0,0, + 0,0,7,192,31,240,62,120,120,28,112,28,240,14,224,14, + 224,14,255,254,255,254,224,0,224,0,224,14,112,14,120,28, + 60,124,31,240,15,224,15,25,50,18,1,0,1,224,3,192, + 3,128,7,0,14,0,0,0,0,0,7,192,31,240,60,120, + 120,28,112,28,240,14,224,14,224,14,255,254,255,254,224,0, + 224,0,224,14,112,14,120,28,60,124,31,240,15,224,15,25, + 50,18,1,0,1,0,3,128,7,192,14,224,28,112,0,0, + 0,0,7,192,31,240,60,120,120,28,112,28,240,14,224,14, + 224,14,255,254,255,254,224,0,224,0,224,14,112,14,120,28, + 60,124,31,240,7,192,15,23,46,18,1,0,28,112,28,112, + 28,112,0,0,0,0,7,192,31,240,60,120,120,28,112,28, + 240,14,224,14,224,14,255,254,255,254,224,0,224,0,224,14, + 112,14,120,28,60,124,31,240,7,192,7,25,25,9,0,0, + 240,120,56,28,14,0,0,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,7,25,25,9,2,0,30, + 60,56,112,224,0,0,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,112,112,112,9,25,50,9,0,0,8,0, + 28,0,62,0,119,0,227,128,0,0,0,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 8,23,23,9,1,0,231,231,231,0,0,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,15,25,50, + 19,1,0,120,64,60,224,31,192,15,128,31,128,59,192,17, + 224,7,240,31,248,63,248,120,60,112,28,112,28,224,14,224, + 14,224,14,224,14,224,14,224,14,112,28,112,28,120,60,63, + 248,31,240,7,192,14,24,48,18,2,0,14,48,31,240,63, + 224,49,192,0,0,0,0,3,192,239,240,255,248,248,60,240, + 28,240,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,15,25,50,19,1, + 0,30,0,15,0,7,0,3,128,1,192,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,112,28,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,112,28,120,60,63,248,31, + 240,7,192,15,25,50,19,1,0,1,224,3,192,3,128,7, + 0,14,0,0,0,0,0,7,192,31,240,63,248,120,60,112, + 28,112,28,224,14,224,14,224,14,224,14,224,14,224,14,112, + 28,112,28,120,60,63,248,31,240,7,192,15,25,50,19,1, + 0,1,0,3,128,7,192,14,224,28,112,0,0,0,0,7, + 192,31,240,63,248,120,60,112,28,112,28,224,14,224,14,224, + 14,224,14,224,14,224,14,112,28,112,28,120,60,63,248,31, + 240,7,192,15,24,48,19,1,0,14,48,31,240,63,224,49, + 192,0,0,0,0,7,192,31,240,63,248,120,60,112,28,112, + 28,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,120,60,63,248,31,240,7,192,15,23,46,19,1,0,28, + 112,28,112,28,112,0,0,0,0,7,192,31,240,63,248,120, + 60,112,28,112,28,224,14,224,14,224,14,224,14,224,14,224, + 14,112,28,112,28,120,60,63,248,31,240,7,192,15,15,30, + 19,2,1,3,128,3,128,3,128,0,0,0,0,0,0,255, + 254,255,254,255,254,0,0,0,0,0,0,3,128,3,128,3, + 128,16,18,36,19,2,0,7,195,31,246,63,252,120,120,112, + 28,112,60,224,110,224,206,225,142,227,14,230,14,236,14,120, + 28,112,28,56,60,127,248,223,240,135,192,14,25,50,19,2, + 0,30,0,15,0,7,0,3,128,1,192,0,0,0,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,60,224,60,240,252,127,252,63, + 220,15,0,14,25,50,19,2,0,1,224,3,192,3,128,7, + 0,14,0,0,0,0,0,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 60,224,60,240,252,127,252,63,220,15,0,14,25,50,19,2, + 0,1,0,3,128,7,192,14,224,28,112,0,0,0,0,224, + 28,224,28,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,60,224,60,240,252,127,252,63, + 220,15,0,14,23,46,19,2,0,28,224,28,224,28,224,0, + 0,0,0,224,28,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,28,224,28,224,60,224,60,240, + 252,127,252,63,220,15,0,14,32,64,17,1,249,0,240,1, + 224,1,192,3,128,7,0,0,0,0,0,224,28,224,28,224, + 60,112,56,112,56,112,56,120,112,56,112,56,240,60,224,28, + 224,29,192,29,192,15,192,15,128,15,128,7,0,7,0,7, + 0,14,0,14,0,30,0,124,0,124,0,112,0,15,31,62, + 19,2,250,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,231,224,239,240,255,248,248,60,240,28,240,30,224,14,224, + 14,224,14,224,14,224,14,224,14,240,28,240,28,248,60,255, + 248,239,240,227,192,224,0,224,0,224,0,224,0,224,0,224, + 0,14,30,60,17,1,249,28,112,28,112,28,112,0,0,0, + 0,224,28,224,28,224,60,112,56,112,56,112,120,120,112,56, + 112,56,240,60,224,28,224,29,192,29,192,15,192,15,128,15, + 128,7,0,7,0,7,0,14,0,14,0,30,0,124,0,124, + 0,112,0}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=24 x= 3 y=15 dx=19 dy= 0 ascent=26 len=48 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =26 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24n[702] U8G_SECTION(".progmem.u8g_font_helvR24n") = { + 0,39,48,251,245,24,0,0,0,0,42,57,0,26,251,24, + 0,10,11,22,13,1,15,12,0,12,0,76,128,237,192,127, + 128,63,0,30,0,63,0,115,128,225,192,64,128,17,16,48, + 19,1,1,1,192,0,1,192,0,1,192,0,1,192,0,1, + 192,0,1,192,0,1,192,0,255,255,128,255,255,128,255,255, + 128,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,3,9,9,9,3,251,224,224,224,224,32,96,96, + 192,128,8,2,2,11,1,8,255,255,3,4,4,9,3,0, + 224,224,224,224,9,24,48,9,0,0,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,8,0,24,0,24,0,24,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,15,24,48,18,1,0, + 7,192,31,240,63,248,60,120,120,60,112,28,112,28,224,14, + 224,14,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,112,28,112,28,112,60,60,120,63,248,31,240,7,192, + 8,24,24,18,3,0,3,7,7,15,63,255,255,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,15,24, + 48,18,1,0,7,192,31,240,63,248,120,60,112,28,240,14, + 224,14,224,14,0,14,0,28,0,60,0,120,0,240,3,224, + 7,192,31,0,60,0,120,0,112,0,224,0,224,0,255,254, + 255,254,255,254,15,24,48,18,1,0,7,192,31,240,63,248, + 56,56,112,28,112,28,112,28,112,28,0,28,0,56,3,248, + 3,240,3,248,0,60,0,30,0,14,224,14,224,14,224,14, + 112,28,120,60,63,248,31,240,7,192,16,24,48,18,0,0, + 0,24,0,56,0,120,0,120,0,248,1,248,3,184,3,184, + 7,56,14,56,14,56,28,56,56,56,56,56,112,56,224,56, + 255,255,255,255,255,255,0,56,0,56,0,56,0,56,0,56, + 15,24,48,18,1,0,63,252,63,252,63,252,56,0,56,0, + 56,0,112,0,112,0,119,192,127,240,127,248,120,124,112,28, + 0,30,0,14,0,14,0,14,224,14,224,30,240,28,120,124, + 127,248,63,240,15,128,15,24,48,18,1,0,3,192,15,240, + 31,248,60,56,56,28,112,28,112,0,112,0,96,0,227,192, + 239,240,255,248,248,60,240,28,240,14,224,14,224,14,96,14, + 112,14,112,28,56,60,63,248,31,240,7,192,15,24,48,18, + 1,0,255,254,255,254,255,254,0,14,0,28,0,24,0,56, + 0,112,0,112,0,224,0,224,1,192,1,192,3,128,3,128, + 7,0,7,0,7,0,14,0,14,0,14,0,28,0,28,0, + 28,0,15,24,48,18,1,0,7,192,31,240,63,248,56,60, + 112,28,112,28,112,28,112,28,120,60,60,120,31,240,15,224, + 63,248,120,60,112,28,224,14,224,14,224,14,224,14,240,28, + 120,60,63,248,31,240,7,192,15,24,48,18,1,0,7,192, + 31,240,63,248,120,124,112,60,240,28,224,30,224,14,224,14, + 224,14,224,30,224,30,112,62,127,254,63,238,15,206,0,14, + 0,28,224,28,240,60,120,120,63,240,63,224,15,128}; +/* + Fontname: -Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=29 h=32 x= 4 y=20 dx=34 dy= 0 ascent=27 len=120 + Font Bounding box w=39 h=48 x=-5 y=-11 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR24r[4992] U8G_SECTION(".progmem.u8g_font_helvR24r") = { + 0,39,48,251,245,25,5,215,14,105,32,127,249,27,249,25, + 249,0,0,0,9,0,1,3,25,25,9,4,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,64,64, + 0,0,224,224,224,224,8,8,8,12,2,15,231,231,231,231, + 231,231,66,66,17,23,69,19,1,0,3,135,0,3,135,0, + 3,6,0,3,6,0,7,14,0,7,14,0,127,255,128,127, + 255,128,127,255,128,14,28,0,14,28,0,12,24,0,28,56, + 0,28,56,0,255,255,0,255,255,0,255,255,0,56,112,0, + 56,112,0,48,96,0,48,96,0,112,224,0,112,224,0,16, + 31,62,18,1,252,1,128,1,128,1,128,15,240,31,248,61, + 188,113,142,113,142,225,142,225,128,225,128,113,128,125,128,63, + 192,31,240,7,252,1,254,1,158,1,143,1,135,225,135,225, + 135,113,142,113,142,61,188,63,248,15,240,1,128,1,128,1, + 128,1,128,26,24,96,29,1,0,0,0,48,0,31,0,112, + 0,127,128,96,0,115,192,224,0,224,192,192,0,192,225,192, + 0,192,225,128,0,192,227,128,0,224,195,0,0,115,199,0, + 0,127,134,0,0,31,14,0,0,0,12,0,0,0,28,62, + 0,0,24,127,128,0,56,243,128,0,48,193,192,0,113,192, + 192,0,97,192,192,0,225,192,192,0,192,193,192,1,192,227, + 128,1,128,127,128,3,128,62,0,18,23,69,22,2,0,7, + 192,0,15,224,0,30,112,0,60,56,0,56,56,0,56,56, + 0,60,112,0,30,240,0,15,224,0,7,192,0,15,128,0, + 63,192,0,121,199,0,112,231,0,224,246,0,224,126,0,224, + 60,0,224,28,0,240,62,0,120,127,0,127,247,128,63,227, + 192,15,0,0,3,8,8,6,2,15,224,224,224,224,224,224, + 224,64,7,31,31,11,2,249,6,12,12,24,24,56,48,112, + 112,112,96,224,224,224,224,224,224,224,224,224,96,112,112,112, + 48,56,24,24,12,12,6,7,31,31,11,1,249,192,96,96, + 48,48,56,24,28,28,28,12,14,14,14,14,14,14,14,14, + 12,12,28,28,24,24,56,48,112,96,96,192,10,11,22,13, + 1,15,12,0,12,0,76,128,237,192,127,128,63,0,30,0, + 63,0,115,128,225,192,64,128,17,16,48,19,1,1,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,255,255,128,255,255,128,255,255,128,1,192,0,1, + 192,0,1,192,0,1,192,0,1,192,0,1,192,0,3,9, + 9,9,3,251,224,224,224,224,32,96,96,192,128,8,2,2, + 11,1,8,255,255,3,4,4,9,3,0,224,224,224,224,9, + 24,48,9,0,0,1,128,1,128,1,128,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,8,0,24, + 0,24,0,24,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,15,24,48,18,1,0,7,192,31,240,63, + 248,60,120,120,60,112,28,112,28,224,14,224,14,224,14,224, + 14,224,14,224,14,224,14,224,14,224,14,224,14,112,28,112, + 28,112,60,60,120,63,248,31,240,7,192,8,24,24,18,3, + 0,3,7,7,15,63,255,255,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,15,24,48,18,1,0,7, + 192,31,240,63,248,120,60,112,28,240,14,224,14,224,14,0, + 14,0,28,0,60,0,120,0,240,3,224,7,192,31,0,60, + 0,120,0,112,0,224,0,224,0,255,254,255,254,255,254,15, + 24,48,18,1,0,7,192,31,240,63,248,56,56,112,28,112, + 28,112,28,112,28,0,28,0,56,3,248,3,240,3,248,0, + 60,0,30,0,14,224,14,224,14,224,14,112,28,120,60,63, + 248,31,240,7,192,16,24,48,18,0,0,0,24,0,56,0, + 120,0,120,0,248,1,248,3,184,3,184,7,56,14,56,14, + 56,28,56,56,56,56,56,112,56,224,56,255,255,255,255,255, + 255,0,56,0,56,0,56,0,56,0,56,15,24,48,18,1, + 0,63,252,63,252,63,252,56,0,56,0,56,0,112,0,112, + 0,119,192,127,240,127,248,120,124,112,28,0,30,0,14,0, + 14,0,14,224,14,224,30,240,28,120,124,127,248,63,240,15, + 128,15,24,48,18,1,0,3,192,15,240,31,248,60,56,56, + 28,112,28,112,0,112,0,96,0,227,192,239,240,255,248,248, + 60,240,28,240,14,224,14,224,14,96,14,112,14,112,28,56, + 60,63,248,31,240,7,192,15,24,48,18,1,0,255,254,255, + 254,255,254,0,14,0,28,0,24,0,56,0,112,0,112,0, + 224,0,224,1,192,1,192,3,128,3,128,7,0,7,0,7, + 0,14,0,14,0,14,0,28,0,28,0,28,0,15,24,48, + 18,1,0,7,192,31,240,63,248,56,60,112,28,112,28,112, + 28,112,28,120,60,60,120,31,240,15,224,63,248,120,60,112, + 28,224,14,224,14,224,14,224,14,240,28,120,60,63,248,31, + 240,7,192,15,24,48,18,1,0,7,192,31,240,63,248,120, + 124,112,60,240,28,224,30,224,14,224,14,224,14,224,30,224, + 30,112,62,127,254,63,238,15,206,0,14,0,28,224,28,240, + 60,120,120,63,240,63,224,15,128,3,18,18,9,4,0,224, + 224,224,224,0,0,0,0,0,0,0,0,0,0,224,224,224, + 224,3,22,22,9,4,251,224,224,224,224,0,0,0,0,0, + 0,0,0,0,224,224,224,224,32,96,96,192,128,16,16,32, + 19,2,0,0,3,0,15,0,63,1,252,7,224,31,128,254, + 0,240,0,240,0,254,0,31,128,7,224,1,252,0,127,0, + 15,0,3,15,9,18,19,2,4,255,254,255,254,255,254,0, + 0,0,0,0,0,255,254,255,254,255,254,16,16,32,19,1, + 0,192,0,240,0,254,0,63,128,7,224,1,248,0,127,0, + 15,0,15,0,127,1,248,7,224,63,128,254,0,240,0,192, + 0,14,25,50,18,2,0,7,192,31,240,63,248,120,56,112, + 28,240,28,224,28,224,28,0,28,0,56,0,56,0,112,0, + 224,1,224,1,192,3,128,3,128,3,128,3,128,0,0,0, + 0,3,128,3,128,3,128,3,128,29,30,120,34,1,251,0, + 7,192,0,0,63,248,0,0,255,254,0,3,240,63,128,7, + 192,7,192,15,0,3,224,30,0,1,224,28,0,0,240,56, + 15,140,112,56,31,220,56,112,60,252,56,112,112,124,56,96, + 224,56,24,224,224,56,24,225,224,56,24,225,192,112,56,225, + 192,112,56,225,192,112,112,225,192,224,112,225,224,224,224,112, + 243,243,192,112,255,127,128,120,62,127,0,60,0,0,0,30, + 0,0,0,31,0,0,0,15,128,0,0,3,224,120,0,1, + 255,248,0,0,127,224,0,20,25,75,22,1,0,0,240,0, + 0,240,0,0,248,0,1,248,0,1,248,0,3,156,0,3, + 156,0,3,156,0,7,158,0,7,14,0,7,14,0,15,15, + 0,15,15,0,14,7,0,30,7,128,31,255,128,31,255,128, + 63,255,192,60,3,192,56,1,192,120,1,224,120,1,224,112, + 0,224,240,0,240,240,0,240,17,25,75,22,3,0,255,240, + 0,255,252,0,255,254,0,224,62,0,224,15,0,224,15,0, + 224,7,0,224,7,0,224,15,0,224,14,0,224,62,0,255, + 252,0,255,252,0,255,254,0,224,31,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,7,128,224,15,0, + 255,254,0,255,254,0,255,248,0,20,25,75,24,2,0,1, + 252,0,7,255,0,15,255,128,31,7,192,60,1,224,56,0, + 224,112,0,240,112,0,112,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,112,240,0,112,112,0,240,120,0,224,60,1,224,63,7, + 192,31,255,128,7,254,0,1,248,0,18,25,75,24,3,0, + 255,240,0,255,252,0,255,254,0,224,31,0,224,15,0,224, + 7,128,224,3,128,224,3,128,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,3,192,224,3,128,224,3,128,224,7,128,224,15,0,224, + 30,0,255,254,0,255,252,0,255,240,0,17,25,75,22,3, + 0,255,255,0,255,255,0,255,255,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,255,255,0,255,255,0,255,255,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,255,255,128,255,255,128,255,255,128,16,25,50,20, + 3,0,255,255,255,255,255,255,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,22,25,75,25,1,0,0,254,0,3,255,128, + 15,255,192,31,131,240,62,0,240,60,0,120,120,0,56,112, + 0,56,240,0,0,224,0,0,224,0,0,224,0,0,224,15, + 252,224,15,252,224,15,252,224,0,28,240,0,28,112,0,28, + 120,0,60,56,0,60,60,0,252,31,1,252,15,255,220,7, + 255,28,1,252,28,18,25,75,24,3,0,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,255,255,192,255, + 255,192,255,255,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,3,25,25,9,3,0,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,13,25,50,16,1,0,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,224,56,224,56,224, + 56,224,56,240,120,120,240,127,240,63,224,31,128,20,25,75, + 22,3,0,224,3,192,224,7,128,224,15,0,224,30,0,224, + 60,0,224,120,0,224,240,0,225,224,0,227,192,0,231,192, + 0,239,128,0,255,192,0,255,192,0,249,224,0,240,240,0, + 224,112,0,224,120,0,224,60,0,224,28,0,224,30,0,224, + 15,0,224,7,128,224,3,192,224,3,224,224,1,240,14,25, + 50,18,3,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,21,25,75,27,3,0,240,0,120,240, + 0,120,248,0,248,248,0,248,252,1,248,252,1,248,252,1, + 248,236,1,184,238,3,184,238,3,184,230,3,56,231,7,56, + 231,7,56,227,6,56,227,142,56,227,142,56,227,142,56,225, + 140,56,225,220,56,225,220,56,224,216,56,224,248,56,224,248, + 56,224,112,56,224,112,56,19,25,75,24,2,0,240,0,224, + 240,0,224,248,0,224,252,0,224,252,0,224,254,0,224,239, + 0,224,231,0,224,231,128,224,227,192,224,227,192,224,225,224, + 224,224,224,224,224,240,224,224,120,224,224,56,224,224,60,224, + 224,28,224,224,30,224,224,15,224,224,7,224,224,7,224,224, + 3,224,224,1,224,224,1,224,23,25,75,25,1,0,0,254, + 0,3,255,128,15,239,224,31,1,240,62,0,248,60,0,120, + 120,0,60,112,0,28,240,0,30,224,0,14,224,0,14,224, + 0,14,224,0,14,224,0,14,224,0,14,224,0,14,240,0, + 30,240,0,30,120,0,60,60,0,120,62,0,248,31,1,240, + 15,239,224,3,255,128,0,254,0,17,25,75,22,3,0,255, + 248,0,255,254,0,255,255,0,224,15,0,224,7,128,224,3, + 128,224,3,128,224,3,128,224,3,128,224,3,128,224,7,128, + 224,15,0,255,255,0,255,254,0,255,248,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,23,26,78,26,1,255, + 0,254,0,3,255,128,15,239,224,31,1,240,62,0,248,60, + 0,120,120,0,60,112,0,28,240,0,30,224,0,14,224,0, + 14,224,0,14,224,0,14,224,0,14,224,0,14,224,0,14, + 240,0,30,240,2,30,120,7,60,60,7,184,62,3,248,31, + 1,240,15,239,248,3,255,188,0,254,30,0,0,12,19,25, + 75,24,3,0,255,252,0,255,255,0,255,255,128,224,7,128, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 3,192,224,3,128,224,15,128,255,255,0,255,254,0,255,255, + 0,224,15,128,224,7,128,224,3,128,224,3,192,224,3,192, + 224,3,192,224,1,192,224,1,192,224,1,192,224,1,224,19, + 25,75,22,1,0,3,248,0,15,254,0,31,255,0,60,15, + 128,56,3,192,112,1,192,112,1,192,112,0,0,120,0,0, + 124,0,0,63,192,0,31,248,0,7,255,0,0,127,128,0, + 15,192,0,1,224,0,0,224,224,0,224,240,0,224,112,1, + 224,120,1,192,62,7,192,63,255,128,15,254,0,3,248,0, + 19,25,75,20,0,0,255,255,224,255,255,224,255,255,224,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,18,25,75,24,3,0,224,1,192,224,1,192,224,1,192, + 224,1,192,224,1,192,224,1,192,224,1,192,224,1,192,224, + 1,192,224,1,192,224,1,192,224,1,192,224,1,192,224,1, + 192,224,1,192,224,1,192,224,1,192,224,1,192,224,1,192, + 240,3,192,120,7,128,124,15,128,63,255,0,31,254,0,3, + 240,0,19,25,75,22,1,0,240,1,224,240,1,224,240,1, + 224,112,1,192,120,3,192,120,3,192,56,3,128,56,3,128, + 60,7,128,28,7,0,28,7,0,30,15,0,14,14,0,14, + 14,0,15,14,0,7,28,0,7,28,0,7,156,0,3,184, + 0,3,184,0,3,184,0,1,240,0,1,240,0,0,224,0, + 0,224,0,29,25,100,31,1,0,240,7,0,120,240,7,0, + 120,240,15,128,120,112,15,128,112,112,15,128,112,120,29,192, + 240,120,29,192,240,56,29,192,224,56,29,192,224,56,56,224, + 224,60,56,225,224,28,56,225,192,28,48,225,192,28,112,113, + 192,28,112,113,192,14,112,115,128,14,224,59,128,14,224,59, + 128,14,224,59,128,7,224,63,128,7,192,31,0,7,192,31, + 0,7,192,31,0,3,128,14,0,3,128,14,0,20,25,75, + 22,1,0,248,0,240,120,1,224,60,3,192,28,3,192,30, + 7,128,15,7,0,15,15,0,7,158,0,3,156,0,3,252, + 0,1,248,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,156,0,7,158,0,7,14,0,15,15,0,30,7,128,30, + 7,128,60,3,192,120,1,224,120,1,224,240,0,240,21,25, + 75,22,0,0,240,0,120,120,0,240,120,0,224,60,1,224, + 28,1,192,30,3,192,14,7,128,15,7,128,7,143,0,3, + 142,0,3,222,0,1,220,0,1,252,0,0,248,0,0,248, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,18, + 25,75,20,1,0,127,255,192,127,255,192,127,255,192,0,7, + 128,0,15,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,1,224,0,1,224,0,3,192,0,7, + 128,0,7,128,0,15,0,0,30,0,0,60,0,0,60,0, + 0,120,0,0,240,0,0,255,255,192,255,255,192,255,255,192, + 6,32,32,9,2,249,252,252,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,252,252,9,24,48,9,0,0,192,0,192,0, + 96,0,96,0,96,0,48,0,48,0,48,0,16,0,24,0, + 24,0,24,0,12,0,12,0,12,0,6,0,6,0,6,0, + 2,0,3,0,3,0,3,0,1,128,1,128,6,32,32,9, + 1,249,252,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 252,252,12,13,26,16,1,11,6,0,15,0,15,0,31,128, + 25,128,25,128,57,192,48,192,112,224,96,96,96,96,224,112, + 192,48,18,2,6,18,0,250,255,255,192,255,255,192,6,5, + 5,11,1,20,224,240,112,56,28,16,18,36,18,1,0,15, + 224,63,248,60,120,112,60,112,28,0,28,0,60,1,252,31, + 252,126,28,120,28,240,28,224,28,224,60,224,124,121,254,127, + 223,63,143,15,25,50,18,2,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,227,224,239,240,255,248,248,60,240, + 28,240,30,224,14,224,14,224,14,224,14,224,14,224,14,240, + 30,240,28,252,60,255,248,239,240,231,224,14,18,36,16,1, + 0,7,192,31,240,63,248,56,60,112,28,112,28,224,0,224, + 0,224,0,224,0,224,0,224,28,224,28,112,28,120,56,63, + 248,31,240,7,192,15,25,50,18,1,0,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,7,206,31,238,63,254,124, + 62,112,30,240,30,224,14,224,14,224,14,224,14,224,14,224, + 14,240,30,240,30,120,62,127,254,63,238,15,206,15,18,36, + 18,2,0,7,192,31,240,63,248,120,60,112,28,240,14,224, + 14,224,14,255,254,255,254,224,0,224,0,240,14,112,30,120, + 60,63,248,31,240,7,192,8,25,25,9,1,0,15,31,60, + 56,56,56,56,255,255,255,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,15,25,50,18,1,249,7,206,31,238, + 63,254,124,62,112,30,240,30,224,14,224,14,224,14,224,14, + 224,14,224,14,240,30,112,62,120,62,63,254,31,238,7,142, + 0,14,224,14,224,28,240,28,124,120,63,248,31,224,14,25, + 50,18,2,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,227,224,239,240,255,248,248,60,240,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,3,25,25,7,2,0,224,224,224,224, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,6,32,32,7,255,249,28,28,28,28,0, + 0,0,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,60,252,248,15,25,50,16,1, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 120,224,240,225,224,227,192,231,128,239,0,255,0,255,0,251, + 128,243,192,225,192,225,224,224,224,224,240,224,120,224,56,224, + 60,224,30,3,25,25,7,2,0,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,23,18,54,27,2,0,227,192,240,239,243,252,255,247, + 252,248,126,30,240,60,14,224,56,14,224,56,14,224,56,14, + 224,56,14,224,56,14,224,56,14,224,56,14,224,56,14,224, + 56,14,224,56,14,224,56,14,224,56,14,224,56,14,14,18, + 36,18,2,0,227,224,239,248,255,248,248,60,240,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,15,18,36,18,1,0,7,192, + 31,240,63,248,120,60,112,28,240,30,224,14,224,14,224,14, + 224,14,224,14,224,14,240,30,112,28,120,60,63,248,31,240, + 7,192,15,25,50,18,2,249,3,192,239,240,255,248,248,60, + 240,28,240,30,224,14,224,14,224,14,224,14,224,14,224,14, + 240,30,240,28,248,60,255,248,239,240,231,224,224,0,224,0, + 224,0,224,0,224,0,224,0,224,0,15,25,50,18,1,249, + 7,192,31,238,63,254,124,62,112,30,240,30,224,14,224,14, + 224,14,224,14,224,14,224,14,240,30,112,30,120,62,63,254, + 31,238,15,206,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,8,18,18,11,2,0,231,239,255,252,240,240,224,224, + 224,224,224,224,224,224,224,224,224,224,13,18,36,16,2,0, + 15,128,63,224,127,224,112,240,224,112,224,0,112,0,126,0, + 63,192,7,240,0,240,0,120,224,56,224,56,240,112,127,240, + 127,224,31,128,8,22,22,9,1,0,56,56,56,56,255,255, + 255,56,56,56,56,56,56,56,56,56,56,56,56,60,63,31, + 14,18,36,18,2,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,60,240,124,127,252,127,220,31,28,15,18,36,16,0,0, + 224,14,224,14,112,28,112,28,112,28,56,56,56,56,56,56, + 28,112,28,112,28,112,14,224,14,224,14,224,7,192,7,192, + 3,128,3,128,23,18,54,23,0,0,224,56,14,224,56,14, + 112,124,28,112,124,28,112,108,28,56,238,28,56,238,56,56, + 238,56,56,198,56,24,198,48,29,199,112,29,199,112,29,199, + 112,13,131,96,15,131,224,15,131,224,7,1,192,7,1,192, + 15,18,36,16,0,0,240,30,120,28,56,56,60,112,28,112, + 14,224,15,224,7,192,3,128,7,192,7,192,15,224,30,224, + 28,112,56,120,56,56,112,28,240,30,14,25,50,16,1,249, + 224,28,224,28,240,56,112,56,112,56,112,112,56,112,56,112, + 56,224,60,224,28,224,29,192,29,192,15,192,15,128,15,128, + 7,0,7,0,7,0,14,0,14,0,28,0,124,0,120,0, + 112,0,14,18,36,16,1,0,127,248,127,248,127,248,0,120, + 0,240,0,224,1,192,3,192,7,128,7,0,14,0,28,0, + 60,0,120,0,112,0,255,252,255,252,255,252,8,32,32,11, + 1,249,15,31,28,24,24,24,24,24,24,24,24,24,56,56, + 112,224,224,112,56,56,24,24,24,24,24,24,24,24,24,28, + 31,15,2,31,31,9,3,249,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,8,32,32,11,1,249,240,248,56, + 24,24,24,24,24,24,24,24,24,28,28,14,7,7,14,28, + 28,24,24,24,24,24,24,24,24,24,56,248,240,14,6,12, + 19,2,9,24,0,124,12,127,12,199,220,193,248,0,240,255 + }; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 9 h=10 x= 1 y= 4 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent =10 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[2193] U8G_SECTION(".progmem.u8g_font_lucasfont_alternate") = { + 0,9,11,0,255,7,1,148,3,22,32,255,255,10,255,7, + 255,0,0,0,4,0,0,1,7,7,2,0,0,128,128,128, + 128,0,0,128,3,3,3,4,0,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,7,7,6,0,0, + 32,120,128,248,8,240,32,7,7,7,8,0,0,2,68,8, + 16,32,68,128,6,7,7,7,0,0,96,144,144,96,148,136, + 116,1,3,3,2,0,4,128,128,128,3,7,7,4,0,0, + 32,64,128,128,128,64,32,3,7,7,4,0,0,128,64,32, + 32,32,64,128,7,5,5,8,0,1,68,40,254,40,68,5, + 5,5,6,0,1,32,32,248,32,32,2,3,3,3,0,255, + 64,64,128,6,1,1,7,0,3,252,1,2,2,2,0,0, + 128,128,7,7,7,8,0,0,2,4,8,16,32,64,128,5, + 7,7,6,0,0,112,136,136,136,136,136,112,5,7,7,6, + 0,0,32,96,32,32,32,32,248,5,7,7,6,0,0,112, + 136,8,16,32,64,248,5,7,7,6,0,0,240,8,8,120, + 8,8,240,5,7,7,6,0,0,16,48,80,144,248,16,16, + 5,7,7,6,0,0,248,128,112,8,8,136,112,5,7,7, + 6,0,0,112,136,128,240,136,136,112,5,7,7,6,0,0, + 248,8,16,32,32,32,32,5,7,7,6,0,0,112,136,136, + 112,136,136,112,5,7,7,6,0,0,112,136,136,120,8,136, + 112,1,4,4,2,0,1,128,0,0,128,2,6,6,3,0, + 255,64,0,0,64,64,128,4,7,7,5,0,0,16,32,64, + 128,64,32,16,5,3,3,6,0,2,248,0,248,4,7,7, + 5,0,0,128,64,32,16,32,64,128,5,7,7,6,0,0, + 112,136,8,16,32,0,32,7,7,7,8,0,0,124,130,154, + 170,190,128,124,5,7,7,6,0,0,112,136,136,248,136,136, + 136,5,7,7,6,0,0,240,136,136,240,136,136,240,5,7, + 7,6,0,0,120,128,128,128,128,128,120,5,7,7,6,0, + 0,240,136,136,136,136,136,240,5,7,7,6,0,0,248,128, + 128,240,128,128,248,5,7,7,6,0,0,248,128,128,240,128, + 128,128,5,7,7,6,0,0,112,136,128,184,136,136,112,5, + 7,7,6,0,0,136,136,136,248,136,136,136,1,7,7,2, + 0,0,128,128,128,128,128,128,128,5,7,7,6,0,0,8, + 8,8,8,8,136,112,5,7,7,6,0,0,136,144,160,192, + 160,144,136,5,7,7,6,0,0,128,128,128,128,128,128,248, + 7,7,7,8,0,0,130,198,170,146,130,130,130,6,7,7, + 7,0,0,132,196,164,148,140,132,132,5,7,7,6,0,0, + 112,136,136,136,136,136,112,5,7,7,6,0,0,240,136,136, + 240,128,128,128,5,7,7,6,0,0,112,136,136,136,168,144, + 104,5,7,7,6,0,0,240,136,136,240,160,144,136,5,7, + 7,6,0,0,112,136,128,112,8,136,112,5,7,7,6,0, + 0,248,32,32,32,32,32,32,5,7,7,6,0,0,136,136, + 136,136,136,136,112,5,7,7,6,0,0,136,136,136,136,136, + 80,32,7,7,7,8,0,0,130,130,130,146,170,198,130,5, + 7,7,6,0,0,136,136,80,32,80,136,136,5,7,7,6, + 0,0,136,136,136,80,32,32,32,5,7,7,6,0,0,248, + 8,16,32,64,128,248,3,7,7,4,0,0,224,128,128,128, + 128,128,224,7,7,7,8,0,0,128,64,32,16,8,4,2, + 3,7,7,4,0,0,224,32,32,32,32,32,224,255,7,1, + 1,8,0,0,254,255,5,5,5,6,0,0,112,8,120,136, + 120,5,6,6,6,0,0,128,128,240,136,136,240,4,5,5, + 5,0,0,112,128,128,128,112,5,6,6,6,0,0,8,8, + 120,136,136,120,5,5,5,6,0,0,112,136,240,128,120,4, + 6,6,5,0,0,48,64,240,64,64,64,5,6,6,6,0, + 255,112,136,136,120,8,112,5,6,6,6,0,0,128,128,240, + 136,136,136,1,6,6,2,0,0,128,0,128,128,128,128,3, + 7,7,4,0,255,32,0,32,32,32,32,192,4,6,6,5, + 0,0,128,128,144,224,160,144,2,6,6,3,0,0,192,64, + 64,64,64,64,7,5,5,8,0,0,252,146,146,146,146,5, + 5,5,6,0,0,240,136,136,136,136,5,5,5,6,0,0, + 112,136,136,136,112,5,6,6,6,0,255,240,136,136,240,128, + 128,5,6,6,6,0,255,120,136,136,120,8,8,5,5,5, + 6,0,0,240,136,128,128,128,5,5,5,6,0,0,120,128, + 112,8,240,5,6,6,6,0,0,32,248,32,32,32,16,5, + 5,5,6,0,0,136,136,136,136,120,5,5,5,6,0,0, + 136,136,136,80,32,7,5,5,8,0,0,146,146,146,146,126, + 5,5,5,6,0,0,136,80,32,80,136,5,6,6,6,0, + 255,136,136,136,120,8,112,5,5,5,6,0,0,248,16,32, + 64,248,4,7,7,5,0,0,48,64,64,128,64,64,48,1, + 7,7,2,0,0,128,128,128,128,128,128,128,4,7,7,5, + 0,0,192,32,32,16,32,32,192,6,2,2,7,0,3,100, + 152,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,1,7,7,2,0,0,128,0,0,128,128,128,128, + 5,7,7,6,0,0,32,112,168,160,168,112,32,5,7,7, + 6,0,0,56,64,64,240,64,64,248,255,5,7,7,6,0, + 0,136,136,80,32,248,32,32,1,7,7,2,0,0,128,128, + 128,0,128,128,128,255,255,8,8,8,9,0,255,60,66,153, + 161,161,153,66,60,255,6,5,5,7,0,1,36,72,144,72, + 36,5,3,3,6,0,1,248,8,8,5,1,1,6,0,3, + 248,255,255,255,5,7,7,6,0,0,32,32,248,32,32,0, + 248,255,255,255,255,6,7,7,7,0,0,124,244,244,116,20, + 20,20,1,1,1,2,0,3,128,255,255,255,6,5,5,7, + 0,1,144,72,36,72,144,255,255,255,5,7,7,6,0,0, + 32,0,32,64,128,136,112,5,10,10,6,0,0,64,32,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,16,32,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,32,80,0, + 112,136,136,248,136,136,136,5,10,10,6,0,0,104,144,0, + 112,136,136,248,136,136,136,5,9,9,6,0,0,80,0,112, + 136,136,248,136,136,136,5,10,10,6,0,0,32,80,32,112, + 136,136,248,136,136,136,9,7,14,10,0,0,119,128,136,0, + 136,0,255,0,136,0,136,0,143,128,255,5,10,10,6,0, + 0,64,32,0,248,128,128,240,128,128,248,5,10,10,6,0, + 0,16,32,0,248,128,128,240,128,128,248,5,10,10,6,0, + 0,32,80,0,248,128,128,240,128,128,248,5,9,9,6,0, + 0,80,0,248,128,128,240,128,128,248,2,10,10,3,0,0, + 128,64,0,64,64,64,64,64,64,64,2,10,10,4,1,0, + 64,128,0,128,128,128,128,128,128,128,3,10,10,4,0,0, + 64,160,0,64,64,64,64,64,64,64,3,9,9,4,0,0, + 160,0,64,64,64,64,64,64,64,6,7,7,7,0,0,120, + 68,68,244,68,68,120,6,10,10,7,0,0,100,152,0,132, + 196,164,148,140,132,132,5,10,10,6,0,0,64,32,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,16,32,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,32,80,0,112, + 136,136,136,136,136,112,5,10,10,6,0,0,104,144,0,112, + 136,136,136,136,136,112,5,8,8,6,0,0,136,112,136,136, + 136,136,136,112,5,5,5,6,0,1,136,80,32,80,136,255, + 5,10,10,6,0,0,64,32,0,136,136,136,136,136,136,112, + 5,10,10,6,0,0,16,32,0,136,136,136,136,136,136,112, + 5,10,10,6,0,0,32,80,0,136,136,136,136,136,136,112, + 5,8,8,6,0,0,136,0,136,136,136,136,136,112,5,10, + 10,6,0,0,16,32,0,136,136,136,80,32,32,32,255,4, + 8,8,5,0,255,96,144,144,160,144,144,160,128,5,8,8, + 6,0,0,64,32,0,112,8,120,136,120,5,8,8,6,0, + 0,16,32,0,112,8,120,136,120,5,8,8,6,0,0,32, + 80,0,112,8,120,136,120,5,8,8,6,0,0,104,144,0, + 112,8,120,136,120,5,7,7,6,0,0,80,0,112,8,120, + 136,120,5,9,9,6,0,0,32,80,32,0,112,8,120,136, + 120,9,5,10,10,0,0,119,0,8,128,127,0,136,0,119, + 128,255,5,8,8,6,0,0,64,32,0,112,136,240,128,120, + 5,8,8,6,0,0,16,32,0,112,136,240,128,120,5,8, + 8,6,0,0,32,80,0,112,136,240,128,120,5,7,7,6, + 0,0,80,0,112,136,240,128,120,2,7,7,3,0,0,128, + 64,0,64,64,64,64,2,7,7,3,0,0,64,128,0,128, + 128,128,128,3,7,7,4,0,0,64,160,0,64,64,64,64, + 3,6,6,4,0,0,160,0,64,64,64,64,255,5,8,8, + 6,0,0,104,144,0,240,136,136,136,136,5,8,8,6,0, + 0,64,32,0,112,136,136,136,112,5,8,8,6,0,0,16, + 32,0,112,136,136,136,112,5,8,8,6,0,0,32,80,0, + 112,136,136,136,112,5,8,8,6,0,0,104,144,0,112,136, + 136,136,112,5,7,7,6,0,0,80,0,112,136,136,136,112, + 5,5,5,6,0,1,32,0,248,0,32,255,5,8,8,6, + 0,0,64,32,0,136,136,136,136,120,5,8,8,6,0,0, + 16,32,0,136,136,136,136,120,5,8,8,6,0,0,32,80, + 0,136,136,136,136,120,5,7,7,6,0,0,80,0,136,136, + 136,136,120,5,9,9,6,0,255,16,32,0,136,136,136,120, + 8,112,255,5,8,8,6,0,255,80,0,136,136,136,120,8, + 112}; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 0, '1' Height: 7 + Calculated Max Values w= 7 h= 7 x= 0 y= 3 dx= 8 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent= 0 + X Font ascent = 7 descent= 0 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[206] U8G_SECTION(".progmem.u8g_font_lucasfont_alternaten") = { + 0,9,11,0,255,7,0,0,0,0,42,57,0,7,255,7, + 0,7,5,5,8,0,1,68,40,254,40,68,5,5,5,6, + 0,1,32,32,248,32,32,2,3,3,3,0,255,64,64,128, + 6,1,1,7,0,3,252,1,2,2,2,0,0,128,128,7, + 7,7,8,0,0,2,4,8,16,32,64,128,5,7,7,6, + 0,0,112,136,136,136,136,136,112,5,7,7,6,0,0,32, + 96,32,32,32,32,248,5,7,7,6,0,0,112,136,8,16, + 32,64,248,5,7,7,6,0,0,240,8,8,120,8,8,240, + 5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7, + 6,0,0,248,128,112,8,8,136,112,5,7,7,6,0,0, + 112,136,128,240,136,136,112,5,7,7,6,0,0,248,8,16, + 32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136, + 112,5,7,7,6,0,0,112,136,136,120,8,136,112}; +/* + Fontname: -FreeType-Lucasfont Alternate-Medium-R-Normal--8-80-72-72-P-50-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 Lucasfont Alternate is based on Lucasfont by Patrick Lauke (http://fontstruct.com/fontstructors/redux) + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 7 h= 7 x= 0 y= 4 dx= 8 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 9 h=11 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[1138] U8G_SECTION(".progmem.u8g_font_lucasfont_alternater") = { + 0,9,11,0,255,7,1,148,3,22,32,127,255,7,255,7, + 255,0,0,0,4,0,0,1,7,7,2,0,0,128,128,128, + 128,0,0,128,3,3,3,4,0,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,7,7,6,0,0, + 32,120,128,248,8,240,32,7,7,7,8,0,0,2,68,8, + 16,32,68,128,6,7,7,7,0,0,96,144,144,96,148,136, + 116,1,3,3,2,0,4,128,128,128,3,7,7,4,0,0, + 32,64,128,128,128,64,32,3,7,7,4,0,0,128,64,32, + 32,32,64,128,7,5,5,8,0,1,68,40,254,40,68,5, + 5,5,6,0,1,32,32,248,32,32,2,3,3,3,0,255, + 64,64,128,6,1,1,7,0,3,252,1,2,2,2,0,0, + 128,128,7,7,7,8,0,0,2,4,8,16,32,64,128,5, + 7,7,6,0,0,112,136,136,136,136,136,112,5,7,7,6, + 0,0,32,96,32,32,32,32,248,5,7,7,6,0,0,112, + 136,8,16,32,64,248,5,7,7,6,0,0,240,8,8,120, + 8,8,240,5,7,7,6,0,0,16,48,80,144,248,16,16, + 5,7,7,6,0,0,248,128,112,8,8,136,112,5,7,7, + 6,0,0,112,136,128,240,136,136,112,5,7,7,6,0,0, + 248,8,16,32,32,32,32,5,7,7,6,0,0,112,136,136, + 112,136,136,112,5,7,7,6,0,0,112,136,136,120,8,136, + 112,1,4,4,2,0,1,128,0,0,128,2,6,6,3,0, + 255,64,0,0,64,64,128,4,7,7,5,0,0,16,32,64, + 128,64,32,16,5,3,3,6,0,2,248,0,248,4,7,7, + 5,0,0,128,64,32,16,32,64,128,5,7,7,6,0,0, + 112,136,8,16,32,0,32,7,7,7,8,0,0,124,130,154, + 170,190,128,124,5,7,7,6,0,0,112,136,136,248,136,136, + 136,5,7,7,6,0,0,240,136,136,240,136,136,240,5,7, + 7,6,0,0,120,128,128,128,128,128,120,5,7,7,6,0, + 0,240,136,136,136,136,136,240,5,7,7,6,0,0,248,128, + 128,240,128,128,248,5,7,7,6,0,0,248,128,128,240,128, + 128,128,5,7,7,6,0,0,112,136,128,184,136,136,112,5, + 7,7,6,0,0,136,136,136,248,136,136,136,1,7,7,2, + 0,0,128,128,128,128,128,128,128,5,7,7,6,0,0,8, + 8,8,8,8,136,112,5,7,7,6,0,0,136,144,160,192, + 160,144,136,5,7,7,6,0,0,128,128,128,128,128,128,248, + 7,7,7,8,0,0,130,198,170,146,130,130,130,6,7,7, + 7,0,0,132,196,164,148,140,132,132,5,7,7,6,0,0, + 112,136,136,136,136,136,112,5,7,7,6,0,0,240,136,136, + 240,128,128,128,5,7,7,6,0,0,112,136,136,136,168,144, + 104,5,7,7,6,0,0,240,136,136,240,160,144,136,5,7, + 7,6,0,0,112,136,128,112,8,136,112,5,7,7,6,0, + 0,248,32,32,32,32,32,32,5,7,7,6,0,0,136,136, + 136,136,136,136,112,5,7,7,6,0,0,136,136,136,136,136, + 80,32,7,7,7,8,0,0,130,130,130,146,170,198,130,5, + 7,7,6,0,0,136,136,80,32,80,136,136,5,7,7,6, + 0,0,136,136,136,80,32,32,32,5,7,7,6,0,0,248, + 8,16,32,64,128,248,3,7,7,4,0,0,224,128,128,128, + 128,128,224,7,7,7,8,0,0,128,64,32,16,8,4,2, + 3,7,7,4,0,0,224,32,32,32,32,32,224,255,7,1, + 1,8,0,0,254,255,5,5,5,6,0,0,112,8,120,136, + 120,5,6,6,6,0,0,128,128,240,136,136,240,4,5,5, + 5,0,0,112,128,128,128,112,5,6,6,6,0,0,8,8, + 120,136,136,120,5,5,5,6,0,0,112,136,240,128,120,4, + 6,6,5,0,0,48,64,240,64,64,64,5,6,6,6,0, + 255,112,136,136,120,8,112,5,6,6,6,0,0,128,128,240, + 136,136,136,1,6,6,2,0,0,128,0,128,128,128,128,3, + 7,7,4,0,255,32,0,32,32,32,32,192,4,6,6,5, + 0,0,128,128,144,224,160,144,2,6,6,3,0,0,192,64, + 64,64,64,64,7,5,5,8,0,0,252,146,146,146,146,5, + 5,5,6,0,0,240,136,136,136,136,5,5,5,6,0,0, + 112,136,136,136,112,5,6,6,6,0,255,240,136,136,240,128, + 128,5,6,6,6,0,255,120,136,136,120,8,8,5,5,5, + 6,0,0,240,136,128,128,128,5,5,5,6,0,0,120,128, + 112,8,240,5,6,6,6,0,0,32,248,32,32,32,16,5, + 5,5,6,0,0,136,136,136,136,120,5,5,5,6,0,0, + 136,136,136,80,32,7,5,5,8,0,0,146,146,146,146,126, + 5,5,5,6,0,0,136,80,32,80,136,5,6,6,6,0, + 255,136,136,136,120,8,112,5,5,5,6,0,0,248,16,32, + 64,248,4,7,7,5,0,0,48,64,64,128,64,64,48,1, + 7,7,2,0,0,128,128,128,128,128,128,128,4,7,7,5, + 0,0,192,32,32,16,32,32,192,6,2,2,7,0,3,100, + 152,255}; +/* + Fontname: m2icon5 + Copyright: public domain + Capital A Height: 5, '1' Height: 0 + Calculated Max Values w= 9 h= 6 x= 0 y= 0 dx=10 dy= 0 ascent= 5 len=10 + Font Bounding box w= 9 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_5[221] U8G_SECTION(".progmem.u8g_font_m2icon_5") = { + 1,9,6,0,255,5,0,17,0,172,65,104,255,5,255,5, + 255,2,117,149,28,254,130,130,254,2,69,133,112,208,144,144, + 240,2,84,100,216,112,112,216,2,117,133,6,12,216,112,32, + 2,68,84,240,144,144,240,2,68,84,240,144,208,240,2,68, + 84,240,240,240,240,2,85,101,248,136,136,136,248,2,85,101, + 248,136,168,136,248,2,85,101,248,248,248,248,248,2,68,84, + 224,176,240,112,2,68,84,224,176,240,112,2,68,84,224,240, + 240,112,2,85,101,240,152,152,248,120,2,85,101,240,152,216, + 248,120,2,85,101,240,248,248,248,120,2,68,84,96,144,144, + 96,2,68,84,96,144,208,96,2,68,84,96,240,240,96,255, + 255,255,255,255,255,255,255,255,255,255,255,255,2,117,133,32, + 64,254,64,32,2,85,101,32,112,168,32,32,255,255,255,2, + 149,170,28,0,254,0,130,0,191,128,255,0,1,22,38,128, + 128,128,128,128,128,2,85,101,32,32,248,32,32}; +/* + Fontname: m2icon_7 + Copyright: public domain + Capital A Height: 7, '1' Height: 0 + Calculated Max Values w=12 h= 8 x= 0 y= 1 dx=13 dy= 0 ascent= 7 len=14 + Font Bounding box w=12 h= 8 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent = 7 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_7[275] U8G_SECTION(".progmem.u8g_font_m2icon_7") = { + 1,12,8,0,255,7,0,17,0,214,65,104,255,7,255,7, + 255,2,151,174,15,0,255,128,128,128,128,128,128,128,128,128, + 255,128,2,87,103,56,104,232,136,136,136,248,3,84,100,216, + 112,112,216,2,134,150,3,6,12,216,112,32,2,102,118,252, + 132,132,132,132,252,2,102,118,252,132,180,180,132,252,2,102, + 118,252,252,252,252,252,252,2,119,151,254,130,130,130,130,130, + 254,2,119,151,254,130,186,186,186,130,254,2,119,151,254,254, + 254,254,254,254,254,2,102,118,248,140,140,140,252,124,2,102, + 118,248,140,172,140,252,124,2,102,134,248,252,252,252,252,124, + 2,119,151,252,134,134,134,134,254,126,2,119,151,252,134,182, + 182,134,254,126,2,119,151,252,254,254,254,254,254,126,2,102, + 118,120,204,132,132,204,120,2,102,118,120,204,180,180,204,120, + 2,102,118,120,252,252,252,252,120,255,255,255,255,255,255,255, + 255,255,255,255,255,255,2,135,151,16,48,95,129,95,48,16, + 2,119,135,16,40,68,238,40,40,56,255,255,255,2,199,222, + 15,0,255,128,128,128,159,240,160,32,192,64,255,128,1,24, + 40,128,128,128,128,128,128,128,128,2,119,199,16,0,16,186, + 16,0,16}; +/* + Fontname: m2icon_9 + Copyright: public domain + Capital A Height: 8, '1' Height: 0 + Calculated Max Values w=13 h=11 x= 0 y= 1 dx=12 dy= 0 ascent= 9 len=18 + Font Bounding box w=13 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_m2icon_9[471] U8G_SECTION(".progmem.u8g_font_m2icon_9") = { + 0,13,11,0,254,8,0,17,1,111,65,105,254,9,254,8, + 254,10,8,16,11,0,0,15,128,255,192,128,64,128,64,128, + 64,128,64,128,64,255,192,6,8,8,7,0,0,60,84,148, + 244,132,132,132,252,6,5,5,7,0,1,204,120,48,120,204, + 10,7,14,12,0,0,0,192,1,128,3,0,198,0,108,0, + 56,0,16,0,8,8,8,9,0,0,255,129,129,129,129,129, + 129,255,8,8,8,9,0,0,255,129,189,189,189,189,129,255, + 8,8,8,9,0,0,255,255,255,255,255,255,255,255,9,9, + 18,10,0,0,255,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,255,128,9,9,18,10,0,0,255,128,128,128, + 190,128,190,128,190,128,190,128,190,128,128,128,255,128,9,9, + 18,11,0,0,255,128,255,128,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,8,8,8,8,0,0,254,131,131,131, + 131,131,255,127,8,8,8,9,0,0,254,131,187,187,187,131, + 255,127,8,8,8,9,0,0,254,255,255,255,255,255,255,127, + 9,9,18,10,0,0,255,0,129,128,129,128,129,128,129,128, + 129,128,129,128,255,128,127,128,9,9,18,10,0,0,255,0, + 129,128,189,128,189,128,189,128,189,128,129,128,255,128,127,128, + 9,9,18,10,0,0,255,0,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,127,128,8,8,8,9,0,0,60,66, + 129,129,129,129,66,60,8,8,8,9,0,0,60,66,153,189, + 189,153,66,60,8,8,8,9,0,0,60,126,255,255,255,255, + 126,60,255,255,255,255,255,255,255,255,255,255,255,255,255,10, + 8,16,11,0,0,24,0,40,0,79,192,128,64,128,64,79, + 192,40,0,24,0,8,9,9,9,0,0,24,36,66,129,231, + 36,36,36,60,255,255,255,13,8,16,11,0,0,15,128,255, + 192,128,64,128,64,159,248,160,16,192,32,255,192,1,11,11, + 2,0,254,128,128,128,128,128,128,128,128,128,128,128,9,9, + 18,10,0,0,8,0,0,0,8,0,8,0,190,128,8,0, + 8,0,0,0,8,0,255}; +/* + Fontname: micro + Copyright: Public domain font. Share and enjoy. + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 1 y= 5 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 4 h= 5 x= 0 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_micro[855] U8G_SECTION(".progmem.u8g_font_micro") = { + 1,4,5,0,0,5,0,255,1,245,32,255,0,5,0,5, + 0,7,0,64,2,37,69,192,192,192,0,192,5,50,66,160, + 160,2,53,69,160,224,160,224,160,2,53,69,64,224,192,96, + 224,3,52,68,160,96,192,160,2,53,69,64,64,224,192,64, + 21,34,66,64,192,18,37,69,64,128,128,128,64,2,37,69, + 128,64,64,64,128,2,53,69,160,64,224,64,160,3,51,67, + 64,224,64,2,34,66,64,192,4,49,65,224,2,34,66,192, + 192,2,53,69,32,32,64,64,128,2,53,69,64,160,160,160, + 64,2,37,69,64,192,64,64,64,2,53,69,192,32,64,128, + 224,2,53,69,192,32,96,32,224,2,53,69,160,160,160,224, + 32,2,53,69,224,128,192,32,192,2,53,69,96,128,224,160, + 224,2,53,69,224,32,32,64,64,2,53,69,224,160,224,160, + 224,2,53,69,224,160,224,32,192,2,37,69,192,192,0,192, + 192,2,37,69,192,192,0,64,192,2,53,69,32,64,128,64, + 32,3,51,67,224,0,224,2,53,69,128,64,32,64,128,2, + 53,69,224,32,96,0,64,2,53,69,96,160,192,128,96,2, + 53,69,224,160,224,160,160,2,53,69,224,160,192,160,224,2, + 53,69,224,128,128,128,224,2,53,69,192,160,160,160,192,2, + 53,69,224,128,224,128,224,2,53,69,224,128,224,128,128,2, + 53,69,224,128,160,160,224,2,53,69,160,160,224,160,160,2, + 53,69,224,64,64,64,224,2,53,69,32,32,32,160,224,2, + 53,69,160,160,192,160,160,2,53,69,128,128,128,128,224,2, + 53,69,160,224,160,160,160,2,53,69,224,160,160,160,160,2, + 53,69,224,160,160,160,224,2,53,69,224,160,224,128,128,2, + 53,69,224,160,160,192,96,2,53,69,224,160,192,160,160,2, + 53,69,224,128,224,32,224,2,53,69,224,64,64,64,64,2, + 53,69,160,160,160,160,224,2,53,69,160,160,160,160,64,2, + 53,69,160,160,160,224,160,2,53,69,160,224,64,224,160,2, + 53,69,160,160,224,64,64,2,53,69,224,32,64,128,224,18, + 37,69,192,128,128,128,192,2,53,69,128,128,64,64,32,2, + 37,69,192,64,64,64,192,5,50,66,64,160,2,49,65,224, + 21,34,66,128,192,2,52,68,224,96,160,224,2,53,69,128, + 224,160,160,224,2,52,68,224,128,128,224,2,53,69,32,224, + 160,160,224,2,52,68,224,160,192,224,2,53,69,96,128,192, + 128,128,2,52,68,224,160,96,224,2,53,69,128,224,160,160, + 160,18,20,68,128,128,128,128,2,52,68,32,32,160,224,2, + 53,69,128,160,192,192,160,2,37,69,192,64,64,64,64,2, + 52,68,160,224,160,160,2,52,68,224,160,160,160,2,52,68, + 224,160,160,224,2,52,68,224,160,224,128,2,52,68,224,160, + 224,32,2,52,68,224,160,128,128,2,52,68,224,192,96,224, + 2,53,69,64,224,64,64,96,2,52,68,160,160,160,224,2, + 52,68,160,160,160,64,2,52,68,160,160,224,160,2,52,68, + 160,64,64,160,2,52,68,160,160,96,192,2,52,68,224,96, + 192,224,2,53,69,96,64,192,64,96,18,21,69,128,128,128, + 128,128,2,53,69,192,64,96,64,192,4,50,66,192,96,2, + 53,69,96,64,64,64,192,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--11-80-100-100-P-66-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=11 x= 2 y= 6 dx=12 dy= 0 ascent=11 len=22 + Font Bounding box w=17 h=19 x=-2 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB08[2760] U8G_SECTION(".progmem.u8g_font_ncenB08") = { + 0,17,19,254,251,8,1,193,3,159,32,255,254,11,254,8, + 254,0,0,0,3,0,1,2,8,8,3,0,0,192,192,192, + 128,128,0,192,192,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,5,10,10,6, + 0,255,32,120,168,160,240,120,40,168,240,32,10,8,16,11, + 0,0,102,0,218,0,212,0,213,128,107,64,11,64,19,64, + 17,128,8,8,8,9,0,0,48,104,104,48,88,204,207,118, + 1,3,3,4,1,5,128,128,128,4,10,10,5,0,254,16, + 32,96,192,192,192,192,96,32,16,4,10,10,5,0,254,128, + 64,96,48,48,48,48,96,64,128,5,5,5,6,0,3,32, + 168,112,168,32,5,5,5,6,0,1,32,32,248,32,32,2, + 4,4,3,0,254,192,192,64,128,3,1,1,4,0,3,224, + 2,2,2,3,0,0,192,192,4,8,8,5,0,0,16,16, + 32,32,64,64,128,128,5,8,8,6,0,0,112,216,216,216, + 216,216,216,112,4,8,8,6,1,0,96,224,96,96,96,96, + 96,240,5,8,8,6,0,0,112,216,216,24,48,64,248,248, + 5,8,8,6,0,0,112,216,216,48,24,216,216,112,5,8, + 8,6,0,0,56,56,88,88,152,248,24,56,5,8,8,6, + 0,0,248,240,128,240,24,216,216,112,5,8,8,6,0,0, + 112,216,192,240,216,216,216,112,4,8,8,6,0,0,240,240, + 16,32,32,96,96,96,5,8,8,6,0,0,112,216,216,112, + 216,216,216,112,5,8,8,6,0,0,112,216,216,216,120,24, + 216,112,2,5,5,3,0,0,192,192,0,192,192,2,7,7, + 3,0,254,192,192,0,192,192,64,128,6,5,5,7,0,1, + 12,48,192,48,12,5,3,3,6,0,2,248,0,248,6,5, + 5,7,0,1,192,48,12,48,192,5,8,8,6,0,0,112, + 216,24,48,64,0,96,96,9,10,20,10,0,255,28,0,99, + 0,65,0,158,128,182,128,182,128,155,0,64,0,96,0,30, + 0,9,8,16,8,255,0,8,0,28,0,28,0,38,0,38, + 0,127,0,67,0,231,128,7,8,8,8,0,0,252,102,102, + 124,102,102,102,252,7,8,8,8,0,0,58,70,194,192,192, + 194,66,60,8,8,8,9,0,0,252,98,99,99,99,99,98, + 252,6,8,8,7,0,0,252,100,104,120,104,100,100,252,6, + 8,8,7,0,0,252,100,100,104,120,104,96,240,7,8,8, + 8,0,0,58,70,194,192,206,198,70,58,9,8,16,10,0, + 0,247,128,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,4,8,8,5,0,0,240,96,96,96,96,96,96,240,6, + 8,8,7,0,0,60,24,24,24,216,216,152,112,9,8,16, + 9,0,0,243,0,98,0,100,0,104,0,124,0,102,0,99, + 0,243,128,6,8,8,7,0,0,240,96,96,96,96,100,100, + 252,11,8,16,12,0,0,241,224,113,192,90,192,90,192,90, + 192,76,192,76,192,237,224,8,8,8,9,0,0,199,98,114, + 122,94,78,70,226,7,8,8,8,0,0,56,68,198,198,198, + 198,68,56,7,8,8,8,0,0,252,102,102,102,124,96,96, + 240,8,9,9,8,0,255,56,68,198,198,198,246,108,61,6, + 8,8,8,9,0,0,252,102,102,100,124,102,102,247,6,8, + 8,7,0,0,116,204,196,240,60,140,204,184,6,8,8,7, + 0,0,252,180,180,48,48,48,48,120,8,8,8,9,0,0, + 247,98,98,98,98,98,98,60,8,8,8,9,0,0,247,98, + 98,52,52,52,24,24,11,8,16,12,0,0,246,224,102,64, + 102,64,107,64,107,64,59,128,49,128,49,128,8,8,8,9, + 0,0,247,98,116,56,28,46,70,239,8,8,8,9,0,0, + 247,98,52,52,24,24,24,60,6,8,8,7,0,0,252,140, + 28,56,112,224,196,252,3,10,10,4,0,254,224,192,192,192, + 192,192,192,192,192,224,4,8,8,5,0,0,128,128,64,64, + 32,32,16,16,3,10,10,4,0,254,224,96,96,96,96,96, + 96,96,96,224,5,6,6,6,0,2,32,32,112,80,136,136, + 6,1,1,6,0,254,252,3,2,2,4,0,6,192,96,4, + 5,5,5,0,0,224,48,112,176,240,6,8,8,7,0,0, + 192,192,192,216,236,204,204,184,5,5,5,6,0,0,112,200, + 192,200,112,6,8,8,7,0,0,28,12,12,124,204,204,220, + 108,5,5,5,6,0,0,112,216,248,192,120,5,8,8,5, + 0,0,56,104,96,240,96,96,96,240,6,8,8,6,0,254, + 8,112,216,216,112,124,140,248,6,8,8,7,0,0,192,192, + 192,216,236,204,204,204,4,8,8,5,0,0,96,96,0,224, + 96,96,96,240,3,10,10,5,0,254,96,96,0,224,96,96, + 96,96,96,192,6,8,8,6,0,0,192,192,192,216,240,240, + 216,220,4,8,8,5,0,0,224,96,96,96,96,96,96,240, + 10,5,10,11,0,0,217,128,238,192,204,192,204,192,204,192, + 6,5,5,7,0,0,216,236,204,204,204,6,5,5,7,0, + 0,120,204,204,204,120,6,7,7,7,0,254,216,236,204,204, + 248,192,224,7,7,7,7,0,254,124,204,204,220,108,12,30, + 4,5,5,5,0,0,208,240,192,192,192,4,5,5,5,0, + 0,112,192,240,48,224,3,7,7,4,0,0,64,192,224,192, + 192,192,96,6,5,5,7,0,0,204,204,204,220,108,6,5, + 5,7,0,0,236,104,104,48,48,9,5,10,10,0,0,237, + 128,109,0,109,0,54,0,54,0,6,5,5,7,0,0,236, + 104,48,88,220,6,7,7,7,0,254,236,104,104,48,48,224, + 192,5,5,5,6,0,0,248,176,96,200,248,4,10,10,5, + 0,254,48,96,96,96,192,96,96,96,96,48,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,4,10,10,5,0,254, + 192,96,96,96,48,96,96,96,96,192,6,2,2,7,0,3, + 116,184,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,3,0,1,2,8,8,3,0,254,192, + 192,0,64,64,192,192,192,5,7,7,6,0,255,8,120,208, + 208,232,112,64,7,8,8,8,0,0,60,100,96,252,48,98, + 190,220,7,5,5,8,0,1,186,108,108,108,186,8,8,8, + 9,0,0,247,98,52,54,24,62,24,60,1,8,8,6,2, + 0,128,128,128,0,128,128,128,128,4,10,10,5,0,254,112, + 144,192,96,176,208,96,48,144,224,3,2,2,4,0,6,160, + 160,8,8,8,9,0,0,60,66,157,165,161,157,66,60,3, + 6,6,4,0,2,192,32,224,160,0,224,6,5,5,7,0, + 0,36,108,216,108,36,5,3,3,6,0,2,248,8,8,3, + 1,1,4,0,3,224,8,8,8,9,0,0,60,66,189,165, + 185,173,66,60,4,1,1,5,0,6,240,3,4,4,4,0, + 4,64,160,160,64,5,5,5,6,0,1,32,248,32,0,248, + 3,4,4,3,0,4,96,160,64,224,3,4,4,3,0,4, + 224,64,32,192,3,2,2,4,0,6,96,192,6,7,7,7, + 0,254,204,204,204,220,236,192,192,7,8,8,8,0,0,126, + 244,244,116,20,20,20,62,2,2,2,3,0,3,192,192,2, + 3,3,4,1,254,128,64,192,3,4,4,3,0,4,64,192, + 64,224,4,6,6,5,0,2,96,144,144,96,0,240,6,5, + 5,7,0,0,144,216,108,216,144,8,8,8,9,0,0,68, + 196,72,232,18,22,47,34,8,8,8,9,0,0,68,196,72, + 232,19,21,34,39,8,8,8,9,0,0,228,68,40,200,18, + 22,47,34,5,8,8,6,0,254,48,48,0,16,96,192,216, + 112,9,11,22,8,255,0,48,0,24,0,0,0,8,0,28, + 0,28,0,38,0,38,0,127,0,67,0,231,128,9,11,22, + 8,255,0,6,0,12,0,0,0,8,0,28,0,28,0,38, + 0,38,0,127,0,67,0,231,128,9,11,22,8,255,0,28, + 0,54,0,0,0,8,0,28,0,28,0,38,0,38,0,127, + 0,67,0,231,128,9,11,22,8,255,0,26,0,44,0,0, + 0,8,0,28,0,28,0,38,0,38,0,127,0,67,0,231, + 128,9,11,22,8,255,0,20,0,20,0,0,0,8,0,28, + 0,28,0,38,0,38,0,127,0,67,0,231,128,9,11,22, + 8,255,0,24,0,36,0,24,0,8,0,28,0,28,0,38, + 0,38,0,127,0,67,0,231,128,10,8,16,11,0,0,63, + 192,22,64,22,128,39,128,62,128,70,64,70,64,239,192,7, + 10,10,8,0,254,58,70,194,192,192,194,66,60,16,48,6, + 11,11,7,0,0,96,48,0,252,100,104,120,104,100,100,252, + 6,11,11,7,0,0,24,48,0,252,100,104,120,104,100,100, + 252,6,11,11,7,0,0,56,108,0,252,100,104,120,104,100, + 100,252,6,11,11,7,0,0,40,40,0,252,100,104,120,104, + 100,100,252,4,11,11,5,0,0,192,96,0,240,96,96,96, + 96,96,96,240,4,11,11,5,0,0,48,96,0,240,96,96, + 96,96,96,96,240,5,11,11,5,0,0,112,216,0,240,96, + 96,96,96,96,96,240,4,11,11,5,0,0,80,80,0,240, + 96,96,96,96,96,96,240,8,8,8,9,0,0,252,98,99, + 243,99,99,98,252,8,11,11,9,0,0,26,44,0,199,98, + 114,122,94,78,70,226,7,11,11,8,0,0,48,24,0,56, + 68,198,198,198,198,68,56,7,11,11,8,0,0,24,48,0, + 56,68,198,198,198,198,68,56,7,11,11,8,0,0,56,108, + 0,56,68,198,198,198,198,68,56,7,11,11,8,0,0,52, + 88,0,56,68,198,198,198,198,68,56,7,11,11,8,0,0, + 40,40,0,56,68,198,198,198,198,68,56,5,5,5,6,0, + 1,216,112,32,112,216,7,8,8,8,0,0,58,68,206,214, + 214,230,68,184,8,11,11,9,0,0,48,24,0,247,98,98, + 98,98,98,98,60,8,11,11,9,0,0,12,24,0,247,98, + 98,98,98,98,98,60,8,11,11,9,0,0,28,54,0,247, + 98,98,98,98,98,98,60,8,11,11,9,0,0,20,20,0, + 247,98,98,98,98,98,98,60,8,11,11,9,0,0,12,24, + 0,247,98,52,52,24,24,24,60,7,8,8,8,0,0,224, + 124,102,102,102,124,96,240,7,8,8,8,0,0,60,102,102, + 108,102,102,102,236,4,8,8,5,0,0,192,96,0,224,48, + 112,176,240,4,8,8,5,0,0,48,96,0,224,48,112,176, + 240,5,9,9,5,0,0,32,112,216,0,224,48,112,176,240, + 5,8,8,5,0,0,104,176,0,224,48,112,176,240,4,8, + 8,5,0,0,160,160,0,224,48,112,176,240,4,8,8,5, + 0,0,96,144,96,224,48,112,176,240,8,5,5,9,0,0, + 238,155,127,216,239,5,7,7,6,0,254,112,200,192,200,112, + 32,96,5,8,8,6,0,0,96,48,0,112,216,248,192,120, + 5,8,8,6,0,0,48,96,0,112,216,248,192,120,5,9, + 9,6,0,0,32,112,216,0,112,216,248,192,120,5,8,8, + 6,0,0,80,80,0,112,216,248,192,120,4,8,8,5,0, + 0,192,96,0,224,96,96,96,240,4,8,8,5,0,0,48, + 96,0,224,96,96,96,240,5,9,9,5,0,0,32,112,216, + 0,224,96,96,96,240,4,8,8,5,0,0,160,160,0,224, + 96,96,96,240,6,8,8,7,0,0,200,112,144,120,204,204, + 204,120,6,8,8,7,0,0,104,176,0,216,236,204,204,204, + 6,8,8,7,0,0,96,48,0,120,204,204,204,120,6,8, + 8,7,0,0,24,48,0,120,204,204,204,120,6,9,9,7, + 0,0,32,112,216,0,120,204,204,204,120,6,8,8,7,0, + 0,52,88,0,120,204,204,204,120,6,8,8,7,0,0,80, + 80,0,120,204,204,204,120,5,5,5,6,0,1,32,0,248, + 0,32,6,7,7,7,0,255,4,120,220,236,204,120,128,6, + 8,8,7,0,0,96,48,0,204,204,204,220,108,6,8,8, + 7,0,0,24,48,0,204,204,204,220,108,6,9,9,7,0, + 0,32,112,216,0,204,204,204,220,108,6,8,8,7,0,0, + 80,80,0,204,204,204,220,108,6,10,10,7,0,254,24,48, + 0,236,104,104,48,48,224,192,6,10,10,7,0,254,192,192, + 192,216,236,204,204,248,192,224,6,10,10,7,0,254,80,80, + 0,236,104,104,48,48,224,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--11-80-100-100-P-66-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=10 x= 2 y= 6 dx=12 dy= 0 ascent= 9 len=20 + Font Bounding box w=17 h=19 x=-2 y=-5 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB08r[1315] U8G_SECTION(".progmem.u8g_font_ncenB08r") = { + 0,17,19,254,251,8,1,193,3,159,32,127,254,9,254,8, + 254,0,0,0,3,0,1,2,8,8,3,0,0,192,192,192, + 128,128,0,192,192,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,5,10,10,6, + 0,255,32,120,168,160,240,120,40,168,240,32,10,8,16,11, + 0,0,102,0,218,0,212,0,213,128,107,64,11,64,19,64, + 17,128,8,8,8,9,0,0,48,104,104,48,88,204,207,118, + 1,3,3,4,1,5,128,128,128,4,10,10,5,0,254,16, + 32,96,192,192,192,192,96,32,16,4,10,10,5,0,254,128, + 64,96,48,48,48,48,96,64,128,5,5,5,6,0,3,32, + 168,112,168,32,5,5,5,6,0,1,32,32,248,32,32,2, + 4,4,3,0,254,192,192,64,128,3,1,1,4,0,3,224, + 2,2,2,3,0,0,192,192,4,8,8,5,0,0,16,16, + 32,32,64,64,128,128,5,8,8,6,0,0,112,216,216,216, + 216,216,216,112,4,8,8,6,1,0,96,224,96,96,96,96, + 96,240,5,8,8,6,0,0,112,216,216,24,48,64,248,248, + 5,8,8,6,0,0,112,216,216,48,24,216,216,112,5,8, + 8,6,0,0,56,56,88,88,152,248,24,56,5,8,8,6, + 0,0,248,240,128,240,24,216,216,112,5,8,8,6,0,0, + 112,216,192,240,216,216,216,112,4,8,8,6,0,0,240,240, + 16,32,32,96,96,96,5,8,8,6,0,0,112,216,216,112, + 216,216,216,112,5,8,8,6,0,0,112,216,216,216,120,24, + 216,112,2,5,5,3,0,0,192,192,0,192,192,2,7,7, + 3,0,254,192,192,0,192,192,64,128,6,5,5,7,0,1, + 12,48,192,48,12,5,3,3,6,0,2,248,0,248,6,5, + 5,7,0,1,192,48,12,48,192,5,8,8,6,0,0,112, + 216,24,48,64,0,96,96,9,10,20,10,0,255,28,0,99, + 0,65,0,158,128,182,128,182,128,155,0,64,0,96,0,30, + 0,9,8,16,8,255,0,8,0,28,0,28,0,38,0,38, + 0,127,0,67,0,231,128,7,8,8,8,0,0,252,102,102, + 124,102,102,102,252,7,8,8,8,0,0,58,70,194,192,192, + 194,66,60,8,8,8,9,0,0,252,98,99,99,99,99,98, + 252,6,8,8,7,0,0,252,100,104,120,104,100,100,252,6, + 8,8,7,0,0,252,100,100,104,120,104,96,240,7,8,8, + 8,0,0,58,70,194,192,206,198,70,58,9,8,16,10,0, + 0,247,128,99,0,99,0,127,0,99,0,99,0,99,0,247, + 128,4,8,8,5,0,0,240,96,96,96,96,96,96,240,6, + 8,8,7,0,0,60,24,24,24,216,216,152,112,9,8,16, + 9,0,0,243,0,98,0,100,0,104,0,124,0,102,0,99, + 0,243,128,6,8,8,7,0,0,240,96,96,96,96,100,100, + 252,11,8,16,12,0,0,241,224,113,192,90,192,90,192,90, + 192,76,192,76,192,237,224,8,8,8,9,0,0,199,98,114, + 122,94,78,70,226,7,8,8,8,0,0,56,68,198,198,198, + 198,68,56,7,8,8,8,0,0,252,102,102,102,124,96,96, + 240,8,9,9,8,0,255,56,68,198,198,198,246,108,61,6, + 8,8,8,9,0,0,252,102,102,100,124,102,102,247,6,8, + 8,7,0,0,116,204,196,240,60,140,204,184,6,8,8,7, + 0,0,252,180,180,48,48,48,48,120,8,8,8,9,0,0, + 247,98,98,98,98,98,98,60,8,8,8,9,0,0,247,98, + 98,52,52,52,24,24,11,8,16,12,0,0,246,224,102,64, + 102,64,107,64,107,64,59,128,49,128,49,128,8,8,8,9, + 0,0,247,98,116,56,28,46,70,239,8,8,8,9,0,0, + 247,98,52,52,24,24,24,60,6,8,8,7,0,0,252,140, + 28,56,112,224,196,252,3,10,10,4,0,254,224,192,192,192, + 192,192,192,192,192,224,4,8,8,5,0,0,128,128,64,64, + 32,32,16,16,3,10,10,4,0,254,224,96,96,96,96,96, + 96,96,96,224,5,6,6,6,0,2,32,32,112,80,136,136, + 6,1,1,6,0,254,252,3,2,2,4,0,6,192,96,4, + 5,5,5,0,0,224,48,112,176,240,6,8,8,7,0,0, + 192,192,192,216,236,204,204,184,5,5,5,6,0,0,112,200, + 192,200,112,6,8,8,7,0,0,28,12,12,124,204,204,220, + 108,5,5,5,6,0,0,112,216,248,192,120,5,8,8,5, + 0,0,56,104,96,240,96,96,96,240,6,8,8,6,0,254, + 8,112,216,216,112,124,140,248,6,8,8,7,0,0,192,192, + 192,216,236,204,204,204,4,8,8,5,0,0,96,96,0,224, + 96,96,96,240,3,10,10,5,0,254,96,96,0,224,96,96, + 96,96,96,192,6,8,8,6,0,0,192,192,192,216,240,240, + 216,220,4,8,8,5,0,0,224,96,96,96,96,96,96,240, + 10,5,10,11,0,0,217,128,238,192,204,192,204,192,204,192, + 6,5,5,7,0,0,216,236,204,204,204,6,5,5,7,0, + 0,120,204,204,204,120,6,7,7,7,0,254,216,236,204,204, + 248,192,224,7,7,7,7,0,254,124,204,204,220,108,12,30, + 4,5,5,5,0,0,208,240,192,192,192,4,5,5,5,0, + 0,112,192,240,48,224,3,7,7,4,0,0,64,192,224,192, + 192,192,96,6,5,5,7,0,0,204,204,204,220,108,6,5, + 5,7,0,0,236,104,104,48,48,9,5,10,10,0,0,237, + 128,109,0,109,0,54,0,54,0,6,5,5,7,0,0,236, + 104,48,88,220,6,7,7,7,0,254,236,104,104,48,48,224, + 192,5,5,5,6,0,0,248,176,96,200,248,4,10,10,5, + 0,254,48,96,96,96,192,96,96,96,96,48,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,4,10,10,5,0,254, + 192,96,96,96,48,96,96,96,96,192,6,2,2,7,0,3, + 116,184,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--14-100-100-100-P-87-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=15 x= 3 y= 8 dx=15 dy= 0 ascent=15 len=30 + Font Bounding box w=20 h=25 x=-2 y=-6 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =15 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB10[4003] U8G_SECTION(".progmem.u8g_font_ncenB10") = { + 0,20,25,254,250,11,2,24,5,41,32,255,253,15,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,128,128,0,192,192,192,3,4,4,5,1,7,160,160, + 160,160,7,10,10,8,0,0,20,20,20,126,40,40,252,80, + 80,80,7,13,13,8,0,255,16,124,214,150,208,240,124,30, + 22,210,214,124,16,12,11,22,13,0,0,48,128,111,0,201, + 0,202,0,210,0,100,96,4,208,9,144,9,144,17,160,16, + 192,12,11,22,13,0,0,30,0,51,0,51,0,50,0,28, + 0,60,224,78,64,199,128,195,144,227,224,124,192,1,4,4, + 3,1,7,128,128,128,128,4,13,13,5,0,254,16,32,96, + 64,192,192,192,192,192,64,96,32,16,4,13,13,5,0,254, + 128,64,96,32,48,48,48,48,48,32,96,64,128,5,5,5, + 6,0,6,32,168,112,168,32,7,7,7,8,0,1,16,16, + 16,254,16,16,16,2,5,5,4,1,254,192,192,192,64,128, + 4,2,2,5,0,3,240,240,2,3,3,4,1,0,192,192, + 192,4,11,11,5,0,0,16,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,108,198,198,198,198,198,198, + 198,108,56,5,11,11,8,1,0,48,240,48,48,48,48,48, + 48,48,48,120,7,11,11,8,0,0,120,206,198,6,6,12, + 24,48,98,254,254,7,11,11,8,0,0,120,206,198,6,12, + 60,6,6,198,206,120,7,11,11,8,0,0,12,28,28,44, + 44,76,76,254,12,12,30,7,11,11,8,0,0,126,124,64, + 64,92,110,6,6,198,206,120,7,11,11,8,0,0,60,102, + 198,192,220,238,198,198,198,230,120,7,11,11,8,0,0,254, + 254,132,140,12,24,24,24,48,48,48,7,11,11,8,0,0, + 120,230,198,198,244,60,94,198,198,206,60,7,11,11,8,0, + 0,60,206,198,198,198,238,118,6,198,204,120,2,7,7,4, + 1,0,192,192,192,0,192,192,192,2,9,9,4,1,254,192, + 192,192,0,192,192,192,64,128,7,7,7,8,0,1,2,14, + 56,224,56,14,2,7,3,3,8,0,3,254,0,254,7,7, + 7,8,0,1,128,224,56,14,56,224,128,6,11,11,7,0, + 0,120,204,204,12,24,48,32,0,48,48,48,13,11,22,14, + 0,0,15,192,56,112,99,152,108,216,204,216,217,152,217,176, + 219,176,205,192,96,16,63,224,10,11,22,11,0,0,12,0, + 12,0,22,0,22,0,18,0,35,0,35,0,63,0,65,128, + 65,128,227,192,9,11,22,10,0,0,254,0,99,0,99,0, + 99,0,102,0,127,0,97,128,97,128,97,128,99,128,254,0, + 10,11,22,11,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,192,0,192,0,96,64,112,192,31,0,11,11,22,12, + 0,0,255,0,97,192,96,192,96,96,96,96,96,96,96,96, + 96,96,96,192,97,192,255,0,9,11,22,10,0,0,255,128, + 97,128,96,128,100,128,100,0,124,0,100,0,100,128,96,128, + 97,128,255,128,9,11,22,10,0,0,255,128,97,128,96,128, + 100,128,100,0,124,0,100,0,100,0,96,0,96,0,240,0, + 11,11,22,12,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,195,224,192,192,96,192,113,192,30,64,11,11,22,12, + 0,0,241,224,96,192,96,192,96,192,96,192,127,192,96,192, + 96,192,96,192,96,192,241,224,4,11,11,7,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,11,11,9,0,0,30, + 12,12,12,12,12,12,204,204,156,112,11,11,22,12,0,0, + 243,192,97,0,98,0,100,0,104,0,124,0,110,0,103,0, + 99,128,97,192,243,224,9,11,22,10,0,0,240,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,128,96,128,97,128, + 255,128,13,11,22,14,0,0,240,120,112,112,112,112,88,176, + 88,176,88,176,77,48,77,48,77,48,70,48,230,120,11,11, + 22,12,0,0,224,224,112,64,120,64,92,64,76,64,70,64, + 71,64,67,192,65,192,64,192,224,64,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,9,11,22,10,0,0,255,0,99,128, + 97,128,97,128,99,128,126,0,96,0,96,0,96,0,96,0, + 240,0,11,14,28,12,0,253,31,0,113,192,96,192,192,96, + 192,96,192,96,192,96,220,96,102,192,115,192,31,0,3,32, + 3,160,1,192,11,11,22,12,0,0,255,0,99,128,97,128, + 97,128,99,0,126,0,99,0,99,0,97,128,97,160,241,192, + 9,11,22,10,0,0,61,0,227,0,193,0,193,0,240,0, + 126,0,15,128,129,128,129,128,195,128,190,0,10,11,22,11, + 0,0,255,192,204,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,30,0,11,11,22,12,0,0,240,224, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,96,64, + 48,128,31,0,10,11,22,11,0,0,241,192,96,128,96,128, + 49,0,49,0,49,0,26,0,26,0,26,0,12,0,12,0, + 13,11,22,14,0,0,247,184,99,16,99,16,99,16,53,160, + 53,160,53,160,53,160,24,192,24,192,24,192,11,11,22,12, + 0,0,249,224,112,192,48,128,25,0,13,0,14,0,22,0, + 19,0,33,128,97,192,243,224,10,11,22,11,0,0,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,12,0, + 12,0,30,0,8,11,11,9,0,0,255,195,135,142,12,24, + 48,113,225,195,255,4,13,13,5,0,254,240,192,192,192,192, + 192,192,192,192,192,192,192,240,6,11,11,7,0,0,128,128, + 64,64,32,32,16,16,8,8,4,4,13,13,5,0,254,240, + 48,48,48,48,48,48,48,48,48,48,48,240,7,7,7,8, + 0,4,16,16,56,40,108,68,198,7,1,1,7,0,254,254, + 4,3,3,6,1,8,192,96,16,8,7,7,9,0,0,60, + 102,6,62,198,206,119,9,11,22,10,0,0,224,0,96,0, + 96,0,96,0,110,0,115,0,97,128,97,128,97,128,99,0, + 94,0,7,7,7,8,0,0,60,102,198,192,194,102,60,9, + 11,22,10,0,0,7,0,3,0,3,0,3,0,59,0,103, + 0,195,0,195,0,195,0,103,0,59,128,8,7,7,9,0, + 0,60,102,195,255,192,99,62,6,11,11,6,0,0,56,108, + 108,96,248,96,96,96,96,96,240,7,11,11,8,0,253,6, + 124,198,198,124,128,252,126,130,134,124,9,11,22,10,0,0, + 224,0,96,0,96,0,96,0,110,0,115,0,99,0,99,0, + 99,0,99,0,247,128,4,10,10,5,0,0,96,96,0,224, + 96,96,96,96,96,240,5,13,13,5,254,253,24,24,0,56, + 24,24,24,24,24,24,24,216,112,8,11,11,9,0,0,224, + 96,96,96,103,102,108,120,108,102,231,4,11,11,5,0,0, + 224,96,96,96,96,96,96,96,96,96,240,14,7,14,15,0, + 0,238,112,115,152,99,24,99,24,99,24,99,24,247,188,9, + 7,14,10,0,0,238,0,115,0,99,0,99,0,99,0,99, + 0,247,128,8,7,7,9,0,0,60,102,195,195,195,102,60, + 9,10,20,10,0,253,238,0,115,0,97,128,97,128,97,128, + 115,0,110,0,96,0,96,0,240,0,9,10,20,9,0,253, + 61,0,103,0,195,0,195,0,195,0,103,0,59,0,3,0, + 3,0,7,128,7,7,7,7,0,0,238,118,96,96,96,96, + 240,6,7,7,7,0,0,124,196,224,120,28,140,248,6,10, + 10,6,0,0,32,32,96,248,96,96,96,100,100,56,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,8,7,7,7,255,0,247,98,98,52,52,24,24,13, + 7,14,12,255,0,247,184,99,16,99,16,53,160,53,160,24, + 192,24,192,8,7,7,9,0,0,231,102,60,24,60,70,231, + 8,10,10,7,255,253,247,98,98,52,52,24,24,16,208,224, + 6,7,7,7,0,0,252,140,24,48,96,196,252,5,13,13, + 6,0,254,24,32,96,96,96,64,128,64,96,96,96,32,24, + 1,11,11,8,3,0,128,128,128,128,128,128,128,128,128,128, + 128,5,13,13,6,0,254,192,32,48,48,48,16,8,16,48, + 48,48,32,192,7,2,2,8,0,4,118,220,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0, + 4,0,1,2,11,11,5,1,253,192,192,192,0,64,64,192, + 192,192,192,192,7,9,9,8,0,255,4,60,110,206,208,210, + 118,60,32,8,11,11,9,0,0,28,38,102,96,252,48,48, + 32,225,191,222,8,8,8,9,0,2,153,126,102,195,195,102, + 126,153,10,11,22,11,0,0,241,192,96,128,49,0,49,0, + 26,0,26,0,63,0,12,0,63,0,12,0,30,0,1,11, + 11,8,3,0,128,128,128,128,0,0,128,128,128,128,128,6, + 13,13,7,0,254,56,108,76,96,120,156,204,228,120,28,204, + 200,112,5,2,2,7,1,8,216,216,11,11,22,12,0,0, + 14,0,49,128,64,64,79,64,153,32,144,32,153,32,78,64, + 64,64,49,128,14,0,5,7,7,6,0,4,224,48,112,176, + 216,0,248,7,5,5,8,0,1,54,108,216,108,54,7,4, + 4,8,0,2,254,2,2,2,4,2,2,5,0,3,240,240, + 11,11,22,12,0,0,14,0,49,128,64,64,94,64,137,32, + 142,32,138,32,91,64,64,64,49,128,14,0,5,1,1,7, + 1,8,248,4,4,4,6,1,7,96,144,144,96,7,7,7, + 8,0,1,16,16,254,16,16,0,254,5,6,6,5,255,5, + 112,152,24,48,96,248,5,6,6,5,255,5,112,152,48,24, + 152,112,4,3,3,6,1,8,48,96,128,9,10,20,10,0, + 253,247,0,99,0,99,0,99,0,99,0,103,0,123,128,64, + 0,96,0,96,0,9,11,22,10,0,0,127,128,251,0,251, + 0,251,0,251,0,123,0,27,0,27,0,27,0,27,0,63, + 128,2,2,2,5,1,4,192,192,3,3,3,5,1,253,64, + 32,224,4,6,6,5,0,5,96,224,96,96,96,240,5,7, + 7,6,0,4,112,216,216,216,112,0,248,7,5,5,8,0, + 1,216,108,54,108,216,11,11,22,12,0,0,97,0,227,0, + 98,0,102,0,100,0,252,192,9,192,26,192,20,192,55,224, + 32,192,11,11,22,12,0,0,97,0,227,0,98,0,102,0, + 100,0,253,192,10,96,24,96,16,192,49,128,35,224,12,11, + 22,12,255,0,112,128,153,128,49,0,27,0,154,0,118,96, + 4,224,13,96,10,96,27,240,16,96,6,11,11,7,0,253, + 48,48,48,0,16,48,96,192,204,204,120,10,15,30,11,0, + 0,48,0,24,0,4,0,0,0,12,0,12,0,22,0,22, + 0,18,0,35,0,35,0,63,0,65,128,65,128,227,192,10, + 15,30,11,0,0,3,0,6,0,8,0,0,0,12,0,12, + 0,22,0,22,0,18,0,35,0,35,0,63,0,65,128,65, + 128,227,192,10,15,30,11,0,0,4,0,14,0,17,0,0, + 0,12,0,12,0,22,0,22,0,18,0,35,0,35,0,63, + 0,65,128,65,128,227,192,10,14,28,11,0,0,29,0,46, + 0,0,0,12,0,12,0,22,0,22,0,18,0,35,0,35, + 0,63,0,65,128,65,128,227,192,10,14,28,11,0,0,51, + 0,51,0,0,0,12,0,12,0,22,0,22,0,18,0,35, + 0,35,0,63,0,65,128,65,128,227,192,10,15,30,11,0, + 0,12,0,18,0,12,0,0,0,12,0,12,0,22,0,22, + 0,18,0,35,0,35,0,63,0,65,128,65,128,227,192,15, + 11,22,15,255,0,15,254,5,134,5,130,9,146,9,144,17, + 240,31,144,33,146,33,130,65,134,227,254,10,14,28,11,0, + 253,31,64,112,192,96,64,192,64,192,0,192,0,192,0,192, + 0,96,64,112,192,31,0,4,0,2,0,14,0,9,15,30, + 10,0,0,24,0,12,0,2,0,0,0,255,128,97,128,96, + 128,100,128,100,0,124,0,100,0,100,128,96,128,97,128,255, + 128,9,15,30,10,0,0,3,0,6,0,8,0,0,0,255, + 128,97,128,96,128,100,128,100,0,124,0,100,0,100,128,96, + 128,97,128,255,128,9,15,30,10,0,0,4,0,14,0,17, + 0,0,0,255,128,97,128,96,128,100,128,100,0,124,0,100, + 0,100,128,96,128,97,128,255,128,9,14,28,10,0,0,51, + 0,51,0,0,0,255,128,97,128,96,128,100,128,100,0,124, + 0,100,0,100,128,96,128,97,128,255,128,4,15,15,7,1, + 0,192,96,16,0,240,96,96,96,96,96,96,96,96,96,240, + 5,15,15,7,1,0,24,48,64,0,240,96,96,96,96,96, + 96,96,96,96,240,5,15,15,7,1,0,32,112,136,0,240, + 96,96,96,96,96,96,96,96,96,240,6,14,14,7,0,0, + 204,204,0,120,48,48,48,48,48,48,48,48,48,120,11,11, + 22,12,0,0,255,0,97,192,96,192,96,96,96,96,248,96, + 96,96,96,96,96,192,97,192,255,0,11,14,28,12,0,0, + 14,128,23,0,0,0,224,224,112,64,120,64,92,64,76,64, + 70,64,71,64,67,192,65,192,64,192,224,64,11,15,30,12, + 0,0,24,0,12,0,2,0,0,0,31,0,113,192,96,192, + 192,96,192,96,192,96,192,96,192,96,96,192,113,192,31,0, + 11,15,30,12,0,0,0,192,1,128,2,0,0,0,31,0, + 113,192,96,192,192,96,192,96,192,96,192,96,192,96,96,192, + 113,192,31,0,11,15,30,12,0,0,4,0,14,0,17,0, + 0,0,31,0,113,192,96,192,192,96,192,96,192,96,192,96, + 192,96,96,192,113,192,31,0,11,14,28,12,0,0,14,128, + 23,0,0,0,31,0,113,192,96,192,192,96,192,96,192,96, + 192,96,192,96,96,192,113,192,31,0,11,14,28,12,0,0, + 25,128,25,128,0,0,31,0,113,192,96,192,192,96,192,96, + 192,96,192,96,192,96,96,192,113,192,31,0,8,7,7,8, + 0,1,195,102,60,24,60,102,195,11,11,22,12,0,0,31, + 32,113,192,96,192,193,96,194,96,196,96,200,96,208,96,96, + 192,113,192,159,0,11,15,30,12,0,0,12,0,6,0,1, + 0,0,0,240,224,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,48,128,31,0,11,15,30,12,0,0,1, + 128,3,0,4,0,0,0,240,224,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,48,128,31,0,11,15,30, + 12,0,0,4,0,14,0,17,0,0,0,240,224,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,48,128,31, + 0,11,14,28,12,0,0,25,128,25,128,0,0,240,224,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,96,64,48, + 128,31,0,10,15,30,11,0,0,1,128,3,0,4,0,0, + 0,241,192,96,128,49,0,49,0,26,0,26,0,12,0,12, + 0,12,0,12,0,30,0,9,11,22,10,0,0,240,0,96, + 0,127,0,99,128,97,128,97,128,99,128,126,0,96,0,96, + 0,240,0,8,11,11,9,0,0,30,35,99,98,108,98,99, + 99,99,99,238,8,11,11,9,0,0,48,24,4,0,60,102, + 6,62,198,206,119,8,11,11,9,0,0,12,24,32,0,60, + 102,6,62,198,206,119,8,11,11,9,0,0,16,56,108,0, + 60,102,6,62,198,206,119,8,10,10,9,0,0,52,88,0, + 60,102,6,62,198,206,119,8,10,10,9,0,0,108,108,0, + 60,102,6,62,198,206,119,8,11,11,9,0,0,24,36,24, + 0,60,102,6,62,198,206,119,13,7,14,14,0,0,57,224, + 103,48,6,24,63,248,198,0,199,24,121,240,7,10,10,8, + 0,253,60,102,198,192,194,102,60,16,8,56,8,11,11,9, + 0,0,48,24,4,0,60,102,195,255,192,99,62,8,11,11, + 9,0,0,12,24,32,0,60,102,195,255,192,99,62,8,11, + 11,9,0,0,16,56,108,0,60,102,195,255,192,99,62,8, + 10,10,9,0,0,108,108,0,60,102,195,255,192,99,62,4, + 11,11,5,0,0,192,96,16,0,224,96,96,96,96,96,240, + 4,11,11,5,0,0,48,96,128,0,224,96,96,96,96,96, + 240,5,11,11,5,0,0,32,112,216,0,224,96,96,96,96, + 96,240,5,10,10,5,0,0,216,216,0,224,96,96,96,96, + 96,240,8,11,11,9,0,0,198,56,120,140,62,102,195,195, + 195,102,60,9,10,20,10,0,0,26,0,44,0,0,0,238, + 0,115,0,99,0,99,0,99,0,99,0,247,128,8,11,11, + 9,0,0,48,24,4,0,60,102,195,195,195,102,60,8,11, + 11,9,0,0,12,24,32,0,60,102,195,195,195,102,60,8, + 11,11,9,0,0,16,56,108,0,60,102,195,195,195,102,60, + 8,10,10,9,0,0,52,88,0,60,102,195,195,195,102,60, + 8,10,10,9,0,0,108,108,0,60,102,195,195,195,102,60, + 8,7,7,8,0,1,24,24,0,255,0,24,24,8,9,9, + 9,0,255,2,60,110,203,211,211,102,60,64,9,11,22,10, + 0,0,48,0,24,0,4,0,0,0,247,128,99,0,99,0, + 99,0,99,0,103,0,59,128,9,11,22,10,0,0,12,0, + 24,0,32,0,0,0,247,128,99,0,99,0,99,0,99,0, + 103,0,59,128,9,11,22,10,0,0,8,0,28,0,54,0, + 0,0,247,128,99,0,99,0,99,0,99,0,103,0,59,128, + 9,10,20,10,0,0,54,0,54,0,0,0,247,128,99,0, + 99,0,99,0,99,0,103,0,59,128,8,14,14,7,255,253, + 6,12,16,0,247,98,98,52,52,24,24,16,208,224,9,14, + 28,10,0,253,224,0,96,0,96,0,96,0,110,0,115,0, + 97,128,97,128,97,128,115,0,110,0,96,0,96,0,240,0, + 8,13,13,7,255,253,54,54,0,247,98,98,52,52,24,24, + 16,208,224}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--14-100-100-100-P-87-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=14 h=14 x= 3 y= 8 dx=15 dy= 0 ascent=12 len=28 + Font Bounding box w=20 h=25 x=-2 y=-6 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB10r[1853] U8G_SECTION(".progmem.u8g_font_ncenB10r") = { + 0,20,25,254,250,11,2,24,5,41,32,127,253,12,253,11, + 253,0,0,0,4,0,1,2,11,11,4,1,0,192,192,192, + 192,192,128,128,0,192,192,192,3,4,4,5,1,7,160,160, + 160,160,7,10,10,8,0,0,20,20,20,126,40,40,252,80, + 80,80,7,13,13,8,0,255,16,124,214,150,208,240,124,30, + 22,210,214,124,16,12,11,22,13,0,0,48,128,111,0,201, + 0,202,0,210,0,100,96,4,208,9,144,9,144,17,160,16, + 192,12,11,22,13,0,0,30,0,51,0,51,0,50,0,28, + 0,60,224,78,64,199,128,195,144,227,224,124,192,1,4,4, + 3,1,7,128,128,128,128,4,13,13,5,0,254,16,32,96, + 64,192,192,192,192,192,64,96,32,16,4,13,13,5,0,254, + 128,64,96,32,48,48,48,48,48,32,96,64,128,5,5,5, + 6,0,6,32,168,112,168,32,7,7,7,8,0,1,16,16, + 16,254,16,16,16,2,5,5,4,1,254,192,192,192,64,128, + 4,2,2,5,0,3,240,240,2,3,3,4,1,0,192,192, + 192,4,11,11,5,0,0,16,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,108,198,198,198,198,198,198, + 198,108,56,5,11,11,8,1,0,48,240,48,48,48,48,48, + 48,48,48,120,7,11,11,8,0,0,120,206,198,6,6,12, + 24,48,98,254,254,7,11,11,8,0,0,120,206,198,6,12, + 60,6,6,198,206,120,7,11,11,8,0,0,12,28,28,44, + 44,76,76,254,12,12,30,7,11,11,8,0,0,126,124,64, + 64,92,110,6,6,198,206,120,7,11,11,8,0,0,60,102, + 198,192,220,238,198,198,198,230,120,7,11,11,8,0,0,254, + 254,132,140,12,24,24,24,48,48,48,7,11,11,8,0,0, + 120,230,198,198,244,60,94,198,198,206,60,7,11,11,8,0, + 0,60,206,198,198,198,238,118,6,198,204,120,2,7,7,4, + 1,0,192,192,192,0,192,192,192,2,9,9,4,1,254,192, + 192,192,0,192,192,192,64,128,7,7,7,8,0,1,2,14, + 56,224,56,14,2,7,3,3,8,0,3,254,0,254,7,7, + 7,8,0,1,128,224,56,14,56,224,128,6,11,11,7,0, + 0,120,204,204,12,24,48,32,0,48,48,48,13,11,22,14, + 0,0,15,192,56,112,99,152,108,216,204,216,217,152,217,176, + 219,176,205,192,96,16,63,224,10,11,22,11,0,0,12,0, + 12,0,22,0,22,0,18,0,35,0,35,0,63,0,65,128, + 65,128,227,192,9,11,22,10,0,0,254,0,99,0,99,0, + 99,0,102,0,127,0,97,128,97,128,97,128,99,128,254,0, + 10,11,22,11,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,192,0,192,0,96,64,112,192,31,0,11,11,22,12, + 0,0,255,0,97,192,96,192,96,96,96,96,96,96,96,96, + 96,96,96,192,97,192,255,0,9,11,22,10,0,0,255,128, + 97,128,96,128,100,128,100,0,124,0,100,0,100,128,96,128, + 97,128,255,128,9,11,22,10,0,0,255,128,97,128,96,128, + 100,128,100,0,124,0,100,0,100,0,96,0,96,0,240,0, + 11,11,22,12,0,0,31,64,112,192,96,64,192,64,192,0, + 192,0,195,224,192,192,96,192,113,192,30,64,11,11,22,12, + 0,0,241,224,96,192,96,192,96,192,96,192,127,192,96,192, + 96,192,96,192,96,192,241,224,4,11,11,7,1,0,240,96, + 96,96,96,96,96,96,96,96,240,7,11,11,9,0,0,30, + 12,12,12,12,12,12,204,204,156,112,11,11,22,12,0,0, + 243,192,97,0,98,0,100,0,104,0,124,0,110,0,103,0, + 99,128,97,192,243,224,9,11,22,10,0,0,240,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,128,96,128,97,128, + 255,128,13,11,22,14,0,0,240,120,112,112,112,112,88,176, + 88,176,88,176,77,48,77,48,77,48,70,48,230,120,11,11, + 22,12,0,0,224,224,112,64,120,64,92,64,76,64,70,64, + 71,64,67,192,65,192,64,192,224,64,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,9,11,22,10,0,0,255,0,99,128, + 97,128,97,128,99,128,126,0,96,0,96,0,96,0,96,0, + 240,0,11,14,28,12,0,253,31,0,113,192,96,192,192,96, + 192,96,192,96,192,96,220,96,102,192,115,192,31,0,3,32, + 3,160,1,192,11,11,22,12,0,0,255,0,99,128,97,128, + 97,128,99,0,126,0,99,0,99,0,97,128,97,160,241,192, + 9,11,22,10,0,0,61,0,227,0,193,0,193,0,240,0, + 126,0,15,128,129,128,129,128,195,128,190,0,10,11,22,11, + 0,0,255,192,204,192,140,64,140,64,12,0,12,0,12,0, + 12,0,12,0,12,0,30,0,11,11,22,12,0,0,240,224, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,96,64, + 48,128,31,0,10,11,22,11,0,0,241,192,96,128,96,128, + 49,0,49,0,49,0,26,0,26,0,26,0,12,0,12,0, + 13,11,22,14,0,0,247,184,99,16,99,16,99,16,53,160, + 53,160,53,160,53,160,24,192,24,192,24,192,11,11,22,12, + 0,0,249,224,112,192,48,128,25,0,13,0,14,0,22,0, + 19,0,33,128,97,192,243,224,10,11,22,11,0,0,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,12,0, + 12,0,30,0,8,11,11,9,0,0,255,195,135,142,12,24, + 48,113,225,195,255,4,13,13,5,0,254,240,192,192,192,192, + 192,192,192,192,192,192,192,240,6,11,11,7,0,0,128,128, + 64,64,32,32,16,16,8,8,4,4,13,13,5,0,254,240, + 48,48,48,48,48,48,48,48,48,48,48,240,7,7,7,8, + 0,4,16,16,56,40,108,68,198,7,1,1,7,0,254,254, + 4,3,3,6,1,8,192,96,16,8,7,7,9,0,0,60, + 102,6,62,198,206,119,9,11,22,10,0,0,224,0,96,0, + 96,0,96,0,110,0,115,0,97,128,97,128,97,128,99,0, + 94,0,7,7,7,8,0,0,60,102,198,192,194,102,60,9, + 11,22,10,0,0,7,0,3,0,3,0,3,0,59,0,103, + 0,195,0,195,0,195,0,103,0,59,128,8,7,7,9,0, + 0,60,102,195,255,192,99,62,6,11,11,6,0,0,56,108, + 108,96,248,96,96,96,96,96,240,7,11,11,8,0,253,6, + 124,198,198,124,128,252,126,130,134,124,9,11,22,10,0,0, + 224,0,96,0,96,0,96,0,110,0,115,0,99,0,99,0, + 99,0,99,0,247,128,4,10,10,5,0,0,96,96,0,224, + 96,96,96,96,96,240,5,13,13,5,254,253,24,24,0,56, + 24,24,24,24,24,24,24,216,112,8,11,11,9,0,0,224, + 96,96,96,103,102,108,120,108,102,231,4,11,11,5,0,0, + 224,96,96,96,96,96,96,96,96,96,240,14,7,14,15,0, + 0,238,112,115,152,99,24,99,24,99,24,99,24,247,188,9, + 7,14,10,0,0,238,0,115,0,99,0,99,0,99,0,99, + 0,247,128,8,7,7,9,0,0,60,102,195,195,195,102,60, + 9,10,20,10,0,253,238,0,115,0,97,128,97,128,97,128, + 115,0,110,0,96,0,96,0,240,0,9,10,20,9,0,253, + 61,0,103,0,195,0,195,0,195,0,103,0,59,0,3,0, + 3,0,7,128,7,7,7,7,0,0,238,118,96,96,96,96, + 240,6,7,7,7,0,0,124,196,224,120,28,140,248,6,10, + 10,6,0,0,32,32,96,248,96,96,96,100,100,56,9,7, + 14,10,0,0,231,0,99,0,99,0,99,0,99,0,103,0, + 59,128,8,7,7,7,255,0,247,98,98,52,52,24,24,13, + 7,14,12,255,0,247,184,99,16,99,16,53,160,53,160,24, + 192,24,192,8,7,7,9,0,0,231,102,60,24,60,70,231, + 8,10,10,7,255,253,247,98,98,52,52,24,24,16,208,224, + 6,7,7,7,0,0,252,140,24,48,96,196,252,5,13,13, + 6,0,254,24,32,96,96,96,64,128,64,96,96,96,32,24, + 1,11,11,8,3,0,128,128,128,128,128,128,128,128,128,128, + 128,5,13,13,6,0,254,192,32,48,48,48,16,8,16,48, + 48,48,32,192,7,2,2,8,0,4,118,220,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--17-120-100-100-P-99-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y=10 dx=16 dy= 0 ascent=16 len=32 + Font Bounding box w=22 h=27 x=-3 y=-7 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =16 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB12[4735] U8G_SECTION(".progmem.u8g_font_ncenB12") = { + 0,22,27,253,249,12,2,152,5,246,32,255,253,16,253,12, + 253,0,0,0,4,1,1,3,12,12,5,1,0,64,224,224, + 224,224,64,64,0,64,224,224,64,5,5,5,6,0,7,216, + 216,216,144,144,10,12,24,10,0,0,25,128,25,128,25,128, + 127,192,127,192,51,0,51,0,255,128,255,128,102,0,102,0, + 102,0,9,15,30,10,0,255,8,0,8,0,62,0,105,0, + 203,128,201,0,252,0,127,0,31,128,73,128,233,128,201,128, + 107,0,62,0,8,0,12,12,24,14,1,0,56,128,119,128, + 101,0,197,0,202,0,202,224,117,208,5,144,11,16,11,32, + 19,32,17,192,12,12,24,14,1,0,15,0,25,128,25,128, + 25,0,30,0,60,240,110,96,231,64,199,128,227,144,243,240, + 124,224,2,5,5,4,1,7,192,192,192,128,128,4,14,14, + 6,1,254,16,32,96,96,192,192,192,192,192,192,96,96,32, + 16,4,14,14,6,0,254,128,64,96,96,48,48,48,48,48, + 48,96,96,64,128,7,7,7,8,0,5,16,84,214,56,214, + 84,16,8,8,8,10,1,0,24,24,24,255,255,24,24,24, + 4,6,6,5,0,253,96,240,112,32,96,128,4,2,2,5, + 0,3,240,240,4,3,3,5,0,0,96,240,96,5,12,12, + 5,0,0,8,8,16,16,16,32,32,64,64,64,128,128,9, + 12,24,10,0,0,28,0,54,0,99,0,99,0,227,128,227, + 128,227,128,227,128,99,0,99,0,54,0,28,0,7,12,12, + 10,1,0,24,248,56,56,56,56,56,56,56,56,56,254,8, + 12,12,10,1,0,60,70,231,231,71,14,12,24,49,97,255, + 255,9,12,24,10,0,0,62,0,103,0,115,0,35,0,6, + 0,31,0,7,0,3,128,99,128,243,128,103,0,62,0,9, + 12,24,10,0,0,2,0,6,0,14,0,30,0,46,0,46, + 0,78,0,142,0,255,128,14,0,14,0,63,128,8,12,12, + 10,1,0,127,126,64,64,124,78,7,71,231,231,206,124,9, + 12,24,10,0,0,31,0,51,128,103,128,99,0,224,0,238, + 0,247,0,227,128,227,128,99,128,119,0,30,0,8,12,12, + 10,1,0,255,254,134,134,132,12,12,24,24,56,56,16,8, + 12,12,10,1,0,60,102,231,231,102,60,102,231,231,231,102, + 60,9,12,24,10,0,0,60,0,119,0,227,0,227,128,227, + 128,119,128,59,128,3,128,99,0,243,0,230,0,124,0,4, + 8,8,5,0,0,96,240,96,0,0,96,240,96,4,11,11, + 5,0,253,96,240,96,0,0,96,240,112,32,96,128,8,8, + 8,10,1,1,3,15,60,240,240,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,1,192,240, + 60,15,15,60,240,192,8,12,12,8,0,0,60,102,247,103, + 14,12,16,0,16,56,56,16,12,13,26,12,0,255,15,128, + 56,224,96,32,70,176,205,144,153,144,153,144,153,176,219,160, + 76,64,96,48,56,224,15,128,13,12,24,13,0,0,6,0, + 7,0,7,0,15,0,11,128,27,128,17,192,63,192,49,192, + 32,224,96,224,241,248,12,12,24,13,0,0,255,192,56,224, + 56,112,56,112,56,224,63,192,56,224,56,112,56,112,56,112, + 56,224,255,192,11,12,24,13,1,0,15,160,56,224,112,96, + 112,32,224,32,224,0,224,0,224,32,112,32,112,64,56,192, + 15,0,13,12,24,14,0,0,255,128,56,224,56,112,56,112, + 56,56,56,56,56,56,56,56,56,112,56,112,56,224,255,128, + 11,12,24,12,0,0,255,224,56,96,56,96,57,32,59,0, + 63,0,59,0,57,32,56,32,56,96,56,96,255,224,11,12, + 24,12,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,0,56,0,56,0,56,0,254,0,13,12,24,14, + 1,0,15,160,56,224,112,96,112,32,224,32,224,0,227,248, + 224,224,112,224,112,224,57,224,15,32,14,12,24,15,0,0, + 254,252,56,112,56,112,56,112,56,112,63,240,56,112,56,112, + 56,112,56,112,56,112,254,252,7,12,12,7,0,0,254,56, + 56,56,56,56,56,56,56,56,56,254,10,12,24,11,0,0, + 31,192,7,0,7,0,7,0,7,0,7,0,103,0,247,0, + 231,0,135,0,206,0,124,0,14,12,24,13,0,0,254,248, + 56,96,56,192,57,128,59,0,63,128,63,128,59,192,57,224, + 56,240,56,120,254,252,11,12,24,12,0,0,254,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,32,56,32,56,96, + 56,96,255,224,16,12,24,16,0,0,252,63,60,60,46,60, + 46,92,46,92,39,92,39,156,39,156,35,156,35,28,33,28, + 249,63,14,12,24,14,0,0,240,124,56,16,60,16,62,16, + 47,16,39,144,35,208,33,240,32,240,32,112,32,48,248,16, + 12,12,24,14,1,0,15,0,57,192,112,224,112,224,224,112, + 224,112,224,112,224,112,112,224,112,224,57,192,15,0,12,12, + 24,13,0,0,255,192,56,224,56,112,56,112,56,112,56,224, + 63,192,56,0,56,0,56,0,56,0,254,0,12,15,30,14, + 1,253,15,0,57,192,112,224,112,224,224,112,224,112,224,112, + 230,112,105,96,121,224,57,192,15,128,1,208,1,240,0,224, + 13,12,24,14,0,0,255,192,56,224,56,112,56,112,56,224, + 63,192,57,128,57,192,56,224,56,232,56,248,252,112,9,12, + 24,11,1,0,62,128,67,128,193,128,192,128,248,128,126,0, + 63,0,143,128,129,128,193,128,225,0,190,0,11,12,24,12, + 0,0,255,224,206,96,142,32,142,32,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,63,128,14,12,24,14,0,0, + 254,124,56,16,56,16,56,16,56,16,56,16,56,16,56,16, + 56,16,28,32,30,96,7,128,13,12,24,13,255,0,254,120, + 56,48,60,32,28,32,28,64,14,64,14,128,15,128,7,128, + 7,0,3,0,3,0,15,12,24,16,0,0,251,222,113,140, + 49,136,57,200,57,216,59,208,26,208,30,240,28,224,12,96, + 12,96,12,96,12,12,24,12,0,0,249,240,112,96,56,64, + 28,128,31,0,15,0,15,0,15,128,19,192,33,192,96,224, + 249,240,13,12,24,12,255,0,254,248,56,96,28,64,28,128, + 14,128,15,0,7,0,7,0,7,0,7,0,7,0,31,192, + 9,12,24,11,1,0,255,128,195,128,135,0,135,0,14,0, + 28,0,28,0,56,128,112,128,113,128,227,128,255,128,4,14, + 14,6,1,254,240,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,12,12,10,1,0,192,192,96,96,48,48,24,24, + 12,12,6,6,4,14,14,7,1,254,240,48,48,48,48,48, + 48,48,48,48,48,48,48,240,8,7,7,10,1,5,24,24, + 60,102,102,195,195,8,2,2,8,0,254,255,255,4,3,3, + 6,0,9,192,224,48,9,8,16,10,0,0,126,0,231,0, + 199,0,31,0,103,0,231,0,239,0,119,128,11,12,24,11, + 255,0,248,0,56,0,56,0,56,0,59,128,61,192,56,224, + 56,224,56,224,56,224,61,192,43,128,8,8,8,9,0,0, + 62,115,231,224,224,227,118,60,11,12,24,11,0,0,7,128, + 3,128,3,128,3,128,59,128,119,128,227,128,227,128,227,128, + 227,128,119,128,58,224,9,8,16,10,0,0,62,0,119,0, + 227,128,255,128,224,0,225,128,115,0,62,0,9,12,24,7, + 255,0,15,0,27,128,59,0,56,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,254,0,9,12,24,10,0,253, + 1,128,63,128,119,0,227,128,227,128,247,0,124,0,96,0, + 127,0,255,128,195,128,255,0,11,12,24,11,255,0,240,0, + 112,0,112,0,112,0,119,128,121,192,121,192,113,192,113,192, + 113,192,113,192,251,224,5,12,12,6,0,0,96,240,96,0, + 240,112,112,112,112,112,112,248,6,15,15,6,254,253,24,60, + 24,0,124,28,28,28,28,28,28,28,220,216,112,11,12,24, + 11,0,0,240,0,112,0,112,0,112,0,119,192,115,128,119, + 0,126,0,127,0,115,128,113,192,251,224,5,12,12,6,0, + 0,240,112,112,112,112,112,112,112,112,112,112,248,15,8,16, + 16,0,0,247,56,123,220,115,156,115,156,115,156,115,156,115, + 156,251,190,11,8,16,11,255,0,247,128,121,192,113,192,113, + 192,113,192,113,192,113,192,251,224,10,8,16,11,0,0,30, + 0,115,128,225,192,225,192,225,192,225,192,115,128,30,0,10, + 11,22,11,255,253,247,0,123,128,113,192,113,192,113,192,113, + 192,123,128,119,0,112,0,112,0,248,0,10,11,22,10,255, + 253,62,128,115,128,227,128,227,128,227,128,227,128,115,128,63, + 128,3,128,3,128,7,192,9,8,16,9,0,0,247,0,123, + 128,115,0,112,0,112,0,112,0,112,0,248,0,7,8,8, + 8,0,0,122,198,226,252,126,142,198,188,6,11,11,7,0, + 0,16,16,48,252,112,112,112,112,116,124,56,11,8,16,11, + 255,0,243,192,113,192,113,192,113,192,113,192,113,192,123,192, + 62,224,10,8,16,10,0,0,251,192,113,128,115,0,59,0, + 58,0,30,0,28,0,12,0,15,8,16,15,0,0,251,222, + 113,140,57,200,59,216,30,240,30,240,12,96,12,96,9,8, + 16,10,0,0,251,128,113,0,62,0,28,0,28,0,62,0, + 71,0,239,128,10,11,22,10,255,253,251,192,113,128,57,128, + 57,0,31,0,14,0,14,0,6,0,52,0,116,0,56,0, + 7,8,8,9,0,0,254,204,156,56,48,114,230,254,4,14, + 14,6,1,254,48,96,96,96,96,96,192,96,96,96,96,96, + 96,48,2,12,12,10,4,0,192,192,192,192,192,192,192,192, + 192,192,192,192,4,14,14,6,0,254,192,96,96,96,96,96, + 48,96,96,96,96,96,96,192,8,3,3,10,1,3,114,255, + 78,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,0,0,0,4,1,1,3,12,12,5,1,253,64,224, + 224,64,0,64,64,224,224,224,224,64,8,12,12,10,0,254, + 1,2,62,115,231,231,232,233,114,60,32,64,9,12,24,10, + 0,0,31,0,57,128,115,128,115,128,113,0,56,0,254,0, + 24,0,24,0,120,128,191,0,110,0,8,8,8,10,1,2, + 90,255,102,195,195,102,255,90,10,12,24,10,0,0,251,192, + 113,128,49,0,59,0,26,0,30,0,63,0,12,0,63,0, + 12,0,12,0,63,0,2,12,12,10,4,0,192,192,192,192, + 192,0,0,192,192,192,192,192,6,15,15,9,1,253,56,76, + 76,96,48,120,140,132,196,120,48,24,200,200,112,5,2,2, + 6,0,9,216,216,12,12,24,12,0,0,31,128,57,192,96, + 96,207,176,217,48,152,16,152,16,217,176,207,48,96,96,57, + 192,31,128,6,7,7,6,0,5,112,152,120,216,108,0,248, + 6,5,5,8,1,2,36,108,216,108,36,8,5,5,10,0, + 2,255,255,3,3,3,4,2,2,5,0,3,240,240,12,12, + 24,12,0,0,31,128,57,192,96,96,223,48,201,48,142,16, + 139,16,201,176,221,240,96,96,57,192,31,128,5,1,1,6, + 0,10,248,5,5,5,7,1,7,112,216,136,216,112,8,9, + 9,10,1,0,24,24,255,255,24,24,0,255,255,5,7,7, + 6,0,5,112,152,216,16,32,120,248,6,7,7,6,0,5, + 120,204,76,24,76,204,120,4,3,3,6,1,9,48,112,192, + 11,11,22,11,0,253,243,192,113,192,113,192,113,192,113,192, + 113,192,123,192,110,224,96,0,112,0,112,0,11,12,24,12, + 0,0,127,224,249,128,249,128,249,128,249,128,121,128,25,128, + 25,128,25,128,25,128,25,128,127,224,4,3,3,5,0,3, + 96,240,96,4,4,4,6,0,253,64,96,48,224,4,7,7, + 6,1,5,32,224,96,96,96,96,240,5,7,7,6,0,5, + 112,216,216,216,112,0,248,6,5,5,8,1,2,144,216,108, + 216,144,12,12,24,14,1,0,32,64,224,192,97,128,97,0, + 99,0,98,32,246,96,12,224,9,32,27,240,48,96,32,240, + 12,12,24,14,1,0,32,64,224,192,97,128,97,0,99,0, + 98,224,247,48,13,176,8,32,24,64,48,240,33,240,13,12, + 24,14,0,0,120,32,204,96,76,192,24,128,77,128,205,16, + 123,48,6,112,4,144,13,248,24,48,16,120,8,12,12,8, + 0,253,8,28,28,8,0,8,48,112,230,239,102,60,13,16, + 32,13,0,0,24,0,28,0,6,0,0,0,6,0,7,0, + 7,0,15,0,11,128,27,128,17,192,63,192,49,192,32,224, + 96,224,241,248,13,16,32,13,0,0,1,128,3,128,6,0, + 0,0,6,0,7,0,7,0,15,0,11,128,27,128,17,192, + 63,192,49,192,32,224,96,224,241,248,13,16,32,13,0,0, + 2,0,7,0,13,128,0,0,6,0,7,0,7,0,15,0, + 11,128,27,128,17,192,63,192,49,192,32,224,96,224,241,248, + 13,15,30,13,0,0,14,128,23,0,0,0,6,0,7,0, + 7,0,15,0,11,128,27,128,17,192,63,192,49,192,32,224, + 96,224,241,248,13,15,30,13,0,0,25,128,25,128,0,0, + 6,0,7,0,7,0,15,0,11,128,27,128,17,192,63,192, + 49,192,32,224,96,224,241,248,13,16,32,13,0,0,6,0, + 11,0,6,0,0,0,6,0,7,0,7,0,15,0,11,128, + 27,128,17,192,63,192,49,192,32,224,96,224,241,248,16,12, + 24,16,255,0,31,255,7,195,5,195,5,201,9,216,9,248, + 17,216,31,201,33,193,33,195,97,195,247,255,11,15,30,13, + 1,253,15,160,56,224,112,96,112,32,224,32,224,0,224,0, + 224,32,112,32,112,64,56,192,15,0,12,0,6,0,28,0, + 11,16,32,12,0,0,24,0,28,0,6,0,0,0,255,224, + 56,96,56,96,57,32,59,0,63,0,59,0,57,32,56,32, + 56,96,56,96,255,224,11,16,32,12,0,0,1,128,3,128, + 6,0,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,32,56,32,56,96,56,96,255,224,11,16,32,12, + 0,0,2,0,7,0,13,128,0,0,255,224,56,96,56,96, + 57,32,59,0,63,0,59,0,57,32,56,32,56,96,56,96, + 255,224,11,15,30,12,0,0,25,128,25,128,0,0,255,224, + 56,96,56,96,57,32,59,0,63,0,59,0,57,32,56,32, + 56,96,56,96,255,224,7,16,16,7,0,0,96,112,24,0, + 254,56,56,56,56,56,56,56,56,56,56,254,7,16,16,7, + 0,0,12,28,48,0,254,56,56,56,56,56,56,56,56,56, + 56,254,7,16,16,7,0,0,16,56,108,0,254,56,56,56, + 56,56,56,56,56,56,56,254,7,15,15,7,0,0,108,108, + 0,254,56,56,56,56,56,56,56,56,56,56,254,13,12,24, + 14,0,0,255,128,56,224,56,112,56,112,56,56,126,56,56, + 56,56,56,56,112,56,112,56,224,255,128,14,15,30,14,0, + 0,7,64,11,128,0,0,240,124,56,16,60,16,62,16,47, + 16,39,144,35,208,33,240,32,240,32,112,32,48,248,16,12, + 16,32,14,1,0,24,0,28,0,6,0,0,0,15,0,57, + 192,112,224,112,224,224,112,224,112,224,112,224,112,112,224,112, + 224,57,192,15,0,12,16,32,14,1,0,1,128,3,128,6, + 0,0,0,15,0,57,192,112,224,112,224,224,112,224,112,224, + 112,224,112,112,224,112,224,57,192,15,0,12,16,32,14,1, + 0,6,0,15,0,25,128,0,0,15,0,57,192,112,224,112, + 224,224,112,224,112,224,112,224,112,112,224,112,224,57,192,15, + 0,12,15,30,14,1,0,14,128,23,0,0,0,15,0,57, + 192,112,224,112,224,224,112,224,112,224,112,224,112,112,224,112, + 224,57,192,15,0,12,15,30,14,1,0,25,128,25,128,0, + 0,15,0,57,192,112,224,112,224,224,112,224,112,224,112,224, + 112,112,224,112,224,57,192,15,0,8,8,8,10,1,0,66, + 231,126,56,28,126,231,66,12,14,28,14,1,255,0,16,15, + 32,57,192,112,224,112,224,225,112,226,112,228,112,232,112,112, + 224,112,224,57,192,79,0,128,0,14,16,32,14,0,0,6, + 0,7,0,1,128,0,0,254,124,56,16,56,16,56,16,56, + 16,56,16,56,16,56,16,56,16,28,32,30,96,7,128,14, + 16,32,14,0,0,0,96,0,224,1,128,0,0,254,124,56, + 16,56,16,56,16,56,16,56,16,56,16,56,16,56,16,28, + 32,30,96,7,128,14,16,32,14,0,0,1,128,3,192,6, + 96,0,0,254,124,56,16,56,16,56,16,56,16,56,16,56, + 16,56,16,56,16,28,32,30,96,7,128,14,15,30,14,0, + 0,6,96,6,96,0,0,254,124,56,16,56,16,56,16,56, + 16,56,16,56,16,56,16,56,16,28,32,30,96,7,128,13, + 16,32,12,255,0,0,192,1,192,3,0,0,0,254,248,56, + 96,28,64,28,128,14,128,15,0,7,0,7,0,7,0,7, + 0,7,0,31,192,12,12,24,13,0,0,254,0,56,0,63, + 192,56,224,56,112,56,112,56,112,56,224,63,192,56,0,56, + 0,254,0,10,12,24,10,0,0,31,0,51,128,115,128,115, + 128,115,0,119,0,113,128,113,192,113,192,113,192,123,128,247, + 0,9,12,24,10,0,0,96,0,112,0,24,0,0,0,126, + 0,231,0,199,0,31,0,103,0,231,0,239,0,119,128,9, + 12,24,10,0,0,6,0,14,0,24,0,0,0,126,0,231, + 0,199,0,31,0,103,0,231,0,239,0,119,128,9,12,24, + 10,0,0,16,0,56,0,108,0,0,0,126,0,231,0,199, + 0,31,0,103,0,231,0,239,0,119,128,9,11,22,10,0, + 0,58,0,92,0,0,0,126,0,231,0,199,0,31,0,103, + 0,231,0,239,0,119,128,9,11,22,10,0,0,108,0,108, + 0,0,0,126,0,231,0,199,0,31,0,103,0,231,0,239, + 0,119,128,9,12,24,10,0,0,24,0,44,0,24,0,0, + 0,126,0,231,0,199,0,31,0,103,0,231,0,239,0,119, + 128,13,8,16,15,0,0,125,224,231,48,199,56,63,248,103, + 0,231,24,239,48,123,224,8,11,11,9,0,253,62,115,231, + 227,224,227,118,60,24,12,56,9,12,24,10,0,0,48,0, + 56,0,12,0,0,0,62,0,119,0,227,128,255,128,224,0, + 225,128,115,0,62,0,9,12,24,10,0,0,6,0,14,0, + 24,0,0,0,62,0,119,0,227,128,255,128,224,0,225,128, + 115,0,62,0,9,12,24,10,0,0,8,0,28,0,54,0, + 0,0,62,0,119,0,227,128,255,128,224,0,225,128,115,0, + 62,0,9,11,22,10,0,0,54,0,54,0,0,0,62,0, + 119,0,227,128,255,128,224,0,225,128,115,0,62,0,5,12, + 12,6,0,0,192,224,48,0,240,112,112,112,112,112,112,248, + 5,12,12,6,0,0,24,56,96,0,240,112,112,112,112,112, + 112,248,5,12,12,6,0,0,32,112,216,0,240,112,112,112, + 112,112,112,248,5,11,11,6,0,0,216,216,0,240,112,112, + 112,112,112,112,248,9,13,26,11,0,0,96,0,59,0,28, + 0,54,0,7,0,31,0,119,128,227,128,227,128,227,128,227, + 128,119,0,28,0,11,11,22,11,255,0,14,128,23,0,0, + 0,247,128,121,192,113,192,113,192,113,192,113,192,113,192,251, + 224,10,12,24,11,0,0,24,0,28,0,6,0,0,0,63, + 0,115,128,225,192,225,192,225,192,225,192,115,128,63,0,10, + 12,24,11,0,0,3,0,7,0,12,0,0,0,63,0,115, + 128,225,192,225,192,225,192,225,192,115,128,63,0,10,12,24, + 11,0,0,12,0,30,0,51,0,0,0,63,0,115,128,225, + 192,225,192,225,192,225,192,115,128,63,0,10,11,22,11,0, + 0,29,0,46,0,0,0,63,0,115,128,225,192,225,192,225, + 192,225,192,115,128,63,0,10,11,22,11,0,0,54,0,54, + 0,0,0,63,0,115,128,225,192,225,192,225,192,225,192,115, + 128,63,0,8,8,8,10,1,0,24,24,0,255,255,0,24, + 24,9,12,24,10,0,254,0,128,1,0,30,0,115,0,231, + 128,235,128,235,128,243,128,103,0,60,0,64,0,128,0,11, + 12,24,11,255,0,24,0,28,0,6,0,0,0,243,192,113, + 192,113,192,113,192,113,192,113,192,123,192,62,224,11,12,24, + 11,255,0,3,0,7,0,12,0,0,0,243,192,113,192,113, + 192,113,192,113,192,113,192,123,192,62,224,11,12,24,11,255, + 0,4,0,14,0,27,0,0,0,243,192,113,192,113,192,113, + 192,113,192,113,192,123,192,62,224,11,11,22,11,255,0,27, + 0,27,0,0,0,243,192,113,192,113,192,113,192,113,192,113, + 192,123,192,62,224,11,15,30,10,255,253,3,0,7,0,12, + 0,0,0,251,224,112,192,56,128,25,128,29,0,15,0,14, + 0,6,0,52,0,116,0,56,0,10,15,30,11,255,253,240, + 0,112,0,112,0,112,0,119,0,123,128,113,192,113,192,113, + 192,113,192,123,128,119,0,112,0,112,0,252,0,11,14,28, + 10,255,253,27,0,27,0,0,0,251,224,48,192,56,128,25, + 128,29,0,15,0,14,0,6,0,52,0,116,0,56,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--17-120-100-100-P-99-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=15 x= 4 y= 9 dx=16 dy= 0 ascent=14 len=30 + Font Bounding box w=22 h=27 x=-3 y=-7 + Calculated Min Values x=-2 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB12r[2194] U8G_SECTION(".progmem.u8g_font_ncenB12r") = { + 0,22,27,253,249,12,2,152,5,246,32,127,253,14,253,12, + 253,0,0,0,4,1,1,3,12,12,5,1,0,64,224,224, + 224,224,64,64,0,64,224,224,64,5,5,5,6,0,7,216, + 216,216,144,144,10,12,24,10,0,0,25,128,25,128,25,128, + 127,192,127,192,51,0,51,0,255,128,255,128,102,0,102,0, + 102,0,9,15,30,10,0,255,8,0,8,0,62,0,105,0, + 203,128,201,0,252,0,127,0,31,128,73,128,233,128,201,128, + 107,0,62,0,8,0,12,12,24,14,1,0,56,128,119,128, + 101,0,197,0,202,0,202,224,117,208,5,144,11,16,11,32, + 19,32,17,192,12,12,24,14,1,0,15,0,25,128,25,128, + 25,0,30,0,60,240,110,96,231,64,199,128,227,144,243,240, + 124,224,2,5,5,4,1,7,192,192,192,128,128,4,14,14, + 6,1,254,16,32,96,96,192,192,192,192,192,192,96,96,32, + 16,4,14,14,6,0,254,128,64,96,96,48,48,48,48,48, + 48,96,96,64,128,7,7,7,8,0,5,16,84,214,56,214, + 84,16,8,8,8,10,1,0,24,24,24,255,255,24,24,24, + 4,6,6,5,0,253,96,240,112,32,96,128,4,2,2,5, + 0,3,240,240,4,3,3,5,0,0,96,240,96,5,12,12, + 5,0,0,8,8,16,16,16,32,32,64,64,64,128,128,9, + 12,24,10,0,0,28,0,54,0,99,0,99,0,227,128,227, + 128,227,128,227,128,99,0,99,0,54,0,28,0,7,12,12, + 10,1,0,24,248,56,56,56,56,56,56,56,56,56,254,8, + 12,12,10,1,0,60,70,231,231,71,14,12,24,49,97,255, + 255,9,12,24,10,0,0,62,0,103,0,115,0,35,0,6, + 0,31,0,7,0,3,128,99,128,243,128,103,0,62,0,9, + 12,24,10,0,0,2,0,6,0,14,0,30,0,46,0,46, + 0,78,0,142,0,255,128,14,0,14,0,63,128,8,12,12, + 10,1,0,127,126,64,64,124,78,7,71,231,231,206,124,9, + 12,24,10,0,0,31,0,51,128,103,128,99,0,224,0,238, + 0,247,0,227,128,227,128,99,128,119,0,30,0,8,12,12, + 10,1,0,255,254,134,134,132,12,12,24,24,56,56,16,8, + 12,12,10,1,0,60,102,231,231,102,60,102,231,231,231,102, + 60,9,12,24,10,0,0,60,0,119,0,227,0,227,128,227, + 128,119,128,59,128,3,128,99,0,243,0,230,0,124,0,4, + 8,8,5,0,0,96,240,96,0,0,96,240,96,4,11,11, + 5,0,253,96,240,96,0,0,96,240,112,32,96,128,8,8, + 8,10,1,1,3,15,60,240,240,60,15,3,8,6,6,10, + 1,1,255,255,0,0,255,255,8,8,8,10,1,1,192,240, + 60,15,15,60,240,192,8,12,12,8,0,0,60,102,247,103, + 14,12,16,0,16,56,56,16,12,13,26,12,0,255,15,128, + 56,224,96,32,70,176,205,144,153,144,153,144,153,176,219,160, + 76,64,96,48,56,224,15,128,13,12,24,13,0,0,6,0, + 7,0,7,0,15,0,11,128,27,128,17,192,63,192,49,192, + 32,224,96,224,241,248,12,12,24,13,0,0,255,192,56,224, + 56,112,56,112,56,224,63,192,56,224,56,112,56,112,56,112, + 56,224,255,192,11,12,24,13,1,0,15,160,56,224,112,96, + 112,32,224,32,224,0,224,0,224,32,112,32,112,64,56,192, + 15,0,13,12,24,14,0,0,255,128,56,224,56,112,56,112, + 56,56,56,56,56,56,56,56,56,112,56,112,56,224,255,128, + 11,12,24,12,0,0,255,224,56,96,56,96,57,32,59,0, + 63,0,59,0,57,32,56,32,56,96,56,96,255,224,11,12, + 24,12,0,0,255,224,56,96,56,96,57,32,59,0,63,0, + 59,0,57,0,56,0,56,0,56,0,254,0,13,12,24,14, + 1,0,15,160,56,224,112,96,112,32,224,32,224,0,227,248, + 224,224,112,224,112,224,57,224,15,32,14,12,24,15,0,0, + 254,252,56,112,56,112,56,112,56,112,63,240,56,112,56,112, + 56,112,56,112,56,112,254,252,7,12,12,7,0,0,254,56, + 56,56,56,56,56,56,56,56,56,254,10,12,24,11,0,0, + 31,192,7,0,7,0,7,0,7,0,7,0,103,0,247,0, + 231,0,135,0,206,0,124,0,14,12,24,13,0,0,254,248, + 56,96,56,192,57,128,59,0,63,128,63,128,59,192,57,224, + 56,240,56,120,254,252,11,12,24,12,0,0,254,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,32,56,32,56,96, + 56,96,255,224,16,12,24,16,0,0,252,63,60,60,46,60, + 46,92,46,92,39,92,39,156,39,156,35,156,35,28,33,28, + 249,63,14,12,24,14,0,0,240,124,56,16,60,16,62,16, + 47,16,39,144,35,208,33,240,32,240,32,112,32,48,248,16, + 12,12,24,14,1,0,15,0,57,192,112,224,112,224,224,112, + 224,112,224,112,224,112,112,224,112,224,57,192,15,0,12,12, + 24,13,0,0,255,192,56,224,56,112,56,112,56,112,56,224, + 63,192,56,0,56,0,56,0,56,0,254,0,12,15,30,14, + 1,253,15,0,57,192,112,224,112,224,224,112,224,112,224,112, + 230,112,105,96,121,224,57,192,15,128,1,208,1,240,0,224, + 13,12,24,14,0,0,255,192,56,224,56,112,56,112,56,224, + 63,192,57,128,57,192,56,224,56,232,56,248,252,112,9,12, + 24,11,1,0,62,128,67,128,193,128,192,128,248,128,126,0, + 63,0,143,128,129,128,193,128,225,0,190,0,11,12,24,12, + 0,0,255,224,206,96,142,32,142,32,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,63,128,14,12,24,14,0,0, + 254,124,56,16,56,16,56,16,56,16,56,16,56,16,56,16, + 56,16,28,32,30,96,7,128,13,12,24,13,255,0,254,120, + 56,48,60,32,28,32,28,64,14,64,14,128,15,128,7,128, + 7,0,3,0,3,0,15,12,24,16,0,0,251,222,113,140, + 49,136,57,200,57,216,59,208,26,208,30,240,28,224,12,96, + 12,96,12,96,12,12,24,12,0,0,249,240,112,96,56,64, + 28,128,31,0,15,0,15,0,15,128,19,192,33,192,96,224, + 249,240,13,12,24,12,255,0,254,248,56,96,28,64,28,128, + 14,128,15,0,7,0,7,0,7,0,7,0,7,0,31,192, + 9,12,24,11,1,0,255,128,195,128,135,0,135,0,14,0, + 28,0,28,0,56,128,112,128,113,128,227,128,255,128,4,14, + 14,6,1,254,240,192,192,192,192,192,192,192,192,192,192,192, + 192,240,7,12,12,10,1,0,192,192,96,96,48,48,24,24, + 12,12,6,6,4,14,14,7,1,254,240,48,48,48,48,48, + 48,48,48,48,48,48,48,240,8,7,7,10,1,5,24,24, + 60,102,102,195,195,8,2,2,8,0,254,255,255,4,3,3, + 6,0,9,192,224,48,9,8,16,10,0,0,126,0,231,0, + 199,0,31,0,103,0,231,0,239,0,119,128,11,12,24,11, + 255,0,248,0,56,0,56,0,56,0,59,128,61,192,56,224, + 56,224,56,224,56,224,61,192,43,128,8,8,8,9,0,0, + 62,115,231,224,224,227,118,60,11,12,24,11,0,0,7,128, + 3,128,3,128,3,128,59,128,119,128,227,128,227,128,227,128, + 227,128,119,128,58,224,9,8,16,10,0,0,62,0,119,0, + 227,128,255,128,224,0,225,128,115,0,62,0,9,12,24,7, + 255,0,15,0,27,128,59,0,56,0,254,0,56,0,56,0, + 56,0,56,0,56,0,56,0,254,0,9,12,24,10,0,253, + 1,128,63,128,119,0,227,128,227,128,247,0,124,0,96,0, + 127,0,255,128,195,128,255,0,11,12,24,11,255,0,240,0, + 112,0,112,0,112,0,119,128,121,192,121,192,113,192,113,192, + 113,192,113,192,251,224,5,12,12,6,0,0,96,240,96,0, + 240,112,112,112,112,112,112,248,6,15,15,6,254,253,24,60, + 24,0,124,28,28,28,28,28,28,28,220,216,112,11,12,24, + 11,0,0,240,0,112,0,112,0,112,0,119,192,115,128,119, + 0,126,0,127,0,115,128,113,192,251,224,5,12,12,6,0, + 0,240,112,112,112,112,112,112,112,112,112,112,248,15,8,16, + 16,0,0,247,56,123,220,115,156,115,156,115,156,115,156,115, + 156,251,190,11,8,16,11,255,0,247,128,121,192,113,192,113, + 192,113,192,113,192,113,192,251,224,10,8,16,11,0,0,30, + 0,115,128,225,192,225,192,225,192,225,192,115,128,30,0,10, + 11,22,11,255,253,247,0,123,128,113,192,113,192,113,192,113, + 192,123,128,119,0,112,0,112,0,248,0,10,11,22,10,255, + 253,62,128,115,128,227,128,227,128,227,128,227,128,115,128,63, + 128,3,128,3,128,7,192,9,8,16,9,0,0,247,0,123, + 128,115,0,112,0,112,0,112,0,112,0,248,0,7,8,8, + 8,0,0,122,198,226,252,126,142,198,188,6,11,11,7,0, + 0,16,16,48,252,112,112,112,112,116,124,56,11,8,16,11, + 255,0,243,192,113,192,113,192,113,192,113,192,113,192,123,192, + 62,224,10,8,16,10,0,0,251,192,113,128,115,0,59,0, + 58,0,30,0,28,0,12,0,15,8,16,15,0,0,251,222, + 113,140,57,200,59,216,30,240,30,240,12,96,12,96,9,8, + 16,10,0,0,251,128,113,0,62,0,28,0,28,0,62,0, + 71,0,239,128,10,11,22,10,255,253,251,192,113,128,57,128, + 57,0,31,0,14,0,14,0,6,0,52,0,116,0,56,0, + 7,8,8,9,0,0,254,204,156,56,48,114,230,254,4,14, + 14,6,1,254,48,96,96,96,96,96,192,96,96,96,96,96, + 96,48,2,12,12,10,4,0,192,192,192,192,192,192,192,192, + 192,192,192,192,4,14,14,6,0,254,192,96,96,96,96,96, + 48,96,96,96,96,96,96,192,8,3,3,10,1,3,114,255, + 78,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--20-140-100-100-P-113-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=19 x= 4 y=11 dx=21 dy= 0 ascent=19 len=42 + Font Bounding box w=24 h=32 x=-3 y=-8 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =19 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB14[5558] U8G_SECTION(".progmem.u8g_font_ncenB14") = { + 0,24,32,253,248,14,3,71,7,51,32,255,252,19,252,14, + 252,0,0,0,5,0,1,4,14,14,6,1,0,96,240,240, + 240,240,240,96,96,96,0,96,240,240,96,5,5,5,8,1, + 9,216,216,216,216,216,11,12,24,12,0,1,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,255,192,255,192,54,0, + 54,0,54,0,9,18,36,11,1,254,8,0,8,0,62,0, + 107,128,203,128,201,128,232,0,252,0,255,0,127,128,31,128, + 11,128,201,128,233,128,235,0,62,0,8,0,8,0,14,15, + 30,15,0,255,56,192,103,64,196,192,196,128,197,128,201,0, + 115,0,2,56,6,100,4,196,12,196,8,196,24,200,16,112, + 16,0,16,14,28,17,1,0,7,128,12,192,24,192,24,192, + 29,128,31,0,14,62,63,24,119,144,227,224,225,224,224,241, + 241,254,127,28,2,5,5,5,1,9,192,192,192,192,192,5, + 16,16,6,0,254,24,48,112,96,224,192,192,192,192,192,192, + 224,96,112,48,24,5,16,16,6,0,254,192,96,112,48,56, + 24,24,24,24,24,24,56,48,112,96,192,7,7,7,8,0, + 7,56,146,214,56,214,146,56,10,10,20,11,0,0,12,0, + 12,0,12,0,12,0,255,192,255,192,12,0,12,0,12,0, + 12,0,4,7,7,5,0,253,96,240,240,112,32,64,128,5, + 3,3,6,0,3,248,248,248,4,4,4,5,0,0,96,240, + 240,96,6,14,14,7,0,0,12,12,8,24,24,16,48,48, + 32,96,96,64,192,192,9,14,28,11,1,0,28,0,119,0, + 99,0,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,99,0,119,0,28,0,7,14,14,11,2,0,24,56, + 248,56,56,56,56,56,56,56,56,56,56,254,9,14,28,11, + 1,0,30,0,103,0,227,128,227,128,99,128,3,128,7,0, + 7,0,14,0,24,0,48,0,96,128,255,128,255,128,9,14, + 28,11,1,0,30,0,103,0,227,128,227,128,99,128,3,0, + 28,0,3,0,3,128,99,128,227,128,227,128,103,0,62,0, + 9,14,28,11,1,0,1,0,3,0,7,0,15,0,15,0, + 23,0,39,0,71,0,71,0,135,0,255,128,7,0,7,0, + 15,128,9,14,28,11,1,0,127,128,127,0,64,0,64,0, + 64,0,126,0,71,0,3,128,3,128,99,128,227,128,227,128, + 103,0,62,0,9,14,28,11,1,0,31,0,115,128,99,128, + 227,0,224,0,238,0,247,0,227,128,227,128,227,128,227,128, + 99,128,115,0,28,0,9,14,28,11,1,0,255,128,255,128, + 129,128,131,0,6,0,6,0,12,0,12,0,28,0,28,0, + 56,0,56,0,56,0,56,0,9,14,28,11,1,0,28,0, + 99,0,193,128,193,128,225,128,251,0,126,0,63,0,79,128, + 195,128,193,128,193,128,227,0,60,0,9,14,28,11,1,0, + 28,0,103,0,227,0,227,128,227,128,227,128,227,128,119,128, + 59,128,3,128,99,128,227,0,231,0,124,0,4,9,9,6, + 1,0,96,240,240,96,0,96,240,240,96,4,12,12,6,1, + 253,96,240,240,96,0,96,240,240,112,32,64,128,10,10,20, + 11,0,0,0,192,3,192,15,0,60,0,240,0,240,0,60, + 0,15,0,3,192,0,192,9,6,12,11,1,2,255,128,255, + 128,0,0,0,0,255,128,255,128,10,10,20,11,0,0,192, + 0,240,0,60,0,15,0,3,192,3,192,15,0,60,0,240, + 0,192,0,9,14,28,10,0,0,31,0,103,128,227,128,227, + 128,99,128,3,0,6,0,12,0,24,0,0,0,24,0,60, + 0,60,0,24,0,15,14,28,16,0,0,7,240,28,12,48, + 4,99,230,102,102,204,102,204,102,216,204,216,204,217,216,206, + 240,96,8,112,48,31,224,14,14,28,14,255,0,1,0,1, + 128,3,128,3,192,5,192,4,192,8,224,8,224,16,112,31, + 240,32,112,32,56,96,56,240,124,12,14,28,14,0,0,255, + 192,113,224,112,224,112,224,112,224,113,192,127,128,112,224,112, + 112,112,112,112,112,112,112,112,224,255,128,12,14,28,14,0, + 0,15,144,60,240,112,48,112,48,224,16,224,16,224,0,224, + 0,224,0,224,16,112,16,112,32,60,96,15,128,14,14,28, + 16,0,0,255,192,112,240,112,56,112,56,112,28,112,28,112, + 28,112,28,112,28,112,28,112,56,112,56,112,240,255,192,11, + 14,28,13,0,0,255,224,112,224,112,96,113,32,113,32,115, + 0,127,0,115,0,113,0,113,32,112,32,112,96,112,224,255, + 224,11,14,28,13,0,0,255,224,112,224,112,96,113,32,113, + 32,115,0,127,0,115,0,113,0,113,0,112,0,112,0,112, + 0,252,0,13,14,28,15,0,0,15,144,60,240,112,48,112, + 48,224,16,224,16,224,0,224,0,224,248,224,112,112,112,112, + 112,60,240,15,144,14,14,28,16,0,0,248,124,112,56,112, + 56,112,56,112,56,112,56,127,248,112,56,112,56,112,56,112, + 56,112,56,112,56,248,124,5,14,14,9,1,0,248,112,112, + 112,112,112,112,112,112,112,112,112,112,248,10,14,28,12,255, + 0,7,192,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,99,128,243,128,243,128,195,128,103,0,60,0,14,14,28, + 16,0,0,248,248,112,96,112,192,113,128,115,0,118,0,126, + 0,127,0,119,128,115,192,113,224,112,240,112,120,248,252,10, + 14,28,12,0,0,248,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,64,112,64,112,192,113,192,255, + 192,17,14,42,19,0,0,252,15,128,60,15,0,62,15,0, + 46,23,0,39,23,0,39,23,0,39,39,0,35,167,0,35, + 167,0,35,199,0,33,199,0,33,199,0,112,135,0,248,143, + 128,14,14,28,16,0,0,240,124,120,56,60,16,60,16,62, + 16,47,16,39,144,35,208,33,240,32,240,32,240,32,112,112, + 48,248,16,14,14,28,16,0,0,15,192,60,240,112,56,112, + 56,224,28,224,28,224,28,224,28,224,28,224,28,112,56,112, + 56,60,240,15,192,12,14,28,14,0,0,255,128,113,224,112, + 240,112,240,112,240,112,240,113,224,127,128,112,0,112,0,112, + 0,112,0,112,0,248,0,14,18,36,16,0,252,15,192,60, + 240,112,56,112,56,224,28,224,28,224,28,224,28,224,28,239, + 28,115,152,113,184,61,240,15,192,0,192,0,232,0,248,0, + 112,13,14,28,16,0,0,255,224,112,240,112,112,112,112,112, + 112,112,224,127,128,113,192,113,192,113,224,112,224,112,224,112, + 232,248,112,10,14,28,12,0,0,30,128,115,128,225,128,224, + 128,240,0,252,0,127,0,31,128,7,192,131,192,129,192,193, + 192,243,128,159,0,11,14,28,13,0,0,255,224,206,96,142, + 32,142,32,142,32,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,31,0,14,14,28,16,0,0,248,124,112, + 56,112,16,112,16,112,16,112,16,112,16,112,16,112,16,112, + 16,112,16,112,16,56,96,15,192,15,14,28,14,255,0,252, + 62,120,28,56,8,60,16,28,16,28,16,14,32,14,32,7, + 64,7,64,3,128,3,128,1,0,1,0,20,14,42,19,255, + 0,253,249,240,120,240,224,56,112,64,60,120,128,28,120,128, + 28,120,128,30,189,0,14,157,0,14,157,0,15,30,0,7, + 14,0,7,14,0,2,4,0,2,4,0,15,14,28,17,0, + 0,126,124,60,56,30,48,14,96,15,192,7,128,3,192,7, + 192,7,224,12,240,24,112,56,120,112,60,248,126,13,14,28, + 15,0,0,252,120,120,48,56,32,60,96,28,64,30,128,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,31,192,12, + 14,28,13,0,0,255,240,224,112,192,224,129,224,131,192,7, + 128,7,0,15,0,30,0,60,16,120,16,112,48,224,112,255, + 240,4,16,16,6,1,254,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,8,14,14,9,0,0,192,192,96, + 96,48,48,24,24,12,12,6,6,3,3,4,16,16,6,0, + 254,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 240,8,8,8,9,0,6,24,24,60,60,102,102,195,195,9, + 2,4,9,0,253,255,128,255,128,5,4,4,7,1,10,192, + 224,112,24,10,9,18,11,0,0,127,0,227,128,195,128,7, + 128,59,128,227,128,227,128,231,128,121,192,12,14,28,12,255, + 0,240,0,112,0,112,0,112,0,112,0,119,128,120,224,112, + 112,112,112,112,112,112,112,112,112,120,224,111,128,9,9,18, + 10,0,0,31,0,115,128,225,128,224,0,224,0,224,0,224, + 128,113,128,30,0,12,14,28,13,0,0,1,224,0,224,0, + 224,0,224,0,224,30,224,113,224,224,224,224,224,224,224,224, + 224,224,224,113,224,30,240,10,9,18,11,0,0,30,0,115, + 128,225,192,225,192,255,192,224,0,224,64,112,192,31,0,8, + 14,14,7,0,0,30,55,119,112,112,252,112,112,112,112,112, + 112,112,248,11,15,30,11,0,252,0,96,0,224,63,0,115, + 128,97,128,97,128,115,128,63,0,96,0,127,128,63,192,193, + 192,192,192,225,128,127,0,12,14,28,13,0,0,240,0,112, + 0,112,0,112,0,112,0,119,192,121,224,112,224,112,224,112, + 224,112,224,112,224,112,224,249,240,5,14,14,6,0,0,112, + 112,112,0,0,240,112,112,112,112,112,112,112,248,7,18,18, + 6,253,252,14,14,14,0,0,30,14,14,14,14,14,14,14, + 14,14,238,236,120,12,14,28,13,0,0,240,0,112,0,112, + 0,112,0,112,0,115,224,113,128,114,0,118,0,127,0,119, + 128,115,192,113,224,251,240,5,14,14,6,0,0,240,112,112, + 112,112,112,112,112,112,112,112,112,112,248,19,9,27,20,0, + 0,247,223,128,121,243,192,112,225,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,249,243,224,12,9,18,13, + 0,0,247,192,121,224,112,224,112,224,112,224,112,224,112,224, + 112,224,249,240,11,9,18,12,0,0,31,0,113,192,224,224, + 224,224,224,224,224,224,224,224,113,192,31,0,12,13,26,12, + 255,252,231,128,120,224,112,112,112,112,112,112,112,112,112,112, + 120,224,119,128,112,0,112,0,112,0,248,0,12,13,26,12, + 0,252,30,96,113,224,224,224,224,224,224,224,224,224,224,224, + 113,224,30,224,0,224,0,224,0,224,1,240,8,9,9,9, + 0,0,246,123,115,112,112,112,112,112,248,9,9,18,10,0, + 0,61,0,99,0,225,0,252,0,127,0,15,128,131,128,195, + 0,190,0,7,13,13,8,0,0,16,16,48,112,252,112,112, + 112,112,112,114,114,60,12,9,18,13,0,0,249,224,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,10,9, + 18,9,255,0,249,192,112,128,112,128,57,0,57,0,30,0, + 30,0,12,0,12,0,16,9,18,15,255,0,251,231,113,194, + 113,194,57,228,57,228,30,120,30,120,12,48,12,48,11,9, + 18,12,0,0,253,224,120,192,61,128,31,0,14,0,31,0, + 55,128,99,192,247,224,11,13,26,12,0,252,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,9,9,18,10,0,0,255,128,199,128, + 143,0,30,0,60,0,120,128,240,128,225,128,255,128,5,16, + 16,6,0,254,24,48,112,112,112,112,96,192,96,112,112,112, + 112,112,48,24,2,14,14,11,4,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,5,16,16,6,0,254,192,96, + 112,112,112,112,48,24,48,112,112,112,112,112,96,192,10,3, + 6,12,1,4,57,192,127,128,231,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,5,0, + 1,4,14,14,7,1,252,96,240,240,96,0,96,96,96,240, + 240,240,240,240,96,9,13,26,11,1,254,0,128,0,128,31, + 0,115,128,227,128,228,0,228,0,232,0,232,128,113,128,30, + 0,32,0,32,0,10,14,28,11,0,0,31,0,49,128,115, + 128,115,128,112,0,112,0,56,0,255,128,28,0,28,0,24, + 64,112,192,159,192,239,128,9,9,18,10,0,2,221,128,255, + 128,99,0,193,128,193,128,193,128,99,0,255,128,221,128,14, + 14,28,15,0,0,252,60,120,24,56,16,28,48,30,32,14, + 96,7,192,31,240,3,128,31,240,3,128,3,128,3,128,15, + 224,2,14,14,11,4,0,192,192,192,192,192,192,0,0,192, + 192,192,192,192,192,7,16,16,8,0,254,120,204,140,192,112, + 124,158,134,194,242,124,28,4,196,204,120,6,2,2,10,2, + 11,204,204,14,14,28,15,0,0,7,128,24,96,32,16,71, + 200,76,200,152,68,152,4,152,4,152,4,76,72,71,136,32, + 16,24,96,7,128,7,8,8,8,0,6,120,204,60,204,220, + 110,0,254,8,5,5,9,0,3,51,102,204,102,51,9,6, + 12,10,0,2,255,128,255,128,1,128,1,128,1,128,1,128, + 5,3,3,6,0,3,248,248,248,14,14,28,15,0,0,7, + 128,24,96,32,16,95,136,76,200,140,196,140,196,143,132,141, + 132,76,200,94,232,32,16,24,96,7,128,6,2,2,8,1, + 11,252,252,6,6,6,7,0,8,120,204,132,132,204,120,10, + 11,22,11,0,0,12,0,12,0,12,0,255,192,255,192,12, + 0,12,0,12,0,0,0,255,192,255,192,6,8,8,6,0, + 6,120,204,204,24,48,96,196,252,6,8,8,6,0,6,120, + 204,12,56,12,204,204,120,5,4,4,7,1,11,24,56,112, + 192,12,13,26,13,0,252,249,240,112,224,112,224,112,224,112, + 224,112,224,112,224,121,224,110,240,96,0,240,0,240,0,96, + 0,13,14,28,14,0,0,63,248,126,112,254,112,254,112,254, + 112,254,112,126,112,62,112,14,112,14,112,14,112,14,112,14, + 112,31,248,4,4,4,5,0,3,96,240,240,96,4,4,4, + 6,1,252,64,112,48,224,6,8,8,6,0,6,48,240,48, + 48,48,48,48,252,6,8,8,7,0,6,120,204,204,204,204, + 120,0,252,8,5,5,9,0,3,204,102,51,102,204,14,14, + 28,15,0,0,48,96,240,96,48,192,48,192,49,128,49,128, + 51,24,255,56,6,120,6,216,13,152,13,252,24,24,24,60, + 14,14,28,15,0,0,48,96,240,96,48,192,48,192,49,128, + 49,128,51,120,255,204,6,204,6,24,12,48,12,96,24,196, + 24,252,14,14,28,15,0,0,120,96,204,96,12,192,56,192, + 13,128,205,128,207,24,123,56,6,120,6,216,13,152,13,252, + 24,24,24,60,9,14,28,10,0,252,12,0,30,0,30,0, + 12,0,0,0,12,0,24,0,48,0,96,0,227,0,227,128, + 227,128,243,0,124,0,14,19,38,14,255,0,12,0,14,0, + 7,0,1,128,0,0,1,0,1,128,3,128,3,192,5,192, + 4,192,8,224,8,224,16,112,31,240,32,112,32,56,96,56, + 240,124,14,19,38,14,255,0,0,96,0,224,1,192,3,0, + 0,0,1,0,1,128,3,128,3,192,5,192,4,192,8,224, + 8,224,16,112,31,240,32,112,32,56,96,56,240,124,14,19, + 38,14,255,0,1,128,3,192,6,96,12,48,0,0,1,0, + 1,128,3,128,3,192,5,192,4,192,8,224,8,224,16,112, + 31,240,32,112,32,56,96,56,240,124,14,18,36,14,255,0, + 3,144,7,224,9,192,0,0,1,0,1,128,3,128,3,192, + 5,192,4,192,8,224,8,224,16,112,31,240,32,112,32,56, + 96,56,240,124,14,17,34,14,255,0,6,96,6,96,0,0, + 1,0,1,128,3,128,3,192,5,192,4,192,8,224,8,224, + 16,112,31,240,32,112,32,56,96,56,240,124,14,19,38,14, + 255,0,1,128,2,64,2,64,1,128,0,0,1,0,1,128, + 3,128,3,192,5,192,4,192,8,224,8,224,16,112,31,240, + 32,112,32,56,96,56,240,124,20,14,42,21,0,0,3,255, + 240,0,248,112,0,184,48,1,56,144,1,56,144,2,57,128, + 4,63,128,4,57,128,15,248,128,16,56,144,16,56,16,32, + 56,48,96,56,112,240,255,240,12,18,36,14,0,252,15,144, + 60,112,112,48,112,48,224,16,224,16,224,0,224,0,224,0, + 224,16,240,16,112,32,60,96,15,128,2,0,3,128,1,128, + 7,0,11,19,38,13,0,0,48,0,56,0,28,0,6,0, + 0,0,255,224,112,224,112,96,113,32,113,32,115,0,127,0, + 115,0,113,0,113,32,112,32,112,96,112,224,255,224,11,19, + 38,13,0,0,1,128,3,128,7,0,12,0,0,0,255,224, + 112,224,112,96,113,32,113,32,115,0,127,0,115,0,113,0, + 113,32,112,32,112,96,112,224,255,224,11,19,38,13,0,0, + 6,0,15,0,25,128,48,192,0,0,255,224,112,224,112,96, + 113,32,113,32,115,0,127,0,115,0,113,0,113,32,112,32, + 112,96,112,224,255,224,11,17,34,13,0,0,25,128,25,128, + 0,0,255,224,112,224,112,96,113,32,113,32,115,0,127,0, + 115,0,113,0,113,32,112,32,112,96,112,224,255,224,6,19, + 19,9,0,0,192,224,112,24,0,124,56,56,56,56,56,56, + 56,56,56,56,56,56,124,6,19,19,9,1,0,12,28,56, + 96,0,248,112,112,112,112,112,112,112,112,112,112,112,112,248, + 8,19,19,9,0,0,24,60,102,195,0,124,56,56,56,56, + 56,56,56,56,56,56,56,56,124,6,17,17,9,1,0,204, + 204,0,248,112,112,112,112,112,112,112,112,112,112,112,112,248, + 14,14,28,16,0,0,255,192,112,240,112,56,112,56,112,28, + 112,28,252,28,112,28,112,28,112,28,112,56,112,56,112,240, + 255,192,14,18,36,16,0,0,7,32,15,192,19,128,0,0, + 240,124,120,56,60,16,60,16,62,16,47,16,39,144,35,208, + 33,240,32,240,32,240,32,112,112,48,248,16,14,19,38,16, + 0,0,12,0,14,0,7,0,1,128,0,0,15,192,60,240, + 112,56,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 112,56,112,56,60,240,15,192,14,19,38,16,0,0,0,192, + 1,192,3,128,6,0,0,0,15,192,60,240,112,56,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,112,56, + 60,240,15,192,14,19,38,16,0,0,3,0,7,128,12,192, + 24,96,0,0,15,192,60,240,112,56,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,112,56,112,56,60,240,15,192, + 14,18,36,16,0,0,7,32,15,192,19,128,0,0,15,192, + 60,240,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,60,240,15,192,14,17,34,16,0,0, + 12,192,12,192,0,0,15,192,60,240,112,56,112,56,224,28, + 224,28,224,28,224,28,224,28,224,28,112,56,112,56,60,240, + 15,192,10,10,20,11,0,0,64,128,225,192,115,128,63,0, + 30,0,30,0,63,0,115,128,225,192,64,128,14,15,30,16, + 0,0,0,8,15,208,60,240,112,56,112,88,224,156,225,28, + 225,28,226,28,228,28,232,28,112,56,48,56,60,240,79,192, + 14,19,38,16,0,0,12,0,14,0,7,0,1,128,0,0, + 248,124,112,56,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,112,16,112,16,56,96,31,192,14,19,38,16, + 0,0,0,96,0,224,1,192,3,0,0,0,248,124,112,56, + 112,16,112,16,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,56,96,31,192,14,19,38,16,0,0,3,0, + 7,128,12,192,24,96,0,0,248,124,112,56,112,16,112,16, + 112,16,112,16,112,16,112,16,112,16,112,16,112,16,112,16, + 56,96,31,192,14,17,34,16,0,0,12,192,12,192,0,0, + 248,124,112,56,112,16,112,16,112,16,112,16,112,16,112,16, + 112,16,112,16,112,16,112,16,56,96,31,192,13,19,38,15, + 0,0,0,96,0,224,1,192,3,0,0,0,252,120,120,48, + 56,32,60,96,28,64,30,128,15,128,7,0,7,0,7,0, + 7,0,7,0,7,0,31,192,12,14,28,14,1,0,248,0, + 112,0,112,0,127,192,113,224,112,240,112,240,112,240,112,240, + 113,224,127,128,112,0,112,0,248,0,11,14,28,12,0,0, + 30,0,51,128,113,192,113,192,113,192,113,128,119,0,113,192, + 112,224,112,224,112,224,112,224,113,192,247,0,10,14,28,11, + 0,0,48,0,56,0,28,0,6,0,0,0,127,0,227,128, + 195,128,7,128,59,128,227,128,227,128,231,128,121,192,10,14, + 28,11,0,0,3,0,7,0,14,0,24,0,0,0,127,0, + 227,128,195,128,7,128,59,128,227,128,227,128,231,128,121,192, + 10,14,28,11,0,0,12,0,30,0,51,0,97,128,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,10,13,26,11,0,0,24,128,63,0,70,0,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,10,12,24,11,0,0,51,0,51,0,0,0,127,0, + 227,128,195,128,7,128,59,128,227,128,227,128,231,128,121,192, + 10,14,28,11,0,0,12,0,18,0,18,0,12,0,0,0, + 127,0,227,128,195,128,7,128,59,128,227,128,227,128,231,128, + 121,192,16,9,18,17,0,0,63,120,99,206,227,135,7,135, + 59,255,227,128,227,129,231,195,120,252,9,13,26,10,0,252, + 31,0,115,128,225,128,224,0,224,0,224,0,224,128,113,128, + 30,0,8,0,14,0,6,0,28,0,10,14,28,11,0,0, + 48,0,56,0,28,0,6,0,0,0,30,0,115,128,225,192, + 225,192,255,192,224,0,224,64,112,192,31,0,10,14,28,11, + 0,0,3,0,7,0,14,0,24,0,0,0,30,0,115,128, + 225,192,225,192,255,192,224,0,224,64,112,192,31,0,10,14, + 28,11,0,0,12,0,30,0,51,0,97,128,0,0,30,0, + 115,128,225,192,225,192,255,192,224,0,224,64,112,192,31,0, + 10,12,24,11,0,0,51,0,51,0,0,0,30,0,115,128, + 225,192,225,192,255,192,224,0,224,64,112,192,31,0,6,14, + 14,6,255,0,192,224,112,24,0,120,56,56,56,56,56,56, + 56,124,6,14,14,6,0,0,12,28,56,96,0,240,112,112, + 112,112,112,112,112,248,8,14,14,6,255,0,24,60,102,195, + 0,120,56,56,56,56,56,56,56,124,5,12,12,6,0,0, + 216,216,0,240,112,112,112,112,112,112,112,248,11,14,28,12, + 0,0,192,0,51,0,28,0,102,0,3,0,31,128,113,192, + 224,224,224,224,224,224,224,224,224,224,113,192,31,0,12,13, + 26,13,0,0,12,64,31,128,35,0,0,0,247,192,121,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,11,14, + 28,12,0,0,48,0,56,0,28,0,6,0,0,0,31,0, + 113,192,224,224,224,224,224,224,224,224,224,224,113,192,31,0, + 11,14,28,12,0,0,1,128,3,128,7,0,12,0,0,0, + 31,0,113,192,224,224,224,224,224,224,224,224,224,224,113,192, + 31,0,11,14,28,12,0,0,6,0,15,0,25,128,48,192, + 0,0,31,0,113,192,224,224,224,224,224,224,224,224,224,224, + 113,192,31,0,11,13,26,12,0,0,24,128,63,0,70,0, + 0,0,31,0,113,192,224,224,224,224,224,224,224,224,224,224, + 113,192,31,0,11,12,24,12,0,0,51,0,51,0,0,0, + 31,0,113,192,224,224,224,224,224,224,224,224,224,224,113,192, + 31,0,10,10,20,11,0,0,12,0,12,0,0,0,0,0, + 255,192,255,192,0,0,0,0,12,0,12,0,10,11,22,11, + 0,255,1,0,31,0,115,128,227,192,229,192,229,192,233,192, + 233,192,115,128,62,0,32,0,12,14,28,13,0,0,24,0, + 28,0,14,0,3,0,0,0,249,240,112,224,112,224,112,224, + 112,224,112,224,112,224,121,224,62,240,12,14,28,13,0,0, + 3,0,7,0,14,0,24,0,0,0,249,240,112,224,112,224, + 112,224,112,224,112,224,112,224,121,224,62,240,12,14,28,13, + 0,0,6,0,15,0,25,128,48,192,0,0,249,240,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,12,12, + 24,13,0,0,25,128,25,128,0,0,249,240,112,224,112,224, + 112,224,112,224,112,224,112,224,121,224,62,240,11,18,36,12, + 0,252,1,128,3,128,7,0,12,0,0,0,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,12,18,36,12,255,252,240,0,112,0, + 112,0,112,0,112,0,119,128,120,224,112,112,112,112,112,112, + 112,112,112,112,120,224,119,128,112,0,112,0,112,0,248,0, + 11,16,32,12,0,252,25,128,25,128,0,0,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--20-140-100-100-P-113-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=18 x= 4 y=10 dx=20 dy= 0 ascent=16 len=42 + Font Bounding box w=24 h=32 x=-3 y=-8 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB14r[2603] U8G_SECTION(".progmem.u8g_font_ncenB14r") = { + 0,24,32,253,248,14,3,71,7,51,32,127,252,16,252,14, + 252,0,0,0,5,0,1,4,14,14,6,1,0,96,240,240, + 240,240,240,96,96,96,0,96,240,240,96,5,5,5,8,1, + 9,216,216,216,216,216,11,12,24,12,0,1,13,128,13,128, + 13,128,127,224,127,224,27,0,27,0,255,192,255,192,54,0, + 54,0,54,0,9,18,36,11,1,254,8,0,8,0,62,0, + 107,128,203,128,201,128,232,0,252,0,255,0,127,128,31,128, + 11,128,201,128,233,128,235,0,62,0,8,0,8,0,14,15, + 30,15,0,255,56,192,103,64,196,192,196,128,197,128,201,0, + 115,0,2,56,6,100,4,196,12,196,8,196,24,200,16,112, + 16,0,16,14,28,17,1,0,7,128,12,192,24,192,24,192, + 29,128,31,0,14,62,63,24,119,144,227,224,225,224,224,241, + 241,254,127,28,2,5,5,5,1,9,192,192,192,192,192,5, + 16,16,6,0,254,24,48,112,96,224,192,192,192,192,192,192, + 224,96,112,48,24,5,16,16,6,0,254,192,96,112,48,56, + 24,24,24,24,24,24,56,48,112,96,192,7,7,7,8,0, + 7,56,146,214,56,214,146,56,10,10,20,11,0,0,12,0, + 12,0,12,0,12,0,255,192,255,192,12,0,12,0,12,0, + 12,0,4,7,7,5,0,253,96,240,240,112,32,64,128,5, + 3,3,6,0,3,248,248,248,4,4,4,5,0,0,96,240, + 240,96,6,14,14,7,0,0,12,12,8,24,24,16,48,48, + 32,96,96,64,192,192,9,14,28,11,1,0,28,0,119,0, + 99,0,227,128,227,128,227,128,227,128,227,128,227,128,227,128, + 227,128,99,0,119,0,28,0,7,14,14,11,2,0,24,56, + 248,56,56,56,56,56,56,56,56,56,56,254,9,14,28,11, + 1,0,30,0,103,0,227,128,227,128,99,128,3,128,7,0, + 7,0,14,0,24,0,48,0,96,128,255,128,255,128,9,14, + 28,11,1,0,30,0,103,0,227,128,227,128,99,128,3,0, + 28,0,3,0,3,128,99,128,227,128,227,128,103,0,62,0, + 9,14,28,11,1,0,1,0,3,0,7,0,15,0,15,0, + 23,0,39,0,71,0,71,0,135,0,255,128,7,0,7,0, + 15,128,9,14,28,11,1,0,127,128,127,0,64,0,64,0, + 64,0,126,0,71,0,3,128,3,128,99,128,227,128,227,128, + 103,0,62,0,9,14,28,11,1,0,31,0,115,128,99,128, + 227,0,224,0,238,0,247,0,227,128,227,128,227,128,227,128, + 99,128,115,0,28,0,9,14,28,11,1,0,255,128,255,128, + 129,128,131,0,6,0,6,0,12,0,12,0,28,0,28,0, + 56,0,56,0,56,0,56,0,9,14,28,11,1,0,28,0, + 99,0,193,128,193,128,225,128,251,0,126,0,63,0,79,128, + 195,128,193,128,193,128,227,0,60,0,9,14,28,11,1,0, + 28,0,103,0,227,0,227,128,227,128,227,128,227,128,119,128, + 59,128,3,128,99,128,227,0,231,0,124,0,4,9,9,6, + 1,0,96,240,240,96,0,96,240,240,96,4,12,12,6,1, + 253,96,240,240,96,0,96,240,240,112,32,64,128,10,10,20, + 11,0,0,0,192,3,192,15,0,60,0,240,0,240,0,60, + 0,15,0,3,192,0,192,9,6,12,11,1,2,255,128,255, + 128,0,0,0,0,255,128,255,128,10,10,20,11,0,0,192, + 0,240,0,60,0,15,0,3,192,3,192,15,0,60,0,240, + 0,192,0,9,14,28,10,0,0,31,0,103,128,227,128,227, + 128,99,128,3,0,6,0,12,0,24,0,0,0,24,0,60, + 0,60,0,24,0,15,14,28,16,0,0,7,240,28,12,48, + 4,99,230,102,102,204,102,204,102,216,204,216,204,217,216,206, + 240,96,8,112,48,31,224,14,14,28,14,255,0,1,0,1, + 128,3,128,3,192,5,192,4,192,8,224,8,224,16,112,31, + 240,32,112,32,56,96,56,240,124,12,14,28,14,0,0,255, + 192,113,224,112,224,112,224,112,224,113,192,127,128,112,224,112, + 112,112,112,112,112,112,112,112,224,255,128,12,14,28,14,0, + 0,15,144,60,240,112,48,112,48,224,16,224,16,224,0,224, + 0,224,0,224,16,112,16,112,32,60,96,15,128,14,14,28, + 16,0,0,255,192,112,240,112,56,112,56,112,28,112,28,112, + 28,112,28,112,28,112,28,112,56,112,56,112,240,255,192,11, + 14,28,13,0,0,255,224,112,224,112,96,113,32,113,32,115, + 0,127,0,115,0,113,0,113,32,112,32,112,96,112,224,255, + 224,11,14,28,13,0,0,255,224,112,224,112,96,113,32,113, + 32,115,0,127,0,115,0,113,0,113,0,112,0,112,0,112, + 0,252,0,13,14,28,15,0,0,15,144,60,240,112,48,112, + 48,224,16,224,16,224,0,224,0,224,248,224,112,112,112,112, + 112,60,240,15,144,14,14,28,16,0,0,248,124,112,56,112, + 56,112,56,112,56,112,56,127,248,112,56,112,56,112,56,112, + 56,112,56,112,56,248,124,5,14,14,9,1,0,248,112,112, + 112,112,112,112,112,112,112,112,112,112,248,10,14,28,12,255, + 0,7,192,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,99,128,243,128,243,128,195,128,103,0,60,0,14,14,28, + 16,0,0,248,248,112,96,112,192,113,128,115,0,118,0,126, + 0,127,0,119,128,115,192,113,224,112,240,112,120,248,252,10, + 14,28,12,0,0,248,0,112,0,112,0,112,0,112,0,112, + 0,112,0,112,0,112,0,112,64,112,64,112,192,113,192,255, + 192,17,14,42,19,0,0,252,15,128,60,15,0,62,15,0, + 46,23,0,39,23,0,39,23,0,39,39,0,35,167,0,35, + 167,0,35,199,0,33,199,0,33,199,0,112,135,0,248,143, + 128,14,14,28,16,0,0,240,124,120,56,60,16,60,16,62, + 16,47,16,39,144,35,208,33,240,32,240,32,240,32,112,112, + 48,248,16,14,14,28,16,0,0,15,192,60,240,112,56,112, + 56,224,28,224,28,224,28,224,28,224,28,224,28,112,56,112, + 56,60,240,15,192,12,14,28,14,0,0,255,128,113,224,112, + 240,112,240,112,240,112,240,113,224,127,128,112,0,112,0,112, + 0,112,0,112,0,248,0,14,18,36,16,0,252,15,192,60, + 240,112,56,112,56,224,28,224,28,224,28,224,28,224,28,239, + 28,115,152,113,184,61,240,15,192,0,192,0,232,0,248,0, + 112,13,14,28,16,0,0,255,224,112,240,112,112,112,112,112, + 112,112,224,127,128,113,192,113,192,113,224,112,224,112,224,112, + 232,248,112,10,14,28,12,0,0,30,128,115,128,225,128,224, + 128,240,0,252,0,127,0,31,128,7,192,131,192,129,192,193, + 192,243,128,159,0,11,14,28,13,0,0,255,224,206,96,142, + 32,142,32,142,32,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,31,0,14,14,28,16,0,0,248,124,112, + 56,112,16,112,16,112,16,112,16,112,16,112,16,112,16,112, + 16,112,16,112,16,56,96,15,192,15,14,28,14,255,0,252, + 62,120,28,56,8,60,16,28,16,28,16,14,32,14,32,7, + 64,7,64,3,128,3,128,1,0,1,0,20,14,42,19,255, + 0,253,249,240,120,240,224,56,112,64,60,120,128,28,120,128, + 28,120,128,30,189,0,14,157,0,14,157,0,15,30,0,7, + 14,0,7,14,0,2,4,0,2,4,0,15,14,28,17,0, + 0,126,124,60,56,30,48,14,96,15,192,7,128,3,192,7, + 192,7,224,12,240,24,112,56,120,112,60,248,126,13,14,28, + 15,0,0,252,120,120,48,56,32,60,96,28,64,30,128,15, + 128,7,0,7,0,7,0,7,0,7,0,7,0,31,192,12, + 14,28,13,0,0,255,240,224,112,192,224,129,224,131,192,7, + 128,7,0,15,0,30,0,60,16,120,16,112,48,224,112,255, + 240,4,16,16,6,1,254,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,8,14,14,9,0,0,192,192,96, + 96,48,48,24,24,12,12,6,6,3,3,4,16,16,6,0, + 254,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 240,8,8,8,9,0,6,24,24,60,60,102,102,195,195,9, + 2,4,9,0,253,255,128,255,128,5,4,4,7,1,10,192, + 224,112,24,10,9,18,11,0,0,127,0,227,128,195,128,7, + 128,59,128,227,128,227,128,231,128,121,192,12,14,28,12,255, + 0,240,0,112,0,112,0,112,0,112,0,119,128,120,224,112, + 112,112,112,112,112,112,112,112,112,120,224,111,128,9,9,18, + 10,0,0,31,0,115,128,225,128,224,0,224,0,224,0,224, + 128,113,128,30,0,12,14,28,13,0,0,1,224,0,224,0, + 224,0,224,0,224,30,224,113,224,224,224,224,224,224,224,224, + 224,224,224,113,224,30,240,10,9,18,11,0,0,30,0,115, + 128,225,192,225,192,255,192,224,0,224,64,112,192,31,0,8, + 14,14,7,0,0,30,55,119,112,112,252,112,112,112,112,112, + 112,112,248,11,15,30,11,0,252,0,96,0,224,63,0,115, + 128,97,128,97,128,115,128,63,0,96,0,127,128,63,192,193, + 192,192,192,225,128,127,0,12,14,28,13,0,0,240,0,112, + 0,112,0,112,0,112,0,119,192,121,224,112,224,112,224,112, + 224,112,224,112,224,112,224,249,240,5,14,14,6,0,0,112, + 112,112,0,0,240,112,112,112,112,112,112,112,248,7,18,18, + 6,253,252,14,14,14,0,0,30,14,14,14,14,14,14,14, + 14,14,238,236,120,12,14,28,13,0,0,240,0,112,0,112, + 0,112,0,112,0,115,224,113,128,114,0,118,0,127,0,119, + 128,115,192,113,224,251,240,5,14,14,6,0,0,240,112,112, + 112,112,112,112,112,112,112,112,112,112,248,19,9,27,20,0, + 0,247,223,128,121,243,192,112,225,192,112,225,192,112,225,192, + 112,225,192,112,225,192,112,225,192,249,243,224,12,9,18,13, + 0,0,247,192,121,224,112,224,112,224,112,224,112,224,112,224, + 112,224,249,240,11,9,18,12,0,0,31,0,113,192,224,224, + 224,224,224,224,224,224,224,224,113,192,31,0,12,13,26,12, + 255,252,231,128,120,224,112,112,112,112,112,112,112,112,112,112, + 120,224,119,128,112,0,112,0,112,0,248,0,12,13,26,12, + 0,252,30,96,113,224,224,224,224,224,224,224,224,224,224,224, + 113,224,30,224,0,224,0,224,0,224,1,240,8,9,9,9, + 0,0,246,123,115,112,112,112,112,112,248,9,9,18,10,0, + 0,61,0,99,0,225,0,252,0,127,0,15,128,131,128,195, + 0,190,0,7,13,13,8,0,0,16,16,48,112,252,112,112, + 112,112,112,114,114,60,12,9,18,13,0,0,249,224,112,224, + 112,224,112,224,112,224,112,224,112,224,121,224,62,240,10,9, + 18,9,255,0,249,192,112,128,112,128,57,0,57,0,30,0, + 30,0,12,0,12,0,16,9,18,15,255,0,251,231,113,194, + 113,194,57,228,57,228,30,120,30,120,12,48,12,48,11,9, + 18,12,0,0,253,224,120,192,61,128,31,0,14,0,31,0, + 55,128,99,192,247,224,11,13,26,12,0,252,248,224,112,64, + 112,64,56,128,56,128,29,0,29,0,14,0,14,0,4,0, + 196,0,232,0,112,0,9,9,18,10,0,0,255,128,199,128, + 143,0,30,0,60,0,120,128,240,128,225,128,255,128,5,16, + 16,6,0,254,24,48,112,112,112,112,96,192,96,112,112,112, + 112,112,48,24,2,14,14,11,4,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,5,16,16,6,0,254,192,96, + 112,112,112,112,48,24,48,112,112,112,112,112,96,192,10,3, + 6,12,1,4,57,192,127,128,231,0,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--25-180-100-100-P-149-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 6 y=15 dx=26 dy= 0 ascent=24 len=72 + Font Bounding box w=33 h=40 x=-4 y=-10 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB18[8114] U8G_SECTION(".progmem.u8g_font_ncenB18") = { + 0,33,40,252,246,18,4,68,10,106,32,255,251,24,251,18, + 251,0,0,0,7,0,1,5,18,18,7,1,0,112,248,248, + 248,112,112,112,112,112,112,32,32,0,0,112,248,248,112,6, + 6,6,8,1,12,204,204,204,204,204,136,12,18,36,14,1, + 0,12,192,12,192,12,192,12,192,12,192,127,240,127,240,25, + 128,25,128,25,128,25,128,255,224,255,224,51,0,51,0,51, + 0,51,0,51,0,12,23,46,14,1,253,4,0,4,0,31, + 192,116,96,100,240,228,240,228,240,244,96,252,0,255,0,127, + 192,31,224,7,240,5,240,100,240,244,112,244,112,244,96,100, + 224,63,128,4,0,4,0,4,0,19,18,54,21,1,0,30, + 14,0,123,54,0,113,204,0,241,12,0,225,24,0,226,24, + 0,226,48,0,100,48,0,56,96,0,0,99,192,0,207,96, + 0,206,32,1,158,32,1,156,32,3,28,64,3,28,64,6, + 12,128,6,7,0,20,18,54,22,1,0,1,240,0,7,56, + 0,14,24,0,14,24,0,14,24,0,15,48,0,15,224,0, + 7,192,0,15,192,0,57,227,240,113,241,192,240,241,128,240, + 121,0,240,127,0,240,62,16,120,31,16,124,63,224,31,199, + 192,2,6,6,6,2,12,192,192,192,192,192,192,6,21,21, + 8,1,253,4,12,24,48,48,96,96,224,224,224,224,224,224, + 224,96,96,48,48,24,12,4,6,21,21,8,1,253,128,192, + 96,48,48,24,24,28,28,28,28,28,28,28,24,24,48,48, + 96,192,128,9,10,20,11,1,8,28,0,28,0,201,128,235, + 128,62,0,62,0,235,128,201,128,28,0,28,0,12,12,24, + 14,1,1,6,0,6,0,6,0,6,0,6,0,255,240,255, + 240,6,0,6,0,6,0,6,0,6,0,5,8,8,7,1, + 252,112,248,248,120,48,32,64,128,6,3,3,8,1,5,252, + 252,252,5,4,4,7,1,0,112,248,248,112,7,18,18,9, + 1,0,6,6,6,12,12,12,24,24,24,48,48,48,96,96, + 96,192,192,192,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,57,192,15,0,10,18, + 36,14,2,0,30,0,254,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,255,192,11,18,36,14,1,0,31,0, + 99,192,225,224,241,224,241,224,241,224,97,224,1,192,3,192, + 3,128,7,0,14,0,24,32,48,32,112,96,255,224,255,224, + 255,224,12,18,36,14,1,0,15,128,49,224,112,224,120,240, + 120,240,120,240,48,224,1,192,15,0,1,192,0,224,96,240, + 240,240,240,240,240,240,224,224,97,224,31,128,12,18,36,14, + 1,0,0,192,1,192,3,192,7,192,7,192,15,192,27,192, + 19,192,51,192,99,192,99,192,195,192,255,240,255,240,3,192, + 3,192,3,192,15,240,12,18,36,14,1,0,127,240,127,224, + 127,192,64,0,64,0,64,0,95,0,113,192,96,224,0,240, + 0,240,0,240,96,240,240,240,240,240,240,224,97,192,63,0, + 12,18,36,14,1,0,15,128,56,192,113,224,113,224,241,224, + 240,192,240,0,247,128,249,224,240,224,240,240,240,240,240,240, + 240,240,240,240,112,224,121,224,31,128,12,18,36,14,1,0, + 255,240,255,240,255,224,192,96,128,192,129,192,3,128,3,128, + 7,0,7,0,15,0,15,0,30,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,112,224,120,224,124,192,63,128,31,128,63,192,119,224, + 225,240,224,240,224,112,224,112,224,96,112,192,31,128,12,18, + 36,14,1,0,31,128,121,224,112,224,240,240,240,240,240,240, + 240,240,240,240,112,240,121,240,30,240,0,240,48,240,120,240, + 120,224,120,224,49,192,31,0,5,12,12,7,1,0,112,248, + 248,112,0,0,0,0,112,248,248,112,5,16,16,7,1,252, + 112,248,248,112,0,0,0,0,112,248,248,120,48,32,64,128, + 12,12,24,14,1,1,0,48,0,240,3,192,15,0,60,0, + 240,0,240,0,60,0,15,0,3,192,0,240,0,48,12,6, + 12,14,1,4,255,240,255,240,0,0,0,0,255,240,255,240, + 12,12,24,14,1,1,192,0,240,0,60,0,15,0,3,192, + 0,240,0,240,3,192,15,0,60,0,240,0,192,0,11,18, + 36,13,1,0,63,0,99,192,241,224,241,224,97,224,1,224, + 1,192,3,128,7,0,12,0,24,0,24,0,0,0,0,0, + 28,0,62,0,62,0,28,0,19,18,54,20,1,0,1,252, + 0,15,6,0,12,1,128,48,0,192,48,220,192,99,188,96, + 103,28,96,199,28,96,206,28,96,206,56,96,206,56,64,206, + 56,192,206,121,128,103,191,0,96,0,0,56,1,0,28,7, + 0,7,252,0,19,18,54,19,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,1,120,0,1,120,0,3,60,0,2, + 60,0,2,60,0,6,30,0,4,30,0,7,254,0,12,15, + 0,8,15,0,8,15,0,24,7,128,56,7,128,254,31,224, + 17,18,54,19,1,0,255,248,0,60,62,0,60,31,0,60, + 31,0,60,31,0,60,31,0,60,30,0,60,60,0,63,248, + 0,60,30,0,60,15,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,31,0,255,252,0,17,18,54,19, + 1,0,3,249,128,15,15,128,60,3,128,60,1,128,120,1, + 128,120,0,128,248,0,128,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,120,0,128,120,0,128,60,1,0,60, + 1,0,15,6,0,3,248,0,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,60,7,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,15,18,36,18,1,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,18, + 36,17,1,0,255,254,60,30,60,6,60,2,60,2,60,34, + 60,32,60,96,63,224,60,96,60,32,60,32,60,0,60,0, + 60,0,60,0,60,0,255,0,18,18,54,20,1,0,3,249, + 128,15,15,128,60,3,128,60,1,128,120,1,128,120,0,128, + 248,0,128,248,0,0,248,0,0,248,0,0,248,15,192,248, + 7,128,120,7,128,120,7,128,60,7,128,60,7,128,15,13, + 128,3,248,128,19,18,54,21,1,0,255,31,224,60,7,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,63,255,128,60,7,128,60,7,128,60,7,128,60,7, + 128,60,7,128,60,7,128,60,7,128,60,7,128,255,31,224, + 8,18,18,10,1,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,14,18,36,16,0,0,3,252, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,96,240,240,240,240,240,224,240,192,224,97,224, + 63,128,20,18,54,21,1,0,255,15,192,60,3,0,60,6, + 0,60,12,0,60,24,0,60,48,0,60,96,0,60,224,0, + 61,240,0,63,248,0,62,248,0,60,124,0,60,62,0,60, + 31,0,60,31,0,60,15,128,60,7,192,255,15,240,15,18, + 36,17,1,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,2, + 60,2,60,6,60,30,255,254,22,18,54,24,1,0,252,1, + 252,60,1,240,62,3,240,62,2,240,46,2,240,47,6,240, + 39,4,240,39,132,240,39,140,240,35,136,240,35,200,240,35, + 216,240,33,208,240,33,240,240,32,224,240,32,224,240,112,96, + 240,248,67,252,20,18,54,22,1,0,252,7,240,62,1,192, + 31,0,128,31,128,128,31,192,128,23,224,128,19,240,128,17, + 240,128,16,248,128,16,124,128,16,126,128,16,63,128,16,31, + 128,16,15,128,16,7,128,16,3,128,56,1,128,254,0,128, + 19,18,54,21,1,0,3,248,0,15,30,0,60,7,128,60, + 7,128,120,3,192,120,3,192,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,120,3,192,120,3,192, + 60,7,128,60,7,128,15,30,0,3,248,0,17,18,54,18, + 1,0,255,252,0,60,31,0,60,15,0,60,15,128,60,15, + 128,60,15,128,60,15,128,60,15,0,60,31,0,63,248,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,255,128,0,19,23,69,21,1,251,3,248, + 0,15,30,0,60,7,128,60,7,128,120,3,192,120,3,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,251, + 227,224,126,115,192,124,51,192,60,51,128,60,27,128,15,30, + 0,3,254,0,0,14,0,0,15,32,0,7,192,0,7,192, + 0,3,128,19,18,54,21,1,0,255,248,0,60,62,0,60, + 31,0,60,31,0,60,31,0,60,31,0,60,30,0,60,60, + 0,63,224,0,60,120,0,60,60,0,60,60,0,60,62,0, + 60,30,0,60,31,32,60,15,32,60,15,192,255,135,128,14, + 18,36,16,1,0,15,200,56,120,96,24,224,24,224,8,240, + 8,254,0,255,192,127,240,63,248,15,252,1,252,128,60,128, + 28,192,28,192,24,240,112,159,192,16,18,36,18,1,0,255, + 255,227,199,195,195,131,193,131,193,131,193,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,15,240,19,18,54,21,1,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,2,0,30,2,0,31,140,0,7,248,0,19, + 18,54,19,0,0,255,15,224,60,3,128,60,3,0,30,2, + 0,30,2,0,30,6,0,15,4,0,15,4,0,15,12,0, + 7,136,0,7,136,0,7,152,0,3,208,0,3,208,0,1, + 224,0,1,224,0,0,192,0,0,192,0,26,18,72,26,0, + 0,255,127,159,192,60,30,7,0,60,30,6,0,30,15,4, + 0,30,15,4,0,30,15,12,0,15,31,136,0,15,23,136, + 0,15,23,152,0,7,179,208,0,7,163,208,0,7,163,240, + 0,3,225,224,0,3,193,224,0,3,193,224,0,1,192,192, + 0,1,128,192,0,1,128,192,0,20,18,54,20,0,0,255, + 135,224,62,1,128,31,3,0,31,134,0,15,140,0,7,216, + 0,3,240,0,3,224,0,1,240,0,0,248,0,1,248,0, + 3,124,0,6,62,0,4,31,0,12,31,0,24,15,128,48, + 7,192,252,31,240,18,18,54,18,0,0,255,15,192,60,3, + 0,30,2,0,30,6,0,15,4,0,15,12,0,7,136,0, + 7,152,0,3,208,0,3,240,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,7,248, + 0,15,18,36,17,1,0,127,254,112,62,96,124,64,120,64, + 248,0,240,1,224,3,224,3,192,7,128,15,128,15,0,30, + 0,62,2,60,2,120,6,248,14,255,254,6,21,21,8,1, + 253,252,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,252,10,18,36,12,1,0,192,0,224,0, + 224,0,112,0,112,0,56,0,56,0,28,0,28,0,14,0, + 14,0,7,0,7,0,3,128,3,128,1,192,1,192,0,192, + 6,21,21,8,1,253,252,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,252,10,10,20,15,2, + 8,12,0,12,0,30,0,30,0,51,0,51,0,97,128,97, + 128,192,192,192,192,12,2,4,12,0,252,255,240,255,240,5, + 5,5,7,1,13,224,224,112,48,24,14,12,24,15,0,0, + 127,128,241,224,240,240,96,240,1,240,14,240,120,240,240,240, + 240,240,240,240,249,252,126,56,16,18,36,16,255,0,252,0, + 60,0,60,0,60,0,60,0,60,0,61,240,63,28,62,30, + 60,14,60,15,60,15,60,15,60,15,60,14,60,30,62,28, + 39,240,13,12,24,14,0,0,15,240,56,120,120,120,112,48, + 240,0,240,0,240,0,240,0,120,8,120,8,60,48,31,224, + 16,18,36,17,0,0,0,252,0,60,0,60,0,60,0,60, + 0,60,15,188,56,252,120,124,112,60,240,60,240,60,240,60, + 240,60,112,60,120,124,56,252,15,191,14,12,24,15,0,0, + 15,192,56,112,120,120,112,56,240,60,255,252,240,0,240,0, + 120,8,120,8,60,48,15,224,12,18,36,10,0,0,7,224, + 28,240,28,240,60,96,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 255,0,13,18,36,15,1,251,0,56,31,248,121,224,240,240, + 240,240,240,240,240,240,121,224,63,128,96,0,224,0,255,192, + 127,240,127,248,96,56,192,24,224,48,127,224,17,18,54,18, + 0,0,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,248,0,61,252,0,62,62,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,254,63,128,8,18,18,9,0,0,24,60, + 60,24,0,0,252,60,60,60,60,60,60,60,60,60,60,255, + 8,23,23,7,253,251,6,15,15,6,0,0,63,15,15,15, + 15,15,15,15,15,15,15,15,15,15,206,206,120,17,18,54, + 17,0,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,254,0,60,56,0,60,48,0,60,96, + 0,60,192,0,63,192,0,63,224,0,60,240,0,60,120,0, + 60,60,0,60,30,0,255,127,128,8,18,18,9,0,0,252, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 255,24,12,36,25,0,0,252,240,240,61,249,248,62,126,124, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,254,126,127,17,12,36,18,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,12,24,15,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,16,17,34,16,255,251,253,240,63,28,60,30,60, + 14,60,15,60,15,60,15,60,15,60,14,62,30,63,28,61, + 240,60,0,60,0,60,0,60,0,255,0,16,17,34,16,0, + 251,15,132,60,236,120,60,112,60,240,60,240,60,240,60,240, + 60,112,60,120,124,56,252,15,188,0,60,0,60,0,60,0, + 60,0,255,12,12,24,12,0,0,252,224,61,240,62,240,60, + 96,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,10,12,24,11,0,0,62,128,99,128,193,128,224,128,252, + 0,255,128,127,192,15,192,129,192,192,192,225,128,191,0,10, + 17,34,10,0,0,4,0,12,0,12,0,28,0,60,0,255, + 128,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 64,60,64,31,128,15,0,17,12,36,18,0,0,254,126,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,31,222,0,15,159, + 128,16,12,24,15,255,0,255,31,60,4,30,12,30,8,15, + 24,15,16,7,176,7,160,3,224,3,192,1,192,1,128,23, + 12,36,22,255,0,255,63,62,60,30,8,60,30,8,30,63, + 24,30,47,16,30,47,16,15,103,176,15,71,160,7,195,224, + 7,131,192,3,129,192,3,1,128,17,12,36,16,255,0,255, + 31,0,62,12,0,31,24,0,15,176,0,7,224,0,3,192, + 0,1,224,0,3,240,0,6,248,0,12,124,0,24,62,0, + 124,127,128,16,17,34,15,255,251,254,63,60,12,30,8,30, + 24,15,16,15,48,7,160,7,224,3,192,3,192,1,192,1, + 128,1,128,97,0,243,0,254,0,120,0,11,12,24,12,0, + 0,255,224,225,224,195,224,135,192,143,128,15,0,30,0,62, + 32,124,32,248,96,240,224,255,224,6,21,21,8,1,253,28, + 48,112,112,112,112,112,112,112,96,192,96,112,112,112,112,112, + 112,112,48,28,3,18,18,15,6,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,6,21,21,8, + 1,253,224,48,56,56,56,56,56,56,56,24,12,24,56,56, + 56,56,56,56,56,48,224,12,5,10,15,1,4,56,32,126, + 112,255,240,231,224,65,192,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,7,0,1,5,18, + 18,7,1,251,112,248,248,112,0,0,32,32,112,112,112,112, + 112,112,248,248,248,112,12,15,30,14,1,255,0,32,0,64, + 15,192,56,240,121,240,113,96,242,0,242,0,244,0,244,0, + 120,16,120,16,60,96,47,192,64,0,14,18,36,15,0,0, + 3,224,15,48,14,120,30,120,30,48,30,0,30,0,30,0, + 127,224,15,0,15,0,15,0,7,0,7,4,126,12,207,252, + 207,248,113,240,12,12,24,14,1,2,207,48,255,240,127,224, + 112,224,224,112,224,112,224,112,224,112,112,224,127,224,255,240, + 207,48,19,18,54,19,0,0,255,143,224,62,3,0,62,3, + 0,31,6,0,31,6,0,15,140,0,15,140,0,7,216,0, + 7,248,0,31,254,0,1,224,0,1,224,0,31,254,0,1, + 224,0,1,224,0,1,224,0,3,240,0,15,252,0,3,18, + 18,14,6,0,224,224,224,224,224,224,224,0,0,0,224,224, + 224,224,224,224,224,224,11,20,40,13,1,254,31,0,35,128, + 99,128,99,0,120,0,62,0,63,128,71,192,193,224,224,224, + 240,96,124,96,63,64,15,128,3,128,1,128,48,128,112,128, + 113,0,62,0,10,4,8,12,1,14,97,128,243,192,243,192, + 97,128,19,18,54,21,1,0,3,248,0,15,254,0,60,7, + 128,48,1,128,97,248,192,103,24,192,198,8,96,206,0,96, + 206,0,96,206,0,96,206,0,96,199,4,96,103,136,192,97, + 240,192,48,1,128,60,7,128,15,254,0,3,248,0,8,10, + 10,10,1,8,120,206,6,126,198,206,119,0,0,255,11,7, + 14,13,1,3,28,224,57,192,115,128,231,0,115,128,57,192, + 28,224,11,6,12,13,1,4,255,224,255,224,0,96,0,96, + 0,96,0,96,6,3,3,8,1,5,252,252,252,19,18,54, + 21,1,0,3,248,0,15,254,0,60,7,128,48,1,128,103, + 240,192,99,24,192,195,24,96,195,24,96,195,240,96,195,96, + 96,195,48,96,195,48,96,99,24,192,103,156,192,48,1,128, + 60,7,128,15,254,0,3,248,0,8,2,2,10,1,15,255, + 255,8,7,7,9,0,11,60,102,195,195,195,102,60,12,11, + 22,14,1,1,6,0,6,0,6,0,255,240,255,240,6,0, + 6,0,6,0,0,0,255,240,255,240,7,11,11,8,0,7, + 124,206,198,198,14,12,24,48,98,254,254,7,11,11,8,0, + 7,124,206,198,6,12,60,14,6,198,206,124,5,5,5,7, + 1,14,24,56,112,96,192,17,17,51,18,0,251,254,63,128, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,63,222,0,39,159, + 128,48,0,0,48,0,0,120,0,0,120,0,0,48,0,0, + 16,18,36,18,1,0,31,255,127,156,127,156,255,156,255,156, + 255,156,127,156,127,156,31,156,3,156,3,156,3,156,3,156, + 3,156,3,156,3,156,3,156,15,255,3,4,4,7,2,5, + 224,224,224,224,5,6,6,7,1,251,16,32,112,56,24,240, + 6,11,11,8,0,7,48,240,48,48,48,48,48,48,48,48, + 252,9,10,20,11,1,8,28,0,99,0,227,128,227,128,227, + 128,99,0,28,0,0,0,0,0,255,128,11,7,14,13,1, + 3,231,0,115,128,57,192,28,224,57,192,115,128,231,0,18, + 18,54,21,1,0,48,6,0,240,6,0,48,12,0,48,24, + 0,48,24,0,48,48,0,48,96,0,48,99,0,48,199,0, + 49,135,0,253,143,0,3,27,0,6,19,0,6,51,0,12, + 99,0,24,127,192,24,3,0,48,7,128,18,18,54,21,1, + 0,48,6,0,240,6,0,48,12,0,48,24,0,48,24,0, + 48,48,0,48,96,0,48,111,128,48,201,192,49,152,192,253, + 152,192,3,1,192,6,1,128,6,3,0,12,6,0,24,12, + 64,24,31,192,48,31,192,19,18,54,21,0,0,124,3,0, + 206,3,0,198,6,0,6,12,0,12,12,0,56,24,0,12, + 48,0,6,49,128,198,99,128,206,195,128,124,197,128,1,141, + 128,3,25,128,3,25,128,6,49,128,12,63,224,12,1,128, + 24,3,192,11,18,36,13,1,251,7,0,15,128,15,128,7, + 0,0,0,0,0,3,0,3,0,6,0,28,0,56,0,112, + 0,240,0,240,192,241,224,241,224,120,192,31,128,19,24,72, + 19,0,0,6,0,0,7,0,0,3,128,0,1,192,0,0, + 96,0,0,0,0,0,96,0,0,96,0,0,240,0,0,240, + 0,1,120,0,1,120,0,3,60,0,2,60,0,2,60,0, + 6,30,0,4,30,0,7,254,0,12,15,0,8,15,0,8, + 15,0,24,7,128,56,7,128,254,31,224,19,24,72,19,0, + 0,0,6,0,0,14,0,0,28,0,0,48,0,0,96,0, + 0,0,0,0,96,0,0,96,0,0,240,0,0,240,0,1, + 120,0,1,120,0,3,60,0,2,60,0,2,60,0,6,30, + 0,4,30,0,7,254,0,12,15,0,8,15,0,8,15,0, + 24,7,128,56,7,128,254,31,224,19,23,69,19,0,0,0, + 96,0,0,240,0,1,152,0,3,12,0,0,0,0,0,96, + 0,0,96,0,0,240,0,0,240,0,1,120,0,1,120,0, + 3,60,0,2,60,0,2,60,0,6,30,0,4,30,0,7, + 254,0,12,15,0,8,15,0,8,15,0,24,7,128,56,7, + 128,254,31,224,19,22,66,19,0,0,0,226,0,1,252,0, + 2,56,0,0,0,0,0,96,0,0,96,0,0,240,0,0, + 240,0,1,120,0,1,120,0,3,60,0,2,60,0,2,60, + 0,6,30,0,4,30,0,7,254,0,12,15,0,8,15,0, + 8,15,0,24,7,128,56,7,128,254,31,224,19,23,69,19, + 0,0,3,156,0,3,156,0,3,156,0,0,0,0,0,0, + 0,0,96,0,0,96,0,0,240,0,0,240,0,1,120,0, + 1,120,0,3,60,0,2,60,0,2,60,0,6,30,0,4, + 30,0,7,254,0,12,15,0,8,15,0,8,15,0,24,7, + 128,56,7,128,254,31,224,19,24,72,19,0,0,0,240,0, + 1,152,0,1,8,0,1,152,0,0,240,0,0,0,0,0, + 96,0,0,96,0,0,240,0,0,240,0,1,120,0,1,120, + 0,3,60,0,2,60,0,2,60,0,6,30,0,4,30,0, + 7,254,0,12,15,0,8,15,0,8,15,0,24,7,128,56, + 7,128,254,31,224,25,18,72,26,0,0,1,255,255,128,0, + 111,3,128,0,111,1,128,0,207,0,128,0,207,0,128,1, + 143,8,128,1,143,8,0,3,15,24,0,3,15,248,0,6, + 15,24,0,7,255,8,0,12,15,8,0,12,15,0,128,24, + 15,0,128,24,15,0,128,48,15,1,128,112,15,3,128,252, + 63,255,128,17,23,69,19,1,251,3,249,128,15,15,128,60, + 3,128,60,1,128,120,1,128,120,0,128,248,0,128,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,120,0,128, + 120,0,128,60,1,0,60,1,0,15,6,0,3,248,0,0, + 128,0,1,192,0,0,224,0,0,96,0,3,192,0,15,24, + 48,18,1,0,12,0,14,0,7,0,1,128,0,192,0,0, + 255,254,60,30,60,6,60,2,60,2,60,34,60,32,60,96, + 63,224,60,96,60,32,60,32,60,2,60,2,60,2,60,6, + 60,30,255,254,15,24,48,18,1,0,0,24,0,56,0,112, + 0,192,1,128,0,0,255,254,60,30,60,6,60,2,60,2, + 60,34,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,2,60,6,60,30,255,254,15,23,46,18,1,0, + 1,128,3,192,6,96,12,48,0,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,23, + 46,18,1,0,14,112,14,112,14,112,0,0,0,0,255,254, + 60,30,60,6,60,2,60,2,60,34,60,32,60,96,63,224, + 60,96,60,32,60,32,60,2,60,2,60,2,60,6,60,30, + 255,254,8,24,24,10,1,0,192,224,112,24,12,0,255,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,255, + 8,24,24,10,1,0,3,7,14,24,48,0,255,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,255,8,23, + 23,10,1,0,24,60,102,195,0,255,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,255,8,23,23,10,1, + 0,231,231,231,0,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,255,135,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,20,22,66,22,1,0,0,226,0,1,252,0, + 2,56,0,0,0,0,252,7,240,62,1,192,31,0,128,31, + 128,128,31,192,128,23,224,128,19,240,128,17,240,128,16,248, + 128,16,124,128,16,126,128,16,63,128,16,31,128,16,15,128, + 16,7,128,16,3,128,56,1,128,254,0,128,19,24,72,21, + 1,0,6,0,0,7,0,0,3,128,0,0,192,0,0,96, + 0,0,0,0,3,248,0,15,30,0,60,7,128,60,7,128, + 120,3,192,120,3,192,248,3,224,248,3,224,248,3,224,248, + 3,224,248,3,224,248,3,224,120,3,192,120,3,192,60,7, + 128,60,7,128,15,30,0,3,248,0,19,23,69,21,1,0, + 0,24,0,0,56,0,0,96,0,0,192,0,0,0,0,3, + 248,0,15,30,0,60,7,128,60,7,128,120,3,192,120,3, + 192,248,3,224,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,120,3,192,120,3,192,60,7,128,60,7,128,15, + 30,0,3,248,0,19,23,69,21,1,0,0,96,0,0,240, + 0,1,152,0,3,12,0,0,0,0,3,248,0,15,30,0, + 60,7,128,60,7,128,120,3,192,120,3,192,248,3,224,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,120,3, + 192,120,3,192,60,7,128,60,7,128,15,30,0,3,248,0, + 19,22,66,21,1,0,0,226,0,1,252,0,2,56,0,0, + 0,0,3,248,0,15,30,0,60,7,128,60,7,128,120,3, + 192,120,3,192,248,3,224,248,3,224,248,3,224,248,3,224, + 248,3,224,248,3,224,120,3,192,120,3,192,60,7,128,60, + 7,128,15,30,0,3,248,0,19,23,69,21,1,0,7,28, + 0,7,28,0,7,28,0,0,0,0,0,0,0,3,248,0, + 15,30,0,60,7,128,60,7,128,120,3,192,120,3,192,248, + 3,224,248,3,224,248,3,224,248,3,224,248,3,224,248,3, + 224,120,3,192,120,3,192,60,7,128,60,7,128,15,30,0, + 3,248,0,12,12,24,14,1,1,192,48,224,112,112,224,57, + 192,31,128,15,0,15,0,31,128,57,192,112,224,224,112,192, + 48,20,18,54,21,0,0,1,252,48,7,143,96,30,3,192, + 30,3,192,60,7,224,60,13,224,124,25,240,124,49,240,124, + 97,240,124,193,240,125,129,240,127,1,240,62,1,224,60,1, + 224,62,3,192,126,3,192,199,143,0,129,252,0,19,24,72, + 21,1,0,3,0,0,3,128,0,1,192,0,0,96,0,0, + 48,0,0,0,0,255,15,224,60,3,128,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,30,2,0,31,142,0,7,248,0,19,24,72,21,1, + 0,0,6,0,0,14,0,0,28,0,0,48,0,0,96,0, + 0,0,0,255,15,224,60,3,128,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 30,2,0,31,142,0,7,248,0,19,23,69,21,1,0,0, + 96,0,0,240,0,1,152,0,3,12,0,0,0,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,30,2,0,31,142, + 0,7,248,0,19,23,69,21,1,0,7,28,0,7,28,0, + 7,28,0,0,0,0,0,0,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,30,2,0,31,142,0,7,248,0,18, + 24,72,18,0,0,0,6,0,0,14,0,0,28,0,0,48, + 0,0,96,0,0,0,0,255,15,192,60,3,0,30,6,0, + 30,6,0,15,12,0,15,12,0,7,152,0,7,152,0,3, + 240,0,3,240,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,7,248,0,16,18,36, + 18,1,0,255,128,60,0,60,0,60,0,63,248,60,62,60, + 30,60,31,60,31,60,31,60,31,60,30,60,62,63,240,60, + 0,60,0,60,0,255,128,15,18,36,15,255,0,7,224,30, + 120,28,60,60,60,60,60,60,56,60,112,61,224,60,60,60, + 30,60,30,60,30,60,30,60,30,60,30,60,28,61,60,253, + 240,14,18,36,15,0,0,12,0,14,0,7,0,3,0,1, + 128,0,0,127,128,241,224,240,240,96,240,1,240,14,240,120, + 240,240,240,240,240,240,240,249,252,126,56,14,18,36,15,0, + 0,1,128,3,128,7,0,6,0,12,0,0,0,127,128,241, + 224,240,240,96,240,1,240,14,240,120,240,240,240,240,240,240, + 240,249,252,126,56,14,18,36,15,0,0,2,0,7,0,15, + 128,24,192,48,96,0,0,127,128,241,224,240,240,96,240,1, + 240,14,240,120,240,240,240,240,240,240,240,249,252,126,56,14, + 17,34,15,0,0,14,32,31,192,35,128,0,0,0,0,127, + 128,241,224,240,240,96,240,1,240,14,240,120,240,240,240,240, + 240,240,240,249,252,126,56,14,17,34,15,0,0,56,224,56, + 224,56,224,0,0,0,0,127,128,241,224,240,240,96,240,1, + 240,14,240,120,240,240,240,240,240,240,240,249,252,126,56,14, + 18,36,15,0,0,7,0,13,128,8,128,13,128,7,0,0, + 0,127,128,241,224,240,240,96,240,1,240,14,240,120,240,240, + 240,240,240,240,240,249,252,126,56,22,12,36,23,0,0,31, + 207,192,121,248,112,112,248,120,112,240,56,1,240,60,14,255, + 252,120,240,0,240,240,0,240,248,8,240,248,8,249,188,48, + 126,15,224,13,17,34,14,0,251,15,240,56,120,120,120,112, + 48,240,0,240,0,240,0,240,0,120,8,120,8,60,48,31, + 224,2,0,7,0,3,128,1,128,15,0,14,18,36,15,0, + 0,12,0,14,0,7,0,3,0,1,128,0,0,15,192,56, + 112,120,120,112,56,240,60,255,252,240,0,240,0,120,8,120, + 8,60,48,15,224,14,18,36,15,0,0,0,96,0,224,1, + 192,3,128,6,0,0,0,15,192,56,112,120,120,112,56,240, + 60,255,252,240,0,240,0,120,8,120,8,60,48,15,224,14, + 18,36,15,0,0,2,0,7,0,15,128,24,192,48,96,0, + 0,15,192,56,112,120,120,112,56,240,60,255,252,240,0,240, + 0,120,8,120,8,60,48,15,224,14,17,34,15,0,0,28, + 112,28,112,28,112,0,0,0,0,15,192,56,112,120,120,112, + 56,240,60,255,252,240,0,240,0,120,8,120,8,60,48,15, + 224,8,18,18,9,0,0,96,112,56,24,12,0,252,60,60, + 60,60,60,60,60,60,60,60,255,8,18,18,9,0,0,12, + 28,56,48,96,0,252,60,60,60,60,60,60,60,60,60,60, + 255,9,18,36,9,0,0,8,0,28,0,62,0,99,0,193, + 128,0,0,252,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,255,0,8,17,17,9,0, + 0,231,231,231,0,0,252,60,60,60,60,60,60,60,60,60, + 60,255,14,18,36,15,0,0,192,0,57,192,15,0,15,0, + 49,192,0,224,15,240,56,112,120,120,112,56,240,60,240,60, + 240,60,240,60,112,56,120,120,56,112,15,192,17,17,51,18, + 0,0,3,136,0,7,240,0,8,224,0,0,0,0,0,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,18,36,15,0,0,12,0,14,0,7, + 0,3,0,1,128,0,0,15,192,56,112,120,120,112,56,240, + 60,240,60,240,60,240,60,112,56,120,120,56,112,15,192,14, + 18,36,15,0,0,0,96,0,224,1,192,3,0,6,0,0, + 0,15,192,56,112,120,120,112,56,240,60,240,60,240,60,240, + 60,112,56,120,120,56,112,15,192,14,18,36,15,0,0,2, + 0,7,0,15,128,24,192,48,96,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,14,17,34,15,0,0,7,16,15,224,17,192,0, + 0,0,0,15,192,56,112,120,120,112,56,240,60,240,60,240, + 60,240,60,112,56,120,120,56,112,15,192,14,17,34,15,0, + 0,56,224,56,224,56,224,0,0,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,12,12,24,14,1,1,6,0,6,0,6,0,0, + 0,0,0,255,240,255,240,0,0,0,0,6,0,6,0,6, + 0,14,18,36,15,0,253,0,16,0,16,0,32,15,224,56, + 112,120,120,112,184,240,188,241,60,241,60,242,60,114,56,124, + 120,60,112,15,192,8,0,16,0,16,0,17,18,54,18,0, + 0,3,0,0,3,128,0,1,192,0,0,192,0,0,96,0, + 0,0,0,254,63,128,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,62,62, + 0,31,222,0,15,159,128,17,18,54,18,0,0,0,96,0, + 0,224,0,1,192,0,1,128,0,3,0,0,0,0,0,254, + 63,128,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,62,62,0,31,222,0, + 15,159,128,17,18,54,18,0,0,0,128,0,1,192,0,3, + 224,0,6,48,0,12,24,0,0,0,0,254,63,128,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,62,62,0,31,222,0,15,159,128,17, + 17,51,18,0,0,14,56,0,14,56,0,14,56,0,0,0, + 0,0,0,0,254,63,128,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,62, + 62,0,31,222,0,15,159,128,16,23,46,15,255,251,0,48, + 0,112,0,224,0,192,1,128,0,0,254,63,60,12,30,8, + 30,24,15,16,15,48,7,160,7,224,3,192,3,192,1,192, + 1,128,1,128,97,0,243,0,254,0,120,0,16,23,46,16, + 255,251,252,0,60,0,60,0,60,0,60,0,60,0,61,240, + 63,28,60,30,60,14,60,15,60,15,60,15,60,15,60,14, + 62,30,63,28,61,240,60,0,60,0,60,0,60,0,255,0, + 16,22,44,15,255,251,14,56,14,56,14,56,0,0,0,0, + 254,63,60,12,30,8,30,24,15,16,15,48,7,160,7,224, + 3,192,3,192,1,192,1,128,1,128,97,0,243,0,254,0, + 120,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--25-180-100-100-P-149-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=23 x= 6 y=13 dx=26 dy= 0 ascent=20 len=72 + Font Bounding box w=33 h=40 x=-4 y=-10 + Calculated Min Values x=-3 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB18r[3736] U8G_SECTION(".progmem.u8g_font_ncenB18r") = { + 0,33,40,252,246,18,4,68,10,106,32,127,251,20,251,18, + 251,0,0,0,7,0,1,5,18,18,7,1,0,112,248,248, + 248,112,112,112,112,112,112,32,32,0,0,112,248,248,112,6, + 6,6,8,1,12,204,204,204,204,204,136,12,18,36,14,1, + 0,12,192,12,192,12,192,12,192,12,192,127,240,127,240,25, + 128,25,128,25,128,25,128,255,224,255,224,51,0,51,0,51, + 0,51,0,51,0,12,23,46,14,1,253,4,0,4,0,31, + 192,116,96,100,240,228,240,228,240,244,96,252,0,255,0,127, + 192,31,224,7,240,5,240,100,240,244,112,244,112,244,96,100, + 224,63,128,4,0,4,0,4,0,19,18,54,21,1,0,30, + 14,0,123,54,0,113,204,0,241,12,0,225,24,0,226,24, + 0,226,48,0,100,48,0,56,96,0,0,99,192,0,207,96, + 0,206,32,1,158,32,1,156,32,3,28,64,3,28,64,6, + 12,128,6,7,0,20,18,54,22,1,0,1,240,0,7,56, + 0,14,24,0,14,24,0,14,24,0,15,48,0,15,224,0, + 7,192,0,15,192,0,57,227,240,113,241,192,240,241,128,240, + 121,0,240,127,0,240,62,16,120,31,16,124,63,224,31,199, + 192,2,6,6,6,2,12,192,192,192,192,192,192,6,21,21, + 8,1,253,4,12,24,48,48,96,96,224,224,224,224,224,224, + 224,96,96,48,48,24,12,4,6,21,21,8,1,253,128,192, + 96,48,48,24,24,28,28,28,28,28,28,28,24,24,48,48, + 96,192,128,9,10,20,11,1,8,28,0,28,0,201,128,235, + 128,62,0,62,0,235,128,201,128,28,0,28,0,12,12,24, + 14,1,1,6,0,6,0,6,0,6,0,6,0,255,240,255, + 240,6,0,6,0,6,0,6,0,6,0,5,8,8,7,1, + 252,112,248,248,120,48,32,64,128,6,3,3,8,1,5,252, + 252,252,5,4,4,7,1,0,112,248,248,112,7,18,18,9, + 1,0,6,6,6,12,12,12,24,24,24,48,48,48,96,96, + 96,192,192,192,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,57,192,15,0,10,18, + 36,14,2,0,30,0,254,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,63,0,255,192,11,18,36,14,1,0,31,0, + 99,192,225,224,241,224,241,224,241,224,97,224,1,192,3,192, + 3,128,7,0,14,0,24,32,48,32,112,96,255,224,255,224, + 255,224,12,18,36,14,1,0,15,128,49,224,112,224,120,240, + 120,240,120,240,48,224,1,192,15,0,1,192,0,224,96,240, + 240,240,240,240,240,240,224,224,97,224,31,128,12,18,36,14, + 1,0,0,192,1,192,3,192,7,192,7,192,15,192,27,192, + 19,192,51,192,99,192,99,192,195,192,255,240,255,240,3,192, + 3,192,3,192,15,240,12,18,36,14,1,0,127,240,127,224, + 127,192,64,0,64,0,64,0,95,0,113,192,96,224,0,240, + 0,240,0,240,96,240,240,240,240,240,240,224,97,192,63,0, + 12,18,36,14,1,0,15,128,56,192,113,224,113,224,241,224, + 240,192,240,0,247,128,249,224,240,224,240,240,240,240,240,240, + 240,240,240,240,112,224,121,224,31,128,12,18,36,14,1,0, + 255,240,255,240,255,224,192,96,128,192,129,192,3,128,3,128, + 7,0,7,0,15,0,15,0,30,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,14,1,0,15,0,57,192,112,224, + 112,224,112,224,120,224,124,192,63,128,31,128,63,192,119,224, + 225,240,224,240,224,112,224,112,224,96,112,192,31,128,12,18, + 36,14,1,0,31,128,121,224,112,224,240,240,240,240,240,240, + 240,240,240,240,112,240,121,240,30,240,0,240,48,240,120,240, + 120,224,120,224,49,192,31,0,5,12,12,7,1,0,112,248, + 248,112,0,0,0,0,112,248,248,112,5,16,16,7,1,252, + 112,248,248,112,0,0,0,0,112,248,248,120,48,32,64,128, + 12,12,24,14,1,1,0,48,0,240,3,192,15,0,60,0, + 240,0,240,0,60,0,15,0,3,192,0,240,0,48,12,6, + 12,14,1,4,255,240,255,240,0,0,0,0,255,240,255,240, + 12,12,24,14,1,1,192,0,240,0,60,0,15,0,3,192, + 0,240,0,240,3,192,15,0,60,0,240,0,192,0,11,18, + 36,13,1,0,63,0,99,192,241,224,241,224,97,224,1,224, + 1,192,3,128,7,0,12,0,24,0,24,0,0,0,0,0, + 28,0,62,0,62,0,28,0,19,18,54,20,1,0,1,252, + 0,15,6,0,12,1,128,48,0,192,48,220,192,99,188,96, + 103,28,96,199,28,96,206,28,96,206,56,96,206,56,64,206, + 56,192,206,121,128,103,191,0,96,0,0,56,1,0,28,7, + 0,7,252,0,19,18,54,19,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,1,120,0,1,120,0,3,60,0,2, + 60,0,2,60,0,6,30,0,4,30,0,7,254,0,12,15, + 0,8,15,0,8,15,0,24,7,128,56,7,128,254,31,224, + 17,18,54,19,1,0,255,248,0,60,62,0,60,31,0,60, + 31,0,60,31,0,60,31,0,60,30,0,60,60,0,63,248, + 0,60,30,0,60,15,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,31,0,255,252,0,17,18,54,19, + 1,0,3,249,128,15,15,128,60,3,128,60,1,128,120,1, + 128,120,0,128,248,0,128,248,0,0,248,0,0,248,0,0, + 248,0,0,248,0,0,120,0,128,120,0,128,60,1,0,60, + 1,0,15,6,0,3,248,0,18,18,54,20,1,0,255,240, + 0,60,60,0,60,15,0,60,15,0,60,7,128,60,7,128, + 60,7,192,60,7,192,60,7,192,60,7,192,60,7,192,60, + 7,192,60,7,128,60,7,128,60,15,0,60,15,0,60,60, + 0,255,240,0,15,18,36,18,1,0,255,254,60,30,60,6, + 60,2,60,2,60,34,60,32,60,96,63,224,60,96,60,32, + 60,32,60,2,60,2,60,2,60,6,60,30,255,254,15,18, + 36,17,1,0,255,254,60,30,60,6,60,2,60,2,60,34, + 60,32,60,96,63,224,60,96,60,32,60,32,60,0,60,0, + 60,0,60,0,60,0,255,0,18,18,54,20,1,0,3,249, + 128,15,15,128,60,3,128,60,1,128,120,1,128,120,0,128, + 248,0,128,248,0,0,248,0,0,248,0,0,248,15,192,248, + 7,128,120,7,128,120,7,128,60,7,128,60,7,128,15,13, + 128,3,248,128,19,18,54,21,1,0,255,31,224,60,7,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,63,255,128,60,7,128,60,7,128,60,7,128,60,7, + 128,60,7,128,60,7,128,60,7,128,60,7,128,255,31,224, + 8,18,18,10,1,0,255,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,14,18,36,16,0,0,3,252, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,96,240,240,240,240,240,224,240,192,224,97,224, + 63,128,20,18,54,21,1,0,255,15,192,60,3,0,60,6, + 0,60,12,0,60,24,0,60,48,0,60,96,0,60,224,0, + 61,240,0,63,248,0,62,248,0,60,124,0,60,62,0,60, + 31,0,60,31,0,60,15,128,60,7,192,255,15,240,15,18, + 36,17,1,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,2, + 60,2,60,6,60,30,255,254,22,18,54,24,1,0,252,1, + 252,60,1,240,62,3,240,62,2,240,46,2,240,47,6,240, + 39,4,240,39,132,240,39,140,240,35,136,240,35,200,240,35, + 216,240,33,208,240,33,240,240,32,224,240,32,224,240,112,96, + 240,248,67,252,20,18,54,22,1,0,252,7,240,62,1,192, + 31,0,128,31,128,128,31,192,128,23,224,128,19,240,128,17, + 240,128,16,248,128,16,124,128,16,126,128,16,63,128,16,31, + 128,16,15,128,16,7,128,16,3,128,56,1,128,254,0,128, + 19,18,54,21,1,0,3,248,0,15,30,0,60,7,128,60, + 7,128,120,3,192,120,3,192,248,3,224,248,3,224,248,3, + 224,248,3,224,248,3,224,248,3,224,120,3,192,120,3,192, + 60,7,128,60,7,128,15,30,0,3,248,0,17,18,54,18, + 1,0,255,252,0,60,31,0,60,15,0,60,15,128,60,15, + 128,60,15,128,60,15,128,60,15,0,60,31,0,63,248,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,255,128,0,19,23,69,21,1,251,3,248, + 0,15,30,0,60,7,128,60,7,128,120,3,192,120,3,192, + 248,3,224,248,3,224,248,3,224,248,3,224,248,3,224,251, + 227,224,126,115,192,124,51,192,60,51,128,60,27,128,15,30, + 0,3,254,0,0,14,0,0,15,32,0,7,192,0,7,192, + 0,3,128,19,18,54,21,1,0,255,248,0,60,62,0,60, + 31,0,60,31,0,60,31,0,60,31,0,60,30,0,60,60, + 0,63,224,0,60,120,0,60,60,0,60,60,0,60,62,0, + 60,30,0,60,31,32,60,15,32,60,15,192,255,135,128,14, + 18,36,16,1,0,15,200,56,120,96,24,224,24,224,8,240, + 8,254,0,255,192,127,240,63,248,15,252,1,252,128,60,128, + 28,192,28,192,24,240,112,159,192,16,18,36,18,1,0,255, + 255,227,199,195,195,131,193,131,193,131,193,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,15,240,19,18,54,21,1,0,255,15,224,60,3,128,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,2,0,30,2,0,31,140,0,7,248,0,19, + 18,54,19,0,0,255,15,224,60,3,128,60,3,0,30,2, + 0,30,2,0,30,6,0,15,4,0,15,4,0,15,12,0, + 7,136,0,7,136,0,7,152,0,3,208,0,3,208,0,1, + 224,0,1,224,0,0,192,0,0,192,0,26,18,72,26,0, + 0,255,127,159,192,60,30,7,0,60,30,6,0,30,15,4, + 0,30,15,4,0,30,15,12,0,15,31,136,0,15,23,136, + 0,15,23,152,0,7,179,208,0,7,163,208,0,7,163,240, + 0,3,225,224,0,3,193,224,0,3,193,224,0,1,192,192, + 0,1,128,192,0,1,128,192,0,20,18,54,20,0,0,255, + 135,224,62,1,128,31,3,0,31,134,0,15,140,0,7,216, + 0,3,240,0,3,224,0,1,240,0,0,248,0,1,248,0, + 3,124,0,6,62,0,4,31,0,12,31,0,24,15,128,48, + 7,192,252,31,240,18,18,54,18,0,0,255,15,192,60,3, + 0,30,2,0,30,6,0,15,4,0,15,12,0,7,136,0, + 7,152,0,3,208,0,3,240,0,1,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,7,248, + 0,15,18,36,17,1,0,127,254,112,62,96,124,64,120,64, + 248,0,240,1,224,3,224,3,192,7,128,15,128,15,0,30, + 0,62,2,60,2,120,6,248,14,255,254,6,21,21,8,1, + 253,252,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,252,10,18,36,12,1,0,192,0,224,0, + 224,0,112,0,112,0,56,0,56,0,28,0,28,0,14,0, + 14,0,7,0,7,0,3,128,3,128,1,192,1,192,0,192, + 6,21,21,8,1,253,252,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,252,10,10,20,15,2, + 8,12,0,12,0,30,0,30,0,51,0,51,0,97,128,97, + 128,192,192,192,192,12,2,4,12,0,252,255,240,255,240,5, + 5,5,7,1,13,224,224,112,48,24,14,12,24,15,0,0, + 127,128,241,224,240,240,96,240,1,240,14,240,120,240,240,240, + 240,240,240,240,249,252,126,56,16,18,36,16,255,0,252,0, + 60,0,60,0,60,0,60,0,60,0,61,240,63,28,62,30, + 60,14,60,15,60,15,60,15,60,15,60,14,60,30,62,28, + 39,240,13,12,24,14,0,0,15,240,56,120,120,120,112,48, + 240,0,240,0,240,0,240,0,120,8,120,8,60,48,31,224, + 16,18,36,17,0,0,0,252,0,60,0,60,0,60,0,60, + 0,60,15,188,56,252,120,124,112,60,240,60,240,60,240,60, + 240,60,112,60,120,124,56,252,15,191,14,12,24,15,0,0, + 15,192,56,112,120,120,112,56,240,60,255,252,240,0,240,0, + 120,8,120,8,60,48,15,224,12,18,36,10,0,0,7,224, + 28,240,28,240,60,96,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 255,0,13,18,36,15,1,251,0,56,31,248,121,224,240,240, + 240,240,240,240,240,240,121,224,63,128,96,0,224,0,255,192, + 127,240,127,248,96,56,192,24,224,48,127,224,17,18,54,18, + 0,0,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,248,0,61,252,0,62,62,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,254,63,128,8,18,18,9,0,0,24,60, + 60,24,0,0,252,60,60,60,60,60,60,60,60,60,60,255, + 8,23,23,7,253,251,6,15,15,6,0,0,63,15,15,15, + 15,15,15,15,15,15,15,15,15,15,206,206,120,17,18,54, + 17,0,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,254,0,60,56,0,60,48,0,60,96, + 0,60,192,0,63,192,0,63,224,0,60,240,0,60,120,0, + 60,60,0,60,30,0,255,127,128,8,18,18,9,0,0,252, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 255,24,12,36,25,0,0,252,240,240,61,249,248,62,126,124, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,254,126,127,17,12,36,18,0, + 0,252,248,0,61,252,0,62,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,254,63,128,14,12,24,15,0,0,15,192,56,112,120, + 120,112,56,240,60,240,60,240,60,240,60,112,56,120,120,56, + 112,15,192,16,17,34,16,255,251,253,240,63,28,60,30,60, + 14,60,15,60,15,60,15,60,15,60,14,62,30,63,28,61, + 240,60,0,60,0,60,0,60,0,255,0,16,17,34,16,0, + 251,15,132,60,236,120,60,112,60,240,60,240,60,240,60,240, + 60,112,60,120,124,56,252,15,188,0,60,0,60,0,60,0, + 60,0,255,12,12,24,12,0,0,252,224,61,240,62,240,60, + 96,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,10,12,24,11,0,0,62,128,99,128,193,128,224,128,252, + 0,255,128,127,192,15,192,129,192,192,192,225,128,191,0,10, + 17,34,10,0,0,4,0,12,0,12,0,28,0,60,0,255, + 128,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 64,60,64,31,128,15,0,17,12,36,18,0,0,254,126,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,62,62,0,31,222,0,15,159, + 128,16,12,24,15,255,0,255,31,60,4,30,12,30,8,15, + 24,15,16,7,176,7,160,3,224,3,192,1,192,1,128,23, + 12,36,22,255,0,255,63,62,60,30,8,60,30,8,30,63, + 24,30,47,16,30,47,16,15,103,176,15,71,160,7,195,224, + 7,131,192,3,129,192,3,1,128,17,12,36,16,255,0,255, + 31,0,62,12,0,31,24,0,15,176,0,7,224,0,3,192, + 0,1,224,0,3,240,0,6,248,0,12,124,0,24,62,0, + 124,127,128,16,17,34,15,255,251,254,63,60,12,30,8,30, + 24,15,16,15,48,7,160,7,224,3,192,3,192,1,192,1, + 128,1,128,97,0,243,0,254,0,120,0,11,12,24,12,0, + 0,255,224,225,224,195,224,135,192,143,128,15,0,30,0,62, + 32,124,32,248,96,240,224,255,224,6,21,21,8,1,253,28, + 48,112,112,112,112,112,112,112,96,192,96,112,112,112,112,112, + 112,112,48,28,3,18,18,15,6,0,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,6,21,21,8, + 1,253,224,48,56,56,56,56,56,56,56,24,12,24,56,56, + 56,56,56,56,56,48,224,12,5,10,15,1,4,56,32,126, + 112,255,240,231,224,65,192,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=32 h=33 x= 8 y=18 dx=33 dy= 0 ascent=33 len=132 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =33 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24[12964] U8G_SECTION(".progmem.u8g_font_ncenB24") = { + 0,39,53,252,243,25,6,143,16,147,32,255,249,33,249,25, + 249,0,0,0,9,1,1,6,25,25,10,2,0,120,252,252, + 252,252,252,252,120,120,120,120,48,48,48,48,48,48,0,0, + 120,252,252,252,252,120,11,11,22,11,0,14,96,192,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,96,192, + 96,192,16,25,50,19,1,255,7,28,7,28,7,28,7,28, + 14,56,14,56,14,56,127,255,127,255,127,255,14,56,12,48, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,56,224, + 56,224,56,224,56,224,56,224,56,224,17,30,90,19,1,252, + 1,128,0,1,128,0,1,128,0,7,240,0,31,252,0,57, + 158,0,113,143,0,113,159,0,241,159,0,241,142,0,253,128, + 0,255,128,0,127,240,0,127,252,0,63,254,0,15,255,0, + 1,255,128,1,191,128,113,143,128,249,135,128,249,135,128,249, + 135,0,241,143,0,121,158,0,63,252,0,7,224,0,1,128, + 0,1,128,0,1,128,0,1,128,0,26,24,96,27,0,0, + 0,0,24,0,7,192,48,0,15,96,112,0,30,57,224,0, + 60,31,96,0,60,16,192,0,120,16,128,0,120,17,128,0, + 240,49,0,0,240,35,0,0,240,98,0,0,240,198,31,0, + 123,140,61,128,63,12,120,192,0,24,240,64,0,17,240,64, + 0,49,224,64,0,33,224,192,0,99,224,192,0,195,193,128, + 0,195,193,128,1,131,195,0,1,129,230,0,3,0,252,0, + 24,25,75,28,2,0,0,124,0,1,255,0,3,199,0,7, + 135,128,7,131,128,7,131,128,7,199,128,7,199,0,7,239, + 0,7,252,0,3,248,0,7,241,255,15,249,255,61,248,124, + 120,252,56,120,254,112,248,126,96,248,63,224,252,63,192,252, + 31,193,254,15,227,255,15,243,127,255,254,63,243,254,15,128, + 252,4,11,11,8,2,14,96,240,240,240,240,240,240,96,96, + 96,96,9,27,54,13,2,253,3,128,7,0,14,0,28,0, + 28,0,56,0,56,0,120,0,120,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 56,0,56,0,28,0,28,0,14,0,7,0,3,128,9,27, + 54,13,1,253,224,0,48,0,56,0,28,0,28,0,14,0, + 14,0,15,0,7,0,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,15,0,15,0,14,0,14,0, + 28,0,28,0,56,0,112,0,192,0,12,15,30,17,2,10, + 6,0,14,0,14,0,230,112,230,112,246,240,63,192,15,0, + 127,224,246,240,230,112,230,112,7,0,7,0,6,0,16,16, + 32,20,2,1,3,192,3,192,3,192,3,192,3,192,3,192, + 255,255,255,255,255,255,255,255,3,192,3,192,3,192,3,192, + 3,192,3,192,6,11,11,9,2,251,120,248,252,252,252,124, + 28,24,48,112,224,8,4,4,11,1,6,255,255,255,255,6, + 6,6,9,1,0,120,252,252,252,252,120,10,25,50,9,255, + 0,0,192,1,192,1,192,1,128,3,128,3,128,3,0,7, + 0,7,0,6,0,14,0,14,0,12,0,28,0,28,0,24, + 0,56,0,56,0,48,0,112,0,112,0,96,0,224,0,224, + 0,192,0,16,24,48,19,1,0,3,192,15,240,30,120,60, + 60,124,62,120,30,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,120,30,120,30,124, + 62,60,60,30,120,15,240,3,192,13,24,48,19,3,0,1, + 128,7,128,255,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,255,248,255,248,17, + 24,72,19,1,0,15,240,0,63,252,0,120,126,0,240,63, + 0,248,31,0,252,31,0,252,31,0,252,31,0,124,63,0, + 56,62,0,0,124,0,0,248,0,0,240,0,1,224,0,3, + 192,0,3,129,128,7,1,128,14,1,128,28,3,128,63,255, + 128,127,255,0,127,255,0,255,255,0,255,255,0,16,24,48, + 19,1,0,15,224,63,248,120,124,248,62,252,62,252,62,252, + 62,120,62,0,124,0,112,7,224,7,192,0,248,0,126,0, + 62,0,63,120,31,252,31,252,31,252,63,248,62,120,126,63, + 248,7,224,17,24,72,19,0,0,0,4,0,0,12,0,0, + 28,0,0,60,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,124,0,6,124,0,12,124,0,28,124,0,56,124,0, + 112,124,0,224,124,0,192,124,0,255,255,128,255,255,128,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,16,24,48,19,1,0,31,255,63,254,63,254,63,252,63, + 240,48,0,48,0,48,0,48,0,55,224,63,248,56,124,48, + 62,32,62,0,31,0,31,56,31,124,31,252,31,252,62,120, + 62,112,252,63,240,15,192,17,24,72,19,1,0,3,240,0, + 15,252,0,31,30,0,62,62,0,60,62,0,124,62,0,120, + 28,0,248,0,0,248,0,0,248,0,0,249,248,0,255,254, + 0,255,127,0,252,31,0,248,31,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,0,124,31,0,62,62,0,31, + 252,0,7,240,0,16,24,48,19,2,0,255,255,255,254,255, + 254,255,252,255,252,192,24,192,24,192,56,128,112,0,112,0, + 240,0,224,1,224,1,224,3,224,3,192,7,192,7,192,15, + 192,15,192,15,192,15,192,15,192,7,128,17,24,72,19,1, + 0,7,240,0,15,252,0,60,62,0,56,31,0,120,15,0, + 120,15,0,120,15,0,124,15,0,126,30,0,127,252,0,63, + 240,0,31,252,0,15,254,0,63,255,0,120,127,0,248,31, + 128,240,15,128,240,15,128,240,15,0,240,15,0,248,30,0, + 124,60,0,63,240,0,7,192,0,17,24,72,19,1,0,3, + 192,0,31,248,0,62,124,0,124,62,0,252,31,0,248,31, + 0,248,15,128,248,15,128,248,15,128,252,31,128,252,63,128, + 127,111,128,63,207,128,31,143,128,0,15,128,0,15,128,112, + 15,0,248,31,0,252,31,0,248,30,0,248,62,0,112,252, + 0,63,240,0,15,192,0,6,16,16,9,2,0,120,252,252, + 252,252,120,0,0,0,0,120,252,252,252,252,120,6,21,21, + 9,2,251,120,252,252,252,252,120,0,0,0,0,120,248,252, + 252,252,124,28,24,48,112,224,16,18,36,20,2,0,0,3, + 0,15,0,127,1,255,7,252,31,240,127,128,254,0,248,0, + 252,0,255,128,63,224,15,248,3,254,0,127,0,31,0,7, + 0,1,16,10,20,20,2,3,255,255,255,255,255,255,255,255, + 0,0,0,0,255,255,255,255,255,255,255,255,16,18,36,20, + 2,0,192,0,240,0,254,0,255,128,63,224,15,248,1,254, + 0,127,0,31,0,63,1,255,7,252,31,240,127,192,254,0, + 248,0,224,0,128,0,14,25,50,16,1,0,15,192,63,240, + 113,248,240,248,248,252,248,252,248,252,112,252,0,248,1,248, + 1,240,3,224,3,128,7,0,7,0,6,0,6,0,0,0, + 0,0,15,0,31,128,31,128,31,128,31,128,15,0,23,25, + 75,25,0,0,0,127,0,1,255,192,7,227,240,15,0,120, + 30,0,28,28,0,12,56,60,6,48,255,230,113,227,230,113, + 227,198,99,195,198,227,131,198,231,135,134,231,135,140,231,7, + 140,231,15,28,231,15,24,227,31,112,115,247,224,48,227,204, + 56,0,28,28,0,120,15,1,240,7,255,224,1,255,0,25, + 25,100,25,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,63,0,0,0,127,0,0,0,127,128, + 0,0,127,128,0,0,255,128,0,0,207,192,0,1,207,192, + 0,1,143,192,0,1,135,224,0,3,135,224,0,3,7,240, + 0,7,3,240,0,7,255,240,0,7,255,248,0,14,1,248, + 0,12,1,252,0,28,0,252,0,28,0,254,0,62,0,254, + 0,255,131,255,128,255,131,255,128,23,25,75,25,1,0,255, + 255,128,255,255,224,31,131,240,31,129,248,31,129,248,31,128, + 252,31,128,252,31,128,252,31,128,248,31,129,248,31,129,240, + 31,135,224,31,255,0,31,255,192,31,131,240,31,128,252,31, + 128,252,31,128,254,31,128,126,31,128,254,31,128,252,31,128, + 252,31,131,248,255,255,240,255,255,192,22,25,75,24,1,0, + 0,126,24,3,255,184,7,193,248,31,128,248,31,0,120,62, + 0,56,126,0,56,126,0,24,254,0,24,252,0,8,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 254,0,12,254,0,28,126,0,24,126,0,56,63,0,48,31, + 128,112,15,193,224,7,255,192,0,255,0,24,25,75,26,1, + 0,255,255,0,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,126,31,128,126,31,128,127,31,128,63,31,128,63,31, + 128,63,31,128,63,31,128,63,31,128,63,31,128,63,31,128, + 63,31,128,127,31,128,126,31,128,126,31,128,126,31,128,252, + 31,129,248,31,131,240,255,255,224,255,255,0,21,25,75,23, + 1,0,255,255,248,255,255,248,31,129,248,31,128,248,31,128, + 120,31,128,56,31,128,56,31,134,24,31,134,24,31,142,0, + 31,142,0,31,158,0,31,254,0,31,254,0,31,158,0,31, + 142,0,31,134,24,31,134,24,31,134,24,31,128,56,31,128, + 56,31,128,120,31,129,248,255,255,248,255,255,248,21,25,75, + 23,1,0,255,255,248,255,255,248,31,193,248,31,128,248,31, + 128,120,31,128,56,31,128,24,31,131,24,31,131,24,31,135, + 8,31,135,0,31,159,0,31,255,0,31,255,0,31,143,0, + 31,135,0,31,131,0,31,131,0,31,131,0,31,128,0,31, + 128,0,31,128,0,31,128,0,255,248,0,255,248,0,25,25, + 100,26,1,0,0,126,12,0,3,255,220,0,7,193,252,0, + 15,128,124,0,31,0,60,0,63,0,28,0,126,0,28,0, + 126,0,12,0,254,0,12,0,254,0,4,0,254,0,0,0, + 252,0,0,0,252,0,0,0,252,0,0,0,252,7,255,128, + 252,7,255,128,252,0,124,0,254,0,124,0,126,0,124,0, + 126,0,124,0,63,0,252,0,31,0,252,0,15,129,220,0, + 7,255,28,0,0,252,12,0,26,25,100,28,1,0,255,243, + 255,192,255,243,255,192,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,255, + 254,0,31,255,254,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,255,243,255,192,255,243, + 255,192,12,25,50,14,1,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,20,25,75,20,0,0, + 0,255,240,0,255,240,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,24,31,128,126,31,128,126,31,128, + 254,31,128,254,31,128,254,31,128,252,31,0,96,63,0,96, + 62,0,56,254,0,63,248,0,15,224,0,25,25,100,27,1, + 0,255,243,255,128,255,243,255,128,31,128,126,0,31,128,120, + 0,31,128,240,0,31,129,224,0,31,129,192,0,31,131,128, + 0,31,135,0,0,31,143,0,0,31,159,0,0,31,191,128, + 0,31,255,192,0,31,239,192,0,31,239,224,0,31,199,224, + 0,31,135,240,0,31,131,248,0,31,129,248,0,31,129,252, + 0,31,128,252,0,31,128,254,0,31,128,255,0,255,243,255, + 128,255,243,255,128,21,25,75,23,1,0,255,240,0,255,240, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,24,31,128, + 24,31,128,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,31,25,100,32,0,0,127,224,7,254, + 127,240,15,254,15,240,15,240,15,240,15,240,13,248,27,240, + 13,248,27,240,13,248,27,240,12,252,59,240,12,252,51,240, + 12,252,51,240,12,124,115,240,12,126,99,240,12,126,99,240, + 12,62,227,240,12,63,195,240,12,63,195,240,12,31,195,240, + 12,31,131,240,12,31,131,240,12,15,131,240,12,15,3,240, + 12,15,3,240,30,15,3,240,255,198,31,254,255,198,31,254, + 27,25,100,27,0,0,255,128,127,224,255,192,127,224,63,224, + 15,0,15,224,6,0,15,240,6,0,15,248,6,0,15,252, + 6,0,13,254,6,0,12,254,6,0,12,255,6,0,12,127, + 134,0,12,63,198,0,12,31,230,0,12,15,230,0,12,15, + 246,0,12,7,254,0,12,3,254,0,12,1,254,0,12,0, + 254,0,12,0,126,0,12,0,126,0,12,0,62,0,30,0, + 30,0,255,192,14,0,255,192,6,0,24,25,75,26,1,0, + 0,126,0,3,255,192,15,193,240,31,128,248,63,0,252,62, + 0,124,126,0,126,126,0,126,252,0,63,252,0,63,252,0, + 63,252,0,63,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,126,0,126,126,0,126,62,0,124,63,0,252,31, + 128,248,15,193,240,3,255,192,0,126,0,22,25,75,24,1, + 0,255,255,128,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,240,0,255,240,0,25,31,124,26, + 1,250,0,126,0,0,3,255,192,0,15,193,240,0,31,128, + 248,0,63,0,252,0,62,0,124,0,126,0,126,0,126,0, + 126,0,252,0,63,0,252,0,63,0,252,0,63,0,252,0, + 63,0,252,0,63,0,252,0,63,0,252,0,63,0,252,60, + 63,0,252,254,63,0,127,135,126,0,127,131,254,0,63,3, + 252,0,63,3,252,0,31,131,248,0,15,195,240,0,3,255, + 224,0,0,127,224,0,0,3,225,128,0,3,225,128,0,1, + 243,128,0,1,255,0,0,0,254,0,0,0,60,0,25,25, + 100,27,1,0,255,255,128,0,255,255,240,0,31,131,248,0, + 31,129,248,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,129,248,0,31,129,240,0, + 31,135,192,0,31,255,0,0,31,255,192,0,31,135,224,0, + 31,131,224,0,31,131,240,0,31,131,240,0,31,131,240,0, + 31,131,249,128,31,129,249,128,31,129,251,0,31,129,255,0, + 255,240,254,0,255,240,124,0,19,25,75,21,1,0,3,240, + 192,31,253,192,60,31,192,120,7,192,112,3,192,240,1,192, + 240,0,192,248,0,192,255,0,192,255,240,0,127,254,0,127, + 255,0,63,255,128,15,255,192,7,255,224,64,127,224,96,7, + 224,96,3,224,112,1,224,120,1,224,120,1,192,126,3,192, + 127,7,128,103,255,0,97,252,0,21,25,75,23,1,0,255, + 255,248,255,255,248,241,248,120,225,248,56,225,248,56,193,248, + 24,193,248,24,193,248,24,129,248,8,129,248,8,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,15,255,128,15,255,128,26,25,100,28,1,0, + 255,240,255,192,255,240,255,192,31,128,30,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,28,0, + 15,192,24,0,15,224,56,0,7,248,240,0,3,255,224,0, + 0,255,192,0,25,25,100,25,0,0,255,224,255,128,255,224, + 255,128,63,128,62,0,31,128,28,0,31,128,28,0,31,192, + 24,0,15,192,56,0,15,192,48,0,7,224,112,0,7,224, + 112,0,7,240,96,0,3,240,224,0,3,240,192,0,1,248, + 192,0,1,249,192,0,1,249,128,0,0,255,128,0,0,255, + 0,0,0,255,0,0,0,127,0,0,0,126,0,0,0,62, + 0,0,0,62,0,0,0,60,0,0,0,28,0,0,32,25, + 100,32,0,0,255,223,249,255,255,223,249,255,63,7,224,124, + 63,7,224,56,31,131,224,48,31,131,240,112,31,131,240,112, + 15,193,240,96,15,195,248,96,15,195,248,224,7,195,248,192, + 7,231,248,192,7,230,252,192,7,230,253,128,3,254,125,128, + 3,252,127,128,3,252,127,128,1,252,63,0,1,248,63,0, + 1,248,63,0,0,248,62,0,0,248,30,0,0,240,30,0, + 0,112,28,0,0,112,12,0,24,25,75,24,0,0,255,227, + 255,255,227,255,63,128,252,31,192,120,31,192,112,15,224,224, + 7,224,192,7,241,192,3,255,128,3,255,0,1,255,0,0, + 254,0,0,254,0,0,127,0,0,127,128,0,255,128,1,223, + 192,3,143,224,3,143,224,7,7,240,14,3,240,30,3,248, + 63,3,252,255,239,255,255,239,255,24,25,75,24,0,0,255, + 241,255,255,241,255,63,128,124,31,192,56,31,192,112,15,224, + 112,15,224,224,7,240,192,3,241,192,3,249,128,1,251,128, + 1,255,0,0,255,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,0,126,0,0,126,0,0,126, + 0,0,126,0,3,255,192,3,255,192,19,25,75,21,1,0, + 127,255,224,127,255,224,126,15,224,120,15,224,112,31,192,112, + 31,128,96,63,128,96,127,0,64,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,240,0,7,240,0,15,224,32, + 15,224,96,31,192,96,31,128,96,63,128,224,127,0,224,127, + 1,224,254,7,224,255,255,224,255,255,224,8,29,29,13,3, + 252,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,255,255,16,25, + 50,20,2,0,240,0,248,0,120,0,124,0,60,0,62,0, + 30,0,31,0,15,0,15,128,7,128,7,192,3,192,3,224, + 1,224,1,240,0,240,0,248,0,120,0,124,0,60,0,62, + 0,30,0,30,0,15,8,29,29,13,1,252,255,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,255,255,16,14,28,20,2,11,3, + 192,7,224,7,224,15,240,15,240,15,240,30,120,30,120,60, + 60,60,60,124,62,120,30,248,31,240,15,16,3,6,16,0, + 251,255,255,255,255,255,255,7,6,6,11,2,17,96,240,248, + 124,30,6,18,16,48,20,1,0,15,240,0,63,252,0,120, + 126,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,19,25,75,21,0,0,255, + 0,0,255,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,63,0,31,255,128, + 31,207,192,31,135,192,31,3,224,31,3,224,31,3,224,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 192,31,143,128,29,255,0,24,124,0,15,16,32,17,1,0, + 3,240,15,252,62,62,124,62,124,62,248,28,248,0,248,0, + 248,0,248,0,252,2,252,6,126,6,63,28,31,248,7,224, + 20,25,75,22,1,0,0,127,128,0,127,128,0,31,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,15,207,128,31,239,128,62,63,128,124,31,128,120,31,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,31,128,124,31,128,124,127,128,63,239,240,15,143, + 240,16,16,32,18,1,0,3,224,15,248,60,60,120,30,120, + 30,248,31,248,31,255,255,255,255,248,0,248,0,252,3,124, + 6,63,14,31,252,7,240,15,25,50,13,0,0,0,240,3, + 252,7,158,15,62,15,62,31,28,31,0,31,0,31,0,255, + 240,255,240,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,255,224,255,224,20, + 25,75,20,1,249,0,1,224,0,3,240,7,255,240,31,124, + 224,62,62,0,124,31,0,124,31,0,124,31,0,124,31,0, + 124,31,0,62,62,0,31,126,0,31,248,0,124,0,0,248, + 0,0,255,252,0,255,255,0,63,255,0,31,255,128,127,255, + 128,240,7,128,240,7,128,248,15,0,127,254,0,15,240,0, + 20,25,75,22,1,0,254,0,0,254,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,62,0,62,255,128,63,255,128,63,143,192,63,7,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,255,159,240,255,159, + 240,9,25,50,12,2,0,28,0,62,0,62,0,62,0,28, + 0,0,0,0,0,0,0,0,0,254,0,254,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,255,128,12,32,64,12,253,249,0, + 224,1,240,1,240,1,240,0,224,0,0,0,0,0,0,0, + 0,7,240,7,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,113,240,249,224,249,224,251,192,127,128,30,0,20, + 25,75,22,1,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,63,224,62,63,224,62,15,0,62,14,0,62,60,0,62, + 112,0,62,248,0,63,252,0,63,254,0,63,126,0,62,63, + 0,62,31,128,62,31,192,62,15,224,255,191,240,255,191,240, + 10,25,50,12,1,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,255,192,255,192,29,16,64,31,1,0,254,126, + 31,0,254,255,63,192,63,255,255,192,63,159,231,224,63,15, + 195,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,255,191,239,248,255,191,239,248,20,16, + 48,22,1,0,254,62,0,254,255,128,63,255,128,63,143,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,255,159, + 240,255,159,240,17,16,48,19,1,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,19,23,69,21,1,249, + 254,126,0,254,255,128,63,143,192,63,7,192,63,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,63,7,192,63,7,192,63,143,128,63,255,0,62,126,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,255, + 128,0,255,128,0,20,23,69,20,1,249,7,225,128,31,249, + 128,62,31,128,124,31,128,124,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,124,31,128,124, + 31,128,62,63,128,31,239,128,7,207,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,127,240,0,127,240, + 15,16,32,16,1,0,252,124,252,254,61,254,61,190,63,62, + 62,28,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,192,255,192,14,16,32,16,1,0,15,216,60,248, + 112,56,240,24,254,8,255,192,255,240,127,248,63,248,15,252, + 192,252,192,60,224,56,248,120,255,240,207,192,12,23,46,14, + 1,0,6,0,6,0,14,0,14,0,14,0,30,0,62,0, + 255,224,255,224,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,48,62,48,62,48,62,96,63,224,31,192,15,128, + 20,16,48,22,1,0,254,31,192,254,31,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,15,192,62,15,192,63,31,192,31,255,192, + 31,247,240,7,199,240,19,16,48,19,0,0,255,143,224,255, + 143,224,63,3,192,63,3,128,31,3,0,31,135,0,15,134, + 0,15,198,0,7,204,0,7,236,0,3,248,0,3,248,0, + 1,248,0,1,240,0,0,240,0,0,224,0,27,16,64,29, + 1,0,255,191,239,224,255,191,239,224,126,31,131,192,62,15, + 131,128,63,15,131,0,31,15,195,0,31,143,198,0,15,159, + 230,0,15,155,230,0,15,251,236,0,7,241,252,0,7,241, + 248,0,3,225,248,0,3,224,240,0,1,192,240,0,1,192, + 96,0,19,16,48,19,0,0,255,223,224,255,223,224,63,7, + 0,31,142,0,31,220,0,15,248,0,7,240,0,3,240,0, + 1,248,0,3,252,0,7,254,0,14,126,0,28,63,0,60, + 63,128,255,127,224,255,127,224,19,23,69,19,0,249,255,143, + 224,255,143,224,63,3,128,63,3,128,31,3,0,31,135,0, + 15,134,0,15,198,0,7,204,0,7,236,0,3,248,0,3, + 248,0,1,248,0,1,240,0,0,240,0,0,224,0,0,96, + 0,112,192,0,248,192,0,249,128,0,255,0,0,127,0,0, + 60,0,0,14,16,32,16,1,0,127,252,127,252,112,252,97, + 248,97,248,67,240,7,224,7,224,15,192,31,128,31,12,63, + 12,126,28,124,28,255,252,255,252,8,30,30,13,3,252,3, + 14,28,60,60,60,60,60,60,60,60,60,60,56,240,248,60, + 60,60,60,60,60,60,60,60,60,60,28,14,3,4,25,25, + 20,8,0,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,8,28,28,13, + 1,253,224,120,60,60,60,60,60,60,60,60,60,60,28,15, + 31,60,60,60,60,60,60,60,60,60,60,60,120,224,16,6, + 12,20,2,6,14,4,63,142,127,255,255,254,113,252,32,112, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,9,1,1,6,25,25,10,2,249,120,252,252, + 252,252,120,0,0,48,48,48,48,48,48,120,120,120,120,124, + 252,252,252,252,252,120,15,22,44,19,1,253,0,6,0,6, + 0,12,3,252,14,124,60,62,124,62,120,126,248,126,248,220, + 248,192,249,128,253,128,255,2,255,6,126,6,63,28,31,248, + 15,224,24,0,24,0,48,0,17,24,72,19,1,0,1,248, + 0,7,252,0,15,142,0,15,15,0,31,31,0,31,31,0, + 31,31,0,31,14,0,15,0,0,15,0,0,7,128,0,127, + 248,0,127,248,0,7,128,0,7,128,0,7,128,0,3,128, + 0,3,129,128,123,3,128,255,199,0,199,255,0,199,254,0, + 253,254,0,120,124,0,16,16,32,19,1,3,99,198,247,239, + 255,254,127,252,60,62,120,30,112,14,112,14,112,14,112,14, + 120,30,60,60,127,254,255,255,247,239,99,198,19,24,72,19, + 0,0,255,31,224,255,31,224,124,7,128,62,7,0,62,7, + 0,31,6,0,31,14,0,15,140,0,15,140,0,7,216,0, + 7,216,0,3,240,0,31,254,0,31,254,0,1,224,0,1, + 224,0,31,254,0,31,254,0,1,224,0,1,224,0,1,224, + 0,1,224,0,15,252,0,15,252,0,4,25,25,20,8,0, + 240,240,240,240,240,240,240,240,240,240,0,0,0,0,0,240, + 240,240,240,240,240,240,240,240,240,12,29,58,16,2,253,31, + 0,115,128,99,192,227,192,227,192,241,128,120,0,124,0,62, + 0,30,0,63,0,111,128,199,192,227,224,225,224,240,240,120, + 112,124,112,62,96,31,192,15,128,7,192,3,224,97,224,240, + 224,240,224,240,224,121,192,63,0,11,5,10,11,0,18,96, + 192,241,224,241,224,241,224,96,192,24,25,75,25,1,0,0, + 255,0,3,255,192,7,129,224,30,0,112,24,0,24,48,0, + 12,112,127,14,96,243,134,97,193,134,227,193,135,195,128,131, + 195,128,3,195,128,3,195,128,3,195,128,3,195,128,7,193, + 192,134,225,225,134,96,255,12,112,60,28,56,0,56,28,0, + 112,15,129,192,3,255,128,0,254,0,11,15,30,12,0,10, + 63,0,227,192,241,192,227,192,15,192,113,192,225,192,227,192, + 247,224,253,224,0,0,0,0,0,0,255,224,255,224,12,11, + 22,16,2,3,4,16,12,48,24,96,56,224,113,192,243,192, + 113,192,56,224,24,96,12,48,4,16,16,10,20,20,2,3, + 255,255,255,255,255,255,255,255,0,15,0,15,0,15,0,15, + 0,15,0,15,8,4,4,11,1,6,255,255,255,255,23,25, + 75,24,0,0,0,254,0,3,255,128,7,1,224,12,0,112, + 24,0,56,48,0,24,97,254,12,96,231,12,192,227,142,192, + 227,134,192,227,134,192,231,6,192,252,6,192,238,6,192,231, + 6,192,231,6,192,227,134,96,227,140,99,241,204,48,0,24, + 24,0,24,28,0,112,7,0,224,3,255,128,0,252,0,11, + 3,6,11,0,18,255,224,255,224,255,224,9,10,20,13,2, + 13,62,0,127,0,99,0,193,128,193,128,193,128,193,128,99, + 0,127,0,62,0,16,17,34,20,2,0,3,192,3,192,3, + 192,3,192,255,255,255,255,255,255,255,255,3,192,3,192,3, + 192,3,192,0,0,255,255,255,255,255,255,255,255,10,14,28, + 11,0,9,63,0,99,128,193,192,241,192,241,192,113,192,3, + 128,7,0,14,0,24,64,48,64,127,192,255,192,255,192,11, + 14,28,11,0,9,63,0,115,192,113,192,33,192,1,192,3, + 128,31,0,3,192,1,224,113,224,241,224,225,224,99,192,63, + 0,7,6,6,11,2,17,12,30,62,124,240,192,20,23,69, + 22,1,249,254,63,192,254,63,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,15,192,62,15,192,63,31,192,63,255,192,63,247,240, + 55,199,240,48,0,0,48,0,0,120,0,0,120,0,0,120, + 0,0,120,0,0,48,0,0,21,25,75,25,1,0,15,255, + 248,63,255,248,127,227,192,127,227,192,255,227,192,255,227,192, + 255,227,192,255,227,192,127,227,192,127,227,192,63,227,192,31, + 227,192,7,227,192,1,227,192,1,227,192,1,227,192,1,227, + 192,1,227,192,1,227,192,1,227,192,1,227,192,1,227,192, + 1,227,192,15,255,248,15,255,248,6,6,6,9,1,5,120, + 252,252,252,252,120,7,7,7,11,1,249,24,48,124,14,14, + 220,120,9,14,28,11,1,9,12,0,252,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,11,15,30,12,0,10,14,0,63,128,113,192, + 241,224,224,224,224,224,224,224,241,224,113,192,63,128,14,0, + 0,0,0,0,127,224,127,224,12,11,22,16,2,3,130,0, + 195,0,97,128,113,192,56,224,60,240,56,224,113,192,97,128, + 195,0,130,0,25,23,92,28,1,0,12,0,56,0,252,0, + 48,0,28,0,112,0,28,0,224,0,28,0,192,0,28,1, + 192,0,28,1,128,0,28,3,128,0,28,7,0,0,28,7, + 2,0,28,14,6,0,28,12,14,0,28,28,30,0,255,184, + 62,0,0,56,110,0,0,112,206,0,0,97,142,0,0,227, + 14,0,0,195,255,128,1,192,14,0,3,128,14,0,3,0, + 14,0,7,0,63,128,25,23,92,28,1,0,12,0,56,0, + 252,0,112,0,28,0,112,0,28,0,224,0,28,0,192,0, + 28,1,192,0,28,1,128,0,28,3,128,0,28,7,0,0, + 28,6,126,0,28,14,199,0,28,13,135,128,28,29,227,128, + 255,185,231,128,0,56,231,128,0,112,15,0,0,96,14,0, + 0,224,28,0,1,192,48,128,1,192,96,128,3,128,255,128, + 3,1,255,128,7,1,255,128,26,23,92,28,0,0,63,0, + 28,0,115,192,56,0,113,192,56,0,33,192,112,0,1,192, + 96,0,3,128,224,0,31,0,192,0,3,193,192,0,1,227, + 128,0,113,227,129,0,241,231,3,0,225,230,7,0,99,206, + 15,0,63,28,31,0,0,28,55,0,0,56,103,0,0,48, + 199,0,0,113,135,0,0,97,255,192,0,224,7,0,1,192, + 7,0,1,192,7,0,3,128,31,192,15,25,50,16,1,249, + 3,192,7,224,7,224,7,224,7,224,3,192,0,0,0,0, + 1,128,1,128,1,128,3,128,7,0,31,0,62,0,126,0, + 124,0,252,124,252,124,252,126,252,124,124,60,126,60,63,240, + 15,192,25,31,124,25,0,0,0,48,0,0,0,120,0,0, + 0,124,0,0,0,62,0,0,0,15,0,0,0,3,0,0, + 0,0,0,0,0,28,0,0,0,30,0,0,0,62,0,0, + 0,63,0,0,0,127,0,0,0,127,128,0,0,127,128,0, + 0,255,128,0,0,207,192,0,1,207,192,0,1,143,192,0, + 1,135,224,0,3,135,224,0,3,7,240,0,7,3,240,0, + 7,255,240,0,7,255,248,0,14,1,248,0,12,1,252,0, + 28,0,252,0,28,0,254,0,62,0,254,0,255,131,255,128, + 255,131,255,128,25,32,128,25,0,0,0,1,128,0,0,3, + 192,0,0,7,192,0,0,15,128,0,0,30,0,0,0,24, + 0,0,0,0,0,0,0,28,0,0,0,28,0,0,0,30, + 0,0,0,62,0,0,0,63,0,0,0,127,0,0,0,127, + 128,0,0,127,128,0,0,255,128,0,0,207,192,0,1,207, + 192,0,1,143,192,0,1,135,224,0,3,135,224,0,3,7, + 240,0,7,3,240,0,7,255,240,0,7,255,248,0,14,1, + 248,0,12,1,252,0,28,0,252,0,28,0,254,0,62,0, + 254,0,255,131,255,128,255,131,255,128,25,31,124,25,0,0, + 0,28,0,0,0,62,0,0,0,127,0,0,0,227,128,0, + 1,128,192,0,0,0,0,0,0,28,0,0,0,28,0,0, + 0,30,0,0,0,62,0,0,0,63,0,0,0,127,0,0, + 0,127,128,0,0,127,128,0,0,255,128,0,0,207,192,0, + 1,207,192,0,1,143,192,0,1,135,224,0,3,135,224,0, + 3,7,240,0,7,3,240,0,7,255,240,0,7,255,248,0, + 14,1,248,0,12,1,252,0,28,0,252,0,28,0,254,0, + 62,0,254,0,255,131,255,128,255,131,255,128,25,31,124,25, + 0,0,0,56,96,0,0,127,224,0,0,255,192,0,0,195, + 128,0,0,0,0,0,0,0,0,0,0,28,0,0,0,28, + 0,0,0,30,0,0,0,62,0,0,0,63,0,0,0,127, + 0,0,0,127,128,0,0,127,128,0,0,255,128,0,0,207, + 192,0,1,207,192,0,1,143,192,0,1,135,224,0,3,135, + 224,0,3,7,240,0,7,3,240,0,7,255,240,0,7,255, + 248,0,14,1,248,0,12,1,252,0,28,0,252,0,28,0, + 254,0,62,0,254,0,255,131,255,128,255,131,255,128,25,31, + 124,25,0,0,0,193,128,0,1,227,192,0,1,227,192,0, + 1,227,192,0,0,193,128,0,0,0,0,0,0,28,0,0, + 0,28,0,0,0,30,0,0,0,62,0,0,0,63,0,0, + 0,127,0,0,0,127,128,0,0,127,128,0,0,255,128,0, + 0,207,192,0,1,207,192,0,1,143,192,0,1,135,224,0, + 3,135,224,0,3,7,240,0,7,3,240,0,7,255,240,0, + 7,255,248,0,14,1,248,0,12,1,252,0,28,0,252,0, + 28,0,254,0,62,0,254,0,255,131,255,128,255,131,255,128, + 25,33,132,25,0,0,0,62,0,0,0,119,0,0,0,99, + 0,0,0,99,0,0,0,119,0,0,0,62,0,0,0,0, + 0,0,0,0,0,0,0,28,0,0,0,28,0,0,0,30, + 0,0,0,62,0,0,0,63,0,0,0,127,0,0,0,127, + 128,0,0,127,128,0,0,255,128,0,0,207,192,0,1,207, + 192,0,1,143,192,0,1,135,224,0,3,135,224,0,3,7, + 240,0,7,3,240,0,7,255,240,0,7,255,248,0,14,1, + 248,0,12,1,252,0,28,0,252,0,28,0,254,0,62,0, + 254,0,255,131,255,128,255,131,255,128,31,25,100,33,255,0, + 1,255,255,254,1,255,255,254,0,123,240,126,0,59,240,62, + 0,51,240,30,0,51,240,14,0,115,240,6,0,99,240,198, + 0,227,240,198,0,195,241,194,1,195,241,192,1,131,243,192, + 3,131,255,192,3,3,255,192,7,255,243,192,7,255,241,192, + 14,3,240,198,14,3,240,198,12,3,240,198,28,3,240,14, + 24,3,240,14,56,3,240,30,124,3,240,126,255,31,255,254, + 255,31,255,254,22,32,96,24,1,249,0,126,24,3,255,184, + 7,193,248,31,128,248,31,0,120,62,0,56,126,0,56,126, + 0,24,254,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,0,254,0,0,254,0,12,254,0,28, + 126,0,24,126,0,56,63,0,48,31,128,112,15,193,224,7, + 255,192,0,255,0,0,48,0,0,96,0,0,248,0,0,28, + 0,0,28,0,1,184,0,0,240,0,21,32,96,23,1,0, + 0,192,0,1,224,0,1,240,0,0,248,0,0,60,0,0, + 12,0,0,0,0,255,255,248,255,255,248,31,129,248,31,128, + 248,31,128,120,31,128,56,31,128,56,31,134,24,31,134,24, + 31,142,0,31,142,0,31,158,0,31,254,0,31,254,0,31, + 158,0,31,142,0,31,134,24,31,134,24,31,134,24,31,128, + 56,31,128,56,31,128,120,31,129,248,255,255,248,255,255,248, + 21,32,96,23,1,0,0,3,0,0,7,128,0,15,128,0, + 31,0,0,60,0,0,48,0,0,0,0,255,255,248,255,255, + 248,31,129,248,31,128,248,31,128,120,31,128,56,31,128,56, + 31,134,24,31,134,24,31,142,0,31,142,0,31,158,0,31, + 254,0,31,254,0,31,158,0,31,142,0,31,134,24,31,134, + 24,31,134,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,21,32,96,23,1,0,0,56,0,0, + 124,0,0,254,0,1,199,0,3,1,128,0,0,0,0,0, + 0,255,255,248,255,255,248,31,129,248,31,128,248,31,128,120, + 31,128,56,31,128,56,31,134,24,31,134,24,31,142,0,31, + 142,0,31,158,0,31,254,0,31,254,0,31,158,0,31,142, + 0,31,134,24,31,134,24,31,134,24,31,128,56,31,128,56, + 31,128,120,31,129,248,255,255,248,255,255,248,21,32,96,23, + 1,0,1,131,0,3,199,128,3,199,128,3,199,128,1,131, + 0,0,0,0,0,0,0,255,255,248,255,255,248,31,129,248, + 31,128,248,31,128,120,31,128,56,31,128,56,31,134,24,31, + 134,24,31,142,0,31,142,0,31,158,0,31,254,0,31,254, + 0,31,158,0,31,142,0,31,134,24,31,134,24,31,134,24, + 31,128,56,31,128,56,31,128,120,31,129,248,255,255,248,255, + 255,248,12,33,66,14,1,0,48,0,120,0,124,0,62,0, + 15,0,3,0,0,0,0,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,12,33,66,14,1,0, + 0,192,1,224,3,224,7,192,15,0,12,0,0,0,0,0, + 255,240,255,240,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,255,240, + 255,240,12,32,64,14,1,0,7,0,15,128,31,192,56,224, + 96,48,0,0,0,0,255,240,255,240,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,240,255,240,12,32,64,14,1,0,48,96, + 120,240,120,240,120,240,48,96,0,0,0,0,255,240,255,240, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,255,240,255,240,24,25, + 75,26,1,0,255,255,0,255,255,224,31,131,240,31,129,248, + 31,128,252,31,128,124,31,128,126,31,128,126,31,128,127,31, + 128,63,31,128,63,31,128,63,255,248,63,255,248,63,31,128, + 63,31,128,63,31,128,63,31,128,127,31,128,126,31,128,126, + 31,128,252,31,128,248,31,131,240,255,255,224,255,255,0,27, + 31,124,27,0,0,0,56,96,0,0,127,224,0,0,255,192, + 0,0,195,128,0,0,0,0,0,0,0,0,0,255,128,127, + 224,255,192,127,224,63,224,15,0,15,224,6,0,15,240,6, + 0,15,248,6,0,15,252,6,0,13,254,6,0,12,254,6, + 0,12,255,6,0,12,127,134,0,12,63,198,0,12,31,230, + 0,12,15,230,0,12,15,246,0,12,7,254,0,12,3,254, + 0,12,1,254,0,12,0,254,0,12,0,126,0,12,0,126, + 0,12,0,62,0,30,0,30,0,255,192,14,0,255,192,6, + 0,24,32,96,26,1,0,1,128,0,3,192,0,3,224,0, + 1,240,0,0,120,0,0,24,0,0,0,0,0,126,0,3, + 255,192,15,193,240,31,128,248,63,0,252,62,0,124,126,0, + 126,126,0,126,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,126, + 0,126,126,0,126,62,0,124,63,0,252,31,128,248,15,193, + 240,3,255,192,0,126,0,24,32,96,26,1,0,0,0,192, + 0,1,224,0,3,224,0,7,192,0,15,0,0,12,0,0, + 0,0,0,126,0,3,255,192,15,193,240,31,128,248,63,0, + 252,62,0,124,126,0,126,126,0,126,252,0,63,252,0,63, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,126,0,126,126,0,126,62,0,124,63,0, + 252,31,128,248,15,193,240,3,255,192,0,126,0,24,32,96, + 26,1,0,0,28,0,0,62,0,0,127,0,0,227,128,1, + 128,192,0,0,0,0,0,0,0,126,0,3,255,192,15,193, + 240,31,128,248,63,0,252,62,0,124,126,0,126,126,0,126, + 252,0,63,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,126,0,126,126,0, + 126,62,0,124,63,0,252,31,128,248,15,193,240,3,255,192, + 0,126,0,24,31,93,26,1,0,0,112,192,0,255,192,1, + 255,128,1,135,0,0,0,0,0,0,0,0,126,0,3,255, + 192,15,193,240,31,128,248,63,0,252,62,0,124,126,0,126, + 126,0,126,252,0,63,252,0,63,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,252,0,63,126,0, + 126,126,0,126,62,0,124,63,0,252,31,128,248,15,193,240, + 3,255,192,0,126,0,24,32,96,26,1,0,0,193,128,1, + 227,192,1,227,192,1,227,192,0,193,128,0,0,0,0,0, + 0,0,126,0,3,255,192,15,193,240,31,128,248,63,0,252, + 62,0,124,126,0,126,126,0,126,252,0,63,252,0,63,252, + 0,63,252,0,63,252,0,63,252,0,63,252,0,63,252,0, + 63,252,0,63,126,0,126,126,0,126,62,0,124,63,0,252, + 31,128,248,15,193,240,3,255,192,0,126,0,16,17,34,20, + 2,0,32,4,112,14,248,31,252,63,126,126,63,252,31,248, + 15,240,7,224,15,240,31,248,63,252,126,126,252,63,248,31, + 112,14,32,4,24,27,81,26,1,255,0,0,12,0,126,24, + 3,255,248,7,195,240,31,128,248,31,0,248,62,0,252,126, + 1,254,126,3,126,254,7,127,252,6,63,252,12,63,252,28, + 63,252,24,63,252,48,63,252,96,63,252,224,63,254,192,127, + 127,128,126,127,128,126,63,0,124,31,0,248,31,128,248,15, + 193,224,27,255,192,48,126,0,48,0,0,26,32,128,28,1, + 0,0,48,0,0,0,120,0,0,0,124,0,0,0,62,0, + 0,0,15,0,0,0,3,0,0,0,0,0,0,255,240,255, + 192,255,240,255,192,31,128,30,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,28,0,15,192,24, + 0,15,224,56,0,7,248,240,0,3,255,224,0,0,255,192, + 0,26,32,128,28,1,0,0,0,96,0,0,0,240,0,0, + 1,240,0,0,3,224,0,0,7,128,0,0,6,0,0,0, + 0,0,0,255,240,255,192,255,240,255,192,31,128,30,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,28,0,15,192,24,0,15,224,56,0,7,248,240,0,3, + 255,224,0,0,255,192,0,26,32,128,28,1,0,0,14,0, + 0,0,31,0,0,0,63,128,0,0,113,192,0,0,192,96, + 0,0,0,0,0,0,0,0,0,255,240,255,192,255,240,255, + 192,31,128,30,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,12,0,31,128,12,0,31,128,12, + 0,31,128,12,0,31,128,28,0,15,192,24,0,15,224,56, + 0,7,248,240,0,3,255,224,0,0,255,192,0,26,32,128, + 28,1,0,0,48,96,0,0,120,240,0,0,120,240,0,0, + 120,240,0,0,48,96,0,0,0,0,0,0,0,0,0,255, + 240,255,192,255,240,255,192,31,128,30,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,12,0,31, + 128,12,0,31,128,12,0,31,128,12,0,31,128,28,0,15, + 192,24,0,15,224,56,0,7,248,240,0,3,255,224,0,0, + 255,192,0,24,33,99,24,0,0,0,0,96,0,0,240,0, + 1,240,0,3,224,0,7,128,0,6,0,0,0,0,0,0, + 0,255,241,255,255,241,255,63,128,124,31,192,56,31,192,112, + 15,224,112,15,224,224,7,240,192,3,241,192,3,249,128,1, + 251,128,1,255,0,0,255,0,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,3,255,192,3,255,192,22,25,75,24, + 1,0,255,240,0,255,240,0,31,128,0,31,128,0,31,128, + 0,31,255,128,31,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,255,240,0,18,25,75, + 20,0,0,3,252,0,7,190,0,15,15,0,15,15,0,31, + 15,128,31,15,128,31,15,128,31,15,0,31,15,0,31,14, + 0,31,28,0,31,126,0,31,15,128,31,15,128,31,7,192, + 31,7,192,31,7,192,31,7,192,31,7,192,31,7,192,31, + 7,128,31,7,128,31,79,0,255,254,0,255,120,0,18,23, + 69,20,1,0,3,0,0,7,128,0,7,192,0,3,224,0, + 0,240,0,0,48,0,0,0,0,15,240,0,63,252,0,120, + 62,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,18,23,69,20,1,0,0, + 96,0,0,240,0,1,240,0,3,224,0,7,128,0,6,0, + 0,0,0,0,15,240,0,63,252,0,120,62,0,124,62,0, + 124,62,0,56,62,0,0,62,0,3,254,0,31,190,0,126, + 62,0,124,62,0,252,62,0,252,62,0,252,127,64,127,255, + 192,63,143,128,18,22,66,20,1,0,1,192,0,3,224,0, + 7,240,0,14,56,0,24,12,0,0,0,0,15,240,0,63, + 252,0,120,62,0,124,62,0,124,62,0,56,62,0,0,62, + 0,3,254,0,31,190,0,126,62,0,124,62,0,252,62,0, + 252,62,0,252,127,64,127,255,192,63,143,128,18,22,66,20, + 1,0,7,12,0,15,252,0,31,248,0,24,112,0,0,0, + 0,0,0,0,15,240,0,63,252,0,120,62,0,124,62,0, + 124,62,0,56,62,0,0,62,0,3,254,0,31,190,0,126, + 62,0,124,62,0,252,62,0,252,62,0,252,127,64,127,255, + 192,63,143,128,18,23,69,20,1,0,12,24,0,30,60,0, + 30,60,0,30,60,0,12,24,0,0,0,0,0,0,0,15, + 240,0,63,252,0,120,62,0,124,62,0,124,62,0,56,62, + 0,0,62,0,3,254,0,31,190,0,126,62,0,124,62,0, + 252,62,0,252,62,0,252,127,64,127,255,192,63,143,128,18, + 23,69,20,1,0,3,224,0,7,112,0,6,48,0,6,48, + 0,7,112,0,3,224,0,0,0,0,15,240,0,63,252,0, + 120,62,0,124,62,0,124,62,0,56,62,0,0,62,0,3, + 254,0,31,190,0,126,62,0,124,62,0,252,62,0,252,62, + 0,252,127,64,127,255,192,63,143,128,26,16,64,28,1,0, + 7,224,248,0,30,123,222,0,56,63,15,0,124,63,15,128, + 124,62,7,128,120,62,7,192,49,254,7,192,15,255,255,192, + 63,255,255,192,126,62,0,0,252,62,0,0,248,63,0,192, + 248,127,1,128,252,239,131,128,127,199,255,0,63,1,252,0, + 15,23,46,17,1,249,3,240,14,60,62,62,124,62,124,62, + 248,28,248,0,248,0,248,0,248,0,252,2,252,6,126,6, + 63,28,31,248,7,240,1,128,3,0,7,192,0,224,0,224, + 13,192,7,128,16,23,46,18,1,0,6,0,15,0,15,128, + 7,192,1,224,0,96,0,0,3,224,14,120,60,60,124,30, + 124,30,248,31,248,31,255,255,255,255,248,0,248,0,252,3, + 124,6,63,14,31,252,7,240,16,23,46,18,1,0,0,48, + 0,120,0,248,1,240,3,192,3,0,0,0,3,224,14,120, + 60,60,124,30,124,30,248,31,248,31,255,255,255,255,248,0, + 248,0,252,3,124,6,63,14,31,252,7,240,16,22,44,18, + 1,0,1,192,3,224,7,240,14,56,24,12,0,0,3,224, + 14,120,60,60,124,30,124,30,248,31,248,31,255,255,255,255, + 248,0,248,0,252,3,124,6,63,14,31,252,7,240,16,23, + 46,18,1,0,12,24,30,60,30,60,30,60,12,24,0,0, + 0,0,3,224,14,120,60,60,124,30,124,30,248,31,248,31, + 255,255,255,255,248,0,248,0,252,3,124,6,63,14,31,252, + 7,240,9,23,46,11,1,0,96,0,240,0,248,0,124,0, + 30,0,6,0,0,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,128,255,128,9,23,46,11,1,0,6,0,15,0, + 31,0,62,0,120,0,96,0,0,0,254,0,254,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,255,128,255,128,11,22,44,11,255,0, + 14,0,31,0,63,128,113,192,192,96,0,0,63,128,63,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,63,224,63,224,11,23,46,11, + 0,0,96,192,241,224,241,224,241,224,96,192,0,0,0,0, + 127,0,127,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,127,192,127,192, + 17,26,78,20,1,0,0,4,0,14,14,0,15,156,0,3, + 248,0,1,240,0,3,248,0,7,120,0,14,60,0,4,62, + 0,0,30,0,3,255,0,15,63,0,60,31,0,124,31,128, + 120,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,124,31,0,124,31,0,62,62,0,15,248, + 0,3,224,0,20,22,66,22,1,0,3,134,0,7,254,0, + 15,252,0,12,56,0,0,0,0,0,0,0,254,62,0,254, + 255,128,63,255,128,63,143,192,63,7,192,63,7,192,62,7, + 192,62,7,192,62,7,192,62,7,192,62,7,192,62,7,192, + 62,7,192,62,7,192,255,159,240,255,159,240,17,23,69,19, + 1,0,6,0,0,15,0,0,15,128,0,7,192,0,1,224, + 0,0,96,0,0,0,0,3,224,0,15,248,0,62,62,0, + 124,31,0,124,31,0,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,124,31,0,124,31,0,62,62, + 0,15,248,0,3,224,0,17,23,69,19,1,0,0,24,0, + 0,60,0,0,124,0,0,248,0,1,224,0,1,128,0,0, + 0,0,3,224,0,15,248,0,62,62,0,124,31,0,124,31, + 0,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,0,124,31,0,62,62,0,15,248,0,3, + 224,0,17,22,66,19,1,0,1,192,0,3,224,0,7,240, + 0,14,56,0,24,12,0,0,0,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,17,22,66,19,1,0, + 3,134,0,7,254,0,15,252,0,12,56,0,0,0,0,0, + 0,0,3,224,0,15,248,0,62,62,0,124,31,0,124,31, + 0,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,124,31,0,124,31,0,62,62,0,15,248,0,3, + 224,0,17,23,69,19,1,0,12,24,0,30,60,0,30,60, + 0,30,60,0,12,24,0,0,0,0,0,0,0,3,224,0, + 15,248,0,62,62,0,124,31,0,124,31,0,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,124,31, + 0,124,31,0,62,62,0,15,248,0,3,224,0,17,17,51, + 20,2,0,1,192,0,3,224,0,3,224,0,3,224,0,1, + 192,0,0,0,0,255,255,128,255,255,128,255,255,128,255,255, + 128,0,0,0,0,0,0,1,192,0,3,224,0,3,224,0, + 3,224,0,1,192,0,17,22,66,19,1,253,0,2,0,0, + 6,0,0,12,0,3,236,0,15,248,0,62,62,0,124,63, + 0,124,111,0,248,79,128,248,207,128,248,143,128,249,143,128, + 251,15,128,250,15,128,126,31,0,124,31,0,62,62,0,31, + 248,0,27,224,0,48,0,0,48,0,0,32,0,0,20,23, + 69,22,1,0,3,0,0,7,128,0,7,192,0,3,224,0, + 0,240,0,0,48,0,0,0,0,254,31,192,254,31,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,7,192,62,15,192,62,15,192,63,31,192, + 31,255,192,31,247,240,7,199,240,20,23,69,22,1,0,0, + 24,0,0,60,0,0,124,0,0,248,0,1,224,0,1,128, + 0,0,0,0,254,31,192,254,31,192,62,7,192,62,7,192, + 62,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,15,192,62,15,192,63,31,192,31,255,192,31,247, + 240,7,199,240,20,22,66,22,1,0,0,224,0,1,240,0, + 3,248,0,7,28,0,12,6,0,0,0,0,254,31,192,254, + 31,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,7,192,62,7,192,62,15,192,62,15,192, + 63,31,192,31,255,192,31,247,240,7,199,240,20,23,69,22, + 1,0,6,12,0,15,30,0,15,30,0,15,30,0,6,12, + 0,0,0,0,0,0,0,254,31,192,254,31,192,62,7,192, + 62,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,15,192,62,15,192,63,31,192,31,255, + 192,31,247,240,7,199,240,19,30,90,19,0,249,0,12,0, + 0,30,0,0,62,0,0,124,0,0,240,0,0,192,0,0, + 0,0,255,143,224,255,143,224,63,3,128,63,3,128,31,3, + 0,31,135,0,15,134,0,15,198,0,7,204,0,7,236,0, + 3,248,0,3,248,0,1,248,0,1,240,0,0,240,0,0, + 224,0,0,96,0,112,192,0,248,192,0,249,128,0,255,0, + 0,127,0,0,60,0,0,20,29,87,22,0,249,255,0,0, + 255,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 63,0,31,127,192,31,199,224,31,131,224,31,131,240,31,3, + 240,31,3,240,31,1,240,31,1,240,31,1,240,31,3,240, + 31,131,224,31,131,224,31,199,192,31,255,128,31,63,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,127,224, + 0,127,224,0,19,30,90,19,0,249,3,6,0,7,143,0, + 7,143,0,7,143,0,3,6,0,0,0,0,0,0,0,255, + 143,224,255,143,224,63,3,128,63,3,128,31,3,0,31,135, + 0,15,134,0,15,198,0,7,204,0,7,236,0,3,248,0, + 3,248,0,1,248,0,1,240,0,0,240,0,0,224,0,0, + 96,0,112,192,0,248,192,0,249,128,0,255,0,0,127,0, + 0,60,0,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=17 h=25 x= 3 y=10 dx=20 dy= 0 ascent=25 len=72 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =25 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24n[846] U8G_SECTION(".progmem.u8g_font_ncenB24n") = { + 0,39,53,252,243,24,0,0,0,0,42,57,0,25,251,24, + 0,12,15,30,17,2,10,6,0,14,0,14,0,230,112,230, + 112,246,240,63,192,15,0,127,224,246,240,230,112,230,112,7, + 0,7,0,6,0,16,16,32,20,2,1,3,192,3,192,3, + 192,3,192,3,192,3,192,255,255,255,255,255,255,255,255,3, + 192,3,192,3,192,3,192,3,192,3,192,6,11,11,9,2, + 251,120,248,252,252,252,124,28,24,48,112,224,8,4,4,11, + 1,6,255,255,255,255,6,6,6,9,1,0,120,252,252,252, + 252,120,10,25,50,9,255,0,0,192,1,192,1,192,1,128, + 3,128,3,128,3,0,7,0,7,0,6,0,14,0,14,0, + 12,0,28,0,28,0,24,0,56,0,56,0,48,0,112,0, + 112,0,96,0,224,0,224,0,192,0,16,24,48,19,1,0, + 3,192,15,240,30,120,60,60,124,62,120,30,248,31,248,31, + 248,31,248,31,248,31,248,31,248,31,248,31,248,31,248,31, + 248,31,120,30,120,30,124,62,60,60,30,120,15,240,3,192, + 13,24,48,19,3,0,1,128,7,128,255,128,255,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,255,248,255,248,17,24,72,19,1,0,15,240,0,63, + 252,0,120,126,0,240,63,0,248,31,0,252,31,0,252,31, + 0,252,31,0,124,63,0,56,62,0,0,124,0,0,248,0, + 0,240,0,1,224,0,3,192,0,3,129,128,7,1,128,14, + 1,128,28,3,128,63,255,128,127,255,0,127,255,0,255,255, + 0,255,255,0,16,24,48,19,1,0,15,224,63,248,120,124, + 248,62,252,62,252,62,252,62,120,62,0,124,0,112,7,224, + 7,192,0,248,0,126,0,62,0,63,120,31,252,31,252,31, + 252,63,248,62,120,126,63,248,7,224,17,24,72,19,0,0, + 0,4,0,0,12,0,0,28,0,0,60,0,0,124,0,0, + 252,0,1,252,0,1,252,0,3,124,0,6,124,0,12,124, + 0,28,124,0,56,124,0,112,124,0,224,124,0,192,124,0, + 255,255,128,255,255,128,0,124,0,0,124,0,0,124,0,0, + 124,0,3,255,128,3,255,128,16,24,48,19,1,0,31,255, + 63,254,63,254,63,252,63,240,48,0,48,0,48,0,48,0, + 55,224,63,248,56,124,48,62,32,62,0,31,0,31,56,31, + 124,31,252,31,252,62,120,62,112,252,63,240,15,192,17,24, + 72,19,1,0,3,240,0,15,252,0,31,30,0,62,62,0, + 60,62,0,124,62,0,120,28,0,248,0,0,248,0,0,248, + 0,0,249,248,0,255,254,0,255,127,0,252,31,0,248,31, + 128,248,15,128,248,15,128,248,15,128,248,15,128,124,31,0, + 124,31,0,62,62,0,31,252,0,7,240,0,16,24,48,19, + 2,0,255,255,255,254,255,254,255,252,255,252,192,24,192,24, + 192,56,128,112,0,112,0,240,0,224,1,224,1,224,3,224, + 3,192,7,192,7,192,15,192,15,192,15,192,15,192,15,192, + 7,128,17,24,72,19,1,0,7,240,0,15,252,0,60,62, + 0,56,31,0,120,15,0,120,15,0,120,15,0,124,15,0, + 126,30,0,127,252,0,63,240,0,31,252,0,15,254,0,63, + 255,0,120,127,0,248,31,128,240,15,128,240,15,128,240,15, + 0,240,15,0,248,30,0,124,60,0,63,240,0,7,192,0, + 17,24,72,19,1,0,3,192,0,31,248,0,62,124,0,124, + 62,0,252,31,0,248,31,0,248,15,128,248,15,128,248,15, + 128,252,31,128,252,63,128,127,111,128,63,207,128,31,143,128, + 0,15,128,0,15,128,112,15,0,248,31,0,252,31,0,248, + 30,0,248,62,0,112,252,0,63,240,0,15,192,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Bold-R-Normal--34-240-100-100-P-193-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=32 h=32 x= 8 y=17 dx=32 dy= 0 ascent=26 len=124 + Font Bounding box w=39 h=53 x=-4 y=-13 + Calculated Min Values x=-3 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenB24r[5937] U8G_SECTION(".progmem.u8g_font_ncenB24r") = { + 0,39,53,252,243,25,6,143,16,147,32,127,249,26,249,25, + 249,0,0,0,9,1,1,6,25,25,10,2,0,120,252,252, + 252,252,252,252,120,120,120,120,48,48,48,48,48,48,0,0, + 120,252,252,252,252,120,11,11,22,11,0,14,96,192,241,224, + 241,224,241,224,241,224,241,224,241,224,96,192,96,192,96,192, + 96,192,16,25,50,19,1,255,7,28,7,28,7,28,7,28, + 14,56,14,56,14,56,127,255,127,255,127,255,14,56,12,48, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,56,224, + 56,224,56,224,56,224,56,224,56,224,17,30,90,19,1,252, + 1,128,0,1,128,0,1,128,0,7,240,0,31,252,0,57, + 158,0,113,143,0,113,159,0,241,159,0,241,142,0,253,128, + 0,255,128,0,127,240,0,127,252,0,63,254,0,15,255,0, + 1,255,128,1,191,128,113,143,128,249,135,128,249,135,128,249, + 135,0,241,143,0,121,158,0,63,252,0,7,224,0,1,128, + 0,1,128,0,1,128,0,1,128,0,26,24,96,27,0,0, + 0,0,24,0,7,192,48,0,15,96,112,0,30,57,224,0, + 60,31,96,0,60,16,192,0,120,16,128,0,120,17,128,0, + 240,49,0,0,240,35,0,0,240,98,0,0,240,198,31,0, + 123,140,61,128,63,12,120,192,0,24,240,64,0,17,240,64, + 0,49,224,64,0,33,224,192,0,99,224,192,0,195,193,128, + 0,195,193,128,1,131,195,0,1,129,230,0,3,0,252,0, + 24,25,75,28,2,0,0,124,0,1,255,0,3,199,0,7, + 135,128,7,131,128,7,131,128,7,199,128,7,199,0,7,239, + 0,7,252,0,3,248,0,7,241,255,15,249,255,61,248,124, + 120,252,56,120,254,112,248,126,96,248,63,224,252,63,192,252, + 31,193,254,15,227,255,15,243,127,255,254,63,243,254,15,128, + 252,4,11,11,8,2,14,96,240,240,240,240,240,240,96,96, + 96,96,9,27,54,13,2,253,3,128,7,0,14,0,28,0, + 28,0,56,0,56,0,120,0,120,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,240,0,112,0,120,0, + 56,0,56,0,28,0,28,0,14,0,7,0,3,128,9,27, + 54,13,1,253,224,0,48,0,56,0,28,0,28,0,14,0, + 14,0,15,0,7,0,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,15,0,15,0,14,0,14,0, + 28,0,28,0,56,0,112,0,192,0,12,15,30,17,2,10, + 6,0,14,0,14,0,230,112,230,112,246,240,63,192,15,0, + 127,224,246,240,230,112,230,112,7,0,7,0,6,0,16,16, + 32,20,2,1,3,192,3,192,3,192,3,192,3,192,3,192, + 255,255,255,255,255,255,255,255,3,192,3,192,3,192,3,192, + 3,192,3,192,6,11,11,9,2,251,120,248,252,252,252,124, + 28,24,48,112,224,8,4,4,11,1,6,255,255,255,255,6, + 6,6,9,1,0,120,252,252,252,252,120,10,25,50,9,255, + 0,0,192,1,192,1,192,1,128,3,128,3,128,3,0,7, + 0,7,0,6,0,14,0,14,0,12,0,28,0,28,0,24, + 0,56,0,56,0,48,0,112,0,112,0,96,0,224,0,224, + 0,192,0,16,24,48,19,1,0,3,192,15,240,30,120,60, + 60,124,62,120,30,248,31,248,31,248,31,248,31,248,31,248, + 31,248,31,248,31,248,31,248,31,248,31,120,30,120,30,124, + 62,60,60,30,120,15,240,3,192,13,24,48,19,3,0,1, + 128,7,128,255,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,255,248,255,248,17, + 24,72,19,1,0,15,240,0,63,252,0,120,126,0,240,63, + 0,248,31,0,252,31,0,252,31,0,252,31,0,124,63,0, + 56,62,0,0,124,0,0,248,0,0,240,0,1,224,0,3, + 192,0,3,129,128,7,1,128,14,1,128,28,3,128,63,255, + 128,127,255,0,127,255,0,255,255,0,255,255,0,16,24,48, + 19,1,0,15,224,63,248,120,124,248,62,252,62,252,62,252, + 62,120,62,0,124,0,112,7,224,7,192,0,248,0,126,0, + 62,0,63,120,31,252,31,252,31,252,63,248,62,120,126,63, + 248,7,224,17,24,72,19,0,0,0,4,0,0,12,0,0, + 28,0,0,60,0,0,124,0,0,252,0,1,252,0,1,252, + 0,3,124,0,6,124,0,12,124,0,28,124,0,56,124,0, + 112,124,0,224,124,0,192,124,0,255,255,128,255,255,128,0, + 124,0,0,124,0,0,124,0,0,124,0,3,255,128,3,255, + 128,16,24,48,19,1,0,31,255,63,254,63,254,63,252,63, + 240,48,0,48,0,48,0,48,0,55,224,63,248,56,124,48, + 62,32,62,0,31,0,31,56,31,124,31,252,31,252,62,120, + 62,112,252,63,240,15,192,17,24,72,19,1,0,3,240,0, + 15,252,0,31,30,0,62,62,0,60,62,0,124,62,0,120, + 28,0,248,0,0,248,0,0,248,0,0,249,248,0,255,254, + 0,255,127,0,252,31,0,248,31,128,248,15,128,248,15,128, + 248,15,128,248,15,128,124,31,0,124,31,0,62,62,0,31, + 252,0,7,240,0,16,24,48,19,2,0,255,255,255,254,255, + 254,255,252,255,252,192,24,192,24,192,56,128,112,0,112,0, + 240,0,224,1,224,1,224,3,224,3,192,7,192,7,192,15, + 192,15,192,15,192,15,192,15,192,7,128,17,24,72,19,1, + 0,7,240,0,15,252,0,60,62,0,56,31,0,120,15,0, + 120,15,0,120,15,0,124,15,0,126,30,0,127,252,0,63, + 240,0,31,252,0,15,254,0,63,255,0,120,127,0,248,31, + 128,240,15,128,240,15,128,240,15,0,240,15,0,248,30,0, + 124,60,0,63,240,0,7,192,0,17,24,72,19,1,0,3, + 192,0,31,248,0,62,124,0,124,62,0,252,31,0,248,31, + 0,248,15,128,248,15,128,248,15,128,252,31,128,252,63,128, + 127,111,128,63,207,128,31,143,128,0,15,128,0,15,128,112, + 15,0,248,31,0,252,31,0,248,30,0,248,62,0,112,252, + 0,63,240,0,15,192,0,6,16,16,9,2,0,120,252,252, + 252,252,120,0,0,0,0,120,252,252,252,252,120,6,21,21, + 9,2,251,120,252,252,252,252,120,0,0,0,0,120,248,252, + 252,252,124,28,24,48,112,224,16,18,36,20,2,0,0,3, + 0,15,0,127,1,255,7,252,31,240,127,128,254,0,248,0, + 252,0,255,128,63,224,15,248,3,254,0,127,0,31,0,7, + 0,1,16,10,20,20,2,3,255,255,255,255,255,255,255,255, + 0,0,0,0,255,255,255,255,255,255,255,255,16,18,36,20, + 2,0,192,0,240,0,254,0,255,128,63,224,15,248,1,254, + 0,127,0,31,0,63,1,255,7,252,31,240,127,192,254,0, + 248,0,224,0,128,0,14,25,50,16,1,0,15,192,63,240, + 113,248,240,248,248,252,248,252,248,252,112,252,0,248,1,248, + 1,240,3,224,3,128,7,0,7,0,6,0,6,0,0,0, + 0,0,15,0,31,128,31,128,31,128,31,128,15,0,23,25, + 75,25,0,0,0,127,0,1,255,192,7,227,240,15,0,120, + 30,0,28,28,0,12,56,60,6,48,255,230,113,227,230,113, + 227,198,99,195,198,227,131,198,231,135,134,231,135,140,231,7, + 140,231,15,28,231,15,24,227,31,112,115,247,224,48,227,204, + 56,0,28,28,0,120,15,1,240,7,255,224,1,255,0,25, + 25,100,25,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,63,0,0,0,127,0,0,0,127,128, + 0,0,127,128,0,0,255,128,0,0,207,192,0,1,207,192, + 0,1,143,192,0,1,135,224,0,3,135,224,0,3,7,240, + 0,7,3,240,0,7,255,240,0,7,255,248,0,14,1,248, + 0,12,1,252,0,28,0,252,0,28,0,254,0,62,0,254, + 0,255,131,255,128,255,131,255,128,23,25,75,25,1,0,255, + 255,128,255,255,224,31,131,240,31,129,248,31,129,248,31,128, + 252,31,128,252,31,128,252,31,128,248,31,129,248,31,129,240, + 31,135,224,31,255,0,31,255,192,31,131,240,31,128,252,31, + 128,252,31,128,254,31,128,126,31,128,254,31,128,252,31,128, + 252,31,131,248,255,255,240,255,255,192,22,25,75,24,1,0, + 0,126,24,3,255,184,7,193,248,31,128,248,31,0,120,62, + 0,56,126,0,56,126,0,24,254,0,24,252,0,8,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,254,0,0, + 254,0,12,254,0,28,126,0,24,126,0,56,63,0,48,31, + 128,112,15,193,224,7,255,192,0,255,0,24,25,75,26,1, + 0,255,255,0,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,126,31,128,126,31,128,127,31,128,63,31,128,63,31, + 128,63,31,128,63,31,128,63,31,128,63,31,128,63,31,128, + 63,31,128,127,31,128,126,31,128,126,31,128,126,31,128,252, + 31,129,248,31,131,240,255,255,224,255,255,0,21,25,75,23, + 1,0,255,255,248,255,255,248,31,129,248,31,128,248,31,128, + 120,31,128,56,31,128,56,31,134,24,31,134,24,31,142,0, + 31,142,0,31,158,0,31,254,0,31,254,0,31,158,0,31, + 142,0,31,134,24,31,134,24,31,134,24,31,128,56,31,128, + 56,31,128,120,31,129,248,255,255,248,255,255,248,21,25,75, + 23,1,0,255,255,248,255,255,248,31,193,248,31,128,248,31, + 128,120,31,128,56,31,128,24,31,131,24,31,131,24,31,135, + 8,31,135,0,31,159,0,31,255,0,31,255,0,31,143,0, + 31,135,0,31,131,0,31,131,0,31,131,0,31,128,0,31, + 128,0,31,128,0,31,128,0,255,248,0,255,248,0,25,25, + 100,26,1,0,0,126,12,0,3,255,220,0,7,193,252,0, + 15,128,124,0,31,0,60,0,63,0,28,0,126,0,28,0, + 126,0,12,0,254,0,12,0,254,0,4,0,254,0,0,0, + 252,0,0,0,252,0,0,0,252,0,0,0,252,7,255,128, + 252,7,255,128,252,0,124,0,254,0,124,0,126,0,124,0, + 126,0,124,0,63,0,252,0,31,0,252,0,15,129,220,0, + 7,255,28,0,0,252,12,0,26,25,100,28,1,0,255,243, + 255,192,255,243,255,192,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,255, + 254,0,31,255,254,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,31,128,126,0,31,128, + 126,0,31,128,126,0,31,128,126,0,255,243,255,192,255,243, + 255,192,12,25,50,14,1,0,255,240,255,240,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,240,255,240,20,25,75,20,0,0, + 0,255,240,0,255,240,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,24,31,128,126,31,128,126,31,128, + 254,31,128,254,31,128,254,31,128,252,31,0,96,63,0,96, + 62,0,56,254,0,63,248,0,15,224,0,25,25,100,27,1, + 0,255,243,255,128,255,243,255,128,31,128,126,0,31,128,120, + 0,31,128,240,0,31,129,224,0,31,129,192,0,31,131,128, + 0,31,135,0,0,31,143,0,0,31,159,0,0,31,191,128, + 0,31,255,192,0,31,239,192,0,31,239,224,0,31,199,224, + 0,31,135,240,0,31,131,248,0,31,129,248,0,31,129,252, + 0,31,128,252,0,31,128,254,0,31,128,255,0,255,243,255, + 128,255,243,255,128,21,25,75,23,1,0,255,240,0,255,240, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,24,31,128, + 24,31,128,24,31,128,56,31,128,56,31,128,120,31,129,248, + 255,255,248,255,255,248,31,25,100,32,0,0,127,224,7,254, + 127,240,15,254,15,240,15,240,15,240,15,240,13,248,27,240, + 13,248,27,240,13,248,27,240,12,252,59,240,12,252,51,240, + 12,252,51,240,12,124,115,240,12,126,99,240,12,126,99,240, + 12,62,227,240,12,63,195,240,12,63,195,240,12,31,195,240, + 12,31,131,240,12,31,131,240,12,15,131,240,12,15,3,240, + 12,15,3,240,30,15,3,240,255,198,31,254,255,198,31,254, + 27,25,100,27,0,0,255,128,127,224,255,192,127,224,63,224, + 15,0,15,224,6,0,15,240,6,0,15,248,6,0,15,252, + 6,0,13,254,6,0,12,254,6,0,12,255,6,0,12,127, + 134,0,12,63,198,0,12,31,230,0,12,15,230,0,12,15, + 246,0,12,7,254,0,12,3,254,0,12,1,254,0,12,0, + 254,0,12,0,126,0,12,0,126,0,12,0,62,0,30,0, + 30,0,255,192,14,0,255,192,6,0,24,25,75,26,1,0, + 0,126,0,3,255,192,15,193,240,31,128,248,63,0,252,62, + 0,124,126,0,126,126,0,126,252,0,63,252,0,63,252,0, + 63,252,0,63,252,0,63,252,0,63,252,0,63,252,0,63, + 252,0,63,126,0,126,126,0,126,62,0,124,63,0,252,31, + 128,248,15,193,240,3,255,192,0,126,0,22,25,75,24,1, + 0,255,255,128,255,255,224,31,131,240,31,129,248,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,128,252,31, + 129,248,31,131,240,31,255,224,31,255,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,240,0,255,240,0,25,31,124,26, + 1,250,0,126,0,0,3,255,192,0,15,193,240,0,31,128, + 248,0,63,0,252,0,62,0,124,0,126,0,126,0,126,0, + 126,0,252,0,63,0,252,0,63,0,252,0,63,0,252,0, + 63,0,252,0,63,0,252,0,63,0,252,0,63,0,252,60, + 63,0,252,254,63,0,127,135,126,0,127,131,254,0,63,3, + 252,0,63,3,252,0,31,131,248,0,15,195,240,0,3,255, + 224,0,0,127,224,0,0,3,225,128,0,3,225,128,0,1, + 243,128,0,1,255,0,0,0,254,0,0,0,60,0,25,25, + 100,27,1,0,255,255,128,0,255,255,240,0,31,131,248,0, + 31,129,248,0,31,128,252,0,31,128,252,0,31,128,252,0, + 31,128,252,0,31,128,252,0,31,129,248,0,31,129,240,0, + 31,135,192,0,31,255,0,0,31,255,192,0,31,135,224,0, + 31,131,224,0,31,131,240,0,31,131,240,0,31,131,240,0, + 31,131,249,128,31,129,249,128,31,129,251,0,31,129,255,0, + 255,240,254,0,255,240,124,0,19,25,75,21,1,0,3,240, + 192,31,253,192,60,31,192,120,7,192,112,3,192,240,1,192, + 240,0,192,248,0,192,255,0,192,255,240,0,127,254,0,127, + 255,0,63,255,128,15,255,192,7,255,224,64,127,224,96,7, + 224,96,3,224,112,1,224,120,1,224,120,1,192,126,3,192, + 127,7,128,103,255,0,97,252,0,21,25,75,23,1,0,255, + 255,248,255,255,248,241,248,120,225,248,56,225,248,56,193,248, + 24,193,248,24,193,248,24,129,248,8,129,248,8,1,248,0, + 1,248,0,1,248,0,1,248,0,1,248,0,1,248,0,1, + 248,0,1,248,0,1,248,0,1,248,0,1,248,0,1,248, + 0,1,248,0,15,255,128,15,255,128,26,25,100,28,1,0, + 255,240,255,192,255,240,255,192,31,128,30,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,12,0, + 31,128,12,0,31,128,12,0,31,128,12,0,31,128,28,0, + 15,192,24,0,15,224,56,0,7,248,240,0,3,255,224,0, + 0,255,192,0,25,25,100,25,0,0,255,224,255,128,255,224, + 255,128,63,128,62,0,31,128,28,0,31,128,28,0,31,192, + 24,0,15,192,56,0,15,192,48,0,7,224,112,0,7,224, + 112,0,7,240,96,0,3,240,224,0,3,240,192,0,1,248, + 192,0,1,249,192,0,1,249,128,0,0,255,128,0,0,255, + 0,0,0,255,0,0,0,127,0,0,0,126,0,0,0,62, + 0,0,0,62,0,0,0,60,0,0,0,28,0,0,32,25, + 100,32,0,0,255,223,249,255,255,223,249,255,63,7,224,124, + 63,7,224,56,31,131,224,48,31,131,240,112,31,131,240,112, + 15,193,240,96,15,195,248,96,15,195,248,224,7,195,248,192, + 7,231,248,192,7,230,252,192,7,230,253,128,3,254,125,128, + 3,252,127,128,3,252,127,128,1,252,63,0,1,248,63,0, + 1,248,63,0,0,248,62,0,0,248,30,0,0,240,30,0, + 0,112,28,0,0,112,12,0,24,25,75,24,0,0,255,227, + 255,255,227,255,63,128,252,31,192,120,31,192,112,15,224,224, + 7,224,192,7,241,192,3,255,128,3,255,0,1,255,0,0, + 254,0,0,254,0,0,127,0,0,127,128,0,255,128,1,223, + 192,3,143,224,3,143,224,7,7,240,14,3,240,30,3,248, + 63,3,252,255,239,255,255,239,255,24,25,75,24,0,0,255, + 241,255,255,241,255,63,128,124,31,192,56,31,192,112,15,224, + 112,15,224,224,7,240,192,3,241,192,3,249,128,1,251,128, + 1,255,0,0,255,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,0,126,0,0,126,0,0,126, + 0,0,126,0,3,255,192,3,255,192,19,25,75,21,1,0, + 127,255,224,127,255,224,126,15,224,120,15,224,112,31,192,112, + 31,128,96,63,128,96,127,0,64,126,0,0,254,0,1,252, + 0,1,252,0,3,248,0,3,240,0,7,240,0,15,224,32, + 15,224,96,31,192,96,31,128,96,63,128,224,127,0,224,127, + 1,224,254,7,224,255,255,224,255,255,224,8,29,29,13,3, + 252,255,255,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,255,255,16,25, + 50,20,2,0,240,0,248,0,120,0,124,0,60,0,62,0, + 30,0,31,0,15,0,15,128,7,128,7,192,3,192,3,224, + 1,224,1,240,0,240,0,248,0,120,0,124,0,60,0,62, + 0,30,0,30,0,15,8,29,29,13,1,252,255,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,255,255,16,14,28,20,2,11,3, + 192,7,224,7,224,15,240,15,240,15,240,30,120,30,120,60, + 60,60,60,124,62,120,30,248,31,240,15,16,3,6,16,0, + 251,255,255,255,255,255,255,7,6,6,11,2,17,96,240,248, + 124,30,6,18,16,48,20,1,0,15,240,0,63,252,0,120, + 126,0,124,62,0,124,62,0,56,62,0,0,62,0,3,254, + 0,31,190,0,126,62,0,124,62,0,252,62,0,252,62,0, + 252,127,64,127,255,192,63,143,128,19,25,75,21,0,0,255, + 0,0,255,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,63,0,31,255,128, + 31,207,192,31,135,192,31,3,224,31,3,224,31,3,224,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 192,31,143,128,29,255,0,24,124,0,15,16,32,17,1,0, + 3,240,15,252,62,62,124,62,124,62,248,28,248,0,248,0, + 248,0,248,0,252,2,252,6,126,6,63,28,31,248,7,224, + 20,25,75,22,1,0,0,127,128,0,127,128,0,31,128,0, + 15,128,0,15,128,0,15,128,0,15,128,0,15,128,0,15, + 128,15,207,128,31,239,128,62,63,128,124,31,128,120,31,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,31,128,124,31,128,124,127,128,63,239,240,15,143, + 240,16,16,32,18,1,0,3,224,15,248,60,60,120,30,120, + 30,248,31,248,31,255,255,255,255,248,0,248,0,252,3,124, + 6,63,14,31,252,7,240,15,25,50,13,0,0,0,240,3, + 252,7,158,15,62,15,62,31,28,31,0,31,0,31,0,255, + 240,255,240,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,255,224,255,224,20, + 25,75,20,1,249,0,1,224,0,3,240,7,255,240,31,124, + 224,62,62,0,124,31,0,124,31,0,124,31,0,124,31,0, + 124,31,0,62,62,0,31,126,0,31,248,0,124,0,0,248, + 0,0,255,252,0,255,255,0,63,255,0,31,255,128,127,255, + 128,240,7,128,240,7,128,248,15,0,127,254,0,15,240,0, + 20,25,75,22,1,0,254,0,0,254,0,0,62,0,0,62, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,62,0,62,255,128,63,255,128,63,143,192,63,7,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,255,159,240,255,159, + 240,9,25,50,12,2,0,28,0,62,0,62,0,62,0,28, + 0,0,0,0,0,0,0,0,0,254,0,254,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,255,128,12,32,64,12,253,249,0, + 224,1,240,1,240,1,240,0,224,0,0,0,0,0,0,0, + 0,7,240,7,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,113,240,249,224,249,224,251,192,127,128,30,0,20, + 25,75,22,1,0,254,0,0,254,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,63,224,62,63,224,62,15,0,62,14,0,62,60,0,62, + 112,0,62,248,0,63,252,0,63,254,0,63,126,0,62,63, + 0,62,31,128,62,31,192,62,15,224,255,191,240,255,191,240, + 10,25,50,12,1,0,254,0,254,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,255,192,255,192,29,16,64,31,1,0,254,126, + 31,0,254,255,63,192,63,255,255,192,63,159,231,224,63,15, + 195,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,62,15,131,224,62,15,131,224,62,15, + 131,224,62,15,131,224,255,191,239,248,255,191,239,248,20,16, + 48,22,1,0,254,62,0,254,255,128,63,255,128,63,143,192, + 63,7,192,62,7,192,62,7,192,62,7,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,255,159, + 240,255,159,240,17,16,48,19,1,0,3,224,0,15,248,0, + 62,62,0,124,31,0,124,31,0,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,124,31,0,124,31, + 0,62,62,0,15,248,0,3,224,0,19,23,69,21,1,249, + 254,126,0,254,255,128,63,143,192,63,7,192,63,7,224,62, + 3,224,62,3,224,62,3,224,62,3,224,62,3,224,62,3, + 224,63,7,192,63,7,192,63,143,128,63,255,0,62,126,0, + 62,0,0,62,0,0,62,0,0,62,0,0,62,0,0,255, + 128,0,255,128,0,20,23,69,20,1,249,7,225,128,31,249, + 128,62,31,128,124,31,128,124,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,124,31,128,124, + 31,128,62,63,128,31,239,128,7,207,128,0,15,128,0,15, + 128,0,15,128,0,15,128,0,15,128,0,127,240,0,127,240, + 15,16,32,16,1,0,252,124,252,254,61,254,61,190,63,62, + 62,28,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,255,192,255,192,14,16,32,16,1,0,15,216,60,248, + 112,56,240,24,254,8,255,192,255,240,127,248,63,248,15,252, + 192,252,192,60,224,56,248,120,255,240,207,192,12,23,46,14, + 1,0,6,0,6,0,14,0,14,0,14,0,30,0,62,0, + 255,224,255,224,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,48,62,48,62,48,62,96,63,224,31,192,15,128, + 20,16,48,22,1,0,254,31,192,254,31,192,62,7,192,62, + 7,192,62,7,192,62,7,192,62,7,192,62,7,192,62,7, + 192,62,7,192,62,15,192,62,15,192,63,31,192,31,255,192, + 31,247,240,7,199,240,19,16,48,19,0,0,255,143,224,255, + 143,224,63,3,192,63,3,128,31,3,0,31,135,0,15,134, + 0,15,198,0,7,204,0,7,236,0,3,248,0,3,248,0, + 1,248,0,1,240,0,0,240,0,0,224,0,27,16,64,29, + 1,0,255,191,239,224,255,191,239,224,126,31,131,192,62,15, + 131,128,63,15,131,0,31,15,195,0,31,143,198,0,15,159, + 230,0,15,155,230,0,15,251,236,0,7,241,252,0,7,241, + 248,0,3,225,248,0,3,224,240,0,1,192,240,0,1,192, + 96,0,19,16,48,19,0,0,255,223,224,255,223,224,63,7, + 0,31,142,0,31,220,0,15,248,0,7,240,0,3,240,0, + 1,248,0,3,252,0,7,254,0,14,126,0,28,63,0,60, + 63,128,255,127,224,255,127,224,19,23,69,19,0,249,255,143, + 224,255,143,224,63,3,128,63,3,128,31,3,0,31,135,0, + 15,134,0,15,198,0,7,204,0,7,236,0,3,248,0,3, + 248,0,1,248,0,1,240,0,0,240,0,0,224,0,0,96, + 0,112,192,0,248,192,0,249,128,0,255,0,0,127,0,0, + 60,0,0,14,16,32,16,1,0,127,252,127,252,112,252,97, + 248,97,248,67,240,7,224,7,224,15,192,31,128,31,12,63, + 12,126,28,124,28,255,252,255,252,8,30,30,13,3,252,3, + 14,28,60,60,60,60,60,60,60,60,60,60,56,240,248,60, + 60,60,60,60,60,60,60,60,60,60,28,14,3,4,25,25, + 20,8,0,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,8,28,28,13, + 1,253,224,120,60,60,60,60,60,60,60,60,60,60,28,15, + 31,60,60,60,60,60,60,60,60,60,60,60,120,224,16,6, + 12,20,2,6,14,4,63,142,127,255,255,254,113,252,32,112, + 255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=11 x= 2 y= 6 dx=12 dy= 0 ascent=11 len=16 + Font Bounding box w=14 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent =11 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR08[2642] U8G_SECTION(".progmem.u8g_font_ncenR08") = { + 0,14,18,254,252,8,1,180,3,120,32,255,254,11,254,8, + 254,0,0,0,3,0,1,1,8,8,4,1,0,128,128,128, + 128,128,0,128,128,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,4,10,10,5, + 0,255,32,112,160,160,96,80,80,80,224,64,8,8,8,9, + 0,0,100,148,152,104,22,25,41,38,9,8,16,10,0,0, + 48,0,72,0,80,0,38,0,84,0,136,0,140,128,115,0, + 1,3,3,4,1,5,128,128,128,3,9,9,4,0,255,32, + 64,64,128,128,128,64,64,32,3,9,9,4,0,255,128,64, + 64,32,32,32,64,64,128,5,5,5,6,0,3,32,168,112, + 168,32,5,5,5,6,0,0,32,32,248,32,32,2,3,3, + 3,0,254,64,64,128,3,1,1,4,0,2,224,1,2,2, + 4,1,0,128,128,3,9,9,4,0,255,32,32,32,64,64, + 64,128,128,128,4,8,8,5,0,0,96,144,144,144,144,144, + 144,96,3,8,8,5,1,0,64,192,64,64,64,64,64,224, + 4,8,8,5,0,0,96,144,144,16,32,64,144,240,4,8, + 8,5,0,0,96,144,16,96,16,144,144,96,5,8,8,5, + 0,0,16,48,80,80,144,248,16,56,4,8,8,5,0,0, + 240,128,128,224,16,16,144,96,4,8,8,5,0,0,112,144, + 128,224,144,144,144,96,4,8,8,5,0,0,240,144,32,32, + 32,64,64,64,4,8,8,5,0,0,96,144,144,96,144,144, + 144,96,4,8,8,5,0,0,96,144,144,144,112,16,144,224, + 1,5,5,4,1,0,128,128,0,128,128,2,6,6,4,0, + 255,64,64,0,64,64,128,6,5,5,7,0,0,12,48,192, + 48,12,5,3,3,6,0,1,248,0,248,6,5,5,7,0, + 0,192,48,12,48,192,4,8,8,5,0,0,96,144,16,32, + 64,0,64,64,8,10,10,9,0,255,60,66,129,157,165,173, + 182,128,64,60,7,8,8,8,0,0,16,16,40,40,68,124, + 68,238,6,8,8,7,0,0,248,68,68,120,68,68,68,248, + 6,8,8,7,0,0,60,68,128,128,128,128,68,56,7,8, + 8,8,0,0,248,68,66,66,66,66,68,248,6,8,8,7, + 0,0,252,68,84,112,80,68,68,252,6,8,8,7,0,0, + 252,68,84,112,80,64,64,224,7,8,8,8,0,0,60,68, + 128,128,142,132,68,56,8,8,8,9,0,0,231,66,66,126, + 66,66,66,231,3,8,8,4,0,0,224,64,64,64,64,64, + 64,224,4,8,8,5,0,0,112,32,32,32,32,160,160,192, + 7,8,8,8,0,0,230,68,72,80,112,72,68,238,6,8, + 8,7,0,0,224,64,64,64,64,68,68,252,9,8,16,10, + 0,0,193,128,99,0,99,0,85,0,85,0,85,0,73,0, + 235,128,8,8,8,9,0,0,231,98,82,82,74,74,70,230, + 7,8,8,8,0,0,56,68,130,130,130,130,68,56,6,8, + 8,7,0,0,248,68,68,68,120,64,64,224,7,9,9,8, + 0,255,56,68,130,130,130,178,76,56,6,7,8,8,8,0, + 0,248,68,68,72,120,68,68,198,5,8,8,6,0,0,120, + 136,128,224,24,8,136,240,7,8,8,8,0,0,254,146,146, + 16,16,16,16,56,7,8,8,8,0,0,238,68,68,68,68, + 68,68,56,7,8,8,8,0,0,238,68,68,68,40,40,16, + 16,11,8,16,12,0,0,238,224,68,64,68,64,42,128,42, + 128,42,128,17,0,17,0,6,8,8,7,0,0,204,72,72, + 48,48,72,72,204,7,8,8,8,0,0,198,68,40,40,16, + 16,16,56,5,8,8,6,0,0,248,136,144,32,32,72,136, + 248,2,9,9,3,0,255,192,128,128,128,128,128,128,128,192, + 4,8,8,5,0,0,128,128,64,64,32,32,16,16,2,9, + 9,3,0,255,192,64,64,64,64,64,64,64,192,5,6,6, + 6,0,2,32,32,80,80,136,136,6,1,1,6,0,254,252, + 2,2,2,3,0,6,128,64,5,5,5,6,0,0,96,144, + 112,144,248,5,8,8,5,255,0,192,64,64,112,72,72,72, + 112,4,5,5,5,0,0,112,144,128,144,96,5,8,8,6, + 0,0,48,16,16,112,144,144,144,120,4,5,5,5,0,0, + 96,144,240,128,112,4,8,8,4,0,0,48,80,64,224,64, + 64,64,224,5,7,7,6,0,254,120,144,160,64,120,136,112, + 6,8,8,6,255,0,192,64,64,112,72,72,72,236,3,7, + 7,4,0,0,64,0,192,64,64,64,224,2,9,9,4,0, + 254,64,0,192,64,64,64,64,64,128,6,8,8,7,0,0, + 192,64,64,88,80,112,72,236,3,8,8,4,0,0,192,64, + 64,64,64,64,64,224,9,5,10,10,0,0,182,0,73,0, + 73,0,73,0,237,128,6,5,5,7,0,0,176,72,72,72, + 236,4,5,5,5,0,0,96,144,144,144,96,4,7,7,5, + 0,254,96,144,144,144,224,128,192,5,7,7,6,0,254,104, + 144,144,144,112,16,56,4,5,5,5,0,0,208,96,64,64, + 224,4,5,5,5,0,0,112,128,96,16,224,3,7,7,3, + 0,0,128,128,192,128,128,128,96,5,5,5,6,0,0,144, + 144,144,144,104,6,5,5,6,0,0,220,136,80,80,32,8, + 5,5,8,0,0,147,170,170,68,68,5,5,5,6,0,0, + 216,80,32,80,216,6,7,7,6,0,254,220,136,80,80,32, + 32,192,4,5,5,5,0,0,240,32,64,128,240,3,9,9, + 4,0,255,32,64,64,64,128,64,64,64,32,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,3,9,9,4,0,255, + 128,64,64,64,32,64,64,64,128,6,2,2,7,0,2,100, + 152,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,0,0,0,3,0,1,1,8,8,4,1,254,128,128, + 0,128,128,128,128,128,5,7,7,6,0,255,16,120,168,160, + 200,112,64,6,8,8,7,0,0,56,72,64,248,32,32,68, + 248,6,6,6,7,0,1,132,120,72,72,120,132,7,8,8, + 8,0,0,198,68,40,108,16,124,16,56,1,8,8,6,2, + 0,128,128,128,0,0,128,128,128,4,10,10,5,0,254,112, + 144,128,96,144,144,96,16,144,224,3,1,1,4,0,6,160, + 9,8,16,10,0,0,62,0,65,0,156,128,164,128,160,128, + 156,128,65,0,62,0,4,6,6,5,0,2,224,32,96,176, + 0,240,5,3,3,6,0,1,72,144,72,5,3,3,6,0, + 1,248,8,8,3,1,1,4,0,2,224,9,8,16,10,0, + 0,62,0,65,0,188,128,148,128,152,128,182,128,65,0,62, + 0,4,1,1,5,0,6,240,3,4,4,4,0,4,64,160, + 160,64,5,5,5,6,0,0,32,248,32,0,248,3,4,4, + 3,0,4,96,160,64,224,3,4,4,3,0,4,224,64,32, + 192,2,2,2,3,0,6,64,128,5,7,7,6,0,254,144, + 144,144,144,232,128,128,6,10,10,7,0,254,124,168,168,168, + 104,40,40,40,40,124,1,2,2,4,1,2,128,128,2,3, + 3,3,0,254,128,64,192,3,4,4,3,0,4,64,192,64, + 224,4,6,6,5,0,2,96,144,144,96,0,240,5,3,3, + 6,0,1,144,72,144,7,8,8,7,0,0,72,200,80,240, + 36,44,94,68,6,8,8,7,0,0,72,200,80,240,44,52, + 72,92,7,8,8,7,0,0,232,72,48,208,36,44,94,68, + 4,8,8,5,0,254,32,32,0,32,64,128,144,96,7,11, + 11,8,0,0,32,16,0,16,16,40,40,68,124,68,238,7, + 11,11,8,0,0,8,16,0,16,16,40,40,68,124,68,238, + 7,11,11,8,0,0,16,40,0,16,16,40,40,68,124,68, + 238,7,11,11,8,0,0,20,40,0,16,16,40,40,68,124, + 68,238,7,10,10,8,0,0,40,0,16,16,40,40,68,124, + 68,238,7,11,11,8,0,0,16,40,16,16,16,40,40,68, + 124,68,238,10,8,16,11,0,0,31,192,12,64,21,64,23, + 0,61,0,36,64,68,64,231,192,6,10,10,7,0,254,60, + 68,128,128,128,128,68,56,16,48,6,11,11,7,0,0,32, + 16,0,252,68,84,112,80,68,68,252,6,11,11,7,0,0, + 8,16,0,252,68,84,112,80,68,68,252,6,11,11,7,0, + 0,16,40,0,252,68,84,112,80,68,68,252,6,10,10,7, + 0,0,40,0,252,68,84,112,80,68,68,252,3,11,11,4, + 0,0,128,64,0,224,64,64,64,64,64,64,224,3,11,11, + 4,0,0,32,64,0,224,64,64,64,64,64,64,224,3,11, + 11,4,0,0,64,160,0,224,64,64,64,64,64,64,224,3, + 10,10,4,0,0,160,0,224,64,64,64,64,64,64,224,7, + 8,8,8,0,0,248,68,66,226,66,66,68,248,8,11,11, + 9,0,0,20,40,0,231,98,82,82,74,74,70,230,7,11, + 11,8,0,0,32,16,0,56,68,130,130,130,130,68,56,7, + 11,11,8,0,0,8,16,0,56,68,130,130,130,130,68,56, + 7,11,11,8,0,0,16,40,0,56,68,130,130,130,130,68, + 56,7,11,11,8,0,0,20,40,0,56,68,130,130,130,130, + 68,56,7,10,10,8,0,0,40,0,56,68,130,130,130,130, + 68,56,5,5,5,6,0,0,136,80,32,80,136,8,8,8, + 8,255,0,29,34,69,73,81,97,98,156,7,11,11,8,0, + 0,32,16,0,238,68,68,68,68,68,68,56,7,11,11,8, + 0,0,8,16,0,238,68,68,68,68,68,68,56,7,11,11, + 8,0,0,16,40,0,238,68,68,68,68,68,68,56,7,10, + 10,8,0,0,40,0,238,68,68,68,68,68,68,56,7,11, + 11,8,0,0,8,16,0,198,68,40,40,16,16,16,56,6, + 8,8,7,0,0,192,120,68,68,68,120,64,224,6,8,8, + 7,0,0,48,72,72,88,68,68,84,216,5,8,8,6,0, + 0,64,32,0,96,144,112,144,248,5,8,8,6,0,0,32, + 64,0,96,144,112,144,248,5,8,8,6,0,0,32,80,0, + 96,144,112,144,248,5,8,8,6,0,0,80,160,0,96,144, + 112,144,248,5,7,7,6,0,0,80,0,96,144,112,144,248, + 5,8,8,6,0,0,32,80,32,96,144,112,144,248,7,5, + 5,8,0,0,108,146,126,144,238,4,7,7,5,0,254,112, + 144,128,144,96,32,96,4,8,8,5,0,0,64,32,0,96, + 144,240,128,112,4,8,8,5,0,0,32,64,0,96,144,240, + 128,112,4,8,8,5,0,0,32,80,0,96,144,240,128,112, + 4,7,7,5,0,0,80,0,96,144,240,128,112,3,8,8, + 4,0,0,128,64,0,192,64,64,64,224,3,8,8,4,0, + 0,32,64,0,192,64,64,64,224,3,8,8,4,0,0,64, + 160,0,192,64,64,64,224,3,7,7,4,0,0,160,0,192, + 64,64,64,224,4,8,8,5,0,0,80,96,160,96,144,144, + 144,96,6,8,8,7,0,0,40,80,0,176,72,72,72,236, + 4,8,8,5,0,0,64,32,0,96,144,144,144,96,4,8, + 8,5,0,0,32,64,0,96,144,144,144,96,4,8,8,5, + 0,0,32,80,0,96,144,144,144,96,4,8,8,5,0,0, + 80,160,0,96,144,144,144,96,4,7,7,5,0,0,80,0, + 96,144,144,144,96,5,5,5,6,0,0,32,0,248,0,32, + 5,6,6,5,0,255,104,144,176,208,96,128,5,8,8,6, + 0,0,64,32,0,144,144,144,144,104,5,8,8,6,0,0, + 32,64,0,144,144,144,144,104,5,8,8,6,0,0,32,80, + 0,144,144,144,144,104,5,7,7,6,0,0,80,0,144,144, + 144,144,104,6,10,10,6,0,254,16,32,0,220,136,80,80, + 32,32,192,5,10,10,5,255,254,192,64,64,112,72,72,72, + 112,64,224,6,9,9,6,0,254,80,0,220,136,80,80,32, + 32,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--11-80-100-100-P-60-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w=11 h=10 x= 2 y= 6 dx=12 dy= 0 ascent= 9 len=16 + Font Bounding box w=14 h=18 x=-2 y=-4 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent=-2 + X Font ascent = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR08r[1266] U8G_SECTION(".progmem.u8g_font_ncenR08r") = { + 0,14,18,254,252,8,1,180,3,120,32,127,254,9,254,8, + 254,0,0,0,3,0,1,1,8,8,4,1,0,128,128,128, + 128,128,0,128,128,3,3,3,6,1,5,160,160,160,7,8, + 8,8,0,0,20,20,126,40,40,252,80,80,4,10,10,5, + 0,255,32,112,160,160,96,80,80,80,224,64,8,8,8,9, + 0,0,100,148,152,104,22,25,41,38,9,8,16,10,0,0, + 48,0,72,0,80,0,38,0,84,0,136,0,140,128,115,0, + 1,3,3,4,1,5,128,128,128,3,9,9,4,0,255,32, + 64,64,128,128,128,64,64,32,3,9,9,4,0,255,128,64, + 64,32,32,32,64,64,128,5,5,5,6,0,3,32,168,112, + 168,32,5,5,5,6,0,0,32,32,248,32,32,2,3,3, + 3,0,254,64,64,128,3,1,1,4,0,2,224,1,2,2, + 4,1,0,128,128,3,9,9,4,0,255,32,32,32,64,64, + 64,128,128,128,4,8,8,5,0,0,96,144,144,144,144,144, + 144,96,3,8,8,5,1,0,64,192,64,64,64,64,64,224, + 4,8,8,5,0,0,96,144,144,16,32,64,144,240,4,8, + 8,5,0,0,96,144,16,96,16,144,144,96,5,8,8,5, + 0,0,16,48,80,80,144,248,16,56,4,8,8,5,0,0, + 240,128,128,224,16,16,144,96,4,8,8,5,0,0,112,144, + 128,224,144,144,144,96,4,8,8,5,0,0,240,144,32,32, + 32,64,64,64,4,8,8,5,0,0,96,144,144,96,144,144, + 144,96,4,8,8,5,0,0,96,144,144,144,112,16,144,224, + 1,5,5,4,1,0,128,128,0,128,128,2,6,6,4,0, + 255,64,64,0,64,64,128,6,5,5,7,0,0,12,48,192, + 48,12,5,3,3,6,0,1,248,0,248,6,5,5,7,0, + 0,192,48,12,48,192,4,8,8,5,0,0,96,144,16,32, + 64,0,64,64,8,10,10,9,0,255,60,66,129,157,165,173, + 182,128,64,60,7,8,8,8,0,0,16,16,40,40,68,124, + 68,238,6,8,8,7,0,0,248,68,68,120,68,68,68,248, + 6,8,8,7,0,0,60,68,128,128,128,128,68,56,7,8, + 8,8,0,0,248,68,66,66,66,66,68,248,6,8,8,7, + 0,0,252,68,84,112,80,68,68,252,6,8,8,7,0,0, + 252,68,84,112,80,64,64,224,7,8,8,8,0,0,60,68, + 128,128,142,132,68,56,8,8,8,9,0,0,231,66,66,126, + 66,66,66,231,3,8,8,4,0,0,224,64,64,64,64,64, + 64,224,4,8,8,5,0,0,112,32,32,32,32,160,160,192, + 7,8,8,8,0,0,230,68,72,80,112,72,68,238,6,8, + 8,7,0,0,224,64,64,64,64,68,68,252,9,8,16,10, + 0,0,193,128,99,0,99,0,85,0,85,0,85,0,73,0, + 235,128,8,8,8,9,0,0,231,98,82,82,74,74,70,230, + 7,8,8,8,0,0,56,68,130,130,130,130,68,56,6,8, + 8,7,0,0,248,68,68,68,120,64,64,224,7,9,9,8, + 0,255,56,68,130,130,130,178,76,56,6,7,8,8,8,0, + 0,248,68,68,72,120,68,68,198,5,8,8,6,0,0,120, + 136,128,224,24,8,136,240,7,8,8,8,0,0,254,146,146, + 16,16,16,16,56,7,8,8,8,0,0,238,68,68,68,68, + 68,68,56,7,8,8,8,0,0,238,68,68,68,40,40,16, + 16,11,8,16,12,0,0,238,224,68,64,68,64,42,128,42, + 128,42,128,17,0,17,0,6,8,8,7,0,0,204,72,72, + 48,48,72,72,204,7,8,8,8,0,0,198,68,40,40,16, + 16,16,56,5,8,8,6,0,0,248,136,144,32,32,72,136, + 248,2,9,9,3,0,255,192,128,128,128,128,128,128,128,192, + 4,8,8,5,0,0,128,128,64,64,32,32,16,16,2,9, + 9,3,0,255,192,64,64,64,64,64,64,64,192,5,6,6, + 6,0,2,32,32,80,80,136,136,6,1,1,6,0,254,252, + 2,2,2,3,0,6,128,64,5,5,5,6,0,0,96,144, + 112,144,248,5,8,8,5,255,0,192,64,64,112,72,72,72, + 112,4,5,5,5,0,0,112,144,128,144,96,5,8,8,6, + 0,0,48,16,16,112,144,144,144,120,4,5,5,5,0,0, + 96,144,240,128,112,4,8,8,4,0,0,48,80,64,224,64, + 64,64,224,5,7,7,6,0,254,120,144,160,64,120,136,112, + 6,8,8,6,255,0,192,64,64,112,72,72,72,236,3,7, + 7,4,0,0,64,0,192,64,64,64,224,2,9,9,4,0, + 254,64,0,192,64,64,64,64,64,128,6,8,8,7,0,0, + 192,64,64,88,80,112,72,236,3,8,8,4,0,0,192,64, + 64,64,64,64,64,224,9,5,10,10,0,0,182,0,73,0, + 73,0,73,0,237,128,6,5,5,7,0,0,176,72,72,72, + 236,4,5,5,5,0,0,96,144,144,144,96,4,7,7,5, + 0,254,96,144,144,144,224,128,192,5,7,7,6,0,254,104, + 144,144,144,112,16,56,4,5,5,5,0,0,208,96,64,64, + 224,4,5,5,5,0,0,112,128,96,16,224,3,7,7,3, + 0,0,128,128,192,128,128,128,96,5,5,5,6,0,0,144, + 144,144,144,104,6,5,5,6,0,0,220,136,80,80,32,8, + 5,5,8,0,0,147,170,170,68,68,5,5,5,6,0,0, + 216,80,32,80,216,6,7,7,6,0,254,220,136,80,80,32, + 32,192,4,5,5,5,0,0,240,32,64,128,240,3,9,9, + 4,0,255,32,64,64,64,128,64,64,64,32,1,8,8,6, + 2,0,128,128,128,128,128,128,128,128,3,9,9,4,0,255, + 128,64,64,64,32,64,64,64,128,6,2,2,7,0,2,100, + 152,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=14 x= 4 y= 8 dx=16 dy= 0 ascent=14 len=33 + Font Bounding box w=18 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR10[3813] U8G_SECTION(".progmem.u8g_font_ncenR10") = { + 0,18,24,254,250,11,2,24,5,38,32,255,253,14,253,11, + 253,0,0,0,4,0,1,1,11,11,3,1,0,128,128,128, + 128,128,128,128,128,0,128,128,3,4,4,5,1,7,160,160, + 160,160,8,11,11,8,0,0,18,18,18,127,36,36,36,254, + 72,72,72,6,14,14,8,1,254,32,120,164,172,160,224,120, + 28,20,212,148,120,16,16,11,11,22,12,0,0,51,0,77, + 0,138,0,138,0,148,0,100,192,9,32,10,32,18,32,18, + 64,33,128,11,11,22,13,1,0,28,0,50,0,34,0,52, + 0,24,0,57,224,76,128,135,0,131,32,197,192,120,192,1, + 4,4,3,1,7,128,128,128,128,4,13,13,5,0,254,16, + 32,64,64,128,128,128,128,128,64,64,32,16,4,13,13,6, + 1,254,128,64,32,32,16,16,16,16,16,32,32,64,128,5, + 5,5,7,1,6,32,168,112,168,32,7,7,7,9,1,0, + 16,16,16,254,16,16,16,2,4,4,4,0,254,192,64,64, + 128,4,1,1,5,0,3,240,1,2,2,4,1,0,128,128, + 4,11,11,4,0,0,16,16,16,32,32,32,64,64,64,128, + 128,6,11,11,8,1,0,120,204,132,132,132,132,132,132,132, + 204,120,5,11,11,8,1,0,32,224,32,32,32,32,32,32, + 32,32,248,6,11,11,8,1,0,120,140,196,4,4,8,16, + 32,68,132,252,6,11,11,8,1,0,120,140,196,4,8,56, + 12,4,196,140,120,7,11,11,8,0,0,12,28,20,36,68, + 68,132,254,4,4,14,6,11,11,8,1,0,252,128,128,184, + 204,132,4,4,196,140,120,6,11,11,8,1,0,56,68,140, + 128,184,204,132,132,132,204,120,6,11,11,8,1,0,252,132, + 136,8,16,16,16,32,32,32,32,6,11,11,8,1,0,120, + 204,132,196,104,120,140,132,132,204,120,6,11,11,8,1,0, + 120,204,132,132,132,204,116,4,196,136,112,1,7,7,4,1, + 0,128,128,0,0,0,128,128,2,9,9,4,0,254,64,64, + 0,0,0,192,64,64,128,8,7,7,10,1,0,3,12,48, + 192,48,12,3,7,4,4,9,1,2,254,0,0,254,8,7, + 7,10,1,0,192,48,12,3,12,48,192,5,11,11,6,0, + 0,112,152,136,8,16,32,32,32,0,32,32,12,11,22,13, + 0,0,31,224,32,16,70,144,137,144,144,144,145,16,145,16, + 147,48,141,192,64,16,63,224,11,11,22,10,255,0,4,0, + 4,0,10,0,10,0,10,0,17,0,17,0,63,128,32,128, + 32,128,251,224,9,11,22,10,0,0,254,0,35,0,33,0, + 33,0,34,0,63,0,33,128,32,128,32,128,33,128,255,0, + 9,11,22,11,1,0,30,128,97,128,64,128,192,128,128,0, + 128,0,128,0,192,128,64,128,97,0,30,0,10,11,22,11, + 0,0,255,0,32,128,32,192,32,64,32,64,32,64,32,64, + 32,64,32,192,32,128,255,0,9,11,22,10,0,0,255,128, + 32,128,32,128,36,0,36,0,60,0,36,0,36,0,32,128, + 32,128,255,128,9,11,22,10,0,0,255,128,32,128,32,128, + 36,0,36,0,60,0,36,0,36,0,32,0,32,0,248,0, + 10,11,22,11,0,0,30,128,97,128,64,128,192,128,128,0, + 128,0,135,192,192,128,64,128,97,128,30,128,11,11,22,12, + 0,0,251,224,32,128,32,128,32,128,32,128,63,128,32,128, + 32,128,32,128,32,128,251,224,5,11,11,6,0,0,248,32, + 32,32,32,32,32,32,32,32,248,7,11,11,7,0,0,62, + 8,8,8,8,8,8,200,136,136,112,11,11,22,11,0,0, + 251,192,33,0,34,0,36,0,40,0,56,0,52,0,38,0, + 35,0,33,128,251,224,9,11,22,10,0,0,248,0,32,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,128,32,128, + 255,128,15,11,22,16,0,0,240,30,48,24,40,40,40,40, + 44,72,36,72,38,136,34,136,35,136,33,8,249,62,12,11, + 22,13,0,0,225,240,48,64,56,64,40,64,44,64,38,64, + 35,64,33,64,33,192,32,192,248,64,10,11,22,11,0,0, + 30,0,97,128,64,128,192,192,128,64,128,64,128,64,192,192, + 64,128,97,128,30,0,9,11,22,10,0,0,255,0,33,128, + 32,128,32,128,33,0,62,0,32,0,32,0,32,0,32,0, + 248,0,11,13,26,11,0,254,30,0,97,128,64,128,192,192, + 128,64,128,64,128,64,220,192,98,128,99,128,31,0,1,32, + 0,192,11,11,22,11,0,0,255,0,33,128,32,128,32,128, + 33,0,62,0,35,0,33,0,33,32,33,160,248,192,7,11, + 11,8,0,0,122,198,130,130,224,56,14,130,130,198,188,9, + 11,22,10,0,0,255,128,136,128,136,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,62,0,12,11,22,13,0, + 0,249,240,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,48,128,31,0,11,11,22,10,255,0,251,224,32, + 128,48,128,17,0,17,0,25,0,10,0,10,0,10,0,4, + 0,4,0,17,11,33,16,255,0,251,239,128,32,131,0,48, + 194,0,17,194,0,17,68,0,25,100,0,11,40,0,10,40, + 0,14,56,0,6,16,0,4,16,0,12,11,22,13,0,0, + 253,240,48,64,24,128,13,0,5,0,6,0,11,0,9,0, + 17,128,32,192,251,240,11,11,22,10,255,0,251,224,96,128, + 49,0,17,0,26,0,10,0,4,0,4,0,4,0,4,0, + 31,0,8,11,11,9,0,0,255,131,134,12,8,24,48,32, + 97,193,255,3,13,13,4,0,254,224,128,128,128,128,128,128, + 128,128,128,128,128,224,6,11,11,8,1,0,128,128,64,64, + 32,32,16,16,8,8,4,3,13,13,4,0,254,224,32,32, + 32,32,32,32,32,32,32,32,32,224,5,6,6,7,1,5, + 32,32,80,80,136,136,7,1,1,7,0,254,254,3,3,3, + 5,1,8,128,64,32,7,7,7,8,0,0,56,76,4,60, + 196,140,118,7,11,11,7,255,0,192,64,64,64,92,102,66, + 66,66,102,92,6,7,7,7,0,0,120,204,128,128,128,196, + 120,7,11,11,8,0,0,12,4,4,4,116,204,132,132,132, + 204,118,6,7,7,7,0,0,120,204,132,252,128,196,120,5, + 11,11,5,0,0,56,72,64,64,240,64,64,64,64,64,224, + 7,10,10,8,0,253,118,204,132,204,120,128,124,198,130,124, + 8,11,11,9,0,0,192,64,64,64,92,102,66,66,66,66, + 231,3,10,10,4,0,0,64,64,0,192,64,64,64,64,64, + 224,3,13,13,4,255,253,32,32,0,96,32,32,32,32,32, + 32,32,160,192,8,11,11,9,0,0,192,64,64,64,94,72, + 80,120,76,70,239,3,11,11,4,0,0,192,64,64,64,64, + 64,64,64,64,64,224,13,7,14,14,0,0,220,224,103,48, + 66,16,66,16,66,16,66,16,231,56,8,7,7,9,0,0, + 220,102,66,66,66,66,231,6,7,7,7,0,0,120,204,132, + 132,132,204,120,7,10,10,8,0,253,220,102,66,66,66,102, + 92,64,64,224,7,10,10,7,0,253,116,204,132,132,132,204, + 116,4,4,14,6,7,7,7,0,0,220,100,64,64,64,64, + 224,5,7,7,6,0,0,120,136,192,112,24,136,240,5,9, + 9,5,0,0,64,64,240,64,64,64,64,72,48,8,7,7, + 9,0,0,231,66,66,66,66,102,59,7,7,7,8,0,0, + 238,68,68,40,40,16,16,11,7,14,12,0,0,238,224,68, + 64,68,64,42,128,42,128,17,0,17,0,7,7,7,8,0, + 0,206,100,56,16,56,76,230,7,10,10,8,0,253,238,68, + 68,40,40,16,16,32,160,192,6,7,7,7,0,0,252,140, + 152,48,100,196,252,3,13,13,4,0,254,32,64,64,64,64, + 64,128,64,64,64,64,64,32,1,11,11,9,4,0,128,128, + 128,128,128,128,128,128,128,128,128,3,13,13,5,1,254,128, + 64,64,64,64,64,32,64,64,64,64,64,128,7,2,2,9, + 1,3,114,140,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,4,0,1,1,11,11,4,1, + 253,128,128,0,128,128,128,128,128,128,128,128,6,11,11,8, + 1,254,4,4,120,204,144,144,160,228,120,128,128,7,11,11, + 8,0,0,60,98,70,64,32,252,16,16,96,178,206,7,7, + 7,8,0,2,186,68,130,130,130,68,186,9,11,22,8,0, + 0,227,128,65,0,34,0,34,0,20,0,20,0,62,0,8, + 0,62,0,8,0,28,0,1,11,11,9,4,0,128,128,128, + 128,0,0,128,128,128,128,128,5,13,13,7,1,254,120,136, + 128,192,112,152,136,200,112,24,8,136,240,4,2,2,6,1, + 8,144,144,12,11,22,14,1,0,15,0,48,192,79,32,89, + 32,144,16,144,16,152,144,79,32,64,32,48,192,15,0,5, + 7,7,6,0,4,96,144,112,144,248,0,248,6,5,5,7, + 0,1,36,72,144,72,36,7,4,4,9,0,1,254,2,2, + 2,4,1,1,5,0,3,240,12,11,22,14,1,0,15,0, + 48,192,94,32,73,32,137,16,142,16,139,16,89,160,64,32, + 48,192,15,0,5,1,1,5,0,8,248,4,4,4,6,1, + 7,96,144,144,96,7,7,7,9,1,0,16,16,254,16,16, + 0,254,4,6,6,5,0,5,96,144,32,64,144,240,4,6, + 6,5,0,5,96,144,32,16,144,96,3,3,3,5,1,8, + 32,64,128,8,10,10,9,0,253,231,66,66,66,66,102,123, + 64,96,64,7,13,13,9,1,254,126,212,212,212,212,116,20, + 20,20,20,20,20,62,2,2,2,4,1,3,192,192,3,4, + 4,5,0,253,64,64,32,192,3,6,6,5,1,5,64,192, + 64,64,64,224,4,7,7,5,0,4,96,144,144,144,96,0, + 240,6,5,5,7,0,1,144,72,36,72,144,10,11,22,12, + 0,0,65,0,193,0,66,0,66,0,68,0,228,128,9,128, + 18,128,20,128,39,192,32,128,10,11,22,12,0,0,65,0, + 193,0,66,0,66,0,68,0,229,128,10,64,16,128,17,0, + 34,64,35,192,10,11,22,12,0,0,97,0,145,0,34,0, + 18,0,148,0,100,128,9,128,18,128,20,128,39,192,32,128, + 5,11,11,6,0,253,32,32,0,32,32,32,64,128,136,200, + 112,11,14,28,10,255,0,8,0,4,0,0,0,4,0,4, + 0,10,0,10,0,10,0,17,0,17,0,63,128,32,128,32, + 128,251,224,11,14,28,10,255,0,2,0,4,0,0,0,4, + 0,4,0,10,0,10,0,10,0,17,0,17,0,63,128,32, + 128,32,128,251,224,11,14,28,10,255,0,4,0,10,0,17, + 0,4,0,4,0,10,0,10,0,10,0,17,0,17,0,63, + 128,32,128,32,128,251,224,11,14,28,10,255,0,12,128,19, + 0,0,0,4,0,4,0,10,0,10,0,10,0,17,0,17, + 0,63,128,32,128,32,128,251,224,11,13,26,10,255,0,17, + 0,17,0,4,0,4,0,10,0,10,0,10,0,17,0,17, + 0,63,128,32,128,32,128,251,224,11,14,28,10,255,0,12, + 0,18,0,12,0,4,0,4,0,10,0,10,0,10,0,17, + 0,17,0,63,128,32,128,32,128,251,224,14,11,22,15,0, + 0,15,252,5,4,9,4,9,32,17,32,17,224,63,32,33, + 32,65,4,65,4,227,252,9,14,28,11,1,253,30,128,97, + 128,64,128,192,128,128,0,128,0,128,0,192,128,64,128,97, + 0,30,0,8,0,4,0,24,0,9,14,28,10,0,0,16, + 0,8,0,0,0,255,128,32,128,32,128,36,0,36,0,60, + 0,36,0,36,0,32,128,32,128,255,128,9,14,28,10,0, + 0,4,0,8,0,0,0,255,128,32,128,32,128,36,0,36, + 0,60,0,36,0,36,0,32,128,32,128,255,128,9,14,28, + 10,0,0,12,0,18,0,0,0,255,128,32,128,32,128,36, + 0,36,0,60,0,36,0,36,0,32,128,32,128,255,128,9, + 14,28,10,0,0,18,0,18,0,0,0,255,128,32,128,32, + 128,36,0,36,0,60,0,36,0,36,0,32,128,32,128,255, + 128,5,14,14,6,0,0,64,32,0,248,32,32,32,32,32, + 32,32,32,32,248,5,14,14,6,0,0,16,32,0,248,32, + 32,32,32,32,32,32,32,32,248,5,14,14,6,0,0,48, + 72,0,248,32,32,32,32,32,32,32,32,32,248,5,14,14, + 6,0,0,80,80,0,248,32,32,32,32,32,32,32,32,32, + 248,10,11,22,11,0,0,255,0,32,128,32,192,32,64,32, + 64,248,64,32,64,32,64,32,192,32,128,255,0,12,14,28, + 13,0,0,12,128,19,0,0,0,225,240,48,64,48,64,40, + 64,44,64,38,64,35,64,33,64,32,192,32,64,248,64,10, + 14,28,11,0,0,8,0,4,0,0,0,30,0,97,128,64, + 128,192,192,128,64,128,64,128,64,192,192,64,128,97,128,30, + 0,10,14,28,11,0,0,2,0,4,0,0,0,30,0,97, + 128,64,128,192,192,128,64,128,64,128,64,192,192,64,128,97, + 128,30,0,10,14,28,11,0,0,12,0,18,0,0,0,30, + 0,97,128,64,128,192,192,128,64,128,64,128,64,192,192,64, + 128,97,128,30,0,10,14,28,11,0,0,25,0,38,0,0, + 0,30,0,97,128,64,128,192,192,128,64,128,64,128,64,192, + 192,64,128,97,128,30,0,10,14,28,11,0,0,18,0,18, + 0,0,0,30,0,97,128,64,128,192,192,128,64,128,64,128, + 64,192,192,64,128,97,128,30,0,7,7,7,9,1,0,130, + 68,40,16,40,68,130,11,11,22,11,255,0,15,32,48,192, + 32,192,97,96,66,32,68,32,72,32,112,96,32,64,112,192, + 143,0,12,14,28,13,0,0,8,0,4,0,0,0,249,240, + 32,64,32,64,32,64,32,64,32,64,32,64,32,64,32,64, + 48,128,31,0,12,14,28,13,0,0,1,0,2,0,0,0, + 249,240,32,64,32,64,32,64,32,64,32,64,32,64,32,64, + 32,64,48,128,31,0,12,14,28,13,0,0,6,0,9,0, + 0,0,249,240,32,64,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,48,128,31,0,12,14,28,13,0,0,9,0, + 9,0,0,0,249,240,32,64,32,64,32,64,32,64,32,64, + 32,64,32,64,32,64,48,128,31,0,11,14,28,10,255,0, + 2,0,4,0,0,0,251,224,96,128,49,0,17,0,26,0, + 10,0,4,0,4,0,4,0,4,0,31,0,9,11,22,10, + 0,0,248,0,32,0,63,0,33,128,32,128,32,128,33,0, + 62,0,32,0,32,0,248,0,7,11,11,8,0,0,56,100, + 68,76,88,68,66,66,66,86,220,7,11,11,8,0,0,32, + 16,8,0,56,76,4,60,196,140,118,7,11,11,8,0,0, + 8,16,32,0,56,76,4,60,196,140,118,7,11,11,8,0, + 0,16,40,68,0,56,76,4,60,196,140,118,7,10,10,8, + 0,0,50,76,0,56,76,4,60,196,140,118,7,10,10,8, + 0,0,72,72,0,56,76,4,60,196,140,118,7,11,11,8, + 0,0,48,72,48,0,56,76,4,60,196,140,118,11,7,14, + 12,0,0,59,192,78,96,4,32,63,224,196,0,142,32,115, + 192,6,10,10,7,0,253,120,204,128,128,128,196,120,32,16, + 96,6,11,11,7,0,0,64,32,16,0,120,204,132,252,128, + 196,120,6,11,11,7,0,0,8,16,32,0,120,204,132,252, + 128,196,120,6,11,11,7,0,0,16,40,68,0,120,204,132, + 252,128,196,120,6,10,10,7,0,0,72,72,0,120,204,132, + 252,128,196,120,3,11,11,4,0,0,128,64,32,0,192,64, + 64,64,64,64,224,3,11,11,4,0,0,32,64,128,0,192, + 64,64,64,64,64,224,5,11,11,4,255,0,32,80,136,0, + 96,32,32,32,32,32,112,4,10,10,4,255,0,144,144,0, + 96,32,32,32,32,32,112,7,11,11,7,255,0,76,48,208, + 8,60,102,66,66,66,102,60,8,10,10,9,0,0,50,76, + 0,220,102,66,66,66,66,231,6,11,11,7,0,0,64,32, + 16,0,120,204,132,132,132,204,120,6,11,11,7,0,0,16, + 32,64,0,120,204,132,132,132,204,120,6,11,11,7,0,0, + 32,80,136,0,120,204,132,132,132,204,120,6,10,10,7,0, + 0,100,152,0,120,204,132,132,132,204,120,6,10,10,7,0, + 0,72,72,0,120,204,132,132,132,204,120,7,7,7,9,1, + 0,16,16,0,254,0,16,16,6,9,9,7,0,255,8,120, + 220,148,164,164,204,120,64,8,11,11,9,0,0,32,16,8, + 0,231,66,66,66,66,102,59,8,11,11,9,0,0,2,4, + 8,0,231,66,66,66,66,102,59,8,11,11,9,0,0,8, + 20,34,0,231,66,66,66,66,102,59,8,10,10,9,0,0, + 36,36,0,231,66,66,66,66,102,59,7,14,14,8,0,253, + 4,8,16,0,238,68,68,40,40,16,16,32,160,192,7,14, + 14,8,0,253,192,64,64,64,92,102,66,66,66,102,92,64, + 64,224,7,13,13,8,0,253,72,72,0,238,68,68,40,40, + 16,16,32,160,192}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--14-100-100-100-P-82-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=14 x= 4 y= 8 dx=16 dy= 0 ascent=12 len=33 + Font Bounding box w=18 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR10r[1781] U8G_SECTION(".progmem.u8g_font_ncenR10r") = { + 0,18,24,254,250,11,2,24,5,38,32,127,253,12,253,11, + 253,0,0,0,4,0,1,1,11,11,3,1,0,128,128,128, + 128,128,128,128,128,0,128,128,3,4,4,5,1,7,160,160, + 160,160,8,11,11,8,0,0,18,18,18,127,36,36,36,254, + 72,72,72,6,14,14,8,1,254,32,120,164,172,160,224,120, + 28,20,212,148,120,16,16,11,11,22,12,0,0,51,0,77, + 0,138,0,138,0,148,0,100,192,9,32,10,32,18,32,18, + 64,33,128,11,11,22,13,1,0,28,0,50,0,34,0,52, + 0,24,0,57,224,76,128,135,0,131,32,197,192,120,192,1, + 4,4,3,1,7,128,128,128,128,4,13,13,5,0,254,16, + 32,64,64,128,128,128,128,128,64,64,32,16,4,13,13,6, + 1,254,128,64,32,32,16,16,16,16,16,32,32,64,128,5, + 5,5,7,1,6,32,168,112,168,32,7,7,7,9,1,0, + 16,16,16,254,16,16,16,2,4,4,4,0,254,192,64,64, + 128,4,1,1,5,0,3,240,1,2,2,4,1,0,128,128, + 4,11,11,4,0,0,16,16,16,32,32,32,64,64,64,128, + 128,6,11,11,8,1,0,120,204,132,132,132,132,132,132,132, + 204,120,5,11,11,8,1,0,32,224,32,32,32,32,32,32, + 32,32,248,6,11,11,8,1,0,120,140,196,4,4,8,16, + 32,68,132,252,6,11,11,8,1,0,120,140,196,4,8,56, + 12,4,196,140,120,7,11,11,8,0,0,12,28,20,36,68, + 68,132,254,4,4,14,6,11,11,8,1,0,252,128,128,184, + 204,132,4,4,196,140,120,6,11,11,8,1,0,56,68,140, + 128,184,204,132,132,132,204,120,6,11,11,8,1,0,252,132, + 136,8,16,16,16,32,32,32,32,6,11,11,8,1,0,120, + 204,132,196,104,120,140,132,132,204,120,6,11,11,8,1,0, + 120,204,132,132,132,204,116,4,196,136,112,1,7,7,4,1, + 0,128,128,0,0,0,128,128,2,9,9,4,0,254,64,64, + 0,0,0,192,64,64,128,8,7,7,10,1,0,3,12,48, + 192,48,12,3,7,4,4,9,1,2,254,0,0,254,8,7, + 7,10,1,0,192,48,12,3,12,48,192,5,11,11,6,0, + 0,112,152,136,8,16,32,32,32,0,32,32,12,11,22,13, + 0,0,31,224,32,16,70,144,137,144,144,144,145,16,145,16, + 147,48,141,192,64,16,63,224,11,11,22,10,255,0,4,0, + 4,0,10,0,10,0,10,0,17,0,17,0,63,128,32,128, + 32,128,251,224,9,11,22,10,0,0,254,0,35,0,33,0, + 33,0,34,0,63,0,33,128,32,128,32,128,33,128,255,0, + 9,11,22,11,1,0,30,128,97,128,64,128,192,128,128,0, + 128,0,128,0,192,128,64,128,97,0,30,0,10,11,22,11, + 0,0,255,0,32,128,32,192,32,64,32,64,32,64,32,64, + 32,64,32,192,32,128,255,0,9,11,22,10,0,0,255,128, + 32,128,32,128,36,0,36,0,60,0,36,0,36,0,32,128, + 32,128,255,128,9,11,22,10,0,0,255,128,32,128,32,128, + 36,0,36,0,60,0,36,0,36,0,32,0,32,0,248,0, + 10,11,22,11,0,0,30,128,97,128,64,128,192,128,128,0, + 128,0,135,192,192,128,64,128,97,128,30,128,11,11,22,12, + 0,0,251,224,32,128,32,128,32,128,32,128,63,128,32,128, + 32,128,32,128,32,128,251,224,5,11,11,6,0,0,248,32, + 32,32,32,32,32,32,32,32,248,7,11,11,7,0,0,62, + 8,8,8,8,8,8,200,136,136,112,11,11,22,11,0,0, + 251,192,33,0,34,0,36,0,40,0,56,0,52,0,38,0, + 35,0,33,128,251,224,9,11,22,10,0,0,248,0,32,0, + 32,0,32,0,32,0,32,0,32,0,32,0,32,128,32,128, + 255,128,15,11,22,16,0,0,240,30,48,24,40,40,40,40, + 44,72,36,72,38,136,34,136,35,136,33,8,249,62,12,11, + 22,13,0,0,225,240,48,64,56,64,40,64,44,64,38,64, + 35,64,33,64,33,192,32,192,248,64,10,11,22,11,0,0, + 30,0,97,128,64,128,192,192,128,64,128,64,128,64,192,192, + 64,128,97,128,30,0,9,11,22,10,0,0,255,0,33,128, + 32,128,32,128,33,0,62,0,32,0,32,0,32,0,32,0, + 248,0,11,13,26,11,0,254,30,0,97,128,64,128,192,192, + 128,64,128,64,128,64,220,192,98,128,99,128,31,0,1,32, + 0,192,11,11,22,11,0,0,255,0,33,128,32,128,32,128, + 33,0,62,0,35,0,33,0,33,32,33,160,248,192,7,11, + 11,8,0,0,122,198,130,130,224,56,14,130,130,198,188,9, + 11,22,10,0,0,255,128,136,128,136,128,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,62,0,12,11,22,13,0, + 0,249,240,32,64,32,64,32,64,32,64,32,64,32,64,32, + 64,32,64,48,128,31,0,11,11,22,10,255,0,251,224,32, + 128,48,128,17,0,17,0,25,0,10,0,10,0,10,0,4, + 0,4,0,17,11,33,16,255,0,251,239,128,32,131,0,48, + 194,0,17,194,0,17,68,0,25,100,0,11,40,0,10,40, + 0,14,56,0,6,16,0,4,16,0,12,11,22,13,0,0, + 253,240,48,64,24,128,13,0,5,0,6,0,11,0,9,0, + 17,128,32,192,251,240,11,11,22,10,255,0,251,224,96,128, + 49,0,17,0,26,0,10,0,4,0,4,0,4,0,4,0, + 31,0,8,11,11,9,0,0,255,131,134,12,8,24,48,32, + 97,193,255,3,13,13,4,0,254,224,128,128,128,128,128,128, + 128,128,128,128,128,224,6,11,11,8,1,0,128,128,64,64, + 32,32,16,16,8,8,4,3,13,13,4,0,254,224,32,32, + 32,32,32,32,32,32,32,32,32,224,5,6,6,7,1,5, + 32,32,80,80,136,136,7,1,1,7,0,254,254,3,3,3, + 5,1,8,128,64,32,7,7,7,8,0,0,56,76,4,60, + 196,140,118,7,11,11,7,255,0,192,64,64,64,92,102,66, + 66,66,102,92,6,7,7,7,0,0,120,204,128,128,128,196, + 120,7,11,11,8,0,0,12,4,4,4,116,204,132,132,132, + 204,118,6,7,7,7,0,0,120,204,132,252,128,196,120,5, + 11,11,5,0,0,56,72,64,64,240,64,64,64,64,64,224, + 7,10,10,8,0,253,118,204,132,204,120,128,124,198,130,124, + 8,11,11,9,0,0,192,64,64,64,92,102,66,66,66,66, + 231,3,10,10,4,0,0,64,64,0,192,64,64,64,64,64, + 224,3,13,13,4,255,253,32,32,0,96,32,32,32,32,32, + 32,32,160,192,8,11,11,9,0,0,192,64,64,64,94,72, + 80,120,76,70,239,3,11,11,4,0,0,192,64,64,64,64, + 64,64,64,64,64,224,13,7,14,14,0,0,220,224,103,48, + 66,16,66,16,66,16,66,16,231,56,8,7,7,9,0,0, + 220,102,66,66,66,66,231,6,7,7,7,0,0,120,204,132, + 132,132,204,120,7,10,10,8,0,253,220,102,66,66,66,102, + 92,64,64,224,7,10,10,7,0,253,116,204,132,132,132,204, + 116,4,4,14,6,7,7,7,0,0,220,100,64,64,64,64, + 224,5,7,7,6,0,0,120,136,192,112,24,136,240,5,9, + 9,5,0,0,64,64,240,64,64,64,64,72,48,8,7,7, + 9,0,0,231,66,66,66,66,102,59,7,7,7,8,0,0, + 238,68,68,40,40,16,16,11,7,14,12,0,0,238,224,68, + 64,68,64,42,128,42,128,17,0,17,0,7,7,7,8,0, + 0,206,100,56,16,56,76,230,7,10,10,8,0,253,238,68, + 68,40,40,16,16,32,160,192,6,7,7,7,0,0,252,140, + 152,48,100,196,252,3,13,13,4,0,254,32,64,64,64,64, + 64,128,64,64,64,64,64,32,1,11,11,9,4,0,128,128, + 128,128,128,128,128,128,128,128,128,3,13,13,5,1,254,128, + 64,64,64,64,64,32,64,64,64,64,64,128,7,2,2,9, + 1,3,114,140,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--17-120-100-100-P-91-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y= 9 dx=17 dy= 0 ascent=16 len=32 + Font Bounding box w=21 h=26 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =16 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR12[4247] U8G_SECTION(".progmem.u8g_font_ncenR12") = { + 0,21,26,253,250,12,2,59,5,140,32,255,253,16,253,12, + 253,0,0,0,4,1,1,2,12,12,5,1,0,192,192,192, + 192,192,128,128,128,128,0,192,192,4,4,4,6,1,8,144, + 144,144,144,8,12,12,9,0,0,18,18,18,18,127,36,36, + 254,72,72,72,72,7,15,15,9,1,254,16,16,60,82,150, + 150,240,124,30,210,210,148,120,16,16,12,12,24,14,1,0, + 56,128,103,128,69,0,197,0,138,0,138,224,117,144,5,16, + 11,16,10,32,18,32,17,192,12,12,24,13,0,0,30,0, + 51,0,49,0,51,0,26,0,28,240,44,96,102,64,198,128, + 195,144,231,144,124,224,1,4,4,3,1,8,128,128,128,128, + 4,14,14,6,1,254,16,32,64,64,128,128,128,128,128,128, + 64,64,32,16,4,14,14,6,0,254,128,64,32,32,16,16, + 16,16,16,16,32,32,64,128,7,7,7,8,0,5,16,84, + 214,56,214,84,16,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,2,5,5,4,1,253,192,192,64,64,128,4, + 1,1,5,0,3,240,2,2,2,4,1,0,192,192,5,12, + 12,5,0,0,8,8,16,16,16,32,32,64,64,64,128,128, + 8,12,12,9,0,0,60,102,66,195,195,195,195,195,195,66, + 102,60,6,12,12,9,1,0,16,240,48,48,48,48,48,48, + 48,48,48,252,7,12,12,9,1,0,56,68,134,198,198,12, + 8,16,34,66,254,254,7,12,12,9,1,0,120,140,198,198, + 12,56,12,6,198,198,140,120,8,12,12,9,0,0,4,12, + 28,44,44,76,76,140,255,12,12,63,7,12,12,9,1,0, + 126,120,64,64,120,204,134,6,198,198,140,120,8,12,12,9, + 0,0,60,102,70,192,192,252,230,195,195,195,102,60,7,12, + 12,9,1,0,254,254,132,132,8,8,16,16,16,48,48,48, + 8,12,12,9,0,0,60,102,66,98,118,60,110,199,195,195, + 102,60,8,12,12,9,0,0,60,102,195,195,195,103,63,3, + 3,98,102,56,2,8,8,4,1,0,192,192,0,0,0,0, + 192,192,2,11,11,4,1,253,192,192,0,0,0,0,192,192, + 64,64,128,8,8,8,10,1,0,3,12,48,192,192,48,12, + 3,8,4,4,10,1,2,255,0,0,255,8,8,8,10,0, + 0,192,48,12,3,3,12,48,192,7,12,12,7,0,0,56, + 76,230,70,6,12,24,16,16,0,48,48,13,13,26,12,255, + 255,7,128,24,96,32,16,70,208,77,144,152,144,153,144,145, + 32,155,32,76,200,64,16,48,96,15,128,11,12,24,12,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,11,12,24,12,0,0,255, + 128,49,192,48,192,48,192,49,128,63,192,48,224,48,96,48, + 96,48,96,48,192,255,128,10,12,24,12,1,0,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,12,12,24,13,0,0,255,0,49,192,48, + 96,48,96,48,48,48,48,48,48,48,48,48,96,48,96,49, + 192,255,0,10,12,24,12,0,0,255,192,48,192,48,64,50, + 64,50,0,62,0,54,0,50,0,50,64,48,64,48,192,255, + 192,10,12,24,11,0,0,255,192,48,192,48,64,50,64,50, + 0,62,0,54,0,50,0,50,0,48,0,48,0,252,0,11, + 12,24,13,1,0,31,64,112,192,96,64,224,64,192,64,192, + 0,195,224,192,192,224,192,96,192,113,192,30,64,13,12,24, + 14,0,0,253,248,48,96,48,96,48,96,48,96,63,224,48, + 96,48,96,48,96,48,96,48,96,253,248,6,12,12,7,0, + 0,252,48,48,48,48,48,48,48,48,48,48,252,9,12,24, + 9,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,70,0,230,0,198,0,132,0,120,0,12,12,24,13,0, + 0,253,240,48,192,48,128,49,0,50,0,54,0,59,0,51, + 128,49,128,48,192,48,224,253,240,10,12,24,11,0,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,64,48, + 64,48,64,48,192,255,192,15,12,24,16,0,0,248,62,56, + 56,56,56,44,88,44,88,46,88,38,152,38,152,35,152,35, + 24,35,24,249,62,13,12,24,13,0,0,240,248,56,32,60, + 32,44,32,46,32,39,32,35,160,33,160,32,224,32,224,32, + 96,248,32,11,12,24,13,1,0,14,0,49,128,96,192,96, + 192,192,96,192,96,192,96,192,96,96,192,96,192,49,128,14, + 0,11,12,24,11,0,0,255,128,48,192,48,96,48,96,48, + 96,48,192,63,128,48,0,48,0,48,0,48,0,252,0,11, + 15,30,13,1,253,14,0,49,128,96,192,96,192,192,96,192, + 96,192,96,204,96,82,64,115,192,51,128,15,0,3,64,3, + 64,1,128,12,12,24,12,0,0,255,0,48,192,48,96,48, + 96,48,192,63,0,51,128,48,192,48,192,48,208,48,208,252, + 96,8,12,12,10,1,0,61,99,193,193,224,124,62,135,131, + 131,198,188,10,12,24,11,0,0,255,192,204,192,140,64,140, + 64,140,64,12,0,12,0,12,0,12,0,12,0,12,0,63, + 0,13,12,24,13,0,0,252,248,48,32,48,32,48,32,48, + 32,48,32,48,32,48,32,48,32,48,32,24,64,15,128,11, + 12,24,12,0,0,248,224,112,64,48,64,48,128,24,128,25, + 0,25,0,13,0,14,0,14,0,4,0,4,0,15,12,24, + 16,0,0,247,206,99,4,99,4,49,136,49,136,57,200,26, + 208,26,208,10,80,12,96,4,32,4,32,11,12,24,11,0, + 0,241,224,96,192,48,128,25,0,30,0,12,0,6,0,15, + 0,19,0,33,128,96,192,241,224,12,12,24,12,0,0,252, + 240,48,64,24,128,24,128,13,0,13,0,6,0,6,0,6, + 0,6,0,6,0,31,128,9,12,24,10,0,0,127,128,97, + 128,67,0,67,0,6,0,12,0,12,0,24,128,48,128,48, + 128,97,128,255,128,3,14,14,6,1,254,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,12,12,10,2,0,128, + 128,64,64,32,32,16,16,8,8,4,4,3,14,14,6,1, + 254,224,32,32,32,32,32,32,32,32,32,32,32,32,224,8, + 7,7,10,1,5,24,24,60,36,102,66,195,8,1,1,8, + 0,254,255,3,3,3,5,0,9,128,64,32,7,8,8,9, + 1,0,120,204,204,28,108,204,204,118,8,12,12,9,0,0, + 224,96,96,96,124,102,99,99,99,99,102,92,6,8,8,7, + 0,0,56,108,204,192,192,192,108,56,8,12,12,10,1,0, + 14,6,6,6,62,102,198,198,198,198,102,59,7,8,8,8, + 0,0,56,68,198,254,192,192,102,60,6,12,12,6,0,0, + 56,108,96,96,248,96,96,96,96,96,96,248,9,11,22,9, + 0,253,61,128,102,128,102,0,102,0,102,0,60,0,64,0, + 126,0,195,0,195,0,126,0,9,12,24,10,0,0,224,0, + 96,0,96,0,96,0,110,0,119,0,99,0,99,0,99,0, + 99,0,99,0,247,128,4,12,12,5,0,0,96,96,0,0, + 224,96,96,96,96,96,96,240,4,15,15,5,255,253,48,48, + 0,0,112,48,48,48,48,48,48,48,48,176,224,9,12,24, + 10,0,0,224,0,96,0,96,0,96,0,111,128,102,0,108, + 0,120,0,124,0,102,0,99,0,247,128,4,12,12,5,0, + 0,224,96,96,96,96,96,96,96,96,96,96,240,14,8,16, + 15,0,0,238,112,115,152,99,24,99,24,99,24,99,24,99, + 24,247,188,9,8,16,10,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,7,8,8,8,0,0,56, + 108,198,198,198,198,108,56,8,11,11,9,0,253,220,102,99, + 99,99,99,102,124,96,96,240,8,11,11,9,0,253,57,102, + 198,198,198,198,102,62,6,6,15,7,8,8,7,0,0,236, + 118,102,96,96,96,96,240,6,8,8,8,0,0,116,204,196, + 112,56,140,204,184,6,11,11,7,0,0,32,32,96,248,96, + 96,96,96,100,100,56,9,8,16,10,0,0,231,0,99,0, + 99,0,99,0,99,0,99,0,99,0,61,128,9,8,16,9, + 0,0,247,128,99,0,50,0,54,0,28,0,28,0,8,0, + 8,0,13,8,16,13,0,0,239,120,102,48,51,32,51,96, + 29,192,29,192,8,128,8,128,8,8,8,9,0,0,247,98, + 52,56,28,44,70,239,8,11,11,9,0,253,247,98,54,52, + 28,28,8,8,24,208,224,6,8,8,8,1,0,252,140,152, + 48,48,100,196,252,3,14,14,6,1,254,32,64,64,64,64, + 64,128,64,64,64,64,64,64,32,1,12,12,10,4,0,128, + 128,128,128,128,128,128,128,128,128,128,128,3,14,14,6,1, + 254,128,64,64,64,64,64,32,64,64,64,64,64,64,128,8, + 2,2,10,1,3,115,206,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,1,1,2,12, + 12,5,1,253,192,192,0,64,64,64,64,192,192,192,192,192, + 6,12,12,9,1,254,4,4,56,76,204,144,144,228,100,56, + 64,64,9,12,24,9,0,0,30,0,49,0,35,0,35,0, + 48,0,16,0,254,0,16,0,16,0,112,128,191,0,78,0, + 7,8,8,9,1,2,186,108,198,130,130,198,108,186,9,12, + 24,9,0,0,243,128,97,0,34,0,50,0,20,0,20,0, + 62,0,8,0,62,0,8,0,8,0,62,0,1,12,12,10, + 4,0,128,128,128,128,128,0,0,128,128,128,128,128,6,15, + 15,8,1,253,56,72,64,96,48,88,140,132,196,104,48,24, + 8,72,112,5,2,2,5,0,9,216,216,12,12,24,12,0, + 0,31,128,48,192,71,32,205,176,152,144,144,16,144,16,152, + 144,205,176,71,32,48,192,31,128,5,7,7,6,0,5,224, + 144,112,144,232,0,240,6,5,5,7,0,1,36,72,216,72, + 36,8,5,5,10,1,1,255,1,1,1,1,4,1,1,5, + 0,3,240,12,12,24,12,0,0,31,128,48,192,95,32,201, + 176,137,144,143,16,137,16,137,144,200,176,92,224,48,192,31, + 128,5,1,1,5,0,9,248,5,5,5,7,1,7,112,136, + 136,136,112,7,9,9,10,1,0,16,16,16,254,16,16,16, + 0,254,5,7,7,6,0,5,112,216,136,16,32,72,248,5, + 7,7,6,0,5,112,216,136,48,136,216,112,3,3,3,5, + 0,9,32,96,128,10,11,22,10,0,253,231,0,99,0,99, + 0,99,0,99,0,99,0,99,0,125,192,96,0,96,0,96, + 0,8,15,15,10,0,253,127,234,202,202,202,234,122,10,10, + 10,10,10,10,10,31,2,2,2,5,1,3,192,192,3,4, + 4,5,1,253,64,64,32,192,3,7,7,6,1,5,64,192, + 64,64,64,64,224,4,7,7,5,0,5,96,144,144,144,96, + 0,240,6,5,5,7,0,1,144,72,108,72,144,11,12,24, + 14,1,0,64,64,192,192,65,128,65,0,66,0,70,64,236, + 192,9,64,18,64,51,224,96,64,64,224,11,12,24,13,1, + 0,64,128,193,128,67,0,66,0,68,0,77,192,251,96,18, + 32,32,192,97,0,195,32,131,224,13,12,24,14,0,0,112, + 24,216,48,136,96,48,192,136,128,217,144,115,48,6,80,4, + 144,12,248,24,16,48,56,7,12,12,7,0,253,24,24,0, + 16,16,48,96,192,196,206,100,56,11,16,32,12,0,0,24, + 0,12,0,2,0,0,0,4,0,4,0,14,0,14,0,22, + 0,19,0,19,0,63,128,33,128,65,128,64,192,243,224,11, + 16,32,12,0,0,3,0,6,0,8,0,0,0,4,0,4, + 0,14,0,14,0,22,0,19,0,19,0,63,128,33,128,65, + 128,64,192,243,224,11,16,32,12,0,0,4,0,14,0,17, + 0,0,0,4,0,4,0,14,0,14,0,22,0,19,0,19, + 0,63,128,33,128,65,128,64,192,243,224,11,15,30,12,0, + 0,29,0,46,0,0,0,4,0,4,0,14,0,14,0,22, + 0,19,0,19,0,63,128,33,128,65,128,64,192,243,224,11, + 15,30,12,0,0,18,0,18,0,0,0,4,0,4,0,14, + 0,14,0,22,0,19,0,19,0,63,128,33,128,65,128,64, + 192,243,224,11,16,32,12,0,0,12,0,18,0,12,0,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,16,12,24,17,0,0,15, + 255,2,195,2,193,4,193,4,200,8,248,8,216,31,201,16, + 193,32,193,32,195,251,255,10,15,30,12,1,253,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,8,0,4,0,24,0,10,16,32,12,0, + 0,24,0,12,0,2,0,0,0,255,192,48,192,48,64,48, + 64,50,0,62,0,54,0,50,0,48,64,48,64,48,192,255, + 192,10,16,32,12,0,0,3,0,6,0,8,0,0,0,255, + 192,48,192,48,64,48,64,50,0,62,0,54,0,50,0,48, + 64,48,64,48,192,255,192,10,16,32,12,0,0,4,0,14, + 0,17,0,0,0,255,192,48,192,48,64,48,64,50,0,62, + 0,54,0,50,0,48,64,48,64,48,192,255,192,10,15,30, + 12,0,0,17,0,17,0,0,0,255,192,48,192,48,64,48, + 64,50,0,62,0,54,0,50,0,48,64,48,64,48,192,255, + 192,6,16,16,7,0,0,192,96,16,0,252,48,48,48,48, + 48,48,48,48,48,48,252,6,16,16,7,0,0,12,24,32, + 0,252,48,48,48,48,48,48,48,48,48,48,252,6,16,16, + 7,0,0,32,112,136,0,252,48,48,48,48,48,48,48,48, + 48,48,252,6,15,15,7,0,0,72,72,0,252,48,48,48, + 48,48,48,48,48,48,48,252,12,12,24,13,0,0,255,0, + 49,192,48,96,48,96,48,48,124,48,48,48,48,48,48,96, + 48,96,49,192,255,0,13,15,30,13,0,0,14,64,19,128, + 0,0,240,248,56,32,60,32,44,32,46,32,39,32,35,160, + 33,160,32,224,32,224,32,96,248,32,11,16,32,13,1,0, + 24,0,12,0,2,0,0,0,14,0,49,128,96,192,96,192, + 192,96,192,96,192,96,192,96,96,192,96,192,49,128,14,0, + 11,16,32,13,1,0,1,128,3,0,4,0,0,0,14,0, + 49,128,96,192,96,192,192,96,192,96,192,96,192,96,96,192, + 96,192,49,128,14,0,11,16,32,13,1,0,4,0,14,0, + 17,0,0,0,14,0,49,128,96,192,96,192,192,96,192,96, + 192,96,192,96,96,192,96,192,49,128,14,0,11,15,30,13, + 1,0,14,128,23,0,0,0,14,0,49,128,96,192,96,192, + 192,96,192,96,192,96,192,96,96,192,96,192,49,128,14,0, + 11,15,30,13,1,0,17,0,17,0,0,0,14,0,49,128, + 96,192,96,192,192,96,192,96,192,96,192,96,96,192,96,192, + 49,128,14,0,8,8,8,10,1,0,129,66,36,24,24,36, + 66,129,11,14,28,13,1,255,0,32,14,64,49,128,97,192, + 97,64,194,96,196,96,196,96,200,96,80,192,112,192,49,128, + 78,0,128,0,13,16,32,13,0,0,12,0,6,0,1,0, + 0,0,252,248,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,48,32,48,32,24,64,15,128,13,16,32,13,0,0, + 0,192,1,128,2,0,0,0,252,248,48,32,48,32,48,32, + 48,32,48,32,48,32,48,32,48,32,48,32,24,64,15,128, + 13,16,32,13,0,0,2,0,7,0,8,128,0,0,252,248, + 48,32,48,32,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,24,64,15,128,13,15,30,13,0,0,8,128,8,128, + 0,0,252,248,48,32,48,32,48,32,48,32,48,32,48,32, + 48,32,48,32,48,32,24,64,15,128,12,16,32,12,0,0, + 1,128,3,0,4,0,0,0,252,240,48,64,24,128,24,128, + 13,0,13,0,6,0,6,0,6,0,6,0,6,0,31,128, + 11,12,24,11,0,0,252,0,48,0,48,0,63,128,48,192, + 48,96,48,96,48,192,63,128,48,0,48,0,252,0,8,12, + 12,10,1,0,60,102,99,99,102,124,102,99,99,99,118,236, + 7,12,12,9,1,0,64,96,16,0,120,204,204,28,108,204, + 204,118,7,12,12,9,1,0,4,12,16,0,120,204,204,28, + 108,204,204,118,7,12,12,9,1,0,16,56,68,0,120,204, + 204,28,108,204,204,118,7,11,11,9,1,0,52,88,0,120, + 204,204,28,108,204,204,118,7,11,11,9,1,0,72,72,0, + 120,204,204,28,108,204,204,118,7,13,13,9,1,0,48,72, + 72,48,0,120,204,204,28,108,204,204,118,12,8,16,13,0, + 0,121,192,206,32,198,48,31,240,102,0,198,16,207,32,121, + 192,6,11,11,7,0,253,56,108,204,192,192,196,108,56,32, + 16,96,7,12,12,8,0,0,32,48,8,0,56,68,198,254, + 192,192,102,60,7,12,12,8,0,0,4,12,16,0,56,68, + 198,254,192,192,102,60,7,12,12,8,0,0,16,56,68,0, + 56,68,198,254,192,192,102,60,7,11,11,8,0,0,36,36, + 0,56,68,198,254,192,192,102,60,4,12,12,5,0,0,128, + 192,32,0,224,96,96,96,96,96,96,240,4,12,12,5,0, + 0,16,48,64,0,224,96,96,96,96,96,96,240,5,12,12, + 5,255,0,32,112,136,0,112,48,48,48,48,48,48,120,4, + 11,11,5,0,0,144,144,0,224,96,96,96,96,96,96,240, + 7,13,13,8,0,0,64,38,24,104,12,60,110,198,198,198, + 198,108,56,9,11,22,10,0,0,26,0,44,0,0,0,238, + 0,115,0,99,0,99,0,99,0,99,0,99,0,247,128,7, + 12,12,8,0,0,64,96,16,0,56,108,198,198,198,198,108, + 56,7,12,12,8,0,0,4,12,16,0,56,108,198,198,198, + 198,108,56,7,12,12,8,0,0,16,56,68,0,56,108,198, + 198,198,198,108,56,7,11,11,8,0,0,52,88,0,56,108, + 198,198,198,198,108,56,7,11,11,8,0,0,72,72,0,56, + 108,198,198,198,198,108,56,8,7,7,10,1,1,24,24,0, + 255,0,24,24,7,10,10,8,0,255,2,60,100,206,214,214, + 230,76,120,128,9,12,24,10,0,0,32,0,48,0,8,0, + 0,0,231,0,99,0,99,0,99,0,99,0,99,0,99,0, + 61,128,9,12,24,10,0,0,2,0,6,0,8,0,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,61,128, + 9,12,24,10,0,0,8,0,28,0,34,0,0,0,231,0, + 99,0,99,0,99,0,99,0,99,0,99,0,61,128,9,11, + 22,10,0,0,36,0,36,0,0,0,231,0,99,0,99,0, + 99,0,99,0,99,0,99,0,61,128,8,15,15,9,0,253, + 2,6,8,0,247,98,54,52,28,24,8,24,16,208,224,8, + 14,14,9,0,253,224,96,96,124,102,99,99,99,99,102,124, + 96,96,240,8,14,14,9,0,253,36,36,0,247,98,54,52, + 28,24,8,24,16,208,224}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--17-120-100-100-P-91-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 12, '1' Height: 12 + Calculated Max Values w=15 h=15 x= 4 y= 9 dx=16 dy= 0 ascent=13 len=30 + Font Bounding box w=21 h=26 x=-3 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =12 descent=-3 + X Font ascent =12 descent=-3 + Max Font ascent =13 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR12r[1976] U8G_SECTION(".progmem.u8g_font_ncenR12r") = { + 0,21,26,253,250,12,2,59,5,140,32,127,253,13,253,12, + 253,0,0,0,4,1,1,2,12,12,5,1,0,192,192,192, + 192,192,128,128,128,128,0,192,192,4,4,4,6,1,8,144, + 144,144,144,8,12,12,9,0,0,18,18,18,18,127,36,36, + 254,72,72,72,72,7,15,15,9,1,254,16,16,60,82,150, + 150,240,124,30,210,210,148,120,16,16,12,12,24,14,1,0, + 56,128,103,128,69,0,197,0,138,0,138,224,117,144,5,16, + 11,16,10,32,18,32,17,192,12,12,24,13,0,0,30,0, + 51,0,49,0,51,0,26,0,28,240,44,96,102,64,198,128, + 195,144,231,144,124,224,1,4,4,3,1,8,128,128,128,128, + 4,14,14,6,1,254,16,32,64,64,128,128,128,128,128,128, + 64,64,32,16,4,14,14,6,0,254,128,64,32,32,16,16, + 16,16,16,16,32,32,64,128,7,7,7,8,0,5,16,84, + 214,56,214,84,16,7,9,9,10,1,0,16,16,16,16,254, + 16,16,16,16,2,5,5,4,1,253,192,192,64,64,128,4, + 1,1,5,0,3,240,2,2,2,4,1,0,192,192,5,12, + 12,5,0,0,8,8,16,16,16,32,32,64,64,64,128,128, + 8,12,12,9,0,0,60,102,66,195,195,195,195,195,195,66, + 102,60,6,12,12,9,1,0,16,240,48,48,48,48,48,48, + 48,48,48,252,7,12,12,9,1,0,56,68,134,198,198,12, + 8,16,34,66,254,254,7,12,12,9,1,0,120,140,198,198, + 12,56,12,6,198,198,140,120,8,12,12,9,0,0,4,12, + 28,44,44,76,76,140,255,12,12,63,7,12,12,9,1,0, + 126,120,64,64,120,204,134,6,198,198,140,120,8,12,12,9, + 0,0,60,102,70,192,192,252,230,195,195,195,102,60,7,12, + 12,9,1,0,254,254,132,132,8,8,16,16,16,48,48,48, + 8,12,12,9,0,0,60,102,66,98,118,60,110,199,195,195, + 102,60,8,12,12,9,0,0,60,102,195,195,195,103,63,3, + 3,98,102,56,2,8,8,4,1,0,192,192,0,0,0,0, + 192,192,2,11,11,4,1,253,192,192,0,0,0,0,192,192, + 64,64,128,8,8,8,10,1,0,3,12,48,192,192,48,12, + 3,8,4,4,10,1,2,255,0,0,255,8,8,8,10,0, + 0,192,48,12,3,3,12,48,192,7,12,12,7,0,0,56, + 76,230,70,6,12,24,16,16,0,48,48,13,13,26,12,255, + 255,7,128,24,96,32,16,70,208,77,144,152,144,153,144,145, + 32,155,32,76,200,64,16,48,96,15,128,11,12,24,12,0, + 0,4,0,4,0,14,0,14,0,22,0,19,0,19,0,63, + 128,33,128,65,128,64,192,243,224,11,12,24,12,0,0,255, + 128,49,192,48,192,48,192,49,128,63,192,48,224,48,96,48, + 96,48,96,48,192,255,128,10,12,24,12,1,0,31,64,112, + 192,96,64,224,64,192,64,192,0,192,0,192,0,224,64,96, + 64,112,128,31,0,12,12,24,13,0,0,255,0,49,192,48, + 96,48,96,48,48,48,48,48,48,48,48,48,96,48,96,49, + 192,255,0,10,12,24,12,0,0,255,192,48,192,48,64,50, + 64,50,0,62,0,54,0,50,0,50,64,48,64,48,192,255, + 192,10,12,24,11,0,0,255,192,48,192,48,64,50,64,50, + 0,62,0,54,0,50,0,50,0,48,0,48,0,252,0,11, + 12,24,13,1,0,31,64,112,192,96,64,224,64,192,64,192, + 0,195,224,192,192,224,192,96,192,113,192,30,64,13,12,24, + 14,0,0,253,248,48,96,48,96,48,96,48,96,63,224,48, + 96,48,96,48,96,48,96,48,96,253,248,6,12,12,7,0, + 0,252,48,48,48,48,48,48,48,48,48,48,252,9,12,24, + 9,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,70,0,230,0,198,0,132,0,120,0,12,12,24,13,0, + 0,253,240,48,192,48,128,49,0,50,0,54,0,59,0,51, + 128,49,128,48,192,48,224,253,240,10,12,24,11,0,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,64,48, + 64,48,64,48,192,255,192,15,12,24,16,0,0,248,62,56, + 56,56,56,44,88,44,88,46,88,38,152,38,152,35,152,35, + 24,35,24,249,62,13,12,24,13,0,0,240,248,56,32,60, + 32,44,32,46,32,39,32,35,160,33,160,32,224,32,224,32, + 96,248,32,11,12,24,13,1,0,14,0,49,128,96,192,96, + 192,192,96,192,96,192,96,192,96,96,192,96,192,49,128,14, + 0,11,12,24,11,0,0,255,128,48,192,48,96,48,96,48, + 96,48,192,63,128,48,0,48,0,48,0,48,0,252,0,11, + 15,30,13,1,253,14,0,49,128,96,192,96,192,192,96,192, + 96,192,96,204,96,82,64,115,192,51,128,15,0,3,64,3, + 64,1,128,12,12,24,12,0,0,255,0,48,192,48,96,48, + 96,48,192,63,0,51,128,48,192,48,192,48,208,48,208,252, + 96,8,12,12,10,1,0,61,99,193,193,224,124,62,135,131, + 131,198,188,10,12,24,11,0,0,255,192,204,192,140,64,140, + 64,140,64,12,0,12,0,12,0,12,0,12,0,12,0,63, + 0,13,12,24,13,0,0,252,248,48,32,48,32,48,32,48, + 32,48,32,48,32,48,32,48,32,48,32,24,64,15,128,11, + 12,24,12,0,0,248,224,112,64,48,64,48,128,24,128,25, + 0,25,0,13,0,14,0,14,0,4,0,4,0,15,12,24, + 16,0,0,247,206,99,4,99,4,49,136,49,136,57,200,26, + 208,26,208,10,80,12,96,4,32,4,32,11,12,24,11,0, + 0,241,224,96,192,48,128,25,0,30,0,12,0,6,0,15, + 0,19,0,33,128,96,192,241,224,12,12,24,12,0,0,252, + 240,48,64,24,128,24,128,13,0,13,0,6,0,6,0,6, + 0,6,0,6,0,31,128,9,12,24,10,0,0,127,128,97, + 128,67,0,67,0,6,0,12,0,12,0,24,128,48,128,48, + 128,97,128,255,128,3,14,14,6,1,254,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,12,12,10,2,0,128, + 128,64,64,32,32,16,16,8,8,4,4,3,14,14,6,1, + 254,224,32,32,32,32,32,32,32,32,32,32,32,32,224,8, + 7,7,10,1,5,24,24,60,36,102,66,195,8,1,1,8, + 0,254,255,3,3,3,5,0,9,128,64,32,7,8,8,9, + 1,0,120,204,204,28,108,204,204,118,8,12,12,9,0,0, + 224,96,96,96,124,102,99,99,99,99,102,92,6,8,8,7, + 0,0,56,108,204,192,192,192,108,56,8,12,12,10,1,0, + 14,6,6,6,62,102,198,198,198,198,102,59,7,8,8,8, + 0,0,56,68,198,254,192,192,102,60,6,12,12,6,0,0, + 56,108,96,96,248,96,96,96,96,96,96,248,9,11,22,9, + 0,253,61,128,102,128,102,0,102,0,102,0,60,0,64,0, + 126,0,195,0,195,0,126,0,9,12,24,10,0,0,224,0, + 96,0,96,0,96,0,110,0,119,0,99,0,99,0,99,0, + 99,0,99,0,247,128,4,12,12,5,0,0,96,96,0,0, + 224,96,96,96,96,96,96,240,4,15,15,5,255,253,48,48, + 0,0,112,48,48,48,48,48,48,48,48,176,224,9,12,24, + 10,0,0,224,0,96,0,96,0,96,0,111,128,102,0,108, + 0,120,0,124,0,102,0,99,0,247,128,4,12,12,5,0, + 0,224,96,96,96,96,96,96,96,96,96,96,240,14,8,16, + 15,0,0,238,112,115,152,99,24,99,24,99,24,99,24,99, + 24,247,188,9,8,16,10,0,0,238,0,115,0,99,0,99, + 0,99,0,99,0,99,0,247,128,7,8,8,8,0,0,56, + 108,198,198,198,198,108,56,8,11,11,9,0,253,220,102,99, + 99,99,99,102,124,96,96,240,8,11,11,9,0,253,57,102, + 198,198,198,198,102,62,6,6,15,7,8,8,7,0,0,236, + 118,102,96,96,96,96,240,6,8,8,8,0,0,116,204,196, + 112,56,140,204,184,6,11,11,7,0,0,32,32,96,248,96, + 96,96,96,100,100,56,9,8,16,10,0,0,231,0,99,0, + 99,0,99,0,99,0,99,0,99,0,61,128,9,8,16,9, + 0,0,247,128,99,0,50,0,54,0,28,0,28,0,8,0, + 8,0,13,8,16,13,0,0,239,120,102,48,51,32,51,96, + 29,192,29,192,8,128,8,128,8,8,8,9,0,0,247,98, + 52,56,28,44,70,239,8,11,11,9,0,253,247,98,54,52, + 28,28,8,8,24,208,224,6,8,8,8,1,0,252,140,152, + 48,48,100,196,252,3,14,14,6,1,254,32,64,64,64,64, + 64,128,64,64,64,64,64,64,32,1,12,12,10,4,0,128, + 128,128,128,128,128,128,128,128,128,128,128,3,14,14,6,1, + 254,128,64,64,64,64,64,32,64,64,64,64,64,64,128,8, + 2,2,10,1,3,115,206,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--20-140-100-100-P-103-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=19 x= 4 y=11 dx=19 dy= 0 ascent=19 len=42 + Font Bounding box w=27 h=30 x=-4 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =19 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR14[5319] U8G_SECTION(".progmem.u8g_font_ncenR14") = { + 0,27,30,252,249,14,3,41,7,30,32,255,252,19,252,14, + 252,0,0,0,5,0,1,2,14,14,5,1,0,192,192,192, + 192,192,192,192,128,128,128,0,0,192,192,4,5,5,7,1, + 9,144,144,144,144,144,10,13,26,11,0,0,9,0,9,0, + 9,0,9,0,127,192,18,0,18,0,18,0,255,128,36,0, + 36,0,36,0,36,0,9,17,34,10,0,254,8,0,8,0, + 63,0,105,128,201,128,200,0,232,0,120,0,30,0,15,0, + 11,128,9,128,201,128,203,0,126,0,8,0,8,0,15,14, + 28,16,0,0,28,32,50,32,99,192,98,64,196,128,196,128, + 201,28,113,50,2,98,2,98,4,196,4,196,8,200,8,112, + 13,14,28,14,0,0,30,0,51,0,33,0,35,0,54,0, + 28,0,57,248,124,96,238,64,199,128,195,128,193,200,227,240, + 124,96,1,5,5,4,1,9,128,128,128,128,128,6,17,17, + 7,0,253,4,24,48,96,96,192,192,192,192,192,192,192,96, + 96,48,24,4,6,17,17,7,0,253,128,96,48,24,24,12, + 12,12,12,12,12,12,24,24,48,96,128,7,7,7,10,1, + 7,16,146,214,56,214,146,16,9,9,18,10,0,1,8,0, + 8,0,8,0,8,0,255,128,8,0,8,0,8,0,8,0, + 3,5,5,5,0,253,96,96,32,64,128,5,1,1,6,0, + 5,248,2,2,2,5,1,0,192,192,5,14,14,6,0,0, + 8,8,8,16,16,16,32,32,32,64,64,64,128,128,9,14, + 28,10,0,0,28,0,99,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,193,128,193,128,99,0,99,0,28,0, + 8,14,14,10,1,0,24,248,24,24,24,24,24,24,24,24, + 24,24,24,255,9,14,28,10,0,0,30,0,99,0,193,128, + 193,128,1,128,1,128,3,0,6,0,12,0,24,0,48,128, + 96,128,255,128,255,128,9,14,28,10,0,0,62,0,99,0, + 97,128,1,128,1,128,3,0,30,0,3,0,1,128,1,128, + 1,128,193,128,195,0,126,0,10,14,28,10,0,0,3,0, + 7,0,11,0,11,0,19,0,19,0,35,0,35,0,67,0, + 67,0,255,192,3,0,3,0,15,128,9,14,28,10,0,0, + 127,128,127,0,64,0,64,0,64,0,94,0,99,0,65,128, + 1,128,1,128,1,128,193,128,195,0,126,0,9,14,28,10, + 0,0,15,0,49,128,97,128,96,0,192,0,206,0,223,0, + 227,128,193,128,193,128,193,128,193,128,99,0,62,0,9,14, + 28,10,0,0,255,128,255,128,129,0,131,0,2,0,6,0, + 6,0,12,0,12,0,24,0,24,0,24,0,24,0,24,0, + 9,14,28,10,0,0,62,0,99,0,65,0,65,0,97,0, + 114,0,62,0,47,0,67,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,10,0,0,62,0,99,0,193,128,193,128, + 193,128,193,128,227,128,125,128,57,128,1,128,3,0,195,0, + 198,0,120,0,2,9,9,5,1,0,192,192,0,0,0,0, + 0,192,192,3,12,12,5,0,253,96,96,0,0,0,0,0, + 96,96,32,64,128,9,9,18,10,0,1,0,128,3,128,14, + 0,56,0,224,0,56,0,14,0,3,128,0,128,9,4,8, + 10,0,4,255,128,0,0,0,0,255,128,9,9,18,10,0, + 1,128,0,224,0,56,0,14,0,3,128,14,0,56,0,224, + 0,128,0,7,14,14,8,0,0,60,206,198,6,6,4,8, + 8,16,16,0,0,48,48,13,14,28,14,0,0,7,128,24, + 96,32,16,70,208,77,200,140,200,152,200,153,144,153,144,155, + 160,76,192,64,16,32,96,31,128,14,14,28,13,255,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,12,14,28,13,0, + 0,255,128,48,192,48,96,48,96,48,96,48,192,63,128,48, + 96,48,48,48,48,48,48,48,48,48,96,255,192,12,14,28, + 13,0,0,15,144,56,112,96,48,96,16,192,16,192,0,192, + 0,192,0,192,0,192,0,96,16,96,16,56,96,15,192,14, + 14,28,15,0,0,255,192,48,112,48,24,48,24,48,12,48, + 12,48,12,48,12,48,12,48,12,48,24,48,24,48,112,255, + 192,11,14,28,12,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,14,28,12,0,0,255,224,48,96,48,32,48, + 32,49,32,49,0,63,0,49,0,49,0,48,0,48,0,48, + 0,48,0,252,0,14,14,28,15,0,0,15,200,56,120,96, + 24,96,8,192,8,192,0,192,0,192,0,192,124,192,24,96, + 24,96,24,56,120,15,200,15,14,28,16,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,63,248,48,24,48,24,48, + 24,48,24,48,24,48,24,252,126,6,14,14,7,0,0,252, + 48,48,48,48,48,48,48,48,48,48,48,48,252,9,14,28, + 10,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,198,0,198,0,132,0,120,0,15, + 14,28,15,0,0,252,248,48,96,48,64,48,128,49,0,50, + 0,54,0,63,0,51,128,49,192,48,224,48,112,48,56,252, + 254,11,14,28,12,0,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,32,48,32,48,32,48, + 96,255,224,17,14,42,18,0,0,248,15,128,56,14,0,44, + 22,0,44,22,0,44,22,0,38,38,0,38,38,0,38,38, + 0,35,70,0,35,70,0,35,70,0,33,134,0,33,134,0, + 249,159,128,14,14,28,15,0,0,240,124,48,16,56,16,60, + 16,46,16,38,16,35,16,35,144,33,144,32,208,32,240,32, + 112,32,48,248,16,14,14,28,15,0,0,15,192,56,112,96, + 24,96,24,192,12,192,12,192,12,192,12,192,12,192,12,96, + 24,96,24,56,112,15,192,11,14,28,12,0,0,255,128,48, + 192,48,96,48,96,48,96,48,96,48,192,63,0,48,0,48, + 0,48,0,48,0,48,0,252,0,15,18,36,15,0,252,15, + 192,56,112,96,24,96,24,192,12,192,12,192,12,192,12,192, + 12,207,12,113,152,96,152,56,240,15,224,0,96,0,114,0, + 62,0,28,14,14,28,14,0,0,255,128,48,192,48,96,48, + 96,48,96,48,192,63,0,49,128,48,192,48,192,48,224,48, + 96,48,116,248,56,10,14,28,11,0,0,62,128,97,128,192, + 128,192,128,192,0,240,0,126,0,31,128,3,192,128,192,128, + 192,192,192,225,128,191,0,12,14,28,13,0,0,255,240,198, + 48,134,16,134,16,134,16,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,31,128,14,14,28,15,0,0,252, + 124,48,16,48,16,48,16,48,16,48,16,48,16,48,16,48, + 16,48,16,48,16,48,16,24,32,15,192,14,14,28,13,255, + 0,252,124,48,16,48,16,24,32,24,32,24,32,12,64,12, + 64,12,64,6,128,6,128,6,128,3,0,3,0,20,14,42, + 19,255,0,253,249,240,48,96,64,48,96,64,24,112,128,24, + 112,128,24,112,128,12,153,0,12,153,0,12,153,0,5,9, + 0,7,14,0,7,14,0,3,6,0,3,6,0,13,14,28, + 14,1,0,248,240,48,64,56,192,24,128,13,128,15,0,6, + 0,7,0,15,128,9,128,16,192,48,224,32,96,249,248,14, + 14,28,13,255,0,252,124,48,16,24,32,24,32,12,64,12, + 64,6,128,7,128,3,0,3,0,3,0,3,0,3,0,15, + 192,10,14,28,11,0,0,255,192,192,192,129,128,131,128,131, + 0,6,0,14,0,28,0,24,0,48,64,112,64,96,64,192, + 192,255,192,4,17,17,6,1,253,240,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,240,7,14,14,10,1,0, + 128,128,192,64,96,32,48,16,24,8,12,4,6,2,4,17, + 17,6,0,253,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,240,9,9,18,10,0,5,8,0,8,0,28, + 0,20,0,54,0,34,0,99,0,65,0,193,128,9,1,2, + 9,0,254,255,128,4,3,3,6,1,10,192,96,16,9,9, + 18,10,0,0,28,0,98,0,99,0,3,0,31,0,99,0, + 195,0,199,0,121,128,10,14,28,10,255,0,224,0,96,0, + 96,0,96,0,96,0,111,0,113,128,96,192,96,192,96,192, + 96,192,96,192,113,128,79,0,8,9,9,9,0,0,60,99, + 195,192,192,192,193,99,62,10,14,28,11,0,0,3,128,1, + 128,1,128,1,128,1,128,61,128,99,128,193,128,193,128,193, + 128,193,128,193,128,99,128,61,192,8,9,9,9,0,0,60, + 102,195,195,255,192,193,99,62,8,14,14,7,0,0,14,27, + 51,48,48,252,48,48,48,48,48,48,48,120,10,14,28,11, + 0,252,0,192,31,192,51,0,97,128,97,128,51,0,62,0, + 64,0,127,0,63,128,65,192,128,192,193,128,127,0,10,14, + 28,11,0,0,224,0,96,0,96,0,96,0,96,0,111,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 4,13,13,5,0,0,96,96,0,0,224,96,96,96,96,96, + 96,96,240,6,17,17,5,253,252,12,12,0,0,28,12,12, + 12,12,12,12,12,12,12,204,200,112,10,14,28,10,0,0, + 224,0,96,0,96,0,96,0,96,0,103,128,98,0,100,0, + 104,0,120,0,108,0,102,0,99,0,247,192,4,14,14,5, + 0,0,224,96,96,96,96,96,96,96,96,96,96,96,96,240, + 16,9,18,17,0,0,239,60,115,206,97,134,97,134,97,134, + 97,134,97,134,97,134,243,207,10,9,18,11,0,0,239,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 9,9,18,10,0,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,99,0,62,0,10,13,26,11,0,252,239,0, + 113,128,96,192,96,192,96,192,96,192,96,192,113,128,111,0, + 96,0,96,0,96,0,240,0,10,13,26,10,0,252,60,128, + 99,128,193,128,193,128,193,128,193,128,193,128,99,128,61,128, + 1,128,1,128,1,128,3,192,7,9,9,8,0,0,230,110, + 114,96,96,96,96,96,240,7,9,9,8,0,0,122,198,130, + 224,124,14,130,198,188,6,12,12,6,0,0,96,96,96,248, + 96,96,96,96,96,96,100,56,10,9,18,11,0,0,227,128, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,61,192, + 10,9,18,11,0,0,241,192,96,128,96,128,49,0,49,0, + 26,0,30,0,12,0,12,0,15,9,18,16,0,0,247,222, + 97,132,97,132,50,200,50,200,52,208,28,112,28,112,8,32, + 9,9,18,10,0,0,243,128,97,0,50,0,28,0,8,0, + 28,0,38,0,67,0,231,128,10,13,26,11,0,252,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,8,0, + 8,0,16,0,208,0,224,0,7,9,9,8,0,0,254,134, + 140,24,24,48,98,198,254,5,17,17,6,0,253,24,32,96, + 96,96,96,96,64,128,64,96,96,96,96,96,32,24,2,14, + 14,11,4,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,5,17,17,6,0,253,192,32,48,48,48,48,48,16, + 8,16,48,48,48,48,48,32,192,10,3,6,11,0,4,56, + 192,109,128,199,0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,0,0,0,5,0,1,2,14,14,5, + 1,252,192,192,0,0,64,64,64,192,192,192,192,192,192,192, + 8,13,13,10,1,254,2,2,30,103,203,200,200,208,208,115, + 62,32,32,10,14,28,11,0,0,15,0,25,128,49,128,48, + 0,48,0,24,0,255,128,12,0,12,0,12,0,12,0,120, + 64,158,64,247,128,9,9,18,12,1,3,156,128,255,128,99, + 0,193,128,193,128,193,128,99,0,255,128,156,128,14,14,28, + 15,0,0,252,124,48,16,24,32,24,32,12,64,12,64,6, + 128,31,224,3,0,3,0,31,224,3,0,3,0,15,192,2, + 14,14,10,4,0,192,192,192,192,192,0,0,0,192,192,192, + 192,192,192,8,17,17,9,0,253,60,102,70,64,96,120,62, + 79,195,227,122,60,14,6,98,102,60,6,2,2,7,0,10, + 204,204,14,14,28,15,0,0,7,128,24,96,32,16,71,136, + 72,200,144,68,144,4,144,4,144,4,72,72,71,136,32,16, + 24,96,7,128,6,8,8,7,0,6,112,136,56,200,152,108, + 0,252,8,7,7,9,0,2,17,51,102,204,102,51,17,9, + 5,10,10,0,3,255,128,0,128,0,128,0,128,0,128,5, + 1,1,6,0,5,248,14,14,28,15,0,0,7,128,24,96, + 32,16,79,136,68,200,132,68,132,196,135,132,132,132,68,72, + 78,104,32,16,24,96,7,128,6,1,1,7,0,10,252,6, + 6,6,7,0,8,120,204,132,132,204,120,9,9,18,10,0, + 1,8,0,8,0,8,0,255,128,8,0,8,0,8,0,0, + 0,255,128,6,8,8,6,0,6,120,204,140,24,48,96,196, + 252,6,8,8,6,0,6,120,204,140,56,12,140,204,120,4, + 3,3,6,1,11,48,96,128,10,13,26,11,0,252,227,192, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,125,192, + 64,0,64,0,96,0,96,0,10,17,34,11,0,253,63,192, + 233,0,201,0,201,0,201,0,201,0,233,0,57,0,9,0, + 9,0,9,0,9,0,9,0,9,0,9,0,9,0,63,192, + 2,2,2,5,1,5,192,192,4,4,4,6,0,252,64,112, + 16,224,6,8,8,6,0,6,48,240,48,48,48,48,48,252, + 5,8,8,6,0,6,112,216,136,136,216,112,0,248,8,7, + 7,9,0,2,136,204,102,51,102,204,136,15,14,28,15,0, + 0,48,32,240,32,48,64,48,64,48,128,48,128,49,24,253, + 56,2,40,2,88,4,152,4,254,8,24,8,60,14,14,28, + 15,0,0,48,32,240,32,48,64,48,64,48,128,48,128,49, + 120,253,204,2,140,2,24,4,48,4,96,8,196,8,252,15, + 14,28,15,0,0,120,32,204,32,140,64,56,64,12,128,140, + 128,205,24,121,56,2,40,2,88,4,152,4,254,8,24,8, + 60,7,14,14,8,0,252,24,24,0,0,16,16,32,32,64, + 192,192,198,230,120,14,18,36,13,255,0,12,0,6,0,1, + 0,0,0,3,0,3,0,3,0,5,128,5,128,5,128,8, + 192,8,192,31,224,16,96,16,96,32,48,32,48,248,252,14, + 18,36,13,255,0,0,192,1,128,2,0,0,0,3,0,3, + 0,3,0,5,128,5,128,5,128,8,192,8,192,31,224,16, + 96,16,96,32,48,32,48,248,252,14,18,36,13,255,0,3, + 0,7,128,8,64,0,0,3,0,3,0,3,0,5,128,5, + 128,5,128,8,192,8,192,31,224,16,96,16,96,32,48,32, + 48,248,252,14,17,34,13,255,0,7,64,11,128,0,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,14,17,34,13,255, + 0,12,192,12,192,0,0,3,0,3,0,3,0,5,128,5, + 128,5,128,8,192,8,192,31,224,16,96,16,96,32,48,32, + 48,248,252,14,19,38,13,255,0,3,0,4,128,4,128,3, + 0,0,0,3,0,3,0,3,0,5,128,5,128,5,128,8, + 192,8,192,31,224,16,96,16,96,32,48,32,48,248,252,18, + 14,42,18,255,0,7,255,192,1,96,192,2,96,64,2,96, + 64,4,98,64,4,98,0,8,126,0,8,98,0,31,226,0, + 16,96,64,32,96,64,32,96,64,96,96,192,241,255,192,12, + 18,36,13,0,252,15,144,56,112,96,48,96,16,192,16,192, + 0,192,0,192,0,192,0,192,0,96,16,96,16,56,96,15, + 192,4,0,7,0,1,0,14,0,11,18,36,12,0,0,24, + 0,12,0,2,0,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,18,36,12,0,0,3,0,6,0,8,0,0, + 0,255,224,48,96,48,32,48,32,49,32,49,0,63,0,49, + 0,49,0,48,32,48,32,48,32,48,96,255,224,11,18,36, + 12,0,0,6,0,15,0,16,128,0,0,255,224,48,96,48, + 32,48,32,49,32,49,0,63,0,49,0,49,0,48,32,48, + 32,48,32,48,96,255,224,11,17,34,12,0,0,25,128,25, + 128,0,0,255,224,48,96,48,32,48,32,49,32,49,0,63, + 0,49,0,49,0,48,32,48,32,48,32,48,96,255,224,6, + 18,18,7,0,0,192,96,16,0,252,48,48,48,48,48,48, + 48,48,48,48,48,48,252,6,18,18,7,0,0,12,24,32, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,252,6, + 18,18,7,0,0,48,120,132,0,252,48,48,48,48,48,48, + 48,48,48,48,48,48,252,6,17,17,7,0,0,204,204,0, + 252,48,48,48,48,48,48,48,48,48,48,48,48,252,14,14, + 28,15,0,0,255,192,48,112,48,24,48,24,48,12,48,12, + 254,12,48,12,48,12,48,12,48,24,48,24,48,112,255,192, + 14,17,34,15,0,0,7,64,11,128,0,0,240,124,48,16, + 56,16,60,16,46,16,38,16,35,16,35,144,33,144,32,208, + 32,240,32,112,32,48,248,16,14,18,36,15,0,0,12,0, + 6,0,1,0,0,0,15,192,56,112,96,24,96,24,192,12, + 192,12,192,12,192,12,192,12,192,12,96,24,96,24,56,112, + 15,192,14,18,36,15,0,0,0,192,1,128,2,0,0,0, + 15,192,56,112,96,24,96,24,192,12,192,12,192,12,192,12, + 192,12,192,12,96,24,96,24,56,112,15,192,14,18,36,15, + 0,0,3,0,7,128,8,64,0,0,15,192,56,112,96,24, + 96,24,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 96,24,56,112,15,192,14,17,34,15,0,0,7,64,11,128, + 0,0,15,192,56,112,96,24,96,24,192,12,192,12,192,12, + 192,12,192,12,192,12,96,24,96,24,56,112,15,192,14,17, + 34,15,0,0,12,192,12,192,0,0,15,192,56,112,96,24, + 96,24,192,12,192,12,192,12,192,12,192,12,192,12,96,24, + 96,24,56,112,15,192,10,9,18,10,0,1,192,192,97,128, + 51,0,30,0,12,0,30,0,51,0,97,128,192,192,15,14, + 28,15,255,0,7,228,28,56,48,28,48,44,96,70,96,134, + 97,6,98,6,100,6,104,6,48,12,48,12,92,56,135,224, + 14,18,36,15,0,0,6,0,3,0,0,128,0,0,252,124, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,48,16,48,16,24,32,15,192,14,18,36,15,0,0, + 0,192,1,128,2,0,0,0,252,124,48,16,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 24,32,15,192,14,18,36,15,0,0,3,0,7,128,8,64, + 0,0,252,124,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,24,32,15,192,14,17, + 34,15,0,0,12,96,12,96,0,0,252,124,48,16,48,16, + 48,16,48,16,48,16,48,16,48,16,48,16,48,16,48,16, + 48,16,24,32,15,192,14,18,36,13,255,0,0,96,0,192, + 1,0,0,0,252,124,48,16,24,32,24,32,12,64,12,64, + 6,128,7,128,3,0,3,0,3,0,3,0,3,0,15,192, + 11,14,28,12,0,0,252,0,48,0,48,0,63,128,48,192, + 48,96,48,96,48,96,48,96,48,192,63,0,48,0,48,0, + 252,0,9,14,28,10,0,0,30,0,35,0,97,0,97,0, + 99,0,110,0,99,0,97,128,97,128,97,128,97,128,109,128, + 109,0,230,0,9,13,26,10,0,0,48,0,24,0,4,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,13,26,10,0,0,6,0,12,0,16,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,13,26,10,0,0,24,0,60,0,66,0, + 0,0,28,0,98,0,99,0,3,0,31,0,99,0,195,0, + 199,0,121,128,9,12,24,10,0,0,58,0,92,0,0,0, + 28,0,98,0,99,0,3,0,31,0,99,0,195,0,199,0, + 121,128,9,12,24,10,0,0,102,0,102,0,0,0,28,0, + 98,0,99,0,3,0,31,0,99,0,195,0,199,0,121,128, + 9,14,28,10,0,0,24,0,36,0,36,0,24,0,0,0, + 28,0,98,0,99,0,3,0,31,0,99,0,195,0,199,0, + 121,128,15,9,18,16,0,0,28,248,99,140,99,6,3,6, + 31,254,99,0,195,0,197,134,120,252,8,13,13,9,0,252, + 60,99,195,192,192,192,193,99,62,16,28,4,56,8,13,13, + 9,0,0,96,48,8,0,60,102,195,195,255,192,193,99,62, + 8,13,13,9,0,0,6,12,16,0,60,102,195,195,255,192, + 193,99,62,8,13,13,9,0,0,24,60,66,0,60,102,195, + 195,255,192,193,99,62,8,12,12,9,0,0,102,102,0,60, + 102,195,195,255,192,193,99,62,5,13,13,5,255,0,192,96, + 16,0,112,48,48,48,48,48,48,48,120,5,13,13,5,0, + 0,24,48,64,0,224,96,96,96,96,96,96,96,240,6,13, + 13,5,255,0,48,120,132,0,112,48,48,48,48,48,48,48, + 120,6,12,12,5,255,0,204,204,0,112,48,48,48,48,48, + 48,48,120,9,14,28,10,0,0,192,0,54,0,56,0,204, + 0,6,0,63,0,99,0,193,128,193,128,193,128,193,128,193, + 128,99,0,62,0,10,12,24,11,0,0,60,128,79,0,0, + 0,239,0,115,128,97,128,97,128,97,128,97,128,97,128,97, + 128,243,192,9,13,26,10,0,0,96,0,48,0,8,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,13,26,10,0,0,3,0,6,0,8,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,13,26,10,0,0,24,0,60,0,66,0,0, + 0,62,0,99,0,193,128,193,128,193,128,193,128,193,128,99, + 0,62,0,9,12,24,10,0,0,58,0,92,0,0,0,62, + 0,99,0,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,9,12,24,10,0,0,99,0,99,0,0,0,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,99,0,62,0,10, + 7,14,10,0,2,12,0,12,0,0,0,255,192,0,0,12, + 0,12,0,9,12,24,10,0,254,0,128,62,128,99,0,197, + 128,197,128,201,128,201,128,209,128,115,0,62,0,64,0,64, + 0,10,13,26,11,0,0,48,0,24,0,4,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,13,26,11,0,0,3,0,6,0,8,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,13,26,11,0,0,12,0,30,0,33,0,0,0,227, + 192,97,128,97,128,97,128,97,128,97,128,97,128,115,128,61, + 192,10,12,24,11,0,0,51,0,51,0,0,0,227,192,97, + 128,97,128,97,128,97,128,97,128,97,128,115,128,61,192,10, + 17,34,11,0,252,3,0,6,0,8,0,0,0,241,192,96, + 128,49,0,49,0,26,0,26,0,12,0,12,0,8,0,8, + 0,16,0,208,0,224,0,10,18,36,11,0,252,224,0,96, + 0,96,0,96,0,96,0,111,0,113,128,96,192,96,192,96, + 192,96,192,96,192,113,128,111,0,96,0,96,0,96,0,240, + 0,10,16,32,11,0,252,51,0,51,0,0,0,241,192,96, + 128,49,0,49,0,26,0,26,0,12,0,12,0,8,0,8, + 0,16,0,208,0,224,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--20-140-100-100-P-103-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=20 h=18 x= 4 y=10 dx=19 dy= 0 ascent=15 len=42 + Font Bounding box w=27 h=30 x=-4 y=-7 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =14 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR14r[2534] U8G_SECTION(".progmem.u8g_font_ncenR14r") = { + 0,27,30,252,249,14,3,41,7,30,32,127,252,15,252,14, + 252,0,0,0,5,0,1,2,14,14,5,1,0,192,192,192, + 192,192,192,192,128,128,128,0,0,192,192,4,5,5,7,1, + 9,144,144,144,144,144,10,13,26,11,0,0,9,0,9,0, + 9,0,9,0,127,192,18,0,18,0,18,0,255,128,36,0, + 36,0,36,0,36,0,9,17,34,10,0,254,8,0,8,0, + 63,0,105,128,201,128,200,0,232,0,120,0,30,0,15,0, + 11,128,9,128,201,128,203,0,126,0,8,0,8,0,15,14, + 28,16,0,0,28,32,50,32,99,192,98,64,196,128,196,128, + 201,28,113,50,2,98,2,98,4,196,4,196,8,200,8,112, + 13,14,28,14,0,0,30,0,51,0,33,0,35,0,54,0, + 28,0,57,248,124,96,238,64,199,128,195,128,193,200,227,240, + 124,96,1,5,5,4,1,9,128,128,128,128,128,6,17,17, + 7,0,253,4,24,48,96,96,192,192,192,192,192,192,192,96, + 96,48,24,4,6,17,17,7,0,253,128,96,48,24,24,12, + 12,12,12,12,12,12,24,24,48,96,128,7,7,7,10,1, + 7,16,146,214,56,214,146,16,9,9,18,10,0,1,8,0, + 8,0,8,0,8,0,255,128,8,0,8,0,8,0,8,0, + 3,5,5,5,0,253,96,96,32,64,128,5,1,1,6,0, + 5,248,2,2,2,5,1,0,192,192,5,14,14,6,0,0, + 8,8,8,16,16,16,32,32,32,64,64,64,128,128,9,14, + 28,10,0,0,28,0,99,0,99,0,193,128,193,128,193,128, + 193,128,193,128,193,128,193,128,193,128,99,0,99,0,28,0, + 8,14,14,10,1,0,24,248,24,24,24,24,24,24,24,24, + 24,24,24,255,9,14,28,10,0,0,30,0,99,0,193,128, + 193,128,1,128,1,128,3,0,6,0,12,0,24,0,48,128, + 96,128,255,128,255,128,9,14,28,10,0,0,62,0,99,0, + 97,128,1,128,1,128,3,0,30,0,3,0,1,128,1,128, + 1,128,193,128,195,0,126,0,10,14,28,10,0,0,3,0, + 7,0,11,0,11,0,19,0,19,0,35,0,35,0,67,0, + 67,0,255,192,3,0,3,0,15,128,9,14,28,10,0,0, + 127,128,127,0,64,0,64,0,64,0,94,0,99,0,65,128, + 1,128,1,128,1,128,193,128,195,0,126,0,9,14,28,10, + 0,0,15,0,49,128,97,128,96,0,192,0,206,0,223,0, + 227,128,193,128,193,128,193,128,193,128,99,0,62,0,9,14, + 28,10,0,0,255,128,255,128,129,0,131,0,2,0,6,0, + 6,0,12,0,12,0,24,0,24,0,24,0,24,0,24,0, + 9,14,28,10,0,0,62,0,99,0,65,0,65,0,97,0, + 114,0,62,0,47,0,67,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,10,0,0,62,0,99,0,193,128,193,128, + 193,128,193,128,227,128,125,128,57,128,1,128,3,0,195,0, + 198,0,120,0,2,9,9,5,1,0,192,192,0,0,0,0, + 0,192,192,3,12,12,5,0,253,96,96,0,0,0,0,0, + 96,96,32,64,128,9,9,18,10,0,1,0,128,3,128,14, + 0,56,0,224,0,56,0,14,0,3,128,0,128,9,4,8, + 10,0,4,255,128,0,0,0,0,255,128,9,9,18,10,0, + 1,128,0,224,0,56,0,14,0,3,128,14,0,56,0,224, + 0,128,0,7,14,14,8,0,0,60,206,198,6,6,4,8, + 8,16,16,0,0,48,48,13,14,28,14,0,0,7,128,24, + 96,32,16,70,208,77,200,140,200,152,200,153,144,153,144,155, + 160,76,192,64,16,32,96,31,128,14,14,28,13,255,0,3, + 0,3,0,3,0,5,128,5,128,5,128,8,192,8,192,31, + 224,16,96,16,96,32,48,32,48,248,252,12,14,28,13,0, + 0,255,128,48,192,48,96,48,96,48,96,48,192,63,128,48, + 96,48,48,48,48,48,48,48,48,48,96,255,192,12,14,28, + 13,0,0,15,144,56,112,96,48,96,16,192,16,192,0,192, + 0,192,0,192,0,192,0,96,16,96,16,56,96,15,192,14, + 14,28,15,0,0,255,192,48,112,48,24,48,24,48,12,48, + 12,48,12,48,12,48,12,48,12,48,24,48,24,48,112,255, + 192,11,14,28,12,0,0,255,224,48,96,48,32,48,32,49, + 32,49,0,63,0,49,0,49,0,48,32,48,32,48,32,48, + 96,255,224,11,14,28,12,0,0,255,224,48,96,48,32,48, + 32,49,32,49,0,63,0,49,0,49,0,48,0,48,0,48, + 0,48,0,252,0,14,14,28,15,0,0,15,200,56,120,96, + 24,96,8,192,8,192,0,192,0,192,0,192,124,192,24,96, + 24,96,24,56,120,15,200,15,14,28,16,0,0,252,126,48, + 24,48,24,48,24,48,24,48,24,63,248,48,24,48,24,48, + 24,48,24,48,24,48,24,252,126,6,14,14,7,0,0,252, + 48,48,48,48,48,48,48,48,48,48,48,48,252,9,14,28, + 10,0,0,31,128,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,198,0,198,0,132,0,120,0,15, + 14,28,15,0,0,252,248,48,96,48,64,48,128,49,0,50, + 0,54,0,63,0,51,128,49,192,48,224,48,112,48,56,252, + 254,11,14,28,12,0,0,252,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,32,48,32,48,32,48, + 96,255,224,17,14,42,18,0,0,248,15,128,56,14,0,44, + 22,0,44,22,0,44,22,0,38,38,0,38,38,0,38,38, + 0,35,70,0,35,70,0,35,70,0,33,134,0,33,134,0, + 249,159,128,14,14,28,15,0,0,240,124,48,16,56,16,60, + 16,46,16,38,16,35,16,35,144,33,144,32,208,32,240,32, + 112,32,48,248,16,14,14,28,15,0,0,15,192,56,112,96, + 24,96,24,192,12,192,12,192,12,192,12,192,12,192,12,96, + 24,96,24,56,112,15,192,11,14,28,12,0,0,255,128,48, + 192,48,96,48,96,48,96,48,96,48,192,63,0,48,0,48, + 0,48,0,48,0,48,0,252,0,15,18,36,15,0,252,15, + 192,56,112,96,24,96,24,192,12,192,12,192,12,192,12,192, + 12,207,12,113,152,96,152,56,240,15,224,0,96,0,114,0, + 62,0,28,14,14,28,14,0,0,255,128,48,192,48,96,48, + 96,48,96,48,192,63,0,49,128,48,192,48,192,48,224,48, + 96,48,116,248,56,10,14,28,11,0,0,62,128,97,128,192, + 128,192,128,192,0,240,0,126,0,31,128,3,192,128,192,128, + 192,192,192,225,128,191,0,12,14,28,13,0,0,255,240,198, + 48,134,16,134,16,134,16,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,31,128,14,14,28,15,0,0,252, + 124,48,16,48,16,48,16,48,16,48,16,48,16,48,16,48, + 16,48,16,48,16,48,16,24,32,15,192,14,14,28,13,255, + 0,252,124,48,16,48,16,24,32,24,32,24,32,12,64,12, + 64,12,64,6,128,6,128,6,128,3,0,3,0,20,14,42, + 19,255,0,253,249,240,48,96,64,48,96,64,24,112,128,24, + 112,128,24,112,128,12,153,0,12,153,0,12,153,0,5,9, + 0,7,14,0,7,14,0,3,6,0,3,6,0,13,14,28, + 14,1,0,248,240,48,64,56,192,24,128,13,128,15,0,6, + 0,7,0,15,128,9,128,16,192,48,224,32,96,249,248,14, + 14,28,13,255,0,252,124,48,16,24,32,24,32,12,64,12, + 64,6,128,7,128,3,0,3,0,3,0,3,0,3,0,15, + 192,10,14,28,11,0,0,255,192,192,192,129,128,131,128,131, + 0,6,0,14,0,28,0,24,0,48,64,112,64,96,64,192, + 192,255,192,4,17,17,6,1,253,240,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,240,7,14,14,10,1,0, + 128,128,192,64,96,32,48,16,24,8,12,4,6,2,4,17, + 17,6,0,253,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,240,9,9,18,10,0,5,8,0,8,0,28, + 0,20,0,54,0,34,0,99,0,65,0,193,128,9,1,2, + 9,0,254,255,128,4,3,3,6,1,10,192,96,16,9,9, + 18,10,0,0,28,0,98,0,99,0,3,0,31,0,99,0, + 195,0,199,0,121,128,10,14,28,10,255,0,224,0,96,0, + 96,0,96,0,96,0,111,0,113,128,96,192,96,192,96,192, + 96,192,96,192,113,128,79,0,8,9,9,9,0,0,60,99, + 195,192,192,192,193,99,62,10,14,28,11,0,0,3,128,1, + 128,1,128,1,128,1,128,61,128,99,128,193,128,193,128,193, + 128,193,128,193,128,99,128,61,192,8,9,9,9,0,0,60, + 102,195,195,255,192,193,99,62,8,14,14,7,0,0,14,27, + 51,48,48,252,48,48,48,48,48,48,48,120,10,14,28,11, + 0,252,0,192,31,192,51,0,97,128,97,128,51,0,62,0, + 64,0,127,0,63,128,65,192,128,192,193,128,127,0,10,14, + 28,11,0,0,224,0,96,0,96,0,96,0,96,0,111,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 4,13,13,5,0,0,96,96,0,0,224,96,96,96,96,96, + 96,96,240,6,17,17,5,253,252,12,12,0,0,28,12,12, + 12,12,12,12,12,12,12,204,200,112,10,14,28,10,0,0, + 224,0,96,0,96,0,96,0,96,0,103,128,98,0,100,0, + 104,0,120,0,108,0,102,0,99,0,247,192,4,14,14,5, + 0,0,224,96,96,96,96,96,96,96,96,96,96,96,96,240, + 16,9,18,17,0,0,239,60,115,206,97,134,97,134,97,134, + 97,134,97,134,97,134,243,207,10,9,18,11,0,0,239,0, + 115,128,97,128,97,128,97,128,97,128,97,128,97,128,243,192, + 9,9,18,10,0,0,62,0,99,0,193,128,193,128,193,128, + 193,128,193,128,99,0,62,0,10,13,26,11,0,252,239,0, + 113,128,96,192,96,192,96,192,96,192,96,192,113,128,111,0, + 96,0,96,0,96,0,240,0,10,13,26,10,0,252,60,128, + 99,128,193,128,193,128,193,128,193,128,193,128,99,128,61,128, + 1,128,1,128,1,128,3,192,7,9,9,8,0,0,230,110, + 114,96,96,96,96,96,240,7,9,9,8,0,0,122,198,130, + 224,124,14,130,198,188,6,12,12,6,0,0,96,96,96,248, + 96,96,96,96,96,96,100,56,10,9,18,11,0,0,227,128, + 97,128,97,128,97,128,97,128,97,128,97,128,115,128,61,192, + 10,9,18,11,0,0,241,192,96,128,96,128,49,0,49,0, + 26,0,30,0,12,0,12,0,15,9,18,16,0,0,247,222, + 97,132,97,132,50,200,50,200,52,208,28,112,28,112,8,32, + 9,9,18,10,0,0,243,128,97,0,50,0,28,0,8,0, + 28,0,38,0,67,0,231,128,10,13,26,11,0,252,241,192, + 96,128,49,0,49,0,26,0,26,0,12,0,12,0,8,0, + 8,0,16,0,208,0,224,0,7,9,9,8,0,0,254,134, + 140,24,24,48,98,198,254,5,17,17,6,0,253,24,32,96, + 96,96,96,96,64,128,64,96,96,96,96,96,32,24,2,14, + 14,11,4,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,5,17,17,6,0,253,192,32,48,48,48,48,48,16, + 8,16,48,48,48,48,48,32,192,10,3,6,11,0,4,56, + 192,109,128,199,0,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--25-180-100-100-P-136-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=25 h=24 x= 6 y=15 dx=25 dy= 0 ascent=24 len=72 + Font Bounding box w=31 h=37 x=-3 y=-8 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR18[7488] U8G_SECTION(".progmem.u8g_font_ncenR18") = { + 0,31,37,253,248,18,4,33,9,197,32,255,251,24,251,18, + 251,0,0,0,7,0,1,3,18,18,7,2,0,64,224,224, + 224,224,224,224,224,224,224,224,64,64,64,0,224,224,224,6, + 6,6,10,2,12,204,204,204,204,204,204,13,16,32,15,1, + 1,12,96,12,96,12,96,12,96,12,96,127,248,24,192,24, + 192,24,192,24,192,255,240,49,128,49,128,49,128,49,128,49, + 128,11,22,44,13,1,254,4,0,4,0,31,0,101,128,68, + 192,196,192,197,192,197,128,228,0,252,0,127,0,31,192,7, + 192,4,224,100,96,228,96,196,96,196,64,100,192,63,0,4, + 0,4,0,18,19,57,20,1,255,30,24,0,51,40,0,97, + 216,0,97,16,0,193,48,0,193,32,0,194,96,0,194,64, + 0,196,199,128,120,140,192,1,152,64,1,24,64,3,48,64, + 2,48,64,6,48,128,4,48,128,12,49,0,8,30,0,8, + 0,0,18,18,54,20,1,0,7,192,0,12,224,0,24,96, + 0,24,96,0,24,96,0,24,192,0,13,128,0,14,0,0, + 30,63,128,103,30,0,99,140,0,193,200,0,192,232,0,192, + 112,0,224,56,64,112,124,64,127,207,128,31,7,0,2,6, + 6,6,2,12,192,192,192,192,192,192,7,21,21,9,1,253, + 2,12,24,48,48,96,96,192,192,192,192,192,192,192,96,96, + 48,48,24,12,2,7,21,21,8,0,253,128,96,48,24,24, + 12,12,6,6,6,6,6,6,6,12,12,24,24,48,96,128, + 7,9,9,9,1,9,16,56,146,214,56,214,146,56,16,12, + 12,24,14,1,1,6,0,6,0,6,0,6,0,6,0,255, + 240,255,240,6,0,6,0,6,0,6,0,6,0,4,7,7, + 6,1,252,96,240,240,48,32,64,128,6,2,2,8,1,6, + 252,252,3,3,3,7,2,0,224,224,224,7,18,18,8,0, + 0,6,6,6,12,12,12,24,24,24,48,48,48,96,96,96, + 192,192,192,11,18,36,13,1,0,14,0,17,0,49,128,32, + 128,96,192,96,192,224,224,224,224,224,224,224,224,224,224,224, + 224,96,192,96,192,32,128,49,128,17,0,14,0,8,18,18, + 13,3,0,8,56,248,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,11,18,36,13,1,0,31,0,113,192,64, + 192,224,224,224,224,64,224,0,192,1,192,1,128,3,0,6, + 0,12,0,24,0,48,32,96,32,192,96,255,224,255,224,11, + 18,36,13,1,0,31,0,99,128,193,192,225,192,225,192,65, + 128,1,128,3,0,31,0,1,128,0,192,0,224,64,224,224, + 224,224,192,193,192,97,128,30,0,12,18,36,13,0,0,0, + 64,0,192,1,192,3,192,6,192,12,192,8,192,24,192,48, + 192,96,192,64,192,192,192,128,192,255,240,0,192,0,192,0, + 192,3,240,11,18,36,13,1,0,127,192,127,128,64,0,64, + 0,64,0,64,0,64,0,95,0,99,128,0,192,0,192,0, + 224,96,224,224,224,224,192,64,192,97,128,31,0,11,18,36, + 13,1,0,15,128,56,224,32,224,96,96,96,0,96,0,224, + 0,239,0,241,128,224,192,224,192,224,224,224,224,96,224,96, + 192,96,192,49,128,31,0,10,18,36,13,2,0,255,192,255, + 192,128,128,129,128,1,0,3,0,3,0,2,0,6,0,6, + 0,4,0,12,0,12,0,12,0,28,0,28,0,28,0,8, + 0,11,18,36,13,1,0,31,0,49,128,32,128,96,192,96, + 192,112,192,57,128,63,0,31,0,55,128,97,192,192,224,192, + 96,192,96,192,96,96,192,113,192,31,0,11,18,36,13,1, + 0,31,0,49,128,112,192,96,192,224,224,224,224,224,224,96, + 224,112,224,49,224,30,224,0,224,0,192,0,192,193,192,225, + 128,227,128,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,7,2,252,224,224,224, + 0,0,0,0,0,0,96,240,240,48,32,64,128,12,12,24, + 14,1,1,0,48,0,240,3,192,15,0,60,0,240,0,240, + 0,60,0,15,0,3,192,0,240,0,48,12,6,12,15,1, + 4,255,240,255,240,0,0,0,0,255,240,255,240,12,12,24, + 14,1,1,192,0,240,0,60,0,15,0,3,192,0,240,0, + 240,3,192,15,0,60,0,240,0,192,0,10,18,36,12,1, + 0,30,0,99,128,193,192,225,192,225,192,1,192,3,128,7, + 0,14,0,12,0,24,0,16,0,16,0,0,0,0,0,56, + 0,56,0,56,0,17,18,54,19,1,0,1,248,0,6,6, + 0,24,3,0,16,1,128,96,216,128,99,56,128,198,24,128, + 198,24,128,204,24,128,204,49,0,204,49,0,204,114,0,196, + 180,0,195,56,0,96,1,0,96,2,0,24,12,0,31,248, + 0,19,18,54,19,0,0,0,64,0,0,96,0,0,224,0, + 0,240,0,1,48,0,1,56,0,2,24,0,2,28,0,4, + 12,0,4,12,0,8,14,0,15,254,0,16,6,0,16,7, + 0,32,3,0,32,3,128,96,3,128,248,15,224,14,18,36, + 18,2,0,255,192,48,112,48,48,48,56,48,56,48,56,48, + 48,48,96,63,240,48,56,48,24,48,28,48,28,48,28,48, + 28,48,24,48,56,255,224,15,18,36,17,1,0,7,242,28, + 30,56,6,48,2,112,2,96,2,224,0,224,0,224,0,224, + 0,224,0,224,0,96,2,112,2,48,6,56,4,28,28,7, + 240,16,18,36,20,2,0,255,224,48,56,48,12,48,12,48, + 6,48,6,48,7,48,7,48,7,48,7,48,7,48,7,48, + 6,48,6,48,12,48,12,48,56,255,224,13,18,36,16,1, + 0,255,248,48,56,48,24,48,8,48,8,48,136,48,128,49, + 128,63,128,49,128,48,128,48,128,48,8,48,8,48,8,48, + 24,48,56,255,248,13,18,36,16,1,0,255,248,48,56,48, + 24,48,8,48,8,48,136,48,128,49,128,63,128,49,128,48, + 128,48,128,48,0,48,0,48,0,48,0,48,0,252,0,17, + 18,54,18,1,0,7,250,0,28,30,0,48,6,0,48,6, + 0,112,2,0,96,2,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,63,128,224,6,0,96,6,0,112,6,0,48, + 6,0,48,14,0,28,30,0,7,242,0,17,18,54,21,2, + 0,252,31,128,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,63,254,0,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,252,31,128,6,18,18,9,2,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,11, + 18,36,14,1,0,7,224,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,97,128,241,128,225, + 128,193,128,193,128,99,0,62,0,18,18,54,20,2,0,252, + 127,0,48,28,0,48,24,0,48,48,0,48,96,0,48,192, + 0,49,128,0,51,0,0,55,0,0,63,128,0,57,192,0, + 48,224,0,48,112,0,48,56,0,48,28,0,48,14,0,48, + 7,0,252,31,192,13,18,36,16,2,0,254,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,8,48,24,48,56,255,248,20, + 18,54,23,1,0,252,1,240,60,1,192,30,3,192,22,2, + 192,23,2,192,19,2,192,19,4,192,19,132,192,17,132,192, + 17,136,192,17,200,192,16,200,192,16,208,192,16,240,192,16, + 112,192,16,96,192,56,96,192,254,35,240,19,18,54,21,1, + 0,248,15,224,60,3,128,28,1,0,30,1,0,23,1,0, + 19,129,0,17,129,0,16,193,0,16,225,0,16,97,0,16, + 49,0,16,57,0,16,29,0,16,15,0,16,7,0,16,7, + 0,56,3,0,254,1,0,17,18,54,19,1,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,13,18,36,16,2,0,255,192,48,112,48,48,48, + 56,48,56,48,56,48,56,48,48,48,112,63,192,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,17,22,66, + 19,1,252,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,227,195,128,100,99,0,104,39,0,56,54,0, + 56,22,0,28,28,0,7,248,0,0,24,128,0,12,128,0, + 15,0,0,6,0,15,18,36,18,2,0,255,192,48,112,48, + 48,48,56,48,56,48,56,48,48,48,96,63,128,49,192,48, + 224,48,96,48,112,48,112,48,50,48,50,48,60,252,28,13, + 18,36,15,1,0,31,144,112,240,64,48,192,48,192,16,224, + 16,120,0,62,0,15,128,3,224,0,240,0,56,128,24,128, + 24,192,24,192,48,240,112,159,192,14,18,36,17,1,0,255, + 252,227,28,195,12,131,4,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,224,16,18,36,19,2,0,252,31,48,14,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,56,12,24,8,30,56,7,224,18,18,54, + 18,0,0,254,7,192,56,1,0,24,1,0,28,2,0,28, + 2,0,12,2,0,14,4,0,6,4,0,7,8,0,7,8, + 0,3,8,0,3,144,0,1,144,0,1,160,0,1,224,0, + 0,224,0,0,192,0,0,64,0,25,18,72,25,0,0,254, + 63,143,128,56,14,2,0,56,14,2,0,24,14,2,0,24, + 22,4,0,28,23,4,0,12,19,4,0,12,19,4,0,14, + 35,136,0,6,33,136,0,6,33,136,0,7,65,208,0,3, + 64,208,0,3,192,240,0,3,128,240,0,1,128,96,0,1, + 128,96,0,0,128,32,0,19,18,54,19,0,0,127,143,128, + 30,6,0,14,4,0,7,8,0,7,16,0,3,144,0,1, + 160,0,1,192,0,0,224,0,0,224,0,1,112,0,1,56, + 0,2,28,0,4,28,0,4,14,0,8,7,0,24,7,128, + 252,31,224,16,18,36,17,0,0,252,63,56,12,24,8,28, + 24,12,16,14,48,6,32,7,96,3,64,3,192,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,7,224,14,18,36, + 16,1,0,127,252,112,24,96,56,64,48,64,96,0,224,0, + 192,1,128,3,128,3,0,6,0,14,0,28,0,24,4,48, + 4,112,12,96,28,255,252,5,21,21,7,2,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,248,10,18,36,11,0,0,192,0,192,0,96,0,96,0, + 48,0,48,0,24,0,24,0,12,0,12,0,6,0,6,0, + 3,0,3,0,1,128,1,128,0,192,0,192,5,21,21,7, + 0,253,248,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,248,10,10,20,12,1,8,12,0,12, + 0,30,0,30,0,51,0,51,0,97,128,97,128,192,192,192, + 192,12,2,4,12,0,253,255,240,255,240,5,4,4,8,1, + 14,192,224,48,8,12,12,24,13,1,0,31,0,113,128,112, + 192,96,192,0,192,7,192,56,192,96,192,192,192,192,192,225, + 240,126,96,13,18,36,14,0,0,240,0,48,0,48,0,48, + 0,48,0,48,0,55,192,60,112,56,48,48,56,48,24,48, + 24,48,24,48,24,48,56,56,48,60,112,39,192,10,12,24, + 12,1,0,31,0,113,192,97,192,224,192,192,0,192,0,192, + 0,192,0,224,0,96,64,112,192,31,128,13,18,36,14,1, + 0,1,224,0,96,0,96,0,96,0,96,0,96,30,96,113, + 224,96,224,224,96,192,96,192,96,192,96,192,96,224,96,96, + 224,113,224,31,120,11,12,24,13,1,0,31,0,113,192,96, + 192,224,224,192,96,255,224,192,0,192,0,224,0,96,64,112, + 192,31,128,9,18,36,8,1,0,15,0,25,128,49,128,48, + 0,48,0,48,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,13,17,34, + 12,0,251,31,56,49,216,96,192,96,192,96,192,96,192,49, + 128,31,0,48,0,96,0,63,0,31,192,96,224,192,96,192, + 96,224,192,127,128,14,18,36,14,0,0,240,0,48,0,48, + 0,48,0,48,0,48,0,49,192,55,224,56,112,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,6, + 18,18,8,1,0,48,48,48,0,0,0,240,48,48,48,48, + 48,48,48,48,48,48,252,7,23,23,8,254,251,6,6,6, + 0,0,0,30,6,6,6,6,6,6,6,6,6,6,6,6, + 6,198,204,120,14,18,36,15,1,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,240,48,192,49,128,51,0,54,0, + 62,0,55,0,51,128,49,192,48,224,48,112,252,252,6,18, + 18,8,1,0,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,22,12,36,22,0,0,241,193,192,55, + 231,224,56,120,112,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,252, + 14,12,24,14,0,0,241,192,55,224,56,112,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,11,12, + 24,13,1,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,13,17,34,14, + 0,251,247,192,60,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,56,56,48,60,112,55,192,48,0,48,0,48,0, + 48,0,252,0,13,17,34,14,1,251,30,32,113,224,96,224, + 224,96,192,96,192,96,192,96,192,96,224,96,96,224,113,224, + 31,96,0,96,0,96,0,96,0,96,1,248,10,12,24,10, + 0,0,243,128,53,192,56,192,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,9,12,24,11,1,0, + 61,0,103,0,195,0,193,0,224,0,124,0,31,0,3,128, + 129,128,193,128,227,0,190,0,8,16,16,10,1,0,16,16, + 48,112,255,48,48,48,48,48,48,48,49,49,57,30,14,12, + 24,14,0,0,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,56,112,31,176,14,60,15,12,24,13, + 255,0,252,126,48,24,48,16,56,48,24,32,28,96,12,64, + 14,192,6,128,7,128,3,0,3,0,19,12,36,17,255,0, + 252,243,224,48,96,128,48,96,128,48,112,128,56,177,0,24, + 177,0,24,177,0,29,58,0,13,26,0,13,26,0,14,28, + 0,6,12,0,13,12,24,12,0,0,248,240,112,96,56,192, + 25,128,15,0,7,0,7,0,13,128,24,192,48,224,96,112, + 240,248,13,17,34,12,255,251,120,56,48,16,56,32,24,32, + 24,96,28,64,12,192,14,128,6,128,7,128,3,0,3,0, + 2,0,2,0,196,0,236,0,120,0,9,12,24,11,1,0, + 255,128,195,128,135,0,134,0,12,0,28,0,24,0,48,0, + 112,128,224,128,193,128,255,128,6,21,21,8,1,253,12,16, + 48,48,48,48,48,48,48,32,192,32,48,48,48,48,48,48, + 48,16,12,2,18,18,15,6,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,21,21,7,1, + 253,192,32,48,48,48,48,48,48,48,16,12,16,48,48,48, + 48,48,48,48,32,192,12,4,8,14,1,6,60,48,126,112, + 231,224,195,192,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,7,0,1,3,19,19,7,2, + 251,224,224,224,0,0,64,64,64,224,224,224,224,224,224,224, + 224,224,224,64,10,18,36,14,2,253,0,64,0,64,0,128, + 31,128,113,192,97,192,226,192,194,0,196,0,196,0,200,0, + 232,0,112,64,112,192,63,0,32,0,64,0,64,0,13,18, + 36,14,0,0,3,192,14,48,12,112,28,112,28,32,28,0, + 28,0,14,0,127,192,7,0,7,0,7,0,7,0,7,0, + 118,8,140,8,143,240,115,224,13,12,24,15,1,4,71,16, + 255,248,112,112,32,32,96,48,96,48,96,48,96,48,32,32, + 112,112,255,248,71,16,16,18,36,17,0,0,252,63,56,12, + 24,8,28,24,12,16,14,48,6,32,7,96,3,64,3,192, + 31,248,1,128,1,128,31,248,1,128,1,128,1,128,15,240, + 2,18,18,15,6,0,192,192,192,192,192,192,192,0,0,0, + 192,192,192,192,192,192,192,192,10,22,44,12,1,252,31,0, + 35,128,97,128,97,128,120,0,60,0,31,0,47,128,67,192, + 193,192,192,192,224,192,240,192,124,128,63,0,15,0,3,128, + 1,128,97,128,97,128,113,0,62,0,6,2,2,8,1,15, + 204,204,18,18,54,20,1,0,3,240,0,12,12,0,16,2, + 0,32,1,0,67,240,128,70,24,128,140,8,64,140,0,64, + 140,0,64,140,0,64,140,0,64,140,8,64,70,24,128,67, + 224,128,32,1,0,16,2,0,12,12,0,3,240,0,7,10, + 10,9,1,8,120,76,4,124,196,204,118,0,0,254,10,7, + 14,12,1,3,24,192,49,128,99,0,198,0,99,0,49,128, + 24,192,12,7,14,14,1,3,255,240,255,240,0,48,0,48, + 0,48,0,48,0,48,6,2,2,8,1,6,252,252,18,18, + 54,20,1,0,3,240,0,12,12,0,16,2,0,32,1,0, + 71,240,128,67,24,128,131,24,64,131,24,64,131,16,64,131, + 224,64,131,48,64,131,24,64,67,12,128,71,142,128,32,1, + 0,16,2,0,12,12,0,3,240,0,7,1,1,9,1,15, + 254,8,7,7,9,0,11,60,102,195,195,195,102,60,12,11, + 22,14,1,2,6,0,6,0,6,0,255,240,255,240,6,0, + 6,0,6,0,0,0,255,240,255,240,7,11,11,8,0,7, + 124,198,198,6,12,24,48,96,192,194,254,7,11,11,8,0, + 7,124,198,198,6,12,60,6,6,198,198,124,5,4,4,8, + 2,15,24,56,96,128,14,17,34,14,0,251,240,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,112, + 63,176,46,60,32,0,32,0,112,0,112,0,32,0,13,22, + 44,15,1,252,31,248,115,48,227,48,227,48,227,48,227,48, + 227,48,227,48,115,48,31,48,3,48,3,48,3,48,3,48, + 3,48,3,48,3,48,3,48,3,48,3,48,3,48,7,248, + 3,3,3,7,2,5,224,224,224,4,4,4,7,1,252,64, + 112,16,224,6,11,11,8,1,7,16,48,240,48,48,48,48, + 48,48,48,252,7,10,10,9,1,8,56,68,198,198,198,68, + 56,0,0,254,10,7,14,12,1,3,198,0,99,0,49,128, + 24,192,49,128,99,0,198,0,18,18,54,19,0,0,16,4, + 0,48,12,0,240,8,0,48,24,0,48,16,0,48,48,0, + 48,32,0,48,99,0,48,71,0,48,207,0,252,139,0,1, + 155,0,1,19,0,3,51,0,2,99,0,6,127,192,4,3, + 0,12,7,128,18,18,54,19,0,0,16,8,0,48,24,0, + 240,16,0,48,48,0,48,32,0,48,96,0,48,64,0,48, + 207,128,48,152,192,49,152,192,253,0,192,3,1,128,2,3, + 0,6,6,0,4,12,0,12,24,0,8,24,64,24,31,192, + 18,18,54,19,0,0,124,4,0,198,12,0,198,8,0,6, + 24,0,12,16,0,60,48,0,6,32,0,6,99,0,198,71, + 0,198,207,0,124,139,0,1,155,0,1,19,0,3,51,0, + 2,99,0,6,127,192,4,3,0,12,7,128,10,18,36,12, + 1,252,7,0,7,0,7,0,0,0,0,0,2,0,2,0, + 6,0,12,0,28,0,56,0,112,0,224,0,225,192,225,192, + 224,192,113,128,30,0,19,23,69,19,0,0,3,0,0,3, + 128,0,0,192,0,0,32,0,0,0,0,0,64,0,0,96, + 0,0,224,0,0,240,0,1,48,0,1,56,0,2,24,0, + 2,28,0,4,12,0,4,12,0,8,14,0,15,254,0,16, + 6,0,16,7,0,32,3,0,32,3,128,96,3,128,248,15, + 224,19,23,69,19,0,0,0,24,0,0,56,0,0,96,0, + 0,128,0,0,0,0,0,64,0,0,96,0,0,224,0,0, + 240,0,1,48,0,1,56,0,2,24,0,2,28,0,4,12, + 0,4,12,0,8,14,0,15,254,0,16,6,0,16,7,0, + 32,3,0,32,3,128,96,3,128,248,15,224,19,23,69,19, + 0,0,0,96,0,0,240,0,1,152,0,2,4,0,0,0, + 0,0,64,0,0,96,0,0,224,0,0,240,0,1,48,0, + 1,56,0,2,24,0,2,28,0,4,12,0,4,12,0,8, + 14,0,15,254,0,16,6,0,16,7,0,32,3,0,32,3, + 128,96,3,128,248,15,224,19,22,66,19,0,0,1,196,0, + 3,248,0,4,112,0,0,0,0,0,64,0,0,96,0,0, + 224,0,0,240,0,1,48,0,1,56,0,2,24,0,2,28, + 0,4,12,0,4,12,0,8,14,0,15,254,0,16,6,0, + 16,7,0,32,3,0,32,3,128,96,3,128,248,15,224,19, + 22,66,19,0,0,3,24,0,3,24,0,0,0,0,0,0, + 0,0,64,0,0,96,0,0,224,0,0,240,0,1,48,0, + 1,56,0,2,24,0,2,28,0,4,12,0,4,12,0,8, + 14,0,15,254,0,16,6,0,16,7,0,32,3,0,32,3, + 128,96,3,128,248,15,224,19,24,72,19,0,0,0,224,0, + 1,16,0,1,16,0,1,16,0,0,224,0,0,0,0,0, + 64,0,0,96,0,0,224,0,0,240,0,1,48,0,1,56, + 0,2,24,0,2,28,0,4,12,0,4,12,0,8,14,0, + 15,254,0,16,6,0,16,7,0,32,3,0,32,3,128,96, + 3,128,248,15,224,24,18,54,25,0,0,1,255,255,0,38, + 7,0,102,3,0,70,1,0,198,1,0,134,17,1,134,16, + 1,6,48,3,7,240,2,6,48,7,254,16,4,6,16,12, + 6,1,8,6,1,24,6,1,16,6,3,48,6,7,252,31, + 255,15,23,46,17,1,251,7,242,28,30,56,6,48,2,112, + 2,96,2,224,0,224,0,224,0,224,0,224,0,224,0,96, + 2,112,2,48,6,56,4,28,28,7,240,3,224,1,0,1, + 192,0,64,3,128,13,23,46,16,1,0,24,0,28,0,6, + 0,1,0,0,0,255,248,48,56,48,24,48,8,48,8,48, + 136,48,128,49,128,63,128,49,128,48,128,48,128,48,8,48, + 8,48,8,48,24,48,56,255,248,13,23,46,16,1,0,0, + 96,0,224,1,128,2,0,0,0,255,248,48,56,48,24,48, + 8,48,8,48,136,48,128,49,128,63,128,49,128,48,128,48, + 128,48,8,48,8,48,8,48,24,48,56,255,248,13,23,46, + 16,1,0,3,0,7,128,12,192,16,32,0,0,255,248,48, + 56,48,24,48,8,48,8,48,136,48,128,49,128,63,128,49, + 128,48,128,48,128,48,8,48,8,48,8,48,24,48,56,255, + 248,13,22,44,16,1,0,12,96,12,96,0,0,0,0,255, + 248,48,56,48,24,48,8,48,8,48,136,48,128,49,128,63, + 128,49,128,48,128,48,128,48,8,48,8,48,8,48,24,48, + 56,255,248,6,23,23,9,2,0,192,224,48,8,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 7,23,23,9,2,0,6,14,24,32,0,252,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,8,23,23, + 9,1,0,24,60,102,129,0,126,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,126,7,22,22,9,2,0, + 198,198,0,0,252,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,16,18,36,20,2,0,255,224,48,56, + 48,12,48,12,48,6,48,6,48,7,48,7,254,7,48,7, + 48,7,48,7,48,6,48,6,48,12,48,12,48,56,255,224, + 19,22,66,21,1,0,1,196,0,3,248,0,4,112,0,0, + 0,0,248,15,224,60,3,128,28,1,0,30,1,0,23,1, + 0,19,129,0,17,129,0,16,193,0,16,225,0,16,97,0, + 16,49,0,16,57,0,16,29,0,16,15,0,16,7,0,16, + 7,0,56,3,0,254,1,0,17,23,69,19,1,0,12,0, + 0,14,0,0,3,0,0,0,128,0,0,0,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,17,23,69,19,1,0,0,24,0,0,56,0,0, + 96,0,0,128,0,0,0,0,7,240,0,28,28,0,48,6, + 0,48,6,0,112,7,0,96,3,0,224,3,128,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,96,3,0,112, + 7,0,48,6,0,48,6,0,28,28,0,7,240,0,17,23, + 69,19,1,0,0,192,0,1,224,0,3,48,0,4,8,0, + 0,0,0,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,96,3,0,112,7,0,48,6,0, + 48,6,0,28,28,0,7,240,0,17,22,66,19,1,0,3, + 136,0,7,240,0,8,224,0,0,0,0,7,240,0,28,28, + 0,48,6,0,48,6,0,112,7,0,96,3,0,224,3,128, + 224,3,128,224,3,128,224,3,128,224,3,128,224,3,128,96, + 3,0,112,7,0,48,6,0,48,6,0,28,28,0,7,240, + 0,17,22,66,19,1,0,6,48,0,6,48,0,0,0,0, + 0,0,0,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,224,3,128,96,3,0,112,7,0,48,6,0, + 48,6,0,28,28,0,7,240,0,13,12,24,14,1,1,192, + 24,96,48,48,96,24,192,13,128,7,0,7,0,13,128,24, + 192,48,96,96,48,192,24,17,19,57,19,1,0,0,3,0, + 7,246,0,28,28,0,48,14,0,48,30,0,96,51,0,96, + 99,0,224,67,128,224,195,128,225,131,128,227,3,128,226,3, + 128,230,3,128,108,3,0,120,3,0,48,6,0,48,6,0, + 124,28,0,199,240,0,16,23,46,19,2,0,6,0,7,0, + 1,128,0,64,0,0,252,31,48,14,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,56,12,24,8,30,56,7,224,16,23,46,19,2,0, + 0,48,0,112,0,192,1,0,0,0,252,31,48,14,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,56,12,24,8,30,56,7,224,16,23, + 46,19,2,0,1,128,3,192,6,96,8,16,0,0,252,31, + 48,14,48,4,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,56,12,24,8,30,56, + 7,224,16,22,44,19,2,0,6,48,6,48,0,0,0,0, + 252,31,48,14,48,4,48,4,48,4,48,4,48,4,48,4, + 48,4,48,4,48,4,48,4,48,4,48,4,56,12,24,8, + 30,56,7,224,16,23,46,17,0,0,0,48,0,112,0,192, + 1,0,0,0,252,63,56,12,24,8,28,24,12,16,14,48, + 6,32,7,96,3,64,3,192,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,7,224,13,18,36,16,2,0,252,0, + 48,0,48,0,48,0,63,128,48,224,48,48,48,56,48,56, + 48,56,48,56,48,48,48,224,63,128,48,0,48,0,48,0, + 252,0,12,18,36,14,1,0,15,128,24,192,48,96,48,96, + 48,96,48,96,48,192,51,192,48,96,48,48,48,48,48,48, + 48,48,48,48,54,48,54,48,54,96,243,192,12,18,36,13, + 1,0,24,0,28,0,6,0,1,0,0,0,0,0,31,0, + 113,128,112,192,96,192,0,192,7,192,56,192,96,192,192,192, + 192,192,225,240,126,96,12,18,36,13,1,0,1,128,3,128, + 6,0,8,0,0,0,0,0,31,0,113,128,112,192,96,192, + 0,192,7,192,56,192,96,192,192,192,192,192,225,240,126,96, + 12,18,36,13,1,0,6,0,15,0,25,128,32,64,0,0, + 0,0,31,0,113,128,112,192,96,192,0,192,7,192,56,192, + 96,192,192,192,192,192,225,240,126,96,12,17,34,13,1,0, + 28,64,63,128,71,0,0,0,0,0,31,0,113,128,112,192, + 96,192,0,192,7,192,56,192,96,192,192,192,192,192,225,240, + 126,96,12,16,32,13,1,0,25,128,25,128,0,0,0,0, + 31,0,113,128,112,192,96,192,0,192,7,192,56,192,96,192, + 192,192,192,192,225,240,126,96,12,19,38,13,1,0,14,0, + 17,0,17,0,17,0,14,0,0,0,0,0,31,0,113,128, + 112,192,96,192,0,192,7,192,56,192,96,192,192,192,192,192, + 225,240,126,96,19,12,36,21,1,0,31,31,0,113,241,192, + 96,224,192,0,224,224,0,192,96,7,255,224,56,192,0,96, + 192,0,192,224,0,192,224,64,227,112,192,124,31,128,10,16, + 32,12,1,252,31,0,113,192,97,192,224,192,192,0,192,0, + 192,0,192,0,224,0,96,64,112,192,31,128,8,0,14,0, + 2,0,28,0,11,18,36,13,1,0,24,0,28,0,6,0, + 1,0,0,0,0,0,31,0,113,192,96,192,224,224,192,96, + 255,224,192,0,192,0,224,0,96,64,112,192,31,128,11,18, + 36,13,1,0,1,128,3,128,6,0,8,0,0,0,0,0, + 31,0,113,192,96,192,224,224,192,96,255,224,192,0,192,0, + 224,0,96,64,112,192,31,128,11,18,36,13,1,0,6,0, + 15,0,25,128,32,64,0,0,0,0,31,0,113,192,96,192, + 224,224,192,96,255,224,192,0,192,0,224,0,96,64,112,192, + 31,128,11,16,32,13,1,0,49,128,49,128,0,0,0,0, + 31,0,113,192,96,192,224,224,192,96,255,224,192,0,192,0, + 224,0,96,64,112,192,31,128,6,18,18,8,1,0,192,224, + 48,8,0,0,240,48,48,48,48,48,48,48,48,48,48,252, + 6,18,18,8,1,0,24,56,96,128,0,0,240,48,48,48, + 48,48,48,48,48,48,48,252,8,18,18,8,0,0,24,60, + 102,129,0,0,120,24,24,24,24,24,24,24,24,24,24,126, + 6,16,16,8,1,0,204,204,0,0,240,48,48,48,48,48, + 48,48,48,48,48,252,11,18,36,13,1,0,192,0,51,0, + 28,0,28,0,102,0,3,0,31,128,113,192,96,192,224,224, + 192,96,192,96,192,96,192,96,224,224,96,192,113,192,31,0, + 14,17,34,14,0,0,7,16,15,224,17,192,0,0,0,0, + 241,192,55,224,56,112,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,252,252,11,18,36,13,1,0,24,0, + 28,0,6,0,1,0,0,0,0,0,31,0,113,192,96,192, + 224,224,192,96,192,96,192,96,192,96,224,224,96,192,113,192, + 31,0,11,18,36,13,1,0,1,128,3,128,6,0,8,0, + 0,0,0,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,11,18,36,13, + 1,0,14,0,31,0,49,128,64,64,0,0,0,0,31,0, + 113,192,96,192,224,224,192,96,192,96,192,96,192,96,224,224, + 96,192,113,192,31,0,11,17,34,13,1,0,28,64,63,128, + 71,0,0,0,0,0,31,0,113,192,96,192,224,224,192,96, + 192,96,192,96,192,96,224,224,96,192,113,192,31,0,11,16, + 32,13,1,0,49,128,49,128,0,0,0,0,31,0,113,192, + 96,192,224,224,192,96,192,96,192,96,192,96,224,224,96,192, + 113,192,31,0,12,10,20,14,1,2,6,0,6,0,0,0, + 0,0,255,240,255,240,0,0,0,0,6,0,6,0,11,16, + 32,13,1,254,0,64,0,128,31,128,113,192,98,192,226,224, + 196,96,196,96,196,96,200,96,200,224,80,192,113,192,63,0, + 32,0,64,0,14,18,36,14,0,0,12,0,14,0,3,0, + 0,128,0,0,0,0,240,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,56,112,31,176,14,60,14,18, + 36,14,0,0,0,192,1,192,3,0,4,0,0,0,0,0, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,176,14,60,14,18,36,14,0,0,3,0, + 7,128,12,192,16,32,0,0,0,0,240,240,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,56,112,31,176, + 14,60,14,16,32,14,0,0,12,192,12,192,0,0,0,0, + 240,240,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,56,112,31,176,14,60,13,23,46,12,255,251,0,96, + 0,224,1,128,2,0,0,0,0,0,120,56,48,16,56,48, + 24,32,24,32,12,96,12,64,6,192,6,128,7,128,3,0, + 3,0,2,0,2,0,196,0,236,0,120,0,13,23,46,14, + 0,251,240,0,48,0,48,0,48,0,48,0,48,0,55,192, + 60,112,56,48,48,56,48,24,48,24,48,24,48,24,48,56, + 56,48,60,112,55,192,48,0,48,0,48,0,48,0,252,0, + 13,21,42,12,255,251,12,96,12,96,0,0,0,0,120,56, + 48,16,56,48,24,32,24,32,12,96,12,64,6,192,6,128, + 7,128,3,0,3,0,2,0,2,0,196,0,236,0,120,0 + }; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--25-180-100-100-P-136-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=25 h=23 x= 6 y=14 dx=25 dy= 0 ascent=20 len=72 + Font Bounding box w=31 h=37 x=-3 y=-8 + Calculated Min Values x=-2 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent=-5 + X Font ascent =18 descent=-5 + Max Font ascent =20 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR18r[3477] U8G_SECTION(".progmem.u8g_font_ncenR18r") = { + 0,31,37,253,248,18,4,33,9,197,32,127,251,20,251,18, + 251,0,0,0,7,0,1,3,18,18,7,2,0,64,224,224, + 224,224,224,224,224,224,224,224,64,64,64,0,224,224,224,6, + 6,6,10,2,12,204,204,204,204,204,204,13,16,32,15,1, + 1,12,96,12,96,12,96,12,96,12,96,127,248,24,192,24, + 192,24,192,24,192,255,240,49,128,49,128,49,128,49,128,49, + 128,11,22,44,13,1,254,4,0,4,0,31,0,101,128,68, + 192,196,192,197,192,197,128,228,0,252,0,127,0,31,192,7, + 192,4,224,100,96,228,96,196,96,196,64,100,192,63,0,4, + 0,4,0,18,19,57,20,1,255,30,24,0,51,40,0,97, + 216,0,97,16,0,193,48,0,193,32,0,194,96,0,194,64, + 0,196,199,128,120,140,192,1,152,64,1,24,64,3,48,64, + 2,48,64,6,48,128,4,48,128,12,49,0,8,30,0,8, + 0,0,18,18,54,20,1,0,7,192,0,12,224,0,24,96, + 0,24,96,0,24,96,0,24,192,0,13,128,0,14,0,0, + 30,63,128,103,30,0,99,140,0,193,200,0,192,232,0,192, + 112,0,224,56,64,112,124,64,127,207,128,31,7,0,2,6, + 6,6,2,12,192,192,192,192,192,192,7,21,21,9,1,253, + 2,12,24,48,48,96,96,192,192,192,192,192,192,192,96,96, + 48,48,24,12,2,7,21,21,8,0,253,128,96,48,24,24, + 12,12,6,6,6,6,6,6,6,12,12,24,24,48,96,128, + 7,9,9,9,1,9,16,56,146,214,56,214,146,56,16,12, + 12,24,14,1,1,6,0,6,0,6,0,6,0,6,0,255, + 240,255,240,6,0,6,0,6,0,6,0,6,0,4,7,7, + 6,1,252,96,240,240,48,32,64,128,6,2,2,8,1,6, + 252,252,3,3,3,7,2,0,224,224,224,7,18,18,8,0, + 0,6,6,6,12,12,12,24,24,24,48,48,48,96,96,96, + 192,192,192,11,18,36,13,1,0,14,0,17,0,49,128,32, + 128,96,192,96,192,224,224,224,224,224,224,224,224,224,224,224, + 224,96,192,96,192,32,128,49,128,17,0,14,0,8,18,18, + 13,3,0,8,56,248,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,11,18,36,13,1,0,31,0,113,192,64, + 192,224,224,224,224,64,224,0,192,1,192,1,128,3,0,6, + 0,12,0,24,0,48,32,96,32,192,96,255,224,255,224,11, + 18,36,13,1,0,31,0,99,128,193,192,225,192,225,192,65, + 128,1,128,3,0,31,0,1,128,0,192,0,224,64,224,224, + 224,224,192,193,192,97,128,30,0,12,18,36,13,0,0,0, + 64,0,192,1,192,3,192,6,192,12,192,8,192,24,192,48, + 192,96,192,64,192,192,192,128,192,255,240,0,192,0,192,0, + 192,3,240,11,18,36,13,1,0,127,192,127,128,64,0,64, + 0,64,0,64,0,64,0,95,0,99,128,0,192,0,192,0, + 224,96,224,224,224,224,192,64,192,97,128,31,0,11,18,36, + 13,1,0,15,128,56,224,32,224,96,96,96,0,96,0,224, + 0,239,0,241,128,224,192,224,192,224,224,224,224,96,224,96, + 192,96,192,49,128,31,0,10,18,36,13,2,0,255,192,255, + 192,128,128,129,128,1,0,3,0,3,0,2,0,6,0,6, + 0,4,0,12,0,12,0,12,0,28,0,28,0,28,0,8, + 0,11,18,36,13,1,0,31,0,49,128,32,128,96,192,96, + 192,112,192,57,128,63,0,31,0,55,128,97,192,192,224,192, + 96,192,96,192,96,96,192,113,192,31,0,11,18,36,13,1, + 0,31,0,49,128,112,192,96,192,224,224,224,224,224,224,96, + 224,112,224,49,224,30,224,0,224,0,192,0,192,193,192,225, + 128,227,128,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,7,2,252,224,224,224, + 0,0,0,0,0,0,96,240,240,48,32,64,128,12,12,24, + 14,1,1,0,48,0,240,3,192,15,0,60,0,240,0,240, + 0,60,0,15,0,3,192,0,240,0,48,12,6,12,15,1, + 4,255,240,255,240,0,0,0,0,255,240,255,240,12,12,24, + 14,1,1,192,0,240,0,60,0,15,0,3,192,0,240,0, + 240,3,192,15,0,60,0,240,0,192,0,10,18,36,12,1, + 0,30,0,99,128,193,192,225,192,225,192,1,192,3,128,7, + 0,14,0,12,0,24,0,16,0,16,0,0,0,0,0,56, + 0,56,0,56,0,17,18,54,19,1,0,1,248,0,6,6, + 0,24,3,0,16,1,128,96,216,128,99,56,128,198,24,128, + 198,24,128,204,24,128,204,49,0,204,49,0,204,114,0,196, + 180,0,195,56,0,96,1,0,96,2,0,24,12,0,31,248, + 0,19,18,54,19,0,0,0,64,0,0,96,0,0,224,0, + 0,240,0,1,48,0,1,56,0,2,24,0,2,28,0,4, + 12,0,4,12,0,8,14,0,15,254,0,16,6,0,16,7, + 0,32,3,0,32,3,128,96,3,128,248,15,224,14,18,36, + 18,2,0,255,192,48,112,48,48,48,56,48,56,48,56,48, + 48,48,96,63,240,48,56,48,24,48,28,48,28,48,28,48, + 28,48,24,48,56,255,224,15,18,36,17,1,0,7,242,28, + 30,56,6,48,2,112,2,96,2,224,0,224,0,224,0,224, + 0,224,0,224,0,96,2,112,2,48,6,56,4,28,28,7, + 240,16,18,36,20,2,0,255,224,48,56,48,12,48,12,48, + 6,48,6,48,7,48,7,48,7,48,7,48,7,48,7,48, + 6,48,6,48,12,48,12,48,56,255,224,13,18,36,16,1, + 0,255,248,48,56,48,24,48,8,48,8,48,136,48,128,49, + 128,63,128,49,128,48,128,48,128,48,8,48,8,48,8,48, + 24,48,56,255,248,13,18,36,16,1,0,255,248,48,56,48, + 24,48,8,48,8,48,136,48,128,49,128,63,128,49,128,48, + 128,48,128,48,0,48,0,48,0,48,0,48,0,252,0,17, + 18,54,18,1,0,7,250,0,28,30,0,48,6,0,48,6, + 0,112,2,0,96,2,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,63,128,224,6,0,96,6,0,112,6,0,48, + 6,0,48,14,0,28,30,0,7,242,0,17,18,54,21,2, + 0,252,31,128,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,63,254,0,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,252,31,128,6,18,18,9,2,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,11, + 18,36,14,1,0,7,224,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,97,128,241,128,225, + 128,193,128,193,128,99,0,62,0,18,18,54,20,2,0,252, + 127,0,48,28,0,48,24,0,48,48,0,48,96,0,48,192, + 0,49,128,0,51,0,0,55,0,0,63,128,0,57,192,0, + 48,224,0,48,112,0,48,56,0,48,28,0,48,14,0,48, + 7,0,252,31,192,13,18,36,16,2,0,254,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,8,48,8,48,8,48,24,48,56,255,248,20, + 18,54,23,1,0,252,1,240,60,1,192,30,3,192,22,2, + 192,23,2,192,19,2,192,19,4,192,19,132,192,17,132,192, + 17,136,192,17,200,192,16,200,192,16,208,192,16,240,192,16, + 112,192,16,96,192,56,96,192,254,35,240,19,18,54,21,1, + 0,248,15,224,60,3,128,28,1,0,30,1,0,23,1,0, + 19,129,0,17,129,0,16,193,0,16,225,0,16,97,0,16, + 49,0,16,57,0,16,29,0,16,15,0,16,7,0,16,7, + 0,56,3,0,254,1,0,17,18,54,19,1,0,7,240,0, + 28,28,0,48,6,0,48,6,0,112,7,0,96,3,0,224, + 3,128,224,3,128,224,3,128,224,3,128,224,3,128,224,3, + 128,96,3,0,112,7,0,48,6,0,48,6,0,28,28,0, + 7,240,0,13,18,36,16,2,0,255,192,48,112,48,48,48, + 56,48,56,48,56,48,56,48,48,48,112,63,192,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,17,22,66, + 19,1,252,7,240,0,28,28,0,48,6,0,48,6,0,112, + 7,0,96,3,0,224,3,128,224,3,128,224,3,128,224,3, + 128,224,3,128,227,195,128,100,99,0,104,39,0,56,54,0, + 56,22,0,28,28,0,7,248,0,0,24,128,0,12,128,0, + 15,0,0,6,0,15,18,36,18,2,0,255,192,48,112,48, + 48,48,56,48,56,48,56,48,48,48,96,63,128,49,192,48, + 224,48,96,48,112,48,112,48,50,48,50,48,60,252,28,13, + 18,36,15,1,0,31,144,112,240,64,48,192,48,192,16,224, + 16,120,0,62,0,15,128,3,224,0,240,0,56,128,24,128, + 24,192,24,192,48,240,112,159,192,14,18,36,17,1,0,255, + 252,227,28,195,12,131,4,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,224,16,18,36,19,2,0,252,31,48,14,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,56,12,24,8,30,56,7,224,18,18,54, + 18,0,0,254,7,192,56,1,0,24,1,0,28,2,0,28, + 2,0,12,2,0,14,4,0,6,4,0,7,8,0,7,8, + 0,3,8,0,3,144,0,1,144,0,1,160,0,1,224,0, + 0,224,0,0,192,0,0,64,0,25,18,72,25,0,0,254, + 63,143,128,56,14,2,0,56,14,2,0,24,14,2,0,24, + 22,4,0,28,23,4,0,12,19,4,0,12,19,4,0,14, + 35,136,0,6,33,136,0,6,33,136,0,7,65,208,0,3, + 64,208,0,3,192,240,0,3,128,240,0,1,128,96,0,1, + 128,96,0,0,128,32,0,19,18,54,19,0,0,127,143,128, + 30,6,0,14,4,0,7,8,0,7,16,0,3,144,0,1, + 160,0,1,192,0,0,224,0,0,224,0,1,112,0,1,56, + 0,2,28,0,4,28,0,4,14,0,8,7,0,24,7,128, + 252,31,224,16,18,36,17,0,0,252,63,56,12,24,8,28, + 24,12,16,14,48,6,32,7,96,3,64,3,192,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,7,224,14,18,36, + 16,1,0,127,252,112,24,96,56,64,48,64,96,0,224,0, + 192,1,128,3,128,3,0,6,0,14,0,28,0,24,4,48, + 4,112,12,96,28,255,252,5,21,21,7,2,253,248,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,248,10,18,36,11,0,0,192,0,192,0,96,0,96,0, + 48,0,48,0,24,0,24,0,12,0,12,0,6,0,6,0, + 3,0,3,0,1,128,1,128,0,192,0,192,5,21,21,7, + 0,253,248,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,248,10,10,20,12,1,8,12,0,12, + 0,30,0,30,0,51,0,51,0,97,128,97,128,192,192,192, + 192,12,2,4,12,0,253,255,240,255,240,5,4,4,8,1, + 14,192,224,48,8,12,12,24,13,1,0,31,0,113,128,112, + 192,96,192,0,192,7,192,56,192,96,192,192,192,192,192,225, + 240,126,96,13,18,36,14,0,0,240,0,48,0,48,0,48, + 0,48,0,48,0,55,192,60,112,56,48,48,56,48,24,48, + 24,48,24,48,24,48,56,56,48,60,112,39,192,10,12,24, + 12,1,0,31,0,113,192,97,192,224,192,192,0,192,0,192, + 0,192,0,224,0,96,64,112,192,31,128,13,18,36,14,1, + 0,1,224,0,96,0,96,0,96,0,96,0,96,30,96,113, + 224,96,224,224,96,192,96,192,96,192,96,192,96,224,96,96, + 224,113,224,31,120,11,12,24,13,1,0,31,0,113,192,96, + 192,224,224,192,96,255,224,192,0,192,0,224,0,96,64,112, + 192,31,128,9,18,36,8,1,0,15,0,25,128,49,128,48, + 0,48,0,48,0,252,0,48,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,252,0,13,17,34, + 12,0,251,31,56,49,216,96,192,96,192,96,192,96,192,49, + 128,31,0,48,0,96,0,63,0,31,192,96,224,192,96,192, + 96,224,192,127,128,14,18,36,14,0,0,240,0,48,0,48, + 0,48,0,48,0,48,0,49,192,55,224,56,112,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,6, + 18,18,8,1,0,48,48,48,0,0,0,240,48,48,48,48, + 48,48,48,48,48,48,252,7,23,23,8,254,251,6,6,6, + 0,0,0,30,6,6,6,6,6,6,6,6,6,6,6,6, + 6,198,204,120,14,18,36,15,1,0,240,0,48,0,48,0, + 48,0,48,0,48,0,51,240,48,192,49,128,51,0,54,0, + 62,0,55,0,51,128,49,192,48,224,48,112,252,252,6,18, + 18,8,1,0,240,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,252,22,12,36,22,0,0,241,193,192,55, + 231,224,56,120,112,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,252,252, + 14,12,24,14,0,0,241,192,55,224,56,112,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,252,252,11,12, + 24,13,1,0,31,0,113,192,96,192,224,224,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,13,17,34,14, + 0,251,247,192,60,112,56,48,48,56,48,24,48,24,48,24, + 48,24,48,56,56,48,60,112,55,192,48,0,48,0,48,0, + 48,0,252,0,13,17,34,14,1,251,30,32,113,224,96,224, + 224,96,192,96,192,96,192,96,192,96,224,96,96,224,113,224, + 31,96,0,96,0,96,0,96,0,96,1,248,10,12,24,10, + 0,0,243,128,53,192,56,192,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,252,0,9,12,24,11,1,0, + 61,0,103,0,195,0,193,0,224,0,124,0,31,0,3,128, + 129,128,193,128,227,0,190,0,8,16,16,10,1,0,16,16, + 48,112,255,48,48,48,48,48,48,48,49,49,57,30,14,12, + 24,14,0,0,240,240,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,56,112,31,176,14,60,15,12,24,13, + 255,0,252,126,48,24,48,16,56,48,24,32,28,96,12,64, + 14,192,6,128,7,128,3,0,3,0,19,12,36,17,255,0, + 252,243,224,48,96,128,48,96,128,48,112,128,56,177,0,24, + 177,0,24,177,0,29,58,0,13,26,0,13,26,0,14,28, + 0,6,12,0,13,12,24,12,0,0,248,240,112,96,56,192, + 25,128,15,0,7,0,7,0,13,128,24,192,48,224,96,112, + 240,248,13,17,34,12,255,251,120,56,48,16,56,32,24,32, + 24,96,28,64,12,192,14,128,6,128,7,128,3,0,3,0, + 2,0,2,0,196,0,236,0,120,0,9,12,24,11,1,0, + 255,128,195,128,135,0,134,0,12,0,28,0,24,0,48,0, + 112,128,224,128,193,128,255,128,6,21,21,8,1,253,12,16, + 48,48,48,48,48,48,48,32,192,32,48,48,48,48,48,48, + 48,16,12,2,18,18,15,6,0,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,21,21,7,1, + 253,192,32,48,48,48,48,48,48,48,16,12,16,48,48,48, + 48,48,48,48,32,192,12,4,8,14,1,6,60,48,126,112, + 231,224,195,192,255}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=31 h=32 x= 9 y=19 dx=32 dy= 0 ascent=32 len=128 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =32 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24[11729] U8G_SECTION(".progmem.u8g_font_ncenR24") = { + 0,39,50,250,245,25,5,159,15,28,32,255,249,32,249,25, + 249,0,0,0,9,1,1,4,25,25,10,3,0,96,240,240, + 240,240,240,240,96,96,96,96,96,96,96,96,96,96,96,0, + 0,0,96,240,240,96,9,8,16,13,2,17,227,128,227,128, + 227,128,227,128,65,0,65,0,65,0,65,0,16,23,46,19, + 2,0,3,12,3,12,3,12,7,28,6,24,6,24,6,24, + 127,255,127,255,6,24,14,56,12,56,12,48,255,254,255,254, + 12,48,12,48,28,112,28,112,24,96,24,96,24,96,24,96, + 14,31,62,18,2,252,2,0,2,0,2,0,15,192,63,240, + 114,112,226,56,194,120,194,120,194,48,194,0,226,0,250,0, + 127,0,63,192,31,240,3,248,2,124,2,60,98,28,242,12, + 242,12,226,28,194,24,226,120,127,240,31,192,2,0,2,0, + 2,0,2,0,24,25,75,27,1,255,3,128,32,15,192,224, + 28,227,192,56,127,192,56,97,128,112,97,128,112,99,0,240, + 99,0,224,102,0,224,196,0,224,204,0,225,136,28,115,24, + 126,62,16,227,0,49,195,0,99,195,0,99,131,0,199,131, + 0,199,3,1,135,6,1,135,6,3,7,12,2,3,152,6, + 1,240,4,0,0,22,25,75,27,2,0,1,248,0,7,188, + 0,6,28,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,15,112,0,7,224,0,7,128,0,15, + 199,252,59,193,240,113,224,224,113,240,192,224,240,192,224,249, + 128,224,125,128,240,63,4,240,30,4,248,15,12,126,63,248, + 63,243,248,31,193,224,3,8,8,7,2,17,224,224,224,224, + 64,64,64,64,8,29,29,11,2,252,1,7,6,12,24,48, + 48,48,96,96,96,96,224,224,224,224,224,96,96,96,96,48, + 48,16,24,12,6,7,3,8,29,29,11,2,252,192,224,96, + 48,24,8,12,12,6,6,6,6,7,7,7,7,7,6,6, + 6,6,12,12,28,24,48,96,192,192,12,14,28,17,2,11, + 6,0,6,0,6,0,198,112,230,112,127,224,31,128,31,0, + 127,192,230,112,198,112,6,0,6,0,6,0,16,17,34,20, + 2,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 255,255,255,255,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,5,10,10,9,2,250,112,248,248,120,24,24, + 48,96,224,128,8,3,3,11,1,7,255,255,255,4,4,4, + 9,2,0,96,240,240,96,10,25,50,9,255,0,0,192,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,6, + 0,6,0,6,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,96,0,192,0,16, + 24,48,18,2,0,3,192,15,240,28,56,24,24,56,28,120, + 30,112,14,240,15,240,15,240,15,240,15,240,15,240,15,240, + 15,240,15,240,15,240,15,112,14,120,30,56,28,24,24,28, + 56,15,240,3,192,13,24,48,18,3,0,3,0,7,0,255, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,15,128,255,248,15,24,48,18,1, + 0,7,224,31,248,56,28,96,30,112,14,120,14,120,14,120, + 14,48,30,0,28,0,28,0,56,0,120,0,112,0,224,1, + 192,3,128,7,2,14,2,28,6,56,6,127,254,255,254,255, + 254,15,24,48,18,1,0,7,224,31,248,56,56,112,28,120, + 28,120,28,48,28,0,28,0,56,0,112,1,224,15,240,0, + 248,0,60,0,28,0,30,96,14,240,14,240,14,240,30,224, + 28,120,124,63,240,15,192,16,24,48,18,1,0,0,48,0, + 48,0,112,0,240,1,240,1,240,3,112,6,112,6,112,12, + 112,24,112,24,112,48,112,96,112,96,112,192,112,255,255,255, + 255,0,112,0,112,0,112,0,112,0,248,3,254,14,24,48, + 18,2,0,56,8,63,248,63,240,63,224,48,0,48,0,32, + 0,96,0,99,192,111,240,124,120,112,56,96,60,0,28,0, + 28,0,28,96,28,240,28,240,28,240,60,224,56,112,120,127, + 240,31,128,15,24,48,18,1,0,3,240,15,252,28,62,56, + 30,56,30,48,12,112,0,112,0,112,0,241,224,247,248,254, + 60,252,28,248,30,240,14,240,14,240,14,112,14,112,14,112, + 30,56,28,56,60,31,240,7,192,13,24,48,18,3,0,255, + 248,255,248,255,248,192,16,192,48,128,32,128,96,128,64,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,7, + 0,7,0,7,0,15,0,15,0,15,0,15,0,6,0,15, + 24,48,18,1,0,7,224,31,248,60,56,56,28,112,28,112, + 12,112,12,120,24,60,56,63,112,31,224,7,240,7,248,29, + 252,56,124,112,30,112,30,224,14,224,14,224,14,112,28,120, + 60,63,248,15,224,15,24,48,18,1,0,15,192,63,240,120, + 120,112,56,240,60,224,28,224,28,224,30,224,30,240,30,240, + 62,120,126,120,126,63,222,31,158,0,30,0,28,0,28,96, + 56,240,56,240,112,241,224,127,192,63,0,4,16,16,9,3, + 0,96,240,240,96,0,0,0,0,0,0,0,0,96,240,240, + 96,5,21,21,9,1,251,48,120,120,48,0,0,0,0,0, + 0,0,0,48,120,120,56,24,16,48,96,192,16,18,36,20, + 2,255,0,1,0,7,0,31,0,124,1,240,7,192,31,0, + 124,0,240,0,240,0,124,0,31,0,7,192,1,240,0,124, + 0,31,0,7,0,1,16,8,16,20,2,4,255,255,255,255, + 0,0,0,0,0,0,0,0,255,255,255,255,16,18,36,20, + 2,255,128,0,224,0,248,0,62,0,15,128,3,224,0,248, + 0,62,0,15,0,15,0,62,0,248,3,224,15,128,62,0, + 248,0,224,0,128,0,12,25,50,14,1,0,63,128,115,224, + 192,224,192,240,224,112,224,112,224,112,0,240,0,240,1,224, + 1,192,3,128,3,0,6,0,4,0,4,0,12,0,12,0, + 0,0,0,0,0,0,12,0,30,0,30,0,12,0,22,25, + 75,25,1,0,0,254,0,3,255,128,15,135,192,30,0,224, + 28,0,112,48,0,56,48,0,24,96,251,152,97,207,140,227, + 143,140,199,135,140,199,7,12,207,7,12,207,15,8,206,15, + 24,206,14,24,206,30,48,102,62,96,103,126,192,51,231,152, + 56,0,56,28,0,112,15,129,224,7,255,128,0,254,0,23, + 25,75,23,0,0,0,16,0,0,56,0,0,56,0,0,120, + 0,0,124,0,0,124,0,0,220,0,0,222,0,1,158,0, + 1,142,0,1,143,0,3,7,0,3,7,128,3,7,128,6, + 3,128,7,255,192,7,255,192,12,1,192,12,1,224,12,1, + 224,24,0,240,24,0,240,56,0,248,124,1,252,254,3,254, + 20,25,75,23,1,0,255,254,0,63,255,128,14,7,192,14, + 1,192,14,1,224,14,1,224,14,1,224,14,1,224,14,1, + 192,14,1,192,14,3,128,15,255,0,15,252,0,14,15,128, + 14,3,192,14,1,224,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,240,14,1,224,14,3,224,63,255,192,255,255, + 0,20,25,75,22,1,0,1,252,96,7,255,96,14,3,224, + 28,1,224,60,0,224,56,0,224,120,0,96,120,0,96,240, + 0,32,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,48,120,0,48,120,0,48, + 120,0,96,60,0,96,28,0,192,15,3,128,7,255,0,1, + 252,0,22,25,75,25,1,0,255,254,0,63,255,192,14,3, + 224,14,0,240,14,0,112,14,0,120,14,0,120,14,0,60, + 14,0,60,14,0,60,14,0,60,14,0,60,14,0,60,14, + 0,60,14,0,60,14,0,60,14,0,60,14,0,60,14,0, + 56,14,0,120,14,0,112,14,0,224,14,3,224,63,255,192, + 255,254,0,20,25,75,24,1,0,255,255,240,63,255,240,14, + 1,240,14,0,112,14,0,112,14,0,48,14,4,48,14,4, + 16,14,4,16,14,12,0,14,60,0,15,252,0,15,252,0, + 14,60,0,14,12,0,14,12,0,14,4,16,14,4,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 240,255,255,240,20,25,75,22,1,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,48,14,0,48,14,0,16,14, + 4,16,14,4,16,14,12,0,14,12,0,14,60,0,15,252, + 0,15,252,0,14,28,0,14,12,0,14,4,0,14,4,0, + 14,4,0,14,0,0,14,0,0,14,0,0,14,0,0,63, + 128,0,255,224,0,24,25,75,24,1,0,1,254,48,7,255, + 176,15,3,240,30,0,240,60,0,112,56,0,112,120,0,48, + 112,0,48,112,0,16,240,0,16,240,0,0,240,0,0,240, + 0,0,240,0,0,240,7,255,240,0,248,240,0,112,112,0, + 112,112,0,112,120,0,112,56,0,240,28,0,240,15,1,176, + 7,255,48,1,254,16,25,25,100,27,1,0,255,227,255,128, + 63,128,254,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,15,255,248,0,15,255,248,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,63,128,254,0,255,227,255,128, + 11,25,50,13,1,0,255,224,63,128,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,63,128,255,224,17,25,75,18,0,0,3,255, + 128,0,124,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,112,56, + 0,248,56,0,248,56,0,248,56,0,240,56,0,192,120,0, + 224,112,0,127,240,0,31,192,0,25,25,100,25,1,0,255, + 227,255,0,63,129,252,0,14,0,240,0,14,0,224,0,14, + 1,192,0,14,1,128,0,14,3,0,0,14,6,0,0,14, + 14,0,0,14,28,0,0,14,56,0,0,14,124,0,0,14, + 254,0,0,15,222,0,0,15,143,0,0,15,7,128,0,14, + 7,192,0,14,3,192,0,14,1,224,0,14,1,240,0,14, + 0,240,0,14,0,120,0,14,0,124,0,63,0,62,0,255, + 192,255,128,20,25,75,22,1,0,255,224,0,63,128,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,16,14,0,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 224,255,255,224,29,25,100,30,0,0,127,128,15,248,31,128, + 15,192,15,128,15,128,15,192,15,128,13,192,27,128,13,192, + 27,128,13,224,19,128,12,224,51,128,12,224,51,128,12,240, + 35,128,12,112,99,128,12,112,99,128,12,120,99,128,12,56, + 195,128,12,56,195,128,12,60,195,128,12,28,131,128,12,29, + 131,128,12,31,131,128,12,31,3,128,12,15,3,128,12,15, + 3,128,12,14,3,128,63,6,15,224,255,198,63,248,26,25, + 100,28,1,0,255,0,255,192,31,0,63,0,15,128,12,0, + 15,192,12,0,15,192,12,0,13,224,12,0,13,240,12,0, + 12,248,12,0,12,120,12,0,12,124,12,0,12,62,12,0, + 12,30,12,0,12,31,12,0,12,15,140,0,12,7,140,0, + 12,7,204,0,12,3,204,0,12,1,236,0,12,0,236,0, + 12,0,252,0,12,0,124,0,12,0,60,0,12,0,60,0, + 63,0,28,0,255,192,12,0,22,25,75,24,1,0,1,254, + 0,7,255,128,15,3,192,28,0,224,60,0,240,56,0,112, + 120,0,120,112,0,56,240,0,60,240,0,60,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,240,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,28,0,224, + 15,3,192,7,255,128,1,254,0,20,25,75,22,1,0,255, + 254,0,63,255,128,14,7,192,14,1,224,14,0,240,14,0, + 240,14,0,112,14,0,112,14,0,240,14,0,240,14,1,224, + 14,7,192,15,255,128,15,254,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,63,128,0,255,224,0,23,31,93,24,1,250, + 0,254,0,3,255,128,15,1,224,30,0,240,60,0,120,56, + 0,56,120,0,60,112,0,28,240,0,30,240,0,30,224,0, + 14,224,0,14,224,0,14,224,0,14,240,0,30,240,0,30, + 112,124,28,121,222,60,121,135,56,61,3,112,29,3,112,31, + 3,224,15,131,192,3,255,128,0,255,192,0,3,198,0,1, + 198,0,1,228,0,1,252,0,0,248,0,0,112,21,25,75, + 23,1,0,255,254,0,63,255,128,14,7,192,14,1,192,14, + 1,224,14,0,224,14,0,224,14,1,224,14,1,224,14,1, + 192,14,3,192,14,15,0,15,252,0,15,254,0,14,15,0, + 14,7,0,14,7,128,14,3,128,14,3,128,14,3,136,14, + 3,136,14,3,136,14,3,216,63,129,240,255,225,224,17,25, + 75,20,2,0,15,241,0,63,251,0,112,31,0,96,7,0, + 224,7,0,224,3,0,224,1,0,240,1,0,240,0,0,126, + 0,0,127,224,0,31,252,0,7,254,0,0,127,0,0,15, + 128,128,7,128,128,3,128,192,3,128,192,3,128,192,3,128, + 224,7,128,240,7,0,248,14,0,223,252,0,135,240,0,19, + 25,75,21,1,0,255,255,224,255,255,224,240,227,224,224,224, + 224,192,224,96,192,224,96,128,224,32,128,224,32,128,224,32, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,3,248,0,15,254,0, + 26,25,100,26,0,0,255,224,255,192,63,128,63,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,15,0,24,0,7,0,24,0,7,128,48,0,3,224, + 240,0,1,255,192,0,0,127,0,0,23,25,75,23,0,0, + 255,195,254,62,0,248,30,0,112,30,0,112,14,0,96,15, + 0,96,15,0,64,7,0,192,7,128,192,7,128,128,3,129, + 128,3,193,128,3,193,0,1,195,0,1,227,0,1,226,0, + 0,230,0,0,246,0,0,244,0,0,124,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,16,0,31,25,100,31,0, + 0,255,31,241,254,126,7,192,124,60,3,128,56,28,3,128, + 48,30,3,192,48,30,3,192,96,14,3,192,96,14,3,224, + 96,15,3,224,96,7,6,224,192,7,6,224,192,7,132,240, + 192,7,140,112,192,3,140,113,128,3,140,121,128,3,200,57, + 128,1,216,57,0,1,248,63,0,1,248,31,0,0,240,31, + 0,0,240,30,0,0,240,30,0,0,224,14,0,0,96,12, + 0,0,96,12,0,23,25,75,22,0,0,255,199,252,63,1, + 240,31,0,224,15,1,192,15,129,128,7,131,128,3,195,0, + 3,230,0,1,238,0,0,252,0,0,248,0,0,120,0,0, + 124,0,0,124,0,0,254,0,1,223,0,1,143,0,3,135, + 128,3,7,128,6,3,192,14,3,224,12,1,224,28,0,240, + 62,0,248,255,135,254,23,25,75,23,0,0,255,131,254,126, + 0,248,62,0,112,30,0,96,15,0,224,15,0,192,7,129, + 128,7,193,128,3,195,0,3,227,0,1,230,0,0,246,0, + 0,252,0,0,124,0,0,120,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,254,0,3,255,128,17,25,75,19,1,0,127,255,128, + 127,255,128,120,15,0,112,15,0,96,30,0,96,62,0,96, + 60,0,64,124,0,64,120,0,0,240,0,0,240,0,1,224, + 0,3,224,0,3,192,0,7,128,0,7,128,128,15,0,128, + 31,0,128,30,1,128,62,1,128,60,1,128,120,3,128,120, + 7,128,255,255,128,255,255,128,7,29,29,11,3,252,254,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,254,15,25,50,20,2, + 0,224,0,112,0,112,0,56,0,56,0,28,0,28,0,14, + 0,14,0,7,0,7,0,3,128,3,128,3,128,1,192,1, + 192,0,224,0,224,0,112,0,112,0,56,0,56,0,28,0, + 28,0,14,7,29,29,11,1,252,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,254,16,13,26,20,2,12,3,192,3,192, + 7,224,7,224,14,112,14,112,28,56,28,56,56,28,56,28, + 112,14,112,14,224,7,16,2,4,16,0,252,255,255,255,255, + 7,6,6,11,1,17,192,224,112,56,12,6,16,16,32,17, + 1,0,15,192,63,240,120,120,112,56,96,56,0,56,1,248, + 15,248,60,56,112,56,224,56,224,56,224,120,241,253,127,159, + 62,14,15,25,50,17,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,57,224,59,248,62,28, + 60,28,60,14,56,14,56,14,56,14,56,14,56,14,56,14, + 60,14,60,28,62,28,55,248,33,224,12,16,32,14,1,0, + 7,128,31,224,56,112,112,240,112,240,224,96,224,0,224,0, + 224,0,224,0,224,0,112,16,112,48,56,96,63,192,15,128, + 16,25,50,18,1,0,0,12,0,124,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,7,156,31,220,56,124,112,60, + 112,60,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,60,120,124,31,220,7,159,14,16,32,16,1,0,7,192, + 31,240,56,120,112,56,96,28,224,28,224,28,255,252,224,0, + 224,0,224,0,240,4,112,12,120,56,63,240,15,192,14,25, + 50,11,0,0,1,248,7,28,14,28,12,28,28,8,28,0, + 28,0,28,0,28,0,255,192,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,255,192,16,23,46,17,1,249,7,159,31,251, + 56,115,112,56,112,56,112,56,112,56,112,56,56,112,31,224, + 55,128,96,0,96,0,127,224,127,248,63,252,48,62,96,14, + 224,14,224,14,248,60,127,248,15,192,19,25,75,20,0,0, + 12,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,112,0,29,252, + 0,31,30,0,30,14,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,255,63,224,9,24,48,10,1, + 0,24,0,60,0,60,0,24,0,0,0,0,0,0,0,0, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,255, + 128,9,31,62,10,254,249,3,0,7,128,7,128,3,0,0, + 0,0,0,0,0,0,0,3,128,31,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,67,128,227,0,227, + 0,230,0,124,0,19,25,75,20,0,0,12,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,127,128,28,30,0,28,24,0,28, + 48,0,28,96,0,28,192,0,29,192,0,31,224,0,30,240, + 0,28,120,0,28,60,0,28,28,0,28,14,0,28,15,0, + 28,7,128,255,31,224,9,25,50,11,1,0,12,0,28,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,27,16, + 64,27,0,0,28,240,120,0,253,252,254,0,31,29,142,0, + 30,15,7,0,30,15,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 255,63,159,224,19,16,48,19,0,0,28,120,0,253,254,0, + 31,142,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,255,31,224,14,16,32,16,1,0, + 7,128,31,224,56,112,112,56,112,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,112,56,56,112,31,224,7,128, + 16,23,46,19,1,249,25,240,251,252,62,30,60,14,60,7, + 56,7,56,7,56,7,56,7,56,7,56,7,60,14,60,14, + 62,28,59,252,57,240,56,0,56,0,56,0,56,0,56,0, + 124,0,255,0,16,23,46,17,1,249,7,196,31,236,56,60, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,60,56,124,63,220,15,156,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,14,16,32,15,0,0,28,120, + 253,252,31,60,30,60,30,24,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,11,16, + 32,15,2,0,30,192,127,192,225,192,192,192,192,192,240,64, + 254,0,127,128,63,192,7,224,128,224,192,96,192,96,224,224, + 255,192,159,0,12,23,46,13,0,0,4,0,4,0,12,0, + 12,0,28,0,28,0,60,0,255,224,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,16,28,16,28,48, + 28,48,30,96,15,224,7,192,18,16,48,20,0,0,28,7, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 15,0,28,15,0,30,63,0,15,247,192,7,199,0,17,16, + 48,17,0,0,255,31,128,124,7,0,60,6,0,30,6,0, + 30,12,0,14,12,0,15,8,0,7,24,0,7,24,0,7, + 176,0,3,176,0,3,224,0,1,224,0,1,224,0,0,192, + 0,0,192,0,24,16,48,24,0,0,254,127,63,120,60,14, + 56,28,12,60,28,28,28,30,24,28,30,24,14,54,16,14, + 39,48,15,103,48,7,103,96,7,67,96,3,195,192,3,195, + 192,3,129,192,1,129,128,1,129,128,16,16,32,19,1,0, + 255,127,60,28,30,24,14,48,15,48,7,96,3,192,3,192, + 1,224,3,224,6,112,12,120,28,56,56,60,120,30,254,127, + 18,23,69,20,1,249,255,31,192,60,7,0,60,6,0,28, + 6,0,30,12,0,14,12,0,15,8,0,7,24,0,7,24, + 0,7,176,0,3,176,0,3,224,0,1,224,0,1,224,0, + 0,192,0,0,192,0,1,128,0,1,128,0,99,0,0,243, + 0,0,230,0,0,252,0,0,112,0,0,13,16,32,15,1, + 0,127,248,120,120,96,240,96,224,65,224,67,192,3,128,7, + 128,15,0,14,0,30,8,60,8,56,24,120,56,240,248,255, + 248,6,30,30,11,3,252,12,28,56,48,48,48,48,48,48, + 48,48,48,48,112,224,224,112,48,48,48,48,48,48,48,48, + 48,48,56,28,12,2,25,25,20,9,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,6,30,30,11,2,252,192,224,112,48,48,48, + 48,48,48,48,48,48,48,56,28,28,56,48,48,48,48,48, + 48,48,48,48,48,112,224,192,16,4,8,20,2,6,30,3, + 127,135,225,254,192,120,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,9,1,1,4,25,25, + 10,3,249,96,240,240,96,0,0,0,96,96,96,96,96,96, + 96,96,96,96,96,240,240,240,240,240,240,96,13,24,48,18, + 2,252,0,24,0,24,0,16,0,48,7,224,31,240,56,112, + 112,112,112,240,224,224,224,128,225,128,225,0,227,0,227,0, + 242,16,118,48,60,96,31,224,15,128,8,0,24,0,16,0, + 16,0,16,23,46,19,1,0,1,240,7,252,14,14,12,14, + 28,30,28,30,28,28,28,0,30,0,14,0,14,0,255,248, + 15,0,7,0,7,0,7,0,6,0,6,0,126,3,223,7, + 143,142,223,252,112,240,16,17,34,19,1,3,67,194,239,247, + 127,254,60,60,112,14,112,14,224,7,224,7,224,7,224,7, + 224,7,112,14,112,14,60,60,127,254,239,247,3,192,17,23, + 69,19,0,0,255,31,128,60,15,0,28,6,0,30,6,0, + 14,4,0,15,12,0,7,8,0,7,24,0,3,144,0,3, + 176,0,1,224,0,0,224,0,7,252,0,7,252,0,0,224, + 0,0,224,0,7,252,0,7,252,0,0,224,0,0,224,0, + 0,224,0,7,248,0,7,248,0,2,25,25,20,9,0,192, + 192,192,192,192,192,192,192,192,192,0,0,0,0,0,192,192, + 192,192,192,192,192,192,192,192,12,30,60,17,2,251,15,0, + 57,192,48,192,113,192,113,192,112,128,56,0,60,0,30,0, + 15,0,63,128,99,192,193,224,192,240,192,112,224,48,240,48, + 120,48,60,96,31,192,15,0,7,128,3,192,1,192,16,224, + 56,224,56,224,48,192,57,192,15,0,9,3,6,11,1,19, + 99,0,247,128,99,0,24,25,75,25,0,0,0,126,0,3, + 255,128,7,129,224,14,0,112,24,0,56,48,0,28,48,127, + 12,96,227,134,97,129,134,67,128,134,195,0,131,199,0,3, + 199,0,3,199,0,3,199,0,3,195,0,3,67,128,6,97, + 193,134,97,227,140,48,126,12,24,0,24,28,0,112,7,1, + 224,3,255,128,0,126,0,11,14,28,11,0,11,63,0,99, + 128,97,128,99,128,15,128,121,128,225,128,193,128,227,128,125, + 224,0,0,0,0,0,0,255,192,11,11,22,14,1,2,4, + 32,12,96,24,192,49,128,115,128,231,0,115,128,49,128,24, + 192,12,96,4,32,16,9,18,20,1,3,255,255,255,255,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,8,3,3, + 11,1,7,255,255,255,24,24,72,25,0,0,0,126,0,3, + 255,192,15,1,240,28,0,56,56,0,24,51,252,12,96,199, + 14,96,195,6,64,195,6,192,195,3,192,198,3,192,252,3, + 192,204,3,192,206,3,192,198,3,96,199,6,96,195,6,96, + 195,142,51,227,204,24,0,24,28,0,112,7,0,224,3,255, + 192,0,126,0,10,2,4,11,0,19,255,192,255,192,9,9, + 18,13,2,14,62,0,119,0,193,128,193,128,128,128,193,128, + 193,128,119,0,62,0,16,16,32,20,2,0,1,128,1,128, + 1,128,1,128,255,255,255,255,1,128,1,128,1,128,1,128, + 1,128,0,0,0,0,0,0,255,255,255,255,10,14,28,11, + 0,9,63,0,115,128,97,128,113,128,113,128,1,128,3,0, + 7,0,14,0,28,0,56,64,112,64,255,192,255,192,9,14, + 28,11,1,9,62,0,99,0,113,128,97,128,1,128,7,0, + 62,0,7,0,3,0,97,128,225,128,195,128,231,0,126,0, + 7,6,6,11,2,19,6,14,28,56,96,192,17,23,69,20, + 1,249,56,14,0,248,62,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,30,0,56,30,0,60,126,0,63,238,0,47, + 143,128,32,0,0,32,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,32,0,0,17,30,90,20,2,251,15,255,128, + 63,255,128,120,198,0,240,198,0,240,198,0,240,198,0,240, + 198,0,240,198,0,240,198,0,240,198,0,120,198,0,124,198, + 0,63,198,0,15,198,0,0,198,0,0,198,0,0,198,0, + 0,198,0,0,198,0,0,198,0,0,198,0,0,198,0,0, + 198,0,0,198,0,0,198,0,0,198,0,0,198,0,0,198, + 0,3,255,128,3,255,128,4,4,4,9,2,6,96,240,240, + 96,6,7,7,11,1,249,16,32,120,12,12,140,120,8,14, + 14,11,1,9,56,248,24,24,24,24,24,24,24,24,24,24, + 24,255,11,14,28,10,255,11,14,0,59,128,96,192,224,224, + 192,96,192,96,224,224,96,192,59,128,14,0,0,0,0,0, + 0,0,127,192,11,11,22,14,1,2,132,0,198,0,99,0, + 49,128,57,192,28,224,57,192,49,128,99,0,198,0,132,0, + 25,23,92,28,1,0,56,0,24,0,248,0,48,0,24,0, + 48,0,24,0,96,0,24,0,192,0,24,0,128,0,24,1, + 128,0,24,3,0,0,24,6,0,0,24,6,4,0,24,12, + 12,0,24,24,28,0,24,24,60,0,255,48,108,0,0,96, + 76,0,0,192,204,0,0,193,140,0,1,131,12,0,3,3, + 255,128,3,0,12,0,6,0,12,0,12,0,12,0,8,0, + 63,0,25,23,92,28,1,0,56,0,24,0,248,0,48,0, + 24,0,32,0,24,0,96,0,24,0,192,0,24,1,128,0, + 24,1,128,0,24,3,0,0,24,6,0,0,24,6,62,0, + 24,12,99,0,24,24,193,128,24,48,193,128,255,48,225,128, + 0,96,195,0,0,192,7,0,0,192,14,0,1,128,28,0, + 3,0,56,0,3,0,112,128,6,0,224,128,12,1,255,128, + 8,1,255,128,25,23,92,28,1,0,62,0,8,0,99,0, + 24,0,113,128,48,0,97,128,48,0,1,128,96,0,7,0, + 192,0,30,1,128,0,7,1,128,0,3,131,0,0,97,134, + 4,0,225,134,12,0,195,140,28,0,231,24,60,0,126,48, + 108,0,0,48,204,0,0,96,204,0,0,193,140,0,0,195, + 12,0,1,131,255,128,3,0,12,0,6,0,12,0,6,0, + 12,0,12,0,63,0,12,25,50,14,1,249,3,0,7,128, + 7,128,3,0,0,0,0,0,0,0,3,0,3,0,2,0, + 2,0,6,0,12,0,28,0,56,0,120,0,112,0,240,0, + 224,112,224,112,224,112,240,48,112,48,60,224,31,192,23,32, + 96,23,0,0,6,0,0,7,0,0,3,128,0,1,192,0, + 0,96,0,0,48,0,0,0,0,0,16,0,0,56,0,0, + 56,0,0,120,0,0,124,0,0,124,0,0,220,0,0,222, + 0,1,158,0,1,142,0,1,143,0,3,7,0,3,7,128, + 3,7,128,6,3,128,7,255,192,7,255,192,12,1,192,12, + 1,224,12,1,224,24,0,240,24,0,240,56,0,248,124,1, + 252,254,3,254,23,32,96,23,0,0,0,1,128,0,3,128, + 0,7,0,0,14,0,0,24,0,0,48,0,0,0,0,0, + 16,0,0,56,0,0,56,0,0,120,0,0,124,0,0,124, + 0,0,220,0,0,222,0,1,158,0,1,142,0,1,143,0, + 3,7,0,3,7,128,3,7,128,6,3,128,7,255,192,7, + 255,192,12,1,192,12,1,224,12,1,224,24,0,240,24,0, + 240,56,0,248,124,1,252,254,3,254,23,31,93,23,0,0, + 0,24,0,0,60,0,0,126,0,0,195,0,1,129,128,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,30,90, + 23,0,0,0,241,128,1,255,0,3,30,0,0,0,0,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,30,90, + 23,0,0,1,134,0,3,207,0,1,134,0,0,0,0,0, + 0,0,0,16,0,0,56,0,0,56,0,0,120,0,0,124, + 0,0,124,0,0,220,0,0,222,0,1,158,0,1,142,0, + 1,143,0,3,7,0,3,7,128,3,7,128,6,3,128,7, + 255,192,7,255,192,12,1,192,12,1,224,12,1,224,24,0, + 240,24,0,240,56,0,248,124,1,252,254,3,254,23,32,96, + 23,0,0,0,120,0,0,204,0,0,132,0,0,132,0,0, + 204,0,0,120,0,0,0,0,0,16,0,0,56,0,0,56, + 0,0,120,0,0,124,0,0,124,0,0,220,0,0,222,0, + 1,158,0,1,142,0,1,143,0,3,7,0,3,7,128,3, + 7,128,6,3,128,7,255,192,7,255,192,12,1,192,12,1, + 224,12,1,224,24,0,240,24,0,240,56,0,248,124,1,252, + 254,3,254,30,25,100,32,0,0,1,255,255,252,0,127,255, + 252,0,29,192,124,0,25,192,28,0,25,192,28,0,49,192, + 12,0,49,192,140,0,97,192,132,0,97,193,132,0,193,193, + 128,0,193,195,128,1,129,255,128,1,129,255,128,3,1,195, + 128,3,255,193,128,7,255,193,128,6,1,192,132,12,1,192, + 132,12,1,192,4,24,1,192,12,24,1,192,12,48,1,192, + 28,48,1,192,124,120,7,255,252,254,31,255,252,20,32,96, + 22,1,249,0,248,96,3,255,96,15,7,224,28,1,224,60, + 0,224,56,0,224,120,0,96,120,0,96,240,0,96,240,0, + 32,240,0,0,240,0,0,240,0,0,240,0,0,240,0,0, + 240,0,0,240,0,48,120,0,48,120,0,32,120,0,96,60, + 0,96,28,0,192,14,1,128,7,207,0,1,254,0,0,32, + 0,0,64,0,0,240,0,0,24,0,0,24,0,1,24,0, + 0,240,0,20,32,96,24,1,0,3,0,0,3,128,0,1, + 192,0,0,224,0,0,48,0,0,24,0,0,0,0,255,255, + 240,63,255,240,14,1,240,14,0,112,14,0,112,14,0,48, + 14,4,48,14,4,16,14,4,16,14,12,0,14,60,0,15, + 252,0,15,252,0,14,60,0,14,12,0,14,12,0,14,4, + 16,14,4,16,14,0,16,14,0,48,14,0,48,14,0,112, + 14,1,240,63,255,240,255,255,240,20,32,96,24,1,0,0, + 1,128,0,3,128,0,7,0,0,14,0,0,24,0,0,48, + 0,0,0,0,255,255,240,63,255,240,14,1,240,14,0,112, + 14,0,112,14,0,48,14,4,48,14,4,16,14,4,16,14, + 12,0,14,60,0,15,252,0,15,252,0,14,60,0,14,12, + 0,14,12,0,14,4,16,14,4,16,14,0,16,14,0,48, + 14,0,48,14,0,112,14,1,240,63,255,240,255,255,240,20, + 32,96,24,1,0,0,48,0,0,120,0,0,252,0,1,134, + 0,3,3,0,0,0,0,0,0,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,112,14,0,48,14,4,48,14, + 4,16,14,4,16,14,12,0,14,60,0,15,252,0,15,252, + 0,14,60,0,14,12,0,14,12,0,14,4,16,14,4,16, + 14,0,16,14,0,48,14,0,48,14,0,112,14,1,240,63, + 255,240,255,255,240,20,30,90,24,1,0,0,198,0,1,239, + 0,0,198,0,0,0,0,0,0,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,112,14,0,48,14,4,48,14, + 4,16,14,4,16,14,12,0,14,60,0,15,252,0,15,252, + 0,14,60,0,14,12,0,14,12,0,14,4,16,14,4,16, + 14,0,16,14,0,48,14,0,48,14,0,112,14,1,240,63, + 255,240,255,255,240,11,32,64,13,1,0,96,0,112,0,56, + 0,28,0,6,0,3,0,0,0,255,224,63,128,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,63,128,255,224,11,32,64,13,1, + 0,0,192,1,192,3,128,7,0,12,0,24,0,0,0,255, + 224,63,128,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,63,128,255, + 224,11,31,62,13,1,0,6,0,15,0,31,128,48,192,96, + 96,0,0,255,224,63,128,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,63,128,255,224,11,30,60,13,1,0,49,128,123,192,49, + 128,0,0,0,0,255,224,63,128,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,63,128,255,224,22,25,75,24,1,0,255,252,0, + 255,255,128,30,7,192,14,1,224,14,0,240,14,0,112,14, + 0,120,14,0,120,14,0,56,14,0,60,14,0,60,14,0, + 60,127,224,60,127,224,60,14,0,60,14,0,60,14,0,60, + 14,0,56,14,0,120,14,0,120,14,0,112,14,0,224,14, + 1,192,255,255,128,255,254,0,26,30,120,28,1,0,0,30, + 48,0,0,63,224,0,0,99,192,0,0,0,0,0,0,0, + 0,0,255,0,255,192,31,0,63,0,15,128,12,0,15,192, + 12,0,15,192,12,0,13,224,12,0,13,240,12,0,12,248, + 12,0,12,120,12,0,12,124,12,0,12,62,12,0,12,30, + 12,0,12,31,12,0,12,15,140,0,12,7,140,0,12,7, + 204,0,12,3,204,0,12,1,236,0,12,0,236,0,12,0, + 252,0,12,0,124,0,12,0,60,0,12,0,60,0,63,0, + 28,0,255,192,12,0,22,32,96,24,1,0,6,0,0,7, + 0,0,3,128,0,1,192,0,0,96,0,0,48,0,0,0, + 0,1,254,0,7,255,128,15,3,192,28,0,224,60,0,240, + 56,0,112,120,0,120,120,0,120,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,56,120,0,120,120,0,120,56,0,112,60,0,240, + 28,0,224,15,3,192,7,255,128,1,254,0,22,32,96,24, + 1,0,0,3,0,0,7,0,0,14,0,0,28,0,0,48, + 0,0,96,0,0,0,0,1,254,0,7,255,128,15,3,192, + 28,0,224,60,0,240,56,0,112,120,0,120,120,0,120,240, + 0,60,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,56,120,0,120,120,0,120, + 56,0,112,60,0,240,28,0,224,15,3,192,7,255,128,1, + 254,0,22,31,93,24,1,0,0,48,0,0,120,0,0,252, + 0,1,134,0,3,3,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,22,30,90,24,1,0,0,241,128,1,255, + 0,3,30,0,0,0,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,22,30,90,24,1,0,0,198,0,1,239, + 0,0,198,0,0,0,0,0,0,0,1,254,0,7,255,128, + 15,3,192,28,0,224,60,0,240,56,0,112,120,0,120,120, + 0,120,240,0,60,240,0,60,240,0,60,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,56,120,0,120, + 120,0,120,56,0,112,60,0,240,28,0,224,15,3,192,7, + 255,128,1,254,0,17,15,45,20,2,1,224,3,128,112,7, + 0,56,14,0,28,28,0,14,56,0,7,112,0,3,224,0, + 1,192,0,3,224,0,7,112,0,14,56,0,28,28,0,56, + 14,0,112,7,0,224,3,128,22,28,84,24,1,254,0,0, + 24,1,254,48,7,255,176,14,3,224,28,0,224,60,1,240, + 56,1,240,120,3,120,120,6,120,240,6,60,240,12,60,240, + 24,60,240,56,60,240,48,60,240,96,60,240,224,60,240,192, + 60,113,128,56,123,0,120,123,0,120,62,0,112,60,0,240, + 30,1,224,31,3,192,55,255,128,113,254,0,96,0,0,192, + 0,0,26,32,128,26,0,0,0,48,0,0,0,56,0,0, + 0,28,0,0,0,14,0,0,0,3,0,0,0,1,128,0, + 0,0,0,0,255,224,255,192,63,128,63,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 15,0,24,0,7,0,24,0,7,128,48,0,3,224,240,0, + 1,255,192,0,0,127,0,0,26,32,128,26,0,0,0,0, + 48,0,0,0,112,0,0,0,224,0,0,1,192,0,0,3, + 0,0,0,6,0,0,0,0,0,0,255,224,255,192,63,128, + 63,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,15,0,24,0,7,0,24,0,7,128, + 48,0,3,224,240,0,1,255,192,0,0,127,0,0,26,31, + 124,26,0,0,0,6,0,0,0,15,0,0,0,31,128,0, + 0,48,192,0,0,96,96,0,0,0,0,0,255,224,255,192, + 63,128,63,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,14,0,12,0,14,0,12,0, + 14,0,12,0,14,0,12,0,15,0,24,0,7,0,24,0, + 7,128,48,0,3,224,240,0,1,255,192,0,0,127,0,0, + 26,30,120,26,0,0,0,48,192,0,0,121,224,0,0,48, + 192,0,0,0,0,0,0,0,0,0,255,224,255,192,63,128, + 63,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,15,0,24,0,7,0,24,0,7,128, + 48,0,3,224,240,0,1,255,192,0,0,127,0,0,23,32, + 96,23,0,0,0,1,128,0,3,128,0,7,0,0,14,0, + 0,24,0,0,48,0,0,0,0,255,131,254,126,0,248,62, + 0,112,30,0,96,15,0,224,15,0,192,7,129,128,7,193, + 128,3,195,0,3,227,0,1,230,0,0,246,0,0,252,0, + 0,124,0,0,120,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,254, + 0,3,255,128,20,25,75,22,1,0,255,224,0,31,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,15,254,0,15, + 255,128,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,3,224,15,255,192, + 15,255,0,14,0,0,14,0,0,14,0,0,14,0,0,31, + 0,0,255,224,0,17,26,78,19,0,255,3,248,0,7,156, + 0,14,14,0,14,15,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,14,0,28,14,0,28,248,0,28,248,0,28, + 14,0,28,7,0,28,7,0,28,7,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,231,128,28,231,0, + 60,231,0,252,254,0,0,56,0,16,23,46,17,1,0,12, + 0,14,0,7,0,3,128,0,192,0,96,0,0,7,192,31, + 240,120,120,112,56,112,56,112,56,1,248,15,248,60,56,112, + 56,224,56,224,56,224,120,240,253,127,159,63,14,16,23,46, + 17,1,0,0,48,0,112,0,224,1,192,3,0,6,0,0, + 0,7,192,31,240,120,120,112,56,112,56,112,56,1,248,15, + 248,60,56,112,56,224,56,224,56,224,120,240,253,127,159,63, + 14,16,22,44,17,1,0,3,0,7,128,15,192,24,96,48, + 48,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,21,42,17,1,0,15,24,31,240,49,224,0, + 0,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,21,42,17,1,0,12,96,30,240,12,96,0, + 0,0,0,7,192,31,240,120,120,112,56,112,56,112,56,1, + 248,15,248,60,56,112,56,224,56,224,56,224,120,240,253,127, + 159,62,14,16,23,46,17,1,0,7,128,12,192,8,64,8, + 64,12,192,7,128,0,0,7,192,31,240,120,120,112,56,112, + 56,112,56,1,248,15,248,60,56,112,56,224,56,224,56,224, + 120,240,253,127,159,62,14,23,16,48,25,1,0,15,195,224, + 63,231,248,112,124,28,112,60,12,112,56,14,112,56,14,1, + 248,14,15,255,254,60,56,0,112,56,0,240,56,0,224,60, + 2,224,124,6,240,254,28,127,207,248,63,3,240,12,23,46, + 14,1,249,7,128,31,224,56,112,112,240,112,240,224,96,224, + 0,224,0,224,0,224,0,240,0,240,16,120,48,124,96,63, + 192,15,0,2,0,4,0,15,0,1,128,1,128,17,128,15, + 0,14,23,46,16,1,0,24,0,28,0,14,0,7,0,1, + 128,0,192,0,0,7,192,31,240,56,56,112,24,112,28,240, + 28,240,28,255,252,224,0,224,0,240,0,240,4,120,12,60, + 56,31,240,7,192,14,23,46,16,1,0,0,24,0,56,0, + 112,0,224,1,128,3,0,0,0,7,192,31,240,56,120,112, + 56,96,28,224,28,224,28,255,252,224,0,224,0,240,0,240, + 4,120,12,60,56,31,240,7,192,14,22,44,16,1,0,3, + 0,7,128,15,192,24,96,48,48,0,0,7,192,31,240,56, + 56,112,24,112,28,240,28,240,28,255,252,224,0,224,0,240, + 0,240,4,120,12,60,56,31,240,7,192,14,21,42,16,1, + 0,12,96,30,240,12,96,0,0,0,0,7,192,31,240,56, + 56,112,24,112,28,240,28,240,28,255,252,224,0,224,0,240, + 0,240,4,120,12,60,24,31,240,7,192,9,23,46,11,1, + 0,192,0,224,0,112,0,56,0,12,0,6,0,0,0,252, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,9, + 23,46,11,1,0,1,128,3,128,7,0,14,0,24,0,48, + 0,0,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,255,128,10,22,44,11,0,0,12,0,30,0,63,0,97, + 128,192,192,0,0,126,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,127,192,9,21,42,11,1,0,99,0,247,128,99, + 0,0,0,0,0,252,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,255,128,14,25,50,17,1,0,48,0,60,0,14, + 224,7,192,15,128,13,192,0,224,0,240,0,112,7,248,31, + 248,56,120,112,60,112,60,224,28,224,28,224,28,224,28,224, + 28,224,28,240,60,112,56,120,120,63,240,15,192,19,21,63, + 19,0,0,3,198,0,7,252,0,12,120,0,0,0,0,0, + 0,0,28,120,0,253,254,0,31,158,0,30,15,0,30,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,255, + 31,224,14,23,46,16,1,0,48,0,56,0,28,0,14,0, + 3,0,1,128,0,0,7,128,31,224,56,112,112,56,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,240,60,112,56, + 120,120,31,224,7,128,14,23,46,16,1,0,0,24,0,56, + 0,112,0,224,1,128,3,0,0,0,7,128,31,224,56,112, + 112,56,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,56,120,120,31,224,7,128,14,22,44,16,1,0, + 3,0,7,128,15,192,24,96,48,48,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,14,21,42,16, + 1,0,15,24,31,240,49,224,0,0,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,14,21,42,16, + 1,0,24,192,61,224,24,192,0,0,0,0,7,128,31,224, + 56,112,112,56,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,112,56,56,112,31,224,7,128,16,16,32,20, + 2,0,1,128,3,192,3,192,1,128,0,0,0,0,0,0, + 255,255,255,255,0,0,0,0,0,0,1,128,3,192,3,192, + 1,128,14,22,44,16,1,253,0,24,0,24,0,48,7,240, + 31,240,56,112,112,248,112,216,225,156,225,156,227,28,227,28, + 230,28,230,28,236,56,124,56,120,112,63,224,63,128,48,0, + 96,0,96,0,18,23,69,20,0,0,6,0,0,7,0,0, + 3,128,0,1,192,0,0,96,0,0,48,0,0,0,0,28, + 7,0,252,63,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,15,0,28,15,0,14,63,0,15,247,192,7,199,0,18, + 23,69,20,0,0,0,12,0,0,28,0,0,56,0,0,112, + 0,0,192,0,1,128,0,0,0,0,28,7,0,252,63,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,15,0,28,15, + 0,14,63,0,15,247,192,7,199,0,18,22,66,20,0,0, + 0,192,0,1,224,0,3,240,0,6,24,0,12,12,0,0, + 0,0,28,7,0,252,63,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,15,0,28,15,0,14,63,0,15,247,192,7, + 199,0,18,21,63,20,0,0,3,24,0,7,188,0,3,24, + 0,0,0,0,0,0,0,28,7,0,252,63,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,15,0,28,15,0,14,63, + 0,15,247,192,7,199,0,17,30,90,19,1,249,0,12,0, + 0,28,0,0,56,0,0,112,0,0,192,0,1,128,0,0, + 0,0,255,31,128,124,7,0,60,6,0,28,6,0,30,12, + 0,14,12,0,15,8,0,7,24,0,7,24,0,7,176,0, + 3,176,0,3,224,0,1,224,0,1,224,0,0,192,0,0, + 192,0,1,128,0,1,128,0,99,0,0,227,0,0,230,0, + 0,252,0,0,112,0,0,16,29,58,19,1,249,56,0,248, + 0,56,0,56,0,56,0,56,0,56,240,59,252,63,30,60, + 14,60,15,56,7,56,7,56,7,56,7,56,7,56,7,60, + 15,60,14,62,30,59,252,57,240,56,0,56,0,56,0,56, + 0,56,0,56,0,255,0,18,28,84,20,1,249,3,24,0, + 7,188,0,3,24,0,0,0,0,0,0,0,255,31,192,124, + 7,0,60,6,0,28,6,0,30,12,0,14,12,0,15,8, + 0,7,24,0,7,24,0,7,176,0,3,176,0,3,224,0, + 1,224,0,1,224,0,0,192,0,0,192,0,1,128,0,1, + 128,0,99,0,0,227,0,0,230,0,0,252,0,0,112,0, + 0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 24 + Calculated Max Values w=16 h=25 x= 3 y=11 dx=20 dy= 0 ascent=25 len=50 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =24 descent= 0 + X Font ascent =24 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24n[722] U8G_SECTION(".progmem.u8g_font_ncenR24n") = { + 0,39,50,250,245,24,0,0,0,0,42,57,0,25,250,24, + 0,12,14,28,17,2,11,6,0,6,0,6,0,198,112,230, + 112,127,224,31,128,31,0,127,192,230,112,198,112,6,0,6, + 0,6,0,16,17,34,20,2,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,255,255,255,255,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,5,10,10,9,2, + 250,112,248,248,120,24,24,48,96,224,128,8,3,3,11,1, + 7,255,255,255,4,4,4,9,2,0,96,240,240,96,10,25, + 50,9,255,0,0,192,0,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,48,0,48,0,48,0,96,0, + 96,0,96,0,192,0,16,24,48,18,2,0,3,192,15,240, + 28,56,24,24,56,28,120,30,112,14,240,15,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,112,14, + 120,30,56,28,24,24,28,56,15,240,3,192,13,24,48,18, + 3,0,3,0,7,0,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,15,128, + 255,248,15,24,48,18,1,0,7,224,31,248,56,28,96,30, + 112,14,120,14,120,14,120,14,48,30,0,28,0,28,0,56, + 0,120,0,112,0,224,1,192,3,128,7,2,14,2,28,6, + 56,6,127,254,255,254,255,254,15,24,48,18,1,0,7,224, + 31,248,56,56,112,28,120,28,120,28,48,28,0,28,0,56, + 0,112,1,224,15,240,0,248,0,60,0,28,0,30,96,14, + 240,14,240,14,240,30,224,28,120,124,63,240,15,192,16,24, + 48,18,1,0,0,48,0,48,0,112,0,240,1,240,1,240, + 3,112,6,112,6,112,12,112,24,112,24,112,48,112,96,112, + 96,112,192,112,255,255,255,255,0,112,0,112,0,112,0,112, + 0,248,3,254,14,24,48,18,2,0,56,8,63,248,63,240, + 63,224,48,0,48,0,32,0,96,0,99,192,111,240,124,120, + 112,56,96,60,0,28,0,28,0,28,96,28,240,28,240,28, + 240,60,224,56,112,120,127,240,31,128,15,24,48,18,1,0, + 3,240,15,252,28,62,56,30,56,30,48,12,112,0,112,0, + 112,0,241,224,247,248,254,60,252,28,248,30,240,14,240,14, + 240,14,112,14,112,14,112,30,56,28,56,60,31,240,7,192, + 13,24,48,18,3,0,255,248,255,248,255,248,192,16,192,48, + 128,32,128,96,128,64,0,192,0,192,1,128,1,128,1,128, + 3,0,3,0,3,0,7,0,7,0,7,0,15,0,15,0, + 15,0,15,0,6,0,15,24,48,18,1,0,7,224,31,248, + 60,56,56,28,112,28,112,12,112,12,120,24,60,56,63,112, + 31,224,7,240,7,248,29,252,56,124,112,30,112,30,224,14, + 224,14,224,14,112,28,120,60,63,248,15,224,15,24,48,18, + 1,0,15,192,63,240,120,120,112,56,240,60,224,28,224,28, + 224,30,224,30,240,30,240,62,120,126,120,126,63,222,31,158, + 0,30,0,28,0,28,96,56,240,56,240,112,241,224,127,192, + 63,0}; +/* + Fontname: -Adobe-New Century Schoolbook-Medium-R-Normal--34-240-100-100-P-181-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 25, '1' Height: 24 + Calculated Max Values w=31 h=31 x= 9 y=17 dx=31 dy= 0 ascent=27 len=100 + Font Bounding box w=39 h=50 x=-6 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent=-7 + X Font ascent =25 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_ncenR24r[5367] U8G_SECTION(".progmem.u8g_font_ncenR24r") = { + 0,39,50,250,245,25,5,159,15,28,32,127,249,27,249,25, + 249,0,0,0,9,1,1,4,25,25,10,3,0,96,240,240, + 240,240,240,240,96,96,96,96,96,96,96,96,96,96,96,0, + 0,0,96,240,240,96,9,8,16,13,2,17,227,128,227,128, + 227,128,227,128,65,0,65,0,65,0,65,0,16,23,46,19, + 2,0,3,12,3,12,3,12,7,28,6,24,6,24,6,24, + 127,255,127,255,6,24,14,56,12,56,12,48,255,254,255,254, + 12,48,12,48,28,112,28,112,24,96,24,96,24,96,24,96, + 14,31,62,18,2,252,2,0,2,0,2,0,15,192,63,240, + 114,112,226,56,194,120,194,120,194,48,194,0,226,0,250,0, + 127,0,63,192,31,240,3,248,2,124,2,60,98,28,242,12, + 242,12,226,28,194,24,226,120,127,240,31,192,2,0,2,0, + 2,0,2,0,24,25,75,27,1,255,3,128,32,15,192,224, + 28,227,192,56,127,192,56,97,128,112,97,128,112,99,0,240, + 99,0,224,102,0,224,196,0,224,204,0,225,136,28,115,24, + 126,62,16,227,0,49,195,0,99,195,0,99,131,0,199,131, + 0,199,3,1,135,6,1,135,6,3,7,12,2,3,152,6, + 1,240,4,0,0,22,25,75,27,2,0,1,248,0,7,188, + 0,6,28,0,14,14,0,14,14,0,14,14,0,14,12,0, + 14,28,0,15,56,0,15,112,0,7,224,0,7,128,0,15, + 199,252,59,193,240,113,224,224,113,240,192,224,240,192,224,249, + 128,224,125,128,240,63,4,240,30,4,248,15,12,126,63,248, + 63,243,248,31,193,224,3,8,8,7,2,17,224,224,224,224, + 64,64,64,64,8,29,29,11,2,252,1,7,6,12,24,48, + 48,48,96,96,96,96,224,224,224,224,224,96,96,96,96,48, + 48,16,24,12,6,7,3,8,29,29,11,2,252,192,224,96, + 48,24,8,12,12,6,6,6,6,7,7,7,7,7,6,6, + 6,6,12,12,28,24,48,96,192,192,12,14,28,17,2,11, + 6,0,6,0,6,0,198,112,230,112,127,224,31,128,31,0, + 127,192,230,112,198,112,6,0,6,0,6,0,16,17,34,20, + 2,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 255,255,255,255,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,5,10,10,9,2,250,112,248,248,120,24,24, + 48,96,224,128,8,3,3,11,1,7,255,255,255,4,4,4, + 9,2,0,96,240,240,96,10,25,50,9,255,0,0,192,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,6, + 0,6,0,6,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,96,0,96,0,96,0,192,0,16, + 24,48,18,2,0,3,192,15,240,28,56,24,24,56,28,120, + 30,112,14,240,15,240,15,240,15,240,15,240,15,240,15,240, + 15,240,15,240,15,240,15,112,14,120,30,56,28,24,24,28, + 56,15,240,3,192,13,24,48,18,3,0,3,0,7,0,255, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7, + 0,7,0,7,0,7,0,15,128,255,248,15,24,48,18,1, + 0,7,224,31,248,56,28,96,30,112,14,120,14,120,14,120, + 14,48,30,0,28,0,28,0,56,0,120,0,112,0,224,1, + 192,3,128,7,2,14,2,28,6,56,6,127,254,255,254,255, + 254,15,24,48,18,1,0,7,224,31,248,56,56,112,28,120, + 28,120,28,48,28,0,28,0,56,0,112,1,224,15,240,0, + 248,0,60,0,28,0,30,96,14,240,14,240,14,240,30,224, + 28,120,124,63,240,15,192,16,24,48,18,1,0,0,48,0, + 48,0,112,0,240,1,240,1,240,3,112,6,112,6,112,12, + 112,24,112,24,112,48,112,96,112,96,112,192,112,255,255,255, + 255,0,112,0,112,0,112,0,112,0,248,3,254,14,24,48, + 18,2,0,56,8,63,248,63,240,63,224,48,0,48,0,32, + 0,96,0,99,192,111,240,124,120,112,56,96,60,0,28,0, + 28,0,28,96,28,240,28,240,28,240,60,224,56,112,120,127, + 240,31,128,15,24,48,18,1,0,3,240,15,252,28,62,56, + 30,56,30,48,12,112,0,112,0,112,0,241,224,247,248,254, + 60,252,28,248,30,240,14,240,14,240,14,112,14,112,14,112, + 30,56,28,56,60,31,240,7,192,13,24,48,18,3,0,255, + 248,255,248,255,248,192,16,192,48,128,32,128,96,128,64,0, + 192,0,192,1,128,1,128,1,128,3,0,3,0,3,0,7, + 0,7,0,7,0,15,0,15,0,15,0,15,0,6,0,15, + 24,48,18,1,0,7,224,31,248,60,56,56,28,112,28,112, + 12,112,12,120,24,60,56,63,112,31,224,7,240,7,248,29, + 252,56,124,112,30,112,30,224,14,224,14,224,14,112,28,120, + 60,63,248,15,224,15,24,48,18,1,0,15,192,63,240,120, + 120,112,56,240,60,224,28,224,28,224,30,224,30,240,30,240, + 62,120,126,120,126,63,222,31,158,0,30,0,28,0,28,96, + 56,240,56,240,112,241,224,127,192,63,0,4,16,16,9,3, + 0,96,240,240,96,0,0,0,0,0,0,0,0,96,240,240, + 96,5,21,21,9,1,251,48,120,120,48,0,0,0,0,0, + 0,0,0,48,120,120,56,24,16,48,96,192,16,18,36,20, + 2,255,0,1,0,7,0,31,0,124,1,240,7,192,31,0, + 124,0,240,0,240,0,124,0,31,0,7,192,1,240,0,124, + 0,31,0,7,0,1,16,8,16,20,2,4,255,255,255,255, + 0,0,0,0,0,0,0,0,255,255,255,255,16,18,36,20, + 2,255,128,0,224,0,248,0,62,0,15,128,3,224,0,248, + 0,62,0,15,0,15,0,62,0,248,3,224,15,128,62,0, + 248,0,224,0,128,0,12,25,50,14,1,0,63,128,115,224, + 192,224,192,240,224,112,224,112,224,112,0,240,0,240,1,224, + 1,192,3,128,3,0,6,0,4,0,4,0,12,0,12,0, + 0,0,0,0,0,0,12,0,30,0,30,0,12,0,22,25, + 75,25,1,0,0,254,0,3,255,128,15,135,192,30,0,224, + 28,0,112,48,0,56,48,0,24,96,251,152,97,207,140,227, + 143,140,199,135,140,199,7,12,207,7,12,207,15,8,206,15, + 24,206,14,24,206,30,48,102,62,96,103,126,192,51,231,152, + 56,0,56,28,0,112,15,129,224,7,255,128,0,254,0,23, + 25,75,23,0,0,0,16,0,0,56,0,0,56,0,0,120, + 0,0,124,0,0,124,0,0,220,0,0,222,0,1,158,0, + 1,142,0,1,143,0,3,7,0,3,7,128,3,7,128,6, + 3,128,7,255,192,7,255,192,12,1,192,12,1,224,12,1, + 224,24,0,240,24,0,240,56,0,248,124,1,252,254,3,254, + 20,25,75,23,1,0,255,254,0,63,255,128,14,7,192,14, + 1,192,14,1,224,14,1,224,14,1,224,14,1,224,14,1, + 192,14,1,192,14,3,128,15,255,0,15,252,0,14,15,128, + 14,3,192,14,1,224,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,240,14,1,224,14,3,224,63,255,192,255,255, + 0,20,25,75,22,1,0,1,252,96,7,255,96,14,3,224, + 28,1,224,60,0,224,56,0,224,120,0,96,120,0,96,240, + 0,32,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,48,120,0,48,120,0,48, + 120,0,96,60,0,96,28,0,192,15,3,128,7,255,0,1, + 252,0,22,25,75,25,1,0,255,254,0,63,255,192,14,3, + 224,14,0,240,14,0,112,14,0,120,14,0,120,14,0,60, + 14,0,60,14,0,60,14,0,60,14,0,60,14,0,60,14, + 0,60,14,0,60,14,0,60,14,0,60,14,0,60,14,0, + 56,14,0,120,14,0,112,14,0,224,14,3,224,63,255,192, + 255,254,0,20,25,75,24,1,0,255,255,240,63,255,240,14, + 1,240,14,0,112,14,0,112,14,0,48,14,4,48,14,4, + 16,14,4,16,14,12,0,14,60,0,15,252,0,15,252,0, + 14,60,0,14,12,0,14,12,0,14,4,16,14,4,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 240,255,255,240,20,25,75,22,1,0,255,255,240,63,255,240, + 14,1,240,14,0,112,14,0,48,14,0,48,14,0,16,14, + 4,16,14,4,16,14,12,0,14,12,0,14,60,0,15,252, + 0,15,252,0,14,28,0,14,12,0,14,4,0,14,4,0, + 14,4,0,14,0,0,14,0,0,14,0,0,14,0,0,63, + 128,0,255,224,0,24,25,75,24,1,0,1,254,48,7,255, + 176,15,3,240,30,0,240,60,0,112,56,0,112,120,0,48, + 112,0,48,112,0,16,240,0,16,240,0,0,240,0,0,240, + 0,0,240,0,0,240,7,255,240,0,248,240,0,112,112,0, + 112,112,0,112,120,0,112,56,0,240,28,0,240,15,1,176, + 7,255,48,1,254,16,25,25,100,27,1,0,255,227,255,128, + 63,128,254,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,15,255,248,0,15,255,248,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,14,0,56,0,14,0,56,0, + 14,0,56,0,14,0,56,0,63,128,254,0,255,227,255,128, + 11,25,50,13,1,0,255,224,63,128,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,63,128,255,224,17,25,75,18,0,0,3,255, + 128,0,124,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,112,56, + 0,248,56,0,248,56,0,248,56,0,240,56,0,192,120,0, + 224,112,0,127,240,0,31,192,0,25,25,100,25,1,0,255, + 227,255,0,63,129,252,0,14,0,240,0,14,0,224,0,14, + 1,192,0,14,1,128,0,14,3,0,0,14,6,0,0,14, + 14,0,0,14,28,0,0,14,56,0,0,14,124,0,0,14, + 254,0,0,15,222,0,0,15,143,0,0,15,7,128,0,14, + 7,192,0,14,3,192,0,14,1,224,0,14,1,240,0,14, + 0,240,0,14,0,120,0,14,0,124,0,63,0,62,0,255, + 192,255,128,20,25,75,22,1,0,255,224,0,63,128,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,16,14,0,16,14, + 0,16,14,0,48,14,0,48,14,0,112,14,1,240,63,255, + 224,255,255,224,29,25,100,30,0,0,127,128,15,248,31,128, + 15,192,15,128,15,128,15,192,15,128,13,192,27,128,13,192, + 27,128,13,224,19,128,12,224,51,128,12,224,51,128,12,240, + 35,128,12,112,99,128,12,112,99,128,12,120,99,128,12,56, + 195,128,12,56,195,128,12,60,195,128,12,28,131,128,12,29, + 131,128,12,31,131,128,12,31,3,128,12,15,3,128,12,15, + 3,128,12,14,3,128,63,6,15,224,255,198,63,248,26,25, + 100,28,1,0,255,0,255,192,31,0,63,0,15,128,12,0, + 15,192,12,0,15,192,12,0,13,224,12,0,13,240,12,0, + 12,248,12,0,12,120,12,0,12,124,12,0,12,62,12,0, + 12,30,12,0,12,31,12,0,12,15,140,0,12,7,140,0, + 12,7,204,0,12,3,204,0,12,1,236,0,12,0,236,0, + 12,0,252,0,12,0,124,0,12,0,60,0,12,0,60,0, + 63,0,28,0,255,192,12,0,22,25,75,24,1,0,1,254, + 0,7,255,128,15,3,192,28,0,224,60,0,240,56,0,112, + 120,0,120,112,0,56,240,0,60,240,0,60,224,0,28,224, + 0,28,224,0,28,224,0,28,224,0,28,240,0,60,240,0, + 56,112,0,56,120,0,120,56,0,112,60,0,240,28,0,224, + 15,3,192,7,255,128,1,254,0,20,25,75,22,1,0,255, + 254,0,63,255,128,14,7,192,14,1,224,14,0,240,14,0, + 240,14,0,112,14,0,112,14,0,240,14,0,240,14,1,224, + 14,7,192,15,255,128,15,254,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,63,128,0,255,224,0,23,31,93,24,1,250, + 0,254,0,3,255,128,15,1,224,30,0,240,60,0,120,56, + 0,56,120,0,60,112,0,28,240,0,30,240,0,30,224,0, + 14,224,0,14,224,0,14,224,0,14,240,0,30,240,0,30, + 112,124,28,121,222,60,121,135,56,61,3,112,29,3,112,31, + 3,224,15,131,192,3,255,128,0,255,192,0,3,198,0,1, + 198,0,1,228,0,1,252,0,0,248,0,0,112,21,25,75, + 23,1,0,255,254,0,63,255,128,14,7,192,14,1,192,14, + 1,224,14,0,224,14,0,224,14,1,224,14,1,224,14,1, + 192,14,3,192,14,15,0,15,252,0,15,254,0,14,15,0, + 14,7,0,14,7,128,14,3,128,14,3,128,14,3,136,14, + 3,136,14,3,136,14,3,216,63,129,240,255,225,224,17,25, + 75,20,2,0,15,241,0,63,251,0,112,31,0,96,7,0, + 224,7,0,224,3,0,224,1,0,240,1,0,240,0,0,126, + 0,0,127,224,0,31,252,0,7,254,0,0,127,0,0,15, + 128,128,7,128,128,3,128,192,3,128,192,3,128,192,3,128, + 224,7,128,240,7,0,248,14,0,223,252,0,135,240,0,19, + 25,75,21,1,0,255,255,224,255,255,224,240,227,224,224,224, + 224,192,224,96,192,224,96,128,224,32,128,224,32,128,224,32, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,3,248,0,15,254,0, + 26,25,100,26,0,0,255,224,255,192,63,128,63,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,14,0,12,0,14,0,12,0,14,0,12,0,14,0, + 12,0,15,0,24,0,7,0,24,0,7,128,48,0,3,224, + 240,0,1,255,192,0,0,127,0,0,23,25,75,23,0,0, + 255,195,254,62,0,248,30,0,112,30,0,112,14,0,96,15, + 0,96,15,0,64,7,0,192,7,128,192,7,128,128,3,129, + 128,3,193,128,3,193,0,1,195,0,1,227,0,1,226,0, + 0,230,0,0,246,0,0,244,0,0,124,0,0,124,0,0, + 56,0,0,56,0,0,56,0,0,16,0,31,25,100,31,0, + 0,255,31,241,254,126,7,192,124,60,3,128,56,28,3,128, + 48,30,3,192,48,30,3,192,96,14,3,192,96,14,3,224, + 96,15,3,224,96,7,6,224,192,7,6,224,192,7,132,240, + 192,7,140,112,192,3,140,113,128,3,140,121,128,3,200,57, + 128,1,216,57,0,1,248,63,0,1,248,31,0,0,240,31, + 0,0,240,30,0,0,240,30,0,0,224,14,0,0,96,12, + 0,0,96,12,0,23,25,75,22,0,0,255,199,252,63,1, + 240,31,0,224,15,1,192,15,129,128,7,131,128,3,195,0, + 3,230,0,1,238,0,0,252,0,0,248,0,0,120,0,0, + 124,0,0,124,0,0,254,0,1,223,0,1,143,0,3,135, + 128,3,7,128,6,3,192,14,3,224,12,1,224,28,0,240, + 62,0,248,255,135,254,23,25,75,23,0,0,255,131,254,126, + 0,248,62,0,112,30,0,96,15,0,224,15,0,192,7,129, + 128,7,193,128,3,195,0,3,227,0,1,230,0,0,246,0, + 0,252,0,0,124,0,0,120,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,254,0,3,255,128,17,25,75,19,1,0,127,255,128, + 127,255,128,120,15,0,112,15,0,96,30,0,96,62,0,96, + 60,0,64,124,0,64,120,0,0,240,0,0,240,0,1,224, + 0,3,224,0,3,192,0,7,128,0,7,128,128,15,0,128, + 31,0,128,30,1,128,62,1,128,60,1,128,120,3,128,120, + 7,128,255,255,128,255,255,128,7,29,29,11,3,252,254,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,254,15,25,50,20,2, + 0,224,0,112,0,112,0,56,0,56,0,28,0,28,0,14, + 0,14,0,7,0,7,0,3,128,3,128,3,128,1,192,1, + 192,0,224,0,224,0,112,0,112,0,56,0,56,0,28,0, + 28,0,14,7,29,29,11,1,252,254,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,254,16,13,26,20,2,12,3,192,3,192, + 7,224,7,224,14,112,14,112,28,56,28,56,56,28,56,28, + 112,14,112,14,224,7,16,2,4,16,0,252,255,255,255,255, + 7,6,6,11,1,17,192,224,112,56,12,6,16,16,32,17, + 1,0,15,192,63,240,120,120,112,56,96,56,0,56,1,248, + 15,248,60,56,112,56,224,56,224,56,224,120,241,253,127,159, + 62,14,15,25,50,17,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,57,224,59,248,62,28, + 60,28,60,14,56,14,56,14,56,14,56,14,56,14,56,14, + 60,14,60,28,62,28,55,248,33,224,12,16,32,14,1,0, + 7,128,31,224,56,112,112,240,112,240,224,96,224,0,224,0, + 224,0,224,0,224,0,112,16,112,48,56,96,63,192,15,128, + 16,25,50,18,1,0,0,12,0,124,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,7,156,31,220,56,124,112,60, + 112,60,224,28,224,28,224,28,224,28,224,28,224,28,240,60, + 112,60,120,124,31,220,7,159,14,16,32,16,1,0,7,192, + 31,240,56,120,112,56,96,28,224,28,224,28,255,252,224,0, + 224,0,224,0,240,4,112,12,120,56,63,240,15,192,14,25, + 50,11,0,0,1,248,7,28,14,28,12,28,28,8,28,0, + 28,0,28,0,28,0,255,192,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,255,192,16,23,46,17,1,249,7,159,31,251, + 56,115,112,56,112,56,112,56,112,56,112,56,56,112,31,224, + 55,128,96,0,96,0,127,224,127,248,63,252,48,62,96,14, + 224,14,224,14,248,60,127,248,15,192,19,25,75,20,0,0, + 12,0,0,252,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,112,0,29,252, + 0,31,30,0,30,14,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,255,63,224,9,24,48,10,1, + 0,24,0,60,0,60,0,24,0,0,0,0,0,0,0,0, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,255, + 128,9,31,62,10,254,249,3,0,7,128,7,128,3,0,0, + 0,0,0,0,0,0,0,3,128,31,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,3,128,3,128,3, + 128,3,128,3,128,3,128,3,128,3,128,67,128,227,0,227, + 0,230,0,124,0,19,25,75,20,0,0,12,0,0,252,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,127,128,28,30,0,28,24,0,28, + 48,0,28,96,0,28,192,0,29,192,0,31,224,0,30,240, + 0,28,120,0,28,60,0,28,28,0,28,14,0,28,15,0, + 28,7,128,255,31,224,9,25,50,11,1,0,12,0,28,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,27,16, + 64,27,0,0,28,240,120,0,253,252,254,0,31,29,142,0, + 30,15,7,0,30,15,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 28,14,7,0,28,14,7,0,28,14,7,0,28,14,7,0, + 255,63,159,224,19,16,48,19,0,0,28,120,0,253,254,0, + 31,142,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,255,31,224,14,16,32,16,1,0, + 7,128,31,224,56,112,112,56,112,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,112,56,56,112,31,224,7,128, + 16,23,46,19,1,249,25,240,251,252,62,30,60,14,60,7, + 56,7,56,7,56,7,56,7,56,7,56,7,60,14,60,14, + 62,28,59,252,57,240,56,0,56,0,56,0,56,0,56,0, + 124,0,255,0,16,23,46,17,1,249,7,196,31,236,56,60, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 240,60,112,60,56,124,63,220,15,156,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,14,16,32,15,0,0,28,120, + 253,252,31,60,30,60,30,24,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,255,128,11,16, + 32,15,2,0,30,192,127,192,225,192,192,192,192,192,240,64, + 254,0,127,128,63,192,7,224,128,224,192,96,192,96,224,224, + 255,192,159,0,12,23,46,13,0,0,4,0,4,0,12,0, + 12,0,28,0,28,0,60,0,255,224,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,16,28,16,28,48, + 28,48,30,96,15,224,7,192,18,16,48,20,0,0,28,7, + 0,252,63,0,28,7,0,28,7,0,28,7,0,28,7,0, + 28,7,0,28,7,0,28,7,0,28,7,0,28,7,0,28, + 15,0,28,15,0,30,63,0,15,247,192,7,199,0,17,16, + 48,17,0,0,255,31,128,124,7,0,60,6,0,30,6,0, + 30,12,0,14,12,0,15,8,0,7,24,0,7,24,0,7, + 176,0,3,176,0,3,224,0,1,224,0,1,224,0,0,192, + 0,0,192,0,24,16,48,24,0,0,254,127,63,120,60,14, + 56,28,12,60,28,28,28,30,24,28,30,24,14,54,16,14, + 39,48,15,103,48,7,103,96,7,67,96,3,195,192,3,195, + 192,3,129,192,1,129,128,1,129,128,16,16,32,19,1,0, + 255,127,60,28,30,24,14,48,15,48,7,96,3,192,3,192, + 1,224,3,224,6,112,12,120,28,56,56,60,120,30,254,127, + 18,23,69,20,1,249,255,31,192,60,7,0,60,6,0,28, + 6,0,30,12,0,14,12,0,15,8,0,7,24,0,7,24, + 0,7,176,0,3,176,0,3,224,0,1,224,0,1,224,0, + 0,192,0,0,192,0,1,128,0,1,128,0,99,0,0,243, + 0,0,230,0,0,252,0,0,112,0,0,13,16,32,15,1, + 0,127,248,120,120,96,240,96,224,65,224,67,192,3,128,7, + 128,15,0,14,0,30,8,60,8,56,24,120,56,240,248,255, + 248,6,30,30,11,3,252,12,28,56,48,48,48,48,48,48, + 48,48,48,48,112,224,224,112,48,48,48,48,48,48,48,48, + 48,48,56,28,12,2,25,25,20,9,0,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,6,30,30,11,2,252,192,224,112,48,48,48, + 48,48,48,48,48,48,48,56,28,28,56,48,48,48,48,48, + 48,48,48,48,48,112,224,192,16,4,8,20,2,6,30,3, + 127,135,225,254,192,120,255}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w=11 h= 9 x= 1 y= 4 dx=12 dy= 0 ascent= 9 len=10 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01[1535] U8G_SECTION(".progmem.u8g_font_orgv01") = { + 1,11,11,0,254,5,0,249,1,238,32,255,255,9,254,5, + 255,2,0,64,2,21,37,128,128,128,0,128,6,49,65,160, + 2,85,101,80,248,80,248,80,2,85,101,248,160,248,40,248, + 2,85,101,136,16,32,64,136,2,85,101,240,144,248,144,232, + 6,17,33,128,2,37,53,64,128,128,128,64,2,37,53,128, + 64,64,64,128,3,51,67,160,64,160,3,51,67,64,224,64, + 1,18,34,128,128,4,65,81,240,2,17,33,128,2,85,101, + 8,16,32,64,128,2,85,101,248,136,136,136,248,2,21,37, + 128,128,128,128,128,2,85,101,248,8,248,128,248,2,85,101, + 248,8,248,8,248,2,85,101,136,136,248,8,8,2,85,101, + 248,128,248,8,248,2,85,101,248,128,248,136,248,2,85,101, + 248,8,8,8,8,2,85,101,248,136,248,136,248,2,85,101, + 248,136,248,8,248,2,20,36,128,0,0,128,2,20,36,128, + 0,128,128,2,53,69,32,64,128,64,32,3,67,83,240,0, + 240,2,53,69,128,64,32,64,128,2,85,101,248,8,56,0, + 32,2,85,101,248,168,184,128,248,2,85,101,248,136,248,136, + 136,2,85,101,240,136,240,136,240,2,85,101,248,128,128,128, + 248,2,85,101,240,136,136,136,240,2,85,101,248,128,248,128, + 248,2,85,101,248,128,248,128,128,2,85,101,248,128,184,136, + 248,2,85,101,136,136,248,136,136,2,85,101,248,32,32,32, + 248,2,85,101,120,16,16,144,248,2,85,101,136,176,192,176, + 136,2,85,101,128,128,128,128,248,2,85,101,248,168,168,168, + 168,2,85,101,248,136,136,136,136,2,85,101,248,136,136,136, + 248,2,85,101,248,136,248,128,128,2,85,101,248,136,136,152, + 248,2,85,101,248,136,248,144,144,2,85,101,248,128,248,8, + 248,2,85,101,248,32,32,32,32,2,85,101,136,136,136,136, + 248,2,85,101,136,136,136,80,32,2,85,101,168,168,168,168, + 248,2,85,101,136,80,32,80,136,2,85,101,136,136,80,32, + 32,2,85,101,248,8,248,128,248,2,37,53,192,128,128,128, + 192,2,85,101,128,64,32,16,8,2,37,53,192,64,64,64, + 192,5,50,66,64,160,1,81,97,248,6,17,33,128,2,68, + 84,240,16,240,240,2,69,85,128,240,144,144,240,2,68,84, + 240,128,128,240,2,69,85,16,240,144,144,240,2,68,84,240, + 240,128,240,2,53,69,96,64,224,64,64,1,69,85,240,144, + 144,240,16,2,69,85,128,240,144,144,144,2,20,36,128,128, + 128,128,1,37,53,64,64,64,64,192,2,69,85,128,160,240, + 144,144,2,21,37,128,128,128,128,128,2,84,100,248,168,136, + 136,2,68,84,240,144,144,144,2,68,84,240,144,144,240,1, + 69,85,240,144,144,240,128,1,69,85,240,144,144,240,32,2, + 68,84,240,128,128,128,2,68,84,64,112,16,240,2,85,101, + 32,248,32,32,32,2,68,84,144,144,144,240,2,68,84,144, + 144,144,112,2,84,100,136,136,168,248,2,68,84,144,96,96, + 144,1,69,85,144,144,144,240,16,2,68,84,32,224,128,240, + 2,53,69,32,64,192,64,32,2,21,37,128,128,128,128,128, + 2,53,69,128,64,96,64,128,3,83,99,8,248,128,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 2,20,36,128,0,128,128,2,85,101,32,248,160,248,32,2, + 85,101,64,224,64,72,120,2,85,101,136,112,80,112,136,2, + 85,101,136,248,32,112,32,2,21,37,128,128,0,128,128,2, + 86,102,248,128,248,248,8,248,4,81,97,248,18,85,117,248, + 168,200,168,248,2,181,202,251,224,138,0,251,224,136,32,139, + 224,19,83,115,72,144,72,3,66,82,240,16,255,2,85,101, + 248,248,200,200,248,6,81,97,248,2,0,112,2,0,112,2, + 0,112,2,0,112,2,0,112,2,0,112,2,0,112,2,0, + 112,2,0,112,2,0,112,2,0,112,4,83,99,144,72,144, + 2,0,112,2,0,112,2,0,112,18,85,117,32,0,224,128, + 248,2,88,104,64,32,0,248,136,248,136,136,2,88,104,16, + 32,0,248,136,248,136,136,2,88,104,32,80,0,248,136,248, + 136,136,2,89,105,8,248,128,0,248,136,248,136,136,2,87, + 103,80,0,248,136,248,136,136,2,87,103,32,0,248,136,248, + 136,136,2,85,101,248,160,248,160,184,0,87,103,248,128,128, + 128,248,16,48,2,88,104,64,32,0,248,128,248,128,248,2, + 88,104,16,32,0,248,128,248,128,248,2,88,104,32,80,0, + 248,128,248,128,248,2,86,102,80,248,128,248,128,248,2,88, + 104,64,32,0,248,32,32,32,248,2,88,104,16,32,0,248, + 32,32,32,248,2,88,104,32,80,0,248,32,32,32,248,2, + 87,103,80,0,248,32,32,32,248,2,85,101,240,136,232,136, + 240,2,89,105,8,248,128,0,248,136,136,136,136,2,88,104, + 64,32,0,248,136,136,136,248,2,88,104,16,32,0,248,136, + 136,136,248,2,88,104,32,80,0,248,136,136,136,248,2,89, + 105,8,248,128,0,248,136,136,136,248,2,87,103,80,0,248, + 136,136,136,248,3,51,67,160,64,160,2,85,101,248,152,168, + 200,248,2,87,103,64,32,136,136,136,136,248,2,87,103,16, + 32,136,136,136,136,248,2,86,102,32,80,136,136,136,248,2, + 86,102,80,0,136,136,136,248,2,88,104,16,32,0,136,136, + 80,32,32,18,85,117,128,240,136,240,128,1,86,102,240,136, + 176,136,176,128,2,68,84,240,16,240,240,2,71,87,64,32, + 0,240,16,240,240,2,71,87,32,64,0,240,16,240,240,2, + 71,87,96,144,0,240,16,240,240,2,70,86,144,0,240,16, + 240,240,2,70,86,32,0,240,16,240,240,2,116,132,254,30, + 240,254,0,70,86,240,128,128,240,32,96,2,71,87,64,32, + 0,240,240,128,240,2,71,87,32,64,0,240,240,128,240,2, + 71,87,96,144,0,240,240,128,240,2,70,86,144,0,240,240, + 128,240,2,39,39,128,64,0,64,64,64,64,2,39,39,64, + 128,0,128,128,128,128,2,55,39,64,160,0,64,64,64,64, + 2,54,38,160,0,64,64,64,64,2,85,85,56,16,240,144, + 240,2,71,87,80,160,0,240,144,144,144,2,71,87,64,32, + 0,240,144,144,240,2,71,87,32,64,0,240,144,144,240,2, + 71,87,96,144,0,240,144,144,240,2,71,87,80,160,0,240, + 144,144,240,2,70,86,144,0,240,144,144,240,2,85,101,32, + 0,248,0,32,2,68,84,240,176,208,240,2,71,87,64,32, + 0,144,144,144,240,2,71,87,32,64,0,144,144,144,240,2, + 71,87,96,144,0,144,144,144,240,2,70,86,144,0,144,144, + 144,240,1,72,88,32,64,0,144,144,144,240,16,18,85,117, + 128,240,136,240,128,1,71,87,144,0,144,144,144,240,16}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 2 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01n[130] U8G_SECTION(".progmem.u8g_font_orgv01n") = { + 1,11,11,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,51,67,160,64,160,3,51,67,64,224,64,1,18,34, + 128,128,4,65,81,240,2,17,33,128,2,85,101,8,16,32, + 64,128,2,85,101,248,136,136,136,248,2,21,37,128,128,128, + 128,128,2,85,101,248,8,248,128,248,2,85,101,248,8,248, + 8,248,2,85,101,136,136,248,8,8,2,85,101,248,128,248, + 8,248,2,85,101,248,128,248,136,248,2,85,101,248,8,8, + 8,8,2,85,101,248,136,248,136,248,2,85,101,248,136,248, + 8,248}; +/* + Fontname: -FreeType-Org_v01-Medium-R-Normal--8-80-72-72-P-43-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 0 y= 4 dx= 6 dy= 0 ascent= 5 len= 5 + Font Bounding box w=11 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_orgv01r[719] U8G_SECTION(".progmem.u8g_font_orgv01r") = { + 1,11,11,0,254,5,0,249,1,238,32,127,255,5,255,5, + 255,2,0,64,2,21,37,128,128,128,0,128,6,49,65,160, + 2,85,101,80,248,80,248,80,2,85,101,248,160,248,40,248, + 2,85,101,136,16,32,64,136,2,85,101,240,144,248,144,232, + 6,17,33,128,2,37,53,64,128,128,128,64,2,37,53,128, + 64,64,64,128,3,51,67,160,64,160,3,51,67,64,224,64, + 1,18,34,128,128,4,65,81,240,2,17,33,128,2,85,101, + 8,16,32,64,128,2,85,101,248,136,136,136,248,2,21,37, + 128,128,128,128,128,2,85,101,248,8,248,128,248,2,85,101, + 248,8,248,8,248,2,85,101,136,136,248,8,8,2,85,101, + 248,128,248,8,248,2,85,101,248,128,248,136,248,2,85,101, + 248,8,8,8,8,2,85,101,248,136,248,136,248,2,85,101, + 248,136,248,8,248,2,20,36,128,0,0,128,2,20,36,128, + 0,128,128,2,53,69,32,64,128,64,32,3,67,83,240,0, + 240,2,53,69,128,64,32,64,128,2,85,101,248,8,56,0, + 32,2,85,101,248,168,184,128,248,2,85,101,248,136,248,136, + 136,2,85,101,240,136,240,136,240,2,85,101,248,128,128,128, + 248,2,85,101,240,136,136,136,240,2,85,101,248,128,248,128, + 248,2,85,101,248,128,248,128,128,2,85,101,248,128,184,136, + 248,2,85,101,136,136,248,136,136,2,85,101,248,32,32,32, + 248,2,85,101,120,16,16,144,248,2,85,101,136,176,192,176, + 136,2,85,101,128,128,128,128,248,2,85,101,248,168,168,168, + 168,2,85,101,248,136,136,136,136,2,85,101,248,136,136,136, + 248,2,85,101,248,136,248,128,128,2,85,101,248,136,136,152, + 248,2,85,101,248,136,248,144,144,2,85,101,248,128,248,8, + 248,2,85,101,248,32,32,32,32,2,85,101,136,136,136,136, + 248,2,85,101,136,136,136,80,32,2,85,101,168,168,168,168, + 248,2,85,101,136,80,32,80,136,2,85,101,136,136,80,32, + 32,2,85,101,248,8,248,128,248,2,37,53,192,128,128,128, + 192,2,85,101,128,64,32,16,8,2,37,53,192,64,64,64, + 192,5,50,66,64,160,1,81,97,248,6,17,33,128,2,68, + 84,240,16,240,240,2,69,85,128,240,144,144,240,2,68,84, + 240,128,128,240,2,69,85,16,240,144,144,240,2,68,84,240, + 240,128,240,2,53,69,96,64,224,64,64,1,69,85,240,144, + 144,240,16,2,69,85,128,240,144,144,144,2,20,36,128,128, + 128,128,1,37,53,64,64,64,64,192,2,69,85,128,160,240, + 144,144,2,21,37,128,128,128,128,128,2,84,100,248,168,136, + 136,2,68,84,240,144,144,144,2,68,84,240,144,144,240,1, + 69,85,240,144,144,240,128,1,69,85,240,144,144,240,32,2, + 68,84,240,128,128,128,2,68,84,64,112,16,240,2,85,101, + 32,248,32,32,32,2,68,84,144,144,144,240,2,68,84,144, + 144,144,112,2,84,100,136,136,168,248,2,68,84,144,96,96, + 144,1,69,85,144,144,144,240,16,2,68,84,32,224,128,240, + 2,53,69,32,64,192,64,32,2,21,37,128,128,128,128,128, + 2,53,69,128,64,96,64,128,3,83,99,8,248,128,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 5 y=14 dx=27 dy= 0 ascent=24 len=72 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =18 descent=-6 + Max Font ascent =24 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18[7637] U8G_SECTION(".progmem.u8g_font_osb18") = { + 0,70,31,234,249,18,4,190,10,54,32,255,250,24,250,18, + 250,0,0,0,7,0,0,4,18,18,6,1,0,96,240,240, + 240,240,240,96,96,96,96,96,64,0,0,96,240,240,96,6, + 6,6,10,2,12,204,204,204,204,204,204,15,18,36,19,2, + 0,6,24,6,24,4,16,4,16,12,48,255,254,255,254,12, + 48,8,32,8,32,24,96,24,96,255,254,255,254,16,64,16, + 64,48,192,48,192,11,22,44,14,2,254,9,0,9,0,31, + 128,105,64,73,32,201,32,201,96,249,224,249,64,127,0,63, + 128,31,192,15,192,73,224,233,224,201,96,137,96,137,96,73, + 192,63,128,9,0,9,0,17,18,54,21,2,0,56,4,0, + 68,12,0,198,8,0,198,24,0,198,48,0,198,32,0,198, + 96,0,76,64,0,56,192,0,1,142,0,1,27,0,3,49, + 128,2,49,128,4,49,128,12,49,128,8,49,128,24,17,0, + 16,14,0,17,18,54,19,1,0,3,192,0,4,32,0,12, + 32,0,12,32,0,12,32,0,14,64,0,15,128,0,7,0, + 0,15,143,128,27,195,0,49,194,0,96,226,0,224,244,0, + 224,120,0,240,56,0,240,60,0,126,223,128,63,15,0,2, + 6,6,6,2,12,192,192,192,192,192,192,7,23,23,9,1, + 251,2,4,8,16,48,96,96,96,224,224,224,224,224,224,224, + 96,96,96,48,16,8,4,2,7,23,23,9,0,251,128,64, + 32,16,24,12,12,14,14,14,14,14,14,14,14,14,12,12, + 24,16,32,64,128,9,10,20,13,2,8,24,0,24,0,201, + 128,235,128,28,0,44,0,235,128,217,128,24,0,24,0,21, + 21,63,23,1,253,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,255,255,248,255,255,248,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,4,9,9,7,2,251,224,240,240,240,16,32, + 32,64,128,6,3,3,8,1,5,252,252,252,4,4,4,8, + 2,0,96,240,240,96,9,23,46,11,1,251,1,128,1,128, + 1,0,3,0,3,0,2,0,6,0,6,0,4,0,12,0, + 12,0,8,0,24,0,24,0,24,0,16,0,48,0,48,0, + 32,0,96,0,96,0,64,0,192,0,12,18,36,15,1,0, + 15,0,25,128,48,192,112,224,112,224,240,224,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,112,224,112,224,48,192, + 25,128,15,0,8,18,18,15,3,0,24,56,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,255,11,18,36,15, + 2,0,31,0,113,192,96,224,224,224,240,224,248,224,121,192, + 1,192,3,0,6,0,8,0,48,32,64,32,64,32,255,224, + 191,224,143,192,135,128,12,18,36,15,1,0,31,0,49,192, + 96,224,112,224,120,224,120,224,0,192,1,128,62,0,1,192, + 0,224,0,240,112,240,248,240,240,240,192,224,65,192,63,0, + 11,18,36,15,2,0,3,0,7,0,7,0,15,0,15,0, + 23,0,55,0,39,0,103,0,71,0,199,0,135,0,255,224, + 7,0,7,0,7,0,7,0,63,224,11,18,36,15,2,0, + 65,128,127,128,126,0,120,0,64,0,64,0,95,0,99,128, + 65,192,65,224,1,224,33,224,241,224,241,224,225,192,193,192, + 67,128,62,0,11,18,36,15,2,0,7,128,24,64,48,224, + 113,224,113,224,240,0,240,0,247,128,249,192,240,224,240,224, + 240,224,240,224,112,224,112,224,48,192,57,192,15,0,11,18, + 36,15,2,0,156,64,190,96,255,32,255,224,128,32,128,64, + 128,64,0,128,1,128,3,0,7,0,6,0,14,0,30,0, + 30,0,30,0,30,0,12,0,12,18,36,15,1,0,31,128, + 32,64,64,32,192,32,192,32,240,32,252,64,127,128,127,192, + 63,224,103,240,193,240,192,112,192,48,192,48,96,32,112,64, + 31,128,12,18,36,15,2,0,31,0,113,128,96,192,224,224, + 224,224,224,240,224,240,96,240,113,240,30,240,0,240,0,240, + 56,224,120,224,120,224,97,192,33,128,30,0,4,12,12,8, + 2,0,96,240,240,96,0,0,0,0,96,240,240,96,4,17, + 17,7,2,251,96,240,240,96,0,0,0,0,224,240,240,240, + 16,32,32,64,128,19,21,63,24,2,252,0,0,96,0,1, + 224,0,7,128,0,14,0,0,56,0,0,224,0,3,128,0, + 15,0,0,60,0,0,112,0,0,224,0,0,120,0,0,28, + 0,0,7,0,0,1,192,0,0,112,0,0,60,0,0,15, + 0,0,3,128,0,0,224,0,0,32,21,7,21,23,1,3, + 255,255,248,255,255,248,0,0,0,0,0,0,0,0,0,255, + 255,248,255,255,248,19,21,63,24,2,252,192,0,0,240,0, + 0,60,0,0,14,0,0,3,128,0,0,224,0,0,56,0, + 0,30,0,0,7,128,0,1,192,0,0,224,0,3,192,0, + 7,0,0,28,0,0,112,0,1,192,0,7,128,0,30,0, + 0,56,0,0,224,0,0,128,0,0,8,18,18,12,2,0, + 60,78,135,135,135,78,12,24,16,32,36,36,24,0,24,60, + 60,24,18,18,54,20,1,0,3,240,0,12,12,0,24,3, + 0,48,237,0,97,173,128,99,28,128,199,28,192,207,24,192, + 206,24,192,206,56,192,206,56,192,206,56,128,78,49,128,110, + 91,0,35,156,0,48,0,0,12,4,0,3,248,0,17,18, + 54,19,1,0,0,192,0,0,192,0,0,192,0,1,224,0, + 1,224,0,1,224,0,2,240,0,2,240,0,4,112,0,4, + 120,0,4,120,0,8,56,0,15,252,0,8,60,0,16,28, + 0,16,30,0,48,30,0,252,127,128,15,18,36,18,2,0, + 255,224,56,56,56,56,56,28,56,28,56,28,56,56,56,48, + 63,192,56,56,56,28,56,30,56,30,56,30,56,30,56,28, + 56,56,255,240,13,18,36,17,2,0,7,136,24,120,48,56, + 112,24,112,24,240,8,240,8,240,8,240,0,240,0,240,0, + 240,8,240,8,112,8,112,8,56,16,24,32,7,192,16,18, + 36,19,2,0,255,224,56,56,56,28,56,14,56,14,56,14, + 56,15,56,15,56,15,56,15,56,15,56,15,56,14,56,14, + 56,12,56,28,56,56,255,224,14,18,36,18,2,0,255,252, + 56,28,56,12,56,12,56,4,56,68,56,64,56,192,56,192, + 63,192,56,192,56,68,56,68,56,4,56,4,56,12,56,28, + 255,252,14,18,36,17,2,0,255,252,56,60,56,28,56,12, + 56,4,56,68,56,68,56,192,56,192,63,192,56,192,56,64, + 56,64,56,0,56,0,56,0,56,0,255,0,15,18,36,18, + 2,0,7,136,24,104,48,56,112,24,112,8,112,8,240,8, + 240,0,240,0,241,254,240,56,240,56,240,56,112,56,112,56, + 48,40,24,72,15,136,17,18,54,20,2,0,255,127,128,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,63,254,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,255, + 127,128,8,18,18,11,2,0,255,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,255,11,18,36,13,1,0, + 31,224,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,115,128,243,128,243,128,227,128,195,128, + 67,0,60,0,17,18,54,19,2,0,254,127,0,56,24,0, + 56,16,0,56,32,0,56,64,0,56,192,0,57,128,0,59, + 192,0,59,192,0,61,224,0,57,240,0,56,240,0,56,248, + 0,56,120,0,56,124,0,56,60,0,56,62,0,254,127,128, + 14,18,36,17,2,0,255,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,4,56,4,56,4, + 56,12,56,12,56,28,56,60,255,252,20,18,54,22,1,0, + 254,3,240,30,3,192,30,3,192,31,5,192,31,5,192,23, + 5,192,23,133,192,23,137,192,19,201,192,19,201,192,17,209, + 192,17,241,192,17,241,192,16,241,192,16,225,192,16,225,192, + 56,97,192,254,111,240,17,18,54,18,1,0,252,63,128,60, + 14,0,62,4,0,31,4,0,31,4,0,31,132,0,23,196, + 0,19,196,0,17,228,0,17,244,0,16,244,0,16,124,0, + 16,124,0,16,60,0,16,28,0,16,28,0,56,12,0,254, + 4,0,15,18,36,18,2,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,18,36,18, + 2,0,255,240,56,56,56,28,56,30,56,30,56,30,56,30, + 56,28,56,56,63,224,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,255,128,15,24,48,18,2,250,7,192,8,32, + 56,56,48,24,112,28,112,28,240,30,240,30,240,30,240,30, + 240,30,240,30,112,28,112,28,51,152,52,176,28,226,7,194, + 0,194,0,194,0,230,0,254,0,124,0,56,16,18,36,19, + 2,0,255,224,56,120,56,56,56,60,56,60,56,60,56,56, + 56,112,63,192,56,96,56,48,56,56,56,56,56,57,56,57, + 56,57,56,57,255,158,12,18,36,15,2,0,30,32,97,160, + 192,224,192,96,224,32,240,32,252,0,126,0,63,128,15,192, + 135,224,129,240,128,240,192,48,192,48,224,32,176,96,143,128, + 15,18,36,18,2,0,255,254,231,30,199,14,135,14,135,6, + 135,6,7,2,7,2,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,31,224,18,18,54,20,2,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,17,18,54,19,2,0,255,63,128,60, + 6,0,60,4,0,30,4,0,30,8,0,30,8,0,15,8, + 0,15,16,0,7,144,0,7,144,0,7,160,0,3,224,0, + 3,224,0,3,192,0,1,192,0,1,192,0,1,192,0,0, + 128,0,26,18,72,27,1,0,255,191,223,192,30,15,6,0, + 30,15,6,0,15,15,4,0,15,15,132,0,15,15,132,0, + 7,143,140,0,7,139,200,0,7,147,200,0,3,211,200,0, + 3,209,240,0,3,225,240,0,1,225,240,0,1,224,240,0, + 1,224,224,0,0,192,224,0,0,192,96,0,0,192,64,0, + 16,18,36,19,2,0,255,63,62,24,30,16,31,16,15,32, + 15,224,7,192,7,192,3,192,3,224,3,224,2,240,4,240, + 8,120,8,120,16,60,48,60,252,255,16,18,36,19,2,0, + 254,127,60,12,60,8,30,16,30,16,30,16,15,32,15,32, + 7,64,7,192,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,15,240,13,18,36,16,2,0,127,248,112,120,96,240, + 97,240,65,224,67,224,3,192,7,192,7,128,15,0,15,0, + 30,0,30,8,60,8,124,24,120,24,248,56,255,248,6,22, + 22,10,2,252,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,252,9,23,46,11,1,251, + 192,0,64,0,96,0,96,0,32,0,48,0,48,0,16,0, + 24,0,24,0,24,0,8,0,12,0,12,0,4,0,6,0, + 6,0,2,0,3,0,3,0,1,0,1,128,1,128,6,22, + 22,10,2,252,252,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,11,9,18,15,2,9, + 4,0,12,0,30,0,27,0,51,0,49,128,96,192,192,192, + 192,96,13,2,4,13,0,252,255,248,255,248,4,4,4,11, + 2,13,192,224,96,48,11,12,24,13,1,0,30,0,99,0, + 99,128,115,128,35,128,31,128,115,128,227,128,227,160,227,160, + 247,160,121,192,12,18,36,13,0,0,248,0,56,0,56,0, + 56,0,56,0,56,0,59,128,60,224,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,36,192,35,128,9,12, + 24,12,1,0,30,0,49,0,113,128,227,128,227,128,224,0, + 224,0,224,0,224,128,112,128,49,0,30,0,12,18,36,13, + 1,0,7,192,1,192,1,192,1,192,1,192,1,192,29,192, + 115,192,99,192,225,192,225,192,225,192,225,192,225,192,225,192, + 99,192,115,192,29,240,9,12,24,12,1,0,30,0,51,0, + 99,128,227,128,227,128,255,128,224,0,224,0,224,128,112,128, + 49,0,30,0,9,18,36,9,1,0,15,0,29,128,59,128, + 59,128,57,0,56,0,252,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,252,0,12,18, + 36,14,1,250,30,112,51,176,113,240,113,192,113,192,113,192, + 51,128,30,0,96,0,127,128,127,192,63,224,96,224,128,96, + 128,96,128,64,64,192,63,0,12,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,192,62,224,60,224, + 56,224,56,224,56,224,56,224,56,224,56,224,56,224,56,224, + 253,240,5,18,18,7,1,0,112,112,112,32,0,0,240,112, + 112,112,112,112,112,112,112,112,112,248,7,24,24,8,255,250, + 14,14,14,4,0,0,62,14,14,14,14,14,14,14,14,14, + 14,14,14,110,238,238,204,120,13,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,240,56,192,56,128, + 57,0,57,0,59,128,63,128,57,192,57,192,56,224,56,224, + 255,248,7,18,18,8,0,0,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,18,12,36,19,1,0, + 243,142,0,125,247,0,121,231,0,113,199,0,113,199,0,113, + 199,0,113,199,0,113,199,0,113,199,0,113,199,0,113,199, + 0,251,239,192,11,12,24,13,1,0,243,128,125,192,121,192, + 113,192,113,192,113,192,113,192,113,192,113,192,113,192,113,192, + 251,224,10,12,24,12,1,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 12,18,36,13,0,250,251,128,60,192,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,60,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,11,18,36,13,1,250, + 28,64,50,64,99,192,225,192,225,192,225,192,225,192,225,192, + 225,192,99,192,115,192,61,192,1,192,1,192,1,192,1,192, + 1,192,7,224,9,12,24,11,1,0,243,0,117,128,123,128, + 123,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 248,0,9,12,24,11,1,0,57,0,199,0,195,0,225,0, + 240,0,124,0,63,0,143,128,131,128,193,128,225,0,158,0, + 8,17,17,10,1,0,16,16,16,48,112,254,112,112,112,112, + 112,113,113,113,113,114,60,12,12,24,13,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,12,24,13,1,0,253,240,112,64,56, + 64,56,128,28,128,28,128,29,0,15,0,14,0,14,0,6, + 0,4,0,19,12,36,19,0,0,253,251,224,56,112,128,28, + 112,128,28,113,0,28,121,0,14,185,0,14,154,0,14,158, + 0,7,28,0,7,12,0,2,12,0,2,8,0,12,12,24, + 13,0,0,253,240,56,64,28,128,31,0,15,0,15,0,7, + 0,7,128,11,192,17,192,17,224,253,240,12,18,36,12,0, + 250,252,240,112,64,56,64,56,128,28,128,28,128,29,0,15, + 0,15,0,7,0,6,0,6,0,2,0,4,0,116,0,116, + 0,104,0,56,0,10,12,24,12,1,0,127,192,99,128,71, + 128,71,0,15,0,14,0,28,0,60,64,56,64,120,64,112, + 192,255,192,8,23,23,10,1,251,3,28,56,56,56,56,56, + 56,56,56,48,192,48,56,56,56,56,56,56,56,56,28,3, + 2,23,23,8,3,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,23,23, + 11,2,251,192,112,56,56,56,56,56,56,56,56,28,7,28, + 56,56,56,56,56,56,56,56,112,192,14,5,10,16,1,4, + 120,8,255,4,143,196,131,252,64,120,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,7,0, + 0,4,18,18,6,1,250,96,240,240,96,0,0,64,96,96, + 96,96,96,240,240,240,240,240,96,9,18,36,15,3,253,4, + 0,4,0,4,0,30,0,53,0,117,128,231,128,231,128,228, + 0,228,0,228,0,228,0,100,128,116,128,31,0,4,0,4, + 0,4,0,16,18,36,19,2,0,0,248,1,132,3,6,7, + 14,7,14,7,0,7,0,63,0,7,240,7,128,3,128,3, + 128,3,128,3,1,123,2,143,204,135,252,120,240,12,12,24, + 14,1,3,132,16,223,176,112,224,96,96,192,48,192,48,192, + 48,192,48,64,96,96,96,127,224,207,48,14,18,36,14,0, + 0,254,124,56,16,60,16,60,32,30,32,30,64,14,64,15, + 128,7,128,127,240,7,0,127,240,7,0,7,0,7,0,7, + 0,7,0,31,224,2,22,22,8,3,252,192,192,192,192,192, + 192,192,192,192,0,0,0,0,192,192,192,192,192,192,192,192, + 192,11,23,46,15,1,251,15,0,48,128,96,192,97,192,97, + 192,112,128,124,0,63,0,223,128,143,192,129,224,192,96,248, + 32,126,32,63,64,15,128,3,192,49,192,112,192,112,192,96, + 128,33,128,30,0,8,3,3,12,2,14,231,231,231,18,18, + 54,20,1,0,3,240,0,12,12,0,16,2,0,33,201,0, + 67,56,128,70,24,128,142,8,64,142,8,64,142,0,64,142, + 0,64,142,8,64,142,8,64,70,8,128,67,16,128,33,225, + 0,16,2,0,12,12,0,3,240,0,7,9,9,10,1,9, + 120,204,204,60,76,204,206,126,254,7,10,10,12,3,1,32, + 100,68,204,204,204,204,196,100,34,13,7,14,15,1,4,255, + 248,255,248,0,24,0,24,0,24,0,24,0,24,6,3,3, + 8,1,5,252,252,252,18,18,54,20,1,0,3,240,0,12, + 12,0,16,2,0,47,225,0,71,48,128,71,56,128,135,56, + 64,135,48,64,135,192,64,135,48,64,135,56,64,135,56,64, + 71,58,128,71,58,128,47,157,0,16,2,0,12,12,0,3, + 240,0,7,2,2,11,2,14,254,254,8,7,7,14,3,11, + 60,102,131,129,129,194,126,21,18,54,23,1,254,0,48,0, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,255, + 255,248,255,255,248,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,0,0,255,255,248, + 255,255,248,7,11,11,11,2,7,124,206,206,238,28,48,98, + 66,254,190,8,8,11,11,12,2,7,60,198,231,231,6,56, + 6,103,231,199,60,4,4,4,11,5,13,48,112,96,192,13, + 18,36,15,1,250,97,128,225,192,225,192,225,192,225,192,225, + 192,225,192,64,136,64,136,65,248,127,120,94,48,64,0,96, + 0,96,0,112,0,112,0,112,0,13,21,42,15,1,253,31, + 248,126,96,126,96,254,96,254,96,254,96,254,96,126,96,62, + 96,14,96,6,96,6,96,6,96,6,96,6,96,6,96,6, + 96,6,96,6,96,6,96,6,96,4,4,4,8,2,6,96, + 240,240,96,5,5,5,11,3,250,32,96,24,24,240,6,11, + 11,11,3,7,48,240,112,112,112,112,112,112,112,112,252,7, + 9,9,9,1,9,56,68,198,198,198,198,68,56,254,7,10, + 10,13,3,1,152,140,68,102,102,102,102,70,76,136,18,18, + 54,22,3,0,48,8,0,240,8,0,112,16,0,112,48,0, + 112,32,0,112,96,0,112,64,0,112,195,0,112,135,0,113, + 143,0,253,15,0,3,23,0,2,39,0,4,39,0,12,63, + 192,8,7,0,24,7,0,16,31,192,18,18,54,23,3,0, + 48,4,0,240,8,0,112,24,0,112,16,0,112,48,0,112, + 32,0,112,96,0,112,79,0,112,147,192,113,177,192,253,57, + 192,3,3,128,2,6,0,6,8,0,4,16,64,8,63,192, + 24,47,192,16,39,128,20,18,54,23,2,0,124,2,0,199, + 6,0,231,4,0,6,12,0,56,8,0,6,16,0,7,16, + 0,231,33,192,231,97,192,198,67,192,60,133,192,0,133,192, + 1,9,192,1,9,192,2,31,240,6,1,192,4,1,192,8, + 7,240,8,18,18,12,2,250,48,120,120,48,56,68,68,4, + 8,24,48,114,97,225,225,225,114,60,17,23,69,19,1,1, + 7,0,0,7,0,0,1,128,0,0,128,0,0,0,0,0, + 192,0,0,192,0,1,192,0,1,224,0,1,224,0,3,224, + 0,2,240,0,2,240,0,4,240,0,4,120,0,4,120,0, + 8,56,0,15,252,0,8,60,0,16,28,0,16,30,0,48, + 30,0,252,255,128,17,23,69,19,1,1,0,56,0,0,48, + 0,0,96,0,0,192,0,0,0,0,0,192,0,0,192,0, + 0,192,0,1,224,0,1,224,0,1,224,0,2,240,0,2, + 240,0,4,112,0,4,120,0,4,120,0,8,56,0,15,252, + 0,8,60,0,16,28,0,16,30,0,48,30,0,252,127,128, + 17,23,69,19,1,0,0,192,0,1,192,0,3,96,0,6, + 24,0,0,0,0,0,192,0,0,192,0,0,192,0,1,224, + 0,1,224,0,1,224,0,2,240,0,2,240,0,4,112,0, + 4,120,0,4,120,0,8,56,0,15,252,0,8,60,0,16, + 28,0,16,30,0,48,30,0,252,127,128,17,23,69,19,1, + 0,1,8,0,7,240,0,4,240,0,0,0,0,0,0,0, + 0,192,0,0,192,0,1,192,0,1,224,0,1,224,0,3, + 224,0,2,240,0,2,240,0,4,240,0,4,120,0,4,120, + 0,8,56,0,15,252,0,8,60,0,16,28,0,16,30,0, + 48,30,0,252,255,128,16,23,46,18,1,0,14,112,14,112, + 14,112,0,0,0,0,1,128,1,128,1,128,3,192,3,192, + 3,192,5,224,5,224,4,224,8,240,8,240,8,112,31,248, + 16,120,16,60,48,60,48,60,252,255,18,23,69,19,1,0, + 1,224,0,2,16,0,2,16,0,1,224,0,0,0,0,0, + 192,0,0,192,0,0,224,0,1,224,0,1,224,0,1,240, + 0,2,240,0,2,240,0,4,120,0,4,120,0,4,120,0, + 8,60,0,15,252,0,8,28,0,16,30,0,16,30,0,48, + 30,0,252,127,192,23,18,54,25,1,0,0,127,254,0,60, + 14,0,60,6,0,124,6,0,92,2,0,220,34,0,156,32, + 1,156,96,1,28,96,3,31,224,2,28,96,6,28,34,7, + 252,34,8,28,2,8,28,2,24,28,6,56,28,14,254,127, + 254,13,24,48,17,2,250,7,136,24,120,48,56,112,24,112, + 24,240,8,240,8,240,8,240,0,240,0,240,0,240,8,240, + 8,112,8,112,8,56,16,24,32,7,192,2,0,3,128,0, + 192,0,192,8,192,7,128,14,23,46,18,2,1,28,0,12, + 0,6,0,1,0,0,0,255,252,56,28,56,12,56,12,56, + 4,56,68,56,64,56,192,56,192,63,192,56,192,56,68,56, + 68,56,4,56,4,56,12,56,28,255,252,14,23,46,18,2, + 1,0,224,0,192,1,128,2,0,0,0,255,252,56,28,56, + 12,56,12,56,4,56,68,56,64,56,192,56,192,63,192,56, + 192,56,68,56,68,56,4,56,4,56,12,56,28,255,252,14, + 23,46,18,2,0,3,0,7,128,12,192,16,32,0,0,255, + 252,56,28,56,12,56,12,56,4,56,68,56,64,56,192,56, + 192,63,192,56,192,56,68,56,68,56,4,56,4,56,12,56, + 28,255,252,14,23,46,18,2,0,28,224,28,224,28,224,0, + 0,0,0,255,252,56,28,56,12,56,12,56,4,56,68,56, + 64,56,192,56,192,63,192,56,192,56,68,56,68,56,4,56, + 12,56,12,56,28,255,252,8,23,23,11,2,1,192,96,48, + 16,0,255,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,255,8,23,23,11,2,1,7,14,8,16,0,255, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 255,8,23,23,11,2,0,16,56,108,130,0,255,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,56,56,255,8,23, + 23,11,2,0,231,231,231,0,0,255,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,255,16,18,36,19,2, + 0,255,224,56,56,56,28,56,14,56,14,56,14,56,15,56, + 15,255,15,56,15,56,15,56,15,56,14,56,14,56,12,56, + 28,56,56,255,224,17,23,69,18,1,0,3,136,0,3,240, + 0,4,96,0,0,0,0,0,0,0,252,63,128,60,14,0, + 62,4,0,31,4,0,31,4,0,23,132,0,23,196,0,19, + 196,0,17,228,0,17,244,0,16,244,0,16,124,0,16,124, + 0,16,60,0,16,28,0,16,28,0,56,12,0,254,4,0, + 15,24,48,18,2,0,12,0,12,0,14,0,3,0,1,0, + 0,0,7,192,8,32,56,48,48,24,112,28,112,28,240,30, + 240,30,240,30,240,30,240,30,240,30,112,28,112,28,48,24, + 48,56,8,32,7,192,15,24,48,18,2,0,0,96,0,96, + 0,224,1,128,1,0,0,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,24,48,18, + 2,0,1,0,3,128,7,128,14,192,24,48,0,0,7,192, + 8,32,56,48,48,24,112,28,112,28,240,30,240,30,240,30, + 240,30,240,30,240,30,112,28,112,28,48,24,48,56,8,32, + 7,192,15,23,46,18,2,0,7,32,15,224,16,192,0,0, + 0,0,7,192,8,32,56,48,48,24,112,28,112,28,240,30, + 240,30,240,30,240,30,240,30,240,30,112,28,112,28,48,24, + 48,56,8,32,7,192,15,23,46,18,2,0,28,224,28,224, + 28,224,0,0,0,0,7,192,8,32,56,48,48,24,112,28, + 112,28,240,30,240,30,240,30,240,30,240,30,240,30,112,28, + 112,28,48,24,48,56,8,32,7,192,16,15,30,24,4,0, + 192,3,96,6,48,12,24,24,12,48,6,96,3,192,1,128, + 3,192,6,96,12,48,56,24,112,12,224,6,192,3,15,18, + 36,18,2,0,7,194,8,116,48,60,48,56,112,60,112,124, + 240,94,240,222,241,158,243,30,246,30,244,30,124,28,120,28, + 56,24,120,24,92,32,135,192,18,24,72,20,2,0,6,0, + 0,7,0,0,3,0,0,1,128,0,0,0,0,0,0,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,18,24,72,20,2,0,0,24,0,0, + 56,0,0,112,0,0,192,0,0,128,0,0,0,0,255,31, + 192,56,7,0,56,2,0,56,2,0,56,2,0,56,2,0, + 56,2,0,56,2,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,24,2,0,28,4,0,14,8, + 0,3,240,0,18,24,72,20,2,0,0,128,0,1,192,0, + 1,224,0,6,48,0,8,8,0,0,0,0,255,31,192,56, + 7,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,56,2,0,56,2,0, + 56,2,0,56,2,0,24,2,0,28,4,0,14,8,0,3, + 240,0,18,23,69,20,2,0,7,56,0,7,56,0,7,56, + 0,0,0,0,0,0,0,255,31,192,56,7,0,56,2,0, + 56,2,0,56,2,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,24,2,0,28,4,0,14,8,0,3,240,0,16,23,46, + 19,2,1,0,112,0,96,0,192,1,0,0,0,254,127,60, + 12,60,8,30,16,30,16,30,16,15,32,15,32,7,64,7, + 192,3,128,3,128,3,128,3,128,3,128,3,128,3,128,15, + 240,15,18,36,18,2,0,255,128,56,0,56,0,63,224,56, + 56,56,28,56,30,56,30,56,30,56,30,56,28,56,56,63, + 224,56,0,56,0,56,0,56,0,255,128,12,18,36,13,0, + 0,7,128,12,192,24,224,56,224,56,224,56,224,56,192,59, + 0,56,192,56,96,56,112,56,112,56,112,56,112,56,112,63, + 112,63,96,251,192,11,18,36,13,1,0,32,0,48,0,48, + 0,24,0,4,0,0,0,30,0,99,0,99,128,115,128,7, + 128,27,128,115,128,227,128,227,160,227,160,247,160,121,192,11, + 18,36,13,1,0,3,0,3,0,6,0,4,0,8,0,0, + 0,30,0,99,0,99,128,115,128,35,128,31,128,115,128,227, + 128,227,160,227,160,247,160,121,192,11,18,36,13,1,0,12, + 0,12,0,30,0,50,0,65,0,0,0,30,0,99,0,99, + 128,115,128,35,128,31,128,115,128,227,128,227,160,227,160,247, + 160,121,192,11,17,34,13,1,0,57,0,127,0,70,0,0, + 0,0,0,30,0,99,0,99,128,115,128,35,128,31,128,115, + 128,227,128,227,160,227,160,247,160,121,192,11,17,34,13,1, + 0,119,0,119,0,119,0,0,0,0,0,30,0,99,0,99, + 128,115,128,35,128,31,128,115,128,227,128,227,160,227,160,247, + 160,121,192,11,18,36,13,1,0,28,0,38,0,34,0,34, + 0,28,0,0,0,30,0,99,0,99,128,115,128,35,128,31, + 128,115,128,227,128,227,160,227,160,231,160,121,192,15,12,24, + 18,1,0,62,248,99,140,99,142,115,142,7,142,27,254,115, + 128,227,128,227,130,227,130,247,196,120,120,9,18,36,12,1, + 250,30,0,49,0,113,128,227,128,227,128,224,0,224,0,224, + 0,224,128,112,128,49,0,30,0,8,0,8,0,6,0,6, + 0,6,0,28,0,9,18,36,12,1,0,32,0,112,0,48, + 0,24,0,4,0,0,0,30,0,51,0,99,128,227,128,227, + 128,255,128,224,0,224,0,224,128,112,128,49,0,30,0,9, + 18,36,12,1,0,3,0,7,0,6,0,12,0,8,0,0, + 0,30,0,51,0,99,128,227,128,227,128,255,128,224,0,224, + 0,224,128,112,128,49,0,30,0,9,18,36,12,1,0,12, + 0,28,0,28,0,50,0,65,0,0,0,30,0,51,0,99, + 128,227,128,227,128,255,128,224,0,224,0,224,128,112,128,49, + 0,30,0,9,17,34,12,1,0,115,128,115,128,115,128,0, + 0,0,0,30,0,51,0,99,128,227,128,227,128,255,128,224, + 0,224,0,224,0,112,128,49,0,30,0,7,18,18,8,1, + 0,192,224,112,16,8,0,120,56,56,56,56,56,56,56,56, + 56,56,126,6,18,18,8,1,0,12,28,24,48,0,0,240, + 112,112,112,112,112,112,112,112,112,112,248,7,18,18,7,0, + 0,56,56,108,198,0,0,120,56,56,56,56,56,56,56,56, + 56,56,126,7,17,17,8,1,0,238,238,238,0,0,120,56, + 56,56,56,56,56,56,56,56,56,126,10,18,36,12,1,0, + 57,128,30,0,14,0,31,0,39,0,3,128,31,128,51,192, + 97,192,225,192,225,192,225,192,225,192,225,192,225,192,97,128, + 51,128,30,0,11,17,34,13,1,0,24,128,63,128,39,0, + 0,0,0,0,243,128,125,192,121,192,113,192,113,192,113,192, + 113,192,113,192,113,192,113,192,113,192,251,224,10,18,36,12, + 1,0,48,0,48,0,24,0,12,0,4,0,0,0,30,0, + 51,0,97,128,225,192,225,192,225,192,225,192,225,192,225,192, + 97,128,51,0,30,0,10,18,36,12,1,0,3,0,3,0, + 7,0,4,0,8,0,0,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 10,18,36,12,1,0,12,0,14,0,30,0,51,0,96,128, + 0,0,30,0,51,0,97,128,225,192,225,192,225,192,225,192, + 225,192,225,192,97,128,51,0,30,0,10,17,34,12,1,0, + 56,128,63,0,70,0,0,0,0,0,30,0,51,0,97,128, + 225,192,225,192,225,192,225,192,225,192,225,192,97,128,51,0, + 30,0,10,17,34,12,1,0,115,128,115,128,115,128,0,0, + 0,0,30,0,51,0,97,128,225,192,225,192,225,192,225,192, + 225,192,225,192,97,128,51,0,30,0,21,17,51,23,1,254, + 0,48,0,0,120,0,0,120,0,0,48,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,248,255,255,248,0,0, + 0,0,0,0,0,0,0,0,48,0,0,120,0,0,120,0, + 0,48,0,10,12,24,12,1,0,30,64,51,128,97,128,225, + 192,227,192,229,192,233,192,241,192,241,192,97,128,115,0,158, + 0,12,18,36,13,0,0,24,0,24,0,12,0,6,0,2, + 0,0,0,249,224,56,224,56,224,56,224,56,224,56,224,56, + 224,56,224,56,224,57,224,58,224,28,240,12,18,36,13,0, + 0,1,128,1,128,3,0,2,0,0,0,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,18,36,13,0,0,6,0,6,0,15, + 0,25,128,0,0,0,0,249,224,56,224,56,224,56,224,56, + 224,56,224,56,224,56,224,56,224,57,224,58,224,28,240,12, + 17,34,13,0,0,57,192,57,192,57,192,0,0,0,0,249, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 224,57,224,58,224,28,240,12,24,48,12,0,250,1,128,1, + 128,3,0,6,0,4,0,0,0,252,240,112,64,56,64,56, + 128,28,128,28,128,29,0,15,0,15,0,7,0,6,0,6, + 0,2,0,4,0,116,0,116,0,104,0,56,0,12,23,46, + 13,0,250,24,0,120,0,184,0,56,0,56,0,57,224,58, + 240,60,112,60,112,56,112,56,96,56,224,56,192,56,128,57, + 0,58,0,60,0,56,0,56,0,56,0,56,0,96,0,128, + 0,13,23,46,13,0,250,28,224,28,224,28,224,0,0,0, + 0,254,120,56,32,60,64,28,64,30,64,14,64,14,128,7, + 128,7,128,7,0,3,0,3,0,2,0,2,0,58,0,60, + 0,52,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 18 + Calculated Max Values w=21 h=23 x= 3 y= 8 dx=23 dy= 0 ascent=18 len=63 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18n[600] U8G_SECTION(".progmem.u8g_font_osb18n") = { + 0,70,31,234,249,18,0,0,0,0,42,57,0,18,251,18, + 0,9,10,20,13,2,8,24,0,24,0,201,128,235,128,28, + 0,44,0,235,128,217,128,24,0,24,0,21,21,63,23,1, + 253,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,255, + 255,248,255,255,248,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 4,9,9,7,2,251,224,240,240,240,16,32,32,64,128,6, + 3,3,8,1,5,252,252,252,4,4,4,8,2,0,96,240, + 240,96,9,23,46,11,1,251,1,128,1,128,1,0,3,0, + 3,0,2,0,6,0,6,0,4,0,12,0,12,0,8,0, + 24,0,24,0,24,0,16,0,48,0,48,0,32,0,96,0, + 96,0,64,0,192,0,12,18,36,15,1,0,15,0,25,128, + 48,192,112,224,112,224,240,224,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,112,224,112,224,48,192,25,128,15,0, + 8,18,18,15,3,0,24,56,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,255,11,18,36,15,2,0,31,0, + 113,192,96,224,224,224,240,224,248,224,121,192,1,192,3,0, + 6,0,8,0,48,32,64,32,64,32,255,224,191,224,143,192, + 135,128,12,18,36,15,1,0,31,0,49,192,96,224,112,224, + 120,224,120,224,0,192,1,128,62,0,1,192,0,224,0,240, + 112,240,248,240,240,240,192,224,65,192,63,0,11,18,36,15, + 2,0,3,0,7,0,7,0,15,0,15,0,23,0,55,0, + 39,0,103,0,71,0,199,0,135,0,255,224,7,0,7,0, + 7,0,7,0,63,224,11,18,36,15,2,0,65,128,127,128, + 126,0,120,0,64,0,64,0,95,0,99,128,65,192,65,224, + 1,224,33,224,241,224,241,224,225,192,193,192,67,128,62,0, + 11,18,36,15,2,0,7,128,24,64,48,224,113,224,113,224, + 240,0,240,0,247,128,249,192,240,224,240,224,240,224,240,224, + 112,224,112,224,48,192,57,192,15,0,11,18,36,15,2,0, + 156,64,190,96,255,32,255,224,128,32,128,64,128,64,0,128, + 1,128,3,0,7,0,6,0,14,0,30,0,30,0,30,0, + 30,0,12,0,12,18,36,15,1,0,31,128,32,64,64,32, + 192,32,192,32,240,32,252,64,127,128,127,192,63,224,103,240, + 193,240,192,112,192,48,192,48,96,32,112,64,31,128,12,18, + 36,15,2,0,31,0,113,128,96,192,224,224,224,224,224,240, + 224,240,96,240,113,240,30,240,0,240,0,240,56,224,120,224, + 120,224,97,192,33,128,30,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--25-250-72-72-P-136-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 3 y=13 dx=27 dy= 0 ascent=20 len=72 + Font Bounding box w=70 h=31 x=-22 y=-7 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =18 descent=-6 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb18r[3611] U8G_SECTION(".progmem.u8g_font_osb18r") = { + 0,70,31,234,249,18,4,190,10,54,32,127,250,20,250,18, + 250,0,0,0,7,0,0,4,18,18,6,1,0,96,240,240, + 240,240,240,96,96,96,96,96,64,0,0,96,240,240,96,6, + 6,6,10,2,12,204,204,204,204,204,204,15,18,36,19,2, + 0,6,24,6,24,4,16,4,16,12,48,255,254,255,254,12, + 48,8,32,8,32,24,96,24,96,255,254,255,254,16,64,16, + 64,48,192,48,192,11,22,44,14,2,254,9,0,9,0,31, + 128,105,64,73,32,201,32,201,96,249,224,249,64,127,0,63, + 128,31,192,15,192,73,224,233,224,201,96,137,96,137,96,73, + 192,63,128,9,0,9,0,17,18,54,21,2,0,56,4,0, + 68,12,0,198,8,0,198,24,0,198,48,0,198,32,0,198, + 96,0,76,64,0,56,192,0,1,142,0,1,27,0,3,49, + 128,2,49,128,4,49,128,12,49,128,8,49,128,24,17,0, + 16,14,0,17,18,54,19,1,0,3,192,0,4,32,0,12, + 32,0,12,32,0,12,32,0,14,64,0,15,128,0,7,0, + 0,15,143,128,27,195,0,49,194,0,96,226,0,224,244,0, + 224,120,0,240,56,0,240,60,0,126,223,128,63,15,0,2, + 6,6,6,2,12,192,192,192,192,192,192,7,23,23,9,1, + 251,2,4,8,16,48,96,96,96,224,224,224,224,224,224,224, + 96,96,96,48,16,8,4,2,7,23,23,9,0,251,128,64, + 32,16,24,12,12,14,14,14,14,14,14,14,14,14,12,12, + 24,16,32,64,128,9,10,20,13,2,8,24,0,24,0,201, + 128,235,128,28,0,44,0,235,128,217,128,24,0,24,0,21, + 21,63,23,1,253,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,255,255,248,255,255,248,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,48, + 0,0,48,0,4,9,9,7,2,251,224,240,240,240,16,32, + 32,64,128,6,3,3,8,1,5,252,252,252,4,4,4,8, + 2,0,96,240,240,96,9,23,46,11,1,251,1,128,1,128, + 1,0,3,0,3,0,2,0,6,0,6,0,4,0,12,0, + 12,0,8,0,24,0,24,0,24,0,16,0,48,0,48,0, + 32,0,96,0,96,0,64,0,192,0,12,18,36,15,1,0, + 15,0,25,128,48,192,112,224,112,224,240,224,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,112,224,112,224,48,192, + 25,128,15,0,8,18,18,15,3,0,24,56,248,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,255,11,18,36,15, + 2,0,31,0,113,192,96,224,224,224,240,224,248,224,121,192, + 1,192,3,0,6,0,8,0,48,32,64,32,64,32,255,224, + 191,224,143,192,135,128,12,18,36,15,1,0,31,0,49,192, + 96,224,112,224,120,224,120,224,0,192,1,128,62,0,1,192, + 0,224,0,240,112,240,248,240,240,240,192,224,65,192,63,0, + 11,18,36,15,2,0,3,0,7,0,7,0,15,0,15,0, + 23,0,55,0,39,0,103,0,71,0,199,0,135,0,255,224, + 7,0,7,0,7,0,7,0,63,224,11,18,36,15,2,0, + 65,128,127,128,126,0,120,0,64,0,64,0,95,0,99,128, + 65,192,65,224,1,224,33,224,241,224,241,224,225,192,193,192, + 67,128,62,0,11,18,36,15,2,0,7,128,24,64,48,224, + 113,224,113,224,240,0,240,0,247,128,249,192,240,224,240,224, + 240,224,240,224,112,224,112,224,48,192,57,192,15,0,11,18, + 36,15,2,0,156,64,190,96,255,32,255,224,128,32,128,64, + 128,64,0,128,1,128,3,0,7,0,6,0,14,0,30,0, + 30,0,30,0,30,0,12,0,12,18,36,15,1,0,31,128, + 32,64,64,32,192,32,192,32,240,32,252,64,127,128,127,192, + 63,224,103,240,193,240,192,112,192,48,192,48,96,32,112,64, + 31,128,12,18,36,15,2,0,31,0,113,128,96,192,224,224, + 224,224,224,240,224,240,96,240,113,240,30,240,0,240,0,240, + 56,224,120,224,120,224,97,192,33,128,30,0,4,12,12,8, + 2,0,96,240,240,96,0,0,0,0,96,240,240,96,4,17, + 17,7,2,251,96,240,240,96,0,0,0,0,224,240,240,240, + 16,32,32,64,128,19,21,63,24,2,252,0,0,96,0,1, + 224,0,7,128,0,14,0,0,56,0,0,224,0,3,128,0, + 15,0,0,60,0,0,112,0,0,224,0,0,120,0,0,28, + 0,0,7,0,0,1,192,0,0,112,0,0,60,0,0,15, + 0,0,3,128,0,0,224,0,0,32,21,7,21,23,1,3, + 255,255,248,255,255,248,0,0,0,0,0,0,0,0,0,255, + 255,248,255,255,248,19,21,63,24,2,252,192,0,0,240,0, + 0,60,0,0,14,0,0,3,128,0,0,224,0,0,56,0, + 0,30,0,0,7,128,0,1,192,0,0,224,0,3,192,0, + 7,0,0,28,0,0,112,0,1,192,0,7,128,0,30,0, + 0,56,0,0,224,0,0,128,0,0,8,18,18,12,2,0, + 60,78,135,135,135,78,12,24,16,32,36,36,24,0,24,60, + 60,24,18,18,54,20,1,0,3,240,0,12,12,0,24,3, + 0,48,237,0,97,173,128,99,28,128,199,28,192,207,24,192, + 206,24,192,206,56,192,206,56,192,206,56,128,78,49,128,110, + 91,0,35,156,0,48,0,0,12,4,0,3,248,0,17,18, + 54,19,1,0,0,192,0,0,192,0,0,192,0,1,224,0, + 1,224,0,1,224,0,2,240,0,2,240,0,4,112,0,4, + 120,0,4,120,0,8,56,0,15,252,0,8,60,0,16,28, + 0,16,30,0,48,30,0,252,127,128,15,18,36,18,2,0, + 255,224,56,56,56,56,56,28,56,28,56,28,56,56,56,48, + 63,192,56,56,56,28,56,30,56,30,56,30,56,30,56,28, + 56,56,255,240,13,18,36,17,2,0,7,136,24,120,48,56, + 112,24,112,24,240,8,240,8,240,8,240,0,240,0,240,0, + 240,8,240,8,112,8,112,8,56,16,24,32,7,192,16,18, + 36,19,2,0,255,224,56,56,56,28,56,14,56,14,56,14, + 56,15,56,15,56,15,56,15,56,15,56,15,56,14,56,14, + 56,12,56,28,56,56,255,224,14,18,36,18,2,0,255,252, + 56,28,56,12,56,12,56,4,56,68,56,64,56,192,56,192, + 63,192,56,192,56,68,56,68,56,4,56,4,56,12,56,28, + 255,252,14,18,36,17,2,0,255,252,56,60,56,28,56,12, + 56,4,56,68,56,68,56,192,56,192,63,192,56,192,56,64, + 56,64,56,0,56,0,56,0,56,0,255,0,15,18,36,18, + 2,0,7,136,24,104,48,56,112,24,112,8,112,8,240,8, + 240,0,240,0,241,254,240,56,240,56,240,56,112,56,112,56, + 48,40,24,72,15,136,17,18,54,20,2,0,255,127,128,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,63,254,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,255, + 127,128,8,18,18,11,2,0,255,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,255,11,18,36,13,1,0, + 31,224,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,115,128,243,128,243,128,227,128,195,128, + 67,0,60,0,17,18,54,19,2,0,254,127,0,56,24,0, + 56,16,0,56,32,0,56,64,0,56,192,0,57,128,0,59, + 192,0,59,192,0,61,224,0,57,240,0,56,240,0,56,248, + 0,56,120,0,56,124,0,56,60,0,56,62,0,254,127,128, + 14,18,36,17,2,0,255,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,4,56,4,56,4, + 56,12,56,12,56,28,56,60,255,252,20,18,54,22,1,0, + 254,3,240,30,3,192,30,3,192,31,5,192,31,5,192,23, + 5,192,23,133,192,23,137,192,19,201,192,19,201,192,17,209, + 192,17,241,192,17,241,192,16,241,192,16,225,192,16,225,192, + 56,97,192,254,111,240,17,18,54,18,1,0,252,63,128,60, + 14,0,62,4,0,31,4,0,31,4,0,31,132,0,23,196, + 0,19,196,0,17,228,0,17,244,0,16,244,0,16,124,0, + 16,124,0,16,60,0,16,28,0,16,28,0,56,12,0,254, + 4,0,15,18,36,18,2,0,7,192,8,32,56,48,48,24, + 112,28,112,28,240,30,240,30,240,30,240,30,240,30,240,30, + 112,28,112,28,48,24,48,56,8,32,7,192,15,18,36,18, + 2,0,255,240,56,56,56,28,56,30,56,30,56,30,56,30, + 56,28,56,56,63,224,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,255,128,15,24,48,18,2,250,7,192,8,32, + 56,56,48,24,112,28,112,28,240,30,240,30,240,30,240,30, + 240,30,240,30,112,28,112,28,51,152,52,176,28,226,7,194, + 0,194,0,194,0,230,0,254,0,124,0,56,16,18,36,19, + 2,0,255,224,56,120,56,56,56,60,56,60,56,60,56,56, + 56,112,63,192,56,96,56,48,56,56,56,56,56,57,56,57, + 56,57,56,57,255,158,12,18,36,15,2,0,30,32,97,160, + 192,224,192,96,224,32,240,32,252,0,126,0,63,128,15,192, + 135,224,129,240,128,240,192,48,192,48,224,32,176,96,143,128, + 15,18,36,18,2,0,255,254,231,30,199,14,135,14,135,6, + 135,6,7,2,7,2,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,31,224,18,18,54,20,2,0, + 255,31,192,56,7,0,56,2,0,56,2,0,56,2,0,56, + 2,0,56,2,0,56,2,0,56,2,0,56,2,0,56,2, + 0,56,2,0,56,2,0,56,2,0,24,2,0,28,4,0, + 14,8,0,3,240,0,17,18,54,19,2,0,255,63,128,60, + 6,0,60,4,0,30,4,0,30,8,0,30,8,0,15,8, + 0,15,16,0,7,144,0,7,144,0,7,160,0,3,224,0, + 3,224,0,3,192,0,1,192,0,1,192,0,1,192,0,0, + 128,0,26,18,72,27,1,0,255,191,223,192,30,15,6,0, + 30,15,6,0,15,15,4,0,15,15,132,0,15,15,132,0, + 7,143,140,0,7,139,200,0,7,147,200,0,3,211,200,0, + 3,209,240,0,3,225,240,0,1,225,240,0,1,224,240,0, + 1,224,224,0,0,192,224,0,0,192,96,0,0,192,64,0, + 16,18,36,19,2,0,255,63,62,24,30,16,31,16,15,32, + 15,224,7,192,7,192,3,192,3,224,3,224,2,240,4,240, + 8,120,8,120,16,60,48,60,252,255,16,18,36,19,2,0, + 254,127,60,12,60,8,30,16,30,16,30,16,15,32,15,32, + 7,64,7,192,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,15,240,13,18,36,16,2,0,127,248,112,120,96,240, + 97,240,65,224,67,224,3,192,7,192,7,128,15,0,15,0, + 30,0,30,8,60,8,124,24,120,24,248,56,255,248,6,22, + 22,10,2,252,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,252,9,23,46,11,1,251, + 192,0,64,0,96,0,96,0,32,0,48,0,48,0,16,0, + 24,0,24,0,24,0,8,0,12,0,12,0,4,0,6,0, + 6,0,2,0,3,0,3,0,1,0,1,128,1,128,6,22, + 22,10,2,252,252,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,11,9,18,15,2,9, + 4,0,12,0,30,0,27,0,51,0,49,128,96,192,192,192, + 192,96,13,2,4,13,0,252,255,248,255,248,4,4,4,11, + 2,13,192,224,96,48,11,12,24,13,1,0,30,0,99,0, + 99,128,115,128,35,128,31,128,115,128,227,128,227,160,227,160, + 247,160,121,192,12,18,36,13,0,0,248,0,56,0,56,0, + 56,0,56,0,56,0,59,128,60,224,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,36,192,35,128,9,12, + 24,12,1,0,30,0,49,0,113,128,227,128,227,128,224,0, + 224,0,224,0,224,128,112,128,49,0,30,0,12,18,36,13, + 1,0,7,192,1,192,1,192,1,192,1,192,1,192,29,192, + 115,192,99,192,225,192,225,192,225,192,225,192,225,192,225,192, + 99,192,115,192,29,240,9,12,24,12,1,0,30,0,51,0, + 99,128,227,128,227,128,255,128,224,0,224,0,224,128,112,128, + 49,0,30,0,9,18,36,9,1,0,15,0,29,128,59,128, + 59,128,57,0,56,0,252,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,252,0,12,18, + 36,14,1,250,30,112,51,176,113,240,113,192,113,192,113,192, + 51,128,30,0,96,0,127,128,127,192,63,224,96,224,128,96, + 128,96,128,64,64,192,63,0,12,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,192,62,224,60,224, + 56,224,56,224,56,224,56,224,56,224,56,224,56,224,56,224, + 253,240,5,18,18,7,1,0,112,112,112,32,0,0,240,112, + 112,112,112,112,112,112,112,112,112,248,7,24,24,8,255,250, + 14,14,14,4,0,0,62,14,14,14,14,14,14,14,14,14, + 14,14,14,110,238,238,204,120,13,18,36,13,0,0,248,0, + 56,0,56,0,56,0,56,0,56,0,57,240,56,192,56,128, + 57,0,57,0,59,128,63,128,57,192,57,192,56,224,56,224, + 255,248,7,18,18,8,0,0,248,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,254,18,12,36,19,1,0, + 243,142,0,125,247,0,121,231,0,113,199,0,113,199,0,113, + 199,0,113,199,0,113,199,0,113,199,0,113,199,0,113,199, + 0,251,239,192,11,12,24,13,1,0,243,128,125,192,121,192, + 113,192,113,192,113,192,113,192,113,192,113,192,113,192,113,192, + 251,224,10,12,24,12,1,0,30,0,51,0,97,128,225,192, + 225,192,225,192,225,192,225,192,225,192,97,128,51,0,30,0, + 12,18,36,13,0,250,251,128,60,192,60,224,56,112,56,112, + 56,112,56,112,56,112,56,112,60,224,60,224,59,192,56,0, + 56,0,56,0,56,0,56,0,254,0,11,18,36,13,1,250, + 28,64,50,64,99,192,225,192,225,192,225,192,225,192,225,192, + 225,192,99,192,115,192,61,192,1,192,1,192,1,192,1,192, + 1,192,7,224,9,12,24,11,1,0,243,0,117,128,123,128, + 123,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 248,0,9,12,24,11,1,0,57,0,199,0,195,0,225,0, + 240,0,124,0,63,0,143,128,131,128,193,128,225,0,158,0, + 8,17,17,10,1,0,16,16,16,48,112,254,112,112,112,112, + 112,113,113,113,113,114,60,12,12,24,13,0,0,249,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,224,56,224,57, + 224,58,224,28,240,12,12,24,13,1,0,253,240,112,64,56, + 64,56,128,28,128,28,128,29,0,15,0,14,0,14,0,6, + 0,4,0,19,12,36,19,0,0,253,251,224,56,112,128,28, + 112,128,28,113,0,28,121,0,14,185,0,14,154,0,14,158, + 0,7,28,0,7,12,0,2,12,0,2,8,0,12,12,24, + 13,0,0,253,240,56,64,28,128,31,0,15,0,15,0,7, + 0,7,128,11,192,17,192,17,224,253,240,12,18,36,12,0, + 250,252,240,112,64,56,64,56,128,28,128,28,128,29,0,15, + 0,15,0,7,0,6,0,6,0,2,0,4,0,116,0,116, + 0,104,0,56,0,10,12,24,12,1,0,127,192,99,128,71, + 128,71,0,15,0,14,0,28,0,60,64,56,64,120,64,112, + 192,255,192,8,23,23,10,1,251,3,28,56,56,56,56,56, + 56,56,56,48,192,48,56,56,56,56,56,56,56,56,28,3, + 2,23,23,8,3,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,23,23, + 11,2,251,192,112,56,56,56,56,56,56,56,56,28,7,28, + 56,56,56,56,56,56,56,56,112,192,14,5,10,16,1,4, + 120,8,255,4,143,196,131,252,64,120,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=28 h=29 x= 5 y=17 dx=31 dy= 0 ascent=28 len=87 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21[9612] U8G_SECTION(".progmem.u8g_font_osb21") = { + 0,77,36,232,248,21,5,141,12,241,32,255,249,28,248,21, + 249,0,0,0,8,0,0,5,21,21,9,2,1,240,248,248, + 248,248,112,112,112,112,32,32,32,32,32,32,0,0,112,248, + 248,112,7,6,6,11,2,16,238,238,238,238,198,68,16,21, + 42,20,2,0,6,12,6,12,6,12,6,8,6,24,6,24, + 255,255,255,255,12,24,12,24,12,48,12,48,12,48,8,48, + 255,255,255,255,24,32,24,96,24,96,16,96,48,96,13,25, + 50,16,2,254,9,0,11,0,61,192,105,48,73,8,201,8, + 201,56,233,120,249,112,253,0,127,0,127,0,63,192,15,224, + 15,240,73,248,233,248,233,56,201,24,137,24,137,16,73,32, + 57,192,15,0,9,0,19,22,66,25,3,0,0,1,0,60, + 3,0,102,2,0,231,4,0,231,4,0,231,8,0,231,8, + 0,231,16,0,231,48,0,102,32,0,102,96,0,24,64,0, + 0,195,0,0,140,192,1,140,192,1,28,224,2,28,224,2, + 28,224,4,28,224,4,28,224,8,12,192,24,7,128,20,21, + 63,22,1,1,3,224,0,6,16,0,14,16,0,14,16,0, + 14,16,0,14,48,0,15,32,0,15,64,0,7,128,0,3, + 192,0,7,195,240,9,224,192,48,224,128,112,240,128,112,121, + 0,240,59,0,240,62,0,240,30,0,248,31,16,126,111,160, + 63,199,192,3,6,6,7,2,16,224,224,224,224,192,64,8, + 27,27,10,2,250,1,2,4,8,24,48,48,112,112,240,240, + 240,240,240,240,240,240,112,112,112,48,48,24,8,4,2,1, + 8,26,26,10,1,250,128,192,96,48,24,24,12,12,14,14, + 14,14,15,15,15,14,14,14,14,12,12,24,24,48,96,192, + 11,12,24,14,2,9,14,0,14,0,78,192,228,224,245,192, + 14,0,14,0,245,192,228,192,78,192,14,0,14,0,24,25, + 75,26,1,252,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,24,0,0,24,0,255,255,255,255,255,255,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,5, + 10,10,7,1,251,112,248,248,248,120,8,16,16,32,192,7, + 3,3,11,2,6,254,254,254,4,4,4,8,2,0,96,240, + 240,96,9,27,54,13,2,250,1,128,1,128,1,128,3,0, + 3,0,3,0,2,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,16,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,192,0,128,0,14,21, + 42,16,1,1,15,192,24,96,56,112,56,112,120,120,120,120, + 248,120,248,124,248,124,248,124,248,124,248,124,248,124,248,124, + 248,120,120,120,120,120,56,112,56,112,24,96,15,192,9,21, + 42,16,3,0,6,0,14,0,30,0,254,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,12,21, + 42,16,2,1,63,192,97,224,96,224,224,240,224,240,240,240, + 248,240,121,224,49,224,3,192,7,128,14,0,28,0,48,16, + 96,16,64,16,192,16,255,240,255,224,143,224,135,192,13,21, + 42,16,2,1,63,192,96,224,96,224,224,240,240,240,248,240, + 120,240,112,240,0,224,1,192,31,0,0,224,0,240,0,112, + 112,120,248,120,248,120,240,120,224,112,96,240,59,192,13,21, + 42,16,1,0,1,192,1,192,3,192,3,192,7,192,7,192, + 15,192,27,192,27,192,51,192,35,192,99,192,67,192,195,192, + 255,248,3,192,3,192,3,192,3,192,3,192,31,248,13,21, + 42,16,2,0,96,224,127,192,127,128,127,0,120,0,64,0, + 64,0,64,0,79,0,113,224,64,240,64,240,0,248,0,248, + 112,248,248,248,248,248,240,240,224,240,97,224,59,192,13,21, + 42,16,2,1,15,224,24,32,56,48,48,240,112,240,112,240, + 240,96,240,0,240,0,247,128,248,224,240,112,240,112,240,112, + 240,120,112,120,112,112,112,112,48,112,56,96,13,192,11,21, + 42,16,3,0,156,64,190,96,255,32,255,32,199,224,129,160, + 128,64,128,64,0,128,0,128,1,0,3,0,7,0,6,0, + 14,0,14,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,16,2,1,31,192,48,32,96,48,96,16,224,16,240,16, + 248,32,254,32,127,192,63,192,31,240,31,248,99,248,64,248, + 192,60,192,24,192,24,192,24,96,16,112,48,31,192,13,21, + 42,16,2,1,31,128,48,192,112,96,112,112,240,112,240,112, + 240,120,240,120,240,120,112,120,112,120,56,248,15,120,0,120, + 0,120,56,112,120,112,120,96,112,224,96,192,63,128,4,14, + 14,8,2,0,96,240,240,240,96,0,0,0,0,0,96,240, + 240,96,5,19,19,8,2,251,96,240,240,240,96,0,0,0, + 0,112,240,248,248,248,8,16,16,32,192,21,24,72,26,2, + 252,0,0,24,0,0,56,0,0,240,0,3,192,0,15,0, + 0,28,0,0,120,0,1,224,0,7,128,0,14,0,0,60, + 0,0,240,0,0,224,0,0,120,0,0,30,0,0,7,128, + 0,1,192,0,0,240,0,0,60,0,0,15,0,0,3,128, + 0,1,224,0,0,120,0,0,24,24,8,24,26,1,4,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,21,24,72,26,3,252,128,0,0, + 224,0,0,120,0,0,30,0,0,7,128,0,1,192,0,0, + 240,0,0,60,0,0,15,0,0,3,128,0,1,224,0,0, + 120,0,0,56,0,0,240,0,3,192,0,15,0,0,28,0, + 0,120,0,1,224,0,7,128,0,14,0,0,60,0,0,240, + 0,0,192,0,0,9,21,42,13,2,1,126,0,71,0,135, + 128,135,128,135,128,135,128,71,0,14,0,12,0,28,0,16, + 0,48,0,34,0,34,0,34,0,28,0,0,0,12,0,30, + 0,30,0,12,0,20,22,66,22,1,0,0,32,0,3,222, + 0,12,3,0,24,0,128,48,0,192,48,112,96,97,207,96, + 99,142,48,199,142,48,199,14,48,199,14,48,207,14,48,207, + 28,48,207,28,32,207,28,96,79,60,64,103,44,128,99,199, + 0,48,0,0,24,0,0,12,2,0,3,252,0,19,21,63, + 22,2,0,0,64,0,0,96,0,0,224,0,0,224,0,0, + 240,0,1,240,0,1,240,0,1,248,0,2,120,0,2,120, + 0,2,124,0,4,60,0,4,60,0,4,62,0,15,254,0, + 8,30,0,8,31,0,16,15,0,16,15,0,48,15,128,254, + 127,224,17,21,63,19,1,0,255,240,0,30,28,0,30,14, + 0,30,15,0,30,15,0,30,15,0,30,15,0,30,14,0, + 30,14,0,30,24,0,31,224,0,30,28,0,30,15,0,30, + 7,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 0,30,14,0,255,248,0,15,21,42,18,2,1,15,230,28, + 30,56,30,56,14,120,14,120,6,248,6,248,6,248,2,248, + 0,248,0,248,0,248,0,248,2,248,2,120,2,120,4,56, + 4,60,12,28,8,15,240,19,21,63,21,1,0,255,248,0, + 30,14,0,30,7,0,30,3,128,30,3,192,30,3,192,30, + 3,192,30,3,224,30,3,224,30,3,224,30,3,224,30,3, + 224,30,3,224,30,3,224,30,3,192,30,3,192,30,3,192, + 30,3,128,30,7,0,30,14,0,255,248,0,16,21,42,19, + 1,0,255,255,30,15,30,7,30,3,30,3,30,1,30,17, + 30,16,30,48,30,48,31,240,30,48,30,48,30,17,30,17, + 30,1,30,1,30,3,30,7,30,15,255,255,17,21,63,19, + 1,0,255,255,128,30,15,128,30,7,128,30,3,128,30,1, + 128,30,1,128,30,17,128,30,17,128,30,48,0,30,48,0, + 31,240,0,30,48,0,30,48,0,30,16,0,30,16,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,20,2,0,0,128,0,7,114,0,28,30,0, + 24,14,0,56,6,0,120,6,0,120,6,0,120,2,0,248, + 2,0,248,0,0,248,0,0,248,0,0,248,255,128,248,30, + 0,248,30,0,248,30,0,120,30,0,120,30,0,56,30,0, + 56,22,0,28,34,0,14,194,0,20,21,63,22,1,0,255, + 223,240,30,3,192,30,3,192,30,3,192,30,3,192,30,3, + 192,30,3,192,30,3,192,30,3,192,30,3,192,31,255,192, + 30,3,192,30,3,192,30,3,192,30,3,192,30,3,192,30, + 3,192,30,3,192,30,3,192,30,3,192,255,223,240,9,21, + 42,11,1,0,255,128,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,13,21, + 42,15,1,0,15,248,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,113,224, + 249,224,249,224,249,192,225,192,193,192,65,128,55,0,19,21, + 63,21,1,0,255,159,192,30,7,0,30,6,0,30,12,0, + 30,8,0,30,16,0,30,32,0,30,96,0,30,240,0,31, + 240,0,31,248,0,30,248,0,30,124,0,30,124,0,30,62, + 0,30,30,0,30,31,0,30,15,0,30,15,128,30,15,128, + 255,159,224,17,21,63,19,1,0,255,128,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,1,0, + 30,1,128,30,1,128,30,1,128,30,3,128,30,3,128,30, + 7,128,30,15,128,255,255,128,23,21,63,25,1,0,254,0, + 254,30,0,240,31,1,240,31,1,240,31,1,240,31,129,240, + 23,130,240,23,194,240,23,194,240,19,196,240,19,228,240,17, + 228,240,17,228,240,17,248,240,16,248,240,16,248,240,16,248, + 240,16,112,240,16,112,240,56,48,240,254,35,254,21,21,63, + 22,1,0,254,15,248,31,1,192,31,0,128,15,128,128,15, + 192,128,15,192,128,11,224,128,11,240,128,9,248,128,8,248, + 128,8,252,128,8,126,128,8,62,128,8,31,128,8,31,128, + 8,15,128,8,7,128,8,7,128,8,3,128,28,1,128,255, + 129,128,17,22,66,20,2,0,0,128,0,7,112,0,12,24, + 0,24,12,0,56,14,0,120,14,0,120,15,0,120,15,0, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,120,15,0,120,15,0,120,15,0,56,14, + 0,24,12,0,12,24,0,7,112,0,17,21,63,19,1,0, + 255,248,0,30,14,0,30,7,0,30,7,128,30,7,128,30, + 7,128,30,7,128,30,7,128,30,15,0,30,14,0,31,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,255,192,0,17, + 29,87,20,2,249,0,128,0,7,112,0,12,24,0,24,12, + 0,56,14,0,120,14,0,120,15,0,120,15,0,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,120,15,0,120,15,0,121,142,0,58,78,0,30,124, + 0,30,120,128,6,112,128,1,224,128,0,96,128,0,113,128, + 0,127,128,0,127,0,0,63,0,0,30,0,19,21,63,21, + 1,0,255,240,0,30,28,0,30,14,0,30,15,0,30,15, + 0,30,15,0,30,15,0,30,14,0,30,28,0,31,224,0, + 30,48,0,30,28,0,30,28,0,30,28,0,30,30,0,30, + 30,0,30,30,32,30,30,32,30,30,32,30,14,64,255,207, + 192,13,22,44,17,3,0,4,0,59,144,64,240,192,112,192, + 112,224,48,240,48,248,16,254,16,127,0,63,128,31,224,15, + 240,131,240,129,248,128,120,192,56,192,24,224,24,224,16,240, + 48,159,192,17,21,63,20,2,0,255,255,128,227,207,128,195, + 199,128,195,195,128,131,195,128,131,193,128,131,193,128,3,193, + 128,3,192,128,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,31,248,0,19,21,63,22,2,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,28,1,0,28,2,0,14,4,0,7,248,0,20,21,63, + 22,1,0,255,207,240,30,1,128,31,1,0,31,1,0,15, + 1,0,15,130,0,15,130,0,7,130,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,232,0,1,248,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 96,0,28,21,84,31,2,0,255,191,231,240,62,15,129,192, + 30,7,129,128,30,7,129,128,31,7,193,0,15,7,193,0, + 15,7,193,0,15,143,226,0,7,137,226,0,7,137,226,0, + 7,201,246,0,3,208,244,0,3,208,244,0,3,240,252,0, + 1,240,124,0,1,224,120,0,1,224,120,0,0,224,56,0, + 0,192,48,0,0,192,48,0,0,64,16,0,19,21,63,20, + 1,0,255,159,192,63,6,0,31,6,0,15,4,0,15,136, + 0,7,152,0,7,208,0,3,240,0,3,224,0,1,240,0, + 1,240,0,0,248,0,1,248,0,3,124,0,2,124,0,6, + 62,0,4,62,0,8,30,0,24,31,0,24,31,128,254,63, + 224,18,21,63,21,2,0,255,31,192,62,7,0,30,6,0, + 30,4,0,31,4,0,15,4,0,15,136,0,7,136,0,7, + 144,0,7,208,0,3,240,0,3,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,7,248,0,15,21,42,19,2,0,127,254,120,62, + 112,124,96,124,96,248,64,248,65,240,1,240,3,224,3,224, + 7,192,7,128,15,128,31,2,31,2,62,2,62,6,124,6, + 124,14,248,30,255,254,7,26,26,11,2,251,254,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,254,10,27,54,13,1,250,192,0,96,0, + 96,0,96,0,32,0,48,0,48,0,48,0,24,0,24,0, + 24,0,12,0,12,0,12,0,4,0,6,0,6,0,6,0, + 3,0,3,0,3,0,1,128,1,128,1,128,0,128,0,192, + 0,192,7,26,26,11,2,251,254,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,254,12,10,20,16,2,12,6,0,7,0,15,0,29,128, + 25,128,48,192,48,224,96,96,224,48,192,48,15,2,4,15, + 0,251,255,254,255,254,5,5,5,12,2,16,192,224,112,48, + 24,12,14,28,14,1,0,30,0,99,128,99,192,243,192,115, + 192,35,192,15,192,51,192,115,192,243,192,243,208,243,208,243, + 208,125,224,13,21,42,14,0,0,252,0,60,0,60,0,60, + 0,60,0,60,0,60,0,61,192,62,96,60,112,60,112,60, + 120,60,120,60,120,60,120,60,120,60,120,60,112,52,112,38, + 96,35,192,10,14,28,13,1,0,15,0,56,128,112,192,113, + 192,243,192,243,128,240,0,240,0,240,0,240,0,112,64,112, + 64,56,128,15,0,13,21,42,15,1,0,3,224,1,224,1, + 224,1,224,1,224,1,224,1,224,29,224,51,224,113,224,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,248,11,14,28,13,1,0,15,0,51,128,113, + 192,113,192,241,192,241,224,255,224,240,0,240,0,240,32,112, + 64,112,64,56,128,15,0,11,21,42,10,1,0,7,128,12, + 192,28,192,61,224,61,192,60,0,60,0,254,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,254,0,14,21,42,16,1,249,15,24,57, + 236,121,252,121,248,121,224,121,224,57,192,57,192,15,0,112, + 0,192,0,255,0,255,224,127,240,63,248,64,56,128,24,128, + 16,128,48,96,96,31,128,14,21,42,16,1,0,252,0,60, + 0,60,0,60,0,60,0,60,0,60,0,61,224,62,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,120,60,120,254,252,6,21,21,8,1,0,48,120,120, + 48,0,0,0,248,120,120,120,120,120,120,120,120,120,120,120, + 120,252,8,28,28,8,255,249,6,15,15,6,0,0,0,31, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,255, + 239,238,206,56,14,21,42,16,1,0,252,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,248,60,96,60,64,60,128, + 60,128,61,128,63,128,63,192,61,224,60,224,60,240,60,112, + 60,120,254,252,8,21,21,9,1,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,255,20, + 14,42,23,2,0,249,199,128,126,233,192,120,241,192,120,241, + 224,120,241,224,120,241,224,120,241,224,120,241,224,120,241,224, + 120,241,224,120,241,224,120,241,224,120,241,224,253,251,240,13, + 14,28,16,2,0,251,192,124,224,120,224,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,253, + 248,12,14,28,14,1,0,15,0,49,128,112,192,112,224,240, + 224,240,224,240,240,240,240,240,224,240,224,112,224,112,192,49, + 128,15,0,13,21,42,15,1,249,253,192,62,96,60,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,112,60, + 112,62,96,61,192,60,0,60,0,60,0,60,0,60,0,60, + 0,254,0,13,21,42,14,1,249,30,32,51,32,113,96,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,224,1,224,1,224,1,224,1,224,1,224,1, + 224,3,248,10,14,28,12,2,0,251,128,125,128,123,192,123, + 128,121,128,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,252,0,10,14,28,13,2,0,60,128,67,128,193, + 128,193,128,224,128,248,0,126,0,63,128,143,128,131,192,192, + 192,224,192,240,128,143,0,9,20,40,10,0,0,8,0,8, + 0,8,0,24,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,128,56,128,56,128,56,128,57, + 128,57,0,14,0,14,14,28,15,0,0,253,248,60,120,60, + 120,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,248,29,120,14,124,13,14,28,15,1,0,252,248,120, + 32,56,32,60,32,28,64,28,64,30,64,14,128,14,128,15, + 0,7,0,7,0,6,0,2,0,20,14,42,22,1,0,253, + 253,240,120,120,64,56,120,64,60,56,64,28,120,128,28,124, + 128,30,92,128,14,157,0,14,159,0,15,143,0,7,14,0, + 7,14,0,6,6,0,2,4,0,13,14,28,15,1,0,254, + 248,60,96,60,64,30,128,30,128,15,0,7,0,7,128,7, + 192,11,192,9,224,16,224,48,240,253,248,13,21,42,15,1, + 249,252,248,120,32,56,32,60,64,28,64,28,64,30,64,14, + 128,15,128,7,128,7,128,7,0,3,0,3,0,2,0,2, + 0,50,0,122,0,116,0,116,0,56,0,11,14,28,13,1, + 0,127,224,97,224,67,192,67,128,71,128,15,0,15,0,30, + 0,30,32,60,32,56,32,120,96,240,224,255,224,9,27,54, + 12,1,250,0,128,7,0,14,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,28,0,28,0,56,0,224,0,56, + 0,28,0,28,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,14,0,7,0,0,128,2,27,27,8,3,250,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,9,27,54,13,2,250, + 192,0,56,0,28,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,14,0,1,128,14,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,28,0, + 28,0,56,0,192,0,16,6,12,18,1,5,124,2,127,1, + 143,193,131,241,128,254,64,62,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,8,0,0,5, + 21,21,9,2,249,112,248,248,112,0,0,32,32,32,32,32, + 112,112,112,112,248,248,248,248,248,112,10,21,42,16,3,253, + 2,0,2,0,2,0,15,0,26,128,50,192,114,192,243,192, + 243,192,242,0,242,0,242,0,242,0,242,64,114,64,50,64, + 30,128,15,0,2,0,2,0,2,0,17,21,63,20,2,1, + 0,254,0,1,131,0,3,131,0,3,135,128,7,135,128,7, + 135,0,7,128,0,7,128,0,7,128,0,31,128,0,39,248, + 0,7,128,0,7,192,0,3,192,0,3,128,0,3,128,0, + 3,128,128,123,1,128,143,135,0,135,254,0,121,252,0,13, + 13,26,17,2,3,207,152,255,248,112,112,96,48,192,24,192, + 24,192,24,192,24,192,24,96,48,112,112,255,248,207,152,15, + 21,42,16,1,0,254,126,124,24,124,24,60,16,60,16,30, + 32,30,32,30,64,15,64,15,128,7,128,127,248,7,128,127, + 248,7,128,7,128,7,128,7,128,7,128,7,128,63,240,2, + 26,26,8,3,251,192,192,192,192,192,192,192,192,192,192,0, + 0,0,0,0,0,192,192,192,192,192,192,192,192,192,192,13, + 27,54,18,1,250,15,128,16,64,32,96,96,224,97,224,97, + 224,112,128,124,0,63,0,95,192,79,240,195,240,192,248,224, + 56,248,24,126,16,127,144,31,224,7,224,1,224,48,224,120, + 96,120,96,112,96,96,192,48,128,31,0,9,4,8,13,2, + 16,99,0,247,128,247,128,99,0,20,21,63,22,1,1,3, + 252,0,12,3,0,16,0,128,32,0,64,32,244,64,65,140, + 32,67,132,32,131,132,16,135,132,16,135,132,16,135,128,16, + 135,128,16,135,128,16,135,130,16,67,132,32,67,132,32,33, + 136,64,32,240,64,16,0,128,12,3,0,3,252,0,8,11, + 11,10,1,10,56,76,108,108,60,204,205,205,118,0,255,7, + 11,11,13,3,2,34,68,196,204,204,204,204,204,68,98,34, + 14,8,16,16,1,4,255,252,255,252,0,12,0,12,0,12, + 0,12,0,12,0,12,7,3,3,11,2,6,254,254,254,20, + 21,63,22,1,1,3,252,0,12,3,0,16,0,128,32,0, + 64,47,248,64,67,206,32,67,206,32,131,207,16,131,206,16, + 131,206,16,131,240,16,131,204,16,131,206,16,131,206,16,67, + 206,160,67,206,160,35,206,192,47,231,64,16,0,128,12,3, + 0,3,252,0,7,2,2,13,3,17,254,254,9,10,20,17, + 4,12,8,0,62,0,119,0,193,128,193,128,193,128,193,128, + 99,0,127,0,28,0,24,22,66,26,1,254,0,24,0,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,255,255,255,255,255,255,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,0,0,0,0,0,255,255,255,255,255,255,9,12, + 24,13,2,9,62,0,71,0,199,128,231,0,111,0,12,0, + 24,0,33,0,65,128,255,0,159,0,142,0,10,13,26,13, + 2,8,62,0,67,0,195,128,227,128,99,128,3,0,60,0, + 7,0,3,128,243,192,227,128,199,128,62,0,5,5,5,12, + 5,16,24,56,112,96,192,14,22,44,17,2,248,96,192,224, + 224,241,224,241,224,225,224,225,224,224,224,224,224,96,192,64, + 196,64,196,65,252,127,124,78,56,64,0,64,0,96,0,224, + 0,240,0,240,0,112,0,96,0,13,25,50,17,2,252,31, + 248,126,96,254,96,254,96,254,96,254,96,254,96,254,96,254, + 96,126,96,62,96,6,96,6,96,6,96,6,96,6,96,6, + 96,6,96,6,96,6,96,6,96,6,96,6,96,6,96,6, + 96,4,4,4,8,2,7,96,240,240,96,5,6,6,13,4, + 249,32,64,48,24,24,240,7,12,12,13,3,9,28,252,60, + 60,60,60,60,60,60,60,60,254,8,11,11,11,2,10,60, + 102,230,231,231,231,230,102,60,0,255,7,11,11,13,3,2, + 136,68,102,102,102,102,102,102,68,140,136,22,21,63,26,3, + 0,12,1,128,28,1,0,252,3,0,60,2,0,60,6,0, + 60,12,0,60,12,0,60,24,0,60,16,0,60,48,112,60, + 32,240,60,97,240,254,65,240,0,194,240,0,130,240,1,132, + 240,3,8,240,3,15,252,6,0,240,4,0,240,12,3,248, + 21,22,66,26,3,0,0,1,128,28,1,0,252,3,0,60, + 2,0,60,6,0,60,4,0,60,12,0,60,24,0,60,24, + 0,60,51,224,60,36,112,60,108,120,60,78,120,254,206,120, + 0,134,112,1,128,192,1,1,0,3,2,8,2,4,8,6, + 15,248,4,11,240,12,8,224,22,21,63,25,2,0,62,0, + 128,67,1,128,195,129,0,227,131,0,99,130,0,3,6,0, + 60,4,0,7,8,0,3,152,0,243,208,112,227,176,112,199, + 160,240,62,97,240,0,65,240,0,194,240,0,130,240,1,132, + 240,1,7,252,3,0,240,2,0,240,6,3,252,9,22,44, + 13,2,249,24,0,60,0,60,0,60,0,24,0,0,0,28, + 0,34,0,34,0,34,0,6,0,12,0,28,0,56,0,112, + 0,113,0,240,128,240,128,240,128,240,128,113,0,62,0,19, + 27,81,22,2,1,3,0,0,3,128,0,1,128,0,0,192, + 0,0,64,0,0,0,0,0,64,0,0,96,0,0,224,0, + 0,224,0,0,240,0,1,240,0,1,240,0,1,248,0,2, + 120,0,2,120,0,2,124,0,4,60,0,4,60,0,4,62, + 0,15,254,0,8,30,0,8,31,0,16,15,0,16,15,0, + 48,15,128,254,127,224,19,27,81,21,2,1,0,24,0,0, + 56,0,0,48,0,0,96,0,0,64,0,0,0,0,0,64, + 0,0,96,0,0,224,0,0,224,0,0,240,0,1,240,0, + 1,240,0,1,248,0,2,120,0,2,120,0,2,124,0,4, + 60,0,4,60,0,8,60,0,15,254,0,8,30,0,16,30, + 0,16,15,0,16,15,0,48,15,128,254,127,224,19,27,81, + 22,2,0,0,64,0,0,224,0,1,240,0,3,24,0,4, + 4,0,0,0,0,0,64,0,0,96,0,0,224,0,0,224, + 0,0,240,0,1,240,0,1,240,0,1,248,0,2,120,0, + 2,120,0,2,124,0,4,60,0,4,60,0,4,62,0,15, + 254,0,8,30,0,8,31,0,16,15,0,16,15,0,48,15, + 128,254,127,224,19,27,81,21,2,0,0,4,0,1,200,0, + 3,248,0,4,112,0,0,0,0,0,0,0,0,64,0,0, + 96,0,0,224,0,0,224,0,0,240,0,1,240,0,1,240, + 0,1,248,0,2,120,0,2,120,0,2,124,0,4,60,0, + 4,60,0,4,60,0,15,254,0,8,30,0,24,30,0,16, + 15,0,16,15,0,48,15,128,254,127,224,19,27,81,22,2, + 0,3,12,0,7,158,0,7,158,0,3,12,0,0,0,0, + 0,0,0,0,96,0,0,96,0,0,224,0,0,240,0,0, + 240,0,1,240,0,1,248,0,1,120,0,2,120,0,2,124, + 0,2,60,0,4,60,0,4,62,0,4,30,0,15,254,0, + 8,31,0,8,15,0,16,15,0,16,15,0,48,15,128,254, + 127,224,19,27,81,21,1,0,0,240,0,1,8,0,1,8, + 0,1,8,0,0,240,0,0,0,0,0,96,0,0,96,0, + 0,240,0,0,240,0,0,240,0,1,248,0,1,248,0,1, + 120,0,1,120,0,2,124,0,2,60,0,2,60,0,4,62, + 0,4,30,0,7,254,0,8,31,0,8,15,0,8,15,0, + 24,15,0,24,15,128,254,63,224,26,21,84,28,0,0,0, + 63,255,192,0,15,131,192,0,15,129,192,0,31,128,192,0, + 23,128,192,0,55,128,64,0,39,132,64,0,103,132,0,0, + 71,140,0,0,199,156,0,0,135,252,0,1,135,156,0,1, + 7,140,0,3,7,132,64,3,255,132,64,6,7,128,64,4, + 7,128,64,12,7,128,192,12,7,129,192,28,7,131,192,255, + 63,255,192,15,28,56,18,2,250,15,230,28,30,56,30,56, + 14,120,14,120,6,248,6,248,6,248,2,248,0,248,0,248, + 0,248,0,248,2,120,2,120,2,120,4,56,4,60,12,28, + 8,6,48,1,192,1,0,1,192,0,96,0,96,4,96,3, + 192,16,27,54,19,1,1,6,0,7,0,3,0,1,128,0, + 0,0,0,255,255,30,15,30,7,30,3,30,3,30,1,30, + 17,30,16,30,48,30,48,31,240,30,48,30,48,30,17,30, + 17,30,1,30,1,30,3,30,7,30,15,255,255,16,27,54, + 19,1,1,0,56,0,120,0,96,0,192,0,0,0,0,255, + 255,30,15,30,7,30,3,30,3,30,1,30,17,30,16,30, + 48,30,48,31,240,30,48,30,48,30,17,30,17,30,1,30, + 1,30,3,30,7,30,15,255,255,16,27,54,19,1,0,0, + 128,1,192,3,96,6,56,8,0,0,0,255,255,30,15,30, + 7,30,3,30,3,30,1,30,17,30,16,30,48,30,48,31, + 240,30,48,30,48,30,17,30,17,30,1,30,1,30,3,30, + 7,30,15,255,255,16,27,54,19,1,0,6,24,15,60,15, + 60,6,24,0,0,0,0,255,255,30,15,30,7,30,3,30, + 3,30,1,30,17,30,16,30,48,30,48,31,240,30,48,30, + 48,30,17,30,17,30,1,30,1,30,3,30,7,30,15,255, + 255,9,27,54,11,1,1,96,0,112,0,56,0,8,0,0, + 0,0,0,255,128,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,255,128,10,27,54, + 12,1,1,3,128,3,128,6,0,12,0,8,0,0,0,255, + 192,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,255,192,9,27,54,11,1,0,12, + 0,28,0,62,0,99,0,0,128,0,0,255,128,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,255,128,10,27,54,13,2,0,97,128,243,192,243, + 192,97,128,0,0,0,0,255,192,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,255, + 192,19,21,63,22,2,0,255,248,0,30,14,0,30,7,0, + 30,3,128,30,3,192,30,3,192,30,3,192,30,3,224,30, + 3,224,30,3,224,255,131,224,30,3,224,30,3,224,30,3, + 224,30,3,192,30,3,192,30,3,128,30,3,128,30,7,0, + 30,14,0,255,248,0,21,26,78,22,1,1,0,226,0,1, + 254,0,2,28,0,0,0,0,0,0,0,254,15,248,31,1, + 192,31,0,128,15,128,128,15,192,128,15,192,128,11,224,128, + 11,240,128,9,248,128,8,248,128,8,252,128,8,126,128,8, + 62,128,8,31,128,8,31,128,8,15,128,8,7,128,8,7, + 128,8,3,128,28,1,128,255,129,128,17,27,81,20,2,1, + 14,0,0,7,0,0,3,0,0,1,128,0,0,0,0,0, + 128,0,7,112,0,12,24,0,24,12,0,56,14,0,120,14, + 0,120,15,0,120,15,0,248,15,128,248,15,128,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,120,15,0,120, + 15,0,120,15,0,56,14,0,24,12,0,12,24,0,7,112, + 0,17,27,81,20,2,1,0,56,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,128,0,7,112,0,12,24,0,24, + 12,0,56,14,0,120,14,0,120,15,0,120,15,0,248,15, + 128,248,15,128,248,15,128,248,15,128,248,15,128,248,15,128, + 248,15,128,120,15,0,120,15,0,120,15,0,56,14,0,24, + 12,0,12,24,0,7,112,0,17,27,81,20,2,0,0,128, + 0,1,192,0,3,96,0,6,48,0,8,8,0,0,128,0, + 7,112,0,12,24,0,24,12,0,56,14,0,120,14,0,120, + 15,0,120,15,0,248,15,128,248,15,128,248,15,128,248,15, + 128,248,15,128,248,15,128,248,15,128,120,15,0,120,15,0, + 120,15,0,56,14,0,24,12,0,12,24,0,7,112,0,17, + 27,81,20,2,0,0,8,0,7,136,0,7,240,0,8,224, + 0,0,0,0,0,128,0,7,112,0,12,24,0,24,12,0, + 56,14,0,120,14,0,120,15,0,120,15,0,248,15,128,248, + 15,128,248,15,128,248,15,128,248,15,128,248,15,128,248,15, + 128,120,15,0,120,15,0,120,15,0,56,14,0,24,12,0, + 12,24,0,7,112,0,17,27,81,20,2,0,12,48,0,30, + 120,0,30,120,0,12,48,0,0,0,0,0,128,0,7,112, + 0,12,24,0,24,12,0,56,14,0,120,14,0,120,15,0, + 120,15,0,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,248,15,128,120,15,0,120,15,0,120,15, + 0,56,14,0,24,12,0,12,24,0,7,112,0,18,19,57, + 26,4,254,64,0,64,224,0,192,112,1,128,56,3,0,28, + 6,0,14,12,0,7,24,0,3,176,0,1,224,0,0,224, + 0,1,240,0,3,56,0,6,28,0,12,12,0,24,6,0, + 48,3,0,112,1,128,224,0,192,64,0,0,17,22,66,20, + 2,0,0,128,0,7,113,128,12,27,0,24,14,0,56,14, + 0,56,14,0,120,31,0,120,31,0,248,47,128,248,111,128, + 248,79,128,248,143,128,249,15,128,251,15,128,250,15,128,124, + 15,0,124,15,0,120,14,0,56,14,0,56,12,0,108,24, + 0,199,112,0,19,27,81,22,2,1,7,0,0,3,128,0, + 1,128,0,0,192,0,0,0,0,0,0,0,255,15,224,60, + 3,128,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,28, + 1,0,28,2,0,14,4,0,7,248,0,19,27,81,22,2, + 1,0,28,0,0,56,0,0,48,0,0,96,0,0,0,0, + 0,0,0,255,15,224,60,3,128,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,28,1,0,28,2,0,14,4,0,7, + 248,0,19,27,81,22,2,0,0,192,0,0,224,0,1,240, + 0,6,24,0,0,4,0,0,0,0,255,15,224,60,3,128, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,60,1,0,60,1,0,60,1,0,28,3,0, + 28,2,0,14,4,0,7,248,0,19,27,81,22,2,0,3, + 12,0,7,158,0,7,158,0,3,12,0,0,0,0,0,0, + 0,255,143,224,60,3,128,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,60,1,0,28,1,0,28,2,0,14,4,0,7,248,0, + 19,27,81,21,2,1,0,28,0,0,60,0,0,48,0,0, + 96,0,0,0,0,0,0,0,255,31,224,62,7,0,30,6, + 0,30,6,0,31,4,0,15,4,0,15,136,0,7,136,0, + 7,144,0,7,208,0,3,240,0,3,224,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,7,248,0,17,21,63,19,1,0,255,192,0, + 30,0,0,30,0,0,30,0,0,31,248,0,30,14,0,30, + 15,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 128,30,15,0,30,14,0,31,248,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,255,192,0,14,21,42,16, + 1,0,7,192,12,96,28,112,28,112,60,112,60,112,60,112, + 60,96,61,128,60,96,60,48,60,56,60,56,60,56,60,60, + 60,60,60,56,63,184,63,184,63,48,253,224,12,21,42,14, + 1,0,96,0,112,0,56,0,24,0,12,0,4,0,0,0, + 30,0,99,128,99,192,243,192,115,192,7,192,27,192,115,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,21,42,14, + 1,0,1,128,3,128,3,0,6,0,12,0,8,0,0,0, + 30,0,99,128,99,192,243,192,115,192,35,192,15,192,51,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,21,42,14, + 1,0,12,0,12,0,30,0,19,0,33,128,64,128,0,0, + 30,0,99,128,99,192,243,192,115,192,35,192,15,192,51,192, + 115,192,243,192,243,208,243,208,243,208,125,224,12,20,40,14, + 1,0,56,128,127,128,71,0,0,0,0,0,0,0,30,0, + 99,128,99,192,243,192,115,192,3,192,31,192,51,192,115,192, + 243,192,243,208,243,208,245,208,121,224,12,20,40,14,1,0, + 97,128,243,192,243,192,97,128,0,0,0,0,30,0,99,128, + 99,192,243,192,115,192,35,192,15,192,51,192,115,192,243,192, + 243,208,243,208,243,208,125,224,12,21,42,14,1,1,30,0, + 33,0,33,0,33,0,50,0,12,0,0,0,31,0,99,128, + 97,192,241,192,113,192,33,192,15,192,49,192,97,192,225,192, + 225,208,225,208,227,208,124,224,17,14,42,19,1,0,62,60, + 0,99,230,0,99,199,0,243,199,128,115,199,128,7,199,128, + 27,255,128,115,192,0,115,192,0,243,192,128,243,192,128,243, + 225,0,242,225,0,124,62,0,10,21,42,13,1,249,15,0, + 56,128,112,192,113,192,243,192,243,128,240,0,240,0,240,0, + 240,0,112,64,112,64,56,128,31,0,4,0,8,0,6,0, + 3,0,3,0,3,0,30,0,11,21,42,13,1,0,48,0, + 48,0,56,0,24,0,12,0,0,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,21,42,13,1,0,1,128, + 3,128,3,128,6,0,4,0,8,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,21,42,13,1,0,12,0, + 14,0,30,0,27,0,49,128,64,0,0,0,15,0,51,128, + 113,192,113,192,241,192,241,224,255,224,240,0,240,0,240,32, + 112,64,112,64,56,128,15,0,11,20,40,13,1,0,49,128, + 123,192,123,192,49,128,0,0,0,0,15,0,51,128,113,192, + 113,192,241,192,241,224,255,224,240,0,240,0,240,32,112,64, + 112,64,56,128,15,0,7,21,21,9,1,0,192,224,112,48, + 24,8,0,124,60,60,60,60,60,60,60,60,60,60,60,60, + 126,6,21,21,9,2,0,12,12,28,56,32,0,0,248,120, + 120,120,120,120,120,120,120,120,120,120,120,252,8,21,21,8, + 1,0,56,56,124,110,131,0,0,252,60,60,60,60,60,60, + 60,60,60,60,60,60,254,8,20,20,9,1,0,102,255,255, + 102,0,0,124,60,60,60,60,60,60,60,60,60,60,60,60, + 126,12,21,42,14,1,0,60,64,31,128,15,0,15,0,55, + 128,3,128,3,192,31,192,49,224,113,224,112,224,240,224,240, + 240,240,240,240,240,240,224,240,224,112,224,113,192,49,192,15, + 0,13,19,38,16,2,1,30,64,63,192,35,128,0,0,0, + 0,251,192,124,224,120,224,120,240,120,240,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,253,248,12,21,42, + 14,1,0,48,0,56,0,56,0,12,0,6,0,2,0,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,21,42, + 14,1,0,1,128,1,192,3,128,3,0,6,0,4,0,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,21,42, + 14,1,0,6,0,14,0,15,0,27,0,48,128,32,64,0, + 0,15,0,49,128,112,192,112,224,240,224,240,224,240,240,240, + 240,240,224,240,224,112,224,112,192,49,128,15,0,12,20,40, + 14,1,0,28,64,63,192,71,128,0,0,0,0,0,0,15, + 0,49,128,112,192,112,224,240,224,240,224,240,240,240,240,240, + 224,240,224,112,224,112,192,49,128,15,0,12,20,40,14,1, + 0,49,128,123,192,123,192,49,128,0,0,0,0,15,0,49, + 128,112,192,112,224,240,224,240,224,240,240,240,240,240,224,240, + 224,112,224,112,192,49,128,15,0,24,19,57,26,1,254,0, + 24,0,0,60,0,0,60,0,0,24,0,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0, + 0,0,0,0,0,0,0,0,0,0,24,0,0,60,0,0, + 60,0,0,60,0,0,24,0,12,14,28,14,1,0,15,16, + 49,160,113,192,112,224,241,224,243,224,242,240,244,240,248,224, + 240,224,112,224,112,192,121,128,143,0,14,21,42,15,0,0, + 24,0,28,0,12,0,6,0,3,0,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,248,60,248,29,120,14,124,14,21,42,15,0,0, + 0,192,0,192,1,192,1,128,3,0,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,120,60,248,29,120,14,124,14,21,42,15,0,0, + 3,0,7,0,7,128,12,128,24,64,0,0,0,0,253,248, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,120,60,248,29,120,14,124,14,20,40,15,0,0, + 24,192,61,224,61,224,24,192,0,0,0,0,253,248,60,120, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 60,120,60,248,29,120,14,124,13,28,56,15,1,249,0,192, + 0,192,1,192,3,128,2,0,0,0,0,0,252,248,120,32, + 56,32,60,64,28,64,28,64,30,64,14,128,15,128,7,128, + 7,0,7,0,3,0,3,0,2,0,2,0,50,0,124,0, + 116,0,116,0,56,0,13,26,52,15,1,250,28,0,124,0, + 188,0,60,0,60,0,60,0,60,240,63,120,60,120,60,120, + 60,120,60,120,60,112,60,112,60,96,60,192,60,128,61,0, + 62,0,60,0,60,0,60,0,60,0,60,0,48,0,192,0, + 13,27,54,15,1,249,24,96,60,240,60,240,24,96,0,0, + 0,0,254,120,120,48,56,32,60,32,28,32,30,64,30,64, + 14,64,15,128,7,128,7,128,7,0,3,0,3,0,1,0, + 2,0,50,0,122,0,116,0,116,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=24 h=27 x= 3 y= 9 dx=26 dy= 0 ascent=22 len=75 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21n[703] U8G_SECTION(".progmem.u8g_font_osb21n") = { + 0,77,36,232,248,21,0,0,0,0,42,57,0,22,250,21, + 0,11,12,24,14,2,9,14,0,14,0,78,192,228,224,245, + 192,14,0,14,0,245,192,228,192,78,192,14,0,14,0,24, + 25,75,26,1,252,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,255,255,255,255,255,255,0, + 24,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 5,10,10,7,1,251,112,248,248,248,120,8,16,16,32,192, + 7,3,3,11,2,6,254,254,254,4,4,4,8,2,0,96, + 240,240,96,9,27,54,13,2,250,1,128,1,128,1,128,3, + 0,3,0,3,0,2,0,6,0,6,0,6,0,12,0,12, + 0,12,0,24,0,24,0,24,0,16,0,48,0,48,0,48, + 0,96,0,96,0,96,0,192,0,192,0,192,0,128,0,14, + 21,42,16,1,1,15,192,24,96,56,112,56,112,120,120,120, + 120,248,120,248,124,248,124,248,124,248,124,248,124,248,124,248, + 124,248,120,120,120,120,120,56,112,56,112,24,96,15,192,9, + 21,42,16,3,0,6,0,14,0,30,0,254,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,255,128,12, + 21,42,16,2,1,63,192,97,224,96,224,224,240,224,240,240, + 240,248,240,121,224,49,224,3,192,7,128,14,0,28,0,48, + 16,96,16,64,16,192,16,255,240,255,224,143,224,135,192,13, + 21,42,16,2,1,63,192,96,224,96,224,224,240,240,240,248, + 240,120,240,112,240,0,224,1,192,31,0,0,224,0,240,0, + 112,112,120,248,120,248,120,240,120,224,112,96,240,59,192,13, + 21,42,16,1,0,1,192,1,192,3,192,3,192,7,192,7, + 192,15,192,27,192,27,192,51,192,35,192,99,192,67,192,195, + 192,255,248,3,192,3,192,3,192,3,192,3,192,31,248,13, + 21,42,16,2,0,96,224,127,192,127,128,127,0,120,0,64, + 0,64,0,64,0,79,0,113,224,64,240,64,240,0,248,0, + 248,112,248,248,248,248,248,240,240,224,240,97,224,59,192,13, + 21,42,16,2,1,15,224,24,32,56,48,48,240,112,240,112, + 240,240,96,240,0,240,0,247,128,248,224,240,112,240,112,240, + 112,240,120,112,120,112,112,112,112,48,112,56,96,13,192,11, + 21,42,16,3,0,156,64,190,96,255,32,255,32,199,224,129, + 160,128,64,128,64,0,128,0,128,1,0,3,0,7,0,6, + 0,14,0,14,0,30,0,30,0,30,0,30,0,30,0,14, + 21,42,16,2,1,31,192,48,32,96,48,96,16,224,16,240, + 16,248,32,254,32,127,192,63,192,31,240,31,248,99,248,64, + 248,192,60,192,24,192,24,192,24,96,16,112,48,31,192,13, + 21,42,16,2,1,31,128,48,192,112,96,112,112,240,112,240, + 112,240,120,240,120,240,120,112,120,112,120,56,248,15,120,0, + 120,0,120,56,112,120,112,120,96,112,224,96,192,63,128}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--28-280-72-72-P-153-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=28 h=29 x= 3 y=16 dx=31 dy= 0 ascent=23 len=87 + Font Bounding box w=77 h=36 x=-24 y=-8 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =21 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb21r[4521] U8G_SECTION(".progmem.u8g_font_osb21r") = { + 0,77,36,232,248,21,5,141,12,241,32,127,249,23,249,21, + 249,0,0,0,8,0,0,5,21,21,9,2,1,240,248,248, + 248,248,112,112,112,112,32,32,32,32,32,32,0,0,112,248, + 248,112,7,6,6,11,2,16,238,238,238,238,198,68,16,21, + 42,20,2,0,6,12,6,12,6,12,6,8,6,24,6,24, + 255,255,255,255,12,24,12,24,12,48,12,48,12,48,8,48, + 255,255,255,255,24,32,24,96,24,96,16,96,48,96,13,25, + 50,16,2,254,9,0,11,0,61,192,105,48,73,8,201,8, + 201,56,233,120,249,112,253,0,127,0,127,0,63,192,15,224, + 15,240,73,248,233,248,233,56,201,24,137,24,137,16,73,32, + 57,192,15,0,9,0,19,22,66,25,3,0,0,1,0,60, + 3,0,102,2,0,231,4,0,231,4,0,231,8,0,231,8, + 0,231,16,0,231,48,0,102,32,0,102,96,0,24,64,0, + 0,195,0,0,140,192,1,140,192,1,28,224,2,28,224,2, + 28,224,4,28,224,4,28,224,8,12,192,24,7,128,20,21, + 63,22,1,1,3,224,0,6,16,0,14,16,0,14,16,0, + 14,16,0,14,48,0,15,32,0,15,64,0,7,128,0,3, + 192,0,7,195,240,9,224,192,48,224,128,112,240,128,112,121, + 0,240,59,0,240,62,0,240,30,0,248,31,16,126,111,160, + 63,199,192,3,6,6,7,2,16,224,224,224,224,192,64,8, + 27,27,10,2,250,1,2,4,8,24,48,48,112,112,240,240, + 240,240,240,240,240,240,112,112,112,48,48,24,8,4,2,1, + 8,26,26,10,1,250,128,192,96,48,24,24,12,12,14,14, + 14,14,15,15,15,14,14,14,14,12,12,24,24,48,96,192, + 11,12,24,14,2,9,14,0,14,0,78,192,228,224,245,192, + 14,0,14,0,245,192,228,192,78,192,14,0,14,0,24,25, + 75,26,1,252,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,0, + 24,0,0,24,0,0,24,0,255,255,255,255,255,255,0,24, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,0,0,24,0,0,24,0,5, + 10,10,7,1,251,112,248,248,248,120,8,16,16,32,192,7, + 3,3,11,2,6,254,254,254,4,4,4,8,2,0,96,240, + 240,96,9,27,54,13,2,250,1,128,1,128,1,128,3,0, + 3,0,3,0,2,0,6,0,6,0,6,0,12,0,12,0, + 12,0,24,0,24,0,24,0,16,0,48,0,48,0,48,0, + 96,0,96,0,96,0,192,0,192,0,192,0,128,0,14,21, + 42,16,1,1,15,192,24,96,56,112,56,112,120,120,120,120, + 248,120,248,124,248,124,248,124,248,124,248,124,248,124,248,124, + 248,120,120,120,120,120,56,112,56,112,24,96,15,192,9,21, + 42,16,3,0,6,0,14,0,30,0,254,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,12,21, + 42,16,2,1,63,192,97,224,96,224,224,240,224,240,240,240, + 248,240,121,224,49,224,3,192,7,128,14,0,28,0,48,16, + 96,16,64,16,192,16,255,240,255,224,143,224,135,192,13,21, + 42,16,2,1,63,192,96,224,96,224,224,240,240,240,248,240, + 120,240,112,240,0,224,1,192,31,0,0,224,0,240,0,112, + 112,120,248,120,248,120,240,120,224,112,96,240,59,192,13,21, + 42,16,1,0,1,192,1,192,3,192,3,192,7,192,7,192, + 15,192,27,192,27,192,51,192,35,192,99,192,67,192,195,192, + 255,248,3,192,3,192,3,192,3,192,3,192,31,248,13,21, + 42,16,2,0,96,224,127,192,127,128,127,0,120,0,64,0, + 64,0,64,0,79,0,113,224,64,240,64,240,0,248,0,248, + 112,248,248,248,248,248,240,240,224,240,97,224,59,192,13,21, + 42,16,2,1,15,224,24,32,56,48,48,240,112,240,112,240, + 240,96,240,0,240,0,247,128,248,224,240,112,240,112,240,112, + 240,120,112,120,112,112,112,112,48,112,56,96,13,192,11,21, + 42,16,3,0,156,64,190,96,255,32,255,32,199,224,129,160, + 128,64,128,64,0,128,0,128,1,0,3,0,7,0,6,0, + 14,0,14,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,16,2,1,31,192,48,32,96,48,96,16,224,16,240,16, + 248,32,254,32,127,192,63,192,31,240,31,248,99,248,64,248, + 192,60,192,24,192,24,192,24,96,16,112,48,31,192,13,21, + 42,16,2,1,31,128,48,192,112,96,112,112,240,112,240,112, + 240,120,240,120,240,120,112,120,112,120,56,248,15,120,0,120, + 0,120,56,112,120,112,120,96,112,224,96,192,63,128,4,14, + 14,8,2,0,96,240,240,240,96,0,0,0,0,0,96,240, + 240,96,5,19,19,8,2,251,96,240,240,240,96,0,0,0, + 0,112,240,248,248,248,8,16,16,32,192,21,24,72,26,2, + 252,0,0,24,0,0,56,0,0,240,0,3,192,0,15,0, + 0,28,0,0,120,0,1,224,0,7,128,0,14,0,0,60, + 0,0,240,0,0,224,0,0,120,0,0,30,0,0,7,128, + 0,1,192,0,0,240,0,0,60,0,0,15,0,0,3,128, + 0,1,224,0,0,120,0,0,24,24,8,24,26,1,4,255, + 255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0, + 0,255,255,255,255,255,255,21,24,72,26,3,252,128,0,0, + 224,0,0,120,0,0,30,0,0,7,128,0,1,192,0,0, + 240,0,0,60,0,0,15,0,0,3,128,0,1,224,0,0, + 120,0,0,56,0,0,240,0,3,192,0,15,0,0,28,0, + 0,120,0,1,224,0,7,128,0,14,0,0,60,0,0,240, + 0,0,192,0,0,9,21,42,13,2,1,126,0,71,0,135, + 128,135,128,135,128,135,128,71,0,14,0,12,0,28,0,16, + 0,48,0,34,0,34,0,34,0,28,0,0,0,12,0,30, + 0,30,0,12,0,20,22,66,22,1,0,0,32,0,3,222, + 0,12,3,0,24,0,128,48,0,192,48,112,96,97,207,96, + 99,142,48,199,142,48,199,14,48,199,14,48,207,14,48,207, + 28,48,207,28,32,207,28,96,79,60,64,103,44,128,99,199, + 0,48,0,0,24,0,0,12,2,0,3,252,0,19,21,63, + 22,2,0,0,64,0,0,96,0,0,224,0,0,224,0,0, + 240,0,1,240,0,1,240,0,1,248,0,2,120,0,2,120, + 0,2,124,0,4,60,0,4,60,0,4,62,0,15,254,0, + 8,30,0,8,31,0,16,15,0,16,15,0,48,15,128,254, + 127,224,17,21,63,19,1,0,255,240,0,30,28,0,30,14, + 0,30,15,0,30,15,0,30,15,0,30,15,0,30,14,0, + 30,14,0,30,24,0,31,224,0,30,28,0,30,15,0,30, + 7,0,30,7,128,30,7,128,30,7,128,30,7,128,30,7, + 0,30,14,0,255,248,0,15,21,42,18,2,1,15,230,28, + 30,56,30,56,14,120,14,120,6,248,6,248,6,248,2,248, + 0,248,0,248,0,248,0,248,2,248,2,120,2,120,4,56, + 4,60,12,28,8,15,240,19,21,63,21,1,0,255,248,0, + 30,14,0,30,7,0,30,3,128,30,3,192,30,3,192,30, + 3,192,30,3,224,30,3,224,30,3,224,30,3,224,30,3, + 224,30,3,224,30,3,224,30,3,192,30,3,192,30,3,192, + 30,3,128,30,7,0,30,14,0,255,248,0,16,21,42,19, + 1,0,255,255,30,15,30,7,30,3,30,3,30,1,30,17, + 30,16,30,48,30,48,31,240,30,48,30,48,30,17,30,17, + 30,1,30,1,30,3,30,7,30,15,255,255,17,21,63,19, + 1,0,255,255,128,30,15,128,30,7,128,30,3,128,30,1, + 128,30,1,128,30,17,128,30,17,128,30,48,0,30,48,0, + 31,240,0,30,48,0,30,48,0,30,16,0,30,16,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,20,2,0,0,128,0,7,114,0,28,30,0, + 24,14,0,56,6,0,120,6,0,120,6,0,120,2,0,248, + 2,0,248,0,0,248,0,0,248,0,0,248,255,128,248,30, + 0,248,30,0,248,30,0,120,30,0,120,30,0,56,30,0, + 56,22,0,28,34,0,14,194,0,20,21,63,22,1,0,255, + 223,240,30,3,192,30,3,192,30,3,192,30,3,192,30,3, + 192,30,3,192,30,3,192,30,3,192,30,3,192,31,255,192, + 30,3,192,30,3,192,30,3,192,30,3,192,30,3,192,30, + 3,192,30,3,192,30,3,192,30,3,192,255,223,240,9,21, + 42,11,1,0,255,128,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,255,128,13,21, + 42,15,1,0,15,248,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,113,224, + 249,224,249,224,249,192,225,192,193,192,65,128,55,0,19,21, + 63,21,1,0,255,159,192,30,7,0,30,6,0,30,12,0, + 30,8,0,30,16,0,30,32,0,30,96,0,30,240,0,31, + 240,0,31,248,0,30,248,0,30,124,0,30,124,0,30,62, + 0,30,30,0,30,31,0,30,15,0,30,15,128,30,15,128, + 255,159,224,17,21,63,19,1,0,255,128,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,1,0, + 30,1,128,30,1,128,30,1,128,30,3,128,30,3,128,30, + 7,128,30,15,128,255,255,128,23,21,63,25,1,0,254,0, + 254,30,0,240,31,1,240,31,1,240,31,1,240,31,129,240, + 23,130,240,23,194,240,23,194,240,19,196,240,19,228,240,17, + 228,240,17,228,240,17,248,240,16,248,240,16,248,240,16,248, + 240,16,112,240,16,112,240,56,48,240,254,35,254,21,21,63, + 22,1,0,254,15,248,31,1,192,31,0,128,15,128,128,15, + 192,128,15,192,128,11,224,128,11,240,128,9,248,128,8,248, + 128,8,252,128,8,126,128,8,62,128,8,31,128,8,31,128, + 8,15,128,8,7,128,8,7,128,8,3,128,28,1,128,255, + 129,128,17,22,66,20,2,0,0,128,0,7,112,0,12,24, + 0,24,12,0,56,14,0,120,14,0,120,15,0,120,15,0, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,248,15,128,120,15,0,120,15,0,120,15,0,56,14, + 0,24,12,0,12,24,0,7,112,0,17,21,63,19,1,0, + 255,248,0,30,14,0,30,7,0,30,7,128,30,7,128,30, + 7,128,30,7,128,30,7,128,30,15,0,30,14,0,31,248, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,255,192,0,17, + 29,87,20,2,249,0,128,0,7,112,0,12,24,0,24,12, + 0,56,14,0,120,14,0,120,15,0,120,15,0,248,15,128, + 248,15,128,248,15,128,248,15,128,248,15,128,248,15,128,248, + 15,128,120,15,0,120,15,0,121,142,0,58,78,0,30,124, + 0,30,120,128,6,112,128,1,224,128,0,96,128,0,113,128, + 0,127,128,0,127,0,0,63,0,0,30,0,19,21,63,21, + 1,0,255,240,0,30,28,0,30,14,0,30,15,0,30,15, + 0,30,15,0,30,15,0,30,14,0,30,28,0,31,224,0, + 30,48,0,30,28,0,30,28,0,30,28,0,30,30,0,30, + 30,0,30,30,32,30,30,32,30,30,32,30,14,64,255,207, + 192,13,22,44,17,3,0,4,0,59,144,64,240,192,112,192, + 112,224,48,240,48,248,16,254,16,127,0,63,128,31,224,15, + 240,131,240,129,248,128,120,192,56,192,24,224,24,224,16,240, + 48,159,192,17,21,63,20,2,0,255,255,128,227,207,128,195, + 199,128,195,195,128,131,195,128,131,193,128,131,193,128,3,193, + 128,3,192,128,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,31,248,0,19,21,63,22,2,0,255,15, + 224,60,3,128,60,1,0,60,1,0,60,1,0,60,1,0, + 60,1,0,60,1,0,60,1,0,60,1,0,60,1,0,60, + 1,0,60,1,0,60,1,0,60,1,0,60,1,0,60,1, + 0,28,1,0,28,2,0,14,4,0,7,248,0,20,21,63, + 22,1,0,255,207,240,30,1,128,31,1,0,31,1,0,15, + 1,0,15,130,0,15,130,0,7,130,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,232,0,1,248,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 96,0,28,21,84,31,2,0,255,191,231,240,62,15,129,192, + 30,7,129,128,30,7,129,128,31,7,193,0,15,7,193,0, + 15,7,193,0,15,143,226,0,7,137,226,0,7,137,226,0, + 7,201,246,0,3,208,244,0,3,208,244,0,3,240,252,0, + 1,240,124,0,1,224,120,0,1,224,120,0,0,224,56,0, + 0,192,48,0,0,192,48,0,0,64,16,0,19,21,63,20, + 1,0,255,159,192,63,6,0,31,6,0,15,4,0,15,136, + 0,7,152,0,7,208,0,3,240,0,3,224,0,1,240,0, + 1,240,0,0,248,0,1,248,0,3,124,0,2,124,0,6, + 62,0,4,62,0,8,30,0,24,31,0,24,31,128,254,63, + 224,18,21,63,21,2,0,255,31,192,62,7,0,30,6,0, + 30,4,0,31,4,0,15,4,0,15,136,0,7,136,0,7, + 144,0,7,208,0,3,240,0,3,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,1,224,0,1,224,0,1,224,0, + 1,224,0,7,248,0,15,21,42,19,2,0,127,254,120,62, + 112,124,96,124,96,248,64,248,65,240,1,240,3,224,3,224, + 7,192,7,128,15,128,31,2,31,2,62,2,62,6,124,6, + 124,14,248,30,255,254,7,26,26,11,2,251,254,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,254,10,27,54,13,1,250,192,0,96,0, + 96,0,96,0,32,0,48,0,48,0,48,0,24,0,24,0, + 24,0,12,0,12,0,12,0,4,0,6,0,6,0,6,0, + 3,0,3,0,3,0,1,128,1,128,1,128,0,128,0,192, + 0,192,7,26,26,11,2,251,254,30,30,30,30,30,30,30, + 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30, + 30,254,12,10,20,16,2,12,6,0,7,0,15,0,29,128, + 25,128,48,192,48,224,96,96,224,48,192,48,15,2,4,15, + 0,251,255,254,255,254,5,5,5,12,2,16,192,224,112,48, + 24,12,14,28,14,1,0,30,0,99,128,99,192,243,192,115, + 192,35,192,15,192,51,192,115,192,243,192,243,208,243,208,243, + 208,125,224,13,21,42,14,0,0,252,0,60,0,60,0,60, + 0,60,0,60,0,60,0,61,192,62,96,60,112,60,112,60, + 120,60,120,60,120,60,120,60,120,60,120,60,112,52,112,38, + 96,35,192,10,14,28,13,1,0,15,0,56,128,112,192,113, + 192,243,192,243,128,240,0,240,0,240,0,240,0,112,64,112, + 64,56,128,15,0,13,21,42,15,1,0,3,224,1,224,1, + 224,1,224,1,224,1,224,1,224,29,224,51,224,113,224,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,248,11,14,28,13,1,0,15,0,51,128,113, + 192,113,192,241,192,241,224,255,224,240,0,240,0,240,32,112, + 64,112,64,56,128,15,0,11,21,42,10,1,0,7,128,12, + 192,28,192,61,224,61,192,60,0,60,0,254,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,0,60,0,254,0,14,21,42,16,1,249,15,24,57, + 236,121,252,121,248,121,224,121,224,57,192,57,192,15,0,112, + 0,192,0,255,0,255,224,127,240,63,248,64,56,128,24,128, + 16,128,48,96,96,31,128,14,21,42,16,1,0,252,0,60, + 0,60,0,60,0,60,0,60,0,60,0,61,224,62,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,120,60,120,254,252,6,21,21,8,1,0,48,120,120, + 48,0,0,0,248,120,120,120,120,120,120,120,120,120,120,120, + 120,252,8,28,28,8,255,249,6,15,15,6,0,0,0,31, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,255, + 239,238,206,56,14,21,42,16,1,0,252,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,248,60,96,60,64,60,128, + 60,128,61,128,63,128,63,192,61,224,60,224,60,240,60,112, + 60,120,254,252,8,21,21,9,1,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,255,20, + 14,42,23,2,0,249,199,128,126,233,192,120,241,192,120,241, + 224,120,241,224,120,241,224,120,241,224,120,241,224,120,241,224, + 120,241,224,120,241,224,120,241,224,120,241,224,253,251,240,13, + 14,28,16,2,0,251,192,124,224,120,224,120,240,120,240,120, + 240,120,240,120,240,120,240,120,240,120,240,120,240,120,240,253, + 248,12,14,28,14,1,0,15,0,49,128,112,192,112,224,240, + 224,240,224,240,240,240,240,240,224,240,224,112,224,112,192,49, + 128,15,0,13,21,42,15,1,249,253,192,62,96,60,112,60, + 112,60,120,60,120,60,120,60,120,60,120,60,120,60,112,60, + 112,62,96,61,192,60,0,60,0,60,0,60,0,60,0,60, + 0,254,0,13,21,42,14,1,249,30,32,51,32,113,96,113, + 224,241,224,241,224,241,224,241,224,241,224,241,224,113,224,113, + 224,51,224,29,224,1,224,1,224,1,224,1,224,1,224,1, + 224,3,248,10,14,28,12,2,0,251,128,125,128,123,192,123, + 128,121,128,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,252,0,10,14,28,13,2,0,60,128,67,128,193, + 128,193,128,224,128,248,0,126,0,63,128,143,128,131,192,192, + 192,224,192,240,128,143,0,9,20,40,10,0,0,8,0,8, + 0,8,0,24,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,128,56,128,56,128,56,128,57, + 128,57,0,14,0,14,14,28,15,0,0,253,248,60,120,60, + 120,60,120,60,120,60,120,60,120,60,120,60,120,60,120,60, + 120,60,248,29,120,14,124,13,14,28,15,1,0,252,248,120, + 32,56,32,60,32,28,64,28,64,30,64,14,128,14,128,15, + 0,7,0,7,0,6,0,2,0,20,14,42,22,1,0,253, + 253,240,120,120,64,56,120,64,60,56,64,28,120,128,28,124, + 128,30,92,128,14,157,0,14,159,0,15,143,0,7,14,0, + 7,14,0,6,6,0,2,4,0,13,14,28,15,1,0,254, + 248,60,96,60,64,30,128,30,128,15,0,7,0,7,128,7, + 192,11,192,9,224,16,224,48,240,253,248,13,21,42,15,1, + 249,252,248,120,32,56,32,60,64,28,64,28,64,30,64,14, + 128,15,128,7,128,7,128,7,0,3,0,3,0,2,0,2, + 0,50,0,122,0,116,0,116,0,56,0,11,14,28,13,1, + 0,127,224,97,224,67,192,67,128,71,128,15,0,15,0,30, + 0,30,32,60,32,56,32,120,96,240,224,255,224,9,27,54, + 12,1,250,0,128,7,0,14,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,28,0,28,0,56,0,224,0,56, + 0,28,0,28,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,14,0,7,0,0,128,2,27,27,8,3,250,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,9,27,54,13,2,250, + 192,0,56,0,28,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,14,0,1,128,14,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,28,0, + 28,0,56,0,192,0,16,6,12,18,1,5,124,2,127,1, + 143,193,131,241,128,254,64,62,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=34 h=33 x= 6 y=20 dx=36 dy= 0 ascent=34 len=125 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x=-2 y=-10 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =26 descent=-8 + Max Font ascent =34 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26[12640] U8G_SECTION(".progmem.u8g_font_osb26") = { + 0,95,44,227,246,26,7,105,16,163,32,255,248,34,246,26, + 248,0,0,0,10,0,0,6,25,25,10,2,1,120,252,252, + 252,252,252,120,120,120,120,48,48,48,48,48,48,48,0,0, + 0,120,252,252,252,120,8,8,8,12,2,18,231,231,231,231, + 231,231,66,66,20,25,75,24,2,0,3,131,0,3,131,0, + 3,3,0,3,3,0,3,3,0,3,7,0,3,7,0,255, + 255,240,255,255,240,6,6,0,6,6,0,6,6,0,6,14, + 0,6,14,0,14,12,0,12,12,0,12,12,0,255,255,224, + 255,255,224,12,28,0,12,24,0,28,24,0,24,24,0,24, + 24,0,24,24,0,16,31,62,20,2,253,2,32,2,32,2, + 32,15,248,26,38,50,34,114,35,114,35,114,47,122,47,126, + 46,126,46,63,160,63,224,31,240,15,248,7,252,3,254,2, + 126,114,63,250,47,250,47,242,39,226,39,194,38,98,38,50, + 44,30,56,3,224,2,32,2,32,23,26,78,29,3,0,8, + 0,48,54,0,32,99,0,96,99,0,192,227,128,192,227,129, + 128,227,129,0,227,131,0,227,130,0,227,134,0,99,12,0, + 54,8,0,28,24,0,0,16,112,0,48,216,0,97,140,0, + 97,140,0,195,142,0,131,142,1,131,142,1,3,142,3,3, + 142,6,3,142,4,1,140,12,1,140,8,0,248,24,25,75, + 26,1,1,1,252,0,3,4,0,3,2,0,7,2,0,7, + 2,0,7,6,0,7,132,0,7,200,0,3,240,0,3,224, + 0,1,240,0,3,240,127,6,248,28,12,124,8,24,60,24, + 56,62,16,112,31,16,240,15,32,240,15,224,248,7,192,248, + 3,192,252,3,225,126,7,242,127,253,254,31,240,124,3,8, + 8,7,2,18,224,224,224,224,224,224,64,64,10,31,62,12, + 2,250,0,192,1,0,2,0,6,0,12,0,24,0,56,0, + 56,0,120,0,112,0,112,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,112,0,112,0,112,0, + 56,0,56,0,24,0,28,0,12,0,6,0,3,0,1,128, + 9,32,64,12,1,250,192,0,96,0,48,0,24,0,28,0, + 12,0,14,0,6,0,7,0,7,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,0,7,0,7,0,14,0,14,0,12,0,24,0,48,0, + 96,0,192,0,128,0,12,14,28,17,3,11,14,0,14,0, + 14,0,196,112,228,240,245,224,14,0,14,0,245,224,228,240, + 196,112,14,0,14,0,14,0,29,30,120,31,1,251,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,255,255,255,248,255,255,255,248,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,7,11,11,10,2,249,120,252,254,254, + 126,6,4,12,8,48,224,9,4,8,13,2,7,255,128,255, + 128,255,128,255,128,5,5,5,9,2,0,112,248,248,248,112, + 12,33,66,15,2,249,0,112,0,96,0,96,0,224,0,192, + 0,192,1,192,1,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,6,0,14,0,12,0,12,0,28,0, + 24,0,24,0,56,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,192,0,16,25,50,20,2,1,7,224, + 14,112,28,56,60,60,60,60,124,62,124,62,124,62,252,63, + 252,63,252,63,252,63,252,63,252,63,252,63,252,63,252,63, + 124,62,124,62,124,62,60,60,60,60,28,56,14,112,7,224, + 12,25,50,20,4,0,7,0,7,0,31,0,255,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,240,15,25,50,20,2,1,31,240, + 48,120,96,60,96,62,224,62,240,62,248,62,252,62,124,124, + 56,124,0,248,1,240,1,224,3,128,7,0,12,2,24,2, + 48,2,32,2,76,6,127,254,127,252,71,252,67,252,65,248, + 15,26,52,20,2,0,1,0,14,240,56,120,48,60,112,62, + 120,62,124,62,124,62,60,62,24,60,0,120,0,112,31,192, + 0,240,0,120,0,60,0,60,56,62,124,62,252,62,252,62, + 248,62,224,60,96,124,96,120,31,224,16,25,50,20,2,0, + 0,120,0,120,0,248,1,248,1,248,3,248,3,248,6,248, + 6,248,12,248,12,248,24,248,56,248,48,248,96,248,96,248, + 192,248,255,255,0,248,0,248,0,248,0,248,0,248,0,248, + 15,255,15,26,52,20,3,0,0,8,48,56,63,240,63,224, + 63,128,62,0,32,0,32,0,32,0,32,0,39,192,56,112, + 48,120,32,60,32,60,0,62,0,62,56,62,120,62,252,62, + 248,62,248,60,224,60,96,120,112,112,31,224,16,25,50,20, + 2,1,7,240,12,8,28,12,56,60,56,124,120,124,120,120, + 120,48,248,0,248,0,251,224,252,56,252,60,248,30,248,31, + 248,31,248,31,248,31,120,31,120,31,120,31,56,30,28,30, + 12,60,7,240,15,25,50,20,3,0,79,28,95,156,127,198, + 127,230,127,254,224,246,192,4,192,12,128,12,128,24,0,16, + 0,48,0,96,0,224,1,192,1,192,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,7,0,17,25,75,20, + 2,1,7,240,0,24,12,0,48,12,0,48,6,0,112,6, + 0,112,6,0,120,6,0,124,4,0,127,12,0,127,152,0, + 63,224,0,31,248,0,15,252,0,15,254,0,49,255,0,96, + 127,0,64,31,0,192,15,128,192,7,0,192,7,0,192,3, + 0,96,6,0,96,6,0,56,12,0,14,240,0,15,25,50, + 20,2,1,31,192,60,112,120,48,120,56,248,60,248,60,248, + 60,248,62,248,62,248,62,248,62,120,62,124,126,60,126,15, + 190,0,62,0,62,12,60,30,60,62,60,62,56,60,56,48, + 112,16,96,15,192,5,17,17,9,2,0,112,248,248,248,112, + 0,0,0,0,0,0,0,112,248,248,248,112,6,23,23,9, + 2,249,112,248,248,248,112,0,0,0,0,0,0,0,112,248, + 252,252,252,12,12,8,16,48,192,26,29,116,32,3,251,0, + 0,1,192,0,0,3,192,0,0,15,0,0,0,62,0,0, + 0,248,0,0,1,224,0,0,7,128,0,0,31,0,0,0, + 124,0,0,0,240,0,0,3,192,0,0,15,128,0,0,62, + 0,0,0,120,0,0,0,224,0,0,0,120,0,0,0,62, + 0,0,0,15,128,0,0,3,192,0,0,0,240,0,0,0, + 124,0,0,0,31,0,0,0,7,128,0,0,1,224,0,0, + 0,248,0,0,0,62,0,0,0,15,0,0,0,3,192,0, + 0,1,192,29,9,36,33,2,5,255,255,255,248,255,255,255, + 248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,248,255,255,255,248,26,29,116, + 32,3,251,224,0,0,0,240,0,0,0,60,0,0,0,31, + 0,0,0,7,192,0,0,1,224,0,0,0,120,0,0,0, + 62,0,0,0,15,128,0,0,3,192,0,0,0,240,0,0, + 0,124,0,0,0,31,0,0,0,7,128,0,0,1,192,0, + 0,7,128,0,0,31,0,0,0,124,0,0,0,240,0,0, + 3,192,0,0,15,128,0,0,62,0,0,0,120,0,0,1, + 224,0,0,7,192,0,0,31,0,0,0,60,0,0,0,240, + 0,0,0,224,0,0,0,11,25,50,16,2,1,63,128,67, + 192,129,224,129,224,129,224,131,224,195,192,67,192,3,128,7, + 0,6,0,12,0,8,0,24,0,17,0,17,0,17,0,14, + 0,0,0,0,0,14,0,31,0,31,0,31,0,14,0,25, + 25,100,27,1,1,0,255,192,0,3,0,48,0,6,0,24, + 0,12,0,12,0,24,0,6,0,48,30,243,0,48,114,243, + 0,96,225,227,0,97,225,225,128,227,193,225,128,195,193,225, + 128,195,193,193,128,199,131,193,128,199,131,193,128,199,131,195, + 0,199,131,195,0,231,135,130,0,103,135,134,0,99,139,204, + 0,49,240,240,0,48,0,0,0,24,0,0,0,12,0,0, + 0,7,0,96,0,1,255,192,0,23,26,78,25,1,0,0, + 16,0,0,24,0,0,56,0,0,56,0,0,60,0,0,124, + 0,0,124,0,0,126,0,0,254,0,0,254,0,0,158,0, + 1,159,0,1,159,0,1,31,0,3,15,128,3,15,128,3, + 15,128,6,7,192,7,255,192,6,7,192,4,7,224,12,3, + 224,12,3,224,28,3,240,28,3,240,255,159,254,20,25,75, + 24,2,0,255,254,0,31,7,128,31,7,192,31,3,192,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 128,31,7,0,31,248,0,31,7,0,31,3,192,31,1,224, + 31,1,224,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,240,31,1,224,31,3,192,31,7,128,255,254,0,19,25, + 75,22,2,1,3,248,64,14,6,192,30,3,192,60,3,192, + 60,1,192,124,1,192,124,0,192,124,0,192,252,0,192,252, + 0,64,252,0,64,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,96,124,0,64,124,0,64,124,0,64, + 60,0,192,30,0,128,30,1,0,15,3,0,3,252,0,23, + 25,75,27,2,0,255,255,0,31,3,192,31,0,224,31,0, + 240,31,0,120,31,0,120,31,0,124,31,0,124,31,0,126, + 31,0,126,31,0,126,31,0,126,31,0,126,31,0,126,31, + 0,126,31,0,126,31,0,124,31,0,124,31,0,124,31,0, + 120,31,0,120,31,0,240,31,0,224,31,3,192,255,255,0, + 20,25,75,23,2,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,25,75,23,2,0,255,255,240,31,3,240,31,0,240, + 31,0,240,31,0,112,31,0,112,31,0,48,31,4,48,31, + 4,48,31,12,48,31,12,0,31,28,0,31,252,0,31,28, + 0,31,12,0,31,12,0,31,4,0,31,4,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,255, + 240,0,21,26,78,24,2,0,0,32,0,3,220,32,7,3, + 96,14,1,224,28,1,224,60,0,224,60,0,224,124,0,96, + 124,0,96,252,0,32,252,0,32,252,0,0,252,0,0,252, + 63,248,252,3,224,252,3,224,252,3,224,252,3,224,124,3, + 224,124,3,224,124,3,224,60,3,224,60,3,96,30,6,96, + 14,12,96,3,184,32,25,25,100,28,2,0,255,231,255,128, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,255,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,255,231,255,128, + 11,25,50,14,2,0,255,224,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,224,16,25,50,18,1,0,7,255, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,120,248, + 248,248,248,248,248,248,240,248,224,240,64,240,97,224,63,192, + 24,25,75,27,2,0,255,227,252,31,0,224,31,0,192,31, + 0,128,31,1,128,31,3,0,31,6,0,31,12,0,31,28, + 0,31,28,0,31,62,0,31,126,0,31,255,0,31,191,0, + 31,31,128,31,31,128,31,15,192,31,15,192,31,7,224,31, + 7,224,31,3,240,31,1,240,31,1,248,31,1,252,255,231, + 255,20,25,75,23,2,0,255,224,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,48,31,0,48,31,0,48,31,0,48,31,0,112, + 31,0,112,31,0,240,31,0,240,31,1,240,31,3,240,255, + 255,240,27,25,100,30,2,0,255,0,63,224,15,0,63,0, + 15,128,63,0,15,128,63,0,15,128,127,0,15,192,95,0, + 15,192,95,0,11,224,95,0,11,224,223,0,11,224,159,0, + 9,240,159,0,9,240,159,0,9,241,31,0,8,249,31,0, + 8,249,31,0,8,249,31,0,8,126,31,0,8,126,31,0, + 8,62,31,0,8,62,31,0,8,60,31,0,8,28,31,0, + 24,28,31,0,60,28,31,0,255,8,255,224,24,25,75,27, + 2,0,255,3,255,31,128,124,31,128,56,15,192,16,7,224, + 16,7,240,16,7,240,16,5,248,16,5,252,16,4,252,16, + 4,126,16,4,127,16,4,63,16,4,31,144,4,31,208,4, + 15,208,4,7,240,4,7,240,4,3,240,4,1,240,4,1, + 240,4,0,240,14,0,112,31,0,48,255,192,48,20,25,75, + 24,2,1,3,252,0,6,6,0,14,7,0,28,3,128,60, + 3,192,60,3,192,124,3,224,124,3,224,124,3,224,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,124,3,224,124,3,224,124,3,224,60,3,192,60, + 3,192,28,3,128,14,7,0,6,6,0,3,252,0,20,25, + 75,24,2,0,255,254,0,31,3,128,31,3,192,31,1,224, + 31,1,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,192,31,7,128,31,254,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,255,240,0,20, + 33,99,24,2,249,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,240,124,3,224,124,3,224,60,243, + 192,61,155,192,29,11,128,15,15,128,7,15,16,3,156,16, + 0,108,16,0,12,16,0,12,48,0,14,48,0,15,240,0, + 15,224,0,7,224,0,3,128,22,25,75,25,2,0,255,252, + 0,31,7,128,31,7,192,31,3,192,31,3,224,31,3,224, + 31,3,224,31,3,224,31,3,192,31,7,192,31,15,0,31, + 248,0,31,14,0,31,15,0,31,7,128,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,196,31,7,196,31,7,196, + 31,7,196,31,3,200,255,241,248,16,25,50,21,3,1,31, + 198,32,118,96,62,224,30,224,14,240,6,248,6,252,6,255, + 2,127,128,127,192,63,240,15,248,7,252,129,254,128,254,192, + 127,192,31,192,15,224,7,224,7,240,6,248,6,220,12,135, + 120,21,25,75,25,3,0,255,255,248,248,248,248,240,248,120, + 224,248,120,192,248,56,192,248,56,128,248,24,128,248,24,128, + 248,24,128,248,24,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,15, + 255,0,23,25,75,26,2,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,24,25,75,27,2,0,255,241,255,31,128,56,15, + 128,48,15,192,48,15,192,48,7,192,32,7,224,32,7,224, + 96,3,224,64,3,240,64,1,240,192,1,240,128,1,248,128, + 0,249,128,0,249,128,0,253,0,0,125,0,0,127,0,0, + 126,0,0,62,0,0,62,0,0,60,0,0,28,0,0,28, + 0,0,24,0,34,25,125,36,1,0,255,231,255,127,192,31, + 129,248,14,0,15,128,248,14,0,15,128,252,12,0,15,192, + 124,12,0,7,192,124,12,0,7,192,124,8,0,7,224,254, + 24,0,3,224,190,24,0,3,224,190,24,0,3,241,159,16, + 0,1,241,159,48,0,1,241,31,48,0,1,249,15,32,0, + 1,251,15,160,0,0,250,15,224,0,0,254,15,224,0,0, + 254,7,192,0,0,126,7,192,0,0,124,7,192,0,0,124, + 3,192,0,0,60,3,128,0,0,56,3,128,0,0,56,1, + 128,0,0,24,1,128,0,23,25,75,26,2,0,255,231,252, + 31,193,224,15,192,192,15,193,128,7,225,128,7,227,0,3, + 242,0,3,246,0,1,244,0,1,248,0,0,248,0,0,252, + 0,0,124,0,0,62,0,0,126,0,0,127,0,0,159,0, + 1,159,128,1,15,128,3,15,192,6,7,224,4,7,224,12, + 3,240,28,7,240,255,143,254,23,25,75,26,2,0,255,225, + 254,31,128,112,31,128,96,15,128,96,15,192,64,7,192,192, + 7,224,192,7,224,128,3,225,128,3,241,0,1,241,0,1, + 251,0,0,250,0,0,254,0,0,252,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,3,255,128,18,25,75,22,2,0,127, + 255,192,124,15,192,120,31,128,112,31,128,96,63,0,96,63, + 0,64,126,0,64,126,0,64,252,0,0,252,0,1,248,0, + 1,240,0,3,240,0,7,224,0,7,224,0,15,192,64,15, + 192,64,31,128,64,31,128,64,63,0,192,63,1,192,126,1, + 192,126,3,192,252,15,192,255,255,192,8,31,31,14,3,250, + 255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,255,11, + 33,66,15,2,249,192,0,192,0,224,0,96,0,96,0,96, + 0,112,0,48,0,48,0,56,0,24,0,24,0,28,0,12, + 0,12,0,12,0,14,0,6,0,6,0,7,0,3,0,3, + 0,3,0,3,128,1,128,1,128,1,192,0,192,0,192,0, + 224,0,96,0,96,0,96,8,31,31,13,2,250,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,255,16,12,24,20, + 2,14,1,128,3,128,3,192,7,224,14,96,14,112,28,56, + 24,56,56,28,112,12,96,14,224,7,18,2,6,18,0,250, + 255,255,192,255,255,192,6,7,7,15,3,18,224,224,240,120, + 24,12,4,15,17,34,18,2,0,15,128,49,224,96,240,112, + 240,120,240,120,240,32,240,7,240,28,240,56,240,120,240,240, + 240,240,242,240,242,240,242,121,252,62,120,15,25,50,18,1, + 0,252,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,240,61,56,62,60,62,28,62,30,62,30,60,30,60, + 30,60,30,60,30,60,30,62,30,62,30,62,28,50,60,35, + 56,33,224,13,17,34,16,2,0,7,128,28,96,56,32,120, + 112,120,240,248,240,240,224,240,64,240,0,240,0,240,0,240, + 8,120,16,120,16,56,16,28,32,7,192,17,25,75,20,2, + 0,1,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,15,60,0,28,188,0,56, + 124,0,120,124,0,120,60,0,240,60,0,240,60,0,240,60, + 0,240,60,0,240,60,0,240,60,0,240,60,0,120,60,0, + 120,124,0,56,124,0,28,188,0,15,63,128,13,17,34,17, + 2,0,7,128,24,224,56,240,120,240,120,240,240,120,240,120, + 240,120,255,248,240,0,240,0,240,8,120,8,120,24,56,16, + 28,32,7,192,12,25,50,12,1,0,3,192,14,112,30,112, + 28,240,60,240,60,240,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,255,128,17,25,75,19, + 1,248,7,199,0,28,249,128,60,115,128,120,123,128,120,123, + 0,120,120,0,120,120,0,120,120,0,60,112,0,28,224,0, + 7,192,0,56,0,0,96,0,0,127,192,0,127,248,0,127, + 252,0,63,254,0,63,254,0,64,14,0,128,6,0,128,6, + 0,128,4,0,64,12,0,32,56,0,31,224,0,17,25,75, + 19,1,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,120,0,61,188, + 0,61,28,0,62,30,0,62,30,0,62,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,255,127,128,8,25, + 25,11,2,0,56,124,124,124,56,0,0,0,252,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,10,33,66, + 10,254,248,3,128,7,192,7,192,7,192,3,128,0,0,0, + 0,0,0,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,99,192,243,192,243,192,243,128,231, + 128,103,0,62,0,17,25,75,19,1,0,252,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,127,0,60,24,0,60,16,0,60,48,0,60, + 32,0,60,64,0,60,192,0,60,224,0,61,224,0,62,240, + 0,62,240,0,60,120,0,60,124,0,60,60,0,60,62,0, + 60,62,0,255,127,128,9,25,50,11,1,0,252,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,255,128,25,17, + 68,28,1,0,252,120,120,0,61,188,158,0,61,31,30,0, + 62,31,30,0,62,30,31,0,62,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,255,127,191,128,17,17,51,19,1,0,252,120, + 0,61,188,0,61,28,0,62,30,0,62,30,0,62,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,255,127, + 128,14,17,34,18,2,0,7,128,28,224,56,112,120,120,120, + 120,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,56,112,24,224,7,128,15,25,50,18,1,248,252, + 240,61,56,62,60,62,28,62,30,62,30,60,30,60,30,60, + 30,60,30,60,30,62,30,62,30,62,28,62,60,61,56,60, + 240,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 128,16,25,50,19,2,248,15,132,28,196,56,100,120,124,120, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 124,120,124,56,124,28,188,15,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,1,255,12,17,34,14,1,0,252, + 224,61,112,62,240,62,240,62,240,62,96,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,11,17,34,14,2,0,60,64,99,64,193,192,192,192,224, + 192,240,64,252,0,127,0,63,128,31,192,135,224,129,224,192, + 224,224,96,224,96,144,192,143,128,11,24,48,13,1,0,12, + 0,12,0,12,0,12,0,12,0,28,0,60,0,255,192,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 32,60,32,60,32,60,32,60,96,60,64,31,192,15,128,17, + 17,51,19,1,0,252,126,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,60,62,0,60,62,0,60, + 94,0,30,158,0,15,31,128,17,17,51,18,0,0,255,159, + 128,30,6,0,30,4,0,30,4,0,15,12,0,15,8,0, + 15,8,0,7,152,0,7,144,0,3,208,0,3,240,0,3, + 224,0,1,224,0,1,192,0,1,192,0,0,192,0,0,128, + 0,25,17,68,26,0,0,255,63,207,128,30,15,6,0,30, + 15,6,0,30,15,4,0,15,7,132,0,15,15,132,0,7, + 143,136,0,7,139,200,0,7,147,200,0,3,211,208,0,3, + 209,240,0,3,225,240,0,1,225,224,0,1,224,224,0,1, + 192,224,0,0,192,192,0,0,192,64,0,16,17,34,18,1, + 0,255,126,62,24,30,16,31,16,15,32,15,192,7,192,3, + 192,3,192,1,224,3,240,2,240,4,248,8,120,8,124,24, + 126,254,127,17,25,75,18,0,248,255,159,128,62,6,0,30, + 4,0,31,4,0,15,8,0,15,8,0,15,136,0,7,136, + 0,7,144,0,3,208,0,3,208,0,3,224,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 128,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,13,17,34,16,1,0,127,248,112,248,96,240, + 97,224,67,224,67,192,7,192,7,128,15,128,15,0,31,8, + 30,8,60,24,124,24,120,56,248,120,255,248,11,33,66,15, + 2,249,0,32,3,192,7,0,15,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 56,0,224,0,56,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,14,0,7,0, + 3,192,0,32,2,32,32,10,4,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,11,33,66,15,3,249, + 128,0,240,0,60,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,15,0,7,0, + 1,224,7,0,15,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,60,0,240,0, + 128,0,19,7,21,23,2,6,62,0,64,127,128,32,255,240, + 32,135,252,32,129,255,224,128,63,192,64,15,128,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,10,0,0,6,26,26,10,2,248,120,252,252,252,120,0, + 0,0,32,48,48,48,48,48,48,120,120,120,120,252,252,252, + 252,252,252,120,13,25,50,19,3,252,1,0,1,0,1,0, + 1,0,15,192,29,32,57,48,121,112,121,112,249,112,241,96, + 241,0,241,0,241,0,241,0,241,8,121,16,121,16,57,16, + 29,32,15,192,1,0,1,0,1,0,1,0,21,26,78,24, + 2,0,0,2,0,0,61,192,0,112,96,0,240,112,1,224, + 112,1,224,240,3,224,240,3,224,224,3,224,0,3,224,0, + 3,224,0,31,224,0,35,225,0,1,254,0,1,240,0,1, + 240,0,0,240,0,0,240,0,0,240,0,0,224,0,0,224, + 8,60,192,16,199,192,48,131,255,224,131,255,192,124,63,128, + 18,17,51,20,1,3,64,0,128,227,241,192,127,255,128,60, + 15,0,56,7,0,48,3,0,112,3,128,96,1,128,96,1, + 128,96,1,128,96,1,128,112,3,128,48,3,0,56,7,0, + 62,31,0,127,255,128,99,241,128,18,25,75,20,1,0,255, + 143,192,63,3,128,63,3,0,31,3,0,31,130,0,15,130, + 0,15,196,0,15,196,0,7,196,0,7,232,0,3,232,0, + 3,248,0,3,240,0,63,255,128,1,240,0,1,240,0,63, + 255,128,1,240,0,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,31,254,0,2,32,32,10,4,250, + 192,192,192,192,192,192,192,192,192,192,192,192,192,0,0,0, + 0,0,0,192,192,192,192,192,192,192,192,192,192,192,192,192, + 15,32,64,22,2,249,7,224,28,24,56,24,48,28,112,124, + 112,124,112,124,120,56,124,0,63,0,31,224,127,240,71,252, + 193,252,192,126,224,30,248,14,254,6,127,134,63,228,31,248, + 7,248,1,248,0,124,60,60,60,28,124,28,124,28,112,24, + 48,56,24,112,15,192,11,4,8,15,2,19,113,192,241,224, + 241,224,113,192,24,25,75,28,2,1,1,255,128,6,0,64, + 12,0,48,24,0,24,48,60,136,32,227,132,65,193,134,65, + 193,130,195,192,130,131,192,131,131,192,129,131,192,1,131,192, + 1,131,192,1,131,192,65,131,192,131,195,192,130,65,192,130, + 65,193,134,32,227,4,48,60,8,16,0,24,12,0,48,6, + 0,64,1,255,128,10,13,26,13,1,12,60,0,70,0,199, + 0,231,0,71,0,63,0,103,0,231,0,231,64,231,64,123, + 128,0,0,255,128,9,15,30,17,4,1,8,0,24,128,48, + 128,97,0,99,0,227,0,227,0,227,0,227,0,227,0,227, + 0,97,0,49,128,48,128,8,0,16,9,18,20,2,5,255, + 255,255,255,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,9,4,8,13,2,7,255,128,255,128,255,128,255,128,24, + 25,75,28,2,1,1,255,128,6,0,64,12,0,48,24,0, + 24,55,254,8,33,227,132,65,227,198,65,227,194,193,227,194, + 129,227,195,129,231,129,129,252,1,129,231,1,129,227,129,129, + 227,193,129,227,195,193,227,210,65,227,210,65,227,214,33,227, + 212,55,249,232,16,0,24,12,0,48,6,0,64,1,255,128, + 9,2,4,15,3,20,255,128,255,128,11,10,20,19,4,16, + 63,128,123,192,224,192,192,96,192,96,192,96,192,224,97,192, + 63,128,31,0,29,26,104,33,2,254,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,255,255,255,248,255,255,255,248,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6, + 0,0,0,0,0,0,0,0,0,0,255,255,255,240,255,255, + 255,240,10,16,32,15,3,9,31,0,103,128,195,192,195,192, + 227,192,243,128,7,128,14,0,28,0,48,64,64,64,64,64, + 255,192,255,192,159,128,135,0,11,16,32,15,2,9,31,0, + 35,128,99,192,115,192,115,192,51,128,3,0,28,0,3,128, + 3,192,97,224,241,224,241,224,227,224,99,192,63,0,6,7, + 7,15,6,18,28,28,60,120,96,192,128,17,27,81,20,2, + 246,96,48,0,112,120,0,240,120,0,240,120,0,240,120,0, + 240,120,0,240,120,0,240,120,0,240,120,0,96,56,0,96, + 48,128,96,48,128,96,113,128,32,127,128,48,255,128,95,207, + 0,71,143,0,64,0,0,96,0,0,96,0,0,112,0,0, + 112,0,0,120,0,0,120,0,0,120,0,0,120,0,0,48, + 0,0,17,30,90,20,2,251,15,255,128,63,140,0,127,140, + 0,127,140,0,255,140,0,255,140,0,255,140,0,255,140,0, + 255,140,0,127,140,0,127,140,0,63,140,0,31,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,5,5,5,9,2,9,112,248,248,248,112,7,7,7, + 15,4,249,32,32,24,14,14,14,252,8,15,15,16,4,10, + 12,28,252,60,60,60,60,60,60,60,60,60,60,60,255,9, + 13,26,13,2,12,28,0,103,0,99,0,227,128,227,128,227, + 128,227,128,227,128,99,0,103,0,28,0,0,0,255,128,9, + 14,28,17,4,2,132,0,198,0,99,0,99,0,115,128,115, + 128,115,128,115,128,115,128,99,128,99,0,195,0,134,0,12, + 0,25,26,104,31,4,0,0,0,48,0,12,0,48,0,28, + 0,96,0,252,0,96,0,60,0,192,0,60,0,128,0,60, + 1,128,0,60,3,0,0,60,3,0,0,60,6,0,0,60, + 6,0,0,60,12,14,0,60,12,30,0,60,24,30,0,60, + 16,62,0,255,48,62,0,0,96,94,0,0,96,158,0,0, + 192,158,0,0,193,30,0,1,131,30,0,1,131,255,128,3, + 0,30,0,2,0,30,0,6,0,30,0,12,0,255,128,25, + 26,104,31,4,0,0,0,48,0,28,0,32,0,252,0,96, + 0,60,0,64,0,60,0,192,0,60,1,128,0,60,1,128, + 0,60,3,0,0,60,3,0,0,60,6,0,0,60,4,62, + 0,60,12,207,0,60,9,135,128,60,25,135,128,60,49,199, + 128,255,49,231,0,0,96,207,0,0,96,28,0,0,192,56, + 0,0,128,96,0,1,128,64,128,3,0,128,128,3,1,255, + 128,6,1,255,128,6,1,63,0,12,1,14,0,26,26,104, + 30,2,0,0,0,24,0,31,0,24,0,35,128,48,0,99, + 192,48,0,115,192,96,0,115,192,64,0,51,128,192,0,3, + 0,128,0,28,1,128,0,3,131,0,0,3,195,0,0,113, + 230,7,0,241,228,15,0,227,236,15,0,99,200,31,0,63, + 24,31,0,0,16,47,0,0,48,79,0,0,96,79,0,0, + 96,143,0,0,192,143,0,0,129,255,192,1,128,15,0,1, + 0,15,0,3,0,15,0,2,0,127,192,11,26,52,16,2, + 248,28,0,62,0,62,0,62,0,28,0,0,0,0,0,30, + 0,49,0,33,0,33,0,1,0,2,0,6,0,14,0,28, + 0,60,0,120,192,120,64,248,32,240,32,240,32,240,32,120, + 64,120,64,31,128,23,33,99,25,1,0,1,128,0,1,192, + 0,0,224,0,0,96,0,0,48,0,0,16,0,0,0,0, + 0,16,0,0,24,0,0,56,0,0,56,0,0,60,0,0, + 124,0,0,124,0,0,126,0,0,254,0,0,254,0,0,158, + 0,1,159,0,1,159,0,1,31,0,3,15,128,3,15,128, + 3,15,128,6,7,192,7,255,192,6,7,192,4,7,224,12, + 3,224,12,3,224,28,3,240,28,3,240,255,159,254,23,33, + 99,25,1,0,0,3,0,0,7,128,0,7,0,0,14,0, + 0,28,0,0,16,0,0,0,0,0,16,0,0,24,0,0, + 56,0,0,56,0,0,60,0,0,124,0,0,124,0,0,126, + 0,0,254,0,0,254,0,0,159,0,1,159,0,1,159,0, + 1,31,128,3,15,128,3,15,128,3,15,128,6,7,192,7, + 255,192,6,7,192,12,7,224,12,3,224,12,3,224,28,3, + 240,60,3,248,255,159,254,23,33,99,25,1,0,0,16,0, + 0,56,0,0,56,0,0,124,0,0,199,0,1,129,128,0, + 0,0,0,16,0,0,24,0,0,56,0,0,56,0,0,60, + 0,0,124,0,0,124,0,0,126,0,0,254,0,0,254,0, + 0,158,0,1,159,0,1,159,0,1,31,0,3,15,128,3, + 15,128,3,15,128,6,7,192,7,255,192,6,7,192,4,7, + 224,12,3,224,12,3,224,28,3,240,28,3,240,255,159,254, + 23,32,96,25,1,0,0,112,128,0,249,0,1,191,0,1, + 14,0,0,0,0,0,0,0,0,0,0,0,24,0,0,56, + 0,0,56,0,0,60,0,0,124,0,0,124,0,0,126,0, + 0,254,0,0,254,0,0,159,0,1,159,0,1,159,0,1, + 31,128,3,15,128,3,15,128,3,15,128,6,7,192,7,255, + 192,6,7,192,12,7,224,12,3,224,12,3,224,28,3,240, + 60,3,248,255,159,254,23,32,96,25,1,0,1,195,128,3, + 199,128,3,199,128,1,195,128,0,0,0,0,0,0,0,24, + 0,0,56,0,0,56,0,0,56,0,0,60,0,0,124,0, + 0,124,0,0,126,0,0,254,0,0,254,0,0,159,0,1, + 159,0,1,159,0,1,15,128,3,15,128,2,15,128,2,15, + 192,6,7,192,7,255,192,4,7,192,4,3,224,8,3,224, + 8,3,224,24,1,240,24,3,240,255,159,254,23,33,99,25, + 1,0,0,60,0,0,126,0,0,195,0,0,195,0,0,199, + 0,0,126,0,0,60,0,0,0,0,0,24,0,0,56,0, + 0,56,0,0,60,0,0,124,0,0,124,0,0,126,0,0, + 254,0,0,254,0,0,159,0,1,159,0,1,159,0,1,15, + 0,3,15,128,3,15,128,2,15,128,2,7,192,7,255,192, + 4,7,192,4,3,224,12,3,224,8,3,224,24,1,240,28, + 1,240,255,159,254,32,25,100,34,1,0,0,15,255,255,0, + 3,240,31,0,7,240,15,0,7,240,7,0,5,240,7,0, + 13,240,3,0,9,240,3,0,25,240,35,0,25,240,32,0, + 49,240,96,0,49,240,96,0,97,240,224,0,97,255,224,0, + 193,240,224,0,193,240,96,1,129,240,96,1,129,240,33,3, + 255,240,33,3,1,240,3,6,1,240,3,6,1,240,7,12, + 1,240,7,12,1,240,15,62,1,240,63,255,143,255,255,19, + 33,99,22,2,249,3,248,192,14,6,192,30,3,192,60,3, + 192,60,1,192,124,1,192,124,0,192,124,0,192,252,0,192, + 252,0,64,252,0,64,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,252,0,96,124,0,64,124,0,64,124,0, + 64,60,0,192,62,0,128,30,1,0,15,2,0,3,156,0, + 0,224,0,0,128,0,0,240,0,0,56,0,0,56,0,0, + 56,0,2,48,0,1,224,0,20,33,99,23,2,0,3,0, + 0,7,128,0,3,128,0,1,192,0,0,224,0,0,32,0, + 0,0,0,0,0,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,33,99,23,2,0,0,6,0,0,14,0,0,30,0, + 0,28,0,0,48,0,0,96,0,0,0,0,0,0,0,255, + 255,224,31,1,224,31,0,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,4,32,31,4,0,31,12,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,12,48,31, + 4,48,31,4,48,31,0,48,31,0,112,31,0,112,31,0, + 240,31,0,240,31,3,240,255,255,240,20,33,99,23,2,0, + 0,32,0,0,96,0,0,240,0,1,248,0,3,140,0,6, + 3,0,0,0,0,0,0,0,255,255,224,31,1,224,31,0, + 224,31,0,224,31,0,96,31,0,96,31,0,32,31,4,32, + 31,4,0,31,12,0,31,12,0,31,28,0,31,252,0,31, + 28,0,31,12,0,31,12,48,31,4,48,31,4,48,31,0, + 48,31,0,112,31,0,112,31,0,240,31,1,240,31,3,240, + 255,255,240,20,32,96,23,2,0,7,14,0,7,143,0,7, + 143,0,7,14,0,0,0,0,0,0,0,0,0,0,255,255, + 224,31,1,224,31,0,224,31,0,224,31,0,96,31,0,96, + 31,0,32,31,4,32,31,4,0,31,12,0,31,12,0,31, + 28,0,31,252,0,31,28,0,31,12,0,31,12,48,31,4, + 48,31,4,48,31,0,48,31,0,112,31,0,112,31,0,240, + 31,0,240,31,3,240,255,255,240,11,33,66,14,2,0,96, + 0,112,0,120,0,56,0,28,0,4,0,0,0,0,0,255, + 224,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,255, + 224,11,33,66,14,2,0,0,192,1,192,3,192,3,128,7, + 0,4,0,0,0,0,0,255,224,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,255,224,11,33,66,14,2,0,4, + 0,14,0,14,0,31,0,113,128,192,96,0,0,0,0,255, + 224,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,255, + 224,11,32,64,15,2,0,112,224,241,224,241,224,112,224,0, + 0,0,0,0,0,255,224,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,255,224,23,25,75,27,2,0,255,255,0, + 31,3,192,31,0,224,31,0,240,31,0,120,31,0,120,31, + 0,124,31,0,124,31,0,126,31,0,126,31,0,126,255,224, + 126,31,0,126,31,0,126,31,0,126,31,0,126,31,0,124, + 31,0,124,31,0,124,31,0,120,31,0,120,31,0,240,31, + 0,224,31,3,192,255,255,0,24,32,96,27,2,0,0,112, + 64,0,252,192,0,159,128,0,135,0,0,0,0,0,0,0, + 0,0,0,255,3,255,31,128,124,31,128,56,15,192,16,7, + 224,16,7,240,16,7,240,16,5,248,16,5,252,16,4,252, + 16,4,126,16,4,127,16,4,63,16,4,31,144,4,31,208, + 4,15,208,4,7,240,4,7,240,4,3,240,4,1,240,4, + 1,240,4,0,240,14,0,112,31,0,48,255,192,48,20,33, + 99,24,2,1,7,0,0,7,128,0,3,128,0,1,192,0, + 0,192,0,0,96,0,0,0,0,0,0,0,3,252,0,6, + 6,0,14,7,0,28,3,128,60,3,192,60,3,192,124,3, + 224,124,3,224,124,3,224,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,252,3,240,252,3,240,124,3,224,124, + 3,224,124,3,224,60,3,192,60,3,192,28,3,128,14,7, + 0,6,6,0,3,252,0,20,33,99,24,2,1,0,14,0, + 0,30,0,0,28,0,0,56,0,0,48,0,0,96,0,0, + 0,0,0,0,0,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,224,124,3,224,124,3,224,60,3, + 192,60,3,192,28,3,128,14,7,0,6,6,0,3,252,0, + 20,33,99,24,2,0,0,96,0,0,96,0,0,240,0,1, + 248,0,3,156,0,6,6,0,0,0,0,0,0,0,3,252, + 0,6,6,0,14,7,0,28,3,128,60,3,192,60,3,192, + 124,3,224,124,3,224,124,3,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,124,3, + 224,124,3,224,124,3,224,60,3,192,60,3,192,28,3,128, + 14,7,0,6,6,0,3,252,0,20,32,96,24,2,0,1, + 194,0,3,230,0,6,124,0,4,56,0,0,0,0,0,0, + 0,0,0,0,3,252,0,6,6,0,14,7,0,28,3,128, + 60,3,192,60,3,192,124,3,224,124,3,224,124,3,224,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,124,3,224,60,3,192, + 60,3,192,28,3,128,14,7,0,6,6,0,3,252,0,20, + 32,96,24,2,0,7,14,0,7,143,0,7,143,0,7,14, + 0,0,0,0,0,0,0,0,0,0,3,252,0,6,6,0, + 14,7,0,28,3,128,60,3,192,60,3,192,124,3,224,124, + 3,224,124,3,224,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,252,3,240,124,3,224,124,3,224, + 124,3,224,60,3,192,60,3,192,28,3,128,14,7,0,6, + 6,0,3,252,0,22,23,69,32,5,254,64,0,8,224,0, + 28,240,0,60,120,0,120,56,0,240,28,0,224,14,1,192, + 7,3,128,3,135,0,1,206,0,0,252,0,0,120,0,0, + 120,0,0,252,0,1,206,0,3,135,0,7,3,128,14,1, + 192,28,0,224,56,0,112,112,0,56,224,0,28,64,0,8, + 20,25,75,24,2,1,3,252,48,6,6,96,14,3,192,28, + 3,128,60,3,192,60,3,192,124,3,224,124,7,224,124,15, + 224,252,11,240,252,19,240,252,35,240,252,99,240,252,67,240, + 252,131,240,253,3,240,127,3,224,126,3,224,124,3,224,60, + 3,192,60,3,192,28,3,128,60,7,0,102,6,0,195,252, + 0,23,33,99,26,2,1,1,192,0,1,224,0,0,224,0, + 0,112,0,0,56,0,0,8,0,0,0,0,0,0,0,255, + 225,254,31,0,120,31,0,48,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,15,0,32,15,0, + 32,7,128,64,3,192,192,1,255,0,23,33,99,26,2,1, + 0,3,128,0,3,128,0,7,128,0,14,0,0,12,0,0, + 24,0,0,0,0,0,0,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,23,33,99,26,2,0,0,8,0,0,24,0,0, + 60,0,0,126,0,0,227,0,1,128,192,0,0,0,0,0, + 0,255,225,254,31,0,120,31,0,48,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,15,0,48, + 15,128,32,7,128,64,3,192,192,1,255,0,23,32,96,26, + 2,0,1,195,128,1,227,192,1,227,192,1,195,128,0,0, + 0,0,0,0,0,0,0,255,225,254,31,0,120,31,0,48, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,15,0,32,15,0,32,7,128,64,3,192,192,1, + 255,0,23,33,99,26,2,0,0,1,128,0,3,128,0,7, + 128,0,7,0,0,12,0,0,8,0,0,0,0,0,0,0, + 255,225,254,31,128,112,31,128,96,15,128,96,15,192,64,7, + 192,192,7,224,192,7,224,128,3,225,128,3,241,0,1,241, + 0,1,251,0,0,250,0,0,254,0,0,252,0,0,124,0, + 0,124,0,0,124,0,0,124,0,0,124,0,0,124,0,0, + 124,0,0,124,0,0,124,0,3,255,128,20,25,75,24,2, + 0,255,240,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,254,0,31,7,128,31,3,192,31,1,224,31,1,240,31, + 1,240,31,1,240,31,1,240,31,1,240,31,1,224,31,3, + 192,31,7,128,31,254,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,255,240,0,16,25,50,19, + 1,0,3,224,6,120,14,60,30,60,28,60,60,60,60,60, + 60,56,60,112,61,192,60,48,60,28,60,30,60,30,60,15, + 60,15,60,15,60,15,60,15,60,15,61,207,63,222,63,158, + 61,156,252,248,15,25,50,18,2,0,48,0,56,0,60,0, + 28,0,14,0,2,0,0,0,0,0,15,128,49,224,96,240, + 112,240,120,240,120,240,48,240,3,240,28,240,56,240,120,240, + 240,240,240,242,240,242,240,242,121,252,62,120,15,25,50,18, + 2,0,0,224,0,224,1,224,1,192,3,0,6,0,4,0, + 0,0,15,128,49,224,96,240,112,240,120,240,120,240,32,240, + 7,240,28,240,56,240,120,240,240,240,240,242,240,242,240,242, + 121,252,62,120,15,25,50,18,2,0,7,0,7,0,15,0, + 13,128,24,192,112,96,0,0,0,0,15,128,49,224,96,240, + 112,240,120,240,120,240,32,240,7,240,28,240,56,240,120,240, + 240,240,240,242,240,242,240,242,121,252,62,120,15,24,48,18, + 2,0,28,32,63,32,103,224,65,192,0,0,0,0,0,0, + 15,128,49,224,96,240,112,240,120,240,120,240,48,240,7,240, + 28,240,56,240,120,240,240,240,240,242,240,242,240,242,121,252, + 62,120,15,24,48,18,2,0,112,224,120,240,120,240,112,224, + 0,0,0,0,0,0,15,128,49,224,96,240,112,240,120,240, + 120,240,32,240,7,240,28,240,56,240,120,240,240,240,240,242, + 240,242,240,242,121,252,62,120,15,25,50,18,2,1,15,128, + 25,192,16,192,16,192,24,192,15,128,7,0,0,0,15,128, + 49,224,96,240,112,240,120,240,120,240,32,240,7,240,24,240, + 56,240,112,240,240,240,240,242,240,242,240,242,121,252,62,120, + 21,17,51,25,2,0,31,143,128,49,248,224,96,248,240,112, + 248,112,120,248,120,120,240,120,48,240,120,3,240,120,28,255, + 248,56,240,0,120,240,0,240,240,8,240,248,8,240,248,8, + 240,248,16,121,188,48,62,15,192,13,24,48,16,2,249,7, + 128,28,96,56,32,120,112,120,240,248,240,240,224,240,64,240, + 0,240,0,240,0,240,8,120,16,120,16,56,16,28,32,15, + 192,2,0,4,0,3,128,1,192,1,192,17,192,15,128,13, + 25,50,17,2,0,48,0,56,0,60,0,28,0,6,0,3, + 0,0,0,0,0,7,128,24,224,56,240,120,240,120,240,240, + 120,240,120,240,120,255,248,240,0,240,0,240,8,120,8,120, + 24,56,16,28,32,7,192,13,25,50,17,2,0,0,96,0, + 224,1,224,1,192,3,128,6,0,0,0,0,0,7,128,24, + 224,56,240,120,240,120,240,240,120,240,120,240,120,255,248,240, + 0,240,0,240,8,120,8,120,24,56,16,28,32,7,192,13, + 25,50,17,2,0,7,0,7,0,15,128,13,128,24,192,48, + 112,0,0,0,0,7,128,24,224,56,240,120,240,120,240,240, + 120,240,120,240,120,255,248,240,0,240,0,240,8,120,8,120, + 24,56,16,28,32,7,192,13,24,48,17,2,0,56,224,120, + 240,120,240,56,224,0,0,0,0,0,0,7,128,24,224,56, + 240,120,240,120,240,240,120,240,120,240,120,255,248,240,0,240, + 0,240,8,120,8,120,24,56,16,28,32,7,192,8,25,25, + 10,1,0,192,224,240,112,24,12,0,0,252,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,255,8,25,25,10, + 1,0,3,7,7,14,28,16,0,0,252,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,255,10,25,50,10,0, + 0,28,0,30,0,30,0,55,0,97,128,192,192,0,0,0, + 0,126,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,127,128,10,24,48,11,1,0,115,128,243,192,243,192,115, + 128,0,0,0,0,0,0,126,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,127,128,14,25,50,18,2,0,30, + 48,15,96,15,128,7,128,15,192,49,224,1,224,0,240,15, + 248,28,248,56,120,120,120,120,124,240,124,240,60,240,60,240, + 60,240,60,240,60,240,124,120,120,120,120,56,112,28,224,7, + 192,17,23,69,19,1,1,7,136,0,15,248,0,16,240,0, + 0,0,0,0,0,0,0,0,0,252,120,0,61,188,0,61, + 28,0,62,30,0,62,30,0,62,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,255,127,128,14,25,50,18, + 2,0,24,0,60,0,28,0,14,0,7,0,3,0,0,0, + 0,0,7,128,28,224,56,112,120,120,120,120,240,60,240,60, + 240,60,240,60,240,60,240,60,240,60,120,120,120,120,56,112, + 24,224,7,128,14,25,50,18,2,0,0,96,0,240,0,224, + 1,192,3,128,3,0,0,0,0,0,7,128,28,224,56,112, + 120,120,120,120,240,60,240,60,240,60,240,60,240,60,240,60, + 240,60,120,120,120,120,56,112,24,224,7,128,14,25,50,18, + 2,0,3,0,7,128,7,128,15,192,28,224,48,48,32,16, + 0,0,7,128,28,224,56,112,120,120,120,120,240,60,240,60, + 240,60,240,60,240,60,240,60,240,60,120,120,120,120,56,112, + 24,224,7,128,14,24,48,18,2,0,14,16,31,144,39,224, + 33,224,0,0,0,0,0,0,7,128,28,224,56,112,120,120, + 120,120,240,60,240,60,240,60,240,60,240,60,240,60,240,60, + 120,120,120,120,56,112,24,224,7,128,14,24,48,18,2,0, + 56,112,60,240,60,240,56,112,0,0,0,0,0,0,7,128, + 28,224,56,112,120,120,120,120,240,60,240,60,240,60,240,60, + 240,60,240,60,240,60,120,120,120,120,56,112,24,224,7,128, + 29,23,92,31,1,254,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,7,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, + 255,248,255,255,255,248,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7, + 0,0,0,15,128,0,0,15,128,0,0,15,128,0,0,7, + 0,0,14,17,34,18,2,0,7,132,24,232,56,120,120,120, + 120,120,240,124,240,188,241,188,243,60,246,60,244,60,248,60, + 120,120,120,120,120,112,92,96,135,128,17,25,75,19,1,0, + 12,0,0,30,0,0,14,0,0,7,0,0,3,0,0,0, + 128,0,0,0,0,0,0,0,252,126,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,62,0,60,62,0,60, + 62,0,60,94,0,30,158,0,15,31,128,17,25,75,19,1, + 0,0,48,0,0,112,0,0,112,0,0,224,0,1,192,0, + 1,0,0,0,0,0,0,0,0,252,126,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,62,0,60,62,0, + 60,62,0,60,94,0,30,158,0,15,31,128,17,25,75,19, + 1,0,1,128,0,3,192,0,3,192,0,7,224,0,12,48, + 0,24,24,0,0,0,0,0,0,0,252,126,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,62,0,60,62, + 0,60,62,0,60,94,0,30,158,0,15,31,128,17,24,72, + 19,1,0,28,112,0,30,120,0,30,120,0,28,112,0,0, + 0,0,0,0,0,0,0,0,252,126,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,62,0,60,62,0,60, + 62,0,60,94,0,30,158,0,15,31,128,17,33,99,18,0, + 248,0,28,0,0,28,0,0,60,0,0,112,0,0,96,0, + 0,192,0,0,0,0,0,0,0,255,159,128,62,6,0,30, + 4,0,31,4,0,15,4,0,15,8,0,15,136,0,7,136, + 0,7,152,0,3,208,0,3,208,0,3,240,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 64,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,15,32,64,18,1,247,12,0,28,0,124,0, + 188,0,60,0,60,0,60,0,60,120,60,252,61,30,63,30, + 62,30,62,30,62,30,60,30,60,28,60,28,60,56,60,56, + 60,48,60,96,60,192,61,0,62,0,60,0,60,0,60,0, + 60,0,60,0,60,0,48,0,192,0,17,32,96,18,0,248, + 14,28,0,15,60,0,15,60,0,14,28,0,0,0,0,0, + 0,0,0,0,0,255,159,128,62,6,0,30,4,0,30,4, + 0,15,8,0,15,8,0,15,8,0,7,136,0,7,144,0, + 3,208,0,3,208,0,3,224,0,1,224,0,1,224,0,0, + 224,0,0,192,0,0,192,0,0,64,0,0,128,0,28,128, + 0,60,128,0,61,0,0,57,0,0,59,0,0,30,0,0 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=29 h=33 x= 4 y=11 dx=31 dy= 0 ascent=26 len=120 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26n[880] U8G_SECTION(".progmem.u8g_font_osb26n") = { + 0,95,44,227,246,25,0,0,0,0,42,57,0,26,249,25, + 0,12,14,28,17,3,11,14,0,14,0,14,0,196,112,228, + 240,245,224,14,0,14,0,245,224,228,240,196,112,14,0,14, + 0,14,0,29,30,120,31,1,251,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,255,255,255,248,255,255,255,248,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0, + 0,7,11,11,10,2,249,120,252,254,254,126,6,4,12,8, + 48,224,9,4,8,13,2,7,255,128,255,128,255,128,255,128, + 5,5,5,9,2,0,112,248,248,248,112,12,33,66,15,2, + 249,0,112,0,96,0,96,0,224,0,192,0,192,1,192,1, + 192,1,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,56, + 0,56,0,48,0,48,0,112,0,96,0,96,0,224,0,192, + 0,192,0,16,25,50,20,2,1,7,224,14,112,28,56,60, + 60,60,60,124,62,124,62,124,62,252,63,252,63,252,63,252, + 63,252,63,252,63,252,63,252,63,252,63,124,62,124,62,124, + 62,60,60,60,60,28,56,14,112,7,224,12,25,50,20,4, + 0,7,0,7,0,31,0,255,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,255,240,15,25,50,20,2,1,31,240,48,120,96,60,96, + 62,224,62,240,62,248,62,252,62,124,124,56,124,0,248,1, + 240,1,224,3,128,7,0,12,2,24,2,48,2,32,2,76, + 6,127,254,127,252,71,252,67,252,65,248,15,26,52,20,2, + 0,1,0,14,240,56,120,48,60,112,62,120,62,124,62,124, + 62,60,62,24,60,0,120,0,112,31,192,0,240,0,120,0, + 60,0,60,56,62,124,62,252,62,252,62,248,62,224,60,96, + 124,96,120,31,224,16,25,50,20,2,0,0,120,0,120,0, + 248,1,248,1,248,3,248,3,248,6,248,6,248,12,248,12, + 248,24,248,56,248,48,248,96,248,96,248,192,248,255,255,0, + 248,0,248,0,248,0,248,0,248,0,248,15,255,15,26,52, + 20,3,0,0,8,48,56,63,240,63,224,63,128,62,0,32, + 0,32,0,32,0,32,0,39,192,56,112,48,120,32,60,32, + 60,0,62,0,62,56,62,120,62,252,62,248,62,248,60,224, + 60,96,120,112,112,31,224,16,25,50,20,2,1,7,240,12, + 8,28,12,56,60,56,124,120,124,120,120,120,48,248,0,248, + 0,251,224,252,56,252,60,248,30,248,31,248,31,248,31,248, + 31,120,31,120,31,120,31,56,30,28,30,12,60,7,240,15, + 25,50,20,3,0,79,28,95,156,127,198,127,230,127,254,224, + 246,192,4,192,12,128,12,128,24,0,16,0,48,0,96,0, + 224,1,192,1,192,3,192,7,128,7,128,15,128,15,128,15, + 128,15,128,15,128,7,0,17,25,75,20,2,1,7,240,0, + 24,12,0,48,12,0,48,6,0,112,6,0,112,6,0,120, + 6,0,124,4,0,127,12,0,127,152,0,63,224,0,31,248, + 0,15,252,0,15,254,0,49,255,0,96,127,0,64,31,0, + 192,15,128,192,7,0,192,7,0,192,3,0,96,6,0,96, + 6,0,56,12,0,14,240,0,15,25,50,20,2,1,31,192, + 60,112,120,48,120,56,248,60,248,60,248,60,248,62,248,62, + 248,62,248,62,120,62,124,126,60,126,15,190,0,62,0,62, + 12,60,30,60,62,60,62,56,60,56,48,112,16,96,15,192 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--34-340-72-72-P-184-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=34 h=33 x= 4 y=18 dx=36 dy= 0 ascent=28 len=125 + Font Bounding box w=95 h=44 x=-29 y=-10 + Calculated Min Values x=-2 y=-8 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =26 descent=-8 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb26r[5950] U8G_SECTION(".progmem.u8g_font_osb26r") = { + 0,95,44,227,246,26,7,105,16,163,32,127,248,28,248,26, + 248,0,0,0,10,0,0,6,25,25,10,2,1,120,252,252, + 252,252,252,120,120,120,120,48,48,48,48,48,48,48,0,0, + 0,120,252,252,252,120,8,8,8,12,2,18,231,231,231,231, + 231,231,66,66,20,25,75,24,2,0,3,131,0,3,131,0, + 3,3,0,3,3,0,3,3,0,3,7,0,3,7,0,255, + 255,240,255,255,240,6,6,0,6,6,0,6,6,0,6,14, + 0,6,14,0,14,12,0,12,12,0,12,12,0,255,255,224, + 255,255,224,12,28,0,12,24,0,28,24,0,24,24,0,24, + 24,0,24,24,0,16,31,62,20,2,253,2,32,2,32,2, + 32,15,248,26,38,50,34,114,35,114,35,114,47,122,47,126, + 46,126,46,63,160,63,224,31,240,15,248,7,252,3,254,2, + 126,114,63,250,47,250,47,242,39,226,39,194,38,98,38,50, + 44,30,56,3,224,2,32,2,32,23,26,78,29,3,0,8, + 0,48,54,0,32,99,0,96,99,0,192,227,128,192,227,129, + 128,227,129,0,227,131,0,227,130,0,227,134,0,99,12,0, + 54,8,0,28,24,0,0,16,112,0,48,216,0,97,140,0, + 97,140,0,195,142,0,131,142,1,131,142,1,3,142,3,3, + 142,6,3,142,4,1,140,12,1,140,8,0,248,24,25,75, + 26,1,1,1,252,0,3,4,0,3,2,0,7,2,0,7, + 2,0,7,6,0,7,132,0,7,200,0,3,240,0,3,224, + 0,1,240,0,3,240,127,6,248,28,12,124,8,24,60,24, + 56,62,16,112,31,16,240,15,32,240,15,224,248,7,192,248, + 3,192,252,3,225,126,7,242,127,253,254,31,240,124,3,8, + 8,7,2,18,224,224,224,224,224,224,64,64,10,31,62,12, + 2,250,0,192,1,0,2,0,6,0,12,0,24,0,56,0, + 56,0,120,0,112,0,112,0,240,0,240,0,240,0,240,0, + 240,0,240,0,240,0,240,0,240,0,112,0,112,0,112,0, + 56,0,56,0,24,0,28,0,12,0,6,0,3,0,1,128, + 9,32,64,12,1,250,192,0,96,0,48,0,24,0,28,0, + 12,0,14,0,6,0,7,0,7,0,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,0,7,0,7,0,14,0,14,0,12,0,24,0,48,0, + 96,0,192,0,128,0,12,14,28,17,3,11,14,0,14,0, + 14,0,196,112,228,240,245,224,14,0,14,0,245,224,228,240, + 196,112,14,0,14,0,14,0,29,30,120,31,1,251,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,255,255,255,248,255,255,255,248,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,7,11,11,10,2,249,120,252,254,254, + 126,6,4,12,8,48,224,9,4,8,13,2,7,255,128,255, + 128,255,128,255,128,5,5,5,9,2,0,112,248,248,248,112, + 12,33,66,15,2,249,0,112,0,96,0,96,0,224,0,192, + 0,192,1,192,1,192,1,128,1,128,3,128,3,0,3,0, + 7,0,6,0,6,0,6,0,14,0,12,0,12,0,28,0, + 24,0,24,0,56,0,56,0,48,0,48,0,112,0,96,0, + 96,0,224,0,192,0,192,0,16,25,50,20,2,1,7,224, + 14,112,28,56,60,60,60,60,124,62,124,62,124,62,252,63, + 252,63,252,63,252,63,252,63,252,63,252,63,252,63,252,63, + 124,62,124,62,124,62,60,60,60,60,28,56,14,112,7,224, + 12,25,50,20,4,0,7,0,7,0,31,0,255,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,240,15,25,50,20,2,1,31,240, + 48,120,96,60,96,62,224,62,240,62,248,62,252,62,124,124, + 56,124,0,248,1,240,1,224,3,128,7,0,12,2,24,2, + 48,2,32,2,76,6,127,254,127,252,71,252,67,252,65,248, + 15,26,52,20,2,0,1,0,14,240,56,120,48,60,112,62, + 120,62,124,62,124,62,60,62,24,60,0,120,0,112,31,192, + 0,240,0,120,0,60,0,60,56,62,124,62,252,62,252,62, + 248,62,224,60,96,124,96,120,31,224,16,25,50,20,2,0, + 0,120,0,120,0,248,1,248,1,248,3,248,3,248,6,248, + 6,248,12,248,12,248,24,248,56,248,48,248,96,248,96,248, + 192,248,255,255,0,248,0,248,0,248,0,248,0,248,0,248, + 15,255,15,26,52,20,3,0,0,8,48,56,63,240,63,224, + 63,128,62,0,32,0,32,0,32,0,32,0,39,192,56,112, + 48,120,32,60,32,60,0,62,0,62,56,62,120,62,252,62, + 248,62,248,60,224,60,96,120,112,112,31,224,16,25,50,20, + 2,1,7,240,12,8,28,12,56,60,56,124,120,124,120,120, + 120,48,248,0,248,0,251,224,252,56,252,60,248,30,248,31, + 248,31,248,31,248,31,120,31,120,31,120,31,56,30,28,30, + 12,60,7,240,15,25,50,20,3,0,79,28,95,156,127,198, + 127,230,127,254,224,246,192,4,192,12,128,12,128,24,0,16, + 0,48,0,96,0,224,1,192,1,192,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,7,0,17,25,75,20, + 2,1,7,240,0,24,12,0,48,12,0,48,6,0,112,6, + 0,112,6,0,120,6,0,124,4,0,127,12,0,127,152,0, + 63,224,0,31,248,0,15,252,0,15,254,0,49,255,0,96, + 127,0,64,31,0,192,15,128,192,7,0,192,7,0,192,3, + 0,96,6,0,96,6,0,56,12,0,14,240,0,15,25,50, + 20,2,1,31,192,60,112,120,48,120,56,248,60,248,60,248, + 60,248,62,248,62,248,62,248,62,120,62,124,126,60,126,15, + 190,0,62,0,62,12,60,30,60,62,60,62,56,60,56,48, + 112,16,96,15,192,5,17,17,9,2,0,112,248,248,248,112, + 0,0,0,0,0,0,0,112,248,248,248,112,6,23,23,9, + 2,249,112,248,248,248,112,0,0,0,0,0,0,0,112,248, + 252,252,252,12,12,8,16,48,192,26,29,116,32,3,251,0, + 0,1,192,0,0,3,192,0,0,15,0,0,0,62,0,0, + 0,248,0,0,1,224,0,0,7,128,0,0,31,0,0,0, + 124,0,0,0,240,0,0,3,192,0,0,15,128,0,0,62, + 0,0,0,120,0,0,0,224,0,0,0,120,0,0,0,62, + 0,0,0,15,128,0,0,3,192,0,0,0,240,0,0,0, + 124,0,0,0,31,0,0,0,7,128,0,0,1,224,0,0, + 0,248,0,0,0,62,0,0,0,15,0,0,0,3,192,0, + 0,1,192,29,9,36,33,2,5,255,255,255,248,255,255,255, + 248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,248,255,255,255,248,26,29,116, + 32,3,251,224,0,0,0,240,0,0,0,60,0,0,0,31, + 0,0,0,7,192,0,0,1,224,0,0,0,120,0,0,0, + 62,0,0,0,15,128,0,0,3,192,0,0,0,240,0,0, + 0,124,0,0,0,31,0,0,0,7,128,0,0,1,192,0, + 0,7,128,0,0,31,0,0,0,124,0,0,0,240,0,0, + 3,192,0,0,15,128,0,0,62,0,0,0,120,0,0,1, + 224,0,0,7,192,0,0,31,0,0,0,60,0,0,0,240, + 0,0,0,224,0,0,0,11,25,50,16,2,1,63,128,67, + 192,129,224,129,224,129,224,131,224,195,192,67,192,3,128,7, + 0,6,0,12,0,8,0,24,0,17,0,17,0,17,0,14, + 0,0,0,0,0,14,0,31,0,31,0,31,0,14,0,25, + 25,100,27,1,1,0,255,192,0,3,0,48,0,6,0,24, + 0,12,0,12,0,24,0,6,0,48,30,243,0,48,114,243, + 0,96,225,227,0,97,225,225,128,227,193,225,128,195,193,225, + 128,195,193,193,128,199,131,193,128,199,131,193,128,199,131,195, + 0,199,131,195,0,231,135,130,0,103,135,134,0,99,139,204, + 0,49,240,240,0,48,0,0,0,24,0,0,0,12,0,0, + 0,7,0,96,0,1,255,192,0,23,26,78,25,1,0,0, + 16,0,0,24,0,0,56,0,0,56,0,0,60,0,0,124, + 0,0,124,0,0,126,0,0,254,0,0,254,0,0,158,0, + 1,159,0,1,159,0,1,31,0,3,15,128,3,15,128,3, + 15,128,6,7,192,7,255,192,6,7,192,4,7,224,12,3, + 224,12,3,224,28,3,240,28,3,240,255,159,254,20,25,75, + 24,2,0,255,254,0,31,7,128,31,7,192,31,3,192,31, + 3,224,31,3,224,31,3,224,31,3,224,31,3,192,31,7, + 128,31,7,0,31,248,0,31,7,0,31,3,192,31,1,224, + 31,1,224,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,240,31,1,224,31,3,192,31,7,128,255,254,0,19,25, + 75,22,2,1,3,248,64,14,6,192,30,3,192,60,3,192, + 60,1,192,124,1,192,124,0,192,124,0,192,252,0,192,252, + 0,64,252,0,64,252,0,0,252,0,0,252,0,0,252,0, + 0,252,0,0,252,0,96,124,0,64,124,0,64,124,0,64, + 60,0,192,30,0,128,30,1,0,15,3,0,3,252,0,23, + 25,75,27,2,0,255,255,0,31,3,192,31,0,224,31,0, + 240,31,0,120,31,0,120,31,0,124,31,0,124,31,0,126, + 31,0,126,31,0,126,31,0,126,31,0,126,31,0,126,31, + 0,126,31,0,126,31,0,124,31,0,124,31,0,124,31,0, + 120,31,0,120,31,0,240,31,0,224,31,3,192,255,255,0, + 20,25,75,23,2,0,255,255,224,31,1,224,31,0,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,4,32,31,4, + 0,31,12,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,12,48,31,4,48,31,4,48,31,0,48,31, + 0,112,31,0,112,31,0,240,31,1,240,31,3,240,255,255, + 240,20,25,75,23,2,0,255,255,240,31,3,240,31,0,240, + 31,0,240,31,0,112,31,0,112,31,0,48,31,4,48,31, + 4,48,31,12,48,31,12,0,31,28,0,31,252,0,31,28, + 0,31,12,0,31,12,0,31,4,0,31,4,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,255, + 240,0,21,26,78,24,2,0,0,32,0,3,220,32,7,3, + 96,14,1,224,28,1,224,60,0,224,60,0,224,124,0,96, + 124,0,96,252,0,32,252,0,32,252,0,0,252,0,0,252, + 63,248,252,3,224,252,3,224,252,3,224,252,3,224,124,3, + 224,124,3,224,124,3,224,60,3,224,60,3,96,30,6,96, + 14,12,96,3,184,32,25,25,100,28,2,0,255,231,255,128, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,255,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,31,0,248,0, + 31,0,248,0,31,0,248,0,31,0,248,0,255,231,255,128, + 11,25,50,14,2,0,255,224,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,255,224,16,25,50,18,1,0,7,255, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,120,248, + 248,248,248,248,248,248,240,248,224,240,64,240,97,224,63,192, + 24,25,75,27,2,0,255,227,252,31,0,224,31,0,192,31, + 0,128,31,1,128,31,3,0,31,6,0,31,12,0,31,28, + 0,31,28,0,31,62,0,31,126,0,31,255,0,31,191,0, + 31,31,128,31,31,128,31,15,192,31,15,192,31,7,224,31, + 7,224,31,3,240,31,1,240,31,1,248,31,1,252,255,231, + 255,20,25,75,23,2,0,255,224,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,48,31,0,48,31,0,48,31,0,48,31,0,112, + 31,0,112,31,0,240,31,0,240,31,1,240,31,3,240,255, + 255,240,27,25,100,30,2,0,255,0,63,224,15,0,63,0, + 15,128,63,0,15,128,63,0,15,128,127,0,15,192,95,0, + 15,192,95,0,11,224,95,0,11,224,223,0,11,224,159,0, + 9,240,159,0,9,240,159,0,9,241,31,0,8,249,31,0, + 8,249,31,0,8,249,31,0,8,126,31,0,8,126,31,0, + 8,62,31,0,8,62,31,0,8,60,31,0,8,28,31,0, + 24,28,31,0,60,28,31,0,255,8,255,224,24,25,75,27, + 2,0,255,3,255,31,128,124,31,128,56,15,192,16,7,224, + 16,7,240,16,7,240,16,5,248,16,5,252,16,4,252,16, + 4,126,16,4,127,16,4,63,16,4,31,144,4,31,208,4, + 15,208,4,7,240,4,7,240,4,3,240,4,1,240,4,1, + 240,4,0,240,14,0,112,31,0,48,255,192,48,20,25,75, + 24,2,1,3,252,0,6,6,0,14,7,0,28,3,128,60, + 3,192,60,3,192,124,3,224,124,3,224,124,3,224,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,124,3,224,124,3,224,124,3,224,60,3,192,60, + 3,192,28,3,128,14,7,0,6,6,0,3,252,0,20,25, + 75,24,2,0,255,254,0,31,3,128,31,3,192,31,1,224, + 31,1,240,31,1,240,31,1,240,31,1,240,31,1,240,31, + 1,224,31,3,192,31,7,128,31,254,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,255,240,0,20, + 33,99,24,2,249,3,252,0,6,6,0,14,7,0,28,3, + 128,60,3,192,60,3,192,124,3,224,124,3,224,124,3,224, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,240,124,3,224,124,3,224,60,243, + 192,61,155,192,29,11,128,15,15,128,7,15,16,3,156,16, + 0,108,16,0,12,16,0,12,48,0,14,48,0,15,240,0, + 15,224,0,7,224,0,3,128,22,25,75,25,2,0,255,252, + 0,31,7,128,31,7,192,31,3,192,31,3,224,31,3,224, + 31,3,224,31,3,224,31,3,192,31,7,192,31,15,0,31, + 248,0,31,14,0,31,15,0,31,7,128,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,196,31,7,196,31,7,196, + 31,7,196,31,3,200,255,241,248,16,25,50,21,3,1,31, + 198,32,118,96,62,224,30,224,14,240,6,248,6,252,6,255, + 2,127,128,127,192,63,240,15,248,7,252,129,254,128,254,192, + 127,192,31,192,15,224,7,224,7,240,6,248,6,220,12,135, + 120,21,25,75,25,3,0,255,255,248,248,248,248,240,248,120, + 224,248,120,192,248,56,192,248,56,128,248,24,128,248,24,128, + 248,24,128,248,24,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,248,0,0,248,0,0,248,0,15, + 255,0,23,25,75,26,2,0,255,225,254,31,0,120,31,0, + 48,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,16,15,0,32,15,0,32,7,128,64,3,192,192, + 1,255,0,24,25,75,27,2,0,255,241,255,31,128,56,15, + 128,48,15,192,48,15,192,48,7,192,32,7,224,32,7,224, + 96,3,224,64,3,240,64,1,240,192,1,240,128,1,248,128, + 0,249,128,0,249,128,0,253,0,0,125,0,0,127,0,0, + 126,0,0,62,0,0,62,0,0,60,0,0,28,0,0,28, + 0,0,24,0,34,25,125,36,1,0,255,231,255,127,192,31, + 129,248,14,0,15,128,248,14,0,15,128,252,12,0,15,192, + 124,12,0,7,192,124,12,0,7,192,124,8,0,7,224,254, + 24,0,3,224,190,24,0,3,224,190,24,0,3,241,159,16, + 0,1,241,159,48,0,1,241,31,48,0,1,249,15,32,0, + 1,251,15,160,0,0,250,15,224,0,0,254,15,224,0,0, + 254,7,192,0,0,126,7,192,0,0,124,7,192,0,0,124, + 3,192,0,0,60,3,128,0,0,56,3,128,0,0,56,1, + 128,0,0,24,1,128,0,23,25,75,26,2,0,255,231,252, + 31,193,224,15,192,192,15,193,128,7,225,128,7,227,0,3, + 242,0,3,246,0,1,244,0,1,248,0,0,248,0,0,252, + 0,0,124,0,0,62,0,0,126,0,0,127,0,0,159,0, + 1,159,128,1,15,128,3,15,192,6,7,224,4,7,224,12, + 3,240,28,7,240,255,143,254,23,25,75,26,2,0,255,225, + 254,31,128,112,31,128,96,15,128,96,15,192,64,7,192,192, + 7,224,192,7,224,128,3,225,128,3,241,0,1,241,0,1, + 251,0,0,250,0,0,254,0,0,252,0,0,124,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,124,0,0,124,0, + 0,124,0,0,124,0,3,255,128,18,25,75,22,2,0,127, + 255,192,124,15,192,120,31,128,112,31,128,96,63,0,96,63, + 0,64,126,0,64,126,0,64,252,0,0,252,0,1,248,0, + 1,240,0,3,240,0,7,224,0,7,224,0,15,192,64,15, + 192,64,31,128,64,31,128,64,63,0,192,63,1,192,126,1, + 192,126,3,192,252,15,192,255,255,192,8,31,31,14,3,250, + 255,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,255,11, + 33,66,15,2,249,192,0,192,0,224,0,96,0,96,0,96, + 0,112,0,48,0,48,0,56,0,24,0,24,0,28,0,12, + 0,12,0,12,0,14,0,6,0,6,0,7,0,3,0,3, + 0,3,0,3,128,1,128,1,128,1,192,0,192,0,192,0, + 224,0,96,0,96,0,96,8,31,31,13,2,250,255,15,15, + 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15,15,255,16,12,24,20, + 2,14,1,128,3,128,3,192,7,224,14,96,14,112,28,56, + 24,56,56,28,112,12,96,14,224,7,18,2,6,18,0,250, + 255,255,192,255,255,192,6,7,7,15,3,18,224,224,240,120, + 24,12,4,15,17,34,18,2,0,15,128,49,224,96,240,112, + 240,120,240,120,240,32,240,7,240,28,240,56,240,120,240,240, + 240,240,242,240,242,240,242,121,252,62,120,15,25,50,18,1, + 0,252,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 0,60,240,61,56,62,60,62,28,62,30,62,30,60,30,60, + 30,60,30,60,30,60,30,62,30,62,30,62,28,50,60,35, + 56,33,224,13,17,34,16,2,0,7,128,28,96,56,32,120, + 112,120,240,248,240,240,224,240,64,240,0,240,0,240,0,240, + 8,120,16,120,16,56,16,28,32,7,192,17,25,75,20,2, + 0,1,252,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,15,60,0,28,188,0,56, + 124,0,120,124,0,120,60,0,240,60,0,240,60,0,240,60, + 0,240,60,0,240,60,0,240,60,0,240,60,0,120,60,0, + 120,124,0,56,124,0,28,188,0,15,63,128,13,17,34,17, + 2,0,7,128,24,224,56,240,120,240,120,240,240,120,240,120, + 240,120,255,248,240,0,240,0,240,8,120,8,120,24,56,16, + 28,32,7,192,12,25,50,12,1,0,3,192,14,112,30,112, + 28,240,60,240,60,240,60,0,60,0,255,128,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,255,128,17,25,75,19, + 1,248,7,199,0,28,249,128,60,115,128,120,123,128,120,123, + 0,120,120,0,120,120,0,120,120,0,60,112,0,28,224,0, + 7,192,0,56,0,0,96,0,0,127,192,0,127,248,0,127, + 252,0,63,254,0,63,254,0,64,14,0,128,6,0,128,6, + 0,128,4,0,64,12,0,32,56,0,31,224,0,17,25,75, + 19,1,0,252,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,120,0,61,188, + 0,61,28,0,62,30,0,62,30,0,62,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,255,127,128,8,25, + 25,11,2,0,56,124,124,124,56,0,0,0,252,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,10,33,66, + 10,254,248,3,128,7,192,7,192,7,192,3,128,0,0,0, + 0,0,0,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,99,192,243,192,243,192,243,128,231, + 128,103,0,62,0,17,25,75,19,1,0,252,0,0,60,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,127,0,60,24,0,60,16,0,60,48,0,60, + 32,0,60,64,0,60,192,0,60,224,0,61,224,0,62,240, + 0,62,240,0,60,120,0,60,124,0,60,60,0,60,62,0, + 60,62,0,255,127,128,9,25,50,11,1,0,252,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,255,128,25,17, + 68,28,1,0,252,120,120,0,61,188,158,0,61,31,30,0, + 62,31,30,0,62,30,31,0,62,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,60,30,31,0,60,30,31,0,60,30,31,0, + 60,30,31,0,255,127,191,128,17,17,51,19,1,0,252,120, + 0,61,188,0,61,28,0,62,30,0,62,30,0,62,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,255,127, + 128,14,17,34,18,2,0,7,128,28,224,56,112,120,120,120, + 120,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,56,112,24,224,7,128,15,25,50,18,1,248,252, + 240,61,56,62,60,62,28,62,30,62,30,60,30,60,30,60, + 30,60,30,60,30,62,30,62,30,62,28,62,60,61,56,60, + 240,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 128,16,25,50,19,2,248,15,132,28,196,56,100,120,124,120, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 124,120,124,56,124,28,188,15,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,1,255,12,17,34,14,1,0,252, + 224,61,112,62,240,62,240,62,240,62,96,60,0,60,0,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,255, + 0,11,17,34,14,2,0,60,64,99,64,193,192,192,192,224, + 192,240,64,252,0,127,0,63,128,31,192,135,224,129,224,192, + 224,224,96,224,96,144,192,143,128,11,24,48,13,1,0,12, + 0,12,0,12,0,12,0,12,0,28,0,60,0,255,192,60, + 0,60,0,60,0,60,0,60,0,60,0,60,0,60,0,60, + 32,60,32,60,32,60,32,60,96,60,64,31,192,15,128,17, + 17,51,19,1,0,252,126,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,60,62,0,60,62,0,60, + 94,0,30,158,0,15,31,128,17,17,51,18,0,0,255,159, + 128,30,6,0,30,4,0,30,4,0,15,12,0,15,8,0, + 15,8,0,7,152,0,7,144,0,3,208,0,3,240,0,3, + 224,0,1,224,0,1,192,0,1,192,0,0,192,0,0,128, + 0,25,17,68,26,0,0,255,63,207,128,30,15,6,0,30, + 15,6,0,30,15,4,0,15,7,132,0,15,15,132,0,7, + 143,136,0,7,139,200,0,7,147,200,0,3,211,208,0,3, + 209,240,0,3,225,240,0,1,225,224,0,1,224,224,0,1, + 192,224,0,0,192,192,0,0,192,64,0,16,17,34,18,1, + 0,255,126,62,24,30,16,31,16,15,32,15,192,7,192,3, + 192,3,192,1,224,3,240,2,240,4,248,8,120,8,124,24, + 126,254,127,17,25,75,18,0,248,255,159,128,62,6,0,30, + 4,0,31,4,0,15,8,0,15,8,0,15,136,0,7,136, + 0,7,144,0,3,208,0,3,208,0,3,224,0,1,224,0, + 1,224,0,0,224,0,0,192,0,0,64,0,0,64,0,0, + 128,0,28,128,0,60,128,0,60,128,0,57,0,0,59,0, + 0,30,0,0,13,17,34,16,1,0,127,248,112,248,96,240, + 97,224,67,224,67,192,7,192,7,128,15,128,15,0,31,8, + 30,8,60,24,124,24,120,56,248,120,255,248,11,33,66,15, + 2,249,0,32,3,192,7,0,15,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 56,0,224,0,56,0,28,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,14,0,7,0, + 3,192,0,32,2,32,32,10,4,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,11,33,66,15,3,249, + 128,0,240,0,60,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,15,0,7,0, + 1,224,7,0,15,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,60,0,240,0, + 128,0,19,7,21,23,2,6,62,0,64,127,128,32,255,240, + 32,135,252,32,129,255,224,128,63,192,64,15,128,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=38 h=37 x= 7 y=23 dx=41 dy= 0 ascent=38 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =29 descent=-9 + Max Font ascent =38 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29[15818] U8G_SECTION(".progmem.u8g_font_osb29") = { + 0,107,49,223,245,29,9,166,21,115,32,255,247,38,245,29, + 247,0,0,0,11,0,0,6,28,28,10,2,1,120,252,252, + 252,252,252,252,120,120,120,120,120,48,48,48,48,48,48,48, + 48,0,0,120,252,252,252,252,120,10,9,18,16,3,20,243, + 192,243,192,243,192,243,192,243,192,243,192,97,128,97,128,97, + 128,22,28,84,28,3,0,1,192,224,1,192,224,1,192,224, + 1,192,224,1,128,192,1,128,192,1,128,192,3,129,252,255, + 255,252,255,255,252,3,129,128,3,1,128,3,1,128,7,3, + 128,7,3,128,7,3,128,7,3,128,6,3,0,255,255,252, + 255,255,252,255,255,252,14,7,0,14,7,0,14,6,0,12, + 6,0,12,6,0,28,14,0,28,14,0,18,34,102,22,2, + 253,1,16,0,1,16,0,1,16,0,7,252,0,29,19,0, + 57,17,128,49,16,192,113,16,192,113,17,192,113,19,192,121, + 23,192,127,23,128,127,19,0,63,144,0,63,240,0,31,240, + 0,15,252,0,7,254,0,1,255,0,1,255,128,1,63,128, + 121,31,192,249,23,192,249,19,192,249,17,192,225,17,192,193, + 17,192,97,17,128,97,19,0,57,22,0,15,60,0,1,208, + 0,1,16,0,1,16,0,26,29,116,32,3,0,4,0,12, + 0,27,0,8,0,49,128,24,0,113,192,16,0,113,192,48, + 0,241,224,96,0,241,224,96,0,241,224,192,0,241,224,128, + 0,241,225,128,0,241,225,0,0,113,195,0,0,113,194,0, + 0,59,134,0,0,30,12,0,0,0,12,28,0,0,24,119, + 0,0,16,227,128,0,48,227,128,0,33,227,192,0,97,227, + 192,0,65,227,192,0,193,227,192,1,129,227,192,1,129,227, + 192,3,1,227,128,2,0,227,128,6,0,99,0,4,0,62, + 0,27,28,112,31,2,1,0,254,0,0,1,195,0,0,3, + 129,0,0,7,129,128,0,7,129,128,0,7,129,128,0,7, + 131,128,0,7,195,0,0,7,198,0,0,3,236,0,0,3, + 248,0,0,1,240,0,0,0,248,0,0,1,252,31,224,7, + 124,3,128,14,62,3,0,28,63,3,0,56,31,134,0,120, + 15,134,0,120,7,196,0,248,7,232,0,248,3,248,0,248, + 1,240,0,252,1,248,0,254,0,248,32,127,1,252,64,63, + 254,127,192,31,248,31,128,4,9,9,10,3,20,240,240,240, + 240,240,240,96,96,96,11,35,70,13,2,249,0,96,0,192, + 1,128,3,0,6,0,12,0,28,0,24,0,56,0,56,0, + 120,0,120,0,120,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,120,0,120,0,120,0,120,0, + 56,0,56,0,28,0,12,0,14,0,7,0,3,0,1,128, + 0,96,11,36,72,14,1,249,192,0,96,0,48,0,24,0, + 12,0,14,0,7,0,7,0,3,128,3,128,3,192,3,192, + 3,192,3,192,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,192,3,192,3,192,3,128,3,128,7,0, + 7,0,6,0,12,0,28,0,56,0,112,0,192,0,128,0, + 14,16,32,19,3,12,3,0,7,128,7,128,199,24,227,60, + 242,124,122,248,7,128,7,128,250,248,242,124,227,60,199,24, + 7,128,7,128,3,0,33,33,165,37,2,251,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,7,13,13,10,2,249,120,252,252,254,254,126,6,4,4, + 8,24,96,192,10,4,8,14,2,8,255,192,255,192,255,192, + 255,192,6,6,6,10,2,0,120,252,252,252,252,120,13,37, + 74,17,2,248,0,24,0,56,0,56,0,48,0,112,0,112, + 0,96,0,96,0,224,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,128,3,0,7,0,7,0,6,0,14,0, + 14,0,12,0,12,0,28,0,28,0,24,0,56,0,56,0, + 48,0,112,0,112,0,112,0,96,0,224,0,224,0,18,28, + 84,22,2,1,3,240,0,14,28,0,14,28,0,28,14,0, + 60,15,0,60,15,0,124,15,128,124,15,128,124,15,128,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15, + 192,252,15,192,252,15,192,252,15,192,252,15,192,124,15,128, + 124,15,128,124,15,128,60,15,0,60,15,0,28,14,0,12, + 28,0,14,28,0,3,240,0,13,28,56,22,5,0,3,128, + 7,128,15,128,255,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,248,17,28,84,22,2,1,15,248,0,24, + 62,0,48,63,0,112,31,0,240,31,128,240,31,128,252,31, + 128,252,31,128,254,31,128,126,63,0,60,63,0,0,126,0, + 0,252,0,0,248,0,1,224,0,3,128,0,6,0,0,12, + 0,128,24,0,128,16,0,128,32,0,128,47,1,128,127,255, + 128,127,255,128,71,255,0,67,255,0,65,254,0,64,252,0, + 17,28,84,22,2,1,15,248,0,24,62,0,48,63,0,48, + 31,0,112,31,128,120,31,128,124,31,128,124,31,128,124,31, + 128,60,31,0,0,31,0,0,62,0,0,120,0,15,192,0, + 0,120,0,0,62,0,0,63,0,0,31,0,16,31,128,124, + 31,128,252,31,128,252,31,128,252,31,128,248,31,128,240,63, + 0,112,62,0,56,124,0,31,248,0,18,28,84,22,2,0, + 0,124,0,0,124,0,0,252,0,0,252,0,1,252,0,1, + 252,0,3,252,0,3,252,0,6,252,0,6,252,0,12,252, + 0,12,252,0,24,252,0,24,252,0,48,252,0,48,252,0, + 96,252,0,96,252,0,192,252,0,255,255,192,0,252,0,0, + 252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252, + 0,15,255,192,17,29,87,22,3,0,0,6,0,112,28,0, + 127,252,0,127,248,0,127,224,0,127,192,0,126,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,103,224,0,104,120, + 0,112,62,0,96,62,0,96,31,0,0,31,0,0,31,128, + 0,31,128,56,31,128,124,31,128,252,31,128,252,31,128,248, + 31,0,240,31,0,224,30,0,96,62,0,48,124,0,31,240, + 0,18,29,87,22,3,0,0,32,0,3,220,0,7,6,0, + 14,6,0,30,15,0,60,31,0,60,63,0,124,63,0,124, + 62,0,124,28,0,252,0,0,252,0,0,252,0,0,253,248, + 0,255,30,0,254,31,0,252,15,128,252,15,128,252,15,192, + 252,15,192,252,15,192,124,15,192,124,15,192,124,15,192,60, + 15,128,28,15,128,30,15,0,14,30,0,3,252,0,17,28, + 84,22,3,0,103,135,0,111,199,0,127,227,128,127,241,128, + 127,249,128,127,255,128,96,125,128,64,1,0,64,3,0,64, + 3,0,192,6,0,0,4,0,0,12,0,0,24,0,0,56, + 0,0,112,0,0,112,0,0,240,0,1,240,0,3,224,0, + 3,224,0,3,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,3,192,0,19,29,87,22,2,0,0,64, + 0,7,184,0,28,6,0,56,3,0,112,1,0,112,1,128, + 240,1,128,240,1,128,248,1,128,252,3,0,255,2,0,127, + 196,0,127,248,0,63,252,0,31,255,0,15,255,128,27,255, + 128,48,255,192,96,63,192,96,15,192,224,3,224,224,1,192, + 224,1,192,224,1,192,224,1,192,112,1,128,56,1,0,28, + 6,0,15,252,0,18,28,84,22,3,1,15,240,0,30,28, + 0,60,30,0,124,14,0,124,15,0,252,15,128,252,15,128, + 252,15,128,252,15,128,252,15,192,252,15,192,124,15,192,124, + 15,192,62,31,192,30,63,192,7,239,192,0,15,192,0,15, + 192,0,15,192,30,15,128,31,15,128,63,15,128,63,15,0, + 62,15,0,56,30,0,24,28,0,24,56,0,15,240,0,6, + 19,19,10,2,0,120,252,252,252,252,120,0,0,0,0,0, + 0,0,120,252,252,252,252,120,7,26,26,10,2,249,120,252, + 252,252,252,120,0,0,0,0,0,0,0,120,252,252,254,254, + 126,6,4,4,8,16,96,192,29,33,132,36,3,250,0,0, + 0,24,0,0,0,120,0,0,1,240,0,0,7,192,0,0, + 31,128,0,0,62,0,0,0,248,0,0,3,224,0,0,15, + 192,0,0,31,0,0,0,124,0,0,1,240,0,0,7,192, + 0,0,15,128,0,0,62,0,0,0,248,0,0,0,240,0, + 0,0,124,0,0,0,62,0,0,0,15,128,0,0,3,224, + 0,0,0,248,0,0,0,124,0,0,0,31,0,0,0,7, + 192,0,0,1,240,0,0,0,252,0,0,0,62,0,0,0, + 15,128,0,0,3,224,0,0,1,248,0,0,0,120,0,0, + 0,16,32,11,44,36,2,5,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255, + 255,255,255,255,29,33,132,36,4,250,192,0,0,0,240,0, + 0,0,124,0,0,0,31,0,0,0,15,192,0,0,3,224, + 0,0,0,248,0,0,0,62,0,0,0,31,128,0,0,7, + 192,0,0,1,240,0,0,0,124,0,0,0,31,0,0,0, + 15,128,0,0,3,224,0,0,0,248,0,0,0,120,0,0, + 1,240,0,0,3,224,0,0,15,128,0,0,62,0,0,0, + 248,0,0,1,240,0,0,7,192,0,0,31,0,0,0,124, + 0,0,1,248,0,0,3,224,0,0,15,128,0,0,62,0, + 0,0,252,0,0,0,240,0,0,0,64,0,0,0,12,28, + 56,18,3,1,63,128,119,224,65,224,129,240,129,240,129,240, + 129,240,129,224,193,224,67,192,3,128,7,0,6,0,12,0, + 8,0,24,0,16,64,16,64,16,64,24,128,15,0,0,0, + 7,128,15,192,15,192,15,192,15,192,7,128,28,29,116,32, + 2,0,0,2,0,0,0,125,240,0,1,192,28,0,3,0, + 6,0,6,0,3,0,12,0,1,128,24,15,61,192,56,28, + 188,192,48,56,248,224,112,112,120,224,112,240,120,96,225,224, + 120,112,225,224,248,112,225,224,240,112,227,224,240,112,227,192, + 240,112,227,192,240,112,227,193,224,96,227,193,224,224,99,193, + 224,192,99,195,224,192,115,194,225,128,49,228,227,0,56,120, + 124,0,28,0,0,0,12,0,0,0,7,0,0,0,3,128, + 24,0,0,255,224,0,26,29,116,29,2,0,0,4,0,0, + 0,6,0,0,0,14,0,0,0,14,0,0,0,15,0,0, + 0,31,0,0,0,31,0,0,0,31,128,0,0,63,128,0, + 0,47,128,0,0,47,192,0,0,111,192,0,0,79,192,0, + 0,71,192,0,0,199,224,0,0,135,224,0,0,131,224,0, + 1,131,240,0,1,3,240,0,3,1,240,0,3,255,248,0, + 2,1,248,0,6,0,248,0,6,0,252,0,4,0,252,0, + 12,0,252,0,12,0,124,0,30,0,254,0,255,199,255,192, + 22,28,84,27,3,0,255,255,0,31,131,192,31,131,224,31, + 129,240,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,240,31,129,240,31,131,192,31,131,128,31,252,0, + 31,131,128,31,129,224,31,128,240,31,128,248,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,248,31,128, + 248,31,129,240,31,131,224,255,255,128,21,28,84,26,3,1, + 1,254,48,7,3,48,14,1,240,30,0,240,60,0,240,60, + 0,112,124,0,112,124,0,48,124,0,48,252,0,48,252,0, + 48,252,0,16,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,24,252,0,24,124,0,16,124,0,16,124, + 0,16,60,0,48,60,0,32,30,0,96,14,0,192,7,1, + 128,1,254,0,25,28,112,30,3,0,255,255,128,0,31,128, + 224,0,31,128,112,0,31,128,56,0,31,128,60,0,31,128, + 30,0,31,128,30,0,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,0,31,128,31,0,31,128,31,0,31,128, + 30,0,31,128,30,0,31,128,60,0,31,128,56,0,31,128, + 112,0,31,128,224,0,255,255,128,0,22,28,84,26,2,0, + 255,255,252,15,192,124,15,192,60,15,192,28,15,192,28,15, + 192,12,15,192,12,15,192,12,15,193,4,15,193,0,15,195, + 0,15,195,0,15,199,0,15,255,0,15,199,0,15,195,0, + 15,195,0,15,193,4,15,193,4,15,193,4,15,192,12,15, + 192,12,15,192,12,15,192,28,15,192,28,15,192,60,15,192, + 252,255,255,252,22,28,84,25,2,0,255,255,252,31,128,252, + 31,128,124,31,128,60,31,128,28,31,128,28,31,128,28,31, + 128,12,31,129,12,31,129,12,31,131,12,31,131,0,31,135, + 0,31,255,0,31,143,0,31,135,0,31,131,0,31,129,0, + 31,129,0,31,129,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,255,252,0,24,29, + 87,28,3,0,0,16,0,1,239,24,3,3,152,14,0,248, + 30,0,248,28,0,120,60,0,56,60,0,56,124,0,24,124, + 0,24,124,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,31,255,252,1,248,252,1,248,252,1,248,252,1,248, + 124,1,248,124,1,248,124,1,248,60,1,248,60,1,248,30, + 3,152,14,3,24,7,6,24,1,220,24,27,28,112,31,2, + 0,255,251,255,224,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,255,255,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,255,251,255, + 224,13,28,56,17,2,0,255,248,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,255,248,18, + 28,84,20,1,0,7,255,192,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,16,126,0,124,126,0,252,126, + 0,252,126,0,252,126,0,248,126,0,240,124,0,224,124,0, + 96,120,0,32,240,0,31,224,0,26,28,112,29,2,0,255, + 241,255,0,31,128,120,0,31,128,112,0,31,128,96,0,31, + 128,64,0,31,128,192,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,134,0,0,31,142,0,0,31,159,0,0,31, + 191,0,0,31,255,128,0,31,223,128,0,31,159,192,0,31, + 143,192,0,31,143,224,0,31,135,224,0,31,135,240,0,31, + 131,240,0,31,131,248,0,31,129,248,0,31,129,252,0,31, + 128,252,0,31,128,254,0,31,128,254,0,255,243,255,192,22, + 28,84,25,2,0,255,248,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,12,31,128,12,31,128,12,31,128, + 12,31,128,28,31,128,28,31,128,60,31,128,60,31,128,124, + 31,128,252,31,129,252,255,255,252,31,28,112,34,2,0,255, + 128,15,254,15,128,15,224,15,192,15,224,15,192,15,224,15, + 192,15,224,15,224,23,224,15,224,23,224,15,240,23,224,13, + 240,23,224,13,240,39,224,13,248,39,224,12,248,39,224,12, + 248,39,224,12,252,71,224,12,124,71,224,12,124,71,224,12, + 126,71,224,12,62,135,224,12,63,135,224,12,63,135,224,12, + 31,135,224,12,31,7,224,12,31,7,224,12,15,7,224,12, + 15,7,224,28,14,7,224,62,6,7,224,255,134,63,254,27, + 28,112,30,2,0,255,128,255,224,31,192,63,0,31,192,30, + 0,15,224,12,0,7,240,12,0,7,240,12,0,7,248,12, + 0,7,248,12,0,6,252,12,0,6,254,12,0,6,126,12, + 0,6,63,12,0,6,63,140,0,6,31,140,0,6,31,204, + 0,6,15,236,0,6,7,236,0,6,7,252,0,6,3,252, + 0,6,1,252,0,6,1,252,0,6,0,252,0,6,0,252, + 0,6,0,124,0,6,0,60,0,15,0,60,0,31,128,28, + 0,255,224,12,0,22,28,84,27,3,1,1,254,0,3,3, + 0,6,1,128,14,1,192,28,0,224,60,0,240,60,0,240, + 124,0,248,124,0,248,124,0,248,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,124,0,248,124,0,248,124,0,248,60,0,240,60,0,240, + 28,0,224,14,1,192,6,1,128,3,3,0,1,254,0,23, + 28,84,27,2,0,255,255,128,31,129,240,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,248,0,22,37,111,27,3,248,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,56, + 240,60,76,240,30,133,224,14,135,224,7,135,192,3,135,132, + 1,238,4,0,22,4,0,6,4,0,7,12,0,7,12,0, + 7,252,0,7,248,0,7,248,0,3,240,0,1,224,25,28, + 112,28,2,0,255,255,0,0,31,135,192,0,31,131,224,0, + 31,129,240,0,31,129,248,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,240,0,31,131,224,0, + 31,135,192,0,31,254,0,0,31,135,128,0,31,131,192,0, + 31,129,240,0,31,129,240,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,248,128,31,129,248,128, + 31,129,248,128,31,129,248,128,31,129,249,0,31,128,249,0, + 255,248,126,0,18,29,87,23,3,0,1,0,0,31,225,128, + 48,57,128,96,31,128,96,15,128,224,7,128,240,3,128,240, + 3,128,248,1,128,254,1,128,255,1,128,127,192,0,127,224, + 0,63,248,0,31,252,0,7,255,0,3,255,0,128,255,128, + 128,127,128,192,31,192,192,15,192,192,7,192,224,3,192,224, + 1,192,240,1,128,248,1,128,248,3,0,206,2,0,135,188, + 0,24,28,84,27,2,0,255,255,255,252,126,63,248,126,31, + 240,126,15,224,126,15,224,126,7,192,126,7,192,126,3,192, + 126,3,192,126,3,128,126,3,128,126,2,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,7,255,224,26,28,112,30,3, + 0,255,240,127,192,31,128,31,0,31,128,14,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,15,128,12,0,15,192,12, + 0,7,192,24,0,7,224,56,0,1,252,240,0,0,255,192, + 0,27,28,112,30,2,0,255,248,127,224,31,192,15,0,15, + 192,6,0,15,192,6,0,7,224,4,0,7,224,12,0,7, + 224,8,0,3,240,8,0,3,240,8,0,3,240,24,0,1, + 248,16,0,1,248,16,0,1,252,48,0,0,252,32,0,0, + 252,32,0,0,254,96,0,0,126,64,0,0,126,64,0,0, + 127,192,0,0,63,128,0,0,63,128,0,0,63,128,0,0, + 31,0,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,14,0,0,38,28,140,41,2,0,255,243,255, + 207,252,31,192,126,1,224,15,192,126,0,192,15,192,62,0, + 192,7,192,63,0,128,7,224,63,0,128,7,224,63,1,128, + 7,224,63,129,0,3,240,63,129,0,3,240,127,131,0,3, + 240,111,195,0,1,248,79,194,0,1,248,207,194,0,1,248, + 199,230,0,0,252,135,230,0,0,252,135,228,0,0,253,131, + 244,0,0,127,131,252,0,0,127,3,248,0,0,127,3,248, + 0,0,127,1,248,0,0,63,1,248,0,0,62,1,240,0, + 0,62,0,240,0,0,30,0,240,0,0,28,0,240,0,0, + 28,0,96,0,0,12,0,96,0,26,28,112,29,2,0,255, + 241,255,128,31,224,124,0,15,224,56,0,15,224,48,0,7, + 240,96,0,7,240,96,0,3,248,192,0,3,248,128,0,1, + 253,128,0,0,255,0,0,0,254,0,0,0,126,0,0,0, + 127,0,0,0,63,0,0,0,63,128,0,0,31,128,0,0, + 63,192,0,0,111,192,0,0,79,224,0,0,199,224,0,1, + 135,240,0,1,131,240,0,3,3,248,0,2,1,248,0,6, + 1,252,0,14,0,252,0,30,1,254,0,255,199,255,192,25, + 28,112,28,2,0,255,240,255,128,31,192,60,0,31,192,24, + 0,15,192,24,0,15,224,24,0,7,224,16,0,7,224,48, + 0,3,240,32,0,3,240,32,0,1,248,96,0,1,248,64, + 0,1,252,64,0,0,252,192,0,0,254,128,0,0,127,128, + 0,0,127,128,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,1,255,224,0,20,28,84,25,3,0,127,255,240,126,7, + 240,124,7,224,120,15,224,112,15,192,96,31,192,96,31,128, + 96,63,128,64,63,0,64,127,0,0,254,0,0,254,0,1, + 252,0,1,248,0,3,248,0,3,240,0,7,240,0,7,224, + 16,15,224,16,15,192,16,31,192,48,31,128,48,63,128,112, + 63,0,112,127,0,240,126,1,240,254,7,240,255,255,240,9, + 35,70,15,3,249,255,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,128,13,37,74,17,2, + 248,192,0,224,0,224,0,96,0,112,0,112,0,48,0,56, + 0,56,0,24,0,24,0,28,0,28,0,12,0,14,0,14, + 0,6,0,6,0,7,0,7,0,3,0,3,128,3,128,1, + 128,1,192,1,192,0,192,0,192,0,224,0,224,0,96,0, + 112,0,112,0,48,0,48,0,56,0,56,9,35,70,15,3, + 249,255,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,18,14,42,22,2,15,0,192,0, + 0,192,0,1,224,0,3,240,0,3,240,0,7,56,0,7, + 56,0,14,28,0,28,14,0,28,14,0,56,7,0,56,7, + 0,112,3,128,224,1,192,20,3,9,20,0,249,255,255,240, + 255,255,240,255,255,240,7,7,7,17,3,21,224,240,240,120, + 60,12,6,17,19,57,20,2,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,18,28,84,20,0,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,60,0,31,78,0,31,143,0,31,135,128,31, + 7,128,31,7,128,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,128,31,7,128, + 31,135,0,25,143,0,16,206,0,16,120,0,14,19,38,18, + 2,0,7,224,14,48,60,24,60,28,120,60,120,124,248,124, + 248,120,248,48,248,0,248,0,248,0,248,0,120,4,120,4, + 56,4,28,8,14,16,7,224,18,28,84,21,2,0,0,254, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,15,62,0,28,190,0,60, + 126,0,120,126,0,120,62,0,120,62,0,248,62,0,248,62, + 0,248,62,0,248,62,0,248,62,0,248,62,0,248,62,0, + 120,62,0,120,62,0,120,126,0,60,126,0,28,190,0,15, + 63,192,14,19,38,18,2,0,7,192,28,224,56,112,56,120, + 120,120,120,124,248,124,248,124,248,124,255,252,248,0,248,0, + 248,0,120,4,120,4,56,8,60,8,30,16,7,224,14,28, + 56,13,1,0,1,240,7,24,15,28,30,60,30,124,62,124, + 62,56,62,0,62,0,255,192,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,192,19,28,84,22, + 2,247,7,225,192,30,118,96,60,60,224,60,60,224,124,62, + 192,124,62,0,124,62,0,124,62,0,60,60,0,60,60,0, + 30,120,0,7,224,0,56,0,0,96,0,0,96,0,0,127, + 224,0,127,254,0,127,255,0,63,255,128,31,255,128,96,7, + 128,192,3,128,128,3,128,128,3,0,128,3,0,64,6,0, + 48,28,0,15,240,0,20,28,84,22,1,0,255,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,30,0,31,111,0,31,135,128, + 31,135,192,31,135,192,31,7,192,31,7,192,31,7,192,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,192,255,223,240, + 8,28,28,12,2,0,60,126,126,126,126,60,0,0,0,252, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,255,12,37,74,13,254,247,1,224,3,240,3,240,3,240, + 3,240,1,224,0,0,0,0,0,0,15,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,123,224,251,224,251,224,243,192,227,192,103,128, + 30,0,20,28,84,21,1,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,31,192,31,7,0,31,6,0,31,4,0,31, + 8,0,31,16,0,31,16,0,31,48,0,31,120,0,31,248, + 0,31,188,0,31,60,0,31,30,0,31,31,0,31,15,0, + 31,15,128,31,15,128,31,15,192,255,223,240,11,28,56,12, + 1,0,255,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,255,224,27,19,76,30,2,0, + 254,60,30,0,62,222,111,0,63,31,143,0,63,31,143,128, + 63,31,143,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,255,63,223,224,19,19,57,22, + 2,0,254,60,0,62,222,0,63,15,0,63,15,128,63,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,255,191,224,16,19,38,20,2, + 0,7,192,12,112,28,56,56,60,120,30,120,30,248,30,248, + 31,248,31,248,31,248,31,248,31,248,30,120,30,120,30,56, + 60,28,56,12,112,7,192,18,28,84,21,1,247,255,60,0, + 31,78,0,31,143,0,31,135,128,31,7,128,31,7,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,128,31,7,128,31,135,128,31,143,0, + 31,78,0,31,60,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,255,192, + 0,17,28,84,20,2,247,7,130,0,28,194,0,60,102,0, + 120,126,0,120,62,0,120,62,0,248,62,0,248,62,0,248, + 62,0,248,62,0,248,62,0,248,62,0,248,62,0,120,62, + 0,120,62,0,120,126,0,60,126,0,28,190,0,15,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,255,128,14,19,38,17,2, + 0,254,48,62,120,62,188,63,60,63,124,62,124,62,56,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,13,19,38,16,2,0,31,16,97, + 208,96,112,224,48,224,48,240,16,248,0,126,0,127,128,63, + 224,15,240,135,240,193,248,192,120,224,56,224,24,240,16,156, + 48,135,192,12,27,54,14,1,0,6,0,6,0,6,0,6, + 0,6,0,14,0,30,0,62,0,255,224,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,16,62, + 16,62,16,62,16,62,16,62,32,62,32,31,192,7,128,19, + 19,57,21,1,0,254,63,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 31,128,62,31,128,30,47,128,30,79,128,7,143,224,18,19, + 57,20,1,0,255,143,192,62,3,0,30,2,0,30,2,0, + 31,2,0,15,4,0,15,4,0,15,132,0,7,136,0,7, + 200,0,7,216,0,3,208,0,3,240,0,3,240,0,1,224, + 0,1,224,0,0,224,0,0,192,0,0,192,0,28,19,76, + 30,1,0,255,63,231,240,62,15,129,192,30,7,129,128,30, + 7,129,128,31,7,193,0,15,7,193,0,15,7,195,0,15, + 143,226,0,7,137,226,0,7,137,230,0,7,217,244,0,3, + 208,244,0,3,240,248,0,3,240,248,0,1,224,248,0,1, + 224,112,0,1,192,112,0,0,192,112,0,0,192,32,0,18, + 19,57,20,1,0,255,63,128,126,14,0,62,12,0,31,8, + 0,31,16,0,15,176,0,15,160,0,7,192,0,3,192,0, + 3,224,0,1,240,0,3,240,0,2,248,0,4,248,0,12, + 124,0,8,126,0,24,62,0,56,63,0,254,127,192,19,28, + 84,20,0,247,255,207,224,63,3,128,31,3,0,31,2,0, + 15,2,0,15,130,0,15,130,0,7,196,0,7,196,0,3, + 196,0,3,232,0,3,232,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,112,0,0,96,0,0,96,0,0,32,0, + 0,64,0,12,64,0,30,64,0,62,64,0,62,128,0,60, + 128,0,29,0,0,14,0,0,14,19,38,17,1,0,127,252, + 120,124,112,248,96,248,65,240,65,224,67,224,3,192,7,192, + 7,128,15,128,31,4,31,4,62,4,62,12,124,12,120,28, + 248,60,255,252,12,35,70,16,2,249,1,240,7,128,15,0, + 15,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,30,0,30,0,56,0,224,0,56,0, + 30,0,30,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,15,0,15,0,7,128,1,240, + 3,36,36,11,4,248,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,12,37,74,16,2,248, + 128,0,240,0,28,0,15,0,15,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 7,128,3,192,0,112,3,192,7,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,0,15,0,28,0,248,0,128,0,21,8,24,25,2,6, + 62,0,48,127,192,16,255,240,8,135,252,8,129,255,24,128, + 127,248,192,31,240,96,3,224,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,0,0,0,11,0,0,6, + 29,29,10,2,247,120,252,252,252,252,120,0,0,32,48,48, + 48,48,48,48,48,112,120,120,120,120,252,252,252,252,252,252, + 120,120,14,28,56,22,4,251,1,128,1,128,1,128,1,128, + 3,192,15,176,29,152,61,152,121,184,121,184,249,184,249,184, + 249,128,249,128,249,128,249,128,249,128,249,132,121,132,121,132, + 61,136,29,152,15,176,3,192,1,128,1,128,1,128,1,128, + 23,29,87,27,2,0,0,1,0,0,30,224,0,120,16,0, + 248,24,0,240,28,1,240,60,1,240,124,3,240,124,3,240, + 120,3,240,0,3,240,0,3,240,0,3,240,0,31,240,64, + 1,255,128,1,248,0,0,248,0,0,248,0,0,248,0,0, + 120,0,0,120,0,0,112,0,0,112,6,60,112,4,127,224, + 28,131,255,248,129,255,240,195,63,224,124,31,192,18,20,60, + 21,2,3,0,0,128,195,225,128,239,249,192,255,255,128,120, + 15,0,112,7,0,96,3,0,224,1,128,192,1,128,192,1, + 128,192,1,128,192,1,128,224,1,128,96,3,0,112,7,0, + 120,15,0,255,255,128,239,249,192,195,225,128,0,0,128,21, + 28,84,23,1,0,255,195,248,63,0,224,63,0,192,31,128, + 192,31,128,128,31,192,128,15,193,0,15,193,0,7,227,0, + 7,226,0,7,246,0,3,244,0,3,252,0,1,248,0,63, + 255,192,1,248,0,1,248,0,1,248,0,63,255,192,1,248, + 0,1,248,0,1,248,0,1,248,0,1,248,0,1,248,0, + 1,248,0,1,248,0,15,255,128,3,35,35,11,4,249,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,0,0,0, + 0,0,0,0,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,17,36,108,24,2,248,1,240,0,6,12,0,12,6, + 0,24,7,0,56,31,0,56,63,0,56,63,0,56,62,0, + 60,28,0,63,0,0,63,192,0,31,224,0,63,248,0,103, + 254,0,67,255,0,192,255,0,192,63,128,224,15,128,248,3, + 128,254,1,128,127,129,128,127,225,0,63,249,0,15,254,0, + 3,254,0,0,254,0,0,63,0,14,15,0,31,7,0,63, + 7,0,63,7,0,62,7,0,56,6,0,24,12,0,12,24, + 0,7,240,0,12,5,10,16,2,22,112,224,249,240,249,240, + 249,240,112,224,28,28,112,32,2,1,0,127,224,0,1,128, + 24,0,6,0,12,0,12,0,3,0,24,0,1,0,16,30, + 33,128,48,113,160,192,96,224,224,64,97,224,96,96,97,224, + 96,96,193,224,32,32,195,224,32,48,195,224,32,48,195,224, + 0,48,195,224,0,48,195,224,0,48,195,224,16,48,193,224, + 16,32,65,224,48,96,97,224,32,96,96,240,96,64,48,112, + 192,192,16,31,1,128,24,0,1,0,12,0,3,0,6,0, + 12,0,1,128,24,0,0,127,224,0,11,14,28,15,2,14, + 30,0,35,0,99,128,115,128,115,128,15,128,51,128,99,128, + 227,128,227,160,227,160,125,192,0,0,255,224,10,16,32,18, + 4,1,24,64,48,192,112,128,97,128,225,128,227,128,227,128, + 227,128,227,128,227,128,227,128,97,128,97,128,48,192,24,64, + 8,0,19,11,33,22,2,5,255,255,224,255,255,224,255,255, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,10,4,8,14,2,8,255, + 192,255,192,255,192,255,192,28,28,112,32,2,1,0,127,224, + 0,1,128,24,0,6,0,12,0,12,0,3,0,24,0,1, + 0,19,255,193,128,48,249,224,192,96,248,240,64,96,248,248, + 96,96,248,248,96,192,248,248,32,192,248,240,48,192,249,224, + 48,192,254,0,48,192,249,192,48,192,249,224,48,192,249,240, + 48,192,249,240,32,64,249,242,96,96,249,242,96,96,249,242, + 64,48,249,246,192,19,254,253,128,24,0,121,0,12,0,3, + 0,6,0,12,0,1,128,24,0,0,127,224,0,10,3,6, + 16,3,23,255,192,255,192,255,192,12,11,22,22,5,18,31, + 128,127,224,112,96,224,48,192,48,192,48,192,48,224,112,112, + 224,63,192,31,128,32,29,116,36,2,254,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,255,255,255,255,255,255,255,255,255,255,255,255,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,1,192,0,0, + 1,192,0,0,1,192,0,0,1,192,0,0,0,0,0,0, + 0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,11, + 17,34,17,3,11,31,0,99,192,225,224,225,224,241,224,241, + 224,115,192,7,128,14,0,28,0,48,32,96,32,64,96,255, + 224,255,224,143,192,135,128,12,18,36,16,2,10,31,0,51, + 192,97,224,113,224,121,224,121,224,1,192,3,128,30,0,3, + 192,1,224,1,240,121,240,249,240,241,240,225,224,99,192,31, + 0,7,7,7,17,7,21,14,30,30,60,120,96,192,19,30, + 90,22,2,245,112,28,0,112,28,0,248,62,0,248,62,0, + 248,62,0,248,62,0,248,62,0,240,62,0,240,62,0,240, + 62,0,112,28,0,112,28,0,96,28,32,96,24,32,32,56, + 96,32,127,224,61,255,192,47,231,192,39,195,192,32,0,0, + 32,0,0,112,0,0,112,0,0,120,0,0,120,0,0,124, + 0,0,124,0,0,124,0,0,124,0,0,56,0,0,18,33, + 99,23,3,251,15,255,192,63,206,0,127,206,0,127,206,0, + 255,206,0,255,206,0,255,206,0,255,206,0,255,206,0,255, + 206,0,255,206,0,255,206,0,127,206,0,63,206,0,7,206, + 0,1,206,0,1,206,0,1,206,0,1,206,0,1,206,0, + 1,206,0,1,206,0,1,206,0,1,206,0,1,206,0,1, + 206,0,1,206,0,1,206,0,1,206,0,1,206,0,1,206, + 0,1,206,0,1,206,0,6,6,6,10,2,10,120,252,252, + 252,252,120,7,8,8,17,5,248,32,32,56,12,14,14,14, + 252,8,17,17,16,4,11,12,28,252,60,60,60,60,60,60, + 60,60,60,60,60,60,60,255,10,14,28,14,2,14,30,0, + 51,0,115,128,243,192,243,192,243,192,243,192,243,192,243,192, + 115,128,51,0,30,0,0,0,255,192,10,16,32,18,4,1, + 6,0,131,0,195,0,97,128,97,128,113,192,113,192,113,192, + 113,192,113,192,97,192,97,128,65,128,195,0,134,0,4,0, + 28,29,116,34,4,0,0,0,12,0,12,0,12,0,28,0, + 24,0,252,0,24,0,60,0,48,0,60,0,32,0,60,0, + 96,0,60,0,192,0,60,0,192,0,60,1,128,0,60,1, + 128,0,60,3,0,0,60,2,3,128,60,6,3,128,60,12, + 7,128,60,12,15,128,60,24,15,128,255,24,31,128,0,48, + 23,128,0,32,39,128,0,96,103,128,0,192,71,128,0,192, + 199,128,1,128,255,240,1,128,7,128,3,0,7,128,2,0, + 7,128,6,0,7,128,12,0,63,240,27,29,116,34,4,0, + 0,0,12,0,12,0,24,0,28,0,24,0,252,0,48,0, + 60,0,48,0,60,0,96,0,60,0,96,0,60,0,192,0, + 60,1,128,0,60,1,128,0,60,3,0,0,60,3,31,0, + 60,6,115,192,60,6,225,224,60,12,225,224,60,8,241,224, + 255,24,241,224,0,48,115,192,0,48,3,128,0,96,7,0, + 0,96,14,0,0,192,24,0,0,128,48,32,1,128,64,32, + 3,0,64,96,3,0,191,224,6,0,255,224,6,0,159,192, + 12,0,135,128,30,29,116,34,2,0,0,0,3,0,31,0, + 3,0,51,192,6,0,97,224,4,0,113,224,12,0,121,224, + 8,0,121,224,24,0,1,192,48,0,3,128,48,0,30,0, + 96,0,3,192,64,0,1,224,192,0,49,240,128,224,249,241, + 128,224,249,243,1,224,225,226,3,224,99,230,3,224,63,132, + 5,224,0,12,5,224,0,8,9,224,0,16,25,224,0,48, + 17,224,0,32,49,224,0,96,63,252,0,64,1,224,0,192, + 1,224,0,128,1,224,1,0,1,224,3,0,15,252,12,29, + 58,18,3,247,30,0,63,0,63,0,63,0,63,0,30,0, + 0,0,14,0,17,0,32,128,32,128,32,128,1,128,3,0, + 3,0,6,0,14,0,28,0,60,96,120,32,120,48,248,16, + 248,16,248,16,248,16,248,48,124,96,63,192,31,128,26,37, + 148,29,2,0,0,224,0,0,0,240,0,0,0,240,0,0, + 0,120,0,0,0,56,0,0,0,12,0,0,0,6,0,0, + 0,0,0,0,0,4,0,0,0,6,0,0,0,14,0,0, + 0,14,0,0,0,15,0,0,0,31,0,0,0,31,0,0, + 0,31,128,0,0,63,128,0,0,47,128,0,0,47,192,0, + 0,111,192,0,0,79,192,0,0,71,192,0,0,199,224,0, + 0,135,224,0,0,131,224,0,1,131,240,0,1,3,240,0, + 3,1,240,0,3,255,248,0,2,1,248,0,6,0,248,0, + 6,0,252,0,4,0,252,0,12,0,252,0,12,0,124,0, + 30,0,254,0,255,199,255,192,26,37,148,29,2,0,0,0, + 224,0,0,0,224,0,0,1,224,0,0,3,192,0,0,3, + 128,0,0,6,0,0,0,12,0,0,0,0,0,0,0,4, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,31, + 0,0,0,31,0,0,0,31,0,0,0,63,128,0,0,63, + 128,0,0,47,128,0,0,111,192,0,0,111,192,0,0,79, + 192,0,0,199,192,0,0,199,224,0,0,135,224,0,1,131, + 224,0,1,131,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,6,0,252,0,4,0, + 252,0,12,0,252,0,12,0,126,0,62,0,255,0,255,199, + 255,192,26,37,148,29,2,0,0,4,0,0,0,14,0,0, + 0,14,0,0,0,31,0,0,0,59,128,0,0,224,192,0, + 1,128,48,0,0,0,0,0,0,4,0,0,0,6,0,0, + 0,14,0,0,0,14,0,0,0,15,0,0,0,31,0,0, + 0,31,0,0,0,31,128,0,0,63,128,0,0,47,128,0, + 0,47,192,0,0,111,192,0,0,79,192,0,0,71,192,0, + 0,199,224,0,0,135,224,0,0,131,224,0,1,131,240,0, + 1,3,240,0,3,1,240,0,3,255,248,0,2,1,248,0, + 6,0,248,0,6,0,252,0,4,0,252,0,12,0,252,0, + 12,0,124,0,30,0,254,0,255,199,255,192,26,36,144,29, + 2,0,0,56,32,0,0,126,32,0,0,255,224,0,0,143, + 192,0,0,131,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,15, + 0,0,0,31,0,0,0,31,0,0,0,63,128,0,0,63, + 128,0,0,47,128,0,0,111,192,0,0,111,192,0,0,79, + 192,0,0,199,192,0,0,199,224,0,0,135,224,0,1,131, + 224,0,1,131,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,6,0,252,0,4,0, + 252,0,12,0,252,0,12,0,126,0,62,0,255,0,255,199, + 255,192,26,36,144,29,2,0,0,224,224,0,1,241,240,0, + 1,241,240,0,1,241,240,0,0,224,224,0,0,0,0,0, + 0,0,0,0,0,4,0,0,0,14,0,0,0,14,0,0, + 0,14,0,0,0,31,0,0,0,31,0,0,0,31,0,0, + 0,63,128,0,0,63,128,0,0,63,128,0,0,111,192,0, + 0,111,192,0,0,79,192,0,0,199,192,0,0,199,224,0, + 0,135,224,0,1,131,224,0,1,131,240,0,1,3,240,0, + 3,1,240,0,3,255,248,0,2,1,248,0,6,0,248,0, + 6,0,252,0,4,0,252,0,12,0,124,0,12,0,124,0, + 30,0,126,0,255,199,255,192,26,37,148,29,2,0,0,31, + 0,0,0,63,128,0,0,97,192,0,0,96,192,0,0,96, + 192,0,0,113,192,0,0,63,128,0,0,30,0,0,0,0, + 0,0,0,6,0,0,0,14,0,0,0,14,0,0,0,15, + 0,0,0,31,0,0,0,31,0,0,0,31,128,0,0,63, + 128,0,0,63,128,0,0,47,128,0,0,111,192,0,0,79, + 192,0,0,71,192,0,0,135,224,0,0,135,224,0,0,131, + 224,0,1,3,240,0,1,3,240,0,3,1,240,0,3,255, + 248,0,2,1,248,0,6,0,248,0,4,0,252,0,4,0, + 252,0,12,0,252,0,12,0,124,0,28,0,254,0,255,199, + 255,192,36,28,140,38,1,0,0,7,255,255,224,0,1,254, + 3,224,0,1,254,1,224,0,1,254,0,224,0,1,254,0, + 224,0,3,126,0,96,0,3,126,0,96,0,6,126,0,32, + 0,6,126,4,32,0,12,126,4,0,0,12,126,12,0,0, + 24,126,12,0,0,24,126,28,0,0,48,127,252,0,0,48, + 126,60,0,0,96,126,28,0,0,96,126,12,0,0,192,126, + 4,48,0,192,126,4,48,1,255,254,4,48,1,128,126,0, + 48,3,0,126,0,112,3,0,126,0,112,6,0,126,0,240, + 6,0,126,0,240,14,0,126,1,240,63,0,126,7,240,255, + 199,255,255,240,21,37,111,26,3,248,1,254,48,7,3,48, + 14,1,240,30,0,240,60,0,240,60,0,112,124,0,112,124, + 0,48,124,0,48,252,0,48,252,0,48,252,0,16,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,24, + 252,0,24,124,0,16,124,0,16,124,0,16,60,0,48,60, + 0,32,30,0,96,14,0,192,7,1,128,1,254,0,0,32, + 0,0,96,0,0,120,0,0,28,0,0,14,0,0,14,0, + 0,14,0,2,28,0,1,248,0,22,37,111,26,2,0,1, + 128,0,1,192,0,1,224,0,0,224,0,0,112,0,0,24, + 0,0,8,0,0,0,0,0,0,0,255,255,252,15,192,124, + 15,192,60,15,192,28,15,192,28,15,192,12,15,192,12,15, + 192,12,15,193,4,15,193,0,15,195,0,15,195,0,15,199, + 0,15,255,0,15,199,0,15,195,0,15,195,0,15,193,4, + 15,193,4,15,193,4,15,192,12,15,192,12,15,192,12,15, + 192,28,15,192,28,15,192,60,15,192,252,255,255,252,22,37, + 111,26,2,0,0,1,192,0,3,192,0,3,192,0,7,128, + 0,14,0,0,12,0,0,24,0,0,0,0,0,0,0,255, + 255,252,15,192,124,15,192,60,15,192,28,15,192,28,15,192, + 12,15,192,12,15,192,4,15,193,4,15,193,0,15,195,0, + 15,195,0,15,199,0,15,255,0,15,199,0,15,195,0,15, + 195,0,15,193,4,15,193,4,15,193,4,15,192,4,15,192, + 12,15,192,12,15,192,28,15,192,28,15,192,60,15,192,252, + 255,255,252,22,37,111,26,2,0,0,8,0,0,24,0,0, + 60,0,0,126,0,0,231,0,1,193,128,3,0,64,0,0, + 0,0,0,0,255,255,252,15,192,124,15,192,60,15,192,28, + 15,192,28,15,192,12,15,192,12,15,192,12,15,193,4,15, + 193,0,15,195,0,15,195,0,15,199,0,15,255,0,15,199, + 0,15,195,0,15,195,0,15,193,4,15,193,4,15,193,4, + 15,192,12,15,192,12,15,192,12,15,192,28,15,192,28,15, + 192,60,15,192,252,255,255,252,22,36,108,26,2,0,1,193, + 192,3,227,224,3,227,224,3,227,224,1,193,192,0,0,0, + 0,0,0,0,0,0,255,255,252,15,192,124,15,192,60,15, + 192,28,15,192,28,15,192,12,15,192,12,15,192,4,15,193, + 4,15,193,0,15,195,0,15,195,0,15,199,0,15,255,0, + 15,199,0,15,195,0,15,195,0,15,193,4,15,193,4,15, + 193,4,15,192,4,15,192,12,15,192,12,15,192,28,15,192, + 28,15,192,60,15,192,252,255,255,252,13,37,74,17,2,0, + 96,0,112,0,120,0,56,0,28,0,14,0,2,0,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,37,74,17,2,0, + 0,112,0,240,1,240,1,224,3,128,7,0,4,0,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,37,74,17,2,0, + 6,0,6,0,15,0,31,128,57,192,112,112,192,24,0,0, + 0,0,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,255,248,13,36,72,16,2,0, + 112,112,248,248,248,248,248,248,112,112,0,0,0,0,0,0, + 255,248,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,255,248,25,28,112,29,2,0,255,255, + 128,0,31,128,224,0,31,128,112,0,31,128,56,0,31,128, + 60,0,31,128,30,0,31,128,30,0,31,128,31,0,31,128, + 31,0,31,128,31,0,31,128,31,128,31,128,31,128,31,128, + 31,128,255,248,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,30,0,31,128,30,0,31,128,60,0,31,128, + 56,0,31,128,112,0,31,128,224,0,255,255,128,0,27,36, + 144,30,2,0,0,24,0,0,0,62,32,0,0,127,224,0, + 0,71,192,0,0,1,128,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,128,255,224,31,192,63,0,31,192,30,0, + 15,224,12,0,7,240,12,0,7,240,12,0,7,248,12,0, + 7,248,12,0,6,252,12,0,6,254,12,0,6,126,12,0, + 6,63,12,0,6,63,140,0,6,31,140,0,6,31,204,0, + 6,15,236,0,6,7,236,0,6,7,252,0,6,3,252,0, + 6,1,252,0,6,1,252,0,6,0,252,0,6,0,252,0, + 6,0,124,0,6,0,60,0,15,0,60,0,31,128,28,0, + 255,224,12,0,22,37,111,27,3,1,7,128,0,7,128,0, + 3,192,0,1,192,0,0,224,0,0,112,0,0,16,0,0, + 0,0,0,0,0,1,254,0,3,3,0,6,1,128,14,1, + 192,28,0,224,60,0,240,60,0,240,124,0,248,124,0,248, + 124,0,248,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,124,0,248,124,0, + 248,124,0,248,60,0,240,60,0,240,28,0,224,14,1,192, + 6,1,128,3,3,0,1,254,0,22,37,111,27,3,1,0, + 7,128,0,7,128,0,15,0,0,14,0,0,28,0,0,56, + 0,0,32,0,0,0,0,0,0,0,1,254,0,3,3,0, + 6,1,128,14,1,192,28,0,224,60,0,240,60,0,240,124, + 0,248,124,0,248,124,0,248,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,252,0,252,252,0,252,252,0,252, + 124,0,248,124,0,248,124,0,248,60,0,240,60,0,240,28, + 0,224,14,1,192,6,1,128,3,3,0,1,254,0,22,37, + 111,27,3,0,0,48,0,0,48,0,0,120,0,0,252,0, + 1,206,0,3,135,0,6,1,128,0,0,0,0,0,0,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,0, + 240,60,0,240,28,0,224,14,1,192,6,1,128,3,3,0, + 1,254,0,22,36,108,27,3,0,1,192,128,3,241,128,3, + 255,0,4,63,0,4,12,0,0,0,0,0,0,0,0,0, + 0,1,254,0,3,3,0,6,1,128,14,1,192,28,0,224, + 60,0,240,60,0,240,124,0,248,124,0,248,124,0,248,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,252,0,252,252,0,252,124,0,248,124,0,248,124,0,248, + 60,0,240,60,0,240,28,0,224,14,1,192,6,1,128,3, + 3,0,1,254,0,22,36,108,27,3,0,3,131,128,7,199, + 192,7,199,192,7,199,192,3,131,128,0,0,0,0,0,0, + 0,0,0,1,254,0,3,3,0,6,1,128,14,1,192,28, + 0,224,60,0,240,60,0,240,124,0,248,124,0,248,124,0, + 248,252,0,252,252,0,252,252,0,252,252,0,252,252,0,252, + 252,0,252,252,0,252,252,0,252,124,0,248,124,0,248,124, + 0,248,60,0,240,60,0,240,28,0,224,14,1,192,6,1, + 128,3,3,0,1,254,0,24,25,75,36,6,254,64,0,2, + 224,0,7,240,0,14,120,0,28,60,0,60,30,0,120,15, + 0,240,7,129,224,3,195,192,1,231,128,0,239,0,0,126, + 0,0,60,0,0,124,0,0,254,0,1,231,0,3,195,128, + 7,129,192,15,0,224,30,0,112,60,0,56,120,0,28,112, + 0,14,224,0,7,192,0,2,22,28,84,27,3,1,1,254, + 12,3,3,152,6,3,208,14,1,240,28,1,224,60,1,240, + 60,1,240,124,1,248,124,3,248,124,6,248,252,14,252,252, + 12,252,252,24,252,252,56,252,252,112,252,252,96,252,252,192, + 252,253,192,252,125,128,248,127,0,248,126,0,248,62,0,240, + 62,0,240,30,0,224,62,1,192,46,1,128,103,3,0,193, + 254,0,26,37,148,30,3,1,0,224,0,0,0,240,0,0, + 0,120,0,0,0,56,0,0,0,28,0,0,0,12,0,0, + 0,6,0,0,0,0,0,0,0,0,0,0,255,240,127,192, + 31,128,31,0,31,128,14,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,15,128,12,0,15,192,12,0,7,192,24,0, + 7,224,56,0,1,252,240,0,0,255,192,0,26,37,148,30, + 3,1,0,0,224,0,0,1,224,0,0,1,224,0,0,3, + 192,0,0,7,0,0,0,6,0,0,0,12,0,0,0,0, + 0,0,0,0,0,0,255,240,127,192,31,128,31,0,31,128, + 14,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,15,128, + 12,0,15,192,12,0,7,192,24,0,7,224,56,0,1,252, + 240,0,0,255,192,0,26,37,148,30,3,0,0,4,0,0, + 0,14,0,0,0,31,0,0,0,31,128,0,0,59,192,0, + 0,224,224,0,1,128,48,0,0,0,0,0,0,0,0,0, + 255,240,127,192,31,128,31,0,31,128,14,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,31,128,6,0,31,128,6,0, + 31,128,6,0,31,128,6,0,15,128,4,0,15,128,12,0, + 7,192,24,0,7,224,24,0,1,240,112,0,0,255,192,0, + 26,36,144,30,3,0,0,224,224,0,1,241,240,0,1,241, + 240,0,1,241,240,0,0,224,224,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,240,127,192,31,128,31,0,31,128, + 14,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,31,128, + 6,0,31,128,6,0,31,128,6,0,31,128,6,0,15,128, + 12,0,15,192,12,0,7,192,24,0,7,224,56,0,1,252, + 240,0,0,255,192,0,25,37,148,28,2,0,0,0,224,0, + 0,0,224,0,0,1,224,0,0,3,192,0,0,3,128,0, + 0,6,0,0,0,12,0,0,0,0,0,0,0,0,0,0, + 255,240,255,128,31,192,60,0,31,192,24,0,15,192,24,0, + 15,224,24,0,7,224,16,0,7,224,48,0,3,240,32,0, + 3,240,32,0,1,248,96,0,1,248,64,0,1,252,64,0, + 0,252,192,0,0,254,128,0,0,127,128,0,0,127,128,0, + 0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0, + 0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0, + 0,63,0,0,0,63,0,0,0,63,0,0,1,255,224,0, + 23,28,84,27,2,0,255,248,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,255,128,31,129,224,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,248,0,19,28,84,22,1,0, + 0,248,0,3,156,0,7,142,0,15,15,0,15,15,0,15, + 15,0,31,15,0,31,15,0,31,14,0,31,28,0,31,112, + 0,31,12,0,31,7,0,31,7,128,31,3,192,31,3,192, + 31,3,192,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,224,31,115,224,31,243,192,31,243,192,31,227,128,31,103, + 0,255,62,0,17,28,84,20,2,0,56,0,0,60,0,0, + 60,0,0,30,0,0,14,0,0,3,0,0,1,0,0,0, + 0,0,0,0,0,15,192,0,24,240,0,48,120,0,112,120, + 0,124,124,0,124,124,0,56,124,0,1,252,0,14,124,0, + 28,124,0,56,124,0,120,124,0,248,124,0,248,124,128,248, + 124,128,248,124,128,252,253,128,127,191,0,62,30,0,17,28, + 84,20,2,0,0,48,0,0,112,0,0,240,0,0,224,0, + 1,192,0,1,128,0,3,0,0,0,0,0,0,0,0,15, + 192,0,24,240,0,48,120,0,112,120,0,124,124,0,124,124, + 0,124,124,0,0,252,0,7,124,0,28,124,0,56,124,0, + 120,124,0,248,124,0,248,124,128,248,124,128,248,124,128,252, + 253,128,127,191,0,62,30,0,17,28,84,20,2,0,3,0, + 0,3,128,0,7,128,0,7,192,0,12,224,0,24,112,0, + 48,24,0,0,0,0,0,0,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,17,27,81,20,2,0,14,8,0,31,152,0,63,240, + 0,35,240,0,32,224,0,0,0,0,0,0,0,0,0,0, + 15,192,0,24,240,0,48,120,0,112,120,0,124,124,0,124, + 124,0,124,124,0,0,252,0,7,124,0,28,124,0,56,124, + 0,120,124,0,248,124,0,248,124,128,248,124,128,248,124,128, + 252,253,128,127,191,0,62,30,0,17,27,81,20,2,0,56, + 112,0,124,248,0,124,248,0,124,248,0,56,112,0,0,0, + 0,0,0,0,0,0,0,15,192,0,24,240,0,48,120,0, + 112,120,0,124,124,0,124,124,0,124,124,0,0,252,0,7, + 124,0,28,124,0,56,124,0,120,124,0,248,124,0,248,124, + 128,248,124,128,248,124,128,252,253,128,127,191,0,62,30,0, + 17,28,84,20,2,1,15,192,0,12,192,0,24,96,0,24, + 96,0,24,96,0,28,224,0,15,192,0,7,128,0,0,0, + 0,15,192,0,16,240,0,48,120,0,112,120,0,120,124,0, + 124,124,0,124,124,0,0,252,0,7,124,0,28,124,0,56, + 124,0,120,124,0,248,124,0,248,124,128,248,124,128,248,124, + 128,252,253,128,127,255,0,62,62,0,23,19,57,27,2,0, + 15,195,224,24,238,112,48,124,56,112,124,60,120,124,60,124, + 124,62,124,124,62,24,124,62,3,252,62,14,127,254,60,124, + 0,120,124,0,248,124,2,248,124,2,248,124,2,248,124,4, + 252,222,4,127,143,8,63,3,240,14,27,54,18,2,248,7, + 224,14,48,60,24,60,28,120,60,120,124,248,124,248,120,248, + 48,248,0,248,0,248,0,248,0,120,4,120,4,56,4,60, + 8,30,16,7,224,2,0,2,0,3,128,0,192,0,224,0, + 224,0,224,7,128,14,28,56,18,2,0,56,0,56,0,60, + 0,30,0,14,0,7,0,1,0,0,0,0,0,7,192,28, + 224,56,112,56,120,120,120,120,124,248,124,248,124,248,124,255, + 252,248,0,248,0,248,4,120,4,120,4,56,8,60,24,30, + 48,7,192,14,28,56,18,2,0,0,112,0,112,0,240,1, + 224,1,192,3,128,2,0,0,0,0,0,7,192,28,224,56, + 112,56,120,120,120,120,124,248,124,248,124,255,252,248,0,248, + 0,248,0,248,4,120,4,120,12,56,8,60,24,30,48,7, + 192,14,28,56,18,2,0,3,0,7,128,7,128,15,192,12, + 192,24,96,48,56,0,0,0,0,7,192,28,224,56,112,56, + 120,120,120,120,124,248,124,248,124,248,124,255,252,248,0,248, + 0,248,0,120,4,120,4,56,8,60,8,30,16,7,224,14, + 27,54,18,2,0,56,112,124,248,124,248,124,248,56,112,0, + 0,0,0,0,0,7,192,28,224,56,112,56,120,120,120,120, + 124,248,124,248,124,248,124,255,252,248,0,248,0,248,0,120, + 4,120,12,56,8,60,24,30,48,7,192,10,28,56,12,1, + 0,224,0,240,0,248,0,120,0,28,0,14,0,2,0,0, + 0,0,0,127,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,127,192,9,28,56,12,2,0,1, + 128,3,128,7,128,15,0,14,0,28,0,16,0,0,0,0, + 0,254,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,11,28,56,11,1,0,14,0,30, + 0,31,0,63,0,115,128,224,192,128,96,0,0,0,0,127, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,127,192,11,27,54,12,1,0,113,192,251,224,251, + 224,251,224,113,192,0,0,0,0,0,0,127,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,127, + 192,16,28,56,20,2,0,31,8,15,184,7,224,7,224,7, + 224,13,240,16,248,0,248,0,124,7,252,30,126,60,62,56, + 62,120,30,120,31,248,31,248,31,248,31,248,31,248,31,248, + 31,248,30,120,30,120,30,56,60,60,60,12,112,7,224,19, + 27,81,22,2,0,0,2,0,7,194,0,15,254,0,15,252, + 0,8,120,0,0,0,0,0,0,0,0,0,0,254,60,0, + 62,222,0,63,15,0,63,15,128,63,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,255,191,224,16,28,56,20,2,0,24,0,28,0, + 30,0,15,0,7,0,3,128,0,192,0,0,0,0,7,192, + 12,112,28,56,56,60,120,30,120,30,248,30,248,31,248,31, + 248,31,248,31,248,31,248,30,120,30,120,30,56,60,28,56, + 12,112,7,192,16,28,56,20,2,0,0,56,0,56,0,120, + 0,240,0,224,1,192,3,0,0,0,0,0,7,192,12,112, + 28,56,56,60,120,30,120,30,248,30,248,31,248,31,248,31, + 248,31,248,31,248,30,120,30,120,30,56,60,28,56,12,112, + 7,192,16,28,56,20,2,0,3,128,3,192,3,192,7,224, + 14,112,28,56,48,12,0,0,0,0,7,192,12,112,28,56, + 56,60,120,30,120,30,248,30,248,31,248,31,248,31,248,31, + 248,31,248,30,120,30,120,30,56,60,28,56,12,112,7,192, + 16,27,54,20,2,0,14,4,31,140,31,248,35,248,32,112, + 0,0,0,0,0,0,7,192,12,112,28,56,56,60,120,30, + 120,30,248,30,248,31,248,31,248,31,248,31,248,31,248,30, + 120,30,120,30,56,60,28,56,12,112,7,192,16,27,54,20, + 2,0,28,56,62,124,62,124,62,124,28,56,0,0,0,0, + 0,0,7,192,12,112,28,56,56,60,120,30,120,30,248,30, + 248,31,248,31,248,31,248,31,248,31,248,30,120,30,120,30, + 56,60,28,56,12,112,7,192,33,26,130,37,2,253,0,3, + 192,0,0,0,7,224,0,0,0,7,224,0,0,0,7,224, + 0,0,0,7,224,0,0,0,3,192,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,255,255,255,128,255,255,255,255,128,255, + 255,255,255,128,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,3,192,0,0,0,7,224,0,0,0,7,224,0, + 0,0,7,224,0,0,0,7,224,0,0,0,3,192,0,0, + 16,19,38,20,2,0,7,225,12,114,28,60,56,60,120,62, + 120,62,248,126,248,95,248,223,249,159,251,31,254,31,252,30, + 124,30,120,30,60,28,124,56,78,48,135,192,19,28,84,21, + 1,0,12,0,0,30,0,0,15,0,0,7,0,0,3,128, + 0,1,192,0,0,64,0,0,0,0,0,0,0,254,63,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,31,128,62,31,128,30,47,128, + 31,79,128,7,143,224,19,28,84,21,1,0,0,28,0,0, + 60,0,0,60,0,0,120,0,0,224,0,0,192,0,1,128, + 0,0,0,0,0,0,0,254,63,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,15,128,62,15, + 128,62,31,128,62,31,128,30,47,128,30,79,128,7,143,224, + 19,28,84,21,1,0,1,192,0,1,224,0,3,224,0,3, + 240,0,7,56,0,12,28,0,24,4,0,0,0,0,0,0, + 0,254,63,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,62,15,128,62,31,128,62,31, + 128,30,47,128,30,79,128,7,143,224,19,27,81,21,1,0, + 28,28,0,62,62,0,62,62,0,62,62,0,28,28,0,0, + 0,0,0,0,0,0,0,0,254,63,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,31,128,62,31,128,30,47,128,30,79,128,7,143, + 224,18,37,111,19,0,247,0,14,0,0,30,0,0,30,0, + 0,60,0,0,48,0,0,96,0,0,192,0,0,0,0,0, + 0,0,255,207,192,63,3,0,31,3,0,31,2,0,15,2, + 0,15,130,0,15,132,0,7,196,0,7,196,0,3,196,0, + 3,232,0,3,232,0,1,248,0,1,240,0,0,240,0,0, + 240,0,0,96,0,0,96,0,0,96,0,0,32,0,0,64, + 0,12,64,0,30,64,0,62,128,0,62,128,0,60,128,0, + 29,0,0,14,0,0,18,36,108,20,0,247,3,0,0,15, + 0,0,63,0,0,223,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,31,0,31,63,128,31,71,128,31,135,192, + 31,135,192,31,7,192,31,7,192,31,7,192,31,7,128,31, + 7,128,31,15,0,31,15,0,31,14,0,31,12,0,31,24, + 0,31,48,0,31,96,0,31,128,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,0,30, + 0,0,56,0,0,224,0,0,19,36,108,20,0,247,7,14, + 0,15,159,0,15,159,0,15,159,0,7,14,0,0,0,0, + 0,0,0,0,0,0,255,207,224,63,3,0,31,3,0,31, + 2,0,15,2,0,15,130,0,15,132,0,7,196,0,7,196, + 0,3,196,0,3,232,0,3,232,0,1,248,0,1,240,0, + 0,240,0,0,240,0,0,240,0,0,96,0,0,96,0,0, + 32,0,0,64,0,12,64,0,30,64,0,62,64,0,62,128, + 0,60,128,0,29,0,0,14,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 28 + Calculated Max Values w=33 h=37 x= 5 y=12 dx=37 dy= 0 ascent=29 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =28 descent= 0 + X Font ascent =28 descent= 0 + Max Font ascent =29 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29n[1232] U8G_SECTION(".progmem.u8g_font_osb29n") = { + 0,107,49,223,245,28,0,0,0,0,42,57,0,29,248,28, + 0,14,16,32,19,3,12,3,0,7,128,7,128,199,24,227, + 60,242,124,122,248,7,128,7,128,250,248,242,124,227,60,199, + 24,7,128,7,128,3,0,33,33,165,37,2,251,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,255,255,255,255,128,255,255,255, + 255,128,255,255,255,255,128,0,1,192,0,0,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,7,13,13,10,2,249,120,252,252,254,254,126,6,4, + 4,8,24,96,192,10,4,8,14,2,8,255,192,255,192,255, + 192,255,192,6,6,6,10,2,0,120,252,252,252,252,120,13, + 37,74,17,2,248,0,24,0,56,0,56,0,48,0,112,0, + 112,0,96,0,96,0,224,0,224,0,192,1,192,1,192,1, + 128,3,128,3,128,3,128,3,0,7,0,7,0,6,0,14, + 0,14,0,12,0,12,0,28,0,28,0,24,0,56,0,56, + 0,48,0,112,0,112,0,112,0,96,0,224,0,224,0,18, + 28,84,22,2,1,3,240,0,14,28,0,14,28,0,28,14, + 0,60,15,0,60,15,0,124,15,128,124,15,128,124,15,128, + 252,15,192,252,15,192,252,15,192,252,15,192,252,15,192,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,124,15, + 128,124,15,128,124,15,128,60,15,0,60,15,0,28,14,0, + 12,28,0,14,28,0,3,240,0,13,28,56,22,5,0,3, + 128,7,128,15,128,255,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,255,248,17,28,84,22,2,1,15,248,0, + 24,62,0,48,63,0,112,31,0,240,31,128,240,31,128,252, + 31,128,252,31,128,254,31,128,126,63,0,60,63,0,0,126, + 0,0,252,0,0,248,0,1,224,0,3,128,0,6,0,0, + 12,0,128,24,0,128,16,0,128,32,0,128,47,1,128,127, + 255,128,127,255,128,71,255,0,67,255,0,65,254,0,64,252, + 0,17,28,84,22,2,1,15,248,0,24,62,0,48,63,0, + 48,31,0,112,31,128,120,31,128,124,31,128,124,31,128,124, + 31,128,60,31,0,0,31,0,0,62,0,0,120,0,15,192, + 0,0,120,0,0,62,0,0,63,0,0,31,0,16,31,128, + 124,31,128,252,31,128,252,31,128,252,31,128,248,31,128,240, + 63,0,112,62,0,56,124,0,31,248,0,18,28,84,22,2, + 0,0,124,0,0,124,0,0,252,0,0,252,0,1,252,0, + 1,252,0,3,252,0,3,252,0,6,252,0,6,252,0,12, + 252,0,12,252,0,24,252,0,24,252,0,48,252,0,48,252, + 0,96,252,0,96,252,0,192,252,0,255,255,192,0,252,0, + 0,252,0,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,15,255,192,17,29,87,22,3,0,0,6,0,112,28, + 0,127,252,0,127,248,0,127,224,0,127,192,0,126,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,103,224,0,104, + 120,0,112,62,0,96,62,0,96,31,0,0,31,0,0,31, + 128,0,31,128,56,31,128,124,31,128,252,31,128,252,31,128, + 248,31,0,240,31,0,224,30,0,96,62,0,48,124,0,31, + 240,0,18,29,87,22,3,0,0,32,0,3,220,0,7,6, + 0,14,6,0,30,15,0,60,31,0,60,63,0,124,63,0, + 124,62,0,124,28,0,252,0,0,252,0,0,252,0,0,253, + 248,0,255,30,0,254,31,0,252,15,128,252,15,128,252,15, + 192,252,15,192,252,15,192,124,15,192,124,15,192,124,15,192, + 60,15,128,28,15,128,30,15,0,14,30,0,3,252,0,17, + 28,84,22,3,0,103,135,0,111,199,0,127,227,128,127,241, + 128,127,249,128,127,255,128,96,125,128,64,1,0,64,3,0, + 64,3,0,192,6,0,0,4,0,0,12,0,0,24,0,0, + 56,0,0,112,0,0,112,0,0,240,0,1,240,0,3,224, + 0,3,224,0,3,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,3,192,0,19,29,87,22,2,0,0, + 64,0,7,184,0,28,6,0,56,3,0,112,1,0,112,1, + 128,240,1,128,240,1,128,248,1,128,252,3,0,255,2,0, + 127,196,0,127,248,0,63,252,0,31,255,0,15,255,128,27, + 255,128,48,255,192,96,63,192,96,15,192,224,3,224,224,1, + 192,224,1,192,224,1,192,224,1,192,112,1,128,56,1,0, + 28,6,0,15,252,0,18,28,84,22,3,1,15,240,0,30, + 28,0,60,30,0,124,14,0,124,15,0,252,15,128,252,15, + 128,252,15,128,252,15,128,252,15,192,252,15,192,124,15,192, + 124,15,192,62,31,192,30,63,192,7,239,192,0,15,192,0, + 15,192,0,15,192,30,15,128,31,15,128,63,15,128,63,15, + 0,62,15,0,56,30,0,24,28,0,24,56,0,15,240,0 + }; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--38-380-72-72-P-206-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=38 h=37 x= 5 y=21 dx=41 dy= 0 ascent=31 len=165 + Font Bounding box w=107 h=49 x=-33 y=-11 + Calculated Min Values x=-2 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =29 descent=-9 + Max Font ascent =31 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb29r[7481] U8G_SECTION(".progmem.u8g_font_osb29r") = { + 0,107,49,223,245,29,9,166,21,115,32,127,247,31,247,29, + 247,0,0,0,11,0,0,6,28,28,10,2,1,120,252,252, + 252,252,252,252,120,120,120,120,120,48,48,48,48,48,48,48, + 48,0,0,120,252,252,252,252,120,10,9,18,16,3,20,243, + 192,243,192,243,192,243,192,243,192,243,192,97,128,97,128,97, + 128,22,28,84,28,3,0,1,192,224,1,192,224,1,192,224, + 1,192,224,1,128,192,1,128,192,1,128,192,3,129,252,255, + 255,252,255,255,252,3,129,128,3,1,128,3,1,128,7,3, + 128,7,3,128,7,3,128,7,3,128,6,3,0,255,255,252, + 255,255,252,255,255,252,14,7,0,14,7,0,14,6,0,12, + 6,0,12,6,0,28,14,0,28,14,0,18,34,102,22,2, + 253,1,16,0,1,16,0,1,16,0,7,252,0,29,19,0, + 57,17,128,49,16,192,113,16,192,113,17,192,113,19,192,121, + 23,192,127,23,128,127,19,0,63,144,0,63,240,0,31,240, + 0,15,252,0,7,254,0,1,255,0,1,255,128,1,63,128, + 121,31,192,249,23,192,249,19,192,249,17,192,225,17,192,193, + 17,192,97,17,128,97,19,0,57,22,0,15,60,0,1,208, + 0,1,16,0,1,16,0,26,29,116,32,3,0,4,0,12, + 0,27,0,8,0,49,128,24,0,113,192,16,0,113,192,48, + 0,241,224,96,0,241,224,96,0,241,224,192,0,241,224,128, + 0,241,225,128,0,241,225,0,0,113,195,0,0,113,194,0, + 0,59,134,0,0,30,12,0,0,0,12,28,0,0,24,119, + 0,0,16,227,128,0,48,227,128,0,33,227,192,0,97,227, + 192,0,65,227,192,0,193,227,192,1,129,227,192,1,129,227, + 192,3,1,227,128,2,0,227,128,6,0,99,0,4,0,62, + 0,27,28,112,31,2,1,0,254,0,0,1,195,0,0,3, + 129,0,0,7,129,128,0,7,129,128,0,7,129,128,0,7, + 131,128,0,7,195,0,0,7,198,0,0,3,236,0,0,3, + 248,0,0,1,240,0,0,0,248,0,0,1,252,31,224,7, + 124,3,128,14,62,3,0,28,63,3,0,56,31,134,0,120, + 15,134,0,120,7,196,0,248,7,232,0,248,3,248,0,248, + 1,240,0,252,1,248,0,254,0,248,32,127,1,252,64,63, + 254,127,192,31,248,31,128,4,9,9,10,3,20,240,240,240, + 240,240,240,96,96,96,11,35,70,13,2,249,0,96,0,192, + 1,128,3,0,6,0,12,0,28,0,24,0,56,0,56,0, + 120,0,120,0,120,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,120,0,120,0,120,0,120,0, + 56,0,56,0,28,0,12,0,14,0,7,0,3,0,1,128, + 0,96,11,36,72,14,1,249,192,0,96,0,48,0,24,0, + 12,0,14,0,7,0,7,0,3,128,3,128,3,192,3,192, + 3,192,3,192,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,192,3,192,3,192,3,128,3,128,7,0, + 7,0,6,0,12,0,28,0,56,0,112,0,192,0,128,0, + 14,16,32,19,3,12,3,0,7,128,7,128,199,24,227,60, + 242,124,122,248,7,128,7,128,250,248,242,124,227,60,199,24, + 7,128,7,128,3,0,33,33,165,37,2,251,0,1,192,0, + 0,0,1,192,0,0,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,255,255,255,255,128,255,255,255,255, + 128,255,255,255,255,128,0,1,192,0,0,0,1,192,0,0, + 0,1,192,0,0,0,1,192,0,0,0,1,192,0,0,0, + 1,192,0,0,0,1,192,0,0,0,1,192,0,0,0,1, + 192,0,0,0,1,192,0,0,0,1,192,0,0,0,1,192, + 0,0,0,1,192,0,0,0,1,192,0,0,0,1,192,0, + 0,7,13,13,10,2,249,120,252,252,254,254,126,6,4,4, + 8,24,96,192,10,4,8,14,2,8,255,192,255,192,255,192, + 255,192,6,6,6,10,2,0,120,252,252,252,252,120,13,37, + 74,17,2,248,0,24,0,56,0,56,0,48,0,112,0,112, + 0,96,0,96,0,224,0,224,0,192,1,192,1,192,1,128, + 3,128,3,128,3,128,3,0,7,0,7,0,6,0,14,0, + 14,0,12,0,12,0,28,0,28,0,24,0,56,0,56,0, + 48,0,112,0,112,0,112,0,96,0,224,0,224,0,18,28, + 84,22,2,1,3,240,0,14,28,0,14,28,0,28,14,0, + 60,15,0,60,15,0,124,15,128,124,15,128,124,15,128,252, + 15,192,252,15,192,252,15,192,252,15,192,252,15,192,252,15, + 192,252,15,192,252,15,192,252,15,192,252,15,192,124,15,128, + 124,15,128,124,15,128,60,15,0,60,15,0,28,14,0,12, + 28,0,14,28,0,3,240,0,13,28,56,22,5,0,3,128, + 7,128,15,128,255,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,255,248,17,28,84,22,2,1,15,248,0,24, + 62,0,48,63,0,112,31,0,240,31,128,240,31,128,252,31, + 128,252,31,128,254,31,128,126,63,0,60,63,0,0,126,0, + 0,252,0,0,248,0,1,224,0,3,128,0,6,0,0,12, + 0,128,24,0,128,16,0,128,32,0,128,47,1,128,127,255, + 128,127,255,128,71,255,0,67,255,0,65,254,0,64,252,0, + 17,28,84,22,2,1,15,248,0,24,62,0,48,63,0,48, + 31,0,112,31,128,120,31,128,124,31,128,124,31,128,124,31, + 128,60,31,0,0,31,0,0,62,0,0,120,0,15,192,0, + 0,120,0,0,62,0,0,63,0,0,31,0,16,31,128,124, + 31,128,252,31,128,252,31,128,252,31,128,248,31,128,240,63, + 0,112,62,0,56,124,0,31,248,0,18,28,84,22,2,0, + 0,124,0,0,124,0,0,252,0,0,252,0,1,252,0,1, + 252,0,3,252,0,3,252,0,6,252,0,6,252,0,12,252, + 0,12,252,0,24,252,0,24,252,0,48,252,0,48,252,0, + 96,252,0,96,252,0,192,252,0,255,255,192,0,252,0,0, + 252,0,0,252,0,0,252,0,0,252,0,0,252,0,0,252, + 0,15,255,192,17,29,87,22,3,0,0,6,0,112,28,0, + 127,252,0,127,248,0,127,224,0,127,192,0,126,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,103,224,0,104,120, + 0,112,62,0,96,62,0,96,31,0,0,31,0,0,31,128, + 0,31,128,56,31,128,124,31,128,252,31,128,252,31,128,248, + 31,0,240,31,0,224,30,0,96,62,0,48,124,0,31,240, + 0,18,29,87,22,3,0,0,32,0,3,220,0,7,6,0, + 14,6,0,30,15,0,60,31,0,60,63,0,124,63,0,124, + 62,0,124,28,0,252,0,0,252,0,0,252,0,0,253,248, + 0,255,30,0,254,31,0,252,15,128,252,15,128,252,15,192, + 252,15,192,252,15,192,124,15,192,124,15,192,124,15,192,60, + 15,128,28,15,128,30,15,0,14,30,0,3,252,0,17,28, + 84,22,3,0,103,135,0,111,199,0,127,227,128,127,241,128, + 127,249,128,127,255,128,96,125,128,64,1,0,64,3,0,64, + 3,0,192,6,0,0,4,0,0,12,0,0,24,0,0,56, + 0,0,112,0,0,112,0,0,240,0,1,240,0,3,224,0, + 3,224,0,3,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,0,3,192,0,19,29,87,22,2,0,0,64, + 0,7,184,0,28,6,0,56,3,0,112,1,0,112,1,128, + 240,1,128,240,1,128,248,1,128,252,3,0,255,2,0,127, + 196,0,127,248,0,63,252,0,31,255,0,15,255,128,27,255, + 128,48,255,192,96,63,192,96,15,192,224,3,224,224,1,192, + 224,1,192,224,1,192,224,1,192,112,1,128,56,1,0,28, + 6,0,15,252,0,18,28,84,22,3,1,15,240,0,30,28, + 0,60,30,0,124,14,0,124,15,0,252,15,128,252,15,128, + 252,15,128,252,15,128,252,15,192,252,15,192,124,15,192,124, + 15,192,62,31,192,30,63,192,7,239,192,0,15,192,0,15, + 192,0,15,192,30,15,128,31,15,128,63,15,128,63,15,0, + 62,15,0,56,30,0,24,28,0,24,56,0,15,240,0,6, + 19,19,10,2,0,120,252,252,252,252,120,0,0,0,0,0, + 0,0,120,252,252,252,252,120,7,26,26,10,2,249,120,252, + 252,252,252,120,0,0,0,0,0,0,0,120,252,252,254,254, + 126,6,4,4,8,16,96,192,29,33,132,36,3,250,0,0, + 0,24,0,0,0,120,0,0,1,240,0,0,7,192,0,0, + 31,128,0,0,62,0,0,0,248,0,0,3,224,0,0,15, + 192,0,0,31,0,0,0,124,0,0,1,240,0,0,7,192, + 0,0,15,128,0,0,62,0,0,0,248,0,0,0,240,0, + 0,0,124,0,0,0,62,0,0,0,15,128,0,0,3,224, + 0,0,0,248,0,0,0,124,0,0,0,31,0,0,0,7, + 192,0,0,1,240,0,0,0,252,0,0,0,62,0,0,0, + 15,128,0,0,3,224,0,0,1,248,0,0,0,120,0,0, + 0,16,32,11,44,36,2,5,255,255,255,255,255,255,255,255, + 255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255, + 255,255,255,255,29,33,132,36,4,250,192,0,0,0,240,0, + 0,0,124,0,0,0,31,0,0,0,15,192,0,0,3,224, + 0,0,0,248,0,0,0,62,0,0,0,31,128,0,0,7, + 192,0,0,1,240,0,0,0,124,0,0,0,31,0,0,0, + 15,128,0,0,3,224,0,0,0,248,0,0,0,120,0,0, + 1,240,0,0,3,224,0,0,15,128,0,0,62,0,0,0, + 248,0,0,1,240,0,0,7,192,0,0,31,0,0,0,124, + 0,0,1,248,0,0,3,224,0,0,15,128,0,0,62,0, + 0,0,252,0,0,0,240,0,0,0,64,0,0,0,12,28, + 56,18,3,1,63,128,119,224,65,224,129,240,129,240,129,240, + 129,240,129,224,193,224,67,192,3,128,7,0,6,0,12,0, + 8,0,24,0,16,64,16,64,16,64,24,128,15,0,0,0, + 7,128,15,192,15,192,15,192,15,192,7,128,28,29,116,32, + 2,0,0,2,0,0,0,125,240,0,1,192,28,0,3,0, + 6,0,6,0,3,0,12,0,1,128,24,15,61,192,56,28, + 188,192,48,56,248,224,112,112,120,224,112,240,120,96,225,224, + 120,112,225,224,248,112,225,224,240,112,227,224,240,112,227,192, + 240,112,227,192,240,112,227,193,224,96,227,193,224,224,99,193, + 224,192,99,195,224,192,115,194,225,128,49,228,227,0,56,120, + 124,0,28,0,0,0,12,0,0,0,7,0,0,0,3,128, + 24,0,0,255,224,0,26,29,116,29,2,0,0,4,0,0, + 0,6,0,0,0,14,0,0,0,14,0,0,0,15,0,0, + 0,31,0,0,0,31,0,0,0,31,128,0,0,63,128,0, + 0,47,128,0,0,47,192,0,0,111,192,0,0,79,192,0, + 0,71,192,0,0,199,224,0,0,135,224,0,0,131,224,0, + 1,131,240,0,1,3,240,0,3,1,240,0,3,255,248,0, + 2,1,248,0,6,0,248,0,6,0,252,0,4,0,252,0, + 12,0,252,0,12,0,124,0,30,0,254,0,255,199,255,192, + 22,28,84,27,3,0,255,255,0,31,131,192,31,131,224,31, + 129,240,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,240,31,129,240,31,131,192,31,131,128,31,252,0, + 31,131,128,31,129,224,31,128,240,31,128,248,31,128,252,31, + 128,252,31,128,252,31,128,252,31,128,252,31,128,248,31,128, + 248,31,129,240,31,131,224,255,255,128,21,28,84,26,3,1, + 1,254,48,7,3,48,14,1,240,30,0,240,60,0,240,60, + 0,112,124,0,112,124,0,48,124,0,48,252,0,48,252,0, + 48,252,0,16,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,252,0,24,252,0,24,124,0,16,124,0,16,124, + 0,16,60,0,48,60,0,32,30,0,96,14,0,192,7,1, + 128,1,254,0,25,28,112,30,3,0,255,255,128,0,31,128, + 224,0,31,128,112,0,31,128,56,0,31,128,60,0,31,128, + 30,0,31,128,30,0,31,128,31,0,31,128,31,0,31,128, + 31,0,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,0,31,128,31,0,31,128,31,0,31,128, + 30,0,31,128,30,0,31,128,60,0,31,128,56,0,31,128, + 112,0,31,128,224,0,255,255,128,0,22,28,84,26,2,0, + 255,255,252,15,192,124,15,192,60,15,192,28,15,192,28,15, + 192,12,15,192,12,15,192,12,15,193,4,15,193,0,15,195, + 0,15,195,0,15,199,0,15,255,0,15,199,0,15,195,0, + 15,195,0,15,193,4,15,193,4,15,193,4,15,192,12,15, + 192,12,15,192,12,15,192,28,15,192,28,15,192,60,15,192, + 252,255,255,252,22,28,84,25,2,0,255,255,252,31,128,252, + 31,128,124,31,128,60,31,128,28,31,128,28,31,128,28,31, + 128,12,31,129,12,31,129,12,31,131,12,31,131,0,31,135, + 0,31,255,0,31,143,0,31,135,0,31,131,0,31,129,0, + 31,129,0,31,129,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,255,252,0,24,29, + 87,28,3,0,0,16,0,1,239,24,3,3,152,14,0,248, + 30,0,248,28,0,120,60,0,56,60,0,56,124,0,24,124, + 0,24,124,0,24,252,0,8,252,0,0,252,0,0,252,0, + 0,252,31,255,252,1,248,252,1,248,252,1,248,252,1,248, + 124,1,248,124,1,248,124,1,248,60,1,248,60,1,248,30, + 3,152,14,3,24,7,6,24,1,220,24,27,28,112,31,2, + 0,255,251,255,224,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,255,255,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,31,128,63, + 0,31,128,63,0,31,128,63,0,31,128,63,0,255,251,255, + 224,13,28,56,17,2,0,255,248,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,255,248,18, + 28,84,20,1,0,7,255,192,0,126,0,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,16,126,0,124,126,0,252,126, + 0,252,126,0,252,126,0,248,126,0,240,124,0,224,124,0, + 96,120,0,32,240,0,31,224,0,26,28,112,29,2,0,255, + 241,255,0,31,128,120,0,31,128,112,0,31,128,96,0,31, + 128,64,0,31,128,192,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,134,0,0,31,142,0,0,31,159,0,0,31, + 191,0,0,31,255,128,0,31,223,128,0,31,159,192,0,31, + 143,192,0,31,143,224,0,31,135,224,0,31,135,240,0,31, + 131,240,0,31,131,248,0,31,129,248,0,31,129,252,0,31, + 128,252,0,31,128,254,0,31,128,254,0,255,243,255,192,22, + 28,84,25,2,0,255,248,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,12,31,128,12,31,128,12,31,128, + 12,31,128,28,31,128,28,31,128,60,31,128,60,31,128,124, + 31,128,252,31,129,252,255,255,252,31,28,112,34,2,0,255, + 128,15,254,15,128,15,224,15,192,15,224,15,192,15,224,15, + 192,15,224,15,224,23,224,15,224,23,224,15,240,23,224,13, + 240,23,224,13,240,39,224,13,248,39,224,12,248,39,224,12, + 248,39,224,12,252,71,224,12,124,71,224,12,124,71,224,12, + 126,71,224,12,62,135,224,12,63,135,224,12,63,135,224,12, + 31,135,224,12,31,7,224,12,31,7,224,12,15,7,224,12, + 15,7,224,28,14,7,224,62,6,7,224,255,134,63,254,27, + 28,112,30,2,0,255,128,255,224,31,192,63,0,31,192,30, + 0,15,224,12,0,7,240,12,0,7,240,12,0,7,248,12, + 0,7,248,12,0,6,252,12,0,6,254,12,0,6,126,12, + 0,6,63,12,0,6,63,140,0,6,31,140,0,6,31,204, + 0,6,15,236,0,6,7,236,0,6,7,252,0,6,3,252, + 0,6,1,252,0,6,1,252,0,6,0,252,0,6,0,252, + 0,6,0,124,0,6,0,60,0,15,0,60,0,31,128,28, + 0,255,224,12,0,22,28,84,27,3,1,1,254,0,3,3, + 0,6,1,128,14,1,192,28,0,224,60,0,240,60,0,240, + 124,0,248,124,0,248,124,0,248,252,0,252,252,0,252,252, + 0,252,252,0,252,252,0,252,252,0,252,252,0,252,252,0, + 252,124,0,248,124,0,248,124,0,248,60,0,240,60,0,240, + 28,0,224,14,1,192,6,1,128,3,3,0,1,254,0,23, + 28,84,27,2,0,255,255,128,31,129,240,31,128,248,31,128, + 252,31,128,124,31,128,126,31,128,126,31,128,126,31,128,126, + 31,128,126,31,128,124,31,128,252,31,128,248,31,129,224,31, + 255,128,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,255,248,0,22,37,111,27,3,248,1, + 254,0,3,3,0,6,1,128,14,1,192,28,0,224,60,0, + 240,60,0,240,124,0,248,124,0,248,124,0,248,252,0,252, + 252,0,252,252,0,252,252,0,252,252,0,252,252,0,252,252, + 0,252,252,0,252,124,0,248,124,0,248,124,0,248,60,56, + 240,60,76,240,30,133,224,14,135,224,7,135,192,3,135,132, + 1,238,4,0,22,4,0,6,4,0,7,12,0,7,12,0, + 7,252,0,7,248,0,7,248,0,3,240,0,1,224,25,28, + 112,28,2,0,255,255,0,0,31,135,192,0,31,131,224,0, + 31,129,240,0,31,129,248,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,240,0,31,131,224,0, + 31,135,192,0,31,254,0,0,31,135,128,0,31,131,192,0, + 31,129,240,0,31,129,240,0,31,129,248,0,31,129,248,0, + 31,129,248,0,31,129,248,0,31,129,248,128,31,129,248,128, + 31,129,248,128,31,129,248,128,31,129,249,0,31,128,249,0, + 255,248,126,0,18,29,87,23,3,0,1,0,0,31,225,128, + 48,57,128,96,31,128,96,15,128,224,7,128,240,3,128,240, + 3,128,248,1,128,254,1,128,255,1,128,127,192,0,127,224, + 0,63,248,0,31,252,0,7,255,0,3,255,0,128,255,128, + 128,127,128,192,31,192,192,15,192,192,7,192,224,3,192,224, + 1,192,240,1,128,248,1,128,248,3,0,206,2,0,135,188, + 0,24,28,84,27,2,0,255,255,255,252,126,63,248,126,31, + 240,126,15,224,126,15,224,126,7,192,126,7,192,126,3,192, + 126,3,192,126,3,128,126,3,128,126,2,0,126,0,0,126, + 0,0,126,0,0,126,0,0,126,0,0,126,0,0,126,0, + 0,126,0,0,126,0,0,126,0,0,126,0,0,126,0,0, + 126,0,0,126,0,0,126,0,7,255,224,26,28,112,30,3, + 0,255,240,127,192,31,128,31,0,31,128,14,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,31,128,6,0,31,128,6, + 0,31,128,6,0,31,128,6,0,15,128,12,0,15,192,12, + 0,7,192,24,0,7,224,56,0,1,252,240,0,0,255,192, + 0,27,28,112,30,2,0,255,248,127,224,31,192,15,0,15, + 192,6,0,15,192,6,0,7,224,4,0,7,224,12,0,7, + 224,8,0,3,240,8,0,3,240,8,0,3,240,24,0,1, + 248,16,0,1,248,16,0,1,252,48,0,0,252,32,0,0, + 252,32,0,0,254,96,0,0,126,64,0,0,126,64,0,0, + 127,192,0,0,63,128,0,0,63,128,0,0,63,128,0,0, + 31,0,0,0,31,0,0,0,31,0,0,0,14,0,0,0, + 14,0,0,0,14,0,0,38,28,140,41,2,0,255,243,255, + 207,252,31,192,126,1,224,15,192,126,0,192,15,192,62,0, + 192,7,192,63,0,128,7,224,63,0,128,7,224,63,1,128, + 7,224,63,129,0,3,240,63,129,0,3,240,127,131,0,3, + 240,111,195,0,1,248,79,194,0,1,248,207,194,0,1,248, + 199,230,0,0,252,135,230,0,0,252,135,228,0,0,253,131, + 244,0,0,127,131,252,0,0,127,3,248,0,0,127,3,248, + 0,0,127,1,248,0,0,63,1,248,0,0,62,1,240,0, + 0,62,0,240,0,0,30,0,240,0,0,28,0,240,0,0, + 28,0,96,0,0,12,0,96,0,26,28,112,29,2,0,255, + 241,255,128,31,224,124,0,15,224,56,0,15,224,48,0,7, + 240,96,0,7,240,96,0,3,248,192,0,3,248,128,0,1, + 253,128,0,0,255,0,0,0,254,0,0,0,126,0,0,0, + 127,0,0,0,63,0,0,0,63,128,0,0,31,128,0,0, + 63,192,0,0,111,192,0,0,79,224,0,0,199,224,0,1, + 135,240,0,1,131,240,0,3,3,248,0,2,1,248,0,6, + 1,252,0,14,0,252,0,30,1,254,0,255,199,255,192,25, + 28,112,28,2,0,255,240,255,128,31,192,60,0,31,192,24, + 0,15,192,24,0,15,224,24,0,7,224,16,0,7,224,48, + 0,3,240,32,0,3,240,32,0,1,248,96,0,1,248,64, + 0,1,252,64,0,0,252,192,0,0,254,128,0,0,127,128, + 0,0,127,128,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0, + 0,1,255,224,0,20,28,84,25,3,0,127,255,240,126,7, + 240,124,7,224,120,15,224,112,15,192,96,31,192,96,31,128, + 96,63,128,64,63,0,64,127,0,0,254,0,0,254,0,1, + 252,0,1,248,0,3,248,0,3,240,0,7,240,0,7,224, + 16,15,224,16,15,192,16,31,192,48,31,128,48,63,128,112, + 63,0,112,127,0,240,126,1,240,254,7,240,255,255,240,9, + 35,70,15,3,249,255,128,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,248,0,248,0,248,0,248, + 0,248,0,248,0,248,0,248,0,255,128,13,37,74,17,2, + 248,192,0,224,0,224,0,96,0,112,0,112,0,48,0,56, + 0,56,0,24,0,24,0,28,0,28,0,12,0,14,0,14, + 0,6,0,6,0,7,0,7,0,3,0,3,128,3,128,1, + 128,1,192,1,192,0,192,0,192,0,224,0,224,0,96,0, + 112,0,112,0,48,0,48,0,56,0,56,9,35,70,15,3, + 249,255,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,255,128,18,14,42,22,2,15,0,192,0, + 0,192,0,1,224,0,3,240,0,3,240,0,7,56,0,7, + 56,0,14,28,0,28,14,0,28,14,0,56,7,0,56,7, + 0,112,3,128,224,1,192,20,3,9,20,0,249,255,255,240, + 255,255,240,255,255,240,7,7,7,17,3,21,224,240,240,120, + 60,12,6,17,19,57,20,2,0,15,192,0,24,240,0,48, + 120,0,112,120,0,124,124,0,124,124,0,124,124,0,0,252, + 0,7,124,0,28,124,0,56,124,0,120,124,0,248,124,0, + 248,124,128,248,124,128,248,124,128,252,253,128,127,191,0,62, + 30,0,18,28,84,20,0,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,60,0,31,78,0,31,143,0,31,135,128,31, + 7,128,31,7,128,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,128,31,7,128, + 31,135,0,25,143,0,16,206,0,16,120,0,14,19,38,18, + 2,0,7,224,14,48,60,24,60,28,120,60,120,124,248,124, + 248,120,248,48,248,0,248,0,248,0,248,0,120,4,120,4, + 56,4,28,8,14,16,7,224,18,28,84,21,2,0,0,254, + 0,0,62,0,0,62,0,0,62,0,0,62,0,0,62,0, + 0,62,0,0,62,0,0,62,0,15,62,0,28,190,0,60, + 126,0,120,126,0,120,62,0,120,62,0,248,62,0,248,62, + 0,248,62,0,248,62,0,248,62,0,248,62,0,248,62,0, + 120,62,0,120,62,0,120,126,0,60,126,0,28,190,0,15, + 63,192,14,19,38,18,2,0,7,192,28,224,56,112,56,120, + 120,120,120,124,248,124,248,124,248,124,255,252,248,0,248,0, + 248,0,120,4,120,4,56,8,60,8,30,16,7,224,14,28, + 56,13,1,0,1,240,7,24,15,28,30,60,30,124,62,124, + 62,56,62,0,62,0,255,192,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,62,0,62,0,62,0, + 62,0,62,0,62,0,62,0,62,0,255,192,19,28,84,22, + 2,247,7,225,192,30,118,96,60,60,224,60,60,224,124,62, + 192,124,62,0,124,62,0,124,62,0,60,60,0,60,60,0, + 30,120,0,7,224,0,56,0,0,96,0,0,96,0,0,127, + 224,0,127,254,0,127,255,0,63,255,128,31,255,128,96,7, + 128,192,3,128,128,3,128,128,3,0,128,3,0,64,6,0, + 48,28,0,15,240,0,20,28,84,22,1,0,255,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,30,0,31,111,0,31,135,128, + 31,135,192,31,135,192,31,7,192,31,7,192,31,7,192,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,192,31,7,192,31,7,192,255,223,240, + 8,28,28,12,2,0,60,126,126,126,126,60,0,0,0,252, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,255,12,37,74,13,254,247,1,224,3,240,3,240,3,240, + 3,240,1,224,0,0,0,0,0,0,15,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,123,224,251,224,251,224,243,192,227,192,103,128, + 30,0,20,28,84,21,1,0,255,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,31,192,31,7,0,31,6,0,31,4,0,31, + 8,0,31,16,0,31,16,0,31,48,0,31,120,0,31,248, + 0,31,188,0,31,60,0,31,30,0,31,31,0,31,15,0, + 31,15,128,31,15,128,31,15,192,255,223,240,11,28,56,12, + 1,0,255,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,255,224,27,19,76,30,2,0, + 254,60,30,0,62,222,111,0,63,31,143,0,63,31,143,128, + 63,31,143,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,62,31,15,128,62,31,15,128, + 62,31,15,128,62,31,15,128,255,63,223,224,19,19,57,22, + 2,0,254,60,0,62,222,0,63,15,0,63,15,128,63,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 15,128,62,15,128,62,15,128,255,191,224,16,19,38,20,2, + 0,7,192,12,112,28,56,56,60,120,30,120,30,248,30,248, + 31,248,31,248,31,248,31,248,31,248,30,120,30,120,30,56, + 60,28,56,12,112,7,192,18,28,84,21,1,247,255,60,0, + 31,78,0,31,143,0,31,135,128,31,7,128,31,7,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 192,31,7,192,31,7,128,31,7,128,31,135,128,31,143,0, + 31,78,0,31,60,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,255,192, + 0,17,28,84,20,2,247,7,130,0,28,194,0,60,102,0, + 120,126,0,120,62,0,120,62,0,248,62,0,248,62,0,248, + 62,0,248,62,0,248,62,0,248,62,0,248,62,0,120,62, + 0,120,62,0,120,126,0,60,126,0,28,190,0,15,62,0, + 0,62,0,0,62,0,0,62,0,0,62,0,0,62,0,0, + 62,0,0,62,0,0,62,0,0,255,128,14,19,38,17,2, + 0,254,48,62,120,62,188,63,60,63,124,62,124,62,56,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,0,62, + 0,62,0,62,0,255,128,13,19,38,16,2,0,31,16,97, + 208,96,112,224,48,224,48,240,16,248,0,126,0,127,128,63, + 224,15,240,135,240,193,248,192,120,224,56,224,24,240,16,156, + 48,135,192,12,27,54,14,1,0,6,0,6,0,6,0,6, + 0,6,0,14,0,30,0,62,0,255,224,62,0,62,0,62, + 0,62,0,62,0,62,0,62,0,62,0,62,0,62,16,62, + 16,62,16,62,16,62,16,62,32,62,32,31,192,7,128,19, + 19,57,21,1,0,254,63,128,62,15,128,62,15,128,62,15, + 128,62,15,128,62,15,128,62,15,128,62,15,128,62,15,128, + 62,15,128,62,15,128,62,15,128,62,15,128,62,15,128,62, + 31,128,62,31,128,30,47,128,30,79,128,7,143,224,18,19, + 57,20,1,0,255,143,192,62,3,0,30,2,0,30,2,0, + 31,2,0,15,4,0,15,4,0,15,132,0,7,136,0,7, + 200,0,7,216,0,3,208,0,3,240,0,3,240,0,1,224, + 0,1,224,0,0,224,0,0,192,0,0,192,0,28,19,76, + 30,1,0,255,63,231,240,62,15,129,192,30,7,129,128,30, + 7,129,128,31,7,193,0,15,7,193,0,15,7,195,0,15, + 143,226,0,7,137,226,0,7,137,230,0,7,217,244,0,3, + 208,244,0,3,240,248,0,3,240,248,0,1,224,248,0,1, + 224,112,0,1,192,112,0,0,192,112,0,0,192,32,0,18, + 19,57,20,1,0,255,63,128,126,14,0,62,12,0,31,8, + 0,31,16,0,15,176,0,15,160,0,7,192,0,3,192,0, + 3,224,0,1,240,0,3,240,0,2,248,0,4,248,0,12, + 124,0,8,126,0,24,62,0,56,63,0,254,127,192,19,28, + 84,20,0,247,255,207,224,63,3,128,31,3,0,31,2,0, + 15,2,0,15,130,0,15,130,0,7,196,0,7,196,0,3, + 196,0,3,232,0,3,232,0,1,248,0,1,248,0,0,240, + 0,0,240,0,0,112,0,0,96,0,0,96,0,0,32,0, + 0,64,0,12,64,0,30,64,0,62,64,0,62,128,0,60, + 128,0,29,0,0,14,0,0,14,19,38,17,1,0,127,252, + 120,124,112,248,96,248,65,240,65,224,67,224,3,192,7,192, + 7,128,15,128,31,4,31,4,62,4,62,12,124,12,120,28, + 248,60,255,252,12,35,70,16,2,249,1,240,7,128,15,0, + 15,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,30,0,30,0,56,0,224,0,56,0, + 30,0,30,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,15,0,15,0,7,128,1,240, + 3,36,36,11,4,248,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,12,37,74,16,2,248, + 128,0,240,0,28,0,15,0,15,0,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 7,128,3,192,0,112,3,192,7,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,0,15,0,28,0,248,0,128,0,21,8,24,25,2,6, + 62,0,48,127,192,16,255,240,8,135,252,8,129,255,24,128, + 127,248,192,31,240,96,3,224,255}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 9 y=28 dx=52 dy= 0 ascent=45 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x=-2 y=-12 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =35 descent=-10 + Max Font ascent =45 descent=-12 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35[22095] U8G_SECTION(".progmem.u8g_font_osb35") = { + 0,133,60,215,242,35,12,218,29,222,32,255,246,45,244,35, + 246,0,0,0,13,0,0,8,34,34,14,3,1,126,126,255, + 255,255,255,255,255,126,126,126,126,60,60,60,60,60,24,24, + 24,24,24,24,24,24,0,0,0,126,255,255,255,255,126,12, + 12,24,18,3,23,32,64,241,224,249,240,249,240,249,240,249, + 240,249,240,112,224,112,224,112,224,112,224,112,224,28,34,136, + 34,3,0,0,112,14,0,0,112,14,0,0,112,14,0,0, + 112,14,0,0,240,30,0,0,224,28,0,0,224,28,0,0, + 224,28,0,0,224,28,0,255,255,255,240,255,255,255,240,255, + 255,255,240,1,192,56,0,1,192,56,0,1,192,56,0,1, + 192,56,0,3,192,56,0,3,128,120,0,3,128,112,0,3, + 128,112,0,3,128,112,0,3,128,112,0,255,255,255,224,255, + 255,255,224,255,255,255,224,7,0,224,0,7,0,224,0,7, + 0,224,0,7,0,224,0,15,1,224,0,14,1,224,0,14, + 1,192,0,14,1,192,0,14,1,192,0,23,42,126,28,2, + 252,0,195,0,0,195,0,0,195,0,0,195,0,3,255,192, + 7,195,112,28,195,24,60,195,12,56,195,14,120,195,14,120, + 195,30,120,195,62,124,195,126,126,195,126,127,195,124,127,195, + 56,63,243,0,63,251,0,31,255,0,31,255,128,7,255,192, + 3,255,240,0,255,248,0,255,248,0,223,252,0,199,252,124, + 195,254,124,195,254,252,195,126,252,195,62,248,195,30,240,195, + 30,224,195,28,96,195,28,112,195,56,56,195,56,28,195,96, + 7,255,192,0,195,0,0,195,0,0,195,0,0,195,0,33, + 35,175,41,4,0,0,0,0,48,0,15,192,0,96,0,60, + 240,0,224,0,56,112,0,192,0,120,120,1,128,0,120,120, + 1,128,0,248,124,3,0,0,248,124,7,0,0,248,124,6, + 0,0,248,124,14,0,0,248,124,12,0,0,248,124,24,0, + 0,120,120,24,0,0,120,120,48,0,0,56,240,112,0,0, + 28,224,96,0,0,15,192,192,0,0,0,0,192,0,0,0, + 1,128,240,0,0,3,131,156,0,0,3,7,158,0,0,7, + 15,15,0,0,6,15,15,0,0,12,31,15,128,0,12,31, + 15,128,0,24,31,15,128,0,56,31,15,128,0,48,31,15, + 128,0,96,31,15,128,0,96,31,15,128,0,192,15,15,0, + 1,192,15,15,0,1,128,7,14,0,3,128,7,158,0,3, + 0,1,248,0,33,34,170,37,2,1,0,31,224,0,0,0, + 112,112,0,0,0,224,48,0,0,0,224,24,0,0,1,224, + 24,0,0,1,224,24,0,0,1,224,24,0,0,1,240,56, + 0,0,1,240,48,0,0,1,248,96,0,0,1,248,192,0, + 0,0,255,128,0,0,0,255,0,0,0,0,126,0,0,0, + 0,63,0,0,0,0,255,129,255,128,1,223,128,62,0,3, + 143,192,28,0,7,15,224,24,0,14,7,224,56,0,30,3, + 240,48,0,60,1,248,48,0,124,1,248,96,0,124,0,252, + 96,0,252,0,126,192,0,252,0,127,128,0,252,0,63,128, + 0,254,0,31,128,0,255,0,31,128,0,255,0,15,193,128, + 127,192,63,225,0,63,248,247,243,0,31,255,195,254,0,15, + 254,0,252,0,5,12,12,11,3,23,32,240,248,248,248,248, + 248,112,112,112,112,112,14,43,86,18,3,248,0,28,0,56, + 0,112,0,224,1,192,3,128,7,0,15,0,14,0,30,0, + 30,0,60,0,60,0,124,0,124,0,124,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 124,0,124,0,124,0,124,0,60,0,60,0,30,0,30,0, + 14,0,15,0,7,0,3,128,1,192,0,224,0,112,0,56, + 0,12,13,43,86,17,1,248,192,0,224,0,48,0,24,0, + 28,0,14,0,7,0,7,128,3,128,3,192,1,224,1,224, + 1,224,1,240,1,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 1,240,1,240,1,224,1,224,3,192,3,192,3,128,7,128, + 7,0,14,0,28,0,56,0,112,0,224,0,128,0,17,19, + 57,24,4,13,1,128,0,3,192,0,3,192,0,227,195,0, + 241,135,128,248,143,128,252,159,128,126,191,0,3,192,0,3, + 192,0,126,191,0,252,159,128,248,143,128,241,135,128,225,195, + 0,3,192,0,3,192,0,3,192,0,1,128,0,41,41,246, + 45,2,249,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,255,255,255,255,255,128,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,9,15,30,13,2,248,126, + 0,255,0,255,128,255,128,255,128,127,128,1,128,1,128,1, + 128,3,0,2,0,6,0,28,0,56,0,96,0,12,5,10, + 18,3,10,255,240,255,240,255,240,255,240,255,240,8,6,6, + 14,3,1,126,255,255,255,255,126,16,44,88,22,3,247,0, + 7,0,15,0,14,0,14,0,14,0,30,0,28,0,28,0, + 60,0,56,0,56,0,120,0,112,0,112,0,240,0,224,0, + 224,0,224,1,224,1,192,1,192,3,192,3,128,3,128,7, + 128,7,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,0,23,35,105,28,2,0,0,16,0, + 0,254,0,3,199,128,7,131,192,15,1,224,15,1,224,31, + 1,240,63,1,248,63,1,248,127,1,248,127,1,252,127,1, + 252,127,1,252,255,1,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,127,1,252,127,1,252,127,1,252,127,1,252,63,1, + 248,63,1,248,31,1,240,15,1,224,15,1,224,7,131,192, + 3,199,128,0,254,0,16,34,68,28,6,0,0,240,0,240, + 1,240,7,240,255,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,255,255,255,255, + 21,34,102,28,3,1,7,255,0,14,15,192,28,7,224,56, + 7,240,120,3,240,120,3,248,248,3,248,252,3,248,255,3, + 248,255,3,248,255,7,248,127,7,240,63,15,240,12,15,224, + 0,31,192,0,63,128,0,127,0,0,252,0,1,240,0,3, + 192,0,7,128,0,14,0,24,12,0,24,24,0,24,48,0, + 24,96,0,24,111,192,56,127,255,248,255,255,240,239,255,240, + 195,255,240,193,255,224,192,255,192,192,63,128,22,34,102,28, + 3,1,7,255,0,14,15,192,28,7,224,56,7,240,120,3, + 240,124,3,248,126,3,248,127,3,248,127,3,248,127,3,248, + 63,3,240,30,3,240,0,7,224,0,7,192,0,15,0,7, + 248,0,0,31,128,0,15,192,0,7,224,0,7,240,0,3, + 248,0,3,248,62,3,252,127,3,252,255,3,252,255,3,252, + 255,3,252,254,3,252,252,3,248,248,7,248,120,7,240,56, + 15,224,30,31,192,15,255,0,23,34,102,28,2,0,0,7, + 192,0,15,192,0,15,192,0,31,192,0,63,192,0,63,192, + 0,127,192,0,127,192,0,255,192,0,223,192,1,223,192,1, + 159,192,3,159,192,7,31,192,6,31,192,14,31,192,12,31, + 192,28,31,192,24,31,192,56,31,192,112,31,192,96,31,192, + 224,31,192,255,255,254,0,31,192,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,7,255, + 252,7,255,252,21,34,102,28,4,0,32,0,192,60,7,128, + 63,255,128,63,255,0,63,254,0,63,248,0,63,224,0,63, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,49,252,0,54,63,0,60,15,192,56,15,224,48,15,224, + 32,7,240,0,7,240,0,7,248,0,7,248,8,7,248,62, + 7,248,126,7,248,254,7,248,254,7,248,254,7,240,248,7, + 240,240,7,224,112,15,192,48,15,192,28,31,0,15,252,0, + 22,34,102,28,3,1,0,255,128,3,192,192,7,192,96,15, + 128,240,31,131,240,31,7,240,63,15,240,63,15,240,127,15, + 224,127,7,192,127,3,0,127,0,0,255,0,0,255,0,0, + 255,63,0,255,255,192,255,195,224,255,131,240,255,3,248,255, + 1,248,255,1,252,255,1,252,255,1,252,127,1,252,127,1, + 252,127,1,252,127,1,252,63,1,248,63,1,248,31,1,248, + 15,129,240,7,131,224,3,195,192,1,255,0,20,34,102,28, + 5,1,71,224,224,207,240,224,223,248,112,255,252,48,255,254, + 48,255,255,240,255,255,240,224,31,176,192,0,32,192,0,96, + 128,0,96,128,0,192,128,1,192,0,1,128,0,3,128,0, + 7,0,0,15,0,0,14,0,0,30,0,0,60,0,0,124, + 0,0,252,0,1,252,0,1,248,0,3,248,0,3,248,0, + 7,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,248,0,3,240,0,23,34,102,28,3,1,1,255, + 128,7,0,192,12,0,96,28,0,48,56,0,24,56,0,24, + 120,0,24,120,0,24,124,0,24,126,0,24,127,0,48,127, + 192,32,127,240,96,63,255,128,63,255,0,31,255,192,15,255, + 240,7,255,248,15,255,248,24,63,252,48,15,252,112,3,254, + 96,0,254,224,0,126,224,0,62,224,0,30,224,0,30,224, + 0,12,240,0,28,112,0,24,56,0,24,28,0,48,15,0, + 192,3,255,0,22,34,102,28,3,1,3,254,0,15,15,0, + 31,7,128,62,7,192,126,3,224,126,3,240,126,3,240,254, + 3,248,254,3,248,254,3,248,254,3,248,254,3,252,254,3, + 252,254,3,252,126,3,252,127,7,252,63,7,252,31,15,252, + 15,255,252,3,243,252,0,3,252,0,3,252,0,3,248,7, + 3,248,31,131,248,31,195,248,63,195,240,63,195,240,63,131, + 224,62,7,224,60,7,192,28,15,128,14,31,0,7,252,0, + 8,22,22,14,3,1,126,255,255,255,255,126,0,0,0,0, + 0,0,0,0,0,0,126,255,255,255,255,126,9,31,62,13, + 2,248,63,0,127,128,127,128,127,128,127,128,63,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,3,0,6,0,28,0,56,0,96,0, + 37,40,200,45,4,249,0,0,0,0,48,0,0,0,0,240, + 0,0,0,1,248,0,0,0,7,224,0,0,0,31,128,0, + 0,0,126,0,0,0,1,252,0,0,0,7,240,0,0,0, + 15,192,0,0,0,63,0,0,0,0,252,0,0,0,3,240, + 0,0,0,15,224,0,0,0,63,128,0,0,0,126,0,0, + 0,1,248,0,0,0,7,224,0,0,0,31,128,0,0,0, + 127,0,0,0,0,252,0,0,0,0,248,0,0,0,0,126, + 0,0,0,0,31,128,0,0,0,15,224,0,0,0,3,248, + 0,0,0,0,252,0,0,0,0,63,0,0,0,0,15,192, + 0,0,0,3,240,0,0,0,1,252,0,0,0,0,127,0, + 0,0,0,31,192,0,0,0,7,224,0,0,0,1,248,0, + 0,0,0,126,0,0,0,0,63,128,0,0,0,15,224,0, + 0,0,3,248,0,0,0,0,248,0,0,0,0,48,41,13, + 78,45,2,6,255,255,255,255,255,128,255,255,255,255,255,128, + 255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,37,40,200,45,4,249,96,0,0,0,0,120,0,0, + 0,0,252,0,0,0,0,63,0,0,0,0,15,192,0,0, + 0,3,240,0,0,0,1,252,0,0,0,0,127,0,0,0, + 0,31,128,0,0,0,7,224,0,0,0,1,248,0,0,0, + 0,126,0,0,0,0,63,128,0,0,0,15,224,0,0,0, + 3,240,0,0,0,0,252,0,0,0,0,63,0,0,0,0, + 15,192,0,0,0,7,240,0,0,0,1,248,0,0,0,0, + 248,0,0,0,3,240,0,0,0,15,192,0,0,0,63,128, + 0,0,0,254,0,0,0,1,248,0,0,0,7,224,0,0, + 0,31,128,0,0,0,126,0,0,0,1,252,0,0,0,7, + 240,0,0,0,31,192,0,0,0,63,0,0,0,0,252,0, + 0,0,3,240,0,0,0,15,224,0,0,0,63,128,0,0, + 0,254,0,0,0,0,248,0,0,0,0,96,0,0,0,0, + 15,34,68,22,3,1,31,240,59,248,96,252,96,252,192,126, + 192,126,192,126,192,126,192,126,64,252,96,252,48,248,1,240, + 1,224,3,192,3,128,7,0,7,0,14,0,12,16,12,16, + 12,16,12,16,6,32,3,192,0,0,0,0,0,128,3,224, + 7,240,7,240,7,240,7,240,3,224,35,34,170,39,2,1, + 0,15,255,0,0,0,56,1,224,0,0,224,0,112,0,1, + 128,0,28,0,7,0,0,14,0,14,0,0,7,0,12,0, + 248,3,0,28,3,205,243,128,56,7,135,241,128,56,15,7, + 225,192,112,31,7,225,192,112,62,7,224,224,112,62,7,224, + 224,224,124,7,192,224,224,124,7,192,224,224,124,7,192,224, + 224,252,15,192,224,224,248,15,128,224,224,248,15,128,224,224, + 248,15,129,192,224,248,31,129,192,224,248,31,129,128,112,248, + 31,3,128,112,248,63,3,0,112,120,111,6,0,56,60,199, + 140,0,56,31,3,240,0,28,0,0,0,0,14,0,0,0, + 0,7,0,0,0,0,3,128,0,0,0,1,192,0,96,0, + 0,120,1,192,0,0,31,255,0,0,33,35,175,36,2,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,2,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,31,0,15,252,0,255,240,255,255,128,28, + 34,136,33,3,0,255,255,240,0,15,224,126,0,15,224,31, + 0,15,224,31,128,15,224,15,192,15,224,15,192,15,224,15, + 224,15,224,15,224,15,224,15,224,15,224,15,224,15,224,15, + 224,15,224,15,192,15,224,15,192,15,224,31,128,15,224,30, + 0,15,224,60,0,15,255,224,0,15,224,124,0,15,224,63, + 0,15,224,31,128,15,224,15,192,15,224,15,224,15,224,15, + 240,15,224,15,240,15,224,15,240,15,224,15,240,15,224,15, + 240,15,224,15,240,15,224,15,224,15,224,15,224,15,224,31, + 192,15,224,31,128,15,224,126,0,255,255,248,0,26,34,136, + 31,3,1,0,127,193,128,1,224,241,128,3,192,63,128,15, + 128,31,128,15,128,15,128,31,0,15,128,63,0,7,128,63, + 0,7,128,127,0,3,128,127,0,3,128,127,0,3,128,127, + 0,1,128,255,0,1,128,255,0,1,128,255,0,1,128,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,192,127,0,0,192,127, + 0,0,192,127,0,0,128,63,0,1,128,63,0,1,128,63, + 0,1,128,31,128,3,0,15,128,3,0,7,128,6,0,3, + 192,12,0,1,224,56,0,0,127,224,0,32,34,136,37,3, + 0,255,255,248,0,15,224,31,0,15,224,7,128,15,224,3, + 224,15,224,1,240,15,224,1,240,15,224,0,248,15,224,0, + 252,15,224,0,252,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,254,15,224,0,252,15,224,0,252,15,224,0, + 248,15,224,1,240,15,224,1,224,15,224,3,192,15,224,7, + 128,15,224,30,0,255,255,248,0,27,34,136,33,3,0,255, + 255,255,224,15,224,31,224,15,224,7,224,15,224,3,224,15, + 224,1,224,15,224,1,224,15,224,0,224,15,224,0,224,15, + 224,0,96,15,224,48,96,15,224,48,96,15,224,48,0,15, + 224,112,0,15,224,112,0,15,224,240,0,15,225,240,0,15, + 255,240,0,15,225,240,0,15,224,240,0,15,224,112,0,15, + 224,112,32,15,224,48,96,15,224,48,96,15,224,48,96,15, + 224,0,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,1,224,15,224,3,224,15,224,3,224,15,224,15,224,255, + 255,255,224,255,255,255,224,28,34,136,32,3,0,255,255,255, + 240,7,240,15,240,7,240,3,240,7,240,1,240,7,240,1, + 240,7,240,0,240,7,240,0,240,7,240,0,112,7,240,0, + 112,7,240,24,48,7,240,24,48,7,240,24,48,7,240,56, + 48,7,240,56,0,7,240,120,0,7,240,248,0,7,255,248, + 0,7,240,248,0,7,240,120,0,7,240,56,0,7,240,56, + 0,7,240,24,0,7,240,24,0,7,240,24,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,128,0,30,34,136,35,3,1,0,127,224,192,0, + 224,120,192,3,192,31,192,7,128,15,192,15,128,7,192,31, + 0,7,192,31,0,3,192,63,0,3,192,63,0,1,192,127, + 0,1,192,127,0,1,192,127,0,0,192,255,0,0,192,255, + 0,0,192,255,0,0,0,255,0,0,0,255,0,0,0,255, + 3,255,252,255,3,255,252,255,0,31,192,255,0,31,192,255, + 0,31,192,127,0,31,192,127,0,31,192,127,0,31,192,127, + 0,31,192,63,0,31,192,63,0,31,192,31,0,31,192,15, + 128,57,192,15,128,49,192,7,192,96,192,1,224,192,192,0, + 127,128,192,34,34,170,39,3,0,255,255,63,255,192,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,255,255,252,0,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,255,255, + 63,255,192,16,34,68,21,3,0,255,255,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,255,255,23,34,102, + 26,2,0,1,255,254,0,15,224,0,15,224,0,15,224,0, + 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 224,0,15,224,0,15,224,0,15,224,0,15,224,0,15,224, + 0,15,224,0,15,224,0,15,224,0,15,224,0,15,224,0, + 15,224,30,15,224,126,15,224,127,15,224,255,15,224,255,15, + 224,254,15,224,254,15,224,248,15,192,112,15,192,96,15,128, + 48,31,0,24,30,0,15,248,0,33,34,170,37,3,0,255, + 255,31,254,0,7,240,7,240,0,7,240,3,192,0,7,240, + 3,128,0,7,240,3,0,0,7,240,7,0,0,7,240,14, + 0,0,7,240,12,0,0,7,240,24,0,0,7,240,48,0, + 0,7,240,96,0,0,7,240,224,0,0,7,240,224,0,0, + 7,241,240,0,0,7,243,240,0,0,7,247,248,0,0,7, + 255,252,0,0,7,255,252,0,0,7,249,254,0,0,7,241, + 254,0,0,7,240,255,0,0,7,240,255,0,0,7,240,127, + 128,0,7,240,127,128,0,7,240,63,192,0,7,240,63,192, + 0,7,240,31,224,0,7,240,31,224,0,7,240,15,240,0, + 7,240,15,240,0,7,240,7,248,0,7,240,7,248,0,7, + 240,7,252,0,255,255,63,255,128,28,34,136,32,3,0,255, + 255,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,48,7, + 240,0,48,7,240,0,48,7,240,0,112,7,240,0,112,7, + 240,0,112,7,240,0,240,7,240,0,240,7,240,0,240,7, + 240,1,240,7,240,3,240,7,240,3,240,7,240,7,240,255, + 255,255,240,255,255,255,240,39,34,170,43,2,0,255,240,0, + 63,254,7,240,0,63,192,7,248,0,63,192,7,248,0,63, + 192,7,248,0,127,192,7,252,0,127,192,7,252,0,95,192, + 7,252,0,95,192,7,254,0,223,192,6,254,0,223,192,6, + 255,0,159,192,6,127,0,159,192,6,127,1,159,192,6,127, + 129,159,192,6,63,129,31,192,6,63,129,31,192,6,63,195, + 31,192,6,31,194,31,192,6,31,226,31,192,6,15,226,31, + 192,6,15,230,31,192,6,15,244,31,192,6,7,244,31,192, + 6,7,244,31,192,6,7,252,31,192,6,3,248,31,192,6, + 3,248,31,192,6,1,248,31,192,6,1,248,31,192,6,1, + 240,31,192,6,0,240,31,192,15,0,240,31,192,63,192,240, + 31,192,255,240,97,255,254,34,35,175,37,2,255,255,224,15, + 255,192,31,240,3,255,0,15,240,0,252,0,15,248,0,120, + 0,7,252,0,48,0,3,254,0,48,0,3,254,0,48,0, + 3,255,0,48,0,3,255,128,48,0,3,255,128,48,0,3, + 127,192,48,0,3,63,224,48,0,3,31,224,48,0,3,31, + 240,48,0,3,15,248,48,0,3,7,248,48,0,3,7,252, + 48,0,3,3,254,48,0,3,1,255,48,0,3,1,255,48, + 0,3,0,255,176,0,3,0,127,240,0,3,0,127,240,0, + 3,0,63,240,0,3,0,31,240,0,3,0,15,240,0,3, + 0,15,240,0,3,0,7,240,0,3,0,3,240,0,3,0, + 3,240,0,7,128,1,240,0,15,192,0,240,0,63,240,0, + 240,0,255,252,0,112,0,0,0,0,48,0,28,34,136,33, + 3,1,0,63,192,0,0,224,112,0,3,192,56,0,7,128, + 30,0,15,128,30,0,15,0,15,0,31,0,15,128,63,0, + 15,192,63,0,15,192,127,0,15,192,127,0,15,224,127,0, + 15,224,127,0,15,224,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,127,0,15,192,63,0,15,192,63,0,15,192,31,0, + 15,128,15,0,15,0,15,128,31,0,7,128,30,0,3,192, + 60,0,0,224,112,0,0,63,192,0,29,34,136,34,3,0, + 255,255,248,0,7,240,63,0,7,240,15,192,7,240,15,224, + 7,240,15,240,7,240,7,240,7,240,7,248,7,240,7,248, + 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,248, + 7,240,7,240,7,240,15,240,7,240,15,224,7,240,15,192, + 7,240,31,0,7,255,252,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,255,255,128,0,28,45,180,33,3,246,0,63, + 192,0,0,224,112,0,3,192,56,0,7,128,30,0,15,128, + 30,0,15,0,15,0,31,0,15,128,63,0,15,128,63,0, + 15,192,127,0,15,192,127,0,15,224,127,0,15,224,127,0, + 15,224,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,63,0,15,192,63,15,15,192,31,17,143,128,15,160, + 223,0,15,160,223,0,7,160,254,0,3,224,252,16,0,240, + 248,16,0,127,224,16,0,0,224,16,0,0,224,16,0,0, + 224,48,0,0,240,48,0,0,248,112,0,0,255,240,0,0, + 255,224,0,0,127,224,0,0,127,192,0,0,63,128,0,0, + 31,0,32,36,144,36,3,254,255,255,240,0,7,240,126,0, + 7,240,63,0,7,240,63,128,7,240,31,192,7,240,31,192, + 7,240,31,224,7,240,31,224,7,240,31,224,7,240,31,224, + 7,240,31,224,7,240,31,192,7,240,63,192,7,240,63,0, + 7,240,126,0,7,255,240,0,7,240,240,0,7,240,62,0, + 7,240,63,0,7,240,31,128,7,240,31,128,7,240,31,192, + 7,240,31,192,7,240,31,192,7,240,31,192,7,240,31,195, + 7,240,31,195,7,240,31,195,7,240,31,195,7,240,31,195, + 7,240,31,198,7,240,31,198,7,240,15,238,255,255,135,252, + 0,0,3,248,0,0,0,96,23,34,102,29,4,1,7,252, + 24,24,15,24,56,3,248,112,1,248,112,0,248,240,0,120, + 248,0,120,248,0,56,252,0,24,254,0,24,255,128,24,255, + 224,8,127,240,0,127,252,0,63,254,0,31,255,128,15,255, + 192,3,255,240,1,255,248,128,127,248,192,31,252,192,15,252, + 192,3,254,224,1,254,224,0,126,224,0,62,240,0,30,248, + 0,30,248,0,28,252,0,28,254,0,24,239,0,48,195,128, + 96,193,255,128,29,34,136,34,3,0,255,255,255,248,255,63, + 231,248,252,31,193,248,248,31,192,248,248,31,192,248,240,31, + 192,120,224,31,192,56,224,31,192,56,224,31,192,56,192,31, + 192,24,192,31,192,24,192,31,192,24,192,31,192,24,128,31, + 192,8,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,3,255, + 254,0,33,34,170,38,3,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,34,34,170,37,2,0,255,255,135,255,192,15,248,0, + 126,0,7,248,0,56,0,7,248,0,56,0,3,248,0,48, + 0,3,252,0,48,0,3,252,0,48,0,1,254,0,96,0, + 1,254,0,96,0,0,254,0,96,0,0,255,0,192,0,0, + 255,0,192,0,0,127,0,192,0,0,127,129,128,0,0,127, + 129,128,0,0,63,129,128,0,0,63,195,0,0,0,63,195, + 0,0,0,31,195,0,0,0,31,230,0,0,0,15,230,0, + 0,0,15,246,0,0,0,15,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,248,0,0,0,3,248,0,0,0, + 3,248,0,0,0,3,240,0,0,0,1,240,0,0,0,1, + 240,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224, + 0,0,49,34,238,52,2,0,255,255,63,255,207,255,128,31, + 252,7,254,0,252,0,7,248,3,252,0,112,0,7,248,1, + 252,0,112,0,3,248,1,254,0,96,0,3,252,1,254,0, + 96,0,3,252,0,254,0,96,0,1,252,0,254,0,192,0, + 1,254,1,255,0,192,0,1,254,1,255,0,192,0,0,254, + 1,255,1,128,0,0,255,3,127,129,128,0,0,255,3,63, + 129,128,0,0,127,3,63,129,128,0,0,127,135,63,195,0, + 0,0,127,134,31,195,0,0,0,63,134,31,195,0,0,0, + 63,198,31,231,0,0,0,31,204,15,230,0,0,0,31,204, + 15,230,0,0,0,31,236,15,246,0,0,0,15,248,7,252, + 0,0,0,15,248,7,252,0,0,0,15,248,7,252,0,0, + 0,7,248,3,252,0,0,0,7,240,3,248,0,0,0,7, + 240,3,248,0,0,0,3,240,1,248,0,0,0,3,224,1, + 240,0,0,0,3,224,1,240,0,0,0,1,224,0,240,0, + 0,0,1,192,0,240,0,0,0,1,192,0,224,0,0,0, + 0,192,0,96,0,0,33,34,170,36,2,0,127,255,31,254, + 0,31,252,3,240,0,7,248,3,192,0,3,248,3,128,0, + 3,252,3,128,0,1,252,3,0,0,1,254,7,0,0,0, + 255,6,0,0,0,255,12,0,0,0,127,140,0,0,0,127, + 152,0,0,0,63,240,0,0,0,63,240,0,0,0,31,224, + 0,0,0,31,224,0,0,0,15,240,0,0,0,15,248,0, + 0,0,7,248,0,0,0,7,252,0,0,0,7,252,0,0, + 0,15,254,0,0,0,29,254,0,0,0,24,255,0,0,0, + 56,255,0,0,0,48,127,128,0,0,96,127,128,0,0,224, + 63,192,0,0,192,63,224,0,1,128,31,224,0,3,128,31, + 240,0,3,128,15,240,0,7,128,15,248,0,31,128,31,252, + 0,255,240,127,255,128,32,34,136,35,2,0,255,254,15,255, + 31,248,1,248,15,248,0,240,7,248,0,224,7,248,0,192, + 3,252,0,192,3,252,0,192,1,252,1,128,1,254,1,128, + 0,254,3,0,0,255,3,0,0,255,3,0,0,127,134,0, + 0,127,134,0,0,63,196,0,0,63,204,0,0,31,204,0, + 0,31,248,0,0,15,248,0,0,15,248,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,0,25,34,136,31,3,0,127,255,255,128,127,128, + 127,128,126,0,255,0,124,0,255,0,120,1,254,0,120,3, + 254,0,112,3,252,0,112,7,252,0,96,7,248,0,96,15, + 248,0,96,15,240,0,64,31,224,0,0,31,224,0,0,63, + 192,0,0,63,192,0,0,127,128,0,0,127,128,0,0,255, + 0,0,0,255,0,0,1,254,0,0,3,254,0,128,3,252, + 0,128,7,248,0,128,7,248,0,128,15,240,1,128,15,240, + 1,128,31,224,3,128,31,224,3,128,63,192,7,128,63,192, + 15,128,127,128,31,128,127,128,63,128,255,255,255,128,255,255, + 255,128,11,42,84,18,4,248,255,224,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,255,224,16,44,88,22, + 3,247,224,0,224,0,224,0,240,0,112,0,112,0,120,0, + 56,0,56,0,60,0,28,0,28,0,30,0,14,0,14,0, + 14,0,15,0,7,0,7,0,7,128,3,128,3,128,3,192, + 1,192,1,192,1,224,0,224,0,224,0,224,0,240,0,112, + 0,112,0,120,0,56,0,56,0,60,0,28,0,28,0,30, + 0,14,0,14,0,14,0,15,0,7,11,42,84,18,3,248, + 255,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,255,224,22,17,51,28,3,18,0,48,0,0,112,0, + 0,120,0,0,252,0,0,252,0,1,254,0,3,207,0,3, + 143,0,7,135,128,15,3,128,15,3,192,30,1,224,60,0, + 224,60,0,240,120,0,120,112,0,56,240,0,60,25,3,12, + 25,0,248,255,255,255,128,255,255,255,128,255,255,255,128,8, + 9,9,21,4,25,96,240,248,124,60,30,15,3,1,21,22, + 66,24,2,1,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,22,34,102,25,1,0,255,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,159,128,31,179,224,31,225,224,31,193,240,31,193,248,31, + 192,248,31,192,248,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,248, + 31,192,248,31,193,248,29,193,240,24,225,224,24,99,192,16, + 63,128,18,22,66,22,2,1,3,252,0,15,6,0,31,3, + 0,62,3,128,62,7,128,126,15,128,124,31,128,252,31,128, + 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,0, + 128,30,1,0,15,130,0,3,252,0,23,34,102,26,2,0, + 0,63,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,7,231,224,31,23,224,30,31,224,62,15,224, + 126,15,224,124,15,224,124,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, + 224,124,7,224,124,15,224,126,15,224,62,15,224,30,31,224, + 15,23,224,7,231,254,18,22,66,23,2,1,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,16,1,1,0,255,0,1,199,128,7,199,128,7,199,192, + 15,143,192,15,143,192,31,143,192,31,143,128,31,135,128,31, + 128,0,31,128,0,31,128,0,255,240,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,24,33,99,27,2,246, + 7,254,62,31,15,71,63,7,143,62,7,207,126,7,238,126, + 7,228,126,7,224,126,7,224,126,7,224,62,7,192,31,15, + 128,15,15,0,3,252,0,12,0,0,48,0,0,48,0,0, + 112,0,0,112,0,0,127,255,128,127,255,224,63,255,240,31, + 255,240,7,255,248,60,1,248,96,0,120,192,0,56,192,0, + 56,192,0,48,192,0,112,96,0,96,48,1,192,30,7,128, + 3,252,0,24,34,102,27,1,0,255,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,143,224, + 31,145,240,31,160,248,31,160,252,31,192,252,31,192,252,31, + 192,252,31,128,252,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,255,227,255,11, + 35,70,15,2,0,4,0,31,0,63,128,63,128,63,128,63, + 128,31,0,4,0,0,0,0,0,0,0,0,0,0,0,255, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,255,224,15,46,92,16,254, + 245,0,16,0,124,0,254,0,254,0,254,0,254,0,124,0, + 16,0,0,0,0,0,0,0,0,0,0,7,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,56,252,124,252,252, + 252,252,252,248,248,248,248,113,240,49,224,31,128,25,34,136, + 27,1,0,255,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,131,254,0,31,128,240,0,31,128,96,0,31, + 128,192,0,31,128,128,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,143,0,0,31,159,0,0,31,159,128,0,31, + 191,128,0,31,239,192,0,31,199,224,0,31,135,224,0,31, + 131,240,0,31,129,248,0,31,129,248,0,31,128,252,0,31, + 128,252,0,31,128,254,0,255,243,255,128,12,34,68,14,1, + 0,255,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,255,240,34,22,110,37,2,1,255,31,193,248,0, + 63,35,230,124,0,63,67,228,62,0,63,131,248,63,0,63, + 131,248,63,0,63,131,248,63,0,63,3,240,63,0,63,3, + 240,63,0,63,3,240,63,0,63,3,240,63,0,63,3,240, + 63,0,63,3,240,63,0,63,3,240,63,0,63,3,240,63, + 0,63,3,240,63,0,63,3,240,63,0,63,3,240,63,0, + 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, + 3,240,63,0,255,207,252,255,192,23,22,66,27,2,1,255, + 31,192,63,35,224,63,65,240,63,65,248,63,129,248,63,129, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,255,199, + 254,20,22,66,24,2,1,3,252,0,15,15,0,30,7,128, + 62,7,192,62,7,192,124,3,224,124,3,224,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,62,7,192,62,7,192, + 30,7,128,15,15,0,3,252,0,22,33,99,25,1,246,255, + 159,128,31,163,192,31,225,224,31,193,240,31,192,248,31,192, + 248,31,192,248,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,192,252,31, + 192,248,31,192,248,31,193,240,31,225,240,31,179,224,31,159, + 128,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,255, + 240,0,22,33,99,25,2,246,7,240,32,15,24,96,30,28, + 96,62,14,224,126,15,224,124,15,224,124,7,224,252,7,224, + 252,7,224,252,7,224,252,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,124,7,224,124,15,224,126,15,224,62,15, + 224,30,31,224,31,23,224,7,231,224,0,7,224,0,7,224, + 0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,63,252,17,22,66,20,2, + 1,255,31,0,63,63,128,63,79,128,63,79,128,63,159,128, + 63,159,128,63,159,0,63,14,0,63,0,0,63,0,0,63, + 0,0,63,0,0,63,0,0,63,0,0,63,0,0,63,0, + 0,63,0,0,63,0,0,63,0,0,63,0,0,63,0,0, + 255,192,0,16,22,44,21,3,1,31,196,48,116,96,60,224, + 28,224,28,240,12,248,4,254,4,127,128,127,224,63,240,31, + 252,7,254,129,254,192,127,192,31,224,15,224,7,240,7,248, + 6,204,14,135,248,15,32,64,17,1,0,1,128,1,128,1, + 128,1,128,1,128,3,128,3,128,7,128,15,128,63,128,255, + 248,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,130,31,130,31,130,31,130,31, + 134,31,134,31,132,15,196,15,248,7,240,24,22,66,26,1, + 0,255,143,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,131,248,31,131,248,31,133,248,15,133,248,15,201,248, + 7,241,255,23,23,69,25,1,255,255,241,254,63,192,120,31, + 128,48,15,192,48,15,192,32,7,192,96,7,224,96,7,224, + 64,3,224,192,3,240,128,3,240,128,1,241,128,1,249,0, + 0,249,0,0,255,0,0,254,0,0,126,0,0,126,0,0, + 124,0,0,60,0,0,60,0,0,24,0,0,24,0,35,23, + 115,37,1,255,255,231,255,31,224,63,129,252,7,128,31,128, + 252,3,0,15,128,252,2,0,15,192,124,2,0,15,192,124, + 6,0,7,192,126,4,0,7,224,254,4,0,3,224,191,12, + 0,3,224,191,8,0,3,241,159,24,0,1,241,31,144,0, + 1,241,31,144,0,1,251,31,176,0,0,250,15,224,0,0, + 250,15,224,0,0,254,15,224,0,0,124,7,192,0,0,124, + 7,192,0,0,60,7,192,0,0,56,3,128,0,0,56,3, + 128,0,0,24,3,0,0,23,22,66,25,1,0,255,231,252, + 63,192,240,31,192,224,15,192,192,15,225,128,7,227,0,3, + 242,0,3,254,0,1,252,0,1,252,0,0,252,0,0,126, + 0,0,127,0,0,127,0,0,223,128,1,159,192,3,15,192, + 2,15,224,6,7,224,14,7,240,30,7,248,255,207,254,23, + 33,99,25,1,245,255,241,254,63,192,120,31,128,48,15,192, + 32,15,192,32,15,192,96,7,224,64,7,224,64,3,240,192, + 3,240,128,1,248,128,1,249,128,0,249,0,0,253,0,0, + 253,0,0,126,0,0,126,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,12,0,0,8,0,0,8,0,0,8,0, + 15,16,0,31,16,0,63,144,0,63,32,0,62,32,0,62, + 64,0,31,192,0,15,0,0,18,22,66,22,2,0,127,255, + 192,124,15,192,120,31,128,112,63,0,96,63,0,96,126,0, + 64,126,0,64,252,0,1,248,0,1,248,0,3,240,0,3, + 240,0,7,224,64,15,192,64,15,192,64,31,128,192,31,0, + 192,63,1,192,126,1,192,126,3,192,252,15,192,255,255,192, + 14,43,86,20,3,247,0,60,0,240,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,0,15,0,28,0, + 240,0,60,0,30,0,15,0,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,7,128,7,128,3,192,0,240,0,60,3,44,44,13, + 5,247,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,15,43, + 86,20,3,247,240,0,60,0,15,0,7,128,7,128,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,3,192,3,192,0,240,0,62, + 0,240,1,224,3,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,128,7,128,15,0,60,0,240,0,27,9,36,31,2,8, + 31,128,1,128,63,240,0,192,127,254,0,96,255,255,128,96, + 193,255,240,96,192,63,255,224,192,15,255,192,96,1,255,128, + 48,0,63,0,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,13,0,0,8,35,35,14,3, + 245,60,126,255,255,255,126,60,0,0,0,24,24,24,24,24, + 24,24,24,60,60,60,60,126,126,126,126,254,255,255,255,255, + 255,255,126,60,18,34,102,28,5,250,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,1,240,0,7,236,0,15, + 103,0,30,99,0,62,99,128,126,103,128,126,111,128,124,111, + 128,252,111,128,252,103,0,252,96,0,252,96,0,252,96,0, + 252,96,0,252,96,0,252,96,0,124,96,192,124,96,192,62, + 96,128,62,97,128,30,97,0,15,99,0,7,252,0,0,248, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 29,34,136,34,3,1,0,1,255,0,0,7,129,192,0,31, + 0,224,0,31,0,224,0,63,0,240,0,126,1,240,0,126, + 3,240,0,254,3,240,0,254,3,224,0,254,1,192,0,254, + 0,0,0,254,0,0,0,254,0,0,0,254,0,0,15,254, + 0,0,24,126,6,0,0,127,252,0,0,127,0,0,0,63, + 0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,31, + 0,0,0,31,0,0,0,30,0,0,0,30,0,24,30,28, + 0,56,127,220,0,112,195,248,0,224,128,255,255,224,128,127, + 255,192,128,255,255,128,193,207,255,0,127,3,252,0,24,22, + 66,28,2,5,96,126,6,243,255,207,127,255,254,63,129,252, + 30,0,120,60,0,60,56,0,28,56,0,28,112,0,14,112, + 0,14,112,0,14,112,0,14,112,0,14,112,0,14,56,0, + 28,56,0,28,60,0,60,30,0,120,63,129,252,127,255,254, + 243,255,207,96,126,6,26,34,136,28,1,0,255,248,63,192, + 63,224,15,0,31,224,14,0,31,224,12,0,31,224,12,0, + 15,240,8,0,15,240,8,0,7,240,24,0,7,248,16,0, + 3,248,48,0,3,252,32,0,3,252,96,0,1,254,64,0, + 1,254,192,0,0,254,128,0,0,255,128,0,0,255,0,0, + 63,255,254,0,0,127,0,0,0,127,0,0,0,127,0,0, + 0,127,0,0,63,255,254,0,0,127,0,0,0,127,0,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,127,0,0, + 0,127,0,0,0,127,0,0,0,127,0,0,0,127,0,0, + 7,255,248,0,3,42,42,13,5,248,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,0,0,0, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,22,43,129,30,2,248,1,255,0,7,1,192, + 14,0,224,28,0,224,28,1,240,60,3,240,60,7,240,60, + 7,240,62,7,224,62,3,192,63,0,0,31,192,0,31,248, + 0,15,254,0,31,255,128,55,255,192,97,255,240,96,127,248, + 224,31,248,224,7,252,240,1,252,252,0,124,255,0,60,255, + 192,28,127,240,24,63,252,24,31,255,16,15,255,160,3,255, + 192,0,255,224,0,63,224,0,15,240,6,3,240,31,129,240, + 63,128,240,63,128,240,63,128,240,63,0,240,62,0,224,28, + 1,192,28,3,192,15,7,0,3,252,0,15,6,12,21,3, + 26,120,60,252,126,252,126,252,126,252,126,120,60,35,34,170, + 39,2,1,0,15,254,0,0,0,112,3,192,0,0,192,0, + 96,0,3,128,0,56,0,6,0,0,28,0,12,0,0,6, + 0,24,3,225,134,0,24,15,25,131,0,48,30,15,129,128, + 48,62,7,129,128,96,60,3,128,192,96,124,3,128,192,96, + 124,1,128,192,192,252,1,128,96,192,252,1,128,96,192,252, + 0,0,96,192,252,0,0,96,192,252,0,0,96,192,252,0, + 0,96,192,252,0,128,96,192,252,0,128,96,64,124,0,128, + 192,96,124,1,128,192,96,60,1,0,192,48,62,3,1,128, + 48,30,2,1,128,24,15,12,3,0,24,3,248,6,0,12, + 0,0,6,0,6,0,0,12,0,3,128,0,56,0,0,192, + 0,96,0,0,112,1,192,0,0,15,254,0,0,14,17,34, + 18,2,17,31,0,51,192,97,224,113,224,121,224,57,224,7, + 224,57,224,113,224,241,224,241,228,241,228,241,228,126,248,0, + 0,127,252,127,252,13,20,40,23,5,1,4,0,28,24,24, + 48,56,112,112,96,112,224,241,224,241,224,241,224,241,224,241, + 224,241,224,241,224,112,224,112,224,112,96,56,48,24,16,12, + 0,4,0,23,13,39,27,2,6,255,255,254,255,255,254,255, + 255,254,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 12,5,10,18,3,10,255,240,255,240,255,240,255,240,255,240, + 35,34,170,39,2,1,0,15,254,0,0,0,112,3,192,0, + 0,192,0,96,0,3,128,0,56,0,6,0,0,28,0,12, + 0,0,6,0,24,255,252,6,0,24,62,31,3,0,48,62, + 15,129,128,48,62,15,193,128,96,62,15,192,192,96,62,15, + 192,192,96,62,15,192,192,192,62,15,128,96,192,62,31,0, + 96,192,63,248,0,96,192,62,60,0,96,192,62,30,0,96, + 192,62,15,0,96,192,62,15,128,96,192,62,15,128,96,64, + 62,15,128,192,96,62,15,136,192,96,62,15,136,192,48,62, + 15,137,128,48,62,15,145,128,24,255,231,243,0,24,0,3, + 230,0,12,0,0,6,0,6,0,0,12,0,3,128,0,56, + 0,0,192,0,96,0,0,112,1,192,0,0,15,254,0,0, + 12,3,6,20,4,28,255,240,255,240,255,240,16,15,30,28, + 6,20,15,240,31,248,62,124,120,30,240,14,224,7,224,7, + 224,7,224,7,224,14,112,14,124,60,63,252,31,240,3,192, + 41,36,216,45,2,253,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,255,255,255,255,255,128, + 255,255,255,255,255,128,255,255,255,255,255,128,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,0,255,255,255,255,255,0,255,255,255,255,255,0,14,21, + 42,21,4,14,31,240,48,248,96,124,224,124,240,124,248,124, + 248,120,120,248,1,240,1,224,3,128,6,0,12,4,16,4, + 32,4,32,12,127,252,127,252,79,248,71,248,1,224,16,21, + 42,22,3,14,31,224,48,248,112,124,112,124,124,124,124,124, + 60,124,0,120,0,224,15,128,0,240,0,124,0,62,16,63, + 124,63,252,63,252,63,240,63,112,126,112,252,31,240,8,9, + 9,21,9,25,6,15,31,62,60,120,240,192,128,24,35,105, + 29,3,244,120,3,192,124,3,192,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,248,7, + 224,248,7,224,120,7,192,112,3,192,112,3,193,112,3,129, + 48,3,131,48,7,135,48,7,255,56,15,254,62,62,254,47, + 252,126,35,248,60,32,0,0,48,0,0,112,0,0,112,0, + 0,120,0,0,120,0,0,124,0,0,124,0,0,126,0,0, + 126,0,0,126,0,0,62,0,0,28,0,0,23,41,123,28, + 3,249,3,255,254,15,240,224,63,240,224,127,240,224,127,240, + 224,255,240,224,255,240,224,255,240,224,255,240,224,255,240,224, + 255,240,224,255,240,224,255,240,224,255,240,224,127,240,224,63, + 240,224,31,240,224,7,240,224,0,112,224,0,112,224,0,112, + 224,0,112,224,0,112,224,0,112,224,0,112,224,0,112,224, + 0,112,224,0,112,224,0,112,224,0,112,224,0,112,224,0, + 112,224,0,112,224,0,112,224,0,112,224,0,112,224,0,112, + 224,0,112,224,0,112,224,0,112,224,0,112,224,8,7,7, + 14,3,12,60,126,255,255,255,126,60,10,10,20,21,5,246, + 8,0,8,0,24,0,15,0,7,128,3,192,3,192,3,192, + 199,128,63,0,11,20,40,21,5,14,7,0,15,0,255,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 255,224,13,17,34,19,3,17,15,128,24,192,56,224,112,112, + 112,112,240,120,240,120,240,120,240,120,240,120,240,120,112,112, + 112,224,56,224,15,128,0,0,255,248,13,20,40,23,5,1, + 1,0,193,128,96,192,112,224,48,112,56,112,56,120,60,120, + 60,120,60,120,60,120,60,120,60,120,56,112,56,112,48,112, + 96,224,64,192,1,128,1,0,36,36,180,44,5,255,0,0, + 0,48,0,7,0,0,48,0,7,0,0,96,0,31,0,0, + 224,0,255,0,0,192,0,31,0,1,192,0,31,0,1,128, + 0,31,0,3,0,0,31,0,7,0,0,31,0,6,0,0, + 31,0,14,0,0,31,0,12,0,0,31,0,24,0,0,31, + 0,24,0,0,31,0,48,0,0,31,0,112,15,0,31,0, + 96,31,0,31,0,224,31,0,31,0,192,63,0,31,1,128, + 127,0,255,227,128,127,0,0,3,0,223,0,0,7,1,159, + 0,0,6,1,159,0,0,12,3,31,0,0,12,2,31,0, + 0,24,6,31,0,0,56,12,31,0,0,48,15,255,240,0, + 112,0,31,0,0,96,0,31,0,0,192,0,31,0,1,192, + 0,31,0,1,128,0,31,0,3,128,1,255,224,3,0,0, + 0,0,35,36,180,43,5,255,0,0,0,56,0,7,0,0, + 48,0,7,0,0,112,0,31,0,0,224,0,255,0,0,192, + 0,31,0,1,192,0,31,0,1,128,0,31,0,3,128,0, + 31,0,3,0,0,31,0,7,0,0,31,0,14,0,0,31, + 0,12,0,0,31,0,28,0,0,31,0,24,0,0,31,0, + 56,126,0,31,0,113,143,128,31,0,99,7,192,31,0,231, + 3,224,31,0,199,3,224,31,1,199,131,224,255,227,135,195, + 224,0,3,3,199,192,0,7,1,135,128,0,6,0,15,0, + 0,14,0,30,0,0,12,0,56,0,0,24,0,96,0,0, + 56,0,128,32,0,48,1,0,32,0,112,2,0,32,0,96, + 2,255,224,0,192,7,255,224,1,192,6,255,192,1,128,4, + 127,192,3,128,4,63,128,3,0,0,0,0,38,36,180,44, + 3,255,0,0,0,12,0,31,224,0,12,0,48,248,0,24, + 0,112,124,0,56,0,112,124,0,48,0,124,124,0,112,0, + 124,124,0,96,0,60,124,0,192,0,0,120,1,192,0,0, + 224,1,128,0,15,128,3,128,0,0,240,3,0,0,0,124, + 7,0,0,0,62,6,0,0,16,63,12,0,0,124,63,28, + 3,192,252,63,24,7,192,252,63,56,7,192,240,63,48,15, + 192,112,126,112,31,192,112,252,224,31,192,31,240,192,55,192, + 0,1,192,103,192,0,1,128,103,192,0,3,128,199,192,0, + 3,0,135,192,0,6,1,135,192,0,14,3,7,192,0,12, + 3,255,252,0,28,0,7,192,0,24,0,7,192,0,56,0, + 7,192,0,112,0,7,192,0,96,0,7,192,0,224,0,127, + 248,0,192,0,0,0,16,35,70,23,3,245,7,0,15,128, + 31,192,31,192,31,192,15,128,7,0,0,0,0,0,7,128, + 12,224,16,48,16,48,16,48,16,48,0,96,0,224,0,192, + 3,192,7,128,15,128,31,0,31,4,62,4,126,6,124,2, + 252,3,252,3,252,3,252,3,252,6,126,6,63,12,31,248, + 7,224,33,45,225,36,2,0,0,56,0,0,0,0,60,0, + 0,0,0,62,0,0,0,0,62,0,0,0,0,31,0,0, + 0,0,7,0,0,0,0,3,128,0,0,0,1,192,0,0, + 0,0,64,0,0,0,0,0,0,0,0,0,192,0,0,0, + 1,192,0,0,0,1,224,0,0,0,1,224,0,0,0,3, + 224,0,0,0,3,240,0,0,0,3,240,0,0,0,7,240, + 0,0,0,7,248,0,0,0,7,248,0,0,0,15,248,0, + 0,0,15,252,0,0,0,15,252,0,0,0,25,252,0,0, + 0,25,254,0,0,0,25,254,0,0,0,48,254,0,0,0, + 48,255,0,0,0,32,255,0,0,0,96,127,0,0,0,96, + 127,128,0,0,64,127,128,0,0,192,63,128,0,0,192,63, + 192,0,0,255,255,192,0,1,255,255,192,0,1,128,31,224, + 0,1,0,31,224,0,3,0,15,224,0,3,0,15,240,0, + 2,0,15,240,0,6,0,7,240,0,15,0,7,248,0,31, + 0,15,252,0,255,240,255,255,128,33,45,225,36,2,0,0, + 0,14,0,0,0,0,15,0,0,0,0,31,0,0,0,0, + 62,0,0,0,0,60,0,0,0,0,120,0,0,0,0,240, + 0,0,0,0,192,0,0,0,0,128,0,0,0,0,0,0, + 0,0,0,192,0,0,0,1,192,0,0,0,1,224,0,0, + 0,1,224,0,0,0,3,224,0,0,0,3,240,0,0,0, + 3,240,0,0,0,7,240,0,0,0,7,248,0,0,0,7, + 248,0,0,0,15,248,0,0,0,15,252,0,0,0,15,252, + 0,0,0,25,252,0,0,0,25,254,0,0,0,25,254,0, + 0,0,48,254,0,0,0,48,255,0,0,0,32,255,0,0, + 0,96,127,0,0,0,96,127,128,0,0,64,127,128,0,0, + 192,63,128,0,0,192,63,192,0,0,255,255,192,0,1,255, + 255,192,0,1,128,31,224,0,1,0,31,224,0,3,0,15, + 224,0,3,0,15,240,0,6,0,15,240,0,6,0,7,240, + 0,15,0,7,248,0,255,240,255,255,128,255,240,255,255,128, + 33,44,220,36,2,0,0,1,192,0,0,0,1,224,0,0, + 0,3,224,0,0,0,7,240,0,0,0,15,120,0,0,0, + 30,30,0,0,0,120,7,0,0,0,64,1,128,0,0,0, + 0,0,0,0,0,192,0,0,0,1,192,0,0,0,1,224, + 0,0,0,1,224,0,0,0,3,224,0,0,0,3,240,0, + 0,0,3,240,0,0,0,7,240,0,0,0,7,248,0,0, + 0,7,248,0,0,0,15,248,0,0,0,15,252,0,0,0, + 15,252,0,0,0,25,252,0,0,0,25,254,0,0,0,25, + 254,0,0,0,48,254,0,0,0,48,255,0,0,0,32,255, + 0,0,0,96,127,0,0,0,96,127,128,0,0,64,127,128, + 0,0,192,63,128,0,0,192,63,192,0,0,255,255,192,0, + 1,255,255,192,0,1,128,31,224,0,1,0,31,224,0,3, + 0,15,224,0,3,0,15,240,0,2,0,15,240,0,6,0, + 7,240,0,15,0,7,248,0,31,0,15,252,0,255,240,255, + 255,128,33,43,215,36,2,0,0,15,1,0,0,0,31,227, + 0,0,0,63,254,0,0,0,33,254,0,0,0,32,124,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,6,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,255,240,255,255,128,255,240,255,255,128,33, + 43,215,36,2,0,0,60,15,0,0,0,126,31,128,0,0, + 126,31,128,0,0,126,31,128,0,0,126,31,128,0,0,60, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,0,0,0,1,224,0,0,0,1,224,0, + 0,0,1,224,0,0,0,3,240,0,0,0,3,240,0,0, + 0,3,240,0,0,0,7,248,0,0,0,7,248,0,0,0, + 7,248,0,0,0,15,252,0,0,0,15,252,0,0,0,25, + 252,0,0,0,25,254,0,0,0,24,254,0,0,0,48,254, + 0,0,0,48,255,0,0,0,48,127,0,0,0,96,127,0, + 0,0,96,127,128,0,0,96,63,128,0,0,192,63,128,0, + 0,192,63,192,0,0,255,255,192,0,1,255,255,192,0,1, + 128,31,224,0,1,128,15,224,0,3,0,15,224,0,3,0, + 15,240,0,3,0,7,240,0,7,0,7,240,0,15,0,7, + 248,0,31,128,15,252,0,255,240,255,255,128,33,45,225,36, + 2,0,0,1,224,0,0,0,7,248,0,0,0,14,28,0, + 0,0,12,12,0,0,0,12,12,0,0,0,12,12,0,0, + 0,14,28,0,0,0,7,248,0,0,0,3,240,0,0,0, + 0,0,0,0,0,0,192,0,0,0,1,192,0,0,0,1, + 224,0,0,0,1,224,0,0,0,3,224,0,0,0,3,240, + 0,0,0,3,240,0,0,0,7,240,0,0,0,7,248,0, + 0,0,7,248,0,0,0,15,248,0,0,0,13,252,0,0, + 0,13,252,0,0,0,29,252,0,0,0,25,254,0,0,0, + 24,254,0,0,0,56,254,0,0,0,48,255,0,0,0,48, + 127,0,0,0,112,127,0,0,0,96,127,128,0,0,96,63, + 128,0,0,224,63,128,0,0,192,63,192,0,0,255,255,192, + 0,1,255,255,192,0,1,128,31,224,0,1,128,31,224,0, + 3,0,15,224,0,3,0,15,240,0,3,0,15,240,0,7, + 0,7,240,0,15,0,7,248,0,31,128,15,252,0,255,240, + 255,255,128,45,34,204,48,1,0,0,0,127,255,255,240,0, + 0,31,248,7,240,0,0,15,248,1,240,0,0,15,248,0, + 240,0,0,31,248,0,240,0,0,27,248,0,112,0,0,59, + 248,0,112,0,0,51,248,0,48,0,0,115,248,0,48,0, + 0,99,248,12,48,0,0,227,248,12,16,0,0,195,248,12, + 0,0,1,195,248,28,0,0,1,131,248,28,0,0,3,131, + 248,60,0,0,3,3,248,124,0,0,7,3,255,252,0,0, + 6,3,248,124,0,0,14,3,248,60,0,0,12,3,248,28, + 0,0,28,3,248,28,0,0,24,3,248,12,24,0,56,3, + 248,12,24,0,63,255,248,12,24,0,96,3,248,0,56,0, + 224,3,248,0,56,0,192,3,248,0,56,1,192,3,248,0, + 120,1,128,3,248,0,120,3,128,3,248,0,248,7,128,3, + 248,1,248,15,128,3,248,3,248,255,248,127,255,255,248,255, + 248,127,255,255,248,26,45,180,31,3,246,0,127,193,128,1, + 224,241,128,3,192,63,128,7,128,31,128,15,128,15,128,31, + 0,15,128,63,0,7,128,63,0,7,128,63,0,3,128,127, + 0,3,128,127,0,1,128,127,0,1,128,255,0,1,128,255, + 0,1,128,255,0,1,128,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,192,127,0,0,192,127,0,0,192,127,0,0,128,63, + 0,0,128,63,0,1,128,63,0,1,128,31,128,3,0,15, + 128,3,0,7,128,6,0,3,192,12,0,1,224,56,0,0, + 127,224,0,0,12,0,0,0,8,0,0,0,30,0,0,0, + 31,128,0,0,3,192,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,129,192,0,0,199,192,0,0,63,0,0,27, + 45,180,33,3,0,0,224,0,0,1,240,0,0,1,240,0, + 0,0,248,0,0,0,124,0,0,0,60,0,0,0,14,0, + 0,0,6,0,0,0,2,0,0,0,0,0,0,0,0,0, + 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, + 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, + 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, + 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, + 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, + 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, + 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, + 224,255,255,255,224,255,255,255,224,27,45,180,33,3,0,0, + 0,56,0,0,0,120,0,0,0,248,0,0,0,248,0,0, + 1,240,0,0,3,192,0,0,3,128,0,0,6,0,0,0, + 4,0,0,0,0,0,0,0,0,0,0,255,255,255,224,15, + 224,31,224,15,224,7,224,15,224,3,224,15,224,1,224,15, + 224,1,224,15,224,0,224,15,224,0,224,15,224,0,96,15, + 224,48,96,15,224,48,96,15,224,48,0,15,224,112,0,15, + 224,112,0,15,224,240,0,15,225,240,0,15,255,240,0,15, + 225,240,0,15,224,240,0,15,224,112,0,15,224,112,32,15, + 224,48,96,15,224,48,96,15,224,48,96,15,224,0,96,15, + 224,0,224,15,224,0,224,15,224,0,224,15,224,1,224,15, + 224,3,224,15,224,3,224,15,224,15,224,255,255,255,224,255, + 255,255,224,27,44,176,33,3,0,0,6,0,0,0,15,0, + 0,0,15,128,0,0,31,192,0,0,57,224,0,0,240,112, + 0,3,192,28,0,0,0,4,0,0,0,0,0,0,0,0, + 0,255,255,255,224,15,224,31,224,15,224,7,224,15,224,3, + 224,15,224,1,224,15,224,1,224,15,224,0,224,15,224,0, + 224,15,224,0,96,15,224,48,96,15,224,48,96,15,224,48, + 0,15,224,112,0,15,224,112,0,15,224,240,0,15,225,240, + 0,15,255,240,0,15,225,240,0,15,224,240,0,15,224,112, + 0,15,224,112,32,15,224,48,96,15,224,48,96,15,224,48, + 96,15,224,0,96,15,224,0,96,15,224,0,224,15,224,0, + 224,15,224,1,224,15,224,3,224,15,224,3,224,15,224,15, + 224,255,255,255,224,255,255,255,224,27,43,172,33,3,0,1, + 224,120,0,3,240,252,0,3,240,252,0,3,240,252,0,3, + 240,252,0,1,224,120,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,255,224,15,224,31,224,15,224,7,224,15, + 224,3,224,15,224,1,224,15,224,1,224,15,224,0,224,15, + 224,0,224,15,224,0,224,15,224,48,96,15,224,48,96,15, + 224,48,0,15,224,112,0,15,224,112,0,15,224,240,0,15, + 225,240,0,15,255,240,0,15,225,240,0,15,224,240,0,15, + 224,112,0,15,224,112,96,15,224,48,96,15,224,48,96,15, + 224,48,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,0,224,15,224,1,224,15,224,3,224,15,224,3,224,15, + 224,15,224,255,255,255,224,255,255,255,224,16,45,90,21,3, + 0,56,0,124,0,124,0,62,0,31,0,15,0,3,128,1, + 192,0,0,0,0,0,0,255,255,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,255,255,16,45,90,21,3, + 0,0,14,0,30,0,62,0,60,0,120,0,240,0,224,1, + 192,0,0,0,0,0,0,255,255,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,255,255,16,44,88,21,3, + 0,1,192,3,192,3,224,7,240,31,120,60,28,240,7,0, + 1,0,0,0,0,255,255,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,255,255,255,255,16,43,86,21,3,0,120, + 30,252,63,252,63,252,63,252,63,120,30,0,0,0,0,0, + 0,255,255,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,255,255,32,34,136,37,3,0,255,255,248,0,7, + 240,31,0,7,240,7,128,7,240,3,224,7,240,1,240,7, + 240,1,240,7,240,0,248,7,240,0,252,7,240,0,252,7, + 240,0,254,7,240,0,254,7,240,0,254,7,240,0,255,7, + 240,0,255,7,240,0,255,7,240,0,255,255,255,0,255,7, + 240,0,255,7,240,0,255,7,240,0,255,7,240,0,255,7, + 240,0,254,7,240,0,254,7,240,0,254,7,240,0,254,7, + 240,0,252,7,240,0,252,7,240,0,248,7,240,1,240,7, + 240,1,224,7,240,3,192,7,240,7,128,7,240,31,0,255, + 255,248,0,34,44,220,37,2,255,0,7,128,128,0,0,15, + 241,128,0,0,31,255,0,0,0,16,255,0,0,0,16,60, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,224,15,255,192,31,240,3,255,0, + 15,240,0,252,0,15,248,0,120,0,7,252,0,48,0,3, + 254,0,48,0,3,254,0,48,0,3,255,0,48,0,3,255, + 128,48,0,3,255,128,48,0,3,127,192,48,0,3,63,224, + 48,0,3,31,224,48,0,3,31,240,48,0,3,15,248,48, + 0,3,7,248,48,0,3,7,252,48,0,3,3,254,48,0, + 3,1,255,48,0,3,1,255,48,0,3,0,255,176,0,3, + 0,127,240,0,3,0,127,240,0,3,0,63,240,0,3,0, + 31,240,0,3,0,15,240,0,3,0,15,240,0,3,0,7, + 240,0,3,0,3,240,0,3,0,3,240,0,7,128,1,240, + 0,15,192,0,240,0,63,240,0,240,0,255,252,0,112,0, + 0,0,0,48,0,28,45,180,33,3,0,0,192,0,0,1, + 224,0,0,1,240,0,0,0,248,0,0,0,120,0,0,0, + 60,0,0,0,28,0,0,0,6,0,0,0,2,0,0,0, + 0,0,0,0,0,0,0,0,63,192,0,0,224,112,0,3, + 192,56,0,7,128,30,0,15,128,30,0,15,0,15,0,31, + 0,15,128,63,0,15,192,63,0,15,192,127,0,15,192,127, + 0,15,224,127,0,15,224,127,0,15,224,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,127,0,15,224,127, + 0,15,224,127,0,15,224,127,0,15,192,63,0,15,192,63, + 0,15,192,31,0,15,128,15,0,15,0,15,128,31,0,7, + 128,30,0,3,192,60,0,0,224,112,0,0,63,192,0,28, + 45,180,33,3,0,0,0,48,0,0,0,120,0,0,0,248, + 0,0,1,240,0,0,1,224,0,0,3,192,0,0,3,128, + 0,0,6,0,0,0,4,0,0,0,0,0,0,0,0,0, + 0,0,63,192,0,0,224,112,0,3,192,56,0,7,128,30, + 0,15,128,30,0,15,0,15,0,31,0,15,128,63,0,15, + 192,63,0,15,192,127,0,15,192,127,0,15,224,127,0,15, + 224,127,0,15,224,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,127,0,15,224,127,0,15,224,127,0,15, + 224,127,0,15,192,63,0,15,192,63,0,15,192,31,0,15, + 128,15,0,15,0,15,128,31,0,7,128,30,0,3,192,60, + 0,0,224,112,0,0,63,192,0,28,45,180,33,3,0,0, + 6,0,0,0,14,0,0,0,15,0,0,0,31,128,0,0, + 63,192,0,0,121,224,0,0,240,240,0,3,192,60,0,3, + 0,12,0,0,0,0,0,0,0,0,0,0,63,192,0,0, + 224,112,0,3,192,56,0,7,128,30,0,15,128,30,0,15, + 0,15,0,31,0,15,128,63,0,15,192,63,0,15,192,127, + 0,15,192,127,0,15,224,127,0,15,224,127,0,15,224,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,127, + 0,15,224,127,0,15,224,127,0,15,224,127,0,15,192,63, + 0,15,192,63,0,15,192,31,0,15,128,15,0,15,0,15, + 128,31,0,7,128,30,0,3,192,60,0,0,224,112,0,0, + 63,192,0,28,44,176,33,3,0,0,0,8,0,0,126,24, + 0,0,255,248,0,1,255,240,0,1,7,224,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,63,192,0,0,224,112,0,3,192,56,0,7,128,30, + 0,15,128,30,0,15,0,15,0,31,0,15,128,63,0,15, + 192,63,0,15,192,127,0,15,192,127,0,15,224,127,0,15, + 224,127,0,15,224,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,255,0,15,240,255,0,15,240,255,0,15, + 240,255,0,15,240,127,0,15,224,127,0,15,224,127,0,15, + 224,127,0,15,192,63,0,15,192,63,0,15,192,31,0,15, + 128,15,0,15,0,15,128,31,0,7,128,30,0,3,192,60, + 0,0,224,112,0,0,63,192,0,28,44,176,33,3,0,1, + 224,120,0,3,240,252,0,3,240,252,0,3,240,252,0,3, + 240,252,0,1,224,120,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,63,192,0,0,224,112,0,3, + 192,56,0,7,128,30,0,15,128,30,0,15,0,15,0,31, + 0,15,128,63,0,15,192,63,0,15,192,127,0,15,192,127, + 0,15,224,127,0,15,224,127,0,15,224,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,255,0,15,240,255, + 0,15,240,255,0,15,240,255,0,15,240,127,0,15,224,127, + 0,15,224,127,0,15,224,127,0,15,192,63,0,15,192,63, + 0,15,192,31,0,15,128,15,0,15,0,15,128,31,0,7, + 128,30,0,3,192,60,0,0,224,112,0,0,63,192,0,31, + 30,120,45,7,253,32,0,0,0,112,0,0,12,248,0,0, + 30,124,0,0,60,62,0,0,120,31,0,1,240,15,128,3, + 224,7,192,7,192,3,224,15,128,1,240,31,0,0,248,62, + 0,0,124,124,0,0,62,248,0,0,31,240,0,0,15,224, + 0,0,7,192,0,0,15,224,0,0,31,240,0,0,62,248, + 0,0,124,60,0,0,248,30,0,1,240,15,0,3,224,7, + 128,7,192,3,192,15,128,1,224,31,0,0,240,62,0,0, + 120,124,0,0,60,248,0,0,30,112,0,0,12,28,34,136, + 33,3,1,0,63,224,48,0,224,112,96,1,192,60,192,7, + 128,31,192,15,128,31,128,15,0,15,0,31,0,15,128,63, + 0,15,192,63,0,31,192,63,0,31,224,127,0,63,224,127, + 0,111,224,127,0,239,224,255,0,207,240,255,1,143,240,255, + 3,15,240,255,7,15,240,255,14,15,240,255,12,15,240,255, + 24,15,240,255,48,15,240,255,112,15,224,127,96,15,224,127, + 192,15,224,127,128,15,192,63,128,15,192,63,0,15,192,31, + 0,15,128,15,0,15,0,31,128,30,0,63,128,30,0,51, + 192,56,0,96,224,112,0,192,127,192,0,33,45,225,38,3, + 0,0,24,0,0,0,0,60,0,0,0,0,62,0,0,0, + 0,31,0,0,0,0,15,128,0,0,0,7,128,0,0,0, + 1,192,0,0,0,0,224,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,33,45,225,38,3,0,0,0,7,0,0,0,0,15, + 0,0,0,0,15,0,0,0,0,31,0,0,0,0,60,0, + 0,0,0,56,0,0,0,0,112,0,0,0,0,224,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,7,255,128,15,224,1,254,0,15,224,0,120,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,7,224,0,48,0,7,224,0,96,0,7,240,0,96,0, + 3,240,0,192,0,1,248,1,192,0,0,252,3,128,0,0, + 127,159,0,0,0,31,252,0,0,33,45,225,38,3,0,0, + 0,64,0,0,0,0,224,0,0,0,1,240,0,0,0,3, + 240,0,0,0,7,248,0,0,0,15,28,0,0,0,30,15, + 0,0,0,112,3,128,0,0,0,0,128,0,0,0,0,0, + 0,0,0,0,0,0,255,255,7,255,128,15,224,1,254,0, + 15,224,0,120,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,7,224,0,48,0,7,224,0, + 96,0,7,240,0,96,0,3,240,0,192,0,1,248,1,192, + 0,0,252,3,128,0,0,127,159,0,0,0,31,252,0,0, + 33,44,220,38,3,0,0,60,15,0,0,0,126,31,128,0, + 0,126,31,128,0,0,126,31,128,0,0,126,31,128,0,0, + 60,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,254,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,32,45,180,35,2,0,0,0,7,0,0,0,15,0, + 0,0,31,0,0,0,31,0,0,0,60,0,0,0,120,0, + 0,0,112,0,0,0,192,0,0,0,128,0,0,0,0,0, + 0,0,0,0,255,254,15,255,31,248,1,248,15,248,0,240, + 7,248,0,224,7,248,0,192,3,252,0,192,3,252,0,192, + 1,252,1,128,1,254,1,128,0,254,3,0,0,255,3,0, + 0,255,3,0,0,127,134,0,0,127,134,0,0,63,196,0, + 0,63,204,0,0,31,204,0,0,31,248,0,0,15,248,0, + 0,15,248,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,255,255,0,29,34,136,34, + 3,0,255,255,128,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,255,248,0,7,240, + 63,0,7,240,15,192,7,240,15,224,7,240,15,240,7,240, + 7,240,7,240,7,248,7,240,7,248,7,240,7,248,7,240, + 7,248,7,240,7,248,7,240,7,248,7,240,7,240,7,240, + 15,240,7,240,15,224,7,240,15,192,7,240,31,0,7,255, + 252,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,7,240,0,0,7,240,0,0,7,240, + 0,0,7,240,0,0,255,255,128,0,23,34,102,27,2,0, + 0,127,0,1,227,128,3,195,224,7,193,224,7,193,240,15, + 129,240,15,129,240,15,129,240,31,129,240,31,129,224,31,129, + 224,31,129,192,31,131,128,31,188,0,31,131,0,31,129,192, + 31,128,240,31,128,248,31,128,248,31,128,124,31,128,124,31, + 128,126,31,128,126,31,128,126,31,128,126,31,128,126,31,128, + 126,31,184,126,31,252,124,31,252,124,31,248,252,31,248,248, + 31,184,240,255,159,224,21,34,102,24,2,0,24,0,0,60, + 0,0,62,0,0,30,0,0,15,0,0,7,128,0,3,128, + 0,1,192,0,0,192,0,0,0,0,0,0,0,0,0,0, + 15,248,0,24,62,0,56,63,0,120,31,0,124,31,128,126, + 31,128,126,31,128,60,31,128,0,127,128,3,223,128,15,31, + 128,30,31,128,62,31,128,124,31,128,252,31,128,252,31,128, + 252,31,136,252,31,136,252,31,152,254,63,144,127,127,240,63, + 143,224,21,34,102,24,2,0,0,12,0,0,30,0,0,62, + 0,0,62,0,0,124,0,0,120,0,0,224,0,0,192,0, + 1,128,0,0,0,0,0,0,0,0,0,0,15,248,0,24, + 62,0,56,63,0,120,31,0,124,31,128,126,31,128,126,31, + 128,62,31,128,8,63,128,1,255,128,7,159,128,30,31,128, + 62,31,128,124,31,128,124,31,128,252,31,128,252,31,136,252, + 31,136,252,31,152,254,63,144,127,127,240,63,143,224,21,34, + 102,24,2,0,1,192,0,1,224,0,3,224,0,3,224,0, + 7,240,0,7,56,0,14,28,0,28,14,0,48,7,0,0, + 0,0,0,0,0,0,0,0,15,248,0,24,62,0,56,63, + 0,120,31,0,124,31,128,126,31,128,126,31,128,62,31,128, + 8,63,128,1,255,128,7,159,128,30,31,128,62,31,128,124, + 31,128,124,31,128,252,31,128,252,31,136,252,31,136,252,31, + 152,254,63,144,127,127,240,63,143,224,21,32,96,24,2,0, + 15,3,0,31,195,0,63,254,0,49,252,0,32,120,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248, + 0,24,62,0,56,63,0,120,31,0,124,31,128,126,31,128, + 126,31,128,62,31,128,8,63,128,1,255,128,7,159,128,30, + 31,128,62,31,128,124,31,128,124,31,128,252,31,128,252,31, + 136,252,31,136,252,31,152,254,63,144,127,127,240,63,143,224, + 21,32,96,24,2,0,60,30,0,126,63,0,126,63,0,126, + 63,0,126,63,0,60,30,0,0,0,0,0,0,0,0,0, + 0,0,0,0,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,21,34,102,24,2,1,3,240,0,7, + 248,0,14,28,0,12,12,0,12,12,0,12,12,0,14,28, + 0,7,248,0,1,224,0,0,0,0,0,0,0,0,0,0, + 15,248,0,24,62,0,56,63,0,120,31,0,124,31,128,126, + 31,128,126,31,128,62,31,128,8,63,128,1,255,128,7,31, + 128,30,31,128,62,31,128,124,31,128,124,31,128,252,31,128, + 252,31,136,252,31,136,252,31,152,254,63,144,127,111,240,63, + 199,224,29,22,88,34,2,1,15,240,255,128,24,63,195,192, + 56,63,195,224,120,31,131,240,124,31,129,240,126,31,129,240, + 126,31,129,248,62,31,129,248,0,63,129,248,1,255,129,248, + 7,31,255,248,30,31,128,0,62,31,128,0,124,31,128,0, + 124,31,128,8,252,31,128,8,252,31,128,24,252,31,192,16, + 252,31,192,16,254,51,192,32,127,97,240,64,63,192,255,128, + 18,32,96,22,2,247,3,252,0,15,6,0,31,7,0,62, + 7,128,62,7,128,126,15,128,124,31,128,252,31,128,252,31, + 0,252,14,0,252,0,0,252,0,0,252,0,0,252,0,0, + 252,0,0,124,0,64,124,0,192,62,0,128,62,1,128,30, + 1,0,15,130,0,3,252,0,0,128,0,0,128,0,1,128, + 0,0,240,0,0,56,0,0,60,0,0,60,0,0,60,0, + 4,120,0,3,240,0,18,34,102,23,2,0,28,0,0,30, + 0,0,30,0,0,31,0,0,15,128,0,7,128,0,3,192, + 0,0,192,0,0,96,0,0,0,0,0,0,0,0,0,0, + 3,252,0,14,30,0,30,31,0,62,15,128,60,15,128,124, + 15,128,124,15,192,252,15,192,252,15,192,252,15,192,255,255, + 192,252,0,0,252,0,0,252,0,0,252,0,64,124,0,64, + 124,0,192,62,0,192,62,1,128,31,1,0,15,135,0,3, + 252,0,18,34,102,23,2,0,0,14,0,0,31,0,0,31, + 0,0,62,0,0,60,0,0,120,0,0,240,0,0,224,0, + 1,128,0,0,0,0,0,0,0,0,0,0,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,23,2,0,1,224,0,1,224,0,1,240,0,3,240,0, + 3,248,0,7,56,0,14,28,0,28,14,0,56,3,0,0, + 0,0,0,0,0,0,0,0,3,252,0,14,30,0,30,31, + 0,62,15,128,60,15,128,124,15,128,124,15,192,252,15,192, + 252,15,192,252,15,192,255,255,192,252,0,0,252,0,0,252, + 0,0,252,0,64,124,0,64,124,0,192,62,0,192,62,0, + 128,31,1,0,15,131,0,3,252,0,18,32,96,23,2,0, + 30,15,0,63,31,128,63,31,128,63,31,128,63,31,128,30, + 15,0,0,0,0,0,0,0,0,0,0,0,0,0,3,252, + 0,14,30,0,30,31,0,62,15,128,60,15,128,124,15,128, + 124,15,192,252,15,192,252,15,192,252,15,192,255,255,192,252, + 0,0,252,0,0,252,0,0,252,0,64,124,0,64,124,0, + 192,62,0,192,62,0,128,31,1,0,15,131,0,3,252,0, + 12,34,68,15,1,0,96,0,240,0,248,0,248,0,124,0, + 28,0,14,0,7,0,3,0,0,0,0,0,0,0,127,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,31,128,31,128,31,128,31,128, + 31,128,31,128,31,128,31,128,127,240,12,34,68,15,2,0, + 0,224,1,240,1,240,3,224,7,192,7,128,15,0,28,0, + 24,0,0,0,0,0,0,0,255,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0, + 63,0,255,224,14,34,68,14,0,0,7,128,15,128,15,128, + 15,192,31,224,60,224,56,112,112,60,192,12,0,0,0,0, + 0,0,63,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,63,248,14,32, + 64,14,1,0,120,120,252,252,252,252,252,252,252,252,120,120, + 0,0,0,0,0,0,0,0,63,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,15,192,15,192,15,192,15,192,15,192,15,192,15,192, + 15,192,63,248,20,34,102,24,2,0,15,193,128,15,227,0, + 7,254,0,3,248,0,1,248,0,1,252,0,3,254,0,14, + 126,0,24,63,0,0,63,128,0,31,128,0,15,192,7,255, + 192,15,15,224,30,7,224,62,7,224,62,7,224,124,7,240, + 124,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,124,3,224,124,7, + 224,62,7,192,62,7,192,30,7,128,15,15,0,3,252,0, + 23,32,96,27,2,0,3,224,96,7,248,64,15,255,192,12, + 127,128,8,15,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,31,192,63,35,224,63,65,240,63,65,248, + 63,129,248,63,129,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,63,1, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,255,199,254,20,34,102,24,2,0,14,0,0,31, + 0,0,31,0,0,15,128,0,7,192,0,3,192,0,1,224, + 0,0,96,0,0,48,0,0,0,0,0,0,0,0,0,0, + 3,252,0,15,15,0,30,7,128,62,7,192,62,7,192,124, + 3,224,124,3,224,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,252,3,240,252,3,240,252,3,240,124,3,224, + 124,3,224,62,7,192,62,7,192,30,7,128,15,15,0,3, + 252,0,20,34,102,24,2,0,0,7,0,0,15,128,0,15, + 128,0,31,0,0,62,0,0,60,0,0,120,0,0,224,0, + 0,192,0,0,0,0,0,0,0,0,0,0,3,252,0,15, + 15,0,30,7,128,62,7,192,62,7,192,124,3,224,124,3, + 224,252,3,240,252,3,240,252,3,240,252,3,240,252,3,240, + 252,3,240,252,3,240,252,3,240,124,3,224,124,3,224,62, + 7,192,62,7,192,30,7,128,15,15,0,3,252,0,20,34, + 102,24,2,0,0,240,0,0,240,0,1,248,0,1,248,0, + 3,252,0,3,156,0,7,14,0,14,7,0,24,1,128,0, + 0,0,0,0,0,0,0,0,3,252,0,15,15,0,30,7, + 128,62,7,192,62,7,192,124,3,224,124,3,224,252,3,240, + 252,3,240,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,124,3,224,124,3,224,62,7,192,62,7, + 192,30,7,128,15,15,0,3,252,0,20,32,96,24,2,0, + 7,192,128,15,240,128,31,255,128,16,255,0,16,62,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,252, + 0,15,15,0,30,7,128,62,7,192,62,7,192,124,3,224, + 124,3,224,252,3,240,252,3,240,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,124,3,224,124,3, + 224,62,7,192,62,7,192,30,7,128,15,15,0,3,252,0, + 20,32,96,24,2,0,30,15,0,63,31,128,63,31,128,63, + 31,128,63,31,128,30,15,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,252,0,15,15,0,30,7,128,62,7,192, + 62,7,192,124,3,224,124,3,224,252,3,240,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,124,3,224,124,3,224,62,7,192,62,7,192,30,7,128, + 15,15,0,3,252,0,41,32,192,45,2,253,0,0,28,0, + 0,0,0,0,62,0,0,0,0,0,127,0,0,0,0,0, + 127,0,0,0,0,0,127,0,0,0,0,0,62,0,0,0, + 0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,28,0,0,0,0,0,62,0,0,0,0,0, + 127,0,0,0,0,0,127,0,0,0,0,0,127,0,0,0, + 0,0,62,0,0,0,0,0,28,0,0,0,20,22,66,24, + 2,1,3,252,48,15,15,96,30,15,192,62,7,192,62,7, + 192,124,7,224,124,7,224,252,15,240,252,27,240,252,51,240, + 252,115,240,252,227,240,252,195,240,253,131,240,255,3,240,126, + 3,224,126,3,224,62,7,192,62,7,192,63,7,128,111,15, + 0,195,252,0,24,34,102,26,1,0,7,0,0,7,128,0, + 7,192,0,7,192,0,3,224,0,1,224,0,0,112,0,0, + 48,0,0,24,0,0,0,0,0,0,0,0,0,0,255,143, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,131, + 248,31,131,248,31,133,248,15,133,248,15,201,248,7,241,255, + 24,34,102,26,1,0,0,3,128,0,3,128,0,7,128,0, + 15,128,0,15,0,0,30,0,0,28,0,0,56,0,0,48, + 0,0,0,0,0,0,0,0,0,0,255,143,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,131,248,31,131,248, + 31,133,248,15,133,248,15,201,248,7,241,255,24,34,102,26, + 1,0,0,56,0,0,120,0,0,124,0,0,252,0,0,254, + 0,1,206,0,3,135,0,7,3,128,14,0,192,0,0,0, + 0,0,0,0,0,0,255,143,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,131,248,31,131,248,31,133,248,15, + 133,248,15,201,248,7,241,255,24,32,96,26,1,0,7,131, + 192,15,199,224,15,199,224,15,199,224,15,199,224,7,131,192, + 0,0,0,0,0,0,0,0,0,0,0,0,255,135,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,129,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,131,248,31, + 131,248,31,133,248,15,133,248,15,201,248,7,241,255,23,45, + 135,25,1,245,0,1,192,0,1,224,0,3,224,0,7,192, + 0,7,128,0,15,0,0,14,0,0,28,0,0,24,0,0, + 0,0,0,0,0,0,0,0,255,241,254,63,192,120,31,128, + 48,15,192,32,15,192,32,15,192,96,7,224,64,7,224,64, + 3,240,192,3,240,128,1,248,128,1,249,128,0,249,0,0, + 253,0,0,253,0,0,126,0,0,126,0,0,62,0,0,60, + 0,0,28,0,0,28,0,0,12,0,0,8,0,0,8,0, + 0,8,0,15,16,0,31,16,0,63,144,0,63,32,0,62, + 32,0,62,64,0,31,192,0,15,0,0,22,44,132,25,1, + 244,3,128,0,15,128,0,63,128,0,255,128,0,223,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 135,240,31,159,248,31,177,248,31,160,252,31,192,252,31,192, + 252,31,192,252,31,128,252,31,128,252,31,128,248,31,129,248, + 31,129,240,31,129,240,31,129,224,31,131,192,31,131,128,31, + 135,128,31,134,0,31,140,0,31,152,0,31,224,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,30,0,0,120,0,0,224, + 0,0,128,0,0,23,44,132,25,1,245,3,193,224,7,227, + 240,7,227,240,7,227,240,7,227,240,3,193,224,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,241,254,63, + 192,120,31,128,48,15,192,32,15,192,32,15,192,96,7,224, + 64,7,224,64,3,240,192,3,240,128,1,240,128,1,249,128, + 0,249,0,0,253,0,0,253,0,0,126,0,0,126,0,0, + 62,0,0,60,0,0,28,0,0,28,0,0,12,0,0,8, + 0,0,8,0,0,8,0,15,16,0,31,16,0,63,144,0, + 63,32,0,62,32,0,62,64,0,31,192,0,15,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 34 + Calculated Max Values w=41 h=44 x= 6 y=13 dx=45 dy= 0 ascent=35 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x= 0 y=-9 dx= 0 dy= 0 + Pure Font ascent =34 descent= 0 + X Font ascent =34 descent= 0 + Max Font ascent =35 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35n[1539] U8G_SECTION(".progmem.u8g_font_osb35n") = { + 0,133,60,215,242,34,0,0,0,0,42,57,0,35,247,34, + 0,17,19,57,24,4,13,1,128,0,3,192,0,3,192,0, + 227,195,0,241,135,128,248,143,128,252,159,128,126,191,0,3, + 192,0,3,192,0,126,191,0,252,159,128,248,143,128,241,135, + 128,225,195,0,3,192,0,3,192,0,3,192,0,1,128,0, + 41,41,246,45,2,249,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,255,255,255,255,255,128,255,255, + 255,255,255,128,255,255,255,255,255,128,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,0,0,28,0, + 0,0,0,0,28,0,0,0,0,0,28,0,0,0,0,0, + 28,0,0,0,0,0,28,0,0,0,0,0,28,0,0,0, + 0,0,28,0,0,0,0,0,28,0,0,0,9,15,30,13, + 2,248,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,2,0,6,0,28,0,56,0,96,0, + 12,5,10,18,3,10,255,240,255,240,255,240,255,240,255,240, + 8,6,6,14,3,1,126,255,255,255,255,126,16,44,88,22, + 3,247,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,1,224,1,192,1,192,3,192,3,128, + 3,128,7,128,7,0,7,0,15,0,14,0,14,0,14,0, + 30,0,28,0,28,0,60,0,56,0,56,0,120,0,112,0, + 112,0,240,0,224,0,224,0,224,0,23,35,105,28,2,0, + 0,16,0,0,254,0,3,199,128,7,131,192,15,1,224,15, + 1,224,31,1,240,63,1,248,63,1,248,127,1,248,127,1, + 252,127,1,252,127,1,252,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,255,1,254,127,1,252,127,1,252,127,1,252,127,1, + 252,63,1,248,63,1,248,31,1,240,15,1,224,15,1,224, + 7,131,192,3,199,128,0,254,0,16,34,68,28,6,0,0, + 240,0,240,1,240,7,240,255,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,255, + 255,255,255,21,34,102,28,3,1,7,255,0,14,15,192,28, + 7,224,56,7,240,120,3,240,120,3,248,248,3,248,252,3, + 248,255,3,248,255,3,248,255,7,248,127,7,240,63,15,240, + 12,15,224,0,31,192,0,63,128,0,127,0,0,252,0,1, + 240,0,3,192,0,7,128,0,14,0,24,12,0,24,24,0, + 24,48,0,24,96,0,24,111,192,56,127,255,248,255,255,240, + 239,255,240,195,255,240,193,255,224,192,255,192,192,63,128,22, + 34,102,28,3,1,7,255,0,14,15,192,28,7,224,56,7, + 240,120,3,240,124,3,248,126,3,248,127,3,248,127,3,248, + 127,3,248,63,3,240,30,3,240,0,7,224,0,7,192,0, + 15,0,7,248,0,0,31,128,0,15,192,0,7,224,0,7, + 240,0,3,248,0,3,248,62,3,252,127,3,252,255,3,252, + 255,3,252,255,3,252,254,3,252,252,3,248,248,7,248,120, + 7,240,56,15,224,30,31,192,15,255,0,23,34,102,28,2, + 0,0,7,192,0,15,192,0,15,192,0,31,192,0,63,192, + 0,63,192,0,127,192,0,127,192,0,255,192,0,223,192,1, + 223,192,1,159,192,3,159,192,7,31,192,6,31,192,14,31, + 192,12,31,192,28,31,192,24,31,192,56,31,192,112,31,192, + 96,31,192,224,31,192,255,255,254,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,0,31, + 192,7,255,252,7,255,252,21,34,102,28,4,0,32,0,192, + 60,7,128,63,255,128,63,255,0,63,254,0,63,248,0,63, + 224,0,63,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,49,252,0,54,63,0,60,15,192,56,15,224, + 48,15,224,32,7,240,0,7,240,0,7,248,0,7,248,8, + 7,248,62,7,248,126,7,248,254,7,248,254,7,248,254,7, + 240,248,7,240,240,7,224,112,15,192,48,15,192,28,31,0, + 15,252,0,22,34,102,28,3,1,0,255,128,3,192,192,7, + 192,96,15,128,240,31,131,240,31,7,240,63,15,240,63,15, + 240,127,15,224,127,7,192,127,3,0,127,0,0,255,0,0, + 255,0,0,255,63,0,255,255,192,255,195,224,255,131,240,255, + 3,248,255,1,248,255,1,252,255,1,252,255,1,252,127,1, + 252,127,1,252,127,1,252,127,1,252,63,1,248,63,1,248, + 31,1,248,15,129,240,7,131,224,3,195,192,1,255,0,20, + 34,102,28,5,1,71,224,224,207,240,224,223,248,112,255,252, + 48,255,254,48,255,255,240,255,255,240,224,31,176,192,0,32, + 192,0,96,128,0,96,128,0,192,128,1,192,0,1,128,0, + 3,128,0,7,0,0,15,0,0,14,0,0,30,0,0,60, + 0,0,124,0,0,252,0,1,252,0,1,248,0,3,248,0, + 3,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,7,248,0,3,248,0,3,240,0,23,34,102,28,3, + 1,1,255,128,7,0,192,12,0,96,28,0,48,56,0,24, + 56,0,24,120,0,24,120,0,24,124,0,24,126,0,24,127, + 0,48,127,192,32,127,240,96,63,255,128,63,255,0,31,255, + 192,15,255,240,7,255,248,15,255,248,24,63,252,48,15,252, + 112,3,254,96,0,254,224,0,126,224,0,62,224,0,30,224, + 0,30,224,0,12,240,0,28,112,0,24,56,0,24,28,0, + 48,15,0,192,3,255,0,22,34,102,28,3,1,3,254,0, + 15,15,0,31,7,128,62,7,192,126,3,224,126,3,240,126, + 3,240,254,3,248,254,3,248,254,3,248,254,3,248,254,3, + 252,254,3,252,254,3,252,126,3,252,127,7,252,63,7,252, + 31,15,252,15,255,252,3,243,252,0,3,252,0,3,252,0, + 3,248,7,3,248,31,131,248,31,195,248,63,195,240,63,195, + 240,63,131,224,62,7,224,60,7,192,28,15,128,14,31,0, + 7,252,0}; +/* + Fontname: -FreeType-Old Standard TT-Bold-R-Normal--48-480-72-72-P-258-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 6 y=25 dx=52 dy= 0 ascent=38 len=246 + Font Bounding box w=133 h=60 x=-41 y=-14 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =35 descent=-10 + Max Font ascent =38 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osb35r[10245] U8G_SECTION(".progmem.u8g_font_osb35r") = { + 0,133,60,215,242,35,12,218,29,222,32,127,246,38,245,35, + 246,0,0,0,13,0,0,8,34,34,14,3,1,126,126,255, + 255,255,255,255,255,126,126,126,126,60,60,60,60,60,24,24, + 24,24,24,24,24,24,0,0,0,126,255,255,255,255,126,12, + 12,24,18,3,23,32,64,241,224,249,240,249,240,249,240,249, + 240,249,240,112,224,112,224,112,224,112,224,112,224,28,34,136, + 34,3,0,0,112,14,0,0,112,14,0,0,112,14,0,0, + 112,14,0,0,240,30,0,0,224,28,0,0,224,28,0,0, + 224,28,0,0,224,28,0,255,255,255,240,255,255,255,240,255, + 255,255,240,1,192,56,0,1,192,56,0,1,192,56,0,1, + 192,56,0,3,192,56,0,3,128,120,0,3,128,112,0,3, + 128,112,0,3,128,112,0,3,128,112,0,255,255,255,224,255, + 255,255,224,255,255,255,224,7,0,224,0,7,0,224,0,7, + 0,224,0,7,0,224,0,15,1,224,0,14,1,224,0,14, + 1,192,0,14,1,192,0,14,1,192,0,23,42,126,28,2, + 252,0,195,0,0,195,0,0,195,0,0,195,0,3,255,192, + 7,195,112,28,195,24,60,195,12,56,195,14,120,195,14,120, + 195,30,120,195,62,124,195,126,126,195,126,127,195,124,127,195, + 56,63,243,0,63,251,0,31,255,0,31,255,128,7,255,192, + 3,255,240,0,255,248,0,255,248,0,223,252,0,199,252,124, + 195,254,124,195,254,252,195,126,252,195,62,248,195,30,240,195, + 30,224,195,28,96,195,28,112,195,56,56,195,56,28,195,96, + 7,255,192,0,195,0,0,195,0,0,195,0,0,195,0,33, + 35,175,41,4,0,0,0,0,48,0,15,192,0,96,0,60, + 240,0,224,0,56,112,0,192,0,120,120,1,128,0,120,120, + 1,128,0,248,124,3,0,0,248,124,7,0,0,248,124,6, + 0,0,248,124,14,0,0,248,124,12,0,0,248,124,24,0, + 0,120,120,24,0,0,120,120,48,0,0,56,240,112,0,0, + 28,224,96,0,0,15,192,192,0,0,0,0,192,0,0,0, + 1,128,240,0,0,3,131,156,0,0,3,7,158,0,0,7, + 15,15,0,0,6,15,15,0,0,12,31,15,128,0,12,31, + 15,128,0,24,31,15,128,0,56,31,15,128,0,48,31,15, + 128,0,96,31,15,128,0,96,31,15,128,0,192,15,15,0, + 1,192,15,15,0,1,128,7,14,0,3,128,7,158,0,3, + 0,1,248,0,33,34,170,37,2,1,0,31,224,0,0,0, + 112,112,0,0,0,224,48,0,0,0,224,24,0,0,1,224, + 24,0,0,1,224,24,0,0,1,224,24,0,0,1,240,56, + 0,0,1,240,48,0,0,1,248,96,0,0,1,248,192,0, + 0,0,255,128,0,0,0,255,0,0,0,0,126,0,0,0, + 0,63,0,0,0,0,255,129,255,128,1,223,128,62,0,3, + 143,192,28,0,7,15,224,24,0,14,7,224,56,0,30,3, + 240,48,0,60,1,248,48,0,124,1,248,96,0,124,0,252, + 96,0,252,0,126,192,0,252,0,127,128,0,252,0,63,128, + 0,254,0,31,128,0,255,0,31,128,0,255,0,15,193,128, + 127,192,63,225,0,63,248,247,243,0,31,255,195,254,0,15, + 254,0,252,0,5,12,12,11,3,23,32,240,248,248,248,248, + 248,112,112,112,112,112,14,43,86,18,3,248,0,28,0,56, + 0,112,0,224,1,192,3,128,7,0,15,0,14,0,30,0, + 30,0,60,0,60,0,124,0,124,0,124,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 124,0,124,0,124,0,124,0,60,0,60,0,30,0,30,0, + 14,0,15,0,7,0,3,128,1,192,0,224,0,112,0,56, + 0,12,13,43,86,17,1,248,192,0,224,0,48,0,24,0, + 28,0,14,0,7,0,7,128,3,128,3,192,1,224,1,224, + 1,224,1,240,1,240,1,240,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,240, + 1,240,1,240,1,224,1,224,3,192,3,192,3,128,7,128, + 7,0,14,0,28,0,56,0,112,0,224,0,128,0,17,19, + 57,24,4,13,1,128,0,3,192,0,3,192,0,227,195,0, + 241,135,128,248,143,128,252,159,128,126,191,0,3,192,0,3, + 192,0,126,191,0,252,159,128,248,143,128,241,135,128,225,195, + 0,3,192,0,3,192,0,3,192,0,1,128,0,41,41,246, + 45,2,249,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,255,255,255,255,255,128,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,0,0,28,0,0,0,0, + 0,28,0,0,0,0,0,28,0,0,0,0,0,28,0,0, + 0,0,0,28,0,0,0,0,0,28,0,0,0,0,0,28, + 0,0,0,0,0,28,0,0,0,9,15,30,13,2,248,126, + 0,255,0,255,128,255,128,255,128,127,128,1,128,1,128,1, + 128,3,0,2,0,6,0,28,0,56,0,96,0,12,5,10, + 18,3,10,255,240,255,240,255,240,255,240,255,240,8,6,6, + 14,3,1,126,255,255,255,255,126,16,44,88,22,3,247,0, + 7,0,15,0,14,0,14,0,14,0,30,0,28,0,28,0, + 60,0,56,0,56,0,120,0,112,0,112,0,240,0,224,0, + 224,0,224,1,224,1,192,1,192,3,192,3,128,3,128,7, + 128,7,0,7,0,15,0,14,0,14,0,14,0,30,0,28, + 0,28,0,60,0,56,0,56,0,120,0,112,0,112,0,240, + 0,224,0,224,0,224,0,23,35,105,28,2,0,0,16,0, + 0,254,0,3,199,128,7,131,192,15,1,224,15,1,224,31, + 1,240,63,1,248,63,1,248,127,1,248,127,1,252,127,1, + 252,127,1,252,255,1,254,255,1,254,255,1,254,255,1,254, + 255,1,254,255,1,254,255,1,254,255,1,254,255,1,254,255, + 1,254,127,1,252,127,1,252,127,1,252,127,1,252,63,1, + 248,63,1,248,31,1,240,15,1,224,15,1,224,7,131,192, + 3,199,128,0,254,0,16,34,68,28,6,0,0,240,0,240, + 1,240,7,240,255,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,7,240,7,240, + 7,240,7,240,7,240,7,240,7,240,7,240,255,255,255,255, + 21,34,102,28,3,1,7,255,0,14,15,192,28,7,224,56, + 7,240,120,3,240,120,3,248,248,3,248,252,3,248,255,3, + 248,255,3,248,255,7,248,127,7,240,63,15,240,12,15,224, + 0,31,192,0,63,128,0,127,0,0,252,0,1,240,0,3, + 192,0,7,128,0,14,0,24,12,0,24,24,0,24,48,0, + 24,96,0,24,111,192,56,127,255,248,255,255,240,239,255,240, + 195,255,240,193,255,224,192,255,192,192,63,128,22,34,102,28, + 3,1,7,255,0,14,15,192,28,7,224,56,7,240,120,3, + 240,124,3,248,126,3,248,127,3,248,127,3,248,127,3,248, + 63,3,240,30,3,240,0,7,224,0,7,192,0,15,0,7, + 248,0,0,31,128,0,15,192,0,7,224,0,7,240,0,3, + 248,0,3,248,62,3,252,127,3,252,255,3,252,255,3,252, + 255,3,252,254,3,252,252,3,248,248,7,248,120,7,240,56, + 15,224,30,31,192,15,255,0,23,34,102,28,2,0,0,7, + 192,0,15,192,0,15,192,0,31,192,0,63,192,0,63,192, + 0,127,192,0,127,192,0,255,192,0,223,192,1,223,192,1, + 159,192,3,159,192,7,31,192,6,31,192,14,31,192,12,31, + 192,28,31,192,24,31,192,56,31,192,112,31,192,96,31,192, + 224,31,192,255,255,254,0,31,192,0,31,192,0,31,192,0, + 31,192,0,31,192,0,31,192,0,31,192,0,31,192,7,255, + 252,7,255,252,21,34,102,28,4,0,32,0,192,60,7,128, + 63,255,128,63,255,0,63,254,0,63,248,0,63,224,0,63, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 0,49,252,0,54,63,0,60,15,192,56,15,224,48,15,224, + 32,7,240,0,7,240,0,7,248,0,7,248,8,7,248,62, + 7,248,126,7,248,254,7,248,254,7,248,254,7,240,248,7, + 240,240,7,224,112,15,192,48,15,192,28,31,0,15,252,0, + 22,34,102,28,3,1,0,255,128,3,192,192,7,192,96,15, + 128,240,31,131,240,31,7,240,63,15,240,63,15,240,127,15, + 224,127,7,192,127,3,0,127,0,0,255,0,0,255,0,0, + 255,63,0,255,255,192,255,195,224,255,131,240,255,3,248,255, + 1,248,255,1,252,255,1,252,255,1,252,127,1,252,127,1, + 252,127,1,252,127,1,252,63,1,248,63,1,248,31,1,248, + 15,129,240,7,131,224,3,195,192,1,255,0,20,34,102,28, + 5,1,71,224,224,207,240,224,223,248,112,255,252,48,255,254, + 48,255,255,240,255,255,240,224,31,176,192,0,32,192,0,96, + 128,0,96,128,0,192,128,1,192,0,1,128,0,3,128,0, + 7,0,0,15,0,0,14,0,0,30,0,0,60,0,0,124, + 0,0,252,0,1,252,0,1,248,0,3,248,0,3,248,0, + 7,248,0,7,248,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,248,0,3,240,0,23,34,102,28,3,1,1,255, + 128,7,0,192,12,0,96,28,0,48,56,0,24,56,0,24, + 120,0,24,120,0,24,124,0,24,126,0,24,127,0,48,127, + 192,32,127,240,96,63,255,128,63,255,0,31,255,192,15,255, + 240,7,255,248,15,255,248,24,63,252,48,15,252,112,3,254, + 96,0,254,224,0,126,224,0,62,224,0,30,224,0,30,224, + 0,12,240,0,28,112,0,24,56,0,24,28,0,48,15,0, + 192,3,255,0,22,34,102,28,3,1,3,254,0,15,15,0, + 31,7,128,62,7,192,126,3,224,126,3,240,126,3,240,254, + 3,248,254,3,248,254,3,248,254,3,248,254,3,252,254,3, + 252,254,3,252,126,3,252,127,7,252,63,7,252,31,15,252, + 15,255,252,3,243,252,0,3,252,0,3,252,0,3,248,7, + 3,248,31,131,248,31,195,248,63,195,240,63,195,240,63,131, + 224,62,7,224,60,7,192,28,15,128,14,31,0,7,252,0, + 8,22,22,14,3,1,126,255,255,255,255,126,0,0,0,0, + 0,0,0,0,0,0,126,255,255,255,255,126,9,31,62,13, + 2,248,63,0,127,128,127,128,127,128,127,128,63,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,126,0,255,0,255,128,255,128,255,128,127,128,1,128, + 1,128,1,128,3,0,3,0,6,0,28,0,56,0,96,0, + 37,40,200,45,4,249,0,0,0,0,48,0,0,0,0,240, + 0,0,0,1,248,0,0,0,7,224,0,0,0,31,128,0, + 0,0,126,0,0,0,1,252,0,0,0,7,240,0,0,0, + 15,192,0,0,0,63,0,0,0,0,252,0,0,0,3,240, + 0,0,0,15,224,0,0,0,63,128,0,0,0,126,0,0, + 0,1,248,0,0,0,7,224,0,0,0,31,128,0,0,0, + 127,0,0,0,0,252,0,0,0,0,248,0,0,0,0,126, + 0,0,0,0,31,128,0,0,0,15,224,0,0,0,3,248, + 0,0,0,0,252,0,0,0,0,63,0,0,0,0,15,192, + 0,0,0,3,240,0,0,0,1,252,0,0,0,0,127,0, + 0,0,0,31,192,0,0,0,7,224,0,0,0,1,248,0, + 0,0,0,126,0,0,0,0,63,128,0,0,0,15,224,0, + 0,0,3,248,0,0,0,0,248,0,0,0,0,48,41,13, + 78,45,2,6,255,255,255,255,255,128,255,255,255,255,255,128, + 255,255,255,255,255,128,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,255,255,128,255,255,255,255,255,128,255,255,255,255, + 255,128,37,40,200,45,4,249,96,0,0,0,0,120,0,0, + 0,0,252,0,0,0,0,63,0,0,0,0,15,192,0,0, + 0,3,240,0,0,0,1,252,0,0,0,0,127,0,0,0, + 0,31,128,0,0,0,7,224,0,0,0,1,248,0,0,0, + 0,126,0,0,0,0,63,128,0,0,0,15,224,0,0,0, + 3,240,0,0,0,0,252,0,0,0,0,63,0,0,0,0, + 15,192,0,0,0,7,240,0,0,0,1,248,0,0,0,0, + 248,0,0,0,3,240,0,0,0,15,192,0,0,0,63,128, + 0,0,0,254,0,0,0,1,248,0,0,0,7,224,0,0, + 0,31,128,0,0,0,126,0,0,0,1,252,0,0,0,7, + 240,0,0,0,31,192,0,0,0,63,0,0,0,0,252,0, + 0,0,3,240,0,0,0,15,224,0,0,0,63,128,0,0, + 0,254,0,0,0,0,248,0,0,0,0,96,0,0,0,0, + 15,34,68,22,3,1,31,240,59,248,96,252,96,252,192,126, + 192,126,192,126,192,126,192,126,64,252,96,252,48,248,1,240, + 1,224,3,192,3,128,7,0,7,0,14,0,12,16,12,16, + 12,16,12,16,6,32,3,192,0,0,0,0,0,128,3,224, + 7,240,7,240,7,240,7,240,3,224,35,34,170,39,2,1, + 0,15,255,0,0,0,56,1,224,0,0,224,0,112,0,1, + 128,0,28,0,7,0,0,14,0,14,0,0,7,0,12,0, + 248,3,0,28,3,205,243,128,56,7,135,241,128,56,15,7, + 225,192,112,31,7,225,192,112,62,7,224,224,112,62,7,224, + 224,224,124,7,192,224,224,124,7,192,224,224,124,7,192,224, + 224,252,15,192,224,224,248,15,128,224,224,248,15,128,224,224, + 248,15,129,192,224,248,31,129,192,224,248,31,129,128,112,248, + 31,3,128,112,248,63,3,0,112,120,111,6,0,56,60,199, + 140,0,56,31,3,240,0,28,0,0,0,0,14,0,0,0, + 0,7,0,0,0,0,3,128,0,0,0,1,192,0,96,0, + 0,120,1,192,0,0,31,255,0,0,33,35,175,36,2,0, + 0,0,192,0,0,0,1,192,0,0,0,1,224,0,0,0, + 1,224,0,0,0,3,224,0,0,0,3,240,0,0,0,3, + 240,0,0,0,7,240,0,0,0,7,248,0,0,0,7,248, + 0,0,0,15,248,0,0,0,15,252,0,0,0,15,252,0, + 0,0,25,252,0,0,0,25,254,0,0,0,25,254,0,0, + 0,48,254,0,0,0,48,255,0,0,0,32,255,0,0,0, + 96,127,0,0,0,96,127,128,0,0,64,127,128,0,0,192, + 63,128,0,0,192,63,192,0,0,255,255,192,0,1,255,255, + 192,0,1,128,31,224,0,1,0,31,224,0,3,0,15,224, + 0,3,0,15,240,0,2,0,15,240,0,6,0,7,240,0, + 15,0,7,248,0,31,0,15,252,0,255,240,255,255,128,28, + 34,136,33,3,0,255,255,240,0,15,224,126,0,15,224,31, + 0,15,224,31,128,15,224,15,192,15,224,15,192,15,224,15, + 224,15,224,15,224,15,224,15,224,15,224,15,224,15,224,15, + 224,15,224,15,192,15,224,15,192,15,224,31,128,15,224,30, + 0,15,224,60,0,15,255,224,0,15,224,124,0,15,224,63, + 0,15,224,31,128,15,224,15,192,15,224,15,224,15,224,15, + 240,15,224,15,240,15,224,15,240,15,224,15,240,15,224,15, + 240,15,224,15,240,15,224,15,224,15,224,15,224,15,224,31, + 192,15,224,31,128,15,224,126,0,255,255,248,0,26,34,136, + 31,3,1,0,127,193,128,1,224,241,128,3,192,63,128,15, + 128,31,128,15,128,15,128,31,0,15,128,63,0,7,128,63, + 0,7,128,127,0,3,128,127,0,3,128,127,0,3,128,127, + 0,1,128,255,0,1,128,255,0,1,128,255,0,1,128,255, + 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255, + 0,0,0,255,0,0,0,255,0,0,192,127,0,0,192,127, + 0,0,192,127,0,0,128,63,0,1,128,63,0,1,128,63, + 0,1,128,31,128,3,0,15,128,3,0,7,128,6,0,3, + 192,12,0,1,224,56,0,0,127,224,0,32,34,136,37,3, + 0,255,255,248,0,15,224,31,0,15,224,7,128,15,224,3, + 224,15,224,1,240,15,224,1,240,15,224,0,248,15,224,0, + 252,15,224,0,252,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,255,15,224,0,255,15,224,0, + 255,15,224,0,255,15,224,0,254,15,224,0,254,15,224,0, + 254,15,224,0,254,15,224,0,252,15,224,0,252,15,224,0, + 248,15,224,1,240,15,224,1,224,15,224,3,192,15,224,7, + 128,15,224,30,0,255,255,248,0,27,34,136,33,3,0,255, + 255,255,224,15,224,31,224,15,224,7,224,15,224,3,224,15, + 224,1,224,15,224,1,224,15,224,0,224,15,224,0,224,15, + 224,0,96,15,224,48,96,15,224,48,96,15,224,48,0,15, + 224,112,0,15,224,112,0,15,224,240,0,15,225,240,0,15, + 255,240,0,15,225,240,0,15,224,240,0,15,224,112,0,15, + 224,112,32,15,224,48,96,15,224,48,96,15,224,48,96,15, + 224,0,96,15,224,0,96,15,224,0,224,15,224,0,224,15, + 224,1,224,15,224,3,224,15,224,3,224,15,224,15,224,255, + 255,255,224,255,255,255,224,28,34,136,32,3,0,255,255,255, + 240,7,240,15,240,7,240,3,240,7,240,1,240,7,240,1, + 240,7,240,0,240,7,240,0,240,7,240,0,112,7,240,0, + 112,7,240,24,48,7,240,24,48,7,240,24,48,7,240,56, + 48,7,240,56,0,7,240,120,0,7,240,248,0,7,255,248, + 0,7,240,248,0,7,240,120,0,7,240,56,0,7,240,56, + 0,7,240,24,0,7,240,24,0,7,240,24,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,128,0,30,34,136,35,3,1,0,127,224,192,0, + 224,120,192,3,192,31,192,7,128,15,192,15,128,7,192,31, + 0,7,192,31,0,3,192,63,0,3,192,63,0,1,192,127, + 0,1,192,127,0,1,192,127,0,0,192,255,0,0,192,255, + 0,0,192,255,0,0,0,255,0,0,0,255,0,0,0,255, + 3,255,252,255,3,255,252,255,0,31,192,255,0,31,192,255, + 0,31,192,127,0,31,192,127,0,31,192,127,0,31,192,127, + 0,31,192,63,0,31,192,63,0,31,192,31,0,31,192,15, + 128,57,192,15,128,49,192,7,192,96,192,1,224,192,192,0, + 127,128,192,34,34,170,39,3,0,255,255,63,255,192,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,255,255,252,0,7,240, + 1,252,0,7,240,1,252,0,7,240,1,252,0,7,240,1, + 252,0,7,240,1,252,0,7,240,1,252,0,7,240,1,252, + 0,7,240,1,252,0,7,240,1,252,0,7,240,1,252,0, + 7,240,1,252,0,7,240,1,252,0,7,240,1,252,0,7, + 240,1,252,0,7,240,1,252,0,7,240,1,252,0,255,255, + 63,255,192,16,34,68,21,3,0,255,255,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,7,240,7,240,7, + 240,7,240,7,240,7,240,7,240,7,240,255,255,23,34,102, + 26,2,0,1,255,254,0,15,224,0,15,224,0,15,224,0, + 15,224,0,15,224,0,15,224,0,15,224,0,15,224,0,15, + 224,0,15,224,0,15,224,0,15,224,0,15,224,0,15,224, + 0,15,224,0,15,224,0,15,224,0,15,224,0,15,224,0, + 15,224,30,15,224,126,15,224,127,15,224,255,15,224,255,15, + 224,254,15,224,254,15,224,248,15,192,112,15,192,96,15,128, + 48,31,0,24,30,0,15,248,0,33,34,170,37,3,0,255, + 255,31,254,0,7,240,7,240,0,7,240,3,192,0,7,240, + 3,128,0,7,240,3,0,0,7,240,7,0,0,7,240,14, + 0,0,7,240,12,0,0,7,240,24,0,0,7,240,48,0, + 0,7,240,96,0,0,7,240,224,0,0,7,240,224,0,0, + 7,241,240,0,0,7,243,240,0,0,7,247,248,0,0,7, + 255,252,0,0,7,255,252,0,0,7,249,254,0,0,7,241, + 254,0,0,7,240,255,0,0,7,240,255,0,0,7,240,127, + 128,0,7,240,127,128,0,7,240,63,192,0,7,240,63,192, + 0,7,240,31,224,0,7,240,31,224,0,7,240,15,240,0, + 7,240,15,240,0,7,240,7,248,0,7,240,7,248,0,7, + 240,7,252,0,255,255,63,255,128,28,34,136,32,3,0,255, + 255,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,0,7, + 240,0,0,7,240,0,0,7,240,0,0,7,240,0,48,7, + 240,0,48,7,240,0,48,7,240,0,112,7,240,0,112,7, + 240,0,112,7,240,0,240,7,240,0,240,7,240,0,240,7, + 240,1,240,7,240,3,240,7,240,3,240,7,240,7,240,255, + 255,255,240,255,255,255,240,39,34,170,43,2,0,255,240,0, + 63,254,7,240,0,63,192,7,248,0,63,192,7,248,0,63, + 192,7,248,0,127,192,7,252,0,127,192,7,252,0,95,192, + 7,252,0,95,192,7,254,0,223,192,6,254,0,223,192,6, + 255,0,159,192,6,127,0,159,192,6,127,1,159,192,6,127, + 129,159,192,6,63,129,31,192,6,63,129,31,192,6,63,195, + 31,192,6,31,194,31,192,6,31,226,31,192,6,15,226,31, + 192,6,15,230,31,192,6,15,244,31,192,6,7,244,31,192, + 6,7,244,31,192,6,7,252,31,192,6,3,248,31,192,6, + 3,248,31,192,6,1,248,31,192,6,1,248,31,192,6,1, + 240,31,192,6,0,240,31,192,15,0,240,31,192,63,192,240, + 31,192,255,240,97,255,254,34,35,175,37,2,255,255,224,15, + 255,192,31,240,3,255,0,15,240,0,252,0,15,248,0,120, + 0,7,252,0,48,0,3,254,0,48,0,3,254,0,48,0, + 3,255,0,48,0,3,255,128,48,0,3,255,128,48,0,3, + 127,192,48,0,3,63,224,48,0,3,31,224,48,0,3,31, + 240,48,0,3,15,248,48,0,3,7,248,48,0,3,7,252, + 48,0,3,3,254,48,0,3,1,255,48,0,3,1,255,48, + 0,3,0,255,176,0,3,0,127,240,0,3,0,127,240,0, + 3,0,63,240,0,3,0,31,240,0,3,0,15,240,0,3, + 0,15,240,0,3,0,7,240,0,3,0,3,240,0,3,0, + 3,240,0,7,128,1,240,0,15,192,0,240,0,63,240,0, + 240,0,255,252,0,112,0,0,0,0,48,0,28,34,136,33, + 3,1,0,63,192,0,0,224,112,0,3,192,56,0,7,128, + 30,0,15,128,30,0,15,0,15,0,31,0,15,128,63,0, + 15,192,63,0,15,192,127,0,15,192,127,0,15,224,127,0, + 15,224,127,0,15,224,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,127,0,15,192,63,0,15,192,63,0,15,192,31,0, + 15,128,15,0,15,0,15,128,31,0,7,128,30,0,3,192, + 60,0,0,224,112,0,0,63,192,0,29,34,136,34,3,0, + 255,255,248,0,7,240,63,0,7,240,15,192,7,240,15,224, + 7,240,15,240,7,240,7,240,7,240,7,248,7,240,7,248, + 7,240,7,248,7,240,7,248,7,240,7,248,7,240,7,248, + 7,240,7,240,7,240,15,240,7,240,15,224,7,240,15,192, + 7,240,31,0,7,255,252,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,7,240,0,0,7,240,0,0,7,240,0,0, + 7,240,0,0,255,255,128,0,28,45,180,33,3,246,0,63, + 192,0,0,224,112,0,3,192,56,0,7,128,30,0,15,128, + 30,0,15,0,15,0,31,0,15,128,63,0,15,128,63,0, + 15,192,127,0,15,192,127,0,15,224,127,0,15,224,127,0, + 15,224,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,255,0,15,240,255,0,15,240,255,0, + 15,240,255,0,15,240,127,0,15,224,127,0,15,224,127,0, + 15,224,63,0,15,192,63,15,15,192,31,17,143,128,15,160, + 223,0,15,160,223,0,7,160,254,0,3,224,252,16,0,240, + 248,16,0,127,224,16,0,0,224,16,0,0,224,16,0,0, + 224,48,0,0,240,48,0,0,248,112,0,0,255,240,0,0, + 255,224,0,0,127,224,0,0,127,192,0,0,63,128,0,0, + 31,0,32,36,144,36,3,254,255,255,240,0,7,240,126,0, + 7,240,63,0,7,240,63,128,7,240,31,192,7,240,31,192, + 7,240,31,224,7,240,31,224,7,240,31,224,7,240,31,224, + 7,240,31,224,7,240,31,192,7,240,63,192,7,240,63,0, + 7,240,126,0,7,255,240,0,7,240,240,0,7,240,62,0, + 7,240,63,0,7,240,31,128,7,240,31,128,7,240,31,192, + 7,240,31,192,7,240,31,192,7,240,31,192,7,240,31,195, + 7,240,31,195,7,240,31,195,7,240,31,195,7,240,31,195, + 7,240,31,198,7,240,31,198,7,240,15,238,255,255,135,252, + 0,0,3,248,0,0,0,96,23,34,102,29,4,1,7,252, + 24,24,15,24,56,3,248,112,1,248,112,0,248,240,0,120, + 248,0,120,248,0,56,252,0,24,254,0,24,255,128,24,255, + 224,8,127,240,0,127,252,0,63,254,0,31,255,128,15,255, + 192,3,255,240,1,255,248,128,127,248,192,31,252,192,15,252, + 192,3,254,224,1,254,224,0,126,224,0,62,240,0,30,248, + 0,30,248,0,28,252,0,28,254,0,24,239,0,48,195,128, + 96,193,255,128,29,34,136,34,3,0,255,255,255,248,255,63, + 231,248,252,31,193,248,248,31,192,248,248,31,192,248,240,31, + 192,120,224,31,192,56,224,31,192,56,224,31,192,56,192,31, + 192,24,192,31,192,24,192,31,192,24,192,31,192,24,128,31, + 192,8,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,0,31, + 192,0,0,31,192,0,0,31,192,0,0,31,192,0,3,255, + 254,0,33,34,170,38,3,0,255,255,7,255,128,15,224,1, + 254,0,15,224,0,120,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,15,224,0,48,0,15, + 224,0,48,0,15,224,0,48,0,15,224,0,48,0,15,224, + 0,48,0,15,224,0,48,0,15,224,0,48,0,15,224,0, + 48,0,15,224,0,48,0,15,224,0,48,0,15,224,0,48, + 0,15,224,0,48,0,15,224,0,48,0,15,224,0,48,0, + 15,224,0,48,0,15,224,0,48,0,7,224,0,48,0,7, + 224,0,96,0,7,240,0,96,0,3,240,0,192,0,1,248, + 1,192,0,0,252,3,128,0,0,127,159,0,0,0,31,252, + 0,0,34,34,170,37,2,0,255,255,135,255,192,15,248,0, + 126,0,7,248,0,56,0,7,248,0,56,0,3,248,0,48, + 0,3,252,0,48,0,3,252,0,48,0,1,254,0,96,0, + 1,254,0,96,0,0,254,0,96,0,0,255,0,192,0,0, + 255,0,192,0,0,127,0,192,0,0,127,129,128,0,0,127, + 129,128,0,0,63,129,128,0,0,63,195,0,0,0,63,195, + 0,0,0,31,195,0,0,0,31,230,0,0,0,15,230,0, + 0,0,15,246,0,0,0,15,252,0,0,0,7,252,0,0, + 0,7,252,0,0,0,7,248,0,0,0,3,248,0,0,0, + 3,248,0,0,0,3,240,0,0,0,1,240,0,0,0,1, + 240,0,0,0,0,224,0,0,0,0,224,0,0,0,0,224, + 0,0,49,34,238,52,2,0,255,255,63,255,207,255,128,31, + 252,7,254,0,252,0,7,248,3,252,0,112,0,7,248,1, + 252,0,112,0,3,248,1,254,0,96,0,3,252,1,254,0, + 96,0,3,252,0,254,0,96,0,1,252,0,254,0,192,0, + 1,254,1,255,0,192,0,1,254,1,255,0,192,0,0,254, + 1,255,1,128,0,0,255,3,127,129,128,0,0,255,3,63, + 129,128,0,0,127,3,63,129,128,0,0,127,135,63,195,0, + 0,0,127,134,31,195,0,0,0,63,134,31,195,0,0,0, + 63,198,31,231,0,0,0,31,204,15,230,0,0,0,31,204, + 15,230,0,0,0,31,236,15,246,0,0,0,15,248,7,252, + 0,0,0,15,248,7,252,0,0,0,15,248,7,252,0,0, + 0,7,248,3,252,0,0,0,7,240,3,248,0,0,0,7, + 240,3,248,0,0,0,3,240,1,248,0,0,0,3,224,1, + 240,0,0,0,3,224,1,240,0,0,0,1,224,0,240,0, + 0,0,1,192,0,240,0,0,0,1,192,0,224,0,0,0, + 0,192,0,96,0,0,33,34,170,36,2,0,127,255,31,254, + 0,31,252,3,240,0,7,248,3,192,0,3,248,3,128,0, + 3,252,3,128,0,1,252,3,0,0,1,254,7,0,0,0, + 255,6,0,0,0,255,12,0,0,0,127,140,0,0,0,127, + 152,0,0,0,63,240,0,0,0,63,240,0,0,0,31,224, + 0,0,0,31,224,0,0,0,15,240,0,0,0,15,248,0, + 0,0,7,248,0,0,0,7,252,0,0,0,7,252,0,0, + 0,15,254,0,0,0,29,254,0,0,0,24,255,0,0,0, + 56,255,0,0,0,48,127,128,0,0,96,127,128,0,0,224, + 63,192,0,0,192,63,224,0,1,128,31,224,0,3,128,31, + 240,0,3,128,15,240,0,7,128,15,248,0,31,128,31,252, + 0,255,240,127,255,128,32,34,136,35,2,0,255,254,15,255, + 31,248,1,248,15,248,0,240,7,248,0,224,7,248,0,192, + 3,252,0,192,3,252,0,192,1,252,1,128,1,254,1,128, + 0,254,3,0,0,255,3,0,0,255,3,0,0,127,134,0, + 0,127,134,0,0,63,196,0,0,63,204,0,0,31,204,0, + 0,31,248,0,0,15,248,0,0,15,248,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,7,240,0,0,7,240,0,0,7,240,0,0,7,240,0, + 0,255,255,0,25,34,136,31,3,0,127,255,255,128,127,128, + 127,128,126,0,255,0,124,0,255,0,120,1,254,0,120,3, + 254,0,112,3,252,0,112,7,252,0,96,7,248,0,96,15, + 248,0,96,15,240,0,64,31,224,0,0,31,224,0,0,63, + 192,0,0,63,192,0,0,127,128,0,0,127,128,0,0,255, + 0,0,0,255,0,0,1,254,0,0,3,254,0,128,3,252, + 0,128,7,248,0,128,7,248,0,128,15,240,1,128,15,240, + 1,128,31,224,3,128,31,224,3,128,63,192,7,128,63,192, + 15,128,127,128,31,128,127,128,63,128,255,255,255,128,255,255, + 255,128,11,42,84,18,4,248,255,224,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,248,0,248,0,255,224,16,44,88,22, + 3,247,224,0,224,0,224,0,240,0,112,0,112,0,120,0, + 56,0,56,0,60,0,28,0,28,0,30,0,14,0,14,0, + 14,0,15,0,7,0,7,0,7,128,3,128,3,128,3,192, + 1,192,1,192,1,224,0,224,0,224,0,224,0,240,0,112, + 0,112,0,120,0,56,0,56,0,60,0,28,0,28,0,30, + 0,14,0,14,0,14,0,15,0,7,11,42,84,18,3,248, + 255,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,3,224,3,224,3,224,3,224,3,224,3,224,3,224, + 3,224,255,224,22,17,51,28,3,18,0,48,0,0,112,0, + 0,120,0,0,252,0,0,252,0,1,254,0,3,207,0,3, + 143,0,7,135,128,15,3,128,15,3,192,30,1,224,60,0, + 224,60,0,240,120,0,120,112,0,56,240,0,60,25,3,12, + 25,0,248,255,255,255,128,255,255,255,128,255,255,255,128,8, + 9,9,21,4,25,96,240,248,124,60,30,15,3,1,21,22, + 66,24,2,1,15,248,0,24,62,0,56,63,0,120,31,0, + 124,31,128,126,31,128,126,31,128,62,31,128,8,63,128,1, + 255,128,7,159,128,30,31,128,62,31,128,124,31,128,124,31, + 128,252,31,128,252,31,136,252,31,136,252,31,152,254,63,144, + 127,127,240,63,143,224,22,34,102,25,1,0,255,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,159,128,31,179,224,31,225,224,31,193,240,31,193,248,31, + 192,248,31,192,248,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,248, + 31,192,248,31,193,248,29,193,240,24,225,224,24,99,192,16, + 63,128,18,22,66,22,2,1,3,252,0,15,6,0,31,3, + 0,62,3,128,62,7,128,126,15,128,124,31,128,252,31,128, + 252,31,0,252,14,0,252,0,0,252,0,0,252,0,0,252, + 0,0,252,0,0,124,0,64,124,0,192,62,0,128,62,0, + 128,30,1,0,15,130,0,3,252,0,23,34,102,26,2,0, + 0,63,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,7,224,0,7,224,0,7, + 224,0,7,224,7,231,224,31,23,224,30,31,224,62,15,224, + 126,15,224,124,15,224,124,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,252,7,224,252,7,224,252,7,224,252,7, + 224,124,7,224,124,15,224,126,15,224,62,15,224,30,31,224, + 15,23,224,7,231,254,18,22,66,23,2,1,3,252,0,14, + 30,0,30,31,0,62,15,128,60,15,128,124,15,128,124,15, + 192,252,15,192,252,15,192,252,15,192,255,255,192,252,0,0, + 252,0,0,252,0,0,252,0,64,124,0,64,124,0,192,62, + 0,192,62,0,128,31,1,0,15,131,0,3,252,0,18,34, + 102,16,1,1,0,255,0,1,199,128,7,199,128,7,199,192, + 15,143,192,15,143,192,31,143,192,31,143,128,31,135,128,31, + 128,0,31,128,0,31,128,0,255,240,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,255,240,0,24,33,99,27,2,246, + 7,254,62,31,15,71,63,7,143,62,7,207,126,7,238,126, + 7,228,126,7,224,126,7,224,126,7,224,62,7,192,31,15, + 128,15,15,0,3,252,0,12,0,0,48,0,0,48,0,0, + 112,0,0,112,0,0,127,255,128,127,255,224,63,255,240,31, + 255,240,7,255,248,60,1,248,96,0,120,192,0,56,192,0, + 56,192,0,48,192,0,112,96,0,96,48,1,192,30,7,128, + 3,252,0,24,34,102,27,1,0,255,128,0,31,128,0,31, + 128,0,31,128,0,31,128,0,31,128,0,31,128,0,31,128, + 0,31,128,0,31,128,0,31,128,0,31,128,0,31,143,224, + 31,145,240,31,160,248,31,160,252,31,192,252,31,192,252,31, + 192,252,31,128,252,31,128,252,31,128,252,31,128,252,31,128, + 252,31,128,252,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,255,227,255,11, + 35,70,15,2,0,4,0,31,0,63,128,63,128,63,128,63, + 128,31,0,4,0,0,0,0,0,0,0,0,0,0,0,255, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,63,0,63,0,63,0,63, + 0,63,0,63,0,63,0,63,0,255,224,15,46,92,16,254, + 245,0,16,0,124,0,254,0,254,0,254,0,254,0,124,0, + 16,0,0,0,0,0,0,0,0,0,0,7,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,0,252,0,252,0, + 252,0,252,0,252,0,252,0,252,0,252,56,252,124,252,252, + 252,252,252,248,248,248,248,113,240,49,224,31,128,25,34,136, + 27,1,0,255,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,128,0,0,31,128,0,0,31,128,0,0,31, + 128,0,0,31,131,254,0,31,128,240,0,31,128,96,0,31, + 128,192,0,31,128,128,0,31,129,128,0,31,131,0,0,31, + 134,0,0,31,143,0,0,31,159,0,0,31,159,128,0,31, + 191,128,0,31,239,192,0,31,199,224,0,31,135,224,0,31, + 131,240,0,31,129,248,0,31,129,248,0,31,128,252,0,31, + 128,252,0,31,128,254,0,255,243,255,128,12,34,68,14,1, + 0,255,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,255,240,34,22,110,37,2,1,255,31,193,248,0, + 63,35,230,124,0,63,67,228,62,0,63,131,248,63,0,63, + 131,248,63,0,63,131,248,63,0,63,3,240,63,0,63,3, + 240,63,0,63,3,240,63,0,63,3,240,63,0,63,3,240, + 63,0,63,3,240,63,0,63,3,240,63,0,63,3,240,63, + 0,63,3,240,63,0,63,3,240,63,0,63,3,240,63,0, + 63,3,240,63,0,63,3,240,63,0,63,3,240,63,0,63, + 3,240,63,0,255,207,252,255,192,23,22,66,27,2,1,255, + 31,192,63,35,224,63,65,240,63,65,248,63,129,248,63,129, + 248,63,1,248,63,1,248,63,1,248,63,1,248,63,1,248, + 63,1,248,63,1,248,63,1,248,63,1,248,63,1,248,63, + 1,248,63,1,248,63,1,248,63,1,248,63,1,248,255,199, + 254,20,22,66,24,2,1,3,252,0,15,15,0,30,7,128, + 62,7,192,62,7,192,124,3,224,124,3,224,252,3,240,252, + 3,240,252,3,240,252,3,240,252,3,240,252,3,240,252,3, + 240,252,3,240,124,3,224,124,3,224,62,7,192,62,7,192, + 30,7,128,15,15,0,3,252,0,22,33,99,25,1,246,255, + 159,128,31,163,192,31,225,224,31,193,240,31,192,248,31,192, + 248,31,192,248,31,128,252,31,128,252,31,128,252,31,128,252, + 31,128,252,31,128,252,31,128,252,31,128,252,31,192,252,31, + 192,248,31,192,248,31,193,240,31,225,240,31,179,224,31,159, + 128,31,128,0,31,128,0,31,128,0,31,128,0,31,128,0, + 31,128,0,31,128,0,31,128,0,31,128,0,31,128,0,255, + 240,0,22,33,99,25,2,246,7,240,32,15,24,96,30,28, + 96,62,14,224,126,15,224,124,15,224,124,7,224,252,7,224, + 252,7,224,252,7,224,252,7,224,252,7,224,252,7,224,252, + 7,224,252,7,224,124,7,224,124,15,224,126,15,224,62,15, + 224,30,31,224,31,23,224,7,231,224,0,7,224,0,7,224, + 0,7,224,0,7,224,0,7,224,0,7,224,0,7,224,0, + 7,224,0,7,224,0,7,224,0,63,252,17,22,66,20,2, + 1,255,31,0,63,63,128,63,79,128,63,79,128,63,159,128, + 63,159,128,63,159,0,63,14,0,63,0,0,63,0,0,63, + 0,0,63,0,0,63,0,0,63,0,0,63,0,0,63,0, + 0,63,0,0,63,0,0,63,0,0,63,0,0,63,0,0, + 255,192,0,16,22,44,21,3,1,31,196,48,116,96,60,224, + 28,224,28,240,12,248,4,254,4,127,128,127,224,63,240,31, + 252,7,254,129,254,192,127,192,31,224,15,224,7,240,7,248, + 6,204,14,135,248,15,32,64,17,1,0,1,128,1,128,1, + 128,1,128,1,128,3,128,3,128,7,128,15,128,63,128,255, + 248,31,128,31,128,31,128,31,128,31,128,31,128,31,128,31, + 128,31,128,31,128,31,128,31,130,31,130,31,130,31,130,31, + 134,31,134,31,132,15,196,15,248,7,240,24,22,66,26,1, + 0,255,143,248,31,129,248,31,129,248,31,129,248,31,129,248, + 31,129,248,31,129,248,31,129,248,31,129,248,31,129,248,31, + 129,248,31,129,248,31,129,248,31,129,248,31,129,248,31,129, + 248,31,131,248,31,131,248,31,133,248,15,133,248,15,201,248, + 7,241,255,23,23,69,25,1,255,255,241,254,63,192,120,31, + 128,48,15,192,48,15,192,32,7,192,96,7,224,96,7,224, + 64,3,224,192,3,240,128,3,240,128,1,241,128,1,249,0, + 0,249,0,0,255,0,0,254,0,0,126,0,0,126,0,0, + 124,0,0,60,0,0,60,0,0,24,0,0,24,0,35,23, + 115,37,1,255,255,231,255,31,224,63,129,252,7,128,31,128, + 252,3,0,15,128,252,2,0,15,192,124,2,0,15,192,124, + 6,0,7,192,126,4,0,7,224,254,4,0,3,224,191,12, + 0,3,224,191,8,0,3,241,159,24,0,1,241,31,144,0, + 1,241,31,144,0,1,251,31,176,0,0,250,15,224,0,0, + 250,15,224,0,0,254,15,224,0,0,124,7,192,0,0,124, + 7,192,0,0,60,7,192,0,0,56,3,128,0,0,56,3, + 128,0,0,24,3,0,0,23,22,66,25,1,0,255,231,252, + 63,192,240,31,192,224,15,192,192,15,225,128,7,227,0,3, + 242,0,3,254,0,1,252,0,1,252,0,0,252,0,0,126, + 0,0,127,0,0,127,0,0,223,128,1,159,192,3,15,192, + 2,15,224,6,7,224,14,7,240,30,7,248,255,207,254,23, + 33,99,25,1,245,255,241,254,63,192,120,31,128,48,15,192, + 32,15,192,32,15,192,96,7,224,64,7,224,64,3,240,192, + 3,240,128,1,248,128,1,249,128,0,249,0,0,253,0,0, + 253,0,0,126,0,0,126,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,12,0,0,8,0,0,8,0,0,8,0, + 15,16,0,31,16,0,63,144,0,63,32,0,62,32,0,62, + 64,0,31,192,0,15,0,0,18,22,66,22,2,0,127,255, + 192,124,15,192,120,31,128,112,63,0,96,63,0,96,126,0, + 64,126,0,64,252,0,1,248,0,1,248,0,3,240,0,3, + 240,0,7,224,64,15,192,64,15,192,64,31,128,192,31,0, + 192,63,1,192,126,1,192,126,3,192,252,15,192,255,255,192, + 14,43,86,20,3,247,0,60,0,240,3,192,7,128,7,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,0,15,0,28,0, + 240,0,60,0,30,0,15,0,15,128,15,128,15,128,15,128, + 15,128,15,128,15,128,15,128,15,128,15,128,15,128,15,128, + 15,128,7,128,7,128,3,192,0,240,0,60,3,44,44,13, + 5,247,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,15,43, + 86,20,3,247,240,0,60,0,15,0,7,128,7,128,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,3,192,3,192,0,240,0,62, + 0,240,1,224,3,192,7,192,7,192,7,192,7,192,7,192, + 7,192,7,192,7,192,7,192,7,192,7,192,7,192,7,192, + 7,128,7,128,15,0,60,0,240,0,27,9,36,31,2,8, + 31,128,1,128,63,240,0,192,127,254,0,96,255,255,128,96, + 193,255,240,96,192,63,255,224,192,15,255,192,96,1,255,128, + 48,0,63,0,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 5 y=15 dx=28 dy= 0 ascent=25 len=72 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =19 descent=-6 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18[7816] U8G_SECTION(".progmem.u8g_font_osr18") = { + 0,68,33,235,248,18,4,197,10,125,32,255,250,25,249,19, + 250,0,0,0,7,0,0,3,18,18,7,2,0,224,224,224, + 224,224,224,64,64,64,64,64,64,64,64,0,224,224,224,6, + 5,5,10,2,13,204,204,204,204,72,14,18,36,18,2,0, + 4,32,4,32,4,32,4,32,4,32,255,252,8,64,8,64, + 8,64,8,64,8,64,24,64,255,252,16,128,16,128,16,128, + 16,128,16,128,11,22,44,15,2,254,9,0,9,0,31,128, + 41,64,73,32,73,32,73,96,73,96,105,0,61,0,31,128, + 15,192,9,192,9,96,233,32,233,32,201,32,201,64,105,64, + 31,128,9,0,9,0,18,18,54,22,2,0,56,2,0,68, + 4,0,198,8,0,198,8,0,198,16,0,198,32,0,198,32, + 0,68,64,0,56,64,0,0,134,0,1,25,128,1,48,128, + 2,48,192,4,48,192,4,48,192,8,48,192,8,24,128,16, + 15,0,18,18,54,20,1,0,7,128,0,8,64,0,24,64, + 0,24,64,0,24,192,0,28,128,0,15,0,0,6,31,192, + 15,6,0,23,6,0,35,132,0,97,196,0,192,232,0,192, + 240,0,192,112,0,224,120,128,96,220,128,63,15,0,2,5, + 5,7,2,13,192,192,192,192,64,6,23,23,10,3,252,8, + 16,48,32,64,64,192,128,128,128,128,128,128,128,128,192,64, + 64,96,32,16,24,12,6,23,23,9,1,252,64,32,48,16, + 24,8,8,12,4,4,4,4,4,4,12,8,8,8,16,16, + 32,64,192,10,10,20,14,2,8,12,0,12,0,204,192,201, + 192,42,0,30,0,235,192,201,192,12,0,12,0,22,22,66, + 24,1,252,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,255,255,252,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,3,8,8,7,2,252,192,224,224,32,32, + 64,64,128,7,1,1,11,2,6,254,3,3,3,7,2,0, + 224,224,224,8,24,24,12,2,250,1,1,2,2,2,4,4, + 4,12,8,8,24,16,16,16,32,32,32,64,64,64,128,128, + 128,12,18,36,15,1,0,15,0,16,192,32,64,96,96,96, + 32,192,48,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,96,32,96,96,32,64,16,192,15,0,9,18,36,15,3, + 0,8,0,8,0,24,0,248,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,128,10,18,36,15,2,0,30,0,99,128,129, + 192,128,192,128,192,224,192,240,192,32,192,1,128,3,0,6, + 0,8,0,16,0,32,0,64,64,192,64,255,192,255,192,11, + 18,36,15,2,0,63,0,97,128,192,192,224,192,240,192,0, + 192,0,192,1,128,62,0,1,128,0,192,0,96,96,96,240, + 96,240,96,192,192,65,128,63,0,12,18,36,15,2,0,1, + 0,3,0,3,0,7,0,15,0,11,0,19,0,51,0,35, + 0,67,0,195,0,131,0,255,224,3,0,3,0,3,0,3, + 0,31,240,11,18,36,15,2,0,96,192,127,128,126,0,64, + 0,64,0,64,0,95,0,97,128,64,192,64,224,0,96,0, + 96,96,96,240,96,224,192,192,192,65,128,62,0,11,18,36, + 15,2,0,15,0,24,128,48,64,96,192,96,192,64,0,192, + 0,207,0,209,192,224,192,224,224,224,96,224,96,224,96,96, + 224,96,192,49,128,15,0,10,18,36,15,3,0,255,192,255, + 192,128,64,128,64,128,128,0,128,1,0,1,0,2,0,6, + 0,6,0,12,0,12,0,30,0,30,0,30,0,30,0,14, + 0,12,18,36,15,2,0,31,128,48,224,96,96,192,48,192, + 48,224,48,240,32,124,64,63,128,55,224,96,240,192,112,192, + 48,192,48,192,48,96,96,112,192,31,128,11,18,36,15,2, + 0,30,0,49,128,96,192,224,192,192,64,192,96,192,96,192, + 224,96,224,113,96,30,96,0,96,0,64,96,192,96,192,64, + 128,65,0,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,8,2,252,96,240,240, + 0,0,0,0,0,96,240,240,16,16,32,32,64,20,21,63, + 24,2,253,0,0,48,0,0,192,0,3,0,0,12,0,0, + 48,0,0,224,0,3,128,0,14,0,0,24,0,0,96,0, + 0,192,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,1,128,0,0,96,0, + 0,16,22,6,18,24,1,4,255,255,252,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,252,20,21,63,24,2,253, + 192,0,0,48,0,0,12,0,0,3,0,0,0,192,0,0, + 112,0,0,28,0,0,7,0,0,1,128,0,0,96,0,0, + 48,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 1,128,0,6,0,0,24,0,0,96,0,0,128,0,0,9, + 18,36,12,2,0,62,0,67,0,129,128,129,128,225,128,97, + 128,3,0,6,0,12,0,16,0,48,0,34,0,34,0,28, + 0,0,0,28,0,28,0,28,0,18,18,54,20,1,0,3, + 248,0,12,6,0,16,109,0,33,156,128,67,12,128,70,8, + 64,142,8,64,142,24,64,140,24,64,140,16,64,140,48,128, + 140,48,128,140,241,0,71,30,0,96,0,0,32,0,0,24, + 12,0,7,240,0,18,18,54,20,2,0,0,128,0,0,192, + 0,1,192,0,1,192,0,1,224,0,3,224,0,2,96,0, + 2,112,0,6,112,0,4,48,0,4,56,0,12,56,0,15, + 248,0,24,28,0,16,12,0,16,12,0,48,14,0,254,63, + 192,15,18,36,17,1,0,255,240,24,28,24,12,24,6,24, + 6,24,6,24,12,24,24,31,224,24,24,24,12,24,6,24, + 6,24,6,24,6,24,12,24,28,255,240,14,18,36,18,2, + 0,7,132,24,108,32,60,96,28,96,12,192,12,192,4,192, + 0,192,0,192,0,192,0,192,4,96,4,96,4,32,8,48, + 24,24,48,7,192,17,18,54,20,1,0,255,240,0,24,12, + 0,24,6,0,24,3,0,24,3,0,24,1,128,24,1,128, + 24,1,128,24,1,128,24,1,128,24,1,128,24,1,128,24, + 1,128,24,3,0,24,3,0,24,6,0,24,12,0,255,240, + 0,15,18,36,18,1,0,255,254,24,6,24,2,24,2,24, + 2,24,34,24,32,24,96,31,224,24,96,24,32,24,32,24, + 34,24,2,24,2,24,6,24,14,255,254,15,18,36,17,1, + 0,255,254,24,6,24,2,24,2,24,2,24,34,24,32,24, + 96,31,224,24,96,24,32,24,32,24,32,24,0,24,0,24, + 0,24,0,127,0,17,18,54,19,2,0,7,196,0,24,100, + 0,48,28,0,96,28,0,96,12,0,96,4,0,192,4,0, + 192,0,0,192,127,128,192,28,0,192,28,0,192,28,0,192, + 28,0,96,28,0,96,28,0,48,52,0,24,100,0,7,132, + 0,18,18,54,20,1,0,255,63,192,24,6,0,24,6,0, + 24,6,0,24,6,0,24,6,0,24,6,0,24,6,0,31, + 254,0,24,6,0,24,6,0,24,6,0,24,6,0,24,6, + 0,24,6,0,24,6,0,24,6,0,255,63,192,8,18,18, + 10,1,0,255,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,12,18,36,14,1,0,7,240,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,97,128,241,128,225,128,193,128,67,0,62,0,17, + 18,54,19,1,0,255,63,128,24,14,0,24,8,0,24,16, + 0,24,32,0,24,64,0,24,128,0,25,192,0,26,192,0, + 28,224,0,24,96,0,24,112,0,24,56,0,24,56,0,24, + 28,0,24,28,0,24,14,0,255,127,128,15,18,36,17,1, + 0,255,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,2,24,2,24,2,24,6,24, + 6,24,14,255,254,20,18,54,22,1,0,252,3,240,28,3, + 128,30,5,128,22,5,128,22,5,128,23,5,128,19,9,128, + 19,9,128,19,137,128,19,145,128,17,145,128,17,209,128,17, + 209,128,16,225,128,16,225,128,16,225,128,16,65,128,254,79, + 240,18,18,54,19,1,0,252,15,192,28,2,0,30,2,0, + 22,2,0,23,2,0,19,130,0,17,130,0,17,194,0,16, + 226,0,16,226,0,16,114,0,16,50,0,16,58,0,16,30, + 0,16,14,0,16,14,0,16,6,0,254,2,0,15,18,36, + 18,2,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,18,36,17,1,0,255,240,24, + 28,24,12,24,6,24,6,24,6,24,12,24,24,31,240,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,255, + 0,15,22,44,18,2,252,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,99,140,36,76,52,120,28,114,7,226,0,98,0,118,0, + 60,0,24,17,18,54,19,1,0,255,240,0,24,24,0,24, + 12,0,24,12,0,24,12,0,24,12,0,24,24,0,31,224, + 0,24,48,0,24,56,0,24,24,0,24,24,0,24,24,0, + 24,28,128,24,28,128,24,28,128,24,31,0,255,15,0,13, + 18,36,16,2,0,30,32,97,160,192,96,192,96,192,32,192, + 32,224,0,124,0,63,128,15,224,129,240,128,112,128,24,192, + 24,192,24,224,16,152,32,135,192,15,18,36,18,2,0,255, + 254,195,14,131,6,131,2,3,2,3,2,3,2,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,240,19,18,54,21,1,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,18, + 18,54,20,1,0,255,31,192,28,3,0,28,2,0,12,2, + 0,14,6,0,6,4,0,7,4,0,7,8,0,3,8,0, + 3,136,0,3,144,0,1,144,0,1,208,0,0,224,0,0, + 224,0,0,224,0,0,64,0,0,64,0,26,18,72,28,1, + 0,255,63,159,192,28,14,3,0,12,6,2,0,12,14,2, + 0,14,15,6,0,14,15,4,0,6,19,4,0,7,19,140, + 0,7,19,136,0,3,49,136,0,3,161,216,0,3,161,208, + 0,1,160,208,0,1,192,240,0,1,192,224,0,0,192,96, + 0,0,128,96,0,0,128,64,0,18,18,54,20,1,0,127, + 191,128,14,12,0,14,12,0,7,8,0,7,16,0,3,176, + 0,1,160,0,1,192,0,0,192,0,0,224,0,1,96,0, + 3,112,0,2,56,0,4,56,0,12,28,0,8,12,0,24, + 14,0,254,63,192,17,18,54,19,1,0,255,31,128,28,6, + 0,28,4,0,14,4,0,6,8,0,7,8,0,3,144,0, + 3,160,0,1,224,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,7,252, + 0,14,18,36,17,2,0,127,252,112,56,96,48,64,112,64, + 224,128,192,1,192,3,128,3,0,7,0,14,0,12,4,28, + 4,56,4,48,12,112,28,224,56,255,248,5,23,23,10,3, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,248,8,24,24,12,2,250,128,128, + 128,64,64,64,32,32,32,16,16,16,16,8,8,8,4,4, + 4,2,2,2,1,1,5,23,23,10,2,251,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,248,11,9,18,15,2,9,4,0,14,0,10,0,17, + 0,49,128,32,128,64,64,64,96,128,32,14,1,2,14,0, + 252,255,252,4,4,4,11,2,13,192,224,96,16,11,12,24, + 13,1,0,30,0,99,0,65,128,97,128,33,128,15,128,113, + 128,193,128,195,160,195,160,197,160,121,192,11,18,36,13,0, + 0,240,0,48,0,48,0,48,0,48,0,48,0,51,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,40,192,39,128,9,12,24,11,1,0,30,0,33,0,96, + 128,193,128,193,128,192,0,192,0,192,0,192,128,96,128,33, + 0,30,0,12,18,36,14,1,0,7,192,0,192,0,192,0, + 192,0,192,0,192,28,192,98,192,97,192,193,192,192,192,192, + 192,192,192,192,192,192,192,97,192,97,192,30,240,9,12,24, + 12,1,0,30,0,35,0,97,128,193,128,193,128,255,128,192, + 0,192,0,192,128,96,128,33,0,30,0,9,18,36,9,1, + 0,15,0,24,128,49,128,49,0,48,0,48,0,254,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,254,0,12,18,36,15,2,250,30,112,97,176,225, + 240,192,192,192,192,192,192,225,128,97,128,30,0,224,0,255, + 0,127,192,64,96,128,32,128,32,128,32,192,64,63,128,13, + 18,36,15,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,51,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,6,18,18,8,1,0,112, + 112,32,0,0,0,240,48,48,48,48,48,48,48,48,48,48, + 252,7,24,24,8,255,250,6,6,0,0,0,0,62,6,6, + 6,6,6,6,6,6,6,6,6,6,6,198,198,140,120,12, + 18,36,14,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,49,240,48,128,49,0,50,0,50,0,54,0,59,0,51, + 0,49,128,49,192,48,224,253,240,6,18,18,8,1,0,240, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,19,12,36,21,1,0,243,199,0,52,249,128,56,113,192, + 56,97,192,48,97,192,48,97,192,48,97,192,48,97,192,48, + 97,192,48,97,192,48,97,192,253,251,224,13,12,24,15,1, + 0,243,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,10,12,24,13,1,0,30, + 0,33,128,97,128,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,33,128,30,0,11,18,36,14,1,250,243,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,56,192,55,128,48,0,48,0,48,0,48,0,48,0,252, + 0,12,18,36,13,1,250,28,64,98,64,97,192,192,192,192, + 192,192,192,192,192,192,192,192,192,97,192,97,192,30,192,0, + 192,0,192,0,192,0,192,0,192,3,240,9,12,24,11,1, + 0,243,128,52,128,57,128,56,128,56,0,48,0,48,0,48, + 0,48,0,48,0,48,0,252,0,9,12,24,11,1,0,125, + 0,131,0,129,0,193,0,240,0,124,0,31,0,131,128,128, + 128,192,128,224,128,159,0,8,17,17,10,1,0,16,16,16, + 48,48,254,48,48,48,48,48,48,48,49,49,51,30,13,12, + 24,14,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,12,24,14, + 1,0,252,248,48,96,48,64,24,64,24,128,12,128,12,128, + 13,0,7,0,7,0,2,0,2,0,19,12,36,21,1,0, + 253,251,224,48,96,128,48,96,128,24,113,0,24,177,0,12, + 177,0,12,154,0,13,26,0,7,28,0,7,12,0,2,12, + 0,2,8,0,12,12,24,14,1,0,249,224,48,128,57,0, + 25,0,14,0,14,0,6,0,11,0,19,0,17,128,33,192, + 243,240,13,18,36,14,0,250,252,248,56,32,24,32,24,64, + 12,64,12,64,12,128,6,128,6,128,7,0,3,0,3,0, + 2,0,2,0,34,0,98,0,100,0,56,0,9,12,24,12, + 1,0,255,128,195,128,131,0,134,0,142,0,12,0,24,0, + 56,0,48,128,96,128,96,128,255,128,6,23,23,12,3,251, + 12,16,48,48,48,48,56,24,24,24,16,224,48,16,24,24, + 56,48,48,48,48,16,12,1,24,24,7,3,250,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,23,23,11,3,251,192,32,48,48,48, + 112,96,96,96,96,32,28,48,96,96,96,96,112,48,48,48, + 32,192,15,5,10,17,1,4,32,4,254,2,143,194,129,254, + 64,124,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,7,0,0,3,18,18,7,2,250,224, + 224,224,0,64,64,64,64,64,64,64,64,224,224,224,224,224, + 224,9,18,36,15,3,253,4,0,4,0,4,0,31,0,53, + 0,100,128,229,128,197,128,196,0,196,0,196,0,228,128,100, + 128,53,0,31,0,4,0,4,0,4,0,14,18,36,19,2, + 0,0,248,1,132,3,4,2,12,6,0,6,0,6,0,62, + 0,7,224,6,0,6,0,6,0,6,0,6,0,116,4,140, + 4,139,248,112,240,11,11,22,15,2,2,159,32,113,192,64, + 64,128,96,128,32,128,32,128,32,128,32,64,64,96,192,159, + 32,15,18,36,15,0,0,252,126,56,24,24,16,28,16,12, + 32,14,64,6,64,7,128,3,128,63,240,3,0,3,0,63, + 240,3,0,3,0,3,0,3,0,31,224,1,23,23,7,3, + 251,128,128,128,128,128,128,128,128,128,0,0,0,0,0,128, + 128,128,128,128,128,128,128,128,10,23,46,17,3,251,30,0, + 33,0,35,0,35,0,32,0,48,0,28,0,46,0,71,0, + 131,128,129,192,192,192,224,64,112,64,56,128,29,0,6,0, + 3,0,3,0,49,0,49,0,34,0,28,0,7,2,2,11, + 2,15,198,198,19,18,54,21,1,0,3,248,0,12,6,0, + 16,225,0,33,28,128,67,12,64,70,4,64,134,4,32,134, + 0,32,134,0,32,134,0,32,134,0,32,134,8,32,67,8, + 64,67,8,64,32,240,128,16,1,0,12,6,0,3,248,0, + 7,8,8,11,2,10,240,200,24,104,136,154,100,252,6,10, + 10,12,3,1,32,68,136,136,136,136,136,136,68,32,13,6, + 12,15,1,3,255,248,0,8,0,8,0,8,0,8,0,8, + 7,1,1,11,2,6,254,19,18,54,21,1,0,3,248,0, + 12,6,0,31,225,0,35,24,128,67,24,64,67,24,64,131, + 24,32,131,24,32,131,224,32,131,16,32,131,24,32,131,24, + 32,67,26,64,67,26,64,47,142,128,16,1,0,12,6,0, + 3,248,0,7,1,1,11,2,15,254,7,7,7,15,4,11, + 56,68,130,130,130,68,56,22,18,54,24,1,255,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,255,255,252,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,0,0,0,0,0, + 255,255,252,7,10,10,11,2,8,124,134,134,230,6,8,16, + 96,66,254,7,11,11,12,3,7,120,132,198,198,4,120,14, + 70,198,134,120,4,4,4,11,5,13,48,48,96,128,14,19, + 38,17,2,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,64,192,64,128,64,132,163,252,159,28,128,0,128,0, + 192,0,192,0,192,0,224,0,64,0,11,22,44,14,2,252, + 63,224,120,128,248,128,248,128,248,128,248,128,248,128,120,128, + 8,128,8,128,8,128,8,128,8,128,8,128,8,128,8,128, + 8,128,8,128,8,128,8,128,8,128,8,128,3,3,3,7, + 2,7,224,224,224,5,5,5,11,3,251,64,48,24,24,240, + 6,11,11,12,3,7,16,16,240,48,48,48,48,48,48,48, + 252,6,9,9,10,2,9,112,136,132,132,132,132,72,48,252, + 7,10,10,13,3,1,8,68,68,34,34,34,34,68,68,136, + 18,18,54,23,3,0,16,4,0,240,12,0,48,8,0,48, + 16,0,48,16,0,48,32,0,48,96,0,48,67,0,48,135, + 0,48,139,0,253,11,0,3,19,0,2,19,0,6,35,0, + 4,63,192,8,3,0,24,3,0,16,15,192,17,18,54,22, + 3,0,16,4,0,240,8,0,48,8,0,48,16,0,48,16, + 0,48,32,0,48,64,0,48,78,0,48,179,128,48,161,128, + 253,49,128,3,17,128,2,3,0,4,6,0,4,8,0,8, + 16,128,24,49,128,16,63,128,18,18,54,23,3,0,120,4, + 0,134,12,0,198,8,0,4,16,0,120,16,0,12,32,0, + 6,96,0,198,67,0,198,135,0,142,139,0,121,11,0,2, + 19,0,2,19,0,4,35,0,12,63,192,8,3,0,16,3, + 0,16,15,192,9,18,36,12,1,250,28,0,28,0,28,0, + 0,0,28,0,34,0,34,0,6,0,4,0,24,0,48,0, + 96,0,227,0,195,128,192,128,224,128,97,0,62,0,18,24, + 72,20,2,0,6,0,0,6,0,0,3,0,0,0,128,0, + 0,0,0,0,0,0,0,128,0,0,192,0,1,192,0,1, + 192,0,1,224,0,3,224,0,2,96,0,2,112,0,6,112, + 0,4,48,0,4,56,0,12,24,0,15,248,0,24,28,0, + 16,12,0,16,14,0,48,14,0,254,63,192,18,24,72,20, + 2,0,0,16,0,0,48,0,0,96,0,0,64,0,0,128, + 0,0,0,0,0,128,0,0,192,0,1,192,0,1,192,0, + 1,224,0,3,224,0,2,96,0,2,112,0,6,112,0,4, + 48,0,4,56,0,12,56,0,15,248,0,24,28,0,16,12, + 0,16,14,0,48,14,0,254,63,192,18,24,72,20,2,0, + 0,128,0,0,192,0,1,96,0,2,48,0,4,8,0,0, + 0,0,0,128,0,0,192,0,1,192,0,1,192,0,1,224, + 0,3,224,0,2,96,0,2,112,0,6,112,0,4,48,0, + 4,56,0,12,56,0,15,248,0,24,28,0,16,12,0,16, + 12,0,48,14,0,254,63,192,18,23,69,20,2,0,3,144, + 0,5,240,0,0,0,0,0,0,0,0,0,0,0,128,0, + 0,128,0,1,192,0,1,192,0,1,224,0,3,224,0,2, + 96,0,2,112,0,6,112,0,4,48,0,12,56,0,12,56, + 0,15,248,0,24,28,0,16,28,0,16,12,0,48,14,0, + 254,63,192,18,23,69,20,1,0,6,24,0,6,24,0,2, + 16,0,0,0,0,0,0,0,0,192,0,0,192,0,0,192, + 0,1,224,0,1,224,0,1,96,0,2,112,0,2,112,0, + 2,48,0,4,56,0,4,24,0,12,24,0,15,252,0,8, + 12,0,24,12,0,24,14,0,56,6,0,254,63,192,17,24, + 72,20,2,0,1,192,0,2,32,0,2,32,0,2,32,0, + 1,192,0,0,0,0,0,128,0,0,128,0,1,192,0,1, + 192,0,1,192,0,2,224,0,2,96,0,2,96,0,4,112, + 0,4,112,0,12,48,0,8,56,0,15,248,0,24,28,0, + 16,28,0,16,12,0,48,14,0,254,127,128,24,18,54,26, + 0,0,0,127,255,0,28,7,0,28,3,0,44,1,0,44, + 1,0,76,17,0,76,16,0,140,48,0,143,240,1,12,48, + 3,12,16,2,12,17,7,252,17,4,12,1,8,12,1,8, + 12,3,24,12,7,254,63,255,14,24,48,18,2,250,7,132, + 24,108,32,60,96,28,96,12,192,12,192,4,192,0,192,0, + 192,0,192,0,192,4,96,4,96,4,96,8,48,24,24,48, + 7,192,2,0,3,128,0,192,0,192,8,192,7,128,15,24, + 48,18,1,0,4,0,6,0,3,0,1,128,0,0,0,0, + 255,254,24,6,24,2,24,2,24,2,24,34,24,32,24,96, + 31,224,24,96,24,32,24,32,24,34,24,2,24,2,24,6, + 24,14,255,254,15,24,48,18,1,0,0,48,0,48,0,96, + 0,192,0,0,0,0,255,254,24,14,24,6,24,2,24,2, + 24,34,24,32,24,96,31,224,24,96,24,32,24,32,24,34, + 24,2,24,2,24,6,24,14,255,254,15,24,48,18,1,0, + 0,128,1,192,3,64,6,48,8,8,0,0,255,254,24,6, + 24,2,24,2,24,2,24,34,24,32,24,96,31,224,24,96, + 24,32,24,32,24,34,24,2,24,2,24,6,24,14,255,254, + 15,23,46,18,1,0,6,48,6,48,4,16,0,0,0,0, + 255,254,24,14,24,6,24,2,24,2,24,34,24,32,24,96, + 31,224,24,96,24,32,24,32,24,34,24,2,24,2,24,6, + 24,14,255,254,8,24,24,10,1,0,64,96,48,16,8,0, + 255,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,255,8,24,24,10,1,0,3,3,6,8,0,0,255,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,255, + 8,24,24,10,1,0,8,24,52,66,129,0,255,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,255,8,23, + 23,10,1,0,195,195,66,0,0,255,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,255,17,18,54,19,1, + 0,255,240,0,24,12,0,24,6,0,24,3,0,24,3,0, + 24,1,128,24,1,128,24,1,128,127,1,128,24,1,128,24, + 1,128,24,1,128,24,1,128,24,3,0,24,3,0,24,6, + 0,24,12,0,255,240,0,18,24,72,19,1,0,3,200,0, + 2,248,0,0,0,0,0,0,0,0,0,0,0,0,0,252, + 15,192,28,2,0,30,2,0,22,2,0,23,2,0,19,130, + 0,17,130,0,17,194,0,16,226,0,16,226,0,16,114,0, + 16,50,0,16,58,0,16,30,0,16,14,0,16,14,0,16, + 6,0,252,2,0,15,24,48,18,2,1,28,0,12,0,6, + 0,2,0,1,0,0,0,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,96,12,32,8,48,24,24,48,7,192,15,24,48,18,2, + 1,0,112,0,96,0,192,0,128,1,0,0,0,7,192,24, + 48,48,24,32,8,96,12,96,12,192,6,192,6,192,6,192, + 6,192,6,192,6,96,12,96,12,32,8,48,24,24,48,7, + 192,15,24,48,18,2,0,1,0,3,128,6,192,12,96,16, + 16,0,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,24,48,18,2,0,15,16,19, + 224,0,0,0,0,0,0,0,0,7,192,24,48,48,24,32, + 8,96,12,96,12,192,6,192,6,192,6,192,6,192,6,192, + 6,96,12,96,12,32,8,48,24,24,48,7,192,15,24,48, + 18,2,0,8,0,12,96,12,96,0,0,0,0,0,0,7, + 192,24,48,48,24,32,8,96,12,96,12,192,6,192,6,192, + 6,192,6,192,6,192,6,96,12,96,12,32,8,48,24,24, + 48,7,192,16,16,32,24,4,255,0,1,64,3,32,6,16, + 12,8,24,4,48,2,96,1,192,1,128,3,64,6,32,12, + 16,24,8,48,4,96,2,192,1,15,18,36,18,2,0,7, + 194,24,52,48,28,32,12,96,28,96,44,192,70,192,198,193, + 134,195,6,198,6,196,6,232,12,112,12,96,8,112,24,88, + 48,135,192,19,24,72,21,1,1,3,0,0,3,128,0,0, + 128,0,0,64,0,0,0,0,0,0,0,255,15,224,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,24,1,0,24, + 1,0,24,1,0,12,1,0,12,2,0,6,4,0,1,248, + 0,19,24,72,21,1,1,0,28,0,0,24,0,0,48,0, + 0,32,0,0,64,0,0,0,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,19, + 24,72,21,1,0,0,96,0,0,224,0,1,176,0,3,8, + 0,0,4,0,0,0,0,255,15,224,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,12,1,0,12,2,0,6,4,0,1,248,0,19,23,69, + 21,1,1,3,24,0,3,24,0,0,0,0,0,0,0,0, + 0,0,255,15,224,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,24,1,0,24,1,0,24,1,0,12,1,0,12, + 2,0,6,4,0,1,248,0,17,24,72,19,1,0,0,24, + 0,0,56,0,0,48,0,0,64,0,0,0,0,0,0,0, + 255,31,128,28,6,0,28,4,0,14,4,0,6,8,0,7, + 8,0,3,144,0,3,160,0,1,224,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 0,192,0,7,252,0,15,18,36,17,1,0,255,0,24,0, + 24,0,31,224,24,24,24,12,24,6,24,6,24,6,24,14, + 24,12,24,24,31,240,24,0,24,0,24,0,24,0,255,0, + 12,18,36,14,1,0,7,128,24,224,24,96,48,96,48,192, + 48,128,55,0,49,128,48,64,48,96,48,112,48,48,48,48, + 48,48,54,48,54,112,52,96,243,192,11,18,36,13,1,0, + 96,0,96,0,48,0,24,0,8,0,0,0,30,0,99,0, + 65,128,97,128,33,128,15,128,113,128,193,128,195,160,195,160, + 197,160,121,192,11,18,36,13,1,0,1,128,3,128,3,0, + 4,0,8,0,0,0,62,0,65,0,65,128,97,128,33,128, + 15,128,113,128,193,128,193,160,195,160,197,160,120,192,11,18, + 36,13,1,0,8,0,12,0,28,0,50,0,65,0,0,0, + 30,0,99,0,65,128,97,128,33,128,15,128,113,128,193,128, + 195,160,195,160,197,160,121,192,11,17,34,13,1,0,56,128, + 79,0,0,0,0,0,0,0,30,0,99,0,65,128,97,128, + 33,128,15,128,113,128,193,128,195,160,195,160,197,160,121,192, + 11,17,34,13,1,0,99,0,99,0,1,0,0,0,0,0, + 60,0,67,0,67,0,99,0,3,0,15,0,115,0,195,0, + 195,32,199,32,203,32,121,192,11,18,36,13,1,0,28,0, + 34,0,34,0,34,0,28,0,0,0,60,0,67,0,67,0, + 99,0,35,0,15,0,115,0,195,0,195,32,199,32,199,32, + 121,192,16,12,24,18,1,0,30,120,99,198,65,134,97,131, + 1,131,31,255,97,128,193,128,195,129,195,130,196,194,120,124, + 9,18,36,11,1,250,30,0,33,0,96,128,193,128,193,128, + 192,0,192,0,192,0,192,0,96,128,33,0,30,0,8,0, + 12,0,2,0,3,0,3,0,30,0,9,18,36,12,1,0, + 96,0,112,0,48,0,8,0,0,0,0,0,30,0,35,0, + 97,128,193,128,193,128,255,128,192,0,192,0,192,128,96,128, + 33,0,30,0,9,18,36,12,1,0,1,0,3,0,2,0, + 4,0,8,0,0,0,30,0,35,0,97,128,193,128,193,128, + 255,128,192,0,192,0,192,128,96,128,33,0,30,0,9,18, + 36,12,1,0,8,0,12,0,28,0,18,0,33,0,0,0, + 30,0,35,0,97,128,193,128,193,128,255,128,192,0,192,0, + 192,128,96,128,33,0,30,0,9,17,34,12,1,0,51,0, + 51,0,1,0,0,0,0,0,30,0,35,0,97,128,193,128, + 193,128,255,128,192,0,192,0,192,128,96,128,33,0,30,0, + 7,18,18,8,0,0,192,224,96,16,8,0,120,24,24,24, + 24,24,24,24,24,24,24,126,6,18,18,7,1,0,4,12, + 24,16,32,0,240,48,48,48,48,48,48,48,48,48,48,252, + 8,17,17,8,0,0,24,56,36,195,0,120,24,24,24,24, + 24,24,24,24,24,24,126,7,17,17,9,1,0,4,198,198, + 0,0,120,24,24,24,24,24,24,24,24,24,24,124,10,18, + 36,13,1,0,56,128,27,0,12,0,22,0,35,0,3,0, + 31,128,33,128,97,192,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,33,128,30,0,13,17,34,15,1,0,14,64, + 19,192,0,0,0,0,0,0,243,192,52,192,56,96,56,96, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,253,248, + 10,18,36,13,1,0,96,0,48,0,16,0,8,0,4,0, + 0,0,30,0,33,128,97,128,192,192,192,192,192,192,192,192, + 192,192,192,192,97,128,33,128,30,0,10,18,36,13,1,0, + 1,128,3,128,3,0,4,0,0,0,0,0,30,0,33,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,97,128, + 33,128,30,0,10,18,36,13,1,0,4,0,12,0,14,0, + 18,0,33,0,0,0,30,0,33,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,33,128,30,0,10,17, + 34,13,1,0,60,128,47,0,0,0,0,0,0,0,30,0, + 33,128,97,128,192,192,192,192,192,192,192,192,192,192,192,192, + 97,128,33,128,30,0,10,17,34,13,1,0,49,128,49,128, + 1,0,0,0,0,0,30,0,33,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,33,128,30,0,22,16, + 48,24,1,255,0,112,0,0,112,0,0,112,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,255,252,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,112, + 0,0,112,0,10,12,24,13,1,0,30,64,33,128,96,128, + 193,192,194,192,196,192,200,192,208,192,208,192,97,128,97,128, + 158,0,13,18,36,14,0,0,16,0,24,0,12,0,4,0, + 2,0,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,18,36,14, + 0,0,0,192,0,192,1,128,2,0,0,0,0,0,241,224, + 48,96,48,96,48,96,48,96,48,96,48,96,48,96,48,224, + 48,224,57,96,30,120,13,18,36,14,0,0,2,0,6,0, + 5,0,8,128,16,0,0,0,241,224,48,96,48,96,48,96, + 48,96,48,96,48,96,48,96,48,224,48,224,57,96,30,120, + 13,17,34,14,0,0,24,192,24,192,0,0,0,0,0,0, + 240,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,224,48,224,57,96,30,120,13,24,48,14,0,250,0,96, + 0,224,0,192,1,0,0,0,0,0,252,248,56,32,24,32, + 24,64,12,64,12,64,12,128,6,128,6,128,7,0,3,0, + 3,0,3,0,2,0,34,0,98,0,100,0,56,0,11,24, + 48,14,1,250,48,0,240,0,48,0,48,0,48,0,48,0, + 49,192,54,224,52,96,56,96,56,96,48,96,48,192,48,192, + 49,128,49,0,50,0,60,0,48,0,48,0,48,0,48,0, + 48,0,96,0,13,23,46,14,0,250,8,64,12,96,12,96, + 0,0,0,0,252,120,24,32,24,32,24,64,12,64,12,64, + 14,128,6,128,6,128,7,0,3,0,3,0,2,0,2,0, + 34,0,114,0,100,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 18 + Calculated Max Values w=22 h=24 x= 3 y= 8 dx=24 dy= 0 ascent=18 len=66 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =18 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18n[595] U8G_SECTION(".progmem.u8g_font_osr18n") = { + 0,68,33,235,248,18,0,0,0,0,42,57,0,18,250,18, + 0,10,10,20,14,2,8,12,0,12,0,204,192,201,192,42, + 0,30,0,235,192,201,192,12,0,12,0,22,22,66,24,1, + 252,0,16,0,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,255, + 255,252,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,0,16,0,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,3,8,8,7,2,252,192,224,224,32,32,64,64, + 128,7,1,1,11,2,6,254,3,3,3,7,2,0,224,224, + 224,8,24,24,12,2,250,1,1,2,2,2,4,4,4,12, + 8,8,24,16,16,16,32,32,32,64,64,64,128,128,128,12, + 18,36,15,1,0,15,0,16,192,32,64,96,96,96,32,192, + 48,192,48,192,48,192,48,192,48,192,48,192,48,192,48,96, + 32,96,96,32,64,16,192,15,0,9,18,36,15,3,0,8, + 0,8,0,24,0,248,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,255,128,10,18,36,15,2,0,30,0,99,128,129,192,128, + 192,128,192,224,192,240,192,32,192,1,128,3,0,6,0,8, + 0,16,0,32,0,64,64,192,64,255,192,255,192,11,18,36, + 15,2,0,63,0,97,128,192,192,224,192,240,192,0,192,0, + 192,1,128,62,0,1,128,0,192,0,96,96,96,240,96,240, + 96,192,192,65,128,63,0,12,18,36,15,2,0,1,0,3, + 0,3,0,7,0,15,0,11,0,19,0,51,0,35,0,67, + 0,195,0,131,0,255,224,3,0,3,0,3,0,3,0,31, + 240,11,18,36,15,2,0,96,192,127,128,126,0,64,0,64, + 0,64,0,95,0,97,128,64,192,64,224,0,96,0,96,96, + 96,240,96,224,192,192,192,65,128,62,0,11,18,36,15,2, + 0,15,0,24,128,48,64,96,192,96,192,64,0,192,0,207, + 0,209,192,224,192,224,224,224,96,224,96,224,96,96,224,96, + 192,49,128,15,0,10,18,36,15,3,0,255,192,255,192,128, + 64,128,64,128,128,0,128,1,0,1,0,2,0,6,0,6, + 0,12,0,12,0,30,0,30,0,30,0,30,0,14,0,12, + 18,36,15,2,0,31,128,48,224,96,96,192,48,192,48,224, + 48,240,32,124,64,63,128,55,224,96,240,192,112,192,48,192, + 48,192,48,96,96,112,192,31,128,11,18,36,15,2,0,30, + 0,49,128,96,192,224,192,192,64,192,96,192,96,192,224,96, + 224,113,96,30,96,0,96,0,64,96,192,96,192,64,128,65, + 0,62,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--26-260-72-72-P-138-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 18, '1' Height: 18 + Calculated Max Values w=26 h=24 x= 3 y=13 dx=28 dy= 0 ascent=20 len=72 + Font Bounding box w=68 h=33 x=-21 y=-8 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =18 descent=-6 + X Font ascent =19 descent=-6 + Max Font ascent =20 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr18r[3683] U8G_SECTION(".progmem.u8g_font_osr18r") = { + 0,68,33,235,248,18,4,197,10,125,32,127,250,20,250,19, + 250,0,0,0,7,0,0,3,18,18,7,2,0,224,224,224, + 224,224,224,64,64,64,64,64,64,64,64,0,224,224,224,6, + 5,5,10,2,13,204,204,204,204,72,14,18,36,18,2,0, + 4,32,4,32,4,32,4,32,4,32,255,252,8,64,8,64, + 8,64,8,64,8,64,24,64,255,252,16,128,16,128,16,128, + 16,128,16,128,11,22,44,15,2,254,9,0,9,0,31,128, + 41,64,73,32,73,32,73,96,73,96,105,0,61,0,31,128, + 15,192,9,192,9,96,233,32,233,32,201,32,201,64,105,64, + 31,128,9,0,9,0,18,18,54,22,2,0,56,2,0,68, + 4,0,198,8,0,198,8,0,198,16,0,198,32,0,198,32, + 0,68,64,0,56,64,0,0,134,0,1,25,128,1,48,128, + 2,48,192,4,48,192,4,48,192,8,48,192,8,24,128,16, + 15,0,18,18,54,20,1,0,7,128,0,8,64,0,24,64, + 0,24,64,0,24,192,0,28,128,0,15,0,0,6,31,192, + 15,6,0,23,6,0,35,132,0,97,196,0,192,232,0,192, + 240,0,192,112,0,224,120,128,96,220,128,63,15,0,2,5, + 5,7,2,13,192,192,192,192,64,6,23,23,10,3,252,8, + 16,48,32,64,64,192,128,128,128,128,128,128,128,128,192,64, + 64,96,32,16,24,12,6,23,23,9,1,252,64,32,48,16, + 24,8,8,12,4,4,4,4,4,4,12,8,8,8,16,16, + 32,64,192,10,10,20,14,2,8,12,0,12,0,204,192,201, + 192,42,0,30,0,235,192,201,192,12,0,12,0,22,22,66, + 24,1,252,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,0,16,0,0,16,0,0,16,0,0,16, + 0,255,255,252,0,16,0,0,16,0,0,16,0,0,16,0, + 0,16,0,0,16,0,0,16,0,0,16,0,0,16,0,0, + 16,0,0,16,0,3,8,8,7,2,252,192,224,224,32,32, + 64,64,128,7,1,1,11,2,6,254,3,3,3,7,2,0, + 224,224,224,8,24,24,12,2,250,1,1,2,2,2,4,4, + 4,12,8,8,24,16,16,16,32,32,32,64,64,64,128,128, + 128,12,18,36,15,1,0,15,0,16,192,32,64,96,96,96, + 32,192,48,192,48,192,48,192,48,192,48,192,48,192,48,192, + 48,96,32,96,96,32,64,16,192,15,0,9,18,36,15,3, + 0,8,0,8,0,24,0,248,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,255,128,10,18,36,15,2,0,30,0,99,128,129, + 192,128,192,128,192,224,192,240,192,32,192,1,128,3,0,6, + 0,8,0,16,0,32,0,64,64,192,64,255,192,255,192,11, + 18,36,15,2,0,63,0,97,128,192,192,224,192,240,192,0, + 192,0,192,1,128,62,0,1,128,0,192,0,96,96,96,240, + 96,240,96,192,192,65,128,63,0,12,18,36,15,2,0,1, + 0,3,0,3,0,7,0,15,0,11,0,19,0,51,0,35, + 0,67,0,195,0,131,0,255,224,3,0,3,0,3,0,3, + 0,31,240,11,18,36,15,2,0,96,192,127,128,126,0,64, + 0,64,0,64,0,95,0,97,128,64,192,64,224,0,96,0, + 96,96,96,240,96,224,192,192,192,65,128,62,0,11,18,36, + 15,2,0,15,0,24,128,48,64,96,192,96,192,64,0,192, + 0,207,0,209,192,224,192,224,224,224,96,224,96,224,96,96, + 224,96,192,49,128,15,0,10,18,36,15,3,0,255,192,255, + 192,128,64,128,64,128,128,0,128,1,0,1,0,2,0,6, + 0,6,0,12,0,12,0,30,0,30,0,30,0,30,0,14, + 0,12,18,36,15,2,0,31,128,48,224,96,96,192,48,192, + 48,224,48,240,32,124,64,63,128,55,224,96,240,192,112,192, + 48,192,48,192,48,96,96,112,192,31,128,11,18,36,15,2, + 0,30,0,49,128,96,192,224,192,192,64,192,96,192,96,192, + 224,96,224,113,96,30,96,0,96,0,64,96,192,96,192,64, + 128,65,0,62,0,3,12,12,7,2,0,224,224,224,0,0, + 0,0,0,0,224,224,224,4,16,16,8,2,252,96,240,240, + 0,0,0,0,0,96,240,240,16,16,32,32,64,20,21,63, + 24,2,253,0,0,48,0,0,192,0,3,0,0,12,0,0, + 48,0,0,224,0,3,128,0,14,0,0,24,0,0,96,0, + 0,192,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,1,128,0,0,96,0, + 0,16,22,6,18,24,1,4,255,255,252,0,0,0,0,0, + 0,0,0,0,0,0,0,255,255,252,20,21,63,24,2,253, + 192,0,0,48,0,0,12,0,0,3,0,0,0,192,0,0, + 112,0,0,28,0,0,7,0,0,1,128,0,0,96,0,0, + 48,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 1,128,0,6,0,0,24,0,0,96,0,0,128,0,0,9, + 18,36,12,2,0,62,0,67,0,129,128,129,128,225,128,97, + 128,3,0,6,0,12,0,16,0,48,0,34,0,34,0,28, + 0,0,0,28,0,28,0,28,0,18,18,54,20,1,0,3, + 248,0,12,6,0,16,109,0,33,156,128,67,12,128,70,8, + 64,142,8,64,142,24,64,140,24,64,140,16,64,140,48,128, + 140,48,128,140,241,0,71,30,0,96,0,0,32,0,0,24, + 12,0,7,240,0,18,18,54,20,2,0,0,128,0,0,192, + 0,1,192,0,1,192,0,1,224,0,3,224,0,2,96,0, + 2,112,0,6,112,0,4,48,0,4,56,0,12,56,0,15, + 248,0,24,28,0,16,12,0,16,12,0,48,14,0,254,63, + 192,15,18,36,17,1,0,255,240,24,28,24,12,24,6,24, + 6,24,6,24,12,24,24,31,224,24,24,24,12,24,6,24, + 6,24,6,24,6,24,12,24,28,255,240,14,18,36,18,2, + 0,7,132,24,108,32,60,96,28,96,12,192,12,192,4,192, + 0,192,0,192,0,192,0,192,4,96,4,96,4,32,8,48, + 24,24,48,7,192,17,18,54,20,1,0,255,240,0,24,12, + 0,24,6,0,24,3,0,24,3,0,24,1,128,24,1,128, + 24,1,128,24,1,128,24,1,128,24,1,128,24,1,128,24, + 1,128,24,3,0,24,3,0,24,6,0,24,12,0,255,240, + 0,15,18,36,18,1,0,255,254,24,6,24,2,24,2,24, + 2,24,34,24,32,24,96,31,224,24,96,24,32,24,32,24, + 34,24,2,24,2,24,6,24,14,255,254,15,18,36,17,1, + 0,255,254,24,6,24,2,24,2,24,2,24,34,24,32,24, + 96,31,224,24,96,24,32,24,32,24,32,24,0,24,0,24, + 0,24,0,127,0,17,18,54,19,2,0,7,196,0,24,100, + 0,48,28,0,96,28,0,96,12,0,96,4,0,192,4,0, + 192,0,0,192,127,128,192,28,0,192,28,0,192,28,0,192, + 28,0,96,28,0,96,28,0,48,52,0,24,100,0,7,132, + 0,18,18,54,20,1,0,255,63,192,24,6,0,24,6,0, + 24,6,0,24,6,0,24,6,0,24,6,0,24,6,0,31, + 254,0,24,6,0,24,6,0,24,6,0,24,6,0,24,6, + 0,24,6,0,24,6,0,24,6,0,255,63,192,8,18,18, + 10,1,0,255,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,255,12,18,36,14,1,0,7,240,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,97,128,241,128,225,128,193,128,67,0,62,0,17, + 18,54,19,1,0,255,63,128,24,14,0,24,8,0,24,16, + 0,24,32,0,24,64,0,24,128,0,25,192,0,26,192,0, + 28,224,0,24,96,0,24,112,0,24,56,0,24,56,0,24, + 28,0,24,28,0,24,14,0,255,127,128,15,18,36,17,1, + 0,255,0,24,0,24,0,24,0,24,0,24,0,24,0,24, + 0,24,0,24,0,24,0,24,2,24,2,24,2,24,6,24, + 6,24,14,255,254,20,18,54,22,1,0,252,3,240,28,3, + 128,30,5,128,22,5,128,22,5,128,23,5,128,19,9,128, + 19,9,128,19,137,128,19,145,128,17,145,128,17,209,128,17, + 209,128,16,225,128,16,225,128,16,225,128,16,65,128,254,79, + 240,18,18,54,19,1,0,252,15,192,28,2,0,30,2,0, + 22,2,0,23,2,0,19,130,0,17,130,0,17,194,0,16, + 226,0,16,226,0,16,114,0,16,50,0,16,58,0,16,30, + 0,16,14,0,16,14,0,16,6,0,254,2,0,15,18,36, + 18,2,0,7,192,24,48,48,24,32,8,96,12,96,12,192, + 6,192,6,192,6,192,6,192,6,192,6,96,12,96,12,32, + 8,48,24,24,48,7,192,15,18,36,17,1,0,255,240,24, + 28,24,12,24,6,24,6,24,6,24,12,24,24,31,240,24, + 0,24,0,24,0,24,0,24,0,24,0,24,0,24,0,255, + 0,15,22,44,18,2,252,7,192,24,48,48,24,32,8,96, + 12,96,12,192,6,192,6,192,6,192,6,192,6,192,6,96, + 12,99,140,36,76,52,120,28,114,7,226,0,98,0,118,0, + 60,0,24,17,18,54,19,1,0,255,240,0,24,24,0,24, + 12,0,24,12,0,24,12,0,24,12,0,24,24,0,31,224, + 0,24,48,0,24,56,0,24,24,0,24,24,0,24,24,0, + 24,28,128,24,28,128,24,28,128,24,31,0,255,15,0,13, + 18,36,16,2,0,30,32,97,160,192,96,192,96,192,32,192, + 32,224,0,124,0,63,128,15,224,129,240,128,112,128,24,192, + 24,192,24,224,16,152,32,135,192,15,18,36,18,2,0,255, + 254,195,14,131,6,131,2,3,2,3,2,3,2,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,31,240,19,18,54,21,1,0,255,15,224,24,1,0,24, + 1,0,24,1,0,24,1,0,24,1,0,24,1,0,24,1, + 0,24,1,0,24,1,0,24,1,0,24,1,0,24,1,0, + 24,1,0,12,1,0,12,2,0,6,4,0,1,248,0,18, + 18,54,20,1,0,255,31,192,28,3,0,28,2,0,12,2, + 0,14,6,0,6,4,0,7,4,0,7,8,0,3,8,0, + 3,136,0,3,144,0,1,144,0,1,208,0,0,224,0,0, + 224,0,0,224,0,0,64,0,0,64,0,26,18,72,28,1, + 0,255,63,159,192,28,14,3,0,12,6,2,0,12,14,2, + 0,14,15,6,0,14,15,4,0,6,19,4,0,7,19,140, + 0,7,19,136,0,3,49,136,0,3,161,216,0,3,161,208, + 0,1,160,208,0,1,192,240,0,1,192,224,0,0,192,96, + 0,0,128,96,0,0,128,64,0,18,18,54,20,1,0,127, + 191,128,14,12,0,14,12,0,7,8,0,7,16,0,3,176, + 0,1,160,0,1,192,0,0,192,0,0,224,0,1,96,0, + 3,112,0,2,56,0,4,56,0,12,28,0,8,12,0,24, + 14,0,254,63,192,17,18,54,19,1,0,255,31,128,28,6, + 0,28,4,0,14,4,0,6,8,0,7,8,0,3,144,0, + 3,160,0,1,224,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,7,252, + 0,14,18,36,17,2,0,127,252,112,56,96,48,64,112,64, + 224,128,192,1,192,3,128,3,0,7,0,14,0,12,4,28, + 4,56,4,48,12,112,28,224,56,255,248,5,23,23,10,3, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,248,8,24,24,12,2,250,128,128, + 128,64,64,64,32,32,32,16,16,16,16,8,8,8,4,4, + 4,2,2,2,1,1,5,23,23,10,2,251,248,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,248,11,9,18,15,2,9,4,0,14,0,10,0,17, + 0,49,128,32,128,64,64,64,96,128,32,14,1,2,14,0, + 252,255,252,4,4,4,11,2,13,192,224,96,16,11,12,24, + 13,1,0,30,0,99,0,65,128,97,128,33,128,15,128,113, + 128,193,128,195,160,195,160,197,160,121,192,11,18,36,13,0, + 0,240,0,48,0,48,0,48,0,48,0,48,0,51,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,40,192,39,128,9,12,24,11,1,0,30,0,33,0,96, + 128,193,128,193,128,192,0,192,0,192,0,192,128,96,128,33, + 0,30,0,12,18,36,14,1,0,7,192,0,192,0,192,0, + 192,0,192,0,192,28,192,98,192,97,192,193,192,192,192,192, + 192,192,192,192,192,192,192,97,192,97,192,30,240,9,12,24, + 12,1,0,30,0,35,0,97,128,193,128,193,128,255,128,192, + 0,192,0,192,128,96,128,33,0,30,0,9,18,36,9,1, + 0,15,0,24,128,49,128,49,0,48,0,48,0,254,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,48,0,48, + 0,48,0,254,0,12,18,36,15,2,250,30,112,97,176,225, + 240,192,192,192,192,192,192,225,128,97,128,30,0,224,0,255, + 0,127,192,64,96,128,32,128,32,128,32,192,64,63,128,13, + 18,36,15,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,51,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,6,18,18,8,1,0,112, + 112,32,0,0,0,240,48,48,48,48,48,48,48,48,48,48, + 252,7,24,24,8,255,250,6,6,0,0,0,0,62,6,6, + 6,6,6,6,6,6,6,6,6,6,6,198,198,140,120,12, + 18,36,14,1,0,240,0,48,0,48,0,48,0,48,0,48, + 0,49,240,48,128,49,0,50,0,50,0,54,0,59,0,51, + 0,49,128,49,192,48,224,253,240,6,18,18,8,1,0,240, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 252,19,12,36,21,1,0,243,199,0,52,249,128,56,113,192, + 56,97,192,48,97,192,48,97,192,48,97,192,48,97,192,48, + 97,192,48,97,192,48,97,192,253,251,224,13,12,24,15,1, + 0,243,192,52,192,56,96,56,96,48,96,48,96,48,96,48, + 96,48,96,48,96,48,96,253,248,10,12,24,13,1,0,30, + 0,33,128,97,128,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,33,128,30,0,11,18,36,14,1,250,243,128,52, + 192,56,96,56,96,48,96,48,96,48,96,48,96,48,96,56, + 96,56,192,55,128,48,0,48,0,48,0,48,0,48,0,252, + 0,12,18,36,13,1,250,28,64,98,64,97,192,192,192,192, + 192,192,192,192,192,192,192,192,192,97,192,97,192,30,192,0, + 192,0,192,0,192,0,192,0,192,3,240,9,12,24,11,1, + 0,243,128,52,128,57,128,56,128,56,0,48,0,48,0,48, + 0,48,0,48,0,48,0,252,0,9,12,24,11,1,0,125, + 0,131,0,129,0,193,0,240,0,124,0,31,0,131,128,128, + 128,192,128,224,128,159,0,8,17,17,10,1,0,16,16,16, + 48,48,254,48,48,48,48,48,48,48,49,49,51,30,13,12, + 24,14,0,0,241,224,48,96,48,96,48,96,48,96,48,96, + 48,96,48,96,48,224,48,224,57,96,30,120,13,12,24,14, + 1,0,252,248,48,96,48,64,24,64,24,128,12,128,12,128, + 13,0,7,0,7,0,2,0,2,0,19,12,36,21,1,0, + 253,251,224,48,96,128,48,96,128,24,113,0,24,177,0,12, + 177,0,12,154,0,13,26,0,7,28,0,7,12,0,2,12, + 0,2,8,0,12,12,24,14,1,0,249,224,48,128,57,0, + 25,0,14,0,14,0,6,0,11,0,19,0,17,128,33,192, + 243,240,13,18,36,14,0,250,252,248,56,32,24,32,24,64, + 12,64,12,64,12,128,6,128,6,128,7,0,3,0,3,0, + 2,0,2,0,34,0,98,0,100,0,56,0,9,12,24,12, + 1,0,255,128,195,128,131,0,134,0,142,0,12,0,24,0, + 56,0,48,128,96,128,96,128,255,128,6,23,23,12,3,251, + 12,16,48,48,48,48,56,24,24,24,16,224,48,16,24,24, + 56,48,48,48,48,16,12,1,24,24,7,3,250,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,6,23,23,11,3,251,192,32,48,48,48, + 112,96,96,96,96,32,28,48,96,96,96,96,112,48,48,48, + 32,192,15,5,10,17,1,4,32,4,254,2,143,194,129,254, + 64,124,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=29 h=28 x= 6 y=17 dx=32 dy= 0 ascent=28 len=88 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =22 descent=-7 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21[9530] U8G_SECTION(".progmem.u8g_font_osr21") = { + 0,76,38,232,247,21,5,131,12,189,32,255,249,28,248,22, + 249,0,0,0,8,0,0,4,21,21,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,64,0,96,240, + 240,96,7,5,5,11,2,17,238,204,204,204,68,15,21,42, + 19,2,0,2,16,6,16,6,16,4,16,4,48,4,48,255, + 254,4,32,12,32,12,32,8,32,8,96,8,96,8,64,255, + 254,24,64,24,64,16,192,16,192,16,128,16,128,13,25,50, + 17,2,254,5,0,5,0,15,128,53,96,37,16,69,24,69, + 24,69,56,69,56,117,48,61,0,63,0,15,192,7,224,5, + 240,5,48,101,24,229,24,229,24,197,24,69,48,69,32,61, + 192,7,0,5,0,19,21,63,25,3,0,60,1,0,70,2, + 0,66,2,0,195,4,0,195,8,0,195,8,0,195,16,0, + 195,16,0,66,32,0,102,32,0,56,64,0,0,67,0,0, + 140,192,1,8,64,1,24,96,2,24,96,2,24,96,4,24, + 96,4,24,96,8,8,64,8,7,128,20,21,63,23,2,0, + 3,128,0,12,64,0,8,32,0,24,32,0,24,32,0,24, + 96,0,28,64,0,12,128,0,15,0,0,7,15,240,15,1, + 128,27,129,0,51,193,0,97,194,0,96,226,0,224,244,0, + 224,124,0,224,56,0,224,60,0,96,60,32,59,198,192,3, + 5,5,7,2,17,224,192,192,192,64,6,28,28,10,3,250, + 4,12,24,16,32,32,64,64,64,128,128,128,128,128,128,128, + 128,128,128,192,64,64,32,32,16,24,8,4,6,28,28,11, + 2,250,128,192,64,32,48,16,24,8,8,8,4,4,4,4, + 4,4,4,4,12,8,8,24,16,48,32,96,192,128,10,12, + 24,14,2,9,12,0,14,0,204,64,228,192,53,0,14,0, + 63,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, + 1,252,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,255,255,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,4,8,8, + 8,2,251,224,240,240,16,16,16,32,64,7,2,2,11,2, + 7,254,254,4,4,4,8,2,0,96,240,240,96,9,28,56, + 13,2,250,0,128,0,128,1,128,1,0,1,0,1,0,2, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,16,0,16,0,16,0,32,0,32,0,32,0,64, + 0,64,0,64,0,192,0,128,0,128,0,14,21,42,17,1, + 0,7,128,24,64,48,32,32,48,96,16,96,24,96,24,224, + 24,224,24,224,24,224,28,224,28,224,24,224,24,224,24,96, + 24,96,24,96,48,48,32,16,96,15,192,10,21,42,17,3, + 0,2,0,6,0,6,0,14,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,255,192,12,21,42,17,2, + 0,31,0,32,192,64,96,128,112,128,112,192,112,240,112,112, + 112,32,96,0,224,0,192,1,0,6,0,12,0,24,0,48, + 16,96,16,64,16,224,112,255,240,255,240,12,21,42,17,2, + 0,31,0,97,192,192,224,224,96,240,96,112,112,0,96,0, + 96,0,224,48,192,63,0,0,192,0,96,0,112,0,112,96, + 112,240,112,240,112,192,96,192,192,127,128,14,21,42,17,2, + 0,0,64,0,192,1,192,1,192,3,192,7,192,5,192,13, + 192,9,192,17,192,49,192,33,192,65,192,193,192,255,252,1, + 192,1,192,1,192,1,192,1,192,15,252,12,21,42,17,2, + 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,79, + 0,112,192,64,96,64,96,0,112,0,112,0,112,96,112,240, + 112,240,112,224,96,192,224,64,192,63,128,12,21,42,17,2, + 0,7,128,24,64,16,96,48,224,96,224,96,192,96,0,224, + 0,231,128,232,192,240,96,240,96,224,112,224,112,224,112,224, + 112,96,112,96,96,112,96,48,192,31,128,11,21,42,17,3, + 0,255,224,255,224,192,32,128,32,128,64,128,64,0,64,0, + 128,1,0,1,0,2,0,6,0,6,0,12,0,12,0,12, + 0,30,0,30,0,30,0,30,0,30,0,14,21,42,17,2, + 0,15,128,48,96,96,48,224,24,224,24,224,24,224,24,240, + 16,124,32,63,192,15,224,51,240,96,248,224,56,224,28,224, + 28,224,24,224,24,96,24,112,48,31,192,12,21,42,17,2, + 0,15,0,48,128,96,64,96,96,224,96,224,96,224,112,224, + 112,224,112,96,112,96,240,49,176,14,48,0,48,0,32,48, + 96,112,96,112,64,96,192,96,128,63,0,4,14,14,8,2, + 0,96,240,240,96,0,0,0,0,0,0,96,240,240,96,4, + 18,18,8,2,251,96,240,240,96,0,0,0,0,0,0,224, + 240,240,16,16,16,32,64,22,24,72,27,2,251,0,0,12, + 0,0,56,0,0,96,0,1,128,0,7,0,0,28,0,0, + 112,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 0,224,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,3,128,0,0,224,0, + 0,56,0,0,12,24,7,21,26,1,5,255,255,255,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 22,24,72,27,3,251,192,0,0,112,0,0,24,0,0,6, + 0,0,3,128,0,0,224,0,0,56,0,0,12,0,0,3, + 0,0,0,192,0,0,112,0,0,28,0,0,28,0,0,48, + 0,0,192,0,3,128,0,14,0,0,56,0,0,96,0,1, + 128,0,7,0,0,28,0,0,112,0,0,192,0,0,11,21, + 42,14,2,0,30,0,97,128,128,192,128,192,240,224,240,192, + 97,192,1,128,3,128,6,0,12,0,8,0,17,0,17,0, + 17,0,14,0,0,0,12,0,30,0,30,0,12,0,21,21, + 63,25,2,1,3,255,0,12,0,128,24,0,64,48,0,32, + 32,59,144,64,199,16,65,135,8,131,7,8,135,6,8,134, + 6,8,142,14,8,142,14,8,142,12,16,142,28,16,142,28, + 32,70,44,64,67,199,128,32,0,0,16,0,0,8,1,128, + 7,222,0,20,21,63,22,1,0,0,32,0,0,96,0,0, + 96,0,0,112,0,0,240,0,0,240,0,0,184,0,1,56, + 0,1,56,0,3,28,0,3,28,0,2,28,0,6,14,0, + 6,14,0,7,254,0,12,7,0,12,7,0,8,7,0,24, + 3,128,24,3,128,255,31,240,16,21,42,20,2,0,255,240, + 28,12,28,6,28,7,28,7,28,7,28,7,28,6,28,12, + 31,240,28,28,28,6,28,6,28,7,28,7,28,7,28,7, + 28,7,28,6,28,12,255,240,15,21,42,19,2,1,15,226, + 16,54,48,30,32,14,96,6,96,6,224,6,224,2,224,0, + 224,0,224,0,224,0,224,0,224,2,96,2,96,2,96,4, + 32,4,48,12,24,8,7,240,19,21,63,22,2,0,255,248, + 0,28,6,0,28,3,0,28,1,128,28,1,128,28,1,192, + 28,0,192,28,0,192,28,0,192,28,0,224,28,0,224,28, + 0,224,28,0,192,28,0,192,28,0,192,28,1,192,28,1, + 128,28,1,0,28,3,0,28,6,0,255,248,0,17,21,63, + 20,2,0,255,255,128,28,3,128,28,3,128,28,1,128,28, + 1,128,28,0,128,28,32,128,28,32,0,28,32,0,28,96, + 0,31,224,0,28,96,0,28,32,0,28,32,128,28,32,128, + 28,0,128,28,1,128,28,1,128,28,3,128,28,7,128,255, + 255,128,17,21,63,20,2,0,255,255,128,28,3,128,28,3, + 128,28,1,128,28,1,128,28,0,128,28,32,128,28,32,0, + 28,32,0,28,96,0,31,224,0,28,96,0,28,32,0,28, + 32,0,28,32,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,21,63,21,2,1,15,226,0, + 24,26,0,48,14,0,32,14,0,96,6,0,96,6,0,224, + 2,0,224,2,0,224,0,0,224,0,0,224,127,192,224,14, + 0,224,14,0,224,14,0,224,14,0,96,14,0,96,14,0, + 32,14,0,48,26,0,16,50,0,15,226,0,20,21,63,23, + 2,0,255,15,240,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,31,255,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,15, + 240,8,21,21,12,2,0,255,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,255,13,21,42,15, + 1,0,7,248,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 112,224,240,192,240,192,192,192,65,128,127,0,19,21,63,22, + 2,0,255,31,224,28,7,0,28,6,0,28,12,0,28,8, + 0,28,16,0,28,32,0,28,64,0,28,192,0,29,224,0, + 30,224,0,28,112,0,28,112,0,28,56,0,28,28,0,28, + 28,0,28,14,0,28,14,0,28,7,0,28,7,0,255,63, + 224,16,21,42,20,2,0,255,128,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,1,28,1,28,1,28,1,28,3,28,3,28,15,255, + 255,21,21,63,25,2,0,252,1,248,30,1,224,30,1,224, + 30,2,224,22,2,224,23,2,224,23,2,224,19,4,224,19, + 132,224,19,132,224,17,132,224,17,200,224,17,200,224,16,200, + 224,16,208,224,16,240,224,16,240,224,16,112,224,16,96,224, + 16,96,224,254,39,248,20,21,63,23,2,0,252,7,240,28, + 0,128,30,0,128,31,0,128,23,0,128,19,128,128,19,192, + 128,17,192,128,16,224,128,16,240,128,16,112,128,16,56,128, + 16,56,128,16,28,128,16,30,128,16,14,128,16,7,128,16, + 7,128,16,3,128,16,1,128,254,1,128,17,22,66,20,2, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,21,63,20,2,0,255,248,0,28,14,0,28, + 7,0,28,3,0,28,3,0,28,3,128,28,3,0,28,3, + 0,28,6,0,28,12,0,31,240,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,255,128,0,17,27,81,20,2,251,0,128, + 0,7,112,0,24,8,0,16,12,0,48,6,0,96,6,0, + 96,3,0,96,3,0,224,3,0,224,3,0,224,3,0,224, + 3,128,224,3,128,224,3,0,224,3,0,96,3,0,96,3, + 0,97,198,0,51,38,0,26,60,0,14,60,0,7,48,128, + 0,241,0,0,49,0,0,57,0,0,31,0,0,14,0,18, + 21,63,21,2,0,255,248,0,28,14,0,28,6,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,6,0,28,12,0, + 31,240,0,28,24,0,28,24,0,28,12,0,28,12,0,28, + 12,0,28,14,0,28,14,64,28,14,64,28,14,64,28,7, + 128,255,131,128,14,21,42,18,3,1,63,144,96,208,192,112, + 192,48,192,16,192,16,224,16,240,16,124,0,63,128,31,224, + 7,240,128,248,128,56,128,28,128,12,192,12,224,12,224,8, + 144,16,142,224,17,21,63,21,2,0,255,255,128,225,195,128, + 193,193,128,193,193,128,193,192,128,129,192,128,129,192,128,129, + 192,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,15,248,0,20,21,63,23,2,0,255, + 7,240,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,12,0,128,12,1,0,6,2,0,3,252,0,20,22, + 66,23,2,255,255,143,240,28,1,192,28,1,128,14,1,128, + 14,1,0,14,1,0,7,3,0,7,2,0,7,2,0,3, + 134,0,3,132,0,3,132,0,1,196,0,1,200,0,1,200, + 0,0,232,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,32,0,0,32,0,29,22,88,32,2,255,255,63,231,248, + 28,7,0,192,28,7,0,128,28,7,0,128,12,7,128,128, + 14,15,129,128,14,11,129,0,6,9,129,0,7,9,195,0, + 7,25,194,0,7,17,194,0,3,16,230,0,3,144,228,0, + 3,176,228,0,1,160,108,0,1,224,120,0,1,224,120,0, + 1,192,120,0,0,192,48,0,0,192,48,0,0,192,48,0, + 0,128,16,0,19,21,63,22,2,0,255,159,224,14,7,0, + 14,6,0,7,4,0,7,12,0,3,136,0,3,208,0,1, + 208,0,1,224,0,0,224,0,0,112,0,0,240,0,1,184, + 0,1,56,0,2,28,0,6,28,0,4,14,0,8,14,0, + 24,7,0,24,7,0,255,31,224,19,21,63,21,1,0,255, + 143,224,30,3,128,14,3,0,14,2,0,7,2,0,7,4, + 0,3,132,0,1,200,0,1,200,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,7,254,0,15,21, + 42,19,2,0,63,254,56,14,112,28,96,56,64,56,64,112, + 64,240,0,224,1,192,1,192,3,128,7,128,7,0,14,2, + 14,2,28,2,60,2,56,6,112,6,240,14,255,254,6,27, + 27,11,3,250,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,252,9, + 28,56,13,2,250,128,0,128,0,192,0,64,0,64,0,64, + 0,32,0,32,0,32,0,16,0,16,0,16,0,24,0,8, + 0,8,0,12,0,4,0,4,0,4,0,2,0,2,0,2, + 0,1,0,1,0,1,0,1,128,0,128,0,128,6,27,27, + 11,2,250,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,252,13,11, + 22,17,2,10,2,0,2,0,5,0,13,128,8,128,24,192, + 16,64,32,32,96,48,64,16,192,24,15,1,2,15,0,251, + 255,254,5,5,5,13,2,16,192,224,96,48,8,13,14,28, + 15,1,0,31,0,33,128,97,192,113,192,113,192,1,192,15, + 192,49,192,97,192,225,192,225,200,225,200,226,216,60,240,13, + 21,42,15,1,0,248,0,56,0,56,0,56,0,56,0,56, + 0,56,0,59,192,60,96,56,48,56,48,56,48,56,48,56, + 56,56,56,56,48,56,48,56,48,56,32,44,96,35,192,10, + 14,28,12,1,0,31,0,48,128,96,64,96,192,225,192,224, + 128,224,0,224,0,224,0,224,0,96,64,96,128,48,128,31, + 0,13,21,42,15,1,0,3,224,0,224,0,224,0,224,0, + 224,0,224,0,224,30,224,49,224,97,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 248,10,14,28,13,1,0,30,0,49,128,97,128,96,192,224, + 192,224,192,255,192,224,0,224,0,224,64,96,64,96,64,48, + 128,31,0,10,21,42,10,1,0,15,0,24,128,57,192,57, + 128,56,0,56,0,56,0,254,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,254,0,14,21,42,16,2,249,31,56,113,200,96,220,224, + 248,224,224,224,224,224,224,96,192,49,128,31,0,96,0,128, + 0,224,0,127,224,56,112,64,16,128,16,128,16,128,48,64, + 96,63,128,14,21,42,16,1,0,248,0,56,0,56,0,56, + 0,56,0,56,0,56,0,57,192,62,96,60,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,252,252,6,21,21,7,1,0,112,112,112,0,0,0,0, + 240,112,112,112,112,112,112,112,112,112,112,112,112,252,8,28, + 28,9,255,249,6,7,6,0,0,0,0,31,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,70,230,198,204,120, + 13,21,42,15,1,0,248,0,56,0,56,0,56,0,56,0, + 56,0,56,0,57,248,56,192,56,128,57,0,57,0,58,0, + 63,0,63,0,59,128,57,192,56,192,56,224,56,224,253,248, + 7,21,21,8,1,0,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,254,21,14,42,23,1, + 0,249,195,192,62,100,224,60,120,96,56,120,96,56,112,96, + 56,112,96,56,112,96,56,112,96,56,112,96,56,112,96,56, + 112,96,56,112,96,56,112,96,252,253,248,14,14,28,16,1, + 0,249,192,62,96,60,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,252,252,12,14,28, + 14,1,0,15,0,48,128,96,192,96,96,224,96,224,96,224, + 112,224,112,224,96,224,96,96,96,96,192,48,128,15,0,13, + 21,42,15,1,249,251,192,60,96,56,48,56,48,56,48,56, + 48,56,56,56,56,56,48,56,48,56,48,56,48,60,96,59, + 192,56,0,56,0,56,0,56,0,56,0,56,0,252,0,13, + 21,42,15,1,249,30,32,49,32,96,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 224,0,224,0,224,0,224,0,224,0,224,0,224,3,248,10, + 14,28,12,1,0,249,128,58,64,60,192,60,192,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,252, + 0,10,14,28,13,2,0,60,128,195,128,129,128,128,128,192, + 128,240,0,62,0,15,128,131,192,128,192,192,64,192,64,160, + 128,159,0,8,20,20,10,1,0,16,16,16,16,48,48,254, + 48,48,48,48,48,48,48,48,49,49,49,59,30,14,14,28, + 16,1,0,248,240,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,240,25,112,14,124,15, + 14,28,15,0,0,254,126,56,16,24,16,28,16,12,32,12, + 32,6,32,6,64,7,64,3,64,3,128,1,128,1,128,1, + 0,22,14,42,22,0,0,254,252,252,56,56,32,24,56,32, + 28,56,32,12,56,64,12,60,64,6,76,64,6,76,128,7, + 70,128,3,134,128,3,135,0,1,131,0,1,131,0,1,2, + 0,14,14,28,16,1,0,124,248,56,96,24,64,12,128,14, + 128,7,0,7,0,3,128,5,128,5,192,8,192,16,224,16, + 96,249,252,15,21,42,15,0,249,254,126,24,16,24,16,28, + 16,12,32,12,32,14,32,6,64,6,64,6,64,3,128,3, + 128,3,128,1,128,1,0,1,0,1,0,98,0,114,0,100, + 0,56,0,10,14,28,13,1,0,255,192,193,192,129,128,131, + 0,135,0,6,0,14,0,28,0,24,0,56,64,48,64,112, + 64,224,192,255,192,6,27,27,12,3,250,12,24,48,48,48, + 48,48,56,24,24,24,16,48,192,48,16,24,24,24,56,48, + 48,48,48,48,16,12,1,28,28,8,4,250,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,27,27,12,3,250,128,96, + 32,48,48,48,112,96,96,96,96,96,32,28,48,96,96,96, + 96,96,112,48,48,48,32,96,192,16,6,12,18,1,5,56, + 2,126,1,143,193,131,241,128,255,64,62,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,8, + 0,0,4,21,21,8,2,249,96,240,240,96,0,64,64,96, + 96,96,96,96,96,96,96,240,240,240,240,240,96,10,21,42, + 17,3,253,4,0,4,0,4,0,4,0,31,0,52,128,100, + 64,100,192,229,192,228,128,228,0,228,0,228,0,228,0,100, + 64,100,64,52,128,31,0,4,0,4,0,4,0,16,21,42, + 21,2,0,0,60,0,194,0,131,1,135,1,135,3,130,3, + 128,3,128,3,128,63,128,3,240,3,128,3,128,3,128,3, + 0,3,0,123,1,142,1,135,3,135,254,120,252,13,13,26, + 17,2,4,143,136,112,112,96,48,64,16,128,8,128,8,128, + 8,128,8,128,8,64,16,96,48,112,112,143,136,16,21,42, + 17,1,0,252,63,56,8,56,8,24,16,28,16,28,32,14, + 32,14,64,6,64,7,128,3,128,63,248,3,128,3,128,63, + 248,3,128,3,128,3,128,3,128,3,128,31,240,1,27,27, + 8,4,251,128,128,128,128,128,128,128,128,128,128,128,0,0, + 0,0,0,128,128,128,128,128,128,128,128,128,128,128,11,27, + 54,19,3,250,30,0,49,0,97,128,99,128,97,0,112,0, + 56,0,60,0,62,0,79,0,131,128,129,192,128,224,192,96, + 224,32,112,32,56,64,28,128,15,0,7,0,3,0,1,128, + 33,128,113,128,97,128,35,0,28,0,8,3,3,12,2,16, + 195,231,195,21,22,66,23,1,0,0,32,0,3,222,0,12, + 1,128,24,0,192,48,114,96,33,142,32,67,6,16,67,2, + 16,135,2,8,135,0,8,135,0,8,135,0,8,135,0,8, + 135,0,8,135,2,8,67,2,16,67,4,16,33,132,32,48, + 120,96,24,0,192,12,1,128,3,222,0,8,9,9,12,2, + 12,120,196,12,52,68,197,205,118,254,7,12,12,14,3,1, + 16,34,98,68,196,196,196,196,196,66,34,16,14,6,12,16, + 1,5,255,252,0,4,0,4,0,4,0,4,0,4,7,2, + 2,11,2,7,254,254,21,22,66,23,1,0,0,32,0,3, + 222,0,12,1,128,24,0,192,63,248,96,35,140,32,67,142, + 16,67,142,16,131,142,8,131,140,8,131,240,8,131,140,8, + 131,140,8,131,142,8,131,142,72,67,142,80,67,134,80,47, + 195,160,48,0,96,24,0,192,12,1,128,3,222,0,8,1, + 1,14,3,17,255,8,8,8,16,4,13,60,66,129,129,129, + 129,66,60,24,21,63,26,1,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,255,255,255,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,0,8,0,0,8,0,0,8,0,0, + 0,0,0,0,0,255,255,255,8,13,13,13,3,8,60,198, + 135,199,231,6,12,24,48,65,193,255,255,9,13,26,13,3, + 8,60,0,70,0,67,0,99,0,3,0,6,0,120,0,7, + 0,3,0,227,128,227,0,135,0,124,0,5,5,5,13,6, + 16,24,56,48,96,128,15,22,44,18,2,248,192,64,192,96, + 224,224,192,224,192,224,192,96,192,96,192,96,64,96,64,64, + 64,66,192,194,177,190,143,12,128,0,128,0,192,0,192,0, + 192,0,224,0,224,0,96,0,12,26,52,16,2,251,31,240, + 124,64,252,64,252,64,252,64,252,64,252,64,124,64,60,64, + 4,64,4,64,4,64,4,64,4,64,4,64,4,64,4,64, + 4,64,4,64,4,64,4,64,4,64,4,64,4,64,4,64, + 4,64,4,4,4,8,2,8,96,240,240,96,6,7,7,13, + 3,250,32,32,48,8,12,140,120,6,12,12,13,4,9,16, + 48,240,48,48,48,48,48,48,48,48,252,7,10,10,11,2, + 11,56,68,198,198,198,198,198,68,56,254,8,12,12,14,3, + 1,8,132,70,66,35,35,35,35,34,70,68,8,19,21,63, + 25,4,0,16,3,0,48,2,0,240,4,0,48,4,0,48, + 8,0,48,8,0,48,16,0,48,48,0,48,32,0,48,65, + 128,48,67,128,48,131,128,252,133,128,1,9,128,3,9,128, + 2,17,128,4,31,224,4,1,128,8,1,128,8,1,128,16, + 7,224,19,21,63,25,4,0,16,2,0,48,2,0,240,4, + 0,48,4,0,48,8,0,48,16,0,48,16,0,48,32,0, + 48,39,128,48,72,192,48,80,224,48,144,224,252,156,224,1, + 12,192,2,0,192,2,1,0,4,6,0,4,12,32,8,8, + 32,8,31,224,16,31,224,20,21,63,25,3,0,60,1,0, + 70,1,0,67,2,0,99,2,0,3,4,0,6,12,0,120, + 8,0,7,16,0,3,16,0,227,160,192,227,33,192,135,65, + 192,124,130,192,0,132,192,1,4,192,1,8,192,2,15,240, + 2,0,192,4,0,192,8,0,192,8,3,240,11,21,42,14, + 1,249,12,0,30,0,30,0,12,0,0,0,14,0,17,0, + 17,0,17,0,2,0,6,0,28,0,56,0,112,0,224,192, + 225,224,225,224,224,32,96,32,112,64,31,128,20,28,84,22, + 1,0,3,0,0,3,128,0,1,128,0,0,192,0,0,64, + 0,0,0,0,0,0,0,0,32,0,0,96,0,0,96,0, + 0,112,0,0,240,0,0,240,0,0,184,0,1,56,0,1, + 56,0,3,28,0,3,28,0,2,28,0,6,14,0,6,14, + 0,7,254,0,12,7,0,12,7,0,8,7,0,24,3,128, + 24,3,128,255,31,240,20,28,84,22,1,0,0,4,0,0, + 12,0,0,24,0,0,48,0,0,32,0,0,0,0,0,0, + 0,0,32,0,0,96,0,0,96,0,0,112,0,0,240,0, + 0,240,0,1,184,0,1,56,0,1,56,0,3,28,0,3, + 28,0,2,28,0,6,14,0,6,14,0,7,254,0,12,7, + 0,12,7,0,8,7,0,24,3,128,24,3,128,255,31,240, + 20,28,84,22,1,0,0,32,0,0,96,0,0,240,0,1, + 152,0,3,4,0,0,0,0,0,0,0,0,32,0,0,96, + 0,0,96,0,0,112,0,0,240,0,0,240,0,0,184,0, + 1,56,0,1,56,0,3,28,0,3,28,0,2,28,0,6, + 14,0,6,14,0,7,254,0,12,7,0,12,7,0,8,7, + 0,24,3,128,24,3,128,255,31,240,20,27,81,22,1,0, + 1,228,0,3,252,0,2,56,0,0,0,0,0,0,0,0, + 0,0,0,32,0,0,96,0,0,96,0,0,112,0,0,240, + 0,0,240,0,0,184,0,1,184,0,1,56,0,3,28,0, + 3,28,0,2,28,0,6,14,0,6,14,0,7,254,0,12, + 7,0,12,7,0,8,7,0,24,3,128,24,3,128,255,31, + 240,19,27,81,22,2,0,6,24,0,7,28,0,6,24,0, + 0,0,0,0,0,0,0,0,0,0,64,0,0,192,0,0, + 224,0,0,224,0,1,224,0,1,224,0,1,112,0,3,112, + 0,2,48,0,2,56,0,6,56,0,4,24,0,4,28,0, + 12,28,0,15,252,0,8,14,0,24,14,0,24,6,0,24, + 7,0,56,7,0,254,31,224,20,28,84,23,2,0,0,96, + 0,1,152,0,1,8,0,1,8,0,1,152,0,0,96,0, + 0,0,0,0,96,0,0,96,0,0,96,0,0,240,0,0, + 240,0,0,240,0,1,184,0,1,56,0,1,56,0,3,28, + 0,2,28,0,2,28,0,6,14,0,4,14,0,15,254,0, + 8,7,0,8,7,0,24,7,0,24,3,128,56,3,128,255, + 31,240,27,21,84,30,1,0,0,63,255,224,0,15,0,224, + 0,15,0,96,0,31,0,96,0,23,0,32,0,55,0,32, + 0,39,8,32,0,103,8,0,0,71,8,0,0,199,24,0, + 0,135,248,0,1,7,24,0,3,7,8,0,2,7,8,32, + 7,255,8,32,4,7,0,32,12,7,0,32,8,7,0,96, + 24,7,0,96,56,7,1,224,255,63,255,224,15,28,56,19, + 2,250,15,226,16,54,48,30,32,14,96,6,96,6,224,6, + 224,2,224,0,224,0,224,0,224,0,224,0,224,2,96,2, + 96,2,96,4,32,4,48,12,24,8,6,112,1,128,1,0, + 1,192,0,96,0,112,8,96,7,192,17,28,84,20,2,0, + 4,0,0,6,0,0,3,0,0,1,0,0,0,128,0,0, + 0,0,0,0,0,255,255,128,28,3,128,28,3,128,28,1, + 128,28,1,128,28,0,128,28,32,128,28,32,0,28,32,0, + 28,96,0,31,224,0,28,96,0,28,32,0,28,32,128,28, + 32,128,28,0,128,28,1,128,28,1,128,28,3,128,28,7, + 128,255,255,128,17,28,84,20,2,0,0,24,0,0,56,0, + 0,48,0,0,96,0,0,128,0,0,0,0,0,0,0,255, + 255,128,28,3,128,28,3,128,28,1,128,28,1,128,28,0, + 128,28,32,128,28,32,0,28,32,0,28,96,0,31,224,0, + 28,96,0,28,32,0,28,32,128,28,32,128,28,0,128,28, + 1,128,28,1,128,28,3,128,28,7,128,255,255,128,17,28, + 84,20,2,0,0,128,0,0,192,0,1,192,0,2,32,0, + 4,24,0,0,0,0,0,0,0,255,255,128,28,3,128,28, + 3,128,28,1,128,28,1,128,28,0,128,28,32,128,28,32, + 0,28,32,0,28,96,0,31,224,0,28,96,0,28,32,0, + 28,32,128,28,32,128,28,0,128,28,1,128,28,1,128,28, + 3,128,28,7,128,255,255,128,17,27,81,20,2,0,6,48, + 0,7,56,0,6,48,0,0,0,0,0,0,0,0,0,0, + 255,255,128,28,7,128,28,3,128,28,1,128,28,1,128,28, + 1,128,28,32,128,28,32,0,28,32,0,28,96,0,31,224, + 0,28,96,0,28,32,0,28,32,128,28,32,128,28,1,0, + 28,1,128,28,1,128,28,3,128,28,7,128,255,255,128,8, + 28,28,12,2,0,192,224,96,48,24,0,0,255,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 255,9,28,56,12,2,0,1,0,3,0,6,0,4,0,8, + 0,0,0,0,0,255,128,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,8, + 28,28,12,2,0,8,24,28,38,193,0,0,255,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 255,9,27,54,11,2,0,195,0,227,128,195,0,0,0,0, + 0,0,0,255,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,0,19,21,63, + 22,2,0,255,248,0,28,6,0,28,3,0,28,1,128,28, + 1,192,28,0,192,28,0,192,28,0,224,28,0,224,255,128, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,192, + 28,0,192,28,1,128,28,1,128,28,3,0,28,6,0,255, + 248,0,20,27,81,23,2,0,1,226,0,3,254,0,2,28, + 0,0,0,0,0,0,0,0,0,0,252,7,240,28,0,128, + 30,0,128,31,0,128,23,0,128,19,128,128,19,192,128,17, + 192,128,16,224,128,16,240,128,16,112,128,16,56,128,16,56, + 128,16,28,128,16,30,128,16,14,128,16,7,128,16,7,128, + 16,3,128,16,1,128,254,1,128,17,28,84,20,2,0,12, + 0,0,14,0,0,6,0,0,3,0,0,1,128,0,0,0, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,28,84,20,2,0,0,24,0,0,56,0,0, + 112,0,0,64,0,0,128,0,0,0,0,0,128,0,7,112, + 0,24,8,0,16,12,0,48,6,0,96,6,0,96,3,0, + 96,3,0,224,3,0,224,3,0,224,3,0,224,3,128,224, + 3,128,224,3,0,224,3,0,96,3,0,96,3,0,96,6, + 0,48,6,0,16,12,0,24,8,0,7,240,0,17,28,84, + 20,2,0,0,128,0,1,128,0,3,192,0,6,32,0,12, + 16,0,0,8,0,0,128,0,7,112,0,24,8,0,16,12, + 0,48,6,0,96,6,0,96,3,0,96,3,0,224,3,0, + 224,3,0,224,3,0,224,3,128,224,3,128,224,3,0,224, + 3,0,96,3,0,96,3,0,96,6,0,48,6,0,16,12, + 0,24,8,0,7,240,0,17,27,81,20,2,0,7,136,0, + 15,248,0,8,112,0,0,0,0,0,0,0,0,128,0,7, + 112,0,24,8,0,16,12,0,48,6,0,96,6,0,96,3, + 0,96,3,0,224,3,0,224,3,0,224,3,0,224,3,128, + 224,3,128,224,3,0,224,3,0,96,3,0,96,3,0,96, + 6,0,48,6,0,16,12,0,24,8,0,7,240,0,17,27, + 81,20,2,0,12,48,0,14,56,0,12,48,0,0,0,0, + 0,0,0,0,128,0,7,112,0,24,8,0,16,12,0,48, + 6,0,96,6,0,96,3,0,96,3,0,224,3,0,224,3, + 0,224,3,0,224,3,128,224,3,128,224,3,0,224,3,0, + 96,3,0,96,3,0,96,6,0,48,6,0,16,12,0,24, + 8,0,7,240,0,18,18,54,27,5,255,128,0,192,192,1, + 128,96,3,0,48,6,0,24,12,0,12,24,0,6,48,0, + 3,96,0,1,192,0,1,192,0,3,96,0,6,48,0,12, + 24,0,24,12,0,48,6,0,96,3,0,64,1,128,128,0, + 192,17,21,63,20,2,1,7,241,0,8,15,0,16,14,0, + 48,6,0,96,14,0,96,27,0,96,19,0,224,35,0,224, + 99,0,224,195,128,225,131,128,225,3,0,226,3,0,230,3, + 0,236,3,0,104,3,0,112,6,0,112,6,0,112,12,0, + 88,8,0,143,240,0,20,28,84,23,2,0,3,0,0,3, + 128,0,1,128,0,0,192,0,0,32,0,0,0,0,0,0, + 0,255,7,240,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,12,0,128,12,1,0,6,2,0,3,252,0, + 20,28,84,23,2,0,0,4,0,0,12,0,0,24,0,0, + 16,0,0,32,0,0,0,0,0,0,0,255,7,240,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,12,0, + 128,12,1,0,6,2,0,3,252,0,20,28,84,23,2,0, + 0,32,0,0,96,0,0,112,0,0,136,0,3,4,0,0, + 0,0,0,0,0,255,7,240,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,28,0,128,28,0,128,12,1,128,12,1,0,6,2, + 0,3,252,0,20,27,81,23,2,0,1,134,0,3,142,0, + 1,134,0,0,0,0,0,0,0,0,0,0,255,131,240,28, + 0,128,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,12, + 0,128,12,1,0,6,2,0,3,252,0,19,28,84,21,1, + 0,0,4,0,0,12,0,0,24,0,0,16,0,0,32,0, + 0,0,0,0,0,0,255,143,224,30,3,128,14,3,0,14, + 2,0,7,2,0,7,4,0,3,132,0,1,200,0,1,200, + 0,0,240,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,254,0,17,21,63,20,2,0,255,128,0,28,0, + 0,28,0,0,31,240,0,28,12,0,28,6,0,28,3,0, + 28,3,0,28,3,128,28,3,128,28,3,0,28,3,0,28, + 6,0,28,12,0,31,240,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,255,128,0,13,21,42,15,1,0, + 7,192,12,96,24,112,56,112,56,112,56,96,56,192,59,0, + 56,192,56,96,56,48,56,48,56,56,56,56,56,56,56,56, + 58,56,63,56,62,48,60,48,251,192,13,21,42,15,1,0, + 96,0,96,0,48,0,24,0,8,0,4,0,0,0,31,0, + 97,128,65,192,97,192,113,192,1,192,15,192,49,192,97,192, + 193,192,193,200,195,200,196,216,56,240,13,21,42,15,1,0, + 0,192,1,192,1,128,3,0,6,0,4,0,0,0,31,0, + 33,128,96,192,112,192,112,192,0,192,7,192,56,192,96,192, + 224,192,224,200,225,200,226,216,60,112,13,21,42,15,1,0, + 4,0,12,0,14,0,26,0,17,0,32,128,0,0,31,0, + 33,128,97,192,113,192,113,192,1,192,15,192,49,192,97,192, + 225,192,225,200,225,200,226,216,60,240,13,20,40,15,1,0, + 24,0,63,128,71,128,0,0,0,0,0,0,31,0,33,128, + 97,192,113,192,113,192,1,192,15,192,49,192,97,192,225,192, + 225,200,225,200,226,216,60,240,13,20,40,15,1,0,97,128, + 97,192,97,128,0,0,0,0,0,0,30,0,97,128,64,128, + 96,128,96,192,0,192,15,192,48,192,96,192,192,192,193,200, + 194,200,194,216,60,112,13,21,42,15,1,0,14,0,49,0, + 33,0,33,0,19,0,14,0,0,0,30,0,33,128,97,128, + 97,128,113,192,1,192,15,192,113,192,97,192,225,192,225,200, + 227,200,229,216,120,240,18,14,42,20,1,0,31,30,0,97, + 227,0,65,227,0,97,193,128,113,193,128,1,193,128,15,255, + 192,113,192,0,65,192,0,193,192,128,193,192,128,194,224,128, + 194,97,0,60,62,0,10,20,40,12,1,250,31,0,48,128, + 96,192,96,192,225,192,224,128,224,0,224,0,224,0,224,64, + 96,64,96,128,48,128,31,0,8,0,12,0,3,0,3,0, + 3,0,30,0,10,21,42,13,1,0,96,0,112,0,56,0, + 24,0,4,0,0,0,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,21,42,13,1,0,0,192,1,192,1,128, + 3,0,6,0,0,0,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,21,42,13,1,0,4,0,4,0,14,0, + 11,0,17,0,32,128,0,0,30,0,49,128,97,128,96,192, + 224,192,224,192,255,192,224,0,224,0,224,64,96,64,96,64, + 48,128,31,0,10,20,40,13,1,0,49,128,113,192,49,128, + 0,0,0,0,0,0,30,0,49,128,97,128,96,192,224,192, + 224,192,255,192,224,0,224,0,224,64,96,64,96,64,48,128, + 31,0,7,21,21,8,0,0,192,192,96,48,24,0,0,124, + 28,28,28,28,28,28,28,28,28,28,28,28,126,7,21,21, + 8,1,0,6,14,12,24,16,0,0,248,56,56,56,56,56, + 56,56,56,56,56,56,56,252,7,20,20,9,1,0,48,48, + 104,132,2,0,248,56,56,56,56,56,56,56,56,56,56,56, + 56,252,8,19,19,9,1,0,198,231,198,0,0,124,28,28, + 28,28,28,28,28,28,28,28,28,28,126,12,21,42,14,1, + 0,56,64,29,128,14,0,15,0,19,0,33,128,1,192,15, + 192,48,224,96,224,96,96,224,96,224,112,224,112,224,96,224, + 96,224,96,96,96,96,192,48,128,15,0,14,20,40,16,1, + 0,14,32,15,32,19,192,16,192,0,0,0,0,249,192,62, + 96,60,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,252,252,12,21,42,14,1,0,32, + 0,48,0,24,0,8,0,4,0,0,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,21,42,14,1,0,0, + 192,1,192,1,128,3,0,2,0,4,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,21,42,14,1,0,4, + 0,6,0,14,0,11,0,16,128,32,0,0,0,15,0,48, + 128,96,192,96,96,224,96,224,96,224,112,224,112,224,96,224, + 96,96,96,96,192,48,128,15,0,12,20,40,14,1,0,28, + 64,63,192,39,128,0,0,0,0,0,0,15,0,48,128,96, + 192,96,96,224,96,224,96,224,112,224,112,224,96,224,96,96, + 96,96,192,48,128,15,0,12,20,40,14,1,0,48,192,57, + 192,48,192,0,0,0,0,0,0,15,0,48,128,96,192,96, + 96,224,96,224,96,224,112,224,112,224,96,224,96,96,96,96, + 192,48,128,15,0,24,19,57,26,1,254,0,24,0,0,60, + 0,0,60,0,0,24,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,24,0,0,60,0,0,60, + 0,0,24,0,12,14,28,14,1,0,15,32,48,160,96,192, + 96,224,225,96,227,96,226,112,228,112,232,96,240,96,96,96, + 96,192,112,128,143,0,14,21,42,16,1,0,24,0,24,0, + 12,0,6,0,2,0,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,21,42,16,1,0,0,96,0,224, + 0,192,1,128,1,0,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,21,42,16,1,0,2,0,3,0, + 7,0,4,128,8,64,0,0,0,0,248,240,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,112, + 56,240,25,112,14,124,14,20,40,16,1,0,24,96,28,224, + 24,96,0,0,0,0,0,0,248,240,56,112,56,112,56,112, + 56,112,56,112,56,112,56,112,56,112,56,112,56,112,56,240, + 25,112,14,124,14,28,56,15,0,249,0,48,0,112,0,96, + 0,192,1,128,0,0,0,0,254,124,24,16,24,16,28,16, + 12,32,12,32,14,32,6,64,6,64,6,64,3,128,3,128, + 3,128,1,128,1,0,1,0,1,0,98,0,114,0,100,0, + 56,0,12,28,56,14,1,249,56,0,248,0,56,0,56,0, + 56,0,56,0,56,0,57,224,62,112,60,112,56,112,56,112, + 56,112,56,96,56,96,56,192,56,128,57,128,58,0,60,0, + 56,0,56,0,56,0,56,0,56,0,56,0,48,0,192,0, + 14,26,52,15,0,249,12,48,14,112,12,48,0,0,0,0, + 254,60,24,16,24,16,28,32,12,32,12,32,14,32,6,64, + 6,64,7,64,3,128,3,128,3,128,1,0,1,0,1,0, + 1,0,114,0,114,0,116,0,56,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 21 + Calculated Max Values w=24 h=28 x= 3 y= 9 dx=26 dy= 0 ascent=22 len=75 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =21 descent= 0 + X Font ascent =21 descent= 0 + Max Font ascent =22 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21n[702] U8G_SECTION(".progmem.u8g_font_osr21n") = { + 0,76,38,232,247,21,0,0,0,0,42,57,0,22,250,21, + 0,10,12,24,14,2,9,12,0,14,0,204,64,228,192,53, + 0,14,0,63,0,229,192,196,192,12,0,14,0,12,0,24, + 25,75,26,1,252,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,0,8,0,255,255,255,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 4,8,8,8,2,251,224,240,240,16,16,16,32,64,7,2, + 2,11,2,7,254,254,4,4,4,8,2,0,96,240,240,96, + 9,28,56,13,2,250,0,128,0,128,1,128,1,0,1,0, + 1,0,2,0,2,0,2,0,6,0,4,0,4,0,12,0, + 8,0,8,0,24,0,16,0,16,0,16,0,32,0,32,0, + 32,0,64,0,64,0,64,0,192,0,128,0,128,0,14,21, + 42,17,1,0,7,128,24,64,48,32,32,48,96,16,96,24, + 96,24,224,24,224,24,224,24,224,28,224,28,224,24,224,24, + 224,24,96,24,96,24,96,48,48,32,16,96,15,192,10,21, + 42,17,3,0,2,0,6,0,6,0,14,0,254,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,255,192,12,21, + 42,17,2,0,31,0,32,192,64,96,128,112,128,112,192,112, + 240,112,112,112,32,96,0,224,0,192,1,0,6,0,12,0, + 24,0,48,16,96,16,64,16,224,112,255,240,255,240,12,21, + 42,17,2,0,31,0,97,192,192,224,224,96,240,96,112,112, + 0,96,0,96,0,224,48,192,63,0,0,192,0,96,0,112, + 0,112,96,112,240,112,240,112,192,96,192,192,127,128,14,21, + 42,17,2,0,0,64,0,192,1,192,1,192,3,192,7,192, + 5,192,13,192,9,192,17,192,49,192,33,192,65,192,193,192, + 255,252,1,192,1,192,1,192,1,192,1,192,15,252,12,21, + 42,17,2,0,96,64,127,128,127,0,64,0,64,0,64,0, + 64,0,79,0,112,192,64,96,64,96,0,112,0,112,0,112, + 96,112,240,112,240,112,224,96,192,224,64,192,63,128,12,21, + 42,17,2,0,7,128,24,64,16,96,48,224,96,224,96,192, + 96,0,224,0,231,128,232,192,240,96,240,96,224,112,224,112, + 224,112,224,112,96,112,96,96,112,96,48,192,31,128,11,21, + 42,17,3,0,255,224,255,224,192,32,128,32,128,64,128,64, + 0,64,0,128,1,0,1,0,2,0,6,0,6,0,12,0, + 12,0,12,0,30,0,30,0,30,0,30,0,30,0,14,21, + 42,17,2,0,15,128,48,96,96,48,224,24,224,24,224,24, + 224,24,240,16,124,32,63,192,15,224,51,240,96,248,224,56, + 224,28,224,28,224,24,224,24,96,24,112,48,31,192,12,21, + 42,17,2,0,15,0,48,128,96,64,96,96,224,96,224,96, + 224,112,224,112,224,112,96,112,96,240,49,176,14,48,0,48, + 0,32,48,96,112,96,112,64,96,192,96,128,63,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-154-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 21, '1' Height: 21 + Calculated Max Values w=29 h=28 x= 4 y=17 dx=32 dy= 0 ascent=23 len=88 + Font Bounding box w=76 h=38 x=-24 y=-9 + Calculated Min Values x=-1 y=-7 dx= 0 dy= 0 + Pure Font ascent =21 descent=-7 + X Font ascent =22 descent=-7 + Max Font ascent =23 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr21r[4396] U8G_SECTION(".progmem.u8g_font_osr21r") = { + 0,76,38,232,247,21,5,131,12,189,32,127,249,23,249,22, + 249,0,0,0,8,0,0,4,21,21,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,64,0,96,240, + 240,96,7,5,5,11,2,17,238,204,204,204,68,15,21,42, + 19,2,0,2,16,6,16,6,16,4,16,4,48,4,48,255, + 254,4,32,12,32,12,32,8,32,8,96,8,96,8,64,255, + 254,24,64,24,64,16,192,16,192,16,128,16,128,13,25,50, + 17,2,254,5,0,5,0,15,128,53,96,37,16,69,24,69, + 24,69,56,69,56,117,48,61,0,63,0,15,192,7,224,5, + 240,5,48,101,24,229,24,229,24,197,24,69,48,69,32,61, + 192,7,0,5,0,19,21,63,25,3,0,60,1,0,70,2, + 0,66,2,0,195,4,0,195,8,0,195,8,0,195,16,0, + 195,16,0,66,32,0,102,32,0,56,64,0,0,67,0,0, + 140,192,1,8,64,1,24,96,2,24,96,2,24,96,4,24, + 96,4,24,96,8,8,64,8,7,128,20,21,63,23,2,0, + 3,128,0,12,64,0,8,32,0,24,32,0,24,32,0,24, + 96,0,28,64,0,12,128,0,15,0,0,7,15,240,15,1, + 128,27,129,0,51,193,0,97,194,0,96,226,0,224,244,0, + 224,124,0,224,56,0,224,60,0,96,60,32,59,198,192,3, + 5,5,7,2,17,224,192,192,192,64,6,28,28,10,3,250, + 4,12,24,16,32,32,64,64,64,128,128,128,128,128,128,128, + 128,128,128,192,64,64,32,32,16,24,8,4,6,28,28,11, + 2,250,128,192,64,32,48,16,24,8,8,8,4,4,4,4, + 4,4,4,4,12,8,8,24,16,48,32,96,192,128,10,12, + 24,14,2,9,12,0,14,0,204,64,228,192,53,0,14,0, + 63,0,229,192,196,192,12,0,14,0,12,0,24,25,75,26, + 1,252,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,0,8,0, + 0,8,0,0,8,0,255,255,255,0,8,0,0,8,0,0, + 8,0,0,8,0,0,8,0,0,8,0,0,8,0,0,8, + 0,0,8,0,0,8,0,0,8,0,0,8,0,4,8,8, + 8,2,251,224,240,240,16,16,16,32,64,7,2,2,11,2, + 7,254,254,4,4,4,8,2,0,96,240,240,96,9,28,56, + 13,2,250,0,128,0,128,1,128,1,0,1,0,1,0,2, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,16,0,16,0,16,0,32,0,32,0,32,0,64, + 0,64,0,64,0,192,0,128,0,128,0,14,21,42,17,1, + 0,7,128,24,64,48,32,32,48,96,16,96,24,96,24,224, + 24,224,24,224,24,224,28,224,28,224,24,224,24,224,24,96, + 24,96,24,96,48,48,32,16,96,15,192,10,21,42,17,3, + 0,2,0,6,0,6,0,14,0,254,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,255,192,12,21,42,17,2, + 0,31,0,32,192,64,96,128,112,128,112,192,112,240,112,112, + 112,32,96,0,224,0,192,1,0,6,0,12,0,24,0,48, + 16,96,16,64,16,224,112,255,240,255,240,12,21,42,17,2, + 0,31,0,97,192,192,224,224,96,240,96,112,112,0,96,0, + 96,0,224,48,192,63,0,0,192,0,96,0,112,0,112,96, + 112,240,112,240,112,192,96,192,192,127,128,14,21,42,17,2, + 0,0,64,0,192,1,192,1,192,3,192,7,192,5,192,13, + 192,9,192,17,192,49,192,33,192,65,192,193,192,255,252,1, + 192,1,192,1,192,1,192,1,192,15,252,12,21,42,17,2, + 0,96,64,127,128,127,0,64,0,64,0,64,0,64,0,79, + 0,112,192,64,96,64,96,0,112,0,112,0,112,96,112,240, + 112,240,112,224,96,192,224,64,192,63,128,12,21,42,17,2, + 0,7,128,24,64,16,96,48,224,96,224,96,192,96,0,224, + 0,231,128,232,192,240,96,240,96,224,112,224,112,224,112,224, + 112,96,112,96,96,112,96,48,192,31,128,11,21,42,17,3, + 0,255,224,255,224,192,32,128,32,128,64,128,64,0,64,0, + 128,1,0,1,0,2,0,6,0,6,0,12,0,12,0,12, + 0,30,0,30,0,30,0,30,0,30,0,14,21,42,17,2, + 0,15,128,48,96,96,48,224,24,224,24,224,24,224,24,240, + 16,124,32,63,192,15,224,51,240,96,248,224,56,224,28,224, + 28,224,24,224,24,96,24,112,48,31,192,12,21,42,17,2, + 0,15,0,48,128,96,64,96,96,224,96,224,96,224,112,224, + 112,224,112,96,112,96,240,49,176,14,48,0,48,0,32,48, + 96,112,96,112,64,96,192,96,128,63,0,4,14,14,8,2, + 0,96,240,240,96,0,0,0,0,0,0,96,240,240,96,4, + 18,18,8,2,251,96,240,240,96,0,0,0,0,0,0,224, + 240,240,16,16,16,32,64,22,24,72,27,2,251,0,0,12, + 0,0,56,0,0,96,0,1,128,0,7,0,0,28,0,0, + 112,0,0,192,0,3,0,0,14,0,0,56,0,0,224,0, + 0,224,0,0,48,0,0,12,0,0,7,0,0,1,192,0, + 0,112,0,0,24,0,0,6,0,0,3,128,0,0,224,0, + 0,56,0,0,12,24,7,21,26,1,5,255,255,255,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 22,24,72,27,3,251,192,0,0,112,0,0,24,0,0,6, + 0,0,3,128,0,0,224,0,0,56,0,0,12,0,0,3, + 0,0,0,192,0,0,112,0,0,28,0,0,28,0,0,48, + 0,0,192,0,3,128,0,14,0,0,56,0,0,96,0,1, + 128,0,7,0,0,28,0,0,112,0,0,192,0,0,11,21, + 42,14,2,0,30,0,97,128,128,192,128,192,240,224,240,192, + 97,192,1,128,3,128,6,0,12,0,8,0,17,0,17,0, + 17,0,14,0,0,0,12,0,30,0,30,0,12,0,21,21, + 63,25,2,1,3,255,0,12,0,128,24,0,64,48,0,32, + 32,59,144,64,199,16,65,135,8,131,7,8,135,6,8,134, + 6,8,142,14,8,142,14,8,142,12,16,142,28,16,142,28, + 32,70,44,64,67,199,128,32,0,0,16,0,0,8,1,128, + 7,222,0,20,21,63,22,1,0,0,32,0,0,96,0,0, + 96,0,0,112,0,0,240,0,0,240,0,0,184,0,1,56, + 0,1,56,0,3,28,0,3,28,0,2,28,0,6,14,0, + 6,14,0,7,254,0,12,7,0,12,7,0,8,7,0,24, + 3,128,24,3,128,255,31,240,16,21,42,20,2,0,255,240, + 28,12,28,6,28,7,28,7,28,7,28,7,28,6,28,12, + 31,240,28,28,28,6,28,6,28,7,28,7,28,7,28,7, + 28,7,28,6,28,12,255,240,15,21,42,19,2,1,15,226, + 16,54,48,30,32,14,96,6,96,6,224,6,224,2,224,0, + 224,0,224,0,224,0,224,0,224,2,96,2,96,2,96,4, + 32,4,48,12,24,8,7,240,19,21,63,22,2,0,255,248, + 0,28,6,0,28,3,0,28,1,128,28,1,128,28,1,192, + 28,0,192,28,0,192,28,0,192,28,0,224,28,0,224,28, + 0,224,28,0,192,28,0,192,28,0,192,28,1,192,28,1, + 128,28,1,0,28,3,0,28,6,0,255,248,0,17,21,63, + 20,2,0,255,255,128,28,3,128,28,3,128,28,1,128,28, + 1,128,28,0,128,28,32,128,28,32,0,28,32,0,28,96, + 0,31,224,0,28,96,0,28,32,0,28,32,128,28,32,128, + 28,0,128,28,1,128,28,1,128,28,3,128,28,7,128,255, + 255,128,17,21,63,20,2,0,255,255,128,28,3,128,28,3, + 128,28,1,128,28,1,128,28,0,128,28,32,128,28,32,0, + 28,32,0,28,96,0,31,224,0,28,96,0,28,32,0,28, + 32,0,28,32,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,21,63,21,2,1,15,226,0, + 24,26,0,48,14,0,32,14,0,96,6,0,96,6,0,224, + 2,0,224,2,0,224,0,0,224,0,0,224,127,192,224,14, + 0,224,14,0,224,14,0,224,14,0,96,14,0,96,14,0, + 32,14,0,48,26,0,16,50,0,15,226,0,20,21,63,23, + 2,0,255,15,240,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,31,255,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,15, + 240,8,21,21,12,2,0,255,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,255,13,21,42,15, + 1,0,7,248,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 112,224,240,192,240,192,192,192,65,128,127,0,19,21,63,22, + 2,0,255,31,224,28,7,0,28,6,0,28,12,0,28,8, + 0,28,16,0,28,32,0,28,64,0,28,192,0,29,224,0, + 30,224,0,28,112,0,28,112,0,28,56,0,28,28,0,28, + 28,0,28,14,0,28,14,0,28,7,0,28,7,0,255,63, + 224,16,21,42,20,2,0,255,128,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,1,28,1,28,1,28,1,28,3,28,3,28,15,255, + 255,21,21,63,25,2,0,252,1,248,30,1,224,30,1,224, + 30,2,224,22,2,224,23,2,224,23,2,224,19,4,224,19, + 132,224,19,132,224,17,132,224,17,200,224,17,200,224,16,200, + 224,16,208,224,16,240,224,16,240,224,16,112,224,16,96,224, + 16,96,224,254,39,248,20,21,63,23,2,0,252,7,240,28, + 0,128,30,0,128,31,0,128,23,0,128,19,128,128,19,192, + 128,17,192,128,16,224,128,16,240,128,16,112,128,16,56,128, + 16,56,128,16,28,128,16,30,128,16,14,128,16,7,128,16, + 7,128,16,3,128,16,1,128,254,1,128,17,22,66,20,2, + 0,0,128,0,7,112,0,24,8,0,16,12,0,48,6,0, + 96,6,0,96,3,0,96,3,0,224,3,0,224,3,0,224, + 3,0,224,3,128,224,3,128,224,3,0,224,3,0,96,3, + 0,96,3,0,96,6,0,48,6,0,16,12,0,24,8,0, + 7,240,0,17,21,63,20,2,0,255,248,0,28,14,0,28, + 7,0,28,3,0,28,3,0,28,3,128,28,3,0,28,3, + 0,28,6,0,28,12,0,31,240,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,255,128,0,17,27,81,20,2,251,0,128, + 0,7,112,0,24,8,0,16,12,0,48,6,0,96,6,0, + 96,3,0,96,3,0,224,3,0,224,3,0,224,3,0,224, + 3,128,224,3,128,224,3,0,224,3,0,96,3,0,96,3, + 0,97,198,0,51,38,0,26,60,0,14,60,0,7,48,128, + 0,241,0,0,49,0,0,57,0,0,31,0,0,14,0,18, + 21,63,21,2,0,255,248,0,28,14,0,28,6,0,28,7, + 0,28,7,0,28,7,0,28,7,0,28,6,0,28,12,0, + 31,240,0,28,24,0,28,24,0,28,12,0,28,12,0,28, + 12,0,28,14,0,28,14,64,28,14,64,28,14,64,28,7, + 128,255,131,128,14,21,42,18,3,1,63,144,96,208,192,112, + 192,48,192,16,192,16,224,16,240,16,124,0,63,128,31,224, + 7,240,128,248,128,56,128,28,128,12,192,12,224,12,224,8, + 144,16,142,224,17,21,63,21,2,0,255,255,128,225,195,128, + 193,193,128,193,193,128,193,192,128,129,192,128,129,192,128,129, + 192,128,1,192,0,1,192,0,1,192,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,15,248,0,20,21,63,23,2,0,255, + 7,240,28,0,128,28,0,128,28,0,128,28,0,128,28,0, + 128,28,0,128,28,0,128,28,0,128,28,0,128,28,0,128, + 28,0,128,28,0,128,28,0,128,28,0,128,28,0,128,28, + 0,128,12,0,128,12,1,0,6,2,0,3,252,0,20,22, + 66,23,2,255,255,143,240,28,1,192,28,1,128,14,1,128, + 14,1,0,14,1,0,7,3,0,7,2,0,7,2,0,3, + 134,0,3,132,0,3,132,0,1,196,0,1,200,0,1,200, + 0,0,232,0,0,240,0,0,112,0,0,112,0,0,112,0, + 0,32,0,0,32,0,29,22,88,32,2,255,255,63,231,248, + 28,7,0,192,28,7,0,128,28,7,0,128,12,7,128,128, + 14,15,129,128,14,11,129,0,6,9,129,0,7,9,195,0, + 7,25,194,0,7,17,194,0,3,16,230,0,3,144,228,0, + 3,176,228,0,1,160,108,0,1,224,120,0,1,224,120,0, + 1,192,120,0,0,192,48,0,0,192,48,0,0,192,48,0, + 0,128,16,0,19,21,63,22,2,0,255,159,224,14,7,0, + 14,6,0,7,4,0,7,12,0,3,136,0,3,208,0,1, + 208,0,1,224,0,0,224,0,0,112,0,0,240,0,1,184, + 0,1,56,0,2,28,0,6,28,0,4,14,0,8,14,0, + 24,7,0,24,7,0,255,31,224,19,21,63,21,1,0,255, + 143,224,30,3,128,14,3,0,14,2,0,7,2,0,7,4, + 0,3,132,0,1,200,0,1,200,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,7,254,0,15,21, + 42,19,2,0,63,254,56,14,112,28,96,56,64,56,64,112, + 64,240,0,224,1,192,1,192,3,128,7,128,7,0,14,2, + 14,2,28,2,60,2,56,6,112,6,240,14,255,254,6,27, + 27,11,3,250,252,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,252,9, + 28,56,13,2,250,128,0,128,0,192,0,64,0,64,0,64, + 0,32,0,32,0,32,0,16,0,16,0,16,0,24,0,8, + 0,8,0,12,0,4,0,4,0,4,0,2,0,2,0,2, + 0,1,0,1,0,1,0,1,128,0,128,0,128,6,27,27, + 11,2,250,252,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,252,13,11, + 22,17,2,10,2,0,2,0,5,0,13,128,8,128,24,192, + 16,64,32,32,96,48,64,16,192,24,15,1,2,15,0,251, + 255,254,5,5,5,13,2,16,192,224,96,48,8,13,14,28, + 15,1,0,31,0,33,128,97,192,113,192,113,192,1,192,15, + 192,49,192,97,192,225,192,225,200,225,200,226,216,60,240,13, + 21,42,15,1,0,248,0,56,0,56,0,56,0,56,0,56, + 0,56,0,59,192,60,96,56,48,56,48,56,48,56,48,56, + 56,56,56,56,48,56,48,56,48,56,32,44,96,35,192,10, + 14,28,12,1,0,31,0,48,128,96,64,96,192,225,192,224, + 128,224,0,224,0,224,0,224,0,96,64,96,128,48,128,31, + 0,13,21,42,15,1,0,3,224,0,224,0,224,0,224,0, + 224,0,224,0,224,30,224,49,224,97,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 248,10,14,28,13,1,0,30,0,49,128,97,128,96,192,224, + 192,224,192,255,192,224,0,224,0,224,64,96,64,96,64,48, + 128,31,0,10,21,42,10,1,0,15,0,24,128,57,192,57, + 128,56,0,56,0,56,0,254,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,254,0,14,21,42,16,2,249,31,56,113,200,96,220,224, + 248,224,224,224,224,224,224,96,192,49,128,31,0,96,0,128, + 0,224,0,127,224,56,112,64,16,128,16,128,16,128,48,64, + 96,63,128,14,21,42,16,1,0,248,0,56,0,56,0,56, + 0,56,0,56,0,56,0,57,192,62,96,60,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,56,112,56,112,56, + 112,252,252,6,21,21,7,1,0,112,112,112,0,0,0,0, + 240,112,112,112,112,112,112,112,112,112,112,112,112,252,8,28, + 28,9,255,249,6,7,6,0,0,0,0,31,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,70,230,198,204,120, + 13,21,42,15,1,0,248,0,56,0,56,0,56,0,56,0, + 56,0,56,0,57,248,56,192,56,128,57,0,57,0,58,0, + 63,0,63,0,59,128,57,192,56,192,56,224,56,224,253,248, + 7,21,21,8,1,0,248,56,56,56,56,56,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,254,21,14,42,23,1, + 0,249,195,192,62,100,224,60,120,96,56,120,96,56,112,96, + 56,112,96,56,112,96,56,112,96,56,112,96,56,112,96,56, + 112,96,56,112,96,56,112,96,252,253,248,14,14,28,16,1, + 0,249,192,62,96,60,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,112,252,252,12,14,28, + 14,1,0,15,0,48,128,96,192,96,96,224,96,224,96,224, + 112,224,112,224,96,224,96,96,96,96,192,48,128,15,0,13, + 21,42,15,1,249,251,192,60,96,56,48,56,48,56,48,56, + 48,56,56,56,56,56,48,56,48,56,48,56,48,60,96,59, + 192,56,0,56,0,56,0,56,0,56,0,56,0,252,0,13, + 21,42,15,1,249,30,32,49,32,96,224,96,224,224,224,224, + 224,224,224,224,224,224,224,224,224,96,224,96,224,49,224,30, + 224,0,224,0,224,0,224,0,224,0,224,0,224,3,248,10, + 14,28,12,1,0,249,128,58,64,60,192,60,192,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,252, + 0,10,14,28,13,2,0,60,128,195,128,129,128,128,128,192, + 128,240,0,62,0,15,128,131,192,128,192,192,64,192,64,160, + 128,159,0,8,20,20,10,1,0,16,16,16,16,48,48,254, + 48,48,48,48,48,48,48,48,49,49,49,59,30,14,14,28, + 16,1,0,248,240,56,112,56,112,56,112,56,112,56,112,56, + 112,56,112,56,112,56,112,56,112,56,240,25,112,14,124,15, + 14,28,15,0,0,254,126,56,16,24,16,28,16,12,32,12, + 32,6,32,6,64,7,64,3,64,3,128,1,128,1,128,1, + 0,22,14,42,22,0,0,254,252,252,56,56,32,24,56,32, + 28,56,32,12,56,64,12,60,64,6,76,64,6,76,128,7, + 70,128,3,134,128,3,135,0,1,131,0,1,131,0,1,2, + 0,14,14,28,16,1,0,124,248,56,96,24,64,12,128,14, + 128,7,0,7,0,3,128,5,128,5,192,8,192,16,224,16, + 96,249,252,15,21,42,15,0,249,254,126,24,16,24,16,28, + 16,12,32,12,32,14,32,6,64,6,64,6,64,3,128,3, + 128,3,128,1,128,1,0,1,0,1,0,98,0,114,0,100, + 0,56,0,10,14,28,13,1,0,255,192,193,192,129,128,131, + 0,135,0,6,0,14,0,28,0,24,0,56,64,48,64,112, + 64,224,192,255,192,6,27,27,12,3,250,12,24,48,48,48, + 48,48,56,24,24,24,16,48,192,48,16,24,24,24,56,48, + 48,48,48,48,16,12,1,28,28,8,4,250,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,6,27,27,12,3,250,128,96, + 32,48,48,48,112,96,96,96,96,96,32,28,48,96,96,96, + 96,96,112,48,48,48,32,96,192,16,6,12,18,1,5,56, + 2,126,1,143,193,131,241,128,255,64,62,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=36 h=35 x= 7 y=21 dx=38 dy= 0 ascent=35 len=140 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x=-1 y=-10 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =27 descent=-8 + Max Font ascent =35 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26[13186] U8G_SECTION(".progmem.u8g_font_osr26") = { + 0,94,46,227,245,26,7,96,17,82,32,255,248,35,246,27, + 248,0,0,0,10,0,0,4,25,25,10,3,0,96,240,240, + 240,240,240,240,240,96,96,96,96,96,96,96,96,96,96,32, + 64,96,240,240,240,96,8,7,7,14,3,20,195,195,195,195, + 195,195,66,19,25,75,25,3,0,1,130,0,1,130,0,1, + 2,0,1,6,0,3,6,0,3,6,0,3,6,0,255,255, + 224,2,4,0,2,4,0,2,12,0,6,12,0,6,12,0, + 6,12,0,6,8,0,4,8,0,4,8,0,255,255,224,12, + 24,0,12,24,0,12,16,0,8,16,0,8,48,0,8,48, + 0,24,48,0,16,31,62,21,2,253,2,64,2,64,2,64, + 7,224,26,92,50,70,34,66,98,67,98,71,98,79,98,79, + 114,78,58,64,63,64,31,192,7,240,3,252,2,126,2,78, + 34,71,242,67,242,67,226,67,226,67,194,66,66,70,34,76, + 30,112,3,192,2,64,2,64,24,25,75,30,3,0,30,0, + 48,33,0,32,97,128,96,192,192,64,192,192,192,192,192,128, + 192,193,0,192,195,0,192,194,0,64,134,0,97,132,0,34, + 8,0,28,24,112,0,16,132,0,49,134,0,33,2,0,67, + 3,0,195,3,0,131,3,1,131,3,1,3,3,3,3,3, + 6,1,6,4,1,134,12,0,252,24,25,75,28,2,0,1, + 240,0,3,8,0,6,12,0,12,4,0,12,4,0,12,12, + 0,14,8,0,14,24,0,7,48,0,7,192,0,3,193,255, + 7,192,56,13,224,48,24,240,48,48,112,32,112,120,96,112, + 60,64,224,28,128,224,15,128,224,15,0,224,7,0,240,3, + 129,112,15,194,120,25,228,31,224,252,2,7,7,8,3,20, + 192,192,192,192,192,192,64,8,33,33,14,4,250,3,6,12, + 12,24,16,48,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,64,96,96,96,48,48,24,24,12,6,6,3,8,33, + 33,13,2,250,192,96,96,48,24,24,12,12,6,6,6,2, + 3,3,3,3,3,3,3,3,2,6,6,6,4,12,12,24, + 24,48,96,192,128,13,15,30,18,3,10,7,0,7,0,7, + 0,195,24,226,56,114,112,10,128,7,0,15,128,122,240,242, + 120,226,56,7,0,7,0,7,0,30,31,124,34,2,250,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,255,255,255,252,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,5,11,11,10,2, + 250,112,248,248,120,8,8,8,16,16,32,64,9,2,4,13, + 2,8,255,128,255,128,4,5,5,10,3,0,96,240,240,240, + 96,12,34,68,16,2,249,0,16,0,48,0,48,0,32,0, + 96,0,96,0,64,0,192,0,192,0,128,0,128,1,128,1, + 0,1,0,3,0,2,0,2,0,6,0,4,0,4,0,12, + 0,8,0,8,0,24,0,24,0,16,0,48,0,48,0,32, + 0,96,0,96,0,64,0,192,0,192,0,17,25,75,21,2, + 0,3,224,0,14,56,0,28,28,0,24,12,0,56,14,0, + 112,7,0,112,7,0,112,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,112,7,0,112,7,0,112,7,0,56,14,0, + 56,14,0,24,12,0,12,24,0,7,112,0,12,25,50,21, + 4,0,1,0,3,0,3,0,15,0,255,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,255,240,15,25,50,21,3,0,15,192,48,112,96,56, + 64,60,192,30,192,30,224,30,248,30,248,30,120,28,0,60, + 0,56,0,112,0,224,1,192,3,0,14,0,28,4,56,4, + 48,4,96,4,96,12,255,252,255,252,255,252,15,25,50,21, + 3,0,15,192,48,112,32,56,96,28,112,28,120,28,120,28, + 48,28,0,28,0,56,0,112,31,192,24,112,0,56,0,60, + 0,30,0,30,112,30,248,30,248,30,248,30,192,60,192,56, + 96,112,63,224,17,25,75,21,2,0,0,16,0,0,48,0, + 0,112,0,0,112,0,0,240,0,1,240,0,1,112,0,3, + 112,0,6,112,0,6,112,0,12,112,0,8,112,0,24,112, + 0,48,112,0,32,112,0,96,112,0,192,112,0,255,255,128, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,15,26,52,21,3,0,32,0,48,56,63, + 240,63,192,47,0,32,0,32,0,32,0,32,0,39,192,56, + 112,48,56,32,60,32,28,0,30,0,30,0,30,0,30,120, + 30,248,30,248,28,240,60,224,60,96,56,112,112,63,192,15, + 25,50,21,3,0,3,224,6,24,12,12,24,28,56,60,48, + 60,112,16,112,0,112,0,243,224,246,56,252,28,248,28,248, + 14,240,14,240,14,240,14,240,14,112,14,112,14,112,12,56, + 28,56,24,24,56,14,224,14,25,50,21,3,0,255,252,255, + 252,255,252,192,12,128,8,128,8,128,8,128,16,0,16,0, + 32,0,96,0,64,0,128,1,128,1,128,3,0,3,0,7, + 0,7,0,15,128,15,128,15,128,15,128,15,128,7,128,17, + 25,75,21,2,0,7,240,0,28,28,0,48,14,0,112,6, + 0,224,3,0,224,3,0,224,3,0,240,3,0,240,6,0, + 124,6,0,127,140,0,31,240,0,7,252,0,25,254,0,48, + 63,0,96,15,128,224,7,128,224,3,128,224,3,128,224,3, + 128,224,3,0,96,7,0,112,6,0,56,12,0,15,248,0, + 15,25,50,21,3,0,7,192,24,96,48,48,112,56,112,28, + 224,28,224,28,224,30,224,30,224,30,224,30,112,62,112,62, + 56,94,15,158,0,30,0,28,0,28,56,28,120,28,120,56, + 112,56,96,112,48,224,31,192,4,17,17,10,3,0,96,240, + 240,240,96,0,0,0,0,0,0,0,96,240,240,240,96,5, + 23,23,11,3,250,112,248,248,248,112,0,0,0,0,0,0, + 0,112,240,248,120,8,8,8,16,16,32,64,28,29,116,34, + 3,251,0,0,0,112,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,1,224,0,0,3,128,0,0,14, + 0,0,0,56,0,0,0,224,0,0,3,128,0,0,15,0, + 0,0,28,0,0,0,112,0,0,0,192,0,0,0,112,0, + 0,0,28,0,0,0,7,0,0,0,1,192,0,0,0,240, + 0,0,0,56,0,0,0,14,0,0,0,3,128,0,0,0, + 224,0,0,0,56,0,0,0,14,0,0,0,7,0,0,0, + 1,192,0,0,0,112,30,8,32,34,2,6,255,255,255,252, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,252,28,29,116,34, + 3,251,224,0,0,0,56,0,0,0,14,0,0,0,3,128, + 0,0,0,224,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,1,192,0,0,0,112,0,0,0,28,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,48,0,0, + 0,224,0,0,3,128,0,0,14,0,0,0,56,0,0,0, + 240,0,0,1,192,0,0,7,0,0,0,28,0,0,0,112, + 0,0,1,192,0,0,7,0,0,0,30,0,0,0,56,0, + 0,0,224,0,0,0,13,25,50,17,2,0,15,128,48,224, + 64,112,192,56,192,56,248,56,248,56,112,56,0,112,0,224, + 1,192,3,128,3,0,4,0,12,0,8,64,8,64,8,128, + 7,0,0,0,3,0,7,128,7,128,7,128,3,0,26,27, + 108,30,2,0,0,4,0,0,0,251,224,0,3,0,56,0, + 6,0,12,0,12,0,6,0,24,0,3,0,48,15,1,0, + 48,49,241,128,96,96,241,128,96,192,224,128,193,192,224,192, + 193,128,224,192,193,128,192,192,195,128,192,192,195,1,192,192, + 195,1,192,192,195,1,129,128,195,3,129,128,67,7,129,0, + 99,7,130,0,97,137,132,0,32,240,248,0,48,0,0,0, + 24,0,0,0,12,0,16,0,7,0,48,0,1,255,192,0, + 25,26,104,28,2,0,0,8,0,0,0,12,0,0,0,28, + 0,0,0,28,0,0,0,30,0,0,0,62,0,0,0,46, + 0,0,0,47,0,0,0,103,0,0,0,103,0,0,0,71, + 128,0,0,195,128,0,0,195,128,0,0,131,192,0,1,129, + 192,0,1,129,192,0,3,1,224,0,3,255,224,0,2,0, + 224,0,6,0,240,0,6,0,112,0,6,0,112,0,12,0, + 120,0,12,0,120,0,30,0,120,0,255,195,255,128,20,26, + 78,25,3,0,255,252,0,28,3,0,28,1,192,28,1,192, + 28,0,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 1,192,28,1,128,28,3,0,31,252,0,28,7,0,28,1, + 192,28,1,224,28,0,224,28,0,240,28,0,240,28,0,240, + 28,0,240,28,0,240,28,1,224,28,1,192,28,3,128,255, + 254,0,19,26,78,24,3,1,3,252,32,14,6,96,28,3, + 224,24,1,224,56,0,224,120,0,224,112,0,96,112,0,96, + 240,0,96,240,0,32,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,112,0,32,112,0, + 32,120,0,96,56,0,64,56,0,64,28,0,128,12,0,128, + 6,3,0,3,222,0,24,26,78,29,3,0,255,255,0,28, + 1,192,28,0,112,28,0,56,28,0,56,28,0,28,28,0, + 30,28,0,30,28,0,14,28,0,15,28,0,15,28,0,15, + 28,0,15,28,0,15,28,0,15,28,0,15,28,0,15,28, + 0,14,28,0,30,28,0,30,28,0,28,28,0,56,28,0, + 56,28,0,112,28,1,192,255,255,0,21,26,78,25,2,0, + 255,255,248,14,0,120,14,0,56,14,0,24,14,0,24,14, + 0,8,14,0,8,14,4,8,14,4,0,14,4,0,14,12, + 0,14,12,0,15,252,0,14,12,0,14,4,0,14,4,0, + 14,4,8,14,4,8,14,0,8,14,0,8,14,0,24,14, + 0,24,14,0,56,14,0,56,14,0,248,255,255,248,20,26, + 78,24,2,0,255,255,240,14,0,240,14,0,112,14,0,48, + 14,0,48,14,0,16,14,0,16,14,4,16,14,4,0,14, + 4,0,14,12,0,14,12,0,15,252,0,14,12,0,14,12, + 0,14,4,0,14,4,0,14,4,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,255, + 224,0,22,27,81,26,3,0,0,32,0,3,220,32,6,7, + 32,12,3,224,24,1,224,56,0,224,56,0,96,112,0,96, + 112,0,96,112,0,32,240,0,32,240,0,0,240,0,0,240, + 0,0,240,15,252,240,0,224,240,0,224,240,0,224,240,0, + 224,112,0,224,112,0,224,56,0,224,56,1,224,24,1,32, + 12,3,32,6,6,32,3,252,32,24,26,78,28,2,0,255, + 195,255,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,15,255,248,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,255,195,255,10,26,52, + 14,2,0,255,192,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,255,192,16,26,52,19,2,0,3,255,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,112,56,248,56,248,56,240,56,192,48,192,112,96,96,63, + 192,24,26,78,28,2,0,255,199,254,14,1,240,14,0,224, + 14,0,192,14,1,128,14,3,0,14,6,0,14,12,0,14, + 24,0,14,24,0,14,56,0,14,124,0,14,188,0,15,62, + 0,15,30,0,14,31,0,14,15,0,14,15,128,14,7,128, + 14,7,192,14,3,192,14,1,224,14,1,240,14,0,240,14, + 0,248,255,199,255,20,26,78,24,2,0,255,224,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,16,14,0, + 16,14,0,32,14,0,48,14,0,48,14,0,48,14,0,112, + 14,0,240,14,3,240,255,255,240,26,26,104,30,2,0,255, + 0,31,192,15,0,30,0,15,128,30,0,15,128,46,0,11, + 128,46,0,11,128,46,0,11,192,110,0,9,192,78,0,9, + 192,78,0,9,224,78,0,8,224,142,0,8,224,142,0,8, + 224,142,0,8,241,142,0,8,113,14,0,8,113,14,0,8, + 121,14,0,8,59,14,0,8,58,14,0,8,58,14,0,8, + 30,14,0,8,28,14,0,8,28,14,0,8,12,14,0,28, + 12,14,0,255,136,255,192,25,26,104,28,2,0,254,0,255, + 128,15,0,28,0,15,128,8,0,15,128,8,0,11,192,8, + 0,11,192,8,0,9,224,8,0,8,240,8,0,8,240,8, + 0,8,120,8,0,8,60,8,0,8,60,8,0,8,30,8, + 0,8,30,8,0,8,15,8,0,8,7,136,0,8,7,136, + 0,8,3,200,0,8,1,232,0,8,1,232,0,8,0,248, + 0,8,0,120,0,8,0,120,0,8,0,56,0,28,0,24, + 0,255,128,24,0,21,27,81,26,3,0,0,32,0,3,220, + 0,6,3,0,12,1,128,28,1,192,56,0,224,56,0,224, + 120,0,240,112,0,112,112,0,112,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,112,0,112,112,0,112,120,0,240,56,0,224,56,0,224, + 28,1,192,12,1,128,6,3,0,3,254,0,21,26,78,25, + 2,0,255,255,0,14,1,192,14,0,224,14,0,240,14,0, + 120,14,0,120,14,0,120,14,0,120,14,0,120,14,0,112, + 14,0,240,14,0,224,14,1,192,15,254,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,255,224,0, + 21,33,99,26,3,250,0,32,0,3,220,0,6,3,0,12, + 1,128,28,1,192,56,0,224,56,0,224,120,0,240,112,0, + 112,112,0,112,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,112,0,112,112, + 0,112,120,0,240,56,112,224,57,152,224,29,13,192,13,13, + 128,7,15,8,3,158,8,0,110,8,0,14,8,0,14,24, + 0,7,176,0,7,240,0,3,192,22,26,78,25,2,0,255, + 255,0,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,1,192,14,7,128, + 15,252,0,14,6,0,14,7,0,14,3,128,14,3,128,14, + 3,128,14,3,192,14,3,192,14,3,192,14,3,196,14,1, + 196,14,1,196,14,1,236,14,1,248,255,224,240,17,26,78, + 22,3,1,31,227,0,48,51,0,96,31,0,192,15,0,192, + 7,0,192,3,0,192,3,0,224,3,0,240,1,0,120,0, + 0,127,0,0,63,192,0,31,248,0,7,252,0,1,254,0, + 128,63,0,128,15,128,128,3,128,192,3,128,192,1,128,192, + 1,128,224,1,128,240,1,0,248,3,0,140,6,0,135,252, + 0,21,26,78,26,3,0,255,255,248,240,112,120,224,112,56, + 192,112,24,192,112,24,192,112,24,128,112,8,128,112,8,128, + 112,8,128,112,8,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,25,26,104,29,2,0,255,192,255,128,14, + 0,14,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,6, + 0,8,0,7,0,8,0,3,0,16,0,1,192,32,0,0, + 127,192,0,25,26,104,28,2,0,255,241,255,128,15,0,60, + 0,15,0,24,0,7,128,24,0,7,128,16,0,3,128,48, + 0,3,192,48,0,3,192,48,0,1,192,32,0,1,224,96, + 0,1,224,96,0,0,224,64,0,0,240,192,0,0,240,192, + 0,0,112,128,0,0,113,128,0,0,121,128,0,0,57,0, + 0,0,59,0,0,0,63,0,0,0,30,0,0,0,30,0, + 0,0,14,0,0,0,14,0,0,0,12,0,0,0,4,0, + 0,36,26,130,38,1,0,255,231,255,63,240,15,0,248,7, + 128,15,0,120,3,0,7,0,120,3,0,7,128,120,6,0, + 7,128,248,6,0,3,128,252,6,0,3,128,252,4,0,3, + 192,156,12,0,1,193,156,12,0,1,193,158,12,0,1,225, + 14,24,0,1,227,14,24,0,0,227,14,24,0,0,227,15, + 16,0,0,242,7,48,0,0,118,7,48,0,0,118,7,32, + 0,0,116,3,224,0,0,124,3,224,0,0,60,3,192,0, + 0,60,1,192,0,0,56,1,192,0,0,24,1,192,0,0, + 24,1,128,0,0,16,0,128,0,24,26,78,27,2,0,255, + 227,255,15,128,112,7,128,96,7,192,96,3,192,192,1,224, + 128,1,225,128,0,227,0,0,242,0,0,118,0,0,124,0, + 0,56,0,0,60,0,0,60,0,0,62,0,0,79,0,0, + 207,0,0,135,128,1,135,128,1,3,192,3,3,192,6,1, + 224,6,0,224,14,0,240,30,0,240,255,199,255,24,26,78, + 27,2,0,255,225,255,31,0,56,15,0,48,7,128,48,7, + 128,32,3,192,96,3,192,64,1,224,128,0,224,128,0,241, + 0,0,113,0,0,122,0,0,58,0,0,60,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,1,255, + 224,19,26,78,23,2,0,63,255,224,60,3,192,56,3,192, + 112,7,128,96,15,0,96,15,0,64,30,0,64,30,0,64, + 60,0,0,120,0,0,120,0,0,240,0,0,224,0,1,224, + 0,3,192,0,3,192,0,7,128,32,7,0,32,15,0,32, + 30,0,96,30,0,96,60,0,224,56,0,224,120,1,224,240, + 3,192,255,255,192,7,33,33,14,4,249,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,240,254,12,34,68,16, + 2,249,128,0,192,0,64,0,64,0,96,0,32,0,32,0, + 48,0,16,0,16,0,24,0,8,0,8,0,12,0,4,0, + 4,0,6,0,6,0,2,0,3,0,3,0,1,0,1,128, + 1,128,0,128,0,128,0,192,0,64,0,64,0,96,0,32, + 0,32,0,48,0,16,7,33,33,15,3,249,254,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,254,15,13,26, + 21,3,12,1,0,3,128,3,128,6,192,4,64,12,96,24, + 48,16,16,48,24,96,8,96,12,192,6,128,2,19,1,3, + 19,0,250,255,255,224,6,6,6,16,3,19,192,224,112,48, + 24,12,16,17,34,19,2,0,15,128,48,224,96,112,96,112, + 120,112,120,112,0,112,1,240,30,112,112,112,96,112,224,112, + 224,113,224,241,225,113,113,126,62,60,16,26,52,18,0,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,112,29,140,29,14,30,6,30,7,28,7,28,7, + 28,7,28,7,28,7,28,7,28,7,28,7,30,6,30,14, + 19,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, + 112,48,96,112,224,112,224,112,224,0,224,0,224,0,224,0, + 224,0,96,16,112,16,48,32,24,64,15,128,16,26,52,19, + 2,0,1,248,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,14,56,57,184,48,184,112,120,96,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,96,56,112,120, + 48,120,48,248,15,63,13,17,34,17,2,0,15,128,24,224, + 48,96,112,112,96,48,224,56,224,56,255,248,224,0,224,0, + 224,0,224,8,112,16,112,16,48,32,24,96,7,128,12,26, + 52,12,1,0,7,192,12,32,28,48,56,112,56,112,56,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,255,128,17,25,75,20,2,248,7,199, + 0,28,117,128,56,59,128,112,31,128,112,28,0,112,28,0, + 112,28,0,112,28,0,56,56,0,28,112,0,7,192,0,56, + 0,0,64,0,0,64,0,0,64,0,0,127,224,0,63,248, + 0,14,28,0,112,2,0,192,2,0,192,2,0,192,2,0, + 224,4,0,112,8,0,15,240,0,18,26,78,21,1,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,124,0,28,142,0, + 29,7,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,255,31,192,7,25,25, + 10,2,0,48,120,120,48,0,0,0,0,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,9,34,68,11, + 255,248,1,128,3,128,3,128,1,128,0,0,0,0,0,0, + 0,0,0,0,31,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,67,128,227,128,227,0, + 195,0,70,0,60,0,17,26,78,19,1,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,127,0,28,24,0,28,16,0, + 28,48,0,28,32,0,28,64,0,28,128,0,29,192,0,29, + 192,0,30,224,0,28,112,0,28,112,0,28,56,0,28,60, + 0,28,28,0,28,30,0,255,127,128,9,26,52,11,1,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,25,17,68,29,2,0,248,240,120,0,57,56, + 156,0,58,29,14,0,60,30,14,0,60,30,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,254,127,63,128,17,17, + 51,21,2,0,248,248,0,57,28,0,58,14,0,60,14,0, + 60,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,254,63,128,14,17,34,18,2,0,7,128,24, + 96,48,48,112,56,112,24,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,48,48,24,96,7,128,16, + 25,50,19,1,248,252,240,29,140,31,14,30,6,30,7,28, + 7,28,7,28,7,28,7,28,7,28,7,28,7,28,7,30, + 6,30,14,29,12,28,240,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,128,16,25,50,18,2,248,15,8,56, + 136,48,216,112,88,96,120,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,96,56,112,120,48,120,48,184,15,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,1,255,12, + 17,34,15,2,0,248,224,57,16,58,48,58,112,60,112,60, + 0,60,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,12,17,34,16,2,0,62,64,97, + 64,192,192,192,64,192,64,224,64,120,0,127,0,31,192,7, + 224,128,240,192,112,192,48,224,48,224,48,152,96,135,192,11, + 24,48,13,1,0,8,0,8,0,8,0,8,0,24,0,24, + 0,56,0,255,192,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,32,56,32,56,32,56, + 96,31,192,15,128,17,17,51,20,1,0,248,62,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 30,0,56,30,0,56,46,0,28,78,0,15,143,128,18,17, + 51,19,0,0,255,31,192,28,7,0,28,6,0,12,4,0, + 14,4,0,14,4,0,7,8,0,7,8,0,3,8,0,3, + 144,0,1,144,0,1,208,0,1,224,0,0,224,0,0,224, + 0,0,64,0,0,64,0,27,17,68,28,0,0,255,63,207, + 224,28,15,3,0,28,7,3,0,12,7,2,0,14,7,2, + 0,14,15,130,0,7,11,132,0,7,9,132,0,3,137,196, + 0,3,145,200,0,1,144,200,0,1,208,232,0,1,224,240, + 0,0,224,112,0,0,224,112,0,0,64,96,0,0,64,32, + 0,16,17,34,19,2,0,254,126,60,56,28,48,28,32,14, + 64,14,64,7,128,3,128,3,128,3,192,3,192,4,224,8, + 96,8,112,16,56,48,56,252,255,18,25,75,20,1,248,255, + 31,192,28,6,0,28,6,0,12,4,0,14,4,0,14,4, + 0,6,8,0,7,8,0,7,8,0,3,16,0,3,144,0, + 3,144,0,1,240,0,1,224,0,1,224,0,0,224,0,0, + 192,0,0,64,0,0,192,0,0,128,0,112,128,0,113,128, + 0,113,0,0,115,0,0,60,0,0,12,17,34,15,1,0, + 255,240,224,112,192,224,128,224,129,192,131,128,131,128,7,0, + 7,0,14,0,28,16,28,16,56,16,56,16,112,48,224,112, + 255,240,8,33,33,15,3,249,3,4,8,24,24,24,24,28, + 28,28,12,12,12,12,8,24,224,24,8,12,12,12,12,28, + 28,28,24,24,24,24,8,4,3,2,34,34,10,4,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,33,33,14,3,249,192,32,16,24,24,24,24,24,56, + 56,48,48,48,48,16,24,7,24,16,48,48,48,48,56,56, + 24,24,24,24,24,16,32,192,20,6,18,24,2,6,62,0, + 32,127,192,16,135,248,16,128,255,48,128,63,224,96,7,192, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,0,0,0,10,0,0,4,25,25,10,3,248,96,240,240, + 240,96,64,64,96,96,96,96,96,96,96,96,96,96,240,240, + 240,240,240,240,240,96,12,25,50,21,4,252,1,0,1,0, + 1,0,1,0,7,192,25,32,57,48,113,48,113,112,225,112, + 225,32,225,0,225,0,225,0,225,0,225,0,113,16,113,16, + 57,16,29,32,7,192,1,0,1,0,1,0,1,0,20,25, + 75,25,2,0,0,15,128,0,24,96,0,48,32,0,96,112, + 0,192,240,0,192,240,1,192,224,1,192,0,1,192,0,1, + 192,0,1,192,0,63,192,0,1,254,0,1,192,0,1,192, + 0,1,192,0,1,192,0,1,192,0,1,192,0,57,128,16, + 199,128,16,131,128,48,131,224,96,134,255,192,120,63,128,18, + 16,48,22,2,5,195,241,192,124,15,128,48,7,0,32,3, + 0,96,1,0,64,1,128,64,0,128,64,0,128,64,0,128, + 64,0,128,64,1,128,96,1,0,32,3,0,48,7,0,124, + 15,128,227,241,192,20,25,75,22,1,0,255,7,240,60,1, + 192,28,1,128,30,1,0,14,3,0,15,2,0,7,6,0, + 7,132,0,3,140,0,3,136,0,1,216,0,1,208,0,1, + 224,0,31,255,0,0,224,0,0,224,0,31,255,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,15,254,0,2,33,33,10,4,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,0,0,0,0,0,0,0, + 192,192,192,192,192,192,192,192,192,192,192,192,192,13,32,64, + 23,4,249,7,128,24,64,16,96,48,224,48,224,48,64,56, + 0,28,0,30,0,15,0,23,128,99,192,129,224,128,240,128, + 120,128,24,192,24,224,8,120,8,60,16,30,32,15,64,7, + 128,3,192,1,192,0,224,16,96,56,96,56,96,48,64,16, + 192,15,0,10,4,8,16,3,20,96,192,225,192,225,192,96, + 192,26,26,104,30,2,1,0,255,192,0,3,0,48,0,4, + 0,8,0,8,0,4,0,16,30,2,0,32,113,225,0,32, + 224,225,0,65,192,96,128,65,192,96,128,129,128,32,64,131, + 128,32,64,131,128,0,64,131,128,0,64,131,128,0,64,131, + 128,0,64,131,128,0,64,131,128,32,64,65,192,64,128,65, + 192,64,128,32,224,65,0,32,112,129,0,16,31,2,0,8, + 0,4,0,4,0,8,0,3,0,48,0,0,255,192,0,9, + 13,26,13,2,12,120,0,132,0,198,0,198,0,14,0,54, + 0,70,0,198,0,198,128,206,128,115,0,0,0,255,0,10, + 14,28,18,4,2,16,64,48,128,97,128,97,0,195,0,195, + 0,195,0,195,0,195,0,67,0,97,0,32,128,16,192,8, + 0,18,7,21,22,2,6,255,255,192,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,9,2,4,13, + 2,8,255,128,255,128,26,26,104,30,2,1,0,255,192,0, + 3,0,48,0,4,0,8,0,8,0,4,0,19,255,2,0, + 32,225,193,0,32,224,225,0,64,224,224,128,64,224,224,128, + 128,224,224,64,128,224,224,64,128,225,192,64,128,254,0,64, + 128,225,128,64,128,224,192,64,128,224,224,64,128,224,224,64, + 64,224,228,128,64,224,228,128,32,224,233,0,35,248,121,0, + 16,0,2,0,8,0,4,0,4,0,8,0,3,0,48,0, + 0,255,192,0,9,1,2,15,3,21,255,128,10,9,18,22, + 6,16,30,0,97,128,192,128,128,64,128,64,128,64,64,128, + 97,128,30,0,30,25,100,34,2,255,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,255,255,255,252,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3, + 0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,255,255,255,252,10,15, + 30,16,3,10,63,0,67,128,129,192,129,192,225,192,225,192, + 1,128,3,0,6,0,8,0,48,0,64,64,64,64,255,192, + 255,192,10,16,32,16,4,9,62,0,67,0,193,128,225,128, + 225,128,1,128,3,0,124,0,3,128,1,192,1,192,225,192, + 225,192,129,192,131,128,126,0,6,6,6,16,7,19,12,28, + 56,48,96,192,19,27,81,22,2,246,96,24,0,224,60,0, + 224,60,0,224,60,0,224,60,0,224,60,0,224,60,0,224, + 60,0,224,60,0,192,24,0,64,24,0,64,24,0,64,56, + 0,96,48,32,112,124,96,95,227,224,71,193,192,128,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,224,0,0,224, + 0,0,224,0,0,240,0,0,96,0,0,15,31,62,19,2, + 251,31,254,62,16,126,16,254,16,254,16,254,16,254,16,254, + 16,254,16,126,16,62,16,2,16,2,16,2,16,2,16,2, + 16,2,16,2,16,2,16,2,16,2,16,2,16,2,16,2, + 16,2,16,2,16,2,16,2,16,2,16,2,16,2,16,4, + 5,5,10,3,9,96,240,240,240,96,7,7,7,16,4,248, + 16,32,28,6,6,134,124,8,15,15,16,4,10,8,24,248, + 24,24,24,24,24,24,24,24,24,24,24,255,9,13,26,15, + 3,12,28,0,99,0,67,0,193,128,193,128,193,128,193,128, + 193,128,67,0,99,0,28,0,0,0,255,128,9,14,28,17, + 4,2,132,0,66,0,99,0,33,0,49,128,49,128,49,128, + 49,128,49,128,33,128,99,0,67,0,134,0,4,0,24,25, + 75,31,4,0,8,0,16,24,0,48,248,0,32,24,0,64, + 24,0,64,24,0,128,24,1,128,24,1,0,24,2,0,24, + 6,0,24,4,12,24,8,28,24,8,28,24,16,44,255,48, + 76,0,32,76,0,64,140,0,192,140,0,129,12,1,2,12, + 1,3,255,2,0,12,6,0,12,4,0,12,8,0,127,24, + 25,75,31,4,0,8,0,32,24,0,96,248,0,64,24,0, + 192,24,0,128,24,1,0,24,1,0,24,2,0,24,6,0, + 24,4,0,24,12,248,24,9,14,24,18,15,24,18,7,255, + 35,135,0,97,135,0,64,14,0,128,12,0,128,24,1,0, + 32,3,0,193,2,1,1,6,1,1,4,3,255,8,3,254, + 24,25,75,31,4,0,62,0,32,67,0,32,193,128,64,225, + 128,192,1,128,128,3,1,128,124,1,0,3,130,0,1,194, + 0,1,196,0,225,204,24,225,200,24,129,208,56,131,144,88, + 126,32,88,0,96,152,0,64,152,0,193,24,0,129,24,1, + 2,24,3,3,255,2,0,24,6,0,24,4,0,24,8,0, + 127,13,25,50,17,1,248,6,0,15,0,15,0,15,0,6, + 0,7,0,8,192,16,64,16,64,16,192,0,128,1,0,7, + 0,14,0,28,0,56,0,112,0,240,112,224,120,224,120,224, + 24,224,24,112,16,56,96,15,192,25,34,136,28,2,0,0, + 192,0,0,0,224,0,0,0,224,0,0,0,48,0,0,0, + 24,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,12,0,0,0,28,0,0,0,28,0,0,0, + 30,0,0,0,62,0,0,0,46,0,0,0,47,0,0,0, + 103,0,0,0,103,0,0,0,71,128,0,0,195,128,0,0, + 195,128,0,0,131,192,0,1,129,192,0,1,129,192,0,3, + 1,224,0,3,255,224,0,2,0,224,0,6,0,240,0,6, + 0,112,0,6,0,112,0,12,0,120,0,12,0,120,0,30, + 0,120,0,255,195,255,128,25,34,136,28,2,0,0,0,192, + 0,0,1,192,0,0,3,128,0,0,7,0,0,0,6,0, + 0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0, + 0,0,12,0,0,0,28,0,0,0,28,0,0,0,30,0, + 0,0,62,0,0,0,46,0,0,0,47,0,0,0,103,0, + 0,0,103,0,0,0,71,128,0,0,195,128,0,0,195,128, + 0,1,131,192,0,1,129,192,0,1,129,192,0,3,1,224, + 0,3,255,224,0,2,0,224,0,6,0,240,0,6,0,112, + 0,4,0,112,0,12,0,120,0,12,0,56,0,30,0,124, + 0,255,195,255,128,25,34,136,28,2,0,0,8,0,0,0, + 28,0,0,0,30,0,0,0,51,0,0,0,65,128,0,1, + 128,64,0,0,0,0,0,0,0,0,0,0,8,0,0,0, + 12,0,0,0,28,0,0,0,28,0,0,0,30,0,0,0, + 62,0,0,0,46,0,0,0,47,0,0,0,103,0,0,0, + 103,0,0,0,71,128,0,0,195,128,0,0,195,128,0,0, + 131,192,0,1,129,192,0,1,129,192,0,3,1,224,0,3, + 255,224,0,2,0,224,0,6,0,240,0,6,0,112,0,6, + 0,112,0,12,0,120,0,12,0,120,0,30,0,120,0,255, + 195,255,128,25,33,132,28,2,0,0,112,64,0,0,252,64, + 0,0,159,192,0,1,7,128,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,8,0,0,0,12,0,0,0,28,0, + 0,0,28,0,0,0,30,0,0,0,62,0,0,0,46,0, + 0,0,47,0,0,0,103,0,0,0,103,0,0,0,71,128, + 0,0,195,128,0,0,195,128,0,1,131,192,0,1,129,192, + 0,1,129,192,0,3,1,224,0,3,255,224,0,2,0,224, + 0,6,0,240,0,6,0,112,0,4,0,112,0,12,0,120, + 0,12,0,56,0,30,0,124,0,255,195,255,128,25,33,132, + 28,2,0,0,193,128,0,1,193,192,0,1,193,192,0,0, + 193,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 8,0,0,0,24,0,0,0,28,0,0,0,28,0,0,0, + 60,0,0,0,62,0,0,0,62,0,0,0,110,0,0,0, + 79,0,0,0,71,0,0,0,199,0,0,0,199,128,0,0, + 131,128,0,1,131,128,0,1,129,192,0,1,1,192,0,3, + 1,192,0,3,255,224,0,2,0,224,0,6,0,224,0,6, + 0,112,0,4,0,112,0,12,0,112,0,12,0,120,0,30, + 0,120,0,255,195,255,128,25,35,140,28,2,0,0,28,0, + 0,0,34,0,0,0,65,0,0,0,65,0,0,0,65,0, + 0,0,65,0,0,0,34,0,0,0,28,0,0,0,0,0, + 0,0,8,0,0,0,12,0,0,0,28,0,0,0,28,0, + 0,0,30,0,0,0,62,0,0,0,46,0,0,0,47,0, + 0,0,111,0,0,0,71,0,0,0,71,128,0,0,199,128, + 0,0,131,128,0,1,131,192,0,1,131,192,0,1,1,192, + 0,3,1,224,0,3,255,224,0,2,0,224,0,6,0,240, + 0,6,0,240,0,4,0,112,0,12,0,120,0,12,0,120, + 0,28,0,120,0,255,195,255,128,33,26,130,36,1,0,0, + 7,255,255,128,0,1,224,7,128,0,1,224,3,128,0,3, + 224,1,128,0,2,224,1,128,0,6,224,0,128,0,4,224, + 0,128,0,12,224,32,128,0,8,224,32,0,0,24,224,32, + 0,0,16,224,96,0,0,48,224,96,0,0,48,255,224,0, + 0,96,224,96,0,0,96,224,96,0,0,192,224,32,0,0, + 192,224,32,128,1,255,224,32,128,1,0,224,0,128,3,0, + 224,0,128,2,0,224,1,128,6,0,224,1,128,6,0,224, + 1,128,14,0,224,3,128,30,0,224,15,128,255,199,255,255, + 128,19,34,102,24,3,249,3,252,64,14,6,96,28,3,224, + 24,1,224,56,0,224,120,0,224,112,0,96,112,0,96,240, + 0,96,240,0,32,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,32,112,0,32, + 120,0,96,56,0,64,56,0,64,24,0,128,12,0,128,6, + 3,0,3,204,0,0,112,0,0,64,0,0,240,0,0,28, + 0,0,28,0,0,28,0,2,28,0,1,240,0,21,34,102, + 25,2,0,3,0,0,3,128,0,1,192,0,0,192,0,0, + 96,0,0,16,0,0,0,0,0,0,0,255,255,248,14,0, + 120,14,0,56,14,0,24,14,0,24,14,0,8,14,0,8, + 14,4,8,14,4,0,14,4,0,14,12,0,14,12,0,15, + 252,0,14,12,0,14,4,0,14,4,0,14,4,8,14,4, + 8,14,0,8,14,0,8,14,0,24,14,0,24,14,0,56, + 14,0,56,14,0,248,255,255,248,21,34,102,25,2,0,0, + 3,0,0,7,128,0,7,0,0,12,0,0,24,0,0,48, + 0,0,0,0,0,0,0,255,255,248,14,0,120,14,0,56, + 14,0,24,14,0,24,14,0,8,14,0,8,14,4,8,14, + 4,0,14,4,0,14,12,0,14,12,0,15,252,0,14,12, + 0,14,4,0,14,4,0,14,4,8,14,4,8,14,0,8, + 14,0,8,14,0,24,14,0,24,14,0,56,14,0,56,14, + 0,248,255,255,248,21,34,102,25,2,0,0,48,0,0,48, + 0,0,120,0,0,204,0,1,134,0,2,1,128,0,0,0, + 0,0,0,255,255,248,14,0,120,14,0,56,14,0,24,14, + 0,24,14,0,8,14,0,8,14,4,8,14,4,0,14,4, + 0,14,12,0,14,12,0,15,252,0,14,12,0,14,4,0, + 14,4,0,14,4,8,14,4,8,14,0,8,14,0,8,14, + 0,24,14,0,24,14,0,56,14,0,56,14,0,248,255,255, + 248,21,33,99,25,2,0,1,131,0,3,135,0,3,135,0, + 1,131,0,0,0,0,0,0,0,0,0,0,255,255,248,14, + 0,120,14,0,56,14,0,24,14,0,24,14,0,8,14,0, + 8,14,4,8,14,4,0,14,4,0,14,12,0,14,12,0, + 15,252,0,14,12,0,14,4,0,14,4,0,14,4,8,14, + 4,8,14,0,8,14,0,8,14,0,24,14,0,24,14,0, + 56,14,0,56,14,0,248,255,255,248,10,34,68,14,2,0, + 192,0,224,0,112,0,56,0,8,0,4,0,0,0,0,0, + 255,192,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,255,192,10,34,68,14,2,0,0,192,1,192,1,128, + 3,0,6,0,4,0,0,0,0,0,255,192,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,255,192,10,34, + 68,14,2,0,4,0,14,0,30,0,59,0,97,128,128,64, + 0,0,0,0,255,192,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,255,192,11,33,66,14,2,0,96,192, + 224,224,224,224,96,192,0,0,0,0,0,0,127,224,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,127,224, + 24,26,78,27,2,0,255,255,0,14,0,192,14,0,112,14, + 0,56,14,0,60,14,0,28,14,0,30,14,0,30,14,0, + 14,14,0,15,14,0,15,14,0,15,255,224,15,14,0,15, + 14,0,15,14,0,15,14,0,15,14,0,14,14,0,30,14, + 0,30,14,0,28,14,0,56,14,0,56,14,0,112,14,0, + 192,255,255,0,25,33,132,28,2,0,0,120,32,0,0,254, + 96,0,0,143,192,0,0,131,128,0,0,0,0,0,0,0, + 0,0,0,0,0,0,254,0,255,128,15,0,28,0,15,128, + 8,0,15,128,8,0,11,192,8,0,11,192,8,0,9,224, + 8,0,8,240,8,0,8,240,8,0,8,120,8,0,8,60, + 8,0,8,60,8,0,8,30,8,0,8,30,8,0,8,15, + 8,0,8,7,136,0,8,7,136,0,8,3,200,0,8,1, + 232,0,8,1,232,0,8,0,248,0,8,0,120,0,8,0, + 120,0,8,0,56,0,28,0,24,0,255,128,24,0,21,34, + 102,26,3,0,3,0,0,7,0,0,3,128,0,1,192,0, + 0,64,0,0,32,0,0,0,0,0,32,0,3,220,0,6, + 3,0,12,1,128,28,1,192,56,0,224,56,0,224,120,0, + 240,112,0,112,112,0,112,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,240,0,120,112, + 0,112,112,0,112,120,0,240,56,0,224,56,0,224,28,1, + 192,12,1,128,6,3,0,3,254,0,21,34,102,26,3,0, + 0,6,0,0,7,0,0,14,0,0,28,0,0,16,0,0, + 32,0,0,0,0,0,32,0,3,220,0,6,3,0,12,1, + 128,28,1,192,56,0,224,56,0,224,120,0,240,112,0,112, + 112,0,112,240,0,120,240,0,120,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,112,0,112,112,0, + 112,120,0,240,56,0,224,56,0,224,28,1,192,12,1,128, + 6,3,0,3,254,0,21,34,102,26,3,0,0,32,0,0, + 112,0,0,112,0,0,216,0,1,4,0,6,3,0,0,0, + 0,0,32,0,3,220,0,6,3,0,12,1,128,28,1,192, + 56,0,224,56,0,224,120,0,240,112,0,112,112,0,112,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,240,0,120,240,0,120,112,0,112,112,0,112,120,0,240, + 56,0,224,56,0,224,28,1,192,12,1,128,6,3,0,3, + 254,0,21,33,99,26,3,0,3,225,0,3,255,0,4,62, + 0,0,0,0,0,0,0,0,0,0,0,32,0,3,220,0, + 6,3,0,12,1,128,28,1,192,56,0,224,56,0,224,120, + 0,240,112,0,112,112,0,112,240,0,120,240,0,120,240,0, + 120,240,0,120,240,0,120,240,0,120,240,0,120,240,0,120, + 112,0,112,112,0,112,120,0,240,56,0,224,56,0,224,28, + 1,192,12,1,128,6,3,0,3,254,0,21,33,99,26,3, + 0,3,6,0,7,7,0,7,7,0,3,6,0,0,0,0, + 0,0,0,0,32,0,3,220,0,6,3,0,12,1,128,28, + 1,192,56,0,224,56,0,224,120,0,240,112,0,112,112,0, + 112,240,0,120,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,112,0,112,112,0,112,120, + 0,240,56,0,224,56,0,224,28,1,192,12,1,128,6,3, + 0,3,254,0,22,23,69,34,6,254,128,0,4,192,0,12, + 96,0,24,48,0,48,24,0,96,12,0,192,6,1,128,3, + 3,0,1,134,0,0,204,0,0,120,0,0,48,0,0,120, + 0,0,204,0,1,134,0,3,3,0,6,1,128,12,0,192, + 24,0,96,48,0,48,96,0,24,192,0,12,128,0,0,21, + 27,81,26,3,0,0,32,0,3,222,24,6,3,48,12,1, + 224,28,1,192,56,0,224,56,1,224,120,3,240,112,2,112, + 112,6,112,240,12,120,240,24,120,240,16,120,240,48,120,240, + 96,120,240,192,120,240,192,120,241,128,120,115,0,112,114,0, + 112,126,0,240,60,0,224,56,0,224,28,1,192,60,1,128, + 102,3,0,195,222,0,25,34,136,29,2,0,0,192,0,0, + 0,224,0,0,0,224,0,0,0,48,0,0,0,16,0,0, + 0,8,0,0,0,0,0,0,0,0,0,0,255,192,255,128, + 14,0,14,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 6,0,8,0,7,0,8,0,3,0,16,0,1,192,32,0, + 0,127,192,0,25,34,136,29,2,0,0,0,192,0,0,1, + 192,0,0,3,128,0,0,7,0,0,0,4,0,0,0,8, + 0,0,0,0,0,0,0,0,0,0,255,192,255,128,14,0, + 14,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,6,0, + 8,0,7,0,8,0,3,0,16,0,1,192,32,0,0,127, + 192,0,25,34,136,29,2,0,0,8,0,0,0,28,0,0, + 0,30,0,0,0,55,0,0,0,65,128,0,1,128,96,0, + 0,0,0,0,0,0,0,0,255,192,255,128,14,0,14,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,14,0,4,0, + 14,0,4,0,14,0,4,0,14,0,4,0,6,0,8,0, + 7,0,8,0,3,128,16,0,1,192,96,0,0,127,192,0, + 25,33,132,29,2,0,0,192,192,0,0,225,192,0,0,225, + 192,0,0,192,192,0,0,0,0,0,0,0,0,0,0,0, + 0,0,255,192,255,128,14,0,14,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,14,0,4,0,14,0,4,0,14,0, + 4,0,14,0,4,0,6,0,8,0,7,0,8,0,3,0, + 16,0,1,192,32,0,0,127,192,0,24,34,102,27,2,0, + 0,0,192,0,1,192,0,3,128,0,7,0,0,4,0,0, + 8,0,0,0,0,0,0,0,255,225,255,31,0,56,15,0, + 48,7,128,48,7,128,32,3,192,96,3,192,64,1,224,128, + 0,224,128,0,241,0,0,113,0,0,122,0,0,58,0,0, + 60,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,1,255,224,21,26,78,25,2,0,255,224,0,14, + 0,0,14,0,0,14,0,0,14,0,0,15,255,0,14,1, + 192,14,0,224,14,0,240,14,0,120,14,0,120,14,0,120, + 14,0,120,14,0,120,14,0,240,14,0,224,14,1,192,15, + 255,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,255,224,0,16,26,52,19,1,0, + 1,240,3,28,6,14,14,14,28,14,28,14,28,12,28,28, + 28,48,29,192,28,48,28,24,28,12,28,14,28,6,28,7, + 28,7,28,7,28,7,28,7,28,135,29,199,29,199,29,142, + 29,140,252,120,16,25,50,19,2,1,112,0,112,0,56,0, + 28,0,12,0,2,0,0,0,0,0,15,128,48,224,32,112, + 96,112,120,112,120,112,0,112,1,240,30,112,112,112,96,112, + 224,112,224,113,224,241,225,113,113,126,62,60,16,25,50,19, + 2,1,0,112,0,240,0,224,1,128,3,0,2,0,0,0, + 0,0,15,128,48,224,96,112,96,112,120,112,120,112,0,112, + 1,240,30,112,112,112,96,112,224,112,224,113,224,241,225,113, + 113,126,62,60,16,25,50,19,2,0,6,0,7,0,7,0, + 13,128,24,192,48,96,0,0,0,0,15,128,48,224,96,112, + 96,112,120,112,120,112,0,112,1,240,30,112,112,112,96,112, + 224,112,224,113,224,241,225,113,113,126,62,60,16,24,48,19, + 2,0,30,48,63,224,35,192,0,0,0,0,0,0,0,0, + 15,128,48,224,96,112,96,112,120,112,120,112,0,112,1,240, + 30,112,112,112,96,112,224,112,224,113,224,241,225,113,113,126, + 62,60,16,24,48,19,2,0,48,96,112,224,112,224,48,96, + 0,0,0,0,0,0,15,0,48,192,96,96,96,96,112,96, + 112,96,0,96,1,224,30,96,112,96,96,96,224,96,224,97, + 224,225,225,99,113,126,62,60,16,25,50,19,2,0,7,0, + 24,192,16,64,16,64,24,192,7,0,0,0,0,0,15,128, + 48,224,96,112,96,112,120,112,120,112,0,112,1,240,30,112, + 112,112,96,112,224,112,224,113,224,241,225,113,113,126,62,60, + 22,17,51,26,2,0,15,135,192,48,236,112,96,120,48,112, + 120,56,120,112,24,56,112,28,0,112,28,7,255,252,56,112, + 0,112,112,0,224,112,0,224,112,4,224,248,8,224,184,8, + 225,56,16,113,28,48,62,7,192,12,24,48,16,2,249,15, + 128,24,96,48,48,112,48,96,112,224,112,224,112,224,0,224, + 0,224,0,224,0,224,0,96,16,112,16,48,32,24,96,15, + 128,2,0,6,0,1,128,0,192,0,192,16,192,15,128,13, + 25,50,17,2,1,48,0,56,0,28,0,12,0,6,0,3, + 0,0,0,0,0,15,128,24,224,48,96,112,112,96,48,224, + 56,224,56,255,248,224,0,224,0,224,0,224,8,112,16,112, + 16,48,16,24,96,7,128,13,25,50,17,2,1,0,112,0, + 112,0,224,0,192,1,128,3,0,0,0,0,0,15,128,24, + 224,48,96,112,112,96,48,224,56,224,56,255,248,224,0,224, + 0,224,0,224,8,112,16,112,16,48,16,24,96,7,128,13, + 25,50,17,2,0,3,0,3,0,7,128,5,128,8,64,16, + 32,0,0,0,0,15,128,24,224,48,96,112,112,96,48,224, + 56,224,56,255,248,224,0,224,0,224,0,224,8,112,16,112, + 16,48,32,24,96,7,128,13,24,48,17,2,0,24,96,56, + 112,56,112,24,96,0,0,0,0,0,0,15,128,24,224,48, + 96,112,48,96,48,224,56,224,56,255,248,224,0,224,0,224, + 0,224,8,112,16,112,16,48,32,24,96,7,128,9,25,50, + 11,0,0,192,0,224,0,112,0,56,0,8,0,4,0,0, + 0,0,0,62,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,63,128,8,25,25,10,2,0,3,7,7,12,24, + 48,0,0,248,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,254,9,25,50,11,1,0,24,0,28,0,60,0, + 54,0,99,0,128,128,0,0,0,0,124,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,127,0,9,24,48,11, + 1,0,97,128,227,128,227,128,97,128,0,0,0,0,0,0, + 126,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 127,128,14,26,52,18,2,0,28,16,14,48,15,192,7,128, + 7,128,13,192,48,224,0,224,0,112,7,240,24,120,48,56, + 112,60,112,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,112,24,112,56,48,48,24,96,7,128,17,24,72,21, + 2,0,7,4,0,15,204,0,9,248,0,8,112,0,0,0, + 0,0,0,0,0,0,0,248,248,0,57,28,0,58,14,0, + 60,14,0,60,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,254,63,128,14,25,50,18,2,1, + 56,0,56,0,28,0,12,0,6,0,3,0,0,0,0,0, + 7,128,24,96,48,48,112,56,112,24,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,112,24,112,56,48,48,24,96, + 7,128,14,25,50,18,2,1,0,48,0,112,0,224,0,192, + 1,128,1,0,0,0,0,0,7,128,24,96,48,48,112,56, + 112,24,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 112,24,112,56,48,48,24,96,7,128,14,25,50,18,2,0, + 3,0,3,0,7,128,4,128,8,64,16,32,0,0,0,0, + 7,128,24,96,48,48,112,56,112,24,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,112,24,112,56,48,48,24,96, + 7,128,14,24,48,18,2,0,30,16,31,240,33,224,0,0, + 0,0,0,0,0,0,7,128,24,96,48,48,112,56,112,24, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,112,24, + 112,56,48,48,24,96,7,128,14,24,48,18,2,0,24,48, + 56,112,56,112,24,48,0,0,0,0,0,0,7,128,24,96, + 48,48,112,56,112,24,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,112,24,112,56,48,48,24,96,7,128,30,23, + 92,34,2,254,0,3,0,0,0,7,128,0,0,7,128,0, + 0,7,128,0,0,3,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 255,255,255,252,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,7,128,0,0,7,128,0,0,7,128,0,0,3,0,0, + 14,17,34,18,2,0,7,132,24,104,48,56,112,56,112,56, + 224,92,224,156,225,156,227,28,226,28,228,28,232,28,120,24, + 112,56,48,48,88,96,135,192,17,25,75,20,1,1,28,0, + 0,28,0,0,14,0,0,3,0,0,1,0,0,0,128,0, + 0,0,0,0,0,0,248,62,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,30,0,56,30,0, + 56,46,0,28,78,0,15,143,128,17,25,75,20,1,1,0, + 28,0,0,60,0,0,48,0,0,96,0,0,192,0,0,128, + 0,0,0,0,0,0,0,248,62,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,30,0,56,30, + 0,56,46,0,28,78,0,15,143,128,17,25,75,20,1,0, + 0,128,0,1,192,0,1,192,0,3,96,0,4,48,0,8, + 8,0,0,0,0,0,0,0,248,62,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,30,0,56, + 30,0,56,46,0,28,78,0,15,143,128,17,24,72,20,1, + 0,12,48,0,28,56,0,28,56,0,12,48,0,0,0,0, + 0,0,0,0,0,0,248,62,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,30,0,56,30,0, + 56,46,0,28,78,0,15,143,128,18,33,99,19,1,249,0, + 12,0,0,28,0,0,24,0,0,48,0,0,96,0,0,64, + 0,0,0,0,0,0,0,255,31,192,28,6,0,28,4,0, + 12,4,0,14,4,0,14,4,0,6,8,0,7,8,0,7, + 8,0,3,16,0,3,144,0,3,144,0,1,224,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,64,0,0,128,0, + 0,128,0,112,128,0,113,128,0,113,0,0,114,0,0,60, + 0,0,16,34,68,19,1,247,12,0,60,0,92,0,28,0, + 28,0,28,0,28,0,28,0,28,60,28,126,28,143,29,7, + 30,7,30,7,30,7,28,6,28,14,28,14,28,12,28,24, + 28,16,28,32,28,64,29,128,31,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,224,0,17,32,96,19, + 1,248,6,12,0,7,28,0,7,28,0,6,12,0,0,0, + 0,0,0,0,0,0,0,255,31,128,28,6,0,28,4,0, + 14,4,0,14,4,0,14,8,0,7,8,0,7,8,0,7, + 16,0,3,144,0,3,144,0,3,160,0,1,224,0,1,224, + 0,1,224,0,0,192,0,0,192,0,0,64,0,0,128,0, + 0,128,0,112,128,0,121,0,0,121,0,0,114,0,0,60, + 0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 25 + Calculated Max Values w=30 h=34 x= 4 y=10 dx=34 dy= 0 ascent=27 len=124 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x= 0 y=-7 dx= 0 dy= 0 + Pure Font ascent =25 descent= 0 + X Font ascent =25 descent= 0 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26n[932] U8G_SECTION(".progmem.u8g_font_osr26n") = { + 0,94,46,227,245,25,0,0,0,0,42,57,0,27,249,25, + 0,13,15,30,18,3,10,7,0,7,0,7,0,195,24,226, + 56,114,112,10,128,7,0,15,128,122,240,242,120,226,56,7, + 0,7,0,7,0,30,31,124,34,2,250,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,255,255,255,252,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,5,11,11,10,2,250,112,248,248, + 120,8,8,8,16,16,32,64,9,2,4,13,2,8,255,128, + 255,128,4,5,5,10,3,0,96,240,240,240,96,12,34,68, + 16,2,249,0,16,0,48,0,48,0,32,0,96,0,96,0, + 64,0,192,0,192,0,128,0,128,1,128,1,0,1,0,3, + 0,2,0,2,0,6,0,4,0,4,0,12,0,8,0,8, + 0,24,0,24,0,16,0,48,0,48,0,32,0,96,0,96, + 0,64,0,192,0,192,0,17,25,75,21,2,0,3,224,0, + 14,56,0,28,28,0,24,12,0,56,14,0,112,7,0,112, + 7,0,112,7,0,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,240,7,128,240,7,128,240,7,128,240,7,128, + 112,7,0,112,7,0,112,7,0,56,14,0,56,14,0,24, + 12,0,12,24,0,7,112,0,12,25,50,21,4,0,1,0, + 3,0,3,0,15,0,255,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,255,240, + 15,25,50,21,3,0,15,192,48,112,96,56,64,60,192,30, + 192,30,224,30,248,30,248,30,120,28,0,60,0,56,0,112, + 0,224,1,192,3,0,14,0,28,4,56,4,48,4,96,4, + 96,12,255,252,255,252,255,252,15,25,50,21,3,0,15,192, + 48,112,32,56,96,28,112,28,120,28,120,28,48,28,0,28, + 0,56,0,112,31,192,24,112,0,56,0,60,0,30,0,30, + 112,30,248,30,248,30,248,30,192,60,192,56,96,112,63,224, + 17,25,75,21,2,0,0,16,0,0,48,0,0,112,0,0, + 112,0,0,240,0,1,240,0,1,112,0,3,112,0,6,112, + 0,6,112,0,12,112,0,8,112,0,24,112,0,48,112,0, + 32,112,0,96,112,0,192,112,0,255,255,128,0,112,0,0, + 112,0,0,112,0,0,112,0,0,112,0,0,112,0,7,255, + 128,15,26,52,21,3,0,32,0,48,56,63,240,63,192,47, + 0,32,0,32,0,32,0,32,0,39,192,56,112,48,56,32, + 60,32,28,0,30,0,30,0,30,0,30,120,30,248,30,248, + 28,240,60,224,60,96,56,112,112,63,192,15,25,50,21,3, + 0,3,224,6,24,12,12,24,28,56,60,48,60,112,16,112, + 0,112,0,243,224,246,56,252,28,248,28,248,14,240,14,240, + 14,240,14,240,14,112,14,112,14,112,12,56,28,56,24,24, + 56,14,224,14,25,50,21,3,0,255,252,255,252,255,252,192, + 12,128,8,128,8,128,8,128,16,0,16,0,32,0,96,0, + 64,0,128,1,128,1,128,3,0,3,0,7,0,7,0,15, + 128,15,128,15,128,15,128,15,128,7,128,17,25,75,21,2, + 0,7,240,0,28,28,0,48,14,0,112,6,0,224,3,0, + 224,3,0,224,3,0,240,3,0,240,6,0,124,6,0,127, + 140,0,31,240,0,7,252,0,25,254,0,48,63,0,96,15, + 128,224,7,128,224,3,128,224,3,128,224,3,128,224,3,0, + 96,7,0,112,6,0,56,12,0,15,248,0,15,25,50,21, + 3,0,7,192,24,96,48,48,112,56,112,28,224,28,224,28, + 224,30,224,30,224,30,224,30,112,62,112,62,56,94,15,158, + 0,30,0,28,0,28,56,28,120,28,120,56,112,56,96,112, + 48,224,31,192}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--36-360-72-72-P-189-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 26, '1' Height: 25 + Calculated Max Values w=36 h=34 x= 4 y=20 dx=38 dy= 0 ascent=28 len=130 + Font Bounding box w=94 h=46 x=-29 y=-11 + Calculated Min Values x=-1 y=-8 dx= 0 dy= 0 + Pure Font ascent =26 descent=-8 + X Font ascent =27 descent=-8 + Max Font ascent =28 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr26r[6049] U8G_SECTION(".progmem.u8g_font_osr26r") = { + 0,94,46,227,245,26,7,96,17,82,32,127,248,28,248,27, + 248,0,0,0,10,0,0,4,25,25,10,3,0,96,240,240, + 240,240,240,240,240,96,96,96,96,96,96,96,96,96,96,32, + 64,96,240,240,240,96,8,7,7,14,3,20,195,195,195,195, + 195,195,66,19,25,75,25,3,0,1,130,0,1,130,0,1, + 2,0,1,6,0,3,6,0,3,6,0,3,6,0,255,255, + 224,2,4,0,2,4,0,2,12,0,6,12,0,6,12,0, + 6,12,0,6,8,0,4,8,0,4,8,0,255,255,224,12, + 24,0,12,24,0,12,16,0,8,16,0,8,48,0,8,48, + 0,24,48,0,16,31,62,21,2,253,2,64,2,64,2,64, + 7,224,26,92,50,70,34,66,98,67,98,71,98,79,98,79, + 114,78,58,64,63,64,31,192,7,240,3,252,2,126,2,78, + 34,71,242,67,242,67,226,67,226,67,194,66,66,70,34,76, + 30,112,3,192,2,64,2,64,24,25,75,30,3,0,30,0, + 48,33,0,32,97,128,96,192,192,64,192,192,192,192,192,128, + 192,193,0,192,195,0,192,194,0,64,134,0,97,132,0,34, + 8,0,28,24,112,0,16,132,0,49,134,0,33,2,0,67, + 3,0,195,3,0,131,3,1,131,3,1,3,3,3,3,3, + 6,1,6,4,1,134,12,0,252,24,25,75,28,2,0,1, + 240,0,3,8,0,6,12,0,12,4,0,12,4,0,12,12, + 0,14,8,0,14,24,0,7,48,0,7,192,0,3,193,255, + 7,192,56,13,224,48,24,240,48,48,112,32,112,120,96,112, + 60,64,224,28,128,224,15,128,224,15,0,224,7,0,240,3, + 129,112,15,194,120,25,228,31,224,252,2,7,7,8,3,20, + 192,192,192,192,192,192,64,8,33,33,14,4,250,3,6,12, + 12,24,16,48,48,96,96,96,192,192,192,192,192,192,192,192, + 192,192,64,96,96,96,48,48,24,24,12,6,6,3,8,33, + 33,13,2,250,192,96,96,48,24,24,12,12,6,6,6,2, + 3,3,3,3,3,3,3,3,2,6,6,6,4,12,12,24, + 24,48,96,192,128,13,15,30,18,3,10,7,0,7,0,7, + 0,195,24,226,56,114,112,10,128,7,0,15,128,122,240,242, + 120,226,56,7,0,7,0,7,0,30,31,124,34,2,250,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,255,255,255,252,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0, + 3,0,0,0,3,0,0,0,3,0,0,5,11,11,10,2, + 250,112,248,248,120,8,8,8,16,16,32,64,9,2,4,13, + 2,8,255,128,255,128,4,5,5,10,3,0,96,240,240,240, + 96,12,34,68,16,2,249,0,16,0,48,0,48,0,32,0, + 96,0,96,0,64,0,192,0,192,0,128,0,128,1,128,1, + 0,1,0,3,0,2,0,2,0,6,0,4,0,4,0,12, + 0,8,0,8,0,24,0,24,0,16,0,48,0,48,0,32, + 0,96,0,96,0,64,0,192,0,192,0,17,25,75,21,2, + 0,3,224,0,14,56,0,28,28,0,24,12,0,56,14,0, + 112,7,0,112,7,0,112,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,240,7,128,240,7,128,240,7,128,240,7, + 128,240,7,128,112,7,0,112,7,0,112,7,0,56,14,0, + 56,14,0,24,12,0,12,24,0,7,112,0,12,25,50,21, + 4,0,1,0,3,0,3,0,15,0,255,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,7,0, + 7,0,255,240,15,25,50,21,3,0,15,192,48,112,96,56, + 64,60,192,30,192,30,224,30,248,30,248,30,120,28,0,60, + 0,56,0,112,0,224,1,192,3,0,14,0,28,4,56,4, + 48,4,96,4,96,12,255,252,255,252,255,252,15,25,50,21, + 3,0,15,192,48,112,32,56,96,28,112,28,120,28,120,28, + 48,28,0,28,0,56,0,112,31,192,24,112,0,56,0,60, + 0,30,0,30,112,30,248,30,248,30,248,30,192,60,192,56, + 96,112,63,224,17,25,75,21,2,0,0,16,0,0,48,0, + 0,112,0,0,112,0,0,240,0,1,240,0,1,112,0,3, + 112,0,6,112,0,6,112,0,12,112,0,8,112,0,24,112, + 0,48,112,0,32,112,0,96,112,0,192,112,0,255,255,128, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,15,26,52,21,3,0,32,0,48,56,63, + 240,63,192,47,0,32,0,32,0,32,0,32,0,39,192,56, + 112,48,56,32,60,32,28,0,30,0,30,0,30,0,30,120, + 30,248,30,248,28,240,60,224,60,96,56,112,112,63,192,15, + 25,50,21,3,0,3,224,6,24,12,12,24,28,56,60,48, + 60,112,16,112,0,112,0,243,224,246,56,252,28,248,28,248, + 14,240,14,240,14,240,14,240,14,112,14,112,14,112,12,56, + 28,56,24,24,56,14,224,14,25,50,21,3,0,255,252,255, + 252,255,252,192,12,128,8,128,8,128,8,128,16,0,16,0, + 32,0,96,0,64,0,128,1,128,1,128,3,0,3,0,7, + 0,7,0,15,128,15,128,15,128,15,128,15,128,7,128,17, + 25,75,21,2,0,7,240,0,28,28,0,48,14,0,112,6, + 0,224,3,0,224,3,0,224,3,0,240,3,0,240,6,0, + 124,6,0,127,140,0,31,240,0,7,252,0,25,254,0,48, + 63,0,96,15,128,224,7,128,224,3,128,224,3,128,224,3, + 128,224,3,0,96,7,0,112,6,0,56,12,0,15,248,0, + 15,25,50,21,3,0,7,192,24,96,48,48,112,56,112,28, + 224,28,224,28,224,30,224,30,224,30,224,30,112,62,112,62, + 56,94,15,158,0,30,0,28,0,28,56,28,120,28,120,56, + 112,56,96,112,48,224,31,192,4,17,17,10,3,0,96,240, + 240,240,96,0,0,0,0,0,0,0,96,240,240,240,96,5, + 23,23,11,3,250,112,248,248,248,112,0,0,0,0,0,0, + 0,112,240,248,120,8,8,8,16,16,32,64,28,29,116,34, + 3,251,0,0,0,112,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,1,224,0,0,3,128,0,0,14, + 0,0,0,56,0,0,0,224,0,0,3,128,0,0,15,0, + 0,0,28,0,0,0,112,0,0,0,192,0,0,0,112,0, + 0,0,28,0,0,0,7,0,0,0,1,192,0,0,0,240, + 0,0,0,56,0,0,0,14,0,0,0,3,128,0,0,0, + 224,0,0,0,56,0,0,0,14,0,0,0,7,0,0,0, + 1,192,0,0,0,112,30,8,32,34,2,6,255,255,255,252, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,252,28,29,116,34, + 3,251,224,0,0,0,56,0,0,0,14,0,0,0,3,128, + 0,0,0,224,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,1,192,0,0,0,112,0,0,0,28,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,48,0,0, + 0,224,0,0,3,128,0,0,14,0,0,0,56,0,0,0, + 240,0,0,1,192,0,0,7,0,0,0,28,0,0,0,112, + 0,0,1,192,0,0,7,0,0,0,30,0,0,0,56,0, + 0,0,224,0,0,0,13,25,50,17,2,0,15,128,48,224, + 64,112,192,56,192,56,248,56,248,56,112,56,0,112,0,224, + 1,192,3,128,3,0,4,0,12,0,8,64,8,64,8,128, + 7,0,0,0,3,0,7,128,7,128,7,128,3,0,26,27, + 108,30,2,0,0,4,0,0,0,251,224,0,3,0,56,0, + 6,0,12,0,12,0,6,0,24,0,3,0,48,15,1,0, + 48,49,241,128,96,96,241,128,96,192,224,128,193,192,224,192, + 193,128,224,192,193,128,192,192,195,128,192,192,195,1,192,192, + 195,1,192,192,195,1,129,128,195,3,129,128,67,7,129,0, + 99,7,130,0,97,137,132,0,32,240,248,0,48,0,0,0, + 24,0,0,0,12,0,16,0,7,0,48,0,1,255,192,0, + 25,26,104,28,2,0,0,8,0,0,0,12,0,0,0,28, + 0,0,0,28,0,0,0,30,0,0,0,62,0,0,0,46, + 0,0,0,47,0,0,0,103,0,0,0,103,0,0,0,71, + 128,0,0,195,128,0,0,195,128,0,0,131,192,0,1,129, + 192,0,1,129,192,0,3,1,224,0,3,255,224,0,2,0, + 224,0,6,0,240,0,6,0,112,0,6,0,112,0,12,0, + 120,0,12,0,120,0,30,0,120,0,255,195,255,128,20,26, + 78,25,3,0,255,252,0,28,3,0,28,1,192,28,1,192, + 28,0,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 1,192,28,1,128,28,3,0,31,252,0,28,7,0,28,1, + 192,28,1,224,28,0,224,28,0,240,28,0,240,28,0,240, + 28,0,240,28,0,240,28,1,224,28,1,192,28,3,128,255, + 254,0,19,26,78,24,3,1,3,252,32,14,6,96,28,3, + 224,24,1,224,56,0,224,120,0,224,112,0,96,112,0,96, + 240,0,96,240,0,32,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,112,0,32,112,0, + 32,120,0,96,56,0,64,56,0,64,28,0,128,12,0,128, + 6,3,0,3,222,0,24,26,78,29,3,0,255,255,0,28, + 1,192,28,0,112,28,0,56,28,0,56,28,0,28,28,0, + 30,28,0,30,28,0,14,28,0,15,28,0,15,28,0,15, + 28,0,15,28,0,15,28,0,15,28,0,15,28,0,15,28, + 0,14,28,0,30,28,0,30,28,0,28,28,0,56,28,0, + 56,28,0,112,28,1,192,255,255,0,21,26,78,25,2,0, + 255,255,248,14,0,120,14,0,56,14,0,24,14,0,24,14, + 0,8,14,0,8,14,4,8,14,4,0,14,4,0,14,12, + 0,14,12,0,15,252,0,14,12,0,14,4,0,14,4,0, + 14,4,8,14,4,8,14,0,8,14,0,8,14,0,24,14, + 0,24,14,0,56,14,0,56,14,0,248,255,255,248,20,26, + 78,24,2,0,255,255,240,14,0,240,14,0,112,14,0,48, + 14,0,48,14,0,16,14,0,16,14,4,16,14,4,0,14, + 4,0,14,12,0,14,12,0,15,252,0,14,12,0,14,12, + 0,14,4,0,14,4,0,14,4,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,255, + 224,0,22,27,81,26,3,0,0,32,0,3,220,32,6,7, + 32,12,3,224,24,1,224,56,0,224,56,0,96,112,0,96, + 112,0,96,112,0,32,240,0,32,240,0,0,240,0,0,240, + 0,0,240,15,252,240,0,224,240,0,224,240,0,224,240,0, + 224,112,0,224,112,0,224,56,0,224,56,1,224,24,1,32, + 12,3,32,6,6,32,3,252,32,24,26,78,28,2,0,255, + 195,255,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,15,255,248,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,255,195,255,10,26,52, + 14,2,0,255,192,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,14,0,14,0,14,0,14,0,14,0,14, + 0,14,0,14,0,255,192,16,26,52,19,2,0,3,255,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,112,56,248,56,248,56,240,56,192,48,192,112,96,96,63, + 192,24,26,78,28,2,0,255,199,254,14,1,240,14,0,224, + 14,0,192,14,1,128,14,3,0,14,6,0,14,12,0,14, + 24,0,14,24,0,14,56,0,14,124,0,14,188,0,15,62, + 0,15,30,0,14,31,0,14,15,0,14,15,128,14,7,128, + 14,7,192,14,3,192,14,1,224,14,1,240,14,0,240,14, + 0,248,255,199,255,20,26,78,24,2,0,255,224,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,16,14,0, + 16,14,0,32,14,0,48,14,0,48,14,0,48,14,0,112, + 14,0,240,14,3,240,255,255,240,26,26,104,30,2,0,255, + 0,31,192,15,0,30,0,15,128,30,0,15,128,46,0,11, + 128,46,0,11,128,46,0,11,192,110,0,9,192,78,0,9, + 192,78,0,9,224,78,0,8,224,142,0,8,224,142,0,8, + 224,142,0,8,241,142,0,8,113,14,0,8,113,14,0,8, + 121,14,0,8,59,14,0,8,58,14,0,8,58,14,0,8, + 30,14,0,8,28,14,0,8,28,14,0,8,12,14,0,28, + 12,14,0,255,136,255,192,25,26,104,28,2,0,254,0,255, + 128,15,0,28,0,15,128,8,0,15,128,8,0,11,192,8, + 0,11,192,8,0,9,224,8,0,8,240,8,0,8,240,8, + 0,8,120,8,0,8,60,8,0,8,60,8,0,8,30,8, + 0,8,30,8,0,8,15,8,0,8,7,136,0,8,7,136, + 0,8,3,200,0,8,1,232,0,8,1,232,0,8,0,248, + 0,8,0,120,0,8,0,120,0,8,0,56,0,28,0,24, + 0,255,128,24,0,21,27,81,26,3,0,0,32,0,3,220, + 0,6,3,0,12,1,128,28,1,192,56,0,224,56,0,224, + 120,0,240,112,0,112,112,0,112,240,0,120,240,0,120,240, + 0,120,240,0,120,240,0,120,240,0,120,240,0,120,240,0, + 120,112,0,112,112,0,112,120,0,240,56,0,224,56,0,224, + 28,1,192,12,1,128,6,3,0,3,254,0,21,26,78,25, + 2,0,255,255,0,14,1,192,14,0,224,14,0,240,14,0, + 120,14,0,120,14,0,120,14,0,120,14,0,120,14,0,112, + 14,0,240,14,0,224,14,1,192,15,254,0,14,0,0,14, + 0,0,14,0,0,14,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,255,224,0, + 21,33,99,26,3,250,0,32,0,3,220,0,6,3,0,12, + 1,128,28,1,192,56,0,224,56,0,224,120,0,240,112,0, + 112,112,0,112,240,0,120,240,0,120,240,0,120,240,0,120, + 240,0,120,240,0,120,240,0,120,240,0,120,112,0,112,112, + 0,112,120,0,240,56,112,224,57,152,224,29,13,192,13,13, + 128,7,15,8,3,158,8,0,110,8,0,14,8,0,14,24, + 0,7,176,0,7,240,0,3,192,22,26,78,25,2,0,255, + 255,0,14,3,192,14,1,224,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,1,224,14,1,192,14,7,128, + 15,252,0,14,6,0,14,7,0,14,3,128,14,3,128,14, + 3,128,14,3,192,14,3,192,14,3,192,14,3,196,14,1, + 196,14,1,196,14,1,236,14,1,248,255,224,240,17,26,78, + 22,3,1,31,227,0,48,51,0,96,31,0,192,15,0,192, + 7,0,192,3,0,192,3,0,224,3,0,240,1,0,120,0, + 0,127,0,0,63,192,0,31,248,0,7,252,0,1,254,0, + 128,63,0,128,15,128,128,3,128,192,3,128,192,1,128,192, + 1,128,224,1,128,240,1,0,248,3,0,140,6,0,135,252, + 0,21,26,78,26,3,0,255,255,248,240,112,120,224,112,56, + 192,112,24,192,112,24,192,112,24,128,112,8,128,112,8,128, + 112,8,128,112,8,0,112,0,0,112,0,0,112,0,0,112, + 0,0,112,0,0,112,0,0,112,0,0,112,0,0,112,0, + 0,112,0,0,112,0,0,112,0,0,112,0,0,112,0,0, + 112,0,7,255,128,25,26,104,29,2,0,255,192,255,128,14, + 0,14,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,14, + 0,4,0,14,0,4,0,14,0,4,0,14,0,4,0,6, + 0,8,0,7,0,8,0,3,0,16,0,1,192,32,0,0, + 127,192,0,25,26,104,28,2,0,255,241,255,128,15,0,60, + 0,15,0,24,0,7,128,24,0,7,128,16,0,3,128,48, + 0,3,192,48,0,3,192,48,0,1,192,32,0,1,224,96, + 0,1,224,96,0,0,224,64,0,0,240,192,0,0,240,192, + 0,0,112,128,0,0,113,128,0,0,121,128,0,0,57,0, + 0,0,59,0,0,0,63,0,0,0,30,0,0,0,30,0, + 0,0,14,0,0,0,14,0,0,0,12,0,0,0,4,0, + 0,36,26,130,38,1,0,255,231,255,63,240,15,0,248,7, + 128,15,0,120,3,0,7,0,120,3,0,7,128,120,6,0, + 7,128,248,6,0,3,128,252,6,0,3,128,252,4,0,3, + 192,156,12,0,1,193,156,12,0,1,193,158,12,0,1,225, + 14,24,0,1,227,14,24,0,0,227,14,24,0,0,227,15, + 16,0,0,242,7,48,0,0,118,7,48,0,0,118,7,32, + 0,0,116,3,224,0,0,124,3,224,0,0,60,3,192,0, + 0,60,1,192,0,0,56,1,192,0,0,24,1,192,0,0, + 24,1,128,0,0,16,0,128,0,24,26,78,27,2,0,255, + 227,255,15,128,112,7,128,96,7,192,96,3,192,192,1,224, + 128,1,225,128,0,227,0,0,242,0,0,118,0,0,124,0, + 0,56,0,0,60,0,0,60,0,0,62,0,0,79,0,0, + 207,0,0,135,128,1,135,128,1,3,192,3,3,192,6,1, + 224,6,0,224,14,0,240,30,0,240,255,199,255,24,26,78, + 27,2,0,255,225,255,31,0,56,15,0,48,7,128,48,7, + 128,32,3,192,96,3,192,64,1,224,128,0,224,128,0,241, + 0,0,113,0,0,122,0,0,58,0,0,60,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,1,255, + 224,19,26,78,23,2,0,63,255,224,60,3,192,56,3,192, + 112,7,128,96,15,0,96,15,0,64,30,0,64,30,0,64, + 60,0,0,120,0,0,120,0,0,240,0,0,224,0,1,224, + 0,3,192,0,3,192,0,7,128,32,7,0,32,15,0,32, + 30,0,96,30,0,96,60,0,224,56,0,224,120,1,224,240, + 3,192,255,255,192,7,33,33,14,4,249,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,240,254,12,34,68,16, + 2,249,128,0,192,0,64,0,64,0,96,0,32,0,32,0, + 48,0,16,0,16,0,24,0,8,0,8,0,12,0,4,0, + 4,0,6,0,6,0,2,0,3,0,3,0,1,0,1,128, + 1,128,0,128,0,128,0,192,0,64,0,64,0,96,0,32, + 0,32,0,48,0,16,7,33,33,15,3,249,254,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,254,15,13,26, + 21,3,12,1,0,3,128,3,128,6,192,4,64,12,96,24, + 48,16,16,48,24,96,8,96,12,192,6,128,2,19,1,3, + 19,0,250,255,255,224,6,6,6,16,3,19,192,224,112,48, + 24,12,16,17,34,19,2,0,15,128,48,224,96,112,96,112, + 120,112,120,112,0,112,1,240,30,112,112,112,96,112,224,112, + 224,113,224,241,225,113,113,126,62,60,16,26,52,18,0,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,112,29,140,29,14,30,6,30,7,28,7,28,7, + 28,7,28,7,28,7,28,7,28,7,28,7,30,6,30,14, + 19,12,16,240,12,17,34,16,2,0,15,128,24,96,48,48, + 112,48,96,112,224,112,224,112,224,0,224,0,224,0,224,0, + 224,0,96,16,112,16,48,32,24,64,15,128,16,26,52,19, + 2,0,1,248,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,14,56,57,184,48,184,112,120,96,120,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,96,56,112,120, + 48,120,48,248,15,63,13,17,34,17,2,0,15,128,24,224, + 48,96,112,112,96,48,224,56,224,56,255,248,224,0,224,0, + 224,0,224,8,112,16,112,16,48,32,24,96,7,128,12,26, + 52,12,1,0,7,192,12,32,28,48,56,112,56,112,56,0, + 56,0,56,0,56,0,255,128,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,0,56,0, + 56,0,56,0,56,0,255,128,17,25,75,20,2,248,7,199, + 0,28,117,128,56,59,128,112,31,128,112,28,0,112,28,0, + 112,28,0,112,28,0,56,56,0,28,112,0,7,192,0,56, + 0,0,64,0,0,64,0,0,64,0,0,127,224,0,63,248, + 0,14,28,0,112,2,0,192,2,0,192,2,0,192,2,0, + 224,4,0,112,8,0,15,240,0,18,26,78,21,1,0,252, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,124,0,28,142,0, + 29,7,0,30,7,0,30,7,0,28,7,0,28,7,0,28, + 7,0,28,7,0,28,7,0,28,7,0,28,7,0,28,7, + 0,28,7,0,28,7,0,28,7,0,255,31,192,7,25,25, + 10,2,0,48,120,120,48,0,0,0,0,248,56,56,56,56, + 56,56,56,56,56,56,56,56,56,56,56,254,9,34,68,11, + 255,248,1,128,3,128,3,128,1,128,0,0,0,0,0,0, + 0,0,0,0,31,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,67,128,227,128,227,0, + 195,0,70,0,60,0,17,26,78,19,1,0,252,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,127,0,28,24,0,28,16,0, + 28,48,0,28,32,0,28,64,0,28,128,0,29,192,0,29, + 192,0,30,224,0,28,112,0,28,112,0,28,56,0,28,60, + 0,28,28,0,28,30,0,255,127,128,9,26,52,11,1,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,25,17,68,29,2,0,248,240,120,0,57,56, + 156,0,58,29,14,0,60,30,14,0,60,30,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,56,28,14,0,56,28, + 14,0,56,28,14,0,56,28,14,0,254,127,63,128,17,17, + 51,21,2,0,248,248,0,57,28,0,58,14,0,60,14,0, + 60,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 14,0,56,14,0,56,14,0,56,14,0,56,14,0,56,14, + 0,56,14,0,254,63,128,14,17,34,18,2,0,7,128,24, + 96,48,48,112,56,112,24,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,48,48,24,96,7,128,16, + 25,50,19,1,248,252,240,29,140,31,14,30,6,30,7,28, + 7,28,7,28,7,28,7,28,7,28,7,28,7,28,7,30, + 6,30,14,29,12,28,240,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,128,16,25,50,18,2,248,15,8,56, + 136,48,216,112,88,96,120,224,56,224,56,224,56,224,56,224, + 56,224,56,224,56,96,56,112,120,48,120,48,184,15,56,0, + 56,0,56,0,56,0,56,0,56,0,56,0,56,1,255,12, + 17,34,15,2,0,248,224,57,16,58,48,58,112,60,112,60, + 0,60,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,12,17,34,16,2,0,62,64,97, + 64,192,192,192,64,192,64,224,64,120,0,127,0,31,192,7, + 224,128,240,192,112,192,48,224,48,224,48,152,96,135,192,11, + 24,48,13,1,0,8,0,8,0,8,0,8,0,24,0,24, + 0,56,0,255,192,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,32,56,32,56,32,56, + 96,31,192,15,128,17,17,51,20,1,0,248,62,0,56,14, + 0,56,14,0,56,14,0,56,14,0,56,14,0,56,14,0, + 56,14,0,56,14,0,56,14,0,56,14,0,56,14,0,56, + 30,0,56,30,0,56,46,0,28,78,0,15,143,128,18,17, + 51,19,0,0,255,31,192,28,7,0,28,6,0,12,4,0, + 14,4,0,14,4,0,7,8,0,7,8,0,3,8,0,3, + 144,0,1,144,0,1,208,0,1,224,0,0,224,0,0,224, + 0,0,64,0,0,64,0,27,17,68,28,0,0,255,63,207, + 224,28,15,3,0,28,7,3,0,12,7,2,0,14,7,2, + 0,14,15,130,0,7,11,132,0,7,9,132,0,3,137,196, + 0,3,145,200,0,1,144,200,0,1,208,232,0,1,224,240, + 0,0,224,112,0,0,224,112,0,0,64,96,0,0,64,32, + 0,16,17,34,19,2,0,254,126,60,56,28,48,28,32,14, + 64,14,64,7,128,3,128,3,128,3,192,3,192,4,224,8, + 96,8,112,16,56,48,56,252,255,18,25,75,20,1,248,255, + 31,192,28,6,0,28,6,0,12,4,0,14,4,0,14,4, + 0,6,8,0,7,8,0,7,8,0,3,16,0,3,144,0, + 3,144,0,1,240,0,1,224,0,1,224,0,0,224,0,0, + 192,0,0,64,0,0,192,0,0,128,0,112,128,0,113,128, + 0,113,0,0,115,0,0,60,0,0,12,17,34,15,1,0, + 255,240,224,112,192,224,128,224,129,192,131,128,131,128,7,0, + 7,0,14,0,28,16,28,16,56,16,56,16,112,48,224,112, + 255,240,8,33,33,15,3,249,3,4,8,24,24,24,24,28, + 28,28,12,12,12,12,8,24,224,24,8,12,12,12,12,28, + 28,28,24,24,24,24,8,4,3,2,34,34,10,4,249,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,8,33,33,14,3,249,192,32,16,24,24,24,24,24,56, + 56,48,48,48,48,16,24,7,24,16,48,48,48,48,56,56, + 24,24,24,24,24,16,32,192,20,6,18,24,2,6,62,0, + 32,127,192,16,135,248,16,128,255,48,128,63,224,96,7,192, + 255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=41 h=39 x= 8 y=23 dx=44 dy= 0 ascent=39 len=174 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x=-1 y=-11 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =30 descent=-9 + Max Font ascent =39 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29[16232] U8G_SECTION(".progmem.u8g_font_osr29") = { + 0,107,51,223,244,29,9,148,21,166,32,255,247,39,245,30, + 247,0,0,0,11,0,0,5,28,28,11,3,0,112,248,248, + 248,248,248,248,248,112,112,112,112,112,112,112,112,32,32,32, + 32,32,32,0,112,248,248,248,112,9,8,16,17,4,22,227, + 128,227,128,227,128,227,128,193,128,65,128,65,0,65,0,22, + 28,84,28,3,0,0,192,192,0,192,192,0,192,192,0,192, + 128,0,129,128,1,129,128,1,129,128,1,129,128,255,255,252, + 255,255,252,1,129,0,3,3,0,3,3,0,3,3,0,3, + 3,0,3,3,0,2,2,0,6,6,0,255,255,252,255,255, + 252,6,6,0,6,6,0,6,4,0,4,12,0,12,12,0, + 12,12,0,12,12,0,12,12,0,18,34,102,24,3,253,1, + 16,0,1,16,0,1,16,0,3,248,0,13,22,0,25,17, + 0,49,16,128,97,16,192,97,16,192,97,17,192,97,19,192, + 97,19,192,113,19,128,61,16,0,63,144,0,31,240,0,15, + 252,0,3,254,0,1,127,0,1,31,128,1,19,128,33,17, + 192,113,16,192,249,16,192,241,16,192,241,16,192,225,16,128, + 97,17,128,97,17,0,49,19,0,15,188,0,1,240,0,1, + 16,0,1,16,0,28,28,112,36,4,0,31,0,6,0,49, + 128,4,0,96,192,12,0,96,192,8,0,224,224,24,0,224, + 224,48,0,224,224,32,0,224,224,96,0,224,224,64,0,224, + 224,128,0,96,193,128,0,96,193,0,0,49,131,0,0,31, + 6,0,0,0,4,15,0,0,12,48,128,0,8,48,192,0, + 16,96,96,0,48,96,96,0,32,224,112,0,96,224,112,0, + 64,224,112,0,128,224,112,1,128,224,112,1,0,96,96,2, + 0,96,96,6,0,48,192,4,0,31,128,28,28,112,32,2, + 0,0,248,0,0,3,140,0,0,7,4,0,0,6,2,0, + 0,14,2,0,0,14,2,0,0,14,6,0,0,14,4,0, + 0,15,12,0,0,7,24,0,0,7,176,0,0,3,224,0, + 0,1,224,63,240,3,224,7,128,6,240,7,0,12,120,6, + 0,24,124,6,0,48,60,4,0,112,30,12,0,112,31,24, + 0,240,15,144,0,240,7,176,0,240,7,224,0,240,3,224, + 0,240,3,240,32,120,6,248,32,60,12,124,192,31,240,63, + 128,3,8,8,10,4,22,224,224,224,224,192,64,64,64,9, + 37,74,15,4,249,1,128,3,0,6,0,14,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,96,0,96,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,0,96,0,96,0,48,0,48,0,56, + 0,24,0,12,0,12,0,6,0,3,0,3,128,1,128,9, + 37,74,15,2,249,192,0,96,0,48,0,56,0,24,0,12, + 0,12,0,6,0,6,0,3,0,3,0,3,0,3,0,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,3,128,3,0,3,0,3,0,6,0,6,0,14, + 0,12,0,24,0,24,0,48,0,96,0,224,0,192,0,15, + 17,34,21,3,11,3,128,3,192,3,128,3,128,225,142,241, + 30,249,62,29,112,3,128,3,128,29,112,249,62,241,30,227, + 142,3,128,3,192,3,128,35,34,170,39,2,250,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,5,12,12,11,3,249,112,240,248, + 248,24,8,8,16,16,32,32,64,10,2,4,14,2,9,255, + 192,255,192,5,5,5,11,3,0,112,248,248,248,112,14,38, + 76,18,2,248,0,12,0,12,0,12,0,8,0,24,0,24, + 0,16,0,48,0,48,0,32,0,96,0,96,0,64,0,192, + 0,192,0,128,1,128,1,128,1,0,3,0,3,0,2,0, + 6,0,6,0,4,0,12,0,12,0,8,0,24,0,24,0, + 16,0,48,0,48,0,32,0,96,0,96,0,64,0,192,0, + 20,28,84,24,2,0,1,248,0,7,12,0,12,7,0,28, + 3,128,24,1,128,56,1,192,56,1,192,112,0,224,112,0, + 224,112,0,224,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,112, + 0,224,112,0,224,112,0,224,56,1,192,56,1,192,24,1, + 128,12,3,0,6,6,0,3,252,0,14,28,56,24,5,0, + 1,128,1,128,3,128,7,128,255,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,255,252,17,28,84,24,3,0,7,224, + 0,24,60,0,32,30,0,64,15,0,192,15,0,192,7,128, + 192,7,128,240,7,128,252,7,128,252,7,128,124,7,128,24, + 15,0,0,14,0,0,28,0,0,56,0,0,112,0,0,224, + 0,1,192,0,3,0,0,6,0,0,12,0,128,24,0,128, + 48,0,128,48,1,128,112,1,128,127,255,128,127,255,128,127, + 255,128,17,28,84,24,3,0,15,224,0,48,56,0,96,28, + 0,96,14,0,240,15,0,248,15,0,248,15,0,120,15,0, + 0,15,0,0,15,0,0,14,0,0,28,0,28,56,0,31, + 224,0,0,60,0,0,30,0,0,15,0,0,7,0,0,7, + 128,0,7,128,120,7,128,248,7,128,248,7,128,248,7,0, + 192,15,0,192,14,0,96,28,0,31,240,0,19,28,84,24, + 2,0,0,12,0,0,12,0,0,28,0,0,60,0,0,60, + 0,0,124,0,0,252,0,0,252,0,1,188,0,3,60,0, + 3,60,0,6,60,0,12,60,0,12,60,0,24,60,0,48, + 60,0,32,60,0,96,60,0,192,60,0,255,255,224,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,7,255,224,17,29,87,24,4,0,0,2,0,120, + 12,0,127,248,0,127,240,0,111,192,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,103,224,0,104,60,0, + 112,30,0,96,14,0,96,15,0,96,7,0,0,7,128,0, + 7,128,0,7,128,16,7,128,120,7,128,252,7,128,252,7, + 128,248,15,0,224,15,0,224,14,0,96,28,0,48,56,0, + 31,240,0,17,28,84,24,3,0,1,248,0,3,12,0,12, + 6,0,28,7,0,24,15,0,56,31,0,48,31,0,112,14, + 0,112,0,0,112,0,0,240,0,0,241,240,0,246,28,0, + 252,14,0,248,7,0,248,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,112,7,128,112,7,128,112,7,0,48,7, + 0,56,7,0,24,14,0,12,28,0,7,248,0,16,28,56, + 24,4,0,255,255,255,255,255,255,192,3,128,2,128,2,128, + 6,128,4,0,12,0,8,0,24,0,48,0,32,0,96,0, + 192,0,192,1,128,3,128,3,128,7,128,7,128,7,128,15, + 192,15,192,15,192,15,192,15,192,7,192,20,28,84,24,2, + 0,3,248,0,14,14,0,56,7,0,112,3,128,112,1,192, + 240,1,192,240,1,192,240,1,192,240,1,192,248,1,128,126, + 3,128,127,131,0,63,252,0,15,252,0,7,255,0,24,127, + 192,48,15,224,112,3,224,224,1,240,224,0,240,224,0,240, + 224,0,224,224,0,224,224,0,224,112,1,192,48,1,128,28, + 7,0,15,252,0,17,28,84,24,3,0,7,224,0,12,56, + 0,56,12,0,56,14,0,112,14,0,112,7,0,240,7,0, + 240,7,0,240,7,128,240,7,128,240,7,128,240,7,128,112, + 15,128,112,15,128,56,27,128,28,51,128,7,199,128,0,7, + 128,0,7,0,0,7,0,56,7,0,124,7,0,124,14,0, + 120,14,0,112,12,0,112,24,0,48,48,0,31,224,0,5, + 19,19,11,3,0,112,248,248,248,112,0,0,0,0,0,0, + 0,0,0,112,248,248,248,112,5,26,26,11,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,240,248,120, + 8,8,8,16,16,32,96,64,32,34,136,39,3,250,0,0, + 0,2,0,0,0,7,0,0,0,28,0,0,0,112,0,0, + 1,224,0,0,7,128,0,0,30,0,0,0,120,0,0,1, + 224,0,0,3,128,0,0,14,0,0,0,56,0,0,0,240, + 0,0,3,192,0,0,15,0,0,0,60,0,0,0,240,0, + 0,0,224,0,0,0,120,0,0,0,30,0,0,0,7,128, + 0,0,1,192,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,3,192,0,0,0,240,0,0,0,60,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,56,0,0, + 0,14,0,0,0,6,35,10,50,39,2,6,255,255,255,255, + 224,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,224,255,255,255,255,224,32,34, + 136,39,3,250,64,0,0,0,224,0,0,0,56,0,0,0, + 14,0,0,0,7,128,0,0,1,224,0,0,0,120,0,0, + 0,30,0,0,0,7,128,0,0,1,192,0,0,0,112,0, + 0,0,28,0,0,0,15,0,0,0,3,192,0,0,0,240, + 0,0,0,60,0,0,0,15,0,0,0,7,0,0,0,30, + 0,0,0,120,0,0,1,224,0,0,3,128,0,0,14,0, + 0,0,56,0,0,0,224,0,0,3,192,0,0,15,0,0, + 0,60,0,0,0,240,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,0,96,0,0,0,15,28,56,20, + 3,0,15,192,48,112,64,60,192,28,192,30,248,30,248,30, + 112,30,0,28,0,60,0,120,0,240,1,192,3,128,6,0, + 12,0,8,32,8,32,8,32,12,64,7,128,0,0,0,0, + 3,128,7,192,7,192,7,192,3,128,29,29,116,33,2,1, + 0,63,248,0,1,192,14,0,3,0,3,0,6,0,1,128, + 12,0,0,192,24,7,206,96,48,12,124,32,48,56,60,48, + 96,112,60,16,96,224,56,24,96,224,56,24,193,192,56,24, + 193,192,56,24,193,192,48,24,195,192,112,24,195,128,112,24, + 195,128,112,48,195,128,224,48,195,128,224,48,67,129,224,96, + 97,130,224,192,97,196,225,128,48,120,62,0,48,0,0,0, + 24,0,0,0,12,0,0,0,6,0,4,0,3,128,28,0, + 0,127,240,0,29,29,116,32,2,0,0,2,0,0,0,6, + 0,0,0,7,0,0,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,31,192,0,0,19,192,0,0,51, + 192,0,0,49,224,0,0,33,224,0,0,97,224,0,0,96, + 240,0,0,64,240,0,0,192,240,0,0,192,120,0,0,128, + 120,0,1,128,120,0,1,255,252,0,1,0,60,0,3,0, + 28,0,3,0,30,0,6,0,30,0,6,0,15,0,6,0, + 15,0,14,0,15,0,30,0,15,128,255,224,255,248,23,29, + 87,28,3,0,255,255,128,15,0,224,15,0,120,15,0,60, + 15,0,28,15,0,28,15,0,30,15,0,30,15,0,28,15, + 0,28,15,0,56,15,0,48,15,0,224,15,255,0,15,0, + 224,15,0,112,15,0,56,15,0,60,15,0,30,15,0,30, + 15,0,30,15,0,30,15,0,30,15,0,30,15,0,60,15, + 0,60,15,0,120,15,0,224,255,255,128,22,29,87,28,3, + 1,1,254,8,7,3,152,12,0,248,28,0,248,24,0,120, + 56,0,56,120,0,56,112,0,24,112,0,24,240,0,8,240, + 0,8,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,12,112,0,12, + 120,0,12,56,0,24,56,0,24,28,0,24,12,0,48,6, + 0,96,3,0,192,0,255,128,27,29,116,32,3,0,255,255, + 192,0,15,0,112,0,15,0,28,0,15,0,14,0,15,0, + 7,0,15,0,7,128,15,0,3,128,15,0,3,192,15,0, + 3,192,15,0,1,192,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,3,192,15,0, + 3,192,15,0,3,192,15,0,3,128,15,0,7,0,15,0, + 7,0,15,0,14,0,15,0,28,0,15,0,112,0,255,255, + 192,0,23,29,87,29,3,0,255,255,254,15,0,62,15,0, + 14,15,0,14,15,0,6,15,0,6,15,0,2,15,0,2, + 15,1,2,15,1,0,15,1,0,15,1,0,15,3,0,15, + 7,0,15,255,0,15,7,0,15,3,0,15,1,0,15,1, + 2,15,1,2,15,1,2,15,0,2,15,0,6,15,0,6, + 15,0,6,15,0,14,15,0,30,15,0,126,255,255,254,23, + 29,87,28,3,0,255,255,254,15,0,62,15,0,14,15,0, + 14,15,0,6,15,0,6,15,0,2,15,0,2,15,1,2, + 15,1,0,15,1,0,15,1,0,15,3,0,15,7,0,15, + 255,0,15,7,0,15,3,0,15,1,0,15,1,0,15,1, + 0,15,1,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,255,240,0,25,30,120,29, + 3,0,0,16,0,0,1,254,8,0,6,3,152,0,12,0, + 248,0,28,0,248,0,24,0,120,0,56,0,56,0,56,0, + 56,0,112,0,24,0,112,0,24,0,112,0,8,0,240,0, + 8,0,240,0,0,0,240,0,0,0,240,0,0,0,240,7, + 255,128,240,0,120,0,240,0,120,0,240,0,120,0,240,0, + 120,0,112,0,120,0,112,0,120,0,112,0,120,0,56,0, + 120,0,56,0,120,0,24,0,248,0,28,0,200,0,12,1, + 136,0,6,3,8,0,1,254,8,0,28,29,116,33,3,0, + 255,240,255,240,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,255,255,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 255,240,255,240,12,29,58,17,3,0,255,240,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,255,240,19,29,87,22,2,0,1,255,224,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,120,30,0,248,30,0,248,30,0,248, + 30,0,192,28,0,192,28,0,64,24,0,96,48,0,31,224, + 0,27,29,116,32,3,0,255,241,255,192,15,0,126,0,15, + 0,60,0,15,0,56,0,15,0,112,0,15,0,96,0,15, + 0,192,0,15,1,128,0,15,3,0,0,15,6,0,0,15, + 14,0,0,15,30,0,0,15,63,0,0,15,111,0,0,15, + 207,128,0,15,135,128,0,15,7,192,0,15,3,192,0,15, + 3,224,0,15,3,224,0,15,1,240,0,15,1,240,0,15, + 0,248,0,15,0,248,0,15,0,124,0,15,0,124,0,15, + 0,62,0,15,0,63,0,255,241,255,224,23,29,87,28,3, + 0,255,248,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,2,15,0,2,15,0,6, + 15,0,6,15,0,6,15,0,14,15,0,14,15,0,30,15, + 0,62,15,0,254,255,255,254,30,29,116,35,3,0,255,128, + 3,252,15,128,7,192,15,192,7,192,15,192,7,192,15,192, + 15,192,13,192,11,192,13,224,11,192,13,224,11,192,12,224, + 27,192,12,240,19,192,12,240,19,192,12,112,51,192,12,112, + 35,192,12,120,35,192,12,120,35,192,12,56,99,192,12,60, + 67,192,12,60,67,192,12,28,195,192,12,28,131,192,12,30, + 131,192,12,14,131,192,12,15,131,192,12,15,3,192,12,15, + 3,192,12,7,3,192,12,6,3,192,30,6,3,192,255,194, + 63,252,28,29,116,32,3,0,255,0,63,240,15,128,7,128, + 15,128,3,0,15,192,3,0,15,224,3,0,13,224,3,0, + 13,240,3,0,12,248,3,0,12,120,3,0,12,124,3,0, + 12,60,3,0,12,30,3,0,12,31,3,0,12,15,3,0, + 12,7,131,0,12,7,131,0,12,3,195,0,12,3,227,0, + 12,1,227,0,12,0,243,0,12,0,251,0,12,0,123,0, + 12,0,63,0,12,0,63,0,12,0,31,0,12,0,31,0, + 12,0,15,0,30,0,7,0,255,192,7,0,24,29,87,29, + 3,1,0,255,0,3,0,192,6,0,96,12,0,48,28,0, + 56,56,0,28,56,0,28,120,0,30,112,0,14,112,0,14, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,112,0,14,112,0, + 14,120,0,30,56,0,28,56,0,28,28,0,56,12,0,48, + 6,0,96,3,0,192,0,255,0,23,29,87,28,3,0,255, + 255,128,15,0,224,15,0,120,15,0,60,15,0,60,15,0, + 30,15,0,30,15,0,30,15,0,30,15,0,30,15,0,60, + 15,0,60,15,0,120,15,0,224,15,255,128,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,255,248,0,24,36,108,29,3,250,0,255,0,3, + 0,192,6,0,96,12,0,48,28,0,56,56,0,28,56,0, + 28,120,0,30,112,0,14,112,0,14,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,112,0,14,120,0,30,120,0,30,56,60, + 28,56,99,28,28,195,56,14,193,184,6,193,240,3,193,225, + 0,247,193,0,9,193,0,1,193,0,1,195,0,1,226,0, + 1,254,0,0,252,0,0,56,25,29,116,29,3,0,255,255, + 128,0,15,1,240,0,15,0,120,0,15,0,120,0,15,0, + 60,0,15,0,60,0,15,0,60,0,15,0,60,0,15,0, + 60,0,15,0,120,0,15,0,240,0,15,1,224,0,15,255, + 0,0,15,3,128,0,15,1,192,0,15,0,224,0,15,0, + 224,0,15,0,240,0,15,0,240,0,15,0,240,0,15,0, + 240,0,15,0,240,0,15,0,248,128,15,0,120,128,15,0, + 120,128,15,0,121,128,15,0,127,0,15,0,63,0,255,248, + 30,0,19,29,87,25,4,1,15,240,192,48,28,192,96,15, + 192,96,7,192,192,3,192,192,1,192,192,1,192,192,0,192, + 224,0,192,240,0,192,120,0,64,127,0,0,63,192,0,31, + 248,0,15,254,0,1,255,128,128,127,128,128,15,192,128,3, + 224,128,1,224,192,0,224,192,0,96,224,0,96,224,0,96, + 240,0,96,248,0,192,156,0,128,134,1,0,131,254,0,24, + 29,87,29,3,0,255,255,255,248,60,31,240,60,15,224,60, + 7,192,60,3,192,60,3,192,60,3,128,60,1,128,60,1, + 128,60,1,128,60,1,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,7,255,224,29,29,116,34, + 3,0,255,240,31,248,15,0,3,192,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,7,0, + 1,0,7,0,3,0,3,128,2,0,1,192,6,0,0,224, + 24,0,0,63,240,0,29,29,116,32,2,0,255,248,63,248, + 15,128,3,192,7,128,3,128,7,128,3,0,3,192,3,0, + 3,192,3,0,3,192,2,0,1,224,6,0,1,224,6,0, + 1,240,4,0,0,240,12,0,0,240,12,0,0,248,8,0, + 0,120,24,0,0,120,24,0,0,60,16,0,0,60,48,0, + 0,60,48,0,0,30,32,0,0,30,96,0,0,31,96,0, + 0,15,64,0,0,15,192,0,0,15,192,0,0,7,128,0, + 0,7,128,0,0,7,128,0,0,3,0,0,0,3,0,0, + 41,29,174,44,2,0,255,241,255,227,255,128,15,128,63,0, + 124,0,7,128,30,0,56,0,7,128,30,0,48,0,7,128, + 31,0,48,0,3,192,31,0,48,0,3,192,31,0,96,0, + 3,192,55,0,96,0,1,224,55,128,96,0,1,224,55,128, + 64,0,1,224,39,128,192,0,1,224,99,192,192,0,0,240, + 99,192,128,0,0,240,67,193,128,0,0,240,193,193,128,0, + 0,120,193,225,0,0,0,120,193,227,0,0,0,120,129,227, + 0,0,0,125,128,242,0,0,0,61,128,246,0,0,0,61, + 0,246,0,0,0,61,0,116,0,0,0,31,0,124,0,0, + 0,31,0,124,0,0,0,30,0,60,0,0,0,14,0,56, + 0,0,0,14,0,56,0,0,0,12,0,56,0,0,0,12, + 0,16,0,0,28,29,116,31,2,0,255,248,255,224,7,192, + 30,0,7,192,28,0,3,224,24,0,1,224,24,0,1,240, + 48,0,0,240,32,0,0,248,96,0,0,120,192,0,0,124, + 128,0,0,61,128,0,0,63,0,0,0,30,0,0,0,15, + 0,0,0,15,0,0,0,15,128,0,0,31,128,0,0,51, + 192,0,0,51,224,0,0,97,224,0,0,193,240,0,0,192, + 240,0,1,128,248,0,3,0,120,0,3,0,124,0,6,0, + 60,0,14,0,62,0,31,0,63,0,255,225,255,240,27,29, + 116,30,2,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,22,29,87,27,3,0,63,255, + 252,62,0,120,60,0,248,56,0,240,48,1,224,48,3,224, + 96,3,192,96,7,128,64,15,128,64,15,0,0,31,0,0, + 62,0,0,60,0,0,124,0,0,120,0,0,240,0,1,240, + 0,1,224,0,3,224,4,7,192,4,7,128,12,15,128,12, + 31,0,12,31,0,28,62,0,28,60,0,60,124,0,120,248, + 0,248,255,255,248,8,37,37,16,5,248,255,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,255, + 14,38,76,18,2,248,192,0,64,0,96,0,96,0,32,0, + 48,0,48,0,16,0,24,0,24,0,8,0,12,0,12,0, + 4,0,4,0,6,0,2,0,2,0,3,0,3,0,1,0, + 1,128,1,128,0,128,0,192,0,192,0,64,0,96,0,96, + 0,32,0,48,0,48,0,16,0,24,0,24,0,8,0,12, + 0,12,8,37,37,16,3,248,255,15,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,15,255,18,14,42, + 24,3,15,0,192,0,1,192,0,1,224,0,3,48,0,3, + 48,0,6,24,0,12,12,0,12,12,0,24,6,0,48,6, + 0,48,3,0,96,1,128,224,1,128,192,0,192,21,2,6, + 21,0,250,255,255,248,255,255,248,7,7,7,18,3,21,192, + 224,112,56,24,12,2,18,19,57,21,2,0,15,192,0,56, + 112,0,32,56,0,96,28,0,120,28,0,120,28,0,56,28, + 0,0,28,0,0,252,0,15,28,0,56,28,0,112,28,0, + 224,28,0,224,28,64,224,60,64,224,60,64,224,92,192,112, + 159,128,31,15,0,18,29,87,21,1,0,252,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,120,0,28,142,0,29, + 7,0,30,3,128,30,3,128,28,3,128,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,192,28,3,192, + 28,3,128,28,3,128,30,3,128,27,7,0,17,142,0,16, + 248,0,15,19,38,18,2,0,7,224,28,16,56,8,48,12, + 112,28,112,60,240,60,240,24,240,0,240,0,240,0,240,0, + 240,6,112,4,112,4,48,12,56,8,12,48,7,224,18,29, + 87,21,2,0,0,254,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,15,142,0,28,78,0,56,46,0,112,30,0,112,30, + 0,112,14,0,240,14,0,240,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,0,112,14,0,112,14,0,112, + 30,0,56,62,0,24,110,0,7,207,192,15,19,38,19,2, + 0,7,192,12,112,56,56,48,28,112,28,112,28,240,30,240, + 30,255,254,240,0,240,0,240,0,240,6,112,4,112,4,56, + 4,56,8,28,16,7,224,14,29,58,14,1,0,1,240,7, + 24,14,24,12,60,28,60,28,56,28,0,28,0,28,0,28, + 0,255,192,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,192,20,28,84,22,2,247,7,225,192, + 28,58,96,56,30,240,112,30,240,112,14,224,240,15,0,240, + 15,0,240,15,0,112,14,0,112,30,0,56,28,0,28,56, + 0,7,224,0,56,0,0,64,0,0,192,0,0,240,0,0, + 255,254,0,63,255,0,15,7,128,112,1,192,64,0,192,192, + 0,192,192,0,192,192,1,128,96,1,128,56,6,0,7,248, + 0,20,29,87,22,1,0,252,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,60,0,28,199,0,29,3,0,29,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,8,28, + 28,11,1,0,24,60,60,24,0,0,0,0,0,252,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,255, + 11,37,74,14,255,247,0,192,1,224,1,224,0,192,0,0, + 0,0,0,0,0,0,0,0,15,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,224,224,240,224,224,192,193,128,99,128,62,0, + 19,29,87,21,1,0,252,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,63,192,28,14,0,28,12,0,28,8,0, + 28,16,0,28,48,0,28,96,0,28,192,0,28,224,0,29, + 224,0,30,240,0,30,120,0,28,60,0,28,60,0,28,30, + 0,28,15,0,28,15,0,28,15,128,255,63,224,9,29,58, + 11,1,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,31,19,76, + 33,1,0,252,124,15,128,28,199,24,192,29,7,32,224,31, + 3,224,112,30,3,192,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,255,159,243,254,20, + 19,57,22,1,0,252,60,0,28,199,0,29,3,0,31,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,17,19, + 57,21,2,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,18,28,84, + 21,1,247,252,120,0,29,142,0,31,7,0,30,3,128,30, + 3,128,28,3,128,28,3,192,28,3,192,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,128,28,3,128, + 30,3,128,31,7,0,29,134,0,28,120,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,28,84,21,2,247,7,130,0, + 28,98,0,56,54,0,112,22,0,112,30,0,112,14,0,240, + 14,0,240,14,0,240,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,112,14,0,112,14,0,112,30,0,56,62,0, + 24,110,0,7,206,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,127, + 192,15,19,38,16,1,0,252,56,28,196,28,142,29,30,31, + 28,30,12,30,0,30,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,14,19,38, + 18,2,0,31,16,96,208,64,112,192,48,192,16,224,16,240, + 0,126,0,63,128,31,224,3,248,128,252,192,28,192,12,224, + 12,224,12,240,8,140,24,131,224,12,27,54,14,1,0,4, + 0,4,0,4,0,4,0,4,0,12,0,12,0,28,0,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,16,28,16,28,16,28,48,30, + 32,15,224,7,192,20,19,57,22,1,0,252,31,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,7,128,28,7,128,28,15,128,12,11,128,14,51, + 128,3,195,240,20,19,57,21,1,0,255,15,240,60,3,128, + 28,3,0,28,3,0,14,2,0,14,2,0,15,6,0,7, + 4,0,7,4,0,3,140,0,3,136,0,3,200,0,1,216, + 0,1,208,0,0,240,0,0,240,0,0,96,0,0,96,0, + 0,96,0,30,19,76,31,1,0,255,31,243,252,60,7,128, + 224,28,3,128,192,28,3,128,192,14,3,192,128,14,3,192, + 128,15,7,193,128,7,5,225,0,7,4,225,0,3,140,227, + 0,3,136,114,0,1,200,114,0,1,216,118,0,1,240,60, + 0,0,240,60,0,0,240,60,0,0,96,24,0,0,96,24, + 0,0,32,24,0,18,19,57,21,1,0,255,31,192,30,14, + 0,30,12,0,14,8,0,15,24,0,7,16,0,3,160,0, + 3,224,0,1,192,0,1,224,0,1,224,0,1,112,0,3, + 120,0,2,56,0,4,28,0,12,28,0,24,14,0,24,15, + 0,254,63,192,20,28,84,22,1,247,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,14,19, + 38,18,2,0,255,252,224,60,192,56,192,120,128,240,128,224, + 129,224,1,192,3,128,7,128,7,0,15,0,30,4,28,4, + 60,4,56,12,112,12,240,28,255,252,10,37,74,17,4,248, + 1,192,6,0,12,0,8,0,24,0,24,0,24,0,28,0, + 28,0,12,0,14,0,14,0,14,0,6,0,6,0,6,0, + 4,0,8,0,240,0,24,0,12,0,4,0,6,0,6,0, + 14,0,14,0,14,0,12,0,28,0,28,0,24,0,24,0, + 24,0,8,0,12,0,6,0,1,192,2,38,38,12,5,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,10,37,74,17,3,248,224,0,24,0, + 12,0,4,0,6,0,6,0,6,0,14,0,14,0,12,0, + 28,0,28,0,28,0,24,0,24,0,24,0,8,0,4,0, + 3,192,6,0,8,0,24,0,24,0,24,0,28,0,28,0, + 28,0,12,0,14,0,14,0,6,0,6,0,6,0,4,0, + 12,0,24,0,224,0,23,8,24,27,2,7,30,0,8,127, + 192,4,255,240,2,199,254,2,128,255,134,128,63,254,192,15, + 252,96,1,248,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,11,0,0,5,28,28,11,3, + 247,112,248,248,248,112,0,32,32,32,32,32,32,112,112,112, + 112,112,112,112,112,248,248,248,248,248,248,248,112,14,28,56, + 24,5,252,0,128,0,128,0,128,0,128,0,128,7,224,12, + 152,24,136,56,140,112,156,112,188,240,188,240,152,240,128,240, + 128,240,128,240,128,240,132,112,132,112,132,56,132,24,136,14, + 144,3,224,0,128,0,128,0,128,0,128,23,28,84,30,3, + 0,0,3,240,0,6,24,0,28,12,0,24,14,0,48,62, + 0,112,62,0,112,62,0,112,24,0,112,0,0,240,0,0, + 240,0,0,240,0,31,240,0,32,255,128,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,224,0, + 0,224,0,62,224,2,67,192,2,128,224,4,129,127,60,194, + 63,248,60,15,240,20,20,60,24,2,4,64,0,32,225,248, + 112,119,254,224,62,7,192,24,1,128,48,0,192,48,0,192, + 96,0,96,96,0,96,96,0,96,96,0,96,96,0,96,96, + 0,96,48,0,192,48,0,192,24,1,128,62,7,192,119,254, + 224,225,248,112,64,0,32,22,28,84,24,1,0,255,131,252, + 62,0,112,30,0,96,14,0,64,15,0,64,15,0,128,7, + 128,128,7,129,0,3,193,0,3,194,0,1,226,0,1,228, + 0,0,252,0,0,248,0,0,120,0,31,255,192,0,120,0, + 0,120,0,31,255,192,0,120,0,0,120,0,0,120,0,0, + 120,0,0,120,0,0,120,0,0,120,0,0,120,0,7,255, + 128,2,37,37,12,5,249,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,0,0,0,0,0,0,0,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,15,36,72,26, + 4,248,7,192,12,32,24,48,48,120,48,120,48,112,56,0, + 56,0,28,0,30,0,15,0,31,192,35,224,97,240,64,248, + 192,60,192,30,192,14,224,6,240,6,120,6,60,4,31,12, + 15,152,7,224,3,224,0,224,0,112,0,112,0,56,56,56, + 60,56,56,48,48,48,24,96,7,128,12,4,8,18,3,22, + 96,96,240,240,240,240,96,96,30,29,116,34,2,1,0,127, + 248,0,1,192,14,0,3,0,3,0,4,0,0,128,8,0, + 0,64,16,7,196,32,32,24,108,16,32,48,60,16,64,112, + 28,8,64,224,12,8,192,224,12,8,129,224,4,4,129,224, + 0,4,129,224,0,4,129,224,0,4,129,224,0,4,129,224, + 0,4,129,224,4,4,192,224,4,8,64,224,8,8,64,112, + 8,8,32,112,24,16,48,24,48,48,16,15,192,32,8,0, + 0,64,4,0,0,128,3,0,3,0,1,192,14,0,0,127, + 248,0,11,14,28,16,3,14,60,0,102,0,67,0,99,0, + 99,0,7,0,27,0,99,0,195,0,195,32,231,32,121,192, + 0,0,127,192,10,16,32,19,4,1,24,64,48,192,32,128, + 97,128,97,0,195,0,195,0,195,0,195,0,195,0,195,0, + 97,128,97,128,48,128,16,64,8,0,20,8,24,24,2,7, + 255,255,240,255,255,240,0,0,48,0,0,48,0,0,48,0, + 0,48,0,0,48,0,0,48,10,2,4,14,2,9,255,192, + 255,192,30,29,116,34,2,1,0,127,248,0,1,192,14,0, + 3,0,3,0,4,0,0,128,8,0,0,64,19,255,192,32, + 32,112,240,48,32,112,120,16,64,112,120,8,64,112,120,8, + 192,112,120,8,128,112,112,4,128,112,224,4,128,127,128,4, + 128,112,224,4,128,112,112,4,128,112,112,4,128,112,120,4, + 128,112,120,8,64,112,120,136,64,112,120,136,32,112,56,144, + 32,112,57,16,19,252,30,32,8,0,0,64,4,0,0,128, + 3,0,3,0,1,192,14,0,0,127,248,0,11,2,4,19, + 4,23,255,224,255,224,11,10,20,23,6,18,31,0,96,128, + 64,64,128,32,128,32,128,32,128,32,64,64,96,128,31,0, + 35,28,140,39,2,254,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 0,0,0,0,0,0,0,0,255,255,255,255,192,255,255,255, + 255,192,11,17,34,18,4,11,31,0,99,192,129,192,128,224, + 192,224,224,224,112,224,1,192,1,128,3,0,12,0,24,0, + 32,32,64,32,64,96,255,224,255,224,11,17,34,18,5,11, + 31,0,97,192,192,192,224,224,240,224,0,224,0,192,97,128, + 126,0,1,128,0,192,0,224,224,224,240,224,224,192,129,192, + 127,0,7,7,7,18,8,21,6,14,28,56,48,96,128,21, + 30,90,25,3,245,96,6,0,224,15,0,240,15,0,240,15, + 0,240,15,0,224,15,0,224,15,0,224,15,0,224,15,0, + 224,15,0,224,6,0,64,6,0,64,6,0,64,6,0,96, + 12,8,96,14,24,88,59,248,79,241,248,67,224,240,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,224,0,0, + 224,0,0,240,0,0,240,0,0,112,0,0,112,0,0,17, + 35,105,23,3,250,15,255,128,63,140,0,127,140,0,127,140, + 0,255,140,0,255,140,0,255,140,0,255,140,0,255,140,0, + 127,140,0,127,140,0,63,140,0,7,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,1,140, + 0,1,140,0,1,140,0,1,140,0,1,140,0,1,140,0, + 1,140,0,1,140,0,1,140,0,1,140,0,1,140,0,1, + 140,0,1,140,0,1,140,0,1,140,0,1,140,0,5,5, + 5,11,3,10,112,248,248,248,112,8,8,8,18,5,248,48, + 32,60,6,7,7,15,252,9,17,34,19,5,11,4,0,12, + 0,28,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,255,128,10, + 14,28,16,3,14,30,0,51,0,97,128,192,192,192,192,192, + 192,192,192,192,192,193,192,97,128,35,0,30,0,0,0,255, + 192,10,16,32,20,5,1,134,0,195,0,65,0,97,128,32, + 192,48,192,48,192,48,192,48,192,48,192,48,192,97,128,97, + 128,67,0,130,0,4,0,27,28,112,35,5,0,4,0,12, + 0,12,0,8,0,28,0,24,0,252,0,16,0,28,0,32, + 0,28,0,96,0,28,0,64,0,28,0,192,0,28,0,128, + 0,28,1,128,0,28,3,0,0,28,2,0,0,28,6,7, + 0,28,4,15,0,28,12,15,0,28,24,23,0,255,144,23, + 0,0,48,39,0,0,32,71,0,0,96,71,0,0,192,135, + 0,0,129,7,0,1,129,255,224,1,0,7,0,3,0,7, + 0,6,0,7,0,6,0,7,0,12,0,63,224,27,28,112, + 35,5,0,4,0,4,0,12,0,12,0,28,0,8,0,252, + 0,16,0,28,0,48,0,28,0,32,0,28,0,96,0,28, + 0,64,0,28,0,128,0,28,1,128,0,28,1,0,0,28, + 3,31,0,28,6,99,192,28,4,129,192,28,12,128,224,28, + 8,192,224,255,152,224,224,0,48,240,224,0,32,1,192,0, + 96,1,128,0,64,3,0,0,192,12,0,1,128,24,0,1, + 0,32,32,3,0,64,32,2,0,64,96,6,0,255,224,12, + 0,255,224,28,28,112,36,5,0,31,0,6,0,97,192,4, + 0,192,224,8,0,224,224,24,0,240,224,16,0,0,192,48, + 0,1,128,96,0,126,0,64,0,97,128,192,0,0,192,128, + 0,0,225,128,0,96,227,3,128,240,226,3,128,224,230,7, + 128,129,196,7,128,67,136,11,128,62,24,19,128,0,16,19, + 128,0,48,35,128,0,96,99,128,0,64,67,128,0,192,131, + 128,0,128,255,240,1,128,3,128,3,0,3,128,2,0,3, + 128,6,0,3,128,4,0,31,240,15,28,56,19,1,247,3, + 128,7,192,7,192,7,192,3,128,0,0,3,128,4,64,8, + 32,8,32,8,96,0,96,0,192,1,128,7,0,14,0,28, + 0,56,0,120,0,240,60,240,62,240,62,240,6,240,6,112, + 6,120,12,28,24,7,224,29,38,152,32,2,0,0,224,0, + 0,0,240,0,0,0,112,0,0,0,56,0,0,0,12,0, + 0,0,6,0,0,0,2,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,6,0,0,0,7,0,0,0,7,0, + 0,0,15,128,0,0,15,128,0,0,15,128,0,0,31,192, + 0,0,19,192,0,0,51,192,0,0,49,224,0,0,33,224, + 0,0,97,224,0,0,96,240,0,0,64,240,0,0,192,240, + 0,0,192,120,0,0,128,120,0,1,128,120,0,1,255,252, + 0,1,0,60,0,3,0,28,0,3,0,30,0,6,0,30, + 0,6,0,15,0,6,0,15,0,14,0,15,0,30,0,15, + 128,255,224,255,248,29,38,152,32,2,0,0,0,48,0,0, + 0,112,0,0,0,240,0,0,0,224,0,0,1,128,0,0, + 3,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0, + 2,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0, + 15,128,0,0,15,128,0,0,15,128,0,0,31,192,0,0, + 19,192,0,0,51,192,0,0,49,224,0,0,33,224,0,0, + 97,224,0,0,96,240,0,0,64,240,0,0,192,240,0,0, + 192,120,0,0,128,120,0,1,128,120,0,1,255,252,0,3, + 0,60,0,3,0,30,0,3,0,30,0,6,0,30,0,6, + 0,15,0,6,0,15,0,14,0,15,0,31,0,31,192,255, + 224,255,248,29,38,152,32,2,0,0,6,0,0,0,7,0, + 0,0,15,128,0,0,29,128,0,0,56,192,0,0,96,48, + 0,0,128,8,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,6,0,0,0,7,0,0,0,7,0,0,0,15,128, + 0,0,15,128,0,0,15,128,0,0,31,192,0,0,19,192, + 0,0,51,192,0,0,49,224,0,0,33,224,0,0,97,224, + 0,0,96,240,0,0,64,240,0,0,192,240,0,0,192,120, + 0,0,128,120,0,1,128,120,0,1,255,252,0,1,0,60, + 0,3,0,28,0,3,0,30,0,6,0,30,0,6,0,15, + 0,6,0,15,0,14,0,15,0,30,0,15,128,255,224,255, + 248,29,37,148,32,2,0,0,60,8,0,0,127,24,0,0, + 207,240,0,0,129,240,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0, + 7,0,0,0,7,0,0,0,15,128,0,0,15,128,0,0, + 15,128,0,0,31,192,0,0,19,192,0,0,51,192,0,0, + 49,224,0,0,33,224,0,0,97,224,0,0,96,240,0,0, + 64,240,0,0,192,240,0,0,192,120,0,0,128,120,0,1, + 128,120,0,1,255,252,0,3,0,60,0,3,0,30,0,3, + 0,30,0,6,0,30,0,6,0,15,0,6,0,15,0,14, + 0,15,0,31,0,31,192,255,224,255,248,29,37,148,32,2, + 0,0,96,48,0,0,240,120,0,0,240,120,0,0,96,48, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,2,0,0,0,6,0,0,0,7,0,0,0,7,0, + 0,0,15,128,0,0,15,128,0,0,31,128,0,0,31,192, + 0,0,19,192,0,0,51,192,0,0,49,224,0,0,33,224, + 0,0,97,224,0,0,96,240,0,0,64,240,0,0,192,112, + 0,0,192,120,0,0,128,120,0,1,128,56,0,1,255,252, + 0,1,0,28,0,3,0,28,0,3,0,30,0,6,0,30, + 0,6,0,15,0,6,0,15,0,14,0,15,0,31,0,15, + 128,255,224,255,248,29,39,156,32,2,0,0,15,0,0,0, + 16,128,0,0,32,64,0,0,32,64,0,0,32,64,0,0, + 32,64,0,0,16,128,0,0,15,0,0,0,0,0,0,0, + 0,0,0,0,2,0,0,0,6,0,0,0,7,0,0,0, + 7,0,0,0,15,128,0,0,15,128,0,0,31,128,0,0, + 31,192,0,0,19,192,0,0,51,192,0,0,51,224,0,0, + 33,224,0,0,97,224,0,0,97,240,0,0,64,240,0,0, + 192,240,0,0,192,248,0,0,128,120,0,1,128,120,0,1, + 255,252,0,1,0,60,0,3,0,60,0,2,0,62,0,6, + 0,30,0,6,0,31,0,6,0,31,0,14,0,15,0,30, + 0,15,128,255,224,255,248,37,29,145,41,1,0,0,3,255, + 255,248,0,0,124,0,248,0,0,124,0,56,0,0,124,0, + 56,0,0,252,0,24,0,1,188,0,24,0,1,188,0,8, + 0,3,60,0,8,0,3,60,4,8,0,6,60,4,0,0, + 6,60,4,0,0,12,60,4,0,0,12,60,12,0,0,24, + 60,28,0,0,24,63,252,0,0,48,60,28,0,0,48,60, + 12,0,0,96,60,4,0,0,96,60,4,8,0,255,252,4, + 8,0,128,60,4,8,1,128,60,0,8,1,0,60,0,24, + 3,0,60,0,24,2,0,60,0,24,6,0,60,0,56,14, + 0,60,0,120,31,0,60,1,248,255,225,255,255,248,22,38, + 114,28,3,248,1,255,12,7,1,140,14,0,252,28,0,124, + 24,0,60,56,0,60,56,0,28,112,0,28,112,0,12,112, + 0,12,240,0,8,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,240,0,0,112,0,4, + 112,0,4,120,0,12,56,0,8,56,0,8,28,0,16,12, + 0,16,14,0,32,3,0,192,1,247,128,0,56,0,0,32, + 0,0,56,0,0,14,0,0,7,0,0,7,0,0,7,0, + 1,14,0,0,252,0,23,38,114,29,3,0,1,128,0,1, + 192,0,1,224,0,0,224,0,0,48,0,0,24,0,0,12, + 0,0,0,0,0,0,0,255,255,254,15,0,62,15,0,14, + 15,0,14,15,0,6,15,0,6,15,0,2,15,0,2,15, + 1,2,15,1,0,15,1,0,15,1,0,15,3,0,15,7, + 0,15,255,0,15,7,0,15,3,0,15,1,0,15,1,2, + 15,1,2,15,1,2,15,0,2,15,0,6,15,0,6,15, + 0,6,15,0,14,15,0,30,15,0,126,255,255,254,23,38, + 114,29,3,0,0,0,192,0,1,224,0,3,192,0,3,128, + 0,6,0,0,12,0,0,8,0,0,0,0,0,0,0,255, + 255,254,15,0,62,15,0,14,15,0,14,15,0,6,15,0, + 6,15,0,2,15,0,2,15,1,2,15,1,0,15,1,0, + 15,1,0,15,3,0,15,7,0,15,255,0,15,7,0,15, + 3,0,15,1,0,15,1,2,15,1,2,15,1,2,15,0, + 2,15,0,6,15,0,6,15,0,6,15,0,14,15,0,30, + 15,0,126,255,255,254,23,38,114,29,3,0,0,8,0,0, + 28,0,0,62,0,0,55,0,0,99,128,1,128,192,2,0, + 32,0,0,0,0,0,0,255,255,254,15,0,62,15,0,14, + 15,0,14,15,0,6,15,0,6,15,0,2,15,0,2,15, + 1,2,15,1,0,15,1,0,15,1,0,15,3,0,15,7, + 0,15,255,0,15,7,0,15,3,0,15,1,0,15,1,2, + 15,1,2,15,1,2,15,0,2,15,0,6,15,0,6,15, + 0,6,15,0,14,15,0,30,15,0,126,255,255,254,23,37, + 111,29,3,0,1,128,192,3,193,224,3,193,224,1,128,192, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,254,15, + 0,62,15,0,14,15,0,14,15,0,6,15,0,6,15,0, + 2,15,0,2,15,1,2,15,1,0,15,1,0,15,3,0, + 15,3,0,15,7,0,15,255,0,15,7,0,15,3,0,15, + 3,0,15,1,2,15,1,2,15,1,2,15,0,2,15,0, + 6,15,0,6,15,0,6,15,0,14,15,0,30,15,0,126, + 255,255,254,12,38,76,17,3,0,192,0,224,0,112,0,56, + 0,24,0,12,0,2,0,0,0,0,0,255,240,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,255,240,12,38,76,17,3,0,0,48,0,112,0, + 224,1,192,3,128,2,0,4,0,0,0,0,0,255,240,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,255,240,12,38,76,17,3,0,6,0,14, + 0,15,0,27,128,48,192,96,96,128,16,0,0,0,0,255, + 240,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,255,240,12,37,74,15,2,0,96, + 96,240,240,240,240,96,96,0,0,0,0,0,0,0,0,255, + 240,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,15,0,15,0,15,0,15,0,15, + 0,15,0,15,0,15,0,255,240,27,29,116,32,3,0,255, + 255,192,0,15,0,112,0,15,0,28,0,15,0,14,0,15, + 0,7,0,15,0,7,128,15,0,3,128,15,0,3,192,15, + 0,3,192,15,0,1,192,15,0,1,224,15,0,1,224,15, + 0,1,224,255,240,1,224,15,0,1,224,15,0,1,224,15, + 0,1,224,15,0,1,224,15,0,1,224,15,0,3,192,15, + 0,3,192,15,0,3,192,15,0,3,128,15,0,7,0,15, + 0,7,0,15,0,14,0,15,0,28,0,15,0,112,0,255, + 255,192,0,28,37,148,32,3,0,0,60,8,0,0,127,152, + 0,0,71,240,0,0,65,240,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,0,63,240,15,128,7, + 128,15,128,3,0,15,192,3,0,15,224,3,0,13,224,3, + 0,13,240,3,0,12,248,3,0,12,120,3,0,12,124,3, + 0,12,60,3,0,12,30,3,0,12,31,3,0,12,15,3, + 0,12,7,131,0,12,7,131,0,12,3,195,0,12,3,227, + 0,12,1,227,0,12,0,243,0,12,0,251,0,12,0,123, + 0,12,0,63,0,12,0,63,0,12,0,31,0,12,0,31, + 0,12,0,15,0,30,0,7,0,255,192,7,0,24,38,114, + 29,3,1,3,128,0,3,192,0,1,192,0,0,224,0,0, + 112,0,0,48,0,0,8,0,0,0,0,0,0,0,0,255, + 0,3,0,192,6,0,96,12,0,48,28,0,56,56,0,28, + 56,0,28,120,0,30,112,0,14,112,0,14,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,240,0,15,240,0,15,112,0,14,112,0,14,120,0,30, + 56,0,28,56,0,28,28,0,56,12,0,48,6,0,96,3, + 0,192,0,255,0,24,38,114,29,3,1,0,1,192,0,3, + 192,0,3,128,0,7,0,0,14,0,0,12,0,0,16,0, + 0,0,0,0,0,0,0,255,0,3,0,192,6,0,96,12, + 0,48,28,0,56,56,0,28,56,0,28,120,0,30,112,0, + 14,112,0,14,240,0,15,240,0,15,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,112, + 0,14,112,0,14,120,0,30,56,0,28,56,0,28,28,0, + 56,12,0,48,6,0,96,3,0,192,0,255,0,24,38,114, + 29,3,0,0,24,0,0,24,0,0,60,0,0,126,0,0, + 195,0,1,129,128,6,0,96,0,0,0,0,0,0,0,255, + 0,3,0,192,6,0,96,12,0,48,28,0,56,56,0,28, + 56,0,28,120,0,30,112,0,14,112,0,14,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,240,0,15,240,0,15,112,0,14,112,0,14,120,0,30, + 56,0,28,56,0,28,28,0,56,12,0,48,6,0,96,3, + 0,192,0,255,0,24,37,111,29,3,0,1,240,32,3,252, + 64,2,63,192,2,7,128,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,0,3,0,192,6,0,96,12,0,48,28, + 0,56,56,0,28,56,0,28,120,0,30,112,0,14,112,0, + 14,240,0,15,240,0,15,240,0,15,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,112,0,14,112, + 0,14,120,0,30,56,0,28,56,0,28,28,0,56,12,0, + 48,6,0,96,3,0,192,0,255,0,24,37,111,29,3,0, + 1,129,128,3,195,192,3,195,192,1,129,128,0,0,0,0, + 0,0,0,0,0,0,0,0,0,255,0,3,0,192,6,0, + 96,12,0,48,28,0,56,56,0,28,56,0,28,120,0,30, + 112,0,14,112,0,14,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,240,0,15,240,0, + 15,112,0,14,112,0,14,120,0,30,56,0,28,56,0,28, + 28,0,56,12,0,48,6,0,96,3,0,192,0,255,0,25, + 25,100,39,7,254,192,0,1,128,224,0,3,0,112,0,6, + 0,56,0,12,0,28,0,24,0,14,0,48,0,7,0,96, + 0,3,128,192,0,1,193,128,0,0,227,0,0,0,118,0, + 0,0,60,0,0,0,28,0,0,0,62,0,0,0,103,0, + 0,0,195,128,0,1,129,192,0,3,0,224,0,6,0,112, + 0,12,0,56,0,24,0,28,0,48,0,14,0,96,0,7, + 0,192,0,3,128,128,0,1,0,24,29,87,29,3,1,0, + 255,131,3,0,230,6,0,124,12,0,60,28,0,56,56,0, + 60,56,0,124,120,0,254,112,0,206,112,1,142,240,3,15, + 240,6,15,240,14,15,240,12,15,240,24,15,240,48,15,240, + 96,15,240,224,15,240,192,15,113,128,14,115,0,14,126,0, + 30,62,0,28,60,0,28,28,0,56,60,0,48,62,0,96, + 103,0,192,193,255,0,29,38,152,34,3,1,0,112,0,0, + 0,112,0,0,0,56,0,0,0,28,0,0,0,14,0,0, + 0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0, + 255,240,31,248,15,0,3,192,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,7,0,1,0, + 7,0,3,0,3,128,2,0,1,192,6,0,0,224,24,0, + 0,63,240,0,29,38,152,34,3,1,0,0,56,0,0,0, + 120,0,0,0,240,0,0,0,224,0,0,1,128,0,0,3, + 0,0,0,2,0,0,0,0,0,0,0,0,0,0,255,240, + 31,248,15,0,3,192,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,7,0,1,0,7,0, + 3,0,3,128,2,0,1,192,6,0,0,224,24,0,0,63, + 240,0,29,38,152,34,3,0,0,3,0,0,0,7,0,0, + 0,7,128,0,0,13,192,0,0,24,96,0,0,96,48,0, + 0,192,8,0,0,0,0,0,0,0,0,0,255,240,31,248, + 15,0,3,192,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,15,0,1,128,15,0,1,128, + 15,0,1,128,15,0,1,128,7,0,3,0,7,0,3,0, + 3,128,6,0,1,192,14,0,0,224,24,0,0,63,240,0, + 29,37,148,34,3,0,0,48,48,0,0,120,120,0,0,120, + 120,0,0,48,48,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,240,31,248,15,0,3,192,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,7,0,1,0,7,0,3,0,3,128,2,0,1,192, + 6,0,0,224,24,0,0,63,240,0,27,38,152,30,2,0, + 0,0,48,0,0,0,112,0,0,0,224,0,0,0,192,0, + 0,1,128,0,0,3,0,0,0,2,0,0,0,0,0,0, + 0,0,0,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,23,29,87,28,3,0,255,248, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,255,128, + 15,0,224,15,0,120,15,0,60,15,0,60,15,0,30,15, + 0,30,15,0,30,15,0,30,15,0,30,15,0,60,15,0, + 60,15,0,120,15,0,224,15,255,128,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,255,248,0,19,29,87,22,1,0,0,252,0,3,14, + 0,6,7,0,14,7,128,12,7,128,28,7,128,28,7,128, + 28,7,0,28,14,0,28,28,0,28,224,0,28,24,0,28, + 6,0,28,7,0,28,3,128,28,3,128,28,1,192,28,1, + 192,28,1,192,28,1,224,28,1,224,28,1,224,28,1,224, + 28,225,192,29,225,192,29,225,192,28,131,128,28,199,0,252, + 60,0,18,28,84,21,2,1,112,0,0,120,0,0,60,0, + 0,28,0,0,6,0,0,3,0,0,1,0,0,0,0,0, + 0,0,0,15,192,0,56,112,0,32,56,0,96,28,0,120, + 28,0,120,28,0,56,28,0,0,28,0,0,252,0,15,28, + 0,56,28,0,112,28,0,224,28,0,224,28,64,224,60,64, + 224,60,64,224,92,192,112,159,128,31,15,0,18,28,84,21, + 2,1,0,28,0,0,60,0,0,120,0,0,112,0,0,192, + 0,1,128,0,1,0,0,0,0,0,0,0,0,15,192,0, + 56,112,0,32,56,0,96,28,0,120,28,0,120,28,0,56, + 28,0,0,28,0,0,252,0,15,28,0,56,28,0,112,28, + 0,224,28,0,224,28,64,224,60,64,224,60,64,224,92,192, + 112,159,128,31,15,0,18,28,84,21,2,0,3,128,0,3, + 128,0,7,128,0,6,192,0,12,96,0,24,48,0,32,24, + 0,0,0,0,0,0,0,15,192,0,56,112,0,32,56,0, + 96,28,0,120,28,0,120,28,0,56,28,0,0,28,0,0, + 252,0,15,28,0,56,28,0,112,28,0,224,28,0,224,28, + 64,224,60,64,224,60,64,224,92,192,112,159,128,31,15,0, + 18,27,81,21,2,0,30,8,0,63,136,0,39,248,0,64, + 240,0,0,0,0,0,0,0,0,0,0,0,0,0,15,192, + 0,56,112,0,32,56,0,96,28,0,120,28,0,120,28,0, + 56,28,0,0,28,0,0,252,0,15,28,0,56,28,0,112, + 28,0,224,28,0,224,28,64,224,60,64,224,60,64,224,92, + 192,112,159,128,31,15,0,18,27,81,21,2,0,56,48,0, + 120,120,0,120,120,0,56,48,0,0,0,0,0,0,0,0, + 0,0,0,0,0,15,192,0,24,112,0,32,56,0,96,28, + 0,112,28,0,120,28,0,56,28,0,0,28,0,0,252,0, + 15,28,0,56,28,0,112,28,0,224,28,0,224,28,64,224, + 60,64,224,60,64,224,92,192,112,159,128,31,15,0,18,28, + 84,21,2,0,7,128,0,8,64,0,16,32,0,16,32,0, + 16,32,0,8,64,0,7,128,0,0,0,0,0,0,0,15, + 192,0,56,112,0,32,56,0,96,28,0,112,28,0,120,28, + 0,56,28,0,0,28,0,0,252,0,15,28,0,56,28,0, + 112,28,0,224,28,0,224,28,64,224,60,64,224,92,64,224, + 156,192,112,159,128,31,15,0,25,19,76,29,2,0,15,193, + 240,0,56,115,28,0,32,30,14,0,96,30,7,0,120,28, + 7,0,120,28,7,0,56,28,7,128,0,28,7,128,3,255, + 255,128,28,28,0,0,112,28,0,0,112,28,0,0,224,28, + 1,128,224,28,1,0,224,62,1,0,224,46,1,0,224,70, + 2,0,112,131,4,0,31,0,248,0,15,27,54,18,2,248, + 7,224,28,16,56,8,48,12,112,28,112,60,240,60,240,24, + 240,0,240,0,240,0,240,0,240,6,112,4,112,4,48,12, + 56,8,28,48,7,224,1,0,2,0,1,192,0,96,0,112, + 0,112,8,240,7,192,15,28,56,19,2,1,56,0,60,0, + 28,0,14,0,7,0,3,0,0,128,0,0,0,0,7,192, + 12,112,56,56,48,28,112,28,112,28,240,30,240,30,255,254, + 240,0,240,0,240,0,240,2,112,4,112,4,56,4,56,8, + 28,16,7,224,15,28,56,19,2,1,0,28,0,60,0,56, + 0,112,0,224,0,192,1,0,0,0,0,0,7,192,12,112, + 56,56,48,28,112,28,112,28,240,30,240,30,255,254,240,0, + 240,0,240,0,240,2,112,4,112,4,56,4,56,8,28,16, + 7,224,15,28,56,19,2,0,1,128,3,128,3,192,7,192, + 6,96,8,48,16,8,0,0,0,0,7,192,12,112,56,56, + 48,28,112,28,112,28,240,30,240,30,255,254,240,0,240,0, + 240,0,240,6,112,4,112,4,56,4,56,8,28,16,7,224, + 15,27,54,19,2,0,24,24,60,60,60,60,24,24,0,0, + 0,0,0,0,0,0,7,192,12,112,56,56,48,28,112,28, + 112,28,240,14,240,14,255,254,240,0,240,0,240,0,240,2, + 112,4,112,4,56,4,56,8,28,16,7,224,10,28,56,11, + 0,0,192,0,224,0,224,0,112,0,24,0,12,0,4,0, + 0,0,0,0,126,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,127,192,10,28,56,11,1,0, + 0,192,1,192,3,128,7,0,6,0,12,0,16,0,0,0, + 0,0,252,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,255,128,11,28,56,11,0,0,12,0, + 12,0,30,0,31,0,51,0,96,128,128,96,0,0,0,0, + 126,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,127,192,11,26,52,13,1,0,96,192,241,224, + 241,224,96,192,0,0,0,0,0,0,62,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,63,192, + 17,29,87,21,2,0,30,4,0,15,12,0,7,176,0,3, + 224,0,1,224,0,6,224,0,12,240,0,16,120,0,0,56, + 0,0,28,0,3,254,0,12,62,0,24,30,0,56,15,0, + 112,15,0,112,7,0,240,7,0,240,7,128,240,7,128,240, + 7,128,240,7,0,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,20,26,78, + 22,1,0,3,225,0,7,254,0,4,126,0,0,0,0,0, + 0,0,0,0,0,0,0,0,252,60,0,28,199,0,29,3, + 0,31,3,128,30,3,128,30,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,255,159, + 240,17,28,84,21,2,1,56,0,0,60,0,0,30,0,0, + 14,0,0,3,0,0,1,128,0,0,128,0,0,0,0,0, + 0,0,3,224,0,12,56,0,24,28,0,56,14,0,112,14, + 0,112,7,0,240,7,0,240,7,0,240,7,128,240,7,128, + 240,7,128,240,7,0,240,7,0,112,7,0,112,14,0,56, + 14,0,24,28,0,12,56,0,3,224,0,17,28,84,21,2, + 1,0,28,0,0,28,0,0,56,0,0,112,0,0,96,0, + 0,192,0,1,128,0,0,0,0,0,0,0,3,224,0,12, + 56,0,24,28,0,56,14,0,112,14,0,112,7,0,240,7, + 0,240,7,0,240,7,128,240,7,128,240,7,128,240,7,0, + 240,7,0,112,7,0,112,14,0,56,14,0,24,28,0,12, + 56,0,3,224,0,17,28,84,21,2,0,1,128,0,1,192, + 0,3,192,0,3,96,0,6,32,0,12,16,0,16,12,0, + 0,0,0,0,0,0,3,224,0,12,56,0,24,28,0,56, + 14,0,112,14,0,112,7,0,240,7,0,240,7,0,240,7, + 128,240,7,128,240,7,128,240,7,0,240,7,0,112,7,0, + 112,14,0,56,14,0,24,28,0,12,56,0,3,224,0,17, + 27,81,21,2,0,15,4,0,31,204,0,19,248,0,16,240, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,224,0, + 12,56,0,24,28,0,56,14,0,112,14,0,112,7,0,240, + 7,0,240,7,0,240,7,128,240,7,128,240,7,128,240,7, + 0,240,7,0,112,7,0,112,14,0,56,14,0,24,28,0, + 12,56,0,3,224,0,17,27,81,21,2,0,24,24,0,60, + 60,0,60,60,0,24,24,0,0,0,0,0,0,0,0,0, + 0,0,0,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,35,26,130, + 39,2,254,0,0,224,0,0,0,1,240,0,0,0,1,240, + 0,0,0,1,240,0,0,0,0,224,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,255,255,224,255,255,255,255,224,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0, + 0,0,1,240,0,0,0,1,240,0,0,0,1,240,0,0, + 0,0,224,0,0,17,19,57,21,2,0,3,225,0,12,59, + 0,24,30,0,56,14,0,112,14,0,112,31,0,240,55,0, + 240,103,0,240,199,128,240,135,128,241,7,128,242,7,0,244, + 7,0,124,7,0,120,14,0,56,14,0,120,28,0,76,56, + 0,131,224,0,20,28,84,22,1,1,14,0,0,15,0,0, + 7,0,0,3,128,0,1,192,0,0,64,0,0,32,0,0, + 0,0,0,0,0,252,31,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,7,128,28, + 7,128,28,15,128,12,11,128,14,51,128,3,195,240,20,28, + 84,22,1,1,0,7,0,0,15,0,0,30,0,0,24,0, + 0,48,0,0,96,0,0,64,0,0,0,0,0,0,0,252, + 31,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,7,128,28,7,128,28,15,128,12, + 11,128,14,51,128,3,195,240,20,28,84,22,1,0,0,96, + 0,0,224,0,0,240,0,1,176,0,3,24,0,2,4,0, + 4,2,0,0,0,0,0,0,0,252,31,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,128,28,15,128,12,11,128,14,51,128,3, + 195,240,20,27,81,22,1,0,6,6,0,15,15,0,15,15, + 0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0, + 252,15,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,3,128,28,3, + 128,28,3,128,28,3,128,28,7,128,28,7,128,28,15,128, + 12,11,128,14,51,128,3,195,240,20,37,111,22,1,248,0, + 3,0,0,7,0,0,15,0,0,28,0,0,24,0,0,48, + 0,0,0,0,0,0,0,0,0,0,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,18,38, + 114,21,1,246,12,0,0,60,0,0,252,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 30,0,28,127,0,28,199,128,29,3,128,31,3,192,30,3, + 192,30,3,128,28,3,128,28,3,128,28,7,0,28,7,0, + 28,6,0,28,12,0,28,28,0,28,24,0,28,48,0,28, + 192,0,29,128,0,30,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 56,0,0,192,0,0,19,36,108,21,1,247,3,6,0,7, + 143,0,7,143,0,3,6,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,143,224,30,3,128,30,1,0,14,3,0, + 14,2,0,7,2,0,7,2,0,7,6,0,3,132,0,3, + 132,0,3,140,0,1,200,0,1,200,0,1,200,0,0,240, + 0,0,240,0,0,240,0,0,96,0,0,96,0,0,96,0, + 0,64,0,0,64,0,48,64,0,120,64,0,120,128,0,121, + 128,0,59,0,0,30,0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 28 + Calculated Max Values w=35 h=38 x= 5 y=11 dx=39 dy= 0 ascent=30 len=170 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x= 0 y=-8 dx= 0 dy= 0 + Pure Font ascent =28 descent= 0 + X Font ascent =28 descent= 0 + Max Font ascent =30 descent=-8 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29n[1201] U8G_SECTION(".progmem.u8g_font_osr29n") = { + 0,107,51,223,244,28,0,0,0,0,42,57,0,30,248,28, + 0,15,17,34,21,3,11,3,128,3,192,3,128,3,128,225, + 142,241,30,249,62,29,112,3,128,3,128,29,112,249,62,241, + 30,227,142,3,128,3,192,3,128,35,34,170,39,2,250,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,255, + 255,255,255,224,255,255,255,255,224,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,5,12,12,11,3,249,112, + 240,248,248,24,8,8,16,16,32,32,64,10,2,4,14,2, + 9,255,192,255,192,5,5,5,11,3,0,112,248,248,248,112, + 14,38,76,18,2,248,0,12,0,12,0,12,0,8,0,24, + 0,24,0,16,0,48,0,48,0,32,0,96,0,96,0,64, + 0,192,0,192,0,128,1,128,1,128,1,0,3,0,3,0, + 2,0,6,0,6,0,4,0,12,0,12,0,8,0,24,0, + 24,0,16,0,48,0,48,0,32,0,96,0,96,0,64,0, + 192,0,20,28,84,24,2,0,1,248,0,7,12,0,12,7, + 0,28,3,128,24,1,128,56,1,192,56,1,192,112,0,224, + 112,0,224,112,0,224,240,0,240,240,0,240,240,0,240,240, + 0,240,240,0,240,240,0,240,240,0,240,240,0,240,240,0, + 240,112,0,224,112,0,224,112,0,224,56,1,192,56,1,192, + 24,1,128,12,3,0,6,6,0,3,252,0,14,28,56,24, + 5,0,1,128,1,128,3,128,7,128,255,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,255,252,17,28,84,24,3,0, + 7,224,0,24,60,0,32,30,0,64,15,0,192,15,0,192, + 7,128,192,7,128,240,7,128,252,7,128,252,7,128,124,7, + 128,24,15,0,0,14,0,0,28,0,0,56,0,0,112,0, + 0,224,0,1,192,0,3,0,0,6,0,0,12,0,128,24, + 0,128,48,0,128,48,1,128,112,1,128,127,255,128,127,255, + 128,127,255,128,17,28,84,24,3,0,15,224,0,48,56,0, + 96,28,0,96,14,0,240,15,0,248,15,0,248,15,0,120, + 15,0,0,15,0,0,15,0,0,14,0,0,28,0,28,56, + 0,31,224,0,0,60,0,0,30,0,0,15,0,0,7,0, + 0,7,128,0,7,128,120,7,128,248,7,128,248,7,128,248, + 7,0,192,15,0,192,14,0,96,28,0,31,240,0,19,28, + 84,24,2,0,0,12,0,0,12,0,0,28,0,0,60,0, + 0,60,0,0,124,0,0,252,0,0,252,0,1,188,0,3, + 60,0,3,60,0,6,60,0,12,60,0,12,60,0,24,60, + 0,48,60,0,32,60,0,96,60,0,192,60,0,255,255,224, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,7,255,224,17,29,87,24,4,0,0,2, + 0,120,12,0,127,248,0,127,240,0,111,192,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,103,224,0,104, + 60,0,112,30,0,96,14,0,96,15,0,96,7,0,0,7, + 128,0,7,128,0,7,128,16,7,128,120,7,128,252,7,128, + 252,7,128,248,15,0,224,15,0,224,14,0,96,28,0,48, + 56,0,31,240,0,17,28,84,24,3,0,1,248,0,3,12, + 0,12,6,0,28,7,0,24,15,0,56,31,0,48,31,0, + 112,14,0,112,0,0,112,0,0,240,0,0,241,240,0,246, + 28,0,252,14,0,248,7,0,248,7,0,240,7,128,240,7, + 128,240,7,128,240,7,128,112,7,128,112,7,128,112,7,0, + 48,7,0,56,7,0,24,14,0,12,28,0,7,248,0,16, + 28,56,24,4,0,255,255,255,255,255,255,192,3,128,2,128, + 2,128,6,128,4,0,12,0,8,0,24,0,48,0,32,0, + 96,0,192,0,192,1,128,3,128,3,128,7,128,7,128,7, + 128,15,192,15,192,15,192,15,192,15,192,7,192,20,28,84, + 24,2,0,3,248,0,14,14,0,56,7,0,112,3,128,112, + 1,192,240,1,192,240,1,192,240,1,192,240,1,192,248,1, + 128,126,3,128,127,131,0,63,252,0,15,252,0,7,255,0, + 24,127,192,48,15,224,112,3,224,224,1,240,224,0,240,224, + 0,240,224,0,224,224,0,224,224,0,224,112,1,192,48,1, + 128,28,7,0,15,252,0,17,28,84,24,3,0,7,224,0, + 12,56,0,56,12,0,56,14,0,112,14,0,112,7,0,240, + 7,0,240,7,0,240,7,128,240,7,128,240,7,128,240,7, + 128,112,15,128,112,15,128,56,27,128,28,51,128,7,199,128, + 0,7,128,0,7,0,0,7,0,56,7,0,124,7,0,124, + 14,0,120,14,0,112,12,0,112,24,0,48,48,0,31,224, + 0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--41-410-72-72-P-216-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 29, '1' Height: 28 + Calculated Max Values w=41 h=38 x= 5 y=22 dx=44 dy= 0 ascent=31 len=174 + Font Bounding box w=107 h=51 x=-33 y=-12 + Calculated Min Values x=-1 y=-9 dx= 0 dy= 0 + Pure Font ascent =29 descent=-9 + X Font ascent =30 descent=-9 + Max Font ascent =31 descent=-9 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr29r[7573] U8G_SECTION(".progmem.u8g_font_osr29r") = { + 0,107,51,223,244,29,9,148,21,166,32,127,247,31,247,30, + 247,0,0,0,11,0,0,5,28,28,11,3,0,112,248,248, + 248,248,248,248,248,112,112,112,112,112,112,112,112,32,32,32, + 32,32,32,0,112,248,248,248,112,9,8,16,17,4,22,227, + 128,227,128,227,128,227,128,193,128,65,128,65,0,65,0,22, + 28,84,28,3,0,0,192,192,0,192,192,0,192,192,0,192, + 128,0,129,128,1,129,128,1,129,128,1,129,128,255,255,252, + 255,255,252,1,129,0,3,3,0,3,3,0,3,3,0,3, + 3,0,3,3,0,2,2,0,6,6,0,255,255,252,255,255, + 252,6,6,0,6,6,0,6,4,0,4,12,0,12,12,0, + 12,12,0,12,12,0,12,12,0,18,34,102,24,3,253,1, + 16,0,1,16,0,1,16,0,3,248,0,13,22,0,25,17, + 0,49,16,128,97,16,192,97,16,192,97,17,192,97,19,192, + 97,19,192,113,19,128,61,16,0,63,144,0,31,240,0,15, + 252,0,3,254,0,1,127,0,1,31,128,1,19,128,33,17, + 192,113,16,192,249,16,192,241,16,192,241,16,192,225,16,128, + 97,17,128,97,17,0,49,19,0,15,188,0,1,240,0,1, + 16,0,1,16,0,28,28,112,36,4,0,31,0,6,0,49, + 128,4,0,96,192,12,0,96,192,8,0,224,224,24,0,224, + 224,48,0,224,224,32,0,224,224,96,0,224,224,64,0,224, + 224,128,0,96,193,128,0,96,193,0,0,49,131,0,0,31, + 6,0,0,0,4,15,0,0,12,48,128,0,8,48,192,0, + 16,96,96,0,48,96,96,0,32,224,112,0,96,224,112,0, + 64,224,112,0,128,224,112,1,128,224,112,1,0,96,96,2, + 0,96,96,6,0,48,192,4,0,31,128,28,28,112,32,2, + 0,0,248,0,0,3,140,0,0,7,4,0,0,6,2,0, + 0,14,2,0,0,14,2,0,0,14,6,0,0,14,4,0, + 0,15,12,0,0,7,24,0,0,7,176,0,0,3,224,0, + 0,1,224,63,240,3,224,7,128,6,240,7,0,12,120,6, + 0,24,124,6,0,48,60,4,0,112,30,12,0,112,31,24, + 0,240,15,144,0,240,7,176,0,240,7,224,0,240,3,224, + 0,240,3,240,32,120,6,248,32,60,12,124,192,31,240,63, + 128,3,8,8,10,4,22,224,224,224,224,192,64,64,64,9, + 37,74,15,4,249,1,128,3,0,6,0,14,0,12,0,24, + 0,24,0,48,0,48,0,96,0,96,0,96,0,96,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,192,0,96,0,96,0,96,0,96,0,48,0,48,0,56, + 0,24,0,12,0,12,0,6,0,3,0,3,128,1,128,9, + 37,74,15,2,249,192,0,96,0,48,0,56,0,24,0,12, + 0,12,0,6,0,6,0,3,0,3,0,3,0,3,0,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,3,128,3,0,3,0,3,0,6,0,6,0,14, + 0,12,0,24,0,24,0,48,0,96,0,224,0,192,0,15, + 17,34,21,3,11,3,128,3,192,3,128,3,128,225,142,241, + 30,249,62,29,112,3,128,3,128,29,112,249,62,241,30,227, + 142,3,128,3,192,3,128,35,34,170,39,2,250,0,0,192, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,255,255,255, + 255,224,255,255,255,255,224,0,0,192,0,0,0,0,192,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,192,0,0, + 0,0,192,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,192,0,0,0,0,192,0,0,0,0,192,0,0,0,0, + 192,0,0,0,0,192,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,192,0,0,5,12,12,11,3,249,112,240,248, + 248,24,8,8,16,16,32,32,64,10,2,4,14,2,9,255, + 192,255,192,5,5,5,11,3,0,112,248,248,248,112,14,38, + 76,18,2,248,0,12,0,12,0,12,0,8,0,24,0,24, + 0,16,0,48,0,48,0,32,0,96,0,96,0,64,0,192, + 0,192,0,128,1,128,1,128,1,0,3,0,3,0,2,0, + 6,0,6,0,4,0,12,0,12,0,8,0,24,0,24,0, + 16,0,48,0,48,0,32,0,96,0,96,0,64,0,192,0, + 20,28,84,24,2,0,1,248,0,7,12,0,12,7,0,28, + 3,128,24,1,128,56,1,192,56,1,192,112,0,224,112,0, + 224,112,0,224,240,0,240,240,0,240,240,0,240,240,0,240, + 240,0,240,240,0,240,240,0,240,240,0,240,240,0,240,112, + 0,224,112,0,224,112,0,224,56,1,192,56,1,192,24,1, + 128,12,3,0,6,6,0,3,252,0,14,28,56,24,5,0, + 1,128,1,128,3,128,7,128,255,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,255,252,17,28,84,24,3,0,7,224, + 0,24,60,0,32,30,0,64,15,0,192,15,0,192,7,128, + 192,7,128,240,7,128,252,7,128,252,7,128,124,7,128,24, + 15,0,0,14,0,0,28,0,0,56,0,0,112,0,0,224, + 0,1,192,0,3,0,0,6,0,0,12,0,128,24,0,128, + 48,0,128,48,1,128,112,1,128,127,255,128,127,255,128,127, + 255,128,17,28,84,24,3,0,15,224,0,48,56,0,96,28, + 0,96,14,0,240,15,0,248,15,0,248,15,0,120,15,0, + 0,15,0,0,15,0,0,14,0,0,28,0,28,56,0,31, + 224,0,0,60,0,0,30,0,0,15,0,0,7,0,0,7, + 128,0,7,128,120,7,128,248,7,128,248,7,128,248,7,0, + 192,15,0,192,14,0,96,28,0,31,240,0,19,28,84,24, + 2,0,0,12,0,0,12,0,0,28,0,0,60,0,0,60, + 0,0,124,0,0,252,0,0,252,0,1,188,0,3,60,0, + 3,60,0,6,60,0,12,60,0,12,60,0,24,60,0,48, + 60,0,32,60,0,96,60,0,192,60,0,255,255,224,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,7,255,224,17,29,87,24,4,0,0,2,0,120, + 12,0,127,248,0,127,240,0,111,192,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,103,224,0,104,60,0, + 112,30,0,96,14,0,96,15,0,96,7,0,0,7,128,0, + 7,128,0,7,128,16,7,128,120,7,128,252,7,128,252,7, + 128,248,15,0,224,15,0,224,14,0,96,28,0,48,56,0, + 31,240,0,17,28,84,24,3,0,1,248,0,3,12,0,12, + 6,0,28,7,0,24,15,0,56,31,0,48,31,0,112,14, + 0,112,0,0,112,0,0,240,0,0,241,240,0,246,28,0, + 252,14,0,248,7,0,248,7,0,240,7,128,240,7,128,240, + 7,128,240,7,128,112,7,128,112,7,128,112,7,0,48,7, + 0,56,7,0,24,14,0,12,28,0,7,248,0,16,28,56, + 24,4,0,255,255,255,255,255,255,192,3,128,2,128,2,128, + 6,128,4,0,12,0,8,0,24,0,48,0,32,0,96,0, + 192,0,192,1,128,3,128,3,128,7,128,7,128,7,128,15, + 192,15,192,15,192,15,192,15,192,7,192,20,28,84,24,2, + 0,3,248,0,14,14,0,56,7,0,112,3,128,112,1,192, + 240,1,192,240,1,192,240,1,192,240,1,192,248,1,128,126, + 3,128,127,131,0,63,252,0,15,252,0,7,255,0,24,127, + 192,48,15,224,112,3,224,224,1,240,224,0,240,224,0,240, + 224,0,224,224,0,224,224,0,224,112,1,192,48,1,128,28, + 7,0,15,252,0,17,28,84,24,3,0,7,224,0,12,56, + 0,56,12,0,56,14,0,112,14,0,112,7,0,240,7,0, + 240,7,0,240,7,128,240,7,128,240,7,128,240,7,128,112, + 15,128,112,15,128,56,27,128,28,51,128,7,199,128,0,7, + 128,0,7,0,0,7,0,56,7,0,124,7,0,124,14,0, + 120,14,0,112,12,0,112,24,0,48,48,0,31,224,0,5, + 19,19,11,3,0,112,248,248,248,112,0,0,0,0,0,0, + 0,0,0,112,248,248,248,112,5,26,26,11,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,240,248,120, + 8,8,8,16,16,32,96,64,32,34,136,39,3,250,0,0, + 0,2,0,0,0,7,0,0,0,28,0,0,0,112,0,0, + 1,224,0,0,7,128,0,0,30,0,0,0,120,0,0,1, + 224,0,0,3,128,0,0,14,0,0,0,56,0,0,0,240, + 0,0,3,192,0,0,15,0,0,0,60,0,0,0,240,0, + 0,0,224,0,0,0,120,0,0,0,30,0,0,0,7,128, + 0,0,1,192,0,0,0,112,0,0,0,28,0,0,0,7, + 0,0,0,3,192,0,0,0,240,0,0,0,60,0,0,0, + 15,0,0,0,3,128,0,0,0,224,0,0,0,56,0,0, + 0,14,0,0,0,6,35,10,50,39,2,6,255,255,255,255, + 224,255,255,255,255,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,224,255,255,255,255,224,32,34, + 136,39,3,250,64,0,0,0,224,0,0,0,56,0,0,0, + 14,0,0,0,7,128,0,0,1,224,0,0,0,120,0,0, + 0,30,0,0,0,7,128,0,0,1,192,0,0,0,112,0, + 0,0,28,0,0,0,15,0,0,0,3,192,0,0,0,240, + 0,0,0,60,0,0,0,15,0,0,0,7,0,0,0,30, + 0,0,0,120,0,0,1,224,0,0,3,128,0,0,14,0, + 0,0,56,0,0,0,224,0,0,3,192,0,0,15,0,0, + 0,60,0,0,0,240,0,0,1,192,0,0,7,0,0,0, + 28,0,0,0,112,0,0,0,96,0,0,0,15,28,56,20, + 3,0,15,192,48,112,64,60,192,28,192,30,248,30,248,30, + 112,30,0,28,0,60,0,120,0,240,1,192,3,128,6,0, + 12,0,8,32,8,32,8,32,12,64,7,128,0,0,0,0, + 3,128,7,192,7,192,7,192,3,128,29,29,116,33,2,1, + 0,63,248,0,1,192,14,0,3,0,3,0,6,0,1,128, + 12,0,0,192,24,7,206,96,48,12,124,32,48,56,60,48, + 96,112,60,16,96,224,56,24,96,224,56,24,193,192,56,24, + 193,192,56,24,193,192,48,24,195,192,112,24,195,128,112,24, + 195,128,112,48,195,128,224,48,195,128,224,48,67,129,224,96, + 97,130,224,192,97,196,225,128,48,120,62,0,48,0,0,0, + 24,0,0,0,12,0,0,0,6,0,4,0,3,128,28,0, + 0,127,240,0,29,29,116,32,2,0,0,2,0,0,0,6, + 0,0,0,7,0,0,0,7,0,0,0,15,128,0,0,15, + 128,0,0,15,128,0,0,31,192,0,0,19,192,0,0,51, + 192,0,0,49,224,0,0,33,224,0,0,97,224,0,0,96, + 240,0,0,64,240,0,0,192,240,0,0,192,120,0,0,128, + 120,0,1,128,120,0,1,255,252,0,1,0,60,0,3,0, + 28,0,3,0,30,0,6,0,30,0,6,0,15,0,6,0, + 15,0,14,0,15,0,30,0,15,128,255,224,255,248,23,29, + 87,28,3,0,255,255,128,15,0,224,15,0,120,15,0,60, + 15,0,28,15,0,28,15,0,30,15,0,30,15,0,28,15, + 0,28,15,0,56,15,0,48,15,0,224,15,255,0,15,0, + 224,15,0,112,15,0,56,15,0,60,15,0,30,15,0,30, + 15,0,30,15,0,30,15,0,30,15,0,30,15,0,60,15, + 0,60,15,0,120,15,0,224,255,255,128,22,29,87,28,3, + 1,1,254,8,7,3,152,12,0,248,28,0,248,24,0,120, + 56,0,56,120,0,56,112,0,24,112,0,24,240,0,8,240, + 0,8,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,0,240,0,0,112,0,12,112,0,12, + 120,0,12,56,0,24,56,0,24,28,0,24,12,0,48,6, + 0,96,3,0,192,0,255,128,27,29,116,32,3,0,255,255, + 192,0,15,0,112,0,15,0,28,0,15,0,14,0,15,0, + 7,0,15,0,7,128,15,0,3,128,15,0,3,192,15,0, + 3,192,15,0,1,192,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,1,224,15,0, + 1,224,15,0,1,224,15,0,1,224,15,0,3,192,15,0, + 3,192,15,0,3,192,15,0,3,128,15,0,7,0,15,0, + 7,0,15,0,14,0,15,0,28,0,15,0,112,0,255,255, + 192,0,23,29,87,29,3,0,255,255,254,15,0,62,15,0, + 14,15,0,14,15,0,6,15,0,6,15,0,2,15,0,2, + 15,1,2,15,1,0,15,1,0,15,1,0,15,3,0,15, + 7,0,15,255,0,15,7,0,15,3,0,15,1,0,15,1, + 2,15,1,2,15,1,2,15,0,2,15,0,6,15,0,6, + 15,0,6,15,0,14,15,0,30,15,0,126,255,255,254,23, + 29,87,28,3,0,255,255,254,15,0,62,15,0,14,15,0, + 14,15,0,6,15,0,6,15,0,2,15,0,2,15,1,2, + 15,1,0,15,1,0,15,1,0,15,3,0,15,7,0,15, + 255,0,15,7,0,15,3,0,15,1,0,15,1,0,15,1, + 0,15,1,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,255,240,0,25,30,120,29, + 3,0,0,16,0,0,1,254,8,0,6,3,152,0,12,0, + 248,0,28,0,248,0,24,0,120,0,56,0,56,0,56,0, + 56,0,112,0,24,0,112,0,24,0,112,0,8,0,240,0, + 8,0,240,0,0,0,240,0,0,0,240,0,0,0,240,7, + 255,128,240,0,120,0,240,0,120,0,240,0,120,0,240,0, + 120,0,112,0,120,0,112,0,120,0,112,0,120,0,56,0, + 120,0,56,0,120,0,24,0,248,0,28,0,200,0,12,1, + 136,0,6,3,8,0,1,254,8,0,28,29,116,33,3,0, + 255,240,255,240,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,255,255,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 255,240,255,240,12,29,58,17,3,0,255,240,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,15,0,15,0,15,0,15,0,15,0,15,0,15,0, + 15,0,255,240,19,29,87,22,2,0,1,255,224,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,120,30,0,248,30,0,248,30,0,248, + 30,0,192,28,0,192,28,0,64,24,0,96,48,0,31,224, + 0,27,29,116,32,3,0,255,241,255,192,15,0,126,0,15, + 0,60,0,15,0,56,0,15,0,112,0,15,0,96,0,15, + 0,192,0,15,1,128,0,15,3,0,0,15,6,0,0,15, + 14,0,0,15,30,0,0,15,63,0,0,15,111,0,0,15, + 207,128,0,15,135,128,0,15,7,192,0,15,3,192,0,15, + 3,224,0,15,3,224,0,15,1,240,0,15,1,240,0,15, + 0,248,0,15,0,248,0,15,0,124,0,15,0,124,0,15, + 0,62,0,15,0,63,0,255,241,255,224,23,29,87,28,3, + 0,255,248,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,2,15,0,2,15,0,6, + 15,0,6,15,0,6,15,0,14,15,0,14,15,0,30,15, + 0,62,15,0,254,255,255,254,30,29,116,35,3,0,255,128, + 3,252,15,128,7,192,15,192,7,192,15,192,7,192,15,192, + 15,192,13,192,11,192,13,224,11,192,13,224,11,192,12,224, + 27,192,12,240,19,192,12,240,19,192,12,112,51,192,12,112, + 35,192,12,120,35,192,12,120,35,192,12,56,99,192,12,60, + 67,192,12,60,67,192,12,28,195,192,12,28,131,192,12,30, + 131,192,12,14,131,192,12,15,131,192,12,15,3,192,12,15, + 3,192,12,7,3,192,12,6,3,192,30,6,3,192,255,194, + 63,252,28,29,116,32,3,0,255,0,63,240,15,128,7,128, + 15,128,3,0,15,192,3,0,15,224,3,0,13,224,3,0, + 13,240,3,0,12,248,3,0,12,120,3,0,12,124,3,0, + 12,60,3,0,12,30,3,0,12,31,3,0,12,15,3,0, + 12,7,131,0,12,7,131,0,12,3,195,0,12,3,227,0, + 12,1,227,0,12,0,243,0,12,0,251,0,12,0,123,0, + 12,0,63,0,12,0,63,0,12,0,31,0,12,0,31,0, + 12,0,15,0,30,0,7,0,255,192,7,0,24,29,87,29, + 3,1,0,255,0,3,0,192,6,0,96,12,0,48,28,0, + 56,56,0,28,56,0,28,120,0,30,112,0,14,112,0,14, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,240,0,15,240,0,15,112,0,14,112,0, + 14,120,0,30,56,0,28,56,0,28,28,0,56,12,0,48, + 6,0,96,3,0,192,0,255,0,23,29,87,28,3,0,255, + 255,128,15,0,224,15,0,120,15,0,60,15,0,60,15,0, + 30,15,0,30,15,0,30,15,0,30,15,0,30,15,0,60, + 15,0,60,15,0,120,15,0,224,15,255,128,15,0,0,15, + 0,0,15,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,255,248,0,24,36,108,29,3,250,0,255,0,3, + 0,192,6,0,96,12,0,48,28,0,56,56,0,28,56,0, + 28,120,0,30,112,0,14,112,0,14,240,0,15,240,0,15, + 240,0,15,240,0,15,240,0,15,240,0,15,240,0,15,240, + 0,15,240,0,15,112,0,14,120,0,30,120,0,30,56,60, + 28,56,99,28,28,195,56,14,193,184,6,193,240,3,193,225, + 0,247,193,0,9,193,0,1,193,0,1,195,0,1,226,0, + 1,254,0,0,252,0,0,56,25,29,116,29,3,0,255,255, + 128,0,15,1,240,0,15,0,120,0,15,0,120,0,15,0, + 60,0,15,0,60,0,15,0,60,0,15,0,60,0,15,0, + 60,0,15,0,120,0,15,0,240,0,15,1,224,0,15,255, + 0,0,15,3,128,0,15,1,192,0,15,0,224,0,15,0, + 224,0,15,0,240,0,15,0,240,0,15,0,240,0,15,0, + 240,0,15,0,240,0,15,0,248,128,15,0,120,128,15,0, + 120,128,15,0,121,128,15,0,127,0,15,0,63,0,255,248, + 30,0,19,29,87,25,4,1,15,240,192,48,28,192,96,15, + 192,96,7,192,192,3,192,192,1,192,192,1,192,192,0,192, + 224,0,192,240,0,192,120,0,64,127,0,0,63,192,0,31, + 248,0,15,254,0,1,255,128,128,127,128,128,15,192,128,3, + 224,128,1,224,192,0,224,192,0,96,224,0,96,224,0,96, + 240,0,96,248,0,192,156,0,128,134,1,0,131,254,0,24, + 29,87,29,3,0,255,255,255,248,60,31,240,60,15,224,60, + 7,192,60,3,192,60,3,192,60,3,128,60,1,128,60,1, + 128,60,1,128,60,1,0,60,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,0,0,60,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,0,0,60,0,0,60,0, + 0,60,0,0,60,0,0,60,0,7,255,224,29,29,116,34, + 3,0,255,240,31,248,15,0,3,192,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,15,0, + 1,128,15,0,1,128,15,0,1,128,15,0,1,128,7,0, + 1,0,7,0,3,0,3,128,2,0,1,192,6,0,0,224, + 24,0,0,63,240,0,29,29,116,32,2,0,255,248,63,248, + 15,128,3,192,7,128,3,128,7,128,3,0,3,192,3,0, + 3,192,3,0,3,192,2,0,1,224,6,0,1,224,6,0, + 1,240,4,0,0,240,12,0,0,240,12,0,0,248,8,0, + 0,120,24,0,0,120,24,0,0,60,16,0,0,60,48,0, + 0,60,48,0,0,30,32,0,0,30,96,0,0,31,96,0, + 0,15,64,0,0,15,192,0,0,15,192,0,0,7,128,0, + 0,7,128,0,0,7,128,0,0,3,0,0,0,3,0,0, + 41,29,174,44,2,0,255,241,255,227,255,128,15,128,63,0, + 124,0,7,128,30,0,56,0,7,128,30,0,48,0,7,128, + 31,0,48,0,3,192,31,0,48,0,3,192,31,0,96,0, + 3,192,55,0,96,0,1,224,55,128,96,0,1,224,55,128, + 64,0,1,224,39,128,192,0,1,224,99,192,192,0,0,240, + 99,192,128,0,0,240,67,193,128,0,0,240,193,193,128,0, + 0,120,193,225,0,0,0,120,193,227,0,0,0,120,129,227, + 0,0,0,125,128,242,0,0,0,61,128,246,0,0,0,61, + 0,246,0,0,0,61,0,116,0,0,0,31,0,124,0,0, + 0,31,0,124,0,0,0,30,0,60,0,0,0,14,0,56, + 0,0,0,14,0,56,0,0,0,12,0,56,0,0,0,12, + 0,16,0,0,28,29,116,31,2,0,255,248,255,224,7,192, + 30,0,7,192,28,0,3,224,24,0,1,224,24,0,1,240, + 48,0,0,240,32,0,0,248,96,0,0,120,192,0,0,124, + 128,0,0,61,128,0,0,63,0,0,0,30,0,0,0,15, + 0,0,0,15,0,0,0,15,128,0,0,31,128,0,0,51, + 192,0,0,51,224,0,0,97,224,0,0,193,240,0,0,192, + 240,0,1,128,248,0,3,0,120,0,3,0,124,0,6,0, + 60,0,14,0,62,0,31,0,63,0,255,225,255,240,27,29, + 116,30,2,0,255,248,127,224,15,128,31,0,15,128,14,0, + 7,128,12,0,3,192,12,0,3,192,8,0,1,224,24,0, + 1,240,16,0,0,240,48,0,0,248,32,0,0,120,96,0, + 0,60,64,0,0,60,192,0,0,30,128,0,0,31,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0, + 0,15,0,0,1,255,248,0,22,29,87,27,3,0,63,255, + 252,62,0,120,60,0,248,56,0,240,48,1,224,48,3,224, + 96,3,192,96,7,128,64,15,128,64,15,0,0,31,0,0, + 62,0,0,60,0,0,124,0,0,120,0,0,240,0,1,240, + 0,1,224,0,3,224,4,7,192,4,7,128,12,15,128,12, + 31,0,12,31,0,28,62,0,28,60,0,60,124,0,120,248, + 0,248,255,255,248,8,37,37,16,5,248,255,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,255, + 14,38,76,18,2,248,192,0,64,0,96,0,96,0,32,0, + 48,0,48,0,16,0,24,0,24,0,8,0,12,0,12,0, + 4,0,4,0,6,0,2,0,2,0,3,0,3,0,1,0, + 1,128,1,128,0,128,0,192,0,192,0,64,0,96,0,96, + 0,32,0,48,0,48,0,16,0,24,0,24,0,8,0,12, + 0,12,8,37,37,16,3,248,255,15,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 7,7,7,7,7,7,7,7,7,7,7,15,255,18,14,42, + 24,3,15,0,192,0,1,192,0,1,224,0,3,48,0,3, + 48,0,6,24,0,12,12,0,12,12,0,24,6,0,48,6, + 0,48,3,0,96,1,128,224,1,128,192,0,192,21,2,6, + 21,0,250,255,255,248,255,255,248,7,7,7,18,3,21,192, + 224,112,56,24,12,2,18,19,57,21,2,0,15,192,0,56, + 112,0,32,56,0,96,28,0,120,28,0,120,28,0,56,28, + 0,0,28,0,0,252,0,15,28,0,56,28,0,112,28,0, + 224,28,0,224,28,64,224,60,64,224,60,64,224,92,192,112, + 159,128,31,15,0,18,29,87,21,1,0,252,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,120,0,28,142,0,29, + 7,0,30,3,128,30,3,128,28,3,128,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,192,28,3,192, + 28,3,128,28,3,128,30,3,128,27,7,0,17,142,0,16, + 248,0,15,19,38,18,2,0,7,224,28,16,56,8,48,12, + 112,28,112,60,240,60,240,24,240,0,240,0,240,0,240,0, + 240,6,112,4,112,4,48,12,56,8,12,48,7,224,18,29, + 87,21,2,0,0,254,0,0,14,0,0,14,0,0,14,0, + 0,14,0,0,14,0,0,14,0,0,14,0,0,14,0,0, + 14,0,15,142,0,28,78,0,56,46,0,112,30,0,112,30, + 0,112,14,0,240,14,0,240,14,0,240,14,0,240,14,0, + 240,14,0,240,14,0,240,14,0,112,14,0,112,14,0,112, + 30,0,56,62,0,24,110,0,7,207,192,15,19,38,19,2, + 0,7,192,12,112,56,56,48,28,112,28,112,28,240,30,240, + 30,255,254,240,0,240,0,240,0,240,6,112,4,112,4,56, + 4,56,8,28,16,7,224,14,29,58,14,1,0,1,240,7, + 24,14,24,12,60,28,60,28,56,28,0,28,0,28,0,28, + 0,255,192,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,255,192,20,28,84,22,2,247,7,225,192, + 28,58,96,56,30,240,112,30,240,112,14,224,240,15,0,240, + 15,0,240,15,0,112,14,0,112,30,0,56,28,0,28,56, + 0,7,224,0,56,0,0,64,0,0,192,0,0,240,0,0, + 255,254,0,63,255,0,15,7,128,112,1,192,64,0,192,192, + 0,192,192,0,192,192,1,128,96,1,128,56,6,0,7,248, + 0,20,29,87,22,1,0,252,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,60,0,28,199,0,29,3,0,29,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,8,28, + 28,11,1,0,24,60,60,24,0,0,0,0,0,252,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,255, + 11,37,74,14,255,247,0,192,1,224,1,224,0,192,0,0, + 0,0,0,0,0,0,0,0,15,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,224,224,240,224,224,192,193,128,99,128,62,0, + 19,29,87,21,1,0,252,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,63,192,28,14,0,28,12,0,28,8,0, + 28,16,0,28,48,0,28,96,0,28,192,0,28,224,0,29, + 224,0,30,240,0,30,120,0,28,60,0,28,60,0,28,30, + 0,28,15,0,28,15,0,28,15,128,255,63,224,9,29,58, + 11,1,0,252,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,31,19,76, + 33,1,0,252,124,15,128,28,199,24,192,29,7,32,224,31, + 3,224,112,30,3,192,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,28,3,128,112,28, + 3,128,112,28,3,128,112,28,3,128,112,255,159,243,254,20, + 19,57,22,1,0,252,60,0,28,199,0,29,3,0,31,3, + 128,30,3,128,30,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,3,128,28,3,128,28,3,128,255,159,240,17,19, + 57,21,2,0,3,224,0,12,56,0,24,28,0,56,14,0, + 112,14,0,112,7,0,240,7,0,240,7,0,240,7,128,240, + 7,128,240,7,128,240,7,0,240,7,0,112,7,0,112,14, + 0,56,14,0,24,28,0,12,56,0,3,224,0,18,28,84, + 21,1,247,252,120,0,29,142,0,31,7,0,30,3,128,30, + 3,128,28,3,128,28,3,192,28,3,192,28,3,192,28,3, + 192,28,3,192,28,3,192,28,3,192,28,3,128,28,3,128, + 30,3,128,31,7,0,29,134,0,28,120,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,255,128,0,18,28,84,21,2,247,7,130,0, + 28,98,0,56,54,0,112,22,0,112,30,0,112,14,0,240, + 14,0,240,14,0,240,14,0,240,14,0,240,14,0,240,14, + 0,240,14,0,112,14,0,112,14,0,112,30,0,56,62,0, + 24,110,0,7,206,0,0,14,0,0,14,0,0,14,0,0, + 14,0,0,14,0,0,14,0,0,14,0,0,14,0,0,127, + 192,15,19,38,16,1,0,252,56,28,196,28,142,29,30,31, + 28,30,12,30,0,30,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,255,128,14,19,38, + 18,2,0,31,16,96,208,64,112,192,48,192,16,224,16,240, + 0,126,0,63,128,31,224,3,248,128,252,192,28,192,12,224, + 12,224,12,240,8,140,24,131,224,12,27,54,14,1,0,4, + 0,4,0,4,0,4,0,4,0,12,0,12,0,28,0,255, + 224,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,16,28,16,28,16,28,48,30, + 32,15,224,7,192,20,19,57,22,1,0,252,31,128,28,3, + 128,28,3,128,28,3,128,28,3,128,28,3,128,28,3,128, + 28,3,128,28,3,128,28,3,128,28,3,128,28,3,128,28, + 3,128,28,7,128,28,7,128,28,15,128,12,11,128,14,51, + 128,3,195,240,20,19,57,21,1,0,255,15,240,60,3,128, + 28,3,0,28,3,0,14,2,0,14,2,0,15,6,0,7, + 4,0,7,4,0,3,140,0,3,136,0,3,200,0,1,216, + 0,1,208,0,0,240,0,0,240,0,0,96,0,0,96,0, + 0,96,0,30,19,76,31,1,0,255,31,243,252,60,7,128, + 224,28,3,128,192,28,3,128,192,14,3,192,128,14,3,192, + 128,15,7,193,128,7,5,225,0,7,4,225,0,3,140,227, + 0,3,136,114,0,1,200,114,0,1,216,118,0,1,240,60, + 0,0,240,60,0,0,240,60,0,0,96,24,0,0,96,24, + 0,0,32,24,0,18,19,57,21,1,0,255,31,192,30,14, + 0,30,12,0,14,8,0,15,24,0,7,16,0,3,160,0, + 3,224,0,1,192,0,1,224,0,1,224,0,1,112,0,3, + 120,0,2,56,0,4,28,0,12,28,0,24,14,0,24,15, + 0,254,63,192,20,28,84,22,1,247,255,143,240,30,1,128, + 30,1,128,14,1,0,14,1,0,15,3,0,7,2,0,7, + 2,0,3,134,0,3,132,0,3,132,0,1,204,0,1,200, + 0,1,200,0,0,248,0,0,240,0,0,240,0,0,112,0, + 0,96,0,0,96,0,0,96,0,0,64,0,48,64,0,120, + 192,0,120,128,0,113,128,0,51,0,0,30,0,0,14,19, + 38,18,2,0,255,252,224,60,192,56,192,120,128,240,128,224, + 129,224,1,192,3,128,7,128,7,0,15,0,30,4,28,4, + 60,4,56,12,112,12,240,28,255,252,10,37,74,17,4,248, + 1,192,6,0,12,0,8,0,24,0,24,0,24,0,28,0, + 28,0,12,0,14,0,14,0,14,0,6,0,6,0,6,0, + 4,0,8,0,240,0,24,0,12,0,4,0,6,0,6,0, + 14,0,14,0,14,0,12,0,28,0,28,0,24,0,24,0, + 24,0,8,0,12,0,6,0,1,192,2,38,38,12,5,248, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,10,37,74,17,3,248,224,0,24,0, + 12,0,4,0,6,0,6,0,6,0,14,0,14,0,12,0, + 28,0,28,0,28,0,24,0,24,0,24,0,8,0,4,0, + 3,192,6,0,8,0,24,0,24,0,24,0,28,0,28,0, + 28,0,12,0,14,0,14,0,6,0,6,0,6,0,4,0, + 12,0,24,0,224,0,23,8,24,27,2,7,30,0,8,127, + 192,4,255,240,2,199,254,2,128,255,134,128,63,254,192,15, + 252,96,1,248,255}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=47 x=10 y=28 dx=52 dy= 0 ascent=47 len=252 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x=-2 y=-13 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =36 descent=-10 + Max Font ascent =47 descent=-13 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35[22370] U8G_SECTION(".progmem.u8g_font_osr35") = { + 0,128,62,216,241,35,12,236,30,116,32,255,246,47,243,36, + 246,0,0,0,14,0,0,6,34,34,14,4,0,120,252,252, + 252,252,252,252,252,252,120,120,120,120,120,120,48,48,48,48, + 48,48,48,48,48,48,48,0,0,0,120,252,252,252,120,11, + 10,20,19,4,26,224,224,224,224,224,224,224,224,224,224,224, + 224,64,64,64,64,64,64,64,64,26,34,136,34,4,0,0, + 48,24,0,0,48,24,0,0,112,24,0,0,96,24,0,0, + 96,56,0,0,96,56,0,0,96,48,0,0,96,48,0,0, + 96,48,0,0,224,48,0,255,255,255,192,255,255,255,192,0, + 192,96,0,0,192,96,0,0,192,96,0,1,192,96,0,1, + 128,96,0,1,128,224,0,1,128,192,0,1,128,192,0,1, + 128,192,0,3,128,192,0,255,255,255,192,255,255,255,192,3, + 1,128,0,3,1,128,0,3,1,128,0,7,1,128,0,7, + 1,128,0,6,1,128,0,6,3,128,0,6,3,0,0,6, + 3,0,0,6,3,0,0,22,41,123,29,3,252,0,204,0, + 0,204,0,0,204,0,1,254,0,7,207,192,12,204,96,24, + 204,48,48,204,24,32,204,24,96,204,28,96,204,60,96,204, + 124,96,204,124,112,204,120,120,204,120,62,204,0,63,204,0, + 31,252,0,15,252,0,7,255,128,1,255,192,0,255,224,0, + 207,240,0,205,248,0,204,120,48,204,60,120,204,28,248,204, + 28,248,204,12,240,204,12,240,204,8,224,204,24,96,204,24, + 96,204,48,48,204,96,28,205,192,7,255,128,0,204,0,0, + 204,0,0,204,0,0,204,0,33,34,170,43,5,0,15,128, + 0,48,0,24,192,0,96,0,48,96,0,64,0,112,112,0, + 192,0,96,48,1,128,0,224,56,1,128,0,224,56,3,0, + 0,224,56,2,0,0,224,56,6,0,0,224,56,12,0,0, + 224,56,12,0,0,224,56,24,0,0,96,48,48,0,0,96, + 112,48,0,0,48,96,96,0,0,24,192,64,0,0,15,128, + 192,0,0,0,1,128,248,0,0,1,129,140,0,0,3,3, + 6,0,0,2,6,7,0,0,6,6,3,0,0,12,14,3, + 128,0,8,14,3,128,0,24,14,3,128,0,48,14,3,128, + 0,48,14,3,128,0,96,14,3,128,0,64,14,3,128,0, + 192,6,3,0,1,128,6,3,0,1,128,7,7,0,3,0, + 3,14,0,6,0,1,252,0,33,34,170,39,3,0,0,63, + 0,0,0,0,227,128,0,0,1,128,192,0,0,3,128,64, + 0,0,3,0,96,0,0,7,0,96,0,0,7,0,96,0, + 0,7,0,224,0,0,7,0,192,0,0,7,129,192,0,0, + 7,131,128,0,0,3,199,0,0,0,3,238,0,0,0,1, + 248,0,0,0,0,248,7,255,128,1,248,0,252,0,3,252, + 0,112,0,7,62,0,112,0,14,63,0,96,0,28,31,0, + 96,0,60,15,128,192,0,56,7,192,192,0,120,7,193,128, + 0,120,3,225,128,0,240,1,243,0,0,240,1,254,0,0, + 240,0,254,0,0,240,0,124,0,0,248,0,62,0,0,248, + 0,62,1,0,120,0,127,1,0,60,0,207,130,0,30,3, + 135,252,0,15,254,1,248,0,3,10,10,11,4,26,224,224, + 224,224,224,224,64,64,64,64,11,46,92,18,5,246,0,64, + 0,224,1,192,3,128,3,0,6,0,14,0,12,0,28,0, + 24,0,56,0,48,0,48,0,112,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,224,0,96,0,96,0,96,0,112,0, + 48,0,48,0,56,0,24,0,28,0,12,0,14,0,6,0, + 3,0,3,128,1,192,0,224,0,64,11,45,90,18,2,246, + 64,0,96,0,112,0,56,0,28,0,12,0,14,0,6,0, + 3,0,3,0,3,128,1,128,1,192,0,192,0,192,0,192, + 0,224,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,224,0,192,0,192, + 0,192,1,128,1,128,3,128,3,0,7,0,6,0,14,0, + 12,0,24,0,56,0,112,0,224,0,18,20,60,25,4,14, + 0,224,0,1,224,0,1,224,0,1,224,0,96,195,128,240, + 135,192,248,143,192,124,159,128,7,248,0,1,224,0,1,224, + 0,6,184,0,124,143,128,248,135,192,240,195,192,97,193,128, + 1,224,0,1,224,0,1,224,0,0,224,0,41,41,246,45, + 2,248,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,255,255,255,255,255,128,255,255,255,255,255,128, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,7,15,15,14,4,247,120,252, + 252,254,126,6,6,6,4,12,8,24,48,96,64,12,3,6, + 18,3,11,255,240,255,240,255,240,6,5,5,14,4,1,120, + 252,252,252,120,16,46,92,22,3,246,0,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,128,1,128,1,128,3,0,3,0, + 3,0,6,0,6,0,6,0,12,0,12,0,12,0,24,0, + 24,0,24,0,48,0,48,0,48,0,96,0,96,0,96,0, + 96,0,192,0,192,0,23,34,102,28,2,0,0,124,0,1, + 199,0,7,1,128,6,0,192,14,0,224,28,0,112,60,0, + 120,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,120,0, + 60,120,0,60,120,0,60,120,0,60,60,0,120,60,0,120, + 28,0,112,28,0,112,14,0,224,7,1,192,3,131,128,0, + 254,0,17,34,102,28,6,0,0,64,0,0,64,0,0,192, + 0,0,192,0,1,192,0,7,192,0,255,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,255,255,128,255,255,128,21,34, + 102,28,4,0,3,252,0,14,31,0,16,7,192,32,3,224, + 96,1,240,64,1,240,192,0,240,192,0,248,224,0,248,252, + 0,248,254,0,248,126,0,248,126,0,240,62,1,240,0,1, + 224,0,3,192,0,3,128,0,7,0,0,14,0,0,28,0, + 0,112,0,0,224,0,1,192,0,3,0,0,6,0,16,12, + 0,16,24,0,16,16,0,16,48,0,48,48,0,112,127,255, + 240,127,255,240,127,255,240,127,255,240,21,34,102,28,4,0, + 3,248,0,14,31,0,24,7,128,48,3,192,112,3,192,120, + 1,224,124,1,224,126,1,224,126,1,224,60,1,224,0,1, + 224,0,3,192,0,3,192,0,7,128,0,14,0,15,248,0, + 31,143,0,14,3,128,0,3,224,0,1,224,0,1,240,0, + 0,248,0,0,248,0,0,248,60,0,248,126,0,248,254,0, + 248,254,0,248,252,1,240,224,1,240,224,3,224,96,3,192, + 48,15,0,15,254,0,23,34,102,28,3,0,0,1,128,0, + 1,128,0,3,128,0,7,128,0,7,128,0,15,128,0,31, + 128,0,31,128,0,55,128,0,119,128,0,231,128,0,199,128, + 1,199,128,3,135,128,3,7,128,6,7,128,14,7,128,12, + 7,128,24,7,128,56,7,128,48,7,128,96,7,128,224,7, + 128,255,255,254,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,3,255,254,3, + 255,254,21,35,105,28,4,0,48,0,64,60,3,192,63,255, + 128,63,255,0,63,252,0,55,240,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,51, + 254,0,60,7,128,56,3,192,48,1,224,48,1,240,48,1, + 240,0,0,240,0,0,248,0,0,248,0,0,248,0,0,248, + 60,0,248,126,0,248,254,0,248,254,0,240,252,1,240,248, + 1,224,240,1,224,112,3,192,112,7,128,60,31,0,15,252, + 0,21,34,102,28,4,0,0,126,0,1,193,128,3,128,192, + 7,0,64,14,0,224,28,1,224,28,3,224,56,3,224,56, + 3,192,120,0,0,120,0,0,120,0,0,120,0,0,240,126, + 0,241,255,128,243,131,192,247,1,224,254,1,240,252,0,240, + 252,0,240,248,0,248,248,0,120,248,0,120,248,0,120,120, + 0,120,120,0,120,120,0,248,120,0,240,56,0,240,60,0, + 224,28,1,224,14,3,192,7,7,128,1,254,0,19,34,102, + 28,5,0,255,255,224,255,255,224,255,255,224,255,255,224,224, + 0,224,192,0,64,128,0,64,128,0,192,128,0,128,128,1, + 128,0,1,128,0,3,0,0,2,0,0,6,0,0,12,0, + 0,24,0,0,24,0,0,48,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,224,0,1,224,0,3,224,0,3,224, + 0,3,224,0,7,240,0,7,240,0,7,240,0,7,240,0, + 7,240,0,3,240,0,3,224,0,23,34,102,28,3,0,1, + 254,0,7,135,128,30,1,192,56,0,224,120,0,112,112,0, + 112,240,0,56,240,0,56,240,0,56,240,0,56,248,0,56, + 252,0,112,126,0,112,127,192,224,63,241,192,31,255,0,7, + 255,128,7,255,224,12,63,248,56,7,252,112,1,252,112,0, + 126,224,0,62,224,0,62,224,0,62,224,0,30,224,0,30, + 224,0,28,96,0,60,112,0,56,48,0,120,24,0,240,14, + 1,192,3,255,0,21,34,102,28,4,0,1,248,0,7,142, + 0,14,3,0,28,1,128,56,1,192,120,1,224,120,0,224, + 120,0,240,240,0,240,240,0,240,240,0,240,240,0,248,240, + 0,248,248,0,248,120,1,248,120,1,248,120,3,248,60,7, + 120,30,14,120,15,252,120,3,240,120,0,0,240,0,0,240, + 0,0,240,0,0,240,60,0,224,124,0,224,124,1,192,124, + 1,192,120,3,128,112,3,0,56,6,0,28,28,0,15,248, + 0,6,22,22,14,4,1,120,252,252,252,120,0,0,0,0, + 0,0,0,0,0,0,0,0,120,252,252,252,120,7,31,31, + 14,4,248,120,252,252,252,120,0,0,0,0,0,0,0,0, + 0,0,0,120,252,252,254,126,14,6,6,4,12,8,24,48, + 96,64,38,40,200,46,4,249,0,0,0,0,28,0,0,0, + 0,120,0,0,0,1,240,0,0,0,7,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,192,0, + 0,0,15,0,0,0,0,62,0,0,0,0,248,0,0,0, + 1,224,0,0,0,7,128,0,0,0,30,0,0,0,0,120, + 0,0,0,1,224,0,0,0,7,192,0,0,0,31,0,0, + 0,0,60,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,124,0,0,0,0,31,0,0,0,0,7,128,0,0,0, + 1,224,0,0,0,0,120,0,0,0,0,30,0,0,0,0, + 7,128,0,0,0,3,224,0,0,0,0,248,0,0,0,0, + 60,0,0,0,0,15,0,0,0,0,3,192,0,0,0,0, + 240,0,0,0,0,60,0,0,0,0,31,0,0,0,0,7, + 192,0,0,0,1,224,0,0,0,0,120,0,0,0,0,28, + 41,11,66,45,2,7,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,128,255,255,255,255,255,128,38,40,200,46,4,249,224,0, + 0,0,0,120,0,0,0,0,62,0,0,0,0,15,128,0, + 0,0,3,192,0,0,0,0,240,0,0,0,0,60,0,0, + 0,0,15,0,0,0,0,3,192,0,0,0,1,240,0,0, + 0,0,124,0,0,0,0,30,0,0,0,0,7,128,0,0, + 0,1,224,0,0,0,0,120,0,0,0,0,30,0,0,0, + 0,15,128,0,0,0,3,224,0,0,0,0,240,0,0,0, + 0,60,0,0,0,0,60,0,0,0,0,248,0,0,0,3, + 224,0,0,0,7,128,0,0,0,30,0,0,0,0,120,0, + 0,0,1,224,0,0,0,7,128,0,0,0,31,0,0,0, + 0,124,0,0,0,0,240,0,0,0,3,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,224,0, + 0,0,15,128,0,0,0,30,0,0,0,0,120,0,0,0, + 0,224,0,0,0,0,18,34,102,23,3,0,7,240,0,28, + 60,0,48,15,0,96,7,128,192,7,128,192,3,192,192,3, + 192,248,3,192,252,3,192,124,7,192,56,7,128,0,15,128, + 0,31,0,0,62,0,0,124,0,0,240,0,0,224,0,1, + 192,0,3,0,0,6,0,0,14,8,0,12,8,0,12,8, + 0,12,8,0,6,16,0,3,224,0,0,0,0,0,0,0, + 0,0,0,1,224,0,3,240,0,3,240,0,3,240,0,1, + 224,0,35,36,180,40,2,0,0,3,254,0,0,0,30,7, + 192,0,0,112,0,112,0,1,192,0,24,0,3,128,0,12, + 0,7,0,0,6,0,14,0,0,3,0,28,0,120,1,0, + 24,1,196,225,128,56,7,7,224,128,48,14,3,224,192,112, + 12,3,192,192,96,28,3,192,64,96,56,3,192,96,224,56, + 3,192,96,192,120,3,128,96,192,112,7,128,96,192,112,7, + 128,96,192,240,7,128,96,192,224,7,0,96,192,224,15,0, + 224,192,224,15,0,192,192,224,14,0,192,96,224,30,1,128, + 96,224,62,1,128,96,224,62,3,0,96,96,78,6,0,48, + 49,143,12,0,48,31,7,240,0,24,0,0,0,0,12,0, + 0,0,0,6,0,0,0,0,3,0,0,0,0,1,192,0, + 112,0,0,112,1,192,0,0,31,255,0,0,34,35,175,37, + 2,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,15,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,0, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,28,35,140,34,3,0,255,255,240,0,7,192,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,1,224,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,3,192,7,128,3,128,7, + 128,7,0,7,128,30,0,7,255,240,0,7,128,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,3,224,7, + 128,1,224,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,3,224,7, + 128,3,224,7,128,7,192,7,128,15,128,7,192,62,0,255, + 255,240,0,26,36,144,32,3,0,0,63,0,128,0,225,224, + 128,3,128,113,128,7,0,63,128,14,0,31,128,30,0,15, + 128,28,0,7,128,60,0,3,128,60,0,3,128,124,0,3, + 128,120,0,1,128,120,0,1,128,120,0,0,128,248,0,0, + 128,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,120,0,0,192,120,0,0,192,120,0,0, + 192,60,0,0,192,60,0,0,128,60,0,1,128,28,0,1, + 128,14,0,3,0,14,0,3,0,7,0,6,0,3,128,12, + 0,0,224,56,0,0,127,224,0,33,35,175,38,3,0,255, + 255,252,0,0,7,192,15,0,0,7,128,3,192,0,7,128, + 0,224,0,7,128,0,112,0,7,128,0,120,0,7,128,0, + 60,0,7,128,0,62,0,7,128,0,30,0,7,128,0,31, + 0,7,128,0,31,0,7,128,0,15,0,7,128,0,15,0, + 7,128,0,15,128,7,128,0,15,128,7,128,0,15,128,7, + 128,0,15,128,7,128,0,15,128,7,128,0,15,128,7,128, + 0,15,128,7,128,0,15,128,7,128,0,15,128,7,128,0, + 15,0,7,128,0,31,0,7,128,0,31,0,7,128,0,30, + 0,7,128,0,30,0,7,128,0,60,0,7,128,0,60,0, + 7,128,0,120,0,7,128,0,112,0,7,128,0,224,0,7, + 128,3,192,0,7,192,15,0,0,255,255,252,0,0,28,35, + 140,34,3,0,255,255,255,240,7,192,7,240,7,128,1,240, + 7,128,0,240,7,128,0,112,7,128,0,112,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,16,7,128,32,16, + 7,128,32,16,7,128,32,0,7,128,96,0,7,128,96,0, + 7,128,96,0,7,128,224,0,7,255,224,0,7,129,224,0, + 7,128,96,0,7,128,96,0,7,128,96,0,7,128,32,16, + 7,128,32,16,7,128,32,16,7,128,0,16,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,112,7,128,0,112, + 7,128,0,240,7,128,1,240,255,255,255,240,255,255,255,240, + 27,35,140,34,4,0,255,255,255,224,15,128,15,224,7,128, + 3,224,7,128,1,224,7,128,0,224,7,128,0,224,7,128, + 0,96,7,128,0,96,7,128,0,96,7,128,0,32,7,128, + 32,32,7,128,32,32,7,128,32,0,7,128,96,0,7,128, + 96,0,7,128,96,0,7,128,224,0,7,255,224,0,7,129, + 224,0,7,128,96,0,7,128,96,0,7,128,96,0,7,128, + 32,0,7,128,32,0,7,128,32,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,15,128,0,0,255,254, + 0,0,30,36,144,34,3,0,0,63,128,192,0,224,224,192, + 3,128,56,192,7,0,29,192,14,0,15,192,14,0,7,192, + 28,0,7,192,60,0,3,192,60,0,3,192,124,0,1,192, + 120,0,1,192,120,0,0,192,120,0,0,192,248,0,0,192, + 248,0,0,0,248,0,0,0,248,0,0,0,248,0,0,0, + 248,0,255,252,248,0,255,252,248,0,7,192,248,0,7,192, + 248,0,7,192,248,0,7,192,120,0,7,192,120,0,7,192, + 124,0,7,192,60,0,7,192,60,0,7,192,28,0,15,192, + 30,0,15,192,14,0,28,192,7,0,24,192,3,0,48,192, + 1,192,224,192,0,127,128,192,33,35,175,38,3,0,255,252, + 31,255,128,7,192,0,248,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,255, + 255,240,0,7,128,0,240,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,128, + 0,240,0,7,192,0,248,0,255,252,31,255,128,14,35,70, + 19,3,0,255,252,7,192,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,192,255,252,23,35,105,27,2,0,0, + 127,254,0,7,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,60,3,192,126,3,192,254,3,192, + 254,3,192,252,3,192,224,3,128,224,7,128,96,7,0,112, + 14,0,56,28,0,15,248,0,32,35,140,37,3,0,255,252, + 63,254,7,192,15,240,7,128,7,192,7,128,3,128,7,128, + 7,0,7,128,6,0,7,128,12,0,7,128,28,0,7,128, + 56,0,7,128,112,0,7,128,224,0,7,129,192,0,7,129, + 128,0,7,131,128,0,7,135,128,0,7,143,192,0,7,155, + 224,0,7,179,224,0,7,225,240,0,7,193,240,0,7,128, + 248,0,7,128,248,0,7,128,124,0,7,128,124,0,7,128, + 62,0,7,128,62,0,7,128,31,0,7,128,31,0,7,128, + 15,128,7,128,15,192,7,128,7,192,7,128,7,224,7,128, + 3,224,7,192,7,248,255,252,127,255,27,35,140,33,3,0, + 255,254,0,0,7,192,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,32,7,128,0,96, + 7,128,0,96,7,128,0,96,7,128,0,96,7,128,0,224, + 7,128,0,224,7,128,0,224,7,128,1,224,7,128,3,224, + 7,128,7,224,255,255,255,224,255,255,255,224,36,35,175,41, + 3,0,255,224,0,63,240,7,224,0,62,0,7,224,0,126, + 0,7,240,0,94,0,7,240,0,94,0,6,240,0,222,0, + 6,248,0,222,0,6,248,0,158,0,6,120,0,158,0,6, + 120,1,158,0,6,124,1,158,0,6,60,1,30,0,6,60, + 1,30,0,6,62,3,30,0,6,62,3,30,0,6,30,2, + 30,0,6,30,2,30,0,6,31,6,30,0,6,15,4,30, + 0,6,15,4,30,0,6,15,140,30,0,6,7,140,30,0, + 6,7,136,30,0,6,7,200,30,0,6,7,216,30,0,6, + 3,216,30,0,6,3,208,30,0,6,3,240,30,0,6,1, + 240,30,0,6,1,240,30,0,6,1,224,30,0,6,0,224, + 30,0,15,0,224,30,0,31,128,192,62,0,255,240,195,255, + 240,33,36,180,38,3,255,255,192,7,255,128,7,192,0,252, + 0,7,224,0,120,0,7,240,0,48,0,7,240,0,48,0, + 7,248,0,48,0,6,248,0,48,0,6,124,0,48,0,6, + 126,0,48,0,6,62,0,48,0,6,31,0,48,0,6,31, + 0,48,0,6,15,128,48,0,6,15,192,48,0,6,7,192, + 48,0,6,3,224,48,0,6,3,224,48,0,6,1,240,48, + 0,6,1,248,48,0,6,0,248,48,0,6,0,124,48,0, + 6,0,124,48,0,6,0,62,48,0,6,0,63,48,0,6, + 0,31,48,0,6,0,15,176,0,6,0,15,176,0,6,0, + 7,240,0,6,0,7,240,0,6,0,3,240,0,6,0,1, + 240,0,6,0,1,240,0,15,0,0,240,0,31,128,0,112, + 0,255,240,0,112,0,0,0,0,48,0,28,36,144,33,3, + 0,0,31,128,0,0,240,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,28,0,3, + 128,60,0,3,192,60,0,3,192,124,0,3,224,120,0,1, + 224,120,0,1,224,248,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,124,0,3,224,124,0,3,224,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,15, + 0,7,0,14,0,3,128,28,0,0,224,112,0,0,127,224, + 0,28,35,140,33,3,0,255,255,240,0,7,192,30,0,7, + 128,7,128,7,128,7,192,7,128,3,224,7,128,3,224,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,3,224,7,128,3,224,7, + 128,7,192,7,128,7,128,7,128,30,0,7,255,248,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,192,0,0,255, + 254,0,0,28,44,176,33,3,248,0,31,128,0,0,240,240, + 0,1,192,56,0,3,128,28,0,7,0,14,0,14,0,7, + 0,30,0,7,128,28,0,3,128,60,0,3,192,60,0,3, + 192,124,0,3,224,120,0,1,224,120,0,1,224,248,0,1, + 224,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,120,0,1,224,120,0,1,224,124,0,3, + 224,124,0,3,224,60,15,3,192,60,25,195,192,30,48,199, + 128,14,96,231,128,15,96,111,0,7,96,126,0,3,224,124, + 16,0,240,120,16,0,127,240,16,0,0,112,16,0,0,112, + 16,0,0,120,48,0,0,120,32,0,0,124,96,0,0,63, + 192,0,0,63,192,0,0,15,0,30,35,140,35,3,0,255, + 255,248,0,7,192,62,0,7,128,15,128,7,128,7,192,7, + 128,7,192,7,128,3,224,7,128,3,224,7,128,3,224,7, + 128,3,224,7,128,3,224,7,128,3,192,7,128,7,192,7, + 128,7,128,7,128,15,0,7,128,60,0,7,255,224,0,7, + 128,240,0,7,128,56,0,7,128,28,0,7,128,30,0,7, + 128,30,0,7,128,31,0,7,128,15,0,7,128,15,0,7, + 128,15,0,7,128,15,0,7,128,15,128,7,128,15,132,7, + 128,15,132,7,128,15,132,7,128,15,132,7,128,15,140,7, + 128,7,248,7,192,7,248,255,254,3,240,23,36,108,30,4, + 0,3,240,0,14,28,24,56,7,24,48,3,248,112,1,248, + 96,0,248,224,0,120,224,0,56,224,0,56,224,0,56,224, + 0,24,240,0,24,248,0,8,126,0,8,127,192,0,63,240, + 0,31,252,0,15,255,128,3,255,224,0,255,240,128,63,248, + 128,7,252,128,1,252,192,0,126,192,0,62,192,0,30,224, + 0,14,224,0,14,240,0,14,240,0,14,248,0,12,252,0, + 28,222,0,24,199,0,48,195,128,96,128,255,192,28,35,140, + 35,4,0,255,255,255,240,254,15,131,240,248,15,1,240,240, + 15,0,240,224,15,0,112,192,15,0,112,192,15,0,48,192, + 15,0,48,192,15,0,48,128,15,0,16,128,15,0,16,128, + 15,0,16,128,15,0,16,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,128,0,3,255,254,0,34, + 35,175,39,3,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,34,36,180,37,2,255,255,255,7,255,192,15, + 240,0,126,0,3,224,0,56,0,3,224,0,56,0,3,240, + 0,48,0,1,240,0,48,0,1,240,0,48,0,0,248,0, + 96,0,0,248,0,96,0,0,248,0,96,0,0,124,0,192, + 0,0,124,0,192,0,0,124,0,192,0,0,62,0,192,0, + 0,62,1,128,0,0,62,1,128,0,0,31,1,128,0,0, + 31,3,0,0,0,31,3,0,0,0,15,131,0,0,0,15, + 134,0,0,0,15,134,0,0,0,7,198,0,0,0,7,204, + 0,0,0,3,204,0,0,0,3,236,0,0,0,3,232,0, + 0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0, + 0,0,240,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,96,0,0,0,0,96,0,0,0,0,96,0,0,49,36, + 252,52,2,255,255,254,127,255,15,255,128,15,240,15,248,1, + 248,0,3,224,3,240,0,240,0,3,224,3,224,0,96,0, + 3,224,3,240,0,96,0,1,240,3,240,0,96,0,1,240, + 3,240,0,192,0,1,240,3,240,0,192,0,0,240,7,248, + 0,192,0,0,248,6,248,0,128,0,0,248,6,248,1,128, + 0,0,248,6,124,1,128,0,0,120,14,124,1,128,0,0, + 124,12,124,3,0,0,0,124,12,62,3,0,0,0,60,28, + 62,3,0,0,0,60,24,62,6,0,0,0,60,24,30,6, + 0,0,0,62,24,31,6,0,0,0,30,56,31,12,0,0, + 0,30,48,31,12,0,0,0,30,48,15,140,0,0,0,15, + 48,15,152,0,0,0,15,112,15,152,0,0,0,15,96,7, + 216,0,0,0,15,96,7,208,0,0,0,7,224,7,240,0, + 0,0,7,192,3,240,0,0,0,7,192,3,240,0,0,0, + 3,192,3,224,0,0,0,3,192,3,224,0,0,0,3,128, + 1,224,0,0,0,1,128,1,192,0,0,0,1,128,1,192, + 0,0,0,1,128,0,192,0,0,0,1,0,0,128,0,0, + 33,35,175,36,2,0,127,255,31,255,0,3,240,3,240,0, + 1,240,1,224,0,1,240,1,192,0,0,248,1,128,0,0, + 120,3,0,0,0,124,3,0,0,0,60,6,0,0,0,62, + 14,0,0,0,31,12,0,0,0,31,24,0,0,0,15,152, + 0,0,0,15,176,0,0,0,7,224,0,0,0,7,224,0, + 0,0,3,224,0,0,0,3,224,0,0,0,1,240,0,0, + 0,3,240,0,0,0,3,248,0,0,0,6,248,0,0,0, + 14,124,0,0,0,12,124,0,0,0,24,62,0,0,0,56, + 62,0,0,0,48,31,0,0,0,96,31,0,0,0,224,15, + 128,0,0,192,15,128,0,1,128,7,192,0,3,128,7,192, + 0,3,128,3,224,0,7,128,3,240,0,31,192,3,248,0, + 255,248,63,255,128,32,35,140,35,2,0,255,254,15,255,15, + 224,1,248,7,224,0,240,3,224,0,96,3,240,0,64,1, + 240,0,192,1,248,0,128,0,248,0,128,0,252,1,0,0, + 124,3,0,0,62,2,0,0,62,6,0,0,31,4,0,0, + 31,12,0,0,15,136,0,0,7,216,0,0,7,208,0,0, + 3,240,0,0,3,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,240,0,0,127,255,192,26,35,140,32,3,0,63,255,255, + 192,63,128,15,128,62,0,31,128,60,0,31,0,56,0,62, + 0,56,0,62,0,48,0,124,0,48,0,252,0,96,0,248, + 0,96,1,240,0,64,3,240,0,64,3,224,0,0,7,192, + 0,0,7,192,0,0,15,128,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,252,0, + 0,0,248,0,64,1,240,0,64,3,240,0,64,3,224,0, + 192,7,192,0,192,7,192,0,192,15,128,1,192,31,128,1, + 192,31,0,3,192,62,0,3,192,126,0,7,192,124,0,15, + 128,248,0,63,128,255,255,255,128,10,45,90,19,6,247,255, + 192,254,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,254,0,255,192,16,46,92,22,3,246,192, + 0,192,0,192,0,96,0,96,0,96,0,48,0,48,0,48, + 0,24,0,24,0,24,0,12,0,12,0,12,0,6,0,6, + 0,6,0,2,0,3,0,3,0,3,0,1,128,1,128,1, + 128,0,192,0,192,0,192,0,96,0,96,0,96,0,48,0, + 48,0,48,0,24,0,24,0,24,0,12,0,12,0,12,0, + 6,0,6,0,6,0,3,0,3,0,3,10,45,90,19,3, + 247,255,192,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,31,192,255,192,22,18,54,28,3, + 17,0,16,0,0,48,0,0,56,0,0,120,0,0,108,0, + 0,206,0,1,198,0,1,131,0,3,3,0,7,1,128,6, + 1,192,14,0,192,28,0,96,24,0,112,56,0,48,48,0, + 56,96,0,24,224,0,12,25,2,8,25,0,248,255,255,255, + 128,255,255,255,128,8,9,9,22,4,25,224,240,240,120,60, + 12,6,3,1,21,22,66,24,2,1,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,22,35,105,25, + 1,0,255,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,31,128,15,32,224,15, + 64,240,15,192,112,15,128,120,15,128,120,15,0,120,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,60, + 15,0,60,15,0,60,15,0,120,15,0,120,15,128,120,13, + 128,112,12,192,224,12,96,224,8,63,128,17,22,66,21,2, + 1,7,252,0,14,6,0,28,3,0,56,3,0,56,3,128, + 120,15,128,120,15,128,240,15,128,240,7,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,56,1,0,56,1,0,28,2,0,14,6,0, + 7,248,0,22,35,105,25,2,0,0,63,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 15,227,192,28,19,192,60,11,192,56,15,192,120,7,192,120, + 7,192,120,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,120,3,192, + 120,3,192,120,7,192,56,7,192,60,15,192,28,27,192,7, + 243,252,18,22,66,22,2,1,7,248,0,14,28,0,28,14, + 0,56,15,0,56,7,128,120,7,128,120,7,128,240,7,192, + 240,7,192,240,7,192,255,255,192,240,0,0,240,0,0,240, + 0,0,240,0,128,120,0,128,120,0,128,120,1,128,56,1, + 0,28,3,0,14,6,0,7,252,0,16,35,70,16,1,0, + 0,248,3,198,7,3,15,7,14,15,14,15,30,15,30,6, + 30,0,30,0,30,0,30,0,30,0,255,240,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,255,240,23,33,99,27,3,246,7,252,124,30, + 14,206,60,7,142,124,7,158,120,3,222,120,3,192,120,3, + 192,120,3,192,120,3,192,120,3,192,60,7,128,28,7,128, + 14,14,0,3,248,0,28,0,0,96,0,0,192,0,0,192, + 0,0,224,0,0,255,255,128,127,255,224,15,255,240,28,0, + 112,48,0,56,96,0,24,192,0,24,192,0,24,192,0,24, + 192,0,48,96,0,48,120,0,96,30,7,192,3,254,0,24, + 35,105,27,1,0,255,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,15,192,15, + 48,240,15,32,112,15,64,120,15,128,120,15,128,120,15,0, + 120,15,0,120,15,0,120,15,0,120,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,120,15,0,120,15,0,120,15, + 0,120,15,0,120,15,0,120,15,0,120,255,195,255,10,34, + 68,14,2,0,28,0,62,0,62,0,62,0,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,255,192,13,45,90,16,254,245,0,112, + 0,248,0,248,0,248,0,112,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,248,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,240,120,240,120,240,112, + 224,240,96,224,115,192,31,0,22,35,105,24,1,0,254,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,15,252,30,3,224,30,1,128,30,3, + 0,30,6,0,30,6,0,30,12,0,30,24,0,30,48,0, + 30,120,0,30,248,0,30,188,0,31,190,0,31,30,0,30, + 15,0,30,15,128,30,7,128,30,3,192,30,3,224,30,1, + 224,30,3,240,255,207,252,11,35,70,13,1,0,254,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,255,224,36,22,110,40,2,1,254,63,129,252,0,30,97, + 195,14,0,30,193,230,15,0,30,128,228,7,128,31,0,248, + 7,128,31,0,248,7,128,30,0,240,7,128,30,0,240,7, + 128,30,0,240,7,128,30,0,240,7,128,30,0,240,7,128, + 30,0,240,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,255,199,254,63,240,23,22,66,27,2,1,254,31,128, + 30,97,224,30,192,224,30,128,240,31,0,240,31,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,255,199,254,19, + 22,66,24,2,1,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,22,33,99,25,1,246,254,63,128, + 30,97,192,30,192,224,31,128,112,31,0,120,31,0,120,30, + 0,120,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,120,30,0,120, + 31,0,120,31,0,112,31,128,224,30,192,192,30,127,128,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,255,224,0, + 22,33,99,25,2,246,7,240,64,28,24,192,28,12,192,56, + 12,192,120,7,192,120,7,192,120,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,120,3,192,120,3,192,120,7,192,56,7,192,60, + 15,192,28,27,192,7,243,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,31,252,17,22,66,20,2,1,254, + 31,0,30,35,128,30,67,128,30,207,128,30,143,128,31,143, + 0,31,2,0,31,0,0,31,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,22,3,1,31,226,0,112,50,0,96,30,0, + 192,14,0,192,6,0,224,2,0,240,2,0,252,0,0,127, + 0,0,63,192,0,31,248,0,7,254,0,128,255,0,192,31, + 0,192,7,128,224,3,128,224,1,128,240,1,128,240,1,128, + 248,3,0,198,7,0,131,252,0,14,32,64,17,1,0,2, + 0,2,0,2,0,2,0,2,0,6,0,6,0,6,0,14, + 0,30,0,255,248,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,4,30,4,30,4,30,12,15,8,15,248,7,240,23, + 22,66,27,2,0,254,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,30,1,240,30,1,240,30,2,240,14,6, + 240,15,12,240,3,240,254,24,23,69,26,1,255,255,225,255, + 31,0,124,15,0,48,15,0,48,15,0,32,7,128,96,7, + 128,96,3,192,64,3,192,192,1,192,192,1,224,128,1,225, + 128,0,241,128,0,241,0,0,113,0,0,123,0,0,58,0, + 0,62,0,0,62,0,0,28,0,0,28,0,0,12,0,0, + 8,0,36,23,115,38,1,255,255,231,255,31,240,31,1,248, + 7,128,31,0,240,3,0,15,0,120,3,0,15,0,120,2, + 0,7,128,120,6,0,7,128,252,6,0,3,128,252,4,0, + 3,192,188,12,0,3,192,158,12,0,1,225,158,8,0,1, + 225,14,24,0,0,225,15,24,0,0,243,15,16,0,0,242, + 7,48,0,0,114,7,176,0,0,126,7,160,0,0,62,3, + 224,0,0,60,3,192,0,0,28,1,192,0,0,28,1,192, + 0,0,24,1,128,0,0,8,0,128,0,22,22,66,26,2, + 0,255,207,248,31,3,192,31,3,128,15,3,0,7,131,0, + 7,198,0,3,196,0,1,236,0,1,248,0,0,240,0,0, + 112,0,0,120,0,0,124,0,0,220,0,1,158,0,1,15, + 0,3,15,0,6,7,128,4,7,192,12,3,192,28,3,224, + 255,15,252,24,33,99,26,1,245,255,225,255,31,0,120,15, + 0,48,15,0,48,7,0,32,7,128,96,7,128,96,3,192, + 64,3,192,192,3,192,192,1,224,128,1,225,128,0,225,128, + 0,241,128,0,241,0,0,115,0,0,123,0,0,122,0,0, + 62,0,0,62,0,0,60,0,0,28,0,0,28,0,0,24, + 0,0,24,0,0,24,0,24,48,0,60,48,0,60,48,0, + 60,96,0,56,96,0,31,192,0,15,0,0,17,22,66,22, + 2,0,255,255,128,248,7,128,224,15,0,224,31,0,192,30, + 0,192,60,0,128,124,0,128,120,0,0,240,0,1,240,0, + 1,224,0,3,192,0,7,192,0,7,128,128,15,0,128,31, + 0,128,30,0,128,60,1,128,124,1,128,120,3,128,240,15, + 128,255,255,128,11,45,90,21,6,247,0,224,1,128,7,0, + 14,0,12,0,28,0,28,0,28,0,28,0,30,0,30,0, + 14,0,14,0,15,0,15,0,7,0,7,0,7,0,7,0, + 6,0,4,0,24,0,224,0,56,0,12,0,6,0,6,0, + 7,0,7,0,7,0,15,0,15,0,15,0,14,0,30,0, + 30,0,28,0,28,0,28,0,28,0,12,0,12,0,6,0, + 3,128,0,224,2,46,46,14,6,246,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,45,90,20,4,247,192,0, + 112,0,28,0,12,0,6,0,7,0,7,0,7,0,7,0, + 15,0,15,0,14,0,30,0,30,0,30,0,28,0,28,0, + 28,0,28,0,12,0,4,0,3,0,0,224,3,0,6,0, + 12,0,28,0,28,0,28,0,28,0,30,0,30,0,30,0, + 14,0,15,0,15,0,7,0,7,0,7,0,7,0,6,0, + 6,0,12,0,56,0,224,0,28,9,36,32,2,8,31,128, + 0,192,127,240,0,96,127,252,0,48,227,255,0,48,192,127, + 224,48,192,31,248,112,192,3,255,224,96,0,255,192,48,0, + 31,128,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,14,0,0,6,33,33,14,4,246,120, + 252,252,252,120,0,0,48,48,48,48,48,48,48,48,48,48, + 48,120,120,120,120,120,120,248,252,252,252,252,252,252,252,120, + 17,34,102,28,5,250,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,7,252,0,14,198,0,28,195, + 0,56,195,128,120,195,128,120,207,128,120,207,128,248,207,128, + 240,199,0,240,192,0,240,192,0,240,192,0,240,192,0,240, + 192,0,248,192,128,120,192,128,120,192,128,120,193,128,56,193, + 0,28,195,0,14,198,0,7,252,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,28,34,136,35, + 3,0,0,0,126,0,0,1,227,128,0,3,128,192,0,7, + 0,192,0,14,0,224,0,14,1,224,0,28,3,224,0,28, + 3,224,0,60,3,192,0,60,0,128,0,60,0,0,0,60, + 0,0,0,60,0,0,0,60,0,0,0,60,0,0,31,252, + 0,0,0,127,248,0,0,124,0,0,0,124,0,0,0,60, + 0,0,0,60,0,0,0,60,0,0,0,60,0,0,0,60, + 0,0,0,56,0,0,0,56,0,16,62,56,0,32,99,240, + 0,32,193,240,0,96,128,120,0,64,128,254,0,192,128,159, + 255,128,193,7,255,0,126,1,254,0,24,24,72,28,2,5, + 64,0,2,224,126,7,115,255,206,63,129,252,30,0,120,28, + 0,56,56,0,24,48,0,12,48,0,12,96,0,6,96,0, + 6,96,0,6,96,0,6,96,0,6,96,0,6,112,0,12, + 48,0,12,56,0,28,28,0,56,30,0,120,63,129,252,115, + 255,206,224,126,7,64,0,2,27,33,132,29,1,0,255,224, + 127,224,31,0,15,0,15,0,6,0,15,128,6,0,7,128, + 12,0,7,192,12,0,3,192,24,0,3,224,24,0,1,224, + 48,0,1,240,32,0,0,240,96,0,0,248,64,0,0,248, + 192,0,0,124,128,0,0,125,128,0,0,63,0,0,0,63, + 0,0,15,255,252,0,0,30,0,0,0,30,0,0,0,30, + 0,0,15,255,252,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,30,0,0,0,30, + 0,0,0,30,0,0,0,30,0,0,0,31,0,0,3,255, + 240,0,2,44,44,14,6,248,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,0,0,0,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,18,43,129,31,5,247,1,240,0,6,24,0, + 12,12,0,24,30,0,56,62,0,56,62,0,56,62,0,56, + 8,0,60,0,0,30,0,0,31,0,0,15,128,0,7,192, + 0,15,224,0,25,240,0,48,252,0,96,126,0,64,63,0, + 192,15,128,192,7,128,192,3,192,224,1,192,240,0,192,120, + 0,192,124,0,192,62,0,128,31,1,128,15,131,0,7,198, + 0,3,248,0,1,240,0,0,248,0,0,124,0,0,60,0, + 0,30,0,0,14,0,30,14,0,62,14,0,62,14,0,60, + 12,0,24,28,0,12,56,0,7,224,0,14,5,10,22,4, + 27,112,56,248,124,248,124,248,124,112,56,35,36,180,40,3, + 0,0,7,252,0,0,0,60,7,128,0,0,224,0,192,0, + 1,128,0,48,0,3,0,0,24,0,4,0,0,12,0,8, + 0,0,6,0,24,1,240,131,0,48,7,28,129,0,32,30, + 7,128,128,96,28,3,128,128,64,56,1,128,64,64,120,1, + 128,64,192,120,0,128,64,128,120,0,128,96,128,248,0,0, + 32,128,240,0,0,32,128,240,0,0,32,128,240,0,0,32, + 128,240,0,0,32,128,240,0,0,32,128,240,0,0,32,128, + 248,0,128,96,64,120,0,128,64,64,120,0,128,64,96,56, + 1,128,192,32,60,1,0,128,48,30,3,1,128,16,15,14, + 3,0,24,3,248,2,0,12,0,0,6,0,6,0,0,12, + 0,3,128,0,56,0,0,192,0,96,0,0,120,3,192,0, + 0,31,254,0,0,13,17,34,19,3,17,62,0,99,0,193, + 128,225,128,225,128,3,128,13,128,49,128,113,128,225,128,225, + 136,225,136,247,152,120,240,0,0,0,0,255,240,13,19,38, + 23,5,1,4,0,12,24,24,48,48,32,112,96,96,96,96, + 192,224,192,224,192,224,192,224,192,224,192,224,192,96,192,112, + 96,48,96,56,48,24,16,12,0,23,10,30,29,3,8,255, + 255,254,255,255,254,0,0,6,0,0,6,0,0,6,0,0, + 6,0,0,6,0,0,6,0,0,6,0,0,6,12,3,6, + 18,3,11,255,240,255,240,255,240,35,36,180,40,3,0,0, + 7,252,0,0,0,60,7,128,0,0,224,0,192,0,1,128, + 0,48,0,3,0,0,24,0,4,0,0,12,0,8,0,0, + 6,0,25,255,248,3,0,48,60,30,1,0,32,60,15,0, + 128,96,60,7,128,128,64,60,7,128,64,64,60,7,128,64, + 192,60,7,128,64,128,60,7,128,96,128,60,15,0,32,128, + 60,30,0,32,128,63,240,0,32,128,60,28,0,32,128,60, + 14,0,32,128,60,7,0,32,128,60,7,0,32,128,60,7, + 128,96,64,60,7,128,64,64,60,7,132,64,64,60,7,132, + 192,32,60,7,136,128,48,60,3,201,128,17,255,129,241,0, + 24,0,0,2,0,12,0,0,6,0,6,0,0,12,0,3, + 0,0,24,0,0,192,0,96,0,0,112,1,192,0,0,31, + 254,0,0,13,2,4,21,4,28,255,248,255,248,14,13,26, + 29,8,21,15,192,56,96,112,48,96,24,192,8,192,12,192, + 12,192,12,192,12,96,24,96,24,56,112,15,192,41,34,204, + 45,2,254,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,255,255,255,255,255,128,255,255,255,255,255,128,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,255,255,255,255,128,255,255,255,255,255,128,14, + 21,42,22,4,13,15,192,49,240,96,120,192,124,192,60,224, + 60,248,60,120,60,48,120,0,112,0,224,1,192,3,128,6, + 0,12,0,48,4,32,4,96,12,127,248,255,248,255,248,14, + 21,42,22,5,13,15,192,56,224,96,112,96,56,112,56,120, + 56,48,56,0,112,0,224,63,128,56,224,0,120,0,56,0, + 60,112,60,248,60,240,60,192,56,192,120,96,240,31,192,8, + 9,9,22,10,25,7,15,15,30,60,48,96,192,128,25,36, + 144,29,3,243,112,1,192,0,240,3,192,0,240,3,224,0, + 240,3,224,0,240,3,224,0,240,3,224,0,240,3,224,0, + 240,3,224,0,240,3,224,0,240,3,224,0,224,3,224,0, + 224,1,192,0,224,1,192,0,96,1,192,0,96,1,192,0, + 96,1,192,0,96,1,128,0,96,3,129,128,112,7,193,128, + 88,15,127,128,79,254,63,128,67,252,31,0,64,0,0,0, + 192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0, + 192,0,0,0,224,0,0,0,224,0,0,0,240,0,0,0, + 240,0,0,0,240,0,0,0,248,0,0,0,120,0,0,0, + 120,0,0,0,20,42,126,26,3,249,7,255,240,31,193,128, + 63,193,128,127,193,128,127,193,128,255,193,128,255,193,128,255, + 193,128,255,193,128,255,193,128,255,193,128,127,193,128,127,193, + 128,63,193,128,15,193,128,0,193,128,0,193,128,0,193,128, + 0,193,128,0,193,128,0,193,128,0,193,128,0,193,128,0, + 193,128,0,193,128,0,193,128,0,193,128,0,193,128,0,193, + 128,0,193,128,0,193,128,0,193,128,0,193,128,0,193,128, + 0,193,128,0,193,128,0,193,128,0,193,128,0,193,128,0, + 193,128,0,193,128,0,193,128,6,6,6,14,4,12,120,252, + 252,252,252,120,10,10,20,21,5,246,8,0,8,0,24,0, + 15,0,3,128,1,192,1,192,1,192,195,128,63,0,11,20, + 40,21,5,14,2,0,6,0,14,0,254,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,14,0,14,0,14,0,255,224,12,17,34,18, + 3,17,15,0,57,192,112,192,96,224,224,96,224,112,224,112, + 224,112,224,112,224,112,96,96,112,224,49,192,31,0,0,0, + 0,0,255,240,13,19,38,23,5,1,1,0,193,128,96,192, + 32,96,48,112,48,48,24,48,24,56,24,56,24,56,24,56, + 24,56,24,56,24,48,48,112,48,96,96,224,64,192,1,128, + 33,35,175,42,5,255,2,0,0,96,0,6,0,0,64,0, + 14,0,0,192,0,254,0,1,128,0,14,0,1,0,0,14, + 0,3,0,0,14,0,2,0,0,14,0,6,0,0,14,0, + 12,0,0,14,0,8,0,0,14,0,24,0,0,14,0,16, + 0,0,14,0,48,0,0,14,0,96,0,0,14,0,96,56, + 0,14,0,192,120,0,14,0,128,120,0,14,1,128,248,0, + 14,3,0,184,0,255,227,1,56,0,0,6,1,56,0,0, + 4,2,56,0,0,12,2,56,0,0,8,4,56,0,0,24, + 12,56,0,0,48,8,56,0,0,32,24,56,0,0,96,31, + 255,128,0,64,0,56,0,0,192,0,56,0,1,128,0,56, + 0,1,128,0,56,0,3,0,0,56,0,2,0,1,255,128, + 6,0,0,0,0,33,35,175,42,5,255,2,0,0,96,0, + 6,0,0,64,0,6,0,0,192,0,14,0,1,128,0,254, + 0,1,128,0,14,0,3,0,0,14,0,2,0,0,14,0, + 6,0,0,14,0,4,0,0,14,0,12,0,0,14,0,24, + 0,0,14,0,16,0,0,14,0,48,0,0,14,0,33,248, + 0,14,0,102,62,0,14,0,204,15,0,14,0,152,15,128, + 14,1,152,7,128,14,1,24,7,128,255,227,31,7,128,0, + 6,31,7,128,0,4,15,7,0,0,12,0,14,0,0,8, + 0,28,0,0,24,0,56,0,0,48,0,112,0,0,48,0, + 192,0,0,96,1,128,0,0,64,2,0,128,0,192,4,0, + 128,1,128,12,1,128,1,128,15,255,0,3,0,15,255,0, + 2,0,31,255,0,6,0,0,0,0,33,35,175,42,5,255, + 15,192,0,48,0,56,224,0,96,0,96,112,0,96,0,96, + 56,0,192,0,112,56,0,128,0,120,56,1,128,0,48,56, + 3,0,0,0,112,3,0,0,0,224,6,0,0,63,128,4, + 0,0,56,224,12,0,0,0,120,24,0,0,0,56,24,0, + 0,0,60,48,0,0,112,60,32,28,0,248,60,96,28,0, + 240,60,192,60,0,192,120,192,92,0,96,241,128,92,0,63, + 193,0,156,0,0,3,1,156,0,0,6,1,28,0,0,6, + 2,28,0,0,12,6,28,0,0,8,4,28,0,0,24,8, + 28,0,0,48,24,28,0,0,48,31,255,128,0,96,0,28, + 0,0,64,0,28,0,0,192,0,28,0,1,128,0,28,0, + 1,128,0,28,0,3,0,1,255,128,2,0,0,0,0,18, + 33,99,24,2,246,1,224,0,3,240,0,3,240,0,3,240, + 0,1,224,0,0,0,0,0,0,0,1,224,0,2,48,0, + 4,24,0,4,24,0,4,24,0,4,24,0,0,48,0,0, + 112,0,0,224,0,1,192,0,7,128,0,15,0,0,30,0, + 0,60,0,0,124,0,0,120,15,0,248,31,128,240,31,192, + 240,15,192,240,0,192,240,0,192,120,0,192,120,1,128,60, + 3,0,15,14,0,3,248,0,34,46,230,37,2,0,0,56, + 0,0,0,0,60,0,0,0,0,60,0,0,0,0,30,0, + 0,0,0,15,0,0,0,0,3,128,0,0,0,1,128,0, + 0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,192,0,0,0,0,192,0,0,0, + 0,224,0,0,0,1,224,0,0,0,1,224,0,0,0,3, + 240,0,0,0,3,240,0,0,0,3,240,0,0,0,6,248, + 0,0,0,6,248,0,0,0,6,248,0,0,0,12,124,0, + 0,0,12,124,0,0,0,12,124,0,0,0,24,62,0,0, + 0,24,62,0,0,0,24,30,0,0,0,48,31,0,0,0, + 48,31,0,0,0,48,15,0,0,0,96,15,128,0,0,96, + 15,128,0,0,96,7,128,0,0,255,255,192,0,0,255,255, + 192,0,0,192,3,192,0,1,128,3,224,0,1,128,3,224, + 0,3,128,1,224,0,3,0,1,240,0,3,0,1,240,0, + 7,0,0,240,0,7,0,0,248,0,31,128,1,252,0,255, + 248,31,255,192,34,46,230,37,2,0,0,0,7,0,0,0, + 0,15,0,0,0,0,15,0,0,0,0,30,0,0,0,0, + 60,0,0,0,0,48,0,0,0,0,96,0,0,0,0,192, + 0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,192,0,0,0,0,192,0,0,0,0,224,0,0, + 0,1,224,0,0,0,1,224,0,0,0,3,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,6,248,0,0,0,6, + 248,0,0,0,6,248,0,0,0,12,124,0,0,0,12,124, + 0,0,0,12,124,0,0,0,24,62,0,0,0,24,62,0, + 0,0,24,30,0,0,0,48,31,0,0,0,48,31,0,0, + 0,48,15,0,0,0,96,15,128,0,0,96,15,128,0,0, + 224,7,128,0,0,255,255,192,0,0,255,255,192,0,1,192, + 3,192,0,1,128,3,224,0,1,128,3,224,0,3,128,1, + 224,0,3,0,1,240,0,3,0,1,240,0,7,0,0,240, + 0,15,128,0,248,0,255,248,31,255,192,255,248,31,255,192, + 34,45,225,37,2,0,0,0,192,0,0,0,1,224,0,0, + 0,3,240,0,0,0,7,56,0,0,0,14,28,0,0,0, + 28,14,0,0,0,48,3,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,192, + 0,0,0,0,224,0,0,0,1,224,0,0,0,1,224,0, + 0,0,3,240,0,0,0,3,240,0,0,0,3,240,0,0, + 0,6,248,0,0,0,6,248,0,0,0,6,248,0,0,0, + 12,124,0,0,0,12,124,0,0,0,12,124,0,0,0,24, + 62,0,0,0,24,62,0,0,0,24,30,0,0,0,48,31, + 0,0,0,48,31,0,0,0,48,15,0,0,0,96,15,128, + 0,0,96,15,128,0,0,96,7,128,0,0,255,255,192,0, + 0,255,255,192,0,0,192,3,192,0,1,128,3,224,0,1, + 128,3,224,0,3,128,1,224,0,3,0,1,240,0,3,0, + 1,240,0,7,0,0,240,0,7,0,0,248,0,31,128,1, + 252,0,255,248,31,255,192,34,45,225,37,2,0,0,15,0, + 128,0,0,31,225,128,0,0,63,255,0,0,0,33,255,0, + 0,0,32,62,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,192,0,0,0,0,192,0,0,0,1,224,0,0,0,1, + 224,0,0,0,1,224,0,0,0,3,240,0,0,0,3,240, + 0,0,0,3,240,0,0,0,6,248,0,0,0,6,248,0, + 0,0,6,248,0,0,0,12,124,0,0,0,12,124,0,0, + 0,12,124,0,0,0,24,62,0,0,0,24,62,0,0,0, + 24,30,0,0,0,48,31,0,0,0,48,31,0,0,0,112, + 15,0,0,0,96,15,128,0,0,96,15,128,0,0,224,7, + 128,0,0,255,255,192,0,0,255,255,192,0,1,192,3,192, + 0,1,128,3,224,0,1,128,3,224,0,3,128,1,224,0, + 3,0,1,240,0,3,0,1,240,0,7,0,0,240,0,15, + 128,0,248,0,255,248,31,255,192,255,248,31,255,192,34,44, + 220,37,2,0,0,28,7,0,0,0,62,15,128,0,0,62, + 15,128,0,0,62,15,128,0,0,28,7,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,64,0,0,0,0,192,0,0,0,0,224,0,0, + 0,0,224,0,0,0,1,224,0,0,0,1,240,0,0,0, + 3,240,0,0,0,3,240,0,0,0,3,248,0,0,0,7, + 248,0,0,0,6,120,0,0,0,6,124,0,0,0,14,60, + 0,0,0,12,60,0,0,0,12,62,0,0,0,28,30,0, + 0,0,24,30,0,0,0,24,31,0,0,0,48,15,0,0, + 0,48,15,0,0,0,112,15,128,0,0,96,7,128,0,0, + 96,7,128,0,0,255,255,192,0,0,255,255,192,0,0,192, + 3,192,0,1,192,3,224,0,1,192,1,224,0,1,128,1, + 224,0,3,128,1,240,0,3,128,0,240,0,7,128,0,240, + 0,7,128,0,248,0,31,192,1,252,0,255,248,31,255,192, + 34,47,235,37,2,0,0,1,224,0,0,0,6,24,0,0, + 0,4,8,0,0,0,8,4,0,0,0,8,4,0,0,0, + 8,4,0,0,0,8,4,0,0,0,4,8,0,0,0,6, + 24,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,7,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,1, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,44,35,210,48,1,0,0,0,127,255,255,240,0,0,15, + 224,3,240,0,0,15,192,0,240,0,0,15,192,0,112,0, + 0,15,192,0,112,0,0,27,192,0,48,0,0,27,192,0, + 48,0,0,51,192,0,48,0,0,51,192,0,16,0,0,99, + 192,0,16,0,0,99,192,16,16,0,0,195,192,16,16,0, + 1,195,192,16,0,0,1,131,192,48,0,0,3,131,192,48, + 0,0,3,3,192,48,0,0,7,3,192,112,0,0,6,3, + 255,240,0,0,14,3,192,240,0,0,12,3,192,48,0,0, + 24,3,192,48,0,0,24,3,192,16,0,0,48,3,192,16, + 16,0,63,255,192,16,16,0,96,3,192,16,16,0,96,3, + 192,0,16,0,192,3,192,0,16,0,192,3,192,0,48,1, + 128,3,192,0,48,1,128,3,192,0,112,3,128,3,192,0, + 112,7,128,3,192,0,240,15,128,3,192,1,240,255,248,127, + 255,255,240,255,248,127,255,255,240,26,47,188,32,3,245,0, + 63,0,128,0,225,225,128,3,128,113,128,7,0,63,128,14, + 0,31,128,30,0,15,128,28,0,7,128,60,0,7,128,60, + 0,3,128,124,0,3,128,120,0,1,128,120,0,1,128,120, + 0,0,128,248,0,0,128,248,0,0,0,248,0,0,0,248, + 0,0,0,248,0,0,0,248,0,0,0,248,0,0,0,248, + 0,0,0,248,0,0,0,248,0,0,0,120,0,0,192,120, + 0,0,192,120,0,0,192,124,0,0,192,60,0,0,128,60, + 0,1,128,28,0,1,128,30,0,3,0,14,0,3,0,7, + 0,6,0,3,128,12,0,1,192,56,0,0,127,224,0,0, + 8,0,0,0,8,0,0,0,28,0,0,0,15,128,0,0, + 3,192,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 129,224,0,0,199,192,0,0,63,0,0,28,46,184,34,3, + 0,0,224,0,0,0,240,0,0,0,240,0,0,0,120,0, + 0,0,60,0,0,0,14,0,0,0,6,0,0,0,3,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 240,255,255,255,240,7,128,1,240,7,128,0,240,7,128,0, + 112,7,128,0,112,7,128,0,48,7,128,0,48,7,128,0, + 48,7,128,0,16,7,128,32,16,7,128,32,16,7,128,32, + 0,7,128,96,0,7,128,96,0,7,128,96,0,7,128,224, + 0,7,255,224,0,7,129,224,0,7,128,96,0,7,128,96, + 0,7,128,96,0,7,128,32,16,7,128,32,16,7,128,32, + 16,7,128,0,16,7,128,0,48,7,128,0,48,7,128,0, + 48,7,128,0,112,7,128,0,112,7,128,0,240,7,128,1, + 240,255,255,255,240,255,255,255,240,28,46,184,34,3,0,0, + 0,28,0,0,0,60,0,0,0,60,0,0,0,120,0,0, + 0,240,0,0,0,192,0,0,1,128,0,0,3,0,0,0, + 2,0,0,0,0,0,0,0,0,0,0,255,255,255,240,255, + 255,255,240,7,128,1,240,7,128,0,240,7,128,0,112,7, + 128,0,112,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,16,7,128,32,16,7,128,32,16,7,128,32,0,7, + 128,96,0,7,128,96,0,7,128,96,0,7,128,224,0,7, + 255,224,0,7,129,224,0,7,128,96,0,7,128,96,0,7, + 128,96,0,7,128,32,16,7,128,32,16,7,128,32,16,7, + 128,0,16,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,112,7,128,0,112,7,128,0,240,7,128,1,240,255, + 255,255,240,255,255,255,240,28,45,180,34,3,0,0,3,0, + 0,0,7,128,0,0,15,192,0,0,12,224,0,0,24,112, + 0,0,112,24,0,0,192,12,0,0,0,2,0,0,0,0, + 0,0,0,0,0,255,255,255,240,255,255,255,240,7,128,1, + 240,7,128,0,240,7,128,0,112,7,128,0,112,7,128,0, + 48,7,128,0,48,7,128,0,48,7,128,0,16,7,128,32, + 16,7,128,32,16,7,128,32,0,7,128,96,0,7,128,96, + 0,7,128,96,0,7,128,224,0,7,255,224,0,7,129,224, + 0,7,128,96,0,7,128,96,0,7,128,96,0,7,128,32, + 16,7,128,32,16,7,128,32,16,7,128,0,16,7,128,0, + 48,7,128,0,48,7,128,0,48,7,128,0,112,7,128,0, + 112,7,128,0,240,7,128,1,240,255,255,255,240,255,255,255, + 240,28,44,176,34,3,0,0,112,28,0,0,248,62,0,0, + 248,62,0,0,248,62,0,0,112,28,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,255,255,255,240,7, + 192,7,240,7,128,1,240,7,128,0,240,7,128,0,112,7, + 128,0,112,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,16,7,128,32,16,7,128,32,16,7,128,32,0,7, + 128,32,0,7,128,96,0,7,128,96,0,7,128,224,0,7, + 255,224,0,7,129,224,0,7,128,96,0,7,128,96,0,7, + 128,32,0,7,128,32,16,7,128,32,16,7,128,32,16,7, + 128,0,16,7,128,0,48,7,128,0,48,7,128,0,48,7, + 128,0,112,7,128,0,112,7,128,0,240,7,128,1,240,255, + 255,255,240,255,255,255,240,14,46,92,19,3,0,224,0,240, + 0,240,0,120,0,60,0,12,0,6,0,3,0,1,0,0, + 0,0,0,255,252,255,252,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,15,128,255,252,14,46,92,19,3,0,0, + 28,0,60,0,60,0,120,0,240,0,192,1,128,3,0,0, + 0,0,0,0,0,255,252,255,252,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,192,255,252,14,45,90,19,3, + 0,3,0,7,128,7,192,14,192,24,96,112,56,192,12,0, + 0,0,0,0,0,255,252,7,192,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,255,252,255,252,15,44,88,20,3, + 0,112,28,248,62,248,62,248,62,112,28,0,0,0,0,0, + 0,0,0,127,254,7,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,7,192,127,254,32,35,140,38,4,0,255, + 255,248,0,15,128,15,0,7,128,3,128,7,128,1,192,7, + 128,0,224,7,128,0,240,7,128,0,120,7,128,0,124,7, + 128,0,60,7,128,0,62,7,128,0,62,7,128,0,30,7, + 128,0,30,7,128,0,31,7,128,0,31,7,128,0,31,255, + 254,0,31,7,128,0,31,7,128,0,31,7,128,0,31,7, + 128,0,31,7,128,0,31,7,128,0,30,7,128,0,62,7, + 128,0,62,7,128,0,60,7,128,0,60,7,128,0,120,7, + 128,0,120,7,128,0,240,7,128,0,224,7,128,1,192,7, + 128,3,128,15,128,30,0,255,255,248,0,33,46,230,38,3, + 255,0,7,1,128,0,0,31,225,128,0,0,31,255,0,0, + 0,16,255,0,0,0,48,62,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,255,192,7,255,128,255,192,7,255,128,7,224,0, + 120,0,7,240,0,48,0,7,240,0,48,0,7,248,0,48, + 0,6,248,0,48,0,6,252,0,48,0,6,126,0,48,0, + 6,62,0,48,0,6,63,0,48,0,6,31,0,48,0,6, + 15,128,48,0,6,15,192,48,0,6,7,192,48,0,6,7, + 224,48,0,6,3,224,48,0,6,1,240,48,0,6,1,248, + 48,0,6,0,248,48,0,6,0,252,48,0,6,0,124,48, + 0,6,0,62,48,0,6,0,63,48,0,6,0,31,48,0, + 6,0,15,176,0,6,0,15,176,0,6,0,7,240,0,6, + 0,7,240,0,6,0,3,240,0,6,0,1,240,0,6,0, + 1,240,0,15,0,0,240,0,31,128,0,240,0,255,240,0, + 112,0,0,0,0,48,0,28,46,184,33,3,1,1,192,0, + 0,1,224,0,0,1,240,0,0,0,112,0,0,0,56,0, + 0,0,28,0,0,0,12,0,0,0,6,0,0,0,0,0, + 0,0,0,0,0,0,31,128,0,0,255,240,0,1,192,56, + 0,3,128,28,0,7,0,14,0,14,0,7,0,30,0,7, + 128,30,0,7,128,60,0,3,192,60,0,3,192,124,0,3, + 224,124,0,3,224,120,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,120,0,1,224,120,0,1,224,120,0,3,224,124,0,3, + 192,60,0,3,192,60,0,3,192,30,0,7,128,14,0,7, + 0,14,0,7,0,7,0,14,0,3,128,28,0,0,192,48, + 0,0,127,224,0,28,46,184,33,3,1,0,0,56,0,0, + 0,120,0,0,0,248,0,0,0,224,0,0,1,192,0,0, + 3,128,0,0,3,0,0,0,6,0,0,0,0,0,0,0, + 0,0,0,0,31,128,0,0,255,240,0,1,192,56,0,3, + 128,28,0,7,0,14,0,14,0,7,0,30,0,7,128,30, + 0,7,128,60,0,3,192,60,0,3,192,124,0,3,224,124, + 0,3,224,120,0,1,224,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,120, + 0,1,224,120,0,1,224,120,0,3,224,124,0,3,192,60, + 0,3,192,60,0,3,192,30,0,7,128,14,0,7,0,14, + 0,7,0,7,0,14,0,3,128,28,0,0,192,48,0,0, + 127,224,0,28,46,184,33,3,0,0,6,0,0,0,15,0, + 0,0,15,0,0,0,31,128,0,0,57,192,0,0,112,224, + 0,0,192,48,0,3,128,28,0,0,0,0,0,0,0,0, + 0,0,31,128,0,0,255,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,30,0,7, + 128,60,0,3,192,60,0,3,192,124,0,3,224,124,0,3, + 224,120,0,1,224,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,120,0,3,224,124,0,3,192,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,7, + 0,7,0,14,0,3,128,28,0,0,192,48,0,0,127,224, + 0,28,45,180,33,3,0,0,120,12,0,0,255,8,0,1, + 255,248,0,1,143,248,0,1,1,224,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0, + 255,240,0,1,192,56,0,3,128,28,0,7,0,14,0,14, + 0,7,0,30,0,7,128,30,0,7,128,60,0,3,192,60, + 0,3,192,124,0,3,224,124,0,3,224,120,0,1,224,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,248,0,1,240,248,0,1,240,248, + 0,1,240,248,0,1,240,120,0,1,224,120,0,1,224,120, + 0,3,224,124,0,3,192,60,0,3,192,60,0,3,192,30, + 0,7,128,14,0,7,0,14,0,7,0,7,0,14,0,3, + 128,28,0,0,192,48,0,0,127,224,0,28,45,180,33,3, + 0,0,224,56,0,1,240,124,0,1,240,124,0,1,240,124, + 0,0,224,56,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,31,128,0,0,240,240,0,1,192,56, + 0,3,128,28,0,7,0,14,0,14,0,7,0,30,0,7, + 128,28,0,3,128,60,0,3,192,60,0,3,192,124,0,3, + 224,120,0,1,224,120,0,1,224,248,0,1,224,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,120,0,1,224,120,0,1,224,124,0,3,224,124,0,3, + 224,60,0,3,192,60,0,3,192,30,0,7,128,14,0,7, + 0,14,0,15,0,7,0,14,0,3,128,28,0,0,224,112, + 0,0,127,224,0,30,30,120,46,8,254,192,0,0,12,224, + 0,0,28,112,0,0,56,56,0,0,112,28,0,0,224,14, + 0,1,192,7,0,3,128,3,128,7,0,1,192,14,0,0, + 224,28,0,0,112,56,0,0,56,112,0,0,28,224,0,0, + 15,192,0,0,7,128,0,0,7,128,0,0,15,192,0,0, + 28,224,0,0,56,112,0,0,112,56,0,0,224,28,0,1, + 192,14,0,3,128,7,0,7,0,3,128,14,0,1,192,28, + 0,0,224,56,0,0,112,112,0,0,56,224,0,0,28,192, + 0,0,12,28,36,144,33,3,0,0,31,128,32,0,240,240, + 96,1,192,56,224,3,128,30,192,7,0,15,128,14,0,7, + 128,30,0,7,128,28,0,7,128,60,0,15,192,60,0,31, + 192,124,0,59,224,120,0,49,224,120,0,97,224,248,0,225, + 240,248,1,193,240,248,1,129,240,248,3,1,240,248,7,1, + 240,248,6,1,240,248,12,1,240,248,28,1,240,248,56,1, + 240,248,48,1,240,120,96,1,224,120,224,1,224,121,192,3, + 224,125,128,3,192,63,0,3,192,63,0,3,192,30,0,7, + 128,30,0,7,0,30,0,15,0,63,0,14,0,51,128,28, + 0,97,192,112,0,192,127,224,0,34,46,230,39,3,1,0, + 28,0,0,0,0,28,0,0,0,0,30,0,0,0,0,15, + 0,0,0,0,7,0,0,0,0,1,128,0,0,0,0,192, + 0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0, + 0,255,252,3,255,192,255,252,3,255,192,7,192,0,126,0, + 7,128,0,60,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,3,192,0, + 24,0,3,192,0,48,0,1,192,0,48,0,1,224,0,96, + 0,0,224,0,96,0,0,112,0,192,0,0,60,3,128,0, + 0,15,254,0,0,34,46,230,39,3,1,0,0,7,0,0, + 0,0,15,0,0,0,0,30,0,0,0,0,28,0,0,0, + 0,56,0,0,0,0,112,0,0,0,0,96,0,0,0,0, + 128,0,0,0,0,0,0,0,0,0,0,0,0,255,252,3, + 255,192,255,252,3,255,192,7,192,0,126,0,7,128,0,60, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,3,192,0,24,0,3,192, + 0,48,0,1,192,0,48,0,1,224,0,96,0,0,224,0, + 96,0,0,112,0,192,0,0,60,3,128,0,0,15,254,0, + 0,34,46,230,39,3,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,3,240,0,0,0,3,56,0,0, + 0,6,28,0,0,0,28,6,0,0,0,48,3,128,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,252, + 3,255,192,7,192,0,126,0,7,128,0,60,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,3,192,0,24,0,3,192,0,48,0,3, + 192,0,48,0,1,224,0,96,0,0,240,0,224,0,0,120, + 1,192,0,0,62,7,128,0,0,15,254,0,0,34,45,225, + 39,3,0,0,28,7,0,0,0,62,15,128,0,0,62,15, + 128,0,0,62,15,128,0,0,28,7,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,32,46,184,35,2,0,0,0,3,0,0,0, + 7,128,0,0,15,0,0,0,30,0,0,0,60,0,0,0, + 56,0,0,0,96,0,0,0,192,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,254,15,255,255,254,15,255,7,224, + 0,240,7,224,0,96,3,224,0,96,3,240,0,64,1,240, + 0,192,0,248,0,128,0,252,1,128,0,124,1,0,0,62, + 3,0,0,62,2,0,0,31,6,0,0,31,12,0,0,15, + 136,0,0,7,152,0,0,7,208,0,0,3,240,0,0,3, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,224,0,0,1, + 224,0,0,1,224,0,0,1,224,0,0,1,240,0,0,127, + 255,192,28,35,140,33,3,0,255,254,0,0,7,192,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,255,240,0,7,192,30,0,7,128,7,128,7,128,7,192, + 7,128,3,224,7,128,3,224,7,128,1,240,7,128,1,240, + 7,128,1,240,7,128,1,240,7,128,1,240,7,128,1,240, + 7,128,3,224,7,128,3,224,7,128,7,192,7,128,7,128, + 7,128,30,0,7,255,248,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,192,0,0, + 255,254,0,0,22,35,105,26,1,0,0,63,128,0,243,224, + 1,192,240,3,128,240,7,128,248,7,0,120,15,0,120,15, + 0,120,15,0,248,15,0,240,15,0,224,15,1,192,15,3, + 0,15,60,0,15,6,0,15,1,128,15,0,192,15,0,224, + 15,0,112,15,0,120,15,0,120,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,60,15,0,60,15,0,60,15,56, + 60,15,120,60,15,120,60,15,112,120,15,96,112,15,48,224, + 255,31,192,21,33,99,24,2,1,56,0,0,60,0,0,30, + 0,0,14,0,0,7,0,0,3,128,0,1,128,0,0,192, + 0,0,0,0,0,0,0,0,0,0,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,21,33,99,24, + 2,1,0,7,0,0,15,128,0,15,0,0,30,0,0,60, + 0,0,48,0,0,96,0,0,192,0,0,0,0,0,0,0, + 0,0,0,7,248,0,24,30,0,16,15,0,48,7,0,56, + 7,128,60,7,128,62,7,128,28,7,128,0,7,128,0,31, + 128,3,247,128,31,7,128,60,7,128,120,7,128,248,7,128, + 240,7,128,240,15,136,240,15,136,240,23,136,248,23,152,120, + 39,240,63,195,240,21,33,99,24,2,0,0,192,0,0,224, + 0,1,224,0,1,240,0,3,48,0,6,24,0,12,12,0, + 24,2,0,0,0,0,0,0,0,0,0,0,7,248,0,24, + 30,0,16,15,0,48,7,0,56,7,128,60,7,128,62,7, + 128,28,7,128,0,7,128,0,31,128,3,247,128,31,7,128, + 60,7,128,120,7,128,248,7,128,240,7,128,240,15,136,240, + 15,136,240,23,136,248,23,152,120,39,240,63,195,240,21,32, + 96,24,2,0,15,129,0,31,227,0,31,255,0,16,254,0, + 32,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,7,248,0,24,30,0,16,15,0,48,7,0,56,7, + 128,60,7,128,62,7,128,28,7,128,0,7,128,0,31,128, + 3,247,128,31,7,128,60,7,128,120,7,128,248,7,128,240, + 7,128,240,15,136,240,15,136,240,23,136,248,23,152,120,39, + 240,63,195,240,21,32,96,24,2,0,28,14,0,62,31,0, + 62,31,0,62,31,0,28,14,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,7,248,0,24,30,0,16,15, + 0,48,7,0,56,7,128,60,7,128,62,7,128,28,7,128, + 0,7,128,0,31,128,3,247,128,31,7,128,60,7,128,120, + 7,128,248,7,128,240,7,128,240,15,136,240,15,136,240,23, + 136,248,23,152,120,39,240,63,195,240,21,34,102,24,2,0, + 1,224,0,2,24,0,4,8,0,8,4,0,8,4,0,8, + 4,0,4,12,0,6,24,0,1,240,0,0,0,0,0,0, + 0,0,0,0,7,248,0,24,30,0,16,15,0,48,7,0, + 56,7,128,60,7,128,60,7,128,28,7,128,0,7,128,0, + 31,128,3,247,128,31,7,128,60,7,128,120,7,128,248,7, + 128,240,7,128,240,15,136,240,15,136,240,31,136,248,23,152, + 120,39,240,63,195,240,30,22,88,34,2,1,7,248,63,128, + 24,30,97,224,16,15,224,224,48,7,192,112,56,7,192,120, + 60,7,128,120,62,7,128,120,30,7,128,60,0,7,128,60, + 0,15,128,60,1,247,255,252,15,7,128,0,60,7,128,0, + 120,7,128,0,248,7,128,0,240,7,128,8,240,15,128,8, + 240,11,192,8,240,27,192,16,248,17,224,48,120,32,240,96, + 63,192,127,192,17,32,96,21,2,247,7,252,0,14,6,0, + 28,3,0,56,3,0,56,3,128,120,15,128,120,15,128,240, + 15,128,240,7,0,240,0,0,240,0,0,240,0,0,240,0, + 0,240,0,0,240,0,128,120,0,128,120,0,128,120,1,0, + 56,1,0,28,2,0,14,6,0,7,248,0,0,128,0,0, + 128,0,1,128,0,0,240,0,0,56,0,0,28,0,0,28, + 0,0,28,0,12,56,0,3,240,0,18,33,99,22,2,1, + 60,0,0,60,0,0,30,0,0,15,0,0,7,0,0,3, + 128,0,0,192,0,0,64,0,0,0,0,0,0,0,0,0, + 0,7,248,0,14,28,0,28,14,0,56,15,0,56,7,128, + 120,7,128,120,7,128,240,7,192,240,7,192,240,7,192,255, + 255,192,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,120,1,128,56,1,0,28,3,0,14,6,0, + 7,252,0,18,33,99,22,2,1,0,7,0,0,15,0,0, + 15,0,0,30,0,0,60,0,0,48,0,0,96,0,0,192, + 0,0,0,0,0,0,0,0,0,0,7,248,0,14,28,0, + 28,14,0,56,15,0,56,7,128,120,7,128,120,7,128,240, + 7,192,240,7,192,240,7,192,255,255,192,240,0,0,240,0, + 0,240,0,0,240,0,128,120,0,128,120,0,128,120,1,128, + 56,1,0,28,3,0,14,6,0,7,252,0,18,33,99,22, + 2,0,0,192,0,0,224,0,1,224,0,1,240,0,3,184, + 0,7,24,0,4,12,0,24,2,0,0,0,0,0,0,0, + 0,0,0,7,248,0,14,28,0,28,14,0,56,15,0,56, + 7,128,120,7,128,120,7,128,240,7,192,240,7,192,240,7, + 192,255,255,192,240,0,0,240,0,0,240,0,0,240,0,128, + 120,0,128,120,0,128,120,1,128,56,1,0,28,3,0,14, + 6,0,7,252,0,18,32,96,22,2,0,28,7,0,62,15, + 128,62,15,128,62,15,128,28,7,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,7,248,0,14,12,0,28, + 14,0,60,7,0,56,7,128,120,3,128,120,3,128,240,3, + 192,240,3,192,240,3,192,255,255,192,240,0,0,240,0,0, + 240,0,0,240,0,64,120,0,128,120,0,128,120,0,128,56, + 1,128,28,1,0,14,6,0,7,252,0,12,33,66,14,0, + 1,224,0,240,0,240,0,120,0,60,0,12,0,6,0,3, + 0,0,0,0,0,0,0,63,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,63,240,11,33,66,13,2,1,0,224,1,224,1,224,3, + 192,7,128,6,0,12,0,24,0,0,0,0,0,0,0,254, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,255,192,13,33,66,14,0, + 0,7,0,7,0,7,128,15,128,29,192,24,96,48,48,192, + 24,0,0,0,0,0,0,63,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,63,240,13,32,64,15,1,0,112,112,248,248,248,248,248, + 248,112,112,0,0,0,0,0,0,0,0,0,0,63,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,63,240,19,35,105,24,2,0,31, + 0,0,15,131,128,7,198,0,3,252,0,1,240,0,0,240, + 0,1,248,0,7,124,0,12,60,0,24,30,0,0,31,0, + 0,15,0,0,7,128,3,255,128,14,15,192,28,7,192,60, + 3,192,56,3,224,120,3,224,120,1,224,248,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,240,1,224,240,1,224, + 240,1,224,120,1,192,120,3,192,56,3,192,60,3,128,28, + 7,0,14,14,0,3,252,0,23,32,96,27,2,0,1,224, + 64,3,248,192,7,255,192,6,63,128,4,7,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,31,128,30, + 97,224,30,192,224,30,128,240,31,0,240,31,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,255,199,254,19,33, + 99,24,2,1,28,0,0,30,0,0,30,0,0,15,0,0, + 7,128,0,1,128,0,0,192,0,0,96,0,0,0,0,0, + 0,0,0,0,0,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,19,33,99,24,2,1,0,7,0, + 0,7,128,0,15,0,0,30,0,0,28,0,0,56,0,0, + 96,0,0,64,0,0,0,0,0,0,0,0,0,0,3,252, + 0,14,14,0,28,7,0,60,3,128,56,3,192,120,3,192, + 120,1,224,248,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,120,1,224,120,3, + 192,56,3,192,60,3,128,28,7,0,14,14,0,3,252,0, + 19,33,99,24,2,0,0,96,0,0,224,0,0,240,0,1, + 240,0,1,184,0,3,24,0,6,4,0,8,3,0,0,0, + 0,0,0,0,0,0,0,3,252,0,14,14,0,28,7,0, + 60,3,128,56,3,192,120,3,192,120,1,224,248,1,224,240, + 1,224,240,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,120,1,224,120,3,192,56,3,192,60,3,128, + 28,7,0,14,14,0,3,252,0,19,32,96,24,2,0,7, + 129,0,15,225,0,31,255,0,24,254,0,16,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,252,0, + 14,14,0,28,7,0,60,3,128,56,3,192,120,3,192,120, + 1,224,248,1,224,240,1,224,240,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,120,1,224,120,3,192, + 56,3,192,60,3,128,28,7,0,14,14,0,3,252,0,19, + 32,96,24,2,0,14,7,0,31,15,128,31,15,128,31,15, + 128,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,3,252,0,14,14,0,28,7,0,60,3,128,56, + 3,192,120,3,192,120,1,224,248,1,224,240,1,224,240,1, + 224,240,1,224,240,1,224,240,1,224,240,1,224,240,1,224, + 120,1,224,120,3,192,56,3,192,60,3,128,28,7,0,14, + 14,0,3,252,0,41,31,186,45,2,253,0,0,30,0,0, + 0,0,0,63,0,0,0,0,0,63,0,0,0,0,0,63, + 0,0,0,0,0,63,0,0,0,0,0,30,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,255,255,255,128,255,255,255,255,255,128,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,30,0,0,0,0,0,63,0,0,0,0,0,63, + 0,0,0,0,0,63,0,0,0,0,0,63,0,0,0,0, + 0,30,0,0,0,19,22,66,24,2,1,3,252,96,14,14, + 64,28,7,192,60,3,128,56,3,192,120,7,192,120,13,224, + 248,9,224,240,25,224,240,49,224,240,97,224,240,193,224,240, + 129,224,241,129,224,243,1,224,126,1,224,124,3,192,56,3, + 192,60,3,128,60,7,0,110,14,0,195,252,0,23,33,99, + 27,2,1,14,0,0,15,0,0,7,128,0,3,192,0,1, + 192,0,0,224,0,0,48,0,0,16,0,0,0,0,0,0, + 0,0,0,0,254,7,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,1,240,30,1,240,30,1,240,30,2,240,14,6,240, + 15,12,240,3,240,254,23,33,99,27,2,1,0,1,192,0, + 3,192,0,3,192,0,7,128,0,14,0,0,12,0,0,24, + 0,0,48,0,0,0,0,0,0,0,0,0,0,254,7,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,1,240,30,1,240, + 30,1,240,30,2,240,14,6,240,15,12,240,3,240,254,23, + 33,99,27,2,0,0,48,0,0,56,0,0,120,0,0,124, + 0,0,204,0,1,134,0,3,3,0,6,0,128,0,0,0, + 0,0,0,0,0,0,254,7,240,30,0,240,30,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,1,240,30,1,240,30,1,240,30,2,240,14, + 6,240,15,12,240,3,240,254,23,32,96,27,2,0,7,3, + 128,15,135,192,15,135,192,15,135,192,7,3,128,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,7,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,1,240,30,1,240,30, + 1,240,30,2,240,14,6,240,15,12,240,3,240,254,24,45, + 135,26,1,246,0,0,240,0,0,240,0,1,224,0,1,192, + 0,3,128,0,7,0,0,6,0,0,12,0,0,24,0,0, + 0,0,0,0,0,0,0,0,255,225,255,31,0,120,15,0, + 48,15,0,48,7,0,32,7,128,96,7,128,96,3,192,64, + 3,192,192,3,192,192,1,224,128,1,225,128,0,225,128,0, + 241,128,0,241,0,0,115,0,0,123,0,0,122,0,0,62, + 0,0,62,0,0,60,0,0,28,0,0,28,0,0,24,0, + 0,24,0,0,24,0,24,48,0,60,48,0,60,48,0,60, + 96,0,56,96,0,31,192,0,15,0,0,20,46,138,25,2, + 243,30,0,0,126,0,0,254,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,15,192,30,63,224,30,97,240,30,192,240,30,128, + 240,31,128,240,31,0,240,31,0,240,30,0,240,30,0,240, + 30,1,224,30,1,224,30,1,192,30,3,128,30,3,128,30, + 7,0,30,6,0,30,12,0,30,24,0,30,48,0,30,192, + 0,31,128,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,60,0,0,240,0,0,128,0,0,24,43,129,26,1, + 245,1,192,224,3,225,240,3,225,240,3,225,240,1,192,224, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255, + 225,255,31,128,120,15,0,48,15,0,48,7,128,32,7,128, + 96,7,128,96,3,192,64,3,192,64,3,192,192,1,224,128, + 1,224,128,0,225,128,0,241,128,0,241,0,0,115,0,0, + 123,0,0,122,0,0,62,0,0,62,0,0,60,0,0,28, + 0,0,28,0,0,24,0,0,24,0,0,24,0,24,48,0, + 60,48,0,60,48,0,60,96,0,56,96,0,31,192,0,15, + 0,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 0, '1' Height: 34 + Calculated Max Values w=41 h=46 x= 6 y=14 dx=45 dy= 0 ascent=36 len=246 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x= 0 y=-10 dx= 0 dy= 0 + Pure Font ascent =34 descent= 0 + X Font ascent =34 descent= 0 + Max Font ascent =36 descent=-10 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35n[1560] U8G_SECTION(".progmem.u8g_font_osr35n") = { + 0,128,62,216,241,34,0,0,0,0,42,57,0,36,246,34, + 0,18,20,60,25,4,14,0,224,0,1,224,0,1,224,0, + 1,224,0,96,195,128,240,135,192,248,143,192,124,159,128,7, + 248,0,1,224,0,1,224,0,6,184,0,124,143,128,248,135, + 192,240,195,192,97,193,128,1,224,0,1,224,0,1,224,0, + 0,224,0,41,41,246,45,2,248,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,255,255,255,255,255, + 128,255,255,255,255,255,128,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,0, + 0,12,0,0,0,0,0,12,0,0,0,0,0,12,0,0, + 0,0,0,12,0,0,0,0,0,12,0,0,0,0,0,12, + 0,0,0,0,0,12,0,0,0,0,0,12,0,0,0,7, + 15,15,14,4,247,120,252,252,254,126,6,6,6,4,12,8, + 24,48,96,64,12,3,6,18,3,11,255,240,255,240,255,240, + 6,5,5,14,4,1,120,252,252,252,120,16,46,92,22,3, + 246,0,3,0,3,0,3,0,6,0,6,0,6,0,12,0, + 12,0,12,0,24,0,24,0,24,0,48,0,48,0,48,0, + 48,0,96,0,96,0,96,0,192,0,192,0,192,1,128,1, + 128,1,128,3,0,3,0,3,0,6,0,6,0,6,0,12, + 0,12,0,12,0,24,0,24,0,24,0,48,0,48,0,48, + 0,96,0,96,0,96,0,96,0,192,0,192,0,23,34,102, + 28,2,0,0,124,0,1,199,0,7,1,128,6,0,192,14, + 0,224,28,0,112,60,0,120,60,0,120,56,0,56,120,0, + 60,120,0,60,120,0,60,248,0,62,248,0,62,248,0,62, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,120,0,60,120,0,60,120,0,60,120,0, + 60,60,0,120,60,0,120,28,0,112,28,0,112,14,0,224, + 7,1,192,3,131,128,0,254,0,17,34,102,28,6,0,0, + 64,0,0,64,0,0,192,0,0,192,0,1,192,0,7,192, + 0,255,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,255, + 255,128,255,255,128,21,34,102,28,4,0,3,252,0,14,31, + 0,16,7,192,32,3,224,96,1,240,64,1,240,192,0,240, + 192,0,248,224,0,248,252,0,248,254,0,248,126,0,248,126, + 0,240,62,1,240,0,1,224,0,3,192,0,3,128,0,7, + 0,0,14,0,0,28,0,0,112,0,0,224,0,1,192,0, + 3,0,0,6,0,16,12,0,16,24,0,16,16,0,16,48, + 0,48,48,0,112,127,255,240,127,255,240,127,255,240,127,255, + 240,21,34,102,28,4,0,3,248,0,14,31,0,24,7,128, + 48,3,192,112,3,192,120,1,224,124,1,224,126,1,224,126, + 1,224,60,1,224,0,1,224,0,3,192,0,3,192,0,7, + 128,0,14,0,15,248,0,31,143,0,14,3,128,0,3,224, + 0,1,224,0,1,240,0,0,248,0,0,248,0,0,248,60, + 0,248,126,0,248,254,0,248,254,0,248,252,1,240,224,1, + 240,224,3,224,96,3,192,48,15,0,15,254,0,23,34,102, + 28,3,0,0,1,128,0,1,128,0,3,128,0,7,128,0, + 7,128,0,15,128,0,31,128,0,31,128,0,55,128,0,119, + 128,0,231,128,0,199,128,1,199,128,3,135,128,3,7,128, + 6,7,128,14,7,128,12,7,128,24,7,128,56,7,128,48, + 7,128,96,7,128,224,7,128,255,255,254,0,7,128,0,7, + 128,0,7,128,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,3,255,254,3,255,254,21,35,105,28,4,0,48, + 0,64,60,3,192,63,255,128,63,255,0,63,252,0,55,240, + 0,48,0,0,48,0,0,48,0,0,48,0,0,48,0,0, + 48,0,0,48,0,0,51,254,0,60,7,128,56,3,192,48, + 1,224,48,1,240,48,1,240,0,0,240,0,0,248,0,0, + 248,0,0,248,0,0,248,60,0,248,126,0,248,254,0,248, + 254,0,240,252,1,240,248,1,224,240,1,224,112,3,192,112, + 7,128,60,31,0,15,252,0,21,34,102,28,4,0,0,126, + 0,1,193,128,3,128,192,7,0,64,14,0,224,28,1,224, + 28,3,224,56,3,224,56,3,192,120,0,0,120,0,0,120, + 0,0,120,0,0,240,126,0,241,255,128,243,131,192,247,1, + 224,254,1,240,252,0,240,252,0,240,248,0,248,248,0,120, + 248,0,120,248,0,120,120,0,120,120,0,120,120,0,248,120, + 0,240,56,0,240,60,0,224,28,1,224,14,3,192,7,7, + 128,1,254,0,19,34,102,28,5,0,255,255,224,255,255,224, + 255,255,224,255,255,224,224,0,224,192,0,64,128,0,64,128, + 0,192,128,0,128,128,1,128,0,1,128,0,3,0,0,2, + 0,0,6,0,0,12,0,0,24,0,0,24,0,0,48,0, + 0,112,0,0,112,0,0,224,0,0,224,0,1,224,0,1, + 224,0,3,224,0,3,224,0,3,224,0,7,240,0,7,240, + 0,7,240,0,7,240,0,7,240,0,3,240,0,3,224,0, + 23,34,102,28,3,0,1,254,0,7,135,128,30,1,192,56, + 0,224,120,0,112,112,0,112,240,0,56,240,0,56,240,0, + 56,240,0,56,248,0,56,252,0,112,126,0,112,127,192,224, + 63,241,192,31,255,0,7,255,128,7,255,224,12,63,248,56, + 7,252,112,1,252,112,0,126,224,0,62,224,0,62,224,0, + 62,224,0,30,224,0,30,224,0,28,96,0,60,112,0,56, + 48,0,120,24,0,240,14,1,192,3,255,0,21,34,102,28, + 4,0,1,248,0,7,142,0,14,3,0,28,1,128,56,1, + 192,120,1,224,120,0,224,120,0,240,240,0,240,240,0,240, + 240,0,240,240,0,248,240,0,248,248,0,248,120,1,248,120, + 1,248,120,3,248,60,7,120,30,14,120,15,252,120,3,240, + 120,0,0,240,0,0,240,0,0,240,0,0,240,60,0,224, + 124,0,224,124,1,192,124,1,192,120,3,128,112,3,0,56, + 6,0,28,28,0,15,248,0}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--49-490-72-72-P-256-ISO10646-1 + Copyright: Copyright (C) 2006-2008 Alexey Kryukov + Capital A Height: 35, '1' Height: 34 + Calculated Max Values w=49 h=46 x= 6 y=26 dx=52 dy= 0 ascent=37 len=252 + Font Bounding box w=128 h=62 x=-40 y=-15 + Calculated Min Values x=-2 y=-11 dx= 0 dy= 0 + Pure Font ascent =35 descent=-10 + X Font ascent =36 descent=-10 + Max Font ascent =37 descent=-11 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_osr35r[10371] U8G_SECTION(".progmem.u8g_font_osr35r") = { + 0,128,62,216,241,35,12,236,30,116,32,127,246,37,245,36, + 246,0,0,0,14,0,0,6,34,34,14,4,0,120,252,252, + 252,252,252,252,252,252,120,120,120,120,120,120,48,48,48,48, + 48,48,48,48,48,48,48,0,0,0,120,252,252,252,120,11, + 10,20,19,4,26,224,224,224,224,224,224,224,224,224,224,224, + 224,64,64,64,64,64,64,64,64,26,34,136,34,4,0,0, + 48,24,0,0,48,24,0,0,112,24,0,0,96,24,0,0, + 96,56,0,0,96,56,0,0,96,48,0,0,96,48,0,0, + 96,48,0,0,224,48,0,255,255,255,192,255,255,255,192,0, + 192,96,0,0,192,96,0,0,192,96,0,1,192,96,0,1, + 128,96,0,1,128,224,0,1,128,192,0,1,128,192,0,1, + 128,192,0,3,128,192,0,255,255,255,192,255,255,255,192,3, + 1,128,0,3,1,128,0,3,1,128,0,7,1,128,0,7, + 1,128,0,6,1,128,0,6,3,128,0,6,3,0,0,6, + 3,0,0,6,3,0,0,22,41,123,29,3,252,0,204,0, + 0,204,0,0,204,0,1,254,0,7,207,192,12,204,96,24, + 204,48,48,204,24,32,204,24,96,204,28,96,204,60,96,204, + 124,96,204,124,112,204,120,120,204,120,62,204,0,63,204,0, + 31,252,0,15,252,0,7,255,128,1,255,192,0,255,224,0, + 207,240,0,205,248,0,204,120,48,204,60,120,204,28,248,204, + 28,248,204,12,240,204,12,240,204,8,224,204,24,96,204,24, + 96,204,48,48,204,96,28,205,192,7,255,128,0,204,0,0, + 204,0,0,204,0,0,204,0,33,34,170,43,5,0,15,128, + 0,48,0,24,192,0,96,0,48,96,0,64,0,112,112,0, + 192,0,96,48,1,128,0,224,56,1,128,0,224,56,3,0, + 0,224,56,2,0,0,224,56,6,0,0,224,56,12,0,0, + 224,56,12,0,0,224,56,24,0,0,96,48,48,0,0,96, + 112,48,0,0,48,96,96,0,0,24,192,64,0,0,15,128, + 192,0,0,0,1,128,248,0,0,1,129,140,0,0,3,3, + 6,0,0,2,6,7,0,0,6,6,3,0,0,12,14,3, + 128,0,8,14,3,128,0,24,14,3,128,0,48,14,3,128, + 0,48,14,3,128,0,96,14,3,128,0,64,14,3,128,0, + 192,6,3,0,1,128,6,3,0,1,128,7,7,0,3,0, + 3,14,0,6,0,1,252,0,33,34,170,39,3,0,0,63, + 0,0,0,0,227,128,0,0,1,128,192,0,0,3,128,64, + 0,0,3,0,96,0,0,7,0,96,0,0,7,0,96,0, + 0,7,0,224,0,0,7,0,192,0,0,7,129,192,0,0, + 7,131,128,0,0,3,199,0,0,0,3,238,0,0,0,1, + 248,0,0,0,0,248,7,255,128,1,248,0,252,0,3,252, + 0,112,0,7,62,0,112,0,14,63,0,96,0,28,31,0, + 96,0,60,15,128,192,0,56,7,192,192,0,120,7,193,128, + 0,120,3,225,128,0,240,1,243,0,0,240,1,254,0,0, + 240,0,254,0,0,240,0,124,0,0,248,0,62,0,0,248, + 0,62,1,0,120,0,127,1,0,60,0,207,130,0,30,3, + 135,252,0,15,254,1,248,0,3,10,10,11,4,26,224,224, + 224,224,224,224,64,64,64,64,11,46,92,18,5,246,0,64, + 0,224,1,192,3,128,3,0,6,0,14,0,12,0,28,0, + 24,0,56,0,48,0,48,0,112,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,224,0,96,0,96,0,96,0,112,0, + 48,0,48,0,56,0,24,0,28,0,12,0,14,0,6,0, + 3,0,3,128,1,192,0,224,0,64,11,45,90,18,2,246, + 64,0,96,0,112,0,56,0,28,0,12,0,14,0,6,0, + 3,0,3,0,3,128,1,128,1,192,0,192,0,192,0,192, + 0,224,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,224,0,192,0,192, + 0,192,1,128,1,128,3,128,3,0,7,0,6,0,14,0, + 12,0,24,0,56,0,112,0,224,0,18,20,60,25,4,14, + 0,224,0,1,224,0,1,224,0,1,224,0,96,195,128,240, + 135,192,248,143,192,124,159,128,7,248,0,1,224,0,1,224, + 0,6,184,0,124,143,128,248,135,192,240,195,192,97,193,128, + 1,224,0,1,224,0,1,224,0,0,224,0,41,41,246,45, + 2,248,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,255,255,255,255,255,128,255,255,255,255,255,128, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,0,0,12,0,0,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,0,0,0,12,0, + 0,0,0,0,12,0,0,0,7,15,15,14,4,247,120,252, + 252,254,126,6,6,6,4,12,8,24,48,96,64,12,3,6, + 18,3,11,255,240,255,240,255,240,6,5,5,14,4,1,120, + 252,252,252,120,16,46,92,22,3,246,0,3,0,3,0,3, + 0,6,0,6,0,6,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,128,1,128,1,128,3,0,3,0, + 3,0,6,0,6,0,6,0,12,0,12,0,12,0,24,0, + 24,0,24,0,48,0,48,0,48,0,96,0,96,0,96,0, + 96,0,192,0,192,0,23,34,102,28,2,0,0,124,0,1, + 199,0,7,1,128,6,0,192,14,0,224,28,0,112,60,0, + 120,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 248,0,62,248,0,62,248,0,62,248,0,62,248,0,62,248, + 0,62,248,0,62,248,0,62,248,0,62,248,0,62,120,0, + 60,120,0,60,120,0,60,120,0,60,60,0,120,60,0,120, + 28,0,112,28,0,112,14,0,224,7,1,192,3,131,128,0, + 254,0,17,34,102,28,6,0,0,64,0,0,64,0,0,192, + 0,0,192,0,1,192,0,7,192,0,255,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,255,255,128,255,255,128,21,34, + 102,28,4,0,3,252,0,14,31,0,16,7,192,32,3,224, + 96,1,240,64,1,240,192,0,240,192,0,248,224,0,248,252, + 0,248,254,0,248,126,0,248,126,0,240,62,1,240,0,1, + 224,0,3,192,0,3,128,0,7,0,0,14,0,0,28,0, + 0,112,0,0,224,0,1,192,0,3,0,0,6,0,16,12, + 0,16,24,0,16,16,0,16,48,0,48,48,0,112,127,255, + 240,127,255,240,127,255,240,127,255,240,21,34,102,28,4,0, + 3,248,0,14,31,0,24,7,128,48,3,192,112,3,192,120, + 1,224,124,1,224,126,1,224,126,1,224,60,1,224,0,1, + 224,0,3,192,0,3,192,0,7,128,0,14,0,15,248,0, + 31,143,0,14,3,128,0,3,224,0,1,224,0,1,240,0, + 0,248,0,0,248,0,0,248,60,0,248,126,0,248,254,0, + 248,254,0,248,252,1,240,224,1,240,224,3,224,96,3,192, + 48,15,0,15,254,0,23,34,102,28,3,0,0,1,128,0, + 1,128,0,3,128,0,7,128,0,7,128,0,15,128,0,31, + 128,0,31,128,0,55,128,0,119,128,0,231,128,0,199,128, + 1,199,128,3,135,128,3,7,128,6,7,128,14,7,128,12, + 7,128,24,7,128,56,7,128,48,7,128,96,7,128,224,7, + 128,255,255,254,0,7,128,0,7,128,0,7,128,0,7,128, + 0,7,128,0,7,128,0,7,128,0,7,128,3,255,254,3, + 255,254,21,35,105,28,4,0,48,0,64,60,3,192,63,255, + 128,63,255,0,63,252,0,55,240,0,48,0,0,48,0,0, + 48,0,0,48,0,0,48,0,0,48,0,0,48,0,0,51, + 254,0,60,7,128,56,3,192,48,1,224,48,1,240,48,1, + 240,0,0,240,0,0,248,0,0,248,0,0,248,0,0,248, + 60,0,248,126,0,248,254,0,248,254,0,240,252,1,240,248, + 1,224,240,1,224,112,3,192,112,7,128,60,31,0,15,252, + 0,21,34,102,28,4,0,0,126,0,1,193,128,3,128,192, + 7,0,64,14,0,224,28,1,224,28,3,224,56,3,224,56, + 3,192,120,0,0,120,0,0,120,0,0,120,0,0,240,126, + 0,241,255,128,243,131,192,247,1,224,254,1,240,252,0,240, + 252,0,240,248,0,248,248,0,120,248,0,120,248,0,120,120, + 0,120,120,0,120,120,0,248,120,0,240,56,0,240,60,0, + 224,28,1,224,14,3,192,7,7,128,1,254,0,19,34,102, + 28,5,0,255,255,224,255,255,224,255,255,224,255,255,224,224, + 0,224,192,0,64,128,0,64,128,0,192,128,0,128,128,1, + 128,0,1,128,0,3,0,0,2,0,0,6,0,0,12,0, + 0,24,0,0,24,0,0,48,0,0,112,0,0,112,0,0, + 224,0,0,224,0,1,224,0,1,224,0,3,224,0,3,224, + 0,3,224,0,7,240,0,7,240,0,7,240,0,7,240,0, + 7,240,0,3,240,0,3,224,0,23,34,102,28,3,0,1, + 254,0,7,135,128,30,1,192,56,0,224,120,0,112,112,0, + 112,240,0,56,240,0,56,240,0,56,240,0,56,248,0,56, + 252,0,112,126,0,112,127,192,224,63,241,192,31,255,0,7, + 255,128,7,255,224,12,63,248,56,7,252,112,1,252,112,0, + 126,224,0,62,224,0,62,224,0,62,224,0,30,224,0,30, + 224,0,28,96,0,60,112,0,56,48,0,120,24,0,240,14, + 1,192,3,255,0,21,34,102,28,4,0,1,248,0,7,142, + 0,14,3,0,28,1,128,56,1,192,120,1,224,120,0,224, + 120,0,240,240,0,240,240,0,240,240,0,240,240,0,248,240, + 0,248,248,0,248,120,1,248,120,1,248,120,3,248,60,7, + 120,30,14,120,15,252,120,3,240,120,0,0,240,0,0,240, + 0,0,240,0,0,240,60,0,224,124,0,224,124,1,192,124, + 1,192,120,3,128,112,3,0,56,6,0,28,28,0,15,248, + 0,6,22,22,14,4,1,120,252,252,252,120,0,0,0,0, + 0,0,0,0,0,0,0,0,120,252,252,252,120,7,31,31, + 14,4,248,120,252,252,252,120,0,0,0,0,0,0,0,0, + 0,0,0,120,252,252,254,126,14,6,6,4,12,8,24,48, + 96,64,38,40,200,46,4,249,0,0,0,0,28,0,0,0, + 0,120,0,0,0,1,240,0,0,0,7,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,192,0, + 0,0,15,0,0,0,0,62,0,0,0,0,248,0,0,0, + 1,224,0,0,0,7,128,0,0,0,30,0,0,0,0,120, + 0,0,0,1,224,0,0,0,7,192,0,0,0,31,0,0, + 0,0,60,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,124,0,0,0,0,31,0,0,0,0,7,128,0,0,0, + 1,224,0,0,0,0,120,0,0,0,0,30,0,0,0,0, + 7,128,0,0,0,3,224,0,0,0,0,248,0,0,0,0, + 60,0,0,0,0,15,0,0,0,0,3,192,0,0,0,0, + 240,0,0,0,0,60,0,0,0,0,31,0,0,0,0,7, + 192,0,0,0,1,224,0,0,0,0,120,0,0,0,0,28, + 41,11,66,45,2,7,255,255,255,255,255,128,255,255,255,255, + 255,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255, + 255,128,255,255,255,255,255,128,38,40,200,46,4,249,224,0, + 0,0,0,120,0,0,0,0,62,0,0,0,0,15,128,0, + 0,0,3,192,0,0,0,0,240,0,0,0,0,60,0,0, + 0,0,15,0,0,0,0,3,192,0,0,0,1,240,0,0, + 0,0,124,0,0,0,0,30,0,0,0,0,7,128,0,0, + 0,1,224,0,0,0,0,120,0,0,0,0,30,0,0,0, + 0,15,128,0,0,0,3,224,0,0,0,0,240,0,0,0, + 0,60,0,0,0,0,60,0,0,0,0,248,0,0,0,3, + 224,0,0,0,7,128,0,0,0,30,0,0,0,0,120,0, + 0,0,1,224,0,0,0,7,128,0,0,0,31,0,0,0, + 0,124,0,0,0,0,240,0,0,0,3,192,0,0,0,15, + 0,0,0,0,60,0,0,0,0,240,0,0,0,3,224,0, + 0,0,15,128,0,0,0,30,0,0,0,0,120,0,0,0, + 0,224,0,0,0,0,18,34,102,23,3,0,7,240,0,28, + 60,0,48,15,0,96,7,128,192,7,128,192,3,192,192,3, + 192,248,3,192,252,3,192,124,7,192,56,7,128,0,15,128, + 0,31,0,0,62,0,0,124,0,0,240,0,0,224,0,1, + 192,0,3,0,0,6,0,0,14,8,0,12,8,0,12,8, + 0,12,8,0,6,16,0,3,224,0,0,0,0,0,0,0, + 0,0,0,1,224,0,3,240,0,3,240,0,3,240,0,1, + 224,0,35,36,180,40,2,0,0,3,254,0,0,0,30,7, + 192,0,0,112,0,112,0,1,192,0,24,0,3,128,0,12, + 0,7,0,0,6,0,14,0,0,3,0,28,0,120,1,0, + 24,1,196,225,128,56,7,7,224,128,48,14,3,224,192,112, + 12,3,192,192,96,28,3,192,64,96,56,3,192,96,224,56, + 3,192,96,192,120,3,128,96,192,112,7,128,96,192,112,7, + 128,96,192,240,7,128,96,192,224,7,0,96,192,224,15,0, + 224,192,224,15,0,192,192,224,14,0,192,96,224,30,1,128, + 96,224,62,1,128,96,224,62,3,0,96,96,78,6,0,48, + 49,143,12,0,48,31,7,240,0,24,0,0,0,0,12,0, + 0,0,0,6,0,0,0,0,3,0,0,0,0,1,192,0, + 112,0,0,112,1,192,0,0,31,255,0,0,34,35,175,37, + 2,0,0,0,192,0,0,0,0,192,0,0,0,0,224,0, + 0,0,1,224,0,0,0,1,224,0,0,0,3,240,0,0, + 0,3,240,0,0,0,3,240,0,0,0,6,248,0,0,0, + 6,248,0,0,0,6,248,0,0,0,12,124,0,0,0,12, + 124,0,0,0,12,124,0,0,0,24,62,0,0,0,24,62, + 0,0,0,24,30,0,0,0,48,31,0,0,0,48,31,0, + 0,0,48,15,0,0,0,96,15,128,0,0,96,15,128,0, + 0,96,7,128,0,0,255,255,192,0,0,255,255,192,0,0, + 192,3,192,0,1,128,3,224,0,1,128,3,224,0,3,128, + 1,224,0,3,0,1,240,0,3,0,1,240,0,7,0,0, + 240,0,7,0,0,248,0,31,128,1,252,0,255,248,31,255, + 192,28,35,140,34,3,0,255,255,240,0,7,192,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,1,224,7,128,1,224,7, + 128,1,224,7,128,1,224,7,128,3,192,7,128,3,128,7, + 128,7,0,7,128,30,0,7,255,240,0,7,128,62,0,7, + 128,15,0,7,128,7,128,7,128,3,192,7,128,3,224,7, + 128,1,224,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,3,224,7, + 128,3,224,7,128,7,192,7,128,15,128,7,192,62,0,255, + 255,240,0,26,36,144,32,3,0,0,63,0,128,0,225,224, + 128,3,128,113,128,7,0,63,128,14,0,31,128,30,0,15, + 128,28,0,7,128,60,0,3,128,60,0,3,128,124,0,3, + 128,120,0,1,128,120,0,1,128,120,0,0,128,248,0,0, + 128,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,248,0,0,0,248,0,0,0,248,0,0, + 0,248,0,0,0,120,0,0,192,120,0,0,192,120,0,0, + 192,60,0,0,192,60,0,0,128,60,0,1,128,28,0,1, + 128,14,0,3,0,14,0,3,0,7,0,6,0,3,128,12, + 0,0,224,56,0,0,127,224,0,33,35,175,38,3,0,255, + 255,252,0,0,7,192,15,0,0,7,128,3,192,0,7,128, + 0,224,0,7,128,0,112,0,7,128,0,120,0,7,128,0, + 60,0,7,128,0,62,0,7,128,0,30,0,7,128,0,31, + 0,7,128,0,31,0,7,128,0,15,0,7,128,0,15,0, + 7,128,0,15,128,7,128,0,15,128,7,128,0,15,128,7, + 128,0,15,128,7,128,0,15,128,7,128,0,15,128,7,128, + 0,15,128,7,128,0,15,128,7,128,0,15,128,7,128,0, + 15,0,7,128,0,31,0,7,128,0,31,0,7,128,0,30, + 0,7,128,0,30,0,7,128,0,60,0,7,128,0,60,0, + 7,128,0,120,0,7,128,0,112,0,7,128,0,224,0,7, + 128,3,192,0,7,192,15,0,0,255,255,252,0,0,28,35, + 140,34,3,0,255,255,255,240,7,192,7,240,7,128,1,240, + 7,128,0,240,7,128,0,112,7,128,0,112,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,16,7,128,32,16, + 7,128,32,16,7,128,32,0,7,128,96,0,7,128,96,0, + 7,128,96,0,7,128,224,0,7,255,224,0,7,129,224,0, + 7,128,96,0,7,128,96,0,7,128,96,0,7,128,32,16, + 7,128,32,16,7,128,32,16,7,128,0,16,7,128,0,48, + 7,128,0,48,7,128,0,48,7,128,0,112,7,128,0,112, + 7,128,0,240,7,128,1,240,255,255,255,240,255,255,255,240, + 27,35,140,34,4,0,255,255,255,224,15,128,15,224,7,128, + 3,224,7,128,1,224,7,128,0,224,7,128,0,224,7,128, + 0,96,7,128,0,96,7,128,0,96,7,128,0,32,7,128, + 32,32,7,128,32,32,7,128,32,0,7,128,96,0,7,128, + 96,0,7,128,96,0,7,128,224,0,7,255,224,0,7,129, + 224,0,7,128,96,0,7,128,96,0,7,128,96,0,7,128, + 32,0,7,128,32,0,7,128,32,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,7,128,0,0,7,128, + 0,0,7,128,0,0,7,128,0,0,15,128,0,0,255,254, + 0,0,30,36,144,34,3,0,0,63,128,192,0,224,224,192, + 3,128,56,192,7,0,29,192,14,0,15,192,14,0,7,192, + 28,0,7,192,60,0,3,192,60,0,3,192,124,0,1,192, + 120,0,1,192,120,0,0,192,120,0,0,192,248,0,0,192, + 248,0,0,0,248,0,0,0,248,0,0,0,248,0,0,0, + 248,0,255,252,248,0,255,252,248,0,7,192,248,0,7,192, + 248,0,7,192,248,0,7,192,120,0,7,192,120,0,7,192, + 124,0,7,192,60,0,7,192,60,0,7,192,28,0,15,192, + 30,0,15,192,14,0,28,192,7,0,24,192,3,0,48,192, + 1,192,224,192,0,127,128,192,33,35,175,38,3,0,255,252, + 31,255,128,7,192,0,248,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,255, + 255,240,0,7,128,0,240,0,7,128,0,240,0,7,128,0, + 240,0,7,128,0,240,0,7,128,0,240,0,7,128,0,240, + 0,7,128,0,240,0,7,128,0,240,0,7,128,0,240,0, + 7,128,0,240,0,7,128,0,240,0,7,128,0,240,0,7, + 128,0,240,0,7,128,0,240,0,7,128,0,240,0,7,128, + 0,240,0,7,192,0,248,0,255,252,31,255,128,14,35,70, + 19,3,0,255,252,7,192,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,192,255,252,23,35,105,27,2,0,0, + 127,254,0,7,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,3,192,0,3,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,60,3,192,126,3,192,254,3,192, + 254,3,192,252,3,192,224,3,128,224,7,128,96,7,0,112, + 14,0,56,28,0,15,248,0,32,35,140,37,3,0,255,252, + 63,254,7,192,15,240,7,128,7,192,7,128,3,128,7,128, + 7,0,7,128,6,0,7,128,12,0,7,128,28,0,7,128, + 56,0,7,128,112,0,7,128,224,0,7,129,192,0,7,129, + 128,0,7,131,128,0,7,135,128,0,7,143,192,0,7,155, + 224,0,7,179,224,0,7,225,240,0,7,193,240,0,7,128, + 248,0,7,128,248,0,7,128,124,0,7,128,124,0,7,128, + 62,0,7,128,62,0,7,128,31,0,7,128,31,0,7,128, + 15,128,7,128,15,192,7,128,7,192,7,128,7,224,7,128, + 3,224,7,192,7,248,255,252,127,255,27,35,140,33,3,0, + 255,254,0,0,7,192,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,0,7,128,0,0, + 7,128,0,0,7,128,0,0,7,128,0,32,7,128,0,96, + 7,128,0,96,7,128,0,96,7,128,0,96,7,128,0,224, + 7,128,0,224,7,128,0,224,7,128,1,224,7,128,3,224, + 7,128,7,224,255,255,255,224,255,255,255,224,36,35,175,41, + 3,0,255,224,0,63,240,7,224,0,62,0,7,224,0,126, + 0,7,240,0,94,0,7,240,0,94,0,6,240,0,222,0, + 6,248,0,222,0,6,248,0,158,0,6,120,0,158,0,6, + 120,1,158,0,6,124,1,158,0,6,60,1,30,0,6,60, + 1,30,0,6,62,3,30,0,6,62,3,30,0,6,30,2, + 30,0,6,30,2,30,0,6,31,6,30,0,6,15,4,30, + 0,6,15,4,30,0,6,15,140,30,0,6,7,140,30,0, + 6,7,136,30,0,6,7,200,30,0,6,7,216,30,0,6, + 3,216,30,0,6,3,208,30,0,6,3,240,30,0,6,1, + 240,30,0,6,1,240,30,0,6,1,224,30,0,6,0,224, + 30,0,15,0,224,30,0,31,128,192,62,0,255,240,195,255, + 240,33,36,180,38,3,255,255,192,7,255,128,7,192,0,252, + 0,7,224,0,120,0,7,240,0,48,0,7,240,0,48,0, + 7,248,0,48,0,6,248,0,48,0,6,124,0,48,0,6, + 126,0,48,0,6,62,0,48,0,6,31,0,48,0,6,31, + 0,48,0,6,15,128,48,0,6,15,192,48,0,6,7,192, + 48,0,6,3,224,48,0,6,3,224,48,0,6,1,240,48, + 0,6,1,248,48,0,6,0,248,48,0,6,0,124,48,0, + 6,0,124,48,0,6,0,62,48,0,6,0,63,48,0,6, + 0,31,48,0,6,0,15,176,0,6,0,15,176,0,6,0, + 7,240,0,6,0,7,240,0,6,0,3,240,0,6,0,1, + 240,0,6,0,1,240,0,15,0,0,240,0,31,128,0,112, + 0,255,240,0,112,0,0,0,0,48,0,28,36,144,33,3, + 0,0,31,128,0,0,240,240,0,1,192,56,0,3,128,28, + 0,7,0,14,0,14,0,7,0,30,0,7,128,28,0,3, + 128,60,0,3,192,60,0,3,192,124,0,3,224,120,0,1, + 224,120,0,1,224,248,0,1,224,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,120,0,1, + 224,120,0,1,224,124,0,3,224,124,0,3,224,60,0,3, + 192,60,0,3,192,30,0,7,128,14,0,7,0,14,0,15, + 0,7,0,14,0,3,128,28,0,0,224,112,0,0,127,224, + 0,28,35,140,33,3,0,255,255,240,0,7,192,30,0,7, + 128,7,128,7,128,7,192,7,128,3,224,7,128,3,224,7, + 128,1,240,7,128,1,240,7,128,1,240,7,128,1,240,7, + 128,1,240,7,128,1,240,7,128,3,224,7,128,3,224,7, + 128,7,192,7,128,7,128,7,128,30,0,7,255,248,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,128,0,0,7, + 128,0,0,7,128,0,0,7,128,0,0,7,192,0,0,255, + 254,0,0,28,44,176,33,3,248,0,31,128,0,0,240,240, + 0,1,192,56,0,3,128,28,0,7,0,14,0,14,0,7, + 0,30,0,7,128,28,0,3,128,60,0,3,192,60,0,3, + 192,124,0,3,224,120,0,1,224,120,0,1,224,248,0,1, + 224,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,248,0,1,240,248,0,1,240,248,0,1, + 240,248,0,1,240,120,0,1,224,120,0,1,224,124,0,3, + 224,124,0,3,224,60,15,3,192,60,25,195,192,30,48,199, + 128,14,96,231,128,15,96,111,0,7,96,126,0,3,224,124, + 16,0,240,120,16,0,127,240,16,0,0,112,16,0,0,112, + 16,0,0,120,48,0,0,120,32,0,0,124,96,0,0,63, + 192,0,0,63,192,0,0,15,0,30,35,140,35,3,0,255, + 255,248,0,7,192,62,0,7,128,15,128,7,128,7,192,7, + 128,7,192,7,128,3,224,7,128,3,224,7,128,3,224,7, + 128,3,224,7,128,3,224,7,128,3,192,7,128,7,192,7, + 128,7,128,7,128,15,0,7,128,60,0,7,255,224,0,7, + 128,240,0,7,128,56,0,7,128,28,0,7,128,30,0,7, + 128,30,0,7,128,31,0,7,128,15,0,7,128,15,0,7, + 128,15,0,7,128,15,0,7,128,15,128,7,128,15,132,7, + 128,15,132,7,128,15,132,7,128,15,132,7,128,15,140,7, + 128,7,248,7,192,7,248,255,254,3,240,23,36,108,30,4, + 0,3,240,0,14,28,24,56,7,24,48,3,248,112,1,248, + 96,0,248,224,0,120,224,0,56,224,0,56,224,0,56,224, + 0,24,240,0,24,248,0,8,126,0,8,127,192,0,63,240, + 0,31,252,0,15,255,128,3,255,224,0,255,240,128,63,248, + 128,7,252,128,1,252,192,0,126,192,0,62,192,0,30,224, + 0,14,224,0,14,240,0,14,240,0,14,248,0,12,252,0, + 28,222,0,24,199,0,48,195,128,96,128,255,192,28,35,140, + 35,4,0,255,255,255,240,254,15,131,240,248,15,1,240,240, + 15,0,240,224,15,0,112,192,15,0,112,192,15,0,48,192, + 15,0,48,192,15,0,48,128,15,0,16,128,15,0,16,128, + 15,0,16,128,15,0,16,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0, + 15,0,0,0,15,0,0,0,15,128,0,3,255,254,0,34, + 35,175,39,3,0,255,252,3,255,192,7,192,0,126,0,7, + 128,0,60,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,7,128,0,24, + 0,7,128,0,24,0,7,128,0,24,0,7,128,0,24,0, + 7,128,0,24,0,7,128,0,24,0,7,128,0,24,0,7, + 128,0,24,0,7,128,0,24,0,7,128,0,24,0,7,128, + 0,24,0,7,128,0,24,0,7,128,0,24,0,7,128,0, + 24,0,7,128,0,24,0,7,128,0,24,0,3,192,0,24, + 0,3,192,0,48,0,3,192,0,48,0,1,224,0,96,0, + 0,224,0,96,0,0,112,0,192,0,0,60,3,128,0,0, + 15,254,0,0,34,36,180,37,2,255,255,255,7,255,192,15, + 240,0,126,0,3,224,0,56,0,3,224,0,56,0,3,240, + 0,48,0,1,240,0,48,0,1,240,0,48,0,0,248,0, + 96,0,0,248,0,96,0,0,248,0,96,0,0,124,0,192, + 0,0,124,0,192,0,0,124,0,192,0,0,62,0,192,0, + 0,62,1,128,0,0,62,1,128,0,0,31,1,128,0,0, + 31,3,0,0,0,31,3,0,0,0,15,131,0,0,0,15, + 134,0,0,0,15,134,0,0,0,7,198,0,0,0,7,204, + 0,0,0,3,204,0,0,0,3,236,0,0,0,3,232,0, + 0,0,1,248,0,0,0,1,248,0,0,0,1,248,0,0, + 0,0,240,0,0,0,0,240,0,0,0,0,240,0,0,0, + 0,96,0,0,0,0,96,0,0,0,0,96,0,0,49,36, + 252,52,2,255,255,254,127,255,15,255,128,15,240,15,248,1, + 248,0,3,224,3,240,0,240,0,3,224,3,224,0,96,0, + 3,224,3,240,0,96,0,1,240,3,240,0,96,0,1,240, + 3,240,0,192,0,1,240,3,240,0,192,0,0,240,7,248, + 0,192,0,0,248,6,248,0,128,0,0,248,6,248,1,128, + 0,0,248,6,124,1,128,0,0,120,14,124,1,128,0,0, + 124,12,124,3,0,0,0,124,12,62,3,0,0,0,60,28, + 62,3,0,0,0,60,24,62,6,0,0,0,60,24,30,6, + 0,0,0,62,24,31,6,0,0,0,30,56,31,12,0,0, + 0,30,48,31,12,0,0,0,30,48,15,140,0,0,0,15, + 48,15,152,0,0,0,15,112,15,152,0,0,0,15,96,7, + 216,0,0,0,15,96,7,208,0,0,0,7,224,7,240,0, + 0,0,7,192,3,240,0,0,0,7,192,3,240,0,0,0, + 3,192,3,224,0,0,0,3,192,3,224,0,0,0,3,128, + 1,224,0,0,0,1,128,1,192,0,0,0,1,128,1,192, + 0,0,0,1,128,0,192,0,0,0,1,0,0,128,0,0, + 33,35,175,36,2,0,127,255,31,255,0,3,240,3,240,0, + 1,240,1,224,0,1,240,1,192,0,0,248,1,128,0,0, + 120,3,0,0,0,124,3,0,0,0,60,6,0,0,0,62, + 14,0,0,0,31,12,0,0,0,31,24,0,0,0,15,152, + 0,0,0,15,176,0,0,0,7,224,0,0,0,7,224,0, + 0,0,3,224,0,0,0,3,224,0,0,0,1,240,0,0, + 0,3,240,0,0,0,3,248,0,0,0,6,248,0,0,0, + 14,124,0,0,0,12,124,0,0,0,24,62,0,0,0,56, + 62,0,0,0,48,31,0,0,0,96,31,0,0,0,224,15, + 128,0,0,192,15,128,0,1,128,7,192,0,3,128,7,192, + 0,3,128,3,224,0,7,128,3,240,0,31,192,3,248,0, + 255,248,63,255,128,32,35,140,35,2,0,255,254,15,255,15, + 224,1,248,7,224,0,240,3,224,0,96,3,240,0,64,1, + 240,0,192,1,248,0,128,0,248,0,128,0,252,1,0,0, + 124,3,0,0,62,2,0,0,62,6,0,0,31,4,0,0, + 31,12,0,0,15,136,0,0,7,216,0,0,7,208,0,0, + 3,240,0,0,3,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,224,0,0,1,224,0,0,1,224,0,0,1,224,0,0, + 1,240,0,0,127,255,192,26,35,140,32,3,0,63,255,255, + 192,63,128,15,128,62,0,31,128,60,0,31,0,56,0,62, + 0,56,0,62,0,48,0,124,0,48,0,252,0,96,0,248, + 0,96,1,240,0,64,3,240,0,64,3,224,0,0,7,192, + 0,0,7,192,0,0,15,128,0,0,31,128,0,0,31,0, + 0,0,62,0,0,0,126,0,0,0,124,0,0,0,252,0, + 0,0,248,0,64,1,240,0,64,3,240,0,64,3,224,0, + 192,7,192,0,192,7,192,0,192,15,128,1,192,31,128,1, + 192,31,0,3,192,62,0,3,192,126,0,7,192,124,0,15, + 128,248,0,63,128,255,255,255,128,10,45,90,19,6,247,255, + 192,254,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,240,0,240,0,240,0,240,0,240,0,240, + 0,240,0,240,0,254,0,255,192,16,46,92,22,3,246,192, + 0,192,0,192,0,96,0,96,0,96,0,48,0,48,0,48, + 0,24,0,24,0,24,0,12,0,12,0,12,0,6,0,6, + 0,6,0,2,0,3,0,3,0,3,0,1,128,1,128,1, + 128,0,192,0,192,0,192,0,96,0,96,0,96,0,48,0, + 48,0,48,0,24,0,24,0,24,0,12,0,12,0,12,0, + 6,0,6,0,6,0,3,0,3,0,3,10,45,90,19,3, + 247,255,192,31,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,31,192,255,192,22,18,54,28,3, + 17,0,16,0,0,48,0,0,56,0,0,120,0,0,108,0, + 0,206,0,1,198,0,1,131,0,3,3,0,7,1,128,6, + 1,192,14,0,192,28,0,96,24,0,112,56,0,48,48,0, + 56,96,0,24,224,0,12,25,2,8,25,0,248,255,255,255, + 128,255,255,255,128,8,9,9,22,4,25,224,240,240,120,60, + 12,6,3,1,21,22,66,24,2,1,7,248,0,24,30,0, + 16,15,0,48,7,0,56,7,128,60,7,128,62,7,128,28, + 7,128,0,7,128,0,31,128,3,247,128,31,7,128,60,7, + 128,120,7,128,248,7,128,240,7,128,240,15,136,240,15,136, + 240,23,136,248,23,152,120,39,240,63,195,240,22,35,105,25, + 1,0,255,0,0,15,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,31,128,15,32,224,15, + 64,240,15,192,112,15,128,120,15,128,120,15,0,120,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,60, + 15,0,60,15,0,60,15,0,120,15,0,120,15,128,120,13, + 128,112,12,192,224,12,96,224,8,63,128,17,22,66,21,2, + 1,7,252,0,14,6,0,28,3,0,56,3,0,56,3,128, + 120,15,128,120,15,128,240,15,128,240,7,0,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,128,120,0, + 128,120,0,128,56,1,0,56,1,0,28,2,0,14,6,0, + 7,248,0,22,35,105,25,2,0,0,63,192,0,3,192,0, + 3,192,0,3,192,0,3,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 15,227,192,28,19,192,60,11,192,56,15,192,120,7,192,120, + 7,192,120,3,192,240,3,192,240,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,120,3,192, + 120,3,192,120,7,192,56,7,192,60,15,192,28,27,192,7, + 243,252,18,22,66,22,2,1,7,248,0,14,28,0,28,14, + 0,56,15,0,56,7,128,120,7,128,120,7,128,240,7,192, + 240,7,192,240,7,192,255,255,192,240,0,0,240,0,0,240, + 0,0,240,0,128,120,0,128,120,0,128,120,1,128,56,1, + 0,28,3,0,14,6,0,7,252,0,16,35,70,16,1,0, + 0,248,3,198,7,3,15,7,14,15,14,15,30,15,30,6, + 30,0,30,0,30,0,30,0,30,0,255,240,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,255,240,23,33,99,27,3,246,7,252,124,30, + 14,206,60,7,142,124,7,158,120,3,222,120,3,192,120,3, + 192,120,3,192,120,3,192,120,3,192,60,7,128,28,7,128, + 14,14,0,3,248,0,28,0,0,96,0,0,192,0,0,192, + 0,0,224,0,0,255,255,128,127,255,224,15,255,240,28,0, + 112,48,0,56,96,0,24,192,0,24,192,0,24,192,0,24, + 192,0,48,96,0,48,120,0,96,30,7,192,3,254,0,24, + 35,105,27,1,0,255,0,0,15,0,0,15,0,0,15,0, + 0,15,0,0,15,0,0,15,0,0,15,0,0,15,0,0, + 15,0,0,15,0,0,15,0,0,15,0,0,15,15,192,15, + 48,240,15,32,112,15,64,120,15,128,120,15,128,120,15,0, + 120,15,0,120,15,0,120,15,0,120,15,0,120,15,0,120, + 15,0,120,15,0,120,15,0,120,15,0,120,15,0,120,15, + 0,120,15,0,120,15,0,120,15,0,120,255,195,255,10,34, + 68,14,2,0,28,0,62,0,62,0,62,0,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,254,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,30,0,30,0,30,0,30,0,30,0, + 30,0,30,0,30,0,255,192,13,45,90,16,254,245,0,112, + 0,248,0,248,0,248,0,112,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,15,248,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,0,120,0,120,0,120, + 0,120,0,120,0,120,0,120,0,120,240,120,240,120,240,112, + 224,240,96,224,115,192,31,0,22,35,105,24,1,0,254,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,15,252,30,3,224,30,1,128,30,3, + 0,30,6,0,30,6,0,30,12,0,30,24,0,30,48,0, + 30,120,0,30,248,0,30,188,0,31,190,0,31,30,0,30, + 15,0,30,15,128,30,7,128,30,3,192,30,3,224,30,1, + 224,30,3,240,255,207,252,11,35,70,13,1,0,254,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,255,224,36,22,110,40,2,1,254,63,129,252,0,30,97, + 195,14,0,30,193,230,15,0,30,128,228,7,128,31,0,248, + 7,128,31,0,248,7,128,30,0,240,7,128,30,0,240,7, + 128,30,0,240,7,128,30,0,240,7,128,30,0,240,7,128, + 30,0,240,7,128,30,0,240,7,128,30,0,240,7,128,30, + 0,240,7,128,30,0,240,7,128,30,0,240,7,128,30,0, + 240,7,128,30,0,240,7,128,30,0,240,7,128,30,0,240, + 7,128,255,199,254,63,240,23,22,66,27,2,1,254,31,128, + 30,97,224,30,192,224,30,128,240,31,0,240,31,0,240,30, + 0,240,30,0,240,30,0,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,255,199,254,19, + 22,66,24,2,1,3,252,0,14,14,0,28,7,0,60,3, + 128,56,3,192,120,3,192,120,1,224,248,1,224,240,1,224, + 240,1,224,240,1,224,240,1,224,240,1,224,240,1,224,240, + 1,224,120,1,224,120,3,192,56,3,192,60,3,128,28,7, + 0,14,14,0,3,252,0,22,33,99,25,1,246,254,63,128, + 30,97,192,30,192,224,31,128,112,31,0,120,31,0,120,30, + 0,120,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,120,30,0,120, + 31,0,120,31,0,112,31,128,224,30,192,192,30,127,128,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,30,0, + 0,30,0,0,30,0,0,30,0,0,30,0,0,255,224,0, + 22,33,99,25,2,246,7,240,64,28,24,192,28,12,192,56, + 12,192,120,7,192,120,7,192,120,3,192,240,3,192,240,3, + 192,240,3,192,240,3,192,240,3,192,240,3,192,240,3,192, + 240,3,192,120,3,192,120,3,192,120,7,192,56,7,192,60, + 15,192,28,27,192,7,243,192,0,3,192,0,3,192,0,3, + 192,0,3,192,0,3,192,0,3,192,0,3,192,0,3,192, + 0,3,192,0,3,192,0,31,252,17,22,66,20,2,1,254, + 31,0,30,35,128,30,67,128,30,207,128,30,143,128,31,143, + 0,31,2,0,31,0,0,31,0,0,30,0,0,30,0,0, + 30,0,0,30,0,0,30,0,0,30,0,0,30,0,0,30, + 0,0,30,0,0,30,0,0,30,0,0,30,0,0,255,192, + 0,17,22,66,22,3,1,31,226,0,112,50,0,96,30,0, + 192,14,0,192,6,0,224,2,0,240,2,0,252,0,0,127, + 0,0,63,192,0,31,248,0,7,254,0,128,255,0,192,31, + 0,192,7,128,224,3,128,224,1,128,240,1,128,240,1,128, + 248,3,0,198,7,0,131,252,0,14,32,64,17,1,0,2, + 0,2,0,2,0,2,0,2,0,6,0,6,0,6,0,14, + 0,30,0,255,248,30,0,30,0,30,0,30,0,30,0,30, + 0,30,0,30,0,30,0,30,0,30,0,30,0,30,0,30, + 0,30,4,30,4,30,4,30,12,15,8,15,248,7,240,23, + 22,66,27,2,0,254,7,240,30,0,240,30,0,240,30,0, + 240,30,0,240,30,0,240,30,0,240,30,0,240,30,0,240, + 30,0,240,30,0,240,30,0,240,30,0,240,30,0,240,30, + 0,240,30,1,240,30,1,240,30,1,240,30,2,240,14,6, + 240,15,12,240,3,240,254,24,23,69,26,1,255,255,225,255, + 31,0,124,15,0,48,15,0,48,15,0,32,7,128,96,7, + 128,96,3,192,64,3,192,192,1,192,192,1,224,128,1,225, + 128,0,241,128,0,241,0,0,113,0,0,123,0,0,58,0, + 0,62,0,0,62,0,0,28,0,0,28,0,0,12,0,0, + 8,0,36,23,115,38,1,255,255,231,255,31,240,31,1,248, + 7,128,31,0,240,3,0,15,0,120,3,0,15,0,120,2, + 0,7,128,120,6,0,7,128,252,6,0,3,128,252,4,0, + 3,192,188,12,0,3,192,158,12,0,1,225,158,8,0,1, + 225,14,24,0,0,225,15,24,0,0,243,15,16,0,0,242, + 7,48,0,0,114,7,176,0,0,126,7,160,0,0,62,3, + 224,0,0,60,3,192,0,0,28,1,192,0,0,28,1,192, + 0,0,24,1,128,0,0,8,0,128,0,22,22,66,26,2, + 0,255,207,248,31,3,192,31,3,128,15,3,0,7,131,0, + 7,198,0,3,196,0,1,236,0,1,248,0,0,240,0,0, + 112,0,0,120,0,0,124,0,0,220,0,1,158,0,1,15, + 0,3,15,0,6,7,128,4,7,192,12,3,192,28,3,224, + 255,15,252,24,33,99,26,1,245,255,225,255,31,0,120,15, + 0,48,15,0,48,7,0,32,7,128,96,7,128,96,3,192, + 64,3,192,192,3,192,192,1,224,128,1,225,128,0,225,128, + 0,241,128,0,241,0,0,115,0,0,123,0,0,122,0,0, + 62,0,0,62,0,0,60,0,0,28,0,0,28,0,0,24, + 0,0,24,0,0,24,0,24,48,0,60,48,0,60,48,0, + 60,96,0,56,96,0,31,192,0,15,0,0,17,22,66,22, + 2,0,255,255,128,248,7,128,224,15,0,224,31,0,192,30, + 0,192,60,0,128,124,0,128,120,0,0,240,0,1,240,0, + 1,224,0,3,192,0,7,192,0,7,128,128,15,0,128,31, + 0,128,30,0,128,60,1,128,124,1,128,120,3,128,240,15, + 128,255,255,128,11,45,90,21,6,247,0,224,1,128,7,0, + 14,0,12,0,28,0,28,0,28,0,28,0,30,0,30,0, + 14,0,14,0,15,0,15,0,7,0,7,0,7,0,7,0, + 6,0,4,0,24,0,224,0,56,0,12,0,6,0,6,0, + 7,0,7,0,7,0,15,0,15,0,15,0,14,0,30,0, + 30,0,28,0,28,0,28,0,28,0,12,0,12,0,6,0, + 3,128,0,224,2,46,46,14,6,246,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,45,90,20,4,247,192,0, + 112,0,28,0,12,0,6,0,7,0,7,0,7,0,7,0, + 15,0,15,0,14,0,30,0,30,0,30,0,28,0,28,0, + 28,0,28,0,12,0,4,0,3,0,0,224,3,0,6,0, + 12,0,28,0,28,0,28,0,28,0,30,0,30,0,30,0, + 14,0,15,0,15,0,7,0,7,0,7,0,7,0,6,0, + 6,0,12,0,56,0,224,0,28,9,36,32,2,8,31,128, + 0,192,127,240,0,96,127,252,0,48,227,255,0,48,192,127, + 224,48,192,31,248,112,192,3,255,224,96,0,255,192,48,0, + 31,128,255}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 4, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 4 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01type[1163] U8G_SECTION(".progmem.u8g_font_p01type") = { + 0,5,6,0,254,4,1,81,2,129,32,255,254,4,254,5, + 254,0,0,0,4,0,0,1,5,5,3,1,255,128,128,128, + 0,128,3,2,2,4,0,2,160,160,5,5,5,6,0,255, + 80,248,80,248,80,255,4,4,4,5,0,0,144,32,64,144, + 4,5,5,5,0,255,64,128,80,160,80,1,2,2,2,0, + 2,128,128,2,5,5,3,0,255,64,128,128,128,64,2,5, + 5,3,0,255,128,64,64,64,128,3,3,3,4,0,0,160, + 64,160,3,3,3,4,0,0,64,224,64,2,2,2,3,0, + 255,64,128,3,1,1,4,0,1,224,1,1,1,2,0,0, + 128,4,4,4,5,0,255,16,32,64,128,3,5,5,4,0, + 255,96,160,160,160,192,1,5,5,2,0,255,128,128,128,128, + 128,3,5,5,4,0,255,192,32,224,128,96,3,5,5,4, + 0,255,192,32,192,32,192,3,5,5,4,0,255,160,160,224, + 32,32,3,5,5,4,0,255,96,128,224,32,192,3,5,5, + 4,0,255,96,128,224,160,192,3,5,5,4,0,255,224,32, + 32,64,64,3,5,5,4,0,255,96,160,224,160,192,3,5, + 5,4,0,255,96,160,224,32,192,1,3,3,2,0,0,128, + 0,128,2,4,4,3,0,255,64,0,64,128,3,5,5,4, + 0,255,32,64,128,64,32,3,3,3,4,0,0,224,0,224, + 3,5,5,4,0,255,128,64,32,64,128,4,5,5,5,0, + 255,224,16,96,0,64,4,5,5,5,0,255,112,144,176,128, + 224,4,4,4,5,0,0,112,144,240,144,4,5,5,5,0, + 255,112,144,224,144,224,4,4,4,5,0,0,112,128,128,240, + 4,4,4,5,0,0,224,144,144,240,4,5,5,5,0,255, + 112,128,224,128,112,4,4,4,5,0,0,240,128,224,128,4, + 4,4,5,0,0,112,128,144,224,4,4,4,5,0,0,144, + 144,240,144,1,4,4,2,0,0,128,128,128,128,2,4,4, + 3,0,0,64,64,64,128,4,4,4,5,0,0,144,144,224, + 144,4,4,4,5,0,0,128,128,128,112,4,4,4,5,0, + 0,144,240,144,144,4,4,4,5,0,0,144,208,176,144,4, + 4,4,5,0,0,112,144,144,224,4,4,4,5,0,0,112, + 144,224,128,4,4,4,5,0,0,112,144,160,208,4,4,4, + 5,0,0,112,144,224,144,4,5,5,5,0,255,112,128,240, + 16,224,5,4,4,6,0,0,248,32,32,32,4,4,4,5, + 0,0,144,144,144,224,4,4,4,5,0,0,144,144,144,96, + 5,4,4,6,0,0,168,168,168,216,4,4,4,5,0,0, + 144,144,96,144,4,4,4,5,0,0,144,240,16,224,4,4, + 4,5,0,0,240,32,64,240,2,5,5,3,0,255,192,128, + 128,128,192,4,4,4,5,0,255,128,64,32,16,2,5,5, + 3,0,255,192,64,64,64,192,255,4,1,1,5,0,255,240, + 255,3,3,3,4,0,0,96,160,224,3,4,4,4,0,0, + 128,224,160,192,3,3,3,4,0,0,96,128,224,3,4,4, + 4,0,0,32,96,160,224,3,5,5,4,0,254,96,160,224, + 128,96,3,4,4,4,0,0,96,64,224,64,3,5,5,4, + 0,254,96,160,224,32,192,3,4,4,4,0,0,128,192,160, + 160,1,3,3,2,0,0,128,128,128,2,5,5,3,0,254, + 64,64,64,64,128,3,4,4,4,0,0,128,160,192,160,1, + 4,4,2,0,0,128,128,128,128,5,3,3,6,0,0,80, + 168,168,3,3,3,4,0,0,192,160,160,3,3,3,4,0, + 0,96,160,192,3,5,5,4,0,254,96,160,192,128,128,3, + 5,5,4,0,254,192,160,96,32,32,3,3,3,4,0,0, + 96,128,128,3,5,5,4,0,254,96,128,224,32,192,3,4, + 4,4,0,0,64,224,64,32,3,3,3,4,0,0,160,160, + 96,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,5,5,4, + 0,254,160,160,96,32,192,3,3,3,4,0,0,224,64,224, + 3,5,5,4,0,255,96,64,128,64,96,1,5,5,2,0, + 255,128,128,128,128,128,3,5,5,4,0,255,192,64,32,64, + 192,4,2,2,5,0,1,80,160,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,1,5,5,2,0, + 255,128,0,128,128,128,255,255,255,255,1,5,5,3,1,255, + 128,128,0,128,128,255,255,255,255,5,5,5,6,0,255,40, + 80,160,80,40,3,2,2,4,0,0,224,32,3,1,1,4, + 0,1,224,255,255,255,3,5,5,4,0,255,64,224,64,0, + 224,255,255,255,255,255,1,1,1,2,0,1,128,255,255,255, + 5,5,5,6,0,255,160,80,40,80,160,255,255,255,4,5, + 5,5,0,255,32,0,96,128,112,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 3,3,3,4,0,0,160,64,160,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,3,5,5,4,0,255,64,0, + 224,0,64,255,255,255,255,255,255,255,255}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 5 x= 0 y= 1 dx= 5 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 4 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01typen[177] U8G_SECTION(".progmem.u8g_font_p01typen") = { + 0,5,6,0,254,5,0,0,0,0,42,57,0,4,255,5, + 0,3,3,3,4,0,0,160,64,160,3,3,3,4,0,0, + 64,224,64,2,2,2,3,0,255,64,128,3,1,1,4,0, + 1,224,1,1,1,2,0,0,128,4,4,4,5,0,255,16, + 32,64,128,3,5,5,4,0,255,96,160,160,160,192,1,5, + 5,2,0,255,128,128,128,128,128,3,5,5,4,0,255,192, + 32,224,128,96,3,5,5,4,0,255,192,32,192,32,192,3, + 5,5,4,0,255,160,160,224,32,32,3,5,5,4,0,255, + 96,128,224,32,192,3,5,5,4,0,255,96,128,224,160,192, + 3,5,5,4,0,255,224,32,32,64,64,3,5,5,4,0, + 255,96,160,224,160,192,3,5,5,4,0,255,96,160,224,32, + 192}; +/* + Fontname: -FreeType-P01type-Medium-R-Normal--8-80-72-72-P-35-ISO10646-1 + Copyright: Copyright Patrick Lauke 2012 + Capital A Height: 4, '1' Height: 5 + Calculated Max Values w= 5 h= 5 x= 1 y= 2 dx= 6 dy= 0 ascent= 4 len= 5 + Font Bounding box w= 5 h= 6 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 4 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_p01typer[938] U8G_SECTION(".progmem.u8g_font_p01typer") = { + 0,5,6,0,254,4,1,81,2,129,32,127,254,4,254,5, + 254,0,0,0,4,0,0,1,5,5,3,1,255,128,128,128, + 0,128,3,2,2,4,0,2,160,160,5,5,5,6,0,255, + 80,248,80,248,80,255,4,4,4,5,0,0,144,32,64,144, + 4,5,5,5,0,255,64,128,80,160,80,1,2,2,2,0, + 2,128,128,2,5,5,3,0,255,64,128,128,128,64,2,5, + 5,3,0,255,128,64,64,64,128,3,3,3,4,0,0,160, + 64,160,3,3,3,4,0,0,64,224,64,2,2,2,3,0, + 255,64,128,3,1,1,4,0,1,224,1,1,1,2,0,0, + 128,4,4,4,5,0,255,16,32,64,128,3,5,5,4,0, + 255,96,160,160,160,192,1,5,5,2,0,255,128,128,128,128, + 128,3,5,5,4,0,255,192,32,224,128,96,3,5,5,4, + 0,255,192,32,192,32,192,3,5,5,4,0,255,160,160,224, + 32,32,3,5,5,4,0,255,96,128,224,32,192,3,5,5, + 4,0,255,96,128,224,160,192,3,5,5,4,0,255,224,32, + 32,64,64,3,5,5,4,0,255,96,160,224,160,192,3,5, + 5,4,0,255,96,160,224,32,192,1,3,3,2,0,0,128, + 0,128,2,4,4,3,0,255,64,0,64,128,3,5,5,4, + 0,255,32,64,128,64,32,3,3,3,4,0,0,224,0,224, + 3,5,5,4,0,255,128,64,32,64,128,4,5,5,5,0, + 255,224,16,96,0,64,4,5,5,5,0,255,112,144,176,128, + 224,4,4,4,5,0,0,112,144,240,144,4,5,5,5,0, + 255,112,144,224,144,224,4,4,4,5,0,0,112,128,128,240, + 4,4,4,5,0,0,224,144,144,240,4,5,5,5,0,255, + 112,128,224,128,112,4,4,4,5,0,0,240,128,224,128,4, + 4,4,5,0,0,112,128,144,224,4,4,4,5,0,0,144, + 144,240,144,1,4,4,2,0,0,128,128,128,128,2,4,4, + 3,0,0,64,64,64,128,4,4,4,5,0,0,144,144,224, + 144,4,4,4,5,0,0,128,128,128,112,4,4,4,5,0, + 0,144,240,144,144,4,4,4,5,0,0,144,208,176,144,4, + 4,4,5,0,0,112,144,144,224,4,4,4,5,0,0,112, + 144,224,128,4,4,4,5,0,0,112,144,160,208,4,4,4, + 5,0,0,112,144,224,144,4,5,5,5,0,255,112,128,240, + 16,224,5,4,4,6,0,0,248,32,32,32,4,4,4,5, + 0,0,144,144,144,224,4,4,4,5,0,0,144,144,144,96, + 5,4,4,6,0,0,168,168,168,216,4,4,4,5,0,0, + 144,144,96,144,4,4,4,5,0,0,144,240,16,224,4,4, + 4,5,0,0,240,32,64,240,2,5,5,3,0,255,192,128, + 128,128,192,4,4,4,5,0,255,128,64,32,16,2,5,5, + 3,0,255,192,64,64,64,192,255,4,1,1,5,0,255,240, + 255,3,3,3,4,0,0,96,160,224,3,4,4,4,0,0, + 128,224,160,192,3,3,3,4,0,0,96,128,224,3,4,4, + 4,0,0,32,96,160,224,3,5,5,4,0,254,96,160,224, + 128,96,3,4,4,4,0,0,96,64,224,64,3,5,5,4, + 0,254,96,160,224,32,192,3,4,4,4,0,0,128,192,160, + 160,1,3,3,2,0,0,128,128,128,2,5,5,3,0,254, + 64,64,64,64,128,3,4,4,4,0,0,128,160,192,160,1, + 4,4,2,0,0,128,128,128,128,5,3,3,6,0,0,80, + 168,168,3,3,3,4,0,0,192,160,160,3,3,3,4,0, + 0,96,160,192,3,5,5,4,0,254,96,160,192,128,128,3, + 5,5,4,0,254,192,160,96,32,32,3,3,3,4,0,0, + 96,128,128,3,5,5,4,0,254,96,128,224,32,192,3,4, + 4,4,0,0,64,224,64,32,3,3,3,4,0,0,160,160, + 96,3,3,3,4,0,0,160,160,64,5,3,3,6,0,0, + 168,168,80,3,3,3,4,0,0,160,64,160,3,5,5,4, + 0,254,160,160,96,32,192,3,3,3,4,0,0,224,64,224, + 3,5,5,4,0,255,96,64,128,64,96,1,5,5,2,0, + 255,128,128,128,128,128,3,5,5,4,0,255,192,64,32,64, + 192,4,2,2,5,0,1,80,160,255}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 4 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[1140] U8G_SECTION(".progmem.u8g_font_pixelle_micro") = { + 0,6,8,255,254,5,1,97,2,188,32,255,254,6,254,6, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,0, + 80,248,80,248,80,3,7,7,4,0,255,64,224,128,224,32, + 224,64,4,4,4,5,0,0,144,32,64,144,4,5,5,5, + 0,0,96,64,208,160,208,1,2,2,2,0,3,128,128,2, + 7,7,3,0,255,64,128,128,128,128,128,64,2,7,7,3, + 0,255,128,64,64,64,64,64,128,3,4,4,4,0,0,64, + 224,64,160,3,3,3,4,0,0,64,224,64,1,2,2,2, + 0,255,128,128,3,1,1,4,0,1,224,1,1,1,2,0, + 0,128,3,6,6,4,0,0,32,32,64,64,128,128,3,5, + 5,4,0,0,64,160,224,160,64,3,5,5,4,0,0,192, + 64,64,64,224,3,5,5,4,0,0,64,160,32,64,224,3, + 5,5,4,0,0,192,32,64,32,192,3,5,5,4,0,0, + 160,160,224,32,32,3,5,5,4,0,0,224,128,224,32,192, + 3,5,5,4,0,0,64,160,192,160,64,3,5,5,4,0, + 0,224,32,64,64,128,3,5,5,4,0,0,64,160,64,160, + 64,3,5,5,4,0,0,64,160,96,160,64,1,3,3,2, + 0,0,128,0,128,1,4,4,2,0,255,128,0,128,128,2, + 3,3,3,0,0,64,128,64,3,3,3,4,0,0,224,0, + 224,2,3,3,3,0,0,128,64,128,3,5,5,4,0,0, + 64,160,32,64,64,5,6,6,6,0,0,112,136,168,184,128, + 120,3,5,5,4,0,0,64,160,224,160,160,3,5,5,4, + 0,0,192,160,192,160,192,3,5,5,4,0,0,64,160,128, + 160,64,3,5,5,4,0,0,192,160,160,160,192,3,5,5, + 4,0,0,224,128,192,128,224,3,5,5,4,0,0,224,128, + 192,128,128,3,5,5,4,0,0,64,160,128,160,96,3,5, + 5,4,0,0,160,160,224,160,160,3,5,5,4,0,0,224, + 64,64,64,224,3,5,5,4,0,0,32,32,32,160,64,3, + 5,5,4,0,0,160,160,192,160,160,3,5,5,4,0,0, + 128,128,128,128,224,3,5,5,4,0,0,160,224,224,160,160, + 3,5,5,4,0,0,160,224,224,224,160,3,5,5,4,0, + 0,64,160,160,160,64,3,5,5,4,0,0,192,160,192,128, + 128,3,5,5,4,0,0,64,160,160,224,96,3,5,5,4, + 0,0,192,160,192,160,160,3,5,5,4,0,0,96,128,64, + 32,224,3,5,5,4,0,0,224,64,64,64,64,3,5,5, + 4,0,0,160,160,160,160,64,3,5,5,4,0,0,160,160, + 160,64,64,3,5,5,4,0,0,160,160,224,224,160,3,5, + 5,4,0,0,160,160,64,160,160,3,5,5,4,0,0,160, + 160,64,64,64,3,5,5,4,0,0,224,32,64,128,224,2, + 7,7,3,0,255,192,128,128,128,128,128,192,3,6,6,4, + 0,0,128,128,64,64,32,32,2,7,7,3,0,255,192,64, + 64,64,64,64,192,3,2,2,4,0,3,64,160,3,1,1, + 4,0,0,224,1,2,2,2,0,4,128,128,3,3,3,4, + 0,0,96,160,96,3,5,5,4,0,0,128,128,192,160,192, + 3,3,3,4,0,0,96,128,96,3,5,5,4,0,0,32, + 32,96,160,96,3,3,3,4,0,0,96,224,96,2,5,5, + 3,0,0,64,128,192,128,128,3,5,5,4,0,254,96,160, + 96,160,64,3,5,5,4,0,0,128,128,192,160,160,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,160,64,3,6,6,4,0,0,128,128,128,160, + 192,160,1,6,6,2,0,0,128,128,128,128,128,128,5,3, + 3,6,0,0,208,168,168,3,3,3,4,0,0,192,160,160, + 3,3,3,4,0,0,64,160,64,3,5,5,4,0,254,192, + 160,192,128,128,3,5,5,4,0,254,96,160,96,32,32,3, + 3,3,4,0,0,192,160,128,3,3,3,4,0,0,96,64, + 192,3,5,5,4,0,0,64,64,224,64,64,3,3,3,4, + 0,0,160,160,64,3,3,3,4,0,0,160,64,64,5,3, + 3,6,0,0,168,168,208,3,3,3,4,0,0,160,64,160, + 3,5,5,4,0,254,160,160,96,160,64,3,3,3,4,0, + 0,224,64,224,3,7,7,4,0,255,32,64,64,128,64,64, + 32,1,7,7,2,0,255,128,128,128,128,128,128,128,3,7, + 7,4,0,255,128,64,64,32,64,64,128,4,2,2,5,0, + 1,80,160,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 6 x= 0 y= 1 dx= 4 dy= 0 ascent= 6 len= 6 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[180] U8G_SECTION(".progmem.u8g_font_pixelle_micron") = { + 0,6,8,255,254,5,0,0,0,0,42,57,0,6,255,5, + 0,3,4,4,4,0,0,64,224,64,160,3,3,3,4,0, + 0,64,224,64,1,2,2,2,0,255,128,128,3,1,1,4, + 0,1,224,1,1,1,2,0,0,128,3,6,6,4,0,0, + 32,32,64,64,128,128,3,5,5,4,0,0,64,160,224,160, + 64,3,5,5,4,0,0,192,64,64,64,224,3,5,5,4, + 0,0,64,160,32,64,224,3,5,5,4,0,0,192,32,64, + 32,192,3,5,5,4,0,0,160,160,224,32,32,3,5,5, + 4,0,0,224,128,224,32,192,3,5,5,4,0,0,64,160, + 192,160,64,3,5,5,4,0,0,224,32,64,64,128,3,5, + 5,4,0,0,64,160,64,160,64,3,5,5,4,0,0,64, + 160,96,160,64}; +/* + Fontname: -FreeType-Pixelle (Micro)-Medium-R-Normal--8-80-72-72-P-32-ISO10646-1 + Copyright: Copyright rdonaghy 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 4 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 6 h= 8 x=-1 y=-2 + Calculated Min Values x=-1 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[1012] U8G_SECTION(".progmem.u8g_font_pixelle_micror") = { + 0,6,8,255,254,5,1,97,2,188,32,127,254,6,254,6, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,0, + 80,248,80,248,80,3,7,7,4,0,255,64,224,128,224,32, + 224,64,4,4,4,5,0,0,144,32,64,144,4,5,5,5, + 0,0,96,64,208,160,208,1,2,2,2,0,3,128,128,2, + 7,7,3,0,255,64,128,128,128,128,128,64,2,7,7,3, + 0,255,128,64,64,64,64,64,128,3,4,4,4,0,0,64, + 224,64,160,3,3,3,4,0,0,64,224,64,1,2,2,2, + 0,255,128,128,3,1,1,4,0,1,224,1,1,1,2,0, + 0,128,3,6,6,4,0,0,32,32,64,64,128,128,3,5, + 5,4,0,0,64,160,224,160,64,3,5,5,4,0,0,192, + 64,64,64,224,3,5,5,4,0,0,64,160,32,64,224,3, + 5,5,4,0,0,192,32,64,32,192,3,5,5,4,0,0, + 160,160,224,32,32,3,5,5,4,0,0,224,128,224,32,192, + 3,5,5,4,0,0,64,160,192,160,64,3,5,5,4,0, + 0,224,32,64,64,128,3,5,5,4,0,0,64,160,64,160, + 64,3,5,5,4,0,0,64,160,96,160,64,1,3,3,2, + 0,0,128,0,128,1,4,4,2,0,255,128,0,128,128,2, + 3,3,3,0,0,64,128,64,3,3,3,4,0,0,224,0, + 224,2,3,3,3,0,0,128,64,128,3,5,5,4,0,0, + 64,160,32,64,64,5,6,6,6,0,0,112,136,168,184,128, + 120,3,5,5,4,0,0,64,160,224,160,160,3,5,5,4, + 0,0,192,160,192,160,192,3,5,5,4,0,0,64,160,128, + 160,64,3,5,5,4,0,0,192,160,160,160,192,3,5,5, + 4,0,0,224,128,192,128,224,3,5,5,4,0,0,224,128, + 192,128,128,3,5,5,4,0,0,64,160,128,160,96,3,5, + 5,4,0,0,160,160,224,160,160,3,5,5,4,0,0,224, + 64,64,64,224,3,5,5,4,0,0,32,32,32,160,64,3, + 5,5,4,0,0,160,160,192,160,160,3,5,5,4,0,0, + 128,128,128,128,224,3,5,5,4,0,0,160,224,224,160,160, + 3,5,5,4,0,0,160,224,224,224,160,3,5,5,4,0, + 0,64,160,160,160,64,3,5,5,4,0,0,192,160,192,128, + 128,3,5,5,4,0,0,64,160,160,224,96,3,5,5,4, + 0,0,192,160,192,160,160,3,5,5,4,0,0,96,128,64, + 32,224,3,5,5,4,0,0,224,64,64,64,64,3,5,5, + 4,0,0,160,160,160,160,64,3,5,5,4,0,0,160,160, + 160,64,64,3,5,5,4,0,0,160,160,224,224,160,3,5, + 5,4,0,0,160,160,64,160,160,3,5,5,4,0,0,160, + 160,64,64,64,3,5,5,4,0,0,224,32,64,128,224,2, + 7,7,3,0,255,192,128,128,128,128,128,192,3,6,6,4, + 0,0,128,128,64,64,32,32,2,7,7,3,0,255,192,64, + 64,64,64,64,192,3,2,2,4,0,3,64,160,3,1,1, + 4,0,0,224,1,2,2,2,0,4,128,128,3,3,3,4, + 0,0,96,160,96,3,5,5,4,0,0,128,128,192,160,192, + 3,3,3,4,0,0,96,128,96,3,5,5,4,0,0,32, + 32,96,160,96,3,3,3,4,0,0,96,224,96,2,5,5, + 3,0,0,64,128,192,128,128,3,5,5,4,0,254,96,160, + 96,160,64,3,5,5,4,0,0,128,128,192,160,160,1,5, + 5,2,0,0,128,0,128,128,128,3,7,7,3,255,254,32, + 0,32,32,32,160,64,3,6,6,4,0,0,128,128,128,160, + 192,160,1,6,6,2,0,0,128,128,128,128,128,128,5,3, + 3,6,0,0,208,168,168,3,3,3,4,0,0,192,160,160, + 3,3,3,4,0,0,64,160,64,3,5,5,4,0,254,192, + 160,192,128,128,3,5,5,4,0,254,96,160,96,32,32,3, + 3,3,4,0,0,192,160,128,3,3,3,4,0,0,96,64, + 192,3,5,5,4,0,0,64,64,224,64,64,3,3,3,4, + 0,0,160,160,64,3,3,3,4,0,0,160,64,64,5,3, + 3,6,0,0,168,168,208,3,3,3,4,0,0,160,64,160, + 3,5,5,4,0,254,160,160,96,160,64,3,3,3,4,0, + 0,224,64,224,3,7,7,4,0,255,32,64,64,128,64,64, + 32,1,7,7,2,0,255,128,128,128,128,128,128,128,3,7, + 7,4,0,255,128,64,64,32,64,64,128,4,2,2,5,0, + 1,80,160,255}; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 6, '1' Height: 5 + Calculated Max Values w= 7 h= 8 x= 0 y= 6 dx= 8 dy= 0 ascent=10 len= 8 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x=-1 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 1 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[1376] U8G_SECTION(".progmem.u8g_font_robot_de_niro") = { + 0,10,10,255,0,6,1,97,2,193,32,255,1,10,0,9, + 0,0,0,0,2,0,0,2,5,5,3,0,3,192,128,128, + 0,128,3,2,2,4,0,6,160,160,5,5,5,6,0,3, + 80,248,80,248,80,4,7,7,5,0,2,96,224,16,96,128, + 112,96,5,5,5,6,0,3,192,208,32,88,24,4,5,5, + 5,0,3,96,160,80,160,80,1,2,2,2,0,6,128,128, + 2,7,7,3,0,2,64,128,128,128,128,128,64,2,7,7, + 3,0,2,128,64,64,64,64,64,128,3,3,3,4,0,6, + 160,64,160,3,3,3,4,0,4,64,224,64,2,2,2,3, + 0,2,64,128,3,1,1,4,0,5,224,1,1,1,2,0, + 3,128,3,5,5,4,0,3,32,32,64,128,128,3,5,5, + 4,0,3,64,160,160,160,64,3,5,5,4,0,3,192,64, + 64,64,224,3,5,5,4,0,3,192,32,96,128,224,3,5, + 5,4,0,3,192,32,224,32,224,3,5,5,4,0,3,160, + 160,224,32,32,3,5,5,4,0,3,96,128,224,32,224,3, + 5,5,4,0,3,96,128,224,160,64,4,5,5,5,0,3, + 224,32,112,32,32,3,5,5,4,0,3,96,160,224,160,192, + 3,5,5,4,0,3,96,160,224,32,192,1,3,3,2,0, + 4,128,0,128,2,4,4,3,0,3,64,0,64,128,2,3, + 3,3,0,4,64,128,64,3,3,3,4,0,4,224,0,224, + 2,3,3,3,0,4,128,64,128,3,5,5,4,0,3,224, + 32,64,0,64,5,7,7,6,0,2,120,136,184,168,184,128, + 120,4,6,6,4,255,2,48,80,112,80,80,128,4,5,5, + 5,0,3,224,80,96,80,224,3,5,5,4,0,3,96,128, + 128,160,64,4,5,5,5,0,3,224,80,80,80,32,3,5, + 5,4,0,3,96,128,192,128,224,4,6,6,5,0,2,176, + 64,96,64,64,128,4,5,5,5,0,3,96,128,176,160,96, + 4,6,6,4,255,2,80,80,112,80,80,128,1,5,5,2, + 0,3,128,128,128,128,128,3,5,5,4,0,3,64,32,32, + 32,192,5,5,5,6,0,3,208,80,96,80,72,4,5,5, + 5,0,3,192,64,64,64,176,6,5,5,6,255,3,168,84, + 84,84,68,4,5,5,5,0,3,224,80,80,80,80,3,5, + 5,4,0,3,96,160,160,160,64,4,5,5,5,0,3,176, + 80,96,64,64,4,5,5,5,0,3,64,160,160,160,112,5, + 5,5,5,255,3,176,80,96,80,72,3,5,5,4,0,3, + 96,128,224,32,192,3,5,5,4,0,3,224,64,64,64,64, + 4,5,5,5,0,3,160,160,160,160,80,3,5,5,4,0, + 3,160,160,160,160,64,6,5,5,7,0,3,172,168,168,168, + 88,4,5,5,5,0,3,160,160,64,160,176,4,7,7,4, + 255,1,208,80,80,48,16,16,32,3,5,5,4,0,3,224, + 32,64,128,224,2,7,7,3,0,2,192,128,128,128,128,128, + 192,3,5,5,4,0,3,128,128,64,32,32,2,7,7,3, + 0,2,192,64,64,64,64,64,192,3,3,3,4,0,5,64, + 160,160,4,1,1,5,0,3,240,2,2,2,3,0,6,128, + 64,4,4,4,5,0,3,96,160,160,80,4,5,5,5,0, + 3,64,96,80,80,160,3,4,4,4,0,3,96,128,160,64, + 4,6,6,5,0,3,16,32,96,160,160,208,4,4,4,5, + 0,3,96,160,208,96,4,7,7,4,255,1,48,64,96,64, + 64,64,128,4,6,6,5,0,1,80,160,160,96,32,192,3, + 7,7,4,0,3,64,128,128,192,160,160,160,1,5,5,2, + 0,3,128,0,128,128,128,3,7,7,3,255,1,32,0,32, + 32,32,32,192,4,7,7,5,0,2,128,128,160,224,160,144, + 16,4,6,6,5,0,3,32,80,96,64,64,176,6,4,4, + 7,0,3,88,168,168,164,3,4,4,4,0,3,64,160,160, + 160,3,4,4,4,0,3,96,160,160,192,4,6,6,5,0, + 1,176,80,80,96,64,128,4,6,6,5,0,1,80,160,160, + 96,32,32,4,4,4,5,0,3,160,80,64,64,3,4,4, + 4,0,3,64,160,32,192,2,6,6,3,0,3,128,128,192, + 128,128,64,4,4,4,5,0,3,160,160,160,80,3,4,4, + 4,0,3,160,160,160,64,6,4,4,7,0,3,172,168,168, + 80,3,4,4,4,0,3,160,160,64,160,3,5,5,4,0, + 2,160,160,64,32,192,4,5,5,5,0,2,224,32,64,144, + 96,3,7,7,4,0,2,96,64,64,128,64,64,96,1,7, + 7,2,0,2,128,128,128,128,128,128,128,3,7,7,4,0, + 2,192,64,64,32,64,64,192,4,2,2,5,0,5,80,160, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,4,7,7,5,0,2,96,144,64,224,64,128, + 240,255,255,255,4,7,7,5,0,2,96,128,96,144,96,16, + 96,255,7,8,8,8,0,2,124,130,154,170,162,154,130,124, + 255,255,255,255,7,8,8,8,0,2,124,130,186,170,178,170, + 130,124,255,255,255,255,255,255,255,6,5,5,7,0,3,108, + 232,104,40,40,255,255,255,255,255,255,255,255,255,255,255,255, + 255,4,8,8,4,255,2,80,0,48,80,112,80,80,128,255, + 255,3,7,7,4,0,1,96,128,128,160,96,64,32,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,3,7,7,4, + 0,3,160,0,96,160,160,160,64,4,4,4,5,0,4,144, + 96,96,144,255,255,255,255,4,7,7,5,0,3,80,0,160, + 160,160,160,80,255,255,4,7,7,4,255,1,32,80,96,80, + 96,64,128,255,255,255,255,4,6,6,5,0,3,80,0,96, + 160,160,80,255,255,255,4,6,6,5,0,3,96,0,96,160, + 208,96,4,6,6,5,0,3,96,0,96,160,208,96,4,7, + 7,5,0,3,64,160,0,96,160,208,96,255,255,255,255,255, + 255,255,255,255,255,255,3,6,6,4,0,3,160,0,96,160, + 160,192,5,5,5,6,0,3,32,0,248,0,32,255,255,255, + 255,4,6,6,5,0,3,80,0,160,160,160,80,255,255,255 + }; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 4 h= 5 x= 0 y= 6 dx= 5 dy= 0 ascent= 9 len= 5 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 9 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[178] U8G_SECTION(".progmem.u8g_font_robot_de_niron") = { + 0,10,10,255,0,5,0,0,0,0,42,57,0,9,0,5, + 0,3,3,3,4,0,6,160,64,160,3,3,3,4,0,4, + 64,224,64,2,2,2,3,0,2,64,128,3,1,1,4,0, + 5,224,1,1,1,2,0,3,128,3,5,5,4,0,3,32, + 32,64,128,128,3,5,5,4,0,3,64,160,160,160,64,3, + 5,5,4,0,3,192,64,64,64,224,3,5,5,4,0,3, + 192,32,96,128,224,3,5,5,4,0,3,192,32,224,32,224, + 3,5,5,4,0,3,160,160,224,32,32,3,5,5,4,0, + 3,96,128,224,32,224,3,5,5,4,0,3,96,128,224,160, + 64,4,5,5,5,0,3,224,32,112,32,32,3,5,5,4, + 0,3,96,160,224,160,192,3,5,5,4,0,3,96,160,224, + 32,192}; +/* + Fontname: -FreeType-Robot de Niro-Medium-R-Normal--16-160-72-72-P-39-ISO10646-1 + Copyright: Copyright BMoser 2008 + Capital A Height: 6, '1' Height: 5 + Calculated Max Values w= 6 h= 7 x= 0 y= 6 dx= 7 dy= 0 ascent=10 len= 7 + Font Bounding box w=10 h=10 x=-1 y= 0 + Calculated Min Values x=-1 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 1 + X Font ascent = 9 descent= 0 + Max Font ascent =10 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[1041] U8G_SECTION(".progmem.u8g_font_robot_de_niror") = { + 0,10,10,255,0,6,1,97,2,193,32,127,1,10,0,9, + 0,0,0,0,2,0,0,2,5,5,3,0,3,192,128,128, + 0,128,3,2,2,4,0,6,160,160,5,5,5,6,0,3, + 80,248,80,248,80,4,7,7,5,0,2,96,224,16,96,128, + 112,96,5,5,5,6,0,3,192,208,32,88,24,4,5,5, + 5,0,3,96,160,80,160,80,1,2,2,2,0,6,128,128, + 2,7,7,3,0,2,64,128,128,128,128,128,64,2,7,7, + 3,0,2,128,64,64,64,64,64,128,3,3,3,4,0,6, + 160,64,160,3,3,3,4,0,4,64,224,64,2,2,2,3, + 0,2,64,128,3,1,1,4,0,5,224,1,1,1,2,0, + 3,128,3,5,5,4,0,3,32,32,64,128,128,3,5,5, + 4,0,3,64,160,160,160,64,3,5,5,4,0,3,192,64, + 64,64,224,3,5,5,4,0,3,192,32,96,128,224,3,5, + 5,4,0,3,192,32,224,32,224,3,5,5,4,0,3,160, + 160,224,32,32,3,5,5,4,0,3,96,128,224,32,224,3, + 5,5,4,0,3,96,128,224,160,64,4,5,5,5,0,3, + 224,32,112,32,32,3,5,5,4,0,3,96,160,224,160,192, + 3,5,5,4,0,3,96,160,224,32,192,1,3,3,2,0, + 4,128,0,128,2,4,4,3,0,3,64,0,64,128,2,3, + 3,3,0,4,64,128,64,3,3,3,4,0,4,224,0,224, + 2,3,3,3,0,4,128,64,128,3,5,5,4,0,3,224, + 32,64,0,64,5,7,7,6,0,2,120,136,184,168,184,128, + 120,4,6,6,4,255,2,48,80,112,80,80,128,4,5,5, + 5,0,3,224,80,96,80,224,3,5,5,4,0,3,96,128, + 128,160,64,4,5,5,5,0,3,224,80,80,80,32,3,5, + 5,4,0,3,96,128,192,128,224,4,6,6,5,0,2,176, + 64,96,64,64,128,4,5,5,5,0,3,96,128,176,160,96, + 4,6,6,4,255,2,80,80,112,80,80,128,1,5,5,2, + 0,3,128,128,128,128,128,3,5,5,4,0,3,64,32,32, + 32,192,5,5,5,6,0,3,208,80,96,80,72,4,5,5, + 5,0,3,192,64,64,64,176,6,5,5,6,255,3,168,84, + 84,84,68,4,5,5,5,0,3,224,80,80,80,80,3,5, + 5,4,0,3,96,160,160,160,64,4,5,5,5,0,3,176, + 80,96,64,64,4,5,5,5,0,3,64,160,160,160,112,5, + 5,5,5,255,3,176,80,96,80,72,3,5,5,4,0,3, + 96,128,224,32,192,3,5,5,4,0,3,224,64,64,64,64, + 4,5,5,5,0,3,160,160,160,160,80,3,5,5,4,0, + 3,160,160,160,160,64,6,5,5,7,0,3,172,168,168,168, + 88,4,5,5,5,0,3,160,160,64,160,176,4,7,7,4, + 255,1,208,80,80,48,16,16,32,3,5,5,4,0,3,224, + 32,64,128,224,2,7,7,3,0,2,192,128,128,128,128,128, + 192,3,5,5,4,0,3,128,128,64,32,32,2,7,7,3, + 0,2,192,64,64,64,64,64,192,3,3,3,4,0,5,64, + 160,160,4,1,1,5,0,3,240,2,2,2,3,0,6,128, + 64,4,4,4,5,0,3,96,160,160,80,4,5,5,5,0, + 3,64,96,80,80,160,3,4,4,4,0,3,96,128,160,64, + 4,6,6,5,0,3,16,32,96,160,160,208,4,4,4,5, + 0,3,96,160,208,96,4,7,7,4,255,1,48,64,96,64, + 64,64,128,4,6,6,5,0,1,80,160,160,96,32,192,3, + 7,7,4,0,3,64,128,128,192,160,160,160,1,5,5,2, + 0,3,128,0,128,128,128,3,7,7,3,255,1,32,0,32, + 32,32,32,192,4,7,7,5,0,2,128,128,160,224,160,144, + 16,4,6,6,5,0,3,32,80,96,64,64,176,6,4,4, + 7,0,3,88,168,168,164,3,4,4,4,0,3,64,160,160, + 160,3,4,4,4,0,3,96,160,160,192,4,6,6,5,0, + 1,176,80,80,96,64,128,4,6,6,5,0,1,80,160,160, + 96,32,32,4,4,4,5,0,3,160,80,64,64,3,4,4, + 4,0,3,64,160,32,192,2,6,6,3,0,3,128,128,192, + 128,128,64,4,4,4,5,0,3,160,160,160,80,3,4,4, + 4,0,3,160,160,160,64,6,4,4,7,0,3,172,168,168, + 80,3,4,4,4,0,3,160,160,64,160,3,5,5,4,0, + 2,160,160,64,32,192,4,5,5,5,0,2,224,32,64,144, + 96,3,7,7,4,0,2,96,64,64,128,64,64,96,1,7, + 7,2,0,2,128,128,128,128,128,128,128,3,7,7,4,0, + 2,192,64,64,32,64,64,192,4,2,2,5,0,5,80,160, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--11-80-100-100-P-61-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=15 x= 3 y= 9 dx=11 dy= 0 ascent=11 len=15 + Font Bounding box w=11 h=15 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =11 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb08[2612] U8G_SECTION(".progmem.u8g_font_symb08") = { + 0,11,15,255,252,7,1,152,3,60,32,255,254,11,252,7, + 254,0,0,0,3,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,7,7,7,7,0,0,130,68,124,40,40,16, + 16,5,7,7,5,0,0,80,80,248,80,248,80,80,5,7, + 7,6,0,0,248,8,8,120,8,8,248,7,7,7,8,0, + 0,100,188,168,86,42,42,68,6,7,7,7,0,0,32,80, + 80,108,152,152,108,4,5,5,5,0,0,224,16,112,16,224, + 3,9,9,4,0,254,32,64,64,128,128,128,64,64,32,3, + 9,9,4,1,254,128,64,64,32,32,32,64,64,128,3,3, + 3,5,1,2,160,64,160,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,2,0,254,64,64,128,5,1,1,6,0, + 2,248,1,1,1,2,1,0,128,3,7,7,3,0,0,32, + 32,64,64,64,128,128,4,7,7,5,0,0,96,144,144,144, + 144,144,96,3,7,7,5,1,0,64,192,64,64,64,64,224, + 4,7,7,5,0,0,96,144,16,32,32,64,240,4,7,7, + 5,0,0,96,144,16,96,16,16,224,5,7,7,5,0,0, + 16,48,80,144,248,16,16,4,7,7,5,0,0,112,64,224, + 16,16,16,224,4,7,7,5,0,0,112,128,224,144,144,144, + 96,4,7,7,5,0,0,240,144,32,32,64,64,64,4,7, + 7,5,0,0,96,144,144,96,144,144,96,4,7,7,5,0, + 0,96,144,144,144,112,32,192,1,5,5,2,1,0,128,0, + 0,0,128,2,7,7,2,0,254,64,0,0,0,64,64,128, + 6,5,5,7,0,0,12,48,192,48,12,5,3,3,6,0, + 1,248,0,248,6,5,5,6,0,0,192,48,12,48,192,3, + 7,7,5,1,0,64,160,32,64,64,0,64,5,6,6,6, + 0,0,104,176,0,248,0,248,7,7,7,8,0,0,16,56, + 40,40,124,68,238,5,7,7,6,0,0,240,72,72,112,72, + 72,240,7,7,7,8,0,0,238,68,40,16,40,68,238,6, + 7,7,7,0,0,48,48,88,72,140,132,252,5,7,7,6, + 0,0,248,72,64,112,64,72,248,7,7,7,8,0,0,56, + 16,124,146,124,16,56,5,7,7,6,0,0,248,72,64,64, + 64,64,224,7,7,7,8,0,0,238,68,68,124,68,68,238, + 3,7,7,3,0,0,224,64,64,64,64,64,224,6,7,7, + 7,0,0,16,40,152,76,72,72,48,6,7,7,7,0,0, + 236,72,80,96,80,72,236,7,7,7,7,0,0,16,16,40, + 40,68,68,238,9,7,14,10,0,0,227,128,99,0,85,0, + 85,0,93,0,73,0,235,128,7,7,7,8,0,0,238,100, + 84,84,76,76,228,6,7,7,7,0,0,120,204,132,132,132, + 204,120,7,7,7,8,0,0,254,68,68,68,68,68,238,6, + 7,7,7,0,0,120,204,132,180,132,204,120,5,7,7,6, + 0,0,240,72,72,112,64,64,224,5,7,7,6,0,0,248, + 136,64,32,64,136,248,5,7,7,6,0,0,248,168,32,32, + 32,32,112,7,7,7,8,0,0,238,68,40,56,16,16,56, + 4,7,7,5,0,254,112,128,128,128,96,16,96,8,7,7, + 9,0,0,60,102,66,66,102,165,231,6,7,7,7,0,0, + 120,72,0,48,0,132,252,9,7,14,9,0,0,221,128,73, + 0,73,0,62,0,8,0,8,0,28,0,5,7,7,6,0, + 0,248,136,16,32,64,136,248,2,9,9,3,0,254,192,128, + 128,128,128,128,128,128,192,5,5,5,7,1,0,32,0,0, + 0,136,2,9,9,3,1,254,192,64,64,64,64,64,64,64, + 192,5,7,7,7,1,0,32,32,32,32,32,32,248,5,1, + 1,5,0,254,248,6,1,1,5,0,9,252,6,5,5,7, + 0,0,104,168,144,148,104,4,10,10,5,0,254,96,144,144, + 160,144,144,208,160,128,128,5,7,7,6,0,254,200,80,80, + 32,80,80,152,4,8,8,5,0,0,96,144,64,96,144,144, + 144,96,4,5,5,5,0,0,96,144,192,144,96,5,9,9, + 6,0,254,32,32,112,168,168,168,112,32,32,5,7,7,6, + 0,254,200,168,40,48,16,32,32,5,7,7,6,0,254,80, + 232,72,72,72,8,8,3,5,5,4,0,0,192,64,64,64, + 96,5,7,7,6,0,254,48,168,168,168,112,32,32,5,5, + 5,6,0,0,72,216,96,80,72,6,8,8,6,0,0,192, + 160,32,32,80,80,148,136,5,7,7,6,0,254,144,144,144, + 144,232,128,192,5,5,5,6,0,0,136,136,80,80,32,4, + 5,5,5,0,0,96,144,144,144,96,5,5,5,6,0,0, + 248,80,80,88,208,4,7,7,5,0,0,96,144,144,240,144, + 144,96,4,8,8,5,0,253,96,144,144,144,224,128,128,128, + 5,5,5,6,0,0,120,144,144,144,96,4,5,5,5,0, + 0,240,64,64,80,96,5,5,5,6,0,0,80,200,72,72, + 48,7,6,6,8,0,0,254,68,130,146,146,108,7,5,5, + 8,0,0,68,130,146,146,108,4,10,10,5,0,254,128,176, + 64,112,128,128,128,96,16,112,7,7,7,7,0,254,146,84, + 84,84,56,16,16,4,10,10,5,0,254,128,176,96,128,128, + 128,128,96,16,112,3,9,9,5,1,254,32,64,64,64,128, + 64,64,64,32,1,9,9,2,0,254,128,128,128,128,128,128, + 128,128,128,3,9,9,5,1,254,128,64,64,64,32,64,64, + 64,128,5,2,2,6,0,2,104,176,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,6,7,7,7, + 0,0,140,212,112,32,32,32,112,3,3,3,3,0,5,32, + 64,128,5,7,7,6,0,0,8,48,192,48,8,0,248,4, + 7,7,3,255,0,16,16,32,32,64,64,128,7,3,3,7, + 0,1,108,146,108,5,9,9,5,0,254,24,32,112,32,32, + 32,32,32,192,5,5,5,7,1,0,112,112,248,248,32,5, + 5,5,7,1,0,32,112,248,112,32,5,5,5,7,1,0, + 216,248,248,112,32,5,5,5,7,1,0,32,112,248,248,32, + 10,5,10,10,0,0,33,0,64,128,255,192,64,128,33,0, + 10,5,10,10,0,0,32,0,64,0,255,192,64,0,32,0, + 5,14,14,6,0,252,32,112,168,32,32,32,32,32,32,32, + 32,32,32,32,10,5,10,10,0,0,1,0,0,128,255,192, + 0,128,1,0,5,13,13,6,0,254,32,32,32,32,32,32, + 32,32,32,32,168,112,32,3,4,4,4,0,3,64,160,160, + 64,5,7,7,6,0,0,32,32,248,32,32,0,248,5,3, + 3,4,0,5,40,80,160,5,7,7,6,0,0,128,96,24, + 96,128,0,248,5,5,5,6,0,0,136,80,32,80,136,6, + 3,3,7,0,1,108,144,108,4,8,8,5,0,0,96,144, + 16,16,112,144,144,96,4,3,3,5,0,1,96,240,96,5, + 5,5,6,0,0,32,0,248,0,32,5,5,5,6,0,0, + 16,248,32,248,64,5,5,5,6,0,1,248,0,248,0,248, + 5,5,5,6,0,0,104,176,0,104,176,7,1,1,9,1, + 0,146,1,15,15,6,2,252,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,10,1,2,10,0,2,255,192,6, + 6,6,7,0,0,4,4,4,68,252,64,7,7,7,8,0, + 0,204,102,52,92,76,38,98,6,9,9,7,0,255,124,132, + 200,24,12,4,68,232,48,8,8,8,8,0,0,108,146,146, + 92,20,18,82,163,7,8,8,9,1,254,16,36,74,82,106, + 108,160,96,7,7,7,8,0,0,56,68,170,146,170,68,56, + 7,7,7,8,0,0,56,68,146,186,146,68,56,7,9,9, + 8,0,255,2,60,76,138,146,162,100,120,128,7,5,5,8, + 0,0,56,68,130,130,130,7,5,5,8,0,0,130,130,130, + 68,56,7,5,5,7,0,0,248,4,2,4,248,7,7,7, + 7,0,254,248,4,2,4,248,0,254,7,7,7,7,0,255, + 4,62,72,136,80,62,32,7,5,5,7,0,0,62,64,128, + 64,62,7,7,7,7,0,254,62,64,128,64,62,0,254,5, + 5,5,7,1,0,120,128,248,128,120,5,7,7,7,1,255, + 16,120,144,248,160,120,64,7,7,7,8,0,0,2,4,8, + 16,32,64,254,6,7,7,7,0,0,252,132,132,72,72,48, + 48,7,8,8,8,0,255,56,68,250,170,178,174,68,56,7, + 8,8,8,0,255,56,68,154,170,162,154,68,56,10,5,10, + 10,0,2,253,0,170,128,42,128,42,128,122,192,8,9,9, + 9,0,255,255,66,66,66,66,66,66,66,231,6,10,10,6, + 0,0,4,4,8,8,72,208,80,80,32,32,1,1,1,3, + 1,2,128,6,3,3,7,0,0,252,4,4,5,5,5,6, + 0,0,32,80,80,136,136,5,5,5,6,0,0,136,136,80, + 80,32,10,5,10,11,0,0,33,0,127,128,128,64,127,128, + 33,0,9,5,10,10,0,0,32,0,127,128,128,0,127,128, + 32,0,5,10,10,6,0,0,32,112,216,80,80,80,80,80, + 80,80,9,5,10,10,0,0,2,0,255,0,0,128,255,0, + 2,0,5,10,10,6,0,0,80,80,80,80,80,80,80,216, + 80,32,7,7,7,7,0,0,16,40,68,198,68,40,16,3, + 9,9,3,0,254,32,32,64,64,128,64,64,32,32,7,8, + 8,8,0,255,56,68,186,170,178,170,68,56,7,8,8,8, + 0,255,56,68,154,162,162,154,68,56,8,5,5,9,0,2, + 250,85,85,85,85,6,9,9,7,0,255,252,132,64,32,16, + 32,64,132,252,3,14,14,4,1,252,32,64,64,128,128,128, + 128,128,128,128,128,128,128,128,1,15,15,4,1,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,3,15,15, + 4,1,252,128,128,128,128,128,128,128,128,128,128,128,128,64, + 64,32,3,14,14,4,1,252,224,128,128,128,128,128,128,128, + 128,128,128,128,128,128,1,15,15,4,1,252,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,3,13,13,4,1, + 254,128,128,128,128,128,128,128,128,128,128,128,128,224,3,14, + 14,5,2,252,96,128,128,128,128,128,128,128,128,128,128,128, + 128,128,3,15,15,5,0,252,32,32,32,32,32,64,128,64, + 32,32,32,32,32,32,32,3,13,13,5,2,254,128,128,128, + 128,128,128,128,128,128,128,128,128,96,1,15,15,5,2,252, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255, + 3,9,9,3,0,254,128,128,64,64,32,64,64,128,128,3, + 12,12,3,0,254,32,64,64,64,64,64,64,64,64,64,64, + 128,4,14,14,7,3,252,48,80,128,128,128,128,128,128,128, + 128,128,128,128,128,1,15,15,7,0,252,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,4,13,13,7,0,254, + 16,16,16,16,16,16,16,16,16,16,16,160,192,3,14,14, + 4,0,252,128,64,64,32,32,32,32,32,32,32,32,32,32, + 32,1,15,15,4,2,252,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,3,15,15,4,0,252,32,32,32,32, + 32,32,32,32,32,32,32,32,64,64,128,3,14,14,4,0, + 252,224,32,32,32,32,32,32,32,32,32,32,32,32,32,1, + 15,15,4,2,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,13,13,4,0,254,32,32,32,32,32,32, + 32,32,32,32,32,32,224,3,14,14,5,0,252,192,32,32, + 32,32,32,32,32,32,32,32,32,32,32,3,15,15,5,2, + 252,128,128,128,128,128,64,32,64,128,128,128,128,128,128,128, + 3,13,13,5,0,254,32,32,32,32,32,32,32,32,32,32, + 32,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--11-80-100-100-P-61-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 9 h=10 x= 1 y= 9 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w=11 h=15 x=-1 y=-4 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb08r[1211] U8G_SECTION(".progmem.u8g_font_symb08r") = { + 0,11,15,255,252,7,1,152,3,60,32,127,254,10,253,7, + 254,0,0,0,3,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,7,7,7,7,0,0,130,68,124,40,40,16, + 16,5,7,7,5,0,0,80,80,248,80,248,80,80,5,7, + 7,6,0,0,248,8,8,120,8,8,248,7,7,7,8,0, + 0,100,188,168,86,42,42,68,6,7,7,7,0,0,32,80, + 80,108,152,152,108,4,5,5,5,0,0,224,16,112,16,224, + 3,9,9,4,0,254,32,64,64,128,128,128,64,64,32,3, + 9,9,4,1,254,128,64,64,32,32,32,64,64,128,3,3, + 3,5,1,2,160,64,160,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,2,0,254,64,64,128,5,1,1,6,0, + 2,248,1,1,1,2,1,0,128,3,7,7,3,0,0,32, + 32,64,64,64,128,128,4,7,7,5,0,0,96,144,144,144, + 144,144,96,3,7,7,5,1,0,64,192,64,64,64,64,224, + 4,7,7,5,0,0,96,144,16,32,32,64,240,4,7,7, + 5,0,0,96,144,16,96,16,16,224,5,7,7,5,0,0, + 16,48,80,144,248,16,16,4,7,7,5,0,0,112,64,224, + 16,16,16,224,4,7,7,5,0,0,112,128,224,144,144,144, + 96,4,7,7,5,0,0,240,144,32,32,64,64,64,4,7, + 7,5,0,0,96,144,144,96,144,144,96,4,7,7,5,0, + 0,96,144,144,144,112,32,192,1,5,5,2,1,0,128,0, + 0,0,128,2,7,7,2,0,254,64,0,0,0,64,64,128, + 6,5,5,7,0,0,12,48,192,48,12,5,3,3,6,0, + 1,248,0,248,6,5,5,6,0,0,192,48,12,48,192,3, + 7,7,5,1,0,64,160,32,64,64,0,64,5,6,6,6, + 0,0,104,176,0,248,0,248,7,7,7,8,0,0,16,56, + 40,40,124,68,238,5,7,7,6,0,0,240,72,72,112,72, + 72,240,7,7,7,8,0,0,238,68,40,16,40,68,238,6, + 7,7,7,0,0,48,48,88,72,140,132,252,5,7,7,6, + 0,0,248,72,64,112,64,72,248,7,7,7,8,0,0,56, + 16,124,146,124,16,56,5,7,7,6,0,0,248,72,64,64, + 64,64,224,7,7,7,8,0,0,238,68,68,124,68,68,238, + 3,7,7,3,0,0,224,64,64,64,64,64,224,6,7,7, + 7,0,0,16,40,152,76,72,72,48,6,7,7,7,0,0, + 236,72,80,96,80,72,236,7,7,7,7,0,0,16,16,40, + 40,68,68,238,9,7,14,10,0,0,227,128,99,0,85,0, + 85,0,93,0,73,0,235,128,7,7,7,8,0,0,238,100, + 84,84,76,76,228,6,7,7,7,0,0,120,204,132,132,132, + 204,120,7,7,7,8,0,0,254,68,68,68,68,68,238,6, + 7,7,7,0,0,120,204,132,180,132,204,120,5,7,7,6, + 0,0,240,72,72,112,64,64,224,5,7,7,6,0,0,248, + 136,64,32,64,136,248,5,7,7,6,0,0,248,168,32,32, + 32,32,112,7,7,7,8,0,0,238,68,40,56,16,16,56, + 4,7,7,5,0,254,112,128,128,128,96,16,96,8,7,7, + 9,0,0,60,102,66,66,102,165,231,6,7,7,7,0,0, + 120,72,0,48,0,132,252,9,7,14,9,0,0,221,128,73, + 0,73,0,62,0,8,0,8,0,28,0,5,7,7,6,0, + 0,248,136,16,32,64,136,248,2,9,9,3,0,254,192,128, + 128,128,128,128,128,128,192,5,5,5,7,1,0,32,0,0, + 0,136,2,9,9,3,1,254,192,64,64,64,64,64,64,64, + 192,5,7,7,7,1,0,32,32,32,32,32,32,248,5,1, + 1,5,0,254,248,6,1,1,5,0,9,252,6,5,5,7, + 0,0,104,168,144,148,104,4,10,10,5,0,254,96,144,144, + 160,144,144,208,160,128,128,5,7,7,6,0,254,200,80,80, + 32,80,80,152,4,8,8,5,0,0,96,144,64,96,144,144, + 144,96,4,5,5,5,0,0,96,144,192,144,96,5,9,9, + 6,0,254,32,32,112,168,168,168,112,32,32,5,7,7,6, + 0,254,200,168,40,48,16,32,32,5,7,7,6,0,254,80, + 232,72,72,72,8,8,3,5,5,4,0,0,192,64,64,64, + 96,5,7,7,6,0,254,48,168,168,168,112,32,32,5,5, + 5,6,0,0,72,216,96,80,72,6,8,8,6,0,0,192, + 160,32,32,80,80,148,136,5,7,7,6,0,254,144,144,144, + 144,232,128,192,5,5,5,6,0,0,136,136,80,80,32,4, + 5,5,5,0,0,96,144,144,144,96,5,5,5,6,0,0, + 248,80,80,88,208,4,7,7,5,0,0,96,144,144,240,144, + 144,96,4,8,8,5,0,253,96,144,144,144,224,128,128,128, + 5,5,5,6,0,0,120,144,144,144,96,4,5,5,5,0, + 0,240,64,64,80,96,5,5,5,6,0,0,80,200,72,72, + 48,7,6,6,8,0,0,254,68,130,146,146,108,7,5,5, + 8,0,0,68,130,146,146,108,4,10,10,5,0,254,128,176, + 64,112,128,128,128,96,16,112,7,7,7,7,0,254,146,84, + 84,84,56,16,16,4,10,10,5,0,254,128,176,96,128,128, + 128,128,96,16,112,3,9,9,5,1,254,32,64,64,64,128, + 64,64,64,32,1,9,9,2,0,254,128,128,128,128,128,128, + 128,128,128,3,9,9,5,1,254,128,64,64,64,32,64,64, + 64,128,5,2,2,6,0,2,104,176,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=15 x= 7 y=11 dx=15 dy= 0 ascent=12 len=24 + Font Bounding box w=16 h=15 x=-1 y=-3 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb10[3433] U8G_SECTION(".progmem.u8g_font_symb10") = { + 0,16,15,255,253,10,2,6,4,121,32,255,253,12,253,10, + 253,0,0,0,4,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,9,10,20,9,0,0,128,128,65, + 0,65,0,62,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,10,10,7,0,0,20,20,20,126,40,40,252,80,80, + 80,6,10,10,8,1,0,252,4,4,4,252,4,4,4,4, + 252,9,10,20,12,1,0,121,128,151,0,146,0,148,0,108, + 0,27,0,20,128,36,128,68,128,195,0,9,10,20,11,1, + 0,48,0,72,0,72,0,112,0,39,0,114,0,202,0,132, + 0,206,128,123,0,5,7,7,6,0,0,224,16,8,120,8, + 16,224,3,13,13,5,1,253,32,64,64,128,128,128,128,128, + 128,128,64,64,32,3,13,13,5,1,253,128,64,64,32,32, + 32,32,32,32,32,64,64,128,5,6,6,7,1,2,32,168, + 112,112,168,32,7,7,7,8,0,0,16,16,16,254,16,16, + 16,2,4,4,3,0,254,64,64,64,128,7,1,1,8,0, + 3,254,1,2,2,3,1,0,128,128,4,10,10,4,0,0, + 16,16,32,32,32,64,64,64,128,128,6,10,10,7,0,0, + 120,204,132,132,132,132,132,132,204,120,5,10,10,7,1,0, + 32,224,32,32,32,32,32,32,32,248,6,10,10,7,0,0, + 112,216,136,8,24,16,32,64,196,252,6,10,10,7,0,0, + 120,204,132,12,56,12,4,4,204,120,6,10,10,7,0,0, + 8,24,24,40,104,72,136,252,8,8,5,10,10,7,1,0, + 120,64,128,224,48,24,8,8,144,224,6,10,10,7,0,0, + 28,48,64,64,248,140,132,132,204,120,6,10,10,7,0,0, + 252,132,8,8,16,16,32,32,64,64,5,10,10,7,1,0, + 112,216,136,216,112,136,136,136,216,112,6,10,10,7,0,0, + 120,204,132,132,204,120,24,16,96,192,1,7,7,4,2,0, + 128,128,0,0,0,128,128,2,9,9,4,1,254,64,64,0, + 0,0,64,64,64,128,7,7,7,8,1,0,2,12,48,192, + 48,12,2,7,3,3,8,0,2,254,0,254,7,7,7,8, + 0,0,128,96,24,6,24,96,128,5,10,10,6,1,0,112, + 136,136,8,16,32,32,0,32,32,7,7,7,8,0,0,114, + 156,0,254,0,0,254,9,10,20,11,1,0,8,0,28,0, + 20,0,20,0,34,0,34,0,62,0,99,0,65,0,227,128, + 7,10,10,9,1,0,252,70,66,70,124,70,66,66,70,252, + 9,10,20,11,1,0,227,128,65,0,34,0,20,0,8,0, + 20,0,34,0,34,0,65,0,227,128,7,10,10,9,1,0, + 16,16,40,40,40,68,68,68,130,254,7,10,10,9,1,0, + 254,66,64,68,124,68,64,66,66,254,9,10,20,11,1,0, + 28,0,8,0,127,0,201,128,136,128,136,128,201,128,127,0, + 8,0,28,0,7,10,10,9,1,0,254,66,64,64,64,64, + 64,64,64,224,9,10,20,11,1,0,227,128,65,0,65,0, + 65,0,127,0,65,0,65,0,65,0,65,0,227,128,3,10, + 10,5,1,0,224,64,64,64,64,64,64,64,64,224,8,10, + 10,9,0,0,12,10,10,102,163,34,34,34,54,28,8,10, + 10,10,1,0,238,68,72,80,112,80,72,68,70,231,9,10, + 20,10,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 34,0,65,0,65,0,227,128,11,10,20,13,1,0,224,224, + 96,192,81,64,81,64,91,64,74,64,74,64,78,64,68,64, + 228,224,9,10,20,11,1,0,227,128,97,0,81,0,89,0, + 73,0,77,0,69,0,69,0,67,0,227,0,8,10,10,10, + 1,0,60,102,66,129,129,129,129,66,102,60,9,10,20,11, + 1,0,255,128,65,0,65,0,65,0,65,0,65,0,65,0, + 65,0,65,0,227,128,8,10,10,10,1,0,60,102,66,165, + 189,165,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,10,10,9,1,0,254,194,96,48, + 24,16,32,64,193,255,7,10,10,9,1,0,254,146,146,16, + 16,16,16,16,16,56,9,10,20,9,0,0,227,128,65,0, + 34,0,34,0,20,0,8,0,8,0,8,0,8,0,28,0, + 6,10,10,7,1,253,56,192,128,128,128,96,56,4,36,56, + 10,10,20,11,0,0,12,0,51,0,33,0,64,128,64,128, + 64,128,33,0,51,0,146,64,243,192,9,10,20,9,0,0, + 127,0,65,0,0,0,34,0,62,0,34,0,0,0,0,0, + 128,128,255,128,11,10,20,11,0,0,206,96,100,192,36,128, + 36,128,31,0,4,0,4,0,4,0,4,0,14,0,7,10, + 10,9,1,0,254,134,4,8,16,16,32,64,194,254,3,13, + 13,5,1,253,224,128,128,128,128,128,128,128,128,128,128,128, + 224,8,7,7,10,1,0,24,24,0,0,0,195,195,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,9,10,20,10,0,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,255,128,7,1,1,7,0, + 253,254,8,1,1,7,7,11,255,8,7,7,9,1,0,118, + 212,136,136,136,213,102,6,14,14,8,1,253,120,204,132,140, + 152,140,132,132,132,204,184,128,128,128,8,10,10,8,0,253, + 195,166,36,60,24,56,40,100,69,195,5,11,11,7,1,0, + 112,152,128,64,112,152,136,136,136,216,112,5,7,7,6,1, + 0,120,200,128,96,128,200,112,7,13,13,9,1,253,16,16, + 16,56,84,146,146,146,84,56,16,16,16,6,10,10,6,0, + 253,196,164,36,40,40,24,24,16,48,48,7,10,10,8,0, + 253,108,178,34,34,34,34,34,2,2,2,5,7,7,5,0, + 0,96,160,32,32,32,40,48,7,10,10,9,1,253,24,84, + 210,146,146,84,56,16,16,16,7,7,7,8,0,0,70,202, + 80,112,88,76,70,8,10,10,8,0,0,96,80,16,16,40, + 40,72,68,133,131,8,9,9,8,0,254,68,68,68,68,68, + 77,123,64,192,7,7,7,8,0,0,198,66,34,34,20,20, + 8,6,7,7,8,1,0,120,204,132,132,132,204,120,8,7, + 7,8,0,0,126,164,36,36,36,37,102,5,10,10,7,1, + 0,112,216,136,136,248,136,136,136,216,112,6,10,10,8,1, + 253,120,204,132,132,132,204,184,128,128,128,7,7,7,8,1, + 0,126,200,132,132,132,204,120,5,7,7,6,0,0,120,160, + 32,32,32,40,48,7,7,7,8,0,0,100,162,34,34,34, + 38,28,10,8,16,11,0,0,127,192,160,128,68,64,68,64, + 68,64,68,64,100,192,59,128,9,7,14,11,1,0,99,0, + 136,128,136,128,136,128,136,128,201,128,119,0,6,15,15,7, + 1,253,32,64,56,32,64,120,32,64,128,128,192,120,4,36, + 56,9,10,20,9,0,253,136,128,73,0,73,0,73,0,107, + 0,62,0,28,0,8,0,8,0,8,0,6,14,14,7,1, + 253,32,68,60,16,32,64,64,128,128,192,120,4,36,56,5, + 13,13,7,1,253,24,32,32,32,32,64,128,64,32,32,32, + 32,24,1,13,13,3,1,253,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,13,13,7,1,253,192,32,32,32,32, + 16,8,16,32,32,32,32,192,6,2,2,8,1,3,100,152, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,8,10,10,9,0,0,198,105,43,16,16,16,16,16, + 16,56,4,3,3,4,0,7,48,96,128,7,9,9,8,0, + 0,2,12,48,192,48,12,2,0,254,5,10,10,4,255,0, + 8,8,16,16,32,32,64,64,128,128,9,4,8,10,0,2, + 119,0,152,128,140,128,119,0,7,13,13,7,0,253,6,10, + 8,8,60,16,16,16,32,32,32,160,192,9,7,14,11,1, + 0,28,0,28,0,28,0,235,128,255,128,235,128,8,0,7, + 7,7,11,2,0,16,56,124,254,124,56,16,7,7,7,11, + 2,0,108,254,254,254,124,56,16,9,7,14,11,1,0,8, + 0,28,0,62,0,127,0,255,128,107,0,8,0,13,7,14, + 15,1,0,16,64,32,32,64,16,255,248,64,16,32,32,16, + 64,14,7,14,14,0,0,16,0,32,0,64,0,255,252,64, + 0,32,0,16,0,7,15,15,9,1,253,16,56,84,146,16, + 16,16,16,16,16,16,16,16,16,16,14,7,14,14,0,0, + 0,32,0,16,0,8,255,252,0,8,0,16,0,32,7,15, + 15,9,1,253,16,16,16,16,16,16,16,16,16,16,16,146, + 84,56,16,4,4,4,6,1,6,96,144,144,96,7,9,9, + 8,0,0,16,16,16,254,16,16,16,0,254,7,3,3,6, + 0,7,54,108,144,7,9,9,8,0,0,128,96,24,6,24, + 96,128,0,254,7,7,7,8,0,0,130,68,40,16,40,68, + 130,8,4,4,10,0,2,119,136,136,119,6,11,11,7,0, + 0,112,136,4,4,4,116,204,132,132,200,112,5,5,5,7, + 1,1,112,248,248,248,112,7,7,7,8,0,0,16,16,0, + 254,0,16,16,7,7,7,8,0,0,4,8,254,16,254,32, + 64,7,5,5,8,0,1,254,0,254,0,254,7,5,5,8, + 0,2,114,156,0,114,156,11,2,4,15,2,0,132,32,132, + 32,1,15,15,9,4,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,15,1,2,15,0,3,255,254,8,9, + 9,10,0,0,1,1,1,1,1,1,65,255,64,8,10,10, + 12,2,0,136,206,102,36,116,156,140,70,99,225,8,12,12, + 10,1,255,63,97,66,70,36,6,3,1,97,241,26,12,10, + 11,22,12,1,0,115,0,157,128,137,128,139,0,206,0,106, + 0,41,0,9,0,9,0,105,0,176,192,9,12,24,12,1, + 253,16,0,35,0,69,128,72,128,144,128,212,128,105,0,107, + 0,182,0,144,0,144,0,96,0,9,9,18,11,1,0,28, + 0,99,0,99,0,148,128,136,128,148,128,99,0,99,0,28, + 0,9,9,18,11,1,0,28,0,99,0,73,0,136,128,190, + 128,136,128,73,0,99,0,28,0,11,11,22,12,0,0,31, + 32,96,192,64,192,129,32,130,32,132,32,136,32,144,32,96, + 64,96,192,159,0,10,7,14,10,0,0,30,0,97,128,64, + 128,128,64,128,64,128,64,128,64,10,7,14,10,0,0,128, + 64,128,64,128,64,128,64,64,128,97,128,30,0,9,7,14, + 10,0,0,254,0,1,0,0,128,0,128,0,128,1,0,254, + 0,9,9,18,10,1,254,254,0,1,0,0,128,0,128,0, + 128,1,0,254,0,0,0,255,128,9,9,18,10,0,255,1, + 0,63,128,66,0,130,0,132,0,132,0,72,0,63,128,16, + 0,9,7,14,10,1,0,63,128,64,0,128,0,128,0,128, + 0,64,0,63,128,9,9,18,10,0,254,63,128,64,0,128, + 0,128,0,128,0,64,0,63,128,0,0,255,128,7,7,7, + 10,1,0,62,64,128,254,128,64,62,7,9,9,10,0,255, + 4,62,72,144,254,144,96,62,64,11,10,20,11,0,0,0, + 64,0,128,1,0,2,0,4,0,8,0,16,0,32,0,64, + 0,255,224,9,11,22,10,0,0,255,128,128,128,65,0,65, + 0,34,0,34,0,34,0,20,0,20,0,8,0,8,0,10, + 10,20,12,1,0,30,0,33,0,124,128,146,64,146,64,156, + 64,146,64,121,128,33,0,30,0,10,10,20,12,1,0,30, + 0,33,0,78,128,146,64,144,64,144,64,146,64,76,128,33, + 0,30,0,11,6,12,11,0,4,250,128,170,128,38,192,37, + 64,37,64,118,224,10,12,24,12,1,255,255,192,64,128,64, + 128,64,128,64,128,64,128,64,128,64,128,64,128,64,128,64, + 128,225,192,8,12,12,8,0,0,1,1,1,2,2,98,164, + 36,20,20,8,8,1,2,2,4,1,3,128,128,9,5,10, + 10,0,0,255,128,0,128,0,128,0,128,0,128,8,7,7, + 9,0,0,24,24,36,36,66,66,129,8,7,7,9,0,0, + 129,66,66,36,36,24,24,13,7,14,15,1,0,16,64,32, + 32,127,240,192,24,127,240,32,32,16,64,13,7,14,14,0, + 0,16,0,32,0,127,248,192,0,127,248,32,0,16,0,7, + 12,12,9,1,0,16,56,108,170,40,40,40,40,40,40,40, + 40,13,7,14,14,1,0,0,64,0,32,255,240,0,24,255, + 240,0,32,0,64,7,12,12,9,1,0,40,40,40,40,40, + 40,40,40,170,108,56,16,7,11,11,7,0,0,16,40,40, + 68,68,130,68,68,40,40,16,4,15,15,5,0,253,16,32, + 32,64,64,64,128,128,128,64,64,64,32,32,16,10,10,20, + 12,1,0,30,0,33,0,92,128,146,64,146,64,156,64,146, + 64,82,128,33,0,30,0,10,10,20,12,1,0,30,0,33, + 0,76,128,146,64,144,64,144,64,146,64,76,128,33,0,30, + 0,10,6,12,11,0,4,250,128,34,128,38,192,37,64,37, + 64,36,64,9,12,24,10,0,255,255,0,129,0,64,0,32, + 0,16,0,8,0,8,0,16,0,32,0,64,0,128,128,255, + 128,4,15,15,6,1,253,16,32,64,64,128,128,128,128,128, + 128,128,128,128,128,128,1,15,15,6,1,253,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,4,15,15,6,1, + 253,128,128,128,128,128,128,128,128,128,128,128,64,64,32,16, + 4,15,15,6,1,253,240,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,1,15,15,6,1,253,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,4,15,15,6,1,253, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,240,4, + 15,15,7,3,253,48,64,128,128,128,128,128,128,128,128,128, + 128,128,128,128,3,15,15,7,1,253,32,32,32,32,32,32, + 64,128,64,32,32,32,32,32,32,4,15,15,7,3,253,128, + 128,128,128,128,128,128,128,128,128,128,128,128,64,48,1,15, + 15,7,3,253,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,255,4,15,15,5,1,253,128,64,64,32,32,32, + 16,16,16,32,32,32,64,64,128,5,13,13,4,0,255,24, + 40,32,32,32,32,32,32,32,32,32,160,192,5,15,15,10, + 5,253,56,88,64,128,128,128,128,128,128,128,128,128,128,128, + 128,1,15,15,10,5,253,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,5,15,15,10,1,253,8,8,8,8, + 8,8,8,8,8,8,8,8,16,208,224,4,15,15,6,1, + 253,128,64,32,32,16,16,16,16,16,16,16,16,16,16,16, + 1,15,15,6,4,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,4,15,15,6,1,253,16,16,16,16,16, + 16,16,16,16,16,16,32,32,64,128,4,15,15,6,1,253, + 240,16,16,16,16,16,16,16,16,16,16,16,16,16,16,1, + 15,15,6,4,253,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,4,15,15,6,1,253,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,240,4,15,15,7,0,253,192, + 32,16,16,16,16,16,16,16,16,16,16,16,16,16,3,15, + 15,7,3,253,128,128,128,128,128,128,64,32,64,128,128,128, + 128,128,128,4,15,15,7,0,253,16,16,16,16,16,16,16, + 16,16,16,16,16,16,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--14-100-100-100-P-85-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=11 h=15 x= 7 y=11 dx=13 dy= 0 ascent=12 len=20 + Font Bounding box w=16 h=15 x=-1 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb10r[1633] U8G_SECTION(".progmem.u8g_font_symb10r") = { + 0,16,15,255,253,10,2,6,4,121,32,127,253,12,253,10, + 253,0,0,0,4,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,9,10,20,9,0,0,128,128,65, + 0,65,0,62,0,34,0,34,0,20,0,20,0,8,0,8, + 0,7,10,10,7,0,0,20,20,20,126,40,40,252,80,80, + 80,6,10,10,8,1,0,252,4,4,4,252,4,4,4,4, + 252,9,10,20,12,1,0,121,128,151,0,146,0,148,0,108, + 0,27,0,20,128,36,128,68,128,195,0,9,10,20,11,1, + 0,48,0,72,0,72,0,112,0,39,0,114,0,202,0,132, + 0,206,128,123,0,5,7,7,6,0,0,224,16,8,120,8, + 16,224,3,13,13,5,1,253,32,64,64,128,128,128,128,128, + 128,128,64,64,32,3,13,13,5,1,253,128,64,64,32,32, + 32,32,32,32,32,64,64,128,5,6,6,7,1,2,32,168, + 112,112,168,32,7,7,7,8,0,0,16,16,16,254,16,16, + 16,2,4,4,3,0,254,64,64,64,128,7,1,1,8,0, + 3,254,1,2,2,3,1,0,128,128,4,10,10,4,0,0, + 16,16,32,32,32,64,64,64,128,128,6,10,10,7,0,0, + 120,204,132,132,132,132,132,132,204,120,5,10,10,7,1,0, + 32,224,32,32,32,32,32,32,32,248,6,10,10,7,0,0, + 112,216,136,8,24,16,32,64,196,252,6,10,10,7,0,0, + 120,204,132,12,56,12,4,4,204,120,6,10,10,7,0,0, + 8,24,24,40,104,72,136,252,8,8,5,10,10,7,1,0, + 120,64,128,224,48,24,8,8,144,224,6,10,10,7,0,0, + 28,48,64,64,248,140,132,132,204,120,6,10,10,7,0,0, + 252,132,8,8,16,16,32,32,64,64,5,10,10,7,1,0, + 112,216,136,216,112,136,136,136,216,112,6,10,10,7,0,0, + 120,204,132,132,204,120,24,16,96,192,1,7,7,4,2,0, + 128,128,0,0,0,128,128,2,9,9,4,1,254,64,64,0, + 0,0,64,64,64,128,7,7,7,8,1,0,2,12,48,192, + 48,12,2,7,3,3,8,0,2,254,0,254,7,7,7,8, + 0,0,128,96,24,6,24,96,128,5,10,10,6,1,0,112, + 136,136,8,16,32,32,0,32,32,7,7,7,8,0,0,114, + 156,0,254,0,0,254,9,10,20,11,1,0,8,0,28,0, + 20,0,20,0,34,0,34,0,62,0,99,0,65,0,227,128, + 7,10,10,9,1,0,252,70,66,70,124,70,66,66,70,252, + 9,10,20,11,1,0,227,128,65,0,34,0,20,0,8,0, + 20,0,34,0,34,0,65,0,227,128,7,10,10,9,1,0, + 16,16,40,40,40,68,68,68,130,254,7,10,10,9,1,0, + 254,66,64,68,124,68,64,66,66,254,9,10,20,11,1,0, + 28,0,8,0,127,0,201,128,136,128,136,128,201,128,127,0, + 8,0,28,0,7,10,10,9,1,0,254,66,64,64,64,64, + 64,64,64,224,9,10,20,11,1,0,227,128,65,0,65,0, + 65,0,127,0,65,0,65,0,65,0,65,0,227,128,3,10, + 10,5,1,0,224,64,64,64,64,64,64,64,64,224,8,10, + 10,9,0,0,12,10,10,102,163,34,34,34,54,28,8,10, + 10,10,1,0,238,68,72,80,112,80,72,68,70,231,9,10, + 20,10,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 34,0,65,0,65,0,227,128,11,10,20,13,1,0,224,224, + 96,192,81,64,81,64,91,64,74,64,74,64,78,64,68,64, + 228,224,9,10,20,11,1,0,227,128,97,0,81,0,89,0, + 73,0,77,0,69,0,69,0,67,0,227,0,8,10,10,10, + 1,0,60,102,66,129,129,129,129,66,102,60,9,10,20,11, + 1,0,255,128,65,0,65,0,65,0,65,0,65,0,65,0, + 65,0,65,0,227,128,8,10,10,10,1,0,60,102,66,165, + 189,165,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,10,10,9,1,0,254,194,96,48, + 24,16,32,64,193,255,7,10,10,9,1,0,254,146,146,16, + 16,16,16,16,16,56,9,10,20,9,0,0,227,128,65,0, + 34,0,34,0,20,0,8,0,8,0,8,0,8,0,28,0, + 6,10,10,7,1,253,56,192,128,128,128,96,56,4,36,56, + 10,10,20,11,0,0,12,0,51,0,33,0,64,128,64,128, + 64,128,33,0,51,0,146,64,243,192,9,10,20,9,0,0, + 127,0,65,0,0,0,34,0,62,0,34,0,0,0,0,0, + 128,128,255,128,11,10,20,11,0,0,206,96,100,192,36,128, + 36,128,31,0,4,0,4,0,4,0,4,0,14,0,7,10, + 10,9,1,0,254,134,4,8,16,16,32,64,194,254,3,13, + 13,5,1,253,224,128,128,128,128,128,128,128,128,128,128,128, + 224,8,7,7,10,1,0,24,24,0,0,0,195,195,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,9,10,20,10,0,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,8,0,255,128,7,1,1,7,0, + 253,254,8,1,1,7,7,11,255,8,7,7,9,1,0,118, + 212,136,136,136,213,102,6,14,14,8,1,253,120,204,132,140, + 152,140,132,132,132,204,184,128,128,128,8,10,10,8,0,253, + 195,166,36,60,24,56,40,100,69,195,5,11,11,7,1,0, + 112,152,128,64,112,152,136,136,136,216,112,5,7,7,6,1, + 0,120,200,128,96,128,200,112,7,13,13,9,1,253,16,16, + 16,56,84,146,146,146,84,56,16,16,16,6,10,10,6,0, + 253,196,164,36,40,40,24,24,16,48,48,7,10,10,8,0, + 253,108,178,34,34,34,34,34,2,2,2,5,7,7,5,0, + 0,96,160,32,32,32,40,48,7,10,10,9,1,253,24,84, + 210,146,146,84,56,16,16,16,7,7,7,8,0,0,70,202, + 80,112,88,76,70,8,10,10,8,0,0,96,80,16,16,40, + 40,72,68,133,131,8,9,9,8,0,254,68,68,68,68,68, + 77,123,64,192,7,7,7,8,0,0,198,66,34,34,20,20, + 8,6,7,7,8,1,0,120,204,132,132,132,204,120,8,7, + 7,8,0,0,126,164,36,36,36,37,102,5,10,10,7,1, + 0,112,216,136,136,248,136,136,136,216,112,6,10,10,8,1, + 253,120,204,132,132,132,204,184,128,128,128,7,7,7,8,1, + 0,126,200,132,132,132,204,120,5,7,7,6,0,0,120,160, + 32,32,32,40,48,7,7,7,8,0,0,100,162,34,34,34, + 38,28,10,8,16,11,0,0,127,192,160,128,68,64,68,64, + 68,64,68,64,100,192,59,128,9,7,14,11,1,0,99,0, + 136,128,136,128,136,128,136,128,201,128,119,0,6,15,15,7, + 1,253,32,64,56,32,64,120,32,64,128,128,192,120,4,36, + 56,9,10,20,9,0,253,136,128,73,0,73,0,73,0,107, + 0,62,0,28,0,8,0,8,0,8,0,6,14,14,7,1, + 253,32,68,60,16,32,64,64,128,128,192,120,4,36,56,5, + 13,13,7,1,253,24,32,32,32,32,64,128,64,32,32,32, + 32,24,1,13,13,3,1,253,128,128,128,128,128,128,128,128, + 128,128,128,128,128,5,13,13,7,1,253,192,32,32,32,32, + 16,8,16,32,32,32,32,192,6,2,2,8,1,3,100,152, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--17-120-100-100-P-95-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=16 h=17 x= 7 y=12 dx=17 dy= 0 ascent=13 len=30 + Font Bounding box w=20 h=17 x=-3 y=-4 + Calculated Min Values x=-3 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb12[4136] U8G_SECTION(".progmem.u8g_font_symb12") = { + 0,20,17,253,252,11,2,70,5,85,32,255,252,13,252,12, + 252,0,0,0,4,0,1,3,11,11,5,1,0,64,224,224, + 224,64,64,64,0,64,224,64,11,12,24,11,0,0,128,32, + 128,32,64,64,64,64,63,128,32,128,17,0,17,0,10,0, + 10,0,4,0,4,0,8,11,11,8,0,0,18,18,18,127, + 36,36,36,254,72,72,72,7,12,12,9,0,0,254,2,2, + 2,2,126,2,2,2,2,2,254,11,12,24,13,1,255,48, + 64,111,128,201,0,201,0,154,0,148,192,101,160,11,32,11, + 32,18,96,34,64,33,128,12,11,22,13,0,0,14,0,25, + 0,17,0,26,0,12,240,56,64,76,128,198,128,131,0,197, + 144,120,224,5,8,8,7,1,0,224,16,24,120,24,24,16, + 224,4,14,14,5,0,254,16,32,64,64,128,128,128,128,128, + 128,64,64,32,16,4,14,14,5,0,254,128,64,32,32,16, + 16,16,16,16,16,32,32,64,128,5,5,5,8,1,3,32, + 168,112,168,32,9,9,18,9,0,0,8,0,8,0,8,0, + 8,0,255,128,8,0,8,0,8,0,8,0,3,5,5,4, + 1,254,64,224,96,64,128,9,1,2,9,0,4,255,128,3, + 3,3,4,1,0,64,224,64,5,11,11,5,255,0,8,8, + 16,16,32,32,32,64,64,128,128,7,12,12,8,0,0,56, + 108,68,198,130,130,130,130,198,68,108,56,5,12,12,8,1, + 0,32,96,160,32,32,32,32,32,32,32,32,248,7,12,12, + 8,0,0,56,76,134,2,2,4,4,8,16,34,126,252,6, + 12,12,8,1,0,56,76,132,4,8,56,12,4,4,4,200, + 112,7,12,12,8,0,0,4,4,12,20,20,36,68,68,254, + 4,4,4,7,12,12,8,0,0,62,60,64,64,240,248,12, + 4,4,4,200,240,6,12,12,8,1,0,12,48,96,64,248, + 204,132,132,132,132,76,56,6,12,12,8,1,0,252,252,136, + 8,8,16,16,16,16,32,32,32,6,12,12,8,1,0,48, + 72,132,196,104,48,88,140,132,132,72,48,6,12,12,8,1, + 0,112,200,132,132,132,132,204,124,8,24,48,192,3,8,8, + 4,1,0,64,224,64,0,0,64,224,64,3,10,10,4,1, + 254,64,224,64,0,0,64,224,96,64,128,8,9,9,9,0, + 0,1,6,24,96,128,96,24,6,1,9,4,8,9,0,2, + 255,128,0,0,0,0,255,128,8,9,9,9,0,0,128,96, + 24,6,1,6,24,96,128,6,11,11,7,0,0,120,156,140, + 12,24,16,32,0,32,112,32,8,8,8,9,0,0,113,142, + 0,0,255,0,0,255,11,11,22,12,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,63,128,65,192,64,192, + 225,224,9,11,22,11,1,0,254,0,99,0,97,128,97,128, + 99,0,126,0,99,0,97,128,97,128,99,0,254,0,10,11, + 22,12,0,0,241,192,96,128,49,0,26,0,26,0,12,0, + 22,0,19,0,35,0,65,128,227,192,10,11,22,10,0,0, + 4,0,4,0,14,0,14,0,19,0,19,0,35,0,33,128, + 65,128,64,192,255,192,8,11,11,10,1,0,255,97,96,96, + 98,126,98,96,96,97,255,12,11,22,12,0,0,15,0,6, + 0,63,192,102,96,198,48,198,48,198,48,102,96,63,192,6, + 0,15,0,9,11,22,10,1,0,255,128,97,128,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,96,0,240,0,11, + 11,22,12,0,0,241,224,96,192,96,192,96,192,96,192,127, + 192,96,192,96,192,96,192,96,192,241,224,4,11,11,6,1, + 0,240,96,96,96,96,96,96,96,96,96,240,9,12,24,10, + 0,0,12,0,18,0,17,0,9,0,69,0,163,0,33,128, + 33,0,33,0,33,0,34,0,28,0,10,11,22,12,1,0, + 243,192,97,0,98,0,100,0,104,0,120,0,108,0,102,0, + 99,0,97,128,243,192,11,11,22,11,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,33,128,64,192,64,192, + 225,224,13,11,22,14,1,0,224,56,96,112,112,112,112,176, + 88,176,89,48,77,48,78,48,70,48,68,48,224,120,10,11, + 22,11,1,0,225,192,112,128,112,128,88,128,92,128,78,128, + 70,128,67,128,67,128,65,128,224,128,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,11,11,22,12,1,0,255,224,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,11,22,12,0,0,31,0,113,192,96,192,192,96, + 209,96,223,96,209,96,192,96,96,192,113,192,31,0,8,11, + 11,9,1,0,252,102,99,99,102,124,96,96,96,96,240,9, + 11,22,10,0,0,255,128,96,128,48,0,24,0,12,0,12, + 0,8,0,16,128,32,128,127,128,255,128,10,11,22,10,0, + 0,255,192,140,64,140,64,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,30,0,10,11,22,11,1,0,241,192,96, + 128,49,0,49,0,26,0,12,0,12,0,12,0,12,0,12, + 0,30,0,7,12,12,8,0,252,60,76,128,128,128,128,124, + 62,2,2,60,56,12,12,24,12,0,0,31,128,112,224,96, + 96,192,48,192,48,192,48,192,48,96,96,48,192,137,16,249, + 240,249,240,9,11,22,11,0,0,255,128,255,128,128,128,0, + 0,34,0,62,0,34,0,0,0,128,128,255,128,255,128,12, + 11,22,13,0,0,207,48,102,96,102,96,102,96,102,96,63, + 192,6,0,6,0,6,0,6,0,15,0,8,11,11,10,1, + 0,255,131,134,12,12,24,48,48,97,193,255,3,14,14,6, + 1,254,224,128,128,128,128,128,128,128,128,128,128,128,128,224, + 9,8,16,14,2,0,8,0,28,0,8,0,0,0,0,0, + 65,0,227,128,65,0,3,14,14,5,0,254,224,32,32,32, + 32,32,32,32,32,32,32,32,32,224,9,11,22,11,1,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,8,1,1,8,0,253,255,10,1,2, + 8,7,12,255,192,10,9,18,11,0,0,57,128,101,128,195, + 0,195,0,195,0,194,0,198,64,101,64,56,128,8,17,17, + 9,0,252,60,70,66,66,70,92,70,67,67,65,65,99,94, + 64,64,64,192,8,12,12,9,0,253,99,162,150,20,28,24, + 24,56,40,105,69,198,7,12,12,8,0,0,120,140,64,48, + 24,44,70,194,130,194,68,56,7,9,9,7,0,0,56,68, + 192,192,120,192,192,66,60,7,14,14,9,1,253,16,16,56, + 84,214,146,146,146,214,84,56,16,16,16,8,13,13,7,255, + 252,97,161,146,18,20,20,8,8,16,16,48,48,48,9,12, + 24,10,0,253,110,0,177,0,33,0,33,0,33,0,33,0, + 33,0,33,0,33,0,1,0,1,0,1,128,6,9,9,5, + 255,0,32,96,160,32,32,32,32,52,24,9,12,24,10,0, + 253,39,0,73,128,201,128,136,128,136,128,136,128,201,128,73, + 0,62,0,8,0,8,0,8,0,8,9,9,9,0,0,70, + 206,80,80,120,76,76,70,79,9,13,26,9,0,0,96,0, + 208,0,144,0,16,0,8,0,24,0,24,0,56,0,40,0, + 36,0,100,128,68,128,195,0,8,13,13,9,1,252,132,132, + 132,132,132,132,132,205,182,128,128,128,128,9,9,18,8,255, + 0,225,128,33,128,49,0,51,0,18,0,26,0,12,0,12, + 0,8,0,7,9,9,9,1,0,56,68,198,130,130,130,198, + 68,56,8,9,9,9,0,0,127,255,164,36,36,36,37,103, + 102,7,12,12,9,1,0,56,108,68,198,130,254,130,130,198, + 68,108,56,7,13,13,9,1,252,56,76,134,134,130,130,198, + 196,184,128,128,128,128,9,9,18,10,1,0,31,128,116,0, + 194,0,195,0,129,0,193,0,65,0,99,0,30,0,7,9, + 9,7,0,0,60,124,144,16,16,16,18,30,12,8,9,9, + 9,1,0,68,226,161,33,33,33,33,50,28,10,10,20,11, + 0,0,127,192,155,0,32,128,100,192,68,64,68,64,68,64, + 68,64,100,192,59,128,9,9,18,11,1,0,54,0,65,0, + 201,128,136,128,136,128,136,128,136,128,201,128,119,0,7,17, + 17,8,0,252,64,88,48,64,92,60,64,128,128,128,128,124, + 62,2,2,60,56,11,13,26,11,0,252,196,96,100,192,36, + 128,36,128,36,128,36,128,36,128,53,128,31,0,4,0,4, + 0,4,0,4,0,7,17,17,8,1,252,32,76,60,32,64, + 64,128,128,128,128,128,124,62,2,2,60,56,5,14,14,8, + 1,254,24,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,14,14,3,1,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,5,14,14,8,1,254,192,32,32,32,32,32, + 24,32,32,32,32,32,32,192,8,2,2,9,0,3,113,142, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,10,11,22,10,255,0,225,128,18,192,10,192,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,30,0,3,4, + 4,4,1,8,96,96,192,128,8,11,11,9,0,0,1,6, + 24,96,128,96,24,6,1,0,255,8,11,11,3,253,0,1, + 2,2,4,8,16,16,32,64,64,128,11,5,10,12,0,2, + 113,192,138,32,132,32,138,32,113,192,7,15,15,8,0,253, + 6,10,8,8,8,126,16,16,16,16,32,32,32,160,192,9, + 10,20,12,1,255,28,0,62,0,62,0,28,0,107,0,255, + 128,255,128,107,0,8,0,28,0,7,9,9,12,2,0,16, + 56,124,124,254,124,124,56,16,8,9,9,12,2,0,102,255, + 255,255,126,60,60,24,24,9,10,20,12,2,255,8,0,28, + 0,28,0,62,0,127,0,127,0,255,128,107,0,8,0,28, + 0,15,9,18,17,0,0,8,32,16,16,32,8,64,4,255, + 254,64,4,32,8,16,16,8,32,16,9,18,16,0,0,8, + 0,16,0,32,0,64,0,255,255,64,0,32,0,16,0,8, + 0,9,15,30,10,0,254,8,0,28,0,42,0,73,0,136, + 128,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,15,9,18,16,0,0,0,32,0,16,0, + 8,0,4,255,254,0,4,0,8,0,16,0,32,9,15,30, + 10,0,254,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,8,0,8,0,136,128,73,0,42,0,28,0,8, + 0,5,5,5,6,0,6,112,136,136,136,112,9,11,22,9, + 0,0,8,0,8,0,8,0,8,0,255,128,8,0,8,0, + 8,0,8,0,0,0,255,128,6,4,4,7,1,8,108,108, + 216,144,8,11,11,9,0,0,128,96,24,6,1,6,24,96, + 128,0,255,9,9,18,9,0,0,128,128,65,0,34,0,20, + 0,8,0,20,0,34,0,65,0,128,128,10,5,10,11,0, + 2,113,192,138,0,132,0,138,0,113,192,7,14,14,8,0, + 255,120,196,4,2,2,2,58,102,194,194,130,196,68,56,6, + 6,6,8,1,2,120,252,252,252,252,120,8,7,7,9,0, + 1,24,24,0,255,0,24,24,9,10,20,9,0,255,2,0, + 2,0,4,0,255,128,8,0,8,0,255,128,16,0,32,0, + 32,0,8,7,7,9,0,1,255,0,0,255,0,0,255,8, + 5,5,9,0,2,113,142,0,113,142,13,3,6,16,1,0, + 66,16,231,56,66,16,1,17,17,10,4,252,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,16,1,2, + 16,0,4,255,255,9,11,22,10,0,255,0,128,0,128,0, + 128,0,128,0,128,0,128,32,128,96,128,255,128,96,0,32, + 0,9,11,22,13,2,0,68,0,231,0,103,0,50,0,26, + 0,60,0,108,0,102,0,99,0,51,128,113,0,9,14,28, + 11,0,255,30,0,63,128,67,128,65,0,66,0,34,0,19, + 0,1,0,1,128,0,128,0,128,112,128,191,0,28,0,12, + 13,26,13,0,0,113,128,138,192,140,96,196,64,100,128,37, + 0,7,128,5,128,12,192,12,192,8,208,104,96,48,64,12, + 13,26,16,2,252,12,0,17,224,34,48,36,16,72,48,114, + 32,102,96,100,192,115,0,144,0,144,0,144,0,96,0,11, + 11,22,12,1,0,14,0,49,128,64,64,81,64,138,32,132, + 32,138,32,81,64,64,64,49,128,14,0,11,11,22,12,1, + 0,14,0,49,128,68,64,68,64,132,32,191,160,132,32,68, + 64,68,64,49,128,14,0,12,12,24,13,1,0,15,16,48, + 224,64,96,64,160,129,16,130,16,132,16,136,16,80,32,96, + 32,112,192,159,0,11,9,18,12,1,0,14,0,49,128,64, + 64,64,64,128,32,128,32,128,32,128,32,128,32,11,9,18, + 12,1,0,128,32,128,32,128,32,128,32,128,32,64,64,64, + 64,49,128,14,0,10,8,16,11,0,0,255,0,0,128,0, + 64,0,64,0,64,0,64,0,128,255,0,10,10,20,11,0, + 253,255,0,0,128,0,64,0,64,0,64,0,64,0,128,255, + 0,0,0,255,192,11,10,20,11,0,255,0,128,63,224,65, + 0,129,0,130,0,130,0,132,0,68,0,63,224,8,0,10, + 8,16,11,0,0,63,192,64,0,128,0,128,0,128,0,128, + 0,64,0,63,192,10,10,20,11,0,254,63,192,64,0,128, + 0,128,0,128,0,128,0,64,0,63,192,0,0,255,192,7, + 7,7,11,0,0,62,64,128,254,128,64,62,7,9,9,11, + 0,255,4,62,72,136,254,144,80,62,32,11,11,22,12,1, + 0,0,32,0,64,0,128,1,0,2,0,4,0,8,0,16, + 0,32,0,64,0,255,192,10,11,22,11,1,1,255,192,192, + 128,96,128,97,0,49,0,50,0,50,0,28,0,28,0,8, + 0,8,0,11,11,22,13,1,0,14,0,49,128,94,64,73, + 64,137,32,142,32,138,32,73,64,93,192,49,128,14,0,11, + 11,22,13,1,0,14,0,49,128,70,64,73,64,145,32,144, + 32,144,32,73,64,70,64,49,128,14,0,13,6,12,14,0, + 5,255,24,171,16,34,176,34,176,34,80,119,88,12,15,30, + 13,1,254,255,240,96,96,96,96,96,96,96,96,96,96,96, + 96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,240, + 240,7,16,16,9,1,253,2,2,2,2,2,4,68,196,36, + 36,20,20,20,8,8,8,2,2,2,4,1,3,192,192,11, + 5,10,12,0,0,255,224,0,32,0,32,0,32,0,32,9, + 8,16,10,0,0,8,0,8,0,20,0,34,0,34,0,65, + 0,128,128,128,128,9,8,16,10,0,0,128,128,128,128,65, + 0,34,0,34,0,20,0,8,0,8,0,16,9,18,17,0, + 0,8,16,16,8,63,252,64,2,128,1,64,2,63,252,16, + 8,8,16,15,9,18,16,0,0,8,0,16,0,63,254,64, + 0,128,0,64,0,63,254,16,0,8,0,9,15,30,10,0, + 254,8,0,20,0,34,0,99,0,162,128,34,0,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,15, + 9,18,16,0,0,0,32,0,16,255,248,0,4,0,2,0, + 4,255,248,0,16,0,32,9,15,30,10,0,254,34,0,34, + 0,34,0,34,0,34,0,34,0,34,0,34,0,34,0,34, + 0,162,128,99,0,34,0,20,0,8,0,7,12,12,8,0, + 0,16,40,40,68,68,130,130,68,68,40,40,16,4,15,15, + 5,0,254,16,16,32,32,64,64,128,128,128,64,64,32,32, + 16,16,11,11,22,13,1,0,14,0,49,128,94,64,81,64, + 145,32,158,32,145,32,81,64,81,64,49,128,14,0,11,11, + 22,13,1,0,14,0,49,128,70,64,73,64,144,32,144,32, + 144,32,73,64,70,64,49,128,14,0,11,6,12,13,0,5, + 252,32,38,96,38,96,37,160,37,160,36,32,11,15,30,11, + 0,254,255,192,112,64,56,64,24,0,12,0,14,0,7,0, + 3,0,2,0,4,0,8,0,16,32,32,64,127,192,255,128, + 6,17,17,6,1,252,4,8,16,32,32,64,64,64,64,128, + 128,128,128,128,128,128,128,1,17,17,6,1,252,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,6,17, + 17,6,1,252,128,128,128,128,128,128,128,128,64,64,64,64, + 32,32,16,8,4,5,17,17,6,0,252,248,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,1,17,17,6, + 0,252,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,5,17,17,6,0,252,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,248,4,17,17,8,3,252, + 48,64,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,4,17,17,8,0,252,16,16,16,16,16,16,16,32,192, + 32,16,16,16,16,16,16,16,4,17,17,8,3,252,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,64,48,1, + 17,17,8,3,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,255,4,15,15,5,0,254,128,128,64, + 64,32,32,16,16,16,32,32,64,64,128,128,5,17,17,5, + 0,252,24,40,32,32,32,32,32,32,32,32,32,32,32,32, + 32,160,192,6,17,17,11,5,252,24,44,72,64,128,128,128, + 128,128,128,128,128,128,128,128,128,128,1,17,17,11,5,252, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,6,17,17,11,0,252,4,4,4,4,4,4,4,4,4, + 4,4,4,4,8,72,208,96,6,17,17,7,1,252,128,64, + 32,16,16,8,8,8,8,4,4,4,4,4,4,4,4,1, + 17,17,6,5,252,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,128,128,6,17,17,6,0,252,4,4,4,4, + 4,4,4,4,8,8,8,8,16,16,32,64,128,5,17,17, + 6,1,252,248,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,1,17,17,6,5,252,128,128,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,5,17,17,6,1, + 252,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,248,4,17,17,8,0,252,192,32,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,4,17,17,8,3,252,128, + 128,128,128,128,128,128,64,48,64,128,128,128,128,128,128,128, + 4,17,17,8,0,252,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,32,192,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--17-120-100-100-P-95-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 12 + Calculated Max Values w=13 h=17 x= 7 y=12 dx=14 dy= 0 ascent=13 len=26 + Font Bounding box w=20 h=17 x=-3 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =12 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb12r[1985] U8G_SECTION(".progmem.u8g_font_symb12r") = { + 0,20,17,253,252,11,2,70,5,85,32,127,252,13,252,12, + 252,0,0,0,4,0,1,3,11,11,5,1,0,64,224,224, + 224,64,64,64,0,64,224,64,11,12,24,11,0,0,128,32, + 128,32,64,64,64,64,63,128,32,128,17,0,17,0,10,0, + 10,0,4,0,4,0,8,11,11,8,0,0,18,18,18,127, + 36,36,36,254,72,72,72,7,12,12,9,0,0,254,2,2, + 2,2,126,2,2,2,2,2,254,11,12,24,13,1,255,48, + 64,111,128,201,0,201,0,154,0,148,192,101,160,11,32,11, + 32,18,96,34,64,33,128,12,11,22,13,0,0,14,0,25, + 0,17,0,26,0,12,240,56,64,76,128,198,128,131,0,197, + 144,120,224,5,8,8,7,1,0,224,16,24,120,24,24,16, + 224,4,14,14,5,0,254,16,32,64,64,128,128,128,128,128, + 128,64,64,32,16,4,14,14,5,0,254,128,64,32,32,16, + 16,16,16,16,16,32,32,64,128,5,5,5,8,1,3,32, + 168,112,168,32,9,9,18,9,0,0,8,0,8,0,8,0, + 8,0,255,128,8,0,8,0,8,0,8,0,3,5,5,4, + 1,254,64,224,96,64,128,9,1,2,9,0,4,255,128,3, + 3,3,4,1,0,64,224,64,5,11,11,5,255,0,8,8, + 16,16,32,32,32,64,64,128,128,7,12,12,8,0,0,56, + 108,68,198,130,130,130,130,198,68,108,56,5,12,12,8,1, + 0,32,96,160,32,32,32,32,32,32,32,32,248,7,12,12, + 8,0,0,56,76,134,2,2,4,4,8,16,34,126,252,6, + 12,12,8,1,0,56,76,132,4,8,56,12,4,4,4,200, + 112,7,12,12,8,0,0,4,4,12,20,20,36,68,68,254, + 4,4,4,7,12,12,8,0,0,62,60,64,64,240,248,12, + 4,4,4,200,240,6,12,12,8,1,0,12,48,96,64,248, + 204,132,132,132,132,76,56,6,12,12,8,1,0,252,252,136, + 8,8,16,16,16,16,32,32,32,6,12,12,8,1,0,48, + 72,132,196,104,48,88,140,132,132,72,48,6,12,12,8,1, + 0,112,200,132,132,132,132,204,124,8,24,48,192,3,8,8, + 4,1,0,64,224,64,0,0,64,224,64,3,10,10,4,1, + 254,64,224,64,0,0,64,224,96,64,128,8,9,9,9,0, + 0,1,6,24,96,128,96,24,6,1,9,4,8,9,0,2, + 255,128,0,0,0,0,255,128,8,9,9,9,0,0,128,96, + 24,6,1,6,24,96,128,6,11,11,7,0,0,120,156,140, + 12,24,16,32,0,32,112,32,8,8,8,9,0,0,113,142, + 0,0,255,0,0,255,11,11,22,12,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,63,128,65,192,64,192, + 225,224,9,11,22,11,1,0,254,0,99,0,97,128,97,128, + 99,0,126,0,99,0,97,128,97,128,99,0,254,0,10,11, + 22,12,0,0,241,192,96,128,49,0,26,0,26,0,12,0, + 22,0,19,0,35,0,65,128,227,192,10,11,22,10,0,0, + 4,0,4,0,14,0,14,0,19,0,19,0,35,0,33,128, + 65,128,64,192,255,192,8,11,11,10,1,0,255,97,96,96, + 98,126,98,96,96,97,255,12,11,22,12,0,0,15,0,6, + 0,63,192,102,96,198,48,198,48,198,48,102,96,63,192,6, + 0,15,0,9,11,22,10,1,0,255,128,97,128,96,0,96, + 0,96,0,96,0,96,0,96,0,96,0,96,0,240,0,11, + 11,22,12,0,0,241,224,96,192,96,192,96,192,96,192,127, + 192,96,192,96,192,96,192,96,192,241,224,4,11,11,6,1, + 0,240,96,96,96,96,96,96,96,96,96,240,9,12,24,10, + 0,0,12,0,18,0,17,0,9,0,69,0,163,0,33,128, + 33,0,33,0,33,0,34,0,28,0,10,11,22,12,1,0, + 243,192,97,0,98,0,100,0,104,0,120,0,108,0,102,0, + 99,0,97,128,243,192,11,11,22,11,0,0,4,0,4,0, + 14,0,14,0,19,0,19,0,33,128,33,128,64,192,64,192, + 225,224,13,11,22,14,1,0,224,56,96,112,112,112,112,176, + 88,176,89,48,77,48,78,48,70,48,68,48,224,120,10,11, + 22,11,1,0,225,192,112,128,112,128,88,128,92,128,78,128, + 70,128,67,128,67,128,65,128,224,128,11,11,22,12,0,0, + 31,0,113,192,96,192,192,96,192,96,192,96,192,96,192,96, + 96,192,113,192,31,0,11,11,22,12,1,0,255,224,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,11,22,12,0,0,31,0,113,192,96,192,192,96, + 209,96,223,96,209,96,192,96,96,192,113,192,31,0,8,11, + 11,9,1,0,252,102,99,99,102,124,96,96,96,96,240,9, + 11,22,10,0,0,255,128,96,128,48,0,24,0,12,0,12, + 0,8,0,16,128,32,128,127,128,255,128,10,11,22,10,0, + 0,255,192,140,64,140,64,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,30,0,10,11,22,11,1,0,241,192,96, + 128,49,0,49,0,26,0,12,0,12,0,12,0,12,0,12, + 0,30,0,7,12,12,8,0,252,60,76,128,128,128,128,124, + 62,2,2,60,56,12,12,24,12,0,0,31,128,112,224,96, + 96,192,48,192,48,192,48,192,48,96,96,48,192,137,16,249, + 240,249,240,9,11,22,11,0,0,255,128,255,128,128,128,0, + 0,34,0,62,0,34,0,0,0,128,128,255,128,255,128,12, + 11,22,13,0,0,207,48,102,96,102,96,102,96,102,96,63, + 192,6,0,6,0,6,0,6,0,15,0,8,11,11,10,1, + 0,255,131,134,12,12,24,48,48,97,193,255,3,14,14,6, + 1,254,224,128,128,128,128,128,128,128,128,128,128,128,128,224, + 9,8,16,14,2,0,8,0,28,0,8,0,0,0,0,0, + 65,0,227,128,65,0,3,14,14,5,0,254,224,32,32,32, + 32,32,32,32,32,32,32,32,32,224,9,11,22,11,1,0, + 8,0,8,0,8,0,8,0,8,0,8,0,8,0,8,0, + 8,0,8,0,255,128,8,1,1,8,0,253,255,10,1,2, + 8,7,12,255,192,10,9,18,11,0,0,57,128,101,128,195, + 0,195,0,195,0,194,0,198,64,101,64,56,128,8,17,17, + 9,0,252,60,70,66,66,70,92,70,67,67,65,65,99,94, + 64,64,64,192,8,12,12,9,0,253,99,162,150,20,28,24, + 24,56,40,105,69,198,7,12,12,8,0,0,120,140,64,48, + 24,44,70,194,130,194,68,56,7,9,9,7,0,0,56,68, + 192,192,120,192,192,66,60,7,14,14,9,1,253,16,16,56, + 84,214,146,146,146,214,84,56,16,16,16,8,13,13,7,255, + 252,97,161,146,18,20,20,8,8,16,16,48,48,48,9,12, + 24,10,0,253,110,0,177,0,33,0,33,0,33,0,33,0, + 33,0,33,0,33,0,1,0,1,0,1,128,6,9,9,5, + 255,0,32,96,160,32,32,32,32,52,24,9,12,24,10,0, + 253,39,0,73,128,201,128,136,128,136,128,136,128,201,128,73, + 0,62,0,8,0,8,0,8,0,8,9,9,9,0,0,70, + 206,80,80,120,76,76,70,79,9,13,26,9,0,0,96,0, + 208,0,144,0,16,0,8,0,24,0,24,0,56,0,40,0, + 36,0,100,128,68,128,195,0,8,13,13,9,1,252,132,132, + 132,132,132,132,132,205,182,128,128,128,128,9,9,18,8,255, + 0,225,128,33,128,49,0,51,0,18,0,26,0,12,0,12, + 0,8,0,7,9,9,9,1,0,56,68,198,130,130,130,198, + 68,56,8,9,9,9,0,0,127,255,164,36,36,36,37,103, + 102,7,12,12,9,1,0,56,108,68,198,130,254,130,130,198, + 68,108,56,7,13,13,9,1,252,56,76,134,134,130,130,198, + 196,184,128,128,128,128,9,9,18,10,1,0,31,128,116,0, + 194,0,195,0,129,0,193,0,65,0,99,0,30,0,7,9, + 9,7,0,0,60,124,144,16,16,16,18,30,12,8,9,9, + 9,1,0,68,226,161,33,33,33,33,50,28,10,10,20,11, + 0,0,127,192,155,0,32,128,100,192,68,64,68,64,68,64, + 68,64,100,192,59,128,9,9,18,11,1,0,54,0,65,0, + 201,128,136,128,136,128,136,128,136,128,201,128,119,0,7,17, + 17,8,0,252,64,88,48,64,92,60,64,128,128,128,128,124, + 62,2,2,60,56,11,13,26,11,0,252,196,96,100,192,36, + 128,36,128,36,128,36,128,36,128,53,128,31,0,4,0,4, + 0,4,0,4,0,7,17,17,8,1,252,32,76,60,32,64, + 64,128,128,128,128,128,124,62,2,2,60,56,5,14,14,8, + 1,254,24,32,32,32,32,32,192,32,32,32,32,32,32,24, + 1,14,14,3,1,253,128,128,128,128,128,128,128,128,128,128, + 128,128,128,128,5,14,14,8,1,254,192,32,32,32,32,32, + 24,32,32,32,32,32,32,192,8,2,2,9,0,3,113,142, + 255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=19 h=19 x= 9 y=13 dx=19 dy= 0 ascent=14 len=34 + Font Bounding box w=20 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb14[4665] U8G_SECTION(".progmem.u8g_font_symb14") = { + 0,20,19,255,251,13,2,127,6,16,32,255,252,14,251,13, + 252,0,0,0,5,0,1,2,13,13,6,2,0,192,192,192, + 192,192,192,192,64,64,0,0,192,192,13,13,26,13,0,0, + 192,24,192,24,96,48,96,48,63,224,48,96,24,192,24,192, + 8,128,13,128,5,0,7,0,2,0,10,13,26,9,255,0, + 9,0,9,0,9,0,9,0,127,192,18,0,18,0,18,0, + 255,128,36,0,36,0,36,0,36,0,8,13,13,10,1,0, + 255,3,3,3,3,3,127,3,3,3,3,3,255,13,13,26, + 15,1,0,56,96,103,224,196,192,197,128,233,128,115,0,6, + 0,6,112,12,200,25,136,25,136,49,208,48,224,12,13,26, + 13,1,0,28,0,54,0,34,0,38,0,60,0,57,224,124, + 192,238,128,199,128,195,0,195,144,103,240,60,224,6,9,9, + 8,1,0,240,56,28,12,124,12,28,56,240,4,17,17,6, + 1,252,16,48,96,96,192,192,192,192,192,192,192,192,192,96, + 96,48,16,4,17,17,6,1,252,128,192,96,96,48,48,48, + 48,48,48,48,48,48,96,96,192,128,7,7,7,9,1,3, + 16,214,124,56,124,214,16,8,8,8,10,1,1,24,24,24, + 255,255,24,24,24,3,5,5,5,1,253,96,96,32,96,192, + 7,2,2,9,1,4,254,254,2,2,2,4,1,0,192,192, + 5,13,13,5,0,0,24,24,24,48,48,48,96,96,96,96, + 192,192,192,8,13,13,9,0,0,60,102,102,195,195,195,195, + 195,195,195,102,102,60,6,13,13,9,1,0,48,240,176,48, + 48,48,48,48,48,48,48,120,252,7,13,13,9,1,0,60, + 126,206,134,6,6,12,28,24,48,98,254,254,7,13,13,9, + 1,0,124,206,134,6,12,56,60,14,6,6,6,204,248,8, + 13,13,9,0,0,6,14,14,30,54,54,102,198,198,255,6, + 6,6,7,13,13,9,1,0,126,124,192,192,240,60,12,14, + 6,6,12,220,240,8,13,13,9,0,0,14,56,48,96,96, + 252,198,195,195,195,195,102,60,8,13,13,9,0,0,127,255, + 134,6,12,12,12,24,24,24,48,48,48,8,13,13,9,0, + 0,60,102,102,102,116,60,126,102,195,195,195,102,60,8,13, + 13,9,0,0,60,110,199,195,195,195,227,127,58,6,12,56, + 224,2,9,9,5,2,0,192,192,0,0,0,0,0,192,192, + 3,12,12,5,1,253,96,96,0,0,0,0,0,96,96,32, + 96,192,9,9,18,10,0,0,3,128,15,0,60,0,240,0, + 192,0,240,0,60,0,15,0,3,128,8,5,5,10,1,2, + 255,255,0,255,255,9,9,18,10,0,0,224,0,120,0,30, + 0,7,128,1,128,7,128,30,0,120,0,224,0,6,13,13, + 8,1,0,120,220,204,204,12,12,24,48,48,48,0,48,48, + 8,9,9,10,1,0,115,255,206,0,255,255,0,255,255,12, + 13,26,14,1,0,4,0,14,0,14,0,11,0,27,0,19, + 0,17,128,49,128,63,192,32,192,96,192,96,224,241,240,9, + 13,26,11,1,0,252,0,102,0,99,0,99,0,99,0,102, + 0,126,0,99,0,97,128,97,128,97,128,99,128,255,0,12, + 13,26,14,1,0,240,112,112,96,56,192,24,192,29,128,15, + 0,6,0,15,0,27,128,49,128,49,192,96,224,224,240,11, + 13,26,11,0,0,4,0,6,0,14,0,11,0,19,0,19, + 0,17,128,33,128,33,192,64,192,64,192,128,96,255,224,9, + 13,26,11,1,0,255,128,97,128,96,128,96,0,96,0,97, + 0,127,0,97,0,96,0,96,0,96,128,97,128,255,128,12, + 13,26,14,1,0,15,0,6,0,31,128,102,96,198,48,198, + 48,198,48,198,48,198,48,102,96,31,128,6,0,15,0,10, + 13,26,11,0,0,255,192,112,192,48,64,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,0,11, + 13,26,13,1,0,241,224,96,192,96,192,96,192,96,192,96, + 192,127,192,96,192,96,192,96,192,96,192,96,192,241,224,4, + 13,13,6,1,0,240,96,96,96,96,96,96,96,96,96,96, + 96,240,11,13,26,12,1,0,6,0,11,0,9,128,5,128, + 99,128,241,128,177,192,49,160,49,128,49,128,49,128,59,0, + 30,0,11,13,26,14,1,0,243,192,97,128,99,0,102,0, + 108,0,120,0,120,0,108,0,102,0,99,0,99,128,97,192, + 241,224,12,13,26,13,0,0,6,0,6,0,15,0,11,0, + 11,0,25,128,17,128,17,128,48,192,32,192,32,96,96,96, + 240,240,14,13,26,16,1,0,224,28,112,56,112,56,88,120, + 88,88,88,216,76,152,76,152,77,152,71,24,71,24,67,24, + 226,60,11,13,26,13,1,0,224,224,112,64,112,64,88,64, + 76,64,76,64,70,64,67,64,67,192,65,192,64,192,64,192, + 224,64,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,192,96,192,96,192,96,192,96,224,224,96,192,49,128, + 14,0,11,13,26,13,1,0,255,224,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,209,96,223,96,209,96,192,96,224,224,96,192,49,128, + 14,0,8,13,13,10,1,0,254,103,99,99,99,103,126,96, + 96,96,96,96,240,10,13,26,11,0,0,255,128,193,128,96, + 128,48,0,24,0,12,0,12,0,8,0,16,0,32,64,64, + 192,255,128,255,128,10,13,26,12,1,0,255,192,204,192,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,30,0,12,13,26,13,0,0,248,240,112,96,48, + 192,24,192,29,128,15,0,15,0,6,0,6,0,6,0,6, + 0,6,0,15,0,6,13,13,8,1,252,60,124,192,128,128, + 128,192,120,60,4,4,60,56,13,13,26,14,0,0,7,0, + 24,192,48,96,112,112,96,48,96,48,96,48,96,48,48,96, + 56,224,136,136,248,248,248,248,10,13,26,12,1,0,127,128, + 127,128,64,128,0,0,33,0,63,0,63,0,33,0,0,0, + 128,64,128,64,255,192,255,192,14,13,26,15,0,0,199,140, + 99,24,99,24,99,24,99,24,51,48,31,224,3,0,3,0, + 3,0,3,0,3,0,7,128,9,13,26,11,1,0,255,128, + 195,128,131,0,7,0,6,0,14,0,28,0,24,0,56,0, + 112,0,96,128,225,128,255,128,4,17,17,6,1,252,240,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,240,10, + 9,18,14,2,0,12,0,12,0,0,0,0,0,0,0,0, + 0,0,0,192,192,192,192,4,17,17,6,1,252,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,10,13, + 26,12,1,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,9,2, + 4,9,0,252,255,128,255,128,10,1,2,9,9,13,255,192, + 11,9,18,12,1,0,60,192,101,128,195,0,195,0,195,0, + 195,0,195,0,101,32,56,192,8,18,18,10,1,252,60,70, + 198,198,198,204,198,195,195,195,195,195,230,220,192,192,192,192, + 10,13,26,10,0,252,96,192,241,192,145,128,19,0,23,0, + 14,0,12,0,28,0,26,0,50,0,98,64,227,192,193,128, + 7,14,14,9,1,0,56,76,64,96,48,56,108,198,198,198, + 198,198,108,56,6,9,9,8,1,0,120,236,204,192,112,192, + 192,228,120,9,16,32,11,1,252,8,0,8,0,8,0,62, + 0,107,0,201,128,201,128,201,128,201,128,201,128,107,0,62, + 0,8,0,8,0,8,0,8,0,8,13,13,8,0,252,195, + 227,163,38,38,22,20,28,12,24,24,24,24,9,13,26,11, + 1,252,103,0,233,128,177,128,49,128,49,128,49,128,49,128, + 49,128,49,128,1,128,1,128,1,128,1,128,5,9,9,6, + 1,0,96,224,96,96,96,96,96,104,112,9,13,26,11,1, + 252,102,0,207,0,201,128,201,128,201,128,201,128,73,0,107, + 0,62,0,8,0,8,0,8,0,8,0,9,9,18,10,0, + 0,99,128,229,128,104,0,112,0,120,0,108,0,102,0,99, + 0,97,128,10,14,28,10,0,0,48,0,120,0,72,0,8, + 0,8,0,8,0,24,0,28,0,52,0,52,0,102,0,98, + 64,195,192,193,128,9,13,26,11,2,252,66,0,198,0,198, + 0,198,0,198,0,198,0,198,128,251,128,123,0,64,0,192, + 0,192,0,192,0,8,9,9,10,1,0,195,195,97,98,50, + 52,28,24,8,8,9,9,10,1,0,60,102,195,195,195,195, + 195,102,60,9,9,18,10,0,0,127,128,255,128,146,0,18, + 0,18,0,18,0,50,128,115,128,99,0,8,13,13,10,1, + 0,60,102,195,195,195,195,255,195,195,195,195,102,60,8,13, + 13,10,1,252,60,70,195,195,195,195,195,230,220,192,192,192, + 192,10,9,18,11,1,0,31,192,127,192,102,0,195,0,195, + 0,195,0,195,0,102,0,60,0,7,9,9,8,0,0,126, + 254,144,16,16,16,18,30,28,9,9,18,11,1,0,99,0, + 241,128,177,128,49,128,49,128,49,128,49,128,59,0,30,0, + 11,11,22,12,0,0,63,224,127,224,153,128,48,192,32,64, + 102,96,102,96,102,96,102,96,54,192,57,192,10,9,18,12, + 1,0,51,0,97,128,64,128,204,192,204,192,204,192,204,192, + 109,128,115,128,7,19,19,9,1,251,96,142,252,32,64,64, + 124,120,192,128,128,128,192,252,126,2,2,30,28,13,13,26, + 13,0,252,226,56,114,112,50,96,50,96,50,96,50,96,26, + 192,26,192,15,128,2,0,2,0,2,0,2,0,7,19,19, + 9,1,251,96,134,158,120,96,64,128,128,128,128,128,128,192, + 252,126,2,2,30,28,7,17,17,9,1,252,14,24,48,48, + 48,48,48,96,192,96,48,48,48,48,48,24,14,2,17,17, + 4,1,252,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,7,17,17,9,1,252,224,48,24,24,24,24, + 24,12,6,12,24,24,24,24,24,48,224,8,3,3,10,1, + 4,115,255,206,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,11,13,26,12,0,0,225,192,115,32, + 58,96,28,96,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,30,0,4,5,5,5,1,9,48,112,96,192, + 128,9,12,24,10,0,0,3,128,15,0,60,0,240,0,192, + 0,240,0,60,0,15,0,3,128,0,0,255,128,255,128,8, + 13,13,5,255,0,3,6,6,12,12,24,24,48,48,96,96, + 192,192,12,5,10,13,0,3,121,224,207,48,134,16,207,48, + 121,224,9,17,34,9,0,252,3,128,5,128,12,0,12,0, + 12,0,127,0,24,0,24,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,208,0,224,0,10,9,18,14,2,0, + 12,0,30,0,30,0,30,0,109,128,255,192,255,192,109,128, + 12,0,9,9,18,13,2,0,8,0,28,0,62,0,127,0, + 255,128,127,0,62,0,28,0,8,0,9,9,18,13,2,0, + 99,0,247,128,255,128,255,128,127,0,127,0,62,0,28,0, + 8,0,10,9,18,14,2,0,12,0,30,0,63,0,127,128, + 255,192,255,192,109,128,12,0,12,0,17,8,24,19,1,1, + 24,12,0,48,6,0,96,3,0,255,255,128,255,255,128,96, + 3,0,48,6,0,24,12,0,18,8,24,18,0,1,24,0, + 0,48,0,0,96,0,0,255,255,192,255,255,192,96,0,0, + 48,0,0,24,0,0,8,19,19,10,1,251,24,60,126,219, + 153,24,24,24,24,24,24,24,24,24,24,24,24,24,24,18, + 8,24,18,0,1,0,6,0,0,3,0,0,1,128,255,255, + 192,255,255,192,0,1,128,0,3,0,0,6,0,8,19,19, + 10,1,251,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,153,219,126,60,24,5,6,6,7,1,7,112,248,216,216, + 248,112,8,11,11,10,1,0,24,24,24,255,255,24,24,24, + 0,255,255,8,5,5,8,0,9,51,119,102,204,136,9,12, + 24,10,0,0,224,0,120,0,30,0,7,128,1,128,7,128, + 30,0,120,0,224,0,0,0,255,128,255,128,10,9,18,10, + 0,0,225,192,115,128,51,0,30,0,12,0,30,0,51,0, + 115,128,225,192,11,5,10,12,0,3,121,224,207,0,134,0, + 207,0,121,224,7,14,14,9,1,0,120,204,134,6,6,6, + 62,102,198,198,198,196,236,120,5,6,6,9,2,2,112,248, + 248,248,248,112,8,8,8,10,1,1,24,24,0,255,255,0, + 24,24,8,9,9,10,1,0,12,12,255,255,24,255,255,48, + 48,8,8,8,10,1,1,255,255,0,255,255,0,255,255,8, + 7,7,10,1,2,115,255,206,0,115,255,206,14,2,4,18, + 2,0,195,12,195,12,2,19,19,10,4,251,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,19, + 2,6,19,0,4,255,255,224,255,255,224,9,12,24,12,1, + 0,1,128,1,128,1,128,1,128,1,128,1,128,33,128,97, + 128,255,128,255,128,96,0,32,0,11,13,26,13,1,0,194, + 0,227,192,113,224,56,224,57,128,125,0,207,0,199,0,227, + 0,115,128,49,192,112,192,240,64,10,15,30,13,1,255,31, + 192,63,192,96,128,65,0,66,0,34,0,19,0,3,128,1, + 192,0,192,0,192,112,192,248,128,31,0,14,0,13,14,28, + 15,1,0,121,192,254,224,142,112,134,48,198,96,118,128,54, + 64,38,96,6,96,6,96,6,96,6,96,108,120,184,48,12, + 15,30,14,1,252,12,0,24,0,49,224,103,48,204,48,216, + 48,214,48,246,96,100,224,119,192,179,128,152,0,152,0,216, + 0,112,0,12,13,26,14,1,0,31,128,57,192,96,96,217, + 176,221,176,143,16,134,16,143,16,219,176,217,176,96,96,57, + 192,31,128,12,13,26,14,1,0,31,128,57,192,102,96,198, + 48,198,48,191,208,191,208,134,16,198,48,198,48,96,96,57, + 192,31,128,12,13,26,14,1,0,31,176,57,240,96,96,192, + 240,193,176,131,16,134,16,140,16,216,48,240,48,96,96,249, + 192,223,128,12,9,18,14,1,0,31,128,57,192,96,96,224, + 112,192,48,192,48,192,48,192,48,192,48,12,9,18,14,1, + 0,192,48,192,48,192,48,192,48,192,48,224,112,96,96,57, + 192,31,128,12,9,18,13,1,0,255,128,255,224,0,96,0, + 48,0,48,0,48,0,96,255,224,255,128,12,12,24,13,0, + 253,255,128,255,224,0,96,0,48,0,48,0,48,0,96,255, + 224,255,128,0,0,255,240,255,240,12,13,26,13,0,254,0, + 96,0,192,31,240,127,240,97,128,195,0,195,0,198,0,102, + 0,127,240,31,240,24,0,48,0,12,9,18,13,0,0,31, + 240,127,240,96,0,192,0,192,0,192,0,96,0,127,240,31, + 240,12,12,24,13,0,253,31,240,127,240,96,0,192,0,192, + 0,192,0,96,0,127,240,31,240,0,0,255,240,255,240,9, + 9,18,12,1,0,31,128,127,128,224,0,192,0,255,128,192, + 0,224,0,127,128,31,128,10,11,22,12,1,255,0,128,31, + 192,127,192,226,0,196,0,255,128,200,0,240,0,127,192,63, + 192,64,0,13,13,26,14,0,0,0,24,0,48,0,96,0, + 192,1,128,3,0,6,0,12,0,24,0,48,0,96,0,192, + 0,255,248,11,13,26,13,1,0,255,224,224,32,96,96,96, + 64,112,192,48,128,48,128,57,128,25,0,27,0,14,0,14, + 0,4,0,13,13,26,15,1,0,31,192,56,224,96,48,223, + 24,205,152,205,152,205,152,207,24,205,152,220,216,96,48,56, + 224,31,192,13,13,26,15,1,0,31,192,56,224,96,48,199, + 152,205,152,204,152,204,24,204,24,204,152,199,24,96,48,56, + 224,31,192,14,8,16,16,1,5,251,28,171,24,35,24,34, + 168,34,168,34,168,34,72,119,92,14,16,32,15,0,254,255, + 252,120,120,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,48,120,120,252,252,9, + 14,28,10,0,0,0,128,0,128,0,128,0,128,48,128,113, + 0,217,0,25,0,25,0,13,0,14,0,6,0,6,0,6, + 0,2,2,2,4,1,4,192,192,11,6,12,13,1,0,255, + 224,255,224,0,96,0,96,0,96,0,96,10,9,18,11,0, + 0,12,0,12,0,30,0,51,0,51,0,97,128,97,128,192, + 192,192,192,10,9,18,11,0,0,192,192,192,192,97,128,97, + 128,51,0,51,0,30,0,12,0,12,0,18,9,27,18,0, + 0,8,4,0,24,6,0,63,255,0,127,255,128,224,1,192, + 127,255,128,63,255,0,24,6,0,8,4,0,16,9,18,18, + 1,0,8,0,24,0,63,255,127,255,224,0,127,255,63,255, + 24,0,8,0,9,17,34,11,1,253,8,0,28,0,54,0, + 119,0,247,128,54,0,54,0,54,0,54,0,54,0,54,0, + 54,0,54,0,54,0,54,0,54,0,54,0,16,9,18,18, + 1,0,0,16,0,24,255,252,255,254,0,7,255,254,255,252, + 0,24,0,16,9,17,34,11,1,253,54,0,54,0,54,0, + 54,0,54,0,54,0,54,0,54,0,54,0,54,0,54,0, + 54,0,247,128,119,0,54,0,28,0,8,0,9,14,28,9, + 0,0,28,0,28,0,54,0,54,0,99,0,99,0,193,128, + 193,128,99,0,99,0,54,0,54,0,28,0,28,0,5,17, + 17,6,0,253,24,24,48,48,96,96,192,192,128,192,192,96, + 96,48,48,24,24,13,13,26,15,1,0,31,192,56,224,96, + 48,207,24,205,152,205,152,207,24,205,152,205,152,205,152,96, + 48,56,224,31,192,13,13,26,15,1,0,31,192,56,224,96, + 48,199,24,204,152,204,24,204,24,204,24,204,152,199,24,96, + 48,56,224,31,192,13,8,16,15,1,5,251,24,35,24,35, + 24,34,168,34,168,34,168,34,72,34,72,12,16,32,13,0, + 254,255,224,224,96,112,32,56,0,28,0,14,0,7,0,3, + 0,6,0,12,0,24,0,48,0,96,16,192,48,255,240,255, + 240,6,19,19,7,1,251,4,12,24,24,48,48,96,96,96, + 96,192,192,192,192,192,192,192,192,192,2,19,19,7,1,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,6,19,19,7,1,251,192,192,192,192,192,192,192, + 192,192,224,96,96,96,48,48,24,24,12,4,5,19,19,7, + 1,251,248,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,2,19,19,7,1,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,5,19, + 19,7,1,251,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,5,19,19,9,4,251,56,96,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 5,19,19,9,1,251,24,24,24,24,24,24,16,48,96,192, + 96,48,16,24,24,24,24,24,24,5,19,19,9,4,251,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 96,56,2,19,19,9,4,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,255,5,17,17,6, + 0,253,192,192,96,96,48,48,24,24,8,24,24,48,48,96, + 96,192,192,6,19,19,6,0,251,28,28,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,48,224,224,7,19,19,13, + 5,251,28,126,102,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,2,19,19,13,5,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,7,19, + 19,13,0,251,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,204,252,112,6,19,19,7,0,251,128,192,96, + 96,48,48,24,24,24,24,12,12,12,12,12,12,12,12,12, + 2,19,19,7,4,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,6,19,19,7,0,251,12, + 12,12,12,12,12,12,12,12,24,24,24,24,48,48,96,96, + 192,128,5,19,19,7,1,251,248,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,2,19,19,7,4, + 251,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,5,19,19,7,1,251,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,5,19,19, + 9,1,251,224,48,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,5,19,19,9,4,251,192,192,192,192, + 192,192,64,96,48,24,48,96,64,192,192,192,192,192,192,5, + 19,19,9,1,251,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,48,224,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--20-140-100-100-P-107-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=14 h=19 x= 9 y=13 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=20 h=19 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb14r[2261] U8G_SECTION(".progmem.u8g_font_symb14r") = { + 0,20,19,255,251,13,2,127,6,16,32,127,252,14,251,13, + 252,0,0,0,5,0,1,2,13,13,6,2,0,192,192,192, + 192,192,192,192,64,64,0,0,192,192,13,13,26,13,0,0, + 192,24,192,24,96,48,96,48,63,224,48,96,24,192,24,192, + 8,128,13,128,5,0,7,0,2,0,10,13,26,9,255,0, + 9,0,9,0,9,0,9,0,127,192,18,0,18,0,18,0, + 255,128,36,0,36,0,36,0,36,0,8,13,13,10,1,0, + 255,3,3,3,3,3,127,3,3,3,3,3,255,13,13,26, + 15,1,0,56,96,103,224,196,192,197,128,233,128,115,0,6, + 0,6,112,12,200,25,136,25,136,49,208,48,224,12,13,26, + 13,1,0,28,0,54,0,34,0,38,0,60,0,57,224,124, + 192,238,128,199,128,195,0,195,144,103,240,60,224,6,9,9, + 8,1,0,240,56,28,12,124,12,28,56,240,4,17,17,6, + 1,252,16,48,96,96,192,192,192,192,192,192,192,192,192,96, + 96,48,16,4,17,17,6,1,252,128,192,96,96,48,48,48, + 48,48,48,48,48,48,96,96,192,128,7,7,7,9,1,3, + 16,214,124,56,124,214,16,8,8,8,10,1,1,24,24,24, + 255,255,24,24,24,3,5,5,5,1,253,96,96,32,96,192, + 7,2,2,9,1,4,254,254,2,2,2,4,1,0,192,192, + 5,13,13,5,0,0,24,24,24,48,48,48,96,96,96,96, + 192,192,192,8,13,13,9,0,0,60,102,102,195,195,195,195, + 195,195,195,102,102,60,6,13,13,9,1,0,48,240,176,48, + 48,48,48,48,48,48,48,120,252,7,13,13,9,1,0,60, + 126,206,134,6,6,12,28,24,48,98,254,254,7,13,13,9, + 1,0,124,206,134,6,12,56,60,14,6,6,6,204,248,8, + 13,13,9,0,0,6,14,14,30,54,54,102,198,198,255,6, + 6,6,7,13,13,9,1,0,126,124,192,192,240,60,12,14, + 6,6,12,220,240,8,13,13,9,0,0,14,56,48,96,96, + 252,198,195,195,195,195,102,60,8,13,13,9,0,0,127,255, + 134,6,12,12,12,24,24,24,48,48,48,8,13,13,9,0, + 0,60,102,102,102,116,60,126,102,195,195,195,102,60,8,13, + 13,9,0,0,60,110,199,195,195,195,227,127,58,6,12,56, + 224,2,9,9,5,2,0,192,192,0,0,0,0,0,192,192, + 3,12,12,5,1,253,96,96,0,0,0,0,0,96,96,32, + 96,192,9,9,18,10,0,0,3,128,15,0,60,0,240,0, + 192,0,240,0,60,0,15,0,3,128,8,5,5,10,1,2, + 255,255,0,255,255,9,9,18,10,0,0,224,0,120,0,30, + 0,7,128,1,128,7,128,30,0,120,0,224,0,6,13,13, + 8,1,0,120,220,204,204,12,12,24,48,48,48,0,48,48, + 8,9,9,10,1,0,115,255,206,0,255,255,0,255,255,12, + 13,26,14,1,0,4,0,14,0,14,0,11,0,27,0,19, + 0,17,128,49,128,63,192,32,192,96,192,96,224,241,240,9, + 13,26,11,1,0,252,0,102,0,99,0,99,0,99,0,102, + 0,126,0,99,0,97,128,97,128,97,128,99,128,255,0,12, + 13,26,14,1,0,240,112,112,96,56,192,24,192,29,128,15, + 0,6,0,15,0,27,128,49,128,49,192,96,224,224,240,11, + 13,26,11,0,0,4,0,6,0,14,0,11,0,19,0,19, + 0,17,128,33,128,33,192,64,192,64,192,128,96,255,224,9, + 13,26,11,1,0,255,128,97,128,96,128,96,0,96,0,97, + 0,127,0,97,0,96,0,96,0,96,128,97,128,255,128,12, + 13,26,14,1,0,15,0,6,0,31,128,102,96,198,48,198, + 48,198,48,198,48,198,48,102,96,31,128,6,0,15,0,10, + 13,26,11,0,0,255,192,112,192,48,64,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,0,11, + 13,26,13,1,0,241,224,96,192,96,192,96,192,96,192,96, + 192,127,192,96,192,96,192,96,192,96,192,96,192,241,224,4, + 13,13,6,1,0,240,96,96,96,96,96,96,96,96,96,96, + 96,240,11,13,26,12,1,0,6,0,11,0,9,128,5,128, + 99,128,241,128,177,192,49,160,49,128,49,128,49,128,59,0, + 30,0,11,13,26,14,1,0,243,192,97,128,99,0,102,0, + 108,0,120,0,120,0,108,0,102,0,99,0,99,128,97,192, + 241,224,12,13,26,13,0,0,6,0,6,0,15,0,11,0, + 11,0,25,128,17,128,17,128,48,192,32,192,32,96,96,96, + 240,240,14,13,26,16,1,0,224,28,112,56,112,56,88,120, + 88,88,88,216,76,152,76,152,77,152,71,24,71,24,67,24, + 226,60,11,13,26,13,1,0,224,224,112,64,112,64,88,64, + 76,64,76,64,70,64,67,64,67,192,65,192,64,192,64,192, + 224,64,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,192,96,192,96,192,96,192,96,224,224,96,192,49,128, + 14,0,11,13,26,13,1,0,255,224,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 241,224,11,13,26,13,1,0,14,0,49,128,96,192,224,224, + 192,96,209,96,223,96,209,96,192,96,224,224,96,192,49,128, + 14,0,8,13,13,10,1,0,254,103,99,99,99,103,126,96, + 96,96,96,96,240,10,13,26,11,0,0,255,128,193,128,96, + 128,48,0,24,0,12,0,12,0,8,0,16,0,32,64,64, + 192,255,128,255,128,10,13,26,12,1,0,255,192,204,192,140, + 64,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,30,0,12,13,26,13,0,0,248,240,112,96,48, + 192,24,192,29,128,15,0,15,0,6,0,6,0,6,0,6, + 0,6,0,15,0,6,13,13,8,1,252,60,124,192,128,128, + 128,192,120,60,4,4,60,56,13,13,26,14,0,0,7,0, + 24,192,48,96,112,112,96,48,96,48,96,48,96,48,48,96, + 56,224,136,136,248,248,248,248,10,13,26,12,1,0,127,128, + 127,128,64,128,0,0,33,0,63,0,63,0,33,0,0,0, + 128,64,128,64,255,192,255,192,14,13,26,15,0,0,199,140, + 99,24,99,24,99,24,99,24,51,48,31,224,3,0,3,0, + 3,0,3,0,3,0,7,128,9,13,26,11,1,0,255,128, + 195,128,131,0,7,0,6,0,14,0,28,0,24,0,56,0, + 112,0,96,128,225,128,255,128,4,17,17,6,1,252,240,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,240,10, + 9,18,14,2,0,12,0,12,0,0,0,0,0,0,0,0, + 0,0,0,192,192,192,192,4,17,17,6,1,252,240,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,10,13, + 26,12,1,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,0,12,0,255,192,255,192,9,2, + 4,9,0,252,255,128,255,128,10,1,2,9,9,13,255,192, + 11,9,18,12,1,0,60,192,101,128,195,0,195,0,195,0, + 195,0,195,0,101,32,56,192,8,18,18,10,1,252,60,70, + 198,198,198,204,198,195,195,195,195,195,230,220,192,192,192,192, + 10,13,26,10,0,252,96,192,241,192,145,128,19,0,23,0, + 14,0,12,0,28,0,26,0,50,0,98,64,227,192,193,128, + 7,14,14,9,1,0,56,76,64,96,48,56,108,198,198,198, + 198,198,108,56,6,9,9,8,1,0,120,236,204,192,112,192, + 192,228,120,9,16,32,11,1,252,8,0,8,0,8,0,62, + 0,107,0,201,128,201,128,201,128,201,128,201,128,107,0,62, + 0,8,0,8,0,8,0,8,0,8,13,13,8,0,252,195, + 227,163,38,38,22,20,28,12,24,24,24,24,9,13,26,11, + 1,252,103,0,233,128,177,128,49,128,49,128,49,128,49,128, + 49,128,49,128,1,128,1,128,1,128,1,128,5,9,9,6, + 1,0,96,224,96,96,96,96,96,104,112,9,13,26,11,1, + 252,102,0,207,0,201,128,201,128,201,128,201,128,73,0,107, + 0,62,0,8,0,8,0,8,0,8,0,9,9,18,10,0, + 0,99,128,229,128,104,0,112,0,120,0,108,0,102,0,99, + 0,97,128,10,14,28,10,0,0,48,0,120,0,72,0,8, + 0,8,0,8,0,24,0,28,0,52,0,52,0,102,0,98, + 64,195,192,193,128,9,13,26,11,2,252,66,0,198,0,198, + 0,198,0,198,0,198,0,198,128,251,128,123,0,64,0,192, + 0,192,0,192,0,8,9,9,10,1,0,195,195,97,98,50, + 52,28,24,8,8,9,9,10,1,0,60,102,195,195,195,195, + 195,102,60,9,9,18,10,0,0,127,128,255,128,146,0,18, + 0,18,0,18,0,50,128,115,128,99,0,8,13,13,10,1, + 0,60,102,195,195,195,195,255,195,195,195,195,102,60,8,13, + 13,10,1,252,60,70,195,195,195,195,195,230,220,192,192,192, + 192,10,9,18,11,1,0,31,192,127,192,102,0,195,0,195, + 0,195,0,195,0,102,0,60,0,7,9,9,8,0,0,126, + 254,144,16,16,16,18,30,28,9,9,18,11,1,0,99,0, + 241,128,177,128,49,128,49,128,49,128,49,128,59,0,30,0, + 11,11,22,12,0,0,63,224,127,224,153,128,48,192,32,64, + 102,96,102,96,102,96,102,96,54,192,57,192,10,9,18,12, + 1,0,51,0,97,128,64,128,204,192,204,192,204,192,204,192, + 109,128,115,128,7,19,19,9,1,251,96,142,252,32,64,64, + 124,120,192,128,128,128,192,252,126,2,2,30,28,13,13,26, + 13,0,252,226,56,114,112,50,96,50,96,50,96,50,96,26, + 192,26,192,15,128,2,0,2,0,2,0,2,0,7,19,19, + 9,1,251,96,134,158,120,96,64,128,128,128,128,128,128,192, + 252,126,2,2,30,28,7,17,17,9,1,252,14,24,48,48, + 48,48,48,96,192,96,48,48,48,48,48,24,14,2,17,17, + 4,1,252,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,7,17,17,9,1,252,224,48,24,24,24,24, + 24,12,6,12,24,24,24,24,24,48,224,8,3,3,10,1, + 4,115,255,206,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=25 h=24 x=13 y=18 dx=26 dy= 0 ascent=19 len=63 + Font Bounding box w=27 h=24 x=-1 y=-5 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb18[6604] U8G_SECTION(".progmem.u8g_font_symb18") = { + 0,27,24,255,251,17,3,215,8,151,32,255,251,19,251,17, + 251,0,0,0,6,0,1,3,17,17,7,2,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,15,17, + 34,17,1,0,192,6,192,6,96,12,96,12,63,248,63,248, + 48,24,24,48,24,48,12,96,12,96,12,96,6,192,6,192, + 3,128,3,128,3,128,11,17,34,13,1,0,8,128,8,128, + 8,128,8,128,8,128,127,224,127,224,17,0,17,0,17,0, + 255,192,255,192,34,0,34,0,34,0,34,0,34,0,11,17, + 34,13,1,0,255,224,255,224,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,0,96,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,18,17,51,20,1,0,31,6,0,57, + 254,0,113,12,0,99,24,0,227,24,0,198,48,0,206,96, + 0,220,96,0,120,199,128,1,142,192,1,156,192,3,56,192, + 6,48,192,6,49,128,12,51,128,24,55,0,24,30,0,15, + 17,34,17,1,0,7,128,12,192,24,64,24,64,24,192,29, + 128,15,62,30,28,62,24,103,48,195,160,193,224,192,192,193, + 224,227,114,126,62,60,28,8,13,13,11,2,0,248,62,14, + 7,3,3,127,3,3,7,14,62,248,6,22,22,8,1,251, + 12,24,48,32,96,96,64,192,192,192,192,192,192,192,192,64, + 96,96,32,48,24,12,6,22,22,8,1,251,192,96,48,16, + 24,24,8,12,12,12,12,12,12,12,12,8,24,24,16,48, + 96,192,8,10,10,12,2,7,24,24,195,231,24,24,231,195, + 24,24,10,10,20,12,1,2,12,0,12,0,12,0,12,0, + 255,192,255,192,12,0,12,0,12,0,12,0,3,6,6,6, + 1,252,96,96,32,96,192,128,11,2,4,13,1,6,255,224, + 255,224,2,2,2,6,2,0,192,192,7,17,17,7,0,0, + 6,6,6,12,12,12,24,24,48,48,48,96,96,96,192,192, + 192,10,17,34,12,1,0,30,0,51,0,97,128,97,128,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,97,128,51,0,30,0,6,17,17,12,3,0,48, + 112,240,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 10,17,34,12,1,0,28,0,127,0,103,0,131,128,129,128, + 1,128,1,128,3,128,3,0,7,0,12,0,12,0,24,0, + 48,0,96,64,255,192,255,128,9,17,34,12,1,0,28,0, + 126,0,71,0,131,0,131,0,6,0,12,0,30,0,7,0, + 3,0,1,128,1,128,1,128,3,0,199,0,254,0,120,0, + 10,17,34,12,1,0,3,0,7,0,7,0,15,0,11,0, + 27,0,19,0,51,0,35,0,99,0,67,0,255,192,255,192, + 3,0,3,0,3,0,3,0,10,17,34,12,1,0,31,192, + 63,128,96,0,96,0,192,0,240,0,252,0,30,0,7,0, + 3,128,1,128,1,128,1,128,1,128,195,0,254,0,124,0, + 10,17,34,12,1,0,3,192,14,0,56,0,112,0,96,0, + 224,0,207,0,243,128,225,128,192,192,192,192,192,192,192,192, + 224,192,97,192,115,128,31,0,10,17,34,12,1,0,127,192, + 255,192,192,192,129,128,1,128,3,0,3,0,3,0,6,0, + 6,0,6,0,12,0,12,0,12,0,24,0,24,0,24,0, + 10,17,34,12,1,0,30,0,51,0,97,128,97,128,97,128, + 51,0,30,0,30,0,55,0,115,128,225,192,192,192,192,192, + 192,192,225,192,115,128,30,0,10,17,34,12,1,0,30,0, + 115,128,97,128,192,192,192,192,192,192,192,192,192,192,97,192, + 115,192,30,192,1,128,3,128,7,0,14,0,60,0,240,0, + 2,11,11,6,2,0,192,192,0,0,0,0,0,0,0,192, + 192,3,15,15,6,1,252,96,96,0,0,0,0,0,0,0, + 96,96,32,96,192,128,12,12,24,13,0,1,0,112,1,224, + 7,128,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,112,10,5,10,12,1,4,255,192,255,192,0,0, + 255,192,255,192,12,12,24,13,0,1,224,0,120,0,30,0, + 7,128,1,224,0,112,0,112,1,224,7,128,30,0,120,0, + 224,0,8,17,17,11,2,0,124,198,131,195,199,6,14,12, + 28,24,24,16,16,0,0,48,48,11,12,24,13,1,1,56, + 32,124,96,199,192,131,128,0,0,0,0,255,224,255,224,0, + 0,0,0,255,224,255,224,17,17,51,18,0,0,0,128,0, + 1,192,0,1,192,0,1,64,0,3,96,0,2,96,0,2, + 48,0,6,48,0,4,48,0,12,24,0,8,24,0,15,252, + 0,24,12,0,16,12,0,48,6,0,48,6,0,248,15,128, + 13,17,34,15,1,0,255,192,48,224,48,112,48,48,48,48, + 48,48,48,48,48,96,63,192,48,112,48,56,48,24,48,24, + 48,24,48,56,48,112,255,192,16,17,34,18,1,0,248,31, + 112,14,56,12,28,24,12,48,14,96,7,192,3,128,3,128, + 7,192,6,96,12,112,24,48,24,24,48,28,112,14,248,31, + 15,17,34,15,0,0,3,0,3,0,3,128,5,128,4,192, + 12,192,8,96,8,96,24,48,16,48,48,24,32,24,32,12, + 96,12,64,6,192,6,255,254,13,17,34,15,1,0,255,240, + 48,48,48,16,48,0,48,0,48,0,48,32,48,32,63,224, + 48,32,48,32,48,0,48,0,48,0,48,8,48,24,255,248, + 16,17,34,19,1,0,7,224,1,128,1,128,15,240,57,156, + 97,134,225,135,193,131,193,131,193,131,225,135,97,134,57,156, + 15,240,1,128,1,128,7,224,13,17,34,15,1,0,255,248, + 48,24,48,8,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 16,17,34,18,1,0,252,63,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,17,17,8,1,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,14, + 17,34,16,1,0,3,192,6,224,4,96,6,96,3,48,113, + 176,248,240,152,60,24,48,24,48,48,48,48,48,48,48,48, + 96,56,96,28,192,15,128,15,17,34,17,1,0,252,124,48, + 48,48,96,48,192,49,128,51,0,54,0,62,0,63,0,51, + 128,49,128,49,192,48,224,48,112,48,56,48,28,252,62,15, + 17,34,17,1,0,3,0,3,0,3,128,5,128,4,192,4, + 192,12,192,8,96,8,96,24,96,16,48,16,48,48,48,32, + 24,32,24,96,28,248,62,20,17,51,22,1,0,240,1,240, + 56,1,192,56,3,192,60,2,192,44,2,192,46,6,192,38, + 4,192,39,12,192,35,8,192,35,136,192,33,152,192,33,208, + 192,32,208,192,32,240,192,32,96,192,32,96,192,248,67,240, + 16,17,34,18,1,0,240,31,56,4,56,4,44,4,46,4, + 38,4,35,4,35,4,33,132,33,196,32,196,32,100,32,100, + 32,52,32,60,32,28,248,12,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,96,6,112,14,56,28,28,56,7,224, + 16,17,34,18,1,0,255,255,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,200,19,200,19,207,243,207,243, + 200,19,200,19,192,3,96,6,112,14,56,28,28,56,7,224, + 12,17,34,14,1,0,255,128,48,224,48,96,48,48,48,48, + 48,48,48,96,48,224,63,128,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,252,0,12,17,34,14,1,0,255,240, + 224,16,112,16,56,0,28,0,14,0,7,0,3,128,3,0, + 6,0,12,0,24,0,48,0,96,16,192,16,255,240,255,240, + 14,17,34,16,1,0,255,252,195,12,131,4,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,16,17,34,16,0,0,248,31, + 112,14,48,12,24,24,28,16,12,48,14,96,6,96,3,192, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 9,18,36,11,1,251,31,128,63,128,96,0,96,0,192,0, + 192,0,192,0,192,0,192,0,192,0,96,0,127,0,31,128, + 0,128,0,128,1,128,15,0,14,0,16,17,34,18,1,0, + 7,224,30,120,56,28,112,14,96,6,192,3,192,3,192,3, + 192,3,192,3,96,6,48,12,24,24,140,49,196,35,252,63, + 252,63,14,17,34,16,1,0,127,248,127,248,64,8,64,8, + 0,0,16,32,16,32,31,224,31,224,16,32,16,32,0,0, + 0,0,128,4,128,4,255,252,255,252,18,17,51,20,1,0, + 227,241,192,112,195,128,48,195,0,48,195,0,56,199,0,56, + 199,0,24,198,0,28,206,0,7,248,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 3,240,0,12,17,34,15,1,0,255,240,192,112,128,96,0, + 224,1,192,1,128,3,128,7,0,6,0,14,0,28,0,56, + 0,56,0,112,0,96,16,224,48,255,240,5,22,22,8,2, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,12,10,20,18,3,0,6,0,6, + 0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,192, + 48,5,22,22,8,1,251,248,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,14,17,34, + 16,1,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,13,2,4,13,0,251,255,248,255,248,13, + 1,2,13,13,18,255,248,14,13,26,16,1,0,31,24,113, + 184,96,176,224,240,192,96,192,96,192,96,192,96,192,96,224, + 224,96,228,113,252,31,56,10,24,48,12,1,251,62,0,103, + 0,195,128,193,128,193,128,195,128,195,0,206,0,207,0,195, + 128,193,128,193,192,192,192,192,192,192,192,193,192,225,128,243, + 128,223,0,192,0,192,0,192,0,192,0,192,0,12,18,36, + 14,1,251,112,96,248,96,216,192,136,192,9,128,9,128,11, + 0,7,0,6,0,6,0,14,0,14,0,25,0,25,0,49, + 16,49,176,97,240,96,224,10,18,36,12,1,0,31,0,51, + 128,33,128,48,0,56,0,28,0,14,0,63,0,115,128,97, + 128,192,192,192,192,192,192,192,192,192,192,97,128,115,128,30, + 0,9,13,26,11,1,0,62,0,115,0,227,0,195,0,224, + 0,96,0,60,0,96,0,224,0,192,0,224,128,113,128,63, + 0,12,22,44,14,1,251,6,0,6,0,6,0,6,0,31, + 128,54,192,102,96,230,112,198,48,198,48,198,48,198,48,198, + 48,230,112,102,96,54,192,31,128,6,0,6,0,6,0,6, + 0,6,0,11,18,36,11,0,251,112,96,248,96,152,96,152, + 192,24,192,12,192,13,128,13,128,5,128,7,0,7,0,3, + 0,6,0,6,0,6,0,6,0,6,0,6,0,12,18,36, + 15,1,251,113,192,251,224,158,48,28,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,0,48,0, + 48,0,48,0,48,0,48,7,13,13,8,1,0,48,112,240, + 48,48,48,48,48,48,48,50,62,28,12,18,36,14,1,251, + 51,128,115,192,102,96,198,112,198,48,198,48,198,48,198,48, + 198,48,230,112,102,96,54,192,31,128,6,0,6,0,6,0, + 6,0,6,0,12,13,26,14,1,0,48,112,112,240,241,176, + 51,0,54,0,60,0,60,0,62,0,55,0,51,128,49,192, + 48,224,49,240,12,19,38,14,1,0,112,0,248,0,136,0, + 8,0,8,0,12,0,12,0,12,0,28,0,30,0,26,0, + 50,0,50,0,51,0,97,0,97,0,97,144,193,240,192,224, + 13,18,36,14,1,251,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,200,63,248,111,48, + 96,0,96,0,96,0,96,0,192,0,11,13,26,13,1,0, + 192,224,192,224,192,96,96,64,96,192,96,128,49,128,49,0, + 51,0,26,0,26,0,14,0,12,0,11,13,26,13,1,0, + 31,0,113,192,96,192,224,224,192,96,192,96,192,96,192,96, + 192,96,224,224,96,192,113,192,31,0,13,13,26,14,0,0, + 127,248,255,248,152,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,200,56,248,48,240,10,17,34,12,1,0, + 30,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 255,192,192,192,192,192,192,192,192,192,97,128,97,128,51,0, + 30,0,10,18,36,12,1,251,62,0,99,128,193,128,193,192, + 192,192,192,192,192,192,192,192,192,192,193,192,193,128,227,128, + 222,0,192,0,192,0,192,0,192,0,192,0,14,13,26,15, + 1,0,31,252,113,252,96,192,224,224,192,96,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,10,13,26,11, + 0,0,63,192,127,192,204,0,140,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,128,15,128,7,0,13,13,26,14, + 0,0,48,224,120,48,216,24,152,24,24,24,24,24,24,24, + 24,24,24,24,24,48,12,48,14,224,7,192,16,14,28,18, + 1,0,127,255,255,255,152,24,48,12,49,140,97,134,97,134, + 97,134,97,134,97,134,97,134,49,140,59,220,30,120,14,13, + 26,16,1,0,24,96,48,48,96,24,99,24,195,12,195,12, + 195,12,195,12,195,12,195,12,99,24,119,184,60,240,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,48,0,32,0, + 55,128,31,128,48,0,96,0,192,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,16,18,36,18,1,251,193,131,113,142,49,140, + 57,156,57,156,57,156,57,156,57,156,57,156,25,152,25,152, + 13,176,7,224,1,128,1,128,1,128,1,128,1,128,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,24,0,48,0, + 32,0,96,0,64,0,192,0,128,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,8,22,22,10,1,251,7,12,24,24,24,24, + 24,16,48,32,192,32,48,16,24,24,24,24,24,24,12,7, + 2,22,22,4,1,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,22,22,10, + 1,251,224,48,24,24,24,24,24,8,12,4,3,4,12,8, + 24,24,24,24,24,24,48,224,11,4,8,13,1,5,56,32, + 124,96,199,192,131,128,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,13,17,34,15,1,0,224,112, + 112,216,57,184,27,48,14,0,6,0,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,31,128, + 5,6,6,6,1,12,24,56,112,96,192,128,12,15,30,14, + 0,0,0,112,1,224,7,128,30,0,120,0,224,0,224,0, + 120,0,30,0,3,192,0,240,0,48,0,0,255,240,255,240, + 8,17,17,4,255,0,3,3,6,6,12,12,24,24,24,48, + 48,96,96,96,192,192,192,15,7,14,17,1,4,56,56,124, + 124,198,198,195,134,199,198,124,124,56,56,13,22,44,13,0, + 251,0,240,1,152,1,152,3,0,3,0,3,0,31,192,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,204,0,204,0,120,0,14,13,26, + 18,2,0,7,128,15,192,15,192,15,192,15,192,119,184,251, + 124,255,252,255,252,251,124,115,56,3,0,7,128,10,13,26, + 18,4,0,12,0,30,0,63,0,63,0,127,128,127,128,255, + 192,127,128,127,128,63,0,30,0,30,0,12,0,12,13,26, + 18,3,0,112,224,249,240,255,240,255,240,255,240,255,240,127, + 224,127,224,63,192,31,128,31,128,15,0,6,0,12,13,26, + 18,3,0,6,0,15,0,31,128,31,128,63,192,127,224,127, + 224,255,240,255,240,246,240,102,96,6,0,6,0,24,12,36, + 26,1,1,6,0,96,12,0,48,24,0,24,48,0,12,96, + 0,6,255,255,255,255,255,255,96,0,6,48,0,12,24,0, + 24,12,0,48,6,0,96,25,12,48,25,0,1,6,0,0, + 0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0, + 0,255,255,255,128,255,255,255,128,96,0,0,0,48,0,0, + 0,24,0,0,0,12,0,0,0,6,0,0,0,12,24,48, + 14,1,251,6,0,15,0,31,128,54,192,102,96,198,48,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,25,12,48,25,0,1,0,0,48,0,0,0,24, + 0,0,0,12,0,0,0,6,0,0,0,3,0,255,255,255, + 128,255,255,255,128,0,0,3,0,0,0,6,0,0,0,12, + 0,0,0,24,0,0,0,48,0,12,24,48,14,1,251,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,0,198,48,102,96,54,192,31,128,15,0,6,0,7, + 7,7,9,1,10,56,108,198,198,198,108,56,10,14,28,12, + 1,0,12,0,12,0,12,0,12,0,255,192,255,192,12,0, + 12,0,12,0,12,0,0,0,0,0,255,192,255,192,9,6, + 12,10,1,12,25,128,59,128,119,0,102,0,204,0,136,0, + 12,15,30,14,0,0,224,0,120,0,30,0,7,128,1,224, + 0,112,0,112,1,224,7,128,62,0,240,0,192,0,0,0, + 255,240,255,240,11,10,20,13,1,2,192,96,96,192,49,128, + 27,0,14,0,14,0,27,0,49,128,96,192,192,96,14,7, + 14,16,1,4,56,56,124,124,198,192,195,128,199,192,124,124, + 56,56,10,19,38,12,1,0,62,0,99,0,193,128,1,128, + 0,192,0,192,0,192,0,192,30,192,115,192,97,192,192,192, + 192,192,193,128,193,128,193,128,227,0,119,0,62,0,8,8, + 8,12,2,3,60,126,255,255,255,255,126,60,10,8,16,12, + 1,3,12,0,12,0,0,0,255,192,255,192,0,0,12,0, + 12,0,10,13,26,14,2,0,1,128,1,128,3,0,3,0, + 255,192,255,192,12,0,255,192,255,192,48,0,48,0,96,0, + 96,0,11,8,16,13,1,3,255,224,255,224,0,0,255,224, + 255,224,0,0,255,224,255,224,11,8,16,13,1,3,56,32, + 124,96,199,192,131,128,56,32,124,96,199,192,131,128,18,2, + 6,24,3,0,192,192,192,192,192,192,2,24,24,14,6,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,25,2,8,25,0,6,255,255, + 255,128,255,255,255,128,14,16,32,16,1,0,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 32,12,96,12,255,252,255,252,96,0,32,0,12,16,32,14, + 1,0,129,128,195,0,227,240,113,240,56,96,28,192,60,128, + 110,128,199,128,195,128,227,128,241,192,112,224,48,112,112,48, + 224,16,14,19,38,16,1,255,15,128,63,252,112,248,96,48, + 64,96,64,192,96,192,48,224,28,112,0,56,0,56,0,28, + 0,28,0,12,48,12,120,12,222,24,15,240,3,192,17,18, + 54,19,1,0,30,24,0,63,60,0,99,206,0,193,135,0, + 129,131,0,193,134,0,225,140,0,113,184,0,57,176,0,25, + 152,0,17,152,0,1,152,0,1,156,0,1,140,0,1,140, + 0,25,134,128,63,7,128,78,7,0,15,20,40,19,2,251, + 6,0,12,0,24,60,48,254,49,134,99,6,102,6,108,6, + 104,12,121,156,115,152,114,48,122,112,91,224,221,128,140,0, + 140,0,140,0,216,0,112,0,16,17,34,18,1,0,7,224, + 30,120,56,28,96,6,104,22,204,51,198,99,195,195,193,131, + 195,195,198,99,204,51,104,22,96,6,56,28,30,120,7,224, + 16,17,34,18,1,0,7,224,30,120,56,28,97,134,97,134, + 193,131,193,131,207,243,207,243,193,131,193,131,193,131,97,134, + 96,6,56,28,30,120,7,224,18,17,51,20,1,0,3,240, + 192,15,253,128,28,15,0,48,7,0,48,15,0,96,25,128, + 96,49,128,96,97,128,96,193,128,97,129,128,99,1,128,102, + 1,128,60,3,0,56,3,0,60,14,0,111,252,0,195,240, + 0,16,13,26,18,1,0,7,224,31,248,56,28,96,6,96, + 6,192,3,192,3,192,3,192,3,192,3,192,3,192,3,192, + 3,16,13,26,18,1,0,192,3,192,3,192,3,192,3,192, + 3,192,3,192,3,192,3,96,6,96,6,56,28,31,248,7, + 224,15,12,24,17,1,0,255,224,255,248,0,28,0,12,0, + 6,0,6,0,6,0,6,0,12,0,28,255,248,255,224,15, + 15,30,17,1,253,255,224,255,248,0,28,0,12,0,6,0, + 6,0,6,0,6,0,12,0,28,255,248,255,224,0,0,255, + 254,255,254,15,16,32,17,1,254,0,12,0,12,15,254,63, + 254,112,48,96,48,192,96,192,96,192,192,192,192,97,128,113, + 128,63,254,15,254,6,0,6,0,15,12,24,17,1,0,15, + 254,63,254,112,0,96,0,192,0,192,0,192,0,192,0,96, + 0,112,0,63,254,15,254,15,15,30,17,1,253,15,254,63, + 254,112,0,96,0,192,0,192,0,192,0,192,0,96,0,112, + 0,63,254,15,254,0,0,255,254,255,254,12,13,26,16,2, + 0,31,240,127,240,96,0,192,0,192,0,192,0,255,240,192, + 0,192,0,192,0,96,0,127,240,31,240,12,15,30,16,2, + 255,0,192,31,240,127,240,97,128,193,128,195,0,195,0,255, + 240,198,0,198,0,204,0,108,0,127,240,31,240,24,0,17, + 16,48,19,1,0,0,1,128,0,3,0,0,6,0,0,12, + 0,0,24,0,0,48,0,0,96,0,0,192,0,1,128,0, + 3,0,0,6,0,0,12,0,0,24,0,0,48,0,0,127, + 255,128,255,255,128,16,18,36,18,1,0,255,255,192,3,192, + 2,96,6,96,4,48,12,48,8,48,24,24,16,24,48,12, + 32,12,32,6,96,6,64,3,192,3,192,1,128,1,128,16, + 17,34,18,1,0,7,224,30,120,56,28,96,6,111,230,198, + 115,198,51,198,115,199,227,198,195,198,99,198,51,111,62,96, + 6,56,28,30,120,7,224,16,17,34,18,1,0,7,224,30, + 120,56,28,96,6,99,230,198,99,204,35,204,3,204,3,204, + 3,204,3,206,51,103,230,99,198,56,28,30,120,7,224,20, + 10,30,22,1,7,255,96,112,153,96,96,24,112,224,24,112, + 224,24,89,96,24,89,96,24,78,96,24,78,96,24,70,96, + 60,230,240,17,21,63,19,1,253,255,255,128,48,6,0,48, + 6,0,48,6,0,48,6,0,48,6,0,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 48,6,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,252,31,128,14,19,38,14,0,0,0,12, + 0,12,0,8,0,8,0,24,48,24,112,16,216,16,24,16, + 12,48,12,48,6,32,6,32,3,32,3,96,1,192,1,192, + 0,192,0,192,2,2,2,6,2,6,192,192,15,8,16,17, + 1,0,255,254,255,254,0,6,0,6,0,6,0,6,0,6, + 0,6,13,12,24,15,1,0,7,0,7,0,13,128,13,128, + 24,192,24,192,48,96,48,96,96,48,96,48,192,24,192,24, + 13,12,24,15,1,0,192,24,192,24,96,48,96,48,48,96, + 48,96,24,192,24,192,13,128,13,128,7,0,7,0,23,12, + 36,25,1,0,6,0,192,12,0,96,24,0,48,63,255,248, + 127,255,252,224,0,14,224,0,14,127,255,252,63,255,248,24, + 0,48,12,0,96,6,0,192,23,12,36,25,1,0,6,0, + 0,12,0,0,24,0,0,63,255,254,127,255,254,224,0,0, + 224,0,0,127,255,254,63,255,254,24,0,0,12,0,0,6, + 0,0,12,19,38,14,1,0,6,0,15,0,31,128,57,192, + 121,224,217,176,25,128,25,128,25,128,25,128,25,128,25,128, + 25,128,25,128,25,128,25,128,25,128,25,128,25,128,23,12, + 36,25,1,0,0,0,192,0,0,96,0,0,48,255,255,248, + 255,255,252,0,0,14,0,0,14,255,255,252,255,255,248,0, + 0,48,0,0,96,0,0,192,12,19,38,14,1,0,25,128, + 25,128,25,128,25,128,25,128,25,128,25,128,25,128,25,128, + 25,128,25,128,25,128,25,128,217,176,121,224,57,192,31,128, + 15,0,6,0,10,18,36,12,1,0,12,0,30,0,30,0, + 51,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 97,128,97,128,51,0,51,0,30,0,30,0,12,0,7,22, + 22,8,0,251,6,6,12,12,24,24,48,48,96,96,192,192, + 96,96,48,48,24,24,12,12,6,6,16,17,34,18,1,0, + 7,224,30,120,56,28,96,6,103,230,198,51,198,51,198,51, + 199,227,198,99,198,51,198,51,102,50,96,6,56,28,30,120, + 7,224,16,17,34,18,1,0,7,224,30,120,56,28,96,6, + 99,198,198,99,204,35,204,3,200,3,200,3,204,3,204,35, + 102,102,99,198,56,28,30,120,7,224,18,10,30,20,1,7, + 254,192,192,24,192,192,24,225,192,24,225,192,24,243,192,24, + 210,192,24,222,192,24,204,192,24,204,192,24,204,192,14,20, + 40,18,2,254,255,248,224,24,112,8,56,0,28,0,14,0, + 7,0,3,128,1,192,0,192,1,128,3,0,6,0,12,0, + 24,0,48,0,96,4,192,12,255,252,255,252,9,24,48,10, + 1,251,1,128,3,0,6,0,12,0,24,0,24,0,48,0, + 48,0,96,0,96,0,96,0,96,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,2,24,24,10,1,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 9,24,48,10,1,251,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,0,96,0,96,0,48,0,48,0,24,0,24,0,12,0, + 6,0,3,0,1,128,7,24,24,10,1,251,254,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,2,24,24,10,1,251,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,7,24,24,10,1,251,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,254, + 7,24,24,12,5,251,30,48,96,96,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,5,24, + 24,12,2,251,24,24,24,24,24,24,24,24,16,48,96,192, + 96,48,16,24,24,24,24,24,24,24,24,24,7,24,24,12, + 5,251,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,96,96,48,30,2,24,24,12,5,251, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,255,7,22,22,8,1,251,192, + 192,96,96,48,48,24,24,12,12,6,6,12,12,24,24,48, + 48,96,96,192,192,8,24,24,8,0,251,7,15,27,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 216,240,224,8,24,24,17,8,251,14,27,51,32,96,64,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,2,24,24,17,8,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,8, + 24,24,17,2,251,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,2,6,204,216,112,9,24,48, + 10,0,251,192,0,96,0,48,0,24,0,12,0,12,0,6, + 0,6,0,3,0,3,0,3,0,3,0,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,2,24,24,10,7,251,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,9,24,48,10,0,251,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3, + 0,3,0,3,0,3,0,6,0,6,0,12,0,12,0,24, + 0,48,0,96,0,192,0,7,24,24,10,2,251,254,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,2,24,24,10,7,251,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,7,24,24,10,2,251,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 254,7,24,24,12,0,251,240,24,12,12,6,6,6,6,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5, + 24,24,12,5,251,192,192,192,192,192,192,192,192,64,96,48, + 24,48,96,64,192,192,192,192,192,192,192,192,192,7,24,24, + 12,0,251,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,12,12,24,240,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--25-180-100-100-P-142-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=20 h=24 x=13 y=18 dx=22 dy= 0 ascent=19 len=51 + Font Bounding box w=27 h=24 x=-1 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =19 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb18r[3303] U8G_SECTION(".progmem.u8g_font_symb18r") = { + 0,27,24,255,251,17,3,215,8,151,32,127,251,19,251,17, + 251,0,0,0,6,0,1,3,17,17,7,2,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,15,17, + 34,17,1,0,192,6,192,6,96,12,96,12,63,248,63,248, + 48,24,24,48,24,48,12,96,12,96,12,96,6,192,6,192, + 3,128,3,128,3,128,11,17,34,13,1,0,8,128,8,128, + 8,128,8,128,8,128,127,224,127,224,17,0,17,0,17,0, + 255,192,255,192,34,0,34,0,34,0,34,0,34,0,11,17, + 34,13,1,0,255,224,255,224,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,0,96,0,96,0,96,0,96,0,96, + 0,96,255,224,255,224,18,17,51,20,1,0,31,6,0,57, + 254,0,113,12,0,99,24,0,227,24,0,198,48,0,206,96, + 0,220,96,0,120,199,128,1,142,192,1,156,192,3,56,192, + 6,48,192,6,49,128,12,51,128,24,55,0,24,30,0,15, + 17,34,17,1,0,7,128,12,192,24,64,24,64,24,192,29, + 128,15,62,30,28,62,24,103,48,195,160,193,224,192,192,193, + 224,227,114,126,62,60,28,8,13,13,11,2,0,248,62,14, + 7,3,3,127,3,3,7,14,62,248,6,22,22,8,1,251, + 12,24,48,32,96,96,64,192,192,192,192,192,192,192,192,64, + 96,96,32,48,24,12,6,22,22,8,1,251,192,96,48,16, + 24,24,8,12,12,12,12,12,12,12,12,8,24,24,16,48, + 96,192,8,10,10,12,2,7,24,24,195,231,24,24,231,195, + 24,24,10,10,20,12,1,2,12,0,12,0,12,0,12,0, + 255,192,255,192,12,0,12,0,12,0,12,0,3,6,6,6, + 1,252,96,96,32,96,192,128,11,2,4,13,1,6,255,224, + 255,224,2,2,2,6,2,0,192,192,7,17,17,7,0,0, + 6,6,6,12,12,12,24,24,48,48,48,96,96,96,192,192, + 192,10,17,34,12,1,0,30,0,51,0,97,128,97,128,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,97,128,97,128,51,0,30,0,6,17,17,12,3,0,48, + 112,240,48,48,48,48,48,48,48,48,48,48,48,48,48,252, + 10,17,34,12,1,0,28,0,127,0,103,0,131,128,129,128, + 1,128,1,128,3,128,3,0,7,0,12,0,12,0,24,0, + 48,0,96,64,255,192,255,128,9,17,34,12,1,0,28,0, + 126,0,71,0,131,0,131,0,6,0,12,0,30,0,7,0, + 3,0,1,128,1,128,1,128,3,0,199,0,254,0,120,0, + 10,17,34,12,1,0,3,0,7,0,7,0,15,0,11,0, + 27,0,19,0,51,0,35,0,99,0,67,0,255,192,255,192, + 3,0,3,0,3,0,3,0,10,17,34,12,1,0,31,192, + 63,128,96,0,96,0,192,0,240,0,252,0,30,0,7,0, + 3,128,1,128,1,128,1,128,1,128,195,0,254,0,124,0, + 10,17,34,12,1,0,3,192,14,0,56,0,112,0,96,0, + 224,0,207,0,243,128,225,128,192,192,192,192,192,192,192,192, + 224,192,97,192,115,128,31,0,10,17,34,12,1,0,127,192, + 255,192,192,192,129,128,1,128,3,0,3,0,3,0,6,0, + 6,0,6,0,12,0,12,0,12,0,24,0,24,0,24,0, + 10,17,34,12,1,0,30,0,51,0,97,128,97,128,97,128, + 51,0,30,0,30,0,55,0,115,128,225,192,192,192,192,192, + 192,192,225,192,115,128,30,0,10,17,34,12,1,0,30,0, + 115,128,97,128,192,192,192,192,192,192,192,192,192,192,97,192, + 115,192,30,192,1,128,3,128,7,0,14,0,60,0,240,0, + 2,11,11,6,2,0,192,192,0,0,0,0,0,0,0,192, + 192,3,15,15,6,1,252,96,96,0,0,0,0,0,0,0, + 96,96,32,96,192,128,12,12,24,13,0,1,0,112,1,224, + 7,128,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,112,10,5,10,12,1,4,255,192,255,192,0,0, + 255,192,255,192,12,12,24,13,0,1,224,0,120,0,30,0, + 7,128,1,224,0,112,0,112,1,224,7,128,30,0,120,0, + 224,0,8,17,17,11,2,0,124,198,131,195,199,6,14,12, + 28,24,24,16,16,0,0,48,48,11,12,24,13,1,1,56, + 32,124,96,199,192,131,128,0,0,0,0,255,224,255,224,0, + 0,0,0,255,224,255,224,17,17,51,18,0,0,0,128,0, + 1,192,0,1,192,0,1,64,0,3,96,0,2,96,0,2, + 48,0,6,48,0,4,48,0,12,24,0,8,24,0,15,252, + 0,24,12,0,16,12,0,48,6,0,48,6,0,248,15,128, + 13,17,34,15,1,0,255,192,48,224,48,112,48,48,48,48, + 48,48,48,48,48,96,63,192,48,112,48,56,48,24,48,24, + 48,24,48,56,48,112,255,192,16,17,34,18,1,0,248,31, + 112,14,56,12,28,24,12,48,14,96,7,192,3,128,3,128, + 7,192,6,96,12,112,24,48,24,24,48,28,112,14,248,31, + 15,17,34,15,0,0,3,0,3,0,3,128,5,128,4,192, + 12,192,8,96,8,96,24,48,16,48,48,24,32,24,32,12, + 96,12,64,6,192,6,255,254,13,17,34,15,1,0,255,240, + 48,48,48,16,48,0,48,0,48,0,48,32,48,32,63,224, + 48,32,48,32,48,0,48,0,48,0,48,8,48,24,255,248, + 16,17,34,19,1,0,7,224,1,128,1,128,15,240,57,156, + 97,134,225,135,193,131,193,131,193,131,225,135,97,134,57,156, + 15,240,1,128,1,128,7,224,13,17,34,15,1,0,255,248, + 48,24,48,8,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,252,0, + 16,17,34,18,1,0,252,63,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,63,252,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,6,17,17,8,1,0,252,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,252,14, + 17,34,16,1,0,3,192,6,224,4,96,6,96,3,48,113, + 176,248,240,152,60,24,48,24,48,48,48,48,48,48,48,48, + 96,56,96,28,192,15,128,15,17,34,17,1,0,252,124,48, + 48,48,96,48,192,49,128,51,0,54,0,62,0,63,0,51, + 128,49,128,49,192,48,224,48,112,48,56,48,28,252,62,15, + 17,34,17,1,0,3,0,3,0,3,128,5,128,4,192,4, + 192,12,192,8,96,8,96,24,96,16,48,16,48,48,48,32, + 24,32,24,96,28,248,62,20,17,51,22,1,0,240,1,240, + 56,1,192,56,3,192,60,2,192,44,2,192,46,6,192,38, + 4,192,39,12,192,35,8,192,35,136,192,33,152,192,33,208, + 192,32,208,192,32,240,192,32,96,192,32,96,192,248,67,240, + 16,17,34,18,1,0,240,31,56,4,56,4,44,4,46,4, + 38,4,35,4,35,4,33,132,33,196,32,196,32,100,32,100, + 32,52,32,60,32,28,248,12,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,96,6,112,14,56,28,28,56,7,224, + 16,17,34,18,1,0,255,255,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,48,12,48,12,48,12,48,12,48,12, + 48,12,48,12,48,12,252,63,16,17,34,18,1,0,7,224, + 30,120,56,28,112,14,96,6,200,19,200,19,207,243,207,243, + 200,19,200,19,192,3,96,6,112,14,56,28,28,56,7,224, + 12,17,34,14,1,0,255,128,48,224,48,96,48,48,48,48, + 48,48,48,96,48,224,63,128,48,0,48,0,48,0,48,0, + 48,0,48,0,48,0,252,0,12,17,34,14,1,0,255,240, + 224,16,112,16,56,0,28,0,14,0,7,0,3,128,3,0, + 6,0,12,0,24,0,48,0,96,16,192,16,255,240,255,240, + 14,17,34,16,1,0,255,252,195,12,131,4,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,0,3,0,15,192,16,17,34,16,0,0,248,31, + 112,14,48,12,24,24,28,16,12,48,14,96,6,96,3,192, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 9,18,36,11,1,251,31,128,63,128,96,0,96,0,192,0, + 192,0,192,0,192,0,192,0,192,0,96,0,127,0,31,128, + 0,128,0,128,1,128,15,0,14,0,16,17,34,18,1,0, + 7,224,30,120,56,28,112,14,96,6,192,3,192,3,192,3, + 192,3,192,3,96,6,48,12,24,24,140,49,196,35,252,63, + 252,63,14,17,34,16,1,0,127,248,127,248,64,8,64,8, + 0,0,16,32,16,32,31,224,31,224,16,32,16,32,0,0, + 0,0,128,4,128,4,255,252,255,252,18,17,51,20,1,0, + 227,241,192,112,195,128,48,195,0,48,195,0,56,199,0,56, + 199,0,24,198,0,28,206,0,7,248,0,0,192,0,0,192, + 0,0,192,0,0,192,0,0,192,0,0,192,0,0,192,0, + 3,240,0,12,17,34,15,1,0,255,240,192,112,128,96,0, + 224,1,192,1,128,3,128,7,0,6,0,14,0,28,0,56, + 0,56,0,112,0,96,16,224,48,255,240,5,22,22,8,2, + 251,248,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,248,12,10,20,18,3,0,6,0,6, + 0,0,0,0,0,0,0,0,0,0,0,0,0,192,48,192, + 48,5,22,22,8,1,251,248,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,24,24,24,24,24,248,14,17,34, + 16,1,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,255,252,255,252,13,2,4,13,0,251,255,248,255,248,13, + 1,2,13,13,18,255,248,14,13,26,16,1,0,31,24,113, + 184,96,176,224,240,192,96,192,96,192,96,192,96,192,96,224, + 224,96,228,113,252,31,56,10,24,48,12,1,251,62,0,103, + 0,195,128,193,128,193,128,195,128,195,0,206,0,207,0,195, + 128,193,128,193,192,192,192,192,192,192,192,193,192,225,128,243, + 128,223,0,192,0,192,0,192,0,192,0,192,0,12,18,36, + 14,1,251,112,96,248,96,216,192,136,192,9,128,9,128,11, + 0,7,0,6,0,6,0,14,0,14,0,25,0,25,0,49, + 16,49,176,97,240,96,224,10,18,36,12,1,0,31,0,51, + 128,33,128,48,0,56,0,28,0,14,0,63,0,115,128,97, + 128,192,192,192,192,192,192,192,192,192,192,97,128,115,128,30, + 0,9,13,26,11,1,0,62,0,115,0,227,0,195,0,224, + 0,96,0,60,0,96,0,224,0,192,0,224,128,113,128,63, + 0,12,22,44,14,1,251,6,0,6,0,6,0,6,0,31, + 128,54,192,102,96,230,112,198,48,198,48,198,48,198,48,198, + 48,230,112,102,96,54,192,31,128,6,0,6,0,6,0,6, + 0,6,0,11,18,36,11,0,251,112,96,248,96,152,96,152, + 192,24,192,12,192,13,128,13,128,5,128,7,0,7,0,3, + 0,6,0,6,0,6,0,6,0,6,0,6,0,12,18,36, + 15,1,251,113,192,251,224,158,48,28,48,24,48,24,48,24, + 48,24,48,24,48,24,48,24,48,24,48,24,48,0,48,0, + 48,0,48,0,48,0,48,7,13,13,8,1,0,48,112,240, + 48,48,48,48,48,48,48,50,62,28,12,18,36,14,1,251, + 51,128,115,192,102,96,198,112,198,48,198,48,198,48,198,48, + 198,48,230,112,102,96,54,192,31,128,6,0,6,0,6,0, + 6,0,6,0,12,13,26,14,1,0,48,112,112,240,241,176, + 51,0,54,0,60,0,60,0,62,0,55,0,51,128,49,192, + 48,224,49,240,12,19,38,14,1,0,112,0,248,0,136,0, + 8,0,8,0,12,0,12,0,12,0,28,0,30,0,26,0, + 50,0,50,0,51,0,97,0,97,0,97,144,193,240,192,224, + 13,18,36,14,1,251,96,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,200,63,248,111,48, + 96,0,96,0,96,0,96,0,192,0,11,13,26,13,1,0, + 192,224,192,224,192,96,96,64,96,192,96,128,49,128,49,0, + 51,0,26,0,26,0,14,0,12,0,11,13,26,13,1,0, + 31,0,113,192,96,192,224,224,192,96,192,96,192,96,192,96, + 192,96,224,224,96,192,113,192,31,0,13,13,26,14,0,0, + 127,248,255,248,152,192,24,192,24,192,24,192,24,192,24,192, + 24,192,24,192,24,200,56,248,48,240,10,17,34,12,1,0, + 30,0,51,0,97,128,97,128,192,192,192,192,192,192,192,192, + 255,192,192,192,192,192,192,192,192,192,97,128,97,128,51,0, + 30,0,10,18,36,12,1,251,62,0,99,128,193,128,193,192, + 192,192,192,192,192,192,192,192,192,192,193,192,193,128,227,128, + 222,0,192,0,192,0,192,0,192,0,192,0,14,13,26,15, + 1,0,31,252,113,252,96,192,224,224,192,96,192,96,192,96, + 192,96,192,96,224,224,96,192,113,192,31,0,10,13,26,11, + 0,0,63,192,127,192,204,0,140,0,12,0,12,0,12,0, + 12,0,12,0,12,0,12,128,15,128,7,0,13,13,26,14, + 0,0,48,224,120,48,216,24,152,24,24,24,24,24,24,24, + 24,24,24,24,24,48,12,48,14,224,7,192,16,14,28,18, + 1,0,127,255,255,255,152,24,48,12,49,140,97,134,97,134, + 97,134,97,134,97,134,97,134,49,140,59,220,30,120,14,13, + 26,16,1,0,24,96,48,48,96,24,99,24,195,12,195,12, + 195,12,195,12,195,12,195,12,99,24,119,184,60,240,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,48,0,32,0, + 55,128,31,128,48,0,96,0,192,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,16,18,36,18,1,251,193,131,113,142,49,140, + 57,156,57,156,57,156,57,156,57,156,57,156,25,152,25,152, + 13,176,7,224,1,128,1,128,1,128,1,128,1,128,10,24, + 48,12,1,251,48,0,99,128,103,128,63,0,24,0,48,0, + 32,0,96,0,64,0,192,0,128,0,128,0,128,0,128,0, + 192,0,240,0,124,0,63,128,15,192,0,192,0,64,0,192, + 15,128,15,0,8,22,22,10,1,251,7,12,24,24,24,24, + 24,16,48,32,192,32,48,16,24,24,24,24,24,24,12,7, + 2,22,22,4,1,251,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,8,22,22,10, + 1,251,224,48,24,24,24,24,24,8,12,4,3,4,12,8, + 24,24,24,24,24,24,48,224,11,4,8,13,1,5,56,32, + 124,96,199,192,131,128,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=34 x=15 y=26 dx=34 dy= 0 ascent=27 len=108 + Font Bounding box w=40 h=34 x=-5 y=-7 + Calculated Min Values x=-5 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb24[10727] U8G_SECTION(".progmem.u8g_font_symb24") = { + 0,40,34,251,249,23,5,133,13,247,32,255,249,27,249,23, + 249,0,0,0,8,0,1,4,23,23,11,4,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,0,0,0, + 96,240,240,96,20,24,72,23,1,0,192,0,48,192,0,48, + 192,0,96,96,0,96,96,0,96,48,0,192,48,0,192,63, + 255,192,31,255,128,24,1,128,12,3,0,12,3,0,12,3, + 0,6,6,0,6,6,0,3,12,0,3,12,0,3,12,0, + 1,152,0,1,152,0,0,240,0,0,240,0,0,240,0,0, + 96,0,14,23,46,16,1,0,6,48,6,48,6,48,6,48, + 12,96,12,96,12,96,127,252,127,252,12,96,12,96,12,96, + 24,192,24,192,24,192,255,248,255,248,24,192,24,192,49,128, + 49,128,49,128,49,128,15,24,48,18,0,0,255,254,255,254, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,63,254,63,254,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,255,254,255,254,23,23,69,27, + 2,255,7,192,96,30,225,192,60,63,192,56,33,128,112,33, + 128,112,35,0,240,98,0,224,70,0,224,204,0,224,204,0, + 97,152,0,119,16,124,62,48,238,0,97,198,0,99,130,0, + 199,2,0,135,2,1,142,6,3,14,4,3,14,12,6,14, + 24,14,7,48,12,3,224,23,22,66,25,1,0,0,248,0, + 3,140,0,3,6,0,7,6,0,7,6,0,7,6,0,7, + 12,0,7,152,0,3,241,252,3,192,112,7,192,96,29,224, + 96,56,240,192,112,240,128,96,121,128,224,63,0,224,30,0, + 224,31,0,240,31,130,248,55,238,127,227,252,31,128,248,12, + 17,34,14,1,0,126,0,127,128,7,192,1,224,0,224,0, + 240,0,112,0,112,63,240,63,240,0,112,0,112,0,224,1, + 224,3,192,255,0,124,0,8,29,29,11,2,250,3,7,6, + 12,24,48,48,112,112,96,96,224,224,224,224,224,224,224,96, + 96,112,112,48,48,24,12,6,7,3,8,29,29,11,1,250, + 192,224,96,48,24,12,12,14,14,6,6,7,7,7,7,7, + 7,7,6,6,14,14,12,12,24,48,96,224,192,11,14,28, + 16,2,4,4,0,14,0,14,0,196,96,228,224,127,192,31, + 0,31,0,127,192,228,224,196,96,14,0,14,0,4,0,16, + 18,36,18,1,0,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,4,9,9,8,2,251,96, + 240,240,240,16,48,96,224,192,17,2,6,18,0,8,255,255, + 128,255,255,128,4,4,4,8,2,0,96,240,240,96,7,22, + 22,9,1,0,2,2,6,6,4,12,12,8,24,24,16,48, + 48,32,32,96,64,64,192,192,128,128,14,23,46,16,1,0, + 15,192,28,224,56,112,48,48,112,56,112,56,96,24,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 96,24,112,56,112,56,48,48,56,112,28,224,15,192,9,23, + 46,16,4,0,4,0,28,0,252,0,220,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,62,0, + 255,128,14,23,46,16,1,0,15,128,31,192,63,224,97,240, + 192,240,192,112,128,112,0,112,0,112,0,96,0,96,0,192, + 0,192,1,128,3,0,3,0,6,0,12,0,24,0,48,12, + 112,24,127,248,255,240,13,23,46,16,1,0,15,128,63,224, + 113,224,64,224,192,96,128,96,0,96,0,192,0,192,1,128, + 7,192,15,224,1,240,0,112,0,120,0,56,0,56,0,56, + 0,48,0,48,96,96,121,192,127,128,15,23,46,16,0,0, + 0,48,0,112,0,112,0,240,1,240,1,240,3,112,6,112, + 6,112,12,112,24,112,24,112,48,112,32,112,96,112,192,112, + 255,254,255,254,0,112,0,112,0,112,0,112,0,112,13,23, + 46,16,1,0,15,248,15,240,31,240,16,0,48,0,32,0, + 126,0,127,128,127,192,15,224,3,224,0,240,0,112,0,112, + 0,112,0,48,0,48,0,48,0,112,0,96,224,192,251,128, + 254,0,14,23,46,16,1,0,0,56,1,224,3,128,7,0, + 14,0,28,0,56,0,56,0,112,0,119,192,255,240,240,120, + 224,56,224,60,224,28,224,28,224,28,224,28,112,28,112,56, + 56,56,28,112,15,192,13,23,46,16,1,0,127,248,127,248, + 127,248,192,24,128,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,192,1,128,1,128,1,128,3,0, + 3,0,3,0,6,0,6,0,6,0,12,23,46,16,2,0, + 31,128,113,192,96,224,224,96,192,96,224,96,224,224,112,192, + 121,192,63,0,31,0,31,128,63,192,115,192,96,224,224,240, + 192,112,192,112,224,112,224,112,96,96,121,192,31,128,14,23, + 46,16,1,0,15,128,56,224,48,112,96,56,224,56,224,56, + 224,60,224,28,224,28,224,28,240,28,112,28,120,124,63,252, + 15,56,0,56,0,112,0,240,0,224,1,192,7,128,30,0, + 112,0,4,15,15,9,2,0,96,240,240,96,0,0,0,0, + 0,0,0,96,240,240,96,4,20,20,9,3,251,96,240,240, + 96,0,0,0,0,0,0,0,96,240,240,240,16,48,96,224, + 192,16,16,32,18,1,1,0,7,0,31,0,124,1,240,7, + 128,30,0,120,0,224,0,224,0,120,0,30,0,7,128,1, + 240,0,124,0,31,0,7,17,8,24,18,0,5,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,16,16,32,18,1,1,224,0,248,0,62, + 0,15,128,1,224,0,120,0,30,0,7,0,7,0,30,0, + 120,1,224,15,128,62,0,248,0,224,0,11,23,46,14,2, + 0,63,0,99,128,193,192,192,224,192,224,224,224,192,224,1, + 224,1,192,1,128,3,128,3,0,6,0,6,0,4,0,4, + 0,4,0,0,0,0,0,12,0,30,0,30,0,12,0,17, + 16,48,18,0,0,30,1,0,63,195,128,96,255,0,64,28, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,21,23,69,23,0,0,0,32,0,0,112, + 0,0,112,0,0,112,0,0,248,0,0,248,0,0,188,0, + 1,188,0,1,156,0,3,30,0,3,14,0,2,15,0,6, + 15,0,6,7,0,12,7,128,15,255,128,8,3,128,24,3, + 192,24,1,192,48,1,224,48,1,224,112,1,240,252,7,248, + 18,23,69,22,1,0,255,224,0,63,254,0,28,31,0,28, + 7,0,28,7,128,28,7,128,28,7,128,28,7,128,28,7, + 0,28,15,0,28,62,0,31,248,0,28,31,0,28,7,128, + 28,3,128,28,3,192,28,3,192,28,3,192,28,3,192,28, + 7,128,28,15,128,63,255,0,255,248,0,22,23,69,23,0, + 0,255,195,252,63,0,224,31,0,192,15,1,192,7,129,128, + 7,195,0,3,198,0,1,230,0,1,236,0,0,248,0,0, + 120,0,0,120,0,0,124,0,0,222,0,1,158,0,1,143, + 0,3,15,128,6,7,128,14,3,192,12,3,224,24,1,224, + 56,1,240,254,7,252,19,22,66,20,0,0,0,96,0,0, + 96,0,0,240,0,0,240,0,0,240,0,1,248,0,1,56, + 0,3,60,0,2,60,0,6,28,0,4,30,0,12,14,0, + 12,15,0,8,15,0,24,7,0,16,7,128,48,3,128,32, + 3,192,96,3,192,64,1,192,255,255,224,255,255,224,18,23, + 69,20,1,0,255,255,128,63,255,128,28,3,128,28,1,128, + 28,1,128,28,0,0,28,0,0,28,2,0,28,2,0,28, + 2,0,28,14,0,31,254,0,28,6,0,28,2,0,28,2, + 0,28,0,0,28,0,0,28,0,64,28,0,64,28,0,192, + 28,1,192,63,255,128,255,255,128,23,23,69,25,1,0,1, + 255,0,0,124,0,0,56,0,0,56,0,7,255,192,31,57, + 240,60,56,120,120,56,60,120,56,60,240,56,30,240,56,30, + 240,56,30,240,56,30,240,56,30,120,56,28,120,56,60,60, + 56,120,31,57,240,7,255,192,0,56,0,0,56,0,0,124, + 0,1,255,0,18,23,69,20,1,0,255,255,128,63,255,192, + 60,1,192,28,0,192,28,0,64,28,0,64,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,62,0,0,255,128,0,22, + 23,69,24,1,0,255,135,252,62,1,240,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 28,0,224,28,0,224,31,255,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,62,1,240,255,135,252,9,23,46,11,1,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,20,23, + 69,20,0,0,0,120,0,0,220,0,0,134,0,0,135,0, + 0,131,0,0,195,128,0,67,128,28,99,128,62,57,128,126, + 29,128,199,7,128,199,1,224,6,1,176,14,1,128,14,1, + 128,14,1,128,14,3,128,14,3,0,14,3,0,14,7,0, + 7,6,0,3,156,0,1,248,0,22,23,69,23,1,0,255, + 143,240,62,3,192,28,3,128,28,3,0,28,6,0,28,12, + 0,28,24,0,28,48,0,28,96,0,29,192,0,31,224,0, + 31,224,0,30,240,0,28,120,0,28,124,0,28,62,0,28, + 31,0,28,15,128,28,7,128,28,3,192,28,1,224,62,1, + 240,255,143,252,21,22,66,22,0,0,0,32,0,0,48,0, + 0,112,0,0,112,0,0,248,0,0,248,0,0,188,0,1, + 188,0,1,156,0,1,30,0,3,14,0,3,15,0,2,15, + 0,6,7,0,6,7,128,12,3,128,12,3,192,8,3,192, + 24,1,192,24,1,224,56,1,240,254,7,248,27,23,92,29, + 1,0,254,0,15,224,30,0,15,128,31,0,15,0,31,0, + 31,0,31,0,31,0,31,128,55,0,27,128,55,0,27,192, + 39,0,27,192,103,0,25,224,103,0,25,224,199,0,24,224, + 199,0,24,240,135,0,24,113,135,0,24,121,135,0,24,123, + 7,0,24,63,7,0,24,63,7,0,24,30,7,0,24,30, + 7,0,24,12,7,0,56,12,15,128,255,12,63,224,22,23, + 69,23,1,0,252,3,252,62,0,96,30,0,96,31,0,96, + 31,128,96,31,192,96,27,192,96,25,224,96,25,240,96,24, + 240,96,24,120,96,24,60,96,24,60,96,24,30,96,24,15, + 96,24,15,224,24,7,224,24,3,224,24,1,224,24,1,224, + 24,0,224,56,0,96,255,0,32,22,23,69,23,1,0,1, + 254,0,7,135,128,14,1,192,28,0,224,60,0,240,120,0, + 112,120,0,120,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,120, + 0,120,56,0,112,60,0,240,28,0,224,14,1,192,7,207, + 128,1,254,0,23,23,69,25,1,0,255,255,254,63,255,248, + 28,0,112,28,0,112,28,0,112,28,0,112,28,0,112,28, + 0,112,28,0,112,28,0,112,28,0,112,28,0,112,28,0, + 112,28,0,112,28,0,112,28,0,112,28,0,112,28,0,112, + 28,0,112,28,0,112,28,0,112,62,0,248,255,131,254,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,60,0,240,56,0,112,120,0,120,112,0,56,112,0,56, + 242,1,60,243,3,60,243,255,60,243,255,60,243,3,60,242, + 1,60,112,0,56,112,0,56,120,0,120,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,240,0,63,254,0,28,15,0,28,7,128,28,7,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,7,128,28,7, + 0,30,62,0,31,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,18,23,69,19,1,0,255,255,0,255,255, + 0,120,3,0,60,1,0,62,1,128,30,0,0,15,0,0, + 7,128,0,7,192,0,3,192,0,1,224,0,0,192,0,1, + 192,0,1,128,0,3,0,0,6,0,0,12,0,64,28,0, + 192,24,0,128,48,1,128,127,255,128,255,255,128,255,255,128, + 19,23,69,20,1,0,255,255,224,248,227,224,192,224,224,192, + 224,96,128,224,32,128,224,32,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,1,240,0,7,252,0,23,23,69,23,0, + 0,255,193,254,62,0,112,31,0,96,15,0,224,15,128,192, + 7,129,128,3,193,128,3,227,0,1,227,0,0,246,0,0, + 252,0,0,124,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,124,0,1,255,0,13,24,48,14,1,249,3,224,15,240, + 31,240,48,0,96,0,64,0,192,0,192,0,128,0,128,0, + 128,0,192,0,192,0,240,0,127,240,63,240,31,248,0,24, + 0,8,0,8,0,24,7,240,7,240,7,192,23,23,69,25, + 1,0,0,254,0,3,131,128,14,0,224,30,0,240,28,0, + 112,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 120,0,60,120,0,60,120,0,60,56,0,56,60,0,120,28, + 0,112,14,0,224,7,1,192,129,131,2,192,130,6,255,199, + 254,255,199,254,255,199,254,19,23,69,21,1,0,127,255,192, + 127,255,192,127,255,192,96,0,192,64,0,64,0,0,0,0, + 0,0,0,0,0,8,2,0,12,6,0,15,254,0,15,254, + 0,15,254,0,8,2,0,8,2,0,0,0,0,0,0,0, + 192,0,96,192,0,96,64,0,64,127,255,192,127,255,192,127, + 255,192,25,23,92,26,0,0,224,255,131,128,112,62,7,0, + 56,28,14,0,56,28,14,0,60,28,30,0,60,28,30,0, + 60,28,30,0,60,28,30,0,60,28,30,0,28,28,28,0, + 30,28,60,0,15,156,248,0,3,255,224,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,62,0,0, + 0,255,128,0,19,23,69,20,1,0,127,255,192,120,3,192, + 96,7,128,96,15,0,64,15,0,64,30,0,0,62,0,0, + 60,0,0,120,0,0,248,0,0,240,0,1,224,0,1,224, + 0,3,192,0,7,192,0,7,128,0,15,0,0,31,0,32, + 30,0,32,62,0,96,60,0,224,120,3,192,255,255,192,7, + 28,28,11,3,251,254,224,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 254,17,16,48,28,5,0,1,224,0,1,224,0,1,224,0, + 1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,240,7,128,240,7, + 128,240,7,128,240,7,128,7,28,28,11,1,251,254,14,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,14,254,20,23,69,21,1,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,255,255, + 240,255,255,240,16,2,4,16,0,249,255,255,255,255,20,1, + 3,17,15,26,255,255,240,19,17,51,20,1,0,15,193,128, + 28,225,128,56,51,128,112,19,128,112,23,0,240,31,0,224, + 15,0,224,14,0,224,14,0,224,14,0,224,28,0,240,30, + 0,240,30,32,112,58,32,120,115,224,60,225,192,15,193,192, + 14,32,64,18,2,249,15,128,25,224,48,224,112,112,96,112, + 96,112,96,112,96,112,96,112,96,96,103,192,103,224,96,112, + 96,56,96,56,96,60,96,28,96,28,96,28,96,28,96,28, + 96,56,120,120,111,240,99,192,96,0,96,0,96,0,96,0, + 224,0,224,0,224,0,17,25,75,18,0,249,24,0,0,60, + 14,0,126,14,0,70,30,0,194,28,0,195,60,0,3,56, + 0,1,112,0,1,112,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,128,0,7,192,0,7,192,0,15,64,0,14, + 64,0,30,96,0,28,97,128,60,97,128,56,51,0,120,63, + 0,112,62,0,112,30,0,14,25,50,16,1,0,15,128,31, + 224,48,240,32,120,48,48,56,0,28,0,14,0,7,128,3, + 192,7,240,28,240,56,120,112,56,240,60,224,28,224,28,224, + 28,224,28,240,28,240,56,112,56,120,112,31,224,7,128,12, + 18,36,14,1,255,31,128,57,224,112,224,224,224,224,64,224, + 0,112,0,120,0,31,128,120,0,240,0,224,0,224,0,224, + 16,240,48,120,48,63,224,15,128,15,30,60,17,1,249,1, + 0,1,0,1,0,1,0,1,0,1,0,15,192,29,112,57, + 56,113,28,113,28,225,30,225,14,225,14,225,14,225,14,225, + 14,241,14,113,12,113,28,57,24,29,112,7,224,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,15,24,48,13,254, + 249,56,14,124,14,124,14,198,28,134,28,130,28,3,56,3, + 56,1,48,1,48,1,96,1,224,1,192,0,192,0,192,1, + 128,1,192,1,192,3,192,3,192,3,192,3,192,3,128,1, + 128,17,24,72,20,0,249,24,56,0,124,254,0,223,222,0, + 207,15,0,143,7,0,14,7,0,14,7,0,14,7,0,14, + 7,0,14,7,0,14,7,0,14,7,0,14,7,0,14,7, + 0,14,7,0,14,7,0,14,7,0,0,7,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,3,0,0,3,128,10, + 17,34,11,0,0,4,0,124,0,252,0,60,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 64,28,192,15,192,15,0,18,24,72,20,1,249,6,60,0, + 30,126,0,56,255,0,112,199,128,112,195,128,240,195,192,224, + 193,192,224,193,192,224,193,192,224,193,192,240,193,192,240,193, + 128,112,195,128,120,195,0,56,199,0,30,220,0,7,248,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,17,17,51,18,1,0,8,7,0,248,31, + 128,248,63,128,56,99,0,24,192,0,25,128,0,27,0,0, + 31,128,0,31,128,0,27,192,0,25,224,0,24,240,0,24, + 240,0,24,120,0,24,60,0,24,62,0,24,127,128,17,25, + 75,18,1,0,56,0,0,124,0,0,126,0,0,198,0,0, + 195,0,0,131,0,0,1,0,0,1,0,0,1,128,0,3, + 128,0,3,128,0,7,128,0,7,192,0,15,192,0,14,192, + 0,30,64,0,28,96,0,28,96,0,56,96,0,56,96,128, + 112,48,128,112,57,128,224,63,0,224,31,0,224,14,0,17, + 24,72,19,1,249,112,56,0,112,56,0,112,56,0,112,56, + 0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0, + 112,56,0,112,56,0,112,56,0,112,120,0,120,120,128,127, + 253,128,127,159,128,110,30,0,96,0,0,96,0,0,96,0, + 0,224,0,0,224,0,0,224,0,0,96,0,0,16,17,34, + 17,255,0,24,6,248,7,60,7,28,7,28,7,30,6,14, + 6,14,12,7,12,7,24,7,152,3,176,3,160,1,224,1, + 192,1,192,0,128,15,17,34,18,1,0,7,192,28,112,48, + 56,112,60,112,28,224,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,28,56,56,30,112,15,224,17,17,51, + 18,0,0,15,255,128,63,255,128,63,255,128,102,56,0,198, + 56,0,6,48,0,6,48,0,6,48,0,6,48,0,6,48, + 0,4,48,0,12,48,0,12,48,128,28,57,128,60,63,0, + 60,31,0,56,30,0,14,23,46,17,1,0,7,128,28,224, + 24,112,48,48,112,56,112,56,240,60,224,28,224,28,224,28, + 224,28,255,252,255,252,224,28,224,28,224,28,224,28,112,56, + 112,56,112,56,56,112,28,224,15,192,14,25,50,18,2,249, + 7,192,31,224,48,240,96,120,96,120,224,60,224,60,224,28, + 224,28,224,28,224,28,224,24,224,24,224,56,240,112,248,224, + 239,192,231,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,18,18,54,20,1,0,3,255,192,15,255,192,63,255, + 192,124,48,0,120,24,0,240,28,0,240,14,0,224,15,0, + 224,7,0,224,7,0,240,7,0,112,7,0,112,15,0,56, + 14,0,60,30,0,30,56,0,7,240,0,1,192,0,14,17, + 34,14,0,0,15,252,63,252,63,252,99,128,195,128,195,128, + 3,0,3,0,3,0,3,0,3,0,3,8,3,136,3,152, + 3,248,1,240,1,224,17,18,54,19,0,0,0,16,0,60, + 24,0,124,28,0,252,6,0,206,7,0,142,3,0,14,3, + 0,14,3,128,14,3,128,14,3,128,14,3,128,14,3,128, + 14,3,0,14,7,0,7,7,0,7,14,0,3,156,0,1, + 248,0,21,19,57,23,0,0,31,255,248,63,255,248,127,255, + 248,231,131,128,222,0,192,60,0,224,56,56,112,120,56,112, + 120,56,56,120,56,56,112,56,56,112,56,56,112,56,56,112, + 16,56,120,16,56,120,56,112,56,40,112,28,236,224,15,135, + 192,20,17,51,22,1,0,15,14,0,28,7,128,56,1,192, + 112,97,224,112,224,224,224,224,240,224,224,240,224,224,112,224, + 224,112,224,224,112,224,224,112,224,64,112,224,224,240,112,224, + 224,113,177,224,63,31,192,30,15,0,14,33,66,16,1,249, + 48,0,96,192,99,224,103,192,63,128,24,0,48,0,32,0, + 32,0,48,0,49,240,31,240,31,224,48,0,96,0,64,0, + 192,0,128,0,128,0,128,0,192,0,192,0,248,0,127,240, + 63,252,31,252,0,12,0,4,0,4,0,12,3,248,3,248, + 1,224,22,24,72,22,0,249,240,48,60,120,48,120,60,48, + 240,28,48,224,28,48,224,28,48,224,28,48,224,28,48,224, + 30,48,224,30,49,224,30,49,224,14,49,192,14,49,192,6, + 49,192,7,51,128,3,183,0,1,254,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 13,32,64,16,2,249,24,0,56,112,48,240,51,224,63,192, + 14,0,12,0,24,0,16,0,48,0,32,0,96,0,64,0, + 64,0,192,0,192,0,192,0,192,0,192,0,224,0,96,0, + 127,192,63,240,31,248,15,248,0,24,0,8,0,8,0,24, + 3,248,7,240,3,224,11,29,58,16,2,250,7,224,14,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,28,0,28,0,112,0,192,0,112,0,28,0,28,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,14,0,7,224,2,28,28,7,2,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,29,58,16,2,250,252,0, + 14,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,7,0,7,0,1,192,0,96,1,192,7,0, + 7,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,14,0,252,0,15,4,8,18,1,7,24,0, + 127,134,227,254,192,56,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,20,23,69,20,0,0,240,1, + 192,124,7,224,15,12,112,7,12,240,3,152,224,1,208,224, + 1,208,0,1,240,0,1,240,0,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,1,240,0, + 7,252,0,6,9,9,8,1,16,24,60,60,120,112,96,224, + 192,128,16,21,42,18,1,0,0,7,0,31,0,124,1,240, + 7,192,30,0,120,0,224,0,224,0,120,0,30,0,7,128, + 1,224,0,120,0,30,0,7,0,1,0,0,0,0,255,255, + 255,255,15,23,46,6,251,0,0,2,0,6,0,12,0,12, + 0,24,0,48,0,48,0,96,0,192,0,192,1,128,3,0, + 3,0,6,0,12,0,12,0,24,0,48,0,48,0,96,0, + 192,0,192,0,128,0,21,10,30,23,1,4,28,3,192,127, + 15,224,99,158,48,193,248,24,192,240,24,192,240,24,192,248, + 24,99,156,48,127,15,240,28,3,192,16,29,58,16,0,250, + 0,30,0,51,0,103,0,98,0,224,0,224,0,192,0,192, + 0,192,15,252,1,192,1,192,1,192,1,192,1,128,1,128, + 1,128,3,128,3,128,3,128,3,0,3,0,3,0,3,0, + 2,0,102,0,230,0,236,0,120,0,18,18,54,24,3,0, + 1,224,0,3,240,0,7,248,0,7,248,0,7,248,0,7, + 248,0,3,240,0,1,224,0,124,207,128,255,255,192,255,255, + 192,255,255,192,255,255,192,255,255,192,252,207,192,120,199,128, + 0,192,0,1,224,0,14,18,36,24,5,0,3,0,7,128, + 7,192,15,192,31,224,63,240,127,248,127,248,255,252,255,252, + 127,248,127,248,63,240,31,224,15,192,7,192,7,128,3,0, + 16,18,36,24,4,0,124,62,254,127,254,127,255,255,255,255, + 255,255,255,255,127,254,127,254,63,252,63,252,31,248,15,240, + 15,240,7,224,3,192,1,128,1,128,16,18,36,24,4,0, + 1,128,1,192,3,192,7,224,7,240,15,240,31,248,63,252, + 63,252,127,254,255,255,255,255,255,255,253,191,249,159,249,159, + 113,142,3,192,32,16,64,34,1,0,1,128,1,128,3,0, + 0,192,7,0,0,224,14,0,0,112,28,0,0,56,56,0, + 0,28,112,0,0,14,255,255,255,255,255,255,255,255,112,0, + 0,14,56,0,0,28,28,0,0,56,14,0,0,112,7,0, + 0,224,3,0,0,192,1,128,1,128,29,16,64,32,1,0, + 1,128,0,0,3,0,0,0,6,0,0,0,14,0,0,0, + 28,0,0,0,56,0,0,0,112,0,0,0,255,255,255,248, + 255,255,255,248,112,0,0,0,56,0,0,0,28,0,0,0, + 14,0,0,0,6,0,0,0,3,0,0,0,1,128,0,0, + 16,27,54,20,2,0,1,128,3,192,7,224,15,240,29,184, + 57,156,113,142,225,135,193,131,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,29,16,64,32, + 2,0,0,0,12,0,0,0,14,0,0,0,7,0,0,0, + 3,128,0,0,1,192,0,0,0,224,0,0,0,112,255,255, + 255,248,255,255,255,248,0,0,0,112,0,0,0,224,0,0, + 1,192,0,0,3,128,0,0,7,0,0,0,14,0,0,0, + 12,0,16,27,54,20,2,0,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,193,131,225,135, + 113,142,57,156,29,184,15,240,7,224,3,192,1,128,9,10, + 20,13,2,13,28,0,99,0,65,0,128,128,128,128,128,128, + 128,128,65,0,99,0,28,0,16,22,44,18,1,0,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,255,255, + 255,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,0,0,0,0,255,255,255,255,12,9,18,13,1,15, + 28,112,28,112,60,240,56,224,113,192,113,192,227,128,195,0, + 130,0,16,21,42,18,1,0,224,0,248,0,62,0,15,128, + 1,224,0,120,0,30,0,7,0,7,0,30,0,120,1,224, + 7,128,30,0,120,0,224,0,128,0,0,0,0,0,255,255, + 255,255,16,16,32,18,1,1,192,3,224,7,112,14,56,28, + 28,56,14,112,7,224,3,192,3,192,7,224,14,112,28,56, + 56,28,112,14,224,7,192,3,19,10,30,23,1,4,28,3, + 192,63,15,224,99,156,0,193,248,0,192,240,0,192,240,0, + 193,248,0,99,156,0,127,15,224,28,3,192,14,27,54,16, + 1,0,30,0,63,128,32,224,0,112,0,48,0,24,0,24, + 0,24,0,28,0,28,0,28,15,28,31,252,56,124,120,60, + 112,60,240,56,224,56,224,56,224,56,224,112,224,112,96,96, + 112,224,57,192,31,128,15,0,11,12,24,15,2,4,14,0, + 63,128,127,192,127,192,255,224,255,224,255,224,255,224,127,192, + 127,192,63,128,14,0,16,13,26,18,1,2,1,128,3,192, + 3,192,1,128,0,0,255,255,255,255,0,0,0,0,1,128, + 3,192,3,192,1,128,17,19,57,18,1,255,0,12,0,0, + 24,0,0,24,0,0,48,0,0,48,0,255,255,128,255,255, + 128,0,192,0,0,192,0,1,128,0,1,128,0,3,0,0, + 255,255,128,255,255,128,6,0,0,12,0,0,12,0,0,24, + 0,0,24,0,0,17,12,36,18,0,3,255,255,128,255,255, + 128,0,0,0,0,0,0,0,0,0,255,255,128,255,255,128, + 0,0,0,0,0,0,0,0,0,255,255,128,255,255,128,16, + 9,18,18,1,4,28,0,127,135,225,254,64,56,0,0,28, + 0,127,135,225,254,192,56,26,4,16,33,3,0,96,12,1, + 128,240,30,3,192,240,30,3,192,96,12,1,128,2,34,34, + 20,9,249,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,32,2,8,32,0,7,255,255,255,255,255, + 255,255,255,18,21,63,21,1,0,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,0,192,0,0,192,0,0,192,0,0,192, + 0,0,192,0,0,192,16,0,192,112,0,192,255,255,192,255, + 255,192,112,0,0,16,0,0,16,22,44,27,5,0,0,32, + 96,96,240,126,240,127,248,127,124,63,60,15,62,12,31,24, + 31,152,55,240,115,240,97,240,225,240,240,248,240,124,120,62, + 124,30,124,31,60,15,124,7,252,6,18,27,81,22,1,254, + 7,240,0,31,254,0,63,255,128,56,63,128,96,7,0,96, + 7,0,64,6,0,64,12,0,64,12,0,96,28,0,48,28, + 0,28,14,0,14,14,0,0,15,0,0,7,0,0,7,128, + 0,3,128,0,3,192,0,1,192,0,1,192,0,1,192,60, + 1,128,255,1,128,159,195,0,7,254,0,3,248,0,0,240, + 0,23,24,72,26,1,0,15,128,192,63,225,240,97,247,248, + 192,252,124,128,120,62,128,120,28,128,56,56,192,56,112,224, + 56,192,120,57,192,62,59,192,14,57,224,6,56,224,6,56, + 224,0,56,240,0,56,240,0,56,112,0,112,112,0,112,112, + 0,96,120,30,192,122,63,128,62,47,128,60,6,0,16,23, + 26,78,32,5,249,0,192,0,1,192,0,3,0,112,6,3, + 252,6,14,30,12,24,30,28,48,14,24,96,14,56,192,30, + 57,128,30,59,0,30,62,0,28,62,48,60,60,120,56,30, + 112,120,62,64,240,47,65,224,111,99,192,71,63,0,199,0, + 0,135,0,0,131,0,0,131,0,0,199,0,0,102,0,0, + 60,0,0,22,23,69,25,1,0,0,252,0,3,255,0,15, + 3,192,28,0,224,56,0,112,50,1,48,103,3,152,99,135, + 24,193,134,8,192,204,12,192,120,12,192,48,12,192,120,12, + 192,204,12,193,134,12,99,135,24,103,3,152,50,1,48,56, + 0,112,28,0,224,15,3,192,3,255,0,0,252,0,22,23, + 69,25,1,0,0,252,0,3,255,0,15,3,192,28,48,224, + 24,48,96,48,48,48,96,48,24,96,48,24,96,48,24,192, + 48,12,192,48,12,223,255,236,223,255,236,192,48,12,192,48, + 12,96,48,24,96,48,24,48,48,48,56,48,112,28,48,224, + 15,3,192,3,255,0,0,252,0,24,24,72,27,1,0,0, + 126,2,3,255,198,7,129,238,14,0,124,24,0,56,48,0, + 124,112,0,238,96,1,198,96,3,134,192,7,3,192,14,3, + 192,28,3,192,56,3,192,112,3,192,224,3,97,192,6,99, + 128,6,119,0,14,62,0,12,28,0,24,62,0,112,119,129, + 224,227,255,192,192,126,0,22,17,51,25,1,0,0,252,0, + 3,255,0,15,3,192,28,0,224,56,0,112,48,0,48,96, + 0,24,96,0,24,192,0,12,192,0,12,192,0,12,192,0, + 12,192,0,12,192,0,12,192,0,12,192,0,12,192,0,12, + 22,17,51,25,1,0,192,0,12,192,0,12,192,0,12,192, + 0,12,192,0,12,192,0,12,192,0,12,192,0,12,192,0, + 12,96,0,24,96,0,24,48,0,48,56,0,112,28,0,224, + 15,3,192,3,255,0,0,252,0,21,16,48,23,1,0,255, + 255,0,255,255,192,0,1,224,0,0,112,0,0,48,0,0, + 56,0,0,24,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,48,0,0,112,0,0,224,255,255,192,255,255,0,21, + 20,60,23,1,252,255,255,0,255,255,192,0,0,224,0,0, + 112,0,0,48,0,0,24,0,0,24,0,0,24,0,0,24, + 0,0,24,0,0,24,0,0,48,0,0,112,0,0,224,255, + 255,192,255,255,0,0,0,0,0,0,0,255,255,240,255,255, + 240,21,20,60,23,1,254,0,0,96,0,0,192,7,255,248, + 15,255,248,56,1,128,112,3,0,96,3,0,224,6,0,192, + 6,0,192,12,0,192,12,0,192,24,0,224,24,0,96,48, + 0,112,48,0,60,96,0,31,255,248,7,255,248,0,192,0, + 1,128,0,21,16,48,23,1,0,7,255,248,31,255,248,56, + 0,0,112,0,0,96,0,0,192,0,0,192,0,0,192,0, + 0,192,0,0,192,0,0,224,0,0,96,0,0,112,0,0, + 60,0,0,31,255,248,7,255,248,21,20,60,23,1,252,7, + 255,248,31,255,248,56,0,0,112,0,0,96,0,0,192,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 96,0,0,112,0,0,56,0,0,31,255,248,7,255,248,0, + 0,0,0,0,0,127,255,248,127,255,248,15,16,32,23,1, + 0,7,254,31,254,56,0,112,0,96,0,192,0,192,0,255, + 254,255,254,192,0,192,0,96,0,112,0,56,0,31,254,7, + 254,15,20,40,23,1,254,0,24,0,24,7,254,31,254,56, + 96,112,96,96,192,64,192,193,128,255,254,255,254,195,0,70, + 0,110,0,124,0,60,0,31,254,55,254,48,0,32,0,22, + 22,66,25,1,0,0,0,12,0,0,28,0,0,56,0,0, + 112,0,0,224,0,1,192,0,3,128,0,7,0,0,14,0, + 0,28,0,0,56,0,0,112,0,0,96,0,0,192,0,1, + 128,0,3,0,0,7,0,0,14,0,0,28,0,0,56,0, + 0,127,255,248,255,255,248,20,24,72,23,1,0,255,255,240, + 127,255,240,120,0,48,120,0,32,60,0,96,60,0,64,28, + 0,192,30,0,192,30,1,128,15,1,128,15,1,0,7,3, + 0,7,130,0,7,134,0,3,196,0,3,204,0,3,204,0, + 1,248,0,1,248,0,0,240,0,0,240,0,0,224,0,0, + 96,0,0,64,0,21,22,66,25,2,0,1,252,0,7,7, + 0,12,1,192,24,0,192,51,248,96,97,142,48,65,134,16, + 193,134,24,193,134,24,129,140,8,129,248,8,129,184,8,129, + 152,8,193,156,24,193,142,24,65,135,16,103,195,176,48,0, + 96,24,0,192,28,1,192,7,7,0,1,252,0,21,23,69, + 25,2,0,1,252,0,7,207,0,14,1,128,24,0,192,48, + 0,96,48,0,48,96,125,48,65,199,16,195,3,24,195,1, + 24,134,0,8,134,0,8,134,0,8,134,0,8,134,0,8, + 199,0,24,67,3,24,97,199,16,32,252,48,48,0,96,28, + 0,192,7,135,128,1,254,0,27,13,52,29,1,10,255,220, + 1,224,204,206,3,128,140,78,3,128,12,15,7,128,12,11, + 5,128,12,11,141,128,12,9,141,128,12,9,201,128,12,8, + 217,128,12,8,241,128,12,8,113,128,12,8,97,128,62,30, + 39,224,25,27,108,27,1,0,255,255,255,128,63,255,254,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,30,0,60,0, + 30,0,60,0,30,0,60,0,30,0,60,0,63,0,126,0, + 255,193,255,128,17,27,81,18,0,0,0,0,128,0,0,128, + 0,0,128,0,0,128,0,1,128,0,1,0,0,1,0,0, + 3,0,0,2,0,8,2,0,56,2,0,236,6,0,12,4, + 0,6,4,0,6,4,0,3,4,0,3,12,0,1,140,0, + 1,136,0,0,200,0,0,200,0,0,104,0,0,120,0,0, + 56,0,0,48,0,0,16,0,0,16,0,3,3,3,8,2, + 7,224,224,224,21,10,30,23,1,0,255,255,248,255,255,248, + 0,0,24,0,0,24,0,0,24,0,0,24,0,0,24,0, + 0,24,0,0,24,0,0,24,16,15,30,20,2,0,1,128, + 1,128,3,192,3,192,6,96,14,112,12,48,28,56,24,24, + 48,12,48,12,96,6,224,7,192,3,128,1,16,15,30,20, + 2,0,128,1,192,3,224,7,96,6,48,12,48,12,24,24, + 28,56,12,48,6,96,6,96,3,192,3,192,1,128,1,128, + 32,18,72,34,1,0,0,128,1,0,1,128,1,128,3,0, + 0,192,6,0,0,96,15,255,255,240,31,255,255,248,56,0, + 0,28,112,0,0,14,224,0,0,7,224,0,0,7,112,0, + 0,14,56,0,0,28,31,255,255,248,15,255,255,240,6,0, + 0,96,3,0,0,192,1,128,1,128,0,128,1,0,29,17, + 68,32,1,0,0,128,0,0,1,128,0,0,3,0,0,0, + 6,0,0,0,15,255,255,248,31,255,255,248,56,0,0,0, + 112,0,0,0,224,0,0,0,112,0,0,0,56,0,0,0, + 31,255,255,248,15,255,255,248,6,0,0,0,3,0,0,0, + 1,128,0,0,0,128,0,0,17,27,81,20,1,0,0,128, + 0,1,192,0,3,224,0,7,112,0,14,56,0,28,28,0, + 60,30,0,124,31,0,236,27,128,12,24,0,12,24,0,12, + 24,0,12,24,0,12,24,0,12,24,0,12,24,0,12,24, + 0,12,24,0,12,24,0,12,24,0,12,24,0,12,24,0, + 12,24,0,12,24,0,12,24,0,12,24,0,12,24,0,29, + 17,68,32,2,0,0,0,8,0,0,0,12,0,0,0,6, + 0,0,0,3,0,255,255,255,128,255,255,255,192,0,0,0, + 224,0,0,0,112,0,0,0,56,0,0,0,112,0,0,0, + 224,255,255,255,192,255,255,255,128,0,0,3,0,0,0,6, + 0,0,0,12,0,0,0,8,0,17,27,81,20,1,0,12, + 24,0,12,24,0,12,24,0,12,24,0,12,24,0,12,24, + 0,12,24,0,12,24,0,12,24,0,12,24,0,12,24,0, + 12,24,0,12,24,0,12,24,0,12,24,0,12,24,0,12, + 24,0,12,24,0,236,27,128,124,31,0,60,30,0,28,28, + 0,14,56,0,7,112,0,3,224,0,1,192,0,0,128,0, + 14,25,50,16,1,0,3,0,7,128,7,128,12,192,12,192, + 24,96,24,96,48,48,48,48,96,24,96,24,192,12,192,12, + 224,28,96,24,96,24,48,48,48,48,24,96,24,96,12,192, + 12,192,7,128,7,128,3,0,9,30,60,11,1,250,1,128, + 3,0,3,0,6,0,6,0,14,0,12,0,28,0,24,0, + 56,0,48,0,48,0,96,0,96,0,192,0,192,0,96,0, + 96,0,48,0,48,0,56,0,24,0,28,0,12,0,14,0, + 6,0,6,0,3,0,3,0,1,128,21,22,66,26,2,0, + 1,252,0,7,15,0,12,1,128,24,0,192,48,0,96,99, + 254,48,67,6,16,195,3,24,195,3,24,195,3,24,131,6, + 8,131,252,8,131,6,8,195,3,24,195,3,24,67,3,16, + 99,3,48,32,0,32,48,0,96,28,1,192,7,15,0,3, + 252,0,21,23,69,26,2,0,1,252,0,7,223,0,14,3, + 128,24,0,192,48,0,96,32,0,32,96,252,48,65,206,16, + 195,6,24,195,3,24,194,0,8,134,0,8,134,0,8,134, + 0,8,134,3,24,195,3,24,67,6,24,97,206,48,32,248, + 48,48,0,96,28,0,192,15,135,128,3,254,0,22,13,39, + 25,1,10,255,56,28,24,56,28,24,56,28,24,60,60,24, + 60,60,24,52,44,24,54,108,24,54,108,24,50,76,24,51, + 204,24,51,204,24,49,140,24,49,140,21,28,84,23,1,255, + 255,255,224,120,3,224,124,0,96,60,0,96,30,0,32,15, + 0,0,15,128,0,7,128,0,3,192,0,3,224,0,1,240, + 0,0,240,0,0,120,0,0,120,0,0,56,0,0,48,0, + 0,96,0,0,192,0,1,128,0,3,128,0,3,0,0,6, + 0,8,12,0,24,24,0,24,48,0,48,127,255,240,127,255, + 240,255,255,240,13,34,68,13,1,249,0,24,0,120,0,224, + 1,192,3,128,3,0,6,0,12,0,12,0,24,0,24,0, + 56,0,48,0,48,0,48,0,96,0,96,0,96,0,96,0, + 96,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,2,34, + 34,13,1,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,13,34,68,13,1,249,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,0,96,0,96,0, + 96,0,48,0,48,0,48,0,56,0,24,0,24,0,12,0, + 12,0,6,0,3,0,3,128,1,192,0,224,0,120,0,24, + 11,34,68,13,0,249,255,224,255,224,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,2,34,34,13,0,249, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,11,34,68,13,0,249,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,255,224,255,224,8,34,34,16, + 6,249,7,31,56,112,96,96,224,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,9,34,68,16,255,249,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 3,0,3,0,6,0,12,0,56,0,224,0,120,0,12,0, + 6,0,3,0,3,0,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,8,34, + 34,16,6,249,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 96,96,112,56,31,7,2,34,34,16,6,249,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,255,9, + 30,60,11,1,250,192,0,96,0,96,0,48,0,48,0,56, + 0,24,0,28,0,12,0,14,0,6,0,6,0,3,0,3, + 0,1,128,1,128,3,0,3,0,6,0,6,0,14,0,12, + 0,28,0,24,0,56,0,48,0,48,0,96,0,96,0,192, + 0,9,33,66,9,0,250,3,0,7,128,7,128,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,12,0,12,0,12,0,12,0,12,0,12,0,12, + 0,12,0,248,0,248,0,112,0,12,34,68,23,10,249,1, + 224,3,240,6,112,12,240,8,96,24,0,24,0,48,0,48, + 0,48,0,112,0,96,0,96,0,96,0,96,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,224,0,224,0,224,0,224,0,224,0,224,0,224, + 0,224,0,3,34,34,22,10,249,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,12,34,68,22,1, + 249,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,0,112,0,96,0,96,0,96,0,96,0, + 224,0,192,0,192,0,192,1,128,1,128,97,0,243,0,230, + 0,252,0,120,0,13,34,68,13,0,249,192,0,240,0,56, + 0,24,0,12,0,6,0,3,0,1,0,1,128,0,192,0, + 192,0,192,0,96,0,96,0,96,0,48,0,48,0,48,0, + 48,0,48,0,16,0,16,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,2, + 34,34,13,11,249,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,13,34,68,13,0,249,0,24,0, + 24,0,24,0,24,0,24,0,24,0,24,0,24,0,24,0, + 24,0,24,0,24,0,16,0,16,0,48,0,48,0,48,0, + 48,0,48,0,96,0,96,0,96,0,192,0,192,0,192,1, + 128,1,0,3,0,6,0,12,0,28,0,56,0,240,0,192, + 0,11,34,68,13,1,249,255,224,255,224,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,2,34,34,13,10, + 249,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,11,34,68,13,1,249,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,0,96,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,255,224,255,224,8,34,34, + 16,0,249,224,120,28,14,6,6,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,9,34,68,16,6,249,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,192, + 0,96,0,96,0,48,0,24,0,14,0,3,128,14,0,24, + 0,48,0,96,0,96,0,192,0,192,0,192,0,192,0,192, + 0,192,0,192,0,192,0,192,0,192,0,192,0,192,0,8, + 33,33,16,0,250,3,3,3,3,3,3,3,3,3,3,3, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, + 6,6,14,28,120,224,255}; +/* + Fontname: -Adobe-Symbol-Medium-R-Normal--34-240-100-100-P-191-Adobe-FontSpecific + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=27 h=33 x=15 y=26 dx=29 dy= 0 ascent=27 len=92 + Font Bounding box w=40 h=34 x=-5 y=-7 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =27 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_symb24r[5335] U8G_SECTION(".progmem.u8g_font_symb24r") = { + 0,40,34,251,249,23,5,133,13,247,32,127,249,27,249,23, + 249,0,0,0,8,0,1,4,23,23,11,4,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,0,0,0, + 96,240,240,96,20,24,72,23,1,0,192,0,48,192,0,48, + 192,0,96,96,0,96,96,0,96,48,0,192,48,0,192,63, + 255,192,31,255,128,24,1,128,12,3,0,12,3,0,12,3, + 0,6,6,0,6,6,0,3,12,0,3,12,0,3,12,0, + 1,152,0,1,152,0,0,240,0,0,240,0,0,240,0,0, + 96,0,14,23,46,16,1,0,6,48,6,48,6,48,6,48, + 12,96,12,96,12,96,127,252,127,252,12,96,12,96,12,96, + 24,192,24,192,24,192,255,248,255,248,24,192,24,192,49,128, + 49,128,49,128,49,128,15,24,48,18,0,0,255,254,255,254, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,6, + 0,6,63,254,63,254,0,6,0,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,255,254,255,254,23,23,69,27, + 2,255,7,192,96,30,225,192,60,63,192,56,33,128,112,33, + 128,112,35,0,240,98,0,224,70,0,224,204,0,224,204,0, + 97,152,0,119,16,124,62,48,238,0,97,198,0,99,130,0, + 199,2,0,135,2,1,142,6,3,14,4,3,14,12,6,14, + 24,14,7,48,12,3,224,23,22,66,25,1,0,0,248,0, + 3,140,0,3,6,0,7,6,0,7,6,0,7,6,0,7, + 12,0,7,152,0,3,241,252,3,192,112,7,192,96,29,224, + 96,56,240,192,112,240,128,96,121,128,224,63,0,224,30,0, + 224,31,0,240,31,130,248,55,238,127,227,252,31,128,248,12, + 17,34,14,1,0,126,0,127,128,7,192,1,224,0,224,0, + 240,0,112,0,112,63,240,63,240,0,112,0,112,0,224,1, + 224,3,192,255,0,124,0,8,29,29,11,2,250,3,7,6, + 12,24,48,48,112,112,96,96,224,224,224,224,224,224,224,96, + 96,112,112,48,48,24,12,6,7,3,8,29,29,11,1,250, + 192,224,96,48,24,12,12,14,14,6,6,7,7,7,7,7, + 7,7,6,6,14,14,12,12,24,48,96,224,192,11,14,28, + 16,2,4,4,0,14,0,14,0,196,96,228,224,127,192,31, + 0,31,0,127,192,228,224,196,96,14,0,14,0,4,0,16, + 18,36,18,1,0,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,1,128,4,9,9,8,2,251,96, + 240,240,240,16,48,96,224,192,17,2,6,18,0,8,255,255, + 128,255,255,128,4,4,4,8,2,0,96,240,240,96,7,22, + 22,9,1,0,2,2,6,6,4,12,12,8,24,24,16,48, + 48,32,32,96,64,64,192,192,128,128,14,23,46,16,1,0, + 15,192,28,224,56,112,48,48,112,56,112,56,96,24,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 96,24,112,56,112,56,48,48,56,112,28,224,15,192,9,23, + 46,16,4,0,4,0,28,0,252,0,220,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,62,0, + 255,128,14,23,46,16,1,0,15,128,31,192,63,224,97,240, + 192,240,192,112,128,112,0,112,0,112,0,96,0,96,0,192, + 0,192,1,128,3,0,3,0,6,0,12,0,24,0,48,12, + 112,24,127,248,255,240,13,23,46,16,1,0,15,128,63,224, + 113,224,64,224,192,96,128,96,0,96,0,192,0,192,1,128, + 7,192,15,224,1,240,0,112,0,120,0,56,0,56,0,56, + 0,48,0,48,96,96,121,192,127,128,15,23,46,16,0,0, + 0,48,0,112,0,112,0,240,1,240,1,240,3,112,6,112, + 6,112,12,112,24,112,24,112,48,112,32,112,96,112,192,112, + 255,254,255,254,0,112,0,112,0,112,0,112,0,112,13,23, + 46,16,1,0,15,248,15,240,31,240,16,0,48,0,32,0, + 126,0,127,128,127,192,15,224,3,224,0,240,0,112,0,112, + 0,112,0,48,0,48,0,48,0,112,0,96,224,192,251,128, + 254,0,14,23,46,16,1,0,0,56,1,224,3,128,7,0, + 14,0,28,0,56,0,56,0,112,0,119,192,255,240,240,120, + 224,56,224,60,224,28,224,28,224,28,224,28,112,28,112,56, + 56,56,28,112,15,192,13,23,46,16,1,0,127,248,127,248, + 127,248,192,24,128,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,192,1,192,1,128,1,128,1,128,3,0, + 3,0,3,0,6,0,6,0,6,0,12,23,46,16,2,0, + 31,128,113,192,96,224,224,96,192,96,224,96,224,224,112,192, + 121,192,63,0,31,0,31,128,63,192,115,192,96,224,224,240, + 192,112,192,112,224,112,224,112,96,96,121,192,31,128,14,23, + 46,16,1,0,15,128,56,224,48,112,96,56,224,56,224,56, + 224,60,224,28,224,28,224,28,240,28,112,28,120,124,63,252, + 15,56,0,56,0,112,0,240,0,224,1,192,7,128,30,0, + 112,0,4,15,15,9,2,0,96,240,240,96,0,0,0,0, + 0,0,0,96,240,240,96,4,20,20,9,3,251,96,240,240, + 96,0,0,0,0,0,0,0,96,240,240,240,16,48,96,224, + 192,16,16,32,18,1,1,0,7,0,31,0,124,1,240,7, + 128,30,0,120,0,224,0,224,0,120,0,30,0,7,128,1, + 240,0,124,0,31,0,7,17,8,24,18,0,5,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,16,16,32,18,1,1,224,0,248,0,62, + 0,15,128,1,224,0,120,0,30,0,7,0,7,0,30,0, + 120,1,224,15,128,62,0,248,0,224,0,11,23,46,14,2, + 0,63,0,99,128,193,192,192,224,192,224,224,224,192,224,1, + 224,1,192,1,128,3,128,3,0,6,0,6,0,4,0,4, + 0,4,0,0,0,0,0,12,0,30,0,30,0,12,0,17, + 16,48,18,0,0,30,1,0,63,195,128,96,255,0,64,28, + 0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,128, + 255,255,128,0,0,0,0,0,0,0,0,0,0,0,0,255, + 255,128,255,255,128,21,23,69,23,0,0,0,32,0,0,112, + 0,0,112,0,0,112,0,0,248,0,0,248,0,0,188,0, + 1,188,0,1,156,0,3,30,0,3,14,0,2,15,0,6, + 15,0,6,7,0,12,7,128,15,255,128,8,3,128,24,3, + 192,24,1,192,48,1,224,48,1,224,112,1,240,252,7,248, + 18,23,69,22,1,0,255,224,0,63,254,0,28,31,0,28, + 7,0,28,7,128,28,7,128,28,7,128,28,7,128,28,7, + 0,28,15,0,28,62,0,31,248,0,28,31,0,28,7,128, + 28,3,128,28,3,192,28,3,192,28,3,192,28,3,192,28, + 7,128,28,15,128,63,255,0,255,248,0,22,23,69,23,0, + 0,255,195,252,63,0,224,31,0,192,15,1,192,7,129,128, + 7,195,0,3,198,0,1,230,0,1,236,0,0,248,0,0, + 120,0,0,120,0,0,124,0,0,222,0,1,158,0,1,143, + 0,3,15,128,6,7,128,14,3,192,12,3,224,24,1,224, + 56,1,240,254,7,252,19,22,66,20,0,0,0,96,0,0, + 96,0,0,240,0,0,240,0,0,240,0,1,248,0,1,56, + 0,3,60,0,2,60,0,6,28,0,4,30,0,12,14,0, + 12,15,0,8,15,0,24,7,0,16,7,128,48,3,128,32, + 3,192,96,3,192,64,1,192,255,255,224,255,255,224,18,23, + 69,20,1,0,255,255,128,63,255,128,28,3,128,28,1,128, + 28,1,128,28,0,0,28,0,0,28,2,0,28,2,0,28, + 2,0,28,14,0,31,254,0,28,6,0,28,2,0,28,2, + 0,28,0,0,28,0,0,28,0,64,28,0,64,28,0,192, + 28,1,192,63,255,128,255,255,128,23,23,69,25,1,0,1, + 255,0,0,124,0,0,56,0,0,56,0,7,255,192,31,57, + 240,60,56,120,120,56,60,120,56,60,240,56,30,240,56,30, + 240,56,30,240,56,30,240,56,30,120,56,28,120,56,60,60, + 56,120,31,57,240,7,255,192,0,56,0,0,56,0,0,124, + 0,1,255,0,18,23,69,20,1,0,255,255,128,63,255,192, + 60,1,192,28,0,192,28,0,64,28,0,64,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,62,0,0,255,128,0,22, + 23,69,24,1,0,255,135,252,62,1,240,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 28,0,224,28,0,224,31,255,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,62,1,240,255,135,252,9,23,46,11,1,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,20,23, + 69,20,0,0,0,120,0,0,220,0,0,134,0,0,135,0, + 0,131,0,0,195,128,0,67,128,28,99,128,62,57,128,126, + 29,128,199,7,128,199,1,224,6,1,176,14,1,128,14,1, + 128,14,1,128,14,3,128,14,3,0,14,3,0,14,7,0, + 7,6,0,3,156,0,1,248,0,22,23,69,23,1,0,255, + 143,240,62,3,192,28,3,128,28,3,0,28,6,0,28,12, + 0,28,24,0,28,48,0,28,96,0,29,192,0,31,224,0, + 31,224,0,30,240,0,28,120,0,28,124,0,28,62,0,28, + 31,0,28,15,128,28,7,128,28,3,192,28,1,224,62,1, + 240,255,143,252,21,22,66,22,0,0,0,32,0,0,48,0, + 0,112,0,0,112,0,0,248,0,0,248,0,0,188,0,1, + 188,0,1,156,0,1,30,0,3,14,0,3,15,0,2,15, + 0,6,7,0,6,7,128,12,3,128,12,3,192,8,3,192, + 24,1,192,24,1,224,56,1,240,254,7,248,27,23,92,29, + 1,0,254,0,15,224,30,0,15,128,31,0,15,0,31,0, + 31,0,31,0,31,0,31,128,55,0,27,128,55,0,27,192, + 39,0,27,192,103,0,25,224,103,0,25,224,199,0,24,224, + 199,0,24,240,135,0,24,113,135,0,24,121,135,0,24,123, + 7,0,24,63,7,0,24,63,7,0,24,30,7,0,24,30, + 7,0,24,12,7,0,56,12,15,128,255,12,63,224,22,23, + 69,23,1,0,252,3,252,62,0,96,30,0,96,31,0,96, + 31,128,96,31,192,96,27,192,96,25,224,96,25,240,96,24, + 240,96,24,120,96,24,60,96,24,60,96,24,30,96,24,15, + 96,24,15,224,24,7,224,24,3,224,24,1,224,24,1,224, + 24,0,224,56,0,96,255,0,32,22,23,69,23,1,0,1, + 254,0,7,135,128,14,1,192,28,0,224,60,0,240,120,0, + 112,120,0,120,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,120, + 0,120,56,0,112,60,0,240,28,0,224,14,1,192,7,207, + 128,1,254,0,23,23,69,25,1,0,255,255,254,63,255,248, + 28,0,112,28,0,112,28,0,112,28,0,112,28,0,112,28, + 0,112,28,0,112,28,0,112,28,0,112,28,0,112,28,0, + 112,28,0,112,28,0,112,28,0,112,28,0,112,28,0,112, + 28,0,112,28,0,112,28,0,112,62,0,248,255,131,254,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,60,0,240,56,0,112,120,0,120,112,0,56,112,0,56, + 242,1,60,243,3,60,243,255,60,243,255,60,243,3,60,242, + 1,60,112,0,56,112,0,56,120,0,120,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,240,0,63,254,0,28,15,0,28,7,128,28,7,128,28, + 3,128,28,3,128,28,3,128,28,3,128,28,7,128,28,7, + 0,30,62,0,31,252,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,18,23,69,19,1,0,255,255,0,255,255, + 0,120,3,0,60,1,0,62,1,128,30,0,0,15,0,0, + 7,128,0,7,192,0,3,192,0,1,224,0,0,192,0,1, + 192,0,1,128,0,3,0,0,6,0,0,12,0,64,28,0, + 192,24,0,128,48,1,128,127,255,128,255,255,128,255,255,128, + 19,23,69,20,1,0,255,255,224,248,227,224,192,224,224,192, + 224,96,128,224,32,128,224,32,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,0,224,0,0,224,0,0,224,0,0, + 224,0,0,224,0,1,240,0,7,252,0,23,23,69,23,0, + 0,255,193,254,62,0,112,31,0,96,15,0,224,15,128,192, + 7,129,128,3,193,128,3,227,0,1,227,0,0,246,0,0, + 252,0,0,124,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,124,0,1,255,0,13,24,48,14,1,249,3,224,15,240, + 31,240,48,0,96,0,64,0,192,0,192,0,128,0,128,0, + 128,0,192,0,192,0,240,0,127,240,63,240,31,248,0,24, + 0,8,0,8,0,24,7,240,7,240,7,192,23,23,69,25, + 1,0,0,254,0,3,131,128,14,0,224,30,0,240,28,0, + 112,60,0,120,56,0,56,120,0,60,120,0,60,120,0,60, + 120,0,60,120,0,60,120,0,60,56,0,56,60,0,120,28, + 0,112,14,0,224,7,1,192,129,131,2,192,130,6,255,199, + 254,255,199,254,255,199,254,19,23,69,21,1,0,127,255,192, + 127,255,192,127,255,192,96,0,192,64,0,64,0,0,0,0, + 0,0,0,0,0,8,2,0,12,6,0,15,254,0,15,254, + 0,15,254,0,8,2,0,8,2,0,0,0,0,0,0,0, + 192,0,96,192,0,96,64,0,64,127,255,192,127,255,192,127, + 255,192,25,23,92,26,0,0,224,255,131,128,112,62,7,0, + 56,28,14,0,56,28,14,0,60,28,30,0,60,28,30,0, + 60,28,30,0,60,28,30,0,60,28,30,0,28,28,28,0, + 30,28,60,0,15,156,248,0,3,255,224,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,28,0,0, + 0,28,0,0,0,28,0,0,0,28,0,0,0,62,0,0, + 0,255,128,0,19,23,69,20,1,0,127,255,192,120,3,192, + 96,7,128,96,15,0,64,15,0,64,30,0,0,62,0,0, + 60,0,0,120,0,0,248,0,0,240,0,1,224,0,1,224, + 0,3,192,0,7,192,0,7,128,0,15,0,0,31,0,32, + 30,0,32,62,0,96,60,0,224,120,3,192,255,255,192,7, + 28,28,11,3,251,254,224,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,224, + 254,17,16,48,28,5,0,1,224,0,1,224,0,1,224,0, + 1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,240,7,128,240,7, + 128,240,7,128,240,7,128,7,28,28,11,1,251,254,14,6, + 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, + 6,6,6,6,6,6,6,14,254,20,23,69,21,1,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,0,96, + 0,0,96,0,0,96,0,0,96,0,0,96,0,0,96,0, + 0,96,0,0,96,0,0,96,0,0,96,0,0,96,0,0, + 96,0,0,96,0,0,96,0,0,96,0,0,96,0,255,255, + 240,255,255,240,16,2,4,16,0,249,255,255,255,255,20,1, + 3,17,15,26,255,255,240,19,17,51,20,1,0,15,193,128, + 28,225,128,56,51,128,112,19,128,112,23,0,240,31,0,224, + 15,0,224,14,0,224,14,0,224,14,0,224,28,0,240,30, + 0,240,30,32,112,58,32,120,115,224,60,225,192,15,193,192, + 14,32,64,18,2,249,15,128,25,224,48,224,112,112,96,112, + 96,112,96,112,96,112,96,112,96,96,103,192,103,224,96,112, + 96,56,96,56,96,60,96,28,96,28,96,28,96,28,96,28, + 96,56,120,120,111,240,99,192,96,0,96,0,96,0,96,0, + 224,0,224,0,224,0,17,25,75,18,0,249,24,0,0,60, + 14,0,126,14,0,70,30,0,194,28,0,195,60,0,3,56, + 0,1,112,0,1,112,0,1,224,0,1,224,0,1,192,0, + 3,192,0,3,128,0,7,192,0,7,192,0,15,64,0,14, + 64,0,30,96,0,28,97,128,60,97,128,56,51,0,120,63, + 0,112,62,0,112,30,0,14,25,50,16,1,0,15,128,31, + 224,48,240,32,120,48,48,56,0,28,0,14,0,7,128,3, + 192,7,240,28,240,56,120,112,56,240,60,224,28,224,28,224, + 28,224,28,240,28,240,56,112,56,120,112,31,224,7,128,12, + 18,36,14,1,255,31,128,57,224,112,224,224,224,224,64,224, + 0,112,0,120,0,31,128,120,0,240,0,224,0,224,0,224, + 16,240,48,120,48,63,224,15,128,15,30,60,17,1,249,1, + 0,1,0,1,0,1,0,1,0,1,0,15,192,29,112,57, + 56,113,28,113,28,225,30,225,14,225,14,225,14,225,14,225, + 14,241,14,113,12,113,28,57,24,29,112,7,224,1,0,1, + 0,1,0,1,0,1,0,1,0,1,0,15,24,48,13,254, + 249,56,14,124,14,124,14,198,28,134,28,130,28,3,56,3, + 56,1,48,1,48,1,96,1,224,1,192,0,192,0,192,1, + 128,1,192,1,192,3,192,3,192,3,192,3,192,3,128,1, + 128,17,24,72,20,0,249,24,56,0,124,254,0,223,222,0, + 207,15,0,143,7,0,14,7,0,14,7,0,14,7,0,14, + 7,0,14,7,0,14,7,0,14,7,0,14,7,0,14,7, + 0,14,7,0,14,7,0,14,7,0,0,7,0,0,7,0, + 0,7,0,0,7,0,0,7,0,0,3,0,0,3,128,10, + 17,34,11,0,0,4,0,124,0,252,0,60,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 64,28,192,15,192,15,0,18,24,72,20,1,249,6,60,0, + 30,126,0,56,255,0,112,199,128,112,195,128,240,195,192,224, + 193,192,224,193,192,224,193,192,224,193,192,240,193,192,240,193, + 128,112,195,128,120,195,0,56,199,0,30,220,0,7,248,0, + 0,192,0,0,192,0,0,192,0,0,192,0,0,192,0,0, + 192,0,0,192,0,17,17,51,18,1,0,8,7,0,248,31, + 128,248,63,128,56,99,0,24,192,0,25,128,0,27,0,0, + 31,128,0,31,128,0,27,192,0,25,224,0,24,240,0,24, + 240,0,24,120,0,24,60,0,24,62,0,24,127,128,17,25, + 75,18,1,0,56,0,0,124,0,0,126,0,0,198,0,0, + 195,0,0,131,0,0,1,0,0,1,0,0,1,128,0,3, + 128,0,3,128,0,7,128,0,7,192,0,15,192,0,14,192, + 0,30,64,0,28,96,0,28,96,0,56,96,0,56,96,128, + 112,48,128,112,57,128,224,63,0,224,31,0,224,14,0,17, + 24,72,19,1,249,112,56,0,112,56,0,112,56,0,112,56, + 0,112,56,0,112,56,0,112,56,0,112,56,0,112,56,0, + 112,56,0,112,56,0,112,56,0,112,120,0,120,120,128,127, + 253,128,127,159,128,110,30,0,96,0,0,96,0,0,96,0, + 0,224,0,0,224,0,0,224,0,0,96,0,0,16,17,34, + 17,255,0,24,6,248,7,60,7,28,7,28,7,30,6,14, + 6,14,12,7,12,7,24,7,152,3,176,3,160,1,224,1, + 192,1,192,0,128,15,17,34,18,1,0,7,192,28,112,48, + 56,112,60,112,28,224,30,224,14,224,14,224,14,224,14,224, + 14,240,14,112,28,120,28,56,56,30,112,15,224,17,17,51, + 18,0,0,15,255,128,63,255,128,63,255,128,102,56,0,198, + 56,0,6,48,0,6,48,0,6,48,0,6,48,0,6,48, + 0,4,48,0,12,48,0,12,48,128,28,57,128,60,63,0, + 60,31,0,56,30,0,14,23,46,17,1,0,7,128,28,224, + 24,112,48,48,112,56,112,56,240,60,224,28,224,28,224,28, + 224,28,255,252,255,252,224,28,224,28,224,28,224,28,112,56, + 112,56,112,56,56,112,28,224,15,192,14,25,50,18,2,249, + 7,192,31,224,48,240,96,120,96,120,224,60,224,60,224,28, + 224,28,224,28,224,28,224,24,224,24,224,56,240,112,248,224, + 239,192,231,0,224,0,224,0,224,0,224,0,224,0,224,0, + 224,0,18,18,54,20,1,0,3,255,192,15,255,192,63,255, + 192,124,48,0,120,24,0,240,28,0,240,14,0,224,15,0, + 224,7,0,224,7,0,240,7,0,112,7,0,112,15,0,56, + 14,0,60,30,0,30,56,0,7,240,0,1,192,0,14,17, + 34,14,0,0,15,252,63,252,63,252,99,128,195,128,195,128, + 3,0,3,0,3,0,3,0,3,0,3,8,3,136,3,152, + 3,248,1,240,1,224,17,18,54,19,0,0,0,16,0,60, + 24,0,124,28,0,252,6,0,206,7,0,142,3,0,14,3, + 0,14,3,128,14,3,128,14,3,128,14,3,128,14,3,128, + 14,3,0,14,7,0,7,7,0,7,14,0,3,156,0,1, + 248,0,21,19,57,23,0,0,31,255,248,63,255,248,127,255, + 248,231,131,128,222,0,192,60,0,224,56,56,112,120,56,112, + 120,56,56,120,56,56,112,56,56,112,56,56,112,56,56,112, + 16,56,120,16,56,120,56,112,56,40,112,28,236,224,15,135, + 192,20,17,51,22,1,0,15,14,0,28,7,128,56,1,192, + 112,97,224,112,224,224,224,224,240,224,224,240,224,224,112,224, + 224,112,224,224,112,224,224,112,224,64,112,224,224,240,112,224, + 224,113,177,224,63,31,192,30,15,0,14,33,66,16,1,249, + 48,0,96,192,99,224,103,192,63,128,24,0,48,0,32,0, + 32,0,48,0,49,240,31,240,31,224,48,0,96,0,64,0, + 192,0,128,0,128,0,128,0,192,0,192,0,248,0,127,240, + 63,252,31,252,0,12,0,4,0,4,0,12,3,248,3,248, + 1,224,22,24,72,22,0,249,240,48,60,120,48,120,60,48, + 240,28,48,224,28,48,224,28,48,224,28,48,224,28,48,224, + 30,48,224,30,49,224,30,49,224,14,49,192,14,49,192,6, + 49,192,7,51,128,3,183,0,1,254,0,0,48,0,0,48, + 0,0,48,0,0,48,0,0,48,0,0,48,0,0,48,0, + 13,32,64,16,2,249,24,0,56,112,48,240,51,224,63,192, + 14,0,12,0,24,0,16,0,48,0,32,0,96,0,64,0, + 64,0,192,0,192,0,192,0,192,0,192,0,224,0,96,0, + 127,192,63,240,31,248,15,248,0,24,0,8,0,8,0,24, + 3,248,7,240,3,224,11,29,58,16,2,250,7,224,14,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,28,0,28,0,112,0,192,0,112,0,28,0,28,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,14,0,7,224,2,28,28,7,2,250,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,11,29,58,16,2,250,252,0, + 14,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,7,0,7,0,1,192,0,96,1,192,7,0, + 7,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,14,0,252,0,15,4,8,18,1,7,24,0, + 127,134,227,254,192,56,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--11-80-100-100-P-57-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=11 x= 1 y= 6 dx=11 dy= 0 ascent=10 len=18 + Font Bounding box w=13 h=18 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-3 + X Font ascent = 7 descent=-3 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB08[2551] U8G_SECTION(".progmem.u8g_font_timB08") = { + 0,13,18,254,251,7,1,164,3,77,32,255,253,10,253,7, + 253,0,0,0,2,0,1,2,7,7,4,1,0,192,192,192, + 192,0,192,192,3,3,3,5,1,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,9,9,5,0,255, + 32,112,184,224,96,48,184,112,32,7,7,7,9,1,0,118, + 220,232,16,46,90,156,7,7,7,9,1,0,48,104,104,118, + 220,204,118,1,3,3,3,1,4,128,128,128,3,10,10,3, + 255,253,32,96,64,192,192,192,192,64,96,32,3,10,10,4, + 0,253,128,192,64,96,96,96,96,64,192,128,5,5,5,6, + 0,2,32,248,112,248,32,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,4,1,255,192,192,64,3,1,1,3,0, + 2,224,2,2,2,3,0,0,192,192,3,7,7,3,0,0, + 32,32,96,64,192,128,128,4,7,7,5,0,0,96,208,208, + 208,208,208,96,4,7,7,5,0,0,96,224,96,96,96,96, + 240,4,7,7,5,0,0,96,240,48,32,64,240,240,4,7, + 7,5,0,0,96,176,48,96,48,176,224,5,7,7,5,0, + 0,16,48,80,144,248,48,48,4,7,7,5,0,0,224,224, + 128,224,48,176,224,4,7,7,5,0,0,48,96,192,240,208, + 208,96,5,7,7,5,0,0,120,240,144,48,32,96,96,4, + 7,7,5,0,0,96,208,208,96,176,176,96,4,7,7,5, + 0,0,96,176,176,176,112,48,224,2,5,5,4,1,0,192, + 192,0,192,192,2,6,6,4,1,255,192,192,0,192,192,64, + 5,5,5,6,0,0,24,112,192,112,24,5,3,3,6,0, + 1,248,0,248,5,5,5,6,0,0,192,112,24,112,192,4, + 7,7,6,1,0,96,176,176,32,0,96,96,10,9,18,11, + 0,254,31,0,48,128,109,64,218,64,210,64,210,128,205,0, + 96,0,62,0,8,7,7,7,255,0,16,24,56,44,124,78, + 239,6,7,7,7,0,0,248,108,108,120,108,108,248,6,7, + 7,7,0,0,124,204,192,192,192,236,120,7,7,7,8,0, + 0,252,102,102,102,102,102,252,6,7,7,7,0,0,252,100, + 96,120,96,100,252,6,7,7,7,0,0,252,100,104,120,104, + 96,240,6,7,7,7,0,0,124,204,192,220,204,204,120,8, + 7,7,9,0,0,231,102,102,126,102,102,231,4,7,7,5, + 0,0,240,96,96,96,96,96,240,5,8,8,5,0,255,120, + 48,48,48,48,48,176,224,7,7,7,8,0,0,238,100,104, + 120,108,110,230,6,7,7,7,0,0,240,96,96,96,100,108, + 252,9,7,14,10,0,0,243,128,119,0,91,0,91,0,91, + 0,75,0,227,128,7,7,7,8,0,0,238,100,116,92,92, + 76,228,6,7,7,7,0,0,120,204,204,204,204,204,120,6, + 7,7,6,0,0,248,108,108,120,96,96,240,6,9,9,7, + 0,254,120,204,204,204,204,204,120,48,28,7,7,7,7,0, + 0,248,108,108,120,104,108,238,5,7,7,6,0,0,120,200, + 224,112,56,152,240,6,7,7,7,0,0,252,180,48,48,48, + 48,120,7,7,7,7,0,0,246,100,100,100,100,100,56,8, + 7,7,8,0,0,243,98,116,52,56,24,16,10,7,14,10, + 0,0,238,192,108,128,109,128,109,0,55,0,54,0,18,0, + 7,7,7,7,0,0,230,100,56,56,44,76,222,8,7,7, + 8,0,0,247,98,52,56,24,24,60,6,7,7,7,0,0, + 252,204,152,48,100,204,252,3,10,10,4,0,253,224,192,192, + 192,192,192,192,192,192,224,3,7,7,3,0,0,128,128,192, + 64,96,32,32,3,10,10,4,0,253,224,96,96,96,96,96, + 96,96,96,224,5,4,4,6,0,3,32,112,216,136,5,1, + 1,5,0,253,248,2,2,2,4,0,6,128,64,5,5,5, + 5,0,0,96,176,112,176,248,5,7,7,5,255,0,224,96, + 112,104,104,104,112,4,5,5,5,0,0,112,208,192,208,112, + 6,7,7,6,0,0,56,24,120,216,216,216,108,4,5,5, + 5,0,0,112,208,240,192,112,4,7,7,3,255,0,48,96, + 240,96,96,96,240,5,8,8,5,0,253,120,208,208,112,192, + 240,144,240,6,7,7,5,255,0,224,96,120,104,104,104,108, + 2,7,7,3,0,0,192,0,192,192,192,192,192,3,10,10, + 4,0,253,96,0,96,96,96,96,96,96,96,192,6,7,7, + 5,255,0,224,96,108,104,112,104,236,3,7,7,3,255,0, + 224,96,96,96,96,96,96,8,5,5,8,0,0,172,254,214, + 214,215,6,5,5,6,0,0,176,216,216,216,220,5,5,5, + 6,0,0,112,216,216,216,112,5,8,8,5,255,253,240,104, + 104,104,112,96,96,224,5,8,8,5,0,253,112,208,208,208, + 112,48,48,56,4,5,5,4,0,0,208,240,192,192,192,3, + 5,5,4,0,0,96,192,224,96,224,4,7,7,4,255,0, + 32,96,240,96,96,96,48,5,5,5,5,0,0,216,208,208, + 208,112,5,5,5,5,0,0,216,208,112,96,32,7,5,5, + 6,255,0,214,212,92,120,40,4,5,5,5,0,0,208,240, + 96,240,176,5,8,8,5,0,253,216,216,112,112,32,32,192, + 192,4,5,5,5,0,0,240,176,96,208,240,4,10,10,4, + 255,253,48,96,96,96,192,192,96,96,96,48,1,10,10,3, + 1,253,128,128,128,128,128,128,128,128,128,128,4,10,10,4, + 0,253,192,96,96,96,48,48,96,96,96,192,5,2,2,6, + 0,2,104,176,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,0,0,0,2,0,1,2,7,7,4,1, + 253,192,192,0,192,192,192,192,5,7,7,6,0,255,16,120, + 208,208,224,120,32,5,7,7,6,0,0,56,104,96,248,96, + 232,216,5,5,5,6,0,1,136,112,80,112,136,5,7,7, + 6,0,0,216,216,112,32,112,32,112,1,7,7,3,1,0, + 128,128,128,0,128,128,128,4,9,9,5,0,254,96,176,192, + 160,208,112,48,208,96,3,1,1,4,0,5,160,7,7,7, + 9,1,0,56,68,154,162,154,68,56,3,6,6,4,0,1, + 192,32,224,160,0,224,5,5,5,6,0,0,40,80,160,80, + 40,5,3,3,7,1,1,248,8,8,3,1,1,3,0,2, + 224,7,7,7,9,1,0,56,68,186,178,170,68,56,3,1, + 1,4,0,5,224,4,3,3,4,0,4,96,144,96,5,7, + 7,6,0,0,32,32,248,32,32,0,248,3,4,4,3,0, + 3,96,160,64,224,3,4,4,3,0,3,224,64,32,192,2, + 2,2,4,1,5,64,128,5,8,8,5,0,253,216,208,208, + 208,240,128,192,192,6,10,10,6,0,253,124,232,232,232,104, + 40,40,40,40,40,1,2,2,3,1,2,128,128,2,3,3, + 3,1,253,128,64,192,3,4,4,3,0,3,64,192,64,224, + 3,6,6,4,0,1,64,160,160,64,0,224,5,5,5,6, + 0,0,160,80,40,80,160,7,7,7,7,0,0,68,200,72, + 244,44,62,68,7,7,7,7,0,0,68,200,72,246,42,36, + 78,7,7,7,7,0,0,228,72,40,212,44,62,68,4,7, + 7,6,1,253,96,96,0,64,208,208,96,8,10,10,7,255, + 0,32,16,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,8,16,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,16,40,0,16,24,56,44,124,78,239,8,10,10,7,255, + 0,52,88,0,16,24,56,44,124,78,239,8,9,9,7,255, + 0,36,0,16,24,56,44,124,78,239,8,10,10,7,255,0, + 24,36,24,16,24,56,44,124,78,239,9,7,14,9,255,0, + 63,128,28,128,44,0,47,0,124,0,76,128,239,128,6,10, + 10,7,0,253,124,204,192,192,192,236,120,32,16,48,6,10, + 10,7,0,0,32,16,0,252,100,96,120,96,100,252,6,10, + 10,7,0,0,8,16,0,252,100,96,120,96,100,252,6,10, + 10,7,0,0,48,72,0,252,100,96,120,96,100,252,6,9, + 9,7,0,0,40,0,252,100,96,120,96,100,252,4,10,10, + 5,0,0,64,32,0,240,96,96,96,96,96,240,4,10,10, + 5,0,0,32,64,0,240,96,96,96,96,96,240,4,10,10, + 5,0,0,96,144,0,240,96,96,96,96,96,240,4,9,9, + 5,0,0,144,0,240,96,96,96,96,96,240,7,7,7,8, + 0,0,252,102,102,246,102,102,252,7,10,10,8,0,0,52, + 88,0,238,100,116,92,92,76,228,6,10,10,7,0,0,32, + 16,0,120,204,204,204,204,204,120,6,10,10,7,0,0,16, + 32,0,120,204,204,204,204,204,120,6,10,10,7,0,0,48, + 72,0,120,204,204,204,204,204,120,6,10,10,7,0,0,52, + 88,0,120,204,204,204,204,204,120,6,9,9,7,0,0,72, + 0,120,204,204,204,204,204,120,6,5,5,6,0,0,204,120, + 48,120,204,6,9,9,8,1,255,4,120,204,220,236,236,204, + 120,128,7,10,10,7,0,0,32,16,0,246,100,100,100,100, + 100,56,7,10,10,7,0,0,8,16,0,246,100,100,100,100, + 100,56,7,10,10,7,0,0,24,36,0,246,100,100,100,100, + 100,56,7,9,9,7,0,0,36,0,246,100,100,100,100,100, + 56,8,10,10,8,0,0,4,8,0,247,98,52,56,24,24, + 60,6,7,7,6,0,0,224,120,108,108,120,96,240,5,7, + 7,6,0,0,112,200,200,208,200,200,216,5,8,8,5,0, + 0,64,32,0,96,176,112,176,248,5,8,8,5,0,0,16, + 32,0,96,176,112,176,248,5,8,8,5,0,0,32,80,0, + 96,176,112,176,248,5,8,8,5,0,0,104,176,0,96,176, + 112,176,248,5,7,7,5,0,0,80,0,96,176,112,176,248, + 5,8,8,5,0,0,32,80,32,96,176,112,176,248,7,5, + 5,8,0,0,110,186,126,184,238,4,8,8,5,0,253,112, + 208,192,208,112,64,32,96,4,8,8,5,0,0,64,32,0, + 112,208,240,192,112,4,8,8,5,0,0,16,32,0,112,208, + 240,192,112,5,8,8,5,0,0,32,80,136,112,208,240,192, + 112,4,7,7,5,0,0,80,0,112,208,240,192,112,2,8, + 8,3,0,0,128,64,0,192,192,192,192,192,2,8,8,3, + 0,0,64,128,0,192,192,192,192,192,3,8,8,3,0,0, + 64,160,0,192,192,192,192,192,3,7,7,3,0,0,160,0, + 192,192,192,192,192,5,9,9,6,0,0,128,112,96,176,24, + 120,216,216,112,6,8,8,6,0,0,104,176,0,176,216,216, + 216,220,5,8,8,6,0,0,64,32,0,112,216,216,216,112, + 5,8,8,6,0,0,16,32,0,112,216,216,216,112,5,8, + 8,6,0,0,32,80,0,112,216,216,216,112,5,8,8,6, + 0,0,104,176,0,112,216,216,216,112,5,7,7,6,0,0, + 80,0,112,216,216,216,112,5,5,5,6,0,0,32,0,248, + 0,32,5,7,7,6,0,255,16,112,216,216,216,112,64,5, + 8,8,5,0,0,64,32,0,216,208,208,208,112,5,8,8, + 5,0,0,16,32,0,216,208,208,208,112,5,8,8,5,0, + 0,32,80,0,216,208,208,208,112,5,7,7,5,0,0,80, + 0,216,208,208,208,112,5,11,11,5,0,253,16,32,0,216, + 216,112,112,32,32,192,192,5,10,10,5,255,253,224,96,112, + 104,104,104,112,96,96,224,5,10,10,5,0,253,80,0,216, + 216,112,112,32,32,192,192}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--11-80-100-100-P-57-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=10 h=10 x= 1 y= 6 dx=11 dy= 0 ascent= 8 len=18 + Font Bounding box w=13 h=18 x=-2 y=-5 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-3 + X Font ascent = 7 descent=-3 + Max Font ascent = 8 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB08r[1221] U8G_SECTION(".progmem.u8g_font_timB08r") = { + 0,13,18,254,251,7,1,164,3,77,32,127,253,8,253,7, + 253,0,0,0,2,0,1,2,7,7,4,1,0,192,192,192, + 192,0,192,192,3,3,3,5,1,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,9,9,5,0,255, + 32,112,184,224,96,48,184,112,32,7,7,7,9,1,0,118, + 220,232,16,46,90,156,7,7,7,9,1,0,48,104,104,118, + 220,204,118,1,3,3,3,1,4,128,128,128,3,10,10,3, + 255,253,32,96,64,192,192,192,192,64,96,32,3,10,10,4, + 0,253,128,192,64,96,96,96,96,64,192,128,5,5,5,6, + 0,2,32,248,112,248,32,5,5,5,6,0,0,32,32,248, + 32,32,2,3,3,4,1,255,192,192,64,3,1,1,3,0, + 2,224,2,2,2,3,0,0,192,192,3,7,7,3,0,0, + 32,32,96,64,192,128,128,4,7,7,5,0,0,96,208,208, + 208,208,208,96,4,7,7,5,0,0,96,224,96,96,96,96, + 240,4,7,7,5,0,0,96,240,48,32,64,240,240,4,7, + 7,5,0,0,96,176,48,96,48,176,224,5,7,7,5,0, + 0,16,48,80,144,248,48,48,4,7,7,5,0,0,224,224, + 128,224,48,176,224,4,7,7,5,0,0,48,96,192,240,208, + 208,96,5,7,7,5,0,0,120,240,144,48,32,96,96,4, + 7,7,5,0,0,96,208,208,96,176,176,96,4,7,7,5, + 0,0,96,176,176,176,112,48,224,2,5,5,4,1,0,192, + 192,0,192,192,2,6,6,4,1,255,192,192,0,192,192,64, + 5,5,5,6,0,0,24,112,192,112,24,5,3,3,6,0, + 1,248,0,248,5,5,5,6,0,0,192,112,24,112,192,4, + 7,7,6,1,0,96,176,176,32,0,96,96,10,9,18,11, + 0,254,31,0,48,128,109,64,218,64,210,64,210,128,205,0, + 96,0,62,0,8,7,7,7,255,0,16,24,56,44,124,78, + 239,6,7,7,7,0,0,248,108,108,120,108,108,248,6,7, + 7,7,0,0,124,204,192,192,192,236,120,7,7,7,8,0, + 0,252,102,102,102,102,102,252,6,7,7,7,0,0,252,100, + 96,120,96,100,252,6,7,7,7,0,0,252,100,104,120,104, + 96,240,6,7,7,7,0,0,124,204,192,220,204,204,120,8, + 7,7,9,0,0,231,102,102,126,102,102,231,4,7,7,5, + 0,0,240,96,96,96,96,96,240,5,8,8,5,0,255,120, + 48,48,48,48,48,176,224,7,7,7,8,0,0,238,100,104, + 120,108,110,230,6,7,7,7,0,0,240,96,96,96,100,108, + 252,9,7,14,10,0,0,243,128,119,0,91,0,91,0,91, + 0,75,0,227,128,7,7,7,8,0,0,238,100,116,92,92, + 76,228,6,7,7,7,0,0,120,204,204,204,204,204,120,6, + 7,7,6,0,0,248,108,108,120,96,96,240,6,9,9,7, + 0,254,120,204,204,204,204,204,120,48,28,7,7,7,7,0, + 0,248,108,108,120,104,108,238,5,7,7,6,0,0,120,200, + 224,112,56,152,240,6,7,7,7,0,0,252,180,48,48,48, + 48,120,7,7,7,7,0,0,246,100,100,100,100,100,56,8, + 7,7,8,0,0,243,98,116,52,56,24,16,10,7,14,10, + 0,0,238,192,108,128,109,128,109,0,55,0,54,0,18,0, + 7,7,7,7,0,0,230,100,56,56,44,76,222,8,7,7, + 8,0,0,247,98,52,56,24,24,60,6,7,7,7,0,0, + 252,204,152,48,100,204,252,3,10,10,4,0,253,224,192,192, + 192,192,192,192,192,192,224,3,7,7,3,0,0,128,128,192, + 64,96,32,32,3,10,10,4,0,253,224,96,96,96,96,96, + 96,96,96,224,5,4,4,6,0,3,32,112,216,136,5,1, + 1,5,0,253,248,2,2,2,4,0,6,128,64,5,5,5, + 5,0,0,96,176,112,176,248,5,7,7,5,255,0,224,96, + 112,104,104,104,112,4,5,5,5,0,0,112,208,192,208,112, + 6,7,7,6,0,0,56,24,120,216,216,216,108,4,5,5, + 5,0,0,112,208,240,192,112,4,7,7,3,255,0,48,96, + 240,96,96,96,240,5,8,8,5,0,253,120,208,208,112,192, + 240,144,240,6,7,7,5,255,0,224,96,120,104,104,104,108, + 2,7,7,3,0,0,192,0,192,192,192,192,192,3,10,10, + 4,0,253,96,0,96,96,96,96,96,96,96,192,6,7,7, + 5,255,0,224,96,108,104,112,104,236,3,7,7,3,255,0, + 224,96,96,96,96,96,96,8,5,5,8,0,0,172,254,214, + 214,215,6,5,5,6,0,0,176,216,216,216,220,5,5,5, + 6,0,0,112,216,216,216,112,5,8,8,5,255,253,240,104, + 104,104,112,96,96,224,5,8,8,5,0,253,112,208,208,208, + 112,48,48,56,4,5,5,4,0,0,208,240,192,192,192,3, + 5,5,4,0,0,96,192,224,96,224,4,7,7,4,255,0, + 32,96,240,96,96,96,48,5,5,5,5,0,0,216,208,208, + 208,112,5,5,5,5,0,0,216,208,112,96,32,7,5,5, + 6,255,0,214,212,92,120,40,4,5,5,5,0,0,208,240, + 96,240,176,5,8,8,5,0,253,216,216,112,112,32,32,192, + 192,4,5,5,5,0,0,240,176,96,208,240,4,10,10,4, + 255,253,48,96,96,96,192,192,96,96,96,48,1,10,10,3, + 1,253,128,128,128,128,128,128,128,128,128,128,4,10,10,4, + 0,253,192,96,96,96,48,48,96,96,96,192,5,2,2,6, + 0,2,104,176,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=14 x= 1 y= 8 dx=14 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB10[3539] U8G_SECTION(".progmem.u8g_font_timB10") = { + 0,17,24,254,250,10,2,6,4,148,32,255,253,14,253,10, + 253,0,0,0,3,0,1,2,10,10,4,1,0,192,192,192, + 192,192,192,192,0,192,192,5,4,4,7,1,6,216,216,216, + 72,7,10,10,7,255,0,20,20,20,126,40,40,252,80,80, + 80,6,12,12,7,0,255,16,120,212,212,240,120,60,28,148, + 212,120,16,13,10,20,14,0,0,56,192,103,192,197,128,201, + 0,115,0,6,112,4,200,13,136,25,144,24,224,10,10,20, + 12,1,0,60,0,102,0,102,0,60,0,57,192,108,128,205, + 128,199,0,239,128,123,0,2,4,4,4,1,6,192,192,192, + 64,3,13,13,5,1,253,32,96,64,192,192,192,192,192,192, + 192,64,96,32,3,13,13,5,0,253,128,192,64,96,96,96, + 96,96,96,96,64,192,128,5,6,6,7,1,4,32,168,112, + 112,168,32,7,7,7,8,0,0,16,16,16,254,16,16,16, + 2,4,4,3,0,254,192,192,64,128,3,1,1,4,0,3, + 224,2,2,2,3,0,0,192,192,4,10,10,4,0,0,16, + 16,48,32,96,64,64,192,128,128,6,10,10,7,0,0,120, + 72,204,204,204,204,204,204,72,120,6,10,10,7,0,0,48, + 240,48,48,48,48,48,48,48,252,6,10,10,7,0,0,56, + 124,140,12,12,24,48,64,252,252,6,10,10,7,0,0,56, + 124,140,12,56,28,12,196,236,120,6,10,10,7,0,0,24, + 56,56,88,152,152,252,252,24,24,6,10,10,7,0,0,124, + 124,64,120,124,12,4,196,204,120,6,10,10,7,0,0,28, + 48,96,224,248,204,204,204,204,120,6,10,10,7,0,0,252, + 252,140,8,24,16,16,32,32,96,6,10,10,7,0,0,120, + 204,204,236,120,120,204,204,204,120,6,10,10,7,0,0,120, + 204,204,204,204,124,24,56,112,192,2,7,7,4,1,0,192, + 192,0,0,0,192,192,2,9,9,4,1,254,192,192,0,0, + 0,192,192,64,128,7,7,7,8,0,0,6,28,112,192,112, + 28,6,7,3,3,8,0,2,254,0,254,7,7,7,8,0, + 0,192,112,28,6,28,112,192,5,10,10,7,1,0,112,216, + 216,24,48,96,96,0,96,96,11,12,24,14,1,254,15,128, + 56,192,96,96,69,32,143,32,155,32,155,32,159,96,141,192, + 64,0,96,0,31,128,10,10,20,10,0,0,12,0,12,0, + 30,0,22,0,51,0,35,0,63,0,97,128,65,128,227,192, + 8,10,10,9,0,0,254,99,99,99,126,99,99,99,99,254, + 8,10,10,10,1,0,61,99,193,193,192,192,192,193,99,62, + 9,10,20,10,0,0,254,0,99,0,97,128,97,128,97,128, + 97,128,97,128,97,128,99,0,254,0,8,10,10,9,0,0, + 255,99,97,100,124,100,96,97,99,255,8,10,10,8,0,0, + 255,99,97,100,124,100,100,96,96,240,9,10,20,11,1,0, + 61,0,99,0,193,0,193,0,192,0,199,128,195,0,195,0, + 99,0,62,0,10,10,20,11,0,0,243,192,97,128,97,128, + 97,128,127,128,97,128,97,128,97,128,97,128,243,192,4,10, + 10,5,0,0,240,96,96,96,96,96,96,96,96,240,6,11, + 11,7,0,255,60,24,24,24,24,24,24,24,216,216,112,10, + 10,20,11,1,0,247,192,99,0,98,0,100,0,120,0,124, + 0,110,0,103,0,99,128,247,192,8,10,10,9,0,0,240, + 96,96,96,96,96,97,97,99,255,12,10,20,13,0,0,240, + 240,112,224,112,224,89,96,89,96,90,96,78,96,78,96,68, + 96,228,240,10,10,20,10,0,0,225,192,112,128,112,128,88, + 128,76,128,76,128,70,128,67,128,67,128,225,128,9,10,20, + 11,1,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,8,10,10,9,0,0,254,103,99, + 99,99,126,96,96,96,240,9,13,26,11,1,253,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,28,0,14,0,3,128,10,10,20,10,0,0,254,0,103, + 0,99,0,99,0,102,0,124,0,110,0,103,0,99,128,241, + 192,7,10,10,8,0,0,122,198,194,224,120,28,14,134,198, + 252,8,10,10,9,0,0,255,219,153,24,24,24,24,24,24, + 60,9,10,20,10,0,0,243,128,97,0,97,0,97,0,97, + 0,97,0,97,0,97,0,115,0,62,0,10,10,20,10,0, + 0,241,192,96,128,97,128,49,0,51,0,50,0,26,0,30, + 0,12,0,12,0,15,10,20,14,255,0,247,158,99,12,99, + 8,49,136,49,144,51,144,26,208,28,224,12,96,12,96,11, + 10,20,10,0,0,241,192,112,128,57,0,30,0,12,0,14, + 0,23,0,35,128,65,192,227,224,10,10,20,10,0,0,249, + 192,112,128,49,0,57,0,26,0,30,0,12,0,12,0,12, + 0,30,0,8,10,10,9,0,0,255,199,134,140,24,24,49, + 97,227,255,4,13,13,5,0,253,240,192,192,192,192,192,192, + 192,192,192,192,192,240,4,10,10,4,0,0,128,128,192,64, + 96,32,32,48,16,16,4,13,13,5,0,253,240,48,48,48, + 48,48,48,48,48,48,48,48,240,5,5,5,8,1,5,32, + 112,80,216,136,7,1,1,7,0,253,254,3,3,3,5,1, + 8,128,192,32,7,7,7,7,0,0,120,204,12,124,204,204, + 118,7,10,10,8,0,0,224,96,96,124,102,102,102,102,102, + 92,5,7,7,6,0,0,48,88,200,192,192,232,112,7,10, + 10,7,0,0,28,12,12,124,204,204,204,204,204,118,6,7, + 7,6,0,0,56,76,204,252,192,228,120,5,10,10,5,0, + 0,56,104,96,240,96,96,96,96,96,240,7,10,10,7,0, + 253,126,204,204,204,120,64,124,254,130,124,8,10,10,8,0, + 0,224,96,96,108,118,102,102,102,102,231,4,10,10,4,0, + 0,96,96,0,224,96,96,96,96,96,240,4,13,13,4,255, + 253,48,48,0,112,48,48,48,48,48,48,48,176,224,8,10, + 10,8,0,0,224,96,96,110,100,104,120,108,102,231,4,10, + 10,4,0,0,224,96,96,96,96,96,96,96,96,240,12,7, + 14,12,0,0,236,192,119,96,102,96,102,96,102,96,102,96, + 247,112,8,7,7,8,0,0,236,118,102,102,102,102,231,6, + 7,7,7,0,0,120,204,204,204,204,204,120,7,10,10,8, + 0,253,236,118,102,102,102,102,124,96,96,240,7,10,10,7, + 0,253,108,220,204,204,204,204,124,12,12,30,6,7,7,6, + 0,0,220,108,96,96,96,96,240,5,7,7,6,0,0,120, + 200,224,112,56,152,240,5,9,9,5,0,0,32,96,240,96, + 96,96,104,112,48,8,7,7,7,255,0,238,102,102,102,102, + 102,59,8,7,7,7,255,0,247,98,98,52,52,24,24,10, + 7,14,10,0,0,238,192,100,128,118,128,55,0,59,0,59, + 0,18,0,7,7,7,7,0,0,238,108,56,56,56,108,238, + 8,10,10,7,255,253,247,98,50,52,28,28,8,8,56,48, + 6,7,7,6,0,0,252,156,24,48,100,228,252,5,13,13, + 7,1,253,24,48,48,48,48,96,192,96,48,48,48,48,24, + 1,12,12,3,1,254,128,128,128,128,128,128,128,128,128,128, + 128,128,5,13,13,7,0,253,192,96,96,96,96,48,24,48, + 96,96,96,96,192,7,4,4,8,0,3,96,242,158,12,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 0,0,0,3,0,1,2,10,10,4,1,253,192,192,0,192, + 192,192,192,192,192,192,6,11,11,7,0,254,8,8,120,212, + 208,208,240,228,120,32,32,7,10,10,8,0,0,60,118,102, + 96,48,248,48,48,246,222,7,6,6,8,0,2,56,238,68, + 68,238,56,8,10,10,8,0,0,247,98,118,52,60,24,60, + 24,24,60,1,12,12,3,1,254,128,128,128,128,128,0,0, + 128,128,128,128,128,5,12,12,7,1,254,112,216,200,96,240, + 152,200,120,48,152,216,112,3,2,2,5,1,8,160,160,10, + 10,20,12,1,0,30,0,97,128,78,128,146,64,144,64,144, + 64,146,64,76,128,97,128,30,0,4,7,7,5,0,3,96, + 16,112,144,112,0,240,7,5,5,9,1,1,54,108,216,108, + 54,7,4,4,9,1,1,254,2,2,2,3,1,1,4,0, + 3,224,10,10,20,12,1,0,30,0,97,128,92,128,146,64, + 146,64,156,64,148,64,82,128,97,128,30,0,4,1,1,5, + 0,8,240,4,4,4,6,1,6,96,144,144,96,7,9,9, + 8,0,0,16,16,16,254,16,16,16,0,254,4,6,6,4, + 0,4,96,176,48,96,192,240,4,6,6,4,0,4,96,176, + 96,48,176,96,3,3,3,5,1,8,32,96,128,8,10,10, + 7,255,253,238,102,102,102,102,102,123,64,96,96,7,13,13, + 8,0,253,126,244,244,244,244,116,20,20,20,20,20,20,20, + 2,2,2,4,0,4,192,192,3,3,3,5,1,253,64,32, + 224,4,6,6,4,0,4,32,224,96,96,96,240,4,7,7, + 5,0,3,96,144,144,144,96,0,240,7,5,5,9,1,1, + 216,108,54,108,216,10,10,20,10,0,0,33,0,226,0,98, + 0,100,0,100,128,249,128,11,128,22,128,23,192,33,128,10, + 10,20,10,0,0,33,0,226,0,98,0,100,0,101,128,250, + 192,8,192,17,128,19,0,35,192,10,10,20,10,0,0,97, + 0,178,0,98,0,52,0,180,128,105,128,11,128,22,128,23, + 192,33,128,5,10,10,7,1,253,48,48,0,48,48,96,192, + 216,216,112,10,14,28,10,0,0,16,0,24,0,4,0,0, + 0,12,0,12,0,30,0,22,0,51,0,35,0,63,0,97, + 128,65,128,227,192,10,14,28,10,0,0,2,0,6,0,8, + 0,0,0,12,0,12,0,30,0,22,0,51,0,35,0,63, + 0,97,128,65,128,227,192,10,14,28,10,0,0,8,0,28, + 0,34,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,13,26,10,0,0,26, + 0,44,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,13,26,10,0,0,18, + 0,18,0,0,0,12,0,12,0,30,0,22,0,51,0,35, + 0,63,0,97,128,65,128,227,192,10,14,28,10,0,0,12, + 0,18,0,12,0,0,0,12,0,12,0,30,0,22,0,51, + 0,35,0,63,0,97,128,65,128,227,192,13,10,20,14,0, + 0,31,248,15,24,11,8,27,32,19,224,63,32,35,40,99, + 8,67,24,231,248,8,13,13,10,1,253,61,99,193,193,192, + 192,192,193,99,62,16,8,56,8,14,14,9,0,0,32,48, + 8,0,255,99,97,100,124,100,101,97,99,255,8,14,14,9, + 0,0,4,12,16,0,255,99,97,100,124,100,101,97,99,255, + 8,14,14,9,0,0,8,28,34,0,255,99,97,100,124,100, + 101,97,99,255,8,13,13,9,0,0,36,36,0,255,99,97, + 100,124,100,101,97,99,255,4,14,14,5,0,0,128,192,32, + 0,240,96,96,96,96,96,96,96,96,240,4,14,14,5,0, + 0,16,48,64,0,240,96,96,96,96,96,96,96,96,240,5, + 14,14,5,0,0,32,112,136,0,240,96,96,96,96,96,96, + 96,96,240,4,13,13,5,0,0,144,144,0,240,96,96,96, + 96,96,96,96,96,240,9,10,20,11,1,0,254,0,99,0, + 97,128,97,128,241,128,97,128,97,128,97,128,99,0,254,0, + 10,13,26,10,0,0,26,0,44,0,0,0,225,192,112,128, + 112,128,88,128,76,128,76,128,70,128,67,128,67,128,225,128, + 9,14,28,11,1,0,16,0,24,0,4,0,0,0,62,0, + 99,0,193,128,193,128,193,128,193,128,193,128,193,128,99,0, + 62,0,9,14,28,11,1,0,4,0,12,0,16,0,0,0, + 62,0,99,0,193,128,193,128,193,128,193,128,193,128,193,128, + 99,0,62,0,9,14,28,11,1,0,8,0,28,0,34,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,9,13,26,11,1,0,26,0,44,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,9,13,26,11,1,0,34,0,34,0, + 0,0,62,0,99,0,193,128,193,128,193,128,193,128,193,128, + 193,128,99,0,62,0,8,7,7,8,0,0,195,102,60,24, + 60,102,195,9,12,24,11,1,255,0,128,61,0,99,0,195, + 128,197,128,201,128,201,128,209,128,225,128,99,0,94,0,128, + 0,9,14,28,10,0,0,16,0,24,0,4,0,0,0,243, + 128,97,0,97,0,97,0,97,0,97,0,97,0,97,0,115, + 0,62,0,9,14,28,10,0,0,4,0,12,0,16,0,0, + 0,243,128,97,0,97,0,97,0,97,0,97,0,97,0,97, + 0,115,0,62,0,9,14,28,10,0,0,8,0,28,0,34, + 0,0,0,243,128,97,0,97,0,97,0,97,0,97,0,97, + 0,97,0,115,0,62,0,9,13,26,10,0,0,18,0,18, + 0,0,0,243,128,97,0,97,0,97,0,97,0,97,0,97, + 0,97,0,115,0,62,0,10,14,28,10,0,0,1,0,3, + 0,4,0,0,0,249,192,112,128,49,0,57,0,26,0,30, + 0,12,0,12,0,12,0,30,0,8,10,10,9,0,0,240, + 96,126,103,99,99,99,126,96,240,7,10,10,8,0,0,56, + 108,100,108,120,108,102,102,102,236,7,11,11,7,0,0,32, + 48,8,0,120,204,12,124,204,204,118,7,11,11,7,0,0, + 8,24,32,0,120,204,12,124,204,204,118,7,11,11,7,0, + 0,16,56,68,0,120,204,12,124,204,204,118,7,10,10,7, + 0,0,52,88,0,120,204,12,124,204,204,118,7,10,10,7, + 0,0,40,40,0,120,204,12,124,204,204,118,7,11,11,7, + 0,0,48,72,48,0,120,204,12,124,204,204,118,10,7,14, + 11,0,0,123,128,204,192,204,192,63,192,204,0,204,192,119, + 128,6,10,10,7,0,253,56,76,204,192,192,228,120,32,16, + 112,6,11,11,7,0,0,64,96,16,0,56,76,204,252,192, + 228,120,6,11,11,7,0,0,8,24,32,0,56,76,204,252, + 192,228,120,6,11,11,7,0,0,16,56,68,0,56,76,204, + 252,192,228,120,6,10,10,7,0,0,80,80,0,56,76,204, + 252,192,228,120,4,11,11,4,0,0,128,192,32,0,224,96, + 96,96,96,96,240,4,11,11,4,0,0,32,96,128,0,224, + 96,96,96,96,96,240,5,11,11,4,0,0,32,112,136,0, + 224,96,96,96,96,96,240,4,10,10,4,0,0,160,160,0, + 224,96,96,96,96,96,240,6,10,10,7,0,0,204,112,152, + 120,204,204,204,204,204,120,8,10,10,8,0,0,52,88,0, + 236,118,102,102,102,102,231,6,11,11,7,0,0,32,48,8, + 0,120,204,204,204,204,204,120,6,11,11,7,0,0,8,24, + 32,0,120,204,204,204,204,204,120,6,11,11,7,0,0,32, + 112,136,0,120,204,204,204,204,204,120,6,10,10,7,0,0, + 104,176,0,120,204,204,204,204,204,120,6,10,10,7,0,0, + 80,80,0,120,204,204,204,204,204,120,6,7,7,8,0,0, + 48,48,0,252,0,48,48,6,9,9,7,0,255,4,120,204, + 220,236,236,204,120,128,8,11,11,7,255,0,32,48,8,0, + 238,102,102,102,102,102,59,8,11,11,7,255,0,4,12,16, + 0,238,102,102,102,102,102,59,8,11,11,7,255,0,16,56, + 68,0,238,102,102,102,102,102,59,8,10,10,7,255,0,40, + 40,0,238,102,102,102,102,102,59,8,14,14,7,255,253,2, + 6,8,0,247,98,50,52,28,28,8,8,56,48,7,13,13, + 8,0,253,224,96,96,108,118,102,102,102,102,124,96,96,240, + 8,13,13,7,255,253,34,34,0,247,98,50,52,28,28,8, + 8,56,48}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=15 h=13 x= 1 y= 8 dx=14 dy= 0 ascent=11 len=26 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB10r[1632] U8G_SECTION(".progmem.u8g_font_timB10r") = { + 0,17,24,254,250,10,2,6,4,148,32,127,253,11,253,10, + 253,0,0,0,3,0,1,2,10,10,4,1,0,192,192,192, + 192,192,192,192,0,192,192,5,4,4,7,1,6,216,216,216, + 72,7,10,10,7,255,0,20,20,20,126,40,40,252,80,80, + 80,6,12,12,7,0,255,16,120,212,212,240,120,60,28,148, + 212,120,16,13,10,20,14,0,0,56,192,103,192,197,128,201, + 0,115,0,6,112,4,200,13,136,25,144,24,224,10,10,20, + 12,1,0,60,0,102,0,102,0,60,0,57,192,108,128,205, + 128,199,0,239,128,123,0,2,4,4,4,1,6,192,192,192, + 64,3,13,13,5,1,253,32,96,64,192,192,192,192,192,192, + 192,64,96,32,3,13,13,5,0,253,128,192,64,96,96,96, + 96,96,96,96,64,192,128,5,6,6,7,1,4,32,168,112, + 112,168,32,7,7,7,8,0,0,16,16,16,254,16,16,16, + 2,4,4,3,0,254,192,192,64,128,3,1,1,4,0,3, + 224,2,2,2,3,0,0,192,192,4,10,10,4,0,0,16, + 16,48,32,96,64,64,192,128,128,6,10,10,7,0,0,120, + 72,204,204,204,204,204,204,72,120,6,10,10,7,0,0,48, + 240,48,48,48,48,48,48,48,252,6,10,10,7,0,0,56, + 124,140,12,12,24,48,64,252,252,6,10,10,7,0,0,56, + 124,140,12,56,28,12,196,236,120,6,10,10,7,0,0,24, + 56,56,88,152,152,252,252,24,24,6,10,10,7,0,0,124, + 124,64,120,124,12,4,196,204,120,6,10,10,7,0,0,28, + 48,96,224,248,204,204,204,204,120,6,10,10,7,0,0,252, + 252,140,8,24,16,16,32,32,96,6,10,10,7,0,0,120, + 204,204,236,120,120,204,204,204,120,6,10,10,7,0,0,120, + 204,204,204,204,124,24,56,112,192,2,7,7,4,1,0,192, + 192,0,0,0,192,192,2,9,9,4,1,254,192,192,0,0, + 0,192,192,64,128,7,7,7,8,0,0,6,28,112,192,112, + 28,6,7,3,3,8,0,2,254,0,254,7,7,7,8,0, + 0,192,112,28,6,28,112,192,5,10,10,7,1,0,112,216, + 216,24,48,96,96,0,96,96,11,12,24,14,1,254,15,128, + 56,192,96,96,69,32,143,32,155,32,155,32,159,96,141,192, + 64,0,96,0,31,128,10,10,20,10,0,0,12,0,12,0, + 30,0,22,0,51,0,35,0,63,0,97,128,65,128,227,192, + 8,10,10,9,0,0,254,99,99,99,126,99,99,99,99,254, + 8,10,10,10,1,0,61,99,193,193,192,192,192,193,99,62, + 9,10,20,10,0,0,254,0,99,0,97,128,97,128,97,128, + 97,128,97,128,97,128,99,0,254,0,8,10,10,9,0,0, + 255,99,97,100,124,100,96,97,99,255,8,10,10,8,0,0, + 255,99,97,100,124,100,100,96,96,240,9,10,20,11,1,0, + 61,0,99,0,193,0,193,0,192,0,199,128,195,0,195,0, + 99,0,62,0,10,10,20,11,0,0,243,192,97,128,97,128, + 97,128,127,128,97,128,97,128,97,128,97,128,243,192,4,10, + 10,5,0,0,240,96,96,96,96,96,96,96,96,240,6,11, + 11,7,0,255,60,24,24,24,24,24,24,24,216,216,112,10, + 10,20,11,1,0,247,192,99,0,98,0,100,0,120,0,124, + 0,110,0,103,0,99,128,247,192,8,10,10,9,0,0,240, + 96,96,96,96,96,97,97,99,255,12,10,20,13,0,0,240, + 240,112,224,112,224,89,96,89,96,90,96,78,96,78,96,68, + 96,228,240,10,10,20,10,0,0,225,192,112,128,112,128,88, + 128,76,128,76,128,70,128,67,128,67,128,225,128,9,10,20, + 11,1,0,62,0,99,0,193,128,193,128,193,128,193,128,193, + 128,193,128,99,0,62,0,8,10,10,9,0,0,254,103,99, + 99,99,126,96,96,96,240,9,13,26,11,1,253,62,0,99, + 0,193,128,193,128,193,128,193,128,193,128,193,128,99,0,62, + 0,28,0,14,0,3,128,10,10,20,10,0,0,254,0,103, + 0,99,0,99,0,102,0,124,0,110,0,103,0,99,128,241, + 192,7,10,10,8,0,0,122,198,194,224,120,28,14,134,198, + 252,8,10,10,9,0,0,255,219,153,24,24,24,24,24,24, + 60,9,10,20,10,0,0,243,128,97,0,97,0,97,0,97, + 0,97,0,97,0,97,0,115,0,62,0,10,10,20,10,0, + 0,241,192,96,128,97,128,49,0,51,0,50,0,26,0,30, + 0,12,0,12,0,15,10,20,14,255,0,247,158,99,12,99, + 8,49,136,49,144,51,144,26,208,28,224,12,96,12,96,11, + 10,20,10,0,0,241,192,112,128,57,0,30,0,12,0,14, + 0,23,0,35,128,65,192,227,224,10,10,20,10,0,0,249, + 192,112,128,49,0,57,0,26,0,30,0,12,0,12,0,12, + 0,30,0,8,10,10,9,0,0,255,199,134,140,24,24,49, + 97,227,255,4,13,13,5,0,253,240,192,192,192,192,192,192, + 192,192,192,192,192,240,4,10,10,4,0,0,128,128,192,64, + 96,32,32,48,16,16,4,13,13,5,0,253,240,48,48,48, + 48,48,48,48,48,48,48,48,240,5,5,5,8,1,5,32, + 112,80,216,136,7,1,1,7,0,253,254,3,3,3,5,1, + 8,128,192,32,7,7,7,7,0,0,120,204,12,124,204,204, + 118,7,10,10,8,0,0,224,96,96,124,102,102,102,102,102, + 92,5,7,7,6,0,0,48,88,200,192,192,232,112,7,10, + 10,7,0,0,28,12,12,124,204,204,204,204,204,118,6,7, + 7,6,0,0,56,76,204,252,192,228,120,5,10,10,5,0, + 0,56,104,96,240,96,96,96,96,96,240,7,10,10,7,0, + 253,126,204,204,204,120,64,124,254,130,124,8,10,10,8,0, + 0,224,96,96,108,118,102,102,102,102,231,4,10,10,4,0, + 0,96,96,0,224,96,96,96,96,96,240,4,13,13,4,255, + 253,48,48,0,112,48,48,48,48,48,48,48,176,224,8,10, + 10,8,0,0,224,96,96,110,100,104,120,108,102,231,4,10, + 10,4,0,0,224,96,96,96,96,96,96,96,96,240,12,7, + 14,12,0,0,236,192,119,96,102,96,102,96,102,96,102,96, + 247,112,8,7,7,8,0,0,236,118,102,102,102,102,231,6, + 7,7,7,0,0,120,204,204,204,204,204,120,7,10,10,8, + 0,253,236,118,102,102,102,102,124,96,96,240,7,10,10,7, + 0,253,108,220,204,204,204,204,124,12,12,30,6,7,7,6, + 0,0,220,108,96,96,96,96,240,5,7,7,6,0,0,120, + 200,224,112,56,152,240,5,9,9,5,0,0,32,96,240,96, + 96,96,104,112,48,8,7,7,7,255,0,238,102,102,102,102, + 102,59,8,7,7,7,255,0,247,98,98,52,52,24,24,10, + 7,14,10,0,0,238,192,100,128,118,128,55,0,59,0,59, + 0,18,0,7,7,7,7,0,0,238,108,56,56,56,108,238, + 8,10,10,7,255,253,247,98,50,52,28,28,8,8,56,48, + 6,7,7,6,0,0,252,156,24,48,100,228,252,5,13,13, + 7,1,253,24,48,48,48,48,96,192,96,48,48,48,48,24, + 1,12,12,3,1,254,128,128,128,128,128,128,128,128,128,128, + 128,128,5,13,13,7,0,253,192,96,96,96,96,48,24,48, + 96,96,96,96,192,7,4,4,8,0,3,96,242,158,12,255 + }; +/* + Fontname: -Adobe-Times-Bold-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=16 x= 2 y= 9 dx=17 dy= 0 ascent=16 len=33 + Font Bounding box w=19 h=27 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =16 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB12[3887] U8G_SECTION(".progmem.u8g_font_timB12") = { + 0,19,27,254,249,11,2,42,5,41,32,255,252,16,252,11, + 252,0,0,0,5,0,1,2,11,11,6,2,0,192,192,192, + 192,192,128,128,0,0,192,192,5,5,5,9,1,6,216,216, + 216,144,144,8,11,11,8,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,13,13,8,0,255,16,122,150,210,240,120, + 60,30,22,146,210,188,16,12,12,24,16,2,0,48,128,111, + 0,201,0,201,0,202,0,210,96,100,208,9,144,9,144,17, + 144,17,160,32,192,10,11,22,14,2,0,28,0,38,0,38, + 0,52,0,57,192,120,128,156,128,141,0,198,64,231,192,123, + 128,2,5,5,5,2,6,192,192,192,128,128,4,14,14,6, + 1,253,16,32,96,64,192,192,192,192,192,192,64,96,32,16, + 4,14,14,6,0,253,128,64,96,32,48,48,48,48,48,48, + 32,96,64,128,5,7,7,8,1,4,32,168,248,112,248,168, + 32,7,8,8,9,1,0,16,16,16,254,254,16,16,16,2, + 5,5,4,1,253,192,192,64,64,128,4,2,2,5,0,3, + 240,240,2,2,2,4,1,0,192,192,4,11,11,5,0,0, + 16,48,32,32,96,64,64,64,192,128,128,6,11,11,8,1, + 0,48,72,204,204,204,204,204,204,204,72,48,6,11,11,8, + 1,0,16,240,48,48,48,48,48,48,48,48,252,7,11,11, + 8,0,0,56,124,156,12,12,8,24,16,34,124,252,7,11, + 11,8,0,0,56,124,140,8,16,60,14,6,198,204,120,7, + 11,11,8,0,0,4,12,28,44,44,76,140,254,254,12,12, + 8,11,11,8,0,0,31,62,32,56,124,14,6,6,198,204, + 112,6,11,11,8,1,0,12,48,96,96,240,204,204,204,204, + 72,48,7,11,11,8,0,0,126,126,132,4,12,8,8,24, + 16,48,32,7,11,11,8,0,0,56,68,198,228,120,60,78, + 198,198,68,56,6,11,11,8,1,0,48,72,204,204,204,204, + 124,24,24,48,192,2,7,7,5,1,0,192,192,0,0,0, + 192,192,2,10,10,5,1,253,192,192,0,0,0,192,192,64, + 64,128,8,8,8,9,0,0,3,14,56,192,192,56,14,3, + 7,5,5,9,1,2,254,254,0,254,254,8,8,8,9,0, + 0,192,112,28,3,3,28,112,192,6,11,11,8,1,0,56, + 204,204,12,12,8,16,32,0,96,96,13,13,26,16,1,254, + 7,128,28,96,48,16,103,80,204,200,216,200,216,136,217,144, + 217,176,78,224,32,0,24,96,7,128,11,11,22,12,0,0, + 4,0,14,0,14,0,27,0,19,0,51,0,33,128,127,128, + 64,192,192,192,225,224,9,11,22,10,1,0,252,0,102,0, + 99,0,99,0,102,0,126,0,99,0,97,128,97,128,99,0, + 254,0,9,11,22,11,1,0,30,128,99,128,65,128,192,128, + 192,0,192,0,192,0,192,0,96,128,115,0,62,0,9,11, + 22,11,1,0,252,0,102,0,99,0,97,128,97,128,97,128, + 97,128,97,128,99,0,102,0,252,0,8,11,11,10,1,0, + 255,99,97,96,98,126,98,96,97,99,255,8,11,11,10,1, + 0,255,99,97,96,98,126,98,96,96,96,248,10,11,22,12, + 1,0,30,128,99,128,65,128,192,128,192,0,192,0,199,192, + 193,128,193,128,97,128,63,0,10,11,22,12,1,0,243,192, + 97,128,97,128,97,128,97,128,127,128,97,128,97,128,97,128, + 97,128,243,192,4,11,11,6,1,0,240,96,96,96,96,96, + 96,96,96,96,240,6,13,13,8,1,254,60,24,24,24,24, + 24,24,24,24,24,216,208,96,11,11,22,13,1,0,251,192, + 97,0,98,0,100,0,104,0,120,0,108,0,102,0,99,0, + 97,128,251,224,9,11,22,11,1,0,240,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,128,96,128,97,128,255,128, + 14,11,22,15,0,0,224,28,112,24,112,56,120,56,88,88, + 76,88,76,152,70,152,71,24,67,24,226,60,10,11,22,12, + 1,0,241,192,112,128,88,128,88,128,76,128,70,128,71,128, + 67,128,65,128,65,128,224,128,10,11,22,12,1,0,30,0, + 97,128,64,128,192,192,192,192,192,192,192,192,192,192,64,128, + 97,128,30,0,8,11,11,10,1,0,254,103,99,99,102,124, + 96,96,96,96,240,10,14,28,12,1,253,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,63, + 0,14,0,6,0,1,128,10,11,22,12,1,0,254,0,103, + 0,99,0,99,0,102,0,124,0,108,0,102,0,99,0,97, + 128,243,192,8,11,11,9,0,0,61,67,193,224,120,60,14, + 7,131,194,188,10,11,22,11,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,30,0, + 10,11,22,12,1,0,241,192,96,128,96,128,96,128,96,128, + 96,128,96,128,96,128,96,128,33,0,30,0,11,11,22,12, + 0,0,248,224,48,64,48,64,24,128,24,128,13,0,13,0, + 7,0,6,0,2,0,2,0,17,11,33,17,0,0,251,239, + 128,112,195,0,48,194,0,56,226,0,25,230,0,29,100,0, + 13,124,0,15,56,0,6,56,0,6,16,0,2,16,0,10, + 11,22,12,1,0,251,192,113,0,58,0,58,0,28,0,14, + 0,30,0,23,0,35,0,67,128,231,192,11,11,22,12,0, + 0,248,224,112,64,56,128,24,128,29,0,15,0,6,0,6, + 0,6,0,6,0,15,0,10,11,22,11,0,0,255,192,193, + 192,131,128,7,0,14,0,14,0,28,0,56,0,112,64,240, + 192,255,192,3,14,14,6,1,253,224,192,192,192,192,192,192, + 192,192,192,192,192,192,224,4,11,11,5,0,0,128,192,64, + 64,96,32,32,32,48,16,16,3,14,14,6,1,253,224,96, + 96,96,96,96,96,96,96,96,96,96,96,224,7,7,7,9, + 1,4,16,56,40,108,68,198,130,8,1,1,8,0,252,255, + 3,3,3,6,2,9,192,64,32,8,8,8,8,0,0,56, + 204,204,28,108,204,205,118,8,11,11,9,0,0,224,96,96, + 108,118,99,99,99,99,118,236,6,8,8,7,0,0,56,108, + 204,192,192,192,100,56,8,11,11,9,0,0,14,6,6,54, + 110,198,198,198,198,78,55,6,8,8,7,0,0,56,108,204, + 252,192,192,100,56,6,11,11,6,0,0,24,108,96,240,96, + 96,96,96,96,96,240,7,12,12,8,0,252,50,78,204,204, + 200,112,64,252,126,130,132,120,8,11,11,9,0,0,224,96, + 96,108,118,102,102,102,102,102,239,4,11,11,5,0,0,96, + 96,0,224,96,96,96,96,96,96,240,5,15,15,5,254,252, + 24,24,0,56,24,24,24,24,24,24,24,24,216,208,96,9, + 11,22,9,0,0,224,0,96,0,96,0,111,0,100,0,104, + 0,120,0,124,0,110,0,103,0,247,128,4,11,11,5,0, + 0,224,96,96,96,96,96,96,96,96,96,240,12,8,16,13, + 0,0,237,192,119,96,102,96,102,96,102,96,102,96,102,96, + 246,240,8,8,8,9,0,0,236,126,102,102,102,102,102,247, + 7,8,8,8,0,0,56,108,198,198,198,198,108,56,8,12, + 12,9,0,252,236,118,99,99,99,99,118,108,96,96,96,240, + 8,12,12,9,0,252,50,110,198,198,198,198,110,54,6,6, + 6,15,6,8,8,7,0,0,236,124,96,96,96,96,96,240, + 5,8,8,6,0,0,120,200,224,112,56,152,216,176,5,11, + 11,6,0,0,32,32,96,240,96,96,96,96,96,104,48,8, + 8,8,9,0,0,238,102,102,102,102,102,111,54,8,8,8, + 8,0,0,247,98,98,100,52,56,24,16,12,8,16,12,0, + 0,239,112,102,32,102,32,119,64,55,64,57,128,25,128,17, + 0,7,8,8,8,0,0,246,116,56,56,24,60,76,238,8, + 12,12,8,0,252,247,98,98,52,52,28,24,24,16,16,224, + 192,7,8,8,7,0,0,254,140,152,24,48,114,98,254,4, + 14,14,7,1,253,48,96,96,96,96,64,128,64,96,96,96, + 96,96,48,1,14,14,4,1,253,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,4,14,14,7,1,253,192,96,96, + 96,96,32,16,32,96,96,96,96,96,192,9,4,8,9,0, + 4,48,0,120,128,159,0,14,0,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,0,0,0,5,0,1, + 2,12,12,6,2,252,192,192,0,0,64,64,64,192,192,192, + 192,192,6,12,12,8,1,254,4,4,56,76,204,208,208,224, + 100,56,64,64,8,11,11,8,0,0,28,38,38,48,48,124, + 48,16,113,158,110,6,7,7,8,1,1,180,120,204,132,204, + 120,180,8,11,11,8,0,0,227,98,50,52,28,126,24,126, + 24,24,126,1,15,15,4,1,253,128,128,128,128,128,128,0, + 0,0,128,128,128,128,128,128,6,15,15,8,1,252,56,76, + 76,96,48,120,156,204,228,120,56,24,200,200,112,5,2,2, + 6,0,9,216,216,12,11,22,12,255,0,15,0,48,192,71, + 32,72,160,152,16,152,16,152,16,72,160,71,32,48,192,15, + 0,5,7,7,5,0,4,96,144,112,176,216,0,248,7,7, + 7,8,0,0,18,54,108,216,108,54,18,7,6,6,9,1, + 1,254,254,2,2,2,2,4,2,2,5,0,3,240,240,12, + 11,22,12,0,0,15,0,48,192,78,32,73,32,137,16,142, + 16,138,16,73,32,93,32,48,192,15,0,5,1,1,6,0, + 9,248,4,5,5,7,1,6,96,144,144,144,96,7,9,9, + 9,1,0,16,16,254,254,16,16,0,254,254,4,7,7,5, + 0,4,96,240,176,32,64,240,240,4,7,7,5,0,4,96, + 176,48,96,48,176,96,3,3,3,6,1,9,96,64,128,8, + 11,11,9,0,253,238,102,102,102,102,102,111,118,64,96,96, + 7,15,15,9,1,252,62,116,244,244,244,244,116,52,20,20, + 20,20,20,20,20,2,2,2,4,1,4,192,192,5,4,4, + 6,0,252,32,48,136,112,4,7,7,5,1,4,96,224,96, + 96,96,96,240,4,7,7,6,1,4,96,144,144,144,96,0, + 240,7,7,7,8,0,0,144,216,108,54,108,216,144,11,11, + 22,12,0,0,96,128,225,0,97,0,98,0,100,64,100,192, + 249,192,10,192,19,224,32,192,32,192,10,11,22,12,0,0, + 97,0,225,0,98,0,98,0,100,0,107,128,254,192,16,128, + 17,0,35,192,39,192,11,11,22,12,0,0,96,128,177,0, + 49,0,98,0,52,64,180,192,105,192,10,192,19,224,32,192, + 32,192,6,11,11,8,1,253,24,24,0,16,32,64,192,192, + 204,204,112,11,15,30,12,0,0,48,0,24,0,4,0,0, + 0,4,0,14,0,14,0,27,0,19,0,51,0,33,128,127, + 128,64,192,192,192,225,224,11,15,30,12,0,0,1,128,3, + 0,4,0,0,0,4,0,14,0,14,0,27,0,19,0,51, + 0,33,128,127,128,64,192,192,192,225,224,11,15,30,12,0, + 0,4,0,14,0,17,0,0,0,4,0,14,0,14,0,27, + 0,19,0,51,0,33,128,127,128,64,192,192,192,225,224,11, + 14,28,12,0,0,29,0,46,0,0,0,4,0,14,0,14, + 0,27,0,19,0,51,0,33,128,127,128,64,192,192,192,225, + 224,11,14,28,12,0,0,27,0,27,0,0,0,4,0,14, + 0,14,0,27,0,19,0,51,0,33,128,127,128,64,192,192, + 192,225,224,11,16,32,12,0,0,6,0,9,0,9,0,6, + 0,0,0,4,0,14,0,14,0,27,0,19,0,51,0,33, + 128,127,128,64,192,192,192,225,224,14,11,22,16,1,0,15, + 248,7,24,11,8,11,0,19,32,31,224,35,32,35,0,67, + 4,67,12,231,252,9,15,30,11,1,252,30,128,99,128,65, + 128,192,128,192,0,192,0,192,0,192,0,96,128,115,0,62, + 0,8,0,12,0,34,0,28,0,8,15,15,10,1,0,96, + 48,8,0,255,99,97,96,98,126,98,96,97,99,255,8,15, + 15,10,1,0,6,12,16,0,255,99,97,96,98,126,98,96, + 97,99,255,8,15,15,10,1,0,8,28,34,0,255,99,97, + 96,98,126,98,96,97,99,255,8,14,14,10,1,0,102,102, + 0,255,99,97,96,98,126,98,96,97,99,255,5,15,15,6, + 0,0,192,96,16,0,120,48,48,48,48,48,48,48,48,48, + 120,4,15,15,6,1,0,48,96,128,0,240,96,96,96,96, + 96,96,96,96,96,240,5,15,15,6,0,0,32,112,136,0, + 120,48,48,48,48,48,48,48,48,48,120,6,14,14,6,0, + 0,204,204,0,120,48,48,48,48,48,48,48,48,48,120,9, + 11,22,11,1,0,252,0,102,0,99,0,97,128,97,128,249, + 128,97,128,97,128,99,0,102,0,252,0,10,14,28,12,1, + 0,29,0,46,0,0,0,241,192,112,128,88,128,88,128,76, + 128,70,128,71,128,67,128,65,128,65,128,224,128,10,15,30, + 12,1,0,48,0,24,0,4,0,0,0,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,30, + 0,10,15,30,12,1,0,3,0,6,0,8,0,0,0,30, + 0,97,128,64,128,192,192,192,192,192,192,192,192,192,192,64, + 128,97,128,30,0,10,15,30,12,1,0,4,0,14,0,17, + 0,0,0,30,0,97,128,64,128,192,192,192,192,192,192,192, + 192,192,192,64,128,97,128,30,0,10,14,28,12,1,0,29, + 0,46,0,0,0,30,0,97,128,64,128,192,192,192,192,192, + 192,192,192,192,192,64,128,97,128,30,0,10,14,28,12,1, + 0,51,0,51,0,0,0,30,0,97,128,64,128,192,192,192, + 192,192,192,192,192,192,192,64,128,97,128,30,0,7,8,8, + 9,1,0,130,198,108,56,56,108,198,130,10,13,26,13,1, + 255,0,64,30,128,97,128,65,128,194,192,194,192,196,192,200, + 192,200,192,80,128,97,128,62,0,64,0,10,15,30,12,1, + 0,48,0,24,0,4,0,0,0,241,192,96,128,96,128,96, + 128,96,128,96,128,96,128,96,128,96,128,33,0,30,0,10, + 15,30,12,1,0,3,0,6,0,8,0,0,0,241,192,96, + 128,96,128,96,128,96,128,96,128,96,128,96,128,96,128,33, + 0,30,0,10,15,30,12,1,0,4,0,14,0,17,0,0, + 0,241,192,96,128,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,33,0,30,0,10,14,28,12,1,0,51,0,51, + 0,0,0,241,192,96,128,96,128,96,128,96,128,96,128,96, + 128,96,128,96,128,33,0,30,0,11,15,30,12,0,0,1, + 128,3,0,4,0,0,0,248,224,112,64,56,128,24,128,29, + 0,15,0,6,0,6,0,6,0,6,0,15,0,8,11,11, + 10,1,0,240,96,126,103,99,99,103,126,96,96,240,8,11, + 11,9,0,0,24,38,102,102,108,98,99,99,99,98,236,8, + 12,12,8,0,0,48,16,8,0,56,204,204,28,108,204,205, + 118,8,12,12,8,0,0,24,16,32,0,56,204,204,28,108, + 204,205,118,8,12,12,8,0,0,16,56,68,0,56,204,204, + 28,108,204,205,118,8,11,11,8,0,0,52,88,0,56,204, + 204,28,108,204,205,118,8,11,11,8,0,0,108,108,0,56, + 204,204,28,108,204,205,118,8,13,13,8,0,0,16,40,40, + 16,0,56,204,204,28,108,204,205,118,10,8,16,12,1,0, + 51,128,206,192,204,192,31,192,108,0,204,0,214,64,99,128, + 6,12,12,7,0,252,56,108,204,192,192,192,100,56,32,48, + 136,112,6,12,12,7,0,0,48,16,8,0,56,108,204,252, + 192,192,100,56,6,12,12,7,0,0,24,16,32,0,56,108, + 204,252,192,192,100,56,6,12,12,7,0,0,16,56,68,0, + 56,108,204,252,192,192,100,56,6,11,11,7,0,0,108,108, + 0,56,108,204,252,192,192,100,56,4,12,12,5,0,0,192, + 64,32,0,224,96,96,96,96,96,96,240,4,12,12,5,0, + 0,48,32,64,0,224,96,96,96,96,96,96,240,5,12,12, + 5,255,0,32,112,136,0,112,48,48,48,48,48,48,120,5, + 11,11,5,255,0,216,216,0,112,48,48,48,48,48,48,120, + 7,11,11,8,0,0,108,48,216,60,108,198,198,198,198,108, + 56,8,11,11,9,0,0,52,88,0,236,126,102,102,102,102, + 102,247,7,12,12,8,0,0,48,16,8,0,56,108,198,198, + 198,198,108,56,7,12,12,8,0,0,24,16,32,0,56,108, + 198,198,198,198,108,56,7,12,12,8,0,0,16,56,68,0, + 56,108,198,198,198,198,108,56,7,11,11,8,0,0,52,88, + 0,56,108,198,198,198,198,108,56,7,11,11,8,0,0,108, + 108,0,56,108,198,198,198,198,108,56,8,8,8,9,0,0, + 24,24,0,255,255,0,24,24,7,10,10,8,0,255,2,60, + 108,206,214,214,230,108,120,128,8,12,12,9,0,0,48,16, + 8,0,238,102,102,102,102,102,111,54,8,12,12,9,0,0, + 12,8,16,0,238,102,102,102,102,102,111,54,8,12,12,9, + 0,0,16,56,68,0,238,102,102,102,102,102,111,54,8,11, + 11,9,0,0,108,108,0,238,102,102,102,102,102,111,54,8, + 16,16,8,0,252,12,8,16,0,247,98,98,52,52,28,24, + 24,16,16,224,192,8,15,15,9,0,252,224,96,96,108,118, + 99,99,99,99,114,108,96,96,96,240,8,15,15,8,0,252, + 108,108,0,247,98,98,52,52,28,24,24,16,16,224,192}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--17-120-100-100-P-88-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=17 h=15 x= 2 y= 9 dx=17 dy= 0 ascent=12 len=33 + Font Bounding box w=19 h=27 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB12r[1834] U8G_SECTION(".progmem.u8g_font_timB12r") = { + 0,19,27,254,249,11,2,42,5,41,32,127,252,12,252,11, + 252,0,0,0,5,0,1,2,11,11,6,2,0,192,192,192, + 192,192,128,128,0,0,192,192,5,5,5,9,1,6,216,216, + 216,144,144,8,11,11,8,0,0,18,18,18,127,36,36,36, + 254,72,72,72,7,13,13,8,0,255,16,122,150,210,240,120, + 60,30,22,146,210,188,16,12,12,24,16,2,0,48,128,111, + 0,201,0,201,0,202,0,210,96,100,208,9,144,9,144,17, + 144,17,160,32,192,10,11,22,14,2,0,28,0,38,0,38, + 0,52,0,57,192,120,128,156,128,141,0,198,64,231,192,123, + 128,2,5,5,5,2,6,192,192,192,128,128,4,14,14,6, + 1,253,16,32,96,64,192,192,192,192,192,192,64,96,32,16, + 4,14,14,6,0,253,128,64,96,32,48,48,48,48,48,48, + 32,96,64,128,5,7,7,8,1,4,32,168,248,112,248,168, + 32,7,8,8,9,1,0,16,16,16,254,254,16,16,16,2, + 5,5,4,1,253,192,192,64,64,128,4,2,2,5,0,3, + 240,240,2,2,2,4,1,0,192,192,4,11,11,5,0,0, + 16,48,32,32,96,64,64,64,192,128,128,6,11,11,8,1, + 0,48,72,204,204,204,204,204,204,204,72,48,6,11,11,8, + 1,0,16,240,48,48,48,48,48,48,48,48,252,7,11,11, + 8,0,0,56,124,156,12,12,8,24,16,34,124,252,7,11, + 11,8,0,0,56,124,140,8,16,60,14,6,198,204,120,7, + 11,11,8,0,0,4,12,28,44,44,76,140,254,254,12,12, + 8,11,11,8,0,0,31,62,32,56,124,14,6,6,198,204, + 112,6,11,11,8,1,0,12,48,96,96,240,204,204,204,204, + 72,48,7,11,11,8,0,0,126,126,132,4,12,8,8,24, + 16,48,32,7,11,11,8,0,0,56,68,198,228,120,60,78, + 198,198,68,56,6,11,11,8,1,0,48,72,204,204,204,204, + 124,24,24,48,192,2,7,7,5,1,0,192,192,0,0,0, + 192,192,2,10,10,5,1,253,192,192,0,0,0,192,192,64, + 64,128,8,8,8,9,0,0,3,14,56,192,192,56,14,3, + 7,5,5,9,1,2,254,254,0,254,254,8,8,8,9,0, + 0,192,112,28,3,3,28,112,192,6,11,11,8,1,0,56, + 204,204,12,12,8,16,32,0,96,96,13,13,26,16,1,254, + 7,128,28,96,48,16,103,80,204,200,216,200,216,136,217,144, + 217,176,78,224,32,0,24,96,7,128,11,11,22,12,0,0, + 4,0,14,0,14,0,27,0,19,0,51,0,33,128,127,128, + 64,192,192,192,225,224,9,11,22,10,1,0,252,0,102,0, + 99,0,99,0,102,0,126,0,99,0,97,128,97,128,99,0, + 254,0,9,11,22,11,1,0,30,128,99,128,65,128,192,128, + 192,0,192,0,192,0,192,0,96,128,115,0,62,0,9,11, + 22,11,1,0,252,0,102,0,99,0,97,128,97,128,97,128, + 97,128,97,128,99,0,102,0,252,0,8,11,11,10,1,0, + 255,99,97,96,98,126,98,96,97,99,255,8,11,11,10,1, + 0,255,99,97,96,98,126,98,96,96,96,248,10,11,22,12, + 1,0,30,128,99,128,65,128,192,128,192,0,192,0,199,192, + 193,128,193,128,97,128,63,0,10,11,22,12,1,0,243,192, + 97,128,97,128,97,128,97,128,127,128,97,128,97,128,97,128, + 97,128,243,192,4,11,11,6,1,0,240,96,96,96,96,96, + 96,96,96,96,240,6,13,13,8,1,254,60,24,24,24,24, + 24,24,24,24,24,216,208,96,11,11,22,13,1,0,251,192, + 97,0,98,0,100,0,104,0,120,0,108,0,102,0,99,0, + 97,128,251,224,9,11,22,11,1,0,240,0,96,0,96,0, + 96,0,96,0,96,0,96,0,96,128,96,128,97,128,255,128, + 14,11,22,15,0,0,224,28,112,24,112,56,120,56,88,88, + 76,88,76,152,70,152,71,24,67,24,226,60,10,11,22,12, + 1,0,241,192,112,128,88,128,88,128,76,128,70,128,71,128, + 67,128,65,128,65,128,224,128,10,11,22,12,1,0,30,0, + 97,128,64,128,192,192,192,192,192,192,192,192,192,192,64,128, + 97,128,30,0,8,11,11,10,1,0,254,103,99,99,102,124, + 96,96,96,96,240,10,14,28,12,1,253,30,0,97,128,64, + 128,192,192,192,192,192,192,192,192,192,192,64,128,97,128,63, + 0,14,0,6,0,1,128,10,11,22,12,1,0,254,0,103, + 0,99,0,99,0,102,0,124,0,108,0,102,0,99,0,97, + 128,243,192,8,11,11,9,0,0,61,67,193,224,120,60,14, + 7,131,194,188,10,11,22,11,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,30,0, + 10,11,22,12,1,0,241,192,96,128,96,128,96,128,96,128, + 96,128,96,128,96,128,96,128,33,0,30,0,11,11,22,12, + 0,0,248,224,48,64,48,64,24,128,24,128,13,0,13,0, + 7,0,6,0,2,0,2,0,17,11,33,17,0,0,251,239, + 128,112,195,0,48,194,0,56,226,0,25,230,0,29,100,0, + 13,124,0,15,56,0,6,56,0,6,16,0,2,16,0,10, + 11,22,12,1,0,251,192,113,0,58,0,58,0,28,0,14, + 0,30,0,23,0,35,0,67,128,231,192,11,11,22,12,0, + 0,248,224,112,64,56,128,24,128,29,0,15,0,6,0,6, + 0,6,0,6,0,15,0,10,11,22,11,0,0,255,192,193, + 192,131,128,7,0,14,0,14,0,28,0,56,0,112,64,240, + 192,255,192,3,14,14,6,1,253,224,192,192,192,192,192,192, + 192,192,192,192,192,192,224,4,11,11,5,0,0,128,192,64, + 64,96,32,32,32,48,16,16,3,14,14,6,1,253,224,96, + 96,96,96,96,96,96,96,96,96,96,96,224,7,7,7,9, + 1,4,16,56,40,108,68,198,130,8,1,1,8,0,252,255, + 3,3,3,6,2,9,192,64,32,8,8,8,8,0,0,56, + 204,204,28,108,204,205,118,8,11,11,9,0,0,224,96,96, + 108,118,99,99,99,99,118,236,6,8,8,7,0,0,56,108, + 204,192,192,192,100,56,8,11,11,9,0,0,14,6,6,54, + 110,198,198,198,198,78,55,6,8,8,7,0,0,56,108,204, + 252,192,192,100,56,6,11,11,6,0,0,24,108,96,240,96, + 96,96,96,96,96,240,7,12,12,8,0,252,50,78,204,204, + 200,112,64,252,126,130,132,120,8,11,11,9,0,0,224,96, + 96,108,118,102,102,102,102,102,239,4,11,11,5,0,0,96, + 96,0,224,96,96,96,96,96,96,240,5,15,15,5,254,252, + 24,24,0,56,24,24,24,24,24,24,24,24,216,208,96,9, + 11,22,9,0,0,224,0,96,0,96,0,111,0,100,0,104, + 0,120,0,124,0,110,0,103,0,247,128,4,11,11,5,0, + 0,224,96,96,96,96,96,96,96,96,96,240,12,8,16,13, + 0,0,237,192,119,96,102,96,102,96,102,96,102,96,102,96, + 246,240,8,8,8,9,0,0,236,126,102,102,102,102,102,247, + 7,8,8,8,0,0,56,108,198,198,198,198,108,56,8,12, + 12,9,0,252,236,118,99,99,99,99,118,108,96,96,96,240, + 8,12,12,9,0,252,50,110,198,198,198,198,110,54,6,6, + 6,15,6,8,8,7,0,0,236,124,96,96,96,96,96,240, + 5,8,8,6,0,0,120,200,224,112,56,152,216,176,5,11, + 11,6,0,0,32,32,96,240,96,96,96,96,96,104,48,8, + 8,8,9,0,0,238,102,102,102,102,102,111,54,8,8,8, + 8,0,0,247,98,98,100,52,56,24,16,12,8,16,12,0, + 0,239,112,102,32,102,32,119,64,55,64,57,128,25,128,17, + 0,7,8,8,8,0,0,246,116,56,56,24,60,76,238,8, + 12,12,8,0,252,247,98,98,52,52,28,24,24,16,16,224, + 192,7,8,8,7,0,0,254,140,152,24,48,114,98,254,4, + 14,14,7,1,253,48,96,96,96,96,64,128,64,96,96,96, + 96,96,48,1,14,14,4,1,253,128,128,128,128,128,128,128, + 128,128,128,128,128,128,128,4,14,14,7,1,253,192,96,96, + 96,96,32,16,32,96,96,96,96,96,192,9,4,8,9,0, + 4,48,0,120,128,159,0,14,0,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=11 dx=19 dy= 0 ascent=17 len=39 + Font Bounding box w=22 h=28 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =17 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB14[4851] U8G_SECTION(".progmem.u8g_font_timB14") = { + 0,22,28,254,249,13,2,178,6,78,32,255,252,17,252,13, + 252,0,0,0,5,0,1,3,13,13,6,1,0,64,224,224, + 224,224,224,224,64,64,0,224,224,224,6,6,6,10,2,7, + 204,204,204,204,136,136,10,12,24,9,0,0,25,128,25,128, + 25,128,127,192,127,192,51,0,51,0,255,128,255,128,102,0, + 102,0,102,0,8,16,16,9,0,254,24,126,219,219,216,248, + 124,62,31,31,27,219,219,126,24,24,14,13,26,18,1,0, + 60,24,119,240,226,96,226,64,228,192,253,128,115,120,6,236, + 6,196,13,196,25,200,49,248,48,224,13,13,26,16,2,0, + 30,0,51,0,51,0,51,0,58,0,28,240,60,96,94,64, + 207,128,199,128,227,192,255,248,120,240,2,6,6,5,1,7, + 192,192,192,192,128,128,5,17,17,6,1,252,8,16,48,96, + 96,224,192,192,192,192,192,224,96,96,48,16,8,5,17,17, + 6,0,252,128,64,96,48,48,56,24,24,24,24,24,56,48, + 32,96,64,128,8,9,9,9,0,4,24,24,219,255,60,255, + 219,24,24,10,10,20,11,0,0,12,0,12,0,12,0,12, + 0,255,192,255,192,12,0,12,0,12,0,12,0,4,6,6, + 5,0,253,112,112,112,48,96,192,5,3,3,6,0,4,248, + 248,248,3,3,3,5,1,0,224,224,224,5,13,13,6,0, + 0,24,24,24,48,48,48,32,96,96,96,192,192,192,8,13, + 13,9,0,0,60,102,103,231,231,231,231,231,231,231,102,102, + 60,8,13,13,9,0,0,28,60,252,28,28,28,28,28,28, + 28,28,28,127,8,13,13,9,0,0,60,126,207,135,7,7, + 6,12,24,49,99,255,255,9,13,26,9,0,0,60,0,126, + 0,143,0,7,0,14,0,28,0,62,0,15,0,7,128,3, + 128,195,0,230,0,124,0,8,13,13,9,0,0,14,30,30, + 46,46,78,206,142,255,255,14,14,14,9,13,26,9,0,0, + 63,0,63,0,62,0,64,0,120,0,126,0,63,0,7,128, + 3,128,3,128,195,0,230,0,252,0,8,13,13,9,0,0, + 7,28,56,112,96,252,230,231,231,231,231,102,60,8,13,13, + 9,0,0,255,255,254,134,12,12,12,24,24,56,48,48,112, + 8,13,13,9,0,0,60,102,227,227,246,124,60,126,207,199, + 195,231,126,8,13,13,9,0,0,60,102,231,231,231,231,103, + 63,7,6,14,60,240,3,9,9,5,1,0,224,224,224,0, + 0,0,224,224,224,4,12,12,5,0,253,112,112,112,0,0, + 0,112,112,112,48,96,192,9,9,18,11,1,0,3,128,15, + 0,60,0,240,0,192,0,240,0,60,0,15,0,3,128,9, + 6,12,11,1,2,255,128,255,128,0,0,0,0,255,128,255, + 128,9,9,18,11,1,0,224,0,120,0,30,0,7,128,1, + 128,7,128,30,0,120,0,224,0,7,13,13,9,1,0,124, + 206,238,238,78,12,24,16,16,0,56,56,56,15,16,32,17, + 1,253,3,224,15,56,56,12,48,4,115,182,103,118,231,118, + 238,102,238,102,238,236,239,252,103,184,112,0,56,0,30,0, + 7,240,14,13,26,14,0,0,3,0,3,128,7,128,5,192, + 13,192,8,192,24,224,16,96,31,240,48,112,32,56,96,56, + 248,252,10,13,26,13,1,0,254,0,115,128,113,192,113,192, + 113,192,115,128,126,0,115,128,113,192,113,192,113,192,115,128, + 255,0,12,13,26,14,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,0,224,0,224,0,112,0,112,48,60,224, + 15,128,12,13,26,14,1,0,255,0,113,192,112,224,112,96, + 112,112,112,112,112,112,112,112,112,112,112,96,112,224,113,192, + 255,0,10,13,26,13,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,64,112,192, + 255,192,10,13,26,12,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,0,112,0, + 248,0,13,13,26,15,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,248,224,112,224,112,112,112,112,112,56,240, + 15,192,13,13,26,15,1,0,248,248,112,112,112,112,112,112, + 112,112,112,112,127,240,112,112,112,112,112,112,112,112,112,112, + 249,248,5,13,13,7,1,0,248,112,112,112,112,112,112,112, + 112,112,112,112,248,8,15,15,9,0,254,31,14,14,14,14, + 14,14,14,14,14,14,14,238,236,120,12,13,26,15,2,0, + 249,240,112,192,113,128,115,0,118,0,124,0,124,0,126,0, + 119,0,119,128,115,192,113,224,248,240,10,13,26,13,2,0, + 248,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,64,112,192,255,192,15,13,26,18,2,0, + 240,30,112,28,120,60,120,60,124,92,92,92,94,220,78,156, + 79,156,71,28,71,28,67,28,226,62,12,13,26,14,1,0, + 240,112,120,32,120,32,124,32,94,32,78,32,79,32,71,160, + 67,160,67,224,65,224,64,224,224,224,13,13,26,15,1,0, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,10,13,26,12,1,0, + 255,0,115,128,113,192,113,192,113,192,115,128,127,0,112,0, + 112,0,112,0,112,0,112,0,248,0,13,17,34,15,1,252, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,15,0,7,128,3,224, + 0,248,12,13,26,14,1,0,255,0,115,128,113,192,113,192, + 113,192,115,128,127,0,119,0,115,128,113,192,113,192,112,224, + 248,240,9,13,26,11,1,0,30,128,99,128,225,128,224,0, + 248,0,124,0,63,0,15,128,7,128,3,128,195,128,231,0, + 188,0,11,13,26,13,1,0,255,224,206,96,142,32,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,12,13,26,14,1,0,248,240,112,32,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,96,56,192, + 31,128,14,13,26,14,0,0,252,124,120,24,56,16,60,48, + 28,32,30,96,30,64,14,192,15,128,7,128,7,0,3,0, + 2,0,18,13,39,19,1,0,253,247,192,121,225,128,56,225, + 0,60,227,0,60,226,0,28,114,0,30,118,0,14,116,0, + 14,188,0,15,60,0,7,60,0,6,24,0,6,24,0,14, + 13,26,14,0,0,248,120,120,48,60,96,28,192,15,128,7, + 0,7,128,7,192,13,192,24,224,48,112,96,120,240,252,13, + 13,26,14,1,0,252,120,120,48,56,96,60,64,30,192,14, + 128,15,128,7,0,7,0,7,0,7,0,7,0,31,192,10, + 13,26,13,2,0,255,192,195,192,131,128,7,128,15,0,14, + 0,30,0,60,0,56,0,120,0,240,64,224,192,255,192,4, + 16,16,6,1,253,240,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,240,5,13,13,5,0,0,192,192,192,96,96, + 96,32,48,48,48,24,24,24,4,16,16,6,1,253,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,8,7, + 7,11,1,6,24,24,60,36,102,195,195,9,2,4,9,0, + 252,255,128,255,128,5,3,3,6,0,10,224,112,24,8,9, + 9,9,0,0,124,206,206,30,110,206,206,254,119,9,13,26, + 9,255,0,240,0,112,0,112,0,112,0,118,0,127,0,115, + 128,115,128,115,128,115,128,115,128,115,0,110,0,7,9,9, + 8,0,0,62,118,230,224,224,224,224,118,60,9,13,26,10, + 0,0,15,0,7,0,7,0,7,0,55,0,127,0,231,0, + 231,0,231,0,231,0,231,0,119,0,59,128,7,9,9,8, + 0,0,60,118,230,254,224,224,224,118,60,7,13,13,6,0, + 0,62,118,118,112,252,112,112,112,112,112,112,112,248,9,13, + 26,9,0,252,63,128,231,0,231,0,231,0,230,0,120,0, + 96,0,254,0,255,128,227,128,193,128,227,0,126,0,10,13, + 26,11,0,0,240,0,112,0,112,0,112,0,119,0,127,128, + 115,128,115,128,115,128,115,128,115,128,115,128,251,192,5,13, + 13,5,0,0,96,96,96,0,240,112,112,112,112,112,112,112, + 248,6,17,17,5,254,252,24,24,24,0,60,28,28,28,28, + 28,28,28,28,28,220,216,112,10,13,26,10,0,0,240,0, + 112,0,112,0,112,0,115,128,115,0,118,0,124,0,124,0, + 126,0,119,0,115,128,247,192,5,13,13,6,0,0,240,112, + 112,112,112,112,112,112,112,112,112,112,248,15,9,18,16,0, + 0,247,56,123,220,115,156,115,156,115,156,115,156,115,156,115, + 156,251,222,10,9,18,11,0,0,231,0,127,128,115,128,115, + 128,115,128,115,128,115,128,115,128,251,192,8,9,9,9,0, + 0,60,102,231,231,231,231,231,102,60,9,13,26,10,0,252, + 230,0,127,0,115,128,115,128,115,128,115,128,115,128,123,0, + 118,0,112,0,112,0,112,0,248,0,9,13,26,9,0,252, + 57,0,119,0,231,0,231,0,231,0,231,0,231,0,127,0, + 55,0,7,0,7,0,7,0,15,128,7,9,9,8,0,0, + 238,118,112,112,112,112,112,112,248,6,9,9,7,0,0,124, + 204,228,240,120,60,156,204,248,6,11,11,7,0,0,16,48, + 252,112,112,112,112,112,112,116,56,10,9,18,11,0,0,247, + 128,115,128,115,128,115,128,115,128,115,128,115,128,127,128,61, + 192,10,9,18,9,255,0,251,192,113,128,121,0,59,0,59, + 0,30,0,30,0,12,0,12,0,14,9,18,12,255,0,247, + 156,119,24,115,144,59,176,57,160,29,224,31,224,12,192,12, + 192,9,9,18,9,0,0,243,128,115,0,122,0,60,0,28, + 0,30,0,55,0,103,128,227,128,10,13,26,9,255,252,251, + 192,113,128,121,0,59,0,58,0,30,0,30,0,12,0,12, + 0,12,0,200,0,216,0,240,0,7,9,9,8,0,0,254, + 206,142,28,56,112,114,230,254,7,17,17,8,0,252,30,56, + 48,48,48,48,48,96,192,96,48,48,48,48,48,56,30,2, + 16,16,4,1,253,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,7,17,17,8,1,252,240,56,24,24,24, + 24,24,12,6,12,24,24,24,24,24,56,240,8,4,4,10, + 1,3,112,249,159,14,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,0,0,5,0,1,3,13,13, + 6,1,252,224,224,224,0,64,64,224,224,224,224,224,224,64, + 8,13,13,9,0,254,1,3,62,119,239,236,216,216,240,115, + 62,96,64,14,13,26,9,0,0,31,0,59,0,59,0,56, + 0,56,0,56,0,254,0,56,4,56,0,48,0,240,128,191, + 128,239,0,8,8,8,9,0,2,219,255,102,195,195,102,255, + 219,9,13,26,9,0,0,251,128,113,0,115,0,58,0,58, + 0,28,0,127,0,28,0,127,0,28,0,28,0,28,0,127, + 0,2,16,16,4,1,253,192,192,192,192,192,192,0,0,0, + 0,192,192,192,192,192,192,7,16,16,9,1,253,60,102,70, + 96,48,120,220,206,230,118,60,28,12,196,204,120,6,2,2, + 6,0,10,204,204,13,13,26,15,1,0,15,128,56,224,96, + 48,79,208,220,216,152,72,152,8,152,8,220,216,79,144,96, + 48,56,224,15,128,6,8,8,6,0,5,112,216,56,216,216, + 236,0,252,9,7,14,11,1,1,25,128,51,0,102,0,204, + 0,102,0,51,0,25,128,9,6,12,11,1,1,255,128,255, + 128,1,128,1,128,1,128,1,128,5,3,3,6,0,4,248, + 248,248,13,13,26,15,1,0,15,128,56,224,96,48,95,144, + 204,216,140,200,143,136,141,136,204,216,94,240,96,48,56,224, + 15,128,6,1,1,6,0,11,252,6,5,5,7,0,8,120, + 204,204,204,120,8,11,11,11,1,0,24,24,24,255,255,24, + 24,24,0,255,255,5,8,8,5,0,5,112,152,24,48,32, + 64,248,240,5,8,8,5,0,5,112,152,24,112,56,24,152, + 112,5,3,3,6,0,10,56,112,192,10,13,26,11,0,252, + 247,128,115,128,115,128,115,128,115,128,115,128,115,128,127,128, + 125,192,96,0,224,0,240,0,96,0,9,17,34,10,0,252, + 63,128,127,128,251,0,251,0,251,0,251,0,123,0,59,0, + 27,0,27,0,27,0,27,0,27,0,27,0,27,0,27,0, + 27,0,3,3,3,5,1,4,224,224,224,5,4,4,6,1, + 252,32,24,152,112,6,8,8,5,0,5,48,240,48,48,48, + 48,48,252,6,8,8,6,0,5,120,204,204,204,204,120,0, + 252,9,7,14,11,1,1,204,0,102,0,51,0,25,128,51, + 0,102,0,204,0,13,13,26,13,0,0,48,96,240,192,48, + 192,49,128,49,128,51,16,51,48,254,112,6,176,13,176,13, + 248,24,48,24,48,13,13,26,13,0,0,48,96,240,192,48, + 192,49,128,49,128,51,112,51,152,254,24,6,48,12,32,12, + 64,24,248,24,240,13,13,26,13,0,0,112,96,152,192,24, + 192,113,128,57,128,27,16,155,48,118,112,6,176,13,176,13, + 248,24,48,24,48,7,13,13,9,1,252,56,56,56,0,16, + 16,48,96,228,238,238,230,124,14,17,34,14,0,0,14,0, + 7,0,1,128,0,0,3,0,3,128,7,128,5,192,13,192, + 8,192,24,224,16,96,31,240,48,112,32,56,96,56,248,252, + 14,17,34,14,0,0,3,128,7,0,12,0,0,0,3,0, + 3,128,7,128,5,192,13,192,8,192,24,224,16,96,31,240, + 48,112,32,56,96,56,248,252,14,17,34,14,0,0,3,0, + 7,128,12,192,0,0,3,0,3,128,7,128,5,192,13,192, + 8,192,24,224,16,96,31,240,48,112,32,56,96,56,248,252, + 14,17,34,14,0,0,6,64,15,192,9,128,0,0,3,0, + 3,128,7,128,5,192,13,192,8,192,24,224,16,96,31,240, + 48,112,32,56,96,56,248,252,14,16,32,14,0,0,12,192, + 12,192,0,0,3,0,3,128,7,128,5,192,13,192,8,192, + 24,224,16,96,31,240,48,112,32,56,96,56,248,252,14,17, + 34,14,0,0,7,0,13,128,13,128,7,0,3,0,3,128, + 7,128,5,192,13,192,8,192,24,224,16,96,31,240,48,112, + 32,56,96,56,248,252,17,13,39,19,0,0,7,255,128,3, + 225,128,2,224,128,6,224,0,4,224,0,12,226,0,8,254, + 0,31,226,0,16,224,0,48,224,0,32,224,128,96,225,128, + 249,255,128,12,17,34,14,1,252,15,144,56,240,112,112,112, + 48,224,0,224,0,224,0,224,0,224,0,112,0,112,48,60, + 224,15,128,4,0,3,0,19,0,14,0,10,17,34,13,2, + 0,56,0,28,0,6,0,0,0,255,192,112,192,112,64,112, + 0,112,0,113,0,127,0,113,0,112,0,112,0,112,64,112, + 192,255,192,10,17,34,13,2,0,14,0,28,0,48,0,0, + 0,255,192,112,192,112,64,112,0,112,0,113,0,127,0,113, + 0,112,0,112,0,112,64,112,192,255,192,10,17,34,13,2, + 0,12,0,30,0,51,0,0,0,255,192,112,192,112,64,112, + 0,112,0,113,0,127,0,113,0,112,0,112,0,112,64,112, + 192,255,192,10,16,32,13,2,0,51,0,51,0,0,0,255, + 192,112,192,112,64,112,0,112,0,113,0,127,0,113,0,112, + 0,112,0,112,64,112,192,255,192,5,17,17,7,1,0,224, + 112,24,0,248,112,112,112,112,112,112,112,112,112,112,112,248, + 5,17,17,7,1,0,56,112,192,0,248,112,112,112,112,112, + 112,112,112,112,112,112,248,6,17,17,7,1,0,48,120,204, + 0,248,112,112,112,112,112,112,112,112,112,112,112,248,6,16, + 16,7,1,0,204,204,0,248,112,112,112,112,112,112,112,112, + 112,112,112,248,13,13,26,14,0,0,127,128,56,224,56,112, + 56,48,56,56,56,56,254,56,56,56,56,56,56,48,56,112, + 56,224,127,128,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,240,112,120,32,120,32,124,32,94,32,78,32,79,32, + 71,160,67,160,67,224,65,224,64,224,224,224,13,17,34,15, + 1,0,14,0,7,0,1,128,0,0,15,128,56,224,112,112, + 112,112,224,56,224,56,224,56,224,56,224,56,112,112,112,112, + 56,224,15,128,13,17,34,15,1,0,3,128,7,0,12,0, + 0,0,15,128,56,224,112,112,112,112,224,56,224,56,224,56, + 224,56,224,56,112,112,112,112,56,224,15,128,13,17,34,15, + 1,0,6,0,15,0,25,128,0,0,15,128,56,224,112,112, + 112,112,224,56,224,56,224,56,224,56,224,56,112,112,112,112, + 56,224,15,128,13,17,34,15,1,0,12,128,31,128,19,0, + 0,0,15,128,56,224,112,112,112,112,224,56,224,56,224,56, + 224,56,224,56,112,112,112,112,56,224,15,128,13,16,32,15, + 1,0,25,128,25,128,0,0,15,128,56,224,112,112,112,112, + 224,56,224,56,224,56,224,56,224,56,112,112,112,112,56,224, + 15,128,9,8,16,11,1,1,193,128,99,0,54,0,28,0, + 28,0,54,0,99,0,193,128,13,15,30,15,1,255,0,96, + 15,192,56,224,112,176,113,176,225,56,227,56,226,56,230,56, + 228,56,108,112,104,112,56,224,31,128,48,0,12,17,34,14, + 1,0,28,0,14,0,3,0,0,0,248,240,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,32,112,96, + 56,192,31,128,12,17,34,14,1,0,1,192,3,128,6,0, + 0,0,248,240,112,32,112,32,112,32,112,32,112,32,112,32, + 112,32,112,32,112,32,112,96,56,192,31,128,12,17,34,14, + 1,0,6,0,15,0,25,128,0,0,248,240,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,32,112,96, + 56,192,31,128,12,16,32,14,1,0,25,128,25,128,0,0, + 248,240,112,32,112,32,112,32,112,32,112,32,112,32,112,32, + 112,32,112,32,112,96,56,192,31,128,13,17,34,14,1,0, + 0,224,1,192,3,0,0,0,252,120,120,48,56,96,60,64, + 30,192,14,128,15,128,7,0,7,0,7,0,7,0,7,0, + 31,192,10,13,26,11,1,0,248,0,112,0,112,0,127,0, + 115,128,113,192,113,192,113,192,115,128,127,0,112,0,112,0, + 248,0,9,13,26,10,0,0,30,0,59,0,115,128,115,128, + 115,128,119,0,114,0,115,0,115,128,115,128,115,128,115,128, + 247,0,8,13,13,9,0,0,112,56,12,0,124,206,206,30, + 110,206,206,254,119,8,13,13,9,0,0,14,28,48,0,124, + 206,206,30,110,206,206,254,119,8,13,13,9,0,0,24,60, + 102,0,124,206,206,30,110,206,206,254,119,8,13,13,9,0, + 0,50,126,76,0,124,206,206,30,110,206,206,254,119,8,12, + 12,9,0,0,102,102,0,124,206,206,30,110,206,206,254,119, + 8,13,13,9,0,0,56,108,108,56,124,206,206,30,110,206, + 206,254,119,12,9,18,13,0,0,125,224,231,176,199,48,15, + 240,127,0,231,0,199,0,239,176,121,224,7,13,13,8,0, + 252,62,118,230,224,224,224,224,118,60,16,12,76,56,7,13, + 13,8,0,0,112,56,12,0,60,118,230,254,224,224,224,118, + 60,8,13,13,8,0,0,7,14,24,0,60,118,230,254,224, + 224,224,118,60,7,13,13,8,0,0,24,60,102,0,60,118, + 230,254,224,224,224,118,60,7,12,12,8,0,0,102,102,0, + 60,118,230,254,224,224,224,118,60,5,13,13,5,0,0,224, + 112,24,0,240,112,112,112,112,112,112,112,248,5,13,13,5, + 0,0,56,112,192,0,240,112,112,112,112,112,112,112,248,6, + 13,13,5,0,0,48,120,204,0,240,112,112,112,112,112,112, + 112,248,6,12,12,5,0,0,204,204,0,240,112,112,112,112, + 112,112,112,248,8,13,13,9,0,0,96,54,56,76,62,102, + 231,231,231,231,231,102,60,10,13,26,11,0,0,25,0,63, + 0,38,0,0,0,231,0,127,128,115,128,115,128,115,128,115, + 128,115,128,115,128,251,192,8,13,13,9,0,0,112,56,12, + 0,60,102,231,231,231,231,231,102,60,8,13,13,9,0,0, + 7,14,24,0,60,102,231,231,231,231,231,102,60,8,13,13, + 9,0,0,24,60,102,0,60,102,231,231,231,231,231,102,60, + 8,13,13,9,0,0,50,126,76,0,60,102,231,231,231,231, + 231,102,60,8,12,12,9,0,0,102,102,0,60,102,231,231, + 231,231,231,102,60,8,8,8,11,1,1,24,24,0,255,255, + 0,24,24,10,11,22,9,255,255,0,64,30,128,51,0,115, + 128,115,128,119,128,123,128,113,128,51,0,94,0,128,0,10, + 13,26,11,0,0,56,0,28,0,6,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 13,26,11,0,0,14,0,28,0,48,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 13,26,11,0,0,12,0,30,0,51,0,0,0,247,128,115, + 128,115,128,115,128,115,128,115,128,115,128,127,128,61,192,10, + 12,24,11,0,0,51,0,51,0,0,0,247,128,115,128,115, + 128,115,128,115,128,115,128,115,128,127,128,61,192,10,17,34, + 9,255,252,3,128,7,0,12,0,0,0,251,192,113,128,121, + 0,59,0,58,0,30,0,30,0,12,0,12,0,12,0,8, + 0,216,0,240,0,9,17,34,10,0,252,240,0,112,0,112, + 0,112,0,118,0,127,0,115,128,115,128,115,128,115,128,115, + 128,123,0,118,0,112,0,112,0,112,0,248,0,10,16,32, + 9,255,252,51,0,51,0,0,0,251,192,113,128,121,0,59, + 0,58,0,30,0,30,0,12,0,12,0,12,0,8,0,216, + 0,240,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--20-140-100-100-P-100-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=10 dx=19 dy= 0 ascent=14 len=39 + Font Bounding box w=22 h=28 x=-2 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB14r[2295] U8G_SECTION(".progmem.u8g_font_timB14r") = { + 0,22,28,254,249,13,2,178,6,78,32,127,252,14,252,13, + 252,0,0,0,5,0,1,3,13,13,6,1,0,64,224,224, + 224,224,224,224,64,64,0,224,224,224,6,6,6,10,2,7, + 204,204,204,204,136,136,10,12,24,9,0,0,25,128,25,128, + 25,128,127,192,127,192,51,0,51,0,255,128,255,128,102,0, + 102,0,102,0,8,16,16,9,0,254,24,126,219,219,216,248, + 124,62,31,31,27,219,219,126,24,24,14,13,26,18,1,0, + 60,24,119,240,226,96,226,64,228,192,253,128,115,120,6,236, + 6,196,13,196,25,200,49,248,48,224,13,13,26,16,2,0, + 30,0,51,0,51,0,51,0,58,0,28,240,60,96,94,64, + 207,128,199,128,227,192,255,248,120,240,2,6,6,5,1,7, + 192,192,192,192,128,128,5,17,17,6,1,252,8,16,48,96, + 96,224,192,192,192,192,192,224,96,96,48,16,8,5,17,17, + 6,0,252,128,64,96,48,48,56,24,24,24,24,24,56,48, + 32,96,64,128,8,9,9,9,0,4,24,24,219,255,60,255, + 219,24,24,10,10,20,11,0,0,12,0,12,0,12,0,12, + 0,255,192,255,192,12,0,12,0,12,0,12,0,4,6,6, + 5,0,253,112,112,112,48,96,192,5,3,3,6,0,4,248, + 248,248,3,3,3,5,1,0,224,224,224,5,13,13,6,0, + 0,24,24,24,48,48,48,32,96,96,96,192,192,192,8,13, + 13,9,0,0,60,102,103,231,231,231,231,231,231,231,102,102, + 60,8,13,13,9,0,0,28,60,252,28,28,28,28,28,28, + 28,28,28,127,8,13,13,9,0,0,60,126,207,135,7,7, + 6,12,24,49,99,255,255,9,13,26,9,0,0,60,0,126, + 0,143,0,7,0,14,0,28,0,62,0,15,0,7,128,3, + 128,195,0,230,0,124,0,8,13,13,9,0,0,14,30,30, + 46,46,78,206,142,255,255,14,14,14,9,13,26,9,0,0, + 63,0,63,0,62,0,64,0,120,0,126,0,63,0,7,128, + 3,128,3,128,195,0,230,0,252,0,8,13,13,9,0,0, + 7,28,56,112,96,252,230,231,231,231,231,102,60,8,13,13, + 9,0,0,255,255,254,134,12,12,12,24,24,56,48,48,112, + 8,13,13,9,0,0,60,102,227,227,246,124,60,126,207,199, + 195,231,126,8,13,13,9,0,0,60,102,231,231,231,231,103, + 63,7,6,14,60,240,3,9,9,5,1,0,224,224,224,0, + 0,0,224,224,224,4,12,12,5,0,253,112,112,112,0,0, + 0,112,112,112,48,96,192,9,9,18,11,1,0,3,128,15, + 0,60,0,240,0,192,0,240,0,60,0,15,0,3,128,9, + 6,12,11,1,2,255,128,255,128,0,0,0,0,255,128,255, + 128,9,9,18,11,1,0,224,0,120,0,30,0,7,128,1, + 128,7,128,30,0,120,0,224,0,7,13,13,9,1,0,124, + 206,238,238,78,12,24,16,16,0,56,56,56,15,16,32,17, + 1,253,3,224,15,56,56,12,48,4,115,182,103,118,231,118, + 238,102,238,102,238,236,239,252,103,184,112,0,56,0,30,0, + 7,240,14,13,26,14,0,0,3,0,3,128,7,128,5,192, + 13,192,8,192,24,224,16,96,31,240,48,112,32,56,96,56, + 248,252,10,13,26,13,1,0,254,0,115,128,113,192,113,192, + 113,192,115,128,126,0,115,128,113,192,113,192,113,192,115,128, + 255,0,12,13,26,14,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,0,224,0,224,0,112,0,112,48,60,224, + 15,128,12,13,26,14,1,0,255,0,113,192,112,224,112,96, + 112,112,112,112,112,112,112,112,112,112,112,96,112,224,113,192, + 255,0,10,13,26,13,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,64,112,192, + 255,192,10,13,26,12,2,0,255,192,112,192,112,64,112,0, + 112,0,113,0,127,0,113,0,112,0,112,0,112,0,112,0, + 248,0,13,13,26,15,1,0,15,144,56,240,112,112,112,48, + 224,0,224,0,224,248,224,112,224,112,112,112,112,112,56,240, + 15,192,13,13,26,15,1,0,248,248,112,112,112,112,112,112, + 112,112,112,112,127,240,112,112,112,112,112,112,112,112,112,112, + 249,248,5,13,13,7,1,0,248,112,112,112,112,112,112,112, + 112,112,112,112,248,8,15,15,9,0,254,31,14,14,14,14, + 14,14,14,14,14,14,14,238,236,120,12,13,26,15,2,0, + 249,240,112,192,113,128,115,0,118,0,124,0,124,0,126,0, + 119,0,119,128,115,192,113,224,248,240,10,13,26,13,2,0, + 248,0,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,112,0,112,64,112,192,255,192,15,13,26,18,2,0, + 240,30,112,28,120,60,120,60,124,92,92,92,94,220,78,156, + 79,156,71,28,71,28,67,28,226,62,12,13,26,14,1,0, + 240,112,120,32,120,32,124,32,94,32,78,32,79,32,71,160, + 67,160,67,224,65,224,64,224,224,224,13,13,26,15,1,0, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,10,13,26,12,1,0, + 255,0,115,128,113,192,113,192,113,192,115,128,127,0,112,0, + 112,0,112,0,112,0,112,0,248,0,13,17,34,15,1,252, + 15,128,56,224,112,112,112,112,224,56,224,56,224,56,224,56, + 224,56,112,112,112,112,56,224,15,128,15,0,7,128,3,224, + 0,248,12,13,26,14,1,0,255,0,115,128,113,192,113,192, + 113,192,115,128,127,0,119,0,115,128,113,192,113,192,112,224, + 248,240,9,13,26,11,1,0,30,128,99,128,225,128,224,0, + 248,0,124,0,63,0,15,128,7,128,3,128,195,128,231,0, + 188,0,11,13,26,13,1,0,255,224,206,96,142,32,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 31,0,12,13,26,14,1,0,248,240,112,32,112,32,112,32, + 112,32,112,32,112,32,112,32,112,32,112,32,112,96,56,192, + 31,128,14,13,26,14,0,0,252,124,120,24,56,16,60,48, + 28,32,30,96,30,64,14,192,15,128,7,128,7,0,3,0, + 2,0,18,13,39,19,1,0,253,247,192,121,225,128,56,225, + 0,60,227,0,60,226,0,28,114,0,30,118,0,14,116,0, + 14,188,0,15,60,0,7,60,0,6,24,0,6,24,0,14, + 13,26,14,0,0,248,120,120,48,60,96,28,192,15,128,7, + 0,7,128,7,192,13,192,24,224,48,112,96,120,240,252,13, + 13,26,14,1,0,252,120,120,48,56,96,60,64,30,192,14, + 128,15,128,7,0,7,0,7,0,7,0,7,0,31,192,10, + 13,26,13,2,0,255,192,195,192,131,128,7,128,15,0,14, + 0,30,0,60,0,56,0,120,0,240,64,224,192,255,192,4, + 16,16,6,1,253,240,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,240,5,13,13,5,0,0,192,192,192,96,96, + 96,32,48,48,48,24,24,24,4,16,16,6,1,253,240,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,240,8,7, + 7,11,1,6,24,24,60,36,102,195,195,9,2,4,9,0, + 252,255,128,255,128,5,3,3,6,0,10,224,112,24,8,9, + 9,9,0,0,124,206,206,30,110,206,206,254,119,9,13,26, + 9,255,0,240,0,112,0,112,0,112,0,118,0,127,0,115, + 128,115,128,115,128,115,128,115,128,115,0,110,0,7,9,9, + 8,0,0,62,118,230,224,224,224,224,118,60,9,13,26,10, + 0,0,15,0,7,0,7,0,7,0,55,0,127,0,231,0, + 231,0,231,0,231,0,231,0,119,0,59,128,7,9,9,8, + 0,0,60,118,230,254,224,224,224,118,60,7,13,13,6,0, + 0,62,118,118,112,252,112,112,112,112,112,112,112,248,9,13, + 26,9,0,252,63,128,231,0,231,0,231,0,230,0,120,0, + 96,0,254,0,255,128,227,128,193,128,227,0,126,0,10,13, + 26,11,0,0,240,0,112,0,112,0,112,0,119,0,127,128, + 115,128,115,128,115,128,115,128,115,128,115,128,251,192,5,13, + 13,5,0,0,96,96,96,0,240,112,112,112,112,112,112,112, + 248,6,17,17,5,254,252,24,24,24,0,60,28,28,28,28, + 28,28,28,28,28,220,216,112,10,13,26,10,0,0,240,0, + 112,0,112,0,112,0,115,128,115,0,118,0,124,0,124,0, + 126,0,119,0,115,128,247,192,5,13,13,6,0,0,240,112, + 112,112,112,112,112,112,112,112,112,112,248,15,9,18,16,0, + 0,247,56,123,220,115,156,115,156,115,156,115,156,115,156,115, + 156,251,222,10,9,18,11,0,0,231,0,127,128,115,128,115, + 128,115,128,115,128,115,128,115,128,251,192,8,9,9,9,0, + 0,60,102,231,231,231,231,231,102,60,9,13,26,10,0,252, + 230,0,127,0,115,128,115,128,115,128,115,128,115,128,123,0, + 118,0,112,0,112,0,112,0,248,0,9,13,26,9,0,252, + 57,0,119,0,231,0,231,0,231,0,231,0,231,0,127,0, + 55,0,7,0,7,0,7,0,15,128,7,9,9,8,0,0, + 238,118,112,112,112,112,112,112,248,6,9,9,7,0,0,124, + 204,228,240,120,60,156,204,248,6,11,11,7,0,0,16,48, + 252,112,112,112,112,112,112,116,56,10,9,18,11,0,0,247, + 128,115,128,115,128,115,128,115,128,115,128,115,128,127,128,61, + 192,10,9,18,9,255,0,251,192,113,128,121,0,59,0,59, + 0,30,0,30,0,12,0,12,0,14,9,18,12,255,0,247, + 156,119,24,115,144,59,176,57,160,29,224,31,224,12,192,12, + 192,9,9,18,9,0,0,243,128,115,0,122,0,60,0,28, + 0,30,0,55,0,103,128,227,128,10,13,26,9,255,252,251, + 192,113,128,121,0,59,0,58,0,30,0,30,0,12,0,12, + 0,12,0,200,0,216,0,240,0,7,9,9,8,0,0,254, + 206,142,28,56,112,114,230,254,7,17,17,8,0,252,30,56, + 48,48,48,48,48,96,192,96,48,48,48,48,48,56,30,2, + 16,16,4,1,253,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,7,17,17,8,1,252,240,56,24,24,24, + 24,24,12,6,12,24,24,24,24,24,56,240,8,4,4,10, + 1,3,112,249,159,14,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--25-180-100-100-P-132-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=24 h=23 x= 3 y=14 dx=25 dy= 0 ascent=23 len=69 + Font Bounding box w=27 h=38 x=-2 y=-10 + Calculated Min Values x=-1 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =23 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB18[7223] U8G_SECTION(".progmem.u8g_font_timB18") = { + 0,27,38,254,246,17,4,47,9,109,32,255,251,23,250,17, + 251,0,0,0,6,0,1,4,17,17,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,0,0,96,240,240,96,8,8, + 8,12,2,9,231,231,231,231,231,231,66,66,12,17,34,13, + 0,0,12,192,12,192,12,192,12,192,127,240,127,240,25,128, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,10,20,40,12,1,254,8,0,8,0,63,0, + 107,128,233,128,233,128,248,128,124,0,126,0,63,0,31,128, + 15,128,11,192,137,192,201,192,201,128,235,128,62,0,8,0, + 8,0,17,17,51,19,1,0,30,12,0,59,252,0,113,24, + 0,225,48,0,226,48,0,226,96,0,244,96,0,120,192,0, + 0,192,0,1,143,0,1,157,128,3,56,128,3,112,128,6, + 113,0,6,113,0,12,122,0,12,60,0,17,17,51,21,1, + 0,3,224,0,6,112,0,14,48,0,14,48,0,14,112,0, + 7,224,0,15,15,128,31,135,0,51,194,0,97,230,0,225, + 252,0,224,248,0,224,120,0,240,124,0,248,255,128,127,159, + 0,63,14,0,3,8,8,7,2,9,224,224,224,224,224,224, + 64,64,5,21,21,8,1,252,8,24,48,48,112,96,96,224, + 224,224,224,224,224,224,96,96,112,48,48,24,8,5,21,21, + 8,1,252,128,192,96,96,48,48,48,56,56,56,56,56,56, + 56,48,48,48,96,96,192,128,10,11,22,13,1,6,12,0, + 12,0,76,128,237,192,127,128,30,0,127,128,237,192,76,128, + 12,0,12,0,12,12,24,14,1,0,6,0,6,0,6,0, + 6,0,6,0,255,240,255,240,6,0,6,0,6,0,6,0, + 6,0,4,9,9,6,1,251,96,240,240,112,48,96,96,192, + 128,6,3,3,8,1,5,252,252,252,4,4,4,6,1,0, + 96,240,240,96,7,17,17,7,0,0,6,6,4,12,12,8, + 24,24,16,48,48,32,96,96,64,192,192,11,17,34,12,0, + 0,14,0,59,128,49,128,113,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,224,113,192,113,192,113,192,49,128,59, + 128,14,0,9,17,34,12,2,0,12,0,60,0,252,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,62,0,255,128,10,17,34,12,1, + 0,30,0,63,0,127,128,199,128,131,128,3,128,3,128,3, + 0,7,0,6,0,12,0,12,0,24,64,48,64,127,192,255, + 192,255,128,11,17,34,12,0,0,15,0,63,128,99,192,65, + 192,1,192,3,128,7,0,31,0,7,192,1,224,1,224,0, + 224,0,224,96,224,241,192,251,128,126,0,11,17,34,12,0, + 0,1,128,3,128,7,128,7,128,15,128,27,128,51,128,51, + 128,99,128,195,128,255,224,255,224,255,224,3,128,3,128,3, + 128,3,128,11,17,34,12,0,0,31,224,31,192,63,192,48, + 0,32,0,112,0,127,0,127,128,127,192,7,192,1,192,0, + 192,0,192,96,192,241,128,251,128,126,0,11,17,34,12,1, + 0,1,224,7,128,30,0,60,0,56,0,120,0,119,0,123, + 128,241,192,241,224,241,224,241,224,241,224,113,192,113,192,59, + 128,30,0,11,17,34,12,0,0,63,224,127,224,127,192,192, + 192,129,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,14,0,14,0,12,0,28,0,28,0,11,17,34,12,0, + 0,31,0,59,128,113,192,113,192,113,192,121,128,59,0,63, + 0,31,128,55,192,99,192,225,224,225,224,225,224,241,192,123, + 128,62,0,11,17,34,12,0,0,14,0,59,128,113,192,113, + 192,241,224,241,224,241,224,241,224,113,224,59,192,31,192,3, + 192,3,128,7,128,15,0,60,0,240,0,4,12,12,8,2, + 0,96,240,240,96,0,0,0,0,96,240,240,96,4,17,17, + 8,2,251,96,240,240,96,0,0,0,0,96,240,240,112,48, + 96,96,192,128,11,12,24,14,1,0,0,96,1,224,7,192, + 31,0,60,0,224,0,224,0,60,0,31,0,7,192,1,224, + 0,96,11,6,12,14,1,3,255,224,255,224,0,0,0,0, + 255,224,255,224,11,12,24,14,1,0,192,0,240,0,124,0, + 31,0,7,128,0,224,0,224,7,128,31,0,124,0,240,0, + 192,0,9,17,34,12,1,0,62,0,111,0,231,128,231,128, + 71,128,7,128,15,0,14,0,28,0,24,0,24,0,0,0, + 0,0,24,0,60,0,60,0,24,0,20,21,63,23,1,252, + 0,124,0,3,247,128,15,128,192,30,0,96,60,0,32,56, + 59,48,112,255,16,113,231,16,241,199,16,227,198,16,227,142, + 16,227,142,48,227,142,32,243,158,96,241,254,192,112,243,128, + 120,0,0,56,0,0,30,0,0,7,131,0,1,252,0,17, + 17,51,18,0,0,1,128,0,1,192,0,3,192,0,3,224, + 0,3,224,0,6,224,0,6,240,0,4,112,0,12,112,0, + 8,120,0,8,56,0,31,248,0,16,60,0,48,60,0,48, + 30,0,112,30,0,248,127,128,14,17,34,16,0,0,255,192, + 60,240,60,120,60,120,60,120,60,120,60,112,60,192,63,224, + 60,120,60,60,60,60,60,60,60,60,60,56,60,120,255,224, + 15,17,34,18,1,0,3,242,30,62,60,14,120,6,120,2, + 240,2,240,0,240,0,240,0,240,0,240,0,240,0,120,0, + 120,2,60,14,31,60,7,240,16,17,34,18,1,0,255,224, + 60,120,60,60,60,30,60,30,60,15,60,15,60,15,60,15, + 60,15,60,15,60,14,60,30,60,28,60,60,60,120,255,224, + 15,17,34,17,1,0,255,252,60,28,60,12,60,4,60,4, + 60,32,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,6,60,14,255,254,14,17,34,15,0,0,255,252, + 60,28,60,12,60,4,60,4,60,32,60,32,60,96,63,224, + 60,96,60,32,60,32,60,0,60,0,60,0,60,0,255,0, + 17,17,51,19,1,0,3,242,0,30,62,0,60,14,0,120, + 6,0,120,2,0,240,2,0,240,0,0,240,0,0,240,0, + 0,240,127,128,240,30,0,240,30,0,120,30,0,120,30,0, + 56,30,0,30,30,0,7,248,0,18,17,51,19,0,0,255, + 63,192,60,15,0,60,15,0,60,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,63,255,0,60,15,0,60,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,255, + 63,192,8,17,17,10,0,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,11,19,38,12,0,254,31, + 224,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,231,128,231,128,231, + 0,231,0,60,0,18,17,51,19,0,0,255,63,128,60,30, + 0,60,24,0,60,48,0,60,96,0,60,192,0,61,128,0, + 63,192,0,63,192,0,61,224,0,60,240,0,60,248,0,60, + 124,0,60,62,0,60,31,0,60,15,128,255,31,192,15,17, + 34,16,0,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,6, + 60,12,60,28,255,252,21,17,51,24,1,0,252,1,248,60, + 3,224,62,3,224,62,7,224,47,5,224,47,13,224,39,9, + 224,39,137,224,39,153,224,35,145,224,35,241,224,35,241,224, + 33,225,224,33,225,224,32,193,224,32,193,224,248,7,248,17, + 17,51,18,0,0,248,15,128,124,7,0,62,2,0,63,2, + 0,63,130,0,47,194,0,39,226,0,35,226,0,33,242,0, + 32,250,0,32,126,0,32,62,0,32,30,0,32,30,0,32, + 14,0,96,6,0,248,2,0,16,17,34,19,1,0,7,224, + 28,56,56,28,120,30,112,14,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,112,14,120,30,56,28,28,56,7,224, + 14,17,34,15,0,0,255,224,60,120,60,60,60,60,60,60, + 60,60,60,60,60,120,63,224,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,255,0,17,22,66,19,1,251,7,224, + 0,28,56,0,56,28,0,120,30,0,112,14,0,240,15,0, + 240,15,0,240,15,0,240,15,0,240,15,0,240,15,0,240, + 15,0,240,14,0,120,30,0,120,28,0,60,56,0,31,224, + 0,7,192,0,1,224,0,1,240,0,0,252,0,0,63,128, + 16,17,34,18,1,0,255,224,60,120,60,56,60,60,60,60, + 60,60,60,56,60,112,63,192,61,224,60,240,60,240,60,120, + 60,124,60,60,60,30,255,31,12,17,34,14,1,0,63,160, + 113,224,224,224,224,96,224,32,248,0,126,0,127,128,63,192, + 15,224,7,224,129,240,128,240,192,240,224,224,249,224,191,128, + 14,17,34,16,1,0,255,252,231,156,199,140,135,132,135,132, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,31,224,17,17,51,18,0,0,255,15, + 128,126,7,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,6,0,30,4,0,31,12,0,7,248, + 0,17,17,51,18,0,0,255,31,128,60,6,0,60,4,0, + 30,4,0,30,12,0,15,8,0,15,24,0,15,24,0,7, + 144,0,7,176,0,3,224,0,3,224,0,3,224,0,1,192, + 0,1,192,0,0,128,0,0,128,0,24,17,51,25,0,0, + 255,127,159,60,30,6,60,30,4,30,15,12,30,31,8,30, + 31,24,15,23,152,15,55,144,15,39,176,7,227,176,7,195, + 224,7,195,224,3,193,224,3,129,192,3,129,192,1,0,128, + 1,0,128,16,17,34,18,1,0,255,63,62,12,30,8,31, + 24,15,48,15,160,7,224,3,192,3,224,3,224,3,240,6, + 240,12,120,8,124,24,60,56,62,252,255,18,17,51,18,0, + 0,255,143,192,62,3,0,30,2,0,15,6,0,15,12,0, + 7,140,0,7,152,0,3,208,0,3,240,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,7,248,0,14,17,34,17,1,0,255,248,224,248,193,240, + 193,240,131,224,3,192,7,192,7,128,15,128,15,0,30,0, + 62,4,60,4,124,12,120,28,248,60,255,248,5,21,21,8, + 1,252,248,224,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,224,248,7,17,17,7,0,0,192,192,64, + 96,96,32,48,48,16,24,24,8,12,12,4,6,6,5,21, + 21,8,1,252,248,56,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,56,248,8,10,10,15,3,7,24, + 24,60,36,102,102,102,195,195,129,12,2,4,12,0,251,255, + 240,255,240,5,4,4,8,1,13,224,112,48,24,10,12,24, + 12,1,0,62,0,119,0,227,128,227,128,67,128,15,128,115, + 128,227,128,227,128,231,128,255,192,113,128,11,17,34,13,1, + 0,240,0,112,0,112,0,112,0,112,0,119,0,127,192,113, + 192,112,224,112,224,112,224,112,224,112,224,112,224,113,192,123, + 192,103,0,9,12,24,11,1,0,30,0,115,0,115,128,227, + 128,225,0,224,0,224,0,224,0,240,0,120,128,127,0,30, + 0,12,17,34,14,1,0,1,224,0,224,0,224,0,224,0, + 224,30,224,127,224,113,224,224,224,224,224,224,224,224,224,224, + 224,240,224,113,224,126,224,28,112,9,12,24,11,1,0,30, + 0,115,0,115,128,227,128,227,128,255,128,224,0,224,0,240, + 0,120,128,127,0,30,0,8,17,17,8,1,0,30,51,115, + 112,112,252,112,112,112,112,112,112,112,112,112,112,248,10,17, + 34,12,1,251,62,192,119,192,227,128,227,128,227,128,227,128, + 115,0,62,0,96,0,224,0,255,128,255,192,127,192,193,192, + 192,192,225,128,127,0,12,17,34,14,1,0,240,0,112,0, + 112,0,112,0,112,0,115,192,127,224,120,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,5,17, + 17,7,1,0,112,112,112,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,7,22,22,8,255,251,14,14,14,0,0, + 30,14,14,14,14,14,14,14,14,14,14,14,14,206,206,204, + 120,13,17,34,15,1,0,240,0,112,0,112,0,112,0,112, + 0,115,240,112,192,113,128,115,0,118,0,126,0,127,0,119, + 128,115,192,113,224,112,240,251,248,5,17,17,7,1,0,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,248, + 19,12,36,21,1,0,243,199,128,119,223,192,120,241,192,112, + 225,192,112,225,192,112,225,192,112,225,192,112,225,192,112,225, + 192,112,225,192,112,225,192,249,243,224,12,12,24,14,1,0, + 243,192,119,224,120,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,249,240,11,12,24,13,1,0,31,0, + 113,192,113,192,224,224,224,224,224,224,224,224,224,224,224,224, + 113,192,113,192,31,0,12,17,34,14,1,251,227,192,119,224, + 120,224,112,112,112,112,112,112,112,112,112,112,112,112,120,224, + 119,224,115,128,112,0,112,0,112,0,112,0,252,0,12,17, + 34,14,1,251,14,96,63,224,113,224,112,224,224,224,224,224, + 224,224,224,224,224,224,113,224,126,224,28,224,0,224,0,224, + 0,224,0,224,1,240,9,12,24,11,1,0,239,0,127,128, + 115,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,248,0,8,12,12,10,1,0,62,102,226,224,248,124, + 62,31,135,135,198,252,8,16,16,8,0,0,8,24,56,120, + 255,56,56,56,56,56,56,56,56,57,62,28,12,12,24,14, + 1,0,241,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,113,224,126,240,60,224,12,12,24,12,0,0, + 252,240,112,96,120,64,56,192,56,128,28,128,29,128,31,0, + 15,0,15,0,6,0,6,0,17,12,36,18,0,0,253,247, + 128,120,227,0,56,227,0,56,226,0,60,230,0,29,118,0, + 29,116,0,31,60,0,14,56,0,14,56,0,4,16,0,4, + 16,0,12,12,24,12,0,0,252,240,120,96,60,192,29,128, + 31,0,15,0,15,0,31,128,27,192,49,192,97,224,243,240, + 12,17,34,12,0,251,253,240,120,96,56,64,56,192,60,128, + 28,128,29,128,31,0,15,0,15,0,6,0,6,0,6,0, + 100,0,236,0,248,0,112,0,9,12,24,11,1,0,255,128, + 199,0,143,0,142,0,30,0,28,0,60,0,56,0,120,128, + 113,128,241,128,255,128,7,21,21,10,1,252,14,24,48,48, + 48,48,48,48,48,96,192,96,48,48,48,48,48,48,48,24, + 14,2,22,22,6,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,7,21,21, + 10,1,252,224,48,24,24,24,24,24,24,24,12,6,12,24, + 24,24,24,24,24,24,48,224,12,6,12,13,0,6,24,0, + 126,16,255,16,143,240,135,224,1,128,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,6,0, + 1,4,17,17,8,2,251,96,240,240,96,0,0,96,96,96, + 96,96,240,240,240,240,240,96,10,18,36,13,1,253,0,128, + 1,128,1,0,31,128,115,192,115,192,230,128,228,0,228,0, + 236,0,232,0,248,0,120,128,127,128,62,0,48,0,96,0, + 96,0,11,17,34,13,0,0,15,192,30,96,60,224,60,224, + 60,64,28,0,28,0,255,128,255,128,28,0,28,0,28,0, + 12,32,124,96,207,224,255,224,115,192,11,12,24,13,0,3, + 192,96,238,224,127,192,59,128,113,192,96,192,96,192,113,192, + 59,128,127,192,238,224,192,96,14,17,34,13,0,0,254,124, + 56,48,60,32,28,96,30,64,14,192,15,128,7,128,7,0, + 31,192,7,0,31,192,7,0,7,0,7,0,7,0,31,192, + 2,22,22,6,2,251,192,192,192,192,192,192,192,192,192,0, + 0,0,0,192,192,192,192,192,192,192,192,192,7,20,20,11, + 2,253,60,110,206,198,224,112,120,92,142,134,194,226,116,60, + 28,14,198,230,236,120,6,2,2,8,1,14,204,204,17,17, + 51,19,1,0,3,224,0,15,248,0,60,30,0,48,6,0, + 97,243,0,99,51,0,198,17,128,198,1,128,198,1,128,198, + 1,128,198,1,128,99,51,0,97,227,0,48,6,0,60,30, + 0,15,248,0,3,224,0,7,10,10,8,0,7,120,220,12, + 124,236,204,126,0,254,254,11,10,20,13,1,1,12,96,24, + 192,49,128,115,128,231,0,231,0,115,128,49,128,24,192,12, + 96,11,7,14,15,2,2,255,224,255,224,0,96,0,96,0, + 96,0,96,0,96,6,3,3,8,1,5,252,252,252,17,17, + 51,19,1,0,3,224,0,15,248,0,60,30,0,48,6,0, + 103,227,0,99,51,0,195,49,128,195,49,128,195,225,128,195, + 97,128,195,49,128,99,51,0,103,187,0,48,6,0,60,30, + 0,15,248,0,3,224,0,6,1,1,8,1,14,252,8,7, + 7,9,0,10,60,102,195,195,195,102,60,12,13,26,14,1, + 0,6,0,6,0,6,0,6,0,255,240,255,240,6,0,6, + 0,6,0,6,0,0,0,255,240,255,240,6,10,10,7,0, + 7,56,124,140,12,24,16,32,64,252,252,6,10,10,7,0, + 7,56,124,140,12,56,28,12,140,248,112,5,4,4,8,2, + 13,56,112,96,192,12,17,34,14,1,251,241,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,113,224,126, + 240,108,224,96,0,96,0,224,0,240,0,96,0,11,22,44, + 14,1,251,31,224,127,224,126,64,254,64,254,64,254,64,254, + 64,254,64,254,64,126,64,126,64,30,64,2,64,2,64,2, + 64,2,64,2,64,2,64,2,64,2,64,2,64,2,64,3, + 3,3,6,1,6,224,224,224,6,6,6,8,1,250,16,48, + 56,12,140,120,6,10,10,7,0,7,48,240,48,48,48,48, + 48,48,48,252,7,10,10,8,0,7,56,108,198,198,198,108, + 56,0,254,254,11,10,20,13,1,1,198,0,99,0,49,128, + 57,192,28,224,28,224,57,192,51,128,99,0,198,0,17,17, + 51,18,0,0,48,4,0,240,12,0,48,24,0,48,24,0, + 48,48,0,48,32,0,48,96,0,48,66,0,48,198,0,252, + 142,0,1,142,0,1,22,0,3,54,0,6,38,0,6,127, + 128,12,6,0,8,6,0,17,17,51,18,0,0,48,4,0, + 240,12,0,48,24,0,48,24,0,48,48,0,48,32,0,48, + 96,0,48,71,0,48,207,128,252,145,128,1,129,128,1,3, + 0,3,2,0,6,4,0,6,8,0,12,31,128,8,31,128, + 17,17,51,18,1,0,56,4,0,124,12,0,140,24,0,12, + 24,0,56,48,0,28,32,0,12,96,0,140,66,0,248,198, + 0,113,14,0,3,14,0,2,22,0,6,54,0,12,38,0, + 12,127,128,24,6,0,16,6,0,9,17,34,12,1,251,12, + 0,30,0,30,0,12,0,0,0,0,0,12,0,12,0,28, + 0,56,0,120,0,240,0,241,0,243,128,243,128,123,0,62, + 0,17,22,66,18,0,0,3,128,0,1,192,0,0,192,0, + 0,96,0,0,0,0,1,128,0,1,192,0,3,192,0,3, + 224,0,3,224,0,6,224,0,6,240,0,4,112,0,12,112, + 0,8,120,0,8,56,0,31,248,0,16,60,0,48,60,0, + 48,30,0,112,30,0,248,127,128,17,22,66,18,0,0,0, + 224,0,1,192,0,1,128,0,3,0,0,0,0,0,1,128, + 0,1,192,0,3,192,0,3,224,0,3,224,0,6,224,0, + 6,240,0,4,112,0,12,112,0,8,120,0,8,56,0,31, + 248,0,16,60,0,48,60,0,48,30,0,112,30,0,248,127, + 128,17,22,66,18,0,0,1,128,0,3,192,0,6,96,0, + 0,0,0,0,0,0,1,128,0,1,192,0,3,192,0,3, + 224,0,3,224,0,6,224,0,6,240,0,4,112,0,12,112, + 0,8,120,0,8,56,0,31,248,0,16,60,0,48,60,0, + 48,30,0,112,30,0,248,127,128,17,21,63,18,0,0,3, + 16,0,7,224,0,8,192,0,0,0,0,1,128,0,1,192, + 0,3,192,0,3,224,0,3,224,0,6,224,0,6,240,0, + 4,112,0,12,112,0,8,120,0,8,56,0,31,248,0,16, + 60,0,48,60,0,48,30,0,112,30,0,248,127,128,17,21, + 63,18,0,0,6,96,0,6,96,0,0,0,0,0,0,0, + 1,128,0,1,192,0,3,192,0,3,224,0,3,224,0,6, + 224,0,6,240,0,4,112,0,12,112,0,8,120,0,8,56, + 0,31,248,0,16,60,0,48,60,0,48,30,0,112,30,0, + 248,127,128,17,23,69,18,0,0,1,128,0,3,192,0,6, + 96,0,6,96,0,3,192,0,1,128,0,1,128,0,1,192, + 0,3,192,0,3,224,0,3,224,0,6,224,0,6,240,0, + 4,112,0,12,112,0,8,120,0,8,56,0,31,248,0,16, + 60,0,48,60,0,48,30,0,112,30,0,248,127,128,23,17, + 51,25,0,0,1,255,252,0,124,28,0,252,12,0,188,4, + 1,188,4,1,60,32,3,60,32,2,60,96,6,63,224,7, + 252,96,12,60,32,8,60,32,24,60,2,16,60,2,48,60, + 6,112,60,14,248,255,254,15,23,46,18,1,250,3,242,30, + 62,60,14,120,6,120,2,240,2,240,0,240,0,240,0,240, + 0,240,0,240,0,120,0,120,2,60,14,31,60,7,240,1, + 0,3,0,3,128,0,192,8,192,7,128,15,22,44,17,1, + 0,7,0,3,128,1,128,0,192,0,0,255,252,60,28,60, + 12,60,4,60,4,60,32,60,32,60,96,63,224,60,96,60, + 32,60,32,60,2,60,2,60,6,60,14,255,254,15,22,44, + 17,1,0,1,192,3,128,3,0,6,0,0,0,255,252,60, + 28,60,12,60,4,60,4,60,32,60,32,60,96,63,224,60, + 96,60,32,60,32,60,2,60,2,60,6,60,14,255,254,15, + 22,44,17,1,0,3,0,7,128,12,192,0,0,0,0,255, + 252,60,28,60,12,60,4,60,4,60,32,60,32,60,96,63, + 224,60,96,60,32,60,32,60,2,60,2,60,6,60,14,255, + 254,15,21,42,17,1,0,12,192,12,192,0,0,0,0,255, + 252,60,28,60,12,60,4,60,4,60,32,60,32,60,96,63, + 224,60,96,60,32,60,32,60,2,60,2,60,6,60,14,255, + 254,8,22,22,10,0,0,112,56,24,12,0,255,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,255,8,22,22, + 10,0,0,14,28,24,48,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,8,22,22,10,0,0,24, + 60,102,0,0,255,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,255,8,21,21,10,0,0,102,102,0,0,255, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,255, + 16,17,34,18,1,0,255,224,60,120,60,60,60,30,60,30, + 60,15,60,15,255,143,255,143,60,15,60,15,60,14,60,30, + 60,28,60,60,60,120,255,224,17,22,66,18,0,0,1,136, + 0,3,240,0,4,96,0,0,0,0,0,0,0,248,15,128, + 124,7,0,62,2,0,63,2,0,63,130,0,47,194,0,39, + 226,0,35,226,0,33,242,0,32,250,0,32,126,0,32,62, + 0,32,30,0,32,14,0,32,14,0,96,6,0,248,2,0, + 16,22,44,19,1,0,7,0,3,128,1,128,0,192,0,0, + 7,224,30,120,60,60,120,30,120,30,240,15,240,15,240,15, + 240,15,240,15,240,15,240,15,120,30,120,30,60,60,30,120, + 7,224,16,22,44,19,1,0,0,112,0,224,0,192,1,128, + 0,0,7,224,30,120,60,60,120,30,120,30,240,15,240,15, + 240,15,240,15,240,15,240,15,240,15,120,30,120,30,60,60, + 30,120,7,224,16,22,44,19,1,0,1,128,3,192,6,96, + 0,0,0,0,7,224,30,120,60,60,120,30,120,30,240,15, + 240,15,240,15,240,15,240,15,240,15,240,15,120,30,120,30, + 60,60,30,120,7,224,16,22,44,19,1,0,3,16,7,224, + 8,192,0,0,0,0,7,224,30,120,60,60,120,30,120,30, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,120,30, + 120,30,60,60,30,120,7,224,16,21,42,19,1,0,12,96, + 12,96,0,0,0,0,7,224,30,120,60,60,120,30,120,30, + 240,15,240,15,240,15,240,15,240,15,240,15,240,15,120,30, + 120,30,60,60,30,120,7,224,12,12,24,14,1,0,192,48, + 224,112,112,224,57,192,31,128,15,0,15,0,31,128,57,192, + 112,224,224,112,192,48,16,19,38,19,1,255,0,4,7,236, + 30,120,56,28,120,62,120,62,240,111,240,207,240,207,241,143, + 243,15,243,15,246,15,124,30,124,30,56,28,62,120,55,224, + 96,0,17,22,66,18,0,0,3,128,0,1,192,0,0,192, + 0,0,96,0,0,0,0,255,15,128,62,6,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,2,0,60,2,0,60,2,0,60,6, + 0,30,4,0,31,28,0,7,248,0,17,22,66,18,0,0, + 0,56,0,0,112,0,0,96,0,0,192,0,0,0,0,255, + 15,128,62,6,0,60,2,0,60,2,0,60,2,0,60,2, + 0,60,2,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,6,0,30,4,0,31,28,0,7, + 248,0,17,22,66,18,0,0,0,96,0,0,240,0,1,152, + 0,0,0,0,0,0,0,255,15,128,62,6,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,2,0,60,2,0,60,2,0,60,6, + 0,30,4,0,31,28,0,7,248,0,17,21,63,18,0,0, + 3,24,0,3,24,0,0,0,0,0,0,0,255,15,128,62, + 6,0,60,2,0,60,2,0,60,2,0,60,2,0,60,2, + 0,60,2,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,6,0,30,4,0,31,28,0,7,248,0,18, + 23,69,18,0,0,0,14,0,0,28,0,0,24,0,0,48, + 0,0,0,0,0,0,0,255,143,192,62,3,0,30,2,0, + 15,6,0,15,12,0,7,140,0,7,152,0,3,208,0,3, + 240,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,1,224,0,1,224,0,7,248,0,14,17,34,15,0,0, + 255,0,60,0,60,0,60,0,63,224,60,120,60,60,60,60, + 60,60,60,60,60,60,60,120,63,224,60,0,60,0,60,0, + 255,0,11,17,34,14,1,0,31,0,57,128,113,192,113,192, + 113,192,113,192,115,128,119,0,115,128,113,192,112,224,112,224, + 112,224,112,224,112,224,112,192,243,128,10,17,34,12,1,0, + 56,0,28,0,12,0,6,0,0,0,62,0,119,0,227,128, + 227,128,67,128,15,128,115,128,227,128,227,128,231,128,255,192, + 113,128,10,17,34,12,1,0,14,0,28,0,24,0,48,0, + 0,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,10,17,34,12,1,0, + 12,0,30,0,51,0,0,0,0,0,62,0,119,0,227,128, + 227,128,67,128,15,128,115,128,227,128,227,128,231,128,255,192, + 113,128,10,17,34,12,1,0,24,128,63,0,70,0,0,0, + 0,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,10,16,32,12,1,0, + 51,0,51,0,0,0,0,0,62,0,119,0,227,128,227,128, + 67,128,15,128,115,128,227,128,227,128,231,128,255,192,113,128, + 10,18,36,12,1,0,12,0,30,0,51,0,51,0,30,0, + 12,0,62,0,119,0,227,128,227,128,67,128,15,128,115,128, + 227,128,227,128,231,128,255,192,113,128,15,12,24,17,1,0, + 62,120,119,204,227,206,99,142,3,142,31,254,115,128,227,128, + 227,192,231,226,254,252,124,120,9,18,36,11,1,250,30,0, + 115,0,115,128,227,128,225,0,224,0,224,0,224,0,240,0, + 120,128,127,0,30,0,8,0,24,0,28,0,6,0,70,0, + 60,0,9,17,34,11,1,0,56,0,28,0,12,0,6,0, + 0,0,30,0,115,0,115,128,227,128,227,128,255,128,224,0, + 224,0,240,0,120,128,127,0,30,0,9,17,34,11,1,0, + 14,0,28,0,24,0,48,0,0,0,30,0,115,0,115,128, + 227,128,227,128,255,128,224,0,224,0,240,0,120,128,127,0, + 30,0,9,17,34,11,1,0,24,0,60,0,102,0,0,0, + 0,0,30,0,115,0,115,128,227,128,227,128,255,128,224,0, + 224,0,240,0,120,128,127,0,30,0,9,16,32,11,1,0, + 51,0,51,0,0,0,0,0,30,0,115,0,115,128,227,128, + 227,128,255,128,224,0,224,0,240,0,120,128,127,0,30,0, + 5,17,17,7,1,0,224,112,48,24,0,240,112,112,112,112, + 112,112,112,112,112,112,248,6,17,17,7,1,0,28,56,48, + 96,0,240,112,112,112,112,112,112,112,112,112,112,248,6,17, + 17,7,1,0,48,120,204,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,6,16,16,7,1,0,204,204,0,0,240, + 112,112,112,112,112,112,112,112,112,112,248,11,17,34,13,1, + 0,96,0,56,192,15,0,30,0,99,0,31,128,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,12,17,34,14,1,0,12,64,31,128,35,0,0, + 0,0,0,243,192,119,224,120,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,112,224,249,240,11,17,34,13,1, + 0,28,0,14,0,6,0,3,0,0,0,31,0,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,11,17,34,13,1,0,3,128,7,0,6,0,12, + 0,0,0,31,0,123,192,113,192,224,224,224,224,224,224,224, + 224,224,224,224,224,113,192,123,192,31,0,11,17,34,13,1, + 0,12,0,30,0,51,0,0,0,0,0,31,0,123,192,113, + 192,224,224,224,224,224,224,224,224,224,224,224,224,113,192,123, + 192,31,0,11,17,34,13,1,0,24,128,63,0,70,0,0, + 0,0,0,31,0,123,192,113,192,224,224,224,224,224,224,224, + 224,224,224,224,224,113,192,123,192,31,0,11,16,32,13,1, + 0,49,128,49,128,0,0,0,0,31,0,123,192,113,192,224, + 224,224,224,224,224,224,224,224,224,224,224,113,192,123,192,31, + 0,12,12,24,14,1,0,6,0,6,0,6,0,0,0,0, + 0,255,240,255,240,0,0,0,0,6,0,6,0,6,0,11, + 16,32,13,1,254,0,64,0,64,30,128,121,192,113,192,226, + 224,226,224,228,224,228,224,232,224,232,224,113,192,123,192,63, + 0,64,0,64,0,12,17,34,14,1,0,28,0,14,0,6, + 0,3,0,0,0,241,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,113,224,126,240,60,224,12,17,34, + 14,1,0,7,0,14,0,12,0,24,0,0,0,241,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,112,224,113, + 224,126,240,60,224,12,17,34,14,1,0,6,0,15,0,25, + 128,0,0,0,0,241,224,112,224,112,224,112,224,112,224,112, + 224,112,224,112,224,112,224,113,224,126,240,60,224,12,16,32, + 14,1,0,25,128,25,128,0,0,0,0,241,224,112,224,112, + 224,112,224,112,224,112,224,112,224,112,224,112,224,113,224,126, + 240,60,224,12,22,44,12,0,251,1,192,3,128,3,0,6, + 0,0,0,253,240,120,96,56,64,56,192,60,128,28,128,29, + 128,31,0,15,0,15,0,6,0,6,0,6,0,100,0,236, + 0,248,0,112,0,12,22,44,14,1,251,240,0,112,0,112, + 0,112,0,112,0,115,128,119,224,124,224,120,112,112,112,112, + 112,112,112,112,112,112,112,120,224,119,224,115,128,112,0,112, + 0,112,0,112,0,252,0,12,21,42,12,0,251,25,128,25, + 128,0,0,0,0,253,240,120,96,56,64,56,192,60,128,28, + 128,29,128,31,0,15,0,15,0,6,0,6,0,6,0,100, + 0,236,0,248,0,112,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--25-180-100-100-P-132-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=24 h=22 x= 3 y=13 dx=25 dy= 0 ascent=18 len=66 + Font Bounding box w=27 h=38 x=-2 y=-10 + Calculated Min Values x=-1 y=-5 dx= 0 dy= 0 + Pure Font ascent =17 descent=-5 + X Font ascent =17 descent=-5 + Max Font ascent =18 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB18r[3355] U8G_SECTION(".progmem.u8g_font_timB18r") = { + 0,27,38,254,246,17,4,47,9,109,32,127,251,18,251,17, + 251,0,0,0,6,0,1,4,17,17,8,2,0,96,240,240, + 240,240,240,96,96,96,96,96,0,0,96,240,240,96,8,8, + 8,12,2,9,231,231,231,231,231,231,66,66,12,17,34,13, + 0,0,12,192,12,192,12,192,12,192,127,240,127,240,25,128, + 25,128,25,128,25,128,255,224,255,224,51,0,51,0,51,0, + 51,0,51,0,10,20,40,12,1,254,8,0,8,0,63,0, + 107,128,233,128,233,128,248,128,124,0,126,0,63,0,31,128, + 15,128,11,192,137,192,201,192,201,128,235,128,62,0,8,0, + 8,0,17,17,51,19,1,0,30,12,0,59,252,0,113,24, + 0,225,48,0,226,48,0,226,96,0,244,96,0,120,192,0, + 0,192,0,1,143,0,1,157,128,3,56,128,3,112,128,6, + 113,0,6,113,0,12,122,0,12,60,0,17,17,51,21,1, + 0,3,224,0,6,112,0,14,48,0,14,48,0,14,112,0, + 7,224,0,15,15,128,31,135,0,51,194,0,97,230,0,225, + 252,0,224,248,0,224,120,0,240,124,0,248,255,128,127,159, + 0,63,14,0,3,8,8,7,2,9,224,224,224,224,224,224, + 64,64,5,21,21,8,1,252,8,24,48,48,112,96,96,224, + 224,224,224,224,224,224,96,96,112,48,48,24,8,5,21,21, + 8,1,252,128,192,96,96,48,48,48,56,56,56,56,56,56, + 56,48,48,48,96,96,192,128,10,11,22,13,1,6,12,0, + 12,0,76,128,237,192,127,128,30,0,127,128,237,192,76,128, + 12,0,12,0,12,12,24,14,1,0,6,0,6,0,6,0, + 6,0,6,0,255,240,255,240,6,0,6,0,6,0,6,0, + 6,0,4,9,9,6,1,251,96,240,240,112,48,96,96,192, + 128,6,3,3,8,1,5,252,252,252,4,4,4,6,1,0, + 96,240,240,96,7,17,17,7,0,0,6,6,4,12,12,8, + 24,24,16,48,48,32,96,96,64,192,192,11,17,34,12,0, + 0,14,0,59,128,49,128,113,192,113,192,241,224,241,224,241, + 224,241,224,241,224,241,224,113,192,113,192,113,192,49,128,59, + 128,14,0,9,17,34,12,2,0,12,0,60,0,252,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,62,0,255,128,10,17,34,12,1, + 0,30,0,63,0,127,128,199,128,131,128,3,128,3,128,3, + 0,7,0,6,0,12,0,12,0,24,64,48,64,127,192,255, + 192,255,128,11,17,34,12,0,0,15,0,63,128,99,192,65, + 192,1,192,3,128,7,0,31,0,7,192,1,224,1,224,0, + 224,0,224,96,224,241,192,251,128,126,0,11,17,34,12,0, + 0,1,128,3,128,7,128,7,128,15,128,27,128,51,128,51, + 128,99,128,195,128,255,224,255,224,255,224,3,128,3,128,3, + 128,3,128,11,17,34,12,0,0,31,224,31,192,63,192,48, + 0,32,0,112,0,127,0,127,128,127,192,7,192,1,192,0, + 192,0,192,96,192,241,128,251,128,126,0,11,17,34,12,1, + 0,1,224,7,128,30,0,60,0,56,0,120,0,119,0,123, + 128,241,192,241,224,241,224,241,224,241,224,113,192,113,192,59, + 128,30,0,11,17,34,12,0,0,63,224,127,224,127,192,192, + 192,129,128,1,128,3,128,3,0,3,0,7,0,6,0,6, + 0,14,0,14,0,12,0,28,0,28,0,11,17,34,12,0, + 0,31,0,59,128,113,192,113,192,113,192,121,128,59,0,63, + 0,31,128,55,192,99,192,225,224,225,224,225,224,241,192,123, + 128,62,0,11,17,34,12,0,0,14,0,59,128,113,192,113, + 192,241,224,241,224,241,224,241,224,113,224,59,192,31,192,3, + 192,3,128,7,128,15,0,60,0,240,0,4,12,12,8,2, + 0,96,240,240,96,0,0,0,0,96,240,240,96,4,17,17, + 8,2,251,96,240,240,96,0,0,0,0,96,240,240,112,48, + 96,96,192,128,11,12,24,14,1,0,0,96,1,224,7,192, + 31,0,60,0,224,0,224,0,60,0,31,0,7,192,1,224, + 0,96,11,6,12,14,1,3,255,224,255,224,0,0,0,0, + 255,224,255,224,11,12,24,14,1,0,192,0,240,0,124,0, + 31,0,7,128,0,224,0,224,7,128,31,0,124,0,240,0, + 192,0,9,17,34,12,1,0,62,0,111,0,231,128,231,128, + 71,128,7,128,15,0,14,0,28,0,24,0,24,0,0,0, + 0,0,24,0,60,0,60,0,24,0,20,21,63,23,1,252, + 0,124,0,3,247,128,15,128,192,30,0,96,60,0,32,56, + 59,48,112,255,16,113,231,16,241,199,16,227,198,16,227,142, + 16,227,142,48,227,142,32,243,158,96,241,254,192,112,243,128, + 120,0,0,56,0,0,30,0,0,7,131,0,1,252,0,17, + 17,51,18,0,0,1,128,0,1,192,0,3,192,0,3,224, + 0,3,224,0,6,224,0,6,240,0,4,112,0,12,112,0, + 8,120,0,8,56,0,31,248,0,16,60,0,48,60,0,48, + 30,0,112,30,0,248,127,128,14,17,34,16,0,0,255,192, + 60,240,60,120,60,120,60,120,60,120,60,112,60,192,63,224, + 60,120,60,60,60,60,60,60,60,60,60,56,60,120,255,224, + 15,17,34,18,1,0,3,242,30,62,60,14,120,6,120,2, + 240,2,240,0,240,0,240,0,240,0,240,0,240,0,120,0, + 120,2,60,14,31,60,7,240,16,17,34,18,1,0,255,224, + 60,120,60,60,60,30,60,30,60,15,60,15,60,15,60,15, + 60,15,60,15,60,14,60,30,60,28,60,60,60,120,255,224, + 15,17,34,17,1,0,255,252,60,28,60,12,60,4,60,4, + 60,32,60,32,60,96,63,224,60,96,60,32,60,32,60,2, + 60,2,60,6,60,14,255,254,14,17,34,15,0,0,255,252, + 60,28,60,12,60,4,60,4,60,32,60,32,60,96,63,224, + 60,96,60,32,60,32,60,0,60,0,60,0,60,0,255,0, + 17,17,51,19,1,0,3,242,0,30,62,0,60,14,0,120, + 6,0,120,2,0,240,2,0,240,0,0,240,0,0,240,0, + 0,240,127,128,240,30,0,240,30,0,120,30,0,120,30,0, + 56,30,0,30,30,0,7,248,0,18,17,51,19,0,0,255, + 63,192,60,15,0,60,15,0,60,15,0,60,15,0,60,15, + 0,60,15,0,60,15,0,63,255,0,60,15,0,60,15,0, + 60,15,0,60,15,0,60,15,0,60,15,0,60,15,0,255, + 63,192,8,17,17,10,0,0,255,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,255,11,19,38,12,0,254,31, + 224,7,128,7,128,7,128,7,128,7,128,7,128,7,128,7, + 128,7,128,7,128,7,128,7,128,7,128,231,128,231,128,231, + 0,231,0,60,0,18,17,51,19,0,0,255,63,128,60,30, + 0,60,24,0,60,48,0,60,96,0,60,192,0,61,128,0, + 63,192,0,63,192,0,61,224,0,60,240,0,60,248,0,60, + 124,0,60,62,0,60,31,0,60,15,128,255,31,192,15,17, + 34,16,0,0,255,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,2,60,6, + 60,12,60,28,255,252,21,17,51,24,1,0,252,1,248,60, + 3,224,62,3,224,62,7,224,47,5,224,47,13,224,39,9, + 224,39,137,224,39,153,224,35,145,224,35,241,224,35,241,224, + 33,225,224,33,225,224,32,193,224,32,193,224,248,7,248,17, + 17,51,18,0,0,248,15,128,124,7,0,62,2,0,63,2, + 0,63,130,0,47,194,0,39,226,0,35,226,0,33,242,0, + 32,250,0,32,126,0,32,62,0,32,30,0,32,30,0,32, + 14,0,96,6,0,248,2,0,16,17,34,19,1,0,7,224, + 28,56,56,28,120,30,112,14,240,15,240,15,240,15,240,15, + 240,15,240,15,240,15,112,14,120,30,56,28,28,56,7,224, + 14,17,34,15,0,0,255,224,60,120,60,60,60,60,60,60, + 60,60,60,60,60,120,63,224,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,255,0,17,22,66,19,1,251,7,224, + 0,28,56,0,56,28,0,120,30,0,112,14,0,240,15,0, + 240,15,0,240,15,0,240,15,0,240,15,0,240,15,0,240, + 15,0,240,14,0,120,30,0,120,28,0,60,56,0,31,224, + 0,7,192,0,1,224,0,1,240,0,0,252,0,0,63,128, + 16,17,34,18,1,0,255,224,60,120,60,56,60,60,60,60, + 60,60,60,56,60,112,63,192,61,224,60,240,60,240,60,120, + 60,124,60,60,60,30,255,31,12,17,34,14,1,0,63,160, + 113,224,224,224,224,96,224,32,248,0,126,0,127,128,63,192, + 15,224,7,224,129,240,128,240,192,240,224,224,249,224,191,128, + 14,17,34,16,1,0,255,252,231,156,199,140,135,132,135,132, + 7,128,7,128,7,128,7,128,7,128,7,128,7,128,7,128, + 7,128,7,128,7,128,31,224,17,17,51,18,0,0,255,15, + 128,126,7,0,60,2,0,60,2,0,60,2,0,60,2,0, + 60,2,0,60,2,0,60,2,0,60,2,0,60,2,0,60, + 2,0,60,2,0,60,6,0,30,4,0,31,12,0,7,248, + 0,17,17,51,18,0,0,255,31,128,60,6,0,60,4,0, + 30,4,0,30,12,0,15,8,0,15,24,0,15,24,0,7, + 144,0,7,176,0,3,224,0,3,224,0,3,224,0,1,192, + 0,1,192,0,0,128,0,0,128,0,24,17,51,25,0,0, + 255,127,159,60,30,6,60,30,4,30,15,12,30,31,8,30, + 31,24,15,23,152,15,55,144,15,39,176,7,227,176,7,195, + 224,7,195,224,3,193,224,3,129,192,3,129,192,1,0,128, + 1,0,128,16,17,34,18,1,0,255,63,62,12,30,8,31, + 24,15,48,15,160,7,224,3,192,3,224,3,224,3,240,6, + 240,12,120,8,124,24,60,56,62,252,255,18,17,51,18,0, + 0,255,143,192,62,3,0,30,2,0,15,6,0,15,12,0, + 7,140,0,7,152,0,3,208,0,3,240,0,1,224,0,1, + 224,0,1,224,0,1,224,0,1,224,0,1,224,0,1,224, + 0,7,248,0,14,17,34,17,1,0,255,248,224,248,193,240, + 193,240,131,224,3,192,7,192,7,128,15,128,15,0,30,0, + 62,4,60,4,124,12,120,28,248,60,255,248,5,21,21,8, + 1,252,248,224,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,224,248,7,17,17,7,0,0,192,192,64, + 96,96,32,48,48,16,24,24,8,12,12,4,6,6,5,21, + 21,8,1,252,248,56,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,24,24,56,248,8,10,10,15,3,7,24, + 24,60,36,102,102,102,195,195,129,12,2,4,12,0,251,255, + 240,255,240,5,4,4,8,1,13,224,112,48,24,10,12,24, + 12,1,0,62,0,119,0,227,128,227,128,67,128,15,128,115, + 128,227,128,227,128,231,128,255,192,113,128,11,17,34,13,1, + 0,240,0,112,0,112,0,112,0,112,0,119,0,127,192,113, + 192,112,224,112,224,112,224,112,224,112,224,112,224,113,192,123, + 192,103,0,9,12,24,11,1,0,30,0,115,0,115,128,227, + 128,225,0,224,0,224,0,224,0,240,0,120,128,127,0,30, + 0,12,17,34,14,1,0,1,224,0,224,0,224,0,224,0, + 224,30,224,127,224,113,224,224,224,224,224,224,224,224,224,224, + 224,240,224,113,224,126,224,28,112,9,12,24,11,1,0,30, + 0,115,0,115,128,227,128,227,128,255,128,224,0,224,0,240, + 0,120,128,127,0,30,0,8,17,17,8,1,0,30,51,115, + 112,112,252,112,112,112,112,112,112,112,112,112,112,248,10,17, + 34,12,1,251,62,192,119,192,227,128,227,128,227,128,227,128, + 115,0,62,0,96,0,224,0,255,128,255,192,127,192,193,192, + 192,192,225,128,127,0,12,17,34,14,1,0,240,0,112,0, + 112,0,112,0,112,0,115,192,127,224,120,224,112,224,112,224, + 112,224,112,224,112,224,112,224,112,224,112,224,249,240,5,17, + 17,7,1,0,112,112,112,0,0,240,112,112,112,112,112,112, + 112,112,112,112,248,7,22,22,8,255,251,14,14,14,0,0, + 30,14,14,14,14,14,14,14,14,14,14,14,14,206,206,204, + 120,13,17,34,15,1,0,240,0,112,0,112,0,112,0,112, + 0,115,240,112,192,113,128,115,0,118,0,126,0,127,0,119, + 128,115,192,113,224,112,240,251,248,5,17,17,7,1,0,240, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,248, + 19,12,36,21,1,0,243,199,128,119,223,192,120,241,192,112, + 225,192,112,225,192,112,225,192,112,225,192,112,225,192,112,225, + 192,112,225,192,112,225,192,249,243,224,12,12,24,14,1,0, + 243,192,119,224,120,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,112,224,249,240,11,12,24,13,1,0,31,0, + 113,192,113,192,224,224,224,224,224,224,224,224,224,224,224,224, + 113,192,113,192,31,0,12,17,34,14,1,251,227,192,119,224, + 120,224,112,112,112,112,112,112,112,112,112,112,112,112,120,224, + 119,224,115,128,112,0,112,0,112,0,112,0,252,0,12,17, + 34,14,1,251,14,96,63,224,113,224,112,224,224,224,224,224, + 224,224,224,224,224,224,113,224,126,224,28,224,0,224,0,224, + 0,224,0,224,1,240,9,12,24,11,1,0,239,0,127,128, + 115,128,112,0,112,0,112,0,112,0,112,0,112,0,112,0, + 112,0,248,0,8,12,12,10,1,0,62,102,226,224,248,124, + 62,31,135,135,198,252,8,16,16,8,0,0,8,24,56,120, + 255,56,56,56,56,56,56,56,56,57,62,28,12,12,24,14, + 1,0,241,224,112,224,112,224,112,224,112,224,112,224,112,224, + 112,224,112,224,113,224,126,240,60,224,12,12,24,12,0,0, + 252,240,112,96,120,64,56,192,56,128,28,128,29,128,31,0, + 15,0,15,0,6,0,6,0,17,12,36,18,0,0,253,247, + 128,120,227,0,56,227,0,56,226,0,60,230,0,29,118,0, + 29,116,0,31,60,0,14,56,0,14,56,0,4,16,0,4, + 16,0,12,12,24,12,0,0,252,240,120,96,60,192,29,128, + 31,0,15,0,15,0,31,128,27,192,49,192,97,224,243,240, + 12,17,34,12,0,251,253,240,120,96,56,64,56,192,60,128, + 28,128,29,128,31,0,15,0,15,0,6,0,6,0,6,0, + 100,0,236,0,248,0,112,0,9,12,24,11,1,0,255,128, + 199,0,143,0,142,0,30,0,28,0,60,0,56,0,120,128, + 113,128,241,128,255,128,7,21,21,10,1,252,14,24,48,48, + 48,48,48,48,48,96,192,96,48,48,48,48,48,48,48,24, + 14,2,22,22,6,2,251,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,7,21,21, + 10,1,252,224,48,24,24,24,24,24,24,24,12,6,12,24, + 24,24,24,24,24,24,48,224,12,6,12,13,0,6,24,0, + 126,16,255,16,143,240,135,224,1,128,255}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=30 x= 4 y=18 dx=33 dy= 0 ascent=30 len=108 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =30 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24[10820] U8G_SECTION(".progmem.u8g_font_timB24") = { + 0,38,49,251,244,23,5,149,13,202,32,255,249,30,249,23, + 249,0,0,0,8,0,1,5,23,23,11,3,0,112,248,248, + 248,248,248,248,112,112,112,112,32,32,32,32,0,0,0,112, + 248,248,248,112,11,11,22,19,2,12,96,192,241,224,241,224, + 241,224,241,224,241,224,241,224,96,192,96,192,96,192,96,192, + 16,23,46,17,0,0,3,12,3,12,7,28,7,28,6,24, + 6,24,127,255,127,255,14,56,12,48,12,48,12,48,12,48, + 28,112,255,254,255,254,24,96,24,96,24,96,56,224,56,224, + 48,192,48,192,15,28,56,16,1,253,3,0,3,0,15,232, + 63,248,115,56,99,24,227,8,227,8,243,0,251,0,127,0, + 127,128,63,224,15,240,3,248,3,252,3,124,131,62,131,30, + 131,30,195,28,195,60,243,120,255,224,131,0,3,0,3,0, + 3,0,24,23,69,33,4,0,7,128,32,15,192,224,30,127, + 192,60,32,192,124,33,128,120,33,128,248,99,0,240,71,0, + 240,198,0,240,206,0,241,140,60,127,24,126,60,25,243,0, + 49,225,0,51,193,0,99,193,0,231,195,0,199,130,1,199, + 134,1,135,134,3,3,140,3,3,248,6,1,224,22,23,69, + 28,2,0,1,240,0,3,188,0,7,30,0,7,14,0,15, + 14,0,15,14,0,15,140,0,7,216,0,7,240,0,3,224, + 252,7,240,112,29,240,48,57,248,96,112,252,64,240,252,192, + 240,127,128,248,63,0,248,31,128,252,31,192,254,63,228,127, + 243,252,127,193,252,31,0,120,4,11,11,9,2,12,96,240, + 240,240,240,240,240,96,96,96,96,8,29,29,11,2,250,3, + 6,12,24,24,48,48,112,96,224,224,224,224,224,224,224,224, + 224,224,224,96,112,48,48,24,24,12,6,3,8,29,29,11, + 0,250,192,96,48,24,24,12,12,14,6,7,7,7,7,7, + 7,7,7,7,7,7,6,14,12,12,24,24,48,96,192,13, + 14,28,17,1,9,3,0,7,0,7,0,231,56,242,120,122, + 240,15,128,15,128,122,240,242,120,231,56,7,0,7,0,6, + 0,15,15,30,19,2,0,3,128,3,128,3,128,3,128,3, + 128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3, + 128,3,128,3,128,6,11,11,8,1,250,56,124,124,124,60, + 12,8,24,48,96,192,8,4,4,11,1,6,255,255,255,255, + 5,5,5,8,1,0,112,248,248,248,112,9,25,50,9,0, + 0,1,128,1,128,1,0,3,0,3,0,3,0,6,0,6, + 0,6,0,4,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,48,0,96,0,96,0,96,0,192, + 0,192,0,14,23,46,16,1,0,7,128,31,224,28,224,56, + 112,120,112,120,120,120,120,248,124,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,120,120,120,120,120,120,56, + 112,28,224,15,192,7,128,13,23,46,16,2,0,1,128,7, + 128,31,128,255,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,31,192,255,248,16,23,46,16,0, + 0,3,192,15,240,31,248,63,248,48,252,96,124,64,124,0, + 124,0,120,0,120,0,120,0,240,0,224,1,192,1,128,3, + 0,7,1,14,3,28,6,63,254,127,254,255,252,255,252,14, + 23,46,16,1,0,7,192,31,240,63,240,48,248,96,120,64, + 120,0,120,0,112,0,192,3,224,15,240,15,248,3,248,0, + 252,0,124,0,60,0,60,0,60,96,56,240,56,248,112,127, + 192,31,0,14,23,46,16,1,0,0,112,0,240,0,240,1, + 240,3,240,6,240,6,240,12,240,24,240,24,240,48,240,96, + 240,96,240,192,240,255,252,255,252,255,252,255,252,0,240,0, + 240,0,240,0,240,0,240,13,23,46,16,1,0,31,248,31, + 248,31,248,31,248,48,0,48,0,32,0,62,0,127,128,127, + 224,127,240,127,240,3,248,0,248,0,120,0,56,0,56,0, + 56,96,48,240,48,248,96,127,192,31,0,14,23,46,16,1, + 0,0,28,0,240,3,192,7,128,15,0,30,0,62,0,60, + 0,124,0,127,224,253,240,248,248,248,120,248,124,248,124,248, + 124,248,124,120,124,120,120,120,120,56,112,28,224,15,192,13, + 23,46,16,2,0,127,248,127,248,255,248,255,248,192,48,128, + 112,128,112,0,96,0,224,0,224,0,192,1,192,1,192,3, + 128,3,128,3,128,7,0,7,0,7,0,14,0,14,0,14, + 0,28,0,14,23,46,16,1,0,15,224,62,240,60,120,120, + 120,120,56,120,56,124,56,126,112,63,224,63,128,31,192,15, + 224,63,240,113,248,112,252,224,124,224,60,224,60,224,60,240, + 56,120,120,127,240,31,192,14,23,46,16,1,0,15,192,28, + 224,56,112,120,120,120,120,248,120,248,124,248,124,248,124,248, + 124,120,124,124,124,62,252,31,248,0,248,0,240,1,240,1, + 224,3,192,7,128,15,0,60,0,224,0,5,16,16,11,3, + 0,112,248,248,248,112,0,0,0,0,0,0,112,248,248,248, + 112,6,22,22,11,2,250,56,124,124,124,56,0,0,0,0, + 0,0,56,124,124,124,60,12,8,24,48,96,192,16,15,30, + 19,1,0,0,3,0,15,0,127,1,252,15,224,63,128,252, + 0,240,0,252,0,63,128,15,224,1,252,0,127,0,15,0, + 3,15,10,20,19,2,3,255,254,255,254,255,254,0,0,0, + 0,0,0,0,0,255,254,255,254,255,254,16,15,30,19,2, + 0,192,0,240,0,254,0,63,128,7,240,1,252,0,63,0, + 15,0,63,1,252,7,240,63,128,254,0,240,0,192,0,12, + 23,46,16,2,0,63,0,115,192,225,224,225,240,241,240,241, + 240,97,240,1,224,1,224,3,192,3,128,3,0,6,0,4, + 0,4,0,0,0,0,0,0,0,14,0,31,0,31,0,31, + 0,14,0,26,27,108,31,2,251,0,31,224,0,0,252,60, + 0,3,224,14,0,7,128,3,0,15,0,1,0,30,0,1, + 128,62,15,56,128,60,31,248,192,124,124,248,64,120,120,120, + 64,248,248,240,64,248,240,240,64,241,240,240,64,241,240,240, + 64,241,224,240,192,241,225,224,128,241,225,225,128,241,227,227, + 0,113,243,227,0,120,254,254,0,120,120,120,0,60,0,0, + 0,28,0,0,0,14,0,1,128,7,128,7,0,1,224,60, + 0,0,63,224,0,21,23,69,24,1,0,0,32,0,0,96, + 0,0,112,0,0,240,0,0,248,0,0,248,0,1,248,0, + 1,124,0,1,124,0,3,62,0,2,62,0,6,62,0,6, + 31,0,4,31,0,12,15,0,15,255,128,24,15,128,24,7, + 192,16,7,192,48,3,224,48,3,224,112,7,240,252,31,248, + 19,23,69,22,1,0,255,252,0,63,31,0,31,15,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 128,31,15,128,31,62,0,31,252,0,31,15,128,31,7,192, + 31,7,224,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,192,31,7,192,63,15,0,255,252,0,19,23,69,24,2, + 0,1,252,32,7,255,96,15,7,224,30,1,224,60,0,224, + 124,0,96,124,0,96,248,0,32,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,124,0,0,124,0,0,60,0,32,30,0,96,15,129,192, + 3,255,128,0,254,0,22,23,69,24,0,0,255,252,0,63, + 255,128,31,7,224,31,1,240,31,1,240,31,0,248,31,0, + 248,31,0,252,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,248,31,0,248,31, + 0,248,31,1,240,31,1,224,31,7,192,63,255,0,255,252, + 0,21,23,69,22,0,0,255,255,224,63,255,224,31,0,224, + 31,0,96,31,0,96,31,0,32,31,0,32,31,4,0,31, + 4,0,31,12,0,31,28,0,31,252,0,31,28,0,31,12, + 0,31,4,0,31,4,0,31,0,8,31,0,24,31,0,48, + 31,0,112,31,1,240,63,255,224,255,255,224,19,23,69,20, + 0,0,255,255,224,63,255,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,0,32,31,4,0,31,4,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,4,0,31, + 4,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,63,128,0,255,224,0,22,23,69,25,2,0,1,252,32, + 7,255,96,15,7,224,30,1,224,60,0,224,124,0,96,124, + 0,96,248,0,32,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,31,252,248,7,240,248,3,224,124,3,224, + 124,3,224,60,3,224,62,3,224,30,7,224,15,143,224,3, + 255,0,24,23,69,25,0,0,255,231,255,63,129,252,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,255,248,31,255,248,31,0,248,31, + 0,248,31,0,248,31,0,248,31,0,248,31,0,248,31,0, + 248,31,0,248,31,0,248,63,129,252,255,231,255,11,23,46, + 13,1,0,255,224,63,128,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,63,128,255, + 224,15,26,52,16,0,253,15,254,3,248,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,97,240,241, + 240,241,240,243,224,227,224,127,192,31,0,24,23,69,25,1, + 0,255,207,252,127,3,224,62,1,192,62,3,128,62,7,0, + 62,14,0,62,28,0,62,56,0,62,112,0,62,224,0,63, + 240,0,63,248,0,63,252,0,62,254,0,62,127,0,62,63, + 128,62,31,192,62,15,224,62,7,240,62,3,248,62,1,252, + 127,0,254,255,195,255,20,23,69,22,1,0,255,224,0,63, + 128,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,16,31, + 0,48,31,0,96,31,0,224,31,129,224,63,255,192,255,255, + 192,28,23,92,31,1,0,255,0,15,240,63,0,31,192,31, + 128,31,128,31,128,63,128,23,192,63,128,23,192,47,128,23, + 192,111,128,19,224,79,128,19,224,207,128,19,224,207,128,17, + 240,143,128,17,241,143,128,16,249,15,128,16,251,15,128,16, + 251,15,128,16,126,15,128,16,126,15,128,16,124,15,128,16, + 60,15,128,16,60,15,128,16,24,15,128,56,24,31,192,254, + 24,63,240,22,23,69,24,1,0,254,1,252,127,0,112,63, + 128,32,31,128,32,31,192,32,31,224,32,23,240,32,19,248, + 32,17,248,32,17,252,32,16,254,32,16,127,32,16,63,32, + 16,31,160,16,31,224,16,15,224,16,7,224,16,3,224,16, + 3,224,16,1,224,16,0,224,56,0,96,254,0,32,21,23, + 69,25,2,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,19,23,69,20,0,0,255, + 252,0,63,31,128,31,15,192,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,192,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,63,128, + 0,255,224,0,22,27,81,26,2,252,1,252,0,7,255,0, + 15,143,128,30,3,192,60,1,224,124,1,240,120,0,240,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,124,1,240, + 124,1,240,62,3,224,31,7,192,7,255,0,1,252,0,0, + 254,0,0,127,132,0,31,248,0,7,224,22,23,69,24,1, + 0,255,252,0,63,31,128,31,7,192,31,7,224,31,3,224, + 31,3,224,31,3,224,31,3,224,31,7,224,31,7,192,31, + 31,128,31,252,0,31,126,0,31,62,0,31,63,0,31,31, + 128,31,31,128,31,15,192,31,7,224,31,7,224,31,3,240, + 63,129,248,255,225,252,15,23,46,18,1,0,15,196,56,124, + 112,60,112,28,240,12,240,12,248,4,252,0,255,0,127,192, + 63,240,31,248,15,252,3,252,1,254,128,126,128,62,192,30, + 192,30,224,28,240,28,248,56,143,224,19,23,69,22,1,0, + 255,255,224,249,243,224,225,240,224,193,240,96,129,240,32,129, + 240,32,129,240,32,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,3, + 248,0,15,254,0,23,23,69,24,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,23,69,24,1,0,255,195,252,127,0,240,62,0,96,63, + 0,64,31,0,192,31,128,192,15,128,128,15,129,128,15,193, + 0,7,193,0,7,195,0,3,226,0,3,230,0,3,246,0, + 1,244,0,1,252,0,0,248,0,0,248,0,0,248,0,0, + 112,0,0,112,0,0,32,0,0,32,0,32,23,92,33,0, + 0,255,239,255,63,127,3,248,14,63,1,248,12,31,1,248, + 12,31,1,248,8,31,129,252,24,15,129,252,24,15,129,124, + 16,15,195,124,48,7,194,126,48,7,198,62,32,7,230,62, + 96,3,228,62,96,3,236,31,64,3,248,31,192,1,248,31, + 192,1,248,15,128,1,240,15,128,0,240,15,128,0,224,7, + 0,0,224,7,0,0,224,7,0,0,64,2,0,21,23,69, + 24,1,0,255,207,224,127,3,0,63,2,0,31,134,0,31, + 132,0,15,204,0,15,200,0,7,248,0,3,240,0,3,240, + 0,1,248,0,0,248,0,1,252,0,1,124,0,3,62,0, + 2,63,0,6,31,0,4,31,128,12,15,192,8,15,192,24, + 7,224,56,7,240,254,63,248,22,23,69,24,1,0,255,195, + 252,127,0,240,63,0,96,63,0,96,31,128,192,31,128,128, + 15,193,128,15,195,0,7,227,0,3,230,0,3,244,0,1, + 252,0,1,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,1,252,0, + 7,255,0,19,23,69,22,1,0,63,255,192,126,15,128,120, + 31,128,112,31,0,96,63,0,64,126,0,0,126,0,0,252, + 0,0,252,0,1,248,0,1,240,0,3,240,0,3,224,0, + 7,224,0,7,192,0,15,192,32,31,128,32,31,128,96,63, + 0,96,63,0,224,126,1,224,126,7,192,255,255,192,7,28, + 28,11,2,251,254,240,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,254, + 8,26,26,9,0,0,128,192,192,192,96,96,96,96,48,48, + 48,24,24,24,24,12,12,12,4,6,6,6,3,3,3,3, + 7,28,28,11,1,251,254,30,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 30,254,11,13,26,19,4,10,14,0,14,0,31,0,31,0, + 27,0,59,128,59,128,113,192,113,192,97,192,224,224,224,224, + 192,96,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,11,1,17,192,224,112,56,12,2,14,16,32,16,1,0, + 31,128,49,224,112,240,120,240,120,240,48,240,1,240,7,240, + 28,240,56,240,120,240,240,240,249,240,255,244,126,252,60,120, + 17,22,66,18,0,0,252,0,0,124,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,120,0,61,254,0,63,254, + 0,62,31,0,60,31,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,15,128,60,15,0,60,31,0,62, + 62,0,55,252,0,33,240,0,14,16,32,15,1,0,7,240, + 30,120,60,60,124,60,120,24,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,124,0,62,24,31,240,15,224,16,22, + 44,18,1,0,0,252,0,124,0,60,0,60,0,60,0,60, + 15,188,63,252,124,60,120,60,248,60,240,60,240,60,240,60, + 240,60,240,60,240,60,240,60,120,60,124,126,63,255,15,184, + 14,16,32,15,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,12,23,46,11,0,0,7,224,30,112, + 28,240,60,240,60,96,60,0,60,0,255,128,255,128,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,126,0,255,0,14,23,46,16,1,249, + 15,192,61,252,112,252,240,240,240,120,240,120,240,120,240,120, + 120,248,63,240,31,192,60,0,96,0,224,0,255,224,255,248, + 127,252,48,60,96,28,192,12,224,28,127,248,31,224,17,22, + 66,18,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,120,0,61,252,0,63,254,0,62, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 126,63,0,255,127,128,8,23,23,9,0,0,24,60,60,60, + 24,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,10,30,60,11,254,249,1,128,3,192,3,192,3, + 192,1,128,0,0,0,0,15,192,7,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,99,192,243,192,243, + 128,119,128,62,0,18,22,66,18,0,0,252,0,0,124,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,31,0, + 60,14,0,60,12,0,60,24,0,60,48,0,60,96,0,60, + 192,0,61,192,0,63,224,0,61,240,0,60,248,0,60,124, + 0,60,62,0,60,31,0,126,15,128,255,31,192,8,22,22, + 9,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,26,16,64,27,0,0,252, + 120,60,0,125,254,254,0,63,63,159,0,62,63,31,0,62, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,126,63,31,128,255,127,191,192,17, + 16,48,18,0,0,252,120,0,125,252,0,63,62,0,62,30, + 0,62,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,14,16,32,17,1,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,23,69,18,0, + 249,252,248,0,125,254,0,63,31,0,62,15,0,60,15,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,60,7,128,62,15,0,63,15,0,63,254,0,60,248, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 126,0,0,255,0,0,16,23,46,18,1,249,15,196,62,236, + 124,60,120,60,248,60,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,120,60,120,124,63,252,15,60,0,60,0,60, + 0,60,0,60,0,60,0,126,0,255,13,16,32,15,1,0, + 252,112,124,248,63,248,63,120,62,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,126,0,255,0, + 10,16,32,13,1,0,31,64,113,192,96,192,224,192,240,64, + 252,0,127,0,127,128,63,128,15,192,3,192,129,192,193,192, + 193,192,227,128,191,0,10,21,42,11,0,0,4,0,12,0, + 28,0,28,0,60,0,127,128,255,128,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,64, + 62,192,63,128,30,0,17,16,48,18,0,0,252,126,0,124, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,62,0,62,95,0,31,223,128,7,140,0,15,16,32,17, + 0,0,255,62,124,12,60,8,62,24,30,16,31,16,31,48, + 15,32,15,32,7,224,7,192,7,192,3,128,3,128,1,0, + 1,0,23,16,48,24,0,0,255,127,190,126,62,28,60,30, + 8,62,30,24,30,31,16,31,31,48,31,63,48,15,47,160, + 15,231,224,7,231,192,7,199,192,7,195,192,3,131,128,3, + 131,128,1,1,0,1,1,0,16,16,32,17,0,0,255,62, + 126,24,62,24,31,48,31,96,15,192,15,192,7,192,3,224, + 3,224,7,240,13,248,24,248,24,124,48,124,252,255,15,23, + 46,17,0,249,255,190,126,12,62,8,62,8,31,24,31,16, + 15,16,15,176,15,160,7,160,7,224,7,192,3,192,3,192, + 1,128,1,128,1,128,1,0,115,0,243,0,246,0,254,0, + 120,0,12,16,32,15,1,0,255,240,227,240,195,224,135,224, + 135,192,15,128,15,128,31,0,31,0,62,0,62,16,124,16, + 124,48,248,48,248,240,255,240,10,27,54,13,1,252,7,192, + 14,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,56,0,112,0,224,0,112,0,56,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 14,0,7,192,2,30,30,7,3,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,10,27,54,13,1,252,248,0, + 28,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,7,0,3,128,1,192,3,128,7,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 28,0,248,0,15,8,16,17,1,8,28,0,63,0,127,130, + 255,198,143,254,131,252,1,248,0,112,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,0,0,0,8,0, + 1,5,23,23,11,3,249,112,248,248,248,112,0,0,0,32, + 32,32,32,112,112,112,112,248,248,248,248,248,248,112,13,25, + 50,17,1,251,0,8,0,8,0,24,0,16,7,240,28,224, + 56,240,120,240,240,240,240,224,240,128,241,128,241,0,243,0, + 242,0,250,16,126,48,127,224,63,192,15,0,8,0,16,0, + 16,0,32,0,32,0,16,23,46,17,1,0,0,240,3,252, + 7,30,14,30,14,30,30,12,30,0,30,0,31,0,15,0, + 15,0,127,240,127,240,7,128,7,128,7,128,55,128,127,1, + 239,3,199,135,199,255,238,254,124,124,14,15,30,17,1,4, + 96,24,247,188,255,252,127,248,60,240,120,120,112,56,112,56, + 112,56,120,120,60,240,127,248,255,252,247,188,96,24,18,23, + 69,17,1,0,255,135,192,62,3,128,62,3,0,31,3,0, + 31,6,0,31,134,0,15,132,0,15,140,0,7,200,0,7, + 216,0,7,208,0,3,240,0,31,252,0,31,252,0,3,224, + 0,31,252,0,31,252,0,1,224,0,1,224,0,1,224,0, + 1,224,0,3,240,0,15,252,0,2,30,30,7,3,249,192, + 192,192,192,192,192,192,192,192,192,192,192,0,0,0,0,0, + 0,192,192,192,192,192,192,192,192,192,192,192,192,12,28,56, + 17,2,251,15,128,24,192,48,224,113,224,113,224,120,192,60, + 0,62,0,31,0,15,128,63,192,99,224,193,224,192,240,224, + 112,240,48,120,48,124,96,63,192,31,128,7,128,3,192,49, + 224,120,224,120,224,112,192,49,128,31,0,8,4,4,11,2, + 18,66,231,231,66,22,23,69,25,1,0,1,254,0,7,255, + 128,15,3,192,28,0,224,56,0,112,48,254,48,113,199,56, + 99,131,24,231,131,28,199,0,12,199,0,12,199,0,12,199, + 0,12,199,128,12,195,195,12,227,230,28,96,252,24,112,0, + 56,56,0,112,28,0,224,15,3,192,7,255,128,1,254,0, + 9,14,28,10,0,9,60,0,102,0,103,0,103,0,31,0, + 103,0,199,0,199,0,239,128,115,0,0,0,0,0,255,128, + 255,128,14,14,28,17,2,1,2,4,6,12,14,28,28,56, + 56,112,112,224,225,192,225,192,112,224,56,112,28,56,14,28, + 6,12,2,4,16,9,18,19,1,3,255,255,255,255,255,255, + 0,7,0,7,0,7,0,7,0,7,0,7,8,4,4,11, + 1,6,255,255,255,255,22,23,69,25,2,0,1,254,0,7, + 255,128,15,3,192,28,0,224,56,0,112,51,252,48,113,206, + 56,96,199,24,224,199,28,192,199,12,192,206,12,192,248,12, + 192,220,12,192,206,12,192,198,12,224,199,28,97,195,152,115, + 227,248,56,0,112,28,0,224,15,3,192,7,255,128,1,254, + 0,9,2,4,11,1,18,255,128,255,128,9,10,20,13,2, + 13,28,0,127,0,99,0,193,128,193,128,193,128,193,128,99, + 0,127,0,60,0,15,19,38,19,2,0,3,128,3,128,3, + 128,3,128,3,128,3,128,255,254,255,254,255,254,3,128,3, + 128,3,128,3,128,3,128,3,128,0,0,255,254,255,254,255, + 254,10,14,28,10,1,9,62,0,127,0,199,128,131,128,3, + 128,3,128,3,0,6,0,12,0,24,0,48,64,127,192,255, + 128,255,128,9,14,28,10,1,9,30,0,63,0,103,128,67, + 128,3,0,6,0,31,0,7,128,3,128,3,128,3,128,195, + 128,231,0,126,0,7,6,6,11,3,17,6,14,28,56,96, + 128,16,22,44,19,2,250,248,252,120,124,120,60,120,60,120, + 60,120,60,120,60,120,60,120,60,120,60,120,60,120,60,120, + 124,124,252,127,191,95,56,64,0,224,0,224,0,224,0,224, + 0,224,0,16,29,58,18,1,250,15,255,63,255,63,140,127, + 140,255,140,255,140,255,140,255,140,255,140,255,140,255,140,127, + 140,63,140,63,140,15,140,1,140,1,140,1,140,1,140,1, + 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,4,4,4,8,2,9,96,240,240,96,7,7,7, + 11,1,249,6,12,28,14,198,238,124,9,14,28,10,0,9, + 12,0,124,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,255,128,9,14,28,11, + 1,9,28,0,119,0,99,0,227,128,227,128,227,128,227,128, + 99,0,119,0,28,0,0,0,0,0,255,128,255,128,14,14, + 28,17,1,1,129,0,193,128,225,192,112,224,56,112,28,56, + 14,28,14,28,28,56,56,112,112,224,225,192,193,128,129,0, + 23,23,69,25,0,0,12,0,8,124,0,24,28,0,48,28, + 0,48,28,0,96,28,0,96,28,0,192,28,1,128,28,1, + 128,28,3,12,28,6,28,28,6,60,28,12,124,255,152,252, + 0,24,220,0,49,156,0,99,156,0,99,28,0,199,254,1, + 199,254,1,128,28,3,0,28,3,0,28,23,23,69,25,0, + 0,12,0,48,124,0,96,28,0,96,28,0,192,28,0,128, + 28,1,128,28,3,0,28,2,0,28,6,0,28,12,240,28, + 25,248,28,27,60,28,50,28,255,176,28,0,96,28,0,96, + 24,0,192,48,1,128,96,1,128,192,3,1,130,6,3,254, + 6,7,252,12,15,252,22,23,69,25,1,0,30,0,16,63, + 0,48,103,128,96,67,128,96,3,0,192,6,0,192,31,1, + 128,7,131,0,3,131,0,3,134,24,3,140,56,195,140,120, + 231,24,248,126,49,248,0,49,184,0,99,56,0,199,56,0, + 198,56,1,143,252,3,143,252,3,0,56,6,0,56,6,0, + 56,12,23,46,16,2,249,7,0,15,128,15,128,15,128,7, + 0,0,0,0,0,0,0,2,0,2,0,6,0,12,0,28, + 0,60,0,120,0,120,0,248,96,248,240,248,240,248,112,120, + 112,60,224,31,192,21,30,90,24,1,0,6,0,0,7,0, + 0,3,128,0,1,192,0,0,96,0,0,0,0,0,32,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,30,90,24,1,0,0,3,0,0,7, + 0,0,14,0,0,28,0,0,48,0,0,64,0,0,0,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,30,90,24,1,0,0,96,0,0,240, + 0,1,248,0,1,152,0,3,12,0,2,4,0,0,0,0, + 0,32,0,0,96,0,0,112,0,0,240,0,0,248,0,0, + 248,0,1,248,0,1,124,0,1,124,0,3,62,0,2,62, + 0,6,62,0,6,31,0,4,31,0,12,15,0,15,255,128, + 24,15,128,24,7,192,16,7,192,48,3,224,48,3,224,112, + 7,240,252,31,248,21,29,87,24,1,0,0,194,0,1,246, + 0,3,124,0,2,24,0,0,0,0,0,0,0,0,32,0, + 0,96,0,0,112,0,0,240,0,0,248,0,0,248,0,1, + 248,0,1,124,0,1,124,0,3,62,0,2,62,0,6,62, + 0,6,31,0,4,31,0,12,15,0,15,255,128,24,15,128, + 24,7,192,16,7,192,48,3,224,48,3,224,112,7,240,252, + 31,248,21,29,87,24,1,0,1,8,0,3,156,0,3,156, + 0,1,8,0,0,0,0,0,0,0,0,32,0,0,96,0, + 0,112,0,0,240,0,0,248,0,0,248,0,1,248,0,1, + 124,0,1,124,0,3,62,0,2,62,0,6,62,0,6,31, + 0,4,31,0,12,15,0,15,255,128,24,15,128,24,7,192, + 16,7,192,48,3,224,48,3,224,112,7,240,252,31,248,21, + 30,90,24,1,0,0,224,0,1,176,0,3,24,0,2,8, + 0,3,24,0,1,176,0,0,224,0,0,0,0,0,96,0, + 0,112,0,0,240,0,0,248,0,0,248,0,1,248,0,1, + 124,0,1,124,0,3,62,0,2,62,0,6,62,0,6,31, + 0,4,31,0,12,15,0,15,255,128,24,15,128,24,7,192, + 16,7,192,48,3,224,48,3,224,112,7,240,252,31,248,32, + 23,92,33,0,0,3,255,255,252,0,255,255,252,0,99,224, + 28,0,99,224,12,0,195,224,12,0,195,224,4,1,131,224, + 4,1,131,224,128,3,3,224,128,3,3,225,128,2,3,227, + 128,7,255,255,128,7,255,227,128,12,3,225,128,12,3,224, + 128,24,3,224,128,24,3,224,1,56,3,224,3,48,3,224, + 6,112,3,224,14,112,3,224,62,248,7,255,252,254,31,255, + 252,19,30,90,24,2,249,1,252,32,7,255,96,15,7,224, + 30,1,224,60,0,224,124,0,96,124,0,96,248,0,32,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,0,0,124,0,0,124,0,0,60,0,32, + 30,0,96,15,129,192,3,255,128,0,254,0,0,24,0,0, + 48,0,0,112,0,0,56,0,3,24,0,3,184,0,1,240, + 0,21,30,90,22,0,0,6,0,0,7,0,0,3,128,0, + 1,192,0,0,96,0,0,48,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,30,90,22,0,0,0,1,128,0,3,128,0,7,0, + 0,14,0,0,24,0,0,48,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,30,90,22,0,0,0,48,0,0,120,0,0,252,0, + 0,204,0,1,134,0,1,2,0,0,0,0,255,255,224,63, + 255,224,31,0,224,31,0,96,31,0,96,31,0,32,31,0, + 32,31,4,0,31,4,0,31,12,0,31,28,0,31,252,0, + 31,28,0,31,12,0,31,4,0,31,4,0,31,0,8,31, + 0,24,31,0,48,31,0,112,31,1,240,63,255,224,255,255, + 224,21,29,87,22,0,0,0,132,0,1,206,0,1,206,0, + 0,132,0,0,0,0,0,0,0,255,255,224,63,255,224,31, + 0,224,31,0,96,31,0,96,31,0,32,31,0,32,31,4, + 0,31,4,0,31,12,0,31,28,0,31,252,0,31,28,0, + 31,12,0,31,4,0,31,4,0,31,0,8,31,0,24,31, + 0,48,31,0,112,31,1,240,63,255,224,255,255,224,11,30, + 60,13,1,0,192,0,224,0,112,0,56,0,12,0,6,0, + 0,0,255,224,63,128,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,63,128,255,224, + 12,30,60,13,1,0,0,48,0,112,0,224,1,192,3,0, + 6,0,0,0,255,224,63,128,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,63,128, + 255,224,11,30,60,13,1,0,6,0,15,0,31,128,25,128, + 48,192,32,64,0,0,255,224,63,128,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 63,128,255,224,11,29,58,13,1,0,16,128,57,192,57,192, + 16,128,0,0,0,0,255,224,63,128,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 31,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0, + 63,128,255,224,22,23,69,24,0,0,255,254,0,63,15,128, + 31,3,224,31,1,240,31,1,240,31,0,248,31,0,248,31, + 0,252,31,0,252,31,0,252,255,240,124,255,240,124,255,240, + 124,31,0,124,31,0,252,31,0,248,31,0,248,31,0,248, + 31,1,240,31,1,224,31,3,192,63,15,128,127,254,0,22, + 29,87,24,1,0,0,97,0,0,251,0,1,190,0,1,12, + 0,0,0,0,0,0,0,254,1,252,127,0,112,63,128,32, + 31,128,32,31,192,32,31,224,32,23,240,32,19,248,32,17, + 248,32,17,252,32,16,254,32,16,127,32,16,63,32,16,31, + 160,16,31,224,16,15,224,16,7,224,16,3,224,16,3,224, + 16,1,224,16,0,224,56,0,96,254,0,32,21,30,90,25, + 2,0,6,0,0,7,0,0,3,128,0,1,192,0,0,96, + 0,0,48,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,30,90,25, + 2,0,0,3,128,0,7,0,0,14,0,0,24,0,0,48, + 0,0,96,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,30,90,25, + 2,0,0,48,0,0,120,0,0,252,0,0,204,0,1,134, + 0,1,2,0,0,0,0,1,252,0,7,255,0,15,143,128, + 30,3,192,60,1,224,124,1,240,120,0,240,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,120,0,240,124,1,240,60,1,224, + 30,3,192,15,143,128,7,255,0,1,252,0,21,29,87,25, + 2,0,0,194,0,1,246,0,3,124,0,2,24,0,0,0, + 0,0,0,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,21,29,87,25,2,0,0, + 132,0,1,206,0,1,206,0,0,132,0,0,0,0,0,0, + 0,1,252,0,7,255,0,15,143,128,30,3,192,60,1,224, + 124,1,240,120,0,240,248,0,248,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,120,0,240,124,1,240,60,1,224,30,3,192,15,143,128, + 7,255,0,1,252,0,15,16,32,19,2,0,64,4,224,14, + 240,30,120,60,60,120,30,240,15,224,7,192,7,192,15,224, + 30,240,60,120,120,60,240,30,224,14,64,4,21,27,81,26, + 2,254,0,0,48,0,0,96,1,252,64,7,143,192,14,3, + 128,30,1,192,60,3,224,124,6,240,120,4,240,248,12,248, + 248,24,248,248,24,248,248,48,248,248,32,248,248,96,248,248, + 192,248,248,128,248,249,128,248,123,0,240,126,1,240,62,1, + 224,28,3,192,14,7,128,31,254,0,17,248,0,48,0,0, + 96,0,0,23,30,90,24,0,0,0,192,0,0,224,0,0, + 112,0,0,56,0,0,12,0,0,2,0,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,30,90,24,0,0,0,0,192,0,1,192,0, + 3,128,0,7,0,0,12,0,0,16,0,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,30,90,24,0,0,0,12,0,0,30,0,0, + 63,0,0,51,0,0,97,128,0,64,128,0,0,0,255,224, + 254,63,128,56,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,31,0,48,15,128,48,15,128,96,7,192,192,3,255,128, + 0,254,0,23,29,87,24,0,0,0,33,0,0,115,128,0, + 115,128,0,33,0,0,0,0,0,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 48,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,30,90,24,1,0,0,0,192,0,1,192,0,3,128,0, + 7,0,0,12,0,0,16,0,0,0,0,255,195,252,127,0, + 240,63,0,96,63,0,96,31,128,192,31,128,128,15,193,128, + 15,195,0,7,227,0,3,230,0,3,244,0,1,252,0,1, + 248,0,0,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,1,252,0,7,255,0, + 19,23,69,20,0,0,255,224,0,63,128,0,31,0,0,31, + 0,0,31,254,0,31,15,128,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,224,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,63,128,0,255,224,0,17,23,69,19,0, + 0,3,240,0,14,60,0,30,62,0,28,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,28,0,60,56,0,60, + 224,0,60,60,0,60,30,0,60,15,0,60,15,0,60,15, + 128,60,15,128,60,15,128,60,15,128,60,15,0,60,15,0, + 60,30,0,252,124,0,14,23,46,16,1,0,48,0,56,0, + 28,0,14,0,3,0,0,128,0,0,31,128,49,224,112,240, + 120,240,120,240,48,240,1,240,7,240,28,240,56,240,120,240, + 240,240,249,240,255,244,126,252,60,120,14,23,46,16,1,0, + 0,48,0,112,0,224,1,192,3,0,4,0,0,0,31,128, + 49,224,112,240,120,240,120,240,48,240,1,240,7,240,28,240, + 56,240,120,240,240,240,249,240,255,244,126,252,60,120,14,23, + 46,16,1,0,3,0,7,128,15,192,12,192,24,96,16,32, + 0,0,31,128,49,224,112,240,120,240,120,240,48,240,1,240, + 7,240,28,240,56,240,120,240,240,240,249,240,255,244,126,252, + 60,120,14,22,44,16,1,0,12,32,31,96,55,192,33,128, + 0,0,0,0,31,128,49,224,112,240,120,240,120,240,48,240, + 1,240,7,240,28,240,56,240,120,240,240,240,249,240,255,244, + 126,252,60,120,14,22,44,16,1,0,8,64,28,224,28,224, + 8,64,0,0,0,0,31,128,49,224,112,240,120,240,120,240, + 48,240,1,240,7,240,28,240,56,240,120,240,240,240,249,240, + 255,244,126,252,60,120,14,25,50,16,1,0,7,0,13,128, + 24,192,16,64,24,192,13,128,7,0,0,0,0,0,31,128, + 49,224,112,240,120,240,120,240,48,240,1,240,7,240,28,240, + 56,240,120,240,240,240,249,240,255,244,126,252,60,120,21,16, + 48,24,1,0,31,135,192,49,238,224,112,252,112,120,248,112, + 120,248,56,48,248,56,1,248,56,7,255,248,28,248,0,56, + 248,0,120,252,0,248,252,8,248,254,24,255,255,240,126,63, + 224,60,15,192,13,23,46,15,1,249,7,224,30,240,60,120, + 120,120,120,48,240,0,240,0,240,0,240,0,240,0,248,0, + 120,0,120,0,60,48,31,224,15,192,3,0,6,0,6,0, + 3,128,49,128,59,128,31,0,14,23,46,15,0,0,48,0, + 56,0,28,0,14,0,3,0,0,128,0,0,7,192,30,240, + 60,112,120,56,120,60,248,60,248,60,255,252,248,0,248,0, + 248,0,120,0,124,0,62,24,31,240,7,224,14,23,46,15, + 0,0,0,24,0,56,0,112,0,224,1,128,2,0,0,0, + 7,192,30,240,60,112,120,56,120,60,248,60,248,60,255,252, + 248,0,248,0,248,0,120,0,124,0,62,24,31,240,7,224, + 14,23,46,15,0,0,3,0,7,128,15,192,12,192,24,96, + 16,32,0,0,7,192,30,240,60,112,120,56,120,60,248,60, + 248,60,255,252,248,0,248,0,248,0,120,0,124,0,62,24, + 31,240,7,224,14,22,44,15,0,0,4,32,14,112,14,112, + 4,32,0,0,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,8,23,23,9,0,0,192,224,112,56, + 12,2,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,8,23,23,9,0,0,3,7,14,28,48,64,0, + 252,124,60,60,60,60,60,60,60,60,60,60,60,60,126,255, + 8,23,23,9,0,0,24,60,126,102,195,129,0,252,124,60, + 60,60,60,60,60,60,60,60,60,60,60,126,255,8,22,22, + 9,0,0,66,231,231,66,0,0,252,124,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,14,22,44,17,1,0,56, + 48,62,248,15,248,255,128,251,192,97,224,15,240,60,248,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,22,66,18,0, + 0,3,8,0,7,216,0,13,240,0,8,96,0,0,0,0, + 0,0,0,252,120,0,125,252,0,63,62,0,62,30,0,62, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,126,63,0, + 255,127,128,14,23,46,17,1,0,48,0,56,0,28,0,14, + 0,3,0,0,128,0,0,15,192,60,240,120,120,120,120,240, + 60,240,60,240,60,240,60,240,60,240,60,240,60,240,60,120, + 120,120,120,60,240,15,192,14,23,46,17,1,0,0,24,0, + 56,0,112,0,224,1,128,2,0,0,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,14,23,46,17,1, + 0,3,0,7,128,15,192,12,192,24,96,16,32,0,0,15, + 192,60,240,120,120,120,120,240,60,240,60,240,60,240,60,240, + 60,240,60,240,60,240,60,120,120,120,120,60,240,15,192,14, + 22,44,17,1,0,12,32,31,96,55,192,33,128,0,0,0, + 0,15,192,60,240,120,120,120,120,240,60,240,60,240,60,240, + 60,240,60,240,60,240,60,240,60,120,120,120,120,60,240,15, + 192,14,22,44,17,1,0,8,64,28,224,28,224,8,64,0, + 0,0,0,15,192,60,240,120,120,120,120,240,60,240,60,240, + 60,240,60,240,60,240,60,240,60,240,60,120,120,120,120,60, + 240,15,192,14,15,30,19,2,1,3,0,7,128,7,128,3, + 0,0,0,0,0,255,252,255,252,255,252,0,0,0,0,3, + 0,7,128,7,128,3,0,14,22,44,17,1,253,0,8,0, + 24,0,24,15,240,60,240,120,120,120,120,240,252,241,188,241, + 60,243,60,242,60,246,60,252,60,248,60,120,120,120,120,60, + 240,111,192,96,0,192,0,128,0,17,23,69,18,0,0,24, + 0,0,28,0,0,14,0,0,7,0,0,1,128,0,0,64, + 0,0,0,0,252,126,0,124,62,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,62,0,62,127,0,31,223, + 128,7,140,0,17,23,69,18,0,0,0,12,0,0,28,0, + 0,56,0,0,112,0,0,192,0,1,0,0,0,0,0,252, + 126,0,124,62,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,62,0,62,127,0,31,223,128,7,140,0,17, + 23,69,18,0,0,1,128,0,3,192,0,7,224,0,6,96, + 0,12,48,0,8,16,0,0,0,0,252,126,0,124,62,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,60, + 30,0,60,30,0,60,30,0,60,30,0,60,30,0,60,62, + 0,62,127,0,31,223,128,7,140,0,17,22,66,18,0,0, + 4,32,0,14,112,0,14,112,0,4,32,0,0,0,0,0, + 0,0,252,126,0,124,62,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,62,0,62,127,0,31,223,128,7, + 140,0,15,30,60,17,0,249,0,12,0,28,0,56,0,112, + 0,192,1,0,0,0,255,190,126,12,62,8,62,8,31,24, + 31,16,15,16,15,176,15,160,7,160,7,224,7,192,3,192, + 3,192,1,128,1,128,1,128,1,0,115,0,243,0,246,0, + 254,0,120,0,15,29,58,19,1,249,252,0,124,0,60,0, + 60,0,60,0,60,0,60,224,63,248,62,124,60,60,60,62, + 60,30,60,30,60,30,60,30,60,30,60,30,60,30,60,60, + 62,60,63,248,60,224,60,0,60,0,60,0,60,0,60,0, + 126,0,255,0,15,29,58,17,0,249,4,32,14,112,14,112, + 4,32,0,0,0,0,255,190,126,12,62,8,62,8,31,24, + 31,16,15,16,15,176,15,160,7,160,7,224,7,192,3,192, + 3,192,1,128,1,128,1,128,1,0,115,0,243,0,246,0, + 254,0,120,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=16 h=25 x= 2 y= 9 dx=19 dy= 0 ascent=25 len=50 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x= 0 y=-6 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =25 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24n[701] U8G_SECTION(".progmem.u8g_font_timB24n") = { + 0,38,49,251,244,23,0,0,0,0,42,57,0,25,250,23, + 0,13,14,28,17,1,9,3,0,7,0,7,0,231,56,242, + 120,122,240,15,128,15,128,122,240,242,120,231,56,7,0,7, + 0,6,0,15,15,30,19,2,0,3,128,3,128,3,128,3, + 128,3,128,3,128,255,254,255,254,255,254,3,128,3,128,3, + 128,3,128,3,128,3,128,6,11,11,8,1,250,56,124,124, + 124,60,12,8,24,48,96,192,8,4,4,11,1,6,255,255, + 255,255,5,5,5,8,1,0,112,248,248,248,112,9,25,50, + 9,0,0,1,128,1,128,1,0,3,0,3,0,3,0,6, + 0,6,0,6,0,4,0,12,0,12,0,12,0,24,0,24, + 0,24,0,48,0,48,0,48,0,48,0,96,0,96,0,96, + 0,192,0,192,0,14,23,46,16,1,0,7,128,31,224,28, + 224,56,112,120,112,120,120,120,120,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,248,124,120,120,120,120,120, + 120,56,112,28,224,15,192,7,128,13,23,46,16,2,0,1, + 128,7,128,31,128,255,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,31,192,255,248,16,23,46, + 16,0,0,3,192,15,240,31,248,63,248,48,252,96,124,64, + 124,0,124,0,120,0,120,0,120,0,240,0,224,1,192,1, + 128,3,0,7,1,14,3,28,6,63,254,127,254,255,252,255, + 252,14,23,46,16,1,0,7,192,31,240,63,240,48,248,96, + 120,64,120,0,120,0,112,0,192,3,224,15,240,15,248,3, + 248,0,252,0,124,0,60,0,60,0,60,96,56,240,56,248, + 112,127,192,31,0,14,23,46,16,1,0,0,112,0,240,0, + 240,1,240,3,240,6,240,6,240,12,240,24,240,24,240,48, + 240,96,240,96,240,192,240,255,252,255,252,255,252,255,252,0, + 240,0,240,0,240,0,240,0,240,13,23,46,16,1,0,31, + 248,31,248,31,248,31,248,48,0,48,0,32,0,62,0,127, + 128,127,224,127,240,127,240,3,248,0,248,0,120,0,56,0, + 56,0,56,96,48,240,48,248,96,127,192,31,0,14,23,46, + 16,1,0,0,28,0,240,3,192,7,128,15,0,30,0,62, + 0,60,0,124,0,127,224,253,240,248,248,248,120,248,124,248, + 124,248,124,248,124,120,124,120,120,120,120,56,112,28,224,15, + 192,13,23,46,16,2,0,127,248,127,248,255,248,255,248,192, + 48,128,112,128,112,0,96,0,224,0,224,0,192,1,192,1, + 192,3,128,3,128,3,128,7,0,7,0,7,0,14,0,14, + 0,14,0,28,0,14,23,46,16,1,0,15,224,62,240,60, + 120,120,120,120,56,120,56,124,56,126,112,63,224,63,128,31, + 192,15,224,63,240,113,248,112,252,224,124,224,60,224,60,224, + 60,240,56,120,120,127,240,31,192,14,23,46,16,1,0,15, + 192,28,224,56,112,120,120,120,120,248,120,248,124,248,124,248, + 124,248,124,120,124,124,124,62,252,31,248,0,248,0,240,1, + 240,1,224,3,192,7,128,15,0,60,0,224,0}; +/* + Fontname: -Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=32 h=30 x= 4 y=17 dx=33 dy= 0 ascent=26 len=108 + Font Bounding box w=38 h=49 x=-5 y=-12 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =26 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timB24r[5003] U8G_SECTION(".progmem.u8g_font_timB24r") = { + 0,38,49,251,244,23,5,149,13,202,32,127,249,26,249,23, + 249,0,0,0,8,0,1,5,23,23,11,3,0,112,248,248, + 248,248,248,248,112,112,112,112,32,32,32,32,0,0,0,112, + 248,248,248,112,11,11,22,19,2,12,96,192,241,224,241,224, + 241,224,241,224,241,224,241,224,96,192,96,192,96,192,96,192, + 16,23,46,17,0,0,3,12,3,12,7,28,7,28,6,24, + 6,24,127,255,127,255,14,56,12,48,12,48,12,48,12,48, + 28,112,255,254,255,254,24,96,24,96,24,96,56,224,56,224, + 48,192,48,192,15,28,56,16,1,253,3,0,3,0,15,232, + 63,248,115,56,99,24,227,8,227,8,243,0,251,0,127,0, + 127,128,63,224,15,240,3,248,3,252,3,124,131,62,131,30, + 131,30,195,28,195,60,243,120,255,224,131,0,3,0,3,0, + 3,0,24,23,69,33,4,0,7,128,32,15,192,224,30,127, + 192,60,32,192,124,33,128,120,33,128,248,99,0,240,71,0, + 240,198,0,240,206,0,241,140,60,127,24,126,60,25,243,0, + 49,225,0,51,193,0,99,193,0,231,195,0,199,130,1,199, + 134,1,135,134,3,3,140,3,3,248,6,1,224,22,23,69, + 28,2,0,1,240,0,3,188,0,7,30,0,7,14,0,15, + 14,0,15,14,0,15,140,0,7,216,0,7,240,0,3,224, + 252,7,240,112,29,240,48,57,248,96,112,252,64,240,252,192, + 240,127,128,248,63,0,248,31,128,252,31,192,254,63,228,127, + 243,252,127,193,252,31,0,120,4,11,11,9,2,12,96,240, + 240,240,240,240,240,96,96,96,96,8,29,29,11,2,250,3, + 6,12,24,24,48,48,112,96,224,224,224,224,224,224,224,224, + 224,224,224,96,112,48,48,24,24,12,6,3,8,29,29,11, + 0,250,192,96,48,24,24,12,12,14,6,7,7,7,7,7, + 7,7,7,7,7,7,6,14,12,12,24,24,48,96,192,13, + 14,28,17,1,9,3,0,7,0,7,0,231,56,242,120,122, + 240,15,128,15,128,122,240,242,120,231,56,7,0,7,0,6, + 0,15,15,30,19,2,0,3,128,3,128,3,128,3,128,3, + 128,3,128,255,254,255,254,255,254,3,128,3,128,3,128,3, + 128,3,128,3,128,6,11,11,8,1,250,56,124,124,124,60, + 12,8,24,48,96,192,8,4,4,11,1,6,255,255,255,255, + 5,5,5,8,1,0,112,248,248,248,112,9,25,50,9,0, + 0,1,128,1,128,1,0,3,0,3,0,3,0,6,0,6, + 0,6,0,4,0,12,0,12,0,12,0,24,0,24,0,24, + 0,48,0,48,0,48,0,48,0,96,0,96,0,96,0,192, + 0,192,0,14,23,46,16,1,0,7,128,31,224,28,224,56, + 112,120,112,120,120,120,120,248,124,248,124,248,124,248,124,248, + 124,248,124,248,124,248,124,248,124,120,120,120,120,120,120,56, + 112,28,224,15,192,7,128,13,23,46,16,2,0,1,128,7, + 128,31,128,255,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,15,128,15,128,15,128,15,128,15, + 128,15,128,15,128,15,128,31,192,255,248,16,23,46,16,0, + 0,3,192,15,240,31,248,63,248,48,252,96,124,64,124,0, + 124,0,120,0,120,0,120,0,240,0,224,1,192,1,128,3, + 0,7,1,14,3,28,6,63,254,127,254,255,252,255,252,14, + 23,46,16,1,0,7,192,31,240,63,240,48,248,96,120,64, + 120,0,120,0,112,0,192,3,224,15,240,15,248,3,248,0, + 252,0,124,0,60,0,60,0,60,96,56,240,56,248,112,127, + 192,31,0,14,23,46,16,1,0,0,112,0,240,0,240,1, + 240,3,240,6,240,6,240,12,240,24,240,24,240,48,240,96, + 240,96,240,192,240,255,252,255,252,255,252,255,252,0,240,0, + 240,0,240,0,240,0,240,13,23,46,16,1,0,31,248,31, + 248,31,248,31,248,48,0,48,0,32,0,62,0,127,128,127, + 224,127,240,127,240,3,248,0,248,0,120,0,56,0,56,0, + 56,96,48,240,48,248,96,127,192,31,0,14,23,46,16,1, + 0,0,28,0,240,3,192,7,128,15,0,30,0,62,0,60, + 0,124,0,127,224,253,240,248,248,248,120,248,124,248,124,248, + 124,248,124,120,124,120,120,120,120,56,112,28,224,15,192,13, + 23,46,16,2,0,127,248,127,248,255,248,255,248,192,48,128, + 112,128,112,0,96,0,224,0,224,0,192,1,192,1,192,3, + 128,3,128,3,128,7,0,7,0,7,0,14,0,14,0,14, + 0,28,0,14,23,46,16,1,0,15,224,62,240,60,120,120, + 120,120,56,120,56,124,56,126,112,63,224,63,128,31,192,15, + 224,63,240,113,248,112,252,224,124,224,60,224,60,224,60,240, + 56,120,120,127,240,31,192,14,23,46,16,1,0,15,192,28, + 224,56,112,120,120,120,120,248,120,248,124,248,124,248,124,248, + 124,120,124,124,124,62,252,31,248,0,248,0,240,1,240,1, + 224,3,192,7,128,15,0,60,0,224,0,5,16,16,11,3, + 0,112,248,248,248,112,0,0,0,0,0,0,112,248,248,248, + 112,6,22,22,11,2,250,56,124,124,124,56,0,0,0,0, + 0,0,56,124,124,124,60,12,8,24,48,96,192,16,15,30, + 19,1,0,0,3,0,15,0,127,1,252,15,224,63,128,252, + 0,240,0,252,0,63,128,15,224,1,252,0,127,0,15,0, + 3,15,10,20,19,2,3,255,254,255,254,255,254,0,0,0, + 0,0,0,0,0,255,254,255,254,255,254,16,15,30,19,2, + 0,192,0,240,0,254,0,63,128,7,240,1,252,0,63,0, + 15,0,63,1,252,7,240,63,128,254,0,240,0,192,0,12, + 23,46,16,2,0,63,0,115,192,225,224,225,240,241,240,241, + 240,97,240,1,224,1,224,3,192,3,128,3,0,6,0,4, + 0,4,0,0,0,0,0,0,0,14,0,31,0,31,0,31, + 0,14,0,26,27,108,31,2,251,0,31,224,0,0,252,60, + 0,3,224,14,0,7,128,3,0,15,0,1,0,30,0,1, + 128,62,15,56,128,60,31,248,192,124,124,248,64,120,120,120, + 64,248,248,240,64,248,240,240,64,241,240,240,64,241,240,240, + 64,241,224,240,192,241,225,224,128,241,225,225,128,241,227,227, + 0,113,243,227,0,120,254,254,0,120,120,120,0,60,0,0, + 0,28,0,0,0,14,0,1,128,7,128,7,0,1,224,60, + 0,0,63,224,0,21,23,69,24,1,0,0,32,0,0,96, + 0,0,112,0,0,240,0,0,248,0,0,248,0,1,248,0, + 1,124,0,1,124,0,3,62,0,2,62,0,6,62,0,6, + 31,0,4,31,0,12,15,0,15,255,128,24,15,128,24,7, + 192,16,7,192,48,3,224,48,3,224,112,7,240,252,31,248, + 19,23,69,22,1,0,255,252,0,63,31,0,31,15,128,31, + 7,192,31,7,192,31,7,192,31,7,192,31,7,192,31,7, + 128,31,15,128,31,62,0,31,252,0,31,15,128,31,7,192, + 31,7,224,31,3,224,31,3,224,31,3,224,31,3,224,31, + 3,192,31,7,192,63,15,0,255,252,0,19,23,69,24,2, + 0,1,252,32,7,255,96,15,7,224,30,1,224,60,0,224, + 124,0,96,124,0,96,248,0,32,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,0,248,0, + 0,124,0,0,124,0,0,60,0,32,30,0,96,15,129,192, + 3,255,128,0,254,0,22,23,69,24,0,0,255,252,0,63, + 255,128,31,7,224,31,1,240,31,1,240,31,0,248,31,0, + 248,31,0,252,31,0,124,31,0,124,31,0,124,31,0,124, + 31,0,124,31,0,124,31,0,124,31,0,248,31,0,248,31, + 0,248,31,1,240,31,1,224,31,7,192,63,255,0,255,252, + 0,21,23,69,22,0,0,255,255,224,63,255,224,31,0,224, + 31,0,96,31,0,96,31,0,32,31,0,32,31,4,0,31, + 4,0,31,12,0,31,28,0,31,252,0,31,28,0,31,12, + 0,31,4,0,31,4,0,31,0,8,31,0,24,31,0,48, + 31,0,112,31,1,240,63,255,224,255,255,224,19,23,69,20, + 0,0,255,255,224,63,255,224,31,0,224,31,0,96,31,0, + 96,31,0,32,31,0,32,31,4,0,31,4,0,31,12,0, + 31,28,0,31,252,0,31,28,0,31,12,0,31,4,0,31, + 4,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,63,128,0,255,224,0,22,23,69,25,2,0,1,252,32, + 7,255,96,15,7,224,30,1,224,60,0,224,124,0,96,124, + 0,96,248,0,32,248,0,0,248,0,0,248,0,0,248,0, + 0,248,0,0,248,31,252,248,7,240,248,3,224,124,3,224, + 124,3,224,60,3,224,62,3,224,30,7,224,15,143,224,3, + 255,0,24,23,69,25,0,0,255,231,255,63,129,252,31,0, + 248,31,0,248,31,0,248,31,0,248,31,0,248,31,0,248, + 31,0,248,31,0,248,31,255,248,31,255,248,31,0,248,31, + 0,248,31,0,248,31,0,248,31,0,248,31,0,248,31,0, + 248,31,0,248,31,0,248,63,129,252,255,231,255,11,23,46, + 13,1,0,255,224,63,128,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,31, + 0,31,0,31,0,31,0,31,0,31,0,31,0,63,128,255, + 224,15,26,52,16,0,253,15,254,3,248,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1, + 240,1,240,1,240,1,240,1,240,1,240,1,240,97,240,241, + 240,241,240,243,224,227,224,127,192,31,0,24,23,69,25,1, + 0,255,207,252,127,3,224,62,1,192,62,3,128,62,7,0, + 62,14,0,62,28,0,62,56,0,62,112,0,62,224,0,63, + 240,0,63,248,0,63,252,0,62,254,0,62,127,0,62,63, + 128,62,31,192,62,15,224,62,7,240,62,3,248,62,1,252, + 127,0,254,255,195,255,20,23,69,22,1,0,255,224,0,63, + 128,0,31,0,0,31,0,0,31,0,0,31,0,0,31,0, + 0,31,0,0,31,0,0,31,0,0,31,0,0,31,0,0, + 31,0,0,31,0,0,31,0,0,31,0,0,31,0,16,31, + 0,48,31,0,96,31,0,224,31,129,224,63,255,192,255,255, + 192,28,23,92,31,1,0,255,0,15,240,63,0,31,192,31, + 128,31,128,31,128,63,128,23,192,63,128,23,192,47,128,23, + 192,111,128,19,224,79,128,19,224,207,128,19,224,207,128,17, + 240,143,128,17,241,143,128,16,249,15,128,16,251,15,128,16, + 251,15,128,16,126,15,128,16,126,15,128,16,124,15,128,16, + 60,15,128,16,60,15,128,16,24,15,128,56,24,31,192,254, + 24,63,240,22,23,69,24,1,0,254,1,252,127,0,112,63, + 128,32,31,128,32,31,192,32,31,224,32,23,240,32,19,248, + 32,17,248,32,17,252,32,16,254,32,16,127,32,16,63,32, + 16,31,160,16,31,224,16,15,224,16,7,224,16,3,224,16, + 3,224,16,1,224,16,0,224,56,0,96,254,0,32,21,23, + 69,25,2,0,1,252,0,7,255,0,15,143,128,30,3,192, + 60,1,224,124,1,240,120,0,240,248,0,248,248,0,248,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,120,0,240,124,1,240,60,1,224,30,3,192, + 15,143,128,7,255,0,1,252,0,19,23,69,20,0,0,255, + 252,0,63,31,128,31,15,192,31,7,192,31,7,224,31,3, + 224,31,3,224,31,3,224,31,3,224,31,7,192,31,7,192, + 31,31,128,31,254,0,31,0,0,31,0,0,31,0,0,31, + 0,0,31,0,0,31,0,0,31,0,0,31,0,0,63,128, + 0,255,224,0,22,27,81,26,2,252,1,252,0,7,255,0, + 15,143,128,30,3,192,60,1,224,124,1,240,120,0,240,248, + 0,248,248,0,248,248,0,248,248,0,248,248,0,248,248,0, + 248,248,0,248,248,0,248,248,0,248,248,0,248,124,1,240, + 124,1,240,62,3,224,31,7,192,7,255,0,1,252,0,0, + 254,0,0,127,132,0,31,248,0,7,224,22,23,69,24,1, + 0,255,252,0,63,31,128,31,7,192,31,7,224,31,3,224, + 31,3,224,31,3,224,31,3,224,31,7,224,31,7,192,31, + 31,128,31,252,0,31,126,0,31,62,0,31,63,0,31,31, + 128,31,31,128,31,15,192,31,7,224,31,7,224,31,3,240, + 63,129,248,255,225,252,15,23,46,18,1,0,15,196,56,124, + 112,60,112,28,240,12,240,12,248,4,252,0,255,0,127,192, + 63,240,31,248,15,252,3,252,1,254,128,126,128,62,192,30, + 192,30,224,28,240,28,248,56,143,224,19,23,69,22,1,0, + 255,255,224,249,243,224,225,240,224,193,240,96,129,240,32,129, + 240,32,129,240,32,1,240,0,1,240,0,1,240,0,1,240, + 0,1,240,0,1,240,0,1,240,0,1,240,0,1,240,0, + 1,240,0,1,240,0,1,240,0,1,240,0,1,240,0,3, + 248,0,15,254,0,23,23,69,24,0,0,255,224,254,63,128, + 56,31,0,16,31,0,16,31,0,16,31,0,16,31,0,16, + 31,0,16,31,0,16,31,0,16,31,0,16,31,0,16,31, + 0,16,31,0,16,31,0,16,31,0,16,31,0,16,31,0, + 16,15,128,48,15,128,96,7,192,192,3,255,128,0,254,0, + 22,23,69,24,1,0,255,195,252,127,0,240,62,0,96,63, + 0,64,31,0,192,31,128,192,15,128,128,15,129,128,15,193, + 0,7,193,0,7,195,0,3,226,0,3,230,0,3,246,0, + 1,244,0,1,252,0,0,248,0,0,248,0,0,248,0,0, + 112,0,0,112,0,0,32,0,0,32,0,32,23,92,33,0, + 0,255,239,255,63,127,3,248,14,63,1,248,12,31,1,248, + 12,31,1,248,8,31,129,252,24,15,129,252,24,15,129,124, + 16,15,195,124,48,7,194,126,48,7,198,62,32,7,230,62, + 96,3,228,62,96,3,236,31,64,3,248,31,192,1,248,31, + 192,1,248,15,128,1,240,15,128,0,240,15,128,0,224,7, + 0,0,224,7,0,0,224,7,0,0,64,2,0,21,23,69, + 24,1,0,255,207,224,127,3,0,63,2,0,31,134,0,31, + 132,0,15,204,0,15,200,0,7,248,0,3,240,0,3,240, + 0,1,248,0,0,248,0,1,252,0,1,124,0,3,62,0, + 2,63,0,6,31,0,4,31,128,12,15,192,8,15,192,24, + 7,224,56,7,240,254,63,248,22,23,69,24,1,0,255,195, + 252,127,0,240,63,0,96,63,0,96,31,128,192,31,128,128, + 15,193,128,15,195,0,7,227,0,3,230,0,3,244,0,1, + 252,0,1,248,0,0,248,0,0,248,0,0,248,0,0,248, + 0,0,248,0,0,248,0,0,248,0,0,248,0,1,252,0, + 7,255,0,19,23,69,22,1,0,63,255,192,126,15,128,120, + 31,128,112,31,0,96,63,0,64,126,0,0,126,0,0,252, + 0,0,252,0,1,248,0,1,240,0,3,240,0,3,224,0, + 7,224,0,7,192,0,15,192,32,31,128,32,31,128,96,63, + 0,96,63,0,224,126,1,224,126,7,192,255,255,192,7,28, + 28,11,2,251,254,240,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,240,254, + 8,26,26,9,0,0,128,192,192,192,96,96,96,96,48,48, + 48,24,24,24,24,12,12,12,4,6,6,6,3,3,3,3, + 7,28,28,11,1,251,254,30,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14, + 30,254,11,13,26,19,4,10,14,0,14,0,31,0,31,0, + 27,0,59,128,59,128,113,192,113,192,97,192,224,224,224,224, + 192,96,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,11,1,17,192,224,112,56,12,2,14,16,32,16,1,0, + 31,128,49,224,112,240,120,240,120,240,48,240,1,240,7,240, + 28,240,56,240,120,240,240,240,249,240,255,244,126,252,60,120, + 17,22,66,18,0,0,252,0,0,124,0,0,60,0,0,60, + 0,0,60,0,0,60,0,0,60,120,0,61,254,0,63,254, + 0,62,31,0,60,31,0,60,15,128,60,15,128,60,15,128, + 60,15,128,60,15,128,60,15,128,60,15,0,60,31,0,62, + 62,0,55,252,0,33,240,0,14,16,32,15,1,0,7,240, + 30,120,60,60,124,60,120,24,248,0,248,0,248,0,248,0, + 248,0,248,0,248,0,124,0,62,24,31,240,15,224,16,22, + 44,18,1,0,0,252,0,124,0,60,0,60,0,60,0,60, + 15,188,63,252,124,60,120,60,248,60,240,60,240,60,240,60, + 240,60,240,60,240,60,240,60,120,60,124,126,63,255,15,184, + 14,16,32,15,0,0,7,192,30,240,60,112,120,56,120,60, + 248,60,248,60,255,252,248,0,248,0,248,0,120,0,124,0, + 62,24,31,240,7,224,12,23,46,11,0,0,7,224,30,112, + 28,240,60,240,60,96,60,0,60,0,255,128,255,128,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,0, + 60,0,60,0,60,0,126,0,255,0,14,23,46,16,1,249, + 15,192,61,252,112,252,240,240,240,120,240,120,240,120,240,120, + 120,248,63,240,31,192,60,0,96,0,224,0,255,224,255,248, + 127,252,48,60,96,28,192,12,224,28,127,248,31,224,17,22, + 66,18,0,0,252,0,0,124,0,0,60,0,0,60,0,0, + 60,0,0,60,0,0,60,120,0,61,252,0,63,254,0,62, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 126,63,0,255,127,128,8,23,23,9,0,0,24,60,60,60, + 24,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,126,255,10,30,60,11,254,249,1,128,3,192,3,192,3, + 192,1,128,0,0,0,0,15,192,7,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3, + 192,3,192,3,192,3,192,3,192,3,192,99,192,243,192,243, + 128,119,128,62,0,18,22,66,18,0,0,252,0,0,124,0, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,31,0, + 60,14,0,60,12,0,60,24,0,60,48,0,60,96,0,60, + 192,0,61,192,0,63,224,0,61,240,0,60,248,0,60,124, + 0,60,62,0,60,31,0,126,15,128,255,31,192,8,22,22, + 9,0,0,252,124,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,126,255,26,16,64,27,0,0,252, + 120,60,0,125,254,254,0,63,63,159,0,62,63,31,0,62, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,60,30,15,0,60,30,15,0,60, + 30,15,0,60,30,15,0,126,63,31,128,255,127,191,192,17, + 16,48,18,0,0,252,120,0,125,252,0,63,62,0,62,30, + 0,62,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,30,0,60,30,0,60,30,0,60,30,0,60,30,0,126, + 63,0,255,127,128,14,16,32,17,1,0,15,192,60,240,120, + 120,120,120,240,60,240,60,240,60,240,60,240,60,240,60,240, + 60,240,60,120,120,120,120,60,240,15,192,17,23,69,18,0, + 249,252,248,0,125,254,0,63,31,0,62,15,0,60,15,128, + 60,7,128,60,7,128,60,7,128,60,7,128,60,7,128,60, + 7,128,60,7,128,62,15,0,63,15,0,63,254,0,60,248, + 0,60,0,0,60,0,0,60,0,0,60,0,0,60,0,0, + 126,0,0,255,0,0,16,23,46,18,1,249,15,196,62,236, + 124,60,120,60,248,60,240,60,240,60,240,60,240,60,240,60, + 240,60,240,60,120,60,120,124,63,252,15,60,0,60,0,60, + 0,60,0,60,0,60,0,126,0,255,13,16,32,15,1,0, + 252,112,124,248,63,248,63,120,62,48,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,126,0,255,0, + 10,16,32,13,1,0,31,64,113,192,96,192,224,192,240,64, + 252,0,127,0,127,128,63,128,15,192,3,192,129,192,193,192, + 193,192,227,128,191,0,10,21,42,11,0,0,4,0,12,0, + 28,0,28,0,60,0,127,128,255,128,60,0,60,0,60,0, + 60,0,60,0,60,0,60,0,60,0,60,0,60,0,60,64, + 62,192,63,128,30,0,17,16,48,18,0,0,252,126,0,124, + 62,0,60,30,0,60,30,0,60,30,0,60,30,0,60,30, + 0,60,30,0,60,30,0,60,30,0,60,30,0,60,30,0, + 60,62,0,62,95,0,31,223,128,7,140,0,15,16,32,17, + 0,0,255,62,124,12,60,8,62,24,30,16,31,16,31,48, + 15,32,15,32,7,224,7,192,7,192,3,128,3,128,1,0, + 1,0,23,16,48,24,0,0,255,127,190,126,62,28,60,30, + 8,62,30,24,30,31,16,31,31,48,31,63,48,15,47,160, + 15,231,224,7,231,192,7,199,192,7,195,192,3,131,128,3, + 131,128,1,1,0,1,1,0,16,16,32,17,0,0,255,62, + 126,24,62,24,31,48,31,96,15,192,15,192,7,192,3,224, + 3,224,7,240,13,248,24,248,24,124,48,124,252,255,15,23, + 46,17,0,249,255,190,126,12,62,8,62,8,31,24,31,16, + 15,16,15,176,15,160,7,160,7,224,7,192,3,192,3,192, + 1,128,1,128,1,128,1,0,115,0,243,0,246,0,254,0, + 120,0,12,16,32,15,1,0,255,240,227,240,195,224,135,224, + 135,192,15,128,15,128,31,0,31,0,62,0,62,16,124,16, + 124,48,248,48,248,240,255,240,10,27,54,13,1,252,7,192, + 14,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,56,0,112,0,224,0,112,0,56,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 14,0,7,192,2,30,30,7,3,249,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,10,27,54,13,1,252,248,0, + 28,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 14,0,14,0,7,0,3,128,1,192,3,128,7,0,14,0, + 14,0,14,0,14,0,14,0,14,0,14,0,14,0,14,0, + 28,0,248,0,15,8,16,17,1,8,28,0,63,0,127,130, + 255,198,143,254,131,252,1,248,0,112,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--11-80-100-100-P-54-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=11 h=10 x= 1 y= 6 dx=10 dy= 0 ascent=10 len=14 + Font Bounding box w=12 h=17 x=-2 y=-4 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent =10 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR08[2512] U8G_SECTION(".progmem.u8g_font_timR08") = { + 0,12,17,254,252,7,1,147,3,56,32,255,254,10,253,7, + 254,0,0,0,2,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,3,2,2,4,0,5,160,160,5,7,7,5, + 0,0,80,80,248,80,248,80,80,4,9,9,5,0,255,32, + 112,144,128,96,16,144,224,32,7,7,7,8,0,0,126,164, + 168,86,42,42,68,8,7,7,8,0,0,48,80,110,116,152, + 141,118,1,2,2,2,0,5,128,128,3,9,9,4,0,254, + 32,64,64,128,128,128,64,64,32,3,9,9,4,0,254,128, + 64,64,32,32,32,64,64,128,3,3,3,5,1,4,160,64, + 160,5,5,5,6,0,0,32,32,248,32,32,2,2,2,3, + 0,255,192,64,3,1,1,4,0,2,224,1,1,1,3,1, + 0,128,3,7,7,3,0,0,32,32,64,64,64,128,128,4, + 7,7,5,0,0,96,144,144,144,144,144,96,3,7,7,5, + 1,0,64,192,64,64,64,64,224,4,7,7,5,0,0,96, + 144,16,32,32,64,240,4,7,7,5,0,0,96,144,16,96, + 16,16,224,5,7,7,5,0,0,16,48,80,144,248,16,16, + 4,7,7,5,0,0,112,64,224,16,16,16,224,4,7,7, + 5,0,0,48,64,224,144,144,144,96,4,7,7,5,0,0, + 240,144,32,32,64,64,64,4,7,7,5,0,0,96,144,144, + 96,144,144,96,4,7,7,5,0,0,96,144,144,144,112,32, + 192,1,5,5,3,1,0,128,0,0,0,128,2,6,6,3, + 0,255,64,0,0,0,192,64,3,5,5,5,1,0,32,64, + 128,64,32,5,3,3,6,0,1,248,0,248,3,5,5,5, + 0,0,128,64,32,64,128,3,7,7,4,0,0,224,160,32, + 64,64,0,64,8,9,9,9,0,254,60,66,157,165,165,173, + 146,64,62,7,7,7,8,0,0,16,56,40,40,124,68,238, + 5,7,7,6,0,0,240,72,72,112,72,72,240,6,7,7, + 7,0,0,124,196,128,128,128,196,120,6,7,7,7,0,0, + 248,76,68,68,68,76,248,5,7,7,6,0,0,248,72,64, + 112,64,72,248,5,7,7,6,0,0,248,72,64,112,64,64, + 224,6,7,7,7,0,0,124,196,128,156,132,196,120,7,7, + 7,8,0,0,238,68,68,124,68,68,238,3,7,7,4,0, + 0,224,64,64,64,64,64,224,4,7,7,4,0,0,112,32, + 32,32,32,160,192,6,7,7,7,0,0,236,72,80,96,80, + 72,236,5,7,7,6,0,0,224,64,64,64,64,72,248,9, + 7,14,10,0,0,227,128,99,0,85,0,85,0,93,0,73, + 0,235,128,7,7,7,8,0,0,238,100,84,84,76,76,228, + 6,7,7,7,0,0,120,204,132,132,132,204,120,5,7,7, + 6,0,0,240,72,72,112,64,64,224,6,9,9,7,0,254, + 120,204,132,132,132,204,112,24,12,6,7,7,7,0,0,240, + 72,72,112,80,72,236,4,7,7,5,0,0,112,144,192,96, + 16,144,224,5,7,7,6,0,0,248,168,32,32,32,32,112, + 7,7,7,8,0,0,238,68,68,68,68,108,56,7,7,7, + 8,0,0,238,68,108,40,40,16,16,11,7,14,10,255,0, + 238,224,68,64,100,192,46,128,42,128,17,0,17,0,7,7, + 7,8,0,0,238,68,40,16,40,68,238,7,7,7,8,0, + 0,238,68,40,56,16,16,56,5,7,7,6,0,0,248,136, + 16,32,64,136,248,2,9,9,3,0,254,192,128,128,128,128, + 128,128,128,192,3,7,7,3,0,0,128,128,64,64,64,32, + 32,2,9,9,3,0,254,192,64,64,64,64,64,64,64,192, + 3,3,3,5,1,4,64,160,160,5,1,1,5,0,253,248, + 2,2,2,3,0,6,128,64,3,5,5,4,0,0,192,32, + 96,160,224,5,7,7,5,255,0,192,64,112,72,72,72,112, + 3,5,5,4,0,0,96,128,128,128,96,5,7,7,5,0, + 0,48,16,112,144,144,144,104,3,5,5,4,0,0,96,160, + 192,128,96,4,7,7,4,0,0,48,64,224,64,64,64,224, + 4,7,7,5,0,254,112,160,160,64,96,144,224,6,7,7, + 5,255,0,192,64,112,72,72,72,108,2,7,7,3,0,0, + 64,0,192,64,64,64,64,3,9,9,3,255,254,32,0,96, + 32,32,32,32,32,192,6,7,7,5,255,0,192,64,72,80, + 112,72,76,3,7,7,4,0,0,192,64,64,64,64,64,224, + 8,5,5,8,0,0,236,146,146,146,219,5,5,5,5,0, + 0,224,144,144,144,216,4,5,5,5,0,0,96,144,144,144, + 96,5,8,8,5,255,253,240,72,72,72,112,64,64,224,5, + 8,8,5,0,253,112,144,144,144,112,16,16,56,3,5,5, + 4,0,0,160,96,64,64,224,3,5,5,4,0,0,96,128, + 64,32,224,4,6,6,4,0,0,64,224,64,64,64,48,5, + 5,5,5,0,0,216,144,144,144,104,6,5,5,5,255,0, + 236,72,40,48,16,9,5,10,8,255,0,237,128,73,0,42, + 0,54,0,20,0,5,5,5,6,0,0,216,80,32,80,216, + 6,7,7,5,255,254,220,72,80,48,32,96,192,4,5,5, + 5,0,0,240,32,64,144,240,3,9,9,4,0,254,32,64, + 64,64,128,64,64,64,32,1,9,9,2,0,254,128,128,128, + 128,128,128,128,128,128,3,9,9,4,0,254,128,64,64,64, + 32,64,64,64,128,6,2,2,7,0,2,100,152,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,2,0,1,1,7,7,3,1,254,128,0,128,128,128,128, + 128,4,7,7,5,0,255,32,112,144,128,144,96,64,5,7, + 7,5,0,0,48,80,64,224,64,200,240,5,6,6,5,0, + 1,136,112,80,80,112,136,5,7,7,5,0,0,136,80,216, + 32,248,32,112,1,7,7,2,0,0,128,128,128,0,128,128, + 128,4,9,9,5,0,254,112,144,64,160,144,80,32,144,224, + 3,1,1,5,1,5,160,7,7,7,9,1,0,56,68,154, + 162,154,68,56,3,5,5,4,0,2,192,32,160,0,224,4, + 4,4,5,0,1,80,160,160,80,5,2,2,7,1,1,248, + 8,3,1,1,4,0,2,224,7,7,7,9,1,0,56,68, + 186,178,170,68,56,3,1,1,4,0,5,224,4,4,4,4, + 0,3,96,144,144,96,5,7,7,6,0,0,32,32,248,32, + 32,0,248,3,4,4,3,0,3,96,160,64,224,3,4,4, + 3,0,3,224,64,32,192,2,2,2,3,0,5,64,128,5, + 7,7,5,0,254,144,144,144,144,232,128,128,6,9,9,6, + 0,254,124,232,232,232,104,40,40,40,40,1,1,1,2,0, + 2,128,3,3,3,4,0,253,64,32,192,3,4,4,3,0, + 3,64,192,64,224,3,5,5,4,0,2,64,160,64,0,224, + 4,4,4,5,0,1,160,80,80,160,7,7,7,8,0,0, + 68,200,72,244,44,62,68,7,7,7,8,0,0,68,200,72, + 246,42,36,78,7,7,7,8,0,0,228,72,40,212,44,62, + 68,3,7,7,4,0,254,64,0,64,64,128,160,224,7,10, + 10,8,0,0,32,16,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,8,16,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,16,40,0,16,56,40,40,124,68,238,7,10, + 10,8,0,0,20,40,0,16,56,40,40,124,68,238,7,9, + 9,8,0,0,40,0,16,56,40,40,124,68,238,7,10,10, + 8,0,0,16,40,16,16,56,40,40,124,68,238,8,7,7, + 9,0,0,31,57,40,46,120,73,239,6,10,10,7,0,253, + 124,196,128,128,128,196,120,32,16,96,5,10,10,6,0,0, + 64,32,0,248,72,64,112,64,72,248,5,10,10,6,0,0, + 16,32,0,248,72,64,112,64,72,248,5,10,10,6,0,0, + 32,80,0,248,72,64,112,64,72,248,5,9,9,6,0,0, + 80,0,248,72,64,112,64,72,248,3,10,10,4,0,0,128, + 64,0,224,64,64,64,64,64,224,3,10,10,4,0,0,32, + 64,0,224,64,64,64,64,64,224,3,10,10,4,0,0,64, + 160,0,224,64,64,64,64,64,224,3,9,9,4,0,0,160, + 0,224,64,64,64,64,64,224,6,7,7,7,0,0,248,76, + 68,228,68,76,248,7,10,10,8,0,0,20,40,0,206,100, + 100,84,84,76,228,6,10,10,7,0,0,32,16,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,16,32,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,16,40,0,120,204, + 132,132,132,204,120,6,10,10,7,0,0,40,80,0,120,204, + 132,132,132,204,120,6,9,9,7,0,0,72,0,120,204,132, + 132,132,204,120,5,5,5,6,0,0,136,80,32,80,136,8, + 9,9,8,255,255,1,62,102,74,66,82,102,124,128,7,10, + 10,8,0,0,32,16,0,238,68,68,68,68,108,56,7,10, + 10,8,0,0,8,16,0,238,68,68,68,68,108,56,7,10, + 10,8,0,0,16,40,0,238,68,68,68,68,108,56,7,9, + 9,8,0,0,40,0,238,68,68,68,68,108,56,7,10,10, + 8,0,0,8,16,0,198,68,40,56,16,16,56,5,7,7, + 6,0,0,224,64,112,72,112,64,224,4,7,7,5,0,0, + 32,80,80,96,80,80,224,3,8,8,4,0,0,128,64,0, + 192,32,96,160,224,3,8,8,4,0,0,32,64,0,192,32, + 96,160,224,3,8,8,4,0,0,64,160,0,192,32,96,160, + 224,4,8,8,4,0,0,80,160,0,192,32,96,160,224,3, + 7,7,4,0,0,160,0,192,32,96,160,224,3,8,8,4, + 0,0,64,160,64,192,32,96,160,224,5,5,5,6,0,0, + 216,40,112,160,216,3,8,8,4,0,253,96,128,128,128,96, + 64,32,192,3,8,8,4,0,0,128,64,0,96,160,192,128, + 96,3,8,8,4,0,0,32,64,0,96,160,192,128,96,3, + 8,8,4,0,0,64,160,0,96,160,192,128,96,3,7,7, + 4,0,0,160,0,96,160,192,128,96,2,8,8,3,0,0, + 128,64,0,192,64,64,64,64,3,8,8,3,0,0,32,64, + 0,192,64,64,64,64,3,8,8,3,0,0,64,160,0,192, + 64,64,64,64,3,7,7,3,0,0,160,0,192,64,64,64, + 64,4,8,8,5,0,0,64,112,160,112,144,144,144,96,5, + 8,8,5,0,0,80,160,0,224,144,144,144,216,4,8,8, + 5,0,0,64,32,0,96,144,144,144,96,4,8,8,5,0, + 0,32,64,0,96,144,144,144,96,4,8,8,5,0,0,64, + 160,0,96,144,144,144,96,4,8,8,5,0,0,80,160,0, + 96,144,144,144,96,4,7,7,5,0,0,160,0,96,144,144, + 144,96,5,5,5,6,0,0,32,0,248,0,32,6,7,7, + 5,255,255,4,56,72,72,72,112,128,5,8,8,5,0,0, + 64,32,0,144,144,144,144,104,5,8,8,5,0,0,32,64, + 0,144,144,144,144,104,5,8,8,5,0,0,32,80,0,144, + 144,144,144,104,5,7,7,5,0,0,80,0,144,144,144,144, + 104,6,10,10,5,255,254,16,32,0,220,72,80,48,32,96, + 192,5,10,10,5,255,253,192,64,112,72,72,72,112,64,64, + 224,6,9,9,5,255,254,80,0,220,72,80,48,32,96,192 + }; +/* + Fontname: -Adobe-Times-Medium-R-Normal--11-80-100-100-P-54-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=11 h= 9 x= 1 y= 6 dx=10 dy= 0 ascent= 8 len=14 + Font Bounding box w=12 h=17 x=-2 y=-4 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR08r[1198] U8G_SECTION(".progmem.u8g_font_timR08r") = { + 0,12,17,254,252,7,1,147,3,56,32,127,254,8,253,7, + 254,0,0,0,2,0,1,1,7,7,3,1,0,128,128,128, + 128,128,0,128,3,2,2,4,0,5,160,160,5,7,7,5, + 0,0,80,80,248,80,248,80,80,4,9,9,5,0,255,32, + 112,144,128,96,16,144,224,32,7,7,7,8,0,0,126,164, + 168,86,42,42,68,8,7,7,8,0,0,48,80,110,116,152, + 141,118,1,2,2,2,0,5,128,128,3,9,9,4,0,254, + 32,64,64,128,128,128,64,64,32,3,9,9,4,0,254,128, + 64,64,32,32,32,64,64,128,3,3,3,5,1,4,160,64, + 160,5,5,5,6,0,0,32,32,248,32,32,2,2,2,3, + 0,255,192,64,3,1,1,4,0,2,224,1,1,1,3,1, + 0,128,3,7,7,3,0,0,32,32,64,64,64,128,128,4, + 7,7,5,0,0,96,144,144,144,144,144,96,3,7,7,5, + 1,0,64,192,64,64,64,64,224,4,7,7,5,0,0,96, + 144,16,32,32,64,240,4,7,7,5,0,0,96,144,16,96, + 16,16,224,5,7,7,5,0,0,16,48,80,144,248,16,16, + 4,7,7,5,0,0,112,64,224,16,16,16,224,4,7,7, + 5,0,0,48,64,224,144,144,144,96,4,7,7,5,0,0, + 240,144,32,32,64,64,64,4,7,7,5,0,0,96,144,144, + 96,144,144,96,4,7,7,5,0,0,96,144,144,144,112,32, + 192,1,5,5,3,1,0,128,0,0,0,128,2,6,6,3, + 0,255,64,0,0,0,192,64,3,5,5,5,1,0,32,64, + 128,64,32,5,3,3,6,0,1,248,0,248,3,5,5,5, + 0,0,128,64,32,64,128,3,7,7,4,0,0,224,160,32, + 64,64,0,64,8,9,9,9,0,254,60,66,157,165,165,173, + 146,64,62,7,7,7,8,0,0,16,56,40,40,124,68,238, + 5,7,7,6,0,0,240,72,72,112,72,72,240,6,7,7, + 7,0,0,124,196,128,128,128,196,120,6,7,7,7,0,0, + 248,76,68,68,68,76,248,5,7,7,6,0,0,248,72,64, + 112,64,72,248,5,7,7,6,0,0,248,72,64,112,64,64, + 224,6,7,7,7,0,0,124,196,128,156,132,196,120,7,7, + 7,8,0,0,238,68,68,124,68,68,238,3,7,7,4,0, + 0,224,64,64,64,64,64,224,4,7,7,4,0,0,112,32, + 32,32,32,160,192,6,7,7,7,0,0,236,72,80,96,80, + 72,236,5,7,7,6,0,0,224,64,64,64,64,72,248,9, + 7,14,10,0,0,227,128,99,0,85,0,85,0,93,0,73, + 0,235,128,7,7,7,8,0,0,238,100,84,84,76,76,228, + 6,7,7,7,0,0,120,204,132,132,132,204,120,5,7,7, + 6,0,0,240,72,72,112,64,64,224,6,9,9,7,0,254, + 120,204,132,132,132,204,112,24,12,6,7,7,7,0,0,240, + 72,72,112,80,72,236,4,7,7,5,0,0,112,144,192,96, + 16,144,224,5,7,7,6,0,0,248,168,32,32,32,32,112, + 7,7,7,8,0,0,238,68,68,68,68,108,56,7,7,7, + 8,0,0,238,68,108,40,40,16,16,11,7,14,10,255,0, + 238,224,68,64,100,192,46,128,42,128,17,0,17,0,7,7, + 7,8,0,0,238,68,40,16,40,68,238,7,7,7,8,0, + 0,238,68,40,56,16,16,56,5,7,7,6,0,0,248,136, + 16,32,64,136,248,2,9,9,3,0,254,192,128,128,128,128, + 128,128,128,192,3,7,7,3,0,0,128,128,64,64,64,32, + 32,2,9,9,3,0,254,192,64,64,64,64,64,64,64,192, + 3,3,3,5,1,4,64,160,160,5,1,1,5,0,253,248, + 2,2,2,3,0,6,128,64,3,5,5,4,0,0,192,32, + 96,160,224,5,7,7,5,255,0,192,64,112,72,72,72,112, + 3,5,5,4,0,0,96,128,128,128,96,5,7,7,5,0, + 0,48,16,112,144,144,144,104,3,5,5,4,0,0,96,160, + 192,128,96,4,7,7,4,0,0,48,64,224,64,64,64,224, + 4,7,7,5,0,254,112,160,160,64,96,144,224,6,7,7, + 5,255,0,192,64,112,72,72,72,108,2,7,7,3,0,0, + 64,0,192,64,64,64,64,3,9,9,3,255,254,32,0,96, + 32,32,32,32,32,192,6,7,7,5,255,0,192,64,72,80, + 112,72,76,3,7,7,4,0,0,192,64,64,64,64,64,224, + 8,5,5,8,0,0,236,146,146,146,219,5,5,5,5,0, + 0,224,144,144,144,216,4,5,5,5,0,0,96,144,144,144, + 96,5,8,8,5,255,253,240,72,72,72,112,64,64,224,5, + 8,8,5,0,253,112,144,144,144,112,16,16,56,3,5,5, + 4,0,0,160,96,64,64,224,3,5,5,4,0,0,96,128, + 64,32,224,4,6,6,4,0,0,64,224,64,64,64,48,5, + 5,5,5,0,0,216,144,144,144,104,6,5,5,5,255,0, + 236,72,40,48,16,9,5,10,8,255,0,237,128,73,0,42, + 0,54,0,20,0,5,5,5,6,0,0,216,80,32,80,216, + 6,7,7,5,255,254,220,72,80,48,32,96,192,4,5,5, + 5,0,0,240,32,64,144,240,3,9,9,4,0,254,32,64, + 64,64,128,64,64,64,32,1,9,9,2,0,254,128,128,128, + 128,128,128,128,128,128,3,9,9,4,0,254,128,64,64,64, + 32,64,64,64,128,6,2,2,7,0,2,100,152,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=13 h=14 x= 2 y= 8 dx=13 dy= 0 ascent=14 len=28 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x=-1 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR10[3359] U8G_SECTION(".progmem.u8g_font_timR10") = { + 0,17,24,254,250,10,2,4,4,92,32,255,253,14,253,10, + 253,0,0,0,3,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,3,3,3,6,1,7,160,160,160, + 7,10,10,7,0,0,20,20,126,40,40,40,252,80,80,80, + 5,12,12,7,1,255,32,120,168,160,160,112,40,40,40,168, + 240,32,9,10,20,12,1,0,113,128,223,0,146,0,148,0, + 104,0,11,0,22,128,36,128,68,128,67,0,10,10,20,11, + 1,0,24,0,36,0,36,0,56,0,19,128,121,0,202,0, + 132,0,206,64,115,128,1,3,3,3,1,7,128,128,128,3, + 13,13,5,1,253,32,32,64,64,128,128,128,128,128,64,64, + 32,32,3,13,13,5,1,253,128,128,64,64,32,32,32,32, + 32,64,64,128,128,5,6,6,7,1,4,32,168,112,112,168, + 32,7,7,7,8,0,0,16,16,16,254,16,16,16,2,3, + 3,4,1,254,192,64,128,3,1,1,4,0,3,224,2,1, + 1,4,1,0,192,4,12,12,4,0,254,16,16,16,32,32, + 32,64,64,64,128,128,128,6,10,10,7,1,0,120,204,132, + 132,132,132,132,132,204,120,5,10,10,7,1,0,32,224,32, + 32,32,32,32,32,32,248,5,10,10,7,1,0,112,216,136, + 8,24,16,32,64,136,248,6,10,10,7,0,0,120,140,4, + 8,48,56,4,4,204,120,6,10,10,7,0,0,8,24,24, + 40,104,72,136,252,8,8,5,10,10,7,1,0,120,64,128, + 224,48,24,8,8,144,224,6,10,10,7,0,0,12,16,32, + 64,120,204,132,132,204,120,6,10,10,7,0,0,252,132,8, + 8,16,16,32,32,64,64,5,10,10,7,1,0,112,152,136, + 200,112,152,136,136,136,112,6,10,10,7,1,0,120,204,132, + 132,204,120,8,16,32,192,2,7,7,4,1,0,192,0,0, + 0,0,0,192,2,9,9,4,1,254,192,0,0,0,0,0, + 192,64,128,7,7,7,8,0,0,6,24,96,192,96,24,6, + 7,3,3,8,0,2,254,0,254,7,7,7,8,0,0,192, + 48,12,6,12,48,192,5,10,10,6,0,0,112,136,136,8, + 16,32,32,0,32,32,12,12,24,13,0,254,15,128,48,96, + 96,32,70,144,137,16,145,16,145,16,147,32,205,192,64,0, + 48,192,15,0,9,10,20,11,1,0,8,0,8,0,20,0, + 20,0,34,0,34,0,62,0,65,0,65,0,227,128,7,10, + 10,9,1,0,252,70,66,70,124,70,66,66,70,252,8,10, + 10,10,1,0,61,99,65,129,128,128,128,193,98,60,9,10, + 20,10,0,0,254,0,35,0,33,0,32,128,32,128,32,128, + 32,128,33,0,35,0,254,0,7,10,10,9,1,0,254,66, + 64,68,124,68,64,66,66,254,7,10,10,8,1,0,254,66, + 64,68,124,68,64,64,64,224,9,10,20,11,1,0,61,0, + 99,0,65,0,129,0,128,0,135,128,129,0,193,0,99,0, + 62,0,8,10,10,10,1,0,231,66,66,66,126,66,66,66, + 66,231,3,10,10,5,1,0,224,64,64,64,64,64,64,64, + 64,224,4,10,10,6,1,0,112,32,32,32,32,32,32,32, + 160,192,8,10,10,10,1,0,238,68,72,80,112,80,72,68, + 70,231,7,10,10,9,1,0,224,64,64,64,64,64,64,64, + 66,254,11,10,20,13,1,0,224,224,96,192,81,64,81,64, + 91,64,74,64,74,64,78,64,68,64,228,224,9,10,20,11, + 1,0,227,128,97,0,81,0,89,0,73,0,77,0,69,0, + 69,0,67,0,227,0,8,10,10,10,1,0,60,102,66,129, + 129,129,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,13,13,10,1,253,60,102,66,129, + 129,129,129,66,102,60,8,6,3,9,10,20,9,0,0,252, + 0,38,0,34,0,34,0,38,0,60,0,36,0,34,0,35, + 0,241,128,6,10,10,8,1,0,116,204,132,192,112,24,4, + 132,204,184,7,10,10,9,1,0,254,146,146,16,16,16,16, + 16,16,56,8,10,10,10,1,0,231,66,66,66,66,66,66, + 66,102,60,9,10,20,9,0,0,227,128,65,0,99,0,34, + 0,34,0,54,0,20,0,28,0,8,0,8,0,13,10,20, + 13,0,0,231,56,66,16,98,48,34,32,37,32,53,96,21, + 64,24,192,8,128,8,128,10,10,20,10,0,0,115,128,33, + 0,18,0,18,0,12,0,12,0,18,0,33,0,97,128,243, + 192,9,10,20,9,0,0,227,128,65,0,34,0,34,0,20, + 0,8,0,8,0,8,0,8,0,28,0,8,10,10,8,0, + 0,127,67,2,4,8,16,32,64,193,255,3,13,13,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,224,4,10, + 10,4,0,0,128,128,64,64,64,32,32,32,16,16,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,7,1,5,32,80,80,136,136,7,1,1,7, + 0,253,254,3,3,3,5,1,8,128,192,32,6,7,7,7, + 1,0,112,200,24,104,136,200,116,6,10,10,7,0,0,192, + 64,64,88,108,68,68,68,76,120,6,7,7,7,1,0,120, + 204,128,128,128,196,120,6,10,10,7,1,0,24,8,8,120, + 200,136,136,136,216,116,6,7,7,7,1,0,112,136,248,128, + 128,196,120,5,10,10,4,0,0,56,96,64,248,64,64,64, + 64,64,240,6,10,10,7,1,253,120,208,136,200,112,64,120, + 132,204,112,7,10,10,7,0,0,192,64,64,88,108,68,68, + 68,68,238,3,10,10,3,0,0,64,64,0,192,64,64,64, + 64,64,224,3,13,13,4,0,253,32,32,0,96,32,32,32, + 32,32,32,32,160,192,7,10,10,7,0,0,192,64,64,76, + 72,112,80,72,76,230,3,10,10,3,0,0,192,64,64,64, + 64,64,64,64,64,224,11,7,14,11,0,0,219,128,110,192, + 68,64,68,64,68,64,68,64,238,224,7,7,7,7,0,0, + 216,108,68,68,68,68,238,5,7,7,7,1,0,112,216,136, + 136,136,216,112,6,10,10,7,0,253,216,108,68,68,68,108, + 88,64,64,224,6,10,10,7,1,253,120,200,136,136,136,216, + 104,8,8,28,5,7,7,5,0,0,184,96,64,64,64,64, + 224,4,7,7,6,1,0,112,144,192,96,48,144,224,4,8, + 8,4,0,0,64,240,64,64,64,64,64,48,7,7,7,7, + 0,0,204,68,68,68,68,108,54,7,7,7,7,0,0,238, + 68,68,40,40,16,16,11,7,14,11,0,0,238,224,68,64, + 68,64,36,128,59,128,17,0,17,0,7,7,7,7,0,0, + 238,68,56,16,56,68,238,7,10,10,7,0,253,238,68,68, + 40,40,16,48,32,160,192,6,7,7,6,0,0,252,136,24, + 48,96,196,252,5,13,13,7,1,253,24,32,32,32,32,64, + 128,64,32,32,32,32,24,1,10,10,3,1,0,128,128,128, + 128,128,128,128,128,128,128,5,13,13,7,1,253,192,32,32, + 32,32,16,8,16,32,32,32,32,192,7,2,2,8,0,3, + 98,156,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,0,0,0,3,0,1,1,10,10,5,2,253,128, + 128,0,128,128,128,128,128,128,128,6,9,9,7,0,255,4, + 124,204,144,144,160,228,120,128,7,10,10,8,0,0,28,52, + 32,32,248,32,32,32,226,188,5,7,7,7,1,1,136,112, + 136,136,136,112,136,7,10,10,7,0,0,238,68,108,40,124, + 16,124,16,16,56,1,10,10,3,1,0,128,128,128,128,0, + 0,128,128,128,128,5,13,13,7,1,253,56,88,64,96,112, + 152,136,200,112,48,16,208,224,3,2,2,5,1,8,160,160, + 10,10,20,12,1,0,30,0,97,128,78,128,146,64,144,64, + 144,64,146,64,76,128,97,128,30,0,3,6,6,4,0,4, + 224,32,160,224,0,224,6,6,6,7,0,0,36,72,144,144, + 72,36,7,4,4,9,1,2,254,2,2,2,3,1,1,4, + 0,3,224,10,10,20,12,1,0,30,0,97,128,92,128,146, + 64,156,64,148,64,146,64,82,128,97,128,30,0,4,1,1, + 4,0,8,240,4,4,4,6,1,6,96,144,144,96,7,7, + 7,8,0,0,16,16,254,16,16,0,254,4,6,6,4,0, + 4,96,144,16,32,64,240,4,6,6,4,0,4,96,144,32, + 16,144,96,3,3,3,5,1,8,32,96,128,7,10,10,7, + 0,253,204,68,68,68,68,108,118,64,64,96,7,13,13,7, + 0,253,62,116,244,244,244,116,52,20,20,20,20,20,20,1, + 2,2,4,2,3,128,128,3,3,3,5,1,253,64,32,192, + 3,6,6,4,0,4,64,192,64,64,64,224,4,6,6,5, + 0,4,96,144,144,96,0,240,6,6,6,7,1,0,144,72, + 36,36,72,144,10,10,20,10,0,0,65,0,194,0,66,0, + 68,0,68,128,233,128,10,128,20,128,23,192,32,128,10,10, + 20,10,0,0,65,0,194,0,66,0,68,0,69,128,234,64, + 8,64,16,128,17,0,35,192,10,10,20,10,0,0,97,0, + 146,0,34,0,20,0,148,128,105,128,10,128,20,128,23,192, + 32,128,5,10,10,6,0,253,32,32,0,32,32,64,128,136, + 136,112,9,14,28,11,1,0,16,0,24,0,4,0,0,0, + 8,0,8,0,20,0,20,0,34,0,34,0,62,0,65,0, + 65,0,227,128,9,14,28,11,1,0,4,0,12,0,16,0, + 0,0,8,0,8,0,20,0,20,0,34,0,34,0,62,0, + 65,0,65,0,227,128,9,14,28,11,1,0,8,0,28,0, + 34,0,0,0,8,0,8,0,20,0,20,0,34,0,34,0, + 62,0,65,0,65,0,227,128,9,14,28,11,1,0,18,0, + 42,0,36,0,0,0,8,0,8,0,20,0,20,0,34,0, + 34,0,62,0,65,0,65,0,227,128,9,13,26,11,1,0, + 36,0,36,0,0,0,8,0,8,0,20,0,20,0,34,0, + 34,0,62,0,65,0,65,0,227,128,9,14,28,11,1,0, + 24,0,36,0,24,0,0,0,8,0,8,0,20,0,20,0, + 34,0,34,0,62,0,65,0,65,0,227,128,11,10,20,13, + 1,0,31,224,12,32,20,0,20,64,39,192,36,64,60,0, + 68,32,68,32,239,224,8,13,13,10,1,253,61,99,65,129, + 128,128,128,193,98,60,8,4,24,7,14,14,9,1,0,32, + 48,8,0,254,66,64,68,124,68,64,66,66,254,7,14,14, + 9,1,0,4,12,16,0,254,66,64,68,124,68,64,66,66, + 254,7,14,14,9,1,0,16,56,68,0,254,66,64,68,124, + 68,64,66,66,254,7,13,13,9,1,0,36,36,0,254,66, + 64,68,124,68,64,66,66,254,3,14,14,5,1,0,128,192, + 32,0,224,64,64,64,64,64,64,64,64,224,3,14,14,5, + 1,0,32,96,128,0,224,64,64,64,64,64,64,64,64,224, + 5,14,14,5,0,0,32,112,136,0,112,32,32,32,32,32, + 32,32,32,112,3,13,13,5,1,0,160,160,0,224,64,64, + 64,64,64,64,64,64,224,9,10,20,10,0,0,254,0,35, + 0,33,0,32,128,248,128,32,128,32,128,33,0,35,0,254, + 0,9,14,28,11,1,0,18,0,42,0,36,0,0,0,227, + 128,97,0,81,0,89,0,73,0,77,0,69,0,69,0,67, + 0,227,0,8,14,14,10,1,0,32,48,8,0,60,102,66, + 129,129,129,129,66,102,60,8,14,14,10,1,0,4,12,16, + 0,60,102,66,129,129,129,129,66,102,60,8,14,14,10,1, + 0,16,56,68,0,60,102,66,129,129,129,129,66,102,60,8, + 14,14,10,1,0,36,84,72,0,60,102,66,129,129,129,129, + 66,102,60,8,13,13,10,1,0,36,36,0,60,102,66,129, + 129,129,129,66,102,60,7,7,7,8,1,0,130,68,40,16, + 40,68,130,9,12,24,10,0,255,0,128,31,0,49,0,35, + 0,68,128,76,128,72,128,80,128,49,0,99,0,94,0,128, + 0,8,14,14,10,1,0,32,48,8,0,231,66,66,66,66, + 66,66,66,102,60,8,14,14,10,1,0,4,12,16,0,231, + 66,66,66,66,66,66,66,102,60,8,14,14,10,1,0,16, + 56,68,0,231,66,66,66,66,66,66,66,102,60,8,13,13, + 10,1,0,36,36,0,231,66,66,66,66,66,66,66,102,60, + 9,14,28,9,0,0,2,0,6,0,8,0,0,0,227,128, + 65,0,34,0,34,0,20,0,8,0,8,0,8,0,8,0, + 28,0,6,10,10,8,1,0,224,64,120,76,68,68,76,120, + 64,224,6,10,10,7,0,0,56,108,68,72,112,88,76,68, + 84,216,6,11,11,7,1,0,64,96,16,0,112,200,24,104, + 136,200,116,6,11,11,7,1,0,8,24,32,0,112,200,24, + 104,136,200,116,6,11,11,7,1,0,32,112,136,0,112,200, + 24,104,136,200,116,6,11,11,7,1,0,72,168,144,0,112, + 200,24,104,136,200,116,6,10,10,7,1,0,80,80,0,112, + 200,24,104,136,200,116,6,11,11,7,1,0,48,72,48,0, + 112,200,24,104,136,200,116,9,7,14,11,1,0,127,0,201, + 128,31,0,104,0,136,0,204,128,119,0,6,10,10,7,1, + 253,112,200,128,128,128,196,120,32,16,96,6,11,11,7,1, + 0,64,96,16,0,112,136,248,128,128,196,120,6,11,11,7, + 1,0,8,24,32,0,112,136,248,128,128,196,120,6,11,11, + 7,1,0,32,112,136,0,112,136,248,128,128,196,120,6,10, + 10,7,1,0,80,80,0,112,136,248,128,128,196,120,3,11, + 11,3,0,0,128,192,32,0,192,64,64,64,64,64,224,3, + 11,11,3,0,0,32,96,128,0,192,64,64,64,64,64,224, + 5,11,11,3,255,0,32,112,136,0,96,32,32,32,32,32, + 112,3,10,10,3,0,0,160,160,0,192,64,64,64,64,64, + 224,5,10,10,7,1,0,216,96,144,120,216,136,136,136,216, + 112,7,11,11,7,0,0,36,84,72,0,216,108,68,68,68, + 68,238,5,11,11,7,1,0,64,96,16,0,112,216,136,136, + 136,216,112,5,11,11,7,1,0,16,48,64,0,112,216,136, + 136,136,216,112,5,11,11,7,1,0,32,112,136,0,112,216, + 136,136,136,216,112,5,11,11,7,1,0,72,168,144,0,112, + 216,136,136,136,216,112,5,10,10,7,1,0,80,80,0,112, + 216,136,136,136,216,112,7,7,7,8,1,0,16,16,0,254, + 0,16,16,7,9,9,7,0,255,2,60,108,68,68,68,108, + 120,128,7,11,11,7,0,0,32,48,8,0,204,68,68,68, + 68,108,54,7,11,11,7,0,0,8,24,32,0,204,68,68, + 68,68,108,54,7,11,11,7,0,0,16,56,68,0,204,68, + 68,68,68,108,54,7,10,10,7,0,0,40,40,0,204,68, + 68,68,68,108,54,7,14,14,7,0,253,4,12,16,0,238, + 68,68,40,40,16,48,32,160,192,6,13,13,7,0,253,192, + 64,64,88,108,68,68,68,108,88,64,64,224,7,13,13,7, + 0,253,40,40,0,238,68,68,40,40,16,48,32,160,192}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=13 h=13 x= 2 y= 8 dx=13 dy= 0 ascent=11 len=24 + Font Bounding box w=17 h=24 x=-2 y=-6 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =10 descent=-3 + X Font ascent =10 descent=-3 + Max Font ascent =11 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR10r[1571] U8G_SECTION(".progmem.u8g_font_timR10r") = { + 0,17,24,254,250,10,2,4,4,92,32,127,253,11,253,10, + 253,0,0,0,3,0,1,1,10,10,5,2,0,128,128,128, + 128,128,128,128,0,128,128,3,3,3,6,1,7,160,160,160, + 7,10,10,7,0,0,20,20,126,40,40,40,252,80,80,80, + 5,12,12,7,1,255,32,120,168,160,160,112,40,40,40,168, + 240,32,9,10,20,12,1,0,113,128,223,0,146,0,148,0, + 104,0,11,0,22,128,36,128,68,128,67,0,10,10,20,11, + 1,0,24,0,36,0,36,0,56,0,19,128,121,0,202,0, + 132,0,206,64,115,128,1,3,3,3,1,7,128,128,128,3, + 13,13,5,1,253,32,32,64,64,128,128,128,128,128,64,64, + 32,32,3,13,13,5,1,253,128,128,64,64,32,32,32,32, + 32,64,64,128,128,5,6,6,7,1,4,32,168,112,112,168, + 32,7,7,7,8,0,0,16,16,16,254,16,16,16,2,3, + 3,4,1,254,192,64,128,3,1,1,4,0,3,224,2,1, + 1,4,1,0,192,4,12,12,4,0,254,16,16,16,32,32, + 32,64,64,64,128,128,128,6,10,10,7,1,0,120,204,132, + 132,132,132,132,132,204,120,5,10,10,7,1,0,32,224,32, + 32,32,32,32,32,32,248,5,10,10,7,1,0,112,216,136, + 8,24,16,32,64,136,248,6,10,10,7,0,0,120,140,4, + 8,48,56,4,4,204,120,6,10,10,7,0,0,8,24,24, + 40,104,72,136,252,8,8,5,10,10,7,1,0,120,64,128, + 224,48,24,8,8,144,224,6,10,10,7,0,0,12,16,32, + 64,120,204,132,132,204,120,6,10,10,7,0,0,252,132,8, + 8,16,16,32,32,64,64,5,10,10,7,1,0,112,152,136, + 200,112,152,136,136,136,112,6,10,10,7,1,0,120,204,132, + 132,204,120,8,16,32,192,2,7,7,4,1,0,192,0,0, + 0,0,0,192,2,9,9,4,1,254,192,0,0,0,0,0, + 192,64,128,7,7,7,8,0,0,6,24,96,192,96,24,6, + 7,3,3,8,0,2,254,0,254,7,7,7,8,0,0,192, + 48,12,6,12,48,192,5,10,10,6,0,0,112,136,136,8, + 16,32,32,0,32,32,12,12,24,13,0,254,15,128,48,96, + 96,32,70,144,137,16,145,16,145,16,147,32,205,192,64,0, + 48,192,15,0,9,10,20,11,1,0,8,0,8,0,20,0, + 20,0,34,0,34,0,62,0,65,0,65,0,227,128,7,10, + 10,9,1,0,252,70,66,70,124,70,66,66,70,252,8,10, + 10,10,1,0,61,99,65,129,128,128,128,193,98,60,9,10, + 20,10,0,0,254,0,35,0,33,0,32,128,32,128,32,128, + 32,128,33,0,35,0,254,0,7,10,10,9,1,0,254,66, + 64,68,124,68,64,66,66,254,7,10,10,8,1,0,254,66, + 64,68,124,68,64,64,64,224,9,10,20,11,1,0,61,0, + 99,0,65,0,129,0,128,0,135,128,129,0,193,0,99,0, + 62,0,8,10,10,10,1,0,231,66,66,66,126,66,66,66, + 66,231,3,10,10,5,1,0,224,64,64,64,64,64,64,64, + 64,224,4,10,10,6,1,0,112,32,32,32,32,32,32,32, + 160,192,8,10,10,10,1,0,238,68,72,80,112,80,72,68, + 70,231,7,10,10,9,1,0,224,64,64,64,64,64,64,64, + 66,254,11,10,20,13,1,0,224,224,96,192,81,64,81,64, + 91,64,74,64,74,64,78,64,68,64,228,224,9,10,20,11, + 1,0,227,128,97,0,81,0,89,0,73,0,77,0,69,0, + 69,0,67,0,227,0,8,10,10,10,1,0,60,102,66,129, + 129,129,129,66,102,60,6,10,10,8,1,0,248,76,68,68, + 76,120,64,64,64,224,8,13,13,10,1,253,60,102,66,129, + 129,129,129,66,102,60,8,6,3,9,10,20,9,0,0,252, + 0,38,0,34,0,34,0,38,0,60,0,36,0,34,0,35, + 0,241,128,6,10,10,8,1,0,116,204,132,192,112,24,4, + 132,204,184,7,10,10,9,1,0,254,146,146,16,16,16,16, + 16,16,56,8,10,10,10,1,0,231,66,66,66,66,66,66, + 66,102,60,9,10,20,9,0,0,227,128,65,0,99,0,34, + 0,34,0,54,0,20,0,28,0,8,0,8,0,13,10,20, + 13,0,0,231,56,66,16,98,48,34,32,37,32,53,96,21, + 64,24,192,8,128,8,128,10,10,20,10,0,0,115,128,33, + 0,18,0,18,0,12,0,12,0,18,0,33,0,97,128,243, + 192,9,10,20,9,0,0,227,128,65,0,34,0,34,0,20, + 0,8,0,8,0,8,0,8,0,28,0,8,10,10,8,0, + 0,127,67,2,4,8,16,32,64,193,255,3,13,13,5,1, + 253,224,128,128,128,128,128,128,128,128,128,128,128,224,4,10, + 10,4,0,0,128,128,64,64,64,32,32,32,16,16,3,13, + 13,5,1,253,224,32,32,32,32,32,32,32,32,32,32,32, + 224,5,5,5,7,1,5,32,80,80,136,136,7,1,1,7, + 0,253,254,3,3,3,5,1,8,128,192,32,6,7,7,7, + 1,0,112,200,24,104,136,200,116,6,10,10,7,0,0,192, + 64,64,88,108,68,68,68,76,120,6,7,7,7,1,0,120, + 204,128,128,128,196,120,6,10,10,7,1,0,24,8,8,120, + 200,136,136,136,216,116,6,7,7,7,1,0,112,136,248,128, + 128,196,120,5,10,10,4,0,0,56,96,64,248,64,64,64, + 64,64,240,6,10,10,7,1,253,120,208,136,200,112,64,120, + 132,204,112,7,10,10,7,0,0,192,64,64,88,108,68,68, + 68,68,238,3,10,10,3,0,0,64,64,0,192,64,64,64, + 64,64,224,3,13,13,4,0,253,32,32,0,96,32,32,32, + 32,32,32,32,160,192,7,10,10,7,0,0,192,64,64,76, + 72,112,80,72,76,230,3,10,10,3,0,0,192,64,64,64, + 64,64,64,64,64,224,11,7,14,11,0,0,219,128,110,192, + 68,64,68,64,68,64,68,64,238,224,7,7,7,7,0,0, + 216,108,68,68,68,68,238,5,7,7,7,1,0,112,216,136, + 136,136,216,112,6,10,10,7,0,253,216,108,68,68,68,108, + 88,64,64,224,6,10,10,7,1,253,120,200,136,136,136,216, + 104,8,8,28,5,7,7,5,0,0,184,96,64,64,64,64, + 224,4,7,7,6,1,0,112,144,192,96,48,144,224,4,8, + 8,4,0,0,64,240,64,64,64,64,64,48,7,7,7,7, + 0,0,204,68,68,68,68,108,54,7,7,7,7,0,0,238, + 68,68,40,40,16,16,11,7,14,11,0,0,238,224,68,64, + 68,64,36,128,59,128,17,0,17,0,7,7,7,7,0,0, + 238,68,56,16,56,68,238,7,10,10,7,0,253,238,68,68, + 40,40,16,48,32,160,192,6,7,7,6,0,0,252,136,24, + 48,96,196,252,5,13,13,7,1,253,24,32,32,32,32,64, + 128,64,32,32,32,32,24,1,10,10,3,1,0,128,128,128, + 128,128,128,128,128,128,128,5,13,13,7,1,253,192,32,32, + 32,32,16,8,16,32,32,32,32,192,7,2,2,8,0,3, + 98,156,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--17-120-100-100-P-84-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=16 x= 2 y= 9 dx=16 dy= 0 ascent=15 len=30 + Font Bounding box w=19 h=26 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =15 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR12[3905] U8G_SECTION(".progmem.u8g_font_timR12") = { + 0,19,26,254,249,11,2,36,5,11,32,255,252,15,252,11, + 252,0,0,0,4,0,1,1,11,11,5,2,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,7,1,8,144,144, + 144,8,11,11,8,0,0,18,18,18,127,36,36,254,72,72, + 72,72,7,13,13,8,0,255,16,124,146,146,144,80,56,20, + 18,146,146,124,16,11,11,22,14,1,0,57,0,79,0,139, + 0,138,0,150,0,100,224,13,32,10,32,26,32,18,64,17, + 128,12,11,22,13,0,0,12,0,18,0,18,0,18,0,12, + 224,56,64,68,128,131,0,130,16,69,32,56,192,1,3,3, + 3,1,8,128,128,128,4,14,14,5,0,253,16,32,64,64, + 128,128,128,128,128,128,64,64,32,16,4,14,14,5,255,253, + 128,64,32,32,16,16,16,16,16,16,32,32,64,128,5,6, + 6,8,1,5,32,168,112,112,168,32,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,3,3,4,1,255,64,64,128, + 4,1,1,5,0,4,240,1,2,2,4,1,0,128,128,5, + 13,13,5,0,254,8,8,8,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,68,68,130,130,130,130,130, + 68,68,56,4,11,11,8,1,0,32,96,160,32,32,32,32, + 32,32,32,112,7,11,11,8,0,0,56,68,130,2,2,4, + 8,16,32,66,252,7,11,11,8,0,0,56,68,132,8,16, + 56,4,2,2,196,120,8,11,11,8,255,0,2,6,10,10, + 18,34,34,66,255,2,2,7,11,11,8,0,0,62,32,32, + 64,120,4,2,2,2,140,112,7,11,11,8,0,0,14,48, + 64,64,152,228,130,130,130,68,56,7,11,11,8,0,0,254, + 130,132,4,8,8,16,16,16,32,32,6,11,11,8,0,0, + 48,72,132,132,72,48,72,132,132,72,48,7,11,11,8,0, + 0,56,68,130,130,130,70,58,4,4,24,224,1,8,8,4, + 1,0,128,128,0,0,0,0,128,128,2,9,9,4,0,255, + 64,64,0,0,0,0,64,64,128,8,9,9,9,0,0,3, + 12,16,96,128,96,16,12,3,7,4,4,9,0,2,254,0, + 0,254,8,9,9,9,1,0,192,48,8,6,1,6,8,48, + 192,5,11,11,7,1,0,112,136,136,8,16,32,32,0,0, + 32,32,14,14,28,15,0,253,7,192,24,48,32,8,65,168, + 70,100,132,68,136,68,136,68,136,200,137,72,70,48,32,0, + 24,48,7,192,12,11,22,12,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 8,11,11,11,1,0,252,70,66,66,68,124,70,65,65,67, + 254,10,11,22,11,0,0,31,64,96,192,64,64,128,64,128, + 0,128,0,128,0,128,0,64,64,97,128,30,0,10,11,22, + 12,0,0,252,0,67,0,64,128,64,64,64,64,64,64,64, + 64,64,64,64,128,67,0,252,0,9,11,22,10,0,0,255, + 0,65,0,64,0,64,0,66,0,126,0,66,0,64,0,64, + 0,64,128,255,0,8,11,11,9,0,0,255,65,64,64,66, + 126,66,64,64,64,224,11,11,22,12,0,0,15,64,48,192, + 64,64,128,0,128,0,129,224,128,64,128,64,64,64,48,192, + 15,0,10,11,22,12,0,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,225,192,3,11, + 11,5,0,0,224,64,64,64,64,64,64,64,64,64,224,5, + 11,11,6,0,0,56,16,16,16,16,16,16,16,144,144,96, + 10,11,22,12,1,0,243,192,65,0,66,0,68,0,72,0, + 112,0,72,0,68,0,66,0,65,0,243,192,8,11,11,10, + 0,0,224,64,64,64,64,64,64,64,64,65,254,13,11,22, + 15,0,0,224,56,96,48,80,80,80,80,72,144,72,144,72, + 144,69,16,69,16,66,16,226,56,10,11,22,12,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,11,22,12,1,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,8,11,11,9,0,0,252,66,65,65,66,124,64,64,64, + 64,224,10,14,28,12,1,253,28,0,99,0,65,0,128,128, + 128,128,128,128,128,128,128,128,65,0,99,0,60,0,12,0, + 6,0,1,192,10,11,22,11,0,0,252,0,66,0,65,0, + 65,0,66,0,124,0,72,0,68,0,66,0,65,0,225,192, + 8,11,11,9,0,0,58,70,130,128,96,28,2,1,129,194, + 188,9,11,22,10,0,0,255,128,136,128,136,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,28,0,10,11,22, + 12,0,0,225,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,11,11,22,12,0,0,224, + 224,64,64,32,128,32,128,17,0,17,0,17,0,10,0,10, + 0,4,0,4,0,15,11,22,16,0,0,231,14,66,4,33, + 8,33,8,17,136,18,144,18,144,10,80,10,80,4,32,4, + 32,11,11,22,12,0,0,224,224,64,64,32,128,17,0,10, + 0,4,0,10,0,17,0,32,128,64,64,224,224,11,11,22, + 12,0,0,224,224,64,64,32,128,17,0,17,0,10,0,4, + 0,4,0,4,0,4,0,14,0,9,11,22,10,0,0,255, + 128,129,0,130,0,4,0,4,0,8,0,16,0,32,0,32, + 0,64,128,255,0,3,14,14,5,1,253,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,11,11,5,255,0,128, + 64,64,32,32,16,16,8,8,4,4,3,14,14,5,0,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,224,7,7, + 7,8,0,4,16,40,40,68,68,130,130,8,1,1,8,0, + 254,255,3,3,3,6,1,8,128,64,32,7,8,8,7,1, + 0,112,136,136,56,200,136,154,108,7,11,11,8,0,0,64, + 192,64,92,100,66,66,66,66,100,56,6,8,8,7,0,0, + 56,68,132,128,128,128,68,56,7,11,11,8,0,0,4,12, + 4,52,76,132,132,132,132,78,52,6,8,8,7,0,0,56, + 68,132,252,128,128,68,56,5,11,11,6,1,0,48,72,64, + 64,240,64,64,64,64,64,240,7,12,12,8,0,252,54,76, + 132,132,72,112,128,124,130,130,196,120,8,11,11,8,0,0, + 64,192,64,92,102,66,66,66,66,66,231,3,11,11,5,1, + 0,64,64,0,64,192,64,64,64,64,64,224,3,15,15,4, + 0,252,32,32,0,32,96,32,32,32,32,32,32,32,32,160, + 192,7,11,11,8,1,0,64,192,64,92,72,80,96,80,72, + 68,238,3,11,11,5,1,0,64,192,64,64,64,64,64,64, + 64,64,224,11,8,16,13,1,0,89,128,230,64,68,64,68, + 64,68,64,68,64,68,64,238,224,8,8,8,8,0,0,92, + 230,66,66,66,66,66,231,7,8,8,8,0,0,56,68,130, + 130,130,130,68,56,7,12,12,8,0,252,92,230,66,66,66, + 66,98,92,64,64,64,224,7,12,12,8,1,252,116,204,132, + 132,132,132,204,116,4,4,4,14,5,8,8,6,0,0,88, + 232,64,64,64,64,64,224,5,8,8,6,0,0,120,136,128, + 112,8,136,200,176,4,10,10,5,0,0,64,64,240,64,64, + 64,64,64,80,32,8,8,8,8,0,0,198,66,66,66,66, + 66,71,58,8,8,8,8,0,0,231,66,66,36,36,20,24, + 8,12,8,16,12,0,0,238,112,68,32,68,32,34,64,34, + 64,21,64,8,128,8,128,7,8,8,8,0,0,238,68,40, + 16,40,40,68,238,8,12,12,8,0,252,247,66,66,36,36, + 20,8,8,16,16,160,192,6,8,8,7,0,0,252,132,8, + 16,32,64,132,252,4,14,14,8,2,253,48,64,64,64,64, + 64,128,64,64,64,64,64,64,48,1,11,11,3,0,0,128, + 128,128,128,128,128,128,128,128,128,128,4,14,14,8,0,253, + 192,32,32,32,32,32,16,32,32,32,32,32,32,192,8,3, + 3,9,0,3,113,153,142,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,4,0,1,1,11, + 11,5,2,253,128,128,0,0,128,128,128,128,128,128,128,7, + 12,12,8,0,254,4,4,60,74,138,136,144,146,84,56,32, + 32,8,11,11,8,0,0,12,18,34,32,32,252,16,16,113, + 145,110,8,9,9,8,0,1,153,102,66,129,129,129,66,102, + 153,9,11,22,8,255,0,227,128,65,0,34,0,20,0,8, + 0,62,0,8,0,62,0,8,0,8,0,28,0,1,11,11, + 3,0,0,128,128,128,128,128,0,128,128,128,128,128,7,14, + 14,8,0,253,56,68,76,32,80,136,132,66,34,20,8,100, + 68,56,4,2,2,6,1,9,144,144,11,11,22,13,0,0, + 14,0,49,128,64,64,78,64,145,32,144,32,144,32,81,64, + 78,64,49,128,14,0,4,6,6,5,0,5,96,16,112,144, + 80,240,7,7,7,8,0,0,18,36,72,144,72,36,18,8, + 5,5,9,0,0,255,1,1,1,1,4,1,1,5,0,4, + 240,11,11,22,13,0,0,14,0,49,128,64,64,78,64,137, + 32,142,32,138,32,74,64,73,64,49,128,14,0,5,1,1, + 6,0,9,248,5,5,5,7,1,6,112,136,136,136,112,7, + 9,9,9,1,0,16,16,16,254,16,16,16,0,254,5,7, + 7,5,0,4,112,136,8,16,32,72,248,6,7,7,5,255, + 4,56,68,4,24,4,132,120,3,3,3,6,2,8,32,64, + 128,8,11,11,8,0,253,198,66,66,66,66,66,71,122,64, + 64,64,7,15,15,8,0,252,62,116,244,244,244,116,52,20, + 20,20,20,20,20,20,20,1,2,2,4,1,4,128,128,4, + 4,4,6,0,252,32,112,16,224,3,7,7,5,1,4,64, + 192,64,64,64,64,224,4,6,6,5,0,5,96,144,144,144, + 96,240,7,7,7,8,0,0,144,72,36,18,36,72,144,11, + 11,22,13,1,0,64,128,193,0,67,0,66,0,68,64,76, + 192,233,64,25,64,18,64,39,224,64,64,12,11,22,13,0, + 0,64,128,193,0,67,0,66,0,68,224,77,16,232,16,24, + 32,16,64,32,144,65,240,13,11,22,13,255,0,56,32,68, + 64,4,192,24,128,5,16,135,48,122,80,6,80,4,144,9, + 248,8,16,5,11,11,7,1,253,32,32,0,0,32,32,64, + 128,136,136,112,12,15,30,12,0,0,8,0,4,0,2,0, + 0,0,4,0,6,0,10,0,11,0,17,0,17,128,32,128, + 63,128,64,192,64,64,224,240,12,15,30,12,0,0,1,0, + 2,0,4,0,0,0,4,0,6,0,10,0,11,0,17,0, + 17,128,32,128,63,128,64,192,64,64,224,240,12,15,30,12, + 0,0,4,0,10,0,17,0,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 12,14,28,12,0,0,13,0,22,0,0,0,4,0,6,0, + 10,0,11,0,17,0,17,128,32,128,63,128,64,192,64,64, + 224,240,12,14,28,12,0,0,9,0,9,0,0,0,4,0, + 6,0,10,0,11,0,17,0,17,128,32,128,63,128,64,192, + 64,64,224,240,12,14,28,12,0,0,6,0,9,0,9,0, + 6,0,6,0,10,0,11,0,17,0,17,128,32,128,63,128, + 64,192,64,64,224,240,14,11,22,15,0,0,7,248,3,8, + 5,8,9,0,9,16,17,240,31,16,33,0,33,0,65,4, + 243,248,10,15,30,11,0,252,15,64,48,192,64,64,128,64, + 128,0,128,0,128,0,128,0,64,64,49,128,14,0,4,0, + 14,0,2,0,28,0,9,15,30,10,0,0,32,0,16,0, + 8,0,0,0,255,0,65,0,64,0,64,0,66,0,126,0, + 66,0,64,0,64,0,64,128,255,0,9,15,30,10,0,0, + 2,0,4,0,8,0,0,0,255,0,65,0,65,0,64,0, + 66,0,126,0,66,0,64,0,64,0,64,128,255,0,9,15, + 30,10,0,0,8,0,20,0,34,0,0,0,255,0,65,0, + 64,0,64,0,66,0,126,0,66,0,64,0,64,0,64,128, + 255,0,9,14,28,10,0,0,36,0,36,0,0,0,255,0, + 65,0,64,0,64,0,66,0,126,0,66,0,64,0,64,0, + 64,128,255,0,4,15,15,5,255,0,128,64,32,0,112,32, + 32,32,32,32,32,32,32,32,112,5,15,15,5,0,0,8, + 16,32,0,224,64,64,64,64,64,64,64,64,64,224,5,15, + 15,5,255,0,32,80,136,0,112,32,32,32,32,32,32,32, + 32,32,112,3,14,14,5,0,0,160,160,0,224,64,64,64, + 64,64,64,64,64,64,224,10,11,22,12,1,0,252,0,67, + 0,64,128,64,64,64,64,248,64,64,64,64,64,64,128,67, + 0,252,0,10,14,28,12,0,0,13,0,22,0,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,15,30,12,1,0,32,0,16,0,8, + 0,0,0,28,0,99,0,65,0,128,128,128,128,128,128,128, + 128,128,128,65,0,99,0,28,0,9,15,30,12,1,0,2, + 0,4,0,8,0,0,0,28,0,99,0,65,0,128,128,128, + 128,128,128,128,128,128,128,65,0,99,0,28,0,9,15,30, + 12,1,0,8,0,20,0,34,0,0,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,9,14,28,12,1,0,26,0,44,0,0,0,28,0,99, + 0,65,0,128,128,128,128,128,128,128,128,128,128,65,0,99, + 0,28,0,9,14,28,12,1,0,34,0,34,0,0,0,28, + 0,99,0,65,0,128,128,128,128,128,128,128,128,128,128,65, + 0,99,0,28,0,7,7,7,9,1,0,130,68,40,16,40, + 68,130,11,13,26,12,0,255,0,64,14,64,49,128,65,64, + 130,32,132,32,132,32,136,32,144,32,80,64,49,128,78,0, + 64,0,10,15,30,12,0,0,16,0,8,0,4,0,0,0, + 225,192,64,128,64,128,64,128,64,128,64,128,64,128,64,128, + 64,128,33,0,30,0,10,15,30,12,0,0,1,0,2,0, + 4,0,0,0,225,192,64,128,64,128,64,128,64,128,64,128, + 64,128,64,128,64,128,33,0,30,0,10,15,30,12,0,0, + 4,0,10,0,17,0,0,0,225,192,64,128,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,33,0,30,0,10,14, + 28,12,0,0,18,0,18,0,0,0,225,192,64,128,64,128, + 64,128,64,128,64,128,64,128,64,128,64,128,33,0,30,0, + 11,15,30,12,0,0,0,128,1,0,2,0,0,0,224,224, + 64,64,32,128,17,0,17,0,10,0,4,0,4,0,4,0, + 4,0,14,0,8,11,11,9,0,0,224,64,124,66,65,65, + 66,124,64,64,224,7,11,11,8,0,0,56,68,68,68,72, + 88,68,66,66,82,204,7,12,12,7,1,0,64,32,16,0, + 112,136,136,56,200,136,154,100,7,12,12,7,1,0,8,16, + 32,0,112,136,136,56,200,136,154,100,7,12,12,7,1,0, + 32,80,136,0,112,136,136,56,200,136,154,100,7,11,11,7, + 1,0,104,176,0,112,136,136,56,200,136,154,100,7,11,11, + 7,1,0,72,72,0,112,136,136,56,200,136,154,100,7,12, + 12,7,1,0,32,80,80,32,112,136,136,56,200,136,154,100, + 9,8,16,11,1,0,115,0,140,128,136,128,63,128,200,0, + 136,0,156,128,99,0,6,12,12,7,0,252,56,68,132,128, + 128,128,68,56,16,56,8,112,6,12,12,7,0,0,64,32, + 16,0,56,68,132,252,128,128,68,56,6,12,12,7,0,0, + 4,8,16,0,56,68,132,252,128,128,68,56,6,12,12,7, + 0,0,16,40,68,0,56,68,132,252,128,128,68,56,6,11, + 11,7,0,0,72,72,0,56,68,132,252,128,128,68,56,3, + 12,12,5,0,0,128,64,32,0,64,192,64,64,64,64,64, + 224,3,12,12,5,0,0,32,64,128,0,64,192,64,64,64, + 64,64,224,5,12,12,5,255,0,32,80,136,0,32,96,32, + 32,32,32,32,112,3,11,11,5,0,0,160,160,0,64,192, + 64,64,64,64,64,224,7,11,11,8,0,0,108,48,200,60, + 68,130,130,130,130,68,56,8,11,11,8,255,0,52,88,0, + 92,230,66,66,66,66,66,231,7,12,12,8,0,0,32,16, + 8,0,56,68,130,130,130,130,68,56,7,12,12,8,0,0, + 4,8,16,0,56,68,130,130,130,130,68,56,7,12,12,8, + 0,0,16,40,68,0,56,68,130,130,130,130,68,56,7,11, + 11,8,0,0,52,88,0,56,68,130,130,130,130,68,56,7, + 11,11,8,0,0,72,72,0,56,68,130,130,130,130,68,56, + 9,9,18,9,255,0,8,0,8,0,0,0,0,0,255,128, + 0,0,0,0,8,0,8,0,7,12,12,8,0,254,2,2, + 60,68,138,146,146,162,100,56,64,64,8,12,12,8,255,0, + 32,16,8,0,198,66,66,66,66,66,70,59,8,12,12,8, + 255,0,4,8,16,0,198,66,66,66,66,66,70,59,8,12, + 12,8,255,0,16,40,68,0,198,66,66,66,66,66,70,59, + 8,11,11,8,255,0,36,36,0,198,66,66,66,66,66,70, + 59,8,16,16,8,255,252,2,4,8,0,247,66,66,36,36, + 20,8,8,16,16,160,192,8,15,15,8,255,252,64,192,64, + 92,98,65,65,65,65,98,92,64,64,64,224,8,15,15,8, + 255,252,36,36,0,247,66,98,36,52,20,24,8,16,16,160, + 192}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--17-120-100-100-P-84-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=15 h=15 x= 2 y= 8 dx=16 dy= 0 ascent=12 len=28 + Font Bounding box w=19 h=26 x=-2 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =11 descent=-4 + X Font ascent =11 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR12r[1784] U8G_SECTION(".progmem.u8g_font_timR12r") = { + 0,19,26,254,249,11,2,36,5,11,32,127,252,12,252,11, + 252,0,0,0,4,0,1,1,11,11,5,2,0,128,128,128, + 128,128,128,128,0,0,128,128,4,3,3,7,1,8,144,144, + 144,8,11,11,8,0,0,18,18,18,127,36,36,254,72,72, + 72,72,7,13,13,8,0,255,16,124,146,146,144,80,56,20, + 18,146,146,124,16,11,11,22,14,1,0,57,0,79,0,139, + 0,138,0,150,0,100,224,13,32,10,32,26,32,18,64,17, + 128,12,11,22,13,0,0,12,0,18,0,18,0,18,0,12, + 224,56,64,68,128,131,0,130,16,69,32,56,192,1,3,3, + 3,1,8,128,128,128,4,14,14,5,0,253,16,32,64,64, + 128,128,128,128,128,128,64,64,32,16,4,14,14,5,255,253, + 128,64,32,32,16,16,16,16,16,16,32,32,64,128,5,6, + 6,8,1,5,32,168,112,112,168,32,7,7,7,9,1,1, + 16,16,16,254,16,16,16,2,3,3,4,1,255,64,64,128, + 4,1,1,5,0,4,240,1,2,2,4,1,0,128,128,5, + 13,13,5,0,254,8,8,8,16,16,32,32,32,64,64,64, + 128,128,7,11,11,8,0,0,56,68,68,130,130,130,130,130, + 68,68,56,4,11,11,8,1,0,32,96,160,32,32,32,32, + 32,32,32,112,7,11,11,8,0,0,56,68,130,2,2,4, + 8,16,32,66,252,7,11,11,8,0,0,56,68,132,8,16, + 56,4,2,2,196,120,8,11,11,8,255,0,2,6,10,10, + 18,34,34,66,255,2,2,7,11,11,8,0,0,62,32,32, + 64,120,4,2,2,2,140,112,7,11,11,8,0,0,14,48, + 64,64,152,228,130,130,130,68,56,7,11,11,8,0,0,254, + 130,132,4,8,8,16,16,16,32,32,6,11,11,8,0,0, + 48,72,132,132,72,48,72,132,132,72,48,7,11,11,8,0, + 0,56,68,130,130,130,70,58,4,4,24,224,1,8,8,4, + 1,0,128,128,0,0,0,0,128,128,2,9,9,4,0,255, + 64,64,0,0,0,0,64,64,128,8,9,9,9,0,0,3, + 12,16,96,128,96,16,12,3,7,4,4,9,0,2,254,0, + 0,254,8,9,9,9,1,0,192,48,8,6,1,6,8,48, + 192,5,11,11,7,1,0,112,136,136,8,16,32,32,0,0, + 32,32,14,14,28,15,0,253,7,192,24,48,32,8,65,168, + 70,100,132,68,136,68,136,68,136,200,137,72,70,48,32,0, + 24,48,7,192,12,11,22,12,0,0,4,0,6,0,10,0, + 11,0,17,0,17,128,32,128,63,128,64,192,64,64,224,240, + 8,11,11,11,1,0,252,70,66,66,68,124,70,65,65,67, + 254,10,11,22,11,0,0,31,64,96,192,64,64,128,64,128, + 0,128,0,128,0,128,0,64,64,97,128,30,0,10,11,22, + 12,0,0,252,0,67,0,64,128,64,64,64,64,64,64,64, + 64,64,64,64,128,67,0,252,0,9,11,22,10,0,0,255, + 0,65,0,64,0,64,0,66,0,126,0,66,0,64,0,64, + 0,64,128,255,0,8,11,11,9,0,0,255,65,64,64,66, + 126,66,64,64,64,224,11,11,22,12,0,0,15,64,48,192, + 64,64,128,0,128,0,129,224,128,64,128,64,64,64,48,192, + 15,0,10,11,22,12,0,0,225,192,64,128,64,128,64,128, + 64,128,127,128,64,128,64,128,64,128,64,128,225,192,3,11, + 11,5,0,0,224,64,64,64,64,64,64,64,64,64,224,5, + 11,11,6,0,0,56,16,16,16,16,16,16,16,144,144,96, + 10,11,22,12,1,0,243,192,65,0,66,0,68,0,72,0, + 112,0,72,0,68,0,66,0,65,0,243,192,8,11,11,10, + 0,0,224,64,64,64,64,64,64,64,64,65,254,13,11,22, + 15,0,0,224,56,96,48,80,80,80,80,72,144,72,144,72, + 144,69,16,69,16,66,16,226,56,10,11,22,12,0,0,225, + 192,96,128,80,128,80,128,72,128,72,128,68,128,66,128,66, + 128,65,128,240,128,9,11,22,12,1,0,28,0,99,0,65, + 0,128,128,128,128,128,128,128,128,128,128,65,0,99,0,28, + 0,8,11,11,9,0,0,252,66,65,65,66,124,64,64,64, + 64,224,10,14,28,12,1,253,28,0,99,0,65,0,128,128, + 128,128,128,128,128,128,128,128,65,0,99,0,60,0,12,0, + 6,0,1,192,10,11,22,11,0,0,252,0,66,0,65,0, + 65,0,66,0,124,0,72,0,68,0,66,0,65,0,225,192, + 8,11,11,9,0,0,58,70,130,128,96,28,2,1,129,194, + 188,9,11,22,10,0,0,255,128,136,128,136,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,28,0,10,11,22, + 12,0,0,225,192,64,128,64,128,64,128,64,128,64,128,64, + 128,64,128,64,128,33,0,30,0,11,11,22,12,0,0,224, + 224,64,64,32,128,32,128,17,0,17,0,17,0,10,0,10, + 0,4,0,4,0,15,11,22,16,0,0,231,14,66,4,33, + 8,33,8,17,136,18,144,18,144,10,80,10,80,4,32,4, + 32,11,11,22,12,0,0,224,224,64,64,32,128,17,0,10, + 0,4,0,10,0,17,0,32,128,64,64,224,224,11,11,22, + 12,0,0,224,224,64,64,32,128,17,0,17,0,10,0,4, + 0,4,0,4,0,4,0,14,0,9,11,22,10,0,0,255, + 128,129,0,130,0,4,0,4,0,8,0,16,0,32,0,32, + 0,64,128,255,0,3,14,14,5,1,253,224,128,128,128,128, + 128,128,128,128,128,128,128,128,224,6,11,11,5,255,0,128, + 64,64,32,32,16,16,8,8,4,4,3,14,14,5,0,253, + 224,32,32,32,32,32,32,32,32,32,32,32,32,224,7,7, + 7,8,0,4,16,40,40,68,68,130,130,8,1,1,8,0, + 254,255,3,3,3,6,1,8,128,64,32,7,8,8,7,1, + 0,112,136,136,56,200,136,154,108,7,11,11,8,0,0,64, + 192,64,92,100,66,66,66,66,100,56,6,8,8,7,0,0, + 56,68,132,128,128,128,68,56,7,11,11,8,0,0,4,12, + 4,52,76,132,132,132,132,78,52,6,8,8,7,0,0,56, + 68,132,252,128,128,68,56,5,11,11,6,1,0,48,72,64, + 64,240,64,64,64,64,64,240,7,12,12,8,0,252,54,76, + 132,132,72,112,128,124,130,130,196,120,8,11,11,8,0,0, + 64,192,64,92,102,66,66,66,66,66,231,3,11,11,5,1, + 0,64,64,0,64,192,64,64,64,64,64,224,3,15,15,4, + 0,252,32,32,0,32,96,32,32,32,32,32,32,32,32,160, + 192,7,11,11,8,1,0,64,192,64,92,72,80,96,80,72, + 68,238,3,11,11,5,1,0,64,192,64,64,64,64,64,64, + 64,64,224,11,8,16,13,1,0,89,128,230,64,68,64,68, + 64,68,64,68,64,68,64,238,224,8,8,8,8,0,0,92, + 230,66,66,66,66,66,231,7,8,8,8,0,0,56,68,130, + 130,130,130,68,56,7,12,12,8,0,252,92,230,66,66,66, + 66,98,92,64,64,64,224,7,12,12,8,1,252,116,204,132, + 132,132,132,204,116,4,4,4,14,5,8,8,6,0,0,88, + 232,64,64,64,64,64,224,5,8,8,6,0,0,120,136,128, + 112,8,136,200,176,4,10,10,5,0,0,64,64,240,64,64, + 64,64,64,80,32,8,8,8,8,0,0,198,66,66,66,66, + 66,71,58,8,8,8,8,0,0,231,66,66,36,36,20,24, + 8,12,8,16,12,0,0,238,112,68,32,68,32,34,64,34, + 64,21,64,8,128,8,128,7,8,8,8,0,0,238,68,40, + 16,40,40,68,238,8,12,12,8,0,252,247,66,66,36,36, + 20,8,8,16,16,160,192,6,8,8,7,0,0,252,132,8, + 16,32,64,132,252,4,14,14,8,2,253,48,64,64,64,64, + 64,128,64,64,64,64,64,64,48,1,11,11,3,0,0,128, + 128,128,128,128,128,128,128,128,128,128,4,14,14,8,0,253, + 192,32,32,32,32,32,16,32,32,32,32,32,32,192,8,3, + 3,9,0,3,113,153,142,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--20-140-100-100-P-96-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=18 x= 2 y=10 dx=18 dy= 0 ascent=18 len=39 + Font Bounding box w=22 h=29 x=-3 y=-7 + Calculated Min Values x=-2 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR14[4577] U8G_SECTION(".progmem.u8g_font_timR14") = { + 0,22,29,253,249,13,2,131,6,16,32,255,252,18,252,13, + 252,0,0,0,5,0,1,2,13,13,4,1,0,192,192,192, + 192,192,192,64,64,64,0,0,192,192,6,4,4,8,1,9, + 204,204,204,136,12,11,22,10,255,1,12,192,12,192,12,192, + 127,240,25,128,25,128,25,128,255,224,51,0,51,0,51,0, + 7,16,16,9,1,254,16,124,214,210,208,240,120,60,28,22, + 22,150,214,124,16,16,13,13,26,15,1,0,56,48,111,224, + 196,64,196,128,205,128,251,0,114,112,6,216,13,136,9,136, + 25,152,49,240,32,224,12,13,26,14,1,0,28,0,50,0, + 50,0,50,0,52,0,25,224,56,192,109,128,207,0,199,0, + 199,128,237,240,120,224,2,4,4,4,1,9,192,192,192,128, + 5,17,17,7,1,252,24,48,96,96,64,192,192,192,192,192, + 192,192,64,96,96,48,24,5,17,17,7,1,252,192,96,48, + 48,16,24,24,24,24,24,24,24,16,48,48,96,192,7,7, + 7,9,1,6,16,214,84,56,214,146,16,8,8,8,10,1, + 1,24,24,24,255,255,24,24,24,3,5,5,4,0,253,96, + 96,32,96,192,5,2,2,6,0,3,248,248,2,2,2,4, + 1,0,192,192,7,17,17,5,255,252,2,2,6,4,12,12, + 8,24,24,16,48,48,32,96,96,64,192,8,13,13,9,1, + 0,60,102,102,195,195,195,195,195,195,195,102,102,60,6,13, + 13,9,2,0,48,112,240,48,48,48,48,48,48,48,48,120, + 252,7,13,13,9,1,0,60,126,206,134,6,6,12,12,24, + 48,98,254,254,7,13,13,9,1,0,124,206,134,6,12,56, + 60,14,6,6,6,204,248,8,13,13,9,0,0,2,6,14, + 14,22,38,70,70,255,255,6,6,6,7,13,13,9,1,0, + 126,124,192,192,240,60,12,14,6,6,12,220,240,8,13,13, + 9,1,0,7,28,48,96,96,252,198,195,195,195,227,118,60, + 8,13,13,9,1,0,127,255,130,6,4,12,12,8,24,24, + 16,48,48,8,13,13,9,1,0,60,102,194,230,124,56,60, + 110,199,195,195,102,60,8,13,13,9,1,0,60,110,198,195, + 195,195,227,127,54,6,12,56,224,2,9,9,5,1,0,192, + 192,0,0,0,0,0,192,192,3,12,12,5,0,253,96,96, + 0,0,0,0,0,96,96,32,96,192,9,9,18,11,1,0, + 1,128,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,128,9,5,10,11,1,2,255,128,255,128,0,0,255,128, + 255,128,9,9,18,11,1,0,192,0,112,0,28,0,7,0, + 1,128,7,0,28,0,112,0,192,0,6,13,13,8,1,0, + 120,140,196,204,12,24,24,48,32,32,0,48,48,14,16,32, + 17,1,253,7,224,14,48,56,24,48,8,99,236,103,228,198, + 100,204,100,204,204,204,200,205,216,103,112,96,0,48,0,28, + 48,7,224,13,13,26,14,1,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,10,13,26,13,2,0,255,0,99,128,97,128,97, + 128,97,128,99,0,127,128,97,192,96,192,96,192,96,192,97, + 128,255,0,11,13,26,13,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,11,13,26,14,2,0,255,0,99,128,96,192,96, + 192,96,96,96,96,96,96,96,96,96,96,96,192,96,192,99, + 128,255,0,9,13,26,12,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,13,26,11,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,0,96, + 0,240,0,12,13,26,14,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,240,192,96,192,96,96,96,96,96,57, + 192,15,0,12,13,26,14,1,0,240,240,96,96,96,96,96, + 96,96,96,96,96,127,224,96,96,96,96,96,96,96,96,96, + 96,240,240,4,13,13,6,1,0,240,96,96,96,96,96,96, + 96,96,96,96,96,240,6,13,13,7,0,0,60,24,24,24, + 24,24,24,24,24,24,24,216,240,12,13,26,14,1,0,243, + 224,97,128,99,0,102,0,108,0,120,0,120,0,124,0,110, + 0,103,0,99,128,97,192,240,240,10,13,26,12,1,0,240, + 0,96,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,64,96,192,255,192,14,13,26,17,1,0,224, + 28,112,56,112,56,120,120,88,88,88,216,92,216,76,152,77, + 152,71,24,71,24,66,24,226,60,12,13,26,14,1,0,224, + 112,96,32,112,32,120,32,92,32,76,32,78,32,71,32,67, + 160,65,224,64,224,64,96,224,32,12,13,26,14,1,0,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,9,13,26,11,1,0,255, + 0,99,128,97,128,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,96,0,96,0,240,0,12,17,34,14,1,252,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,6,0,3,0,1,192,0, + 240,11,13,26,13,1,0,255,0,99,128,97,128,97,128,97, + 128,99,0,126,0,110,0,102,0,99,0,97,128,96,192,240, + 224,8,13,13,11,2,0,58,70,194,192,224,120,60,14,7, + 3,131,198,184,10,13,26,12,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,30,0,11,13,26,14,2,0,240,224,96,64,96,64, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,112,192, + 57,128,31,0,13,13,26,14,0,0,248,120,112,48,48,32, + 56,32,24,96,24,64,28,64,12,192,14,128,6,128,7,128, + 3,0,3,0,18,13,39,18,0,0,249,227,192,112,193,128, + 48,193,0,56,225,0,24,99,0,24,226,0,24,226,0,29, + 166,0,13,52,0,15,60,0,14,56,0,6,24,0,6,24, + 0,12,13,26,14,1,0,240,112,112,96,56,192,25,128,13, + 0,14,0,6,0,15,0,27,0,17,128,49,192,96,224,240, + 240,12,13,26,14,1,0,240,240,112,96,48,192,24,128,25, + 0,15,0,6,0,6,0,6,0,6,0,6,0,6,0,15, + 0,10,13,26,12,1,0,127,192,97,192,65,128,3,128,7, + 0,6,0,14,0,28,0,56,0,48,0,112,64,224,192,255, + 192,4,16,16,6,2,253,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,5,13,13,5,0,0,128,128,192, + 64,96,96,32,48,48,16,24,8,8,4,16,16,6,0,253, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,240, + 7,7,7,9,1,6,16,56,40,108,68,198,130,9,2,4, + 9,0,252,255,128,255,128,4,3,3,4,0,10,192,96,16, + 7,9,9,9,1,0,120,200,204,28,108,204,204,252,102,8, + 13,13,9,0,0,96,224,96,96,110,119,99,99,99,99,99, + 102,92,7,9,9,8,0,0,60,102,192,192,192,192,192,102, + 60,8,13,13,9,0,0,6,14,6,6,62,102,198,198,198, + 198,198,102,63,7,9,9,8,0,0,60,102,194,254,192,192, + 192,102,60,6,13,13,6,0,0,28,52,32,96,248,96,96, + 96,96,96,96,96,240,8,13,13,9,0,252,62,204,196,196, + 204,120,64,124,127,131,193,226,124,9,13,26,10,0,0,96, + 0,224,0,96,0,96,0,102,0,111,0,115,0,99,0,99, + 0,99,0,99,0,99,0,243,128,4,13,13,5,0,0,96, + 96,0,0,96,224,96,96,96,96,96,96,240,4,17,17,5, + 255,252,48,48,0,0,48,112,48,48,48,48,48,48,48,48, + 48,224,192,10,13,26,9,0,0,96,0,224,0,96,0,96, + 0,103,0,98,0,100,0,104,0,120,0,108,0,110,0,103, + 0,227,192,4,13,13,5,0,0,96,224,96,96,96,96,96, + 96,96,96,96,96,240,14,9,18,15,0,0,102,48,239,120, + 115,152,99,24,99,24,99,24,99,24,99,24,247,188,9,9, + 18,10,0,0,102,0,239,0,115,0,99,0,99,0,99,0, + 99,0,99,0,243,128,8,9,9,9,0,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,252,110,247,99,99,99, + 99,99,118,124,96,96,96,240,8,13,13,9,0,252,62,102, + 198,198,198,198,198,102,62,6,6,6,15,6,9,9,7,0, + 0,108,236,112,96,96,96,96,96,240,5,9,9,7,1,0, + 104,152,200,224,112,56,152,200,176,6,11,11,6,0,0,32, + 96,248,96,96,96,96,96,96,116,56,9,9,18,10,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,119,0, + 59,128,9,9,18,9,255,0,243,128,99,0,98,0,50,0, + 54,0,20,0,28,0,8,0,8,0,13,9,18,14,0,0, + 231,56,102,48,98,96,54,96,55,96,29,64,29,192,8,128, + 8,128,9,9,18,9,0,0,225,128,99,0,54,0,28,0, + 28,0,28,0,54,0,99,0,195,128,8,13,13,9,0,252, + 243,99,114,50,54,28,28,12,8,24,16,240,224,7,9,9, + 8,0,0,254,206,140,24,48,48,98,230,254,7,17,17,9, + 1,252,14,24,48,48,48,48,48,96,192,96,48,48,48,48, + 48,24,14,1,13,13,3,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,128,7,17,17,9,1,252,224,48,24,24, + 24,24,24,12,6,12,24,24,24,24,24,48,224,9,4,8, + 11,1,3,48,0,121,128,207,0,6,0,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,5, + 0,1,2,13,13,4,1,252,192,192,0,0,128,128,128,192, + 192,192,192,192,192,7,14,14,9,1,253,6,4,60,110,200, + 216,208,208,240,114,124,64,192,128,10,13,26,11,0,0,15, + 0,25,128,25,128,24,0,24,0,24,0,126,0,24,0,24, + 0,16,0,120,64,191,192,231,128,9,7,14,11,1,3,221, + 128,247,128,99,0,65,0,99,0,247,128,221,128,8,13,13, + 9,0,0,247,98,98,118,52,52,126,24,126,24,24,24,126, + 1,13,13,3,1,0,128,128,128,128,128,0,0,0,128,128, + 128,128,128,8,16,16,10,1,253,60,102,102,112,56,124,142, + 199,227,113,62,28,14,102,102,60,5,2,2,5,0,10,216, + 216,13,13,26,15,1,0,15,128,48,96,64,16,71,144,136, + 136,144,8,144,8,144,8,136,136,71,16,64,16,48,96,15, + 128,5,8,8,5,0,5,96,144,16,112,144,232,0,248,8, + 7,7,10,1,1,17,51,102,204,102,51,17,9,5,10,11, + 1,2,255,128,255,128,1,128,1,128,1,128,5,2,2,6, + 0,3,248,248,13,13,26,15,1,0,15,128,48,96,64,16, + 95,16,136,136,136,136,143,8,137,8,136,136,92,208,64,16, + 48,96,15,128,5,2,2,5,0,10,248,248,5,5,5,7, + 1,8,112,136,136,136,112,8,11,11,10,1,0,24,24,24, + 255,255,24,24,24,0,255,255,5,8,8,6,0,5,112,152, + 24,16,32,32,64,248,5,8,8,6,0,5,112,136,24,112, + 24,8,136,112,4,3,3,4,0,10,48,96,128,9,13,26, + 9,255,252,231,0,99,0,99,0,99,0,99,0,99,0,99, + 0,119,0,123,128,64,0,64,0,96,0,96,0,7,17,17, + 8,1,252,62,116,244,244,244,244,244,116,20,20,20,20,20, + 20,20,20,20,2,2,2,4,1,4,192,192,4,5,5,6, + 1,252,32,32,16,176,112,3,8,8,6,1,5,64,192,64, + 64,64,64,64,224,5,8,8,6,0,5,112,216,136,136,216, + 112,0,248,8,7,7,10,1,1,136,204,102,51,102,204,136, + 11,13,26,13,1,0,64,128,193,128,65,0,67,0,70,0, + 68,64,76,192,233,64,27,64,50,64,39,224,96,64,64,64, + 11,13,26,13,1,0,64,128,193,128,65,0,67,0,70,0, + 69,192,78,96,232,96,24,64,48,128,32,128,97,0,67,224, + 13,13,26,13,255,0,112,32,136,96,24,64,112,192,25,128, + 9,16,139,48,114,80,6,208,12,144,9,248,24,16,16,16, + 6,13,13,8,1,252,48,48,0,16,16,48,96,96,192,204, + 140,196,120,13,17,34,14,1,0,24,0,12,0,2,0,0, + 0,2,0,7,0,7,0,5,0,13,128,9,128,25,192,16, + 192,31,192,48,224,32,96,96,112,240,248,13,17,34,14,1, + 0,0,192,1,128,2,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,13,17,34,14,1,0,2,0,7,0,13,128,0, + 0,2,0,7,0,7,0,5,0,13,128,9,128,25,192,16, + 192,31,192,48,224,32,96,96,112,240,248,13,17,34,14,1, + 0,12,128,31,128,19,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,13,16,32,14,1,0,13,128,13,128,0,0,2, + 0,7,0,7,0,5,0,13,128,9,128,25,192,16,192,31, + 192,48,224,32,96,96,112,240,248,13,18,36,14,1,0,6, + 0,9,0,9,0,6,0,0,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,15,13,26,17,1,0,15,252,7,140,5,132,5, + 128,13,128,9,136,25,248,31,136,17,128,49,128,33,130,97, + 134,247,254,11,17,34,13,1,252,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,4,0,2,0,22,0,14,0,9,17,34,12,1, + 0,48,0,24,0,4,0,0,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,17,34,12,1,0,3,0,6,0,8,0,0, + 0,255,128,97,128,96,128,96,0,96,0,97,0,127,0,97, + 0,96,0,96,0,96,128,97,128,255,128,9,17,34,12,1, + 0,8,0,28,0,54,0,0,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,16,32,12,1,0,54,0,54,0,0,0,255, + 128,97,128,96,128,96,0,96,0,97,0,127,0,97,0,96, + 0,96,0,96,128,97,128,255,128,6,17,17,6,255,0,192, + 96,16,0,60,24,24,24,24,24,24,24,24,24,24,24,60, + 6,17,17,6,1,0,12,24,32,0,240,96,96,96,96,96, + 96,96,96,96,96,96,240,5,17,17,6,1,0,32,112,216, + 0,240,96,96,96,96,96,96,96,96,96,96,96,240,5,16, + 16,6,1,0,216,216,0,240,96,96,96,96,96,96,96,96, + 96,96,96,240,12,13,26,13,0,0,127,128,49,192,48,96, + 48,96,48,48,48,48,252,48,48,48,48,48,48,96,48,96, + 49,192,127,128,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,224,112,96,32,112,32,120,32,92,32,76,32,78,32, + 71,32,67,160,65,224,64,224,64,96,224,32,12,17,34,14, + 1,0,48,0,24,0,4,0,0,0,15,0,48,192,96,96, + 96,96,192,48,192,48,192,48,192,48,192,48,96,96,96,96, + 48,192,15,0,12,17,34,14,1,0,0,192,1,128,2,0, + 0,0,15,0,48,192,96,96,96,96,192,48,192,48,192,48, + 192,48,192,48,96,96,96,96,48,192,15,0,12,17,34,14, + 1,0,4,0,14,0,27,0,0,0,15,0,48,192,96,96, + 96,96,192,48,192,48,192,48,192,48,192,48,96,96,96,96, + 48,192,15,0,12,17,34,14,1,0,12,128,31,128,19,0, + 0,0,15,0,48,192,96,96,96,96,192,48,192,48,192,48, + 192,48,192,48,96,96,96,96,48,192,15,0,12,16,32,14, + 1,0,27,0,27,0,0,0,15,0,48,192,96,96,96,96, + 192,48,192,48,192,48,192,48,192,48,96,96,96,96,48,192, + 15,0,8,7,7,10,1,1,195,102,60,24,60,102,195,12, + 15,30,14,1,255,0,48,15,96,48,192,96,224,97,160,195, + 48,195,48,198,48,204,48,204,48,88,96,112,96,48,192,111, + 0,192,0,11,17,34,14,2,0,48,0,24,0,4,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,112,192,57,128,31,0,11,17,34,14,2, + 0,0,192,1,128,2,0,0,0,240,224,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,96,64,112,192,57, + 128,31,0,11,17,34,14,2,0,4,0,14,0,27,0,0, + 0,240,224,96,64,96,64,96,64,96,64,96,64,96,64,96, + 64,96,64,96,64,112,192,57,128,31,0,11,16,32,14,2, + 0,27,0,27,0,0,0,240,224,96,64,96,64,96,64,96, + 64,96,64,96,64,96,64,96,64,96,64,112,192,57,128,31, + 0,12,17,34,14,1,0,0,192,1,128,2,0,0,0,240, + 240,112,96,48,192,24,128,25,0,15,0,6,0,6,0,6, + 0,6,0,6,0,6,0,15,0,9,13,26,10,1,0,240, + 0,96,0,96,0,127,0,99,128,97,128,97,128,97,128,99, + 0,126,0,96,0,96,0,240,0,8,13,13,9,0,0,28, + 50,99,99,102,110,124,102,99,99,107,111,238,7,13,13,9, + 1,0,192,96,16,0,120,200,204,28,108,204,204,252,102,7, + 13,13,9,1,0,12,24,32,0,120,200,204,28,108,204,204, + 252,102,7,13,13,9,1,0,16,56,108,0,120,200,204,28, + 108,204,204,252,102,7,13,13,9,1,0,100,252,152,0,120, + 200,204,28,108,204,204,252,102,7,12,12,9,1,0,108,108, + 0,120,200,204,28,108,204,204,252,102,7,14,14,9,1,0, + 48,72,72,48,0,120,200,204,28,108,204,204,252,102,11,9, + 18,12,0,0,123,192,206,96,204,32,31,224,108,0,204,0, + 204,0,254,96,99,192,7,13,13,8,0,252,60,102,192,192, + 192,192,192,102,60,16,8,88,56,7,13,13,8,0,0,192, + 96,16,0,60,102,194,254,192,192,192,102,60,7,13,13,8, + 0,0,6,12,16,0,60,102,194,254,192,192,192,102,60,7, + 13,13,8,0,0,16,56,108,0,60,102,194,254,192,192,192, + 102,60,7,12,12,8,0,0,108,108,0,60,102,194,254,192, + 192,192,102,60,6,13,13,5,254,0,192,96,16,0,24,56, + 24,24,24,24,24,24,60,6,13,13,5,0,0,12,24,32, + 0,96,224,96,96,96,96,96,96,240,5,13,13,5,0,0, + 32,112,216,0,96,224,96,96,96,96,96,96,240,5,12,12, + 5,0,0,216,216,0,96,224,96,96,96,96,96,96,240,8, + 13,13,9,0,0,96,54,56,76,62,102,195,195,195,195,195, + 102,60,9,13,26,10,0,0,50,0,126,0,76,0,0,0, + 102,0,239,0,115,0,99,0,99,0,99,0,99,0,99,0, + 243,128,8,13,13,9,0,0,48,24,4,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,0,6,12,16,0,60, + 102,195,195,195,195,195,102,60,8,13,13,9,0,0,16,56, + 108,0,60,102,195,195,195,195,195,102,60,8,13,13,9,0, + 0,50,126,76,0,60,102,195,195,195,195,195,102,60,8,12, + 12,9,0,0,108,108,0,60,102,195,195,195,195,195,102,60, + 8,8,8,10,1,1,24,24,0,255,255,0,24,24,8,11, + 11,9,0,255,1,63,102,207,203,219,211,243,102,124,192,9, + 13,26,10,0,0,96,0,48,0,8,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 13,26,10,0,0,6,0,12,0,16,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 13,26,10,0,0,8,0,28,0,54,0,0,0,231,0,99, + 0,99,0,99,0,99,0,99,0,99,0,119,0,59,128,9, + 12,24,10,0,0,54,0,54,0,0,0,231,0,99,0,99, + 0,99,0,99,0,99,0,99,0,119,0,59,128,8,17,17, + 8,255,252,3,6,8,0,243,99,114,50,54,28,28,12,8, + 24,16,240,224,8,17,17,9,0,252,96,224,96,96,110,119, + 99,99,99,99,99,118,124,96,96,96,240,8,16,16,9,0, + 252,54,54,0,243,99,114,50,54,28,28,12,8,24,16,240, + 224}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--20-140-100-100-P-96-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 13, '1' Height: 13 + Calculated Max Values w=18 h=17 x= 2 y=10 dx=18 dy= 0 ascent=14 len=39 + Font Bounding box w=22 h=29 x=-3 y=-7 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent =13 descent=-4 + X Font ascent =13 descent=-4 + Max Font ascent =14 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR14r[2156] U8G_SECTION(".progmem.u8g_font_timR14r") = { + 0,22,29,253,249,13,2,131,6,16,32,127,252,14,252,13, + 252,0,0,0,5,0,1,2,13,13,4,1,0,192,192,192, + 192,192,192,64,64,64,0,0,192,192,6,4,4,8,1,9, + 204,204,204,136,12,11,22,10,255,1,12,192,12,192,12,192, + 127,240,25,128,25,128,25,128,255,224,51,0,51,0,51,0, + 7,16,16,9,1,254,16,124,214,210,208,240,120,60,28,22, + 22,150,214,124,16,16,13,13,26,15,1,0,56,48,111,224, + 196,64,196,128,205,128,251,0,114,112,6,216,13,136,9,136, + 25,152,49,240,32,224,12,13,26,14,1,0,28,0,50,0, + 50,0,50,0,52,0,25,224,56,192,109,128,207,0,199,0, + 199,128,237,240,120,224,2,4,4,4,1,9,192,192,192,128, + 5,17,17,7,1,252,24,48,96,96,64,192,192,192,192,192, + 192,192,64,96,96,48,24,5,17,17,7,1,252,192,96,48, + 48,16,24,24,24,24,24,24,24,16,48,48,96,192,7,7, + 7,9,1,6,16,214,84,56,214,146,16,8,8,8,10,1, + 1,24,24,24,255,255,24,24,24,3,5,5,4,0,253,96, + 96,32,96,192,5,2,2,6,0,3,248,248,2,2,2,4, + 1,0,192,192,7,17,17,5,255,252,2,2,6,4,12,12, + 8,24,24,16,48,48,32,96,96,64,192,8,13,13,9,1, + 0,60,102,102,195,195,195,195,195,195,195,102,102,60,6,13, + 13,9,2,0,48,112,240,48,48,48,48,48,48,48,48,120, + 252,7,13,13,9,1,0,60,126,206,134,6,6,12,12,24, + 48,98,254,254,7,13,13,9,1,0,124,206,134,6,12,56, + 60,14,6,6,6,204,248,8,13,13,9,0,0,2,6,14, + 14,22,38,70,70,255,255,6,6,6,7,13,13,9,1,0, + 126,124,192,192,240,60,12,14,6,6,12,220,240,8,13,13, + 9,1,0,7,28,48,96,96,252,198,195,195,195,227,118,60, + 8,13,13,9,1,0,127,255,130,6,4,12,12,8,24,24, + 16,48,48,8,13,13,9,1,0,60,102,194,230,124,56,60, + 110,199,195,195,102,60,8,13,13,9,1,0,60,110,198,195, + 195,195,227,127,54,6,12,56,224,2,9,9,5,1,0,192, + 192,0,0,0,0,0,192,192,3,12,12,5,0,253,96,96, + 0,0,0,0,0,96,96,32,96,192,9,9,18,11,1,0, + 1,128,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,128,9,5,10,11,1,2,255,128,255,128,0,0,255,128, + 255,128,9,9,18,11,1,0,192,0,112,0,28,0,7,0, + 1,128,7,0,28,0,112,0,192,0,6,13,13,8,1,0, + 120,140,196,204,12,24,24,48,32,32,0,48,48,14,16,32, + 17,1,253,7,224,14,48,56,24,48,8,99,236,103,228,198, + 100,204,100,204,204,204,200,205,216,103,112,96,0,48,0,28, + 48,7,224,13,13,26,14,1,0,2,0,7,0,7,0,5, + 0,13,128,9,128,25,192,16,192,31,192,48,224,32,96,96, + 112,240,248,10,13,26,13,2,0,255,0,99,128,97,128,97, + 128,97,128,99,0,127,128,97,192,96,192,96,192,96,192,97, + 128,255,0,11,13,26,13,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,0,192,0,192,0,96,0,96,96,56, + 192,15,0,11,13,26,14,2,0,255,0,99,128,96,192,96, + 192,96,96,96,96,96,96,96,96,96,96,96,192,96,192,99, + 128,255,0,9,13,26,12,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,128,97, + 128,255,128,9,13,26,11,1,0,255,128,97,128,96,128,96, + 0,96,0,97,0,127,0,97,0,96,0,96,0,96,0,96, + 0,240,0,12,13,26,14,1,0,15,32,48,224,96,96,96, + 32,192,0,192,0,192,240,192,96,192,96,96,96,96,96,57, + 192,15,0,12,13,26,14,1,0,240,240,96,96,96,96,96, + 96,96,96,96,96,127,224,96,96,96,96,96,96,96,96,96, + 96,240,240,4,13,13,6,1,0,240,96,96,96,96,96,96, + 96,96,96,96,96,240,6,13,13,7,0,0,60,24,24,24, + 24,24,24,24,24,24,24,216,240,12,13,26,14,1,0,243, + 224,97,128,99,0,102,0,108,0,120,0,120,0,124,0,110, + 0,103,0,99,128,97,192,240,240,10,13,26,12,1,0,240, + 0,96,0,96,0,96,0,96,0,96,0,96,0,96,0,96, + 0,96,0,96,64,96,192,255,192,14,13,26,17,1,0,224, + 28,112,56,112,56,120,120,88,88,88,216,92,216,76,152,77, + 152,71,24,71,24,66,24,226,60,12,13,26,14,1,0,224, + 112,96,32,112,32,120,32,92,32,76,32,78,32,71,32,67, + 160,65,224,64,224,64,96,224,32,12,13,26,14,1,0,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,9,13,26,11,1,0,255, + 0,99,128,97,128,97,128,97,128,99,0,126,0,96,0,96, + 0,96,0,96,0,96,0,240,0,12,17,34,14,1,252,15, + 0,48,192,96,96,96,96,192,48,192,48,192,48,192,48,192, + 48,96,96,96,96,48,192,15,0,6,0,3,0,1,192,0, + 240,11,13,26,13,1,0,255,0,99,128,97,128,97,128,97, + 128,99,0,126,0,110,0,102,0,99,0,97,128,96,192,240, + 224,8,13,13,11,2,0,58,70,194,192,224,120,60,14,7, + 3,131,198,184,10,13,26,12,1,0,255,192,204,192,140,64, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,30,0,11,13,26,14,2,0,240,224,96,64,96,64, + 96,64,96,64,96,64,96,64,96,64,96,64,96,64,112,192, + 57,128,31,0,13,13,26,14,0,0,248,120,112,48,48,32, + 56,32,24,96,24,64,28,64,12,192,14,128,6,128,7,128, + 3,0,3,0,18,13,39,18,0,0,249,227,192,112,193,128, + 48,193,0,56,225,0,24,99,0,24,226,0,24,226,0,29, + 166,0,13,52,0,15,60,0,14,56,0,6,24,0,6,24, + 0,12,13,26,14,1,0,240,112,112,96,56,192,25,128,13, + 0,14,0,6,0,15,0,27,0,17,128,49,192,96,224,240, + 240,12,13,26,14,1,0,240,240,112,96,48,192,24,128,25, + 0,15,0,6,0,6,0,6,0,6,0,6,0,6,0,15, + 0,10,13,26,12,1,0,127,192,97,192,65,128,3,128,7, + 0,6,0,14,0,28,0,56,0,48,0,112,64,224,192,255, + 192,4,16,16,6,2,253,240,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,240,5,13,13,5,0,0,128,128,192, + 64,96,96,32,48,48,16,24,8,8,4,16,16,6,0,253, + 240,48,48,48,48,48,48,48,48,48,48,48,48,48,48,240, + 7,7,7,9,1,6,16,56,40,108,68,198,130,9,2,4, + 9,0,252,255,128,255,128,4,3,3,4,0,10,192,96,16, + 7,9,9,9,1,0,120,200,204,28,108,204,204,252,102,8, + 13,13,9,0,0,96,224,96,96,110,119,99,99,99,99,99, + 102,92,7,9,9,8,0,0,60,102,192,192,192,192,192,102, + 60,8,13,13,9,0,0,6,14,6,6,62,102,198,198,198, + 198,198,102,63,7,9,9,8,0,0,60,102,194,254,192,192, + 192,102,60,6,13,13,6,0,0,28,52,32,96,248,96,96, + 96,96,96,96,96,240,8,13,13,9,0,252,62,204,196,196, + 204,120,64,124,127,131,193,226,124,9,13,26,10,0,0,96, + 0,224,0,96,0,96,0,102,0,111,0,115,0,99,0,99, + 0,99,0,99,0,99,0,243,128,4,13,13,5,0,0,96, + 96,0,0,96,224,96,96,96,96,96,96,240,4,17,17,5, + 255,252,48,48,0,0,48,112,48,48,48,48,48,48,48,48, + 48,224,192,10,13,26,9,0,0,96,0,224,0,96,0,96, + 0,103,0,98,0,100,0,104,0,120,0,108,0,110,0,103, + 0,227,192,4,13,13,5,0,0,96,224,96,96,96,96,96, + 96,96,96,96,96,240,14,9,18,15,0,0,102,48,239,120, + 115,152,99,24,99,24,99,24,99,24,99,24,247,188,9,9, + 18,10,0,0,102,0,239,0,115,0,99,0,99,0,99,0, + 99,0,99,0,243,128,8,9,9,9,0,0,60,102,195,195, + 195,195,195,102,60,8,13,13,9,0,252,110,247,99,99,99, + 99,99,118,124,96,96,96,240,8,13,13,9,0,252,62,102, + 198,198,198,198,198,102,62,6,6,6,15,6,9,9,7,0, + 0,108,236,112,96,96,96,96,96,240,5,9,9,7,1,0, + 104,152,200,224,112,56,152,200,176,6,11,11,6,0,0,32, + 96,248,96,96,96,96,96,96,116,56,9,9,18,10,0,0, + 231,0,99,0,99,0,99,0,99,0,99,0,99,0,119,0, + 59,128,9,9,18,9,255,0,243,128,99,0,98,0,50,0, + 54,0,20,0,28,0,8,0,8,0,13,9,18,14,0,0, + 231,56,102,48,98,96,54,96,55,96,29,64,29,192,8,128, + 8,128,9,9,18,9,0,0,225,128,99,0,54,0,28,0, + 28,0,28,0,54,0,99,0,195,128,8,13,13,9,0,252, + 243,99,114,50,54,28,28,12,8,24,16,240,224,7,9,9, + 8,0,0,254,206,140,24,48,48,98,230,254,7,17,17,9, + 1,252,14,24,48,48,48,48,48,96,192,96,48,48,48,48, + 48,24,14,1,13,13,3,1,0,128,128,128,128,128,128,128, + 128,128,128,128,128,128,7,17,17,9,1,252,224,48,24,24, + 24,24,24,12,6,12,24,24,24,24,24,48,224,9,4,8, + 11,1,3,48,0,121,128,207,0,6,0,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--25-180-100-100-P-125-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=23 x= 3 y=14 dx=23 dy= 0 ascent=23 len=69 + Font Bounding box w=29 h=37 x=-4 y=-9 + Calculated Min Values x=-2 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =17 descent=-6 + Max Font ascent =23 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR18[6850] U8G_SECTION(".progmem.u8g_font_timR18") = { + 0,29,37,252,247,17,4,9,8,241,32,255,250,23,250,17, + 250,0,0,0,6,0,1,3,17,17,8,3,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,6,5, + 5,10,1,12,204,204,204,204,136,11,17,34,13,1,0,8, + 128,8,128,8,128,8,128,8,128,127,224,127,224,17,0,17, + 0,17,0,255,192,255,192,34,0,34,0,34,0,34,0,34, + 0,11,21,42,12,0,254,4,0,4,0,63,0,101,192,196, + 192,196,64,196,64,228,0,124,0,30,0,7,128,5,192,4, + 224,4,96,132,96,132,96,196,192,229,192,63,0,4,0,4, + 0,17,16,48,19,1,0,30,12,0,51,252,0,97,24,0, + 193,16,0,193,48,0,194,96,0,228,64,0,120,192,0,1, + 143,0,1,25,128,3,48,128,6,96,128,4,96,128,12,97, + 0,24,114,0,16,60,0,17,17,51,19,1,0,7,192,0, + 8,96,0,24,32,0,24,32,0,24,96,0,12,192,0,15, + 158,0,7,12,0,15,8,0,51,136,0,97,144,0,192,208, + 0,192,224,0,192,96,0,224,240,128,127,191,0,62,14,0, + 2,5,5,6,2,12,192,192,192,192,128,6,22,22,8,1, + 251,4,8,16,48,32,96,96,192,192,192,192,192,192,192,192, + 96,96,32,48,16,8,4,6,22,22,8,1,251,128,64,32, + 48,16,24,24,12,12,12,12,12,12,12,12,24,24,16,48, + 32,64,128,9,9,18,12,2,8,28,0,28,0,201,128,235, + 128,28,0,235,128,201,128,28,0,28,0,12,12,24,12,0, + 0,6,0,6,0,6,0,6,0,6,0,255,240,255,240,6, + 0,6,0,6,0,6,0,6,0,3,5,5,7,2,253,192, + 224,32,96,192,6,2,2,8,0,5,252,252,2,2,2,6, + 2,0,192,192,9,21,42,7,254,252,1,128,1,128,1,0, + 3,0,3,0,2,0,6,0,6,0,4,0,12,0,12,0, + 8,0,24,0,24,0,16,0,48,0,48,0,96,0,96,0, + 64,0,192,0,10,17,34,12,1,0,30,0,51,0,97,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,225,192,97,128,97,128,51,0,30,0,8,17,17,12, + 2,0,8,24,120,24,24,24,24,24,24,24,24,24,24,24, + 24,24,255,10,17,34,12,1,0,28,0,127,0,67,128,129, + 128,129,128,1,128,1,128,3,0,3,0,6,0,4,0,12, + 0,24,0,48,0,96,64,255,192,255,128,9,17,34,12,1, + 0,28,0,126,0,71,0,131,0,131,0,6,0,12,0,30, + 0,7,0,3,128,1,128,1,128,1,128,1,0,195,0,230, + 0,120,0,10,17,34,12,1,0,3,0,7,0,7,0,11, + 0,27,0,19,0,51,0,35,0,99,0,67,0,195,0,255, + 192,255,192,3,0,3,0,3,0,3,0,10,17,34,12,1, + 0,31,192,31,128,32,0,32,0,96,0,120,0,126,0,15, + 128,3,128,1,192,0,192,0,192,0,192,0,192,193,128,227, + 128,126,0,10,17,34,12,1,0,3,192,14,0,24,0,48, + 0,112,0,96,0,238,0,243,128,193,128,192,192,192,192,192, + 192,192,192,224,192,97,128,123,128,30,0,10,17,34,12,1, + 0,127,192,255,192,192,192,129,128,1,128,1,0,3,0,3, + 0,2,0,6,0,6,0,4,0,12,0,12,0,12,0,24, + 0,24,0,10,17,34,12,1,0,30,0,51,0,97,128,97, + 128,97,128,115,0,62,0,30,0,63,0,99,128,65,192,192, + 192,192,192,192,192,225,128,115,128,30,0,10,17,34,12,1, + 0,30,0,119,128,97,128,193,192,192,192,192,192,192,192,192, + 192,97,192,115,192,29,128,1,128,3,128,3,0,6,0,28, + 0,240,0,2,11,11,6,2,0,192,192,0,0,0,0,0, + 0,0,192,192,3,14,14,7,2,253,192,192,0,0,0,0, + 0,0,0,192,224,32,96,192,11,11,22,14,1,0,0,96, + 1,192,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,192,0,96,9,5,10,13,2,3,255,128,255,128,0,0, + 255,128,255,128,11,11,22,13,1,0,192,0,112,0,28,0, + 7,0,1,192,0,96,1,192,7,0,28,0,112,0,192,0, + 8,17,17,11,2,0,124,198,131,195,195,7,14,12,28,24, + 24,16,16,0,0,48,48,18,20,60,22,2,253,3,248,0, + 15,14,0,28,3,0,56,1,128,112,0,128,96,236,192,225, + 252,64,195,140,64,195,12,64,198,12,64,198,24,64,198,24, + 192,198,24,128,198,57,128,99,123,0,97,222,0,48,0,0, + 24,0,0,14,12,0,3,240,0,17,17,51,17,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,14,17,34,16,1,0,255,192,48,112,48,48,48,24, + 48,24,48,24,48,48,48,64,63,224,48,56,48,24,48,12, + 48,12,48,12,48,24,48,120,255,224,14,17,34,16,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,4,56,8,30,56, + 7,224,15,17,34,17,1,0,255,192,48,112,48,56,48,12, + 48,12,48,6,48,6,48,6,48,6,48,6,48,6,48,6, + 48,12,48,12,48,56,48,112,255,192,13,17,34,15,1,0, + 255,240,48,48,48,16,48,16,48,0,48,0,48,64,48,64, + 63,192,48,64,48,64,48,0,48,0,48,8,48,8,48,24, + 255,248,12,17,34,14,1,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,32,48,32,63,224,48,32,48,32,48,0, + 48,0,48,0,48,0,48,0,252,0,16,17,34,18,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,63,192,12,192,12,96,12,96,12,56,28,30,56, + 7,224,17,17,51,19,1,0,252,31,128,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 63,254,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,48,6,0,252,31,128,6,17,17,8,1, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,9,17,34,11,1,0,31,128,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,198,0,204,0,120,0,16,17,34,17,1,0, + 252,126,48,24,48,48,48,96,48,192,49,128,51,0,62,0, + 63,0,51,128,49,192,48,224,48,112,48,56,48,28,48,14, + 252,31,13,17,34,14,1,0,252,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,21,17,51,22,1,0, + 240,0,248,48,0,224,56,1,96,56,1,96,44,2,96,44, + 2,96,38,2,96,38,4,96,35,4,96,35,8,96,33,136, + 96,33,136,96,32,208,96,32,208,96,32,96,96,32,96,96, + 248,97,248,16,17,34,18,1,0,240,31,48,4,56,4,56, + 4,44,4,38,4,38,4,35,4,33,132,33,132,32,196,32, + 100,32,100,32,52,32,28,32,28,248,12,16,17,34,18,1, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,13,17,34,15,1,0,255,192,48,112,48,48,48, + 24,48,24,48,24,48,48,48,112,63,192,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,252,0,16,22,44,18,1, + 251,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,1,192,0,224,0,112,0,56,0,15,15,17,34, + 16,1,0,255,192,48,112,48,48,48,24,48,24,48,24,48, + 48,48,112,63,192,51,128,49,128,48,192,48,96,48,112,48, + 56,48,28,252,30,11,17,34,13,1,0,30,64,99,192,192, + 192,192,64,192,64,224,0,120,0,30,0,15,128,3,192,0, + 224,0,96,128,96,128,96,192,192,241,128,158,0,14,17,34, + 16,1,0,255,252,195,12,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,15,192,16,17,34,18,1,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,17,17,51, + 17,0,0,252,31,128,48,6,0,48,4,0,24,12,0,24, + 8,0,24,8,0,12,24,0,12,16,0,6,48,0,6,32, + 0,6,32,0,3,96,0,3,64,0,3,192,0,1,128,0, + 1,128,0,1,128,0,23,17,51,23,0,0,252,126,126,48, + 24,24,48,24,16,24,24,16,24,24,48,24,44,32,12,44, + 32,12,44,96,6,76,96,6,76,64,6,70,64,3,70,192, + 3,70,128,3,135,128,1,131,128,1,131,0,1,131,0,18, + 17,51,18,0,0,126,15,128,28,6,0,14,12,0,6,8, + 0,3,16,0,1,160,0,1,192,0,0,192,0,0,224,0, + 1,112,0,2,56,0,6,24,0,4,12,0,8,14,0,24, + 7,0,48,3,128,252,15,192,16,17,34,18,1,0,252,63, + 48,12,56,8,24,24,28,16,12,48,6,32,6,96,3,64, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 13,17,34,15,1,0,255,240,192,112,128,224,128,192,1,192, + 3,128,3,0,7,0,6,0,14,0,28,0,24,0,56,0, + 48,8,112,8,224,24,255,248,5,21,21,8,2,252,248,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,248,7,17,17,7,0,0,192,192,64,96,96,32,48, + 48,16,24,24,8,12,12,4,6,6,5,21,21,8,1,252, + 248,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,248,9,9,18,11,1,8,8,0,28,0,20, + 0,54,0,34,0,99,0,65,0,193,128,128,128,12,2,4, + 12,0,251,255,240,255,240,5,4,4,8,1,13,192,224,112, + 24,9,12,24,11,1,0,62,0,103,0,99,0,3,0,15, + 0,59,0,99,0,195,0,195,0,199,0,251,0,113,128,11, + 17,34,12,0,0,48,0,240,0,48,0,48,0,48,0,55, + 0,57,192,48,192,48,96,48,96,48,96,48,96,48,96,48, + 96,48,192,57,192,47,0,9,12,24,11,1,0,31,0,99, + 128,65,128,192,0,192,0,192,0,192,0,192,0,224,0,112, + 128,127,0,30,0,10,17,34,12,1,0,1,128,7,128,1, + 128,1,128,1,128,29,128,115,128,97,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,128,127,128,25,192,9,12,24, + 11,1,0,30,0,99,0,65,128,193,128,255,128,192,0,192, + 0,192,0,224,0,112,128,127,0,30,0,7,17,17,7,0, + 0,14,22,48,48,48,254,48,48,48,48,48,48,48,48,48, + 48,120,11,18,36,12,1,250,30,192,35,192,97,0,97,128, + 97,128,97,128,97,128,51,0,60,0,64,0,96,0,127,128, + 63,192,64,224,192,96,192,96,225,192,127,0,12,17,34,13, + 0,0,48,0,240,0,48,0,48,0,48,0,51,128,55,192, + 56,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,120,240,4,17,17,6,1,0,96,96,0,0,0,96, + 224,96,96,96,96,96,96,96,96,96,240,6,23,23,6,254, + 250,12,12,0,0,0,12,28,12,12,12,12,12,12,12,12, + 12,12,12,12,12,204,200,112,12,17,34,12,0,0,48,0, + 240,0,48,0,48,0,48,0,51,224,49,128,51,0,50,0, + 52,0,60,0,54,0,55,0,51,128,49,192,48,224,121,240, + 5,17,17,6,0,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,120,18,12,36,20,1,0,103,14,0, + 239,159,0,113,227,128,96,193,128,96,193,128,96,193,128,96, + 193,128,96,193,128,96,193,128,96,193,128,96,193,128,241,227, + 192,11,12,24,13,1,0,103,0,239,128,113,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,241,224,10, + 12,24,12,1,0,30,0,115,128,97,128,192,192,192,192,192, + 192,192,192,192,192,192,192,97,128,115,128,30,0,10,18,36, + 12,1,250,110,0,243,128,97,128,96,192,96,192,96,192,96, + 192,96,192,96,192,97,128,115,128,110,0,96,0,96,0,96, + 0,96,0,96,0,240,0,10,18,36,12,1,250,29,128,115, + 128,97,128,193,128,193,128,193,128,193,128,193,128,193,128,97, + 128,115,128,29,128,1,128,1,128,1,128,1,128,1,128,3, + 192,6,12,12,8,1,0,108,236,112,96,96,96,96,96,96, + 96,96,240,8,12,12,10,1,0,62,70,194,224,112,124,30, + 7,3,131,198,248,7,15,15,7,0,0,16,48,112,254,48, + 48,48,48,48,48,48,48,48,50,28,11,12,24,13,1,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,12,24,11,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,17,12,36,17,0,0,241,231,128,96, + 195,0,96,194,0,48,194,0,48,194,0,49,100,0,25,100, + 0,26,100,0,26,40,0,14,56,0,14,56,0,4,16,0, + 11,12,24,13,1,0,241,224,96,192,49,128,57,0,26,0, + 12,0,14,0,27,0,51,128,33,128,96,192,241,224,12,18, + 36,11,255,250,120,240,48,96,48,64,24,64,24,64,24,128, + 12,128,12,128,13,0,7,0,7,0,2,0,6,0,4,0, + 12,0,200,0,240,0,96,0,8,12,12,10,1,0,255,195, + 134,14,28,24,56,48,112,97,195,255,8,22,22,10,1,251, + 7,12,24,24,24,24,24,16,48,32,192,32,48,16,24,24, + 24,24,24,24,12,7,2,17,17,5,1,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,22,22, + 10,1,251,224,48,24,24,24,24,24,8,12,4,3,4,12, + 8,24,24,24,24,24,24,48,224,11,4,8,13,1,4,56, + 32,124,96,199,192,131,128,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,0,0,0,6,0,1,3,17, + 17,8,3,251,96,96,0,0,0,64,64,64,64,224,224,224, + 224,224,224,224,64,9,16,32,12,1,254,2,0,2,0,15, + 0,51,128,101,128,196,0,196,0,200,0,200,0,200,0,208, + 0,112,128,113,0,62,0,64,0,64,0,10,17,34,12,1, + 0,15,0,25,128,49,128,48,0,48,0,48,0,48,0,252, + 0,48,0,48,0,48,0,48,0,48,0,48,0,120,64,190, + 192,231,128,11,12,24,13,1,3,192,96,238,224,127,192,49, + 128,96,192,96,192,96,192,96,192,49,128,127,192,238,224,192, + 96,14,17,34,14,0,0,248,124,112,48,48,32,24,96,24, + 64,12,192,12,128,7,128,3,0,31,224,3,0,31,224,3, + 0,3,0,3,0,3,0,15,192,2,17,17,6,2,0,192, + 192,192,192,192,192,192,0,0,0,192,192,192,192,192,192,192, + 8,20,20,12,2,253,28,38,70,96,112,56,60,78,135,131, + 195,226,116,56,28,14,6,98,100,56,6,2,2,8,1,14, + 204,204,17,17,51,19,1,0,7,240,0,28,28,0,48,6, + 0,97,227,0,71,49,0,196,25,128,140,0,128,136,0,128, + 136,0,128,136,0,128,140,0,128,196,25,128,71,113,0,97, + 195,0,48,6,0,28,28,0,7,240,0,7,9,9,8,0, + 8,120,204,12,124,204,204,118,0,254,9,10,20,13,1,1, + 8,128,25,128,51,0,102,0,204,0,204,0,102,0,51,0, + 25,128,8,128,11,7,14,15,2,1,255,224,255,224,0,96, + 0,96,0,96,0,96,0,96,6,2,2,8,0,5,252,252, + 17,17,51,19,1,0,7,240,0,28,28,0,48,6,0,103, + 227,0,66,49,0,194,17,128,130,16,128,130,48,128,131,224, + 128,130,64,128,130,32,128,194,49,128,71,25,0,96,3,0, + 48,6,0,28,28,0,7,240,0,7,2,2,8,1,14,254, + 254,7,7,7,9,1,10,56,68,130,130,130,68,56,10,11, + 22,14,2,0,12,0,12,0,12,0,255,192,255,192,12,0, + 12,0,12,0,0,0,255,192,255,192,6,10,10,7,0,7, + 56,76,140,12,8,16,48,32,68,252,6,10,10,7,0,7, + 56,76,140,8,48,8,12,140,136,112,5,4,4,8,2,13, + 24,56,112,192,11,17,34,13,1,251,225,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,113,192,126,192, + 92,224,64,0,192,0,192,0,224,0,64,0,9,21,42,11, + 1,252,31,128,57,0,121,0,121,0,249,0,249,0,249,0, + 121,0,121,0,57,0,25,0,9,0,9,0,9,0,9,0, + 9,0,9,0,9,0,9,0,9,0,9,0,2,3,3,6, + 2,5,192,192,192,6,6,6,8,1,250,16,48,60,12,204, + 120,5,10,10,7,1,7,32,96,160,32,32,32,32,32,32, + 248,7,9,9,8,0,8,56,68,198,198,198,68,56,0,254, + 9,10,20,12,2,1,136,0,204,0,102,0,51,0,25,128, + 25,128,51,0,102,0,204,0,136,0,16,17,34,18,1,0, + 32,24,96,24,160,48,32,96,32,96,32,192,32,192,33,132, + 35,12,251,28,6,20,6,36,12,100,24,68,24,255,48,4, + 48,4,15,17,34,18,1,0,32,24,96,24,160,48,32,96, + 32,96,32,192,32,192,33,156,35,38,251,70,6,6,6,4, + 12,8,24,24,24,16,48,34,48,126,17,17,51,18,0,0, + 56,12,0,76,12,0,140,24,0,8,48,0,48,48,0,8, + 96,0,12,96,0,140,194,0,137,134,0,113,142,0,3,10, + 0,3,18,0,6,50,0,12,34,0,12,127,128,24,2,0, + 24,2,0,8,17,17,11,1,251,12,12,0,0,8,8,24, + 24,56,48,112,224,195,195,193,99,62,17,22,66,17,0,0, + 12,0,0,14,0,0,7,0,0,1,128,0,0,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,17,22,66,17,0,0,0,24,0,0,56,0,0,112, + 0,0,192,0,0,0,0,0,128,0,1,192,0,1,192,0, + 1,96,0,2,96,0,2,48,0,6,48,0,4,48,0,4, + 24,0,12,24,0,15,248,0,8,12,0,24,12,0,16,12, + 0,16,6,0,48,6,0,252,31,128,17,22,66,17,0,0, + 1,128,0,3,192,0,6,96,0,4,32,0,0,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,17,21,63,17,0,0,3,32,0,7,224,0,4,192, + 0,0,0,0,0,128,0,1,192,0,1,192,0,1,96,0, + 2,96,0,2,48,0,6,48,0,4,48,0,4,24,0,12, + 24,0,15,248,0,8,12,0,24,12,0,16,12,0,16,6, + 0,48,6,0,252,31,128,17,21,63,17,0,0,6,96,0, + 6,96,0,0,0,0,0,0,0,0,128,0,1,192,0,1, + 192,0,1,96,0,2,96,0,2,48,0,6,48,0,4,48, + 0,4,24,0,12,24,0,15,248,0,8,12,0,24,12,0, + 16,12,0,16,6,0,48,6,0,252,31,128,17,23,69,17, + 0,0,1,192,0,2,32,0,2,32,0,2,32,0,1,192, + 0,0,0,0,0,128,0,1,192,0,1,192,0,1,96,0, + 2,96,0,2,48,0,6,48,0,4,48,0,4,24,0,12, + 24,0,15,248,0,8,12,0,24,12,0,16,12,0,16,6, + 0,48,6,0,252,31,128,21,17,51,22,0,0,3,255,240, + 0,240,48,1,176,16,1,48,16,3,48,0,2,48,0,6, + 48,64,4,48,64,4,63,192,12,48,64,15,240,64,8,48, + 0,24,48,0,16,48,8,48,48,8,32,48,24,248,255,248, + 14,23,46,16,1,250,7,228,28,60,56,12,96,4,96,4, + 192,0,192,0,192,0,192,0,192,0,192,0,192,0,96,0, + 96,4,56,8,30,56,7,224,1,0,3,0,3,192,0,192, + 12,192,7,128,13,22,44,15,1,0,24,0,28,0,14,0, + 3,0,0,0,255,240,48,48,48,16,48,16,48,0,48,0, + 48,64,48,64,63,192,48,64,48,64,48,0,48,0,48,8, + 48,8,48,24,255,248,13,22,44,15,1,0,0,96,0,224, + 1,192,3,0,0,0,255,240,48,48,48,16,48,16,48,0, + 48,0,48,64,48,64,63,192,48,64,48,64,48,0,48,0, + 48,8,48,8,48,24,255,248,13,22,44,15,1,0,6,0, + 15,0,25,128,16,128,0,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,64,48,64,63,192,48,64,48,64,48,0, + 48,0,48,8,48,8,48,24,255,248,13,21,42,15,1,0, + 25,128,25,128,0,0,0,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,64,48,64,63,192,48,64,48,64,48,0, + 48,0,48,8,48,8,48,24,255,248,7,22,22,8,0,0, + 192,224,112,24,0,126,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,24,126,7,22,22,8,1,0,6,14,28,48, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,6,22,22,8,1,0,48,120,204,132,0,252,48,48, + 48,48,48,48,48,48,48,48,48,48,48,48,48,252,6,21, + 21,8,1,0,204,204,0,0,252,48,48,48,48,48,48,48, + 48,48,48,48,48,48,48,48,252,16,17,34,17,0,0,127, + 224,24,56,24,28,24,6,24,6,24,3,24,3,255,3,255, + 3,24,3,24,3,24,3,24,6,24,6,24,28,24,56,127, + 224,16,21,42,18,1,0,3,32,7,224,4,192,0,0,240, + 31,48,4,56,4,56,4,44,4,38,4,38,4,35,4,33, + 132,33,132,32,196,32,100,32,100,32,52,32,28,32,28,248, + 12,16,22,44,18,1,0,12,0,14,0,7,0,1,128,0, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,16,22,44,18,1,0,0,48,0,112,0,224,1, + 128,0,0,7,224,28,56,56,28,96,6,96,6,192,3,192, + 3,192,3,192,3,192,3,192,3,192,3,96,6,96,6,56, + 28,28,56,7,224,16,22,44,18,1,0,1,128,3,192,6, + 96,4,32,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,16,21,42,18,1,0,3,32,7, + 224,4,192,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,16,21,42,18,1,0,6,96,6, + 96,0,0,0,0,7,224,28,56,56,28,96,6,96,6,192, + 3,192,3,192,3,192,3,192,3,192,3,192,3,96,6,96, + 6,56,28,28,56,7,224,10,9,18,12,1,1,192,192,97, + 128,51,0,30,0,12,0,30,0,51,0,97,128,192,192,16, + 19,38,18,1,255,0,4,7,228,28,56,56,28,96,38,96, + 70,192,67,192,131,192,131,193,3,193,3,194,3,194,3,100, + 6,104,6,56,28,28,56,39,224,32,0,16,22,44,18,1, + 0,6,0,7,0,3,128,0,192,0,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,16,22,44, + 18,1,0,0,48,0,112,0,224,1,128,0,0,252,31,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,8,24,8,28,48,7,224,16, + 22,44,18,1,0,1,128,3,192,6,96,4,32,0,0,252, + 31,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,4,48,8,24,8,28,48,7, + 224,16,21,42,18,1,0,6,96,6,96,0,0,0,0,252, + 31,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,4,48,4,48,8,24,8,28,48,7, + 224,16,22,44,18,1,0,0,48,0,112,0,224,1,128,0, + 0,252,63,48,12,56,8,24,24,28,16,12,48,6,32,6, + 96,3,64,3,192,1,128,1,128,1,128,1,128,1,128,1, + 128,7,224,13,17,34,15,1,0,252,0,48,0,48,0,48, + 0,63,192,48,112,48,48,48,24,48,24,48,24,48,48,48, + 112,63,192,48,0,48,0,48,0,252,0,10,17,34,12,1, + 0,30,0,51,0,97,128,97,128,97,128,97,128,99,0,108, + 0,103,0,99,128,97,128,97,192,96,192,96,192,108,192,108, + 128,231,0,9,17,34,11,1,0,96,0,112,0,56,0,12, + 0,0,0,62,0,103,0,99,0,3,0,15,0,59,0,99, + 0,195,0,195,0,199,0,251,0,113,128,9,17,34,11,1, + 0,3,0,7,0,14,0,24,0,0,0,62,0,103,0,99, + 0,3,0,15,0,59,0,99,0,195,0,195,0,199,0,251, + 0,113,128,9,17,34,11,1,0,12,0,30,0,51,0,33, + 0,0,0,62,0,103,0,99,0,3,0,15,0,59,0,99, + 0,195,0,195,0,199,0,251,0,113,128,9,16,32,11,1, + 0,50,0,126,0,76,0,0,0,62,0,103,0,99,0,3, + 0,15,0,59,0,99,0,195,0,195,0,199,0,251,0,113, + 128,9,16,32,11,1,0,102,0,102,0,0,0,0,0,62, + 0,103,0,99,0,3,0,15,0,59,0,99,0,195,0,195, + 0,199,0,251,0,113,128,9,18,36,11,1,0,28,0,34, + 0,34,0,34,0,28,0,0,0,62,0,103,0,99,0,3, + 0,15,0,59,0,99,0,195,0,195,0,199,0,251,0,113, + 128,14,12,24,16,1,0,60,240,103,152,99,12,3,12,15, + 252,59,0,99,0,195,0,195,0,199,132,251,248,112,240,9, + 18,36,11,1,250,31,0,99,128,65,128,192,0,192,0,192, + 0,192,0,192,0,224,0,112,128,127,0,30,0,8,0,24, + 0,30,0,6,0,102,0,60,0,9,17,34,11,1,0,96, + 0,112,0,56,0,12,0,0,0,30,0,99,0,65,128,193, + 128,255,128,192,0,192,0,192,0,224,0,112,128,127,0,30, + 0,9,17,34,11,1,0,3,0,7,0,14,0,24,0,0, + 0,30,0,99,0,65,128,193,128,255,128,192,0,192,0,192, + 0,224,0,112,128,127,0,30,0,9,17,34,11,1,0,12, + 0,30,0,51,0,33,0,0,0,30,0,99,0,65,128,193, + 128,255,128,192,0,192,0,192,0,224,0,112,128,127,0,30, + 0,9,16,32,11,1,0,51,0,51,0,0,0,0,0,30, + 0,99,0,65,128,193,128,255,128,192,0,192,0,192,0,224, + 0,112,128,127,0,30,0,6,17,17,6,255,0,192,224,112, + 24,0,56,24,24,24,24,24,24,24,24,24,24,60,5,17, + 17,6,1,0,24,56,112,192,0,96,224,96,96,96,96,96, + 96,96,96,96,240,6,17,17,6,0,0,48,120,204,132,0, + 48,112,48,48,48,48,48,48,48,48,48,120,6,16,16,6, + 0,0,204,204,0,0,112,48,48,48,48,48,48,48,48,48, + 48,120,10,17,34,12,1,0,192,0,113,128,30,0,60,0, + 198,0,31,0,115,128,97,128,192,192,192,192,192,192,192,192, + 192,192,192,192,97,128,115,128,30,0,11,16,32,13,1,0, + 25,0,63,0,38,0,0,0,103,0,239,128,113,192,96,192, + 96,192,96,192,96,192,96,192,96,192,96,192,96,192,241,224, + 10,17,34,12,1,0,96,0,112,0,56,0,12,0,0,0, + 30,0,115,128,97,128,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,17,34,12,1,0,3,0, + 7,0,14,0,24,0,0,0,30,0,115,128,97,128,192,192, + 192,192,192,192,192,192,192,192,192,192,97,128,115,128,30,0, + 10,17,34,12,1,0,12,0,30,0,51,0,33,0,0,0, + 30,0,115,128,97,128,192,192,192,192,192,192,192,192,192,192, + 192,192,97,128,115,128,30,0,10,16,32,12,1,0,25,0, + 63,0,38,0,0,0,30,0,115,128,97,128,192,192,192,192, + 192,192,192,192,192,192,192,192,97,128,115,128,30,0,10,16, + 32,12,1,0,51,0,51,0,0,0,0,0,30,0,115,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,97,128, + 115,128,30,0,10,10,20,12,1,1,12,0,12,0,0,0, + 0,0,255,192,255,192,0,0,0,0,12,0,12,0,10,14, + 28,12,1,255,0,192,30,192,115,128,99,128,198,192,196,192, + 204,192,200,192,216,192,208,192,113,128,115,128,222,0,192,0, + 11,17,34,13,1,0,96,0,112,0,56,0,12,0,0,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,17,34,13,1,0,1,128, + 3,128,7,0,12,0,0,0,225,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,96,192,113,192,62,192,28,224, + 11,17,34,13,1,0,12,0,30,0,51,0,33,0,0,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,16,32,13,1,0,51,0, + 51,0,0,0,0,0,225,192,96,192,96,192,96,192,96,192, + 96,192,96,192,96,192,96,192,113,192,62,192,28,224,11,22, + 44,11,0,251,1,128,3,128,7,0,12,0,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,12,0,8,0,24,0,240,0,224,0, + 10,22,44,12,1,251,96,0,224,0,96,0,96,0,96,0, + 110,0,115,128,97,128,96,192,96,192,96,192,96,192,96,192, + 96,192,97,128,115,128,110,0,96,0,96,0,96,0,96,0, + 240,0,11,21,42,11,0,251,51,0,51,0,0,0,0,0, + 241,224,96,192,96,128,48,128,48,128,49,0,25,0,25,0, + 26,0,14,0,14,0,4,0,12,0,8,0,24,0,240,0, + 224,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--25-180-100-100-P-125-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 17, '1' Height: 17 + Calculated Max Values w=23 h=23 x= 3 y=13 dx=23 dy= 0 ascent=19 len=60 + Font Bounding box w=29 h=37 x=-4 y=-9 + Calculated Min Values x=-2 y=-6 dx= 0 dy= 0 + Pure Font ascent =17 descent=-6 + X Font ascent =17 descent=-6 + Max Font ascent =19 descent=-6 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR18r[3208] U8G_SECTION(".progmem.u8g_font_timR18r") = { + 0,29,37,252,247,17,4,9,8,241,32,127,250,19,250,17, + 250,0,0,0,6,0,1,3,17,17,8,3,0,64,224,224, + 224,224,224,224,224,64,64,64,64,0,0,0,192,192,6,5, + 5,10,1,12,204,204,204,204,136,11,17,34,13,1,0,8, + 128,8,128,8,128,8,128,8,128,127,224,127,224,17,0,17, + 0,17,0,255,192,255,192,34,0,34,0,34,0,34,0,34, + 0,11,21,42,12,0,254,4,0,4,0,63,0,101,192,196, + 192,196,64,196,64,228,0,124,0,30,0,7,128,5,192,4, + 224,4,96,132,96,132,96,196,192,229,192,63,0,4,0,4, + 0,17,16,48,19,1,0,30,12,0,51,252,0,97,24,0, + 193,16,0,193,48,0,194,96,0,228,64,0,120,192,0,1, + 143,0,1,25,128,3,48,128,6,96,128,4,96,128,12,97, + 0,24,114,0,16,60,0,17,17,51,19,1,0,7,192,0, + 8,96,0,24,32,0,24,32,0,24,96,0,12,192,0,15, + 158,0,7,12,0,15,8,0,51,136,0,97,144,0,192,208, + 0,192,224,0,192,96,0,224,240,128,127,191,0,62,14,0, + 2,5,5,6,2,12,192,192,192,192,128,6,22,22,8,1, + 251,4,8,16,48,32,96,96,192,192,192,192,192,192,192,192, + 96,96,32,48,16,8,4,6,22,22,8,1,251,128,64,32, + 48,16,24,24,12,12,12,12,12,12,12,12,24,24,16,48, + 32,64,128,9,9,18,12,2,8,28,0,28,0,201,128,235, + 128,28,0,235,128,201,128,28,0,28,0,12,12,24,12,0, + 0,6,0,6,0,6,0,6,0,6,0,255,240,255,240,6, + 0,6,0,6,0,6,0,6,0,3,5,5,7,2,253,192, + 224,32,96,192,6,2,2,8,0,5,252,252,2,2,2,6, + 2,0,192,192,9,21,42,7,254,252,1,128,1,128,1,0, + 3,0,3,0,2,0,6,0,6,0,4,0,12,0,12,0, + 8,0,24,0,24,0,16,0,48,0,48,0,96,0,96,0, + 64,0,192,0,10,17,34,12,1,0,30,0,51,0,97,128, + 97,128,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,225,192,97,128,97,128,51,0,30,0,8,17,17,12, + 2,0,8,24,120,24,24,24,24,24,24,24,24,24,24,24, + 24,24,255,10,17,34,12,1,0,28,0,127,0,67,128,129, + 128,129,128,1,128,1,128,3,0,3,0,6,0,4,0,12, + 0,24,0,48,0,96,64,255,192,255,128,9,17,34,12,1, + 0,28,0,126,0,71,0,131,0,131,0,6,0,12,0,30, + 0,7,0,3,128,1,128,1,128,1,128,1,0,195,0,230, + 0,120,0,10,17,34,12,1,0,3,0,7,0,7,0,11, + 0,27,0,19,0,51,0,35,0,99,0,67,0,195,0,255, + 192,255,192,3,0,3,0,3,0,3,0,10,17,34,12,1, + 0,31,192,31,128,32,0,32,0,96,0,120,0,126,0,15, + 128,3,128,1,192,0,192,0,192,0,192,0,192,193,128,227, + 128,126,0,10,17,34,12,1,0,3,192,14,0,24,0,48, + 0,112,0,96,0,238,0,243,128,193,128,192,192,192,192,192, + 192,192,192,224,192,97,128,123,128,30,0,10,17,34,12,1, + 0,127,192,255,192,192,192,129,128,1,128,1,0,3,0,3, + 0,2,0,6,0,6,0,4,0,12,0,12,0,12,0,24, + 0,24,0,10,17,34,12,1,0,30,0,51,0,97,128,97, + 128,97,128,115,0,62,0,30,0,63,0,99,128,65,192,192, + 192,192,192,192,192,225,128,115,128,30,0,10,17,34,12,1, + 0,30,0,119,128,97,128,193,192,192,192,192,192,192,192,192, + 192,97,192,115,192,29,128,1,128,3,128,3,0,6,0,28, + 0,240,0,2,11,11,6,2,0,192,192,0,0,0,0,0, + 0,0,192,192,3,14,14,7,2,253,192,192,0,0,0,0, + 0,0,0,192,224,32,96,192,11,11,22,14,1,0,0,96, + 1,192,7,0,28,0,112,0,192,0,112,0,28,0,7,0, + 1,192,0,96,9,5,10,13,2,3,255,128,255,128,0,0, + 255,128,255,128,11,11,22,13,1,0,192,0,112,0,28,0, + 7,0,1,192,0,96,1,192,7,0,28,0,112,0,192,0, + 8,17,17,11,2,0,124,198,131,195,195,7,14,12,28,24, + 24,16,16,0,0,48,48,18,20,60,22,2,253,3,248,0, + 15,14,0,28,3,0,56,1,128,112,0,128,96,236,192,225, + 252,64,195,140,64,195,12,64,198,12,64,198,24,64,198,24, + 192,198,24,128,198,57,128,99,123,0,97,222,0,48,0,0, + 24,0,0,14,12,0,3,240,0,17,17,51,17,0,0,0, + 128,0,1,192,0,1,192,0,1,96,0,2,96,0,2,48, + 0,6,48,0,4,48,0,4,24,0,12,24,0,15,248,0, + 8,12,0,24,12,0,16,12,0,16,6,0,48,6,0,252, + 31,128,14,17,34,16,1,0,255,192,48,112,48,48,48,24, + 48,24,48,24,48,48,48,64,63,224,48,56,48,24,48,12, + 48,12,48,12,48,24,48,120,255,224,14,17,34,16,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,0,192,0,192,0,96,0,96,4,56,8,30,56, + 7,224,15,17,34,17,1,0,255,192,48,112,48,56,48,12, + 48,12,48,6,48,6,48,6,48,6,48,6,48,6,48,6, + 48,12,48,12,48,56,48,112,255,192,13,17,34,15,1,0, + 255,240,48,48,48,16,48,16,48,0,48,0,48,64,48,64, + 63,192,48,64,48,64,48,0,48,0,48,8,48,8,48,24, + 255,248,12,17,34,14,1,0,255,240,48,48,48,16,48,16, + 48,0,48,0,48,32,48,32,63,224,48,32,48,32,48,0, + 48,0,48,0,48,0,48,0,252,0,16,17,34,18,1,0, + 7,228,28,60,56,12,96,4,96,4,192,0,192,0,192,0, + 192,0,192,63,192,12,192,12,96,12,96,12,56,28,30,56, + 7,224,17,17,51,19,1,0,252,31,128,48,6,0,48,6, + 0,48,6,0,48,6,0,48,6,0,48,6,0,48,6,0, + 63,254,0,48,6,0,48,6,0,48,6,0,48,6,0,48, + 6,0,48,6,0,48,6,0,252,31,128,6,17,17,8,1, + 0,252,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 48,252,9,17,34,11,1,0,31,128,6,0,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,6,0,198,0,204,0,120,0,16,17,34,17,1,0, + 252,126,48,24,48,48,48,96,48,192,49,128,51,0,62,0, + 63,0,51,128,49,192,48,224,48,112,48,56,48,28,48,14, + 252,31,13,17,34,14,1,0,252,0,48,0,48,0,48,0, + 48,0,48,0,48,0,48,0,48,0,48,0,48,0,48,0, + 48,0,48,8,48,8,48,24,255,248,21,17,51,22,1,0, + 240,0,248,48,0,224,56,1,96,56,1,96,44,2,96,44, + 2,96,38,2,96,38,4,96,35,4,96,35,8,96,33,136, + 96,33,136,96,32,208,96,32,208,96,32,96,96,32,96,96, + 248,97,248,16,17,34,18,1,0,240,31,48,4,56,4,56, + 4,44,4,38,4,38,4,35,4,33,132,33,132,32,196,32, + 100,32,100,32,52,32,28,32,28,248,12,16,17,34,18,1, + 0,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,13,17,34,15,1,0,255,192,48,112,48,48,48, + 24,48,24,48,24,48,48,48,112,63,192,48,0,48,0,48, + 0,48,0,48,0,48,0,48,0,252,0,16,22,44,18,1, + 251,7,224,28,56,56,28,96,6,96,6,192,3,192,3,192, + 3,192,3,192,3,192,3,192,3,96,6,96,6,56,28,28, + 56,7,224,1,192,0,224,0,112,0,56,0,15,15,17,34, + 16,1,0,255,192,48,112,48,48,48,24,48,24,48,24,48, + 48,48,112,63,192,51,128,49,128,48,192,48,96,48,112,48, + 56,48,28,252,30,11,17,34,13,1,0,30,64,99,192,192, + 192,192,64,192,64,224,0,120,0,30,0,15,128,3,192,0, + 224,0,96,128,96,128,96,192,192,241,128,158,0,14,17,34, + 16,1,0,255,252,195,12,131,4,131,4,3,0,3,0,3, + 0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3, + 0,3,0,15,192,16,17,34,18,1,0,252,31,48,4,48, + 4,48,4,48,4,48,4,48,4,48,4,48,4,48,4,48, + 4,48,4,48,4,48,8,24,8,28,48,7,224,17,17,51, + 17,0,0,252,31,128,48,6,0,48,4,0,24,12,0,24, + 8,0,24,8,0,12,24,0,12,16,0,6,48,0,6,32, + 0,6,32,0,3,96,0,3,64,0,3,192,0,1,128,0, + 1,128,0,1,128,0,23,17,51,23,0,0,252,126,126,48, + 24,24,48,24,16,24,24,16,24,24,48,24,44,32,12,44, + 32,12,44,96,6,76,96,6,76,64,6,70,64,3,70,192, + 3,70,128,3,135,128,1,131,128,1,131,0,1,131,0,18, + 17,51,18,0,0,126,15,128,28,6,0,14,12,0,6,8, + 0,3,16,0,1,160,0,1,192,0,0,192,0,0,224,0, + 1,112,0,2,56,0,6,24,0,4,12,0,8,14,0,24, + 7,0,48,3,128,252,15,192,16,17,34,18,1,0,252,63, + 48,12,56,8,24,24,28,16,12,48,6,32,6,96,3,64, + 3,192,1,128,1,128,1,128,1,128,1,128,1,128,7,224, + 13,17,34,15,1,0,255,240,192,112,128,224,128,192,1,192, + 3,128,3,0,7,0,6,0,14,0,28,0,24,0,56,0, + 48,8,112,8,224,24,255,248,5,21,21,8,2,252,248,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,248,7,17,17,7,0,0,192,192,64,96,96,32,48, + 48,16,24,24,8,12,12,4,6,6,5,21,21,8,1,252, + 248,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, + 24,24,24,24,248,9,9,18,11,1,8,8,0,28,0,20, + 0,54,0,34,0,99,0,65,0,193,128,128,128,12,2,4, + 12,0,251,255,240,255,240,5,4,4,8,1,13,192,224,112, + 24,9,12,24,11,1,0,62,0,103,0,99,0,3,0,15, + 0,59,0,99,0,195,0,195,0,199,0,251,0,113,128,11, + 17,34,12,0,0,48,0,240,0,48,0,48,0,48,0,55, + 0,57,192,48,192,48,96,48,96,48,96,48,96,48,96,48, + 96,48,192,57,192,47,0,9,12,24,11,1,0,31,0,99, + 128,65,128,192,0,192,0,192,0,192,0,192,0,224,0,112, + 128,127,0,30,0,10,17,34,12,1,0,1,128,7,128,1, + 128,1,128,1,128,29,128,115,128,97,128,193,128,193,128,193, + 128,193,128,193,128,193,128,99,128,127,128,25,192,9,12,24, + 11,1,0,30,0,99,0,65,128,193,128,255,128,192,0,192, + 0,192,0,224,0,112,128,127,0,30,0,7,17,17,7,0, + 0,14,22,48,48,48,254,48,48,48,48,48,48,48,48,48, + 48,120,11,18,36,12,1,250,30,192,35,192,97,0,97,128, + 97,128,97,128,97,128,51,0,60,0,64,0,96,0,127,128, + 63,192,64,224,192,96,192,96,225,192,127,0,12,17,34,13, + 0,0,48,0,240,0,48,0,48,0,48,0,51,128,55,192, + 56,224,48,96,48,96,48,96,48,96,48,96,48,96,48,96, + 48,96,120,240,4,17,17,6,1,0,96,96,0,0,0,96, + 224,96,96,96,96,96,96,96,96,96,240,6,23,23,6,254, + 250,12,12,0,0,0,12,28,12,12,12,12,12,12,12,12, + 12,12,12,12,12,204,200,112,12,17,34,12,0,0,48,0, + 240,0,48,0,48,0,48,0,51,224,49,128,51,0,50,0, + 52,0,60,0,54,0,55,0,51,128,49,192,48,224,121,240, + 5,17,17,6,0,0,48,240,48,48,48,48,48,48,48,48, + 48,48,48,48,48,48,120,18,12,36,20,1,0,103,14,0, + 239,159,0,113,227,128,96,193,128,96,193,128,96,193,128,96, + 193,128,96,193,128,96,193,128,96,193,128,96,193,128,241,227, + 192,11,12,24,13,1,0,103,0,239,128,113,192,96,192,96, + 192,96,192,96,192,96,192,96,192,96,192,96,192,241,224,10, + 12,24,12,1,0,30,0,115,128,97,128,192,192,192,192,192, + 192,192,192,192,192,192,192,97,128,115,128,30,0,10,18,36, + 12,1,250,110,0,243,128,97,128,96,192,96,192,96,192,96, + 192,96,192,96,192,97,128,115,128,110,0,96,0,96,0,96, + 0,96,0,96,0,240,0,10,18,36,12,1,250,29,128,115, + 128,97,128,193,128,193,128,193,128,193,128,193,128,193,128,97, + 128,115,128,29,128,1,128,1,128,1,128,1,128,1,128,3, + 192,6,12,12,8,1,0,108,236,112,96,96,96,96,96,96, + 96,96,240,8,12,12,10,1,0,62,70,194,224,112,124,30, + 7,3,131,198,248,7,15,15,7,0,0,16,48,112,254,48, + 48,48,48,48,48,48,48,48,50,28,11,12,24,13,1,0, + 225,192,96,192,96,192,96,192,96,192,96,192,96,192,96,192, + 96,192,113,192,62,192,28,224,11,12,24,11,0,0,241,224, + 96,192,96,128,48,128,48,128,49,0,25,0,25,0,26,0, + 14,0,14,0,4,0,17,12,36,17,0,0,241,231,128,96, + 195,0,96,194,0,48,194,0,48,194,0,49,100,0,25,100, + 0,26,100,0,26,40,0,14,56,0,14,56,0,4,16,0, + 11,12,24,13,1,0,241,224,96,192,49,128,57,0,26,0, + 12,0,14,0,27,0,51,128,33,128,96,192,241,224,12,18, + 36,11,255,250,120,240,48,96,48,64,24,64,24,64,24,128, + 12,128,12,128,13,0,7,0,7,0,2,0,6,0,4,0, + 12,0,200,0,240,0,96,0,8,12,12,10,1,0,255,195, + 134,14,28,24,56,48,112,97,195,255,8,22,22,10,1,251, + 7,12,24,24,24,24,24,16,48,32,192,32,48,16,24,24, + 24,24,24,24,12,7,2,17,17,5,1,0,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,8,22,22, + 10,1,251,224,48,24,24,24,24,24,8,12,4,3,4,12, + 8,24,24,24,24,24,24,48,224,11,4,8,13,1,4,56, + 32,124,96,199,192,131,128,255}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=31 h=30 x= 4 y=18 dx=32 dy= 0 ascent=30 len=112 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =30 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24[10419] U8G_SECTION(".progmem.u8g_font_timR24") = { + 0,38,48,251,245,23,5,140,13,213,32,255,249,30,249,23, + 249,0,0,0,8,0,1,4,23,23,11,3,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,96,0,0, + 96,240,240,96,9,7,14,14,2,16,227,128,227,128,227,128, + 227,128,65,0,65,0,65,0,16,23,46,17,0,0,6,24, + 6,24,6,24,6,24,6,24,6,24,6,24,6,24,127,255, + 127,255,12,48,12,48,12,48,12,48,255,254,255,254,24,96, + 24,96,24,96,24,96,24,96,24,96,24,96,13,28,56,16, + 2,253,2,0,2,0,15,192,58,112,50,56,98,24,98,8, + 98,8,114,0,122,0,62,0,63,0,31,128,7,192,3,224, + 2,240,2,112,2,56,2,56,130,24,130,24,194,56,226,48, + 114,96,31,192,2,0,2,0,2,0,23,23,69,27,2,0, + 15,0,64,29,131,192,56,252,128,112,65,128,112,67,0,224, + 66,0,224,70,0,224,196,0,192,140,0,193,136,0,193,24, + 120,102,16,236,60,49,198,0,99,130,0,67,130,0,199,2, + 0,135,2,1,135,6,1,6,4,3,6,12,2,6,8,6, + 3,48,4,1,224,23,23,69,26,2,0,0,248,0,1,140, + 0,3,14,0,3,6,0,7,6,0,7,6,0,7,12,0, + 7,140,0,3,152,0,3,241,252,3,192,112,7,192,96,29, + 224,64,56,240,192,112,112,128,96,121,128,224,63,0,224,30, + 0,224,15,0,240,31,130,120,51,252,127,225,248,31,128,240, + 3,8,8,6,1,15,224,224,224,224,64,64,64,64,8,28, + 28,11,2,251,3,6,12,24,56,48,112,112,96,224,224,224, + 224,224,224,224,224,224,224,96,112,112,48,56,24,12,6,3, + 8,28,28,11,1,251,192,96,48,24,28,12,14,14,6,7, + 7,7,7,7,7,7,7,7,7,6,14,14,12,28,24,48, + 96,192,12,13,26,17,2,10,6,0,15,0,6,0,198,48, + 246,240,118,224,15,0,118,224,246,240,198,48,6,0,15,0, + 6,0,16,16,32,19,1,1,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,255,255,255,255,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,4,7,7,8,2,253,96,240, + 240,112,16,32,64,8,2,2,11,1,7,255,255,4,4,4, + 8,2,0,96,240,240,96,10,26,52,9,0,253,0,192,0, + 192,1,128,1,128,3,128,3,0,3,0,3,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,24, + 0,48,0,48,0,48,0,112,0,96,0,96,0,192,0,192, + 0,14,23,46,16,1,0,7,128,28,224,56,112,48,48,112, + 56,112,56,96,24,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,24,112,56,112,56,48,48,56, + 112,28,224,7,128,9,23,46,16,4,0,12,0,28,0,124, + 0,220,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,128,15,23,46,16,0,0,7, + 224,15,240,28,248,48,60,32,60,96,28,64,28,0,28,0, + 28,0,24,0,56,0,48,0,96,0,96,0,192,1,128,3, + 0,6,0,12,2,24,6,63,252,127,248,255,248,12,23,46, + 16,2,0,15,128,63,192,97,224,192,224,128,224,0,224,0, + 192,0,192,1,128,3,0,7,192,31,224,1,240,0,112,0, + 112,0,48,0,48,0,48,0,112,0,96,224,192,243,128,127, + 0,14,23,46,16,1,0,0,96,0,224,0,224,1,224,1, + 96,3,96,6,96,4,96,12,96,24,96,16,96,48,96,96, + 96,64,96,255,252,255,252,255,252,0,96,0,96,0,96,0, + 96,0,96,0,96,13,23,46,16,1,0,15,248,31,240,31, + 224,16,0,48,0,32,0,126,0,127,128,127,192,7,224,1, + 224,0,240,0,112,0,112,0,48,0,48,0,48,0,48,0, + 96,0,96,224,192,243,128,126,0,14,23,46,16,1,0,0, + 120,1,192,3,128,15,0,30,0,28,0,56,0,120,0,112, + 0,115,192,247,240,248,120,224,56,224,60,224,28,224,28,224, + 28,224,28,112,28,112,24,56,56,28,96,7,192,14,23,46, + 16,1,0,63,252,127,252,96,24,192,24,128,56,0,48,0, + 48,0,48,0,96,0,96,0,96,0,224,0,192,0,192,1, + 192,1,128,1,128,1,128,3,0,3,0,3,0,7,0,6, + 0,13,23,46,16,2,0,31,128,56,224,112,112,224,48,224, + 48,224,48,224,112,240,96,124,192,63,0,31,128,15,192,27, + 224,113,240,96,240,224,120,192,120,192,56,192,56,224,56,96, + 112,112,224,31,192,14,23,46,16,1,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,240, + 28,112,28,120,60,62,252,15,184,0,56,0,112,0,112,0, + 224,1,192,3,128,15,0,120,0,4,15,15,9,2,0,96, + 240,240,96,0,0,0,0,0,0,0,96,240,240,96,4,18, + 18,9,2,253,96,240,240,96,0,0,0,0,0,0,0,96, + 240,240,112,16,32,64,16,18,36,19,1,0,0,1,0,7, + 0,31,0,124,1,240,7,192,31,0,124,0,240,0,240,0, + 124,0,31,0,7,192,1,240,0,124,0,31,0,7,0,1, + 16,9,18,19,1,4,255,255,255,255,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,16,18,36,19,2,0,128,0, + 224,0,248,0,62,0,15,128,3,224,0,248,0,62,0,15, + 0,15,0,62,0,248,3,224,15,128,62,0,248,0,224,0, + 128,0,11,23,46,14,2,0,31,0,115,128,193,192,193,192, + 224,224,224,224,96,224,1,192,1,192,1,128,3,128,3,0, + 6,0,4,0,12,0,8,0,8,0,0,0,0,0,12,0, + 30,0,30,0,12,0,27,28,112,31,2,251,0,31,240,0, + 0,248,60,0,1,224,6,0,7,128,3,0,14,0,1,128, + 28,0,0,192,28,0,0,192,56,7,140,96,112,31,92,96, + 112,28,124,32,112,56,56,32,224,112,56,32,224,112,48,32, + 224,112,112,32,224,224,112,96,224,224,112,64,224,224,224,192, + 224,224,224,128,112,225,225,128,112,119,115,0,112,60,62,0, + 56,0,0,0,24,0,0,0,28,0,0,0,14,0,0,0, + 7,128,6,0,1,240,60,0,0,127,240,0,22,23,69,24, + 1,0,0,48,0,0,48,0,0,112,0,0,120,0,0,120, + 0,0,252,0,0,220,0,0,156,0,1,142,0,1,14,0, + 3,15,0,3,7,0,2,7,0,6,7,128,6,3,128,15, + 255,192,12,3,192,24,1,192,24,1,224,48,1,224,48,0, + 240,112,0,240,252,3,252,20,23,69,22,1,0,255,254,0, + 62,15,128,28,3,192,28,1,192,28,1,224,28,0,224,28, + 0,224,28,1,224,28,1,192,28,3,192,28,15,128,31,254, + 0,28,7,128,28,1,224,28,0,224,28,0,240,28,0,112, + 28,0,112,28,0,240,28,0,224,28,1,224,62,7,192,255, + 255,0,20,23,69,22,1,0,1,255,16,7,131,240,14,0, + 240,28,0,112,56,0,48,56,0,48,112,0,16,112,0,16, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,112,0,0,112,0,0,56,0,0,56,0, + 16,28,0,48,14,0,96,7,131,192,1,255,0,22,23,69, + 24,1,0,255,254,0,62,7,128,28,1,192,28,0,224,28, + 0,112,28,0,112,28,0,56,28,0,56,28,0,60,28,0, + 60,28,0,60,28,0,60,28,0,60,28,0,60,28,0,60, + 28,0,56,28,0,56,28,0,112,28,0,112,28,0,224,28, + 1,192,62,7,128,255,254,0,19,23,69,20,1,0,255,255, + 192,62,3,192,28,0,192,28,0,64,28,0,64,28,0,0, + 28,0,0,28,0,0,28,1,0,28,1,0,28,3,0,31, + 255,0,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,32,28,0,32,28,0,96,28,0,192,62,3,192, + 255,255,192,17,23,69,18,1,0,255,255,128,62,7,128,28, + 1,128,28,0,128,28,0,128,28,0,0,28,0,0,28,0, + 0,28,2,0,28,2,0,28,6,0,31,254,0,28,6,0, + 28,2,0,28,2,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,62,0,0,255,128,0,22,23, + 69,24,1,0,1,255,48,7,135,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,0,240,0,0,240, + 0,0,240,0,0,240,3,252,240,0,248,240,0,112,240,0, + 112,112,0,112,112,0,112,56,0,112,56,0,112,28,0,112, + 14,0,112,7,129,224,1,255,128,22,23,69,24,1,0,255, + 135,252,62,1,240,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 31,255,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,62,1, + 240,255,135,252,9,23,46,11,1,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,12,23,46,13,1,0,31,240, + 7,192,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,195,128,227,0,231,0,124,0,23,23,69,24, + 1,0,255,199,248,62,1,224,28,1,128,28,3,0,28,6, + 0,28,12,0,28,24,0,28,48,0,28,96,0,28,192,0, + 31,192,0,31,224,0,31,240,0,30,120,0,28,60,0,28, + 30,0,28,15,0,28,7,128,28,3,192,28,1,224,28,0, + 240,62,0,248,255,199,254,19,23,69,20,1,0,255,128,0, + 62,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,32,28,0,32,28,0,96,28,0,192,62,3,192,255, + 255,192,28,23,92,30,1,0,252,0,7,240,62,0,7,192, + 30,0,15,128,31,0,15,128,31,0,11,128,23,0,27,128, + 23,128,27,128,19,128,51,128,19,192,51,128,19,192,35,128, + 17,224,99,128,17,224,99,128,16,224,195,128,16,240,195,128, + 16,112,131,128,16,121,131,128,16,121,3,128,16,61,3,128, + 16,63,3,128,16,30,3,128,16,30,3,128,56,12,7,192, + 254,12,31,240,22,23,69,24,1,0,248,1,252,60,0,112, + 30,0,32,31,0,32,31,0,32,23,128,32,19,192,32,19, + 192,32,17,224,32,16,240,32,16,248,32,16,120,32,16,60, + 32,16,30,32,16,31,32,16,15,32,16,7,160,16,3,224, + 16,1,224,16,1,224,16,0,224,56,0,96,254,0,32,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,56,0,112,56,0,112,112,0,56,112,0,56,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,112,0,56,112,0,56,56,0,112,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,248,0,60,62,0,28,15,0,28,7,0,28,7,128,28, + 3,128,28,3,128,28,3,128,28,7,128,28,7,0,28,15, + 0,28,62,0,31,240,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,22,29,87,24,1,250,1,254,0,7,135, + 128,14,1,192,28,0,224,56,0,112,56,0,112,112,0,56, + 112,0,56,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,112,0,56,112,0,56,56,0, + 112,56,0,112,28,0,224,14,1,192,7,135,128,1,254,0, + 0,124,0,0,62,0,0,31,0,0,15,128,0,3,224,0, + 0,124,21,23,69,22,1,0,255,248,0,60,62,0,28,15, + 0,28,7,128,28,7,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,0,28,30,0,31,248,0,28,240,0,28, + 120,0,28,60,0,28,60,0,28,30,0,28,15,0,28,15, + 128,28,7,128,28,3,192,62,1,224,255,129,248,15,23,46, + 18,1,0,7,228,28,60,56,28,112,12,112,4,112,6,120, + 0,124,0,62,0,31,128,15,224,7,240,1,248,0,124,0, + 62,0,30,128,14,128,14,192,14,224,12,112,28,124,120,103, + 240,19,23,69,20,1,0,255,255,224,240,225,224,192,224,96, + 192,224,96,128,224,32,128,224,32,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,1,240,0,7,252,0,22,23,69,24, + 1,0,255,129,252,62,0,112,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,30,0,96,14,0,64,15,0, + 192,7,195,128,1,254,0,22,23,69,23,1,0,255,1,252, + 124,0,112,60,0,96,30,0,64,30,0,192,14,0,192,15, + 0,128,15,1,128,7,1,128,7,129,0,3,131,0,3,195, + 0,3,194,0,1,198,0,1,230,0,0,228,0,0,236,0, + 0,124,0,0,120,0,0,120,0,0,56,0,0,48,0,0, + 16,0,31,23,92,32,1,0,255,63,224,254,124,15,128,120, + 60,7,0,48,28,7,128,48,30,7,128,96,30,3,128,96, + 14,3,192,96,15,3,192,192,7,3,224,192,7,135,224,192, + 7,134,225,128,3,132,241,128,3,204,241,128,3,204,115,0, + 1,216,123,0,1,216,59,0,1,248,62,0,0,240,62,0, + 0,240,28,0,0,224,28,0,0,96,28,0,0,96,8,0, + 0,64,8,0,22,23,69,24,1,0,255,195,252,63,0,240, + 31,0,224,15,0,192,7,129,128,7,131,0,3,198,0,1, + 230,0,1,236,0,0,248,0,0,120,0,0,120,0,0,124, + 0,0,222,0,1,158,0,1,143,0,3,15,128,6,7,128, + 14,3,192,12,3,224,24,1,224,56,1,240,254,7,252,22, + 23,69,24,1,0,255,192,252,63,0,56,30,0,48,15,0, + 96,15,128,192,7,128,128,3,193,128,3,195,0,1,227,0, + 0,246,0,0,252,0,0,124,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,124,0,1,255,0,19,23,69,20,1,0, + 63,255,224,56,3,192,96,7,128,96,7,128,64,15,0,64, + 30,0,0,30,0,0,60,0,0,120,0,0,120,0,0,240, + 0,1,224,0,1,224,0,3,192,0,3,192,0,7,128,0, + 15,0,0,15,0,32,30,0,32,60,0,96,60,0,96,120, + 1,192,255,255,192,7,28,28,11,3,251,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,240,254,13,23,46,9,254,0,192,0,224, + 0,96,0,112,0,48,0,56,0,24,0,28,0,12,0,14, + 0,6,0,7,0,3,0,3,128,1,128,1,192,0,192,0, + 224,0,96,0,112,0,48,0,56,0,24,7,28,28,11,1, + 251,254,30,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,30,254,13,13,26, + 16,1,10,7,0,7,0,15,128,13,128,24,192,24,192,48, + 96,48,96,112,112,96,48,224,56,192,24,192,24,17,2,6, + 17,0,251,255,255,128,255,255,128,7,6,6,11,1,17,192, + 224,112,24,12,6,13,15,30,15,1,0,31,128,49,192,112, + 224,112,224,96,224,3,224,14,224,24,224,48,224,96,224,224, + 224,225,224,242,232,126,248,60,112,15,23,46,16,0,0,24, + 0,248,0,56,0,56,0,56,0,56,0,56,0,56,0,57, + 240,59,248,60,124,56,28,56,30,56,14,56,14,56,14,56, + 14,56,14,56,12,56,28,56,24,60,112,15,224,12,15,30, + 15,1,0,15,128,56,192,112,224,96,224,224,96,192,0,192, + 0,192,0,192,0,224,0,224,16,112,48,124,96,63,192,31, + 0,15,23,46,16,1,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,15,184,24,248,48,120,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,190,15,48,12,15,30,15,1,0,15,128,57,192,96, + 224,96,112,192,112,255,240,192,0,192,0,192,0,224,0,224, + 16,112,48,124,96,63,192,15,0,12,23,46,11,0,0,3, + 224,6,112,12,112,12,48,28,0,28,0,28,0,28,0,255, + 192,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,62,0,255,128,14,22,44, + 16,1,249,15,192,24,252,48,124,112,48,112,48,112,48,112, + 48,56,112,28,224,15,128,24,0,48,0,120,0,127,224,63, + 248,31,252,96,12,192,12,192,28,240,56,127,224,31,128,16, + 23,46,16,0,0,24,0,248,0,56,0,56,0,56,0,56, + 0,56,0,56,0,57,240,59,248,62,60,60,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,254,127,7,23,23,9,1,0,56,56,56,0,0,0,0, + 0,56,248,56,56,56,56,56,56,56,56,56,56,56,56,254, + 8,30,30,9,255,249,7,7,7,0,0,0,0,0,3,31, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 6,198,236,120,16,23,46,16,0,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,254,56,112,56,96, + 56,192,57,128,63,0,62,0,63,0,59,128,57,192,56,224, + 56,240,56,120,56,60,254,127,7,23,23,9,1,0,24,248, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,25,15,60,26,0,0,24,240,120,0,251, + 249,252,0,62,63,30,0,60,30,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,254,127,63,128,16,15,30,16,0,0,24,240,251, + 248,60,60,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,254,127,14,15,30,16,1, + 0,7,128,24,224,48,112,112,56,96,56,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,56,48,28,96,7,128,15, + 22,44,17,0,249,25,224,251,248,60,124,56,28,56,30,56, + 14,56,14,56,14,56,14,56,14,56,12,56,28,60,24,62, + 112,59,192,56,0,56,0,56,0,56,0,56,0,56,0,255, + 0,15,22,44,17,1,249,15,200,28,120,48,56,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,184,31,56,0,56,0,56,0,56,0,56,0,56,0, + 56,1,254,10,15,30,11,1,0,25,128,251,192,63,192,60, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,10,15,30,13,1,0,62,128,99, + 128,193,128,192,128,224,128,240,0,124,0,63,0,15,128,3, + 192,129,192,128,192,192,192,225,128,191,0,9,19,38,9,0, + 0,8,0,8,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,128,63,0,28,0,16,15,30,17,0,0,248,124,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,60,60,92,31,223,15,140,15,15,30,17,1, + 0,254,62,120,12,56,8,60,24,28,24,28,16,14,48,14, + 32,7,96,7,64,7,192,3,192,3,128,1,128,1,0,21, + 15,45,24,1,0,253,252,120,112,112,48,112,112,48,56,48, + 32,56,56,96,24,56,64,28,120,64,28,92,192,12,204,128, + 14,143,128,15,143,0,7,7,0,7,7,0,3,6,0,2, + 2,0,14,15,30,17,1,0,252,248,56,96,60,192,28,128, + 30,128,15,0,7,0,7,128,15,128,11,192,25,224,16,224, + 48,112,96,120,240,252,15,22,44,17,1,249,254,30,120,12, + 56,12,60,8,28,24,30,24,14,16,14,48,7,32,7,32, + 3,224,3,192,1,192,1,128,1,128,1,0,1,0,3,0, + 2,0,62,0,124,0,56,0,13,15,30,15,1,0,127,240, + 96,240,64,224,65,224,3,192,3,128,7,128,7,0,14,0, + 30,0,28,8,56,8,120,8,112,24,255,240,8,28,28,16, + 4,251,15,28,56,56,56,56,56,56,56,56,56,56,56,48, + 224,48,56,56,56,56,56,56,56,56,56,24,28,15,2,23, + 23,7,2,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,8,28,28,16,4, + 251,240,56,28,28,28,28,28,28,28,28,28,28,28,12,7, + 12,28,28,28,28,28,28,28,28,28,24,56,240,16,4,8, + 18,1,7,62,3,127,135,225,254,192,124,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,8, + 0,1,4,22,22,11,3,249,96,240,240,96,0,0,96,96, + 96,96,96,96,96,96,96,96,96,240,240,240,240,96,12,23, + 46,17,2,252,0,64,0,64,0,128,0,128,15,128,56,224, + 113,112,97,112,225,48,195,0,194,0,194,0,230,0,228,0, + 116,16,124,48,63,224,31,192,31,0,16,0,48,0,32,0, + 32,0,15,23,46,17,1,0,1,240,3,152,6,28,6,28, + 14,24,14,0,14,0,14,0,14,0,14,0,255,224,255,224, + 15,0,7,0,7,0,7,0,7,0,6,0,6,2,126,6, + 199,252,207,248,120,240,16,17,34,17,0,3,199,227,255,255, + 62,124,120,30,112,14,224,7,224,7,192,3,192,3,192,3, + 224,7,224,7,112,14,120,30,62,124,255,255,199,227,17,23, + 69,17,0,0,254,31,128,120,7,0,56,6,0,60,4,0, + 28,12,0,30,8,0,14,24,0,15,16,0,7,48,0,7, + 160,0,3,224,0,3,192,0,63,254,0,1,192,0,1,192, + 0,1,192,0,63,254,0,1,192,0,1,192,0,1,192,0, + 1,192,0,1,192,0,7,240,0,2,23,23,7,2,0,192, + 192,192,192,192,192,192,192,192,0,0,0,0,0,192,192,192, + 192,192,192,192,192,192,12,28,56,17,2,251,31,128,49,192, + 97,192,97,192,113,128,56,0,60,0,30,0,15,0,63,128, + 99,192,193,224,192,224,192,112,224,48,112,48,120,48,60,96, + 31,192,15,0,7,128,3,192,1,192,24,224,56,96,56,96, + 56,192,31,128,9,3,6,11,1,18,227,128,227,128,227,128, + 22,23,69,25,1,0,0,252,0,3,255,0,14,1,192,24, + 0,96,48,0,48,96,0,24,96,127,24,193,199,12,195,131, + 12,195,1,12,199,0,12,199,0,12,199,0,12,199,0,12, + 199,128,12,67,129,24,97,230,24,96,124,48,48,0,48,24, + 0,96,14,1,192,7,255,0,1,252,0,9,13,26,9,0, + 10,60,0,78,0,198,0,198,0,30,0,102,0,198,0,198, + 0,239,128,123,0,0,0,0,0,255,0,13,13,26,17,1, + 1,2,8,6,24,12,48,24,96,56,224,113,192,227,128,113, + 192,56,224,24,96,12,48,6,24,2,8,16,9,18,18,1, + 4,255,255,255,255,0,3,0,3,0,3,0,3,0,3,0, + 3,0,3,8,2,2,11,1,7,255,255,22,23,69,25,1, + 0,0,254,0,3,255,0,14,1,192,24,0,96,48,0,48, + 35,252,24,96,199,24,192,195,12,192,195,12,192,195,12,192, + 198,12,192,248,12,192,220,12,192,204,12,192,206,12,64,198, + 8,96,199,24,35,227,208,48,0,48,24,0,96,14,1,192, + 3,255,0,0,252,0,10,2,4,11,0,18,255,192,255,192, + 10,10,20,13,1,13,30,0,63,0,97,128,192,192,192,192, + 192,192,192,192,97,128,63,0,30,0,16,20,40,19,1,0, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,255,255, + 255,255,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,0,0,255,255,255,255,9,14,28,10,0,9,60,0, + 78,0,135,0,3,0,3,0,7,0,6,0,12,0,24,0, + 16,0,32,0,64,128,255,0,254,0,9,14,28,10,0,9, + 62,0,71,0,131,0,3,0,3,0,6,0,60,0,7,0, + 3,128,1,128,1,128,193,128,227,0,126,0,7,6,6,11, + 3,17,6,14,28,48,96,192,16,22,44,17,0,249,248,124, + 56,28,56,28,56,28,56,28,56,28,56,28,56,28,56,28, + 56,28,56,28,56,60,60,124,63,223,47,152,32,0,112,0, + 112,0,112,0,112,0,112,0,32,0,13,29,58,15,1,250, + 7,248,30,32,62,32,126,32,126,32,254,32,254,32,254,32, + 254,32,126,32,126,32,62,32,30,32,14,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,2,32,2,32,2,32, + 2,32,2,32,2,32,2,32,2,32,4,4,4,8,2,7, + 96,240,240,96,6,7,7,11,2,249,32,96,120,28,12,28, + 248,6,14,14,10,2,9,48,240,48,48,48,48,48,48,48, + 48,48,48,48,252,9,13,26,10,0,10,62,0,99,0,195, + 128,193,128,193,128,193,128,193,128,225,128,99,0,62,0,0, + 0,0,0,255,128,13,13,26,16,2,1,130,0,195,0,97, + 128,48,192,56,224,28,112,14,56,28,112,56,224,48,192,97, + 128,195,0,130,0,22,23,69,25,2,0,48,0,96,240,0, + 96,48,0,192,48,1,192,48,1,128,48,3,0,48,3,0, + 48,6,0,48,14,0,48,12,16,48,24,48,48,24,112,48, + 48,112,252,96,240,0,97,176,0,193,48,1,194,48,1,134, + 48,3,12,48,3,31,252,6,0,48,12,0,48,12,0,48, + 23,23,69,25,1,0,48,0,192,240,0,192,48,1,128,48, + 3,128,48,3,0,48,6,0,48,6,0,48,12,0,48,28, + 0,48,24,240,48,49,56,48,50,28,48,96,12,252,224,12, + 0,192,28,1,128,24,3,128,48,3,0,96,6,0,64,6, + 0,128,12,1,2,24,3,252,24,3,248,24,23,69,25,0, + 0,62,0,24,71,0,24,131,0,48,3,0,112,3,0,96, + 6,0,192,60,0,192,7,1,128,3,131,128,1,131,4,1, + 134,12,193,134,28,227,12,28,126,24,60,0,24,108,0,48, + 76,0,112,140,0,97,140,0,195,12,0,199,255,1,128,12, + 3,0,12,3,0,12,11,22,44,14,1,249,6,0,15,0, + 15,0,6,0,0,0,2,0,2,0,6,0,4,0,12,0, + 24,0,56,0,48,0,112,0,112,0,224,192,224,224,224,224, + 112,96,112,96,57,192,31,0,22,30,90,24,1,0,6,0, + 0,7,0,0,3,128,0,0,192,0,0,96,0,0,48,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,30,90,24,1,0,0,1, + 128,0,3,128,0,7,0,0,12,0,0,24,0,0,48,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,30,90,24,1,0,0,48, + 0,0,120,0,0,252,0,1,206,0,3,3,0,2,1,0, + 0,0,0,0,48,0,0,48,0,0,112,0,0,120,0,0, + 120,0,0,252,0,0,220,0,0,156,0,1,142,0,1,14, + 0,3,15,0,3,7,0,2,7,0,6,7,128,6,3,128, + 15,255,192,12,3,192,24,1,192,24,1,224,48,1,224,48, + 0,240,112,0,240,252,3,252,22,28,84,24,1,0,0,224, + 128,1,249,128,3,63,0,2,14,0,0,0,0,0,48,0, + 0,48,0,0,112,0,0,120,0,0,120,0,0,252,0,0, + 220,0,0,156,0,1,142,0,1,14,0,3,15,0,3,7, + 0,2,7,0,6,7,128,6,3,128,15,255,192,12,3,192, + 24,1,192,24,1,224,48,1,224,48,0,240,112,0,240,252, + 3,252,22,28,84,24,1,0,1,199,0,1,199,0,1,199, + 0,0,0,0,0,0,0,0,48,0,0,48,0,0,112,0, + 0,120,0,0,120,0,0,252,0,0,220,0,0,156,0,1, + 142,0,1,14,0,3,15,0,3,7,0,2,7,0,6,7, + 128,6,3,128,15,255,192,12,3,192,24,1,192,24,1,224, + 48,1,224,48,0,240,112,0,240,252,3,252,22,30,90,24, + 1,0,0,112,0,0,248,0,1,140,0,1,4,0,1,140, + 0,0,248,0,0,112,0,0,0,0,0,48,0,0,48,0, + 0,120,0,0,120,0,0,252,0,0,220,0,0,156,0,1, + 142,0,1,14,0,3,15,0,3,7,0,2,7,0,6,7, + 128,6,3,128,15,255,192,12,3,192,24,1,192,24,1,224, + 48,1,224,48,0,240,112,0,240,252,3,252,28,23,92,30, + 1,0,0,255,255,224,0,31,129,224,0,31,0,96,0,55, + 0,32,0,55,0,32,0,103,0,0,0,103,0,0,0,71, + 0,128,0,199,0,128,0,199,1,128,1,135,3,128,1,135, + 255,128,3,7,3,128,3,7,1,128,7,255,0,128,6,7, + 0,128,12,7,0,0,12,7,0,16,24,7,0,16,24,7, + 0,48,48,7,0,96,48,15,129,224,254,63,255,224,20,30, + 90,22,1,249,1,255,16,7,131,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,16,240,0,0,240, + 0,0,240,0,0,240,0,0,240,0,0,240,0,0,240,0, + 0,112,0,0,112,0,0,56,0,0,56,0,16,28,0,48, + 14,0,96,7,131,192,1,255,0,0,64,0,0,192,0,0, + 240,0,0,56,0,0,24,0,0,56,0,1,240,0,19,30, + 90,20,1,0,3,0,0,3,128,0,1,192,0,0,96,0, + 0,48,0,0,24,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,30, + 90,20,1,0,0,6,0,0,14,0,0,28,0,0,48,0, + 0,96,0,0,192,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,30, + 90,20,1,0,0,48,0,0,120,0,0,252,0,1,206,0, + 3,3,0,2,1,0,0,0,0,255,255,192,62,3,192,28, + 0,192,28,0,64,28,0,64,28,0,0,28,0,0,28,0, + 0,28,1,0,28,1,0,28,3,0,31,255,0,28,3,0, + 28,1,0,28,1,0,28,0,0,28,0,0,28,0,32,28, + 0,32,28,0,96,28,0,192,62,3,192,255,255,192,19,28, + 84,20,1,0,3,142,0,3,142,0,3,142,0,0,0,0, + 0,0,0,255,255,192,62,3,192,28,0,192,28,0,64,28, + 0,64,28,0,0,28,0,0,28,0,0,28,1,0,28,1, + 0,28,3,0,31,255,0,28,3,0,28,1,0,28,1,0, + 28,0,0,28,0,0,28,0,32,28,0,32,28,0,96,28, + 0,192,62,3,192,255,255,192,9,30,60,11,1,0,96,0, + 112,0,56,0,12,0,6,0,3,0,0,0,255,128,62,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,62,0,255,128,9,30,60,11,1,0, + 1,128,3,128,7,0,12,0,24,0,48,0,0,0,255,128, + 62,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,10,30,60,11, + 1,0,12,0,30,0,63,0,115,128,192,192,128,64,0,0, + 255,128,62,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,62,0,255,128,9,28, + 56,11,1,0,227,128,227,128,227,128,0,0,0,0,255,128, + 62,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,62,0,255,128,22,23,69,24, + 1,0,255,254,0,62,7,128,28,1,192,28,0,224,28,0, + 112,28,0,112,28,0,56,28,0,56,28,0,60,28,0,60, + 28,0,60,255,192,60,255,192,60,28,0,60,28,0,60,28, + 0,56,28,0,56,28,0,112,28,0,112,28,0,224,28,1, + 192,62,7,128,255,254,0,22,29,87,24,1,0,0,224,128, + 1,249,128,3,63,0,2,14,0,0,0,0,0,0,0,248, + 1,252,60,0,112,30,0,32,31,0,32,31,0,32,23,128, + 32,19,192,32,19,192,32,17,224,32,16,240,32,16,248,32, + 16,120,32,16,60,32,16,30,32,16,31,32,16,15,32,16, + 7,160,16,3,224,16,1,224,16,1,224,16,0,224,56,0, + 96,254,0,32,22,30,90,24,1,0,3,0,0,3,128,0, + 1,192,0,0,96,0,0,48,0,0,24,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,30,90,24,1,0,0,1,128,0,3,128, + 0,7,0,0,12,0,0,24,0,0,48,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,30,90,24,1,0,0,48,0,0,120,0, + 0,252,0,1,206,0,3,3,0,2,1,0,0,0,0,1, + 254,0,7,135,128,14,1,192,28,0,224,56,0,112,56,0, + 112,112,0,56,112,0,56,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,112,0,56,112, + 0,56,56,0,112,56,0,112,28,0,224,14,1,192,7,135, + 128,1,254,0,22,28,84,24,1,0,0,224,128,1,249,128, + 3,63,0,2,14,0,0,0,0,1,254,0,7,135,128,14, + 1,192,28,0,224,56,0,112,56,0,112,112,0,56,112,0, + 56,240,0,60,240,0,60,240,0,60,240,0,60,240,0,60, + 240,0,60,240,0,60,112,0,56,112,0,56,56,0,112,56, + 0,112,28,0,224,14,1,192,7,135,128,1,254,0,22,28, + 84,24,1,0,1,199,0,1,199,0,1,199,0,0,0,0, + 0,0,0,1,254,0,7,135,128,14,1,192,28,0,224,56, + 0,112,56,0,112,112,0,56,112,0,56,240,0,60,240,0, + 60,240,0,60,240,0,60,240,0,60,240,0,60,240,0,60, + 112,0,56,112,0,56,56,0,112,56,0,112,28,0,224,14, + 1,192,7,135,128,1,254,0,16,16,32,19,1,0,64,2, + 224,7,112,14,56,28,28,56,14,112,7,224,3,192,3,192, + 7,224,14,112,28,56,56,28,112,14,224,7,64,2,22,27, + 81,24,1,254,0,0,16,0,0,48,1,254,96,7,135,192, + 14,1,192,28,1,224,56,3,112,56,2,112,112,6,56,112, + 12,56,240,8,60,240,24,60,240,48,60,240,96,60,240,64, + 60,240,192,60,240,128,60,113,128,56,115,0,56,58,0,112, + 62,0,112,28,0,224,30,1,192,55,135,128,33,254,0,96, + 0,0,64,0,0,22,30,90,24,1,0,0,192,0,0,224, + 0,0,112,0,0,24,0,0,12,0,0,6,0,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,30,90,24,1,0,0,1,128,0,3, + 128,0,7,0,0,12,0,0,24,0,0,48,0,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,30,90,24,1,0,0,24,0,0,60, + 0,0,126,0,0,231,0,1,129,128,1,0,128,0,0,0, + 255,129,252,62,0,112,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,96,30,0,96,14,0,64,15,0,192,7, + 195,128,1,254,0,22,28,84,24,1,0,1,199,0,1,199, + 0,1,199,0,0,0,0,0,0,0,255,129,252,62,0,112, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,96, + 30,0,96,14,0,64,15,0,192,7,195,128,1,254,0,22, + 30,90,24,1,0,0,0,192,0,1,192,0,3,128,0,6, + 0,0,12,0,0,24,0,0,0,0,255,192,252,63,0,56, + 30,0,48,15,0,96,15,128,192,7,128,128,3,193,128,3, + 195,0,1,227,0,0,246,0,0,252,0,0,124,0,0,56, + 0,0,56,0,0,56,0,0,56,0,0,56,0,0,56,0, + 0,56,0,0,56,0,0,56,0,0,124,0,1,255,0,18, + 23,69,19,1,0,255,128,0,62,0,0,28,0,0,28,0, + 0,28,0,0,31,252,0,28,31,0,28,7,128,28,3,128, + 28,3,192,28,1,192,28,1,192,28,1,192,28,3,192,28, + 3,128,28,7,128,28,31,0,31,252,0,28,0,0,28,0, + 0,28,0,0,62,0,0,255,128,0,15,23,46,17,1,0, + 7,192,12,112,24,56,24,56,56,56,56,56,56,56,56,56, + 56,48,56,96,57,192,56,120,56,28,56,30,56,14,56,14, + 56,14,56,14,56,14,59,12,59,156,59,152,249,240,13,23, + 46,15,1,0,24,0,28,0,14,0,3,0,1,128,0,192, + 0,0,0,0,31,128,49,192,112,224,112,224,96,224,3,224, + 14,224,24,224,48,224,96,224,224,224,225,224,242,232,126,248, + 60,112,13,23,46,15,1,0,0,192,1,192,3,128,6,0, + 12,0,24,0,0,0,0,0,31,128,49,192,112,224,112,224, + 96,224,3,224,14,224,24,224,48,224,96,224,224,224,225,224, + 242,232,126,248,60,112,13,23,46,15,1,0,6,0,15,0, + 31,128,57,192,96,96,64,32,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,21,42,15,1,0, + 28,16,62,48,99,224,65,192,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,21,42,15,1,0, + 56,224,56,224,56,224,0,0,0,0,0,0,31,128,49,192, + 112,224,112,224,96,224,3,224,14,224,24,224,48,224,96,224, + 224,224,225,224,242,232,126,248,60,112,13,23,46,15,1,0, + 7,0,15,128,24,192,16,64,24,192,15,128,7,0,0,0, + 31,128,49,192,112,224,112,224,96,224,3,224,14,224,24,224, + 48,224,96,224,224,224,225,224,242,232,126,248,60,112,19,15, + 45,22,1,0,31,159,0,49,249,192,112,224,192,112,224,224, + 96,224,224,3,255,224,14,224,0,24,224,0,48,224,0,96, + 224,0,224,224,32,225,240,96,243,120,192,126,63,128,60,31, + 0,12,22,44,15,1,249,15,128,56,192,112,224,96,224,224, + 96,192,0,192,0,192,0,192,0,224,0,224,16,112,48,124, + 96,63,192,15,0,4,0,12,0,15,0,3,128,1,128,3, + 128,31,0,12,23,46,15,1,0,48,0,56,0,28,0,6, + 0,3,0,1,128,0,0,0,0,15,128,57,192,96,224,96, + 112,192,112,255,240,192,0,192,0,192,0,224,0,224,16,112, + 48,124,96,63,192,15,0,12,23,46,15,1,0,1,128,3, + 128,7,0,12,0,24,0,48,0,0,0,0,0,15,128,57, + 192,96,224,96,112,192,112,255,240,192,0,192,0,192,0,224, + 0,224,16,112,48,124,96,63,192,15,0,12,23,46,15,1, + 0,6,0,15,0,31,128,57,192,96,96,64,32,0,0,0, + 0,15,128,57,192,96,224,96,112,192,112,255,240,192,0,192, + 0,192,0,224,0,224,16,112,48,124,96,63,192,15,0,12, + 21,42,15,1,0,56,224,56,224,56,224,0,0,0,0,0, + 0,15,128,57,192,96,224,96,112,192,112,255,240,192,0,192, + 0,192,0,224,0,224,16,112,48,124,96,63,192,15,0,7, + 23,23,9,1,0,192,224,112,24,12,6,0,0,24,248,56, + 56,56,56,56,56,56,56,56,56,56,56,254,7,23,23,9, + 1,0,6,14,28,48,96,192,0,0,24,248,56,56,56,56, + 56,56,56,56,56,56,56,56,254,10,23,46,9,0,0,12, + 0,30,0,63,0,115,128,192,192,128,64,0,0,0,0,12, + 0,124,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,127,0,9,21,42, + 9,0,0,227,128,227,128,227,128,0,0,0,0,0,0,12, + 0,124,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,127,0,14,23,46, + 17,1,0,16,0,56,0,28,112,15,240,15,0,127,128,49, + 192,0,224,7,240,24,240,48,120,112,56,96,60,224,28,224, + 28,224,28,224,28,224,28,112,24,112,56,56,48,28,96,7, + 128,16,21,42,16,0,0,14,8,31,24,49,240,32,224,0, + 0,0,0,24,240,251,248,62,60,60,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,254, + 127,14,23,46,16,1,0,24,0,28,0,14,0,3,0,1, + 128,0,192,0,0,0,0,7,128,24,224,48,112,112,56,96, + 56,224,28,224,28,224,28,224,28,224,28,112,24,112,56,56, + 48,28,96,7,128,14,23,46,16,1,0,0,192,1,192,3, + 128,6,0,12,0,24,0,0,0,0,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,112, + 24,112,56,56,48,28,96,7,128,14,23,46,16,1,0,3, + 0,7,128,15,192,28,224,48,48,32,16,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,14,21,42, + 16,1,0,28,16,62,48,99,224,65,192,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,14,21,42, + 16,1,0,56,224,56,224,56,224,0,0,0,0,0,0,7, + 128,24,224,48,112,112,56,96,56,224,28,224,28,224,28,224, + 28,224,28,112,24,112,56,56,48,28,96,7,128,16,17,34, + 19,1,0,1,128,3,192,3,192,1,128,0,0,0,0,0, + 0,255,255,255,255,0,0,0,0,0,0,0,0,1,128,3, + 192,3,192,1,128,14,21,42,17,1,253,0,24,0,16,0, + 48,7,160,24,224,48,240,112,184,97,184,225,28,225,28,227, + 28,226,28,230,28,116,24,116,56,60,48,28,96,31,128,48, + 0,32,0,96,0,16,23,46,17,0,0,12,0,14,0,7, + 0,1,128,0,192,0,96,0,0,0,0,248,124,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,60,60,124,31,223,15,152,16,23,46,17,0,0,0, + 96,0,224,1,192,3,0,6,0,12,0,0,0,0,0,248, + 124,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,60,60,124,31,223,15,152,16,23,46, + 17,0,0,1,128,3,192,7,224,14,112,24,24,16,8,0, + 0,0,0,248,124,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,60,60,124,31,223,15, + 152,16,21,42,17,0,0,28,112,28,112,28,112,0,0,0, + 0,0,0,248,124,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,60,60,124,31,223,15, + 152,15,30,60,17,0,249,0,24,0,56,0,112,0,192,1, + 128,3,0,0,0,0,0,254,30,120,12,56,12,60,8,28, + 24,30,24,14,16,14,48,7,32,7,32,3,224,3,192,1, + 192,1,128,1,128,1,128,1,0,3,0,2,0,62,0,124, + 0,56,0,15,30,60,17,0,249,24,0,248,0,56,0,56, + 0,56,0,56,0,56,0,56,0,57,240,59,248,62,124,60, + 28,56,30,56,14,56,14,56,14,56,14,56,14,56,12,56, + 28,60,24,62,48,59,224,56,0,56,0,56,0,56,0,56, + 0,56,0,255,0,15,28,56,17,1,249,28,112,28,112,28, + 112,0,0,0,0,0,0,254,30,120,12,56,12,60,8,28, + 24,30,24,14,16,14,48,7,32,7,32,3,224,3,192,1, + 192,1,128,1,128,1,0,1,0,3,0,2,0,62,0,124, + 0,56,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 0, '1' Height: 23 + Calculated Max Values w=16 h=26 x= 4 y=10 dx=19 dy= 0 ascent=23 len=52 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =23 descent= 0 + X Font ascent =23 descent= 0 + Max Font ascent =23 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24n[696] U8G_SECTION(".progmem.u8g_font_timR24n") = { + 0,38,48,251,245,23,0,0,0,0,42,57,0,23,253,23, + 0,12,13,26,17,2,10,6,0,15,0,6,0,198,48,246, + 240,118,224,15,0,118,224,246,240,198,48,6,0,15,0,6, + 0,16,16,32,19,1,1,1,128,1,128,1,128,1,128,1, + 128,1,128,1,128,255,255,255,255,1,128,1,128,1,128,1, + 128,1,128,1,128,1,128,4,7,7,8,2,253,96,240,240, + 112,16,32,64,8,2,2,11,1,7,255,255,4,4,4,8, + 2,0,96,240,240,96,10,26,52,9,0,253,0,192,0,192, + 1,128,1,128,3,128,3,0,3,0,3,0,6,0,6,0, + 6,0,14,0,12,0,12,0,28,0,24,0,24,0,24,0, + 48,0,48,0,48,0,112,0,96,0,96,0,192,0,192,0, + 14,23,46,16,1,0,7,128,28,224,56,112,48,48,112,56, + 112,56,96,24,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,24,112,56,112,56,48,48,56,112, + 28,224,7,128,9,23,46,16,4,0,12,0,28,0,124,0, + 220,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,15,23,46,16,0,0,7,224, + 15,240,28,248,48,60,32,60,96,28,64,28,0,28,0,28, + 0,24,0,56,0,48,0,96,0,96,0,192,1,128,3,0, + 6,0,12,2,24,6,63,252,127,248,255,248,12,23,46,16, + 2,0,15,128,63,192,97,224,192,224,128,224,0,224,0,192, + 0,192,1,128,3,0,7,192,31,224,1,240,0,112,0,112, + 0,48,0,48,0,48,0,112,0,96,224,192,243,128,127,0, + 14,23,46,16,1,0,0,96,0,224,0,224,1,224,1,96, + 3,96,6,96,4,96,12,96,24,96,16,96,48,96,96,96, + 64,96,255,252,255,252,255,252,0,96,0,96,0,96,0,96, + 0,96,0,96,13,23,46,16,1,0,15,248,31,240,31,224, + 16,0,48,0,32,0,126,0,127,128,127,192,7,224,1,224, + 0,240,0,112,0,112,0,48,0,48,0,48,0,48,0,96, + 0,96,224,192,243,128,126,0,14,23,46,16,1,0,0,120, + 1,192,3,128,15,0,30,0,28,0,56,0,120,0,112,0, + 115,192,247,240,248,120,224,56,224,60,224,28,224,28,224,28, + 224,28,112,28,112,24,56,56,28,96,7,192,14,23,46,16, + 1,0,63,252,127,252,96,24,192,24,128,56,0,48,0,48, + 0,48,0,96,0,96,0,96,0,224,0,192,0,192,1,192, + 1,128,1,128,1,128,3,0,3,0,3,0,7,0,6,0, + 13,23,46,16,2,0,31,128,56,224,112,112,224,48,224,48, + 224,48,224,112,240,96,124,192,63,0,31,128,15,192,27,224, + 113,240,96,240,224,120,192,120,192,56,192,56,224,56,96,112, + 112,224,31,192,14,23,46,16,1,0,7,128,24,224,48,112, + 112,56,96,56,224,28,224,28,224,28,224,28,224,28,240,28, + 112,28,120,60,62,252,15,184,0,56,0,112,0,112,0,224, + 1,192,3,128,15,0,120,0}; +/* + Fontname: -Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO10646-1 + Copyright: Copyright (c) 1984, 1987 Adobe Systems Incorporated. All Rights Reserved. Copyright (c) 1988, 1991 Digital Equipment Corporation. All Rights Reserved. + Capital A Height: 23, '1' Height: 23 + Calculated Max Values w=31 h=30 x= 4 y=17 dx=32 dy= 0 ascent=25 len=112 + Font Bounding box w=38 h=48 x=-5 y=-11 + Calculated Min Values x=-2 y=-7 dx= 0 dy= 0 + Pure Font ascent =23 descent=-7 + X Font ascent =23 descent=-7 + Max Font ascent =25 descent=-7 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_timR24r[4764] U8G_SECTION(".progmem.u8g_font_timR24r") = { + 0,38,48,251,245,23,5,140,13,213,32,127,249,25,249,23, + 249,0,0,0,8,0,1,4,23,23,11,3,0,96,240,240, + 240,240,240,96,96,96,96,96,96,96,96,96,96,96,0,0, + 96,240,240,96,9,7,14,14,2,16,227,128,227,128,227,128, + 227,128,65,0,65,0,65,0,16,23,46,17,0,0,6,24, + 6,24,6,24,6,24,6,24,6,24,6,24,6,24,127,255, + 127,255,12,48,12,48,12,48,12,48,255,254,255,254,24,96, + 24,96,24,96,24,96,24,96,24,96,24,96,13,28,56,16, + 2,253,2,0,2,0,15,192,58,112,50,56,98,24,98,8, + 98,8,114,0,122,0,62,0,63,0,31,128,7,192,3,224, + 2,240,2,112,2,56,2,56,130,24,130,24,194,56,226,48, + 114,96,31,192,2,0,2,0,2,0,23,23,69,27,2,0, + 15,0,64,29,131,192,56,252,128,112,65,128,112,67,0,224, + 66,0,224,70,0,224,196,0,192,140,0,193,136,0,193,24, + 120,102,16,236,60,49,198,0,99,130,0,67,130,0,199,2, + 0,135,2,1,135,6,1,6,4,3,6,12,2,6,8,6, + 3,48,4,1,224,23,23,69,26,2,0,0,248,0,1,140, + 0,3,14,0,3,6,0,7,6,0,7,6,0,7,12,0, + 7,140,0,3,152,0,3,241,252,3,192,112,7,192,96,29, + 224,64,56,240,192,112,112,128,96,121,128,224,63,0,224,30, + 0,224,15,0,240,31,130,120,51,252,127,225,248,31,128,240, + 3,8,8,6,1,15,224,224,224,224,64,64,64,64,8,28, + 28,11,2,251,3,6,12,24,56,48,112,112,96,224,224,224, + 224,224,224,224,224,224,224,96,112,112,48,56,24,12,6,3, + 8,28,28,11,1,251,192,96,48,24,28,12,14,14,6,7, + 7,7,7,7,7,7,7,7,7,6,14,14,12,28,24,48, + 96,192,12,13,26,17,2,10,6,0,15,0,6,0,198,48, + 246,240,118,224,15,0,118,224,246,240,198,48,6,0,15,0, + 6,0,16,16,32,19,1,1,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,255,255,255,255,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,4,7,7,8,2,253,96,240, + 240,112,16,32,64,8,2,2,11,1,7,255,255,4,4,4, + 8,2,0,96,240,240,96,10,26,52,9,0,253,0,192,0, + 192,1,128,1,128,3,128,3,0,3,0,3,0,6,0,6, + 0,6,0,14,0,12,0,12,0,28,0,24,0,24,0,24, + 0,48,0,48,0,48,0,112,0,96,0,96,0,192,0,192, + 0,14,23,46,16,1,0,7,128,28,224,56,112,48,48,112, + 56,112,56,96,24,224,28,224,28,224,28,224,28,224,28,224, + 28,224,28,224,28,224,28,224,24,112,56,112,56,48,48,56, + 112,28,224,7,128,9,23,46,16,4,0,12,0,28,0,124, + 0,220,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,62,0,255,128,15,23,46,16,0,0,7, + 224,15,240,28,248,48,60,32,60,96,28,64,28,0,28,0, + 28,0,24,0,56,0,48,0,96,0,96,0,192,1,128,3, + 0,6,0,12,2,24,6,63,252,127,248,255,248,12,23,46, + 16,2,0,15,128,63,192,97,224,192,224,128,224,0,224,0, + 192,0,192,1,128,3,0,7,192,31,224,1,240,0,112,0, + 112,0,48,0,48,0,48,0,112,0,96,224,192,243,128,127, + 0,14,23,46,16,1,0,0,96,0,224,0,224,1,224,1, + 96,3,96,6,96,4,96,12,96,24,96,16,96,48,96,96, + 96,64,96,255,252,255,252,255,252,0,96,0,96,0,96,0, + 96,0,96,0,96,13,23,46,16,1,0,15,248,31,240,31, + 224,16,0,48,0,32,0,126,0,127,128,127,192,7,224,1, + 224,0,240,0,112,0,112,0,48,0,48,0,48,0,48,0, + 96,0,96,224,192,243,128,126,0,14,23,46,16,1,0,0, + 120,1,192,3,128,15,0,30,0,28,0,56,0,120,0,112, + 0,115,192,247,240,248,120,224,56,224,60,224,28,224,28,224, + 28,224,28,112,28,112,24,56,56,28,96,7,192,14,23,46, + 16,1,0,63,252,127,252,96,24,192,24,128,56,0,48,0, + 48,0,48,0,96,0,96,0,96,0,224,0,192,0,192,1, + 192,1,128,1,128,1,128,3,0,3,0,3,0,7,0,6, + 0,13,23,46,16,2,0,31,128,56,224,112,112,224,48,224, + 48,224,48,224,112,240,96,124,192,63,0,31,128,15,192,27, + 224,113,240,96,240,224,120,192,120,192,56,192,56,224,56,96, + 112,112,224,31,192,14,23,46,16,1,0,7,128,24,224,48, + 112,112,56,96,56,224,28,224,28,224,28,224,28,224,28,240, + 28,112,28,120,60,62,252,15,184,0,56,0,112,0,112,0, + 224,1,192,3,128,15,0,120,0,4,15,15,9,2,0,96, + 240,240,96,0,0,0,0,0,0,0,96,240,240,96,4,18, + 18,9,2,253,96,240,240,96,0,0,0,0,0,0,0,96, + 240,240,112,16,32,64,16,18,36,19,1,0,0,1,0,7, + 0,31,0,124,1,240,7,192,31,0,124,0,240,0,240,0, + 124,0,31,0,7,192,1,240,0,124,0,31,0,7,0,1, + 16,9,18,19,1,4,255,255,255,255,0,0,0,0,0,0, + 0,0,0,0,255,255,255,255,16,18,36,19,2,0,128,0, + 224,0,248,0,62,0,15,128,3,224,0,248,0,62,0,15, + 0,15,0,62,0,248,3,224,15,128,62,0,248,0,224,0, + 128,0,11,23,46,14,2,0,31,0,115,128,193,192,193,192, + 224,224,224,224,96,224,1,192,1,192,1,128,3,128,3,0, + 6,0,4,0,12,0,8,0,8,0,0,0,0,0,12,0, + 30,0,30,0,12,0,27,28,112,31,2,251,0,31,240,0, + 0,248,60,0,1,224,6,0,7,128,3,0,14,0,1,128, + 28,0,0,192,28,0,0,192,56,7,140,96,112,31,92,96, + 112,28,124,32,112,56,56,32,224,112,56,32,224,112,48,32, + 224,112,112,32,224,224,112,96,224,224,112,64,224,224,224,192, + 224,224,224,128,112,225,225,128,112,119,115,0,112,60,62,0, + 56,0,0,0,24,0,0,0,28,0,0,0,14,0,0,0, + 7,128,6,0,1,240,60,0,0,127,240,0,22,23,69,24, + 1,0,0,48,0,0,48,0,0,112,0,0,120,0,0,120, + 0,0,252,0,0,220,0,0,156,0,1,142,0,1,14,0, + 3,15,0,3,7,0,2,7,0,6,7,128,6,3,128,15, + 255,192,12,3,192,24,1,192,24,1,224,48,1,224,48,0, + 240,112,0,240,252,3,252,20,23,69,22,1,0,255,254,0, + 62,15,128,28,3,192,28,1,192,28,1,224,28,0,224,28, + 0,224,28,1,224,28,1,192,28,3,192,28,15,128,31,254, + 0,28,7,128,28,1,224,28,0,224,28,0,240,28,0,112, + 28,0,112,28,0,240,28,0,224,28,1,224,62,7,192,255, + 255,0,20,23,69,22,1,0,1,255,16,7,131,240,14,0, + 240,28,0,112,56,0,48,56,0,48,112,0,16,112,0,16, + 240,0,0,240,0,0,240,0,0,240,0,0,240,0,0,240, + 0,0,240,0,0,112,0,0,112,0,0,56,0,0,56,0, + 16,28,0,48,14,0,96,7,131,192,1,255,0,22,23,69, + 24,1,0,255,254,0,62,7,128,28,1,192,28,0,224,28, + 0,112,28,0,112,28,0,56,28,0,56,28,0,60,28,0, + 60,28,0,60,28,0,60,28,0,60,28,0,60,28,0,60, + 28,0,56,28,0,56,28,0,112,28,0,112,28,0,224,28, + 1,192,62,7,128,255,254,0,19,23,69,20,1,0,255,255, + 192,62,3,192,28,0,192,28,0,64,28,0,64,28,0,0, + 28,0,0,28,0,0,28,1,0,28,1,0,28,3,0,31, + 255,0,28,3,0,28,1,0,28,1,0,28,0,0,28,0, + 0,28,0,32,28,0,32,28,0,96,28,0,192,62,3,192, + 255,255,192,17,23,69,18,1,0,255,255,128,62,7,128,28, + 1,128,28,0,128,28,0,128,28,0,0,28,0,0,28,0, + 0,28,2,0,28,2,0,28,6,0,31,254,0,28,6,0, + 28,2,0,28,2,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,62,0,0,255,128,0,22,23, + 69,24,1,0,1,255,48,7,135,240,14,0,240,28,0,112, + 56,0,48,56,0,48,112,0,16,112,0,0,240,0,0,240, + 0,0,240,0,0,240,3,252,240,0,248,240,0,112,240,0, + 112,112,0,112,112,0,112,56,0,112,56,0,112,28,0,112, + 14,0,112,7,129,224,1,255,128,22,23,69,24,1,0,255, + 135,252,62,1,240,28,0,224,28,0,224,28,0,224,28,0, + 224,28,0,224,28,0,224,28,0,224,28,0,224,28,0,224, + 31,255,224,28,0,224,28,0,224,28,0,224,28,0,224,28, + 0,224,28,0,224,28,0,224,28,0,224,28,0,224,62,1, + 240,255,135,252,9,23,46,11,1,0,255,128,62,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,62,0,255,128,12,23,46,13,1,0,31,240, + 7,192,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,3,128,3,128,3,128,3,128,3,128,3,128, + 3,128,3,128,195,128,227,0,231,0,124,0,23,23,69,24, + 1,0,255,199,248,62,1,224,28,1,128,28,3,0,28,6, + 0,28,12,0,28,24,0,28,48,0,28,96,0,28,192,0, + 31,192,0,31,224,0,31,240,0,30,120,0,28,60,0,28, + 30,0,28,15,0,28,7,128,28,3,192,28,1,224,28,0, + 240,62,0,248,255,199,254,19,23,69,20,1,0,255,128,0, + 62,0,0,28,0,0,28,0,0,28,0,0,28,0,0,28, + 0,0,28,0,0,28,0,0,28,0,0,28,0,0,28,0, + 0,28,0,0,28,0,0,28,0,0,28,0,0,28,0,0, + 28,0,32,28,0,32,28,0,96,28,0,192,62,3,192,255, + 255,192,28,23,92,30,1,0,252,0,7,240,62,0,7,192, + 30,0,15,128,31,0,15,128,31,0,11,128,23,0,27,128, + 23,128,27,128,19,128,51,128,19,192,51,128,19,192,35,128, + 17,224,99,128,17,224,99,128,16,224,195,128,16,240,195,128, + 16,112,131,128,16,121,131,128,16,121,3,128,16,61,3,128, + 16,63,3,128,16,30,3,128,16,30,3,128,56,12,7,192, + 254,12,31,240,22,23,69,24,1,0,248,1,252,60,0,112, + 30,0,32,31,0,32,31,0,32,23,128,32,19,192,32,19, + 192,32,17,224,32,16,240,32,16,248,32,16,120,32,16,60, + 32,16,30,32,16,31,32,16,15,32,16,7,160,16,3,224, + 16,1,224,16,1,224,16,0,224,56,0,96,254,0,32,22, + 23,69,24,1,0,1,254,0,7,135,128,14,1,192,28,0, + 224,56,0,112,56,0,112,112,0,56,112,0,56,240,0,60, + 240,0,60,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,112,0,56,112,0,56,56,0,112,56,0,112,28,0, + 224,14,1,192,7,135,128,1,254,0,17,23,69,18,1,0, + 255,248,0,60,62,0,28,15,0,28,7,0,28,7,128,28, + 3,128,28,3,128,28,3,128,28,7,128,28,7,0,28,15, + 0,28,62,0,31,240,0,28,0,0,28,0,0,28,0,0, + 28,0,0,28,0,0,28,0,0,28,0,0,28,0,0,62, + 0,0,255,128,0,22,29,87,24,1,250,1,254,0,7,135, + 128,14,1,192,28,0,224,56,0,112,56,0,112,112,0,56, + 112,0,56,240,0,60,240,0,60,240,0,60,240,0,60,240, + 0,60,240,0,60,240,0,60,112,0,56,112,0,56,56,0, + 112,56,0,112,28,0,224,14,1,192,7,135,128,1,254,0, + 0,124,0,0,62,0,0,31,0,0,15,128,0,3,224,0, + 0,124,21,23,69,22,1,0,255,248,0,60,62,0,28,15, + 0,28,7,128,28,7,128,28,3,128,28,3,128,28,3,128, + 28,7,128,28,7,0,28,30,0,31,248,0,28,240,0,28, + 120,0,28,60,0,28,60,0,28,30,0,28,15,0,28,15, + 128,28,7,128,28,3,192,62,1,224,255,129,248,15,23,46, + 18,1,0,7,228,28,60,56,28,112,12,112,4,112,6,120, + 0,124,0,62,0,31,128,15,224,7,240,1,248,0,124,0, + 62,0,30,128,14,128,14,192,14,224,12,112,28,124,120,103, + 240,19,23,69,20,1,0,255,255,224,240,225,224,192,224,96, + 192,224,96,128,224,32,128,224,32,0,224,0,0,224,0,0, + 224,0,0,224,0,0,224,0,0,224,0,0,224,0,0,224, + 0,0,224,0,0,224,0,0,224,0,0,224,0,0,224,0, + 0,224,0,0,224,0,1,240,0,7,252,0,22,23,69,24, + 1,0,255,129,252,62,0,112,28,0,32,28,0,32,28,0, + 32,28,0,32,28,0,32,28,0,32,28,0,32,28,0,32, + 28,0,32,28,0,32,28,0,32,28,0,32,28,0,32,28, + 0,32,28,0,32,28,0,32,30,0,96,14,0,64,15,0, + 192,7,195,128,1,254,0,22,23,69,23,1,0,255,1,252, + 124,0,112,60,0,96,30,0,64,30,0,192,14,0,192,15, + 0,128,15,1,128,7,1,128,7,129,0,3,131,0,3,195, + 0,3,194,0,1,198,0,1,230,0,0,228,0,0,236,0, + 0,124,0,0,120,0,0,120,0,0,56,0,0,48,0,0, + 16,0,31,23,92,32,1,0,255,63,224,254,124,15,128,120, + 60,7,0,48,28,7,128,48,30,7,128,96,30,3,128,96, + 14,3,192,96,15,3,192,192,7,3,224,192,7,135,224,192, + 7,134,225,128,3,132,241,128,3,204,241,128,3,204,115,0, + 1,216,123,0,1,216,59,0,1,248,62,0,0,240,62,0, + 0,240,28,0,0,224,28,0,0,96,28,0,0,96,8,0, + 0,64,8,0,22,23,69,24,1,0,255,195,252,63,0,240, + 31,0,224,15,0,192,7,129,128,7,131,0,3,198,0,1, + 230,0,1,236,0,0,248,0,0,120,0,0,120,0,0,124, + 0,0,222,0,1,158,0,1,143,0,3,15,128,6,7,128, + 14,3,192,12,3,224,24,1,224,56,1,240,254,7,252,22, + 23,69,24,1,0,255,192,252,63,0,56,30,0,48,15,0, + 96,15,128,192,7,128,128,3,193,128,3,195,0,1,227,0, + 0,246,0,0,252,0,0,124,0,0,56,0,0,56,0,0, + 56,0,0,56,0,0,56,0,0,56,0,0,56,0,0,56, + 0,0,56,0,0,124,0,1,255,0,19,23,69,20,1,0, + 63,255,224,56,3,192,96,7,128,96,7,128,64,15,0,64, + 30,0,0,30,0,0,60,0,0,120,0,0,120,0,0,240, + 0,1,224,0,1,224,0,3,192,0,3,192,0,7,128,0, + 15,0,0,15,0,32,30,0,32,60,0,96,60,0,96,120, + 1,192,255,255,192,7,28,28,11,3,251,254,240,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,224,224,240,254,13,23,46,9,254,0,192,0,224, + 0,96,0,112,0,48,0,56,0,24,0,28,0,12,0,14, + 0,6,0,7,0,3,0,3,128,1,128,1,192,0,192,0, + 224,0,96,0,112,0,48,0,56,0,24,7,28,28,11,1, + 251,254,30,14,14,14,14,14,14,14,14,14,14,14,14,14, + 14,14,14,14,14,14,14,14,14,14,14,30,254,13,13,26, + 16,1,10,7,0,7,0,15,128,13,128,24,192,24,192,48, + 96,48,96,112,112,96,48,224,56,192,24,192,24,17,2,6, + 17,0,251,255,255,128,255,255,128,7,6,6,11,1,17,192, + 224,112,24,12,6,13,15,30,15,1,0,31,128,49,192,112, + 224,112,224,96,224,3,224,14,224,24,224,48,224,96,224,224, + 224,225,224,242,232,126,248,60,112,15,23,46,16,0,0,24, + 0,248,0,56,0,56,0,56,0,56,0,56,0,56,0,57, + 240,59,248,60,124,56,28,56,30,56,14,56,14,56,14,56, + 14,56,14,56,12,56,28,56,24,60,112,15,224,12,15,30, + 15,1,0,15,128,56,192,112,224,96,224,224,96,192,0,192, + 0,192,0,192,0,224,0,224,16,112,48,124,96,63,192,31, + 0,15,23,46,16,1,0,0,24,0,248,0,56,0,56,0, + 56,0,56,0,56,0,56,15,184,24,248,48,120,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,190,15,48,12,15,30,15,1,0,15,128,57,192,96, + 224,96,112,192,112,255,240,192,0,192,0,192,0,224,0,224, + 16,112,48,124,96,63,192,15,0,12,23,46,11,0,0,3, + 224,6,112,12,112,12,48,28,0,28,0,28,0,28,0,255, + 192,28,0,28,0,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,62,0,255,128,14,22,44, + 16,1,249,15,192,24,252,48,124,112,48,112,48,112,48,112, + 48,56,112,28,224,15,128,24,0,48,0,120,0,127,224,63, + 248,31,252,96,12,192,12,192,28,240,56,127,224,31,128,16, + 23,46,16,0,0,24,0,248,0,56,0,56,0,56,0,56, + 0,56,0,56,0,57,240,59,248,62,60,60,28,56,28,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,254,127,7,23,23,9,1,0,56,56,56,0,0,0,0, + 0,56,248,56,56,56,56,56,56,56,56,56,56,56,56,254, + 8,30,30,9,255,249,7,7,7,0,0,0,0,0,3,31, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, + 6,198,236,120,16,23,46,16,0,0,24,0,248,0,56,0, + 56,0,56,0,56,0,56,0,56,0,56,254,56,112,56,96, + 56,192,57,128,63,0,62,0,63,0,59,128,57,192,56,224, + 56,240,56,120,56,60,254,127,7,23,23,9,1,0,24,248, + 56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, + 56,56,56,56,254,25,15,60,26,0,0,24,240,120,0,251, + 249,252,0,62,63,30,0,60,30,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,56,28,14,0,56,28,14,0,56,28,14,0,56, + 28,14,0,254,127,63,128,16,15,30,16,0,0,24,240,251, + 248,60,60,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,28,56,28,56,28,254,127,14,15,30,16,1, + 0,7,128,24,224,48,112,112,56,96,56,224,28,224,28,224, + 28,224,28,224,28,112,24,112,56,56,48,28,96,7,128,15, + 22,44,17,0,249,25,224,251,248,60,124,56,28,56,30,56, + 14,56,14,56,14,56,14,56,14,56,12,56,28,60,24,62, + 112,59,192,56,0,56,0,56,0,56,0,56,0,56,0,255, + 0,15,22,44,17,1,249,15,200,28,120,48,56,112,56,96, + 56,224,56,224,56,224,56,224,56,224,56,240,56,112,120,120, + 248,63,184,31,56,0,56,0,56,0,56,0,56,0,56,0, + 56,1,254,10,15,30,11,1,0,25,128,251,192,63,192,60, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,0,56,0,254,0,10,15,30,13,1,0,62,128,99, + 128,193,128,192,128,224,128,240,0,124,0,63,0,15,128,3, + 192,129,192,128,192,192,192,225,128,191,0,9,19,38,9,0, + 0,8,0,8,0,24,0,56,0,255,0,56,0,56,0,56, + 0,56,0,56,0,56,0,56,0,56,0,56,0,56,0,56, + 0,56,128,63,0,28,0,16,15,30,17,0,0,248,124,56, + 28,56,28,56,28,56,28,56,28,56,28,56,28,56,28,56, + 28,56,28,56,60,60,92,31,223,15,140,15,15,30,17,1, + 0,254,62,120,12,56,8,60,24,28,24,28,16,14,48,14, + 32,7,96,7,64,7,192,3,192,3,128,1,128,1,0,21, + 15,45,24,1,0,253,252,120,112,112,48,112,112,48,56,48, + 32,56,56,96,24,56,64,28,120,64,28,92,192,12,204,128, + 14,143,128,15,143,0,7,7,0,7,7,0,3,6,0,2, + 2,0,14,15,30,17,1,0,252,248,56,96,60,192,28,128, + 30,128,15,0,7,0,7,128,15,128,11,192,25,224,16,224, + 48,112,96,120,240,252,15,22,44,17,1,249,254,30,120,12, + 56,12,60,8,28,24,30,24,14,16,14,48,7,32,7,32, + 3,224,3,192,1,192,1,128,1,128,1,0,1,0,3,0, + 2,0,62,0,124,0,56,0,13,15,30,15,1,0,127,240, + 96,240,64,224,65,224,3,192,3,128,7,128,7,0,14,0, + 30,0,28,8,56,8,120,8,112,24,255,240,8,28,28,16, + 4,251,15,28,56,56,56,56,56,56,56,56,56,56,56,48, + 224,48,56,56,56,56,56,56,56,56,56,24,28,15,2,23, + 23,7,2,0,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,8,28,28,16,4, + 251,240,56,28,28,28,28,28,28,28,28,28,28,28,12,7, + 12,28,28,28,28,28,28,28,28,28,24,56,240,16,4,8, + 18,1,7,62,3,127,135,225,254,192,124,255}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=11 h=13 x= 1 y=10 dx=12 dy= 0 ascent=13 len=18 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssb[2656] U8G_SECTION(".progmem.u8g_font_tpssb") = { + 0,11,17,0,252,9,1,205,3,159,32,255,252,13,252,9, + 252,0,0,0,4,0,0,2,9,9,4,1,0,192,192,192, + 192,192,192,0,192,192,5,2,2,7,1,7,216,216,5,5, + 5,7,1,0,80,248,80,248,80,7,9,9,9,1,0,124, + 146,144,124,18,18,146,146,124,8,9,9,10,1,0,198,204, + 12,24,24,24,48,51,99,9,9,18,11,1,0,124,0,198, + 0,198,0,124,0,198,0,198,0,198,0,199,128,62,0,2, + 2,2,4,1,7,192,192,5,9,9,7,1,0,24,48,96, + 96,224,96,96,48,24,5,9,9,7,1,0,192,96,48,48, + 56,48,48,96,192,5,7,7,7,1,1,32,168,112,32,112, + 168,32,6,6,6,8,1,1,48,48,252,252,48,48,3,2, + 2,5,1,255,96,192,5,2,2,7,1,3,248,248,2,1, + 1,4,1,0,192,6,9,9,8,1,0,12,24,24,48,48, + 48,96,96,192,6,9,9,7,0,0,120,204,204,204,204,204, + 204,204,120,6,9,9,7,0,0,48,112,240,48,48,48,48, + 48,252,6,9,9,7,0,0,120,204,204,12,24,48,96,192, + 252,6,9,9,7,0,0,120,204,12,56,12,12,12,204,120, + 6,9,9,7,0,0,12,204,204,252,12,12,12,12,12,6, + 9,9,7,0,0,252,192,192,248,12,12,12,204,120,6,9, + 9,7,0,0,120,204,192,248,204,204,204,204,120,6,9,9, + 7,0,0,252,12,24,48,96,96,96,96,96,6,9,9,7, + 0,0,120,204,204,120,204,204,204,204,120,6,9,9,7,0, + 0,120,204,204,204,124,12,12,204,120,2,4,4,4,1,0, + 192,0,0,192,3,5,5,5,1,255,96,0,0,96,192,6, + 9,9,8,1,0,12,24,48,96,192,96,48,24,12,6,5, + 5,8,1,1,252,252,0,252,252,6,9,9,8,1,0,192, + 96,48,24,12,24,48,96,192,6,9,9,8,1,0,120,204, + 12,24,48,48,0,48,48,10,8,16,12,1,0,63,0,64, + 128,204,192,210,192,210,128,205,0,64,64,63,128,6,9,9, + 7,0,0,120,204,204,252,204,204,204,204,204,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,248,6,9,9,7,0, + 0,120,204,192,192,192,192,192,204,120,6,9,9,7,0,0, + 248,204,204,204,204,204,204,204,248,6,9,9,7,0,0,252, + 192,192,248,192,192,192,192,252,6,9,9,7,0,0,252,192, + 192,248,192,192,192,192,192,6,9,9,7,0,0,120,204,192, + 220,204,204,204,204,120,6,9,9,7,0,0,204,204,204,252, + 204,204,204,204,204,2,9,9,3,0,0,192,192,192,192,192, + 192,192,192,192,6,9,9,7,0,0,12,12,12,12,12,12, + 12,204,120,6,9,9,7,0,0,204,204,216,240,224,240,216, + 204,204,6,9,9,7,0,0,192,192,192,192,192,192,192,192, + 252,7,9,9,9,1,0,130,238,254,146,130,130,130,130,130, + 6,9,9,7,0,0,204,236,252,220,204,204,204,204,204,6, + 9,9,7,0,0,120,204,204,204,204,204,204,204,120,6,9, + 9,7,0,0,248,204,204,248,192,192,192,192,192,7,9,9, + 8,0,0,124,130,130,130,130,146,146,146,124,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,204,6,9,9,7,0, + 0,120,204,192,120,12,12,204,204,120,6,9,9,7,0,0, + 252,48,48,48,48,48,48,48,48,6,9,9,7,0,0,204, + 204,204,204,204,204,204,204,120,7,9,9,8,0,0,198,198, + 198,108,108,108,56,56,56,9,9,18,11,1,0,128,128,128, + 128,128,128,105,128,105,128,105,128,127,0,127,0,127,0,6, + 9,9,7,0,0,204,204,120,48,48,120,204,204,204,6,9, + 9,7,0,0,204,204,120,48,48,48,48,48,48,6,9,9, + 7,0,0,252,12,12,24,48,96,192,192,252,4,9,9,6, + 1,0,240,192,192,192,192,192,192,192,240,6,7,7,8,1, + 0,192,96,96,48,24,24,12,4,9,9,6,1,0,240,48, + 48,48,48,48,48,48,240,4,2,2,6,1,10,96,144,6, + 2,2,8,1,0,252,252,2,2,2,4,1,10,64,128,6, + 6,6,7,0,0,120,204,204,204,204,124,6,9,9,7,0, + 0,192,192,192,248,204,204,204,204,120,6,6,6,7,0,0, + 120,204,192,192,204,120,6,9,9,7,0,0,12,12,12,124, + 204,204,204,204,124,6,6,6,7,0,0,120,204,252,192,204, + 120,6,9,9,7,0,0,56,108,96,240,96,96,96,96,96, + 6,10,10,7,0,252,120,204,204,204,204,124,12,12,204,120, + 6,9,9,7,0,0,192,192,192,248,236,204,204,204,204,2, + 9,9,3,0,0,192,192,0,192,192,192,192,192,192,3,13, + 13,4,0,252,96,96,0,96,96,96,96,96,96,96,96,96, + 192,6,9,9,7,0,0,192,192,192,216,240,224,240,216,204, + 2,9,9,3,0,0,192,192,192,192,192,192,192,192,192,7, + 6,6,9,1,0,254,146,146,146,146,146,6,6,6,7,0, + 0,248,236,204,204,204,204,6,6,6,7,0,0,120,204,204, + 204,204,120,6,10,10,7,0,252,120,204,204,204,204,248,192, + 192,192,192,7,10,10,7,0,252,124,204,204,204,204,124,12, + 30,12,12,5,6,6,6,0,0,248,240,192,192,192,192,6, + 6,6,7,0,0,120,224,120,12,204,120,5,9,9,6,0, + 0,96,96,96,248,96,96,96,96,96,6,6,6,7,0,0, + 204,204,204,204,204,120,6,6,6,7,0,0,204,204,120,120, + 48,48,9,6,12,10,0,0,128,128,128,128,107,0,107,0, + 127,0,127,0,6,6,6,7,0,0,204,120,48,48,120,204, + 6,10,10,7,0,252,204,204,204,204,204,124,12,12,204,120, + 6,6,6,7,0,0,124,204,24,48,96,252,6,9,9,8, + 1,0,12,24,48,48,240,48,48,24,12,2,9,9,4,1, + 0,192,192,192,192,192,192,192,192,192,6,9,9,8,1,0, + 192,96,48,48,28,48,48,96,192,5,2,2,6,0,10,232, + 184,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,2,9,9,3,0,0,192,192,0,192,192,192,192, + 192,192,5,7,7,7,1,0,32,112,168,160,168,112,32,6, + 9,9,7,0,0,192,192,248,192,192,192,204,204,252,5,5, + 5,7,1,1,136,112,80,112,136,6,9,9,8,1,0,204, + 204,120,48,48,120,48,120,48,2,9,9,4,1,0,192,192, + 192,0,0,0,192,192,192,8,10,10,10,1,0,124,192,126, + 195,126,3,3,3,195,62,5,1,1,7,1,3,216,9,7, + 14,11,1,0,62,0,65,0,221,128,209,128,221,128,65,0, + 62,0,7,8,8,9,1,0,120,204,204,204,204,126,0,254, + 7,3,3,9,1,2,102,204,102,5,3,3,7,1,1,248, + 248,24,255,9,7,14,11,1,0,62,0,65,0,221,128,209, + 128,209,128,65,0,62,0,5,1,1,6,0,6,248,3,3, + 3,5,1,2,224,160,224,5,7,7,7,1,0,32,32,248, + 32,32,0,248,255,255,255,255,255,255,255,255,255,7,3,3, + 9,1,2,204,102,204,255,255,255,255,6,12,12,7,0,0, + 96,48,0,120,204,204,252,204,204,204,204,204,6,12,12,7, + 0,0,24,48,0,120,204,204,252,204,204,204,204,204,6,12, + 12,7,0,0,48,72,0,120,204,204,252,204,204,204,204,204, + 6,12,12,7,0,0,232,184,0,120,204,204,252,204,204,204, + 204,204,6,11,11,7,0,0,72,0,120,204,204,252,204,204, + 204,204,204,6,13,13,7,0,0,48,72,48,0,120,204,204, + 252,204,204,204,204,204,11,9,18,12,0,0,127,224,206,0, + 206,0,255,192,206,0,206,0,206,0,206,0,207,224,6,11, + 11,7,0,254,120,204,192,192,192,192,192,204,120,48,96,6, + 12,12,7,0,0,96,48,0,252,192,192,248,192,192,192,192, + 252,6,12,12,7,0,0,24,48,0,252,192,192,248,192,192, + 192,192,252,6,12,12,7,0,0,48,72,0,252,192,192,248, + 192,192,192,192,252,6,11,11,7,0,0,204,0,252,192,192, + 248,192,192,192,192,252,3,12,12,4,0,0,192,96,0,96, + 96,96,96,96,96,96,96,96,3,12,12,4,0,0,96,192, + 0,192,192,192,192,192,192,192,192,192,4,12,12,5,0,0, + 96,144,0,96,96,96,96,96,96,96,96,96,6,11,11,7, + 0,0,204,0,48,48,48,48,48,48,48,48,48,6,9,9, + 7,0,0,248,204,204,236,204,204,204,204,248,6,12,12,7, + 0,0,232,184,0,204,236,252,220,204,204,204,204,204,6,12, + 12,7,0,0,96,48,0,120,204,204,204,204,204,204,204,120, + 6,12,12,7,0,0,24,48,0,120,204,204,204,204,204,204, + 204,120,6,12,12,7,0,0,48,72,0,120,204,204,204,204, + 204,204,204,120,6,12,12,7,0,0,232,184,0,120,204,204, + 204,204,204,204,204,120,6,11,11,7,0,0,204,0,120,204, + 204,204,204,204,204,204,120,3,3,3,6,1,2,160,64,160, + 6,9,9,7,0,0,120,204,220,220,236,236,236,204,120,6, + 12,12,7,0,0,96,48,0,204,204,204,204,204,204,204,204, + 120,6,12,12,7,0,0,24,48,0,204,204,204,204,204,204, + 204,204,120,6,12,12,7,0,0,48,72,0,204,204,204,204, + 204,204,204,204,120,6,11,11,7,0,0,204,0,204,204,204, + 204,204,204,204,204,120,6,12,12,7,0,0,24,48,0,204, + 204,120,48,48,48,48,48,48,7,9,9,8,0,0,192,192, + 252,198,252,192,192,192,192,7,11,11,8,0,254,252,198,220, + 198,198,198,220,192,192,192,192,6,9,9,7,0,0,96,48, + 0,120,204,204,204,204,124,6,9,9,7,0,0,24,48,0, + 120,204,204,204,204,124,6,9,9,7,0,0,48,72,0,120, + 204,204,204,204,124,6,9,9,7,0,0,232,184,0,120,204, + 204,204,204,124,6,8,8,7,0,0,204,0,120,204,204,204, + 204,124,6,10,10,7,0,0,48,72,48,0,120,204,204,204, + 204,124,9,6,12,11,1,0,127,128,136,128,143,128,136,0, + 136,128,127,128,6,8,8,7,0,254,120,204,192,192,204,120, + 48,96,6,9,9,7,0,0,96,48,0,120,204,252,192,204, + 120,6,9,9,7,0,0,24,48,0,120,204,252,192,204,120, + 6,9,9,7,0,0,48,72,0,120,204,252,192,204,120,6, + 8,8,7,0,0,204,0,120,204,252,192,204,120,3,12,12, + 4,0,0,192,96,0,96,96,96,96,96,96,96,96,96,3, + 12,12,4,0,0,96,192,0,192,192,192,192,192,192,192,192, + 192,4,12,12,5,0,0,96,144,0,96,96,96,96,96,96, + 96,96,96,6,11,11,7,0,0,204,0,48,48,48,48,48, + 48,48,48,48,6,9,9,7,0,0,12,60,12,124,204,204, + 204,204,124,6,9,9,7,0,0,232,184,0,248,236,204,204, + 204,204,6,9,9,7,0,0,96,48,0,120,204,204,204,204, + 120,6,9,9,7,0,0,24,48,0,120,204,204,204,204,120, + 6,9,9,7,0,0,48,72,0,120,204,204,204,204,120,6, + 9,9,7,0,0,232,184,0,120,204,204,204,204,120,6,8, + 8,7,0,0,204,0,120,204,204,204,204,120,6,6,6,7, + 0,1,48,0,252,252,0,48,6,6,6,7,0,0,120,220, + 220,236,236,120,6,9,9,7,0,0,96,48,0,204,204,204, + 204,204,120,6,9,9,7,0,0,24,48,0,204,204,204,204, + 204,120,6,9,9,7,0,0,48,72,0,204,204,204,204,204, + 120,6,8,8,7,0,0,204,0,204,204,204,204,204,120,6, + 13,13,7,0,252,24,48,0,204,204,204,204,204,124,12,12, + 204,120,6,6,6,7,0,0,192,248,204,248,192,192,6,12, + 12,7,0,252,204,0,204,204,204,204,204,124,12,12,204,120 + }; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 6 h= 9 x= 1 y= 3 dx= 8 dy= 0 ascent= 9 len= 9 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssbn[230] U8G_SECTION(".progmem.u8g_font_tpssbn") = { + 0,11,17,0,252,9,0,0,0,0,42,57,0,9,255,9, + 0,5,7,7,7,1,1,32,168,112,32,112,168,32,6,6, + 6,8,1,1,48,48,252,252,48,48,3,2,2,5,1,255, + 96,192,5,2,2,7,1,3,248,248,2,1,1,4,1,0, + 192,6,9,9,8,1,0,12,24,24,48,48,48,96,96,192, + 6,9,9,7,0,0,120,204,204,204,204,204,204,204,120,6, + 9,9,7,0,0,48,112,240,48,48,48,48,48,252,6,9, + 9,7,0,0,120,204,204,12,24,48,96,192,252,6,9,9, + 7,0,0,120,204,12,56,12,12,12,204,120,6,9,9,7, + 0,0,12,204,204,252,12,12,12,12,12,6,9,9,7,0, + 0,252,192,192,248,12,12,12,204,120,6,9,9,7,0,0, + 120,204,192,248,204,204,204,204,120,6,9,9,7,0,0,252, + 12,24,48,96,96,96,96,96,6,9,9,7,0,0,120,204, + 204,120,204,204,204,204,120,6,9,9,7,0,0,120,204,204, + 204,124,12,12,204,120}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif Bold-Medium-R-Normal--8-80-72-72-P-61-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w=10 h=13 x= 1 y=10 dx=12 dy= 0 ascent=12 len=18 + Font Bounding box w=11 h=17 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssbr[1346] U8G_SECTION(".progmem.u8g_font_tpssbr") = { + 0,11,17,0,252,9,1,205,3,159,32,127,252,12,252,9, + 252,0,0,0,4,0,0,2,9,9,4,1,0,192,192,192, + 192,192,192,0,192,192,5,2,2,7,1,7,216,216,5,5, + 5,7,1,0,80,248,80,248,80,7,9,9,9,1,0,124, + 146,144,124,18,18,146,146,124,8,9,9,10,1,0,198,204, + 12,24,24,24,48,51,99,9,9,18,11,1,0,124,0,198, + 0,198,0,124,0,198,0,198,0,198,0,199,128,62,0,2, + 2,2,4,1,7,192,192,5,9,9,7,1,0,24,48,96, + 96,224,96,96,48,24,5,9,9,7,1,0,192,96,48,48, + 56,48,48,96,192,5,7,7,7,1,1,32,168,112,32,112, + 168,32,6,6,6,8,1,1,48,48,252,252,48,48,3,2, + 2,5,1,255,96,192,5,2,2,7,1,3,248,248,2,1, + 1,4,1,0,192,6,9,9,8,1,0,12,24,24,48,48, + 48,96,96,192,6,9,9,7,0,0,120,204,204,204,204,204, + 204,204,120,6,9,9,7,0,0,48,112,240,48,48,48,48, + 48,252,6,9,9,7,0,0,120,204,204,12,24,48,96,192, + 252,6,9,9,7,0,0,120,204,12,56,12,12,12,204,120, + 6,9,9,7,0,0,12,204,204,252,12,12,12,12,12,6, + 9,9,7,0,0,252,192,192,248,12,12,12,204,120,6,9, + 9,7,0,0,120,204,192,248,204,204,204,204,120,6,9,9, + 7,0,0,252,12,24,48,96,96,96,96,96,6,9,9,7, + 0,0,120,204,204,120,204,204,204,204,120,6,9,9,7,0, + 0,120,204,204,204,124,12,12,204,120,2,4,4,4,1,0, + 192,0,0,192,3,5,5,5,1,255,96,0,0,96,192,6, + 9,9,8,1,0,12,24,48,96,192,96,48,24,12,6,5, + 5,8,1,1,252,252,0,252,252,6,9,9,8,1,0,192, + 96,48,24,12,24,48,96,192,6,9,9,8,1,0,120,204, + 12,24,48,48,0,48,48,10,8,16,12,1,0,63,0,64, + 128,204,192,210,192,210,128,205,0,64,64,63,128,6,9,9, + 7,0,0,120,204,204,252,204,204,204,204,204,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,248,6,9,9,7,0, + 0,120,204,192,192,192,192,192,204,120,6,9,9,7,0,0, + 248,204,204,204,204,204,204,204,248,6,9,9,7,0,0,252, + 192,192,248,192,192,192,192,252,6,9,9,7,0,0,252,192, + 192,248,192,192,192,192,192,6,9,9,7,0,0,120,204,192, + 220,204,204,204,204,120,6,9,9,7,0,0,204,204,204,252, + 204,204,204,204,204,2,9,9,3,0,0,192,192,192,192,192, + 192,192,192,192,6,9,9,7,0,0,12,12,12,12,12,12, + 12,204,120,6,9,9,7,0,0,204,204,216,240,224,240,216, + 204,204,6,9,9,7,0,0,192,192,192,192,192,192,192,192, + 252,7,9,9,9,1,0,130,238,254,146,130,130,130,130,130, + 6,9,9,7,0,0,204,236,252,220,204,204,204,204,204,6, + 9,9,7,0,0,120,204,204,204,204,204,204,204,120,6,9, + 9,7,0,0,248,204,204,248,192,192,192,192,192,7,9,9, + 8,0,0,124,130,130,130,130,146,146,146,124,6,9,9,7, + 0,0,248,204,204,248,204,204,204,204,204,6,9,9,7,0, + 0,120,204,192,120,12,12,204,204,120,6,9,9,7,0,0, + 252,48,48,48,48,48,48,48,48,6,9,9,7,0,0,204, + 204,204,204,204,204,204,204,120,7,9,9,8,0,0,198,198, + 198,108,108,108,56,56,56,9,9,18,11,1,0,128,128,128, + 128,128,128,105,128,105,128,105,128,127,0,127,0,127,0,6, + 9,9,7,0,0,204,204,120,48,48,120,204,204,204,6,9, + 9,7,0,0,204,204,120,48,48,48,48,48,48,6,9,9, + 7,0,0,252,12,12,24,48,96,192,192,252,4,9,9,6, + 1,0,240,192,192,192,192,192,192,192,240,6,7,7,8,1, + 0,192,96,96,48,24,24,12,4,9,9,6,1,0,240,48, + 48,48,48,48,48,48,240,4,2,2,6,1,10,96,144,6, + 2,2,8,1,0,252,252,2,2,2,4,1,10,64,128,6, + 6,6,7,0,0,120,204,204,204,204,124,6,9,9,7,0, + 0,192,192,192,248,204,204,204,204,120,6,6,6,7,0,0, + 120,204,192,192,204,120,6,9,9,7,0,0,12,12,12,124, + 204,204,204,204,124,6,6,6,7,0,0,120,204,252,192,204, + 120,6,9,9,7,0,0,56,108,96,240,96,96,96,96,96, + 6,10,10,7,0,252,120,204,204,204,204,124,12,12,204,120, + 6,9,9,7,0,0,192,192,192,248,236,204,204,204,204,2, + 9,9,3,0,0,192,192,0,192,192,192,192,192,192,3,13, + 13,4,0,252,96,96,0,96,96,96,96,96,96,96,96,96, + 192,6,9,9,7,0,0,192,192,192,216,240,224,240,216,204, + 2,9,9,3,0,0,192,192,192,192,192,192,192,192,192,7, + 6,6,9,1,0,254,146,146,146,146,146,6,6,6,7,0, + 0,248,236,204,204,204,204,6,6,6,7,0,0,120,204,204, + 204,204,120,6,10,10,7,0,252,120,204,204,204,204,248,192, + 192,192,192,7,10,10,7,0,252,124,204,204,204,204,124,12, + 30,12,12,5,6,6,6,0,0,248,240,192,192,192,192,6, + 6,6,7,0,0,120,224,120,12,204,120,5,9,9,6,0, + 0,96,96,96,248,96,96,96,96,96,6,6,6,7,0,0, + 204,204,204,204,204,120,6,6,6,7,0,0,204,204,120,120, + 48,48,9,6,12,10,0,0,128,128,128,128,107,0,107,0, + 127,0,127,0,6,6,6,7,0,0,204,120,48,48,120,204, + 6,10,10,7,0,252,204,204,204,204,204,124,12,12,204,120, + 6,6,6,7,0,0,124,204,24,48,96,252,6,9,9,8, + 1,0,12,24,48,48,240,48,48,24,12,2,9,9,4,1, + 0,192,192,192,192,192,192,192,192,192,6,9,9,8,1,0, + 192,96,48,48,28,48,48,96,192,5,2,2,6,0,10,232, + 184,255}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 1 y=10 dx=11 dy= 0 ascent=13 len=18 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x=-1 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =13 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpss[2605] U8G_SECTION(".progmem.u8g_font_tpss") = { + 0,11,17,255,252,9,1,192,3,136,32,255,252,13,252,9, + 252,0,0,0,4,0,0,1,9,9,3,1,0,128,128,128, + 128,128,128,0,128,128,3,2,2,5,1,7,160,160,5,5, + 5,7,1,0,80,248,80,248,80,5,9,9,7,1,0,112, + 168,160,112,40,40,168,168,112,5,9,9,7,1,0,136,144, + 16,32,32,32,64,72,136,7,9,9,9,1,0,112,136,136, + 112,136,136,136,138,116,1,2,2,3,1,7,128,128,5,9, + 9,7,1,0,24,32,64,64,128,64,64,32,24,5,9,9, + 7,1,0,192,32,16,16,8,16,16,32,192,5,7,7,7, + 1,1,32,168,112,32,112,168,32,5,5,5,7,1,1,32, + 32,248,32,32,2,2,2,4,1,255,64,128,5,1,1,7, + 1,3,248,1,1,1,3,1,0,128,5,9,9,7,1,0, + 8,16,16,32,32,32,64,64,128,5,9,9,6,0,0,112, + 136,136,136,136,136,136,136,112,5,9,9,6,0,0,32,96, + 160,32,32,32,32,32,248,5,9,9,6,0,0,112,136,136, + 8,16,32,64,128,248,5,9,9,6,0,0,112,136,8,48, + 8,8,8,136,112,5,9,9,6,0,0,8,136,136,248,8, + 8,8,8,8,5,9,9,6,0,0,248,128,128,248,8,8, + 8,136,112,5,9,9,6,0,0,112,136,128,240,136,136,136, + 136,112,5,9,9,6,0,0,248,8,16,32,64,64,64,64, + 64,5,9,9,6,0,0,112,136,136,112,136,136,136,136,112, + 5,9,9,6,0,0,112,136,136,136,120,8,8,136,112,1, + 4,4,3,1,0,128,0,0,128,2,5,5,4,1,255,64, + 0,0,64,128,5,9,9,7,1,0,8,16,32,64,128,64, + 32,16,8,5,3,3,7,1,2,248,0,248,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,5,9,9,7,1, + 0,112,136,8,16,32,32,0,32,32,9,8,16,11,1,0, + 126,0,129,0,153,0,165,0,165,0,154,0,128,128,127,0, + 5,9,9,6,0,0,112,136,136,248,136,136,136,136,136,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,240,5,9, + 9,6,0,0,112,136,128,128,128,128,128,136,112,5,9,9, + 6,0,0,240,136,136,136,136,136,136,136,240,5,9,9,6, + 0,0,248,128,128,240,128,128,128,128,248,5,9,9,6,0, + 0,248,128,128,240,128,128,128,128,128,5,9,9,6,0,0, + 112,136,128,184,136,136,136,136,112,5,9,9,6,0,0,136, + 136,136,248,136,136,136,136,136,1,9,9,2,0,0,128,128, + 128,128,128,128,128,128,128,5,9,9,6,0,0,8,8,8, + 8,8,8,8,136,112,5,9,9,6,0,0,136,136,144,160, + 192,160,144,136,136,5,9,9,6,0,0,128,128,128,128,128, + 128,128,128,248,7,9,9,8,0,0,130,198,170,146,130,130, + 130,130,130,5,9,9,6,0,0,136,200,168,152,136,136,136, + 136,136,5,9,9,6,0,0,112,136,136,136,136,136,136,136, + 112,5,9,9,6,0,0,240,136,136,240,128,128,128,128,128, + 5,9,9,6,0,0,112,136,136,136,136,168,168,168,112,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,136,5,9, + 9,6,0,0,112,136,128,112,8,8,136,136,112,5,9,9, + 6,0,0,248,32,32,32,32,32,32,32,32,5,9,9,6, + 0,0,136,136,136,136,136,136,136,136,112,5,9,9,6,0, + 0,136,136,136,80,80,80,80,32,32,7,9,9,8,0,0, + 130,130,130,84,84,84,40,40,40,5,9,9,6,0,0,136, + 136,80,32,32,80,136,136,136,5,9,9,6,0,0,136,136, + 80,32,32,32,32,32,32,5,9,9,6,0,0,248,8,8, + 16,32,64,128,128,248,3,9,9,5,1,0,224,128,128,128, + 128,128,128,128,224,5,7,7,7,1,0,128,64,64,32,16, + 16,8,3,9,9,5,1,0,224,32,32,32,32,32,32,32, + 224,3,2,2,5,1,10,64,160,6,1,1,8,1,0,252, + 2,2,2,4,1,10,64,128,5,6,6,6,0,0,112,136, + 136,136,136,120,5,9,9,6,0,0,128,128,128,240,136,136, + 136,136,112,5,6,6,6,0,0,112,136,128,128,136,112,5, + 9,9,6,0,0,8,8,8,120,136,136,136,136,120,5,6, + 6,6,0,0,112,136,248,128,136,112,5,9,9,6,0,0, + 48,72,64,224,64,64,64,64,64,5,10,10,6,0,252,112, + 136,136,136,136,120,8,8,136,112,5,9,9,6,0,0,128, + 128,128,176,200,136,136,136,136,1,9,9,2,0,0,128,128, + 0,128,128,128,128,128,128,2,13,13,3,0,252,64,64,0, + 64,64,64,64,64,64,64,64,64,128,5,9,9,6,0,0, + 128,128,128,144,160,192,160,144,136,1,9,9,2,0,0,128, + 128,128,128,128,128,128,128,128,7,6,6,8,0,0,182,218, + 146,146,146,146,5,6,6,6,0,0,176,200,136,136,136,136, + 5,6,6,6,0,0,112,136,136,136,136,112,5,10,10,6, + 0,252,112,136,136,136,136,240,128,128,128,128,6,10,10,7, + 0,252,120,136,136,136,136,120,8,28,8,8,4,6,6,5, + 0,0,176,192,128,128,128,128,5,6,6,6,0,0,112,128, + 112,8,136,112,4,9,9,5,0,0,64,64,64,240,64,64, + 64,64,64,5,6,6,6,0,0,136,136,136,136,136,112,5, + 6,6,6,0,0,136,136,80,80,32,32,7,6,6,8,0, + 0,130,130,84,84,40,40,5,6,6,6,0,0,136,80,32, + 32,80,136,5,10,10,6,0,252,136,136,136,136,136,120,8, + 8,136,112,5,6,6,6,0,0,120,136,16,32,64,248,6, + 9,9,8,1,0,12,16,32,32,192,32,32,16,12,1,9, + 9,3,1,0,128,128,128,128,128,128,128,128,128,6,9,9, + 8,1,0,192,32,16,16,12,16,16,32,192,5,2,2,6, + 0,10,232,184,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,1,9,9,2,0,0,128,128,0,128, + 128,128,128,128,128,5,7,7,7,1,0,32,112,168,160,168, + 112,32,5,9,9,7,1,0,128,128,240,128,128,128,136,136, + 248,5,5,5,7,1,1,136,112,80,112,136,5,9,9,7, + 1,0,136,136,80,32,32,248,32,248,32,1,9,9,3,1, + 0,128,128,128,0,0,0,128,128,128,6,10,10,8,1,0, + 120,128,120,132,120,4,4,4,132,120,5,1,1,7,1,3, + 136,7,7,7,9,1,0,124,130,186,162,186,130,124,6,8, + 8,8,1,0,112,136,136,136,136,116,0,252,5,3,3,7, + 1,2,72,144,72,5,2,2,7,1,2,248,8,0,0,0, + 8,0,0,7,7,7,9,1,0,124,130,186,162,162,130,124, + 5,1,1,6,0,6,248,3,3,3,5,1,2,64,160,64, + 5,7,7,7,1,0,32,32,248,32,32,0,248,255,255,255, + 0,0,0,8,0,0,255,0,0,0,8,0,0,255,255,255, + 5,3,3,7,1,2,144,72,144,255,255,255,255,5,12,12, + 6,0,0,64,32,0,112,136,136,248,136,136,136,136,136,5, + 12,12,6,0,0,16,32,0,112,136,136,248,136,136,136,136, + 136,5,12,12,6,0,0,32,80,0,112,136,136,248,136,136, + 136,136,136,5,12,12,6,0,0,232,184,0,112,136,136,248, + 136,136,136,136,136,5,11,11,6,0,0,80,0,112,136,136, + 248,136,136,136,136,136,5,13,13,6,0,0,32,80,32,0, + 112,136,136,248,136,136,136,136,136,9,9,18,10,0,0,127, + 128,136,0,136,0,255,0,136,0,136,0,136,0,136,0,143, + 128,5,9,9,6,0,254,112,136,128,128,128,136,112,32,96, + 5,12,12,6,0,0,64,32,0,248,128,128,240,128,128,128, + 128,248,5,12,12,6,0,0,16,32,0,248,128,128,240,128, + 128,128,128,248,5,12,12,6,0,0,32,80,0,248,128,128, + 240,128,128,128,128,248,5,11,11,6,0,0,80,0,248,128, + 128,240,128,128,128,128,248,2,12,12,2,0,0,128,64,0, + 64,64,64,64,64,64,64,64,64,2,12,12,2,0,0,64, + 128,0,128,128,128,128,128,128,128,128,128,3,12,12,2,255, + 0,64,160,0,64,64,64,64,64,64,64,64,64,3,11,11, + 2,255,0,160,0,64,64,64,64,64,64,64,64,64,5,9, + 9,6,0,0,240,136,136,232,136,136,136,136,240,5,12,12, + 6,0,0,232,184,0,136,136,136,200,168,152,136,136,136,5, + 12,12,6,0,0,64,32,0,112,136,136,136,136,136,136,136, + 112,5,12,12,6,0,0,16,32,0,112,136,136,136,136,136, + 136,136,112,5,12,12,6,0,0,32,80,0,112,136,136,136, + 136,136,136,136,112,5,12,12,6,0,0,232,184,0,112,136, + 136,136,136,136,136,136,112,5,11,11,6,0,0,80,0,112, + 136,136,136,136,136,136,136,112,3,3,3,6,1,2,160,64, + 160,7,9,9,8,0,0,58,68,76,84,84,84,100,68,184, + 5,12,12,6,0,0,64,32,0,136,136,136,136,136,136,136, + 136,112,5,12,12,6,0,0,16,32,0,136,136,136,136,136, + 136,136,136,112,5,12,12,6,0,0,32,80,0,136,136,136, + 136,136,136,136,136,112,5,11,11,6,0,0,80,0,136,136, + 136,136,136,136,136,136,112,5,12,12,6,0,0,16,32,0, + 136,136,80,32,32,32,32,32,32,5,9,9,6,0,0,128, + 128,240,136,240,128,128,128,128,5,11,11,6,0,254,240,136, + 176,136,136,136,176,128,128,128,128,5,9,9,6,0,0,64, + 32,0,112,136,136,136,136,120,5,9,9,6,0,0,16,32, + 0,112,136,136,136,136,120,5,9,9,6,0,0,32,80,0, + 112,136,136,136,136,120,5,9,9,6,0,0,232,184,0,112, + 136,136,136,136,120,5,8,8,6,0,0,80,0,112,136,136, + 136,136,120,5,10,10,6,0,0,32,80,32,0,112,136,136, + 136,136,120,9,6,12,10,0,0,119,0,136,128,143,128,136, + 0,136,128,119,0,5,8,8,6,0,254,112,136,128,128,136, + 112,32,64,5,6,6,6,0,0,112,136,248,128,136,112,5, + 6,6,6,0,0,112,136,248,128,136,112,5,6,6,6,0, + 0,112,136,248,128,136,112,5,6,6,6,0,0,112,136,248, + 128,136,112,2,10,10,3,0,0,128,64,0,0,64,64,64, + 64,64,64,2,10,10,3,0,0,64,128,0,0,128,128,128, + 128,128,128,3,10,10,4,0,0,64,160,0,0,64,64,64, + 64,64,64,3,9,9,4,0,0,160,0,0,64,64,64,64, + 64,64,5,9,9,6,0,0,8,56,8,120,136,136,136,136, + 120,5,9,9,6,0,0,232,184,0,176,200,136,136,136,136, + 5,9,9,6,0,0,64,32,0,112,136,136,136,136,112,5, + 9,9,6,0,0,16,32,0,112,136,136,136,136,112,5,9, + 9,6,0,0,32,80,0,112,136,136,136,136,112,5,9,9, + 6,0,0,232,184,0,112,136,136,136,136,112,5,8,8,6, + 0,0,80,0,112,136,136,136,136,112,5,5,5,6,0,1, + 32,0,248,0,32,5,6,6,6,0,0,112,152,168,168,200, + 112,5,9,9,6,0,0,64,32,0,136,136,136,136,136,112, + 5,9,9,6,0,0,16,32,0,136,136,136,136,136,112,5, + 9,9,6,0,0,32,80,0,136,136,136,136,136,112,5,8, + 8,6,0,0,80,0,136,136,136,136,136,112,5,13,13,6, + 0,252,16,32,0,136,136,136,136,136,120,8,8,136,112,5, + 6,6,5,0,0,128,240,136,240,128,128,5,12,12,6,0, + 252,80,0,136,136,136,136,136,120,8,8,136,112}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 0, '1' Height: 9 + Calculated Max Values w= 5 h= 9 x= 1 y= 3 dx= 7 dy= 0 ascent= 9 len= 9 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 9 descent= 0 + X Font ascent = 9 descent= 0 + Max Font ascent = 9 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssn[228] U8G_SECTION(".progmem.u8g_font_tpssn") = { + 0,11,17,255,252,9,0,0,0,0,42,57,0,9,255,9, + 0,5,7,7,7,1,1,32,168,112,32,112,168,32,5,5, + 5,7,1,1,32,32,248,32,32,2,2,2,4,1,255,64, + 128,5,1,1,7,1,3,248,1,1,1,3,1,0,128,5, + 9,9,7,1,0,8,16,16,32,32,32,64,64,128,5,9, + 9,6,0,0,112,136,136,136,136,136,136,136,112,5,9,9, + 6,0,0,32,96,160,32,32,32,32,32,248,5,9,9,6, + 0,0,112,136,136,8,16,32,64,128,248,5,9,9,6,0, + 0,112,136,8,48,8,8,8,136,112,5,9,9,6,0,0, + 8,136,136,248,8,8,8,8,8,5,9,9,6,0,0,248, + 128,128,248,8,8,8,136,112,5,9,9,6,0,0,112,136, + 128,240,136,136,136,136,112,5,9,9,6,0,0,248,8,16, + 32,64,64,64,64,64,5,9,9,6,0,0,112,136,136,112, + 136,136,136,136,112,5,9,9,6,0,0,112,136,136,136,120, + 8,8,136,112}; +/* + Fontname: -FreeType-Teachers Pet Sans Serif-Medium-R-Normal--8-80-72-72-P-18-ISO10646-1 + Copyright: © www.orgdot.com + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 9 h=13 x= 1 y=10 dx=11 dy= 0 ascent=12 len=16 + Font Bounding box w=11 h=17 x=-1 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-4 + X Font ascent = 9 descent=-4 + Max Font ascent =12 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_tpssr[1317] U8G_SECTION(".progmem.u8g_font_tpssr") = { + 0,11,17,255,252,9,1,192,3,136,32,127,252,12,252,9, + 252,0,0,0,4,0,0,1,9,9,3,1,0,128,128,128, + 128,128,128,0,128,128,3,2,2,5,1,7,160,160,5,5, + 5,7,1,0,80,248,80,248,80,5,9,9,7,1,0,112, + 168,160,112,40,40,168,168,112,5,9,9,7,1,0,136,144, + 16,32,32,32,64,72,136,7,9,9,9,1,0,112,136,136, + 112,136,136,136,138,116,1,2,2,3,1,7,128,128,5,9, + 9,7,1,0,24,32,64,64,128,64,64,32,24,5,9,9, + 7,1,0,192,32,16,16,8,16,16,32,192,5,7,7,7, + 1,1,32,168,112,32,112,168,32,5,5,5,7,1,1,32, + 32,248,32,32,2,2,2,4,1,255,64,128,5,1,1,7, + 1,3,248,1,1,1,3,1,0,128,5,9,9,7,1,0, + 8,16,16,32,32,32,64,64,128,5,9,9,6,0,0,112, + 136,136,136,136,136,136,136,112,5,9,9,6,0,0,32,96, + 160,32,32,32,32,32,248,5,9,9,6,0,0,112,136,136, + 8,16,32,64,128,248,5,9,9,6,0,0,112,136,8,48, + 8,8,8,136,112,5,9,9,6,0,0,8,136,136,248,8, + 8,8,8,8,5,9,9,6,0,0,248,128,128,248,8,8, + 8,136,112,5,9,9,6,0,0,112,136,128,240,136,136,136, + 136,112,5,9,9,6,0,0,248,8,16,32,64,64,64,64, + 64,5,9,9,6,0,0,112,136,136,112,136,136,136,136,112, + 5,9,9,6,0,0,112,136,136,136,120,8,8,136,112,1, + 4,4,3,1,0,128,0,0,128,2,5,5,4,1,255,64, + 0,0,64,128,5,9,9,7,1,0,8,16,32,64,128,64, + 32,16,8,5,3,3,7,1,2,248,0,248,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,5,9,9,7,1, + 0,112,136,8,16,32,32,0,32,32,9,8,16,11,1,0, + 126,0,129,0,153,0,165,0,165,0,154,0,128,128,127,0, + 5,9,9,6,0,0,112,136,136,248,136,136,136,136,136,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,240,5,9, + 9,6,0,0,112,136,128,128,128,128,128,136,112,5,9,9, + 6,0,0,240,136,136,136,136,136,136,136,240,5,9,9,6, + 0,0,248,128,128,240,128,128,128,128,248,5,9,9,6,0, + 0,248,128,128,240,128,128,128,128,128,5,9,9,6,0,0, + 112,136,128,184,136,136,136,136,112,5,9,9,6,0,0,136, + 136,136,248,136,136,136,136,136,1,9,9,2,0,0,128,128, + 128,128,128,128,128,128,128,5,9,9,6,0,0,8,8,8, + 8,8,8,8,136,112,5,9,9,6,0,0,136,136,144,160, + 192,160,144,136,136,5,9,9,6,0,0,128,128,128,128,128, + 128,128,128,248,7,9,9,8,0,0,130,198,170,146,130,130, + 130,130,130,5,9,9,6,0,0,136,200,168,152,136,136,136, + 136,136,5,9,9,6,0,0,112,136,136,136,136,136,136,136, + 112,5,9,9,6,0,0,240,136,136,240,128,128,128,128,128, + 5,9,9,6,0,0,112,136,136,136,136,168,168,168,112,5, + 9,9,6,0,0,240,136,136,240,136,136,136,136,136,5,9, + 9,6,0,0,112,136,128,112,8,8,136,136,112,5,9,9, + 6,0,0,248,32,32,32,32,32,32,32,32,5,9,9,6, + 0,0,136,136,136,136,136,136,136,136,112,5,9,9,6,0, + 0,136,136,136,80,80,80,80,32,32,7,9,9,8,0,0, + 130,130,130,84,84,84,40,40,40,5,9,9,6,0,0,136, + 136,80,32,32,80,136,136,136,5,9,9,6,0,0,136,136, + 80,32,32,32,32,32,32,5,9,9,6,0,0,248,8,8, + 16,32,64,128,128,248,3,9,9,5,1,0,224,128,128,128, + 128,128,128,128,224,5,7,7,7,1,0,128,64,64,32,16, + 16,8,3,9,9,5,1,0,224,32,32,32,32,32,32,32, + 224,3,2,2,5,1,10,64,160,6,1,1,8,1,0,252, + 2,2,2,4,1,10,64,128,5,6,6,6,0,0,112,136, + 136,136,136,120,5,9,9,6,0,0,128,128,128,240,136,136, + 136,136,112,5,6,6,6,0,0,112,136,128,128,136,112,5, + 9,9,6,0,0,8,8,8,120,136,136,136,136,120,5,6, + 6,6,0,0,112,136,248,128,136,112,5,9,9,6,0,0, + 48,72,64,224,64,64,64,64,64,5,10,10,6,0,252,112, + 136,136,136,136,120,8,8,136,112,5,9,9,6,0,0,128, + 128,128,176,200,136,136,136,136,1,9,9,2,0,0,128,128, + 0,128,128,128,128,128,128,2,13,13,3,0,252,64,64,0, + 64,64,64,64,64,64,64,64,64,128,5,9,9,6,0,0, + 128,128,128,144,160,192,160,144,136,1,9,9,2,0,0,128, + 128,128,128,128,128,128,128,128,7,6,6,8,0,0,182,218, + 146,146,146,146,5,6,6,6,0,0,176,200,136,136,136,136, + 5,6,6,6,0,0,112,136,136,136,136,112,5,10,10,6, + 0,252,112,136,136,136,136,240,128,128,128,128,6,10,10,7, + 0,252,120,136,136,136,136,120,8,28,8,8,4,6,6,5, + 0,0,176,192,128,128,128,128,5,6,6,6,0,0,112,128, + 112,8,136,112,4,9,9,5,0,0,64,64,64,240,64,64, + 64,64,64,5,6,6,6,0,0,136,136,136,136,136,112,5, + 6,6,6,0,0,136,136,80,80,32,32,7,6,6,8,0, + 0,130,130,84,84,40,40,5,6,6,6,0,0,136,80,32, + 32,80,136,5,10,10,6,0,252,136,136,136,136,136,120,8, + 8,136,112,5,6,6,6,0,0,120,136,16,32,64,248,6, + 9,9,8,1,0,12,16,32,32,192,32,32,16,12,1,9, + 9,3,1,0,128,128,128,128,128,128,128,128,128,6,9,9, + 8,1,0,192,32,16,16,12,16,16,32,192,5,2,2,6, + 0,10,232,184,255}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 7 len= 7 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_square[1236] U8G_SECTION(".progmem.u8g_font_trixel_square") = { + 0,5,9,0,254,5,1,91,2,177,32,255,254,7,254,5, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,255, + 80,248,80,248,80,3,6,6,4,0,0,64,224,192,96,224, + 64,3,5,5,4,0,0,160,32,224,128,160,5,5,5,6, + 0,0,224,160,240,160,248,1,2,2,2,0,3,128,128,2, + 5,5,3,0,0,192,128,128,128,192,2,5,5,3,0,0, + 192,64,64,64,192,3,3,3,4,0,2,160,64,160,3,3, + 3,4,0,0,64,224,64,1,2,2,2,0,255,128,128,3, + 1,1,4,0,1,224,1,1,1,2,0,0,128,3,5,5, + 4,0,0,32,96,64,192,128,3,5,5,4,0,0,224,160, + 160,160,224,2,5,5,3,0,0,64,192,64,64,64,3,5, + 5,4,0,0,224,160,96,192,224,3,5,5,4,0,0,224, + 32,96,32,224,3,5,5,4,0,0,160,160,224,32,32,3, + 5,5,4,0,0,224,128,224,32,224,3,5,5,4,0,0, + 224,128,224,160,224,3,5,5,4,0,0,224,32,32,32,32, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,160,224,32,224,1,3,3,2,0,0,128,0,128,1, + 4,4,2,0,255,128,0,128,128,3,3,3,4,0,0,96, + 192,96,3,3,3,4,0,0,224,0,224,3,3,3,4,0, + 0,192,96,192,3,5,5,4,0,0,224,32,96,0,64,5, + 6,6,6,0,255,248,136,168,184,128,248,3,5,5,4,0, + 0,224,160,224,160,160,3,5,5,4,0,0,224,160,224,160, + 224,3,5,5,4,0,0,224,160,128,160,224,3,5,5,4, + 0,0,224,160,160,160,224,3,5,5,4,0,0,224,128,192, + 128,224,3,5,5,4,0,0,224,128,192,128,128,3,5,5, + 4,0,0,224,128,160,160,224,3,5,5,4,0,0,160,160, + 224,160,160,1,5,5,2,0,0,128,128,128,128,128,3,5, + 5,4,0,0,224,32,32,32,224,3,5,5,4,0,0,160, + 160,192,160,160,3,5,5,4,0,0,128,128,128,128,224,5, + 5,5,6,0,0,216,216,168,168,136,4,5,5,5,0,0, + 208,208,176,176,144,3,5,5,4,0,0,224,160,160,160,224, + 3,5,5,4,0,0,224,160,224,128,128,4,5,5,5,0, + 0,224,160,160,160,240,3,5,5,4,0,0,224,160,192,160, + 160,3,5,5,4,0,0,224,128,224,32,224,3,5,5,4, + 0,0,224,64,64,64,64,3,5,5,4,0,0,160,160,160, + 160,224,3,5,5,4,0,0,160,160,160,224,64,5,5,5, + 6,0,0,136,136,168,168,248,3,5,5,4,0,0,160,224, + 64,224,160,3,5,5,4,0,0,160,160,224,64,64,3,5, + 5,4,0,0,224,32,224,128,224,3,5,5,4,0,0,224, + 128,128,128,224,3,5,5,4,0,0,128,192,64,96,32,3, + 5,5,4,0,0,224,32,32,32,224,3,2,2,4,0,3, + 224,160,3,1,1,4,0,0,224,2,2,2,3,0,3,192, + 64,4,3,3,5,0,0,224,160,240,3,5,5,4,0,0, + 128,128,224,160,224,3,3,3,4,0,0,224,128,224,3,5, + 5,4,0,0,32,32,224,160,224,3,3,3,4,0,0,224, + 192,224,2,5,5,3,0,0,192,128,192,128,128,3,5,5, + 4,0,254,224,160,224,32,224,3,5,5,4,0,0,128,128, + 224,160,160,1,5,5,2,0,0,128,0,128,128,128,2,7, + 7,3,0,254,64,0,64,64,64,64,192,3,5,5,4,0, + 0,128,128,160,224,160,2,5,5,3,0,0,128,128,128,128, + 192,5,3,3,6,0,0,248,168,168,3,3,3,4,0,0, + 224,160,160,3,3,3,4,0,0,224,160,224,3,5,5,4, + 0,254,224,160,224,128,128,3,5,5,4,0,254,224,160,224, + 32,32,2,3,3,3,0,0,192,128,128,3,3,3,4,0, + 0,96,64,192,2,5,5,3,0,0,128,192,128,128,192,3, + 3,3,4,0,0,160,160,224,3,3,3,4,0,0,160,224, + 64,5,3,3,6,0,0,168,168,248,3,3,3,4,0,0, + 160,64,160,3,5,5,4,0,254,160,160,224,32,224,3,3, + 3,4,0,0,224,64,224,3,5,5,4,0,0,96,64,192, + 64,96,1,5,5,2,0,0,128,128,128,128,128,3,5,5, + 4,0,0,192,64,96,64,192,3,3,3,4,0,1,32,224, + 128,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,4,5,5,5,0,0,112,64,96,64,240, + 255,255,255,3,7,7,4,0,254,224,128,224,160,224,32,224, + 255,255,255,3,2,2,4,0,1,160,160,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,3,2,2,4,0,1, + 160,160,255,255,255,255,255,255,255,255,3,7,7,4,0,0, + 160,0,224,160,224,160,160,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,3,7,7,4,0,0,160,0, + 224,160,160,160,224,255,255,255,255,255,3,7,7,4,0,0, + 160,0,160,160,160,160,224,255,255,3,7,7,4,0,254,224, + 160,224,160,224,128,128,255,255,255,255,4,5,5,5,0,0, + 160,0,224,160,240,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,3,5,5,4,0,0,160,0,224,160, + 224,255,255,255,255,255,3,5,5,4,0,0,160,0,160,160, + 224,255,255,255}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 0, '1' Height: 5 + Calculated Max Values w= 3 h= 5 x= 0 y= 2 dx= 4 dy= 0 ascent= 5 len= 5 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 5 descent= 0 + X Font ascent = 5 descent= 0 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[178] U8G_SECTION(".progmem.u8g_font_trixel_squaren") = { + 0,5,9,0,254,5,0,0,0,0,42,57,0,5,255,5, + 0,3,3,3,4,0,2,160,64,160,3,3,3,4,0,0, + 64,224,64,1,2,2,2,0,255,128,128,3,1,1,4,0, + 1,224,1,1,1,2,0,0,128,3,5,5,4,0,0,32, + 96,64,192,128,3,5,5,4,0,0,224,160,160,160,224,2, + 5,5,3,0,0,64,192,64,64,64,3,5,5,4,0,0, + 224,160,96,192,224,3,5,5,4,0,0,224,32,96,32,224, + 3,5,5,4,0,0,160,160,224,32,32,3,5,5,4,0, + 0,224,128,224,32,224,3,5,5,4,0,0,224,128,224,160, + 224,3,5,5,4,0,0,224,32,32,32,32,3,5,5,4, + 0,0,224,160,224,160,224,3,5,5,4,0,0,224,160,224, + 32,224}; +/* + Fontname: -FreeType-Trixel Square-Medium-R-Normal--8-80-72-72-P-33-ISO10646-1 + Copyright: Copyright julischka 2008 + Capital A Height: 5, '1' Height: 5 + Calculated Max Values w= 5 h= 7 x= 0 y= 3 dx= 6 dy= 0 ascent= 6 len= 7 + Font Bounding box w= 5 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 5 descent=-2 + X Font ascent = 5 descent=-2 + Max Font ascent = 6 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[994] U8G_SECTION(".progmem.u8g_font_trixel_squarer") = { + 0,5,9,0,254,5,1,91,2,177,32,127,254,6,254,5, + 254,0,0,0,1,0,0,1,5,5,2,0,0,128,128,128, + 0,128,3,2,2,4,0,3,160,160,5,5,5,6,0,255, + 80,248,80,248,80,3,6,6,4,0,0,64,224,192,96,224, + 64,3,5,5,4,0,0,160,32,224,128,160,5,5,5,6, + 0,0,224,160,240,160,248,1,2,2,2,0,3,128,128,2, + 5,5,3,0,0,192,128,128,128,192,2,5,5,3,0,0, + 192,64,64,64,192,3,3,3,4,0,2,160,64,160,3,3, + 3,4,0,0,64,224,64,1,2,2,2,0,255,128,128,3, + 1,1,4,0,1,224,1,1,1,2,0,0,128,3,5,5, + 4,0,0,32,96,64,192,128,3,5,5,4,0,0,224,160, + 160,160,224,2,5,5,3,0,0,64,192,64,64,64,3,5, + 5,4,0,0,224,160,96,192,224,3,5,5,4,0,0,224, + 32,96,32,224,3,5,5,4,0,0,160,160,224,32,32,3, + 5,5,4,0,0,224,128,224,32,224,3,5,5,4,0,0, + 224,128,224,160,224,3,5,5,4,0,0,224,32,32,32,32, + 3,5,5,4,0,0,224,160,224,160,224,3,5,5,4,0, + 0,224,160,224,32,224,1,3,3,2,0,0,128,0,128,1, + 4,4,2,0,255,128,0,128,128,3,3,3,4,0,0,96, + 192,96,3,3,3,4,0,0,224,0,224,3,3,3,4,0, + 0,192,96,192,3,5,5,4,0,0,224,32,96,0,64,5, + 6,6,6,0,255,248,136,168,184,128,248,3,5,5,4,0, + 0,224,160,224,160,160,3,5,5,4,0,0,224,160,224,160, + 224,3,5,5,4,0,0,224,160,128,160,224,3,5,5,4, + 0,0,224,160,160,160,224,3,5,5,4,0,0,224,128,192, + 128,224,3,5,5,4,0,0,224,128,192,128,128,3,5,5, + 4,0,0,224,128,160,160,224,3,5,5,4,0,0,160,160, + 224,160,160,1,5,5,2,0,0,128,128,128,128,128,3,5, + 5,4,0,0,224,32,32,32,224,3,5,5,4,0,0,160, + 160,192,160,160,3,5,5,4,0,0,128,128,128,128,224,5, + 5,5,6,0,0,216,216,168,168,136,4,5,5,5,0,0, + 208,208,176,176,144,3,5,5,4,0,0,224,160,160,160,224, + 3,5,5,4,0,0,224,160,224,128,128,4,5,5,5,0, + 0,224,160,160,160,240,3,5,5,4,0,0,224,160,192,160, + 160,3,5,5,4,0,0,224,128,224,32,224,3,5,5,4, + 0,0,224,64,64,64,64,3,5,5,4,0,0,160,160,160, + 160,224,3,5,5,4,0,0,160,160,160,224,64,5,5,5, + 6,0,0,136,136,168,168,248,3,5,5,4,0,0,160,224, + 64,224,160,3,5,5,4,0,0,160,160,224,64,64,3,5, + 5,4,0,0,224,32,224,128,224,3,5,5,4,0,0,224, + 128,128,128,224,3,5,5,4,0,0,128,192,64,96,32,3, + 5,5,4,0,0,224,32,32,32,224,3,2,2,4,0,3, + 224,160,3,1,1,4,0,0,224,2,2,2,3,0,3,192, + 64,4,3,3,5,0,0,224,160,240,3,5,5,4,0,0, + 128,128,224,160,224,3,3,3,4,0,0,224,128,224,3,5, + 5,4,0,0,32,32,224,160,224,3,3,3,4,0,0,224, + 192,224,2,5,5,3,0,0,192,128,192,128,128,3,5,5, + 4,0,254,224,160,224,32,224,3,5,5,4,0,0,128,128, + 224,160,160,1,5,5,2,0,0,128,0,128,128,128,2,7, + 7,3,0,254,64,0,64,64,64,64,192,3,5,5,4,0, + 0,128,128,160,224,160,2,5,5,3,0,0,128,128,128,128, + 192,5,3,3,6,0,0,248,168,168,3,3,3,4,0,0, + 224,160,160,3,3,3,4,0,0,224,160,224,3,5,5,4, + 0,254,224,160,224,128,128,3,5,5,4,0,254,224,160,224, + 32,32,2,3,3,3,0,0,192,128,128,3,3,3,4,0, + 0,96,64,192,2,5,5,3,0,0,128,192,128,128,192,3, + 3,3,4,0,0,160,160,224,3,3,3,4,0,0,160,224, + 64,5,3,3,6,0,0,168,168,248,3,3,3,4,0,0, + 160,64,160,3,5,5,4,0,254,160,160,224,32,224,3,3, + 3,4,0,0,224,64,224,3,5,5,4,0,0,96,64,192, + 64,96,1,5,5,2,0,0,128,128,128,128,128,3,5,5, + 4,0,0,192,64,96,64,192,3,3,3,4,0,1,32,224, + 128,255}; +/* + Fontname: u8glib_4 + Copyright: public domain + Capital A Height: 4, '1' Height: 4 + Calculated Max Values w= 8 h= 7 x= 1 y= 4 dx= 9 dy= 0 ascent= 6 len= 7 + Font Bounding box w=10 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 6 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_u8glib_4[1660] U8G_SECTION(".progmem.u8g_font_u8glib_4") = { + 1,10,6,0,255,4,0,233,1,198,32,255,255,6,255,5, + 255,2,0,32,2,20,36,128,128,0,128,5,50,66,160,160, + 1,85,101,80,248,80,248,80,1,86,102,32,120,224,56,240, + 32,2,68,84,144,32,64,144,2,69,85,64,160,64,160,240, + 5,18,34,128,128,1,38,54,64,128,128,128,128,64,1,38, + 54,128,64,64,64,64,128,3,34,50,192,192,2,51,67,64, + 224,64,1,18,34,128,128,3,49,65,224,2,17,33,128,2, + 68,84,16,32,64,128,2,52,68,224,160,160,224,2,36,52, + 64,192,64,64,2,52,68,224,32,64,224,2,52,68,224,64, + 32,224,2,52,68,128,160,224,32,2,52,68,224,192,32,224, + 2,52,68,224,128,224,224,2,52,68,224,32,64,128,2,52, + 68,224,224,160,224,2,52,68,224,224,32,224,2,19,35,128, + 0,128,1,20,36,128,0,128,128,2,35,51,64,128,64,2, + 51,67,224,0,224,2,35,51,128,64,128,2,36,52,192,64, + 0,64,2,68,84,240,176,128,240,2,68,84,96,144,240,144, + 2,68,84,224,240,144,240,2,52,68,96,128,128,96,2,68, + 84,224,144,144,224,2,68,84,240,224,128,240,2,68,84,240, + 128,224,128,2,68,84,240,128,176,240,2,68,84,144,240,144, + 144,2,20,36,128,128,128,128,2,52,68,224,32,32,192,2, + 68,84,144,224,144,144,2,52,68,128,128,128,224,2,84,100, + 136,216,168,136,2,68,84,144,208,176,144,2,68,84,96,144, + 144,96,2,68,84,224,144,224,128,2,84,100,240,144,144,232, + 2,68,84,240,240,160,144,2,68,84,112,192,48,224,2,52, + 68,224,64,64,64,2,68,84,144,144,144,240,2,68,84,144, + 144,144,96,2,84,100,136,168,168,80,2,52,68,160,64,64, + 160,2,68,84,144,240,16,240,2,68,84,240,32,64,240,1, + 38,54,192,128,128,128,128,192,2,68,84,128,64,32,16,1, + 38,54,192,64,64,64,64,192,5,50,66,64,160,1,65,81, + 240,5,34,50,128,64,2,51,67,96,160,224,2,52,68,128, + 192,160,192,2,35,51,192,128,192,2,52,68,32,96,160,96, + 2,51,67,224,192,224,2,52,68,32,64,224,64,1,52,68, + 224,224,32,96,2,52,68,128,192,160,160,2,20,36,128,0, + 128,128,1,37,53,64,0,64,64,128,2,52,68,128,160,192, + 160,2,20,36,128,128,128,128,2,83,99,208,168,168,2,51, + 67,192,160,160,2,51,67,224,160,224,1,52,68,192,160,192, + 128,1,52,68,96,160,96,32,2,35,51,192,128,128,2,51, + 67,96,64,192,2,52,68,64,224,64,96,2,51,67,160,160, + 224,2,51,67,160,160,64,2,83,99,136,168,80,2,51,67, + 160,64,160,1,52,68,160,224,32,224,2,51,67,192,64,96, + 1,54,70,96,64,128,128,64,96,1,22,38,128,128,128,128, + 128,128,1,54,70,192,64,32,32,64,192,5,66,82,80,160, + 2,69,85,240,144,144,144,240,2,0,32,2,53,69,160,0, + 160,160,224,2,54,70,64,128,0,224,192,224,2,54,70,64, + 160,0,96,160,224,2,53,69,160,0,96,160,224,2,54,70, + 64,32,0,96,160,224,2,54,70,64,160,64,96,160,224,1, + 36,52,192,128,192,192,2,54,70,64,160,0,224,192,224,2, + 53,69,160,0,224,192,224,2,54,70,64,32,0,224,192,224, + 2,52,68,160,0,64,64,2,53,149,64,160,0,64,64,2, + 37,53,128,64,0,64,64,2,69,85,144,96,144,240,144,2, + 70,86,96,144,96,144,240,144,2,70,86,32,64,240,224,128, + 240,2,83,99,120,176,248,2,132,148,31,46,120,143,2,54, + 70,64,160,0,224,160,224,2,53,69,160,0,224,160,224,2, + 54,70,128,64,0,224,160,224,2,54,70,64,160,0,160,160, + 224,2,54,70,64,32,0,160,160,224,1,54,70,160,0,160, + 224,32,96,2,69,85,144,96,144,144,96,2,69,85,144,0, + 144,144,240,2,0,64,2,0,64,2,0,64,2,0,64,2, + 0,64,2,54,70,64,128,0,96,160,224,2,37,53,64,128, + 0,128,128,2,54,70,32,64,0,224,160,224,2,54,70,32, + 64,0,160,160,224,2,70,70,80,160,0,192,160,160,2,70, + 86,80,160,144,208,176,144,2,21,37,128,128,0,128,128,1, + 54,70,224,128,224,224,32,224,6,65,81,144,1,119,151,124, + 130,186,162,186,130,124,2,0,144,2,51,67,96,192,96,3, + 50,66,224,32,2,0,144,1,119,151,124,130,186,178,170,130, + 124,6,65,81,240,4,51,67,224,160,224,2,52,148,64,224, + 64,224,4,51,67,192,64,96,4,35,51,192,64,192,5,34, + 50,64,128,1,52,148,160,160,224,128,1,101,117,124,244,116, + 20,20,19,17,49,128,2,0,144,4,35,51,192,64,64,4, + 51,67,224,160,224,2,51,67,192,96,192,1,118,134,196,72, + 80,40,78,132,1,118,134,196,72,80,44,68,134,1,118,150, + 196,72,208,40,78,132,2,0,64,2,70,86,64,32,96,144, + 240,144,2,70,86,32,64,96,144,240,144,2,70,86,96,144, + 96,144,240,144,2,70,86,80,160,96,144,240,144,2,69,85, + 144,96,144,240,144,2,70,86,96,0,96,144,240,144,2,132, + 148,31,46,120,143,1,69,85,240,128,240,32,96,2,70,86, + 64,32,240,224,128,240,2,70,86,32,64,240,224,128,240,2, + 70,86,96,144,240,224,128,240,2,70,86,144,0,240,224,128, + 240,2,38,54,128,64,128,128,128,128,2,38,54,64,128,64, + 64,64,64,2,54,70,64,160,64,64,64,64,2,53,69,160, + 64,64,64,64,2,84,100,112,232,72,112,2,70,86,80,160, + 0,144,208,176,2,70,86,64,32,96,144,144,96,2,70,86, + 32,64,96,144,144,96,2,70,86,96,144,96,144,144,96,2, + 70,86,80,160,96,144,144,96,2,69,85,144,96,144,144,96, + 2,51,67,160,64,160,1,102,118,4,56,88,104,112,128,2, + 70,86,64,32,144,144,144,240,2,70,86,32,64,144,144,144, + 240,2,70,86,96,144,0,144,144,240,2,69,85,144,0,144, + 144,240,2,70,86,32,64,144,240,16,240,1,70,86,128,224, + 144,144,224,128,1,53,69,192,192,160,192,128,2,54,70,64, + 32,0,96,160,224,2,54,70,64,128,0,96,160,224,2,54, + 70,64,160,0,96,160,224,2,70,70,80,160,0,96,160,224, + 2,53,69,160,0,96,160,224,2,54,70,64,160,64,96,160, + 224,2,83,99,120,176,248,1,36,52,192,128,192,192,2,54, + 70,64,32,0,224,192,224,2,54,70,64,128,0,224,192,224, + 2,54,70,64,160,0,224,192,224,2,53,69,160,0,224,192, + 224,2,37,53,128,64,0,64,64,2,37,53,64,128,0,128, + 128,2,53,69,64,160,0,64,64,2,52,68,160,0,64,64, + 2,70,86,96,96,16,112,144,96,2,70,70,80,160,0,192, + 160,160,2,54,70,64,32,0,224,160,224,2,54,70,64,128, + 0,224,160,224,2,54,70,64,160,0,224,160,224,2,70,70, + 80,160,0,224,160,224,2,53,69,160,0,224,160,224,2,53, + 69,64,0,224,0,64,1,85,101,8,112,80,112,128,2,54, + 70,64,32,0,160,160,224,2,54,70,64,128,0,160,160,224, + 2,54,70,64,160,0,160,160,224,2,53,69,160,0,160,160, + 224,1,55,71,64,128,0,160,224,32,96,1,53,69,128,192, + 160,192,128,1,54,150,160,0,160,224,32,96}; +/* + Fontname: u8glib_4 + Copyright: public domain + Capital A Height: 4, '1' Height: 4 + Calculated Max Values w= 5 h= 6 x= 0 y= 3 dx= 6 dy= 0 ascent= 5 len= 6 + Font Bounding box w=10 h= 6 x= 0 y=-1 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 4 descent=-1 + X Font ascent = 5 descent=-1 + Max Font ascent = 5 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[664] U8G_SECTION(".progmem.u8g_font_u8glib_4r") = { + 1,10,6,0,255,4,0,233,1,198,32,127,255,5,255,5, + 255,2,0,32,2,20,36,128,128,0,128,5,50,66,160,160, + 1,85,101,80,248,80,248,80,1,86,102,32,120,224,56,240, + 32,2,68,84,144,32,64,144,2,69,85,64,160,64,160,240, + 5,18,34,128,128,1,38,54,64,128,128,128,128,64,1,38, + 54,128,64,64,64,64,128,3,34,50,192,192,2,51,67,64, + 224,64,1,18,34,128,128,3,49,65,224,2,17,33,128,2, + 68,84,16,32,64,128,2,52,68,224,160,160,224,2,36,52, + 64,192,64,64,2,52,68,224,32,64,224,2,52,68,224,64, + 32,224,2,52,68,128,160,224,32,2,52,68,224,192,32,224, + 2,52,68,224,128,224,224,2,52,68,224,32,64,128,2,52, + 68,224,224,160,224,2,52,68,224,224,32,224,2,19,35,128, + 0,128,1,20,36,128,0,128,128,2,35,51,64,128,64,2, + 51,67,224,0,224,2,35,51,128,64,128,2,36,52,192,64, + 0,64,2,68,84,240,176,128,240,2,68,84,96,144,240,144, + 2,68,84,224,240,144,240,2,52,68,96,128,128,96,2,68, + 84,224,144,144,224,2,68,84,240,224,128,240,2,68,84,240, + 128,224,128,2,68,84,240,128,176,240,2,68,84,144,240,144, + 144,2,20,36,128,128,128,128,2,52,68,224,32,32,192,2, + 68,84,144,224,144,144,2,52,68,128,128,128,224,2,84,100, + 136,216,168,136,2,68,84,144,208,176,144,2,68,84,96,144, + 144,96,2,68,84,224,144,224,128,2,84,100,240,144,144,232, + 2,68,84,240,240,160,144,2,68,84,112,192,48,224,2,52, + 68,224,64,64,64,2,68,84,144,144,144,240,2,68,84,144, + 144,144,96,2,84,100,136,168,168,80,2,52,68,160,64,64, + 160,2,68,84,144,240,16,240,2,68,84,240,32,64,240,1, + 38,54,192,128,128,128,128,192,2,68,84,128,64,32,16,1, + 38,54,192,64,64,64,64,192,5,50,66,64,160,1,65,81, + 240,5,34,50,128,64,2,51,67,96,160,224,2,52,68,128, + 192,160,192,2,35,51,192,128,192,2,52,68,32,96,160,96, + 2,51,67,224,192,224,2,52,68,32,64,224,64,1,52,68, + 224,224,32,96,2,52,68,128,192,160,160,2,20,36,128,0, + 128,128,1,37,53,64,0,64,64,128,2,52,68,128,160,192, + 160,2,20,36,128,128,128,128,2,83,99,208,168,168,2,51, + 67,192,160,160,2,51,67,224,160,224,1,52,68,192,160,192, + 128,1,52,68,96,160,96,32,2,35,51,192,128,128,2,51, + 67,96,64,192,2,52,68,64,224,64,96,2,51,67,160,160, + 224,2,51,67,160,160,64,2,83,99,136,168,80,2,51,67, + 160,64,160,1,52,68,160,224,32,224,2,51,67,192,64,96, + 1,54,70,96,64,128,128,64,96,1,22,38,128,128,128,128, + 128,128,1,54,70,192,64,32,32,64,192,5,66,82,80,160, + 2,69,85,240,144,144,144,240}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[4239] U8G_SECTION(".progmem.u8g_font_unifont_0_8") = { + 0,16,16,0,254,10,1,231,3,213,32,255,254,14,254,11, + 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,157,202,82,115, + 211,194,82,66,93,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,73,157,202,82,122,93,202,80,73,145,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,147,202,82,115,159,202,18,114, + 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,147,234, + 82,91,159,202,82,75,147,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,116,185,166,164,37,165,164,164,116,185,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,75,209,234,16,91,209,202, + 16,75,223,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 205,194,18,49,159,136,82,115,147,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,121,205,194,18,121,159,192,82,123,147,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,75,157,201,32,121, + 25,201,4,73,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,75,185,201,8,121,9,201,8,73,49,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,205,196,144,68,137,168,132,16, + 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,114,29,202, + 18,114,19,194,18,67,221,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,19,202,18,114,19,194,18,67,205,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,14,33,137,32,14,33,138, + 32,9,33,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 221,194,2,49,141,136,80,115,159,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,57,221,194,2,49,141,136,66,115,157,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,207,202,16,74, + 13,202,2,113,221,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,69,202,76,114,69,194,68,65,143,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,114,93,202,66,114,77,194,80,65, + 159,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,157,193, + 32,49,25,137,4,113,57,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,211,194,18,66,31,194,18,57,211,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,69,17,237,16,85,81,197, + 176,69,17,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, + 141,194,82,51,159,138,18,114,19,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,123,141,194,82,123,159,194,18,122,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,57,143,194,80,50, + 77,138,66,113,157,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,155,196,34,37,163,148,162,99,155,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,221,194,8,50,9,138,8,113, + 221,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,57,221,194, + 8,65,137,192,72,59,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,14,249,144,32,12,33,130,32,28,33,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,49,207,202,16,73,145,200, + 80,51,143,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, + 33,203,96,114,161,194,32,66,33,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,51,143,202,80,123,145,202,16,74,15,128, + 0,0,1,128,0,0,1,128,0,85,85,6,13,13,8,1, + 0,96,24,0,252,128,128,128,248,128,128,128,128,252,6,14, + 14,8,1,0,72,72,0,0,252,128,128,128,248,128,128,128, + 128,252,7,10,10,8,1,0,252,32,32,32,60,34,34,34, + 34,44,6,14,14,8,1,0,24,96,0,0,252,128,128,128, + 128,128,128,128,128,128,6,10,10,8,1,0,56,68,128,128, + 248,128,128,128,68,56,6,10,10,8,1,0,120,132,132,128, + 96,24,4,132,132,120,5,10,10,8,2,0,248,32,32,32, + 32,32,32,32,32,248,5,14,14,8,2,0,144,144,0,0, + 248,32,32,32,32,32,32,32,32,248,6,10,10,8,1,0, + 28,8,8,8,8,8,8,136,136,112,8,10,10,8,0,0, + 120,72,72,72,78,73,73,73,73,142,7,10,10,8,1,0, + 144,144,144,144,252,146,146,146,146,156,7,10,10,8,1,0, + 252,32,32,32,60,34,34,34,34,34,6,14,14,8,1,0, + 24,96,0,0,128,140,144,160,192,192,160,144,136,132,6,13, + 13,8,1,0,96,24,0,132,140,140,148,148,164,164,196,196, + 132,7,14,14,8,1,0,132,132,120,0,130,130,68,68,40, + 40,16,16,32,96,7,10,10,8,1,0,130,130,130,130,130, + 130,254,16,16,16,6,10,10,8,1,0,48,72,72,132,132, + 132,252,132,132,132,6,10,10,8,1,0,248,128,128,128,248, + 132,132,132,132,248,6,10,10,8,1,0,248,132,132,132,248, + 132,132,132,132,248,6,10,10,8,1,0,252,128,128,128,128, + 128,128,128,128,128,8,12,12,8,0,254,14,18,18,18,34, + 34,34,66,66,255,129,129,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,7,10,10,8,1,0,146,146,84, + 84,56,56,84,84,146,146,6,10,10,8,1,0,120,132,4, + 4,120,8,4,4,132,120,6,10,10,8,1,0,132,140,140, + 148,148,164,164,196,196,132,6,13,13,8,1,0,72,48,0, + 132,140,140,148,148,164,164,196,196,132,6,10,10,8,1,0, + 128,140,144,160,192,192,160,144,136,132,6,10,10,8,1,0, + 60,36,36,36,36,36,36,68,68,132,6,10,10,8,1,0, + 132,132,204,204,180,180,132,132,132,132,6,10,10,8,1,0, + 132,132,132,132,252,132,132,132,132,132,6,10,10,8,1,0, + 120,132,132,132,132,132,132,132,132,120,6,10,10,8,1,0, + 252,132,132,132,132,132,132,132,132,132,6,10,10,8,1,0, + 248,132,132,132,248,128,128,128,128,128,6,10,10,8,1,0, + 120,132,132,128,128,128,128,132,132,120,7,10,10,8,1,0, + 254,16,16,16,16,16,16,16,16,16,7,10,10,8,1,0, + 130,130,68,68,40,40,16,16,32,96,7,11,11,8,1,0, + 16,124,146,146,146,146,146,124,16,16,16,6,10,10,8,1, + 0,132,132,72,72,48,48,72,72,132,132,7,12,12,8,1, + 254,132,132,132,132,132,132,132,132,132,254,2,2,6,10,10, + 8,1,0,132,132,132,132,132,252,4,4,4,4,7,10,10, + 8,1,0,146,146,146,146,146,146,146,146,146,254,8,12,12, + 8,0,254,146,146,146,146,146,146,146,146,146,255,1,1,7, + 10,10,8,1,0,224,32,32,32,60,34,34,34,34,60,6, + 10,10,8,1,0,132,132,132,132,228,148,148,148,148,228,6, + 10,10,8,1,0,128,128,128,128,248,132,132,132,132,248,6, + 10,10,8,1,0,112,136,4,4,124,4,4,4,136,112,6, + 10,10,8,1,0,152,164,164,164,228,164,164,164,164,152,6, + 10,10,8,1,0,124,132,132,132,124,36,68,68,132,132,6, + 8,8,8,1,0,120,132,4,124,132,132,140,116,6,12,12, + 8,1,0,4,56,64,128,248,132,132,132,132,132,132,120,6, + 8,8,8,1,0,248,132,132,248,132,132,132,248,6,8,8, + 8,1,0,252,128,128,128,128,128,128,128,7,9,9,8,1, + 255,60,36,68,68,132,132,132,254,130,6,8,8,8,1,0, + 120,132,132,252,128,128,132,120,7,8,8,8,1,0,146,146, + 84,56,56,84,146,146,6,8,8,8,1,0,120,132,4,120, + 8,4,132,120,6,8,8,8,1,0,140,140,148,148,164,164, + 196,196,6,12,12,8,1,0,72,48,0,0,140,140,148,148, + 164,164,196,196,6,8,8,8,1,0,140,144,160,192,160,144, + 136,132,6,8,8,8,1,0,60,36,36,36,36,68,68,132, + 6,8,8,8,1,0,132,204,204,180,180,132,132,132,6,8, + 8,8,1,0,132,132,132,252,132,132,132,132,6,8,8,8, + 1,0,120,132,132,132,132,132,132,120,6,8,8,8,1,0, + 252,132,132,132,132,132,132,132,6,10,10,8,1,254,248,132, + 132,132,132,248,128,128,128,128,6,8,8,8,1,0,120,132, + 128,128,128,128,132,120,7,8,8,8,1,0,254,16,16,16, + 16,16,16,16,6,10,10,8,1,254,132,132,72,72,48,48, + 32,32,64,192,7,10,10,8,1,255,16,16,124,146,146,146, + 146,124,16,16,6,8,8,8,1,0,132,132,72,48,48,72, + 132,132,7,10,10,8,1,254,132,132,132,132,132,132,132,254, + 2,2,6,8,8,8,1,0,132,132,132,132,252,4,4,4, + 7,8,8,8,1,0,146,146,146,146,146,146,146,254,8,10, + 10,8,0,254,146,146,146,146,146,146,146,255,1,1,7,8, + 8,8,1,0,224,32,32,60,34,34,34,60,6,8,8,8, + 1,0,132,132,132,228,148,148,148,228,6,8,8,8,1,0, + 128,128,128,248,132,132,132,248,6,8,8,8,1,0,112,136, + 4,124,4,4,136,112,6,8,8,8,1,0,152,164,164,228, + 164,164,164,152,6,8,8,8,1,0,124,132,132,132,124,36, + 68,132,6,12,12,8,1,0,96,24,0,0,120,132,132,252, + 128,128,132,120,6,12,12,8,1,0,72,72,0,0,120,132, + 132,252,128,128,132,120,6,11,11,8,1,255,64,64,240,64, + 64,120,68,68,68,68,24,6,12,12,8,1,0,24,96,0, + 0,252,128,128,128,128,128,128,128,6,8,8,8,1,0,56, + 68,128,248,128,128,68,56,6,8,8,8,1,0,120,132,128, + 96,24,4,132,120,5,11,11,8,2,0,32,32,0,96,32, + 32,32,32,32,32,248,5,11,11,8,2,0,144,144,0,96, + 32,32,32,32,32,32,248,5,13,13,8,1,254,8,8,0, + 24,8,8,8,8,8,8,8,144,96,8,8,8,8,0,0, + 120,72,72,78,73,73,73,142,7,8,8,8,1,0,144,144, + 144,252,146,146,146,156,6,10,10,8,1,0,64,64,240,64, + 64,88,100,68,68,68,6,12,12,8,1,0,24,96,0,0, + 140,144,160,192,160,144,136,132,6,12,12,8,1,0,96,24, + 0,0,140,140,148,148,164,164,196,196,6,15,15,8,1,254, + 132,132,120,0,0,132,132,72,72,48,48,32,32,64,192,5, + 10,10,8,2,254,136,136,136,136,136,136,248,32,32,32}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 8, '1' Height: 7 + Calculated Max Values w=16 h=16 x= 9 y=11 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 2 + X Font ascent =13 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[3934] U8G_SECTION(".progmem.u8g_font_unifont_12_13") = { + 0,16,16,0,254,8,4,93,5,214,0,255,2,14,254,13, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,85,85,128, + 0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128, + 4,42,13,170,12,53,245,128,0,0,1,170,170,16,16,32, + 16,0,254,85,85,128,0,0,1,128,0,0,1,128,0,0, + 1,128,0,0,1,142,0,14,25,135,224,0,1,128,0,0, + 1,170,170,16,16,32,16,0,254,85,85,128,0,0,1,128, + 0,0,1,128,0,0,25,128,36,0,69,129,68,1,73,158, + 240,0,1,128,0,0,1,170,170,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,12,14,28,16,1,255,1,80,225,80,33,160,17,0,17, + 0,9,0,8,0,4,224,4,128,2,128,3,0,3,0,2, + 0,2,0,11,15,30,16,1,255,0,64,0,128,225,0,33, + 64,16,128,17,32,8,192,8,0,4,224,4,128,2,128,3, + 0,3,0,2,0,2,0,12,7,14,16,2,3,1,144,58, + 96,202,192,17,64,16,64,32,128,31,0,5,10,10,8,1, + 1,8,8,80,16,32,32,64,64,136,160,7,10,10,8,1, + 1,8,8,80,16,32,32,64,66,136,160,10,10,20,16,3, + 2,48,0,48,0,6,0,9,0,7,0,1,0,14,0,240, + 128,0,64,0,64,2,4,4,8,3,3,64,128,192,192,5, + 4,4,8,1,2,24,48,64,128,12,4,8,16,3,1,112, + 0,136,0,136,48,127,192,7,11,11,16,2,0,24,32,32, + 24,32,76,82,98,36,88,128,6,4,4,8,2,9,24,36, + 228,88,9,6,12,16,4,7,3,0,4,0,39,128,56,0, + 64,0,128,0,10,5,10,16,3,8,252,64,16,64,32,128, + 71,0,64,0,11,4,8,16,2,9,24,32,36,32,228,64, + 89,128,10,4,8,16,3,8,0,64,254,64,1,64,0,128, + 7,4,4,16,4,9,64,92,98,252,8,6,6,16,3,8, + 40,40,40,104,128,127,3,5,5,16,6,8,32,0,32,32, + 192,4,2,2,16,6,10,48,192,5,5,5,16,5,8,16, + 40,48,96,144,4,13,13,16,6,254,240,0,0,0,0,0, + 0,0,0,0,0,48,192,2,5,5,8,3,2,64,128,192, + 0,192,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,3,3,3,16,7,0, + 64,0,160,7,9,9,8,1,2,124,130,128,64,32,16,16, + 0,16,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,4,5,5,8,2,2,112,128,240,64, + 128,7,10,10,8,1,3,2,124,128,16,16,16,16,16,16, + 16,3,11,11,8,2,3,96,128,96,128,32,32,32,32,32, + 32,32,6,13,13,8,1,255,24,32,24,32,0,24,36,36, + 60,4,8,144,96,3,12,12,8,3,254,64,64,64,64,64, + 64,64,0,96,128,96,128,6,11,11,8,1,255,48,64,48, + 64,0,140,144,144,140,132,120,1,8,8,8,4,3,128,128, + 128,128,128,128,128,128,6,7,7,8,1,0,8,68,132,120, + 0,0,16,5,8,8,8,2,3,144,0,0,96,144,136,136, + 112,6,7,7,8,1,3,40,0,0,8,68,132,120,6,9, + 9,8,1,3,32,0,80,0,0,8,68,132,120,6,8,8, + 8,1,254,252,32,64,128,144,128,68,56,6,8,8,8,1, + 254,252,32,64,128,128,128,68,56,6,11,11,8,1,254,32, + 0,0,252,32,64,128,128,128,68,56,6,5,5,8,1,3, + 16,8,4,132,248,6,7,7,8,1,3,64,0,16,8,4, + 132,248,6,7,7,8,1,255,8,4,4,4,8,144,96,6, + 10,10,8,1,255,32,0,0,8,4,4,4,8,144,96,7, + 7,7,8,1,255,2,42,42,188,144,144,96,7,12,12,8, + 1,255,16,0,36,0,0,2,42,42,188,144,144,96,7,6, + 6,8,1,0,12,50,156,144,144,96,7,9,9,8,1,0, + 8,0,0,12,50,156,144,144,96,6,8,8,8,1,3,64, + 64,64,64,88,100,68,248,6,8,8,8,1,3,64,72,64, + 64,88,100,68,248,6,9,9,8,1,254,48,72,64,56,64, + 128,128,132,120,6,12,12,8,1,254,16,0,0,48,72,64, + 56,64,128,128,132,120,7,9,9,8,0,3,80,4,8,16, + 32,64,60,130,126,7,12,12,8,0,255,4,8,16,32,64, + 60,130,126,0,40,0,16,6,10,10,8,1,255,64,160,160, + 8,148,144,136,132,132,120,6,9,9,8,1,255,160,0,8, + 148,144,136,132,132,120,6,10,10,8,1,255,64,0,160,8, + 148,144,136,132,132,120,8,1,1,8,0,3,255,6,8,8, + 8,1,3,16,0,12,20,12,132,132,120,6,10,10,8,1, + 0,72,0,0,56,36,20,76,132,136,112,6,8,8,8,1, + 3,4,20,36,20,68,132,132,120,6,11,11,8,1,0,4, + 4,4,4,4,4,68,132,132,136,120,5,8,8,8,2,254, + 112,24,120,128,128,128,128,128,6,9,9,8,1,0,32,0, + 0,8,68,132,132,136,112,10,9,18,16,1,1,4,0,3, + 0,6,128,10,64,10,64,6,64,25,128,96,0,128,0,6, + 8,8,8,1,255,24,36,36,60,4,8,144,96,6,7,7, + 8,1,255,8,148,144,136,132,132,120,6,8,8,8,1,254, + 8,148,144,136,132,120,0,80,4,4,4,8,2,9,48,192, + 48,192,5,5,5,8,2,8,24,24,200,80,224,4,4,4, + 8,2,0,32,192,48,192,4,2,2,8,2,9,48,192,4, + 6,6,8,2,6,64,160,160,112,64,128,4,2,2,8,2, + 254,48,192,5,4,4,8,1,7,8,40,176,192,4,4,4, + 8,2,7,96,144,144,96,7,3,3,8,1,9,2,124,128, + 3,4,4,8,2,10,96,128,96,128,3,4,4,8,2,254, + 96,128,96,128,2,3,3,16,9,254,128,64,64,5,5,5, + 16,5,9,8,16,32,224,96,4,3,3,16,6,9,144,144, + 96,4,1,1,16,6,10,240,5,4,4,16,5,9,136,80, + 32,32,5,4,4,16,5,9,32,32,80,136,2,2,2,16, + 7,0,192,192,5,5,5,16,5,9,96,224,32,16,8,4, + 4,4,16,6,9,144,96,96,144,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,3,3,3, + 8,2,5,64,224,64,4,9,9,8,2,2,128,128,64,64, + 32,32,16,16,16,5,9,9,8,2,2,136,144,96,64,32, + 32,16,16,16,7,9,9,8,1,2,146,164,120,64,32,32, + 16,16,16,6,9,9,8,1,2,8,16,32,64,48,64,128, + 132,120,6,9,9,8,1,2,48,72,72,132,132,132,132,72, + 48,7,9,9,8,1,2,128,120,8,8,4,4,4,2,2, + 7,9,9,8,1,2,130,130,68,68,40,40,16,16,16,7, + 9,9,8,1,2,16,16,16,40,40,68,68,130,130,7,9, + 9,8,1,2,48,72,136,152,104,4,4,2,2,5,10,10, + 8,1,2,8,8,144,144,32,32,72,72,128,128,2,4,4, + 8,3,1,192,192,64,128,2,4,4,8,3,7,192,192,64, + 128,7,6,6,8,1,3,16,16,254,56,108,68,6,4,4, + 8,1,3,8,68,132,120,8,7,7,16,1,3,6,9,9, + 7,65,130,124,1,4,4,8,4,7,128,128,128,128,5,11, + 11,8,2,3,16,40,120,128,32,32,32,32,32,32,32,6, + 11,11,8,1,3,12,16,76,176,0,16,16,16,16,16,16, + 6,12,12,8,1,254,16,16,16,16,16,16,16,0,12,16, + 76,176,3,4,4,8,2,10,96,128,96,128,5,11,11,8, + 2,3,24,32,24,32,128,128,128,128,128,128,128,7,13,13, + 8,1,255,6,8,6,8,0,24,36,36,60,4,8,144,96, + 7,13,13,8,1,255,102,104,38,72,128,24,36,36,60,4, + 8,144,96,7,11,11,8,1,255,6,8,6,8,0,140,144, + 144,140,132,120,6,9,9,8,1,3,64,64,112,112,0,8, + 68,132,120,6,9,9,8,1,3,32,0,32,0,0,8,68, + 132,120,6,8,8,8,1,255,8,68,132,120,0,16,0,16, + 6,10,10,8,1,0,40,0,0,8,68,132,120,16,40,16, + 6,9,9,8,1,3,80,0,32,0,0,8,68,132,120,6, + 8,8,8,1,255,8,68,132,120,0,40,0,16,6,9,9, + 8,1,3,80,0,80,0,0,8,68,132,120,6,8,8,8, + 1,255,8,68,132,120,0,40,0,40,6,13,13,8,1,254, + 48,64,48,64,0,252,32,64,128,128,128,68,56,6,13,13, + 8,1,254,32,0,32,0,0,252,32,64,128,128,128,68,56, + 6,8,8,8,1,254,252,32,64,128,168,128,68,56,6,8, + 8,8,1,254,252,32,64,144,128,144,68,56,6,13,13,8, + 1,254,32,0,72,0,0,252,32,64,128,128,128,68,56,6, + 8,8,8,1,254,252,64,128,168,128,144,68,56,6,8,8, + 8,1,254,252,64,128,168,128,168,68,56,6,10,10,8,1, + 3,64,64,112,112,0,16,8,4,132,248,6,8,8,8,1, + 0,16,8,4,132,248,16,40,16,6,7,7,8,1,1,16, + 8,4,132,248,0,16,6,12,12,8,1,1,64,64,112,112, + 0,16,8,4,132,248,0,16,6,8,8,8,1,3,80,0, + 0,16,8,4,132,248,6,7,7,8,1,1,16,8,4,132, + 248,0,80,6,9,9,8,1,3,32,0,80,0,16,8,4, + 132,248,6,9,9,8,1,3,80,0,32,0,16,8,4,132, + 248,6,9,9,8,1,3,80,0,80,0,16,8,4,132,248, + 6,13,13,8,1,255,16,16,28,28,0,0,8,4,4,4, + 8,144,96,7,13,13,8,1,255,34,20,8,8,0,0,8, + 4,4,4,8,144,96,6,8,8,8,1,254,8,4,4,4, + 8,152,116,8,6,7,7,8,1,255,8,4,4,4,8,144, + 100,7,8,8,8,1,254,16,8,8,8,16,144,106,4,6, + 7,7,8,1,255,8,4,4,36,8,144,100,6,10,10,8, + 1,255,36,0,0,8,4,4,4,8,144,96,6,12,12,8, + 1,255,16,0,40,0,0,8,4,4,4,8,144,96,6,12, + 12,8,1,255,36,0,36,0,0,8,4,4,4,8,144,96, + 7,10,10,8,1,0,8,0,0,2,42,42,188,144,148,96, + 7,8,8,8,1,255,2,42,42,188,160,170,64,4,7,13, + 13,8,1,255,16,0,36,0,0,2,42,42,188,160,170,64, + 4,7,6,6,8,1,0,12,50,156,160,170,64,7,11,11, + 8,1,0,16,0,36,0,0,12,50,156,144,144,96,6,8, + 8,8,1,3,72,64,84,64,88,100,68,248,6,14,14,8, + 1,254,32,0,72,0,0,48,72,64,56,64,128,128,132,120, + 6,6,6,8,1,3,12,20,12,132,132,120,6,8,8,8, + 1,1,12,20,12,132,132,120,0,16,6,11,11,8,1,1, + 8,0,0,12,20,12,132,132,120,0,16,6,10,10,8,1, + 3,16,0,36,0,12,20,12,132,132,120,6,10,10,8,1, + 255,12,20,12,132,132,120,0,72,0,32,6,10,10,8,1, + 3,20,0,20,0,12,20,12,132,132,120,6,10,10,8,1, + 0,8,0,0,56,36,20,76,132,136,112,6,12,12,8,1, + 0,32,0,72,0,0,56,36,20,76,132,136,112,7,8,8, + 8,0,3,4,8,16,32,64,60,130,126,14,8,16,16,1, + 3,0,48,0,192,3,0,12,0,16,0,15,248,128,4,127, + 248,7,8,8,8,0,3,4,12,26,36,64,60,130,126,6, + 10,10,8,1,3,16,0,4,20,36,20,68,132,132,120,6, + 11,11,8,1,3,32,0,80,4,20,36,20,68,132,132,120, + 6,12,12,8,1,255,4,20,36,20,68,132,132,120,0,40, + 0,16,7,10,10,8,0,3,8,16,36,72,16,32,64,60, + 130,126,7,10,10,8,0,3,8,16,36,76,26,36,64,60, + 130,126,7,10,10,8,0,3,80,6,24,98,12,48,64,60, + 130,126,7,12,12,8,0,1,8,16,36,72,16,32,64,60, + 130,126,0,40,7,14,14,8,0,255,8,16,36,72,16,32, + 64,60,130,126,0,16,0,16,7,11,11,8,0,3,64,0, + 166,24,98,12,48,64,60,130,126,7,14,14,8,1,0,34, + 20,8,8,0,4,4,4,4,68,132,132,136,120,6,13,13, + 8,1,0,4,0,4,4,4,4,4,4,68,132,132,136,120, + 7,14,14,8,1,0,8,0,18,0,4,4,4,4,4,68, + 132,132,136,120,6,13,13,8,1,254,4,4,4,4,4,4, + 68,132,120,0,40,0,16,6,11,11,8,1,254,16,0,0, + 8,68,132,132,136,112,0,16,6,6,6,8,1,0,8,68, + 132,132,136,112,6,12,12,8,1,0,32,32,56,56,0,0, + 8,68,132,132,136,112,6,11,11,8,1,254,16,0,0,8, + 68,132,132,136,120,20,8,6,11,11,8,1,0,32,0,72, + 0,0,8,68,132,132,136,112,6,6,6,8,1,2,32,88, + 84,52,72,128,6,11,11,8,1,254,32,0,0,252,64,128, + 168,128,144,68,56,4,10,10,8,2,3,96,128,96,128,0, + 64,96,144,144,240,6,3,3,8,1,2,32,92,128,6,8, + 8,8,1,2,48,64,48,64,0,32,92,128,6,6,6,8, + 1,2,80,0,0,32,92,128,6,8,8,8,1,255,24,36, + 36,28,68,164,72,240,6,8,8,8,1,255,24,36,36,60, + 4,56,144,96,6,13,13,8,1,255,68,40,16,16,0,24, + 36,36,60,4,8,144,96,6,14,14,8,1,255,32,80,80, + 56,32,64,152,36,36,60,4,8,144,96,6,12,12,8,1, + 255,16,8,8,0,24,36,36,60,4,8,144,96,6,12,12, + 8,1,255,16,40,68,0,24,36,36,60,4,8,144,96,6, + 11,11,8,1,255,40,0,0,24,36,36,60,4,8,144,96, + 6,13,13,8,1,255,16,0,36,0,0,24,36,36,60,4, + 8,144,96,6,7,7,8,1,255,8,148,144,136,132,132,120, + 7,7,7,8,0,255,4,42,104,164,34,34,28,6,12,12, + 8,1,255,136,80,32,32,0,8,148,144,136,132,132,120,6, + 11,11,8,1,255,16,0,0,24,36,36,60,4,8,144,96, + 6,9,9,8,1,254,24,164,144,136,112,0,32,0,32,6, + 9,9,8,1,254,24,164,144,136,112,0,80,0,32,7,6, + 6,8,1,255,16,40,32,64,128,254,7,10,10,8,1,255, + 96,128,96,128,16,40,32,64,128,254,4,1,1,8,2,3, + 240,4,5,5,8,2,3,64,96,144,144,240,11,5,10,16, + 3,9,16,64,18,224,127,224,128,0,254,0,10,5,10,16, + 3,9,18,64,17,0,127,0,128,0,254,0,6,4,4,16, + 5,9,8,20,60,192,5,5,5,16,4,9,136,72,48,16, + 48,8,5,5,16,3,9,252,32,72,33,30,3,3,3,16, + 4,8,160,0,128,9,4,8,16,4,9,18,128,159,128,144, + 0,96,0,16,16,32,16,0,254,85,85,128,0,1,193,134, + 48,11,233,140,24,16,5,144,4,16,5,140,24,11,233,134, + 48,1,193,128,0,0,1,170,170,15,15,30,16,1,254,1, + 0,2,128,63,248,40,40,48,24,35,136,100,76,164,74,100, + 76,35,136,48,24,40,40,63,248,2,128,1,0,3,4,4, + 16,6,9,96,160,160,96,4,5,5,16,6,9,96,144,144, + 144,96,6,3,3,16,5,10,252,48,64,3,5,5,16,6, + 9,96,224,128,128,64,9,4,8,16,4,254,18,128,159,128, + 144,0,96,0,6,2,2,16,5,10,12,240,5,4,4,8, + 2,9,24,24,16,224,7,4,4,8,1,9,32,64,128,254, + 7,4,4,16,3,9,32,64,128,254,6,4,4,16,5,9, + 16,132,132,124,15,15,30,16,1,254,1,0,2,128,5,64, + 10,160,21,80,42,168,84,84,42,168,42,168,42,168,43,168, + 40,40,47,232,96,12,255,254,5,5,5,16,5,9,32,80, + 136,80,32,5,5,5,16,5,254,32,80,136,80,32,2,2, + 2,16,7,11,192,192,2,4,4,16,7,254,192,128,128,64, + 6,9,9,8,1,3,16,40,68,0,16,8,4,132,248,7, + 11,11,8,1,255,8,20,34,0,8,4,4,4,8,144,96, + 3,3,3,8,2,5,64,224,64,4,9,9,8,2,2,128, + 128,64,64,32,32,16,16,16,5,9,9,8,2,2,136,144, + 96,64,32,32,16,16,16,7,9,9,8,1,2,146,164,120, + 64,32,32,16,16,16,6,9,9,8,1,2,48,72,192,228, + 88,64,32,32,32,7,9,9,8,1,1,16,16,40,40,68, + 68,146,170,198,6,8,8,8,1,2,56,68,64,64,48,12, + 48,192,7,9,9,8,1,2,130,130,68,68,40,40,16,16, + 16,7,9,9,8,1,2,16,16,16,40,40,68,68,130,130, + 7,9,9,8,1,2,48,72,136,152,104,4,4,2,2,7, + 12,12,8,1,0,16,0,36,0,0,2,42,42,188,144,148, + 96,7,9,9,8,1,0,8,0,0,12,50,156,144,148,96, + 6,12,12,8,1,254,16,0,0,48,72,64,56,64,144,128, + 132,120,4,10,10,8,2,254,112,128,240,64,128,0,80,80, + 80,80,6,8,8,8,1,254,56,12,124,128,148,148,148,148, + 10,12,24,16,1,1,4,0,10,0,17,0,4,0,3,0, + 6,128,10,64,10,64,6,64,25,128,96,0,128,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 3, '1' Height: 12 + Calculated Max Values w=16 h=16 x=12 y=11 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent=-2 + X Font ascent =12 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[6498] U8G_SECTION(".progmem.u8g_font_unifont_18_19") = { + 0,16,16,0,254,3,7,129,10,5,0,255,254,14,254,12, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,8,4,4,16,4,9,152,91,35, + 28,2,2,2,16,7,11,192,192,2,5,5,16,12,3,192, + 192,0,192,192,14,15,30,16,2,255,32,0,31,0,0,128, + 57,252,68,192,4,192,12,192,56,192,8,192,135,192,134,192, + 78,192,60,192,0,192,0,64,15,12,24,16,1,255,57,254, + 68,192,4,192,12,192,56,192,8,192,135,192,134,192,78,192, + 60,192,0,192,0,64,15,12,24,16,1,255,57,254,68,204, + 4,204,12,204,56,204,8,204,135,204,134,204,78,204,60,204, + 0,204,0,68,16,13,26,16,0,254,255,255,0,192,0,192, + 15,192,24,0,24,0,15,224,0,48,3,48,5,176,7,224, + 0,64,0,32,16,16,32,16,0,254,3,192,6,32,1,0, + 255,255,0,192,0,192,15,192,24,0,24,0,15,224,0,48, + 3,48,5,176,7,224,0,64,0,32,16,12,24,16,0,255, + 255,255,1,128,0,192,0,192,1,192,15,128,65,128,64,192, + 32,192,16,192,9,192,7,128,16,12,24,16,0,255,255,255, + 1,128,0,192,0,192,1,192,15,156,65,178,64,226,32,194, + 16,198,9,196,7,128,16,13,26,16,0,254,255,255,1,128, + 57,128,101,152,3,152,7,248,31,136,57,136,33,156,1,184, + 1,160,0,160,0,30,16,12,24,16,0,255,255,255,0,32, + 0,32,56,32,116,248,99,204,99,12,48,12,16,120,12,192, + 2,128,0,124,16,16,32,16,0,254,0,152,0,112,0,0, + 255,255,12,48,12,48,12,48,12,48,12,96,4,0,2,0, + 1,128,0,96,0,16,0,24,0,24,16,16,32,16,0,254, + 16,0,15,224,0,16,255,255,12,48,12,48,12,48,12,48, + 12,96,4,0,2,0,1,128,0,96,0,16,0,24,0,24, + 16,13,26,16,0,254,255,255,12,48,12,48,12,48,12,48, + 12,96,4,0,2,0,1,128,0,96,0,16,0,24,0,24, + 16,16,32,16,0,254,15,0,0,128,0,64,255,255,12,48, + 12,48,12,48,12,48,12,96,4,0,2,0,1,128,0,96, + 0,16,0,24,0,24,15,15,30,16,1,255,0,76,0,60, + 0,0,57,254,68,204,4,204,12,204,56,204,8,204,135,204, + 134,204,78,204,60,204,0,204,0,68,15,15,30,16,1,255, + 2,0,1,240,0,8,57,254,68,204,4,204,12,204,56,204, + 8,204,135,204,134,204,78,204,60,204,0,204,0,68,15,15, + 30,16,1,255,1,192,0,32,0,16,57,254,68,204,4,204, + 12,204,56,204,8,204,135,204,134,204,78,204,60,204,0,204, + 0,68,15,15,30,16,1,255,0,224,1,208,0,40,57,254, + 68,204,4,204,12,204,56,204,8,204,135,204,134,204,78,204, + 60,204,0,204,0,68,16,12,24,16,0,255,255,255,1,128, + 1,128,29,128,51,224,35,144,39,152,29,152,1,152,1,152, + 1,128,0,128,16,12,24,16,0,255,255,255,8,24,8,24, + 9,216,59,56,58,24,18,56,17,216,8,24,6,24,1,152, + 0,8,16,12,24,16,0,255,255,255,1,152,1,152,1,152, + 1,152,7,152,3,152,1,152,0,152,0,24,0,24,0,8, + 16,12,24,16,0,255,255,255,12,24,12,24,7,216,2,24, + 4,24,4,56,4,120,3,216,0,24,0,24,0,8,16,11, + 22,16,0,0,255,255,0,96,0,96,15,224,24,0,24,4, + 15,206,0,100,16,96,8,96,7,192,16,12,24,16,0,255, + 255,255,0,24,0,24,0,24,31,248,3,24,6,56,6,120, + 3,216,0,24,0,24,0,8,16,13,26,16,0,254,255,255, + 0,16,0,16,60,120,112,228,96,196,32,68,31,44,12,24, + 24,56,24,100,7,134,0,6,16,12,24,16,0,255,255,255, + 0,24,0,24,0,24,3,248,17,152,8,216,8,216,7,152, + 0,24,0,24,0,8,16,12,24,16,0,255,255,255,3,24, + 3,24,31,24,48,24,48,24,31,248,1,24,13,24,22,24, + 29,24,0,136,16,12,24,16,0,255,255,255,0,24,0,24, + 7,24,5,152,33,184,33,248,33,216,19,152,15,24,0,24, + 0,8,16,11,22,16,0,0,255,255,0,192,0,192,0,192, + 7,192,12,0,24,0,24,0,24,0,12,16,7,224,16,12, + 24,16,0,255,255,255,1,128,1,128,1,128,3,128,7,96, + 12,16,8,24,8,24,8,56,4,112,3,224,16,11,22,16, + 0,0,255,255,0,24,0,24,3,248,6,0,6,0,3,240, + 0,24,4,24,2,24,1,240,16,12,24,16,0,255,255,255, + 0,96,0,96,7,224,12,0,24,0,24,192,25,160,9,16, + 5,16,3,48,1,224,16,12,24,16,0,255,255,255,25,152, + 25,152,25,152,25,152,25,152,9,152,7,24,0,24,0,24, + 0,24,0,8,16,12,24,16,0,255,255,255,0,24,0,24, + 0,24,7,248,14,24,12,24,12,24,6,24,2,24,1,24, + 0,136,13,12,24,16,3,255,227,248,216,192,204,192,76,192, + 28,192,120,192,97,192,35,192,30,192,0,192,0,192,0,64, + 16,12,24,16,0,255,255,255,0,24,0,24,0,24,1,248, + 2,0,6,0,6,24,2,40,1,240,0,8,0,4,13,12, + 24,16,3,255,115,248,200,192,192,192,192,192,96,192,28,192, + 48,192,96,192,97,192,99,192,30,192,0,64,16,12,24,16, + 0,255,255,255,0,24,0,24,0,24,7,248,6,24,6,24, + 2,24,0,24,0,24,0,24,0,8,16,12,24,16,0,255, + 255,255,0,24,0,24,0,24,7,248,6,24,6,24,2,24, + 0,24,1,24,3,152,1,8,16,12,24,16,0,255,255,255, + 6,24,6,24,6,24,6,24,6,24,2,56,1,216,0,24, + 0,24,0,24,0,8,16,12,24,16,0,255,255,255,49,128, + 49,128,49,128,49,240,49,200,19,132,15,132,1,132,1,140, + 1,140,0,128,16,12,24,16,0,255,255,255,0,24,0,24, + 7,216,14,120,13,24,12,152,12,120,7,248,0,24,0,24, + 0,8,14,12,24,16,2,255,227,252,216,96,200,96,76,96, + 60,96,12,96,31,224,28,96,12,96,0,96,0,96,0,32, + 16,12,24,16,0,255,255,255,6,24,6,24,6,24,6,24, + 6,24,15,248,6,24,2,24,0,24,0,24,0,8,16,12, + 24,16,0,255,255,255,3,24,3,24,3,24,3,24,6,24, + 4,56,4,120,3,216,0,24,0,24,0,8,16,12,24,16, + 0,255,255,255,0,192,0,192,0,192,3,192,3,128,3,128, + 1,0,0,128,0,64,0,32,0,24,16,12,24,16,0,255, + 255,255,0,192,0,192,0,192,3,192,3,128,3,128,1,0, + 0,128,4,64,14,32,4,24,16,12,24,16,0,255,255,255, + 0,24,0,24,28,56,58,248,49,216,49,152,24,24,8,24, + 4,24,3,24,0,8,16,11,22,16,0,0,255,255,0,48, + 0,48,0,112,14,200,25,140,49,140,49,140,49,152,19,112, + 14,0,16,13,26,16,0,254,255,255,0,48,0,48,0,112, + 14,200,25,140,49,140,49,140,49,152,19,112,14,0,0,192, + 0,192,16,12,24,16,0,255,255,255,0,24,0,24,3,216, + 15,56,12,24,12,56,4,120,3,216,0,24,0,24,0,8, + 16,12,24,16,0,255,255,255,6,24,6,24,31,24,1,152, + 1,152,25,152,21,24,30,24,2,24,1,24,0,136,16,12, + 24,16,0,255,255,255,12,24,14,24,13,24,12,152,12,88, + 12,56,6,56,1,216,0,24,0,24,0,8,16,12,24,16, + 0,255,255,255,3,24,3,24,3,24,11,24,15,24,14,248, + 4,24,4,24,2,24,1,24,0,136,16,12,24,16,0,255, + 255,255,0,24,0,24,7,248,12,0,12,0,6,240,1,152, + 3,16,3,0,1,128,0,252,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 2,2,2,16,7,255,192,192,9,11,22,16,7,0,63,128, + 64,0,64,0,96,0,48,0,24,0,8,0,12,0,12,0, + 156,0,120,0,6,13,13,16,10,254,252,48,48,48,48,48, + 48,48,48,48,48,48,16,8,14,14,16,0,0,60,98,49, + 252,48,48,48,48,48,48,48,48,48,16,9,16,32,16,7, + 254,120,0,132,0,132,0,31,128,6,0,6,0,6,0,6, + 0,6,0,6,0,6,0,6,0,6,0,6,0,6,0,2, + 0,6,3,3,16,4,255,152,68,56,6,3,3,16,6,255, + 112,136,100,4,3,3,16,6,255,96,128,112,3,5,5,16, + 6,255,96,128,96,128,96,5,3,3,16,5,10,136,72,48, + 5,3,3,16,4,10,128,112,8,5,3,3,16,4,10,224, + 16,8,6,4,4,16,3,9,112,8,228,28,6,16,16,16, + 10,254,136,120,0,252,48,48,48,48,48,48,48,48,48,48, + 48,16,8,16,16,16,8,254,128,120,4,63,12,12,12,12, + 12,12,12,12,12,12,12,4,8,16,16,16,8,254,240,8, + 4,63,12,12,12,12,12,12,12,12,12,12,12,4,9,16, + 32,16,7,254,120,0,244,0,10,0,31,128,6,0,6,0, + 6,0,6,0,6,0,6,0,6,0,6,0,6,0,6,0, + 6,0,2,0,5,3,3,16,6,255,224,16,8,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,14,14,28,16,1,0,0,96,0,96,0, + 0,113,8,248,240,4,0,4,24,24,60,48,36,8,36,132, + 124,135,216,121,128,48,0,1,3,3,16,8,10,128,128,128, + 4,1,1,16,6,0,240,3,3,3,16,6,10,128,64,32, + 3,3,3,16,7,10,32,64,128,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,13,26,16,0,254,255,255,0,192,0, + 192,14,192,25,248,17,200,19,204,14,204,0,204,0,204,4, + 192,14,64,4,0,16,13,26,16,0,254,255,255,8,24,8, + 24,9,216,59,56,58,24,18,56,17,216,8,24,4,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,1,152,1, + 152,1,152,1,152,7,152,3,152,1,152,0,152,0,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,0,24,0, + 24,0,24,3,248,17,152,8,216,8,216,7,152,0,24,0, + 152,1,200,0,128,16,13,26,16,0,254,255,255,0,24,0, + 24,3,248,6,0,6,0,3,240,0,24,4,24,3,240,0, + 0,0,192,0,192,16,13,26,16,0,254,255,255,0,96,0, + 96,7,224,12,0,24,224,25,144,25,16,13,48,7,224,0, + 0,1,128,1,128,16,13,26,16,0,254,255,255,49,128,49, + 128,49,128,49,240,49,200,19,132,15,132,1,132,1,140,9, + 140,28,128,8,0,16,13,26,16,0,254,255,255,3,24,3, + 24,3,24,3,24,6,24,4,56,4,120,3,216,0,24,1, + 24,3,136,1,0,16,13,26,16,0,254,255,255,3,0,3, + 0,51,24,75,40,7,240,15,24,51,8,67,24,3,48,3, + 28,1,16,0,14,16,13,26,16,0,254,255,255,0,32,0, + 32,30,112,49,152,49,152,16,48,8,96,4,192,0,60,0, + 192,0,192,0,60,8,5,5,16,4,255,72,146,130,68,3, + 8,6,6,16,4,254,72,146,132,67,4,3,2,12,12,16, + 7,255,128,192,192,192,192,192,192,192,192,192,192,64,5,12, + 12,16,6,255,144,216,216,216,216,216,216,216,216,216,216,72, + 8,7,7,16,4,2,60,78,199,195,227,114,60,6,13,13, + 16,5,254,112,232,204,204,76,60,24,48,96,32,16,8,4, + 9,13,26,16,4,254,252,0,226,0,1,0,1,0,1,0, + 3,0,54,0,44,0,56,0,4,0,2,0,1,0,0,128, + 8,13,13,16,4,254,252,226,2,2,60,2,1,51,46,60, + 4,2,1,12,12,24,16,2,255,128,16,64,48,32,96,16, + 192,9,128,7,0,6,0,13,0,9,128,9,128,9,128,7, + 0,8,13,13,16,4,254,192,195,195,67,62,12,12,104,88, + 120,4,2,1,8,13,13,16,4,254,60,192,128,192,124,16, + 32,35,51,15,4,4,2,11,11,22,16,3,0,128,0,135, + 0,142,192,140,64,68,96,67,224,64,32,32,32,32,64,24, + 192,7,0,10,10,20,16,3,1,255,192,32,0,64,0,128, + 0,128,0,131,0,135,128,124,128,56,128,0,128,8,12,12, + 16,4,255,56,100,98,97,32,56,72,192,192,192,32,31,5, + 4,4,16,6,3,112,136,136,112,2,2,2,16,8,6,192, + 192,15,15,30,16,1,255,2,0,1,32,0,192,57,254,68, + 192,4,192,12,192,56,192,8,192,135,192,134,192,78,192,60, + 192,0,192,0,64,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,12,24,16,0,255,255,255,1,152,1, + 152,1,152,1,152,7,152,3,152,1,152,0,152,0,24,0, + 24,15,248,16,12,24,16,0,255,255,255,0,24,0,24,0, + 24,3,248,17,152,8,216,8,216,7,152,0,24,0,24,31, + 248,8,13,13,16,4,254,124,226,193,1,1,3,62,60,48, + 48,48,48,16,16,13,26,16,0,254,255,255,0,24,0,24, + 3,248,6,0,6,0,3,240,0,24,4,24,2,24,1,240, + 0,0,15,254,16,12,24,16,0,255,255,255,0,24,0,24, + 7,216,14,120,13,24,12,152,12,120,7,248,0,24,0,24, + 15,248,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,4,4,16,5,9,48,180,132,120, + 5,8,8,16,11,0,96,144,96,0,192,96,48,8,4,7, + 7,16,11,1,96,144,96,0,96,144,96,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,16, + 12,24,16,0,255,255,255,0,12,64,12,67,140,71,204,71, + 236,99,44,32,108,48,124,24,220,15,140,0,4,16,13,26, + 16,0,255,0,6,255,247,0,110,64,102,70,102,79,102,79, + 102,69,102,65,102,97,102,51,230,30,102,0,34,16,15,30, + 16,0,255,32,0,31,192,0,32,255,255,0,0,15,192,24, + 96,60,48,60,48,24,48,0,96,63,192,7,0,1,192,0, + 124,16,15,30,16,0,255,32,0,31,240,0,8,255,255,30, + 0,63,12,59,30,25,56,1,248,1,240,3,144,79,16,60, + 16,16,24,0,14,16,15,30,16,0,255,16,0,15,224,0, + 16,255,255,3,0,3,0,67,0,67,16,67,56,99,108,33, + 204,48,12,24,12,14,24,3,240,16,15,30,16,0,255,16, + 0,15,224,0,16,255,255,3,0,3,0,83,0,83,16,83, + 56,83,108,73,204,40,12,36,12,18,24,15,240,15,14,28, + 16,1,255,64,0,228,0,230,206,133,204,121,204,3,204,14, + 204,120,204,96,236,120,252,14,220,3,204,1,204,0,68,14, + 14,28,16,1,255,64,0,128,0,128,0,64,0,127,192,31, + 240,0,56,15,12,24,140,56,76,56,76,56,76,16,216,3, + 240,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,14,13,26,16,1,255,0, + 48,0,248,1,140,3,12,135,140,135,140,131,12,128,12,192, + 12,64,108,96,156,51,12,14,4,14,15,30,16,1,255,0, + 8,0,16,0,16,0,216,3,236,6,52,140,52,158,52,158, + 52,140,56,192,48,65,176,98,112,60,48,24,16,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,14,13,26,16,1,255,0,240,3,24,6, + 12,14,12,142,12,134,120,192,248,64,120,96,12,48,12,24, + 12,12,24,7,240,14,15,30,16,1,255,0,8,0,16,0, + 16,7,216,8,108,28,52,28,52,156,52,137,228,131,248,193, + 224,64,48,96,48,48,112,31,224,16,12,24,16,0,255,255, + 255,0,96,0,96,1,248,7,100,60,98,48,98,60,110,7, + 108,1,224,0,224,0,32,14,13,26,16,2,255,64,0,226, + 60,227,48,197,48,121,48,1,48,6,48,120,48,126,48,1, + 176,0,112,0,48,0,16,14,12,24,16,2,255,62,124,113, + 96,224,224,224,96,252,96,70,96,6,96,6,96,28,96,120, + 96,32,96,0,32,16,12,24,16,0,255,255,255,24,24,48, + 24,56,24,31,152,1,152,6,24,12,24,31,24,1,216,0, + 56,0,8,12,13,26,16,2,255,32,0,35,192,22,64,12, + 64,15,128,140,0,136,32,136,112,199,176,64,48,96,48,48, + 96,31,128,16,12,24,16,0,255,255,255,24,0,24,0,28, + 0,27,0,24,252,24,12,24,12,24,12,24,24,28,48,15, + 192,16,12,24,16,0,255,255,255,24,0,24,0,28,0,27, + 224,24,56,24,104,28,200,15,16,0,96,1,248,0,14,16, + 12,24,16,0,255,255,255,1,240,3,28,70,15,76,2,76, + 196,79,36,102,44,32,44,48,100,24,196,15,131,16,12,24, + 16,0,255,255,231,0,102,0,102,1,230,7,102,60,102,48, + 102,60,102,7,126,1,238,0,230,0,34,14,13,26,16,1, + 255,7,0,13,128,25,176,49,248,57,204,185,140,145,184,129, + 140,193,204,199,248,111,176,121,128,48,128,16,15,30,16,0, + 255,16,0,15,192,0,32,255,255,24,0,24,0,24,0,24, + 96,24,240,24,112,24,48,24,96,24,192,15,128,7,0,16, + 15,30,16,0,255,16,0,15,0,0,128,255,255,0,128,0, + 128,0,192,1,192,1,96,35,48,58,24,20,24,24,24,12, + 48,7,224,16,12,24,16,0,255,255,255,3,0,3,0,67, + 0,67,16,67,56,99,108,33,204,48,12,24,12,14,24,3, + 240,16,12,24,16,0,255,255,255,24,0,24,0,24,0,24, + 96,24,240,24,112,24,48,24,96,24,192,15,128,7,0,13, + 13,26,16,3,255,28,96,62,120,97,96,192,224,192,224,224, + 96,224,96,64,96,0,96,0,96,0,96,0,96,0,32,16, + 12,24,16,0,255,255,255,0,0,65,248,67,12,67,132,67, + 134,99,134,33,6,48,6,24,12,12,28,7,240,15,13,26, + 16,1,255,60,0,98,62,241,48,241,48,97,48,1,48,6, + 48,120,48,126,48,1,176,0,112,0,48,0,16,16,12,24, + 16,0,255,255,255,12,0,12,0,12,120,12,240,13,224,13, + 96,15,96,14,96,14,96,12,48,8,28,12,13,26,16,4, + 255,96,0,240,240,224,192,128,192,99,192,30,192,56,192,224, + 192,248,192,14,192,3,192,1,192,0,64,16,12,24,16,0, + 255,255,255,0,24,0,24,0,24,0,24,30,24,63,152,60, + 216,56,120,0,56,0,24,0,8,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,15,13,26, + 16,1,255,14,48,31,190,48,240,96,112,240,240,155,176,14, + 48,24,48,32,48,0,48,0,48,0,48,0,16,16,12,24, + 16,0,255,255,255,16,0,56,120,12,100,6,98,12,98,24, + 110,48,108,63,96,1,224,0,96,0,32,16,12,24,16,0, + 255,255,255,0,24,0,24,0,120,3,216,7,24,28,24,31, + 24,1,216,0,120,0,56,0,8,16,12,24,16,0,255,255, + 255,0,0,66,16,71,8,71,12,70,20,99,230,32,6,48, + 6,24,12,12,28,7,240,16,12,24,16,0,255,255,255,12, + 24,28,24,14,24,3,24,3,24,3,24,15,216,30,120,12, + 56,0,24,0,8,16,12,24,16,0,255,255,255,8,48,28, + 48,6,48,3,48,6,48,12,48,24,48,31,176,0,240,0, + 48,0,16,16,12,24,16,0,255,255,255,0,24,0,120,3, + 216,7,24,28,24,31,24,1,216,2,120,7,56,7,24,2, + 8,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,16,12,24,16,0,255,255,255,0,6,0, + 6,28,22,62,62,99,102,65,198,65,198,64,134,124,6,60, + 6,24,2,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,15, + 13,26,16,1,255,112,204,249,238,143,60,143,28,31,140,63, + 204,25,140,0,12,0,12,0,12,0,12,0,12,0,4,16, + 12,24,16,0,255,255,255,28,24,14,24,7,152,1,216,6, + 120,28,24,31,24,1,216,0,120,0,56,0,8,16,12,24, + 16,0,255,255,255,16,12,56,12,28,12,6,12,2,204,1, + 236,3,28,102,12,60,12,24,12,0,4,16,12,24,16,0, + 255,255,255,0,0,15,192,24,96,60,48,60,48,24,48,0, + 96,63,192,7,0,1,192,0,124,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,2,2,2,16,7,255,192,192,14,12,24,16,0,255,240, + 0,8,0,15,192,28,96,60,48,60,48,24,48,0,96,63, + 192,7,0,1,192,0,124,5,10,10,16,11,255,48,184,112, + 48,48,48,48,48,48,16,13,14,28,16,0,255,15,128,63, + 224,96,16,96,8,32,0,248,0,48,0,48,0,48,0,48, + 0,48,0,48,0,48,0,16,0,12,14,28,16,4,255,63, + 0,65,128,128,192,190,64,65,64,1,240,0,192,0,192,0, + 192,0,192,0,192,0,192,0,192,0,64,6,5,5,16,5, + 254,4,104,144,104,4,6,5,5,16,6,254,96,128,112,8, + 4,5,5,5,16,5,254,24,96,128,96,24,3,5,5,16, + 6,255,96,128,96,128,64,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,5, + 9,9,16,0,255,248,24,48,96,64,64,64,88,56,5,12, + 12,16,0,255,128,112,8,248,24,48,96,64,64,64,88,56, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,16,10,20,16,0,255,0,6, + 248,23,24,14,48,6,96,6,64,6,64,6,64,6,88,6, + 56,2,16,13,26,16,0,255,0,128,0,112,0,8,0,4, + 248,23,24,14,48,6,96,6,64,6,64,6,64,6,88,6, + 56,2,5,3,3,16,6,0,192,48,8,8,12,12,16,4, + 255,56,92,204,236,216,192,96,56,12,6,3,1,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,8,13,13, + 16,8,255,128,112,8,4,23,14,6,6,6,6,6,6,2, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 16,13,26,16,0,254,255,255,3,0,67,16,67,56,99,108, + 35,204,49,140,24,12,14,24,3,240,0,0,0,192,0,192, + 16,13,26,16,0,254,255,255,12,0,12,0,12,0,12,48, + 12,120,12,56,12,48,7,224,3,192,0,0,1,128,1,128, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,16,13,26,16,0,254,255,255,4,24,14,24, + 3,24,1,152,3,24,6,24,12,24,15,216,0,120,1,24, + 3,136,1,0,15,15,30,16,1,254,64,0,228,0,230,206, + 133,204,121,204,3,204,14,204,120,204,96,236,120,252,14,220, + 123,204,97,204,120,68,14,0,8,14,14,16,4,255,128,124, + 3,121,197,205,158,128,124,3,121,197,205,158,7,5,5,16, + 5,255,124,2,114,202,220,10,6,12,16,5,255,3,128,112, + 64,10,64,77,64,173,128,176,0,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,10,11,22,16,3,0,30,0,63,0,97,128,192,192,192, + 192,192,192,192,192,192,192,97,128,63,0,30,0,9,12,24, + 16,4,0,64,0,64,0,96,0,56,0,14,0,3,0,1, + 128,97,128,225,128,225,128,195,0,126,0,10,11,22,16,3, + 0,224,0,56,0,14,0,3,0,3,0,227,0,126,0,28, + 0,6,0,1,128,0,64,12,12,24,16,2,255,131,192,132, + 96,136,48,140,48,142,48,142,48,134,48,64,48,64,96,32, + 96,17,192,15,0,11,13,26,16,2,255,31,0,63,128,96, + 192,64,64,96,192,49,128,31,0,96,192,192,96,192,96,224, + 224,127,192,31,0,11,13,26,16,2,255,7,0,30,0,57, + 96,112,192,97,128,195,0,198,0,198,0,198,0,198,0,99, + 96,48,192,31,128,12,12,24,16,2,255,28,0,12,0,12, + 0,140,0,140,96,140,160,141,176,199,48,64,48,96,48,48, + 96,31,192,9,13,26,16,4,255,60,0,126,0,195,0,195, + 0,199,0,127,0,59,0,3,0,3,0,3,0,3,0,3, + 0,1,128,13,13,26,16,1,255,224,0,96,0,96,0,96, + 8,103,240,127,192,112,96,96,96,96,96,96,96,112,192,63, + 128,30,0,12,15,30,16,2,254,128,0,128,0,96,0,60, + 0,15,0,3,192,0,224,0,48,60,48,66,48,225,48,225, + 48,225,96,65,192,1,0,16,12,24,16,0,255,255,255,0, + 24,0,24,0,120,3,216,7,152,28,120,31,24,1,216,0, + 120,0,56,0,8,16,13,26,16,0,254,255,255,0,24,0, + 24,0,120,3,216,7,24,28,24,31,24,1,216,28,120,7, + 56,1,136,0,64,9,8,16,16,3,3,224,0,248,0,124, + 0,14,0,3,0,1,0,0,128,0,128,12,13,26,16,1, + 255,48,0,120,0,204,0,12,0,31,240,12,0,12,96,12, + 240,12,240,12,48,12,96,7,192,3,128,9,8,16,16,3, + 2,0,128,0,128,1,0,3,0,14,0,124,0,248,0,224, + 0,12,9,18,16,2,2,56,16,124,16,226,32,242,96,242, + 192,98,192,7,128,15,0,14,0,12,13,26,16,2,255,0, + 16,0,16,0,16,56,16,124,16,126,16,62,16,6,48,12, + 96,248,224,193,192,127,128,30,0,2,13,13,16,8,255,128, + 192,192,192,192,192,192,192,192,192,192,192,64,11,13,26,16, + 2,255,224,0,96,0,96,192,97,192,99,192,98,192,102,192, + 108,192,120,192,112,192,96,192,0,192,0,96,11,10,20,16, + 3,1,31,0,63,128,96,192,192,96,192,96,192,96,192,96, + 96,192,63,128,31,0,14,9,18,16,1,255,0,4,2,4, + 135,8,135,8,66,16,96,48,48,96,31,192,15,0,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,168,84,168,84,6,14,14,8,1,255,168,84,168,84, + 168,84,168,84,168,84,168,84,168,84,6,14,14,8,1,255, + 168,84,168,84,168,84,168,84,168,84,168,84,168,84,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,168,84, + 168,84}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 8 + Calculated Max Values w=16 h=16 x= 4 y= 1 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =14 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[4628] U8G_SECTION(".progmem.u8g_font_unifont_2_3") = { + 0,16,16,0,254,10,4,220,7,27,0,255,0,14,254,14, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,6,11,11,8,1,0,120,0,0, + 120,132,4,124,132,132,140,116,6,14,14,8,1,0,132,132, + 120,0,48,72,72,132,132,252,132,132,132,132,6,13,13,8, + 1,0,132,132,120,0,0,120,132,4,124,132,132,140,116,7, + 12,12,8,1,254,48,72,72,132,132,252,132,132,132,132,8, + 6,7,10,10,8,1,254,120,132,4,124,132,132,140,116,8, + 6,6,14,14,8,1,0,24,96,0,0,120,132,132,128,128, + 128,128,132,132,120,6,12,12,8,1,0,24,96,0,0,120, + 132,128,128,128,128,132,120,6,14,14,8,1,0,48,72,0, + 0,120,132,132,128,128,128,128,132,132,120,6,12,12,8,1, + 0,48,72,0,0,120,132,128,128,128,128,132,120,6,14,14, + 8,1,0,32,32,0,0,120,132,132,128,128,128,128,132,132, + 120,6,12,12,8,1,0,32,32,0,0,120,132,128,128,128, + 128,132,120,6,14,14,8,1,0,72,48,0,0,120,132,132, + 128,128,128,128,132,132,120,6,12,12,8,1,0,72,48,0, + 0,120,132,128,128,128,128,132,120,6,14,14,8,1,0,144, + 96,0,0,240,136,132,132,132,132,132,132,136,240,6,14,14, + 8,1,0,72,48,0,4,4,4,116,140,132,132,132,132,140, + 116,7,10,10,8,0,0,120,68,66,66,242,66,66,66,68, + 120,7,12,12,8,1,0,4,30,4,4,116,140,132,132,132, + 132,140,116,6,13,13,8,1,0,120,0,0,252,128,128,128, + 248,128,128,128,128,252,6,11,11,8,1,0,120,0,0,120, + 132,132,252,128,128,132,120,6,14,14,8,1,0,132,132,120, + 0,252,128,128,128,248,128,128,128,128,252,6,12,12,8,1, + 0,132,132,120,0,120,132,132,252,128,128,132,120,6,14,14, + 8,1,0,32,32,0,0,252,128,128,128,248,128,128,128,128, + 252,6,12,12,8,1,0,32,32,0,0,120,132,132,252,128, + 128,132,120,6,12,12,8,1,254,252,128,128,128,248,128,128, + 128,128,252,16,12,6,10,10,8,1,254,120,132,132,252,128, + 128,132,120,32,24,6,14,14,8,1,0,72,48,0,0,252, + 128,128,128,248,128,128,128,128,252,6,12,12,8,1,0,72, + 48,0,0,120,132,132,252,128,128,132,120,6,14,14,8,1, + 0,48,72,0,0,120,132,132,128,128,156,132,132,140,116,6, + 14,14,8,1,254,48,72,0,4,116,136,136,136,112,64,120, + 132,132,120,6,14,14,8,1,0,132,132,120,0,120,132,132, + 128,128,156,132,132,140,116,6,15,15,8,1,254,132,132,120, + 0,4,116,136,136,136,112,64,120,132,132,120,6,14,14,8, + 1,0,32,32,0,0,120,132,132,128,128,156,132,132,140,116, + 6,14,14,8,1,254,32,32,0,4,116,136,136,136,112,64, + 120,132,132,120,6,12,12,8,1,254,120,132,132,128,128,156, + 132,132,140,116,16,96,6,14,14,8,1,254,24,32,0,4, + 116,136,136,136,112,64,120,132,132,120,6,14,14,8,1,0, + 48,72,0,0,132,132,132,132,252,132,132,132,132,132,6,14, + 14,8,1,0,96,144,0,128,128,128,184,196,132,132,132,132, + 132,132,8,10,10,8,0,0,66,66,255,66,66,126,66,66, + 66,66,7,11,11,8,0,1,64,240,64,64,92,98,66,66, + 66,66,66,6,14,14,8,1,0,100,152,0,0,124,16,16, + 16,16,16,16,16,16,124,6,12,12,8,1,0,100,152,0, + 0,48,16,16,16,16,16,16,124,5,13,13,8,2,0,240, + 0,0,248,32,32,32,32,32,32,32,32,248,5,11,11,8, + 2,0,240,0,0,96,32,32,32,32,32,32,248,6,14,14, + 8,1,0,132,132,120,0,124,16,16,16,16,16,16,16,16, + 124,6,12,12,8,1,0,132,132,120,0,48,16,16,16,16, + 16,16,124,5,12,12,8,2,254,248,32,32,32,32,32,32, + 32,32,248,32,24,5,13,13,8,2,254,32,32,0,96,32, + 32,32,32,32,32,248,32,24,5,14,14,8,2,0,32,32, + 0,0,248,32,32,32,32,32,32,32,32,248,5,8,8,8, + 2,0,96,32,32,32,32,32,32,248,6,10,10,8,1,0, + 132,132,132,132,132,132,4,4,132,120,5,14,14,8,2,254, + 136,136,0,0,136,136,136,136,136,136,104,8,136,112,7,14, + 14,8,1,0,24,36,0,0,62,8,8,8,8,8,8,136, + 136,112,6,14,14,8,1,254,24,36,0,0,24,8,8,8, + 8,8,8,8,144,96,7,12,12,8,0,254,66,68,72,80, + 96,96,80,72,68,66,32,192,7,12,12,8,0,254,64,64, + 68,72,80,96,80,72,68,66,32,192,6,8,8,8,1,0, + 132,136,144,224,224,144,136,132,6,14,14,8,1,0,48,192, + 0,0,128,128,128,128,128,128,128,128,128,252,5,14,14,8, + 2,0,48,192,0,0,96,32,32,32,32,32,32,32,32,248, + 6,12,12,8,1,254,128,128,128,128,128,128,128,128,128,252, + 16,96,5,12,12,8,2,254,96,32,32,32,32,32,32,32, + 32,248,32,192,6,14,14,8,1,0,72,48,0,0,128,128, + 128,128,128,128,128,128,128,252,5,14,14,8,2,0,144,96, + 0,0,96,32,32,32,32,32,32,32,32,248,6,10,10,8, + 1,0,128,128,128,128,136,136,128,128,128,252,5,10,10,8, + 1,0,96,32,32,32,40,40,32,32,32,248,7,10,10,8, + 0,0,64,64,72,80,96,192,64,64,64,126,5,10,10,8, + 2,0,96,32,40,48,96,160,32,32,32,248,6,14,14,8, + 1,0,24,96,0,0,132,196,196,164,164,148,148,140,140,132, + 6,12,12,8,1,0,24,96,0,0,184,196,132,132,132,132, + 132,132,7,12,12,8,0,254,66,98,98,82,82,74,74,70, + 70,66,32,192,7,10,10,8,0,254,92,98,66,66,66,66, + 66,66,32,192,6,14,14,8,1,0,72,48,0,0,132,196, + 196,164,164,148,148,140,140,132,6,12,12,8,1,0,72,48, + 0,0,184,196,132,132,132,132,132,132,6,13,13,8,1,0, + 192,64,64,128,0,184,196,132,132,132,132,132,132,6,10,10, + 8,1,0,184,196,132,132,132,132,132,132,132,152,6,10,10, + 8,1,254,184,196,132,132,132,132,132,132,4,24,6,13,13, + 8,1,0,120,0,0,120,132,132,132,132,132,132,132,132,120, + 6,11,11,8,1,0,120,0,0,120,132,132,132,132,132,132, + 120,6,14,14,8,1,0,132,132,120,0,120,132,132,132,132, + 132,132,132,132,120,6,12,12,8,1,0,132,132,120,0,120, + 132,132,132,132,132,132,120,7,14,14,8,1,0,102,136,0, + 0,120,132,132,132,132,132,132,132,132,120,7,12,12,8,1, + 0,102,136,0,0,120,132,132,132,132,132,132,120,7,10,10, + 8,1,0,110,144,144,144,156,144,144,144,144,110,7,8,8, + 8,1,0,108,146,146,158,144,144,146,108,6,14,14,8,1, + 0,24,96,0,0,248,132,132,132,248,144,136,136,132,132,6, + 12,12,8,1,0,24,96,0,0,184,196,132,128,128,128,128, + 128,7,12,12,8,0,254,124,66,66,66,124,72,68,68,66, + 66,32,192,7,10,10,8,0,254,92,98,66,64,64,64,64, + 64,32,192,6,14,14,8,1,0,72,48,0,0,248,132,132, + 132,248,144,136,136,132,132,6,12,12,8,1,0,72,48,0, + 0,184,196,132,128,128,128,128,128,6,14,14,8,1,0,24, + 96,0,0,120,132,132,128,96,24,4,132,132,120,6,12,12, + 8,1,0,24,96,0,0,120,132,128,96,24,132,132,120,6, + 14,14,8,1,0,48,72,0,0,120,132,132,128,96,24,4, + 132,132,120,6,12,12,8,1,0,48,72,0,0,120,132,128, + 96,24,4,132,120,6,12,12,8,1,254,120,132,132,128,96, + 24,4,132,132,120,16,96,6,10,10,8,1,254,120,132,128, + 96,24,4,132,120,16,96,6,14,14,8,1,0,72,48,0, + 0,120,132,132,128,96,24,4,132,132,120,6,12,12,8,1, + 0,72,48,0,0,120,132,128,96,24,4,132,120,7,12,12, + 8,1,254,254,16,16,16,16,16,16,16,16,16,16,96,5, + 12,12,8,1,254,32,32,248,32,32,32,32,32,32,24,16, + 96,7,14,14,8,1,0,72,48,0,0,254,16,16,16,16, + 16,16,16,16,16,5,14,14,8,1,0,72,48,0,0,32, + 32,248,32,32,32,32,32,32,24,7,10,10,8,1,0,254, + 16,16,20,24,48,80,16,16,16,5,10,10,8,1,0,32, + 32,248,32,40,48,96,160,32,24,6,14,14,8,1,0,100, + 152,0,0,132,132,132,132,132,132,132,132,132,120,6,12,12, + 8,1,0,100,152,0,0,132,132,132,132,132,132,140,116,6, + 13,13,8,1,0,120,0,0,132,132,132,132,132,132,132,132, + 132,120,6,11,11,8,1,0,120,0,0,132,132,132,132,132, + 132,140,116,6,14,14,8,1,0,132,132,120,0,132,132,132, + 132,132,132,132,132,132,120,6,13,13,8,1,0,132,132,120, + 0,0,132,132,132,132,132,132,140,116,6,14,14,8,1,0, + 48,72,48,0,132,132,132,132,132,132,132,132,132,120,6,12, + 12,8,1,0,48,72,48,0,132,132,132,132,132,132,140,116, + 7,14,14,8,1,0,102,136,0,0,132,132,132,132,132,132, + 132,132,132,120,7,12,12,8,1,0,102,136,0,0,132,132, + 132,132,132,132,140,116,6,12,12,8,1,254,132,132,132,132, + 132,132,132,132,132,120,32,24,7,10,10,8,1,254,132,132, + 132,132,132,132,140,116,8,6,6,14,14,8,1,0,48,72, + 0,0,132,132,132,132,180,180,204,204,132,132,7,12,12,8, + 1,0,48,72,0,0,130,146,146,146,146,146,146,108,7,14, + 14,8,1,0,48,72,0,0,130,130,68,68,40,16,16,16, + 16,16,6,14,14,8,1,254,48,72,0,0,132,132,132,132, + 132,76,52,4,4,120,7,14,14,8,1,0,72,72,0,0, + 130,130,68,68,40,16,16,16,16,16,6,14,14,8,1,0, + 24,96,0,0,252,4,4,8,16,32,64,128,128,252,6,12, + 12,8,1,0,24,96,0,0,252,4,8,16,32,64,128,252, + 6,14,14,8,1,0,32,32,0,0,252,4,4,8,16,32, + 64,128,128,252,6,12,12,8,1,0,32,32,0,0,252,4, + 8,16,32,64,128,252,6,14,14,8,1,0,72,48,0,0, + 252,4,4,8,16,32,64,128,128,252,6,12,12,8,1,0, + 72,48,0,0,252,4,8,16,32,64,128,252,4,11,11,8, + 2,0,48,64,64,64,192,64,64,64,64,64,64,7,11,11, + 8,0,0,64,240,64,92,98,66,66,66,66,98,92,7,10, + 10,8,0,0,124,162,162,34,60,34,34,34,34,60,6,10, + 10,8,1,0,252,128,128,128,248,132,132,132,132,248,6,10, + 10,8,1,0,252,128,128,184,196,132,132,132,196,184,6,10, + 10,8,1,0,192,64,64,64,120,68,68,68,68,120,6,8, + 8,8,1,0,192,64,64,64,120,68,68,120,6,10,10,8, + 1,0,120,132,132,4,4,4,4,132,132,248,7,12,12,8, + 1,0,6,8,120,136,136,128,128,128,128,136,136,112,7,10, + 10,8,1,0,6,8,120,136,128,128,128,128,136,112,7,10, + 10,8,0,0,120,68,66,66,242,66,66,66,68,120,7,10, + 10,8,0,0,120,164,162,34,34,34,34,34,36,56,6,10, + 10,8,1,0,252,4,4,4,124,132,132,132,132,124,6,10, + 10,8,1,0,252,4,4,116,140,132,132,132,140,116,6,10, + 10,8,1,254,120,132,132,132,132,72,48,8,8,112,6,10, + 10,8,1,0,252,4,4,4,124,4,4,4,4,252,6,10, + 10,8,1,0,48,72,132,4,4,252,132,132,72,48,6,10, + 10,8,1,0,120,132,132,128,112,128,128,132,132,120,7,11, + 11,8,1,255,62,32,32,32,60,32,32,32,32,32,192,5, + 12,12,8,1,255,24,32,32,32,248,32,32,32,32,32,32, + 192,7,11,11,8,1,0,6,120,136,136,128,128,184,136,136, + 152,104,6,10,10,8,1,0,132,132,132,72,72,48,48,72, + 72,48,6,11,11,8,1,0,128,128,128,128,228,148,148,148, + 148,148,136,5,10,10,8,1,0,224,32,32,32,32,32,32, + 32,32,24,5,10,10,8,2,0,248,32,32,32,248,32,32, + 32,32,248,6,10,10,8,1,0,140,148,160,160,192,192,160, + 144,136,132,6,11,11,8,1,0,96,128,128,136,144,160,192, + 160,144,136,132,5,10,10,8,2,0,96,32,32,32,248,32, + 32,32,32,248,6,10,10,8,1,0,72,80,32,96,144,48, + 72,72,132,132,7,10,10,8,1,0,146,146,146,146,146,146, + 146,146,146,110,7,11,11,8,0,255,34,34,50,50,42,42, + 38,38,34,34,192,6,10,10,8,1,254,184,196,132,132,132, + 132,132,132,4,4,6,10,10,8,1,0,120,132,132,132,252, + 132,132,132,132,120,6,11,11,8,1,0,4,116,136,136,136, + 136,136,136,136,136,112,6,9,9,8,1,0,4,116,136,136, + 136,136,136,136,112,6,12,12,8,1,254,108,148,148,148,148, + 148,148,148,148,100,4,4,6,10,10,8,1,254,108,148,148, + 148,148,148,148,100,4,4,7,10,10,8,1,0,124,162,162, + 34,60,32,32,32,32,32,7,11,11,8,1,254,6,184,200, + 136,136,136,136,200,176,128,128,7,10,10,8,1,0,224,64, + 120,68,68,120,80,72,68,66,6,10,10,8,1,0,120,132, + 132,4,24,96,128,132,132,120,6,8,8,8,1,0,120,132, + 4,24,96,128,132,120,6,10,10,8,1,0,252,128,64,32, + 16,16,32,64,128,252,5,12,12,8,1,255,64,160,160,96, + 32,32,32,32,32,32,32,24,5,12,12,8,1,254,32,32, + 248,32,32,32,32,32,32,24,8,48,7,10,10,8,1,0, + 126,144,144,16,16,16,16,16,16,16,5,11,11,8,1,0, + 24,32,32,32,248,32,32,32,32,32,24,7,11,11,8,1, + 255,254,16,16,16,16,16,16,16,16,16,12,7,12,12,8, + 1,0,2,2,140,136,136,136,136,136,136,136,136,112,7,10, + 10,8,1,0,2,2,140,136,136,136,136,136,152,104,6,10, + 10,8,1,0,132,72,72,132,132,132,132,132,72,48,6,10, + 10,8,1,0,152,132,132,132,132,132,132,136,144,96,7,10, + 10,8,1,0,98,162,34,20,20,8,8,8,8,8,7,11, + 11,8,1,254,6,136,136,136,136,136,72,56,8,8,112,6, + 10,10,8,1,0,252,4,8,16,120,32,64,128,128,252,6, + 8,8,8,1,0,252,8,16,120,32,64,128,252,6,10,10, + 8,1,0,252,8,16,32,56,4,4,4,140,120,6,10,10, + 8,1,0,252,64,32,16,112,128,128,128,196,120,6,10,10, + 8,1,254,248,64,32,16,112,128,128,128,132,120,6,10,10, + 8,1,254,124,8,16,56,4,4,120,128,132,120,6,10,10, + 8,1,0,120,132,132,8,16,252,64,128,128,252,6,10,10, + 8,1,0,252,64,64,64,120,4,4,4,132,120,6,8,8, + 8,1,0,252,64,64,120,4,4,132,120,5,10,10,8,1, + 0,32,32,248,32,32,48,8,8,136,112,6,10,10,8,1, + 254,184,196,132,132,136,144,160,192,128,128,1,11,11,8,3, + 0,128,128,128,128,128,128,128,128,128,128,128,3,11,11,8, + 2,0,160,160,160,160,160,160,160,160,160,160,160,5,11,11, + 8,1,0,32,32,32,32,248,32,248,32,32,32,32,1,10, + 10,8,4,0,128,128,128,128,128,128,128,0,128,128,7,14, + 14,8,1,0,10,4,0,0,206,162,162,162,164,164,168,168, + 168,206,7,12,12,8,1,0,10,4,192,160,174,162,162,164, + 164,168,168,206,7,12,12,8,1,0,10,36,32,32,110,162, + 162,164,164,168,168,110,7,10,10,8,1,0,142,130,130,130, + 130,130,130,146,146,236,7,13,13,8,1,254,2,130,128,134, + 130,130,130,130,130,130,242,4,24,8,13,13,8,0,254,1, + 97,32,35,33,33,33,33,33,33,249,2,12,7,10,10,8, + 1,0,150,146,146,210,210,178,178,154,154,148,7,13,13,8, + 1,254,2,146,144,214,210,210,178,178,178,146,146,36,24,7, + 13,13,8,1,254,2,2,0,166,210,146,146,146,146,146,146, + 36,24,6,14,14,8,1,0,72,48,0,0,48,72,72,132, + 132,252,132,132,132,132,6,12,12,8,1,0,72,48,0,0, + 120,132,4,124,132,132,140,116,5,14,14,8,2,0,144,96, + 0,0,248,32,32,32,32,32,32,32,32,248,5,12,12,8, + 2,0,144,96,0,0,96,32,32,32,32,32,32,248,6,14, + 14,8,1,0,72,48,0,0,120,132,132,132,132,132,132,132, + 132,120,6,12,12,8,1,0,72,48,0,0,120,132,132,132, + 132,132,132,120,6,14,14,8,1,0,72,48,0,0,132,132, + 132,132,132,132,132,132,132,120,6,12,12,8,1,0,72,48, + 0,0,132,132,132,132,132,132,140,116,6,14,14,8,1,0, + 120,0,72,0,132,132,132,132,132,132,132,132,132,120,6,13, + 13,8,1,0,120,0,72,72,0,132,132,132,132,132,132,140, + 116,6,14,14,8,1,0,24,96,0,72,0,132,132,132,132, + 132,132,132,132,120,6,14,14,8,1,0,24,96,0,72,72, + 0,132,132,132,132,132,132,140,116,6,14,14,8,1,0,72, + 48,0,72,0,132,132,132,132,132,132,132,132,120,6,14,14, + 8,1,0,72,48,0,72,72,0,132,132,132,132,132,132,140, + 116,6,14,14,8,1,0,96,24,0,72,0,132,132,132,132, + 132,132,132,132,120,6,14,14,8,1,0,96,24,0,72,72, + 0,132,132,132,132,132,132,140,116,6,8,8,8,1,0,120, + 132,4,4,252,132,132,120,6,14,14,8,1,0,120,0,72, + 0,48,72,72,132,132,252,132,132,132,132,6,13,13,8,1, + 0,120,0,72,72,0,120,132,4,124,132,132,140,116,6,14, + 14,8,1,0,120,0,48,0,48,72,72,132,132,252,132,132, + 132,132,6,13,13,8,1,0,120,0,32,32,0,120,132,4, + 124,132,132,140,116,7,13,13,8,1,0,120,0,0,62,80, + 144,144,254,144,144,144,144,158,7,11,11,8,1,0,120,0, + 0,124,146,18,126,144,144,146,124,7,10,10,8,1,0,120, + 132,132,128,128,156,132,158,132,124,7,11,11,8,1,254,4, + 116,136,136,136,112,64,120,158,132,120,6,14,14,8,1,0, + 72,48,0,0,120,132,132,128,128,156,132,132,140,116,6,14, + 14,8,1,254,72,48,0,4,116,136,136,136,112,64,120,132, + 132,120,6,14,14,8,1,0,72,48,0,0,132,136,144,160, + 192,192,160,144,136,132,6,14,14,8,1,0,144,96,0,0, + 128,128,136,144,160,192,160,144,136,132,6,12,12,8,1,254, + 120,132,132,132,132,132,132,132,132,120,32,24,6,10,10,8, + 1,254,120,132,132,132,132,132,132,120,32,24,6,15,15,8, + 1,254,120,0,0,120,132,132,132,132,132,132,132,132,120,32, + 24,6,13,13,8,1,254,120,0,0,120,132,132,132,132,132, + 132,120,32,24,6,14,14,8,1,0,72,48,0,0,252,8, + 16,32,56,4,4,4,140,120,6,14,14,8,1,254,72,48, + 0,0,124,8,16,32,56,4,4,4,132,120,6,14,14,8, + 1,254,36,24,0,0,24,8,8,8,8,8,8,8,144,96, + 7,10,10,8,1,0,206,162,162,162,164,164,168,168,168,206, + 7,10,10,8,1,0,192,160,174,162,162,164,164,168,168,206, + 7,11,11,8,1,0,32,32,32,110,162,162,164,164,168,168, + 110,6,14,14,8,1,0,24,96,0,0,120,132,132,128,128, + 156,132,132,140,116,6,14,14,8,1,254,24,96,0,4,116, + 136,136,136,112,64,120,132,132,120,6,10,10,8,1,0,144, + 144,144,148,244,148,148,148,148,136,6,11,11,8,1,255,184, + 196,132,132,136,144,160,192,128,128,128,6,13,13,8,1,0, + 96,24,0,132,196,196,164,164,148,148,140,140,132,6,11,11, + 8,1,0,96,24,0,184,196,132,132,132,132,132,132,6,14, + 14,8,1,0,24,96,48,72,48,48,72,72,132,252,132,132, + 132,132,6,14,14,8,1,0,24,96,0,48,72,48,0,120, + 132,4,124,132,140,116,7,14,14,8,1,0,12,48,0,0, + 62,80,144,144,254,144,144,144,144,158,7,12,12,8,1,0, + 12,48,0,0,124,146,18,126,144,144,146,124,6,15,15,8, + 1,255,24,96,0,4,116,136,140,148,148,164,164,196,68,184, + 128,6,13,13,8,1,255,24,96,0,4,120,140,148,148,164, + 164,196,120,128}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 4 y=10 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =12 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[3783] U8G_SECTION(".progmem.u8g_font_unifont_4_5") = { + 0,16,16,0,254,10,4,176,6,163,0,255,0,14,254,12, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,7,12,12,8,0,0,204,34,0, + 0,60,66,2,62,66,66,70,58,6,14,14,8,1,0,120, + 132,132,0,48,72,72,132,132,252,132,132,132,132,6,12,12, + 8,1,0,120,132,132,0,120,132,4,124,132,132,140,116,7, + 14,14,8,0,0,204,34,0,0,126,64,64,64,124,64,64, + 64,64,126,7,12,12,8,0,0,204,34,0,0,60,66,66, + 126,64,64,66,60,6,14,14,8,1,0,120,132,132,0,252, + 128,128,128,248,128,128,128,128,252,6,12,12,8,1,0,120, + 132,132,0,120,132,132,252,128,128,132,120,7,14,14,8,0, + 0,204,34,0,0,62,8,8,8,8,8,8,8,8,62,7, + 12,12,8,0,0,204,34,0,0,24,8,8,8,8,8,8, + 62,6,14,14,8,1,0,120,132,132,0,124,16,16,16,16, + 16,16,16,16,124,6,12,12,8,1,0,120,132,132,0,48, + 16,16,16,16,16,16,124,7,14,14,8,0,0,204,34,0, + 0,60,66,66,66,66,66,66,66,66,60,7,12,12,8,0, + 0,204,34,0,0,60,66,66,66,66,66,66,60,6,14,14, + 8,1,0,120,132,132,0,120,132,132,132,132,132,132,132,132, + 120,6,12,12,8,1,0,120,132,132,0,120,132,132,132,132, + 132,132,120,7,14,14,8,0,0,204,34,0,0,124,66,66, + 66,124,72,68,68,66,66,7,12,12,8,0,0,204,34,0, + 0,92,98,66,64,64,64,64,64,6,14,14,8,1,0,120, + 132,132,0,248,132,132,132,248,144,136,136,132,132,6,12,12, + 8,1,0,120,132,132,0,184,196,132,128,128,128,128,128,7, + 14,14,8,0,0,204,34,0,0,66,66,66,66,66,66,66, + 66,66,60,7,12,12,8,0,0,204,34,0,0,66,66,66, + 66,66,66,70,58,6,14,14,8,1,0,120,132,132,0,132, + 132,132,132,132,132,132,132,132,120,6,12,12,8,1,0,120, + 132,132,0,132,132,132,132,132,132,140,116,6,12,12,8,1, + 254,120,132,132,128,96,24,4,132,132,120,16,32,6,10,10, + 8,1,254,120,132,128,96,24,4,132,120,16,32,7,12,12, + 8,1,254,254,16,16,16,16,16,16,16,16,16,4,8,5, + 12,12,8,1,254,32,32,248,32,32,32,32,32,32,24,64, + 128,6,10,10,8,1,0,120,132,132,4,24,104,4,4,4, + 120,6,8,8,8,1,0,120,132,4,24,100,4,24,96,6, + 13,13,8,1,0,72,48,0,132,132,132,132,252,132,132,132, + 132,132,6,13,13,8,1,0,72,48,0,128,128,128,184,196, + 132,132,132,132,132,6,10,10,8,1,254,184,196,132,132,132, + 132,132,132,4,4,7,13,13,8,1,254,4,4,4,116,140, + 132,132,132,132,142,118,4,8,6,10,10,8,1,0,16,72, + 132,132,72,120,132,132,132,120,5,8,8,8,2,0,72,136, + 144,96,144,136,136,112,6,12,12,8,1,254,252,4,4,8, + 16,32,64,128,128,252,4,8,6,10,10,8,1,254,252,4, + 8,16,32,64,128,252,4,8,6,12,12,8,1,0,16,0, + 48,72,72,132,132,252,132,132,132,132,6,10,10,8,1,0, + 16,0,120,132,4,124,132,132,140,116,6,12,12,8,1,254, + 252,128,128,128,248,128,128,128,128,252,16,96,6,10,10,8, + 1,254,120,132,132,252,128,128,132,120,16,96,6,14,14,8, + 1,0,120,0,72,0,120,132,132,132,132,132,132,132,132,120, + 6,12,12,8,1,0,120,0,72,0,120,132,132,132,132,132, + 132,120,6,14,14,8,1,0,120,0,100,152,0,120,132,132, + 132,132,132,132,132,120,6,13,13,8,1,0,120,0,100,152, + 0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,16, + 0,120,132,132,132,132,132,132,132,132,120,6,10,10,8,1, + 0,16,0,120,132,132,132,132,132,132,120,6,14,14,8,1, + 0,120,0,16,0,120,132,132,132,132,132,132,132,132,120,6, + 12,12,8,1,0,120,0,16,0,120,132,132,132,132,132,132, + 120,7,12,12,8,1,0,124,0,130,130,68,68,40,16,16, + 16,16,16,6,12,12,8,1,254,120,0,132,132,132,132,132, + 76,52,4,4,120,4,12,12,8,2,254,96,32,32,32,32, + 32,32,32,48,48,64,128,7,10,10,8,1,254,184,196,132, + 132,132,132,134,134,4,8,6,12,12,8,1,254,32,32,248, + 32,32,32,32,32,44,28,16,32,5,10,10,8,1,254,24, + 8,8,8,8,8,8,8,144,96,7,11,11,8,0,0,16, + 16,16,84,186,146,146,146,146,186,84,7,10,10,8,0,254, + 84,186,146,146,146,146,186,84,16,16,7,11,11,8,0,0, + 2,26,36,44,74,82,126,98,66,66,194,7,12,12,8,0, + 255,2,60,70,74,72,80,80,96,98,66,124,128,7,11,11, + 8,0,255,2,4,60,74,80,80,96,96,66,124,128,6,10, + 10,8,1,0,64,64,64,64,240,64,64,64,64,124,7,12, + 12,8,1,0,2,4,254,24,24,16,16,48,48,80,80,144, + 7,10,10,8,1,254,120,132,128,96,24,4,132,120,18,12, + 6,10,10,8,1,254,252,4,8,16,32,64,128,192,32,28, + 6,10,10,8,1,0,120,132,132,4,8,16,16,16,16,16, + 6,8,8,8,1,0,120,132,132,4,8,16,16,16,6,10, + 10,8,1,0,120,68,68,68,120,68,244,68,68,120,7,10, + 10,8,0,0,68,68,68,68,68,254,68,68,68,56,6,10, + 10,8,1,0,48,48,48,72,72,72,72,132,132,132,6,14, + 14,8,1,254,8,8,252,144,144,160,248,160,160,192,192,252, + 128,128,7,10,10,8,0,255,2,60,70,74,126,80,96,66, + 124,128,7,10,10,8,1,0,62,8,8,8,8,62,8,136, + 136,112,7,13,13,8,1,254,8,8,0,24,8,8,62,8, + 8,8,8,144,96,7,12,12,8,1,254,112,136,136,136,136, + 136,136,136,152,104,8,6,7,10,10,8,1,254,104,152,136, + 136,136,136,152,104,8,6,6,10,10,8,1,0,120,68,68, + 68,248,80,72,72,68,68,6,8,8,8,1,0,88,100,68, + 224,64,64,64,64,7,10,10,8,1,0,130,130,68,254,40, + 16,16,16,16,16,7,10,10,8,1,254,68,68,68,254,68, + 36,28,4,4,56,6,8,8,8,1,0,184,196,132,132,248, + 128,132,120,6,8,8,8,1,0,116,140,132,132,132,140,148, + 100,6,8,8,8,1,0,152,164,196,132,132,132,196,184,6, + 11,11,8,1,0,112,128,128,184,196,132,132,132,132,196,184, + 6,8,8,8,1,0,120,132,4,4,4,4,132,120,6,9, + 9,8,1,255,120,132,128,128,128,152,164,120,128,7,12,12, + 8,1,255,8,8,8,104,152,136,136,136,136,152,104,6,7, + 11,11,8,1,0,6,8,8,104,152,136,136,136,136,152,104, + 6,8,8,8,1,0,120,132,132,252,4,4,132,120,6,8, + 8,8,1,0,120,132,4,4,252,132,132,120,7,8,8,8, + 1,0,114,140,8,8,248,136,136,112,6,8,8,8,1,0, + 120,132,128,120,128,128,132,120,6,8,8,8,1,0,120,132, + 4,120,4,4,132,120,7,8,8,8,1,0,114,140,8,112, + 8,8,136,112,6,8,8,8,1,0,120,132,132,184,132,132, + 132,120,7,10,10,8,1,254,24,8,8,8,62,8,8,8, + 144,96,7,11,11,8,1,254,6,104,152,136,136,136,152,104, + 8,136,112,6,10,10,8,1,254,116,140,132,132,132,140,116, + 4,132,120,6,8,8,8,1,0,120,132,128,128,156,132,132, + 124,6,10,10,8,1,254,132,132,132,72,72,48,48,72,72, + 48,6,8,8,8,1,0,132,132,72,72,48,48,72,48,6, + 11,11,8,1,254,132,132,132,132,132,132,140,116,4,4,4, + 6,11,11,8,1,0,112,128,128,184,196,132,132,132,132,132, + 132,6,11,11,8,1,0,112,128,128,184,196,132,132,132,132, + 132,152,5,11,11,8,2,0,32,32,0,96,32,32,248,32, + 32,32,248,3,8,8,8,3,0,128,128,128,128,128,128,128, + 96,5,8,8,8,2,0,248,32,32,32,32,32,32,248,6, + 10,10,8,1,0,48,16,16,16,116,152,16,16,16,124,6, + 10,10,8,1,0,48,16,16,112,144,124,16,16,16,124,4, + 11,11,8,3,255,192,64,64,64,64,64,64,64,64,64,48, + 7,12,12,8,1,254,96,32,62,34,36,40,44,34,34,250, + 18,12,7,8,8,8,1,0,146,146,146,146,146,146,146,110, + 7,10,10,8,1,254,146,146,146,146,146,146,146,110,2,2, + 7,9,9,8,1,255,236,146,146,146,146,146,146,130,12,7, + 9,9,8,1,255,44,50,34,34,34,34,34,34,192,7,9, + 9,8,1,255,176,200,136,136,136,136,136,136,6,6,8,8, + 8,1,0,132,132,196,164,148,140,132,132,6,8,8,8,1, + 0,120,132,132,252,132,132,132,120,7,8,8,8,1,0,110, + 144,144,156,144,144,144,110,7,8,8,8,1,0,124,130,130, + 146,146,146,146,108,7,12,12,8,1,254,16,16,124,146,146, + 146,146,146,146,124,16,16,6,8,8,8,1,0,4,4,4, + 4,4,132,140,116,6,10,10,8,1,0,4,4,4,4,4, + 4,4,132,140,116,7,9,9,8,1,255,8,8,8,8,8, + 136,152,104,6,6,10,10,8,1,254,184,196,132,128,128,128, + 128,128,128,128,6,9,9,8,1,255,184,196,132,128,128,128, + 128,128,96,6,8,8,8,1,0,120,132,132,128,128,128,128, + 128,6,8,8,8,1,0,120,132,132,4,4,4,4,4,6, + 8,8,8,1,0,248,132,132,248,136,132,132,132,6,8,8, + 8,1,0,132,132,132,136,248,132,132,248,6,10,10,8,1, + 254,120,132,128,96,24,4,132,248,128,96,5,12,12,8,1, + 255,24,32,32,32,32,32,32,32,32,32,32,192,5,12,12, + 8,1,255,24,32,32,32,32,32,32,248,32,32,32,192,5, + 9,9,8,1,255,192,32,32,32,32,32,32,32,24,6,12, + 12,8,1,255,12,16,16,16,16,16,16,16,16,112,156,96, + 5,10,10,8,1,0,192,32,32,32,32,32,32,248,32,32, + 6,11,11,8,1,255,32,32,248,32,32,32,32,32,32,32, + 28,7,8,8,8,1,0,68,68,68,254,68,68,76,52,6, + 8,8,8,1,0,132,72,132,132,132,132,72,48,6,8,8, + 8,1,0,152,132,132,132,132,136,144,96,6,8,8,8,1, + 0,48,48,72,72,72,132,132,132,7,8,8,8,1,0,108, + 146,146,146,146,146,146,130,6,10,10,8,1,254,120,128,128, + 176,200,132,132,132,132,132,7,8,8,8,1,0,130,130,68, + 40,16,16,16,16,7,10,10,8,1,254,248,16,16,32,32, + 64,64,248,8,6,7,9,9,8,1,255,252,4,8,16,32, + 76,146,252,32,6,10,10,8,1,254,124,8,16,32,56,4, + 4,4,132,120,6,10,10,8,1,254,124,8,16,32,56,4, + 4,100,148,120,6,10,10,8,1,0,120,132,132,4,8,16, + 16,16,16,16,6,10,10,8,1,0,120,132,132,128,64,32, + 32,32,32,32,6,10,10,8,1,0,16,16,16,16,16,8, + 4,132,132,120,6,10,10,8,1,254,120,132,128,128,128,128, + 128,128,132,120,6,8,8,8,1,0,120,132,132,180,180,132, + 132,120,6,8,8,8,1,0,248,132,132,248,132,132,132,248, + 6,8,8,8,1,0,120,132,132,116,132,132,132,120,7,8, + 8,8,1,0,118,136,128,128,152,136,136,120,5,8,8,8, + 2,0,136,136,136,248,136,136,136,136,6,13,13,8,1,254, + 8,8,0,24,8,8,8,8,8,8,124,144,96,6,10,10, + 8,1,254,132,68,36,20,12,20,36,68,4,4,6,8,8, + 8,1,0,128,128,128,128,128,128,128,252,7,11,11,8,1, + 254,6,104,152,136,136,136,136,152,104,8,8,6,10,10,8, + 1,0,120,132,132,4,8,16,16,124,16,16,6,10,10,8, + 1,0,120,132,132,128,64,32,32,248,32,32,7,11,11,8, + 1,0,32,32,32,126,162,164,164,168,168,176,126,7,13,13, + 8,1,254,32,32,32,126,162,164,168,172,162,162,98,18,12, + 7,12,12,8,1,255,32,32,32,126,162,164,168,176,180,170, + 124,8,7,10,10,8,1,0,64,64,236,80,80,72,68,66, + 66,60,7,13,13,8,1,254,6,72,72,248,72,72,72,72, + 72,72,56,8,48,7,11,11,8,1,255,64,64,236,82,80, + 80,80,84,90,60,8,7,12,12,8,1,254,96,144,128,220, + 162,162,162,162,162,162,4,24,6,10,10,8,2,0,128,128, + 128,156,160,160,152,132,132,248,6,10,10,8,1,0,128,128, + 128,128,252,136,144,160,192,252,7,11,11,8,1,0,130,146, + 146,146,108,0,130,146,146,146,108,6,10,10,8,1,0,252, + 132,132,132,0,0,252,132,132,132,5,10,10,8,1,254,200, + 72,72,72,72,72,88,40,8,8,7,10,10,8,1,254,200, + 72,72,72,72,72,88,40,8,6,5,6,6,8,2,4,128, + 128,176,200,136,136,5,7,7,8,2,4,112,136,128,176,200, + 136,136,4,7,7,8,2,4,16,0,16,16,16,144,96,5, + 5,5,8,2,5,176,200,128,128,128,5,5,5,8,1,5, + 8,8,8,152,104,7,6,6,8,1,4,8,8,8,152,104, + 6,5,6,6,8,1,4,136,144,240,136,136,240,5,4,4, + 8,1,6,136,168,168,80,5,5,5,8,1,5,136,136,120, + 8,112,3,3,3,8,2,7,32,64,128,6,3,3,8,1, + 7,36,72,144,2,4,4,8,3,6,64,128,128,192,2,4, + 4,8,3,6,192,64,64,128,2,4,4,8,3,6,192,128, + 128,64,4,6,6,8,2,5,192,32,16,16,32,192,4,6, + 6,8,2,5,48,64,128,128,64,48,6,7,7,8,1,4, + 120,132,4,4,56,32,32,6,7,7,8,1,4,120,132,128, + 128,112,16,16,4,7,7,8,2,4,16,32,64,128,64,32, + 16,4,7,7,8,2,4,128,64,32,16,32,64,128,7,4, + 4,8,1,6,16,40,68,130,7,4,4,8,1,6,130,68, + 40,16,4,2,2,8,2,8,96,144,4,2,2,8,2,8, + 144,96,1,3,3,8,4,7,128,128,128,4,1,1,8,2, + 9,240,4,2,2,8,2,8,48,192,4,2,2,8,2,8, + 192,48,1,4,4,8,4,0,128,128,128,128,4,1,1,8, + 2,0,240,4,2,2,8,2,255,192,48,4,2,2,8,2, + 255,48,192,3,6,6,8,2,1,224,64,0,0,64,224,3, + 2,2,8,2,4,224,64,4,6,6,8,2,2,192,32,16, + 16,32,192,4,6,6,8,2,2,48,64,128,128,64,48,5, + 5,5,8,1,2,32,32,32,32,248,5,5,5,8,1,2, + 248,32,32,32,32,5,5,5,8,1,2,32,32,248,32,32, + 5,1,1,8,1,4,248,6,3,3,8,1,9,132,132,120, + 2,2,2,8,3,10,192,192,4,3,3,8,2,9,96,144, + 96,3,2,2,8,4,254,128,96,6,2,2,8,1,10,100, + 152,7,2,2,8,1,10,102,136,7,4,4,8,0,3,32, + 96,162,28,6,5,5,8,1,5,132,72,48,72,132,5,6, + 6,8,1,4,136,80,32,80,80,32,3,6,6,8,2,6, + 192,64,64,64,64,224,5,5,5,8,1,5,120,128,112,8, + 240,5,5,5,8,1,5,136,80,32,80,136,5,5,5,8, + 1,7,120,128,128,112,16,5,11,11,8,1,0,248,8,8, + 8,8,8,8,8,8,8,8,5,11,11,8,1,0,8,8, + 248,8,8,8,8,8,8,8,8,5,11,11,8,1,0,8, + 8,8,8,8,248,8,8,8,8,8,5,11,11,8,1,0, + 8,8,8,8,8,8,8,8,248,8,8,5,11,11,8,1, + 0,8,8,8,8,8,8,8,8,8,8,248,5,6,6,8, + 1,0,128,128,128,128,128,248,4,7,7,8,1,0,128,128, + 128,240,128,128,128,5,3,3,8,1,0,136,80,32,6,3, + 3,8,1,9,252,0,252,6,4,4,8,1,8,204,68,68, + 136,5,3,3,8,1,255,136,80,32,5,3,3,8,1,255, + 32,80,136,3,5,5,8,3,255,32,64,128,64,32,3,5, + 5,8,3,255,128,64,32,64,128,4,3,3,8,2,255,96, + 144,96,3,3,3,8,2,9,128,64,32,6,3,3,8,1, + 9,144,72,36,6,3,3,8,1,9,36,72,144,6,2,2, + 8,1,254,100,152,2,7,7,8,3,4,192,192,0,0,0, + 192,192,3,4,4,8,2,7,224,128,128,128,3,4,4,8, + 2,7,224,32,32,32,3,4,4,8,2,0,128,128,128,224, + 3,4,4,8,2,0,32,32,32,224,6,3,3,8,1,254, + 132,132,252,6,3,3,8,1,254,128,128,252,6,5,5,8, + 1,3,32,64,252,64,32}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 3, '1' Height: 10 + Calculated Max Values w=16 h=16 x=14 y=12 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 3 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[3556] U8G_SECTION(".progmem.u8g_font_unifont_67_75") = { + 0,16,16,0,254,3,2,120,4,26,16,255,0,14,254,10, + 0,6,5,5,8,1,4,32,64,252,64,32,5,6,6,8, + 2,3,32,112,168,32,32,32,6,5,5,8,1,3,16,8, + 252,8,16,5,6,6,8,2,3,32,32,32,168,112,32,8, + 5,5,8,0,3,36,66,255,66,36,5,9,9,8,2,1, + 32,112,168,32,32,32,168,112,32,6,6,6,8,1,3,240, + 192,160,144,8,4,6,6,6,8,1,3,60,12,20,36,64, + 128,6,6,6,8,1,3,128,64,36,20,12,60,6,6,6, + 8,1,2,4,8,144,160,192,240,7,9,9,8,1,1,8, + 8,40,72,254,72,40,8,8,7,9,9,8,1,1,32,32, + 40,36,254,36,40,32,32,7,5,5,8,1,3,32,76,242, + 64,32,7,5,5,8,1,3,8,100,158,4,8,8,5,5, + 8,0,3,36,72,255,72,36,5,9,9,8,2,1,32,112, + 168,32,112,168,32,32,32,8,5,5,8,0,3,36,18,255, + 18,36,5,9,9,8,2,1,32,32,32,168,112,32,168,112, + 32,7,5,5,8,1,3,34,68,248,68,34,7,5,5,8, + 1,3,136,68,62,68,136,6,5,5,8,1,3,36,68,252, + 68,36,5,6,6,8,2,3,32,112,168,32,32,248,6,5, + 5,8,1,3,144,136,252,136,144,5,6,6,8,2,3,248, + 32,32,168,112,32,5,10,10,8,2,0,32,112,168,32,32, + 32,168,112,32,248,7,6,6,8,1,3,4,34,66,252,64, + 32,7,6,6,8,1,3,64,136,132,126,4,8,7,6,6, + 8,1,3,4,42,74,252,72,40,7,6,6,8,1,3,64, + 168,164,126,36,40,8,5,5,8,0,3,36,90,231,66,36, + 8,9,9,8,0,1,8,8,44,74,255,74,44,8,8,6, + 10,10,8,1,0,128,128,144,176,208,144,16,84,56,16,5, + 10,10,8,1,0,32,64,240,72,40,8,8,8,8,8,5, + 10,10,8,2,0,32,16,120,144,160,128,128,128,128,128,5, + 10,10,8,1,0,8,8,8,8,8,40,72,240,64,32,5, + 10,10,8,2,0,128,128,128,128,128,160,144,120,16,32,7, + 5,5,8,1,1,248,8,42,28,8,5,8,8,8,1,2, + 8,8,8,40,72,248,64,32,8,5,5,8,0,3,30,33, + 169,113,32,8,5,5,8,0,3,120,132,149,142,4,6,8, + 8,8,1,3,252,0,240,192,160,144,8,4,6,11,11,8, + 1,0,160,192,252,192,160,0,20,12,252,12,20,6,6,6, + 8,1,2,92,152,148,132,132,120,6,6,6,8,1,2,232, + 100,164,132,132,120,6,3,3,8,1,5,32,64,252,6,3, + 3,8,1,3,252,64,32,3,6,6,8,4,3,128,192,160, + 128,128,128,3,6,6,8,2,3,32,96,160,32,32,32,6, + 3,3,8,1,5,16,8,252,6,3,3,8,1,3,252,8, + 16,3,6,6,8,4,2,128,128,128,160,192,128,3,6,6, + 8,2,3,32,32,32,160,96,32,6,11,11,8,1,0,16, + 8,252,8,16,0,32,64,252,64,32,8,6,6,8,0,3, + 36,116,164,37,46,36,6,11,11,8,1,0,32,64,252,64, + 32,0,16,8,252,8,16,6,11,11,8,1,0,32,64,252, + 64,32,0,32,64,252,64,32,8,6,6,8,0,3,36,126, + 165,36,36,36,6,11,11,8,1,0,16,8,252,8,16,0, + 16,8,252,8,16,8,6,6,8,0,3,36,36,36,165,126, + 36,6,7,7,8,1,2,32,64,252,0,252,8,16,6,7, + 7,8,1,2,16,8,252,0,252,64,32,7,9,9,8,0, + 1,8,8,40,126,136,126,40,8,8,8,9,9,8,0,1, + 8,8,44,126,137,126,44,8,8,7,9,9,8,1,1,32, + 32,40,252,34,252,40,32,32,6,5,5,8,1,3,32,124, + 128,124,32,5,6,6,8,2,3,32,80,216,80,80,80,6, + 5,5,8,1,3,16,248,4,248,16,5,6,6,8,2,3, + 80,80,80,216,80,32,8,5,5,8,0,3,36,126,129,126, + 36,5,8,8,8,2,2,32,80,216,80,80,216,80,32,6, + 6,6,8,1,3,240,160,208,168,20,8,6,6,6,8,1, + 3,60,20,44,84,160,64,6,6,6,8,1,3,8,20,168, + 208,160,240,6,6,6,8,1,3,64,160,84,44,20,60,7, + 7,7,8,0,2,16,62,64,254,64,62,16,7,7,7,8, + 1,2,16,248,4,254,4,248,16,8,5,5,8,0,3,32, + 66,245,72,32,8,5,5,8,0,3,4,66,175,18,4,5, + 10,10,8,2,0,32,112,168,32,32,248,32,248,32,32,5, + 10,10,8,2,0,32,32,248,32,248,32,32,168,112,32,7, + 5,5,8,1,3,32,64,238,64,32,5,10,10,8,2,0, + 32,112,168,0,32,32,32,0,32,32,7,5,5,8,1,3, + 8,4,238,4,8,5,10,10,8,2,0,32,32,0,32,32, + 32,0,168,112,32,6,5,5,8,1,3,160,192,252,192,160, + 6,5,5,8,1,3,20,12,252,12,20,8,7,7,8,0, + 2,16,48,95,129,95,48,16,7,10,10,8,1,0,16,40, + 68,238,40,40,40,40,40,56,8,7,7,8,0,2,8,12, + 250,129,250,12,8,7,10,10,8,1,0,56,40,40,40,40, + 40,238,68,40,16,7,12,12,8,1,0,16,40,68,238,40, + 40,40,40,56,0,56,56,7,12,12,8,1,0,16,40,68, + 198,68,68,68,68,68,198,130,254,7,12,12,8,1,0,16, + 40,124,198,68,68,68,68,68,198,130,254,7,12,12,8,1, + 0,16,56,84,214,84,84,84,84,84,214,146,254,7,14,14, + 8,1,0,16,40,84,238,68,198,68,68,68,68,68,68,68, + 124,7,14,14,8,1,0,16,40,84,238,68,198,68,68,68, + 68,68,198,130,254,7,7,7,8,1,2,16,216,244,130,244, + 216,16,7,9,9,8,1,0,254,128,184,176,168,132,130,128, + 128,7,9,9,8,1,0,2,2,130,66,42,26,58,2,254, + 5,11,11,8,2,0,32,80,216,80,80,80,80,80,216,80, + 32,13,5,10,16,1,3,14,32,17,16,255,248,17,16,14, + 32,8,10,10,8,0,0,36,46,53,36,36,36,36,172,116, + 36,8,15,15,8,0,254,4,2,255,2,4,4,2,255,2, + 4,4,2,255,2,4,8,5,5,8,0,3,36,68,255,68, + 36,8,5,5,8,0,3,36,34,255,34,36,11,5,10,16, + 2,3,36,128,68,64,255,224,68,64,36,128,12,5,10,16, + 1,3,37,0,69,0,255,240,69,0,37,0,12,5,10,16, + 2,3,10,64,10,32,255,240,10,32,10,64,13,5,10,16, + 1,3,37,32,69,16,255,248,69,16,37,32,8,5,5,8, + 0,3,32,96,191,96,32,8,5,5,8,0,3,4,6,253, + 6,4,12,5,10,16,2,3,32,64,96,96,191,208,96,96, + 32,64,16,8,16,16,0,6,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,16,2,4,16,0,254,255,255, + 255,255,16,4,8,16,0,254,255,255,255,255,255,255,255,255, + 16,6,12,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,16,8,16,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,16,10,20,16,0,254,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,16,12,24,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 16,14,28,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,16,16,32,16,0,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,14,16,32,16,0,254,255,252, + 255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,252, + 255,252,255,252,255,252,255,252,255,252,255,252,255,252,12,16, + 32,16,0,254,255,240,255,240,255,240,255,240,255,240,255,240, + 255,240,255,240,255,240,255,240,255,240,255,240,255,240,255,240, + 255,240,255,240,10,16,32,16,0,254,255,192,255,192,255,192, + 255,192,255,192,255,192,255,192,255,192,255,192,255,192,255,192, + 255,192,255,192,255,192,255,192,255,192,8,16,16,16,0,254, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 6,16,16,16,0,254,252,252,252,252,252,252,252,252,252,252, + 252,252,252,252,252,252,4,16,16,16,0,254,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,240,2,16,16,16, + 0,254,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,8,16,16,16,8,254,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,15,16,32,16,0,254,136,136, + 34,34,136,136,34,34,136,136,34,34,136,136,34,34,136,136, + 34,34,136,136,34,34,136,136,34,34,136,136,34,34,16,16, + 32,16,0,254,170,170,85,85,170,170,85,85,170,170,85,85, + 170,170,85,85,170,170,85,85,170,170,85,85,170,170,85,85, + 170,170,85,85,16,16,32,16,0,254,238,238,187,187,238,238, + 187,187,238,238,187,187,238,238,187,187,238,238,187,187,238,238, + 187,187,238,238,187,187,238,238,187,187,16,2,4,16,0,12, + 255,255,255,255,2,16,16,16,14,254,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,8,8,8,16,0,254, + 255,255,255,255,255,255,255,255,8,8,8,16,8,254,255,255, + 255,255,255,255,255,255,8,8,8,16,0,6,255,255,255,255, + 255,255,255,255,16,16,32,16,0,254,255,0,255,0,255,0, + 255,0,255,0,255,0,255,0,255,0,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,16,16,32,16,0,254, + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, + 16,16,32,16,0,254,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,0,255,0,255,0,255,0,255,0, + 255,0,255,0,255,0,16,16,32,16,0,254,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,0,255,0,255, + 0,255,0,255,0,255,0,255,0,255,0,255,8,8,8,16, + 8,6,255,255,255,255,255,255,255,255,16,16,32,16,0,254, + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, + 16,16,32,16,0,254,0,255,0,255,0,255,0,255,0,255, + 0,255,0,255,0,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,7,7,7,8,1,1,254,254,254,254, + 254,254,254,7,7,7,8,1,1,254,130,130,130,130,130,254, + 7,7,7,8,1,1,124,130,130,130,130,130,124,7,7,7, + 8,1,1,254,130,186,186,186,130,254,7,7,7,8,1,1, + 254,130,254,130,254,130,254,7,7,7,8,1,1,254,170,170, + 170,170,170,254,7,7,7,8,1,1,254,170,254,170,254,170, + 254,7,7,7,8,1,1,254,166,146,202,166,146,254,7,7, + 7,8,1,1,254,202,146,166,202,146,254,7,7,7,8,1, + 1,254,170,214,170,214,170,254,4,4,4,8,2,4,240,240, + 240,240,4,4,4,8,2,4,240,144,144,240,7,4,4,8, + 1,4,254,254,254,254,7,4,4,8,1,4,254,130,130,254, + 4,7,7,8,2,2,240,240,240,240,240,240,240,4,7,7, + 8,2,2,240,144,144,144,144,144,240,8,3,3,8,0,4, + 63,126,252,8,3,3,8,0,4,63,66,252,6,6,6,8, + 1,3,48,48,120,120,252,252,6,6,6,8,1,3,48,48, + 72,72,132,252,6,3,3,8,1,3,48,120,252,6,3,3, + 8,1,3,48,72,252,6,6,6,8,1,3,192,240,252,252, + 240,192,6,6,6,8,1,3,192,176,140,140,176,192,4,4, + 4,8,2,4,192,240,240,192,4,4,4,8,2,4,192,176, + 176,192,6,5,5,8,1,3,192,240,252,240,192,6,5,5, + 8,1,3,192,176,140,176,192,6,6,6,8,1,3,252,252, + 120,120,48,48,6,6,6,8,1,3,252,132,72,72,48,48, + 6,3,3,8,1,3,252,120,48,6,3,3,8,1,3,252, + 72,48,6,6,6,8,1,3,12,60,252,252,60,12,6,6, + 6,8,1,3,12,52,196,196,52,12,4,4,4,8,2,4, + 48,240,240,48,4,4,4,8,2,4,48,208,208,48,6,5, + 5,8,1,3,12,60,252,60,12,6,5,5,8,1,3,12, + 52,196,52,12,7,7,7,8,1,2,16,56,124,254,124,56, + 16,7,7,7,8,1,2,16,40,68,130,68,40,16,7,7, + 7,8,1,2,16,40,84,186,84,40,16,7,7,7,8,1, + 2,56,68,178,186,154,68,56,6,10,10,8,1,1,48,48, + 72,72,132,132,72,72,48,48,7,7,7,8,1,2,56,68, + 130,130,130,68,56,7,7,7,8,1,2,40,0,130,0,130, + 0,40,7,7,7,8,1,2,56,108,170,170,170,108,56,7, + 7,7,8,1,2,56,68,146,170,146,68,56,7,7,7,8, + 1,2,56,124,254,254,254,124,56,7,7,7,8,1,2,56, + 100,226,226,226,100,56,7,7,7,8,1,2,56,76,142,142, + 142,76,56,7,7,7,8,1,2,56,68,130,130,254,124,56, + 7,7,7,8,1,2,56,124,254,130,130,68,56,7,7,7, + 8,1,2,56,92,158,158,130,68,56,7,7,7,8,1,2, + 56,76,142,142,254,124,56,4,7,7,8,1,2,48,112,240, + 240,240,112,48,4,7,7,8,4,2,192,224,240,240,240,224, + 192,8,16,16,8,0,254,255,255,255,255,255,255,231,195,195, + 231,255,255,255,255,255,255,8,16,16,8,0,254,255,255,255, + 255,255,231,219,189,189,219,231,255,255,255,255,255,8,8,8, + 8,0,6,255,255,255,255,255,231,219,189,8,8,8,8,0, + 254,189,219,231,255,255,255,255,255,4,4,4,8,1,5,48, + 64,128,128,4,4,4,8,4,5,192,32,16,16,4,4,4, + 8,4,2,16,16,32,192,4,4,4,8,1,2,128,128,64, + 48,7,4,4,8,1,5,56,68,130,130,7,4,4,8,1, + 2,130,130,68,56,6,6,6,8,1,255,4,12,28,60,124, + 252,6,6,6,8,1,255,128,192,224,240,248,252,6,6,6, + 8,1,6,252,248,240,224,192,128,6,6,6,8,1,6,252, + 124,60,28,12,4,5,5,5,8,1,2,112,136,136,136,112, + 6,6,6,8,1,3,252,228,228,228,228,252,6,6,6,8, + 1,3,252,156,156,156,156,252,6,6,6,8,1,3,252,244, + 228,196,132,252,6,6,6,8,1,3,252,132,140,156,188,252, + 7,6,6,8,1,3,254,146,146,146,146,254,7,7,7,8, + 1,2,16,40,40,68,84,130,254,6,6,6,8,1,2,48, + 48,104,104,228,252,6,7,7,8,1,2,48,48,88,88,156, + 156,252,8,8,8,8,0,2,60,66,129,129,129,129,66,60, + 6,6,6,8,1,0,252,164,228,132,132,252,6,6,6,8, + 1,0,252,132,132,228,164,252,6,6,6,8,1,0,252,132, + 132,156,148,252,6,6,6,8,1,0,252,148,156,132,132,252, + 8,8,8,8,0,0,60,82,145,241,129,129,66,60,8,8, + 8,8,0,0,60,66,129,129,241,145,82,60,8,8,8,8, + 0,0,60,66,129,129,143,137,74,60,8,8,8,8,0,0, + 60,74,137,143,129,129,66,60,6,6,6,8,1,6,252,136, + 144,160,192,128,6,6,6,8,1,6,252,68,36,20,12,4, + 6,6,6,8,1,255,128,192,160,144,136,252,6,6,6,8, + 1,255,252,132,132,132,132,252,6,6,6,8,1,255,252,252, + 252,252,252,252,4,4,4,8,2,0,240,144,144,240,4,4, + 4,8,2,0,240,240,240,240,6,6,6,8,1,255,4,12, + 20,36,68,252}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 14 + Calculated Max Values w=16 h=16 x= 4 y= 5 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-1 + X Font ascent =14 descent=-1 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[7240] U8G_SECTION(".progmem.u8g_font_unifont_72_73") = { + 0,16,16,0,254,10,4,144,6,240,0,255,255,14,254,14, + 255,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,14,5,10,16,1,4,115,36,132, + 164,100,188,20,164,227,36,13,5,10,16,1,4,119,72,130, + 72,98,48,18,72,226,72,13,5,10,16,1,4,247,72,130, + 72,242,48,130,72,242,72,14,5,10,16,1,4,243,124,132, + 144,244,144,132,144,243,16,14,5,10,16,1,4,244,152,132, + 164,246,164,133,172,244,156,13,5,10,16,1,4,99,72,148, + 80,244,96,148,80,147,72,14,5,10,16,1,4,231,160,148, + 32,231,160,148,32,231,188,10,5,10,16,1,4,241,192,138, + 0,241,128,136,64,243,128,11,5,10,16,1,4,139,224,136, + 128,248,128,136,128,136,128,11,5,10,16,1,4,131,224,130, + 0,131,224,130,0,250,0,11,5,10,16,1,4,139,224,136, + 128,136,128,80,128,32,128,11,5,10,16,1,4,251,224,130, + 0,251,224,130,0,130,0,11,5,10,16,1,4,123,192,130, + 32,131,192,130,64,122,32,11,5,10,16,1,4,121,192,130, + 32,114,32,10,32,241,192,11,5,10,16,1,4,123,224,128, + 128,112,128,8,128,243,224,12,5,10,16,1,4,228,112,148, + 64,148,112,148,64,231,112,13,5,10,16,1,4,227,16,148, + 48,148,16,148,16,227,56,13,5,10,16,1,4,227,48,148, + 8,148,16,148,32,227,56,13,5,10,16,1,4,227,48,148, + 8,148,48,148,8,227,48,13,5,10,16,1,4,227,8,148, + 24,148,40,148,56,227,8,14,5,10,16,1,4,147,36,212, + 168,212,176,183,168,148,164,14,5,10,16,1,4,104,164,133, + 52,98,44,18,36,226,36,13,5,10,16,1,4,247,112,130, + 72,242,112,130,72,242,112,13,5,10,16,1,4,102,72,137, + 104,143,88,137,72,105,72,11,5,10,16,1,4,250,32,131, + 96,250,160,130,32,250,32,14,5,10,16,1,4,116,184,132, + 164,100,184,20,164,227,56,14,5,10,16,1,4,243,156,132, + 32,243,32,128,160,247,28,9,5,10,16,1,4,243,128,132, + 0,243,0,128,128,135,0,9,5,10,16,1,4,115,128,132, + 0,179,0,144,128,119,0,9,5,10,16,1,4,227,128,148, + 0,227,0,160,128,151,0,9,5,10,16,1,4,147,128,148, + 0,147,0,144,128,103,0,9,5,10,16,1,4,119,0,132, + 128,103,0,20,0,228,0,14,5,10,16,1,4,231,160,148, + 32,151,160,148,32,231,188,6,10,10,8,1,0,40,48,32, + 96,184,36,36,36,36,56,6,2,2,8,1,0,132,252,6, + 9,9,8,1,1,144,208,176,144,0,32,32,32,60,7,7, + 7,8,1,2,2,20,42,84,168,80,128,6,11,11,8,1, + 0,120,132,132,128,64,32,16,16,0,16,16,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 5,10,10,8,2,0,56,40,40,40,32,32,160,160,160,224, + 5,10,10,8,2,0,8,8,8,8,8,248,136,136,136,136, + 5,10,10,8,2,0,136,136,136,136,136,248,32,32,32,32, + 5,10,10,8,2,0,32,32,32,32,32,248,136,136,136,136, + 5,10,10,8,2,0,248,168,168,168,32,32,168,168,168,248, + 5,5,5,8,2,5,136,216,168,216,136,6,8,8,8,1, + 1,28,220,220,192,192,220,220,28,8,10,10,8,0,0,3, + 3,3,27,24,24,216,192,192,192,7,10,10,8,1,0,14, + 174,174,160,160,160,160,160,160,160,7,9,9,8,1,0,218, + 218,218,218,218,218,218,218,218,8,10,10,8,0,0,160,160, + 80,40,40,20,20,10,5,5,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,15,15,30,16, + 0,255,7,192,24,48,32,8,65,4,67,4,133,2,129,2, + 129,2,129,2,129,2,65,4,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,72,36, + 128,34,128,34,128,194,131,2,132,2,72,36,79,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,72,36,128,34,128,34,128,194,128,34,128,34,72,36, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,68,64,196,129,66,130,66,132,66,136,66, + 159,242,64,68,65,244,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,228,72,4,136,2,143,194, + 128,34,128,34,128,34,72,36,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,72,36, + 136,2,136,2,143,194,136,34,136,34,72,36,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,72,36,128,66,128,66,128,130,129,2,129,2,66,4, + 66,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,72,36,136,34,136,34,135,194,136,34, + 136,34,72,36,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,71,196,72,36,136,34,136,34, + 135,226,128,34,128,34,72,36,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,72,228,89,20, + 137,18,137,18,137,18,137,18,137,18,73,20,92,228,32,8, + 24,48,7,192,14,14,28,16,1,255,31,224,32,16,72,72, + 152,196,136,68,136,68,136,68,136,68,136,68,136,68,156,228, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 73,200,154,36,139,36,136,36,136,196,137,4,138,4,138,20, + 159,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 32,16,73,200,154,36,136,36,136,36,136,196,136,36,138,36, + 138,36,157,196,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,32,16,72,72,152,196,136,196,137,68,137,68,138,68, + 143,244,136,68,156,228,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,75,40,154,196,138,4,138,196,139,36, + 136,36,136,36,138,36,157,196,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,16,72,200,153,36,138,4,138,196, + 139,36,138,36,138,36,138,36,157,196,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,75,232,154,36,136,36, + 136,68,136,132,136,132,136,132,136,132,157,196,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,73,200,154,36, + 138,36,138,36,137,196,138,36,138,36,138,36,157,196,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,73,200, + 154,36,138,36,138,36,137,228,136,36,136,36,138,36,157,196, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 88,200,165,36,133,36,133,36,137,36,145,36,161,36,165,36, + 188,196,64,8,32,16,31,224,15,14,28,16,0,255,64,4, + 129,2,129,2,129,2,129,2,129,2,129,2,129,2,129,2, + 129,2,129,2,129,2,129,2,64,4,15,14,28,16,0,255, + 64,4,135,130,136,66,136,66,128,66,128,66,128,66,128,130, + 131,2,132,2,136,66,136,66,143,194,64,4,15,14,28,16, + 0,255,64,4,135,130,136,66,136,66,128,66,128,130,131,2, + 128,130,128,66,128,66,136,66,136,66,135,130,64,4,15,14, + 28,16,0,255,65,132,130,130,130,130,130,130,132,130,132,130, + 136,130,136,130,143,226,128,130,128,130,128,130,128,130,64,4, + 15,14,28,16,0,255,64,4,143,194,136,2,136,2,136,2, + 139,130,140,66,136,66,128,66,128,66,136,66,136,66,135,130, + 64,4,15,14,28,16,0,255,64,4,135,130,136,66,136,66, + 136,2,136,2,139,130,140,66,136,66,136,66,136,66,136,66, + 135,130,64,4,15,14,28,16,0,255,64,4,143,226,136,34, + 136,34,128,66,128,130,128,130,128,130,129,2,129,2,129,2, + 129,2,129,2,64,4,15,14,28,16,0,255,64,4,135,130, + 136,66,136,66,136,66,136,66,135,130,136,66,136,66,136,66, + 136,66,136,66,135,130,64,4,15,14,28,16,0,255,64,4, + 135,130,136,66,136,66,136,66,136,66,136,194,135,66,128,66, + 128,66,136,66,136,66,135,130,64,4,15,14,28,16,0,255, + 64,4,136,226,137,18,137,18,137,18,137,18,137,18,137,18, + 137,18,137,18,137,18,137,18,136,226,64,4,15,14,28,16, + 0,255,64,4,136,34,136,34,136,34,136,34,136,34,136,34, + 136,34,136,34,136,34,136,34,136,34,136,34,64,4,15,14, + 28,16,0,255,64,4,145,226,146,18,146,18,144,18,144,18, + 144,34,144,194,145,2,146,2,146,18,146,18,147,242,64,4, + 15,14,28,16,0,255,64,4,145,226,146,18,146,18,144,18, + 144,34,144,194,144,34,144,18,144,18,146,18,146,18,145,226, + 64,4,15,14,28,16,0,255,64,4,144,98,144,162,144,162, + 144,162,145,34,145,34,146,34,146,34,147,250,144,34,144,34, + 144,34,64,4,15,14,28,16,0,255,64,4,147,242,146,2, + 146,2,146,2,146,226,147,18,146,18,144,18,144,18,146,18, + 146,18,145,226,64,4,15,14,28,16,0,255,64,4,145,226, + 146,18,146,18,146,2,146,2,146,226,147,18,146,18,146,18, + 146,18,146,18,145,226,64,4,15,14,28,16,0,255,64,4, + 147,242,146,18,146,18,144,34,144,66,144,66,144,66,144,130, + 144,130,144,130,144,130,144,130,64,4,15,14,28,16,0,255, + 64,4,145,226,146,18,146,18,146,18,146,18,145,226,146,18, + 146,18,146,18,146,18,146,18,145,226,64,4,15,14,28,16, + 0,255,64,4,145,226,146,18,146,18,146,18,146,18,146,50, + 145,210,144,18,144,18,146,18,146,18,145,226,64,4,15,14, + 28,16,0,255,64,4,156,114,162,138,162,138,130,138,130,138, + 132,138,136,138,144,138,160,138,162,138,162,138,190,114,64,4, + 6,14,14,16,4,255,32,96,160,32,32,32,32,32,32,32, + 32,32,32,36,9,14,28,16,3,255,120,0,132,0,132,0, + 4,0,4,0,4,0,8,0,48,0,64,0,128,0,128,0, + 132,0,132,0,252,128,9,14,28,16,3,255,120,0,132,0, + 132,0,4,0,4,0,8,0,48,0,8,0,4,0,4,0, + 132,0,132,0,132,0,120,128,10,15,30,16,3,254,24,0, + 40,0,40,0,40,0,72,0,72,0,72,0,136,0,136,0, + 254,0,8,0,8,0,8,0,8,64,8,0,9,14,28,16, + 3,255,252,0,128,0,128,0,128,0,128,0,128,0,184,0, + 196,0,132,0,4,0,4,0,132,0,132,0,120,128,9,14, + 28,16,3,255,120,0,132,0,132,0,132,0,128,0,128,0, + 184,0,196,0,132,0,132,0,132,0,132,0,132,0,120,128, + 10,14,28,16,3,255,254,0,130,0,130,0,4,0,8,0, + 8,0,8,0,16,0,16,0,16,0,16,0,16,0,16,0, + 16,64,9,14,28,16,3,255,120,0,132,0,132,0,132,0, + 132,0,72,0,48,0,72,0,132,0,132,0,132,0,132,0, + 132,0,120,128,9,14,28,16,3,255,120,0,132,0,132,0, + 132,0,132,0,132,0,140,0,116,0,4,0,4,0,132,0, + 132,0,132,0,120,128,13,14,28,16,0,255,35,192,100,32, + 164,32,36,32,36,32,36,32,36,32,36,32,36,32,36,32, + 36,32,36,32,36,32,35,200,12,14,28,16,0,255,32,128, + 97,128,162,128,32,128,32,128,32,128,32,128,32,128,32,128, + 32,128,32,128,32,128,32,128,32,144,14,14,28,16,0,255, + 35,192,100,32,164,32,32,32,32,32,32,32,32,64,33,128, + 34,0,36,0,36,0,36,32,36,32,39,228,14,14,28,16, + 0,255,35,192,100,32,164,32,32,32,32,32,32,64,33,128, + 32,64,32,32,32,32,36,32,36,32,36,32,35,196,13,14, + 28,16,0,255,32,192,97,64,161,64,33,64,34,64,34,64, + 34,64,36,64,36,64,39,240,32,64,32,64,32,64,32,72, + 14,14,28,16,0,255,39,224,100,0,164,0,36,0,36,0, + 36,0,37,192,38,32,36,32,32,32,32,32,36,32,36,32, + 35,196,14,14,28,16,0,255,35,192,100,32,164,32,36,32, + 36,0,36,0,37,192,38,32,36,32,36,32,36,32,36,32, + 36,32,35,196,14,14,28,16,0,255,39,240,100,16,164,16, + 32,32,32,64,32,64,32,64,32,128,32,128,32,128,32,128, + 32,128,32,128,32,132,14,14,28,16,0,255,35,192,100,32, + 164,32,36,32,36,32,34,64,33,128,34,64,36,32,36,32, + 36,32,36,32,36,32,35,196,14,14,28,16,0,255,35,192, + 100,32,164,32,36,32,36,32,36,32,36,96,35,160,32,32, + 32,32,36,32,36,32,36,32,35,196,13,14,28,16,1,255, + 113,192,138,32,138,32,10,32,10,32,10,32,50,32,66,32, + 130,32,130,32,130,32,138,32,138,32,249,200,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,135,132,136,68,128,68, + 135,196,136,68,136,68,135,180,128,4,64,8,48,48,14,14, + 28,16,1,255,48,48,72,8,152,4,136,4,139,132,140,68, + 136,36,136,36,136,36,140,68,155,132,128,4,64,8,48,48, + 14,14,28,16,1,255,48,48,64,8,128,4,128,4,135,132, + 136,68,144,4,144,4,144,36,136,68,135,132,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,64,72,128,196,128,68, + 135,68,136,196,144,68,144,68,144,68,136,196,135,100,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,143,132,144,68,144,68,159,196,144,4,144,68,143,132, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,65,136, + 130,196,130,4,143,132,130,4,130,4,130,4,130,4,130,4, + 135,4,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,100,135,132,136,68,136,68,159,132,144,4, + 143,196,144,36,144,36,79,200,48,48,14,14,28,16,1,255, + 48,48,72,8,152,4,136,4,137,196,142,68,136,68,136,68, + 136,68,136,68,156,228,128,4,64,8,48,48,14,14,28,16, + 1,255,49,48,65,8,128,4,128,4,129,4,131,4,129,4, + 129,4,129,4,129,4,131,132,128,4,64,8,48,48,14,14, + 28,16,1,255,49,48,65,8,128,4,128,4,129,4,131,4, + 129,4,129,4,129,4,129,4,129,4,137,4,70,8,48,48, + 14,14,28,16,1,255,48,48,72,8,152,4,136,4,137,196, + 136,132,137,4,143,4,137,132,136,196,156,228,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,66,8,134,4,130,4, + 130,4,130,4,130,4,130,4,130,4,130,4,135,4,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,150,196,187,68,146,68,146,68,146,68,146,68,187,100, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,64,8, + 128,4,128,4,137,196,158,68,136,68,136,68,136,68,136,68, + 156,228,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,4,143,132,144,68,144,68,144,68,144,68, + 144,68,143,132,128,4,64,8,48,48,14,14,28,16,1,255, + 48,48,64,8,128,4,128,4,139,132,156,68,136,36,136,36, + 136,36,140,68,139,132,136,4,92,8,48,48,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,135,68,136,196,144,68, + 144,68,144,68,136,196,135,68,128,68,64,232,48,48,14,14, + 28,16,1,255,48,48,64,8,128,4,128,4,137,196,158,100, + 136,4,136,4,136,4,136,4,156,4,128,4,64,8,48,48, + 14,14,28,16,1,255,48,48,64,8,128,4,128,4,135,196, + 136,36,136,4,135,196,128,36,136,36,135,196,128,4,64,8, + 48,48,14,14,28,16,1,255,48,48,64,8,128,4,130,4, + 130,4,143,132,130,4,130,4,130,4,130,68,131,132,128,4, + 64,8,48,48,14,14,28,16,1,255,48,48,64,8,128,4, + 128,4,136,68,152,196,136,68,136,68,136,68,136,196,143,100, + 128,4,64,8,48,48,14,14,28,16,1,255,48,48,64,8, + 128,4,128,4,156,116,136,36,132,68,132,68,130,132,130,132, + 129,4,128,4,64,8,48,48,14,14,28,16,1,255,48,48, + 64,8,128,4,128,4,191,116,146,36,146,36,137,68,139,68, + 132,132,132,132,128,4,64,8,48,48,14,14,28,16,1,255, + 48,48,64,8,128,4,128,4,156,228,136,68,132,132,131,4, + 132,132,136,68,156,228,128,4,64,8,48,48,14,14,28,16, + 1,255,48,48,64,8,128,4,128,4,184,228,144,68,136,132, + 133,4,130,4,130,4,135,4,128,4,64,8,48,48,14,14, + 28,16,1,255,48,48,64,8,128,4,128,4,135,228,132,68, + 136,132,129,4,130,4,132,36,143,196,128,4,64,8,48,48, + 15,15,30,16,0,255,7,192,24,48,33,8,66,132,68,68, + 132,66,132,66,135,194,132,66,132,66,68,68,76,100,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,132,68,68,132,34,132,66,135,130,132,66,132,34,68,68, + 79,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,196,68,36,132,2,132,2,132,2,132,2, + 132,2,68,36,67,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,132,68,68,132,34,132,34, + 132,34,132,34,132,34,68,68,79,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,79,228,68,36, + 132,2,132,2,135,130,132,2,132,2,68,36,79,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,68,36,132,2,132,2,135,130,132,2,132,2,68,4, + 78,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,196,68,36,132,2,132,2,132,226,132,34, + 132,34,68,100,67,164,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,228,68,68,132,66,132,66, + 135,194,132,66,132,66,68,68,78,228,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,67,132,65,4, + 129,2,129,2,129,2,129,2,129,2,65,4,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 65,196,64,132,128,130,128,130,128,130,128,130,128,130,72,132, + 71,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,78,100,68,68,132,130,133,2,134,2,133,2, + 132,130,68,68,78,100,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,4,68,4,132,2,132,2, + 132,2,132,2,132,2,68,36,79,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,76,100,70,196, + 134,194,133,66,133,66,132,66,132,66,68,68,78,228,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 76,100,68,68,134,66,134,66,133,66,133,66,132,194,68,196, + 76,100,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,132,68,68,136,34,136,34,136,34,136,34, + 136,34,68,68,67,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,132,68,68,132,66,132,66, + 135,130,132,2,132,2,68,4,78,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,67,132,68,68, + 136,34,136,34,136,34,136,34,137,162,68,68,67,164,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,132,68,68,132,66,132,66,135,130,133,2,132,130,68,68, + 78,36,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,132,68,68,132,2,132,2,131,130,128,66, + 128,66,68,68,67,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,79,228,73,36,129,2,129,2, + 129,2,129,2,129,2,65,4,67,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,78,228,68,68, + 132,66,132,66,132,66,132,66,132,66,68,68,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 76,100,68,68,132,66,132,66,130,130,130,130,130,130,65,4, + 65,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,76,100,69,68,133,66,133,66,133,66,133,66, + 134,194,68,68,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,78,228,68,68,132,66,130,130, + 129,2,130,130,132,66,68,68,78,228,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,78,228,68,68, + 132,66,130,130,129,2,129,2,129,2,65,4,67,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 79,228,72,36,128,66,128,130,129,2,130,2,132,2,72,36, + 79,228,32,8,24,48,7,192,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,143,132,144,68,128,68,143,196,144,68, + 144,68,143,180,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,40,16,88,8,136,4,139,132,140,68,136,36,136,36, + 136,36,140,68,155,132,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,64,8,128,4,135,132,136,68,144,4, + 144,4,144,4,136,100,135,132,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,80,64,200,128,68,135,68,136,196, + 144,68,144,68,144,68,144,68,143,164,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,135,132, + 136,68,144,36,159,228,144,4,136,36,135,196,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,35,144,66,200,130,4, + 143,132,130,4,130,4,130,4,130,4,130,4,135,4,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,196,135,132,136,68,136,68,143,132,144,4,159,196,144,36, + 80,40,47,208,31,224,14,14,28,16,1,255,31,224,40,16, + 88,8,136,4,139,196,140,68,136,68,136,68,136,68,136,68, + 156,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 33,16,65,8,128,4,129,4,131,4,129,4,129,4,129,4, + 129,4,131,132,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,33,16,65,8,128,4,129,4,131,4,129,4,129,4, + 129,4,129,4,129,4,89,8,38,16,31,224,14,14,28,16, + 1,255,31,224,40,16,88,8,136,4,137,228,136,132,139,4, + 141,132,136,196,136,100,156,244,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,34,16,70,8,130,4,130,4,130,4, + 130,4,130,4,130,4,130,4,135,4,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,150,196, + 187,68,146,68,146,68,146,68,146,68,187,100,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,64,8,128,4, + 139,196,156,68,136,68,136,68,136,68,136,68,156,228,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,4,135,196,136,36,136,36,136,36,136,36,136,36,135,196, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 64,8,128,4,139,132,156,68,136,36,136,36,136,36,140,68, + 139,132,72,8,40,16,31,224,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,135,68,136,196,144,68,144,68,144,68, + 136,196,135,68,64,72,32,80,31,224,14,14,28,16,1,255, + 31,224,32,16,64,8,128,4,137,196,158,100,136,4,136,4, + 136,4,136,4,156,4,64,8,32,16,31,224,14,14,28,16, + 1,255,31,224,32,16,64,8,128,4,135,196,136,36,140,4, + 131,132,128,100,136,36,135,196,64,8,32,16,31,224,14,14, + 28,16,1,255,31,224,32,16,64,8,130,4,130,4,143,132, + 130,4,130,4,130,4,130,68,131,132,64,8,32,16,31,224, + 14,14,28,16,1,255,31,224,32,16,64,8,128,4,136,68, + 152,196,136,68,136,68,136,68,136,68,143,164,64,8,32,16, + 31,224,14,14,28,16,1,255,31,224,32,16,64,8,128,4, + 156,116,136,36,132,68,132,68,130,132,130,132,129,4,64,8, + 32,16,31,224,14,14,28,16,1,255,31,224,32,16,64,8, + 128,4,247,116,162,36,162,36,147,68,149,68,136,132,136,132, + 64,8,32,16,31,224,14,14,28,16,1,255,31,224,32,16, + 64,8,128,4,184,228,136,132,133,4,130,4,133,4,136,132, + 184,228,64,8,32,16,31,224,14,14,28,16,1,255,31,224, + 32,16,64,8,128,4,184,228,144,68,136,132,133,4,130,4, + 130,4,135,4,64,8,32,16,31,224,14,14,28,16,1,255, + 31,224,32,16,64,8,128,4,143,196,136,68,144,132,131,4, + 132,4,136,68,159,132,64,8,32,16,31,224,16,15,30,16, + 0,254,7,224,24,24,32,4,67,194,68,34,132,33,132,33, + 132,33,132,33,132,33,68,34,67,194,32,4,24,24,7,224, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,188, + 231,60,247,188,247,188,227,28,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 231,220,247,188,247,124,227,28,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 231,220,247,60,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,246,188, + 230,188,246,28,247,188,227,188,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,28, + 231,124,247,60,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,252,246,60,246,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,246,60, + 231,188,247,188,247,124,227,124,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,220,247,60,246,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,247,60, + 230,220,247,28,247,220,227,60,127,248,127,248,63,240,15,192, + 14,13,26,16,1,255,15,192,63,240,127,248,127,248,231,156, + 251,108,247,108,239,108,227,156,127,248,127,248,63,240,15,192, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 144,137,161,133,160,133,160,133,145,201,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,145,137,160,69,160,133,161,5,145,201,80,10, + 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, + 24,24,35,196,76,50,80,10,145,137,160,69,161,133,160,69, + 145,137,80,10,76,50,35,196,24,24,7,224,16,15,30,16, + 0,254,7,224,24,24,35,196,76,50,80,10,146,137,162,133, + 163,197,160,133,144,137,80,10,76,50,35,196,24,24,7,224, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 145,201,161,5,161,133,160,69,145,137,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,145,137,162,5,163,133,162,69,145,137,80,10, + 76,50,35,196,24,24,7,224,16,15,30,16,0,254,7,224, + 24,24,35,196,76,50,80,10,145,201,160,69,160,69,160,133, + 144,137,80,10,76,50,35,196,24,24,7,224,16,15,30,16, + 0,254,7,224,24,24,35,196,76,50,80,10,145,137,162,69, + 161,133,162,69,145,137,80,10,76,50,35,196,24,24,7,224, + 16,15,30,16,0,254,7,224,24,24,35,196,76,50,80,10, + 145,137,162,69,161,197,160,69,145,137,80,10,76,50,35,196, + 24,24,7,224,16,15,30,16,0,254,7,224,24,24,35,196, + 76,50,80,10,146,105,166,149,162,149,162,149,151,105,80,10, + 76,50,35,196,24,24,7,224,14,13,26,16,1,255,15,192, + 63,240,127,248,127,248,252,252,251,124,251,124,251,124,252,252, + 127,248,127,248,63,240,15,192}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 6, '1' Height: 3 + Calculated Max Values w= 8 h=10 x= 2 y= 4 dx= 8 dy= 0 ascent=11 len=10 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent = 6 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent =11 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_75r[580] U8G_SECTION(".progmem.u8g_font_unifont_75r") = { + 0,16,16,0,254,6,1,137,0,0,32,79,0,11,0,8, + 0,7,7,7,8,1,1,254,254,254,254,254,254,254,7,7, + 7,8,1,1,254,130,130,130,130,130,254,7,7,7,8,1, + 1,124,130,130,130,130,130,124,7,7,7,8,1,1,254,130, + 186,186,186,130,254,7,7,7,8,1,1,254,130,254,130,254, + 130,254,7,7,7,8,1,1,254,170,170,170,170,170,254,7, + 7,7,8,1,1,254,170,254,170,254,170,254,7,7,7,8, + 1,1,254,166,146,202,166,146,254,7,7,7,8,1,1,254, + 202,146,166,202,146,254,7,7,7,8,1,1,254,170,214,170, + 214,170,254,4,4,4,8,2,4,240,240,240,240,4,4,4, + 8,2,4,240,144,144,240,7,4,4,8,1,4,254,254,254, + 254,7,4,4,8,1,4,254,130,130,254,4,7,7,8,2, + 2,240,240,240,240,240,240,240,4,7,7,8,2,2,240,144, + 144,144,144,144,240,8,3,3,8,0,4,63,126,252,8,3, + 3,8,0,4,63,66,252,6,6,6,8,1,3,48,48,120, + 120,252,252,6,6,6,8,1,3,48,48,72,72,132,252,6, + 3,3,8,1,3,48,120,252,6,3,3,8,1,3,48,72, + 252,6,6,6,8,1,3,192,240,252,252,240,192,6,6,6, + 8,1,3,192,176,140,140,176,192,4,4,4,8,2,4,192, + 240,240,192,4,4,4,8,2,4,192,176,176,192,6,5,5, + 8,1,3,192,240,252,240,192,6,5,5,8,1,3,192,176, + 140,176,192,6,6,6,8,1,3,252,252,120,120,48,48,6, + 6,6,8,1,3,252,132,72,72,48,48,6,3,3,8,1, + 3,252,120,48,6,3,3,8,1,3,252,72,48,6,6,6, + 8,1,3,12,60,252,252,60,12,6,6,6,8,1,3,12, + 52,196,196,52,12,4,4,4,8,2,4,48,240,240,48,4, + 4,4,8,2,4,48,208,208,48,6,5,5,8,1,3,12, + 60,252,60,12,6,5,5,8,1,3,12,52,196,52,12,7, + 7,7,8,1,2,16,56,124,254,124,56,16,7,7,7,8, + 1,2,16,40,68,130,68,40,16,7,7,7,8,1,2,16, + 40,84,186,84,40,16,7,7,7,8,1,2,56,68,178,186, + 154,68,56,6,10,10,8,1,1,48,48,72,72,132,132,72, + 72,48,48,7,7,7,8,1,2,56,68,130,130,130,68,56, + 7,7,7,8,1,2,40,0,130,0,130,0,40,7,7,7, + 8,1,2,56,108,170,170,170,108,56,7,7,7,8,1,2, + 56,68,146,170,146,68,56,7,7,7,8,1,2,56,124,254, + 254,254,124,56}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 8 + Calculated Max Values w=16 h=16 x= 3 y= 6 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent= 0 + X Font ascent =10 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_76[2532] U8G_SECTION(".progmem.u8g_font_unifont_76") = { + 0,16,16,0,254,10,2,68,4,220,32,159,0,14,254,10, + 0,7,12,12,8,1,0,16,146,68,0,56,124,124,56,0, + 68,146,16,8,4,4,8,0,6,32,118,255,126,7,8,8, + 8,1,2,56,124,254,16,16,16,16,32,16,16,32,16,0, + 254,139,200,3,192,47,241,4,36,138,80,40,18,10,80,73, + 148,4,33,71,224,8,16,16,136,120,30,16,136,8,16,7, + 224,7,11,11,8,1,0,68,68,72,72,80,82,4,96,144, + 144,96,7,6,6,8,1,3,16,16,254,56,108,68,7,7, + 7,8,1,3,16,16,238,68,84,108,68,5,9,9,8,2, + 0,8,16,32,64,128,64,40,24,56,6,8,8,8,1,0, + 252,132,136,144,160,148,140,156,8,8,8,8,0,0,60,66, + 129,153,153,129,66,60,8,6,6,8,0,2,24,36,36,102, + 165,66,8,6,6,8,0,2,66,165,102,36,36,24,5,6, + 6,8,1,2,8,16,96,144,144,96,7,9,9,8,1,0, + 12,18,18,12,16,96,144,144,96,7,6,6,8,1,1,124, + 198,0,84,198,254,7,7,7,8,1,1,124,130,186,124,146, + 130,254,7,7,7,8,1,0,254,130,130,130,130,130,254,7, + 8,8,8,1,0,8,254,138,138,202,178,130,254,7,7,7, + 8,1,0,254,130,170,146,170,130,254,5,10,10,8,2,0, + 136,136,80,80,32,32,80,80,136,136,7,12,12,8,1,2, + 10,160,8,130,56,124,254,16,16,16,16,32,12,13,26,16, + 2,0,36,128,73,0,73,0,36,128,36,128,73,0,0,0, + 127,32,255,208,191,80,128,80,128,224,127,0,11,13,26,16, + 2,0,4,0,10,0,17,0,32,128,64,64,128,32,128,32, + 128,32,128,32,128,32,128,32,128,32,255,224,11,13,26,16, + 2,0,4,0,14,0,31,0,63,128,127,192,255,224,255,224, + 255,224,255,224,255,224,255,224,255,224,255,224,13,13,26,16, + 1,255,5,0,15,128,15,128,103,48,242,120,127,240,242,120, + 98,48,4,0,4,0,4,0,8,0,16,0,14,15,30,16, + 1,254,102,24,79,24,223,176,159,160,255,160,255,32,255,56, + 126,228,127,36,127,40,63,152,63,144,31,176,15,32,6,0, + 7,4,4,8,1,2,252,62,62,28,7,4,4,8,1,2, + 126,248,248,112,7,4,4,8,1,2,252,34,50,28,4,7, + 7,8,2,2,16,16,112,208,144,144,96,7,4,4,8,1, + 2,126,136,152,112,4,7,7,8,2,0,96,144,144,208,112, + 16,16,8,12,12,8,0,0,231,165,126,129,165,165,129,90, + 90,66,189,231,4,10,10,8,2,0,224,16,16,32,32,64, + 64,128,128,112,13,13,26,16,1,0,31,192,32,32,69,16, + 141,136,157,200,189,232,255,248,130,8,135,8,143,136,95,208, + 32,32,31,192,15,13,26,16,0,255,4,64,8,32,16,16, + 16,16,19,144,12,96,62,248,68,68,133,66,131,130,2,128, + 4,64,24,48,13,15,30,16,1,254,6,0,2,0,255,248, + 71,16,63,224,2,0,26,192,34,32,31,192,18,64,15,128, + 10,128,7,0,10,128,2,0,5,8,8,8,2,0,112,136, + 80,32,248,32,32,32,5,9,9,8,2,0,32,112,32,248, + 32,48,96,32,32,6,10,10,8,1,0,56,36,36,56,32, + 168,112,32,112,168,5,9,9,8,2,0,32,112,32,248,32, + 32,32,32,32,7,7,7,8,1,0,56,16,146,254,146,16, + 56,8,9,9,8,0,1,30,33,64,194,199,194,64,33,30, + 11,11,22,16,2,0,21,0,27,0,0,0,85,64,164,160, + 164,160,164,160,149,32,78,64,31,0,4,0,11,12,24,16, + 3,255,4,0,21,0,36,128,78,64,213,96,213,96,206,96, + 228,224,223,96,142,32,21,0,4,0,8,8,8,8,0,0, + 12,2,57,121,13,62,99,193,7,8,8,8,1,0,124,146, + 146,146,186,214,146,124,13,12,24,16,1,0,31,192,32,32, + 64,16,64,16,152,72,188,8,254,24,239,56,255,248,127,240, + 63,224,31,192,13,10,20,16,1,0,255,248,255,248,0,0, + 0,0,255,248,255,248,0,0,0,0,255,248,255,248,13,10, + 20,16,1,0,248,248,248,248,0,0,0,0,255,248,255,248, + 0,0,0,0,255,248,255,248,13,10,20,16,1,0,255,248, + 255,248,0,0,0,0,248,248,248,248,0,0,0,0,255,248, + 255,248,13,10,20,16,1,0,248,248,248,248,0,0,0,0, + 248,248,248,248,0,0,0,0,255,248,255,248,13,10,20,16, + 1,0,255,248,255,248,0,0,0,0,255,248,255,248,0,0, + 0,0,248,248,248,248,13,10,20,16,1,0,248,248,248,248, + 0,0,0,0,255,248,255,248,0,0,0,0,248,248,248,248, + 13,10,20,16,1,0,255,248,255,248,0,0,0,0,248,248, + 248,248,0,0,0,0,248,248,248,248,13,10,20,16,1,0, + 248,248,248,248,0,0,0,0,248,248,248,248,0,0,0,0, + 248,248,248,248,7,7,7,8,1,0,146,124,124,238,124,124, + 146,8,10,10,8,0,1,60,66,129,165,129,153,165,129,66, + 60,8,9,9,8,0,1,60,66,129,165,129,165,153,66,60, + 8,9,9,8,0,1,60,126,255,219,255,219,231,126,60,7, + 7,7,8,1,2,146,84,56,238,56,84,146,6,10,10,8, + 2,0,224,48,24,20,20,20,20,24,48,224,6,10,10,8, + 1,0,28,48,96,160,160,160,160,96,48,28,5,11,11,8, + 2,0,136,136,112,136,136,136,112,32,248,32,32,5,9,9, + 8,2,0,112,136,136,136,112,32,248,32,32,5,10,10,8, + 2,1,32,32,248,32,32,112,136,136,136,112,7,8,8,8, + 1,1,14,6,10,112,136,136,136,112,6,10,10,8,1,0, + 4,4,4,116,140,12,20,252,4,4,6,10,10,8,1,0, + 64,64,224,64,88,100,68,72,72,72,7,9,9,8,1,0, + 214,84,124,84,214,16,56,40,56,8,11,11,8,0,255,8, + 89,203,73,73,73,62,8,62,8,8,6,10,10,8,1,0, + 248,132,132,132,248,128,128,128,128,252,7,10,10,8,1,0, + 68,170,40,40,16,16,16,16,16,16,7,7,7,8,1,0, + 130,68,56,68,68,68,56,7,10,10,8,1,0,130,124,40, + 40,40,40,40,40,124,130,7,8,8,8,1,0,124,146,144, + 96,12,18,146,124,8,9,9,8,0,0,28,34,34,18,116, + 148,148,101,2,7,10,10,8,1,0,168,248,170,174,170,170, + 170,170,12,248,7,6,6,8,1,1,56,68,68,238,0,254, + 7,10,10,8,1,0,168,248,168,168,168,168,168,168,170,6, + 7,7,7,8,1,0,30,6,138,82,32,80,136,6,10,10, + 8,1,0,128,240,144,144,156,20,28,16,16,96,6,6,6, + 8,1,2,84,168,0,0,84,168,6,9,9,8,1,0,132, + 132,72,72,252,72,72,132,132,7,13,13,8,1,0,16,56, + 146,186,198,130,68,68,68,130,130,130,254,7,11,11,8,1, + 0,16,56,198,130,68,68,68,130,130,130,254,7,9,9,8, + 1,0,170,254,130,130,68,68,130,130,254,7,10,10,8,1, + 0,16,40,68,68,68,68,40,238,130,254,6,11,11,8,1, + 0,4,60,68,132,132,116,36,68,132,132,252,6,8,8,8, + 1,0,48,72,72,48,72,72,132,252,7,13,13,8,1,0, + 16,56,146,186,254,254,124,124,124,254,254,254,254,7,11,11, + 8,1,0,16,56,254,238,124,124,124,254,254,254,254,7,8, + 8,8,1,0,170,254,254,124,124,254,254,254,7,10,10,8, + 1,0,16,56,108,68,108,124,56,254,254,254,6,11,11,8, + 1,0,4,60,108,252,252,124,60,124,252,252,252,6,8,8, + 8,1,0,48,120,120,48,120,120,252,252,7,10,10,8,1, + 0,16,16,56,124,254,254,254,124,16,56,7,9,9,8,1, + 0,108,146,130,130,130,68,40,16,16,5,10,10,8,2,0, + 32,32,80,80,136,136,80,80,32,32,7,10,10,8,1,0, + 56,56,56,16,254,254,214,16,16,56,7,10,10,8,1,0, + 16,16,40,68,130,130,130,124,16,56,7,9,9,8,1,0, + 108,254,254,254,254,124,56,16,16,5,10,10,8,2,0,32, + 32,112,112,248,248,112,112,32,32,7,10,10,8,1,0,56, + 40,56,16,238,186,214,16,16,56,8,11,11,8,0,0,8, + 81,146,146,146,73,73,73,82,129,126,4,10,10,8,1,0, + 16,16,16,16,16,16,16,112,240,224,6,10,10,8,1,0, + 16,24,20,20,16,16,16,112,240,224,8,11,11,8,0,0, + 28,23,17,17,17,17,113,241,231,15,14,8,11,11,8,0, + 0,28,23,17,29,23,17,113,241,231,15,14,6,12,12,8, + 1,0,128,128,128,128,128,184,204,140,136,144,160,192,6,11, + 11,8,1,0,128,128,156,252,228,132,156,252,228,4,4,6, + 13,13,8,1,255,8,72,76,124,248,200,72,76,124,248,200, + 72,64,7,10,10,8,1,0,40,16,16,146,124,146,16,16, + 16,40,7,10,10,8,1,0,56,40,16,214,186,214,16,16, + 40,16,16,16,32,16,0,254,3,184,4,165,8,179,5,9, + 18,5,40,9,68,31,238,0,40,15,48,73,36,201,13,101, + 22,19,37,120,60,192,0,64,15,16,32,16,0,254,3,128, + 4,64,4,64,8,32,0,40,57,24,27,56,41,0,33,8, + 67,132,64,4,128,34,128,66,126,252,0,64,0,32,15,16, + 32,16,0,254,3,128,4,64,4,64,8,32,0,40,59,24, + 24,184,41,0,34,8,67,132,64,4,128,34,128,66,126,252, + 0,64,0,32,15,16,32,16,0,254,3,128,4,64,4,64, + 8,32,0,40,57,24,24,184,43,0,32,136,67,4,64,4, + 128,34,128,66,126,252,0,64,0,32,15,16,32,16,0,254, + 3,128,4,64,4,64,8,32,0,40,58,152,26,184,43,128, + 32,136,64,132,64,4,128,34,128,66,126,252,0,64,0,32, + 15,16,32,16,0,254,3,128,4,64,4,64,8,32,0,40, + 59,152,26,56,43,0,32,136,67,4,64,4,128,34,128,66, + 126,252,0,64,0,32,15,16,32,16,0,254,3,128,4,64, + 4,64,8,32,0,40,57,152,26,56,43,128,34,72,65,132, + 64,4,128,34,128,66,126,252,0,64,0,32,15,16,32,16, + 0,254,3,128,4,64,4,64,8,32,0,40,59,152,24,184, + 41,0,33,8,65,4,64,4,128,34,128,66,126,252,0,64, + 0,32,15,16,32,16,0,254,3,128,4,64,4,64,8,32, + 0,40,56,24,24,56,40,0,32,8,64,4,64,4,128,34, + 128,66,126,252,0,64,0,32,16,16,32,16,0,254,3,184, + 7,189,15,191,7,15,18,7,56,15,124,31,254,0,56,15, + 48,79,36,207,13,231,31,243,61,248,60,192,0,64,15,16, + 32,16,0,254,7,192,15,224,60,120,123,188,119,172,127,204, + 199,142,231,254,215,238,223,238,111,108,118,220,124,60,62,248, + 15,96,7,192,15,16,32,16,0,254,7,192,24,48,32,8, + 67,132,68,84,64,52,184,114,152,2,168,18,160,18,80,148, + 73,36,67,196,33,8,24,176,7,192,13,12,24,16,0,255, + 7,0,24,192,32,32,64,16,77,144,146,72,146,72,77,144, + 64,16,32,32,24,192,7,0,12,11,22,16,2,0,24,0, + 24,0,16,0,30,0,16,0,95,128,128,128,128,64,129,64, + 66,48,60,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w=16 h=16 x= 4 y= 4 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent=-1 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_77[1587] U8G_SECTION(".progmem.u8g_font_unifont_77") = { + 0,16,16,0,254,11,3,99,5,215,32,99,0,14,254,11, + 255,9,9,18,16,3,1,255,128,128,128,128,128,128,128,136, + 128,128,128,128,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,128,128,160,128,128,128,130,128,128,128,128,128,255, + 128,9,9,18,16,3,1,255,128,128,128,160,128,128,128,136, + 128,128,128,130,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,162,128,128,128,128,128,128,128,162,128,128,128,255, + 128,9,9,18,16,3,1,255,128,128,128,162,128,128,128,136, + 128,128,128,162,128,128,128,255,128,9,9,18,16,3,1,255, + 128,128,128,162,128,128,128,162,128,128,128,162,128,128,128,255, + 128,13,12,24,16,0,255,7,0,24,192,32,32,64,16,64, + 16,128,200,128,200,64,16,64,16,32,32,24,192,7,0,13, + 12,24,16,0,255,7,0,24,192,32,32,64,16,64,16,152, + 200,152,200,64,16,64,16,32,32,24,192,7,0,13,12,24, + 16,0,255,7,0,31,192,63,224,127,240,127,240,255,56,255, + 56,127,240,127,240,63,224,15,128,7,0,13,12,24,16,0, + 255,7,0,31,192,63,224,127,240,127,240,231,56,231,56,127, + 240,127,240,63,224,15,128,7,0,13,2,4,16,1,4,255, + 248,255,248,13,2,4,16,1,4,248,248,248,248,13,6,12, + 16,1,2,255,248,255,248,0,0,0,0,255,248,255,248,13, + 6,12,16,1,2,248,248,248,248,0,0,0,0,255,248,255, + 248,13,6,12,16,1,2,255,248,255,248,0,0,0,0,248, + 248,248,248,13,6,12,16,1,2,248,248,248,248,0,0,0, + 0,248,248,248,248,6,11,11,8,1,0,224,156,132,132,228, + 156,128,128,128,128,128,6,11,11,8,1,0,224,252,252,252, + 252,156,128,128,128,128,128,16,14,28,16,0,255,7,50,95, + 124,62,126,124,31,248,39,116,67,34,129,1,0,2,128,4, + 64,8,32,16,16,32,8,64,4,14,12,24,16,1,0,3, + 128,4,64,4,64,3,128,1,0,7,192,1,0,65,8,225, + 28,65,8,33,16,31,224,13,13,26,16,1,0,128,8,64, + 16,32,32,16,64,8,128,5,0,2,0,5,0,8,128,80, + 80,32,32,80,80,128,8,9,14,28,16,3,255,8,0,8, + 0,127,128,137,128,136,0,126,0,9,0,9,0,62,0,72, + 0,60,0,10,0,28,0,8,0,15,11,22,16,0,0,1, + 0,17,16,127,252,57,56,84,84,84,84,146,146,146,146,254, + 254,124,124,56,56,11,8,16,16,2,0,63,128,95,192,143, + 192,135,128,128,0,15,128,18,64,34,32,11,13,26,16,2, + 255,14,0,17,0,17,0,17,0,14,0,4,0,228,224,245, + 224,117,192,53,128,14,0,4,0,4,0,13,13,26,16,1, + 255,2,0,66,16,47,160,16,64,32,32,32,32,226,56,32, + 32,32,32,16,64,47,160,66,16,2,0,15,13,26,16,0, + 0,1,0,2,128,57,56,127,252,253,126,5,64,3,128,1, + 0,1,0,1,0,1,0,1,0,1,0,13,15,30,16,1, + 254,2,0,117,112,141,136,141,136,138,136,77,144,40,160,26, + 192,40,160,77,144,138,136,141,136,141,136,117,112,2,0,15, + 16,32,16,0,254,1,0,2,128,58,184,68,68,132,66,242, + 158,138,162,6,192,6,192,8,32,6,192,6,192,10,160,50, + 152,70,196,121,60,15,15,30,16,0,255,1,0,2,128,4, + 64,4,64,8,0,107,252,136,2,136,34,96,36,24,16,6, + 80,0,136,33,8,38,72,24,48,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,13,14,28,16,1,255,2,0,5,0,5,0,8,128,8, + 128,18,64,18,64,34,32,34,32,66,16,64,16,130,8,128, + 8,255,248,6,11,11,8,1,255,4,8,16,32,64,252,8, + 16,32,64,128,11,9,18,16,2,0,59,128,68,64,138,32, + 138,32,68,64,59,128,17,0,59,128,17,0,11,11,22,16, + 2,0,7,0,3,0,5,0,56,224,68,96,142,160,149,0, + 104,128,48,128,17,0,14,0,10,14,28,16,3,255,1,192, + 0,192,1,64,14,0,17,0,56,128,84,128,139,0,134,0, + 68,0,56,0,16,0,56,0,16,0,8,12,12,16,4,254, + 7,3,5,56,68,130,130,68,56,16,56,16,11,10,20,16, + 2,0,0,224,0,96,2,160,1,0,58,128,68,0,130,0, + 130,0,68,0,56,0,15,13,26,16,0,254,224,14,192,6, + 168,10,16,16,43,160,4,64,8,32,8,32,4,64,3,128, + 1,0,3,128,1,0,7,12,12,8,0,0,16,56,84,16, + 56,16,56,68,130,130,68,56,14,7,14,16,0,255,56,0, + 68,16,130,136,131,252,130,136,68,16,56,0,7,7,7,8, + 0,255,56,68,130,130,130,68,56,7,7,7,8,0,255,56, + 124,254,254,254,124,56,5,5,5,8,2,0,112,136,136,136, + 112,11,6,12,16,2,0,59,128,68,64,138,32,138,32,68, + 64,59,128,11,7,14,16,3,255,4,0,117,192,142,32,142, + 32,142,32,117,192,4,0,13,5,10,16,1,0,112,112,136, + 136,143,136,136,136,112,112,14,10,20,16,2,0,24,0,39, + 128,64,124,128,0,128,0,128,0,128,0,64,124,39,128,24, + 0,11,13,26,16,2,0,31,0,10,0,63,128,64,64,128, + 32,128,32,64,64,64,64,64,64,32,128,32,128,32,128,31, + 0,7,9,9,8,0,254,56,68,130,130,68,56,16,16,16, + 6,9,9,8,0,254,112,136,4,4,8,48,32,248,32,7, + 10,10,8,0,254,16,40,68,130,68,40,16,16,124,16,7, + 10,10,8,0,254,146,84,56,254,56,84,146,16,124,16,13, + 11,22,16,1,0,2,0,2,0,2,0,2,0,114,112,8, + 128,5,0,242,120,8,128,5,0,2,0,6,11,11,8,1, + 0,36,40,48,40,36,32,112,136,136,136,112,6,10,10,8, + 1,254,56,112,224,224,224,112,56,16,124,16,8,7,7,8, + 0,3,66,36,24,255,24,36,66,7,8,8,8,0,0,68, + 68,68,40,40,40,16,254,7,8,8,8,0,0,254,16,40, + 40,40,68,68,68,7,8,8,8,1,0,252,132,132,132,148, + 252,16,30,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,6,14,14,8,1, + 255,168,84,168,84,168,84,168,84,168,84,168,84,168,84,12, + 9,18,16,2,0,31,128,96,96,134,16,134,16,224,112,191, + 208,169,80,105,96,31,128,12,12,24,16,2,0,31,128,96, + 96,134,16,134,16,224,112,191,208,169,80,233,112,191,208,169, + 80,105,96,31,128,14,11,22,16,1,255,31,224,112,56,207, + 204,188,244,188,244,143,196,160,20,171,84,203,76,112,56,31, + 224,14,14,28,16,1,255,31,224,112,56,207,204,188,244,188, + 244,143,196,160,20,171,84,139,68,160,20,171,84,203,76,112, + 56,31,224}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 15, '1' Height: 13 + Calculated Max Values w=16 h=15 x= 7 y= 4 dx=16 dy= 0 ascent=14 len=30 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =15 descent=-2 + X Font ascent =15 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[6975] U8G_SECTION(".progmem.u8g_font_unifont_78_79") = { + 0,16,16,0,254,15,7,255,11,108,1,255,254,14,254,15, + 254,15,11,22,16,0,2,56,0,124,0,108,0,124,0,60, + 0,14,0,127,252,255,254,217,192,248,224,112,0,14,11,22, + 16,0,1,112,8,248,60,216,120,254,240,127,224,7,192,127, + 224,254,240,216,120,248,60,112,8,15,11,22,16,0,255,112, + 0,248,224,217,192,255,254,127,252,14,0,60,0,124,0,108, + 0,124,0,56,0,15,11,22,16,0,1,112,12,136,50,174, + 68,129,136,121,16,6,32,120,80,129,136,174,68,136,50,112, + 12,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,15,15,30,16,0,255,7,192,24,48,32, + 8,65,196,71,228,143,242,143,114,158,98,156,2,159,2,79, + 4,70,4,32,8,24,48,7,192,15,15,30,16,0,255,7, + 192,25,48,35,136,67,132,65,4,131,130,135,194,135,194,135, + 194,139,162,92,116,88,52,32,8,24,48,7,192,15,14,28, + 16,0,255,8,0,15,0,6,0,7,192,195,128,227,192,127, + 254,127,254,227,192,195,128,7,192,6,0,15,0,8,0,14, + 7,14,16,1,3,255,252,192,12,176,52,140,196,179,52,192, + 12,255,252,6,14,14,8,1,255,168,84,168,84,168,84,168, + 84,168,84,168,84,168,84,6,14,14,8,1,255,168,84,168, + 84,168,84,168,84,168,84,168,84,168,84,15,15,30,16,0, + 255,24,48,36,72,34,136,18,144,17,16,9,32,8,32,124, + 252,146,130,146,114,146,34,146,66,124,4,32,8,31,240,15, + 13,26,16,1,0,0,16,0,56,0,112,7,238,25,234,35, + 154,71,10,142,10,223,202,36,10,95,250,224,10,192,14,12, + 12,24,16,1,0,48,0,76,0,170,0,149,0,226,128,81, + 64,40,160,20,80,10,80,5,144,2,48,1,240,15,7,14, + 16,0,3,63,240,80,40,143,244,168,22,143,244,80,40,63, + 240,12,12,24,16,1,0,1,240,2,48,5,144,10,80,20, + 80,40,160,81,64,226,128,149,0,170,0,76,0,48,0,15, + 7,14,16,0,3,0,240,121,8,134,108,128,254,134,108,121, + 8,0,240,15,7,14,16,0,3,0,224,121,240,255,56,255, + 14,255,56,121,240,0,224,13,10,20,16,1,255,0,8,0, + 16,0,32,128,64,128,128,65,0,66,0,36,0,40,0,16, + 0,15,11,22,16,0,255,0,4,0,14,64,28,224,56,224, + 112,112,224,113,192,59,128,63,0,30,0,12,0,11,11,22, + 16,2,1,64,64,224,224,113,192,59,128,31,0,14,0,31, + 0,59,128,113,192,224,224,64,64,15,15,30,16,0,255,16, + 16,56,56,124,124,254,254,127,252,63,248,31,240,15,224,31, + 240,63,248,127,252,254,254,124,124,56,56,16,16,12,13,26, + 16,1,0,192,48,96,192,99,128,54,0,28,0,28,0,54, + 0,51,0,97,128,96,192,192,96,192,48,64,0,12,14,28, + 16,1,255,192,48,224,224,99,192,119,0,62,0,28,0,62, + 0,55,0,115,128,97,192,224,224,192,112,192,32,64,0,15, + 15,30,16,0,255,7,192,4,64,5,64,5,64,5,64,253, + 126,129,2,191,250,129,2,253,126,5,64,5,64,5,64,4, + 64,7,192,15,15,30,16,0,255,7,192,7,192,7,192,7, + 192,7,192,255,254,255,254,255,254,255,254,255,254,7,192,7, + 192,7,192,7,192,7,192,15,15,30,16,0,255,3,128,3, + 128,3,128,3,128,3,128,3,128,252,126,252,126,252,126,3, + 128,3,128,3,128,3,128,3,128,3,128,15,15,30,16,0, + 255,7,192,7,192,7,192,7,192,7,192,248,62,248,62,248, + 62,248,62,248,62,7,192,7,192,7,192,7,192,7,192,9, + 11,22,16,3,1,28,0,28,0,28,0,255,128,255,128,255, + 128,28,0,28,0,28,0,28,0,28,0,13,15,30,16,1, + 255,15,0,9,128,9,128,9,128,249,240,128,24,128,24,249, + 248,121,248,9,128,9,128,9,128,9,128,15,128,7,128,13, + 14,28,16,1,255,31,192,16,64,247,120,135,8,191,232,191, + 232,191,232,135,8,247,120,23,64,23,64,23,64,16,64,31, + 192,15,15,30,16,0,255,31,240,7,192,3,128,131,130,131, + 130,195,134,255,254,255,254,255,254,195,134,131,130,131,130,3, + 128,7,192,31,240,15,15,30,16,0,255,1,0,2,128,4, + 64,4,64,255,254,80,20,80,20,32,8,80,20,80,20,255, + 254,4,64,4,64,2,128,1,0,15,15,30,16,0,255,3, + 128,7,192,7,192,3,128,3,128,97,12,249,62,255,254,249, + 62,97,12,3,128,3,128,7,192,7,192,3,128,15,15,30, + 16,0,255,3,128,7,192,7,192,7,192,3,128,113,28,249, + 62,255,254,249,62,113,28,3,128,7,192,7,192,7,192,3, + 128,15,15,30,16,0,255,7,192,15,224,15,224,7,192,99, + 140,243,158,255,254,255,254,255,254,243,158,99,140,7,192,15, + 224,15,224,7,192,16,15,30,16,0,255,1,0,3,128,7, + 192,7,192,1,0,49,12,113,14,255,255,113,14,49,12,1, + 0,7,192,7,192,3,128,1,0,15,15,30,16,0,255,1, + 0,3,128,3,128,7,192,7,192,31,240,127,252,255,254,127, + 252,31,240,7,192,7,192,3,128,3,128,1,0,15,15,30, + 16,0,255,1,0,2,128,2,128,4,64,4,64,24,48,96, + 12,128,2,96,12,24,48,4,64,4,64,2,128,2,128,1, + 0,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,15,12,24,16,0,1,1,0,2,128,2, + 128,252,126,64,4,56,56,8,32,16,16,17,16,38,200,40, + 40,48,24,15,15,30,16,0,255,7,192,31,240,62,248,126, + 252,124,124,192,6,240,30,248,62,240,30,241,30,103,204,111, + 236,63,248,31,240,7,192,15,12,24,16,0,1,1,0,3, + 128,3,128,255,254,124,124,56,56,8,32,28,112,31,240,62, + 248,56,56,48,24,15,12,24,16,0,1,1,0,2,128,2, + 128,252,126,67,132,39,200,23,208,19,144,16,16,39,200,40, + 40,48,24,15,12,24,16,0,1,1,0,2,128,28,112,225, + 14,79,228,35,136,23,208,20,80,17,16,34,136,44,104,48, + 24,15,12,24,16,0,1,1,0,2,128,29,112,227,142,95, + 244,47,232,23,208,22,208,21,80,34,136,44,104,48,24,15, + 13,26,16,0,0,1,0,3,128,5,192,249,254,93,140,39, + 184,19,240,15,208,29,144,25,208,50,232,44,120,48,24,16, + 13,26,16,0,0,1,0,2,128,2,192,255,254,68,71,56, + 62,8,60,22,208,17,24,39,200,47,44,60,28,24,12,15, + 13,26,16,0,0,3,128,3,128,3,128,67,132,243,158,63, + 252,15,240,63,252,243,158,67,132,3,128,3,128,3,128,15, + 13,26,16,0,0,3,128,3,128,3,128,67,132,243,158,60, + 124,8,48,60,124,243,158,67,132,3,128,3,128,3,128,15, + 15,30,16,0,255,1,0,1,0,33,8,17,16,13,96,15, + 224,7,192,255,254,7,192,15,224,13,96,17,16,33,8,1, + 0,1,0,15,15,30,16,0,255,1,0,1,0,33,8,27, + 176,31,240,15,224,31,224,255,254,31,240,15,224,31,240,27, + 176,33,8,1,0,1,0,15,15,30,16,0,255,1,0,2, + 128,60,248,44,200,38,152,50,184,125,76,131,134,77,124,58, + 152,50,200,38,104,62,120,2,128,1,0,13,13,26,16,1, + 0,2,0,2,0,2,0,135,8,119,112,63,224,31,192,63, + 224,119,112,135,8,2,0,2,0,2,0,15,15,30,16,0, + 255,8,32,8,32,12,96,6,192,230,206,59,184,31,240,7, + 192,31,240,59,184,230,206,6,192,12,96,8,32,8,32,15, + 15,30,16,0,255,8,32,12,96,14,224,15,224,255,254,127, + 252,63,248,31,240,63,248,127,252,255,254,15,224,14,224,12, + 96,8,32,15,15,30,16,0,255,1,0,25,48,15,224,79, + 228,127,252,63,248,63,248,255,254,63,248,63,248,127,252,79, + 228,15,224,25,48,1,0,15,15,30,16,0,255,9,32,73, + 36,37,72,21,80,203,166,55,216,15,224,255,254,15,224,55, + 216,203,166,21,80,37,72,73,36,9,32,15,15,30,16,0, + 255,1,0,3,128,3,128,3,128,225,14,113,28,13,96,3, + 128,13,96,113,28,225,14,3,128,3,128,3,128,1,0,15, + 15,30,16,0,255,3,128,7,192,7,192,99,140,241,30,243, + 158,60,120,8,32,60,120,243,158,241,30,99,140,7,192,7, + 192,3,128,15,15,30,16,0,255,3,128,7,192,7,192,99, + 140,243,158,241,30,61,120,7,192,61,120,241,30,243,158,99, + 140,7,192,7,192,3,128,15,15,30,16,0,255,3,128,4, + 64,4,64,116,92,252,126,254,254,127,252,33,8,67,132,135, + 194,143,226,119,220,7,192,7,192,3,128,15,14,28,16,0, + 0,3,128,7,192,15,224,119,220,255,254,252,126,240,30,112, + 28,24,48,62,248,127,252,126,252,126,252,60,120,15,14,28, + 16,0,0,3,128,4,64,9,32,121,60,133,66,179,154,143, + 226,111,236,23,208,39,200,73,36,82,148,66,132,60,120,15, + 15,30,16,0,255,3,128,60,120,69,68,81,20,77,100,111, + 236,134,194,188,122,134,194,111,236,77,100,81,20,69,68,60, + 120,3,128,15,15,30,16,0,255,7,192,30,240,62,248,92, + 116,103,204,252,126,232,46,136,34,232,46,252,126,103,204,92, + 116,62,248,30,240,7,192,15,15,30,16,0,255,3,128,4, + 192,4,192,116,220,188,230,159,158,79,60,63,248,114,100,230, + 114,206,122,118,92,6,64,6,64,3,128,15,13,26,16,0, + 0,1,0,5,64,3,128,201,38,49,24,77,100,3,128,77, + 100,49,24,201,38,3,128,5,64,1,0,15,13,26,16,0, + 0,1,0,5,64,11,160,201,38,49,24,77,100,131,130,77, + 100,49,24,201,38,11,160,5,64,1,0,15,15,30,16,0, + 255,9,32,13,96,7,192,19,144,201,38,49,24,237,110,3, + 128,237,110,49,24,201,38,17,16,7,192,13,96,9,32,14, + 14,28,16,1,255,7,128,71,136,39,144,19,32,11,64,224, + 28,251,124,251,124,224,28,11,64,19,32,39,144,71,136,7, + 128,15,15,30,16,0,255,7,192,71,196,39,200,19,144,11, + 160,224,14,251,190,251,190,251,190,224,14,11,160,19,144,39, + 200,71,196,7,192,15,15,30,16,0,255,3,128,7,192,7, + 192,119,220,251,190,249,62,125,124,7,192,125,124,249,62,251, + 190,119,220,7,192,7,192,3,128,15,15,30,16,0,255,1, + 0,3,128,51,152,49,24,9,32,5,64,99,140,255,254,99, + 140,5,64,9,32,49,24,51,152,3,128,1,0,15,15,30, + 16,0,255,1,0,3,128,51,152,59,184,25,48,7,192,119, + 220,255,254,119,220,7,192,25,48,59,184,51,152,3,128,1, + 0,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,13,13,26,16,2,255,15,0,48,192,64, + 32,64,48,128,16,128,24,128,24,128,24,64,56,64,48,48, + 240,15,224,7,128,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,12,12,24,16,3,1,255, + 192,128,64,128,112,128,112,128,112,128,112,128,112,128,112,128, + 112,255,240,63,240,63,240,12,12,24,16,3,1,63,240,63, + 240,255,240,128,112,128,112,128,112,128,112,128,112,128,112,128, + 112,128,64,255,192,12,12,24,16,3,1,255,192,128,96,128, + 112,128,112,128,112,128,112,128,112,128,112,128,112,255,240,127, + 240,63,240,12,12,24,16,3,1,63,240,127,240,255,240,128, + 112,128,112,128,112,128,112,128,112,128,112,128,112,128,96,255, + 192,6,14,14,8,1,255,168,84,168,84,168,84,168,84,168, + 84,168,84,168,84,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,13,13,26, + 16,1,0,2,0,7,0,15,128,7,0,34,32,112,112,248, + 248,112,112,34,32,7,0,15,128,7,0,2,0,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,2,15,15,16,7,255,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,4,15,15,16,6,255,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,8,15,15,16,4, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 7,10,10,16,4,4,28,112,192,248,252,254,254,254,124,56, + 7,10,10,16,4,4,56,124,254,254,254,126,62,6,28,112, + 15,10,20,16,0,4,28,28,112,112,192,192,248,248,252,252, + 254,254,254,254,254,254,124,124,56,56,15,10,20,16,0,4, + 56,56,124,124,254,254,254,254,254,254,126,126,62,62,6,6, + 28,28,112,112,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,14,14,28,16, + 1,255,0,32,0,32,31,252,127,240,252,32,252,32,126,32, + 31,224,0,32,96,96,240,64,240,192,99,128,62,0,9,15, + 30,16,3,255,28,0,127,0,255,128,255,128,255,128,127,0, + 28,0,8,0,8,0,0,0,28,0,62,0,62,0,62,0, + 28,0,9,13,26,16,3,0,119,0,255,128,255,128,255,128, + 127,0,28,0,8,0,0,0,28,0,62,0,62,0,62,0, + 28,0,15,13,26,16,0,255,60,120,126,252,255,254,255,254, + 255,254,127,252,127,252,63,248,31,240,15,224,7,192,3,128, + 1,0,13,15,30,16,1,255,56,0,126,0,255,0,255,128, + 255,192,255,224,127,240,63,248,127,240,255,224,255,192,255,128, + 255,0,126,0,56,0,15,14,28,16,0,255,3,0,12,134, + 56,142,103,248,1,0,57,56,126,252,255,254,255,254,127,252, + 63,248,31,226,7,238,0,248,14,15,30,16,1,254,97,152, + 99,200,55,236,23,228,23,252,19,252,115,252,157,248,147,248, + 83,248,103,240,39,240,55,224,19,192,1,128,4,12,12,8, + 3,255,16,32,96,192,192,192,192,192,192,96,32,16,4,12, + 12,8,2,255,128,64,96,48,48,48,48,48,48,96,64,128, + 5,12,12,8,2,255,24,48,112,224,224,224,224,224,224,112, + 48,24,5,12,12,8,2,255,192,96,112,56,56,56,56,56, + 56,112,96,192,5,12,12,8,2,255,24,48,48,96,96,192, + 192,96,96,48,48,24,5,12,12,8,2,255,192,96,96,48, + 48,24,24,48,48,96,96,192,6,12,12,8,2,255,28,56, + 56,112,112,224,224,112,112,56,56,28,6,12,12,8,1,255, + 224,112,112,56,56,28,28,56,56,112,112,224,7,12,12,8, + 1,255,30,60,60,120,120,240,240,120,120,60,60,30,7,12, + 12,8,0,255,240,120,120,60,60,30,30,60,60,120,120,240, + 3,12,12,8,3,255,32,64,128,128,128,128,128,128,128,128, + 64,32,3,12,12,8,2,255,128,64,32,32,32,32,32,32, + 32,32,64,128,6,12,12,8,1,255,60,112,96,96,48,48, + 224,48,48,96,112,60,6,12,12,8,1,255,240,56,24,24, + 48,48,28,48,48,24,56,240,15,15,30,16,0,255,7,192, + 31,240,63,248,126,252,124,252,250,254,254,254,254,254,254,254, + 254,254,126,252,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,119,220,255,222,255,222, + 255,62,252,254,251,254,119,220,112,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,120,60,119,220, + 255,222,255,222,255,62,255,222,255,222,119,220,120,60,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 127,188,127,60,254,190,253,190,251,190,247,190,224,14,127,188, + 126,12,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,112,28,119,252,247,254,240,62,255,222,255,222, + 255,222,119,220,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,119,220,247,254,247,254, + 240,62,247,222,247,222,119,220,120,60,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,112,28,119,220, + 255,190,255,190,255,126,254,254,254,254,125,252,125,252,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 120,60,119,220,247,222,247,222,248,62,247,222,247,222,119,220, + 120,60,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,120,60,119,220,247,222,247,222,248,30,255,222, + 255,222,119,220,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,119,28,102,236,246,238,246,238, + 246,238,246,238,246,238,118,236,99,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,132,65,132, + 131,130,129,130,129,130,129,130,129,130,65,132,65,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,79,228,140,98,128,98,129,194,135,2,140,2,79,228, + 79,228,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,79,228,140,98,128,98,129,194,128,98, + 140,98,79,228,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,228,65,228,131,98,134,98, + 140,98,159,242,159,242,64,100,64,100,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,79,228,79,228, + 140,2,143,194,143,226,128,98,140,98,79,228,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,79,228,140,2,143,194,143,226,140,98,140,98,79,228, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,79,228,79,228,128,98,128,98,128,194,131,130, + 134,2,70,4,70,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,71,196,79,228,140,98,140,98, + 135,194,140,98,140,98,79,228,71,196,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,79,228, + 140,98,140,98,143,226,135,226,128,98,79,228,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,228,77,244,157,178,141,178,141,178,141,178,141,178,77,244, + 76,228,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,127,124,126,124,252,126,254,126,254,126,254,126, + 254,126,126,124,126,124,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,112,28,243,158,255,158, + 254,62,248,254,243,254,112,28,112,28,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,120,60,112,28, + 243,158,255,158,254,62,255,158,243,158,112,28,120,60,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 127,28,126,28,252,158,249,158,243,158,224,14,224,14,127,156, + 127,156,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,112,28,112,28,243,254,240,62,240,30,255,158, + 243,158,112,28,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,120,60,112,28,243,254,240,62, + 240,30,243,158,243,158,112,28,120,60,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,112,28,112,28, + 255,158,255,158,255,62,252,126,249,254,121,252,121,252,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 120,60,112,28,243,158,243,158,248,62,243,158,243,158,112,28, + 120,60,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,120,60,112,28,243,158,243,158,240,30,248,30, + 255,158,112,28,120,60,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,123,28,114,12,226,78,242,78, + 242,78,242,78,242,78,114,12,115,28,63,248,31,240,7,192, + 15,13,26,16,0,0,31,128,15,192,7,224,3,240,255,248, + 255,252,255,254,255,252,255,248,3,240,7,224,15,192,31,128, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,6,14,14,8,1,255,168,84,168,84,168,84, + 168,84,168,84,168,84,168,84,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,11,11,22,16, + 2,1,32,0,112,0,248,0,120,0,60,128,12,128,3,128, + 3,192,15,192,1,192,0,32,15,9,18,16,0,2,1,0, + 1,128,224,192,252,240,255,254,252,240,224,192,1,128,1,0, + 11,11,22,16,2,0,0,32,1,192,15,192,3,192,3,128, + 12,128,60,128,120,0,248,0,112,0,32,0,15,9,18,16, + 0,2,2,0,1,0,1,192,0,240,255,254,0,240,1,192, + 1,0,2,0,15,13,26,16,0,0,0,192,1,224,1,240, + 0,248,127,252,255,254,255,254,255,254,127,252,0,248,1,240, + 1,224,0,192,15,11,22,16,0,1,0,16,0,16,0,24, + 0,24,255,252,255,254,255,252,0,24,0,24,0,16,0,16, + 15,13,26,16,0,0,0,16,0,16,0,24,0,24,255,252, + 255,252,255,254,255,252,255,252,0,24,0,24,0,16,0,16, + 15,9,18,16,0,2,0,32,0,48,0,56,170,252,170,254, + 170,252,0,56,0,48,0,32,15,9,18,16,0,2,0,32, + 0,48,170,248,170,252,170,254,170,252,170,248,0,48,0,32, + 15,9,18,16,0,2,0,32,0,48,0,56,255,252,255,254, + 255,252,0,56,0,48,0,32,14,15,30,16,1,255,128,0, + 224,0,88,0,70,0,33,128,32,96,16,24,15,252,31,248, + 63,224,63,128,126,0,120,0,224,0,128,0,14,15,30,16, + 1,255,128,0,224,0,120,0,126,0,63,128,63,224,31,248, + 15,252,16,24,32,96,33,128,70,0,88,0,224,0,128,0, + 14,15,30,16,1,255,128,0,224,0,120,0,126,0,63,128, + 63,224,31,248,15,252,31,248,63,224,63,128,126,0,120,0, + 224,0,128,0,15,8,16,16,0,3,128,0,128,16,192,24, + 127,252,127,254,63,252,0,24,0,16,15,8,16,16,0,2, + 0,16,0,24,63,252,127,254,127,252,192,24,128,16,128,0, + 7,13,13,16,5,0,16,16,24,248,252,252,254,252,252,248, + 24,16,16,15,9,18,16,0,2,0,64,0,64,255,224,255, + 240,255,254,255,240,255,224,0,64,0,64,14,9,18,16,1, + 2,0,192,0,224,255,176,128,24,128,12,128,24,255,176,0, + 224,0,192,14,9,18,16,1,2,0,192,0,224,255,208,192, + 8,192,4,192,8,255,208,0,224,0,192,15,13,26,16,0, + 255,0,8,0,24,0,36,0,68,63,130,64,2,128,6,255, + 30,254,124,5,240,15,192,15,0,12,0,15,13,26,16,0, + 0,12,0,15,0,15,192,5,240,254,124,255,30,128,6,64, + 2,63,130,0,68,0,36,0,24,0,8,15,12,24,16,0, + 0,0,128,0,192,255,160,128,16,128,8,128,4,128,14,128, + 28,255,184,127,240,0,224,0,64,15,12,24,16,0,1,0, + 64,0,224,127,240,255,184,128,28,128,14,128,4,128,8,128, + 16,255,160,0,192,0,128,16,12,24,16,0,0,0,64,0, + 96,0,80,255,200,64,4,64,2,64,7,255,206,127,220,0, + 120,0,112,0,32,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,16,12,24,16,0,1,0, + 32,0,112,0,120,127,220,255,206,64,7,64,2,64,4,255, + 200,0,80,0,96,0,64,14,15,30,16,1,255,15,128,63, + 224,126,240,254,120,254,56,0,28,0,12,0,4,0,12,0, + 28,254,56,254,120,126,240,63,224,15,128,15,7,14,16,0, + 3,254,0,73,8,36,140,31,254,36,140,73,8,254,0,11, + 11,22,16,2,1,16,0,24,0,28,0,252,0,124,0,60, + 32,2,32,1,96,0,224,1,224,7,224,14,5,10,16,1, + 4,248,16,124,24,63,252,124,24,248,16,11,11,22,16,2, + 0,7,224,1,224,0,224,1,96,2,32,60,32,124,0,252, + 0,28,0,24,0,16,0,11,11,22,16,2,1,8,0,12, + 0,14,0,14,0,254,32,126,32,63,96,3,224,1,224,3, + 224,15,224,15,9,18,16,0,2,0,32,252,16,126,24,63, + 252,31,254,63,252,126,24,252,16,0,32,11,11,22,16,2, + 0,15,224,3,224,1,224,3,224,63,96,126,32,254,32,14, + 0,14,0,12,0,8,0,15,11,22,16,0,1,0,96,0, + 240,0,240,120,56,255,12,255,254,255,12,120,56,0,240,0, + 240,0,96,15,9,18,16,0,2,0,64,96,224,120,240,252, + 120,255,254,252,120,120,240,96,224,0,64,15,7,14,16,0, + 3,248,16,124,24,62,28,31,254,62,28,124,24,248,16,15, + 9,18,16,0,2,248,96,252,112,126,120,127,252,63,254,127, + 252,126,120,252,112,248,96,15,9,18,16,0,2,2,32,1, + 16,0,136,255,196,0,2,255,196,0,136,1,16,2,32,6, + 14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,168, + 84,168,84,6,6,6,8,1,0,128,136,144,160,192,252,11, + 12,24,16,2,0,4,0,10,0,10,0,17,0,17,0,36, + 128,42,128,74,64,81,64,159,32,128,32,255,224,5,6,6, + 8,1,0,32,32,32,32,32,248,10,8,16,16,3,1,63, + 192,64,0,129,128,130,64,130,64,129,128,64,0,63,192,10, + 8,16,16,3,1,255,0,0,128,96,64,144,64,144,64,96, + 64,0,128,255,0,5,10,10,8,2,0,112,136,136,16,16, + 32,32,64,64,56,5,10,10,8,2,0,112,136,136,64,64, + 32,32,16,16,224,7,8,8,8,0,0,130,130,84,68,40, + 40,16,16,14,8,16,16,1,1,129,252,130,0,68,0,68, + 0,36,0,36,0,18,0,17,252,14,8,16,16,1,1,254, + 4,1,4,0,136,0,136,0,144,0,144,1,32,254,32,3, + 10,10,8,2,0,64,64,64,64,224,64,64,64,64,64,6, + 14,14,8,1,255,168,84,168,84,168,84,168,84,168,84,168, + 84,168,84,12,14,28,16,2,254,255,240,128,0,64,0,64, + 0,32,0,32,0,32,0,32,0,32,0,32,0,64,0,64, + 0,128,0,128,0,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,168,84,168,84,6,14,14,8,1,255,168, + 84,168,84,168,84,168,84,168,84,168,84,168,84,6,14,14, + 8,1,255,168,84,168,84,168,84,168,84,168,84,168,84,168, + 84,9,9,18,16,4,0,8,0,20,0,34,0,65,0,136, + 128,65,0,34,0,20,0,8,0,7,8,8,8,0,0,16, + 16,40,40,68,84,130,130,9,10,20,16,3,0,136,128,136, + 128,136,128,136,128,136,128,136,128,136,128,136,128,73,0,62, + 0,6,6,6,8,1,0,4,4,36,4,4,252,6,6,6, + 8,1,0,252,128,128,144,128,128,12,10,20,16,2,0,224, + 16,48,48,40,80,36,144,35,16,35,16,36,144,40,80,48, + 48,224,16,12,10,20,16,2,0,128,112,192,192,161,64,146, + 64,140,64,140,64,146,64,161,64,192,192,128,112,14,10,20, + 16,1,0,224,28,48,48,40,80,36,144,35,16,35,16,36, + 144,40,80,48,48,224,28,9,12,24,16,3,0,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,255,128,9,12,24,16,3,0,255,128,8,0,8, + 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8, + 0,8,0,13,7,14,16,1,2,5,0,5,0,253,248,5, + 0,253,248,5,0,5,0,13,7,14,16,1,2,5,0,5, + 0,5,0,253,248,5,0,5,0,5,0,14,3,6,16,1, + 4,64,0,191,252,64,0,14,3,6,16,1,4,128,0,255, + 252,128,0,14,3,6,16,1,4,0,4,255,252,0,4,3, + 11,11,16,7,255,64,160,64,64,64,64,64,64,64,64,224, + 7,11,11,8,0,0,16,40,40,68,68,254,68,68,40,40, + 16,13,13,26,16,1,0,2,0,5,0,5,0,8,128,16, + 64,96,48,128,8,96,48,16,64,8,128,5,0,5,0,2, + 0,15,13,26,16,0,0,0,128,1,64,1,64,2,32,4, + 16,24,12,224,2,24,12,4,16,2,32,1,64,1,64,0, + 128,15,13,26,16,1,0,2,0,5,0,5,0,8,128,16, + 64,96,48,128,14,96,48,16,64,8,128,5,0,5,0,2, + 0,15,13,26,16,0,0,31,254,16,2,16,2,16,2,16, + 2,16,2,240,2,16,2,16,2,16,2,16,2,16,2,31, + 254,15,13,26,16,1,0,255,240,128,16,128,16,128,16,128, + 16,128,16,128,30,128,16,128,16,128,16,128,16,128,16,255, + 240,5,13,13,8,2,0,248,160,160,160,160,160,160,160,160, + 160,160,160,248,5,13,13,8,1,0,248,40,40,40,40,40, + 40,40,40,40,40,40,248,4,12,12,8,2,0,16,32,32, + 64,64,128,128,64,64,32,32,16,4,12,12,8,2,0,128, + 64,64,32,32,16,16,32,32,64,64,128,6,12,12,8,1, + 0,20,40,40,80,80,160,160,80,80,40,40,20,6,12,12, + 8,1,0,160,80,80,40,40,20,20,40,40,80,80,160,4, + 12,12,8,3,255,16,32,96,160,160,160,160,160,160,96,32, + 16,4,12,12,8,1,255,128,64,96,80,80,80,80,80,80, + 96,64,128,3,12,12,8,4,255,32,64,128,128,128,128,128, + 128,128,128,64,32,3,12,12,8,1,255,128,64,32,32,32, + 32,32,32,32,32,64,128,11,12,24,16,2,0,4,0,10, + 0,27,0,42,128,106,192,170,160,42,128,42,128,42,128,42, + 128,42,128,42,128,11,12,24,16,2,0,42,128,42,128,42, + 128,42,128,42,128,42,128,170,160,106,192,42,128,27,0,10, + 0,4,0,12,10,20,16,2,1,7,128,8,64,16,32,32, + 16,168,16,112,16,32,16,0,32,8,64,7,128,12,10,20, + 16,2,1,30,0,33,0,64,128,128,64,129,80,128,224,128, + 64,64,0,33,0,30,0,15,7,14,16,0,2,3,128,5, + 72,9,36,255,254,9,36,5,72,3,128,15,5,10,16,0, + 3,32,0,64,0,255,254,64,0,32,0,15,5,10,16,0, + 3,0,8,0,4,255,254,0,4,0,8,14,5,10,16,0, + 3,32,16,64,8,255,252,64,8,32,16,15,7,14,16,0, + 2,16,0,32,0,127,254,128,0,127,254,32,0,16,0,15, + 7,14,16,0,2,0,16,0,8,255,252,0,2,255,252,0, + 8,0,16,14,7,14,16,0,2,16,32,32,16,127,248,128, + 4,127,248,32,16,16,32,14,5,10,16,0,3,32,4,64, + 4,255,252,64,4,32,4,14,5,10,16,1,3,128,16,128, + 8,255,252,128,8,128,16,14,7,14,16,0,2,16,4,32, + 4,127,252,128,4,127,252,32,4,16,4,14,7,14,16,1, + 2,128,32,128,16,255,248,128,4,255,248,128,16,128,32,15, + 5,10,16,0,3,0,8,34,36,213,94,8,132,0,8}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 11, '1' Height: 6 + Calculated Max Values w=15 h=15 x= 3 y= 3 dx=16 dy= 0 ascent=13 len=30 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =11 descent= 3 + X Font ascent =11 descent= 0 + Max Font ascent =13 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_86[1876] U8G_SECTION(".progmem.u8g_font_unifont_86") = { + 0,16,16,0,254,11,3,37,5,106,32,116,3,13,254,11, + 0,11,11,22,16,2,0,7,224,4,32,2,32,4,32,8, + 160,17,96,34,0,68,0,136,0,80,0,32,0,11,11,22, + 16,2,0,252,0,132,0,136,0,132,0,162,0,209,0,8, + 128,4,64,2,32,1,64,0,128,11,11,22,16,2,0,32, + 0,80,0,136,0,68,0,34,0,17,96,8,160,4,32,2, + 32,4,32,7,224,11,11,22,16,2,0,0,128,1,64,2, + 32,4,64,8,128,209,0,162,0,132,0,136,0,132,0,252, + 0,14,7,14,16,1,0,16,32,48,48,95,232,128,4,95, + 232,48,48,16,32,13,7,14,16,1,0,16,0,48,0,127, + 248,255,248,127,248,48,0,16,0,7,11,11,8,0,0,16, + 56,124,254,56,56,56,56,56,56,56,7,11,11,8,0,0, + 56,56,56,56,56,56,56,254,124,56,16,11,11,22,16,2, + 0,7,224,7,224,3,224,7,224,15,224,31,96,62,0,124, + 0,248,0,112,0,32,0,11,11,22,16,2,0,252,0,252, + 0,248,0,252,0,254,0,223,0,15,128,7,192,3,224,1, + 192,0,128,11,11,22,16,2,0,32,0,112,0,248,0,124, + 0,62,0,31,96,15,224,7,224,3,224,7,224,7,224,11, + 11,22,16,2,0,0,128,1,192,3,224,7,192,15,128,223, + 0,254,0,252,0,248,0,252,0,252,0,14,7,14,16,1, + 0,16,32,48,48,127,248,255,252,127,248,48,48,16,32,7, + 12,12,8,0,255,16,56,124,254,56,56,56,56,254,124,56, + 16,14,6,12,16,1,0,255,240,0,16,0,16,0,84,0, + 56,0,16,14,6,12,16,1,0,0,16,0,56,0,84,0, + 16,0,16,255,240,14,6,12,16,1,0,63,252,32,0,32, + 0,168,0,112,0,32,0,14,6,12,16,1,0,32,0,112, + 0,168,0,32,0,32,0,63,252,10,10,20,16,3,255,255, + 192,255,192,255,192,255,192,255,192,128,64,128,64,128,64,128, + 64,255,192,10,10,20,16,3,255,255,192,128,64,128,64,128, + 64,128,64,255,192,255,192,255,192,255,192,255,192,10,10,20, + 16,3,255,255,192,255,192,191,192,159,192,143,192,135,192,131, + 192,129,192,128,192,255,192,10,10,20,16,3,255,255,192,192, + 64,224,64,240,64,248,64,252,64,254,64,255,64,255,192,255, + 192,10,10,20,16,3,255,12,0,26,0,57,0,120,128,248, + 64,248,64,120,128,57,0,26,0,12,0,10,10,20,16,3, + 255,12,0,22,0,39,0,71,128,135,192,135,192,71,128,39, + 0,22,0,12,0,10,10,20,16,3,255,12,0,30,0,63, + 0,127,128,255,192,128,64,64,128,33,0,18,0,12,0,10, + 10,20,16,3,255,12,0,18,0,33,0,64,128,128,64,255, + 192,127,128,63,0,30,0,12,0,11,11,22,16,2,0,170, + 160,0,0,128,32,0,0,128,32,0,0,128,32,0,0,128, + 32,0,0,170,160,14,14,28,16,1,255,255,252,255,252,255, + 252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255, + 252,255,252,255,252,255,252,14,14,28,16,1,255,255,252,128, + 4,128,4,128,4,128,4,128,4,128,4,128,4,128,4,128, + 4,128,4,128,4,128,4,255,252,4,4,4,8,2,2,240, + 240,240,240,4,4,4,8,2,2,240,144,144,240,12,11,22, + 16,2,0,6,0,15,0,31,128,63,192,127,224,255,240,127, + 224,127,224,63,192,63,192,31,128,12,11,22,16,2,0,6, + 0,9,0,16,128,32,64,64,32,128,16,64,32,64,32,32, + 64,32,64,31,128,11,11,22,16,2,255,4,0,27,0,96, + 192,128,32,128,32,128,32,128,32,128,32,96,192,27,0,4, + 0,11,11,22,16,2,255,4,0,31,0,127,192,255,224,255, + 224,255,224,255,224,255,224,127,192,31,0,4,0,14,10,20, + 16,1,0,15,192,31,224,63,240,127,248,255,252,255,252,127, + 248,63,240,31,224,15,192,14,13,26,16,1,254,31,224,63, + 240,127,248,255,252,255,252,255,252,255,252,255,252,255,252,255, + 252,127,248,63,240,31,224,7,7,7,8,0,0,16,56,124, + 254,124,56,16,7,7,7,8,0,0,16,40,68,130,68,40, + 16,7,11,11,8,0,0,16,56,56,124,124,254,124,124,56, + 56,16,7,11,11,8,0,0,16,40,40,68,68,130,68,68, + 40,40,16,5,5,5,8,1,3,32,112,248,112,32,5,7, + 7,8,1,0,32,112,112,248,112,112,32,5,7,7,8,1, + 0,32,80,80,136,80,80,32,15,6,12,16,0,0,15,224, + 127,252,255,254,255,254,127,252,15,224,15,6,12,16,0,0, + 15,224,112,28,128,2,128,2,112,28,15,224,6,13,13,8, + 1,0,48,120,120,120,252,252,252,252,252,120,120,120,48,6, + 13,13,8,1,0,48,72,72,72,132,132,132,132,132,72,72, + 72,48,14,5,10,16,1,3,33,192,66,32,255,252,66,32, + 33,192,14,15,30,16,1,254,32,0,64,0,255,252,64,0, + 32,0,32,0,64,0,255,252,64,0,32,0,32,0,64,0, + 255,252,64,0,32,0,14,5,10,16,1,3,33,192,66,160, + 255,252,66,160,33,192,14,5,10,16,1,3,34,32,69,80, + 245,92,72,128,32,0,14,5,10,16,1,3,40,64,80,64, + 255,252,80,64,40,64,14,5,10,16,1,3,40,160,80,160, + 255,252,80,160,40,160,14,5,10,16,1,3,40,4,80,4, + 255,252,80,4,40,4,14,5,10,16,1,3,40,4,80,8, + 253,176,80,8,40,4,14,5,10,16,1,3,32,0,64,0, + 213,84,64,0,32,0,14,5,10,16,1,3,32,132,64,136, + 255,240,64,136,32,132,14,5,10,16,1,3,33,68,65,72, + 255,240,65,72,33,68,14,5,10,16,1,3,40,4,80,8, + 255,240,80,8,40,4,14,5,10,16,1,3,40,132,80,136, + 255,240,80,136,40,132,14,5,10,16,1,3,41,68,81,72, + 255,240,81,72,41,68,14,5,10,16,1,3,40,144,80,96, + 255,252,80,96,40,144,14,5,10,16,1,3,32,240,65,8, + 254,4,64,0,32,0,14,7,14,16,1,3,3,240,0,0, + 35,240,64,0,255,252,64,0,32,0,14,7,14,16,1,3, + 0,112,8,136,39,0,64,0,255,252,64,0,32,0,14,10, + 20,16,1,254,32,0,64,0,255,252,64,0,32,112,8,136, + 7,0,0,112,8,136,7,0,14,9,18,16,1,1,224,0, + 24,0,6,16,1,8,31,252,1,8,6,16,24,0,224,0, + 14,11,22,16,1,0,252,0,2,0,1,0,0,144,0,136, + 255,252,0,136,0,144,1,0,2,0,252,0,15,11,22,16, + 0,1,4,0,8,0,31,254,32,0,127,254,128,0,127,254, + 32,0,31,254,8,0,4,0,15,11,22,16,0,1,0,64, + 0,32,255,240,0,8,255,252,0,2,255,252,0,8,255,240, + 0,32,0,64,14,7,14,16,1,3,3,128,68,64,56,16, + 0,8,255,252,0,8,0,16,14,10,20,16,1,254,0,16, + 0,8,255,252,0,8,3,144,68,64,56,0,3,128,68,64, + 56,0,14,7,14,16,1,3,7,0,8,136,32,112,64,0, + 255,252,64,0,32,0,14,10,20,16,1,254,32,0,64,0, + 255,252,64,0,39,0,8,136,0,112,7,0,8,136,0,112, + 14,7,14,16,1,1,32,0,64,0,255,252,64,0,32,112, + 8,136,7,0,14,7,14,16,1,1,0,16,0,8,255,252, + 0,8,3,144,68,64,56,0,6,14,14,8,1,255,168,84, + 168,84,168,84,168,84,168,84,168,84,168,84,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 6,14,14,8,1,255,168,84,168,84,168,84,168,84,168,84, + 168,84,168,84,13,13,26,16,1,0,2,0,2,0,5,0, + 5,0,248,248,64,16,32,32,16,64,8,128,16,64,34,32, + 77,144,112,112,11,10,20,16,2,1,4,0,14,0,14,0, + 255,224,127,192,63,128,63,128,123,192,241,224,192,96,11,10, + 20,16,2,1,4,0,10,0,10,0,241,224,64,64,32,128, + 36,128,74,64,177,160,192,96,11,12,24,16,3,0,4,0, + 30,0,127,0,255,128,255,192,255,224,255,224,255,192,255,128, + 127,0,30,0,4,0,11,12,24,16,3,0,4,0,26,0, + 97,0,128,128,128,64,128,32,128,32,128,64,128,128,97,0, + 26,0,4,0}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 8, '1' Height: 12 + Calculated Max Values w=16 h=16 x= 3 y=10 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[4272] U8G_SECTION(".progmem.u8g_font_unifont_8_9") = { + 0,16,16,0,254,8,4,65,6,56,0,255,0,14,254,12, + 0,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,6,14,14,8,1,0,72,72,0, + 0,252,128,128,128,248,128,128,128,128,252,7,10,10,8,1, + 0,252,32,32,32,60,34,34,34,34,44,6,14,14,8,1, + 0,24,96,0,0,252,128,128,128,128,128,128,128,128,128,6, + 10,10,8,1,0,56,68,128,128,248,128,128,128,68,56,6, + 10,10,8,1,0,120,132,132,128,96,24,4,132,132,120,5, + 10,10,8,2,0,248,32,32,32,32,32,32,32,32,248,5, + 14,14,8,2,0,144,144,0,0,248,32,32,32,32,32,32, + 32,32,248,6,10,10,8,1,0,28,8,8,8,8,8,8, + 136,136,112,8,10,10,8,0,0,120,72,72,72,78,73,73, + 73,73,142,7,10,10,8,1,0,144,144,144,144,252,146,146, + 146,146,156,7,10,10,8,1,0,252,32,32,32,60,34,34, + 34,34,34,6,14,14,8,1,0,24,96,0,0,128,140,144, + 160,192,192,160,144,136,132,6,13,13,8,1,0,96,24,0, + 132,140,140,148,148,164,164,196,196,132,7,14,14,8,1,0, + 132,132,120,0,130,130,68,68,40,40,16,16,32,96,7,10, + 10,8,1,0,130,130,130,130,130,130,254,16,16,16,6,10, + 10,8,1,0,48,72,72,132,132,132,252,132,132,132,6,10, + 10,8,1,0,248,128,128,128,248,132,132,132,132,248,6,10, + 10,8,1,0,248,132,132,132,248,132,132,132,132,248,6,10, + 10,8,1,0,252,128,128,128,128,128,128,128,128,128,8,12, + 12,8,0,254,14,18,18,18,34,34,34,66,66,255,129,129, + 6,10,10,8,1,0,252,128,128,128,248,128,128,128,128,252, + 7,10,10,8,1,0,146,146,84,84,56,56,84,84,146,146, + 6,10,10,8,1,0,120,132,4,4,120,8,4,4,132,120, + 6,10,10,8,1,0,132,140,140,148,148,164,164,196,196,132, + 6,13,13,8,1,0,72,48,0,132,140,140,148,148,164,164, + 196,196,132,6,10,10,8,1,0,128,140,144,160,192,192,160, + 144,136,132,6,10,10,8,1,0,60,36,36,36,36,36,36, + 68,68,132,6,10,10,8,1,0,132,132,204,204,180,180,132, + 132,132,132,6,10,10,8,1,0,132,132,132,132,252,132,132, + 132,132,132,6,10,10,8,1,0,120,132,132,132,132,132,132, + 132,132,120,6,10,10,8,1,0,252,132,132,132,132,132,132, + 132,132,132,6,10,10,8,1,0,248,132,132,132,248,128,128, + 128,128,128,6,10,10,8,1,0,120,132,132,128,128,128,128, + 132,132,120,7,10,10,8,1,0,254,16,16,16,16,16,16, + 16,16,16,7,10,10,8,1,0,130,130,68,68,40,40,16, + 16,32,96,7,11,11,8,1,0,16,124,146,146,146,146,146, + 124,16,16,16,6,10,10,8,1,0,132,132,72,72,48,48, + 72,72,132,132,7,12,12,8,1,254,132,132,132,132,132,132, + 132,132,132,254,2,2,6,10,10,8,1,0,132,132,132,132, + 132,252,4,4,4,4,7,10,10,8,1,0,146,146,146,146, + 146,146,146,146,146,254,8,12,12,8,0,254,146,146,146,146, + 146,146,146,146,146,255,1,1,7,10,10,8,1,0,224,32, + 32,32,60,34,34,34,34,60,6,10,10,8,1,0,132,132, + 132,132,228,148,148,148,148,228,6,10,10,8,1,0,128,128, + 128,128,248,132,132,132,132,248,6,10,10,8,1,0,112,136, + 4,4,124,4,4,4,136,112,6,10,10,8,1,0,152,164, + 164,164,228,164,164,164,164,152,6,10,10,8,1,0,124,132, + 132,132,124,36,68,68,132,132,6,8,8,8,1,0,120,132, + 4,124,132,132,140,116,6,12,12,8,1,0,4,56,64,128, + 248,132,132,132,132,132,132,120,6,8,8,8,1,0,248,132, + 132,248,132,132,132,248,6,8,8,8,1,0,252,128,128,128, + 128,128,128,128,7,9,9,8,1,255,60,36,68,68,132,132, + 132,254,130,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,7,8,8,8,1,0,146,146,84,56,56,84,146,146,6, + 8,8,8,1,0,120,132,4,120,8,4,132,120,6,8,8, + 8,1,0,140,140,148,148,164,164,196,196,6,12,12,8,1, + 0,72,48,0,0,140,140,148,148,164,164,196,196,6,8,8, + 8,1,0,140,144,160,192,160,144,136,132,6,8,8,8,1, + 0,60,36,36,36,36,68,68,132,6,8,8,8,1,0,132, + 204,204,180,180,132,132,132,6,8,8,8,1,0,132,132,132, + 252,132,132,132,132,6,8,8,8,1,0,120,132,132,132,132, + 132,132,120,6,8,8,8,1,0,252,132,132,132,132,132,132, + 132,6,10,10,8,1,254,248,132,132,132,132,248,128,128,128, + 128,6,8,8,8,1,0,120,132,128,128,128,128,132,120,7, + 8,8,8,1,0,254,16,16,16,16,16,16,16,6,10,10, + 8,1,254,132,132,72,72,48,48,32,32,64,192,7,10,10, + 8,1,255,16,16,124,146,146,146,146,124,16,16,6,8,8, + 8,1,0,132,132,72,48,48,72,132,132,7,10,10,8,1, + 254,132,132,132,132,132,132,132,254,2,2,6,8,8,8,1, + 0,132,132,132,132,252,4,4,4,7,8,8,8,1,0,146, + 146,146,146,146,146,146,254,8,10,10,8,0,254,146,146,146, + 146,146,146,146,255,1,1,7,8,8,8,1,0,224,32,32, + 60,34,34,34,60,6,8,8,8,1,0,132,132,132,228,148, + 148,148,228,6,8,8,8,1,0,128,128,128,248,132,132,132, + 248,6,8,8,8,1,0,112,136,4,124,4,4,136,112,6, + 8,8,8,1,0,152,164,164,228,164,164,164,152,6,8,8, + 8,1,0,124,132,132,132,124,36,68,132,6,12,12,8,1, + 0,96,24,0,0,120,132,132,252,128,128,132,120,6,12,12, + 8,1,0,72,72,0,0,120,132,132,252,128,128,132,120,6, + 11,11,8,1,255,64,64,240,64,64,120,68,68,68,68,24, + 6,12,12,8,1,0,24,96,0,0,252,128,128,128,128,128, + 128,128,6,8,8,8,1,0,56,68,128,248,128,128,68,56, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,11, + 11,8,2,0,32,32,0,96,32,32,32,32,32,32,248,5, + 11,11,8,2,0,144,144,0,96,32,32,32,32,32,32,248, + 5,13,13,8,1,254,8,8,0,24,8,8,8,8,8,8, + 8,144,96,8,8,8,8,0,0,120,72,72,78,73,73,73, + 142,7,8,8,8,1,0,144,144,144,252,146,146,146,156,6, + 10,10,8,1,0,64,64,240,64,64,88,100,68,68,68,6, + 12,12,8,1,0,24,96,0,0,140,144,160,192,160,144,136, + 132,6,12,12,8,1,0,96,24,0,0,140,140,148,148,164, + 164,196,196,6,15,15,8,1,254,132,132,120,0,0,132,132, + 72,72,48,48,32,32,64,192,5,10,10,8,2,254,136,136, + 136,136,136,136,248,32,32,32,7,10,10,8,1,0,108,130, + 130,130,130,146,146,146,146,108,7,8,8,8,1,0,68,130, + 130,146,146,146,146,108,7,10,10,8,1,0,32,248,32,32, + 60,34,34,34,34,60,6,10,10,8,1,0,64,64,240,64, + 64,120,68,68,68,120,7,10,10,8,1,0,140,146,160,160, + 252,160,160,160,146,140,7,8,8,8,1,0,140,146,160,252, + 160,160,146,140,7,10,10,8,1,0,16,16,40,40,68,108, + 84,146,146,146,7,8,8,8,1,0,16,40,40,68,108,146, + 146,146,7,10,10,8,1,0,144,144,168,168,164,236,212,146, + 146,146,7,8,8,8,1,0,144,168,168,164,236,146,146,146, + 7,10,10,8,1,0,124,68,68,40,16,56,84,146,146,146, + 7,8,8,8,1,0,124,68,40,16,124,146,146,146,7,10, + 10,8,1,0,190,162,162,148,232,156,170,170,170,170,7,8, + 8,8,1,0,190,162,148,232,156,170,170,170,6,14,14,8, + 1,254,72,48,120,132,4,4,120,8,4,4,4,120,128,128, + 6,13,13,8,1,254,72,48,0,120,132,4,120,8,4,4, + 120,128,128,7,10,10,8,1,0,146,146,146,146,146,124,16, + 16,16,16,7,8,8,8,1,254,146,146,146,146,146,124,16, + 16,6,10,10,8,1,0,120,132,132,132,252,132,132,132,132, + 120,6,8,8,8,1,0,120,132,132,252,132,132,132,120,7, + 10,10,8,1,0,134,136,136,136,80,80,80,32,32,32,6, + 8,8,8,1,0,140,144,144,80,80,80,32,32,7,14,14, + 8,1,0,204,34,0,0,134,136,136,136,80,80,80,32,32, + 32,7,12,12,8,1,0,204,34,0,0,140,144,144,80,80, + 80,32,32,7,12,12,8,1,254,64,160,178,178,178,170,172, + 168,168,72,16,16,7,10,10,8,1,254,82,178,178,170,172, + 168,168,72,16,16,7,12,12,8,1,255,16,124,146,130,130, + 130,130,130,130,146,124,16,7,10,10,8,1,255,16,124,146, + 130,130,130,130,146,124,16,7,14,14,8,1,0,120,134,48, + 0,108,130,130,130,130,146,146,146,146,108,7,12,12,8,1, + 0,120,134,48,0,68,130,130,146,146,146,146,108,7,14,14, + 8,1,0,254,16,0,0,108,130,130,130,130,146,146,146,146, + 108,7,12,12,8,1,0,254,16,0,0,68,130,130,146,146, + 146,146,108,6,12,12,8,1,254,120,132,132,128,128,128,128, + 128,120,8,8,8,6,10,10,8,1,254,120,132,132,128,128, + 128,120,8,8,8,7,7,7,8,1,1,36,24,136,84,34, + 48,72,4,3,3,8,1,10,16,240,128,5,4,4,8,0, + 9,16,40,72,128,4,3,3,8,1,10,128,240,128,4,3, + 3,8,1,10,16,240,16,8,3,3,8,0,10,48,76,131, + 14,14,28,16,0,254,1,0,2,128,16,16,40,40,0,0, + 0,0,64,8,160,20,0,0,0,0,0,0,16,16,41,40, + 2,128,14,14,28,16,1,254,1,0,33,8,19,16,24,96, + 0,0,0,0,0,16,224,28,32,0,0,0,0,0,25,176, + 17,16,33,8,7,15,15,8,1,254,72,48,0,132,140,140, + 148,148,164,164,196,196,134,4,8,7,14,14,8,1,254,72, + 48,0,0,140,140,148,148,164,164,196,198,4,8,6,10,10, + 8,1,0,64,224,64,64,64,120,68,68,76,120,6,7,7, + 8,1,0,64,224,64,120,68,68,120,6,10,10,8,1,0, + 248,132,148,136,244,128,128,128,128,128,6,10,10,8,1,254, + 184,196,132,132,132,148,200,180,128,128,6,12,12,8,1,0, + 4,4,252,128,128,128,128,128,128,128,128,128,6,10,10,8, + 1,0,4,4,252,128,128,128,128,128,128,128,7,10,10,8, + 1,0,62,32,32,32,32,248,32,32,32,32,7,8,8,8, + 1,0,62,32,32,32,248,32,32,32,6,11,11,8,1,255, + 252,128,128,128,128,248,132,132,132,132,24,6,9,9,8,1, + 255,252,128,128,128,248,132,132,132,24,7,12,12,8,1,254, + 146,146,84,84,56,56,84,84,146,146,2,2,7,10,10,8, + 1,254,146,146,84,56,56,84,146,146,2,2,6,12,12,8, + 1,254,120,132,4,4,120,8,4,4,132,120,16,96,6,10, + 10,8,1,254,120,132,4,120,8,4,132,120,16,96,6,12, + 12,8,1,254,128,140,144,160,192,192,160,144,136,132,4,4, + 6,10,10,8,1,254,140,144,160,192,160,144,136,132,4,4, + 7,10,10,8,1,0,128,134,168,168,240,168,168,168,132,130, + 7,8,8,8,1,0,134,168,168,240,168,168,132,130,7,10, + 10,8,1,0,64,230,72,80,96,96,80,72,68,66,7,8, + 8,8,1,0,70,232,80,96,80,72,68,66,8,10,10,8, + 0,0,224,35,36,40,48,48,40,36,34,33,8,8,8,8, + 0,0,227,36,40,48,40,36,34,33,7,12,12,8,1,254, + 132,132,132,132,252,132,132,132,132,134,2,2,7,10,10,8, + 1,254,132,132,132,252,132,132,132,134,2,2,7,10,10,8, + 1,0,142,136,136,136,248,136,136,136,136,136,7,8,8,8, + 1,0,142,136,136,248,136,136,136,136,7,12,12,8,1,254, + 240,144,144,144,144,156,146,146,146,146,2,12,7,10,10,8, + 1,254,240,144,144,144,156,146,146,146,2,12,6,11,11,8, + 1,255,56,64,128,152,164,164,164,164,88,48,12,6,9,9, + 8,1,255,56,64,152,164,164,164,88,48,12,6,12,12,8, + 1,254,120,132,132,128,128,128,128,132,132,120,32,24,6,10, + 10,8,1,254,120,132,132,128,128,132,132,120,32,24,7,12, + 12,8,1,254,254,16,16,16,16,16,16,16,16,24,8,8, + 7,10,10,8,1,254,254,16,16,16,16,16,16,24,8,8, + 7,10,10,8,1,0,130,130,68,68,40,16,16,16,16,16, + 5,10,10,8,2,254,136,136,136,80,80,32,32,32,32,32, + 7,10,10,8,1,0,130,130,68,68,40,16,16,124,16,16, + 5,8,8,8,2,0,136,136,136,80,32,32,248,32,7,12, + 12,8,1,254,132,132,72,72,48,48,72,72,132,134,2,2, + 7,10,10,8,1,254,132,132,72,48,48,72,132,134,2,2, + 8,12,12,8,0,254,250,34,34,34,34,34,34,34,34,63, + 1,1,8,10,10,8,0,254,250,34,34,34,34,34,34,63, + 1,1,7,12,12,8,1,254,132,132,132,132,132,140,116,4, + 4,6,2,2,7,10,10,8,1,254,132,132,132,132,140,116, + 4,6,2,2,6,10,10,8,1,0,132,132,132,132,164,172, + 116,36,36,4,6,8,8,8,1,0,132,132,132,164,172,116, + 36,4,6,10,10,8,1,0,128,128,128,184,196,132,132,132, + 132,132,6,8,8,8,1,0,128,128,184,196,132,132,132,132, + 6,10,10,8,1,0,152,164,164,164,124,32,32,36,36,24, + 6,8,8,8,1,0,152,164,164,124,32,32,36,24,6,12, + 12,8,1,254,152,164,164,164,124,32,32,36,36,24,16,12, + 6,10,10,8,1,254,152,164,164,124,32,32,36,24,16,12, + 5,10,10,8,2,0,248,32,32,32,32,32,32,32,32,248, + 7,14,14,8,1,0,130,130,124,0,146,146,84,84,56,56, + 84,84,146,146,7,13,13,8,1,0,68,68,56,0,0,146, + 146,84,56,56,84,146,146,6,12,12,8,1,254,128,140,144, + 160,192,248,132,132,132,132,4,24,6,10,10,8,1,254,140, + 144,160,192,248,132,132,132,4,24,7,12,12,8,1,254,60, + 36,36,36,36,36,36,68,68,134,4,8,7,10,10,8,1, + 254,60,36,36,36,36,68,68,134,4,8,6,12,12,8,1, + 254,132,132,132,132,252,132,132,132,132,132,4,24,6,10,10, + 8,1,254,132,132,132,252,132,132,132,132,4,24,7,12,12, + 8,1,254,132,132,132,132,252,132,132,132,132,134,4,8,7, + 10,10,8,1,254,132,132,132,252,132,132,132,134,4,8,6, + 12,12,8,1,254,132,132,132,132,132,140,116,4,4,12,8, + 8,6,10,10,8,1,254,132,132,132,132,140,116,4,12,8, + 8,7,12,12,8,1,254,132,132,204,204,180,180,132,132,132, + 134,4,8,7,10,10,8,1,254,132,204,204,180,180,132,132, + 134,4,8,3,10,10,8,3,0,224,64,64,64,64,64,64, + 64,64,224,6,14,14,8,1,0,132,132,120,0,48,72,72, + 132,132,252,132,132,132,132,6,13,13,8,1,0,132,132,120, + 0,0,120,132,4,124,132,132,140,116,6,14,14,8,1,0, + 72,72,0,0,48,72,72,132,132,252,132,132,132,132,6,12, + 12,8,1,0,72,72,0,0,120,132,4,124,132,132,140,116, + 7,10,10,8,1,0,62,80,144,144,254,144,144,144,144,158, + 7,8,8,8,1,0,124,146,18,126,144,144,146,124,6,14, + 14,8,1,0,132,132,120,0,252,128,128,128,248,128,128,128, + 128,252,6,12,12,8,1,0,132,132,120,0,120,132,132,252, + 128,128,132,120,6,10,10,8,1,0,48,72,132,4,4,252, + 132,132,72,48,6,8,8,8,1,0,120,132,4,4,252,132, + 132,120,6,14,14,8,1,0,72,72,0,0,48,72,132,4, + 4,252,132,132,72,48,6,12,12,8,1,0,72,72,0,0, + 120,132,4,4,252,132,132,120,7,14,14,8,1,0,72,72, + 0,0,146,146,84,84,56,56,84,84,146,146,7,12,12,8, + 1,0,72,72,0,0,146,146,84,56,56,84,146,146,6,14, + 14,8,1,0,72,72,0,0,120,132,4,4,120,8,4,4, + 132,120,6,12,12,8,1,0,72,72,0,0,120,132,4,120, + 8,4,132,120,6,10,10,8,1,0,252,8,16,32,56,4, + 4,4,140,120,6,10,10,8,1,254,124,8,16,32,56,4, + 4,4,132,120,6,13,13,8,1,0,120,0,0,132,140,140, + 148,148,164,164,196,196,132,6,11,11,8,1,0,120,0,0, + 140,140,148,148,164,164,196,196,6,14,14,8,1,0,72,72, + 0,0,132,140,140,148,148,164,164,196,196,132,6,12,12,8, + 1,0,72,72,0,0,140,140,148,148,164,164,196,196,6,14, + 14,8,1,0,72,72,0,0,120,132,132,132,132,132,132,132, + 132,120,6,12,12,8,1,0,72,72,0,0,120,132,132,132, + 132,132,132,120,6,10,10,8,1,0,120,132,132,132,252,132, + 132,132,132,120,6,8,8,8,1,0,120,132,132,252,132,132, + 132,120,6,14,14,8,1,0,72,72,0,0,120,132,132,132, + 252,132,132,132,132,120,6,12,12,8,1,0,72,72,0,0, + 120,132,132,252,132,132,132,120,6,12,12,8,1,0,72,0, + 120,132,4,4,124,4,4,4,132,120,6,10,10,8,1,0, + 72,0,120,132,4,60,4,4,132,120,7,13,13,8,1,0, + 124,0,0,130,130,68,68,40,40,16,16,32,96,6,13,13, + 8,1,254,120,0,0,132,132,72,72,48,48,32,32,64,192, + 7,14,14,8,1,0,72,72,0,0,130,130,68,68,40,40, + 16,16,32,96,6,14,14,8,1,254,72,72,0,0,132,132, + 72,72,48,48,32,32,64,192,7,14,14,8,1,0,102,136, + 0,0,130,130,68,68,40,40,16,16,32,96,7,14,14,8, + 1,254,102,136,0,0,132,132,72,72,48,48,32,32,64,192, + 6,14,14,8,1,0,72,72,0,0,132,132,132,132,132,140, + 116,4,4,4,6,12,12,8,1,0,72,72,0,0,132,132, + 132,132,140,116,4,4,6,12,12,8,1,254,252,128,128,128, + 128,128,128,128,128,224,96,32,6,10,10,8,1,254,252,128, + 128,128,128,128,128,224,96,32,6,14,14,8,1,0,72,72, + 0,0,132,132,132,132,228,148,148,148,148,228,6,12,12,8, + 1,0,72,72,0,0,132,132,132,228,148,148,148,228,6,12, + 12,8,1,254,252,128,128,128,248,128,128,128,128,192,64,192, + 5,10,10,8,1,254,248,128,128,240,128,128,128,192,64,192, + 6,12,12,8,1,254,132,132,72,72,48,48,72,72,132,132, + 4,8,6,10,10,8,1,254,132,132,72,48,48,72,132,132, + 4,8,6,10,10,8,1,0,132,132,72,72,48,252,72,72, + 132,132,6,8,8,8,1,0,132,132,72,48,252,72,132,132 + }; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=32 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont[5516] U8G_SECTION(".progmem.u8g_font_unifont") = { + 0,16,16,0,254,10,6,167,8,149,0,255,254,14,254,11, + 254,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,74,81,234,80,90,81,201,158,0,1,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,147,194,82,50,95,138,82,113, + 147,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,165,193, + 36,49,25,137,36,113,37,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,123,165,193,36,121,25,193,36,121,37,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,121,191,194,72,122,73,194, + 72,121,137,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,122, + 77,194,82,123,83,194,214,122,79,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,49,165,202,40,122,49,202,40,73,165,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,115,209,202,16,115, + 209,202,16,115,223,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,120,225,197,0,120,193,196,32,121,193,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,241,196,64,124,65,196,64,68, + 65,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,65,241,193, + 0,65,241,193,0,125,1,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,69,241,196,64,68,65,168,64,16,65,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,125,241,193,0,125,241,193, + 0,65,1,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,61, + 225,193,16,65,225,193,32,61,17,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,60,225,193,16,57,17,133,16,120,225,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,61,241,192,64,56, + 65,132,64,121,241,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,57,202,32,74,57,202,32,115,185,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,113,137,202,24,74,9,202,8,113, + 157,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,113,153,202, + 4,74,9,202,16,113,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,113,153,202,4,74,25,202,4,113,153,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,113,133,202,12,74,21,202, + 28,113,133,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,73, + 147,234,84,106,89,219,212,74,83,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,52,83,194,154,49,23,137,18,113,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,123,185,193,36,121, + 57,193,36,121,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,37,196,180,71,173,196,164,52,165,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,125,17,193,176,125,81,193,16,125, + 17,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,58,93,194, + 82,50,93,138,82,113,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,121,207,194,16,121,145,192,80,123,143,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,121,193,194,0,121,129,192, + 64,67,129,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 193,194,0,89,129,200,64,59,129,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,113,193,202,0,113,129,208,64,75,129,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,73,193,202,0,73, + 129,200,64,51,129,128,0,0,1,128,0,0,1,128,0,85, + 85,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,157,202,82,115, + 211,194,82,66,93,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,73,157,202,82,122,93,202,80,73,145,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,115,147,202,82,115,159,202,18,114, + 19,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,75,147,234, + 82,91,159,202,82,75,147,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,116,185,166,164,37,165,164,164,116,185,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,75,209,234,16,91,209,202, + 16,75,223,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 205,194,18,49,159,136,82,115,147,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,121,205,194,18,121,159,192,82,123,147,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,75,157,201,32,121, + 25,201,4,73,57,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,75,185,201,8,121,9,201,8,73,49,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,69,205,196,144,68,137,168,132,16, + 153,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,114,29,202, + 18,114,19,194,18,67,221,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,114,19,202,18,114,19,194,18,67,205,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,14,33,137,32,14,33,138, + 32,9,33,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,57, + 221,194,2,49,141,136,80,115,159,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,57,221,194,2,49,141,136,66,115,157,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,113,207,202,16,74, + 13,202,2,113,221,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,114,69,202,76,114,69,194,68,65,143,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,114,93,202,66,114,77,194,80,65, + 159,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,59,157,193, + 32,49,25,137,4,113,57,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,57,211,194,18,66,31,194,18,57,211,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,69,17,237,16,85,81,197, + 176,69,17,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,59, + 141,194,82,51,159,138,18,114,19,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,123,141,194,82,123,159,194,18,122,19,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,57,143,194,80,50, + 77,138,66,113,157,128,0,0,1,128,0,0,1,128,0,85, + 85,16,16,32,16,0,254,170,170,0,1,128,0,0,1,128, + 0,51,155,196,34,37,163,148,162,99,155,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,57,221,194,8,50,9,138,8,113, + 221,128,0,0,1,128,0,0,1,128,0,85,85,16,16,32, + 16,0,254,170,170,0,1,128,0,0,1,128,0,57,221,194, + 8,65,137,192,72,59,157,128,0,0,1,128,0,0,1,128, + 0,85,85,16,16,32,16,0,254,170,170,0,1,128,0,0, + 1,128,0,14,249,144,32,12,33,130,32,28,33,128,0,0, + 1,128,0,0,1,128,0,85,85,16,16,32,16,0,254,170, + 170,0,1,128,0,0,1,128,0,49,207,202,16,73,145,200, + 80,51,143,128,0,0,1,128,0,0,1,128,0,85,85,16, + 16,32,16,0,254,170,170,0,1,128,0,0,1,128,0,114, + 33,203,96,114,161,194,32,66,33,128,0,0,1,128,0,0, + 1,128,0,85,85,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,51,143,202,80,123,145,202,16,74,15,128, + 0,0,1,128,0,0,1,128,0,85,85,0,0,0,8,0, + 14,1,10,10,8,4,0,128,128,0,128,128,128,128,128,128, + 128,7,10,10,8,1,0,16,16,124,146,144,144,146,124,16, + 16,7,10,10,8,1,0,28,32,32,32,248,32,32,32,124, + 194,6,8,8,8,1,1,132,72,120,72,72,120,72,132,7, + 10,10,8,1,0,130,68,40,16,254,16,254,16,16,16,1, + 10,10,8,4,0,128,128,128,128,0,0,128,128,128,128,6, + 10,10,8,1,0,120,132,128,120,132,132,120,4,132,120,4, + 2,2,8,2,12,144,144,8,10,10,8,0,0,60,66,153, + 165,161,161,165,153,66,60,5,7,7,8,2,5,112,8,120, + 136,120,0,248,6,9,9,8,1,0,36,36,72,72,144,72, + 72,36,36,6,4,4,8,1,0,252,4,4,4,6,1,1, + 8,1,4,252,8,10,10,8,0,0,60,66,185,165,165,185, + 169,165,66,60,6,1,1,8,1,11,252,3,4,4,8,2, + 10,64,160,160,64,7,9,9,8,1,1,16,16,16,254,16, + 16,16,0,254,5,7,7,8,2,5,112,136,8,112,128,128, + 248,5,7,7,8,2,5,112,136,8,112,8,136,112,3,3, + 3,8,3,10,32,64,128,5,8,8,8,2,254,136,136,136, + 136,216,168,128,128,6,12,12,8,1,255,124,244,244,244,244, + 116,20,20,20,20,20,28,2,2,2,8,3,4,192,192,3, + 2,2,8,2,254,32,192,3,7,7,8,2,5,32,96,160, + 32,32,32,32,5,7,7,8,2,5,112,136,136,136,112,0, + 248,6,9,9,8,1,0,144,144,72,72,36,72,72,144,144, + 6,10,10,8,1,0,68,196,72,80,80,36,44,84,156,132, + 6,10,10,8,1,0,68,196,72,80,80,40,52,68,136,156, + 6,10,10,8,1,0,196,36,72,48,208,36,44,84,156,132, + 6,10,10,8,1,0,16,16,0,16,16,96,132,132,132,120, + 6,14,14,8,1,0,96,24,0,0,48,72,72,132,132,252, + 132,132,132,132,6,14,14,8,1,0,24,96,0,0,48,72, + 72,132,132,252,132,132,132,132,6,14,14,8,1,0,48,72, + 0,0,48,72,72,132,132,252,132,132,132,132,6,14,14,8, + 1,0,100,152,0,0,48,72,72,132,132,252,132,132,132,132, + 6,14,14,8,1,0,72,72,0,0,48,72,72,132,132,252, + 132,132,132,132,6,14,14,8,1,0,48,72,48,0,48,72, + 72,132,132,252,132,132,132,132,7,10,10,8,1,0,62,80, + 144,144,254,144,144,144,144,158,6,12,12,8,1,254,120,132, + 132,128,128,128,128,132,132,120,16,96,6,14,14,8,1,0, + 96,24,0,0,252,128,128,128,248,128,128,128,128,252,6,14, + 14,8,1,0,24,96,0,0,252,128,128,128,248,128,128,128, + 128,252,6,14,14,8,1,0,48,72,0,0,252,128,128,128, + 248,128,128,128,128,252,6,14,14,8,1,0,72,72,0,0, + 252,128,128,128,248,128,128,128,128,252,5,14,14,8,2,0, + 96,24,0,0,248,32,32,32,32,32,32,32,32,248,5,14, + 14,8,2,0,48,192,0,0,248,32,32,32,32,32,32,32, + 32,248,5,14,14,8,2,0,96,144,0,0,248,32,32,32, + 32,32,32,32,32,248,5,14,14,8,2,0,144,144,0,0, + 248,32,32,32,32,32,32,32,32,248,7,10,10,8,0,0, + 120,68,66,66,242,66,66,66,68,120,6,14,14,8,1,0, + 100,152,0,0,132,196,196,164,164,148,148,140,140,132,6,14, + 14,8,1,0,96,24,0,0,120,132,132,132,132,132,132,132, + 132,120,6,14,14,8,1,0,24,96,0,0,120,132,132,132, + 132,132,132,132,132,120,6,14,14,8,1,0,48,72,0,0, + 120,132,132,132,132,132,132,132,132,120,6,14,14,8,1,0, + 100,152,0,0,120,132,132,132,132,132,132,132,132,120,6,14, + 14,8,1,0,72,72,0,0,120,132,132,132,132,132,132,132, + 132,120,6,5,5,8,1,2,132,72,48,72,132,6,12,12, + 8,1,255,4,116,136,140,148,148,164,164,196,68,184,128,6, + 14,14,8,1,0,96,24,0,0,132,132,132,132,132,132,132, + 132,132,120,6,14,14,8,1,0,24,96,0,0,132,132,132, + 132,132,132,132,132,132,120,6,14,14,8,1,0,48,72,0, + 0,132,132,132,132,132,132,132,132,132,120,6,14,14,8,1, + 0,72,72,0,0,132,132,132,132,132,132,132,132,132,120,7, + 14,14,8,1,0,24,96,0,0,130,130,68,68,40,16,16, + 16,16,16,6,11,11,8,1,0,128,128,240,136,132,132,136, + 240,128,128,128,6,10,10,8,1,0,112,136,136,136,248,132, + 132,132,196,184,6,12,12,8,1,0,96,24,0,0,120,132, + 4,124,132,132,140,116,6,12,12,8,1,0,24,96,0,0, + 120,132,4,124,132,132,140,116,6,12,12,8,1,0,48,72, + 0,0,120,132,4,124,132,132,140,116,6,12,12,8,1,0, + 100,152,0,0,120,132,4,124,132,132,140,116,6,12,12,8, + 1,0,72,72,0,0,120,132,4,124,132,132,140,116,6,13, + 13,8,1,0,48,72,48,0,0,120,132,4,124,132,132,140, + 116,7,8,8,8,1,0,124,146,18,126,144,144,146,124,6, + 10,10,8,1,254,120,132,128,128,128,128,132,120,16,96,6, + 12,12,8,1,0,96,24,0,0,120,132,132,252,128,128,132, + 120,6,12,12,8,1,0,24,96,0,0,120,132,132,252,128, + 128,132,120,6,12,12,8,1,0,48,72,0,0,120,132,132, + 252,128,128,132,120,6,12,12,8,1,0,72,72,0,0,120, + 132,132,252,128,128,132,120,5,12,12,8,2,0,192,48,0, + 0,96,32,32,32,32,32,32,248,5,12,12,8,2,0,48, + 192,0,0,96,32,32,32,32,32,32,248,5,12,12,8,2, + 0,96,144,0,0,96,32,32,32,32,32,32,248,5,12,12, + 8,2,0,144,144,0,0,96,32,32,32,32,32,32,248,6, + 12,12,8,1,0,100,24,40,68,4,124,132,132,132,132,132, + 120,6,12,12,8,1,0,100,152,0,0,184,196,132,132,132, + 132,132,132,6,12,12,8,1,0,96,24,0,0,120,132,132, + 132,132,132,132,120,6,12,12,8,1,0,24,96,0,0,120, + 132,132,132,132,132,132,120,6,12,12,8,1,0,48,72,0, + 0,120,132,132,132,132,132,132,120,6,12,12,8,1,0,100, + 152,0,0,120,132,132,132,132,132,132,120,6,12,12,8,1, + 0,72,72,0,0,120,132,132,132,132,132,132,120,6,7,7, + 8,1,1,48,0,0,252,0,0,48,6,10,10,8,1,255, + 4,120,140,148,148,164,164,196,120,128,6,12,12,8,1,0, + 96,24,0,0,132,132,132,132,132,132,140,116,6,12,12,8, + 1,0,24,96,0,0,132,132,132,132,132,132,140,116,6,12, + 12,8,1,0,48,72,0,0,132,132,132,132,132,132,140,116, + 6,12,12,8,1,0,72,72,0,0,132,132,132,132,132,132, + 140,116,6,14,14,8,1,254,24,96,0,0,132,132,132,132, + 132,76,52,4,4,120,5,12,12,8,2,254,128,128,240,136, + 136,136,144,160,192,128,128,128,6,14,14,8,1,254,72,72, + 0,0,132,132,132,132,132,76,52,4,4,120}; +/* + Fontname: -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1 + Copyright: + Capital A Height: 10, '1' Height: 10 + Calculated Max Values w=16 h=16 x= 4 y=14 dx=16 dy= 0 ascent=14 len=14 + Font Bounding box w=16 h=16 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =10 descent=-2 + X Font ascent =11 descent=-2 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifontr[1483] U8G_SECTION(".progmem.u8g_font_unifontr") = { + 0,16,16,0,254,10,1,231,3,213,32,127,254,14,254,11, + 254,0,0,0,8,0,14,1,10,10,8,4,0,128,128,128, + 128,128,128,128,0,128,128,5,4,4,8,2,8,136,136,136, + 136,6,10,10,8,1,0,36,36,36,252,72,72,252,144,144, + 144,7,10,10,8,1,0,16,124,146,144,112,28,18,146,124, + 16,7,10,10,8,1,0,98,148,148,104,16,16,44,82,82, + 140,7,10,10,8,1,0,56,68,68,68,56,114,138,132,140, + 114,1,4,4,8,4,8,128,128,128,128,3,12,12,8,3, + 255,32,64,64,128,128,128,128,128,128,64,64,32,3,12,12, + 8,2,255,128,64,64,32,32,32,32,32,32,64,64,128,7, + 7,7,8,1,1,16,146,84,56,84,146,16,7,7,7,8, + 1,1,16,16,16,254,16,16,16,2,4,4,8,3,254,192, + 64,64,128,6,1,1,8,1,4,252,2,2,2,8,3,0, + 192,192,6,10,10,8,1,0,4,4,8,16,16,32,32,64, + 128,128,6,10,10,8,1,0,48,72,132,132,132,132,132,132, + 72,48,5,10,10,8,2,0,32,96,160,32,32,32,32,32, + 32,248,6,10,10,8,1,0,120,132,132,4,24,32,64,128, + 128,252,6,10,10,8,1,0,120,132,132,4,56,4,4,132, + 132,120,6,10,10,8,1,0,8,24,40,72,136,136,252,8, + 8,8,6,10,10,8,1,0,252,128,128,128,248,4,4,4, + 132,120,6,10,10,8,1,0,56,64,128,128,248,132,132,132, + 132,120,6,10,10,8,1,0,252,4,4,8,8,8,16,16, + 16,16,6,10,10,8,1,0,120,132,132,132,120,132,132,132, + 132,120,6,10,10,8,1,0,120,132,132,132,124,4,4,4, + 8,112,2,7,7,8,3,1,192,192,0,0,0,192,192,2, + 9,9,8,3,255,192,192,0,0,0,192,64,64,128,5,9, + 9,8,2,0,8,16,32,64,128,64,32,16,8,6,5,5, + 8,1,2,252,0,0,0,252,5,9,9,8,1,0,128,64, + 32,16,8,16,32,64,128,6,10,10,8,1,0,120,132,132, + 4,8,16,16,0,16,16,6,10,10,8,1,0,56,68,148, + 172,164,164,164,156,64,60,6,10,10,8,1,0,48,72,72, + 132,132,252,132,132,132,132,6,10,10,8,1,0,248,132,132, + 132,248,132,132,132,132,248,6,10,10,8,1,0,120,132,132, + 128,128,128,128,132,132,120,6,10,10,8,1,0,240,136,132, + 132,132,132,132,132,136,240,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,252,6,10,10,8,1,0,252,128,128, + 128,248,128,128,128,128,128,6,10,10,8,1,0,120,132,132, + 128,128,156,132,132,140,116,6,10,10,8,1,0,132,132,132, + 132,252,132,132,132,132,132,5,10,10,8,2,0,248,32,32, + 32,32,32,32,32,32,248,7,10,10,8,1,0,62,8,8, + 8,8,8,8,136,136,112,6,10,10,8,1,0,132,136,144, + 160,192,192,160,144,136,132,6,10,10,8,1,0,128,128,128, + 128,128,128,128,128,128,252,6,10,10,8,1,0,132,132,204, + 204,180,180,132,132,132,132,6,10,10,8,1,0,132,196,196, + 164,164,148,148,140,140,132,6,10,10,8,1,0,120,132,132, + 132,132,132,132,132,132,120,6,10,10,8,1,0,248,132,132, + 132,248,128,128,128,128,128,7,11,11,8,1,255,120,132,132, + 132,132,132,132,180,204,120,6,6,10,10,8,1,0,248,132, + 132,132,248,144,136,136,132,132,6,10,10,8,1,0,120,132, + 132,128,96,24,4,132,132,120,7,10,10,8,1,0,254,16, + 16,16,16,16,16,16,16,16,6,10,10,8,1,0,132,132, + 132,132,132,132,132,132,132,120,7,10,10,8,1,0,130,130, + 130,68,68,68,40,40,16,16,6,10,10,8,1,0,132,132, + 132,132,180,180,204,204,132,132,6,10,10,8,1,0,132,132, + 72,72,48,48,72,72,132,132,7,10,10,8,1,0,130,130, + 68,68,40,16,16,16,16,16,6,10,10,8,1,0,252,4, + 4,8,16,32,64,128,128,252,3,12,12,8,4,255,224,128, + 128,128,128,128,128,128,128,128,128,224,6,10,10,8,1,0, + 128,128,64,32,32,16,16,8,4,4,3,12,12,8,1,255, + 224,32,32,32,32,32,32,32,32,32,32,224,6,3,3,8, + 1,9,48,72,132,7,1,1,8,1,255,254,3,3,3,8, + 2,10,128,64,32,6,8,8,8,1,0,120,132,4,124,132, + 132,140,116,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,196,184,6,8,8,8,1,0,120,132,128,128,128,128, + 132,120,6,11,11,8,1,0,4,4,4,116,140,132,132,132, + 132,140,116,6,8,8,8,1,0,120,132,132,252,128,128,132, + 120,5,11,11,8,1,0,24,32,32,32,248,32,32,32,32, + 32,32,6,11,11,8,1,254,4,116,136,136,136,112,64,120, + 132,132,120,6,11,11,8,1,0,128,128,128,184,196,132,132, + 132,132,132,132,5,11,11,8,2,0,32,32,0,96,32,32, + 32,32,32,32,248,5,13,13,8,1,254,8,8,0,24,8, + 8,8,8,8,8,8,144,96,6,10,10,8,1,0,128,128, + 136,144,160,192,160,144,136,132,5,10,10,8,2,0,96,32, + 32,32,32,32,32,32,32,248,7,8,8,8,1,0,236,146, + 146,146,146,146,146,146,6,8,8,8,1,0,184,196,132,132, + 132,132,132,132,6,8,8,8,1,0,120,132,132,132,132,132, + 132,120,6,10,10,8,1,254,184,196,132,132,132,132,196,184, + 128,128,6,10,10,8,1,254,116,140,132,132,132,132,140,116, + 4,4,6,8,8,8,1,0,184,196,132,128,128,128,128,128, + 6,8,8,8,1,0,120,132,128,96,24,4,132,120,5,10, + 10,8,1,0,32,32,248,32,32,32,32,32,32,24,6,8, + 8,8,1,0,132,132,132,132,132,132,140,116,6,8,8,8, + 1,0,132,132,132,72,72,72,48,48,7,8,8,8,1,0, + 130,146,146,146,146,146,146,108,6,8,8,8,1,0,132,132, + 72,48,48,72,132,132,6,10,10,8,1,254,132,132,132,132, + 132,76,52,4,4,120,6,8,8,8,1,0,252,4,8,16, + 32,64,128,252,3,12,12,8,3,255,96,128,128,64,64,128, + 128,64,64,128,128,96,1,14,14,8,4,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,128,3,12,12,8,2,255, + 192,32,32,64,64,32,32,64,64,32,32,192,7,3,3,8, + 1,8,98,146,140,16,16,32,16,0,254,170,170,0,1,128, + 0,0,1,128,0,115,209,202,16,75,209,202,16,115,223,128, + 0,0,1,128,0,0,1,128,0,85,85}; diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_line.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_line.c new file mode 100644 index 000000000..30b309723 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_line.c @@ -0,0 +1,81 @@ +/* + + u8g_line.h + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include "u8g.h" + +void u8g_DrawLine(u8g_t *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2) +{ + u8g_uint_t tmp; + u8g_uint_t x,y; + u8g_uint_t dx, dy; + u8g_int_t err; + u8g_int_t ystep; + + uint8_t swapxy = 0; + + /* no BBX intersection check at the moment, should be added... */ + + if ( x1 > x2 ) dx = x1-x2; else dx = x2-x1; + if ( y1 > y2 ) dy = y1-y2; else dy = y2-y1; + + if ( dy > dx ) + { + swapxy = 1; + tmp = dx; dx =dy; dy = tmp; + tmp = x1; x1 =y1; y1 = tmp; + tmp = x2; x2 =y2; y2 = tmp; + } + if ( x1 > x2 ) + { + tmp = x1; x1 =x2; x2 = tmp; + tmp = y1; y1 =y2; y2 = tmp; + } + err = dx >> 1; + if ( y2 > y1 ) ystep = 1; else ystep = -1; + y = y1; + for( x = x1; x <= x2; x++ ) + { + if ( swapxy == 0 ) + u8g_DrawPixel(u8g, x, y); + else + u8g_DrawPixel(u8g, y, x); + err -= (uint8_t)dy; + if ( err < 0 ) + { + y += (u8g_uint_t)ystep; + err += (u8g_uint_t)dx; + } + } +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ll_api.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ll_api.c new file mode 100644 index 000000000..41c7fada1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ll_api.c @@ -0,0 +1,456 @@ +/* + + u8g_ll_api.c + + low level api + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include +#include "u8g.h" + +uint8_t u8g_call_dev_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + return dev->dev_fn(u8g, dev, msg, arg); +} + +/*====================================================================*/ + +uint8_t u8g_InitLL(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t r; + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + r = u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_INIT, NULL); + u8g->state_cb(U8G_STATE_MSG_BACKUP_U8G); + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); + return r; +} + +void u8g_FirstPageLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + u8g->state_cb(U8G_STATE_MSG_RESTORE_U8G); + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_PAGE_FIRST, NULL); + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); +} + +uint8_t u8g_NextPageLL(u8g_t *u8g, u8g_dev_t *dev) +{ + uint8_t r; + u8g->state_cb(U8G_STATE_MSG_BACKUP_ENV); + u8g->state_cb(U8G_STATE_MSG_RESTORE_U8G); + r = u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_PAGE_NEXT, NULL); + if ( r != 0 ) + { + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); + } + u8g->state_cb(U8G_STATE_MSG_RESTORE_ENV); + return r; +} + +uint8_t u8g_SetContrastLL(u8g_t *u8g, u8g_dev_t *dev, uint8_t contrast) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_CONTRAST, &contrast); +} + +void u8g_DrawPixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y) +{ + u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel); + arg->x = x; + arg->y = y; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_PIXEL, arg); +} + +void u8g_Draw8PixelLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_dev_arg_pixel_t *arg = &(u8g->arg_pixel); + arg->x = x; + arg->y = y; + arg->dir = dir; + arg->pixel = pixel; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_SET_8PIXEL, arg); +} + +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION +uint8_t u8g_IsBBXIntersectionLL(u8g_t *u8g, u8g_dev_t *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_IS_BBX_INTERSECTION, &arg); +} +#endif + + + +u8g_uint_t u8g_GetWidthLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_uint_t r; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_WIDTH, &r); + return r; +} + +u8g_uint_t u8g_GetHeightLL(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_uint_t r; + u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_HEIGHT, &r); + return r; +} + +u8g_uint_t u8g_GetModeLL(u8g_t *u8g, u8g_dev_t *dev) +{ + return u8g_call_dev_fn(u8g, dev, U8G_DEV_MSG_GET_MODE, NULL); +} + + + +/*====================================================================*/ + +void u8g_UpdateDimension(u8g_t *u8g) +{ + u8g->width = u8g_GetWidthLL(u8g, u8g->dev); + u8g->height = u8g_GetHeightLL(u8g, u8g->dev); + u8g->mode = u8g_GetModeLL(u8g, u8g->dev); + /* 9 Dec 2012: u8g_scale.c requires update of current page */ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_GET_PAGE_BOX, &(u8g->current_page)); +} + +static void u8g_init_data(u8g_t *u8g) +{ + uint8_t i; + u8g->font = NULL; + u8g->cursor_font = NULL; + u8g->cursor_bg_color = 0; + u8g->cursor_fg_color = 1; + u8g->cursor_encoding = 34; + u8g->cursor_fn = (u8g_draw_cursor_fn)0; + + for( i = 0; i < U8G_PIN_LIST_LEN; i++ ) + u8g->pin_list[i] = U8G_PIN_NONE; + + u8g_SetColorIndex(u8g, 1); + + u8g_SetFontPosBaseline(u8g); + + u8g->font_height_mode = U8G_FONT_HEIGHT_MODE_XTEXT; + u8g->font_ref_ascent = 0; + u8g->font_ref_descent = 0; + u8g->font_line_spacing_factor = 64; /* 64 = 1.0, 77 = 1.2 line spacing factor */ + u8g->line_spacing = 0; + + u8g->state_cb = u8g_state_dummy_cb; + +} + +uint8_t u8g_Begin(u8g_t *u8g) +{ + /* call and init low level driver and com device */ + if ( u8g_InitLL(u8g, u8g->dev) == 0 ) + return 0; + /* fetch width and height from the low level */ + u8g_UpdateDimension(u8g); + return 1; +} + +uint8_t u8g_Init(u8g_t *u8g, u8g_dev_t *dev) +{ + u8g_init_data(u8g); + u8g->dev = dev; + + /* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */ + /* if - in future releases - this is removed, then still call u8g_UpdateDimension() */ + /* if Arduino call u8g_UpdateDimension else u8g_Begin */ + /* issue 146 */ + return u8g_Begin(u8g); +} + +uint8_t u8g_InitSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + u8g->pin_list[U8G_PI_SCK] = sck; + u8g->pin_list[U8G_PI_MOSI] = mosi; + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_RESET] = reset; + + /* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */ + /* if - in future releases - this is removed, then still call u8g_UpdateDimension() */ + /* if Arduino call u8g_UpdateDimension else u8g_Begin */ + /* issue 146 */ + return u8g_Begin(u8g); +} + +uint8_t u8g_InitHWSPI(u8g_t *u8g, u8g_dev_t *dev, uint8_t cs, uint8_t a0, uint8_t reset) +{ + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + + /* assign user pins */ + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +uint8_t u8g_InitI2C(u8g_t *u8g, u8g_dev_t *dev, uint8_t options) +{ + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + u8g->pin_list[U8G_PI_I2C_OPTION] = options; + + return u8g_Begin(u8g); +} + + +uint8_t u8g_Init8BitFixedPort(u8g_t *u8g, u8g_dev_t *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_EN] = en; + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_DI] = di; + u8g->pin_list[U8G_PI_RW] = rw; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +uint8_t u8g_Init8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_D0] = d0; + u8g->pin_list[U8G_PI_D1] = d1; + u8g->pin_list[U8G_PI_D2] = d2; + u8g->pin_list[U8G_PI_D3] = d3; + u8g->pin_list[U8G_PI_D4] = d4; + u8g->pin_list[U8G_PI_D5] = d5; + u8g->pin_list[U8G_PI_D6] = d6; + u8g->pin_list[U8G_PI_D7] = d7; + + u8g->pin_list[U8G_PI_EN] = en; + u8g->pin_list[U8G_PI_CS1] = cs1; + u8g->pin_list[U8G_PI_CS2] = cs2; + u8g->pin_list[U8G_PI_DI] = di; + u8g->pin_list[U8G_PI_RW] = rw; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +/* + + PIN_D0 8 + PIN_D1 9 + PIN_D2 10 + PIN_D3 11 + PIN_D4 4 + PIN_D5 5 + PIN_D6 6 + PIN_D7 7 + + PIN_CS 14 + PIN_A0 15 + PIN_RESET 16 + PIN_WR 17 + PIN_RD 18 + + u8g_InitRW8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset) + u8g_InitRW8Bit(u8g, dev, 8, 9, 10, 11, 4, 5, 6, 7, 14, 15, 17, 18, 16) + +*/ + +uint8_t u8g_InitRW8Bit(u8g_t *u8g, u8g_dev_t *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset) +{ + + /* fill data structure with some suitable values */ + u8g_init_data(u8g); + u8g->dev = dev; + + /* assign user pins */ + + u8g->pin_list[U8G_PI_D0] = d0; + u8g->pin_list[U8G_PI_D1] = d1; + u8g->pin_list[U8G_PI_D2] = d2; + u8g->pin_list[U8G_PI_D3] = d3; + u8g->pin_list[U8G_PI_D4] = d4; + u8g->pin_list[U8G_PI_D5] = d5; + u8g->pin_list[U8G_PI_D6] = d6; + u8g->pin_list[U8G_PI_D7] = d7; + + u8g->pin_list[U8G_PI_CS] = cs; + u8g->pin_list[U8G_PI_A0] = a0; + u8g->pin_list[U8G_PI_WR] = wr; + u8g->pin_list[U8G_PI_RD] = rd; + u8g->pin_list[U8G_PI_RESET] = reset; + + return u8g_Begin(u8g); +} + +void u8g_FirstPage(u8g_t *u8g) +{ + u8g_FirstPageLL(u8g, u8g->dev); +} + +uint8_t u8g_NextPage(u8g_t *u8g) +{ + if ( u8g->cursor_fn != (u8g_draw_cursor_fn)0 ) + { + u8g->cursor_fn(u8g); + } + return u8g_NextPageLL(u8g, u8g->dev); +} + +uint8_t u8g_SetContrast(u8g_t *u8g, uint8_t contrast) +{ + return u8g_SetContrastLL(u8g, u8g->dev, contrast); +} + +void u8g_SleepOn(u8g_t *u8g) +{ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SLEEP_ON, NULL); +} + +void u8g_SleepOff(u8g_t *u8g) +{ + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SLEEP_OFF, NULL); +} + + +void u8g_DrawPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y) +{ + u8g_DrawPixelLL(u8g, u8g->dev, x, y); +} + +void u8g_Draw8Pixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_Draw8PixelLL(u8g, u8g->dev, x, y, dir, pixel); +} + +/* u8g_IsBBXIntersection() has been moved to u8g_clip.c */ +#ifdef OBSOLETE_CODE +uint8_t u8g_IsBBXIntersection(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + /* new code */ + u8g_dev_arg_bbx_t arg; + arg.x = x; + arg.y = y; + arg.w = w; + arg.h = h; + return u8g_is_box_bbx_intersection(&(u8g->current_page), &arg); + + /* old code */ + //return u8g_IsBBXIntersectionLL(u8g, u8g->dev, x, y, w, h); +} +#endif + +void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx) +{ + u8g->arg_pixel.color = idx; + /*u8g->color_index = idx; */ /* must be removed */ +} + +uint8_t u8g_GetColorIndex(u8g_t *u8g) +{ + return u8g->arg_pixel.color; +} + +uint8_t u8g_GetDefaultForegroundColor(u8g_t *u8g) +{ + uint8_t mode; + mode = u8g_GetMode(u8g); + if ( mode == U8G_MODE_R3G3B2 ) + return 255; /* white */ + else if ( u8g_GetMode(u8g) == U8G_MODE_GRAY2BIT ) + return 3; /* max intensity */ + else /* if ( u8g.getMode() == U8G_MODE_BW ) */ + return 1; /* pixel on */ + return 1; +} + +void u8g_SetDefaultForegroundColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultForegroundColor(u8g)); +} + +uint8_t u8g_GetDefaultBackgroundColor(u8g_t *u8g) +{ + return 0; +} + +void u8g_SetDefaultBackgroundColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultBackgroundColor(u8g)); /* pixel on / black */ +} + +uint8_t u8g_GetDefaultMidColor(u8g_t *u8g) +{ + uint8_t mode; + mode = u8g_GetMode(u8g); + if ( mode == U8G_MODE_R3G3B2 ) + return 0x06d; /* gray: 01101101 */ + else if ( u8g_GetMode(u8g) == U8G_MODE_GRAY2BIT ) + return 1; /* low mid intensity */ + else /* if ( u8g.getMode() == U8G_MODE_BW ) */ + return 1; /* pixel on */ + return 1; /* default */ +} + +void u8g_SetDefaultMidColor(u8g_t *u8g) +{ + u8g_SetColorIndex(u8g, u8g_GetDefaultMidColor(u8g)); +} + + + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_page.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_page.c new file mode 100644 index 000000000..1a3eb21ed --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_page.c @@ -0,0 +1,81 @@ +/* + + u8g_page.c + + page helper functions, only called by the dev handler. + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +/* + setup page count structure + conditions: page_height <= total_height +*/ +void u8g_page_Init(u8g_page_t *p, u8g_uint_t page_height, u8g_uint_t total_height ) +{ + p->page_height = page_height; + p->total_height = total_height; + p->page = 0; + u8g_page_First(p); +} + +void u8g_page_First(u8g_page_t *p) +{ + p->page_y0 = 0; + p->page_y1 = p->page_height; + p->page_y1--; + p->page = 0; +} + +uint8_t u8g_page_Next(u8g_page_t * p) +{ + register u8g_uint_t y1; + p->page_y0 += p->page_height; + if ( p->page_y0 >= p->total_height ) + return 0; + p->page++; + y1 = p->page_y1; + y1 += p->page_height; + if ( y1 >= p->total_height ) + { + y1 = p->total_height; + y1--; + } + p->page_y1 = y1; + + return 1; +} + + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb.c new file mode 100644 index 000000000..a94647361 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb.c @@ -0,0 +1,191 @@ +/* + + u8g_pb.c + + common procedures for the page buffer + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_pb_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* the following procedure does not work. why? Can be checked with descpic */ +/* +void u8g_pb_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t cnt = b->width; + do + { + *ptr++ = 0; + cnt--; + } while( cnt != 0 ); +} +*/ + +/* + intersection assumptions: + a1 <= a2 is always true +*/ + /* + minimized version + ---1----0 1 b1 <= a2 && b1 > b2 + -----1--0 1 b2 >= a1 && b1 > b2 + ---1-1--- 1 b1 <= a2 && b2 >= a1 + */ +/* +uint8_t u8g_pb8v1_IsYIntersection___Old(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c0, c1, c; + c0 = v0 <= b->p.page_y1; + c1 = v1 >= b->p.page_y0; + c = v0 > v1; + if ( c0 && c1 ) return 1; + if ( c0 && c ) return 1; + if ( c1 && c ) return 1; + return 0; +} +*/ + +uint8_t u8g_pb_IsYIntersection(u8g_pb_t *pb, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t c1, c2, c3, tmp; + c1 = v0 <= pb->p.page_y1; + c2 = v1 >= pb->p.page_y0; + c3 = v0 > v1; + /* + if ( c1 && c2 ) + return 1; + if ( c1 && c3 ) + return 1; + if ( c2 && c3 ) + return 1; + return 0; + */ + + tmp = c1; + c1 &= c2; + c2 &= c3; + c3 &= tmp; + c1 |= c2; + c1 |= c3; + return c1 & 1; +} + + +uint8_t u8g_pb_IsXIntersection(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1) +{ + uint8_t /*c0, c1, */ c2, c3; + /* + conditions: b->p.page_y0 < b->p.page_y1 + there are no restriction on v0 and v1. If v0 > v1, then warp around unsigned is assumed + */ + /* + c0 = v0 < 0; + c1 = v1 < 0; + */ + c2 = v0 > b->width; + c3 = v1 > b->width; + /*if ( c0 && c1 ) return 0;*/ + if ( c2 && c3 ) return 0; + /*if ( c1 && c2 ) return 0;*/ + return 1; +} + +uint8_t u8g_pb_IsIntersection(u8g_pb_t *pb, u8g_dev_arg_bbx_t *bbx) +{ + u8g_uint_t tmp; + + tmp = bbx->y; + tmp += bbx->h; + tmp--; + + if ( u8g_pb_IsYIntersection(pb, bbx->y, tmp) == 0 ) + return 0; + + /* maybe this one can be skiped... probability is very high to have an intersection, so it would be ok to always return 1 */ + tmp = bbx->x; + tmp += bbx->w; + tmp--; + + return u8g_pb_IsXIntersection(pb, bbx->x, tmp); +} + +void u8g_pb_GetPageBox(u8g_pb_t *pb, u8g_box_t *box) +{ + box->x0 = 0; + box->y0 = pb->p.page_y0; + box->x1 = pb->width; + box->x1--; + box->y1 = pb->p.page_y1; +} + + +uint8_t u8g_pb_Is8PixelVisible(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + u8g_uint_t v0, v1; + v0 = arg_pixel->y; + v1 = v0; + switch( arg_pixel->dir ) + { + case 0: + break; + case 1: + v1 += 8; /* this is independent from the page height */ + break; + case 2: + break; + case 3: + v0 -= 8; + break; + } + return u8g_pb_IsYIntersection(b, v0, v1); +} + + + +uint8_t u8g_pb_WriteBuffer(u8g_pb_t *b, u8g_t *u8g, u8g_dev_t *dev) +{ + return u8g_WriteSequence(u8g, dev, b->width, b->buf); +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb14v1.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb14v1.c new file mode 100644 index 000000000..dbcd0215f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb14v1.c @@ -0,0 +1,200 @@ +/* + + u8g_pb14v1.c + + 14bit height monochrom (1 bit) page buffer, + byte has vertical orientation, 7 bits per byte + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb14v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb14v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb14v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb14v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + + +void u8g_pb14v1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb14v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb14v1_Clear(b); +} + +void u8g_pb14v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 7 ) + { + ptr += b->width; + y -= 7; + } + mask = 1; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb14v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb14v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb14v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb14v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb14v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb14v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb14v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb14v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb14v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb14v1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb14v1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h1.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h1.c new file mode 100644 index 000000000..6f1502ed7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h1.c @@ -0,0 +1,213 @@ +/* + + u8g_pb16h1.c + + 2x 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 2*256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb16h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb16h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb16h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +void u8g_pb16h1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + + +void u8g_pb16h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16h1_Clear(b); +} + + +/* limitation: total buffer must not exceed 2*256 bytes */ +void u8g_pb16h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 8 ) + { + ptr += b->width; + y &= 0x07; + } + tmp = b->width; + tmp >>= 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } + +} + + +void u8g_pb16h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb16h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb16h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb16h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb16h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb16h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16h1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16h1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h2.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h2.c new file mode 100644 index 000000000..d694efbec --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h2.c @@ -0,0 +1,182 @@ +/* + + u8g_pb16h2.c + + 2 bit per pixel page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb16h2_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + + /* two bits per pixel, 16 bits height --> 8 pixel --> 4 pixel per byte */ + end_ptr += b->width; + end_ptr += b->width; + + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +void u8g_pb16h2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16h2_Clear(b); +} + +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + register uint16_t tmp; + + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 2; + tmp *= (uint8_t)y; + ptr += tmp; + + tmp = x; + tmp >>= 2; + ptr += tmp; + + tmp = x; + tmp &= 3; + tmp <<= 1; + mask = 3; + mask <<= tmp; + mask = ~mask; + color_index &= 3; + color_index <<= tmp; + + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb16h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16h2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb16h2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16h2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb16h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb16h2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_page_First(&(pb->p)); + u8g_pb16h2_Clear(pb); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16h2_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v1.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v1.c new file mode 100644 index 000000000..774aaec70 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v1.c @@ -0,0 +1,200 @@ +/* + + u8g_pb16v1.c + + 16bit height monochrom (1 bit) page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb16v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb16v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb16v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + + +void u8g_pb16v1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*2; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb16v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16v1_Clear(b); +} + +void u8g_pb16v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + if ( y >= 8 ) + { + ptr += b->width; + y &= 0x07; + } + mask = 1; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb16v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb16v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb16v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb16v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb16v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb16v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16v1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16v1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v2.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v2.c new file mode 100644 index 000000000..3d40ddad7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v2.c @@ -0,0 +1,172 @@ +/* + + u8g_pb16v2.c + + 16 bit height 2 bit per pixel page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb16v2_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + + /* two bits per pixel, 16 bits height --> 8 pixel --> 4 pixel per byte */ + end_ptr += b->width; + end_ptr += b->width; + + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + +void u8g_pb16v2Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb16v2_Clear(b); +} + +void u8g_pb16v2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + if ( y >= 4 ) + { + ptr += b->width; + } + mask = 0x03; + y &= 0x03; + y <<= 1; + mask <<= y; + mask ^=0xff; + color_index &= 3; + color_index <<= y; + ptr += x; + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb16v2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb16v2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb16v2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb16v2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb16v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb16v2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb16v2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb16v2_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb16v2_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb32h1.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb32h1.c new file mode 100644 index 000000000..6ac100f32 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb32h1.c @@ -0,0 +1,208 @@ +/* + + u8g_pb32h1.c + + 2x 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 2*256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb32h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb32h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb32h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb32h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +void u8g_pb32h1_Clear(u8g_pb_t *b) +{ + uint8_t *ptr = (uint8_t *)b->buf; + uint8_t *end_ptr = ptr; + end_ptr += b->width*4; + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + + +void u8g_pb32h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb32h1_Clear(b); +} + + +/* limitation: total buffer must not exceed 2*256 bytes */ +void u8g_pb32h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint16_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width; + tmp >>= 3; + tmp *= y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } + +} + + +void u8g_pb32h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb32h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb32h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb32h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb32h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb32h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb32h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb32h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb32h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb32h1_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb32h1_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1.c new file mode 100644 index 000000000..8a13e0b7b --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1.c @@ -0,0 +1,389 @@ +/* + + u8g_pb8h1.c + + 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 256 bytes because of the calculation inside the set pixel procedure + + 23. Sep 2012: Bug with down procedure, see FPS 1st page --> fixed (bug located in u8g_clip.c) + +*/ + +#include "u8g.h" +#include + +#ifdef __unix__ +#include +#endif + +/* NEW_CODE disabled, because the performance increase was too slow and not worth compared */ +/* to the increase of code size */ +/* #define NEW_CODE */ + +#ifdef __unix__ +void *u8g_buf_lower_limit; +void *u8g_buf_upper_limit; +#endif + +void u8g_pb8h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +#ifdef NEW_CODE +struct u8g_pb_h1_struct +{ + u8g_uint_t x; + u8g_uint_t y; + uint8_t *ptr; + uint8_t mask; + uint8_t line_byte_len; + uint8_t cnt; +}; + +static uint8_t u8g_pb8h1_bitmask[8] = { 0x080, 0x040, 0x020, 0x010, 0x008, 0x004, 0x002, 0x001 }; + +static void u8g_pb8h1_state_right(struct u8g_pb_h1_struct *s) U8G_NOINLINE; +static void u8g_pb8h1_state_right(struct u8g_pb_h1_struct *s) +{ + register u8g_uint_t x; + x = s->x; + x++; + s->x = x; + x &= 7; + s->mask = u8g_pb8h1_bitmask[x]; + if ( x == 0 ) + s->ptr++; +} + +static void u8g_pb8h1_state_left(struct u8g_pb_h1_struct *s) +{ + register u8g_uint_t x; + x = s->x; + x--; + s->x = x; + x &= 7; + s->mask = u8g_pb8h1_bitmask[x]; + if ( x == 7 ) + s->ptr--; +} + +static void u8g_pb8h1_state_down(struct u8g_pb_h1_struct *s) +{ + s->y++; + s->ptr += s->line_byte_len; +} + +static void u8g_pb8h1_state_up(struct u8g_pb_h1_struct *s) +{ + s->y--; + s->ptr -= s->line_byte_len; +} + +static void u8g_pb8h1_state_init(struct u8g_pb_h1_struct *s, u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y) U8G_NOINLINE; +static void u8g_pb8h1_state_init(struct u8g_pb_h1_struct *s, u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y) +{ + u8g_uint_t tmp; + + uint8_t *ptr = b->buf; + + s->x = x; + s->y = y; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 3; + s->line_byte_len = tmp; + + /* assume negative y values, can be down to -7, subtract this from the pointer and add correction of 8 to y */ + ptr -= tmp*8; + y+=8; + /* it is important that the result of tmp*y can be 16 bit value also for 8 bit mode */ + ptr += tmp*y; + + s->mask = u8g_pb8h1_bitmask[x & 7]; + + /* assume negative x values (to -7), subtract 8 pixel from the pointer and add 8 to x */ + ptr--; + x += 8; + x >>= 3; + ptr += x; + s->ptr = ptr; +} + +static void u8g_pb8h1_state_set_pixel(struct u8g_pb_h1_struct *s, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb8h1_state_set_pixel(struct u8g_pb_h1_struct *s, uint8_t color_index) +{ + +#ifdef __unix__ + assert( s->ptr >= u8g_buf_lower_limit ); + assert( s->ptr < u8g_buf_upper_limit ); +#endif + + if ( color_index ) + { + *s->ptr |= s->mask; + } + else + { + uint8_t mask = s->mask; + mask ^=0xff; + *s->ptr &= mask; + } +} +#endif + + +void u8g_pb8h1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +/* limitation: total buffer must not exceed 256 bytes */ +void u8g_pb8h1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ +#ifdef NEW_CODE + struct u8g_pb_h1_struct s; + u8g_pb8h1_state_init(&s, b, x, y); + u8g_pb8h1_state_set_pixel(&s, color_index); + +// u8g_pb8h1_state_up(&s); +// if ( s.y > b->p.page_y1 ) +// return; +// if ( s.x > b->width ) +// return; +// u8g_pb8h1_state_set_pixel(&s, color_index); +#else + register uint8_t mask; + u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width; + tmp >>= 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 0x080; + mask >>= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +#endif +} + + +void u8g_pb8h1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8h1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb8h1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + +#ifdef NEW_CODE +static void u8g_pb8h1_Set8PixelState(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + struct u8g_pb_h1_struct s; + uint8_t cnt; + u8g_pb8h1_state_init(&s, b, arg_pixel->x, arg_pixel->y); + cnt = 8; + switch( arg_pixel->dir ) + { + case 0: + do + { + if ( s.x < b->width ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_right(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 1: + do + { + if ( s.y >= b->p.page_y0 ) + if ( s.y <= b->p.page_y1 ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_down(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 2: + do + { + if ( s.x < b->width ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_left(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + case 3: + do + { + if ( s.y >= b->p.page_y0 ) + if ( s.y <= b->p.page_y1 ) + if ( pixel & 128 ) + u8g_pb8h1_state_set_pixel(&s, arg_pixel->color); + u8g_pb8h1_state_up(&s); + pixel <<= 1; + cnt--; + } while( cnt > 0 && pixel != 0 ); + break; + } +} +#endif + +uint8_t u8g_dev_pb8h1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: +#ifdef NEW_CODE + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1_Set8PixelState(pb, (u8g_dev_arg_pixel_t *)arg); +#else + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); +#endif + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1f.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1f.c new file mode 100644 index 000000000..ffc90c2a3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1f.c @@ -0,0 +1,194 @@ +/* + + u8g_pb8h1f.c + + 8bit height monochrom (1 bit) page buffer + byte has horizontal orientation, same as u8g_pb8h1, but byte is flipped + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + total buffer size is limited to 256 bytes because of the calculation inside the set pixel procedure + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb8h1f_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8h1f_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8h1f_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8h1f_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +void u8g_pb8h1f_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +/* limitation: total buffer must not exceed 256 bytes, 20 nov 2012: extended to >256 bytes */ +void u8g_pb8h1f_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + /*register uint8_t mask, tmp;*/ + register uint8_t mask; + register u8g_uint_t tmp; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + tmp = b->width >> 3; + tmp *= (uint8_t)y; + ptr += tmp; + + mask = 1; + mask <<= x & 7; + x >>= 3; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb8h1f_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h1f_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8h1f_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h1f_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pb8h1f_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h1f_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb8h1f_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h1f_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h1f_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h2.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h2.c new file mode 100644 index 000000000..0e37f211f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h2.c @@ -0,0 +1,167 @@ +/* + + u8g_pb8h2.c + + 8bit height 2 bit per pixel page buffer + byte has horizontal orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb8h2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +static void u8g_pb8h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +static void u8g_pb8h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + register uint16_t tmp; + + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + + tmp = b->width; + tmp >>= 2; + tmp *= (uint8_t)y; + ptr += tmp; + + tmp = x; + tmp >>= 2; + ptr += tmp; + + tmp = x; + tmp &= 3; + tmp <<= 1; + mask = 3; + mask <<= tmp; + mask = ~mask; + color_index &= 3; + color_index <<= tmp; + + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb8h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8h2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8h2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + + +uint8_t u8g_dev_pb8h2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb8h2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h8.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h8.c new file mode 100644 index 000000000..5753645d1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h8.c @@ -0,0 +1,179 @@ +/* + + u8g_pb8h8.c + + 8 bits per pixel, horizontal + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +struct _u8g_pb_t +{ + u8g_page_t p; + u8g_uint_t width; + void *buf; +}; +typedef struct _u8g_pb_t u8g_pb_t; + + +uint8_t u8g_index_color_8h8_buf[WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_index_color_8h8_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_index_color_8h8_buff}; +u8g_dev_t name = { dev_fn, &u8g_index_color_8h8_pb, com_fn } + +*/ + +#include "u8g.h" + +#define WIDTH_BITS 7 +#define WIDTH (1<buf; + uint8_t *end_ptr = ptr; + uint8_t cnt = b->p.page_height; + do + { + end_ptr += b->width; + cnt--; + } while( cnt > 0 ); + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + +void u8g_pb8h8_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb8h8_Clear(b); +} + +static void u8g_pb8h8_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + ptr += tmp; + *ptr = color_index; +} + +void u8g_pb8h8_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8h8_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8h8_Set8Pixel(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8h8_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pb8h8_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8h8_Set8Pixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8h8_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb8h8_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb8h8_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_R3G3B2; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v1.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v1.c new file mode 100644 index 000000000..37352fd11 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v1.c @@ -0,0 +1,184 @@ +/* + + u8g_pb8v1.c + + 8bit height monochrom (1 bit) page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + + +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) U8G_NOINLINE; +void u8g_pb8v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) U8G_NOINLINE; +void u8g_pb8v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) U8G_NOINLINE ; +void u8g_pb8v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) U8G_NOINLINE; + +/* Obsolete, usually set by the init of the structure */ +void u8g_pb8v1_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +void u8g_pb8v1_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + + y -= b->p.page_y0; + mask = 1; + y &= 0x07; + mask <<= y; + ptr += x; + if ( color_index ) + { + *ptr |= mask; + } + else + { + mask ^=0xff; + *ptr &= mask; + } +} + + +void u8g_pb8v1_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8v1_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + +void u8g_pb8v1_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8v1_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); +} + + +void u8g_pb8v1_Set8PixelOpt2(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + u8g_uint_t dx = 0; + u8g_uint_t dy = 0; + + switch( arg_pixel->dir ) + { + case 0: dx++; break; + case 1: dy++; break; + case 2: dx--; break; + case 3: dy--; break; + } + + do + { + if ( pixel & 128 ) + u8g_pb8v1_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); + +} + +uint8_t u8g_dev_pb8v1_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + u8g_pb8v1_Set8PixelOpt2(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8v1_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_BW; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v2.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v2.c new file mode 100644 index 000000000..3656511db --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v2.c @@ -0,0 +1,153 @@ +/* + + u8g_pb8v2.c + + 8bit height 2 bit per pixel page buffer + byte has vertical orientation + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" +#include + +void u8g_pb8v2_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pb_Clear(b); +} + +void u8g_pb8v2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) +{ + register uint8_t mask; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + mask = 0x03; + y &= 0x03; + y <<= 1; + mask <<= y; + mask ^=0xff; + color_index &= 3; + color_index <<= y; + ptr += x; + *ptr &= mask; + *ptr |= color_index; +} + + +void u8g_pb8v2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel) +{ + if ( arg_pixel->y < b->p.page_y0 ) + return; + if ( arg_pixel->y > b->p.page_y1 ) + return; + if ( arg_pixel->x >= b->width ) + return; + u8g_pb8v2_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color); +} + + +void u8g_pb8v2_Set8PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + if ( pixel & 128 ) + { + u8g_pb8v2_SetPixel(b, arg_pixel); + } + switch( arg_pixel->dir ) + { + case 0: arg_pixel->x++; break; + case 1: arg_pixel->y++; break; + case 2: arg_pixel->x--; break; + case 3: arg_pixel->y--; break; + } + pixel <<= 1; + } while( pixel != 0 ); + +} + + + +uint8_t u8g_dev_pb8v2_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + switch(msg) + { + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_pb_Is8PixelVisible(pb, (u8g_dev_arg_pixel_t *)arg) ) + { + u8g_pb8v2_Set8PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + } + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pb8v2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pb_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pb_Clear(pb); + break; +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + return u8g_pb_IsIntersection(pb, (u8g_dev_arg_bbx_t *)arg); +#endif + case U8G_DEV_MSG_GET_PAGE_BOX: + u8g_pb_GetPageBox(pb, (u8g_box_t *)arg); + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = pb->width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = pb->p.total_height; + break; + case U8G_DEV_MSG_SET_COLOR_INDEX: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_GRAY2BIT; + } + return 1; +} + + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rect.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rect.c new file mode 100644 index 000000000..139a43a24 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rect.c @@ -0,0 +1,232 @@ +/* + + u8g_rect.c + + U8G high level interface for horizontal and vertical things + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +void u8g_draw_hline(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + uint8_t pixel = 0x0ff; + while( w >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 0, pixel); + w-=8; + x+=8; + } + if ( w != 0 ) + { + w ^=7; + w++; + pixel <<= w&7; + u8g_Draw8Pixel(u8g, x, y, 0, pixel); + } +} + +void u8g_draw_vline(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t h) +{ + uint8_t pixel = 0x0ff; + while( h >= 8 ) + { + u8g_Draw8Pixel(u8g, x, y, 1, pixel); + h-=8; + y+=8; + } + if ( h != 0 ) + { + h ^=7; + h++; + pixel <<= h&7; + u8g_Draw8Pixel(u8g, x, y, 1, pixel); + } +} + +void u8g_DrawHLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, w, 1) == 0 ) + return; + u8g_draw_hline(u8g, x, y, w); +} + +void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, 1, w) == 0 ) + return; + u8g_draw_vline(u8g, x, y, w); +} + +/* restrictions: w > 0 && h > 0 */ +void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + u8g_uint_t xtmp = x; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + + u8g_draw_hline(u8g, x, y, w); + u8g_draw_vline(u8g, x, y, h); + x+=w; + x--; + u8g_draw_vline(u8g, x, y, h); + y+=h; + y--; + u8g_draw_hline(u8g, xtmp, y, w); +} + +void u8g_draw_box(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + do + { + u8g_draw_hline(u8g, x, y, w); + y++; + h--; + } while( h != 0 ); +} + +/* restrictions: h > 0 */ +void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) +{ + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + u8g_draw_box(u8g, x, y, w, h); +} + + +void u8g_DrawRFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) +{ + u8g_uint_t xl, yu; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + xl = x; + xl += r; + yu = y; + yu += r; + + { + u8g_uint_t yl, xr; + + xr = x; + xr += w; + xr -= r; + xr -= 1; + + yl = y; + yl += h; + yl -= r; + yl -= 1; + + u8g_draw_circle(u8g, xl, yu, r, U8G_DRAW_UPPER_LEFT); + u8g_draw_circle(u8g, xr, yu, r, U8G_DRAW_UPPER_RIGHT); + u8g_draw_circle(u8g, xl, yl, r, U8G_DRAW_LOWER_LEFT); + u8g_draw_circle(u8g, xr, yl, r, U8G_DRAW_LOWER_RIGHT); + } + + { + u8g_uint_t ww, hh; + + ww = w; + ww -= r; + ww -= r; + ww -= 2; + hh = h; + hh -= r; + hh -= r; + hh -= 2; + + xl++; + yu++; + h--; + w--; + u8g_draw_hline(u8g, xl, y, ww); + u8g_draw_hline(u8g, xl, y+h, ww); + u8g_draw_vline(u8g, x, yu, hh); + u8g_draw_vline(u8g, x+w, yu, hh); + } +} + +void u8g_DrawRBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r) +{ + u8g_uint_t xl, yu; + u8g_uint_t yl, xr; + + if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 ) + return; + + xl = x; + xl += r; + yu = y; + yu += r; + + xr = x; + xr += w; + xr -= r; + xr -= 1; + + yl = y; + yl += h; + yl -= r; + yl -= 1; + + u8g_draw_disc(u8g, xl, yu, r, U8G_DRAW_UPPER_LEFT); + u8g_draw_disc(u8g, xr, yu, r, U8G_DRAW_UPPER_RIGHT); + u8g_draw_disc(u8g, xl, yl, r, U8G_DRAW_LOWER_LEFT); + u8g_draw_disc(u8g, xr, yl, r, U8G_DRAW_LOWER_RIGHT); + + { + u8g_uint_t ww, hh; + + ww = w; + ww -= r; + ww -= r; + ww -= 2; + hh = h; + hh -= r; + hh -= r; + hh -= 2; + + xl++; + yu++; + h--; + u8g_draw_box(u8g, xl, y, ww, r+1); + u8g_draw_box(u8g, xl, yl, ww, r+1); + //u8g_draw_hline(u8g, xl, y+h, ww); + u8g_draw_box(u8g, x, yu, w, hh); + //u8g_draw_vline(u8g, x+w, yu, hh); + } +} diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rot.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rot.c new file mode 100644 index 000000000..c581104cb --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rot.c @@ -0,0 +1,398 @@ +/* + + u8g_rot.c + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); +uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); +uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +u8g_dev_t u8g_dev_rot = { u8g_dev_rot90_fn, NULL, NULL }; + + +void u8g_UndoRotation(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + return; + u8g->dev = u8g_dev_rot.dev_mem; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot90(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot90_fn; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot180(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot180_fn; + u8g_UpdateDimension(u8g); +} + +void u8g_SetRot270(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_rot ) + { + u8g_dev_rot.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_rot; + } + u8g_dev_rot.dev_fn = u8g_dev_rot270_fn; + u8g_UpdateDimension(u8g); +} + +uint8_t u8g_dev_rot90_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y, tmp; + + /* transform the reference point */ + y = bbx->x; + x = u8g->height; + /* x = u8g_GetWidthLL(u8g, rotation_chain); */ + x -= bbx->y; + x--; + + /* adjust point to be the uppler left corner again */ + x -= bbx->h; + x++; + + /* swap box dimensions */ + tmp = bbx->w; + bbx->w = bbx->h; + bbx->h = tmp; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + //new_box.x0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + //new_box.x1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + + new_box.x0 = ((u8g_box_t *)arg)->y0; + new_box.x1 = ((u8g_box_t *)arg)->y1; + new_box.y0 = ((u8g_box_t *)arg)->x0; + new_box.y1 = ((u8g_box_t *)arg)->x1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + y = ((u8g_dev_arg_pixel_t *)arg)->x; + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + //uint16_t x,y; + y = ((u8g_dev_arg_pixel_t *)arg)->x; + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=1; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + +uint8_t u8g_dev_rot180_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y; + + /* transform the reference point */ + //y = u8g_GetHeightLL(u8g, rotation_chain); + y = u8g->height; + y -= bbx->y; + y--; + + //x = u8g_GetWidthLL(u8g, rotation_chain); + x = u8g->width; + x -= bbx->x; + x--; + + /* adjust point to be the uppler left corner again */ + y -= bbx->h; + y++; + + x -= bbx->w; + x++; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + + new_box.x0 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x1 - 1; + new_box.x1 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x0 - 1; + new_box.y0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + new_box.y1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->y; + y--; + + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->x; + x--; + + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->y; + y--; + + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->x; + x--; + + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=2; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + +uint8_t u8g_dev_rot270_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *rotation_chain = (u8g_dev_t *)(dev->dev_mem); + switch(msg) + { + default: + /* + case U8G_DEV_MSG_INIT: + case U8G_DEV_MSG_STOP: + case U8G_DEV_MSG_PAGE_FIRST: + case U8G_DEV_MSG_PAGE_NEXT: + case U8G_DEV_MSG_SET_COLOR_INDEX: + case U8G_DEV_MSG_SET_XY_CB: + */ + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION + case U8G_DEV_MSG_IS_BBX_INTERSECTION: + { + u8g_dev_arg_bbx_t *bbx = (u8g_dev_arg_bbx_t *)arg; + u8g_uint_t x, y, tmp; + + /* transform the reference point */ + x = bbx->y; + + y = u8g->width; + /* y = u8g_GetHeightLL(u8g, rotation_chain); */ + y -= bbx->x; + y--; + + /* adjust point to be the uppler left corner again */ + y -= bbx->w; + y++; + + /* swap box dimensions */ + tmp = bbx->w; + bbx->w = bbx->h; + bbx->h = tmp; + + /* store x,y */ + bbx->x = x; + bbx->y = y; + } + return u8g_call_dev_fn(u8g, rotation_chain, msg, arg); +#endif /* U8G_DEV_MSG_IS_BBX_INTERSECTION */ + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + //printf("pre x: %3d..%3d y: %3d..%3d ", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + { + u8g_box_t new_box; + + new_box.x0 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y1 - 1; + new_box.x1 = u8g_GetHeightLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->y0 - 1; + new_box.y0 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x1 - 1; + new_box.y1 = u8g_GetWidthLL(u8g,rotation_chain) - ((u8g_box_t *)arg)->x0 - 1; + *((u8g_box_t *)arg) = new_box; + //printf("post x: %3d..%3d y: %3d..%3d\n", ((u8g_box_t *)arg)->x0, ((u8g_box_t *)arg)->x1, ((u8g_box_t *)arg)->y0, ((u8g_box_t *)arg)->y1); + } + break; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g,rotation_chain); + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, rotation_chain); + break; + case U8G_DEV_MSG_SET_PIXEL: + { + u8g_uint_t x, y; + x = ((u8g_dev_arg_pixel_t *)arg)->y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->x; + y--; + + /* + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + */ + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + { + u8g_uint_t x, y; + x = ((u8g_dev_arg_pixel_t *)arg)->y; + + y = u8g_GetHeightLL(u8g, rotation_chain); + y -= ((u8g_dev_arg_pixel_t *)arg)->x; + y--; + + /* + x = u8g_GetWidthLL(u8g, rotation_chain); + x -= ((u8g_dev_arg_pixel_t *)arg)->y; + x--; + */ + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir+=3; + ((u8g_dev_arg_pixel_t *)arg)->dir &= 3; + } + u8g_call_dev_fn(u8g, rotation_chain, msg, arg); + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_scale.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_scale.c new file mode 100644 index 000000000..e5b4b634f --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_scale.c @@ -0,0 +1,188 @@ +/* + + u8g_scale.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Scale screen by some constant factors. Usefull for making bigger fonts wiht less + memory consumption + +*/ + +#include "u8g.h" + +uint8_t u8g_dev_scale_2x2_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + + +u8g_dev_t u8g_dev_scale = { u8g_dev_scale_2x2_fn, NULL, NULL }; + +void u8g_UndoScale(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_scale ) + return; + u8g->dev = u8g_dev_scale.dev_mem; + u8g_UpdateDimension(u8g); +} + +void u8g_SetScale2x2(u8g_t *u8g) +{ + if ( u8g->dev != &u8g_dev_scale ) + { + u8g_dev_scale.dev_mem = u8g->dev; + u8g->dev = &u8g_dev_scale; + } + u8g_dev_scale.dev_fn = u8g_dev_scale_2x2_fn; + u8g_UpdateDimension(u8g); +} + + +uint8_t u8g_dev_scale_2x2_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + u8g_dev_t *chain = (u8g_dev_t *)(dev->dev_mem); + uint8_t pixel; + uint16_t scaled_pixel; + uint8_t i; + uint8_t dir; + u8g_uint_t x, y, xx,yy; + + switch(msg) + { + default: + return u8g_call_dev_fn(u8g, chain, msg, arg); + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_GetWidthLL(u8g, chain) / 2; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_GetHeightLL(u8g, chain) / 2; + break; + case U8G_DEV_MSG_GET_PAGE_BOX: + /* get page size from next device in the chain */ + u8g_call_dev_fn(u8g, chain, msg, arg); + ((u8g_box_t *)arg)->x0 /= 2; + ((u8g_box_t *)arg)->x1 /= 2; + ((u8g_box_t *)arg)->y0 /= 2; + ((u8g_box_t *)arg)->y1 /= 2; + return 1; + case U8G_DEV_MSG_SET_PIXEL: + x = ((u8g_dev_arg_pixel_t *)arg)->x; + x *= 2; + y = ((u8g_dev_arg_pixel_t *)arg)->y; + y *= 2; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + x++; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + y++; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + x--; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + u8g_call_dev_fn(u8g, chain, msg, arg); + break; + case U8G_DEV_MSG_SET_8PIXEL: + pixel = ((u8g_dev_arg_pixel_t *)arg)->pixel; + dir = ((u8g_dev_arg_pixel_t *)arg)->dir; + scaled_pixel = 0; + for( i = 0; i < 8; i++ ) + { + scaled_pixel<<=2; + if ( pixel & 128 ) + { + scaled_pixel |= 3; + } + pixel<<=1; + } + x = ((u8g_dev_arg_pixel_t *)arg)->x; + x *= 2; + xx = x; + y = ((u8g_dev_arg_pixel_t *)arg)->y; + y *= 2; + yy = y; + if ( ((u8g_dev_arg_pixel_t *)arg)->dir & 1 ) + { + xx++; + } + else + { + yy++; + } + + ((u8g_dev_arg_pixel_t *)arg)->pixel = scaled_pixel>>8; + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + + ((u8g_dev_arg_pixel_t *)arg)->x = xx; + ((u8g_dev_arg_pixel_t *)arg)->y = yy; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + ((u8g_dev_arg_pixel_t *)arg)->pixel = scaled_pixel&255; + //((u8g_dev_arg_pixel_t *)arg)->pixel = 0x00; + switch(dir) + { + case 0: + x+=8; + xx+=8; + break; + case 1: + y+=8; + yy+=8; + break; + case 2: + x-=8; + xx-=8; + break; + case 3: + y-=8; + yy-=8; + break; + } + ((u8g_dev_arg_pixel_t *)arg)->x = x; + ((u8g_dev_arg_pixel_t *)arg)->y = y; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + + ((u8g_dev_arg_pixel_t *)arg)->x = xx; + ((u8g_dev_arg_pixel_t *)arg)->y = yy; + ((u8g_dev_arg_pixel_t *)arg)->dir = dir; + u8g_call_dev_fn(u8g, chain, msg, arg); + break; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_state.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_state.c new file mode 100644 index 000000000..3ae3eee4a --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_state.c @@ -0,0 +1,102 @@ +/* + + u8g_state.c + + backup and restore hardware state + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + state callback: backup env U8G_STATE_MSG_BACKUP_ENV + device callback: DEV_MSG_INIT + state callback: backup u8g U8G_STATE_MSG_BACKUP_U8G + state callback: restore env U8G_STATE_MSG_RESTORE_ENV + + state callback: backup env U8G_STATE_MSG_BACKUP_ENV + state callback: retore u8g U8G_STATE_MSG_RESTORE_U8G + DEV_MSG_PAGE_FIRST or DEV_MSG_PAGE_NEXT + state callback: restore env U8G_STATE_MSG_RESTORE_ENV + +*/ + +#include +#include "u8g.h" + +void u8g_state_dummy_cb(uint8_t msg) +{ + /* the dummy procedure does nothing */ +} + +void u8g_SetHardwareBackup(u8g_t *u8g, u8g_state_cb backup_cb) +{ + u8g->state_cb = backup_cb; + /* in most cases the init message was already sent, so this will backup the */ + /* current u8g state */ + backup_cb(U8G_STATE_MSG_BACKUP_U8G); +} + + +/*===============================================================*/ +/* AVR */ + +#if defined(__AVR__) +#define U8G_ATMEGA_HW_SPI + +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ATMEGA_HW_SPI +#endif +#endif + +#if defined(U8G_ATMEGA_HW_SPI) +#include +static uint8_t u8g_state_avr_spi_memory[2]; + +void u8g_backup_avr_spi(uint8_t msg) +{ + if ( U8G_STATE_MSG_IS_BACKUP(msg) ) + { + u8g_state_avr_spi_memory[U8G_STATE_MSG_GET_IDX(msg)] = SPCR; + } + else + { + uint8_t tmp = SREG; + cli(); + SPCR = 0; + SPCR = u8g_state_avr_spi_memory[U8G_STATE_MSG_GET_IDX(msg)]; + SREG = tmp; + } +} + +#endif + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u16toa.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u16toa.c new file mode 100644 index 000000000..f1d1803cf --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u16toa.c @@ -0,0 +1,68 @@ +/* + + u8g_u16toa.c + + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "u8g.h" + +const char *u8g_u16toap(char * dest, uint16_t v) +{ + uint8_t pos; + uint8_t d; + uint16_t c; + c = 10000; + for( pos = 0; pos < 5; pos++ ) + { + d = '0'; + while( v >= c ) + { + v -= c; + d++; + } + dest[pos] = d; + c /= 10; + } + dest[5] = '\0'; + return dest; +} + +/* v = value, d = number of digits */ +const char *u8g_u16toa(uint16_t v, uint8_t d) +{ + static char buf[6]; + d = 5-d; + return u8g_u16toap(buf, v) + d; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u8toa.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u8toa.c new file mode 100644 index 000000000..f3a2c06fa --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u8toa.c @@ -0,0 +1,68 @@ +/* + + u8g_u8toa.c + + + Universal 8bit Graphics Library + + Copyright (c) 2011, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + + +#include "u8g.h" + +static const unsigned char u8g_u8toa_tab[3] = { 100, 10, 1 } ; +const char *u8g_u8toap(char * dest, uint8_t v) +{ + uint8_t pos; + uint8_t d; + uint8_t c; + for( pos = 0; pos < 3; pos++ ) + { + d = '0'; + c = *(u8g_u8toa_tab+pos); + while( v >= c ) + { + v -= c; + d++; + } + dest[pos] = d; + } + dest[3] = '\0'; + return dest; +} + +/* v = value, d = number of digits */ +const char *u8g_u8toa(uint8_t v, uint8_t d) +{ + static char buf[4]; + d = 3-d; + return u8g_u8toap(buf, v) + d; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_virtual_screen.c b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_virtual_screen.c new file mode 100644 index 000000000..8000506b4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_virtual_screen.c @@ -0,0 +1,145 @@ +/* + + u8g_virtual_screen.c + + Universal 8bit Graphics Library + + Copyright (c) 2012, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +#include "u8g.h" + +struct _u8g_vs_t +{ + u8g_uint_t x; + u8g_uint_t y; + u8g_t *u8g; +}; +typedef struct _u8g_vs_t u8g_vs_t; + +#define U8g_VS_MAX 4 +uint8_t u8g_vs_cnt = 0; +u8g_vs_t u8g_vs_list[U8g_VS_MAX]; +uint8_t u8g_vs_current; +u8g_uint_t u8g_vs_width; +u8g_uint_t u8g_vs_height; + +uint8_t u8g_dev_vs_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + default: + { + uint8_t i; + for( i = 0; i < u8g_vs_cnt; i++ ) + { + u8g_call_dev_fn(u8g_vs_list[i].u8g, u8g_vs_list[i].u8g->dev, msg, arg); + } + } + return 1; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_vs_current = 0; + if ( u8g_vs_cnt != 0 ) + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + return 0; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t ret = 0; + if ( u8g_vs_cnt != 0 ) + ret = u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + if ( ret != 0 ) + return ret; + u8g_vs_current++; /* next device */ + if ( u8g_vs_current >= u8g_vs_cnt ) /* reached end? */ + return 0; + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, U8G_DEV_MSG_PAGE_FIRST, arg); + } + return 0; + case U8G_DEV_MSG_GET_WIDTH: + *((u8g_uint_t *)arg) = u8g_vs_width; + break; + case U8G_DEV_MSG_GET_HEIGHT: + *((u8g_uint_t *)arg) = u8g_vs_height; + break; + case U8G_DEV_MSG_GET_PAGE_BOX: + if ( u8g_vs_current < u8g_vs_cnt ) + { + u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + ((u8g_box_t *)arg)->x0 += u8g_vs_list[u8g_vs_current].x; + ((u8g_box_t *)arg)->x1 += u8g_vs_list[u8g_vs_current].x; + ((u8g_box_t *)arg)->y0 += u8g_vs_list[u8g_vs_current].y; + ((u8g_box_t *)arg)->y1 += u8g_vs_list[u8g_vs_current].y; + } + else + { + ((u8g_box_t *)arg)->x0 = 0; + ((u8g_box_t *)arg)->x1 = 0; + ((u8g_box_t *)arg)->y0 = 0; + ((u8g_box_t *)arg)->y1 = 0; + } + return 1; + case U8G_DEV_MSG_SET_PIXEL: + case U8G_DEV_MSG_SET_8PIXEL: + if ( u8g_vs_current < u8g_vs_cnt ) + { + ((u8g_dev_arg_pixel_t *)arg)->x -= u8g_vs_list[u8g_vs_current].x; + ((u8g_dev_arg_pixel_t *)arg)->y -= u8g_vs_list[u8g_vs_current].y; + return u8g_call_dev_fn(u8g_vs_list[u8g_vs_current].u8g, u8g_vs_list[u8g_vs_current].u8g->dev, msg, arg); + } + break; + } + return 1; +} + + + +u8g_dev_t u8g_dev_vs = { u8g_dev_vs_fn, NULL, NULL }; + +void u8g_SetVirtualScreenDimension(u8g_t *vs_u8g, u8g_uint_t width, u8g_uint_t height) +{ + if ( vs_u8g->dev != &u8g_dev_vs ) + return; /* abort if there is no a virtual screen device */ + u8g_vs_width = width; + u8g_vs_height = height; +} + +uint8_t u8g_AddToVirtualScreen(u8g_t *vs_u8g, u8g_uint_t x, u8g_uint_t y, u8g_t *child_u8g) +{ + if ( vs_u8g->dev != &u8g_dev_vs ) + return 0; /* abort if there is no a virtual screen device */ + if ( u8g_vs_cnt >= U8g_VS_MAX ) + return 0; /* maximum number of child u8g's reached */ + u8g_vs_list[u8g_vs_cnt].u8g = child_u8g; + u8g_vs_list[u8g_vs_cnt].x = x; + u8g_vs_list[u8g_vs_cnt].y = y; + u8g_vs_cnt++; + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/platform.txt b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/platform.txt new file mode 100644 index 000000000..639448c55 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/platform.txt @@ -0,0 +1,9 @@ + +# Marlin AVR Core and platform. +# ------------------------------ + +# For more info: +# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification + +name=Marlin AVR Boards +version=1.5.6 diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/variants/rambo/pins_arduino.h b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/variants/rambo/pins_arduino.h new file mode 100644 index 000000000..f49a23fc0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/variants/rambo/pins_arduino.h @@ -0,0 +1,411 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NUM_DIGITAL_PINS 82 +#define NUM_ANALOG_INPUTS 16 +#define analogInputToDigitalPin(p) ((p < 16) ? (p) + 54 : -1) +#define digitalPinHasPWM(p) (((p) >= 2 && (p) <= 13) || ((p) >= 44 && (p)<= 46)) + +static const uint8_t SS = 53; +static const uint8_t MOSI = 51; +static const uint8_t MISO = 50; +static const uint8_t SCK = 52; + +static const uint8_t SDA = 20; +static const uint8_t SCL = 21; +static const uint8_t LED_BUILTIN = 13; + +static const uint8_t A0 = 54; +static const uint8_t A1 = 55; +static const uint8_t A2 = 56; +static const uint8_t A3 = 57; +static const uint8_t A4 = 58; +static const uint8_t A5 = 59; +static const uint8_t A6 = 60; +static const uint8_t A7 = 61; +static const uint8_t A8 = 62; +static const uint8_t A9 = 63; +static const uint8_t A10 = 64; +static const uint8_t A11 = 65; +static const uint8_t A12 = 66; +static const uint8_t A13 = 67; +static const uint8_t A14 = 68; +static const uint8_t A15 = 69; + +// A majority of the pins are NOT PCINTs, SO BE WARNED (i.e. you cannot use them as receive pins) +// Only pins available for RECEIVE (TRANSMIT can be on any pin): +// (I've deliberately left out pin mapping to the Hardware USARTs - seems senseless to me) +// Pins: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69 + +#define digitalPinToPCICR(p) ( (((p) >= 10) && ((p) <= 13)) || \ + (((p) >= 50) && ((p) <= 53)) || \ + (((p) >= 62) && ((p) <= 69)) ? (&PCICR) : ((uint8_t *)0) ) + +#define digitalPinToPCICRbit(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? 0 : \ + ( (((p) >= 62) && ((p) <= 69)) ? 2 : \ + 0 ) ) + +#define digitalPinToPCMSK(p) ( (((p) >= 10) && ((p) <= 13)) || (((p) >= 50) && ((p) <= 53)) ? (&PCMSK0) : \ + ( (((p) >= 62) && ((p) <= 69)) ? (&PCMSK2) : \ + ((uint8_t *)0) ) ) + +#define digitalPinToPCMSKbit(p) ( (((p) >= 10) && ((p) <= 13)) ? ((p) - 6) : \ + ( ((p) == 50) ? 3 : \ + ( ((p) == 51) ? 2 : \ + ( ((p) == 52) ? 1 : \ + ( ((p) == 53) ? 0 : \ + ( (((p) >= 62) && ((p) <= 69)) ? ((p) - 62) : \ + 0 ) ) ) ) ) ) + +#ifdef ARDUINO_MAIN + +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + (uint16_t) &DDRA, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, + (uint16_t) &DDRE, + (uint16_t) &DDRF, + (uint16_t) &DDRG, + (uint16_t) &DDRH, + NOT_A_PORT, + (uint16_t) &DDRJ, + (uint16_t) &DDRK, + (uint16_t) &DDRL, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + (uint16_t) &PORTA, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, + (uint16_t) &PORTE, + (uint16_t) &PORTF, + (uint16_t) &PORTG, + (uint16_t) &PORTH, + NOT_A_PORT, + (uint16_t) &PORTJ, + (uint16_t) &PORTK, + (uint16_t) &PORTL, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PIN, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, + (uint16_t) &PINF, + (uint16_t) &PING, + (uint16_t) &PINH, + NOT_A_PIN, + (uint16_t) &PINJ, + (uint16_t) &PINK, + (uint16_t) &PINL, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 + PG , // PG 4 ** 70 ** D70 + PG , // PG 3 ** 71 ** D71 + PJ , // PJ 2 ** 72 ** D72 + PJ , // PJ 3 ** 73 ** D73 + PJ , // PJ 7 ** 74 ** D74 + PJ , // PJ 4 ** 75 ** D75 + PJ , // PJ 5 ** 76 ** D76 + PJ , // PJ 6 ** 77 ** D77 + PE , // PE 2 ** 78 ** D78 + PE , // PE 6 ** 79 ** D79 + PE , // PE 7 ** 80 ** D80 + PD , // PD 4 ** 81 ** D81 + PD , // PD 5 ** 82 ** D82 + PD , // PD 6 ** 83 ** D83 + PH , // PH 2 ** 84 ** D84 + PH , // PH 7 ** 85 ** D85 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 + _BV( 4 ) , // PG 4 ** 70 ** D70 + _BV( 3 ) , // PG 3 ** 71 ** D71 + _BV( 2 ) , // PJ 2 ** 72 ** D72 + _BV( 3 ) , // PJ 3 ** 73 ** D73 + _BV( 7 ) , // PJ 7 ** 74 ** D74 + _BV( 4 ) , // PJ 4 ** 75 ** D75 + _BV( 5 ) , // PJ 5 ** 76 ** D76 + _BV( 6 ) , // PJ 6 ** 77 ** D77 + _BV( 2 ) , // PE 2 ** 78 ** D78 + _BV( 6 ) , // PE 6 ** 79 ** D79 + _BV( 7 ) , // PE 7 ** 80 ** D80 + _BV( 4 ) , // PD 4 ** 81 ** D81 + _BV( 5 ) , // PD 5 ** 82 ** D82 + _BV( 6 ) , // PD 6 ** 83 ** D83 + _BV( 2 ) , // PH 2 ** 84 ** D84 + _BV( 7 ) , // PH 7 ** 85 ** D85 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 + NOT_ON_TIMER , // PG 4 ** 70 ** D70 + NOT_ON_TIMER , // PG 3 ** 71 ** D71 + NOT_ON_TIMER , // PJ 2 ** 72 ** D72 + NOT_ON_TIMER , // PJ 3 ** 73 ** D73 + NOT_ON_TIMER , // PJ 7 ** 74 ** D74 + NOT_ON_TIMER , // PJ 4 ** 75 ** D75 + NOT_ON_TIMER , // PJ 5 ** 76 ** D76 + NOT_ON_TIMER , // PJ 6 ** 77 ** D77 + NOT_ON_TIMER , // PE 2 ** 78 ** D78 + NOT_ON_TIMER , // PE 6 ** 79 ** D79 + NOT_ON_TIMER , // PE 7 ** 80 ** D80 + NOT_ON_TIMER , // PD 4 ** 81 ** D81 + NOT_ON_TIMER , // PD 5 ** 82 ** D82 + NOT_ON_TIMER , // PD 6 ** 83 ** D83 + NOT_ON_TIMER , // PH 2 ** 84 ** D84 + NOT_ON_TIMER , // PH 7 ** 85 ** D85 +}; + +#endif + +#endif diff --git a/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/variants/sanguino/pins_arduino.h b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/variants/sanguino/pins_arduino.h new file mode 100644 index 000000000..499952dc9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.5.x/hardware/marlin/avr/variants/sanguino/pins_arduino.h @@ -0,0 +1,285 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ + + Changelog + ----------- + 11/25/11 - ryan@ryanmsutton.com - Add pins for Sanguino 644P and 1284P + 07/15/12 - ryan@ryanmsutton.com - Updated for arduino0101 +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER5A 14 +#define TIMER5B 15 +#define TIMER5C 16 + +const static uint8_t SS = 4; +const static uint8_t MOSI = 5; +const static uint8_t MISO = 6; +const static uint8_t SCK = 7; + +static const uint8_t SDA = 17; +static const uint8_t SCL = 16; +static const uint8_t LED_BUILTIN = 13; + +static const uint8_t A0 = 31; +static const uint8_t A1 = 30; +static const uint8_t A2 = 29; +static const uint8_t A3 = 28; +static const uint8_t A4 = 27; +static const uint8_t A5 = 26; +static const uint8_t A6 = 25; +static const uint8_t A7 = 24; + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +// extern const uint16_t PROGMEM port_to_mode_PGM[]; +// extern const uint16_t PROGMEM port_to_input_PGM[]; +// extern const uint16_t PROGMEM port_to_output_PGM[]; + +// extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// ATMEL ATMEGA644P / SANGUINO +// +// +---\/---+ +// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31) +// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30) +// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) +// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) +// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) +// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) +// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) +// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) +// RST 9| |32 AREF +// VCC 10| |31 GND +// GND 11| |30 AVCC +// XTAL2 12| |29 PC7 (D 23) +// XTAL1 13| |28 PC6 (D 22) +// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI +// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO +// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS +// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK +// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA +// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL +// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM +// +--------+ +// +#define NUM_DIGITAL_PINS 24 +#define NUM_ANALOG_INPUTS 8 +#define analogInputToDigitalPin(p) ((p < 7) ? (p) + 24 : -1) + +#define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 12 || (p) == 13 || (p) == 14 || (p) == 15 ) + +#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) ) + +#define digitalPinToPCICRbit(p) ( (((p) >= 24) && ((p) <= 31)) ? 0 : \ + ( (((p) >= 0) && ((p) <= 7)) ? 1 : \ + ( (((p) >= 16) && ((p) <= 23)) ? 2 : \ + ( (((p) >= 8) && ((p) <= 15)) ? 3 : \ + 0 ) ) ) ) + +#define digitalPinToPCMSK(p) ( (((p) >= 24) && ((p) <= 31)) ? (&PCMSK0) : \ + ( (((p) >= 0) && ((p) <= 7)) ? (&PCMSK1) : \ + ( (((p) >= 16) && ((p) <= 23)) ? (&PCMSK2) : \ + ( (((p) >= 8) && ((p) <= 15)) ? (&PCMSK3) : \ + ((uint8_t *)0) ) ) ) ) + + +#define digitalPinToPCMSKbit(p) ( (((p) >= 24) && ((p) <= 31)) ? (31 - (p)) : \ + ( (((p) >= 0) && ((p) <= 7)) ? (p) : \ + ( (((p) >= 16) && ((p) <= 23)) ? ((p) - 16) : \ + ( (((p) >= 8) && ((p) <= 15)) ? ((p) - 8) : \ + 0 ) ) ) ) + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 + +#ifdef ARDUINO_MAIN +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &DDRA, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &PORTA, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, +}; +const uint16_t PROGMEM port_to_input_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, +}; +const uint8_t PROGMEM digital_pin_to_port_PGM[] = +{ + PB, /* 0 */ + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PD, /* 8 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PC, /* 16 */ + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PA, /* 24 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA /* 31 */ +}; +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = +{ + _BV(0), /* 0, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 16, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(7), /* 24, port A */ + _BV(6), + _BV(5), + _BV(4), + _BV(3), + _BV(2), + _BV(1), + _BV(0) +}; +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = +{ + NOT_ON_TIMER, /* 0 - PB0 */ + NOT_ON_TIMER, /* 1 - PB1 */ + NOT_ON_TIMER, /* 2 - PB2 */ + TIMER0A, /* 3 - PB3 */ + TIMER0B, /* 4 - PB4 */ + NOT_ON_TIMER, /* 5 - PB5 */ + NOT_ON_TIMER, /* 6 - PB6 */ + NOT_ON_TIMER, /* 7 - PB7 */ + NOT_ON_TIMER, /* 8 - PD0 */ + NOT_ON_TIMER, /* 9 - PD1 */ + NOT_ON_TIMER, /* 10 - PD2 */ + NOT_ON_TIMER, /* 11 - PD3 */ + TIMER1B, /* 12 - PD4 */ + TIMER1A, /* 13 - PD5 */ + TIMER2B, /* 14 - PD6 */ + TIMER2A, /* 15 - PD7 */ + NOT_ON_TIMER, /* 16 - PC0 */ + NOT_ON_TIMER, /* 17 - PC1 */ + NOT_ON_TIMER, /* 18 - PC2 */ + NOT_ON_TIMER, /* 19 - PC3 */ + NOT_ON_TIMER, /* 20 - PC4 */ + NOT_ON_TIMER, /* 21 - PC5 */ + NOT_ON_TIMER, /* 22 - PC6 */ + NOT_ON_TIMER, /* 23 - PC7 */ + NOT_ON_TIMER, /* 24 - PA0 */ + NOT_ON_TIMER, /* 25 - PA1 */ + NOT_ON_TIMER, /* 26 - PA2 */ + NOT_ON_TIMER, /* 27 - PA3 */ + NOT_ON_TIMER, /* 28 - PA4 */ + NOT_ON_TIMER, /* 29 - PA5 */ + NOT_ON_TIMER, /* 30 - PA6 */ + NOT_ON_TIMER /* 31 - PA7 */ +}; +#endif +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/boards.txt b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/boards.txt new file mode 100644 index 000000000..1978462ae --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/boards.txt @@ -0,0 +1,108 @@ +############################################################## + +Gen7-644-16.name=Gen7 with ATmega644 and 16 MHz +Gen7-644-16.upload.protocol=stk500v2 +Gen7-644-16.upload.maximum_size=63488 +Gen7-644-16.upload.speed=115200 +Gen7-644-16.bootloader.low_fuses=0xF7 +Gen7-644-16.bootloader.high_fuses=0xDC +Gen7-644-16.bootloader.extended_fuses=0xFC +Gen7-644-16.bootloader.path=Gen7 +Gen7-644-16.bootloader.file=bootloader-644-16MHz.hex +Gen7-644-16.bootloader.unlock_bits=0x3F +Gen7-644-16.bootloader.lock_bits=0x0F +Gen7-644-16.build.mcu=atmega644 +Gen7-644-16.build.f_cpu=16000000L +Gen7-644-16.build.core=arduino +Gen7-644-16.build.variant=gen7 + +############################################################## + +Gen7-644-20.name=Gen7 with ATmega644 and 20 MHz +Gen7-644-20.upload.protocol=stk500v2 +Gen7-644-20.upload.maximum_size=63488 +Gen7-644-20.upload.speed=115200 +Gen7-644-20.bootloader.low_fuses=0xF7 +Gen7-644-20.bootloader.high_fuses=0xDC +Gen7-644-20.bootloader.extended_fuses=0xFC +Gen7-644-20.bootloader.path=Gen7 +Gen7-644-20.bootloader.file=bootloader-644-20MHz.hex +Gen7-644-20.bootloader.unlock_bits=0x3F +Gen7-644-20.bootloader.lock_bits=0x0F +Gen7-644-20.build.mcu=atmega644 +Gen7-644-20.build.f_cpu=20000000L +Gen7-644-20.build.core=arduino +Gen7-644-20.build.variant=gen7 + +############################################################## + +Gen7-644P-16.name=Gen7 with ATmega644P and 16 MHz +Gen7-644P-16.upload.protocol=stk500v2 +Gen7-644P-16.upload.maximum_size=63488 +Gen7-644P-16.upload.speed=115200 +Gen7-644P-16.bootloader.low_fuses=0xF7 +Gen7-644P-16.bootloader.high_fuses=0xDC +Gen7-644P-16.bootloader.extended_fuses=0xFC +Gen7-644P-16.bootloader.path=Gen7 +Gen7-644P-16.bootloader.file=bootloader-644P-16MHz.hex +Gen7-644P-16.bootloader.unlock_bits=0x3F +Gen7-644P-16.bootloader.lock_bits=0x0F +Gen7-644P-16.build.mcu=atmega644p +Gen7-644P-16.build.f_cpu=16000000L +Gen7-644P-16.build.core=arduino +Gen7-644P-16.build.variant=gen7 + +############################################################## + +Gen7-644P-20.name=Gen7 with ATmega644P and 20 MHz +Gen7-644P-20.upload.protocol=stk500v2 +Gen7-644P-20.upload.maximum_size=63488 +Gen7-644P-20.upload.speed=115200 +Gen7-644P-20.bootloader.low_fuses=0xF7 +Gen7-644P-20.bootloader.high_fuses=0xDC +Gen7-644P-20.bootloader.extended_fuses=0xFC +Gen7-644P-20.bootloader.path=Gen7 +Gen7-644P-20.bootloader.file=bootloader-644P-20MHz.hex +Gen7-644P-20.bootloader.unlock_bits=0x3F +Gen7-644P-20.bootloader.lock_bits=0x0F +Gen7-644P-20.build.mcu=atmega644p +Gen7-644P-20.build.f_cpu=20000000L +Gen7-644P-20.build.core=arduino +Gen7-644P-20.build.variant=gen7 + +############################################################## + +Gen7-1284P-16.name=Gen7 with ATmega1284P and 16 MHz +Gen7-1284P-16.upload.protocol=stk500v2 +Gen7-1284P-16.upload.maximum_size=129024 +Gen7-1284P-16.upload.speed=115200 +Gen7-1284P-16.bootloader.low_fuses=0xF7 +Gen7-1284P-16.bootloader.high_fuses=0xDC +Gen7-1284P-16.bootloader.extended_fuses=0xFC +Gen7-1284P-16.bootloader.path=Gen7 +Gen7-1284P-16.bootloader.file=bootloader-1284P-16MHz.hex +Gen7-1284P-16.bootloader.unlock_bits=0x3F +Gen7-1284P-16.bootloader.lock_bits=0x0F +Gen7-1284P-16.build.mcu=atmega1284p +Gen7-1284P-16.build.f_cpu=16000000L +Gen7-1284P-16.build.core=arduino +Gen7-1284P-16.build.variant=gen7 + +############################################################## + +Gen7-1284P-20.name=Gen7 with ATmega1284P and 20 MHz +Gen7-1284P-20.upload.protocol=stk500v2 +Gen7-1284P-20.upload.maximum_size=129024 +Gen7-1284P-20.upload.speed=115200 +Gen7-1284P-20.bootloader.low_fuses=0xF7 +Gen7-1284P-20.bootloader.high_fuses=0xDC +Gen7-1284P-20.bootloader.extended_fuses=0xFC +Gen7-1284P-20.bootloader.path=Gen7 +Gen7-1284P-20.bootloader.file=bootloader-1284P-20MHz.hex +Gen7-1284P-20.bootloader.unlock_bits=0x3F +Gen7-1284P-20.bootloader.lock_bits=0x0F +Gen7-1284P-20.build.mcu=atmega1284p +Gen7-1284P-20.build.f_cpu=20000000L +Gen7-1284P-20.build.core=arduino +Gen7-1284P-20.build.variant=gen7 + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Arduino.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Arduino.h new file mode 100644 index 000000000..a7fdf78f0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Arduino.h @@ -0,0 +1,222 @@ +#ifndef Arduino_h +#define Arduino_h + +#include +#include +#include + +#include +#include +#include + +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 +#define INPUT_PULLUP 0x2 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +// analog voltage references +#if defined(REFS2) // ATtiny of some sort +#define DEFAULT 0 +#define EXTERNAL 1 +#define INTERNAL 2 +#else +// Looks like the SFIOR register exists only on those chips without +// 1.1V internal reference voltage. This is an educated guess inspired +// by AppNote AVR097, page 5 bottom. +#if !defined(SFIOR) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 +#endif + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#if __GNUC__ <= 4 && __GNUC_MINOR__ < 5 +// this conflicts with avr-gcc's built in headers as of avr-gcc 4.5.3 +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#endif +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() ) +#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. + +#define analogInPinToBit(P) (P) + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#ifdef ARDUINO_MAIN +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 +#endif + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER4D 14 +#define TIMER5A 15 +#define TIMER5B 16 +#define TIMER5C 17 + +#ifdef __cplusplus +} // extern "C" +#endif + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#endif + +#include "pins_arduino.h" + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/CDC.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/CDC.cpp new file mode 100644 index 000000000..701e48398 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/CDC.cpp @@ -0,0 +1,239 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include + +#if defined(USBCON) +#ifdef CDC_ENABLED + +#if (RAMEND < 1000) +#define SERIAL_BUFFER_SIZE 16 +#else +#define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile int head; + volatile int tail; +}; + +ring_buffer cdc_rx_buffer = { { 0 }, 0, 0}; + +typedef struct +{ + u32 dwDTERate; + u8 bCharFormat; + u8 bParityType; + u8 bDataBits; + u8 lineState; +} LineInfo; + +static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; + +#define WEAK __attribute__ ((weak)) + +extern const CDCDescriptor _cdcInterface PROGMEM; +const CDCDescriptor _cdcInterface = +{ + D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1), + + // CDC communication interface + D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0), + D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd) + D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management (not) + D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,6), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported + D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0 + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40), + + // CDC data interface + D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0), + D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0), + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0) +}; + +int WEAK CDC_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 2; // uses 2 + return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface)); +} + +bool WEAK CDC_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (CDC_GET_LINE_CODING == r) + { + USB_SendControl(0,(void*)&_usbLineInfo,7); + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (CDC_SET_LINE_CODING == r) + { + USB_RecvControl((void*)&_usbLineInfo,7); + return true; + } + + if (CDC_SET_CONTROL_LINE_STATE == r) + { + _usbLineInfo.lineState = setup.wValueL; + + // auto-reset into the bootloader is triggered when the port, already + // open at 1200 bps, is closed. this is the signal to start the watchdog + // with a relatively long period so it can finish housekeeping tasks + // like servicing endpoints before the sketch ends + if (1200 == _usbLineInfo.dwDTERate) { + // We check DTR state to determine if host port is open (bit 0 of lineState). + if ((_usbLineInfo.lineState & 0x01) == 0) { + *(uint16_t *)0x0800 = 0x7777; + wdt_enable(WDTO_120MS); + } else { + // Most OSs do some intermediate steps when configuring ports and DTR can + // twiggle more than once before stabilizing. + // To avoid spurious resets we set the watchdog to 250ms and eventually + // cancel if DTR goes back high. + + wdt_disable(); + wdt_reset(); + *(uint16_t *)0x0800 = 0x0; + } + } + return true; + } + } + return false; +} + + +int _serialPeek = -1; +void Serial_::begin(uint16_t baud_count) +{ +} + +void Serial_::end(void) +{ +} + +void Serial_::accept(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + + // while we have room to store a byte + while (i != buffer->tail) { + int c = USB_Recv(CDC_RX); + if (c == -1) + break; // no more data + buffer->buffer[buffer->head] = c; + buffer->head = i; + + i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE; + } +} + +int Serial_::available(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + return (unsigned int)(SERIAL_BUFFER_SIZE + buffer->head - buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int Serial_::peek(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + if (buffer->head == buffer->tail) { + return -1; + } else { + return buffer->buffer[buffer->tail]; + } +} + +int Serial_::read(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + // if the head isn't ahead of the tail, we don't have any characters + if (buffer->head == buffer->tail) { + return -1; + } else { + unsigned char c = buffer->buffer[buffer->tail]; + buffer->tail = (unsigned int)(buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void Serial_::flush(void) +{ + USB_Flush(CDC_TX); +} + +size_t Serial_::write(uint8_t c) +{ + /* only try to send bytes if the high-level CDC connection itself + is open (not just the pipe) - the OS should set lineState when the port + is opened and clear lineState when the port is closed. + bytes sent before the user opens the connection or after + the connection is closed are lost - just like with a UART. */ + + // TODO - ZE - check behavior on different OSes and test what happens if an + // open connection isn't broken cleanly (cable is yanked out, host dies + // or locks up, or host virtual serial port hangs) + if (_usbLineInfo.lineState > 0) { + int r = USB_Send(CDC_TX,&c,1); + if (r > 0) { + return r; + } else { + setWriteError(); + return 0; + } + } + setWriteError(); + return 0; +} + +// This operator is a convenient way for a sketch to check whether the +// port has actually been configured and opened by the host (as opposed +// to just being connected to the host). It can be used, for example, in +// setup() before printing to ensure that an application on the host is +// actually ready to receive and display the data. +// We add a short delay before returning to fix a bug observed by Federico +// where the port is configured (lineState != 0) but not quite opened. +Serial_::operator bool() { + bool result = false; + if (_usbLineInfo.lineState > 0) + result = true; + delay(10); + return result; +} + +Serial_ Serial; + +#endif +#endif /* if defined(USBCON) */ diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Client.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Client.h new file mode 100644 index 000000000..ea134838a --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Client.h @@ -0,0 +1,26 @@ +#ifndef client_h +#define client_h +#include "Print.h" +#include "Stream.h" +#include "IPAddress.h" + +class Client : public Stream { + +public: + virtual int connect(IPAddress ip, uint16_t port) =0; + virtual int connect(const char *host, uint16_t port) =0; + virtual size_t write(uint8_t) =0; + virtual size_t write(const uint8_t *buf, size_t size) =0; + virtual int available() = 0; + virtual int read() = 0; + virtual int read(uint8_t *buf, size_t size) = 0; + virtual int peek() = 0; + virtual void flush() = 0; + virtual void stop() = 0; + virtual uint8_t connected() = 0; + virtual operator bool() = 0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HID.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HID.cpp new file mode 100644 index 000000000..ac6360844 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HID.cpp @@ -0,0 +1,520 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) +#ifdef HID_ENABLED + +//#define RAWHID_ENABLED + +// Singletons for mouse and keyboard + +Mouse_ Mouse; +Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ + +// HID report descriptor + +#define LSB(_x) ((_x) & 0xFF) +#define MSB(_x) ((_x) >> 8) + +#define RAWHID_USAGE_PAGE 0xFFC0 +#define RAWHID_USAGE 0x0C00 +#define RAWHID_TX_SIZE 64 +#define RAWHID_RX_SIZE 64 + +extern const u8 _hidReportDescriptor[] PROGMEM; +const u8 _hidReportDescriptor[] = { + + // Mouse + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54 + 0x09, 0x02, // USAGE (Mouse) + 0xa1, 0x01, // COLLECTION (Application) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x85, 0x01, // REPORT_ID (1) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x01, // USAGE_MINIMUM (Button 1) + 0x29, 0x03, // USAGE_MAXIMUM (Button 3) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x95, 0x03, // REPORT_COUNT (3) + 0x75, 0x01, // REPORT_SIZE (1) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x05, // REPORT_SIZE (5) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x30, // USAGE (X) + 0x09, 0x31, // USAGE (Y) + 0x09, 0x38, // USAGE (Wheel) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) + 0x75, 0x08, // REPORT_SIZE (8) + 0x95, 0x03, // REPORT_COUNT (3) + 0x81, 0x06, // INPUT (Data,Var,Rel) + 0xc0, // END_COLLECTION + 0xc0, // END_COLLECTION + + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, 0x02, // REPORT_ID (2) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x65, // LOGICAL_MAXIMUM (101) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0, // END_COLLECTION + +#if RAWHID_ENABLED + // RAW HID + 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 + 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), + + 0xA1, 0x01, // Collection 0x01 + 0x85, 0x03, // REPORT_ID (3) + 0x75, 0x08, // report size = 8 bits + 0x15, 0x00, // logical minimum = 0 + 0x26, 0xFF, 0x00, // logical maximum = 255 + + 0x95, 64, // report count TX + 0x09, 0x01, // usage + 0x81, 0x02, // Input (array) + + 0x95, 64, // report count RX + 0x09, 0x02, // usage + 0x91, 0x02, // Output (array) + 0xC0 // end collection +#endif +}; + +extern const HIDDescriptor _hidInterface PROGMEM; +const HIDDescriptor _hidInterface = +{ + D_INTERFACE(HID_INTERFACE,1,3,0,0), + D_HIDREPORT(sizeof(_hidReportDescriptor)), + D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01) +}; + +//================================================================================ +//================================================================================ +// Driver + +u8 _hid_protocol = 1; +u8 _hid_idle = 1; + +#define WEAK __attribute__ ((weak)) + +int WEAK HID_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 1; // uses 1 + return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface)); +} + +int WEAK HID_GetDescriptor(int i) +{ + return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor)); +} + +void WEAK HID_SendReport(u8 id, const void* data, int len) +{ + USB_Send(HID_TX, &id, 1); + USB_Send(HID_TX | TRANSFER_RELEASE,data,len); +} + +bool WEAK HID_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (HID_GET_REPORT == r) + { + //HID_GetReport(); + return true; + } + if (HID_GET_PROTOCOL == r) + { + //Send8(_hid_protocol); // TODO + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (HID_SET_PROTOCOL == r) + { + _hid_protocol = setup.wValueL; + return true; + } + + if (HID_SET_IDLE == r) + { + _hid_idle = setup.wValueL; + return true; + } + } + return false; +} + +//================================================================================ +//================================================================================ +// Mouse + +Mouse_::Mouse_(void) : _buttons(0) +{ +} + +void Mouse_::begin(void) +{ +} + +void Mouse_::end(void) +{ +} + +void Mouse_::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void Mouse_::move(signed char x, signed char y, signed char wheel) +{ + u8 m[4]; + m[0] = _buttons; + m[1] = x; + m[2] = y; + m[3] = wheel; + HID_SendReport(1,m,4); +} + +void Mouse_::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void Mouse_::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void Mouse_::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool Mouse_::isPressed(uint8_t b) +{ + if ((b & _buttons) > 0) + return true; + return false; +} + +//================================================================================ +//================================================================================ +// Keyboard + +Keyboard_::Keyboard_(void) +{ +} + +void Keyboard_::begin(void) +{ +} + +void Keyboard_::end(void) +{ +} + +void Keyboard_::sendReport(KeyReport* keys) +{ + HID_SendReport(2,keys,sizeof(KeyReport)); +} + +extern +const uint8_t _asciimap[128] PROGMEM; + +#define SHIFT 0x80 +const uint8_t _asciimap[128] = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + +uint8_t USBPutChar(uint8_t c); + +// press() adds the specified key (printing, non-printing, or modifier) +// to the persistent key report and sends the report. Because of the way +// USB HID works, the host acts like the key remains pressed until we +// call release(), releaseAll(), or otherwise clear the report and resend. +size_t Keyboard_::press(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers |= (1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + setWriteError(); + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers |= 0x02; // the left shift modifier + k &= 0x7F; + } + } + + // Add k to the key report only if it's not already present + // and if there is an empty slot. + if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && + _keyReport.keys[2] != k && _keyReport.keys[3] != k && + _keyReport.keys[4] != k && _keyReport.keys[5] != k) { + + for (i=0; i<6; i++) { + if (_keyReport.keys[i] == 0x00) { + _keyReport.keys[i] = k; + break; + } + } + if (i == 6) { + setWriteError(); + return 0; + } + } + sendReport(&_keyReport); + return 1; +} + +// release() takes the specified key out of the persistent key report and +// sends the report. This tells the OS the key is no longer pressed and that +// it shouldn't be repeated any more. +size_t Keyboard_::release(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers &= ~(1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers &= ~(0x02); // the left shift modifier + k &= 0x7F; + } + } + + // Test the key report to see if k is present. Clear it if it exists. + // Check all positions in case the key is present more than once (which it shouldn't be) + for (i=0; i<6; i++) { + if (0 != k && _keyReport.keys[i] == k) { + _keyReport.keys[i] = 0x00; + } + } + + sendReport(&_keyReport); + return 1; +} + +void Keyboard_::releaseAll(void) +{ + _keyReport.keys[0] = 0; + _keyReport.keys[1] = 0; + _keyReport.keys[2] = 0; + _keyReport.keys[3] = 0; + _keyReport.keys[4] = 0; + _keyReport.keys[5] = 0; + _keyReport.modifiers = 0; + sendReport(&_keyReport); +} + +size_t Keyboard_::write(uint8_t c) +{ + uint8_t p = press(c); // Keydown + uint8_t r = release(c); // Keyup + return (p); // just return the result of press() since release() almost always returns 1 +} + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HardwareSerial.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HardwareSerial.cpp new file mode 100644 index 000000000..794a7be89 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,519 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#include +#include +#include +#include +#include "Arduino.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +/* + * on ATmega8, the uart and its bits are not numbered, so there is no "TXC0" + * definition. + */ +#if !defined(TXC0) +#if defined(TXC) +#define TXC0 TXC +#elif defined(TXC1) +// Some devices have uart1 but no uart0 +#define TXC0 TXC1 +#else +#error TXC0 not definable in HardwareSerial.h +#endif +#endif + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which head is the index of the location +// to which to write the next incoming character and tail is the index of the +// location from which to read. +#if (RAMEND < 1000) + #define SERIAL_BUFFER_SIZE 16 +#else + #define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile unsigned int head; + volatile unsigned int tail; +}; + +#if defined(USBCON) + ring_buffer rx_buffer = { { 0 }, 0, 0}; + ring_buffer tx_buffer = { { 0 }, 0, 0}; +#endif +#if defined(UBRRH) || defined(UBRR0H) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; + ring_buffer tx_buffer = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR1H) + ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer1 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR2H) + ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer2 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR3H) + ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *buffer) +{ + int i = (unsigned int)(buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != buffer->tail) { + buffer->buffer[buffer->head] = c; + buffer->head = i; + } +} + +#if !defined(USART0_RX_vect) && defined(USART1_RX_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(USART_RX_vect) && !defined(SIG_USART0_RECV) && \ + !defined(SIG_UART0_RECV) && !defined(USART0_RX_vect) && \ + !defined(SIG_UART_RECV) + #error "Don't know what the Data Received vector is called for the first UART" +#else + void serialEvent() __attribute__((weak)); + void serialEvent() {} + #define serialEvent_implemented +#if defined(USART_RX_vect) + SIGNAL(USART_RX_vect) +#elif defined(SIG_USART0_RECV) + SIGNAL(SIG_USART0_RECV) +#elif defined(SIG_UART0_RECV) + SIGNAL(SIG_UART0_RECV) +#elif defined(USART0_RX_vect) + SIGNAL(USART0_RX_vect) +#elif defined(SIG_UART_RECV) + SIGNAL(SIG_UART_RECV) +#endif + { + #if defined(UDR0) + if (bit_is_clear(UCSR0A, UPE0)) { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } else { + unsigned char c = UDR0; + }; + #elif defined(UDR) + if (bit_is_clear(UCSRA, PE)) { + unsigned char c = UDR; + store_char(c, &rx_buffer); + } else { + unsigned char c = UDR; + }; + #else + #error UDR not defined + #endif + } +#endif +#endif + +#if defined(USART1_RX_vect) + void serialEvent1() __attribute__((weak)); + void serialEvent1() {} + #define serialEvent1_implemented + SIGNAL(USART1_RX_vect) + { + if (bit_is_clear(UCSR1A, UPE1)) { + unsigned char c = UDR1; + store_char(c, &rx_buffer1); + } else { + unsigned char c = UDR1; + }; + } +#elif defined(SIG_USART1_RECV) + #error SIG_USART1_RECV +#endif + +#if defined(USART2_RX_vect) && defined(UDR2) + void serialEvent2() __attribute__((weak)); + void serialEvent2() {} + #define serialEvent2_implemented + SIGNAL(USART2_RX_vect) + { + if (bit_is_clear(UCSR2A, UPE2)) { + unsigned char c = UDR2; + store_char(c, &rx_buffer2); + } else { + unsigned char c = UDR2; + }; + } +#elif defined(SIG_USART2_RECV) + #error SIG_USART2_RECV +#endif + +#if defined(USART3_RX_vect) && defined(UDR3) + void serialEvent3() __attribute__((weak)); + void serialEvent3() {} + #define serialEvent3_implemented + SIGNAL(USART3_RX_vect) + { + if (bit_is_clear(UCSR3A, UPE3)) { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } else { + unsigned char c = UDR3; + }; + } +#elif defined(SIG_USART3_RECV) + #error SIG_USART3_RECV +#endif + +void serialEventRun(void) +{ +#ifdef serialEvent_implemented + if (Serial.available()) serialEvent(); +#endif +#ifdef serialEvent1_implemented + if (Serial1.available()) serialEvent1(); +#endif +#ifdef serialEvent2_implemented + if (Serial2.available()) serialEvent2(); +#endif +#ifdef serialEvent3_implemented + if (Serial3.available()) serialEvent3(); +#endif +} + + +#if !defined(USART0_UDRE_vect) && defined(USART1_UDRE_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(UART0_UDRE_vect) && !defined(UART_UDRE_vect) && !defined(USART0_UDRE_vect) && !defined(USART_UDRE_vect) + #error "Don't know what the Data Register Empty vector is called for the first UART" +#else +#if defined(UART0_UDRE_vect) +ISR(UART0_UDRE_vect) +#elif defined(UART_UDRE_vect) +ISR(UART_UDRE_vect) +#elif defined(USART0_UDRE_vect) +ISR(USART0_UDRE_vect) +#elif defined(USART_UDRE_vect) +ISR(USART_UDRE_vect) +#endif +{ + if (tx_buffer.head == tx_buffer.tail) { + // Buffer empty, so disable interrupts +#if defined(UCSR0B) + cbi(UCSR0B, UDRIE0); +#else + cbi(UCSRB, UDRIE); +#endif + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer.buffer[tx_buffer.tail]; + tx_buffer.tail = (tx_buffer.tail + 1) % SERIAL_BUFFER_SIZE; + + #if defined(UDR0) + UDR0 = c; + #elif defined(UDR) + UDR = c; + #else + #error UDR not defined + #endif + } +} +#endif +#endif + +#ifdef USART1_UDRE_vect +ISR(USART1_UDRE_vect) +{ + if (tx_buffer1.head == tx_buffer1.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR1B, UDRIE1); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer1.buffer[tx_buffer1.tail]; + tx_buffer1.tail = (tx_buffer1.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR1 = c; + } +} +#endif + +#ifdef USART2_UDRE_vect +ISR(USART2_UDRE_vect) +{ + if (tx_buffer2.head == tx_buffer2.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR2B, UDRIE2); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer2.buffer[tx_buffer2.tail]; + tx_buffer2.tail = (tx_buffer2.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR2 = c; + } +} +#endif + +#ifdef USART3_UDRE_vect +ISR(USART3_UDRE_vect) +{ + if (tx_buffer3.head == tx_buffer3.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR3B, UDRIE3); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer3.buffer[tx_buffer3.tail]; + tx_buffer3.tail = (tx_buffer3.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR3 = c; + } +} +#endif + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _tx_buffer = tx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _ucsrc = ucsrc; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udrie = udrie; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(unsigned long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + transmitting = false; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::begin(unsigned long baud, byte config) +{ + uint16_t baud_setting; + uint8_t current_config; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + //set the data bits, parity, and stop bits +#if defined(__AVR_ATmega8__) + config |= 0x80; // select UCSRC register (shared with UBRRH) +#endif + *_ucsrc = config; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::end() +{ + // wait for transmission of outgoing data + while (_tx_buffer->head != _tx_buffer->tail) + ; + + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); + + // clear any received data + _rx_buffer->head = _rx_buffer->tail; +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(SERIAL_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // UDR is kept full while the buffer is not empty, so TXC triggers when EMPTY && SENT + while (transmitting && ! (*_ucsra & _BV(TXC0))); + transmitting = false; +} + +size_t HardwareSerial::write(uint8_t c) +{ + int i = (_tx_buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // If the output buffer is full, there's nothing for it other than to + // wait for the interrupt handler to empty it a bit + // ???: return 0 here instead? + while (i == _tx_buffer->tail) + ; + + _tx_buffer->buffer[_tx_buffer->head] = c; + _tx_buffer->head = i; + + sbi(*_ucsrb, _udrie); + // clear the TXC bit -- "can be cleared by writing a one to its bit location" + transmitting = true; + sbi(*_ucsra, TXC0); + + return 1; +} + +HardwareSerial::operator bool() { + return true; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UCSR0C, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0); +#elif defined(USBCON) + // do nothing - Serial object and buffers are initialized in CDC code +#else + #error no serial port defined (port 0) +#endif + +#if defined(UBRR1H) + HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UCSR2C, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); +#endif + +#endif // whole file + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HardwareSerial.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HardwareSerial.h new file mode 100644 index 000000000..a73117f56 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/HardwareSerial.h @@ -0,0 +1,115 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + ring_buffer *_tx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_ucsrc; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udrie; + uint8_t _u2x; + bool transmitting; + public: + HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x); + void begin(unsigned long); + void begin(unsigned long, uint8_t); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + inline size_t write(unsigned long n) { return write((uint8_t)n); } + inline size_t write(long n) { return write((uint8_t)n); } + inline size_t write(unsigned int n) { return write((uint8_t)n); } + inline size_t write(int n) { return write((uint8_t)n); } + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); +}; + +// Define config for Serial.begin(baud, config); +#define SERIAL_5N1 0x00 +#define SERIAL_6N1 0x02 +#define SERIAL_7N1 0x04 +#define SERIAL_8N1 0x06 +#define SERIAL_5N2 0x08 +#define SERIAL_6N2 0x0A +#define SERIAL_7N2 0x0C +#define SERIAL_8N2 0x0E +#define SERIAL_5E1 0x20 +#define SERIAL_6E1 0x22 +#define SERIAL_7E1 0x24 +#define SERIAL_8E1 0x26 +#define SERIAL_5E2 0x28 +#define SERIAL_6E2 0x2A +#define SERIAL_7E2 0x2C +#define SERIAL_8E2 0x2E +#define SERIAL_5O1 0x30 +#define SERIAL_6O1 0x32 +#define SERIAL_7O1 0x34 +#define SERIAL_8O1 0x36 +#define SERIAL_5O2 0x38 +#define SERIAL_6O2 0x3A +#define SERIAL_7O2 0x3C +#define SERIAL_8O2 0x3E + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "USBAPI.h" +// extern HardwareSerial Serial_; +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +extern void serialEventRun(void) __attribute__((weak)); + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/IPAddress.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/IPAddress.cpp new file mode 100644 index 000000000..fe3deb77a --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/IPAddress.cpp @@ -0,0 +1,56 @@ + +#include +#include + +IPAddress::IPAddress() +{ + memset(_address, 0, sizeof(_address)); +} + +IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet) +{ + _address[0] = first_octet; + _address[1] = second_octet; + _address[2] = third_octet; + _address[3] = fourth_octet; +} + +IPAddress::IPAddress(uint32_t address) +{ + memcpy(_address, &address, sizeof(_address)); +} + +IPAddress::IPAddress(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); +} + +IPAddress& IPAddress::operator=(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); + return *this; +} + +IPAddress& IPAddress::operator=(uint32_t address) +{ + memcpy(_address, (const uint8_t *)&address, sizeof(_address)); + return *this; +} + +bool IPAddress::operator==(const uint8_t* addr) +{ + return memcmp(addr, _address, sizeof(_address)) == 0; +} + +size_t IPAddress::printTo(Print& p) const +{ + size_t n = 0; + for (int i =0; i < 3; i++) + { + n += p.print(_address[i], DEC); + n += p.print('.'); + } + n += p.print(_address[3], DEC); + return n; +} + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/IPAddress.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/IPAddress.h new file mode 100644 index 000000000..2585aec0e --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/IPAddress.h @@ -0,0 +1,76 @@ +/* + * + * MIT License: + * Copyright (c) 2011 Adrian McEwen + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * adrianm@mcqn.com 1/1/2011 + */ + +#ifndef IPAddress_h +#define IPAddress_h + +#include + +// A class to make it easier to handle and pass around IP addresses + +class IPAddress : public Printable { +private: + uint8_t _address[4]; // IPv4 address + // Access the raw byte array containing the address. Because this returns a pointer + // to the internal structure rather than a copy of the address this function should only + // be used when you know that the usage of the returned uint8_t* will be transient and not + // stored. + uint8_t* raw_address() { return _address; }; + +public: + // Constructors + IPAddress(); + IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet); + IPAddress(uint32_t address); + IPAddress(const uint8_t *address); + + // Overloaded cast operator to allow IPAddress objects to be used where a pointer + // to a four-byte uint8_t array is expected + operator uint32_t() { return *((uint32_t*)_address); }; + bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); }; + bool operator==(const uint8_t* addr); + + // Overloaded index operator to allow getting and setting individual octets of the address + uint8_t operator[](int index) const { return _address[index]; }; + uint8_t& operator[](int index) { return _address[index]; }; + + // Overloaded copy operators to allow initialisation of IPAddress objects from other types + IPAddress& operator=(const uint8_t *address); + IPAddress& operator=(uint32_t address); + + virtual size_t printTo(Print& p) const; + + friend class EthernetClass; + friend class UDP; + friend class Client; + friend class Server; + friend class DhcpClass; + friend class DNSClient; +}; + +const IPAddress INADDR_NONE(0,0,0,0); + + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Platform.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Platform.h new file mode 100644 index 000000000..8b8f74277 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Platform.h @@ -0,0 +1,23 @@ + +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#include +#include +#include +#include +#include + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; + +#include "Arduino.h" + +#if defined(USBCON) + #include "USBDesc.h" + #include "USBCore.h" + #include "USBAPI.h" +#endif /* if defined(USBCON) */ + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Print.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Print.cpp new file mode 100644 index 000000000..53961ec47 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Print.cpp @@ -0,0 +1,268 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "Arduino.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +size_t Print::write(const uint8_t *buffer, size_t size) +{ + size_t n = 0; + while (size--) { + n += write(*buffer++); + } + return n; +} + +size_t Print::print(const __FlashStringHelper *ifsh) +{ + const char PROGMEM *p = (const char PROGMEM *)ifsh; + size_t n = 0; + while (1) { + unsigned char c = pgm_read_byte(p++); + if (c == 0) break; + n += write(c); + } + return n; +} + +size_t Print::print(const String &s) +{ + size_t n = 0; + for (uint16_t i = 0; i < s.length(); i++) { + n += write(s[i]); + } + return n; +} + +size_t Print::print(const char str[]) +{ + return write(str); +} + +size_t Print::print(char c) +{ + return write(c); +} + +size_t Print::print(unsigned char b, int base) +{ + return print((unsigned long) b, base); +} + +size_t Print::print(int n, int base) +{ + return print((long) n, base); +} + +size_t Print::print(unsigned int n, int base) +{ + return print((unsigned long) n, base); +} + +size_t Print::print(long n, int base) +{ + if (base == 0) { + return write(n); + } else if (base == 10) { + if (n < 0) { + int t = print('-'); + n = -n; + return printNumber(n, 10) + t; + } + return printNumber(n, 10); + } else { + return printNumber(n, base); + } +} + +size_t Print::print(unsigned long n, int base) +{ + if (base == 0) return write(n); + else return printNumber(n, base); +} + +size_t Print::print(double n, int digits) +{ + return printFloat(n, digits); +} + +size_t Print::println(const __FlashStringHelper *ifsh) +{ + size_t n = print(ifsh); + n += println(); + return n; +} + +size_t Print::print(const Printable& x) +{ + return x.printTo(*this); +} + +size_t Print::println(void) +{ + size_t n = print('\r'); + n += print('\n'); + return n; +} + +size_t Print::println(const String &s) +{ + size_t n = print(s); + n += println(); + return n; +} + +size_t Print::println(const char c[]) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(char c) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(unsigned char b, int base) +{ + size_t n = print(b, base); + n += println(); + return n; +} + +size_t Print::println(int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(double num, int digits) +{ + size_t n = print(num, digits); + n += println(); + return n; +} + +size_t Print::println(const Printable& x) +{ + size_t n = print(x); + n += println(); + return n; +} + +// Private Methods ///////////////////////////////////////////////////////////// + +size_t Print::printNumber(unsigned long n, uint8_t base) { + char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte. + char *str = &buf[sizeof(buf) - 1]; + + *str = '\0'; + + // prevent crash if called with base == 1 + if (base < 2) base = 10; + + do { + unsigned long m = n; + n /= base; + char c = m - base * n; + *--str = c < 10 ? c + '0' : c + 'A' - 10; + } while(n); + + return write(str); +} + +size_t Print::printFloat(double number, uint8_t digits) +{ + size_t n = 0; + + if (isnan(number)) return print("nan"); + if (isinf(number)) return print("inf"); + if (number > 4294967040.0) return print ("ovf"); // constant determined empirically + if (number <-4294967040.0) return print ("ovf"); // constant determined empirically + + // Handle negative numbers + if (number < 0.0) + { + n += print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) { + n += print("."); + } + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + n += print(toPrint); + remainder -= toPrint; + } + + return n; +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Print.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Print.h new file mode 100644 index 000000000..dc7615087 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Print.h @@ -0,0 +1,81 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#include "WString.h" +#include "Printable.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 + +class Print +{ + private: + int write_error; + size_t printNumber(unsigned long, uint8_t); + size_t printFloat(double, uint8_t); + protected: + void setWriteError(int err = 1) { write_error = err; } + public: + Print() : write_error(0) {} + + int getWriteError() { return write_error; } + void clearWriteError() { setWriteError(0); } + + virtual size_t write(uint8_t) = 0; + size_t write(const char *str) { + if (str == NULL) return 0; + return write((const uint8_t *)str, strlen(str)); + } + virtual size_t write(const uint8_t *buffer, size_t size); + + size_t print(const __FlashStringHelper *); + size_t print(const String &); + size_t print(const char[]); + size_t print(char); + size_t print(unsigned char, int = DEC); + size_t print(int, int = DEC); + size_t print(unsigned int, int = DEC); + size_t print(long, int = DEC); + size_t print(unsigned long, int = DEC); + size_t print(double, int = 2); + size_t print(const Printable&); + + size_t println(const __FlashStringHelper *); + size_t println(const String &s); + size_t println(const char[]); + size_t println(char); + size_t println(unsigned char, int = DEC); + size_t println(int, int = DEC); + size_t println(unsigned int, int = DEC); + size_t println(long, int = DEC); + size_t println(unsigned long, int = DEC); + size_t println(double, int = 2); + size_t println(const Printable&); + size_t println(void); +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Printable.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Printable.h new file mode 100644 index 000000000..d03c9af62 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Printable.h @@ -0,0 +1,40 @@ +/* + Printable.h - Interface class that allows printing of complex types + Copyright (c) 2011 Adrian McEwen. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Printable_h +#define Printable_h + +#include + +class Print; + +/** The Printable class provides a way for new classes to allow themselves to be printed. + By deriving from Printable and implementing the printTo method, it will then be possible + for users to print out instances of this class by passing them into the usual + Print::print and Print::println methods. +*/ + +class Printable +{ + public: + virtual size_t printTo(Print& p) const = 0; +}; + +#endif + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Server.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Server.h new file mode 100644 index 000000000..9674c7626 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Server.h @@ -0,0 +1,9 @@ +#ifndef server_h +#define server_h + +class Server : public Print { +public: + virtual void begin() =0; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Stream.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Stream.cpp new file mode 100644 index 000000000..aafb7fcf9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Stream.cpp @@ -0,0 +1,270 @@ +/* + Stream.cpp - adds parsing methods to Stream class + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Created July 2011 + parsing functions based on TextFinder library by Michael Margolis + */ + +#include "Arduino.h" +#include "Stream.h" + +#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait +#define NO_SKIP_CHAR 1 // a magic char not found in a valid ASCII numeric field + +// private method to read stream with timeout +int Stream::timedRead() +{ + int c; + _startMillis = millis(); + do { + c = read(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// private method to peek stream with timeout +int Stream::timedPeek() +{ + int c; + _startMillis = millis(); + do { + c = peek(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// returns peek of the next digit in the stream or -1 if timeout +// discards non-numeric characters +int Stream::peekNextDigit() +{ + int c; + while (1) { + c = timedPeek(); + if (c < 0) return c; // timeout + if (c == '-') return c; + if (c >= '0' && c <= '9') return c; + read(); // discard non-numeric + } +} + +// Public Methods +////////////////////////////////////////////////////////////// + +void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait +{ + _timeout = timeout; +} + + // find returns true if the target string is found +bool Stream::find(char *target) +{ + return findUntil(target, NULL); +} + +// reads data from the stream until the target string of given length is found +// returns true if target string is found, false if timed out +bool Stream::find(char *target, size_t length) +{ + return findUntil(target, length, NULL, 0); +} + +// as find but search ends if the terminator string is found +bool Stream::findUntil(char *target, char *terminator) +{ + return findUntil(target, strlen(target), terminator, strlen(terminator)); +} + +// reads data from the stream until the target string of the given length is found +// search terminated if the terminator string is found +// returns true if target string is found, false if terminated or timed out +bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen) +{ + size_t index = 0; // maximum target string length is 64k bytes! + size_t termIndex = 0; + int c; + + if( *target == 0) + return true; // return true if target is a null string + while( (c = timedRead()) > 0){ + + if(c != target[index]) + index = 0; // reset index if any char does not match + + if( c == target[index]){ + //////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1); + if(++index >= targetLen){ // return true if all chars in the target match + return true; + } + } + + if(termLen > 0 && c == terminator[termIndex]){ + if(++termIndex >= termLen) + return false; // return false if terminate string found before target string + } + else + termIndex = 0; + } + return false; +} + + +// returns the first valid (long) integer value from the current position. +// initial characters that are not digits (or the minus sign) are skipped +// function is terminated by the first character that is not a digit. +long Stream::parseInt() +{ + return parseInt(NO_SKIP_CHAR); // terminate on first non-digit character (or timeout) +} + +// as above but a given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +long Stream::parseInt(char skipChar) +{ + boolean isNegative = false; + long value = 0; + int c; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore this charactor + else if(c == '-') + isNegative = true; + else if(c >= '0' && c <= '9') // is c a digit? + value = value * 10 + c - '0'; + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == skipChar ); + + if(isNegative) + value = -value; + return value; +} + + +// as parseInt but returns a floating point value +float Stream::parseFloat() +{ + return parseFloat(NO_SKIP_CHAR); +} + +// as above but the given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +float Stream::parseFloat(char skipChar){ + boolean isNegative = false; + boolean isFraction = false; + long value = 0; + char c; + float fraction = 1.0; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore + else if(c == '-') + isNegative = true; + else if (c == '.') + isFraction = true; + else if(c >= '0' && c <= '9') { // is c a digit? + value = value * 10 + c - '0'; + if(isFraction) + fraction *= 0.1; + } + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == '.' || c == skipChar ); + + if(isNegative) + value = -value; + if(isFraction) + return value * fraction; + else + return value; +} + +// read characters from stream into buffer +// terminates if length characters have been read, or timeout (see setTimeout) +// returns the number of characters placed in the buffer +// the buffer is NOT null terminated. +// +size_t Stream::readBytes(char *buffer, size_t length) +{ + size_t count = 0; + while (count < length) { + int c = timedRead(); + if (c < 0) break; + *buffer++ = (char)c; + count++; + } + return count; +} + + +// as readBytes with terminator character +// terminates if length characters have been read, timeout, or if the terminator character detected +// returns the number of characters placed in the buffer (0 means no valid data found) + +size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) +{ + if (length < 1) return 0; + size_t index = 0; + while (index < length) { + int c = timedRead(); + if (c < 0 || c == terminator) break; + *buffer++ = (char)c; + index++; + } + return index; // return number of characters, not including null terminator +} + +String Stream::readString() +{ + String ret; + int c = timedRead(); + while (c >= 0) + { + ret += (char)c; + c = timedRead(); + } + return ret; +} + +String Stream::readStringUntil(char terminator) +{ + String ret; + int c = timedRead(); + while (c >= 0 && c != terminator) + { + ret += (char)c; + c = timedRead(); + } + return ret; +} + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Stream.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Stream.h new file mode 100644 index 000000000..58bbf752f --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Stream.h @@ -0,0 +1,96 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + parsing functions based on TextFinder library by Michael Margolis +*/ + +#ifndef Stream_h +#define Stream_h + +#include +#include "Print.h" + +// compatability macros for testing +/* +#define getInt() parseInt() +#define getInt(skipChar) parseInt(skipchar) +#define getFloat() parseFloat() +#define getFloat(skipChar) parseFloat(skipChar) +#define getString( pre_string, post_string, buffer, length) +readBytesBetween( pre_string, terminator, buffer, length) +*/ + +class Stream : public Print +{ + private: + unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read + unsigned long _startMillis; // used for timeout measurement + int timedRead(); // private method to read stream with timeout + int timedPeek(); // private method to peek stream with timeout + int peekNextDigit(); // returns the next numeric digit in the stream or -1 if timeout + + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; + + Stream() {_timeout=1000;} + +// parsing methods + + void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second + + bool find(char *target); // reads data from the stream until the target string is found + // returns true if target string is found, false if timed out (see setTimeout) + + bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found + // returns true if target string is found, false if timed out + + bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found + + bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found + + + long parseInt(); // returns the first valid (long) integer value from the current position. + // initial characters that are not digits (or the minus sign) are skipped + // integer is terminated by the first character that is not a digit. + + float parseFloat(); // float version of parseInt + + size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer + // terminates if length characters have been read or timeout (see setTimeout) + // returns the number of characters placed in the buffer (0 means no valid data found) + + size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character + // terminates if length characters have been read, timeout, or if the terminator character detected + // returns the number of characters placed in the buffer (0 means no valid data found) + + // Arduino String functions to be added here + String readString(); + String readStringUntil(char terminator); + + protected: + long parseInt(char skipChar); // as above but the given skipChar is ignored + // as above but the given skipChar is ignored + // this allows format characters (typically commas) in values to be ignored + + float parseFloat(char skipChar); // as above but the given skipChar is ignored +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Tone.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Tone.cpp new file mode 100644 index 000000000..964f2ecae --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Tone.cpp @@ -0,0 +1,617 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY +*************************************************/ + +#include +#include +#include "Arduino.h" +#include "pins_arduino.h" + +#if defined(TCCR2) // ATmega8, ATmega128 or similar +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if defined(TIMSK0) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +// Don't distinguish by chip type, but by register presence +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#elif defined(__AVR_ATmega32U4__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER3 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#ifdef USE_TIMER0 +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER1 +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER2 +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER3 +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER4 +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER5 +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBAPI.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBAPI.h new file mode 100644 index 000000000..eb2e5937d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBAPI.h @@ -0,0 +1,196 @@ + + +#ifndef __USBAPI__ +#define __USBAPI__ + +#if defined(USBCON) + +//================================================================================ +//================================================================================ +// USB + +class USBDevice_ +{ +public: + USBDevice_(); + bool configured(); + + void attach(); + void detach(); // Serial port goes down too... + void poll(); +}; +extern USBDevice_ USBDevice; + +//================================================================================ +//================================================================================ +// Serial over CDC (Serial1 is the physical port) + +class Serial_ : public Stream +{ +private: + ring_buffer *_cdc_rx_buffer; +public: + void begin(uint16_t baud_count); + void end(void); + + virtual int available(void); + virtual void accept(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); +}; +extern Serial_ Serial; + +//================================================================================ +//================================================================================ +// Mouse + +#define MOUSE_LEFT 1 +#define MOUSE_RIGHT 2 +#define MOUSE_MIDDLE 4 +#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) + +class Mouse_ +{ +private: + uint8_t _buttons; + void buttons(uint8_t b); +public: + Mouse_(void); + void begin(void); + void end(void); + void click(uint8_t b = MOUSE_LEFT); + void move(signed char x, signed char y, signed char wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default +}; +extern Mouse_ Mouse; + +//================================================================================ +//================================================================================ +// Keyboard + +#define KEY_LEFT_CTRL 0x80 +#define KEY_LEFT_SHIFT 0x81 +#define KEY_LEFT_ALT 0x82 +#define KEY_LEFT_GUI 0x83 +#define KEY_RIGHT_CTRL 0x84 +#define KEY_RIGHT_SHIFT 0x85 +#define KEY_RIGHT_ALT 0x86 +#define KEY_RIGHT_GUI 0x87 + +#define KEY_UP_ARROW 0xDA +#define KEY_DOWN_ARROW 0xD9 +#define KEY_LEFT_ARROW 0xD8 +#define KEY_RIGHT_ARROW 0xD7 +#define KEY_BACKSPACE 0xB2 +#define KEY_TAB 0xB3 +#define KEY_RETURN 0xB0 +#define KEY_ESC 0xB1 +#define KEY_INSERT 0xD1 +#define KEY_DELETE 0xD4 +#define KEY_PAGE_UP 0xD3 +#define KEY_PAGE_DOWN 0xD6 +#define KEY_HOME 0xD2 +#define KEY_END 0xD5 +#define KEY_CAPS_LOCK 0xC1 +#define KEY_F1 0xC2 +#define KEY_F2 0xC3 +#define KEY_F3 0xC4 +#define KEY_F4 0xC5 +#define KEY_F5 0xC6 +#define KEY_F6 0xC7 +#define KEY_F7 0xC8 +#define KEY_F8 0xC9 +#define KEY_F9 0xCA +#define KEY_F10 0xCB +#define KEY_F11 0xCC +#define KEY_F12 0xCD + +// Low level key report: up to 6 keys and shift, ctrl etc at once +typedef struct +{ + uint8_t modifiers; + uint8_t reserved; + uint8_t keys[6]; +} KeyReport; + +class Keyboard_ : public Print +{ +private: + KeyReport _keyReport; + void sendReport(KeyReport* keys); +public: + Keyboard_(void); + void begin(void); + void end(void); + virtual size_t write(uint8_t k); + virtual size_t press(uint8_t k); + virtual size_t release(uint8_t k); + virtual void releaseAll(void); +}; +extern Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ +// Low level API + +typedef struct +{ + uint8_t bmRequestType; + uint8_t bRequest; + uint8_t wValueL; + uint8_t wValueH; + uint16_t wIndex; + uint16_t wLength; +} Setup; + +//================================================================================ +//================================================================================ +// HID 'Driver' + +int HID_GetInterface(uint8_t* interfaceNum); +int HID_GetDescriptor(int i); +bool HID_Setup(Setup& setup); +void HID_SendReport(uint8_t id, const void* data, int len); + +//================================================================================ +//================================================================================ +// MSC 'Driver' + +int MSC_GetInterface(uint8_t* interfaceNum); +int MSC_GetDescriptor(int i); +bool MSC_Setup(Setup& setup); +bool MSC_Data(uint8_t rx,uint8_t tx); + +//================================================================================ +//================================================================================ +// CSC 'Driver' + +int CDC_GetInterface(uint8_t* interfaceNum); +int CDC_GetDescriptor(int i); +bool CDC_Setup(Setup& setup); + +//================================================================================ +//================================================================================ + +#define TRANSFER_PGM 0x80 +#define TRANSFER_RELEASE 0x40 +#define TRANSFER_ZERO 0x20 + +int USB_SendControl(uint8_t flags, const void* d, int len); +int USB_RecvControl(void* d, int len); + +uint8_t USB_Available(uint8_t ep); +int USB_Send(uint8_t ep, const void* data, int len); // blocking +int USB_Recv(uint8_t ep, void* data, int len); // non-blocking +int USB_Recv(uint8_t ep); // non-blocking +void USB_Flush(uint8_t ep); + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBCore.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBCore.cpp new file mode 100644 index 000000000..d3e017065 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBCore.cpp @@ -0,0 +1,684 @@ + + +/* Copyright (c) 2010, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) + +#define EP_TYPE_CONTROL 0x00 +#define EP_TYPE_BULK_IN 0x81 +#define EP_TYPE_BULK_OUT 0x80 +#define EP_TYPE_INTERRUPT_IN 0xC1 +#define EP_TYPE_INTERRUPT_OUT 0xC0 +#define EP_TYPE_ISOCHRONOUS_IN 0x41 +#define EP_TYPE_ISOCHRONOUS_OUT 0x40 + +/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ +#define TX_RX_LED_PULSE_MS 100 +volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ +volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ + +//================================================================== +//================================================================== + +extern const u16 STRING_LANGUAGE[] PROGMEM; +extern const u16 STRING_IPRODUCT[] PROGMEM; +extern const u16 STRING_IMANUFACTURER[] PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM; + +const u16 STRING_LANGUAGE[2] = { + (3<<8) | (2+2), + 0x0409 // English +}; + +const u16 STRING_IPRODUCT[17] = { + (3<<8) | (2+2*16), +#if USB_PID == 0x8036 + 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o' +#elif USB_PID == 0x8037 + 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' ' +#elif USB_PID == 0x803C + 'A','r','d','u','i','n','o',' ','E','s','p','l','o','r','a',' ' +#elif USB_PID == 0x9208 + 'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' ' +#else + 'U','S','B',' ','I','O',' ','B','o','a','r','d',' ',' ',' ',' ' +#endif +}; + +const u16 STRING_IMANUFACTURER[12] = { + (3<<8) | (2+2*11), +#if USB_VID == 0x2341 + 'A','r','d','u','i','n','o',' ','L','L','C' +#elif USB_VID == 0x1b4f + 'S','p','a','r','k','F','u','n',' ',' ',' ' +#else + 'U','n','k','n','o','w','n',' ',' ',' ',' ' +#endif +}; + +#ifdef CDC_ENABLED +#define DEVICE_CLASS 0x02 +#else +#define DEVICE_CLASS 0x00 +#endif + +// DEVICE DESCRIPTOR +const DeviceDescriptor USB_DeviceDescriptor = + D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +const DeviceDescriptor USB_DeviceDescriptorA = + D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +//================================================================== +//================================================================== + +volatile u8 _usbConfiguration = 0; + +static inline void WaitIN(void) +{ + while (!(UEINTX & (1< len) + n = len; + len -= n; + { + LockEP lock(ep); + if (ep & TRANSFER_ZERO) + { + while (n--) + Send8(0); + } + else if (ep & TRANSFER_PGM) + { + while (n--) + Send8(pgm_read_byte(data++)); + } + else + { + while (n--) + Send8(*data++); + } + if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer + ReleaseTX(); + } + } + TXLED1; // light the TX LED + TxLEDPulse = TX_RX_LED_PULSE_MS; + return r; +} + +extern const u8 _initEndpoints[] PROGMEM; +const u8 _initEndpoints[] = +{ + 0, + +#ifdef CDC_ENABLED + EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM + EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT + EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED + EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT +#endif +}; + +#define EP_SINGLE_64 0x32 // EP0 +#define EP_DOUBLE_64 0x36 // Other endpoints + +static +void InitEP(u8 index, u8 type, u8 size) +{ + UENUM = index; + UECONX = 1; + UECFG0X = type; + UECFG1X = size; +} + +static +void InitEndpoints() +{ + for (u8 i = 1; i < sizeof(_initEndpoints); i++) + { + UENUM = i; + UECONX = 1; + UECFG0X = pgm_read_byte(_initEndpoints+i); + UECFG1X = EP_DOUBLE_64; + } + UERST = 0x7E; // And reset them + UERST = 0; +} + +// Handle CLASS_INTERFACE requests +static +bool ClassInterfaceRequest(Setup& setup) +{ + u8 i = setup.wIndex; + +#ifdef CDC_ENABLED + if (CDC_ACM_INTERFACE == i) + return CDC_Setup(setup); +#endif + +#ifdef HID_ENABLED + if (HID_INTERFACE == i) + return HID_Setup(setup); +#endif + return false; +} + +int _cmark; +int _cend; +void InitControl(int end) +{ + SetEP(0); + _cmark = 0; + _cend = end; +} + +static +bool SendControl(u8 d) +{ + if (_cmark < _cend) + { + if (!WaitForINOrOUT()) + return false; + Send8(d); + if (!((_cmark + 1) & 0x3F)) + ClearIN(); // Fifo is full, release this packet + } + _cmark++; + return true; +}; + +// Clipped by _cmark/_cend +int USB_SendControl(u8 flags, const void* d, int len) +{ + int sent = len; + const u8* data = (const u8*)d; + bool pgm = flags & TRANSFER_PGM; + while (len--) + { + u8 c = pgm ? pgm_read_byte(data++) : *data++; + if (!SendControl(c)) + return -1; + } + return sent; +} + +// Does not timeout or cross fifo boundaries +// Will only work for transfers <= 64 bytes +// TODO +int USB_RecvControl(void* d, int len) +{ + WaitOUT(); + Recv((u8*)d,len); + ClearOUT(); + return len; +} + +int SendInterfaces() +{ + int total = 0; + u8 interfaces = 0; + +#ifdef CDC_ENABLED + total = CDC_GetInterface(&interfaces); +#endif + +#ifdef HID_ENABLED + total += HID_GetInterface(&interfaces); +#endif + + return interfaces; +} + +// Construct a dynamic configuration descriptor +// This really needs dynamic endpoint allocation etc +// TODO +static +bool SendConfiguration(int maxlen) +{ + // Count and measure interfaces + InitControl(0); + int interfaces = SendInterfaces(); + ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); + + // Now send them + InitControl(maxlen); + USB_SendControl(0,&config,sizeof(ConfigDescriptor)); + SendInterfaces(); + return true; +} + +u8 _cdcComposite = 0; + +static +bool SendDescriptor(Setup& setup) +{ + u8 t = setup.wValueH; + if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) + return SendConfiguration(setup.wLength); + + InitControl(setup.wLength); +#ifdef HID_ENABLED + if (HID_REPORT_DESCRIPTOR_TYPE == t) + return HID_GetDescriptor(t); +#endif + + u8 desc_length = 0; + const u8* desc_addr = 0; + if (USB_DEVICE_DESCRIPTOR_TYPE == t) + { + if (setup.wLength == 8) + _cdcComposite = 1; + desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor; + } + else if (USB_STRING_DESCRIPTOR_TYPE == t) + { + if (setup.wValueL == 0) + desc_addr = (const u8*)&STRING_LANGUAGE; + else if (setup.wValueL == IPRODUCT) + desc_addr = (const u8*)&STRING_IPRODUCT; + else if (setup.wValueL == IMANUFACTURER) + desc_addr = (const u8*)&STRING_IMANUFACTURER; + else + return false; + } + + if (desc_addr == 0) + return false; + if (desc_length == 0) + desc_length = pgm_read_byte(desc_addr); + + USB_SendControl(TRANSFER_PGM,desc_addr,desc_length); + return true; +} + +// Endpoint 0 interrupt +ISR(USB_COM_vect) +{ + SetEP(0); + if (!ReceivedSetupInt()) + return; + + Setup setup; + Recv((u8*)&setup,8); + ClearSetupInt(); + + u8 requestType = setup.bmRequestType; + if (requestType & REQUEST_DEVICETOHOST) + WaitIN(); + else + ClearIN(); + + bool ok = true; + if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) + { + // Standard Requests + u8 r = setup.bRequest; + if (GET_STATUS == r) + { + Send8(0); // TODO + Send8(0); + } + else if (CLEAR_FEATURE == r) + { + } + else if (SET_FEATURE == r) + { + } + else if (SET_ADDRESS == r) + { + WaitIN(); + UDADDR = setup.wValueL | (1<> 8) & 0xFF) + +#define CDC_V1_10 0x0110 +#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 + +#define CDC_CALL_MANAGEMENT 0x01 +#define CDC_ABSTRACT_CONTROL_MODEL 0x02 +#define CDC_HEADER 0x00 +#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 +#define CDC_UNION 0x06 +#define CDC_CS_INTERFACE 0x24 +#define CDC_CS_ENDPOINT 0x25 +#define CDC_DATA_INTERFACE_CLASS 0x0A + +#define MSC_SUBCLASS_SCSI 0x06 +#define MSC_PROTOCOL_BULK_ONLY 0x50 + +#define HID_HID_DESCRIPTOR_TYPE 0x21 +#define HID_REPORT_DESCRIPTOR_TYPE 0x22 +#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 + + +// Device +typedef struct { + u8 len; // 18 + u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE + u16 usbVersion; // 0x200 + u8 deviceClass; + u8 deviceSubClass; + u8 deviceProtocol; + u8 packetSize0; // Packet 0 + u16 idVendor; + u16 idProduct; + u16 deviceVersion; // 0x100 + u8 iManufacturer; + u8 iProduct; + u8 iSerialNumber; + u8 bNumConfigurations; +} DeviceDescriptor; + +// Config +typedef struct { + u8 len; // 9 + u8 dtype; // 2 + u16 clen; // total length + u8 numInterfaces; + u8 config; + u8 iconfig; + u8 attributes; + u8 maxPower; +} ConfigDescriptor; + +// String + +// Interface +typedef struct +{ + u8 len; // 9 + u8 dtype; // 4 + u8 number; + u8 alternate; + u8 numEndpoints; + u8 interfaceClass; + u8 interfaceSubClass; + u8 protocol; + u8 iInterface; +} InterfaceDescriptor; + +// Endpoint +typedef struct +{ + u8 len; // 7 + u8 dtype; // 5 + u8 addr; + u8 attr; + u16 packetSize; + u8 interval; +} EndpointDescriptor; + +// Interface Association Descriptor +// Used to bind 2 interfaces together in CDC compostite device +typedef struct +{ + u8 len; // 8 + u8 dtype; // 11 + u8 firstInterface; + u8 interfaceCount; + u8 functionClass; + u8 funtionSubClass; + u8 functionProtocol; + u8 iInterface; +} IADDescriptor; + +// CDC CS interface descriptor +typedef struct +{ + u8 len; // 5 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; + u8 d1; +} CDCCSInterfaceDescriptor; + +typedef struct +{ + u8 len; // 4 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; +} CDCCSInterfaceDescriptor4; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; + u8 bDataInterface; +} CMFunctionalDescriptor; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; +} ACMFunctionalDescriptor; + +typedef struct +{ + // IAD + IADDescriptor iad; // Only needed on compound device + + // Control + InterfaceDescriptor cif; // + CDCCSInterfaceDescriptor header; + CMFunctionalDescriptor callManagement; // Call Management + ACMFunctionalDescriptor controlManagement; // ACM + CDCCSInterfaceDescriptor functionalDescriptor; // CDC_UNION + EndpointDescriptor cifin; + + // Data + InterfaceDescriptor dif; + EndpointDescriptor in; + EndpointDescriptor out; +} CDCDescriptor; + +typedef struct +{ + InterfaceDescriptor msc; + EndpointDescriptor in; + EndpointDescriptor out; +} MSCDescriptor; + +typedef struct +{ + u8 len; // 9 + u8 dtype; // 0x21 + u8 addr; + u8 versionL; // 0x101 + u8 versionH; // 0x101 + u8 country; + u8 desctype; // 0x22 report + u8 descLenL; + u8 descLenH; +} HIDDescDescriptor; + +typedef struct +{ + InterfaceDescriptor hid; + HIDDescDescriptor desc; + EndpointDescriptor in; +} HIDDescriptor; + + +#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ + { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } + +#define D_CONFIG(_totalLength,_interfaces) \ + { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) } + +#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ + { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } + +#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ + { 7, 5, _addr,_attr,_packetSize, _interval } + +#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ + { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } + +#define D_HIDREPORT(_descriptorLength) \ + { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } + +#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } +#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 } + + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBDesc.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBDesc.h new file mode 100644 index 000000000..900713e0f --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/USBDesc.h @@ -0,0 +1,63 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#define CDC_ENABLED +#define HID_ENABLED + + +#ifdef CDC_ENABLED +#define CDC_INTERFACE_COUNT 2 +#define CDC_ENPOINT_COUNT 3 +#else +#define CDC_INTERFACE_COUNT 0 +#define CDC_ENPOINT_COUNT 0 +#endif + +#ifdef HID_ENABLED +#define HID_INTERFACE_COUNT 1 +#define HID_ENPOINT_COUNT 1 +#else +#define HID_INTERFACE_COUNT 0 +#define HID_ENPOINT_COUNT 0 +#endif + +#define CDC_ACM_INTERFACE 0 // CDC ACM +#define CDC_DATA_INTERFACE 1 // CDC Data +#define CDC_FIRST_ENDPOINT 1 +#define CDC_ENDPOINT_ACM (CDC_FIRST_ENDPOINT) // CDC First +#define CDC_ENDPOINT_OUT (CDC_FIRST_ENDPOINT+1) +#define CDC_ENDPOINT_IN (CDC_FIRST_ENDPOINT+2) + +#define HID_INTERFACE (CDC_ACM_INTERFACE + CDC_INTERFACE_COUNT) // HID Interface +#define HID_FIRST_ENDPOINT (CDC_FIRST_ENDPOINT + CDC_ENPOINT_COUNT) +#define HID_ENDPOINT_INT (HID_FIRST_ENDPOINT) + +#define INTERFACE_COUNT (MSC_INTERFACE + MSC_INTERFACE_COUNT) + +#ifdef CDC_ENABLED +#define CDC_RX CDC_ENDPOINT_OUT +#define CDC_TX CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED +#define HID_TX HID_ENDPOINT_INT +#endif + +#define IMANUFACTURER 1 +#define IPRODUCT 2 + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Udp.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Udp.h new file mode 100644 index 000000000..dc5644b9d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/Udp.h @@ -0,0 +1,88 @@ +/* + * Udp.cpp: Library to send/receive UDP packets. + * + * NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these) + * 1) UDP does not guarantee the order in which assembled UDP packets are received. This + * might not happen often in practice, but in larger network topologies, a UDP + * packet can be received out of sequence. + * 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being + * aware of it. Again, this may not be a concern in practice on small local networks. + * For more information, see http://www.cafeaulait.org/course/week12/35.html + * + * MIT License: + * Copyright (c) 2008 Bjoern Hartmann + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * bjoern@cs.stanford.edu 12/30/2008 + */ + +#ifndef udp_h +#define udp_h + +#include +#include + +class UDP : public Stream { + +public: + virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use + virtual void stop() =0; // Finish with the UDP socket + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) =0; + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port) =0; + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() =0; + // Write a single byte into the packet + virtual size_t write(uint8_t) =0; + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size) =0; + + // Start processing the next available incoming packet + // Returns the size of the packet in bytes, or 0 if no packets are available + virtual int parsePacket() =0; + // Number of bytes remaining in the current packet + virtual int available() =0; + // Read a single byte from the current packet + virtual int read() =0; + // Read up to len bytes from the current packet and place them into buffer + // Returns the number of bytes read, or 0 if none are available + virtual int read(unsigned char* buffer, size_t len) =0; + // Read up to len characters from the current packet and place them into buffer + // Returns the number of characters read, or 0 if none are available + virtual int read(char* buffer, size_t len) =0; + // Return the next byte from the current packet without moving on to the next byte + virtual int peek() =0; + virtual void flush() =0; // Finish reading the current packet + + // Return the IP address of the host who sent the current incoming packet + virtual IPAddress remoteIP() =0; + // Return the port of the host who sent the current incoming packet + virtual uint16_t remotePort() =0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WCharacter.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WInterrupts.c b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WInterrupts.c new file mode 100644 index 000000000..62efc9cad --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WInterrupts.c @@ -0,0 +1,322 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include + +#include "wiring_private.h" + +static volatile voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(__AVR_ATmega32U4__) + // I hate doing this, but the register assignment differs between the 1280/2560 + // and the 32U4. Since avrlib defines registers PCMSK1 and PCMSK2 that aren't + // even present on the 32U4 this is the only way to distinguish between them. + case 0: + EICRA = (EICRA & ~((1<= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WString.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WString.cpp new file mode 100644 index 000000000..c6839fc0d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WString.cpp @@ -0,0 +1,645 @@ +/* + WString.cpp - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "WString.h" + + +/*********************************************/ +/* Constructors */ +/*********************************************/ + +String::String(const char *cstr) +{ + init(); + if (cstr) copy(cstr, strlen(cstr)); +} + +String::String(const String &value) +{ + init(); + *this = value; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String::String(String &&rval) +{ + init(); + move(rval); +} +String::String(StringSumHelper &&rval) +{ + init(); + move(rval); +} +#endif + +String::String(char c) +{ + init(); + char buf[2]; + buf[0] = c; + buf[1] = 0; + *this = buf; +} + +String::String(unsigned char value, unsigned char base) +{ + init(); + char buf[9]; + utoa(value, buf, base); + *this = buf; +} + +String::String(int value, unsigned char base) +{ + init(); + char buf[18]; + itoa(value, buf, base); + *this = buf; +} + +String::String(unsigned int value, unsigned char base) +{ + init(); + char buf[17]; + utoa(value, buf, base); + *this = buf; +} + +String::String(long value, unsigned char base) +{ + init(); + char buf[34]; + ltoa(value, buf, base); + *this = buf; +} + +String::String(unsigned long value, unsigned char base) +{ + init(); + char buf[33]; + ultoa(value, buf, base); + *this = buf; +} + +String::~String() +{ + free(buffer); +} + +/*********************************************/ +/* Memory Management */ +/*********************************************/ + +inline void String::init(void) +{ + buffer = NULL; + capacity = 0; + len = 0; + flags = 0; +} + +void String::invalidate(void) +{ + if (buffer) free(buffer); + buffer = NULL; + capacity = len = 0; +} + +unsigned char String::reserve(unsigned int size) +{ + if (buffer && capacity >= size) return 1; + if (changeBuffer(size)) { + if (len == 0) buffer[0] = 0; + return 1; + } + return 0; +} + +unsigned char String::changeBuffer(unsigned int maxStrLen) +{ + char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); + if (newbuffer) { + buffer = newbuffer; + capacity = maxStrLen; + return 1; + } + return 0; +} + +/*********************************************/ +/* Copy and Move */ +/*********************************************/ + +String & String::copy(const char *cstr, unsigned int length) +{ + if (!reserve(length)) { + invalidate(); + return *this; + } + len = length; + strcpy(buffer, cstr); + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +void String::move(String &rhs) +{ + if (buffer) { + if (capacity >= rhs.len) { + strcpy(buffer, rhs.buffer); + len = rhs.len; + rhs.len = 0; + return; + } else { + free(buffer); + } + } + buffer = rhs.buffer; + capacity = rhs.capacity; + len = rhs.len; + rhs.buffer = NULL; + rhs.capacity = 0; + rhs.len = 0; +} +#endif + +String & String::operator = (const String &rhs) +{ + if (this == &rhs) return *this; + + if (rhs.buffer) copy(rhs.buffer, rhs.len); + else invalidate(); + + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String & String::operator = (String &&rval) +{ + if (this != &rval) move(rval); + return *this; +} + +String & String::operator = (StringSumHelper &&rval) +{ + if (this != &rval) move(rval); + return *this; +} +#endif + +String & String::operator = (const char *cstr) +{ + if (cstr) copy(cstr, strlen(cstr)); + else invalidate(); + + return *this; +} + +/*********************************************/ +/* concat */ +/*********************************************/ + +unsigned char String::concat(const String &s) +{ + return concat(s.buffer, s.len); +} + +unsigned char String::concat(const char *cstr, unsigned int length) +{ + unsigned int newlen = len + length; + if (!cstr) return 0; + if (length == 0) return 1; + if (!reserve(newlen)) return 0; + strcpy(buffer + len, cstr); + len = newlen; + return 1; +} + +unsigned char String::concat(const char *cstr) +{ + if (!cstr) return 0; + return concat(cstr, strlen(cstr)); +} + +unsigned char String::concat(char c) +{ + char buf[2]; + buf[0] = c; + buf[1] = 0; + return concat(buf, 1); +} + +unsigned char String::concat(unsigned char num) +{ + char buf[4]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(int num) +{ + char buf[7]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned int num) +{ + char buf[6]; + utoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(long num) +{ + char buf[12]; + ltoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned long num) +{ + char buf[11]; + ultoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +/*********************************************/ +/* Concatenate */ +/*********************************************/ + +StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(rhs.buffer, rhs.len)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr) +{ + StringSumHelper &a = const_cast(lhs); + if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, char c) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(c)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +/*********************************************/ +/* Comparison */ +/*********************************************/ + +int String::compareTo(const String &s) const +{ + if (!buffer || !s.buffer) { + if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer; + if (buffer && len > 0) return *(unsigned char *)buffer; + return 0; + } + return strcmp(buffer, s.buffer); +} + +unsigned char String::equals(const String &s2) const +{ + return (len == s2.len && compareTo(s2) == 0); +} + +unsigned char String::equals(const char *cstr) const +{ + if (len == 0) return (cstr == NULL || *cstr == 0); + if (cstr == NULL) return buffer[0] == 0; + return strcmp(buffer, cstr) == 0; +} + +unsigned char String::operator<(const String &rhs) const +{ + return compareTo(rhs) < 0; +} + +unsigned char String::operator>(const String &rhs) const +{ + return compareTo(rhs) > 0; +} + +unsigned char String::operator<=(const String &rhs) const +{ + return compareTo(rhs) <= 0; +} + +unsigned char String::operator>=(const String &rhs) const +{ + return compareTo(rhs) >= 0; +} + +unsigned char String::equalsIgnoreCase( const String &s2 ) const +{ + if (this == &s2) return 1; + if (len != s2.len) return 0; + if (len == 0) return 1; + const char *p1 = buffer; + const char *p2 = s2.buffer; + while (*p1) { + if (tolower(*p1++) != tolower(*p2++)) return 0; + } + return 1; +} + +unsigned char String::startsWith( const String &s2 ) const +{ + if (len < s2.len) return 0; + return startsWith(s2, 0); +} + +unsigned char String::startsWith( const String &s2, unsigned int offset ) const +{ + if (offset > len - s2.len || !buffer || !s2.buffer) return 0; + return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0; +} + +unsigned char String::endsWith( const String &s2 ) const +{ + if ( len < s2.len || !buffer || !s2.buffer) return 0; + return strcmp(&buffer[len - s2.len], s2.buffer) == 0; +} + +/*********************************************/ +/* Character Access */ +/*********************************************/ + +char String::charAt(unsigned int loc) const +{ + return operator[](loc); +} + +void String::setCharAt(unsigned int loc, char c) +{ + if (loc < len) buffer[loc] = c; +} + +char & String::operator[](unsigned int index) +{ + static char dummy_writable_char; + if (index >= len || !buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return buffer[index]; +} + +char String::operator[]( unsigned int index ) const +{ + if (index >= len || !buffer) return 0; + return buffer[index]; +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const +{ + if (!bufsize || !buf) return; + if (index >= len) { + buf[0] = 0; + return; + } + unsigned int n = bufsize - 1; + if (n > len - index) n = len - index; + strncpy((char *)buf, buffer + index, n); + buf[n] = 0; +} + +/*********************************************/ +/* Search */ +/*********************************************/ + +int String::indexOf(char c) const +{ + return indexOf(c, 0); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if (fromIndex >= len) return -1; + const char* temp = strchr(buffer + fromIndex, ch); + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::indexOf(const String &s2) const +{ + return indexOf(s2, 0); +} + +int String::indexOf(const String &s2, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + const char *found = strstr(buffer + fromIndex, s2.buffer); + if (found == NULL) return -1; + return found - buffer; +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf(theChar, len - 1); +} + +int String::lastIndexOf(char ch, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + char tempchar = buffer[fromIndex + 1]; + buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( buffer, ch ); + buffer[fromIndex + 1] = tempchar; + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::lastIndexOf(const String &s2) const +{ + return lastIndexOf(s2, len - s2.len); +} + +int String::lastIndexOf(const String &s2, unsigned int fromIndex) const +{ + if (s2.len == 0 || len == 0 || s2.len > len) return -1; + if (fromIndex >= len) fromIndex = len - 1; + int found = -1; + for (char *p = buffer; p <= buffer + fromIndex; p++) { + p = strstr(p, s2.buffer); + if (!p) break; + if ((unsigned int)(p - buffer) <= fromIndex) found = p - buffer; + } + return found; +} + +String String::substring( unsigned int left ) const +{ + return substring(left, len); +} + +String String::substring(unsigned int left, unsigned int right) const +{ + if (left > right) { + unsigned int temp = right; + right = left; + left = temp; + } + String out; + if (left > len) return out; + if (right > len) right = len; + char temp = buffer[right]; // save the replaced character + buffer[right] = '\0'; + out = buffer + left; // pointer arithmetic + buffer[right] = temp; //restore character + return out; +} + +/*********************************************/ +/* Modification */ +/*********************************************/ + +void String::replace(char find, char replace) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + if (*p == find) *p = replace; + } +} + +void String::replace(const String& find, const String& replace) +{ + if (len == 0 || find.len == 0) return; + int diff = replace.len - find.len; + char *readFrom = buffer; + char *foundAt; + if (diff == 0) { + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + memcpy(foundAt, replace.buffer, replace.len); + readFrom = foundAt + replace.len; + } + } else if (diff < 0) { + char *writeTo = buffer; + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + unsigned int n = foundAt - readFrom; + memcpy(writeTo, readFrom, n); + writeTo += n; + memcpy(writeTo, replace.buffer, replace.len); + writeTo += replace.len; + readFrom = foundAt + find.len; + len += diff; + } + strcpy(writeTo, readFrom); + } else { + unsigned int size = len; // compute size needed for result + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + readFrom = foundAt + find.len; + size += diff; + } + if (size == len) return; + if (size > capacity && !changeBuffer(size)) return; // XXX: tell user! + int index = len - 1; + while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) { + readFrom = buffer + index + find.len; + memmove(readFrom + diff, readFrom, len - (readFrom - buffer)); + len += diff; + buffer[len] = 0; + memcpy(buffer + index, replace.buffer, replace.len); + index--; + } + } +} + +void String::toLowerCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = tolower(*p); + } +} + +void String::toUpperCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = toupper(*p); + } +} + +void String::trim(void) +{ + if (!buffer || len == 0) return; + char *begin = buffer; + while (isspace(*begin)) begin++; + char *end = buffer + len - 1; + while (isspace(*end) && end >= begin) end--; + len = end + 1 - begin; + if (begin > buffer) memcpy(buffer, begin, len); + buffer[len] = 0; +} + +/*********************************************/ +/* Parsing / Conversion */ +/*********************************************/ + +long String::toInt(void) const +{ + if (buffer) return atol(buffer); + return 0; +} + + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WString.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WString.h new file mode 100644 index 000000000..947325e5f --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/WString.h @@ -0,0 +1,205 @@ +/* + WString.h - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_class_h +#define String_class_h +#ifdef __cplusplus + +#include +#include +#include +#include + +// When compiling programs with this class, the following gcc parameters +// dramatically increase performance and memory (RAM) efficiency, typically +// with little or no increase in code size. +// -felide-constructors +// -std=c++0x + +class __FlashStringHelper; +#define F(string_literal) (reinterpret_cast(PSTR(string_literal))) + +// An inherited class for holding the result of a concatenation. These +// result objects are assumed to be writable by subsequent concatenations. +class StringSumHelper; + +// The string class +class String +{ + // use a function pointer to allow for "if (s)" without the + // complications of an operator bool(). for more information, see: + // http://www.artima.com/cppsource/safebool.html + typedef void (String::*StringIfHelperType)() const; + void StringIfHelper() const {} + +public: + // constructors + // creates a copy of the initial value. + // if the initial value is null or invalid, or if memory allocation + // fails, the string will be marked as invalid (i.e. "if (s)" will + // be false). + String(const char *cstr = ""); + String(const String &str); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String(String &&rval); + String(StringSumHelper &&rval); + #endif + explicit String(char c); + explicit String(unsigned char, unsigned char base=10); + explicit String(int, unsigned char base=10); + explicit String(unsigned int, unsigned char base=10); + explicit String(long, unsigned char base=10); + explicit String(unsigned long, unsigned char base=10); + ~String(void); + + // memory management + // return true on success, false on failure (in which case, the string + // is left unchanged). reserve(0), if successful, will validate an + // invalid string (i.e., "if (s)" will be true afterwards) + unsigned char reserve(unsigned int size); + inline unsigned int length(void) const {return len;} + + // creates a copy of the assigned value. if the value is null or + // invalid, or if the memory allocation fails, the string will be + // marked as invalid ("if (s)" will be false). + String & operator = (const String &rhs); + String & operator = (const char *cstr); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String & operator = (String &&rval); + String & operator = (StringSumHelper &&rval); + #endif + + // concatenate (works w/ built-in types) + + // returns true on success, false on failure (in which case, the string + // is left unchanged). if the argument is null or invalid, the + // concatenation is considered unsucessful. + unsigned char concat(const String &str); + unsigned char concat(const char *cstr); + unsigned char concat(char c); + unsigned char concat(unsigned char c); + unsigned char concat(int num); + unsigned char concat(unsigned int num); + unsigned char concat(long num); + unsigned char concat(unsigned long num); + + // if there's not enough memory for the concatenated value, the string + // will be left unchanged (but this isn't signalled in any way) + String & operator += (const String &rhs) {concat(rhs); return (*this);} + String & operator += (const char *cstr) {concat(cstr); return (*this);} + String & operator += (char c) {concat(c); return (*this);} + String & operator += (unsigned char num) {concat(num); return (*this);} + String & operator += (int num) {concat(num); return (*this);} + String & operator += (unsigned int num) {concat(num); return (*this);} + String & operator += (long num) {concat(num); return (*this);} + String & operator += (unsigned long num) {concat(num); return (*this);} + + friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs); + friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr); + friend StringSumHelper & operator + (const StringSumHelper &lhs, char c); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, long num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num); + + // comparison (only works w/ Strings and "strings") + operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; } + int compareTo(const String &s) const; + unsigned char equals(const String &s) const; + unsigned char equals(const char *cstr) const; + unsigned char operator == (const String &rhs) const {return equals(rhs);} + unsigned char operator == (const char *cstr) const {return equals(cstr);} + unsigned char operator != (const String &rhs) const {return !equals(rhs);} + unsigned char operator != (const char *cstr) const {return !equals(cstr);} + unsigned char operator < (const String &rhs) const; + unsigned char operator > (const String &rhs) const; + unsigned char operator <= (const String &rhs) const; + unsigned char operator >= (const String &rhs) const; + unsigned char equalsIgnoreCase(const String &s) const; + unsigned char startsWith( const String &prefix) const; + unsigned char startsWith(const String &prefix, unsigned int offset) const; + unsigned char endsWith(const String &suffix) const; + + // character acccess + char charAt(unsigned int index) const; + void setCharAt(unsigned int index, char c); + char operator [] (unsigned int index) const; + char& operator [] (unsigned int index); + void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const; + void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const + {getBytes((unsigned char *)buf, bufsize, index);} + + // search + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + + // modification + void replace(char find, char replace); + void replace(const String& find, const String& replace); + void toLowerCase(void); + void toUpperCase(void); + void trim(void); + + // parsing/conversion + long toInt(void) const; + +protected: + char *buffer; // the actual char array + unsigned int capacity; // the array length minus one (for the '\0') + unsigned int len; // the String length (not counting the '\0') + unsigned char flags; // unused, for future features +protected: + void init(void); + void invalidate(void); + unsigned char changeBuffer(unsigned int maxStrLen); + unsigned char concat(const char *cstr, unsigned int length); + + // copy and move + String & copy(const char *cstr, unsigned int length); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + void move(String &rhs); + #endif +}; + +class StringSumHelper : public String +{ +public: + StringSumHelper(const String &s) : String(s) {} + StringSumHelper(const char *p) : String(p) {} + StringSumHelper(char c) : String(c) {} + StringSumHelper(unsigned char num) : String(num) {} + StringSumHelper(int num) : String(num) {} + StringSumHelper(unsigned int num) : String(num) {} + StringSumHelper(long num) : String(num) {} + StringSumHelper(unsigned long num) : String(num) {} +}; + +#endif // __cplusplus +#endif // String_class_h diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/binary.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/main.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/main.cpp new file mode 100644 index 000000000..3d4e079d2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/main.cpp @@ -0,0 +1,20 @@ +#include + +int main(void) +{ + init(); + +#if defined(USBCON) + USBDevice.attach(); +#endif + + setup(); + + for (;;) { + loop(); + if (serialEventRun) serialEventRun(); + } + + return 0; +} + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/new.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/new.cpp new file mode 100644 index 000000000..0f6d4220e --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/new.cpp @@ -0,0 +1,18 @@ +#include + +void * operator new(size_t size) +{ + return malloc(size); +} + +void operator delete(void * ptr) +{ + free(ptr); +} + +int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; +void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; +void __cxa_guard_abort (__guard *) {}; + +void __cxa_pure_virtual(void) {}; + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/new.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/new.h new file mode 100644 index 000000000..cd940ce8b --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/new.h @@ -0,0 +1,22 @@ +/* Header to define new/delete operators as they aren't provided by avr-gcc by default + Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453 + */ + +#ifndef NEW_H +#define NEW_H + +#include + +void * operator new(size_t size); +void operator delete(void * ptr); + +__extension__ typedef int __guard __attribute__((mode (__DI__))); + +extern "C" int __cxa_guard_acquire(__guard *); +extern "C" void __cxa_guard_release (__guard *); +extern "C" void __cxa_guard_abort (__guard *); + +extern "C" void __cxa_pure_virtual(void); + +#endif + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring.c b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring.c new file mode 100644 index 000000000..840784938 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring.c @@ -0,0 +1,324 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +#if defined (TIM0_OVF_vect) +SIGNAL(TIM0_OVF_vect) +#else +SIGNAL(TIMER0_OVF_vect) +#endif +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); +#if F_CPU >= 20000000L + // for the 20 MHz clock on rare Arduino boards + + // for a one-microsecond delay, simply wait 2 cycle and return. The overhead + // of the function call yields a delay of exactly a one microsecond. + __asm__ __volatile__ ( + "nop" "\n\t" + "nop"); //just waiting 2 cycle + if (--us == 0) + return; + + // the following loop takes a 1/5 of a microsecond (4 cycles) + // per iteration, so execute it five times for each microsecond of + // delay requested. + us = (us<<2) + us; // x5 us + + // account for the time taken in the preceeding commands. + us -= 2; + +#elif F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + TCCR1B = 0; + + // set timer 1 prescale factor to 64 + sbi(TCCR1B, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1B, CS10); +#endif +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1, CS10); +#endif +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4A) && defined(TCCR4B) && defined(TCCR4D) /* beginning of timer4 block for 32U4 and similar */ + sbi(TCCR4B, CS42); // set timer4 prescale factor to 64 + sbi(TCCR4B, CS41); + sbi(TCCR4B, CS40); + sbi(TCCR4D, WGM40); // put timer 4 in phase- and frequency-correct PWM mode + sbi(TCCR4A, PWM4A); // enable PWM mode for comparator OCR4A + sbi(TCCR4C, PWM4D); // enable PWM mode for comparator OCR4D +#else /* beginning of timer4 block for ATMEGA1280 and ATMEGA2560 */ +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif +#endif /* end timer4 block for ATMEGA1280/2560 and similar */ + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_analog.c b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_analog.c new file mode 100644 index 000000000..38c8e3970 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_analog.c @@ -0,0 +1,282 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(PORTL) // 100 pin chips + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#elif defined(__AVR_ATmega32U4__) + if (pin >= 18) pin -= 18; // allow for channel or pin numbers +#elif defined(PORTA) // 40/44 pin chips + if (pin >= 24) pin -= 24; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(__AVR_ATmega32U4__) + pin = analogPinToChannel(pin); + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#elif defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) + case TIMER4A: + //connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + #if defined(COM4A0) // only used on 32U4 + cbi(TCCR4A, COM4A0); + #endif + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4C) && defined(COM4D1) + case TIMER4D: + // connect pwm to pin on timer 4, channel D + sbi(TCCR4C, COM4D1); + #if defined(COM4D0) // only used on 32U4 + cbi(TCCR4C, COM4D0); + #endif + OCR4D = val; // set pwm duty + break; + #endif + + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_digital.c b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_digital.c new file mode 100644 index 000000000..be323b1df --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_digital.c @@ -0,0 +1,178 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#define ARDUINO_MAIN +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg, *out; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + out = portOutputRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + *out &= ~bit; + SREG = oldSREG; + } else if (mode == INPUT_PULLUP) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + *out |= bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +//static inline void turnOffPWM(uint8_t timer) +static void turnOffPWM(uint8_t timer) +{ + switch (timer) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR4C) && defined(COM4D1) + case TIMER4D: cbi(TCCR4C, COM4D1); break; + #endif + + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + uint8_t oldSREG = SREG; + cli(); + + if (val == LOW) { + *out &= ~bit; + } else { + *out |= bit; + } + + SREG = oldSREG; +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_private.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_private.h new file mode 100644 index 000000000..c91289e2d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_private.h @@ -0,0 +1,71 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined (SIG_INTERRUPT7) +#define EXTERNAL_NUM_INTERRUPTS 8 +#elif defined (SIG_INTERRUPT2) +#define EXTERNAL_NUM_INTERRUPTS 3 +#elif defined(__AVR_ATmega32U4__) +#define EXTERNAL_NUM_INTERRUPTS 4 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_pulse.c b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_pulse.c new file mode 100644 index 000000000..0d968865d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_shift.c b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_shift.c new file mode 100644 index 000000000..cfe786758 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/cores/arduino/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/variants/gen7/pins_arduino.h b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/variants/gen7/pins_arduino.h new file mode 100644 index 000000000..23f3d2a07 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Gen7-dist/variants/gen7/pins_arduino.h @@ -0,0 +1,235 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Modified to meet the ATmega644, ATmega644P and ATmega1284P. + + Copyright (c) 2007 David A. Mellis + Copyright (c) 2012 Markus "Traumflug" Hitter + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA +*/ + +/* + It should be noted the Gen7 board doesn't really have all those I/O pins, + most of them are hardwired on the base board already. So this pin layout + matches that of the Sanguino board, like the previous versions. +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NUM_DIGITAL_PINS 32 +#define NUM_ANALOG_INPUTS 8 +#define analogInputToDigitalPin(p) ((p < 8) ? (p) + 24 : -1) + +#define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 12 || (p) == 13 || (p) == 14 || (p) == 15) + +static const uint8_t SS = 4; +static const uint8_t MOSI = 5; +static const uint8_t MISO = 6; +static const uint8_t SCK = 7; + +static const uint8_t SDA = 17; +static const uint8_t SCL = 16; +static const uint8_t LED_BUILTIN = -1; + +static const uint8_t A0 = 24; +static const uint8_t A1 = 25; +static const uint8_t A2 = 26; +static const uint8_t A3 = 27; +static const uint8_t A4 = 28; +static const uint8_t A5 = 29; +static const uint8_t A6 = 20; +static const uint8_t A7 = 21; + +#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 33) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) (((p) <= 9) ? 2 : (((p) <= 23) ? 0 : 1)) +#define digitalPinToPCMSK(p) (((p) <= 9) ? (&PCMSK2) : (((p) <= 23) ? (&PCMSK0) : (((p) <= 33) ? (&PCMSK1) : ((uint8_t *)0)))) +#define digitalPinToPCMSKbit(p) (((p) <= 9) ? (p) : (((p) <= 23) ? ((p) - 10) : ((p) - 24))) + +#ifdef ARDUINO_MAIN + +// On the Gen7 board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA644P / SANGUINO +// +// +---\/---+ +// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31) +// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30) +// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) +// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) +// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) +// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) +// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) +// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) +// RST 9| |32 AREF +// VCC 10| |31 GND +// GND 11| |30 AVCC +// XTAL2 12| |29 PC7 (D 23) +// XTAL1 13| |28 PC6 (D 22) +// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI +// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO +// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS +// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK +// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA +// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL +// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM +// +--------+ +// +// TX1 and RX1 are not available on the ATmega644. + + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + &DDRA, + &DDRB, + &DDRC, + &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + &PORTA, + &PORTB, + &PORTC, + &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + &PINA, + &PINB, + &PINC, + &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PB, /* 0 */ + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PD, /* 8 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PC, /* 16 */ + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PA, /* 24 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA /* 31 */ +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), /* 0, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 16, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(7), /* 24, port A */ + _BV(6), + _BV(5), + _BV(4), + _BV(3), + _BV(2), + _BV(1), + _BV(0) +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, /* 0 - PB0 */ + NOT_ON_TIMER, /* 1 - PB1 */ + NOT_ON_TIMER, /* 2 - PB2 */ + TIMER0A, /* 3 - PB3 */ + TIMER0B, /* 4 - PB4 */ + NOT_ON_TIMER, /* 5 - PB5 */ + NOT_ON_TIMER, /* 6 - PB6 */ + NOT_ON_TIMER, /* 7 - PB7 */ + NOT_ON_TIMER, /* 8 - PD0 */ + NOT_ON_TIMER, /* 9 - PD1 */ + NOT_ON_TIMER, /* 10 - PD2 */ + NOT_ON_TIMER, /* 11 - PD3 */ + TIMER1B, /* 12 - PD4 */ + TIMER1A, /* 13 - PD5 */ + TIMER2B, /* 14 - PD6 */ + TIMER2A, /* 15 - PD7 */ + NOT_ON_TIMER, /* 16 - PC0 */ + NOT_ON_TIMER, /* 17 - PC1 */ + NOT_ON_TIMER, /* 18 - PC2 */ + NOT_ON_TIMER, /* 19 - PC3 */ + NOT_ON_TIMER, /* 20 - PC4 */ + NOT_ON_TIMER, /* 21 - PC5 */ + NOT_ON_TIMER, /* 22 - PC6 */ + NOT_ON_TIMER, /* 23 - PC7 */ + NOT_ON_TIMER, /* 24 - PA0 */ + NOT_ON_TIMER, /* 25 - PA1 */ + NOT_ON_TIMER, /* 26 - PA2 */ + NOT_ON_TIMER, /* 27 - PA3 */ + NOT_ON_TIMER, /* 28 - PA4 */ + NOT_ON_TIMER, /* 29 - PA5 */ + NOT_ON_TIMER, /* 30 - PA6 */ + NOT_ON_TIMER /* 31 - PA7 */ +}; + +#endif /* ARDUINO_MAIN */ + +#endif /* Pins_Arduino_h */ + + + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/boards.txt b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/boards.txt new file mode 100644 index 000000000..9ea824446 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/boards.txt @@ -0,0 +1,20 @@ +############################################################## + +atmega1284.name=Melzi W/ ATmega1284p 16mhz + +atmega1284.upload.protocol=arduino +atmega1284.upload.maximum_size=129024 +atmega1284.upload.speed=57600 + +atmega1284.bootloader.low_fuses=0xD6 +atmega1284.bootloader.high_fuses=0xD4 +atmega1284.bootloader.extended_fuses=0xFD +atmega1284.bootloader.path=atmega644p +atmega1284.bootloader.file=ATmegaBOOT_1284P.hex +atmega1284.bootloader.unlock_bits=0x3F +atmega1284.bootloader.lock_bits=0x0F + +atmega1284.build.mcu=atmega1284p +atmega1284.build.f_cpu=16000000L +atmega1284.build.core=arduino +atmega1284.build.variant=standard diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/ATmegaBOOT.c b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/ATmegaBOOT.c new file mode 100644 index 000000000..68b96db09 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/ATmegaBOOT.c @@ -0,0 +1,1090 @@ +/**********************************************************/ +/* Serial Bootloader for Atmel megaAVR Controllers */ +/* */ +/* tested with ATmega8, ATmega128 and ATmega168 */ +/* should work with other mega's, see code for details */ +/* */ +/* ATmegaBOOT.c */ +/* */ +/* */ +/* 20090308: integrated Mega changes into main bootloader */ +/* source by D. Mellis */ +/* 20080930: hacked for Arduino Mega (with the 1280 */ +/* processor, backwards compatible) */ +/* by D. Cuartielles */ +/* 20070626: hacked for Arduino Diecimila (which auto- */ +/* resets when a USB connection is made to it) */ +/* by D. Mellis */ +/* 20060802: hacked for Arduino by D. Cuartielles */ +/* based on a previous hack by D. Mellis */ +/* and D. Cuartielles */ +/* */ +/* Monitor and debug functions were added to the original */ +/* code by Dr. Erik Lins, chip45.com. (See below) */ +/* */ +/* Thanks to Karl Pitrich for fixing a bootloader pin */ +/* problem and more informative LED blinking! */ +/* */ +/* For the latest version see: */ +/* http://www.chip45.com/ */ +/* */ +/* ------------------------------------------------------ */ +/* */ +/* based on stk500boot.c */ +/* Copyright (c) 2003, Jason P. Kyle */ +/* All rights reserved. */ +/* see avr1.org for original file and information */ +/* */ +/* This program is free software; you can redistribute it */ +/* and/or modify it under the terms of the GNU General */ +/* Public License as published by the Free Software */ +/* Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will */ +/* be useful, but WITHOUT ANY WARRANTY; without even the */ +/* implied warranty of MERCHANTABILITY or FITNESS FOR A */ +/* PARTICULAR PURPOSE. See the GNU General Public */ +/* License for more details. */ +/* */ +/* You should have received a copy of the GNU General */ +/* Public License along with this program; if not, write */ +/* to the Free Software Foundation, Inc., */ +/* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/* Licence can be viewed at */ +/* http://www.fsf.org/licenses/gpl.txt */ +/* */ +/* Target = Atmel AVR m128,m64,m32,m16,m8,m162,m163,m169, */ +/* m8515,m8535. ATmega161 has a very small boot block so */ +/* isn't supported. */ +/* */ +/* Tested with m168 */ +/**********************************************************/ + +/* $Id$ */ + + +/* some includes */ +#include +#include +#include +#include +#include +#include + +/* the current avr-libc eeprom functions do not support the ATmega168 */ +/* own eeprom write/read functions are used instead */ +#if !defined(__AVR_ATmega168__) || !defined(__AVR_ATmega328P__) +#include +#endif + +/* Use the F_CPU defined in Makefile */ + +/* 20060803: hacked by DojoCorp */ +/* 20070626: hacked by David A. Mellis to decrease waiting time for auto-reset */ +/* set the waiting time for the bootloader */ +/* get this from the Makefile instead */ +/* #define MAX_TIME_COUNT (F_CPU>>4) */ + +/* 20070707: hacked by David A. Mellis - after this many errors give up and launch application */ +#define MAX_ERROR_COUNT 5 +#define NUM_LED_FLASHES 3 +/* set the UART baud rate */ +/* 20060803: hacked by DojoCorp */ +//#define BAUD_RATE 115200 +#ifndef BAUD_RATE +#define BAUD_RATE 19200 +#endif + + +/* SW_MAJOR and MINOR needs to be updated from time to time to avoid warning message from AVR Studio */ +/* never allow AVR Studio to do an update !!!! */ +#define HW_VER 0x02 +#define SW_MAJOR 0x01 +#define SW_MINOR 0x10 + + +/* Adjust to suit whatever pin your hardware uses to enter the bootloader */ +/* ATmega128 has two UARTS so two pins are used to enter bootloader and select UART */ +/* ATmega1280 has four UARTS, but for Arduino Mega, we will only use RXD0 to get code */ +/* BL0... means UART0, BL1... means UART1 */ +#ifdef __AVR_ATmega128__ +#define BL_DDR DDRF +#define BL_PORT PORTF +#define BL_PIN PINF +#define BL0 PINF7 +#define BL1 PINF6 +#elif defined __AVR_ATmega1280__ +/* we just don't do anything for the MEGA and enter bootloader on reset anyway*/ +#elif defined __AVR_ATmega1284P__ + +#else +/* other ATmegas have only one UART, so only one pin is defined to enter bootloader */ +#define BL_DDR DDRD +#define BL_PORT PORTD +#define BL_PIN PIND +#define BL PIND6 +#endif + + +/* onboard LED is used to indicate, that the bootloader was entered (3x flashing) */ +/* if monitor functions are included, LED goes on after monitor was entered */ +#if defined __AVR_ATmega128__ || defined __AVR_ATmega1280__ +/* Onboard LED is connected to pin PB7 (e.g. Crumb128, PROBOmega128, Savvy128, Arduino Mega) */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB7 +#elif defined __AVR_ATmega1284P__ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB0 +#else +/* Onboard LED is connected to pin PB5 in Arduino NG, Diecimila, and Duomilanuove */ +/* other boards like e.g. Crumb8, Crumb168 are using PB2 */ +#define LED_DDR DDRB +#define LED_PORT PORTB +#define LED_PIN PINB +#define LED PINB5 +#endif + + +/* monitor functions will only be compiled when using ATmega128, due to bootblock size constraints */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) +//#define MONITOR 1 +#endif +#undef MONITOR + +/* define various device id's */ +/* manufacturer byte is always the same */ +#define SIG1 0x1E // Yep, Atmel is the only manufacturer of AVR micros. Single source :( + +#if defined __AVR_ATmega1280__ +#define SIG2 0x97 +#define SIG3 0x03 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega1284P__ +#define SIG2 0x97 +#define SIG3 0x05 +#define PAGE_SIZE 0x080U //128 words + +#elif defined __AVR_ATmega1281__ +#define SIG2 0x97 +#define SIG3 0x04 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega128__ +#define SIG2 0x97 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega64__ +#define SIG2 0x96 +#define SIG3 0x02 +#define PAGE_SIZE 0x80U //128 words + +#elif defined __AVR_ATmega32__ +#define SIG2 0x95 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega16__ +#define SIG2 0x94 +#define SIG3 0x03 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8__ +#define SIG2 0x93 +#define SIG3 0x07 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega88__ +#define SIG2 0x93 +#define SIG3 0x0a +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega168__ +#define SIG2 0x94 +#define SIG3 0x06 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega328P__ +#define SIG2 0x95 +#define SIG3 0x0F +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega162__ +#define SIG2 0x94 +#define SIG3 0x04 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega163__ +#define SIG2 0x94 +#define SIG3 0x02 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega169__ +#define SIG2 0x94 +#define SIG3 0x05 +#define PAGE_SIZE 0x40U //64 words + +#elif defined __AVR_ATmega8515__ +#define SIG2 0x93 +#define SIG3 0x06 +#define PAGE_SIZE 0x20U //32 words + +#elif defined __AVR_ATmega8535__ +#define SIG2 0x93 +#define SIG3 0x08 +#define PAGE_SIZE 0x20U //32 words +#endif + + +/* function prototypes */ +void putch(char); +char getch(void); +void getNch(uint8_t); +void byte_response(uint8_t); +void nothing_response(void); +char gethex(void); +void puthex(char); +void flash_led(uint8_t); + +/* some variables */ +union address_union +{ + uint16_t word; + uint8_t byte[2]; +} address; + +union length_union +{ + uint16_t word; + uint8_t byte[2]; +} length; + +struct flags_struct +{ + unsigned eeprom : 1; + unsigned rampz : 1; +} flags; + +uint8_t buff[256]; +uint8_t address_high; + + +uint8_t i; +uint8_t bootuart = 0; + +uint8_t error_count = 0; + +void (*app_start)(void) = 0x0000; + + +/* main program starts here */ +int main(void) +{ + uint8_t ch,ch2; + uint16_t w; +#ifdef WATCHDOG_MODS + ch = MCUSR; + MCUSR = 0; + WDTCSR |= _BV(WDCE) | _BV(WDE); + WDTCSR = 0; + // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot. + if (! (ch & _BV(EXTRF))) // if its a not an external reset... + app_start(); // skip bootloader +#else + asm volatile("nop\n\t"); +#endif + /* set pin direction for bootloader pin and enable pullup */ + /* for ATmega128, two pins need to be initialized */ +#ifdef __AVR_ATmega128__ + BL_DDR &= ~_BV(BL0); + BL_DDR &= ~_BV(BL1); + BL_PORT |= _BV(BL0); + BL_PORT |= _BV(BL1); +#else + /* We run the bootloader regardless of the state of this pin. Thus, don't + put it in a different state than the other pins. --DAM, 070709 + This also applies to Arduino Mega -- DC, 080930 + BL_DDR &= ~_BV(BL); + BL_PORT |= _BV(BL); + */ +#endif +#ifdef __AVR_ATmega128__ + /* check which UART should be used for booting */ + if(bit_is_clear(BL_PIN, BL0)) + { + bootuart = 1; + } + else if(bit_is_clear(BL_PIN, BL1)) + { + bootuart = 2; + } +#endif +#if defined __AVR_ATmega1280__ || defined __AVR_ATmega1284P__ + /* the mega1280 chip has four serial ports ... we could eventually use any of them, or not? */ + /* however, we don't wanna confuse people, to avoid making a mess, we will stick to RXD0, TXD0 */ + bootuart = 1; +#endif + /* check if flash is programmed already, if not start bootloader anyway */ + if(pgm_read_byte_near(0x0000) != 0xFF) + { +#ifdef __AVR_ATmega128__ + /* no UART was selected, start application */ + if(!bootuart) + { + app_start(); + } +#else + /* check if bootloader pin is set low */ + /* we don't start this part neither for the m8, nor m168 */ + //if(bit_is_set(BL_PIN, BL)) { + // app_start(); + // } +#endif + } +#ifdef __AVR_ATmega128__ + /* no bootuart was selected, default to uart 0 */ + if(!bootuart) + { + bootuart = 1; + } +#endif + /* initialize UART(s) depending on CPU defined */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) + if(bootuart == 1) + { + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR0A = 0x00; + UCSR0C = 0x06; + UCSR0B = _BV(TXEN0)|_BV(RXEN0); + } + if(bootuart == 2) + { + UBRR1L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR1H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSR1A = 0x00; + UCSR1C = 0x06; + UCSR1B = _BV(TXEN1)|_BV(RXEN1); + } +#elif defined __AVR_ATmega163__ + UBRR = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRRHI = (F_CPU/(BAUD_RATE*16L)-1) >> 8; + UCSRA = 0x00; + UCSRB = _BV(TXEN)|_BV(RXEN); +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) +#ifdef DOUBLE_SPEED + UCSR0A = (1<> 8; +#else + UBRR0L = (uint8_t)(F_CPU/(BAUD_RATE*16L)-1); + UBRR0H = (F_CPU/(BAUD_RATE*16L)-1) >> 8; +#endif + UCSR0B = (1<>8; // set baud rate + UBRRL = (((F_CPU/BAUD_RATE)/16)-1); + UCSRB = (1<> 8; + UCSRA = 0x00; + UCSRC = 0x06; + UCSRB = _BV(TXEN)|_BV(RXEN); +#endif +#if defined __AVR_ATmega1280__ + /* Enable internal pull-up resistor on pin D0 (RX), in order + to supress line noise that prevents the bootloader from + timing out (DAM: 20070509) */ + /* feature added to the Arduino Mega --DC: 080930 */ + DDRE &= ~_BV(PINE0); + PORTE |= _BV(PINE0); +#endif + /* set LED pin as output */ + LED_DDR |= _BV(LED); + /* flash onboard LED to signal entering of bootloader */ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) + // 4x for UART0, 5x for UART1 + flash_led(NUM_LED_FLASHES + bootuart); +#else + flash_led(NUM_LED_FLASHES); +#endif + /* 20050803: by DojoCorp, this is one of the parts provoking the + system to stop listening, cancelled from the original */ + //putch('\0'); + /* forever loop */ + for (;;) + { + /* get character from UART */ + ch = getch(); + /* A bunch of if...else if... gives smaller code than switch...case ! */ + /* Hello is anyone home ? */ + if(ch=='0') + { + nothing_response(); + } + /* Request programmer ID */ + /* Not using PROGMEM string due to boot block in m128 being beyond 64kB boundry */ + /* Would need to selectively manipulate RAMPZ, and it's only 9 characters anyway so who cares. */ + else if(ch=='1') + { + if (getch() == ' ') + { + putch(0x14); + putch('A'); + putch('V'); + putch('R'); + putch(' '); + putch('I'); + putch('S'); + putch('P'); + putch(0x10); + } + else + { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + /* AVR ISP/STK500 board commands DON'T CARE so default nothing_response */ + else if(ch=='@') + { + ch2 = getch(); + if (ch2>0x85) getch(); + nothing_response(); + } + /* AVR ISP/STK500 board requests */ + else if(ch=='A') + { + ch2 = getch(); + if(ch2==0x80) byte_response(HW_VER); // Hardware version + else if(ch2==0x81) byte_response(SW_MAJOR); // Software major version + else if(ch2==0x82) byte_response(SW_MINOR); // Software minor version + else if(ch2==0x98) byte_response(0x03); // Unknown but seems to be required by avr studio 3.56 + else byte_response(0x00); // Covers various unnecessary responses we don't care about + } + /* Device Parameters DON'T CARE, DEVICE IS FIXED */ + else if(ch=='B') + { + getNch(20); + nothing_response(); + } + /* Parallel programming stuff DON'T CARE */ + else if(ch=='E') + { + getNch(5); + nothing_response(); + } + /* P: Enter programming mode */ + /* R: Erase device, don't care as we will erase one page at a time anyway. */ + else if(ch=='P' || ch=='R') + { + nothing_response(); + } + /* Leave programming mode */ + else if(ch=='Q') + { + nothing_response(); +#ifdef WATCHDOG_MODS + // autoreset via watchdog (sneaky!) + WDTCSR = _BV(WDE); + while (1); // 16 ms +#endif + } + /* Set address, little endian. EEPROM in bytes, FLASH in words */ + /* Perhaps extra address bytes may be added in future to support > 128kB FLASH. */ + /* This might explain why little endian was used here, big endian used everywhere else. */ + else if(ch=='U') + { + address.byte[0] = getch(); + address.byte[1] = getch(); + nothing_response(); + } + /* Universal SPI programming command, disabled. Would be used for fuses and lock bits. */ + else if(ch=='V') + { + if (getch() == 0x30) + { + getch(); + ch = getch(); + getch(); + if (ch == 0) + { + byte_response(SIG1); + } + else if (ch == 1) + { + byte_response(SIG2); + } + else + { + byte_response(SIG3); + } + } + else + { + getNch(3); + byte_response(0x00); + } + } + /* Write memory, length is big endian and is in bytes */ + else if(ch=='d') + { + length.byte[1] = getch(); + length.byte[0] = getch(); + flags.eeprom = 0; + if (getch() == 'E') flags.eeprom = 1; + for (w=0; w127) address_high = 0x01; //Only possible with m128, m256 will need 3rd address byte. FIXME + else address_high = 0x00; +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) + RAMPZ = address_high; +#endif + address.word = address.word << 1; //address * 2 -> byte location + /* if ((length.byte[0] & 0x01) == 0x01) length.word++; //Even up an odd number of bytes */ + if ((length.byte[0] & 0x01)) length.word++; //Even up an odd number of bytes + cli(); //Disable interrupts, just to be sure +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) + while(bit_is_set(EECR,EEPE)); //Wait for previous EEPROM writes to complete +#else + while(bit_is_set(EECR,EEWE)); //Wait for previous EEPROM writes to complete +#endif + asm volatile( + "clr r17 \n\t" //page_word_count + "lds r30,address \n\t" //Address of FLASH location (in bytes) + "lds r31,address+1 \n\t" + "ldi r28,lo8(buff) \n\t" //Start of buffer array in RAM + "ldi r29,hi8(buff) \n\t" + "lds r24,length \n\t" //Length of data to be written (in bytes) + "lds r25,length+1 \n\t" + "length_loop: \n\t" //Main loop, repeat for number of words in block + "cpi r17,0x00 \n\t" //If page_word_count=0 then erase page + "brne no_page_erase \n\t" + "wait_spm1: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm1 \n\t" + "ldi r16,0x03 \n\t" //Erase page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "wait_spm2: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm2 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "no_page_erase: \n\t" + "ld r0,Y+ \n\t" //Write 2 bytes into page buffer + "ld r1,Y+ \n\t" + "wait_spm3: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm3 \n\t" + "ldi r16,0x01 \n\t" //Load r0,r1 into FLASH page buffer + "sts %0,r16 \n\t" + "spm \n\t" + "inc r17 \n\t" //page_word_count++ + "cpi r17,%1 \n\t" + "brlo same_page \n\t" //Still same page in FLASH + "write_page: \n\t" + "clr r17 \n\t" //New page, write current one first + "wait_spm4: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm4 \n\t" +#ifdef __AVR_ATmega163__ + "andi r30,0x80 \n\t" // m163 requires Z6:Z1 to be zero during page write +#endif + "ldi r16,0x05 \n\t" //Write page pointed to by Z + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" + "ori r30,0x7E \n\t" // recover Z6:Z1 state after page write (had to be zero during write) +#endif + "wait_spm5: \n\t" + "lds r16,%0 \n\t" //Wait for previous spm to complete + "andi r16,1 \n\t" + "cpi r16,1 \n\t" + "breq wait_spm5 \n\t" + "ldi r16,0x11 \n\t" //Re-enable RWW section + "sts %0,r16 \n\t" + "spm \n\t" +#ifdef __AVR_ATmega163__ + ".word 0xFFFF \n\t" + "nop \n\t" +#endif + "same_page: \n\t" + "adiw r30,2 \n\t" //Next word in FLASH + "sbiw r24,2 \n\t" //length-2 + "breq final_write \n\t" //Finished + "rjmp length_loop \n\t" + "final_write: \n\t" + "cpi r17,0 \n\t" + "breq block_done \n\t" + "adiw r24,2 \n\t" //length+2, fool above check on length after short page write + "rjmp write_page \n\t" + "block_done: \n\t" + "clr __zero_reg__ \n\t" //restore zero register +#if defined __AVR_ATmega168__ || __AVR_ATmega328P__ || __AVR_ATmega128__ || __AVR_ATmega1280__ || __AVR_ATmega1281__ || __AVR_ATmega1284P__ + : "=m" (SPMCSR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#else + : "=m" (SPMCR) : "M" (PAGE_SIZE) : "r0","r16","r17","r24","r25","r28","r29","r30","r31" +#endif + ); + /* Should really add a wait for RWW section to be enabled, don't actually need it since we never */ + /* exit the bootloader without a power cycle anyhow */ + } + putch(0x14); + putch(0x10); + } + else + { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } + } + /* Read memory block mode, length is big endian. */ + else if(ch=='t') + { + length.byte[1] = getch(); + length.byte[0] = getch(); +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) + if (address.word>0x7FFF) flags.rampz = 1; // No go with m256, FIXME + else flags.rampz = 0; +#endif + address.word = address.word << 1; // address * 2 -> byte location + if (getch() == 'E') flags.eeprom = 1; + else flags.eeprom = 0; + if (getch() == ' ') // Command terminator + { + putch(0x14); + for (w=0; w < length.word; w++) // Can handle odd and even lengths okay + { + if (flags.eeprom) // Byte access EEPROM read + { +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while(EECR & (1<= 'a') + { + return (a - 'a' + 0x0a); + } + else if(a >= '0') + { + return(a - '0'); + } + return a; +} + + +char gethex(void) +{ + return (gethexnib() << 4) + gethexnib(); +} + + +void puthex(char ch) +{ + char ah; + ah = ch >> 4; + if(ah >= 0x0a) + { + ah = ah - 0x0a + 'a'; + } + else + { + ah += '0'; + } + ch &= 0x0f; + if(ch >= 0x0a) + { + ch = ch - 0x0a + 'a'; + } + else + { + ch += '0'; + } + putch(ah); + putch(ch); +} + + +void putch(char ch) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) + if(bootuart == 1) + { + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; + } + else if (bootuart == 2) + { + while (!(UCSR1A & _BV(UDRE1))); + UDR1 = ch; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + while (!(UCSR0A & _BV(UDRE0))); + UDR0 = ch; +#else + /* m8,16,32,169,8515,8535,163 */ + while (!(UCSRA & _BV(UDRE))); + UDR = ch; +#endif +} + + +char getch(void) +{ +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) + uint32_t count = 0; + if(bootuart == 1) + { + while(!(UCSR0A & _BV(RXC0))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; + } + else if(bootuart == 2) + { + while(!(UCSR1A & _BV(RXC1))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR1; + } + return 0; +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + uint32_t count = 0; + while(!(UCSR0A & _BV(RXC0))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR0; +#else + /* m8,16,32,169,8515,8535,163 */ + uint32_t count = 0; + while(!(UCSRA & _BV(RXC))) + { + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + /* HACKME:: here is a good place to count times*/ + count++; + if (count > MAX_TIME_COUNT) + app_start(); + } + return UDR; +#endif +} + + +void getNch(uint8_t count) +{ + while(count--) + { +#if defined(__AVR_ATmega128__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1284P__) + if(bootuart == 1) + { + while(!(UCSR0A & _BV(RXC0))); + UDR0; + } + else if(bootuart == 2) + { + while(!(UCSR1A & _BV(RXC1))); + UDR1; + } +#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) + getch(); +#else + /* m8,16,32,169,8515,8535,163 */ + /* 20060803 DojoCorp:: Addon coming from the previous Bootloader*/ + //while(!(UCSRA & _BV(RXC))); + //UDR; + getch(); // need to handle time out +#endif + } +} + + +void byte_response(uint8_t val) +{ + if (getch() == ' ') + { + putch(0x14); + putch(val); + putch(0x10); + } + else + { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + + +void nothing_response(void) +{ + if (getch() == ' ') + { + putch(0x14); + putch(0x10); + } + else + { + if (++error_count == MAX_ERROR_COUNT) + app_start(); + } +} + +void flash_led(uint8_t count) +{ + while (count--) + { + LED_PORT |= _BV(LED); + _delay_ms(100); + LED_PORT &= ~_BV(LED); + _delay_ms(100); + } +} + + +/* end of file ATmegaBOOT.c */ diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/ATmegaBOOT_1284P.hex b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/ATmegaBOOT_1284P.hex new file mode 100644 index 000000000..b06d866fc --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/ATmegaBOOT_1284P.hex @@ -0,0 +1,117 @@ +:020000021000EC +:10F800000C9446FC0C9465FC0C9465FC0C9465FC13 +:10F810000C9465FC0C9465FC0C9465FC0C9465FCE4 +:10F820000C9465FC0C9465FC0C9465FC0C9465FCD4 +:10F830000C9465FC0C9465FC0C9465FC0C9465FCC4 +:10F840000C9465FC0C9465FC0C9465FC0C9465FCB4 +:10F850000C9465FC0C9465FC0C9465FC0C9465FCA4 +:10F860000C9465FC0C9465FC0C9465FC0C9465FC94 +:10F870000C9465FC0C9465FC0C9465FC0C9465FC84 +:10F880000C9465FC0C9465FC0C9465FC11241FBE63 +:10F89000CFEFD0E4DEBFCDBF11E0A0E0B1E0E6E005 +:10F8A000FFEF01E00BBF02C007900D92A230B1073D +:10F8B000D9F712E0A2E0B1E001C01D92AD30B1076E +:10F8C000E1F70E945FFD0C9481FF0C9400FC909185 +:10F8D0000201913039F49091C00095FFFCCF8093E4 +:10F8E000C6000895923031F49091C80095FFFCCF86 +:10F8F0008093CE0008951F93982F95959595959593 +:10F900009595905D182F1F701A3014F0195A01C088 +:10F91000105D892F0E9467FC812F0E9467FC1F9158 +:10F920000895EF92FF920F931F938091020181300F +:10F93000F1F4EE24FF24870113C00894E11CF11CAC +:10F94000011D111D81E0E81682E1F8068AE708072B +:10F9500080E0180728F0E0910401F0910501099575 +:10F960008091C00087FFE9CF8091C60021C082301E +:10F97000F1F4EE24FF24870113C00894E11CF11C6C +:10F98000011D111D81E0E81682E1F8068AE70807EB +:10F9900080E0180728F0E0910401F0910501099535 +:10F9A0008091C80087FFE9CF8091CE0001C080E040 +:10F9B0001F910F91FF90EF9008951F930E9491FC6B +:10F9C000182F0E9467FC113614F0175503C010332E +:10F9D0000CF01053812F1F9108951F930E94DDFC9E +:10F9E000182F0E94DDFC1295107F810F1F91089542 +:10F9F0009091020112C0913039F42091C00027FF8C +:10FA0000FCCF2091C60008C0923031F42091C8008C +:10FA100027FFFCCF2091CE008150882361F7089505 +:10FA20001F93182F0E9491FC803251F484E10E94B0 +:10FA300067FC812F0E9467FC80E10E9467FC0CC07C +:10FA4000809103018F5F80930301853029F4E09159 +:10FA50000401F091050109951F9108950E9491FC00 +:10FA6000803239F484E10E9467FC80E10E9467FCE7 +:10FA70000895809103018F5F80930301853029F4FD +:10FA8000E0910401F09105010995089515C0289AA7 +:10FA90002FEF31EE44E0215030404040E1F700C00C +:10FAA000000028982FEF31EE44E0215030404040D4 +:10FAB000E1F700C000008150882349F70895BF9204 +:10FAC000CF92DF92EF92FF920F931F93CF93DF932A +:10FAD00094B714BE8091600088618093600010929A +:10FAE000600091FD05C0E0910401F09105010995C8 +:10FAF00081E08093020180E18093C4001092C500F0 +:10FB00001092C00086E08093C20088E18093C1001B +:10FB1000209A84E00E9446FDBB24B3940E9491FC8D +:10FB2000803309F441C08133E1F40E9491FC8032BA +:10FB300009F0C3C184E10E9467FC81E40E9467FC74 +:10FB400086E50E9467FC82E50E9467FC80E20E94D5 +:10FB500067FC89E40E9467FC83E50E9467FC80E5FE +:10FB600029C1803439F40E9491FC8638E8F00E9463 +:10FB700091FC1AC0813499F40E9491FC803811F4F0 +:10FB800082E098C1813811F481E094C1823811F487 +:10FB900080E190C1883909F08CC183E08BC1823447 +:10FBA00031F484E10E94F8FC0E942EFDB7CF853429 +:10FBB00011F485E0F7CF8035B9F38235A9F38135AB +:10FBC00031F40E942EFD88E080936000FFCF8535E0 +:10FBD00049F40E9491FC809306010E9491FC80935D +:10FBE0000701E2CF8635C9F40E9491FC803389F485 +:10FBF0000E9491FC0E9491FC082F0E9491FC00231E +:10FC000011F48EE157C1013011F487E953C185E049 +:10FC100051C183E00E94F8FC4CC1843609F0D0C089 +:10FC20000E9491FC809309020E9491FC809308023B +:10FC300080910C028E7F80930C020E9491FC85348F +:10FC400029F480910C02816080930C0258E0C52E4B +:10FC500051E0D52E760100E010E007C00E9491FC33 +:10FC6000F70181937F010F5F1F4F809108029091F0 +:10FC700009020817190790F30E9491FC803209F0DD +:10FC80001CC180910C0280FF29C0809106019091D7 +:10FC90000701880F991F909307018093060100E0E8 +:10FCA00010E014C0F60161916F01809106019091FE +:10FCB00007010E9473FF8091060190910701019650 +:10FCC00090930701809306010F5F1F4F80910802F8 +:10FCD000909109020817190728F36BC0809107015A +:10FCE000880F880B8B2180930B028BBF80910601BC +:10FCF00090910701880F991F909307018093060147 +:10FD00008091080280FF09C0809108029091090249 +:10FD100001969093090280930802F894F999FECF16 +:10FD20001127E0910601F0910701C8E0D1E0809130 +:10FD3000080290910902103091F40091570001706F +:10FD40000130D9F303E000935700E8950091570084 +:10FD500001700130D9F301E100935700E895099053 +:10FD600019900091570001700130D9F301E0009320 +:10FD70005700E8951395103898F011270091570017 +:10FD800001700130D9F305E000935700E895009128 +:10FD9000570001700130D9F301E100935700E89555 +:10FDA0003296029709F0C7CF103011F00296E5CFD6 +:10FDB000112484E10E9467FC80E10E9467FCAECEC2 +:10FDC000843709F063C00E9491FC809309020E946D +:10FDD00091FC809308028091060190910701209187 +:10FDE0000C0297FF02C0226001C02D7F20930C02FD +:10FDF000880F991F90930701809306010E9491FC40 +:10FE000020910C02853411F4216001C02E7F2093D3 +:10FE10000C020E9491FC803209F080CE84E10E94A5 +:10FE200067FC00E010E02AC080910C0280FF07C050 +:10FE300080910601909107010E946BFF12C0E09132 +:10FE40000601F091070181FD02C084910AC0CF0133 +:10FE5000A0E0B0E080509040AF4FBF4FABBFFC017F +:10FE600087910E9467FC809106019091070101969D +:10FE700090930701809306010F5F1F4F8091080246 +:10FE8000909109020817190778F296CF853779F40F +:10FE90000E9491FC803289F484E10E9467FC8EE12B +:10FEA0000E9467FC87E90E9467FC85E083CF863764 +:10FEB00021F480E00E9410FD31CE809103018F5F1C +:10FEC00080930301853009F029CEE0910401F0917F +:10FED0000501099523CEF999FECF92BD81BDF89A0F +:10FEE000992780B50895262FF999FECF1FBA92BDA4 +:10FEF00081BD20BD0FB6F894FA9AF99A0FBE01960B +:06FF00000895F894FFCF04 +:02FF0600800079 +:040000031000F800F1 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/Makefile b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/Makefile new file mode 100644 index 000000000..b9ad6039b --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/bootloaders/atmega644p/Makefile @@ -0,0 +1,56 @@ +# Makefile for ATmegaBOOT +# E.Lins, 18.7.2005 +# $Id$ + + +# program name should not be changed... +PROGRAM = ATmegaBOOT_1284P + +# enter the target CPU frequency +AVR_FREQ = 16000000L + +MCU_TARGET = atmega1284p +LDSECTION = --section-start=.text=0x1F800 + +OBJ = $(PROGRAM).o +OPTIMIZE = -Os + +DEFS = -DWATCHDOG_MODS -DBAUD_RATE=57600 +LIBS = + +CC = avr-gcc + + +# Override is only needed by avr-lib build system. + +override CFLAGS = -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) +override LDFLAGS = -Wl,$(LDSECTION) +#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION) + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump + +all: CFLAGS += '-DMAX_TIME_COUNT=16000000L>>1' -DADABOOT +all: $(PROGRAM).hex + +$(PROGRAM).hex: $(PROGRAM).elf + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +$(PROGRAM).elf: $(OBJ) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) + +$(OBJ): ATmegaBOOT.c + avr-gcc $(CFLAGS) $(LDFLAGS) -c -Wall -mmcu=$(MCU_TARGET) ATmegaBOOT.c -o $(PROGRAM).o + +%.lst: %.elf + $(OBJDUMP) -h -S $< > $@ + +%.srec: %.elf + $(OBJCOPY) -j .text -j .data -O srec $< $@ + +%.bin: %.elf + $(OBJCOPY) -j .text -j .data -O binary $< $@ + +clean: + rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Arduino.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Arduino.h new file mode 100644 index 000000000..b26582589 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Arduino.h @@ -0,0 +1,215 @@ +#ifndef Arduino_h +#define Arduino_h + +#include +#include +#include + +#include +#include +#include + +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 +#define INPUT_PULLUP 0x2 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) || defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) +#define DEFAULT 0 +#define EXTERNAL 1 +#define INTERNAL 2 +#else +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 +#endif + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() ) +#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. + +#define analogInPinToBit(P) (P) + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#ifdef ARDUINO_MAIN +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 +#endif + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER4D 14 +#define TIMER5A 15 +#define TIMER5B 16 +#define TIMER5C 17 + +#ifdef __cplusplus +} // extern "C" +#endif + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#endif + +#include "pins_arduino.h" + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/CDC.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/CDC.cpp new file mode 100644 index 000000000..701e48398 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/CDC.cpp @@ -0,0 +1,239 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include + +#if defined(USBCON) +#ifdef CDC_ENABLED + +#if (RAMEND < 1000) +#define SERIAL_BUFFER_SIZE 16 +#else +#define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile int head; + volatile int tail; +}; + +ring_buffer cdc_rx_buffer = { { 0 }, 0, 0}; + +typedef struct +{ + u32 dwDTERate; + u8 bCharFormat; + u8 bParityType; + u8 bDataBits; + u8 lineState; +} LineInfo; + +static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; + +#define WEAK __attribute__ ((weak)) + +extern const CDCDescriptor _cdcInterface PROGMEM; +const CDCDescriptor _cdcInterface = +{ + D_IAD(0,2,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,1), + + // CDC communication interface + D_INTERFACE(CDC_ACM_INTERFACE,1,CDC_COMMUNICATION_INTERFACE_CLASS,CDC_ABSTRACT_CONTROL_MODEL,0), + D_CDCCS(CDC_HEADER,0x10,0x01), // Header (1.10 bcd) + D_CDCCS(CDC_CALL_MANAGEMENT,1,1), // Device handles call management (not) + D_CDCCS4(CDC_ABSTRACT_CONTROL_MANAGEMENT,6), // SET_LINE_CODING, GET_LINE_CODING, SET_CONTROL_LINE_STATE supported + D_CDCCS(CDC_UNION,CDC_ACM_INTERFACE,CDC_DATA_INTERFACE), // Communication interface is master, data interface is slave 0 + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_ACM),USB_ENDPOINT_TYPE_INTERRUPT,0x10,0x40), + + // CDC data interface + D_INTERFACE(CDC_DATA_INTERFACE,2,CDC_DATA_INTERFACE_CLASS,0,0), + D_ENDPOINT(USB_ENDPOINT_OUT(CDC_ENDPOINT_OUT),USB_ENDPOINT_TYPE_BULK,0x40,0), + D_ENDPOINT(USB_ENDPOINT_IN (CDC_ENDPOINT_IN ),USB_ENDPOINT_TYPE_BULK,0x40,0) +}; + +int WEAK CDC_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 2; // uses 2 + return USB_SendControl(TRANSFER_PGM,&_cdcInterface,sizeof(_cdcInterface)); +} + +bool WEAK CDC_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (CDC_GET_LINE_CODING == r) + { + USB_SendControl(0,(void*)&_usbLineInfo,7); + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (CDC_SET_LINE_CODING == r) + { + USB_RecvControl((void*)&_usbLineInfo,7); + return true; + } + + if (CDC_SET_CONTROL_LINE_STATE == r) + { + _usbLineInfo.lineState = setup.wValueL; + + // auto-reset into the bootloader is triggered when the port, already + // open at 1200 bps, is closed. this is the signal to start the watchdog + // with a relatively long period so it can finish housekeeping tasks + // like servicing endpoints before the sketch ends + if (1200 == _usbLineInfo.dwDTERate) { + // We check DTR state to determine if host port is open (bit 0 of lineState). + if ((_usbLineInfo.lineState & 0x01) == 0) { + *(uint16_t *)0x0800 = 0x7777; + wdt_enable(WDTO_120MS); + } else { + // Most OSs do some intermediate steps when configuring ports and DTR can + // twiggle more than once before stabilizing. + // To avoid spurious resets we set the watchdog to 250ms and eventually + // cancel if DTR goes back high. + + wdt_disable(); + wdt_reset(); + *(uint16_t *)0x0800 = 0x0; + } + } + return true; + } + } + return false; +} + + +int _serialPeek = -1; +void Serial_::begin(uint16_t baud_count) +{ +} + +void Serial_::end(void) +{ +} + +void Serial_::accept(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + int i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + + // while we have room to store a byte + while (i != buffer->tail) { + int c = USB_Recv(CDC_RX); + if (c == -1) + break; // no more data + buffer->buffer[buffer->head] = c; + buffer->head = i; + + i = (unsigned int)(buffer->head+1) % SERIAL_BUFFER_SIZE; + } +} + +int Serial_::available(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + return (unsigned int)(SERIAL_BUFFER_SIZE + buffer->head - buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int Serial_::peek(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + if (buffer->head == buffer->tail) { + return -1; + } else { + return buffer->buffer[buffer->tail]; + } +} + +int Serial_::read(void) +{ + ring_buffer *buffer = &cdc_rx_buffer; + // if the head isn't ahead of the tail, we don't have any characters + if (buffer->head == buffer->tail) { + return -1; + } else { + unsigned char c = buffer->buffer[buffer->tail]; + buffer->tail = (unsigned int)(buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void Serial_::flush(void) +{ + USB_Flush(CDC_TX); +} + +size_t Serial_::write(uint8_t c) +{ + /* only try to send bytes if the high-level CDC connection itself + is open (not just the pipe) - the OS should set lineState when the port + is opened and clear lineState when the port is closed. + bytes sent before the user opens the connection or after + the connection is closed are lost - just like with a UART. */ + + // TODO - ZE - check behavior on different OSes and test what happens if an + // open connection isn't broken cleanly (cable is yanked out, host dies + // or locks up, or host virtual serial port hangs) + if (_usbLineInfo.lineState > 0) { + int r = USB_Send(CDC_TX,&c,1); + if (r > 0) { + return r; + } else { + setWriteError(); + return 0; + } + } + setWriteError(); + return 0; +} + +// This operator is a convenient way for a sketch to check whether the +// port has actually been configured and opened by the host (as opposed +// to just being connected to the host). It can be used, for example, in +// setup() before printing to ensure that an application on the host is +// actually ready to receive and display the data. +// We add a short delay before returning to fix a bug observed by Federico +// where the port is configured (lineState != 0) but not quite opened. +Serial_::operator bool() { + bool result = false; + if (_usbLineInfo.lineState > 0) + result = true; + delay(10); + return result; +} + +Serial_ Serial; + +#endif +#endif /* if defined(USBCON) */ diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Client.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Client.h new file mode 100644 index 000000000..ea134838a --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Client.h @@ -0,0 +1,26 @@ +#ifndef client_h +#define client_h +#include "Print.h" +#include "Stream.h" +#include "IPAddress.h" + +class Client : public Stream { + +public: + virtual int connect(IPAddress ip, uint16_t port) =0; + virtual int connect(const char *host, uint16_t port) =0; + virtual size_t write(uint8_t) =0; + virtual size_t write(const uint8_t *buf, size_t size) =0; + virtual int available() = 0; + virtual int read() = 0; + virtual int read(uint8_t *buf, size_t size) = 0; + virtual int peek() = 0; + virtual void flush() = 0; + virtual void stop() = 0; + virtual uint8_t connected() = 0; + virtual operator bool() = 0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HID.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HID.cpp new file mode 100644 index 000000000..ac6360844 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HID.cpp @@ -0,0 +1,520 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) +#ifdef HID_ENABLED + +//#define RAWHID_ENABLED + +// Singletons for mouse and keyboard + +Mouse_ Mouse; +Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ + +// HID report descriptor + +#define LSB(_x) ((_x) & 0xFF) +#define MSB(_x) ((_x) >> 8) + +#define RAWHID_USAGE_PAGE 0xFFC0 +#define RAWHID_USAGE 0x0C00 +#define RAWHID_TX_SIZE 64 +#define RAWHID_RX_SIZE 64 + +extern const u8 _hidReportDescriptor[] PROGMEM; +const u8 _hidReportDescriptor[] = { + + // Mouse + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 54 + 0x09, 0x02, // USAGE (Mouse) + 0xa1, 0x01, // COLLECTION (Application) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x85, 0x01, // REPORT_ID (1) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x01, // USAGE_MINIMUM (Button 1) + 0x29, 0x03, // USAGE_MAXIMUM (Button 3) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x95, 0x03, // REPORT_COUNT (3) + 0x75, 0x01, // REPORT_SIZE (1) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x05, // REPORT_SIZE (5) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x30, // USAGE (X) + 0x09, 0x31, // USAGE (Y) + 0x09, 0x38, // USAGE (Wheel) + 0x15, 0x81, // LOGICAL_MINIMUM (-127) + 0x25, 0x7f, // LOGICAL_MAXIMUM (127) + 0x75, 0x08, // REPORT_SIZE (8) + 0x95, 0x03, // REPORT_COUNT (3) + 0x81, 0x06, // INPUT (Data,Var,Rel) + 0xc0, // END_COLLECTION + 0xc0, // END_COLLECTION + + // Keyboard + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) // 47 + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x85, 0x02, // REPORT_ID (2) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x65, // LOGICAL_MAXIMUM (101) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0, // END_COLLECTION + +#if RAWHID_ENABLED + // RAW HID + 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 + 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), + + 0xA1, 0x01, // Collection 0x01 + 0x85, 0x03, // REPORT_ID (3) + 0x75, 0x08, // report size = 8 bits + 0x15, 0x00, // logical minimum = 0 + 0x26, 0xFF, 0x00, // logical maximum = 255 + + 0x95, 64, // report count TX + 0x09, 0x01, // usage + 0x81, 0x02, // Input (array) + + 0x95, 64, // report count RX + 0x09, 0x02, // usage + 0x91, 0x02, // Output (array) + 0xC0 // end collection +#endif +}; + +extern const HIDDescriptor _hidInterface PROGMEM; +const HIDDescriptor _hidInterface = +{ + D_INTERFACE(HID_INTERFACE,1,3,0,0), + D_HIDREPORT(sizeof(_hidReportDescriptor)), + D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,0x40,0x01) +}; + +//================================================================================ +//================================================================================ +// Driver + +u8 _hid_protocol = 1; +u8 _hid_idle = 1; + +#define WEAK __attribute__ ((weak)) + +int WEAK HID_GetInterface(u8* interfaceNum) +{ + interfaceNum[0] += 1; // uses 1 + return USB_SendControl(TRANSFER_PGM,&_hidInterface,sizeof(_hidInterface)); +} + +int WEAK HID_GetDescriptor(int i) +{ + return USB_SendControl(TRANSFER_PGM,_hidReportDescriptor,sizeof(_hidReportDescriptor)); +} + +void WEAK HID_SendReport(u8 id, const void* data, int len) +{ + USB_Send(HID_TX, &id, 1); + USB_Send(HID_TX | TRANSFER_RELEASE,data,len); +} + +bool WEAK HID_Setup(Setup& setup) +{ + u8 r = setup.bRequest; + u8 requestType = setup.bmRequestType; + if (REQUEST_DEVICETOHOST_CLASS_INTERFACE == requestType) + { + if (HID_GET_REPORT == r) + { + //HID_GetReport(); + return true; + } + if (HID_GET_PROTOCOL == r) + { + //Send8(_hid_protocol); // TODO + return true; + } + } + + if (REQUEST_HOSTTODEVICE_CLASS_INTERFACE == requestType) + { + if (HID_SET_PROTOCOL == r) + { + _hid_protocol = setup.wValueL; + return true; + } + + if (HID_SET_IDLE == r) + { + _hid_idle = setup.wValueL; + return true; + } + } + return false; +} + +//================================================================================ +//================================================================================ +// Mouse + +Mouse_::Mouse_(void) : _buttons(0) +{ +} + +void Mouse_::begin(void) +{ +} + +void Mouse_::end(void) +{ +} + +void Mouse_::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void Mouse_::move(signed char x, signed char y, signed char wheel) +{ + u8 m[4]; + m[0] = _buttons; + m[1] = x; + m[2] = y; + m[3] = wheel; + HID_SendReport(1,m,4); +} + +void Mouse_::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void Mouse_::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void Mouse_::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool Mouse_::isPressed(uint8_t b) +{ + if ((b & _buttons) > 0) + return true; + return false; +} + +//================================================================================ +//================================================================================ +// Keyboard + +Keyboard_::Keyboard_(void) +{ +} + +void Keyboard_::begin(void) +{ +} + +void Keyboard_::end(void) +{ +} + +void Keyboard_::sendReport(KeyReport* keys) +{ + HID_SendReport(2,keys,sizeof(KeyReport)); +} + +extern +const uint8_t _asciimap[128] PROGMEM; + +#define SHIFT 0x80 +const uint8_t _asciimap[128] = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + +uint8_t USBPutChar(uint8_t c); + +// press() adds the specified key (printing, non-printing, or modifier) +// to the persistent key report and sends the report. Because of the way +// USB HID works, the host acts like the key remains pressed until we +// call release(), releaseAll(), or otherwise clear the report and resend. +size_t Keyboard_::press(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers |= (1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + setWriteError(); + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers |= 0x02; // the left shift modifier + k &= 0x7F; + } + } + + // Add k to the key report only if it's not already present + // and if there is an empty slot. + if (_keyReport.keys[0] != k && _keyReport.keys[1] != k && + _keyReport.keys[2] != k && _keyReport.keys[3] != k && + _keyReport.keys[4] != k && _keyReport.keys[5] != k) { + + for (i=0; i<6; i++) { + if (_keyReport.keys[i] == 0x00) { + _keyReport.keys[i] = k; + break; + } + } + if (i == 6) { + setWriteError(); + return 0; + } + } + sendReport(&_keyReport); + return 1; +} + +// release() takes the specified key out of the persistent key report and +// sends the report. This tells the OS the key is no longer pressed and that +// it shouldn't be repeated any more. +size_t Keyboard_::release(uint8_t k) +{ + uint8_t i; + if (k >= 136) { // it's a non-printing key (not a modifier) + k = k - 136; + } else if (k >= 128) { // it's a modifier key + _keyReport.modifiers &= ~(1<<(k-128)); + k = 0; + } else { // it's a printing key + k = pgm_read_byte(_asciimap + k); + if (!k) { + return 0; + } + if (k & 0x80) { // it's a capital letter or other character reached with shift + _keyReport.modifiers &= ~(0x02); // the left shift modifier + k &= 0x7F; + } + } + + // Test the key report to see if k is present. Clear it if it exists. + // Check all positions in case the key is present more than once (which it shouldn't be) + for (i=0; i<6; i++) { + if (0 != k && _keyReport.keys[i] == k) { + _keyReport.keys[i] = 0x00; + } + } + + sendReport(&_keyReport); + return 1; +} + +void Keyboard_::releaseAll(void) +{ + _keyReport.keys[0] = 0; + _keyReport.keys[1] = 0; + _keyReport.keys[2] = 0; + _keyReport.keys[3] = 0; + _keyReport.keys[4] = 0; + _keyReport.keys[5] = 0; + _keyReport.modifiers = 0; + sendReport(&_keyReport); +} + +size_t Keyboard_::write(uint8_t c) +{ + uint8_t p = press(c); // Keydown + uint8_t r = release(c); // Keyup + return (p); // just return the result of press() since release() almost always returns 1 +} + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HardwareSerial.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HardwareSerial.cpp new file mode 100644 index 000000000..794a7be89 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,519 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#include +#include +#include +#include +#include "Arduino.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +/* + * on ATmega8, the uart and its bits are not numbered, so there is no "TXC0" + * definition. + */ +#if !defined(TXC0) +#if defined(TXC) +#define TXC0 TXC +#elif defined(TXC1) +// Some devices have uart1 but no uart0 +#define TXC0 TXC1 +#else +#error TXC0 not definable in HardwareSerial.h +#endif +#endif + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which head is the index of the location +// to which to write the next incoming character and tail is the index of the +// location from which to read. +#if (RAMEND < 1000) + #define SERIAL_BUFFER_SIZE 16 +#else + #define SERIAL_BUFFER_SIZE 64 +#endif + +struct ring_buffer +{ + unsigned char buffer[SERIAL_BUFFER_SIZE]; + volatile unsigned int head; + volatile unsigned int tail; +}; + +#if defined(USBCON) + ring_buffer rx_buffer = { { 0 }, 0, 0}; + ring_buffer tx_buffer = { { 0 }, 0, 0}; +#endif +#if defined(UBRRH) || defined(UBRR0H) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; + ring_buffer tx_buffer = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR1H) + ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer1 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR2H) + ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer2 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR3H) + ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; + ring_buffer tx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *buffer) +{ + int i = (unsigned int)(buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != buffer->tail) { + buffer->buffer[buffer->head] = c; + buffer->head = i; + } +} + +#if !defined(USART0_RX_vect) && defined(USART1_RX_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(USART_RX_vect) && !defined(SIG_USART0_RECV) && \ + !defined(SIG_UART0_RECV) && !defined(USART0_RX_vect) && \ + !defined(SIG_UART_RECV) + #error "Don't know what the Data Received vector is called for the first UART" +#else + void serialEvent() __attribute__((weak)); + void serialEvent() {} + #define serialEvent_implemented +#if defined(USART_RX_vect) + SIGNAL(USART_RX_vect) +#elif defined(SIG_USART0_RECV) + SIGNAL(SIG_USART0_RECV) +#elif defined(SIG_UART0_RECV) + SIGNAL(SIG_UART0_RECV) +#elif defined(USART0_RX_vect) + SIGNAL(USART0_RX_vect) +#elif defined(SIG_UART_RECV) + SIGNAL(SIG_UART_RECV) +#endif + { + #if defined(UDR0) + if (bit_is_clear(UCSR0A, UPE0)) { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } else { + unsigned char c = UDR0; + }; + #elif defined(UDR) + if (bit_is_clear(UCSRA, PE)) { + unsigned char c = UDR; + store_char(c, &rx_buffer); + } else { + unsigned char c = UDR; + }; + #else + #error UDR not defined + #endif + } +#endif +#endif + +#if defined(USART1_RX_vect) + void serialEvent1() __attribute__((weak)); + void serialEvent1() {} + #define serialEvent1_implemented + SIGNAL(USART1_RX_vect) + { + if (bit_is_clear(UCSR1A, UPE1)) { + unsigned char c = UDR1; + store_char(c, &rx_buffer1); + } else { + unsigned char c = UDR1; + }; + } +#elif defined(SIG_USART1_RECV) + #error SIG_USART1_RECV +#endif + +#if defined(USART2_RX_vect) && defined(UDR2) + void serialEvent2() __attribute__((weak)); + void serialEvent2() {} + #define serialEvent2_implemented + SIGNAL(USART2_RX_vect) + { + if (bit_is_clear(UCSR2A, UPE2)) { + unsigned char c = UDR2; + store_char(c, &rx_buffer2); + } else { + unsigned char c = UDR2; + }; + } +#elif defined(SIG_USART2_RECV) + #error SIG_USART2_RECV +#endif + +#if defined(USART3_RX_vect) && defined(UDR3) + void serialEvent3() __attribute__((weak)); + void serialEvent3() {} + #define serialEvent3_implemented + SIGNAL(USART3_RX_vect) + { + if (bit_is_clear(UCSR3A, UPE3)) { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } else { + unsigned char c = UDR3; + }; + } +#elif defined(SIG_USART3_RECV) + #error SIG_USART3_RECV +#endif + +void serialEventRun(void) +{ +#ifdef serialEvent_implemented + if (Serial.available()) serialEvent(); +#endif +#ifdef serialEvent1_implemented + if (Serial1.available()) serialEvent1(); +#endif +#ifdef serialEvent2_implemented + if (Serial2.available()) serialEvent2(); +#endif +#ifdef serialEvent3_implemented + if (Serial3.available()) serialEvent3(); +#endif +} + + +#if !defined(USART0_UDRE_vect) && defined(USART1_UDRE_vect) +// do nothing - on the 32u4 the first USART is USART1 +#else +#if !defined(UART0_UDRE_vect) && !defined(UART_UDRE_vect) && !defined(USART0_UDRE_vect) && !defined(USART_UDRE_vect) + #error "Don't know what the Data Register Empty vector is called for the first UART" +#else +#if defined(UART0_UDRE_vect) +ISR(UART0_UDRE_vect) +#elif defined(UART_UDRE_vect) +ISR(UART_UDRE_vect) +#elif defined(USART0_UDRE_vect) +ISR(USART0_UDRE_vect) +#elif defined(USART_UDRE_vect) +ISR(USART_UDRE_vect) +#endif +{ + if (tx_buffer.head == tx_buffer.tail) { + // Buffer empty, so disable interrupts +#if defined(UCSR0B) + cbi(UCSR0B, UDRIE0); +#else + cbi(UCSRB, UDRIE); +#endif + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer.buffer[tx_buffer.tail]; + tx_buffer.tail = (tx_buffer.tail + 1) % SERIAL_BUFFER_SIZE; + + #if defined(UDR0) + UDR0 = c; + #elif defined(UDR) + UDR = c; + #else + #error UDR not defined + #endif + } +} +#endif +#endif + +#ifdef USART1_UDRE_vect +ISR(USART1_UDRE_vect) +{ + if (tx_buffer1.head == tx_buffer1.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR1B, UDRIE1); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer1.buffer[tx_buffer1.tail]; + tx_buffer1.tail = (tx_buffer1.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR1 = c; + } +} +#endif + +#ifdef USART2_UDRE_vect +ISR(USART2_UDRE_vect) +{ + if (tx_buffer2.head == tx_buffer2.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR2B, UDRIE2); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer2.buffer[tx_buffer2.tail]; + tx_buffer2.tail = (tx_buffer2.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR2 = c; + } +} +#endif + +#ifdef USART3_UDRE_vect +ISR(USART3_UDRE_vect) +{ + if (tx_buffer3.head == tx_buffer3.tail) { + // Buffer empty, so disable interrupts + cbi(UCSR3B, UDRIE3); + } + else { + // There is more data in the output buffer. Send the next byte + unsigned char c = tx_buffer3.buffer[tx_buffer3.tail]; + tx_buffer3.tail = (tx_buffer3.tail + 1) % SERIAL_BUFFER_SIZE; + + UDR3 = c; + } +} +#endif + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _tx_buffer = tx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _ucsrc = ucsrc; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udrie = udrie; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(unsigned long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + transmitting = false; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::begin(unsigned long baud, byte config) +{ + uint16_t baud_setting; + uint8_t current_config; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + +try_again: + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + if ((baud_setting > 4095) && use_u2x) + { + use_u2x = false; + goto try_again; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + //set the data bits, parity, and stop bits +#if defined(__AVR_ATmega8__) + config |= 0x80; // select UCSRC register (shared with UBRRH) +#endif + *_ucsrc = config; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); +} + +void HardwareSerial::end() +{ + // wait for transmission of outgoing data + while (_tx_buffer->head != _tx_buffer->tail) + ; + + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); + cbi(*_ucsrb, _udrie); + + // clear any received data + _rx_buffer->head = _rx_buffer->tail; +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(SERIAL_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % SERIAL_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % SERIAL_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // UDR is kept full while the buffer is not empty, so TXC triggers when EMPTY && SENT + while (transmitting && ! (*_ucsra & _BV(TXC0))); + transmitting = false; +} + +size_t HardwareSerial::write(uint8_t c) +{ + int i = (_tx_buffer->head + 1) % SERIAL_BUFFER_SIZE; + + // If the output buffer is full, there's nothing for it other than to + // wait for the interrupt handler to empty it a bit + // ???: return 0 here instead? + while (i == _tx_buffer->tail) + ; + + _tx_buffer->buffer[_tx_buffer->head] = c; + _tx_buffer->head = i; + + sbi(*_ucsrb, _udrie); + // clear the TXC bit -- "can be cleared by writing a one to its bit location" + transmitting = true; + sbi(*_ucsra, TXC0); + + return 1; +} + +HardwareSerial::operator bool() { + return true; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UCSR0C, &UDR0, RXEN0, TXEN0, RXCIE0, UDRIE0, U2X0); +#elif defined(USBCON) + // do nothing - Serial object and buffers are initialized in CDC code +#else + #error no serial port defined (port 0) +#endif + +#if defined(UBRR1H) + HardwareSerial Serial1(&rx_buffer1, &tx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UCSR2C, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); +#endif + +#endif // whole file + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HardwareSerial.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HardwareSerial.h new file mode 100644 index 000000000..a73117f56 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/HardwareSerial.h @@ -0,0 +1,115 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + ring_buffer *_tx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_ucsrc; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udrie; + uint8_t _u2x; + bool transmitting; + public: + HardwareSerial(ring_buffer *rx_buffer, ring_buffer *tx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x); + void begin(unsigned long); + void begin(unsigned long, uint8_t); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + inline size_t write(unsigned long n) { return write((uint8_t)n); } + inline size_t write(long n) { return write((uint8_t)n); } + inline size_t write(unsigned int n) { return write((uint8_t)n); } + inline size_t write(int n) { return write((uint8_t)n); } + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); +}; + +// Define config for Serial.begin(baud, config); +#define SERIAL_5N1 0x00 +#define SERIAL_6N1 0x02 +#define SERIAL_7N1 0x04 +#define SERIAL_8N1 0x06 +#define SERIAL_5N2 0x08 +#define SERIAL_6N2 0x0A +#define SERIAL_7N2 0x0C +#define SERIAL_8N2 0x0E +#define SERIAL_5E1 0x20 +#define SERIAL_6E1 0x22 +#define SERIAL_7E1 0x24 +#define SERIAL_8E1 0x26 +#define SERIAL_5E2 0x28 +#define SERIAL_6E2 0x2A +#define SERIAL_7E2 0x2C +#define SERIAL_8E2 0x2E +#define SERIAL_5O1 0x30 +#define SERIAL_6O1 0x32 +#define SERIAL_7O1 0x34 +#define SERIAL_8O1 0x36 +#define SERIAL_5O2 0x38 +#define SERIAL_6O2 0x3A +#define SERIAL_7O2 0x3C +#define SERIAL_8O2 0x3E + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "USBAPI.h" +// extern HardwareSerial Serial_; +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +extern void serialEventRun(void) __attribute__((weak)); + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/IPAddress.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/IPAddress.cpp new file mode 100644 index 000000000..fe3deb77a --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/IPAddress.cpp @@ -0,0 +1,56 @@ + +#include +#include + +IPAddress::IPAddress() +{ + memset(_address, 0, sizeof(_address)); +} + +IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet) +{ + _address[0] = first_octet; + _address[1] = second_octet; + _address[2] = third_octet; + _address[3] = fourth_octet; +} + +IPAddress::IPAddress(uint32_t address) +{ + memcpy(_address, &address, sizeof(_address)); +} + +IPAddress::IPAddress(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); +} + +IPAddress& IPAddress::operator=(const uint8_t *address) +{ + memcpy(_address, address, sizeof(_address)); + return *this; +} + +IPAddress& IPAddress::operator=(uint32_t address) +{ + memcpy(_address, (const uint8_t *)&address, sizeof(_address)); + return *this; +} + +bool IPAddress::operator==(const uint8_t* addr) +{ + return memcmp(addr, _address, sizeof(_address)) == 0; +} + +size_t IPAddress::printTo(Print& p) const +{ + size_t n = 0; + for (int i =0; i < 3; i++) + { + n += p.print(_address[i], DEC); + n += p.print('.'); + } + n += p.print(_address[3], DEC); + return n; +} + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/IPAddress.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/IPAddress.h new file mode 100644 index 000000000..2585aec0e --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/IPAddress.h @@ -0,0 +1,76 @@ +/* + * + * MIT License: + * Copyright (c) 2011 Adrian McEwen + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * adrianm@mcqn.com 1/1/2011 + */ + +#ifndef IPAddress_h +#define IPAddress_h + +#include + +// A class to make it easier to handle and pass around IP addresses + +class IPAddress : public Printable { +private: + uint8_t _address[4]; // IPv4 address + // Access the raw byte array containing the address. Because this returns a pointer + // to the internal structure rather than a copy of the address this function should only + // be used when you know that the usage of the returned uint8_t* will be transient and not + // stored. + uint8_t* raw_address() { return _address; }; + +public: + // Constructors + IPAddress(); + IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet); + IPAddress(uint32_t address); + IPAddress(const uint8_t *address); + + // Overloaded cast operator to allow IPAddress objects to be used where a pointer + // to a four-byte uint8_t array is expected + operator uint32_t() { return *((uint32_t*)_address); }; + bool operator==(const IPAddress& addr) { return (*((uint32_t*)_address)) == (*((uint32_t*)addr._address)); }; + bool operator==(const uint8_t* addr); + + // Overloaded index operator to allow getting and setting individual octets of the address + uint8_t operator[](int index) const { return _address[index]; }; + uint8_t& operator[](int index) { return _address[index]; }; + + // Overloaded copy operators to allow initialisation of IPAddress objects from other types + IPAddress& operator=(const uint8_t *address); + IPAddress& operator=(uint32_t address); + + virtual size_t printTo(Print& p) const; + + friend class EthernetClass; + friend class UDP; + friend class Client; + friend class Server; + friend class DhcpClass; + friend class DNSClient; +}; + +const IPAddress INADDR_NONE(0,0,0,0); + + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Platform.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Platform.h new file mode 100644 index 000000000..8b8f74277 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Platform.h @@ -0,0 +1,23 @@ + +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#include +#include +#include +#include +#include + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; + +#include "Arduino.h" + +#if defined(USBCON) + #include "USBDesc.h" + #include "USBCore.h" + #include "USBAPI.h" +#endif /* if defined(USBCON) */ + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Print.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Print.cpp new file mode 100644 index 000000000..53961ec47 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Print.cpp @@ -0,0 +1,268 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "Arduino.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +size_t Print::write(const uint8_t *buffer, size_t size) +{ + size_t n = 0; + while (size--) { + n += write(*buffer++); + } + return n; +} + +size_t Print::print(const __FlashStringHelper *ifsh) +{ + const char PROGMEM *p = (const char PROGMEM *)ifsh; + size_t n = 0; + while (1) { + unsigned char c = pgm_read_byte(p++); + if (c == 0) break; + n += write(c); + } + return n; +} + +size_t Print::print(const String &s) +{ + size_t n = 0; + for (uint16_t i = 0; i < s.length(); i++) { + n += write(s[i]); + } + return n; +} + +size_t Print::print(const char str[]) +{ + return write(str); +} + +size_t Print::print(char c) +{ + return write(c); +} + +size_t Print::print(unsigned char b, int base) +{ + return print((unsigned long) b, base); +} + +size_t Print::print(int n, int base) +{ + return print((long) n, base); +} + +size_t Print::print(unsigned int n, int base) +{ + return print((unsigned long) n, base); +} + +size_t Print::print(long n, int base) +{ + if (base == 0) { + return write(n); + } else if (base == 10) { + if (n < 0) { + int t = print('-'); + n = -n; + return printNumber(n, 10) + t; + } + return printNumber(n, 10); + } else { + return printNumber(n, base); + } +} + +size_t Print::print(unsigned long n, int base) +{ + if (base == 0) return write(n); + else return printNumber(n, base); +} + +size_t Print::print(double n, int digits) +{ + return printFloat(n, digits); +} + +size_t Print::println(const __FlashStringHelper *ifsh) +{ + size_t n = print(ifsh); + n += println(); + return n; +} + +size_t Print::print(const Printable& x) +{ + return x.printTo(*this); +} + +size_t Print::println(void) +{ + size_t n = print('\r'); + n += print('\n'); + return n; +} + +size_t Print::println(const String &s) +{ + size_t n = print(s); + n += println(); + return n; +} + +size_t Print::println(const char c[]) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(char c) +{ + size_t n = print(c); + n += println(); + return n; +} + +size_t Print::println(unsigned char b, int base) +{ + size_t n = print(b, base); + n += println(); + return n; +} + +size_t Print::println(int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned int num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(unsigned long num, int base) +{ + size_t n = print(num, base); + n += println(); + return n; +} + +size_t Print::println(double num, int digits) +{ + size_t n = print(num, digits); + n += println(); + return n; +} + +size_t Print::println(const Printable& x) +{ + size_t n = print(x); + n += println(); + return n; +} + +// Private Methods ///////////////////////////////////////////////////////////// + +size_t Print::printNumber(unsigned long n, uint8_t base) { + char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte. + char *str = &buf[sizeof(buf) - 1]; + + *str = '\0'; + + // prevent crash if called with base == 1 + if (base < 2) base = 10; + + do { + unsigned long m = n; + n /= base; + char c = m - base * n; + *--str = c < 10 ? c + '0' : c + 'A' - 10; + } while(n); + + return write(str); +} + +size_t Print::printFloat(double number, uint8_t digits) +{ + size_t n = 0; + + if (isnan(number)) return print("nan"); + if (isinf(number)) return print("inf"); + if (number > 4294967040.0) return print ("ovf"); // constant determined empirically + if (number <-4294967040.0) return print ("ovf"); // constant determined empirically + + // Handle negative numbers + if (number < 0.0) + { + n += print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) { + n += print("."); + } + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + n += print(toPrint); + remainder -= toPrint; + } + + return n; +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Print.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Print.h new file mode 100644 index 000000000..dc7615087 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Print.h @@ -0,0 +1,81 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#include "WString.h" +#include "Printable.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 + +class Print +{ + private: + int write_error; + size_t printNumber(unsigned long, uint8_t); + size_t printFloat(double, uint8_t); + protected: + void setWriteError(int err = 1) { write_error = err; } + public: + Print() : write_error(0) {} + + int getWriteError() { return write_error; } + void clearWriteError() { setWriteError(0); } + + virtual size_t write(uint8_t) = 0; + size_t write(const char *str) { + if (str == NULL) return 0; + return write((const uint8_t *)str, strlen(str)); + } + virtual size_t write(const uint8_t *buffer, size_t size); + + size_t print(const __FlashStringHelper *); + size_t print(const String &); + size_t print(const char[]); + size_t print(char); + size_t print(unsigned char, int = DEC); + size_t print(int, int = DEC); + size_t print(unsigned int, int = DEC); + size_t print(long, int = DEC); + size_t print(unsigned long, int = DEC); + size_t print(double, int = 2); + size_t print(const Printable&); + + size_t println(const __FlashStringHelper *); + size_t println(const String &s); + size_t println(const char[]); + size_t println(char); + size_t println(unsigned char, int = DEC); + size_t println(int, int = DEC); + size_t println(unsigned int, int = DEC); + size_t println(long, int = DEC); + size_t println(unsigned long, int = DEC); + size_t println(double, int = 2); + size_t println(const Printable&); + size_t println(void); +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Printable.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Printable.h new file mode 100644 index 000000000..d03c9af62 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Printable.h @@ -0,0 +1,40 @@ +/* + Printable.h - Interface class that allows printing of complex types + Copyright (c) 2011 Adrian McEwen. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Printable_h +#define Printable_h + +#include + +class Print; + +/** The Printable class provides a way for new classes to allow themselves to be printed. + By deriving from Printable and implementing the printTo method, it will then be possible + for users to print out instances of this class by passing them into the usual + Print::print and Print::println methods. +*/ + +class Printable +{ + public: + virtual size_t printTo(Print& p) const = 0; +}; + +#endif + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Server.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Server.h new file mode 100644 index 000000000..9674c7626 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Server.h @@ -0,0 +1,9 @@ +#ifndef server_h +#define server_h + +class Server : public Print { +public: + virtual void begin() =0; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Stream.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Stream.cpp new file mode 100644 index 000000000..aafb7fcf9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Stream.cpp @@ -0,0 +1,270 @@ +/* + Stream.cpp - adds parsing methods to Stream class + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Created July 2011 + parsing functions based on TextFinder library by Michael Margolis + */ + +#include "Arduino.h" +#include "Stream.h" + +#define PARSE_TIMEOUT 1000 // default number of milli-seconds to wait +#define NO_SKIP_CHAR 1 // a magic char not found in a valid ASCII numeric field + +// private method to read stream with timeout +int Stream::timedRead() +{ + int c; + _startMillis = millis(); + do { + c = read(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// private method to peek stream with timeout +int Stream::timedPeek() +{ + int c; + _startMillis = millis(); + do { + c = peek(); + if (c >= 0) return c; + } while(millis() - _startMillis < _timeout); + return -1; // -1 indicates timeout +} + +// returns peek of the next digit in the stream or -1 if timeout +// discards non-numeric characters +int Stream::peekNextDigit() +{ + int c; + while (1) { + c = timedPeek(); + if (c < 0) return c; // timeout + if (c == '-') return c; + if (c >= '0' && c <= '9') return c; + read(); // discard non-numeric + } +} + +// Public Methods +////////////////////////////////////////////////////////////// + +void Stream::setTimeout(unsigned long timeout) // sets the maximum number of milliseconds to wait +{ + _timeout = timeout; +} + + // find returns true if the target string is found +bool Stream::find(char *target) +{ + return findUntil(target, NULL); +} + +// reads data from the stream until the target string of given length is found +// returns true if target string is found, false if timed out +bool Stream::find(char *target, size_t length) +{ + return findUntil(target, length, NULL, 0); +} + +// as find but search ends if the terminator string is found +bool Stream::findUntil(char *target, char *terminator) +{ + return findUntil(target, strlen(target), terminator, strlen(terminator)); +} + +// reads data from the stream until the target string of the given length is found +// search terminated if the terminator string is found +// returns true if target string is found, false if terminated or timed out +bool Stream::findUntil(char *target, size_t targetLen, char *terminator, size_t termLen) +{ + size_t index = 0; // maximum target string length is 64k bytes! + size_t termIndex = 0; + int c; + + if( *target == 0) + return true; // return true if target is a null string + while( (c = timedRead()) > 0){ + + if(c != target[index]) + index = 0; // reset index if any char does not match + + if( c == target[index]){ + //////Serial.print("found "); Serial.write(c); Serial.print("index now"); Serial.println(index+1); + if(++index >= targetLen){ // return true if all chars in the target match + return true; + } + } + + if(termLen > 0 && c == terminator[termIndex]){ + if(++termIndex >= termLen) + return false; // return false if terminate string found before target string + } + else + termIndex = 0; + } + return false; +} + + +// returns the first valid (long) integer value from the current position. +// initial characters that are not digits (or the minus sign) are skipped +// function is terminated by the first character that is not a digit. +long Stream::parseInt() +{ + return parseInt(NO_SKIP_CHAR); // terminate on first non-digit character (or timeout) +} + +// as above but a given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +long Stream::parseInt(char skipChar) +{ + boolean isNegative = false; + long value = 0; + int c; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore this charactor + else if(c == '-') + isNegative = true; + else if(c >= '0' && c <= '9') // is c a digit? + value = value * 10 + c - '0'; + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == skipChar ); + + if(isNegative) + value = -value; + return value; +} + + +// as parseInt but returns a floating point value +float Stream::parseFloat() +{ + return parseFloat(NO_SKIP_CHAR); +} + +// as above but the given skipChar is ignored +// this allows format characters (typically commas) in values to be ignored +float Stream::parseFloat(char skipChar){ + boolean isNegative = false; + boolean isFraction = false; + long value = 0; + char c; + float fraction = 1.0; + + c = peekNextDigit(); + // ignore non numeric leading characters + if(c < 0) + return 0; // zero returned if timeout + + do{ + if(c == skipChar) + ; // ignore + else if(c == '-') + isNegative = true; + else if (c == '.') + isFraction = true; + else if(c >= '0' && c <= '9') { // is c a digit? + value = value * 10 + c - '0'; + if(isFraction) + fraction *= 0.1; + } + read(); // consume the character we got with peek + c = timedPeek(); + } + while( (c >= '0' && c <= '9') || c == '.' || c == skipChar ); + + if(isNegative) + value = -value; + if(isFraction) + return value * fraction; + else + return value; +} + +// read characters from stream into buffer +// terminates if length characters have been read, or timeout (see setTimeout) +// returns the number of characters placed in the buffer +// the buffer is NOT null terminated. +// +size_t Stream::readBytes(char *buffer, size_t length) +{ + size_t count = 0; + while (count < length) { + int c = timedRead(); + if (c < 0) break; + *buffer++ = (char)c; + count++; + } + return count; +} + + +// as readBytes with terminator character +// terminates if length characters have been read, timeout, or if the terminator character detected +// returns the number of characters placed in the buffer (0 means no valid data found) + +size_t Stream::readBytesUntil(char terminator, char *buffer, size_t length) +{ + if (length < 1) return 0; + size_t index = 0; + while (index < length) { + int c = timedRead(); + if (c < 0 || c == terminator) break; + *buffer++ = (char)c; + index++; + } + return index; // return number of characters, not including null terminator +} + +String Stream::readString() +{ + String ret; + int c = timedRead(); + while (c >= 0) + { + ret += (char)c; + c = timedRead(); + } + return ret; +} + +String Stream::readStringUntil(char terminator) +{ + String ret; + int c = timedRead(); + while (c >= 0 && c != terminator) + { + ret += (char)c; + c = timedRead(); + } + return ret; +} + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Stream.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Stream.h new file mode 100644 index 000000000..58bbf752f --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Stream.h @@ -0,0 +1,96 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + parsing functions based on TextFinder library by Michael Margolis +*/ + +#ifndef Stream_h +#define Stream_h + +#include +#include "Print.h" + +// compatability macros for testing +/* +#define getInt() parseInt() +#define getInt(skipChar) parseInt(skipchar) +#define getFloat() parseFloat() +#define getFloat(skipChar) parseFloat(skipChar) +#define getString( pre_string, post_string, buffer, length) +readBytesBetween( pre_string, terminator, buffer, length) +*/ + +class Stream : public Print +{ + private: + unsigned long _timeout; // number of milliseconds to wait for the next char before aborting timed read + unsigned long _startMillis; // used for timeout measurement + int timedRead(); // private method to read stream with timeout + int timedPeek(); // private method to peek stream with timeout + int peekNextDigit(); // returns the next numeric digit in the stream or -1 if timeout + + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; + + Stream() {_timeout=1000;} + +// parsing methods + + void setTimeout(unsigned long timeout); // sets maximum milliseconds to wait for stream data, default is 1 second + + bool find(char *target); // reads data from the stream until the target string is found + // returns true if target string is found, false if timed out (see setTimeout) + + bool find(char *target, size_t length); // reads data from the stream until the target string of given length is found + // returns true if target string is found, false if timed out + + bool findUntil(char *target, char *terminator); // as find but search ends if the terminator string is found + + bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found + + + long parseInt(); // returns the first valid (long) integer value from the current position. + // initial characters that are not digits (or the minus sign) are skipped + // integer is terminated by the first character that is not a digit. + + float parseFloat(); // float version of parseInt + + size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer + // terminates if length characters have been read or timeout (see setTimeout) + // returns the number of characters placed in the buffer (0 means no valid data found) + + size_t readBytesUntil( char terminator, char *buffer, size_t length); // as readBytes with terminator character + // terminates if length characters have been read, timeout, or if the terminator character detected + // returns the number of characters placed in the buffer (0 means no valid data found) + + // Arduino String functions to be added here + String readString(); + String readStringUntil(char terminator); + + protected: + long parseInt(char skipChar); // as above but the given skipChar is ignored + // as above but the given skipChar is ignored + // this allows format characters (typically commas) in values to be ignored + + float parseFloat(char skipChar); // as above but the given skipChar is ignored +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Tone.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Tone.cpp new file mode 100644 index 000000000..9bb6fe721 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Tone.cpp @@ -0,0 +1,616 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +0008 S Kanemoto 12/06/22 Fixed for Leonardo by @maris_HY +*************************************************/ + +#include +#include +#include "Arduino.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#elif defined(__AVR_ATmega32U4__) + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER3 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 +#define USE_TIMER2 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#ifdef USE_TIMER0 +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER1 +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER2 +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER3 +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER4 +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} +#endif + + +#ifdef USE_TIMER5 +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBAPI.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBAPI.h new file mode 100644 index 000000000..eb2e5937d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBAPI.h @@ -0,0 +1,196 @@ + + +#ifndef __USBAPI__ +#define __USBAPI__ + +#if defined(USBCON) + +//================================================================================ +//================================================================================ +// USB + +class USBDevice_ +{ +public: + USBDevice_(); + bool configured(); + + void attach(); + void detach(); // Serial port goes down too... + void poll(); +}; +extern USBDevice_ USBDevice; + +//================================================================================ +//================================================================================ +// Serial over CDC (Serial1 is the physical port) + +class Serial_ : public Stream +{ +private: + ring_buffer *_cdc_rx_buffer; +public: + void begin(uint16_t baud_count); + void end(void); + + virtual int available(void); + virtual void accept(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); +}; +extern Serial_ Serial; + +//================================================================================ +//================================================================================ +// Mouse + +#define MOUSE_LEFT 1 +#define MOUSE_RIGHT 2 +#define MOUSE_MIDDLE 4 +#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) + +class Mouse_ +{ +private: + uint8_t _buttons; + void buttons(uint8_t b); +public: + Mouse_(void); + void begin(void); + void end(void); + void click(uint8_t b = MOUSE_LEFT); + void move(signed char x, signed char y, signed char wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_LEFT); // check LEFT by default +}; +extern Mouse_ Mouse; + +//================================================================================ +//================================================================================ +// Keyboard + +#define KEY_LEFT_CTRL 0x80 +#define KEY_LEFT_SHIFT 0x81 +#define KEY_LEFT_ALT 0x82 +#define KEY_LEFT_GUI 0x83 +#define KEY_RIGHT_CTRL 0x84 +#define KEY_RIGHT_SHIFT 0x85 +#define KEY_RIGHT_ALT 0x86 +#define KEY_RIGHT_GUI 0x87 + +#define KEY_UP_ARROW 0xDA +#define KEY_DOWN_ARROW 0xD9 +#define KEY_LEFT_ARROW 0xD8 +#define KEY_RIGHT_ARROW 0xD7 +#define KEY_BACKSPACE 0xB2 +#define KEY_TAB 0xB3 +#define KEY_RETURN 0xB0 +#define KEY_ESC 0xB1 +#define KEY_INSERT 0xD1 +#define KEY_DELETE 0xD4 +#define KEY_PAGE_UP 0xD3 +#define KEY_PAGE_DOWN 0xD6 +#define KEY_HOME 0xD2 +#define KEY_END 0xD5 +#define KEY_CAPS_LOCK 0xC1 +#define KEY_F1 0xC2 +#define KEY_F2 0xC3 +#define KEY_F3 0xC4 +#define KEY_F4 0xC5 +#define KEY_F5 0xC6 +#define KEY_F6 0xC7 +#define KEY_F7 0xC8 +#define KEY_F8 0xC9 +#define KEY_F9 0xCA +#define KEY_F10 0xCB +#define KEY_F11 0xCC +#define KEY_F12 0xCD + +// Low level key report: up to 6 keys and shift, ctrl etc at once +typedef struct +{ + uint8_t modifiers; + uint8_t reserved; + uint8_t keys[6]; +} KeyReport; + +class Keyboard_ : public Print +{ +private: + KeyReport _keyReport; + void sendReport(KeyReport* keys); +public: + Keyboard_(void); + void begin(void); + void end(void); + virtual size_t write(uint8_t k); + virtual size_t press(uint8_t k); + virtual size_t release(uint8_t k); + virtual void releaseAll(void); +}; +extern Keyboard_ Keyboard; + +//================================================================================ +//================================================================================ +// Low level API + +typedef struct +{ + uint8_t bmRequestType; + uint8_t bRequest; + uint8_t wValueL; + uint8_t wValueH; + uint16_t wIndex; + uint16_t wLength; +} Setup; + +//================================================================================ +//================================================================================ +// HID 'Driver' + +int HID_GetInterface(uint8_t* interfaceNum); +int HID_GetDescriptor(int i); +bool HID_Setup(Setup& setup); +void HID_SendReport(uint8_t id, const void* data, int len); + +//================================================================================ +//================================================================================ +// MSC 'Driver' + +int MSC_GetInterface(uint8_t* interfaceNum); +int MSC_GetDescriptor(int i); +bool MSC_Setup(Setup& setup); +bool MSC_Data(uint8_t rx,uint8_t tx); + +//================================================================================ +//================================================================================ +// CSC 'Driver' + +int CDC_GetInterface(uint8_t* interfaceNum); +int CDC_GetDescriptor(int i); +bool CDC_Setup(Setup& setup); + +//================================================================================ +//================================================================================ + +#define TRANSFER_PGM 0x80 +#define TRANSFER_RELEASE 0x40 +#define TRANSFER_ZERO 0x20 + +int USB_SendControl(uint8_t flags, const void* d, int len); +int USB_RecvControl(void* d, int len); + +uint8_t USB_Available(uint8_t ep); +int USB_Send(uint8_t ep, const void* data, int len); // blocking +int USB_Recv(uint8_t ep, void* data, int len); // non-blocking +int USB_Recv(uint8_t ep); // non-blocking +void USB_Flush(uint8_t ep); + +#endif + +#endif /* if defined(USBCON) */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBCore.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBCore.cpp new file mode 100644 index 000000000..d3e017065 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBCore.cpp @@ -0,0 +1,684 @@ + + +/* Copyright (c) 2010, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "Platform.h" +#include "USBAPI.h" +#include "USBDesc.h" + +#if defined(USBCON) + +#define EP_TYPE_CONTROL 0x00 +#define EP_TYPE_BULK_IN 0x81 +#define EP_TYPE_BULK_OUT 0x80 +#define EP_TYPE_INTERRUPT_IN 0xC1 +#define EP_TYPE_INTERRUPT_OUT 0xC0 +#define EP_TYPE_ISOCHRONOUS_IN 0x41 +#define EP_TYPE_ISOCHRONOUS_OUT 0x40 + +/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ +#define TX_RX_LED_PULSE_MS 100 +volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ +volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ + +//================================================================== +//================================================================== + +extern const u16 STRING_LANGUAGE[] PROGMEM; +extern const u16 STRING_IPRODUCT[] PROGMEM; +extern const u16 STRING_IMANUFACTURER[] PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM; + +const u16 STRING_LANGUAGE[2] = { + (3<<8) | (2+2), + 0x0409 // English +}; + +const u16 STRING_IPRODUCT[17] = { + (3<<8) | (2+2*16), +#if USB_PID == 0x8036 + 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o' +#elif USB_PID == 0x8037 + 'A','r','d','u','i','n','o',' ','M','i','c','r','o',' ',' ',' ' +#elif USB_PID == 0x803C + 'A','r','d','u','i','n','o',' ','E','s','p','l','o','r','a',' ' +#elif USB_PID == 0x9208 + 'L','i','l','y','P','a','d','U','S','B',' ',' ',' ',' ',' ',' ' +#else + 'U','S','B',' ','I','O',' ','B','o','a','r','d',' ',' ',' ',' ' +#endif +}; + +const u16 STRING_IMANUFACTURER[12] = { + (3<<8) | (2+2*11), +#if USB_VID == 0x2341 + 'A','r','d','u','i','n','o',' ','L','L','C' +#elif USB_VID == 0x1b4f + 'S','p','a','r','k','F','u','n',' ',' ',' ' +#else + 'U','n','k','n','o','w','n',' ',' ',' ',' ' +#endif +}; + +#ifdef CDC_ENABLED +#define DEVICE_CLASS 0x02 +#else +#define DEVICE_CLASS 0x00 +#endif + +// DEVICE DESCRIPTOR +const DeviceDescriptor USB_DeviceDescriptor = + D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +const DeviceDescriptor USB_DeviceDescriptorA = + D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); + +//================================================================== +//================================================================== + +volatile u8 _usbConfiguration = 0; + +static inline void WaitIN(void) +{ + while (!(UEINTX & (1< len) + n = len; + len -= n; + { + LockEP lock(ep); + if (ep & TRANSFER_ZERO) + { + while (n--) + Send8(0); + } + else if (ep & TRANSFER_PGM) + { + while (n--) + Send8(pgm_read_byte(data++)); + } + else + { + while (n--) + Send8(*data++); + } + if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer + ReleaseTX(); + } + } + TXLED1; // light the TX LED + TxLEDPulse = TX_RX_LED_PULSE_MS; + return r; +} + +extern const u8 _initEndpoints[] PROGMEM; +const u8 _initEndpoints[] = +{ + 0, + +#ifdef CDC_ENABLED + EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM + EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT + EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED + EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT +#endif +}; + +#define EP_SINGLE_64 0x32 // EP0 +#define EP_DOUBLE_64 0x36 // Other endpoints + +static +void InitEP(u8 index, u8 type, u8 size) +{ + UENUM = index; + UECONX = 1; + UECFG0X = type; + UECFG1X = size; +} + +static +void InitEndpoints() +{ + for (u8 i = 1; i < sizeof(_initEndpoints); i++) + { + UENUM = i; + UECONX = 1; + UECFG0X = pgm_read_byte(_initEndpoints+i); + UECFG1X = EP_DOUBLE_64; + } + UERST = 0x7E; // And reset them + UERST = 0; +} + +// Handle CLASS_INTERFACE requests +static +bool ClassInterfaceRequest(Setup& setup) +{ + u8 i = setup.wIndex; + +#ifdef CDC_ENABLED + if (CDC_ACM_INTERFACE == i) + return CDC_Setup(setup); +#endif + +#ifdef HID_ENABLED + if (HID_INTERFACE == i) + return HID_Setup(setup); +#endif + return false; +} + +int _cmark; +int _cend; +void InitControl(int end) +{ + SetEP(0); + _cmark = 0; + _cend = end; +} + +static +bool SendControl(u8 d) +{ + if (_cmark < _cend) + { + if (!WaitForINOrOUT()) + return false; + Send8(d); + if (!((_cmark + 1) & 0x3F)) + ClearIN(); // Fifo is full, release this packet + } + _cmark++; + return true; +}; + +// Clipped by _cmark/_cend +int USB_SendControl(u8 flags, const void* d, int len) +{ + int sent = len; + const u8* data = (const u8*)d; + bool pgm = flags & TRANSFER_PGM; + while (len--) + { + u8 c = pgm ? pgm_read_byte(data++) : *data++; + if (!SendControl(c)) + return -1; + } + return sent; +} + +// Does not timeout or cross fifo boundaries +// Will only work for transfers <= 64 bytes +// TODO +int USB_RecvControl(void* d, int len) +{ + WaitOUT(); + Recv((u8*)d,len); + ClearOUT(); + return len; +} + +int SendInterfaces() +{ + int total = 0; + u8 interfaces = 0; + +#ifdef CDC_ENABLED + total = CDC_GetInterface(&interfaces); +#endif + +#ifdef HID_ENABLED + total += HID_GetInterface(&interfaces); +#endif + + return interfaces; +} + +// Construct a dynamic configuration descriptor +// This really needs dynamic endpoint allocation etc +// TODO +static +bool SendConfiguration(int maxlen) +{ + // Count and measure interfaces + InitControl(0); + int interfaces = SendInterfaces(); + ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); + + // Now send them + InitControl(maxlen); + USB_SendControl(0,&config,sizeof(ConfigDescriptor)); + SendInterfaces(); + return true; +} + +u8 _cdcComposite = 0; + +static +bool SendDescriptor(Setup& setup) +{ + u8 t = setup.wValueH; + if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) + return SendConfiguration(setup.wLength); + + InitControl(setup.wLength); +#ifdef HID_ENABLED + if (HID_REPORT_DESCRIPTOR_TYPE == t) + return HID_GetDescriptor(t); +#endif + + u8 desc_length = 0; + const u8* desc_addr = 0; + if (USB_DEVICE_DESCRIPTOR_TYPE == t) + { + if (setup.wLength == 8) + _cdcComposite = 1; + desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor; + } + else if (USB_STRING_DESCRIPTOR_TYPE == t) + { + if (setup.wValueL == 0) + desc_addr = (const u8*)&STRING_LANGUAGE; + else if (setup.wValueL == IPRODUCT) + desc_addr = (const u8*)&STRING_IPRODUCT; + else if (setup.wValueL == IMANUFACTURER) + desc_addr = (const u8*)&STRING_IMANUFACTURER; + else + return false; + } + + if (desc_addr == 0) + return false; + if (desc_length == 0) + desc_length = pgm_read_byte(desc_addr); + + USB_SendControl(TRANSFER_PGM,desc_addr,desc_length); + return true; +} + +// Endpoint 0 interrupt +ISR(USB_COM_vect) +{ + SetEP(0); + if (!ReceivedSetupInt()) + return; + + Setup setup; + Recv((u8*)&setup,8); + ClearSetupInt(); + + u8 requestType = setup.bmRequestType; + if (requestType & REQUEST_DEVICETOHOST) + WaitIN(); + else + ClearIN(); + + bool ok = true; + if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) + { + // Standard Requests + u8 r = setup.bRequest; + if (GET_STATUS == r) + { + Send8(0); // TODO + Send8(0); + } + else if (CLEAR_FEATURE == r) + { + } + else if (SET_FEATURE == r) + { + } + else if (SET_ADDRESS == r) + { + WaitIN(); + UDADDR = setup.wValueL | (1<> 8) & 0xFF) + +#define CDC_V1_10 0x0110 +#define CDC_COMMUNICATION_INTERFACE_CLASS 0x02 + +#define CDC_CALL_MANAGEMENT 0x01 +#define CDC_ABSTRACT_CONTROL_MODEL 0x02 +#define CDC_HEADER 0x00 +#define CDC_ABSTRACT_CONTROL_MANAGEMENT 0x02 +#define CDC_UNION 0x06 +#define CDC_CS_INTERFACE 0x24 +#define CDC_CS_ENDPOINT 0x25 +#define CDC_DATA_INTERFACE_CLASS 0x0A + +#define MSC_SUBCLASS_SCSI 0x06 +#define MSC_PROTOCOL_BULK_ONLY 0x50 + +#define HID_HID_DESCRIPTOR_TYPE 0x21 +#define HID_REPORT_DESCRIPTOR_TYPE 0x22 +#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 + + +// Device +typedef struct { + u8 len; // 18 + u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE + u16 usbVersion; // 0x200 + u8 deviceClass; + u8 deviceSubClass; + u8 deviceProtocol; + u8 packetSize0; // Packet 0 + u16 idVendor; + u16 idProduct; + u16 deviceVersion; // 0x100 + u8 iManufacturer; + u8 iProduct; + u8 iSerialNumber; + u8 bNumConfigurations; +} DeviceDescriptor; + +// Config +typedef struct { + u8 len; // 9 + u8 dtype; // 2 + u16 clen; // total length + u8 numInterfaces; + u8 config; + u8 iconfig; + u8 attributes; + u8 maxPower; +} ConfigDescriptor; + +// String + +// Interface +typedef struct +{ + u8 len; // 9 + u8 dtype; // 4 + u8 number; + u8 alternate; + u8 numEndpoints; + u8 interfaceClass; + u8 interfaceSubClass; + u8 protocol; + u8 iInterface; +} InterfaceDescriptor; + +// Endpoint +typedef struct +{ + u8 len; // 7 + u8 dtype; // 5 + u8 addr; + u8 attr; + u16 packetSize; + u8 interval; +} EndpointDescriptor; + +// Interface Association Descriptor +// Used to bind 2 interfaces together in CDC compostite device +typedef struct +{ + u8 len; // 8 + u8 dtype; // 11 + u8 firstInterface; + u8 interfaceCount; + u8 functionClass; + u8 funtionSubClass; + u8 functionProtocol; + u8 iInterface; +} IADDescriptor; + +// CDC CS interface descriptor +typedef struct +{ + u8 len; // 5 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; + u8 d1; +} CDCCSInterfaceDescriptor; + +typedef struct +{ + u8 len; // 4 + u8 dtype; // 0x24 + u8 subtype; + u8 d0; +} CDCCSInterfaceDescriptor4; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; + u8 bDataInterface; +} CMFunctionalDescriptor; + +typedef struct +{ + u8 len; + u8 dtype; // 0x24 + u8 subtype; // 1 + u8 bmCapabilities; +} ACMFunctionalDescriptor; + +typedef struct +{ + // IAD + IADDescriptor iad; // Only needed on compound device + + // Control + InterfaceDescriptor cif; // + CDCCSInterfaceDescriptor header; + CMFunctionalDescriptor callManagement; // Call Management + ACMFunctionalDescriptor controlManagement; // ACM + CDCCSInterfaceDescriptor functionalDescriptor; // CDC_UNION + EndpointDescriptor cifin; + + // Data + InterfaceDescriptor dif; + EndpointDescriptor in; + EndpointDescriptor out; +} CDCDescriptor; + +typedef struct +{ + InterfaceDescriptor msc; + EndpointDescriptor in; + EndpointDescriptor out; +} MSCDescriptor; + +typedef struct +{ + u8 len; // 9 + u8 dtype; // 0x21 + u8 addr; + u8 versionL; // 0x101 + u8 versionH; // 0x101 + u8 country; + u8 desctype; // 0x22 report + u8 descLenL; + u8 descLenH; +} HIDDescDescriptor; + +typedef struct +{ + InterfaceDescriptor hid; + HIDDescDescriptor desc; + EndpointDescriptor in; +} HIDDescriptor; + + +#define D_DEVICE(_class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs) \ + { 18, 1, 0x200, _class,_subClass,_proto,_packetSize0,_vid,_pid,_version,_im,_ip,_is,_configs } + +#define D_CONFIG(_totalLength,_interfaces) \ + { 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_BUS_POWERED, USB_CONFIG_POWER_MA(500) } + +#define D_INTERFACE(_n,_numEndpoints,_class,_subClass,_protocol) \ + { 9, 4, _n, 0, _numEndpoints, _class,_subClass, _protocol, 0 } + +#define D_ENDPOINT(_addr,_attr,_packetSize, _interval) \ + { 7, 5, _addr,_attr,_packetSize, _interval } + +#define D_IAD(_firstInterface, _count, _class, _subClass, _protocol) \ + { 8, 11, _firstInterface, _count, _class, _subClass, _protocol, 0 } + +#define D_HIDREPORT(_descriptorLength) \ + { 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength, 0 } + +#define D_CDCCS(_subtype,_d0,_d1) { 5, 0x24, _subtype, _d0, _d1 } +#define D_CDCCS4(_subtype,_d0) { 4, 0x24, _subtype, _d0 } + + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBDesc.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBDesc.h new file mode 100644 index 000000000..900713e0f --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/USBDesc.h @@ -0,0 +1,63 @@ + + +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#define CDC_ENABLED +#define HID_ENABLED + + +#ifdef CDC_ENABLED +#define CDC_INTERFACE_COUNT 2 +#define CDC_ENPOINT_COUNT 3 +#else +#define CDC_INTERFACE_COUNT 0 +#define CDC_ENPOINT_COUNT 0 +#endif + +#ifdef HID_ENABLED +#define HID_INTERFACE_COUNT 1 +#define HID_ENPOINT_COUNT 1 +#else +#define HID_INTERFACE_COUNT 0 +#define HID_ENPOINT_COUNT 0 +#endif + +#define CDC_ACM_INTERFACE 0 // CDC ACM +#define CDC_DATA_INTERFACE 1 // CDC Data +#define CDC_FIRST_ENDPOINT 1 +#define CDC_ENDPOINT_ACM (CDC_FIRST_ENDPOINT) // CDC First +#define CDC_ENDPOINT_OUT (CDC_FIRST_ENDPOINT+1) +#define CDC_ENDPOINT_IN (CDC_FIRST_ENDPOINT+2) + +#define HID_INTERFACE (CDC_ACM_INTERFACE + CDC_INTERFACE_COUNT) // HID Interface +#define HID_FIRST_ENDPOINT (CDC_FIRST_ENDPOINT + CDC_ENPOINT_COUNT) +#define HID_ENDPOINT_INT (HID_FIRST_ENDPOINT) + +#define INTERFACE_COUNT (MSC_INTERFACE + MSC_INTERFACE_COUNT) + +#ifdef CDC_ENABLED +#define CDC_RX CDC_ENDPOINT_OUT +#define CDC_TX CDC_ENDPOINT_IN +#endif + +#ifdef HID_ENABLED +#define HID_TX HID_ENDPOINT_INT +#endif + +#define IMANUFACTURER 1 +#define IPRODUCT 2 + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Udp.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Udp.h new file mode 100644 index 000000000..dc5644b9d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/Udp.h @@ -0,0 +1,88 @@ +/* + * Udp.cpp: Library to send/receive UDP packets. + * + * NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these) + * 1) UDP does not guarantee the order in which assembled UDP packets are received. This + * might not happen often in practice, but in larger network topologies, a UDP + * packet can be received out of sequence. + * 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being + * aware of it. Again, this may not be a concern in practice on small local networks. + * For more information, see http://www.cafeaulait.org/course/week12/35.html + * + * MIT License: + * Copyright (c) 2008 Bjoern Hartmann + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * bjoern@cs.stanford.edu 12/30/2008 + */ + +#ifndef udp_h +#define udp_h + +#include +#include + +class UDP : public Stream { + +public: + virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use + virtual void stop() =0; // Finish with the UDP socket + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) =0; + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port) =0; + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() =0; + // Write a single byte into the packet + virtual size_t write(uint8_t) =0; + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size) =0; + + // Start processing the next available incoming packet + // Returns the size of the packet in bytes, or 0 if no packets are available + virtual int parsePacket() =0; + // Number of bytes remaining in the current packet + virtual int available() =0; + // Read a single byte from the current packet + virtual int read() =0; + // Read up to len bytes from the current packet and place them into buffer + // Returns the number of bytes read, or 0 if none are available + virtual int read(unsigned char* buffer, size_t len) =0; + // Read up to len characters from the current packet and place them into buffer + // Returns the number of characters read, or 0 if none are available + virtual int read(char* buffer, size_t len) =0; + // Return the next byte from the current packet without moving on to the next byte + virtual int peek() =0; + virtual void flush() =0; // Finish reading the current packet + + // Return the IP address of the host who sent the current incoming packet + virtual IPAddress remoteIP() =0; + // Return the port of the host who sent the current incoming packet + virtual uint16_t remotePort() =0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WCharacter.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WInterrupts.c b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WInterrupts.c new file mode 100644 index 000000000..62efc9cad --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WInterrupts.c @@ -0,0 +1,322 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include + +#include "wiring_private.h" + +static volatile voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(__AVR_ATmega32U4__) + // I hate doing this, but the register assignment differs between the 1280/2560 + // and the 32U4. Since avrlib defines registers PCMSK1 and PCMSK2 that aren't + // even present on the 32U4 this is the only way to distinguish between them. + case 0: + EICRA = (EICRA & ~((1<= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WString.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WString.cpp new file mode 100644 index 000000000..c6839fc0d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WString.cpp @@ -0,0 +1,645 @@ +/* + WString.cpp - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "WString.h" + + +/*********************************************/ +/* Constructors */ +/*********************************************/ + +String::String(const char *cstr) +{ + init(); + if (cstr) copy(cstr, strlen(cstr)); +} + +String::String(const String &value) +{ + init(); + *this = value; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String::String(String &&rval) +{ + init(); + move(rval); +} +String::String(StringSumHelper &&rval) +{ + init(); + move(rval); +} +#endif + +String::String(char c) +{ + init(); + char buf[2]; + buf[0] = c; + buf[1] = 0; + *this = buf; +} + +String::String(unsigned char value, unsigned char base) +{ + init(); + char buf[9]; + utoa(value, buf, base); + *this = buf; +} + +String::String(int value, unsigned char base) +{ + init(); + char buf[18]; + itoa(value, buf, base); + *this = buf; +} + +String::String(unsigned int value, unsigned char base) +{ + init(); + char buf[17]; + utoa(value, buf, base); + *this = buf; +} + +String::String(long value, unsigned char base) +{ + init(); + char buf[34]; + ltoa(value, buf, base); + *this = buf; +} + +String::String(unsigned long value, unsigned char base) +{ + init(); + char buf[33]; + ultoa(value, buf, base); + *this = buf; +} + +String::~String() +{ + free(buffer); +} + +/*********************************************/ +/* Memory Management */ +/*********************************************/ + +inline void String::init(void) +{ + buffer = NULL; + capacity = 0; + len = 0; + flags = 0; +} + +void String::invalidate(void) +{ + if (buffer) free(buffer); + buffer = NULL; + capacity = len = 0; +} + +unsigned char String::reserve(unsigned int size) +{ + if (buffer && capacity >= size) return 1; + if (changeBuffer(size)) { + if (len == 0) buffer[0] = 0; + return 1; + } + return 0; +} + +unsigned char String::changeBuffer(unsigned int maxStrLen) +{ + char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); + if (newbuffer) { + buffer = newbuffer; + capacity = maxStrLen; + return 1; + } + return 0; +} + +/*********************************************/ +/* Copy and Move */ +/*********************************************/ + +String & String::copy(const char *cstr, unsigned int length) +{ + if (!reserve(length)) { + invalidate(); + return *this; + } + len = length; + strcpy(buffer, cstr); + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +void String::move(String &rhs) +{ + if (buffer) { + if (capacity >= rhs.len) { + strcpy(buffer, rhs.buffer); + len = rhs.len; + rhs.len = 0; + return; + } else { + free(buffer); + } + } + buffer = rhs.buffer; + capacity = rhs.capacity; + len = rhs.len; + rhs.buffer = NULL; + rhs.capacity = 0; + rhs.len = 0; +} +#endif + +String & String::operator = (const String &rhs) +{ + if (this == &rhs) return *this; + + if (rhs.buffer) copy(rhs.buffer, rhs.len); + else invalidate(); + + return *this; +} + +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +String & String::operator = (String &&rval) +{ + if (this != &rval) move(rval); + return *this; +} + +String & String::operator = (StringSumHelper &&rval) +{ + if (this != &rval) move(rval); + return *this; +} +#endif + +String & String::operator = (const char *cstr) +{ + if (cstr) copy(cstr, strlen(cstr)); + else invalidate(); + + return *this; +} + +/*********************************************/ +/* concat */ +/*********************************************/ + +unsigned char String::concat(const String &s) +{ + return concat(s.buffer, s.len); +} + +unsigned char String::concat(const char *cstr, unsigned int length) +{ + unsigned int newlen = len + length; + if (!cstr) return 0; + if (length == 0) return 1; + if (!reserve(newlen)) return 0; + strcpy(buffer + len, cstr); + len = newlen; + return 1; +} + +unsigned char String::concat(const char *cstr) +{ + if (!cstr) return 0; + return concat(cstr, strlen(cstr)); +} + +unsigned char String::concat(char c) +{ + char buf[2]; + buf[0] = c; + buf[1] = 0; + return concat(buf, 1); +} + +unsigned char String::concat(unsigned char num) +{ + char buf[4]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(int num) +{ + char buf[7]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned int num) +{ + char buf[6]; + utoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(long num) +{ + char buf[12]; + ltoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned long num) +{ + char buf[11]; + ultoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +/*********************************************/ +/* Concatenate */ +/*********************************************/ + +StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(rhs.buffer, rhs.len)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr) +{ + StringSumHelper &a = const_cast(lhs); + if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, char c) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(c)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +/*********************************************/ +/* Comparison */ +/*********************************************/ + +int String::compareTo(const String &s) const +{ + if (!buffer || !s.buffer) { + if (s.buffer && s.len > 0) return 0 - *(unsigned char *)s.buffer; + if (buffer && len > 0) return *(unsigned char *)buffer; + return 0; + } + return strcmp(buffer, s.buffer); +} + +unsigned char String::equals(const String &s2) const +{ + return (len == s2.len && compareTo(s2) == 0); +} + +unsigned char String::equals(const char *cstr) const +{ + if (len == 0) return (cstr == NULL || *cstr == 0); + if (cstr == NULL) return buffer[0] == 0; + return strcmp(buffer, cstr) == 0; +} + +unsigned char String::operator<(const String &rhs) const +{ + return compareTo(rhs) < 0; +} + +unsigned char String::operator>(const String &rhs) const +{ + return compareTo(rhs) > 0; +} + +unsigned char String::operator<=(const String &rhs) const +{ + return compareTo(rhs) <= 0; +} + +unsigned char String::operator>=(const String &rhs) const +{ + return compareTo(rhs) >= 0; +} + +unsigned char String::equalsIgnoreCase( const String &s2 ) const +{ + if (this == &s2) return 1; + if (len != s2.len) return 0; + if (len == 0) return 1; + const char *p1 = buffer; + const char *p2 = s2.buffer; + while (*p1) { + if (tolower(*p1++) != tolower(*p2++)) return 0; + } + return 1; +} + +unsigned char String::startsWith( const String &s2 ) const +{ + if (len < s2.len) return 0; + return startsWith(s2, 0); +} + +unsigned char String::startsWith( const String &s2, unsigned int offset ) const +{ + if (offset > len - s2.len || !buffer || !s2.buffer) return 0; + return strncmp( &buffer[offset], s2.buffer, s2.len ) == 0; +} + +unsigned char String::endsWith( const String &s2 ) const +{ + if ( len < s2.len || !buffer || !s2.buffer) return 0; + return strcmp(&buffer[len - s2.len], s2.buffer) == 0; +} + +/*********************************************/ +/* Character Access */ +/*********************************************/ + +char String::charAt(unsigned int loc) const +{ + return operator[](loc); +} + +void String::setCharAt(unsigned int loc, char c) +{ + if (loc < len) buffer[loc] = c; +} + +char & String::operator[](unsigned int index) +{ + static char dummy_writable_char; + if (index >= len || !buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return buffer[index]; +} + +char String::operator[]( unsigned int index ) const +{ + if (index >= len || !buffer) return 0; + return buffer[index]; +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const +{ + if (!bufsize || !buf) return; + if (index >= len) { + buf[0] = 0; + return; + } + unsigned int n = bufsize - 1; + if (n > len - index) n = len - index; + strncpy((char *)buf, buffer + index, n); + buf[n] = 0; +} + +/*********************************************/ +/* Search */ +/*********************************************/ + +int String::indexOf(char c) const +{ + return indexOf(c, 0); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if (fromIndex >= len) return -1; + const char* temp = strchr(buffer + fromIndex, ch); + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::indexOf(const String &s2) const +{ + return indexOf(s2, 0); +} + +int String::indexOf(const String &s2, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + const char *found = strstr(buffer + fromIndex, s2.buffer); + if (found == NULL) return -1; + return found - buffer; +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf(theChar, len - 1); +} + +int String::lastIndexOf(char ch, unsigned int fromIndex) const +{ + if (fromIndex >= len) return -1; + char tempchar = buffer[fromIndex + 1]; + buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( buffer, ch ); + buffer[fromIndex + 1] = tempchar; + if (temp == NULL) return -1; + return temp - buffer; +} + +int String::lastIndexOf(const String &s2) const +{ + return lastIndexOf(s2, len - s2.len); +} + +int String::lastIndexOf(const String &s2, unsigned int fromIndex) const +{ + if (s2.len == 0 || len == 0 || s2.len > len) return -1; + if (fromIndex >= len) fromIndex = len - 1; + int found = -1; + for (char *p = buffer; p <= buffer + fromIndex; p++) { + p = strstr(p, s2.buffer); + if (!p) break; + if ((unsigned int)(p - buffer) <= fromIndex) found = p - buffer; + } + return found; +} + +String String::substring( unsigned int left ) const +{ + return substring(left, len); +} + +String String::substring(unsigned int left, unsigned int right) const +{ + if (left > right) { + unsigned int temp = right; + right = left; + left = temp; + } + String out; + if (left > len) return out; + if (right > len) right = len; + char temp = buffer[right]; // save the replaced character + buffer[right] = '\0'; + out = buffer + left; // pointer arithmetic + buffer[right] = temp; //restore character + return out; +} + +/*********************************************/ +/* Modification */ +/*********************************************/ + +void String::replace(char find, char replace) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + if (*p == find) *p = replace; + } +} + +void String::replace(const String& find, const String& replace) +{ + if (len == 0 || find.len == 0) return; + int diff = replace.len - find.len; + char *readFrom = buffer; + char *foundAt; + if (diff == 0) { + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + memcpy(foundAt, replace.buffer, replace.len); + readFrom = foundAt + replace.len; + } + } else if (diff < 0) { + char *writeTo = buffer; + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + unsigned int n = foundAt - readFrom; + memcpy(writeTo, readFrom, n); + writeTo += n; + memcpy(writeTo, replace.buffer, replace.len); + writeTo += replace.len; + readFrom = foundAt + find.len; + len += diff; + } + strcpy(writeTo, readFrom); + } else { + unsigned int size = len; // compute size needed for result + while ((foundAt = strstr(readFrom, find.buffer)) != NULL) { + readFrom = foundAt + find.len; + size += diff; + } + if (size == len) return; + if (size > capacity && !changeBuffer(size)) return; // XXX: tell user! + int index = len - 1; + while (index >= 0 && (index = lastIndexOf(find, index)) >= 0) { + readFrom = buffer + index + find.len; + memmove(readFrom + diff, readFrom, len - (readFrom - buffer)); + len += diff; + buffer[len] = 0; + memcpy(buffer + index, replace.buffer, replace.len); + index--; + } + } +} + +void String::toLowerCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = tolower(*p); + } +} + +void String::toUpperCase(void) +{ + if (!buffer) return; + for (char *p = buffer; *p; p++) { + *p = toupper(*p); + } +} + +void String::trim(void) +{ + if (!buffer || len == 0) return; + char *begin = buffer; + while (isspace(*begin)) begin++; + char *end = buffer + len - 1; + while (isspace(*end) && end >= begin) end--; + len = end + 1 - begin; + if (begin > buffer) memcpy(buffer, begin, len); + buffer[len] = 0; +} + +/*********************************************/ +/* Parsing / Conversion */ +/*********************************************/ + +long String::toInt(void) const +{ + if (buffer) return atol(buffer); + return 0; +} + + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WString.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WString.h new file mode 100644 index 000000000..947325e5f --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/WString.h @@ -0,0 +1,205 @@ +/* + WString.h - String library for Wiring & Arduino + ...mostly rewritten by Paul Stoffregen... + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + Copyright 2011, Paul Stoffregen, paul@pjrc.com + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_class_h +#define String_class_h +#ifdef __cplusplus + +#include +#include +#include +#include + +// When compiling programs with this class, the following gcc parameters +// dramatically increase performance and memory (RAM) efficiency, typically +// with little or no increase in code size. +// -felide-constructors +// -std=c++0x + +class __FlashStringHelper; +#define F(string_literal) (reinterpret_cast(PSTR(string_literal))) + +// An inherited class for holding the result of a concatenation. These +// result objects are assumed to be writable by subsequent concatenations. +class StringSumHelper; + +// The string class +class String +{ + // use a function pointer to allow for "if (s)" without the + // complications of an operator bool(). for more information, see: + // http://www.artima.com/cppsource/safebool.html + typedef void (String::*StringIfHelperType)() const; + void StringIfHelper() const {} + +public: + // constructors + // creates a copy of the initial value. + // if the initial value is null or invalid, or if memory allocation + // fails, the string will be marked as invalid (i.e. "if (s)" will + // be false). + String(const char *cstr = ""); + String(const String &str); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String(String &&rval); + String(StringSumHelper &&rval); + #endif + explicit String(char c); + explicit String(unsigned char, unsigned char base=10); + explicit String(int, unsigned char base=10); + explicit String(unsigned int, unsigned char base=10); + explicit String(long, unsigned char base=10); + explicit String(unsigned long, unsigned char base=10); + ~String(void); + + // memory management + // return true on success, false on failure (in which case, the string + // is left unchanged). reserve(0), if successful, will validate an + // invalid string (i.e., "if (s)" will be true afterwards) + unsigned char reserve(unsigned int size); + inline unsigned int length(void) const {return len;} + + // creates a copy of the assigned value. if the value is null or + // invalid, or if the memory allocation fails, the string will be + // marked as invalid ("if (s)" will be false). + String & operator = (const String &rhs); + String & operator = (const char *cstr); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + String & operator = (String &&rval); + String & operator = (StringSumHelper &&rval); + #endif + + // concatenate (works w/ built-in types) + + // returns true on success, false on failure (in which case, the string + // is left unchanged). if the argument is null or invalid, the + // concatenation is considered unsucessful. + unsigned char concat(const String &str); + unsigned char concat(const char *cstr); + unsigned char concat(char c); + unsigned char concat(unsigned char c); + unsigned char concat(int num); + unsigned char concat(unsigned int num); + unsigned char concat(long num); + unsigned char concat(unsigned long num); + + // if there's not enough memory for the concatenated value, the string + // will be left unchanged (but this isn't signalled in any way) + String & operator += (const String &rhs) {concat(rhs); return (*this);} + String & operator += (const char *cstr) {concat(cstr); return (*this);} + String & operator += (char c) {concat(c); return (*this);} + String & operator += (unsigned char num) {concat(num); return (*this);} + String & operator += (int num) {concat(num); return (*this);} + String & operator += (unsigned int num) {concat(num); return (*this);} + String & operator += (long num) {concat(num); return (*this);} + String & operator += (unsigned long num) {concat(num); return (*this);} + + friend StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs); + friend StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr); + friend StringSumHelper & operator + (const StringSumHelper &lhs, char c); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned char num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned int num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, long num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, unsigned long num); + + // comparison (only works w/ Strings and "strings") + operator StringIfHelperType() const { return buffer ? &String::StringIfHelper : 0; } + int compareTo(const String &s) const; + unsigned char equals(const String &s) const; + unsigned char equals(const char *cstr) const; + unsigned char operator == (const String &rhs) const {return equals(rhs);} + unsigned char operator == (const char *cstr) const {return equals(cstr);} + unsigned char operator != (const String &rhs) const {return !equals(rhs);} + unsigned char operator != (const char *cstr) const {return !equals(cstr);} + unsigned char operator < (const String &rhs) const; + unsigned char operator > (const String &rhs) const; + unsigned char operator <= (const String &rhs) const; + unsigned char operator >= (const String &rhs) const; + unsigned char equalsIgnoreCase(const String &s) const; + unsigned char startsWith( const String &prefix) const; + unsigned char startsWith(const String &prefix, unsigned int offset) const; + unsigned char endsWith(const String &suffix) const; + + // character acccess + char charAt(unsigned int index) const; + void setCharAt(unsigned int index, char c); + char operator [] (unsigned int index) const; + char& operator [] (unsigned int index); + void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const; + void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const + {getBytes((unsigned char *)buf, bufsize, index);} + + // search + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + + // modification + void replace(char find, char replace); + void replace(const String& find, const String& replace); + void toLowerCase(void); + void toUpperCase(void); + void trim(void); + + // parsing/conversion + long toInt(void) const; + +protected: + char *buffer; // the actual char array + unsigned int capacity; // the array length minus one (for the '\0') + unsigned int len; // the String length (not counting the '\0') + unsigned char flags; // unused, for future features +protected: + void init(void); + void invalidate(void); + unsigned char changeBuffer(unsigned int maxStrLen); + unsigned char concat(const char *cstr, unsigned int length); + + // copy and move + String & copy(const char *cstr, unsigned int length); + #ifdef __GXX_EXPERIMENTAL_CXX0X__ + void move(String &rhs); + #endif +}; + +class StringSumHelper : public String +{ +public: + StringSumHelper(const String &s) : String(s) {} + StringSumHelper(const char *p) : String(p) {} + StringSumHelper(char c) : String(c) {} + StringSumHelper(unsigned char num) : String(num) {} + StringSumHelper(int num) : String(num) {} + StringSumHelper(unsigned int num) : String(num) {} + StringSumHelper(long num) : String(num) {} + StringSumHelper(unsigned long num) : String(num) {} +}; + +#endif // __cplusplus +#endif // String_class_h diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/binary.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/main.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/main.cpp new file mode 100644 index 000000000..3d4e079d2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/main.cpp @@ -0,0 +1,20 @@ +#include + +int main(void) +{ + init(); + +#if defined(USBCON) + USBDevice.attach(); +#endif + + setup(); + + for (;;) { + loop(); + if (serialEventRun) serialEventRun(); + } + + return 0; +} + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/new.cpp b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/new.cpp new file mode 100644 index 000000000..0f6d4220e --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/new.cpp @@ -0,0 +1,18 @@ +#include + +void * operator new(size_t size) +{ + return malloc(size); +} + +void operator delete(void * ptr) +{ + free(ptr); +} + +int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; +void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; +void __cxa_guard_abort (__guard *) {}; + +void __cxa_pure_virtual(void) {}; + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/new.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/new.h new file mode 100644 index 000000000..cd940ce8b --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/new.h @@ -0,0 +1,22 @@ +/* Header to define new/delete operators as they aren't provided by avr-gcc by default + Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453 + */ + +#ifndef NEW_H +#define NEW_H + +#include + +void * operator new(size_t size); +void operator delete(void * ptr); + +__extension__ typedef int __guard __attribute__((mode (__DI__))); + +extern "C" int __cxa_guard_acquire(__guard *); +extern "C" void __cxa_guard_release (__guard *); +extern "C" void __cxa_guard_abort (__guard *); + +extern "C" void __cxa_pure_virtual(void); + +#endif + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring.c b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring.c new file mode 100644 index 000000000..ac8bb6f9b --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring.c @@ -0,0 +1,324 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) +SIGNAL(TIM0_OVF_vect) +#else +SIGNAL(TIMER0_OVF_vect) +#endif +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); +#if F_CPU >= 20000000L + // for the 20 MHz clock on rare Arduino boards + + // for a one-microsecond delay, simply wait 2 cycle and return. The overhead + // of the function call yields a delay of exactly a one microsecond. + __asm__ __volatile__ ( + "nop" "\n\t" + "nop"); //just waiting 2 cycle + if (--us == 0) + return; + + // the following loop takes a 1/5 of a microsecond (4 cycles) + // per iteration, so execute it five times for each microsecond of + // delay requested. + us = (us<<2) + us; // x5 us + + // account for the time taken in the preceeding commands. + us -= 2; + +#elif F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + TCCR1B = 0; + + // set timer 1 prescale factor to 64 + sbi(TCCR1B, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1B, CS10); +#endif +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); +#if F_CPU >= 8000000L + sbi(TCCR1, CS10); +#endif +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4A) && defined(TCCR4B) && defined(TCCR4D) /* beginning of timer4 block for 32U4 and similar */ + sbi(TCCR4B, CS42); // set timer4 prescale factor to 64 + sbi(TCCR4B, CS41); + sbi(TCCR4B, CS40); + sbi(TCCR4D, WGM40); // put timer 4 in phase- and frequency-correct PWM mode + sbi(TCCR4A, PWM4A); // enable PWM mode for comparator OCR4A + sbi(TCCR4C, PWM4D); // enable PWM mode for comparator OCR4D +#else /* beginning of timer4 block for ATMEGA1280 and ATMEGA2560 */ +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif +#endif /* end timer4 block for ATMEGA1280/2560 and similar */ + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_analog.c b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_analog.c new file mode 100644 index 000000000..23b01c65a --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_analog.c @@ -0,0 +1,282 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#elif defined(__AVR_ATmega32U4__) + if (pin >= 18) pin -= 18; // allow for channel or pin numbers +#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) + if (pin >= 24) pin -= 24; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(__AVR_ATmega32U4__) + pin = analogPinToChannel(pin); + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#elif defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) + case TIMER4A: + //connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + #if defined(COM4A0) // only used on 32U4 + cbi(TCCR4A, COM4A0); + #endif + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4C) && defined(COM4D1) + case TIMER4D: + // connect pwm to pin on timer 4, channel D + sbi(TCCR4C, COM4D1); + #if defined(COM4D0) // only used on 32U4 + cbi(TCCR4C, COM4D0); + #endif + OCR4D = val; // set pwm duty + break; + #endif + + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} + diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_digital.c b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_digital.c new file mode 100644 index 000000000..be323b1df --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_digital.c @@ -0,0 +1,178 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#define ARDUINO_MAIN +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg, *out; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + out = portOutputRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + *out &= ~bit; + SREG = oldSREG; + } else if (mode == INPUT_PULLUP) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + *out |= bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline)); +//static inline void turnOffPWM(uint8_t timer) +static void turnOffPWM(uint8_t timer) +{ + switch (timer) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR4C) && defined(COM4D1) + case TIMER4D: cbi(TCCR4C, COM4D1); break; + #endif + + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // If the pin that support PWM output, we need to turn it off + // before doing a digital write. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + out = portOutputRegister(port); + + uint8_t oldSREG = SREG; + cli(); + + if (val == LOW) { + *out &= ~bit; + } else { + *out |= bit; + } + + SREG = oldSREG; +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // If the pin that support PWM output, we need to turn it off + // before getting a digital reading. + if (timer != NOT_ON_TIMER) turnOffPWM(timer); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_private.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_private.h new file mode 100644 index 000000000..f67826567 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_private.h @@ -0,0 +1,71 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include + +#include "Arduino.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#elif defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644P__) +#define EXTERNAL_NUM_INTERRUPTS 3 +#elif defined(__AVR_ATmega32U4__) +#define EXTERNAL_NUM_INTERRUPTS 4 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_pulse.c b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_pulse.c new file mode 100644 index 000000000..0d968865d --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_shift.c b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_shift.c new file mode 100644 index 000000000..cfe786758 --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/cores/arduino/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/variants/standard/pins_arduino.h b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/variants/standard/pins_arduino.h new file mode 100644 index 000000000..9fce4758c --- /dev/null +++ b/ArduinoAddons/Arduino_1.x.x/hardware/Melzi/variants/standard/pins_arduino.h @@ -0,0 +1,286 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ + + Changelog + ----------- + 11/25/11 - ryan@ryanmsutton.com - Add pins for Sanguino 644P and 1284P + 07/15/12 - ryan@ryanmsutton.com - Updated for arduino0101 +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER4D 14 +#define TIMER5A 15 +#define TIMER5B 16 +#define TIMER5C 17 + +const static uint8_t SS = 4; +const static uint8_t MOSI = 5; +const static uint8_t MISO = 6; +const static uint8_t SCK = 7; + +static const uint8_t SDA = 17; +static const uint8_t SCL = 16; +static const uint8_t LED_BUILTIN = 13; + +static const uint8_t A0 = 31; +static const uint8_t A1 = 30; +static const uint8_t A2 = 29; +static const uint8_t A3 = 28; +static const uint8_t A4 = 27; +static const uint8_t A5 = 26; +static const uint8_t A6 = 25; +static const uint8_t A7 = 24; + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +// extern const uint16_t PROGMEM port_to_mode_PGM[]; +// extern const uint16_t PROGMEM port_to_input_PGM[]; +// extern const uint16_t PROGMEM port_to_output_PGM[]; + +// extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// ATMEL ATMEGA644P / SANGUINO +// +// +---\/---+ +// INT0 (D 0) PB0 1| |40 PA0 (AI 0 / D31) +// INT1 (D 1) PB1 2| |39 PA1 (AI 1 / D30) +// INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) +// PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) +// PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) +// MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) +// MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) +// SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) +// RST 9| |32 AREF +// VCC 10| |31 GND +// GND 11| |30 AVCC +// XTAL2 12| |29 PC7 (D 23) +// XTAL1 13| |28 PC6 (D 22) +// RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI +// TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO +// RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS +// TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK +// PWM (D 12) PD4 18| |23 PC1 (D 17) SDA +// PWM (D 13) PD5 19| |22 PC0 (D 16) SCL +// PWM (D 14) PD6 20| |21 PD7 (D 15) PWM +// +--------+ +// +#define NUM_DIGITAL_PINS 24 +#define NUM_ANALOG_INPUTS 8 +#define analogInputToDigitalPin(p) ((p < NUM_ANALOG_INPUTS) ? 31 - (p) : -1) + +#define digitalPinHasPWM(p) ((p) == 3 || (p) == 4 || (p) == 12 || (p) == 13 || (p) == 14 || (p) == 15 ) + +#define digitalPinToPCICR(p) ( (((p) >= 0) && ((p) <= 31)) ? (&PCICR) : ((uint8_t *)0) ) + +#define digitalPinToPCICRbit(p) ( (((p) >= 24) && ((p) <= 31)) ? 0 : \ + ( (((p) >= 0) && ((p) <= 7)) ? 1 : \ + ( (((p) >= 16) && ((p) <= 23)) ? 2 : \ + ( (((p) >= 8) && ((p) <= 15)) ? 3 : \ + 0 ) ) ) ) + +#define digitalPinToPCMSK(p) ( (((p) >= 24) && ((p) <= 31)) ? (&PCMSK0) : \ + ( (((p) >= 0) && ((p) <= 7)) ? (&PCMSK1) : \ + ( (((p) >= 16) && ((p) <= 23)) ? (&PCMSK2) : \ + ( (((p) >= 8) && ((p) <= 15)) ? (&PCMSK3) : \ + ((uint8_t *)0) ) ) ) ) + + +#define digitalPinToPCMSKbit(p) ( (((p) >= 24) && ((p) <= 31)) ? (31 - (p)) : \ + ( (((p) >= 0) && ((p) <= 7)) ? (p) : \ + ( (((p) >= 16) && ((p) <= 23)) ? ((p) - 16) : \ + ( (((p) >= 8) && ((p) <= 15)) ? ((p) - 8) : \ + 0 ) ) ) ) + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 + +#ifdef ARDUINO_MAIN +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &DDRA, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &PORTA, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, +}; +const uint16_t PROGMEM port_to_input_PGM[] = +{ + NOT_A_PORT, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, +}; +const uint8_t PROGMEM digital_pin_to_port_PGM[] = +{ + PB, /* 0 */ + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PD, /* 8 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PC, /* 16 */ + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PA, /* 24 */ + PA, + PA, + PA, + PA, + PA, + PA, + PA /* 31 */ +}; +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = +{ + _BV(0), /* 0, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 16, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(7), /* 24, port A */ + _BV(6), + _BV(5), + _BV(4), + _BV(3), + _BV(2), + _BV(1), + _BV(0) +}; +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = +{ + NOT_ON_TIMER, /* 0 - PB0 */ + NOT_ON_TIMER, /* 1 - PB1 */ + NOT_ON_TIMER, /* 2 - PB2 */ + TIMER0A, /* 3 - PB3 */ + TIMER0B, /* 4 - PB4 */ + NOT_ON_TIMER, /* 5 - PB5 */ + NOT_ON_TIMER, /* 6 - PB6 */ + NOT_ON_TIMER, /* 7 - PB7 */ + NOT_ON_TIMER, /* 8 - PD0 */ + NOT_ON_TIMER, /* 9 - PD1 */ + NOT_ON_TIMER, /* 10 - PD2 */ + NOT_ON_TIMER, /* 11 - PD3 */ + TIMER1B, /* 12 - PD4 */ + TIMER1A, /* 13 - PD5 */ + TIMER2B, /* 14 - PD6 */ + TIMER2A, /* 15 - PD7 */ + NOT_ON_TIMER, /* 16 - PC0 */ + NOT_ON_TIMER, /* 17 - PC1 */ + NOT_ON_TIMER, /* 18 - PC2 */ + NOT_ON_TIMER, /* 19 - PC3 */ + NOT_ON_TIMER, /* 20 - PC4 */ + NOT_ON_TIMER, /* 21 - PC5 */ + NOT_ON_TIMER, /* 22 - PC6 */ + NOT_ON_TIMER, /* 23 - PC7 */ + NOT_ON_TIMER, /* 24 - PA0 */ + NOT_ON_TIMER, /* 25 - PA1 */ + NOT_ON_TIMER, /* 26 - PA2 */ + NOT_ON_TIMER, /* 27 - PA3 */ + NOT_ON_TIMER, /* 28 - PA4 */ + NOT_ON_TIMER, /* 29 - PA5 */ + NOT_ON_TIMER, /* 30 - PA6 */ + NOT_ON_TIMER /* 31 - PA7 */ +}; +#endif +#endif diff --git a/Documentation/BedLeveling.md b/Documentation/BedLeveling.md new file mode 100644 index 000000000..35a38bb3a --- /dev/null +++ b/Documentation/BedLeveling.md @@ -0,0 +1,105 @@ +=============================================== +Instructions for configuring Bed Auto Leveling +=============================================== +There are two options for this feature. You may choose to use a servo mounted on the X carriage or you may use a sled that mounts on the X axis and can be docked when not in use. +See the section for each option below for specifics about installation and configuration. Also included are instructions that apply to both options. + +Instructions for Both Options +----------------------------- + +Uncomment the "ENABLE_AUTO_BED_LEVELING" define (commented by default) + +The following options define the probing positions. These are good starting values. +I recommend to keep a better clearance from borders in the first run and then make the probes as close as possible to borders: + +* \#define LEFT_PROBE_BED_POSITION 30 +* \#define RIGHT_PROBE_BED_POSITION 140 +* \#define BACK_PROBE_BED_POSITION 140 +* \#define FRONT_PROBE_BED_POSITION 30 + +A few more options: + +* \#define XY_TRAVEL_SPEED 6000 + +X and Y axis travel speed between probes, in mm/min. +Bear in mind that really fast moves may render step skipping. 6000 mm/min (100mm/s) is a good value. + +* \#define Z_RAISE_BEFORE_PROBING 10 +* \#define Z_RAISE_BETWEEN_PROBINGS 10 + +The Z axis is lifted when traveling to the first probe point by Z_RAISE_BEFORE_PROBING value +and then lifted when traveling from first to second and second to third point by Z_RAISE_BETWEEN_PROBINGS. +All values are in mm as usual. + +Servo Option Notes +------------------ +You will probably need a swivel Z-MIN endstop in the extruder. A rc servo do a great job. +Check the system working here: http://www.youtube.com/watch?v=3IKMeOYz-1Q (Enable English subtitles) +Teasing ;-) video: http://www.youtube.com/watch?v=x8eqSQNAyro + +In order to get the servo working, you need to enable: + +* \#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command + +* \#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 + +* \#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 165,60} // X,Y,Z Axis Extend and Retract angles + +The first define tells firmware how many servos you have. +The second tells what axis this servo will be attached to. In the example above, we have a servo in Z axis. +The third one tells the angle in 2 situations: Probing (165º) and resting (60º). Check this with command M280 P0 S{angle} (example: M280 P0 S60 moves the servo to 60º) + +Next you need to define the Z endstop (probe) offset from hotend. +My preferred method: + +* a) Make a small mark in the bed with a marker/felt-tip pen. +* b) Place the hotend tip as *exactly* as possible on the mark, touching the bed. Raise the hotend 0.1mm (a regular paper thickness) and zero all axis (G92 X0 Y0 Z0); +* d) Raise the hotend 10mm (or more) for probe clearance, lower the Z probe (Z-Endstop) with M401 and place it just on that mark by moving X, Y and Z; +* e) Lower the Z in 0.1mm steps, with the probe always touching the mark (it may be necessary to adjust X and Y as well) until you hear the "click" meaning the mechanical endstop was trigged. You can confirm with M119; +* f) Now you have the probe in the same place as your hotend tip was before. Perform a M114 and write down the values, for example: X:24.3 Y:-31.4 Z:5.1; +* g) You can raise the z probe with M402 command; +* h) Fill the defines bellow multiplying the values by "-1" (just change the signal) + +* X and Y-Offset must be Integers! +* \#define X_PROBE_OFFSET_FROM_EXTRUDER -24 +* \#define Y_PROBE_OFFSET_FROM_EXTRUDER 31 +* \#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1 + +Sled Option Notes +----------------- +The sled option uses an electromagnet to attach and detach to/from the X carriage. See http://www.thingiverse.com/thing:396692 for more details on how to print and install this feature. It uses the same connections as the servo option. + +To use the sled option, you must define two additional things in Configuration.h: + +* \#define Z_PROBE_SLED +* \#define SLED_DOCKING_OFFSET 5 + +Uncomment the Z_PROBE_SLED to define to enable the sled (commented out by default). + +Uncomment the SLED_DOCKING_OFFSET to set the extra distance the X axis must travel to dock the sled. This value can be found by moving the X axis to its maximum position then measure the distance to the right X end and subtract the width of the sled (23mm if you printed the sled from Thingiverse). + +Next you need to define the Z endstop (probe) offset from hotend. +My preferred method: + +* a) Home the X and Y axes. +* b) Move the X axis to about the center of the print bed. Make a mark on the print bed. +* c) Move the Y axis to the maximum position. Make another mark. +* d) Home the X axis and use a straight edge to make a line between the two points. +* e) Repeat (b)-(d) reversing the X and Y. When you are done you will have two lines on the print bed. We will use these to measure the offset for the Z probe endstop. +* f) Move the nozzle so that it is positioned on the center point of the two lines. You can use fine movement of 0.1mm to get it as close as possible. Note the position of X and Y. +* g) Zero the Z axis with the G92 Z0 command. +* h) Raise the Z axis about 20mmm. +* i) Use the G32 command to retrieve the sled. +* j) Now more the X and Y axis to the position recorded in (f). +* k) Lower the Z axis in 0.1mm steps until you hear the "click" meaning the mechanical endstop was trigged. You can confirm with the M119 command. Note the position of the Z axis. +* l) Make a mark on the print bed where the endstop lever has touched the print bed. Raise the Z-axis about 30mm to give yourself some room. +* m) Now measure the distance from the center point to the endstop impact site along the X and Y axis using the lines drawn previously. +* n) Fill in the values below. If the endstop mark is in front of the line running left-to-right, use positive values. If it is behind, use negative values. For the Z axis use the value from (k) and subtract 0.1mm. + +For example, suppose you measured the endstop position and it was 20mm to the right of the line running front-to-back, 10mm toward the front of the line running left-to-right, and the value from (k) was 2.85. The values for the defines would be: + +* \#define X_PROBE_OFFSET_FROM_EXTRUDER 20 +* \#define Y_PROBE_OFFSET_FROM_EXTRUDER 10 +* \#define Z_PROBE_OFFSET_FROM_EXTRUDER 2.75 + +That's it.. enjoy never having to calibrate your Z endstop neither leveling your bed by hand anymore ;-) diff --git a/Documentation/COPYING.md b/Documentation/COPYING.md new file mode 100644 index 000000000..16d89e0a3 --- /dev/null +++ b/Documentation/COPYING.md @@ -0,0 +1,596 @@ +GNU GENERAL PUBLIC LICENSE +========================== + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. <> + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + +## Preamble + +The GNU General Public License is a free, copyleft license for software and other +kinds of works. + +The licenses for most software and other practical works are designed to take away +your freedom to share and change the works. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change all versions of a +program--to make sure it remains free software for all its users. We, the Free +Software Foundation, use the GNU General Public License for most of our software; it +applies also to any other work released this way by its authors. You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General +Public Licenses are designed to make sure that you have the freedom to distribute +copies of free software (and charge for them if you wish), that you receive source +code or can get it if you want it, that you can change the software or use pieces of +it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or +asking you to surrender the rights. Therefore, you have certain responsibilities if +you distribute copies of the software, or if you modify it: responsibilities to +respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, +you must pass on to the recipients the same freedoms that you received. You must make +sure that they, too, receive or can get the source code. And you must show them these +terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert +copyright on the software, and (2) offer you this License giving you legal permission +to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is +no warranty for this free software. For both users' and authors' sake, the GPL +requires that modified versions be marked as changed, so that their problems will not +be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of +the software inside them, although the manufacturer can do so. This is fundamentally +incompatible with the aim of protecting users' freedom to change the software. The +systematic pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we have designed +this version of the GPL to prohibit the practice for those products. If such problems +arise substantially in other domains, we stand ready to extend this provision to +those domains in future versions of the GPL, as needed to protect the freedom of +users. + +Finally, every program is threatened constantly by software patents. States should +not allow patents to restrict development and use of software on general-purpose +computers, but in those that do, we wish to avoid the special danger that patents +applied to a free program could make it effectively proprietary. To prevent this, the +GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +## TERMS AND CONDITIONS + +### 0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this +License. Each licensee is addressed as “you”. “Licensees” and +“recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in +a fashion requiring copyright permission, other than the making of an exact copy. The +resulting work is called a “modified version” of the earlier work or a +work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on +the Program. + +To “propagate” a work means to do anything with it that, without +permission, would make you directly or secondarily liable for infringement under +applicable copyright law, except executing it on a computer or modifying a private +copy. Propagation includes copying, distribution (with or without modification), +making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through a computer +network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the +extent that it includes a convenient and prominently visible feature that (1) +displays an appropriate copyright notice, and (2) tells the user that there is no +warranty for the work (except to the extent that warranties are provided), that +licensees may convey the work under this License, and how to view a copy of this +License. If the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +### 1. Source Code. + +The “source code” for a work means the preferred form of the work for +making modifications to it. “Object code” means any non-source form of a +work. + +A “Standard Interface” means an interface that either is an official +standard defined by a recognized standards body, or, in the case of interfaces +specified for a particular programming language, one that is widely used among +developers working in that language. + +The “System Libraries” of an executable work include anything, other than +the work as a whole, that (a) is included in the normal form of packaging a Major +Component, but which is not part of that Major Component, and (b) serves only to +enable use of the work with that Major Component, or to implement a Standard +Interface for which an implementation is available to the public in source code form. +A “Major Component”, in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system (if any) on which +the executable work runs, or a compiler used to produce the work, or an object code +interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the +source code needed to generate, install, and (for an executable work) run the object +code and to modify the work, including scripts to control those activities. However, +it does not include the work's System Libraries, or general-purpose tools or +generally available free programs which are used unmodified in performing those +activities but which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for the work, and +the source code for shared libraries and dynamically linked subprograms that the work +is specifically designed to require, such as by intimate data communication or +control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +### 2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on the +Program, and are irrevocable provided the stated conditions are met. This License +explicitly affirms your unlimited permission to run the unmodified Program. The +output from running a covered work is covered by this License only if the output, +given its content, constitutes a covered work. This License acknowledges your rights +of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey covered +works to others for the sole purpose of having them make modifications exclusively +for you, or provide you with facilities for running those works, provided that you +comply with the terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for you must do so +exclusively on your behalf, under your direction and control, on terms that prohibit +them from making any copies of your copyrighted material outside their relationship +with you. + +Conveying under any other circumstances is permitted solely under the conditions +stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure under any +applicable law fulfilling obligations under article 11 of the WIPO copyright treaty +adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention +of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of +technological measures to the extent such circumvention is effected by exercising +rights under this License with respect to the covered work, and you disclaim any +intention to limit operation or modification of the work as a means of enforcing, +against the work's users, your or third parties' legal rights to forbid circumvention +of technological measures. + +### 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive it, in any +medium, provided that you conspicuously and appropriately publish on each copy an +appropriate copyright notice; keep intact all notices stating that this License and +any non-permissive terms added in accord with section 7 apply to the code; keep +intact all notices of the absence of any warranty; and give all recipients a copy of +this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer +support or warranty protection for a fee. + +### 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it from +the Program, in the form of source code under the terms of section 4, provided that +you also meet all of these conditions: + +* **a)** The work must carry prominent notices stating that you modified it, and giving a +relevant date. +* **b)** The work must carry prominent notices stating that it is released under this +License and any conditions added under section 7. This requirement modifies the +requirement in section 4 to “keep intact all notices”. +* **c)** You must license the entire work, as a whole, under this License to anyone who +comes into possession of a copy. This License will therefore apply, along with any +applicable section 7 additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no permission to license the +work in any other way, but it does not invalidate such permission if you have +separately received it. +* **d)** If the work has interactive user interfaces, each must display Appropriate Legal +Notices; however, if the Program has interactive interfaces that do not display +Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are +not by their nature extensions of the covered work, and which are not combined with +it such as to form a larger program, in or on a volume of a storage or distribution +medium, is called an “aggregate” if the compilation and its resulting +copyright are not used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work in an aggregate +does not cause this License to apply to the other parts of the aggregate. + +### 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections 4 and +5, provided that you also convey the machine-readable Corresponding Source under the +terms of this License, in one of these ways: + +* **a)** Convey the object code in, or embodied in, a physical product (including a +physical distribution medium), accompanied by the Corresponding Source fixed on a +durable physical medium customarily used for software interchange. +* **b)** Convey the object code in, or embodied in, a physical product (including a +physical distribution medium), accompanied by a written offer, valid for at least +three years and valid for as long as you offer spare parts or customer support for +that product model, to give anyone who possesses the object code either (1) a copy of +the Corresponding Source for all the software in the product that is covered by this +License, on a durable physical medium customarily used for software interchange, for +a price no more than your reasonable cost of physically performing this conveying of +source, or (2) access to copy the Corresponding Source from a network server at no +charge. +* **c)** Convey individual copies of the object code with a copy of the written offer to +provide the Corresponding Source. This alternative is allowed only occasionally and +noncommercially, and only if you received the object code with such an offer, in +accord with subsection 6b. +* **d)** Convey the object code by offering access from a designated place (gratis or for +a charge), and offer equivalent access to the Corresponding Source in the same way +through the same place at no further charge. You need not require recipients to copy +the Corresponding Source along with the object code. If the place to copy the object +code is a network server, the Corresponding Source may be on a different server +(operated by you or a third party) that supports equivalent copying facilities, +provided you maintain clear directions next to the object code saying where to find +the Corresponding Source. Regardless of what server hosts the Corresponding Source, +you remain obligated to ensure that it is available for as long as needed to satisfy +these requirements. +* **e)** Convey the object code using peer-to-peer transmission, provided you inform +other peers where the object code and Corresponding Source of the work are being +offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the +Corresponding Source as a System Library, need not be included in conveying the +object code work. + +A “User Product” is either (1) a “consumer product”, which +means any tangible personal property which is normally used for personal, family, or +household purposes, or (2) anything designed or sold for incorporation into a +dwelling. In determining whether a product is a consumer product, doubtful cases +shall be resolved in favor of coverage. For a particular product received by a +particular user, “normally used” refers to a typical or common use of +that class of product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected to use, the +product. A product is a consumer product regardless of whether the product has +substantial commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, +procedures, authorization keys, or other information required to install and execute +modified versions of a covered work in that User Product from a modified version of +its Corresponding Source. The information must suffice to ensure that the continued +functioning of the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for +use in, a User Product, and the conveying occurs as part of a transaction in which +the right of possession and use of the User Product is transferred to the recipient +in perpetuity or for a fixed term (regardless of how the transaction is +characterized), the Corresponding Source conveyed under this section must be +accompanied by the Installation Information. But this requirement does not apply if +neither you nor any third party retains the ability to install modified object code +on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to +continue to provide support service, warranty, or updates for a work that has been +modified or installed by the recipient, or for the User Product in which it has been +modified or installed. Access to a network may be denied when the modification itself +materially and adversely affects the operation of the network or violates the rules +and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with +this section must be in a format that is publicly documented (and with an +implementation available to the public in source code form), and must require no +special password or key for unpacking, reading or copying. + +### 7. Additional Terms. + +“Additional permissions” are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. Additional +permissions that are applicable to the entire Program shall be treated as though they +were included in this License, to the extent that they are valid under applicable +law. If additional permissions apply only to part of the Program, that part may be +used separately under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when you +modify the work.) You may place additional permissions on material, added by you to a +covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a +covered work, you may (if authorized by the copyright holders of that material) +supplement the terms of this License with terms: + +* **a)** Disclaiming warranty or limiting liability differently from the terms of +sections 15 and 16 of this License; or +* **b)** Requiring preservation of specified reasonable legal notices or author +attributions in that material or in the Appropriate Legal Notices displayed by works +containing it; or +* **c)** Prohibiting misrepresentation of the origin of that material, or requiring that +modified versions of such material be marked in reasonable ways as different from the +original version; or +* **d)** Limiting the use for publicity purposes of names of licensors or authors of the +material; or +* **e)** Declining to grant rights under trademark law for use of some trade names, +trademarks, or service marks; or +* **f)** Requiring indemnification of licensors and authors of that material by anyone +who conveys the material (or modified versions of it) with contractual assumptions of +liability to the recipient, for any liability that these contractual assumptions +directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further +restrictions” within the meaning of section 10. If the Program as you received +it, or any part of it, contains a notice stating that it is governed by this License +along with a term that is a further restriction, you may remove that term. If a +license document contains a further restriction but permits relicensing or conveying +under this License, you may add to a covered work material governed by the terms of +that license document, provided that the further restriction does not survive such +relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in +the relevant source files, a statement of the additional terms that apply to those +files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a +separately written license, or stated as exceptions; the above requirements apply +either way. + +### 8. Termination. + +You may not propagate or modify a covered work except as expressly provided under +this License. Any attempt otherwise to propagate or modify it is void, and will +automatically terminate your rights under this License (including any patent licenses +granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a +particular copyright holder is reinstated (a) provisionally, unless and until the +copyright holder explicitly and finally terminates your license, and (b) permanently, +if the copyright holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently +if the copyright holder notifies you of the violation by some reasonable means, this +is the first time you have received notice of violation of this License (for any +work) from that copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of +parties who have received copies or rights from you under this License. If your +rights have been terminated and not permanently reinstated, you do not qualify to +receive new licenses for the same material under section 10. + +### 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy of the +Program. Ancillary propagation of a covered work occurring solely as a consequence of +using peer-to-peer transmission to receive a copy likewise does not require +acceptance. However, nothing other than this License grants you permission to +propagate or modify any covered work. These actions infringe copyright if you do not +accept this License. Therefore, by modifying or propagating a covered work, you +indicate your acceptance of this License to do so. + +### 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a license +from the original licensors, to run, modify and propagate that work, subject to this +License. You are not responsible for enforcing compliance by third parties with this +License. + +An “entity transaction” is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an organization, or +merging organizations. If propagation of a covered work results from an entity +transaction, each party to that transaction who receives a copy of the work also +receives whatever licenses to the work the party's predecessor in interest had or +could give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if the predecessor +has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or +affirmed under this License. For example, you may not impose a license fee, royalty, +or other charge for exercise of rights granted under this License, and you may not +initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging +that any patent claim is infringed by making, using, selling, offering for sale, or +importing the Program or any portion of it. + +### 11. Patents. + +A “contributor” is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The work thus +licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or +controlled by the contributor, whether already acquired or hereafter acquired, that +would be infringed by some manner, permitted by this License, of making, using, or +selling its contributor version, but do not include claims that would be infringed +only as a consequence of further modification of the contributor version. For +purposes of this definition, “control” includes the right to grant patent +sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license +under the contributor's essential patent claims, to make, use, sell, offer for sale, +import and otherwise run, modify and propagate the contents of its contributor +version. + +In the following three paragraphs, a “patent license” is any express +agreement or commitment, however denominated, not to enforce a patent (such as an +express permission to practice a patent or covenant not to sue for patent +infringement). To “grant” such a patent license to a party means to make +such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free of charge +and under the terms of this License, through a publicly available network server or +other readily accessible means, then you must either (1) cause the Corresponding +Source to be so available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner consistent with +the requirements of this License, to extend the patent license to downstream +recipients. “Knowingly relying” means you have actual knowledge that, but +for the patent license, your conveying the covered work in a country, or your +recipient's use of the covered work in a country, would infringe one or more +identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you +convey, or propagate by procuring conveyance of, a covered work, and grant a patent +license to some of the parties receiving the covered work authorizing them to use, +propagate, modify or convey a specific copy of the covered work, then the patent +license you grant is automatically extended to all recipients of the covered work and +works based on it. + +A patent license is “discriminatory” if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on the +non-exercise of one or more of the rights that are specifically granted under this +License. You may not convey a covered work if you are a party to an arrangement with +a third party that is in the business of distributing software, under which you make +payment to the third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties who would receive +the covered work from you, a discriminatory patent license (a) in connection with +copies of the covered work conveyed by you (or copies made from those copies), or (b) +primarily for and in connection with specific products or compilations that contain +the covered work, unless you entered into that arrangement, or that patent license +was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied +license or other defenses to infringement that may otherwise be available to you +under applicable patent law. + +### 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) +that contradict the conditions of this License, they do not excuse you from the +conditions of this License. If you cannot convey a covered work so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not convey it at all. For example, if you +agree to terms that obligate you to collect a royalty for further conveying from +those to whom you convey the Program, the only way you could satisfy both those terms +and this License would be to refrain entirely from conveying the Program. + +### 13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to link or +combine any covered work with a work licensed under version 3 of the GNU Affero +General Public License into a single combined work, and to convey the resulting work. +The terms of this License will continue to apply to the part which is the covered +work, but the special requirements of the GNU Affero General Public License, section +13, concerning interaction through a network will apply to the combination as such. + +### 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the GNU +General Public License from time to time. Such new versions will be similar in spirit +to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that +a certain numbered version of the GNU General Public License “or any later +version” applies to it, you have the option of following the terms and +conditions either of that numbered version or of any later version published by the +Free Software Foundation. If the Program does not specify a version number of the GNU +General Public License, you may choose any version ever published by the Free +Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU +General Public License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no +additional obligations are imposed on any author or copyright holder as a result of +your choosing to follow a later version. + +### 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE +QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +### 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS +PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE +OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE +WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +### 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot be +given local legal effect according to their terms, reviewing courts shall apply local +law that most closely approximates an absolute waiver of all civil liability in +connection with the Program, unless a warranty or assumption of liability accompanies +a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +## How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to +the public, the best way to achieve this is to make it free software which everyone +can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them +to the start of each source file to most effectively state the exclusion of warranty; +and each file should have at least the “copyright” line and a pointer to +where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this +when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type 'show c' for details. + +The hypothetical commands 'show w' and 'show c' should show the appropriate parts of +the General Public License. Of course, your program's commands might be different; +for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, if any, to +sign a “copyright disclaimer” for the program, if necessary. For more +information on this, and how to apply and follow the GNU GPL, see +<>. + +The GNU General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may consider it +more useful to permit linking proprietary applications with the library. If this is +what you want to do, use the GNU Lesser General Public License instead of this +License. But first, please read +<>. \ No newline at end of file diff --git a/Documentation/Compilation.md b/Documentation/Compilation.md new file mode 100644 index 000000000..56b4f356c --- /dev/null +++ b/Documentation/Compilation.md @@ -0,0 +1,16 @@ +# Configuring and compilation + + 1. Install the latest non-beta arduino software IDE/toolset: http://www.arduino.cc/en/Main/Software + 2. Download the Marlin firmware + - [Latest developement version](https://github.com/MarlinFirmware/Marlin/tree/Development) + - [Stable version](https://github.com/MarlinFirmware/Marlin/tree/Development) + 3. In both cases use the "Download Zip" button on the right. + 4. Some boards require special files and/or libraries from the ArduinoAddons directory. Take a look at the dedicated [README](/ArduinoAddons/README.md) for details. + 5. Start the arduino IDE. + 6. Select Tools -> Board -> Arduino Mega 2560 or your microcontroller + 7. Select the correct serial port in Tools ->Serial Port + 8. Open Marlin.pde or .ino + 9. Click the Verify/Compile button + 10. Click the Upload button. If all goes well the firmware is uploading + +That's ok. Enjoy Silky Smooth Printing. \ No newline at end of file diff --git a/Documentation/Contributing.md b/Documentation/Contributing.md new file mode 100644 index 000000000..2caa96442 --- /dev/null +++ b/Documentation/Contributing.md @@ -0,0 +1,10 @@ +Developer Notes +=================== + +- There are now 2 branches: The __development__ branch is where new features and code changes will be sorted out. This branch may have untested code in it, so please let us know if you find any bugs. When the __development__ branch has reached a state where it is stable, it will be moved to the __stable__ branch. + +- We are doing a kind of cleanup in the list of Issues and Pull Requests, the aim is to get to a state where we can certify the code as stable. To get the code tested as widely as possible we require several volunteers with a wide variety of hardware configurations willing to test the firmware and help us to certify it as stable. If you want to help out testing go to this issue and let us know: https://github.com/MarlinFirmware/Marlin/issues/1209 + +- Before you submit any pull request, we ask that you _PLEASE_ test your code before submission, even if the change seems innocuous. When creating the pull request, please include the hardware you used for testing and a short synopsis of your testing procedure. Untested pull requests are less likely to be merged, as even slight changes create the risk of breaking the main branch. + +- If you have a fix don't open an issue telling about it, but test the code and submit a pull request. Use the __development__ branch when you submit. \ No newline at end of file diff --git a/Documentation/Features.md b/Documentation/Features.md new file mode 100644 index 000000000..b306741e8 --- /dev/null +++ b/Documentation/Features.md @@ -0,0 +1,112 @@ +# Features + +* Interrupt based movement with real linear acceleration +* High steprate +* Look ahead (Keep the speed high when possible. High cornering speed) +* Interrupt based temperature protection +* Preliminary support for [Matthew Roberts Advance Algorithm](http://reprap.org/pipermail/reprap-dev/2011-May/003323.html) +* Full endstop support +* SD Card support +* SD Card folders (works in pronterface) +* SD Card autostart support +* LCD support (ideally 20x4) +* LCD menu system for autonomous SD card printing, controlled by an click-encoder. +* EEPROM storage of e.g. max-velocity, max-acceleration, and similar variables +* many small but handy things originating from bkubicek's fork. +* Arc support +* Temperature oversampling +* Dynamic Temperature setpointing aka "AutoTemp" +* Support for [QTMarlin](https://github.com/bkubicek/QTMarlin), a very beta GUI for PID-tuning and velocity-acceleration testing. +* Endstop trigger reporting to the host software. +* Updated sdcardlib +* Heater power reporting. Useful for PID monitoring. +* PID tuning +* [CoreXY kinematics](www.corexy.com/theory.html) +* Delta kinematics +* SCARA kinematics +* Dual X-carriage support for multiple extruder systems +* Configurable serial port to support connection of wireless adaptors. +* Automatic operation of extruder/cold-end cooling fans based on nozzle temperature +* RC Servo Support, specify angle or duration for continuous rotation servos. +* Bed Auto Leveling. +* Support for a filament diameter sensor, which adjusts extrusion volume + +The default baudrate is 250000. This baudrate has less jitter and hence errors than the usual 115200 baud, but is less supported by drivers and host-environments. + +## Differences and additions to the already good Sprinter firmware + +### Look-ahead + +Marlin has look-ahead. While sprinter has to break and re-accelerate at each corner, +lookahead will only decelerate and accelerate to a velocity, +so that the change in vectorial velocity magnitude is less than the xy_jerk_velocity. +This is only possible, if some future moves are already processed, hence the name. +It leads to less over-deposition at corners, especially at flat angles. + +### Arc support + +Slic3r can find curves that, although broken into segments, were ment to describe an arc. +Marlin is able to print those arcs. The advantage is the firmware can choose the resolution, +and can perform the arc with nearly constant velocity, resulting in a nice finish. +Also, less serial communication is needed. + +### Temperature Oversampling + +To reduce noise and make the PID-differential term more useful, 16 ADC conversion results are averaged. + +### AutoTemp + +If your gcode contains a wide spread of extruder velocities, or you realtime change the building speed, the temperature should be changed accordingly. +Usually, higher speed requires higher temperature. +This can now be performed by the AutoTemp function +By calling M109 S B F you enter the autotemp mode. + +You can leave it by calling M109 without any F. +If active, the maximal extruder stepper rate of all buffered moves will be calculated, and named "maxerate" [steps/sec]. +The wanted temperature then will be set to t=tempmin+factor*maxerate, while being limited between tempmin and tempmax. +If the target temperature is set manually or by gcode to a value less then tempmin, it will be kept without change. +Ideally, your gcode can be completely free of temperature controls, apart from a M109 S T F in the start.gcode, and a M109 S0 in the end.gcode. + +### EEPROM + +If you know your PID values, the acceleration and max-velocities of your unique machine, you can set them, and finally store them in the EEPROM. +After each reboot, it will magically load them from EEPROM, independent what your Configuration.h says. + +### LCD Menu + +If your hardware supports it, you can build yourself a LCD-CardReader+Click+encoder combination. It will enable you to realtime tune temperatures, +accelerations, velocities, flow rates, select and print files from the SD card, preheat, disable the steppers, and do other fancy stuff. +One working hardware is documented here: http://www.thingiverse.com/thing:12663 +Also, with just a 20x4 or 16x2 display, useful data is shown. + +### SD card directories + +If you have an SD card reader attached to your controller, also folders work now. Listing the files in pronterface will show "/path/subpath/file.g". +You can write to file in a subfolder by specifying a similar text using small letters in the path. +Also, backup copies of various operating systems are hidden, as well as files not ending with ".g". + +### Autostart + +If you place a file auto[0-9].g into the root of the sd card, it will be automatically executed if you boot the printer. The same file will be executed by selecting "Autostart" from the menu. +First *0 will be performed, than *1 and so on. That way, you can heat up or even print automatically without user interaction. + +### Endstop trigger reporting + +If an endstop is hit while moving towards the endstop, the location at which the firmware thinks that the endstop was triggered is outputed on the serial port. +This is useful, because the user gets a warning message. +However, also tools like QTMarlin can use this for finding acceptable combinations of velocity+acceleration. + +### Coding paradigm + +Not relevant from a user side, but Marlin was split into thematic junks, and has tried to partially enforced private variables. +This is intended to make it clearer, what interacts which what, and leads to a higher level of modularization. +We think that this is a useful prestep for porting this firmware to e.g. an ARM platform in the future. +A lot of RAM (with enabled LCD ~2200 bytes) was saved by storing char []="some message" in Program memory. +In the serial communication, a #define based level of abstraction was enforced, so that it is clear that +some transfer is information (usually beginning with "echo:"), an error "error:", or just normal protocol, +necessary for backwards compatibility. + +### Interrupt based temperature measurements + +An interrupt is used to manage ADC conversions, and enforce checking for critical temperatures. +This leads to less blocking in the heater management routine. diff --git a/Documentation/FilamentSensor.md b/Documentation/FilamentSensor.md new file mode 100644 index 000000000..46e4251c1 --- /dev/null +++ b/Documentation/FilamentSensor.md @@ -0,0 +1,9 @@ +Filament Sensor +--------------- +Supports the use of a real time filament diameter sensor that measures the diameter of the filament going into the extruder and then adjusts the extrusion rate to compensate for filament that does not match what is defined in the g-code. The diameter can also be displayed on the LCD screen. This potentially eliminates the need to measure filament diameter when changing spools of filament. Gcode becomes independent of the filament diameter. Can also compensate for changing diameter. + +For examples of these sensors, see: http://www.thingiverse.com/thing:454584, https://www.youmagine.com/designs/filament-diameter-sensor, http://diy3dprinting.blogspot.com/2014/01/diy-filament-diameter-sensor.html. Any sensor which produces a voltage equivalent to the diameter in mm (i.e. 1v = 1mm) can be used. This provides a very simple interface and may encourage more innovation in this area. + +4 new Mcodes are defined to set relevant parameters: M404, M405, M406, M407 - see above. + + Implements a delay buffer to handle the transit delay between where the filament is measured and when it gets to the extruder. \ No newline at end of file diff --git a/Documentation/GCodes.md b/Documentation/GCodes.md new file mode 100644 index 000000000..253fb7fc8 --- /dev/null +++ b/Documentation/GCodes.md @@ -0,0 +1,103 @@ +# Implemented G Codes + +## G Codes + +* G0 -> G1 +* G1 - Coordinated Movement X Y Z E +* G2 - CW ARC +* G3 - CCW ARC +* G4 - Dwell S[seconds] or P[milliseconds] +* G10 - retract filament according to settings of M207 +* G11 - retract recover filament according to settings of M208 +* G28 - Home all Axis +* G29 - Detailed Z-Probe, probes the bed at 3 points. You must be at the home position for this to work correctly. +* G30 - Single Z Probe, probes bed at current XY location. +* G31 - Dock Z Probe sled (if enabled) +* G32 - Undock Z Probe sled (if enabled) +* G90 - Use Absolute Coordinates +* G91 - Use Relative Coordinates +* G92 - Set current position to cordinates given + +## M Codes +* M0 - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled) +* M1 - Same as M0 +* M17 - Enable/Power all stepper motors +* M18 - Disable all stepper motors; same as M84 +* M20 - List SD card +* M21 - Init SD card +* M22 - Release SD card +* M23 - Select SD file (M23 filename.g) +* M24 - Start/resume SD print +* M25 - Pause SD print +* M26 - Set SD position in bytes (M26 S12345) +* M27 - Report SD print status +* M28 - Start SD write (M28 filename.g) +* M29 - Stop SD write +* M30 - Delete file from SD (M30 filename.g) +* M31 - Output time since last M109 or SD card start to serial +* M32 - Select file and start SD print (Can be used when printing from SD card) +* M42 - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used. +* M80 - Turn on Power Supply +* M81 - Turn off Power Supply +* M82 - Set E codes absolute (default) +* M83 - Set E codes relative while in Absolute Coordinates (G90) mode +* M84 - Disable steppers until next move, or use S[seconds] to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout. +* M85 - Set inactivity shutdown timer with parameter S[seconds]. To disable set zero (default) +* M92 - Set axis_steps_per_unit - same syntax as G92 +* M104 - Set extruder target temp +* M105 - Read current temp +* M106 - Fan on +* M107 - Fan off +* M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating +* Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling +* M112 - Emergency stop +* M114 - Output current position to serial port +* M115 - Capabilities string +* M117 - display message +* M119 - Output Endstop status to serial port +* M126 - Solenoid Air Valve Open (BariCUDA support by jmil) +* M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil) +* M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil) +* M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil) +* M140 - Set bed target temp +* M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating +* Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling +* M200 - D[millimeters]- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). +* M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) +* M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!! +* M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec +* M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate +* M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk +* M206 - set additional homing offset +* M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting +* M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/min] +* M209 - S[1=true/0=false] enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction. +* M218 - set hotend offset (in mm): T[extruder_number] X[offset_on_X] Y[offset_on_Y] +* M220 - S[factor in percent] - set speed factor override percentage +* M221 - S[factor in percent] - set extrude factor override percentage +* M240 - Trigger a camera to take a photograph +* M280 - Position an RC Servo P[index] S[angle/microseconds], ommit S to report back current angle +* M300 - Play beep sound S[frequency Hz] P[duration ms] +* M301 - Set PID parameters P I and D +* M302 - Allow cold extrudes +* M303 - PID relay autotune S[temperature] sets the target temperature. (default target temperature = 150C) +* M304 - Set bed PID parameters P I and D +* M350 - Set microstepping mode. +* M351 - Toggle MS1 MS2 pins directly. +* M400 - Finish all moves +* M401 - Lower z-probe if present +* M402 - Raise z-probe if present +* M404 - N[dia in mm] Enter the nominal filament width (3mm, 1.75mm) or will display nominal filament width without parameters +* M405 - Turn on Filament Sensor extrusion control. Optional D[delay in cm] to set delay in centimeters between sensor and extruder +* M406 - Turn off Filament Sensor extrusion control +* M407 - Displays measured filament diameter +* M500 - stores paramters in EEPROM +* M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +* M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +* M503 - print the current settings (from memory not from EEPROM) +* M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) +* M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] +* M907 - Set digital trimpot motor current using axis codes. +* M908 - Control digital trimpot directly. +* M928 - Start SD logging (M928 filename.g) - ended by M29 +* M999 - Restart after being stopped by error diff --git a/Documentation/LCD Menu Tree.pdf b/Documentation/LCD Menu Tree.pdf new file mode 100644 index 000000000..72b5911dd Binary files /dev/null and b/Documentation/LCD Menu Tree.pdf differ diff --git a/Documentation/Logo/Marlin Logo GitHub.png b/Documentation/Logo/Marlin Logo GitHub.png new file mode 100644 index 000000000..40cd19b6c Binary files /dev/null and b/Documentation/Logo/Marlin Logo GitHub.png differ diff --git a/Documentation/Logo/Marlin Logo LCD High.png b/Documentation/Logo/Marlin Logo LCD High.png new file mode 100644 index 000000000..81225c3de Binary files /dev/null and b/Documentation/Logo/Marlin Logo LCD High.png differ diff --git a/Documentation/Logo/Marlin Logo LCD Low.png b/Documentation/Logo/Marlin Logo LCD Low.png new file mode 100644 index 000000000..34b80c493 Binary files /dev/null and b/Documentation/Logo/Marlin Logo LCD Low.png differ diff --git a/Documentation/Logo/Marlin Logo.ai b/Documentation/Logo/Marlin Logo.ai new file mode 100644 index 000000000..1caad25dd --- /dev/null +++ b/Documentation/Logo/Marlin Logo.ai @@ -0,0 +1,353 @@ +%!PS-Adobe-3.0 +%%Creator:Adobe Illustrator (TM) 8.000000 Exported from CorelDRAW X6 +%%Title:marlin logoscript.ai +%%CreationDate: +%%Canvassize:16383 +%%BoundingBox:-62 3484 337 3617 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 +%%+ procset Adobe_typography_AI5 1.0 1 +%%+ procset Adobe_ColorImage_AI6 1.1 0 +%%+ procset Adobe_Illustrator_AI5 1.2 0 +%%+ procset Adobe_cshow 2.0 8 +%%+ procset Adobe_shading_AI8 1.0 0 +%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 +%%+ procset Adobe_typography_AI5 1.0 1 +%%+ procset Adobe_ColorImage_AI6 1.1 0 +%%+ procset Adobe_Illustrator_AI5 1.2 0 +%%+ procset Adobe_cshow 2.0 8 +%%DocumentNeededResources: procset Adobe_level2_AI5 1.2 0 +%%+ procset Adobe_typography_AI5 1.0 0 +%%+ procset Adobe_ColorImage_AI6 1.1 0 +%%+ procset Adobe_Illustrator_AI5 1.0 0 +%%DocumentNeededResources: procset Adobe_level2_AI5 1.2 0 +%%+ procset Adobe_Illustrator_AI5 1.0 0 +%%+ procset Adobe_packedarray 2.0 0 +%%+ procset Adobe_cmykcolor 1.1 0 +%%+ procset Adobe_cshow 1.1 0 +%%+ procset Adobe_customcolor 1.0 0 +%%+ procset Adobe_typography_AI3 1.0 1 +%%+ procset Adobe_pattern_AI3 1.0 1 +%%+ procset Adobe_IllustratorA_AI3 1.0 1 +%%DocumentNeededResources: procset Adobe_packedarray 2.0 0 +%%+ procset Adobe_cmykcolor 1.1 0 +%%+ procset Adobe_cshow 1.1 0 +%%+ procset Adobe_customcolor 1.0 0 +%%+ procset Adobe_typography_AI3 1.0 1 +%%+ procset Adobe_pattern_AI3 1.0 1 +%%+ procset Adobe_IllustratorA_AI3 1.0 1 +%AI3_ColorUsage: Color +%AI3_Cropmarks:0 0 842 595 +%AI3_TileBox:0 0 842 595 +%AI3_TemplateBox:421 297 421 297 +%AI3_DocumentPreview: None +%AI5_ArtSize: 842 595 +%AI5_NumLayers: 1 +%AI5_FileFormat 2.0 +%AI9_ColorModel: 2 +%AI12_CMSettings: 00.MS +%AI7_Thumbnail: 128 44 8 +%%BeginData: 4580 Hex Bytes +%2B2A29FEFEFE000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000000000000000000000000000 +%000000000000000000000000000000000000 +%524C45FD0601FD7A00FD0401FD7C00FD0301FD7D000101FD0500FD6301FD +%160001FD0400FD6601FD150001FD0300FD6801FD1800FD6901FD1600FD6B +%01FD1500FD5001FD0600FD1601FD1400FD0C01FD0500FD0901FD0600FD30 +%01FD0600FD0501FD0300FD0F01FD1300FD0A01FD0A00FD0401FD0A00FD2E +%01FD0600FD0401FD0500FD0F01FD1200FD0901FD0C000101FD0C00FD2D01 +%FD0600FD0401FD0500FD1001FD1100FD0801FD1C00FD2C01FD0600FD0401 +%FD0500FD1101FD1000FD0701FD1E00FD2B01FD0600FD0401FD0500FD1201 +%FD0F00FD0601FD1F00FD2B01FD0600FD0401FD0500FD1301FD0E00FD0601 +%FD0700FD0401FD0900FD0501FD0700FD2A01FD0600FD1D01FD0D00FD0601 +%FD0600FD0601FD0700FD0701FD0600FD0701FD0700FD0F01FD0700FD0601 +%FD0600FD0401FD0500FD0901FD0700FD0501FD0C00FD0501FD0600FD0801 +%FD0600FD0701FD0600FD0601FD0A00FD0C01FD0A00FD0401FD0600FD0401 +%FD0500FD0801FD0A00FD0401FD0B00FD0501FD0600FD0801FD0600FD0701 +%FD0600FD0401FD0D00FD0901FD0D00FD0301FD0600FD0401FD0500FD0601 +%FD0D00FD0401FD0A00FD0501FD0600FD0801FD0600FD0701FD0600FD0301 +%FD0F00FD0801FD0E000101FD0600FD0401FD0500FD0601FD0E00FD0401FD +%0900FD0501FD0600FD0801FD0600FD0701FD06000101FD1100FD0601FD10 +%0001FD0600FD0401FD0500FD0501FD1000FD0401FD0800FD0501FD0600FD +%0801FD0600FD0701FD06000101FD1100FD0501FD110001FD0600FD0401FD +%0500FD0401FD1100FD0501FD0700FD0501FD0600FD0801FD0600FD0701FD +%060001FD0700FD0501FD0700FD0401FD0700FD0401FD060001FD0600FD04 +%01FD0500FD0401FD0700FD0401FD0600FD0601FD0600FD0501FD0600FD08 +%01FD0600FD0701FD060001FD0600FD0701FD0600FD0401FD0600FD0601FD +%050001FD0600FD0401FD0500FD0401FD0600FD0601FD0600FD0501FD0600 +%FD0501FD0600FD0801FD0600FD0701FD060001FD0600FD0801FD0500FD04 +%01FD0600FD0601FD0C00FD0401FD0500FD0401FD0600FD0601FD0600FD05 +%01FD0600FD0501FD0600FD0801FD0600FD0701FD060001FD0500FD0901FD +%0600FD0301FD0600FD0601FD0C00FD0401FD0500FD0401FD0600FD0601FD +%0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD0C00FD0901FD +%0600FD0301FD0600FD0C01FD0600FD0401FD0500FD0401FD0600FD0601FD +%0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD060001FD0500 +%FD0901FD0600FD0301FD0600FD0C01FD0600FD0401FD0500FD0401FD0600 +%FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD0600 +%01FD0600FD0801FD0600FD0301FD0600FD0C01FD0600FD0401FD0500FD04 +%01FD0600FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD0600FD07 +%01FD060001FD0600FD0801FD0600FD0301FD0600FD0C01FD0600FD0401FD +%0500FD0401FD0600FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD +%0600FD0701FD060001FD0800FD0601FD0600FD0301FD0600FD0C01FD0600 +%FD0401FD0500FD0401FD0600FD0601FD0600FD0501FD0600FD0501FD0600 +%FD0801FD0600FD0701FD06000101FD0C0001FD0F00FD0C01FD090001FD0F +%00FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD06 +%000101FD0C0001FD0F00FD0D01FD080001FD0F00FD0601FD0600FD0501FD +%0600FD0501FD0600FD0801FD0600FD0701FD0600FD0301FD0B0001FD0F00 +%FD0D01FD080001FD0F00FD0601FD0600FD0501FD0600FD0501FD0600FD08 +%01FD0600FD0701FD0600FD0401FD0A0001FD0F00FD0E01FD070001FD0F00 +%FD0601FD0600FD0501FD0600FD0501FD0600FD0801FD0600FD0701FD0600 +%FD0601FD080001FD0F00FD0F01FD060001FD0F00FD0601FD0600FD0501FD +%0600FD0601FD0500FD0801FD0600FD0701FD0600FD0801FD060001FD0F00 +%FD1101FD040001FD0F00FD0601FD0500FD0601FD0700FD7801FD040001FD +%0300FD7801FD03000101FD0400FD7601FD0400FD0301FD0500FD7201FD05 +%00FD0501FD7A00FD0701FD7800FD0A01FD7400FD0601 +%%EndData +%%EndComments +%%BeginProlog +%%IncludeResource: procset Adobe_level2_AI5 1.2 0 +%%IncludeResource: procset Adobe_typography_AI5 1.0 1 +%%IncludeResource: procset Adobe_ColorImage_AI6 1.1 0 +%%IncludeResource: procset Adobe_Illustrator_AI5 1.2 0 +%%IncludeResource: procset Adobe_cshow 2.0 8 +%%IncludeResource: procset Adobe_level2_AI5 1.2 0 +%%IncludeResource: procset Adobe_typography_AI5 1.0 1 +%%IncludeResource: procset Adobe_ColorImage_AI6 1.1 0 +%%IncludeResource: procset Adobe_Illustrator_AI5 1.2 0 +%%IncludeResource: procset Adobe_cshow 2.0 8 +%%IncludeResource: procset Adobe_level2_AI5 1.2 0 +%%IncludeResource: procset Adobe_typography_AI5 1.0 0 +%%IncludeResource: procset Adobe_ColorImage_AI6 1.1 0 +%%IncludeResource: procset Adobe_Illustrator_AI5 1.0 0 +%%IncludeResource: procset Adobe_level2_AI5 1.2 0 +%%IncludeResource: procset Adobe_Illustrator_AI5 1.0 0 +%%IncludeResource: procset Adobe_packedarray 2.0 0 +Adobe_packedarray /initialize get exec +%%IncludeResource: procset Adobe_cmykcolor 1.1 0 +%%IncludeResource: procset Adobe_cshow 1.1 0 +%%IncludeResource: procset Adobe_customcolor 1.0 0 +%%IncludeResource: procset Adobe_typography_AI3 1.0 1 +%%IncludeResource: procset Adobe_pattern_AI3 1.0 1 +%%IncludeResource: procset Adobe_IllustratorA_AI3 1.0 1 +%%IncludeResource: procset Adobe_packedarray 2.0 0 +Adobe_packedarray /initialize get exec +%%IncludeResource: procset Adobe_cmykcolor 1.1 0 +%%IncludeResource: procset Adobe_cshow 1.1 0 +%%IncludeResource: procset Adobe_customcolor 1.0 0 +%%IncludeResource: procset Adobe_typography_AI3 1.0 1 +%%IncludeResource: procset Adobe_pattern_AI3 1.0 1 +%%IncludeResource: procset Adobe_IllustratorA_AI3 1.0 1 +%%EndProlog +%%BeginSetup +Adobe_level2_AI5 /initialize get exec +Adobe_cshow /initialize get exec +Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec +Adobe_ColorImage_AI6 /initialize get exec +Adobe_Illustrator_AI5 /initialize get exec +Adobe_level2_AI5 /initialize get exec +Adobe_cshow /initialize get exec +Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec +Adobe_ColorImage_AI6 /initialize get exec +Adobe_Illustrator_AI5 /initialize get exec +Adobe_level2_AI5 /initialize get exec +Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec +Adobe_ColorImage_AI6 /initialize get exec +Adobe_Illustrator_AI5 /initialize get exec +Adobe_cmykcolor /initialize get exec +Adobe_cshow /initialize get exec +Adobe_customcolor /initialize get exec +Adobe_typography_AI3 /initialize get exec +Adobe_pattern_AI3 /initialize get exec +Adobe_IllustratorA_AI3 /initialize get exec +Adobe_level2_AI5 /initialize get exec +Adobe_Illustrator_AI5 /initialize get exec +Adobe_cmykcolor /initialize get exec +Adobe_cshow /initialize get exec +Adobe_customcolor /initialize get exec +Adobe_typography_AI3 /initialize get exec +Adobe_pattern_AI3 /initialize get exec +Adobe_IllustratorA_AI3 /initialize get exec +%%EndSetup +%AI5_BeginLayer + 1 1 1 1 0 0 -1 43 42 41 Lb +(Layer 1) Ln +*u +1 XR +0 O +0.0000 0.0000 0.0000 1.0000 k +256.4660 3540.8095 m +256.4660 3520.4596 L +242.7843 3520.4596 L +242.7843 3565.7580 L +227.6082 3565.7580 L +227.6082 3520.4596 L +227.6082 3506.5480 L +242.7843 3506.5480 L +256.4660 3506.5480 L +271.6421 3506.5480 L +271.6421 3520.4596 L +271.6421 3541.1542 l +271.6421 3547.8227 276.4709 3552.4216 283.1394 3552.4216 c +293.1418 3552.4216 294.2915 3544.4886 294.2915 3541.1542 c +294.2915 3506.5480 L +298.3190 3506.5480 302.3467 3506.5480 306.3742 3506.5480 C +307.8984 3506.5145 309.4679 3507.4029 309.4679 3510.6398 c +309.4679 3540.8095 l +309.4679 3556.3306 299.6952 3567.2528 283.1394 3567.2528 c +267.0435 3567.2528 256.4660 3555.8705 256.4660 3540.8095 c +256.4660 3540.8095 l +f +140.5471 3506.5480 m +128.2450 3506.5480 L +113.0689 3506.5480 L +113.0689 3521.2643 L +113.0689 3535.9807 l +113.0689 3545.0634 106.2856 3552.5364 97.8928 3552.5364 c +89.5000 3552.5364 82.7167 3545.2933 82.7167 3536.4404 c +82.7167 3527.7026 89.5000 3521.2643 98.2378 3521.2643 c +106.9756 3521.2643 L +106.9756 3506.5480 L +96.3981 3506.5480 l +79.8423 3506.5480 67.4254 3519.8847 67.4254 3536.4404 c +67.4254 3553.2264 79.9571 3567.2528 97.8928 3567.2528 c +115.7134 3567.2528 128.2450 3553.2264 128.2450 3535.9807 c +128.2450 3521.2643 L +140.5471 3521.2643 L +140.5471 3540.8095 l +140.5471 3555.8705 151.1246 3567.2528 167.2206 3567.2528 c +183.7763 3567.2528 193.5490 3556.3306 193.5490 3540.8095 c +193.5490 3538.1650 L +178.3726 3538.1650 L +178.3726 3541.1542 l +178.3726 3544.4886 177.2229 3552.4216 167.2206 3552.4216 c +160.5521 3552.4216 155.7232 3547.8227 155.7232 3541.1542 c +155.7232 3521.2643 L +155.7232 3506.5480 L +140.5471 3506.5480 L +140.5471 3506.5480 L +f +64.0239 3559.5496 m +64.0239 3575.5308 52.1819 3588.2926 35.0512 3588.2926 c +26.3134 3588.2926 18.6103 3584.2686 13.7815 3577.9450 C +8.8379 3584.2686 1.3646 3588.2926 -7.4880 3588.2926 c +-24.5038 3588.2926 -36.3458 3575.5305 -36.3458 3559.5496 c +-36.3458 3542.7838 -36.3458 3526.0183 -36.3458 3509.2525 C +-36.3458 3507.8134 -35.2460 3506.5480 -33.5305 3506.5480 C +-21.2848 3506.5480 L +-21.2848 3559.7798 l +-21.2848 3567.3678 -15.8811 3573.4612 -7.4880 3573.4612 c +0.7897 3573.4612 6.1934 3567.3678 6.1934 3559.7798 c +6.1934 3506.5480 L +21.4846 3506.5480 L +21.4846 3559.7798 l +21.4846 3567.3678 26.6584 3573.4612 35.0512 3573.4612 c +43.3293 3573.4612 48.8477 3567.3678 48.8477 3559.7798 c +48.8477 3506.5480 L +64.0239 3506.5480 L +64.0239 3559.5496 l +64.0239 3559.5496 l +f +197.0773 3531.3817 m +197.0773 3515.1707 206.2749 3504.8234 223.6357 3506.6631 C +223.6357 3520.4596 L +216.1624 3519.9995 212.3685 3522.9889 212.3685 3531.3817 c +212.3685 3592.0865 L +197.0773 3592.0865 L +197.0773 3531.3817 l +197.0773 3531.3817 l +f +242.7843 3572.1967 m +242.7843 3580.7043 l +242.7843 3584.9582 239.3351 3588.2926 235.1962 3588.2926 c +230.9423 3588.2926 227.4931 3584.9582 227.4931 3580.7043 c +227.4931 3572.1967 L +242.7843 3572.1967 L +f +*U +1 XR +0 R +0.0000 0.0000 0.0000 1.0000 K +0 1 0 0 0 Xy +0 J +0 j +22.9256 M +7.0866 w +[]0 d +-31.5927 3613.1664 m +304.7145 3613.1664 l +320.3050 3613.1664 333.0609 3600.4107 333.0609 3584.8202 c +333.0609 3515.5123 l +333.0609 3499.9217 320.3050 3487.1661 304.7145 3487.1661 c +-31.5927 3487.1661 l +-47.1832 3487.1661 -59.9391 3499.9217 -59.9391 3515.5123 c +-59.9391 3584.8202 l +-59.9391 3600.4107 -47.1832 3613.1664 -31.5927 3613.1664 c +s +1 XR +0 O +0.0000 0.0000 0.0000 1.0000 k +336.5671 3616.7281 m +260.4297 3616.7281 L +336.5671 3539.4786 L +336.5671 3616.7281 L +f +LB +%AI5_EndLayer-- +%%PageTrailer +gsave annotatepage grestore showpage +%%Trailer +Adobe_Illustrator_AI5 /terminate get exec +Adobe_ColorImage_AI6 /terminate get exec +Adobe_typography_AI5 /terminate get exec +Adobe_cshow /terminate get exec +Adobe_level2_AI5 /terminate get exec +Adobe_Illustrator_AI5 /terminate get exec +Adobe_ColorImage_AI6 /terminate get exec +Adobe_typography_AI5 /terminate get exec +Adobe_cshow /terminate get exec +Adobe_level2_AI5 /terminate get exec +Adobe_Illustrator_AI5 /terminate get exec +Adobe_ColorImage_AI6 /terminate get exec +Adobe_typography_AI5 /terminate get exec +Adobe_level2_AI5 /terminate get exec +Adobe_Illustrator_AI5 /terminate get exec +Adobe_level2_AI5 /terminate get exec +Adobe_IllustratorA_AI3 /terminate get exec +Adobe_pattern_AI3 /terminate get exec +Adobe_typography_AI3 /terminate get exec +Adobe_customcolor /terminate get exec +Adobe_cshow /terminate get exec +Adobe_cmykcolor /terminate get exec +Adobe_packedarray /terminate get exec +Adobe_IllustratorA_AI3 /terminate get exec +Adobe_pattern_AI3 /terminate get exec +Adobe_typography_AI3 /terminate get exec +Adobe_customcolor /terminate get exec +Adobe_cshow /terminate get exec +Adobe_cmykcolor /terminate get exec +Adobe_packedarray /terminate get exec +%%EOF + diff --git a/Documentation/Logo/Marlin Logo.cdr b/Documentation/Logo/Marlin Logo.cdr new file mode 100644 index 000000000..ae515afa5 Binary files /dev/null and b/Documentation/Logo/Marlin Logo.cdr differ diff --git a/Documentation/Logo/Marlin Logo.dxf b/Documentation/Logo/Marlin Logo.dxf new file mode 100644 index 000000000..07482cc34 --- /dev/null +++ b/Documentation/Logo/Marlin Logo.dxf @@ -0,0 +1,7718 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1014 + 9 +$ACADMAINTVER + 70 + 9 + 9 +$DWGCODEPAGE + 3 +ANSI_932 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +1.000000000000000E+20 + 20 +1.000000000000000E+20 + 30 +1.000000000000000E+20 + 9 +$EXTMAX + 10 +-1.000000000000000E+20 + 20 +-1.000000000000000E+20 + 30 +-1.000000000000000E+20 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +12.0 + 20 +9.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 1 + 9 +$DRAGMODE + 70 + 2 + 9 +$LTSCALE + 40 +1.0 + 9 +$OSMODE + 70 + 37 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +0.2 + 9 +$TRACEWID + 40 +0.05 + 9 +$TEXTSTYLE + 7 +STANDARD + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +BYLAYER + 9 +$CECOLOR + 62 + 256 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DELOBJ + 70 + 1 + 9 +$DISPSILH + 70 + 0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +0.18 + 9 +$DIMEXO + 40 +0.0625 + 9 +$DIMDLI + 40 +0.38 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +0.18 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +0.18 + 9 +$DIMCEN + 40 +0.09 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 1 + 9 +$DIMTOH + 70 + 1 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 0 + 9 +$DIMZIN + 70 + 0 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 2 + 9 +$DIMALTF + 40 +25.4 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 0 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 + 0 + 9 +$DIMSOXD + 70 + 0 + 9 +$DIMSAH + 70 + 0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +STANDARD + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.09 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 1 + 9 +$DIMTZIN + 70 + 0 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMFIT + 70 + 3 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMUNIT + 70 + 2 + 9 +$DIMDEC + 70 + 4 + 9 +$DIMTDEC + 70 + 4 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 2 + 9 +$DIMTXSTY + 7 +STANDARD + 9 +$DIMAUNIT + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +0.1 + 9 +$FILLETRAD + 40 +0.5 + 9 +$AUNITS + 70 + 0 + 9 +$AUPREC + 70 + 0 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 + 0 + 9 +$CHAMFERA + 40 +0.5 + 9 +$CHAMFERB + 40 +0.5 + 9 +$CHAMFERC + 40 +1.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2456335.851608797 + 9 +$TDUPDATE + 40 +2456335.851608808 + 9 +$TDINDWG + 40 +0.0000000116 + 9 +$TDUSRTIMER + 40 +0.0000000116 + 9 +$USRTIMER + 70 + 1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 + 0 + 9 +$PDMODE + 70 + 0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$COORDS + 70 + 1 + 9 +$SPLFRAME + 70 + 0 + 9 +$SPLINETYPE + 70 + 6 + 9 +$SPLINESEGS + 70 + 8 + 9 +$ATTDIA + 70 + 0 + 9 +$ATTREQ + 70 + 1 + 9 +$HANDLING + 70 + 1 + 9 +$HANDSEED + 5 +72 + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +1.000000000000000E+20 + 20 +1.000000000000000E+20 + 30 +1.000000000000000E+20 + 9 +$PEXTMAX + 10 +-1.000000000000000E+20 + 20 +-1.000000000000000E+20 + 30 +-1.000000000000000E+20 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$PICKSTYLE + 70 + 1 + 9 +$CMLSTYLE + 2 +STANDARD + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 +280 + 0 +281 + 0 + 0 +CLASS + 1 +XRECORD + 2 +AcDbXrecord + 3 +AutoCAD 2000 + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LWPOLYLINE + 2 +AcDbPolyline + 3 +AutoCAD 2000 + 90 + 0 +280 + 0 +281 + 1 + 0 +CLASS + 1 +HATCH + 2 +AcDbHatch + 3 +AutoCAD 2000 + 90 + 0 +280 + 0 +281 + 1 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +VPORT + 5 +29 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*ACTIVE + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +0.0 + 22 +0.0 + 13 +0.0 + 23 +0.0 + 14 +0.5 + 24 +0.5 + 15 +0.5 + 25 +0.5 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +105.0008259828644 + 27 +148.5000657452101 + 37 +0.0 + 40 +297.0001314904201 + 41 +0.7070759562020681 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BYBLOCK + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BYLAYER + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CONTINUOUS + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +LAYER + 5 +3B +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LAYER_1 + 70 + 0 + 62 + 7 + 6 +CONTINUOUS + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +STANDARD + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +STANDARD + 70 + 0 + 3 + + 4 + + 5 + + 6 + + 7 + + 40 +1.0 + 41 +0.18 + 42 +0.0625 + 43 +0.38 + 44 +0.18 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 +140 +0.18 +141 +0.09 +142 +0.0 +143 +25.4 +144 +1.0 +145 +0.0 +146 +1.0 +147 +0.09 + 71 + 0 + 72 + 0 + 73 + 1 + 74 + 1 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +170 + 0 +171 + 2 +172 + 0 +173 + 0 +174 + 0 +175 + 0 +176 + 0 +177 + 0 +178 + 0 +270 + 2 +271 + 4 +272 + 4 +273 + 2 +274 + 2 +340 +11 +275 + 0 +280 + 0 +281 + 0 +282 + 0 +283 + 1 +284 + 0 +285 + 0 +286 + 0 +287 + 3 +288 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*MODEL_SPACE + 0 +BLOCK_RECORD + 5 +1B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*PAPER_SPACE + 0 +BLOCK_RECORD + 5 +3C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +BLOCK_2 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*MODEL_SPACE + 70 + 0 + 71 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*MODEL_SPACE + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*PAPER_SPACE + 70 + 0 + 71 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*PAPER_SPACE + 1 + + 0 +ENDBLK + 5 +1D +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +3E +330 +3C +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +BLOCK_2 + 70 + 0 + 71 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +BLOCK_2 + 1 + + 0 +POLYLINE + 5 +40 +330 +3C +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDb2dPolyline + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +VERTEX + 5 +41 +330 +40 +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbVertex +100 +AcDb2dVertex + 10 +145.4061116172943 + 20 +194.6559908910062 + 30 +0.0 + 0 +VERTEX + 5 +42 +330 +40 +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbVertex +100 +AcDb2dVertex + 10 +172.2657985680447 + 20 +167.4042520740344 + 30 +0.0 + 0 +VERTEX + 5 +43 +330 +40 +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbVertex +100 +AcDb2dVertex + 10 +172.2657985680447 + 20 +194.6559908910062 + 30 +0.0 + 0 +VERTEX + 5 +44 +330 +40 +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbVertex +100 +AcDb2dVertex + 10 +145.4061116172943 + 20 +194.6559908910062 + 30 +0.0 + 0 +SEQEND + 5 +45 +330 +40 +100 +AcDbEntity + 8 +LAYER_1 + 0 +HATCH + 5 +46 +330 +3C +100 +AcDbEntity + 8 +LAYER_1 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 3 + 72 + 1 + 10 +145.4061116172943 + 20 +194.6559908910062 + 11 +172.2657985680447 + 21 +167.4042520740344 + 72 + 1 + 10 +172.2657985680447 + 20 +167.4042520740344 + 11 +172.2657985680447 + 21 +194.6559908910062 + 72 + 1 + 10 +172.2657985680447 + 20 +194.6559908910062 + 11 +145.4061116172943 + 21 +194.6559908910062 + 97 + 0 + 75 + 2 + 76 + 1 + 98 + 0 + 0 +SPLINE + 5 +47 +330 +3C +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 11 + 71 + 3 + 72 + 20 + 73 + 16 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 10 +139.1815130945449 + 20 +181.9477226650166 + 30 +0.0 + 10 +139.1815130945449 + 20 +183.4484062583914 + 30 +0.0 + 10 +137.9647053691547 + 20 +184.6245618570557 + 30 +0.0 + 10 +136.5046739025058 + 20 +184.6245618570557 + 30 +0.0 + 10 +135.003990309131 + 20 +184.6245618570557 + 30 +0.0 + 10 +133.7871825837407 + 20 +183.4484062583914 + 30 +0.0 + 10 +133.7871825837407 + 20 +181.9477226650166 + 30 +0.0 + 10 +133.7871825837407 + 20 +181.9477226650166 + 30 +0.0 + 10 +133.7871825837407 + 20 +178.9463554782669 + 30 +0.0 + 10 +133.7871825837407 + 20 +178.9463554782669 + 30 +0.0 + 10 +133.7871825837407 + 20 +178.9463554782669 + 30 +0.0 + 10 +139.1815130945449 + 20 +178.9463554782669 + 30 +0.0 + 10 +139.1815130945449 + 20 +178.9463554782669 + 30 +0.0 + 10 +139.1815130945449 + 20 +178.9463554782669 + 30 +0.0 + 10 +139.1815130945449 + 20 +181.9477226650166 + 30 +0.0 + 10 +139.1815130945449 + 20 +181.9477226650166 + 30 +0.0 + 0 +HATCH + 5 +48 +330 +3C +100 +AcDbEntity + 8 +LAYER_1 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 4 + 94 + 3 + 73 + 0 + 74 + 1 + 95 + 20 + 96 + 16 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 10 +139.1815130945449 + 20 +181.9477226650166 + 10 +139.1815130945449 + 20 +183.4484062583914 + 10 +137.9647053691547 + 20 +184.6245618570557 + 10 +136.5046739025058 + 20 +184.6245618570557 + 10 +135.003990309131 + 20 +184.6245618570557 + 10 +133.7871825837407 + 20 +183.4484062583914 + 10 +133.7871825837407 + 20 +181.9477226650166 + 10 +133.7871825837407 + 20 +181.9477226650166 + 10 +133.7871825837407 + 20 +178.9463554782669 + 10 +133.7871825837407 + 20 +178.9463554782669 + 10 +133.7871825837407 + 20 +178.9463554782669 + 10 +139.1815130945449 + 20 +178.9463554782669 + 10 +139.1815130945449 + 20 +178.9463554782669 + 10 +139.1815130945449 + 20 +178.9463554782669 + 10 +139.1815130945449 + 20 +181.9477226650166 + 10 +139.1815130945449 + 20 +181.9477226650166 + 97 + 0 + 75 + 2 + 76 + 1 + 98 + 0 + 0 +SPLINE + 5 +49 +330 +3C +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 11 + 71 + 3 + 72 + 23 + 73 + 19 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 10 +128.4517632057343 + 20 +164.5479234072137 + 30 +0.0 + 10 +128.4517632057343 + 20 +164.5479234072137 + 30 +0.0 + 10 +128.4517632057343 + 20 +185.9629814530752 + 30 +0.0 + 10 +128.4517632057343 + 20 +185.9629814530752 + 30 +0.0 + 10 +128.4517632057343 + 20 +185.9629814530752 + 30 +0.0 + 10 +123.0570881853816 + 20 +185.9629814530752 + 30 +0.0 + 10 +123.0570881853816 + 20 +185.9629814530752 + 30 +0.0 + 10 +123.0570881853816 + 20 +185.9629814530752 + 30 +0.0 + 10 +123.0570881853816 + 20 +164.5479234072137 + 30 +0.0 + 10 +123.0570881853816 + 20 +164.5479234072137 + 30 +0.0 + 10 +123.0570881853816 + 20 +158.8287203921505 + 30 +0.0 + 10 +126.3020236229384 + 20 +155.1786417255283 + 30 +0.0 + 10 +132.426369867067 + 20 +155.8276977149493 + 30 +0.0 + 10 +132.426369867067 + 20 +155.8276977149493 + 30 +0.0 + 10 +132.426369867067 + 20 +160.6945841069618 + 30 +0.0 + 10 +132.426369867067 + 20 +160.6945841069618 + 30 +0.0 + 10 +129.7898382922053 + 20 +160.5323201096065 + 30 +0.0 + 10 +128.4517632057343 + 20 +161.5868638376415 + 30 +0.0 + 10 +128.4517632057343 + 20 +164.5479234072137 + 30 +0.0 + 0 +HATCH + 5 +4A +330 +3C +100 +AcDbEntity + 8 +LAYER_1 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 4 + 94 + 3 + 73 + 0 + 74 + 1 + 95 + 23 + 96 + 19 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 10 +128.4517632057343 + 20 +164.5479234072137 + 10 +128.4517632057343 + 20 +164.5479234072137 + 10 +128.4517632057343 + 20 +185.9629814530752 + 10 +128.4517632057343 + 20 +185.9629814530752 + 10 +128.4517632057343 + 20 +185.9629814530752 + 10 +123.0570881853816 + 20 +185.9629814530752 + 10 +123.0570881853816 + 20 +185.9629814530752 + 10 +123.0570881853816 + 20 +185.9629814530752 + 10 +123.0570881853816 + 20 +164.5479234072137 + 10 +123.0570881853816 + 20 +164.5479234072137 + 10 +123.0570881853816 + 20 +158.8287203921505 + 10 +126.3020236229384 + 20 +155.1786417255283 + 10 +132.426369867067 + 20 +155.8276977149493 + 10 +132.426369867067 + 20 +155.8276977149493 + 10 +132.426369867067 + 20 +160.6945841069618 + 10 +132.426369867067 + 20 +160.6945841069618 + 10 +129.7898382922053 + 20 +160.5323201096065 + 10 +128.4517632057343 + 20 +161.5868638376415 + 10 +128.4517632057343 + 20 +164.5479234072137 + 97 + 0 + 75 + 2 + 76 + 1 + 98 + 0 + 0 +SPLINE + 5 +4B +330 +3C +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 11 + 71 + 3 + 72 + 59 + 73 + 55 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 40 +7.0 + 40 +7.0 + 40 +7.0 + 40 +8.0 + 40 +8.0 + 40 +8.0 + 40 +9.0 + 40 +9.0 + 40 +9.0 + 40 +10.0 + 40 +10.0 + 40 +10.0 + 40 +11.0 + 40 +11.0 + 40 +11.0 + 40 +12.0 + 40 +12.0 + 40 +12.0 + 40 +13.0 + 40 +13.0 + 40 +13.0 + 40 +14.0 + 40 +14.0 + 40 +14.0 + 40 +15.0 + 40 +15.0 + 40 +15.0 + 40 +16.0 + 40 +16.0 + 40 +16.0 + 40 +17.0 + 40 +17.0 + 40 +17.0 + 40 +18.0 + 40 +18.0 + 40 +18.0 + 40 +18.0 + 10 +65.89795869663315 + 20 +184.6245618570557 + 30 +0.0 + 10 +62.81545951120586 + 20 +184.6245618570557 + 30 +0.0 + 10 +60.09796819244079 + 20 +183.2051825171327 + 30 +0.0 + 10 +58.39436847498474 + 20 +180.9741386808849 + 30 +0.0 + 10 +56.65046114035128 + 20 +183.2051825171327 + 30 +0.0 + 10 +54.01410182026384 + 20 +184.6245618570557 + 30 +0.0 + 10 +50.89112276288486 + 20 +184.6245618570557 + 30 +0.0 + 10 +44.88821613461128 + 20 +184.6245618570557 + 30 +0.0 + 10 +40.71069334919733 + 20 +180.1225110769312 + 30 +0.0 + 10 +40.71069334919733 + 20 +174.4847845700941 + 30 +0.0 + 10 +40.71069334919733 + 20 +168.5700723862429 + 30 +0.0 + 10 +40.71069334919733 + 20 +162.655532457166 + 30 +0.0 + 10 +40.71069334919733 + 20 +156.7409925280891 + 30 +0.0 + 10 +40.71069334919733 + 20 +156.2331854535632 + 30 +0.0 + 10 +41.09861110083646 + 20 +155.7870455882234 + 30 +0.0 + 10 +41.70391437759486 + 20 +155.7870455882234 + 30 +0.0 + 10 +41.70391437759486 + 20 +155.7870455882234 + 30 +0.0 + 10 +46.02389186132389 + 20 +155.7870455882234 + 30 +0.0 + 10 +46.02389186132389 + 20 +155.7870455882234 + 30 +0.0 + 10 +46.02389186132389 + 20 +155.7870455882234 + 30 +0.0 + 10 +46.02389186132389 + 20 +174.5659165687717 + 30 +0.0 + 10 +46.02389186132389 + 20 +174.5659165687717 + 30 +0.0 + 10 +46.02389186132389 + 20 +177.2427557608108 + 30 +0.0 + 10 +47.93006319331263 + 20 +179.3924953436068 + 30 +0.0 + 10 +50.89112276288486 + 20 +179.3924953436068 + 30 +0.0 + 10 +53.81118569618262 + 20 +179.3924953436068 + 30 +0.0 + 10 +55.71752928294562 + 20 +177.2427557608108 + 30 +0.0 + 10 +55.71752928294562 + 20 +174.5659165687717 + 30 +0.0 + 10 +55.71752928294562 + 20 +174.5659165687717 + 30 +0.0 + 10 +55.71752928294562 + 20 +155.7870455882234 + 30 +0.0 + 10 +55.71752928294562 + 20 +155.7870455882234 + 30 +0.0 + 10 +55.71752928294562 + 20 +155.7870455882234 + 30 +0.0 + 10 +61.11203204852408 + 20 +155.7870455882234 + 30 +0.0 + 10 +61.11203204852408 + 20 +155.7870455882234 + 30 +0.0 + 10 +61.11203204852408 + 20 +155.7870455882234 + 30 +0.0 + 10 +61.11203204852408 + 20 +174.5659165687717 + 30 +0.0 + 10 +61.11203204852408 + 20 +174.5659165687717 + 30 +0.0 + 10 +61.11203204852408 + 20 +177.2427557608108 + 30 +0.0 + 10 +62.93707138183518 + 20 +179.3924953436068 + 30 +0.0 + 10 +65.89795869663315 + 20 +179.3924953436068 + 30 +0.0 + 10 +68.81819388470518 + 20 +179.3924953436068 + 30 +0.0 + 10 +70.76501734341986 + 20 +177.2427557608108 + 30 +0.0 + 10 +70.76501734341986 + 20 +174.5659165687717 + 30 +0.0 + 10 +70.76501734341986 + 20 +174.5659165687717 + 30 +0.0 + 10 +70.76501734341986 + 20 +155.7870455882234 + 30 +0.0 + 10 +70.76501734341986 + 20 +155.7870455882234 + 30 +0.0 + 10 +70.76501734341986 + 20 +155.7870455882234 + 30 +0.0 + 10 +76.11886798227236 + 20 +155.7870455882234 + 30 +0.0 + 10 +76.11886798227236 + 20 +155.7870455882234 + 30 +0.0 + 10 +76.11886798227236 + 20 +155.7870455882234 + 30 +0.0 + 10 +76.11886798227236 + 20 +174.4847845700941 + 30 +0.0 + 10 +76.11886798227236 + 20 +174.4847845700941 + 30 +0.0 + 10 +76.11886798227236 + 20 +180.1225110769312 + 30 +0.0 + 10 +71.94117294208415 + 20 +184.6245618570557 + 30 +0.0 + 10 +65.89795869663315 + 20 +184.6245618570557 + 30 +0.0 + 0 +HATCH + 5 +4C +330 +3C +100 +AcDbEntity + 8 +LAYER_1 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 4 + 94 + 3 + 73 + 0 + 74 + 1 + 95 + 59 + 96 + 55 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 40 +7.0 + 40 +7.0 + 40 +7.0 + 40 +8.0 + 40 +8.0 + 40 +8.0 + 40 +9.0 + 40 +9.0 + 40 +9.0 + 40 +10.0 + 40 +10.0 + 40 +10.0 + 40 +11.0 + 40 +11.0 + 40 +11.0 + 40 +12.0 + 40 +12.0 + 40 +12.0 + 40 +13.0 + 40 +13.0 + 40 +13.0 + 40 +14.0 + 40 +14.0 + 40 +14.0 + 40 +15.0 + 40 +15.0 + 40 +15.0 + 40 +16.0 + 40 +16.0 + 40 +16.0 + 40 +17.0 + 40 +17.0 + 40 +17.0 + 40 +18.0 + 40 +18.0 + 40 +18.0 + 40 +18.0 + 10 +65.89795869663315 + 20 +184.6245618570557 + 10 +62.81545951120586 + 20 +184.6245618570557 + 10 +60.09796819244079 + 20 +183.2051825171327 + 10 +58.39436847498474 + 20 +180.9741386808849 + 10 +56.65046114035128 + 20 +183.2051825171327 + 10 +54.01410182026384 + 20 +184.6245618570557 + 10 +50.89112276288486 + 20 +184.6245618570557 + 10 +44.88821613461128 + 20 +184.6245618570557 + 10 +40.71069334919733 + 20 +180.1225110769312 + 10 +40.71069334919733 + 20 +174.4847845700941 + 10 +40.71069334919733 + 20 +168.5700723862429 + 10 +40.71069334919733 + 20 +162.655532457166 + 10 +40.71069334919733 + 20 +156.7409925280891 + 10 +40.71069334919733 + 20 +156.2331854535632 + 10 +41.09861110083646 + 20 +155.7870455882234 + 10 +41.70391437759486 + 20 +155.7870455882234 + 10 +41.70391437759486 + 20 +155.7870455882234 + 10 +46.02389186132389 + 20 +155.7870455882234 + 10 +46.02389186132389 + 20 +155.7870455882234 + 10 +46.02389186132389 + 20 +155.7870455882234 + 10 +46.02389186132389 + 20 +174.5659165687717 + 10 +46.02389186132389 + 20 +174.5659165687717 + 10 +46.02389186132389 + 20 +177.2427557608108 + 10 +47.93006319331263 + 20 +179.3924953436068 + 10 +50.89112276288486 + 20 +179.3924953436068 + 10 +53.81118569618262 + 20 +179.3924953436068 + 10 +55.71752928294562 + 20 +177.2427557608108 + 10 +55.71752928294562 + 20 +174.5659165687717 + 10 +55.71752928294562 + 20 +174.5659165687717 + 10 +55.71752928294562 + 20 +155.7870455882234 + 10 +55.71752928294562 + 20 +155.7870455882234 + 10 +55.71752928294562 + 20 +155.7870455882234 + 10 +61.11203204852408 + 20 +155.7870455882234 + 10 +61.11203204852408 + 20 +155.7870455882234 + 10 +61.11203204852408 + 20 +155.7870455882234 + 10 +61.11203204852408 + 20 +174.5659165687717 + 10 +61.11203204852408 + 20 +174.5659165687717 + 10 +61.11203204852408 + 20 +177.2427557608108 + 10 +62.93707138183518 + 20 +179.3924953436068 + 10 +65.89795869663315 + 20 +179.3924953436068 + 10 +68.81819388470518 + 20 +179.3924953436068 + 10 +70.76501734341986 + 20 +177.2427557608108 + 10 +70.76501734341986 + 20 +174.5659165687717 + 10 +70.76501734341986 + 20 +174.5659165687717 + 10 +70.76501734341986 + 20 +155.7870455882234 + 10 +70.76501734341986 + 20 +155.7870455882234 + 10 +70.76501734341986 + 20 +155.7870455882234 + 10 +76.11886798227236 + 20 +155.7870455882234 + 10 +76.11886798227236 + 20 +155.7870455882234 + 10 +76.11886798227236 + 20 +155.7870455882234 + 10 +76.11886798227236 + 20 +174.4847845700941 + 10 +76.11886798227236 + 20 +174.4847845700941 + 10 +76.11886798227236 + 20 +180.1225110769312 + 10 +71.94117294208415 + 20 +184.6245618570557 + 10 +65.89795869663315 + 20 +184.6245618570557 + 97 + 0 + 75 + 2 + 76 + 1 + 98 + 0 + 0 +SPLINE + 5 +4D +330 +3C +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 11 + 71 + 3 + 72 + 83 + 73 + 79 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 40 +7.0 + 40 +7.0 + 40 +7.0 + 40 +8.0 + 40 +8.0 + 40 +8.0 + 40 +9.0 + 40 +9.0 + 40 +9.0 + 40 +10.0 + 40 +10.0 + 40 +10.0 + 40 +11.0 + 40 +11.0 + 40 +11.0 + 40 +12.0 + 40 +12.0 + 40 +12.0 + 40 +13.0 + 40 +13.0 + 40 +13.0 + 40 +14.0 + 40 +14.0 + 40 +14.0 + 40 +15.0 + 40 +15.0 + 40 +15.0 + 40 +16.0 + 40 +16.0 + 40 +16.0 + 40 +17.0 + 40 +17.0 + 40 +17.0 + 40 +18.0 + 40 +18.0 + 40 +18.0 + 40 +19.0 + 40 +19.0 + 40 +19.0 + 40 +20.0 + 40 +20.0 + 40 +20.0 + 40 +21.0 + 40 +21.0 + 40 +21.0 + 40 +22.0 + 40 +22.0 + 40 +22.0 + 40 +23.0 + 40 +23.0 + 40 +23.0 + 40 +24.0 + 40 +24.0 + 40 +24.0 + 40 +25.0 + 40 +25.0 + 40 +25.0 + 40 +26.0 + 40 +26.0 + 40 +26.0 + 40 +26.0 + 10 +112.5243977583272 + 20 +177.2022758888592 + 30 +0.0 + 10 +106.8461913795385 + 20 +177.2022758888592 + 30 +0.0 + 10 +103.1144639499158 + 20 +173.1868448460262 + 30 +0.0 + 10 +103.1144639499158 + 20 +167.8738185886739 + 30 +0.0 + 10 +103.1144639499158 + 20 +167.8738185886739 + 30 +0.0 + 10 +103.1144639499158 + 20 +160.9784599749464 + 30 +0.0 + 10 +103.1144639499158 + 20 +160.9784599749464 + 30 +0.0 + 10 +103.1144639499158 + 20 +160.9784599749464 + 30 +0.0 + 10 +98.7746771671466 + 20 +160.9784599749464 + 30 +0.0 + 10 +98.7746771671466 + 20 +160.9784599749464 + 30 +0.0 + 10 +98.7746771671466 + 20 +160.9784599749464 + 30 +0.0 + 10 +98.7746771671466 + 20 +166.1702188712179 + 30 +0.0 + 10 +98.7746771671466 + 20 +166.1702188712179 + 30 +0.0 + 10 +98.7746771671466 + 20 +172.2540852433948 + 30 +0.0 + 10 +94.35375838569976 + 20 +177.2022758888592 + 30 +0.0 + 10 +88.0669758894416 + 20 +177.2022758888592 + 30 +0.0 + 10 +81.73971352123174 + 20 +177.2022758888592 + 30 +0.0 + 10 +77.31879473978489 + 20 +172.2540852433948 + 30 +0.0 + 10 +77.31879473978489 + 20 +166.3324828685731 + 30 +0.0 + 10 +77.31879473978489 + 20 +160.4920124924291 + 30 +0.0 + 10 +81.69923364928006 + 20 +155.7870455882234 + 30 +0.0 + 10 +87.5397040254241 + 20 +155.7870455882234 + 30 +0.0 + 10 +87.5397040254241 + 20 +155.7870455882234 + 30 +0.0 + 10 +91.27125920027247 + 20 +155.7870455882234 + 30 +0.0 + 10 +91.27125920027247 + 20 +155.7870455882234 + 30 +0.0 + 10 +91.27125920027247 + 20 +155.7870455882234 + 30 +0.0 + 10 +91.27125920027247 + 20 +160.9784599749464 + 30 +0.0 + 10 +91.27125920027247 + 20 +160.9784599749464 + 30 +0.0 + 10 +91.27125920027247 + 20 +160.9784599749464 + 30 +0.0 + 10 +88.18876001484517 + 20 +160.9784599749464 + 30 +0.0 + 10 +88.18876001484517 + 20 +160.9784599749464 + 30 +0.0 + 10 +85.10626082941788 + 20 +160.9784599749464 + 30 +0.0 + 10 +82.71329750536334 + 20 +163.2498114283716 + 30 +0.0 + 10 +82.71329750536334 + 20 +166.3324828685731 + 30 +0.0 + 10 +82.71329750536334 + 20 +169.4554619259521 + 30 +0.0 + 10 +85.10626082941788 + 20 +172.0106892473619 + 30 +0.0 + 10 +88.0669758894416 + 20 +172.0106892473619 + 30 +0.0 + 10 +91.02786320423957 + 20 +172.0106892473619 + 30 +0.0 + 10 +93.4208265282941 + 20 +169.3745021820487 + 30 +0.0 + 10 +93.4208265282941 + 20 +166.1702188712179 + 30 +0.0 + 10 +93.4208265282941 + 20 +166.1702188712179 + 30 +0.0 + 10 +93.4208265282941 + 20 +160.9784599749464 + 30 +0.0 + 10 +93.4208265282941 + 20 +160.9784599749464 + 30 +0.0 + 10 +93.4208265282941 + 20 +160.9784599749464 + 30 +0.0 + 10 +93.4208265282941 + 20 +155.7870455882234 + 30 +0.0 + 10 +93.4208265282941 + 20 +155.7870455882234 + 30 +0.0 + 10 +93.4208265282941 + 20 +155.7870455882234 + 30 +0.0 + 10 +98.7746771671466 + 20 +155.7870455882234 + 30 +0.0 + 10 +98.7746771671466 + 20 +155.7870455882234 + 30 +0.0 + 10 +98.7746771671466 + 20 +155.7870455882234 + 30 +0.0 + 10 +103.1144639499158 + 20 +155.7870455882234 + 30 +0.0 + 10 +103.1144639499158 + 20 +155.7870455882234 + 30 +0.0 + 10 +103.1144639499158 + 20 +155.7870455882234 + 30 +0.0 + 10 +108.4681423339941 + 20 +155.7870455882234 + 30 +0.0 + 10 +108.4681423339941 + 20 +155.7870455882234 + 30 +0.0 + 10 +108.4681423339941 + 20 +155.7870455882234 + 30 +0.0 + 10 +108.4681423339941 + 20 +160.9784599749464 + 30 +0.0 + 10 +108.4681423339941 + 20 +160.9784599749464 + 30 +0.0 + 10 +108.4681423339941 + 20 +160.9784599749464 + 30 +0.0 + 10 +108.4681423339941 + 20 +167.9950859497547 + 30 +0.0 + 10 +108.4681423339941 + 20 +167.9950859497547 + 30 +0.0 + 10 +108.4681423339941 + 20 +170.3477416566318 + 30 +0.0 + 10 +110.1720865609987 + 20 +171.970037120636 + 30 +0.0 + 10 +112.5243977583272 + 20 +171.970037120636 + 30 +0.0 + 10 +116.0528645543201 + 20 +171.970037120636 + 30 +0.0 + 10 +116.4586968024825 + 20 +169.1715860579675 + 30 +0.0 + 10 +116.4586968024825 + 20 +167.9950859497547 + 30 +0.0 + 10 +116.4586968024825 + 20 +167.9950859497547 + 30 +0.0 + 10 +116.4586968024825 + 20 +166.9408867312683 + 30 +0.0 + 10 +116.4586968024825 + 20 +166.9408867312683 + 30 +0.0 + 10 +116.4586968024825 + 20 +166.9408867312683 + 30 +0.0 + 10 +121.8123751865608 + 20 +166.9408867312683 + 30 +0.0 + 10 +121.8123751865608 + 20 +166.9408867312683 + 30 +0.0 + 10 +121.8123751865608 + 20 +166.9408867312683 + 30 +0.0 + 10 +121.8123751865608 + 20 +167.8738185886739 + 30 +0.0 + 10 +121.8123751865608 + 20 +167.8738185886739 + 30 +0.0 + 10 +121.8123751865608 + 20 +173.3491088433815 + 30 +0.0 + 10 +118.3648681344713 + 20 +177.2022758888592 + 30 +0.0 + 10 +112.5243977583272 + 20 +177.2022758888592 + 30 +0.0 + 0 +HATCH + 5 +4E +330 +3C +100 +AcDbEntity + 8 +LAYER_1 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 4 + 94 + 3 + 73 + 0 + 74 + 1 + 95 + 83 + 96 + 79 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 40 +7.0 + 40 +7.0 + 40 +7.0 + 40 +8.0 + 40 +8.0 + 40 +8.0 + 40 +9.0 + 40 +9.0 + 40 +9.0 + 40 +10.0 + 40 +10.0 + 40 +10.0 + 40 +11.0 + 40 +11.0 + 40 +11.0 + 40 +12.0 + 40 +12.0 + 40 +12.0 + 40 +13.0 + 40 +13.0 + 40 +13.0 + 40 +14.0 + 40 +14.0 + 40 +14.0 + 40 +15.0 + 40 +15.0 + 40 +15.0 + 40 +16.0 + 40 +16.0 + 40 +16.0 + 40 +17.0 + 40 +17.0 + 40 +17.0 + 40 +18.0 + 40 +18.0 + 40 +18.0 + 40 +19.0 + 40 +19.0 + 40 +19.0 + 40 +20.0 + 40 +20.0 + 40 +20.0 + 40 +21.0 + 40 +21.0 + 40 +21.0 + 40 +22.0 + 40 +22.0 + 40 +22.0 + 40 +23.0 + 40 +23.0 + 40 +23.0 + 40 +24.0 + 40 +24.0 + 40 +24.0 + 40 +25.0 + 40 +25.0 + 40 +25.0 + 40 +26.0 + 40 +26.0 + 40 +26.0 + 40 +26.0 + 10 +112.5243977583272 + 20 +177.2022758888592 + 10 +106.8461913795385 + 20 +177.2022758888592 + 10 +103.1144639499158 + 20 +173.1868448460262 + 10 +103.1144639499158 + 20 +167.8738185886739 + 10 +103.1144639499158 + 20 +167.8738185886739 + 10 +103.1144639499158 + 20 +160.9784599749464 + 10 +103.1144639499158 + 20 +160.9784599749464 + 10 +103.1144639499158 + 20 +160.9784599749464 + 10 +98.7746771671466 + 20 +160.9784599749464 + 10 +98.7746771671466 + 20 +160.9784599749464 + 10 +98.7746771671466 + 20 +160.9784599749464 + 10 +98.7746771671466 + 20 +166.1702188712179 + 10 +98.7746771671466 + 20 +166.1702188712179 + 10 +98.7746771671466 + 20 +172.2540852433948 + 10 +94.35375838569976 + 20 +177.2022758888592 + 10 +88.0669758894416 + 20 +177.2022758888592 + 10 +81.73971352123174 + 20 +177.2022758888592 + 10 +77.31879473978489 + 20 +172.2540852433948 + 10 +77.31879473978489 + 20 +166.3324828685731 + 10 +77.31879473978489 + 20 +160.4920124924291 + 10 +81.69923364928006 + 20 +155.7870455882234 + 10 +87.5397040254241 + 20 +155.7870455882234 + 10 +87.5397040254241 + 20 +155.7870455882234 + 10 +91.27125920027247 + 20 +155.7870455882234 + 10 +91.27125920027247 + 20 +155.7870455882234 + 10 +91.27125920027247 + 20 +155.7870455882234 + 10 +91.27125920027247 + 20 +160.9784599749464 + 10 +91.27125920027247 + 20 +160.9784599749464 + 10 +91.27125920027247 + 20 +160.9784599749464 + 10 +88.18876001484517 + 20 +160.9784599749464 + 10 +88.18876001484517 + 20 +160.9784599749464 + 10 +85.10626082941788 + 20 +160.9784599749464 + 10 +82.71329750536334 + 20 +163.2498114283716 + 10 +82.71329750536334 + 20 +166.3324828685731 + 10 +82.71329750536334 + 20 +169.4554619259521 + 10 +85.10626082941788 + 20 +172.0106892473619 + 10 +88.0669758894416 + 20 +172.0106892473619 + 10 +91.02786320423957 + 20 +172.0106892473619 + 10 +93.4208265282941 + 20 +169.3745021820487 + 10 +93.4208265282941 + 20 +166.1702188712179 + 10 +93.4208265282941 + 20 +166.1702188712179 + 10 +93.4208265282941 + 20 +160.9784599749464 + 10 +93.4208265282941 + 20 +160.9784599749464 + 10 +93.4208265282941 + 20 +160.9784599749464 + 10 +93.4208265282941 + 20 +155.7870455882234 + 10 +93.4208265282941 + 20 +155.7870455882234 + 10 +93.4208265282941 + 20 +155.7870455882234 + 10 +98.7746771671466 + 20 +155.7870455882234 + 10 +98.7746771671466 + 20 +155.7870455882234 + 10 +98.7746771671466 + 20 +155.7870455882234 + 10 +103.1144639499158 + 20 +155.7870455882234 + 10 +103.1144639499158 + 20 +155.7870455882234 + 10 +103.1144639499158 + 20 +155.7870455882234 + 10 +108.4681423339941 + 20 +155.7870455882234 + 10 +108.4681423339941 + 20 +155.7870455882234 + 10 +108.4681423339941 + 20 +155.7870455882234 + 10 +108.4681423339941 + 20 +160.9784599749464 + 10 +108.4681423339941 + 20 +160.9784599749464 + 10 +108.4681423339941 + 20 +160.9784599749464 + 10 +108.4681423339941 + 20 +167.9950859497547 + 10 +108.4681423339941 + 20 +167.9950859497547 + 10 +108.4681423339941 + 20 +170.3477416566318 + 10 +110.1720865609987 + 20 +171.970037120636 + 10 +112.5243977583272 + 20 +171.970037120636 + 10 +116.0528645543201 + 20 +171.970037120636 + 10 +116.4586968024825 + 20 +169.1715860579675 + 10 +116.4586968024825 + 20 +167.9950859497547 + 10 +116.4586968024825 + 20 +167.9950859497547 + 10 +116.4586968024825 + 20 +166.9408867312683 + 10 +116.4586968024825 + 20 +166.9408867312683 + 10 +116.4586968024825 + 20 +166.9408867312683 + 10 +121.8123751865608 + 20 +166.9408867312683 + 10 +121.8123751865608 + 20 +166.9408867312683 + 10 +121.8123751865608 + 20 +166.9408867312683 + 10 +121.8123751865608 + 20 +167.8738185886739 + 10 +121.8123751865608 + 20 +167.8738185886739 + 10 +121.8123751865608 + 20 +173.3491088433815 + 10 +118.3648681344713 + 20 +177.2022758888592 + 10 +112.5243977583272 + 20 +177.2022758888592 + 97 + 0 + 75 + 2 + 76 + 1 + 98 + 0 + 0 +SPLINE + 5 +4F +330 +3C +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbSpline +210 +0.0 +220 +0.0 +230 +1.0 + 70 + 11 + 71 + 3 + 72 + 62 + 73 + 58 + 74 + 0 + 42 +0.0000000001 + 43 +0.0000000001 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 40 +7.0 + 40 +7.0 + 40 +7.0 + 40 +8.0 + 40 +8.0 + 40 +8.0 + 40 +9.0 + 40 +9.0 + 40 +9.0 + 40 +10.0 + 40 +10.0 + 40 +10.0 + 40 +11.0 + 40 +11.0 + 40 +11.0 + 40 +12.0 + 40 +12.0 + 40 +12.0 + 40 +13.0 + 40 +13.0 + 40 +13.0 + 40 +14.0 + 40 +14.0 + 40 +14.0 + 40 +15.0 + 40 +15.0 + 40 +15.0 + 40 +16.0 + 40 +16.0 + 40 +16.0 + 40 +17.0 + 40 +17.0 + 40 +17.0 + 40 +18.0 + 40 +18.0 + 40 +18.0 + 40 +19.0 + 40 +19.0 + 40 +19.0 + 40 +19.0 + 10 +153.4176811682428 + 20 +177.2022758888592 + 30 +0.0 + 10 +147.739474789454 + 20 +177.2022758888592 + 30 +0.0 + 10 +144.0080918693799 + 20 +173.1868448460262 + 30 +0.0 + 10 +144.0080918693799 + 20 +167.8738185886739 + 30 +0.0 + 10 +144.0080918693799 + 20 +167.8738185886739 + 30 +0.0 + 10 +144.0080918693799 + 20 +160.6945841069618 + 30 +0.0 + 10 +144.0080918693799 + 20 +160.6945841069618 + 30 +0.0 + 10 +144.0080918693799 + 20 +160.6945841069618 + 30 +0.0 + 10 +139.1815130945449 + 20 +160.6945841069618 + 30 +0.0 + 10 +139.1815130945449 + 20 +160.6945841069618 + 30 +0.0 + 10 +139.1815130945449 + 20 +160.6945841069618 + 30 +0.0 + 10 +139.1815130945449 + 20 +176.6750040248417 + 30 +0.0 + 10 +139.1815130945449 + 20 +176.6750040248417 + 30 +0.0 + 10 +139.1815130945449 + 20 +176.6750040248417 + 30 +0.0 + 10 +133.8274902009181 + 20 +176.6750040248417 + 30 +0.0 + 10 +133.8274902009181 + 20 +176.6750040248417 + 30 +0.0 + 10 +133.8274902009181 + 20 +176.6750040248417 + 30 +0.0 + 10 +133.8274902009181 + 20 +160.6945841069618 + 30 +0.0 + 10 +133.8274902009181 + 20 +160.6945841069618 + 30 +0.0 + 10 +133.8274902009181 + 20 +160.6945841069618 + 30 +0.0 + 10 +133.8274902009181 + 20 +155.7870455882234 + 30 +0.0 + 10 +133.8274902009181 + 20 +155.7870455882234 + 30 +0.0 + 10 +133.8274902009181 + 20 +155.7870455882234 + 30 +0.0 + 10 +139.1815130945449 + 20 +155.7870455882234 + 30 +0.0 + 10 +139.1815130945449 + 20 +155.7870455882234 + 30 +0.0 + 10 +139.1815130945449 + 20 +155.7870455882234 + 30 +0.0 + 10 +144.0080918693799 + 20 +155.7870455882234 + 30 +0.0 + 10 +144.0080918693799 + 20 +155.7870455882234 + 30 +0.0 + 10 +144.0080918693799 + 20 +155.7870455882234 + 30 +0.0 + 10 +149.3617702534582 + 20 +155.7870455882234 + 30 +0.0 + 10 +149.3617702534582 + 20 +155.7870455882234 + 30 +0.0 + 10 +149.3617702534582 + 20 +155.7870455882234 + 30 +0.0 + 10 +149.3617702534582 + 20 +160.6945841069618 + 30 +0.0 + 10 +149.3617702534582 + 20 +160.6945841069618 + 30 +0.0 + 10 +149.3617702534582 + 20 +160.6945841069618 + 30 +0.0 + 10 +149.3617702534582 + 20 +167.9950859497547 + 30 +0.0 + 10 +149.3617702534582 + 20 +167.9950859497547 + 30 +0.0 + 10 +149.3617702534582 + 20 +170.3477416566318 + 30 +0.0 + 10 +151.0653699709142 + 20 +171.970037120636 + 30 +0.0 + 10 +153.4176811682428 + 20 +171.970037120636 + 30 +0.0 + 10 +156.9464924737842 + 20 +171.970037120636 + 30 +0.0 + 10 +157.3519802123981 + 20 +169.1715860579675 + 30 +0.0 + 10 +157.3519802123981 + 20 +167.9950859497547 + 30 +0.0 + 10 +157.3519802123981 + 20 +167.9950859497547 + 30 +0.0 + 10 +157.3519802123981 + 20 +155.7870455882234 + 30 +0.0 + 10 +157.3519802123981 + 20 +155.7870455882234 + 30 +0.0 + 10 +158.7727375905152 + 20 +155.7870455882234 + 30 +0.0 + 10 +160.1938394781807 + 20 +155.7870455882234 + 30 +0.0 + 10 +161.6145968562977 + 20 +155.7870455882234 + 30 +0.0 + 10 +162.1520317519967 + 20 +155.774987754025 + 30 +0.0 + 10 +162.7060031060249 + 20 +156.0884914431827 + 30 +0.0 + 10 +162.7060031060249 + 20 +157.2305405965431 + 30 +0.0 + 10 +162.7060031060249 + 20 +157.2305405965431 + 30 +0.0 + 10 +162.7060031060249 + 20 +167.8738185886739 + 30 +0.0 + 10 +162.7060031060249 + 20 +167.8738185886739 + 30 +0.0 + 10 +162.7060031060249 + 20 +173.3491088433815 + 30 +0.0 + 10 +159.2581515443869 + 20 +177.2022758888592 + 30 +0.0 + 10 +153.4176811682428 + 20 +177.2022758888592 + 30 +0.0 + 0 +HATCH + 5 +50 +330 +3C +100 +AcDbEntity + 8 +LAYER_1 + 62 + 7 +100 +AcDbHatch + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +SOLID + 70 + 1 + 71 + 0 + 91 + 1 + 92 + 1 + 93 + 1 + 72 + 4 + 94 + 3 + 73 + 0 + 74 + 1 + 95 + 62 + 96 + 58 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +0.0 + 40 +1.0 + 40 +1.0 + 40 +1.0 + 40 +2.0 + 40 +2.0 + 40 +2.0 + 40 +3.0 + 40 +3.0 + 40 +3.0 + 40 +4.0 + 40 +4.0 + 40 +4.0 + 40 +5.0 + 40 +5.0 + 40 +5.0 + 40 +6.0 + 40 +6.0 + 40 +6.0 + 40 +7.0 + 40 +7.0 + 40 +7.0 + 40 +8.0 + 40 +8.0 + 40 +8.0 + 40 +9.0 + 40 +9.0 + 40 +9.0 + 40 +10.0 + 40 +10.0 + 40 +10.0 + 40 +11.0 + 40 +11.0 + 40 +11.0 + 40 +12.0 + 40 +12.0 + 40 +12.0 + 40 +13.0 + 40 +13.0 + 40 +13.0 + 40 +14.0 + 40 +14.0 + 40 +14.0 + 40 +15.0 + 40 +15.0 + 40 +15.0 + 40 +16.0 + 40 +16.0 + 40 +16.0 + 40 +17.0 + 40 +17.0 + 40 +17.0 + 40 +18.0 + 40 +18.0 + 40 +18.0 + 40 +19.0 + 40 +19.0 + 40 +19.0 + 40 +19.0 + 10 +153.4176811682428 + 20 +177.2022758888592 + 10 +147.739474789454 + 20 +177.2022758888592 + 10 +144.0080918693799 + 20 +173.1868448460262 + 10 +144.0080918693799 + 20 +167.8738185886739 + 10 +144.0080918693799 + 20 +167.8738185886739 + 10 +144.0080918693799 + 20 +160.6945841069618 + 10 +144.0080918693799 + 20 +160.6945841069618 + 10 +144.0080918693799 + 20 +160.6945841069618 + 10 +139.1815130945449 + 20 +160.6945841069618 + 10 +139.1815130945449 + 20 +160.6945841069618 + 10 +139.1815130945449 + 20 +160.6945841069618 + 10 +139.1815130945449 + 20 +176.6750040248417 + 10 +139.1815130945449 + 20 +176.6750040248417 + 10 +139.1815130945449 + 20 +176.6750040248417 + 10 +133.8274902009181 + 20 +176.6750040248417 + 10 +133.8274902009181 + 20 +176.6750040248417 + 10 +133.8274902009181 + 20 +176.6750040248417 + 10 +133.8274902009181 + 20 +160.6945841069618 + 10 +133.8274902009181 + 20 +160.6945841069618 + 10 +133.8274902009181 + 20 +160.6945841069618 + 10 +133.8274902009181 + 20 +155.7870455882234 + 10 +133.8274902009181 + 20 +155.7870455882234 + 10 +133.8274902009181 + 20 +155.7870455882234 + 10 +139.1815130945449 + 20 +155.7870455882234 + 10 +139.1815130945449 + 20 +155.7870455882234 + 10 +139.1815130945449 + 20 +155.7870455882234 + 10 +144.0080918693799 + 20 +155.7870455882234 + 10 +144.0080918693799 + 20 +155.7870455882234 + 10 +144.0080918693799 + 20 +155.7870455882234 + 10 +149.3617702534582 + 20 +155.7870455882234 + 10 +149.3617702534582 + 20 +155.7870455882234 + 10 +149.3617702534582 + 20 +155.7870455882234 + 10 +149.3617702534582 + 20 +160.6945841069618 + 10 +149.3617702534582 + 20 +160.6945841069618 + 10 +149.3617702534582 + 20 +160.6945841069618 + 10 +149.3617702534582 + 20 +167.9950859497547 + 10 +149.3617702534582 + 20 +167.9950859497547 + 10 +149.3617702534582 + 20 +170.3477416566318 + 10 +151.0653699709142 + 20 +171.970037120636 + 10 +153.4176811682428 + 20 +171.970037120636 + 10 +156.9464924737842 + 20 +171.970037120636 + 10 +157.3519802123981 + 20 +169.1715860579675 + 10 +157.3519802123981 + 20 +167.9950859497547 + 10 +157.3519802123981 + 20 +167.9950859497547 + 10 +157.3519802123981 + 20 +155.7870455882234 + 10 +157.3519802123981 + 20 +155.7870455882234 + 10 +158.7727375905152 + 20 +155.7870455882234 + 10 +160.1938394781807 + 20 +155.7870455882234 + 10 +161.6145968562977 + 20 +155.7870455882234 + 10 +162.1520317519967 + 20 +155.774987754025 + 10 +162.7060031060249 + 20 +156.0884914431827 + 10 +162.7060031060249 + 20 +157.2305405965431 + 10 +162.7060031060249 + 20 +157.2305405965431 + 10 +162.7060031060249 + 20 +167.8738185886739 + 10 +162.7060031060249 + 20 +167.8738185886739 + 10 +162.7060031060249 + 20 +173.3491088433815 + 10 +159.2581515443869 + 20 +177.2022758888592 + 10 +153.4176811682428 + 20 +177.2022758888592 + 97 + 0 + 75 + 2 + 76 + 1 + 98 + 0 + 0 +ENDBLK + 5 +3F +330 +3C +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +INSERT + 5 +3D +330 +1F +100 +AcDbEntity + 8 +LAYER_1 +100 +AcDbBlockReference + 2 +BLOCK_2 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_TABLESTYLE +350 +71 + 3 +ACAD_VISUALSTYLE +350 +2A + 3 +ACDBHEADERROUNDTRIPXREC +350 +51 + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary + 3 +STANDARD +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +71 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary + 0 +DICTIONARY + 5 +2A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary + 3 +2DWIREFRAME +350 +2F + 3 +3DWIREFRAME +350 +30 + 3 +3D_HIDDEN +350 +31 + 3 +BASIC +350 +32 + 3 +BRIGHTEN +350 +36 + 3 +COLORCHANGE +350 +3A + 3 +CONCEPTUAL +350 +34 + 3 +DIM +350 +35 + 3 +FACEPATTERN +350 +39 + 3 +FLAT +350 +2B + 3 +FLATWITHEDGES +350 +2C + 3 +GOURAUD +350 +2D + 3 +GOURAUDWITHEDGES +350 +2E + 3 +LINEPATTERN +350 +38 + 3 +REALISTIC +350 +33 + 3 +THICKEN +350 +37 + 0 +DICTIONARY + 5 +51 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary + 3 +CEPSNTYPE +350 +5A + 3 +DIMSTYLEDATA +350 +70 + 3 +FINGERPRINTGUID +350 +5B + 3 +HYPERLINKBASE +350 +54 + 3 +INSUNITS +350 +59 + 3 +LAYOUTDICT +350 +56 + 3 +LWETCUNION +350 +58 + 3 +PLOTSETDICT +350 +57 + 3 +PSVPSCALE +350 +5D + 3 +PUCSBASE +350 +60 + 3 +PUCSORGBACK +350 +66 + 3 +PUCSORGBOTTOM +350 +62 + 3 +PUCSORGFRONT +350 +65 + 3 +PUCSORGLEFT +350 +63 + 3 +PUCSORGRIGHT +350 +64 + 3 +PUCSORGTOP +350 +61 + 3 +PUCSORTHOREF +350 +5E + 3 +PUCSORTHOVIEW +350 +5F + 3 +STYLESHEET +350 +55 + 3 +TSTACKALIGN +350 +52 + 3 +TSTACKSIZE +350 +53 + 3 +UCSBASE +350 +69 + 3 +UCSORGBACK +350 +6F + 3 +UCSORGBOTTOM +350 +6B + 3 +UCSORGFRONT +350 +6E + 3 +UCSORGLEFT +350 +6C + 3 +UCSORGRIGHT +350 +6D + 3 +UCSORGTOP +350 +6A + 3 +UCSORTHOREF +350 +67 + 3 +UCSORTHOVIEW +350 +68 + 3 +VERSIONGUID +350 +5C + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +Standard + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 2 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 0 +VISUALSTYLE + 5 +2F +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +30 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +31 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +40.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +32 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +36 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +3A +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +34 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +40.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +35 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +39 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +2B +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +2C +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +2D +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +2E +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +38 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +33 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +37 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +XRECORD + 5 +5A +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 90 + 0 + 0 +XRECORD + 5 +70 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord +1000 +DSTYLE +1002 +{ +1070 + 340 +340 +11 +1002 +} + 0 +XRECORD + 5 +5B +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 1 +{C50F1A3D-B56C-0FA7-AEEF-1DD121F003CB} + 0 +XRECORD + 5 +54 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 1 + + 0 +XRECORD + 5 +59 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 90 + 1 + 0 +XRECORD + 5 +56 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord +340 +1A + 0 +XRECORD + 5 +58 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 90 + 10269 + 0 +XRECORD + 5 +57 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord +340 +19 + 0 +XRECORD + 5 +5D +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 40 +0.0 + 0 +XRECORD + 5 +60 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord +340 +0 + 0 +XRECORD + 5 +66 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +62 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +65 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +63 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +64 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +61 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +5E +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord +340 +0 + 0 +XRECORD + 5 +5F +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 70 + 0 + 0 +XRECORD + 5 +55 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 1 + + 0 +XRECORD + 5 +52 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 90 + 1 + 0 +XRECORD + 5 +53 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 90 + 70 + 0 +XRECORD + 5 +69 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord +340 +0 + 0 +XRECORD + 5 +6F +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +6B +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +6E +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +6C +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +6D +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +6A +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 0 +XRECORD + 5 +67 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord +340 +0 + 0 +XRECORD + 5 +68 +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 70 + 0 + 0 +XRECORD + 5 +5C +102 +{ACAD_REACTORS +330 +51 +102 +} +330 +51 +100 +AcDbXrecord + 1 +{FAEB1C32-E019-11D5-929B-00C0DF256EC4} + 0 +ENDSEC + 0 +EOF diff --git a/Documentation/Logo/Marlin Logo.pdf b/Documentation/Logo/Marlin Logo.pdf new file mode 100644 index 000000000..d10c6df81 Binary files /dev/null and b/Documentation/Logo/Marlin Logo.pdf differ diff --git a/Documentation/Logo/Marlin Logo.png b/Documentation/Logo/Marlin Logo.png new file mode 100644 index 000000000..96a337f8b Binary files /dev/null and b/Documentation/Logo/Marlin Logo.png differ diff --git a/Documentation/Logo/Marlin Logo.svg b/Documentation/Logo/Marlin Logo.svg new file mode 100644 index 000000000..1ff1d1b81 --- /dev/null +++ b/Documentation/Logo/Marlin Logo.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/Documentation/Menu Plans.xlsx b/Documentation/Menu Plans.xlsx new file mode 100644 index 000000000..8c7e2c17b Binary files /dev/null and b/Documentation/Menu Plans.xlsx differ diff --git a/Documentation/RampsServoPower.md b/Documentation/RampsServoPower.md new file mode 100644 index 000000000..2f715cfd7 --- /dev/null +++ b/Documentation/RampsServoPower.md @@ -0,0 +1,9 @@ + + +__Note for RAMPS users:__ +---------------------- + +-By default, RAMPS have no power on servo bus (if you happen to have a multimeter, check the voltage on servo power pins). +-In order to get the servo working, you need to supply 5V to 5V pin.. You can do it using your power supply (if it has a 5V output) or jumping the "Vcc" from Arduino to the 5V RAMPS rail. +-These 2 pins are located just between the Reset Button and the yellow fuses... There are marks in the board showing 5V and VCC.. just connect them.. +-If jumping the arduino Vcc do RAMPS 5V rail, take care to not use a power hungry servo, otherwise you will cause a blackout in the arduino board ;-) diff --git a/Marlin/BlinkM.cpp b/Marlin/BlinkM.cpp new file mode 100644 index 000000000..b340f968c --- /dev/null +++ b/Marlin/BlinkM.cpp @@ -0,0 +1,22 @@ +/* + BlinkM.cpp - Library for controlling a BlinkM over i2c + Created by Tim Koster, August 21 2013. +*/ +#include "Marlin.h" +#ifdef BLINKM + +#include "BlinkM.h" + +void SendColors(byte red, byte grn, byte blu) { + Wire.begin(); + Wire.beginTransmission(0x09); + Wire.write('o'); //to disable ongoing script, only needs to be used once + Wire.write('n'); + Wire.write(red); + Wire.write(grn); + Wire.write(blu); + Wire.endTransmission(); +} + +#endif //BLINKM + diff --git a/Marlin/BlinkM.h b/Marlin/BlinkM.h new file mode 100644 index 000000000..5b802b718 --- /dev/null +++ b/Marlin/BlinkM.h @@ -0,0 +1,13 @@ +/* + BlinkM.h + Library header file for BlinkM library + */ +#if ARDUINO >= 100 + #include "Arduino.h" +#else + #include "WProgram.h" +#endif + +#include "Wire.h" + +void SendColors(byte red, byte grn, byte blu); diff --git a/Marlin/COPYING b/Marlin/COPYING deleted file mode 100644 index 2b194fadc..000000000 --- a/Marlin/COPYING +++ /dev/null @@ -1,188 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright © 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. -Preamble - -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. -TERMS AND CONDITIONS -0. Definitions. - -“This License” refers to version 3 of the GNU General Public License. - -“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - -“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. - -To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. - -A “covered work” means either the unmodified Program or a work based on the Program. - -To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. - -To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. -1. Source Code. - -The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. - -A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. - -The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. - -The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. -2. Basic Permissions. - -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. -3. Protecting Users' Legal Rights From Anti-Circumvention Law. - -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. -4. Conveying Verbatim Copies. - -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. -5. Conveying Modified Source Versions. - -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified it, and giving a relevant date. - b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. - c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. - d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. - -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. -6. Conveying Non-Source Forms. - -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - - a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. - b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. - c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. - d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. - e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. - -A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. - -“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. -7. Additional Terms. - -“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or - b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or - c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or - d) Limiting the use for publicity purposes of names of licensors or authors of the material; or - e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or - f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. - -All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. -8. Termination. - -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. -9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. -10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. - -An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. -11. Patents. - -A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. - -A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. - -In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. - -A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. -12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. -13. Use with the GNU Affero General Public License. - -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. -14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. - -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. -15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 39480939d..8c12b0f85 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1,133 +1,866 @@ #ifndef CONFIGURATION_H #define CONFIGURATION_H -// BASIC SETTINGS: select your board type, thermistor type, axis scaling, and endstop configuration +#include "boards.h" -//// The following define selects which electronics board you have. Please choose the one that matches your setup -// Gen6 = 5, -#define MOTHERBOARD 5 +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ -//// Thermistor settings: -// 1 is 100k thermistor -// 2 is 200k thermistor -// 3 is mendel-parts thermistor -#define THERMISTORHEATER 3 +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration +//=========================================================================== +//============================= DELTA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/delta directory. +// -//// Calibration variables -// X, Y, Z, E steps per unit - Metric Mendel / Orca with V9 extruder: -float axis_steps_per_unit[] = {40, 40, 3333.92, 67}; -// For E steps per unit = 67 for v9 with direct drive (needs finetuning) for other extruders this needs to be changed -// Metric Prusa Mendel with Makergear geared stepper extruder: -//float axis_steps_per_unit[] = {80,80,3200/1.25,1380}; +//=========================================================================== +//============================= SCARA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/SCARA directory. +// -//// Endstop Settings -#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors -// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. -const bool ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops. -// For optos H21LOB set to true, for Mendel-Parts newer optos TCST2103 set to false +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "1.0.2" +#define STRING_URL "reprap.org" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 // This determines the communication speed of the printer #define BAUDRATE 250000 -// Comment out (using // at the start of the line) to disable SD support: -//#define SDSUPPORT +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_ULTIMAKER +#endif + +// Define this to set a custom name for your generic Mendel, +// #define CUSTOM_MENDEL_NAME "This Mendel" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 1 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 + +#define TEMP_SENSOR_0 -1 +#define TEMP_SENSOR_1 -1 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 0 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 10 // (seconds) +#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should use MINTEMP for thermistor short/failure protection. +#define HEATER_0_MAXTEMP 275 +#define HEATER_1_MAXTEMP 275 +#define HEATER_2_MAXTEMP 275 +#define HEATER_3_MAXTEMP 275 +#define BED_MAXTEMP 150 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R +//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// Comment the following line to disable PID and enable bang-bang. +#define PIDTEMP +#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current +#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#ifdef PIDTEMP + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay + //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] + #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// Ultimaker + #define DEFAULT_Kp 22.2 + #define DEFAULT_Ki 1.08 + #define DEFAULT_Kd 114 + +// MakerGear +// #define DEFAULT_Kp 7.0 +// #define DEFAULT_Ki 0.1 +// #define DEFAULT_Kd 12 + +// Mendel Parts V9 on 12V +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki 2.25 +// #define DEFAULT_Kd 440 +#endif // PIDTEMP + +//=========================================================================== +//============================= PID > Bed Temperature Control =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +//#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + #define DEFAULT_bedKp 10.00 + #define DEFAULT_bedKi .023 + #define DEFAULT_bedKd 305.4 + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED -//// ADVANCED SETTINGS - to tweak parameters +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE -#include "thermistortables.h" +#define EXTRUDE_MINTEMP 170 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius + + +//=========================================================================== +//============================= Mechanical Settings ========================= +//=========================================================================== + +// Uncomment the following line to enable CoreXY kinematics +// #define COREXY + +// coarse Endstop Settings +#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + // #define ENDSTOPPULLUP_XMIN + // #define ENDSTOPPULLUP_YMIN + // #define ENDSTOPPULLUP_ZMIN +#endif + +#ifdef ENDSTOPPULLUPS + #define ENDSTOPPULLUP_XMAX + #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. +const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +//#define DISABLE_MAX_ENDSTOPS +//#define DISABLE_MIN_ENDSTOPS // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 #define Z_ENABLE_ON 0 -#define E_ENABLE_ON 0 +#define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. #define DISABLE_X false #define DISABLE_Y false -#define DISABLE_Z true -#define DISABLE_E false +#define DISABLE_Z false +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled -// Inverting axis direction -#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true -#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false -#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true -#define INVERT_E_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false -//// ENDSTOP SETTINGS: +// ENDSTOP SETTINGS: // Sets direction of endstops when homing; 1=MAX, -1=MIN #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 -#define min_software_endstops false //If true, axis won't move to coordinates less than zero. -#define max_software_endstops true //If true, axis won't move to coordinates greater than the defined lengths below. -#define X_MAX_LENGTH 200 -#define Y_MAX_LENGTH 200 -#define Z_MAX_LENGTH 100 +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units are in mm) +#define X_MAX_POS 205 +#define X_MIN_POS 0 +#define Y_MAX_POS 205 +#define Y_MIN_POS 0 +#define Z_MAX_POS 200 +#define Z_MIN_POS 0 + +#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) +#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) +#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) +#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled. + +#ifdef ENABLE_AUTO_BED_LEVELING + +// There are 2 different ways to pick the X and Y locations to probe: + +// - "grid" mode +// Probe every point in a rectangular grid +// You must specify the rectangle, and the density of sample points +// This mode is preferred because there are more measurements. +// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive + +// - "3-point" mode +// Probe 3 arbitrary points on the bed (that aren't colinear) +// You must specify the X & Y coordinates of all 3 points + + #define AUTO_BED_LEVELING_GRID + // with AUTO_BED_LEVELING_GRID, the bed is sampled in a + // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid + // and least squares solution is calculated + // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID + + // set the rectangle in which to probe + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define BACK_PROBE_BED_POSITION 180 + #define FRONT_PROBE_BED_POSITION 20 + + // set the number of grid points per dimension + // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + #define AUTO_BED_LEVELING_GRID_POINTS 2 + + + #else // not AUTO_BED_LEVELING_GRID + // with no grid, just probe 3 arbitrary points. A simple cross-product + // is used to esimate the plane of the print bed + + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + + #endif // AUTO_BED_LEVELING_GRID + + + // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + + #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + // Be sure you have this distance over your Z_MAX_POS in case + + #define XY_TRAVEL_SPEED 8000 // X and Y axis travel speed between probes, in mm/min + + #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. + #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + + //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell + //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. + + //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk + //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. + // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. + +// #define PROBE_SERVO_DEACTIVATION_DELAY 300 + + +//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, +//it is highly recommended you let this Z_SAFE_HOMING enabled!!! + + #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area. + // When defined, it will: + // - Allow Z homing only after X and Y homing AND stepper drivers still enabled + // - If stepper drivers timeout, it will need X and Y homing again before Z homing + // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) + // - Block Z homing only when the probe is outside bed area. + + #ifdef Z_SAFE_HOMING + + #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2) // X point for Z homing when homing all axis (G28) + #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2) // Y point for Z homing when homing all axis (G28) + + #endif + + #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range + #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #else + #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #endif + #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #else + #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #endif + + + #endif + +#endif // ENABLE_AUTO_BED_LEVELING + + +// The position of the homing switches +//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +//Manual homing switch locations: +// For deltabots this means top and center of the Cartesian print volume. +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 0 +//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing. //// MOVEMENT SETTINGS #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E -float max_feedrate[] = {60000, 60000, 100, 500000}; // set the max speeds -float homing_feedrate[] = {2400, 2400, 80, 0}; // set the homing speeds -bool axis_relative_modes[] = {false, false, false, false}; +#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min) -//// Acceleration settings -// X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot. -float acceleration = 2000; // Normal acceleration mm/s^2 -float retract_acceleration = 7000; // Normal acceleration mm/s^2 -float max_xy_jerk = 20.0*60; -float max_z_jerk = 0.4*60; -long max_acceleration_units_per_sq_second[] = {7000,7000,100,10000}; // X, Y, Z and E max acceleration in mm/s^2 for printing moves or retracts +// default settings -// The watchdog waits for the watchperiod in milliseconds whenever an M104 or M109 increases the target temperature -// If the temperature has not increased at the end of that period, the target temperature is set to zero. It can be reset with another M104/M109 -//#define WATCHPERIOD 5000 //5 seconds +#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402,78.7402,200.0*8/3,760*1.1} // default steps per unit for Ultimaker +#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. -//// The minimal temperature defines the temperature below which the heater will not be enabled -#define MINTEMP 5 +#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 20.0 // (mm/sec) +#define DEFAULT_ZJERK 0.4 // (mm/sec) +#define DEFAULT_EJERK 5.0 // (mm/sec) -// When temperature exceeds max temp, your heater will be switched off. -// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! -// You should use MINTEMP for thermistor short/failure protection. -#define MAXTEMP 275 +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= + +// Custom M code points +#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -15 + #define Z_PROBE_OFFSET_RANGE_MAX -5 +#endif -/// PID settings: -// Uncomment the following line to enable PID support. -//#define PIDTEMP -#ifdef PIDTEMP -//#define PID_DEBUG 1 // Sends debug data to the serial port. -//#define PID_OPENLOOP 1 // Puts PID in open loop. M104 sets the output power in % -#define PID_MAX 156 // limits current to nozzle -#define PID_INTEGRAL_DRIVE_MAX 156.0 -#define PID_dT 0.16 -double Kp = 20.0; -double Ki = 1.5*PID_dT; -double Kd = 80/PID_dT; -#endif // PIDTEMP +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +//#define EEPROM_SETTINGS +//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: +// please keep turned on if you can. +//#define EEPROM_CHITCHAT +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 180 +#define PLA_PREHEAT_HPB_TEMP 70 +#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 -// extruder advance constant (s2/mm3) +#define ABS_PREHEAT_HOTEND_TEMP 240 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +//==============================LCD and SD support============================= + +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu +// See also language.h +//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) + +// Character based displays can have different extended charsets. +#define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" +//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one. + +//#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +//#define SDSUPPORT // Enable SD Card Support in Hardware Console +//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +//#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +//#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller // -// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTUDER_ADVANCE_K * cubic mm per second ^ 2 -// -// hooke's law says: force = k * distance -// bernoulli's priniciple says: v ^ 2 / 2 + g . h + pressure / density = constant -// so: v ^ 2 is proportional to number of steps we advance the extruder -//#define ADVANCE +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER -#ifdef ADVANCE -#define EXTRUDER_ADVANCE_K 0.02 +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click -#define D_FILAMENT 1.7 -#define STEPS_MM_E 65 -#define EXTRUTION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) -#define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUTION_AREA) +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL -#endif // ADVANCE +//automatic expansion +#if defined (MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 +#endif + +#if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 +#endif + +#if defined (PANEL_ONE) + #define SDSUPPORT + #define ULTIMAKERCONTROLLER +#endif + +#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#endif + +#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL +#endif + +#if defined(REPRAPWORLD_KEYPAD) + #define NEWPANEL + #define ULTIPANEL +#endif +#if defined(RA_CONTROL_PANEL) + #define ULTIPANEL + #define NEWPANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander +#endif + +//I2C PANELS + +//#define LCD_I2C_SAINSMART_YWROBOT +#ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define NEWPANEL + #define ULTIPANEL +#endif + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 +#ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + #define NEWPANEL + #define ULTIPANEL + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif #endif + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI +#ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define NEWPANEL + #define ULTIPANEL +#endif + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD +#ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define NEWPANEL + #define ULTIPANEL +#endif + + +#ifdef ULTIPANEL +// #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 22 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif +#else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 22 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif +#endif + +// default LCD contrast for dogm-like LCD displays +#ifdef DOGLCD +# ifndef DEFAULT_LCD_CONTRAST +# define DEFAULT_LCD_CONTRAST 32 +# endif +#endif + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //__CONFIGURATION_H diff --git a/Marlin/ConfigurationStore.cpp b/Marlin/ConfigurationStore.cpp new file mode 100644 index 000000000..b80aa038d --- /dev/null +++ b/Marlin/ConfigurationStore.cpp @@ -0,0 +1,666 @@ +/** + * ConfigurationStore.cpp + * + * Configuration and EEPROM storage + * + * V15 EEPROM Layout: + * + * ver + * axis_steps_per_unit (x4) + * max_feedrate (x4) + * max_acceleration_units_per_sq_second (x4) + * acceleration + * retract_acceleration + * minimumfeedrate + * mintravelfeedrate + * minsegmenttime + * max_xy_jerk + * max_z_jerk + * max_e_jerk + * add_homing (x3) + * + * DELTA: + * endstop_adj (x3) + * delta_radius + * delta_diagonal_rod + * delta_segments_per_second + * + * ULTIPANEL: + * plaPreheatHotendTemp + * plaPreheatHPBTemp + * plaPreheatFanSpeed + * absPreheatHotendTemp + * absPreheatHPBTemp + * absPreheatFanSpeed + * zprobe_zoffset + * + * PIDTEMP: + * Kp[0], Ki[0], Kd[0], Kc[0] + * Kp[1], Ki[1], Kd[1], Kc[1] + * Kp[2], Ki[2], Kd[2], Kc[2] + * Kp[3], Ki[3], Kd[3], Kc[3] + * + * DOGLCD: + * lcd_contrast + * + * SCARA: + * axis_scaling (x3) + * + * FWRETRACT: + * autoretract_enabled + * retract_length + * retract_length_swap + * retract_feedrate + * retract_zlift + * retract_recover_length + * retract_recover_length_swap + * retract_recover_feedrate + * + * volumetric_enabled + * + * filament_size (x4) + * + */ +#include "Marlin.h" +#include "language.h" +#include "planner.h" +#include "temperature.h" +#include "ultralcd.h" +#include "ConfigurationStore.h" + +void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) { + uint8_t c; + while(size--) { + eeprom_write_byte((unsigned char*)pos, *value); + c = eeprom_read_byte((unsigned char*)pos); + if (c != *value) { + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE); + } + pos++; + value++; + }; +} +void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) { + do { + *value = eeprom_read_byte((unsigned char*)pos); + pos++; + value++; + } while (--size); +} +#define EEPROM_WRITE_VAR(pos, value) _EEPROM_writeData(pos, (uint8_t*)&value, sizeof(value)) +#define EEPROM_READ_VAR(pos, value) _EEPROM_readData(pos, (uint8_t*)&value, sizeof(value)) + +//====================================================================================== + +#define DUMMY_PID_VALUE 3000.0f + +#define EEPROM_OFFSET 100 + + +// IMPORTANT: Whenever there are changes made to the variables stored in EEPROM +// in the functions below, also increment the version number. This makes sure that +// the default values are used whenever there is a change to the data, to prevent +// wrong data being written to the variables. +// ALSO: always make sure the variables in the Store and retrieve sections are in the same order. + +#define EEPROM_VERSION "V15" + +#ifdef EEPROM_SETTINGS + +void Config_StoreSettings() { + float dummy = 0.0f; + char ver[4] = "000"; + int i = EEPROM_OFFSET; + EEPROM_WRITE_VAR(i, ver); // invalidate data first + EEPROM_WRITE_VAR(i, axis_steps_per_unit); + EEPROM_WRITE_VAR(i, max_feedrate); + EEPROM_WRITE_VAR(i, max_acceleration_units_per_sq_second); + EEPROM_WRITE_VAR(i, acceleration); + EEPROM_WRITE_VAR(i, retract_acceleration); + EEPROM_WRITE_VAR(i, minimumfeedrate); + EEPROM_WRITE_VAR(i, mintravelfeedrate); + EEPROM_WRITE_VAR(i, minsegmenttime); + EEPROM_WRITE_VAR(i, max_xy_jerk); + EEPROM_WRITE_VAR(i, max_z_jerk); + EEPROM_WRITE_VAR(i, max_e_jerk); + EEPROM_WRITE_VAR(i, add_homing); + + #ifdef DELTA + EEPROM_WRITE_VAR(i, endstop_adj); // 3 floats + EEPROM_WRITE_VAR(i, delta_radius); // 1 float + EEPROM_WRITE_VAR(i, delta_diagonal_rod); // 1 float + EEPROM_WRITE_VAR(i, delta_segments_per_second); // 1 float + #else + dummy = 0.0f; + for (int q=6; q--;) EEPROM_WRITE_VAR(i, dummy); + #endif + + #ifndef ULTIPANEL + int plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP, plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP, plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED, + absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP, absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP, absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED; + #endif // !ULTIPANEL + + EEPROM_WRITE_VAR(i, plaPreheatHotendTemp); + EEPROM_WRITE_VAR(i, plaPreheatHPBTemp); + EEPROM_WRITE_VAR(i, plaPreheatFanSpeed); + EEPROM_WRITE_VAR(i, absPreheatHotendTemp); + EEPROM_WRITE_VAR(i, absPreheatHPBTemp); + EEPROM_WRITE_VAR(i, absPreheatFanSpeed); + EEPROM_WRITE_VAR(i, zprobe_zoffset); + + for (int e = 0; e < 4; e++) { + + #ifdef PIDTEMP + if (e < EXTRUDERS) { + EEPROM_WRITE_VAR(i, PID_PARAM(Kp, e)); + EEPROM_WRITE_VAR(i, PID_PARAM(Ki, e)); + EEPROM_WRITE_VAR(i, PID_PARAM(Kd, e)); + #ifdef PID_ADD_EXTRUSION_RATE + EEPROM_WRITE_VAR(i, PID_PARAM(Kc, e)); + #else + dummy = 1.0f; // 1.0 = default kc + EEPROM_WRITE_VAR(i, dummy); + #endif + } + else { + #else // !PIDTEMP + { + #endif // !PIDTEMP + + dummy = DUMMY_PID_VALUE; + EEPROM_WRITE_VAR(i, dummy); + dummy = 0.0f; + for (int q = 3; q--;) EEPROM_WRITE_VAR(i, dummy); + } + + } // Extruders Loop + + #ifndef DOGLCD + int lcd_contrast = 32; + #endif + EEPROM_WRITE_VAR(i, lcd_contrast); + + #ifdef SCARA + EEPROM_WRITE_VAR(i, axis_scaling); // 3 floats + #else + dummy = 1.0f; + EEPROM_WRITE_VAR(i, dummy); + #endif + + #ifdef FWRETRACT + EEPROM_WRITE_VAR(i, autoretract_enabled); + EEPROM_WRITE_VAR(i, retract_length); + #if EXTRUDERS > 1 + EEPROM_WRITE_VAR(i, retract_length_swap); + #else + dummy = 0.0f; + EEPROM_WRITE_VAR(i, dummy); + #endif + EEPROM_WRITE_VAR(i, retract_feedrate); + EEPROM_WRITE_VAR(i, retract_zlift); + EEPROM_WRITE_VAR(i, retract_recover_length); + #if EXTRUDERS > 1 + EEPROM_WRITE_VAR(i, retract_recover_length_swap); + #else + dummy = 0.0f; + EEPROM_WRITE_VAR(i, dummy); + #endif + EEPROM_WRITE_VAR(i, retract_recover_feedrate); + #endif // FWRETRACT + + EEPROM_WRITE_VAR(i, volumetric_enabled); + + // Save filament sizes + for (int q = 0; q < 4; q++) { + if (q < EXTRUDERS) dummy = filament_size[q]; + EEPROM_WRITE_VAR(i, dummy); + } + + int storageSize = i; + + char ver2[4] = EEPROM_VERSION; + int j = EEPROM_OFFSET; + EEPROM_WRITE_VAR(j, ver2); // validate data + + // Report storage size + SERIAL_ECHO_START; + SERIAL_ECHOPAIR("Settings Stored (", (unsigned long)i); + SERIAL_ECHOLNPGM(" bytes)"); +} + +void Config_RetrieveSettings() { + + int i = EEPROM_OFFSET; + char stored_ver[4]; + char ver[4] = EEPROM_VERSION; + EEPROM_READ_VAR(i, stored_ver); //read stored version + // SERIAL_ECHOLN("Version: [" << ver << "] Stored version: [" << stored_ver << "]"); + + if (strncmp(ver, stored_ver, 3) != 0) { + Config_ResetDefault(); + } + else { + float dummy = 0; + + // version number match + EEPROM_READ_VAR(i, axis_steps_per_unit); + EEPROM_READ_VAR(i, max_feedrate); + EEPROM_READ_VAR(i, max_acceleration_units_per_sq_second); + + // steps per sq second need to be updated to agree with the units per sq second (as they are what is used in the planner) + reset_acceleration_rates(); + + EEPROM_READ_VAR(i, acceleration); + EEPROM_READ_VAR(i, retract_acceleration); + EEPROM_READ_VAR(i, minimumfeedrate); + EEPROM_READ_VAR(i, mintravelfeedrate); + EEPROM_READ_VAR(i, minsegmenttime); + EEPROM_READ_VAR(i, max_xy_jerk); + EEPROM_READ_VAR(i, max_z_jerk); + EEPROM_READ_VAR(i, max_e_jerk); + EEPROM_READ_VAR(i, add_homing); + + #ifdef DELTA + EEPROM_READ_VAR(i, endstop_adj); // 3 floats + EEPROM_READ_VAR(i, delta_radius); // 1 float + EEPROM_READ_VAR(i, delta_diagonal_rod); // 1 float + EEPROM_READ_VAR(i, delta_segments_per_second); // 1 float + #else + for (int q=6; q--;) EEPROM_READ_VAR(i, dummy); + #endif + + #ifndef ULTIPANEL + int plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed, + absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed; + #endif + + EEPROM_READ_VAR(i, plaPreheatHotendTemp); + EEPROM_READ_VAR(i, plaPreheatHPBTemp); + EEPROM_READ_VAR(i, plaPreheatFanSpeed); + EEPROM_READ_VAR(i, absPreheatHotendTemp); + EEPROM_READ_VAR(i, absPreheatHPBTemp); + EEPROM_READ_VAR(i, absPreheatFanSpeed); + EEPROM_READ_VAR(i, zprobe_zoffset); + + #ifdef PIDTEMP + for (int e = 0; e < 4; e++) { // 4 = max extruders currently supported by Marlin + EEPROM_READ_VAR(i, dummy); + if (e < EXTRUDERS && dummy != DUMMY_PID_VALUE) { + // do not need to scale PID values as the values in EEPROM are already scaled + PID_PARAM(Kp, e) = dummy; + EEPROM_READ_VAR(i, PID_PARAM(Ki, e)); + EEPROM_READ_VAR(i, PID_PARAM(Kd, e)); + #ifdef PID_ADD_EXTRUSION_RATE + EEPROM_READ_VAR(i, PID_PARAM(Kc, e)); + #else + EEPROM_READ_VAR(i, dummy); + #endif + } + else { + for (int q=3; q--;) EEPROM_READ_VAR(i, dummy); // Ki, Kd, Kc + } + } + #else // !PIDTEMP + // 4 x 4 = 16 slots for PID parameters + for (int q=16; q--;) EEPROM_READ_VAR(i, dummy); // 4x Kp, Ki, Kd, Kc + #endif // !PIDTEMP + + #ifndef DOGLCD + int lcd_contrast; + #endif + EEPROM_READ_VAR(i, lcd_contrast); + + #ifdef SCARA + EEPROM_READ_VAR(i, axis_scaling); // 3 floats + #else + EEPROM_READ_VAR(i, dummy); + #endif + + #ifdef FWRETRACT + EEPROM_READ_VAR(i, autoretract_enabled); + EEPROM_READ_VAR(i, retract_length); + #if EXTRUDERS > 1 + EEPROM_READ_VAR(i, retract_length_swap); + #else + EEPROM_READ_VAR(i, dummy); + #endif + EEPROM_READ_VAR(i, retract_feedrate); + EEPROM_READ_VAR(i, retract_zlift); + EEPROM_READ_VAR(i, retract_recover_length); + #if EXTRUDERS > 1 + EEPROM_READ_VAR(i, retract_recover_length_swap); + #else + EEPROM_READ_VAR(i, dummy); + #endif + EEPROM_READ_VAR(i, retract_recover_feedrate); + #endif // FWRETRACT + + EEPROM_READ_VAR(i, volumetric_enabled); + + for (int q = 0; q < 4; q++) { + EEPROM_READ_VAR(i, dummy); + if (q < EXTRUDERS) filament_size[q] = dummy; + } + + calculate_volumetric_multipliers(); + // Call updatePID (similar to when we have processed M301) + updatePID(); + + // Report settings retrieved and length + SERIAL_ECHO_START; + SERIAL_ECHO(ver); + SERIAL_ECHOPAIR(" stored settings retrieved (", (unsigned long)i); + SERIAL_ECHOLNPGM(" bytes)"); + } + + #ifdef EEPROM_CHITCHAT + Config_PrintSettings(); + #endif +} + +#endif // EEPROM_SETTINGS + +void Config_ResetDefault() { + float tmp1[] = DEFAULT_AXIS_STEPS_PER_UNIT; + float tmp2[] = DEFAULT_MAX_FEEDRATE; + long tmp3[] = DEFAULT_MAX_ACCELERATION; + for (int i = 0; i < NUM_AXIS; i++) { + axis_steps_per_unit[i] = tmp1[i]; + max_feedrate[i] = tmp2[i]; + max_acceleration_units_per_sq_second[i] = tmp3[i]; + #ifdef SCARA + if (i < sizeof(axis_scaling) / sizeof(*axis_scaling)) + axis_scaling[i] = 1; + #endif + } + + // steps per sq second need to be updated to agree with the units per sq second + reset_acceleration_rates(); + + acceleration = DEFAULT_ACCELERATION; + retract_acceleration = DEFAULT_RETRACT_ACCELERATION; + minimumfeedrate = DEFAULT_MINIMUMFEEDRATE; + minsegmenttime = DEFAULT_MINSEGMENTTIME; + mintravelfeedrate = DEFAULT_MINTRAVELFEEDRATE; + max_xy_jerk = DEFAULT_XYJERK; + max_z_jerk = DEFAULT_ZJERK; + max_e_jerk = DEFAULT_EJERK; + add_homing[X_AXIS] = add_homing[Y_AXIS] = add_homing[Z_AXIS] = 0; + + #ifdef DELTA + endstop_adj[X_AXIS] = endstop_adj[Y_AXIS] = endstop_adj[Z_AXIS] = 0; + delta_radius = DELTA_RADIUS; + delta_diagonal_rod = DELTA_DIAGONAL_ROD; + delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND; + recalc_delta_settings(delta_radius, delta_diagonal_rod); + #endif + + #ifdef ULTIPANEL + plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP; + plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP; + plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED; + absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP; + absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP; + absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED; + #endif + + #ifdef ENABLE_AUTO_BED_LEVELING + zprobe_zoffset = -Z_PROBE_OFFSET_FROM_EXTRUDER; + #endif + + #ifdef DOGLCD + lcd_contrast = DEFAULT_LCD_CONTRAST; + #endif + + #ifdef PIDTEMP + #ifdef PID_PARAMS_PER_EXTRUDER + for (int e = 0; e < EXTRUDERS; e++) + #else + int e = 0; // only need to write once + #endif + { + PID_PARAM(Kp, e) = DEFAULT_Kp; + PID_PARAM(Ki, e) = scalePID_i(DEFAULT_Ki); + PID_PARAM(Kd, e) = scalePID_d(DEFAULT_Kd); + #ifdef PID_ADD_EXTRUSION_RATE + PID_PARAM(Kc, e) = DEFAULT_Kc; + #endif + } + // call updatePID (similar to when we have processed M301) + updatePID(); + #endif // PIDTEMP + + #ifdef FWRETRACT + autoretract_enabled = false; + retract_length = RETRACT_LENGTH; + #if EXTRUDERS > 1 + retract_length_swap = RETRACT_LENGTH_SWAP; + #endif + retract_feedrate = RETRACT_FEEDRATE; + retract_zlift = RETRACT_ZLIFT; + retract_recover_length = RETRACT_RECOVER_LENGTH; + #if EXTRUDERS > 1 + retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP; + #endif + retract_recover_feedrate = RETRACT_RECOVER_FEEDRATE; + #endif + + volumetric_enabled = false; + filament_size[0] = DEFAULT_NOMINAL_FILAMENT_DIA; + #if EXTRUDERS > 1 + filament_size[1] = DEFAULT_NOMINAL_FILAMENT_DIA; + #if EXTRUDERS > 2 + filament_size[2] = DEFAULT_NOMINAL_FILAMENT_DIA; + #if EXTRUDERS > 3 + filament_size[3] = DEFAULT_NOMINAL_FILAMENT_DIA; + #endif + #endif + #endif + calculate_volumetric_multipliers(); + + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded"); +} + +#ifndef DISABLE_M503 + +void Config_PrintSettings(bool forReplay) { + // Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown + + SERIAL_ECHO_START; + + if (!forReplay) { + SERIAL_ECHOLNPGM("Steps per unit:"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M92 X", axis_steps_per_unit[X_AXIS]); + SERIAL_ECHOPAIR(" Y", axis_steps_per_unit[Y_AXIS]); + SERIAL_ECHOPAIR(" Z", axis_steps_per_unit[Z_AXIS]); + SERIAL_ECHOPAIR(" E", axis_steps_per_unit[E_AXIS]); + SERIAL_EOL; + + SERIAL_ECHO_START; + + #ifdef SCARA + if (!forReplay) { + SERIAL_ECHOLNPGM("Scaling factors:"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M365 X", axis_scaling[X_AXIS]); + SERIAL_ECHOPAIR(" Y", axis_scaling[Y_AXIS]); + SERIAL_ECHOPAIR(" Z", axis_scaling[Z_AXIS]); + SERIAL_EOL; + SERIAL_ECHO_START; + #endif // SCARA + + if (!forReplay) { + SERIAL_ECHOLNPGM("Maximum feedrates (mm/s):"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M203 X", max_feedrate[X_AXIS]); + SERIAL_ECHOPAIR(" Y", max_feedrate[Y_AXIS]); + SERIAL_ECHOPAIR(" Z", max_feedrate[Z_AXIS]); + SERIAL_ECHOPAIR(" E", max_feedrate[E_AXIS]); + SERIAL_EOL; + + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Maximum Acceleration (mm/s2):"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M201 X", max_acceleration_units_per_sq_second[X_AXIS] ); + SERIAL_ECHOPAIR(" Y", max_acceleration_units_per_sq_second[Y_AXIS] ); + SERIAL_ECHOPAIR(" Z", max_acceleration_units_per_sq_second[Z_AXIS] ); + SERIAL_ECHOPAIR(" E", max_acceleration_units_per_sq_second[E_AXIS]); + SERIAL_EOL; + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Acceleration: S=acceleration, T=retract acceleration"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M204 S", acceleration ); + SERIAL_ECHOPAIR(" T", retract_acceleration); + SERIAL_EOL; + + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M205 S", minimumfeedrate ); + SERIAL_ECHOPAIR(" T", mintravelfeedrate ); + SERIAL_ECHOPAIR(" B", minsegmenttime ); + SERIAL_ECHOPAIR(" X", max_xy_jerk ); + SERIAL_ECHOPAIR(" Z", max_z_jerk); + SERIAL_ECHOPAIR(" E", max_e_jerk); + SERIAL_EOL; + + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Home offset (mm):"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M206 X", add_homing[X_AXIS] ); + SERIAL_ECHOPAIR(" Y", add_homing[Y_AXIS] ); + SERIAL_ECHOPAIR(" Z", add_homing[Z_AXIS] ); + SERIAL_EOL; + + #ifdef DELTA + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Endstop adjustement (mm):"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M666 X", endstop_adj[X_AXIS] ); + SERIAL_ECHOPAIR(" Y", endstop_adj[Y_AXIS] ); + SERIAL_ECHOPAIR(" Z", endstop_adj[Z_AXIS] ); + SERIAL_EOL; + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Delta settings: L=delta_diagonal_rod, R=delta_radius, S=delta_segments_per_second"); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M665 L", delta_diagonal_rod ); + SERIAL_ECHOPAIR(" R", delta_radius ); + SERIAL_ECHOPAIR(" S", delta_segments_per_second ); + SERIAL_EOL; + #endif // DELTA + + #ifdef PIDTEMP + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("PID settings:"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M301 P", PID_PARAM(Kp, 0)); // for compatibility with hosts, only echos values for E0 + SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, 0))); + SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0))); + SERIAL_EOL; + #endif // PIDTEMP + + #ifdef FWRETRACT + + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M207 S", retract_length); + SERIAL_ECHOPAIR(" F", retract_feedrate*60); + SERIAL_ECHOPAIR(" Z", retract_zlift); + SERIAL_EOL; + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Recover: S=Extra length (mm) F:Speed (mm/m)"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M208 S", retract_recover_length); + SERIAL_ECHOPAIR(" F", retract_recover_feedrate*60); + SERIAL_EOL; + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M209 S", (unsigned long)(autoretract_enabled ? 1 : 0)); + SERIAL_EOL; + + #if EXTRUDERS > 1 + if (!forReplay) { + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Multi-extruder settings:"); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" Swap retract length (mm): ", retract_length_swap); + SERIAL_EOL; + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" Swap rec. addl. length (mm): ", retract_recover_length_swap); + SERIAL_EOL; + } + #endif // EXTRUDERS > 1 + + #endif // FWRETRACT + + SERIAL_ECHO_START; + if (volumetric_enabled) { + if (!forReplay) { + SERIAL_ECHOLNPGM("Filament settings:"); + SERIAL_ECHO_START; + } + SERIAL_ECHOPAIR(" M200 D", filament_size[0]); + SERIAL_EOL; + + #if EXTRUDERS > 1 + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 T1 D", filament_size[1]); + SERIAL_EOL; + #if EXTRUDERS > 2 + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 T2 D", filament_size[2]); + SERIAL_EOL; + #if EXTRUDERS > 3 + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 T3 D", filament_size[3]); + SERIAL_EOL; + #endif + #endif + #endif + + } else { + if (!forReplay) { + SERIAL_ECHOLNPGM("Filament settings: Disabled"); + } + } + + #ifdef CUSTOM_M_CODES + SERIAL_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("Z-Probe Offset (mm):"); + SERIAL_ECHO_START; + } + SERIAL_ECHO(" M"); + SERIAL_ECHO(CUSTOM_M_CODE_SET_Z_PROBE_OFFSET); + SERIAL_ECHOPAIR(" Z", -zprobe_zoffset); + SERIAL_EOL; + #endif +} + +#endif // !DISABLE_M503 diff --git a/Marlin/ConfigurationStore.h b/Marlin/ConfigurationStore.h new file mode 100644 index 000000000..3dc4a92cf --- /dev/null +++ b/Marlin/ConfigurationStore.h @@ -0,0 +1,22 @@ +#ifndef CONFIGURATIONSTORE_H +#define CONFIGURATIONSTORE_H + +#include "Configuration.h" + +void Config_ResetDefault(); + +#ifndef DISABLE_M503 + void Config_PrintSettings(bool forReplay=false); +#else + FORCE_INLINE void Config_PrintSettings(bool forReplay=false) {} +#endif + +#ifdef EEPROM_SETTINGS + void Config_StoreSettings(); + void Config_RetrieveSettings(); +#else + FORCE_INLINE void Config_StoreSettings() {} + FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); } +#endif + +#endif //CONFIGURATIONSTORE_H diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h new file mode 100644 index 000000000..f2b312441 --- /dev/null +++ b/Marlin/Configuration_adv.h @@ -0,0 +1,540 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +//#define WATCH_TEMP_PERIOD 40000 //40 seconds +//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heating power, proportional to the extrusion speed. + // if Kc is chosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S B F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value +// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results +// as long as it supports dual x-carriages. (M605 S0) +// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so +// that additional slicer support is not required. (M605 S1) +// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all +// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at +// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + +// This is the default power-up mode which can be later using M605. +#define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + +// Default settings in "Auto-park Mode" +#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder +#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + +// Default x offset in duplication mode (typically set to half print bed width) +#define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_RETRACT_MM 5 +#define Y_HOME_RETRACT_MM 5 +#define Z_HOME_RETRACT_MM 2 +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. + +#define AXIS_RELATIVE_MODES {false, false, false, false} +#ifdef CONFIG_STEPPERS_TOSHIBA +#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers +#else +#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) +#endif +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#define INVERT_X_STEP_PIN false +#define INVERT_Y_STEP_PIN false +#define INVERT_Z_STEP_PIN false +#define INVERT_E_STEP_PIN false + +//default stepper release if idle. Set to 0 to deactivate. +#define DEFAULT_STEPPER_DEACTIVE_TIME 60 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// Feedrates for manual moves along X, Y, Z, E from panel +#ifdef ULTIPANEL +#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) +#endif + +//Comment to disable setting feedrate multiplier via encoder +#ifdef ULTIPANEL + #define ULTIPANEL_FEEDMULTIPLY +#endif + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +#define SLOWDOWN + +// Frequency limit +// See nophead's blog for more info +// Not working O +//#define XY_FREQUENCY_LIMIT 15 + +// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end +// of the buffer and all stops. This should not be much greater than zero and should only be changed +// if unwanted behavior is observed on a user's machine when running at very slow speeds. +#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) + +// MS1 MS2 Stepper Driver Microstepping mode table +#define MICROSTEP1 LOW,LOW +#define MICROSTEP2 HIGH,LOW +#define MICROSTEP4 LOW,HIGH +#define MICROSTEP8 HIGH,HIGH +#define MICROSTEP16 HIGH,HIGH + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 8 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + +#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. +// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. +// using: +//#define MENU_ADDAUTOSTART + +// Show a progress bar on HD44780 LCDs for SD printing +//#define LCD_PROGRESS_BAR + +#ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 3000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE + #ifdef DOGLCD + #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. + #endif + #ifdef FILAMENT_LCD_DISPLAY + #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. + #endif +#endif + +// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in real-time +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements + + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + + #ifdef DELTA + #ifdef BABYSTEP_XY + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif +#endif + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// Hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +//#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + + #define D_FILAMENT 2.85 + #define STEPS_MM_E 836 + #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) + +#endif // ADVANCE + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted +// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT +// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should +// be commented out otherwise +#define SDCARDDETECTINVERTED + +#ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED +#endif + +// Power Signal Control Definitions +// By default use ATX definition +#ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 +#endif +// 1 = ATX +#if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH +#endif +// 2 = X-Box 360 203W +#if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW +#endif + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//=============================Buffers ============================ +//=========================================================================== + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. +#if defined SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller +#else + #define BLOCK_BUFFER_SIZE 16 // maximize block buffer +#endif + + +//The ASCII buffer for receiving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 4 + + +// Firmware based and LCD controlled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +// #define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 3 //default retract length (positive mm) + #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change + #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) + #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) +#endif + +//adds support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + #define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +#ifdef FILAMENTCHANGEENABLE + #ifdef EXTRUDER_RUNOUT_PREVENT + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE + #endif +#endif + +//=========================================================================== +//============================= Define Defines ============================ +//=========================================================================== + +#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA) + #error "Bed Auto Leveling is still not compatible with Delta Kinematics." +#endif + +#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT + #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" +#endif + +#if EXTRUDERS > 1 && defined HEATERS_PARALLEL + #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" +#endif + +#if TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR +#endif +#if TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR +#endif +#if TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR +#endif +#if TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR +#endif +#if TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR +#endif +#if TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 +#endif +#if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 +#endif +#if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 +#endif +#if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 +#endif +#if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 +#endif +#if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 +#endif +#if TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP +#endif +#if TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP +#endif +#if TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP +#endif +#if TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif +#if TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP +#endif + + +#endif //__CONFIGURATION_ADV_H diff --git a/Marlin/DOGMbitmaps.h b/Marlin/DOGMbitmaps.h new file mode 100644 index 000000000..8c8356785 --- /dev/null +++ b/Marlin/DOGMbitmaps.h @@ -0,0 +1,237 @@ +// BitMap for splashscreen +// Generated with: http://www.digole.com/tools/PicturetoC_Hex_converter.php +// Please note that using the high-res version takes 402Bytes of PROGMEM. +//#define START_BMPHIGH + +#ifdef START_BMPHIGH + #define START_BMPWIDTH 112 + #define START_BMPHEIGHT 38 + #define START_BMPBYTEWIDTH 14 + #define START_BMPBYTES 532 // START_BMPWIDTH * START_BMPHEIGHT / 8 + + const unsigned char start_bmp[START_BMPBYTES] PROGMEM = { + 0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff + ,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff + ,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff + ,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff + ,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff + ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff + ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff + ,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x3f,0xff + ,0xc0,0x0f,0xc0,0xfc,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x00,0x1f,0xff + ,0xc0,0x3f,0xe1,0xff,0x00,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x0f,0xff + ,0xc0,0x7f,0xf3,0xff,0x80,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x07,0xff + ,0xc0,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x78,0x3c,0x00,0x03,0xff + ,0xc1,0xf8,0x7f,0x87,0xe0,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xff + ,0xc1,0xf0,0x3f,0x03,0xe0,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xff + ,0xc1,0xe0,0x1e,0x01,0xe0,0x1f,0x00,0x03,0xe0,0x78,0x3c,0x03,0xf0,0x7f + ,0xc1,0xe0,0x1e,0x01,0xe0,0x7f,0xc0,0x0f,0xf8,0x78,0x3c,0x07,0xfc,0x3f + ,0xc1,0xe0,0x1e,0x01,0xe1,0xff,0xe0,0x1f,0xfc,0x78,0x3c,0x0f,0xfe,0x1f + ,0xc1,0xe0,0x1e,0x01,0xe3,0xff,0xf0,0x3f,0xfe,0x78,0x3c,0x1f,0xfe,0x0f + ,0xc1,0xe0,0x1e,0x01,0xe3,0xf3,0xf8,0x3f,0x3e,0x78,0x3c,0x3f,0x3f,0x07 + ,0xc1,0xe0,0x1e,0x01,0xe7,0xe0,0xfc,0x7c,0x1f,0x78,0x3c,0x3e,0x1f,0x07 + ,0xc1,0xe0,0x1e,0x01,0xe7,0xc0,0x7c,0x7c,0x0f,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x7c,0x78,0x0f,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0x80,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe7,0xc0,0x3c,0x78,0x00,0x78,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe3,0xe0,0x3c,0x78,0x00,0x7c,0x3c,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe3,0xff,0x3f,0xf8,0x00,0x7f,0xbc,0x3c,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe1,0xff,0x3f,0xf8,0x00,0x3f,0xbf,0xfc,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe0,0xff,0x3f,0xf8,0x00,0x1f,0xbf,0xfc,0x0f,0x03 + ,0xc1,0xe0,0x1e,0x01,0xe0,0x7f,0x3f,0xf8,0x00,0x0f,0xbf,0xfc,0x0f,0x03 + ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07 + ,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06 + ,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e + ,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c + ,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78 + ,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0 + ,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80 }; +#else + #define START_BMPWIDTH 56 + #define START_BMPHEIGHT 19 + #define START_BMPBYTEWIDTH 7 + #define START_BMPBYTES 133 // START_BMPWIDTH * START_BMPHEIGHT / 8 + + const unsigned char start_bmp[START_BMPBYTES] PROGMEM = { + 0x1f,0xff,0xff,0xff,0xff,0xff,0xff + ,0x60,0x00,0x00,0x00,0x00,0x01,0xff + ,0x40,0x00,0x00,0x00,0x00,0x00,0xff + ,0x80,0x00,0x00,0x00,0x00,0x00,0x7f + ,0x83,0xcf,0x00,0x00,0x0c,0x30,0x3f + ,0x87,0xff,0x80,0x00,0x0c,0x30,0x1f + ,0x86,0x79,0x80,0x00,0x0c,0x00,0x0f + ,0x8c,0x30,0xc7,0x83,0x8c,0x30,0xe7 + ,0x8c,0x30,0xcf,0xc7,0xcc,0x31,0xf3 + ,0x8c,0x30,0xdc,0xec,0xec,0x33,0xb9 + ,0x8c,0x30,0xd8,0x6c,0x6c,0x33,0x19 + ,0x8c,0x30,0xd0,0x6c,0x0c,0x33,0x19 + ,0x8c,0x30,0xd8,0x6c,0x0c,0x33,0x19 + ,0x8c,0x30,0xdc,0x6c,0x0e,0x3b,0x19 + ,0x8c,0x30,0xcf,0x7c,0x07,0x9f,0x19 + ,0x8c,0x30,0xc7,0x7c,0x03,0x8f,0x19 + ,0x40,0x00,0x00,0x00,0x00,0x00,0x02 + ,0x60,0x00,0x00,0x00,0x00,0x00,0x06 + ,0x1f,0xff,0xff,0xff,0xff,0xff,0xf8 }; +#endif + +// Here comes a compile-time operation to match the extruder symbols +// on the info screen to the set number of extruders in configuration.h +// +// When only one extruder is selected, the "1" on the symbol will not +// be displayed. + +#if EXTRUDERS == 1 + #define STATUS_SCREENWIDTH 115 //Width in pixels + #define STATUS_SCREENHEIGHT 19 //Height in pixels + #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes + const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0, + 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20, + 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0, + 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x47,0x0E,0x20, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x63,0x0C,0x60, + 0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, + 0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 + }; + + #define STATUS_SCREENWIDTH 115 //Width in pixels + #define STATUS_SCREENHEIGHT 19 //Height in pixels + #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes + const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0, + 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, + 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x58,0x01,0xA0, + 0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0x60,0x20, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0xF0,0x20, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x41,0xF8,0x20, + 0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x61,0xF8,0x60, + 0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, + 0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 + }; +#elif EXTRUDERS == 2 + #define STATUS_SCREENWIDTH 115 //Width in pixels + #define STATUS_SCREENHEIGHT 19 //Height in pixels + #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes + const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0, + 0x7F,0x80,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20, + 0xFB,0xC0,0x00,0x79,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, + 0xF3,0xC0,0x00,0x76,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, + 0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x40,0x60,0x20, + 0x7B,0x80,0x00,0x3D,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0, + 0x7B,0x80,0x00,0x3B,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0, + 0xFB,0xC0,0x00,0x77,0xE0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20, + 0xFB,0xC0,0x00,0x70,0xE0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x47,0x0E,0x20, + 0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x63,0x0C,0x60, + 0x3F,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x1E,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, + 0x0C,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 + }; + + #define STATUS_SCREENWIDTH 115 //Width in pixels + #define STATUS_SCREENHEIGHT 19 //Height in pixels + #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes + const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0, + 0x7F,0x80,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, + 0xFB,0xC0,0x00,0x79,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, + 0xF3,0xC0,0x00,0x76,0xE0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, + 0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, + 0x7B,0x80,0x00,0x3D,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x58,0x01,0xA0, + 0x7B,0x80,0x00,0x3B,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0x60,0x20, + 0xFB,0xC0,0x00,0x77,0xE0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x40,0xF0,0x20, + 0xFB,0xC0,0x00,0x70,0xE0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x41,0xF8,0x20, + 0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x61,0xF8,0x60, + 0x3F,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x1E,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, + 0x0C,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 + }; +#else + #define STATUS_SCREENWIDTH 115 //Width in pixels + #define STATUS_SCREENHEIGHT 19 //Height in pixels + #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes + const unsigned char status_screen0_bmp[] PROGMEM = { //AVR-GCC, WinAVR + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0, + 0x7F,0x80,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x41,0x04,0x00,0x40,0x60,0x20, + 0xFB,0xC0,0x00,0x79,0xE0,0x00,0x79,0xE0,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, + 0xF3,0xC0,0x00,0x76,0xE0,0x00,0x76,0xE0,0x00,0x20,0x82,0x00,0x40,0xF0,0x20, + 0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x7E,0xE0,0x00,0x41,0x04,0x00,0x40,0x60,0x20, + 0x7B,0x80,0x00,0x3D,0xC0,0x00,0x39,0xC0,0x00,0x82,0x08,0x00,0x5E,0x07,0xA0, + 0x7B,0x80,0x00,0x3B,0xC0,0x00,0x3E,0xC0,0x01,0x04,0x10,0x00,0x5F,0x0F,0xA0, + 0xFB,0xC0,0x00,0x77,0xE0,0x00,0x76,0xE0,0x01,0x04,0x10,0x00,0x4F,0x0F,0x20, + 0xFB,0xC0,0x00,0x70,0xE0,0x00,0x79,0xE0,0x00,0x82,0x08,0x00,0x47,0x0E,0x20, + 0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x41,0x04,0x00,0x63,0x0C,0x60, + 0x3F,0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x1E,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, + 0x0C,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 + }; + + #define STATUS_SCREENWIDTH 115 //Width in pixels + #define STATUS_SCREENHEIGHT 19 //Height in pixels + #define STATUS_SCREENBYTEWIDTH 15 //Width in bytes + const unsigned char status_screen1_bmp[] PROGMEM = { //AVR-GCC, WinAVR + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0xF8,0x60, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xF8,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x01,0xA0, + 0x7F,0x80,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, + 0xFB,0xC0,0x00,0x79,0xE0,0x00,0x79,0xE0,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, + 0xF3,0xC0,0x00,0x76,0xE0,0x00,0x76,0xE0,0x00,0x20,0x82,0x00,0x5E,0xF7,0xA0, + 0xEB,0xC0,0x00,0x7E,0xE0,0x00,0x7E,0xE0,0x00,0x41,0x04,0x00,0x5C,0x63,0xA0, + 0x7B,0x80,0x00,0x3D,0xC0,0x00,0x39,0xC0,0x00,0x82,0x08,0x00,0x58,0x01,0xA0, + 0x7B,0x80,0x00,0x3B,0xC0,0x00,0x3E,0xC0,0x01,0x04,0x10,0x00,0x40,0x60,0x20, + 0xFB,0xC0,0x00,0x77,0xE0,0x00,0x76,0xE0,0x01,0x04,0x10,0x00,0x40,0xF0,0x20, + 0xFB,0xC0,0x00,0x70,0xE0,0x00,0x79,0xE0,0x00,0x82,0x08,0x00,0x41,0xF8,0x20, + 0xFF,0xC0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x41,0x04,0x00,0x61,0xF8,0x60, + 0x3F,0x00,0x00,0x1F,0x80,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x70,0x00,0xE0, + 0x1E,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x01,0xFF,0xFF,0x80,0x7F,0xFF,0xE0, + 0x0C,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00 + }; +#endif // Extruders + + diff --git a/Marlin/LiquidCrystalRus.cpp b/Marlin/LiquidCrystalRus.cpp new file mode 100644 index 000000000..c74146236 --- /dev/null +++ b/Marlin/LiquidCrystalRus.cpp @@ -0,0 +1,393 @@ +#include "LiquidCrystalRus.h" + +#include +#include +#include +#include + +#if defined(ARDUINO) && ARDUINO >= 100 + #include "Arduino.h" +#else + #include "WProgram.h" +#endif + +// it is a Russian alphabet translation +// except 0401 --> 0xa2 = â•—, 0451 --> 0xb5 +const PROGMEM uint8_t utf_recode[] = + { 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4, + 0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,0xa8, + 0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab, + 0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1, + 0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7, + 0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe, + 0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0, + 0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7 + }; + +// When the display powers up, it is configured as follows: +// +// 1. Display clear +// 2. Function set: +// DL = 1; 8-bit interface data +// N = 0; 1-line display +// F = 0; 5x8 dot character font +// 3. Display on/off control: +// D = 0; Display off +// C = 0; Cursor off +// B = 0; Blinking off +// 4. Entry mode set: +// I/D = 1; Increment by 1 +// S = 0; No shift +// +// Note, however, that resetting the Arduino doesn't reset the LCD, so we +// can't assume that it's in that state when a sketch starts (and the +// LiquidCrystal constructor is called). +// +// modified 27 Jul 2011 +// by Ilya V. Danilov http://mk90.ru/ + + +LiquidCrystalRus::LiquidCrystalRus(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7); +} + +LiquidCrystalRus::LiquidCrystalRus(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + init(0, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7); +} + +LiquidCrystalRus::LiquidCrystalRus(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +{ + init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0); +} + +LiquidCrystalRus::LiquidCrystalRus(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +{ + init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0); +} + +void LiquidCrystalRus::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + _rs_pin = rs; + _rw_pin = rw; + _enable_pin = enable; + + _data_pins[0] = d0; + _data_pins[1] = d1; + _data_pins[2] = d2; + _data_pins[3] = d3; + _data_pins[4] = d4; + _data_pins[5] = d5; + _data_pins[6] = d6; + _data_pins[7] = d7; + + pinMode(_rs_pin, OUTPUT); + // we can save 1 pin by not using RW. Indicate by passing 255 instead of pin# + if (_rw_pin != 255) { + pinMode(_rw_pin, OUTPUT); + } + pinMode(_enable_pin, OUTPUT); + + if (fourbitmode) + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + else + _displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS; + + begin(16, 1); +} + +void LiquidCrystalRus::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) { + if (lines > 1) { + _displayfunction |= LCD_2LINE; + } + _numlines = lines; + _currline = 0; + + // for some 1 line displays you can select a 10 pixel high font + if ((dotsize != 0) && (lines == 1)) { + _displayfunction |= LCD_5x10DOTS; + } + + // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! + // according to datasheet, we need at least 40ms after power rises above 2.7V + // before sending commands. Arduino can turn on way before 4.5V so we'll wait 50 + delayMicroseconds(50000); + // Now we pull both RS and R/W low to begin commands + digitalWrite(_rs_pin, LOW); + digitalWrite(_enable_pin, LOW); + if (_rw_pin != 255) { + digitalWrite(_rw_pin, LOW); + } + + //put the LCD into 4 bit or 8 bit mode + if (! (_displayfunction & LCD_8BITMODE)) { + // this is according to the Hitachi HD44780 datasheet + // figure 24, pg 46 + + // we start in 8bit mode, try to set 4 bit mode + writeNbits(0x03,4); + delayMicroseconds(4500); // wait min 4.1ms + + // second try + writeNbits(0x03,4); + delayMicroseconds(4500); // wait min 4.1ms + + // third go! + writeNbits(0x03,4); + delayMicroseconds(150); + + // finally, set to 8-bit interface + writeNbits(0x02,4); + } else { + // this is according to the Hitachi HD44780 datasheet + // page 45 figure 23 + + // Send function set command sequence + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(4500); // wait more than 4.1ms + + // second try + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(150); + + // third go + command(LCD_FUNCTIONSET | _displayfunction); + } + + // finally, set # lines, font size, etc. + command(LCD_FUNCTIONSET | _displayfunction); + + // turn the display on with no cursor or blinking default + _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; + display(); + + // clear it off + clear(); + + // Initialize to default text direction (for romance languages) + _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; + // set the entry mode + command(LCD_ENTRYMODESET | _displaymode); + +} + +void LiquidCrystalRus::setDRAMModel(uint8_t model) { + _dram_model = model; +} + +/********** high level commands, for the user! */ +void LiquidCrystalRus::clear() +{ + command(LCD_CLEARDISPLAY); // clear display, set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystalRus::home() +{ + command(LCD_RETURNHOME); // set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystalRus::setCursor(uint8_t col, uint8_t row) +{ + int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; + if ( row >= _numlines ) { + row = _numlines-1; // we count rows starting w/0 + } + + command(LCD_SETDDRAMADDR | (col + row_offsets[row])); +} + +// Turn the display on/off (quickly) +void LiquidCrystalRus::noDisplay() { + _displaycontrol &= ~LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystalRus::display() { + _displaycontrol |= LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turns the underline cursor on/off +void LiquidCrystalRus::noCursor() { + _displaycontrol &= ~LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystalRus::cursor() { + _displaycontrol |= LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turn on and off the blinking cursor +void LiquidCrystalRus::noBlink() { + _displaycontrol &= ~LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystalRus::blink() { + _displaycontrol |= LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// These commands scroll the display without changing the RAM +void LiquidCrystalRus::scrollDisplayLeft(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); +} +void LiquidCrystalRus::scrollDisplayRight(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); +} + +// This is for text that flows Left to Right +void LiquidCrystalRus::leftToRight(void) { + _displaymode |= LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This is for text that flows Right to Left +void LiquidCrystalRus::rightToLeft(void) { + _displaymode &= ~LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'right justify' text from the cursor +void LiquidCrystalRus::autoscroll(void) { + _displaymode |= LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'left justify' text from the cursor +void LiquidCrystalRus::noAutoscroll(void) { + _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// Allows us to fill the first 8 CGRAM locations +// with custom characters +void LiquidCrystalRus::createChar(uint8_t location, uint8_t charmap[]) { + location &= 0x7; // we only have 8 locations 0-7 + command(LCD_SETCGRAMADDR | (location << 3)); + for (int i=0; i<8; i++) { + write(charmap[i]); + } +} + +/*********** mid level commands, for sending data/cmds */ + +inline void LiquidCrystalRus::command(uint8_t value) { + send(value, LOW); +} + +#if defined(ARDUINO) && ARDUINO >= 100 + size_t LiquidCrystalRus::write(uint8_t value) +#else + void LiquidCrystalRus::write(uint8_t value) +#endif +{ + uint8_t out_char=value; + + if (_dram_model == LCD_DRAM_WH1601) { + uint8_t ac=recv(LOW) & 0x7f; + if (ac>7 && ac<0x14) command(LCD_SETDDRAMADDR | (0x40+ac-8)); + } + + if (value>=0x80) { // UTF-8 handling + if (value >= 0xc0) { + utf_hi_char = value - 0xd0; + } else { + value &= 0x3f; + if (!utf_hi_char && (value == 1)) + send(0xa2,HIGH); // â•— + else if ((utf_hi_char == 1) && (value == 0x11)) + send(0xb5,HIGH); // ╦ + else + send(pgm_read_byte_near(utf_recode + value + (utf_hi_char<<6) - 0x10), HIGH); + } + } else send(out_char, HIGH); +#if defined(ARDUINO) && ARDUINO >= 100 + return 1; // assume success +#endif +} + +/************ low level data pushing commands **********/ + +// write either command or data, with automatic 4/8-bit selection +void LiquidCrystalRus::send(uint8_t value, uint8_t mode) { + digitalWrite(_rs_pin, mode); + + // if there is a RW pin indicated, set it low to Write + if (_rw_pin != 255) { + digitalWrite(_rw_pin, LOW); + } + + if (_displayfunction & LCD_8BITMODE) { + writeNbits(value,8); + } else { + writeNbits(value>>4,4); + writeNbits(value,4); + } +} + +// read data, with automatic 4/8-bit selection +uint8_t LiquidCrystalRus::recv(uint8_t mode) { + uint8_t retval; + digitalWrite(_rs_pin, mode); + + // if there is a RW pin indicated, set it low to Write + if (_rw_pin != 255) { + digitalWrite(_rw_pin, HIGH); + } + + if (_displayfunction & LCD_8BITMODE) { + retval = readNbits(8); + } else { + retval = readNbits(4) << 4; + retval |= readNbits(4); + } + return retval; +} +void LiquidCrystalRus::pulseEnable() { + digitalWrite(_enable_pin, LOW); + delayMicroseconds(1); + digitalWrite(_enable_pin, HIGH); + delayMicroseconds(1); // enable pulse must be >450ns + digitalWrite(_enable_pin, LOW); + delayMicroseconds(100); // commands need > 37us to settle +} + +void LiquidCrystalRus::writeNbits(uint8_t value, uint8_t n) { + for (int i = 0; i < n; i++) { + pinMode(_data_pins[i], OUTPUT); + digitalWrite(_data_pins[i], (value >> i) & 0x01); + } + + pulseEnable(); +} + +uint8_t LiquidCrystalRus::readNbits(uint8_t n) { + uint8_t retval=0; + for (int i = 0; i < n; i++) { + pinMode(_data_pins[i], INPUT); + } + + digitalWrite(_enable_pin, LOW); + delayMicroseconds(1); + digitalWrite(_enable_pin, HIGH); + delayMicroseconds(1); // enable pulse must be >450ns + + for (int i = 0; i < n; i++) { + retval |= (digitalRead(_data_pins[i]) == HIGH)?(1 << i):0; + } + + digitalWrite(_enable_pin, LOW); + + return retval; +} + diff --git a/Marlin/LiquidCrystalRus.h b/Marlin/LiquidCrystalRus.h new file mode 100644 index 000000000..ad85394ae --- /dev/null +++ b/Marlin/LiquidCrystalRus.h @@ -0,0 +1,129 @@ +// +// based on LiquidCrystal library from ArduinoIDE, see http://arduino.cc +// modified 27 Jul 2011 +// by Ilya V. Danilov http://mk90.ru/ +// + +#ifndef LiquidCrystalRus_h +#define LiquidCrystalRus_h + +#include +#include "Print.h" + +// commands +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x20 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off control +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_2LINE 0x08 +#define LCD_1LINE 0x00 +#define LCD_5x10DOTS 0x04 +#define LCD_5x8DOTS 0x00 + +// enum for +#define LCD_DRAM_Normal 0x00 +#define LCD_DRAM_WH1601 0x01 + + +class LiquidCrystalRus : public Print { +public: + LiquidCrystalRus(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + LiquidCrystalRus(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + LiquidCrystalRus(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3); + LiquidCrystalRus(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3); + + void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + + void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); + + void clear(); + void home(); + + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void leftToRight(); + void rightToLeft(); + void autoscroll(); + void noAutoscroll(); + + void createChar(uint8_t, uint8_t[]); + void setCursor(uint8_t, uint8_t); + +#if defined(ARDUINO) && ARDUINO >= 100 + virtual size_t write(uint8_t); + using Print::write; +#else + virtual void write(uint8_t); +#endif + + void command(uint8_t); + + void setDRAMModel(uint8_t); + +private: + void send(uint8_t, uint8_t); + void writeNbits(uint8_t, uint8_t); + uint8_t recv(uint8_t); + uint8_t readNbits(uint8_t); + void pulseEnable(); + + uint8_t _rs_pin; // LOW: command. HIGH: character. + uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD. + uint8_t _enable_pin; // activated by a HIGH pulse. + uint8_t _data_pins[8]; + + uint8_t _displayfunction; + uint8_t _displaycontrol; + uint8_t _displaymode; + + uint8_t _initialized; + + uint8_t _numlines,_currline; + + uint8_t _dram_model; + uint8_t utf_hi_char; // UTF-8 high part +}; + +#endif diff --git a/Marlin/Makefile b/Marlin/Makefile index 06e643d4a..56e5dda73 100644 --- a/Marlin/Makefile +++ b/Marlin/Makefile @@ -1,63 +1,295 @@ -# Marlin Arduino Project Makefile -# +# Sprinter Arduino Project Makefile +# # Makefile Based on: # Arduino 0011 Makefile # Arduino adaptation by mellis, eighthave, oli.keller +# Marlin adaption by Daid # # This has been tested with Arduino 0022. -# +# # This makefile allows you to build sketches from the command line # without the Arduino environment (or Java). # # Detailed instructions for using the makefile: # -# 1. Modify the line containg "INSTALL_DIR" to point to the directory that +# 1. Modify the line containg "ARDUINO_INSTALL_DIR" to point to the directory that # contains the Arduino installation (for example, under Mac OS X, this -# might be /Applications/arduino-0012). +# might be /Applications/Arduino.app/Contents/Resources/Java). # -# 2. Modify the line containing "PORT" to refer to the filename +# 2. Modify the line containing "UPLOAD_PORT" to refer to the filename # representing the USB or serial connection to your Arduino board -# (e.g. PORT = /dev/tty.USB0). If the exact name of this file -# changes, you can use * as a wildcard (e.g. PORT = /dev/tty.usb*). +# (e.g. UPLOAD_PORT = /dev/tty.USB0). If the exact name of this file +# changes, you can use * as a wildcard (e.g. UPLOAD_PORT = /dev/tty.usb*). # -# 3. Set the line containing "MCU" to match your board's processor. +# 3. Set the line containing "MCU" to match your board's processor. # Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth # or Diecimila have the atmega168. If you're using a LilyPad Arduino, -# change F_CPU to 8000000. +# change F_CPU to 8000000. If you are using Gen7 electronics, you +# probably need to use 20000000. Either way, you must regenerate +# the speed lookup table with create_speed_lookuptable.py. # # 4. Type "make" and press enter to compile/verify your program. # # 5. Type "make upload", reset your Arduino board, and press enter to # upload your program to the Arduino board. # -# $Id$ +# Note that all settings are set with ?=, this means you can override them +# from the commandline with "make HARDWARE_MOTHERBOARD=71" for example -TARGET = Marlin -INSTALL_DIR = ../../Desktop/arduino-0018/ -UPLOAD_RATE = 38400 -AVRDUDE_PROGRAMMER = stk500v1 -PORT = /dev/ttyUSB0 -#MCU = atmega2560 -#For "old" Arduino Mega -#MCU = atmega1280 -#For Sanguinololu -MCU = atmega644p -F_CPU = 16000000 +# This defined the board you are compiling for (see boards.h for the options) +HARDWARE_MOTHERBOARD ?= 11 +# Arduino source install directory, and version number +# On most linuxes this will be /usr/share/arduino +ARDUINO_INSTALL_DIR ?= /usr/share/arduino +ARDUINO_VERSION ?= 105 + +# You can optionally set a path to the avr-gcc tools. Requires a trailing slash. (ex: /usr/local/avr-gcc/bin) +AVR_TOOLS_PATH ?= + +#Programmer configuration +UPLOAD_RATE ?= 115200 +AVRDUDE_PROGRAMMER ?= wiring +# on most linuxes this will be /dev/ttyACM0 or /dev/ttyACM1 +UPLOAD_PORT ?= /dev/arduino + +#Directory used to build files in, contains all the build files, from object files to the final hex file +#on linux it is best to put an absolute path like /home/username/tmp . +BUILD_DIR ?= applet + +# This defines whether Liquid_TWI2 support will be built +LIQUID_TWI2 ?= 0 + +# this defines if Wire is needed +WIRE ?= 0 ############################################################################ # Below here nothing should be changed... -ARDUINO = $(INSTALL_DIR)/hardware/Sanguino/cores/arduino -AVR_TOOLS_PATH = $(INSTALL_DIR)/hardware/tools/avr/bin -SRC = $(ARDUINO)/pins_arduino.c wiring.c wiring_serial.c \ -$(ARDUINO)/wiring_analog.c $(ARDUINO)/wiring_digital.c \ -$(ARDUINO)/wiring_pulse.c \ -$(ARDUINO)/wiring_shift.c $(ARDUINO)/WInterrupts.c -CXXSRC = $(ARDUINO)/HardwareSerial.cpp $(ARDUINO)/WMath.cpp \ -$(ARDUINO)/Print.cpp ./SdFile.cpp ./SdVolume.cpp ./Sd2Card.cpp -FORMAT = ihex +# Here the Arduino variant is selected by the board type +# HARDWARE_VARIANT = "arduino", "Sanguino", "Gen7", ... +# MCU = "atmega1280", "Mega2560", "atmega2560", "atmega644p", ... +#Gen7 +ifeq ($(HARDWARE_MOTHERBOARD),10) +HARDWARE_VARIANT ?= Gen7 +MCU ?= atmega644 +F_CPU ?= 20000000 +else ifeq ($(HARDWARE_MOTHERBOARD),11) +HARDWARE_VARIANT ?= Gen7 +MCU ?= atmega644p +F_CPU ?= 20000000 +else ifeq ($(HARDWARE_MOTHERBOARD),12) +HARDWARE_VARIANT ?= Gen7 +MCU ?= atmega644p +F_CPU ?= 20000000 +else ifeq ($(HARDWARE_MOTHERBOARD),13) +HARDWARE_VARIANT ?= Gen7 +MCU ?= atmega1284p +F_CPU ?= 20000000 + +#RAMPS +else ifeq ($(HARDWARE_MOTHERBOARD),3) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 +else ifeq ($(HARDWARE_MOTHERBOARD),33) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 +else ifeq ($(HARDWARE_MOTHERBOARD),34) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 + +#Duemilanove w/ ATMega328P pin assignment +else ifeq ($(HARDWARE_MOTHERBOARD),4) +HARDWARE_VARIANT ?= arduino +HARDWARE_SUB_VARIANT ?= standard +MCU ?= atmega328p + +#Gen6 +else ifeq ($(HARDWARE_MOTHERBOARD),5) +HARDWARE_VARIANT ?= Gen6 +MCU ?= atmega644p +else ifeq ($(HARDWARE_MOTHERBOARD),51) +HARDWARE_VARIANT ?= Gen6 +MCU ?= atmega644p + +#Sanguinololu +else ifeq ($(HARDWARE_MOTHERBOARD),6) +HARDWARE_VARIANT ?= Sanguino +MCU ?= atmega644p +else ifeq ($(HARDWARE_MOTHERBOARD),62) +HARDWARE_VARIANT ?= Sanguino +MCU ?= atmega644p +else ifeq ($(HARDWARE_MOTHERBOARD),63) +HARDWARE_VARIANT ?= Sanguino +MCU ?= atmega644p +else ifeq ($(HARDWARE_MOTHERBOARD),65) +HARDWARE_VARIANT ?= Sanguino +MCU ?= atmega1284p +else ifeq ($(HARDWARE_MOTHERBOARD),66) +HARDWARE_VARIANT ?= Sanguino +MCU ?= atmega1284p + +#Ultimaker +else ifeq ($(HARDWARE_MOTHERBOARD),7) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 +else ifeq ($(HARDWARE_MOTHERBOARD),71) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega1280 + +#Teensylu +else ifeq ($(HARDWARE_MOTHERBOARD),8) +HARDWARE_VARIANT ?= Teensy +MCU ?= at90usb1286 +else ifeq ($(HARDWARE_MOTHERBOARD),81) +HARDWARE_VARIANT ?= Teensy +MCU ?= at90usb1286 +else ifeq ($(HARDWARE_MOTHERBOARD),82) +HARDWARE_VARIANT ?= Teensy +MCU ?= at90usb646 +else ifeq ($(HARDWARE_MOTHERBOARD),83) +HARDWARE_VARIANT ?= Teensy +MCU ?= at90usb1286 +else ifeq ($(HARDWARE_MOTHERBOARD),84) +HARDWARE_VARIANT ?= Teensy +MCU ?= at90usb1286 + +#Gen3+ +else ifeq ($(HARDWARE_MOTHERBOARD),9) +HARDWARE_VARIANT ?= Sanguino +MCU ?= atmega644p + +#Gen3 Monolithic Electronics +else ifeq ($(HARDWARE_MOTHERBOARD),22) +HARDWARE_VARIANT ?= Sanguino +MCU ?= atmega644p + +#Megatronics +else ifeq ($(HARDWARE_MOTHERBOARD),70) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 + +#Alpha OMCA board +else ifeq ($(HARDWARE_MOTHERBOARD),90) +HARDWARE_VARIANT ?= SanguinoA +MCU ?= atmega644 + +#Final OMCA board +else ifeq ($(HARDWARE_MOTHERBOARD),91) +HARDWARE_VARIANT ?= Sanguino +MCU ?= atmega644p + +#Rambo +else ifeq ($(HARDWARE_MOTHERBOARD),301) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 + +# Azteeg +else ifeq ($(HARDWARE_MOTHERBOARD),67) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 +else ifeq ($(HARDWARE_MOTHERBOARD),68) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 + +endif + +# Be sure to regenerate speed_lookuptable.h with create_speed_lookuptable.py +# if you are setting this to something other than 16MHz +# Set to 16Mhz if not yet set. +F_CPU ?= 16000000 + +# Arduino containd the main source code for the Arduino +# Libraries, the "hardware variant" are for boards +# that derives from that, and their source are present in +# the main Marlin source directory +ifeq ($(HARDWARE_VARIANT), arduino) +HARDWARE_DIR = $(ARDUINO_INSTALL_DIR)/hardware +else +ifeq ($(shell [ $(ARDUINO_VERSION) -ge 100 ] && echo true), true) +HARDWARE_DIR = ../ArduinoAddons/Arduino_1.x.x +else +HARDWARE_DIR = ../ArduinoAddons/Arduino_0.xx +endif +endif +HARDWARE_SRC = $(HARDWARE_DIR)/$(HARDWARE_VARIANT)/cores/arduino + +TARGET = $(notdir $(CURDIR)) + +# VPATH tells make to look into these directory for source files, +# there is no need to specify explicit pathnames as long as the +# directory is added here + +VPATH = . +VPATH += $(BUILD_DIR) +VPATH += $(HARDWARE_SRC) +ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy)) +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidCrystal +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/SPI +ifeq ($(LIQUID_TWI2), 1) +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2 +endif +ifeq ($(WIRE), 1) +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire +VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility +endif +else +VPATH += $(HARDWARE_DIR)/libraries/LiquidCrystal +VPATH += $(HARDWARE_DIR)/libraries/SPI +ifeq ($(LIQUID_TWI2), 1) +VPATH += $(HARDWARE_DIR)/libraries/Wire +VPATH += $(HARDWARE_DIR)/libraries/Wire/utility +VPATH += $(HARDWARE_DIR)/libraries/LiquidTWI2 +endif +ifeq ($(WIRE), 1) +VPATH += $(HARDWARE_DIR)/libraries/Wire +VPATH += $(HARDWARE_DIR)/libraries/Wire/utility +endif +endif +ifeq ($(HARDWARE_VARIANT), arduino) +HARDWARE_SUB_VARIANT ?= mega +VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/variants/$(HARDWARE_SUB_VARIANT) +else +HARDWARE_SUB_VARIANT ?= standard +VPATH += $(HARDWARE_DIR)/$(HARDWARE_VARIANT)/variants/$(HARDWARE_SUB_VARIANT) +endif +SRC = wiring.c \ + wiring_analog.c wiring_digital.c \ + wiring_pulse.c \ + wiring_shift.c WInterrupts.c +ifeq ($(HARDWARE_VARIANT), Teensy) +SRC = wiring.c +VPATH += $(ARDUINO_INSTALL_DIR)/hardware/teensy/cores/teensy +endif +CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp \ + MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp \ + SdFile.cpp SdVolume.cpp motion_control.cpp planner.cpp \ + stepper.cpp temperature.cpp cardreader.cpp ConfigurationStore.cpp \ + watchdog.cpp SPI.cpp Servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \ + vector_3.cpp qr_solve.cpp +ifeq ($(LIQUID_TWI2), 0) +CXXSRC += LiquidCrystal.cpp +else +SRC += twi.c +CXXSRC += Wire.cpp LiquidTWI2.cpp +endif + +ifeq ($(WIRE), 1) +SRC += twi.c +CXXSRC += Wire.cpp +endif + +#Check for Arduino 1.0.0 or higher and use the correct sourcefiles for that version +ifeq ($(shell [ $(ARDUINO_VERSION) -ge 100 ] && echo true), true) +CXXSRC += main.cpp +else +SRC += pins_arduino.c main.c +endif + +FORMAT = ihex # Name of this Makefile (used for "make depend"). MAKEFILE = Makefile @@ -69,13 +301,33 @@ DEBUG = stabs OPT = s -# Place -D or -U options here -CDEFS = -DF_CPU=$(F_CPU) -CXXDEFS = -DF_CPU=$(F_CPU) +DEFINES ?= -# Place -I options here -CINCS = -I$(ARDUINO) -CXXINCS = -I$(ARDUINO) +# Program settings +CC = $(AVR_TOOLS_PATH)avr-gcc +CXX = $(AVR_TOOLS_PATH)avr-g++ +OBJCOPY = $(AVR_TOOLS_PATH)avr-objcopy +OBJDUMP = $(AVR_TOOLS_PATH)avr-objdump +AR = $(AVR_TOOLS_PATH)avr-ar +SIZE = $(AVR_TOOLS_PATH)avr-size +NM = $(AVR_TOOLS_PATH)avr-nm +AVRDUDE = avrdude +REMOVE = rm -f +MV = mv -f + +# Place -D or -U options here +CDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)} +CXXDEFS = $(CDEFS) + +ifeq ($(HARDWARE_VARIANT), Teensy) +CDEFS += -DUSB_SERIAL +SRC += usb.c pins_teensy.c +CXXSRC += usb_api.cpp +endif + +# Add all the source directories as include directories too +CINCS = ${addprefix -I ,${VPATH}} +CXXINCS = ${addprefix -I ,${VPATH}} # Compiler flag to set the C Standard level. # c89 - "ANSI" C @@ -84,37 +336,38 @@ CXXINCS = -I$(ARDUINO) # gnu99 - c99 plus GCC extensions #CSTANDARD = -std=gnu99 CDEBUG = -g$(DEBUG) -CWARN = -Wall -Wunused-variable -CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -w -ffunction-sections -fdata-sections -DARDUINO=22 +CWARN = -Wall -Wstrict-prototypes +CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct \ + -fshort-enums -w -ffunction-sections -fdata-sections \ + -DARDUINO=$(ARDUINO_VERSION) +ifneq ($(HARDWARE_MOTHERBOARD),) +CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD} +endif #CEXTRA = -Wa,-adhlns=$(<:.c=.lst) +CEXTRA = -fno-use-cxa-atexit -CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CEXTRA) $(CTUNING) -CXXFLAGS = $(CDEFS) $(CINCS) -O$(OPT) -Wall $(CEXTRA) $(CTUNING) -#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs +CFLAGS := $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CEXTRA) $(CTUNING) +CXXFLAGS := $(CDEFS) $(CINCS) -O$(OPT) -Wall $(CEXTRA) $(CTUNING) +#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs LDFLAGS = -lm # Programming support using avrdude. Settings and variables. -AVRDUDE_PORT = $(PORT) -AVRDUDE_WRITE_FLASH = -U flash:w:applet/$(TARGET).hex:i -AVRDUDE_FLAGS = -D -C $(INSTALL_DIR)/hardware/tools/avrdude.conf \ --p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \ --b $(UPLOAD_RATE) - -# Program settings -CC = $(AVR_TOOLS_PATH)/avr-gcc -CXX = $(AVR_TOOLS_PATH)/avr-g++ -OBJCOPY = $(AVR_TOOLS_PATH)/avr-objcopy -OBJDUMP = $(AVR_TOOLS_PATH)/avr-objdump -AR = $(AVR_TOOLS_PATH)/avr-ar -SIZE = $(AVR_TOOLS_PATH)/avr-size -NM = $(AVR_TOOLS_PATH)/avr-nm -AVRDUDE = $(INSTALL_DIR)/hardware/tools/avrdude -REMOVE = rm -f -MV = mv -f +AVRDUDE_PORT = $(UPLOAD_PORT) +AVRDUDE_WRITE_FLASH = -Uflash:w:$(BUILD_DIR)/$(TARGET).hex:i +ifeq ($(shell uname -s), Linux) +AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avrdude.conf +else +AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf +endif +AVRDUDE_FLAGS = -q -q -D -C$(AVRDUDE_CONF) \ + -p$(MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \ + -b$(UPLOAD_RATE) # Define all object files. -OBJ = $(SRC:.c=.o) $(CXXSRC:.cpp=.o) $(ASRC:.S=.o) +OBJ = ${patsubst %.c, $(BUILD_DIR)/%.o, ${SRC}} +OBJ += ${patsubst %.cpp, $(BUILD_DIR)/%.o, ${CXXSRC}} +OBJ += ${patsubst %.S, $(BUILD_DIR)/%.o, ${ASRC}} # Define all listing files. LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst) @@ -122,73 +375,81 @@ LST = $(ASRC:.S=.lst) $(CXXSRC:.cpp=.lst) $(SRC:.c=.lst) # Combine all necessary flags and optional flags. # Add target processor to flags. ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) -ALL_CXXFLAGS = -mmcu=$(MCU) -I. $(CXXFLAGS) -ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) +ALL_CXXFLAGS = -mmcu=$(MCU) $(CXXFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -x assembler-with-cpp $(ASFLAGS) +# set V=1 (eg, "make V=1") to print the full commands etc. +ifneq ($V,1) + Pecho=@echo + P=@ +else + Pecho=@: + P= +endif # Default target. -all: applet_files_ez build sizeafter +all: sizeafter -build: elf hex +build: $(BUILD_DIR) elf hex -applet_files_ez: $(TARGET).pde - # Here is the "preprocessing". - # It creates a .cpp file based with the same name as the .pde file. - # On top of the new .cpp file comes the WProgram.h header. - # At the end there is a generic main() function attached. - # Then the .cpp file will be compiled. Errors during compile will - # refer to this new, automatically generated, file. - # Not the original .pde file you actually edit... - test -d applet || mkdir applet - echo '#include "WProgram.h"' > applet/$(TARGET).cpp - cat $(TARGET).pde >> applet/$(TARGET).cpp - cat $(ARDUINO)/main.cpp >> applet/$(TARGET).cpp +# Creates the object directory +$(BUILD_DIR): + $P mkdir -p $(BUILD_DIR) -elf: applet/$(TARGET).elf -hex: applet/$(TARGET).hex -eep: applet/$(TARGET).eep -lss: applet/$(TARGET).lss -sym: applet/$(TARGET).sym +elf: $(BUILD_DIR)/$(TARGET).elf +hex: $(BUILD_DIR)/$(TARGET).hex +eep: $(BUILD_DIR)/$(TARGET).eep +lss: $(BUILD_DIR)/$(TARGET).lss +sym: $(BUILD_DIR)/$(TARGET).sym -# Program the device. -upload: applet/$(TARGET).hex +# Program the device. +# Do not try to reset an arduino if it's not one +upload: $(BUILD_DIR)/$(TARGET).hex +ifeq (${AVRDUDE_PROGRAMMER}, arduino) + stty hup < $(UPLOAD_PORT); true +endif $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) - +ifeq (${AVRDUDE_PROGRAMMER}, arduino) + stty -hup < $(UPLOAD_PORT); true +endif # Display size of file. -HEXSIZE = $(SIZE) --target=$(FORMAT) applet/$(TARGET).hex -ELFSIZE = $(SIZE) applet/$(TARGET).elf +HEXSIZE = $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex +ELFSIZE = $(SIZE) --mcu=$(MCU) -C $(BUILD_DIR)/$(TARGET).elf; \ + $(SIZE) $(BUILD_DIR)/$(TARGET).elf sizebefore: - @if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi + $P if [ -f $(BUILD_DIR)/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi -sizeafter: - @if [ -f applet/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(HEXSIZE); echo; fi +sizeafter: build + $P if [ -f $(BUILD_DIR)/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi # Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. COFFCONVERT=$(OBJCOPY) --debugging \ ---change-section-address .data-0x800000 \ ---change-section-address .bss-0x800000 \ ---change-section-address .noinit-0x800000 \ ---change-section-address .eeprom-0x810000 + --change-section-address .data-0x800000 \ + --change-section-address .bss-0x800000 \ + --change-section-address .noinit-0x800000 \ + --change-section-address .eeprom-0x810000 -coff: applet/$(TARGET).elf - $(COFFCONVERT) -O coff-avr applet/$(TARGET).elf $(TARGET).cof +coff: $(BUILD_DIR)/$(TARGET).elf + $(COFFCONVERT) -O coff-avr $(BUILD_DIR)/$(TARGET).elf $(TARGET).cof extcoff: $(TARGET).elf - $(COFFCONVERT) -O coff-ext-avr applet/$(TARGET).elf $(TARGET).cof + $(COFFCONVERT) -O coff-ext-avr $(BUILD_DIR)/$(TARGET).elf $(TARGET).cof .SUFFIXES: .elf .hex .eep .lss .sym +.PRECIOUS: .o .elf.hex: - $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ + $(Pecho) " COPY $@" + $P $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ .elf.eep: -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ - --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ + --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ # Create extended listing file from ELF output file. .elf.lss: @@ -199,49 +460,34 @@ extcoff: $(TARGET).elf $(NM) -n $< > $@ # Link: create ELF output file from library. -applet/$(TARGET).elf: $(TARGET).pde applet/core.a - $(CC) $(ALL_CFLAGS) -Wl,--gc-sections -o $@ applet/$(TARGET).cpp -L. applet/core.a $(LDFLAGS) +$(BUILD_DIR)/$(TARGET).elf: $(OBJ) Configuration.h + $(Pecho) " CXX $@" + $P $(CC) $(ALL_CXXFLAGS) -Wl,--gc-sections -o $@ -L. $(OBJ) $(LDFLAGS) -applet/core.a: $(OBJ) - @for i in $(OBJ); do echo $(AR) rcs applet/core.a $$i; $(AR) rcs applet/core.a $$i; done +$(BUILD_DIR)/%.o: %.c Configuration.h Configuration_adv.h $(MAKEFILE) + $(Pecho) " CC $<" + $P $(CC) -MMD -c $(ALL_CFLAGS) $< -o $@ +$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.cpp Configuration.h Configuration_adv.h $(MAKEFILE) + $(Pecho) " CXX $<" + $P $(CXX) -MMD -c $(ALL_CXXFLAGS) $< -o $@ - -# Compile: create object files from C++ source files. -.cpp.o: - $(CXX) -c $(ALL_CXXFLAGS) $< -o $@ - -# Compile: create object files from C source files. -.c.o: - $(CC) -c $(ALL_CFLAGS) $< -o $@ - - -# Compile: create assembler files from C source files. -.c.s: - $(CC) -S $(ALL_CFLAGS) $< -o $@ - - -# Assemble: create object files from assembler source files. -.S.o: - $(CC) -c $(ALL_ASFLAGS) $< -o $@ - +$(BUILD_DIR)/%.o: %.cpp Configuration.h Configuration_adv.h $(MAKEFILE) + $(Pecho) " CXX $<" + $P $(CXX) -MMD -c $(ALL_CXXFLAGS) $< -o $@ # Target: clean project. clean: - $(REMOVE) applet/$(TARGET).hex applet/$(TARGET).eep applet/$(TARGET).cof applet/$(TARGET).elf \ - applet/$(TARGET).map applet/$(TARGET).sym applet/$(TARGET).lss applet/core.a \ - $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d) + $(Pecho) " RM $(BUILD_DIR)/*" + $P $(REMOVE) $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep $(BUILD_DIR)/$(TARGET).cof $(BUILD_DIR)/$(TARGET).elf \ + $(BUILD_DIR)/$(TARGET).map $(BUILD_DIR)/$(TARGET).sym $(BUILD_DIR)/$(TARGET).lss $(BUILD_DIR)/$(TARGET).cpp \ + $(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) $(CXXSRC:.cpp=.s) $(CXXSRC:.cpp=.d) + $(Pecho) " RMDIR $(BUILD_DIR)/" + $P rm -rf $(BUILD_DIR) -depend: - if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \ - then \ - sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \ - $(MAKEFILE).$$$$ && \ - $(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \ - fi - echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \ - >> $(MAKEFILE); \ - $(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE) -.PHONY: all build elf hex eep lss sym program coff extcoff clean depend applet_files sizebefore sizeafter +.PHONY: all build elf hex eep lss sym program coff extcoff clean depend sizebefore sizeafter + +# Automaticaly include the dependency files created by gcc +-include ${wildcard $(BUILD_DIR)/*.d} diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 56d716542..f335a338d 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -1,107 +1,286 @@ // Tonokip RepRap firmware rewrite based off of Hydra-mmm firmware. -// Licence: GPL -#include +// License: GPL + +#ifndef MARLIN_H +#define MARLIN_H + +#define FORCE_INLINE __attribute__((always_inline)) inline + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + + #include "fastio.h" -extern "C" void __cxa_pure_virtual(); -void __cxa_pure_virtual(){}; +#include "Configuration.h" +#include "pins.h" + +#ifndef AT90USB +#define HardwareSerial_h // trick to disable the standard HWserial +#endif + +#if (ARDUINO >= 100) +# include "Arduino.h" +#else +# include "WProgram.h" +#endif + +// Arduino < 1.0.0 does not define this, so we need to do it ourselves +#ifndef analogInputToDigitalPin +# define analogInputToDigitalPin(p) ((p) + 0xA0) +#endif + +#ifdef AT90USB +#include "HardwareSerial.h" +#endif + +#include "MarlinSerial.h" + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#include "WString.h" + +#ifdef AT90USB + #ifdef BTENABLED + #define MYSERIAL bt + #else + #define MYSERIAL Serial + #endif // BTENABLED +#else + #define MYSERIAL MSerial +#endif + +#define SERIAL_PROTOCOL(x) (MYSERIAL.print(x)) +#define SERIAL_PROTOCOL_F(x,y) (MYSERIAL.print(x,y)) +#define SERIAL_PROTOCOLPGM(x) (serialprintPGM(PSTR(x))) +#define SERIAL_PROTOCOLLN(x) (MYSERIAL.print(x),MYSERIAL.write('\n')) +#define SERIAL_PROTOCOLLNPGM(x) (serialprintPGM(PSTR(x)),MYSERIAL.write('\n')) + + +extern const char errormagic[] PROGMEM; +extern const char echomagic[] PROGMEM; + +#define SERIAL_ERROR_START (serialprintPGM(errormagic)) +#define SERIAL_ERROR(x) SERIAL_PROTOCOL(x) +#define SERIAL_ERRORPGM(x) SERIAL_PROTOCOLPGM(x) +#define SERIAL_ERRORLN(x) SERIAL_PROTOCOLLN(x) +#define SERIAL_ERRORLNPGM(x) SERIAL_PROTOCOLLNPGM(x) + +#define SERIAL_ECHO_START (serialprintPGM(echomagic)) +#define SERIAL_ECHO(x) SERIAL_PROTOCOL(x) +#define SERIAL_ECHOPGM(x) SERIAL_PROTOCOLPGM(x) +#define SERIAL_ECHOLN(x) SERIAL_PROTOCOLLN(x) +#define SERIAL_ECHOLNPGM(x) SERIAL_PROTOCOLLNPGM(x) + +#define SERIAL_ECHOPAIR(name,value) (serial_echopair_P(PSTR(name),(value))) + +#define SERIAL_EOL SERIAL_ECHOLN("") + +void serial_echopair_P(const char *s_P, float v); +void serial_echopair_P(const char *s_P, double v); +void serial_echopair_P(const char *s_P, unsigned long v); + + +//Things to write to serial from Program memory. Saves 400 to 2k of RAM. +FORCE_INLINE void serialprintPGM(const char *str) +{ + char ch=pgm_read_byte(str); + while(ch) + { + MYSERIAL.write(ch); + ch=pgm_read_byte(++str); + } +} + + void get_command(); void process_commands(); -void manage_inactivity(byte debug); +void manage_inactivity(bool ignore_stepper_queue=false); -void manage_heater(); -int temp2analogu(int celsius, const short table[][2], int numtemps); -float analog2tempu(int raw, const short table[][2], int numtemps); -#ifdef HEATER_USES_THERMISTOR - #define HEATERSOURCE 1 -#endif -#ifdef BED_USES_THERMISTOR - #define BEDSOURCE 1 +#if defined(DUAL_X_CARRIAGE) && defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1 \ + && defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1 + #define enable_x() do { WRITE(X_ENABLE_PIN, X_ENABLE_ON); WRITE(X2_ENABLE_PIN, X_ENABLE_ON); } while (0) + #define disable_x() do { WRITE(X_ENABLE_PIN,!X_ENABLE_ON); WRITE(X2_ENABLE_PIN,!X_ENABLE_ON); axis_known_position[X_AXIS] = false; } while (0) +#elif defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1 + #define enable_x() WRITE(X_ENABLE_PIN, X_ENABLE_ON) + #define disable_x() { WRITE(X_ENABLE_PIN,!X_ENABLE_ON); axis_known_position[X_AXIS] = false; } +#else + #define enable_x() ; + #define disable_x() ; #endif -#define temp2analogh( c ) temp2analogu((c),temptable,NUMTEMPS) -#define analog2temp( c ) analog2tempu((c),temptable,NUMTEMPS) - -#if X_ENABLE_PIN > -1 -#define enable_x() WRITE(X_ENABLE_PIN, X_ENABLE_ON) -#define disable_x() WRITE(X_ENABLE_PIN,!X_ENABLE_ON) +#if defined(Y_ENABLE_PIN) && Y_ENABLE_PIN > -1 + #ifdef Y_DUAL_STEPPER_DRIVERS + #define enable_y() { WRITE(Y_ENABLE_PIN, Y_ENABLE_ON); WRITE(Y2_ENABLE_PIN, Y_ENABLE_ON); } + #define disable_y() { WRITE(Y_ENABLE_PIN,!Y_ENABLE_ON); WRITE(Y2_ENABLE_PIN, !Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; } + #else + #define enable_y() WRITE(Y_ENABLE_PIN, Y_ENABLE_ON) + #define disable_y() { WRITE(Y_ENABLE_PIN,!Y_ENABLE_ON); axis_known_position[Y_AXIS] = false; } + #endif #else -#define enable_x() ; -#define disable_x() ; -#endif -#if Y_ENABLE_PIN > -1 -#define enable_y() WRITE(Y_ENABLE_PIN, Y_ENABLE_ON) -#define disable_y() WRITE(Y_ENABLE_PIN,!Y_ENABLE_ON) -#else -#define enable_y() ; -#define disable_y() ; -#endif -#if Z_ENABLE_PIN > -1 -#define enable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON) -#define disable_z() WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON) -#else -#define enable_z() ; -#define disable_z() ; -#endif -#if E_ENABLE_PIN > -1 -#define enable_e() WRITE(E_ENABLE_PIN, E_ENABLE_ON) -#define disable_e() WRITE(E_ENABLE_PIN,!E_ENABLE_ON) -#else -#define enable_e() ; -#define disable_e() ; + #define enable_y() ; + #define disable_y() ; #endif -#define X_AXIS 0 -#define Y_AXIS 1 -#define Z_AXIS 2 -#define E_AXIS 3 +#if defined(Z_ENABLE_PIN) && Z_ENABLE_PIN > -1 + #ifdef Z_DUAL_STEPPER_DRIVERS + #define enable_z() { WRITE(Z_ENABLE_PIN, Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN, Z_ENABLE_ON); } + #define disable_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN,!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; } + #else + #define enable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON) + #define disable_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; } + #endif +#else + #define enable_z() ; + #define disable_z() ; +#endif + +#if defined(E0_ENABLE_PIN) && (E0_ENABLE_PIN > -1) + #define enable_e0() WRITE(E0_ENABLE_PIN, E_ENABLE_ON) + #define disable_e0() WRITE(E0_ENABLE_PIN,!E_ENABLE_ON) +#else + #define enable_e0() /* nothing */ + #define disable_e0() /* nothing */ +#endif + +#if (EXTRUDERS > 1) && defined(E1_ENABLE_PIN) && (E1_ENABLE_PIN > -1) + #define enable_e1() WRITE(E1_ENABLE_PIN, E_ENABLE_ON) + #define disable_e1() WRITE(E1_ENABLE_PIN,!E_ENABLE_ON) +#else + #define enable_e1() /* nothing */ + #define disable_e1() /* nothing */ +#endif + +#if (EXTRUDERS > 2) && defined(E2_ENABLE_PIN) && (E2_ENABLE_PIN > -1) + #define enable_e2() WRITE(E2_ENABLE_PIN, E_ENABLE_ON) + #define disable_e2() WRITE(E2_ENABLE_PIN,!E_ENABLE_ON) +#else + #define enable_e2() /* nothing */ + #define disable_e2() /* nothing */ +#endif + +#if (EXTRUDERS > 3) && defined(E3_ENABLE_PIN) && (E3_ENABLE_PIN > -1) + #define enable_e3() WRITE(E3_ENABLE_PIN, E_ENABLE_ON) + #define disable_e3() WRITE(E3_ENABLE_PIN,!E_ENABLE_ON) +#else + #define enable_e3() /* nothing */ + #define disable_e3() /* nothing */ +#endif + +enum AxisEnum {X_AXIS=0, Y_AXIS=1, Z_AXIS=2, E_AXIS=3, X_HEAD=4, Y_HEAD=5}; +//X_HEAD and Y_HEAD is used for systems that don't have a 1:1 relationship between X_AXIS and X Head movement, like CoreXY bots. void FlushSerialRequestResend(); void ClearToSend(); void get_coordinates(); +#ifdef DELTA +void calculate_delta(float cartesian[3]); +extern float delta[3]; +#endif +#ifdef SCARA +void calculate_delta(float cartesian[3]); +void calculate_SCARA_forward_Transform(float f_scara[3]); +#endif void prepare_move(); -void linear_move(unsigned long steps_remaining[]); -void do_step(int axis); -void kill(byte debug); +void kill(); +void Stop(); -// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in -// the source g-code and may never actually be reached if acceleration management is active. -typedef struct { - // Fields used by the bresenham algorithm for tracing the line - long steps_x, steps_y, steps_z, steps_e; // Step count along each axis - long step_event_count; // The number of step events required to complete this block - volatile long accelerate_until; // The index of the step event on which to stop acceleration - volatile long decelerate_after; // The index of the step event on which to start decelerating - volatile long acceleration_rate; // The acceleration rate used for acceleration calculation - unsigned char direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) +bool IsStopped(); - long advance_rate; - volatile long initial_advance; - volatile long final_advance; - float advance; +bool enquecommand(const char *cmd); //put a single ASCII command at the end of the current buffer or return false when it is full +void enquecommands_P(const char *cmd); //put one or many ASCII commands at the end of the current buffer, read from flash - // Fields used by the motion planner to manage acceleration - float speed_x, speed_y, speed_z, speed_e; // Nominal mm/minute for each axis - float nominal_speed; // The nominal speed for this block in mm/min - float millimeters; // The total travel of this block in mm - float entry_speed; - float acceleration; // acceleration mm/sec^2 +void prepare_arc_move(char isclockwise); +void clamp_to_software_endstops(float target[3]); - // Settings for the trapezoid generator - long nominal_rate; // The nominal step rate for this block in step_events/sec - volatile long initial_rate; // The jerk-adjusted step rate at start of block - volatile long final_rate; // The minimal rate at exit - long acceleration_st; // acceleration steps/sec^2 - volatile char busy; -} block_t; +void refresh_cmd_timeout(void); -void check_axes_activity(); -void plan_init(); -void st_init(); -void tp_init(); -void plan_buffer_line(float x, float y, float z, float e, float feed_rate); -void plan_set_position(float x, float y, float z, float e); -void st_wake_up(); -void st_synchronize(); +#ifdef FAST_PWM_FAN +void setPwmFrequency(uint8_t pin, int val); +#endif + +#ifndef CRITICAL_SECTION_START + #define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli(); + #define CRITICAL_SECTION_END SREG = _sreg; +#endif //CRITICAL_SECTION_START + +extern float homing_feedrate[]; +extern bool axis_relative_modes[]; +extern int feedmultiply; +extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders +extern bool volumetric_enabled; +extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually +extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder. +extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner +extern float current_position[NUM_AXIS] ; +extern float add_homing[3]; +#ifdef DELTA +extern float endstop_adj[3]; +extern float delta_radius; +extern float delta_diagonal_rod; +extern float delta_segments_per_second; +void recalc_delta_settings(float radius, float diagonal_rod); +#endif +#ifdef SCARA +extern float axis_scaling[3]; // Build size scaling +#endif +extern float min_pos[3]; +extern float max_pos[3]; +extern bool axis_known_position[3]; +extern float zprobe_zoffset; +extern int fanSpeed; +#ifdef BARICUDA +extern int ValvePressure; +extern int EtoPPressure; +#endif + +#ifdef FAN_SOFT_PWM +extern unsigned char fanSpeedSoftPwm; +#endif + +#ifdef FILAMENT_SENSOR + extern float filament_width_nominal; //holds the theoretical filament diameter ie., 3.00 or 1.75 + extern bool filament_sensor; //indicates that filament sensor readings should control extrusion + extern float filament_width_meas; //holds the filament diameter as accurately measured + extern signed char measurement_delay[]; //ring buffer to delay measurement + extern int delay_index1, delay_index2; //index into ring buffer + extern float delay_dist; //delay distance counter + extern int meas_delay_cm; //delay distance +#endif + +#ifdef FWRETRACT +extern bool autoretract_enabled; +extern bool retracted[EXTRUDERS]; +extern float retract_length, retract_length_swap, retract_feedrate, retract_zlift; +extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate; +#endif + +extern unsigned long starttime; +extern unsigned long stoptime; + +// Handling multiple extruders pins +extern uint8_t active_extruder; + +#ifdef DIGIPOT_I2C +extern void digipot_i2c_set_current( int channel, float current ); +extern void digipot_i2c_init(); +#endif + +#endif + +extern void calculate_volumetric_multipliers(); diff --git a/Marlin/Marlin.ino b/Marlin/Marlin.ino new file mode 100644 index 000000000..79c934bf0 --- /dev/null +++ b/Marlin/Marlin.ino @@ -0,0 +1,56 @@ +/* -*- c++ -*- */ + +/* + Reprap firmware based on Sprinter and grbl. + Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +/* + This firmware is a mashup between Sprinter and grbl. + (https://github.com/kliment/Sprinter) + (https://github.com/simen/grbl/tree) + + It has preliminary support for Matthew Roberts advance algorithm + http://reprap.org/pipermail/reprap-dev/2011-May/003323.html + */ + +/* All the implementation is done in *.cpp files to get better compatibility with avr-gcc without the Arduino IDE */ +/* Use this file to help the Arduino IDE find which Arduino libraries are needed and to keep documentation on GCode */ + +#include "Configuration.h" +#include "pins.h" + +#ifdef ULTRA_LCD + #if defined(LCD_I2C_TYPE_PCF8575) + #include + #include + #elif defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008) + #include + #include + #elif defined(DOGLCD) + #include // library for graphics LCD by Oli Kraus (https://code.google.com/p/u8glib/) + #else + #include // library for character LCD + #endif +#endif + +#if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 +#include +#endif + +#if defined(DIGIPOT_I2C) + #include +#endif diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index c1ece44cb..79c934bf0 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -1,17 +1,19 @@ +/* -*- c++ -*- */ + /* Reprap firmware based on Sprinter and grbl. Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -20,2036 +22,35 @@ This firmware is a mashup between Sprinter and grbl. (https://github.com/kliment/Sprinter) (https://github.com/simen/grbl/tree) - - It has preliminary support for Matthew Roberts advance algorithm - http://reprap.org/pipermail/reprap-dev/2011-May/003323.html - This firmware is optimized for gen6 electronics. + It has preliminary support for Matthew Roberts advance algorithm + http://reprap.org/pipermail/reprap-dev/2011-May/003323.html */ -#include "fastio.h" +/* All the implementation is done in *.cpp files to get better compatibility with avr-gcc without the Arduino IDE */ +/* Use this file to help the Arduino IDE find which Arduino libraries are needed and to keep documentation on GCode */ + #include "Configuration.h" #include "pins.h" -#include "Marlin.h" -#include "speed_lookuptable.h" -char version_string[] = "0.9.10"; - -#ifdef SDSUPPORT -#include "SdFat.h" -#endif //SDSUPPORT - -#ifndef CRITICAL_SECTION_START -#define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli() -#define CRITICAL_SECTION_END SREG = _sreg -#endif //CRITICAL_SECTION_START - -// look here for descriptions of gcodes: http://linuxcnc.org/handbook/gcode/g-code.html -// http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes - -//Implemented Codes -//------------------- -// G0 -> G1 -// G1 - Coordinated Movement X Y Z E -// G4 - Dwell S or P -// G28 - Home all Axis -// G90 - Use Absolute Coordinates -// G91 - Use Relative Coordinates -// G92 - Set current position to cordinates given - -//RepRap M Codes -// M104 - Set extruder target temp -// M105 - Read current temp -// M106 - Fan on -// M107 - Fan off -// M109 - Wait for extruder current temp to reach target temp. -// M114 - Display current position - -//Custom M Codes -// M80 - Turn on Power Supply -// M20 - List SD card -// M21 - Init SD card -// M22 - Release SD card -// M23 - Select SD file (M23 filename.g) -// M24 - Start/resume SD print -// M25 - Pause SD print -// M26 - Set SD position in bytes (M26 S12345) -// M27 - Report SD print status -// M28 - Start SD write (M28 filename.g) -// M29 - Stop SD write -// M81 - Turn off Power Supply -// M82 - Set E codes absolute (default) -// M83 - Set E codes relative while in Absolute Coordinates (G90) mode -// M84 - Disable steppers until next move, -// or use S to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout. -// M85 - Set inactivity shutdown timer with parameter S. To disable set zero (default) -// M92 - Set axis_steps_per_unit - same syntax as G92 -// M115 - Capabilities string -// M140 - Set bed target temp -// M190 - Wait for bed current temp to reach target temp. -// M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) -// M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) -// M301 - Set PID parameters P I and D - -//Stepper Movement Variables - -char axis_codes[NUM_AXIS] = { - 'X', 'Y', 'Z', 'E'}; -float destination[NUM_AXIS] = { - 0.0, 0.0, 0.0, 0.0}; -float current_position[NUM_AXIS] = { - 0.0, 0.0, 0.0, 0.0}; -bool home_all_axis = true; -long feedrate = 1500, next_feedrate, saved_feedrate; -long gcode_N, gcode_LastN; -bool relative_mode = false; //Determines Absolute or Relative Coordinates -bool relative_mode_e = false; //Determines Absolute or Relative E Codes while in Absolute Coordinates mode. E is always relative in Relative Coordinates mode. -unsigned long axis_steps_per_sqr_second[NUM_AXIS]; - -// comm variables -#define MAX_CMD_SIZE 96 -#define BUFSIZE 8 -char cmdbuffer[BUFSIZE][MAX_CMD_SIZE]; -bool fromsd[BUFSIZE]; -int bufindr = 0; -int bufindw = 0; -int buflen = 0; -int i = 0; -char serial_char; -int serial_count = 0; -boolean comment_mode = false; -char *strchr_pointer; // just a pointer to find chars in the cmd string like X, Y, Z, E, etc - -// Manage heater variables. - -int target_raw = 0; -int current_raw = 0; -unsigned char temp_meas_ready = false; - -#ifdef PIDTEMP - double temp_iState = 0; - double temp_dState = 0; - double pTerm; - double iTerm; - double dTerm; - //int output; - double pid_error; - double temp_iState_min; - double temp_iState_max; - double pid_setpoint = 0.0; - double pid_input; - double pid_output; - bool pid_reset; -#endif //PIDTEMP - -#ifdef WATCHPERIOD -int watch_raw = -1000; -unsigned long watchmillis = 0; -#endif //WATCHPERIOD -#ifdef MINTEMP -int minttemp = temp2analogh(MINTEMP); -#endif //MINTEMP -#ifdef MAXTEMP -int maxttemp = temp2analogh(MAXTEMP); -#endif //MAXTEMP - -//Inactivity shutdown variables -unsigned long previous_millis_cmd = 0; -unsigned long max_inactive_time = 0; -unsigned long stepper_inactive_time = 0; - -#ifdef SDSUPPORT -Sd2Card card; -SdVolume volume; -SdFile root; -SdFile file; -uint32_t filesize = 0; -uint32_t sdpos = 0; -bool sdmode = false; -bool sdactive = false; -bool savetosd = false; -int16_t n; - -void initsd(){ - sdactive = false; -#if SDSS >- 1 - if(root.isOpen()) - root.close(); - if (!card.init(SPI_FULL_SPEED,SDSS)){ - //if (!card.init(SPI_HALF_SPEED,SDSS)) - Serial.println("SD init fail"); - } - else if (!volume.init(&card)) - Serial.println("volume.init failed"); - else if (!root.openRoot(&volume)) - Serial.println("openRoot failed"); - else - sdactive = true; -#endif //SDSS -} - -inline void write_command(char *buf){ - char* begin = buf; - char* npos = 0; - char* end = buf + strlen(buf) - 1; - - file.writeError = false; - if((npos = strchr(buf, 'N')) != NULL){ - begin = strchr(npos, ' ') + 1; - end = strchr(npos, '*') - 1; - } - end[1] = '\r'; - end[2] = '\n'; - end[3] = '\0'; - //Serial.println(begin); - file.write(begin); - if (file.writeError){ - Serial.println("error writing to file"); - } -} -#endif //SDSUPPORT - - -void setup() -{ - Serial.begin(BAUDRATE); - Serial.print("Marlin "); - Serial.println(version_string); - Serial.println("start"); - - for(int i = 0; i < BUFSIZE; i++){ - fromsd[i] = false; - } - - //Initialize Dir Pins -#if X_DIR_PIN > -1 - SET_OUTPUT(X_DIR_PIN); -#endif -#if Y_DIR_PIN > -1 - SET_OUTPUT(Y_DIR_PIN); -#endif -#if Z_DIR_PIN > -1 - SET_OUTPUT(Z_DIR_PIN); -#endif -#if E_DIR_PIN > -1 - SET_OUTPUT(E_DIR_PIN); +#ifdef ULTRA_LCD + #if defined(LCD_I2C_TYPE_PCF8575) + #include + #include + #elif defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008) + #include + #include + #elif defined(DOGLCD) + #include // library for graphics LCD by Oli Kraus (https://code.google.com/p/u8glib/) + #else + #include // library for character LCD + #endif #endif - //Initialize Enable Pins - steppers default to disabled. - -#if (X_ENABLE_PIN > -1) - SET_OUTPUT(X_ENABLE_PIN); - if(!X_ENABLE_ON) WRITE(X_ENABLE_PIN,HIGH); -#endif -#if (Y_ENABLE_PIN > -1) - SET_OUTPUT(Y_ENABLE_PIN); - if(!Y_ENABLE_ON) WRITE(Y_ENABLE_PIN,HIGH); -#endif -#if (Z_ENABLE_PIN > -1) - SET_OUTPUT(Z_ENABLE_PIN); - if(!Z_ENABLE_ON) WRITE(Z_ENABLE_PIN,HIGH); -#endif -#if (E_ENABLE_PIN > -1) - SET_OUTPUT(E_ENABLE_PIN); - if(!E_ENABLE_ON) WRITE(E_ENABLE_PIN,HIGH); +#if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 +#include #endif - //endstops and pullups -#ifdef ENDSTOPPULLUPS -#if X_MIN_PIN > -1 - SET_INPUT(X_MIN_PIN); - WRITE(X_MIN_PIN,HIGH); +#if defined(DIGIPOT_I2C) + #include #endif -#if X_MAX_PIN > -1 - SET_INPUT(X_MAX_PIN); - WRITE(X_MAX_PIN,HIGH); -#endif -#if Y_MIN_PIN > -1 - SET_INPUT(Y_MIN_PIN); - WRITE(Y_MIN_PIN,HIGH); -#endif -#if Y_MAX_PIN > -1 - SET_INPUT(Y_MAX_PIN); - WRITE(Y_MAX_PIN,HIGH); -#endif -#if Z_MIN_PIN > -1 - SET_INPUT(Z_MIN_PIN); - WRITE(Z_MIN_PIN,HIGH); -#endif -#if Z_MAX_PIN > -1 - SET_INPUT(Z_MAX_PIN); - WRITE(Z_MAX_PIN,HIGH); -#endif -#else //ENDSTOPPULLUPS -#if X_MIN_PIN > -1 - SET_INPUT(X_MIN_PIN); -#endif -#if X_MAX_PIN > -1 - SET_INPUT(X_MAX_PIN); -#endif -#if Y_MIN_PIN > -1 - SET_INPUT(Y_MIN_PIN); -#endif -#if Y_MAX_PIN > -1 - SET_INPUT(Y_MAX_PIN); -#endif -#if Z_MIN_PIN > -1 - SET_INPUT(Z_MIN_PIN); -#endif -#if Z_MAX_PIN > -1 - SET_INPUT(Z_MAX_PIN); -#endif -#endif //ENDSTOPPULLUPS - -#if (HEATER_0_PIN > -1) - SET_OUTPUT(HEATER_0_PIN); -#endif -#if (HEATER_1_PIN > -1) - SET_OUTPUT(HEATER_1_PIN); -#endif - - //Initialize Step Pins -#if (X_STEP_PIN > -1) - SET_OUTPUT(X_STEP_PIN); -#endif -#if (Y_STEP_PIN > -1) - SET_OUTPUT(Y_STEP_PIN); -#endif -#if (Z_STEP_PIN > -1) - SET_OUTPUT(Z_STEP_PIN); -#endif -#if (E_STEP_PIN > -1) - SET_OUTPUT(E_STEP_PIN); -#endif - for(int i=0; i < NUM_AXIS; i++){ - axis_steps_per_sqr_second[i] = max_acceleration_units_per_sq_second[i] * axis_steps_per_unit[i]; - } - -#ifdef PIDTEMP - temp_iState_min = 0.0; - temp_iState_max = PID_INTEGRAL_DRIVE_MAX / Ki; -#endif //PIDTEMP - -#ifdef SDSUPPORT - //power to SD reader -#if SDPOWER > -1 - SET_OUTPUT(SDPOWER); - WRITE(SDPOWER,HIGH); -#endif //SDPOWER - initsd(); - -#endif //SDSUPPORT - plan_init(); // Initialize planner; - st_init(); // Initialize stepper; - tp_init(); // Initialize temperature loop -} - - -void loop() -{ - if(buflen<3) - get_command(); - - if(buflen){ -#ifdef SDSUPPORT - if(savetosd){ - if(strstr(cmdbuffer[bufindr],"M29") == NULL){ - write_command(cmdbuffer[bufindr]); - Serial.println("ok"); - } - else{ - file.sync(); - file.close(); - savetosd = false; - Serial.println("Done saving file."); - } - } - else{ - process_commands(); - } -#else - process_commands(); -#endif //SDSUPPORT - buflen = (buflen-1); - bufindr = (bufindr + 1)%BUFSIZE; - } - //check heater every n milliseconds - manage_heater(); - manage_inactivity(1); -} - - -inline void get_command() -{ - while( Serial.available() > 0 && buflen < BUFSIZE) { - serial_char = Serial.read(); - if(serial_char == '\n' || serial_char == '\r' || serial_char == ':' || serial_count >= (MAX_CMD_SIZE - 1) ) - { - if(!serial_count) return; //if empty line - cmdbuffer[bufindw][serial_count] = 0; //terminate string - if(!comment_mode){ - fromsd[bufindw] = false; - if(strstr(cmdbuffer[bufindw], "N") != NULL) - { - strchr_pointer = strchr(cmdbuffer[bufindw], 'N'); - gcode_N = (strtol(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL, 10)); - if(gcode_N != gcode_LastN+1 && (strstr(cmdbuffer[bufindw], "M110") == NULL) ) { - Serial.print("Serial Error: Line Number is not Last Line Number+1, Last Line:"); - Serial.println(gcode_LastN); - //Serial.println(gcode_N); - FlushSerialRequestResend(); - serial_count = 0; - return; - } - - if(strstr(cmdbuffer[bufindw], "*") != NULL) - { - byte checksum = 0; - byte count = 0; - while(cmdbuffer[bufindw][count] != '*') checksum = checksum^cmdbuffer[bufindw][count++]; - strchr_pointer = strchr(cmdbuffer[bufindw], '*'); - - if( (int)(strtod(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL)) != checksum) { - Serial.print("Error: checksum mismatch, Last Line:"); - Serial.println(gcode_LastN); - FlushSerialRequestResend(); - serial_count = 0; - return; - } - //if no errors, continue parsing - } - else - { - Serial.print("Error: No Checksum with line number, Last Line:"); - Serial.println(gcode_LastN); - FlushSerialRequestResend(); - serial_count = 0; - return; - } - - gcode_LastN = gcode_N; - //if no errors, continue parsing - } - else // if we don't receive 'N' but still see '*' - { - if((strstr(cmdbuffer[bufindw], "*") != NULL)) - { - Serial.print("Error: No Line Number with checksum, Last Line:"); - Serial.println(gcode_LastN); - serial_count = 0; - return; - } - } - if((strstr(cmdbuffer[bufindw], "G") != NULL)){ - strchr_pointer = strchr(cmdbuffer[bufindw], 'G'); - switch((int)((strtod(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL)))){ - case 0: - case 1: -#ifdef SDSUPPORT - if(savetosd) - break; -#endif //SDSUPPORT - Serial.println("ok"); - break; - default: - break; - } - - } - bufindw = (bufindw + 1)%BUFSIZE; - buflen += 1; - - } - comment_mode = false; //for new command - serial_count = 0; //clear buffer - } - else - { - if(serial_char == ';') comment_mode = true; - if(!comment_mode) cmdbuffer[bufindw][serial_count++] = serial_char; - } - } -#ifdef SDSUPPORT - if(!sdmode || serial_count!=0){ - return; - } - while( filesize > sdpos && buflen < BUFSIZE) { - n = file.read(); - serial_char = (char)n; - if(serial_char == '\n' || serial_char == '\r' || serial_char == ':' || serial_count >= (MAX_CMD_SIZE - 1) || n == -1) - { - sdpos = file.curPosition(); - if(sdpos >= filesize){ - sdmode = false; - Serial.println("Done printing file"); - } - if(!serial_count) return; //if empty line - cmdbuffer[bufindw][serial_count] = 0; //terminate string - if(!comment_mode){ - fromsd[bufindw] = true; - buflen += 1; - bufindw = (bufindw + 1)%BUFSIZE; - } - comment_mode = false; //for new command - serial_count = 0; //clear buffer - } - else - { - if(serial_char == ';') comment_mode = true; - if(!comment_mode) cmdbuffer[bufindw][serial_count++] = serial_char; - } - } -#endif //SDSUPPORT - -} - - -inline float code_value() { - return (strtod(&cmdbuffer[bufindr][strchr_pointer - cmdbuffer[bufindr] + 1], NULL)); -} -inline long code_value_long() { - return (strtol(&cmdbuffer[bufindr][strchr_pointer - cmdbuffer[bufindr] + 1], NULL, 10)); -} -inline bool code_seen(char code_string[]) { - return (strstr(cmdbuffer[bufindr], code_string) != NULL); -} //Return True if the string was found - -inline bool code_seen(char code) -{ - strchr_pointer = strchr(cmdbuffer[bufindr], code); - return (strchr_pointer != NULL); //Return True if a character was found -} - -inline void process_commands() -{ - unsigned long codenum; //throw away variable - char *starpos = NULL; - - if(code_seen('G')) - { - switch((int)code_value()) - { - case 0: // G0 -> G1 - case 1: // G1 - get_coordinates(); // For X Y Z E F - prepare_move(); - previous_millis_cmd = millis(); - //ClearToSend(); - return; - //break; - case 4: // G4 dwell - codenum = 0; - if(code_seen('P')) codenum = code_value(); // milliseconds to wait - if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait - codenum += millis(); // keep track of when we started waiting - while(millis() < codenum ){ - manage_heater(); - } - break; - case 28: //G28 Home all Axis one at a time - saved_feedrate = feedrate; - for(int i=0; i < NUM_AXIS; i++) { - destination[i] = current_position[i]; - } - feedrate = 0; - - home_all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2]))); - - if((home_all_axis) || (code_seen(axis_codes[X_AXIS]))) { - if ((X_MIN_PIN > -1 && X_HOME_DIR==-1) || (X_MAX_PIN > -1 && X_HOME_DIR==1)){ - st_synchronize(); - current_position[X_AXIS] = 0; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[X_AXIS] = 1.5 * X_MAX_LENGTH * X_HOME_DIR; - feedrate = homing_feedrate[X_AXIS]; - prepare_move(); - - st_synchronize(); - current_position[X_AXIS] = 0; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[X_AXIS] = -5 * X_HOME_DIR; - prepare_move(); - - st_synchronize(); - destination[X_AXIS] = 10 * X_HOME_DIR; - feedrate = homing_feedrate[X_AXIS]/2 ; - prepare_move(); - st_synchronize(); - - current_position[X_AXIS] = (X_HOME_DIR == -1) ? 0 : X_MAX_LENGTH; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[X_AXIS] = current_position[X_AXIS]; - feedrate = 0; - } - } - - if((home_all_axis) || (code_seen(axis_codes[Y_AXIS]))) { - if ((Y_MIN_PIN > -1 && Y_HOME_DIR==-1) || (Y_MAX_PIN > -1 && Y_HOME_DIR==1)){ - current_position[Y_AXIS] = 0; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[Y_AXIS] = 1.5 * Y_MAX_LENGTH * Y_HOME_DIR; - feedrate = homing_feedrate[Y_AXIS]; - prepare_move(); - st_synchronize(); - - current_position[Y_AXIS] = 0; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[Y_AXIS] = -5 * Y_HOME_DIR; - prepare_move(); - st_synchronize(); - - destination[Y_AXIS] = 10 * Y_HOME_DIR; - feedrate = homing_feedrate[Y_AXIS]/2; - prepare_move(); - st_synchronize(); - - current_position[Y_AXIS] = (Y_HOME_DIR == -1) ? 0 : Y_MAX_LENGTH; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[Y_AXIS] = current_position[Y_AXIS]; - feedrate = 0; - } - } - - if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) { - if ((Z_MIN_PIN > -1 && Z_HOME_DIR==-1) || (Z_MAX_PIN > -1 && Z_HOME_DIR==1)){ - current_position[Z_AXIS] = 0; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[Z_AXIS] = 1.5 * Z_MAX_LENGTH * Z_HOME_DIR; - feedrate = homing_feedrate[Z_AXIS]; - prepare_move(); - st_synchronize(); - - current_position[Z_AXIS] = 0; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[Z_AXIS] = -2 * Z_HOME_DIR; - prepare_move(); - st_synchronize(); - - destination[Z_AXIS] = 3 * Z_HOME_DIR; - feedrate = homing_feedrate[Z_AXIS]/2; - prepare_move(); - st_synchronize(); - - current_position[Z_AXIS] = (Z_HOME_DIR == -1) ? 0 : Z_MAX_LENGTH; - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - destination[Z_AXIS] = current_position[Z_AXIS]; - feedrate = 0; - } - } - feedrate = saved_feedrate; - previous_millis_cmd = millis(); - break; - case 90: // G90 - relative_mode = false; - break; - case 91: // G91 - relative_mode = true; - break; - case 92: // G92 - if(!code_seen(axis_codes[E_AXIS])) - st_synchronize(); - for(int i=0; i < NUM_AXIS; i++) { - if(code_seen(axis_codes[i])) current_position[i] = code_value(); - } - plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); - break; - - } - } - - else if(code_seen('M')) - { - - switch( (int)code_value() ) - { -#ifdef SDSUPPORT - - case 20: // M20 - list SD card - Serial.println("Begin file list"); - root.ls(); - Serial.println("End file list"); - break; - case 21: // M21 - init SD card - sdmode = false; - initsd(); - break; - case 22: //M22 - release SD card - sdmode = false; - sdactive = false; - break; - case 23: //M23 - Select file - if(sdactive){ - sdmode = false; - file.close(); - starpos = (strchr(strchr_pointer + 4,'*')); - if(starpos!=NULL) - *(starpos-1)='\0'; - if (file.open(&root, strchr_pointer + 4, O_READ)) { - Serial.print("File opened:"); - Serial.print(strchr_pointer + 4); - Serial.print(" Size:"); - Serial.println(file.fileSize()); - sdpos = 0; - filesize = file.fileSize(); - Serial.println("File selected"); - } - else{ - Serial.println("file.open failed"); - } - } - break; - case 24: //M24 - Start SD print - if(sdactive){ - sdmode = true; - } - break; - case 25: //M25 - Pause SD print - if(sdmode){ - sdmode = false; - } - break; - case 26: //M26 - Set SD index - if(sdactive && code_seen('S')){ - sdpos = code_value_long(); - file.seekSet(sdpos); - } - break; - case 27: //M27 - Get SD status - if(sdactive){ - Serial.print("SD printing byte "); - Serial.print(sdpos); - Serial.print("/"); - Serial.println(filesize); - } - else{ - Serial.println("Not SD printing"); - } - break; - case 28: //M28 - Start SD write - if(sdactive){ - char* npos = 0; - file.close(); - sdmode = false; - starpos = (strchr(strchr_pointer + 4,'*')); - if(starpos != NULL){ - npos = strchr(cmdbuffer[bufindr], 'N'); - strchr_pointer = strchr(npos,' ') + 1; - *(starpos-1) = '\0'; - } - if (!file.open(&root, strchr_pointer+4, O_CREAT | O_APPEND | O_WRITE | O_TRUNC)) - { - Serial.print("open failed, File: "); - Serial.print(strchr_pointer + 4); - Serial.print("."); - } - else{ - savetosd = true; - Serial.print("Writing to file: "); - Serial.println(strchr_pointer + 4); - } - } - break; - case 29: //M29 - Stop SD write - //processed in write to file routine above - //savetosd = false; - break; -#endif //SDSUPPORT - case 104: // M104 -#ifdef PID_OPENLOOP - if (code_seen('S')) PidTemp_Output = code_value() * (PID_MAX/100.0); - if(pid_output > PID_MAX) pid_output = PID_MAX; - if(pid_output < 0) pid_output = 0; -#else //PID_OPENLOOP - if (code_seen('S')) { - target_raw = temp2analogh(code_value()); -#ifdef PIDTEMP - pid_setpoint = code_value(); -#endif //PIDTEMP - } -#ifdef WATCHPERIOD - if(target_raw > current_raw){ - watchmillis = max(1,millis()); - watch_raw = current_raw; - } - else{ - watchmillis = 0; - } -#endif //WATCHPERIOD -#endif //PID_OPENLOOP - break; - case 105: // M105 - Serial.print("ok T:"); - Serial.println(analog2temp(current_raw)); - return; - //break; - case 109: // M109 - Wait for extruder heater to reach target. - if (code_seen('S')) { - target_raw = temp2analogh(code_value()); -#ifdef PIDTEMP - pid_setpoint = code_value(); -#endif //PIDTEMP - } -#ifdef WATCHPERIOD - if(target_raw>current_raw){ - watchmillis = max(1,millis()); - watch_raw = current_raw; - } - else{ - watchmillis = 0; - } -#endif //WATCHERPERIOD - codenum = millis(); - while(current_raw < target_raw) { - if( (millis() - codenum) > 1000 ) //Print Temp Reading every 1 second while heating up. - { - Serial.print("T:"); - Serial.println( analog2temp(current_raw)); - codenum = millis(); - } - manage_heater(); - } - break; - case 190: - break; - case 82: - axis_relative_modes[3] = false; - break; - case 83: - axis_relative_modes[3] = true; - break; - case 84: - if(code_seen('S')){ - stepper_inactive_time = code_value() * 1000; - } - else{ - st_synchronize(); - disable_x(); - disable_y(); - disable_z(); - disable_e(); - } - break; - case 85: // M85 - code_seen('S'); - max_inactive_time = code_value() * 1000; - break; - case 92: // M92 - for(int i=0; i < NUM_AXIS; i++) { - if(code_seen(axis_codes[i])) axis_steps_per_unit[i] = code_value(); - } - - break; - case 115: // M115 - Serial.println("FIRMWARE_NAME:Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1"); - break; - case 114: // M114 - Serial.print("X:"); - Serial.print(current_position[X_AXIS]); - Serial.print("Y:"); - Serial.print(current_position[Y_AXIS]); - Serial.print("Z:"); - Serial.print(current_position[Z_AXIS]); - Serial.print("E:"); - Serial.println(current_position[E_AXIS]); - break; - case 119: // M119 -#if (X_MIN_PIN > -1) - Serial.print("x_min:"); - Serial.print((READ(X_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L "); -#endif -#if (X_MAX_PIN > -1) - Serial.print("x_max:"); - Serial.print((READ(X_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L "); -#endif -#if (Y_MIN_PIN > -1) - Serial.print("y_min:"); - Serial.print((READ(Y_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L "); -#endif -#if (Y_MAX_PIN > -1) - Serial.print("y_max:"); - Serial.print((READ(Y_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L "); -#endif -#if (Z_MIN_PIN > -1) - Serial.print("z_min:"); - Serial.print((READ(Z_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L "); -#endif -#if (Z_MAX_PIN > -1) - Serial.print("z_max:"); - Serial.print((READ(Z_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L "); -#endif - Serial.println(""); - break; - //TODO: update for all axis, use for loop - case 201: // M201 - for(int i=0; i < NUM_AXIS; i++) { - if(code_seen(axis_codes[i])) axis_steps_per_sqr_second[i] = code_value() * axis_steps_per_unit[i]; - } - break; -#if 0 // Not used for Sprinter/grbl gen6 - case 202: // M202 - for(int i=0; i < NUM_AXIS; i++) { - if(code_seen(axis_codes[i])) axis_travel_steps_per_sqr_second[i] = code_value() * axis_steps_per_unit[i]; - } - break; -#endif -#ifdef PIDTEMP - case 301: // M301 - if(code_seen('P')) Kp = code_value(); - if(code_seen('I')) Ki = code_value()*PID_dT; - if(code_seen('D')) Kd = code_value()/PID_dT; - Serial.print("Kp ");Serial.println(Kp); - Serial.print("Ki ");Serial.println(Ki/PID_dT); - Serial.print("Kd ");Serial.println(Kd*PID_dT); - temp_iState_min = 0.0; - temp_iState_max = PID_INTEGRAL_DRIVE_MAX / Ki; - break; -#endif //PIDTEMP - } - } - else{ - Serial.println("Unknown command:"); - Serial.println(cmdbuffer[bufindr]); - } - - ClearToSend(); -} - -void FlushSerialRequestResend() -{ - //char cmdbuffer[bufindr][100]="Resend:"; - Serial.flush(); - Serial.print("Resend:"); - Serial.println(gcode_LastN + 1); - ClearToSend(); -} - -void ClearToSend() -{ - previous_millis_cmd = millis(); -#ifdef SDSUPPORT - if(fromsd[bufindr]) - return; -#endif //SDSUPPORT - Serial.println("ok"); -} - -inline void get_coordinates() -{ - for(int i=0; i < NUM_AXIS; i++) { - if(code_seen(axis_codes[i])) destination[i] = (float)code_value() + (axis_relative_modes[i] || relative_mode)*current_position[i]; - else destination[i] = current_position[i]; //Are these else lines really needed? - } - if(code_seen('F')) { - next_feedrate = code_value(); - if(next_feedrate > 0.0) feedrate = next_feedrate; - } -} - -void prepare_move() -{ - if (min_software_endstops) { - if (destination[X_AXIS] < 0) destination[X_AXIS] = 0.0; - if (destination[Y_AXIS] < 0) destination[Y_AXIS] = 0.0; - if (destination[Z_AXIS] < 0) destination[Z_AXIS] = 0.0; - } - - if (max_software_endstops) { - if (destination[X_AXIS] > X_MAX_LENGTH) destination[X_AXIS] = X_MAX_LENGTH; - if (destination[Y_AXIS] > Y_MAX_LENGTH) destination[Y_AXIS] = Y_MAX_LENGTH; - if (destination[Z_AXIS] > Z_MAX_LENGTH) destination[Z_AXIS] = Z_MAX_LENGTH; - } - - plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60.0); - for(int i=0; i < NUM_AXIS; i++) { - current_position[i] = destination[i]; - } -} - -void manage_heater() -{ - float pid_input; - float pid_output; - if(temp_meas_ready != true) - return; - -CRITICAL_SECTION_START; - temp_meas_ready = false; -CRITICAL_SECTION_END; - -#ifdef PIDTEMP - pid_input = analog2temp(current_raw); - -#ifndef PID_OPENLOOP - pid_error = pid_setpoint - pid_input; - if(pid_error > 10){ - pid_output = PID_MAX; - pid_reset = true; - } - else if(pid_error < -10) { - pid_output = 0; - pid_reset = true; - } - else { - if(pid_reset == true) { - temp_iState = 0.0; - pid_reset = false; - } - pTerm = Kp * pid_error; - temp_iState += pid_error; - temp_iState = constrain(temp_iState, temp_iState_min, temp_iState_max); - iTerm = Ki * temp_iState; - #define K1 0.8 - #define K2 (1.0-K1) - dTerm = (Kd * (pid_input - temp_dState))*K2 + (K1 * dTerm); - temp_dState = pid_input; - pid_output = constrain(pTerm + iTerm - dTerm, 0, PID_MAX); - } -#endif //PID_OPENLOOP -#ifdef PID_DEBUG - Serial.print(" Input "); - Serial.print(pid_input); - Serial.print(" Output "); - Serial.print(pid_output); - Serial.print(" pTerm "); - Serial.print(pTerm); - Serial.print(" iTerm "); - Serial.print(iTerm); - Serial.print(" dTerm "); - Serial.print(dTerm); - Serial.println(); -#endif //PID_DEBUG - OCR2B = pid_output; -#endif //PIDTEMP -} - - -int temp2analogu(int celsius, const short table[][2], int numtemps) { - int raw = 0; - byte i; - - for (i=1; i raw) { - celsius = (float)table[i-1][1] + - (float)(raw - table[i-1][0]) * - (float)(table[i][1] - table[i-1][1]) / - (float)(table[i][0] - table[i-1][0]); - - break; - } - } - // Overflow: Set to last value in the table - if (i == numtemps) celsius = table[i-1][1]; - - return celsius; -} - - -inline void kill() -{ - target_raw=0; -#ifdef PIDTEMP - pid_setpoint = 0.0; -#endif //PIDTEMP - OCR2B = 0; - WRITE(HEATER_0_PIN,LOW); - - disable_x(); - disable_y(); - disable_z(); - disable_e(); - -} - -inline void manage_inactivity(byte debug) { - if( (millis()-previous_millis_cmd) > max_inactive_time ) if(max_inactive_time) kill(); - if( (millis()-previous_millis_cmd) > stepper_inactive_time ) if(stepper_inactive_time) { - disable_x(); - disable_y(); - disable_z(); - disable_e(); - } - check_axes_activity(); -} - -// Planner - -/* - Reasoning behind the mathematics in this module (in the key of 'Mathematica'): - - s == speed, a == acceleration, t == time, d == distance - - Basic definitions: - - Speed[s_, a_, t_] := s + (a*t) - Travel[s_, a_, t_] := Integrate[Speed[s, a, t], t] - - Distance to reach a specific speed with a constant acceleration: - - Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, d, t] - d -> (m^2 - s^2)/(2 a) --> estimate_acceleration_distance() - - Speed after a given distance of travel with constant acceleration: - - Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, m, t] - m -> Sqrt[2 a d + s^2] - - DestinationSpeed[s_, a_, d_] := Sqrt[2 a d + s^2] - - When to start braking (di) to reach a specified destionation speed (s2) after accelerating - from initial speed s1 without ever stopping at a plateau: - - Solve[{DestinationSpeed[s1, a, di] == DestinationSpeed[s2, a, d - di]}, di] - di -> (2 a d - s1^2 + s2^2)/(4 a) --> intersection_distance() - - IntersectionDistance[s1_, s2_, a_, d_] := (2 a d - s1^2 + s2^2)/(4 a) - */ - - -// The number of linear motions that can be in the plan at any give time -#define BLOCK_BUFFER_SIZE 16 -#define BLOCK_BUFFER_MASK 0x0f - -static block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instructions -static volatile unsigned char block_buffer_head; // Index of the next block to be pushed -static volatile unsigned char block_buffer_tail; // Index of the block to process now - -// The current position of the tool in absolute steps -static long position[4]; - -#define ONE_MINUTE_OF_MICROSECONDS 60000000.0 - -// Calculates the distance (not time) it takes to accelerate from initial_rate to target_rate using the -// given acceleration: -inline long estimate_acceleration_distance(long initial_rate, long target_rate, long acceleration) { - return( - (target_rate*target_rate-initial_rate*initial_rate)/ - (2L*acceleration) - ); -} - -// This function gives you the point at which you must start braking (at the rate of -acceleration) if -// you started at speed initial_rate and accelerated until this point and want to end at the final_rate after -// a total travel of distance. This can be used to compute the intersection point between acceleration and -// deceleration in the cases where the trapezoid has no plateau (i.e. never reaches maximum speed) - -inline long intersection_distance(long initial_rate, long final_rate, long acceleration, long distance) { - return( - (2*acceleration*distance-initial_rate*initial_rate+final_rate*final_rate)/ - (4*acceleration) - ); -} - -// Calculates trapezoid parameters so that the entry- and exit-speed is compensated by the provided factors. - -void calculate_trapezoid_for_block(block_t *block, float entry_speed, float exit_speed) { - if(block->busy == true) return; // If block is busy then bail out. - float entry_factor = entry_speed / block->nominal_speed; - float exit_factor = exit_speed / block->nominal_speed; - long initial_rate = ceil(block->nominal_rate*entry_factor); - long final_rate = ceil(block->nominal_rate*exit_factor); - -#ifdef ADVANCE - long initial_advance = block->advance*entry_factor*entry_factor; - long final_advance = block->advance*exit_factor*exit_factor; -#endif // ADVANCE - - // Limit minimal step rate (Otherwise the timer will overflow.) - if(initial_rate <120) initial_rate=120; - if(final_rate < 120) final_rate=120; - - // Calculate the acceleration steps - long acceleration = block->acceleration_st; - long accelerate_steps = estimate_acceleration_distance(initial_rate, block->nominal_rate, acceleration); - long decelerate_steps = estimate_acceleration_distance(final_rate, block->nominal_rate, acceleration); - // Calculate the size of Plateau of Nominal Rate. - long plateau_steps = block->step_event_count-accelerate_steps-decelerate_steps; - - // Is the Plateau of Nominal Rate smaller than nothing? That means no cruising, and we will - // have to use intersection_distance() to calculate when to abort acceleration and start braking - // in order to reach the final_rate exactly at the end of this block. - if (plateau_steps < 0) { - accelerate_steps = intersection_distance(initial_rate, final_rate, acceleration, block->step_event_count); - plateau_steps = 0; - } - - long decelerate_after = accelerate_steps+plateau_steps; - long acceleration_rate = (long)((float)acceleration * 8.388608); - - CRITICAL_SECTION_START; // Fill variables used by the stepper in a critical section - if(block->busy == false) { // Don't update variables if block is busy. - block->accelerate_until = accelerate_steps; - block->decelerate_after = decelerate_after; - block->acceleration_rate = acceleration_rate; - block->initial_rate = initial_rate; - block->final_rate = final_rate; -#ifdef ADVANCE - block->initial_advance = initial_advance; - block->final_advance = final_advance; -#endif ADVANCE - } - CRITICAL_SECTION_END; -} - -// Calculates the maximum allowable speed at this point when you must be able to reach target_velocity using the -// acceleration within the allotted distance. -inline float max_allowable_speed(float acceleration, float target_velocity, float distance) { - return( - sqrt(target_velocity*target_velocity-2*acceleration*60*60*distance) - ); -} - -// "Junction jerk" in this context is the immediate change in speed at the junction of two blocks. -// This method will calculate the junction jerk as the euclidean distance between the nominal -// velocities of the respective blocks. -inline float junction_jerk(block_t *before, block_t *after) { - return(sqrt( - pow((before->speed_x-after->speed_x), 2)+ - pow((before->speed_y-after->speed_y), 2))); -} - -// Return the safe speed which is max_jerk/2, e.g. the -// speed under which you cannot exceed max_jerk no matter what you do. -float safe_speed(block_t *block) { - float safe_speed; - safe_speed = max_xy_jerk/2; - if(abs(block->speed_z) > max_z_jerk/2) safe_speed = max_z_jerk/2; - if (safe_speed > block->nominal_speed) safe_speed = block->nominal_speed; - return safe_speed; -} - -// The kernel called by planner_recalculate() when scanning the plan from last to first entry. -void planner_reverse_pass_kernel(block_t *previous, block_t *current, block_t *next) { - if(!current) { - return; - } - - float entry_speed = current->nominal_speed; - float exit_factor; - float exit_speed; - if (next) { - exit_speed = next->entry_speed; - } - else { - exit_speed = safe_speed(current); - } - - // Calculate the entry_factor for the current block. - if (previous) { - // Reduce speed so that junction_jerk is within the maximum allowed - float jerk = junction_jerk(previous, current); - if((previous->steps_x == 0) && (previous->steps_y == 0)) { - entry_speed = safe_speed(current); - } - else if (jerk > max_xy_jerk) { - entry_speed = (max_xy_jerk/jerk) * entry_speed; - } - if(abs(previous->speed_z - current->speed_z) > max_z_jerk) { - entry_speed = (max_z_jerk/abs(previous->speed_z - current->speed_z)) * entry_speed; - } - // If the required deceleration across the block is too rapid, reduce the entry_factor accordingly. - if (entry_speed > exit_speed) { - float max_entry_speed = max_allowable_speed(-current->acceleration,exit_speed, current->millimeters); - if (max_entry_speed < entry_speed) { - entry_speed = max_entry_speed; - } - } - } - else { - entry_speed = safe_speed(current); - } - // Store result - current->entry_speed = entry_speed; -} - -// planner_recalculate() needs to go over the current plan twice. Once in reverse and once forward. This -// implements the reverse pass. -void planner_reverse_pass() { - char block_index = block_buffer_head; - block_index--; - block_t *block[3] = { NULL, NULL, NULL }; - while(block_index != block_buffer_tail) { - block_index--; - if(block_index < 0) block_index = BLOCK_BUFFER_SIZE-1; - block[2]= block[1]; - block[1]= block[0]; - block[0] = &block_buffer[block_index]; - planner_reverse_pass_kernel(block[0], block[1], block[2]); - } - planner_reverse_pass_kernel(NULL, block[0], block[1]); -} - -// The kernel called by planner_recalculate() when scanning the plan from first to last entry. -void planner_forward_pass_kernel(block_t *previous, block_t *current, block_t *next) { - if(!current) { - return; - } - if(previous) { - // If the previous block is an acceleration block, but it is not long enough to - // complete the full speed change within the block, we need to adjust out entry - // speed accordingly. Remember current->entry_factor equals the exit factor of - // the previous block. - if(previous->entry_speed < current->entry_speed) { - float max_entry_speed = max_allowable_speed(-previous->acceleration, previous->entry_speed, previous->millimeters); - if (max_entry_speed < current->entry_speed) { - current->entry_speed = max_entry_speed; - } - } - } -} - -// planner_recalculate() needs to go over the current plan twice. Once in reverse and once forward. This -// implements the forward pass. -void planner_forward_pass() { - char block_index = block_buffer_tail; - block_t *block[3] = { - NULL, NULL, NULL }; - - while(block_index != block_buffer_head) { - block[0] = block[1]; - block[1] = block[2]; - block[2] = &block_buffer[block_index]; - planner_forward_pass_kernel(block[0],block[1],block[2]); - block_index = (block_index+1) & BLOCK_BUFFER_MASK; - } - planner_forward_pass_kernel(block[1], block[2], NULL); -} - -// Recalculates the trapezoid speed profiles for all blocks in the plan according to the -// entry_factor for each junction. Must be called by planner_recalculate() after -// updating the blocks. -void planner_recalculate_trapezoids() { - char block_index = block_buffer_tail; - block_t *current; - block_t *next = NULL; - while(block_index != block_buffer_head) { - current = next; - next = &block_buffer[block_index]; - if (current) { - calculate_trapezoid_for_block(current, current->entry_speed, next->entry_speed); - } - block_index = (block_index+1) & BLOCK_BUFFER_MASK; - } - calculate_trapezoid_for_block(next, next->entry_speed, safe_speed(next)); -} - -// Recalculates the motion plan according to the following algorithm: -// -// 1. Go over every block in reverse order and calculate a junction speed reduction (i.e. block_t.entry_factor) -// so that: -// a. The junction jerk is within the set limit -// b. No speed reduction within one block requires faster deceleration than the one, true constant -// acceleration. -// 2. Go over every block in chronological order and dial down junction speed reduction values if -// a. The speed increase within one block would require faster accelleration than the one, true -// constant acceleration. -// -// When these stages are complete all blocks have an entry_factor that will allow all speed changes to -// be performed using only the one, true constant acceleration, and where no junction jerk is jerkier than -// the set limit. Finally it will: -// -// 3. Recalculate trapezoids for all blocks. - -void planner_recalculate() { - planner_reverse_pass(); - planner_forward_pass(); - planner_recalculate_trapezoids(); -} - -void plan_init() { - block_buffer_head = 0; - block_buffer_tail = 0; - memset(position, 0, sizeof(position)); // clear position -} - - -inline void plan_discard_current_block() { - if (block_buffer_head != block_buffer_tail) { - block_buffer_tail = (block_buffer_tail + 1) & BLOCK_BUFFER_MASK; - } -} - -inline block_t *plan_get_current_block() { - if (block_buffer_head == block_buffer_tail) { - return(NULL); - } - block_t *block = &block_buffer[block_buffer_tail]; - block->busy = true; - return(block); -} - -void check_axes_activity() { - unsigned char x_active = 0; - unsigned char y_active = 0; - unsigned char z_active = 0; - unsigned char e_active = 0; - block_t *block; - - if(block_buffer_tail != block_buffer_head) { - char block_index = block_buffer_tail; - while(block_index != block_buffer_head) { - block = &block_buffer[block_index]; - if(block->steps_x != 0) x_active++; - if(block->steps_y != 0) y_active++; - if(block->steps_z != 0) z_active++; - if(block->steps_e != 0) e_active++; - block_index = (block_index+1) & BLOCK_BUFFER_MASK; - } - } - if((DISABLE_X) && (x_active == 0)) disable_x(); - if((DISABLE_Y) && (y_active == 0)) disable_y(); - if((DISABLE_Z) && (z_active == 0)) disable_z(); - if((DISABLE_E) && (e_active == 0)) disable_e(); -} - -// Add a new linear movement to the buffer. steps_x, _y and _z is the absolute position in -// mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration -// calculation the caller must also provide the physical length of the line in millimeters. -void plan_buffer_line(float x, float y, float z, float e, float feed_rate) { - // The target position of the tool in absolute steps - // Calculate target position in absolute steps - long target[4]; - target[X_AXIS] = lround(x*axis_steps_per_unit[X_AXIS]); - target[Y_AXIS] = lround(y*axis_steps_per_unit[Y_AXIS]); - target[Z_AXIS] = lround(z*axis_steps_per_unit[Z_AXIS]); - target[E_AXIS] = lround(e*axis_steps_per_unit[E_AXIS]); - - // Calculate the buffer head after we push this byte - int next_buffer_head = (block_buffer_head + 1) & BLOCK_BUFFER_MASK; - - // If the buffer is full: good! That means we are well ahead of the robot. - // Rest here until there is room in the buffer. - while(block_buffer_tail == next_buffer_head) { - manage_heater(); - manage_inactivity(1); - } - - // Prepare to set up new block - block_t *block = &block_buffer[block_buffer_head]; - - // Mark block as not busy (Not executed by the stepper interrupt) - block->busy = false; - - // Number of steps for each axis - block->steps_x = labs(target[X_AXIS]-position[X_AXIS]); - block->steps_y = labs(target[Y_AXIS]-position[Y_AXIS]); - block->steps_z = labs(target[Z_AXIS]-position[Z_AXIS]); - block->steps_e = labs(target[E_AXIS]-position[E_AXIS]); - block->step_event_count = max(block->steps_x, max(block->steps_y, max(block->steps_z, block->steps_e))); - - // Bail if this is a zero-length block - if (block->step_event_count == 0) { - return; - }; - - //enable active axes - if(block->steps_x != 0) enable_x(); - if(block->steps_y != 0) enable_y(); - if(block->steps_z != 0) enable_z(); - if(block->steps_e != 0) enable_e(); - - float delta_x_mm = (target[X_AXIS]-position[X_AXIS])/axis_steps_per_unit[X_AXIS]; - float delta_y_mm = (target[Y_AXIS]-position[Y_AXIS])/axis_steps_per_unit[Y_AXIS]; - float delta_z_mm = (target[Z_AXIS]-position[Z_AXIS])/axis_steps_per_unit[Z_AXIS]; - float delta_e_mm = (target[E_AXIS]-position[E_AXIS])/axis_steps_per_unit[E_AXIS]; - block->millimeters = sqrt(square(delta_x_mm) + square(delta_y_mm) + square(delta_z_mm) + square(delta_e_mm)); - - unsigned long microseconds; - microseconds = lround((block->millimeters/feed_rate)*1000000); - - // Calculate speed in mm/minute for each axis - float multiplier = 60.0*1000000.0/microseconds; - block->speed_z = delta_z_mm * multiplier; - block->speed_x = delta_x_mm * multiplier; - block->speed_y = delta_y_mm * multiplier; - block->speed_e = delta_e_mm * multiplier; - - // Limit speed per axis - float speed_factor = 1; - float tmp_speed_factor; - if(abs(block->speed_x) > max_feedrate[X_AXIS]) { - speed_factor = max_feedrate[X_AXIS] / abs(block->speed_x); - } - if(abs(block->speed_y) > max_feedrate[Y_AXIS]){ - tmp_speed_factor = max_feedrate[Y_AXIS] / abs(block->speed_y); - if(speed_factor > tmp_speed_factor) speed_factor = tmp_speed_factor; - } - if(abs(block->speed_z) > max_feedrate[Z_AXIS]){ - tmp_speed_factor = max_feedrate[Z_AXIS] / abs(block->speed_z); - if(speed_factor > tmp_speed_factor) speed_factor = tmp_speed_factor; - } - if(abs(block->speed_e) > max_feedrate[E_AXIS]){ - tmp_speed_factor = max_feedrate[E_AXIS] / abs(block->speed_e); - if(speed_factor > tmp_speed_factor) speed_factor = tmp_speed_factor; - } - multiplier = multiplier * speed_factor; - block->speed_z = delta_z_mm * multiplier; - block->speed_x = delta_x_mm * multiplier; - block->speed_y = delta_y_mm * multiplier; - block->speed_e = delta_e_mm * multiplier; - block->nominal_speed = block->millimeters * multiplier; - block->nominal_rate = ceil(block->step_event_count * multiplier / 60); - - if(block->nominal_rate < 120) block->nominal_rate = 120; - block->entry_speed = safe_speed(block); - - // Compute the acceleration rate for the trapezoid generator. - float travel_per_step = block->millimeters/block->step_event_count; - if(block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0) { - block->acceleration_st = ceil( (retract_acceleration)/travel_per_step); // convert to: acceleration steps/sec^2 - } - else { - block->acceleration_st = ceil( (acceleration)/travel_per_step); // convert to: acceleration steps/sec^2 - // Limit acceleration per axis - if((block->acceleration_st * block->steps_x / block->step_event_count) > axis_steps_per_sqr_second[X_AXIS]) - block->acceleration_st = axis_steps_per_sqr_second[X_AXIS]; - if((block->acceleration_st * block->steps_y / block->step_event_count) > axis_steps_per_sqr_second[Y_AXIS]) - block->acceleration_st = axis_steps_per_sqr_second[Y_AXIS]; - if((block->acceleration_st * block->steps_e / block->step_event_count) > axis_steps_per_sqr_second[E_AXIS]) - block->acceleration_st = axis_steps_per_sqr_second[E_AXIS]; - if(((block->acceleration_st / block->step_event_count) * block->steps_z ) > axis_steps_per_sqr_second[Z_AXIS]) - block->acceleration_st = axis_steps_per_sqr_second[Z_AXIS]; - } - block->acceleration = block->acceleration_st * travel_per_step; - -#ifdef ADVANCE - // Calculate advance rate - if((block->steps_e == 0) || (block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0)) { - block->advance_rate = 0; - block->advance = 0; - } - else { - long acc_dist = estimate_acceleration_distance(0, block->nominal_rate, block->acceleration_st); - float advance = (STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K) * - (block->speed_e * block->speed_e * EXTRUTION_AREA * EXTRUTION_AREA / 3600.0)*65536; - block->advance = advance; - if(acc_dist == 0) { - block->advance_rate = 0; - } - else { - block->advance_rate = advance / (float)acc_dist; - } - } - -#endif // ADVANCE - - // compute a preliminary conservative acceleration trapezoid - float safespeed = safe_speed(block); - calculate_trapezoid_for_block(block, safespeed, safespeed); - - // Compute direction bits for this block - block->direction_bits = 0; - if (target[X_AXIS] < position[X_AXIS]) { - block->direction_bits |= (1<direction_bits |= (1<direction_bits |= (1<direction_bits |= (1<> 16 -// uses: -// r26 to store 0 -// r27 to store the byte 1 of the 24 bit result -#define MultiU16X8toH16(intRes, charIn1, intIn2) \ -asm volatile ( \ -"clr r26 \n\t" \ -"mul %A1, %B2 \n\t" \ -"movw %A0, r0 \n\t" \ -"mul %A1, %A2 \n\t" \ -"add %A0, r1 \n\t" \ -"adc %B0, r26 \n\t" \ -"lsr r0 \n\t" \ -"adc %A0, r26 \n\t" \ -"adc %B0, r26 \n\t" \ -"clr r1 \n\t" \ -: \ -"=&r" (intRes) \ -: \ -"d" (charIn1), \ -"d" (intIn2) \ -: \ -"r26" \ -) - -// intRes = longIn1 * longIn2 >> 24 -// uses: -// r26 to store 0 -// r27 to store the byte 1 of the 48bit result -#define MultiU24X24toH16(intRes, longIn1, longIn2) \ -asm volatile ( \ -"clr r26 \n\t" \ -"mul %A1, %B2 \n\t" \ -"mov r27, r1 \n\t" \ -"mul %B1, %C2 \n\t" \ -"movw %A0, r0 \n\t" \ -"mul %C1, %C2 \n\t" \ -"add %B0, r0 \n\t" \ -"mul %C1, %B2 \n\t" \ -"add %A0, r0 \n\t" \ -"adc %B0, r1 \n\t" \ -"mul %A1, %C2 \n\t" \ -"add r27, r0 \n\t" \ -"adc %A0, r1 \n\t" \ -"adc %B0, r26 \n\t" \ -"mul %B1, %B2 \n\t" \ -"add r27, r0 \n\t" \ -"adc %A0, r1 \n\t" \ -"adc %B0, r26 \n\t" \ -"mul %C1, %A2 \n\t" \ -"add r27, r0 \n\t" \ -"adc %A0, r1 \n\t" \ -"adc %B0, r26 \n\t" \ -"mul %B1, %A2 \n\t" \ -"add r27, r1 \n\t" \ -"adc %A0, r26 \n\t" \ -"adc %B0, r26 \n\t" \ -"lsr r27 \n\t" \ -"adc %A0, r26 \n\t" \ -"adc %B0, r26 \n\t" \ -"clr r1 \n\t" \ -: \ -"=&r" (intRes) \ -: \ -"d" (longIn1), \ -"d" (longIn2) \ -: \ -"r26" , "r27" \ -) - -// Some useful constants - -#define ENABLE_STEPPER_DRIVER_INTERRUPT() TIMSK1 |= (1< -// -// The trapezoid is the shape the speed curve over time. It starts at block->initial_rate, accelerates -// first block->accelerate_until step_events_completed, then keeps going at constant speed until -// step_events_completed reaches block->decelerate_after after which it decelerates until the trapezoid generator is reset. -// The slope of acceleration is calculated with the leib ramp alghorithm. - -void st_wake_up() { - // TCNT1 = 0; - ENABLE_STEPPER_DRIVER_INTERRUPT(); -} - -inline unsigned short calc_timer(unsigned short step_rate) { - unsigned short timer; - if(step_rate < 32) step_rate = 32; - step_rate -= 32; // Correct for minimal speed - if(step_rate >= (8*256)){ // higher step rate - unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate>>8)][0]; - unsigned char tmp_step_rate = (step_rate & 0x00ff); - unsigned short gain = (unsigned short)pgm_read_word_near(table_address+2); - MultiU16X8toH16(timer, tmp_step_rate, gain); - timer = (unsigned short)pgm_read_word_near(table_address) - timer; - } - else { // lower step rates - unsigned short table_address = (unsigned short)&speed_lookuptable_slow[0][0]; - table_address += ((step_rate)>>1) & 0xfffc; - timer = (unsigned short)pgm_read_word_near(table_address); - timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3); - } - if(timer < 100) timer = 100; - return timer; -} - -// Initializes the trapezoid generator from the current block. Called whenever a new -// block begins. -inline void trapezoid_generator_reset() { - accelerate_until = current_block->accelerate_until; - decelerate_after = current_block->decelerate_after; - acceleration_rate = current_block->acceleration_rate; - initial_rate = current_block->initial_rate; - final_rate = current_block->final_rate; - nominal_rate = current_block->nominal_rate; - advance = current_block->initial_advance; - final_advance = current_block->final_advance; - deceleration_time = 0; - advance_rate = current_block->advance_rate; - - // step_rate to timer interval - acc_step_rate = initial_rate; - acceleration_time = calc_timer(acc_step_rate); - OCR1A = acceleration_time; -} - -// "The Stepper Driver Interrupt" - This timer interrupt is the workhorse. -// It pops blocks from the block_buffer and executes them by pulsing the stepper pins appropriately. -ISR(TIMER1_COMPA_vect) -{ - if(busy){ /*Serial.println("BUSY")*/; - return; - } // The busy-flag is used to avoid reentering this interrupt - - busy = true; - sei(); // Re enable interrupts (normally disabled while inside an interrupt handler) - - // If there is no current block, attempt to pop one from the buffer - if (current_block == NULL) { - // Anything in the buffer? - current_block = plan_get_current_block(); - if (current_block != NULL) { - trapezoid_generator_reset(); - counter_x = -(current_block->step_event_count >> 1); - counter_y = counter_x; - counter_z = counter_x; - counter_e = counter_x; - step_events_completed = 0; - e_steps = 0; - } - else { - DISABLE_STEPPER_DRIVER_INTERRUPT(); - } - } - - if (current_block != NULL) { - // Set directions TO DO This should be done once during init of trapezoid. Endstops -> interrupt - out_bits = current_block->direction_bits; - -#ifdef ADVANCE - // Calculate E early. - counter_e += current_block->steps_e; - if (counter_e > 0) { - counter_e -= current_block->step_event_count; - if ((out_bits & (1<> 16) - old_advance); - CRITICAL_SECTION_END; - old_advance = advance >> 16; -#endif //ADVANCE - - // Set direction en check limit switches - if ((out_bits & (1<step_event_count; - } - } - else // +direction - WRITE(X_DIR_PIN,!INVERT_X_DIR); - - if ((out_bits & (1<step_event_count; - } - } - else // +direction - WRITE(Y_DIR_PIN,!INVERT_Y_DIR); - - if ((out_bits & (1<step_event_count; - } - } - else // +direction - WRITE(Z_DIR_PIN,!INVERT_Z_DIR); - -#ifndef ADVANCE - if ((out_bits & (1<steps_x; - if (counter_x > 0) { - WRITE(X_STEP_PIN, HIGH); - counter_x -= current_block->step_event_count; - WRITE(X_STEP_PIN, LOW); - } - - counter_y += current_block->steps_y; - if (counter_y > 0) { - WRITE(Y_STEP_PIN, HIGH); - counter_y -= current_block->step_event_count; - WRITE(Y_STEP_PIN, LOW); - } - - counter_z += current_block->steps_z; - if (counter_z > 0) { - WRITE(Z_STEP_PIN, HIGH); - counter_z -= current_block->step_event_count; - WRITE(Z_STEP_PIN, LOW); - } - -#ifndef ADVANCE - counter_e += current_block->steps_e; - if (counter_e > 0) { - WRITE(E_STEP_PIN, HIGH); - counter_e -= current_block->step_event_count; - WRITE(E_STEP_PIN, LOW); - } -#endif //!ADVANCE - - // Calculare new timer value - unsigned short timer; - unsigned short step_rate; - if (step_events_completed < accelerate_until) { - MultiU24X24toH16(acc_step_rate, acceleration_time, acceleration_rate); - acc_step_rate += initial_rate; - - // upper limit - if(acc_step_rate > nominal_rate) - acc_step_rate = nominal_rate; - - // step_rate to timer interval - timer = calc_timer(acc_step_rate); - advance += advance_rate; - acceleration_time += timer; - OCR1A = timer; - } - else if (step_events_completed >= decelerate_after) { - MultiU24X24toH16(step_rate, deceleration_time, acceleration_rate); - - if(step_rate > acc_step_rate) { // Check step_rate stays positive - step_rate = final_rate; - } - else { - step_rate = acc_step_rate - step_rate; // Decelerate from aceleration end point. - } - - // lower limit - if(step_rate < final_rate) - step_rate = final_rate; - - // step_rate to timer interval - timer = calc_timer(step_rate); -#ifdef ADVANCE - advance -= advance_rate; - if(advance < final_advance) - advance = final_advance; -#endif //ADVANCE - deceleration_time += timer; - OCR1A = timer; - } - // If current block is finished, reset pointer - step_events_completed += 1; - if (step_events_completed >= current_block->step_event_count) { - current_block = NULL; - plan_discard_current_block(); - } - } - busy=false; -} - -#ifdef ADVANCE - -unsigned char old_OCR0A; -// Timer interrupt for E. e_steps is set in the main routine; -// Timer 0 is shared with millies -ISR(TIMER0_COMPA_vect) -{ - // Critical section needed because Timer 1 interrupt has higher priority. - // The pin set functions are placed on trategic position to comply with the stepper driver timing. - WRITE(E_STEP_PIN, LOW); - // Set E direction (Depends on E direction + advance) - if (e_steps < 0) { - WRITE(E_DIR_PIN,INVERT_E_DIR); - e_steps++; - WRITE(E_STEP_PIN, HIGH); - } - if (e_steps > 0) { - WRITE(E_DIR_PIN,!INVERT_E_DIR); - e_steps--; - WRITE(E_STEP_PIN, HIGH); - } - old_OCR0A += 25; // 10kHz interrupt - OCR0A = old_OCR0A; -} -#endif // ADVANCE - -void st_init() -{ - // waveform generation = 0100 = CTC - TCCR1B &= ~(1<= 16) - { - current_raw = 16383 - raw_temp_value; - temp_meas_ready = true; - temp_count = 0; - raw_temp_value = 0; -#ifdef MAXTEMP - if(current_raw >= maxttemp) { - target_raw = 0; -#ifdef PIDTEMP - OCR2B = 0; -#else - WRITE(HEATER_0_PIN,LOW); -#endif //PIDTEMP - } -#endif //MAXTEMP -#ifdef MINTEMP - if(current_raw <= minttemp) { - target_raw = 0; -#ifdef PIDTEMP - OCR2B = 0; -#else - WRITE(HEATER_0_PIN,LOW); -#endif //PIDTEMP - } -#endif //MAXTEMP -#ifndef PIDTEMP - if(current_raw >= target_raw) - { - WRITE(HEATER_0_PIN,LOW); - } - else - { - WRITE(HEATER_0_PIN,HIGH); - } -#endif //PIDTEMP - } -} - - diff --git a/Marlin/MarlinSerial.cpp b/Marlin/MarlinSerial.cpp new file mode 100644 index 000000000..7aef2291d --- /dev/null +++ b/Marlin/MarlinSerial.cpp @@ -0,0 +1,294 @@ +/* + HardwareSerial.cpp - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul +*/ + +#include "Marlin.h" +#include "MarlinSerial.h" + +#ifndef AT90USB +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a UART +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#if UART_PRESENT(SERIAL_PORT) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; +#endif + +FORCE_INLINE void store_char(unsigned char c) { + int i = (unsigned int)(rx_buffer.head + 1) % RX_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != rx_buffer.tail) { + rx_buffer.buffer[rx_buffer.head] = c; + rx_buffer.head = i; + } +} + + +//#elif defined(SIG_USART_RECV) +#if defined(M_USARTx_RX_vect) + // fixed by Mark Sproul this is on the 644/644p + //SIGNAL(SIG_USART_RECV) + SIGNAL(M_USARTx_RX_vect) { + unsigned char c = M_UDRx; + store_char(c); + } +#endif + +// Constructors //////////////////////////////////////////////////////////////// + +MarlinSerial::MarlinSerial() { } + +// Public Methods ////////////////////////////////////////////////////////////// + +void MarlinSerial::begin(long baud) { + uint16_t baud_setting; + bool useU2X = true; + + #if F_CPU == 16000000UL && SERIAL_PORT == 0 + // hard-coded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + useU2X = false; + } + #endif + + if (useU2X) { + M_UCSRxA = 1 << M_U2Xx; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + M_UCSRxA = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + M_UBRRxH = baud_setting >> 8; + M_UBRRxL = baud_setting; + + sbi(M_UCSRxB, M_RXENx); + sbi(M_UCSRxB, M_TXENx); + sbi(M_UCSRxB, M_RXCIEx); +} + +void MarlinSerial::end() { + cbi(M_UCSRxB, M_RXENx); + cbi(M_UCSRxB, M_TXENx); + cbi(M_UCSRxB, M_RXCIEx); +} + + +int MarlinSerial::peek(void) { + if (rx_buffer.head == rx_buffer.tail) { + return -1; + } else { + return rx_buffer.buffer[rx_buffer.tail]; + } +} + +int MarlinSerial::read(void) { + // if the head isn't ahead of the tail, we don't have any characters + if (rx_buffer.head == rx_buffer.tail) { + return -1; + } + else { + unsigned char c = rx_buffer.buffer[rx_buffer.tail]; + rx_buffer.tail = (unsigned int)(rx_buffer.tail + 1) % RX_BUFFER_SIZE; + return c; + } +} + +void MarlinSerial::flush() { + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // were full, not empty. + rx_buffer.head = rx_buffer.tail; +} + + +/// imports from print.h + + +void MarlinSerial::print(char c, int base) { + print((long) c, base); +} + +void MarlinSerial::print(unsigned char b, int base) { + print((unsigned long) b, base); +} + +void MarlinSerial::print(int n, int base) { + print((long) n, base); +} + +void MarlinSerial::print(unsigned int n, int base) { + print((unsigned long) n, base); +} + +void MarlinSerial::print(long n, int base) { + if (base == 0) { + write(n); + } + else if (base == 10) { + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); + } else { + printNumber(n, base); + } +} + +void MarlinSerial::print(unsigned long n, int base) { + if (base == 0) write(n); + else printNumber(n, base); +} + +void MarlinSerial::print(double n, int digits) { + printFloat(n, digits); +} + +void MarlinSerial::println(void) { + print('\r'); + print('\n'); +} + +void MarlinSerial::println(const String &s) { + print(s); + println(); +} + +void MarlinSerial::println(const char c[]) { + print(c); + println(); +} + +void MarlinSerial::println(char c, int base) { + print(c, base); + println(); +} + +void MarlinSerial::println(unsigned char b, int base) { + print(b, base); + println(); +} + +void MarlinSerial::println(int n, int base) { + print(n, base); + println(); +} + +void MarlinSerial::println(unsigned int n, int base) { + print(n, base); + println(); +} + +void MarlinSerial::println(long n, int base) { + print(n, base); + println(); +} + +void MarlinSerial::println(unsigned long n, int base) { + print(n, base); + println(); +} + +void MarlinSerial::println(double n, int digits) { + print(n, digits); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void MarlinSerial::printNumber(unsigned long n, uint8_t base) { + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); +} + +void MarlinSerial::printFloat(double number, uint8_t digits) { + // Handle negative numbers + if (number < 0.0) { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i = 0; i < digits; ++i) + rounding /= 10.0; + + number += rounding; + + // Extract the integer part of the number and print it + unsigned long int_part = (unsigned long)number; + double remainder = number - (double)int_part; + print(int_part); + + // Print the decimal point, but only if there are digits beyond + if (digits > 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} +// Preinstantiate Objects ////////////////////////////////////////////////////// + + +MarlinSerial MSerial; + +#endif // whole file +#endif // !AT90USB + +// For AT90USB targets use the UART for BT interfacing +#if defined(AT90USB) && defined (BTENABLED) + HardwareSerial bt; +#endif + diff --git a/Marlin/MarlinSerial.h b/Marlin/MarlinSerial.h new file mode 100644 index 000000000..f836872b8 --- /dev/null +++ b/Marlin/MarlinSerial.h @@ -0,0 +1,160 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul +*/ + +#ifndef MarlinSerial_h +#define MarlinSerial_h +#include "Marlin.h" + +#ifndef SERIAL_PORT + #define SERIAL_PORT 0 +#endif + +// The presence of the UBRRH register is used to detect a UART. +#define UART_PRESENT(port) ((port == 0 && (defined(UBRRH) || defined(UBRR0H))) || \ + (port == 1 && defined(UBRR1H)) || (port == 2 && defined(UBRR2H)) || \ + (port == 3 && defined(UBRR3H))) + +// These are macros to build serial port register names for the selected SERIAL_PORT (C preprocessor +// requires two levels of indirection to expand macro values properly) +#define SERIAL_REGNAME(registerbase,number,suffix) SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) +#if SERIAL_PORT == 0 && (!defined(UBRR0H) || !defined(UDR0)) // use un-numbered registers if necessary + #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##suffix +#else + #define SERIAL_REGNAME_INTERNAL(registerbase,number,suffix) registerbase##number##suffix +#endif + +// Registers used by MarlinSerial class (these are expanded +// depending on selected serial port +#define M_UCSRxA SERIAL_REGNAME(UCSR,SERIAL_PORT,A) // defines M_UCSRxA to be UCSRnA where n is the serial port number +#define M_UCSRxB SERIAL_REGNAME(UCSR,SERIAL_PORT,B) +#define M_RXENx SERIAL_REGNAME(RXEN,SERIAL_PORT,) +#define M_TXENx SERIAL_REGNAME(TXEN,SERIAL_PORT,) +#define M_RXCIEx SERIAL_REGNAME(RXCIE,SERIAL_PORT,) +#define M_UDREx SERIAL_REGNAME(UDRE,SERIAL_PORT,) +#define M_UDRx SERIAL_REGNAME(UDR,SERIAL_PORT,) +#define M_UBRRxH SERIAL_REGNAME(UBRR,SERIAL_PORT,H) +#define M_UBRRxL SERIAL_REGNAME(UBRR,SERIAL_PORT,L) +#define M_RXCx SERIAL_REGNAME(RXC,SERIAL_PORT,) +#define M_USARTx_RX_vect SERIAL_REGNAME(USART,SERIAL_PORT,_RX_vect) +#define M_U2Xx SERIAL_REGNAME(U2X,SERIAL_PORT,) + + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + + +#ifndef AT90USB +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which rx_buffer_head is the index of the +// location to which to write the next incoming character and rx_buffer_tail +// is the index of the location from which to read. +#define RX_BUFFER_SIZE 128 + + +struct ring_buffer { + unsigned char buffer[RX_BUFFER_SIZE]; + int head; + int tail; +}; + +#if UART_PRESENT(SERIAL_PORT) + extern ring_buffer rx_buffer; +#endif + +class MarlinSerial { //: public Stream + + public: + MarlinSerial(); + void begin(long); + void end(); + int peek(void); + int read(void); + void flush(void); + + FORCE_INLINE int available(void) { + return (unsigned int)(RX_BUFFER_SIZE + rx_buffer.head - rx_buffer.tail) % RX_BUFFER_SIZE; + } + + FORCE_INLINE void write(uint8_t c) { + while (!((M_UCSRxA) & (1 << M_UDREx))) + ; + + M_UDRx = c; + } + + FORCE_INLINE void checkRx(void) { + if ((M_UCSRxA & (1<. + */ + +/* + This firmware is a mashup between Sprinter and grbl. + (https://github.com/kliment/Sprinter) + (https://github.com/simen/grbl/tree) + + It has preliminary support for Matthew Roberts advance algorithm + http://reprap.org/pipermail/reprap-dev/2011-May/003323.html + */ + +#include "Marlin.h" + +#ifdef ENABLE_AUTO_BED_LEVELING +#include "vector_3.h" + #ifdef AUTO_BED_LEVELING_GRID + #include "qr_solve.h" + #endif +#endif // ENABLE_AUTO_BED_LEVELING + +#include "ultralcd.h" +#include "planner.h" +#include "stepper.h" +#include "temperature.h" +#include "motion_control.h" +#include "cardreader.h" +#include "watchdog.h" +#include "ConfigurationStore.h" +#include "language.h" +#include "pins_arduino.h" +#include "math.h" + +#ifdef BLINKM + #include "BlinkM.h" + #include "Wire.h" +#endif + +#if NUM_SERVOS > 0 + #include "Servo.h" +#endif + +#if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 + #include +#endif + +// look here for descriptions of G-codes: http://linuxcnc.org/handbook/gcode/g-code.html +// http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes + +//Implemented Codes +//------------------- +// G0 -> G1 +// G1 - Coordinated Movement X Y Z E +// G2 - CW ARC +// G3 - CCW ARC +// G4 - Dwell S or P +// G10 - retract filament according to settings of M207 +// G11 - retract recover filament according to settings of M208 +// G28 - Home all Axis +// G29 - Detailed Z-Probe, probes the bed at 3 or more points. Will fail if you haven't homed yet. +// G30 - Single Z Probe, probes bed at current XY location. +// G31 - Dock sled (Z_PROBE_SLED only) +// G32 - Undock sled (Z_PROBE_SLED only) +// G90 - Use Absolute Coordinates +// G91 - Use Relative Coordinates +// G92 - Set current position to coordinates given + +// M Codes +// M0 - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled) +// M1 - Same as M0 +// M17 - Enable/Power all stepper motors +// M18 - Disable all stepper motors; same as M84 +// M20 - List SD card +// M21 - Init SD card +// M22 - Release SD card +// M23 - Select SD file (M23 filename.g) +// M24 - Start/resume SD print +// M25 - Pause SD print +// M26 - Set SD position in bytes (M26 S12345) +// M27 - Report SD print status +// M28 - Start SD write (M28 filename.g) +// M29 - Stop SD write +// M30 - Delete file from SD (M30 filename.g) +// M31 - Output time since last M109 or SD card start to serial +// M32 - Select file and start SD print (Can be used _while_ printing from SD card files): +// syntax "M32 /path/filename#", or "M32 S !filename#" +// Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include). +// The '#' is necessary when calling from within sd files, as it stops buffer prereading +// M42 - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used. +// M80 - Turn on Power Supply +// M81 - Turn off Power Supply +// M82 - Set E codes absolute (default) +// M83 - Set E codes relative while in Absolute Coordinates (G90) mode +// M84 - Disable steppers until next move, +// or use S to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout. +// M85 - Set inactivity shutdown timer with parameter S. To disable set zero (default) +// M92 - Set axis_steps_per_unit - same syntax as G92 +// M104 - Set extruder target temp +// M105 - Read current temp +// M106 - Fan on +// M107 - Fan off +// M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating +// Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling +// IF AUTOTEMP is enabled, S B F. Exit autotemp by any M109 without F +// M112 - Emergency stop +// M114 - Output current position to serial port +// M115 - Capabilities string +// M117 - display message +// M119 - Output Endstop status to serial port +// M126 - Solenoid Air Valve Open (BariCUDA support by jmil) +// M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil) +// M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil) +// M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil) +// M140 - Set bed target temp +// M150 - Set BlinkM Color Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work. +// M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating +// Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling +// M200 D- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). +// M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) +// M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!! +// M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec +// M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) in mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate +// M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk +// M206 - Set additional homing offset +// M207 - Set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting +// M208 - Set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec] +// M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction. +// M218 - Set hotend offset (in mm): T X Y +// M220 S- set speed factor override percentage +// M221 S- set extrude factor override percentage +// M226 P S- Wait until the specified pin reaches the state required +// M240 - Trigger a camera to take a photograph +// M250 - Set LCD contrast C (value 0..63) +// M280 - Set servo position absolute. P: servo index, S: angle or microseconds +// M300 - Play beep sound S P +// M301 - Set PID parameters P I and D +// M302 - Allow cold extrudes, or set the minimum extrude S. +// M303 - PID relay autotune S sets the target temperature. (default target temperature = 150C) +// M304 - Set bed PID parameters P I and D +// M380 - Activate solenoid on active extruder +// M381 - Disable all solenoids +// M400 - Finish all moves +// M401 - Lower z-probe if present +// M402 - Raise z-probe if present +// M404 - N Enter the nominal filament width (3mm, 1.75mm ) or will display nominal filament width without parameters +// M405 - Turn on Filament Sensor extrusion control. Optional D to set delay in centimeters between sensor and extruder +// M406 - Turn off Filament Sensor extrusion control +// M407 - Displays measured filament diameter +// M500 - Store parameters in EEPROM +// M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - Revert to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +// M503 - Print the current settings (from memory not from EEPROM). Use S0 to leave off headings. +// M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED) +// M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] +// M665 - Set delta configurations +// M666 - Set delta endstop adjustment +// M605 - Set dual x-carriage movement mode: S [ X R ] +// M907 - Set digital trimpot motor current using axis codes. +// M908 - Control digital trimpot directly. +// M350 - Set microstepping mode. +// M351 - Toggle MS1 MS2 pins directly. + +// ************ SCARA Specific - This can change to suit future G-code regulations +// M360 - SCARA calibration: Move to cal-position ThetaA (0 deg calibration) +// M361 - SCARA calibration: Move to cal-position ThetaB (90 deg calibration - steps per degree) +// M362 - SCARA calibration: Move to cal-position PsiA (0 deg calibration) +// M363 - SCARA calibration: Move to cal-position PsiB (90 deg calibration - steps per degree) +// M364 - SCARA calibration: Move to cal-position PSIC (90 deg to Theta calibration position) +// M365 - SCARA calibration: Scaling factor, X, Y, Z axis +//************* SCARA End *************** + +// M928 - Start SD logging (M928 filename.g) - ended by M29 +// M999 - Restart after being stopped by error + +#ifdef SDSUPPORT + CardReader card; +#endif + +float homing_feedrate[] = HOMING_FEEDRATE; +bool axis_relative_modes[] = AXIS_RELATIVE_MODES; +int feedmultiply = 100; //100->1 200->2 +int saved_feedmultiply; +int extrudemultiply = 100; //100->1 200->2 +int extruder_multiply[EXTRUDERS] = { 100 + #if EXTRUDERS > 1 + , 100 + #if EXTRUDERS > 2 + , 100 + #if EXTRUDERS > 3 + , 100 + #endif + #endif + #endif +}; +bool volumetric_enabled = false; +float filament_size[EXTRUDERS] = { DEFAULT_NOMINAL_FILAMENT_DIA + #if EXTRUDERS > 1 + , DEFAULT_NOMINAL_FILAMENT_DIA + #if EXTRUDERS > 2 + , DEFAULT_NOMINAL_FILAMENT_DIA + #if EXTRUDERS > 3 + , DEFAULT_NOMINAL_FILAMENT_DIA + #endif + #endif + #endif +}; +float volumetric_multiplier[EXTRUDERS] = {1.0 + #if EXTRUDERS > 1 + , 1.0 + #if EXTRUDERS > 2 + , 1.0 + #if EXTRUDERS > 3 + , 1.0 + #endif + #endif + #endif +}; +float current_position[NUM_AXIS] = { 0.0, 0.0, 0.0, 0.0 }; +float add_homing[3] = { 0, 0, 0 }; +#ifdef DELTA + float endstop_adj[3] = { 0, 0, 0 }; +#endif + +float min_pos[3] = { X_MIN_POS, Y_MIN_POS, Z_MIN_POS }; +float max_pos[3] = { X_MAX_POS, Y_MAX_POS, Z_MAX_POS }; +bool axis_known_position[3] = { false, false, false }; +float zprobe_zoffset; + +// Extruder offset +#if EXTRUDERS > 1 +#ifndef DUAL_X_CARRIAGE + #define NUM_EXTRUDER_OFFSETS 2 // only in XY plane +#else + #define NUM_EXTRUDER_OFFSETS 3 // supports offsets in XYZ plane +#endif +float extruder_offset[NUM_EXTRUDER_OFFSETS][EXTRUDERS] = { + #if defined(EXTRUDER_OFFSET_X) + EXTRUDER_OFFSET_X + #else + 0 + #endif + , + #if defined(EXTRUDER_OFFSET_Y) + EXTRUDER_OFFSET_Y + #else + 0 + #endif +}; +#endif + +uint8_t active_extruder = 0; +int fanSpeed = 0; + +#ifdef SERVO_ENDSTOPS + int servo_endstops[] = SERVO_ENDSTOPS; + int servo_endstop_angles[] = SERVO_ENDSTOP_ANGLES; +#endif + +#ifdef BARICUDA + int ValvePressure = 0; + int EtoPPressure = 0; +#endif + +#ifdef FWRETRACT + + bool autoretract_enabled = false; + bool retracted[EXTRUDERS] = { false + #if EXTRUDERS > 1 + , false + #if EXTRUDERS > 2 + , false + #if EXTRUDERS > 3 + , false + #endif + #endif + #endif + }; + bool retracted_swap[EXTRUDERS] = { false + #if EXTRUDERS > 1 + , false + #if EXTRUDERS > 2 + , false + #if EXTRUDERS > 3 + , false + #endif + #endif + #endif + }; + + float retract_length = RETRACT_LENGTH; + float retract_length_swap = RETRACT_LENGTH_SWAP; + float retract_feedrate = RETRACT_FEEDRATE; + float retract_zlift = RETRACT_ZLIFT; + float retract_recover_length = RETRACT_RECOVER_LENGTH; + float retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP; + float retract_recover_feedrate = RETRACT_RECOVER_FEEDRATE; + +#endif // FWRETRACT + +#ifdef ULTIPANEL + bool powersupply = + #ifdef PS_DEFAULT_OFF + false + #else + true + #endif + ; +#endif + +#ifdef DELTA + float delta[3] = { 0, 0, 0 }; + #define SIN_60 0.8660254037844386 + #define COS_60 0.5 + // these are the default values, can be overriden with M665 + float delta_radius = DELTA_RADIUS; + float delta_tower1_x = -SIN_60 * delta_radius; // front left tower + float delta_tower1_y = -COS_60 * delta_radius; + float delta_tower2_x = SIN_60 * delta_radius; // front right tower + float delta_tower2_y = -COS_60 * delta_radius; + float delta_tower3_x = 0; // back middle tower + float delta_tower3_y = delta_radius; + float delta_diagonal_rod = DELTA_DIAGONAL_ROD; + float delta_diagonal_rod_2 = sq(delta_diagonal_rod); + float delta_segments_per_second = DELTA_SEGMENTS_PER_SECOND; +#endif + +#ifdef SCARA + float axis_scaling[3] = { 1, 1, 1 }; // Build size scaling, default to 1 +#endif + +bool cancel_heatup = false; + +#ifdef FILAMENT_SENSOR + //Variables for Filament Sensor input + float filament_width_nominal=DEFAULT_NOMINAL_FILAMENT_DIA; //Set nominal filament width, can be changed with M404 + bool filament_sensor=false; //M405 turns on filament_sensor control, M406 turns it off + float filament_width_meas=DEFAULT_MEASURED_FILAMENT_DIA; //Stores the measured filament diameter + signed char measurement_delay[MAX_MEASUREMENT_DELAY+1]; //ring buffer to delay measurement store extruder factor after subtracting 100 + int delay_index1=0; //index into ring buffer + int delay_index2=-1; //index into ring buffer - set to -1 on startup to indicate ring buffer needs to be initialized + float delay_dist=0; //delay distance counter + int meas_delay_cm = MEASUREMENT_DELAY_CM; //distance delay setting +#endif + +const char errormagic[] PROGMEM = "Error:"; +const char echomagic[] PROGMEM = "echo:"; + +const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'}; +static float destination[NUM_AXIS] = { 0, 0, 0, 0 }; + +#ifndef DELTA + static float delta[3] = { 0, 0, 0 }; +#endif + +static float offset[3] = { 0, 0, 0 }; +static bool home_all_axis = true; +static float feedrate = 1500.0, next_feedrate, saved_feedrate; +static long gcode_N, gcode_LastN, Stopped_gcode_LastN = 0; + +static bool relative_mode = false; //Determines Absolute or Relative Coordinates + +static char cmdbuffer[BUFSIZE][MAX_CMD_SIZE]; +static bool fromsd[BUFSIZE]; +static int bufindr = 0; +static int bufindw = 0; +static int buflen = 0; + +static char serial_char; +static int serial_count = 0; +static boolean comment_mode = false; +static char *strchr_pointer; ///< A pointer to find chars in the command string (X, Y, Z, E, etc.) + +const char* queued_commands_P= NULL; /* pointer to the current line in the active sequence of commands, or NULL when none */ + +const int sensitive_pins[] = SENSITIVE_PINS; ///< Sensitive pin list for M42 + +// Inactivity shutdown +static unsigned long previous_millis_cmd = 0; +static unsigned long max_inactive_time = 0; +static unsigned long stepper_inactive_time = DEFAULT_STEPPER_DEACTIVE_TIME*1000l; + +unsigned long starttime = 0; ///< Print job start time +unsigned long stoptime = 0; ///< Print job stop time + +static uint8_t tmp_extruder; + + +bool Stopped = false; + +#if NUM_SERVOS > 0 + Servo servos[NUM_SERVOS]; +#endif + +bool CooldownNoWait = true; +bool target_direction; + +#ifdef CHDK + unsigned long chdkHigh = 0; + boolean chdkActive = false; +#endif + +//=========================================================================== +//=============================Routines====================================== +//=========================================================================== + +void get_arc_coordinates(); +bool setTargetedHotend(int code); + +void serial_echopair_P(const char *s_P, float v) + { serialprintPGM(s_P); SERIAL_ECHO(v); } +void serial_echopair_P(const char *s_P, double v) + { serialprintPGM(s_P); SERIAL_ECHO(v); } +void serial_echopair_P(const char *s_P, unsigned long v) + { serialprintPGM(s_P); SERIAL_ECHO(v); } + +#ifdef SDSUPPORT + #include "SdFatUtil.h" + int freeMemory() { return SdFatUtil::FreeRam(); } +#else + extern "C" { + extern unsigned int __bss_end; + extern unsigned int __heap_start; + extern void *__brkval; + + int freeMemory() { + int free_memory; + + if ((int)__brkval == 0) + free_memory = ((int)&free_memory) - ((int)&__bss_end); + else + free_memory = ((int)&free_memory) - ((int)__brkval); + + return free_memory; + } + } +#endif //!SDSUPPORT + +//Injects the next command from the pending sequence of commands, when possible +//Return false if and only if no command was pending +static bool drain_queued_commands_P() +{ + char cmd[30]; + if(!queued_commands_P) + return false; + // Get the next 30 chars from the sequence of gcodes to run + strncpy_P(cmd, queued_commands_P, sizeof(cmd)-1); + cmd[sizeof(cmd)-1]= 0; + // Look for the end of line, or the end of sequence + size_t i= 0; + char c; + while( (c= cmd[i]) && c!='\n' ) + ++i; // look for the end of this gcode command + cmd[i]= 0; + if(enquecommand(cmd)) // buffer was not full (else we will retry later) + { + if(c) + queued_commands_P+= i+1; // move to next command + else + queued_commands_P= NULL; // will have no more commands in the sequence + } + return true; +} + +//Record one or many commands to run from program memory. +//Aborts the current queue, if any. +//Note: drain_queued_commands_P() must be called repeatedly to drain the commands afterwards +void enquecommands_P(const char* pgcode) +{ + queued_commands_P= pgcode; + drain_queued_commands_P(); // first command exectuted asap (when possible) +} + +//adds a single command to the main command buffer, from RAM +//that is really done in a non-safe way. +//needs overworking someday +//Returns false if it failed to do so +bool enquecommand(const char *cmd) +{ + if(*cmd==';') + return false; + if(buflen >= BUFSIZE) + return false; + //this is dangerous if a mixing of serial and this happens + strcpy(&(cmdbuffer[bufindw][0]),cmd); + SERIAL_ECHO_START; + SERIAL_ECHOPGM(MSG_Enqueing); + SERIAL_ECHO(cmdbuffer[bufindw]); + SERIAL_ECHOLNPGM("\""); + bufindw= (bufindw + 1)%BUFSIZE; + buflen += 1; + return true; +} + + + +void setup_killpin() +{ + #if defined(KILL_PIN) && KILL_PIN > -1 + SET_INPUT(KILL_PIN); + WRITE(KILL_PIN,HIGH); + #endif +} + +// Set home pin +void setup_homepin(void) +{ +#if defined(HOME_PIN) && HOME_PIN > -1 + SET_INPUT(HOME_PIN); + WRITE(HOME_PIN,HIGH); +#endif +} + + +void setup_photpin() +{ + #if defined(PHOTOGRAPH_PIN) && PHOTOGRAPH_PIN > -1 + OUT_WRITE(PHOTOGRAPH_PIN, LOW); + #endif +} + +void setup_powerhold() +{ + #if defined(SUICIDE_PIN) && SUICIDE_PIN > -1 + OUT_WRITE(SUICIDE_PIN, HIGH); + #endif + #if defined(PS_ON_PIN) && PS_ON_PIN > -1 + #if defined(PS_DEFAULT_OFF) + OUT_WRITE(PS_ON_PIN, PS_ON_ASLEEP); + #else + OUT_WRITE(PS_ON_PIN, PS_ON_AWAKE); + #endif + #endif +} + +void suicide() +{ + #if defined(SUICIDE_PIN) && SUICIDE_PIN > -1 + OUT_WRITE(SUICIDE_PIN, LOW); + #endif +} + +void servo_init() +{ + #if (NUM_SERVOS >= 1) && defined(SERVO0_PIN) && (SERVO0_PIN > -1) + servos[0].attach(SERVO0_PIN); + #endif + #if (NUM_SERVOS >= 2) && defined(SERVO1_PIN) && (SERVO1_PIN > -1) + servos[1].attach(SERVO1_PIN); + #endif + #if (NUM_SERVOS >= 3) && defined(SERVO2_PIN) && (SERVO2_PIN > -1) + servos[2].attach(SERVO2_PIN); + #endif + #if (NUM_SERVOS >= 4) && defined(SERVO3_PIN) && (SERVO3_PIN > -1) + servos[3].attach(SERVO3_PIN); + #endif + #if (NUM_SERVOS >= 5) + #error "TODO: enter initalisation code for more servos" + #endif + + // Set position of Servo Endstops that are defined + #ifdef SERVO_ENDSTOPS + for(int8_t i = 0; i < 3; i++) + { + if(servo_endstops[i] > -1) { + servos[servo_endstops[i]].write(servo_endstop_angles[i * 2 + 1]); + } + } + #endif + + #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + delay(PROBE_SERVO_DEACTIVATION_DELAY); + servos[servo_endstops[Z_AXIS]].detach(); + #endif +} + + +void setup() +{ + setup_killpin(); + setup_powerhold(); + MYSERIAL.begin(BAUDRATE); + SERIAL_PROTOCOLLNPGM("start"); + SERIAL_ECHO_START; + + // Check startup - does nothing if bootloader sets MCUSR to 0 + byte mcu = MCUSR; + if(mcu & 1) SERIAL_ECHOLNPGM(MSG_POWERUP); + if(mcu & 2) SERIAL_ECHOLNPGM(MSG_EXTERNAL_RESET); + if(mcu & 4) SERIAL_ECHOLNPGM(MSG_BROWNOUT_RESET); + if(mcu & 8) SERIAL_ECHOLNPGM(MSG_WATCHDOG_RESET); + if(mcu & 32) SERIAL_ECHOLNPGM(MSG_SOFTWARE_RESET); + MCUSR=0; + + SERIAL_ECHOPGM(MSG_MARLIN); + SERIAL_ECHOLNPGM(STRING_VERSION); + #ifdef STRING_VERSION_CONFIG_H + #ifdef STRING_CONFIG_H_AUTHOR + SERIAL_ECHO_START; + SERIAL_ECHOPGM(MSG_CONFIGURATION_VER); + SERIAL_ECHOPGM(STRING_VERSION_CONFIG_H); + SERIAL_ECHOPGM(MSG_AUTHOR); + SERIAL_ECHOLNPGM(STRING_CONFIG_H_AUTHOR); + SERIAL_ECHOPGM("Compiled: "); + SERIAL_ECHOLNPGM(__DATE__); + #endif // STRING_CONFIG_H_AUTHOR + #endif // STRING_VERSION_CONFIG_H + SERIAL_ECHO_START; + SERIAL_ECHOPGM(MSG_FREE_MEMORY); + SERIAL_ECHO(freeMemory()); + SERIAL_ECHOPGM(MSG_PLANNER_BUFFER_BYTES); + SERIAL_ECHOLN((int)sizeof(block_t)*BLOCK_BUFFER_SIZE); + for(int8_t i = 0; i < BUFSIZE; i++) + { + fromsd[i] = false; + } + + // loads data from EEPROM if available else uses defaults (and resets step acceleration rate) + Config_RetrieveSettings(); + + tp_init(); // Initialize temperature loop + plan_init(); // Initialize planner; + watchdog_init(); + st_init(); // Initialize stepper, this enables interrupts! + setup_photpin(); + servo_init(); + + + lcd_init(); + _delay_ms(1000); // wait 1sec to display the splash screen + + #if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1 + SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan + #endif + + #ifdef DIGIPOT_I2C + digipot_i2c_init(); + #endif +#ifdef Z_PROBE_SLED + pinMode(SERVO0_PIN, OUTPUT); + digitalWrite(SERVO0_PIN, LOW); // turn it off +#endif // Z_PROBE_SLED + setup_homepin(); + +#ifdef STAT_LED_RED + pinMode(STAT_LED_RED, OUTPUT); + digitalWrite(STAT_LED_RED, LOW); // turn it off +#endif +#ifdef STAT_LED_BLUE + pinMode(STAT_LED_BLUE, OUTPUT); + digitalWrite(STAT_LED_BLUE, LOW); // turn it off +#endif +} + + +void loop() +{ + if(buflen < (BUFSIZE-1)) + get_command(); + #ifdef SDSUPPORT + card.checkautostart(false); + #endif + if(buflen) + { + #ifdef SDSUPPORT + if(card.saving) + { + if(strstr_P(cmdbuffer[bufindr], PSTR("M29")) == NULL) + { + card.write_command(cmdbuffer[bufindr]); + if(card.logging) + { + process_commands(); + } + else + { + SERIAL_PROTOCOLLNPGM(MSG_OK); + } + } + else + { + card.closefile(); + SERIAL_PROTOCOLLNPGM(MSG_FILE_SAVED); + } + } + else + { + process_commands(); + } + #else + process_commands(); + #endif //SDSUPPORT + buflen = (buflen-1); + bufindr = (bufindr + 1)%BUFSIZE; + } + //check heater every n milliseconds + manage_heater(); + manage_inactivity(); + checkHitEndstops(); + lcd_update(); +} + +void get_command() +{ + if(drain_queued_commands_P()) // priority is given to non-serial commands + return; + + while( MYSERIAL.available() > 0 && buflen < BUFSIZE) { + serial_char = MYSERIAL.read(); + if(serial_char == '\n' || + serial_char == '\r' || + (serial_char == ':' && comment_mode == false) || + serial_count >= (MAX_CMD_SIZE - 1) ) + { + if(!serial_count) { //if empty line + comment_mode = false; //for new command + return; + } + cmdbuffer[bufindw][serial_count] = 0; //terminate string + if(!comment_mode){ + comment_mode = false; //for new command + fromsd[bufindw] = false; + if(strchr(cmdbuffer[bufindw], 'N') != NULL) + { + strchr_pointer = strchr(cmdbuffer[bufindw], 'N'); + gcode_N = (strtol(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL, 10)); + if(gcode_N != gcode_LastN+1 && (strstr_P(cmdbuffer[bufindw], PSTR("M110")) == NULL) ) { + SERIAL_ERROR_START; + SERIAL_ERRORPGM(MSG_ERR_LINE_NO); + SERIAL_ERRORLN(gcode_LastN); + //Serial.println(gcode_N); + FlushSerialRequestResend(); + serial_count = 0; + return; + } + + if(strchr(cmdbuffer[bufindw], '*') != NULL) + { + byte checksum = 0; + byte count = 0; + while(cmdbuffer[bufindw][count] != '*') checksum = checksum^cmdbuffer[bufindw][count++]; + strchr_pointer = strchr(cmdbuffer[bufindw], '*'); + + if( (int)(strtod(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL)) != checksum) { + SERIAL_ERROR_START; + SERIAL_ERRORPGM(MSG_ERR_CHECKSUM_MISMATCH); + SERIAL_ERRORLN(gcode_LastN); + FlushSerialRequestResend(); + serial_count = 0; + return; + } + //if no errors, continue parsing + } + else + { + SERIAL_ERROR_START; + SERIAL_ERRORPGM(MSG_ERR_NO_CHECKSUM); + SERIAL_ERRORLN(gcode_LastN); + FlushSerialRequestResend(); + serial_count = 0; + return; + } + + gcode_LastN = gcode_N; + //if no errors, continue parsing + } + else // if we don't receive 'N' but still see '*' + { + if((strchr(cmdbuffer[bufindw], '*') != NULL)) + { + SERIAL_ERROR_START; + SERIAL_ERRORPGM(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM); + SERIAL_ERRORLN(gcode_LastN); + serial_count = 0; + return; + } + } + if((strchr(cmdbuffer[bufindw], 'G') != NULL)){ + strchr_pointer = strchr(cmdbuffer[bufindw], 'G'); + switch((int)((strtod(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL)))){ + case 0: + case 1: + case 2: + case 3: + if (Stopped == true) { + SERIAL_ERRORLNPGM(MSG_ERR_STOPPED); + LCD_MESSAGEPGM(MSG_STOPPED); + } + break; + default: + break; + } + + } + + //If command was e-stop process now + if(strcmp(cmdbuffer[bufindw], "M112") == 0) + kill(); + + bufindw = (bufindw + 1)%BUFSIZE; + buflen += 1; + } + serial_count = 0; //clear buffer + } + else + { + if(serial_char == ';') comment_mode = true; + if(!comment_mode) cmdbuffer[bufindw][serial_count++] = serial_char; + } + } + #ifdef SDSUPPORT + if(!card.sdprinting || serial_count!=0){ + return; + } + + //'#' stops reading from SD to the buffer prematurely, so procedural macro calls are possible + // if it occurs, stop_buffering is triggered and the buffer is ran dry. + // this character _can_ occur in serial com, due to checksums. however, no checksums are used in SD printing + + static bool stop_buffering=false; + if(buflen==0) stop_buffering=false; + + while( !card.eof() && buflen < BUFSIZE && !stop_buffering) { + int16_t n=card.get(); + serial_char = (char)n; + if(serial_char == '\n' || + serial_char == '\r' || + (serial_char == '#' && comment_mode == false) || + (serial_char == ':' && comment_mode == false) || + serial_count >= (MAX_CMD_SIZE - 1)||n==-1) + { + if(card.eof()){ + SERIAL_PROTOCOLLNPGM(MSG_FILE_PRINTED); + stoptime=millis(); + char time[30]; + unsigned long t=(stoptime-starttime)/1000; + int hours, minutes; + minutes=(t/60)%60; + hours=t/60/60; + sprintf_P(time, PSTR("%i hours %i minutes"),hours, minutes); + SERIAL_ECHO_START; + SERIAL_ECHOLN(time); + lcd_setstatus(time); + card.printingHasFinished(); + card.checkautostart(true); + + } + if(serial_char=='#') + stop_buffering=true; + + if(!serial_count) + { + comment_mode = false; //for new command + return; //if empty line + } + cmdbuffer[bufindw][serial_count] = 0; //terminate string +// if(!comment_mode){ + fromsd[bufindw] = true; + buflen += 1; + bufindw = (bufindw + 1)%BUFSIZE; +// } + comment_mode = false; //for new command + serial_count = 0; //clear buffer + } + else + { + if(serial_char == ';') comment_mode = true; + if(!comment_mode) cmdbuffer[bufindw][serial_count++] = serial_char; + } + } + + #endif //SDSUPPORT + +} + + +float code_value() +{ + return (strtod(&cmdbuffer[bufindr][strchr_pointer - cmdbuffer[bufindr] + 1], NULL)); +} + +long code_value_long() +{ + return (strtol(&cmdbuffer[bufindr][strchr_pointer - cmdbuffer[bufindr] + 1], NULL, 10)); +} + +bool code_seen(char code) +{ + strchr_pointer = strchr(cmdbuffer[bufindr], code); + return (strchr_pointer != NULL); //Return True if a character was found +} + +#define DEFINE_PGM_READ_ANY(type, reader) \ + static inline type pgm_read_any(const type *p) \ + { return pgm_read_##reader##_near(p); } + +DEFINE_PGM_READ_ANY(float, float); +DEFINE_PGM_READ_ANY(signed char, byte); + +#define XYZ_CONSTS_FROM_CONFIG(type, array, CONFIG) \ +static const PROGMEM type array##_P[3] = \ + { X_##CONFIG, Y_##CONFIG, Z_##CONFIG }; \ +static inline type array(int axis) \ + { return pgm_read_any(&array##_P[axis]); } + +XYZ_CONSTS_FROM_CONFIG(float, base_min_pos, MIN_POS); +XYZ_CONSTS_FROM_CONFIG(float, base_max_pos, MAX_POS); +XYZ_CONSTS_FROM_CONFIG(float, base_home_pos, HOME_POS); +XYZ_CONSTS_FROM_CONFIG(float, max_length, MAX_LENGTH); +XYZ_CONSTS_FROM_CONFIG(float, home_retract_mm, HOME_RETRACT_MM); +XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR); + +#ifdef DUAL_X_CARRIAGE + #if EXTRUDERS == 1 || defined(COREXY) \ + || !defined(X2_ENABLE_PIN) || !defined(X2_STEP_PIN) || !defined(X2_DIR_PIN) \ + || !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) \ + || !defined(X_MAX_PIN) || X_MAX_PIN < 0 + #error "Missing or invalid definitions for DUAL_X_CARRIAGE mode." + #endif + #if X_HOME_DIR != -1 || X2_HOME_DIR != 1 + #error "Please use canonical x-carriage assignment" // the x-carriages are defined by their homing directions + #endif + +#define DXC_FULL_CONTROL_MODE 0 +#define DXC_AUTO_PARK_MODE 1 +#define DXC_DUPLICATION_MODE 2 +static int dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE; + +static float x_home_pos(int extruder) { + if (extruder == 0) + return base_home_pos(X_AXIS) + add_homing[X_AXIS]; + else + // In dual carriage mode the extruder offset provides an override of the + // second X-carriage offset when homed - otherwise X2_HOME_POS is used. + // This allow soft recalibration of the second extruder offset position without firmware reflash + // (through the M218 command). + return (extruder_offset[X_AXIS][1] > 0) ? extruder_offset[X_AXIS][1] : X2_HOME_POS; +} + +static int x_home_dir(int extruder) { + return (extruder == 0) ? X_HOME_DIR : X2_HOME_DIR; +} + +static float inactive_extruder_x_pos = X2_MAX_POS; // used in mode 0 & 1 +static bool active_extruder_parked = false; // used in mode 1 & 2 +static float raised_parked_position[NUM_AXIS]; // used in mode 1 +static unsigned long delayed_move_time = 0; // used in mode 1 +static float duplicate_extruder_x_offset = DEFAULT_DUPLICATION_X_OFFSET; // used in mode 2 +static float duplicate_extruder_temp_offset = 0; // used in mode 2 +bool extruder_duplication_enabled = false; // used in mode 2 +#endif //DUAL_X_CARRIAGE + +static void axis_is_at_home(int axis) { +#ifdef DUAL_X_CARRIAGE + if (axis == X_AXIS) { + if (active_extruder != 0) { + current_position[X_AXIS] = x_home_pos(active_extruder); + min_pos[X_AXIS] = X2_MIN_POS; + max_pos[X_AXIS] = max(extruder_offset[X_AXIS][1], X2_MAX_POS); + return; + } + else if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && active_extruder == 0) { + current_position[X_AXIS] = base_home_pos(X_AXIS) + add_homing[X_AXIS]; + min_pos[X_AXIS] = base_min_pos(X_AXIS) + add_homing[X_AXIS]; + max_pos[X_AXIS] = min(base_max_pos(X_AXIS) + add_homing[X_AXIS], + max(extruder_offset[X_AXIS][1], X2_MAX_POS) - duplicate_extruder_x_offset); + return; + } + } +#endif +#ifdef SCARA + float homeposition[3]; + char i; + + if (axis < 2) + { + + for (i=0; i<3; i++) + { + homeposition[i] = base_home_pos(i); + } + // SERIAL_ECHOPGM("homeposition[x]= "); SERIAL_ECHO(homeposition[0]); + // SERIAL_ECHOPGM("homeposition[y]= "); SERIAL_ECHOLN(homeposition[1]); + // Works out real Homeposition angles using inverse kinematics, + // and calculates homing offset using forward kinematics + calculate_delta(homeposition); + + // SERIAL_ECHOPGM("base Theta= "); SERIAL_ECHO(delta[X_AXIS]); + // SERIAL_ECHOPGM(" base Psi+Theta="); SERIAL_ECHOLN(delta[Y_AXIS]); + + for (i=0; i<2; i++) + { + delta[i] -= add_homing[i]; + } + + // SERIAL_ECHOPGM("addhome X="); SERIAL_ECHO(add_homing[X_AXIS]); + // SERIAL_ECHOPGM(" addhome Y="); SERIAL_ECHO(add_homing[Y_AXIS]); + // SERIAL_ECHOPGM(" addhome Theta="); SERIAL_ECHO(delta[X_AXIS]); + // SERIAL_ECHOPGM(" addhome Psi+Theta="); SERIAL_ECHOLN(delta[Y_AXIS]); + + calculate_SCARA_forward_Transform(delta); + + // SERIAL_ECHOPGM("Delta X="); SERIAL_ECHO(delta[X_AXIS]); + // SERIAL_ECHOPGM(" Delta Y="); SERIAL_ECHOLN(delta[Y_AXIS]); + + current_position[axis] = delta[axis]; + + // SCARA home positions are based on configuration since the actual limits are determined by the + // inverse kinematic transform. + min_pos[axis] = base_min_pos(axis); // + (delta[axis] - base_home_pos(axis)); + max_pos[axis] = base_max_pos(axis); // + (delta[axis] - base_home_pos(axis)); + } + else + { + current_position[axis] = base_home_pos(axis) + add_homing[axis]; + min_pos[axis] = base_min_pos(axis) + add_homing[axis]; + max_pos[axis] = base_max_pos(axis) + add_homing[axis]; + } +#else + current_position[axis] = base_home_pos(axis) + add_homing[axis]; + min_pos[axis] = base_min_pos(axis) + add_homing[axis]; + max_pos[axis] = base_max_pos(axis) + add_homing[axis]; +#endif +} + +#ifdef ENABLE_AUTO_BED_LEVELING +#ifdef AUTO_BED_LEVELING_GRID +static void set_bed_level_equation_lsq(double *plane_equation_coefficients) +{ + vector_3 planeNormal = vector_3(-plane_equation_coefficients[0], -plane_equation_coefficients[1], 1); + planeNormal.debug("planeNormal"); + plan_bed_level_matrix = matrix_3x3::create_look_at(planeNormal); + //bedLevel.debug("bedLevel"); + + //plan_bed_level_matrix.debug("bed level before"); + //vector_3 uncorrected_position = plan_get_position_mm(); + //uncorrected_position.debug("position before"); + + vector_3 corrected_position = plan_get_position(); +// corrected_position.debug("position after"); + current_position[X_AXIS] = corrected_position.x; + current_position[Y_AXIS] = corrected_position.y; + current_position[Z_AXIS] = corrected_position.z; + + // put the bed at 0 so we don't go below it. + current_position[Z_AXIS] = zprobe_zoffset; // in the lsq we reach here after raising the extruder due to the loop structure + + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); +} + +#else // not AUTO_BED_LEVELING_GRID + +static void set_bed_level_equation_3pts(float z_at_pt_1, float z_at_pt_2, float z_at_pt_3) { + + plan_bed_level_matrix.set_to_identity(); + + vector_3 pt1 = vector_3(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, z_at_pt_1); + vector_3 pt2 = vector_3(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, z_at_pt_2); + vector_3 pt3 = vector_3(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, z_at_pt_3); + + vector_3 from_2_to_1 = (pt1 - pt2).get_normal(); + vector_3 from_2_to_3 = (pt3 - pt2).get_normal(); + vector_3 planeNormal = vector_3::cross(from_2_to_1, from_2_to_3).get_normal(); + planeNormal = vector_3(planeNormal.x, planeNormal.y, abs(planeNormal.z)); + + plan_bed_level_matrix = matrix_3x3::create_look_at(planeNormal); + + vector_3 corrected_position = plan_get_position(); + current_position[X_AXIS] = corrected_position.x; + current_position[Y_AXIS] = corrected_position.y; + current_position[Z_AXIS] = corrected_position.z; + + // put the bed at 0 so we don't go below it. + current_position[Z_AXIS] = zprobe_zoffset; + + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + +} + +#endif // AUTO_BED_LEVELING_GRID + +static void run_z_probe() { + plan_bed_level_matrix.set_to_identity(); + feedrate = homing_feedrate[Z_AXIS]; + + // move down until you find the bed + float zPosition = -10; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + // we have to let the planner know where we are right now as it is not where we said to go. + zPosition = st_get_position_mm(Z_AXIS); + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS]); + + // move up the retract distance + zPosition += home_retract_mm(Z_AXIS); + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + // move back down slowly to find bed + feedrate = homing_feedrate[Z_AXIS]/4; + zPosition -= home_retract_mm(Z_AXIS) * 2; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + current_position[Z_AXIS] = st_get_position_mm(Z_AXIS); + // make sure the planner knows where we are as it may be a bit different than we last said to move to + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); +} + +static void do_blocking_move_to(float x, float y, float z) { + float oldFeedRate = feedrate; + + feedrate = homing_feedrate[Z_AXIS]; + + current_position[Z_AXIS] = z; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + feedrate = XY_TRAVEL_SPEED; + + current_position[X_AXIS] = x; + current_position[Y_AXIS] = y; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + feedrate = oldFeedRate; +} + +static void do_blocking_move_relative(float offset_x, float offset_y, float offset_z) { + do_blocking_move_to(current_position[X_AXIS] + offset_x, current_position[Y_AXIS] + offset_y, current_position[Z_AXIS] + offset_z); +} + +static void setup_for_endstop_move() { + saved_feedrate = feedrate; + saved_feedmultiply = feedmultiply; + feedmultiply = 100; + previous_millis_cmd = millis(); + + enable_endstops(true); +} + +static void clean_up_after_endstop_move() { +#ifdef ENDSTOPS_ONLY_FOR_HOMING + enable_endstops(false); +#endif + + feedrate = saved_feedrate; + feedmultiply = saved_feedmultiply; + previous_millis_cmd = millis(); +} + +static void engage_z_probe() { + // Engage Z Servo endstop if enabled + #ifdef SERVO_ENDSTOPS + if (servo_endstops[Z_AXIS] > -1) { +#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + servos[servo_endstops[Z_AXIS]].attach(0); +#endif + servos[servo_endstops[Z_AXIS]].write(servo_endstop_angles[Z_AXIS * 2]); +#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + delay(PROBE_SERVO_DEACTIVATION_DELAY); + servos[servo_endstops[Z_AXIS]].detach(); +#endif + } + #endif +} + +static void retract_z_probe() { + // Retract Z Servo endstop if enabled + #ifdef SERVO_ENDSTOPS + if (servo_endstops[Z_AXIS] > -1) { +#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + servos[servo_endstops[Z_AXIS]].attach(0); +#endif + servos[servo_endstops[Z_AXIS]].write(servo_endstop_angles[Z_AXIS * 2 + 1]); +#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + delay(PROBE_SERVO_DEACTIVATION_DELAY); + servos[servo_endstops[Z_AXIS]].detach(); +#endif + } + #endif +} + +/// Probe bed height at position (x,y), returns the measured z value +static float probe_pt(float x, float y, float z_before, int retract_action=0) { + // move to right place + do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_before); + do_blocking_move_to(x - X_PROBE_OFFSET_FROM_EXTRUDER, y - Y_PROBE_OFFSET_FROM_EXTRUDER, current_position[Z_AXIS]); + +#ifndef Z_PROBE_SLED + if ((retract_action==0) || (retract_action==1)) + engage_z_probe(); // Engage Z Servo endstop if available +#endif // Z_PROBE_SLED + run_z_probe(); + float measured_z = current_position[Z_AXIS]; +#ifndef Z_PROBE_SLED + if ((retract_action==0) || (retract_action==3)) + retract_z_probe(); +#endif // Z_PROBE_SLED + + SERIAL_PROTOCOLPGM(MSG_BED); + SERIAL_PROTOCOLPGM(" x: "); + SERIAL_PROTOCOL(x); + SERIAL_PROTOCOLPGM(" y: "); + SERIAL_PROTOCOL(y); + SERIAL_PROTOCOLPGM(" z: "); + SERIAL_PROTOCOL(measured_z); + SERIAL_PROTOCOLPGM("\n"); + return measured_z; +} + +#endif // #ifdef ENABLE_AUTO_BED_LEVELING + +static void homeaxis(int axis) { +#define HOMEAXIS_DO(LETTER) \ + ((LETTER##_MIN_PIN > -1 && LETTER##_HOME_DIR==-1) || (LETTER##_MAX_PIN > -1 && LETTER##_HOME_DIR==1)) + + if (axis==X_AXIS ? HOMEAXIS_DO(X) : + axis==Y_AXIS ? HOMEAXIS_DO(Y) : + axis==Z_AXIS ? HOMEAXIS_DO(Z) : + 0) { + int axis_home_dir = home_dir(axis); +#ifdef DUAL_X_CARRIAGE + if (axis == X_AXIS) + axis_home_dir = x_home_dir(active_extruder); +#endif + + current_position[axis] = 0; + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + + +#ifndef Z_PROBE_SLED + // Engage Servo endstop if enabled + #ifdef SERVO_ENDSTOPS + #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + if (axis==Z_AXIS) { + engage_z_probe(); + } + else + #endif + if (servo_endstops[axis] > -1) { + servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2]); + } + #endif +#endif // Z_PROBE_SLED + destination[axis] = 1.5 * max_length(axis) * axis_home_dir; + feedrate = homing_feedrate[axis]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + current_position[axis] = 0; + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[axis] = -home_retract_mm(axis) * axis_home_dir; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + destination[axis] = 2*home_retract_mm(axis) * axis_home_dir; +#ifdef DELTA + feedrate = homing_feedrate[axis]/10; +#else + feedrate = homing_feedrate[axis]/2 ; +#endif + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); +#ifdef DELTA + // retrace by the amount specified in endstop_adj + if (endstop_adj[axis] * axis_home_dir < 0) { + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[axis] = endstop_adj[axis]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + } +#endif + axis_is_at_home(axis); + destination[axis] = current_position[axis]; + feedrate = 0.0; + endstops_hit_on_purpose(); + axis_known_position[axis] = true; + + // Retract Servo endstop if enabled + #ifdef SERVO_ENDSTOPS + if (servo_endstops[axis] > -1) { + servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]); + } + #endif +#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + #ifndef Z_PROBE_SLED + if (axis==Z_AXIS) retract_z_probe(); + #endif +#endif + + } +} +#define HOMEAXIS(LETTER) homeaxis(LETTER##_AXIS) + +void refresh_cmd_timeout(void) +{ + previous_millis_cmd = millis(); +} + +#ifdef FWRETRACT + void retract(bool retracting, bool swapretract = false) { + if(retracting && !retracted[active_extruder]) { + destination[X_AXIS]=current_position[X_AXIS]; + destination[Y_AXIS]=current_position[Y_AXIS]; + destination[Z_AXIS]=current_position[Z_AXIS]; + destination[E_AXIS]=current_position[E_AXIS]; + if (swapretract) { + current_position[E_AXIS]+=retract_length_swap/volumetric_multiplier[active_extruder]; + } else { + current_position[E_AXIS]+=retract_length/volumetric_multiplier[active_extruder]; + } + plan_set_e_position(current_position[E_AXIS]); + float oldFeedrate = feedrate; + feedrate=retract_feedrate*60; + retracted[active_extruder]=true; + prepare_move(); + if(retract_zlift > 0.01) { + current_position[Z_AXIS]-=retract_zlift; +#ifdef DELTA + calculate_delta(current_position); // change cartesian kinematic to delta kinematic; + plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]); +#else + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); +#endif + prepare_move(); + } + feedrate = oldFeedrate; + } else if(!retracting && retracted[active_extruder]) { + destination[X_AXIS]=current_position[X_AXIS]; + destination[Y_AXIS]=current_position[Y_AXIS]; + destination[Z_AXIS]=current_position[Z_AXIS]; + destination[E_AXIS]=current_position[E_AXIS]; + if(retract_zlift > 0.01) { + current_position[Z_AXIS]+=retract_zlift; +#ifdef DELTA + calculate_delta(current_position); // change cartesian kinematic to delta kinematic; + plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]); +#else + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); +#endif + //prepare_move(); + } + if (swapretract) { + current_position[E_AXIS]-=(retract_length_swap+retract_recover_length_swap)/volumetric_multiplier[active_extruder]; + } else { + current_position[E_AXIS]-=(retract_length+retract_recover_length)/volumetric_multiplier[active_extruder]; + } + plan_set_e_position(current_position[E_AXIS]); + float oldFeedrate = feedrate; + feedrate=retract_recover_feedrate*60; + retracted[active_extruder]=false; + prepare_move(); + feedrate = oldFeedrate; + } + } //retract +#endif //FWRETRACT + +#ifdef Z_PROBE_SLED +// +// Method to dock/undock a sled designed by Charles Bell. +// +// dock[in] If true, move to MAX_X and engage the electromagnet +// offset[in] The additional distance to move to adjust docking location +// +static void dock_sled(bool dock, int offset=0) { + int z_loc; + + if (!((axis_known_position[X_AXIS]) && (axis_known_position[Y_AXIS]))) { + LCD_MESSAGEPGM(MSG_POSITION_UNKNOWN); + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_POSITION_UNKNOWN); + return; + } + + if (dock) { + do_blocking_move_to(X_MAX_POS + SLED_DOCKING_OFFSET + offset, + current_position[Y_AXIS], + current_position[Z_AXIS]); + // turn off magnet + digitalWrite(SERVO0_PIN, LOW); + } else { + if (current_position[Z_AXIS] < (Z_RAISE_BEFORE_PROBING + 5)) + z_loc = Z_RAISE_BEFORE_PROBING; + else + z_loc = current_position[Z_AXIS]; + do_blocking_move_to(X_MAX_POS + SLED_DOCKING_OFFSET + offset, + Y_PROBE_OFFSET_FROM_EXTRUDER, z_loc); + // turn on magnet + digitalWrite(SERVO0_PIN, HIGH); + } +} +#endif + +void process_commands() +{ + unsigned long codenum; //throw away variable + char *starpos = NULL; +#ifdef ENABLE_AUTO_BED_LEVELING + float x_tmp, y_tmp, z_tmp, real_z; +#endif + if(code_seen('G')) + { + switch((int)code_value()) + { + case 0: // G0 -> G1 + case 1: // G1 + if(Stopped == false) { + get_coordinates(); // For X Y Z E F + #ifdef FWRETRACT + if(autoretract_enabled) + if( !(code_seen('X') || code_seen('Y') || code_seen('Z')) && code_seen('E')) { + float echange=destination[E_AXIS]-current_position[E_AXIS]; + if((echange<-MIN_RETRACT && !retracted) || (echange>MIN_RETRACT && retracted)) { //move appears to be an attempt to retract or recover + current_position[E_AXIS] = destination[E_AXIS]; //hide the slicer-generated retract/recover from calculations + plan_set_e_position(current_position[E_AXIS]); //AND from the planner + retract(!retracted); + return; + } + } + #endif //FWRETRACT + prepare_move(); + //ClearToSend(); + } + break; +#ifndef SCARA //disable arc support + case 2: // G2 - CW ARC + if(Stopped == false) { + get_arc_coordinates(); + prepare_arc_move(true); + } + break; + case 3: // G3 - CCW ARC + if(Stopped == false) { + get_arc_coordinates(); + prepare_arc_move(false); + } + break; +#endif + case 4: // G4 dwell + LCD_MESSAGEPGM(MSG_DWELL); + codenum = 0; + if(code_seen('P')) codenum = code_value(); // milliseconds to wait + if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait + + st_synchronize(); + codenum += millis(); // keep track of when we started waiting + previous_millis_cmd = millis(); + while(millis() < codenum) { + manage_heater(); + manage_inactivity(); + lcd_update(); + } + break; + #ifdef FWRETRACT + case 10: // G10 retract + #if EXTRUDERS > 1 + retracted_swap[active_extruder]=(code_seen('S') && code_value_long() == 1); // checks for swap retract argument + retract(true,retracted_swap[active_extruder]); + #else + retract(true); + #endif + break; + case 11: // G11 retract_recover + #if EXTRUDERS > 1 + retract(false,retracted_swap[active_extruder]); + #else + retract(false); + #endif + break; + #endif //FWRETRACT + case 28: //G28 Home all Axis one at a time +#ifdef ENABLE_AUTO_BED_LEVELING + plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data) +#endif //ENABLE_AUTO_BED_LEVELING + + saved_feedrate = feedrate; + saved_feedmultiply = feedmultiply; + feedmultiply = 100; + previous_millis_cmd = millis(); + + enable_endstops(true); + + for(int8_t i=0; i < NUM_AXIS; i++) { + destination[i] = current_position[i]; + } + feedrate = 0.0; + +#ifdef DELTA + // A delta can only safely home all axis at the same time + // all axis have to home at the same time + + // Move all carriages up together until the first endstop is hit. + current_position[X_AXIS] = 0; + current_position[Y_AXIS] = 0; + current_position[Z_AXIS] = 0; + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + + destination[X_AXIS] = 3 * Z_MAX_LENGTH; + destination[Y_AXIS] = 3 * Z_MAX_LENGTH; + destination[Z_AXIS] = 3 * Z_MAX_LENGTH; + feedrate = 1.732 * homing_feedrate[X_AXIS]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + endstops_hit_on_purpose(); + + current_position[X_AXIS] = destination[X_AXIS]; + current_position[Y_AXIS] = destination[Y_AXIS]; + current_position[Z_AXIS] = destination[Z_AXIS]; + + // take care of back off and rehome now we are all at the top + HOMEAXIS(X); + HOMEAXIS(Y); + HOMEAXIS(Z); + + calculate_delta(current_position); + plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]); + +#else // NOT DELTA + + home_all_axis = !((code_seen(axis_codes[X_AXIS])) || (code_seen(axis_codes[Y_AXIS])) || (code_seen(axis_codes[Z_AXIS]))); + + #if Z_HOME_DIR > 0 // If homing away from BED do Z first + if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) { + HOMEAXIS(Z); + } + #endif + + #ifdef QUICK_HOME + if((home_all_axis)||( code_seen(axis_codes[X_AXIS]) && code_seen(axis_codes[Y_AXIS])) ) //first diagonal move + { + current_position[X_AXIS] = 0;current_position[Y_AXIS] = 0; + + #ifndef DUAL_X_CARRIAGE + int x_axis_home_dir = home_dir(X_AXIS); + #else + int x_axis_home_dir = x_home_dir(active_extruder); + extruder_duplication_enabled = false; + #endif + + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[X_AXIS] = 1.5 * max_length(X_AXIS) * x_axis_home_dir;destination[Y_AXIS] = 1.5 * max_length(Y_AXIS) * home_dir(Y_AXIS); + feedrate = homing_feedrate[X_AXIS]; + if(homing_feedrate[Y_AXIS] max_length(Y_AXIS)) { + feedrate *= sqrt(pow(max_length(Y_AXIS) / max_length(X_AXIS), 2) + 1); + } else { + feedrate *= sqrt(pow(max_length(X_AXIS) / max_length(Y_AXIS), 2) + 1); + } + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + st_synchronize(); + + axis_is_at_home(X_AXIS); + axis_is_at_home(Y_AXIS); + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[X_AXIS] = current_position[X_AXIS]; + destination[Y_AXIS] = current_position[Y_AXIS]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + feedrate = 0.0; + st_synchronize(); + endstops_hit_on_purpose(); + + current_position[X_AXIS] = destination[X_AXIS]; + current_position[Y_AXIS] = destination[Y_AXIS]; + #ifndef SCARA + current_position[Z_AXIS] = destination[Z_AXIS]; + #endif + } + #endif + + if((home_all_axis) || (code_seen(axis_codes[X_AXIS]))) + { + #ifdef DUAL_X_CARRIAGE + int tmp_extruder = active_extruder; + extruder_duplication_enabled = false; + active_extruder = !active_extruder; + HOMEAXIS(X); + inactive_extruder_x_pos = current_position[X_AXIS]; + active_extruder = tmp_extruder; + HOMEAXIS(X); + // reset state used by the different modes + memcpy(raised_parked_position, current_position, sizeof(raised_parked_position)); + delayed_move_time = 0; + active_extruder_parked = true; + #else + HOMEAXIS(X); + #endif + } + + if((home_all_axis) || (code_seen(axis_codes[Y_AXIS]))) { + HOMEAXIS(Y); + } + + if(code_seen(axis_codes[X_AXIS])) + { + if(code_value_long() != 0) { + #ifdef SCARA + current_position[X_AXIS]=code_value(); + #else + current_position[X_AXIS]=code_value()+add_homing[X_AXIS]; + #endif + } + } + + if(code_seen(axis_codes[Y_AXIS])) { + if(code_value_long() != 0) { + #ifdef SCARA + current_position[Y_AXIS]=code_value(); + #else + current_position[Y_AXIS]=code_value()+add_homing[Y_AXIS]; + #endif + } + } + + #if Z_HOME_DIR < 0 // If homing towards BED do Z last + #ifndef Z_SAFE_HOMING + if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) { + #if defined (Z_RAISE_BEFORE_HOMING) && (Z_RAISE_BEFORE_HOMING > 0) + destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed + feedrate = max_feedrate[Z_AXIS]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); + st_synchronize(); + #endif + HOMEAXIS(Z); + } + #else // Z Safe mode activated. + if(home_all_axis) { + destination[X_AXIS] = round(Z_SAFE_HOMING_X_POINT - X_PROBE_OFFSET_FROM_EXTRUDER); + destination[Y_AXIS] = round(Z_SAFE_HOMING_Y_POINT - Y_PROBE_OFFSET_FROM_EXTRUDER); + destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed + feedrate = XY_TRAVEL_SPEED/60; + current_position[Z_AXIS] = 0; + + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); + st_synchronize(); + current_position[X_AXIS] = destination[X_AXIS]; + current_position[Y_AXIS] = destination[Y_AXIS]; + + HOMEAXIS(Z); + } + // Let's see if X and Y are homed and probe is inside bed area. + if(code_seen(axis_codes[Z_AXIS])) { + if ( (axis_known_position[X_AXIS]) && (axis_known_position[Y_AXIS]) \ + && (current_position[X_AXIS]+X_PROBE_OFFSET_FROM_EXTRUDER >= X_MIN_POS) \ + && (current_position[X_AXIS]+X_PROBE_OFFSET_FROM_EXTRUDER <= X_MAX_POS) \ + && (current_position[Y_AXIS]+Y_PROBE_OFFSET_FROM_EXTRUDER >= Y_MIN_POS) \ + && (current_position[Y_AXIS]+Y_PROBE_OFFSET_FROM_EXTRUDER <= Y_MAX_POS)) { + + current_position[Z_AXIS] = 0; + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1); // Set destination away from bed + feedrate = max_feedrate[Z_AXIS]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder); + st_synchronize(); + + HOMEAXIS(Z); + } else if (!((axis_known_position[X_AXIS]) && (axis_known_position[Y_AXIS]))) { + LCD_MESSAGEPGM(MSG_POSITION_UNKNOWN); + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_POSITION_UNKNOWN); + } else { + LCD_MESSAGEPGM(MSG_ZPROBE_OUT); + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_ZPROBE_OUT); + } + } + #endif + #endif + + + + if(code_seen(axis_codes[Z_AXIS])) { + if(code_value_long() != 0) { + current_position[Z_AXIS]=code_value()+add_homing[Z_AXIS]; + } + } + #ifdef ENABLE_AUTO_BED_LEVELING + if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) { + current_position[Z_AXIS] += zprobe_zoffset; //Add Z_Probe offset (the distance is negative) + } + #endif + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); +#endif // else DELTA + +#ifdef SCARA + calculate_delta(current_position); + plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]); +#endif // SCARA + + #ifdef ENDSTOPS_ONLY_FOR_HOMING + enable_endstops(false); + #endif + + feedrate = saved_feedrate; + feedmultiply = saved_feedmultiply; + previous_millis_cmd = millis(); + endstops_hit_on_purpose(); + break; + +#ifdef ENABLE_AUTO_BED_LEVELING + case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points. + // Override probing area by providing [F]ront [B]ack [L]eft [R]ight Grid[P]oints values + { + #if Z_MIN_PIN == -1 + #error "You must have a Z_MIN endstop in order to enable Auto Bed Leveling feature!!! Z_MIN_PIN must point to a valid hardware pin." + #endif + + // Prevent user from running a G29 without first homing in X and Y + if (! (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) ) + { + LCD_MESSAGEPGM(MSG_POSITION_UNKNOWN); + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_POSITION_UNKNOWN); + break; // abort G29, since we don't know where we are + } + +#ifdef Z_PROBE_SLED + dock_sled(false); +#endif // Z_PROBE_SLED + st_synchronize(); + // make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly + //vector_3 corrected_position = plan_get_position_mm(); + //corrected_position.debug("position before G29"); + plan_bed_level_matrix.set_to_identity(); + vector_3 uncorrected_position = plan_get_position(); + //uncorrected_position.debug("position durring G29"); + current_position[X_AXIS] = uncorrected_position.x; + current_position[Y_AXIS] = uncorrected_position.y; + current_position[Z_AXIS] = uncorrected_position.z; + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + setup_for_endstop_move(); + + feedrate = homing_feedrate[Z_AXIS]; +#ifdef AUTO_BED_LEVELING_GRID + // probe at the points of a lattice grid + int left_probe_bed_position=LEFT_PROBE_BED_POSITION; + int right_probe_bed_position=RIGHT_PROBE_BED_POSITION; + int back_probe_bed_position=BACK_PROBE_BED_POSITION; + int front_probe_bed_position=FRONT_PROBE_BED_POSITION; + int auto_bed_leveling_grid_points=AUTO_BED_LEVELING_GRID_POINTS; + if (code_seen('L')) left_probe_bed_position=(int)code_value(); + if (code_seen('R')) right_probe_bed_position=(int)code_value(); + if (code_seen('B')) back_probe_bed_position=(int)code_value(); + if (code_seen('F')) front_probe_bed_position=(int)code_value(); + if (code_seen('P')) auto_bed_leveling_grid_points=(int)code_value(); + + int xGridSpacing = (right_probe_bed_position - left_probe_bed_position) / (auto_bed_leveling_grid_points-1); + int yGridSpacing = (back_probe_bed_position - front_probe_bed_position) / (auto_bed_leveling_grid_points-1); + + + // solve the plane equation ax + by + d = z + // A is the matrix with rows [x y 1] for all the probed points + // B is the vector of the Z positions + // the normal vector to the plane is formed by the coefficients of the plane equation in the standard form, which is Vx*x+Vy*y+Vz*z+d = 0 + // so Vx = -a Vy = -b Vz = 1 (we want the vector facing towards positive Z + + // "A" matrix of the linear system of equations + double eqnAMatrix[auto_bed_leveling_grid_points*auto_bed_leveling_grid_points*3]; + + // "B" vector of Z points + double eqnBVector[auto_bed_leveling_grid_points*auto_bed_leveling_grid_points]; + + + + int probePointCounter = 0; + bool zig = true; + + for (int yProbe=front_probe_bed_position; yProbe <= back_probe_bed_position; yProbe += yGridSpacing) + + { + int xProbe, xInc; + if (zig) + { + xProbe = left_probe_bed_position; + //xEnd = right_probe_bed_position; + xInc = xGridSpacing; + zig = false; + } else // zag + { + xProbe = right_probe_bed_position; + //xEnd = left_probe_bed_position; + xInc = -xGridSpacing; + zig = true; + } + + for (int xCount=0; xCount < auto_bed_leveling_grid_points; xCount++) + { + float z_before; + if (probePointCounter == 0) + { + // raise before probing + z_before = Z_RAISE_BEFORE_PROBING; + } else + { + // raise extruder + z_before = current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS; + } + + float measured_z; + //Enhanced G29 - Do not retract servo between probes + if (code_seen('E') || code_seen('e') ) + { + if ((yProbe==FRONT_PROBE_BED_POSITION) && (xCount==0)) + { + measured_z = probe_pt(xProbe, yProbe, z_before,1); + } else if ((yProbe==FRONT_PROBE_BED_POSITION + (yGridSpacing * (AUTO_BED_LEVELING_GRID_POINTS-1))) && (xCount == AUTO_BED_LEVELING_GRID_POINTS-1)) + { + measured_z = probe_pt(xProbe, yProbe, z_before,3); + } else { + measured_z = probe_pt(xProbe, yProbe, z_before,2); + } + } else { + measured_z = probe_pt(xProbe, yProbe, z_before); + } + + eqnBVector[probePointCounter] = measured_z; + + eqnAMatrix[probePointCounter + 0*auto_bed_leveling_grid_points*auto_bed_leveling_grid_points] = xProbe; + eqnAMatrix[probePointCounter + 1*auto_bed_leveling_grid_points*auto_bed_leveling_grid_points] = yProbe; + eqnAMatrix[probePointCounter + 2*auto_bed_leveling_grid_points*auto_bed_leveling_grid_points] = 1; + probePointCounter++; + xProbe += xInc; + } + } + clean_up_after_endstop_move(); + + // solve lsq problem + double *plane_equation_coefficients = qr_solve(auto_bed_leveling_grid_points*auto_bed_leveling_grid_points, 3, eqnAMatrix, eqnBVector); + + SERIAL_PROTOCOLPGM("Eqn coefficients: a: "); + SERIAL_PROTOCOL(plane_equation_coefficients[0]); + SERIAL_PROTOCOLPGM(" b: "); + SERIAL_PROTOCOL(plane_equation_coefficients[1]); + SERIAL_PROTOCOLPGM(" d: "); + SERIAL_PROTOCOLLN(plane_equation_coefficients[2]); + + + set_bed_level_equation_lsq(plane_equation_coefficients); + + free(plane_equation_coefficients); + +#else // AUTO_BED_LEVELING_GRID not defined + + // Probe at 3 arbitrary points + // Enhanced G29 + + float z_at_pt_1, z_at_pt_2, z_at_pt_3; + + if (code_seen('E') || code_seen('e')) { + // probe 1 + z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING,1); + // probe 2 + z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS,2); + // probe 3 + z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS,3); + } + else { + // probe 1 + z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING); + // probe 2 + z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS); + // probe 3 + z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS); + } + clean_up_after_endstop_move(); + set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3); + + +#endif // AUTO_BED_LEVELING_GRID + st_synchronize(); + + // The following code correct the Z height difference from z-probe position and hotend tip position. + // The Z height on homing is measured by Z-Probe, but the probe is quite far from the hotend. + // When the bed is uneven, this height must be corrected. + real_z = float(st_get_position(Z_AXIS))/axis_steps_per_unit[Z_AXIS]; //get the real Z (since the auto bed leveling is already correcting the plane) + x_tmp = current_position[X_AXIS] + X_PROBE_OFFSET_FROM_EXTRUDER; + y_tmp = current_position[Y_AXIS] + Y_PROBE_OFFSET_FROM_EXTRUDER; + z_tmp = current_position[Z_AXIS]; + + apply_rotation_xyz(plan_bed_level_matrix, x_tmp, y_tmp, z_tmp); //Apply the correction sending the probe offset + current_position[Z_AXIS] = z_tmp - real_z + current_position[Z_AXIS]; //The difference is added to current position and sent to planner. + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); +#ifdef Z_PROBE_SLED + dock_sled(true, -SLED_DOCKING_OFFSET); // correct for over travel. +#endif // Z_PROBE_SLED + } + break; +#ifndef Z_PROBE_SLED + case 30: // G30 Single Z Probe + { + engage_z_probe(); // Engage Z Servo endstop if available + st_synchronize(); + // TODO: make sure the bed_level_rotation_matrix is identity or the planner will get set incorectly + setup_for_endstop_move(); + + feedrate = homing_feedrate[Z_AXIS]; + + run_z_probe(); + SERIAL_PROTOCOLPGM(MSG_BED); + SERIAL_PROTOCOLPGM(" X: "); + SERIAL_PROTOCOL(current_position[X_AXIS]); + SERIAL_PROTOCOLPGM(" Y: "); + SERIAL_PROTOCOL(current_position[Y_AXIS]); + SERIAL_PROTOCOLPGM(" Z: "); + SERIAL_PROTOCOL(current_position[Z_AXIS]); + SERIAL_PROTOCOLPGM("\n"); + + clean_up_after_endstop_move(); + retract_z_probe(); // Retract Z Servo endstop if available + } + break; +#else + case 31: // dock the sled + dock_sled(true); + break; + case 32: // undock the sled + dock_sled(false); + break; +#endif // Z_PROBE_SLED +#endif // ENABLE_AUTO_BED_LEVELING + case 90: // G90 + relative_mode = false; + break; + case 91: // G91 + relative_mode = true; + break; + case 92: // G92 + if(!code_seen(axis_codes[E_AXIS])) + st_synchronize(); + for(int8_t i=0; i < NUM_AXIS; i++) { + if(code_seen(axis_codes[i])) { + if(i == E_AXIS) { + current_position[i] = code_value(); + plan_set_e_position(current_position[E_AXIS]); + } + else { +#ifdef SCARA + if (i == X_AXIS || i == Y_AXIS) { + current_position[i] = code_value(); + } + else { + current_position[i] = code_value()+add_homing[i]; + } +#else + current_position[i] = code_value()+add_homing[i]; +#endif + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + } + } + } + break; + } + } + + else if(code_seen('M')) + { + switch( (int)code_value() ) + { +#ifdef ULTIPANEL + case 0: // M0 - Unconditional stop - Wait for user button press on LCD + case 1: // M1 - Conditional stop - Wait for user button press on LCD + { + char *src = strchr_pointer + 2; + + codenum = 0; + + bool hasP = false, hasS = false; + if (code_seen('P')) { + codenum = code_value(); // milliseconds to wait + hasP = codenum > 0; + } + if (code_seen('S')) { + codenum = code_value() * 1000; // seconds to wait + hasS = codenum > 0; + } + starpos = strchr(src, '*'); + if (starpos != NULL) *(starpos) = '\0'; + while (*src == ' ') ++src; + if (!hasP && !hasS && *src != '\0') { + lcd_setstatus(src); + } else { + LCD_MESSAGEPGM(MSG_USERWAIT); + } + + lcd_ignore_click(); + st_synchronize(); + previous_millis_cmd = millis(); + if (codenum > 0){ + codenum += millis(); // keep track of when we started waiting + while(millis() < codenum && !lcd_clicked()){ + manage_heater(); + manage_inactivity(); + lcd_update(); + } + lcd_ignore_click(false); + }else{ + if (!lcd_detected()) + break; + while(!lcd_clicked()){ + manage_heater(); + manage_inactivity(); + lcd_update(); + } + } + if (IS_SD_PRINTING) + LCD_MESSAGEPGM(MSG_RESUMING); + else + LCD_MESSAGEPGM(WELCOME_MSG); + } + break; +#endif + case 17: + LCD_MESSAGEPGM(MSG_NO_MOVE); + enable_x(); + enable_y(); + enable_z(); + enable_e0(); + enable_e1(); + enable_e2(); + break; + +#ifdef SDSUPPORT + case 20: // M20 - list SD card + SERIAL_PROTOCOLLNPGM(MSG_BEGIN_FILE_LIST); + card.ls(); + SERIAL_PROTOCOLLNPGM(MSG_END_FILE_LIST); + break; + case 21: // M21 - init SD card + + card.initsd(); + + break; + case 22: //M22 - release SD card + card.release(); + + break; + case 23: //M23 - Select file + starpos = (strchr(strchr_pointer + 4,'*')); + if(starpos!=NULL) + *(starpos)='\0'; + card.openFile(strchr_pointer + 4,true); + break; + case 24: //M24 - Start SD print + card.startFileprint(); + starttime=millis(); + break; + case 25: //M25 - Pause SD print + card.pauseSDPrint(); + break; + case 26: //M26 - Set SD index + if(card.cardOK && code_seen('S')) { + card.setIndex(code_value_long()); + } + break; + case 27: //M27 - Get SD status + card.getStatus(); + break; + case 28: //M28 - Start SD write + starpos = (strchr(strchr_pointer + 4,'*')); + if(starpos != NULL){ + char* npos = strchr(cmdbuffer[bufindr], 'N'); + strchr_pointer = strchr(npos,' ') + 1; + *(starpos) = '\0'; + } + card.openFile(strchr_pointer+4,false); + break; + case 29: //M29 - Stop SD write + //processed in write to file routine above + //card,saving = false; + break; + case 30: //M30 Delete File + if (card.cardOK){ + card.closefile(); + starpos = (strchr(strchr_pointer + 4,'*')); + if(starpos != NULL){ + char* npos = strchr(cmdbuffer[bufindr], 'N'); + strchr_pointer = strchr(npos,' ') + 1; + *(starpos) = '\0'; + } + card.removeFile(strchr_pointer + 4); + } + break; + case 32: //M32 - Select file and start SD print + { + if(card.sdprinting) { + st_synchronize(); + + } + starpos = (strchr(strchr_pointer + 4,'*')); + + char* namestartpos = (strchr(strchr_pointer + 4,'!')); //find ! to indicate filename string start. + if(namestartpos==NULL) + { + namestartpos=strchr_pointer + 4; //default name position, 4 letters after the M + } + else + namestartpos++; //to skip the '!' + + if(starpos!=NULL) + *(starpos)='\0'; + + bool call_procedure=(code_seen('P')); + + if(strchr_pointer>namestartpos) + call_procedure=false; //false alert, 'P' found within filename + + if( card.cardOK ) + { + card.openFile(namestartpos,true,!call_procedure); + if(code_seen('S')) + if(strchr_pointer= 0 && pin_status <= 255) + pin_number = code_value(); + for(int8_t i = 0; i < (int8_t)(sizeof(sensitive_pins)/sizeof(int)); i++) + { + if (sensitive_pins[i] == pin_number) + { + pin_number = -1; + break; + } + } + #if defined(FAN_PIN) && FAN_PIN > -1 + if (pin_number == FAN_PIN) + fanSpeed = pin_status; + #endif + if (pin_number > -1) + { + pinMode(pin_number, OUTPUT); + digitalWrite(pin_number, pin_status); + analogWrite(pin_number, pin_status); + } + } + break; + +// M48 Z-Probe repeatability measurement function. +// +// Usage: M48 +// +// This function assumes the bed has been homed. Specificaly, that a G28 command +// as been issued prior to invoking the M48 Z-Probe repeatability measurement function. +// Any information generated by a prior G29 Bed leveling command will be lost and need to be +// regenerated. +// +// The number of samples will default to 10 if not specified. You can use upper or lower case +// letters for any of the options EXCEPT n. n must be in lower case because Marlin uses a capital +// N for its communication protocol and will get horribly confused if you send it a capital N. +// + +#ifdef ENABLE_AUTO_BED_LEVELING +#ifdef Z_PROBE_REPEATABILITY_TEST + + case 48: // M48 Z-Probe repeatability + { + #if Z_MIN_PIN == -1 + #error "You must have a Z_MIN endstop in order to enable calculation of Z-Probe repeatability." + #endif + + double sum=0.0; + double mean=0.0; + double sigma=0.0; + double sample_set[50]; + int verbose_level=1, n=0, j, n_samples = 10, n_legs=0, engage_probe_for_each_reading=0 ; + double X_current, Y_current, Z_current; + double X_probe_location, Y_probe_location, Z_start_location, ext_position; + + if (code_seen('V') || code_seen('v')) { + verbose_level = code_value(); + if (verbose_level<0 || verbose_level>4 ) { + SERIAL_PROTOCOLPGM("?Verbose Level not plausable.\n"); + goto Sigma_Exit; + } + } + + if (verbose_level > 0) { + SERIAL_PROTOCOLPGM("M48 Z-Probe Repeatability test. Version 2.00\n"); + SERIAL_PROTOCOLPGM("Full support at: http://3dprintboard.com/forum.php\n"); + } + + if (code_seen('n')) { + n_samples = code_value(); + if (n_samples<4 || n_samples>50 ) { + SERIAL_PROTOCOLPGM("?Specified sample size not plausable.\n"); + goto Sigma_Exit; + } + } + + X_current = X_probe_location = st_get_position_mm(X_AXIS); + Y_current = Y_probe_location = st_get_position_mm(Y_AXIS); + Z_current = st_get_position_mm(Z_AXIS); + Z_start_location = st_get_position_mm(Z_AXIS) + Z_RAISE_BEFORE_PROBING; + ext_position = st_get_position_mm(E_AXIS); + + if (code_seen('E') || code_seen('e') ) + engage_probe_for_each_reading++; + + if (code_seen('X') || code_seen('x') ) { + X_probe_location = code_value() - X_PROBE_OFFSET_FROM_EXTRUDER; + if (X_probe_locationX_MAX_POS ) { + SERIAL_PROTOCOLPGM("?Specified X position out of range.\n"); + goto Sigma_Exit; + } + } + + if (code_seen('Y') || code_seen('y') ) { + Y_probe_location = code_value() - Y_PROBE_OFFSET_FROM_EXTRUDER; + if (Y_probe_locationY_MAX_POS ) { + SERIAL_PROTOCOLPGM("?Specified Y position out of range.\n"); + goto Sigma_Exit; + } + } + + if (code_seen('L') || code_seen('l') ) { + n_legs = code_value(); + if ( n_legs==1 ) + n_legs = 2; + if ( n_legs<0 || n_legs>15 ) { + SERIAL_PROTOCOLPGM("?Specified number of legs in movement not plausable.\n"); + goto Sigma_Exit; + } + } + +// +// Do all the preliminary setup work. First raise the probe. +// + + st_synchronize(); + plan_bed_level_matrix.set_to_identity(); + plan_buffer_line( X_current, Y_current, Z_start_location, + ext_position, + homing_feedrate[Z_AXIS]/60, + active_extruder); + st_synchronize(); + +// +// Now get everything to the specified probe point So we can safely do a probe to +// get us close to the bed. If the Z-Axis is far from the bed, we don't want to +// use that as a starting point for each probe. +// + if (verbose_level > 2) + SERIAL_PROTOCOL("Positioning probe for the test.\n"); + + plan_buffer_line( X_probe_location, Y_probe_location, Z_start_location, + ext_position, + homing_feedrate[X_AXIS]/60, + active_extruder); + st_synchronize(); + + current_position[X_AXIS] = X_current = st_get_position_mm(X_AXIS); + current_position[Y_AXIS] = Y_current = st_get_position_mm(Y_AXIS); + current_position[Z_AXIS] = Z_current = st_get_position_mm(Z_AXIS); + current_position[E_AXIS] = ext_position = st_get_position_mm(E_AXIS); + +// +// OK, do the inital probe to get us close to the bed. +// Then retrace the right amount and use that in subsequent probes +// + + engage_z_probe(); + + setup_for_endstop_move(); + run_z_probe(); + + current_position[Z_AXIS] = Z_current = st_get_position_mm(Z_AXIS); + Z_start_location = st_get_position_mm(Z_AXIS) + Z_RAISE_BEFORE_PROBING; + + plan_buffer_line( X_probe_location, Y_probe_location, Z_start_location, + ext_position, + homing_feedrate[X_AXIS]/60, + active_extruder); + st_synchronize(); + current_position[Z_AXIS] = Z_current = st_get_position_mm(Z_AXIS); + + if (engage_probe_for_each_reading) + retract_z_probe(); + + for( n=0; nX_MAX_POS) + X_current = X_MAX_POS; + + if ( Y_currentY_MAX_POS) + Y_current = Y_MAX_POS; + + if (verbose_level>3 ) { + SERIAL_ECHOPAIR("x: ", X_current); + SERIAL_ECHOPAIR("y: ", Y_current); + SERIAL_PROTOCOLLNPGM(""); + } + + do_blocking_move_to( X_current, Y_current, Z_current ); + } + do_blocking_move_to( X_probe_location, Y_probe_location, Z_start_location); // Go back to the probe location + } + + if (engage_probe_for_each_reading) { + engage_z_probe(); + delay(1000); + } + + setup_for_endstop_move(); + run_z_probe(); + + sample_set[n] = current_position[Z_AXIS]; + +// +// Get the current mean for the data points we have so far +// + sum=0.0; + for( j=0; j<=n; j++) { + sum = sum + sample_set[j]; + } + mean = sum / (double (n+1)); +// +// Now, use that mean to calculate the standard deviation for the +// data points we have so far +// + + sum=0.0; + for( j=0; j<=n; j++) { + sum = sum + (sample_set[j]-mean) * (sample_set[j]-mean); + } + sigma = sqrt( sum / (double (n+1)) ); + + if (verbose_level > 1) { + SERIAL_PROTOCOL(n+1); + SERIAL_PROTOCOL(" of "); + SERIAL_PROTOCOL(n_samples); + SERIAL_PROTOCOLPGM(" z: "); + SERIAL_PROTOCOL_F(current_position[Z_AXIS], 6); + } + + if (verbose_level > 2) { + SERIAL_PROTOCOL(" mean: "); + SERIAL_PROTOCOL_F(mean,6); + + SERIAL_PROTOCOL(" sigma: "); + SERIAL_PROTOCOL_F(sigma,6); + } + + if (verbose_level > 0) + SERIAL_PROTOCOLPGM("\n"); + + plan_buffer_line( X_probe_location, Y_probe_location, Z_start_location, + current_position[E_AXIS], homing_feedrate[Z_AXIS]/60, active_extruder); + st_synchronize(); + + if (engage_probe_for_each_reading) { + retract_z_probe(); + delay(1000); + } + } + + retract_z_probe(); + delay(1000); + + clean_up_after_endstop_move(); + +// enable_endstops(true); + + if (verbose_level > 0) { + SERIAL_PROTOCOLPGM("Mean: "); + SERIAL_PROTOCOL_F(mean, 6); + SERIAL_PROTOCOLPGM("\n"); + } + +SERIAL_PROTOCOLPGM("Standard Deviation: "); +SERIAL_PROTOCOL_F(sigma, 6); +SERIAL_PROTOCOLPGM("\n\n"); + +Sigma_Exit: + break; + } +#endif // Z_PROBE_REPEATABILITY_TEST +#endif // ENABLE_AUTO_BED_LEVELING + + case 104: // M104 + if(setTargetedHotend(104)){ + break; + } + if (code_seen('S')) setTargetHotend(code_value(), tmp_extruder); +#ifdef DUAL_X_CARRIAGE + if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && tmp_extruder == 0) + setTargetHotend1(code_value() == 0.0 ? 0.0 : code_value() + duplicate_extruder_temp_offset); +#endif + setWatch(); + break; + case 112: // M112 -Emergency Stop + kill(); + break; + case 140: // M140 set bed temp + if (code_seen('S')) setTargetBed(code_value()); + break; + case 105 : // M105 + if(setTargetedHotend(105)){ + break; + } + #if defined(TEMP_0_PIN) && TEMP_0_PIN > -1 + SERIAL_PROTOCOLPGM("ok T:"); + SERIAL_PROTOCOL_F(degHotend(tmp_extruder),1); + SERIAL_PROTOCOLPGM(" /"); + SERIAL_PROTOCOL_F(degTargetHotend(tmp_extruder),1); + #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1 + SERIAL_PROTOCOLPGM(" B:"); + SERIAL_PROTOCOL_F(degBed(),1); + SERIAL_PROTOCOLPGM(" /"); + SERIAL_PROTOCOL_F(degTargetBed(),1); + #endif //TEMP_BED_PIN + for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) { + SERIAL_PROTOCOLPGM(" T"); + SERIAL_PROTOCOL(cur_extruder); + SERIAL_PROTOCOLPGM(":"); + SERIAL_PROTOCOL_F(degHotend(cur_extruder),1); + SERIAL_PROTOCOLPGM(" /"); + SERIAL_PROTOCOL_F(degTargetHotend(cur_extruder),1); + } + #else + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_ERR_NO_THERMISTORS); + #endif + + SERIAL_PROTOCOLPGM(" @:"); + #ifdef EXTRUDER_WATTS + SERIAL_PROTOCOL((EXTRUDER_WATTS * getHeaterPower(tmp_extruder))/127); + SERIAL_PROTOCOLPGM("W"); + #else + SERIAL_PROTOCOL(getHeaterPower(tmp_extruder)); + #endif + + SERIAL_PROTOCOLPGM(" B@:"); + #ifdef BED_WATTS + SERIAL_PROTOCOL((BED_WATTS * getHeaterPower(-1))/127); + SERIAL_PROTOCOLPGM("W"); + #else + SERIAL_PROTOCOL(getHeaterPower(-1)); + #endif + + #ifdef SHOW_TEMP_ADC_VALUES + #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1 + SERIAL_PROTOCOLPGM(" ADC B:"); + SERIAL_PROTOCOL_F(degBed(),1); + SERIAL_PROTOCOLPGM("C->"); + SERIAL_PROTOCOL_F(rawBedTemp()/OVERSAMPLENR,0); + #endif + for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) { + SERIAL_PROTOCOLPGM(" T"); + SERIAL_PROTOCOL(cur_extruder); + SERIAL_PROTOCOLPGM(":"); + SERIAL_PROTOCOL_F(degHotend(cur_extruder),1); + SERIAL_PROTOCOLPGM("C->"); + SERIAL_PROTOCOL_F(rawHotendTemp(cur_extruder)/OVERSAMPLENR,0); + } + #endif + + SERIAL_PROTOCOLLN(""); + return; + break; + case 109: + {// M109 - Wait for extruder heater to reach target. + if(setTargetedHotend(109)){ + break; + } + LCD_MESSAGEPGM(MSG_HEATING); + #ifdef AUTOTEMP + autotemp_enabled=false; + #endif + if (code_seen('S')) { + setTargetHotend(code_value(), tmp_extruder); +#ifdef DUAL_X_CARRIAGE + if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && tmp_extruder == 0) + setTargetHotend1(code_value() == 0.0 ? 0.0 : code_value() + duplicate_extruder_temp_offset); +#endif + CooldownNoWait = true; + } else if (code_seen('R')) { + setTargetHotend(code_value(), tmp_extruder); +#ifdef DUAL_X_CARRIAGE + if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && tmp_extruder == 0) + setTargetHotend1(code_value() == 0.0 ? 0.0 : code_value() + duplicate_extruder_temp_offset); +#endif + CooldownNoWait = false; + } + #ifdef AUTOTEMP + if (code_seen('S')) autotemp_min=code_value(); + if (code_seen('B')) autotemp_max=code_value(); + if (code_seen('F')) + { + autotemp_factor=code_value(); + autotemp_enabled=true; + } + #endif + + setWatch(); + codenum = millis(); + + /* See if we are heating up or cooling down */ + target_direction = isHeatingHotend(tmp_extruder); // true if heating, false if cooling + + cancel_heatup = false; + + #ifdef TEMP_RESIDENCY_TIME + long residencyStart; + residencyStart = -1; + /* continue to loop until we have reached the target temp + _and_ until TEMP_RESIDENCY_TIME hasn't passed since we reached it */ + while((!cancel_heatup)&&((residencyStart == -1) || + (residencyStart >= 0 && (((unsigned int) (millis() - residencyStart)) < (TEMP_RESIDENCY_TIME * 1000UL)))) ) { + #else + while ( target_direction ? (isHeatingHotend(tmp_extruder)) : (isCoolingHotend(tmp_extruder)&&(CooldownNoWait==false)) ) { + #endif //TEMP_RESIDENCY_TIME + if( (millis() - codenum) > 1000UL ) + { //Print Temp Reading and remaining time every 1 second while heating up/cooling down + SERIAL_PROTOCOLPGM("T:"); + SERIAL_PROTOCOL_F(degHotend(tmp_extruder),1); + SERIAL_PROTOCOLPGM(" E:"); + SERIAL_PROTOCOL((int)tmp_extruder); + #ifdef TEMP_RESIDENCY_TIME + SERIAL_PROTOCOLPGM(" W:"); + if(residencyStart > -1) + { + codenum = ((TEMP_RESIDENCY_TIME * 1000UL) - (millis() - residencyStart)) / 1000UL; + SERIAL_PROTOCOLLN( codenum ); + } + else + { + SERIAL_PROTOCOLLN( "?" ); + } + #else + SERIAL_PROTOCOLLN(""); + #endif + codenum = millis(); + } + manage_heater(); + manage_inactivity(); + lcd_update(); + #ifdef TEMP_RESIDENCY_TIME + /* start/restart the TEMP_RESIDENCY_TIME timer whenever we reach target temp for the first time + or when current temp falls outside the hysteresis after target temp was reached */ + if ((residencyStart == -1 && target_direction && (degHotend(tmp_extruder) >= (degTargetHotend(tmp_extruder)-TEMP_WINDOW))) || + (residencyStart == -1 && !target_direction && (degHotend(tmp_extruder) <= (degTargetHotend(tmp_extruder)+TEMP_WINDOW))) || + (residencyStart > -1 && labs(degHotend(tmp_extruder) - degTargetHotend(tmp_extruder)) > TEMP_HYSTERESIS) ) + { + residencyStart = millis(); + } + #endif //TEMP_RESIDENCY_TIME + } + LCD_MESSAGEPGM(MSG_HEATING_COMPLETE); + starttime=millis(); + previous_millis_cmd = millis(); + } + break; + case 190: // M190 - Wait for bed heater to reach target. + #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1 + LCD_MESSAGEPGM(MSG_BED_HEATING); + if (code_seen('S')) { + setTargetBed(code_value()); + CooldownNoWait = true; + } else if (code_seen('R')) { + setTargetBed(code_value()); + CooldownNoWait = false; + } + codenum = millis(); + + cancel_heatup = false; + target_direction = isHeatingBed(); // true if heating, false if cooling + + while ( (target_direction)&&(!cancel_heatup) ? (isHeatingBed()) : (isCoolingBed()&&(CooldownNoWait==false)) ) + { + if(( millis() - codenum) > 1000 ) //Print Temp Reading every 1 second while heating up. + { + float tt=degHotend(active_extruder); + SERIAL_PROTOCOLPGM("T:"); + SERIAL_PROTOCOL(tt); + SERIAL_PROTOCOLPGM(" E:"); + SERIAL_PROTOCOL((int)active_extruder); + SERIAL_PROTOCOLPGM(" B:"); + SERIAL_PROTOCOL_F(degBed(),1); + SERIAL_PROTOCOLLN(""); + codenum = millis(); + } + manage_heater(); + manage_inactivity(); + lcd_update(); + } + LCD_MESSAGEPGM(MSG_BED_DONE); + previous_millis_cmd = millis(); + #endif + break; + + #if defined(FAN_PIN) && FAN_PIN > -1 + case 106: //M106 Fan On + if (code_seen('S')){ + fanSpeed=constrain(code_value(),0,255); + } + else { + fanSpeed=255; + } + break; + case 107: //M107 Fan Off + fanSpeed = 0; + break; + #endif //FAN_PIN + #ifdef BARICUDA + // PWM for HEATER_1_PIN + #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1 + case 126: //M126 valve open + if (code_seen('S')){ + ValvePressure=constrain(code_value(),0,255); + } + else { + ValvePressure=255; + } + break; + case 127: //M127 valve closed + ValvePressure = 0; + break; + #endif //HEATER_1_PIN + + // PWM for HEATER_2_PIN + #if defined(HEATER_2_PIN) && HEATER_2_PIN > -1 + case 128: //M128 valve open + if (code_seen('S')){ + EtoPPressure=constrain(code_value(),0,255); + } + else { + EtoPPressure=255; + } + break; + case 129: //M129 valve closed + EtoPPressure = 0; + break; + #endif //HEATER_2_PIN + #endif + + #if defined(PS_ON_PIN) && PS_ON_PIN > -1 + case 80: // M80 - Turn on Power Supply + OUT_WRITE(PS_ON_PIN, PS_ON_AWAKE); // GND + + // If you have a switch on suicide pin, this is useful + // if you want to start another print with suicide feature after + // a print without suicide... + #if defined SUICIDE_PIN && SUICIDE_PIN > -1 + OUT_WRITE(SUICIDE_PIN, HIGH); + #endif + + #ifdef ULTIPANEL + powersupply = true; + LCD_MESSAGEPGM(WELCOME_MSG); + lcd_update(); + #endif + break; + #endif + + case 81: // M81 - Turn off Power Supply + disable_heater(); + st_synchronize(); + disable_e0(); + disable_e1(); + disable_e2(); + finishAndDisableSteppers(); + fanSpeed = 0; + delay(1000); // Wait a little before to switch off + #if defined(SUICIDE_PIN) && SUICIDE_PIN > -1 + st_synchronize(); + suicide(); + #elif defined(PS_ON_PIN) && PS_ON_PIN > -1 + OUT_WRITE(PS_ON_PIN, PS_ON_ASLEEP); + #endif + #ifdef ULTIPANEL + powersupply = false; + LCD_MESSAGEPGM(MACHINE_NAME" "MSG_OFF"."); + lcd_update(); + #endif + break; + + case 82: + axis_relative_modes[3] = false; + break; + case 83: + axis_relative_modes[3] = true; + break; + case 18: //compatibility + case 84: // M84 + if(code_seen('S')){ + stepper_inactive_time = code_value() * 1000; + } + else + { + bool all_axis = !((code_seen(axis_codes[X_AXIS])) || (code_seen(axis_codes[Y_AXIS])) || (code_seen(axis_codes[Z_AXIS]))|| (code_seen(axis_codes[E_AXIS]))); + if(all_axis) + { + st_synchronize(); + disable_e0(); + disable_e1(); + disable_e2(); + finishAndDisableSteppers(); + } + else + { + st_synchronize(); + if(code_seen('X')) disable_x(); + if(code_seen('Y')) disable_y(); + if(code_seen('Z')) disable_z(); + #if ((E0_ENABLE_PIN != X_ENABLE_PIN) && (E1_ENABLE_PIN != Y_ENABLE_PIN)) // Only enable on boards that have seperate ENABLE_PINS + if(code_seen('E')) { + disable_e0(); + disable_e1(); + disable_e2(); + } + #endif + } + } + break; + case 85: // M85 + if(code_seen('S')) { + max_inactive_time = code_value() * 1000; + } + break; + case 92: // M92 + for(int8_t i=0; i < NUM_AXIS; i++) + { + if(code_seen(axis_codes[i])) + { + if(i == 3) { // E + float value = code_value(); + if(value < 20.0) { + float factor = axis_steps_per_unit[i] / value; // increase e constants if M92 E14 is given for netfab. + max_e_jerk *= factor; + max_feedrate[i] *= factor; + axis_steps_per_sqr_second[i] *= factor; + } + axis_steps_per_unit[i] = value; + } + else { + axis_steps_per_unit[i] = code_value(); + } + } + } + break; + case 115: // M115 + SERIAL_PROTOCOLPGM(MSG_M115_REPORT); + break; + case 117: // M117 display message + starpos = (strchr(strchr_pointer + 5,'*')); + if(starpos!=NULL) + *(starpos)='\0'; + lcd_setstatus(strchr_pointer + 5); + break; + case 114: // M114 + SERIAL_PROTOCOLPGM("X:"); + SERIAL_PROTOCOL(current_position[X_AXIS]); + SERIAL_PROTOCOLPGM(" Y:"); + SERIAL_PROTOCOL(current_position[Y_AXIS]); + SERIAL_PROTOCOLPGM(" Z:"); + SERIAL_PROTOCOL(current_position[Z_AXIS]); + SERIAL_PROTOCOLPGM(" E:"); + SERIAL_PROTOCOL(current_position[E_AXIS]); + + SERIAL_PROTOCOLPGM(MSG_COUNT_X); + SERIAL_PROTOCOL(float(st_get_position(X_AXIS))/axis_steps_per_unit[X_AXIS]); + SERIAL_PROTOCOLPGM(" Y:"); + SERIAL_PROTOCOL(float(st_get_position(Y_AXIS))/axis_steps_per_unit[Y_AXIS]); + SERIAL_PROTOCOLPGM(" Z:"); + SERIAL_PROTOCOL(float(st_get_position(Z_AXIS))/axis_steps_per_unit[Z_AXIS]); + + SERIAL_PROTOCOLLN(""); +#ifdef SCARA + SERIAL_PROTOCOLPGM("SCARA Theta:"); + SERIAL_PROTOCOL(delta[X_AXIS]); + SERIAL_PROTOCOLPGM(" Psi+Theta:"); + SERIAL_PROTOCOL(delta[Y_AXIS]); + SERIAL_PROTOCOLLN(""); + + SERIAL_PROTOCOLPGM("SCARA Cal - Theta:"); + SERIAL_PROTOCOL(delta[X_AXIS]+add_homing[X_AXIS]); + SERIAL_PROTOCOLPGM(" Psi+Theta (90):"); + SERIAL_PROTOCOL(delta[Y_AXIS]-delta[X_AXIS]-90+add_homing[Y_AXIS]); + SERIAL_PROTOCOLLN(""); + + SERIAL_PROTOCOLPGM("SCARA step Cal - Theta:"); + SERIAL_PROTOCOL(delta[X_AXIS]/90*axis_steps_per_unit[X_AXIS]); + SERIAL_PROTOCOLPGM(" Psi+Theta:"); + SERIAL_PROTOCOL((delta[Y_AXIS]-delta[X_AXIS])/90*axis_steps_per_unit[Y_AXIS]); + SERIAL_PROTOCOLLN(""); + SERIAL_PROTOCOLLN(""); +#endif + break; + case 120: // M120 + enable_endstops(false) ; + break; + case 121: // M121 + enable_endstops(true) ; + break; + case 119: // M119 + SERIAL_PROTOCOLLN(MSG_M119_REPORT); + #if defined(X_MIN_PIN) && X_MIN_PIN > -1 + SERIAL_PROTOCOLPGM(MSG_X_MIN); + SERIAL_PROTOCOLLN(((READ(X_MIN_PIN)^X_MIN_ENDSTOP_INVERTING)?MSG_ENDSTOP_HIT:MSG_ENDSTOP_OPEN)); + #endif + #if defined(X_MAX_PIN) && X_MAX_PIN > -1 + SERIAL_PROTOCOLPGM(MSG_X_MAX); + SERIAL_PROTOCOLLN(((READ(X_MAX_PIN)^X_MAX_ENDSTOP_INVERTING)?MSG_ENDSTOP_HIT:MSG_ENDSTOP_OPEN)); + #endif + #if defined(Y_MIN_PIN) && Y_MIN_PIN > -1 + SERIAL_PROTOCOLPGM(MSG_Y_MIN); + SERIAL_PROTOCOLLN(((READ(Y_MIN_PIN)^Y_MIN_ENDSTOP_INVERTING)?MSG_ENDSTOP_HIT:MSG_ENDSTOP_OPEN)); + #endif + #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1 + SERIAL_PROTOCOLPGM(MSG_Y_MAX); + SERIAL_PROTOCOLLN(((READ(Y_MAX_PIN)^Y_MAX_ENDSTOP_INVERTING)?MSG_ENDSTOP_HIT:MSG_ENDSTOP_OPEN)); + #endif + #if defined(Z_MIN_PIN) && Z_MIN_PIN > -1 + SERIAL_PROTOCOLPGM(MSG_Z_MIN); + SERIAL_PROTOCOLLN(((READ(Z_MIN_PIN)^Z_MIN_ENDSTOP_INVERTING)?MSG_ENDSTOP_HIT:MSG_ENDSTOP_OPEN)); + #endif + #if defined(Z_MAX_PIN) && Z_MAX_PIN > -1 + SERIAL_PROTOCOLPGM(MSG_Z_MAX); + SERIAL_PROTOCOLLN(((READ(Z_MAX_PIN)^Z_MAX_ENDSTOP_INVERTING)?MSG_ENDSTOP_HIT:MSG_ENDSTOP_OPEN)); + #endif + break; + //TODO: update for all axis, use for loop + #ifdef BLINKM + case 150: // M150 + { + byte red; + byte grn; + byte blu; + + if(code_seen('R')) red = code_value(); + if(code_seen('U')) grn = code_value(); + if(code_seen('B')) blu = code_value(); + + SendColors(red,grn,blu); + } + break; + #endif //BLINKM + case 200: // M200 D set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). + { + + tmp_extruder = active_extruder; + if(code_seen('T')) { + tmp_extruder = code_value(); + if(tmp_extruder >= EXTRUDERS) { + SERIAL_ECHO_START; + SERIAL_ECHO(MSG_M200_INVALID_EXTRUDER); + break; + } + } + + float area = .0; + if(code_seen('D')) { + float diameter = code_value(); + // setting any extruder filament size disables volumetric on the assumption that + // slicers either generate in extruder values as cubic mm or as as filament feeds + // for all extruders + volumetric_enabled = (diameter != 0.0); + if (volumetric_enabled) { + filament_size[tmp_extruder] = diameter; + // make sure all extruders have some sane value for the filament size + for (int i=0; i R S + if(code_seen('L')) { + delta_diagonal_rod= code_value(); + } + if(code_seen('R')) { + delta_radius= code_value(); + } + if(code_seen('S')) { + delta_segments_per_second= code_value(); + } + + recalc_delta_settings(delta_radius, delta_diagonal_rod); + break; + case 666: // M666 set delta endstop adjustemnt + for(int8_t i=0; i < 3; i++) + { + if(code_seen(axis_codes[i])) endstop_adj[i] = code_value(); + } + break; + #endif + #ifdef FWRETRACT + case 207: //M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop] + { + if(code_seen('S')) + { + retract_length = code_value() ; + } + if(code_seen('F')) + { + retract_feedrate = code_value()/60 ; + } + if(code_seen('Z')) + { + retract_zlift = code_value() ; + } + }break; + case 208: // M208 - set retract recover length S[positive mm surplus to the M207 S*] F[feedrate mm/min] + { + if(code_seen('S')) + { + retract_recover_length = code_value() ; + } + if(code_seen('F')) + { + retract_recover_feedrate = code_value()/60 ; + } + }break; + case 209: // M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction. + { + if(code_seen('S')) + { + int t= code_value() ; + switch(t) + { + case 0: + case 1: + { + autoretract_enabled = (t == 1); + for (int i=0; i 1 + case 218: // M218 - set hotend offset (in mm), T X Y + { + if(setTargetedHotend(218)){ + break; + } + if(code_seen('X')) + { + extruder_offset[X_AXIS][tmp_extruder] = code_value(); + } + if(code_seen('Y')) + { + extruder_offset[Y_AXIS][tmp_extruder] = code_value(); + } + #ifdef DUAL_X_CARRIAGE + if(code_seen('Z')) + { + extruder_offset[Z_AXIS][tmp_extruder] = code_value(); + } + #endif + SERIAL_ECHO_START; + SERIAL_ECHOPGM(MSG_HOTEND_OFFSET); + for(tmp_extruder = 0; tmp_extruder < EXTRUDERS; tmp_extruder++) + { + SERIAL_ECHO(" "); + SERIAL_ECHO(extruder_offset[X_AXIS][tmp_extruder]); + SERIAL_ECHO(","); + SERIAL_ECHO(extruder_offset[Y_AXIS][tmp_extruder]); + #ifdef DUAL_X_CARRIAGE + SERIAL_ECHO(","); + SERIAL_ECHO(extruder_offset[Z_AXIS][tmp_extruder]); + #endif + } + SERIAL_EOL; + }break; + #endif + case 220: // M220 S- set speed factor override percentage + { + if(code_seen('S')) + { + feedmultiply = code_value() ; + } + } + break; + case 221: // M221 S- set extrude factor override percentage + { + if(code_seen('S')) + { + int tmp_code = code_value(); + if (code_seen('T')) + { + if(setTargetedHotend(221)){ + break; + } + extruder_multiply[tmp_extruder] = tmp_code; + } + else + { + extrudemultiply = tmp_code ; + } + } + } + break; + + case 226: // M226 P S- Wait until the specified pin reaches the state required + { + if(code_seen('P')){ + int pin_number = code_value(); // pin number + int pin_state = -1; // required pin state - default is inverted + + if(code_seen('S')) pin_state = code_value(); // required pin state + + if(pin_state >= -1 && pin_state <= 1){ + + for(int8_t i = 0; i < (int8_t)(sizeof(sensitive_pins)/sizeof(int)); i++) + { + if (sensitive_pins[i] == pin_number) + { + pin_number = -1; + break; + } + } + + if (pin_number > -1) + { + int target = LOW; + + st_synchronize(); + + pinMode(pin_number, INPUT); + + switch(pin_state){ + case 1: + target = HIGH; + break; + + case 0: + target = LOW; + break; + + case -1: + target = !digitalRead(pin_number); + break; + } + + while(digitalRead(pin_number) != target){ + manage_heater(); + manage_inactivity(); + lcd_update(); + } + } + } + } + } + break; + + #if NUM_SERVOS > 0 + case 280: // M280 - set servo position absolute. P: servo index, S: angle or microseconds + { + int servo_index = -1; + int servo_position = 0; + if (code_seen('P')) + servo_index = code_value(); + if (code_seen('S')) { + servo_position = code_value(); + if ((servo_index >= 0) && (servo_index < NUM_SERVOS)) { +#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + servos[servo_index].attach(0); +#endif + servos[servo_index].write(servo_position); +#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + delay(PROBE_SERVO_DEACTIVATION_DELAY); + servos[servo_index].detach(); +#endif + } + else { + SERIAL_ECHO_START; + SERIAL_ECHO("Servo "); + SERIAL_ECHO(servo_index); + SERIAL_ECHOLN(" out of range"); + } + } + else if (servo_index >= 0) { + SERIAL_PROTOCOL(MSG_OK); + SERIAL_PROTOCOL(" Servo "); + SERIAL_PROTOCOL(servo_index); + SERIAL_PROTOCOL(": "); + SERIAL_PROTOCOL(servos[servo_index].read()); + SERIAL_PROTOCOLLN(""); + } + } + break; + #endif // NUM_SERVOS > 0 + + #if (LARGE_FLASH == true && ( BEEPER > 0 || defined(ULTRALCD) || defined(LCD_USE_I2C_BUZZER))) + case 300: // M300 + { + int beepS = code_seen('S') ? code_value() : 110; + int beepP = code_seen('P') ? code_value() : 1000; + if (beepS > 0) + { + #if BEEPER > 0 + tone(BEEPER, beepS); + delay(beepP); + noTone(BEEPER); + #elif defined(ULTRALCD) + lcd_buzz(beepS, beepP); + #elif defined(LCD_USE_I2C_BUZZER) + lcd_buzz(beepP, beepS); + #endif + } + else + { + delay(beepP); + } + } + break; + #endif // M300 + + #ifdef PIDTEMP + case 301: // M301 + { + + // multi-extruder PID patch: M301 updates or prints a single extruder's PID values + // default behaviour (omitting E parameter) is to update for extruder 0 only + int e = 0; // extruder being updated + if (code_seen('E')) + { + e = (int)code_value(); + } + if (e < EXTRUDERS) // catch bad input value + { + + if (code_seen('P')) PID_PARAM(Kp,e) = code_value(); + if (code_seen('I')) PID_PARAM(Ki,e) = scalePID_i(code_value()); + if (code_seen('D')) PID_PARAM(Kd,e) = scalePID_d(code_value()); + #ifdef PID_ADD_EXTRUSION_RATE + if (code_seen('C')) PID_PARAM(Kc,e) = code_value(); + #endif + + updatePID(); + SERIAL_PROTOCOL(MSG_OK); + #ifdef PID_PARAMS_PER_EXTRUDER + SERIAL_PROTOCOL(" e:"); // specify extruder in serial output + SERIAL_PROTOCOL(e); + #endif // PID_PARAMS_PER_EXTRUDER + SERIAL_PROTOCOL(" p:"); + SERIAL_PROTOCOL(PID_PARAM(Kp,e)); + SERIAL_PROTOCOL(" i:"); + SERIAL_PROTOCOL(unscalePID_i(PID_PARAM(Ki,e))); + SERIAL_PROTOCOL(" d:"); + SERIAL_PROTOCOL(unscalePID_d(PID_PARAM(Kd,e))); + #ifdef PID_ADD_EXTRUSION_RATE + SERIAL_PROTOCOL(" c:"); + //Kc does not have scaling applied above, or in resetting defaults + SERIAL_PROTOCOL(PID_PARAM(Kc,e)); + #endif + SERIAL_PROTOCOLLN(""); + + } + else + { + SERIAL_ECHO_START; + SERIAL_ECHOLN(MSG_INVALID_EXTRUDER); + } + + } + break; + #endif //PIDTEMP + #ifdef PIDTEMPBED + case 304: // M304 + { + if(code_seen('P')) bedKp = code_value(); + if(code_seen('I')) bedKi = scalePID_i(code_value()); + if(code_seen('D')) bedKd = scalePID_d(code_value()); + + updatePID(); + SERIAL_PROTOCOL(MSG_OK); + SERIAL_PROTOCOL(" p:"); + SERIAL_PROTOCOL(bedKp); + SERIAL_PROTOCOL(" i:"); + SERIAL_PROTOCOL(unscalePID_i(bedKi)); + SERIAL_PROTOCOL(" d:"); + SERIAL_PROTOCOL(unscalePID_d(bedKd)); + SERIAL_PROTOCOLLN(""); + } + break; + #endif //PIDTEMP + case 240: // M240 Triggers a camera by emulating a Canon RC-1 : http://www.doc-diy.net/photo/rc-1_hacked/ + { + #ifdef CHDK + + OUT_WRITE(CHDK, HIGH); + chdkHigh = millis(); + chdkActive = true; + + #else + + #if defined(PHOTOGRAPH_PIN) && PHOTOGRAPH_PIN > -1 + const uint8_t NUM_PULSES=16; + const float PULSE_LENGTH=0.01524; + for(int i=0; i < NUM_PULSES; i++) { + WRITE(PHOTOGRAPH_PIN, HIGH); + _delay_ms(PULSE_LENGTH); + WRITE(PHOTOGRAPH_PIN, LOW); + _delay_ms(PULSE_LENGTH); + } + delay(7.33); + for(int i=0; i < NUM_PULSES; i++) { + WRITE(PHOTOGRAPH_PIN, HIGH); + _delay_ms(PULSE_LENGTH); + WRITE(PHOTOGRAPH_PIN, LOW); + _delay_ms(PULSE_LENGTH); + } + #endif + #endif //chdk end if + } + break; +#ifdef DOGLCD + case 250: // M250 Set LCD contrast value: C (value 0..63) + { + if (code_seen('C')) { + lcd_setcontrast( ((int)code_value())&63 ); + } + SERIAL_PROTOCOLPGM("lcd contrast value: "); + SERIAL_PROTOCOL(lcd_contrast); + SERIAL_PROTOCOLLN(""); + } + break; +#endif + #ifdef PREVENT_DANGEROUS_EXTRUDE + case 302: // allow cold extrudes, or set the minimum extrude temperature + { + float temp = .0; + if (code_seen('S')) temp=code_value(); + set_extrude_min_temp(temp); + } + break; + #endif + case 303: // M303 PID autotune + { + float temp = 150.0; + int e=0; + int c=5; + if (code_seen('E')) e=code_value(); + if (e<0) + temp=70; + if (code_seen('S')) temp=code_value(); + if (code_seen('C')) c=code_value(); + PID_autotune(temp, e, c); + } + break; + #ifdef SCARA + case 360: // M360 SCARA Theta pos1 + SERIAL_ECHOLN(" Cal: Theta 0 "); + //SoftEndsEnabled = false; // Ignore soft endstops during calibration + //SERIAL_ECHOLN(" Soft endstops disabled "); + if(Stopped == false) { + //get_coordinates(); // For X Y Z E F + delta[X_AXIS] = 0; + delta[Y_AXIS] = 120; + calculate_SCARA_forward_Transform(delta); + destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS]; + destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS]; + + prepare_move(); + //ClearToSend(); + return; + } + break; + + case 361: // SCARA Theta pos2 + SERIAL_ECHOLN(" Cal: Theta 90 "); + //SoftEndsEnabled = false; // Ignore soft endstops during calibration + //SERIAL_ECHOLN(" Soft endstops disabled "); + if(Stopped == false) { + //get_coordinates(); // For X Y Z E F + delta[X_AXIS] = 90; + delta[Y_AXIS] = 130; + calculate_SCARA_forward_Transform(delta); + destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS]; + destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS]; + + prepare_move(); + //ClearToSend(); + return; + } + break; + case 362: // SCARA Psi pos1 + SERIAL_ECHOLN(" Cal: Psi 0 "); + //SoftEndsEnabled = false; // Ignore soft endstops during calibration + //SERIAL_ECHOLN(" Soft endstops disabled "); + if(Stopped == false) { + //get_coordinates(); // For X Y Z E F + delta[X_AXIS] = 60; + delta[Y_AXIS] = 180; + calculate_SCARA_forward_Transform(delta); + destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS]; + destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS]; + + prepare_move(); + //ClearToSend(); + return; + } + break; + case 363: // SCARA Psi pos2 + SERIAL_ECHOLN(" Cal: Psi 90 "); + //SoftEndsEnabled = false; // Ignore soft endstops during calibration + //SERIAL_ECHOLN(" Soft endstops disabled "); + if(Stopped == false) { + //get_coordinates(); // For X Y Z E F + delta[X_AXIS] = 50; + delta[Y_AXIS] = 90; + calculate_SCARA_forward_Transform(delta); + destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS]; + destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS]; + + prepare_move(); + //ClearToSend(); + return; + } + break; + case 364: // SCARA Psi pos3 (90 deg to Theta) + SERIAL_ECHOLN(" Cal: Theta-Psi 90 "); + // SoftEndsEnabled = false; // Ignore soft endstops during calibration + //SERIAL_ECHOLN(" Soft endstops disabled "); + if(Stopped == false) { + //get_coordinates(); // For X Y Z E F + delta[X_AXIS] = 45; + delta[Y_AXIS] = 135; + calculate_SCARA_forward_Transform(delta); + destination[X_AXIS] = delta[X_AXIS]/axis_scaling[X_AXIS]; + destination[Y_AXIS] = delta[Y_AXIS]/axis_scaling[Y_AXIS]; + + prepare_move(); + //ClearToSend(); + return; + } + break; + case 365: // M364 Set SCARA scaling for X Y Z + for(int8_t i=0; i < 3; i++) + { + if(code_seen(axis_codes[i])) + { + + axis_scaling[i] = code_value(); + + } + } + break; + #endif + +#ifdef EXT_SOLENOID + case 380: + enable_solenoid_on_active_extruder(); + break; + + case 381: + disable_all_solenoids(); + break; +#endif //EXT_SOLENOID + + case 400: // M400 finish all moves + { + st_synchronize(); + } + break; +#if defined(ENABLE_AUTO_BED_LEVELING) && defined(SERVO_ENDSTOPS) && not defined(Z_PROBE_SLED) + case 401: + { + engage_z_probe(); // Engage Z Servo endstop if available + } + break; + + case 402: + { + retract_z_probe(); // Retract Z Servo endstop if enabled + } + break; +#endif + +#ifdef FILAMENT_SENSOR +case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or display nominal filament width + { + #if (FILWIDTH_PIN > -1) + if(code_seen('N')) filament_width_nominal=code_value(); + else{ + SERIAL_PROTOCOLPGM("Filament dia (nominal mm):"); + SERIAL_PROTOCOLLN(filament_width_nominal); + } + #endif + } + break; + + case 405: //M405 Turn on filament sensor for control + { + + + if(code_seen('D')) meas_delay_cm=code_value(); + + if(meas_delay_cm> MAX_MEASUREMENT_DELAY) + meas_delay_cm = MAX_MEASUREMENT_DELAY; + + if(delay_index2 == -1) //initialize the ring buffer if it has not been done since startup + { + int temp_ratio = widthFil_to_size_ratio(); + + for (delay_index1=0; delay_index1<(MAX_MEASUREMENT_DELAY+1); ++delay_index1 ){ + measurement_delay[delay_index1]=temp_ratio-100; //subtract 100 to scale within a signed byte + } + delay_index1=0; + delay_index2=0; + } + + filament_sensor = true ; + + //SERIAL_PROTOCOLPGM("Filament dia (measured mm):"); + //SERIAL_PROTOCOL(filament_width_meas); + //SERIAL_PROTOCOLPGM("Extrusion ratio(%):"); + //SERIAL_PROTOCOL(extrudemultiply); + } + break; + + case 406: //M406 Turn off filament sensor for control + { + filament_sensor = false ; + } + break; + + case 407: //M407 Display measured filament diameter + { + + + + SERIAL_PROTOCOLPGM("Filament dia (measured mm):"); + SERIAL_PROTOCOLLN(filament_width_meas); + } + break; + #endif + + + + + + case 500: // M500 Store settings in EEPROM + { + Config_StoreSettings(); + } + break; + case 501: // M501 Read settings from EEPROM + { + Config_RetrieveSettings(); + } + break; + case 502: // M502 Revert to default settings + { + Config_ResetDefault(); + } + break; + case 503: // M503 print settings currently in memory + { + Config_PrintSettings(code_seen('S') && code_value == 0); + } + break; + #ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + case 540: + { + if(code_seen('S')) abort_on_endstop_hit = code_value() > 0; + } + break; + #endif + + #ifdef CUSTOM_M_CODE_SET_Z_PROBE_OFFSET + case CUSTOM_M_CODE_SET_Z_PROBE_OFFSET: + { + float value; + if (code_seen('Z')) + { + value = code_value(); + if ((Z_PROBE_OFFSET_RANGE_MIN <= value) && (value <= Z_PROBE_OFFSET_RANGE_MAX)) + { + zprobe_zoffset = -value; // compare w/ line 278 of ConfigurationStore.cpp + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_ZPROBE_ZOFFSET " " MSG_OK); + SERIAL_PROTOCOLLN(""); + } + else + { + SERIAL_ECHO_START; + SERIAL_ECHOPGM(MSG_ZPROBE_ZOFFSET); + SERIAL_ECHOPGM(MSG_Z_MIN); + SERIAL_ECHO(Z_PROBE_OFFSET_RANGE_MIN); + SERIAL_ECHOPGM(MSG_Z_MAX); + SERIAL_ECHO(Z_PROBE_OFFSET_RANGE_MAX); + SERIAL_PROTOCOLLN(""); + } + } + else + { + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_ZPROBE_ZOFFSET " : "); + SERIAL_ECHO(-zprobe_zoffset); + SERIAL_PROTOCOLLN(""); + } + break; + } + #endif // CUSTOM_M_CODE_SET_Z_PROBE_OFFSET + + #ifdef FILAMENTCHANGEENABLE + case 600: //Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] + { + float target[NUM_AXIS], lastpos[NUM_AXIS], fr60 = feedrate/60; + for (int i=0; i 0 + OUT_WRITE(BEEPER,HIGH); + delay(3); + WRITE(BEEPER,LOW); + delay(3); + #else + #if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS) + lcd_buzz(1000/6,100); + #else + lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS,LCD_FEEDBACK_FREQUENCY_HZ); + #endif + #endif + } + } + + //return to normal + if(code_seen('L')) + { + target[E_AXIS]+= -code_value(); + } + else + { + #ifdef FILAMENTCHANGE_FINALRETRACT + target[E_AXIS]+=(-1)*FILAMENTCHANGE_FINALRETRACT ; + #endif + } + current_position[E_AXIS]=target[E_AXIS]; //the long retract of L is compensated by manual filament feeding + plan_set_e_position(current_position[E_AXIS]); + + RUNPLAN; //should do nothing + + //reset LCD alert message + lcd_reset_alert_level(); + + #ifdef DELTA + calculate_delta(lastpos); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move xyz back + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder); //final untretract + #else + plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], target[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move xy back + plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move z back + plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder); //final untretract + #endif + } + break; + #endif //FILAMENTCHANGEENABLE + #ifdef DUAL_X_CARRIAGE + case 605: // Set dual x-carriage movement mode: + // M605 S0: Full control mode. The slicer has full control over x-carriage movement + // M605 S1: Auto-park mode. The inactive head will auto park/unpark without slicer involvement + // M605 S2 [Xnnn] [Rmmm]: Duplication mode. The second extruder will duplicate the first with nnn + // millimeters x-offset and an optional differential hotend temperature of + // mmm degrees. E.g., with "M605 S2 X100 R2" the second extruder will duplicate + // the first with a spacing of 100mm in the x direction and 2 degrees hotter. + // + // Note: the X axis should be homed after changing dual x-carriage mode. + { + st_synchronize(); + + if (code_seen('S')) + dual_x_carriage_mode = code_value(); + + if (dual_x_carriage_mode == DXC_DUPLICATION_MODE) + { + if (code_seen('X')) + duplicate_extruder_x_offset = max(code_value(),X2_MIN_POS - x_home_pos(0)); + + if (code_seen('R')) + duplicate_extruder_temp_offset = code_value(); + + SERIAL_ECHO_START; + SERIAL_ECHOPGM(MSG_HOTEND_OFFSET); + SERIAL_ECHO(" "); + SERIAL_ECHO(extruder_offset[X_AXIS][0]); + SERIAL_ECHO(","); + SERIAL_ECHO(extruder_offset[Y_AXIS][0]); + SERIAL_ECHO(" "); + SERIAL_ECHO(duplicate_extruder_x_offset); + SERIAL_ECHO(","); + SERIAL_ECHOLN(extruder_offset[Y_AXIS][1]); + } + else if (dual_x_carriage_mode != DXC_FULL_CONTROL_MODE && dual_x_carriage_mode != DXC_AUTO_PARK_MODE) + { + dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE; + } + + active_extruder_parked = false; + extruder_duplication_enabled = false; + delayed_move_time = 0; + } + break; + #endif //DUAL_X_CARRIAGE + + case 907: // M907 Set digital trimpot motor current using axis codes. + { + #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 + for(int i=0;i -1 + uint8_t channel,current; + if(code_seen('P')) channel=code_value(); + if(code_seen('S')) current=code_value(); + digitalPotWrite(channel, current); + #endif + } + break; + case 350: // M350 Set microstepping mode. Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers. + { + #if defined(X_MS1_PIN) && X_MS1_PIN > -1 + if(code_seen('S')) for(int i=0;i<=4;i++) microstep_mode(i,code_value()); + for(int i=0;i -1 + if(code_seen('S')) switch((int)code_value()) + { + case 1: + for(int i=0;i= EXTRUDERS) { + SERIAL_ECHO_START; + SERIAL_ECHO("T"); + SERIAL_ECHO(tmp_extruder); + SERIAL_ECHOLN(MSG_INVALID_EXTRUDER); + } + else { + boolean make_move = false; + if(code_seen('F')) { + make_move = true; + next_feedrate = code_value(); + if(next_feedrate > 0.0) { + feedrate = next_feedrate; + } + } + #if EXTRUDERS > 1 + if(tmp_extruder != active_extruder) { + // Save current position to return to after applying extruder offset + memcpy(destination, current_position, sizeof(destination)); + #ifdef DUAL_X_CARRIAGE + if (dual_x_carriage_mode == DXC_AUTO_PARK_MODE && Stopped == false && + (delayed_move_time != 0 || current_position[X_AXIS] != x_home_pos(active_extruder))) + { + // Park old head: 1) raise 2) move to park position 3) lower + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] + TOOLCHANGE_PARK_ZLIFT, + current_position[E_AXIS], max_feedrate[Z_AXIS], active_extruder); + plan_buffer_line(x_home_pos(active_extruder), current_position[Y_AXIS], current_position[Z_AXIS] + TOOLCHANGE_PARK_ZLIFT, + current_position[E_AXIS], max_feedrate[X_AXIS], active_extruder); + plan_buffer_line(x_home_pos(active_extruder), current_position[Y_AXIS], current_position[Z_AXIS], + current_position[E_AXIS], max_feedrate[Z_AXIS], active_extruder); + st_synchronize(); + } + + // apply Y & Z extruder offset (x offset is already used in determining home pos) + current_position[Y_AXIS] = current_position[Y_AXIS] - + extruder_offset[Y_AXIS][active_extruder] + + extruder_offset[Y_AXIS][tmp_extruder]; + current_position[Z_AXIS] = current_position[Z_AXIS] - + extruder_offset[Z_AXIS][active_extruder] + + extruder_offset[Z_AXIS][tmp_extruder]; + + active_extruder = tmp_extruder; + + // This function resets the max/min values - the current position may be overwritten below. + axis_is_at_home(X_AXIS); + + if (dual_x_carriage_mode == DXC_FULL_CONTROL_MODE) + { + current_position[X_AXIS] = inactive_extruder_x_pos; + inactive_extruder_x_pos = destination[X_AXIS]; + } + else if (dual_x_carriage_mode == DXC_DUPLICATION_MODE) + { + active_extruder_parked = (active_extruder == 0); // this triggers the second extruder to move into the duplication position + if (active_extruder == 0 || active_extruder_parked) + current_position[X_AXIS] = inactive_extruder_x_pos; + else + current_position[X_AXIS] = destination[X_AXIS] + duplicate_extruder_x_offset; + inactive_extruder_x_pos = destination[X_AXIS]; + extruder_duplication_enabled = false; + } + else + { + // record raised toolhead position for use by unpark + memcpy(raised_parked_position, current_position, sizeof(raised_parked_position)); + raised_parked_position[Z_AXIS] += TOOLCHANGE_UNPARK_ZLIFT; + active_extruder_parked = true; + delayed_move_time = 0; + } + #else + // Offset extruder (only by XY) + int i; + for(i = 0; i < 2; i++) { + current_position[i] = current_position[i] - + extruder_offset[i][active_extruder] + + extruder_offset[i][tmp_extruder]; + } + // Set the new active extruder and position + active_extruder = tmp_extruder; + #endif //else DUAL_X_CARRIAGE +#ifdef DELTA + + calculate_delta(current_position); // change cartesian kinematic to delta kinematic; + //sent position to plan_set_position(); + plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS],current_position[E_AXIS]); + +#else + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + +#endif + // Move to the old position if 'F' was in the parameters + if(make_move && Stopped == false) { + prepare_move(); + } + } + +#ifdef EXT_SOLENOID + st_synchronize(); + disable_all_solenoids(); + enable_solenoid_on_active_extruder(); +#endif //EXT_SOLENOID + + #endif + SERIAL_ECHO_START; + SERIAL_ECHO(MSG_ACTIVE_EXTRUDER); + SERIAL_PROTOCOLLN((int)active_extruder); + } + } + + else + { + SERIAL_ECHO_START; + SERIAL_ECHOPGM(MSG_UNKNOWN_COMMAND); + SERIAL_ECHO(cmdbuffer[bufindr]); + SERIAL_ECHOLNPGM("\""); + } + + ClearToSend(); +} + +void FlushSerialRequestResend() +{ + //char cmdbuffer[bufindr][100]="Resend:"; + MYSERIAL.flush(); + SERIAL_PROTOCOLPGM(MSG_RESEND); + SERIAL_PROTOCOLLN(gcode_LastN + 1); + ClearToSend(); +} + +void ClearToSend() +{ + previous_millis_cmd = millis(); + #ifdef SDSUPPORT + if(fromsd[bufindr]) + return; + #endif //SDSUPPORT + SERIAL_PROTOCOLLNPGM(MSG_OK); +} + +void get_coordinates() +{ + bool seen[4]={false,false,false,false}; + for(int8_t i=0; i < NUM_AXIS; i++) { + if(code_seen(axis_codes[i])) + { + destination[i] = (float)code_value() + (axis_relative_modes[i] || relative_mode)*current_position[i]; + seen[i]=true; + } + else destination[i] = current_position[i]; //Are these else lines really needed? + } + if(code_seen('F')) { + next_feedrate = code_value(); + if(next_feedrate > 0.0) feedrate = next_feedrate; + } +} + +void get_arc_coordinates() +{ +#ifdef SF_ARC_FIX + bool relative_mode_backup = relative_mode; + relative_mode = true; +#endif + get_coordinates(); +#ifdef SF_ARC_FIX + relative_mode=relative_mode_backup; +#endif + + if(code_seen('I')) { + offset[0] = code_value(); + } + else { + offset[0] = 0.0; + } + if(code_seen('J')) { + offset[1] = code_value(); + } + else { + offset[1] = 0.0; + } +} + +void clamp_to_software_endstops(float target[3]) +{ + if (min_software_endstops) { + if (target[X_AXIS] < min_pos[X_AXIS]) target[X_AXIS] = min_pos[X_AXIS]; + if (target[Y_AXIS] < min_pos[Y_AXIS]) target[Y_AXIS] = min_pos[Y_AXIS]; + + float negative_z_offset = 0; + #ifdef ENABLE_AUTO_BED_LEVELING + if (Z_PROBE_OFFSET_FROM_EXTRUDER < 0) negative_z_offset = negative_z_offset + Z_PROBE_OFFSET_FROM_EXTRUDER; + if (add_homing[Z_AXIS] < 0) negative_z_offset = negative_z_offset + add_homing[Z_AXIS]; + #endif + + if (target[Z_AXIS] < min_pos[Z_AXIS]+negative_z_offset) target[Z_AXIS] = min_pos[Z_AXIS]+negative_z_offset; + } + + if (max_software_endstops) { + if (target[X_AXIS] > max_pos[X_AXIS]) target[X_AXIS] = max_pos[X_AXIS]; + if (target[Y_AXIS] > max_pos[Y_AXIS]) target[Y_AXIS] = max_pos[Y_AXIS]; + if (target[Z_AXIS] > max_pos[Z_AXIS]) target[Z_AXIS] = max_pos[Z_AXIS]; + } +} + +#ifdef DELTA +void recalc_delta_settings(float radius, float diagonal_rod) +{ + delta_tower1_x= -SIN_60*radius; // front left tower + delta_tower1_y= -COS_60*radius; + delta_tower2_x= SIN_60*radius; // front right tower + delta_tower2_y= -COS_60*radius; + delta_tower3_x= 0.0; // back middle tower + delta_tower3_y= radius; + delta_diagonal_rod_2= sq(diagonal_rod); +} + +void calculate_delta(float cartesian[3]) +{ + delta[X_AXIS] = sqrt(delta_diagonal_rod_2 + - sq(delta_tower1_x-cartesian[X_AXIS]) + - sq(delta_tower1_y-cartesian[Y_AXIS]) + ) + cartesian[Z_AXIS]; + delta[Y_AXIS] = sqrt(delta_diagonal_rod_2 + - sq(delta_tower2_x-cartesian[X_AXIS]) + - sq(delta_tower2_y-cartesian[Y_AXIS]) + ) + cartesian[Z_AXIS]; + delta[Z_AXIS] = sqrt(delta_diagonal_rod_2 + - sq(delta_tower3_x-cartesian[X_AXIS]) + - sq(delta_tower3_y-cartesian[Y_AXIS]) + ) + cartesian[Z_AXIS]; + /* + SERIAL_ECHOPGM("cartesian x="); SERIAL_ECHO(cartesian[X_AXIS]); + SERIAL_ECHOPGM(" y="); SERIAL_ECHO(cartesian[Y_AXIS]); + SERIAL_ECHOPGM(" z="); SERIAL_ECHOLN(cartesian[Z_AXIS]); + + SERIAL_ECHOPGM("delta x="); SERIAL_ECHO(delta[X_AXIS]); + SERIAL_ECHOPGM(" y="); SERIAL_ECHO(delta[Y_AXIS]); + SERIAL_ECHOPGM(" z="); SERIAL_ECHOLN(delta[Z_AXIS]); + */ +} +#endif + +void prepare_move() +{ + clamp_to_software_endstops(destination); + previous_millis_cmd = millis(); + + #ifdef SCARA //for now same as delta-code + +float difference[NUM_AXIS]; +for (int8_t i=0; i < NUM_AXIS; i++) { + difference[i] = destination[i] - current_position[i]; +} + +float cartesian_mm = sqrt( sq(difference[X_AXIS]) + + sq(difference[Y_AXIS]) + + sq(difference[Z_AXIS])); +if (cartesian_mm < 0.000001) { cartesian_mm = abs(difference[E_AXIS]); } +if (cartesian_mm < 0.000001) { return; } +float seconds = 6000 * cartesian_mm / feedrate / feedmultiply; +int steps = max(1, int(scara_segments_per_second * seconds)); + //SERIAL_ECHOPGM("mm="); SERIAL_ECHO(cartesian_mm); + //SERIAL_ECHOPGM(" seconds="); SERIAL_ECHO(seconds); + //SERIAL_ECHOPGM(" steps="); SERIAL_ECHOLN(steps); +for (int s = 1; s <= steps; s++) { + float fraction = float(s) / float(steps); + for(int8_t i=0; i < NUM_AXIS; i++) { + destination[i] = current_position[i] + difference[i] * fraction; + } + + + calculate_delta(destination); + //SERIAL_ECHOPGM("destination[X_AXIS]="); SERIAL_ECHOLN(destination[X_AXIS]); + //SERIAL_ECHOPGM("destination[Y_AXIS]="); SERIAL_ECHOLN(destination[Y_AXIS]); + //SERIAL_ECHOPGM("destination[Z_AXIS]="); SERIAL_ECHOLN(destination[Z_AXIS]); + //SERIAL_ECHOPGM("delta[X_AXIS]="); SERIAL_ECHOLN(delta[X_AXIS]); + //SERIAL_ECHOPGM("delta[Y_AXIS]="); SERIAL_ECHOLN(delta[Y_AXIS]); + //SERIAL_ECHOPGM("delta[Z_AXIS]="); SERIAL_ECHOLN(delta[Z_AXIS]); + + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], + destination[E_AXIS], feedrate*feedmultiply/60/100.0, + active_extruder); +} +#endif // SCARA + +#ifdef DELTA + float difference[NUM_AXIS]; + for (int8_t i=0; i < NUM_AXIS; i++) { + difference[i] = destination[i] - current_position[i]; + } + float cartesian_mm = sqrt(sq(difference[X_AXIS]) + + sq(difference[Y_AXIS]) + + sq(difference[Z_AXIS])); + if (cartesian_mm < 0.000001) { cartesian_mm = abs(difference[E_AXIS]); } + if (cartesian_mm < 0.000001) { return; } + float seconds = 6000 * cartesian_mm / feedrate / feedmultiply; + int steps = max(1, int(delta_segments_per_second * seconds)); + // SERIAL_ECHOPGM("mm="); SERIAL_ECHO(cartesian_mm); + // SERIAL_ECHOPGM(" seconds="); SERIAL_ECHO(seconds); + // SERIAL_ECHOPGM(" steps="); SERIAL_ECHOLN(steps); + for (int s = 1; s <= steps; s++) { + float fraction = float(s) / float(steps); + for(int8_t i=0; i < NUM_AXIS; i++) { + destination[i] = current_position[i] + difference[i] * fraction; + } + calculate_delta(destination); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], + destination[E_AXIS], feedrate*feedmultiply/60/100.0, + active_extruder); + } + +#endif // DELTA + +#ifdef DUAL_X_CARRIAGE + if (active_extruder_parked) + { + if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && active_extruder == 0) + { + // move duplicate extruder into correct duplication position. + plan_set_position(inactive_extruder_x_pos, current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + plan_buffer_line(current_position[X_AXIS] + duplicate_extruder_x_offset, current_position[Y_AXIS], current_position[Z_AXIS], + current_position[E_AXIS], max_feedrate[X_AXIS], 1); + plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); + st_synchronize(); + extruder_duplication_enabled = true; + active_extruder_parked = false; + } + else if (dual_x_carriage_mode == DXC_AUTO_PARK_MODE) // handle unparking of head + { + if (current_position[E_AXIS] == destination[E_AXIS]) + { + // this is a travel move - skit it but keep track of current position (so that it can later + // be used as start of first non-travel move) + if (delayed_move_time != 0xFFFFFFFFUL) + { + memcpy(current_position, destination, sizeof(current_position)); + if (destination[Z_AXIS] > raised_parked_position[Z_AXIS]) + raised_parked_position[Z_AXIS] = destination[Z_AXIS]; + delayed_move_time = millis(); + return; + } + } + delayed_move_time = 0; + // unpark extruder: 1) raise, 2) move into starting XY position, 3) lower + plan_buffer_line(raised_parked_position[X_AXIS], raised_parked_position[Y_AXIS], raised_parked_position[Z_AXIS], current_position[E_AXIS], max_feedrate[Z_AXIS], active_extruder); + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], raised_parked_position[Z_AXIS], + current_position[E_AXIS], min(max_feedrate[X_AXIS],max_feedrate[Y_AXIS]), active_extruder); + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], + current_position[E_AXIS], max_feedrate[Z_AXIS], active_extruder); + active_extruder_parked = false; + } + } +#endif //DUAL_X_CARRIAGE + +#if ! (defined DELTA || defined SCARA) + // Do not use feedmultiply for E or Z only moves + if( (current_position[X_AXIS] == destination [X_AXIS]) && (current_position[Y_AXIS] == destination [Y_AXIS])) { + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); + } + else { + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply/60/100.0, active_extruder); + } +#endif // !(DELTA || SCARA) + + for(int8_t i=0; i < NUM_AXIS; i++) { + current_position[i] = destination[i]; + } +} + +void prepare_arc_move(char isclockwise) { + float r = hypot(offset[X_AXIS], offset[Y_AXIS]); // Compute arc radius for mc_arc + + // Trace the arc + mc_arc(current_position, destination, offset, X_AXIS, Y_AXIS, Z_AXIS, feedrate*feedmultiply/60/100.0, r, isclockwise, active_extruder); + + // As far as the parser is concerned, the position is now == target. In reality the + // motion control system might still be processing the action and the real tool position + // in any intermediate location. + for(int8_t i=0; i < NUM_AXIS; i++) { + current_position[i] = destination[i]; + } + previous_millis_cmd = millis(); +} + +#if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1 + +#if defined(FAN_PIN) + #if CONTROLLERFAN_PIN == FAN_PIN + #error "You cannot set CONTROLLERFAN_PIN equal to FAN_PIN" + #endif +#endif + +unsigned long lastMotor = 0; //Save the time for when a motor was turned on last +unsigned long lastMotorCheck = 0; + +void controllerFan() +{ + if ((millis() - lastMotorCheck) >= 2500) //Not a time critical function, so we only check every 2500ms + { + lastMotorCheck = millis(); + + if(!READ(X_ENABLE_PIN) || !READ(Y_ENABLE_PIN) || !READ(Z_ENABLE_PIN) || (soft_pwm_bed > 0) + #if EXTRUDERS > 2 + || !READ(E2_ENABLE_PIN) + #endif + #if EXTRUDER > 1 + #if defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1 + || !READ(X2_ENABLE_PIN) + #endif + || !READ(E1_ENABLE_PIN) + #endif + || !READ(E0_ENABLE_PIN)) //If any of the drivers are enabled... + { + lastMotor = millis(); //... set time to NOW so the fan will turn on + } + + if ((millis() - lastMotor) >= (CONTROLLERFAN_SECS*1000UL) || lastMotor == 0) //If the last time any driver was enabled, is longer since than CONTROLLERSEC... + { + digitalWrite(CONTROLLERFAN_PIN, 0); + analogWrite(CONTROLLERFAN_PIN, 0); + } + else + { + // allows digital or PWM fan output to be used (see M42 handling) + digitalWrite(CONTROLLERFAN_PIN, CONTROLLERFAN_SPEED); + analogWrite(CONTROLLERFAN_PIN, CONTROLLERFAN_SPEED); + } + } +} +#endif + +#ifdef SCARA +void calculate_SCARA_forward_Transform(float f_scara[3]) +{ + // Perform forward kinematics, and place results in delta[3] + // The maths and first version has been done by QHARLEY . Integrated into masterbranch 06/2014 and slightly restructured by Joachim Cerny in June 2014 + + float x_sin, x_cos, y_sin, y_cos; + + //SERIAL_ECHOPGM("f_delta x="); SERIAL_ECHO(f_scara[X_AXIS]); + //SERIAL_ECHOPGM(" y="); SERIAL_ECHO(f_scara[Y_AXIS]); + + x_sin = sin(f_scara[X_AXIS]/SCARA_RAD2DEG) * Linkage_1; + x_cos = cos(f_scara[X_AXIS]/SCARA_RAD2DEG) * Linkage_1; + y_sin = sin(f_scara[Y_AXIS]/SCARA_RAD2DEG) * Linkage_2; + y_cos = cos(f_scara[Y_AXIS]/SCARA_RAD2DEG) * Linkage_2; + + // SERIAL_ECHOPGM(" x_sin="); SERIAL_ECHO(x_sin); + // SERIAL_ECHOPGM(" x_cos="); SERIAL_ECHO(x_cos); + // SERIAL_ECHOPGM(" y_sin="); SERIAL_ECHO(y_sin); + // SERIAL_ECHOPGM(" y_cos="); SERIAL_ECHOLN(y_cos); + + delta[X_AXIS] = x_cos + y_cos + SCARA_offset_x; //theta + delta[Y_AXIS] = x_sin + y_sin + SCARA_offset_y; //theta+phi + + //SERIAL_ECHOPGM(" delta[X_AXIS]="); SERIAL_ECHO(delta[X_AXIS]); + //SERIAL_ECHOPGM(" delta[Y_AXIS]="); SERIAL_ECHOLN(delta[Y_AXIS]); +} + +void calculate_delta(float cartesian[3]){ + //reverse kinematics. + // Perform reversed kinematics, and place results in delta[3] + // The maths and first version has been done by QHARLEY . Integrated into masterbranch 06/2014 and slightly restructured by Joachim Cerny in June 2014 + + float SCARA_pos[2]; + static float SCARA_C2, SCARA_S2, SCARA_K1, SCARA_K2, SCARA_theta, SCARA_psi; + + SCARA_pos[X_AXIS] = cartesian[X_AXIS] * axis_scaling[X_AXIS] - SCARA_offset_x; //Translate SCARA to standard X Y + SCARA_pos[Y_AXIS] = cartesian[Y_AXIS] * axis_scaling[Y_AXIS] - SCARA_offset_y; // With scaling factor. + + #if (Linkage_1 == Linkage_2) + SCARA_C2 = ( ( sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) ) / (2 * (float)L1_2) ) - 1; + #else + SCARA_C2 = ( sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) - (float)L1_2 - (float)L2_2 ) / 45000; + #endif + + SCARA_S2 = sqrt( 1 - sq(SCARA_C2) ); + + SCARA_K1 = Linkage_1 + Linkage_2 * SCARA_C2; + SCARA_K2 = Linkage_2 * SCARA_S2; + + SCARA_theta = ( atan2(SCARA_pos[X_AXIS],SCARA_pos[Y_AXIS])-atan2(SCARA_K1, SCARA_K2) ) * -1; + SCARA_psi = atan2(SCARA_S2,SCARA_C2); + + delta[X_AXIS] = SCARA_theta * SCARA_RAD2DEG; // Multiply by 180/Pi - theta is support arm angle + delta[Y_AXIS] = (SCARA_theta + SCARA_psi) * SCARA_RAD2DEG; // - equal to sub arm angle (inverted motor) + delta[Z_AXIS] = cartesian[Z_AXIS]; + + /* + SERIAL_ECHOPGM("cartesian x="); SERIAL_ECHO(cartesian[X_AXIS]); + SERIAL_ECHOPGM(" y="); SERIAL_ECHO(cartesian[Y_AXIS]); + SERIAL_ECHOPGM(" z="); SERIAL_ECHOLN(cartesian[Z_AXIS]); + + SERIAL_ECHOPGM("scara x="); SERIAL_ECHO(SCARA_pos[X_AXIS]); + SERIAL_ECHOPGM(" y="); SERIAL_ECHOLN(SCARA_pos[Y_AXIS]); + + SERIAL_ECHOPGM("delta x="); SERIAL_ECHO(delta[X_AXIS]); + SERIAL_ECHOPGM(" y="); SERIAL_ECHO(delta[Y_AXIS]); + SERIAL_ECHOPGM(" z="); SERIAL_ECHOLN(delta[Z_AXIS]); + + SERIAL_ECHOPGM("C2="); SERIAL_ECHO(SCARA_C2); + SERIAL_ECHOPGM(" S2="); SERIAL_ECHO(SCARA_S2); + SERIAL_ECHOPGM(" Theta="); SERIAL_ECHO(SCARA_theta); + SERIAL_ECHOPGM(" Psi="); SERIAL_ECHOLN(SCARA_psi); + SERIAL_ECHOLN(" ");*/ +} + +#endif + +#ifdef TEMP_STAT_LEDS +static bool blue_led = false; +static bool red_led = false; +static uint32_t stat_update = 0; + +void handle_status_leds(void) { + float max_temp = 0.0; + if(millis() > stat_update) { + stat_update += 500; // Update every 0.5s + for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) { + max_temp = max(max_temp, degHotend(cur_extruder)); + max_temp = max(max_temp, degTargetHotend(cur_extruder)); + } + #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1 + max_temp = max(max_temp, degTargetBed()); + max_temp = max(max_temp, degBed()); + #endif + if((max_temp > 55.0) && (red_led == false)) { + digitalWrite(STAT_LED_RED, 1); + digitalWrite(STAT_LED_BLUE, 0); + red_led = true; + blue_led = false; + } + if((max_temp < 54.0) && (blue_led == false)) { + digitalWrite(STAT_LED_RED, 0); + digitalWrite(STAT_LED_BLUE, 1); + red_led = false; + blue_led = true; + } + } +} +#endif + +void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument set in Marlin.h +{ + +#if defined(KILL_PIN) && KILL_PIN > -1 + static int killCount = 0; // make the inactivity button a bit less responsive + const int KILL_DELAY = 10000; +#endif + +#if defined(HOME_PIN) && HOME_PIN > -1 + static int homeDebounceCount = 0; // poor man's debouncing count + const int HOME_DEBOUNCE_DELAY = 10000; +#endif + + + if(buflen < (BUFSIZE-1)) + get_command(); + + if( (millis() - previous_millis_cmd) > max_inactive_time ) + if(max_inactive_time) + kill(); + if(stepper_inactive_time) { + if( (millis() - previous_millis_cmd) > stepper_inactive_time ) + { + if(blocks_queued() == false && ignore_stepper_queue == false) { + disable_x(); + disable_y(); + disable_z(); + disable_e0(); + disable_e1(); + disable_e2(); + } + } + } + + #ifdef CHDK //Check if pin should be set to LOW after M240 set it to HIGH + if (chdkActive && (millis() - chdkHigh > CHDK_DELAY)) + { + chdkActive = false; + WRITE(CHDK, LOW); + } + #endif + + #if defined(KILL_PIN) && KILL_PIN > -1 + + // Check if the kill button was pressed and wait just in case it was an accidental + // key kill key press + // ------------------------------------------------------------------------------- + if( 0 == READ(KILL_PIN) ) + { + killCount++; + } + else if (killCount > 0) + { + killCount--; + } + // Exceeded threshold and we can confirm that it was not accidental + // KILL the machine + // ---------------------------------------------------------------- + if ( killCount >= KILL_DELAY) + { + kill(); + } + #endif + +#if defined(HOME_PIN) && HOME_PIN > -1 + // Check to see if we have to home, use poor man's debouncer + // --------------------------------------------------------- + if ( 0 == READ(HOME_PIN) ) + { + if (homeDebounceCount == 0) + { + enquecommands_P((PSTR("G28"))); + homeDebounceCount++; + LCD_ALERTMESSAGEPGM(MSG_AUTO_HOME); + } + else if (homeDebounceCount < HOME_DEBOUNCE_DELAY) + { + homeDebounceCount++; + } + else + { + homeDebounceCount = 0; + } + } +#endif + + #if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1 + controllerFan(); //Check if fan should be turned on to cool stepper drivers down + #endif + #ifdef EXTRUDER_RUNOUT_PREVENT + if( (millis() - previous_millis_cmd) > EXTRUDER_RUNOUT_SECONDS*1000 ) + if(degHotend(active_extruder)>EXTRUDER_RUNOUT_MINTEMP) + { + bool oldstatus=READ(E0_ENABLE_PIN); + enable_e0(); + float oldepos=current_position[E_AXIS]; + float oldedes=destination[E_AXIS]; + plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], + destination[E_AXIS]+EXTRUDER_RUNOUT_EXTRUDE*EXTRUDER_RUNOUT_ESTEPS/axis_steps_per_unit[E_AXIS], + EXTRUDER_RUNOUT_SPEED/60.*EXTRUDER_RUNOUT_ESTEPS/axis_steps_per_unit[E_AXIS], active_extruder); + current_position[E_AXIS]=oldepos; + destination[E_AXIS]=oldedes; + plan_set_e_position(oldepos); + previous_millis_cmd=millis(); + st_synchronize(); + WRITE(E0_ENABLE_PIN,oldstatus); + } + #endif + #if defined(DUAL_X_CARRIAGE) + // handle delayed move timeout + if (delayed_move_time != 0 && (millis() - delayed_move_time) > 1000 && Stopped == false) + { + // travel moves have been received so enact them + delayed_move_time = 0xFFFFFFFFUL; // force moves to be done + memcpy(destination,current_position,sizeof(destination)); + prepare_move(); + } + #endif + #ifdef TEMP_STAT_LEDS + handle_status_leds(); + #endif + check_axes_activity(); +} + +void kill() +{ + cli(); // Stop interrupts + disable_heater(); + + disable_x(); + disable_y(); + disable_z(); + disable_e0(); + disable_e1(); + disable_e2(); + +#if defined(PS_ON_PIN) && PS_ON_PIN > -1 + pinMode(PS_ON_PIN,INPUT); +#endif + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_ERR_KILLED); + LCD_ALERTMESSAGEPGM(MSG_KILLED); + + // FMC small patch to update the LCD before ending + sei(); // enable interrupts + for ( int i=5; i--; lcd_update()) + { + delay(200); + } + cli(); // disable interrupts + suicide(); + while(1) { /* Intentionally left empty */ } // Wait for reset +} + +void Stop() +{ + disable_heater(); + if(Stopped == false) { + Stopped = true; + Stopped_gcode_LastN = gcode_LastN; // Save last g_code for restart + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_ERR_STOPPED); + LCD_MESSAGEPGM(MSG_STOPPED); + } +} + +bool IsStopped() { return Stopped; }; + +#ifdef FAST_PWM_FAN +void setPwmFrequency(uint8_t pin, int val) +{ + val &= 0x07; + switch(digitalPinToTimer(pin)) + { + + #if defined(TCCR0A) + case TIMER0A: + case TIMER0B: +// TCCR0B &= ~(_BV(CS00) | _BV(CS01) | _BV(CS02)); +// TCCR0B |= val; + break; + #endif + + #if defined(TCCR1A) + case TIMER1A: + case TIMER1B: +// TCCR1B &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12)); +// TCCR1B |= val; + break; + #endif + + #if defined(TCCR2) + case TIMER2: + case TIMER2: + TCCR2 &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12)); + TCCR2 |= val; + break; + #endif + + #if defined(TCCR2A) + case TIMER2A: + case TIMER2B: + TCCR2B &= ~(_BV(CS20) | _BV(CS21) | _BV(CS22)); + TCCR2B |= val; + break; + #endif + + #if defined(TCCR3A) + case TIMER3A: + case TIMER3B: + case TIMER3C: + TCCR3B &= ~(_BV(CS30) | _BV(CS31) | _BV(CS32)); + TCCR3B |= val; + break; + #endif + + #if defined(TCCR4A) + case TIMER4A: + case TIMER4B: + case TIMER4C: + TCCR4B &= ~(_BV(CS40) | _BV(CS41) | _BV(CS42)); + TCCR4B |= val; + break; + #endif + + #if defined(TCCR5A) + case TIMER5A: + case TIMER5B: + case TIMER5C: + TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52)); + TCCR5B |= val; + break; + #endif + + } +} +#endif //FAST_PWM_FAN + +bool setTargetedHotend(int code){ + tmp_extruder = active_extruder; + if(code_seen('T')) { + tmp_extruder = code_value(); + if(tmp_extruder >= EXTRUDERS) { + SERIAL_ECHO_START; + switch(code){ + case 104: + SERIAL_ECHO(MSG_M104_INVALID_EXTRUDER); + break; + case 105: + SERIAL_ECHO(MSG_M105_INVALID_EXTRUDER); + break; + case 109: + SERIAL_ECHO(MSG_M109_INVALID_EXTRUDER); + break; + case 218: + SERIAL_ECHO(MSG_M218_INVALID_EXTRUDER); + break; + case 221: + SERIAL_ECHO(MSG_M221_INVALID_EXTRUDER); + break; + } + SERIAL_ECHOLN(tmp_extruder); + return true; + } + } + return false; +} + +float calculate_volumetric_multiplier(float diameter) { + if (!volumetric_enabled || diameter == 0) return 1.0; + float d2 = diameter * 0.5; + return 1.0 / (M_PI * d2 * d2); +} + +void calculate_volumetric_multipliers() { + for (int i=0; i -1 + case 1: + OUT_WRITE(SOL1_PIN, HIGH); + break; + #endif + #if defined(SOL2_PIN) && SOL2_PIN > -1 + case 2: + OUT_WRITE(SOL2_PIN, HIGH); + break; + #endif + #if defined(SOL3_PIN) && SOL3_PIN > -1 + case 3: + OUT_WRITE(SOL3_PIN, HIGH); + break; + #endif + default: + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_INVALID_SOLENOID); + break; + } +} + +void enable_solenoid_on_active_extruder() { enable_solenoid(active_extruder); } + +void disable_all_solenoids() { + OUT_WRITE(SOL0_PIN, LOW); + OUT_WRITE(SOL1_PIN, LOW); + OUT_WRITE(SOL2_PIN, LOW); + OUT_WRITE(SOL3_PIN, LOW); +} + +#endif //EXT_SOLENOID diff --git a/Marlin/Sd2Card.cpp b/Marlin/Sd2Card.cpp index 62c115917..69ae77735 100644 --- a/Marlin/Sd2Card.cpp +++ b/Marlin/Sd2Card.cpp @@ -1,643 +1,723 @@ -/* Arduino Sd2Card Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the Arduino Sd2Card Library. If not, see - * . - */ -#include -#include "Sd2Card.h" -//------------------------------------------------------------------------------ -#ifndef SOFTWARE_SPI -// functions for hardware SPI -/** Send a byte to the card */ -static void spiSend(uint8_t b) { - SPDR = b; - while (!(SPSR & (1 << SPIF))); -} -/** Receive a byte from the card */ -static uint8_t spiRec(void) { - spiSend(0XFF); - return SPDR; -} -#else // SOFTWARE_SPI -//------------------------------------------------------------------------------ -/** nop to tune soft SPI timing */ -#define nop asm volatile ("nop\n\t") -//------------------------------------------------------------------------------ -/** Soft SPI receive */ -uint8_t spiRec(void) { - uint8_t data = 0; - // no interrupts during byte receive - about 8 us - cli(); - // output pin high - like sending 0XFF - fastDigitalWrite(SPI_MOSI_PIN, HIGH); - - for (uint8_t i = 0; i < 8; i++) { - fastDigitalWrite(SPI_SCK_PIN, HIGH); - - // adjust so SCK is nice - nop; - nop; - - data <<= 1; - - if (fastDigitalRead(SPI_MISO_PIN)) data |= 1; - - fastDigitalWrite(SPI_SCK_PIN, LOW); - } - // enable interrupts - sei(); - return data; -} -//------------------------------------------------------------------------------ -/** Soft SPI send */ -void spiSend(uint8_t data) { - // no interrupts during byte send - about 8 us - cli(); - for (uint8_t i = 0; i < 8; i++) { - fastDigitalWrite(SPI_SCK_PIN, LOW); - - fastDigitalWrite(SPI_MOSI_PIN, data & 0X80); - - data <<= 1; - - fastDigitalWrite(SPI_SCK_PIN, HIGH); - } - // hold SCK high for a few ns - nop; - nop; - nop; - nop; - - fastDigitalWrite(SPI_SCK_PIN, LOW); - // enable interrupts - sei(); -} -#endif // SOFTWARE_SPI -//------------------------------------------------------------------------------ -// send command and return error code. Return zero for OK -uint8_t Sd2Card::cardCommand(uint8_t cmd, uint32_t arg) { - // end read if in partialBlockRead mode - readEnd(); - - // select card - chipSelectLow(); - - // wait up to 300 ms if busy - waitNotBusy(300); - - // send command - spiSend(cmd | 0x40); - - // send argument - for (int8_t s = 24; s >= 0; s -= 8) spiSend(arg >> s); - - // send CRC - uint8_t crc = 0XFF; - if (cmd == CMD0) crc = 0X95; // correct crc for CMD0 with arg 0 - if (cmd == CMD8) crc = 0X87; // correct crc for CMD8 with arg 0X1AA - spiSend(crc); - - // wait for response - for (uint8_t i = 0; ((status_ = spiRec()) & 0X80) && i != 0XFF; i++); - return status_; -} -//------------------------------------------------------------------------------ -/** - * Determine the size of an SD flash memory card. - * - * \return The number of 512 byte data blocks in the card - * or zero if an error occurs. - */ -uint32_t Sd2Card::cardSize(void) { - csd_t csd; - if (!readCSD(&csd)) return 0; - if (csd.v1.csd_ver == 0) { - uint8_t read_bl_len = csd.v1.read_bl_len; - uint16_t c_size = (csd.v1.c_size_high << 10) - | (csd.v1.c_size_mid << 2) | csd.v1.c_size_low; - uint8_t c_size_mult = (csd.v1.c_size_mult_high << 1) - | csd.v1.c_size_mult_low; - return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); - } else if (csd.v2.csd_ver == 1) { - uint32_t c_size = ((uint32_t)csd.v2.c_size_high << 16) - | (csd.v2.c_size_mid << 8) | csd.v2.c_size_low; - return (c_size + 1) << 10; - } else { - error(SD_CARD_ERROR_BAD_CSD); - return 0; - } -} -//------------------------------------------------------------------------------ -void Sd2Card::chipSelectHigh(void) { - digitalWrite(chipSelectPin_, HIGH); -} -//------------------------------------------------------------------------------ -void Sd2Card::chipSelectLow(void) { - digitalWrite(chipSelectPin_, LOW); -} -//------------------------------------------------------------------------------ -/** Erase a range of blocks. - * - * \param[in] firstBlock The address of the first block in the range. - * \param[in] lastBlock The address of the last block in the range. - * - * \note This function requests the SD card to do a flash erase for a - * range of blocks. The data on the card after an erase operation is - * either 0 or 1, depends on the card vendor. The card must support - * single block erase. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t Sd2Card::erase(uint32_t firstBlock, uint32_t lastBlock) { - if (!eraseSingleBlockEnable()) { - error(SD_CARD_ERROR_ERASE_SINGLE_BLOCK); - goto fail; - } - if (type_ != SD_CARD_TYPE_SDHC) { - firstBlock <<= 9; - lastBlock <<= 9; - } - if (cardCommand(CMD32, firstBlock) - || cardCommand(CMD33, lastBlock) - || cardCommand(CMD38, 0)) { - error(SD_CARD_ERROR_ERASE); - goto fail; - } - if (!waitNotBusy(SD_ERASE_TIMEOUT)) { - error(SD_CARD_ERROR_ERASE_TIMEOUT); - goto fail; - } - chipSelectHigh(); - return true; - - fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** Determine if card supports single block erase. - * - * \return The value one, true, is returned if single block erase is supported. - * The value zero, false, is returned if single block erase is not supported. - */ -uint8_t Sd2Card::eraseSingleBlockEnable(void) { - csd_t csd; - return readCSD(&csd) ? csd.v1.erase_blk_en : 0; -} -//------------------------------------------------------------------------------ -/** - * Initialize an SD flash memory card. - * - * \param[in] sckRateID SPI clock rate selector. See setSckRate(). - * \param[in] chipSelectPin SD chip select pin number. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. The reason for failure - * can be determined by calling errorCode() and errorData(). - */ -uint8_t Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) { - errorCode_ = inBlock_ = partialBlockRead_ = type_ = 0; - chipSelectPin_ = chipSelectPin; - // 16-bit init start time allows over a minute - uint16_t t0 = (uint16_t)millis(); - uint32_t arg; - - // set pin modes - pinMode(chipSelectPin_, OUTPUT); - chipSelectHigh(); - pinMode(SPI_MISO_PIN, INPUT); - pinMode(SPI_MOSI_PIN, OUTPUT); - pinMode(SPI_SCK_PIN, OUTPUT); - -#ifndef SOFTWARE_SPI - // SS must be in output mode even it is not chip select - pinMode(SS_PIN, OUTPUT); - // Enable SPI, Master, clock rate f_osc/128 - SPCR = (1 << SPE) | (1 << MSTR) | (1 << SPR1) | (1 << SPR0); - // clear double speed - SPSR &= ~(1 << SPI2X); -#endif // SOFTWARE_SPI - - // must supply min of 74 clock cycles with CS high. - for (uint8_t i = 0; i < 10; i++) spiSend(0XFF); - - chipSelectLow(); - - // command to go idle in SPI mode - while ((status_ = cardCommand(CMD0, 0)) != R1_IDLE_STATE) { - if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) { - error(SD_CARD_ERROR_CMD0); - goto fail; - } - } - // check SD version - if ((cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) { - type(SD_CARD_TYPE_SD1); - } else { - // only need last byte of r7 response - for (uint8_t i = 0; i < 4; i++) status_ = spiRec(); - if (status_ != 0XAA) { - error(SD_CARD_ERROR_CMD8); - goto fail; - } - type(SD_CARD_TYPE_SD2); - } - // initialize card and send host supports SDHC if SD2 - arg = type() == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; - - while ((status_ = cardAcmd(ACMD41, arg)) != R1_READY_STATE) { - // check for timeout - if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) { - error(SD_CARD_ERROR_ACMD41); - goto fail; - } - } - // if SD2 read OCR register to check for SDHC card - if (type() == SD_CARD_TYPE_SD2) { - if (cardCommand(CMD58, 0)) { - error(SD_CARD_ERROR_CMD58); - goto fail; - } - if ((spiRec() & 0XC0) == 0XC0) type(SD_CARD_TYPE_SDHC); - // discard rest of ocr - contains allowed voltage range - for (uint8_t i = 0; i < 3; i++) spiRec(); - } - chipSelectHigh(); - -#ifndef SOFTWARE_SPI - return setSckRate(sckRateID); -#else // SOFTWARE_SPI - return true; -#endif // SOFTWARE_SPI - - fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** - * Enable or disable partial block reads. - * - * Enabling partial block reads improves performance by allowing a block - * to be read over the SPI bus as several sub-blocks. Errors may occur - * if the time between reads is too long since the SD card may timeout. - * The SPI SS line will be held low until the entire block is read or - * readEnd() is called. - * - * Use this for applications like the Adafruit Wave Shield. - * - * \param[in] value The value TRUE (non-zero) or FALSE (zero).) - */ -void Sd2Card::partialBlockRead(uint8_t value) { - readEnd(); - partialBlockRead_ = value; -} -//------------------------------------------------------------------------------ -/** - * Read a 512 byte block from an SD card device. - * - * \param[in] block Logical block to be read. - * \param[out] dst Pointer to the location that will receive the data. - - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t Sd2Card::readBlock(uint32_t block, uint8_t* dst) { - return readData(block, 0, 512, dst); -} -//------------------------------------------------------------------------------ -/** - * Read part of a 512 byte block from an SD card. - * - * \param[in] block Logical block to be read. - * \param[in] offset Number of bytes to skip at start of block - * \param[out] dst Pointer to the location that will receive the data. - * \param[in] count Number of bytes to read - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t Sd2Card::readData(uint32_t block, - uint16_t offset, uint16_t count, uint8_t* dst) { - uint16_t n; - if (count == 0) return true; - if ((count + offset) > 512) { - goto fail; - } - if (!inBlock_ || block != block_ || offset < offset_) { - block_ = block; - // use address if not SDHC card - if (type()!= SD_CARD_TYPE_SDHC) block <<= 9; - if (cardCommand(CMD17, block)) { - error(SD_CARD_ERROR_CMD17); - goto fail; - } - if (!waitStartBlock()) { - goto fail; - } - offset_ = 0; - inBlock_ = 1; - } - -#ifdef OPTIMIZE_HARDWARE_SPI - // start first spi transfer - SPDR = 0XFF; - - // skip data before offset - for (;offset_ < offset; offset_++) { - while (!(SPSR & (1 << SPIF))); - SPDR = 0XFF; - } - // transfer data - n = count - 1; - for (uint16_t i = 0; i < n; i++) { - while (!(SPSR & (1 << SPIF))); - dst[i] = SPDR; - SPDR = 0XFF; - } - // wait for last byte - while (!(SPSR & (1 << SPIF))); - dst[n] = SPDR; - -#else // OPTIMIZE_HARDWARE_SPI - - // skip data before offset - for (;offset_ < offset; offset_++) { - spiRec(); - } - // transfer data - for (uint16_t i = 0; i < count; i++) { - dst[i] = spiRec(); - } -#endif // OPTIMIZE_HARDWARE_SPI - - offset_ += count; - if (!partialBlockRead_ || offset_ >= 512) { - // read rest of data, checksum and set chip select high - readEnd(); - } - return true; - - fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** Skip remaining data in a block when in partial block read mode. */ -void Sd2Card::readEnd(void) { - if (inBlock_) { - // skip data and crc -#ifdef OPTIMIZE_HARDWARE_SPI - // optimize skip for hardware - SPDR = 0XFF; - while (offset_++ < 513) { - while (!(SPSR & (1 << SPIF))); - SPDR = 0XFF; - } - // wait for last crc byte - while (!(SPSR & (1 << SPIF))); -#else // OPTIMIZE_HARDWARE_SPI - while (offset_++ < 514) spiRec(); -#endif // OPTIMIZE_HARDWARE_SPI - chipSelectHigh(); - inBlock_ = 0; - } -} -//------------------------------------------------------------------------------ -/** read CID or CSR register */ -uint8_t Sd2Card::readRegister(uint8_t cmd, void* buf) { - uint8_t* dst = reinterpret_cast(buf); - if (cardCommand(cmd, 0)) { - error(SD_CARD_ERROR_READ_REG); - goto fail; - } - if (!waitStartBlock()) goto fail; - // transfer data - for (uint16_t i = 0; i < 16; i++) dst[i] = spiRec(); - spiRec(); // get first crc byte - spiRec(); // get second crc byte - chipSelectHigh(); - return true; - - fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** - * Set the SPI clock rate. - * - * \param[in] sckRateID A value in the range [0, 6]. - * - * The SPI clock will be set to F_CPU/pow(2, 1 + sckRateID). The maximum - * SPI rate is F_CPU/2 for \a sckRateID = 0 and the minimum rate is F_CPU/128 - * for \a scsRateID = 6. - * - * \return The value one, true, is returned for success and the value zero, - * false, is returned for an invalid value of \a sckRateID. - */ -uint8_t Sd2Card::setSckRate(uint8_t sckRateID) { - if (sckRateID > 6) { - error(SD_CARD_ERROR_SCK_RATE); - return false; - } - // see avr processor datasheet for SPI register bit definitions - if ((sckRateID & 1) || sckRateID == 6) { - SPSR &= ~(1 << SPI2X); - } else { - SPSR |= (1 << SPI2X); - } - SPCR &= ~((1 < SD_READ_TIMEOUT) { - error(SD_CARD_ERROR_READ_TIMEOUT); - goto fail; - } - } - if (status_ != DATA_START_BLOCK) { - error(SD_CARD_ERROR_READ); - goto fail; - } - return true; - - fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** - * Writes a 512 byte block to an SD card. - * - * \param[in] blockNumber Logical block to be written. - * \param[in] src Pointer to the location of the data to be written. - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t Sd2Card::writeBlock(uint32_t blockNumber, const uint8_t* src) { -#if SD_PROTECT_BLOCK_ZERO - // don't allow write to first block - if (blockNumber == 0) { - error(SD_CARD_ERROR_WRITE_BLOCK_ZERO); - goto fail; - } -#endif // SD_PROTECT_BLOCK_ZERO - - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; - if (cardCommand(CMD24, blockNumber)) { - error(SD_CARD_ERROR_CMD24); - goto fail; - } - if (!writeData(DATA_START_BLOCK, src)) goto fail; - - // wait for flash programming to complete - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - error(SD_CARD_ERROR_WRITE_TIMEOUT); - goto fail; - } - // response is r2 so get and check two bytes for nonzero - if (cardCommand(CMD13, 0) || spiRec()) { - error(SD_CARD_ERROR_WRITE_PROGRAMMING); - goto fail; - } - chipSelectHigh(); - return true; - - fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** Write one data block in a multiple block write sequence */ -uint8_t Sd2Card::writeData(const uint8_t* src) { - // wait for previous write to finish - if (!waitNotBusy(SD_WRITE_TIMEOUT)) { - error(SD_CARD_ERROR_WRITE_MULTIPLE); - chipSelectHigh(); - return false; - } - return writeData(WRITE_MULTIPLE_TOKEN, src); -} -//------------------------------------------------------------------------------ -// send one block of data for write block or write multiple blocks -uint8_t Sd2Card::writeData(uint8_t token, const uint8_t* src) { -#ifdef OPTIMIZE_HARDWARE_SPI - - // send data - optimized loop - SPDR = token; - - // send two byte per iteration - for (uint16_t i = 0; i < 512; i += 2) { - while (!(SPSR & (1 << SPIF))); - SPDR = src[i]; - while (!(SPSR & (1 << SPIF))); - SPDR = src[i+1]; - } - - // wait for last data byte - while (!(SPSR & (1 << SPIF))); - -#else // OPTIMIZE_HARDWARE_SPI - spiSend(token); - for (uint16_t i = 0; i < 512; i++) { - spiSend(src[i]); - } -#endif // OPTIMIZE_HARDWARE_SPI - spiSend(0xff); // dummy crc - spiSend(0xff); // dummy crc - - status_ = spiRec(); - if ((status_ & DATA_RES_MASK) != DATA_RES_ACCEPTED) { - error(SD_CARD_ERROR_WRITE); - chipSelectHigh(); - return false; - } - return true; -} -//------------------------------------------------------------------------------ -/** Start a write multiple blocks sequence. - * - * \param[in] blockNumber Address of first block in sequence. - * \param[in] eraseCount The number of blocks to be pre-erased. - * - * \note This function is used with writeData() and writeStop() - * for optimized multiple block writes. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t Sd2Card::writeStart(uint32_t blockNumber, uint32_t eraseCount) { -#if SD_PROTECT_BLOCK_ZERO - // don't allow write to first block - if (blockNumber == 0) { - error(SD_CARD_ERROR_WRITE_BLOCK_ZERO); - goto fail; - } -#endif // SD_PROTECT_BLOCK_ZERO - // send pre-erase count - if (cardAcmd(ACMD23, eraseCount)) { - error(SD_CARD_ERROR_ACMD23); - goto fail; - } - // use address if not SDHC card - if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; - if (cardCommand(CMD25, blockNumber)) { - error(SD_CARD_ERROR_CMD25); - goto fail; - } - return true; - - fail: - chipSelectHigh(); - return false; -} -//------------------------------------------------------------------------------ -/** End a write multiple blocks sequence. - * -* \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t Sd2Card::writeStop(void) { - if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail; - spiSend(STOP_TRAN_TOKEN); - if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail; - chipSelectHigh(); - return true; - - fail: - error(SD_CARD_ERROR_STOP_TRAN); - chipSelectHigh(); - return false; -} +/* Arduino Sd2Card Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino Sd2Card Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino Sd2Card Library. If not, see + * . + */ +#include "Marlin.h" + +#ifdef SDSUPPORT +#include "Sd2Card.h" +//------------------------------------------------------------------------------ +#ifndef SOFTWARE_SPI +// functions for hardware SPI +//------------------------------------------------------------------------------ +// make sure SPCR rate is in expected bits +#if (SPR0 != 0 || SPR1 != 1) +#error unexpected SPCR bits +#endif +/** + * Initialize hardware SPI + * Set SCK rate to F_CPU/pow(2, 1 + spiRate) for spiRate [0,6] + */ +static void spiInit(uint8_t spiRate) { + // See avr processor documentation + SPCR = (1 << SPE) | (1 << MSTR) | (spiRate >> 1); + SPSR = spiRate & 1 || spiRate == 6 ? 0 : 1 << SPI2X; +} +//------------------------------------------------------------------------------ +/** SPI receive a byte */ +static uint8_t spiRec() { + SPDR = 0XFF; + while (!(SPSR & (1 << SPIF))) { /* Intentionally left empty */ } + return SPDR; +} +//------------------------------------------------------------------------------ +/** SPI read data - only one call so force inline */ +static inline __attribute__((always_inline)) +void spiRead(uint8_t* buf, uint16_t nbyte) { + if (nbyte-- == 0) return; + SPDR = 0XFF; + for (uint16_t i = 0; i < nbyte; i++) { + while (!(SPSR & (1 << SPIF))) { /* Intentionally left empty */ } + buf[i] = SPDR; + SPDR = 0XFF; + } + while (!(SPSR & (1 << SPIF))) { /* Intentionally left empty */ } + buf[nbyte] = SPDR; +} +//------------------------------------------------------------------------------ +/** SPI send a byte */ +static void spiSend(uint8_t b) { + SPDR = b; + while (!(SPSR & (1 << SPIF))) { /* Intentionally left empty */ } +} +//------------------------------------------------------------------------------ +/** SPI send block - only one call so force inline */ +static inline __attribute__((always_inline)) + void spiSendBlock(uint8_t token, const uint8_t* buf) { + SPDR = token; + for (uint16_t i = 0; i < 512; i += 2) { + while (!(SPSR & (1 << SPIF))) { /* Intentionally left empty */ } + SPDR = buf[i]; + while (!(SPSR & (1 << SPIF))) { /* Intentionally left empty */ } + SPDR = buf[i + 1]; + } + while (!(SPSR & (1 << SPIF))) { /* Intentionally left empty */ } +} +//------------------------------------------------------------------------------ +#else // SOFTWARE_SPI +//------------------------------------------------------------------------------ +/** nop to tune soft SPI timing */ +#define nop asm volatile ("nop\n\t") +//------------------------------------------------------------------------------ +/** Soft SPI receive byte */ +static uint8_t spiRec() { + uint8_t data = 0; + // no interrupts during byte receive - about 8 us + cli(); + // output pin high - like sending 0XFF + fastDigitalWrite(SPI_MOSI_PIN, HIGH); + + for (uint8_t i = 0; i < 8; i++) { + fastDigitalWrite(SPI_SCK_PIN, HIGH); + + // adjust so SCK is nice + nop; + nop; + + data <<= 1; + + if (fastDigitalRead(SPI_MISO_PIN)) data |= 1; + + fastDigitalWrite(SPI_SCK_PIN, LOW); + } + // enable interrupts + sei(); + return data; +} +//------------------------------------------------------------------------------ +/** Soft SPI read data */ +static void spiRead(uint8_t* buf, uint16_t nbyte) { + for (uint16_t i = 0; i < nbyte; i++) { + buf[i] = spiRec(); + } +} +//------------------------------------------------------------------------------ +/** Soft SPI send byte */ +static void spiSend(uint8_t data) { + // no interrupts during byte send - about 8 us + cli(); + for (uint8_t i = 0; i < 8; i++) { + fastDigitalWrite(SPI_SCK_PIN, LOW); + + fastDigitalWrite(SPI_MOSI_PIN, data & 0X80); + + data <<= 1; + + fastDigitalWrite(SPI_SCK_PIN, HIGH); + } + // hold SCK high for a few ns + nop; + nop; + nop; + nop; + + fastDigitalWrite(SPI_SCK_PIN, LOW); + // enable interrupts + sei(); +} +//------------------------------------------------------------------------------ +/** Soft SPI send block */ + void spiSendBlock(uint8_t token, const uint8_t* buf) { + spiSend(token); + for (uint16_t i = 0; i < 512; i++) { + spiSend(buf[i]); + } +} +#endif // SOFTWARE_SPI +//------------------------------------------------------------------------------ +// send command and return error code. Return zero for OK +uint8_t Sd2Card::cardCommand(uint8_t cmd, uint32_t arg) { + // select card + chipSelectLow(); + + // wait up to 300 ms if busy + waitNotBusy(300); + + // send command + spiSend(cmd | 0x40); + + // send argument + for (int8_t s = 24; s >= 0; s -= 8) spiSend(arg >> s); + + // send CRC + uint8_t crc = 0XFF; + if (cmd == CMD0) crc = 0X95; // correct crc for CMD0 with arg 0 + if (cmd == CMD8) crc = 0X87; // correct crc for CMD8 with arg 0X1AA + spiSend(crc); + + // skip stuff byte for stop read + if (cmd == CMD12) spiRec(); + + // wait for response + for (uint8_t i = 0; ((status_ = spiRec()) & 0X80) && i != 0XFF; i++) { /* Intentionally left empty */ } + return status_; +} +//------------------------------------------------------------------------------ +/** + * Determine the size of an SD flash memory card. + * + * \return The number of 512 byte data blocks in the card + * or zero if an error occurs. + */ +uint32_t Sd2Card::cardSize() { + csd_t csd; + if (!readCSD(&csd)) return 0; + if (csd.v1.csd_ver == 0) { + uint8_t read_bl_len = csd.v1.read_bl_len; + uint16_t c_size = (csd.v1.c_size_high << 10) + | (csd.v1.c_size_mid << 2) | csd.v1.c_size_low; + uint8_t c_size_mult = (csd.v1.c_size_mult_high << 1) + | csd.v1.c_size_mult_low; + return (uint32_t)(c_size + 1) << (c_size_mult + read_bl_len - 7); + } else if (csd.v2.csd_ver == 1) { + uint32_t c_size = ((uint32_t)csd.v2.c_size_high << 16) + | (csd.v2.c_size_mid << 8) | csd.v2.c_size_low; + return (c_size + 1) << 10; + } else { + error(SD_CARD_ERROR_BAD_CSD); + return 0; + } +} +//------------------------------------------------------------------------------ +void Sd2Card::chipSelectHigh() { + digitalWrite(chipSelectPin_, HIGH); +} +//------------------------------------------------------------------------------ +void Sd2Card::chipSelectLow() { +#ifndef SOFTWARE_SPI + spiInit(spiRate_); +#endif // SOFTWARE_SPI + digitalWrite(chipSelectPin_, LOW); +} +//------------------------------------------------------------------------------ +/** Erase a range of blocks. + * + * \param[in] firstBlock The address of the first block in the range. + * \param[in] lastBlock The address of the last block in the range. + * + * \note This function requests the SD card to do a flash erase for a + * range of blocks. The data on the card after an erase operation is + * either 0 or 1, depends on the card vendor. The card must support + * single block erase. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::erase(uint32_t firstBlock, uint32_t lastBlock) { + csd_t csd; + if (!readCSD(&csd)) goto fail; + // check for single block erase + if (!csd.v1.erase_blk_en) { + // erase size mask + uint8_t m = (csd.v1.sector_size_high << 1) | csd.v1.sector_size_low; + if ((firstBlock & m) != 0 || ((lastBlock + 1) & m) != 0) { + // error card can't erase specified area + error(SD_CARD_ERROR_ERASE_SINGLE_BLOCK); + goto fail; + } + } + if (type_ != SD_CARD_TYPE_SDHC) { + firstBlock <<= 9; + lastBlock <<= 9; + } + if (cardCommand(CMD32, firstBlock) + || cardCommand(CMD33, lastBlock) + || cardCommand(CMD38, 0)) { + error(SD_CARD_ERROR_ERASE); + goto fail; + } + if (!waitNotBusy(SD_ERASE_TIMEOUT)) { + error(SD_CARD_ERROR_ERASE_TIMEOUT); + goto fail; + } + chipSelectHigh(); + return true; + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** Determine if card supports single block erase. + * + * \return The value one, true, is returned if single block erase is supported. + * The value zero, false, is returned if single block erase is not supported. + */ +bool Sd2Card::eraseSingleBlockEnable() { + csd_t csd; + return readCSD(&csd) ? csd.v1.erase_blk_en : false; +} +//------------------------------------------------------------------------------ +/** + * Initialize an SD flash memory card. + * + * \param[in] sckRateID SPI clock rate selector. See setSckRate(). + * \param[in] chipSelectPin SD chip select pin number. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. The reason for failure + * can be determined by calling errorCode() and errorData(). + */ +bool Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) { + errorCode_ = type_ = 0; + chipSelectPin_ = chipSelectPin; + // 16-bit init start time allows over a minute + uint16_t t0 = (uint16_t)millis(); + uint32_t arg; + + // set pin modes + pinMode(chipSelectPin_, OUTPUT); + chipSelectHigh(); + pinMode(SPI_MISO_PIN, INPUT); + pinMode(SPI_MOSI_PIN, OUTPUT); + pinMode(SPI_SCK_PIN, OUTPUT); + +#ifndef SOFTWARE_SPI + // SS must be in output mode even it is not chip select + pinMode(SS_PIN, OUTPUT); + // set SS high - may be chip select for another SPI device +#if SET_SPI_SS_HIGH + digitalWrite(SS_PIN, HIGH); +#endif // SET_SPI_SS_HIGH + // set SCK rate for initialization commands + spiRate_ = SPI_SD_INIT_RATE; + spiInit(spiRate_); +#endif // SOFTWARE_SPI + + // must supply min of 74 clock cycles with CS high. + for (uint8_t i = 0; i < 10; i++) spiSend(0XFF); + + // command to go idle in SPI mode + while ((status_ = cardCommand(CMD0, 0)) != R1_IDLE_STATE) { + if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) { + error(SD_CARD_ERROR_CMD0); + goto fail; + } + } + // check SD version + if ((cardCommand(CMD8, 0x1AA) & R1_ILLEGAL_COMMAND)) { + type(SD_CARD_TYPE_SD1); + } else { + // only need last byte of r7 response + for (uint8_t i = 0; i < 4; i++) status_ = spiRec(); + if (status_ != 0XAA) { + error(SD_CARD_ERROR_CMD8); + goto fail; + } + type(SD_CARD_TYPE_SD2); + } + // initialize card and send host supports SDHC if SD2 + arg = type() == SD_CARD_TYPE_SD2 ? 0X40000000 : 0; + + while ((status_ = cardAcmd(ACMD41, arg)) != R1_READY_STATE) { + // check for timeout + if (((uint16_t)millis() - t0) > SD_INIT_TIMEOUT) { + error(SD_CARD_ERROR_ACMD41); + goto fail; + } + } + // if SD2 read OCR register to check for SDHC card + if (type() == SD_CARD_TYPE_SD2) { + if (cardCommand(CMD58, 0)) { + error(SD_CARD_ERROR_CMD58); + goto fail; + } + if ((spiRec() & 0XC0) == 0XC0) type(SD_CARD_TYPE_SDHC); + // discard rest of ocr - contains allowed voltage range + for (uint8_t i = 0; i < 3; i++) spiRec(); + } + chipSelectHigh(); + +#ifndef SOFTWARE_SPI + return setSckRate(sckRateID); +#else // SOFTWARE_SPI + return true; +#endif // SOFTWARE_SPI + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** + * Read a 512 byte block from an SD card. + * + * \param[in] blockNumber Logical block to be read. + * \param[out] dst Pointer to the location that will receive the data. + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::readBlock(uint32_t blockNumber, uint8_t* dst) { +#ifdef SD_CHECK_AND_RETRY + uint8_t retryCnt = 3; + // use address if not SDHC card + if (type()!= SD_CARD_TYPE_SDHC) blockNumber <<= 9; + retry2: + retryCnt --; + if (cardCommand(CMD17, blockNumber)) { + error(SD_CARD_ERROR_CMD17); + if (retryCnt > 0) goto retry; + goto fail; + } + if (!readData(dst, 512)) + { + if (retryCnt > 0) goto retry; + goto fail; + } + return true; + retry: + chipSelectHigh(); + cardCommand(CMD12, 0);//Try sending a stop command, but ignore the result. + errorCode_ = 0; + goto retry2; +#else + // use address if not SDHC card + if (type()!= SD_CARD_TYPE_SDHC) blockNumber <<= 9; + if (cardCommand(CMD17, blockNumber)) { + error(SD_CARD_ERROR_CMD17); + goto fail; + } + return readData(dst, 512); +#endif + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** Read one data block in a multiple block read sequence + * + * \param[in] dst Pointer to the location for the data to be read. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::readData(uint8_t *dst) { + chipSelectLow(); + return readData(dst, 512); +} + +#ifdef SD_CHECK_AND_RETRY +static const uint16_t crctab[] PROGMEM = { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, + 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, + 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, + 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, + 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, + 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, + 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, + 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, + 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, + 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, + 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, + 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, + 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, + 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, + 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, + 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, + 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, + 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, + 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, + 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, + 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, + 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 +}; +static uint16_t CRC_CCITT(const uint8_t* data, size_t n) { + uint16_t crc = 0; + for (size_t i = 0; i < n; i++) { + crc = pgm_read_word(&crctab[(crc >> 8 ^ data[i]) & 0XFF]) ^ (crc << 8); + } + return crc; +} +#endif + +//------------------------------------------------------------------------------ +bool Sd2Card::readData(uint8_t* dst, uint16_t count) { + // wait for start block token + uint16_t t0 = millis(); + while ((status_ = spiRec()) == 0XFF) { + if (((uint16_t)millis() - t0) > SD_READ_TIMEOUT) { + error(SD_CARD_ERROR_READ_TIMEOUT); + goto fail; + } + } + if (status_ != DATA_START_BLOCK) { + error(SD_CARD_ERROR_READ); + goto fail; + } + // transfer data + spiRead(dst, count); + +#ifdef SD_CHECK_AND_RETRY + { + uint16_t calcCrc = CRC_CCITT(dst, count); + uint16_t recvCrc = spiRec() << 8; + recvCrc |= spiRec(); + if (calcCrc != recvCrc) + { + error(SD_CARD_ERROR_CRC); + goto fail; + } + } +#else + // discard CRC + spiRec(); + spiRec(); +#endif + chipSelectHigh(); + return true; + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** read CID or CSR register */ +bool Sd2Card::readRegister(uint8_t cmd, void* buf) { + uint8_t* dst = reinterpret_cast(buf); + if (cardCommand(cmd, 0)) { + error(SD_CARD_ERROR_READ_REG); + goto fail; + } + return readData(dst, 16); + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** Start a read multiple blocks sequence. + * + * \param[in] blockNumber Address of first block in sequence. + * + * \note This function is used with readData() and readStop() for optimized + * multiple block reads. SPI chipSelect must be low for the entire sequence. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::readStart(uint32_t blockNumber) { + if (type()!= SD_CARD_TYPE_SDHC) blockNumber <<= 9; + if (cardCommand(CMD18, blockNumber)) { + error(SD_CARD_ERROR_CMD18); + goto fail; + } + chipSelectHigh(); + return true; + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** End a read multiple blocks sequence. + * +* \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::readStop() { + chipSelectLow(); + if (cardCommand(CMD12, 0)) { + error(SD_CARD_ERROR_CMD12); + goto fail; + } + chipSelectHigh(); + return true; + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** + * Set the SPI clock rate. + * + * \param[in] sckRateID A value in the range [0, 6]. + * + * The SPI clock will be set to F_CPU/pow(2, 1 + sckRateID). The maximum + * SPI rate is F_CPU/2 for \a sckRateID = 0 and the minimum rate is F_CPU/128 + * for \a scsRateID = 6. + * + * \return The value one, true, is returned for success and the value zero, + * false, is returned for an invalid value of \a sckRateID. + */ +bool Sd2Card::setSckRate(uint8_t sckRateID) { + if (sckRateID > 6) { + error(SD_CARD_ERROR_SCK_RATE); + return false; + } + spiRate_ = sckRateID; + return true; +} +//------------------------------------------------------------------------------ +// wait for card to go not busy +bool Sd2Card::waitNotBusy(uint16_t timeoutMillis) { + uint16_t t0 = millis(); + while (spiRec() != 0XFF) { + if (((uint16_t)millis() - t0) >= timeoutMillis) goto fail; + } + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** + * Writes a 512 byte block to an SD card. + * + * \param[in] blockNumber Logical block to be written. + * \param[in] src Pointer to the location of the data to be written. + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::writeBlock(uint32_t blockNumber, const uint8_t* src) { + // use address if not SDHC card + if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; + if (cardCommand(CMD24, blockNumber)) { + error(SD_CARD_ERROR_CMD24); + goto fail; + } + if (!writeData(DATA_START_BLOCK, src)) goto fail; + + // wait for flash programming to complete + if (!waitNotBusy(SD_WRITE_TIMEOUT)) { + error(SD_CARD_ERROR_WRITE_TIMEOUT); + goto fail; + } + // response is r2 so get and check two bytes for nonzero + if (cardCommand(CMD13, 0) || spiRec()) { + error(SD_CARD_ERROR_WRITE_PROGRAMMING); + goto fail; + } + chipSelectHigh(); + return true; + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** Write one data block in a multiple block write sequence + * \param[in] src Pointer to the location of the data to be written. + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::writeData(const uint8_t* src) { + chipSelectLow(); + // wait for previous write to finish + if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail; + if (!writeData(WRITE_MULTIPLE_TOKEN, src)) goto fail; + chipSelectHigh(); + return true; + + fail: + error(SD_CARD_ERROR_WRITE_MULTIPLE); + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +// send one block of data for write block or write multiple blocks +bool Sd2Card::writeData(uint8_t token, const uint8_t* src) { + spiSendBlock(token, src); + + spiSend(0xff); // dummy crc + spiSend(0xff); // dummy crc + + status_ = spiRec(); + if ((status_ & DATA_RES_MASK) != DATA_RES_ACCEPTED) { + error(SD_CARD_ERROR_WRITE); + goto fail; + } + return true; + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** Start a write multiple blocks sequence. + * + * \param[in] blockNumber Address of first block in sequence. + * \param[in] eraseCount The number of blocks to be pre-erased. + * + * \note This function is used with writeData() and writeStop() + * for optimized multiple block writes. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::writeStart(uint32_t blockNumber, uint32_t eraseCount) { + // send pre-erase count + if (cardAcmd(ACMD23, eraseCount)) { + error(SD_CARD_ERROR_ACMD23); + goto fail; + } + // use address if not SDHC card + if (type() != SD_CARD_TYPE_SDHC) blockNumber <<= 9; + if (cardCommand(CMD25, blockNumber)) { + error(SD_CARD_ERROR_CMD25); + goto fail; + } + chipSelectHigh(); + return true; + + fail: + chipSelectHigh(); + return false; +} +//------------------------------------------------------------------------------ +/** End a write multiple blocks sequence. + * +* \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool Sd2Card::writeStop() { + chipSelectLow(); + if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail; + spiSend(STOP_TRAN_TOKEN); + if (!waitNotBusy(SD_WRITE_TIMEOUT)) goto fail; + chipSelectHigh(); + return true; + + fail: + error(SD_CARD_ERROR_STOP_TRAN); + chipSelectHigh(); + return false; +} + +#endif diff --git a/Marlin/Sd2Card.h b/Marlin/Sd2Card.h index 9160c3d7a..d6b302bfe 100644 --- a/Marlin/Sd2Card.h +++ b/Marlin/Sd2Card.h @@ -1,233 +1,243 @@ -/* Arduino Sd2Card Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the Arduino Sd2Card Library. If not, see - * . - */ -#ifndef Sd2Card_h -#define Sd2Card_h -/** - * \file - * Sd2Card class - */ -#include "Sd2PinMap.h" -#include "SdInfo.h" -/** Set SCK to max rate of F_CPU/2. See Sd2Card::setSckRate(). */ -uint8_t const SPI_FULL_SPEED = 0; -/** Set SCK rate to F_CPU/4. See Sd2Card::setSckRate(). */ -uint8_t const SPI_HALF_SPEED = 1; -/** Set SCK rate to F_CPU/8. Sd2Card::setSckRate(). */ -uint8_t const SPI_QUARTER_SPEED = 2; -/** - * Define MEGA_SOFT_SPI non-zero to use software SPI on Mega Arduinos. - * Pins used are SS 10, MOSI 11, MISO 12, and SCK 13. - * - * MEGA_SOFT_SPI allows an unmodified Adafruit GPS Shield to be used - * on Mega Arduinos. Software SPI works well with GPS Shield V1.1 - * but many SD cards will fail with GPS Shield V1.0. - */ -#define MEGA_SOFT_SPI 0 -//------------------------------------------------------------------------------ -#if MEGA_SOFT_SPI && (defined(__AVR_ATmega1280__)||defined(__AVR_ATmega2560__)) -#define SOFTWARE_SPI -#endif // MEGA_SOFT_SPI -//------------------------------------------------------------------------------ -// SPI pin definitions -// -#ifndef SOFTWARE_SPI -// hardware pin defs -/** - * SD Chip Select pin - * - * Warning if this pin is redefined the hardware SS will pin will be enabled - * as an output by init(). An avr processor will not function as an SPI - * master unless SS is set to output mode. - */ -/** The default chip select pin for the SD card is SS. */ -uint8_t const SD_CHIP_SELECT_PIN = SS_PIN; -// The following three pins must not be redefined for hardware SPI. -/** SPI Master Out Slave In pin */ -uint8_t const SPI_MOSI_PIN = MOSI_PIN; -/** SPI Master In Slave Out pin */ -uint8_t const SPI_MISO_PIN = MISO_PIN; -/** SPI Clock pin */ -uint8_t const SPI_SCK_PIN = SCK_PIN; -/** optimize loops for hardware SPI */ -#define OPTIMIZE_HARDWARE_SPI - -#else // SOFTWARE_SPI -// define software SPI pins so Mega can use unmodified GPS Shield -/** SPI chip select pin */ -uint8_t const SD_CHIP_SELECT_PIN = 10; -/** SPI Master Out Slave In pin */ -uint8_t const SPI_MOSI_PIN = 11; -/** SPI Master In Slave Out pin */ -uint8_t const SPI_MISO_PIN = 12; -/** SPI Clock pin */ -uint8_t const SPI_SCK_PIN = 13; -#endif // SOFTWARE_SPI -//------------------------------------------------------------------------------ -/** Protect block zero from write if nonzero */ -#define SD_PROTECT_BLOCK_ZERO 1 -/** init timeout ms */ -uint16_t const SD_INIT_TIMEOUT = 2000; -/** erase timeout ms */ -uint16_t const SD_ERASE_TIMEOUT = 10000; -/** read timeout ms */ -uint16_t const SD_READ_TIMEOUT = 300; -/** write time out ms */ -uint16_t const SD_WRITE_TIMEOUT = 600; -//------------------------------------------------------------------------------ -// SD card errors -/** timeout error for command CMD0 */ -uint8_t const SD_CARD_ERROR_CMD0 = 0X1; -/** CMD8 was not accepted - not a valid SD card*/ -uint8_t const SD_CARD_ERROR_CMD8 = 0X2; -/** card returned an error response for CMD17 (read block) */ -uint8_t const SD_CARD_ERROR_CMD17 = 0X3; -/** card returned an error response for CMD24 (write block) */ -uint8_t const SD_CARD_ERROR_CMD24 = 0X4; -/** WRITE_MULTIPLE_BLOCKS command failed */ -uint8_t const SD_CARD_ERROR_CMD25 = 0X05; -/** card returned an error response for CMD58 (read OCR) */ -uint8_t const SD_CARD_ERROR_CMD58 = 0X06; -/** SET_WR_BLK_ERASE_COUNT failed */ -uint8_t const SD_CARD_ERROR_ACMD23 = 0X07; -/** card's ACMD41 initialization process timeout */ -uint8_t const SD_CARD_ERROR_ACMD41 = 0X08; -/** card returned a bad CSR version field */ -uint8_t const SD_CARD_ERROR_BAD_CSD = 0X09; -/** erase block group command failed */ -uint8_t const SD_CARD_ERROR_ERASE = 0X0A; -/** card not capable of single block erase */ -uint8_t const SD_CARD_ERROR_ERASE_SINGLE_BLOCK = 0X0B; -/** Erase sequence timed out */ -uint8_t const SD_CARD_ERROR_ERASE_TIMEOUT = 0X0C; -/** card returned an error token instead of read data */ -uint8_t const SD_CARD_ERROR_READ = 0X0D; -/** read CID or CSD failed */ -uint8_t const SD_CARD_ERROR_READ_REG = 0X0E; -/** timeout while waiting for start of read data */ -uint8_t const SD_CARD_ERROR_READ_TIMEOUT = 0X0F; -/** card did not accept STOP_TRAN_TOKEN */ -uint8_t const SD_CARD_ERROR_STOP_TRAN = 0X10; -/** card returned an error token as a response to a write operation */ -uint8_t const SD_CARD_ERROR_WRITE = 0X11; -/** attempt to write protected block zero */ -uint8_t const SD_CARD_ERROR_WRITE_BLOCK_ZERO = 0X12; -/** card did not go ready for a multiple block write */ -uint8_t const SD_CARD_ERROR_WRITE_MULTIPLE = 0X13; -/** card returned an error to a CMD13 status check after a write */ -uint8_t const SD_CARD_ERROR_WRITE_PROGRAMMING = 0X14; -/** timeout occurred during write programming */ -uint8_t const SD_CARD_ERROR_WRITE_TIMEOUT = 0X15; -/** incorrect rate selected */ -uint8_t const SD_CARD_ERROR_SCK_RATE = 0X16; -//------------------------------------------------------------------------------ -// card types -/** Standard capacity V1 SD card */ -uint8_t const SD_CARD_TYPE_SD1 = 1; -/** Standard capacity V2 SD card */ -uint8_t const SD_CARD_TYPE_SD2 = 2; -/** High Capacity SD card */ -uint8_t const SD_CARD_TYPE_SDHC = 3; -//------------------------------------------------------------------------------ -/** - * \class Sd2Card - * \brief Raw access to SD and SDHC flash memory cards. - */ -class Sd2Card { - public: - /** Construct an instance of Sd2Card. */ - Sd2Card(void) : errorCode_(0), inBlock_(0), partialBlockRead_(0), type_(0) {} - uint32_t cardSize(void); - uint8_t erase(uint32_t firstBlock, uint32_t lastBlock); - uint8_t eraseSingleBlockEnable(void); - /** - * \return error code for last error. See Sd2Card.h for a list of error codes. - */ - uint8_t errorCode(void) const {return errorCode_;} - /** \return error data for last error. */ - uint8_t errorData(void) const {return status_;} - /** - * Initialize an SD flash memory card with default clock rate and chip - * select pin. See sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin). - */ - uint8_t init(void) { - return init(SPI_FULL_SPEED, SD_CHIP_SELECT_PIN); - } - /** - * Initialize an SD flash memory card with the selected SPI clock rate - * and the default SD chip select pin. - * See sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin). - */ - uint8_t init(uint8_t sckRateID) { - return init(sckRateID, SD_CHIP_SELECT_PIN); - } - uint8_t init(uint8_t sckRateID, uint8_t chipSelectPin); - void partialBlockRead(uint8_t value); - /** Returns the current value, true or false, for partial block read. */ - uint8_t partialBlockRead(void) const {return partialBlockRead_;} - uint8_t readBlock(uint32_t block, uint8_t* dst); - uint8_t readData(uint32_t block, - uint16_t offset, uint16_t count, uint8_t* dst); - /** - * Read a cards CID register. The CID contains card identification - * information such as Manufacturer ID, Product name, Product serial - * number and Manufacturing date. */ - uint8_t readCID(cid_t* cid) { - return readRegister(CMD10, cid); - } - /** - * Read a cards CSD register. The CSD contains Card-Specific Data that - * provides information regarding access to the card's contents. */ - uint8_t readCSD(csd_t* csd) { - return readRegister(CMD9, csd); - } - void readEnd(void); - uint8_t setSckRate(uint8_t sckRateID); - /** Return the card type: SD V1, SD V2 or SDHC */ - uint8_t type(void) const {return type_;} - uint8_t writeBlock(uint32_t blockNumber, const uint8_t* src); - uint8_t writeData(const uint8_t* src); - uint8_t writeStart(uint32_t blockNumber, uint32_t eraseCount); - uint8_t writeStop(void); - private: - uint32_t block_; - uint8_t chipSelectPin_; - uint8_t errorCode_; - uint8_t inBlock_; - uint16_t offset_; - uint8_t partialBlockRead_; - uint8_t status_; - uint8_t type_; - // private functions - uint8_t cardAcmd(uint8_t cmd, uint32_t arg) { - cardCommand(CMD55, 0); - return cardCommand(cmd, arg); - } - uint8_t cardCommand(uint8_t cmd, uint32_t arg); - void error(uint8_t code) {errorCode_ = code;} - uint8_t readRegister(uint8_t cmd, void* buf); - uint8_t sendWriteCommand(uint32_t blockNumber, uint32_t eraseCount); - void chipSelectHigh(void); - void chipSelectLow(void); - void type(uint8_t value) {type_ = value;} - uint8_t waitNotBusy(uint16_t timeoutMillis); - uint8_t writeData(uint8_t token, const uint8_t* src); - uint8_t waitStartBlock(void); -}; -#endif // Sd2Card_h +/* Arduino Sd2Card Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino Sd2Card Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino Sd2Card Library. If not, see + * . + */ + +#include "Marlin.h" +#ifdef SDSUPPORT + +#ifndef Sd2Card_h +#define Sd2Card_h +/** + * \file + * \brief Sd2Card class for V2 SD/SDHC cards + */ +#include "SdFatConfig.h" +#include "Sd2PinMap.h" +#include "SdInfo.h" +//------------------------------------------------------------------------------ +// SPI speed is F_CPU/2^(1 + index), 0 <= index <= 6 +/** Set SCK to max rate of F_CPU/2. See Sd2Card::setSckRate(). */ +uint8_t const SPI_FULL_SPEED = 0; +/** Set SCK rate to F_CPU/4. See Sd2Card::setSckRate(). */ +uint8_t const SPI_HALF_SPEED = 1; +/** Set SCK rate to F_CPU/8. See Sd2Card::setSckRate(). */ +uint8_t const SPI_QUARTER_SPEED = 2; +/** Set SCK rate to F_CPU/16. See Sd2Card::setSckRate(). */ +uint8_t const SPI_EIGHTH_SPEED = 3; +/** Set SCK rate to F_CPU/32. See Sd2Card::setSckRate(). */ +uint8_t const SPI_SIXTEENTH_SPEED = 4; +//------------------------------------------------------------------------------ +/** init timeout ms */ +uint16_t const SD_INIT_TIMEOUT = 2000; +/** erase timeout ms */ +uint16_t const SD_ERASE_TIMEOUT = 10000; +/** read timeout ms */ +uint16_t const SD_READ_TIMEOUT = 300; +/** write time out ms */ +uint16_t const SD_WRITE_TIMEOUT = 600; +//------------------------------------------------------------------------------ +// SD card errors +/** timeout error for command CMD0 (initialize card in SPI mode) */ +uint8_t const SD_CARD_ERROR_CMD0 = 0X1; +/** CMD8 was not accepted - not a valid SD card*/ +uint8_t const SD_CARD_ERROR_CMD8 = 0X2; +/** card returned an error response for CMD12 (write stop) */ +uint8_t const SD_CARD_ERROR_CMD12 = 0X3; +/** card returned an error response for CMD17 (read block) */ +uint8_t const SD_CARD_ERROR_CMD17 = 0X4; +/** card returned an error response for CMD18 (read multiple block) */ +uint8_t const SD_CARD_ERROR_CMD18 = 0X5; +/** card returned an error response for CMD24 (write block) */ +uint8_t const SD_CARD_ERROR_CMD24 = 0X6; +/** WRITE_MULTIPLE_BLOCKS command failed */ +uint8_t const SD_CARD_ERROR_CMD25 = 0X7; +/** card returned an error response for CMD58 (read OCR) */ +uint8_t const SD_CARD_ERROR_CMD58 = 0X8; +/** SET_WR_BLK_ERASE_COUNT failed */ +uint8_t const SD_CARD_ERROR_ACMD23 = 0X9; +/** ACMD41 initialization process timeout */ +uint8_t const SD_CARD_ERROR_ACMD41 = 0XA; +/** card returned a bad CSR version field */ +uint8_t const SD_CARD_ERROR_BAD_CSD = 0XB; +/** erase block group command failed */ +uint8_t const SD_CARD_ERROR_ERASE = 0XC; +/** card not capable of single block erase */ +uint8_t const SD_CARD_ERROR_ERASE_SINGLE_BLOCK = 0XD; +/** Erase sequence timed out */ +uint8_t const SD_CARD_ERROR_ERASE_TIMEOUT = 0XE; +/** card returned an error token instead of read data */ +uint8_t const SD_CARD_ERROR_READ = 0XF; +/** read CID or CSD failed */ +uint8_t const SD_CARD_ERROR_READ_REG = 0X10; +/** timeout while waiting for start of read data */ +uint8_t const SD_CARD_ERROR_READ_TIMEOUT = 0X11; +/** card did not accept STOP_TRAN_TOKEN */ +uint8_t const SD_CARD_ERROR_STOP_TRAN = 0X12; +/** card returned an error token as a response to a write operation */ +uint8_t const SD_CARD_ERROR_WRITE = 0X13; +/** attempt to write protected block zero */ +uint8_t const SD_CARD_ERROR_WRITE_BLOCK_ZERO = 0X14; // REMOVE - not used +/** card did not go ready for a multiple block write */ +uint8_t const SD_CARD_ERROR_WRITE_MULTIPLE = 0X15; +/** card returned an error to a CMD13 status check after a write */ +uint8_t const SD_CARD_ERROR_WRITE_PROGRAMMING = 0X16; +/** timeout occurred during write programming */ +uint8_t const SD_CARD_ERROR_WRITE_TIMEOUT = 0X17; +/** incorrect rate selected */ +uint8_t const SD_CARD_ERROR_SCK_RATE = 0X18; +/** init() not called */ +uint8_t const SD_CARD_ERROR_INIT_NOT_CALLED = 0X19; +/** crc check error */ +uint8_t const SD_CARD_ERROR_CRC = 0X20; +//------------------------------------------------------------------------------ +// card types +/** Standard capacity V1 SD card */ +uint8_t const SD_CARD_TYPE_SD1 = 1; +/** Standard capacity V2 SD card */ +uint8_t const SD_CARD_TYPE_SD2 = 2; +/** High Capacity SD card */ +uint8_t const SD_CARD_TYPE_SDHC = 3; +/** + * define SOFTWARE_SPI to use bit-bang SPI + */ +//------------------------------------------------------------------------------ +#if MEGA_SOFT_SPI && (defined(__AVR_ATmega1280__)||defined(__AVR_ATmega2560__)) +#define SOFTWARE_SPI +#elif USE_SOFTWARE_SPI +#define SOFTWARE_SPI +#endif // MEGA_SOFT_SPI +//------------------------------------------------------------------------------ +// SPI pin definitions - do not edit here - change in SdFatConfig.h +// +#ifndef SOFTWARE_SPI +// hardware pin defs +/** The default chip select pin for the SD card is SS. */ +uint8_t const SD_CHIP_SELECT_PIN = SS_PIN; +// The following three pins must not be redefined for hardware SPI. +/** SPI Master Out Slave In pin */ +uint8_t const SPI_MOSI_PIN = MOSI_PIN; +/** SPI Master In Slave Out pin */ +uint8_t const SPI_MISO_PIN = MISO_PIN; +/** SPI Clock pin */ +uint8_t const SPI_SCK_PIN = SCK_PIN; + +#else // SOFTWARE_SPI + +/** SPI chip select pin */ +uint8_t const SD_CHIP_SELECT_PIN = SOFT_SPI_CS_PIN; +/** SPI Master Out Slave In pin */ +uint8_t const SPI_MOSI_PIN = SOFT_SPI_MOSI_PIN; +/** SPI Master In Slave Out pin */ +uint8_t const SPI_MISO_PIN = SOFT_SPI_MISO_PIN; +/** SPI Clock pin */ +uint8_t const SPI_SCK_PIN = SOFT_SPI_SCK_PIN; +#endif // SOFTWARE_SPI +//------------------------------------------------------------------------------ +/** + * \class Sd2Card + * \brief Raw access to SD and SDHC flash memory cards. + */ +class Sd2Card { + public: + /** Construct an instance of Sd2Card. */ + Sd2Card() : errorCode_(SD_CARD_ERROR_INIT_NOT_CALLED), type_(0) {} + uint32_t cardSize(); + bool erase(uint32_t firstBlock, uint32_t lastBlock); + bool eraseSingleBlockEnable(); + /** + * Set SD error code. + * \param[in] code value for error code. + */ + void error(uint8_t code) {errorCode_ = code;} + /** + * \return error code for last error. See Sd2Card.h for a list of error codes. + */ + int errorCode() const {return errorCode_;} + /** \return error data for last error. */ + int errorData() const {return status_;} + /** + * Initialize an SD flash memory card with default clock rate and chip + * select pin. See sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin). + * + * \return true for success or false for failure. + */ + bool init(uint8_t sckRateID = SPI_FULL_SPEED, + uint8_t chipSelectPin = SD_CHIP_SELECT_PIN); + bool readBlock(uint32_t block, uint8_t* dst); + /** + * Read a card's CID register. The CID contains card identification + * information such as Manufacturer ID, Product name, Product serial + * number and Manufacturing date. + * + * \param[out] cid pointer to area for returned data. + * + * \return true for success or false for failure. + */ + bool readCID(cid_t* cid) { + return readRegister(CMD10, cid); + } + /** + * Read a card's CSD register. The CSD contains Card-Specific Data that + * provides information regarding access to the card's contents. + * + * \param[out] csd pointer to area for returned data. + * + * \return true for success or false for failure. + */ + bool readCSD(csd_t* csd) { + return readRegister(CMD9, csd); + } + bool readData(uint8_t *dst); + bool readStart(uint32_t blockNumber); + bool readStop(); + bool setSckRate(uint8_t sckRateID); + /** Return the card type: SD V1, SD V2 or SDHC + * \return 0 - SD V1, 1 - SD V2, or 3 - SDHC. + */ + int type() const {return type_;} + bool writeBlock(uint32_t blockNumber, const uint8_t* src); + bool writeData(const uint8_t* src); + bool writeStart(uint32_t blockNumber, uint32_t eraseCount); + bool writeStop(); + private: + //---------------------------------------------------------------------------- + uint8_t chipSelectPin_; + uint8_t errorCode_; + uint8_t spiRate_; + uint8_t status_; + uint8_t type_; + // private functions + uint8_t cardAcmd(uint8_t cmd, uint32_t arg) { + cardCommand(CMD55, 0); + return cardCommand(cmd, arg); + } + uint8_t cardCommand(uint8_t cmd, uint32_t arg); + + bool readData(uint8_t* dst, uint16_t count); + bool readRegister(uint8_t cmd, void* buf); + void chipSelectHigh(); + void chipSelectLow(); + void type(uint8_t value) {type_ = value;} + bool waitNotBusy(uint16_t timeoutMillis); + bool writeData(uint8_t token, const uint8_t* src); +}; +#endif // Sd2Card_h + + +#endif \ No newline at end of file diff --git a/Marlin/Sd2PinMap.h b/Marlin/Sd2PinMap.h index bba0dd027..93ab943ce 100644 --- a/Marlin/Sd2PinMap.h +++ b/Marlin/Sd2PinMap.h @@ -1,353 +1,368 @@ -/* Arduino SdFat Library - * Copyright (C) 2010 by William Greiman - * - * This file is part of the Arduino SdFat Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the Arduino SdFat Library. If not, see - * . - */ -// Warning this file was generated by a program. -#ifndef Sd2PinMap_h -#define Sd2PinMap_h -#include - -//------------------------------------------------------------------------------ -/** struct for mapping digital pins */ -struct pin_map_t { - volatile uint8_t* ddr; - volatile uint8_t* pin; - volatile uint8_t* port; - uint8_t bit; -}; -//------------------------------------------------------------------------------ -#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) -// Mega - -// Two Wire (aka I2C) ports -uint8_t const SDA_PIN = 20; -uint8_t const SCL_PIN = 21; - -// SPI port -uint8_t const SS_PIN = 53; -uint8_t const MOSI_PIN = 51; -uint8_t const MISO_PIN = 50; -uint8_t const SCK_PIN = 52; - -static const pin_map_t digitalPinMap[] = { - {&DDRE, &PINE, &PORTE, 0}, // E0 0 - {&DDRE, &PINE, &PORTE, 1}, // E1 1 - {&DDRE, &PINE, &PORTE, 4}, // E4 2 - {&DDRE, &PINE, &PORTE, 5}, // E5 3 - {&DDRG, &PING, &PORTG, 5}, // G5 4 - {&DDRE, &PINE, &PORTE, 3}, // E3 5 - {&DDRH, &PINH, &PORTH, 3}, // H3 6 - {&DDRH, &PINH, &PORTH, 4}, // H4 7 - {&DDRH, &PINH, &PORTH, 5}, // H5 8 - {&DDRH, &PINH, &PORTH, 6}, // H6 9 - {&DDRB, &PINB, &PORTB, 4}, // B4 10 - {&DDRB, &PINB, &PORTB, 5}, // B5 11 - {&DDRB, &PINB, &PORTB, 6}, // B6 12 - {&DDRB, &PINB, &PORTB, 7}, // B7 13 - {&DDRJ, &PINJ, &PORTJ, 1}, // J1 14 - {&DDRJ, &PINJ, &PORTJ, 0}, // J0 15 - {&DDRH, &PINH, &PORTH, 1}, // H1 16 - {&DDRH, &PINH, &PORTH, 0}, // H0 17 - {&DDRD, &PIND, &PORTD, 3}, // D3 18 - {&DDRD, &PIND, &PORTD, 2}, // D2 19 - {&DDRD, &PIND, &PORTD, 1}, // D1 20 - {&DDRD, &PIND, &PORTD, 0}, // D0 21 - {&DDRA, &PINA, &PORTA, 0}, // A0 22 - {&DDRA, &PINA, &PORTA, 1}, // A1 23 - {&DDRA, &PINA, &PORTA, 2}, // A2 24 - {&DDRA, &PINA, &PORTA, 3}, // A3 25 - {&DDRA, &PINA, &PORTA, 4}, // A4 26 - {&DDRA, &PINA, &PORTA, 5}, // A5 27 - {&DDRA, &PINA, &PORTA, 6}, // A6 28 - {&DDRA, &PINA, &PORTA, 7}, // A7 29 - {&DDRC, &PINC, &PORTC, 7}, // C7 30 - {&DDRC, &PINC, &PORTC, 6}, // C6 31 - {&DDRC, &PINC, &PORTC, 5}, // C5 32 - {&DDRC, &PINC, &PORTC, 4}, // C4 33 - {&DDRC, &PINC, &PORTC, 3}, // C3 34 - {&DDRC, &PINC, &PORTC, 2}, // C2 35 - {&DDRC, &PINC, &PORTC, 1}, // C1 36 - {&DDRC, &PINC, &PORTC, 0}, // C0 37 - {&DDRD, &PIND, &PORTD, 7}, // D7 38 - {&DDRG, &PING, &PORTG, 2}, // G2 39 - {&DDRG, &PING, &PORTG, 1}, // G1 40 - {&DDRG, &PING, &PORTG, 0}, // G0 41 - {&DDRL, &PINL, &PORTL, 7}, // L7 42 - {&DDRL, &PINL, &PORTL, 6}, // L6 43 - {&DDRL, &PINL, &PORTL, 5}, // L5 44 - {&DDRL, &PINL, &PORTL, 4}, // L4 45 - {&DDRL, &PINL, &PORTL, 3}, // L3 46 - {&DDRL, &PINL, &PORTL, 2}, // L2 47 - {&DDRL, &PINL, &PORTL, 1}, // L1 48 - {&DDRL, &PINL, &PORTL, 0}, // L0 49 - {&DDRB, &PINB, &PORTB, 3}, // B3 50 - {&DDRB, &PINB, &PORTB, 2}, // B2 51 - {&DDRB, &PINB, &PORTB, 1}, // B1 52 - {&DDRB, &PINB, &PORTB, 0}, // B0 53 - {&DDRF, &PINF, &PORTF, 0}, // F0 54 - {&DDRF, &PINF, &PORTF, 1}, // F1 55 - {&DDRF, &PINF, &PORTF, 2}, // F2 56 - {&DDRF, &PINF, &PORTF, 3}, // F3 57 - {&DDRF, &PINF, &PORTF, 4}, // F4 58 - {&DDRF, &PINF, &PORTF, 5}, // F5 59 - {&DDRF, &PINF, &PORTF, 6}, // F6 60 - {&DDRF, &PINF, &PORTF, 7}, // F7 61 - {&DDRK, &PINK, &PORTK, 0}, // K0 62 - {&DDRK, &PINK, &PORTK, 1}, // K1 63 - {&DDRK, &PINK, &PORTK, 2}, // K2 64 - {&DDRK, &PINK, &PORTK, 3}, // K3 65 - {&DDRK, &PINK, &PORTK, 4}, // K4 66 - {&DDRK, &PINK, &PORTK, 5}, // K5 67 - {&DDRK, &PINK, &PORTK, 6}, // K6 68 - {&DDRK, &PINK, &PORTK, 7} // K7 69 -}; -//------------------------------------------------------------------------------ -#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__) -// Sanguino - -// Two Wire (aka I2C) ports -uint8_t const SDA_PIN = 17; -uint8_t const SCL_PIN = 18; - -// SPI port -uint8_t const SS_PIN = 4; -uint8_t const MOSI_PIN = 5; -uint8_t const MISO_PIN = 6; -uint8_t const SCK_PIN = 7; - -static const pin_map_t digitalPinMap[] = { - {&DDRB, &PINB, &PORTB, 0}, // B0 0 - {&DDRB, &PINB, &PORTB, 1}, // B1 1 - {&DDRB, &PINB, &PORTB, 2}, // B2 2 - {&DDRB, &PINB, &PORTB, 3}, // B3 3 - {&DDRB, &PINB, &PORTB, 4}, // B4 4 - {&DDRB, &PINB, &PORTB, 5}, // B5 5 - {&DDRB, &PINB, &PORTB, 6}, // B6 6 - {&DDRB, &PINB, &PORTB, 7}, // B7 7 - {&DDRD, &PIND, &PORTD, 0}, // D0 8 - {&DDRD, &PIND, &PORTD, 1}, // D1 9 - {&DDRD, &PIND, &PORTD, 2}, // D2 10 - {&DDRD, &PIND, &PORTD, 3}, // D3 11 - {&DDRD, &PIND, &PORTD, 4}, // D4 12 - {&DDRD, &PIND, &PORTD, 5}, // D5 13 - {&DDRD, &PIND, &PORTD, 6}, // D6 14 - {&DDRD, &PIND, &PORTD, 7}, // D7 15 - {&DDRC, &PINC, &PORTC, 0}, // C0 16 - {&DDRC, &PINC, &PORTC, 1}, // C1 17 - {&DDRC, &PINC, &PORTC, 2}, // C2 18 - {&DDRC, &PINC, &PORTC, 3}, // C3 19 - {&DDRC, &PINC, &PORTC, 4}, // C4 20 - {&DDRC, &PINC, &PORTC, 5}, // C5 21 - {&DDRC, &PINC, &PORTC, 6}, // C6 22 - {&DDRC, &PINC, &PORTC, 7}, // C7 23 - {&DDRA, &PINA, &PORTA, 7}, // A7 24 - {&DDRA, &PINA, &PORTA, 6}, // A6 25 - {&DDRA, &PINA, &PORTA, 5}, // A5 26 - {&DDRA, &PINA, &PORTA, 4}, // A4 27 - {&DDRA, &PINA, &PORTA, 3}, // A3 28 - {&DDRA, &PINA, &PORTA, 2}, // A2 29 - {&DDRA, &PINA, &PORTA, 1}, // A1 30 - {&DDRA, &PINA, &PORTA, 0} // A0 31 -}; -//------------------------------------------------------------------------------ -#elif defined(__AVR_ATmega32U4__) -// Teensy 2.0 - -// Two Wire (aka I2C) ports -uint8_t const SDA_PIN = 6; -uint8_t const SCL_PIN = 5; - -// SPI port -uint8_t const SS_PIN = 0; -uint8_t const MOSI_PIN = 2; -uint8_t const MISO_PIN = 3; -uint8_t const SCK_PIN = 1; - -static const pin_map_t digitalPinMap[] = { - {&DDRB, &PINB, &PORTB, 0}, // B0 0 - {&DDRB, &PINB, &PORTB, 1}, // B1 1 - {&DDRB, &PINB, &PORTB, 2}, // B2 2 - {&DDRB, &PINB, &PORTB, 3}, // B3 3 - {&DDRB, &PINB, &PORTB, 7}, // B7 4 - {&DDRD, &PIND, &PORTD, 0}, // D0 5 - {&DDRD, &PIND, &PORTD, 1}, // D1 6 - {&DDRD, &PIND, &PORTD, 2}, // D2 7 - {&DDRD, &PIND, &PORTD, 3}, // D3 8 - {&DDRC, &PINC, &PORTC, 6}, // C6 9 - {&DDRC, &PINC, &PORTC, 7}, // C7 10 - {&DDRD, &PIND, &PORTD, 6}, // D6 11 - {&DDRD, &PIND, &PORTD, 7}, // D7 12 - {&DDRB, &PINB, &PORTB, 4}, // B4 13 - {&DDRB, &PINB, &PORTB, 5}, // B5 14 - {&DDRB, &PINB, &PORTB, 6}, // B6 15 - {&DDRF, &PINF, &PORTF, 7}, // F7 16 - {&DDRF, &PINF, &PORTF, 6}, // F6 17 - {&DDRF, &PINF, &PORTF, 5}, // F5 18 - {&DDRF, &PINF, &PORTF, 4}, // F4 19 - {&DDRF, &PINF, &PORTF, 1}, // F1 20 - {&DDRF, &PINF, &PORTF, 0}, // F0 21 - {&DDRD, &PIND, &PORTD, 4}, // D4 22 - {&DDRD, &PIND, &PORTD, 5}, // D5 23 - {&DDRE, &PINE, &PORTE, 6} // E6 24 -}; -//------------------------------------------------------------------------------ -#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) -// Teensy++ 1.0 & 2.0 - -// Two Wire (aka I2C) ports -uint8_t const SDA_PIN = 1; -uint8_t const SCL_PIN = 0; - -// SPI port -uint8_t const SS_PIN = 20; -uint8_t const MOSI_PIN = 22; -uint8_t const MISO_PIN = 23; -uint8_t const SCK_PIN = 21; - -static const pin_map_t digitalPinMap[] = { - {&DDRD, &PIND, &PORTD, 0}, // D0 0 - {&DDRD, &PIND, &PORTD, 1}, // D1 1 - {&DDRD, &PIND, &PORTD, 2}, // D2 2 - {&DDRD, &PIND, &PORTD, 3}, // D3 3 - {&DDRD, &PIND, &PORTD, 4}, // D4 4 - {&DDRD, &PIND, &PORTD, 5}, // D5 5 - {&DDRD, &PIND, &PORTD, 6}, // D6 6 - {&DDRD, &PIND, &PORTD, 7}, // D7 7 - {&DDRE, &PINE, &PORTE, 0}, // E0 8 - {&DDRE, &PINE, &PORTE, 1}, // E1 9 - {&DDRC, &PINC, &PORTC, 0}, // C0 10 - {&DDRC, &PINC, &PORTC, 1}, // C1 11 - {&DDRC, &PINC, &PORTC, 2}, // C2 12 - {&DDRC, &PINC, &PORTC, 3}, // C3 13 - {&DDRC, &PINC, &PORTC, 4}, // C4 14 - {&DDRC, &PINC, &PORTC, 5}, // C5 15 - {&DDRC, &PINC, &PORTC, 6}, // C6 16 - {&DDRC, &PINC, &PORTC, 7}, // C7 17 - {&DDRE, &PINE, &PORTE, 6}, // E6 18 - {&DDRE, &PINE, &PORTE, 7}, // E7 19 - {&DDRB, &PINB, &PORTB, 0}, // B0 20 - {&DDRB, &PINB, &PORTB, 1}, // B1 21 - {&DDRB, &PINB, &PORTB, 2}, // B2 22 - {&DDRB, &PINB, &PORTB, 3}, // B3 23 - {&DDRB, &PINB, &PORTB, 4}, // B4 24 - {&DDRB, &PINB, &PORTB, 5}, // B5 25 - {&DDRB, &PINB, &PORTB, 6}, // B6 26 - {&DDRB, &PINB, &PORTB, 7}, // B7 27 - {&DDRA, &PINA, &PORTA, 0}, // A0 28 - {&DDRA, &PINA, &PORTA, 1}, // A1 29 - {&DDRA, &PINA, &PORTA, 2}, // A2 30 - {&DDRA, &PINA, &PORTA, 3}, // A3 31 - {&DDRA, &PINA, &PORTA, 4}, // A4 32 - {&DDRA, &PINA, &PORTA, 5}, // A5 33 - {&DDRA, &PINA, &PORTA, 6}, // A6 34 - {&DDRA, &PINA, &PORTA, 7}, // A7 35 - {&DDRE, &PINE, &PORTE, 4}, // E4 36 - {&DDRE, &PINE, &PORTE, 5}, // E5 37 - {&DDRF, &PINF, &PORTF, 0}, // F0 38 - {&DDRF, &PINF, &PORTF, 1}, // F1 39 - {&DDRF, &PINF, &PORTF, 2}, // F2 40 - {&DDRF, &PINF, &PORTF, 3}, // F3 41 - {&DDRF, &PINF, &PORTF, 4}, // F4 42 - {&DDRF, &PINF, &PORTF, 5}, // F5 43 - {&DDRF, &PINF, &PORTF, 6}, // F6 44 - {&DDRF, &PINF, &PORTF, 7} // F7 45 -}; -//------------------------------------------------------------------------------ -#else // defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) -// 168 and 328 Arduinos - -// Two Wire (aka I2C) ports -uint8_t const SDA_PIN = 18; -uint8_t const SCL_PIN = 19; - -// SPI port -uint8_t const SS_PIN = 10; -uint8_t const MOSI_PIN = 11; -uint8_t const MISO_PIN = 12; -uint8_t const SCK_PIN = 13; - -static const pin_map_t digitalPinMap[] = { - {&DDRD, &PIND, &PORTD, 0}, // D0 0 - {&DDRD, &PIND, &PORTD, 1}, // D1 1 - {&DDRD, &PIND, &PORTD, 2}, // D2 2 - {&DDRD, &PIND, &PORTD, 3}, // D3 3 - {&DDRD, &PIND, &PORTD, 4}, // D4 4 - {&DDRD, &PIND, &PORTD, 5}, // D5 5 - {&DDRD, &PIND, &PORTD, 6}, // D6 6 - {&DDRD, &PIND, &PORTD, 7}, // D7 7 - {&DDRB, &PINB, &PORTB, 0}, // B0 8 - {&DDRB, &PINB, &PORTB, 1}, // B1 9 - {&DDRB, &PINB, &PORTB, 2}, // B2 10 - {&DDRB, &PINB, &PORTB, 3}, // B3 11 - {&DDRB, &PINB, &PORTB, 4}, // B4 12 - {&DDRB, &PINB, &PORTB, 5}, // B5 13 - {&DDRC, &PINC, &PORTC, 0}, // C0 14 - {&DDRC, &PINC, &PORTC, 1}, // C1 15 - {&DDRC, &PINC, &PORTC, 2}, // C2 16 - {&DDRC, &PINC, &PORTC, 3}, // C3 17 - {&DDRC, &PINC, &PORTC, 4}, // C4 18 - {&DDRC, &PINC, &PORTC, 5} // C5 19 -}; -#endif // defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) -//------------------------------------------------------------------------------ -static const uint8_t digitalPinCount = sizeof(digitalPinMap)/sizeof(pin_map_t); - -uint8_t badPinNumber(void) - __attribute__((error("Pin number is too large or not a constant"))); - -static inline __attribute__((always_inline)) - uint8_t getPinMode(uint8_t pin) { - if (__builtin_constant_p(pin) && pin < digitalPinCount) { - return (*digitalPinMap[pin].ddr >> digitalPinMap[pin].bit) & 1; - } else { - return badPinNumber(); - } -} -static inline __attribute__((always_inline)) - void setPinMode(uint8_t pin, uint8_t mode) { - if (__builtin_constant_p(pin) && pin < digitalPinCount) { - if (mode) { - *digitalPinMap[pin].ddr |= 1 << digitalPinMap[pin].bit; - } else { - *digitalPinMap[pin].ddr &= ~(1 << digitalPinMap[pin].bit); - } - } else { - badPinNumber(); - } -} -static inline __attribute__((always_inline)) - uint8_t fastDigitalRead(uint8_t pin) { - if (__builtin_constant_p(pin) && pin < digitalPinCount) { - return (*digitalPinMap[pin].pin >> digitalPinMap[pin].bit) & 1; - } else { - return badPinNumber(); - } -} -static inline __attribute__((always_inline)) - void fastDigitalWrite(uint8_t pin, uint8_t value) { - if (__builtin_constant_p(pin) && pin < digitalPinCount) { - if (value) { - *digitalPinMap[pin].port |= 1 << digitalPinMap[pin].bit; - } else { - *digitalPinMap[pin].port &= ~(1 << digitalPinMap[pin].bit); - } - } else { - badPinNumber(); - } -} -#endif // Sd2PinMap_h +/* Arduino SdFat Library + * Copyright (C) 2010 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +// Warning this file was generated by a program. +#include "Marlin.h" +#ifdef SDSUPPORT + +#ifndef Sd2PinMap_h +#define Sd2PinMap_h +#include +//------------------------------------------------------------------------------ +/** struct for mapping digital pins */ +struct pin_map_t { + volatile uint8_t* ddr; + volatile uint8_t* pin; + volatile uint8_t* port; + uint8_t bit; +}; +//------------------------------------------------------------------------------ +#if defined(__AVR_ATmega1280__)\ +|| defined(__AVR_ATmega2560__) +// Mega + +// Two Wire (aka I2C) ports +uint8_t const SDA_PIN = 20; // D1 +uint8_t const SCL_PIN = 21; // D0 + +#undef MOSI_PIN +#undef MISO_PIN +// SPI port +uint8_t const SS_PIN = 53; // B0 +uint8_t const MOSI_PIN = 51; // B2 +uint8_t const MISO_PIN = 50; // B3 +uint8_t const SCK_PIN = 52; // B1 + +static const pin_map_t digitalPinMap[] = { + {&DDRE, &PINE, &PORTE, 0}, // E0 0 + {&DDRE, &PINE, &PORTE, 1}, // E1 1 + {&DDRE, &PINE, &PORTE, 4}, // E4 2 + {&DDRE, &PINE, &PORTE, 5}, // E5 3 + {&DDRG, &PING, &PORTG, 5}, // G5 4 + {&DDRE, &PINE, &PORTE, 3}, // E3 5 + {&DDRH, &PINH, &PORTH, 3}, // H3 6 + {&DDRH, &PINH, &PORTH, 4}, // H4 7 + {&DDRH, &PINH, &PORTH, 5}, // H5 8 + {&DDRH, &PINH, &PORTH, 6}, // H6 9 + {&DDRB, &PINB, &PORTB, 4}, // B4 10 + {&DDRB, &PINB, &PORTB, 5}, // B5 11 + {&DDRB, &PINB, &PORTB, 6}, // B6 12 + {&DDRB, &PINB, &PORTB, 7}, // B7 13 + {&DDRJ, &PINJ, &PORTJ, 1}, // J1 14 + {&DDRJ, &PINJ, &PORTJ, 0}, // J0 15 + {&DDRH, &PINH, &PORTH, 1}, // H1 16 + {&DDRH, &PINH, &PORTH, 0}, // H0 17 + {&DDRD, &PIND, &PORTD, 3}, // D3 18 + {&DDRD, &PIND, &PORTD, 2}, // D2 19 + {&DDRD, &PIND, &PORTD, 1}, // D1 20 + {&DDRD, &PIND, &PORTD, 0}, // D0 21 + {&DDRA, &PINA, &PORTA, 0}, // A0 22 + {&DDRA, &PINA, &PORTA, 1}, // A1 23 + {&DDRA, &PINA, &PORTA, 2}, // A2 24 + {&DDRA, &PINA, &PORTA, 3}, // A3 25 + {&DDRA, &PINA, &PORTA, 4}, // A4 26 + {&DDRA, &PINA, &PORTA, 5}, // A5 27 + {&DDRA, &PINA, &PORTA, 6}, // A6 28 + {&DDRA, &PINA, &PORTA, 7}, // A7 29 + {&DDRC, &PINC, &PORTC, 7}, // C7 30 + {&DDRC, &PINC, &PORTC, 6}, // C6 31 + {&DDRC, &PINC, &PORTC, 5}, // C5 32 + {&DDRC, &PINC, &PORTC, 4}, // C4 33 + {&DDRC, &PINC, &PORTC, 3}, // C3 34 + {&DDRC, &PINC, &PORTC, 2}, // C2 35 + {&DDRC, &PINC, &PORTC, 1}, // C1 36 + {&DDRC, &PINC, &PORTC, 0}, // C0 37 + {&DDRD, &PIND, &PORTD, 7}, // D7 38 + {&DDRG, &PING, &PORTG, 2}, // G2 39 + {&DDRG, &PING, &PORTG, 1}, // G1 40 + {&DDRG, &PING, &PORTG, 0}, // G0 41 + {&DDRL, &PINL, &PORTL, 7}, // L7 42 + {&DDRL, &PINL, &PORTL, 6}, // L6 43 + {&DDRL, &PINL, &PORTL, 5}, // L5 44 + {&DDRL, &PINL, &PORTL, 4}, // L4 45 + {&DDRL, &PINL, &PORTL, 3}, // L3 46 + {&DDRL, &PINL, &PORTL, 2}, // L2 47 + {&DDRL, &PINL, &PORTL, 1}, // L1 48 + {&DDRL, &PINL, &PORTL, 0}, // L0 49 + {&DDRB, &PINB, &PORTB, 3}, // B3 50 + {&DDRB, &PINB, &PORTB, 2}, // B2 51 + {&DDRB, &PINB, &PORTB, 1}, // B1 52 + {&DDRB, &PINB, &PORTB, 0}, // B0 53 + {&DDRF, &PINF, &PORTF, 0}, // F0 54 + {&DDRF, &PINF, &PORTF, 1}, // F1 55 + {&DDRF, &PINF, &PORTF, 2}, // F2 56 + {&DDRF, &PINF, &PORTF, 3}, // F3 57 + {&DDRF, &PINF, &PORTF, 4}, // F4 58 + {&DDRF, &PINF, &PORTF, 5}, // F5 59 + {&DDRF, &PINF, &PORTF, 6}, // F6 60 + {&DDRF, &PINF, &PORTF, 7}, // F7 61 + {&DDRK, &PINK, &PORTK, 0}, // K0 62 + {&DDRK, &PINK, &PORTK, 1}, // K1 63 + {&DDRK, &PINK, &PORTK, 2}, // K2 64 + {&DDRK, &PINK, &PORTK, 3}, // K3 65 + {&DDRK, &PINK, &PORTK, 4}, // K4 66 + {&DDRK, &PINK, &PORTK, 5}, // K5 67 + {&DDRK, &PINK, &PORTK, 6}, // K6 68 + {&DDRK, &PINK, &PORTK, 7} // K7 69 +}; +//------------------------------------------------------------------------------ +#elif defined(__AVR_ATmega644P__)\ +|| defined(__AVR_ATmega644__)\ +|| defined(__AVR_ATmega1284P__) +// Sanguino + +// Two Wire (aka I2C) ports +uint8_t const SDA_PIN = 17; // C1 +uint8_t const SCL_PIN = 18; // C2 + +// SPI port +uint8_t const SS_PIN = 4; // B4 +uint8_t const MOSI_PIN = 5; // B5 +uint8_t const MISO_PIN = 6; // B6 +uint8_t const SCK_PIN = 7; // B7 + +static const pin_map_t digitalPinMap[] = { + {&DDRB, &PINB, &PORTB, 0}, // B0 0 + {&DDRB, &PINB, &PORTB, 1}, // B1 1 + {&DDRB, &PINB, &PORTB, 2}, // B2 2 + {&DDRB, &PINB, &PORTB, 3}, // B3 3 + {&DDRB, &PINB, &PORTB, 4}, // B4 4 + {&DDRB, &PINB, &PORTB, 5}, // B5 5 + {&DDRB, &PINB, &PORTB, 6}, // B6 6 + {&DDRB, &PINB, &PORTB, 7}, // B7 7 + {&DDRD, &PIND, &PORTD, 0}, // D0 8 + {&DDRD, &PIND, &PORTD, 1}, // D1 9 + {&DDRD, &PIND, &PORTD, 2}, // D2 10 + {&DDRD, &PIND, &PORTD, 3}, // D3 11 + {&DDRD, &PIND, &PORTD, 4}, // D4 12 + {&DDRD, &PIND, &PORTD, 5}, // D5 13 + {&DDRD, &PIND, &PORTD, 6}, // D6 14 + {&DDRD, &PIND, &PORTD, 7}, // D7 15 + {&DDRC, &PINC, &PORTC, 0}, // C0 16 + {&DDRC, &PINC, &PORTC, 1}, // C1 17 + {&DDRC, &PINC, &PORTC, 2}, // C2 18 + {&DDRC, &PINC, &PORTC, 3}, // C3 19 + {&DDRC, &PINC, &PORTC, 4}, // C4 20 + {&DDRC, &PINC, &PORTC, 5}, // C5 21 + {&DDRC, &PINC, &PORTC, 6}, // C6 22 + {&DDRC, &PINC, &PORTC, 7}, // C7 23 + {&DDRA, &PINA, &PORTA, 7}, // A7 24 + {&DDRA, &PINA, &PORTA, 6}, // A6 25 + {&DDRA, &PINA, &PORTA, 5}, // A5 26 + {&DDRA, &PINA, &PORTA, 4}, // A4 27 + {&DDRA, &PINA, &PORTA, 3}, // A3 28 + {&DDRA, &PINA, &PORTA, 2}, // A2 29 + {&DDRA, &PINA, &PORTA, 1}, // A1 30 + {&DDRA, &PINA, &PORTA, 0} // A0 31 +}; +//------------------------------------------------------------------------------ +#elif defined(__AVR_ATmega32U4__) +// Teensy 2.0 + +// Two Wire (aka I2C) ports +uint8_t const SDA_PIN = 6; // D1 +uint8_t const SCL_PIN = 5; // D0 + +// SPI port +uint8_t const SS_PIN = 0; // B0 +uint8_t const MOSI_PIN = 2; // B2 +uint8_t const MISO_PIN = 3; // B3 +uint8_t const SCK_PIN = 1; // B1 + +static const pin_map_t digitalPinMap[] = { + {&DDRB, &PINB, &PORTB, 0}, // B0 0 + {&DDRB, &PINB, &PORTB, 1}, // B1 1 + {&DDRB, &PINB, &PORTB, 2}, // B2 2 + {&DDRB, &PINB, &PORTB, 3}, // B3 3 + {&DDRB, &PINB, &PORTB, 7}, // B7 4 + {&DDRD, &PIND, &PORTD, 0}, // D0 5 + {&DDRD, &PIND, &PORTD, 1}, // D1 6 + {&DDRD, &PIND, &PORTD, 2}, // D2 7 + {&DDRD, &PIND, &PORTD, 3}, // D3 8 + {&DDRC, &PINC, &PORTC, 6}, // C6 9 + {&DDRC, &PINC, &PORTC, 7}, // C7 10 + {&DDRD, &PIND, &PORTD, 6}, // D6 11 + {&DDRD, &PIND, &PORTD, 7}, // D7 12 + {&DDRB, &PINB, &PORTB, 4}, // B4 13 + {&DDRB, &PINB, &PORTB, 5}, // B5 14 + {&DDRB, &PINB, &PORTB, 6}, // B6 15 + {&DDRF, &PINF, &PORTF, 7}, // F7 16 + {&DDRF, &PINF, &PORTF, 6}, // F6 17 + {&DDRF, &PINF, &PORTF, 5}, // F5 18 + {&DDRF, &PINF, &PORTF, 4}, // F4 19 + {&DDRF, &PINF, &PORTF, 1}, // F1 20 + {&DDRF, &PINF, &PORTF, 0}, // F0 21 + {&DDRD, &PIND, &PORTD, 4}, // D4 22 + {&DDRD, &PIND, &PORTD, 5}, // D5 23 + {&DDRE, &PINE, &PORTE, 6} // E6 24 +}; +//------------------------------------------------------------------------------ +#elif defined(__AVR_AT90USB646__)\ +|| defined(__AVR_AT90USB1286__) +// Teensy++ 1.0 & 2.0 + +// Two Wire (aka I2C) ports +uint8_t const SDA_PIN = 1; // D1 +uint8_t const SCL_PIN = 0; // D0 + +// SPI port +uint8_t const SS_PIN = 20; // B0 +uint8_t const MOSI_PIN = 22; // B2 +uint8_t const MISO_PIN = 23; // B3 +uint8_t const SCK_PIN = 21; // B1 + +static const pin_map_t digitalPinMap[] = { + {&DDRD, &PIND, &PORTD, 0}, // D0 0 + {&DDRD, &PIND, &PORTD, 1}, // D1 1 + {&DDRD, &PIND, &PORTD, 2}, // D2 2 + {&DDRD, &PIND, &PORTD, 3}, // D3 3 + {&DDRD, &PIND, &PORTD, 4}, // D4 4 + {&DDRD, &PIND, &PORTD, 5}, // D5 5 + {&DDRD, &PIND, &PORTD, 6}, // D6 6 + {&DDRD, &PIND, &PORTD, 7}, // D7 7 + {&DDRE, &PINE, &PORTE, 0}, // E0 8 + {&DDRE, &PINE, &PORTE, 1}, // E1 9 + {&DDRC, &PINC, &PORTC, 0}, // C0 10 + {&DDRC, &PINC, &PORTC, 1}, // C1 11 + {&DDRC, &PINC, &PORTC, 2}, // C2 12 + {&DDRC, &PINC, &PORTC, 3}, // C3 13 + {&DDRC, &PINC, &PORTC, 4}, // C4 14 + {&DDRC, &PINC, &PORTC, 5}, // C5 15 + {&DDRC, &PINC, &PORTC, 6}, // C6 16 + {&DDRC, &PINC, &PORTC, 7}, // C7 17 + {&DDRE, &PINE, &PORTE, 6}, // E6 18 + {&DDRE, &PINE, &PORTE, 7}, // E7 19 + {&DDRB, &PINB, &PORTB, 0}, // B0 20 + {&DDRB, &PINB, &PORTB, 1}, // B1 21 + {&DDRB, &PINB, &PORTB, 2}, // B2 22 + {&DDRB, &PINB, &PORTB, 3}, // B3 23 + {&DDRB, &PINB, &PORTB, 4}, // B4 24 + {&DDRB, &PINB, &PORTB, 5}, // B5 25 + {&DDRB, &PINB, &PORTB, 6}, // B6 26 + {&DDRB, &PINB, &PORTB, 7}, // B7 27 + {&DDRA, &PINA, &PORTA, 0}, // A0 28 + {&DDRA, &PINA, &PORTA, 1}, // A1 29 + {&DDRA, &PINA, &PORTA, 2}, // A2 30 + {&DDRA, &PINA, &PORTA, 3}, // A3 31 + {&DDRA, &PINA, &PORTA, 4}, // A4 32 + {&DDRA, &PINA, &PORTA, 5}, // A5 33 + {&DDRA, &PINA, &PORTA, 6}, // A6 34 + {&DDRA, &PINA, &PORTA, 7}, // A7 35 + {&DDRE, &PINE, &PORTE, 4}, // E4 36 + {&DDRE, &PINE, &PORTE, 5}, // E5 37 + {&DDRF, &PINF, &PORTF, 0}, // F0 38 + {&DDRF, &PINF, &PORTF, 1}, // F1 39 + {&DDRF, &PINF, &PORTF, 2}, // F2 40 + {&DDRF, &PINF, &PORTF, 3}, // F3 41 + {&DDRF, &PINF, &PORTF, 4}, // F4 42 + {&DDRF, &PINF, &PORTF, 5}, // F5 43 + {&DDRF, &PINF, &PORTF, 6}, // F6 44 + {&DDRF, &PINF, &PORTF, 7} // F7 45 +}; +//------------------------------------------------------------------------------ +#elif defined(__AVR_ATmega168__)\ +||defined(__AVR_ATmega168P__)\ +||defined(__AVR_ATmega328P__) +// 168 and 328 Arduinos + +// Two Wire (aka I2C) ports +uint8_t const SDA_PIN = 18; // C4 +uint8_t const SCL_PIN = 19; // C5 + +// SPI port +uint8_t const SS_PIN = 10; // B2 +uint8_t const MOSI_PIN = 11; // B3 +uint8_t const MISO_PIN = 12; // B4 +uint8_t const SCK_PIN = 13; // B5 + +static const pin_map_t digitalPinMap[] = { + {&DDRD, &PIND, &PORTD, 0}, // D0 0 + {&DDRD, &PIND, &PORTD, 1}, // D1 1 + {&DDRD, &PIND, &PORTD, 2}, // D2 2 + {&DDRD, &PIND, &PORTD, 3}, // D3 3 + {&DDRD, &PIND, &PORTD, 4}, // D4 4 + {&DDRD, &PIND, &PORTD, 5}, // D5 5 + {&DDRD, &PIND, &PORTD, 6}, // D6 6 + {&DDRD, &PIND, &PORTD, 7}, // D7 7 + {&DDRB, &PINB, &PORTB, 0}, // B0 8 + {&DDRB, &PINB, &PORTB, 1}, // B1 9 + {&DDRB, &PINB, &PORTB, 2}, // B2 10 + {&DDRB, &PINB, &PORTB, 3}, // B3 11 + {&DDRB, &PINB, &PORTB, 4}, // B4 12 + {&DDRB, &PINB, &PORTB, 5}, // B5 13 + {&DDRC, &PINC, &PORTC, 0}, // C0 14 + {&DDRC, &PINC, &PORTC, 1}, // C1 15 + {&DDRC, &PINC, &PORTC, 2}, // C2 16 + {&DDRC, &PINC, &PORTC, 3}, // C3 17 + {&DDRC, &PINC, &PORTC, 4}, // C4 18 + {&DDRC, &PINC, &PORTC, 5} // C5 19 +}; +#else // defined(__AVR_ATmega1280__) +#error unknown chip +#endif // defined(__AVR_ATmega1280__) +//------------------------------------------------------------------------------ +static const uint8_t digitalPinCount = sizeof(digitalPinMap)/sizeof(pin_map_t); + +uint8_t badPinNumber(void) + __attribute__((error("Pin number is too large or not a constant"))); + +static inline __attribute__((always_inline)) + bool getPinMode(uint8_t pin) { + if (__builtin_constant_p(pin) && pin < digitalPinCount) { + return (*digitalPinMap[pin].ddr >> digitalPinMap[pin].bit) & 1; + } else { + return badPinNumber(); + } +} +static inline __attribute__((always_inline)) + void setPinMode(uint8_t pin, uint8_t mode) { + if (__builtin_constant_p(pin) && pin < digitalPinCount) { + if (mode) { + *digitalPinMap[pin].ddr |= 1 << digitalPinMap[pin].bit; + } else { + *digitalPinMap[pin].ddr &= ~(1 << digitalPinMap[pin].bit); + } + } else { + badPinNumber(); + } +} +static inline __attribute__((always_inline)) + bool fastDigitalRead(uint8_t pin) { + if (__builtin_constant_p(pin) && pin < digitalPinCount) { + return (*digitalPinMap[pin].pin >> digitalPinMap[pin].bit) & 1; + } else { + return badPinNumber(); + } +} +static inline __attribute__((always_inline)) + void fastDigitalWrite(uint8_t pin, uint8_t value) { + if (__builtin_constant_p(pin) && pin < digitalPinCount) { + if (value) { + *digitalPinMap[pin].port |= 1 << digitalPinMap[pin].bit; + } else { + *digitalPinMap[pin].port &= ~(1 << digitalPinMap[pin].bit); + } + } else { + badPinNumber(); + } +} +#endif // Sd2PinMap_h + + +#endif \ No newline at end of file diff --git a/Marlin/SdBaseFile.cpp b/Marlin/SdBaseFile.cpp new file mode 100644 index 000000000..c72eced73 --- /dev/null +++ b/Marlin/SdBaseFile.cpp @@ -0,0 +1,1825 @@ +/* Arduino SdFat Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ + +#include "Marlin.h" +#ifdef SDSUPPORT + +#include "SdBaseFile.h" +//------------------------------------------------------------------------------ +// pointer to cwd directory +SdBaseFile* SdBaseFile::cwd_ = 0; +// callback function for date/time +void (*SdBaseFile::dateTime_)(uint16_t* date, uint16_t* time) = 0; +//------------------------------------------------------------------------------ +// add a cluster to a file +bool SdBaseFile::addCluster() { + if (!vol_->allocContiguous(1, &curCluster_)) goto fail; + + // if first cluster of file link to directory entry + if (firstCluster_ == 0) { + firstCluster_ = curCluster_; + flags_ |= F_FILE_DIR_DIRTY; + } + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +// Add a cluster to a directory file and zero the cluster. +// return with first block of cluster in the cache +bool SdBaseFile::addDirCluster() { + uint32_t block; + // max folder size + if (fileSize_/sizeof(dir_t) >= 0XFFFF) goto fail; + + if (!addCluster()) goto fail; + if (!vol_->cacheFlush()) goto fail; + + block = vol_->clusterStartBlock(curCluster_); + + // set cache to first block of cluster + vol_->cacheSetBlockNumber(block, true); + + // zero first block of cluster + memset(vol_->cacheBuffer_.data, 0, 512); + + // zero rest of cluster + for (uint8_t i = 1; i < vol_->blocksPerCluster_; i++) { + if (!vol_->writeBlock(block + i, vol_->cacheBuffer_.data)) goto fail; + } + // Increase directory file size by cluster size + fileSize_ += 512UL << vol_->clusterSizeShift_; + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +// cache a file's directory entry +// return pointer to cached entry or null for failure +dir_t* SdBaseFile::cacheDirEntry(uint8_t action) { + if (!vol_->cacheRawBlock(dirBlock_, action)) goto fail; + return vol_->cache()->dir + dirIndex_; + + fail: + return 0; +} +//------------------------------------------------------------------------------ +/** Close a file and force cached data and directory information + * to be written to the storage device. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include no file is open or an I/O error. + */ +bool SdBaseFile::close() { + bool rtn = sync(); + type_ = FAT_FILE_TYPE_CLOSED; + return rtn; +} +//------------------------------------------------------------------------------ +/** Check for contiguous file and return its raw block range. + * + * \param[out] bgnBlock the first block address for the file. + * \param[out] endBlock the last block address for the file. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include file is not contiguous, file has zero length + * or an I/O error occurred. + */ +bool SdBaseFile::contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock) { + // error if no blocks + if (firstCluster_ == 0) goto fail; + + for (uint32_t c = firstCluster_; ; c++) { + uint32_t next; + if (!vol_->fatGet(c, &next)) goto fail; + + // check for contiguous + if (next != (c + 1)) { + // error if not end of chain + if (!vol_->isEOC(next)) goto fail; + *bgnBlock = vol_->clusterStartBlock(firstCluster_); + *endBlock = vol_->clusterStartBlock(c) + + vol_->blocksPerCluster_ - 1; + return true; + } + } + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Create and open a new contiguous file of a specified size. + * + * \note This function only supports short DOS 8.3 names. + * See open() for more information. + * + * \param[in] dirFile The directory where the file will be created. + * \param[in] path A path with a valid DOS 8.3 file name. + * \param[in] size The desired file size. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include \a path contains + * an invalid DOS 8.3 file name, the FAT volume has not been initialized, + * a file is already open, the file already exists, the root + * directory is full or an I/O error. + * + */ +bool SdBaseFile::createContiguous(SdBaseFile* dirFile, + const char* path, uint32_t size) { + uint32_t count; + // don't allow zero length file + if (size == 0) goto fail; + if (!open(dirFile, path, O_CREAT | O_EXCL | O_RDWR)) goto fail; + + // calculate number of clusters needed + count = ((size - 1) >> (vol_->clusterSizeShift_ + 9)) + 1; + + // allocate clusters + if (!vol_->allocContiguous(count, &firstCluster_)) { + remove(); + goto fail; + } + fileSize_ = size; + + // insure sync() will update dir entry + flags_ |= F_FILE_DIR_DIRTY; + + return sync(); + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Return a file's directory entry. + * + * \param[out] dir Location for return of the file's directory entry. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool SdBaseFile::dirEntry(dir_t* dir) { + dir_t* p; + // make sure fields on SD are correct + if (!sync()) goto fail; + + // read entry + p = cacheDirEntry(SdVolume::CACHE_FOR_READ); + if (!p) goto fail; + + // copy to caller's struct + memcpy(dir, p, sizeof(dir_t)); + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Format the name field of \a dir into the 13 byte array + * \a name in standard 8.3 short name format. + * + * \param[in] dir The directory structure containing the name. + * \param[out] name A 13 byte char array for the formatted name. + */ +void SdBaseFile::dirName(const dir_t& dir, char* name) { + uint8_t j = 0; + for (uint8_t i = 0; i < 11; i++) { + if (dir.name[i] == ' ')continue; + if (i == 8) name[j++] = '.'; + name[j++] = dir.name[i]; + } + name[j] = 0; +} +//------------------------------------------------------------------------------ +/** Test for the existence of a file in a directory + * + * \param[in] name Name of the file to be tested for. + * + * The calling instance must be an open directory file. + * + * dirFile.exists("TOFIND.TXT") searches for "TOFIND.TXT" in the directory + * dirFile. + * + * \return true if the file exists else false. + */ +bool SdBaseFile::exists(const char* name) { + SdBaseFile file; + return file.open(this, name, O_READ); +} +//------------------------------------------------------------------------------ +/** + * Get a string from a file. + * + * fgets() reads bytes from a file into the array pointed to by \a str, until + * \a num - 1 bytes are read, or a delimiter is read and transferred to \a str, + * or end-of-file is encountered. The string is then terminated + * with a null byte. + * + * fgets() deletes CR, '\\r', from the string. This insures only a '\\n' + * terminates the string for Windows text files which use CRLF for newline. + * + * \param[out] str Pointer to the array where the string is stored. + * \param[in] num Maximum number of characters to be read + * (including the final null byte). Usually the length + * of the array \a str is used. + * \param[in] delim Optional set of delimiters. The default is "\n". + * + * \return For success fgets() returns the length of the string in \a str. + * If no data is read, fgets() returns zero for EOF or -1 if an error occurred. + **/ +int16_t SdBaseFile::fgets(char* str, int16_t num, char* delim) { + char ch; + int16_t n = 0; + int16_t r = -1; + while ((n + 1) < num && (r = read(&ch, 1)) == 1) { + // delete CR + if (ch == '\r') continue; + str[n++] = ch; + if (!delim) { + if (ch == '\n') break; + } else { + if (strchr(delim, ch)) break; + } + } + if (r < 0) { + // read error + return -1; + } + str[n] = '\0'; + return n; +} +//------------------------------------------------------------------------------ +/** Get a file's name + * + * \param[out] name An array of 13 characters for the file's name. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool SdBaseFile::getFilename(char* name) { + if (!isOpen()) return false; + + if (isRoot()) { + name[0] = '/'; + name[1] = '\0'; + return true; + } + // cache entry + dir_t* p = cacheDirEntry(SdVolume::CACHE_FOR_READ); + if (!p) return false; + + // format name + dirName(*p, name); + return true; +} +//------------------------------------------------------------------------------ +void SdBaseFile::getpos(fpos_t* pos) { + pos->position = curPosition_; + pos->cluster = curCluster_; +} + +//------------------------------------------------------------------------------ +/** List directory contents. + * + * \param[in] pr Print stream for list. + * + * \param[in] flags The inclusive OR of + * + * LS_DATE - %Print file modification date + * + * LS_SIZE - %Print file size. + * + * LS_R - Recursive list of subdirectories. + * + * \param[in] indent Amount of space before file name. Used for recursive + * list to indicate subdirectory level. + */ +void SdBaseFile::ls(uint8_t flags, uint8_t indent) { + rewind(); + int8_t status; + while ((status = lsPrintNext( flags, indent))) { + if (status > 1 && (flags & LS_R)) { + uint16_t index = curPosition()/32 - 1; + SdBaseFile s; + if (s.open(this, index, O_READ)) s.ls( flags, indent + 2); + seekSet(32 * (index + 1)); + } + } +} +//------------------------------------------------------------------------------ +// saves 32 bytes on stack for ls recursion +// return 0 - EOF, 1 - normal file, or 2 - directory +int8_t SdBaseFile::lsPrintNext( uint8_t flags, uint8_t indent) { + dir_t dir; + uint8_t w = 0; + + while (1) { + if (read(&dir, sizeof(dir)) != sizeof(dir)) return 0; + if (dir.name[0] == DIR_NAME_FREE) return 0; + + // skip deleted entry and entries for . and .. + if (dir.name[0] != DIR_NAME_DELETED && dir.name[0] != '.' + && DIR_IS_FILE_OR_SUBDIR(&dir)) break; + } + // indent for dir level + for (uint8_t i = 0; i < indent; i++) MYSERIAL.write(' '); + + // print name + for (uint8_t i = 0; i < 11; i++) { + if (dir.name[i] == ' ')continue; + if (i == 8) { + MYSERIAL.write('.'); + w++; + } + MYSERIAL.write(dir.name[i]); + w++; + } + if (DIR_IS_SUBDIR(&dir)) { + MYSERIAL.write('/'); + w++; + } + if (flags & (LS_DATE | LS_SIZE)) { + while (w++ < 14) MYSERIAL.write(' '); + } + // print modify date/time if requested + if (flags & LS_DATE) { + MYSERIAL.write(' '); + printFatDate( dir.lastWriteDate); + MYSERIAL.write(' '); + printFatTime( dir.lastWriteTime); + } + // print size if requested + if (!DIR_IS_SUBDIR(&dir) && (flags & LS_SIZE)) { + MYSERIAL.write(' '); + MYSERIAL.print(dir.fileSize); + } + MYSERIAL.println(); + return DIR_IS_FILE(&dir) ? 1 : 2; +} +//------------------------------------------------------------------------------ +// format directory name field from a 8.3 name string +bool SdBaseFile::make83Name(const char* str, uint8_t* name, const char** ptr) { + uint8_t c; + uint8_t n = 7; // max index for part before dot + uint8_t i = 0; + // blank fill name and extension + while (i < 11) name[i++] = ' '; + i = 0; + while (*str != '\0' && *str != '/') { + c = *str++; + if (c == '.') { + if (n == 10) goto fail; // only one dot allowed + n = 10; // max index for full 8.3 name + i = 8; // place for extension + } else { + // illegal FAT characters + PGM_P p = PSTR("|<>^+=?/[];,*\"\\"); + uint8_t b; + while ((b = pgm_read_byte(p++))) if (b == c) goto fail; + // check size and only allow ASCII printable characters + if (i > n || c < 0X21 || c > 0X7E)goto fail; + // only upper case allowed in 8.3 names - convert lower to upper + name[i++] = (c < 'a' || c > 'z') ? (c) : (c + ('A' - 'a')); + } + } + *ptr = str; + // must have a file name, extension is optional + return name[0] != ' '; + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Make a new directory. + * + * \param[in] parent An open SdFat instance for the directory that will contain + * the new directory. + * + * \param[in] path A path with a valid 8.3 DOS name for the new directory. + * + * \param[in] pFlag Create missing parent directories if true. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include this file is already open, \a parent is not a + * directory, \a path is invalid or already exists in \a parent. + */ +bool SdBaseFile::mkdir(SdBaseFile* parent, const char* path, bool pFlag) { + uint8_t dname[11]; + SdBaseFile dir1, dir2; + SdBaseFile* sub = &dir1; + SdBaseFile* start = parent; + + if (!parent || isOpen()) goto fail; + + if (*path == '/') { + while (*path == '/') path++; + if (!parent->isRoot()) { + if (!dir2.openRoot(parent->vol_)) goto fail; + parent = &dir2; + } + } + while (1) { + if (!make83Name(path, dname, &path)) goto fail; + while (*path == '/') path++; + if (!*path) break; + if (!sub->open(parent, dname, O_READ)) { + if (!pFlag || !sub->mkdir(parent, dname)) { + goto fail; + } + } + if (parent != start) parent->close(); + parent = sub; + sub = parent != &dir1 ? &dir1 : &dir2; + } + return mkdir(parent, dname); + + fail: + return false; +} +//------------------------------------------------------------------------------ +bool SdBaseFile::mkdir(SdBaseFile* parent, const uint8_t dname[11]) { + uint32_t block; + dir_t d; + dir_t* p; + + if (!parent->isDir()) goto fail; + + // create a normal file + if (!open(parent, dname, O_CREAT | O_EXCL | O_RDWR)) goto fail; + + // convert file to directory + flags_ = O_READ; + type_ = FAT_FILE_TYPE_SUBDIR; + + // allocate and zero first cluster + if (!addDirCluster())goto fail; + + // force entry to SD + if (!sync()) goto fail; + + // cache entry - should already be in cache due to sync() call + p = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!p) goto fail; + + // change directory entry attribute + p->attributes = DIR_ATT_DIRECTORY; + + // make entry for '.' + memcpy(&d, p, sizeof(d)); + d.name[0] = '.'; + for (uint8_t i = 1; i < 11; i++) d.name[i] = ' '; + + // cache block for '.' and '..' + block = vol_->clusterStartBlock(firstCluster_); + if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) goto fail; + + // copy '.' to block + memcpy(&vol_->cache()->dir[0], &d, sizeof(d)); + + // make entry for '..' + d.name[1] = '.'; + if (parent->isRoot()) { + d.firstClusterLow = 0; + d.firstClusterHigh = 0; + } else { + d.firstClusterLow = parent->firstCluster_ & 0XFFFF; + d.firstClusterHigh = parent->firstCluster_ >> 16; + } + // copy '..' to block + memcpy(&vol_->cache()->dir[1], &d, sizeof(d)); + + // write first block + return vol_->cacheFlush(); + + fail: + return false; +} +//------------------------------------------------------------------------------ + /** Open a file in the current working directory. + * + * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. + * + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t). + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ + bool SdBaseFile::open(const char* path, uint8_t oflag) { + return open(cwd_, path, oflag); + } +//------------------------------------------------------------------------------ +/** Open a file or directory by name. + * + * \param[in] dirFile An open SdFat instance for the directory containing the + * file to be opened. + * + * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. + * + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of flags from the following list + * + * O_READ - Open for reading. + * + * O_RDONLY - Same as O_READ. + * + * O_WRITE - Open for writing. + * + * O_WRONLY - Same as O_WRITE. + * + * O_RDWR - Open for reading and writing. + * + * O_APPEND - If set, the file offset shall be set to the end of the + * file prior to each write. + * + * O_AT_END - Set the initial position at the end of the file. + * + * O_CREAT - If the file exists, this flag has no effect except as noted + * under O_EXCL below. Otherwise, the file shall be created + * + * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists. + * + * O_SYNC - Call sync() after each write. This flag should not be used with + * write(uint8_t), write_P(PGM_P), writeln_P(PGM_P), or the Arduino Print class. + * These functions do character at a time writes so sync() will be called + * after each byte. + * + * O_TRUNC - If the file exists and is a regular file, and the file is + * successfully opened and is not read only, its length shall be truncated to 0. + * + * WARNING: A given file must not be opened by more than one SdBaseFile object + * of file corruption may occur. + * + * \note Directory files must be opened read only. Write and truncation is + * not allowed for directory files. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include this file is already open, \a dirFile is not + * a directory, \a path is invalid, the file does not exist + * or can't be opened in the access mode specified by oflag. + */ +bool SdBaseFile::open(SdBaseFile* dirFile, const char* path, uint8_t oflag) { + uint8_t dname[11]; + SdBaseFile dir1, dir2; + SdBaseFile *parent = dirFile; + SdBaseFile *sub = &dir1; + + if (!dirFile) goto fail; + + // error if already open + if (isOpen()) goto fail; + + if (*path == '/') { + while (*path == '/') path++; + if (!dirFile->isRoot()) { + if (!dir2.openRoot(dirFile->vol_)) goto fail; + parent = &dir2; + } + } + while (1) { + if (!make83Name(path, dname, &path)) goto fail; + while (*path == '/') path++; + if (!*path) break; + if (!sub->open(parent, dname, O_READ)) goto fail; + if (parent != dirFile) parent->close(); + parent = sub; + sub = parent != &dir1 ? &dir1 : &dir2; + } + return open(parent, dname, oflag); + + fail: + return false; +} +//------------------------------------------------------------------------------ +// open with filename in dname +bool SdBaseFile::open(SdBaseFile* dirFile, + const uint8_t dname[11], uint8_t oflag) { + bool emptyFound = false; + bool fileFound = false; + uint8_t index; + dir_t* p; + + vol_ = dirFile->vol_; + + dirFile->rewind(); + // search for file + + while (dirFile->curPosition_ < dirFile->fileSize_) { + index = 0XF & (dirFile->curPosition_ >> 5); + p = dirFile->readDirCache(); + if (!p) goto fail; + + if (p->name[0] == DIR_NAME_FREE || p->name[0] == DIR_NAME_DELETED) { + // remember first empty slot + if (!emptyFound) { + dirBlock_ = dirFile->vol_->cacheBlockNumber(); + dirIndex_ = index; + emptyFound = true; + } + // done if no entries follow + if (p->name[0] == DIR_NAME_FREE) break; + } else if (!memcmp(dname, p->name, 11)) { + fileFound = true; + break; + } + } + if (fileFound) { + // don't open existing file if O_EXCL + if (oflag & O_EXCL) goto fail; + } else { + // don't create unless O_CREAT and O_WRITE + if (!(oflag & O_CREAT) || !(oflag & O_WRITE)) goto fail; + if (emptyFound) { + index = dirIndex_; + p = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!p) goto fail; + } else { + if (dirFile->type_ == FAT_FILE_TYPE_ROOT_FIXED) goto fail; + + // add and zero cluster for dirFile - first cluster is in cache for write + if (!dirFile->addDirCluster()) goto fail; + + // use first entry in cluster + p = dirFile->vol_->cache()->dir; + index = 0; + } + // initialize as empty file + memset(p, 0, sizeof(dir_t)); + memcpy(p->name, dname, 11); + + // set timestamps + if (dateTime_) { + // call user date/time function + dateTime_(&p->creationDate, &p->creationTime); + } else { + // use default date/time + p->creationDate = FAT_DEFAULT_DATE; + p->creationTime = FAT_DEFAULT_TIME; + } + p->lastAccessDate = p->creationDate; + p->lastWriteDate = p->creationDate; + p->lastWriteTime = p->creationTime; + + // write entry to SD + if (!dirFile->vol_->cacheFlush()) goto fail; + } + // open entry in cache + return openCachedEntry(index, oflag); + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Open a file by index. + * + * \param[in] dirFile An open SdFat instance for the directory. + * + * \param[in] index The \a index of the directory entry for the file to be + * opened. The value for \a index is (directory file position)/32. + * + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. + * + * See open() by path for definition of flags. + * \return true for success or false for failure. + */ +bool SdBaseFile::open(SdBaseFile* dirFile, uint16_t index, uint8_t oflag) { + dir_t* p; + + vol_ = dirFile->vol_; + + // error if already open + if (isOpen() || !dirFile) goto fail; + + // don't open existing file if O_EXCL - user call error + if (oflag & O_EXCL) goto fail; + + // seek to location of entry + if (!dirFile->seekSet(32 * index)) goto fail; + + // read entry into cache + p = dirFile->readDirCache(); + if (!p) goto fail; + + // error if empty slot or '.' or '..' + if (p->name[0] == DIR_NAME_FREE || + p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') { + goto fail; + } + // open cached entry + return openCachedEntry(index & 0XF, oflag); + + fail: + return false; +} +//------------------------------------------------------------------------------ +// open a cached directory entry. Assumes vol_ is initialized +bool SdBaseFile::openCachedEntry(uint8_t dirIndex, uint8_t oflag) { + // location of entry in cache + dir_t* p = &vol_->cache()->dir[dirIndex]; + + // write or truncate is an error for a directory or read-only file + if (p->attributes & (DIR_ATT_READ_ONLY | DIR_ATT_DIRECTORY)) { + if (oflag & (O_WRITE | O_TRUNC)) goto fail; + } + // remember location of directory entry on SD + dirBlock_ = vol_->cacheBlockNumber(); + dirIndex_ = dirIndex; + + // copy first cluster number for directory fields + firstCluster_ = (uint32_t)p->firstClusterHigh << 16; + firstCluster_ |= p->firstClusterLow; + + // make sure it is a normal file or subdirectory + if (DIR_IS_FILE(p)) { + fileSize_ = p->fileSize; + type_ = FAT_FILE_TYPE_NORMAL; + } else if (DIR_IS_SUBDIR(p)) { + if (!vol_->chainSize(firstCluster_, &fileSize_)) goto fail; + type_ = FAT_FILE_TYPE_SUBDIR; + } else { + goto fail; + } + // save open flags for read/write + flags_ = oflag & F_OFLAG; + + // set to start of file + curCluster_ = 0; + curPosition_ = 0; + if ((oflag & O_TRUNC) && !truncate(0)) return false; + return oflag & O_AT_END ? seekEnd(0) : true; + + fail: + type_ = FAT_FILE_TYPE_CLOSED; + return false; +} +//------------------------------------------------------------------------------ +/** Open the next file or subdirectory in a directory. + * + * \param[in] dirFile An open SdFat instance for the directory containing the + * file to be opened. + * + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. + * + * See open() by path for definition of flags. + * \return true for success or false for failure. + */ +bool SdBaseFile::openNext(SdBaseFile* dirFile, uint8_t oflag) { + dir_t* p; + uint8_t index; + + if (!dirFile) goto fail; + + // error if already open + if (isOpen()) goto fail; + + vol_ = dirFile->vol_; + + while (1) { + index = 0XF & (dirFile->curPosition_ >> 5); + + // read entry into cache + p = dirFile->readDirCache(); + if (!p) goto fail; + + // done if last entry + if (p->name[0] == DIR_NAME_FREE) goto fail; + + // skip empty slot or '.' or '..' + if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') { + continue; + } + // must be file or dir + if (DIR_IS_FILE_OR_SUBDIR(p)) { + return openCachedEntry(index, oflag); + } + } + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Open a directory's parent directory. + * + * \param[in] dir Parent of this directory will be opened. Must not be root. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool SdBaseFile::openParent(SdBaseFile* dir) { + dir_t entry; + dir_t* p; + SdBaseFile file; + uint32_t c; + uint32_t cluster; + uint32_t lbn; + // error if already open or dir is root or dir is not a directory + if (isOpen() || !dir || dir->isRoot() || !dir->isDir()) goto fail; + vol_ = dir->vol_; + // position to '..' + if (!dir->seekSet(32)) goto fail; + // read '..' entry + if (dir->read(&entry, sizeof(entry)) != 32) goto fail; + // verify it is '..' + if (entry.name[0] != '.' || entry.name[1] != '.') goto fail; + // start cluster for '..' + cluster = entry.firstClusterLow; + cluster |= (uint32_t)entry.firstClusterHigh << 16; + if (cluster == 0) return openRoot(vol_); + // start block for '..' + lbn = vol_->clusterStartBlock(cluster); + // first block of parent dir + if (!vol_->cacheRawBlock(lbn, SdVolume::CACHE_FOR_READ)) { + goto fail; + } + p = &vol_->cacheBuffer_.dir[1]; + // verify name for '../..' + if (p->name[0] != '.' || p->name[1] != '.') goto fail; + // '..' is pointer to first cluster of parent. open '../..' to find parent + if (p->firstClusterHigh == 0 && p->firstClusterLow == 0) { + if (!file.openRoot(dir->volume())) goto fail; + } else { + if (!file.openCachedEntry(1, O_READ)) goto fail; + } + // search for parent in '../..' + do { + if (file.readDir(&entry, NULL) != 32) goto fail; + c = entry.firstClusterLow; + c |= (uint32_t)entry.firstClusterHigh << 16; + } while (c != cluster); + // open parent + return open(&file, file.curPosition()/32 - 1, O_READ); + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Open a volume's root directory. + * + * \param[in] vol The FAT volume containing the root directory to be opened. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include the file is already open, the FAT volume has + * not been initialized or it a FAT12 volume. + */ +bool SdBaseFile::openRoot(SdVolume* vol) { + // error if file is already open + if (isOpen()) goto fail; + + if (vol->fatType() == 16 || (FAT12_SUPPORT && vol->fatType() == 12)) { + type_ = FAT_FILE_TYPE_ROOT_FIXED; + firstCluster_ = 0; + fileSize_ = 32 * vol->rootDirEntryCount(); + } else if (vol->fatType() == 32) { + type_ = FAT_FILE_TYPE_ROOT32; + firstCluster_ = vol->rootDirStart(); + if (!vol->chainSize(firstCluster_, &fileSize_)) goto fail; + } else { + // volume is not initialized, invalid, or FAT12 without support + return false; + } + vol_ = vol; + // read only + flags_ = O_READ; + + // set to start of file + curCluster_ = 0; + curPosition_ = 0; + + // root has no directory entry + dirBlock_ = 0; + dirIndex_ = 0; + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Return the next available byte without consuming it. + * + * \return The byte if no error and not at eof else -1; + */ +int SdBaseFile::peek() { + fpos_t pos; + getpos(&pos); + int c = read(); + if (c >= 0) setpos(&pos); + return c; +} + +//------------------------------------------------------------------------------ +/** %Print the name field of a directory entry in 8.3 format. + * \param[in] pr Print stream for output. + * \param[in] dir The directory structure containing the name. + * \param[in] width Blank fill name if length is less than \a width. + * \param[in] printSlash Print '/' after directory names if true. + */ +void SdBaseFile::printDirName(const dir_t& dir, + uint8_t width, bool printSlash) { + uint8_t w = 0; + for (uint8_t i = 0; i < 11; i++) { + if (dir.name[i] == ' ')continue; + if (i == 8) { + MYSERIAL.write('.'); + w++; + } + MYSERIAL.write(dir.name[i]); + w++; + } + if (DIR_IS_SUBDIR(&dir) && printSlash) { + MYSERIAL.write('/'); + w++; + } + while (w < width) { + MYSERIAL.write(' '); + w++; + } +} +//------------------------------------------------------------------------------ +// print uint8_t with width 2 +static void print2u( uint8_t v) { + if (v < 10) MYSERIAL.write('0'); + MYSERIAL.print(v, DEC); +} +//------------------------------------------------------------------------------ +/** %Print a directory date field to Serial. + * + * Format is yyyy-mm-dd. + * + * \param[in] fatDate The date field from a directory entry. + */ + +//------------------------------------------------------------------------------ +/** %Print a directory date field. + * + * Format is yyyy-mm-dd. + * + * \param[in] pr Print stream for output. + * \param[in] fatDate The date field from a directory entry. + */ +void SdBaseFile::printFatDate(uint16_t fatDate) { + MYSERIAL.print(FAT_YEAR(fatDate)); + MYSERIAL.write('-'); + print2u( FAT_MONTH(fatDate)); + MYSERIAL.write('-'); + print2u( FAT_DAY(fatDate)); +} + +//------------------------------------------------------------------------------ +/** %Print a directory time field. + * + * Format is hh:mm:ss. + * + * \param[in] pr Print stream for output. + * \param[in] fatTime The time field from a directory entry. + */ +void SdBaseFile::printFatTime( uint16_t fatTime) { + print2u( FAT_HOUR(fatTime)); + MYSERIAL.write(':'); + print2u( FAT_MINUTE(fatTime)); + MYSERIAL.write(':'); + print2u( FAT_SECOND(fatTime)); +} +//------------------------------------------------------------------------------ +/** Print a file's name to Serial + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool SdBaseFile::printName() { + char name[FILENAME_LENGTH]; + if (!getFilename(name)) return false; + MYSERIAL.print(name); + return true; +} +//------------------------------------------------------------------------------ +/** Read the next byte from a file. + * + * \return For success read returns the next byte in the file as an int. + * If an error occurs or end of file is reached -1 is returned. + */ +int16_t SdBaseFile::read() { + uint8_t b; + return read(&b, 1) == 1 ? b : -1; +} +//------------------------------------------------------------------------------ +/** Read data from a file starting at the current position. + * + * \param[out] buf Pointer to the location that will receive the data. + * + * \param[in] nbyte Maximum number of bytes to read. + * + * \return For success read() returns the number of bytes read. + * A value less than \a nbyte, including zero, will be returned + * if end of file is reached. + * If an error occurs, read() returns -1. Possible errors include + * read() called before a file has been opened, corrupt file system + * or an I/O error occurred. + */ +int16_t SdBaseFile::read(void* buf, uint16_t nbyte) { + uint8_t* dst = reinterpret_cast(buf); + uint16_t offset; + uint16_t toRead; + uint32_t block; // raw device block number + + // error if not open or write only + if (!isOpen() || !(flags_ & O_READ)) goto fail; + + // max bytes left in file + if (nbyte >= (fileSize_ - curPosition_)) { + nbyte = fileSize_ - curPosition_; + } + // amount left to read + toRead = nbyte; + while (toRead > 0) { + offset = curPosition_ & 0X1FF; // offset in block + if (type_ == FAT_FILE_TYPE_ROOT_FIXED) { + block = vol_->rootDirStart() + (curPosition_ >> 9); + } else { + uint8_t blockOfCluster = vol_->blockOfCluster(curPosition_); + if (offset == 0 && blockOfCluster == 0) { + // start of new cluster + if (curPosition_ == 0) { + // use first cluster in file + curCluster_ = firstCluster_; + } else { + // get next cluster from FAT + if (!vol_->fatGet(curCluster_, &curCluster_)) goto fail; + } + } + block = vol_->clusterStartBlock(curCluster_) + blockOfCluster; + } + uint16_t n = toRead; + + // amount to be read from current block + if (n > (512 - offset)) n = 512 - offset; + + // no buffering needed if n == 512 + if (n == 512 && block != vol_->cacheBlockNumber()) { + if (!vol_->readBlock(block, dst)) goto fail; + } else { + // read block to cache and copy data to caller + if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_READ)) goto fail; + uint8_t* src = vol_->cache()->data + offset; + memcpy(dst, src, n); + } + dst += n; + curPosition_ += n; + toRead -= n; + } + return nbyte; + + fail: + return -1; +} +//------------------------------------------------------------------------------ +/** Read the next directory entry from a directory file. + * + * \param[out] dir The dir_t struct that will receive the data. + * + * \return For success readDir() returns the number of bytes read. + * A value of zero will be returned if end of file is reached. + * If an error occurs, readDir() returns -1. Possible errors include + * readDir() called before a directory has been opened, this is not + * a directory file or an I/O error occurred. + */ +int8_t SdBaseFile::readDir(dir_t* dir, char* longFilename) { + int16_t n; + // if not a directory file or miss-positioned return an error + if (!isDir() || (0X1F & curPosition_)) return -1; + + //If we have a longFilename buffer, mark it as invalid. If we find a long filename it will be filled automaticly. + if (longFilename != NULL) + { + longFilename[0] = '\0'; + } + + while (1) { + n = read(dir, sizeof(dir_t)); + if (n != sizeof(dir_t)) return n == 0 ? 0 : -1; + // last entry if DIR_NAME_FREE + if (dir->name[0] == DIR_NAME_FREE) return 0; + // skip empty entries and entry for . and .. + if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') continue; + //Fill the long filename if we have a long filename entry, + // long filename entries are stored before the actual filename. + if (DIR_IS_LONG_NAME(dir) && longFilename != NULL) + { + vfat_t *VFAT = (vfat_t*)dir; + //Sanity check the VFAT entry. The first cluster is always set to zero. And th esequence number should be higher then 0 + if (VFAT->firstClusterLow == 0 && (VFAT->sequenceNumber & 0x1F) > 0 && (VFAT->sequenceNumber & 0x1F) <= MAX_VFAT_ENTRIES) + { + //TODO: Store the filename checksum to verify if a none-long filename aware system modified the file table. + n = ((VFAT->sequenceNumber & 0x1F) - 1) * FILENAME_LENGTH; + longFilename[n+0] = VFAT->name1[0]; + longFilename[n+1] = VFAT->name1[1]; + longFilename[n+2] = VFAT->name1[2]; + longFilename[n+3] = VFAT->name1[3]; + longFilename[n+4] = VFAT->name1[4]; + longFilename[n+5] = VFAT->name2[0]; + longFilename[n+6] = VFAT->name2[1]; + longFilename[n+7] = VFAT->name2[2]; + longFilename[n+8] = VFAT->name2[3]; + longFilename[n+9] = VFAT->name2[4]; + longFilename[n+10] = VFAT->name2[5]; + longFilename[n+11] = VFAT->name3[0]; + longFilename[n+12] = VFAT->name3[1]; + //If this VFAT entry is the last one, add a NUL terminator at the end of the string + if (VFAT->sequenceNumber & 0x40) + longFilename[n+FILENAME_LENGTH] = '\0'; + } + } + // return if normal file or subdirectory + if (DIR_IS_FILE_OR_SUBDIR(dir)) return n; + } +} +//------------------------------------------------------------------------------ +// Read next directory entry into the cache +// Assumes file is correctly positioned +dir_t* SdBaseFile::readDirCache() { + uint8_t i; + // error if not directory + if (!isDir()) goto fail; + + // index of entry in cache + i = (curPosition_ >> 5) & 0XF; + + // use read to locate and cache block + if (read() < 0) goto fail; + + // advance to next entry + curPosition_ += 31; + + // return pointer to entry + return vol_->cache()->dir + i; + + fail: + return 0; +} +//------------------------------------------------------------------------------ +/** Remove a file. + * + * The directory entry and all data for the file are deleted. + * + * \note This function should not be used to delete the 8.3 version of a + * file that has a long name. For example if a file has the long name + * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include the file read-only, is a directory, + * or an I/O error occurred. + */ +bool SdBaseFile::remove() { + dir_t* d; + // free any clusters - will fail if read-only or directory + if (!truncate(0)) goto fail; + + // cache directory entry + d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!d) goto fail; + + // mark entry deleted + d->name[0] = DIR_NAME_DELETED; + + // set this file closed + type_ = FAT_FILE_TYPE_CLOSED; + + // write entry to SD + return vol_->cacheFlush(); + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Remove a file. + * + * The directory entry and all data for the file are deleted. + * + * \param[in] dirFile The directory that contains the file. + * \param[in] path Path for the file to be removed. + * + * \note This function should not be used to delete the 8.3 version of a + * file that has a long name. For example if a file has the long name + * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include the file is a directory, is read only, + * \a dirFile is not a directory, \a path is not found + * or an I/O error occurred. + */ +bool SdBaseFile::remove(SdBaseFile* dirFile, const char* path) { + SdBaseFile file; + if (!file.open(dirFile, path, O_WRITE)) goto fail; + return file.remove(); + + fail: + // can't set iostate - static function + return false; +} +//------------------------------------------------------------------------------ +/** Rename a file or subdirectory. + * + * \param[in] dirFile Directory for the new path. + * \param[in] newPath New path name for the file/directory. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include \a dirFile is not open or is not a directory + * file, newPath is invalid or already exists, or an I/O error occurs. + */ +bool SdBaseFile::rename(SdBaseFile* dirFile, const char* newPath) { + dir_t entry; + uint32_t dirCluster = 0; + SdBaseFile file; + dir_t* d; + + // must be an open file or subdirectory + if (!(isFile() || isSubDir())) goto fail; + + // can't move file + if (vol_ != dirFile->vol_) goto fail; + + // sync() and cache directory entry + sync(); + d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!d) goto fail; + + // save directory entry + memcpy(&entry, d, sizeof(entry)); + + // mark entry deleted + d->name[0] = DIR_NAME_DELETED; + + // make directory entry for new path + if (isFile()) { + if (!file.open(dirFile, newPath, O_CREAT | O_EXCL | O_WRITE)) { + goto restore; + } + } else { + // don't create missing path prefix components + if (!file.mkdir(dirFile, newPath, false)) { + goto restore; + } + // save cluster containing new dot dot + dirCluster = file.firstCluster_; + } + // change to new directory entry + dirBlock_ = file.dirBlock_; + dirIndex_ = file.dirIndex_; + + // mark closed to avoid possible destructor close call + file.type_ = FAT_FILE_TYPE_CLOSED; + + // cache new directory entry + d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!d) goto fail; + + // copy all but name field to new directory entry + memcpy(&d->attributes, &entry.attributes, sizeof(entry) - sizeof(d->name)); + + // update dot dot if directory + if (dirCluster) { + // get new dot dot + uint32_t block = vol_->clusterStartBlock(dirCluster); + if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_READ)) goto fail; + memcpy(&entry, &vol_->cache()->dir[1], sizeof(entry)); + + // free unused cluster + if (!vol_->freeChain(dirCluster)) goto fail; + + // store new dot dot + block = vol_->clusterStartBlock(firstCluster_); + if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) goto fail; + memcpy(&vol_->cache()->dir[1], &entry, sizeof(entry)); + } + return vol_->cacheFlush(); + + restore: + d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!d) goto fail; + // restore entry + d->name[0] = entry.name[0]; + vol_->cacheFlush(); + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Remove a directory file. + * + * The directory file will be removed only if it is empty and is not the + * root directory. rmdir() follows DOS and Windows and ignores the + * read-only attribute for the directory. + * + * \note This function should not be used to delete the 8.3 version of a + * directory that has a long name. For example if a directory has the + * long name "New folder" you should not delete the 8.3 name "NEWFOL~1". + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include the file is not a directory, is the root + * directory, is not empty, or an I/O error occurred. + */ +bool SdBaseFile::rmdir() { + // must be open subdirectory + if (!isSubDir()) goto fail; + + rewind(); + + // make sure directory is empty + while (curPosition_ < fileSize_) { + dir_t* p = readDirCache(); + if (!p) goto fail; + // done if past last used entry + if (p->name[0] == DIR_NAME_FREE) break; + // skip empty slot, '.' or '..' + if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') continue; + // error not empty + if (DIR_IS_FILE_OR_SUBDIR(p)) goto fail; + } + // convert empty directory to normal file for remove + type_ = FAT_FILE_TYPE_NORMAL; + flags_ |= O_WRITE; + return remove(); + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Recursively delete a directory and all contained files. + * + * This is like the Unix/Linux 'rm -rf *' if called with the root directory + * hence the name. + * + * Warning - This will remove all contents of the directory including + * subdirectories. The directory will then be removed if it is not root. + * The read-only attribute for files will be ignored. + * + * \note This function should not be used to delete the 8.3 version of + * a directory that has a long name. See remove() and rmdir(). + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool SdBaseFile::rmRfStar() { + uint16_t index; + SdBaseFile f; + rewind(); + while (curPosition_ < fileSize_) { + // remember position + index = curPosition_/32; + + dir_t* p = readDirCache(); + if (!p) goto fail; + + // done if past last entry + if (p->name[0] == DIR_NAME_FREE) break; + + // skip empty slot or '.' or '..' + if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') continue; + + // skip if part of long file name or volume label in root + if (!DIR_IS_FILE_OR_SUBDIR(p)) continue; + + if (!f.open(this, index, O_READ)) goto fail; + if (f.isSubDir()) { + // recursively delete + if (!f.rmRfStar()) goto fail; + } else { + // ignore read-only + f.flags_ |= O_WRITE; + if (!f.remove()) goto fail; + } + // position to next entry if required + if (curPosition_ != (32*(index + 1))) { + if (!seekSet(32*(index + 1))) goto fail; + } + } + // don't try to delete root + if (!isRoot()) { + if (!rmdir()) goto fail; + } + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Create a file object and open it in the current working directory. + * + * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. + * + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t). + */ +SdBaseFile::SdBaseFile(const char* path, uint8_t oflag) { + type_ = FAT_FILE_TYPE_CLOSED; + writeError = false; + open(path, oflag); +} +//------------------------------------------------------------------------------ +/** Sets a file's position. + * + * \param[in] pos The new position in bytes from the beginning of the file. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool SdBaseFile::seekSet(uint32_t pos) { + uint32_t nCur; + uint32_t nNew; + // error if file not open or seek past end of file + if (!isOpen() || pos > fileSize_) goto fail; + + if (type_ == FAT_FILE_TYPE_ROOT_FIXED) { + curPosition_ = pos; + goto done; + } + if (pos == 0) { + // set position to start of file + curCluster_ = 0; + curPosition_ = 0; + goto done; + } + // calculate cluster index for cur and new position + nCur = (curPosition_ - 1) >> (vol_->clusterSizeShift_ + 9); + nNew = (pos - 1) >> (vol_->clusterSizeShift_ + 9); + + if (nNew < nCur || curPosition_ == 0) { + // must follow chain from first cluster + curCluster_ = firstCluster_; + } else { + // advance from curPosition + nNew -= nCur; + } + while (nNew--) { + if (!vol_->fatGet(curCluster_, &curCluster_)) goto fail; + } + curPosition_ = pos; + + done: + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +void SdBaseFile::setpos(fpos_t* pos) { + curPosition_ = pos->position; + curCluster_ = pos->cluster; +} +//------------------------------------------------------------------------------ +/** The sync() call causes all modified data and directory fields + * to be written to the storage device. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include a call to sync() before a file has been + * opened or an I/O error. + */ +bool SdBaseFile::sync() { + // only allow open files and directories + if (!isOpen()) goto fail; + + if (flags_ & F_FILE_DIR_DIRTY) { + dir_t* d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + // check for deleted by another open file object + if (!d || d->name[0] == DIR_NAME_DELETED) goto fail; + + // do not set filesize for dir files + if (!isDir()) d->fileSize = fileSize_; + + // update first cluster fields + d->firstClusterLow = firstCluster_ & 0XFFFF; + d->firstClusterHigh = firstCluster_ >> 16; + + // set modify time if user supplied a callback date/time function + if (dateTime_) { + dateTime_(&d->lastWriteDate, &d->lastWriteTime); + d->lastAccessDate = d->lastWriteDate; + } + // clear directory dirty + flags_ &= ~F_FILE_DIR_DIRTY; + } + return vol_->cacheFlush(); + + fail: + writeError = true; + return false; +} +//------------------------------------------------------------------------------ +/** Copy a file's timestamps + * + * \param[in] file File to copy timestamps from. + * + * \note + * Modify and access timestamps may be overwritten if a date time callback + * function has been set by dateTimeCallback(). + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool SdBaseFile::timestamp(SdBaseFile* file) { + dir_t* d; + dir_t dir; + + // get timestamps + if (!file->dirEntry(&dir)) goto fail; + + // update directory fields + if (!sync()) goto fail; + + d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!d) goto fail; + + // copy timestamps + d->lastAccessDate = dir.lastAccessDate; + d->creationDate = dir.creationDate; + d->creationTime = dir.creationTime; + d->creationTimeTenths = dir.creationTimeTenths; + d->lastWriteDate = dir.lastWriteDate; + d->lastWriteTime = dir.lastWriteTime; + + // write back entry + return vol_->cacheFlush(); + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Set a file's timestamps in its directory entry. + * + * \param[in] flags Values for \a flags are constructed by a bitwise-inclusive + * OR of flags from the following list + * + * T_ACCESS - Set the file's last access date. + * + * T_CREATE - Set the file's creation date and time. + * + * T_WRITE - Set the file's last write/modification date and time. + * + * \param[in] year Valid range 1980 - 2107 inclusive. + * + * \param[in] month Valid range 1 - 12 inclusive. + * + * \param[in] day Valid range 1 - 31 inclusive. + * + * \param[in] hour Valid range 0 - 23 inclusive. + * + * \param[in] minute Valid range 0 - 59 inclusive. + * + * \param[in] second Valid range 0 - 59 inclusive + * + * \note It is possible to set an invalid date since there is no check for + * the number of days in a month. + * + * \note + * Modify and access timestamps may be overwritten if a date time callback + * function has been set by dateTimeCallback(). + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + */ +bool SdBaseFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, + uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { + uint16_t dirDate; + uint16_t dirTime; + dir_t* d; + + if (!isOpen() + || year < 1980 + || year > 2107 + || month < 1 + || month > 12 + || day < 1 + || day > 31 + || hour > 23 + || minute > 59 + || second > 59) { + goto fail; + } + // update directory entry + if (!sync()) goto fail; + + d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); + if (!d) goto fail; + + dirDate = FAT_DATE(year, month, day); + dirTime = FAT_TIME(hour, minute, second); + if (flags & T_ACCESS) { + d->lastAccessDate = dirDate; + } + if (flags & T_CREATE) { + d->creationDate = dirDate; + d->creationTime = dirTime; + // seems to be units of 1/100 second not 1/10 as Microsoft states + d->creationTimeTenths = second & 1 ? 100 : 0; + } + if (flags & T_WRITE) { + d->lastWriteDate = dirDate; + d->lastWriteTime = dirTime; + } + return vol_->cacheFlush(); + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Truncate a file to a specified length. The current file position + * will be maintained if it is less than or equal to \a length otherwise + * it will be set to end of file. + * + * \param[in] length The desired length for the file. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. + * Reasons for failure include file is read only, file is a directory, + * \a length is greater than the current file size or an I/O error occurs. + */ +bool SdBaseFile::truncate(uint32_t length) { + uint32_t newPos; + // error if not a normal file or read-only + if (!isFile() || !(flags_ & O_WRITE)) goto fail; + + // error if length is greater than current size + if (length > fileSize_) goto fail; + + // fileSize and length are zero - nothing to do + if (fileSize_ == 0) return true; + + // remember position for seek after truncation + newPos = curPosition_ > length ? length : curPosition_; + + // position to last cluster in truncated file + if (!seekSet(length)) goto fail; + + if (length == 0) { + // free all clusters + if (!vol_->freeChain(firstCluster_)) goto fail; + firstCluster_ = 0; + } else { + uint32_t toFree; + if (!vol_->fatGet(curCluster_, &toFree)) goto fail; + + if (!vol_->isEOC(toFree)) { + // free extra clusters + if (!vol_->freeChain(toFree)) goto fail; + + // current cluster is end of chain + if (!vol_->fatPutEOC(curCluster_)) goto fail; + } + } + fileSize_ = length; + + // need to update directory entry + flags_ |= F_FILE_DIR_DIRTY; + + if (!sync()) goto fail; + + // set file to correct position + return seekSet(newPos); + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Write data to an open file. + * + * \note Data is moved to the cache but may not be written to the + * storage device until sync() is called. + * + * \param[in] buf Pointer to the location of the data to be written. + * + * \param[in] nbyte Number of bytes to write. + * + * \return For success write() returns the number of bytes written, always + * \a nbyte. If an error occurs, write() returns -1. Possible errors + * include write() is called before a file has been opened, write is called + * for a read-only file, device is full, a corrupt file system or an I/O error. + * + */ +int16_t SdBaseFile::write(const void* buf, uint16_t nbyte) { + // convert void* to uint8_t* - must be before goto statements + const uint8_t* src = reinterpret_cast(buf); + + // number of bytes left to write - must be before goto statements + uint16_t nToWrite = nbyte; + + // error if not a normal file or is read-only + if (!isFile() || !(flags_ & O_WRITE)) goto fail; + + // seek to end of file if append flag + if ((flags_ & O_APPEND) && curPosition_ != fileSize_) { + if (!seekEnd()) goto fail; + } + + while (nToWrite > 0) { + uint8_t blockOfCluster = vol_->blockOfCluster(curPosition_); + uint16_t blockOffset = curPosition_ & 0X1FF; + if (blockOfCluster == 0 && blockOffset == 0) { + // start of new cluster + if (curCluster_ == 0) { + if (firstCluster_ == 0) { + // allocate first cluster of file + if (!addCluster()) goto fail; + } else { + curCluster_ = firstCluster_; + } + } else { + uint32_t next; + if (!vol_->fatGet(curCluster_, &next)) goto fail; + if (vol_->isEOC(next)) { + // add cluster if at end of chain + if (!addCluster()) goto fail; + } else { + curCluster_ = next; + } + } + } + // max space in block + uint16_t n = 512 - blockOffset; + + // lesser of space and amount to write + if (n > nToWrite) n = nToWrite; + + // block for data write + uint32_t block = vol_->clusterStartBlock(curCluster_) + blockOfCluster; + if (n == 512) { + // full block - don't need to use cache + if (vol_->cacheBlockNumber() == block) { + // invalidate cache if block is in cache + vol_->cacheSetBlockNumber(0XFFFFFFFF, false); + } + if (!vol_->writeBlock(block, src)) goto fail; + } else { + if (blockOffset == 0 && curPosition_ >= fileSize_) { + // start of new block don't need to read into cache + if (!vol_->cacheFlush()) goto fail; + // set cache dirty and SD address of block + vol_->cacheSetBlockNumber(block, true); + } else { + // rewrite part of block + if (!vol_->cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) goto fail; + } + uint8_t* dst = vol_->cache()->data + blockOffset; + memcpy(dst, src, n); + } + curPosition_ += n; + src += n; + nToWrite -= n; + } + if (curPosition_ > fileSize_) { + // update fileSize and insure sync will update dir entry + fileSize_ = curPosition_; + flags_ |= F_FILE_DIR_DIRTY; + } else if (dateTime_ && nbyte) { + // insure sync will update modified date and time + flags_ |= F_FILE_DIR_DIRTY; + } + + if (flags_ & O_SYNC) { + if (!sync()) goto fail; + } + return nbyte; + + fail: + // return for write error + writeError = true; + return -1; +} +//------------------------------------------------------------------------------ +// suppress cpplint warnings with NOLINT comment +#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN) +void (*SdBaseFile::oldDateTime_)(uint16_t& date, uint16_t& time) = 0; // NOLINT +#endif // ALLOW_DEPRECATED_FUNCTIONS + + +#endif diff --git a/Marlin/SdBaseFile.h b/Marlin/SdBaseFile.h new file mode 100644 index 000000000..dea299a64 --- /dev/null +++ b/Marlin/SdBaseFile.h @@ -0,0 +1,483 @@ +/* Arduino SdFat Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +#include "Marlin.h" +#ifdef SDSUPPORT + +#ifndef SdBaseFile_h +#define SdBaseFile_h +/** + * \file + * \brief SdBaseFile class + */ +#include "Marlin.h" +#include "SdFatConfig.h" +#include "SdVolume.h" +//------------------------------------------------------------------------------ +/** + * \struct fpos_t + * \brief internal type for istream + * do not use in user apps + */ +struct fpos_t { + /** stream position */ + uint32_t position; + /** cluster for position */ + uint32_t cluster; + fpos_t() : position(0), cluster(0) {} +}; + +// use the gnu style oflag in open() +/** open() oflag for reading */ +uint8_t const O_READ = 0X01; +/** open() oflag - same as O_IN */ +uint8_t const O_RDONLY = O_READ; +/** open() oflag for write */ +uint8_t const O_WRITE = 0X02; +/** open() oflag - same as O_WRITE */ +uint8_t const O_WRONLY = O_WRITE; +/** open() oflag for reading and writing */ +uint8_t const O_RDWR = (O_READ | O_WRITE); +/** open() oflag mask for access modes */ +uint8_t const O_ACCMODE = (O_READ | O_WRITE); +/** The file offset shall be set to the end of the file prior to each write. */ +uint8_t const O_APPEND = 0X04; +/** synchronous writes - call sync() after each write */ +uint8_t const O_SYNC = 0X08; +/** truncate the file to zero length */ +uint8_t const O_TRUNC = 0X10; +/** set the initial position at the end of the file */ +uint8_t const O_AT_END = 0X20; +/** create the file if nonexistent */ +uint8_t const O_CREAT = 0X40; +/** If O_CREAT and O_EXCL are set, open() shall fail if the file exists */ +uint8_t const O_EXCL = 0X80; + +// SdBaseFile class static and const definitions +// flags for ls() +/** ls() flag to print modify date */ +uint8_t const LS_DATE = 1; +/** ls() flag to print file size */ +uint8_t const LS_SIZE = 2; +/** ls() flag for recursive list of subdirectories */ +uint8_t const LS_R = 4; + + +// flags for timestamp +/** set the file's last access date */ +uint8_t const T_ACCESS = 1; +/** set the file's creation date and time */ +uint8_t const T_CREATE = 2; +/** Set the file's write date and time */ +uint8_t const T_WRITE = 4; +// values for type_ +/** This file has not been opened. */ +uint8_t const FAT_FILE_TYPE_CLOSED = 0; +/** A normal file */ +uint8_t const FAT_FILE_TYPE_NORMAL = 1; +/** A FAT12 or FAT16 root directory */ +uint8_t const FAT_FILE_TYPE_ROOT_FIXED = 2; +/** A FAT32 root directory */ +uint8_t const FAT_FILE_TYPE_ROOT32 = 3; +/** A subdirectory file*/ +uint8_t const FAT_FILE_TYPE_SUBDIR = 4; +/** Test value for directory type */ +uint8_t const FAT_FILE_TYPE_MIN_DIR = FAT_FILE_TYPE_ROOT_FIXED; + +/** date field for FAT directory entry + * \param[in] year [1980,2107] + * \param[in] month [1,12] + * \param[in] day [1,31] + * + * \return Packed date for dir_t entry. + */ +static inline uint16_t FAT_DATE(uint16_t year, uint8_t month, uint8_t day) { + return (year - 1980) << 9 | month << 5 | day; +} +/** year part of FAT directory date field + * \param[in] fatDate Date in packed dir format. + * + * \return Extracted year [1980,2107] + */ +static inline uint16_t FAT_YEAR(uint16_t fatDate) { + return 1980 + (fatDate >> 9); +} +/** month part of FAT directory date field + * \param[in] fatDate Date in packed dir format. + * + * \return Extracted month [1,12] + */ +static inline uint8_t FAT_MONTH(uint16_t fatDate) { + return (fatDate >> 5) & 0XF; +} +/** day part of FAT directory date field + * \param[in] fatDate Date in packed dir format. + * + * \return Extracted day [1,31] + */ +static inline uint8_t FAT_DAY(uint16_t fatDate) { + return fatDate & 0X1F; +} +/** time field for FAT directory entry + * \param[in] hour [0,23] + * \param[in] minute [0,59] + * \param[in] second [0,59] + * + * \return Packed time for dir_t entry. + */ +static inline uint16_t FAT_TIME(uint8_t hour, uint8_t minute, uint8_t second) { + return hour << 11 | minute << 5 | second >> 1; +} +/** hour part of FAT directory time field + * \param[in] fatTime Time in packed dir format. + * + * \return Extracted hour [0,23] + */ +static inline uint8_t FAT_HOUR(uint16_t fatTime) { + return fatTime >> 11; +} +/** minute part of FAT directory time field + * \param[in] fatTime Time in packed dir format. + * + * \return Extracted minute [0,59] + */ +static inline uint8_t FAT_MINUTE(uint16_t fatTime) { + return(fatTime >> 5) & 0X3F; +} +/** second part of FAT directory time field + * Note second/2 is stored in packed time. + * + * \param[in] fatTime Time in packed dir format. + * + * \return Extracted second [0,58] + */ +static inline uint8_t FAT_SECOND(uint16_t fatTime) { + return 2*(fatTime & 0X1F); +} +/** Default date for file timestamps is 1 Jan 2000 */ +uint16_t const FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1; +/** Default time for file timestamp is 1 am */ +uint16_t const FAT_DEFAULT_TIME = (1 << 11); +//------------------------------------------------------------------------------ +/** + * \class SdBaseFile + * \brief Base class for SdFile with Print and C++ streams. + */ +class SdBaseFile { + public: + /** Create an instance. */ + SdBaseFile() : writeError(false), type_(FAT_FILE_TYPE_CLOSED) {} + SdBaseFile(const char* path, uint8_t oflag); + ~SdBaseFile() {if(isOpen()) close();} + /** + * writeError is set to true if an error occurs during a write(). + * Set writeError to false before calling print() and/or write() and check + * for true after calls to print() and/or write(). + */ + bool writeError; + //---------------------------------------------------------------------------- + // helpers for stream classes + /** get position for streams + * \param[out] pos struct to receive position + */ + void getpos(fpos_t* pos); + /** set position for streams + * \param[out] pos struct with value for new position + */ + void setpos(fpos_t* pos); + //---------------------------------------------------------------------------- + bool close(); + bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock); + bool createContiguous(SdBaseFile* dirFile, + const char* path, uint32_t size); + /** \return The current cluster number for a file or directory. */ + uint32_t curCluster() const {return curCluster_;} + /** \return The current position for a file or directory. */ + uint32_t curPosition() const {return curPosition_;} + /** \return Current working directory */ + static SdBaseFile* cwd() {return cwd_;} + /** Set the date/time callback function + * + * \param[in] dateTime The user's call back function. The callback + * function is of the form: + * + * \code + * void dateTime(uint16_t* date, uint16_t* time) { + * uint16_t year; + * uint8_t month, day, hour, minute, second; + * + * // User gets date and time from GPS or real-time clock here + * + * // return date using FAT_DATE macro to format fields + * *date = FAT_DATE(year, month, day); + * + * // return time using FAT_TIME macro to format fields + * *time = FAT_TIME(hour, minute, second); + * } + * \endcode + * + * Sets the function that is called when a file is created or when + * a file's directory entry is modified by sync(). All timestamps, + * access, creation, and modify, are set when a file is created. + * sync() maintains the last access date and last modify date/time. + * + * See the timestamp() function. + */ + static void dateTimeCallback( + void (*dateTime)(uint16_t* date, uint16_t* time)) { + dateTime_ = dateTime; + } + /** Cancel the date/time callback function. */ + static void dateTimeCallbackCancel() {dateTime_ = 0;} + bool dirEntry(dir_t* dir); + static void dirName(const dir_t& dir, char* name); + bool exists(const char* name); + int16_t fgets(char* str, int16_t num, char* delim = 0); + /** \return The total number of bytes in a file or directory. */ + uint32_t fileSize() const {return fileSize_;} + /** \return The first cluster number for a file or directory. */ + uint32_t firstCluster() const {return firstCluster_;} + bool getFilename(char* name); + /** \return True if this is a directory else false. */ + bool isDir() const {return type_ >= FAT_FILE_TYPE_MIN_DIR;} + /** \return True if this is a normal file else false. */ + bool isFile() const {return type_ == FAT_FILE_TYPE_NORMAL;} + /** \return True if this is an open file/directory else false. */ + bool isOpen() const {return type_ != FAT_FILE_TYPE_CLOSED;} + /** \return True if this is a subdirectory else false. */ + bool isSubDir() const {return type_ == FAT_FILE_TYPE_SUBDIR;} + /** \return True if this is the root directory. */ + bool isRoot() const { + return type_ == FAT_FILE_TYPE_ROOT_FIXED || type_ == FAT_FILE_TYPE_ROOT32; + } + void ls( uint8_t flags = 0, uint8_t indent = 0); + bool mkdir(SdBaseFile* dir, const char* path, bool pFlag = true); + // alias for backward compactability + bool makeDir(SdBaseFile* dir, const char* path) { + return mkdir(dir, path, false); + } + bool open(SdBaseFile* dirFile, uint16_t index, uint8_t oflag); + bool open(SdBaseFile* dirFile, const char* path, uint8_t oflag); + bool open(const char* path, uint8_t oflag = O_READ); + bool openNext(SdBaseFile* dirFile, uint8_t oflag); + bool openRoot(SdVolume* vol); + int peek(); + static void printFatDate(uint16_t fatDate); + static void printFatTime( uint16_t fatTime); + bool printName(); + int16_t read(); + int16_t read(void* buf, uint16_t nbyte); + int8_t readDir(dir_t* dir, char* longFilename); + static bool remove(SdBaseFile* dirFile, const char* path); + bool remove(); + /** Set the file's current position to zero. */ + void rewind() {seekSet(0);} + bool rename(SdBaseFile* dirFile, const char* newPath); + bool rmdir(); + // for backward compatibility + bool rmDir() {return rmdir();} + bool rmRfStar(); + /** Set the files position to current position + \a pos. See seekSet(). + * \param[in] offset The new position in bytes from the current position. + * \return true for success or false for failure. + */ + bool seekCur(int32_t offset) { + return seekSet(curPosition_ + offset); + } + /** Set the files position to end-of-file + \a offset. See seekSet(). + * \param[in] offset The new position in bytes from end-of-file. + * \return true for success or false for failure. + */ + bool seekEnd(int32_t offset = 0) {return seekSet(fileSize_ + offset);} + bool seekSet(uint32_t pos); + bool sync(); + bool timestamp(SdBaseFile* file); + bool timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day, + uint8_t hour, uint8_t minute, uint8_t second); + /** Type of file. You should use isFile() or isDir() instead of type() + * if possible. + * + * \return The file or directory type. + */ + uint8_t type() const {return type_;} + bool truncate(uint32_t size); + /** \return SdVolume that contains this file. */ + SdVolume* volume() const {return vol_;} + int16_t write(const void* buf, uint16_t nbyte); +//------------------------------------------------------------------------------ + private: + // allow SdFat to set cwd_ + friend class SdFat; + // global pointer to cwd dir + static SdBaseFile* cwd_; + // data time callback function + static void (*dateTime_)(uint16_t* date, uint16_t* time); + // bits defined in flags_ + // should be 0X0F + static uint8_t const F_OFLAG = (O_ACCMODE | O_APPEND | O_SYNC); + // sync of directory entry required + static uint8_t const F_FILE_DIR_DIRTY = 0X80; + + // private data + uint8_t flags_; // See above for definition of flags_ bits + uint8_t fstate_; // error and eof indicator + uint8_t type_; // type of file see above for values + uint32_t curCluster_; // cluster for current file position + uint32_t curPosition_; // current file position in bytes from beginning + uint32_t dirBlock_; // block for this files directory entry + uint8_t dirIndex_; // index of directory entry in dirBlock + uint32_t fileSize_; // file size in bytes + uint32_t firstCluster_; // first cluster of file + SdVolume* vol_; // volume where file is located + + /** experimental don't use */ + bool openParent(SdBaseFile* dir); + // private functions + bool addCluster(); + bool addDirCluster(); + dir_t* cacheDirEntry(uint8_t action); + int8_t lsPrintNext( uint8_t flags, uint8_t indent); + static bool make83Name(const char* str, uint8_t* name, const char** ptr); + bool mkdir(SdBaseFile* parent, const uint8_t dname[11]); + bool open(SdBaseFile* dirFile, const uint8_t dname[11], uint8_t oflag); + bool openCachedEntry(uint8_t cacheIndex, uint8_t oflags); + dir_t* readDirCache(); +//------------------------------------------------------------------------------ +// to be deleted + static void printDirName( const dir_t& dir, + uint8_t width, bool printSlash); +//------------------------------------------------------------------------------ +// Deprecated functions - suppress cpplint warnings with NOLINT comment +#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN) + public: + /** \deprecated Use: + * bool contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock); + * \param[out] bgnBlock the first block address for the file. + * \param[out] endBlock the last block address for the file. + * \return true for success or false for failure. + */ + bool contiguousRange(uint32_t& bgnBlock, uint32_t& endBlock) { // NOLINT + return contiguousRange(&bgnBlock, &endBlock); + } + /** \deprecated Use: + * bool createContiguous(SdBaseFile* dirFile, + * const char* path, uint32_t size) + * \param[in] dirFile The directory where the file will be created. + * \param[in] path A path with a valid DOS 8.3 file name. + * \param[in] size The desired file size. + * \return true for success or false for failure. + */ + bool createContiguous(SdBaseFile& dirFile, // NOLINT + const char* path, uint32_t size) { + return createContiguous(&dirFile, path, size); + } + /** \deprecated Use: + * static void dateTimeCallback( + * void (*dateTime)(uint16_t* date, uint16_t* time)); + * \param[in] dateTime The user's call back function. + */ + static void dateTimeCallback( + void (*dateTime)(uint16_t& date, uint16_t& time)) { // NOLINT + oldDateTime_ = dateTime; + dateTime_ = dateTime ? oldToNew : 0; + } + /** \deprecated Use: bool dirEntry(dir_t* dir); + * \param[out] dir Location for return of the file's directory entry. + * \return true for success or false for failure. + */ + bool dirEntry(dir_t& dir) {return dirEntry(&dir);} // NOLINT + /** \deprecated Use: + * bool mkdir(SdBaseFile* dir, const char* path); + * \param[in] dir An open SdFat instance for the directory that will contain + * the new directory. + * \param[in] path A path with a valid 8.3 DOS name for the new directory. + * \return true for success or false for failure. + */ + bool mkdir(SdBaseFile& dir, const char* path) { // NOLINT + return mkdir(&dir, path); + } + /** \deprecated Use: + * bool open(SdBaseFile* dirFile, const char* path, uint8_t oflag); + * \param[in] dirFile An open SdFat instance for the directory containing the + * file to be opened. + * \param[in] path A path with a valid 8.3 DOS name for the file. + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. + * \return true for success or false for failure. + */ + bool open(SdBaseFile& dirFile, // NOLINT + const char* path, uint8_t oflag) { + return open(&dirFile, path, oflag); + } + /** \deprecated Do not use in new apps + * \param[in] dirFile An open SdFat instance for the directory containing the + * file to be opened. + * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. + * \return true for success or false for failure. + */ + bool open(SdBaseFile& dirFile, const char* path) { // NOLINT + return open(dirFile, path, O_RDWR); + } + /** \deprecated Use: + * bool open(SdBaseFile* dirFile, uint16_t index, uint8_t oflag); + * \param[in] dirFile An open SdFat instance for the directory. + * \param[in] index The \a index of the directory entry for the file to be + * opened. The value for \a index is (directory file position)/32. + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. + * \return true for success or false for failure. + */ + bool open(SdBaseFile& dirFile, uint16_t index, uint8_t oflag) { // NOLINT + return open(&dirFile, index, oflag); + } + /** \deprecated Use: bool openRoot(SdVolume* vol); + * \param[in] vol The FAT volume containing the root directory to be opened. + * \return true for success or false for failure. + */ + bool openRoot(SdVolume& vol) {return openRoot(&vol);} // NOLINT + /** \deprecated Use: int8_t readDir(dir_t* dir); + * \param[out] dir The dir_t struct that will receive the data. + * \return bytes read for success zero for eof or -1 for failure. + */ + int8_t readDir(dir_t& dir, char* longFilename) {return readDir(&dir, longFilename);} // NOLINT + /** \deprecated Use: + * static uint8_t remove(SdBaseFile* dirFile, const char* path); + * \param[in] dirFile The directory that contains the file. + * \param[in] path The name of the file to be removed. + * \return true for success or false for failure. + */ + static bool remove(SdBaseFile& dirFile, const char* path) { // NOLINT + return remove(&dirFile, path); + } +//------------------------------------------------------------------------------ +// rest are private + private: + static void (*oldDateTime_)(uint16_t& date, uint16_t& time); // NOLINT + static void oldToNew(uint16_t* date, uint16_t* time) { + uint16_t d; + uint16_t t; + oldDateTime_(d, t); + *date = d; + *time = t; + } +#endif // ALLOW_DEPRECATED_FUNCTIONS +}; + +#endif // SdBaseFile_h +#endif diff --git a/Marlin/SdFat.h b/Marlin/SdFat.h deleted file mode 100644 index aa018dd13..000000000 --- a/Marlin/SdFat.h +++ /dev/null @@ -1,547 +0,0 @@ -/* Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino SdFat Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the Arduino SdFat Library. If not, see - * . - */ -#ifndef SdFat_h -#define SdFat_h -/** - * \file - * SdFile and SdVolume classes - */ -#include -#include "Sd2Card.h" -#include "FatStructs.h" -#include "Print.h" -//------------------------------------------------------------------------------ -/** - * Allow use of deprecated functions if non-zero - */ -#define ALLOW_DEPRECATED_FUNCTIONS 1 -//------------------------------------------------------------------------------ -// forward declaration since SdVolume is used in SdFile -class SdVolume; -//============================================================================== -// SdFile class - -// flags for ls() -/** ls() flag to print modify date */ -uint8_t const LS_DATE = 1; -/** ls() flag to print file size */ -uint8_t const LS_SIZE = 2; -/** ls() flag for recursive list of subdirectories */ -uint8_t const LS_R = 4; - -// use the gnu style oflag in open() -/** open() oflag for reading */ -uint8_t const O_READ = 0X01; -/** open() oflag - same as O_READ */ -uint8_t const O_RDONLY = O_READ; -/** open() oflag for write */ -uint8_t const O_WRITE = 0X02; -/** open() oflag - same as O_WRITE */ -uint8_t const O_WRONLY = O_WRITE; -/** open() oflag for reading and writing */ -uint8_t const O_RDWR = (O_READ | O_WRITE); -/** open() oflag mask for access modes */ -uint8_t const O_ACCMODE = (O_READ | O_WRITE); -/** The file offset shall be set to the end of the file prior to each write. */ -uint8_t const O_APPEND = 0X04; -/** synchronous writes - call sync() after each write */ -uint8_t const O_SYNC = 0X08; -/** create the file if nonexistent */ -uint8_t const O_CREAT = 0X10; -/** If O_CREAT and O_EXCL are set, open() shall fail if the file exists */ -uint8_t const O_EXCL = 0X20; -/** truncate the file to zero length */ -uint8_t const O_TRUNC = 0X40; - -// flags for timestamp -/** set the file's last access date */ -uint8_t const T_ACCESS = 1; -/** set the file's creation date and time */ -uint8_t const T_CREATE = 2; -/** Set the file's write date and time */ -uint8_t const T_WRITE = 4; -// values for type_ -/** This SdFile has not been opened. */ -uint8_t const FAT_FILE_TYPE_CLOSED = 0; -/** SdFile for a file */ -uint8_t const FAT_FILE_TYPE_NORMAL = 1; -/** SdFile for a FAT16 root directory */ -uint8_t const FAT_FILE_TYPE_ROOT16 = 2; -/** SdFile for a FAT32 root directory */ -uint8_t const FAT_FILE_TYPE_ROOT32 = 3; -/** SdFile for a subdirectory */ -uint8_t const FAT_FILE_TYPE_SUBDIR = 4; -/** Test value for directory type */ -uint8_t const FAT_FILE_TYPE_MIN_DIR = FAT_FILE_TYPE_ROOT16; - -/** date field for FAT directory entry */ -static inline uint16_t FAT_DATE(uint16_t year, uint8_t month, uint8_t day) { - return (year - 1980) << 9 | month << 5 | day; -} -/** year part of FAT directory date field */ -static inline uint16_t FAT_YEAR(uint16_t fatDate) { - return 1980 + (fatDate >> 9); -} -/** month part of FAT directory date field */ -static inline uint8_t FAT_MONTH(uint16_t fatDate) { - return (fatDate >> 5) & 0XF; -} -/** day part of FAT directory date field */ -static inline uint8_t FAT_DAY(uint16_t fatDate) { - return fatDate & 0X1F; -} -/** time field for FAT directory entry */ -static inline uint16_t FAT_TIME(uint8_t hour, uint8_t minute, uint8_t second) { - return hour << 11 | minute << 5 | second >> 1; -} -/** hour part of FAT directory time field */ -static inline uint8_t FAT_HOUR(uint16_t fatTime) { - return fatTime >> 11; -} -/** minute part of FAT directory time field */ -static inline uint8_t FAT_MINUTE(uint16_t fatTime) { - return(fatTime >> 5) & 0X3F; -} -/** second part of FAT directory time field */ -static inline uint8_t FAT_SECOND(uint16_t fatTime) { - return 2*(fatTime & 0X1F); -} -/** Default date for file timestamps is 1 Jan 2000 */ -uint16_t const FAT_DEFAULT_DATE = ((2000 - 1980) << 9) | (1 << 5) | 1; -/** Default time for file timestamp is 1 am */ -uint16_t const FAT_DEFAULT_TIME = (1 << 11); -//------------------------------------------------------------------------------ -/** - * \class SdFile - * \brief Access FAT16 and FAT32 files on SD and SDHC cards. - */ -class SdFile : public Print { - public: - /** Create an instance of SdFile. */ - SdFile(void) : type_(FAT_FILE_TYPE_CLOSED) {} - /** - * writeError is set to true if an error occurs during a write(). - * Set writeError to false before calling print() and/or write() and check - * for true after calls to print() and/or write(). - */ - bool writeError; - /** - * Cancel unbuffered reads for this file. - * See setUnbufferedRead() - */ - void clearUnbufferedRead(void) { - flags_ &= ~F_FILE_UNBUFFERED_READ; - } - uint8_t close(void); - uint8_t contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock); - uint8_t createContiguous(SdFile* dirFile, - const char* fileName, uint32_t size); - /** \return The current cluster number for a file or directory. */ - uint32_t curCluster(void) const {return curCluster_;} - /** \return The current position for a file or directory. */ - uint32_t curPosition(void) const {return curPosition_;} - /** - * Set the date/time callback function - * - * \param[in] dateTime The user's call back function. The callback - * function is of the form: - * - * \code - * void dateTime(uint16_t* date, uint16_t* time) { - * uint16_t year; - * uint8_t month, day, hour, minute, second; - * - * // User gets date and time from GPS or real-time clock here - * - * // return date using FAT_DATE macro to format fields - * *date = FAT_DATE(year, month, day); - * - * // return time using FAT_TIME macro to format fields - * *time = FAT_TIME(hour, minute, second); - * } - * \endcode - * - * Sets the function that is called when a file is created or when - * a file's directory entry is modified by sync(). All timestamps, - * access, creation, and modify, are set when a file is created. - * sync() maintains the last access date and last modify date/time. - * - * See the timestamp() function. - */ - static void dateTimeCallback( - void (*dateTime)(uint16_t* date, uint16_t* time)) { - dateTime_ = dateTime; - } - /** - * Cancel the date/time callback function. - */ - static void dateTimeCallbackCancel(void) { - // use explicit zero since NULL is not defined for Sanguino - dateTime_ = 0; - } - /** \return Address of the block that contains this file's directory. */ - uint32_t dirBlock(void) const {return dirBlock_;} - uint8_t dirEntry(dir_t* dir); - /** \return Index of this file's directory in the block dirBlock. */ - uint8_t dirIndex(void) const {return dirIndex_;} - static void dirName(const dir_t& dir, char* name); - /** \return The total number of bytes in a file or directory. */ - uint32_t fileSize(void) const {return fileSize_;} - /** \return The first cluster number for a file or directory. */ - uint32_t firstCluster(void) const {return firstCluster_;} - /** \return True if this is a SdFile for a directory else false. */ - uint8_t isDir(void) const {return type_ >= FAT_FILE_TYPE_MIN_DIR;} - /** \return True if this is a SdFile for a file else false. */ - uint8_t isFile(void) const {return type_ == FAT_FILE_TYPE_NORMAL;} - /** \return True if this is a SdFile for an open file/directory else false. */ - uint8_t isOpen(void) const {return type_ != FAT_FILE_TYPE_CLOSED;} - /** \return True if this is a SdFile for a subdirectory else false. */ - uint8_t isSubDir(void) const {return type_ == FAT_FILE_TYPE_SUBDIR;} - /** \return True if this is a SdFile for the root directory. */ - uint8_t isRoot(void) const { - return type_ == FAT_FILE_TYPE_ROOT16 || type_ == FAT_FILE_TYPE_ROOT32; - } - void ls(uint8_t flags = 0, uint8_t indent = 0); - uint8_t makeDir(SdFile* dir, const char* dirName); - uint8_t open(SdFile* dirFile, uint16_t index, uint8_t oflag); - uint8_t open(SdFile* dirFile, const char* fileName, uint8_t oflag); - - uint8_t openRoot(SdVolume* vol); - static void printDirName(const dir_t& dir, uint8_t width); - static void printFatDate(uint16_t fatDate); - static void printFatTime(uint16_t fatTime); - static void printTwoDigits(uint8_t v); - /** - * Read the next byte from a file. - * - * \return For success read returns the next byte in the file as an int. - * If an error occurs or end of file is reached -1 is returned. - */ - int16_t read(void) { - uint8_t b; - return read(&b, 1) == 1 ? b : -1; - } - int16_t read(void* buf, uint16_t nbyte); - int8_t readDir(dir_t* dir); - static uint8_t remove(SdFile* dirFile, const char* fileName); - uint8_t remove(void); - /** Set the file's current position to zero. */ - void rewind(void) { - curPosition_ = curCluster_ = 0; - } - uint8_t rmDir(void); - uint8_t rmRfStar(void); - /** Set the files position to current position + \a pos. See seekSet(). */ - uint8_t seekCur(uint32_t pos) { - return seekSet(curPosition_ + pos); - } - /** - * Set the files current position to end of file. Useful to position - * a file for append. See seekSet(). - */ - uint8_t seekEnd(void) {return seekSet(fileSize_);} - uint8_t seekSet(uint32_t pos); - /** - * Use unbuffered reads to access this file. Used with Wave - * Shield ISR. Used with Sd2Card::partialBlockRead() in WaveRP. - * - * Not recommended for normal applications. - */ - void setUnbufferedRead(void) { - if (isFile()) flags_ |= F_FILE_UNBUFFERED_READ; - } - uint8_t timestamp(uint8_t flag, uint16_t year, uint8_t month, uint8_t day, - uint8_t hour, uint8_t minute, uint8_t second); - uint8_t sync(void); - /** Type of this SdFile. You should use isFile() or isDir() instead of type() - * if possible. - * - * \return The file or directory type. - */ - uint8_t type(void) const {return type_;} - uint8_t truncate(uint32_t size); - /** \return Unbuffered read flag. */ - uint8_t unbufferedRead(void) const { - return flags_ & F_FILE_UNBUFFERED_READ; - } - /** \return SdVolume that contains this file. */ - SdVolume* volume(void) const {return vol_;} - void write(uint8_t b); - int16_t write(const void* buf, uint16_t nbyte); - void write(const char* str); - void write_P(PGM_P str); - void writeln_P(PGM_P str); -//------------------------------------------------------------------------------ -#if ALLOW_DEPRECATED_FUNCTIONS -// Deprecated functions - suppress cpplint warnings with NOLINT comment - /** \deprecated Use: - * uint8_t SdFile::contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock); - */ - uint8_t contiguousRange(uint32_t& bgnBlock, uint32_t& endBlock) { // NOLINT - return contiguousRange(&bgnBlock, &endBlock); - } - /** \deprecated Use: - * uint8_t SdFile::createContiguous(SdFile* dirFile, - * const char* fileName, uint32_t size) - */ - uint8_t createContiguous(SdFile& dirFile, // NOLINT - const char* fileName, uint32_t size) { - return createContiguous(&dirFile, fileName, size); - } - - /** - * \deprecated Use: - * static void SdFile::dateTimeCallback( - * void (*dateTime)(uint16_t* date, uint16_t* time)); - */ - static void dateTimeCallback( - void (*dateTime)(uint16_t& date, uint16_t& time)) { // NOLINT - oldDateTime_ = dateTime; - dateTime_ = dateTime ? oldToNew : 0; - } - /** \deprecated Use: uint8_t SdFile::dirEntry(dir_t* dir); */ - uint8_t dirEntry(dir_t& dir) {return dirEntry(&dir);} // NOLINT - /** \deprecated Use: - * uint8_t SdFile::makeDir(SdFile* dir, const char* dirName); - */ - uint8_t makeDir(SdFile& dir, const char* dirName) { // NOLINT - return makeDir(&dir, dirName); - } - /** \deprecated Use: - * uint8_t SdFile::open(SdFile* dirFile, const char* fileName, uint8_t oflag); - */ - uint8_t open(SdFile& dirFile, // NOLINT - const char* fileName, uint8_t oflag) { - return open(&dirFile, fileName, oflag); - } - /** \deprecated Do not use in new apps */ - uint8_t open(SdFile& dirFile, const char* fileName) { // NOLINT - return open(dirFile, fileName, O_RDWR); - } - /** \deprecated Use: - * uint8_t SdFile::open(SdFile* dirFile, uint16_t index, uint8_t oflag); - */ - uint8_t open(SdFile& dirFile, uint16_t index, uint8_t oflag) { // NOLINT - return open(&dirFile, index, oflag); - } - /** \deprecated Use: uint8_t SdFile::openRoot(SdVolume* vol); */ - uint8_t openRoot(SdVolume& vol) {return openRoot(&vol);} // NOLINT - - /** \deprecated Use: int8_t SdFile::readDir(dir_t* dir); */ - int8_t readDir(dir_t& dir) {return readDir(&dir);} // NOLINT - /** \deprecated Use: - * static uint8_t SdFile::remove(SdFile* dirFile, const char* fileName); - */ - static uint8_t remove(SdFile& dirFile, const char* fileName) { // NOLINT - return remove(&dirFile, fileName); - } -//------------------------------------------------------------------------------ -// rest are private - private: - static void (*oldDateTime_)(uint16_t& date, uint16_t& time); // NOLINT - static void oldToNew(uint16_t* date, uint16_t* time) { - uint16_t d; - uint16_t t; - oldDateTime_(d, t); - *date = d; - *time = t; - } -#endif // ALLOW_DEPRECATED_FUNCTIONS - private: - // bits defined in flags_ - // should be 0XF - static uint8_t const F_OFLAG = (O_ACCMODE | O_APPEND | O_SYNC); - // available bits - static uint8_t const F_UNUSED = 0X30; - // use unbuffered SD read - static uint8_t const F_FILE_UNBUFFERED_READ = 0X40; - // sync of directory entry required - static uint8_t const F_FILE_DIR_DIRTY = 0X80; - -// make sure F_OFLAG is ok -#if ((F_UNUSED | F_FILE_UNBUFFERED_READ | F_FILE_DIR_DIRTY) & F_OFLAG) -#error flags_ bits conflict -#endif // flags_ bits - - // private data - uint8_t flags_; // See above for definition of flags_ bits - uint8_t type_; // type of file see above for values - uint32_t curCluster_; // cluster for current file position - uint32_t curPosition_; // current file position in bytes from beginning - uint32_t dirBlock_; // SD block that contains directory entry for file - uint8_t dirIndex_; // index of entry in dirBlock 0 <= dirIndex_ <= 0XF - uint32_t fileSize_; // file size in bytes - uint32_t firstCluster_; // first cluster of file - SdVolume* vol_; // volume where file is located - - // private functions - uint8_t addCluster(void); - uint8_t addDirCluster(void); - dir_t* cacheDirEntry(uint8_t action); - static void (*dateTime_)(uint16_t* date, uint16_t* time); - static uint8_t make83Name(const char* str, uint8_t* name); - uint8_t openCachedEntry(uint8_t cacheIndex, uint8_t oflags); - dir_t* readDirCache(void); -}; -//============================================================================== -// SdVolume class -/** - * \brief Cache for an SD data block - */ -union cache_t { - /** Used to access cached file data blocks. */ - uint8_t data[512]; - /** Used to access cached FAT16 entries. */ - uint16_t fat16[256]; - /** Used to access cached FAT32 entries. */ - uint32_t fat32[128]; - /** Used to access cached directory entries. */ - dir_t dir[16]; - /** Used to access a cached MasterBoot Record. */ - mbr_t mbr; - /** Used to access to a cached FAT boot sector. */ - fbs_t fbs; -}; -//------------------------------------------------------------------------------ -/** - * \class SdVolume - * \brief Access FAT16 and FAT32 volumes on SD and SDHC cards. - */ -class SdVolume { - public: - /** Create an instance of SdVolume */ - SdVolume(void) :allocSearchStart_(2), fatType_(0) {} - /** Clear the cache and returns a pointer to the cache. Used by the WaveRP - * recorder to do raw write to the SD card. Not for normal apps. - */ - static uint8_t* cacheClear(void) { - cacheFlush(); - cacheBlockNumber_ = 0XFFFFFFFF; - return cacheBuffer_.data; - } - /** - * Initialize a FAT volume. Try partition one first then try super - * floppy format. - * - * \param[in] dev The Sd2Card where the volume is located. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. Reasons for - * failure include not finding a valid partition, not finding a valid - * FAT file system or an I/O error. - */ - uint8_t init(Sd2Card* dev) { return init(dev, 1) ? true : init(dev, 0);} - uint8_t init(Sd2Card* dev, uint8_t part); - - // inline functions that return volume info - /** \return The volume's cluster size in blocks. */ - uint8_t blocksPerCluster(void) const {return blocksPerCluster_;} - /** \return The number of blocks in one FAT. */ - uint32_t blocksPerFat(void) const {return blocksPerFat_;} - /** \return The total number of clusters in the volume. */ - uint32_t clusterCount(void) const {return clusterCount_;} - /** \return The shift count required to multiply by blocksPerCluster. */ - uint8_t clusterSizeShift(void) const {return clusterSizeShift_;} - /** \return The logical block number for the start of file data. */ - uint32_t dataStartBlock(void) const {return dataStartBlock_;} - /** \return The number of FAT structures on the volume. */ - uint8_t fatCount(void) const {return fatCount_;} - /** \return The logical block number for the start of the first FAT. */ - uint32_t fatStartBlock(void) const {return fatStartBlock_;} - /** \return The FAT type of the volume. Values are 12, 16 or 32. */ - uint8_t fatType(void) const {return fatType_;} - /** \return The number of entries in the root directory for FAT16 volumes. */ - uint32_t rootDirEntryCount(void) const {return rootDirEntryCount_;} - /** \return The logical block number for the start of the root directory - on FAT16 volumes or the first cluster number on FAT32 volumes. */ - uint32_t rootDirStart(void) const {return rootDirStart_;} - /** return a pointer to the Sd2Card object for this volume */ - static Sd2Card* sdCard(void) {return sdCard_;} -//------------------------------------------------------------------------------ -#if ALLOW_DEPRECATED_FUNCTIONS - // Deprecated functions - suppress cpplint warnings with NOLINT comment - /** \deprecated Use: uint8_t SdVolume::init(Sd2Card* dev); */ - uint8_t init(Sd2Card& dev) {return init(&dev);} // NOLINT - - /** \deprecated Use: uint8_t SdVolume::init(Sd2Card* dev, uint8_t vol); */ - uint8_t init(Sd2Card& dev, uint8_t part) { // NOLINT - return init(&dev, part); - } -#endif // ALLOW_DEPRECATED_FUNCTIONS -//------------------------------------------------------------------------------ - private: - // Allow SdFile access to SdVolume private data. - friend class SdFile; - - // value for action argument in cacheRawBlock to indicate read from cache - static uint8_t const CACHE_FOR_READ = 0; - // value for action argument in cacheRawBlock to indicate cache dirty - static uint8_t const CACHE_FOR_WRITE = 1; - - static cache_t cacheBuffer_; // 512 byte cache for device blocks - static uint32_t cacheBlockNumber_; // Logical number of block in the cache - static Sd2Card* sdCard_; // Sd2Card object for cache - static uint8_t cacheDirty_; // cacheFlush() will write block if true - static uint32_t cacheMirrorBlock_; // block number for mirror FAT -// - uint32_t allocSearchStart_; // start cluster for alloc search - uint8_t blocksPerCluster_; // cluster size in blocks - uint32_t blocksPerFat_; // FAT size in blocks - uint32_t clusterCount_; // clusters in one FAT - uint8_t clusterSizeShift_; // shift to convert cluster count to block count - uint32_t dataStartBlock_; // first data block number - uint8_t fatCount_; // number of FATs on volume - uint32_t fatStartBlock_; // start block for first FAT - uint8_t fatType_; // volume type (12, 16, OR 32) - uint16_t rootDirEntryCount_; // number of entries in FAT16 root dir - uint32_t rootDirStart_; // root start block for FAT16, cluster for FAT32 - //---------------------------------------------------------------------------- - uint8_t allocContiguous(uint32_t count, uint32_t* curCluster); - uint8_t blockOfCluster(uint32_t position) const { - return (position >> 9) & (blocksPerCluster_ - 1);} - uint32_t clusterStartBlock(uint32_t cluster) const { - return dataStartBlock_ + ((cluster - 2) << clusterSizeShift_);} - uint32_t blockNumber(uint32_t cluster, uint32_t position) const { - return clusterStartBlock(cluster) + blockOfCluster(position);} - static uint8_t cacheFlush(void); - static uint8_t cacheRawBlock(uint32_t blockNumber, uint8_t action); - static void cacheSetDirty(void) {cacheDirty_ |= CACHE_FOR_WRITE;} - static uint8_t cacheZeroBlock(uint32_t blockNumber); - uint8_t chainSize(uint32_t beginCluster, uint32_t* size) const; - uint8_t fatGet(uint32_t cluster, uint32_t* value) const; - uint8_t fatPut(uint32_t cluster, uint32_t value); - uint8_t fatPutEOC(uint32_t cluster) { - return fatPut(cluster, 0x0FFFFFFF); - } - uint8_t freeChain(uint32_t cluster); - uint8_t isEOC(uint32_t cluster) const { - return cluster >= (fatType_ == 16 ? FAT16EOC_MIN : FAT32EOC_MIN); - } - uint8_t readBlock(uint32_t block, uint8_t* dst) { - return sdCard_->readBlock(block, dst);} - uint8_t readData(uint32_t block, uint16_t offset, - uint16_t count, uint8_t* dst) { - return sdCard_->readData(block, offset, count, dst); - } - uint8_t writeBlock(uint32_t block, const uint8_t* dst) { - return sdCard_->writeBlock(block, dst); - } -}; -#endif // SdFat_h diff --git a/Marlin/SdFatConfig.h b/Marlin/SdFatConfig.h new file mode 100644 index 000000000..a549835f7 --- /dev/null +++ b/Marlin/SdFatConfig.h @@ -0,0 +1,125 @@ +/* Arduino SdFat Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +/** + * \file + * \brief configuration definitions + */ +#include "Marlin.h" +#ifdef SDSUPPORT + +#ifndef SdFatConfig_h +#define SdFatConfig_h +#include +//------------------------------------------------------------------------------ +/** + * To use multiple SD cards set USE_MULTIPLE_CARDS nonzero. + * + * Using multiple cards costs 400 - 500 bytes of flash. + * + * Each card requires about 550 bytes of SRAM so use of a Mega is recommended. + */ +#define USE_MULTIPLE_CARDS 0 +//------------------------------------------------------------------------------ +/** + * Call flush for endl if ENDL_CALLS_FLUSH is nonzero + * + * The standard for iostreams is to call flush. This is very costly for + * SdFat. Each call to flush causes 2048 bytes of I/O to the SD. + * + * SdFat has a single 512 byte buffer for SD I/O so it must write the current + * data block to the SD, read the directory block from the SD, update the + * directory entry, write the directory block to the SD and read the data + * block back into the buffer. + * + * The SD flash memory controller is not designed for this many rewrites + * so performance may be reduced by more than a factor of 100. + * + * If ENDL_CALLS_FLUSH is zero, you must call flush and/or close to force + * all data to be written to the SD. + */ +#define ENDL_CALLS_FLUSH 0 +//------------------------------------------------------------------------------ +/** + * Allow use of deprecated functions if ALLOW_DEPRECATED_FUNCTIONS is nonzero + */ +#define ALLOW_DEPRECATED_FUNCTIONS 1 +//------------------------------------------------------------------------------ +/** + * Allow FAT12 volumes if FAT12_SUPPORT is nonzero. + * FAT12 has not been well tested. + */ +#define FAT12_SUPPORT 0 +//------------------------------------------------------------------------------ +/** + * SPI init rate for SD initialization commands. Must be 5 (F_CPU/64) + * or 6 (F_CPU/128). + */ +#define SPI_SD_INIT_RATE 5 +//------------------------------------------------------------------------------ +/** + * Set the SS pin high for hardware SPI. If SS is chip select for another SPI + * device this will disable that device during the SD init phase. + */ +#define SET_SPI_SS_HIGH 1 +//------------------------------------------------------------------------------ +/** + * Define MEGA_SOFT_SPI nonzero to use software SPI on Mega Arduinos. + * Pins used are SS 10, MOSI 11, MISO 12, and SCK 13. + * + * MEGA_SOFT_SPI allows an unmodified Adafruit GPS Shield to be used + * on Mega Arduinos. Software SPI works well with GPS Shield V1.1 + * but many SD cards will fail with GPS Shield V1.0. + */ +#define MEGA_SOFT_SPI 0 +//------------------------------------------------------------------------------ +/** + * Set USE_SOFTWARE_SPI nonzero to always use software SPI. + */ +#define USE_SOFTWARE_SPI 0 +// define software SPI pins so Mega can use unmodified 168/328 shields +/** Software SPI chip select pin for the SD */ +uint8_t const SOFT_SPI_CS_PIN = 10; +/** Software SPI Master Out Slave In pin */ +uint8_t const SOFT_SPI_MOSI_PIN = 11; +/** Software SPI Master In Slave Out pin */ +uint8_t const SOFT_SPI_MISO_PIN = 12; +/** Software SPI Clock pin */ +uint8_t const SOFT_SPI_SCK_PIN = 13; +//------------------------------------------------------------------------------ +/** + * The __cxa_pure_virtual function is an error handler that is invoked when + * a pure virtual function is called. + */ +#define USE_CXA_PURE_VIRTUAL 1 + +/** Number of UTF-16 characters per entry */ +#define FILENAME_LENGTH 13 + +/** + * Defines for long (vfat) filenames + */ +/** Number of VFAT entries used. Every entry has 13 UTF-16 characters */ +#define MAX_VFAT_ENTRIES (2) +/** Total size of the buffer used to store the long filenames */ +#define LONG_FILENAME_LENGTH (FILENAME_LENGTH*MAX_VFAT_ENTRIES+1) +#endif // SdFatConfig_h + + +#endif diff --git a/Marlin/FatStructs.h b/Marlin/SdFatStructs.h similarity index 55% rename from Marlin/FatStructs.h rename to Marlin/SdFatStructs.h index 5713467ce..386721616 100644 --- a/Marlin/FatStructs.h +++ b/Marlin/SdFatStructs.h @@ -17,11 +17,16 @@ * along with the Arduino SdFat Library. If not, see * . */ -#ifndef FatStructs_h -#define FatStructs_h +#include "Marlin.h" +#ifdef SDSUPPORT + +#ifndef SdFatStructs_h +#define SdFatStructs_h + +#define PACKED __attribute__((__packed__)) /** * \file - * FAT file structures + * \brief FAT file structures */ /* * mostly from Microsoft document fatgen103.doc @@ -32,6 +37,8 @@ uint8_t const BOOTSIG0 = 0X55; /** Value for byte 511 of boot block or MBR */ uint8_t const BOOTSIG1 = 0XAA; +/** Value for bootSignature field int FAT/FAT32 boot sector */ +uint8_t const EXTENDED_BOOT_SIG = 0X29; //------------------------------------------------------------------------------ /** * \struct partitionTable @@ -90,7 +97,7 @@ struct partitionTable { uint32_t firstSector; /** Length of the partition, in blocks. */ uint32_t totalSectors; -}; +} PACKED; /** Type name for partitionTable */ typedef struct partitionTable part_t; //------------------------------------------------------------------------------ @@ -104,7 +111,7 @@ typedef struct partitionTable part_t; struct masterBootRecord { /** Code Area for master boot program. */ uint8_t codeArea[440]; - /** Optional WindowsNT disk signature. May contain more boot code. */ + /** Optional Windows NT disk signature. May contain boot code. */ uint32_t diskSignature; /** Usually zero but may be more boot code. */ uint16_t usuallyZero; @@ -114,52 +121,64 @@ struct masterBootRecord { uint8_t mbrSig0; /** Second MBR signature byte. Must be 0XAA */ uint8_t mbrSig1; -}; +} PACKED; /** Type name for masterBootRecord */ typedef struct masterBootRecord mbr_t; //------------------------------------------------------------------------------ -/** - * \struct biosParmBlock +/** + * \struct fat_boot + * + * \brief Boot sector for a FAT12/FAT16 volume. * - * \brief BIOS parameter block - * - * The BIOS parameter block describes the physical layout of a FAT volume. */ -struct biosParmBlock { +struct fat_boot { + /** + * The first three bytes of the boot sector must be valid, + * executable x 86-based CPU instructions. This includes a + * jump instruction that skips the next nonexecutable bytes. + */ + uint8_t jump[3]; + /** + * This is typically a string of characters that identifies + * the operating system that formatted the volume. + */ + char oemId[8]; /** - * Count of bytes per sector. This value may take on only the - * following values: 512, 1024, 2048 or 4096 + * The size of a hardware sector. Valid decimal values for this + * field are 512, 1024, 2048, and 4096. For most disks used in + * the United States, the value of this field is 512. */ uint16_t bytesPerSector; /** * Number of sectors per allocation unit. This value must be a * power of 2 that is greater than 0. The legal values are - * 1, 2, 4, 8, 16, 32, 64, and 128. + * 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided. */ uint8_t sectorsPerCluster; /** - * Number of sectors before the first FAT. - * This value must not be zero. + * The number of sectors preceding the start of the first FAT, + * including the boot sector. The value of this field is always 1. */ uint16_t reservedSectorCount; - /** The count of FAT data structures on the volume. This field should - * always contain the value 2 for any FAT volume of any type. + /** + * The number of copies of the FAT on the volume. + * The value of this field is always 2. */ uint8_t fatCount; /** - * For FAT12 and FAT16 volumes, this field contains the count of - * 32-byte directory entries in the root directory. For FAT32 volumes, - * this field must be set to 0. For FAT12 and FAT16 volumes, this - * value should always specify a count that when multiplied by 32 - * results in a multiple of bytesPerSector. FAT16 volumes should - * use the value 512. - */ + * For FAT12 and FAT16 volumes, this field contains the count of + * 32-byte directory entries in the root directory. For FAT32 volumes, + * this field must be set to 0. For FAT12 and FAT16 volumes, this + * value should always specify a count that when multiplied by 32 + * results in a multiple of bytesPerSector. FAT16 volumes should + * use the value 512. + */ uint16_t rootDirEntryCount; /** * This field is the old 16-bit total count of sectors on the volume. * This count includes the count of all sectors in all four regions * of the volume. This field can be 0; if it is 0, then totalSectors32 - * must be non-zero. For FAT32 volumes, this field must be 0. For + * must be nonzero. For FAT32 volumes, this field must be 0. For * FAT12 and FAT16 volumes, this field contains the sector count, and * totalSectors32 is 0 if the total sector count fits * (is less than 0x10000). @@ -168,7 +187,7 @@ struct biosParmBlock { /** * This dates back to the old MS-DOS 1.x media determination and is * no longer usually used for anything. 0xF8 is the standard value - * for fixed (non-removable) media. For removable media, 0xF0 is + * for fixed (nonremovable) media. For removable media, 0xF0 is * frequently used. Legal values are 0xF0 or 0xF8-0xFF. */ uint8_t mediaType; @@ -179,23 +198,136 @@ struct biosParmBlock { */ uint16_t sectorsPerFat16; /** Sectors per track for interrupt 0x13. Not used otherwise. */ - uint16_t sectorsPerTrtack; + uint16_t sectorsPerTrack; /** Number of heads for interrupt 0x13. Not used otherwise. */ uint16_t headCount; /** * Count of hidden sectors preceding the partition that contains this * FAT volume. This field is generally only relevant for media - * visible on interrupt 0x13. + * visible on interrupt 0x13. */ uint32_t hidddenSectors; /** * This field is the new 32-bit total count of sectors on the volume. * This count includes the count of all sectors in all four regions * of the volume. This field can be 0; if it is 0, then - * totalSectors16 must be non-zero. + * totalSectors16 must be nonzero. */ uint32_t totalSectors32; + /** + * Related to the BIOS physical drive number. Floppy drives are + * identified as 0x00 and physical hard disks are identified as + * 0x80, regardless of the number of physical disk drives. + * Typically, this value is set prior to issuing an INT 13h BIOS + * call to specify the device to access. The value is only + * relevant if the device is a boot device. + */ + uint8_t driveNumber; + /** used by Windows NT - should be zero for FAT */ + uint8_t reserved1; + /** 0X29 if next three fields are valid */ + uint8_t bootSignature; + /** + * A random serial number created when formatting a disk, + * which helps to distinguish between disks. + * Usually generated by combining date and time. + */ + uint32_t volumeSerialNumber; + /** + * A field once used to store the volume label. The volume label + * is now stored as a special file in the root directory. + */ + char volumeLabel[11]; + /** + * A field with a value of either FAT, FAT12 or FAT16, + * depending on the disk format. + */ + char fileSystemType[8]; + /** X86 boot code */ + uint8_t bootCode[448]; + /** must be 0X55 */ + uint8_t bootSectorSig0; + /** must be 0XAA */ + uint8_t bootSectorSig1; +} PACKED; +/** Type name for FAT Boot Sector */ +typedef struct fat_boot fat_boot_t; +//------------------------------------------------------------------------------ +/** + * \struct fat32_boot + * + * \brief Boot sector for a FAT32 volume. + * + */ +struct fat32_boot { + /** + * The first three bytes of the boot sector must be valid, + * executable x 86-based CPU instructions. This includes a + * jump instruction that skips the next nonexecutable bytes. + */ + uint8_t jump[3]; + /** + * This is typically a string of characters that identifies + * the operating system that formatted the volume. + */ + char oemId[8]; /** + * The size of a hardware sector. Valid decimal values for this + * field are 512, 1024, 2048, and 4096. For most disks used in + * the United States, the value of this field is 512. + */ + uint16_t bytesPerSector; + /** + * Number of sectors per allocation unit. This value must be a + * power of 2 that is greater than 0. The legal values are + * 1, 2, 4, 8, 16, 32, 64, and 128. 128 should be avoided. + */ + uint8_t sectorsPerCluster; + /** + * The number of sectors preceding the start of the first FAT, + * including the boot sector. Must not be zero + */ + uint16_t reservedSectorCount; + /** + * The number of copies of the FAT on the volume. + * The value of this field is always 2. + */ + uint8_t fatCount; + /** + * FAT12/FAT16 only. For FAT32 volumes, this field must be set to 0. + */ + uint16_t rootDirEntryCount; + /** + * For FAT32 volumes, this field must be 0. + */ + uint16_t totalSectors16; + /** + * This dates back to the old MS-DOS 1.x media determination and is + * no longer usually used for anything. 0xF8 is the standard value + * for fixed (nonremovable) media. For removable media, 0xF0 is + * frequently used. Legal values are 0xF0 or 0xF8-0xFF. + */ + uint8_t mediaType; + /** + * On FAT32 volumes this field must be 0, and sectorsPerFat32 + * contains the FAT size count. + */ + uint16_t sectorsPerFat16; + /** Sectors per track for interrupt 0x13. Not used otherwise. */ + uint16_t sectorsPerTrack; + /** Number of heads for interrupt 0x13. Not used otherwise. */ + uint16_t headCount; + /** + * Count of hidden sectors preceding the partition that contains this + * FAT volume. This field is generally only relevant for media + * visible on interrupt 0x13. + */ + uint32_t hidddenSectors; + /** + * Contains the total number of sectors in the FAT32 volume. + */ + uint32_t totalSectors32; + /** * Count of sectors occupied by one FAT on FAT32 volumes. */ uint32_t sectorsPerFat32; @@ -206,7 +338,8 @@ struct biosParmBlock { * Only valid if mirroring is disabled. * Bits 4-6 -- Reserved. * Bit 7 -- 0 means the FAT is mirrored at runtime into all FATs. - * -- 1 means only one FAT is active; it is the one referenced in bits 0-3. + * -- 1 means only one FAT is active; it is the one referenced + * in bits 0-3. * Bits 8-15 -- Reserved. */ uint16_t fat32Flags; @@ -226,7 +359,7 @@ struct biosParmBlock { */ uint16_t fat32FSInfo; /** - * If non-zero, indicates the sector number in the reserved area + * If nonzero, indicates the sector number in the reserved area * of the volume of a copy of the boot record. Usually 6. * No value other than 6 is recommended. */ @@ -236,34 +369,33 @@ struct biosParmBlock { * should always set all of the bytes of this field to 0. */ uint8_t fat32Reserved[12]; -}; -/** Type name for biosParmBlock */ -typedef struct biosParmBlock bpb_t; -//------------------------------------------------------------------------------ -/** - * \struct fat32BootSector - * - * \brief Boot sector for a FAT16 or FAT32 volume. - * - */ -struct fat32BootSector { - /** X86 jmp to boot program */ - uint8_t jmpToBootCode[3]; - /** informational only - don't depend on it */ - char oemName[8]; - /** BIOS Parameter Block */ - bpb_t bpb; - /** for int0x13 use value 0X80 for hard drive */ + /** + * Related to the BIOS physical drive number. Floppy drives are + * identified as 0x00 and physical hard disks are identified as + * 0x80, regardless of the number of physical disk drives. + * Typically, this value is set prior to issuing an INT 13h BIOS + * call to specify the device to access. The value is only + * relevant if the device is a boot device. + */ uint8_t driveNumber; /** used by Windows NT - should be zero for FAT */ uint8_t reserved1; /** 0X29 if next three fields are valid */ uint8_t bootSignature; - /** usually generated by combining date and time */ + /** + * A random serial number created when formatting a disk, + * which helps to distinguish between disks. + * Usually generated by combining date and time. + */ uint32_t volumeSerialNumber; - /** should match volume label in root dir */ + /** + * A field once used to store the volume label. The volume label + * is now stored as a special file in the root directory. + */ char volumeLabel[11]; - /** informational only - don't depend on it */ + /** + * A text field with a value of FAT32. + */ char fileSystemType[8]; /** X86 boot code */ uint8_t bootCode[420]; @@ -271,9 +403,55 @@ struct fat32BootSector { uint8_t bootSectorSig0; /** must be 0XAA */ uint8_t bootSectorSig1; -}; +} PACKED; +/** Type name for FAT32 Boot Sector */ +typedef struct fat32_boot fat32_boot_t; +//------------------------------------------------------------------------------ +/** Lead signature for a FSINFO sector */ +uint32_t const FSINFO_LEAD_SIG = 0x41615252; +/** Struct signature for a FSINFO sector */ +uint32_t const FSINFO_STRUCT_SIG = 0x61417272; +/** + * \struct fat32_fsinfo + * + * \brief FSINFO sector for a FAT32 volume. + * + */ +struct fat32_fsinfo { + /** must be 0X52, 0X52, 0X61, 0X41 */ + uint32_t leadSignature; + /** must be zero */ + uint8_t reserved1[480]; + /** must be 0X72, 0X72, 0X41, 0X61 */ + uint32_t structSignature; + /** + * Contains the last known free cluster count on the volume. + * If the value is 0xFFFFFFFF, then the free count is unknown + * and must be computed. Any other value can be used, but is + * not necessarily correct. It should be range checked at least + * to make sure it is <= volume cluster count. + */ + uint32_t freeCount; + /** + * This is a hint for the FAT driver. It indicates the cluster + * number at which the driver should start looking for free clusters. + * If the value is 0xFFFFFFFF, then there is no hint and the driver + * should start looking at cluster 2. + */ + uint32_t nextFree; + /** must be zero */ + uint8_t reserved2[12]; + /** must be 0X00, 0X00, 0X55, 0XAA */ + uint8_t tailSignature[4]; +} PACKED; +/** Type name for FAT32 FSINFO Sector */ +typedef struct fat32_fsinfo fat32_fsinfo_t; //------------------------------------------------------------------------------ // End Of Chain values for FAT entries +/** FAT12 end of chain value used by Microsoft. */ +uint16_t const FAT12EOC = 0XFFF; +/** Minimum value for FAT12 EOC. Use to test for EOC. */ +uint16_t const FAT12EOC_MIN = 0XFF8; /** FAT16 end of chain value used by Microsoft. */ uint16_t const FAT16EOC = 0XFFFF; /** Minimum value for FAT16 EOC. Use to test for EOC. */ @@ -284,9 +462,6 @@ uint32_t const FAT32EOC = 0X0FFFFFFF; uint32_t const FAT32EOC_MIN = 0X0FFFFFF8; /** Mask a for FAT32 entry. Entries are 28 bits. */ uint32_t const FAT32MASK = 0X0FFFFFFF; - -/** Type name for fat32BootSector */ -typedef struct fat32BootSector fbs_t; //------------------------------------------------------------------------------ /** * \struct directoryEntry @@ -319,8 +494,8 @@ typedef struct fat32BootSector fbs_t; * The valid time range is from Midnight 00:00:00 to 23:59:58. */ struct directoryEntry { - /** - * Short 8.3 name. + /** Short 8.3 name. + * * The first eight bytes contain the file name with blank fill. * The last three bytes contain the file extension with blank fill. */ @@ -366,12 +541,46 @@ struct directoryEntry { uint16_t firstClusterLow; /** 32-bit unsigned holding this file's size in bytes. */ uint32_t fileSize; -}; +} PACKED; +/** + * \struct directoryVFATEntry + * \brief VFAT long filename directory entry + * + * directoryVFATEntries are found in the same list as normal directoryEntry. + * But have the attribute field set to DIR_ATT_LONG_NAME. + * + * Long filenames are saved in multiple directoryVFATEntries. + * Each entry containing 13 UTF-16 characters. + */ +struct directoryVFATEntry { + /** + * Sequence number. Consists of 2 parts: + * bit 6: indicates first long filename block for the next file + * bit 0-4: the position of this long filename block (first block is 1) + */ + uint8_t sequenceNumber; + /** First set of UTF-16 characters */ + uint16_t name1[5];//UTF-16 + /** attributes (at the same location as in directoryEntry), always 0x0F */ + uint8_t attributes; + /** Reserved for use by Windows NT. Always 0. */ + uint8_t reservedNT; + /** Checksum of the short 8.3 filename, can be used to checked if the file system as modified by a not-long-filename aware implementation. */ + uint8_t checksum; + /** Second set of UTF-16 characters */ + uint16_t name2[6];//UTF-16 + /** firstClusterLow is always zero for longFilenames */ + uint16_t firstClusterLow; + /** Third set of UTF-16 characters */ + uint16_t name3[2];//UTF-16 +} PACKED; //------------------------------------------------------------------------------ // Definitions for directory entries // /** Type name for directoryEntry */ typedef struct directoryEntry dir_t; +/** Type name for directoryVFATEntry */ +typedef struct directoryVFATEntry vfat_t; /** escape for name[0] = 0XE5 */ uint8_t const DIR_NAME_0XE5 = 0X05; /** name[0] value for entry that is free after being "deleted" */ @@ -397,22 +606,41 @@ uint8_t const DIR_ATT_LONG_NAME = 0X0F; uint8_t const DIR_ATT_LONG_NAME_MASK = 0X3F; /** defined attribute bits */ uint8_t const DIR_ATT_DEFINED_BITS = 0X3F; -/** Directory entry is part of a long name */ +/** Directory entry is part of a long name + * \param[in] dir Pointer to a directory entry. + * + * \return true if the entry is for part of a long name else false. + */ static inline uint8_t DIR_IS_LONG_NAME(const dir_t* dir) { return (dir->attributes & DIR_ATT_LONG_NAME_MASK) == DIR_ATT_LONG_NAME; } /** Mask for file/subdirectory tests */ uint8_t const DIR_ATT_FILE_TYPE_MASK = (DIR_ATT_VOLUME_ID | DIR_ATT_DIRECTORY); -/** Directory entry is for a file */ +/** Directory entry is for a file + * \param[in] dir Pointer to a directory entry. + * + * \return true if the entry is for a normal file else false. + */ static inline uint8_t DIR_IS_FILE(const dir_t* dir) { return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == 0; } -/** Directory entry is for a subdirectory */ +/** Directory entry is for a subdirectory + * \param[in] dir Pointer to a directory entry. + * + * \return true if the entry is for a subdirectory else false. + */ static inline uint8_t DIR_IS_SUBDIR(const dir_t* dir) { return (dir->attributes & DIR_ATT_FILE_TYPE_MASK) == DIR_ATT_DIRECTORY; } -/** Directory entry is for a file or subdirectory */ +/** Directory entry is for a file or subdirectory + * \param[in] dir Pointer to a directory entry. + * + * \return true if the entry is for a normal file or subdirectory else false. + */ static inline uint8_t DIR_IS_FILE_OR_SUBDIR(const dir_t* dir) { return (dir->attributes & DIR_ATT_VOLUME_ID) == 0; } -#endif // FatStructs_h +#endif // SdFatStructs_h + + +#endif diff --git a/Marlin/SdFatUtil.cpp b/Marlin/SdFatUtil.cpp new file mode 100644 index 000000000..32cd198b6 --- /dev/null +++ b/Marlin/SdFatUtil.cpp @@ -0,0 +1,82 @@ +/* Arduino SdFat Library + * Copyright (C) 2008 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +#include "Marlin.h" + +#ifdef SDSUPPORT +#include "SdFatUtil.h" + +//------------------------------------------------------------------------------ +/** Amount of free RAM + * \return The number of free bytes. + */ +#ifdef __arm__ +extern "C" char* sbrk(int incr); +int SdFatUtil::FreeRam() { + char top; + return &top - reinterpret_cast(sbrk(0)); +} +#else // __arm__ +extern char *__brkval; +extern char __bss_end; +/** Amount of free RAM + * \return The number of free bytes. + */ +int SdFatUtil::FreeRam() { + char top; + return __brkval ? &top - __brkval : &top - &__bss_end; +} +#endif // __arm + +//------------------------------------------------------------------------------ +/** %Print a string in flash memory. + * + * \param[in] pr Print object for output. + * \param[in] str Pointer to string stored in flash memory. + */ +void SdFatUtil::print_P( PGM_P str) { + for (uint8_t c; (c = pgm_read_byte(str)); str++) MYSERIAL.write(c); +} +//------------------------------------------------------------------------------ +/** %Print a string in flash memory followed by a CR/LF. + * + * \param[in] pr Print object for output. + * \param[in] str Pointer to string stored in flash memory. + */ +void SdFatUtil::println_P( PGM_P str) { + print_P( str); + MYSERIAL.println(); +} +//------------------------------------------------------------------------------ +/** %Print a string in flash memory to Serial. + * + * \param[in] str Pointer to string stored in flash memory. + */ +void SdFatUtil::SerialPrint_P(PGM_P str) { + print_P(str); +} +//------------------------------------------------------------------------------ +/** %Print a string in flash memory to Serial followed by a CR/LF. + * + * \param[in] str Pointer to string stored in flash memory. + */ +void SdFatUtil::SerialPrintln_P(PGM_P str) { + println_P( str); +} +#endif diff --git a/Marlin/SdFatUtil.h b/Marlin/SdFatUtil.h index 7992031f7..7f1809422 100644 --- a/Marlin/SdFatUtil.h +++ b/Marlin/SdFatUtil.h @@ -1,70 +1,48 @@ -/* Arduino SdFat Library - * Copyright (C) 2008 by William Greiman - * - * This file is part of the Arduino SdFat Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with the Arduino SdFat Library. If not, see - * . - */ -#ifndef SdFatUtil_h -#define SdFatUtil_h -/** - * \file - * Useful utility functions. - */ -#include -#include -/** Store and print a string in flash memory.*/ -#define PgmPrint(x) SerialPrint_P(PSTR(x)) -/** Store and print a string in flash memory followed by a CR/LF.*/ -#define PgmPrintln(x) SerialPrintln_P(PSTR(x)) -/** Defined so doxygen works for function definitions. */ -#define NOINLINE __attribute__((noinline)) -//------------------------------------------------------------------------------ -/** Return the number of bytes currently free in RAM. */ -static int FreeRam(void) { - extern int __bss_end; - extern int* __brkval; - int free_memory; - if (reinterpret_cast(__brkval) == 0) { - // if no heap use from end of bss section - free_memory = reinterpret_cast(&free_memory) - - reinterpret_cast(&__bss_end); - } else { - // use from top of stack to heap - free_memory = reinterpret_cast(&free_memory) - - reinterpret_cast(__brkval); - } - return free_memory; -} -//------------------------------------------------------------------------------ -/** - * %Print a string in flash memory to the serial port. - * - * \param[in] str Pointer to string stored in flash memory. - */ -static NOINLINE void SerialPrint_P(PGM_P str) { - for (uint8_t c; (c = pgm_read_byte(str)); str++) Serial.print(c); -} -//------------------------------------------------------------------------------ -/** - * %Print a string in flash memory followed by a CR/LF. - * - * \param[in] str Pointer to string stored in flash memory. - */ -static NOINLINE void SerialPrintln_P(PGM_P str) { - SerialPrint_P(str); - Serial.println(); -} -#endif // #define SdFatUtil_h +/* Arduino SdFat Library + * Copyright (C) 2008 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +#include "Marlin.h" +#ifdef SDSUPPORT + +#ifndef SdFatUtil_h +#define SdFatUtil_h +/** + * \file + * \brief Useful utility functions. + */ +#include "Marlin.h" +#include "MarlinSerial.h" +/** Store and print a string in flash memory.*/ +#define PgmPrint(x) SerialPrint_P(PSTR(x)) +/** Store and print a string in flash memory followed by a CR/LF.*/ +#define PgmPrintln(x) SerialPrintln_P(PSTR(x)) + +namespace SdFatUtil { + int FreeRam(); + void print_P( PGM_P str); + void println_P( PGM_P str); + void SerialPrint_P(PGM_P str); + void SerialPrintln_P(PGM_P str); +} + +using namespace SdFatUtil; // NOLINT +#endif // #define SdFatUtil_h + + +#endif \ No newline at end of file diff --git a/Marlin/SdFatmainpage.h b/Marlin/SdFatmainpage.h deleted file mode 100644 index d26cb854c..000000000 --- a/Marlin/SdFatmainpage.h +++ /dev/null @@ -1,202 +0,0 @@ -/* Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino SdFat Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the Arduino SdFat Library. If not, see - * . - */ - -/** -\mainpage Arduino SdFat Library -
Copyright © 2009 by William Greiman -
- -\section Intro Introduction -The Arduino SdFat Library is a minimal implementation of FAT16 and FAT32 -file systems on SD flash memory cards. Standard SD and high capacity -SDHC cards are supported. - -The SdFat only supports short 8.3 names. - -The main classes in SdFat are Sd2Card, SdVolume, and SdFile. - -The Sd2Card class supports access to standard SD cards and SDHC cards. Most -applications will only need to call the Sd2Card::init() member function. - -The SdVolume class supports FAT16 and FAT32 partitions. Most applications -will only need to call the SdVolume::init() member function. - -The SdFile class provides file access functions such as open(), read(), -remove(), write(), close() and sync(). This class supports access to the root -directory and subdirectories. - -A number of example are provided in the SdFat/examples folder. These were -developed to test SdFat and illustrate its use. - -SdFat was developed for high speed data recording. SdFat was used to implement -an audio record/play class, WaveRP, for the Adafruit Wave Shield. This -application uses special Sd2Card calls to write to contiguous files in raw mode. -These functions reduce write latency so that audio can be recorded with the -small amount of RAM in the Arduino. - -\section SDcard SD\SDHC Cards - -Arduinos access SD cards using the cards SPI protocol. PCs, Macs, and -most consumer devices use the 4-bit parallel SD protocol. A card that -functions well on A PC or Mac may not work well on the Arduino. - -Most cards have good SPI read performance but cards vary widely in SPI -write performance. Write performance is limited by how efficiently the -card manages internal erase/remapping operations. The Arduino cannot -optimize writes to reduce erase operations because of its limit RAM. - -SanDisk cards generally have good write performance. They seem to have -more internal RAM buffering than other cards and therefore can limit -the number of flash erase operations that the Arduino forces due to its -limited RAM. - -\section Hardware Hardware Configuration - -SdFat was developed using an - Adafruit Industries - Wave Shield. - -The hardware interface to the SD card should not use a resistor based level -shifter. SdFat sets the SPI bus frequency to 8 MHz which results in signal -rise times that are too slow for the edge detectors in many newer SD card -controllers when resistor voltage dividers are used. - -The 5 to 3.3 V level shifter for 5 V Arduinos should be IC based like the -74HC4050N based circuit shown in the file SdLevel.png. The Adafruit Wave Shield -uses a 74AHC125N. Gravitech sells SD and MicroSD Card Adapters based on the -74LCX245. - -If you are using a resistor based level shifter and are having problems try -setting the SPI bus frequency to 4 MHz. This can be done by using -card.init(SPI_HALF_SPEED) to initialize the SD card. - -\section comment Bugs and Comments - -If you wish to report bugs or have comments, send email to fat16lib@sbcglobal.net. - -\section SdFatClass SdFat Usage - -SdFat uses a slightly restricted form of short names. -Only printable ASCII characters are supported. No characters with code point -values greater than 127 are allowed. Space is not allowed even though space -was allowed in the API of early versions of DOS. - -Short names are limited to 8 characters followed by an optional period (.) -and extension of up to 3 characters. The characters may be any combination -of letters and digits. The following special characters are also allowed: - -$ % ' - _ @ ~ ` ! ( ) { } ^ # & - -Short names are always converted to upper case and their original case -value is lost. - -\note - The Arduino Print class uses character -at a time writes so it was necessary to use a \link SdFile::sync() sync() \endlink -function to control when data is written to the SD card. - -\par -An application which writes to a file using \link Print::print() print()\endlink, -\link Print::println() println() \endlink -or \link SdFile::write write() \endlink must call \link SdFile::sync() sync() \endlink -at the appropriate time to force data and directory information to be written -to the SD Card. Data and directory information are also written to the SD card -when \link SdFile::close() close() \endlink is called. - -\par -Applications must use care calling \link SdFile::sync() sync() \endlink -since 2048 bytes of I/O is required to update file and -directory information. This includes writing the current data block, reading -the block that contains the directory entry for update, writing the directory -block back and reading back the current data block. - -It is possible to open a file with two or more instances of SdFile. A file may -be corrupted if data is written to the file by more than one instance of SdFile. - -\section HowTo How to format SD Cards as FAT Volumes - -You should use a freshly formatted SD card for best performance. FAT -file systems become slower if many files have been created and deleted. -This is because the directory entry for a deleted file is marked as deleted, -but is not deleted. When a new file is created, these entries must be scanned -before creating the file, a flaw in the FAT design. Also files can become -fragmented which causes reads and writes to be slower. - -Microsoft operating systems support removable media formatted with a -Master Boot Record, MBR, or formatted as a super floppy with a FAT Boot Sector -in block zero. - -Microsoft operating systems expect MBR formatted removable media -to have only one partition. The first partition should be used. - -Microsoft operating systems do not support partitioning SD flash cards. -If you erase an SD card with a program like KillDisk, Most versions of -Windows will format the card as a super floppy. - -The best way to restore an SD card's format is to use SDFormatter -which can be downloaded from: - -http://www.sdcard.org/consumers/formatter/ - -SDFormatter aligns flash erase boundaries with file -system structures which reduces write latency and file system overhead. - -SDFormatter does not have an option for FAT type so it may format -small cards as FAT12. - -After the MBR is restored by SDFormatter you may need to reformat small -cards that have been formatted FAT12 to force the volume type to be FAT16. - -If you reformat the SD card with an OS utility, choose a cluster size that -will result in: - -4084 < CountOfClusters && CountOfClusters < 65525 - -The volume will then be FAT16. - -If you are formatting an SD card on OS X or Linux, be sure to use the first -partition. Format this partition with a cluster count in above range. - -\section References References - -Adafruit Industries: - -http://www.adafruit.com/ - -http://www.ladyada.net/make/waveshield/ - -The Arduino site: - -http://www.arduino.cc/ - -For more information about FAT file systems see: - -http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx - -For information about using SD cards as SPI devices see: - -http://www.sdcard.org/developers/tech/sdcard/pls/Simplified_Physical_Layer_Spec.pdf - -The ATmega328 datasheet: - -http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf - - - */ diff --git a/Marlin/SdFile.cpp b/Marlin/SdFile.cpp index 0a27159f4..29f5efadc 100644 --- a/Marlin/SdFile.cpp +++ b/Marlin/SdFile.cpp @@ -1,1252 +1,95 @@ -/* Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino SdFat Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the Arduino SdFat Library. If not, see - * . - */ -#include "SdFat.h" -#include -#include -//------------------------------------------------------------------------------ -// callback function for date/time -void (*SdFile::dateTime_)(uint16_t* date, uint16_t* time) = NULL; - -#if ALLOW_DEPRECATED_FUNCTIONS -// suppress cpplint warnings with NOLINT comment -void (*SdFile::oldDateTime_)(uint16_t& date, uint16_t& time) = NULL; // NOLINT -#endif // ALLOW_DEPRECATED_FUNCTIONS -//------------------------------------------------------------------------------ -// add a cluster to a file -uint8_t SdFile::addCluster() { - if (!vol_->allocContiguous(1, &curCluster_)) return false; - - // if first cluster of file link to directory entry - if (firstCluster_ == 0) { - firstCluster_ = curCluster_; - flags_ |= F_FILE_DIR_DIRTY; - } - return true; -} -//------------------------------------------------------------------------------ -// Add a cluster to a directory file and zero the cluster. -// return with first block of cluster in the cache -uint8_t SdFile::addDirCluster(void) { - if (!addCluster()) return false; - - // zero data in cluster insure first cluster is in cache - uint32_t block = vol_->clusterStartBlock(curCluster_); - for (uint8_t i = vol_->blocksPerCluster_; i != 0; i--) { - if (!SdVolume::cacheZeroBlock(block + i - 1)) return false; - } - // Increase directory file size by cluster size - fileSize_ += 512UL << vol_->clusterSizeShift_; - return true; -} -//------------------------------------------------------------------------------ -// cache a file's directory entry -// return pointer to cached entry or null for failure -dir_t* SdFile::cacheDirEntry(uint8_t action) { - if (!SdVolume::cacheRawBlock(dirBlock_, action)) return NULL; - return SdVolume::cacheBuffer_.dir + dirIndex_; -} -//------------------------------------------------------------------------------ -/** - * Close a file and force cached data and directory information - * to be written to the storage device. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include no file is open or an I/O error. - */ -uint8_t SdFile::close(void) { - if (!sync())return false; - type_ = FAT_FILE_TYPE_CLOSED; - return true; -} -//------------------------------------------------------------------------------ -/** - * Check for contiguous file and return its raw block range. - * - * \param[out] bgnBlock the first block address for the file. - * \param[out] endBlock the last block address for the file. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include file is not contiguous, file has zero length - * or an I/O error occurred. - */ -uint8_t SdFile::contiguousRange(uint32_t* bgnBlock, uint32_t* endBlock) { - // error if no blocks - if (firstCluster_ == 0) return false; - - for (uint32_t c = firstCluster_; ; c++) { - uint32_t next; - if (!vol_->fatGet(c, &next)) return false; - - // check for contiguous - if (next != (c + 1)) { - // error if not end of chain - if (!vol_->isEOC(next)) return false; - *bgnBlock = vol_->clusterStartBlock(firstCluster_); - *endBlock = vol_->clusterStartBlock(c) - + vol_->blocksPerCluster_ - 1; - return true; - } - } -} -//------------------------------------------------------------------------------ -/** - * Create and open a new contiguous file of a specified size. - * - * \note This function only supports short DOS 8.3 names. - * See open() for more information. - * - * \param[in] dirFile The directory where the file will be created. - * \param[in] fileName A valid DOS 8.3 file name. - * \param[in] size The desired file size. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include \a fileName contains - * an invalid DOS 8.3 file name, the FAT volume has not been initialized, - * a file is already open, the file already exists, the root - * directory is full or an I/O error. - * - */ -uint8_t SdFile::createContiguous(SdFile* dirFile, - const char* fileName, uint32_t size) { - // don't allow zero length file - if (size == 0) return false; - if (!open(dirFile, fileName, O_CREAT | O_EXCL | O_RDWR)) return false; - - // calculate number of clusters needed - uint32_t count = ((size - 1) >> (vol_->clusterSizeShift_ + 9)) + 1; - - // allocate clusters - if (!vol_->allocContiguous(count, &firstCluster_)) { - remove(); - return false; - } - fileSize_ = size; - - // insure sync() will update dir entry - flags_ |= F_FILE_DIR_DIRTY; - return sync(); -} -//------------------------------------------------------------------------------ -/** - * Return a files directory entry - * - * \param[out] dir Location for return of the files directory entry. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t SdFile::dirEntry(dir_t* dir) { - // make sure fields on SD are correct - if (!sync()) return false; - - // read entry - dir_t* p = cacheDirEntry(SdVolume::CACHE_FOR_READ); - if (!p) return false; - - // copy to caller's struct - memcpy(dir, p, sizeof(dir_t)); - return true; -} -//------------------------------------------------------------------------------ -/** - * Format the name field of \a dir into the 13 byte array - * \a name in standard 8.3 short name format. - * - * \param[in] dir The directory structure containing the name. - * \param[out] name A 13 byte char array for the formatted name. - */ -void SdFile::dirName(const dir_t& dir, char* name) { - uint8_t j = 0; - for (uint8_t i = 0; i < 11; i++) { - if (dir.name[i] == ' ')continue; - if (i == 8) name[j++] = '.'; - name[j++] = dir.name[i]; - } - name[j] = 0; -} -//------------------------------------------------------------------------------ -/** List directory contents to Serial. - * - * \param[in] flags The inclusive OR of - * - * LS_DATE - %Print file modification date - * - * LS_SIZE - %Print file size. - * - * LS_R - Recursive list of subdirectories. - * - * \param[in] indent Amount of space before file name. Used for recursive - * list to indicate subdirectory level. - */ -void SdFile::ls(uint8_t flags, uint8_t indent) { - dir_t* p; - - rewind(); - while ((p = readDirCache())) { - // done if past last used entry - if (p->name[0] == DIR_NAME_FREE) break; - - // skip deleted entry and entries for . and .. - if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') continue; - - // only list subdirectories and files - if (!DIR_IS_FILE_OR_SUBDIR(p)) continue; - - // print any indent spaces - for (int8_t i = 0; i < indent; i++) Serial.print(' '); - - // print file name with possible blank fill - printDirName(*p, flags & (LS_DATE | LS_SIZE) ? 14 : 0); - - // print modify date/time if requested - if (flags & LS_DATE) { - printFatDate(p->lastWriteDate); - Serial.print(' '); - printFatTime(p->lastWriteTime); - } - // print size if requested - if (!DIR_IS_SUBDIR(p) && (flags & LS_SIZE)) { - Serial.print(' '); - Serial.print(p->fileSize); - } - Serial.println(); - - // list subdirectory content if requested - if ((flags & LS_R) && DIR_IS_SUBDIR(p)) { - uint16_t index = curPosition()/32 - 1; - SdFile s; - if (s.open(this, index, O_READ)) s.ls(flags, indent + 2); - seekSet(32 * (index + 1)); - } - } -} -//------------------------------------------------------------------------------ -// format directory name field from a 8.3 name string -uint8_t SdFile::make83Name(const char* str, uint8_t* name) { - uint8_t c; - uint8_t n = 7; // max index for part before dot - uint8_t i = 0; - // blank fill name and extension - while (i < 11) name[i++] = ' '; - i = 0; - while ((c = *str++) != '\0') { - if (c == '.') { - if (n == 10) return false; // only one dot allowed - n = 10; // max index for full 8.3 name - i = 8; // place for extension - } else { - // illegal FAT characters - PGM_P p = PSTR("|<>^+=?/[];,*\"\\"); - uint8_t b; - while ((b = pgm_read_byte(p++))) if (b == c) return false; - // check size and only allow ASCII printable characters - if (i > n || c < 0X21 || c > 0X7E)return false; - // only upper case allowed in 8.3 names - convert lower to upper - name[i++] = c < 'a' || c > 'z' ? c : c + ('A' - 'a'); - } - } - // must have a file name, extension is optional - return name[0] != ' '; -} -//------------------------------------------------------------------------------ -/** Make a new directory. - * - * \param[in] dir An open SdFat instance for the directory that will containing - * the new directory. - * - * \param[in] dirName A valid 8.3 DOS name for the new directory. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include this SdFile is already open, \a dir is not a - * directory, \a dirName is invalid or already exists in \a dir. - */ -uint8_t SdFile::makeDir(SdFile* dir, const char* dirName) { - dir_t d; - - // create a normal file - if (!open(dir, dirName, O_CREAT | O_EXCL | O_RDWR)) return false; - - // convert SdFile to directory - flags_ = O_READ; - type_ = FAT_FILE_TYPE_SUBDIR; - - // allocate and zero first cluster - if (!addDirCluster())return false; - - // force entry to SD - if (!sync()) return false; - - // cache entry - should already be in cache due to sync() call - dir_t* p = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!p) return false; - - // change directory entry attribute - p->attributes = DIR_ATT_DIRECTORY; - - // make entry for '.' - memcpy(&d, p, sizeof(d)); - for (uint8_t i = 1; i < 11; i++) d.name[i] = ' '; - d.name[0] = '.'; - - // cache block for '.' and '..' - uint32_t block = vol_->clusterStartBlock(firstCluster_); - if (!SdVolume::cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) return false; - - // copy '.' to block - memcpy(&SdVolume::cacheBuffer_.dir[0], &d, sizeof(d)); - - // make entry for '..' - d.name[1] = '.'; - if (dir->isRoot()) { - d.firstClusterLow = 0; - d.firstClusterHigh = 0; - } else { - d.firstClusterLow = dir->firstCluster_ & 0XFFFF; - d.firstClusterHigh = dir->firstCluster_ >> 16; - } - // copy '..' to block - memcpy(&SdVolume::cacheBuffer_.dir[1], &d, sizeof(d)); - - // set position after '..' - curPosition_ = 2 * sizeof(d); - - // write first block - return SdVolume::cacheFlush(); -} -//------------------------------------------------------------------------------ -/** - * Open a file or directory by name. - * - * \param[in] dirFile An open SdFat instance for the directory containing the - * file to be opened. - * - * \param[in] fileName A valid 8.3 DOS name for a file to be opened. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of flags from the following list - * - * O_READ - Open for reading. - * - * O_RDONLY - Same as O_READ. - * - * O_WRITE - Open for writing. - * - * O_WRONLY - Same as O_WRITE. - * - * O_RDWR - Open for reading and writing. - * - * O_APPEND - If set, the file offset shall be set to the end of the - * file prior to each write. - * - * O_CREAT - If the file exists, this flag has no effect except as noted - * under O_EXCL below. Otherwise, the file shall be created - * - * O_EXCL - If O_CREAT and O_EXCL are set, open() shall fail if the file exists. - * - * O_SYNC - Call sync() after each write. This flag should not be used with - * write(uint8_t), write_P(PGM_P), writeln_P(PGM_P), or the Arduino Print class. - * These functions do character at a time writes so sync() will be called - * after each byte. - * - * O_TRUNC - If the file exists and is a regular file, and the file is - * successfully opened and is not read only, its length shall be truncated to 0. - * - * \note Directory files must be opened read only. Write and truncation is - * not allowed for directory files. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include this SdFile is already open, \a difFile is not - * a directory, \a fileName is invalid, the file does not exist - * or can't be opened in the access mode specified by oflag. - */ -uint8_t SdFile::open(SdFile* dirFile, const char* fileName, uint8_t oflag) { - uint8_t dname[11]; - dir_t* p; - - // error if already open - if (isOpen())return false; - - if (!make83Name(fileName, dname)) return false; - vol_ = dirFile->vol_; - dirFile->rewind(); - - // bool for empty entry found - uint8_t emptyFound = false; - - // search for file - while (dirFile->curPosition_ < dirFile->fileSize_) { - uint8_t index = 0XF & (dirFile->curPosition_ >> 5); - p = dirFile->readDirCache(); - if (p == NULL) return false; - - if (p->name[0] == DIR_NAME_FREE || p->name[0] == DIR_NAME_DELETED) { - // remember first empty slot - if (!emptyFound) { - emptyFound = true; - dirIndex_ = index; - dirBlock_ = SdVolume::cacheBlockNumber_; - } - // done if no entries follow - if (p->name[0] == DIR_NAME_FREE) break; - } else if (!memcmp(dname, p->name, 11)) { - // don't open existing file if O_CREAT and O_EXCL - if ((oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) return false; - - // open found file - return openCachedEntry(0XF & index, oflag); - } - } - // only create file if O_CREAT and O_WRITE - if ((oflag & (O_CREAT | O_WRITE)) != (O_CREAT | O_WRITE)) return false; - - // cache found slot or add cluster if end of file - if (emptyFound) { - p = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!p) return false; - } else { - if (dirFile->type_ == FAT_FILE_TYPE_ROOT16) return false; - - // add and zero cluster for dirFile - first cluster is in cache for write - if (!dirFile->addDirCluster()) return false; - - // use first entry in cluster - dirIndex_ = 0; - p = SdVolume::cacheBuffer_.dir; - } - // initialize as empty file - memset(p, 0, sizeof(dir_t)); - memcpy(p->name, dname, 11); - - // set timestamps - if (dateTime_) { - // call user function - dateTime_(&p->creationDate, &p->creationTime); - } else { - // use default date/time - p->creationDate = FAT_DEFAULT_DATE; - p->creationTime = FAT_DEFAULT_TIME; - } - p->lastAccessDate = p->creationDate; - p->lastWriteDate = p->creationDate; - p->lastWriteTime = p->creationTime; - - // force write of entry to SD - if (!SdVolume::cacheFlush()) return false; - - // open entry in cache - return openCachedEntry(dirIndex_, oflag); -} -//------------------------------------------------------------------------------ -/** - * Open a file by index. - * - * \param[in] dirFile An open SdFat instance for the directory. - * - * \param[in] index The \a index of the directory entry for the file to be - * opened. The value for \a index is (directory file position)/32. - * - * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive - * OR of flags O_READ, O_WRITE, O_TRUNC, and O_SYNC. - * - * See open() by fileName for definition of flags and return values. - * - */ -uint8_t SdFile::open(SdFile* dirFile, uint16_t index, uint8_t oflag) { - // error if already open - if (isOpen())return false; - - // don't open existing file if O_CREAT and O_EXCL - user call error - if ((oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) return false; - - vol_ = dirFile->vol_; - - // seek to location of entry - if (!dirFile->seekSet(32 * index)) return false; - - // read entry into cache - dir_t* p = dirFile->readDirCache(); - if (p == NULL) return false; - - // error if empty slot or '.' or '..' - if (p->name[0] == DIR_NAME_FREE || - p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') { - return false; - } - // open cached entry - return openCachedEntry(index & 0XF, oflag); -} -//------------------------------------------------------------------------------ -// open a cached directory entry. Assumes vol_ is initializes -uint8_t SdFile::openCachedEntry(uint8_t dirIndex, uint8_t oflag) { - // location of entry in cache - dir_t* p = SdVolume::cacheBuffer_.dir + dirIndex; - - // write or truncate is an error for a directory or read-only file - if (p->attributes & (DIR_ATT_READ_ONLY | DIR_ATT_DIRECTORY)) { - if (oflag & (O_WRITE | O_TRUNC)) return false; - } - // remember location of directory entry on SD - dirIndex_ = dirIndex; - dirBlock_ = SdVolume::cacheBlockNumber_; - - // copy first cluster number for directory fields - firstCluster_ = (uint32_t)p->firstClusterHigh << 16; - firstCluster_ |= p->firstClusterLow; - - // make sure it is a normal file or subdirectory - if (DIR_IS_FILE(p)) { - fileSize_ = p->fileSize; - type_ = FAT_FILE_TYPE_NORMAL; - } else if (DIR_IS_SUBDIR(p)) { - if (!vol_->chainSize(firstCluster_, &fileSize_)) return false; - type_ = FAT_FILE_TYPE_SUBDIR; - } else { - return false; - } - // save open flags for read/write - flags_ = oflag & (O_ACCMODE | O_SYNC | O_APPEND); - - // set to start of file - curCluster_ = 0; - curPosition_ = 0; - - // truncate file to zero length if requested - if (oflag & O_TRUNC) return truncate(0); - return true; -} -//------------------------------------------------------------------------------ -/** - * Open a volume's root directory. - * - * \param[in] vol The FAT volume containing the root directory to be opened. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include the FAT volume has not been initialized - * or it a FAT12 volume. - */ -uint8_t SdFile::openRoot(SdVolume* vol) { - // error if file is already open - if (isOpen()) return false; - - if (vol->fatType() == 16) { - type_ = FAT_FILE_TYPE_ROOT16; - firstCluster_ = 0; - fileSize_ = 32 * vol->rootDirEntryCount(); - } else if (vol->fatType() == 32) { - type_ = FAT_FILE_TYPE_ROOT32; - firstCluster_ = vol->rootDirStart(); - if (!vol->chainSize(firstCluster_, &fileSize_)) return false; - } else { - // volume is not initialized or FAT12 - return false; - } - vol_ = vol; - // read only - flags_ = O_READ; - - // set to start of file - curCluster_ = 0; - curPosition_ = 0; - - // root has no directory entry - dirBlock_ = 0; - dirIndex_ = 0; - return true; -} -//------------------------------------------------------------------------------ -/** %Print the name field of a directory entry in 8.3 format to Serial. - * - * \param[in] dir The directory structure containing the name. - * \param[in] width Blank fill name if length is less than \a width. - */ -void SdFile::printDirName(const dir_t& dir, uint8_t width) { - uint8_t w = 0; - for (uint8_t i = 0; i < 11; i++) { - if (dir.name[i] == ' ')continue; - if (i == 8) { - Serial.print('.'); - w++; - } - Serial.print(dir.name[i]); - w++; - } - if (DIR_IS_SUBDIR(&dir)) { - Serial.print('/'); - w++; - } - while (w < width) { - Serial.print(' '); - w++; - } -} -//------------------------------------------------------------------------------ -/** %Print a directory date field to Serial. - * - * Format is yyyy-mm-dd. - * - * \param[in] fatDate The date field from a directory entry. - */ -void SdFile::printFatDate(uint16_t fatDate) { - Serial.print(FAT_YEAR(fatDate)); - Serial.print('-'); - printTwoDigits(FAT_MONTH(fatDate)); - Serial.print('-'); - printTwoDigits(FAT_DAY(fatDate)); -} -//------------------------------------------------------------------------------ -/** %Print a directory time field to Serial. - * - * Format is hh:mm:ss. - * - * \param[in] fatTime The time field from a directory entry. - */ -void SdFile::printFatTime(uint16_t fatTime) { - printTwoDigits(FAT_HOUR(fatTime)); - Serial.print(':'); - printTwoDigits(FAT_MINUTE(fatTime)); - Serial.print(':'); - printTwoDigits(FAT_SECOND(fatTime)); -} -//------------------------------------------------------------------------------ -/** %Print a value as two digits to Serial. - * - * \param[in] v Value to be printed, 0 <= \a v <= 99 - */ -void SdFile::printTwoDigits(uint8_t v) { - char str[3]; - str[0] = '0' + v/10; - str[1] = '0' + v % 10; - str[2] = 0; - Serial.print(str); -} -//------------------------------------------------------------------------------ -/** - * Read data from a file starting at the current position. - * - * \param[out] buf Pointer to the location that will receive the data. - * - * \param[in] nbyte Maximum number of bytes to read. - * - * \return For success read() returns the number of bytes read. - * A value less than \a nbyte, including zero, will be returned - * if end of file is reached. - * If an error occurs, read() returns -1. Possible errors include - * read() called before a file has been opened, corrupt file system - * or an I/O error occurred. - */ -int16_t SdFile::read(void* buf, uint16_t nbyte) { - uint8_t* dst = reinterpret_cast(buf); - - // error if not open or write only - if (!isOpen() || !(flags_ & O_READ)) return -1; - - // max bytes left in file - if (nbyte > (fileSize_ - curPosition_)) nbyte = fileSize_ - curPosition_; - - // amount left to read - uint16_t toRead = nbyte; - while (toRead > 0) { - uint32_t block; // raw device block number - uint16_t offset = curPosition_ & 0X1FF; // offset in block - if (type_ == FAT_FILE_TYPE_ROOT16) { - block = vol_->rootDirStart() + (curPosition_ >> 9); - } else { - uint8_t blockOfCluster = vol_->blockOfCluster(curPosition_); - if (offset == 0 && blockOfCluster == 0) { - // start of new cluster - if (curPosition_ == 0) { - // use first cluster in file - curCluster_ = firstCluster_; - } else { - // get next cluster from FAT - if (!vol_->fatGet(curCluster_, &curCluster_)) return -1; - } - } - block = vol_->clusterStartBlock(curCluster_) + blockOfCluster; - } - uint16_t n = toRead; - - // amount to be read from current block - if (n > (512 - offset)) n = 512 - offset; - - // no buffering needed if n == 512 or user requests no buffering - if ((unbufferedRead() || n == 512) && - block != SdVolume::cacheBlockNumber_) { - if (!vol_->readData(block, offset, n, dst)) return -1; - dst += n; - } else { - // read block to cache and copy data to caller - if (!SdVolume::cacheRawBlock(block, SdVolume::CACHE_FOR_READ)) return -1; - uint8_t* src = SdVolume::cacheBuffer_.data + offset; - uint8_t* end = src + n; - while (src != end) *dst++ = *src++; - } - curPosition_ += n; - toRead -= n; - } - return nbyte; -} -//------------------------------------------------------------------------------ -/** - * Read the next directory entry from a directory file. - * - * \param[out] dir The dir_t struct that will receive the data. - * - * \return For success readDir() returns the number of bytes read. - * A value of zero will be returned if end of file is reached. - * If an error occurs, readDir() returns -1. Possible errors include - * readDir() called before a directory has been opened, this is not - * a directory file or an I/O error occurred. - */ -int8_t SdFile::readDir(dir_t* dir) { - int8_t n; - // if not a directory file or miss-positioned return an error - if (!isDir() || (0X1F & curPosition_)) return -1; - - while ((n = read(dir, sizeof(dir_t))) == sizeof(dir_t)) { - // last entry if DIR_NAME_FREE - if (dir->name[0] == DIR_NAME_FREE) break; - // skip empty entries and entry for . and .. - if (dir->name[0] == DIR_NAME_DELETED || dir->name[0] == '.') continue; - // return if normal file or subdirectory - if (DIR_IS_FILE_OR_SUBDIR(dir)) return n; - } - // error, end of file, or past last entry - return n < 0 ? -1 : 0; -} -//------------------------------------------------------------------------------ -// Read next directory entry into the cache -// Assumes file is correctly positioned -dir_t* SdFile::readDirCache(void) { - // error if not directory - if (!isDir()) return NULL; - - // index of entry in cache - uint8_t i = (curPosition_ >> 5) & 0XF; - - // use read to locate and cache block - if (read() < 0) return NULL; - - // advance to next entry - curPosition_ += 31; - - // return pointer to entry - return (SdVolume::cacheBuffer_.dir + i); -} -//------------------------------------------------------------------------------ -/** - * Remove a file. - * - * The directory entry and all data for the file are deleted. - * - * \note This function should not be used to delete the 8.3 version of a - * file that has a long name. For example if a file has the long name - * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include the file read-only, is a directory, - * or an I/O error occurred. - */ -uint8_t SdFile::remove(void) { - // free any clusters - will fail if read-only or directory - if (!truncate(0)) return false; - - // cache directory entry - dir_t* d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) return false; - - // mark entry deleted - d->name[0] = DIR_NAME_DELETED; - - // set this SdFile closed - type_ = FAT_FILE_TYPE_CLOSED; - - // write entry to SD - return SdVolume::cacheFlush(); -} -//------------------------------------------------------------------------------ -/** - * Remove a file. - * - * The directory entry and all data for the file are deleted. - * - * \param[in] dirFile The directory that contains the file. - * \param[in] fileName The name of the file to be removed. - * - * \note This function should not be used to delete the 8.3 version of a - * file that has a long name. For example if a file has the long name - * "New Text Document.txt" you should not delete the 8.3 name "NEWTEX~1.TXT". - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include the file is a directory, is read only, - * \a dirFile is not a directory, \a fileName is not found - * or an I/O error occurred. - */ -uint8_t SdFile::remove(SdFile* dirFile, const char* fileName) { - SdFile file; - if (!file.open(dirFile, fileName, O_WRITE)) return false; - return file.remove(); -} -//------------------------------------------------------------------------------ -/** Remove a directory file. - * - * The directory file will be removed only if it is empty and is not the - * root directory. rmDir() follows DOS and Windows and ignores the - * read-only attribute for the directory. - * - * \note This function should not be used to delete the 8.3 version of a - * directory that has a long name. For example if a directory has the - * long name "New folder" you should not delete the 8.3 name "NEWFOL~1". - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include the file is not a directory, is the root - * directory, is not empty, or an I/O error occurred. - */ -uint8_t SdFile::rmDir(void) { - // must be open subdirectory - if (!isSubDir()) return false; - - rewind(); - - // make sure directory is empty - while (curPosition_ < fileSize_) { - dir_t* p = readDirCache(); - if (p == NULL) return false; - // done if past last used entry - if (p->name[0] == DIR_NAME_FREE) break; - // skip empty slot or '.' or '..' - if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') continue; - // error not empty - if (DIR_IS_FILE_OR_SUBDIR(p)) return false; - } - // convert empty directory to normal file for remove - type_ = FAT_FILE_TYPE_NORMAL; - flags_ |= O_WRITE; - return remove(); -} -//------------------------------------------------------------------------------ -/** Recursively delete a directory and all contained files. - * - * This is like the Unix/Linux 'rm -rf *' if called with the root directory - * hence the name. - * - * Warning - This will remove all contents of the directory including - * subdirectories. The directory will then be removed if it is not root. - * The read-only attribute for files will be ignored. - * - * \note This function should not be used to delete the 8.3 version of - * a directory that has a long name. See remove() and rmDir(). - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t SdFile::rmRfStar(void) { - rewind(); - while (curPosition_ < fileSize_) { - SdFile f; - - // remember position - uint16_t index = curPosition_/32; - - dir_t* p = readDirCache(); - if (!p) return false; - - // done if past last entry - if (p->name[0] == DIR_NAME_FREE) break; - - // skip empty slot or '.' or '..' - if (p->name[0] == DIR_NAME_DELETED || p->name[0] == '.') continue; - - // skip if part of long file name or volume label in root - if (!DIR_IS_FILE_OR_SUBDIR(p)) continue; - - if (!f.open(this, index, O_READ)) return false; - if (f.isSubDir()) { - // recursively delete - if (!f.rmRfStar()) return false; - } else { - // ignore read-only - f.flags_ |= O_WRITE; - if (!f.remove()) return false; - } - // position to next entry if required - if (curPosition_ != (32*(index + 1))) { - if (!seekSet(32*(index + 1))) return false; - } - } - // don't try to delete root - if (isRoot()) return true; - return rmDir(); -} -//------------------------------------------------------------------------------ -/** - * Sets a file's position. - * - * \param[in] pos The new position in bytes from the beginning of the file. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t SdFile::seekSet(uint32_t pos) { - // error if file not open or seek past end of file - if (!isOpen() || pos > fileSize_) return false; - - if (type_ == FAT_FILE_TYPE_ROOT16) { - curPosition_ = pos; - return true; - } - if (pos == 0) { - // set position to start of file - curCluster_ = 0; - curPosition_ = 0; - return true; - } - // calculate cluster index for cur and new position - uint32_t nCur = (curPosition_ - 1) >> (vol_->clusterSizeShift_ + 9); - uint32_t nNew = (pos - 1) >> (vol_->clusterSizeShift_ + 9); - - if (nNew < nCur || curPosition_ == 0) { - // must follow chain from first cluster - curCluster_ = firstCluster_; - } else { - // advance from curPosition - nNew -= nCur; - } - while (nNew--) { - if (!vol_->fatGet(curCluster_, &curCluster_)) return false; - } - curPosition_ = pos; - return true; -} -//------------------------------------------------------------------------------ -/** - * The sync() call causes all modified data and directory fields - * to be written to the storage device. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include a call to sync() before a file has been - * opened or an I/O error. - */ -uint8_t SdFile::sync(void) { - // only allow open files and directories - if (!isOpen()) return false; - - if (flags_ & F_FILE_DIR_DIRTY) { - dir_t* d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) return false; - - // do not set filesize for dir files - if (!isDir()) d->fileSize = fileSize_; - - // update first cluster fields - d->firstClusterLow = firstCluster_ & 0XFFFF; - d->firstClusterHigh = firstCluster_ >> 16; - - // set modify time if user supplied a callback date/time function - if (dateTime_) { - dateTime_(&d->lastWriteDate, &d->lastWriteTime); - d->lastAccessDate = d->lastWriteDate; - } - // clear directory dirty - flags_ &= ~F_FILE_DIR_DIRTY; - } - return SdVolume::cacheFlush(); -} -//------------------------------------------------------------------------------ -/** - * Set a file's timestamps in its directory entry. - * - * \param[in] flags Values for \a flags are constructed by a bitwise-inclusive - * OR of flags from the following list - * - * T_ACCESS - Set the file's last access date. - * - * T_CREATE - Set the file's creation date and time. - * - * T_WRITE - Set the file's last write/modification date and time. - * - * \param[in] year Valid range 1980 - 2107 inclusive. - * - * \param[in] month Valid range 1 - 12 inclusive. - * - * \param[in] day Valid range 1 - 31 inclusive. - * - * \param[in] hour Valid range 0 - 23 inclusive. - * - * \param[in] minute Valid range 0 - 59 inclusive. - * - * \param[in] second Valid range 0 - 59 inclusive - * - * \note It is possible to set an invalid date since there is no check for - * the number of days in a month. - * - * \note - * Modify and access timestamps may be overwritten if a date time callback - * function has been set by dateTimeCallback(). - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - */ -uint8_t SdFile::timestamp(uint8_t flags, uint16_t year, uint8_t month, - uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { - if (!isOpen() - || year < 1980 - || year > 2107 - || month < 1 - || month > 12 - || day < 1 - || day > 31 - || hour > 23 - || minute > 59 - || second > 59) { - return false; - } - dir_t* d = cacheDirEntry(SdVolume::CACHE_FOR_WRITE); - if (!d) return false; - - uint16_t dirDate = FAT_DATE(year, month, day); - uint16_t dirTime = FAT_TIME(hour, minute, second); - if (flags & T_ACCESS) { - d->lastAccessDate = dirDate; - } - if (flags & T_CREATE) { - d->creationDate = dirDate; - d->creationTime = dirTime; - // seems to be units of 1/100 second not 1/10 as Microsoft states - d->creationTimeTenths = second & 1 ? 100 : 0; - } - if (flags & T_WRITE) { - d->lastWriteDate = dirDate; - d->lastWriteTime = dirTime; - } - SdVolume::cacheSetDirty(); - return sync(); -} -//------------------------------------------------------------------------------ -/** - * Truncate a file to a specified length. The current file position - * will be maintained if it is less than or equal to \a length otherwise - * it will be set to end of file. - * - * \param[in] length The desired length for the file. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. - * Reasons for failure include file is read only, file is a directory, - * \a length is greater than the current file size or an I/O error occurs. - */ -uint8_t SdFile::truncate(uint32_t length) { -// error if not a normal file or read-only - if (!isFile() || !(flags_ & O_WRITE)) return false; - - // error if length is greater than current size - if (length > fileSize_) return false; - - // fileSize and length are zero - nothing to do - if (fileSize_ == 0) return true; - - // remember position for seek after truncation - uint32_t newPos = curPosition_ > length ? length : curPosition_; - - // position to last cluster in truncated file - if (!seekSet(length)) return false; - - if (length == 0) { - // free all clusters - if (!vol_->freeChain(firstCluster_)) return false; - firstCluster_ = 0; - } else { - uint32_t toFree; - if (!vol_->fatGet(curCluster_, &toFree)) return false; - - if (!vol_->isEOC(toFree)) { - // free extra clusters - if (!vol_->freeChain(toFree)) return false; - - // current cluster is end of chain - if (!vol_->fatPutEOC(curCluster_)) return false; - } - } - fileSize_ = length; - - // need to update directory entry - flags_ |= F_FILE_DIR_DIRTY; - - if (!sync()) return false; - - // set file to correct position - return seekSet(newPos); -} -//------------------------------------------------------------------------------ -/** - * Write data to an open file. - * - * \note Data is moved to the cache but may not be written to the - * storage device until sync() is called. - * - * \param[in] buf Pointer to the location of the data to be written. - * - * \param[in] nbyte Number of bytes to write. - * - * \return For success write() returns the number of bytes written, always - * \a nbyte. If an error occurs, write() returns -1. Possible errors - * include write() is called before a file has been opened, write is called - * for a read-only file, device is full, a corrupt file system or an I/O error. - * - */ -int16_t SdFile::write(const void* buf, uint16_t nbyte) { - // convert void* to uint8_t* - must be before goto statements - const uint8_t* src = reinterpret_cast(buf); - - // number of bytes left to write - must be before goto statements - uint16_t nToWrite = nbyte; - - // error if not a normal file or is read-only - if (!isFile() || !(flags_ & O_WRITE)) goto writeErrorReturn; - - // seek to end of file if append flag - if ((flags_ & O_APPEND) && curPosition_ != fileSize_) { - if (!seekEnd()) goto writeErrorReturn; - } - - while (nToWrite > 0) { - uint8_t blockOfCluster = vol_->blockOfCluster(curPosition_); - uint16_t blockOffset = curPosition_ & 0X1FF; - if (blockOfCluster == 0 && blockOffset == 0) { - // start of new cluster - if (curCluster_ == 0) { - if (firstCluster_ == 0) { - // allocate first cluster of file - if (!addCluster()) goto writeErrorReturn; - } else { - curCluster_ = firstCluster_; - } - } else { - uint32_t next; - if (!vol_->fatGet(curCluster_, &next)) return false; - if (vol_->isEOC(next)) { - // add cluster if at end of chain - if (!addCluster()) goto writeErrorReturn; - } else { - curCluster_ = next; - } - } - } - // max space in block - uint16_t n = 512 - blockOffset; - - // lesser of space and amount to write - if (n > nToWrite) n = nToWrite; - - // block for data write - uint32_t block = vol_->clusterStartBlock(curCluster_) + blockOfCluster; - if (n == 512) { - // full block - don't need to use cache - // invalidate cache if block is in cache - if (SdVolume::cacheBlockNumber_ == block) { - SdVolume::cacheBlockNumber_ = 0XFFFFFFFF; - } - if (!vol_->writeBlock(block, src)) goto writeErrorReturn; - src += 512; - } else { - if (blockOffset == 0 && curPosition_ >= fileSize_) { - // start of new block don't need to read into cache - if (!SdVolume::cacheFlush()) goto writeErrorReturn; - SdVolume::cacheBlockNumber_ = block; - SdVolume::cacheSetDirty(); - } else { - // rewrite part of block - if (!SdVolume::cacheRawBlock(block, SdVolume::CACHE_FOR_WRITE)) { - goto writeErrorReturn; - } - } - uint8_t* dst = SdVolume::cacheBuffer_.data + blockOffset; - uint8_t* end = dst + n; - while (dst != end) *dst++ = *src++; - } - nToWrite -= n; - curPosition_ += n; - } - if (curPosition_ > fileSize_) { - // update fileSize and insure sync will update dir entry - fileSize_ = curPosition_; - flags_ |= F_FILE_DIR_DIRTY; - } else if (dateTime_ && nbyte) { - // insure sync will update modified date and time - flags_ |= F_FILE_DIR_DIRTY; - } - - if (flags_ & O_SYNC) { - if (!sync()) goto writeErrorReturn; - } - return nbyte; - - writeErrorReturn: - // return for write error - writeError = true; - return -1; -} -//------------------------------------------------------------------------------ -/** - * Write a byte to a file. Required by the Arduino Print class. - * - * Use SdFile::writeError to check for errors. - */ -void SdFile::write(uint8_t b) { - write(&b, 1); -} -//------------------------------------------------------------------------------ -/** - * Write a string to a file. Used by the Arduino Print class. - * - * Use SdFile::writeError to check for errors. - */ -void SdFile::write(const char* str) { - write(str, strlen(str)); -} -//------------------------------------------------------------------------------ -/** - * Write a PROGMEM string to a file. - * - * Use SdFile::writeError to check for errors. - */ -void SdFile::write_P(PGM_P str) { - for (uint8_t c; (c = pgm_read_byte(str)); str++) write(c); -} -//------------------------------------------------------------------------------ -/** - * Write a PROGMEM string followed by CR/LF to a file. - * - * Use SdFile::writeError to check for errors. - */ -void SdFile::writeln_P(PGM_P str) { - write_P(str); - println(); -} +/* Arduino SdFat Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +#include "Marlin.h" + +#ifdef SDSUPPORT +#include "SdFile.h" +/** Create a file object and open it in the current working directory. + * + * \param[in] path A path with a valid 8.3 DOS name for a file to be opened. + * + * \param[in] oflag Values for \a oflag are constructed by a bitwise-inclusive + * OR of open flags. see SdBaseFile::open(SdBaseFile*, const char*, uint8_t). + */ +SdFile::SdFile(const char* path, uint8_t oflag) : SdBaseFile(path, oflag) { +} +//------------------------------------------------------------------------------ +/** Write data to an open file. + * + * \note Data is moved to the cache but may not be written to the + * storage device until sync() is called. + * + * \param[in] buf Pointer to the location of the data to be written. + * + * \param[in] nbyte Number of bytes to write. + * + * \return For success write() returns the number of bytes written, always + * \a nbyte. If an error occurs, write() returns -1. Possible errors + * include write() is called before a file has been opened, write is called + * for a read-only file, device is full, a corrupt file system or an I/O error. + * + */ +int16_t SdFile::write(const void* buf, uint16_t nbyte) { + return SdBaseFile::write(buf, nbyte); +} +//------------------------------------------------------------------------------ +/** Write a byte to a file. Required by the Arduino Print class. + * \param[in] b the byte to be written. + * Use writeError to check for errors. + */ +#if ARDUINO >= 100 +size_t SdFile::write(uint8_t b) +{ + return SdBaseFile::write(&b, 1); +} +#else +void SdFile::write(uint8_t b) +{ + SdBaseFile::write(&b, 1); +} +#endif +//------------------------------------------------------------------------------ +/** Write a string to a file. Used by the Arduino Print class. + * \param[in] str Pointer to the string. + * Use writeError to check for errors. + */ +void SdFile::write(const char* str) { + SdBaseFile::write(str, strlen(str)); +} +//------------------------------------------------------------------------------ +/** Write a PROGMEM string to a file. + * \param[in] str Pointer to the PROGMEM string. + * Use writeError to check for errors. + */ +void SdFile::write_P(PGM_P str) { + for (uint8_t c; (c = pgm_read_byte(str)); str++) write(c); +} +//------------------------------------------------------------------------------ +/** Write a PROGMEM string followed by CR/LF to a file. + * \param[in] str Pointer to the PROGMEM string. + * Use writeError to check for errors. + */ +void SdFile::writeln_P(PGM_P str) { + write_P(str); + write_P(PSTR("\r\n")); +} + + +#endif diff --git a/Marlin/SdFile.h b/Marlin/SdFile.h new file mode 100644 index 000000000..cbf1bbdbd --- /dev/null +++ b/Marlin/SdFile.h @@ -0,0 +1,54 @@ +/* Arduino SdFat Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +/** + * \file + * \brief SdFile class + */ +#include "Marlin.h" + +#ifdef SDSUPPORT +#include "SdBaseFile.h" +#include +#ifndef SdFile_h +#define SdFile_h +//------------------------------------------------------------------------------ +/** + * \class SdFile + * \brief SdBaseFile with Print. + */ +class SdFile : public SdBaseFile, public Print { + public: + SdFile() {} + SdFile(const char* name, uint8_t oflag); + #if ARDUINO >= 100 + size_t write(uint8_t b); + #else + void write(uint8_t b); + #endif + + int16_t write(const void* buf, uint16_t nbyte); + void write(const char* str); + void write_P(PGM_P str); + void writeln_P(PGM_P str); +}; +#endif // SdFile_h + + +#endif \ No newline at end of file diff --git a/Marlin/SdInfo.h b/Marlin/SdInfo.h index bc4c6137f..03ece1022 100644 --- a/Marlin/SdInfo.h +++ b/Marlin/SdInfo.h @@ -1,232 +1,280 @@ -/* Arduino Sd2Card Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino Sd2Card Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the Arduino Sd2Card Library. If not, see - * . - */ -#ifndef SdInfo_h -#define SdInfo_h -#include -// Based on the document: -// -// SD Specifications -// Part 1 -// Physical Layer -// Simplified Specification -// Version 2.00 -// September 25, 2006 -// -// www.sdcard.org/developers/tech/sdcard/pls/Simplified_Physical_Layer_Spec.pdf -//------------------------------------------------------------------------------ -// SD card commands -/** GO_IDLE_STATE - init card in spi mode if CS low */ -uint8_t const CMD0 = 0X00; -/** SEND_IF_COND - verify SD Memory Card interface operating condition.*/ -uint8_t const CMD8 = 0X08; -/** SEND_CSD - read the Card Specific Data (CSD register) */ -uint8_t const CMD9 = 0X09; -/** SEND_CID - read the card identification information (CID register) */ -uint8_t const CMD10 = 0X0A; -/** SEND_STATUS - read the card status register */ -uint8_t const CMD13 = 0X0D; -/** READ_BLOCK - read a single data block from the card */ -uint8_t const CMD17 = 0X11; -/** WRITE_BLOCK - write a single data block to the card */ -uint8_t const CMD24 = 0X18; -/** WRITE_MULTIPLE_BLOCK - write blocks of data until a STOP_TRANSMISSION */ -uint8_t const CMD25 = 0X19; -/** ERASE_WR_BLK_START - sets the address of the first block to be erased */ -uint8_t const CMD32 = 0X20; -/** ERASE_WR_BLK_END - sets the address of the last block of the continuous - range to be erased*/ -uint8_t const CMD33 = 0X21; -/** ERASE - erase all previously selected blocks */ -uint8_t const CMD38 = 0X26; -/** APP_CMD - escape for application specific command */ -uint8_t const CMD55 = 0X37; -/** READ_OCR - read the OCR register of a card */ -uint8_t const CMD58 = 0X3A; -/** SET_WR_BLK_ERASE_COUNT - Set the number of write blocks to be - pre-erased before writing */ -uint8_t const ACMD23 = 0X17; -/** SD_SEND_OP_COMD - Sends host capacity support information and - activates the card's initialization process */ -uint8_t const ACMD41 = 0X29; -//------------------------------------------------------------------------------ -/** status for card in the ready state */ -uint8_t const R1_READY_STATE = 0X00; -/** status for card in the idle state */ -uint8_t const R1_IDLE_STATE = 0X01; -/** status bit for illegal command */ -uint8_t const R1_ILLEGAL_COMMAND = 0X04; -/** start data token for read or write single block*/ -uint8_t const DATA_START_BLOCK = 0XFE; -/** stop token for write multiple blocks*/ -uint8_t const STOP_TRAN_TOKEN = 0XFD; -/** start data token for write multiple blocks*/ -uint8_t const WRITE_MULTIPLE_TOKEN = 0XFC; -/** mask for data response tokens after a write block operation */ -uint8_t const DATA_RES_MASK = 0X1F; -/** write data accepted token */ -uint8_t const DATA_RES_ACCEPTED = 0X05; -//------------------------------------------------------------------------------ -typedef struct CID { - // byte 0 - uint8_t mid; // Manufacturer ID - // byte 1-2 - char oid[2]; // OEM/Application ID - // byte 3-7 - char pnm[5]; // Product name - // byte 8 - unsigned prv_m : 4; // Product revision n.m - unsigned prv_n : 4; - // byte 9-12 - uint32_t psn; // Product serial number - // byte 13 - unsigned mdt_year_high : 4; // Manufacturing date - unsigned reserved : 4; - // byte 14 - unsigned mdt_month : 4; - unsigned mdt_year_low :4; - // byte 15 - unsigned always1 : 1; - unsigned crc : 7; -}cid_t; -//------------------------------------------------------------------------------ -// CSD for version 1.00 cards -typedef struct CSDV1 { - // byte 0 - unsigned reserved1 : 6; - unsigned csd_ver : 2; - // byte 1 - uint8_t taac; - // byte 2 - uint8_t nsac; - // byte 3 - uint8_t tran_speed; - // byte 4 - uint8_t ccc_high; - // byte 5 - unsigned read_bl_len : 4; - unsigned ccc_low : 4; - // byte 6 - unsigned c_size_high : 2; - unsigned reserved2 : 2; - unsigned dsr_imp : 1; - unsigned read_blk_misalign :1; - unsigned write_blk_misalign : 1; - unsigned read_bl_partial : 1; - // byte 7 - uint8_t c_size_mid; - // byte 8 - unsigned vdd_r_curr_max : 3; - unsigned vdd_r_curr_min : 3; - unsigned c_size_low :2; - // byte 9 - unsigned c_size_mult_high : 2; - unsigned vdd_w_cur_max : 3; - unsigned vdd_w_curr_min : 3; - // byte 10 - unsigned sector_size_high : 6; - unsigned erase_blk_en : 1; - unsigned c_size_mult_low : 1; - // byte 11 - unsigned wp_grp_size : 7; - unsigned sector_size_low : 1; - // byte 12 - unsigned write_bl_len_high : 2; - unsigned r2w_factor : 3; - unsigned reserved3 : 2; - unsigned wp_grp_enable : 1; - // byte 13 - unsigned reserved4 : 5; - unsigned write_partial : 1; - unsigned write_bl_len_low : 2; - // byte 14 - unsigned reserved5: 2; - unsigned file_format : 2; - unsigned tmp_write_protect : 1; - unsigned perm_write_protect : 1; - unsigned copy : 1; - unsigned file_format_grp : 1; - // byte 15 - unsigned always1 : 1; - unsigned crc : 7; -}csd1_t; -//------------------------------------------------------------------------------ -// CSD for version 2.00 cards -typedef struct CSDV2 { - // byte 0 - unsigned reserved1 : 6; - unsigned csd_ver : 2; - // byte 1 - uint8_t taac; - // byte 2 - uint8_t nsac; - // byte 3 - uint8_t tran_speed; - // byte 4 - uint8_t ccc_high; - // byte 5 - unsigned read_bl_len : 4; - unsigned ccc_low : 4; - // byte 6 - unsigned reserved2 : 4; - unsigned dsr_imp : 1; - unsigned read_blk_misalign :1; - unsigned write_blk_misalign : 1; - unsigned read_bl_partial : 1; - // byte 7 - unsigned reserved3 : 2; - unsigned c_size_high : 6; - // byte 8 - uint8_t c_size_mid; - // byte 9 - uint8_t c_size_low; - // byte 10 - unsigned sector_size_high : 6; - unsigned erase_blk_en : 1; - unsigned reserved4 : 1; - // byte 11 - unsigned wp_grp_size : 7; - unsigned sector_size_low : 1; - // byte 12 - unsigned write_bl_len_high : 2; - unsigned r2w_factor : 3; - unsigned reserved5 : 2; - unsigned wp_grp_enable : 1; - // byte 13 - unsigned reserved6 : 5; - unsigned write_partial : 1; - unsigned write_bl_len_low : 2; - // byte 14 - unsigned reserved7: 2; - unsigned file_format : 2; - unsigned tmp_write_protect : 1; - unsigned perm_write_protect : 1; - unsigned copy : 1; - unsigned file_format_grp : 1; - // byte 15 - unsigned always1 : 1; - unsigned crc : 7; -}csd2_t; -//------------------------------------------------------------------------------ -// union of old and new style CSD register -union csd_t { - csd1_t v1; - csd2_t v2; -}; -#endif // SdInfo_h +/* Arduino Sd2Card Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino Sd2Card Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino Sd2Card Library. If not, see + * . + */ +#include "Marlin.h" +#ifdef SDSUPPORT + +#ifndef SdInfo_h +#define SdInfo_h +#include +// Based on the document: +// +// SD Specifications +// Part 1 +// Physical Layer +// Simplified Specification +// Version 3.01 +// May 18, 2010 +// +// http://www.sdcard.org/developers/tech/sdcard/pls/simplified_specs +//------------------------------------------------------------------------------ +// SD card commands +/** GO_IDLE_STATE - init card in spi mode if CS low */ +uint8_t const CMD0 = 0X00; +/** SEND_IF_COND - verify SD Memory Card interface operating condition.*/ +uint8_t const CMD8 = 0X08; +/** SEND_CSD - read the Card Specific Data (CSD register) */ +uint8_t const CMD9 = 0X09; +/** SEND_CID - read the card identification information (CID register) */ +uint8_t const CMD10 = 0X0A; +/** STOP_TRANSMISSION - end multiple block read sequence */ +uint8_t const CMD12 = 0X0C; +/** SEND_STATUS - read the card status register */ +uint8_t const CMD13 = 0X0D; +/** READ_SINGLE_BLOCK - read a single data block from the card */ +uint8_t const CMD17 = 0X11; +/** READ_MULTIPLE_BLOCK - read a multiple data blocks from the card */ +uint8_t const CMD18 = 0X12; +/** WRITE_BLOCK - write a single data block to the card */ +uint8_t const CMD24 = 0X18; +/** WRITE_MULTIPLE_BLOCK - write blocks of data until a STOP_TRANSMISSION */ +uint8_t const CMD25 = 0X19; +/** ERASE_WR_BLK_START - sets the address of the first block to be erased */ +uint8_t const CMD32 = 0X20; +/** ERASE_WR_BLK_END - sets the address of the last block of the continuous + range to be erased*/ +uint8_t const CMD33 = 0X21; +/** ERASE - erase all previously selected blocks */ +uint8_t const CMD38 = 0X26; +/** APP_CMD - escape for application specific command */ +uint8_t const CMD55 = 0X37; +/** READ_OCR - read the OCR register of a card */ +uint8_t const CMD58 = 0X3A; +/** SET_WR_BLK_ERASE_COUNT - Set the number of write blocks to be + pre-erased before writing */ +uint8_t const ACMD23 = 0X17; +/** SD_SEND_OP_COMD - Sends host capacity support information and + activates the card's initialization process */ +uint8_t const ACMD41 = 0X29; +//------------------------------------------------------------------------------ +/** status for card in the ready state */ +uint8_t const R1_READY_STATE = 0X00; +/** status for card in the idle state */ +uint8_t const R1_IDLE_STATE = 0X01; +/** status bit for illegal command */ +uint8_t const R1_ILLEGAL_COMMAND = 0X04; +/** start data token for read or write single block*/ +uint8_t const DATA_START_BLOCK = 0XFE; +/** stop token for write multiple blocks*/ +uint8_t const STOP_TRAN_TOKEN = 0XFD; +/** start data token for write multiple blocks*/ +uint8_t const WRITE_MULTIPLE_TOKEN = 0XFC; +/** mask for data response tokens after a write block operation */ +uint8_t const DATA_RES_MASK = 0X1F; +/** write data accepted token */ +uint8_t const DATA_RES_ACCEPTED = 0X05; +//------------------------------------------------------------------------------ +/** Card IDentification (CID) register */ +typedef struct CID { + // byte 0 + /** Manufacturer ID */ + unsigned char mid; + // byte 1-2 + /** OEM/Application ID */ + char oid[2]; + // byte 3-7 + /** Product name */ + char pnm[5]; + // byte 8 + /** Product revision least significant digit */ + unsigned char prv_m : 4; + /** Product revision most significant digit */ + unsigned char prv_n : 4; + // byte 9-12 + /** Product serial number */ + uint32_t psn; + // byte 13 + /** Manufacturing date year low digit */ + unsigned char mdt_year_high : 4; + /** not used */ + unsigned char reserved : 4; + // byte 14 + /** Manufacturing date month */ + unsigned char mdt_month : 4; + /** Manufacturing date year low digit */ + unsigned char mdt_year_low :4; + // byte 15 + /** not used always 1 */ + unsigned char always1 : 1; + /** CRC7 checksum */ + unsigned char crc : 7; +}cid_t; +//------------------------------------------------------------------------------ +/** CSD for version 1.00 cards */ +typedef struct CSDV1 { + // byte 0 + unsigned char reserved1 : 6; + unsigned char csd_ver : 2; + // byte 1 + unsigned char taac; + // byte 2 + unsigned char nsac; + // byte 3 + unsigned char tran_speed; + // byte 4 + unsigned char ccc_high; + // byte 5 + unsigned char read_bl_len : 4; + unsigned char ccc_low : 4; + // byte 6 + unsigned char c_size_high : 2; + unsigned char reserved2 : 2; + unsigned char dsr_imp : 1; + unsigned char read_blk_misalign :1; + unsigned char write_blk_misalign : 1; + unsigned char read_bl_partial : 1; + // byte 7 + unsigned char c_size_mid; + // byte 8 + unsigned char vdd_r_curr_max : 3; + unsigned char vdd_r_curr_min : 3; + unsigned char c_size_low :2; + // byte 9 + unsigned char c_size_mult_high : 2; + unsigned char vdd_w_cur_max : 3; + unsigned char vdd_w_curr_min : 3; + // byte 10 + unsigned char sector_size_high : 6; + unsigned char erase_blk_en : 1; + unsigned char c_size_mult_low : 1; + // byte 11 + unsigned char wp_grp_size : 7; + unsigned char sector_size_low : 1; + // byte 12 + unsigned char write_bl_len_high : 2; + unsigned char r2w_factor : 3; + unsigned char reserved3 : 2; + unsigned char wp_grp_enable : 1; + // byte 13 + unsigned char reserved4 : 5; + unsigned char write_partial : 1; + unsigned char write_bl_len_low : 2; + // byte 14 + unsigned char reserved5: 2; + unsigned char file_format : 2; + unsigned char tmp_write_protect : 1; + unsigned char perm_write_protect : 1; + unsigned char copy : 1; + /** Indicates the file format on the card */ + unsigned char file_format_grp : 1; + // byte 15 + unsigned char always1 : 1; + unsigned char crc : 7; +}csd1_t; +//------------------------------------------------------------------------------ +/** CSD for version 2.00 cards */ +typedef struct CSDV2 { + // byte 0 + unsigned char reserved1 : 6; + unsigned char csd_ver : 2; + // byte 1 + /** fixed to 0X0E */ + unsigned char taac; + // byte 2 + /** fixed to 0 */ + unsigned char nsac; + // byte 3 + unsigned char tran_speed; + // byte 4 + unsigned char ccc_high; + // byte 5 + /** This field is fixed to 9h, which indicates READ_BL_LEN=512 Byte */ + unsigned char read_bl_len : 4; + unsigned char ccc_low : 4; + // byte 6 + /** not used */ + unsigned char reserved2 : 4; + unsigned char dsr_imp : 1; + /** fixed to 0 */ + unsigned char read_blk_misalign :1; + /** fixed to 0 */ + unsigned char write_blk_misalign : 1; + /** fixed to 0 - no partial read */ + unsigned char read_bl_partial : 1; + // byte 7 + /** not used */ + unsigned char reserved3 : 2; + /** high part of card size */ + unsigned char c_size_high : 6; + // byte 8 + /** middle part of card size */ + unsigned char c_size_mid; + // byte 9 + /** low part of card size */ + unsigned char c_size_low; + // byte 10 + /** sector size is fixed at 64 KB */ + unsigned char sector_size_high : 6; + /** fixed to 1 - erase single is supported */ + unsigned char erase_blk_en : 1; + /** not used */ + unsigned char reserved4 : 1; + // byte 11 + unsigned char wp_grp_size : 7; + /** sector size is fixed at 64 KB */ + unsigned char sector_size_low : 1; + // byte 12 + /** write_bl_len fixed for 512 byte blocks */ + unsigned char write_bl_len_high : 2; + /** fixed value of 2 */ + unsigned char r2w_factor : 3; + /** not used */ + unsigned char reserved5 : 2; + /** fixed value of 0 - no write protect groups */ + unsigned char wp_grp_enable : 1; + // byte 13 + unsigned char reserved6 : 5; + /** always zero - no partial block read*/ + unsigned char write_partial : 1; + /** write_bl_len fixed for 512 byte blocks */ + unsigned char write_bl_len_low : 2; + // byte 14 + unsigned char reserved7: 2; + /** Do not use always 0 */ + unsigned char file_format : 2; + unsigned char tmp_write_protect : 1; + unsigned char perm_write_protect : 1; + unsigned char copy : 1; + /** Do not use always 0 */ + unsigned char file_format_grp : 1; + // byte 15 + /** not used always 1 */ + unsigned char always1 : 1; + /** checksum */ + unsigned char crc : 7; +}csd2_t; +//------------------------------------------------------------------------------ +/** union of old and new style CSD register */ +union csd_t { + csd1_t v1; + csd2_t v2; +}; +#endif // SdInfo_h + +#endif \ No newline at end of file diff --git a/Marlin/SdVolume.cpp b/Marlin/SdVolume.cpp index 3c1e641c7..f14d7bc70 100644 --- a/Marlin/SdVolume.cpp +++ b/Marlin/SdVolume.cpp @@ -1,295 +1,405 @@ -/* Arduino SdFat Library - * Copyright (C) 2009 by William Greiman - * - * This file is part of the Arduino SdFat Library - * - * This Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with the Arduino SdFat Library. If not, see - * . - */ -#include "SdFat.h" -//------------------------------------------------------------------------------ -// raw block cache -// init cacheBlockNumber_to invalid SD block number -uint32_t SdVolume::cacheBlockNumber_ = 0XFFFFFFFF; -cache_t SdVolume::cacheBuffer_; // 512 byte cache for Sd2Card -Sd2Card* SdVolume::sdCard_; // pointer to SD card object -uint8_t SdVolume::cacheDirty_ = 0; // cacheFlush() will write block if true -uint32_t SdVolume::cacheMirrorBlock_ = 0; // mirror block for second FAT -//------------------------------------------------------------------------------ -// find a contiguous group of clusters -uint8_t SdVolume::allocContiguous(uint32_t count, uint32_t* curCluster) { - // start of group - uint32_t bgnCluster; - - // flag to save place to start next search - uint8_t setStart; - - // set search start cluster - if (*curCluster) { - // try to make file contiguous - bgnCluster = *curCluster + 1; - - // don't save new start location - setStart = false; - } else { - // start at likely place for free cluster - bgnCluster = allocSearchStart_; - - // save next search start if one cluster - setStart = 1 == count; - } - // end of group - uint32_t endCluster = bgnCluster; - - // last cluster of FAT - uint32_t fatEnd = clusterCount_ + 1; - - // search the FAT for free clusters - for (uint32_t n = 0;; n++, endCluster++) { - // can't find space checked all clusters - if (n >= clusterCount_) return false; - - // past end - start from beginning of FAT - if (endCluster > fatEnd) { - bgnCluster = endCluster = 2; - } - uint32_t f; - if (!fatGet(endCluster, &f)) return false; - - if (f != 0) { - // cluster in use try next cluster as bgnCluster - bgnCluster = endCluster + 1; - } else if ((endCluster - bgnCluster + 1) == count) { - // done - found space - break; - } - } - // mark end of chain - if (!fatPutEOC(endCluster)) return false; - - // link clusters - while (endCluster > bgnCluster) { - if (!fatPut(endCluster - 1, endCluster)) return false; - endCluster--; - } - if (*curCluster != 0) { - // connect chains - if (!fatPut(*curCluster, bgnCluster)) return false; - } - // return first cluster number to caller - *curCluster = bgnCluster; - - // remember possible next free cluster - if (setStart) allocSearchStart_ = bgnCluster + 1; - - return true; -} -//------------------------------------------------------------------------------ -uint8_t SdVolume::cacheFlush(void) { - if (cacheDirty_) { - if (!sdCard_->writeBlock(cacheBlockNumber_, cacheBuffer_.data)) { - return false; - } - // mirror FAT tables - if (cacheMirrorBlock_) { - if (!sdCard_->writeBlock(cacheMirrorBlock_, cacheBuffer_.data)) { - return false; - } - cacheMirrorBlock_ = 0; - } - cacheDirty_ = 0; - } - return true; -} -//------------------------------------------------------------------------------ -uint8_t SdVolume::cacheRawBlock(uint32_t blockNumber, uint8_t action) { - if (cacheBlockNumber_ != blockNumber) { - if (!cacheFlush()) return false; - if (!sdCard_->readBlock(blockNumber, cacheBuffer_.data)) return false; - cacheBlockNumber_ = blockNumber; - } - cacheDirty_ |= action; - return true; -} -//------------------------------------------------------------------------------ -// cache a zero block for blockNumber -uint8_t SdVolume::cacheZeroBlock(uint32_t blockNumber) { - if (!cacheFlush()) return false; - - // loop take less flash than memset(cacheBuffer_.data, 0, 512); - for (uint16_t i = 0; i < 512; i++) { - cacheBuffer_.data[i] = 0; - } - cacheBlockNumber_ = blockNumber; - cacheSetDirty(); - return true; -} -//------------------------------------------------------------------------------ -// return the size in bytes of a cluster chain -uint8_t SdVolume::chainSize(uint32_t cluster, uint32_t* size) const { - uint32_t s = 0; - do { - if (!fatGet(cluster, &cluster)) return false; - s += 512UL << clusterSizeShift_; - } while (!isEOC(cluster)); - *size = s; - return true; -} -//------------------------------------------------------------------------------ -// Fetch a FAT entry -uint8_t SdVolume::fatGet(uint32_t cluster, uint32_t* value) const { - if (cluster > (clusterCount_ + 1)) return false; - uint32_t lba = fatStartBlock_; - lba += fatType_ == 16 ? cluster >> 8 : cluster >> 7; - if (lba != cacheBlockNumber_) { - if (!cacheRawBlock(lba, CACHE_FOR_READ)) return false; - } - if (fatType_ == 16) { - *value = cacheBuffer_.fat16[cluster & 0XFF]; - } else { - *value = cacheBuffer_.fat32[cluster & 0X7F] & FAT32MASK; - } - return true; -} -//------------------------------------------------------------------------------ -// Store a FAT entry -uint8_t SdVolume::fatPut(uint32_t cluster, uint32_t value) { - // error if reserved cluster - if (cluster < 2) return false; - - // error if not in FAT - if (cluster > (clusterCount_ + 1)) return false; - - // calculate block address for entry - uint32_t lba = fatStartBlock_; - lba += fatType_ == 16 ? cluster >> 8 : cluster >> 7; - - if (lba != cacheBlockNumber_) { - if (!cacheRawBlock(lba, CACHE_FOR_READ)) return false; - } - // store entry - if (fatType_ == 16) { - cacheBuffer_.fat16[cluster & 0XFF] = value; - } else { - cacheBuffer_.fat32[cluster & 0X7F] = value; - } - cacheSetDirty(); - - // mirror second FAT - if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_; - return true; -} -//------------------------------------------------------------------------------ -// free a cluster chain -uint8_t SdVolume::freeChain(uint32_t cluster) { - // clear free cluster location - allocSearchStart_ = 2; - - do { - uint32_t next; - if (!fatGet(cluster, &next)) return false; - - // free cluster - if (!fatPut(cluster, 0)) return false; - - cluster = next; - } while (!isEOC(cluster)); - - return true; -} -//------------------------------------------------------------------------------ -/** - * Initialize a FAT volume. - * - * \param[in] dev The SD card where the volume is located. - * - * \param[in] part The partition to be used. Legal values for \a part are - * 1-4 to use the corresponding partition on a device formatted with - * a MBR, Master Boot Record, or zero if the device is formatted as - * a super floppy with the FAT boot sector in block zero. - * - * \return The value one, true, is returned for success and - * the value zero, false, is returned for failure. Reasons for - * failure include not finding a valid partition, not finding a valid - * FAT file system in the specified partition or an I/O error. - */ -uint8_t SdVolume::init(Sd2Card* dev, uint8_t part) { - uint32_t volumeStartBlock = 0; - sdCard_ = dev; - // if part == 0 assume super floppy with FAT boot sector in block zero - // if part > 0 assume mbr volume with partition table - if (part) { - if (part > 4)return false; - if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) return false; - part_t* p = &cacheBuffer_.mbr.part[part-1]; - if ((p->boot & 0X7F) !=0 || - p->totalSectors < 100 || - p->firstSector == 0) { - // not a valid partition - return false; - } - volumeStartBlock = p->firstSector; - } - if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) return false; - bpb_t* bpb = &cacheBuffer_.fbs.bpb; - if (bpb->bytesPerSector != 512 || - bpb->fatCount == 0 || - bpb->reservedSectorCount == 0 || - bpb->sectorsPerCluster == 0) { - // not valid FAT volume - return false; - } - fatCount_ = bpb->fatCount; - blocksPerCluster_ = bpb->sectorsPerCluster; - - // determine shift that is same as multiply by blocksPerCluster_ - clusterSizeShift_ = 0; - while (blocksPerCluster_ != (1 << clusterSizeShift_)) { - // error if not power of 2 - if (clusterSizeShift_++ > 7) return false; - } - blocksPerFat_ = bpb->sectorsPerFat16 ? - bpb->sectorsPerFat16 : bpb->sectorsPerFat32; - - fatStartBlock_ = volumeStartBlock + bpb->reservedSectorCount; - - // count for FAT16 zero for FAT32 - rootDirEntryCount_ = bpb->rootDirEntryCount; - - // directory start for FAT16 dataStart for FAT32 - rootDirStart_ = fatStartBlock_ + bpb->fatCount * blocksPerFat_; - - // data start for FAT16 and FAT32 - dataStartBlock_ = rootDirStart_ + ((32 * bpb->rootDirEntryCount + 511)/512); - - // total blocks for FAT16 or FAT32 - uint32_t totalBlocks = bpb->totalSectors16 ? - bpb->totalSectors16 : bpb->totalSectors32; - // total data blocks - clusterCount_ = totalBlocks - (dataStartBlock_ - volumeStartBlock); - - // divide by cluster size to get cluster count - clusterCount_ >>= clusterSizeShift_; - - // FAT type is determined by cluster count - if (clusterCount_ < 4085) { - fatType_ = 12; - } else if (clusterCount_ < 65525) { - fatType_ = 16; - } else { - rootDirStart_ = bpb->fat32RootCluster; - fatType_ = 32; - } - return true; -} +/* Arduino SdFat Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +#include "Marlin.h" +#ifdef SDSUPPORT + +#include "SdVolume.h" +//------------------------------------------------------------------------------ +#if !USE_MULTIPLE_CARDS +// raw block cache +uint32_t SdVolume::cacheBlockNumber_; // current block number +cache_t SdVolume::cacheBuffer_; // 512 byte cache for Sd2Card +Sd2Card* SdVolume::sdCard_; // pointer to SD card object +bool SdVolume::cacheDirty_; // cacheFlush() will write block if true +uint32_t SdVolume::cacheMirrorBlock_; // mirror block for second FAT +#endif // USE_MULTIPLE_CARDS +//------------------------------------------------------------------------------ +// find a contiguous group of clusters +bool SdVolume::allocContiguous(uint32_t count, uint32_t* curCluster) { + // start of group + uint32_t bgnCluster; + // end of group + uint32_t endCluster; + // last cluster of FAT + uint32_t fatEnd = clusterCount_ + 1; + + // flag to save place to start next search + bool setStart; + + // set search start cluster + if (*curCluster) { + // try to make file contiguous + bgnCluster = *curCluster + 1; + + // don't save new start location + setStart = false; + } else { + // start at likely place for free cluster + bgnCluster = allocSearchStart_; + + // save next search start if one cluster + setStart = count == 1; + } + // end of group + endCluster = bgnCluster; + + // search the FAT for free clusters + for (uint32_t n = 0;; n++, endCluster++) { + // can't find space checked all clusters + if (n >= clusterCount_) goto fail; + + // past end - start from beginning of FAT + if (endCluster > fatEnd) { + bgnCluster = endCluster = 2; + } + uint32_t f; + if (!fatGet(endCluster, &f)) goto fail; + + if (f != 0) { + // cluster in use try next cluster as bgnCluster + bgnCluster = endCluster + 1; + } else if ((endCluster - bgnCluster + 1) == count) { + // done - found space + break; + } + } + // mark end of chain + if (!fatPutEOC(endCluster)) goto fail; + + // link clusters + while (endCluster > bgnCluster) { + if (!fatPut(endCluster - 1, endCluster)) goto fail; + endCluster--; + } + if (*curCluster != 0) { + // connect chains + if (!fatPut(*curCluster, bgnCluster)) goto fail; + } + // return first cluster number to caller + *curCluster = bgnCluster; + + // remember possible next free cluster + if (setStart) allocSearchStart_ = bgnCluster + 1; + + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +bool SdVolume::cacheFlush() { + if (cacheDirty_) { + if (!sdCard_->writeBlock(cacheBlockNumber_, cacheBuffer_.data)) { + goto fail; + } + // mirror FAT tables + if (cacheMirrorBlock_) { + if (!sdCard_->writeBlock(cacheMirrorBlock_, cacheBuffer_.data)) { + goto fail; + } + cacheMirrorBlock_ = 0; + } + cacheDirty_ = 0; + } + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +bool SdVolume::cacheRawBlock(uint32_t blockNumber, bool dirty) { + if (cacheBlockNumber_ != blockNumber) { + if (!cacheFlush()) goto fail; + if (!sdCard_->readBlock(blockNumber, cacheBuffer_.data)) goto fail; + cacheBlockNumber_ = blockNumber; + } + if (dirty) cacheDirty_ = true; + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +// return the size in bytes of a cluster chain +bool SdVolume::chainSize(uint32_t cluster, uint32_t* size) { + uint32_t s = 0; + do { + if (!fatGet(cluster, &cluster)) goto fail; + s += 512UL << clusterSizeShift_; + } while (!isEOC(cluster)); + *size = s; + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +// Fetch a FAT entry +bool SdVolume::fatGet(uint32_t cluster, uint32_t* value) { + uint32_t lba; + if (cluster > (clusterCount_ + 1)) goto fail; + if (FAT12_SUPPORT && fatType_ == 12) { + uint16_t index = cluster; + index += index >> 1; + lba = fatStartBlock_ + (index >> 9); + if (!cacheRawBlock(lba, CACHE_FOR_READ)) goto fail; + index &= 0X1FF; + uint16_t tmp = cacheBuffer_.data[index]; + index++; + if (index == 512) { + if (!cacheRawBlock(lba + 1, CACHE_FOR_READ)) goto fail; + index = 0; + } + tmp |= cacheBuffer_.data[index] << 8; + *value = cluster & 1 ? tmp >> 4 : tmp & 0XFFF; + return true; + } + if (fatType_ == 16) { + lba = fatStartBlock_ + (cluster >> 8); + } else if (fatType_ == 32) { + lba = fatStartBlock_ + (cluster >> 7); + } else { + goto fail; + } + if (lba != cacheBlockNumber_) { + if (!cacheRawBlock(lba, CACHE_FOR_READ)) goto fail; + } + if (fatType_ == 16) { + *value = cacheBuffer_.fat16[cluster & 0XFF]; + } else { + *value = cacheBuffer_.fat32[cluster & 0X7F] & FAT32MASK; + } + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +// Store a FAT entry +bool SdVolume::fatPut(uint32_t cluster, uint32_t value) { + uint32_t lba; + // error if reserved cluster + if (cluster < 2) goto fail; + + // error if not in FAT + if (cluster > (clusterCount_ + 1)) goto fail; + + if (FAT12_SUPPORT && fatType_ == 12) { + uint16_t index = cluster; + index += index >> 1; + lba = fatStartBlock_ + (index >> 9); + if (!cacheRawBlock(lba, CACHE_FOR_WRITE)) goto fail; + // mirror second FAT + if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_; + index &= 0X1FF; + uint8_t tmp = value; + if (cluster & 1) { + tmp = (cacheBuffer_.data[index] & 0XF) | tmp << 4; + } + cacheBuffer_.data[index] = tmp; + index++; + if (index == 512) { + lba++; + index = 0; + if (!cacheRawBlock(lba, CACHE_FOR_WRITE)) goto fail; + // mirror second FAT + if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_; + } + tmp = value >> 4; + if (!(cluster & 1)) { + tmp = ((cacheBuffer_.data[index] & 0XF0)) | tmp >> 4; + } + cacheBuffer_.data[index] = tmp; + return true; + } + if (fatType_ == 16) { + lba = fatStartBlock_ + (cluster >> 8); + } else if (fatType_ == 32) { + lba = fatStartBlock_ + (cluster >> 7); + } else { + goto fail; + } + if (!cacheRawBlock(lba, CACHE_FOR_WRITE)) goto fail; + // store entry + if (fatType_ == 16) { + cacheBuffer_.fat16[cluster & 0XFF] = value; + } else { + cacheBuffer_.fat32[cluster & 0X7F] = value; + } + // mirror second FAT + if (fatCount_ > 1) cacheMirrorBlock_ = lba + blocksPerFat_; + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +// free a cluster chain +bool SdVolume::freeChain(uint32_t cluster) { + uint32_t next; + + // clear free cluster location + allocSearchStart_ = 2; + + do { + if (!fatGet(cluster, &next)) goto fail; + + // free cluster + if (!fatPut(cluster, 0)) goto fail; + + cluster = next; + } while (!isEOC(cluster)); + + return true; + + fail: + return false; +} +//------------------------------------------------------------------------------ +/** Volume free space in clusters. + * + * \return Count of free clusters for success or -1 if an error occurs. + */ +int32_t SdVolume::freeClusterCount() { + uint32_t free = 0; + uint16_t n; + uint32_t todo = clusterCount_ + 2; + + if (fatType_ == 16) { + n = 256; + } else if (fatType_ == 32) { + n = 128; + } else { + // put FAT12 here + return -1; + } + + for (uint32_t lba = fatStartBlock_; todo; todo -= n, lba++) { + if (!cacheRawBlock(lba, CACHE_FOR_READ)) return -1; + if (todo < n) n = todo; + if (fatType_ == 16) { + for (uint16_t i = 0; i < n; i++) { + if (cacheBuffer_.fat16[i] == 0) free++; + } + } else { + for (uint16_t i = 0; i < n; i++) { + if (cacheBuffer_.fat32[i] == 0) free++; + } + } + } + return free; +} +//------------------------------------------------------------------------------ +/** Initialize a FAT volume. + * + * \param[in] dev The SD card where the volume is located. + * + * \param[in] part The partition to be used. Legal values for \a part are + * 1-4 to use the corresponding partition on a device formatted with + * a MBR, Master Boot Record, or zero if the device is formatted as + * a super floppy with the FAT boot sector in block zero. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. Reasons for + * failure include not finding a valid partition, not finding a valid + * FAT file system in the specified partition or an I/O error. + */ +bool SdVolume::init(Sd2Card* dev, uint8_t part) { + uint32_t totalBlocks; + uint32_t volumeStartBlock = 0; + fat32_boot_t* fbs; + + sdCard_ = dev; + fatType_ = 0; + allocSearchStart_ = 2; + cacheDirty_ = 0; // cacheFlush() will write block if true + cacheMirrorBlock_ = 0; + cacheBlockNumber_ = 0XFFFFFFFF; + + // if part == 0 assume super floppy with FAT boot sector in block zero + // if part > 0 assume mbr volume with partition table + if (part) { + if (part > 4)goto fail; + if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) goto fail; + part_t* p = &cacheBuffer_.mbr.part[part-1]; + if ((p->boot & 0X7F) !=0 || + p->totalSectors < 100 || + p->firstSector == 0) { + // not a valid partition + goto fail; + } + volumeStartBlock = p->firstSector; + } + if (!cacheRawBlock(volumeStartBlock, CACHE_FOR_READ)) goto fail; + fbs = &cacheBuffer_.fbs32; + if (fbs->bytesPerSector != 512 || + fbs->fatCount == 0 || + fbs->reservedSectorCount == 0 || + fbs->sectorsPerCluster == 0) { + // not valid FAT volume + goto fail; + } + fatCount_ = fbs->fatCount; + blocksPerCluster_ = fbs->sectorsPerCluster; + // determine shift that is same as multiply by blocksPerCluster_ + clusterSizeShift_ = 0; + while (blocksPerCluster_ != (1 << clusterSizeShift_)) { + // error if not power of 2 + if (clusterSizeShift_++ > 7) goto fail; + } + blocksPerFat_ = fbs->sectorsPerFat16 ? + fbs->sectorsPerFat16 : fbs->sectorsPerFat32; + + fatStartBlock_ = volumeStartBlock + fbs->reservedSectorCount; + + // count for FAT16 zero for FAT32 + rootDirEntryCount_ = fbs->rootDirEntryCount; + + // directory start for FAT16 dataStart for FAT32 + rootDirStart_ = fatStartBlock_ + fbs->fatCount * blocksPerFat_; + + // data start for FAT16 and FAT32 + dataStartBlock_ = rootDirStart_ + ((32 * fbs->rootDirEntryCount + 511)/512); + + // total blocks for FAT16 or FAT32 + totalBlocks = fbs->totalSectors16 ? + fbs->totalSectors16 : fbs->totalSectors32; + // total data blocks + clusterCount_ = totalBlocks - (dataStartBlock_ - volumeStartBlock); + + // divide by cluster size to get cluster count + clusterCount_ >>= clusterSizeShift_; + + // FAT type is determined by cluster count + if (clusterCount_ < 4085) { + fatType_ = 12; + if (!FAT12_SUPPORT) goto fail; + } else if (clusterCount_ < 65525) { + fatType_ = 16; + } else { + rootDirStart_ = fbs->fat32RootCluster; + fatType_ = 32; + } + return true; + + fail: + return false; +} +#endif \ No newline at end of file diff --git a/Marlin/SdVolume.h b/Marlin/SdVolume.h new file mode 100644 index 000000000..2ff2b6eb9 --- /dev/null +++ b/Marlin/SdVolume.h @@ -0,0 +1,214 @@ +/* Arduino SdFat Library + * Copyright (C) 2009 by William Greiman + * + * This file is part of the Arduino SdFat Library + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino SdFat Library. If not, see + * . + */ +#include "Marlin.h" +#ifdef SDSUPPORT +#ifndef SdVolume_h +#define SdVolume_h +/** + * \file + * \brief SdVolume class + */ +#include "SdFatConfig.h" +#include "Sd2Card.h" +#include "SdFatStructs.h" + +//============================================================================== +// SdVolume class +/** + * \brief Cache for an SD data block + */ +union cache_t { + /** Used to access cached file data blocks. */ + uint8_t data[512]; + /** Used to access cached FAT16 entries. */ + uint16_t fat16[256]; + /** Used to access cached FAT32 entries. */ + uint32_t fat32[128]; + /** Used to access cached directory entries. */ + dir_t dir[16]; + /** Used to access a cached Master Boot Record. */ + mbr_t mbr; + /** Used to access to a cached FAT boot sector. */ + fat_boot_t fbs; + /** Used to access to a cached FAT32 boot sector. */ + fat32_boot_t fbs32; + /** Used to access to a cached FAT32 FSINFO sector. */ + fat32_fsinfo_t fsinfo; +}; +//------------------------------------------------------------------------------ +/** + * \class SdVolume + * \brief Access FAT16 and FAT32 volumes on SD and SDHC cards. + */ +class SdVolume { + public: + /** Create an instance of SdVolume */ + SdVolume() : fatType_(0) {} + /** Clear the cache and returns a pointer to the cache. Used by the WaveRP + * recorder to do raw write to the SD card. Not for normal apps. + * \return A pointer to the cache buffer or zero if an error occurs. + */ + cache_t* cacheClear() { + if (!cacheFlush()) return 0; + cacheBlockNumber_ = 0XFFFFFFFF; + return &cacheBuffer_; + } + /** Initialize a FAT volume. Try partition one first then try super + * floppy format. + * + * \param[in] dev The Sd2Card where the volume is located. + * + * \return The value one, true, is returned for success and + * the value zero, false, is returned for failure. Reasons for + * failure include not finding a valid partition, not finding a valid + * FAT file system or an I/O error. + */ + bool init(Sd2Card* dev) { return init(dev, 1) ? true : init(dev, 0);} + bool init(Sd2Card* dev, uint8_t part); + + // inline functions that return volume info + /** \return The volume's cluster size in blocks. */ + uint8_t blocksPerCluster() const {return blocksPerCluster_;} + /** \return The number of blocks in one FAT. */ + uint32_t blocksPerFat() const {return blocksPerFat_;} + /** \return The total number of clusters in the volume. */ + uint32_t clusterCount() const {return clusterCount_;} + /** \return The shift count required to multiply by blocksPerCluster. */ + uint8_t clusterSizeShift() const {return clusterSizeShift_;} + /** \return The logical block number for the start of file data. */ + uint32_t dataStartBlock() const {return dataStartBlock_;} + /** \return The number of FAT structures on the volume. */ + uint8_t fatCount() const {return fatCount_;} + /** \return The logical block number for the start of the first FAT. */ + uint32_t fatStartBlock() const {return fatStartBlock_;} + /** \return The FAT type of the volume. Values are 12, 16 or 32. */ + uint8_t fatType() const {return fatType_;} + int32_t freeClusterCount(); + /** \return The number of entries in the root directory for FAT16 volumes. */ + uint32_t rootDirEntryCount() const {return rootDirEntryCount_;} + /** \return The logical block number for the start of the root directory + on FAT16 volumes or the first cluster number on FAT32 volumes. */ + uint32_t rootDirStart() const {return rootDirStart_;} + /** Sd2Card object for this volume + * \return pointer to Sd2Card object. + */ + Sd2Card* sdCard() {return sdCard_;} + /** Debug access to FAT table + * + * \param[in] n cluster number. + * \param[out] v value of entry + * \return true for success or false for failure + */ + bool dbgFat(uint32_t n, uint32_t* v) {return fatGet(n, v);} +//------------------------------------------------------------------------------ + private: + // Allow SdBaseFile access to SdVolume private data. + friend class SdBaseFile; + + // value for dirty argument in cacheRawBlock to indicate read from cache + static bool const CACHE_FOR_READ = false; + // value for dirty argument in cacheRawBlock to indicate write to cache + static bool const CACHE_FOR_WRITE = true; + +#if USE_MULTIPLE_CARDS + cache_t cacheBuffer_; // 512 byte cache for device blocks + uint32_t cacheBlockNumber_; // Logical number of block in the cache + Sd2Card* sdCard_; // Sd2Card object for cache + bool cacheDirty_; // cacheFlush() will write block if true + uint32_t cacheMirrorBlock_; // block number for mirror FAT +#else // USE_MULTIPLE_CARDS + static cache_t cacheBuffer_; // 512 byte cache for device blocks + static uint32_t cacheBlockNumber_; // Logical number of block in the cache + static Sd2Card* sdCard_; // Sd2Card object for cache + static bool cacheDirty_; // cacheFlush() will write block if true + static uint32_t cacheMirrorBlock_; // block number for mirror FAT +#endif // USE_MULTIPLE_CARDS + uint32_t allocSearchStart_; // start cluster for alloc search + uint8_t blocksPerCluster_; // cluster size in blocks + uint32_t blocksPerFat_; // FAT size in blocks + uint32_t clusterCount_; // clusters in one FAT + uint8_t clusterSizeShift_; // shift to convert cluster count to block count + uint32_t dataStartBlock_; // first data block number + uint8_t fatCount_; // number of FATs on volume + uint32_t fatStartBlock_; // start block for first FAT + uint8_t fatType_; // volume type (12, 16, OR 32) + uint16_t rootDirEntryCount_; // number of entries in FAT16 root dir + uint32_t rootDirStart_; // root start block for FAT16, cluster for FAT32 + //---------------------------------------------------------------------------- + bool allocContiguous(uint32_t count, uint32_t* curCluster); + uint8_t blockOfCluster(uint32_t position) const { + return (position >> 9) & (blocksPerCluster_ - 1);} + uint32_t clusterStartBlock(uint32_t cluster) const { + return dataStartBlock_ + ((cluster - 2) << clusterSizeShift_);} + uint32_t blockNumber(uint32_t cluster, uint32_t position) const { + return clusterStartBlock(cluster) + blockOfCluster(position);} + cache_t *cache() {return &cacheBuffer_;} + uint32_t cacheBlockNumber() {return cacheBlockNumber_;} +#if USE_MULTIPLE_CARDS + bool cacheFlush(); + bool cacheRawBlock(uint32_t blockNumber, bool dirty); +#else // USE_MULTIPLE_CARDS + static bool cacheFlush(); + static bool cacheRawBlock(uint32_t blockNumber, bool dirty); +#endif // USE_MULTIPLE_CARDS + // used by SdBaseFile write to assign cache to SD location + void cacheSetBlockNumber(uint32_t blockNumber, bool dirty) { + cacheDirty_ = dirty; + cacheBlockNumber_ = blockNumber; + } + void cacheSetDirty() {cacheDirty_ |= CACHE_FOR_WRITE;} + bool chainSize(uint32_t beginCluster, uint32_t* size); + bool fatGet(uint32_t cluster, uint32_t* value); + bool fatPut(uint32_t cluster, uint32_t value); + bool fatPutEOC(uint32_t cluster) { + return fatPut(cluster, 0x0FFFFFFF); + } + bool freeChain(uint32_t cluster); + bool isEOC(uint32_t cluster) const { + if (FAT12_SUPPORT && fatType_ == 12) return cluster >= FAT12EOC_MIN; + if (fatType_ == 16) return cluster >= FAT16EOC_MIN; + return cluster >= FAT32EOC_MIN; + } + bool readBlock(uint32_t block, uint8_t* dst) { + return sdCard_->readBlock(block, dst);} + bool writeBlock(uint32_t block, const uint8_t* dst) { + return sdCard_->writeBlock(block, dst); + } +//------------------------------------------------------------------------------ + // Deprecated functions - suppress cpplint warnings with NOLINT comment +#if ALLOW_DEPRECATED_FUNCTIONS && !defined(DOXYGEN) + public: + /** \deprecated Use: bool SdVolume::init(Sd2Card* dev); + * \param[in] dev The SD card where the volume is located. + * \return true for success or false for failure. + */ + bool init(Sd2Card& dev) {return init(&dev);} // NOLINT + /** \deprecated Use: bool SdVolume::init(Sd2Card* dev, uint8_t vol); + * \param[in] dev The SD card where the volume is located. + * \param[in] part The partition to be used. + * \return true for success or false for failure. + */ + bool init(Sd2Card& dev, uint8_t part) { // NOLINT + return init(&dev, part); + } +#endif // ALLOW_DEPRECATED_FUNCTIONS +}; +#endif // SdVolume +#endif \ No newline at end of file diff --git a/Marlin/Servo.cpp b/Marlin/Servo.cpp new file mode 100644 index 000000000..27a7d3cf3 --- /dev/null +++ b/Marlin/Servo.cpp @@ -0,0 +1,304 @@ +/* + Servo.cpp - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2 + Copyright (c) 2009 Michael Margolis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + + A servo is activated by creating an instance of the Servo class passing the desired pin to the attach() method. + The servos are pulsed in the background using the value most recently written using the write() method + + Note that analogWrite of PWM on pins associated with the timer are disabled when the first servo is attached. + Timers are seized as needed in groups of 12 servos - 24 servos use two timers, 48 servos will use four. + + The methods are: + + Servo - Class for manipulating servo motors connected to Arduino pins. + + attach(pin ) - Attaches a servo motor to an i/o pin. + attach(pin, min, max ) - Attaches to a pin setting min and max values in microseconds + default min is 544, max is 2400 + + write() - Sets the servo angle in degrees. (invalid angle that is valid as pulse in microseconds is treated as microseconds) + writeMicroseconds() - Sets the servo pulse width in microseconds + read() - Gets the last written servo pulse width as an angle between 0 and 180. + readMicroseconds() - Gets the last written servo pulse width in microseconds. (was read_us() in first release) + attached() - Returns true if there is a servo attached. + detach() - Stops an attached servos from pulsing its i/o pin. + +*/ +#include "Configuration.h" + +#ifdef NUM_SERVOS + +#include +#include + +#include "Servo.h" + +#define usToTicks(_us) (( clockCyclesPerMicrosecond()* _us) / 8) // converts microseconds to tick (assumes prescale of 8) // 12 Aug 2009 +#define ticksToUs(_ticks) (( (unsigned)_ticks * 8)/ clockCyclesPerMicrosecond() ) // converts from ticks back to microseconds + +#define TRIM_DURATION 2 // compensation ticks to trim adjust for digitalWrite delays // 12 August 2009 + +//#define NBR_TIMERS (MAX_SERVOS / SERVOS_PER_TIMER) + +static servo_t servos[MAX_SERVOS]; // static array of servo structures +static volatile int8_t Channel[_Nbr_16timers ]; // counter for the servo being pulsed for each timer (or -1 if refresh interval) + +uint8_t ServoCount = 0; // the total number of attached servos + + +// convenience macros +#define SERVO_INDEX_TO_TIMER(_servo_nbr) ((timer16_Sequence_t)(_servo_nbr / SERVOS_PER_TIMER)) // returns the timer controlling this servo +#define SERVO_INDEX_TO_CHANNEL(_servo_nbr) (_servo_nbr % SERVOS_PER_TIMER) // returns the index of the servo on this timer +#define SERVO_INDEX(_timer,_channel) ((_timer*SERVOS_PER_TIMER) + _channel) // macro to access servo index by timer and channel +#define SERVO(_timer,_channel) (servos[SERVO_INDEX(_timer,_channel)]) // macro to access servo class by timer and channel + +#define SERVO_MIN() (MIN_PULSE_WIDTH - this->min * 4) // minimum value in uS for this servo +#define SERVO_MAX() (MAX_PULSE_WIDTH - this->max * 4) // maximum value in uS for this servo + +/************ static functions common to all instances ***********************/ + +static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t *TCNTn, volatile uint16_t* OCRnA) { + if (Channel[timer] < 0) + *TCNTn = 0; // channel set to -1 indicated that refresh interval completed so reset the timer + else { + if (SERVO_INDEX(timer,Channel[timer]) < ServoCount && SERVO(timer,Channel[timer]).Pin.isActive) + digitalWrite( SERVO(timer,Channel[timer]).Pin.nbr,LOW); // pulse this channel low if activated + } + + Channel[timer]++; // increment to the next channel + if (SERVO_INDEX(timer,Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) { + *OCRnA = *TCNTn + SERVO(timer,Channel[timer]).ticks; + if (SERVO(timer,Channel[timer]).Pin.isActive) // check if activated + digitalWrite( SERVO(timer,Channel[timer]).Pin.nbr,HIGH); // its an active channel so pulse it high + } + else { + // finished all channels so wait for the refresh period to expire before starting over + if ( ((unsigned)*TCNTn) + 4 < usToTicks(REFRESH_INTERVAL) ) // allow a few ticks to ensure the next OCR1A not missed + *OCRnA = (unsigned int)usToTicks(REFRESH_INTERVAL); + else + *OCRnA = *TCNTn + 4; // at least REFRESH_INTERVAL has elapsed + Channel[timer] = -1; // this will get incremented at the end of the refresh period to start again at the first channel + } +} + +#ifndef WIRING // Wiring pre-defines signal handlers so don't define any if compiling for the Wiring platform + + // Interrupt handlers for Arduino + #if defined(_useTimer1) + SIGNAL (TIMER1_COMPA_vect) { handle_interrupts(_timer1, &TCNT1, &OCR1A); } + #endif + + #if defined(_useTimer3) + SIGNAL (TIMER3_COMPA_vect) { handle_interrupts(_timer3, &TCNT3, &OCR3A); } + #endif + + #if defined(_useTimer4) + SIGNAL (TIMER4_COMPA_vect) { handle_interrupts(_timer4, &TCNT4, &OCR4A); } + #endif + + #if defined(_useTimer5) + SIGNAL (TIMER5_COMPA_vect) { handle_interrupts(_timer5, &TCNT5, &OCR5A); } + #endif + +#else //!WIRING + + // Interrupt handlers for Wiring + #if defined(_useTimer1) + void Timer1Service() { handle_interrupts(_timer1, &TCNT1, &OCR1A); } + #endif + #if defined(_useTimer3) + void Timer3Service() { handle_interrupts(_timer3, &TCNT3, &OCR3A); } + #endif + +#endif //!WIRING + + +static void initISR(timer16_Sequence_t timer) { + #if defined(_useTimer1) + if (timer == _timer1) { + TCCR1A = 0; // normal counting mode + TCCR1B = _BV(CS11); // set prescaler of 8 + TCNT1 = 0; // clear the timer count + #if defined(__AVR_ATmega8__)|| defined(__AVR_ATmega128__) + TIFR |= _BV(OCF1A); // clear any pending interrupts; + TIMSK |= _BV(OCIE1A); // enable the output compare interrupt + #else + // here if not ATmega8 or ATmega128 + TIFR1 |= _BV(OCF1A); // clear any pending interrupts; + TIMSK1 |= _BV(OCIE1A); // enable the output compare interrupt + #endif + #if defined(WIRING) + timerAttach(TIMER1OUTCOMPAREA_INT, Timer1Service); + #endif + } + #endif + + #if defined(_useTimer3) + if (timer == _timer3) { + TCCR3A = 0; // normal counting mode + TCCR3B = _BV(CS31); // set prescaler of 8 + TCNT3 = 0; // clear the timer count + #if defined(__AVR_ATmega128__) + TIFR |= _BV(OCF3A); // clear any pending interrupts; + ETIMSK |= _BV(OCIE3A); // enable the output compare interrupt + #else + TIFR3 = _BV(OCF3A); // clear any pending interrupts; + TIMSK3 = _BV(OCIE3A) ; // enable the output compare interrupt + #endif + #if defined(WIRING) + timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service); // for Wiring platform only + #endif + } + #endif + + #if defined(_useTimer4) + if (timer == _timer4) { + TCCR4A = 0; // normal counting mode + TCCR4B = _BV(CS41); // set prescaler of 8 + TCNT4 = 0; // clear the timer count + TIFR4 = _BV(OCF4A); // clear any pending interrupts; + TIMSK4 = _BV(OCIE4A) ; // enable the output compare interrupt + } + #endif + + #if defined(_useTimer5) + if (timer == _timer5) { + TCCR5A = 0; // normal counting mode + TCCR5B = _BV(CS51); // set prescaler of 8 + TCNT5 = 0; // clear the timer count + TIFR5 = _BV(OCF5A); // clear any pending interrupts; + TIMSK5 = _BV(OCIE5A) ; // enable the output compare interrupt + } + #endif +} + +static void finISR(timer16_Sequence_t timer) { + // Disable use of the given timer + #if defined(WIRING) + if (timer == _timer1) { + #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) + TIMSK1 + #else + TIMSK + #endif + &= ~_BV(OCIE1A); // disable timer 1 output compare interrupt + timerDetach(TIMER1OUTCOMPAREA_INT); + } + else if (timer == _timer3) { + #if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) + TIMSK3 + #else + ETIMSK + #endif + &= ~_BV(OCIE3A); // disable the timer3 output compare A interrupt + timerDetach(TIMER3OUTCOMPAREA_INT); + } + #else //!WIRING + // For arduino - in future: call here to a currently undefined function to reset the timer + #endif +} + +static boolean isTimerActive(timer16_Sequence_t timer) { + // returns true if any servo is active on this timer + for(uint8_t channel=0; channel < SERVOS_PER_TIMER; channel++) { + if (SERVO(timer,channel).Pin.isActive) + return true; + } + return false; +} + + +/****************** end of static functions ******************************/ + +Servo::Servo() { + if ( ServoCount < MAX_SERVOS) { + this->servoIndex = ServoCount++; // assign a servo index to this instance + servos[this->servoIndex].ticks = usToTicks(DEFAULT_PULSE_WIDTH); // store default values - 12 Aug 2009 + } + else + this->servoIndex = INVALID_SERVO; // too many servos +} + +uint8_t Servo::attach(int pin) { + return this->attach(pin, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH); +} + +uint8_t Servo::attach(int pin, int min, int max) { + if (this->servoIndex < MAX_SERVOS ) { + #if defined(ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + if (pin > 0) this->pin = pin; else pin = this->pin; + #endif + pinMode(pin, OUTPUT); // set servo pin to output + servos[this->servoIndex].Pin.nbr = pin; + // todo min/max check: abs(min - MIN_PULSE_WIDTH) /4 < 128 + this->min = (MIN_PULSE_WIDTH - min) / 4; //resolution of min/max is 4 uS + this->max = (MAX_PULSE_WIDTH - max) / 4; + // initialize the timer if it has not already been initialized + timer16_Sequence_t timer = SERVO_INDEX_TO_TIMER(servoIndex); + if (!isTimerActive(timer)) initISR(timer); + servos[this->servoIndex].Pin.isActive = true; // this must be set after the check for isTimerActive + } + return this->servoIndex; +} + +void Servo::detach() { + servos[this->servoIndex].Pin.isActive = false; + timer16_Sequence_t timer = SERVO_INDEX_TO_TIMER(servoIndex); + if (!isTimerActive(timer)) finISR(timer); +} + +void Servo::write(int value) { + if (value < MIN_PULSE_WIDTH) { // treat values less than 544 as angles in degrees (valid values in microseconds are handled as microseconds) + if (value < 0) value = 0; + if (value > 180) value = 180; + value = map(value, 0, 180, SERVO_MIN(), SERVO_MAX()); + } + this->writeMicroseconds(value); +} + +void Servo::writeMicroseconds(int value) { + // calculate and store the values for the given channel + byte channel = this->servoIndex; + if (channel < MAX_SERVOS) { // ensure channel is valid + if (value < SERVO_MIN()) // ensure pulse width is valid + value = SERVO_MIN(); + else if (value > SERVO_MAX()) + value = SERVO_MAX(); + + value = value - TRIM_DURATION; + value = usToTicks(value); // convert to ticks after compensating for interrupt overhead - 12 Aug 2009 + + uint8_t oldSREG = SREG; + cli(); + servos[channel].ticks = value; + SREG = oldSREG; + } +} + +// return the value as degrees +int Servo::read() { return map( this->readMicroseconds()+1, SERVO_MIN(), SERVO_MAX(), 0, 180); } + +int Servo::readMicroseconds() { + return (this->servoIndex == INVALID_SERVO) ? 0 : ticksToUs(servos[this->servoIndex].ticks) + TRIM_DURATION; +} + +bool Servo::attached() { return servos[this->servoIndex].Pin.isActive; } + +#endif diff --git a/Marlin/Servo.h b/Marlin/Servo.h new file mode 100644 index 000000000..bbdf6bf0a --- /dev/null +++ b/Marlin/Servo.h @@ -0,0 +1,135 @@ +/* + Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2 + Copyright (c) 2009 Michael Margolis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +/* + + A servo is activated by creating an instance of the Servo class passing the desired pin to the attach() method. + The servos are pulsed in the background using the value most recently written using the write() method + + Note that analogWrite of PWM on pins associated with the timer are disabled when the first servo is attached. + Timers are seized as needed in groups of 12 servos - 24 servos use two timers, 48 servos will use four. + The sequence used to seize timers is defined in timers.h + + The methods are: + + Servo - Class for manipulating servo motors connected to Arduino pins. + + attach(pin ) - Attaches a servo motor to an i/o pin. + attach(pin, min, max ) - Attaches to a pin setting min and max values in microseconds + default min is 544, max is 2400 + + write() - Sets the servo angle in degrees. (invalid angle that is valid as pulse in microseconds is treated as microseconds) + writeMicroseconds() - Sets the servo pulse width in microseconds + read() - Gets the last written servo pulse width as an angle between 0 and 180. + readMicroseconds() - Gets the last written servo pulse width in microseconds. (was read_us() in first release) + attached() - Returns true if there is a servo attached. + detach() - Stops an attached servos from pulsing its i/o pin. + */ + +#ifndef Servo_h +#define Servo_h + +#include + +/* + * Defines for 16 bit timers used with Servo library + * + * If _useTimerX is defined then TimerX is a 16 bit timer on the current board + * timer16_Sequence_t enumerates the sequence that the timers should be allocated + * _Nbr_16timers indicates how many 16 bit timers are available. + * + */ + +// Say which 16 bit timers can be used and in what order +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + #define _useTimer5 + //#define _useTimer1 + #define _useTimer3 + #define _useTimer4 + //typedef enum { _timer5, _timer1, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t ; + typedef enum { _timer5, _timer3, _timer4, _Nbr_16timers } timer16_Sequence_t ; + +#elif defined(__AVR_ATmega32U4__) + //#define _useTimer1 + #define _useTimer3 + //typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ; + typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ; + +#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) + #define _useTimer3 + //#define _useTimer1 + //typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t ; + typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ; + +#elif defined(__AVR_ATmega128__) ||defined(__AVR_ATmega1281__) || defined(__AVR_ATmega1284P__) ||defined(__AVR_ATmega2561__) + #define _useTimer3 + //#define _useTimer1 + //typedef enum { _timer3, _timer1, _Nbr_16timers } timer16_Sequence_t ; + typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ; + +#else // everything else + //#define _useTimer1 + //typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ; + typedef enum { _Nbr_16timers } timer16_Sequence_t ; + +#endif + +#define Servo_VERSION 2 // software version of this library + +#define MIN_PULSE_WIDTH 544 // the shortest pulse sent to a servo +#define MAX_PULSE_WIDTH 2400 // the longest pulse sent to a servo +#define DEFAULT_PULSE_WIDTH 1500 // default pulse width when servo is attached +#define REFRESH_INTERVAL 20000 // minimum time to refresh servos in microseconds + +#define SERVOS_PER_TIMER 12 // the maximum number of servos controlled by one timer +#define MAX_SERVOS (_Nbr_16timers * SERVOS_PER_TIMER) + +#define INVALID_SERVO 255 // flag indicating an invalid servo index + +typedef struct { + uint8_t nbr :6 ; // a pin number from 0 to 63 + uint8_t isActive :1 ; // true if this channel is enabled, pin not pulsed if false +} ServoPin_t; + +typedef struct { + ServoPin_t Pin; + unsigned int ticks; +} servo_t; + +class Servo { + public: + Servo(); + uint8_t attach(int pin); // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure + uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes. + void detach(); + void write(int value); // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds + void writeMicroseconds(int value); // Write pulse width in microseconds + int read(); // returns current pulse width as an angle between 0 and 180 degrees + int readMicroseconds(); // returns current pulse width in microseconds for this servo (was read_us() in first release) + bool attached(); // return true if this servo is attached, otherwise false + #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0) + int pin; // store the hardware pin of the servo + #endif + private: + uint8_t servoIndex; // index into the channel data for this servo + int8_t min; // minimum is this value times 4 added to MIN_PULSE_WIDTH + int8_t max; // maximum is this value times 4 added to MAX_PULSE_WIDTH +}; + +#endif diff --git a/Marlin/boards.h b/Marlin/boards.h new file mode 100644 index 000000000..2f1107b45 --- /dev/null +++ b/Marlin/boards.h @@ -0,0 +1,60 @@ +#ifndef BOARDS_H +#define BOARDS_H + +#define BOARD_UNKNOWN -1 + +#define BOARD_GEN7_CUSTOM 10 // Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics" +#define BOARD_GEN7_12 11 // Gen7 v1.1, v1.2 +#define BOARD_GEN7_13 12 // Gen7 v1.3 +#define BOARD_GEN7_14 13 // Gen7 v1.4 +#define BOARD_CHEAPTRONIC 2 // Cheaptronic v1.0 +#define BOARD_SETHI 20 // Sethi 3D_1 +#define BOARD_RAMPS_OLD 3 // MEGA/RAMPS up to 1.2 +#define BOARD_RAMPS_13_EFB 33 // RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed) +#define BOARD_RAMPS_13_EEB 34 // RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed) +#define BOARD_RAMPS_13_EFF 35 // RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan) +#define BOARD_RAMPS_13_EEF 36 // RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Fan) +#define BOARD_DUEMILANOVE_328P 4 // Duemilanove w/ ATMega328P pin assignments +#define BOARD_GEN6 5 // Gen6 +#define BOARD_GEN6_DELUXE 51 // Gen6 deluxe +#define BOARD_SANGUINOLOLU_11 6 // Sanguinololu < 1.2 +#define BOARD_SANGUINOLOLU_12 62 // Sanguinololu 1.2 and above +#define BOARD_MELZI 63 // Melzi +#define BOARD_STB_11 64 // STB V1.1 +#define BOARD_AZTEEG_X1 65 // Azteeg X1 +#define BOARD_MELZI_1284 66 // Melzi with ATmega1284 (MaKr3d version) +#define BOARD_AZTEEG_X3 67 // Azteeg X3 +#define BOARD_AZTEEG_X3_PRO 68 // Azteeg X3 Pro +#define BOARD_ULTIMAKER 7 // Ultimaker +#define BOARD_ULTIMAKER_OLD 71 // Ultimaker (Older electronics. Pre 1.5.4. This is rare) +#define BOARD_ULTIMAIN_2 72 // Ultimainboard 2.x (Uses TEMP_SENSOR 20) +#define BOARD_3DRAG 77 // 3Drag Controller +#define BOARD_K8200 78 // Vellemann K8200 Controller (derived from 3Drag Controller) +#define BOARD_TEENSYLU 8 // Teensylu +#define BOARD_RUMBA 80 // Rumba +#define BOARD_PRINTRBOARD 81 // Printrboard (AT90USB1286) +#define BOARD_BRAINWAVE 82 // Brainwave (AT90USB646) +#define BOARD_SAV_MKI 83 // SAV Mk-I (AT90USB1286) +#define BOARD_TEENSY2 84 // Teensy++2.0 (AT90USB1286) - CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make +#define BOARD_GEN3_PLUS 9 // Gen3+ +#define BOARD_GEN3_MONOLITHIC 22 // Gen3 Monolithic Electronics +#define BOARD_MEGATRONICS 70 // Megatronics +#define BOARD_MEGATRONICS_2 701 // Megatronics v2.0 +#define BOARD_MEGATRONICS_1 702 // Minitronics v1.0 +#define BOARD_MEGATRONICS_3 703 // Megatronics v3.0 +#define BOARD_OMCA_A 90 // Alpha OMCA board +#define BOARD_OMCA 91 // Final OMCA board +#define BOARD_RAMBO 301 // Rambo +#define BOARD_ELEFU_3 21 // Elefu Ra Board (v3) +#define BOARD_5DPRINT 88 // 5DPrint D8 Driver Board +#define BOARD_LEAPFROG 999 // Leapfrog +#define BOARD_WITBOX 41 // bq WITBOX +#define BOARD_HEPHESTOS 42 // bq Prusa i3 Hephestos +#define BOARD_BAM_DICE 401 // 2PrintBeta BAM&DICE with STK drivers +#define BOARD_BAM_DICE_DUE 402 // 2PrintBeta BAM&DICE Due with STK drivers + +#define BOARD_99 99 // This is in pins.h but...? + +#define MB(board) (MOTHERBOARD==BOARD_##board) + +#endif //__BOARDS_H diff --git a/Marlin/cardreader.cpp b/Marlin/cardreader.cpp new file mode 100644 index 000000000..a51d77bf0 --- /dev/null +++ b/Marlin/cardreader.cpp @@ -0,0 +1,518 @@ +#include "Marlin.h" +#include "cardreader.h" +#include "ultralcd.h" +#include "stepper.h" +#include "temperature.h" +#include "language.h" + +#ifdef SDSUPPORT + +CardReader::CardReader() { + filesize = 0; + sdpos = 0; + sdprinting = false; + cardOK = false; + saving = false; + logging = false; + workDirDepth = 0; + file_subcall_ctr = 0; + memset(workDirParents, 0, sizeof(workDirParents)); + + autostart_stilltocheck = true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software. + autostart_index = 0; + //power to SD reader + #if SDPOWER > -1 + OUT_WRITE(SDPOWER, HIGH); + #endif //SDPOWER + + autostart_atmillis = millis() + 5000; +} + +char *createFilename(char *buffer, const dir_t &p) { //buffer > 12characters + char *pos = buffer; + for (uint8_t i = 0; i < 11; i++) { + if (p.name[i] == ' ') continue; + if (i == 8) *pos++ = '.'; + *pos++ = p.name[i]; + } + *pos++ = 0; + return buffer; +} + +void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) { + dir_t p; + uint8_t cnt = 0; + + while (parent.readDir(p, longFilename) > 0) { + if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { // hence LS_SerialPrint + char path[FILENAME_LENGTH*2]; + char lfilename[FILENAME_LENGTH]; + createFilename(lfilename, p); + + path[0] = 0; + if (prepend[0] == 0) strcat(path, "/"); //avoid leading / if already in prepend + strcat(path, prepend); + strcat(path, lfilename); + strcat(path, "/"); + + //Serial.print(path); + + SdFile dir; + if (!dir.open(parent, lfilename, O_READ)) { + if (lsAction == LS_SerialPrint) { + SERIAL_ECHO_START; + SERIAL_ECHOLN(MSG_SD_CANT_OPEN_SUBDIR); + SERIAL_ECHOLN(lfilename); + } + } + lsDive(path, dir); + //close done automatically by destructor of SdFile + } + else { + char pn0 = p.name[0]; + if (pn0 == DIR_NAME_FREE) break; + if (pn0 == DIR_NAME_DELETED || pn0 == '.') continue; + char lf0 = longFilename[0]; + if (lf0 == '.') continue; + + if (!DIR_IS_FILE_OR_SUBDIR(&p)) continue; + + filenameIsDir = DIR_IS_SUBDIR(&p); + + if (!filenameIsDir && (p.name[8] != 'G' || p.name[9] == '~')) continue; + + //if (cnt++ != nr) continue; + createFilename(filename, p); + if (lsAction == LS_SerialPrint) { + SERIAL_PROTOCOL(prepend); + SERIAL_PROTOCOLLN(filename); + } + else if (lsAction == LS_Count) { + nrFiles++; + } + else if (lsAction == LS_GetFilename) { + if (match != NULL) { + if (strcasecmp(match, filename) == 0) return; + } + else if (cnt == nrFiles) return; + cnt++; + } + } + } +} + +void CardReader::ls() { + lsAction = LS_SerialPrint; + root.rewind(); + lsDive("", root); +} + +void CardReader::initsd() { + cardOK = false; + if (root.isOpen()) root.close(); + + #ifdef SDSLOW + #define SPI_SPEED SPI_HALF_SPEED + #else + #define SPI_SPEED SPI_FULL_SPEED + #endif + + if (!card.init(SPI_SPEED,SDSS) + #if defined(LCD_SDSS) && (LCD_SDSS != SDSS) + && !card.init(SPI_SPEED, LCD_SDSS) + #endif + ) { + //if (!card.init(SPI_HALF_SPEED,SDSS)) + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_SD_INIT_FAIL); + } + else if (!volume.init(&card)) { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_SD_VOL_INIT_FAIL); + } + else if (!root.openRoot(&volume)) { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_SD_OPENROOT_FAIL); + } + else { + cardOK = true; + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_SD_CARD_OK); + } + workDir = root; + curDir = &root; + /* + if (!workDir.openRoot(&volume)) { + SERIAL_ECHOLNPGM(MSG_SD_WORKDIR_FAIL); + } + */ +} + +void CardReader::setroot() { + /*if (!workDir.openRoot(&volume)) { + SERIAL_ECHOLNPGM(MSG_SD_WORKDIR_FAIL); + }*/ + workDir = root; + curDir = &workDir; +} + +void CardReader::release() { + sdprinting = false; + cardOK = false; +} + +void CardReader::startFileprint() { + if (cardOK) { + sdprinting = true; + } +} + +void CardReader::pauseSDPrint() { + if (sdprinting) sdprinting = false; +} + +void CardReader::openLogFile(char* name) { + logging = true; + openFile(name, false); +} + +void CardReader::getAbsFilename(char *t) { + uint8_t cnt = 0; + *t = '/'; t++; cnt++; + for (uint8_t i = 0; i < workDirDepth; i++) { + workDirParents[i].getFilename(t); //SDBaseFile.getfilename! + while(*t && cnt < MAXPATHNAMELENGTH) { t++; cnt++; } //crawl counter forward. + } + if (cnt < MAXPATHNAMELENGTH - FILENAME_LENGTH) + file.getFilename(t); + else + t[0] = 0; +} + +void CardReader::openFile(char* name, bool read, bool replace_current/*=true*/) { + if (!cardOK) return; + if (file.isOpen()) { //replacing current file by new file, or subfile call + if (!replace_current) { + if (file_subcall_ctr > SD_PROCEDURE_DEPTH - 1) { + SERIAL_ERROR_START; + SERIAL_ERRORPGM("trying to call sub-gcode files with too many levels. MAX level is:"); + SERIAL_ERRORLN(SD_PROCEDURE_DEPTH); + kill(); + return; + } + + SERIAL_ECHO_START; + SERIAL_ECHOPGM("SUBROUTINE CALL target:\""); + SERIAL_ECHO(name); + SERIAL_ECHOPGM("\" parent:\""); + + //store current filename and position + getAbsFilename(filenames[file_subcall_ctr]); + + SERIAL_ECHO(filenames[file_subcall_ctr]); + SERIAL_ECHOPGM("\" pos"); + SERIAL_ECHOLN(sdpos); + filespos[file_subcall_ctr] = sdpos; + file_subcall_ctr++; + } + else { + SERIAL_ECHO_START; + SERIAL_ECHOPGM("Now doing file: "); + SERIAL_ECHOLN(name); + } + file.close(); + } + else { //opening fresh file + file_subcall_ctr = 0; //resetting procedure depth in case user cancels print while in procedure + SERIAL_ECHO_START; + SERIAL_ECHOPGM("Now fresh file: "); + SERIAL_ECHOLN(name); + } + sdprinting = false; + + SdFile myDir; + curDir = &root; + char *fname = name; + + char *dirname_start, *dirname_end; + if (name[0] == '/') { + dirname_start = &name[1]; + while(dirname_start > 0) { + dirname_end = strchr(dirname_start, '/'); + //SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start - name)); + //SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end - name)); + if (dirname_end > 0 && dirname_end > dirname_start) { + char subdirname[FILENAME_LENGTH]; + strncpy(subdirname, dirname_start, dirname_end - dirname_start); + subdirname[dirname_end - dirname_start] = 0; + SERIAL_ECHOLN(subdirname); + if (!myDir.open(curDir, subdirname, O_READ)) { + SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL); + SERIAL_PROTOCOL(subdirname); + SERIAL_PROTOCOLLNPGM("."); + return; + } + else { + //SERIAL_ECHOLN("dive ok"); + } + + curDir = &myDir; + dirname_start = dirname_end + 1; + } + else { // the remainder after all /fsa/fdsa/ is the filename + fname = dirname_start; + //SERIAL_ECHOLN("remainder"); + //SERIAL_ECHOLN(fname); + break; + } + } + } + else { //relative path + curDir = &workDir; + } + + if (read) { + if (file.open(curDir, fname, O_READ)) { + filesize = file.fileSize(); + SERIAL_PROTOCOLPGM(MSG_SD_FILE_OPENED); + SERIAL_PROTOCOL(fname); + SERIAL_PROTOCOLPGM(MSG_SD_SIZE); + SERIAL_PROTOCOLLN(filesize); + sdpos = 0; + + SERIAL_PROTOCOLLNPGM(MSG_SD_FILE_SELECTED); + getfilename(0, fname); + lcd_setstatus(longFilename[0] ? longFilename : fname); + } + else { + SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL); + SERIAL_PROTOCOL(fname); + SERIAL_PROTOCOLLNPGM("."); + } + } + else { //write + if (!file.open(curDir, fname, O_CREAT | O_APPEND | O_WRITE | O_TRUNC)) { + SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL); + SERIAL_PROTOCOL(fname); + SERIAL_PROTOCOLLNPGM("."); + } + else { + saving = true; + SERIAL_PROTOCOLPGM(MSG_SD_WRITE_TO_FILE); + SERIAL_PROTOCOLLN(name); + lcd_setstatus(fname); + } + } +} + +void CardReader::removeFile(char* name) { + if (!cardOK) return; + + file.close(); + sdprinting = false; + + SdFile myDir; + curDir = &root; + char *fname = name; + + char *dirname_start, *dirname_end; + if (name[0] == '/') { + dirname_start = strchr(name, '/') + 1; + while (dirname_start > 0) { + dirname_end = strchr(dirname_start, '/'); + //SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start - name)); + //SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end - name)); + if (dirname_end > 0 && dirname_end > dirname_start) { + char subdirname[FILENAME_LENGTH]; + strncpy(subdirname, dirname_start, dirname_end - dirname_start); + subdirname[dirname_end - dirname_start] = 0; + SERIAL_ECHOLN(subdirname); + if (!myDir.open(curDir, subdirname, O_READ)) { + SERIAL_PROTOCOLPGM("open failed, File: "); + SERIAL_PROTOCOL(subdirname); + SERIAL_PROTOCOLLNPGM("."); + return; + } + else { + //SERIAL_ECHOLN("dive ok"); + } + + curDir = &myDir; + dirname_start = dirname_end + 1; + } + else { // the remainder after all /fsa/fdsa/ is the filename + fname = dirname_start; + //SERIAL_ECHOLN("remainder"); + //SERIAL_ECHOLN(fname); + break; + } + } + } + else { // relative path + curDir = &workDir; + } + + if (file.remove(curDir, fname)) { + SERIAL_PROTOCOLPGM("File deleted:"); + SERIAL_PROTOCOLLN(fname); + sdpos = 0; + } + else { + SERIAL_PROTOCOLPGM("Deletion failed, File: "); + SERIAL_PROTOCOL(fname); + SERIAL_PROTOCOLLNPGM("."); + } +} + +void CardReader::getStatus() { + if (cardOK) { + SERIAL_PROTOCOLPGM(MSG_SD_PRINTING_BYTE); + SERIAL_PROTOCOL(sdpos); + SERIAL_PROTOCOLPGM("/"); + SERIAL_PROTOCOLLN(filesize); + } + else { + SERIAL_PROTOCOLLNPGM(MSG_SD_NOT_PRINTING); + } +} + +void CardReader::write_command(char *buf) { + char* begin = buf; + char* npos = 0; + char* end = buf + strlen(buf) - 1; + + file.writeError = false; + if ((npos = strchr(buf, 'N')) != NULL) { + begin = strchr(npos, ' ') + 1; + end = strchr(npos, '*') - 1; + } + end[1] = '\r'; + end[2] = '\n'; + end[3] = '\0'; + file.write(begin); + if (file.writeError) { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_SD_ERR_WRITE_TO_FILE); + } +} + +void CardReader::checkautostart(bool force) { + if (!force && (!autostart_stilltocheck || autostart_atmillis < millis())) + return; + + autostart_stilltocheck = false; + + if (!cardOK) { + initsd(); + if (!cardOK) return; // fail + } + + char autoname[30]; + sprintf_P(autoname, PSTR("auto%i.g"), autostart_index); + for (int8_t i = 0; i < (int8_t)strlen(autoname); i++) autoname[i] = tolower(autoname[i]); + + dir_t p; + + root.rewind(); + + bool found = false; + while (root.readDir(p, NULL) > 0) { + for (int8_t i = 0; i < (int8_t)strlen((char*)p.name); i++) p.name[i] = tolower(p.name[i]); + if (p.name[9] != '~' && strncmp((char*)p.name, autoname, 5) == 0) { + char cmd[30]; + sprintf_P(cmd, PSTR("M23 %s"), autoname); + enquecommand(cmd); + enquecommands_P(PSTR("M24")); + found = true; + } + } + if (!found) + autostart_index = -1; + else + autostart_index++; +} + +void CardReader::closefile(bool store_location) { + file.sync(); + file.close(); + saving = logging = false; + + if (store_location) { + //future: store printer state, filename and position for continuing a stopped print + // so one can unplug the printer and continue printing the next day. + } +} + +/** + * Get the name of a file in the current directory by index + */ +void CardReader::getfilename(uint16_t nr, const char * const match/*=NULL*/) { + curDir = &workDir; + lsAction = LS_GetFilename; + nrFiles = nr; + curDir->rewind(); + lsDive("", *curDir, match); +} + +uint16_t CardReader::getnrfilenames() { + curDir = &workDir; + lsAction = LS_Count; + nrFiles = 0; + curDir->rewind(); + lsDive("", *curDir); + //SERIAL_ECHOLN(nrFiles); + return nrFiles; +} + +void CardReader::chdir(const char * relpath) { + SdFile newfile; + SdFile *parent = &root; + + if (workDir.isOpen()) parent = &workDir; + + if (!newfile.open(*parent, relpath, O_READ)) { + SERIAL_ECHO_START; + SERIAL_ECHOPGM(MSG_SD_CANT_ENTER_SUBDIR); + SERIAL_ECHOLN(relpath); + } + else { + if (workDirDepth < MAX_DIR_DEPTH) { + ++workDirDepth; + for (int d = workDirDepth; d--;) workDirParents[d + 1] = workDirParents[d]; + workDirParents[0] = *parent; + } + workDir = newfile; + } +} + +void CardReader::updir() { + if (workDirDepth > 0) { + --workDirDepth; + workDir = workDirParents[0]; + for (int d = 0; d < workDirDepth; d++) + workDirParents[d] = workDirParents[d+1]; + } +} + +void CardReader::printingHasFinished() { + st_synchronize(); + if (file_subcall_ctr > 0) { // Heading up to a parent file that called current as a procedure. + file.close(); + file_subcall_ctr--; + openFile(filenames[file_subcall_ctr], true, true); + setIndex(filespos[file_subcall_ctr]); + startFileprint(); + } + else { + quickStop(); + file.close(); + sdprinting = false; + if (SD_FINISHED_STEPPERRELEASE) { + //finishAndDisableSteppers(); + enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND)); + } + autotempShutdown(); + } +} + +#endif //SDSUPPORT diff --git a/Marlin/cardreader.h b/Marlin/cardreader.h new file mode 100644 index 000000000..b55d09a65 --- /dev/null +++ b/Marlin/cardreader.h @@ -0,0 +1,97 @@ +#ifndef CARDREADER_H +#define CARDREADER_H + +#ifdef SDSUPPORT + +#define MAX_DIR_DEPTH 10 // Maximum folder depth + +#include "SdFile.h" +enum LsAction { LS_SerialPrint, LS_Count, LS_GetFilename }; + +class CardReader { +public: + CardReader(); + + void initsd(); + void write_command(char *buf); + //files auto[0-9].g on the sd card are performed in a row + //this is to delay autostart and hence the initialisaiton of the sd card to some seconds after the normal init, so the device is available quick after a reset + + void checkautostart(bool x); + void openFile(char* name,bool read,bool replace_current=true); + void openLogFile(char* name); + void removeFile(char* name); + void closefile(bool store_location=false); + void release(); + void startFileprint(); + void pauseSDPrint(); + void getStatus(); + void printingHasFinished(); + + void getfilename(uint16_t nr, const char* const match=NULL); + uint16_t getnrfilenames(); + + void getAbsFilename(char *t); + + void ls(); + void chdir(const char * relpath); + void updir(); + void setroot(); + + + FORCE_INLINE bool isFileOpen() { return file.isOpen(); } + FORCE_INLINE bool eof() { return sdpos >= filesize; } + FORCE_INLINE int16_t get() { sdpos = file.curPosition(); return (int16_t)file.read(); } + FORCE_INLINE void setIndex(long index) { sdpos = index; file.seekSet(index); } + FORCE_INLINE uint8_t percentDone() { return (isFileOpen() && filesize) ? sdpos / ((filesize + 99) / 100) : 0; } + FORCE_INLINE char* getWorkDirName() { workDir.getFilename(filename); return filename; } + +public: + bool saving, logging, sdprinting, cardOK, filenameIsDir; + char filename[FILENAME_LENGTH], longFilename[LONG_FILENAME_LENGTH]; + int autostart_index; +private: + SdFile root, *curDir, workDir, workDirParents[MAX_DIR_DEPTH]; + uint16_t workDirDepth; + Sd2Card card; + SdVolume volume; + SdFile file; + #define SD_PROCEDURE_DEPTH 1 + #define MAXPATHNAMELENGTH (FILENAME_LENGTH*MAX_DIR_DEPTH + MAX_DIR_DEPTH + 1) + uint8_t file_subcall_ctr; + uint32_t filespos[SD_PROCEDURE_DEPTH]; + char filenames[SD_PROCEDURE_DEPTH][MAXPATHNAMELENGTH]; + uint32_t filesize; + unsigned long autostart_atmillis; + uint32_t sdpos; + + bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware. + + LsAction lsAction; //stored for recursion. + uint16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory. + char* diveDirName; + void lsDive(const char *prepend, SdFile parent, const char * const match=NULL); +}; + +extern CardReader card; + +#define IS_SD_PRINTING (card.sdprinting) + +#if (SDCARDDETECT > -1) + #ifdef SDCARDDETECTINVERTED + #define IS_SD_INSERTED (READ(SDCARDDETECT) != 0) + #else + #define IS_SD_INSERTED (READ(SDCARDDETECT) == 0) + #endif +#else + //No card detect line? Assume the card is inserted. + #define IS_SD_INSERTED true +#endif + +#else + +#define IS_SD_PRINTING (false) + +#endif //SDSUPPORT + +#endif //__CARDREADER_H diff --git a/Marlin/createTemperatureLookup.py b/Marlin/createTemperatureLookup.py deleted file mode 100644 index e60a490c8..000000000 --- a/Marlin/createTemperatureLookup.py +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/python -# -# Creates a C code lookup table for doing ADC to temperature conversion -# on a microcontroller -# based on: http://hydraraptor.blogspot.com/2007/10/measuring-temperature-easy-way.html -"""Thermistor Value Lookup Table Generator - -Generates lookup to temperature values for use in a microcontroller in C format based on: -http://hydraraptor.blogspot.com/2007/10/measuring-temperature-easy-way.html - -The main use is for Arduino programs that read data from the circuit board described here: -http://make.rrrf.org/ts-1.0 - -Usage: python createTemperatureLookup.py [options] - -Options: - -h, --help show this help - --r0=... thermistor rating where # is the ohm rating of the thermistor at t0 (eg: 10K = 10000) - --t0=... thermistor temp rating where # is the temperature in Celsuis to get r0 (from your datasheet) - --beta=... thermistor beta rating. see http://reprap.org/bin/view/Main/MeasuringThermistorBeta - --r1=... R1 rating where # is the ohm rating of R1 (eg: 10K = 10000) - --r2=... R2 rating where # is the ohm rating of R2 (eg: 10K = 10000) - --num-temps=... the number of temperature points to calculate (default: 20) - --max-adc=... the max ADC reading to use. if you use R1, it limits the top value for the thermistor circuit, and thus the possible range of ADC values -""" - -from math import * -import sys -import getopt - -class Thermistor: - "Class to do the thermistor maths" - def __init__(self, r0, t0, beta, r1, r2): - self.r0 = r0 # stated resistance, e.g. 10K - self.t0 = t0 + 273.15 # temperature at stated resistance, e.g. 25C - self.beta = beta # stated beta, e.g. 3500 - self.vadc = 5.0 # ADC reference - self.vcc = 5.0 # supply voltage to potential divider - self.k = r0 * exp(-beta / self.t0) # constant part of calculation - - if r1 > 0: - self.vs = r1 * self.vcc / (r1 + r2) # effective bias voltage - self.rs = r1 * r2 / (r1 + r2) # effective bias impedance - else: - self.vs = self.vcc # effective bias voltage - self.rs = r2 # effective bias impedance - - def temp(self,adc): - "Convert ADC reading into a temperature in Celcius" - v = adc * self.vadc / 1024 # convert the 10 bit ADC value to a voltage - r = self.rs * v / (self.vs - v) # resistance of thermistor - return (self.beta / log(r / self.k)) - 273.15 # temperature - - def setting(self, t): - "Convert a temperature into a ADC value" - r = self.r0 * exp(self.beta * (1 / (t + 273.15) - 1 / self.t0)) # resistance of the thermistor - v = self.vs * r / (self.rs + r) # the voltage at the potential divider - return round(v / self.vadc * 1024) # the ADC reading - -def main(argv): - - r0 = 10000; - t0 = 25; - beta = 3947; - r1 = 680; - r2 = 1600; - num_temps = int(20); - - try: - opts, args = getopt.getopt(argv, "h", ["help", "r0=", "t0=", "beta=", "r1=", "r2="]) - except getopt.GetoptError: - usage() - sys.exit(2) - - for opt, arg in opts: - if opt in ("-h", "--help"): - usage() - sys.exit() - elif opt == "--r0": - r0 = int(arg) - elif opt == "--t0": - t0 = int(arg) - elif opt == "--beta": - beta = int(arg) - elif opt == "--r1": - r1 = int(arg) - elif opt == "--r2": - r2 = int(arg) - - if r1: - max_adc = int(1023 * r1 / (r1 + r2)); - else: - max_adc = 1023 - increment = int(max_adc/(num_temps-1)); - - t = Thermistor(r0, t0, beta, r1, r2) - - adcs = range(1, max_adc, increment); -# adcs = [1, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100, 110, 130, 150, 190, 220, 250, 300] - first = 1 - - print "// Thermistor lookup table for RepRap Temperature Sensor Boards (http://make.rrrf.org/ts)" - print "// Made with createTemperatureLookup.py (http://svn.reprap.org/trunk/reprap/firmware/Arduino/utilities/createTemperatureLookup.py)" - print "// ./createTemperatureLookup.py --r0=%s --t0=%s --r1=%s --r2=%s --beta=%s --max-adc=%s" % (r0, t0, r1, r2, beta, max_adc) - print "// r0: %s" % (r0) - print "// t0: %s" % (t0) - print "// r1: %s" % (r1) - print "// r2: %s" % (r2) - print "// beta: %s" % (beta) - print "// max adc: %s" % (max_adc) - print "#define NUMTEMPS %s" % (len(adcs)) - print "short temptable[NUMTEMPS][2] = {" - - counter = 0 - for adc in adcs: - counter = counter +1 - if counter == len(adcs): - print " {%s, %s}" % (adc, int(t.temp(adc))) - else: - print " {%s, %s}," % (adc, int(t.temp(adc))) - print "};" - -def usage(): - print __doc__ - -if __name__ == "__main__": - main(sys.argv[1:]) diff --git a/Marlin/digipot_mcp4451.cpp b/Marlin/digipot_mcp4451.cpp new file mode 100644 index 000000000..22d270025 --- /dev/null +++ b/Marlin/digipot_mcp4451.cpp @@ -0,0 +1,58 @@ +#include "Configuration.h" + +#ifdef DIGIPOT_I2C + +#include "Stream.h" +#include "utility/twi.h" +#include "Wire.h" + +// Settings for the I2C based DIGIPOT (MCP4451) on Azteeg X3 Pro +#if MB(5DPRINT) + #define DIGIPOT_I2C_FACTOR 117.96 + #define DIGIPOT_I2C_MAX_CURRENT 1.736 +#else + #define DIGIPOT_I2C_FACTOR 106.7 + #define DIGIPOT_I2C_MAX_CURRENT 2.5 +#endif + +static byte current_to_wiper(float current) { + return byte(ceil(float((DIGIPOT_I2C_FACTOR*current)))); +} + +static void i2c_send(byte addr, byte a, byte b) { + Wire.beginTransmission(addr); + Wire.write(a); + Wire.write(b); + Wire.endTransmission(); +} + +// This is for the MCP4451 I2C based digipot +void digipot_i2c_set_current(int channel, float current) { + current = min( (float) max( current, 0.0f ), DIGIPOT_I2C_MAX_CURRENT); + // these addresses are specific to Azteeg X3 Pro, can be set to others, + // In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1 + byte addr = 0x2C; // channel 0-3 + if (channel >= 4) { + addr = 0x2E; // channel 4-7 + channel -= 4; + } + + // Initial setup + i2c_send(addr, 0x40, 0xff); + i2c_send(addr, 0xA0, 0xff); + + // Set actual wiper value + byte addresses[4] = { 0x00, 0x10, 0x60, 0x70 }; + i2c_send(addr, addresses[channel], current_to_wiper(current)); +} + +void digipot_i2c_init() { + const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS; + Wire.begin(); + // setup initial currents as defined in Configuration_adv.h + for(int i = 0; i <= sizeof(digipot_motor_current) / sizeof(float); i++) { + digipot_i2c_set_current(i, digipot_motor_current[i]); + } +} + +#endif //DIGIPOT_I2C diff --git a/Marlin/dogm_font_data_marlin.h b/Marlin/dogm_font_data_marlin.h new file mode 100644 index 000000000..6b83903cf --- /dev/null +++ b/Marlin/dogm_font_data_marlin.h @@ -0,0 +1,337 @@ +/* + Fontname: -Misc-Fixed-Medium-R-Normal--9-90-75-75-C-60-ISO10646-1 + Copyright: Public domain font. Share and enjoy. + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 6 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 7 len= 9 + Font Bounding box w= 6 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 6 descent=-2 + X Font ascent = 6 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include +const u8g_fntpgm_uint8_t u8g_font_6x9[2300] U8G_SECTION(".progmem.u8g_font_6x9") = { + 0,6,9,0,254,6,1,137,2,254,32,255,254,7,254,6, + 254,0,0,0,6,0,7,1,6,6,6,2,0,128,128,128, + 128,0,128,3,3,3,6,1,3,160,160,160,5,7,7,6, + 0,255,80,80,248,80,248,80,80,5,9,9,6,0,254,32, + 112,168,160,112,40,168,112,32,6,8,8,6,0,255,64,168, + 72,16,32,72,84,8,5,7,7,6,0,255,96,144,144,96, + 152,144,104,1,3,3,6,2,3,128,128,128,2,7,7,6, + 2,255,64,128,128,128,128,128,64,2,7,7,6,2,255,128, + 64,64,64,64,64,128,5,5,5,6,0,0,136,80,248,80, + 136,5,5,5,6,0,0,32,32,248,32,32,2,4,4,6, + 2,254,192,64,64,128,5,1,1,6,0,2,248,2,2,2, + 6,2,0,192,192,4,6,6,6,1,0,16,16,32,64,128, + 128,4,6,6,6,1,0,96,144,144,144,144,96,3,6,6, + 6,1,0,64,192,64,64,64,224,4,6,6,6,1,0,96, + 144,16,32,64,240,4,6,6,6,1,0,240,32,96,16,16, + 224,5,6,6,6,0,0,16,48,80,144,248,16,4,6,6, + 6,1,0,240,128,224,16,16,224,4,6,6,6,1,0,96, + 128,224,144,144,96,4,6,6,6,1,0,240,16,16,32,64, + 64,4,6,6,6,1,0,96,144,96,144,144,96,4,6,6, + 6,1,0,96,144,144,112,16,96,2,5,5,6,2,0,192, + 192,0,192,192,2,7,7,6,2,254,192,192,0,192,64,64, + 128,5,5,5,6,0,0,24,96,128,96,24,5,3,3,6, + 0,1,248,0,248,5,5,5,6,0,0,192,48,8,48,192, + 4,7,7,6,1,0,96,144,16,96,64,0,64,5,6,6, + 6,0,0,112,144,168,176,128,112,5,6,6,6,0,0,32, + 80,136,248,136,136,5,6,6,6,0,0,240,136,240,136,136, + 240,4,6,6,6,1,0,96,144,128,128,144,96,4,6,6, + 6,1,0,224,144,144,144,144,224,4,6,6,6,1,0,240, + 128,224,128,128,240,4,6,6,6,1,0,240,128,224,128,128, + 128,4,6,6,6,1,0,96,144,128,176,144,96,4,6,6, + 6,1,0,144,144,240,144,144,144,3,6,6,6,1,0,224, + 64,64,64,64,224,5,6,6,6,0,0,56,16,16,16,144, + 96,4,6,6,6,1,0,144,160,192,160,144,144,4,6,6, + 6,1,0,128,128,128,128,128,240,5,6,6,6,0,0,136, + 216,168,168,136,136,4,6,6,6,1,0,144,208,176,144,144, + 144,5,6,6,6,0,0,112,136,136,136,136,112,4,6,6, + 6,1,0,224,144,144,224,128,128,4,7,7,6,1,255,96, + 144,144,208,176,96,16,4,6,6,6,1,0,224,144,144,224, + 144,144,4,6,6,6,1,0,96,144,64,32,144,96,5,6, + 6,6,0,0,248,32,32,32,32,32,4,6,6,6,1,0, + 144,144,144,144,144,96,4,6,6,6,1,0,144,144,144,240, + 96,96,5,6,6,6,0,0,136,136,168,168,216,136,5,6, + 6,6,0,0,136,80,32,32,80,136,5,6,6,6,0,0, + 136,136,80,32,32,32,4,6,6,6,1,0,240,16,32,64, + 128,240,3,6,6,6,1,0,224,128,128,128,128,224,4,6, + 6,6,1,0,128,128,64,32,16,16,3,6,6,6,1,0, + 224,32,32,32,32,224,5,3,3,6,0,3,32,80,136,5, + 1,1,6,0,254,248,2,2,2,6,2,4,128,64,4,4, + 4,6,1,0,112,144,144,112,4,6,6,6,1,0,128,128, + 224,144,144,224,4,4,4,6,1,0,112,128,128,112,4,6, + 6,6,1,0,16,16,112,144,144,112,4,4,4,6,1,0, + 96,176,192,112,4,6,6,6,1,0,32,80,64,224,64,64, + 4,6,6,6,1,254,96,144,144,112,16,96,4,6,6,6, + 1,0,128,128,224,144,144,144,3,6,6,6,1,0,64,0, + 192,64,64,224,3,8,8,6,1,254,32,0,96,32,32,32, + 160,64,4,6,6,6,1,0,128,128,160,192,160,144,3,6, + 6,6,1,0,192,64,64,64,64,224,5,4,4,6,0,0, + 208,168,168,136,4,4,4,6,1,0,224,144,144,144,4,4, + 4,6,1,0,96,144,144,96,4,6,6,6,1,254,224,144, + 144,224,128,128,4,6,6,6,1,254,112,144,144,112,16,16, + 4,4,4,6,1,0,160,208,128,128,4,4,4,6,1,0, + 112,192,48,224,4,6,6,6,1,0,64,64,224,64,80,32, + 4,4,4,6,1,0,144,144,144,112,4,4,4,6,1,0, + 144,144,96,96,5,4,4,6,0,0,136,168,168,80,4,4, + 4,6,1,0,144,96,96,144,4,6,6,6,1,254,144,144, + 144,112,144,96,4,4,4,6,1,0,240,32,64,240,3,7, + 7,6,1,0,32,64,64,128,64,64,32,1,7,7,6,2, + 255,128,128,128,128,128,128,128,3,7,7,6,1,0,128,64, + 64,32,64,64,128,4,2,2,6,1,3,80,160,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0, + 0,6,0,7,1,6,6,6,2,0,128,0,128,128,128,128, + 4,6,6,6,1,255,32,112,160,160,112,32,5,7,7,6, + 0,255,48,72,64,240,64,64,248,5,5,5,6,0,0,168, + 80,136,80,168,5,6,6,6,0,0,136,80,248,32,248,32, + 1,7,7,6,2,255,128,128,128,0,128,128,128,4,7,7, + 6,1,255,112,128,96,144,96,16,224,3,1,1,6,1,5, + 160,6,7,7,6,0,0,120,132,148,164,148,132,120,3,5, + 5,6,1,1,96,160,96,0,224,5,5,5,6,0,0,40, + 80,160,80,40,4,3,3,6,1,0,240,16,16,4,1,1, + 6,1,2,240,6,7,7,6,0,0,120,132,180,164,164,132, + 120,4,1,1,6,1,5,240,4,3,3,6,1,2,96,144, + 96,5,7,7,6,0,255,32,32,248,32,32,0,248,3,5, + 5,6,1,1,64,160,32,64,224,3,5,5,6,1,1,192, + 32,64,32,192,2,2,2,6,2,4,64,128,4,5,5,6, + 1,255,144,144,176,208,128,5,6,6,6,0,0,120,232,232, + 104,40,40,1,1,1,6,2,2,128,2,2,2,6,2,254, + 64,128,3,5,5,6,1,1,64,192,64,64,224,3,5,5, + 6,1,1,64,160,64,0,224,5,5,5,6,0,0,160,80, + 40,80,160,5,8,8,6,0,255,64,192,64,80,112,48,120, + 16,5,8,8,6,0,255,64,192,64,80,104,8,16,56,5, + 8,8,6,0,255,192,32,64,48,240,48,120,16,4,7,7, + 6,1,0,32,0,32,96,128,144,96,5,7,7,6,0,0, + 64,32,32,80,112,136,136,5,7,7,6,0,0,16,32,32, + 80,112,136,136,5,7,7,6,0,0,32,80,32,80,112,136, + 136,5,7,7,6,0,0,40,80,32,80,112,136,136,5,7, + 7,6,0,0,80,0,32,80,112,136,136,5,7,7,6,0, + 0,32,80,32,80,112,136,136,5,6,6,6,0,0,120,160, + 240,160,160,184,4,8,8,6,1,254,96,144,128,128,144,96, + 32,64,4,7,7,6,1,0,64,32,240,128,224,128,240,4, + 7,7,6,1,0,32,64,240,128,224,128,240,4,7,7,6, + 1,0,32,80,240,128,224,128,240,4,7,7,6,1,0,80, + 0,240,128,224,128,240,3,7,7,6,1,0,128,64,224,64, + 64,64,224,3,7,7,6,1,0,32,64,224,64,64,64,224, + 3,7,7,6,1,0,64,160,224,64,64,64,224,3,7,7, + 6,1,0,160,0,224,64,64,64,224,5,6,6,6,0,0, + 112,72,232,72,72,112,4,7,7,6,1,0,80,160,144,208, + 176,144,144,4,7,7,6,1,0,64,32,96,144,144,144,96, + 4,7,7,6,1,0,32,64,96,144,144,144,96,4,7,7, + 6,1,0,32,80,96,144,144,144,96,4,7,7,6,1,0, + 80,160,96,144,144,144,96,4,7,7,6,1,0,80,0,96, + 144,144,144,96,5,5,5,6,0,0,136,80,32,80,136,4, + 8,8,6,1,255,16,112,176,176,208,208,224,128,4,7,7, + 6,1,0,64,32,144,144,144,144,96,4,7,7,6,1,0, + 32,64,144,144,144,144,96,4,7,7,6,1,0,32,80,144, + 144,144,144,96,4,7,7,6,1,0,80,0,144,144,144,144, + 96,5,7,7,6,0,0,16,32,136,80,32,32,32,4,6, + 6,6,1,0,128,224,144,144,224,128,4,6,6,6,1,0, + 96,144,160,160,144,160,4,7,7,6,1,0,64,32,0,112, + 144,144,112,4,7,7,6,1,0,32,64,0,112,144,144,112, + 4,7,7,6,1,0,32,80,0,112,144,144,112,4,7,7, + 6,1,0,80,160,0,112,144,144,112,4,6,6,6,1,0, + 80,0,112,144,144,112,4,7,7,6,1,0,32,80,32,112, + 144,144,112,5,4,4,6,0,0,112,168,176,120,4,6,6, + 6,1,254,112,128,128,112,32,64,4,7,7,6,1,0,64, + 32,0,96,176,192,112,4,7,7,6,1,0,32,64,0,96, + 176,192,112,4,7,7,6,1,0,32,80,0,96,176,192,112, + 4,6,6,6,1,0,80,0,96,176,192,112,3,7,7,6, + 1,0,128,64,0,192,64,64,224,3,7,7,6,1,0,32, + 64,0,192,64,64,224,3,7,7,6,1,0,64,160,0,192, + 64,64,224,3,6,6,6,1,0,160,0,192,64,64,224,4, + 7,7,6,1,0,48,96,16,112,144,144,96,4,7,7,6, + 1,0,80,160,0,224,144,144,144,4,7,7,6,1,0,64, + 32,0,96,144,144,96,4,7,7,6,1,0,32,64,0,96, + 144,144,96,4,7,7,6,1,0,32,80,0,96,144,144,96, + 4,7,7,6,1,0,80,160,0,96,144,144,96,4,6,6, + 6,1,0,80,0,96,144,144,96,5,5,5,6,0,0,32, + 0,248,0,32,4,4,4,6,1,0,112,176,208,224,4,7, + 7,6,1,0,64,32,0,144,144,144,112,4,7,7,6,1, + 0,32,64,0,144,144,144,112,4,7,7,6,1,0,32,80, + 0,144,144,144,112,4,6,6,6,1,0,80,0,144,144,144, + 112,4,9,9,6,1,254,32,64,0,144,144,144,112,144,96, + 4,8,8,6,1,254,128,128,224,144,144,224,128,128,4,8, + 8,6,1,254,80,0,144,144,144,112,144,96}; + +// STB Marlin +/* + Fontname: u8g_font_6x10_marlin + Copyright: Public domain terminal emulator font. Share and enjoy. + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h=10 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len=10 + Font Bounding box w= 6 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 8 descent=-2 +*/ +#include +const u8g_fntpgm_uint8_t u8g_font_6x10_marlin[2617] U8G_SECTION(".progmem.u8g_font_6x10_marlin") = { + 0,6,9,0,254,7,1,153,3,43,32,255,254,8,254,7, + 254,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,3,3,6,1,4,160,160,160,5,7,7, + 6,0,0,80,80,248,80,248,80,80,5,7,7,6,0,0, + 32,112,160,112,40,112,32,5,7,7,6,0,0,72,168,80, + 32,80,168,144,5,7,7,6,0,0,64,160,160,64,168,144, + 104,1,3,3,6,2,4,128,128,128,3,7,7,6,1,0, + 32,64,128,128,128,64,32,3,7,7,6,1,0,128,64,32, + 32,32,64,128,5,5,5,6,0,1,136,80,248,80,136,5, + 5,5,6,0,1,32,32,248,32,32,3,3,3,6,1,255, + 96,64,128,5,1,1,6,0,3,248,3,3,3,6,1,255, + 64,224,64,5,7,7,6,0,0,8,8,16,32,64,128,128, + 5,7,7,6,0,0,32,80,136,136,136,80,32,5,7,7, + 6,0,0,32,96,160,32,32,32,248,5,7,7,6,0,0, + 112,136,8,48,64,128,248,5,7,7,6,0,0,248,8,16, + 48,8,136,112,5,7,7,6,0,0,16,48,80,144,248,16, + 16,5,7,7,6,0,0,248,128,176,200,8,136,112,5,7, + 7,6,0,0,48,64,128,176,200,136,112,5,7,7,6,0, + 0,248,8,16,16,32,64,64,5,7,7,6,0,0,112,136, + 136,112,136,136,112,5,7,7,6,0,0,112,136,152,104,8, + 16,96,3,7,7,6,1,255,64,224,64,0,64,224,64,3, + 7,7,6,1,255,64,224,64,0,96,64,128,4,7,7,6, + 1,0,16,32,64,128,64,32,16,5,3,3,6,0,2,248, + 0,248,4,7,7,6,1,0,128,64,32,16,32,64,128,5, + 7,7,6,0,0,112,136,16,32,32,0,32,5,7,7,6, + 0,0,112,136,152,168,176,128,112,5,7,7,6,0,0,32, + 80,136,136,248,136,136,5,7,7,6,0,0,240,72,72,112, + 72,72,240,5,7,7,6,0,0,112,136,128,128,128,136,112, + 5,7,7,6,0,0,240,72,72,72,72,72,240,5,7,7, + 6,0,0,248,128,128,240,128,128,248,5,7,7,6,0,0, + 248,128,128,240,128,128,128,5,7,7,6,0,0,112,136,128, + 128,152,136,112,5,7,7,6,0,0,136,136,136,248,136,136, + 136,3,7,7,6,1,0,224,64,64,64,64,64,224,5,7, + 7,6,0,0,56,16,16,16,16,144,96,5,7,7,6,0, + 0,136,144,160,192,160,144,136,5,7,7,6,0,0,128,128, + 128,128,128,128,248,5,7,7,6,0,0,136,136,216,168,136, + 136,136,5,7,7,6,0,0,136,136,200,168,152,136,136,5, + 7,7,6,0,0,112,136,136,136,136,136,112,5,7,7,6, + 0,0,240,136,136,240,128,128,128,5,8,8,6,0,255,112, + 136,136,136,136,168,112,8,5,7,7,6,0,0,240,136,136, + 240,160,144,136,5,7,7,6,0,0,112,136,128,112,8,136, + 112,5,7,7,6,0,0,248,32,32,32,32,32,32,5,7, + 7,6,0,0,136,136,136,136,136,136,112,5,7,7,6,0, + 0,136,136,136,80,80,80,32,5,7,7,6,0,0,136,136, + 136,168,168,216,136,5,7,7,6,0,0,136,136,80,32,80, + 136,136,5,7,7,6,0,0,136,136,80,32,32,32,32,5, + 7,7,6,0,0,248,8,16,32,64,128,248,3,7,7,6, + 1,0,224,128,128,128,128,128,224,5,7,7,6,0,0,128, + 128,64,32,16,8,8,3,7,7,6,1,0,224,32,32,32, + 32,32,224,5,3,3,6,0,4,32,80,136,5,1,1,6, + 0,255,248,2,2,2,6,2,6,128,64,5,5,5,6,0, + 0,112,8,120,136,120,5,7,7,6,0,0,128,128,176,200, + 136,200,176,5,5,5,6,0,0,112,136,128,136,112,5,7, + 7,6,0,0,8,8,104,152,136,152,104,5,5,5,6,0, + 0,112,136,248,128,112,5,7,7,6,0,0,48,72,64,240, + 64,64,64,5,7,7,6,0,254,120,136,136,120,8,136,112, + 5,7,7,6,0,0,128,128,176,200,136,136,136,3,7,7, + 6,1,0,64,0,192,64,64,64,224,4,9,9,6,1,254, + 16,0,48,16,16,16,144,144,96,5,7,7,6,0,0,128, + 128,136,144,224,144,136,3,7,7,6,1,0,192,64,64,64, + 64,64,224,5,5,5,6,0,0,208,168,168,168,136,5,5, + 5,6,0,0,176,200,136,136,136,5,5,5,6,0,0,112, + 136,136,136,112,5,7,7,6,0,254,176,200,136,200,176,128, + 128,5,7,7,6,0,254,104,152,136,152,104,8,8,5,5, + 5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,112, + 128,112,8,240,5,7,7,6,0,0,64,64,240,64,64,72, + 48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,6, + 0,0,136,136,80,80,32,5,5,5,6,0,0,136,136,168, + 168,80,5,5,5,6,0,0,136,80,32,80,136,5,7,7, + 6,0,254,136,136,152,104,8,136,112,5,5,5,6,0,0, + 248,16,32,64,248,4,7,7,6,1,0,48,64,32,192,32, + 64,48,1,7,7,6,2,0,128,128,128,128,128,128,128,4, + 7,7,6,1,0,192,32,64,48,64,32,192,5,3,3,6, + 0,4,72,168,144,0,0,0,1,0,0,0,0,0,1,0, + 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0, + 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0, + 0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0, + 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0, + 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0, + 0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0, + 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0, + 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0, + 0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0, + 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0, + 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0, + 0,0,1,0,0,0,0,0,1,0,0,0,0,0,6,0, + 0,1,7,7,6,2,0,128,0,128,128,128,128,128,5,7, + 7,6,0,255,32,120,160,160,160,120,32,5,7,7,6,0, + 0,48,72,64,224,64,72,176,5,5,5,6,0,0,136,112, + 80,112,136,5,8,8,6,0,255,136,136,80,32,248,32,32, + 32,1,7,7,6,2,0,128,128,128,0,128,128,128,5,8, + 8,6,0,255,112,128,224,144,72,56,8,112,3,1,1,6, + 1,7,160,5,7,7,6,0,0,112,136,168,200,168,136,112, + 4,6,6,6,1,1,112,144,176,80,0,240,6,5,5,6, + 0,0,36,72,144,72,36,4,2,2,6,1,2,240,16,4, + 1,1,6,1,3,240,5,7,7,6,0,0,112,136,232,200, + 200,136,112,5,1,1,6,0,7,248,3,3,3,6,1,4, + 64,160,64,5,6,6,6,0,0,32,32,248,32,32,248,4, + 5,5,6,1,3,96,144,32,64,240,4,5,5,6,1,3, + 224,16,96,16,224,2,2,2,6,2,6,64,128,5,6,6, + 6,0,255,136,136,136,200,176,128,5,7,7,6,0,0,120, + 232,232,104,40,40,40,1,1,1,6,2,3,128,2,2,2, + 6,2,254,64,128,3,5,5,6,1,3,64,192,64,64,224, + 4,6,6,6,1,1,96,144,144,96,0,240,6,5,5,6, + 0,0,144,72,36,72,144,6,9,9,6,0,255,64,192,64, + 64,228,12,20,60,4,6,9,9,6,0,255,64,192,64,64, + 232,20,4,8,28,5,9,9,6,0,255,192,32,64,32,200, + 24,40,120,8,5,7,7,6,0,0,32,0,32,32,64,136, + 112,5,8,8,6,0,0,64,32,112,136,136,248,136,136,5, + 8,8,6,0,0,16,32,112,136,136,248,136,136,5,8,8, + 6,0,0,32,80,112,136,136,248,136,136,5,8,8,6,0, + 0,72,176,112,136,136,248,136,136,5,8,8,6,0,0,80, + 0,112,136,136,248,136,136,5,8,8,6,0,0,32,80,112, + 136,136,248,136,136,6,7,7,6,0,0,60,80,144,156,240, + 144,156,5,9,9,6,0,254,112,136,128,128,128,136,112,32, + 64,5,8,8,6,0,0,64,248,128,128,240,128,128,248,5, + 8,8,6,0,0,16,248,128,128,240,128,128,248,5,8,8, + 6,0,0,32,248,128,128,240,128,128,248,5,8,8,6,0, + 0,80,248,128,128,240,128,128,248,3,8,8,6,1,0,128, + 64,224,64,64,64,64,224,3,8,8,6,1,0,32,64,224, + 64,64,64,64,224,3,8,8,6,1,0,64,160,224,64,64, + 64,64,224,3,8,8,6,1,0,160,0,224,64,64,64,64, + 224,5,7,7,6,0,0,240,72,72,232,72,72,240,5,8, + 8,6,0,0,40,80,136,200,168,152,136,136,5,8,8,6, + 0,0,64,32,112,136,136,136,136,112,5,8,8,6,0,0, + 16,32,112,136,136,136,136,112,5,8,8,6,0,0,32,80, + 112,136,136,136,136,112,5,8,8,6,0,0,40,80,112,136, + 136,136,136,112,5,8,8,6,0,0,80,0,112,136,136,136, + 136,112,5,5,5,6,0,0,136,80,32,80,136,5,7,7, + 6,0,0,112,152,152,168,200,200,112,5,8,8,6,0,0, + 64,32,136,136,136,136,136,112,5,8,8,6,0,0,16,32, + 136,136,136,136,136,112,5,8,8,6,0,0,32,80,0,136, + 136,136,136,112,5,8,8,6,0,0,80,0,136,136,136,136, + 136,112,5,8,8,6,0,0,16,32,136,136,80,32,32,32, + 5,7,7,6,0,0,128,240,136,240,128,128,128,5,7,7, + 6,0,0,112,136,144,160,144,136,176,5,8,8,6,0,0, + 64,32,0,112,8,120,136,120,5,8,8,6,0,0,16,32, + 0,112,8,120,136,120,5,8,8,6,0,0,32,80,0,112, + 8,120,136,120,5,8,8,6,0,0,40,80,0,112,8,120, + 136,120,5,7,7,6,0,0,80,0,112,8,120,136,120,5, + 8,8,6,0,0,32,80,32,112,8,120,136,120,6,5,5, + 6,0,0,120,20,124,144,124,5,7,7,6,0,254,112,136, + 128,136,112,32,64,5,8,8,6,0,0,64,32,0,112,136, + 248,128,112,5,8,8,6,0,0,16,32,0,112,136,248,128, + 112,5,8,8,6,0,0,32,80,0,112,136,248,128,112,5, + 7,7,6,0,0,80,0,112,136,248,128,112,3,8,8,6, + 1,0,128,64,0,192,64,64,64,224,3,8,8,6,1,0, + 64,128,0,192,64,64,64,224,3,8,8,6,1,0,64,160, + 0,192,64,64,64,224,6,10,10,6,0,254,164,168,0,252, + 132,128,128,128,132,252,6,10,10,6,0,254,84,148,0,252, + 132,4,4,4,132,252,5,8,8,6,0,0,40,80,0,176, + 200,136,136,136,5,8,8,6,0,0,64,32,0,112,136,136, + 136,112,4,10,10,6,2,254,48,64,128,144,144,144,144,144, + 144,144,4,10,10,6,0,254,192,32,16,144,144,144,144,144, + 144,144,6,7,7,6,0,1,68,140,140,132,128,64,60,6, + 7,7,6,0,1,136,196,196,132,4,8,240,5,5,5,6, + 0,1,32,0,248,0,32,5,8,8,6,0,0,64,240,200, + 136,136,152,120,16,5,8,8,6,0,0,224,248,136,136,136, + 136,136,248,5,5,5,6,0,1,32,48,248,48,32,5,8, + 8,6,0,0,32,112,248,32,32,32,32,224,5,9,9,6, + 0,255,32,112,168,168,184,136,136,80,32,5,9,9,6,0, + 255,224,128,192,176,168,168,48,40,40,5,9,9,6,0,255, + 248,168,136,136,136,136,136,168,248,5,10,10,6,0,254,32, + 80,80,80,80,136,168,168,136,112}; + diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h new file mode 100644 index 000000000..4e2a567ff --- /dev/null +++ b/Marlin/dogm_lcd_implementation.h @@ -0,0 +1,445 @@ +/** + * dogm_lcd_implementation.h + * + * Graphics LCD implementation for 128x64 pixel LCDs by STB for ErikZalm/Marlin + * Demonstrator: http://www.reprap.org/wiki/STB_Electronics + * License: http://opensource.org/licenses/BSD-3-Clause + * + * With the use of: + * u8glib by Oliver Kraus + * http://code.google.com/p/u8glib/ + * License: http://opensource.org/licenses/BSD-3-Clause + */ + +#ifndef DOGM_LCD_IMPLEMENTATION_H +#define DOGM_LCD_IMPLEMENTATION_H + +#define MARLIN_VERSION "1.0.2" + +/** +* Implementation of the LCD display routines for a DOGM128 graphic display. These are common LCD 128x64 pixel graphic displays. +**/ + +#ifdef ULTIPANEL + #define BLEN_A 0 + #define BLEN_B 1 + #define BLEN_C 2 + #define EN_A (1< +#include "DOGMbitmaps.h" +#include "dogm_font_data_marlin.h" +#include "ultralcd.h" +#include "ultralcd_st7920_u8glib_rrd.h" + +/* Russian language not supported yet, needs custom font + +#ifdef LANGUAGE_RU +#include "LiquidCrystalRus.h" +#define LCD_CLASS LiquidCrystalRus +#else +#include +#define LCD_CLASS LiquidCrystal +#endif +*/ + +#define USE_BIG_EDIT_FONT // save 3120 bytes of PROGMEM by commenting out this line +#define FONT_STATUSMENU u8g_font_6x9 +#define FONT_MENU u8g_font_6x10_marlin + +// DOGM parameters (size in pixels) +#define DOG_CHAR_WIDTH 6 +#define DOG_CHAR_HEIGHT 12 +#ifdef USE_BIG_EDIT_FONT + #define FONT_MENU_EDIT u8g_font_9x18 + #define DOG_CHAR_WIDTH_EDIT 9 + #define DOG_CHAR_HEIGHT_EDIT 18 + #define LCD_WIDTH_EDIT 14 +#else + #define FONT_MENU_EDIT u8g_font_6x10_marlin + #define DOG_CHAR_WIDTH_EDIT 6 + #define DOG_CHAR_HEIGHT_EDIT 12 + #define LCD_WIDTH_EDIT 22 +#endif + +#define START_ROW 0 + +/* Custom characters defined in font font_6x10_marlin.c */ +#define LCD_STR_DEGREE "\xB0" +#define LCD_STR_REFRESH "\xF8" +#define LCD_STR_FOLDER "\xF9" +#define LCD_STR_ARROW_RIGHT "\xFA" +#define LCD_STR_UPLEVEL "\xFB" +#define LCD_STR_CLOCK "\xFC" +#define LCD_STR_FEEDRATE "\xFD" +#define LCD_STR_BEDTEMP "\xFE" +#define LCD_STR_THERMOMETER "\xFF" + +int lcd_contrast; + +// LCD selection +#ifdef U8GLIB_ST7920 +//U8GLIB_ST7920_128X64_RRD u8g(0,0,0); +U8GLIB_ST7920_128X64_RRD u8g(0); +#elif defined(MAKRPANEL) +// The MaKrPanel display, ST7565 controller as well +U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0); +#elif defined(VIKI2) || defined(miniVIKI) +// Mini Viki and Viki 2.0 LCD, ST7565 controller as well +U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0); +#else +// for regular DOGM128 display with HW-SPI +U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0); // HW-SPI Com: CS, A0 +#endif + +static void lcd_implementation_init() +{ + #ifdef LCD_PIN_BL // Enable LCD backlight + pinMode(LCD_PIN_BL, OUTPUT); + digitalWrite(LCD_PIN_BL, HIGH); + #endif + + u8g.setContrast(lcd_contrast); + // FIXME: remove this workaround + // Uncomment this if you have the first generation (V1.10) of STBs board + // pinMode(17, OUTPUT); // Enable LCD backlight + // digitalWrite(17, HIGH); + +#ifdef LCD_SCREEN_ROT_90 + u8g.setRot90(); // Rotate screen by 90° +#elif defined(LCD_SCREEN_ROT_180) + u8g.setRot180(); // Rotate screen by 180° +#elif defined(LCD_SCREEN_ROT_270) + u8g.setRot270(); // Rotate screen by 270° +#endif + + // Show splashscreen + int offx = (u8g.getWidth() - START_BMPWIDTH) / 2; + #ifdef START_BMPHIGH + int offy = 0; + #else + int offy = DOG_CHAR_HEIGHT; + #endif + + int txt1X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE1) - 1)*DOG_CHAR_WIDTH) / 2; + + u8g.firstPage(); + do { + u8g.drawBitmapP(offx, offy, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp); + u8g.setFont(FONT_MENU); + #ifndef STRING_SPLASH_LINE2 + u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1); + #else + int txt2X = (u8g.getWidth() - (sizeof(STRING_SPLASH_LINE2) - 1)*DOG_CHAR_WIDTH) / 2; + u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT*3/2, STRING_SPLASH_LINE1); + u8g.drawStr(txt2X, u8g.getHeight() - DOG_CHAR_HEIGHT*1/2, STRING_SPLASH_LINE2); + #endif + } while(u8g.nextPage()); +} + +static void lcd_implementation_clear() { } // Automatically cleared by Picture Loop + +/* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */ +static void lcd_printPGM(const char* str) { + char c; + while ((c = pgm_read_byte(str++))) u8g.print(c); +} + +static void _draw_heater_status(int x, int heater) { + bool isBed = heater < 0; + int y = 17 + (isBed ? 1 : 0); + u8g.setFont(FONT_STATUSMENU); + u8g.setPrintPos(x,6); + u8g.print(itostr3(int((heater >= 0 ? degTargetHotend(heater) : degTargetBed()) + 0.5))); + lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); + u8g.setPrintPos(x,27); + u8g.print(itostr3(int(heater >= 0 ? degHotend(heater) : degBed()) + 0.5)); + lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); + if (!isHeatingHotend(0)) { + u8g.drawBox(x+7,y,2,2); + } + else { + u8g.setColorIndex(0); // white on black + u8g.drawBox(x+7,y,2,2); + u8g.setColorIndex(1); // black on white + } +} + +static void lcd_implementation_status_screen() { + + static unsigned char fan_rot = 0; + + u8g.setColorIndex(1); // black on white + + // Symbols menu graphics, animated fan + u8g.drawBitmapP(9,1,STATUS_SCREENBYTEWIDTH,STATUS_SCREENHEIGHT, (blink % 2) && fanSpeed ? status_screen0_bmp : status_screen1_bmp); + + #ifdef SDSUPPORT + // SD Card Symbol + u8g.drawBox(42,42,8,7); + u8g.drawBox(50,44,2,5); + u8g.drawFrame(42,49,10,4); + u8g.drawPixel(50,43); + + // Progress bar frame + u8g.drawFrame(54,49,73,4); + + // SD Card Progress bar and clock + u8g.setFont(FONT_STATUSMENU); + + if (IS_SD_PRINTING) { + // Progress bar solid part + u8g.drawBox(55, 50, (unsigned int)(71.f * card.percentDone() / 100.f), 2); + } + + u8g.setPrintPos(80,47); + if (starttime != 0) { + uint16_t time = (millis() - starttime) / 60000; + u8g.print(itostr2(time/60)); + u8g.print(':'); + u8g.print(itostr2(time%60)); + } + else { + lcd_printPGM(PSTR("--:--")); + } + #endif + + // Extruders + for (int i=0; i -1 + int per = ((fanSpeed + 1) * 100) / 256; + if (per) { + u8g.print(itostr3(per)); + u8g.print("%"); + } + else + #endif + { + u8g.print("---"); + } + + // X, Y, Z-Coordinates + u8g.setFont(FONT_STATUSMENU); + u8g.drawBox(0,29,128,10); + u8g.setColorIndex(0); // white on black + u8g.setPrintPos(2,37); + u8g.print("X"); + u8g.drawPixel(8,33); + u8g.drawPixel(8,35); + u8g.setPrintPos(10,37); + u8g.print(ftostr31ns(current_position[X_AXIS])); + u8g.setPrintPos(43,37); + lcd_printPGM(PSTR("Y")); + u8g.drawPixel(49,33); + u8g.drawPixel(49,35); + u8g.setPrintPos(51,37); + u8g.print(ftostr31ns(current_position[Y_AXIS])); + u8g.setPrintPos(83,37); + u8g.print("Z"); + u8g.drawPixel(89,33); + u8g.drawPixel(89,35); + u8g.setPrintPos(91,37); + u8g.print(ftostr31(current_position[Z_AXIS])); + u8g.setColorIndex(1); // black on white + + // Feedrate + u8g.setFont(FONT_MENU); + u8g.setPrintPos(3,49); + u8g.print(LCD_STR_FEEDRATE[0]); + u8g.setFont(FONT_STATUSMENU); + u8g.setPrintPos(12,48); + u8g.print(itostr3(feedmultiply)); + u8g.print('%'); + + // Status line + u8g.setFont(FONT_STATUSMENU); + u8g.setPrintPos(0,61); + #ifndef FILAMENT_LCD_DISPLAY + u8g.print(lcd_status_message); + #else + if (millis() < message_millis + 5000) { //Display both Status message line and Filament display on the last line + u8g.print(lcd_status_message); + } + else { + lcd_printPGM(PSTR("dia:")); + u8g.print(ftostr12ns(filament_width_meas)); + lcd_printPGM(PSTR(" factor:")); + u8g.print(itostr3(extrudemultiply)); + u8g.print('%'); + } + #endif +} + +static void lcd_implementation_mark_as_selected(uint8_t row, char pr_char) { + if ((pr_char == '>') || (pr_char == LCD_STR_UPLEVEL[0] )) { + u8g.setColorIndex(1); // black on white + u8g.drawBox (0, row*DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT); + u8g.setColorIndex(0); // following text must be white on black + } + else { + u8g.setColorIndex(1); // unmarked text is black on white + } + u8g.setPrintPos(START_ROW * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT); +} + +static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, char pre_char, char post_char) { + char c; + uint8_t n = LCD_WIDTH - 2; + + lcd_implementation_mark_as_selected(row, pre_char); + + while((c = pgm_read_byte(pstr))) { + u8g.print(c); + pstr++; + n--; + } + while(n--) u8g.print(' '); + u8g.print(post_char); + u8g.print(' '); +} + +static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, const char* data, bool pgm) { + char c; + uint8_t n = LCD_WIDTH - 2 - (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data))); + + lcd_implementation_mark_as_selected(row, pre_char); + + while( (c = pgm_read_byte(pstr))) { + u8g.print(c); + pstr++; + n--; + } + u8g.print(':'); + while(n--) u8g.print(' '); + if (pgm) { lcd_printPGM(data); } else { u8g.print(data); } +} + +#define lcd_implementation_drawmenu_setting_edit_generic(row, pstr, pre_char, data) _drawmenu_setting_edit_generic(row, pstr, pre_char, data, false) +#define lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, pre_char, data) _drawmenu_setting_edit_generic(row, pstr, pre_char, data, true) + +#define lcd_implementation_drawmenu_setting_edit_int3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_int3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float32_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float32(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float52_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float52(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr52(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float51_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr51(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float51(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr51(*(data))) +#define lcd_implementation_drawmenu_setting_edit_long5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_long5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_bool_selected(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) +#define lcd_implementation_drawmenu_setting_edit_bool(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) + +//Add version for callback functions +#define lcd_implementation_drawmenu_setting_edit_callback_int3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_int3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float32_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float32(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float52_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float52(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr52(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float51_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr51(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float51(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr51(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_long5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_long5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_bool_selected(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) +#define lcd_implementation_drawmenu_setting_edit_callback_bool(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) + +void lcd_implementation_drawedit(const char* pstr, char* value) { + uint8_t rows = 1; + uint8_t lcd_width = LCD_WIDTH; + uint8_t char_width = DOG_CHAR_WIDTH; + + #ifdef USE_BIG_EDIT_FONT + if (lcd_strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) { + u8g.setFont(FONT_MENU_EDIT); + lcd_width = LCD_WIDTH_EDIT + 1; + char_width = DOG_CHAR_WIDTH_EDIT; + if (lcd_strlen_P(pstr) >= LCD_WIDTH_EDIT - lcd_strlen(value)) rows = 2; + } + else { + u8g.setFont(FONT_MENU); + } + #endif + + if (lcd_strlen_P(pstr) > LCD_WIDTH - 2 - lcd_strlen(value)) rows = 2; + + const float kHalfChar = DOG_CHAR_HEIGHT_EDIT / 2; + float rowHeight = u8g.getHeight() / (rows + 1); // 1/(rows+1) = 1/2 or 1/3 + + u8g.setPrintPos(0, rowHeight + kHalfChar); + lcd_printPGM(pstr); + u8g.print(':'); + u8g.setPrintPos((lcd_width-1-lcd_strlen(value)) * char_width, rows * rowHeight + kHalfChar); + u8g.print(value); +} + +static void _drawmenu_sd(uint8_t row, const char* pstr, const char* filename, char * const longFilename, bool isDir, bool isSelected) { + char c; + uint8_t n = LCD_WIDTH - 1; + + if (longFilename[0] != '\0') { + filename = longFilename; + longFilename[n] = '\0'; + } + + lcd_implementation_mark_as_selected(row, ((isSelected) ? '>' : ' ')); + + if (isDir) u8g.print(LCD_STR_FOLDER[0]); + while((c = *filename) != '\0') { + u8g.print(c); + filename++; + n--; + } + while(n--) u8g.print(' '); +} + +#define lcd_implementation_drawmenu_sdfile_selected(row, pstr, filename, longFilename) _drawmenu_sd(row, pstr, filename, longFilename, false, true) +#define lcd_implementation_drawmenu_sdfile(row, pstr, filename, longFilename) _drawmenu_sd(row, pstr, filename, longFilename, false, false) +#define lcd_implementation_drawmenu_sddirectory_selected(row, pstr, filename, longFilename) _drawmenu_sd(row, pstr, filename, longFilename, true, true) +#define lcd_implementation_drawmenu_sddirectory(row, pstr, filename, longFilename) _drawmenu_sd(row, pstr, filename, longFilename, true, false) + +#define lcd_implementation_drawmenu_back_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0]) +#define lcd_implementation_drawmenu_back(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', LCD_STR_UPLEVEL[0]) +#define lcd_implementation_drawmenu_submenu_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', LCD_STR_ARROW_RIGHT[0]) +#define lcd_implementation_drawmenu_submenu(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', LCD_STR_ARROW_RIGHT[0]) +#define lcd_implementation_drawmenu_gcode_selected(row, pstr, gcode) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ') +#define lcd_implementation_drawmenu_gcode(row, pstr, gcode) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ') +#define lcd_implementation_drawmenu_function_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ') +#define lcd_implementation_drawmenu_function(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ') + +static void lcd_implementation_quick_feedback() { + #if BEEPER > -1 + SET_OUTPUT(BEEPER); + for(int8_t i=0; i<10; i++) { + WRITE(BEEPER,HIGH); + delay(3); + WRITE(BEEPER,LOW); + delay(3); + } + #endif +} + +#endif //__DOGM_LCD_IMPLEMENTATION_H diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h new file mode 100644 index 000000000..c1bb413aa --- /dev/null +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -0,0 +1,868 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include "boards.h" + +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ + +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration + +//=========================================================================== +//============================= DELTA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/delta directory. +// + +//=========================================================================== +//============================= SCARA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/SCARA directory. +// + +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "1.0.2" +#define STRING_URL "reprap.org" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(bq Hephestos)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 + +// This determines the communication speed of the printer +#define BAUDRATE 115200 + +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_HEPHESTOS +#endif + +// Define this to set a custom name for your generic Mendel, +// #define CUSTOM_MENDEL_NAME "This Mendel" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 1 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) + +#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 0 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 10 // (seconds) +#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should use MINTEMP for thermistor short/failure protection. +#define HEATER_0_MAXTEMP 260 +#define HEATER_1_MAXTEMP 260 +#define HEATER_2_MAXTEMP 260 +#define HEATER_3_MAXTEMP 260 +#define BED_MAXTEMP 150 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R +//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// Comment the following line to disable PID and enable bang-bang. +#define PIDTEMP +#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current +#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#ifdef PIDTEMP + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay + //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] + #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// Ultimaker +// #define DEFAULT_Kp 22.2 +// #define DEFAULT_Ki 1.08 +// #define DEFAULT_Kd 114 + +// MakerGear +// #define DEFAULT_Kp 7.0 +// #define DEFAULT_Ki 0.1 +// #define DEFAULT_Kd 12 + +// Mendel Parts V9 on 12V +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki 2.25 +// #define DEFAULT_Kd 440 + +// Hephestos (i3) + #define DEFAULT_Kp 23.05 + #define DEFAULT_Ki 2.00 + #define DEFAULT_Kd 66.47 + +#endif // PIDTEMP + +//=========================================================================== +//============================= PID > Bed Temperature Control =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +//#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + #define DEFAULT_bedKp 10.00 + #define DEFAULT_bedKi .023 + #define DEFAULT_bedKd 305.4 + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE + +#define EXTRUDE_MINTEMP 170 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius + + +//=========================================================================== +//============================= Mechanical Settings ========================= +//=========================================================================== + +// Uncomment the following line to enable CoreXY kinematics +// #define COREXY + +// coarse Endstop Settings +#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + // #define ENDSTOPPULLUP_XMIN + // #define ENDSTOPPULLUP_YMIN + // #define ENDSTOPPULLUP_ZMIN +#endif + +#ifdef ENDSTOPPULLUPS + #define ENDSTOPPULLUP_XMAX + #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. +const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +//#define DISABLE_MAX_ENDSTOPS +//#define DISABLE_MIN_ENDSTOPS + +// Disable max endstops for compatibility with endstop checking routine +#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) + #define DISABLE_MAX_ENDSTOPS +#endif + +// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +#define X_ENABLE_ON 0 +#define Y_ENABLE_ON 0 +#define Z_ENABLE_ON 0 +#define E_ENABLE_ON 0 // For all extruders + +// Disables axis when it's not being used. +#define DISABLE_X false +#define DISABLE_Y false +#define DISABLE_Z false +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled + +#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false + +// ENDSTOP SETTINGS: +// Sets direction of endstops when homing; 1=MAX, -1=MIN +#define X_HOME_DIR -1 +#define Y_HOME_DIR -1 +#define Z_HOME_DIR -1 + +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units in mm) +#define X_MAX_POS 215 +#define X_MIN_POS 0 +#define Y_MAX_POS 210 +#define Y_MIN_POS 0 +#define Z_MAX_POS 180 +#define Z_MIN_POS 0 + +#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) +#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) +#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) +#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled. + +#ifdef ENABLE_AUTO_BED_LEVELING + +// There are 2 different ways to pick the X and Y locations to probe: + +// - "grid" mode +// Probe every point in a rectangular grid +// You must specify the rectangle, and the density of sample points +// This mode is preferred because there are more measurements. +// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive + +// - "3-point" mode +// Probe 3 arbitrary points on the bed (that aren't colinear) +// You must specify the X & Y coordinates of all 3 points + + #define AUTO_BED_LEVELING_GRID + // with AUTO_BED_LEVELING_GRID, the bed is sampled in a + // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid + // and least squares solution is calculated + // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID + + // set the rectangle in which to probe + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define BACK_PROBE_BED_POSITION 180 + #define FRONT_PROBE_BED_POSITION 20 + + // set the number of grid points per dimension + // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + #define AUTO_BED_LEVELING_GRID_POINTS 2 + + + #else // not AUTO_BED_LEVELING_GRID + // with no grid, just probe 3 arbitrary points. A simple cross-product + // is used to esimate the plane of the print bed + + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + + #endif // AUTO_BED_LEVELING_GRID + + + // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + + #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + // Be sure you have this distance over your Z_MAX_POS in case + + #define XY_TRAVEL_SPEED 8000 // X and Y axis travel speed between probes, in mm/min + + #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. + #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + + //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell + //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. + + //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk + //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. + // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. + +// #define PROBE_SERVO_DEACTIVATION_DELAY 300 + + +//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, +//it is highly recommended you let this Z_SAFE_HOMING enabled!!! + + #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area. + // When defined, it will: + // - Allow Z homing only after X and Y homing AND stepper drivers still enabled + // - If stepper drivers timeout, it will need X and Y homing again before Z homing + // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) + // - Block Z homing only when the probe is outside bed area. + + #ifdef Z_SAFE_HOMING + + #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2) // X point for Z homing when homing all axis (G28) + #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2) // Y point for Z homing when homing all axis (G28) + + #endif + + #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range + #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #else + #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #endif + #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #else + #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #endif + + + #endif + +#endif // ENABLE_AUTO_BED_LEVELING + + +// The position of the homing switches +//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +//Manual homing switch locations: +// For deltabots this means top and center of the Cartesian print volume. +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 0 +//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing. + +//// MOVEMENT SETTINGS +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {2000, 2000, 150, 0} // set the homing speeds (mm/min) + +// default settings + +#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,100.47095761381482} // default steps per unit for Ultimaker +#define DEFAULT_MAX_FEEDRATE {250, 250, 3.3, 25} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {3000,3000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 10.0 // (mm/sec) +#define DEFAULT_ZJERK 0.4 // (mm/sec) +#define DEFAULT_EJERK 5.0 // (mm/sec) + + +//=========================================================================== +//============================= Additional Features ========================= +//=========================================================================== + +// Custom M code points +#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -15 + #define Z_PROBE_OFFSET_RANGE_MAX -5 +#endif + + +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +//#define EEPROM_SETTINGS +//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: +// please keep turned on if you can. +//#define EEPROM_CHITCHAT + +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 200 +#define PLA_PREHEAT_HPB_TEMP 0 +#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +#define ABS_PREHEAT_HOTEND_TEMP 220 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +//LCD and SD support + +// Character based displays can have different extended charsets. +#define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" +//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one. + +#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +#define SDSUPPORT // Enable SD Card Support in Hardware Console +//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller +// +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click + +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL + +//automatic expansion +#if defined (MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 +#endif + +#if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 +#endif + +#if defined (PANEL_ONE) + #define SDSUPPORT + #define ULTIMAKERCONTROLLER +#endif + +#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#endif + +#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL +#endif + +#if defined(REPRAPWORLD_KEYPAD) + #define NEWPANEL + #define ULTIPANEL +#endif +#if defined(RA_CONTROL_PANEL) + #define ULTIPANEL + #define NEWPANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander +#endif + +//I2C PANELS + +//#define LCD_I2C_SAINSMART_YWROBOT +#ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define NEWPANEL + #define ULTIPANEL +#endif + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 +#ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + #define NEWPANEL + #define ULTIPANEL + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + +#endif + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI +#ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define NEWPANEL + #define ULTIPANEL +#endif + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD +#ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define NEWPANEL + #define ULTIPANEL +#endif + + +#ifdef ULTIPANEL +// #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif +#else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif +#endif + +// default LCD contrast for dogm-like LCD displays +#ifdef DOGLCD +# ifndef DEFAULT_LCD_CONTRAST +# define DEFAULT_LCD_CONTRAST 32 +# endif +#endif + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //__CONFIGURATION_H diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h new file mode 100644 index 000000000..0a9c8a129 --- /dev/null +++ b/Marlin/example_configurations/Hephestos/Configuration_adv.h @@ -0,0 +1,540 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +//#define WATCH_TEMP_PERIOD 40000 //40 seconds +//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heating power, proportional to the extrusion speed. + // if Kc is chosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S B F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value +// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results +// as long as it supports dual x-carriages. (M605 S0) +// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so +// that additional slicer support is not required. (M605 S1) +// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all +// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at +// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + +// This is the default power-up mode which can be later using M605. +#define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + +// Default settings in "Auto-park Mode" +#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder +#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + +// Default x offset in duplication mode (typically set to half print bed width) +#define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_RETRACT_MM 5 +#define Y_HOME_RETRACT_MM 5 +#define Z_HOME_RETRACT_MM 2 +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. + +#define AXIS_RELATIVE_MODES {false, false, false, false} +#ifdef CONFIG_STEPPERS_TOSHIBA +#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers +#else +#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) +#endif +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#define INVERT_X_STEP_PIN false +#define INVERT_Y_STEP_PIN false +#define INVERT_Z_STEP_PIN false +#define INVERT_E_STEP_PIN false + +//default stepper release if idle. Set to 0 to deactivate. +#define DEFAULT_STEPPER_DEACTIVE_TIME 60 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// Feedrates for manual moves along X, Y, Z, E from panel +#ifdef ULTIPANEL +#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // set the speeds for manual moves (mm/min) +#endif + +//Comment to disable setting feedrate multiplier via encoder +#ifdef ULTIPANEL + #define ULTIPANEL_FEEDMULTIPLY +#endif + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +#define SLOWDOWN + +// Frequency limit +// See nophead's blog for more info +// Not working O +//#define XY_FREQUENCY_LIMIT 15 + +// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end +// of the buffer and all stops. This should not be much greater than zero and should only be changed +// if unwanted behavior is observed on a user's machine when running at very slow speeds. +#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) + +// MS1 MS2 Stepper Driver Microstepping mode table +#define MICROSTEP1 LOW,LOW +#define MICROSTEP2 HIGH,LOW +#define MICROSTEP4 LOW,HIGH +#define MICROSTEP8 HIGH,HIGH +#define MICROSTEP16 HIGH,HIGH + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 8 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + +#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. +// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. +// using: +#define MENU_ADDAUTOSTART + +// Show a progress bar on HD44780 LCDs for SD printing +//#define LCD_PROGRESS_BAR + +#ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 3000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE + #ifdef DOGLCD + #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. + #endif + #ifdef FILAMENT_LCD_DISPLAY + #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. + #endif +#endif + +// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in real-time +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements + + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + + #ifdef DELTA + #ifdef BABYSTEP_XY + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif +#endif + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// Hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +//#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + + #define D_FILAMENT 1.75 + #define STEPS_MM_E 100.47095761381482 + #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) + +#endif // ADVANCE + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted +// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT +// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should +// be commented out otherwise +#define SDCARDDETECTINVERTED + +#ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED +#endif + +// Power Signal Control Definitions +// By default use ATX definition +#ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 +#endif +// 1 = ATX +#if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH +#endif +// 2 = X-Box 360 203W +#if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW +#endif + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//=============================Buffers ============================ +//=========================================================================== + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. +#if defined SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller +#else + #define BLOCK_BUFFER_SIZE 16 // maximize block buffer +#endif + + +//The ASCII buffer for receiving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 5 + + +// Firmware based and LCD controlled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +// #define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 3 //default retract length (positive mm) + #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change + #define RETRACT_FEEDRATE 80*60 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + //#define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) + #define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s) +#endif + +//adds support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + #define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +#ifdef FILAMENTCHANGEENABLE + #ifdef EXTRUDER_RUNOUT_PREVENT + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE + #endif +#endif + +//=========================================================================== +//============================= Define Defines ============================ +//=========================================================================== + +#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA) + #error "Bed Auto Leveling is still not compatible with Delta Kinematics." +#endif + +#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT + #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" +#endif + +#if EXTRUDERS > 1 && defined HEATERS_PARALLEL + #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" +#endif + +#if TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR +#endif +#if TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR +#endif +#if TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR +#endif +#if TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR +#endif +#if TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR +#endif +#if TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 +#endif +#if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 +#endif +#if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 +#endif +#if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 +#endif +#if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 +#endif +#if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 +#endif +#if TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP +#endif +#if TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP +#endif +#if TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP +#endif +#if TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif +#if TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP +#endif + + +#endif //__CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h new file mode 100644 index 000000000..b56e05301 --- /dev/null +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -0,0 +1,878 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include "boards.h" + + +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ + +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration + +//=========================================================================== +//============================= DELTA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/delta directory. +// + +//=========================================================================== +//============================= SCARA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/SCARA directory. +// + +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "v1.0.2" +#define STRING_URL "reprap.org" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(K8200, CONSULitAS)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 + +// This determines the communication speed of the printer +#define BAUDRATE 250000 + +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_K8200 +#endif + +// Define this to set a custom name for your generic Mendel, +// #define CUSTOM_MENDEL_NAME "This Mendel" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 1 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) + +#define TEMP_SENSOR_0 5 +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 5 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 10 // (seconds) +#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should use MINTEMP for thermistor short/failure protection. +#define HEATER_0_MAXTEMP 275 +#define HEATER_1_MAXTEMP 275 +#define HEATER_2_MAXTEMP 275 +#define HEATER_3_MAXTEMP 275 +#define BED_MAXTEMP 150 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R +//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// Comment the following line to disable PID and enable bang-bang. +#define PIDTEMP +#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current +#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#ifdef PIDTEMP + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay + //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] + #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// Ultimaker +// #define DEFAULT_Kp 22.2 +// #define DEFAULT_Ki 1.08 +// #define DEFAULT_Kd 114 + +// MakerGear +// #define DEFAULT_Kp 7.0 +// #define DEFAULT_Ki 0.1 +// #define DEFAULT_Kd 12 + +// Mendel Parts V9 on 12V +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki 2.25 +// #define DEFAULT_Kd 440 + +// Vellemann K8200 Extruder - calculated with PID Autotune and tested + #define DEFAULT_Kp 24.29 + #define DEFAULT_Ki 1.58 + #define DEFAULT_Kd 93.51 +#endif // PIDTEMP + +//=========================================================================== +//============================= PID > Bed Temperature Control =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +//#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) +// #define DEFAULT_bedKp 10.00 +// #define DEFAULT_bedKi .023 +// #define DEFAULT_bedKd 305.4 + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +//Vellemann K8200 PCB heatbed with standard PCU - calculated with PID Autotune and tested +//from pidautotune + #define DEFAULT_bedKp 341.88 + #define DEFAULT_bedKi 25.32 + #define DEFAULT_bedKd 1153.89 + + // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE + +#define EXTRUDE_MINTEMP 170 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius + + +//=========================================================================== +//============================= Mechanical Settings ========================= +//=========================================================================== + +// Uncomment the following line to enable CoreXY kinematics +// #define COREXY + +// coarse Endstop Settings +#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +#ifdef ENDSTOPPULLUPS + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +#define DISABLE_MAX_ENDSTOPS +//#define DISABLE_MIN_ENDSTOPS + +// Disable max endstops for compatibility with endstop checking routine +#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) + #define DISABLE_MAX_ENDSTOPS +#endif + +// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +#define X_ENABLE_ON 0 +#define Y_ENABLE_ON 0 +#define Z_ENABLE_ON 0 +#define E_ENABLE_ON 0 // For all extruders + +// Disables axis when it's not being used. +#define DISABLE_X false +#define DISABLE_Y false +#define DISABLE_Z true +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled + +#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E3_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false + +// ENDSTOP SETTINGS: +// Sets direction of endstops when homing; 1=MAX, -1=MIN +#define X_HOME_DIR -1 +#define Y_HOME_DIR -1 +#define Z_HOME_DIR -1 + +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units are in mm) +#define X_MAX_POS 200 +#define X_MIN_POS 0 +#define Y_MAX_POS 200 +#define Y_MIN_POS 0 +#define Z_MAX_POS 200 +#define Z_MIN_POS 0 + +#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) +#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) +#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) +#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled. + +#ifdef ENABLE_AUTO_BED_LEVELING + +// There are 2 different ways to pick the X and Y locations to probe: + +// - "grid" mode +// Probe every point in a rectangular grid +// You must specify the rectangle, and the density of sample points +// This mode is preferred because there are more measurements. +// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive + +// - "3-point" mode +// Probe 3 arbitrary points on the bed (that aren't colinear) +// You must specify the X & Y coordinates of all 3 points + + #define AUTO_BED_LEVELING_GRID + // with AUTO_BED_LEVELING_GRID, the bed is sampled in a + // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid + // and least squares solution is calculated + // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID + + // set the rectangle in which to probe + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define BACK_PROBE_BED_POSITION 180 + #define FRONT_PROBE_BED_POSITION 20 + + // set the number of grid points per dimension + // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + #define AUTO_BED_LEVELING_GRID_POINTS 2 + + + #else // not AUTO_BED_LEVELING_GRID + // with no grid, just probe 3 arbitrary points. A simple cross-product + // is used to esimate the plane of the print bed + + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + + #endif // AUTO_BED_LEVELING_GRID + + + // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + + #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + // Be sure you have this distance over your Z_MAX_POS in case + + #define XY_TRAVEL_SPEED 8000 // X and Y axis travel speed between probes, in mm/min + + #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. + #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + + //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell + //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. + + //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk + //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. + // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. + +// #define PROBE_SERVO_DEACTIVATION_DELAY 300 + + +//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, +//it is highly recommended you let this Z_SAFE_HOMING enabled!!! + + #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area. + // When defined, it will: + // - Allow Z homing only after X and Y homing AND stepper drivers still enabled + // - If stepper drivers timeout, it will need X and Y homing again before Z homing + // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) + // - Block Z homing only when the probe is outside bed area. + + #ifdef Z_SAFE_HOMING + + #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2) // X point for Z homing when homing all axis (G28) + #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2) // Y point for Z homing when homing all axis (G28) + + #endif + + #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range + #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #else + #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #endif + #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #else + #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #endif + + + #endif + +#endif // ENABLE_AUTO_BED_LEVELING + + +// The position of the homing switches +//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +//Manual homing switch locations: +// For deltabots this means top and center of the Cartesian print volume. +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 0 +//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing. + +//// MOVEMENT SETTINGS +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min) + +// default settings + +#define DEFAULT_AXIS_STEPS_PER_UNIT {64.25,64.25,2560,600} // default steps per unit for K8200 +#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 500} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 1000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 20.0 // (mm/sec) +#define DEFAULT_ZJERK 0.4 // (mm/sec) +#define DEFAULT_EJERK 5.0 // (mm/sec) + + +//=========================================================================== +//============================= Additional Features ========================= +//=========================================================================== + +// Custom M code points +#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -15 + #define Z_PROBE_OFFSET_RANGE_MAX -5 +#endif + + +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +#define EEPROM_SETTINGS +//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: +// please keep turned on if you can. +//#define EEPROM_CHITCHAT + +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 190 +#define PLA_PREHEAT_HPB_TEMP 50 +#define PLA_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 + +#define ABS_PREHEAT_HOTEND_TEMP 240 +#define ABS_PREHEAT_HPB_TEMP 60 +#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 + +//LCD and SD support + +// VM8201 (LCD Option for K8200) uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER" + +// Character based displays can have different extended charsets. +#define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" +//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one. + +//#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +//#define SDSUPPORT // Enable SD Card Support in Hardware Console +//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +//#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +//#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller +// +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click + +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL + +//automatic expansion +#if defined (MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 +#endif + +#if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 +#endif + +#if defined (PANEL_ONE) + #define SDSUPPORT + #define ULTIMAKERCONTROLLER +#endif + +#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#endif + +#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL +#endif + +#if defined(REPRAPWORLD_KEYPAD) + #define NEWPANEL + #define ULTIPANEL +#endif +#if defined(RA_CONTROL_PANEL) + #define ULTIPANEL + #define NEWPANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander +#endif + +//I2C PANELS + +//#define LCD_I2C_SAINSMART_YWROBOT +#ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define NEWPANEL + #define ULTIPANEL +#endif + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 +#ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + #define NEWPANEL + #define ULTIPANEL + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + +#endif + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI +#ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define NEWPANEL + #define ULTIPANEL +#endif + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD +#ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define NEWPANEL + #define ULTIPANEL +#endif + + +#ifdef ULTIPANEL +// #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif +#else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif +#endif + +// default LCD contrast for dogm-like LCD displays +#ifdef DOGLCD +# ifndef DEFAULT_LCD_CONTRAST +# define DEFAULT_LCD_CONTRAST 32 +# endif +#endif + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //__CONFIGURATION_H diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h new file mode 100644 index 000000000..bf2daede0 --- /dev/null +++ b/Marlin/example_configurations/K8200/Configuration_adv.h @@ -0,0 +1,540 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +//#define WATCH_TEMP_PERIOD 40000 //40 seconds +//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heating power, proportional to the extrusion speed. + // if Kc is chosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S B F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value +// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results +// as long as it supports dual x-carriages. (M605 S0) +// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so +// that additional slicer support is not required. (M605 S1) +// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all +// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at +// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + +// This is the default power-up mode which can be later using M605. +#define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + +// Default settings in "Auto-park Mode" +#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder +#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + +// Default x offset in duplication mode (typically set to half print bed width) +#define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_RETRACT_MM 5 +#define Y_HOME_RETRACT_MM 5 +#define Z_HOME_RETRACT_MM 3 +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. + +#define AXIS_RELATIVE_MODES {false, false, false, false} +#ifdef CONFIG_STEPPERS_TOSHIBA +#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers +#else +#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) +#endif +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#define INVERT_X_STEP_PIN false +#define INVERT_Y_STEP_PIN false +#define INVERT_Z_STEP_PIN false +#define INVERT_E_STEP_PIN false + +//default stepper release if idle. Set to 0 to deactivate. +#define DEFAULT_STEPPER_DEACTIVE_TIME 60 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// Feedrates for manual moves along X, Y, Z, E from panel +#ifdef ULTIPANEL +#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) +#endif + +//Comment to disable setting feedrate multiplier via encoder +#ifdef ULTIPANEL + #define ULTIPANEL_FEEDMULTIPLY +#endif + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +#define SLOWDOWN + +// Frequency limit +// See nophead's blog for more info +// Not working O +//#define XY_FREQUENCY_LIMIT 15 + +// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end +// of the buffer and all stops. This should not be much greater than zero and should only be changed +// if unwanted behavior is observed on a user's machine when running at very slow speeds. +#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) + +// MS1 MS2 Stepper Driver Microstepping mode table +#define MICROSTEP1 LOW,LOW +#define MICROSTEP2 HIGH,LOW +#define MICROSTEP4 LOW,HIGH +#define MICROSTEP8 HIGH,HIGH +#define MICROSTEP16 HIGH,HIGH + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 8 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + +#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. +// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. +// using: +//#define MENU_ADDAUTOSTART + +// Show a progress bar on HD44780 LCDs for SD printing +//#define LCD_PROGRESS_BAR + +#ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 3000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE + #ifdef DOGLCD + #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. + #endif + #ifdef FILAMENT_LCD_DISPLAY + #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. + #endif +#endif + +// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in real-time +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements + + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + + #ifdef DELTA + #ifdef BABYSTEP_XY + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif +#endif + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// Hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +//#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + + #define D_FILAMENT 2.85 + #define STEPS_MM_E 836 + #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) + +#endif // ADVANCE + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted +// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT +// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should +// be commented out otherwise +#define SDCARDDETECTINVERTED + +#ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED +#endif + +// Power Signal Control Definitions +// By default use ATX definition +#ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 +#endif +// 1 = ATX +#if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH +#endif +// 2 = X-Box 360 203W +#if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW +#endif + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//=============================Buffers ============================ +//=========================================================================== + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. +#if defined SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller +#else + #define BLOCK_BUFFER_SIZE 16 // maximize block buffer +#endif + + +//The ASCII buffer for receiving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 4 + + +// Firmware based and LCD controlled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +// #define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 3 //default retract length (positive mm) + #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change + #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) + #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) +#endif + +//adds support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + #define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +#ifdef FILAMENTCHANGEENABLE + #ifdef EXTRUDER_RUNOUT_PREVENT + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE + #endif +#endif + +//=========================================================================== +//============================= Define Defines ============================ +//=========================================================================== + +#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA) + #error "Bed Auto Leveling is still not compatible with Delta Kinematics." +#endif + +#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT + #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" +#endif + +#if EXTRUDERS > 1 && defined HEATERS_PARALLEL + #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" +#endif + +#if TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR +#endif +#if TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR +#endif +#if TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR +#endif +#if TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR +#endif +#if TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR +#endif +#if TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 +#endif +#if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 +#endif +#if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 +#endif +#if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 +#endif +#if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 +#endif +#if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 +#endif +#if TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP +#endif +#if TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP +#endif +#if TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP +#endif +#if TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif +#if TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP +#endif + + +#endif //__CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/K8200/readme.md b/Marlin/example_configurations/K8200/readme.md new file mode 100644 index 000000000..79cb6e039 --- /dev/null +++ b/Marlin/example_configurations/K8200/readme.md @@ -0,0 +1,13 @@ +# Example Configuration for Vellemann K8200 +* Configuration files for **Vellemann K8200** (with VM8201 - LCD Option for K8200) +* K8200 is a 3Drag clone - configuration should work with 3Drag http://reprap.org/wiki/3drag, too. Please report. + +* updated manually with parameters form genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the recent development branch + +* VM8201 uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER" +* german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support + +I (@CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.0.5 for Windows (SD library added to IDE manually) - everything works well. + +**Source for genuine Vellemann Firmware V2 (with LCD/SD-Support):** +* [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip) \ No newline at end of file diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h new file mode 100644 index 000000000..45584c162 --- /dev/null +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -0,0 +1,869 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include "boards.h" + + +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ + + +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration + +//=========================================================================== +//========================= SCARA Settings ================================== +//=========================================================================== +// SCARA-mode for Marlin has been developed by QHARLEY in ZA in 2012/2013. Implemented +// and slightly reworked by JCERNY in 06/2014 with the goal to bring it into Master-Branch +// QHARLEYS Autobedlevelling has not been ported, because Marlin has now Bed-levelling +// You might need Z-Min endstop on SCARA-Printer to use this feature. Actually untested! +// Uncomment to use Morgan scara mode +#define SCARA +#define scara_segments_per_second 200 //careful, two much will decrease performance... +// Length of inner support arm +#define Linkage_1 150 //mm Preprocessor cannot handle decimal point... +// Length of outer support arm Measure arm lengths precisely and enter +#define Linkage_2 150 //mm + +// SCARA tower offset (position of Tower relative to bed zero position) +// This needs to be reasonably accurate as it defines the printbed position in the SCARA space. +#define SCARA_offset_x 100 //mm +#define SCARA_offset_y -56 //mm +#define SCARA_RAD2DEG 57.2957795 // to convert RAD to degrees + +#define THETA_HOMING_OFFSET 0 //calculatated from Calibration Guide and command M360 / M114 see picture in http://reprap.harleystudio.co.za/?page_id=1073 +#define PSI_HOMING_OFFSET 0 // calculatated from Calibration Guide and command M364 / M114 see picture in http://reprap.harleystudio.co.za/?page_id=1073 + +//some helper variables to make kinematics faster +#define L1_2 sq(Linkage_1) // do not change +#define L2_2 sq(Linkage_2) // do not change + +//=========================================================================== +//========================= SCARA Settings end ================================== +//=========================================================================== + +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "1.0.2" +#define STRING_URL "reprap.org" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 + +// This determines the communication speed of the printer +// This determines the communication speed of the printer +#define BAUDRATE 250000 + +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_RAMPS_13_EFB +#endif + +// Define this to set a custom name for your generic Mendel, +// #define CUSTOM_MENDEL_NAME "This Mendel" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 1 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) + +#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 1 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 3 // (seconds) +#define TEMP_HYSTERESIS 2 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should use MINTEMP for thermistor short/failure protection. +#define HEATER_0_MAXTEMP 275 +#define HEATER_1_MAXTEMP 275 +#define HEATER_2_MAXTEMP 275 +#define HEATER_3_MAXTEMP 275 +#define BED_MAXTEMP 150 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +#define EXTRUDER_WATTS (2*2/5.9) // P=I^2/R +#define BED_WATTS (5.45*5.45/2.2) // P=I^2/R + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// Comment the following line to disable PID and enable bang-bang. +#define PIDTEMP +#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current +#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#ifdef PIDTEMP + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + #define PID_FUNCTIONAL_RANGE 20 // If the temperature difference between the target temperature and the actual temperature + // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + #define PID_dT ((OVERSAMPLENR * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// Ultimaker + // #define DEFAULT_Kp 22.2 + // #define DEFAULT_Ki 1.08 + // #define DEFAULT_Kd 114 + + // Jhead MK5: From Autotune + // #define DEFAULT_Kp 20.92 + // #define DEFAULT_Ki 1.51 + // #define DEFAULT_Kd 72.34 + + //Merlin Hotend: From Autotune + #define DEFAULT_Kp 24.5 + #define DEFAULT_Ki 1.72 + #define DEFAULT_Kd 87.73 + +// MakerGear +// #define DEFAULT_Kp 7.0 +// #define DEFAULT_Ki 0.1 +// #define DEFAULT_Kd 12 + +// Mendel Parts V9 on 12V + // #define DEFAULT_Kp 63.0 + // #define DEFAULT_Ki 2.25 + // #define DEFAULT_Kd 440 +#endif // PIDTEMP + +//=========================================================================== +//============================= PID > Bed Temperature Control =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +#define PIDTEMPBED +// +#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + // #define DEFAULT_bedKp 10.00 + // #define DEFAULT_bedKi .023 + // #define DEFAULT_bedKd 305.4 + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +//12v Heatbed Mk3 12V in parallel +//from pidautotune + #define DEFAULT_bedKp 630.14 + #define DEFAULT_bedKi 121.71 + #define DEFAULT_bedKd 815.64 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + + +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +//#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE + +#define EXTRUDE_MINTEMP 150 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius + + +//=========================================================================== +//============================ Mechanical Settings ========================== +//=========================================================================== + +// Uncomment the following line to enable CoreXY kinematics +// #define COREXY + +// coarse Endstop Settings +//#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX // open pin, inverted + #define ENDSTOPPULLUP_XMIN // open pin, inverted + #define ENDSTOPPULLUP_YMIN // open pin, inverted + // #define ENDSTOPPULLUP_ZMIN +#endif + +#ifdef ENDSTOPPULLUPS + #define ENDSTOPPULLUP_XMAX + #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. +const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +//#define DISABLE_MAX_ENDSTOPS +//#define DISABLE_MIN_ENDSTOPS + +// Disable max endstops for compatibility with endstop checking routine +#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) + #define DISABLE_MAX_ENDSTOPS +#endif + +// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +#define X_ENABLE_ON 0 +#define Y_ENABLE_ON 0 +#define Z_ENABLE_ON 0 +#define E_ENABLE_ON 0 // For all extruders + +// Disables axis when it's not being used. +#define DISABLE_X false +#define DISABLE_Y false +#define DISABLE_Z false +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled + +#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false + +// ENDSTOP SETTINGS: +// Sets direction of endstop s when homing; 1=MAX, -1=MIN +#define X_HOME_DIR 1 +#define Y_HOME_DIR 1 +#define Z_HOME_DIR -1 + +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units are in mm) +#define X_MAX_POS 200 +#define X_MIN_POS 0 +#define Y_MAX_POS 200 +#define Y_MIN_POS 0 +#define Z_MAX_POS 225 +#define Z_MIN_POS MANUAL_Z_HOME_POS + +#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) +#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) +#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) + +#ifdef ENABLE_AUTO_BED_LEVELING + +// There are 2 different ways to pick the X and Y locations to probe: + +// - "grid" mode +// Probe every point in a rectangular grid +// You must specify the rectangle, and the density of sample points +// This mode is preferred because there are more measurements. +// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive + +// - "3-point" mode +// Probe 3 arbitrary points on the bed (that aren't colinear) +// You must specify the X & Y coordinates of all 3 points + + #define AUTO_BED_LEVELING_GRID + // with AUTO_BED_LEVELING_GRID, the bed is sampled in a + // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid + // and least squares solution is calculated + // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID + + // set the rectangle in which to probe + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define BACK_PROBE_BED_POSITION 180 + #define FRONT_PROBE_BED_POSITION 20 + + // set the number of grid points per dimension + // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + #define AUTO_BED_LEVELING_GRID_POINTS 2 + + + #else // not AUTO_BED_LEVELING_GRID + // with no grid, just probe 3 arbitrary points. A simple cross-product + // is used to esimate the plane of the print bed + + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + + #endif // AUTO_BED_LEVELING_GRID + + + // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + + //#define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + // Be sure you have this distance over your Z_MAX_POS in case + + #define XY_TRAVEL_SPEED 8000 // X and Y axis travel speed between probes, in mm/min + + #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. + #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + + + //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk + //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. + // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. + +// #define PROBE_SERVO_DEACTIVATION_DELAY 300 + + +//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, +//it is highly recommended you let this Z_SAFE_HOMING enabled!!! + + // #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area. + // When defined, it will: + // - Allow Z homing only after X and Y homing AND stepper drivers still enabled + // - If stepper drivers timeout, it will need X and Y homing again before Z homing + // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) + // - Block Z homing only when the probe is outside bed area. + + #ifdef Z_SAFE_HOMING + + #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2) // X point for Z homing when homing all axis (G28) + #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2) // Y point for Z homing when homing all axis (G28) + + #endif + +#endif // ENABLE_AUTO_BED_LEVELING + + +// The position of the homing switches +#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +//Manual homing switch locations: +// For deltabots this means top and center of the Cartesian print volume. +// For SCARA: Offset between HomingPosition and Bed X=0 / Y=0 +#define MANUAL_X_HOME_POS -22. +#define MANUAL_Y_HOME_POS -52. +#define MANUAL_Z_HOME_POS 0.1 // Distance between nozzle and print surface after homing. + + +//// MOVEMENT SETTINGS +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {40*60, 40*60, 10*60, 0} // set the homing speeds (mm/min) + +// default settings + +#define DEFAULT_AXIS_STEPS_PER_UNIT {103.69,106.65,200/1.25,1000} // default steps per unit for SCARA +#define DEFAULT_MAX_FEEDRATE {300, 300, 30, 25} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {300,300,20,1000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 400 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 2000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 5 // (mm/sec) +#define DEFAULT_ZJERK 0.4 // (mm/sec) +#define DEFAULT_EJERK 3 // (mm/sec) + + +//=========================================================================== +//============================= Additional Features ========================= +//=========================================================================== + +// Custom M code points +//#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -15 + #define Z_PROBE_OFFSET_RANGE_MAX -5 +#endif + + +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +//#define EEPROM_SETTINGS +//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: +// please keep turned on if you can. +#define EEPROM_CHITCHAT + +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 180 +#define PLA_PREHEAT_HPB_TEMP 70 +#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +#define ABS_PREHEAT_HOTEND_TEMP 240 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +//LCD and SD support + +// Character based displays can have different extended charsets. +#define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" +//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one. + +//#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +//#define SDSUPPORT // Enable SD Card Support in Hardware Console +//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +//#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +//#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller +// +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click + +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL + +//automatic expansion +#if defined (MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 +#endif + +#if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 +#endif + +#if defined (PANEL_ONE) + #define SDSUPPORT + #define ULTIMAKERCONTROLLER +#endif + +#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#endif + +#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL +#endif + +#if defined(REPRAPWORLD_KEYPAD) + #define NEWPANEL + #define ULTIPANEL +#endif +#if defined(RA_CONTROL_PANEL) + #define ULTIPANEL + #define NEWPANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander +#endif + +//I2C PANELS + +//#define LCD_I2C_SAINSMART_YWROBOT +#ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define NEWPANEL + #define ULTIPANEL +#endif + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 +#ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + #define NEWPANEL + #define ULTIPANEL + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + +#endif + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI +#ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define NEWPANEL + #define ULTIPANEL +#endif + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection +//#define SR_LCD +#ifdef SR_LCD + #define SR_LCD_2W_NL // Non latching 2 wire shift register + //#define NEWPANEL +#endif + + +#ifdef ULTIPANEL +// #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif +#else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif +#endif + +// default LCD contrast for dogm-like LCD displays +#ifdef DOGLCD +# ifndef DEFAULT_LCD_CONTRAST +# define DEFAULT_LCD_CONTRAST 32 +# endif +#endif + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //__CONFIGURATION_H diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h new file mode 100644 index 000000000..a32669881 --- /dev/null +++ b/Marlin/example_configurations/SCARA/Configuration_adv.h @@ -0,0 +1,535 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 3000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +//#define WATCH_TEMP_PERIOD 40000 //40 seconds +//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heating power, proportional to the extrusion speed. + // if Kc is chosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S B F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value +// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results +// as long as it supports dual x-carriages. (M605 S0) +// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so +// that additional slicer support is not required. (M605 S1) +// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all +// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at +// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + +// This is the default power-up mode which can be later using M605. +#define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + +// Default settings in "Auto-park Mode" +#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder +#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + +// Default x offset in duplication mode (typically set to half print bed width) +#define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_RETRACT_MM 3 +#define Y_HOME_RETRACT_MM 3 +#define Z_HOME_RETRACT_MM 3 +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +#ifdef SCARA + #define QUICK_HOME //SCARA needs Quickhome +#endif + +#define AXIS_RELATIVE_MODES {false, false, false, false} + +#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) + +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#define INVERT_X_STEP_PIN false +#define INVERT_Y_STEP_PIN false +#define INVERT_Z_STEP_PIN false +#define INVERT_E_STEP_PIN false + +//default stepper release if idle. Set to 0 to deactivate. +#define DEFAULT_STEPPER_DEACTIVE_TIME 240 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// Feedrates for manual moves along X, Y, Z, E from panel +#ifdef ULTIPANEL +#define MANUAL_FEEDRATE {50*60, 50*60, 10*60, 60} // set the speeds for manual moves (mm/min) +#endif + +//Comment to disable setting feedrate multiplier via encoder +#ifdef ULTIPANEL + #define ULTIPANEL_FEEDMULTIPLY +#endif + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +//#define SLOWDOWN +#ifdef SCARA + #undef SLOWDOWN +#endif +// Frequency limit +// See nophead's blog for more info +// Not working O +//#define XY_FREQUENCY_LIMIT 15 + +// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end +// of the buffer and all stops. This should not be much greater than zero and should only be changed +// if unwanted behavior is observed on a user's machine when running at very slow speeds. +#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) + +// MS1 MS2 Stepper Driver Microstepping mode table +#define MICROSTEP1 LOW,LOW +#define MICROSTEP2 HIGH,LOW +#define MICROSTEP4 LOW,HIGH +#define MICROSTEP8 HIGH,HIGH +#define MICROSTEP16 HIGH,HIGH + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 8 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + +#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. +// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. +// using: +//#define MENU_ADDAUTOSTART + +// Show a progress bar on the LCD when printing from SD? +//#define LCD_PROGRESS_BAR + +#ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 3000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE +#endif + +// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in real-time +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements + + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + + #ifdef DELTA + #ifdef BABYSTEP_XY + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif + + #ifdef SCARA + #error BABYSTEPPING not implemented for SCARA yet. + #endif + +#endif + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// Hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + + #define D_FILAMENT 1.75 + #define STEPS_MM_E 1000 + #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) + +#endif // ADVANCE + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted +// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT +// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should +// be commented out otherwise +#define SDCARDDETECTINVERTED + +#ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED +#endif + +// Power Signal Control Definitions +// By default use ATX definition +#ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 +#endif +// 1 = ATX +#if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH +#endif +// 2 = X-Box 360 203W +#if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW +#endif + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//=============================Buffers ============================ +//=========================================================================== + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. +#if defined SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller +#else + #define BLOCK_BUFFER_SIZE 16 // maximize block buffer +#endif + + +//The ASCII buffer for receiving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 4 + + +// Firmware based and LCD controlled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +// #define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 3 //default retract length (positive mm) + #define RETRACT_FEEDRATE 35 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) +#endif + +//adds support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + #define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +#ifdef FILAMENTCHANGEENABLE + #ifdef EXTRUDER_RUNOUT_PREVENT + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE + #endif +#endif + +//=========================================================================== +//============================= Define Defines ============================ +//=========================================================================== +#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT + #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" +#endif + +#if EXTRUDERS > 1 && defined HEATERS_PARALLEL + #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" +#endif + +#if TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR +#endif +#if TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR +#endif +#if TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR +#endif +#if TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR +#endif +#if TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR +#endif +#if TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 +#endif +#if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 +#endif +#if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 +#endif +#if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 +#endif +#if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 +#endif +#if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 +#endif +#if TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP +#endif +#if TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP +#endif +#if TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP +#endif +#if TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif +#if TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP +#endif + + +#endif //__CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h new file mode 100644 index 000000000..e240abfed --- /dev/null +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -0,0 +1,872 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include "boards.h" + + +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ + + +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration + +//=========================================================================== +//============================= DELTA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/delta directory. +// + +//=========================================================================== +//============================= SCARA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/SCARA directory. +// + +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "1.0.2" +#define STRING_URL "reprap.org" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(bq Witbox)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 + +// This determines the communication speed of the printer +#define BAUDRATE 115200 + +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_WITBOX +#endif + +// Define this to set a custom name for your generic Mendel, +// #define CUSTOM_MENDEL_NAME "This Mendel" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 1 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) + +#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 0 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 10 // (seconds) +#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should use MINTEMP for thermistor short/failure protection. +#define HEATER_0_MAXTEMP 260 +#define HEATER_1_MAXTEMP 260 +#define HEATER_2_MAXTEMP 260 +#define HEATER_3_MAXTEMP 260 +#define BED_MAXTEMP 150 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R +//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R + + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// Comment the following line to disable PID and enable bang-bang. +#define PIDTEMP +#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current +#define PID_MAX BANG_MAX // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#ifdef PIDTEMP + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay + //#define PID_PARAMS_PER_EXTRUDER // Uses separate PID parameters for each extruder (useful for mismatched extruders) + // Set/get with gcode: M301 E[extruder number, 0-2] + #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + #define PID_dT ((OVERSAMPLENR * 8.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// Ultimaker +// #define DEFAULT_Kp 22.2 +// #define DEFAULT_Ki 1.08 +// #define DEFAULT_Kd 114 + +// MakerGear +// #define DEFAULT_Kp 7.0 +// #define DEFAULT_Ki 0.1 +// #define DEFAULT_Kd 12 + +// Mendel Parts V9 on 12V +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki 2.25 +// #define DEFAULT_Kd 440 + +// Witbox + #define DEFAULT_Kp 22.2 + #define DEFAULT_Ki 1.08 + #define DEFAULT_Kd 114 +#endif // PIDTEMP + +//=========================================================================== +//============================= PID > Bed Temperature Control =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +//#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + #define DEFAULT_bedKp 10.00 + #define DEFAULT_bedKi .023 + #define DEFAULT_bedKd 305.4 + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE + +#define EXTRUDE_MINTEMP 170 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius + + +//=========================================================================== +//============================= Mechanical Settings ========================= +//=========================================================================== + +// Uncomment the following line to enable CoreXY kinematics +// #define COREXY + +// coarse Endstop Settings +#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + // #define ENDSTOPPULLUP_XMIN + // #define ENDSTOPPULLUP_YMIN + // #define ENDSTOPPULLUP_ZMIN +#endif + +#ifdef ENDSTOPPULLUPS + #define ENDSTOPPULLUP_XMAX + #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. +const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +//#define DISABLE_MAX_ENDSTOPS +//#define DISABLE_MIN_ENDSTOPS + +// Disable max endstops for compatibility with endstop checking routine +#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) + #define DISABLE_MAX_ENDSTOPS +#endif + +// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +#define X_ENABLE_ON 0 +#define Y_ENABLE_ON 0 +#define Z_ENABLE_ON 0 +#define E_ENABLE_ON 0 // For all extruders + +// Disables axis when it's not being used. +#define DISABLE_X false +#define DISABLE_Y false +#define DISABLE_Z true +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled + +#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true +#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false + +// ENDSTOP SETTINGS: +// Sets direction of endstops when homing; 1=MAX, -1=MIN +#define X_HOME_DIR 1 +#define Y_HOME_DIR 1 +#define Z_HOME_DIR -1 + +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units are in mm) +#define X_MAX_POS 297 +#define X_MIN_POS 0 +#define Y_MAX_POS 210 +#define Y_MIN_POS 0 +#define Z_MAX_POS 200 +#define Z_MIN_POS 0 + +#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) +#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) +#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) +#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled. + +#ifdef ENABLE_AUTO_BED_LEVELING + +// There are 2 different ways to pick the X and Y locations to probe: + +// - "grid" mode +// Probe every point in a rectangular grid +// You must specify the rectangle, and the density of sample points +// This mode is preferred because there are more measurements. +// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive + +// - "3-point" mode +// Probe 3 arbitrary points on the bed (that aren't colinear) +// You must specify the X & Y coordinates of all 3 points + + #define AUTO_BED_LEVELING_GRID + // with AUTO_BED_LEVELING_GRID, the bed is sampled in a + // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid + // and least squares solution is calculated + // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID + + // set the rectangle in which to probe + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define BACK_PROBE_BED_POSITION 180 + #define FRONT_PROBE_BED_POSITION 20 + + // set the number of grid points per dimension + // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + #define AUTO_BED_LEVELING_GRID_POINTS 2 + + + #else // not AUTO_BED_LEVELING_GRID + // with no grid, just probe 3 arbitrary points. A simple cross-product + // is used to esimate the plane of the print bed + + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + + #endif // AUTO_BED_LEVELING_GRID + + + // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + + #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + // Be sure you have this distance over your Z_MAX_POS in case + + #define XY_TRAVEL_SPEED 8000 // X and Y axis travel speed between probes, in mm/min + + #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. + #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + + //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell + //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. + + //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk + //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. + // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. + +// #define PROBE_SERVO_DEACTIVATION_DELAY 300 + + +//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, +//it is highly recommended you let this Z_SAFE_HOMING enabled!!! + + #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area. + // When defined, it will: + // - Allow Z homing only after X and Y homing AND stepper drivers still enabled + // - If stepper drivers timeout, it will need X and Y homing again before Z homing + // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) + // - Block Z homing only when the probe is outside bed area. + + #ifdef Z_SAFE_HOMING + + #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2) // X point for Z homing when homing all axis (G28) + #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2) // Y point for Z homing when homing all axis (G28) + + #endif + + #ifdef AUTO_BED_LEVELING_GRID // Check if Probe_Offset * Grid Points is greater than Probing Range + #if X_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if (-(X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #else + #if ((X_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION)) + #error "The X axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #endif + #if Y_PROBE_OFFSET_FROM_EXTRUDER < 0 + #if (-(Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #else + #if ((Y_PROBE_OFFSET_FROM_EXTRUDER * (AUTO_BED_LEVELING_GRID_POINTS-1)) >= (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION)) + #error "The Y axis probing range is not enough to fit all the points defined in AUTO_BED_LEVELING_GRID_POINTS" + #endif + #endif + + + #endif + +#endif // ENABLE_AUTO_BED_LEVELING + + +// The position of the homing switches +//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +//Manual homing switch locations: +// For deltabots this means top and center of the Cartesian print volume. +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 0 +//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing. + +//// MOVEMENT SETTINGS +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {120*60, 120*60, 7.2*60, 0} // set the homing speeds (mm/min) + +// default settings + +#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,600.0*8/3,102.073} // default steps per unit for Ultimaker +#define DEFAULT_MAX_FEEDRATE {350, 350, 7.2, 80} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {1000,1000,10,1000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 10.0 // (mm/sec) +#define DEFAULT_ZJERK 0.4 // (mm/sec) +#define DEFAULT_EJERK 5.0 // (mm/sec) + + +//=========================================================================== +//============================ Additional Features ========================== +//=========================================================================== + +// Custom M code points +#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -15 + #define Z_PROBE_OFFSET_RANGE_MAX -5 +#endif + + +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +//#define EEPROM_SETTINGS +//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: +// please keep turned on if you can. +//#define EEPROM_CHITCHAT + +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 200 +#define PLA_PREHEAT_HPB_TEMP 0 +#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +#define ABS_PREHEAT_HOTEND_TEMP 220 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +//LCD and SD support + +// Character based displays can have different extended charsets. +#define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" +//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one. + +#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +#define SDSUPPORT // Enable SD Card Support in Hardware Console +//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller +// +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click + +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL + +//automatic expansion +#if defined (MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 +#endif + +#if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 +#endif + +#if defined (PANEL_ONE) + #define SDSUPPORT + #define ULTIMAKERCONTROLLER +#endif + +#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#endif + +#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL +#endif + +#if defined(REPRAPWORLD_KEYPAD) + #define NEWPANEL + #define ULTIPANEL +#endif +#if defined(RA_CONTROL_PANEL) + #define ULTIPANEL + #define NEWPANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander +#endif + +//I2C PANELS + +//#define LCD_I2C_SAINSMART_YWROBOT +#ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define NEWPANEL + #define ULTIPANEL +#endif + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 +#ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + #define NEWPANEL + #define ULTIPANEL + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + +#endif + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI +#ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define NEWPANEL + #define ULTIPANEL +#endif + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD +#ifdef SAV_3DLCD + #define SR_LCD_2W_NL // Non latching 2 wire shiftregister + #define NEWPANEL + #define ULTIPANEL +#endif + + +#ifdef ULTIPANEL +// #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif +#else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif +#endif + +// default LCD contrast for dogm-like LCD displays +#ifdef DOGLCD +# ifndef DEFAULT_LCD_CONTRAST +# define DEFAULT_LCD_CONTRAST 32 +# endif +#endif + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //__CONFIGURATION_H diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h new file mode 100644 index 000000000..0a9c8a129 --- /dev/null +++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h @@ -0,0 +1,540 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +//#define WATCH_TEMP_PERIOD 40000 //40 seconds +//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heating power, proportional to the extrusion speed. + // if Kc is chosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S B F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value +// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results +// as long as it supports dual x-carriages. (M605 S0) +// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so +// that additional slicer support is not required. (M605 S1) +// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all +// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at +// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + +// This is the default power-up mode which can be later using M605. +#define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + +// Default settings in "Auto-park Mode" +#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder +#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + +// Default x offset in duplication mode (typically set to half print bed width) +#define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_RETRACT_MM 5 +#define Y_HOME_RETRACT_MM 5 +#define Z_HOME_RETRACT_MM 2 +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. + +#define AXIS_RELATIVE_MODES {false, false, false, false} +#ifdef CONFIG_STEPPERS_TOSHIBA +#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers +#else +#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) +#endif +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#define INVERT_X_STEP_PIN false +#define INVERT_Y_STEP_PIN false +#define INVERT_Z_STEP_PIN false +#define INVERT_E_STEP_PIN false + +//default stepper release if idle. Set to 0 to deactivate. +#define DEFAULT_STEPPER_DEACTIVE_TIME 60 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// Feedrates for manual moves along X, Y, Z, E from panel +#ifdef ULTIPANEL +#define MANUAL_FEEDRATE {120*60, 120*60, 18*60, 60} // set the speeds for manual moves (mm/min) +#endif + +//Comment to disable setting feedrate multiplier via encoder +#ifdef ULTIPANEL + #define ULTIPANEL_FEEDMULTIPLY +#endif + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +#define SLOWDOWN + +// Frequency limit +// See nophead's blog for more info +// Not working O +//#define XY_FREQUENCY_LIMIT 15 + +// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end +// of the buffer and all stops. This should not be much greater than zero and should only be changed +// if unwanted behavior is observed on a user's machine when running at very slow speeds. +#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) + +// MS1 MS2 Stepper Driver Microstepping mode table +#define MICROSTEP1 LOW,LOW +#define MICROSTEP2 HIGH,LOW +#define MICROSTEP4 LOW,HIGH +#define MICROSTEP8 HIGH,HIGH +#define MICROSTEP16 HIGH,HIGH + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 8 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + +#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. +// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. +// using: +#define MENU_ADDAUTOSTART + +// Show a progress bar on HD44780 LCDs for SD printing +//#define LCD_PROGRESS_BAR + +#ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 3000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE + #ifdef DOGLCD + #warning LCD_PROGRESS_BAR does not apply to graphical displays at this time. + #endif + #ifdef FILAMENT_LCD_DISPLAY + #error LCD_PROGRESS_BAR and FILAMENT_LCD_DISPLAY are not fully compatible. Comment out this line to use both. + #endif +#endif + +// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in real-time +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements + + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + + #ifdef DELTA + #ifdef BABYSTEP_XY + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif +#endif + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// Hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +//#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + + #define D_FILAMENT 1.75 + #define STEPS_MM_E 100.47095761381482 + #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) + +#endif // ADVANCE + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted +// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT +// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should +// be commented out otherwise +#define SDCARDDETECTINVERTED + +#ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED +#endif + +// Power Signal Control Definitions +// By default use ATX definition +#ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 +#endif +// 1 = ATX +#if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH +#endif +// 2 = X-Box 360 203W +#if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW +#endif + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//=============================Buffers ============================ +//=========================================================================== + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. +#if defined SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller +#else + #define BLOCK_BUFFER_SIZE 16 // maximize block buffer +#endif + + +//The ASCII buffer for receiving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 5 + + +// Firmware based and LCD controlled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +// #define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 3 //default retract length (positive mm) + #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change + #define RETRACT_FEEDRATE 80*60 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + //#define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) + #define RETRACT_RECOVER_FEEDRATE 8*60 //default feedrate for recovering from retraction (mm/s) +#endif + +//adds support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + #define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +#ifdef FILAMENTCHANGEENABLE + #ifdef EXTRUDER_RUNOUT_PREVENT + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE + #endif +#endif + +//=========================================================================== +//============================= Define Defines ============================ +//=========================================================================== + +#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA) + #error "Bed Auto Leveling is still not compatible with Delta Kinematics." +#endif + +#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT + #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" +#endif + +#if EXTRUDERS > 1 && defined HEATERS_PARALLEL + #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" +#endif + +#if TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR +#endif +#if TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR +#endif +#if TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR +#endif +#if TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR +#endif +#if TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR +#endif +#if TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 +#endif +#if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 +#endif +#if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 +#endif +#if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 +#endif +#if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 +#endif +#if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 +#endif +#if TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP +#endif +#if TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP +#endif +#if TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP +#endif +#if TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif +#if TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP +#endif + + +#endif //__CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/delta/Configuration.h b/Marlin/example_configurations/delta/Configuration.h new file mode 100644 index 000000000..e880f8a2d --- /dev/null +++ b/Marlin/example_configurations/delta/Configuration.h @@ -0,0 +1,782 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include "boards.h" + + +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ + +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration + + +//=========================================================================== +//============================= DELTA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/delta directory. +// + +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "1.0.2" +#define STRING_URL "reprap.org" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 + +// This determines the communication speed of the printer +#define BAUDRATE 250000 + +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_RAMPS_13_EFB +#endif + +// Define this to set a custom name for your generic Mendel, +// #define CUSTOM_MENDEL_NAME "This Mendel" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 1 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + + +//=========================================================================== +//============================== Delta Settings ============================= +//=========================================================================== +// Enable DELTA kinematics and most of the default configuration for Deltas +#define DELTA + +// Make delta curves from many straight lines (linear interpolation). +// This is a trade-off between visible corners (not enough segments) +// and processor overload (too many expensive sqrt calls). +#define DELTA_SEGMENTS_PER_SECOND 200 + +// NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them + +// Center-to-center distance of the holes in the diagonal push rods. +#define DELTA_DIAGONAL_ROD 250.0 // mm + +// Horizontal offset from middle of printer to smooth rod center. +#define DELTA_SMOOTH_ROD_OFFSET 175.0 // mm + +// Horizontal offset of the universal joints on the end effector. +#define DELTA_EFFECTOR_OFFSET 33.0 // mm + +// Horizontal offset of the universal joints on the carriages. +#define DELTA_CARRIAGE_OFFSET 18.0 // mm + +// Effective horizontal distance bridged by diagonal push rods. +#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET) + + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) + +#define TEMP_SENSOR_0 -1 +#define TEMP_SENSOR_1 -1 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 0 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 10 // (seconds) +#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should use MINTEMP for thermistor short/failure protection. +#define HEATER_0_MAXTEMP 275 +#define HEATER_1_MAXTEMP 275 +#define HEATER_2_MAXTEMP 275 +#define HEATER_3_MAXTEMP 275 +#define BED_MAXTEMP 150 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R +//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R + + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// Comment the following line to disable PID and enable bang-bang. +#define PIDTEMP +#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current +#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#ifdef PIDTEMP + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// Ultimaker + #define DEFAULT_Kp 22.2 + #define DEFAULT_Ki 1.08 + #define DEFAULT_Kd 114 + +// MakerGear +// #define DEFAULT_Kp 7.0 +// #define DEFAULT_Ki 0.1 +// #define DEFAULT_Kd 12 + +// Mendel Parts V9 on 12V +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki 2.25 +// #define DEFAULT_Kd 440 +#endif // PIDTEMP + + +//=========================================================================== +//============================= PID > Bed Temperature Control =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +//#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + #define DEFAULT_bedKp 10.00 + #define DEFAULT_bedKi .023 + #define DEFAULT_bedKd 305.4 + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE + +#define EXTRUDE_MINTEMP 170 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius + + +//=========================================================================== +//============================= Mechanical Settings ========================= +//=========================================================================== + +// coarse Endstop Settings +#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + // #define ENDSTOPPULLUP_XMIN + // #define ENDSTOPPULLUP_YMIN + // #define ENDSTOPPULLUP_ZMIN +#endif + +#ifdef ENDSTOPPULLUPS + #define ENDSTOPPULLUP_XMAX + #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. +const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +//#define DISABLE_MAX_ENDSTOPS +// Deltas never have min endstops +#define DISABLE_MIN_ENDSTOPS +// Disable max endstops for compatibility with endstop checking routine +#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) + #define DISABLE_MAX_ENDSTOPS +#endif + +// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +#define X_ENABLE_ON 0 +#define Y_ENABLE_ON 0 +#define Z_ENABLE_ON 0 +#define E_ENABLE_ON 0 // For all extruders + +// Disables axis when it's not being used. +#define DISABLE_X false +#define DISABLE_Y false +#define DISABLE_Z false +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled + +#define INVERT_X_DIR false // DELTA does not invert +#define INVERT_Y_DIR false +#define INVERT_Z_DIR false + +#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false + +// ENDSTOP SETTINGS: +// Sets direction of endstops when homing; 1=MAX, -1=MIN +// deltas always home to max +#define X_HOME_DIR 1 +#define Y_HOME_DIR 1 +#define Z_HOME_DIR 1 + +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units are in mm) +#define X_MAX_POS 90 +#define X_MIN_POS -90 +#define Y_MAX_POS 90 +#define Y_MIN_POS -90 +#define Z_MAX_POS MANUAL_Z_HOME_POS +#define Z_MIN_POS 0 + +#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) +#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) +#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//Bed Auto Leveling is still not compatible with Delta Kinematics + + + + +// The position of the homing switches +//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +//Manual homing switch locations: + +#define MANUAL_HOME_POSITIONS // MANUAL_*_HOME_POS below will be used +// For deltabots this means top and center of the Cartesian print volume. +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 250 // For delta: Distance between nozzle and print surface after homing. + +//// MOVEMENT SETTINGS +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E + +// delta homing speeds must be the same on xyz +#define HOMING_FEEDRATE {200*60, 200*60, 200*60, 0} // set the homing speeds (mm/min) + +// default settings +// delta speeds must be the same on xyz +#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 80, 760*1.1} // default steps per unit for Kossel (GT2, 20 tooth) +#define DEFAULT_MAX_FEEDRATE {500, 500, 500, 25} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 20.0 // (mm/sec) +#define DEFAULT_ZJERK 20.0 // (mm/sec) Must be same as XY for delta +#define DEFAULT_EJERK 5.0 // (mm/sec) + +//=========================================================================== +//============================= Additional Features ========================= +//=========================================================================== + +// Custom M code points +#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -15 + #define Z_PROBE_OFFSET_RANGE_MAX -5 +#endif + + +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +//#define EEPROM_SETTINGS +//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: +// please keep turned on if you can. +//#define EEPROM_CHITCHAT + +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 180 +#define PLA_PREHEAT_HPB_TEMP 70 +#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +#define ABS_PREHEAT_HOTEND_TEMP 240 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +//LCD and SD support + +// Character based displays can have different extended charsets. +#define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" +//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one. + +//#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +//#define SDSUPPORT // Enable SD Card Support in Hardware Console +//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +//#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +//#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller +// +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click + +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL + +// Delta calibration menu +// uncomment to add three points calibration menu option. +// See http://minow.blogspot.com/index.html#4918805519571907051 +// If needed, adjust the X, Y, Z calibration coordinates +// in ultralcd.cpp@lcd_delta_calibrate_menu() +// #define DELTA_CALIBRATION_MENU + +//automatic expansion +#if defined (MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 +#endif + +#if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 +#endif + +#if defined (PANEL_ONE) + #define SDSUPPORT + #define ULTIMAKERCONTROLLER +#endif + +#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#endif + +#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL +#endif + +#if defined(REPRAPWORLD_KEYPAD) + #define NEWPANEL + #define ULTIPANEL +#endif +#if defined(RA_CONTROL_PANEL) + #define ULTIPANEL + #define NEWPANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander +#endif + +//I2C PANELS + +//#define LCD_I2C_SAINSMART_YWROBOT +#ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define NEWPANEL + #define ULTIPANEL +#endif + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 +#ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + #define NEWPANEL + #define ULTIPANEL + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + +#endif + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI +#ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define NEWPANEL + #define ULTIPANEL +#endif + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection +//#define SR_LCD +#ifdef SR_LCD + #define SR_LCD_2W_NL // Non latching 2 wire shift register + //#define NEWPANEL +#endif + + +#ifdef ULTIPANEL +// #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif +#else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif +#endif + +// default LCD contrast for dogm-like LCD displays +#ifdef DOGLCD +# ifndef DEFAULT_LCD_CONTRAST +# define DEFAULT_LCD_CONTRAST 32 +# endif +#endif + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //__CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/Configuration_adv.h b/Marlin/example_configurations/delta/Configuration_adv.h new file mode 100644 index 000000000..9b49bfe1e --- /dev/null +++ b/Marlin/example_configurations/delta/Configuration_adv.h @@ -0,0 +1,529 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watchperiod in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +//#define WATCH_TEMP_PERIOD 40000 //40 seconds +//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heatingpower, proportional to the extrusion speed. + // if Kc is choosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heatingpower=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S T F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value +// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results +// as long as it supports dual x-carriages. (M605 S0) +// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so +// that additional slicer support is not required. (M605 S1) +// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all +// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at +// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + +// This is the default power-up mode which can be later using M605. +#define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + +// Default settings in "Auto-park Mode" +#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder +#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + +// Default x offset in duplication mode (typically set to half print bed width) +#define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_RETRACT_MM 5 +#define Y_HOME_RETRACT_MM 5 +#define Z_HOME_RETRACT_MM 5 // deltas need the same for all three axis + +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. + +#define AXIS_RELATIVE_MODES {false, false, false, false} + +#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) + +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#define INVERT_X_STEP_PIN false +#define INVERT_Y_STEP_PIN false +#define INVERT_Z_STEP_PIN false +#define INVERT_E_STEP_PIN false + +//default stepper release if idle. Set to 0 to deactivate. +#define DEFAULT_STEPPER_DEACTIVE_TIME 60 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// Feedrates for manual moves along X, Y, Z, E from panel +#ifdef ULTIPANEL +#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) +#endif + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +// (don't use SLOWDOWN with DELTA because DELTA generates hundreds of segments per second) +//#define SLOWDOWN + +// Frequency limit +// See nophead's blog for more info +// Not working O +//#define XY_FREQUENCY_LIMIT 15 + +// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end +// of the buffer and all stops. This should not be much greater than zero and should only be changed +// if unwanted behavior is observed on a user's machine when running at very slow speeds. +#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) + +// MS1 MS2 Stepper Driver Microstepping mode table +#define MICROSTEP1 LOW,LOW +#define MICROSTEP2 HIGH,LOW +#define MICROSTEP4 LOW,HIGH +#define MICROSTEP8 HIGH,HIGH +#define MICROSTEP16 HIGH,HIGH + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 8 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + +#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the filesystem block order. +// if a file is deleted, it frees a block. hence, the order is not purely cronological. To still have auto0.g accessible, there is again the option to do that. +// using: +//#define MENU_ADDAUTOSTART + +// Show a progress bar on the LCD when printing from SD +//#define LCD_PROGRESS_BAR + +#ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 2000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE +#endif + +// The hardware watchdog should reset the Microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in realtime +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements + + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + + #ifdef DELTA + #ifdef BABYSTEP_XY + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif +#endif + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +//#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + + #define D_FILAMENT 2.85 + #define STEPS_MM_E 836 + #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) + +#endif // ADVANCE + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted +// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT +// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should +// be commented out otherwise +#define SDCARDDETECTINVERTED + +#ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED +#endif + +// Power Signal Control Definitions +// By default use ATX definition +#ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 +#endif +// 1 = ATX +#if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH +#endif +// 2 = X-Box 360 203W +#if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW +#endif + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//=============================Buffers ============================ +//=========================================================================== + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ringbuffering. +#if defined SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller +#else + #define BLOCK_BUFFER_SIZE 16 // maximize block buffer +#endif + + +//The ASCII buffer for recieving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 4 + + +// Firmware based and LCD controled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +// #define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 3 //default retract length (positive mm) + #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change + #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) + #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) +#endif + +//adds support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + #define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +#ifdef FILAMENTCHANGEENABLE + #ifdef EXTRUDER_RUNOUT_PREVENT + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE + #endif +#endif + +//=========================================================================== +//============================= Define Defines ============================ +//=========================================================================== + +#if defined (ENABLE_AUTO_BED_LEVELING) && defined (DELTA) + #error "Bed Auto Leveling is still not compatible with Delta Kinematics." +#endif + +#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT + #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" +#endif + +#if EXTRUDERS > 1 && defined HEATERS_PARALLEL + #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" +#endif + +#if TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR +#endif +#if TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR +#endif +#if TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR +#endif +#if TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR +#endif +#if TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR +#endif +#if TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 +#endif +#if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 +#endif +#if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 +#endif +#if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 +#endif +#if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 +#endif +#if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 +#endif +#if TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP +#endif +#if TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP +#endif +#if TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP +#endif +#if TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif +#if TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP +#endif + + +#endif //__CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h new file mode 100644 index 000000000..d17f3867e --- /dev/null +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -0,0 +1,844 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include "boards.h" + + +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ + + +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration + + +//=========================================================================== +//============================= DELTA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/delta directory. +// + + +//=========================================================================== +//============================= SCARA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/SCARA directory. +// + +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "1.0.2" +#define STRING_URL "reprap.org" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 + +// This determines the communication speed of the printer +#define BAUDRATE 250000 + +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_5DPRINT +#endif + +// Define this to set a custom name for your generic Mendel, +// #define CUSTOM_MENDEL_NAME "This Mendel" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 1 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) + +#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 12 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 10 // (seconds) +#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should use MINTEMP for thermistor short/failure protection. +#define HEATER_0_MAXTEMP 275 +#define HEATER_1_MAXTEMP 275 +#define HEATER_2_MAXTEMP 275 +#define HEATER_3_MAXTEMP 275 +#define BED_MAXTEMP 150 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R +//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R + + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// Comment the following line to disable PID and enable bang-bang. +#define PIDTEMP +#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current +#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#ifdef PIDTEMP + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// Ultimaker + #define DEFAULT_Kp 22.2 + #define DEFAULT_Ki 1.08 + #define DEFAULT_Kd 114 + +// MakerGear +// #define DEFAULT_Kp 7.0 +// #define DEFAULT_Ki 0.1 +// #define DEFAULT_Kd 12 + +// Mendel Parts V9 on 12V +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki 2.25 +// #define DEFAULT_Kd 440 +#endif // PIDTEMP + + +//=========================================================================== +//============================= PID > Bed Temperature Control =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +//#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 175 // limits duty cycle to bed; 255=full current +// This limit is set to 175 by default in the Makibox configuration and it can adjusted +// to increase the heat up rate. However, if changed, user must be aware of the safety concerns +// of drawing too much current from the power supply. + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + #define DEFAULT_bedKp 10.00 + #define DEFAULT_bedKi .023 + #define DEFAULT_bedKd 305.4 + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE + +#define EXTRUDE_MINTEMP 170 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius + + +//=========================================================================== +//============================ Mechanical Settings ========================== +//=========================================================================== + +// Uncomment the following line to enable CoreXY kinematics +// #define COREXY + +// coarse Endstop Settings +#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + // #define ENDSTOPPULLUP_XMIN + // #define ENDSTOPPULLUP_YMIN + // #define ENDSTOPPULLUP_ZMIN +#endif + +#ifdef ENDSTOPPULLUPS + #define ENDSTOPPULLUP_XMAX + #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +//#define DISABLE_MAX_ENDSTOPS +//#define DISABLE_MIN_ENDSTOPS + +// Disable max endstops for compatibility with endstop checking routine +#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) + #define DISABLE_MAX_ENDSTOPS +#endif + +// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +#define X_ENABLE_ON 0 +#define Y_ENABLE_ON 0 +#define Z_ENABLE_ON 0 +#define E_ENABLE_ON 0 // For all extruders + +// Disables axis when it's not being used. +#define DISABLE_X false +#define DISABLE_Y false +#define DISABLE_Z false +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled + +#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false + +// ENDSTOP SETTINGS: +// Sets direction of endstops when homing; 1=MAX, -1=MIN +#define X_HOME_DIR -1 +#define Y_HOME_DIR -1 +#define Z_HOME_DIR -1 + +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units are in mm) +#define X_MAX_POS 110 +#define X_MIN_POS 0 +#define Y_MAX_POS 150 +#define Y_MIN_POS 0 +#define Z_MAX_POS 86 +#define Z_MIN_POS 0 + +#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) +#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) +#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) +#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled. + +#ifdef ENABLE_AUTO_BED_LEVELING + +// There are 2 different ways to pick the X and Y locations to probe: + +// - "grid" mode +// Probe every point in a rectangular grid +// You must specify the rectangle, and the density of sample points +// This mode is preferred because there are more measurements. +// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive + +// - "3-point" mode +// Probe 3 arbitrary points on the bed (that aren't colinear) +// You must specify the X & Y coordinates of all 3 points + + #define AUTO_BED_LEVELING_GRID + // with AUTO_BED_LEVELING_GRID, the bed is sampled in a + // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid + // and least squares solution is calculated + // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID + + // set the rectangle in which to probe + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define BACK_PROBE_BED_POSITION 180 + #define FRONT_PROBE_BED_POSITION 20 + + // set the number of grid points per dimension + // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + #define AUTO_BED_LEVELING_GRID_POINTS 2 + + + #else // not AUTO_BED_LEVELING_GRID + // with no grid, just probe 3 arbitrary points. A simple cross-product + // is used to esimate the plane of the print bed + + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + + #endif // AUTO_BED_LEVELING_GRID + + + // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + + #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + // Be sure you have this distance over your Z_MAX_POS in case + + #define XY_TRAVEL_SPEED 8000 // X and Y axis travel speed between probes, in mm/min + + #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. + #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + + //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell + //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. + + //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk + //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. + // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. + +// #define PROBE_SERVO_DEACTIVATION_DELAY 300 + + +//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, +//it is highly recommended you let this Z_SAFE_HOMING enabled!!! + + #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area. + // When defined, it will: + // - Allow Z homing only after X and Y homing AND stepper drivers still enabled + // - If stepper drivers timeout, it will need X and Y homing again before Z homing + // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) + // - Block Z homing only when the probe is outside bed area. + + #ifdef Z_SAFE_HOMING + + #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2) // X point for Z homing when homing all axis (G28) + #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2) // Y point for Z homing when homing all axis (G28) + + #endif + +#endif // ENABLE_AUTO_BED_LEVELING + + +// The position of the homing switches +//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +//Manual homing switch locations: +// For deltabots this means top and center of the Cartesian print volume. +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 0 +//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing. + +//// MOVEMENT SETTINGS +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {1500, 1500, 120, 0} // set the homing speeds (mm/min) ***** MakiBox A6 ***** + +// default settings + +#define DEFAULT_AXIS_STEPS_PER_UNIT {400, 400, 400, 163} // default steps per unit for ***** MakiBox A6 ***** +#define DEFAULT_MAX_FEEDRATE {60, 60, 20, 45} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {2000,2000,30,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 20.0 // (mm/sec) +#define DEFAULT_ZJERK 0.4 // (mm/sec) +#define DEFAULT_EJERK 5.0 // (mm/sec) + + +//=========================================================================== +//============================ Additional Features ========================== +//=========================================================================== + +// Custom M code points +#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -15 + #define Z_PROBE_OFFSET_RANGE_MAX -5 +#endif + + +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +#define EEPROM_SETTINGS +//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: +// please keep turned on if you can. +//#define EEPROM_CHITCHAT + +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 180 +#define PLA_PREHEAT_HPB_TEMP 70 +#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +#define ABS_PREHEAT_HOTEND_TEMP 240 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +//LCD and SD support + +// Character based displays can have different extended charsets. +#define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" +//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one. + +//#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +#define SDSUPPORT // Enable SD Card Support in Hardware Console +#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +//#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +//#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller +// +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click + +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL + +//automatic expansion +#if defined (MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 +#endif + +#if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 +#endif + +#if defined (PANEL_ONE) + #define SDSUPPORT + #define ULTIMAKERCONTROLLER +#endif + +#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#endif + +#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL +#endif + +#if defined(REPRAPWORLD_KEYPAD) + #define NEWPANEL + #define ULTIPANEL +#endif +#if defined(RA_CONTROL_PANEL) + #define ULTIPANEL + #define NEWPANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander +#endif + +//I2C PANELS + +//#define LCD_I2C_SAINSMART_YWROBOT +#ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define NEWPANEL + #define ULTIPANEL +#endif + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 +#ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + #define NEWPANEL + #define ULTIPANEL + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + +#endif + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI +#ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define NEWPANEL + #define ULTIPANEL +#endif + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection +//#define SR_LCD +#ifdef SR_LCD + #define SR_LCD_2W_NL // Non latching 2 wire shift register + //#define NEWPANEL +#endif + + +#ifdef ULTIPANEL +// #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif +#else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif +#endif + +// default LCD contrast for dogm-like LCD displays +#ifdef DOGLCD +# ifndef DEFAULT_LCD_CONTRAST +# define DEFAULT_LCD_CONTRAST 32 +# endif +#endif + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //__CONFIGURATION_H diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h new file mode 100644 index 000000000..1033b9989 --- /dev/null +++ b/Marlin/example_configurations/makibox/Configuration_adv.h @@ -0,0 +1,526 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +//#define WATCH_TEMP_PERIOD 40000 //40 seconds +//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heating power, proportional to the extrusion speed. + // if Kc is chosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S T F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value +// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results +// as long as it supports dual x-carriages. (M605 S0) +// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so +// that additional slicer support is not required. (M605 S1) +// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all +// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at +// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + +// This is the default power-up mode which can be later using M605. +#define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + +// Default settings in "Auto-park Mode" +#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder +#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + +// Default x offset in duplication mode (typically set to half print bed width) +#define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_RETRACT_MM 5 +#define Y_HOME_RETRACT_MM 5 +#define Z_HOME_RETRACT_MM 2 +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. + +#define AXIS_RELATIVE_MODES {false, false, false, false} + +#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) + +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#define INVERT_X_STEP_PIN false +#define INVERT_Y_STEP_PIN false +#define INVERT_Z_STEP_PIN false +#define INVERT_E_STEP_PIN false + +//default stepper release if idle. Set to 0 to deactivate. +#define DEFAULT_STEPPER_DEACTIVE_TIME 60 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// Feedrates for manual moves along X, Y, Z, E from panel +#ifdef ULTIPANEL +#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) +#endif + +//Comment to disable setting feedrate multiplier via encoder +#ifdef ULTIPANEL + #define ULTIPANEL_FEEDMULTIPLY +#endif + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +#define SLOWDOWN + +// Frequency limit +// See nophead's blog for more info +// Not working O +//#define XY_FREQUENCY_LIMIT 15 + +// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end +// of the buffer and all stops. This should not be much greater than zero and should only be changed +// if unwanted behavior is observed on a user's machine when running at very slow speeds. +#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) + +// MS1 MS2 Stepper Driver Microstepping mode table +#define MICROSTEP1 LOW,LOW +#define MICROSTEP2 HIGH,LOW +#define MICROSTEP4 LOW,HIGH +#define MICROSTEP8 HIGH,HIGH +#define MICROSTEP16 HIGH,HIGH + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 4 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +//#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.7, 1.7, 1.7, 1.7} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + +#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. +// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. +// using: +//#define MENU_ADDAUTOSTART + +// Show a progress bar on the LCD when printing from SD +//#define LCD_PROGRESS_BAR + +#ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 2000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE +#endif + +// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in real-time +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements + + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + + #ifdef DELTA + #ifdef BABYSTEP_XY + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif +#endif + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// Hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +//#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + + #define D_FILAMENT 2.85 + #define STEPS_MM_E 836 + #define EXTRUSION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUSION_AREA) + +#endif // ADVANCE + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted +// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT +// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should +// be commented out otherwise +//#define SDCARDDETECTINVERTED + +#ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED +#endif + +// Power Signal Control Definitions +// By default use ATX definition +#ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 +#endif +// 1 = ATX +#if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH +#endif +// 2 = X-Box 360 203W +#if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW +#endif + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//=============================Buffers ============================ +//=========================================================================== + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. +#if defined SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller +#else + #define BLOCK_BUFFER_SIZE 16 // maximize block buffer +#endif + + +//The ASCII buffer for receiving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 4 + + +// Firmware based and LCD controlled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +// #define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 3 //default retract length (positive mm) + #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) +#endif + +//adds support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + #define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +#ifdef FILAMENTCHANGEENABLE + #ifdef EXTRUDER_RUNOUT_PREVENT + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE + #endif +#endif + +//=========================================================================== +//============================= Define Defines ============================ +//=========================================================================== +#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT + #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" +#endif + +#if EXTRUDERS > 1 && defined HEATERS_PARALLEL + #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" +#endif + +#if TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR +#endif +#if TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR +#endif +#if TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR +#endif +#if TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR +#endif +#if TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR +#endif +#if TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 +#endif +#if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 +#endif +#if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 +#endif +#if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 +#endif +#if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 +#endif +#if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 +#endif +#if TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP +#endif +#if TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP +#endif +#if TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP +#endif +#if TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif +#if TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP +#endif + + +#endif //__CONFIGURATION_ADV_H diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h new file mode 100644 index 000000000..2a18c1e8c --- /dev/null +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -0,0 +1,857 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include "boards.h" + +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ + + +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration + + +//=========================================================================== +//============================= DELTA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/delta directory. +// + + +//=========================================================================== +//============================= SCARA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/SCARA directory. +// + +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "1.0.2" +#define STRING_URL "reprap.org" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 + +// This determines the communication speed of the printer +#define BAUDRATE 250000 + +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_OMCA +#endif + +// Define this to set a custom name for your generic Mendel, +// #define CUSTOM_MENDEL_NAME "This Mendel" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 1 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) + +#define TEMP_SENSOR_0 5 +#define TEMP_SENSOR_1 0 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 5 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 10 // (seconds) +#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should use MINTEMP for thermistor short/failure protection. +#define HEATER_0_MAXTEMP 275 +#define HEATER_1_MAXTEMP 275 +#define HEATER_2_MAXTEMP 275 +#define HEATER_3_MAXTEMP 275 +#define BED_MAXTEMP 150 + +#define CONFIG_STEPPERS_TOSHIBA 1 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R +//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R + + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// Comment the following line to disable PID and enable bang-bang. +#define PIDTEMP +#define BANG_MAX 255 // limits current to nozzle while in bang-bang mode; 255=full current +#define PID_MAX 255 // limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current +#ifdef PIDTEMP + //#define PID_DEBUG // Sends debug data to the serial port. + //#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX + #define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature + // is more then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX 255 //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + #define PID_dT ((OVERSAMPLENR * 10.0)/(F_CPU / 64.0 / 256.0)) //sampling period of the temperature routine + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// J-Head Mk V-B + #define DEFAULT_Kp 25.05 + #define DEFAULT_Ki 2.30 + #define DEFAULT_Kd 68.15 + +// Ultimaker +// #define DEFAULT_Kp 22.2 +// #define DEFAULT_Ki 1.08 +// #define DEFAULT_Kd 114 + +// MakerGear +// #define DEFAULT_Kp 7.0 +// #define DEFAULT_Ki 0.1 +// #define DEFAULT_Kd 12 + +// Mendel Parts V9 on 12V +// #define DEFAULT_Kp 63.0 +// #define DEFAULT_Ki 2.25 +// #define DEFAULT_Kd 440 +#endif // PIDTEMP + + +//=========================================================================== +//============================= PID > Bed Temperature Control =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +//#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +#ifdef PIDTEMPBED +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) + #define DEFAULT_bedKp 10.00 + #define DEFAULT_bedKi .023 + #define DEFAULT_bedKd 305.4 + +//120v 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) +//from pidautotune +// #define DEFAULT_bedKp 97.1 +// #define DEFAULT_bedKi 1.41 +// #define DEFAULT_bedKd 1675.16 + +// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. +#endif // PIDTEMPBED + + +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE + +#define EXTRUDE_MINTEMP 170 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius + + +//=========================================================================== +//============================ Mechanical Settings ========================== +//=========================================================================== + +// Uncomment the following line to enable CoreXY kinematics +// #define COREXY + +// coarse Endstop Settings +#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + // #define ENDSTOPPULLUP_XMIN + // #define ENDSTOPPULLUP_YMIN + // #define ENDSTOPPULLUP_ZMIN +#endif + +#ifdef ENDSTOPPULLUPS + #define ENDSTOPPULLUP_XMAX + #define ENDSTOPPULLUP_YMAX + #define ENDSTOPPULLUP_ZMAX + #define ENDSTOPPULLUP_XMIN + #define ENDSTOPPULLUP_YMIN + #define ENDSTOPPULLUP_ZMIN +#endif + +// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. +const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +//#define DISABLE_MAX_ENDSTOPS +//#define DISABLE_MIN_ENDSTOPS + +// Disable max endstops for compatibility with endstop checking routine +#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) + #define DISABLE_MAX_ENDSTOPS +#endif + +// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +#define X_ENABLE_ON 1 +#define Y_ENABLE_ON 1 +#define Z_ENABLE_ON 1 +#define E_ENABLE_ON 1 // For all extruders + +// Disables axis when it's not being used. +#define DISABLE_X false +#define DISABLE_Y false +#define DISABLE_Z false +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled + +#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false +#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true +#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false +#define INVERT_E3_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false + +// ENDSTOP SETTINGS: +// Sets direction of endstops when homing; 1=MAX, -1=MIN +#define X_HOME_DIR -1 +#define Y_HOME_DIR -1 +#define Z_HOME_DIR -1 + +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units are in mm) +#define X_MAX_POS 205 +#define X_MIN_POS 0 +#define Y_MAX_POS 205 +#define Y_MIN_POS 0 +#define Z_MAX_POS 120 +#define Z_MIN_POS 0 + +#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS) +#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS) +#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) + + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) +#define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled. + +#ifdef ENABLE_AUTO_BED_LEVELING + +// There are 2 different ways to pick the X and Y locations to probe: + +// - "grid" mode +// Probe every point in a rectangular grid +// You must specify the rectangle, and the density of sample points +// This mode is preferred because there are more measurements. +// It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive + +// - "3-point" mode +// Probe 3 arbitrary points on the bed (that aren't colinear) +// You must specify the X & Y coordinates of all 3 points + + #define AUTO_BED_LEVELING_GRID + // with AUTO_BED_LEVELING_GRID, the bed is sampled in a + // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid + // and least squares solution is calculated + // Note: this feature occupies 10'206 byte + #ifdef AUTO_BED_LEVELING_GRID + + // set the rectangle in which to probe + #define LEFT_PROBE_BED_POSITION 15 + #define RIGHT_PROBE_BED_POSITION 170 + #define BACK_PROBE_BED_POSITION 180 + #define FRONT_PROBE_BED_POSITION 20 + + // set the number of grid points per dimension + // I wouldn't see a reason to go above 3 (=9 probing points on the bed) + #define AUTO_BED_LEVELING_GRID_POINTS 2 + + + #else // not AUTO_BED_LEVELING_GRID + // with no grid, just probe 3 arbitrary points. A simple cross-product + // is used to esimate the plane of the print bed + + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + + #endif // AUTO_BED_LEVELING_GRID + + + // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + #define X_PROBE_OFFSET_FROM_EXTRUDER -25 + #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 + #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 + + #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + // Be sure you have this distance over your Z_MAX_POS in case + + #define XY_TRAVEL_SPEED 8000 // X and Y axis travel speed between probes, in mm/min + + #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. + #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + + //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell + //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. + + //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk + //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. + // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. + +// #define PROBE_SERVO_DEACTIVATION_DELAY 300 + + +//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, +//it is highly recommended you let this Z_SAFE_HOMING enabled!!! + + #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area. + // When defined, it will: + // - Allow Z homing only after X and Y homing AND stepper drivers still enabled + // - If stepper drivers timeout, it will need X and Y homing again before Z homing + // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) + // - Block Z homing only when the probe is outside bed area. + + #ifdef Z_SAFE_HOMING + + #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2) // X point for Z homing when homing all axis (G28) + #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2) // Y point for Z homing when homing all axis (G28) + + #endif + +#endif // ENABLE_AUTO_BED_LEVELING + + +// The position of the homing switches +//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +//Manual homing switch locations: +// For deltabots this means top and center of the Cartesian print volume. +#define MANUAL_X_HOME_POS 0 +#define MANUAL_Y_HOME_POS 0 +#define MANUAL_Z_HOME_POS 0 +//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing. + +//// MOVEMENT SETTINGS +#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E +#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min) + +// default settings + +//#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402,78.7402,200.0*8/3,760*1.1} // default steps per unit for Ultimaker +//#define //DEFAULT_AXIS_STEPS_PER_UNIT {79.87, 79.87, 2566, 563,78} // Al's TVRR +//#define DEFAULT_AXIS_STEPS_PER_UNIT {81.26, 80.01, 2561, 599.14} // Michel TVRR old +//#define DEFAULT_AXIS_STEPS_PER_UNIT {71.1, 71.1, 2560, 739.65} // Michel TVRR +#define DEFAULT_AXIS_STEPS_PER_UNIT {71.1, 71.1, 2560, 600} // David TVRR + + + +//#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec) default +#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 45} // (mm/sec) David TVRR +#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. + +/* MICHEL: This has an impact on the "ripples" in print walls */ +#define DEFAULT_ACCELERATION 500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +//#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 20.0 // (mm/sec) +#define DEFAULT_ZJERK 0.4 // (mm/sec) +#define DEFAULT_EJERK 5.0 // (mm/sec) + + +//=========================================================================== +//============================ Additional Features ========================== +//=========================================================================== + +// Custom M code points +#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -15 + #define Z_PROBE_OFFSET_RANGE_MAX -5 +#endif + + +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +//#define EEPROM_SETTINGS +//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: +// please keep turned on if you can. +//#define EEPROM_CHITCHAT + +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 180 +#define PLA_PREHEAT_HPB_TEMP 70 +#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +#define ABS_PREHEAT_HOTEND_TEMP 240 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +//LCD and SD support + +// Character based displays can have different extended charsets. +#define DISPLAY_CHARSET_HD44780_JAPAN // "ääööüüß23°" +//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one. + +//#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +//#define SDSUPPORT // Enable SD Card Support in Hardware Console +//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +//#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +//#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller +// +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click + +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL + +//automatic expansion +#if defined (MAKRPANEL) + #define DOGLCD + #define SDSUPPORT + #define ULTIPANEL + #define NEWPANEL + #define DEFAULT_LCD_CONTRAST 17 +#endif + +#if defined(miniVIKI) || defined(VIKI2) + #define ULTRA_LCD //general LCD support, also 16x2 + #define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) + #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. + + #ifdef miniVIKI + #define DEFAULT_LCD_CONTRAST 95 + #else + #define DEFAULT_LCD_CONTRAST 40 + #endif + + #define ENCODER_PULSES_PER_STEP 4 + #define ENCODER_STEPS_PER_MENU_ITEM 1 +#endif + +#if defined (PANEL_ONE) + #define SDSUPPORT + #define ULTIMAKERCONTROLLER +#endif + +#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) + #define DOGLCD + #define U8GLIB_ST7920 + #define REPRAP_DISCOUNT_SMART_CONTROLLER +#endif + +#if defined(ULTIMAKERCONTROLLER) || defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define ULTIPANEL + #define NEWPANEL +#endif + +#if defined(REPRAPWORLD_KEYPAD) + #define NEWPANEL + #define ULTIPANEL +#endif +#if defined(RA_CONTROL_PANEL) + #define ULTIPANEL + #define NEWPANEL + #define LCD_I2C_TYPE_PCA8574 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander +#endif + +//I2C PANELS + +//#define LCD_I2C_SAINSMART_YWROBOT +#ifdef LCD_I2C_SAINSMART_YWROBOT + // This uses the LiquidCrystal_I2C library ( https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home ) + // Make sure it is placed in the Arduino libraries directory. + #define LCD_I2C_TYPE_PCF8575 + #define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander + #define NEWPANEL + #define ULTIPANEL +#endif + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 +#ifdef LCD_I2C_PANELOLU2 + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // (v1.2.3 no longer requires you to define PANELOLU in the LiquidTWI2.h library header file) + // Note: The PANELOLU2 encoder click input can either be directly connected to a pin + // (if BTN_ENC defined to != -1) or read through I2C (when BTN_ENC == -1). + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD + #define NEWPANEL + #define ULTIPANEL + + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 4 + #endif + + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 1 + #endif + + + #ifdef LCD_USE_I2C_BUZZER + #define LCD_FEEDBACK_FREQUENCY_HZ 1000 + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 + #endif + +#endif + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI +#ifdef LCD_I2C_VIKI + // This uses the LiquidTWI2 library v1.2.3 or later ( https://github.com/lincomatic/LiquidTWI2 ) + // Make sure the LiquidTWI2 directory is placed in the Arduino or Sketchbook libraries subdirectory. + // Note: The pause/stop/resume LCD button pin should be connected to the Arduino + // BTN_ENC pin (or set BTN_ENC to -1 if not used) + #define LCD_I2C_TYPE_MCP23017 + #define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander + #define LCD_USE_I2C_BUZZER //comment out to disable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later) + #define NEWPANEL + #define ULTIPANEL +#endif + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection +//#define SR_LCD +#ifdef SR_LCD + #define SR_LCD_2W_NL // Non latching 2 wire shift register + //#define NEWPANEL +#endif + + +#ifdef ULTIPANEL +// #define NEWPANEL //enable this if you have a click-encoder panel + #define SDSUPPORT + #define ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the DOG graphic display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 20 + #define LCD_HEIGHT 4 + #endif +#else //no panel but just LCD + #ifdef ULTRA_LCD + #ifdef DOGLCD // Change number of lines to match the 128x64 graphics display + #define LCD_WIDTH 20 + #define LCD_HEIGHT 5 + #else + #define LCD_WIDTH 16 + #define LCD_HEIGHT 2 + #endif + #endif +#endif + +// default LCD contrast for dogm-like LCD displays +#ifdef DOGLCD +# ifndef DEFAULT_LCD_CONTRAST +# define DEFAULT_LCD_CONTRAST 32 +# endif +#endif + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not ass annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //__CONFIGURATION_H diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h new file mode 100644 index 000000000..df413f6e6 --- /dev/null +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h @@ -0,0 +1,529 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +//#define WATCH_TEMP_PERIOD 40000 //40 seconds +//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heating power, proportional to the extrusion speed. + // if Kc is chosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S B F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value +// Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results +// as long as it supports dual x-carriages. (M605 S0) +// Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so +// that additional slicer support is not required. (M605 S1) +// Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all +// actions of the first x-carriage. This allows the printer to print 2 arbitrary items at +// once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + +// This is the default power-up mode which can be later using M605. +#define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + +// Default settings in "Auto-park Mode" +#define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder +#define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + +// Default x offset in duplication mode (typically set to half print bed width) +#define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_RETRACT_MM 5 +#define Y_HOME_RETRACT_MM 5 +#define Z_HOME_RETRACT_MM 1 +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. + +#define AXIS_RELATIVE_MODES {false, false, false, false} +#ifdef CONFIG_STEPPERS_TOSHIBA +#define MAX_STEP_FREQUENCY 10000 // Max step frequency for Toshiba Stepper Controllers +#else +#define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step) +#endif +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#define INVERT_X_STEP_PIN false +#define INVERT_Y_STEP_PIN false +#define INVERT_Z_STEP_PIN false +#define INVERT_E_STEP_PIN false + +//default stepper release if idle. Set to 0 to deactivate. +#define DEFAULT_STEPPER_DEACTIVE_TIME 60 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// Feedrates for manual moves along X, Y, Z, E from panel +#ifdef ULTIPANEL +#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // set the speeds for manual moves (mm/min) +#endif + +//Comment to disable setting feedrate multiplier via encoder +#ifdef ULTIPANEL + #define ULTIPANEL_FEEDMULTIPLY +#endif + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +#define SLOWDOWN + +// Frequency limit +// See nophead's blog for more info +// Not working O +//#define XY_FREQUENCY_LIMIT 15 + +// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end +// of the buffer and all stops. This should not be much greater than zero and should only be changed +// if unwanted behavior is observed on a user's machine when running at very slow speeds. +#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec) + +// MS1 MS2 Stepper Driver Microstepping mode table +#define MICROSTEP1 LOW,LOW +#define MICROSTEP2 HIGH,LOW +#define MICROSTEP4 LOW,HIGH +#define MICROSTEP8 HIGH,HIGH +#define MICROSTEP16 HIGH,HIGH + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 8 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceed this value, multiple the steps moved by ten to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceed this value, multiple the steps moved by 100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +#define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + +#define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. +// if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. +// using: +//#define MENU_ADDAUTOSTART + +// Show a progress bar on the LCD when printing from SD? +//#define LCD_PROGRESS_BAR + +#ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 3000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE +#endif + +// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in real-time +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements + + #ifdef COREXY + #error BABYSTEPPING not implemented for COREXY yet. + #endif + + #ifdef DELTA + #ifdef BABYSTEP_XY + #error BABYSTEPPING only implemented for Z axis on deltabots. + #endif + #endif +#endif + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// Hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +//#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + + #define D_FILAMENT 2.85 + #define STEPS_MM_E 836 + #define EXTRUTION_AREA (0.25 * D_FILAMENT * D_FILAMENT * 3.14159) + #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUTION_AREA) + +#endif // ADVANCE + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted +// You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT +// in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should +// be commented out otherwise +#define SDCARDDETECTINVERTED + +#ifdef ULTIPANEL + #undef SDCARDDETECTINVERTED +#endif + +// Power Signal Control Definitions +// By default use ATX definition +#ifndef POWER_SUPPLY + #define POWER_SUPPLY 1 +#endif +// 1 = ATX +#if (POWER_SUPPLY == 1) + #define PS_ON_AWAKE LOW + #define PS_ON_ASLEEP HIGH +#endif +// 2 = X-Box 360 203W +#if (POWER_SUPPLY == 2) + #define PS_ON_AWAKE HIGH + #define PS_ON_ASLEEP LOW +#endif + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//=============================Buffers ============================ +//=========================================================================== + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. +#if defined SDSUPPORT + #define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller +#else + #define BLOCK_BUFFER_SIZE 16 // maximize block buffer +#endif + + +//The ASCII buffer for receiving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 4 + + +// Firmware based and LCD controlled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +// #define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 3 //default retract length (positive mm) + #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change + #define RETRACT_FEEDRATE 45 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) + #define RETRACT_RECOVER_FEEDRATE 8 //default feedrate for recovering from retraction (mm/s) +#endif + +//adds support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + #define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +#ifdef FILAMENTCHANGEENABLE + #ifdef EXTRUDER_RUNOUT_PREVENT + #error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE + #endif +#endif + +//=========================================================================== +//============================= Define Defines ============================ +//=========================================================================== +#if EXTRUDERS > 1 && defined TEMP_SENSOR_1_AS_REDUNDANT + #error "You cannot use TEMP_SENSOR_1_AS_REDUNDANT if EXTRUDERS > 1" +#endif + +#if EXTRUDERS > 1 && defined HEATERS_PARALLEL + #error "You cannot use HEATERS_PARALLEL if EXTRUDERS > 1" +#endif + +#if TEMP_SENSOR_0 > 0 + #define THERMISTORHEATER_0 TEMP_SENSOR_0 + #define HEATER_0_USES_THERMISTOR +#endif +#if TEMP_SENSOR_1 > 0 + #define THERMISTORHEATER_1 TEMP_SENSOR_1 + #define HEATER_1_USES_THERMISTOR +#endif +#if TEMP_SENSOR_2 > 0 + #define THERMISTORHEATER_2 TEMP_SENSOR_2 + #define HEATER_2_USES_THERMISTOR +#endif +#if TEMP_SENSOR_3 > 0 + #define THERMISTORHEATER_3 TEMP_SENSOR_3 + #define HEATER_3_USES_THERMISTOR +#endif +#if TEMP_SENSOR_BED > 0 + #define THERMISTORBED TEMP_SENSOR_BED + #define BED_USES_THERMISTOR +#endif +#if TEMP_SENSOR_0 == -1 + #define HEATER_0_USES_AD595 +#endif +#if TEMP_SENSOR_1 == -1 + #define HEATER_1_USES_AD595 +#endif +#if TEMP_SENSOR_2 == -1 + #define HEATER_2_USES_AD595 +#endif +#if TEMP_SENSOR_3 == -1 + #define HEATER_3_USES_AD595 +#endif +#if TEMP_SENSOR_BED == -1 + #define BED_USES_AD595 +#endif +#if TEMP_SENSOR_0 == -2 + #define HEATER_0_USES_MAX6675 +#endif +#if TEMP_SENSOR_0 == 0 + #undef HEATER_0_MINTEMP + #undef HEATER_0_MAXTEMP +#endif +#if TEMP_SENSOR_1 == 0 + #undef HEATER_1_MINTEMP + #undef HEATER_1_MAXTEMP +#endif +#if TEMP_SENSOR_2 == 0 + #undef HEATER_2_MINTEMP + #undef HEATER_2_MAXTEMP +#endif +#if TEMP_SENSOR_3 == 0 + #undef HEATER_3_MINTEMP + #undef HEATER_3_MAXTEMP +#endif +#if TEMP_SENSOR_BED == 0 + #undef BED_MINTEMP + #undef BED_MAXTEMP +#endif + + +#endif //__CONFIGURATION_ADV_H diff --git a/Marlin/fastio.h b/Marlin/fastio.h index 1d28d0582..d7198f3ff 100644 --- a/Marlin/fastio.h +++ b/Marlin/fastio.h @@ -1,63 +1,90 @@ /* - This code contibuted by Triffid_Hunter and modified by Kliment - why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html + This code contributed by Triffid_Hunter and modified by Kliment + why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html */ -#ifndef _ARDUINO_H -#define _ARDUINO_H +#ifndef _FASTIO_ARDUINO_H +#define _FASTIO_ARDUINO_H -#include +#include /* - utility functions + utility functions */ -#ifndef MASK +#ifndef MASK /// MASKING- returns \f$2^PIN\f$ - #define MASK(PIN) (1 << PIN) +#define MASK(PIN) (1 << PIN) #endif /* - magic I/O routines - - now you can simply SET_OUTPUT(STEP); WRITE(STEP, 1); WRITE(STEP, 0); + magic I/O routines + now you can simply SET_OUTPUT(STEP); WRITE(STEP, 1); WRITE(STEP, 0); */ /// Read a pin -#define _READ(IO) ((bool)(DIO ## IO ## _RPORT & MASK(DIO ## IO ## _PIN))) +#define _READ(IO) ((bool)(DIO ## IO ## _RPORT & MASK(DIO ## IO ## _PIN))) /// write to a pin -#define _WRITE(IO, v) do { if (v) {DIO ## IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ## IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0) +// On some boards pins > 0x100 are used. These are not converted to atomic actions. An critical section is needed. + +#define _WRITE_NC(IO, v) do { if (v) {DIO ## IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ## IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0) + +#define _WRITE_C(IO, v) do { if (v) { \ + CRITICAL_SECTION_START; \ + {DIO ## IO ## _WPORT |= MASK(DIO ## IO ## _PIN); }\ + CRITICAL_SECTION_END; \ + }\ + else {\ + CRITICAL_SECTION_START; \ + {DIO ## IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }\ + CRITICAL_SECTION_END; \ + }\ + }\ + while (0) + +#define _WRITE(IO, v) do { if (&(DIO ## IO ## _RPORT) >= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0) + /// toggle a pin -#define _TOGGLE(IO) do {DIO ## IO ## _RPORT = MASK(DIO ## IO ## _PIN); } while (0) +#define _TOGGLE(IO) do {DIO ## IO ## _RPORT = MASK(DIO ## IO ## _PIN); } while (0) /// set pin as input -#define _SET_INPUT(IO) do {DIO ## IO ## _DDR &= ~MASK(DIO ## IO ## _PIN); } while (0) +#define _SET_INPUT(IO) do {DIO ## IO ## _DDR &= ~MASK(DIO ## IO ## _PIN); } while (0) /// set pin as output -#define _SET_OUTPUT(IO) do {DIO ## IO ## _DDR |= MASK(DIO ## IO ## _PIN); } while (0) +#define _SET_OUTPUT(IO) do {DIO ## IO ## _DDR |= MASK(DIO ## IO ## _PIN); } while (0) /// check if pin is an input -#define _GET_INPUT(IO) ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) == 0) +#define _GET_INPUT(IO) ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) == 0) /// check if pin is an output -#define _GET_OUTPUT(IO) ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) != 0) +#define _GET_OUTPUT(IO) ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) != 0) -// why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html +/// check if pin is an timer +#define _GET_TIMER(IO) ((DIO ## IO ## _PWM) + +// why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html /// Read a pin wrapper -#define READ(IO) _READ(IO) +#define READ(IO) _READ(IO) /// Write to a pin wrapper -#define WRITE(IO, v) _WRITE(IO, v) +#define WRITE(IO, v) _WRITE(IO, v) + /// toggle a pin wrapper -#define TOGGLE(IO) _TOGGLE(IO) +#define TOGGLE(IO) _TOGGLE(IO) /// set pin as input wrapper -#define SET_INPUT(IO) _SET_INPUT(IO) +#define SET_INPUT(IO) _SET_INPUT(IO) /// set pin as output wrapper -#define SET_OUTPUT(IO) _SET_OUTPUT(IO) +#define SET_OUTPUT(IO) _SET_OUTPUT(IO) /// check if pin is an input wrapper -#define GET_INPUT(IO) _GET_INPUT(IO) +#define GET_INPUT(IO) _GET_INPUT(IO) /// check if pin is an output wrapper -#define GET_OUTPUT(IO) _GET_OUTPUT(IO) +#define GET_OUTPUT(IO) _GET_OUTPUT(IO) + +/// check if pin is an timer wrapper +#define GET_TIMER(IO) _GET_TIMER(IO) + +// Shorthand +#define OUT_WRITE(IO, v) { SET_OUTPUT(IO); WRITE(IO, v); } /* ports and functions @@ -400,7 +427,7 @@ pins #define PD7_PWM NULL #endif /* _AVR_ATmega{168,328,328P}__ */ -#if defined (__AVR_ATmega644__) || defined (__AVR_ATmega644P__) || defined (__AVR_ATmega644PA__) +#if defined (__AVR_ATmega644__) || defined (__AVR_ATmega644P__) || defined (__AVR_ATmega644PA__) || defined (__AVR_ATmega1284P__) // UART #define RXD DIO8 #define TXD DIO9 @@ -455,13 +482,13 @@ pins #define DIO3_RPORT PINB #define DIO3_WPORT PORTB #define DIO3_DDR DDRB -#define DIO3_PWM &OCR0A +#define DIO3_PWM OCR0A #define DIO4_PIN PINB4 #define DIO4_RPORT PINB #define DIO4_WPORT PORTB #define DIO4_DDR DDRB -#define DIO4_PWM &OCR0B +#define DIO4_PWM OCR0B #define DIO5_PIN PINB5 #define DIO5_RPORT PINB @@ -509,25 +536,25 @@ pins #define DIO12_RPORT PIND #define DIO12_WPORT PORTD #define DIO12_DDR DDRD -#define DIO12_PWM NULL +#define DIO12_PWM OCR1B #define DIO13_PIN PIND5 #define DIO13_RPORT PIND #define DIO13_WPORT PORTD #define DIO13_DDR DDRD -#define DIO13_PWM NULL +#define DIO13_PWM OCR1A #define DIO14_PIN PIND6 #define DIO14_RPORT PIND #define DIO14_WPORT PORTD #define DIO14_DDR DDRD -#define DIO14_PWM &OCR2B +#define DIO14_PWM OCR2B #define DIO15_PIN PIND7 #define DIO15_RPORT PIND #define DIO15_WPORT PORTD #define DIO15_DDR DDRD -#define DIO15_PWM &OCR2A +#define DIO15_PWM OCR2A #define DIO16_PIN PINC0 #define DIO16_RPORT PINC @@ -758,14 +785,14 @@ pins #define PB3_RPORT PINB #define PB3_WPORT PORTB #define PB3_DDR DDRB -#define PB3_PWM &OCR0A +#define PB3_PWM OCR0A #undef PB4 #define PB4_PIN PINB4 #define PB4_RPORT PINB #define PB4_WPORT PORTB #define PB4_DDR DDRB -#define PB4_PWM &OCR0B +#define PB4_PWM OCR0B #undef PB5 #define PB5_PIN PINB5 @@ -893,14 +920,14 @@ pins #define PD6_RPORT PIND #define PD6_WPORT PORTD #define PD6_DDR DDRD -#define PD6_PWM &OCR2B +#define PD6_PWM OCR2B #undef PD7 #define PD7_PIN PIND7 #define PD7_RPORT PIND #define PD7_WPORT PORTD #define PD7_DDR DDRD -#define PD7_PWM &OCR2A +#define PD7_PWM OCR2A #endif /* _AVR_ATmega{644,644P,644PA}__ */ #if defined (__AVR_ATmega1280__) || defined (__AVR_ATmega2560__) @@ -1361,7 +1388,101 @@ pins #define DIO69_DDR DDRK #define DIO69_PWM NULL +#define DIO70_PIN PING4 +#define DIO70_RPORT PING +#define DIO70_WPORT PORTG +#define DIO70_DDR DDRG +#define DIO70_PWM NULL +#define DIO71_PIN PING3 +#define DIO71_RPORT PING +#define DIO71_WPORT PORTG +#define DIO71_DDR DDRG +#define DIO71_PWM NULL + +#define DIO72_PIN PINJ2 +#define DIO72_RPORT PINJ +#define DIO72_WPORT PORTJ +#define DIO72_DDR DDRJ +#define DIO72_PWM NULL + +#define DIO73_PIN PINJ3 +#define DIO73_RPORT PINJ +#define DIO73_WPORT PORTJ +#define DIO73_DDR DDRJ +#define DIO73_PWM NULL + +#define DIO74_PIN PINJ7 +#define DIO74_RPORT PINJ +#define DIO74_WPORT PORTJ +#define DIO74_DDR DDRJ +#define DIO74_PWM NULL + +#define DIO75_PIN PINJ4 +#define DIO75_RPORT PINJ +#define DIO75_WPORT PORTJ +#define DIO75_DDR DDRJ +#define DIO75_PWM NULL + +#define DIO76_PIN PINJ5 +#define DIO76_RPORT PINJ +#define DIO76_WPORT PORTJ +#define DIO76_DDR DDRJ +#define DIO76_PWM NULL + +#define DIO77_PIN PINJ6 +#define DIO77_RPORT PINJ +#define DIO77_WPORT PORTJ +#define DIO77_DDR DDRJ +#define DIO77_PWM NULL + +#define DIO78_PIN PINE2 +#define DIO78_RPORT PINE +#define DIO78_WPORT PORTE +#define DIO78_DDR DDRE +#define DIO78_PWM NULL + +#define DIO79_PIN PINE6 +#define DIO79_RPORT PINE +#define DIO79_WPORT PORTE +#define DIO79_DDR DDRE +#define DIO79_PWM NULL + +#define DIO80_PIN PINE7 +#define DIO80_RPORT PINE +#define DIO80_WPORT PORTE +#define DIO80_DDR DDRE +#define DIO80_PWM NULL + +#define DIO81_PIN PIND4 +#define DIO81_RPORT PIND +#define DIO81_WPORT PORTD +#define DIO81_DDR DDRD +#define DIO81_PWM NULL + +#define DIO82_PIN PIND5 +#define DIO82_RPORT PIND +#define DIO82_WPORT PORTD +#define DIO82_DDR DDRD +#define DIO82_PWM NULL + +#define DIO83_PIN PIND6 +#define DIO83_RPORT PIND +#define DIO83_WPORT PORTD +#define DIO83_DDR DDRD +#define DIO83_PWM NULL + +#define DIO84_PIN PINH2 +#define DIO84_RPORT PINH +#define DIO84_WPORT PORTH +#define DIO84_DDR DDRH +#define DIO84_PWM NULL + +#define DIO85_PIN PINH7 +#define DIO85_RPORT PINH +#define DIO85_WPORT PORTH +#define DIO85_DDR DDRH +#define DIO85_PWM NULL #undef PA0 #define PA0_PIN PINA0 @@ -1904,7 +2025,7 @@ pins #endif -#if defined (__AVR_AT90USB1287__) +#if defined (__AVR_AT90USB1287__) || defined (__AVR_AT90USB1286__) || defined (__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) // SPI #define SCK DIO9 #define MISO DIO11 @@ -1917,6 +2038,10 @@ pins /* pins */ + +//#define AT90USBxx_TEENSYPP_ASSIGNMENTS // Use Teensy++ 2.0 assignments +#ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // Use traditional Marlin pin assignments + #define DIO0_PIN PINA0 #define DIO0_RPORT PINA #define DIO0_WPORT PORTA @@ -2549,10 +2674,1350 @@ pins #define PF7_WPORT PORTF #define PF7_PWM NULL #define PF7_DDR DDRF + +#else // AT90USBxx_TEENSYPP_ASSIGNMENTS -- Use Teensyduino Teensy++2.0 assignments. + +/* + +AT90USB 51 50 49 48 47 46 45 44 10 11 12 13 14 15 16 17 35 36 37 38 39 40 41 42 25 26 27 28 29 30 31 32 33 34 43 09 18 19 01 02 61 60 59 58 57 56 55 54 +Port A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7 +Marlin 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 +Teensy 28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45 + The pins 46 and 47 are not supported by Teensyduino, but are supported below. +*/ + +#define DIO0_PIN PIND0 +#define DIO0_RPORT PIND +#define DIO0_WPORT PORTD +#define DIO0_PWM NULL +#define DIO0_DDR DDRD + +#define DIO1_PIN PIND1 +#define DIO1_RPORT PIND +#define DIO1_WPORT PORTD +#define DIO1_PWM NULL +#define DIO1_DDR DDRD + +#define DIO2_PIN PIND2 +#define DIO2_RPORT PIND +#define DIO2_WPORT PORTD +#define DIO2_PWM NULL +#define DIO2_DDR DDRD + +#define DIO3_PIN PIND3 +#define DIO3_RPORT PIND +#define DIO3_WPORT PORTD +#define DIO3_PWM NULL +#define DIO3_DDR DDRD + +#define DIO4_PIN PIND4 +#define DIO4_RPORT PIND +#define DIO4_WPORT PORTD +#define DIO4_PWM NULL +#define DIO4_DDR DDRD + +#define DIO5_PIN PIND5 +#define DIO5_RPORT PIND +#define DIO5_WPORT PORTD +#define DIO5_PWM NULL +#define DIO5_DDR DDRD + +#define DIO6_PIN PIND6 +#define DIO6_RPORT PIND +#define DIO6_WPORT PORTD +#define DIO6_PWM NULL +#define DIO6_DDR DDRD + +#define DIO7_PIN PIND7 +#define DIO7_RPORT PIND +#define DIO7_WPORT PORTD +#define DIO7_PWM NULL +#define DIO7_DDR DDRD + +#define DIO8_PIN PINE0 +#define DIO8_RPORT PINE +#define DIO8_WPORT PORTE +#define DIO8_PWM NULL +#define DIO8_DDR DDRE + +#define DIO9_PIN PINE1 +#define DIO9_RPORT PINE +#define DIO9_WPORT PORTE +#define DIO9_PWM NULL +#define DIO9_DDR DDRE + +#define DIO10_PIN PINC0 +#define DIO10_RPORT PINC +#define DIO10_WPORT PORTC +#define DIO10_PWM NULL +#define DIO10_DDR DDRC + +#define DIO11_PIN PINC1 +#define DIO11_RPORT PINC +#define DIO11_WPORT PORTC +#define DIO11_PWM NULL +#define DIO11_DDR DDRC + +#define DIO12_PIN PINC2 +#define DIO12_RPORT PINC +#define DIO12_WPORT PORTC +#define DIO12_PWM NULL +#define DIO12_DDR DDRC + +#define DIO13_PIN PINC3 +#define DIO13_RPORT PINC +#define DIO13_WPORT PORTC +#define DIO13_PWM NULL +#define DIO13_DDR DDRC + +#define DIO14_PIN PINC4 +#define DIO14_RPORT PINC +#define DIO14_WPORT PORTC +#define DIO14_PWM NULL +#define DIO14_DDR DDRC + +#define DIO15_PIN PINC5 +#define DIO15_RPORT PINC +#define DIO15_WPORT PORTC +#define DIO15_PWM NULL +#define DIO15_DDR DDRC + +#define DIO16_PIN PINC6 +#define DIO16_RPORT PINC +#define DIO16_WPORT PORTC +#define DIO16_PWM NULL +#define DIO16_DDR DDRC + +#define DIO17_PIN PINC7 +#define DIO17_RPORT PINC +#define DIO17_WPORT PORTC +#define DIO17_PWM NULL +#define DIO17_DDR DDRC + +#define DIO18_PIN PINE6 +#define DIO18_RPORT PINE +#define DIO18_WPORT PORTE +#define DIO18_PWM NULL +#define DIO18_DDR DDRE + +#define DIO19_PIN PINE7 +#define DIO19_RPORT PINE +#define DIO19_WPORT PORTE +#define DIO19_PWM NULL +#define DIO19_DDR DDRE + +#define DIO20_PIN PINB0 +#define DIO20_RPORT PINB +#define DIO20_WPORT PORTB +#define DIO20_PWM NULL +#define DIO20_DDR DDRB + +#define DIO21_PIN PINB1 +#define DIO21_RPORT PINB +#define DIO21_WPORT PORTB +#define DIO21_PWM NULL +#define DIO21_DDR DDRB + +#define DIO22_PIN PINB2 +#define DIO22_RPORT PINB +#define DIO22_WPORT PORTB +#define DIO22_PWM NULL +#define DIO22_DDR DDRB + +#define DIO23_PIN PINB3 +#define DIO23_RPORT PINB +#define DIO23_WPORT PORTB +#define DIO23_PWM NULL +#define DIO23_DDR DDRB + +#define DIO24_PIN PINB4 +#define DIO24_RPORT PINB +#define DIO24_WPORT PORTB +#define DIO24_PWM NULL +#define DIO24_DDR DDRB + +#define DIO25_PIN PINB5 +#define DIO25_RPORT PINB +#define DIO25_WPORT PORTB +#define DIO25_PWM NULL +#define DIO25_DDR DDRB + +#define DIO26_PIN PINB6 +#define DIO26_RPORT PINB +#define DIO26_WPORT PORTB +#define DIO26_PWM NULL +#define DIO26_DDR DDRB + +#define DIO27_PIN PINB7 +#define DIO27_RPORT PINB +#define DIO27_WPORT PORTB +#define DIO27_PWM NULL +#define DIO27_DDR DDRB + +#define DIO28_PIN PINA0 +#define DIO28_RPORT PINA +#define DIO28_WPORT PORTA +#define DIO28_PWM NULL +#define DIO28_DDR DDRA + +#define DIO29_PIN PINA1 +#define DIO29_RPORT PINA +#define DIO29_WPORT PORTA +#define DIO29_PWM NULL +#define DIO29_DDR DDRA + +#define DIO30_PIN PINA2 +#define DIO30_RPORT PINA +#define DIO30_WPORT PORTA +#define DIO30_PWM NULL +#define DIO30_DDR DDRA + +#define DIO31_PIN PINA3 +#define DIO31_RPORT PINA +#define DIO31_WPORT PORTA +#define DIO31_PWM NULL +#define DIO31_DDR DDRA + +#define DIO32_PIN PINA4 +#define DIO32_RPORT PINA +#define DIO32_WPORT PORTA +#define DIO32_PWM NULL +#define DIO32_DDR DDRA + +#define DIO33_PIN PINA5 +#define DIO33_RPORT PINA +#define DIO33_WPORT PORTA +#define DIO33_PWM NULL +#define DIO33_DDR DDRA + +#define DIO34_PIN PINA6 +#define DIO34_RPORT PINA +#define DIO34_WPORT PORTA +#define DIO34_PWM NULL +#define DIO34_DDR DDRA + +#define DIO35_PIN PINA7 +#define DIO35_RPORT PINA +#define DIO35_WPORT PORTA +#define DIO35_PWM NULL +#define DIO35_DDR DDRA + +#define DIO36_PIN PINE4 +#define DIO36_RPORT PINE +#define DIO36_WPORT PORTE +#define DIO36_PWM NULL +#define DIO36_DDR DDRE + +#define DIO37_PIN PINE5 +#define DIO37_RPORT PINE +#define DIO37_WPORT PORTE +#define DIO37_PWM NULL +#define DIO37_DDR DDRE + +#define DIO38_PIN PINF0 +#define DIO38_RPORT PINF +#define DIO38_WPORT PORTF +#define DIO38_PWM NULL +#define DIO38_DDR DDRF + +#define DIO39_PIN PINF1 +#define DIO39_RPORT PINF +#define DIO39_WPORT PORTF +#define DIO39_PWM NULL +#define DIO39_DDR DDRF + +#define DIO40_PIN PINF2 +#define DIO40_RPORT PINF +#define DIO40_WPORT PORTF +#define DIO40_PWM NULL +#define DIO40_DDR DDRF + +#define DIO41_PIN PINF3 +#define DIO41_RPORT PINF +#define DIO41_WPORT PORTF +#define DIO41_PWM NULL +#define DIO41_DDR DDRF + +#define DIO42_PIN PINF4 +#define DIO42_RPORT PINF +#define DIO42_WPORT PORTF +#define DIO42_PWM NULL +#define DIO42_DDR DDRF + +#define DIO43_PIN PINF5 +#define DIO43_RPORT PINF +#define DIO43_WPORT PORTF +#define DIO43_PWM NULL +#define DIO43_DDR DDRF + +#define DIO44_PIN PINF6 +#define DIO44_RPORT PINF +#define DIO44_WPORT PORTF +#define DIO44_PWM NULL +#define DIO44_DDR DDRF + +#define DIO45_PIN PINF7 +#define DIO45_RPORT PINF +#define DIO45_WPORT PORTF +#define DIO45_PWM NULL +#define DIO45_DDR DDRF + +#define AIO0_PIN PINF0 +#define AIO0_RPORT PINF +#define AIO0_WPORT PORTF +#define AIO0_PWM NULL +#define AIO0_DDR DDRF + +#define AIO1_PIN PINF1 +#define AIO1_RPORT PINF +#define AIO1_WPORT PORTF +#define AIO1_PWM NULL +#define AIO1_DDR DDRF + +#define AIO2_PIN PINF2 +#define AIO2_RPORT PINF +#define AIO2_WPORT PORTF +#define AIO2_PWM NULL +#define AIO2_DDR DDRF + +#define AIO3_PIN PINF3 +#define AIO3_RPORT PINF +#define AIO3_WPORT PORTF +#define AIO3_PWM NULL +#define AIO3_DDR DDRF + +#define AIO4_PIN PINF4 +#define AIO4_RPORT PINF +#define AIO4_WPORT PORTF +#define AIO4_PWM NULL +#define AIO4_DDR DDRF + +#define AIO5_PIN PINF5 +#define AIO5_RPORT PINF +#define AIO5_WPORT PORTF +#define AIO5_PWM NULL +#define AIO5_DDR DDRF + +#define AIO6_PIN PINF6 +#define AIO6_RPORT PINF +#define AIO6_WPORT PORTF +#define AIO6_PWM NULL +#define AIO6_DDR DDRF + +#define AIO7_PIN PINF7 +#define AIO7_RPORT PINF +#define AIO7_WPORT PORTF +#define AIO7_PWM NULL +#define AIO7_DDR DDRF + +//-- Begin not supported by Teensyduino +//-- don't use Arduino functions on these pins pinMode/digitalWrite/etc +#define DIO46_PIN PINE2 +#define DIO46_RPORT PINE +#define DIO46_WPORT PORTE +#define DIO46_PWM NULL +#define DIO46_DDR DDRE + +#define DIO47_PIN PINE3 +#define DIO47_RPORT PINE +#define DIO47_WPORT PORTE +#define DIO47_PWM NULL +#define DIO47_DDR DDRE +//-- end not supported by Teensyduino + +#undef PA0 +#define PA0_PIN PINA0 +#define PA0_RPORT PINA +#define PA0_WPORT PORTA +#define PA0_PWM NULL +#define PA0_DDR DDRA +#undef PA1 +#define PA1_PIN PINA1 +#define PA1_RPORT PINA +#define PA1_WPORT PORTA +#define PA1_PWM NULL +#define PA1_DDR DDRA +#undef PA2 +#define PA2_PIN PINA2 +#define PA2_RPORT PINA +#define PA2_WPORT PORTA +#define PA2_PWM NULL +#define PA2_DDR DDRA +#undef PA3 +#define PA3_PIN PINA3 +#define PA3_RPORT PINA +#define PA3_WPORT PORTA +#define PA3_PWM NULL +#define PA3_DDR DDRA +#undef PA4 +#define PA4_PIN PINA4 +#define PA4_RPORT PINA +#define PA4_WPORT PORTA +#define PA4_PWM NULL +#define PA4_DDR DDRA +#undef PA5 +#define PA5_PIN PINA5 +#define PA5_RPORT PINA +#define PA5_WPORT PORTA +#define PA5_PWM NULL +#define PA5_DDR DDRA +#undef PA6 +#define PA6_PIN PINA6 +#define PA6_RPORT PINA +#define PA6_WPORT PORTA +#define PA6_PWM NULL +#define PA6_DDR DDRA +#undef PA7 +#define PA7_PIN PINA7 +#define PA7_RPORT PINA +#define PA7_WPORT PORTA +#define PA7_PWM NULL +#define PA7_DDR DDRA + +#undef PB0 +#define PB0_PIN PINB0 +#define PB0_RPORT PINB +#define PB0_WPORT PORTB +#define PB0_PWM NULL +#define PB0_DDR DDRB +#undef PB1 +#define PB1_PIN PINB1 +#define PB1_RPORT PINB +#define PB1_WPORT PORTB +#define PB1_PWM NULL +#define PB1_DDR DDRB +#undef PB2 +#define PB2_PIN PINB2 +#define PB2_RPORT PINB +#define PB2_WPORT PORTB +#define PB2_PWM NULL +#define PB2_DDR DDRB +#undef PB3 +#define PB3_PIN PINB3 +#define PB3_RPORT PINB +#define PB3_WPORT PORTB +#define PB3_PWM NULL +#define PB3_DDR DDRB +#undef PB4 +#define PB4_PIN PINB4 +#define PB4_RPORT PINB +#define PB4_WPORT PORTB +#define PB4_PWM NULL +#define PB4_DDR DDRB +#undef PB5 +#define PB5_PIN PINB5 +#define PB5_RPORT PINB +#define PB5_WPORT PORTB +#define PB5_PWM NULL +#define PB5_DDR DDRB +#undef PB6 +#define PB6_PIN PINB6 +#define PB6_RPORT PINB +#define PB6_WPORT PORTB +#define PB6_PWM NULL +#define PB6_DDR DDRB +#undef PB7 +#define PB7_PIN PINB7 +#define PB7_RPORT PINB +#define PB7_WPORT PORTB +#define PB7_PWM NULL +#define PB7_DDR DDRB + +#undef PC0 +#define PC0_PIN PINC0 +#define PC0_RPORT PINC +#define PC0_WPORT PORTC +#define PC0_PWM NULL +#define PC0_DDR DDRC +#undef PC1 +#define PC1_PIN PINC1 +#define PC1_RPORT PINC +#define PC1_WPORT PORTC +#define PC1_PWM NULL +#define PC1_DDR DDRC +#undef PC2 +#define PC2_PIN PINC2 +#define PC2_RPORT PINC +#define PC2_WPORT PORTC +#define PC2_PWM NULL +#define PC2_DDR DDRC +#undef PC3 +#define PC3_PIN PINC3 +#define PC3_RPORT PINC +#define PC3_WPORT PORTC +#define PC3_PWM NULL +#define PC3_DDR DDRC +#undef PC4 +#define PC4_PIN PINC4 +#define PC4_RPORT PINC +#define PC4_WPORT PORTC +#define PC4_PWM NULL +#define PC4_DDR DDRC +#undef PC5 +#define PC5_PIN PINC5 +#define PC5_RPORT PINC +#define PC5_WPORT PORTC +#define PC5_PWM NULL +#define PC5_DDR DDRC +#undef PC6 +#define PC6_PIN PINC6 +#define PC6_RPORT PINC +#define PC6_WPORT PORTC +#define PC6_PWM NULL +#define PC6_DDR DDRC +#undef PC7 +#define PC7_PIN PINC7 +#define PC7_RPORT PINC +#define PC7_WPORT PORTC +#define PC7_PWM NULL +#define PC7_DDR DDRC + +#undef PD0 +#define PD0_PIN PIND0 +#define PD0_RPORT PIND +#define PD0_WPORT PORTD +#define PD0_PWM NULL +#define PD0_DDR DDRD +#undef PD1 +#define PD1_PIN PIND1 +#define PD1_RPORT PIND +#define PD1_WPORT PORTD +#define PD1_PWM NULL +#define PD1_DDR DDRD +#undef PD2 +#define PD2_PIN PIND2 +#define PD2_RPORT PIND +#define PD2_WPORT PORTD +#define PD2_PWM NULL +#define PD2_DDR DDRD +#undef PD3 +#define PD3_PIN PIND3 +#define PD3_RPORT PIND +#define PD3_WPORT PORTD +#define PD3_PWM NULL +#define PD3_DDR DDRD +#undef PD4 +#define PD4_PIN PIND4 +#define PD4_RPORT PIND +#define PD4_WPORT PORTD +#define PD4_PWM NULL +#define PD4_DDR DDRD +#undef PD5 +#define PD5_PIN PIND5 +#define PD5_RPORT PIND +#define PD5_WPORT PORTD +#define PD5_PWM NULL +#define PD5_DDR DDRD +#undef PD6 +#define PD6_PIN PIND6 +#define PD6_RPORT PIND +#define PD6_WPORT PORTD +#define PD6_PWM NULL +#define PD6_DDR DDRD +#undef PD7 +#define PD7_PIN PIND7 +#define PD7_RPORT PIND +#define PD7_WPORT PORTD +#define PD7_PWM NULL +#define PD7_DDR DDRD + +#undef PE0 +#define PE0_PIN PINE0 +#define PE0_RPORT PINE +#define PE0_WPORT PORTE +#define PE0_PWM NULL +#define PE0_DDR DDRE +#undef PE1 +#define PE1_PIN PINE1 +#define PE1_RPORT PINE +#define PE1_WPORT PORTE +#define PE1_PWM NULL +#define PE1_DDR DDRE +#undef PE2 +#define PE2_PIN PINE2 +#define PE2_RPORT PINE +#define PE2_WPORT PORTE +#define PE2_PWM NULL +#define PE2_DDR DDRE +#undef PE3 +#define PE3_PIN PINE3 +#define PE3_RPORT PINE +#define PE3_WPORT PORTE +#define PE3_PWM NULL +#define PE3_DDR DDRE +#undef PE4 +#define PE4_PIN PINE4 +#define PE4_RPORT PINE +#define PE4_WPORT PORTE +#define PE4_PWM NULL +#define PE4_DDR DDRE +#undef PE5 +#define PE5_PIN PINE5 +#define PE5_RPORT PINE +#define PE5_WPORT PORTE +#define PE5_PWM NULL +#define PE5_DDR DDRE +#undef PE6 +#define PE6_PIN PINE6 +#define PE6_RPORT PINE +#define PE6_WPORT PORTE +#define PE6_PWM NULL +#define PE6_DDR DDRE +#undef PE7 +#define PE7_PIN PINE7 +#define PE7_RPORT PINE +#define PE7_WPORT PORTE +#define PE7_PWM NULL +#define PE7_DDR DDRE + +#undef PF0 +#define PF0_PIN PINF0 +#define PF0_RPORT PINF +#define PF0_WPORT PORTF +#define PF0_PWM NULL +#define PF0_DDR DDRF +#undef PF1 +#define PF1_PIN PINF1 +#define PF1_RPORT PINF +#define PF1_WPORT PORTF +#define PF1_PWM NULL +#define PF1_DDR DDRF +#undef PF2 +#define PF2_PIN PINF2 +#define PF2_RPORT PINF +#define PF2_WPORT PORTF +#define PF2_PWM NULL +#define PF2_DDR DDRF +#undef PF3 +#define PF3_PIN PINF3 +#define PF3_RPORT PINF +#define PF3_WPORT PORTF +#define PF3_PWM NULL +#define PF3_DDR DDRF +#undef PF4 +#define PF4_PIN PINF4 +#define PF4_RPORT PINF +#define PF4_WPORT PORTF +#define PF4_PWM NULL +#define PF4_DDR DDRF +#undef PF5 +#define PF5_PIN PINF5 +#define PF5_RPORT PINF +#define PF5_WPORT PORTF +#define PF5_PWM NULL +#define PF5_DDR DDRF +#undef PF6 +#define PF6_PIN PINF6 +#define PF6_RPORT PINF +#define PF6_WPORT PORTF +#define PF6_PWM NULL +#define PF6_DDR DDRF +#undef PF7 +#define PF7_PIN PINF7 +#define PF7_RPORT PINF +#define PF7_WPORT PORTF +#define PF7_PWM NULL +#define PF7_DDR DDRF + +#endif // AT90USBxx_TEENSYPP_ASSIGNMENTS Teensyduino assignments +#endif // __AVR_AT90usbxxx__ + + +#if defined (__AVR_ATmega1281__) || defined (__AVR_ATmega2561__) +// UART +#define RXD DIO0 +#define TXD DIO1 + +// SPI +#define SCK DIO10 +#define MISO DIO12 +#define MOSI DIO11 +#define SS DIO16 + +// TWI (I2C) +#define SCL DIO17 +#define SDA DIO18 + +// timers and PWM +#define OC0A DIO9 +#define OC0B DIO4 +#define OC1A DIO7 +#define OC1B DIO8 +#define OC2A DIO6 +#define OC3A DIO5 +#define OC3B DIO2 +#define OC3C DIO3 + + +// change for your board +#define DEBUG_LED DIO46 + +/* +pins +*/ +#define DIO0_PIN PINE0 +#define DIO0_RPORT PINE +#define DIO0_WPORT PORTE +#define DIO0_DDR DDRE +#define DIO0_PWM NULL + +#define DIO1_PIN PINE1 +#define DIO1_RPORT PINE +#define DIO1_WPORT PORTE +#define DIO1_DDR DDRE +#define DIO1_PWM NULL + +#define DIO2_PIN PINE4 +#define DIO2_RPORT PINE +#define DIO2_WPORT PORTE +#define DIO2_DDR DDRE +#define DIO2_PWM &OCR3BL + +#define DIO3_PIN PINE5 +#define DIO3_RPORT PINE +#define DIO3_WPORT PORTE +#define DIO3_DDR DDRE +#define DIO3_PWM &OCR3CL + +#define DIO4_PIN PING5 +#define DIO4_RPORT PING +#define DIO4_WPORT PORTG +#define DIO4_DDR DDRG +#define DIO4_PWM &OCR0B + +#define DIO5_PIN PINE3 +#define DIO5_RPORT PINE +#define DIO5_WPORT PORTE +#define DIO5_DDR DDRE +#define DIO5_PWM &OCR3AL + +#define DIO6_PIN PINB4 +#define DIO6_RPORT PINB +#define DIO6_WPORT PORTB +#define DIO6_DDR DDRB +#define DIO6_PWM &OCR2AL + +#define DIO7_PIN PINB5 +#define DIO7_RPORT PINB +#define DIO7_WPORT PORTB +#define DIO7_DDR DDRB +#define DIO7_PWM &OCR1AL + +#define DIO8_PIN PINB6 +#define DIO8_RPORT PINB +#define DIO8_WPORT PORTB +#define DIO8_DDR DDRB +#define DIO8_PWM &OCR1BL + +#define DIO9_PIN PINB7 +#define DIO9_RPORT PINB +#define DIO9_WPORT PORTB +#define DIO9_DDR DDRB +#define DIO9_PWM &OCR0AL + +#define DIO10_PIN PINB1 +#define DIO10_RPORT PINB +#define DIO10_WPORT PORTB +#define DIO10_DDR DDRB +#define DIO10_PWM NULL + +#define DIO11_PIN PINB2 +#define DIO11_RPORT PINB +#define DIO11_WPORT PORTB +#define DIO11_DDR DDRB +#define DIO11_PWM NULL + +#define DIO12_PIN PINB3 +#define DIO12_RPORT PINB +#define DIO12_WPORT PORTB +#define DIO12_DDR DDRB +#define DIO12_PWM NULL + +#define DIO13_PIN PINE2 +#define DIO13_RPORT PINE +#define DIO13_WPORT PORTE +#define DIO13_DDR DDRE +#define DIO13_PWM NULL + +#define DIO14_PIN PINE6 +#define DIO14_RPORT PINE +#define DIO14_WPORT PORTE +#define DIO14_DDR DDRE +#define DIO14_PWM NULL + +#define DIO15_PIN PINE7 +#define DIO15_RPORT PINE +#define DIO15_WPORT PORTE +#define DIO15_DDR DDRE +#define DIO15_PWM NULL + +#define DIO16_PIN PINB0 +#define DIO16_RPORT PINB +#define DIO16_WPORT PORTB +#define DIO16_DDR DDRB +#define DIO16_PWM NULL + +#define DIO17_PIN PIND0 +#define DIO17_RPORT PIND +#define DIO17_WPORT PORTD +#define DIO17_DDR DDRD +#define DIO17_PWM NULL + +#define DIO18_PIN PIND1 +#define DIO18_RPORT PIND +#define DIO18_WPORT PORTD +#define DIO18_DDR DDRD +#define DIO18_PWM NULL + +#define DIO19_PIN PIND2 +#define DIO19_RPORT PIND +#define DIO19_WPORT PORTD +#define DIO19_DDR DDRD +#define DIO19_PWM NULL + +#define DIO20_PIN PIND3 +#define DIO20_RPORT PIND +#define DIO20_WPORT PORTD +#define DIO20_DDR DDRD +#define DIO20_PWM NULL + +#define DIO21_PIN PIND4 +#define DIO21_RPORT PIND +#define DIO21_WPORT PORTD +#define DIO21_DDR DDRD +#define DIO21_PWM NULL + +#define DIO22_PIN PIND5 +#define DIO22_RPORT PIND +#define DIO22_WPORT PORTD +#define DIO22_DDR DDRD +#define DIO22_PWM NULL + +#define DIO23_PIN PIND6 +#define DIO23_RPORT PIND +#define DIO23_WPORT PORTD +#define DIO23_DDR DDRD +#define DIO23_PWM NULL + +#define DIO24_PIN PIND7 +#define DIO24_RPORT PIND +#define DIO24_WPORT PORTD +#define DIO24_DDR DDRD +#define DIO24_PWM NULL + +#define DIO25_PIN PING0 +#define DIO25_RPORT PING +#define DIO25_WPORT PORTG +#define DIO25_DDR DDRG +#define DIO25_PWM NULL + +#define DIO26_PIN PING1 +#define DIO26_RPORT PING +#define DIO26_WPORT PORTG +#define DIO26_DDR DDRG +#define DIO26_PWM NULL + +#define DIO27_PIN PING2 +#define DIO27_RPORT PING +#define DIO27_WPORT PORTG +#define DIO27_DDR DDRG +#define DIO27_PWM NULL + +#define DIO28_PIN PING3 +#define DIO28_RPORT PING +#define DIO28_WPORT PORTG +#define DIO28_DDR DDRG +#define DIO28_PWM NULL + +#define DIO29_PIN PING4 +#define DIO29_RPORT PING +#define DIO29_WPORT PORTG +#define DIO29_DDR DDRG +#define DIO29_PWM NULL + +#define DIO30_PIN PINC0 +#define DIO30_RPORT PINC +#define DIO30_WPORT PORTC +#define DIO30_DDR DDRC +#define DIO30_PWM NULL + +#define DIO31_PIN PINC1 +#define DIO31_RPORT PINC +#define DIO31_WPORT PORTC +#define DIO31_DDR DDRC +#define DIO31_PWM NULL + +#define DIO32_PIN PINC2 +#define DIO32_RPORT PINC +#define DIO32_WPORT PORTC +#define DIO32_DDR DDRC +#define DIO32_PWM NULL + +#define DIO33_PIN PINC3 +#define DIO33_RPORT PINC +#define DIO33_WPORT PORTC +#define DIO33_DDR DDRC +#define DIO33_PWM NULL + +#define DIO34_PIN PINC4 +#define DIO34_RPORT PINC +#define DIO34_WPORT PORTC +#define DIO34_DDR DDRC +#define DIO34_PWM NULL + +#define DIO35_PIN PINC5 +#define DIO35_RPORT PINC +#define DIO35_WPORT PORTC +#define DIO35_DDR DDRC +#define DIO35_PWM NULL + +#define DIO36_PIN PINC6 +#define DIO36_RPORT PINC +#define DIO36_WPORT PORTC +#define DIO36_DDR DDRC +#define DIO36_PWM NULL + +#define DIO37_PIN PINC7 +#define DIO37_RPORT PINC +#define DIO37_WPORT PORTC +#define DIO37_DDR DDRC +#define DIO37_PWM NULL + +#define DIO38_PIN PINA0 +#define DIO38_RPORT PINA +#define DIO38_WPORT PORTA +#define DIO38_DDR DDRA +#define DIO38_PWM NULL + +#define DIO39_PIN PINA1 +#define DIO39_RPORT PINA +#define DIO39_WPORT PORTA +#define DIO39_DDR DDRA +#define DIO39_PWM NULL + +#define DIO40_PIN PINA2 +#define DIO40_RPORT PINA +#define DIO40_WPORT PORTA +#define DIO40_DDR DDRA +#define DIO40_PWM NULL + +#define DIO41_PIN PINA3 +#define DIO41_RPORT PINA +#define DIO41_WPORT PORTA +#define DIO41_DDR DDRA +#define DIO41_PWM NULL + +#define DIO42_PIN PINA4 +#define DIO42_RPORT PINA +#define DIO42_WPORT PORTA +#define DIO42_DDR DDRA +#define DIO42_PWM NULL + +#define DIO43_PIN PINA5 +#define DIO43_RPORT PINA +#define DIO43_WPORT PORTA +#define DIO43_DDR DDRA +#define DIO43_PWM NULL + +#define DIO44_PIN PINA6 +#define DIO44_RPORT PINA +#define DIO44_WPORT PORTA +#define DIO44_DDR DDRA +#define DIO44_PWM NULL + +#define DIO45_PIN PINA7 +#define DIO45_RPORT PINA +#define DIO45_WPORT PORTA +#define DIO45_DDR DDRA +#define DIO45_PWM NULL + +#define DIO46_PIN PINF0 +#define DIO46_RPORT PINF +#define DIO46_WPORT PORTF +#define DIO46_DDR DDRF +#define DIO46_PWM NULL + +#define DIO47_PIN PINF1 +#define DIO47_RPORT PINF +#define DIO47_WPORT PORTF +#define DIO47_DDR DDRF +#define DIO47_PWM NULL + +#define DIO48_PIN PINF2 +#define DIO48_RPORT PINF +#define DIO48_WPORT PORTF +#define DIO48_DDR DDRF +#define DIO48_PWM NULL + +#define DIO49_PIN PINF3 +#define DIO49_RPORT PINF +#define DIO49_WPORT PORTF +#define DIO49_DDR DDRF +#define DIO49_PWM NULL + +#define DIO50_PIN PINF4 +#define DIO50_RPORT PINF +#define DIO50_WPORT PORTF +#define DIO50_DDR DDRF +#define DIO50_PWM NULL + +#define DIO51_PIN PINF5 +#define DIO51_RPORT PINF +#define DIO51_WPORT PORTF +#define DIO51_DDR DDRF +#define DIO51_PWM NULL + +#define DIO52_PIN PINF6 +#define DIO52_RPORT PINF +#define DIO52_WPORT PORTF +#define DIO52_DDR DDRF +#define DIO52_PWM NULL + +#define DIO53_PIN PINF7 +#define DIO53_RPORT PINF +#define DIO53_WPORT PORTF +#define DIO53_DDR DDRF +#define DIO53_PWM NULL + + + + +#undef PA0 +#define PA0_PIN PINA0 +#define PA0_RPORT PINA +#define PA0_WPORT PORTA +#define PA0_DDR DDRA +#define PA0_PWM NULL +#undef PA1 +#define PA1_PIN PINA1 +#define PA1_RPORT PINA +#define PA1_WPORT PORTA +#define PA1_DDR DDRA +#define PA1_PWM NULL +#undef PA2 +#define PA2_PIN PINA2 +#define PA2_RPORT PINA +#define PA2_WPORT PORTA +#define PA2_DDR DDRA +#define PA2_PWM NULL +#undef PA3 +#define PA3_PIN PINA3 +#define PA3_RPORT PINA +#define PA3_WPORT PORTA +#define PA3_DDR DDRA +#define PA3_PWM NULL +#undef PA4 +#define PA4_PIN PINA4 +#define PA4_RPORT PINA +#define PA4_WPORT PORTA +#define PA4_DDR DDRA +#define PA4_PWM NULL +#undef PA5 +#define PA5_PIN PINA5 +#define PA5_RPORT PINA +#define PA5_WPORT PORTA +#define PA5_DDR DDRA +#define PA5_PWM NULL +#undef PA6 +#define PA6_PIN PINA6 +#define PA6_RPORT PINA +#define PA6_WPORT PORTA +#define PA6_DDR DDRA +#define PA6_PWM NULL +#undef PA7 +#define PA7_PIN PINA7 +#define PA7_RPORT PINA +#define PA7_WPORT PORTA +#define PA7_DDR DDRA +#define PA7_PWM NULL + +#undef PB0 +#define PB0_PIN PINB0 +#define PB0_RPORT PINB +#define PB0_WPORT PORTB +#define PB0_DDR DDRB +#define PB0_PWM NULL +#undef PB1 +#define PB1_PIN PINB1 +#define PB1_RPORT PINB +#define PB1_WPORT PORTB +#define PB1_DDR DDRB +#define PB1_PWM NULL +#undef PB2 +#define PB2_PIN PINB2 +#define PB2_RPORT PINB +#define PB2_WPORT PORTB +#define PB2_DDR DDRB +#define PB2_PWM NULL +#undef PB3 +#define PB3_PIN PINB3 +#define PB3_RPORT PINB +#define PB3_WPORT PORTB +#define PB3_DDR DDRB +#define PB3_PWM NULL +#undef PB4 +#define PB4_PIN PINB4 +#define PB4_RPORT PINB +#define PB4_WPORT PORTB +#define PB4_DDR DDRB +#define PB4_PWM &OCR2A +#undef PB5 +#define PB5_PIN PINB5 +#define PB5_RPORT PINB +#define PB5_WPORT PORTB +#define PB5_DDR DDRB +#define PB5_PWM NULL +#undef PB6 +#define PB6_PIN PINB6 +#define PB6_RPORT PINB +#define PB6_WPORT PORTB +#define PB6_DDR DDRB +#define PB6_PWM NULL +#undef PB7 +#define PB7_PIN PINB7 +#define PB7_RPORT PINB +#define PB7_WPORT PORTB +#define PB7_DDR DDRB +#define PB7_PWM &OCR0A + +#undef PC0 +#define PC0_PIN PINC0 +#define PC0_RPORT PINC +#define PC0_WPORT PORTC +#define PC0_DDR DDRC +#define PC0_PWM NULL +#undef PC1 +#define PC1_PIN PINC1 +#define PC1_RPORT PINC +#define PC1_WPORT PORTC +#define PC1_DDR DDRC +#define PC1_PWM NULL +#undef PC2 +#define PC2_PIN PINC2 +#define PC2_RPORT PINC +#define PC2_WPORT PORTC +#define PC2_DDR DDRC +#define PC2_PWM NULL +#undef PC3 +#define PC3_PIN PINC3 +#define PC3_RPORT PINC +#define PC3_WPORT PORTC +#define PC3_DDR DDRC +#define PC3_PWM NULL +#undef PC4 +#define PC4_PIN PINC4 +#define PC4_RPORT PINC +#define PC4_WPORT PORTC +#define PC4_DDR DDRC +#define PC4_PWM NULL +#undef PC5 +#define PC5_PIN PINC5 +#define PC5_RPORT PINC +#define PC5_WPORT PORTC +#define PC5_DDR DDRC +#define PC5_PWM NULL +#undef PC6 +#define PC6_PIN PINC6 +#define PC6_RPORT PINC +#define PC6_WPORT PORTC +#define PC6_DDR DDRC +#define PC6_PWM NULL +#undef PC7 +#define PC7_PIN PINC7 +#define PC7_RPORT PINC +#define PC7_WPORT PORTC +#define PC7_DDR DDRC +#define PC7_PWM NULL + +#undef PD0 +#define PD0_PIN PIND0 +#define PD0_RPORT PIND +#define PD0_WPORT PORTD +#define PD0_DDR DDRD +#define PD0_PWM NULL +#undef PD1 +#define PD1_PIN PIND1 +#define PD1_RPORT PIND +#define PD1_WPORT PORTD +#define PD1_DDR DDRD +#define PD1_PWM NULL +#undef PD2 +#define PD2_PIN PIND2 +#define PD2_RPORT PIND +#define PD2_WPORT PORTD +#define PD2_DDR DDRD +#define PD2_PWM NULL +#undef PD3 +#define PD3_PIN PIND3 +#define PD3_RPORT PIND +#define PD3_WPORT PORTD +#define PD3_DDR DDRD +#define PD3_PWM NULL +#undef PD4 +#define PD4_PIN PIND4 +#define PD4_RPORT PIND +#define PD4_WPORT PORTD +#define PD4_DDR DDRD +#define PD4_PWM NULL +#undef PD5 +#define PD5_PIN PIND5 +#define PD5_RPORT PIND +#define PD5_WPORT PORTD +#define PD5_DDR DDRD +#define PD5_PWM NULL +#undef PD6 +#define PD6_PIN PIND6 +#define PD6_RPORT PIND +#define PD6_WPORT PORTD +#define PD6_DDR DDRD +#define PD6_PWM NULL +#undef PD7 +#define PD7_PIN PIND7 +#define PD7_RPORT PIND +#define PD7_WPORT PORTD +#define PD7_DDR DDRD +#define PD7_PWM NULL + +#undef PE0 +#define PE0_PIN PINE0 +#define PE0_RPORT PINE +#define PE0_WPORT PORTE +#define PE0_DDR DDRE +#define PE0_PWM NULL +#undef PE1 +#define PE1_PIN PINE1 +#define PE1_RPORT PINE +#define PE1_WPORT PORTE +#define PE1_DDR DDRE +#define PE1_PWM NULL +#undef PE2 +#define PE2_PIN PINE2 +#define PE2_RPORT PINE +#define PE2_WPORT PORTE +#define PE2_DDR DDRE +#define PE2_PWM NULL +#undef PE3 +#define PE3_PIN PINE3 +#define PE3_RPORT PINE +#define PE3_WPORT PORTE +#define PE3_DDR DDRE +#define PE3_PWM &OCR3AL +#undef PE4 +#define PE4_PIN PINE4 +#define PE4_RPORT PINE +#define PE4_WPORT PORTE +#define PE4_DDR DDRE +#define PE4_PWM &OCR3BL +#undef PE5 +#define PE5_PIN PINE5 +#define PE5_RPORT PINE +#define PE5_WPORT PORTE +#define PE5_DDR DDRE +#define PE5_PWM &OCR3CL +#undef PE6 +#define PE6_PIN PINE6 +#define PE6_RPORT PINE +#define PE6_WPORT PORTE +#define PE6_DDR DDRE +#define PE6_PWM NULL +#undef PE7 +#define PE7_PIN PINE7 +#define PE7_RPORT PINE +#define PE7_WPORT PORTE +#define PE7_DDR DDRE +#define PE7_PWM NULL + +#undef PF0 +#define PF0_PIN PINF0 +#define PF0_RPORT PINF +#define PF0_WPORT PORTF +#define PF0_DDR DDRF +#define PF0_PWM NULL +#undef PF1 +#define PF1_PIN PINF1 +#define PF1_RPORT PINF +#define PF1_WPORT PORTF +#define PF1_DDR DDRF +#define PF1_PWM NULL +#undef PF2 +#define PF2_PIN PINF2 +#define PF2_RPORT PINF +#define PF2_WPORT PORTF +#define PF2_DDR DDRF +#define PF2_PWM NULL +#undef PF3 +#define PF3_PIN PINF3 +#define PF3_RPORT PINF +#define PF3_WPORT PORTF +#define PF3_DDR DDRF +#define PF3_PWM NULL +#undef PF4 +#define PF4_PIN PINF4 +#define PF4_RPORT PINF +#define PF4_WPORT PORTF +#define PF4_DDR DDRF +#define PF4_PWM NULL +#undef PF5 +#define PF5_PIN PINF5 +#define PF5_RPORT PINF +#define PF5_WPORT PORTF +#define PF5_DDR DDRF +#define PF5_PWM NULL +#undef PF6 +#define PF6_PIN PINF6 +#define PF6_RPORT PINF +#define PF6_WPORT PORTF +#define PF6_DDR DDRF +#define PF6_PWM NULL +#undef PF7 +#define PF7_PIN PINF7 +#define PF7_RPORT PINF +#define PF7_WPORT PORTF +#define PF7_DDR DDRF +#define PF7_PWM NULL + +#undef PG0 +#define PG0_PIN PING0 +#define PG0_RPORT PING +#define PG0_WPORT PORTG +#define PG0_DDR DDRG +#define PG0_PWM NULL +#undef PG1 +#define PG1_PIN PING1 +#define PG1_RPORT PING +#define PG1_WPORT PORTG +#define PG1_DDR DDRG +#define PG1_PWM NULL +#undef PG2 +#define PG2_PIN PING2 +#define PG2_RPORT PING +#define PG2_WPORT PORTG +#define PG2_DDR DDRG +#define PG2_PWM NULL +#undef PG3 +#define PG3_PIN PING3 +#define PG3_RPORT PING +#define PG3_WPORT PORTG +#define PG3_DDR DDRG +#define PG3_PWM NULL +#undef PG4 +#define PG4_PIN PING4 +#define PG4_RPORT PING +#define PG4_WPORT PORTG +#define PG4_DDR DDRG +#define PG4_PWM NULL +#undef PG5 +#define PG5_PIN PING5 +#define PG5_RPORT PING +#define PG5_WPORT PORTG +#define PG5_DDR DDRG +#define PG5_PWM &OCR0B + + #endif #ifndef DIO0_PIN #error pins for this chip not defined in arduino.h! If you write an appropriate pin definition and have this firmware work on your chip, please submit a pull request #endif -#endif /* _ARDUINO_H */ +#endif /* _FASTIO_ARDUINO_H */ diff --git a/Marlin/language.h b/Marlin/language.h new file mode 100644 index 000000000..dc32bea76 --- /dev/null +++ b/Marlin/language.h @@ -0,0 +1,266 @@ +#ifndef LANGUAGE_H +#define LANGUAGE_H + +#include "Configuration.h" + +#define LANGUAGE_CONCAT(M) #M +#define GENERATE_LANGUAGE_INCLUDE(M) LANGUAGE_CONCAT(language_##M.h) + + +// NOTE: IF YOU CHANGE LANGUAGE FILES OR MERGE A FILE WITH CHANGES +// +// ==> ALWAYS TRY TO COMPILE MARLIN WITH/WITHOUT "ULTIPANEL" / "ULTRALCD" / "SDSUPPORT" #define IN "Configuration.h" +// ==> ALSO TRY ALL AVAILABLE LANGUAGE OPTIONS + +// Languages +// en English +// pl Polish +// fr French +// de German +// es Spanish +// ru Russian +// it Italian +// pt Portuguese +// pt-br Portuguese (Brazil) +// fi Finnish +// an Aragonese +// nl Dutch +// ca Catalan +// eu Basque-Euskera + +#ifndef LANGUAGE_INCLUDE + // pick your language from the list above + #define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) +#endif + +#define PROTOCOL_VERSION "1.0" +#define FIRMWARE_URL "https://github.com/MarlinFirmware/Marlin" + +#if MB(ULTIMAKER)|| MB(ULTIMAKER_OLD)|| MB(ULTIMAIN_2) + #define MACHINE_NAME "Ultimaker" + #define FIRMWARE_URL "http://firmware.ultimaker.com" +#elif MB(RUMBA) + #define MACHINE_NAME "Rumba" +#elif MB(3DRAG) + #define MACHINE_NAME "3Drag" + #define FIRMWARE_URL "http://3dprint.elettronicain.it/" +#elif MB(K8200) + #define MACHINE_NAME "K8200" +#elif MB(5DPRINT) + #define MACHINE_NAME "Makibox" +#elif MB(SAV_MKI) + #define MACHINE_NAME "SAV MkI" + #define FIRMWARE_URL "https://github.com/fmalpartida/Marlin/tree/SAV-MkI-config" +#elif MB(WITBOX) + #define MACHINE_NAME "WITBOX" + #define FIRMWARE_URL "http://www.bq.com/gb/downloads-witbox.html" +#elif MB(HEPHESTOS) + #define MACHINE_NAME "HEPHESTOS" + #define FIRMWARE_URL "http://www.bq.com/gb/downloads-prusa-i3-hephestos.html" +#else // Default firmware set to Mendel + #define MACHINE_NAME "Mendel" +#endif + +#ifdef CUSTOM_MENDEL_NAME + #define MACHINE_NAME CUSTOM_MENDEL_NAME +#endif + +#ifndef MACHINE_UUID + #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" +#endif + + +#define STRINGIFY_(n) #n +#define STRINGIFY(n) STRINGIFY_(n) + + +// Common LCD messages + + /* nothing here yet */ + +// Common serial messages +#define MSG_MARLIN "Marlin" + +// Serial Console Messages (do not translate those!) + +#define MSG_Enqueing "enqueing \"" +#define MSG_POWERUP "PowerUp" +#define MSG_EXTERNAL_RESET " External Reset" +#define MSG_BROWNOUT_RESET " Brown out Reset" +#define MSG_WATCHDOG_RESET " Watchdog Reset" +#define MSG_SOFTWARE_RESET " Software Reset" +#define MSG_AUTHOR " | Author: " +#define MSG_CONFIGURATION_VER " Last Updated: " +#define MSG_FREE_MEMORY " Free Memory: " +#define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " +#define MSG_OK "ok" +#define MSG_FILE_SAVED "Done saving file." +#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: " +#define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " +#define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " +#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: " +#define MSG_FILE_PRINTED "Done printing file" +#define MSG_BEGIN_FILE_LIST "Begin file list" +#define MSG_END_FILE_LIST "End file list" +#define MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder " +#define MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder " +#define MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder " +#define MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder " +#define MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder " +#define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" +#define MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder " +#define MSG_HEATING "Heating..." +#define MSG_HEATING_COMPLETE "Heating done." +#define MSG_BED_HEATING "Bed Heating." +#define MSG_BED_DONE "Bed done." +#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n" +#define MSG_COUNT_X " Count X: " +#define MSG_ERR_KILLED "Printer halted. kill() called!" +#define MSG_ERR_STOPPED "Printer stopped due to errors. Fix the error and use M999 to restart. (Temperature is reset. Set it after restarting)" +#define MSG_RESEND "Resend: " +#define MSG_UNKNOWN_COMMAND "Unknown command: \"" +#define MSG_ACTIVE_EXTRUDER "Active Extruder: " +#define MSG_INVALID_EXTRUDER "Invalid extruder" +#define MSG_INVALID_SOLENOID "Invalid solenoid" +#define MSG_X_MIN "x_min: " +#define MSG_X_MAX "x_max: " +#define MSG_Y_MIN "y_min: " +#define MSG_Y_MAX "y_max: " +#define MSG_Z_MIN "z_min: " +#define MSG_Z_MAX "z_max: " +#define MSG_M119_REPORT "Reporting endstop status" +#define MSG_ENDSTOP_HIT "TRIGGERED" +#define MSG_ENDSTOP_OPEN "open" +#define MSG_HOTEND_OFFSET "Hotend offsets:" + +#define MSG_SD_CANT_OPEN_SUBDIR "Cannot open subdir" +#define MSG_SD_INIT_FAIL "SD init fail" +#define MSG_SD_VOL_INIT_FAIL "volume.init failed" +#define MSG_SD_OPENROOT_FAIL "openRoot failed" +#define MSG_SD_CARD_OK "SD card ok" +#define MSG_SD_WORKDIR_FAIL "workDir open failed" +#define MSG_SD_OPEN_FILE_FAIL "open failed, File: " +#define MSG_SD_FILE_OPENED "File opened: " +#define MSG_SD_SIZE " Size: " +#define MSG_SD_FILE_SELECTED "File selected" +#define MSG_SD_WRITE_TO_FILE "Writing to file: " +#define MSG_SD_PRINTING_BYTE "SD printing byte " +#define MSG_SD_NOT_PRINTING "Not SD printing" +#define MSG_SD_ERR_WRITE_TO_FILE "error writing to file" +#define MSG_SD_CANT_ENTER_SUBDIR "Cannot enter subdir: " + +#define MSG_STEPPER_TOO_HIGH "Steprate too high: " +#define MSG_ENDSTOPS_HIT "endstops hit: " +#define MSG_ERR_COLD_EXTRUDE_STOP " cold extrusion prevented" +#define MSG_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented" +#define MSG_BABYSTEPPING_X "Babystepping X" +#define MSG_BABYSTEPPING_Y "Babystepping Y" +#define MSG_BABYSTEPPING_Z "Babystepping Z" +#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure" + +#define MSG_ERR_EEPROM_WRITE "Error writing to EEPROM!" + +// temperature.cpp strings +#define MSG_PID_AUTOTUNE "PID Autotune" +#define MSG_PID_AUTOTUNE_START MSG_PID_AUTOTUNE " start" +#define MSG_PID_AUTOTUNE_FAILED MSG_PID_AUTOTUNE " failed!" +#define MSG_PID_BAD_EXTRUDER_NUM MSG_PID_AUTOTUNE_FAILED " Bad extruder number" +#define MSG_PID_TEMP_TOO_HIGH MSG_PID_AUTOTUNE_FAILED " Temperature too high" +#define MSG_PID_TIMEOUT MSG_PID_AUTOTUNE_FAILED " timeout" +#define MSG_BIAS " bias: " +#define MSG_D " d: " +#define MSG_MIN " min: " +#define MSG_MAX " max: " +#define MSG_KU " Ku: " +#define MSG_TU " Tu: " +#define MSG_CLASSIC_PID " Classic PID " +#define MSG_KP " Kp: " +#define MSG_KI " Ki: " +#define MSG_KD " Kd: " +#define MSG_OK_B "ok B:" +#define MSG_OK_T "ok T:" +#define MSG_AT " @:" +#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from above into Configuration.h" +#define MSG_PID_DEBUG " PID_DEBUG " +#define MSG_PID_DEBUG_INPUT ": Input " +#define MSG_PID_DEBUG_OUTPUT " Output " +#define MSG_PID_DEBUG_PTERM " pTerm " +#define MSG_PID_DEBUG_ITERM " iTerm " +#define MSG_PID_DEBUG_DTERM " dTerm " +#define MSG_HEATING_FAILED "Heating failed" +#define MSG_EXTRUDER_SWITCHED_OFF "Extruder switched off. Temperature difference between temp sensors is too high !" + +#define MSG_INVALID_EXTRUDER_NUM " - Invalid extruder number !" +#define MSG_THERMAL_RUNAWAY_STOP "Thermal Runaway, system stopped! Heater_ID: " +#define MSG_SWITCHED_OFF_MAX " switched off. MAXTEMP triggered !!" +#define MSG_MINTEMP_EXTRUDER_OFF ": Extruder switched off. MINTEMP triggered !" +#define MSG_MAXTEMP_EXTRUDER_OFF ": Extruder" MSG_SWITCHED_OFF_MAX +#define MSG_MAXTEMP_BED_OFF "Heated bed" MSG_SWITCHED_OFF_MAX + +// LCD Menu Messages + +// Add your own character. Reference: https://github.com/MarlinFirmware/Marlin/pull/1434 photos +// and https://www.sparkfun.com/datasheets/LCD/HD44780.pdf page 17-18 +#ifdef DOGLCD + #define STR_Ae "\304" // 'Ä' U8glib + #define STR_ae "\344" // 'ä' + #define STR_Oe "\326" // 'Ö' + #define STR_oe STR_Oe // 'ö' + #define STR_Ue "\334" // 'Ãœ' + #define STR_ue STR_Ue // 'ü' + #define STR_sz "\337" // 'ß' + #define STR_h2 "\262" // '²' + #define STR_h3 "\263" // '³' + #define STR_Deg "\260" // '°' + #define STR_THERMOMETER "\377" +#else + #ifdef DISPLAY_CHARSET_HD44780_JAPAN // HD44780 ROM Code: A00 (Japan) + #define STR_ae "\xe1" + #define STR_Ae STR_ae + #define STR_oe "\357" + #define STR_Oe STR_oe + #define STR_ue "\365" + #define STR_Ue STR_ue + #define STR_sz "\342" + #define STR_h2 "2" + #define STR_h3 "3" + #define STR_Deg "\271" + #define STR_THERMOMETER "\002" + #endif + #ifdef DISPLAY_CHARSET_HD44780_WESTERN // HD44780 ROM Code: A02 (Western) + #define STR_Ae "\216" + #define STR_ae "\204" + #define STR_Oe "\211" + #define STR_oe "\204" + #define STR_Ue "\212" + #define STR_ue "\201" + #define STR_sz "\160" + #define STR_h2 "\262" + #define STR_h3 "\263" + #define STR_Deg "\337" + #define STR_THERMOMETER "\002" + #endif +#endif +/* +#define TESTSTRING000 "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017" +#define TESTSTRING020 "\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define TESTSTRING040 "\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057" +#define TESTSTRING060 "\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077" +#define TESTSTRING100 "\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117" +#define TESTSTRING120 "\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137" +#define TESTSTRING140 "\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157" +#define TESTSTRING160 "\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177" +#define TESTSTRING200 "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217" +#define TESTSTRING220 "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237" +#define TESTSTRING240 "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257" +#define TESTSTRING260 "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277" +#define TESTSTRING300 "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317" +#define TESTSTRING320 "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337" +#define TESTSTRING340 "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357" +#define TESTSTRING360 "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377" +*/ + +#include LANGUAGE_INCLUDE +#include "language_en.h" + +#endif //__LANGUAGE_H diff --git a/Marlin/language_an.h b/Marlin/language_an.h new file mode 100644 index 000000000..e26c7d868 --- /dev/null +++ b/Marlin/language_an.h @@ -0,0 +1,130 @@ +/** + * Aragonese + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_AN_H +#define LANGUAGE_AN_H + +#define WELCOME_MSG MACHINE_NAME " parada." +#define MSG_SD_INSERTED "Tarcheta colocada" +#define MSG_SD_REMOVED "Tarcheta retirada" +#define MSG_MAIN "Menu prencipal" +#define MSG_AUTOSTART " Autostart" +#define MSG_DISABLE_STEPPERS "Amortar motors" +#define MSG_AUTO_HOME "Levar a l'orichen" +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Establir zero" +#define MSG_PREHEAT_PLA "Precalentar PLA" +#define MSG_PREHEAT_PLA_N "Precalentar PLA " +#define MSG_PREHEAT_PLA_ALL "Precalentar PLA a" +#define MSG_PREHEAT_PLA_BEDONLY "Prec. PLA Base" +#define MSG_PREHEAT_PLA_SETTINGS "Achustar tem. PLA" +#define MSG_PREHEAT_ABS "Precalentar ABS" +#define MSG_PREHEAT_ABS_N "Precalentar ABS " +#define MSG_PREHEAT_ABS_ALL "Precalentar ABS a" +#define MSG_PREHEAT_ABS_BEDONLY "Prec. ABS Base" +#define MSG_PREHEAT_ABS_SETTINGS "Achustar tem. ABS" +#define MSG_COOLDOWN "Enfriar" +#define MSG_SWITCH_PS_ON "Enchegar Fuent" +#define MSG_SWITCH_PS_OFF "Desenchegar Fuent" +#define MSG_EXTRUDE "Extruir" +#define MSG_RETRACT "Retraer" +#define MSG_MOVE_AXIS "Mover Eixes" +#define MSG_MOVE_X "Move X" +#define MSG_MOVE_Y "Move Y" +#define MSG_MOVE_Z "Move Z" +#define MSG_MOVE_E "Extruder" +#define MSG_MOVE_01MM "Move 0.1mm" +#define MSG_MOVE_1MM "Move 1mm" +#define MSG_MOVE_10MM "Move 10mm" +#define MSG_SPEED "Velocidat" +#define MSG_NOZZLE "Nozzle" +#define MSG_BED "Base" +#define MSG_FAN_SPEED "Ixoriador" +#define MSG_FLOW "Fluxo" +#define MSG_CONTROL "Control" +#define MSG_MIN "\002 Min" +#define MSG_MAX "\002 Max" +#define MSG_FACTOR "\002 Fact" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "On" +#define MSG_OFF "Off" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Acel" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ves-jerk" +#define MSG_VMAX "Vmax" +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "y" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "Amax" +#define MSG_A_RETRACT "A-retrac." +#define MSG_XSTEPS "X trangos/mm" +#define MSG_YSTEPS "Y trangos/mm" +#define MSG_ZSTEPS "Z trangos/mm" +#define MSG_ESTEPS "E trangos/mm" +#define MSG_TEMPERATURE "Temperatura" +#define MSG_MOTION "Movimiento" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "Contrast" +#define MSG_STORE_EPROM "Alzar Memoria" +#define MSG_LOAD_EPROM "Cargar Memoria" +#define MSG_RESTORE_FAILSAFE "Rest. d'emerchen." +#define MSG_REFRESH "Tornar a cargar" +#define MSG_WATCH "Monitorizar" +#define MSG_PREPARE "Preparar" +#define MSG_TUNE "Achustar" +#define MSG_PAUSE_PRINT "Pausar impresion" +#define MSG_RESUME_PRINT "Contin. impresion" +#define MSG_STOP_PRINT "Detener Impresion" +#define MSG_CARD_MENU "Menu de SD" +#define MSG_NO_CARD "No i hai tarcheta" +#define MSG_DWELL "Reposo..." +#define MSG_USERWAIT "Asperan. ordines" +#define MSG_RESUMING "Contin. impresion" +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Sin movimiento" +#define MSG_KILLED "ATURADA D'EMERCH." +#define MSG_STOPPED "ATURADA." +#define MSG_CONTROL_RETRACT "Retraer mm" +#define MSG_CONTROL_RETRACT_SWAP "Swap Retraer mm" +#define MSG_CONTROL_RETRACTF "Retraer F" +#define MSG_CONTROL_RETRACT_ZLIFT "Devantar mm" +#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Swap DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "DesRet F" +#define MSG_AUTORETRACT "AutoRetr." +#define MSG_FILAMENTCHANGE "Cambear" +#define MSG_INIT_SDCARD "Encetan. tarcheta" +#define MSG_CNG_SDCARD "Cambiar tarcheta" +#define MSG_ZPROBE_OUT "Z probe out. bed" +#define MSG_POSITION_UNKNOWN "Home X/Y before Z" +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop abort" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_AN_H diff --git a/Marlin/language_ca.h b/Marlin/language_ca.h new file mode 100644 index 000000000..e7f837d5d --- /dev/null +++ b/Marlin/language_ca.h @@ -0,0 +1,130 @@ +/** + * Catalan + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_CA_H +#define LANGUAGE_CA_H + +#define WELCOME_MSG MACHINE_NAME " preparada." +#define MSG_SD_INSERTED "SD detectada." +#define MSG_SD_REMOVED "SD expulsada." +#define MSG_MAIN "Menu principal" +#define MSG_AUTOSTART "Inici automatic" +#define MSG_DISABLE_STEPPERS "Apagar motors" +#define MSG_AUTO_HOME "Home global" +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Establir origen" +#define MSG_PREHEAT_PLA "Preescalfar PLA" +#define MSG_PREHEAT_PLA_N "Preescalfar PLA " +#define MSG_PREHEAT_PLA_ALL "Preesc. tot PLA" +#define MSG_PREHEAT_PLA_BEDONLY "Preesc. llit PLA" +#define MSG_PREHEAT_PLA_SETTINGS "Configuració PLA" +#define MSG_PREHEAT_ABS "Preescalfar ABS" +#define MSG_PREHEAT_ABS_N "Preescalfar ABS " +#define MSG_PREHEAT_ABS_ALL "Preesc. tot ABS" +#define MSG_PREHEAT_ABS_BEDONLY "Preesc. llit ABS" +#define MSG_PREHEAT_ABS_SETTINGS "Configuració ABS" +#define MSG_COOLDOWN "Refredar" +#define MSG_SWITCH_PS_ON "Switch power on" +#define MSG_SWITCH_PS_OFF "Switch power off" +#define MSG_EXTRUDE "Extruir" +#define MSG_RETRACT "Refredar" +#define MSG_MOVE_AXIS "Moure eixos" +#define MSG_MOVE_X "Moure X" +#define MSG_MOVE_Y "Moure Y" +#define MSG_MOVE_Z "Moure Z" +#define MSG_MOVE_E "Extrusor" +#define MSG_MOVE_01MM "Moure 0.1mm" +#define MSG_MOVE_1MM "Moure 1mm" +#define MSG_MOVE_10MM "Moure 10mm" +#define MSG_SPEED "Velocitat" +#define MSG_NOZZLE "Nozzle" +#define MSG_BED "Llit" +#define MSG_FAN_SPEED "Vel. Ventilador" +#define MSG_FLOW "Fluxe" +#define MSG_CONTROL "Control" +#define MSG_MIN " \002 Min" +#define MSG_MAX " \002 Max" +#define MSG_FACTOR " \002 Fact" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "On " +#define MSG_OFF "Off" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Accel" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX "Vmax " +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "Amax " +#define MSG_A_RETRACT "A-retract" +#define MSG_XSTEPS "Xpassos/mm" +#define MSG_YSTEPS "Ypassos/mm" +#define MSG_ZSTEPS "Zpassos/mm" +#define MSG_ESTEPS "Epassos/mm" +#define MSG_TEMPERATURE "Temperatura" +#define MSG_MOTION "Moviment" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "Contrast de LCD" +#define MSG_STORE_EPROM "Desar a memoria" +#define MSG_LOAD_EPROM "Carregar de mem." +#define MSG_RESTORE_FAILSAFE "Rest. emergencia" +#define MSG_REFRESH "Refrescar" +#define MSG_WATCH "Pantalla Info." +#define MSG_PREPARE "Preparar" +#define MSG_TUNE "Calibrar" +#define MSG_PAUSE_PRINT "Pausa imp." +#define MSG_RESUME_PRINT "Reprendre imp." +#define MSG_STOP_PRINT "Parar inp." +#define MSG_CARD_MENU "Imprimir de SD" +#define MSG_NO_CARD "-Sense targeta SD" +#define MSG_DWELL "Repos..." +#define MSG_USERWAIT "Esperant usuari.." +#define MSG_RESUMING "Reprenent imp." +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Sense moviment." +#define MSG_KILLED "PARADA DE EMERG. " +#define MSG_STOPPED "ATURAT. " +#define MSG_CONTROL_RETRACT "Retreure mm" +#define MSG_CONTROL_RETRACT_SWAP "Swap Retreure mm" +#define MSG_CONTROL_RETRACTF "Retreure F" +#define MSG_CONTROL_RETRACT_ZLIFT "Aixecar mm" +#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Swap DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "DesRet F" +#define MSG_AUTORETRACT "AutoRetr." +#define MSG_FILAMENTCHANGE "Canviar filament" +#define MSG_INIT_SDCARD "Iniciant SD" +#define MSG_CNG_SDCARD "Canviar SD" +#define MSG_ZPROBE_OUT "Z probe out. bed" +#define MSG_POSITION_UNKNOWN "Home X/Y abans Z" +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop abort" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_CA_H diff --git a/Marlin/language_de.h b/Marlin/language_de.h new file mode 100644 index 000000000..d41df208d --- /dev/null +++ b/Marlin/language_de.h @@ -0,0 +1,129 @@ +/** + * German + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_DE_H +#define LANGUAGE_DE_H + +#define WELCOME_MSG MACHINE_NAME " Bereit." +#define MSG_SD_INSERTED "SDKarte erkannt." +#define MSG_SD_REMOVED "SDKarte entfernt." +#define MSG_MAIN "Hauptmen" STR_ue +#define MSG_AUTOSTART "Autostart" +#define MSG_DISABLE_STEPPERS "Motoren Aus" // M84 +#define MSG_AUTO_HOME "Home" // G28 +#define MSG_SET_HOME_OFFSETS "Setze Home hier" +#define MSG_SET_ORIGIN "Setze Null hier" //"G92 X0 Y0 Z0" commented out in ultralcd.cpp +#define MSG_PREHEAT_PLA "Vorw" STR_ae "rmen PLA" +#define MSG_PREHEAT_PLA_N "Vorw" STR_ae "rmen PLA " +#define MSG_PREHEAT_PLA_ALL "Vorw. PLA Alle" +#define MSG_PREHEAT_PLA_BEDONLY "Vorw. PLA Bett" +#define MSG_PREHEAT_PLA_SETTINGS "Vorw" STR_ae "rm. PLA Ein." +#define MSG_PREHEAT_ABS "Vorw" STR_ae "rmen ABS" +#define MSG_PREHEAT_ABS_N "Vorw" STR_ae "rmen ABS " +#define MSG_PREHEAT_ABS_ALL "Vorw. ABS Alle" +#define MSG_PREHEAT_ABS_BEDONLY "Vorw. ABS Bett" +#define MSG_PREHEAT_ABS_SETTINGS "Vorw" STR_ae "rm. ABS Ein." +#define MSG_COOLDOWN "Abk" STR_ue "hlen" +#define MSG_SWITCH_PS_ON "Netzteil Ein" +#define MSG_SWITCH_PS_OFF "Netzteil Aus" +#define MSG_RETRACT "Retract" +#define MSG_MOVE_AXIS "Bewegen" +#define MSG_MOVE_X "X" +#define MSG_MOVE_Y "Y" +#define MSG_MOVE_Z "Z" +#define MSG_MOVE_E "E" +#define MSG_MOVE_01MM " 0.1 mm" +#define MSG_MOVE_1MM " 1.0 mm" +#define MSG_MOVE_10MM "10.0 mm" +#define MSG_SPEED "Geschw." +#define MSG_NOZZLE "D" STR_ue "se" +#define MSG_BED "Bett" +#define MSG_FAN_SPEED "L" STR_ue "ftergeschw." +#define MSG_FLOW "Fluss" +#define MSG_CONTROL "Einstellungen" +#define MSG_MIN STR_THERMOMETER " Min" +#define MSG_MAX STR_THERMOMETER " Max" +#define MSG_FACTOR STR_THERMOMETER " Faktor" +#define MSG_AUTOTEMP "AutoTemp" +#define MSG_ON "Ein" +#define MSG_OFF "Aus" +#define MSG_PID_P "PID P" +#define MSG_PID_I "PID I" +#define MSG_PID_D "PID D" +#define MSG_PID_C "PID C" +#define MSG_ACC "A" +#define MSG_VXY_JERK "V xy jerk" +#define MSG_VZ_JERK "V z jerk" +#define MSG_VE_JERK "V e jerk" +#define MSG_VMAX "V max " // space by purpose +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "V min" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "A max " // space by purpose +#define MSG_A_RETRACT "A Retract" +#define MSG_XSTEPS "X steps/mm" +#define MSG_YSTEPS "Y steps/mm" +#define MSG_ZSTEPS "Z steps/mm" +#define MSG_ESTEPS "E steps/mm" +#define MSG_TEMPERATURE "Temperatur" +#define MSG_MOTION "Bewegung" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3 +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Filament D 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Filament D 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Filament D 3" +#define MSG_CONTRAST "LCD contrast" +#define MSG_STORE_EPROM "EPROM speichern" +#define MSG_LOAD_EPROM "EPROM laden" +#define MSG_RESTORE_FAILSAFE "Standardkonfig." +#define MSG_REFRESH "Aktualisieren" +#define MSG_WATCH "Info" +#define MSG_PREPARE "Vorbereitung" +#define MSG_TUNE "Justierung" +#define MSG_PAUSE_PRINT "SD-Druck Pause" +#define MSG_RESUME_PRINT "SD-Druck Weiter" +#define MSG_STOP_PRINT "SD-Druck Abbruch" +#define MSG_CARD_MENU "SDKarte" +#define MSG_NO_CARD "Keine SDKarte" +#define MSG_DWELL "Warten..." +#define MSG_USERWAIT "Warte auf Nutzer." +#define MSG_RESUMING "Druck geht weiter" +#define MSG_PRINT_ABORTED "Druck abgebrochen" +#define MSG_NO_MOVE "Motoren Eingesch." +#define MSG_KILLED "KILLED." +#define MSG_STOPPED "ANGEHALTEN." +#define MSG_CONTROL_RETRACT "Retract mm" +#define MSG_CONTROL_RETRACT_SWAP "Wechs. Retract mm" +#define MSG_CONTROL_RETRACTF "Retract V" +#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" +#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Wechs. UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" +#define MSG_AUTORETRACT "AutoRetr." +#define MSG_FILAMENTCHANGE "Filament wechseln" +#define MSG_INIT_SDCARD "SDKarte erkennen"// Manually initialize the SD-card via user interface +#define MSG_CNG_SDCARD "SDKarte erkennen"// SD-card changed by user. For machines with no autocarddetect. Both send "M21" +#define MSG_ZPROBE_OUT "Sensor ausserhalb" +#define MSG_POSITION_UNKNOWN "X/Y vor Z Homen." +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop Abbr. Ein" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Kalibrieren" + #define MSG_DELTA_CALIBRATE_X "Kalibriere X" + #define MSG_DELTA_CALIBRATE_Y "Kalibriere Y" + #define MSG_DELTA_CALIBRATE_Z "Kalibriere Z" + #define MSG_DELTA_CALIBRATE_CENTER "Kalibriere Mitte" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_DE_H diff --git a/Marlin/language_en.h b/Marlin/language_en.h new file mode 100644 index 000000000..1ba950af9 --- /dev/null +++ b/Marlin/language_en.h @@ -0,0 +1,423 @@ +/** + * English + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_EN_H +#define LANGUAGE_EN_H + +#ifndef WELCOME_MSG +#define WELCOME_MSG MACHINE_NAME " ready." +#endif +#ifndef MSG_SD_INSERTED +#define MSG_SD_INSERTED "Card inserted" +#endif +#ifndef MSG_SD_REMOVED +#define MSG_SD_REMOVED "Card removed" +#endif +#ifndef MSG_MAIN +#define MSG_MAIN "Main" +#endif +#ifndef MSG_AUTOSTART +#define MSG_AUTOSTART "Autostart" +#endif +#ifndef MSG_DISABLE_STEPPERS +#define MSG_DISABLE_STEPPERS "Disable steppers" +#endif +#ifndef MSG_AUTO_HOME +#define MSG_AUTO_HOME "Auto home" +#endif +#ifndef MSG_SET_HOME_OFFSETS +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#endif +#ifndef MSG_SET_ORIGIN +#define MSG_SET_ORIGIN "Set origin" +#endif +#ifndef MSG_PREHEAT_PLA +#define MSG_PREHEAT_PLA "Preheat PLA" +#endif +#ifndef MSG_PREHEAT_PLA_N +#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " " +#endif +#ifndef MSG_PREHEAT_PLA_ALL +#define MSG_PREHEAT_PLA_ALL MSG_PREHEAT_PLA " All" +#endif +#ifndef MSG_PREHEAT_PLA_BEDONLY +#define MSG_PREHEAT_PLA_BEDONLY MSG_PREHEAT_PLA " Bed" +#endif +#ifndef MSG_PREHEAT_PLA_SETTINGS +#define MSG_PREHEAT_PLA_SETTINGS MSG_PREHEAT_PLA " conf" +#endif +#ifndef MSG_PREHEAT_ABS +#define MSG_PREHEAT_ABS "Preheat ABS" +#endif +#ifndef MSG_PREHEAT_ABS_N +#define MSG_PREHEAT_ABS_N MSG_PREHEAT_ABS " " +#endif +#ifndef MSG_PREHEAT_ABS_ALL +#define MSG_PREHEAT_ABS_ALL MSG_PREHEAT_ABS " All" +#endif +#ifndef MSG_PREHEAT_ABS_BEDONLY +#define MSG_PREHEAT_ABS_BEDONLY MSG_PREHEAT_ABS " Bed" +#endif +#ifndef MSG_PREHEAT_ABS_SETTINGS +#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS " conf" +#endif +#ifndef MSG_H1 +#define MSG_H1 "1" +#endif +#ifndef MSG_H2 +#define MSG_H2 "2" +#endif +#ifndef MSG_H3 +#define MSG_H3 "3" +#endif +#ifndef MSG_H4 +#define MSG_H4 "4" +#endif +#ifndef MSG_COOLDOWN +#define MSG_COOLDOWN "Cooldown" +#endif +#ifndef MSG_SWITCH_PS_ON +#define MSG_SWITCH_PS_ON "Switch power on" +#endif +#ifndef MSG_SWITCH_PS_OFF +#define MSG_SWITCH_PS_OFF "Switch power off" +#endif +#ifndef MSG_EXTRUDE +#define MSG_EXTRUDE "Extrude" +#endif +#ifndef MSG_RETRACT +#define MSG_RETRACT "Retract" +#endif +#ifndef MSG_MOVE_AXIS +#define MSG_MOVE_AXIS "Move axis" +#endif +#ifndef MSG_MOVE_X +#define MSG_MOVE_X "Move X" +#endif +#ifndef MSG_MOVE_Y +#define MSG_MOVE_Y "Move Y" +#endif +#ifndef MSG_MOVE_Z +#define MSG_MOVE_Z "Move Z" +#endif +#ifndef MSG_MOVE_E +#define MSG_MOVE_E "Extruder" +#endif +#ifndef MSG_MOVE_01MM +#define MSG_MOVE_01MM "Move 0.1mm" +#endif +#ifndef MSG_MOVE_1MM +#define MSG_MOVE_1MM "Move 1mm" +#endif +#ifndef MSG_MOVE_10MM +#define MSG_MOVE_10MM "Move 10mm" +#endif +#ifndef MSG_SPEED +#define MSG_SPEED "Speed" +#endif +#ifndef MSG_NOZZLE +#define MSG_NOZZLE "Nozzle" +#endif +#ifndef MSG_N2 +#define MSG_N2 " 2" +#endif +#ifndef MSG_N3 +#define MSG_N3 " 3" +#endif +#ifndef MSG_N4 +#define MSG_N4 " 4" +#endif +#ifndef MSG_BED +#define MSG_BED "Bed" +#endif +#ifndef MSG_FAN_SPEED +#define MSG_FAN_SPEED "Fan speed" +#endif +#ifndef MSG_FLOW +#define MSG_FLOW "Flow" +#endif +#ifndef MSG_F0 +#define MSG_F0 " 0" +#endif +#ifndef MSG_F1 +#define MSG_F1 " 1" +#endif +#ifndef MSG_F2 +#define MSG_F2 " 2" +#endif +#ifndef MSG_F3 +#define MSG_F3 " 3" +#endif +#ifndef MSG_CONTROL +#define MSG_CONTROL "Control" +#endif +#ifndef MSG_MIN +#define MSG_MIN " " STR_THERMOMETER " Min" +#endif +#ifndef MSG_MAX +#define MSG_MAX " " STR_THERMOMETER " Max" +#endif +#ifndef MSG_FACTOR +#define MSG_FACTOR " " STR_THERMOMETER " Fact" +#endif +#ifndef MSG_AUTOTEMP +#define MSG_AUTOTEMP "Autotemp" +#endif +#ifndef MSG_ON +#define MSG_ON "On " +#endif +#ifndef MSG_OFF +#define MSG_OFF "Off" +#endif +#ifndef MSG_PID_P +#define MSG_PID_P "PID-P" +#endif +#ifndef MSG_PID_I +#define MSG_PID_I "PID-I" +#endif +#ifndef MSG_PID_D +#define MSG_PID_D "PID-D" +#endif +#ifndef MSG_PID_C +#define MSG_PID_C "PID-C" +#endif +#ifndef MSG_E2 +#define MSG_E2 " E2" +#endif +#ifndef MSG_E3 +#define MSG_E3 " E3" +#endif +#ifndef MSG_E4 +#define MSG_E4 " E4" +#endif +#ifndef MSG_ACC +#define MSG_ACC "Accel" +#endif +#ifndef MSG_VXY_JERK +#define MSG_VXY_JERK "Vxy-jerk" +#endif +#ifndef MSG_VZ_JERK +#define MSG_VZ_JERK "Vz-jerk" +#endif +#ifndef MSG_VE_JERK +#define MSG_VE_JERK "Ve-jerk" +#endif +#ifndef MSG_VMAX +#define MSG_VMAX "Vmax " +#endif +#ifndef MSG_X +#define MSG_X "x" +#endif +#ifndef MSG_Y +#define MSG_Y "y" +#endif +#ifndef MSG_Z +#define MSG_Z "z" +#endif +#ifndef MSG_E +#define MSG_E "e" +#endif +#ifndef MSG_VMIN +#define MSG_VMIN "Vmin" +#endif +#ifndef MSG_VTRAV_MIN +#define MSG_VTRAV_MIN "VTrav min" +#endif +#ifndef MSG_AMAX +#define MSG_AMAX "Amax " +#endif +#ifndef MSG_A_RETRACT +#define MSG_A_RETRACT "A-retract" +#endif +#ifndef MSG_XSTEPS +#define MSG_XSTEPS "Xsteps/mm" +#endif +#ifndef MSG_YSTEPS +#define MSG_YSTEPS "Ysteps/mm" +#endif +#ifndef MSG_ZSTEPS +#define MSG_ZSTEPS "Zsteps/mm" +#endif +#ifndef MSG_ESTEPS +#define MSG_ESTEPS "Esteps/mm" +#endif +#ifndef MSG_TEMPERATURE +#define MSG_TEMPERATURE "Temperature" +#endif +#ifndef MSG_MOTION +#define MSG_MOTION "Motion" +#endif +#ifndef MSG_VOLUMETRIC +#define MSG_VOLUMETRIC "Filament" +#endif +#ifndef MSG_VOLUMETRIC_ENABLED +#define MSG_VOLUMETRIC_ENABLED "E in mm" STR_h3 +#endif +#ifndef MSG_FILAMENT_SIZE_EXTRUDER_0 +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#endif +#ifndef MSG_FILAMENT_SIZE_EXTRUDER_1 +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#endif +#ifndef MSG_FILAMENT_SIZE_EXTRUDER_2 +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#endif +#ifndef MSG_FILAMENT_SIZE_EXTRUDER_3 +#define MSG_FILAMENT_SIZE_EXTRUDER_3 "Fil. Dia. 4" +#endif +#ifndef MSG_CONTRAST +#define MSG_CONTRAST "LCD contrast" +#endif +#ifndef MSG_STORE_EPROM +#define MSG_STORE_EPROM "Store memory" +#endif +#ifndef MSG_LOAD_EPROM +#define MSG_LOAD_EPROM "Load memory" +#endif +#ifndef MSG_RESTORE_FAILSAFE +#define MSG_RESTORE_FAILSAFE "Restore failsafe" +#endif +#ifndef MSG_REFRESH +#define MSG_REFRESH "Refresh" +#endif +#ifndef MSG_WATCH +#define MSG_WATCH "Info screen" +#endif +#ifndef MSG_PREPARE +#define MSG_PREPARE "Prepare" +#endif +#ifndef MSG_TUNE +#define MSG_TUNE "Tune" +#endif +#ifndef MSG_PAUSE_PRINT +#define MSG_PAUSE_PRINT "Pause print" +#endif +#ifndef MSG_RESUME_PRINT +#define MSG_RESUME_PRINT "Resume print" +#endif +#ifndef MSG_STOP_PRINT +#define MSG_STOP_PRINT "Stop print" +#endif +#ifndef MSG_CARD_MENU +#define MSG_CARD_MENU "Print from SD" +#endif +#ifndef MSG_NO_CARD +#define MSG_NO_CARD "No SD card" +#endif +#ifndef MSG_DWELL +#define MSG_DWELL "Sleep..." +#endif +#ifndef MSG_USERWAIT +#define MSG_USERWAIT "Wait for user..." +#endif +#ifndef MSG_RESUMING +#define MSG_RESUMING "Resuming print" +#endif +#ifndef MSG_PRINT_ABORTED +#define MSG_PRINT_ABORTED "Print aborted" +#endif +#ifndef MSG_NO_MOVE +#define MSG_NO_MOVE "No move." +#endif +#ifndef MSG_KILLED +#define MSG_KILLED "KILLED. " +#endif +#ifndef MSG_STOPPED +#define MSG_STOPPED "STOPPED. " +#endif +#ifndef MSG_CONTROL_RETRACT +#define MSG_CONTROL_RETRACT "Retract mm" +#endif +#ifndef MSG_CONTROL_RETRACT_SWAP +#define MSG_CONTROL_RETRACT_SWAP "Swap Re.mm" +#endif +#ifndef MSG_CONTROL_RETRACTF +#define MSG_CONTROL_RETRACTF "Retract V" +#endif +#ifndef MSG_CONTROL_RETRACT_ZLIFT +#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" +#endif +#ifndef MSG_CONTROL_RETRACT_RECOVER +#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" +#endif +#ifndef MSG_CONTROL_RETRACT_RECOVER_SWAP +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "S UnRet+mm" +#endif +#ifndef MSG_CONTROL_RETRACT_RECOVERF +#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" +#endif +#ifndef MSG_AUTORETRACT +#define MSG_AUTORETRACT "AutoRetr." +#endif +#ifndef MSG_FILAMENTCHANGE +#define MSG_FILAMENTCHANGE "Change filament" +#endif +#ifndef MSG_INIT_SDCARD +#define MSG_INIT_SDCARD "Init. SD card" +#endif +#ifndef MSG_CNG_SDCARD +#define MSG_CNG_SDCARD "Change SD card" +#endif +#ifndef MSG_ZPROBE_OUT +#define MSG_ZPROBE_OUT "Z probe out. bed" +#endif +#ifndef MSG_POSITION_UNKNOWN +#define MSG_POSITION_UNKNOWN "Home X/Y before Z" +#endif +#ifndef MSG_ZPROBE_ZOFFSET +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#endif +#ifndef MSG_BABYSTEP_X +#define MSG_BABYSTEP_X "Babystep X" +#endif +#ifndef MSG_BABYSTEP_Y +#define MSG_BABYSTEP_Y "Babystep Y" +#endif +#ifndef MSG_BABYSTEP_Z +#define MSG_BABYSTEP_Z "Babystep Z" +#endif +#ifndef MSG_ENDSTOP_ABORT +#define MSG_ENDSTOP_ABORT "Endstop abort" +#endif +#ifndef MSG_HEATING_FAILED_LCD +#define MSG_HEATING_FAILED_LCD "Heating failed" +#endif +#ifndef MSG_ERR_REDUNDANT_TEMP +#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP ERROR" +#endif +#ifndef MSG_THERMAL_RUNAWAY +#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY" +#endif +#ifndef MSG_ERR_MAXTEMP +#define MSG_ERR_MAXTEMP "Err: MAXTEMP" +#endif +#ifndef MSG_ERR_MINTEMP +#define MSG_ERR_MINTEMP "Err: MINTEMP" +#endif +#ifndef MSG_ERR_MAXTEMP_BED +#define MSG_ERR_MAXTEMP_BED "Err: MAXTEMP BED" +#endif + +#ifdef DELTA_CALIBRATION_MENU + #ifndef MSG_DELTA_CALIBRATE + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #endif + #ifndef MSG_DELTA_CALIBRATE_X + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #endif + #ifndef MSG_DELTA_CALIBRATE_Y + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #endif + #ifndef MSG_DELTA_CALIBRATE_Z + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #endif + #ifndef MSG_DELTA_CALIBRATE_CENTER + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" + #endif +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_EN_H diff --git a/Marlin/language_es.h b/Marlin/language_es.h new file mode 100644 index 000000000..2d7b785bd --- /dev/null +++ b/Marlin/language_es.h @@ -0,0 +1,130 @@ +/** + * Spanish + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_ES_H +#define LANGUAGE_ES_H + +#define WELCOME_MSG MACHINE_NAME " lista." +#define MSG_SD_INSERTED "Tarjeta colocada" +#define MSG_SD_REMOVED "Tarjeta retirada" +#define MSG_MAIN "Menu principal" +#define MSG_AUTOSTART " Autostart" +#define MSG_DISABLE_STEPPERS "Apagar motores" +#define MSG_AUTO_HOME "Llevar al origen" +#define MSG_SET_HOME_OFFSETS "Ajustar offsets" +#define MSG_SET_ORIGIN "Establecer cero" +#define MSG_PREHEAT_PLA "Precalentar PLA" +#define MSG_PREHEAT_PLA_N "Precalentar PLA " +#define MSG_PREHEAT_PLA_ALL "Precal. PLA Todo" +#define MSG_PREHEAT_PLA_BEDONLY "Precal. PLA Base" +#define MSG_PREHEAT_PLA_SETTINGS "Ajustar temp. PLA" +#define MSG_PREHEAT_ABS "Precalentar ABS" +#define MSG_PREHEAT_ABS_N "Precalentar ABS " +#define MSG_PREHEAT_ABS_ALL "Precal. ABS Todo" +#define MSG_PREHEAT_ABS_BEDONLY "Precal. ABS Base" +#define MSG_PREHEAT_ABS_SETTINGS "Ajustar temp. ABS" +#define MSG_COOLDOWN "Enfriar" +#define MSG_SWITCH_PS_ON "Encender" +#define MSG_SWITCH_PS_OFF "Apagar" +#define MSG_EXTRUDE "Extruir" +#define MSG_RETRACT "Retraer" +#define MSG_MOVE_AXIS "Mover ejes" +#define MSG_MOVE_X "Mover X" +#define MSG_MOVE_Y "Mover Y" +#define MSG_MOVE_Z "Mover Z" +#define MSG_MOVE_E "Extrusor" +#define MSG_MOVE_01MM "Mover 0.1mm" +#define MSG_MOVE_1MM "Mover 1mm" +#define MSG_MOVE_10MM "Mover 10mm" +#define MSG_SPEED "Velocidad" +#define MSG_NOZZLE "Nozzle" +#define MSG_BED "Base" +#define MSG_FAN_SPEED "Ventilador" +#define MSG_FLOW "Flujo" +#define MSG_CONTROL "Control" +#define MSG_MIN "\002 Min" +#define MSG_MAX "\002 Max" +#define MSG_FACTOR "\002 Fact" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "On" +#define MSG_OFF "Off" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Acel" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX "Vmax" +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "Vvacio min" +#define MSG_AMAX "Amax" +#define MSG_A_RETRACT "A-retrac." +#define MSG_XSTEPS "X pasos/mm" +#define MSG_YSTEPS "Y pasos/mm" +#define MSG_ZSTEPS "Z pasos/mm" +#define MSG_ESTEPS "E pasos/mm" +#define MSG_TEMPERATURE "Temperatura" +#define MSG_MOTION "Movimiento" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "Contraste" +#define MSG_STORE_EPROM "Guardar memoria" +#define MSG_LOAD_EPROM "Cargar memoria" +#define MSG_RESTORE_FAILSAFE "Rest. de emergen." +#define MSG_REFRESH "Volver a cargar" +#define MSG_WATCH "Monitorizar" +#define MSG_PREPARE "Preparar" +#define MSG_TUNE "Ajustar" +#define MSG_PAUSE_PRINT "Pausar impresion" +#define MSG_RESUME_PRINT "Reanudar impres." +#define MSG_STOP_PRINT "Detener impresion" +#define MSG_CARD_MENU "Menu de SD" +#define MSG_NO_CARD "No hay tarjeta SD" +#define MSG_DWELL "Reposo..." +#define MSG_USERWAIT "Esperando ordenes" +#define MSG_RESUMING "Resumiendo impre." +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Sin movimiento" +#define MSG_KILLED "PARADA DE EMERG." +#define MSG_STOPPED "PARADA" +#define MSG_CONTROL_RETRACT "Retraer mm" +#define MSG_CONTROL_RETRACT_SWAP "Interc. Retraer mm" +#define MSG_CONTROL_RETRACTF "Retraer V" +#define MSG_CONTROL_RETRACT_ZLIFT "Levantar mm" +#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Interc. DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "DesRet V" +#define MSG_AUTORETRACT "AutoRetr." +#define MSG_FILAMENTCHANGE "Cambiar filamento" +#define MSG_INIT_SDCARD "Iniciando tarjeta" +#define MSG_CNG_SDCARD "Cambiar tarjeta" +#define MSG_ZPROBE_OUT "sonda Z fuera" +#define MSG_POSITION_UNKNOWN "Reiniciar X/Y y Z" +#define MSG_ZPROBE_ZOFFSET "Offset Z" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop abort" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_ES_H diff --git a/Marlin/language_eu.h b/Marlin/language_eu.h new file mode 100644 index 000000000..0f615d5a3 --- /dev/null +++ b/Marlin/language_eu.h @@ -0,0 +1,130 @@ +/** + * Basque-Euskera + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_EU_H +#define LANGUAGE_EU_H + +#define WELCOME_MSG MACHINE_NAME " prest." +#define MSG_SD_INSERTED "Txartela sartuta" +#define MSG_SD_REMOVED "Txartela kenduta" +#define MSG_MAIN "Menu nagusia" +#define MSG_AUTOSTART "Auto hasiera" +#define MSG_DISABLE_STEPPERS "Itzali motoreak" +#define MSG_AUTO_HOME "Hasierara joan" +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Hasiera ipini" +#define MSG_PREHEAT_PLA "Aurreberotu PLA" +#define MSG_PREHEAT_PLA_N "Aurreberotu PLA " +#define MSG_PREHEAT_PLA_ALL "Berotu PLA Guztia" +#define MSG_PREHEAT_PLA_BEDONLY "Berotu PLA Ohea" +#define MSG_PREHEAT_PLA_SETTINGS "Berotu PLA Konfig" +#define MSG_PREHEAT_ABS "Aurreberotu ABS" +#define MSG_PREHEAT_ABS_N "Aurreberotu ABS " +#define MSG_PREHEAT_ABS_ALL "Berotu ABS Guztia" +#define MSG_PREHEAT_ABS_BEDONLY "Berotu ABS Ohea" +#define MSG_PREHEAT_ABS_SETTINGS "Berotu ABS Konfig" +#define MSG_COOLDOWN "Hoztu" +#define MSG_SWITCH_PS_ON "Energia piztu" +#define MSG_SWITCH_PS_OFF "Energia itzali" +#define MSG_EXTRUDE "Estruitu" +#define MSG_RETRACT "Atzera eragin" +#define MSG_MOVE_AXIS "Ardatzak mugitu" +#define MSG_MOVE_X "Mugitu X" +#define MSG_MOVE_Y "Mugitu Y" +#define MSG_MOVE_Z "Mugitu Z" +#define MSG_MOVE_E "Estrusorea" +#define MSG_MOVE_01MM "Mugitu 0.1mm" +#define MSG_MOVE_1MM "Mugitu 1mm" +#define MSG_MOVE_10MM "Mugitu 10mm" +#define MSG_SPEED "Abiadura" +#define MSG_NOZZLE "Pita" +#define MSG_BED "Ohea" +#define MSG_FAN_SPEED "Haizagailua" +#define MSG_FLOW "Fluxua" +#define MSG_CONTROL "Kontrola" +#define MSG_MIN " \002 Min" +#define MSG_MAX " \002 Max" +#define MSG_FACTOR " \002 Faktorea" +#define MSG_AUTOTEMP "Auto tenperatura" +#define MSG_ON "On " +#define MSG_OFF "Off" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Azelerazioa" +#define MSG_VXY_JERK "Vxy-astindua" +#define MSG_VZ_JERK "Vz-astindua" +#define MSG_VE_JERK "Ve-astindua" +#define MSG_VMAX "Vmax " +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "Amax " +#define MSG_A_RETRACT "A-retrakt" +#define MSG_XSTEPS "X pausoak/mm" +#define MSG_YSTEPS "Y pausoak/mm" +#define MSG_ZSTEPS "Z pausoak/mm" +#define MSG_ESTEPS "E pausoak/mm" +#define MSG_TEMPERATURE "Tenperatura" +#define MSG_MOTION "Mugimendua" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "LCD kontrastea" +#define MSG_STORE_EPROM "Gorde memoria" +#define MSG_LOAD_EPROM "Kargatu memoria" +#define MSG_RESTORE_FAILSAFE "Larri. berriz." +#define MSG_REFRESH "Berriz kargatu" +#define MSG_WATCH "Pantaila info" +#define MSG_PREPARE "Prestatu" +#define MSG_TUNE "Doitu" +#define MSG_PAUSE_PRINT "Pausatu inprimak." +#define MSG_RESUME_PRINT "Jarraitu inprima." +#define MSG_STOP_PRINT "Gelditu inprima." +#define MSG_CARD_MENU "SD-tik inprimatu" +#define MSG_NO_CARD "Ez dago txartelik" +#define MSG_DWELL "Lo egin..." +#define MSG_USERWAIT "Aginduak zain..." +#define MSG_RESUMING "Jarraitzen inpri." +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Mugimendu gabe" +#define MSG_KILLED "LARRIALDI GELDIA" +#define MSG_STOPPED "GELDITUTA. " +#define MSG_CONTROL_RETRACT "Atzera egin mm" +#define MSG_CONTROL_RETRACT_SWAP "Swap Atzera egin mm" +#define MSG_CONTROL_RETRACTF "Atzera egin V" +#define MSG_CONTROL_RETRACT_ZLIFT "Igo mm" +#define MSG_CONTROL_RETRACT_RECOVER "Atzera egin +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Swap Atzera egin +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "Atzera egin V" +#define MSG_AUTORETRACT "Atzera egin" +#define MSG_FILAMENTCHANGE "Aldatu filament." +#define MSG_INIT_SDCARD "Hasieratu txartela" +#define MSG_CNG_SDCARD "Aldatu txartela" +#define MSG_ZPROBE_OUT "Z ohe hasiera" +#define MSG_POSITION_UNKNOWN "Posizio ezezaguna" +#define MSG_ZPROBE_ZOFFSET "Z konpentsatu" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop deuseztat" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_EU_H diff --git a/Marlin/language_fi.h b/Marlin/language_fi.h new file mode 100644 index 000000000..62fdc7638 --- /dev/null +++ b/Marlin/language_fi.h @@ -0,0 +1,130 @@ +/** + * Finnish + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_FI_H +#define LANGUAGE_FI_H + +#define WELCOME_MSG MACHINE_NAME " valmis." +#define MSG_SD_INSERTED "Kortti asetettu" +#define MSG_SD_REMOVED "Kortti poistettu" +#define MSG_MAIN "Palaa" +#define MSG_AUTOSTART "Automaatti" +#define MSG_DISABLE_STEPPERS "Vapauta moottorit" +#define MSG_AUTO_HOME "Aja referenssiin" +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Aseta origo" +#define MSG_PREHEAT_PLA "Esil" STR_ae "mmit" STR_ae " PLA" +#define MSG_PREHEAT_PLA_N "Esil" STR_ae "mmit" STR_ae " PLA " +#define MSG_PREHEAT_PLA_ALL "Esil" STR_ae ". PLA Kaikki" +#define MSG_PREHEAT_PLA_BEDONLY "Esil" STR_ae ". PLA Alusta" +#define MSG_PREHEAT_PLA_SETTINGS "Esil" STR_ae "mm. PLA konf" +#define MSG_PREHEAT_ABS "Esil" STR_ae "mmit" STR_ae " ABS" +#define MSG_PREHEAT_ABS_N "Esil" STR_ae "mmit" STR_ae " ABS " +#define MSG_PREHEAT_ABS_ALL "Esil" STR_ae ". ABS Kaikki" +#define MSG_PREHEAT_ABS_BEDONLY "Esil" STR_ae ". ABS Alusta" +#define MSG_PREHEAT_ABS_SETTINGS "Esil" STR_ae "mm. ABS konf" +#define MSG_COOLDOWN "J" STR_ae "" STR_ae "hdyt" STR_ae "" +#define MSG_SWITCH_PS_ON "Virta p" STR_ae "" STR_ae "lle" +#define MSG_SWITCH_PS_OFF "Virta pois" +#define MSG_EXTRUDE "Pursota" +#define MSG_RETRACT "Ved" STR_ae " takaisin" +#define MSG_MOVE_AXIS "Liikuta akseleita" +#define MSG_MOVE_X "Liikuta X" +#define MSG_MOVE_Y "Liikuta Y" +#define MSG_MOVE_Z "Liikuta Z" +#define MSG_MOVE_E "Extruder" +#define MSG_MOVE_01MM "Liikuta 0.1mm" +#define MSG_MOVE_1MM "Liikuta 1mm" +#define MSG_MOVE_10MM "Liikuta 10mm" +#define MSG_SPEED "Nopeus" +#define MSG_NOZZLE "Suutin" +#define MSG_BED "Alusta" +#define MSG_FAN_SPEED "Tuul. nopeus" +#define MSG_FLOW "Virtaus" +#define MSG_CONTROL "Kontrolli" +#define MSG_MIN STR_THERMOMETER " Min" +#define MSG_MAX STR_THERMOMETER " Max" +#define MSG_FACTOR STR_THERMOMETER " Kerr" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "On " +#define MSG_OFF "Off" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Kiihtyv" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX "Vmax " +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VLiike min" +#define MSG_AMAX "Amax " +#define MSG_A_RETRACT "A-peruuta" +#define MSG_XSTEPS "Xsteps/mm" +#define MSG_YSTEPS "Ysteps/mm" +#define MSG_ZSTEPS "Zsteps/mm" +#define MSG_ESTEPS "Esteps/mm" +#define MSG_TEMPERATURE "L" STR_ae "mp" STR_oe "tila" +#define MSG_MOTION "Liike" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "LCD kontrasti" +#define MSG_STORE_EPROM "Tallenna muistiin" +#define MSG_LOAD_EPROM "Lataa muistista" +#define MSG_RESTORE_FAILSAFE "Palauta oletus" +#define MSG_REFRESH "P" STR_ae "ivit" STR_ae "" +#define MSG_WATCH "Seuraa" +#define MSG_PREPARE "Valmistele" +#define MSG_TUNE "S" STR_ae "" STR_ae "d" STR_ae "" +#define MSG_PAUSE_PRINT "Keskeyt" STR_ae " tulostus" +#define MSG_RESUME_PRINT "Jatka tulostusta" +#define MSG_STOP_PRINT "Pys" STR_ae "yt" STR_ae " tulostus" +#define MSG_CARD_MENU "Korttivalikko" +#define MSG_NO_CARD "Ei korttia" +#define MSG_DWELL "Nukkumassa..." +#define MSG_USERWAIT "Odotet. valintaa" +#define MSG_RESUMING "Jatke. tulostusta" +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Ei liiketta." +#define MSG_KILLED "KILLED. " +#define MSG_STOPPED "STOPPED. " +#define MSG_CONTROL_RETRACT "Ved" STR_ae " mm" +#define MSG_CONTROL_RETRACT_SWAP "Va. Ved" STR_ae " mm" +#define MSG_CONTROL_RETRACTF "Ved" STR_ae " V" +#define MSG_CONTROL_RETRACT_ZLIFT "Z mm" +#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Va. UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" +#define MSG_AUTORETRACT "AutoVeto." +#define MSG_FILAMENTCHANGE "Change filament" +#define MSG_INIT_SDCARD "Init. SD-Card" +#define MSG_CNG_SDCARD "Change SD-Card" +#define MSG_ZPROBE_OUT "Z probe out. bed" +#define MSG_POSITION_UNKNOWN "Home X/Y before Z" +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop abort" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Kalibrointi" + #define MSG_DELTA_CALIBRATE_X "Kalibroi X" + #define MSG_DELTA_CALIBRATE_Y "Kalibroi Y" + #define MSG_DELTA_CALIBRATE_Z "Kalibroi Z" + #define MSG_DELTA_CALIBRATE_CENTER "Kalibroi Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_FI_H \ No newline at end of file diff --git a/Marlin/language_fr.h b/Marlin/language_fr.h new file mode 100644 index 000000000..8019f96a5 --- /dev/null +++ b/Marlin/language_fr.h @@ -0,0 +1,130 @@ +/** + * French + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_FR_H +#define LANGUAGE_FR_H + +#define WELCOME_MSG MACHINE_NAME " prete." +#define MSG_SD_INSERTED "Carte inseree" +#define MSG_SD_REMOVED "Carte retiree" +#define MSG_MAIN "Menu principal" +#define MSG_AUTOSTART "Demarrage auto" +#define MSG_DISABLE_STEPPERS "Arreter moteurs" +#define MSG_AUTO_HOME "Home auto." +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Regler origine" +#define MSG_PREHEAT_PLA "Prechauffage PLA" +#define MSG_PREHEAT_PLA_N "Prechauff. PLA " +#define MSG_PREHEAT_PLA_ALL "Prech. PLA Tout" +#define MSG_PREHEAT_PLA_BEDONLY "Prech. PLA Plateau" +#define MSG_PREHEAT_PLA_SETTINGS "Regl. prech. PLA" +#define MSG_PREHEAT_ABS "Prechauffage ABS" +#define MSG_PREHEAT_ABS_N "Prechauff. ABS " +#define MSG_PREHEAT_ABS_ALL "Prech. ABS Tout" +#define MSG_PREHEAT_ABS_BEDONLY "Prech. ABS Plateau" +#define MSG_PREHEAT_ABS_SETTINGS "Regl. prech. ABS" +#define MSG_COOLDOWN "Refroidir" +#define MSG_SWITCH_PS_ON "Allumer alim." +#define MSG_SWITCH_PS_OFF "Eteindre alim." +#define MSG_EXTRUDE "Extrusion" +#define MSG_RETRACT "Retraction" +#define MSG_MOVE_AXIS "Deplacer un axe" +#define MSG_MOVE_X "Move X" +#define MSG_MOVE_Y "Move Y" +#define MSG_MOVE_Z "Move Z" +#define MSG_MOVE_E "Extruder" +#define MSG_MOVE_01MM "Move 0.1mm" +#define MSG_MOVE_1MM "Move 1mm" +#define MSG_MOVE_10MM "Move 10mm" +#define MSG_SPEED " Vitesse" +#define MSG_NOZZLE "Buse" +#define MSG_BED "Plateau" +#define MSG_FAN_SPEED "Vite. ventilateur" +#define MSG_FLOW "Flux" +#define MSG_CONTROL "Controler" +#define MSG_MIN " \002 Min" +#define MSG_MAX " \002 Max" +#define MSG_FACTOR " \002 Facteur" +#define MSG_AUTOTEMP "Temp. Auto." +#define MSG_ON "Marche " +#define MSG_OFF "Arret" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Accel" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX "Vmax" +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "Vdepl min" +#define MSG_AMAX "Amax " +#define MSG_A_RETRACT "A-retract" +#define MSG_XSTEPS "Xpas/mm" +#define MSG_YSTEPS "Ypas/mm" +#define MSG_ZSTEPS "Zpas/mm" +#define MSG_ESTEPS "Epas/mm" +#define MSG_TEMPERATURE "Temperature" +#define MSG_MOTION "Mouvement" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "Contraste LCD" +#define MSG_STORE_EPROM "Sauver config" +#define MSG_LOAD_EPROM "Lire config" +#define MSG_RESTORE_FAILSAFE "Restaurer defauts" +#define MSG_REFRESH "Actualiser" +#define MSG_WATCH "Surveiller" +#define MSG_PREPARE "Preparer" +#define MSG_TUNE "Regler" +#define MSG_PAUSE_PRINT "Interrompre impr." +#define MSG_RESUME_PRINT "Reprendre impr." +#define MSG_STOP_PRINT "Arreter impr." +#define MSG_CARD_MENU "Impr. depuis SD" +#define MSG_NO_CARD "Pas de carte" +#define MSG_DWELL "Repos..." +#define MSG_USERWAIT "Atten. de l'util." +#define MSG_RESUMING "Repri. de l'impr." +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Aucun mouvement." +#define MSG_KILLED "MORT." +#define MSG_STOPPED "STOPPE." +#define MSG_CONTROL_RETRACT "Retraction mm" +#define MSG_CONTROL_RETRACT_SWAP "Ech. Retr. mm" +#define MSG_CONTROL_RETRACTF "Retraction V" +#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" +#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Ech. UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" +#define MSG_AUTORETRACT "Retract. Auto." +#define MSG_FILAMENTCHANGE "Changer filament" +#define MSG_INIT_SDCARD "Init. la carte SD" +#define MSG_CNG_SDCARD "Changer de carte" +#define MSG_ZPROBE_OUT "Z sonde exte. lit" +#define MSG_POSITION_UNKNOWN "Rev. dans XY av.Z" +#define MSG_ZPROBE_ZOFFSET "Offset Z" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Butee abandon" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_FR_H diff --git a/Marlin/language_it.h b/Marlin/language_it.h new file mode 100644 index 000000000..b0b644231 --- /dev/null +++ b/Marlin/language_it.h @@ -0,0 +1,131 @@ +/** + * Italian + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_IT_H +#define LANGUAGE_IT_H + +#define WELCOME_MSG MACHINE_NAME " pronto." +#define MSG_SD_INSERTED "SD Card inserita" +#define MSG_SD_REMOVED "SD Card rimossa" +#define MSG_MAIN "Menu principale" +#define MSG_AUTOSTART "Autostart" +#define MSG_DISABLE_STEPPERS "Disabilita Motori" +#define MSG_AUTO_HOME "Auto Home" +#define MSG_SET_HOME_OFFSETS "Setta offset home" +#define MSG_SET_ORIGIN "Imposta Origine" +#define MSG_PREHEAT_PLA "Preriscalda PLA" +#define MSG_PREHEAT_PLA_N "Preriscalda PLA " +#define MSG_PREHEAT_PLA_ALL "Prer. PLA Tutto" +#define MSG_PREHEAT_PLA_BEDONLY "Prer. PLA Piatto" +#define MSG_PREHEAT_PLA_SETTINGS "Config. prer. PLA" +#define MSG_PREHEAT_ABS "Preriscalda ABS" +#define MSG_PREHEAT_ABS_N "Preriscalda ABS " +#define MSG_PREHEAT_ABS_ALL "Prer. ABS Tutto" +#define MSG_PREHEAT_ABS_BEDONLY "Prer. ABS Piatto" +#define MSG_PREHEAT_ABS_SETTINGS "Config. prer. ABS" +#define MSG_COOLDOWN "Raffredda" +#define MSG_SWITCH_PS_ON "Accendi aliment." +#define MSG_SWITCH_PS_OFF "Spegni aliment." +#define MSG_EXTRUDE "Estrudi" +#define MSG_RETRACT "Ritrai" +#define MSG_MOVE_AXIS "Muovi Asse" +#define MSG_MOVE_X "Muovi X" +#define MSG_MOVE_Y "Muovi Y" +#define MSG_MOVE_Z "Muovi Z" +#define MSG_MOVE_E "Estrusore" +#define MSG_MOVE_01MM "Muovi di 0.1mm" +#define MSG_MOVE_1MM "Muovi di 1mm" +#define MSG_MOVE_10MM "Muovi di 10mm" +#define MSG_SPEED "Velcità" +#define MSG_NOZZLE "Ugello" +#define MSG_BED "Piatto" +#define MSG_FAN_SPEED "Ventola" +#define MSG_FLOW "Flusso" +#define MSG_CONTROL "Controllo" +#define MSG_MIN " \002 Min" +#define MSG_MAX " \002 Max" +#define MSG_FACTOR " \002 Fact" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "ON " +#define MSG_OFF "OFF" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Accel." +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX "Vmax" +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "Amax" +#define MSG_A_RETRACT "A-retract" +#define MSG_XSTEPS "Xpassi/mm" +#define MSG_YSTEPS "Ypassi/mm" +#define MSG_ZSTEPS "Zpassi/mm" +#define MSG_ESTEPS "Epassi/mm" +#define MSG_TEMPERATURE "Temperatura" +#define MSG_MOTION "Movimento" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm³" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Diam. filo 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Diam. filo 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Diam. filo 3" +#define MSG_FILAMENT_SIZE_EXTRUDER_3 "Diam. filo 4" +#define MSG_CONTRAST "Contrasto LCD" +#define MSG_STORE_EPROM "Salva in EEPROM" +#define MSG_LOAD_EPROM "Carica da EEPROM" +#define MSG_RESTORE_FAILSAFE "Impostaz. default" +#define MSG_REFRESH "Aggiorna" +#define MSG_WATCH "Guarda" +#define MSG_PREPARE "Prepara" +#define MSG_TUNE "Adatta" +#define MSG_PAUSE_PRINT "Pausa" +#define MSG_RESUME_PRINT "Riprendi stampa" +#define MSG_STOP_PRINT "Arresta stampa" +#define MSG_CARD_MENU "SD Card Menu" +#define MSG_NO_CARD "No SD Card" +#define MSG_DWELL "Sospensione..." +#define MSG_USERWAIT "Attendi Utente..." +#define MSG_RESUMING "Riprendi Stampa" +#define MSG_PRINT_ABORTED "Stampa abortita" +#define MSG_NO_MOVE "Nessun Movimento" +#define MSG_KILLED "UCCISO " +#define MSG_STOPPED "ARRESTATO " +#define MSG_CONTROL_RETRACT "Ritrai mm" +#define MSG_CONTROL_RETRACT_SWAP "Scamb. Ritrai mm" +#define MSG_CONTROL_RETRACTF "Ritrai V" +#define MSG_CONTROL_RETRACT_ZLIFT "Salta mm" +#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Scamb. UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V" +#define MSG_AUTORETRACT "AutoArretramento" +#define MSG_FILAMENTCHANGE "Cambia filamento" +#define MSG_INIT_SDCARD "Iniz. SD-Card" +#define MSG_CNG_SDCARD "Cambia SD-Card" +#define MSG_ZPROBE_OUT "Z probe out. bed" +#define MSG_POSITION_UNKNOWN "Home X/Y before Z" +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Finecorsa abort" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Calibraz. Delta" + #define MSG_DELTA_CALIBRATE_X "Calibra X" + #define MSG_DELTA_CALIBRATE_Y "Calibra Y" + #define MSG_DELTA_CALIBRATE_Z "Calibra Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibra Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_IT_H diff --git a/Marlin/language_nl.h b/Marlin/language_nl.h new file mode 100644 index 000000000..7de2f9a8e --- /dev/null +++ b/Marlin/language_nl.h @@ -0,0 +1,130 @@ +/** + * Dutch + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_NL_H +#define LANGUAGE_NL_H + +#define WELCOME_MSG MACHINE_NAME " gereed." +#define MSG_SD_INSERTED "Kaart ingestoken" +#define MSG_SD_REMOVED "Kaart verwijderd" +#define MSG_MAIN "Main" +#define MSG_AUTOSTART "Autostart" +#define MSG_DISABLE_STEPPERS "Motoren uit" +#define MSG_AUTO_HOME "Auto home" +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Nulpunt instellen" +#define MSG_PREHEAT_PLA "PLA voorverwarmen" +#define MSG_PREHEAT_PLA_N "PLA voorverw. " +#define MSG_PREHEAT_PLA_ALL "PLA voorverw. aan" +#define MSG_PREHEAT_PLA_BEDONLY "PLA voorverw. Bed" +#define MSG_PREHEAT_PLA_SETTINGS "PLA verw. conf" +#define MSG_PREHEAT_ABS "ABS voorverwarmen" +#define MSG_PREHEAT_ABS_N "ABS voorverw. " +#define MSG_PREHEAT_ABS_ALL "ABS voorverw. aan" +#define MSG_PREHEAT_ABS_BEDONLY "ABS voorverw. Bed" +#define MSG_PREHEAT_ABS_SETTINGS "ABS verw. conf" +#define MSG_COOLDOWN "Afkoelen" +#define MSG_SWITCH_PS_ON "Stroom aan" +#define MSG_SWITCH_PS_OFF "Stroom uit" +#define MSG_EXTRUDE "Extrude" +#define MSG_RETRACT "Retract" +#define MSG_MOVE_AXIS "As verplaatsen" +#define MSG_MOVE_X "Verplaats X" +#define MSG_MOVE_Y "Verplaats Y" +#define MSG_MOVE_Z "Verplaats Z" +#define MSG_MOVE_E "Extruder" +#define MSG_MOVE_01MM "Verplaats 0.1mm" +#define MSG_MOVE_1MM "Verplaats 1mm" +#define MSG_MOVE_10MM "Verplaats 10mm" +#define MSG_SPEED "Snelheid" +#define MSG_NOZZLE "Nozzle" +#define MSG_BED "Bed" +#define MSG_FAN_SPEED "Fan snelheid" +#define MSG_FLOW "Flow" +#define MSG_CONTROL "Control" +#define MSG_MIN " \002 Min" +#define MSG_MAX " \002 Max" +#define MSG_FACTOR " \002 Fact" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "Aan " +#define MSG_OFF "Uit" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Versn" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX "Vmax " +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "Amax " +#define MSG_A_RETRACT "A-retract" +#define MSG_XSTEPS "Xsteps/mm" +#define MSG_YSTEPS "Ysteps/mm" +#define MSG_ZSTEPS "Zsteps/mm" +#define MSG_ESTEPS "Esteps/mm" +#define MSG_TEMPERATURE "Temperatuur" +#define MSG_MOTION "Beweging" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "LCD contrast" +#define MSG_STORE_EPROM "Geheugen opslaan" +#define MSG_LOAD_EPROM "Geheugen laden" +#define MSG_RESTORE_FAILSAFE "Noodstop reset" +#define MSG_REFRESH "Ververs" +#define MSG_WATCH "Info scherm" +#define MSG_PREPARE "Voorbereiden" +#define MSG_TUNE "Afstellen" +#define MSG_PAUSE_PRINT "Print pauzeren" +#define MSG_RESUME_PRINT "Print hervatten" +#define MSG_STOP_PRINT "Print stoppen" +#define MSG_CARD_MENU "Print van SD" +#define MSG_NO_CARD "Geen SD kaart" +#define MSG_DWELL "Slapen..." +#define MSG_USERWAIT "Wachten..." +#define MSG_RESUMING "Print hervatten" +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Geen beweging." +#define MSG_KILLED "AFGEBROKEN. " +#define MSG_STOPPED "GESTOPT. " +#define MSG_CONTROL_RETRACT "Retract mm" +#define MSG_CONTROL_RETRACT_SWAP "Ruil Retract mm" +#define MSG_CONTROL_RETRACTF "Retract F" +#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm" +#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Ruil UnRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "UnRet F" +#define MSG_AUTORETRACT "AutoRetr." +#define MSG_FILAMENTCHANGE "Verv. Filament" +#define MSG_INIT_SDCARD "Init. SD kaart" +#define MSG_CNG_SDCARD "Verv. SD card" +#define MSG_ZPROBE_OUT "Z probe uit. bed" +#define MSG_POSITION_UNKNOWN "Home X/Y voor Z" +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystap X" +#define MSG_BABYSTEP_Y "Babystap Y" +#define MSG_BABYSTEP_Z "Babystap Z" +#define MSG_ENDSTOP_ABORT "Endstop afbr." + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_NL_H diff --git a/Marlin/language_pl.h b/Marlin/language_pl.h new file mode 100644 index 000000000..93ccf4046 --- /dev/null +++ b/Marlin/language_pl.h @@ -0,0 +1,130 @@ +/** + * Polish + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_PL_H +#define LANGUAGE_PL_H + +#define WELCOME_MSG MACHINE_NAME " gotowy." +#define MSG_SD_INSERTED "Karta wlozona" +#define MSG_SD_REMOVED "Karta usunieta" +#define MSG_MAIN "Menu glowne" +#define MSG_AUTOSTART "Autostart" +#define MSG_DISABLE_STEPPERS "Wylacz silniki" +#define MSG_AUTO_HOME "Auto. poz. zerowa" +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Ustaw punkt zero" +#define MSG_PREHEAT_PLA "Rozgrzej PLA" +#define MSG_PREHEAT_PLA_N "Rozgrzej PLA " +#define MSG_PREHEAT_PLA_ALL "Roz. PLA Wszystko" +#define MSG_PREHEAT_PLA_BEDONLY "Rozgrzej PLA Loze" +#define MSG_PREHEAT_PLA_SETTINGS "Ustaw. rozg. PLA" +#define MSG_PREHEAT_ABS "Rozgrzej ABS" +#define MSG_PREHEAT_ABS_N "Rozgrzej ABS " +#define MSG_PREHEAT_ABS_ALL "Roz. ABS Wszystko" +#define MSG_PREHEAT_ABS_BEDONLY "Rozgrzej ABS Loze" +#define MSG_PREHEAT_ABS_SETTINGS "Ustaw. rozg. ABS" +#define MSG_COOLDOWN "Chlodzenie" +#define MSG_SWITCH_PS_ON "Wlacz zasilacz" +#define MSG_SWITCH_PS_OFF "Wylacz zasilacz" +#define MSG_EXTRUDE "Ekstruzja" +#define MSG_RETRACT "Cofanie" +#define MSG_MOVE_AXIS "Ruch osi" +#define MSG_MOVE_X "Przesun w X" +#define MSG_MOVE_Y "Przesun w Y" +#define MSG_MOVE_Z "Przesun w Z" +#define MSG_MOVE_E "Ekstruzja (os E)" +#define MSG_MOVE_01MM "Przesuwaj co .1mm" +#define MSG_MOVE_1MM "Przesuwaj co 1mm" +#define MSG_MOVE_10MM "Przesuwaj co 10mm" +#define MSG_SPEED "Predkosc" +#define MSG_NOZZLE "Dysza" +#define MSG_BED "Loze" +#define MSG_FAN_SPEED "Obroty wiatraka" +#define MSG_FLOW "Przeplyw" +#define MSG_CONTROL "Ustawienia" +#define MSG_MIN " \002 Min" +#define MSG_MAX " \002 Max" +#define MSG_FACTOR " \002 Mnoznik" +#define MSG_AUTOTEMP "Auto. temperatura" +#define MSG_ON "Wl. " +#define MSG_OFF "Wyl." +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Przyspieszenie" +#define MSG_VXY_JERK "Zryw Vxy" +#define MSG_VZ_JERK "Zryw Vz" +#define MSG_VE_JERK "Zryw Ve" +#define MSG_VMAX "Vmax" +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "Vskok min" +#define MSG_AMAX "Amax" +#define MSG_A_RETRACT "A-wycofanie" +#define MSG_XSTEPS "krokiX/mm" +#define MSG_YSTEPS "krokiY/mm" +#define MSG_ZSTEPS "krokiZ/mm" +#define MSG_ESTEPS "krokiE/mm" +#define MSG_TEMPERATURE "Temperatura" +#define MSG_MOTION "Ruch" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "Kontrast LCD" +#define MSG_STORE_EPROM "Zapisz w pamieci" +#define MSG_LOAD_EPROM "Wczytaj z pamieci" +#define MSG_RESTORE_FAILSAFE "Ustaw. fabryczne" +#define MSG_REFRESH "\004Odswiez" +#define MSG_WATCH "Ekran glowny" +#define MSG_PREPARE "Przygotuj" +#define MSG_TUNE "Strojenie" +#define MSG_PAUSE_PRINT "Pauza" +#define MSG_RESUME_PRINT "Wznowienie" +#define MSG_STOP_PRINT "Stop" +#define MSG_CARD_MENU "Menu karty SD" +#define MSG_NO_CARD "Brak karty" +#define MSG_DWELL "Uspij..." +#define MSG_USERWAIT "Oczekiwanie..." +#define MSG_RESUMING "Wznawianie druku" +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Brak ruchu" +#define MSG_KILLED "Ubity. " +#define MSG_STOPPED "Zatrzymany. " +#define MSG_CONTROL_RETRACT "Wycofaj mm" +#define MSG_CONTROL_RETRACT_SWAP "Z Wycof. mm" +#define MSG_CONTROL_RETRACTF "Wycofaj V" +#define MSG_CONTROL_RETRACT_ZLIFT "Skok Z mm" +#define MSG_CONTROL_RETRACT_RECOVER "Cof. wycof. +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Z Cof. wyc. +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "Cof. wycof. V" +#define MSG_AUTORETRACT "Auto. wycofanie" +#define MSG_FILAMENTCHANGE "Zmien filament" +#define MSG_INIT_SDCARD "Inicjal. karty SD" +#define MSG_CNG_SDCARD "Zmiana karty SD" +#define MSG_ZPROBE_OUT "Sonda Z za lozem" +#define MSG_POSITION_UNKNOWN "Wroc w XY przed Z" +#define MSG_ZPROBE_ZOFFSET "Offset Z" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Blad wyl. kranc." + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_PL_H diff --git a/Marlin/language_pt-br.h b/Marlin/language_pt-br.h new file mode 100644 index 000000000..924b6e4db --- /dev/null +++ b/Marlin/language_pt-br.h @@ -0,0 +1,130 @@ +/** + * Portuguese (Brazil) + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_PT_BR_H +#define LANGUAGE_PT_BR_H + +#define WELCOME_MSG MACHINE_NAME " pronto." +#define MSG_SD_INSERTED "Cartao inserido" +#define MSG_SD_REMOVED "Cartao removido" +#define MSG_MAIN " Menu principal \003" +#define MSG_AUTOSTART "Autostart" +#define MSG_DISABLE_STEPPERS " Apagar motores" +#define MSG_AUTO_HOME "Ir para origen" +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Estabelecer orig." +#define MSG_PREHEAT_PLA "Pre-aquecer PLA" +#define MSG_PREHEAT_PLA_N "Pre-aquecer PLA " +#define MSG_PREHEAT_PLA_ALL "Pre-aq. PLA Tudo" +#define MSG_PREHEAT_PLA_BEDONLY "Pre-aq. PLA \002Base" +#define MSG_PREHEAT_PLA_SETTINGS "PLA setting" +#define MSG_PREHEAT_ABS "Pre-aquecer ABS" +#define MSG_PREHEAT_ABS_N "Pre-aquecer ABS " +#define MSG_PREHEAT_ABS_ALL "Pre-aq. ABS Tudo" +#define MSG_PREHEAT_ABS_BEDONLY "Pre-aq. ABS \002Base" +#define MSG_PREHEAT_ABS_SETTINGS "ABS setting" +#define MSG_COOLDOWN "Esfriar" +#define MSG_SWITCH_PS_ON "Switch Power On" +#define MSG_SWITCH_PS_OFF "Switch Power Off" +#define MSG_EXTRUDE "Extrudar" +#define MSG_RETRACT "Retrair" +#define MSG_MOVE_AXIS "Mover eixo \x7E" +#define MSG_MOVE_X "Move X" +#define MSG_MOVE_Y "Move Y" +#define MSG_MOVE_Z "Move Z" +#define MSG_MOVE_E "Extruder" +#define MSG_MOVE_01MM "Move 0.1mm" +#define MSG_MOVE_1MM "Move 1mm" +#define MSG_MOVE_10MM "Move 10mm" +#define MSG_SPEED "Velocidade" +#define MSG_NOZZLE "\002Nozzle" +#define MSG_BED "\002Base" +#define MSG_FAN_SPEED "Velocidade vento." +#define MSG_FLOW "Fluxo" +#define MSG_CONTROL "Controle \003" +#define MSG_MIN "\002 Min" +#define MSG_MAX "\002 Max" +#define MSG_FACTOR "\002 Fact" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "On " +#define MSG_OFF "Off" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Acc" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX " Vmax " +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "Amax " +#define MSG_A_RETRACT "A-retract" +#define MSG_XSTEPS "Xpasso/mm" +#define MSG_YSTEPS "Ypasso/mm" +#define MSG_ZSTEPS "Zpasso/mm" +#define MSG_ESTEPS "Epasso/mm" +#define MSG_TEMPERATURE "Temperatura" +#define MSG_MOTION "Movimento" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "Contrast" +#define MSG_STORE_EPROM "Guardar memoria" +#define MSG_LOAD_EPROM "Carregar memoria" +#define MSG_RESTORE_FAILSAFE "Rest. de emergen." +#define MSG_REFRESH "\004Recarregar" +#define MSG_WATCH "Monitorar \003" +#define MSG_PREPARE "Preparar \x7E" +#define MSG_TUNE "Tune \x7E" +#define MSG_PAUSE_PRINT "Pausar impressao" +#define MSG_RESUME_PRINT "Resumir impressao" +#define MSG_STOP_PRINT "Parar impressao" +#define MSG_CARD_MENU "Menu cartao SD" +#define MSG_NO_CARD "Sem cartao SD" +#define MSG_DWELL "Repouso..." +#define MSG_USERWAIT "Esperando ordem" +#define MSG_RESUMING "Resuming print" +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Sem movimento" +#define MSG_KILLED "PARADA DE EMERG." +#define MSG_STOPPED "PARADA. " +#define MSG_CONTROL_RETRACT " Retrair mm" +#define MSG_CONTROL_RETRACT_SWAP "Troca Retrair mm" +#define MSG_CONTROL_RETRACTF " Retrair V" +#define MSG_CONTROL_RETRACT_ZLIFT " Levantar mm" +#define MSG_CONTROL_RETRACT_RECOVER " DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Troca DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF " DesRet V" +#define MSG_AUTORETRACT " AutoRetr." +#define MSG_FILAMENTCHANGE "Change filament" +#define MSG_INIT_SDCARD "Init. SD-Card" +#define MSG_CNG_SDCARD "Change SD-Card" +#define MSG_ZPROBE_OUT "Son. fora da mesa" +#define MSG_POSITION_UNKNOWN "XY antes de Z" +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop abort" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_PT_BR_H diff --git a/Marlin/language_pt.h b/Marlin/language_pt.h new file mode 100644 index 000000000..90c4b5c6c --- /dev/null +++ b/Marlin/language_pt.h @@ -0,0 +1,130 @@ +/** + * Portuguese + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_PT_H +#define LANGUAGE_PT_H + +#define WELCOME_MSG MACHINE_NAME " pronto." +#define MSG_SD_INSERTED "Cartao inserido" +#define MSG_SD_REMOVED "Cartao removido" +#define MSG_MAIN " Menu principal \003" +#define MSG_AUTOSTART "Autostart" +#define MSG_DISABLE_STEPPERS " Desligar motores" +#define MSG_AUTO_HOME "Ir para home" +#define MSG_SET_HOME_OFFSETS "Def. home offsets" +#define MSG_SET_ORIGIN "Estabelecer orig." +#define MSG_PREHEAT_PLA "Pre-aquecer PLA" +#define MSG_PREHEAT_PLA_N "Pre-aquecer PLA " +#define MSG_PREHEAT_PLA_ALL "Pre-aq. PLA Tudo" +#define MSG_PREHEAT_PLA_BEDONLY "Pre-aq. PLA \002Base" +#define MSG_PREHEAT_PLA_SETTINGS "PLA definicoes" +#define MSG_PREHEAT_ABS "Pre-aquecer ABS" +#define MSG_PREHEAT_ABS_N "Pre-aquecer ABS " +#define MSG_PREHEAT_ABS_ALL "Pre-aq. ABS Tudo" +#define MSG_PREHEAT_ABS_BEDONLY "Pre-aq. ABS \002Base" +#define MSG_PREHEAT_ABS_SETTINGS "ABS definicoes" +#define MSG_COOLDOWN "Arrefecer" +#define MSG_SWITCH_PS_ON "Ligar" +#define MSG_SWITCH_PS_OFF "Desligar" +#define MSG_EXTRUDE "Extrudir" +#define MSG_RETRACT "Retrair" +#define MSG_MOVE_AXIS "Mover eixo \x7E" +#define MSG_MOVE_X "Mover X" +#define MSG_MOVE_Y "Mover Y" +#define MSG_MOVE_Z "Mover Z" +#define MSG_MOVE_E "Extrusor" +#define MSG_MOVE_01MM "Mover 0.1mm" +#define MSG_MOVE_1MM "Mover 1mm" +#define MSG_MOVE_10MM "Mover 10mm" +#define MSG_SPEED "Velocidade" +#define MSG_NOZZLE "\002Bico" +#define MSG_BED "\002Base" +#define MSG_FAN_SPEED "Velocidade do ar." +#define MSG_FLOW "Fluxo" +#define MSG_CONTROL "Controlo \003" +#define MSG_MIN "\002 Min" +#define MSG_MAX "\002 Max" +#define MSG_FACTOR "\002 Fact" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "On " +#define MSG_OFF "Off" +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Acc" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX " Vmax " +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "Amax " +#define MSG_A_RETRACT "A-retract" +#define MSG_XSTEPS "Xpasso/mm" +#define MSG_YSTEPS "Ypasso/mm" +#define MSG_ZSTEPS "Zpasso/mm" +#define MSG_ESTEPS "Epasso/mm" +#define MSG_TEMPERATURE "Temperatura" +#define MSG_MOTION "Movimento" +#define MSG_VOLUMETRIC "Filamento" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Diam. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Diam. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Diam. 3" +#define MSG_CONTRAST "Contraste" +#define MSG_STORE_EPROM "Guardar na memoria" +#define MSG_LOAD_EPROM "Carregar da memoria" +#define MSG_RESTORE_FAILSAFE "Rest. de emergen." +#define MSG_REFRESH "\004Recarregar" +#define MSG_WATCH "Monitorar \003" +#define MSG_PREPARE "Preparar \x7E" +#define MSG_TUNE "Afinar \x7E" +#define MSG_PAUSE_PRINT "Pausar impressao" +#define MSG_RESUME_PRINT "Resumir impressao" +#define MSG_STOP_PRINT "Parar impressao" +#define MSG_CARD_MENU "Menu cartao SD" +#define MSG_NO_CARD "Sem cartao SD" +#define MSG_DWELL "Repouso..." +#define MSG_USERWAIT "A espera de ordem" +#define MSG_RESUMING "Resumir impressao" +#define MSG_PRINT_ABORTED "Impr. Cancelada" +#define MSG_NO_MOVE "Sem movimento" +#define MSG_KILLED "INTRRP. DE EMERG." +#define MSG_STOPPED "PARADO. " +#define MSG_CONTROL_RETRACT " Retrair mm" +#define MSG_CONTROL_RETRACT_SWAP "Troca Retrair mm" +#define MSG_CONTROL_RETRACTF " Retrair V" +#define MSG_CONTROL_RETRACT_ZLIFT " Levantar mm" +#define MSG_CONTROL_RETRACT_RECOVER " DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Troca DesRet +mm" +#define MSG_CONTROL_RETRACT_RECOVERF " DesRet V" +#define MSG_AUTORETRACT " AutoRetr." +#define MSG_FILAMENTCHANGE "Trocar filamento" +#define MSG_INIT_SDCARD "Inic. SD-Card" +#define MSG_CNG_SDCARD "Trocar SD-Card" +#define MSG_ZPROBE_OUT "Sens. fora da Base" +#define MSG_POSITION_UNKNOWN "XY antes de Z" +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop abort." + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibracao" + #define MSG_DELTA_CALIBRATE_X "Calibrar X" + #define MSG_DELTA_CALIBRATE_Y "Calibrar Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrar Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_PT_H diff --git a/Marlin/language_ru.h b/Marlin/language_ru.h new file mode 100644 index 000000000..bcab50b79 --- /dev/null +++ b/Marlin/language_ru.h @@ -0,0 +1,132 @@ +/** + * Russian + * + * LCD Menu Messages + * Please note these are limited to 17 characters! + * + */ +#ifndef LANGUAGE_RU_H +#define LANGUAGE_RU_H + +#define LANGUAGE_RU + +#define WELCOME_MSG MACHINE_NAME " Готов." +#define MSG_SD_INSERTED "Карта вÑтавлена" +#define MSG_SD_REMOVED "Карта извлечена" +#define MSG_MAIN "Меню" +#define MSG_AUTOSTART "ÐвтоÑтарт" +#define MSG_DISABLE_STEPPERS "Выкл. двигатели" +#define MSG_AUTO_HOME "Парковка" +#define MSG_SET_HOME_OFFSETS "Set home offsets" +#define MSG_SET_ORIGIN "Запомнить ноль" +#define MSG_PREHEAT_PLA "Преднагрев PLA" +#define MSG_PREHEAT_PLA_N "Преднагрев PLA" +#define MSG_PREHEAT_PLA_ALL "Преднаг. PLA вÑе" +#define MSG_PREHEAT_PLA_BEDONLY "Пред. PLA Кровать" +#define MSG_PREHEAT_PLA_SETTINGS "ÐаÑтройки PLA" +#define MSG_PREHEAT_ABS "Преднагрев ABS" +#define MSG_PREHEAT_ABS_N "Преднагрев ABS" +#define MSG_PREHEAT_ABS_ALL "Преднаг. ABS вÑе " +#define MSG_PREHEAT_ABS_BEDONLY "Пред. ABS Кровать" +#define MSG_PREHEAT_ABS_SETTINGS "ÐаÑтройки ABS" +#define MSG_COOLDOWN "Охлаждение" +#define MSG_SWITCH_PS_ON "Switch Power On" +#define MSG_SWITCH_PS_OFF "Switch Power Off" +#define MSG_EXTRUDE "ЭкÑтрузиÑ" +#define MSG_RETRACT "Откат" +#define MSG_MOVE_AXIS "Движение по оÑÑм" +#define MSG_MOVE_X "Move X" +#define MSG_MOVE_Y "Move Y" +#define MSG_MOVE_Z "Move Z" +#define MSG_MOVE_E "Extruder" +#define MSG_MOVE_01MM "Move 0.1mm" +#define MSG_MOVE_1MM "Move 1mm" +#define MSG_MOVE_10MM "Move 10mm" +#define MSG_SPEED "СкороÑÑ‚ÑŒ" +#define MSG_NOZZLE LCD_STR_THERMOMETER " Фильера" +#define MSG_BED LCD_STR_THERMOMETER " Кровать" +#define MSG_FAN_SPEED "Куллер" +#define MSG_FLOW "Поток" +#define MSG_CONTROL "ÐаÑтройки" +#define MSG_MIN LCD_STR_THERMOMETER " Минимум" +#define MSG_MAX LCD_STR_THERMOMETER " МакÑимум" +#define MSG_FACTOR LCD_STR_THERMOMETER " Фактор" +#define MSG_AUTOTEMP "Autotemp" +#define MSG_ON "Вкл. " +#define MSG_OFF "Выкл. " +#define MSG_PID_P "PID-P" +#define MSG_PID_I "PID-I" +#define MSG_PID_D "PID-D" +#define MSG_PID_C "PID-C" +#define MSG_ACC "Acc" +#define MSG_VXY_JERK "Vxy-jerk" +#define MSG_VZ_JERK "Vz-jerk" +#define MSG_VE_JERK "Ve-jerk" +#define MSG_VMAX "Vmax " +#define MSG_X "x" +#define MSG_Y "y" +#define MSG_Z "z" +#define MSG_E "e" +#define MSG_VMIN "Vmin" +#define MSG_VTRAV_MIN "VTrav min" +#define MSG_AMAX "Amax " +#define MSG_A_RETRACT "A-retract" +#define MSG_XSTEPS "X шаг/mm" +#define MSG_YSTEPS "Y шаг/mm" +#define MSG_ZSTEPS "Z шаг/mm" +#define MSG_ESTEPS "E шаг/mm" +#define MSG_TEMPERATURE "Температура" +#define MSG_MOTION "СкороÑти" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" +#define MSG_CONTRAST "LCD contrast" +#define MSG_STORE_EPROM "Сохранить в EPROM" +#define MSG_LOAD_EPROM "Загруз. из EPROM" +#define MSG_RESTORE_FAILSAFE "Ð¡Ð±Ñ€Ð¾Ñ Ð½Ð°Ñтроек" +#define MSG_REFRESH LCD_STR_REFRESH "Обновить" +#define MSG_WATCH "Обзор" +#define MSG_PREPARE "ДейÑтвиÑ" +#define MSG_TUNE "ÐаÑтройки" +#define MSG_PAUSE_PRINT "Продолжить печать" +#define MSG_RESUME_PRINT "возобн. печать" +#define MSG_STOP_PRINT "ОÑтановить печать" +#define MSG_CARD_MENU "Меню карты" +#define MSG_NO_CARD "Ðет карты" +#define MSG_DWELL "Сон..." +#define MSG_USERWAIT "Ожиданиие" +#define MSG_RESUMING "Resuming print" +#define MSG_PRINT_ABORTED "Print aborted" +#define MSG_NO_MOVE "Ðет движениÑ." +#define MSG_KILLED "УБИТО." +#define MSG_STOPPED "ОСТÐÐОВЛЕÐО." +#define MSG_CONTROL_RETRACT "Откат mm" +#define MSG_CONTROL_RETRACT_SWAP "Ñвоп Откат mm" +#define MSG_CONTROL_RETRACTF "Откат V" +#define MSG_CONTROL_RETRACT_ZLIFT "Прыжок mm" +#define MSG_CONTROL_RETRACT_RECOVER "Возврат +mm" +#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Ñвоп Возврат +mm" +#define MSG_CONTROL_RETRACT_RECOVERF "Возврат V" +#define MSG_AUTORETRACT "ÐвтоОткат" +#define MSG_FILAMENTCHANGE "Change filament" +#define MSG_INIT_SDCARD "Init. SD-Card" +#define MSG_CNG_SDCARD "Change SD-Card" +#define MSG_ZPROBE_OUT "Z probe out. bed" +#define MSG_POSITION_UNKNOWN "Home X/Y before Z" +#define MSG_ZPROBE_ZOFFSET "Z Offset" +#define MSG_BABYSTEP_X "Babystep X" +#define MSG_BABYSTEP_Y "Babystep Y" +#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_ENDSTOP_ABORT "Endstop abort" + +#ifdef DELTA_CALIBRATION_MENU + #define MSG_DELTA_CALIBRATE "Delta Calibration" + #define MSG_DELTA_CALIBRATE_X "Calibrate X" + #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" +#endif // DELTA_CALIBRATION_MENU + +#endif // LANGUAGE_RU_H diff --git a/Marlin/motion_control.cpp b/Marlin/motion_control.cpp new file mode 100644 index 000000000..b26cbafc8 --- /dev/null +++ b/Marlin/motion_control.cpp @@ -0,0 +1,145 @@ +/* + motion_control.c - high level interface for issuing motion commands + Part of Grbl + + Copyright (c) 2009-2011 Simen Svale Skogsrud + Copyright (c) 2011 Sungeun K. Jeon + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#include "Marlin.h" +#include "stepper.h" +#include "planner.h" + +// The arc is approximated by generating a huge number of tiny, linear segments. The length of each +// segment is configured in settings.mm_per_arc_segment. +void mc_arc(float *position, float *target, float *offset, uint8_t axis_0, uint8_t axis_1, + uint8_t axis_linear, float feed_rate, float radius, uint8_t isclockwise, uint8_t extruder) +{ + // int acceleration_manager_was_enabled = plan_is_acceleration_manager_enabled(); + // plan_set_acceleration_manager_enabled(false); // disable acceleration management for the duration of the arc + float center_axis0 = position[axis_0] + offset[axis_0]; + float center_axis1 = position[axis_1] + offset[axis_1]; + float linear_travel = target[axis_linear] - position[axis_linear]; + float extruder_travel = target[E_AXIS] - position[E_AXIS]; + float r_axis0 = -offset[axis_0]; // Radius vector from center to current location + float r_axis1 = -offset[axis_1]; + float rt_axis0 = target[axis_0] - center_axis0; + float rt_axis1 = target[axis_1] - center_axis1; + + // CCW angle between position and target from circle center. Only one atan2() trig computation required. + float angular_travel = atan2(r_axis0*rt_axis1-r_axis1*rt_axis0, r_axis0*rt_axis0+r_axis1*rt_axis1); + if (angular_travel < 0) { angular_travel += 2*M_PI; } + if (isclockwise) { angular_travel -= 2*M_PI; } + + //20141002:full circle for G03 did not work, e.g. G03 X80 Y80 I20 J0 F2000 is giving an Angle of zero so head is not moving + //to compensate when start pos = target pos && angle is zero -> angle = 2Pi + if (position[axis_0] == target[axis_0] && position[axis_1] == target[axis_1] && angular_travel == 0) + { + angular_travel += 2*M_PI; + } + //end fix G03 + + float millimeters_of_travel = hypot(angular_travel*radius, fabs(linear_travel)); + if (millimeters_of_travel < 0.001) { return; } + uint16_t segments = floor(millimeters_of_travel/MM_PER_ARC_SEGMENT); + if(segments == 0) segments = 1; + + /* + // Multiply inverse feed_rate to compensate for the fact that this movement is approximated + // by a number of discrete segments. The inverse feed_rate should be correct for the sum of + // all segments. + if (invert_feed_rate) { feed_rate *= segments; } + */ + float theta_per_segment = angular_travel/segments; + float linear_per_segment = linear_travel/segments; + float extruder_per_segment = extruder_travel/segments; + + /* Vector rotation by transformation matrix: r is the original vector, r_T is the rotated vector, + and phi is the angle of rotation. Based on the solution approach by Jens Geisler. + r_T = [cos(phi) -sin(phi); + sin(phi) cos(phi] * r ; + + For arc generation, the center of the circle is the axis of rotation and the radius vector is + defined from the circle center to the initial position. Each line segment is formed by successive + vector rotations. This requires only two cos() and sin() computations to form the rotation + matrix for the duration of the entire arc. Error may accumulate from numerical round-off, since + all double numbers are single precision on the Arduino. (True double precision will not have + round off issues for CNC applications.) Single precision error can accumulate to be greater than + tool precision in some cases. Therefore, arc path correction is implemented. + + Small angle approximation may be used to reduce computation overhead further. This approximation + holds for everything, but very small circles and large mm_per_arc_segment values. In other words, + theta_per_segment would need to be greater than 0.1 rad and N_ARC_CORRECTION would need to be large + to cause an appreciable drift error. N_ARC_CORRECTION~=25 is more than small enough to correct for + numerical drift error. N_ARC_CORRECTION may be on the order a hundred(s) before error becomes an + issue for CNC machines with the single precision Arduino calculations. + + This approximation also allows mc_arc to immediately insert a line segment into the planner + without the initial overhead of computing cos() or sin(). By the time the arc needs to be applied + a correction, the planner should have caught up to the lag caused by the initial mc_arc overhead. + This is important when there are successive arc motions. + */ + // Vector rotation matrix values + float cos_T = 1-0.5*theta_per_segment*theta_per_segment; // Small angle approximation + float sin_T = theta_per_segment; + + float arc_target[4]; + float sin_Ti; + float cos_Ti; + float r_axisi; + uint16_t i; + int8_t count = 0; + + // Initialize the linear axis + arc_target[axis_linear] = position[axis_linear]; + + // Initialize the extruder axis + arc_target[E_AXIS] = position[E_AXIS]; + + for (i = 1; i. +*/ + +#ifndef motion_control_h +#define motion_control_h + +// Execute an arc in offset mode format. position == current xyz, target == target xyz, +// offset == offset from current xyz, axis_XXX defines circle plane in tool space, axis_linear is +// the direction of helical travel, radius == circle radius, isclockwise boolean. Used +// for vector transformation direction. +void mc_arc(float *position, float *target, float *offset, unsigned char axis_0, unsigned char axis_1, + unsigned char axis_linear, float feed_rate, float radius, unsigned char isclockwise, uint8_t extruder); + +#endif diff --git a/Marlin/pins.h b/Marlin/pins.h index 1bd670266..c33fa24e0 100644 --- a/Marlin/pins.h +++ b/Marlin/pins.h @@ -1,494 +1,187 @@ +/** + * pins.h + */ + #ifndef PINS_H #define PINS_H -/**************************************************************************************** -* Arduino pin assignment -* -* ATMega168 -* +-\/-+ -* PC6 1| |28 PC5 (AI 5 / D19) -* (D 0) PD0 2| |27 PC4 (AI 4 / D18) -* (D 1) PD1 3| |26 PC3 (AI 3 / D17) -* (D 2) PD2 4| |25 PC2 (AI 2 / D16) -* PWM+ (D 3) PD3 5| |24 PC1 (AI 1 / D15) -* (D 4) PD4 6| |23 PC0 (AI 0 / D14) -* VCC 7| |22 GND -* GND 8| |21 AREF -* PB6 9| |20 AVCC -* PB7 10| |19 PB5 (D 13) -* PWM+ (D 5) PD5 11| |18 PB4 (D 12) -* PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM -* (D 7) PD7 13| |16 PB2 (D 10) PWM -* (D 8) PB0 14| |15 PB1 (D 9) PWM -* +----+ -****************************************************************************************/ -#if MOTHERBOARD == 0 -#define KNOWN_BOARD 1 +#include "boards.h" -#ifndef __AVR_ATmega168__ -#error Oops! Make sure you have 'Arduino Diecimila' selected from the boards menu. -#endif +// Preset optional pins +#define X_MS1_PIN -1 +#define X_MS2_PIN -1 +#define Y_MS1_PIN -1 +#define Y_MS2_PIN -1 +#define Z_MS1_PIN -1 +#define Z_MS2_PIN -1 +#define E0_MS1_PIN -1 +#define E0_MS2_PIN -1 +#define E1_MS1_PIN -1 +#define E1_MS2_PIN -1 +#define DIGIPOTSS_PIN -1 +#define HEATER_3_PIN -1 +#define TEMP_3_PIN -1 -#define X_STEP_PIN 2 -#define X_DIR_PIN 3 -#define X_ENABLE_PIN -1 -#define X_MIN_PIN 4 -#define X_MAX_PIN 9 - -#define Y_STEP_PIN 10 -#define Y_DIR_PIN 7 -#define Y_ENABLE_PIN -1 -#define Y_MIN_PIN 8 -#define Y_MAX_PIN 13 - -#define Z_STEP_PIN 19 -#define Z_DIR_PIN 18 -#define Z_ENABLE_PIN 5 -#define Z_MIN_PIN 17 -#define Z_MAX_PIN 16 - -#define E_STEP_PIN 11 -#define E_DIR_PIN 12 -#define E_ENABLE_PIN -1 - -#define SDPOWER -1 -#define SDSS -1 -#define LED_PIN -1 -#define FAN_PIN -1 -#define PS_ON_PIN 15 -#define KILL_PIN -1 - -#define HEATER_0_PIN 6 -#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! - - -#endif - - - -/**************************************************************************************** -* Sanguino/RepRap Motherboard with direct-drive extruders -* -* ATMega644P -* -* +---\/---+ -* (D 0) PB0 1| |40 PA0 (AI 0 / D31) -* (D 1) PB1 2| |39 PA1 (AI 1 / D30) -* INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) -* PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) -* PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) -* MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) -* MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) -* SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) -* RST 9| |32 AREF -* VCC 10| |31 GND -* GND 11| |30 AVCC -* XTAL2 12| |29 PC7 (D 23) -* XTAL1 13| |28 PC6 (D 22) -* RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI -* TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO -* INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS -* INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK -* PWM (D 12) PD4 18| |23 PC1 (D 17) SDA -* PWM (D 13) PD5 19| |22 PC0 (D 16) SCL -* PWM (D 14) PD6 20| |21 PD7 (D 15) PWM -* +--------+ -* -****************************************************************************************/ -#if MOTHERBOARD == 1 -#define KNOWN_BOARD 1 - -#ifndef __AVR_ATmega644P__ -#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. -#endif - -#define X_STEP_PIN 15 -#define X_DIR_PIN 18 -#define X_ENABLE_PIN 19 -#define X_MIN_PIN 20 -#define X_MAX_PIN 21 - -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_ENABLE_PIN 19 -#define Y_MIN_PIN 25 -#define Y_MAX_PIN 26 - -#define Z_STEP_PIN 29 -#define Z_DIR_PIN 30 -#define Z_ENABLE_PIN 31 -#define Z_MIN_PIN 2 -#define Z_MAX_PIN 1 - -#define E_STEP_PIN 12 -#define E_DIR_PIN 16 -#define E_ENABLE_PIN 3 - -#define SDPOWER -1 -#define SDSS -1 -#define LED_PIN 0 -#define FAN_PIN -1 -#define PS_ON_PIN -1 -#define KILL_PIN -1 - -#define HEATER_0_PIN 14 -#define TEMP_0_PIN 4 //D27 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! - -/* Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31) */ - - - -#endif - - -/**************************************************************************************** -* RepRap Motherboard ****---NOOOOOO RS485/EXTRUDER CONTROLLER!!!!!!!!!!!!!!!!!---******* -* -****************************************************************************************/ -#if MOTHERBOARD == 2 -#define KNOWN_BOARD 1 - -#ifndef __AVR_ATmega644P__ -#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. -#endif - -#define X_STEP_PIN 15 -#define X_DIR_PIN 18 -#define X_ENABLE_PIN 19 -#define X_MIN_PIN 20 -#define X_MAX_PIN 21 - -#define Y_STEP_PIN 23 -#define Y_DIR_PIN 22 -#define Y_ENABLE_PIN 24 -#define Y_MIN_PIN 25 -#define Y_MAX_PIN 26 - -#define Z_STEP_PINN 27 -#define Z_DIR_PINN 28 -#define Z_ENABLE_PIN 29 -#define Z_MIN_PIN 30 -#define Z_MAX_PIN 31 - -#define E_STEP_PIN 17 -#define E_DIR_PIN 16 -#define E_ENABLE_PIN -1 - -#define SDPOWER -1 -#define SDSS 4 -#define LED_PIN 0 - -#define SD_CARD_WRITE 2 -#define SD_CARD_DETECT 3 -#define SD_CARD_SELECT 4 - -//our RS485 pins -#define TX_ENABLE_PIN 12 -#define RX_ENABLE_PIN 13 - -//pin for controlling the PSU. -#define PS_ON_PIN 14 - -#define FAN_PIN -1 -#define KILL_PIN -1 - -#define HEATER_0_PIN -1 -#define TEMP_0_PIN -1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! - - - - -#endif - -/**************************************************************************************** -* Arduino Mega pin assignment -* -****************************************************************************************/ -#if MOTHERBOARD == 33 -#define MOTHERBOARD 3 -#define RAMPS_V_1_3 -#endif -#if MOTHERBOARD == 3 -#define KNOWN_BOARD 1 - -//////////////////FIX THIS////////////// -#ifndef __AVR_ATmega1280__ - #ifndef __AVR_ATmega2560__ - #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. - #endif -#endif - -// uncomment one of the following lines for RAMPS v1.3 or v1.0, comment both for v1.2 or 1.1 -// #define RAMPS_V_1_3 -// #define RAMPS_V_1_0 - -#ifdef RAMPS_V_1_3 - -#define X_STEP_PIN 54 -#define X_DIR_PIN 55 -#define X_ENABLE_PIN 38 -#define X_MIN_PIN 3 -#define X_MAX_PIN -1 //2 //Max endstops default to disabled "-1", set to commented value to enable. - -#define Y_STEP_PIN 60 -#define Y_DIR_PIN 61 -#define Y_ENABLE_PIN 56 -#define Y_MIN_PIN 14 -#define Y_MAX_PIN -1 //15 - -#define Z_STEP_PIN 46 -#define Z_DIR_PIN 48 -#define Z_ENABLE_PIN 62 -#define Z_MIN_PIN 18 -#define Z_MAX_PIN -1 //19 - -#define E_STEP_PIN 26 -#define E_DIR_PIN 28 -#define E_ENABLE_PIN 24 - -#define SDPOWER -1 -#define SDSS 53 -#define LED_PIN 13 -#define FAN_PIN 9 -#define PS_ON_PIN 12 -#define KILL_PIN -1 - -#define HEATER_0_PIN 10 -#define HEATER_1_PIN 8 -#define TEMP_0_PIN 13 // ANALOG NUMBERING -#define TEMP_1_PIN 14 // ANALOG NUMBERING - - -#else // RAMPS_V_1_1 or RAMPS_V_1_2 as default - -#define X_STEP_PIN 26 -#define X_DIR_PIN 28 -#define X_ENABLE_PIN 24 -#define X_MIN_PIN 3 -#define X_MAX_PIN -1 //2 - -#define Y_STEP_PIN 38 -#define Y_DIR_PIN 40 -#define Y_ENABLE_PIN 36 -#define Y_MIN_PIN 16 -#define Y_MAX_PIN -1 //17 - -#define Z_STEP_PIN 44 -#define Z_DIR_PIN 46 -#define Z_ENABLE_PIN 42 -#define Z_MIN_PIN 18 -#define Z_MAX_PIN -1 //19 - -#define E_STEP_PIN 32 -#define E_DIR_PIN 34 -#define E_ENABLE_PIN 30 - -#define SDPOWER 48 -#define SDSS 53 -#define LED_PIN 13 -#define PS_ON_PIN -1 -#define KILL_PIN -1 - - - -#ifdef RAMPS_V_1_0 // RAMPS_V_1_0 - #define HEATER_0_PIN 12 // RAMPS 1.0 - #define HEATER_1_PIN -1 // RAMPS 1.0 - #define FAN_PIN 11 // RAMPS 1.0 - -#else // RAMPS_V_1_1 or RAMPS_V_1_2 - #define HEATER_0_PIN 10 // RAMPS 1.1 - #define HEATER_1_PIN 8 // RAMPS 1.1 - #define FAN_PIN 9 // RAMPS 1.1 -#endif - -#define TEMP_0_PIN 2 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! -#define TEMP_1_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! -#endif - -// SPI for Max6675 Thermocouple - -#ifndef SDSUPPORT -// these pins are defined in the SD library if building with SD support #define SCK_PIN 52 - #define MISO_PIN 50 - #define MOSI_PIN 51 - #define MAX6675_SS 53 +#if MB(GEN7_CUSTOM) + #include "pins_GEN7_CUSTOM.h" +#elif MB(GEN7_12) + #include "pins_GEN7_12.h" +#elif MB(GEN7_13) + #include "pins_GEN7_13.h" +#elif MB(GEN7_14) + #include "pins_GEN7_14.h" +#elif MB(CHEAPTRONIC) + #include "pins_CHEAPTRONIC.h" +#elif MB(SETHI) + #include "pins_SETHI.h" +#elif MB(RAMPS_OLD) + #include "pins_RAMPS_OLD.h" +#elif MB(RAMPS_13_EFB) || MB(RAMPS_13_EEB) || MB(RAMPS_13_EFF) || MB(RAMPS_13_EEF) + #include "pins_RAMPS_13.h" +#elif MB(DUEMILANOVE_328P) + #include "pins_DUEMILANOVE_328P.h" +#elif MB(GEN6) + #include "pins_GEN6.h" +#elif MB(GEN6_DELUXE) + #include "pins_GEN6_DELUXE.h" +#elif MB(SANGUINOLOLU_11) + #include "pins_SANGUINOLOLU_11.h" +#elif MB(SANGUINOLOLU_12) + #include "pins_SANGUINOLOLU_12.h" +#elif MB(MELZI) + #include "pins_MELZI.h" +#elif MB(STB_11) + #include "pins_STB_11.h" +#elif MB(AZTEEG_X1) + #include "pins_AZTEEG_X1.h" +#elif MB(MELZI_1284) + #include "pins_MELZI_1284.h" +#elif MB(AZTEEG_X3) + #include "pins_AZTEEG_X3.h" +#elif MB(AZTEEG_X3_PRO) + #include "pins_AZTEEG_X3_PRO.h" +#elif MB(ULTIMAKER) + #include "pins_ULTIMAKER.h" +#elif MB(ULTIMAKER_OLD) + #include "pins_ULTIMAKER_OLD.h" +#elif MB(ULTIMAIN_2) + #include "pins_ULTIMAIN_2.h" +#elif MB(3DRAG) + #include "pins_3DRAG.h" +#elif MB(K8200) + #include "pins_K8200.h" +#elif MB(TEENSYLU) + #include "pins_TEENSYLU.h" +#elif MB(RUMBA) + #include "pins_RUMBA.h" +#elif MB(PRINTRBOARD) + #include "pins_PRINTRBOARD.h" +#elif MB(BRAINWAVE) + #include "pins_BRAINWAVE.h" +#elif MB(SAV_MKI) + #include "pins_SAV_MKI.h" +#elif MB(TEENSY2) + #include "pins_TEENSY2.h" +#elif MB(GEN3_PLUS) + #include "pins_GEN3_PLUS.h" +#elif MB(GEN3_MONOLITHIC) + #include "pins_GEN3_MONOLITHIC.h" +#elif MB(MEGATRONICS) + #include "pins_MEGATRONICS.h" +#elif MB(MEGATRONICS_1) + #include "pins_MEGATRONICS_1.h" +#elif MB(MEGATRONICS_2) + #include "pins_MEGATRONICS_2.h" +#elif MB(MEGATRONICS_3) + #include "pins_MEGATRONICS_3.h" +#elif MB(OMCA_A) + #include "pins_OMCA_A.h" +#elif MB(OMCA) + #include "pins_OMCA.h" +#elif MB(RAMBO) + #include "pins_RAMBO.h" +#elif MB(ELEFU_3) + #include "pins_ELEFU_3.h" +#elif MB(5DPRINT) + #include "pins_5DPRINT.h" +#elif MB(LEAPFROG) + #include "pins_LEAPFROG.h" +#elif MB(WITBOX) + #include "pins_WITBOX.h" +#elif MB(HEPHESTOS) + #include "pins_HEPHESTOS.h" +#elif MB(BAM_DICE) + #include "pins_RAMPS_13.h" +#elif MB(BAM_DICE_DUE) + #include "pins_BAM_DICE_DUE.h" +#elif MB(99) + #include "pins_99.h" #else - #define MAX6675_SS 49 + #error Unknown MOTHERBOARD value set in Configuration.h #endif +// List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those! +#define _E0_PINS E0_STEP_PIN, E0_DIR_PIN, E0_ENABLE_PIN, HEATER_0_PIN, analogInputToDigitalPin(TEMP_0_PIN), +#define _E1_PINS +#define _E2_PINS +#define _E3_PINS -#endif -/**************************************************************************************** -* Duemilanove w/ ATMega328P pin assignment -* -****************************************************************************************/ -#if MOTHERBOARD == 4 -#define KNOWN_BOARD 1 - -#ifndef __AVR_ATmega328P__ -#error Oops! Make sure you have 'Arduino Duemilanove w/ ATMega328' selected from the 'Tools -> Boards' menu. +#if EXTRUDERS > 1 + #define _E1_PINS E1_STEP_PIN, E1_DIR_PIN, E1_ENABLE_PIN, HEATER_1_PIN, analogInputToDigitalPin(TEMP_1_PIN), + #if EXTRUDERS > 2 + #define _E2_PINS E2_STEP_PIN, E2_DIR_PIN, E2_ENABLE_PIN, HEATER_2_PIN, analogInputToDigitalPin(TEMP_2_PIN), + #if EXTRUDERS > 3 + #define _E3_PINS E3_STEP_PIN, E3_DIR_PIN, E3_ENABLE_PIN, HEATER_3_PIN, analogInputToDigitalPin(TEMP_3_PIN), + #endif + #endif #endif -#define X_STEP_PIN 19 -#define X_DIR_PIN 18 -#define X_ENABLE_PIN -1 -#define X_MIN_PIN 17 -#define X_MAX_PIN -1 - -#define Y_STEP_PIN 10 -#define Y_DIR_PIN 7 -#define Y_ENABLE_PIN -1 -#define Y_MIN_PIN 8 -#define Y_MAX_PIN -1 - -#define Z_STEP_PIN 13 -#define Z_DIR_PIN 3 -#define Z_ENABLE_PIN 2 -#define Z_MIN_PIN 4 -#define Z_MAX_PIN -1 - -#define E_STEP_PIN 11 -#define E_DIR_PIN 12 -#define E_ENABLE_PIN -1 - -#define SDPOWER -1 -#define SDSS -1 -#define LED_PIN -1 -#define FAN_PIN 5 -#define PS_ON_PIN -1 -#define KILL_PIN -1 - -#define HEATER_0_PIN 6 -#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! - - +#ifdef X_STOP_PIN + #if X_HOME_DIR < 0 + #define X_MIN_PIN X_STOP_PIN + #define X_MAX_PIN -1 + #else + #define X_MIN_PIN -1 + #define X_MAX_PIN X_STOP_PIN + #endif #endif -/**************************************************************************************** -* Gen6 pin assignment -* -****************************************************************************************/ -#if MOTHERBOARD == 5 -#define KNOWN_BOARD 1 - -#ifndef __AVR_ATmega644P__ - #error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. +#ifdef Y_STOP_PIN + #if Y_HOME_DIR < 0 + #define Y_MIN_PIN Y_STOP_PIN + #define Y_MAX_PIN -1 + #else + #define Y_MIN_PIN -1 + #define Y_MAX_PIN Y_STOP_PIN + #endif #endif -//x axis pins - #define X_STEP_PIN 15 - #define X_DIR_PIN 18 - #define X_ENABLE_PIN 19 - #define X_MIN_PIN 20 - #define X_MAX_PIN -1 - - //y axis pins - #define Y_STEP_PIN 23 - #define Y_DIR_PIN 22 - #define Y_ENABLE_PIN 24 - #define Y_MIN_PIN 25 - #define Y_MAX_PIN -1 - - //z axis pins - #define Z_STEP_PIN 27 - #define Z_DIR_PIN 28 - #define Z_ENABLE_PIN 29 - #define Z_MIN_PIN 30 - #define Z_MAX_PIN -1 - - //extruder pins - #define E_STEP_PIN 4 //Edited @ EJE Electronics 20100715 - #define E_DIR_PIN 2 //Edited @ EJE Electronics 20100715 - #define E_ENABLE_PIN 3 //Added @ EJE Electronics 20100715 - #define TEMP_0_PIN 5 //changed @ rkoeppl 20110410 - #define HEATER_0_PIN 14 //changed @ rkoeppl 20110410 - #define HEATER_1_PIN -1 //changed @ rkoeppl 20110410 - - - #define SDPOWER -1 - #define SDSS 17 - #define LED_PIN -1 //changed @ rkoeppl 20110410 - #define TEMP_1_PIN -1 //changed @ rkoeppl 20110410 - #define FAN_PIN -1 //changed @ rkoeppl 20110410 - #define PS_ON_PIN -1 //changed @ rkoeppl 20110410 - //our pin for debugging. - - #define DEBUG_PIN 0 - - //our RS485 pins - #define TX_ENABLE_PIN 12 - #define RX_ENABLE_PIN 13 - -#endif -/**************************************************************************************** -* Sanguinololu pin assignment -* -****************************************************************************************/ -#if MOTHERBOARD == 62 -#define MOTHERBOARD 6 -#define SANGUINOLOLU_V_1_2 -#endif -#if MOTHERBOARD == 6 -#define KNOWN_BOARD 1 -#ifndef __AVR_ATmega644P__ -#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. +#ifdef Z_STOP_PIN + #if Z_HOME_DIR < 0 + #define Z_MIN_PIN Z_STOP_PIN + #define Z_MAX_PIN -1 + #else + #define Z_MIN_PIN -1 + #define Z_MAX_PIN Z_STOP_PIN + #endif #endif -#define X_STEP_PIN 15 -#define X_DIR_PIN 21 -#define X_MIN_PIN 18 -#define X_MAX_PIN -2 - -#define Y_STEP_PIN 22 -#define Y_DIR_PIN 23 -#define Y_MIN_PIN 19 -#define Y_MAX_PIN -1 - -#define Z_STEP_PIN 3 -#define Z_DIR_PIN 2 -#define Z_MIN_PIN 20 -#define Z_MAX_PIN -1 - -#define E_STEP_PIN 1 -#define E_DIR_PIN 0 - -#define LED_PIN -1 - -#define FAN_PIN -1 - -#define PS_ON_PIN -1 -#define KILL_PIN -1 - -#define HEATER_0_PIN 13 // (extruder) - -#ifdef SANGUINOLOLU_V_1_2 - -#define HEATER_1_PIN 12 // (bed) -#define X_ENABLE_PIN 14 -#define Y_ENABLE_PIN 14 -#define Z_ENABLE_PIN 26 -#define E_ENABLE_PIN 14 - -#else - -#define HEATER_1_PIN 14 // (bed) -#define X_ENABLE_PIN -1 -#define Y_ENABLE_PIN -1 -#define Z_ENABLE_PIN -1 -#define E_ENABLE_PIN -1 - +#ifdef DISABLE_MAX_ENDSTOPS + #define X_MAX_PIN -1 + #define Y_MAX_PIN -1 + #define Z_MAX_PIN -1 #endif -#define TEMP_0_PIN 7 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder) -#define TEMP_1_PIN 6 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) -#define SDPOWER -1 -#define SDSS 31 - -#ifndef KNOWN_BOARD -#error Unknown MOTHERBOARD value in configuration.h +#ifdef DISABLE_MIN_ENDSTOPS + #define X_MIN_PIN -1 + #define Y_MIN_PIN -1 + #define Z_MIN_PIN -1 #endif -#endif +#define SENSITIVE_PINS { 0, 1, X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, PS_ON_PIN, \ + HEATER_BED_PIN, FAN_PIN, \ + _E0_PINS _E1_PINS _E2_PINS _E3_PINS \ + analogInputToDigitalPin(TEMP_BED_PIN) \ + } -#endif +#endif //__PINS_H diff --git a/Marlin/pins_3DRAG.h b/Marlin/pins_3DRAG.h new file mode 100644 index 000000000..9db6b56e4 --- /dev/null +++ b/Marlin/pins_3DRAG.h @@ -0,0 +1,39 @@ +/** + * 3DRAG (and K8200) Arduino Mega with RAMPS v1.3 pin assignments + */ + +#include "pins_RAMPS_13.h" + +#define Z_ENABLE_PIN 63 + +#define X_MAX_PIN 2 +#define Y_MAX_PIN 15 +#define Z_MAX_PIN -1 + +#define SDSS 25//53 + +#define BEEPER 33 + +#define FAN_PIN 8 + +#define HEATER_0_PIN 10 +#define HEATER_1_PIN 12 +#define HEATER_2_PIN 6 + +#define HEATER_BED_PIN 9 // BED + +#if defined(ULTRA_LCD) && defined(NEWPANEL) + #define BEEPER -1 + + #define LCD_PINS_RS 27 + #define LCD_PINS_ENABLE 29 + #define LCD_PINS_D4 37 + #define LCD_PINS_D5 35 + #define LCD_PINS_D6 33 + #define LCD_PINS_D7 31 + + // Buttons + #define BTN_EN1 16 + #define BTN_EN2 17 + #define BTN_ENC 23 //the click +#endif // ULTRA_LCD && NEWPANEL diff --git a/Marlin/pins_5DPRINT.h b/Marlin/pins_5DPRINT.h new file mode 100644 index 000000000..20e69ef36 --- /dev/null +++ b/Marlin/pins_5DPRINT.h @@ -0,0 +1,75 @@ +/** + * 5DPrint D8 Driver board pin assignments + * + * https://bitbucket.org/makible/5dprint-d8-controller-board + */ + +#ifndef __AVR_AT90USB1286__ + #error Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu. +#endif + +#define AT90USB 1286 // Disable MarlinSerial etc. + +#define LARGE_FLASH true + +#define X_STEP_PIN 0 +#define X_DIR_PIN 1 +#define X_ENABLE_PIN 23 +#define X_STOP_PIN 37 + +#define Y_STEP_PIN 2 +#define Y_DIR_PIN 3 +#define Y_ENABLE_PIN 19 +#define Y_STOP_PIN 36 + +#define Z_STEP_PIN 4 +#define Z_DIR_PIN 5 +#define Z_ENABLE_PIN 18 +#define Z_STOP_PIN 39 + +#define E0_STEP_PIN 6 +#define E0_DIR_PIN 7 +#define E0_ENABLE_PIN 17 + +#define HEATER_0_PIN 21 // Extruder +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 20 // Bed +// You may need to change FAN_PIN to 16 because Marlin isn't using fastio.h +// for the fan and Teensyduino uses a different pin mapping. +#define FAN_PIN 16 // Fan + +#define TEMP_0_PIN 1 // Extruder / Analog pin numbering +#define TEMP_BED_PIN 0 // Bed / Analog pin numbering + +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 + +#define SDPOWER -1 +#define LED_PIN -1 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define ALARM_PIN -1 + +// The SDSS pin uses a different pin mapping from file Sd2PinMap.h +#define SDSS 20 + +#ifndef SDSUPPORT +// these pins are defined in the SD library if building with SD support + #define SCK_PIN 9 + #define MISO_PIN 11 + #define MOSI_PIN 10 +#endif + +// Microstepping pins +// Note that the pin mapping is not from fastio.h +// See Sd2PinMap.h for the pin configurations +#define X_MS1_PIN 25 +#define X_MS2_PIN 26 +#define Y_MS1_PIN 9 +#define Y_MS2_PIN 8 +#define Z_MS1_PIN 7 +#define Z_MS2_PIN 6 +#define E0_MS1_PIN 5 +#define E0_MS2_PIN 4 + diff --git a/Marlin/pins_99.h b/Marlin/pins_99.h new file mode 100644 index 000000000..54197f05a --- /dev/null +++ b/Marlin/pins_99.h @@ -0,0 +1,38 @@ +/** + * Board 99 pin assignments + */ + +#define X_STEP_PIN 2 +#define X_DIR_PIN 3 +#define X_ENABLE_PIN -1 +#define X_STOP_PIN 16 + +#define Y_STEP_PIN 5 +#define Y_DIR_PIN 6 +#define Y_ENABLE_PIN -1 +#define Y_STOP_PIN 67 + +#define Z_STEP_PIN 62 +#define Z_DIR_PIN 63 +#define Z_ENABLE_PIN -1 +#define Z_STOP_PIN 59 + +#define E0_STEP_PIN 65 +#define E0_DIR_PIN 66 +#define E0_ENABLE_PIN -1 + +#define SDPOWER -1 +#define SDSS 53 +#define LED_PIN -1 +#define FAN_PIN -1 +#define PS_ON_PIN 9 +#define KILL_PIN -1 + +#define HEATER_0_PIN 13 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define TEMP_0_PIN 6 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#define TEMP_1_PIN -1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#define TEMP_2_PIN -1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#define HEATER_BED_PIN 4 +#define TEMP_BED_PIN 10 diff --git a/Marlin/pins_AZTEEG_X1.h b/Marlin/pins_AZTEEG_X1.h new file mode 100644 index 000000000..97a8c3e0b --- /dev/null +++ b/Marlin/pins_AZTEEG_X1.h @@ -0,0 +1,7 @@ +/** + * Azteeg X1 pin assignments + */ + +#define SANGUINOLOLU_V_1_2 + +#include "pins_SANGUINOLOLU_11.h" diff --git a/Marlin/pins_AZTEEG_X3.h b/Marlin/pins_AZTEEG_X3.h new file mode 100644 index 000000000..d346e0bd2 --- /dev/null +++ b/Marlin/pins_AZTEEG_X3.h @@ -0,0 +1,13 @@ +/** + * AZTEEG_X3 Arduino Mega with RAMPS v1.3 pin assignments + */ + +#include "pins_RAMPS_13.h" + +#define FAN_PIN 9 // (Sprinter config) +#define HEATER_1_PIN -1 + +#ifdef TEMP_STAT_LEDS + #define STAT_LED_RED 6 + #define STAT_LED_BLUE 11 +#endif diff --git a/Marlin/pins_AZTEEG_X3_PRO.h b/Marlin/pins_AZTEEG_X3_PRO.h new file mode 100644 index 000000000..5d0d70db6 --- /dev/null +++ b/Marlin/pins_AZTEEG_X3_PRO.h @@ -0,0 +1,34 @@ +/** + * AZTEEG_X3_PRO (Arduino Mega) pin assignments + */ + +#include "pins_RAMPS_13.h" + +#define FAN_PIN 9 // (Sprinter config) +#define BEEPER 33 + +#define E2_STEP_PIN 23 +#define E2_DIR_PIN 25 +#define E2_ENABLE_PIN 40 + +#define E3_STEP_PIN 27 +#define E3_DIR_PIN 29 +#define E3_ENABLE_PIN 41 + +#define E4_STEP_PIN 43 +#define E4_DIR_PIN 37 +#define E4_ENABLE_PIN 42 + +#define HEATER_1_PIN -1 +#define HEATER_2_PIN 16 +#define HEATER_3_PIN 17 +#define HEATER_4_PIN 4 +#define HEATER_5_PIN 5 +#define HEATER_6_PIN 6 +#define HEATER_7_PIN 11 + +#define TEMP_2_PIN 12 // ANALOG NUMBERING +#define TEMP_3_PIN 11 // ANALOG NUMBERING +#define TEMP_4_PIN 10 // ANALOG NUMBERING +#define TC1 4 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro +#define TC2 5 // ANALOG NUMBERING Thermo couple on Azteeg X3Pro diff --git a/Marlin/pins_BAM_DICE_DUE.h b/Marlin/pins_BAM_DICE_DUE.h new file mode 100644 index 000000000..c3123d043 --- /dev/null +++ b/Marlin/pins_BAM_DICE_DUE.h @@ -0,0 +1,11 @@ +/** + * BAM&DICE Due (Arduino Mega) pin assignments + */ + +#include "pins_RAMPS_13.h" + +#define FAN_PIN 9 // (Sprinter config) +#define HEATER_1_PIN -1 + +#define TEMP_0_PIN 9 // ANALOG NUMBERING +#define TEMP_1_PIN 11 // ANALOG NUMBERING diff --git a/Marlin/pins_BRAINWAVE.h b/Marlin/pins_BRAINWAVE.h new file mode 100644 index 000000000..3e2b1cf13 --- /dev/null +++ b/Marlin/pins_BRAINWAVE.h @@ -0,0 +1,61 @@ +/** + * Brainwave 1.0 pin assignments (AT90USB646) + * + * Requires hardware bundle for Arduino: + * https://github.com/unrepentantgeek/brainwave-arduino + */ + +#ifndef __AVR_AT90USB646__ + #error Oops! Make sure you have 'Brainwave' selected from the 'Tools -> Boards' menu. +#endif + +#define AT90USB 646 // Disable MarlinSerial etc. + +#define X_STEP_PIN 27 +#define X_DIR_PIN 29 +#define X_ENABLE_PIN 28 +#define X_STOP_PIN 7 +#define X_ATT_PIN 26 + +#define Y_STEP_PIN 31 +#define Y_DIR_PIN 33 +#define Y_ENABLE_PIN 32 +#define Y_STOP_PIN 6 +#define Y_ATT_PIN 30 + +#define Z_STEP_PIN 17 +#define Z_DIR_PIN 19 +#define Z_ENABLE_PIN 18 +#define Z_STOP_PIN 5 +#define Z_ATT_PIN 16 + +#define E0_STEP_PIN 21 +#define E0_DIR_PIN 23 +#define E0_ENABLE_PIN 22 +#define E0_ATT_PIN 20 + +#define HEATER_0_PIN 4 // Extruder +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 38 // Bed +#define FAN_PIN 3 // Fan + +#define TEMP_0_PIN 7 // Extruder / Analog pin numbering +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 6 // Bed / Analog pin numbering + +#define SDPOWER -1 +#define SDSS -1 +#define LED_PIN 39 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define ALARM_PIN -1 + +#ifndef SDSUPPORT + // these pins are defined in the SD library if building with SD support + #define SCK_PIN 9 + #define MISO_PIN 11 + #define MOSI_PIN 10 +#endif + diff --git a/Marlin/pins_CHEAPTRONIC.h b/Marlin/pins_CHEAPTRONIC.h new file mode 100644 index 000000000..dbf53a7e2 --- /dev/null +++ b/Marlin/pins_CHEAPTRONIC.h @@ -0,0 +1,89 @@ +/** + * Cheaptronic v1.0 pin assignments + */ + +#ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +// X motor stepper +#define X_STEP_PIN 14 +#define X_DIR_PIN 15 +#define X_ENABLE_PIN 24 + +// X endstop +#define X_MIN_PIN 3 +#define X_MAX_PIN -1 + +// Y motor stepper +#define Y_STEP_PIN 35 +#define Y_DIR_PIN 36 +#define Y_ENABLE_PIN 31 + +// Y endstop +#define Y_MIN_PIN 2 +#define Y_MAX_PIN -1 + +// Z motor stepper +#define Z_STEP_PIN 40 +#define Z_DIR_PIN 41 +#define Z_ENABLE_PIN 37 + +// Z endstop +#define Z_MIN_PIN 5 +#define Z_MAX_PIN -1 + +// Extruder 0 stepper +#define E0_STEP_PIN 26 +#define E0_DIR_PIN 28 +#define E0_ENABLE_PIN 25 + +// Extruder 1 stepper +#define E1_STEP_PIN 33 +#define E1_DIR_PIN 34 +#define E1_ENABLE_PIN 30 + +#define SDPOWER -1 +#define SDSS -1 +#define LED_PIN -1 + +// FAN +#define FAN_PIN -1 + +#define PS_ON_PIN -1 +#define KILL_PIN -1 + +#define HEATER_0_PIN 19 // EXTRUDER 1 +#define HEATER_1_PIN 23 // EXTRUDER 2 +// HeatedBad +#define HEATER_BED_PIN 22 +// Cheaptronic v1.0 hasent EXTRUDER 3 +#define HEATER_2_PIN -1 + +// Temperature sensors +#define TEMP_0_PIN 15 +#define TEMP_1_PIN 14 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 13 + +// Cheaptronic v1.0 doesn't support LCD +#define LCD_PINS_RS -1 +#define LCD_PINS_ENABLE -1 +#define LCD_PINS_D4 -1 +#define LCD_PINS_D5 -1 +#define LCD_PINS_D6 -1 +#define LCD_PINS_D7 -1 + +// Cheaptronic v1.0 doesn't support keypad +#define BTN_EN1 -1 +#define BTN_EN2 -1 +#define BTN_ENC -1 + +#define BLEN_C 2 +#define BLEN_B 1 +#define BLEN_A 0 + +// Cheaptronic v1.0 does not use this port +#define SDCARDDETECT -1 diff --git a/Marlin/pins_DUEMILANOVE_328P.h b/Marlin/pins_DUEMILANOVE_328P.h new file mode 100644 index 000000000..9e4705584 --- /dev/null +++ b/Marlin/pins_DUEMILANOVE_328P.h @@ -0,0 +1,43 @@ +/** + * Duemilanove w/ ATMega328P pin assignments + */ + +#ifndef __AVR_ATmega328P__ + #error Oops! Make sure you have 'Arduino Duemilanove w/ ATMega328' selected from the 'Tools -> Boards' menu. +#endif + +#define X_STEP_PIN 19 +#define X_DIR_PIN 18 +#define X_ENABLE_PIN -1 +#define X_STOP_PIN 17 + +#define Y_STEP_PIN 10 +#define Y_DIR_PIN 7 +#define Y_ENABLE_PIN -1 +#define Y_STOP_PIN 8 + +#define Z_STEP_PIN 13 +#define Z_DIR_PIN 3 +#define Z_ENABLE_PIN 2 +#define Z_STOP_PIN 4 + +#define E0_STEP_PIN 11 +#define E0_DIR_PIN 12 +#define E0_ENABLE_PIN -1 + +#define SDPOWER -1 +#define SDSS -1 +#define LED_PIN -1 +#define FAN_PIN 5 +#define PS_ON_PIN -1 +#define KILL_PIN -1 + +#define HEATER_0_PIN 6 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define HEATER_BED_PIN -1 +#define TEMP_BED_PIN -1 + diff --git a/Marlin/pins_ELEFU_3.h b/Marlin/pins_ELEFU_3.h new file mode 100644 index 000000000..e0e0a5096 --- /dev/null +++ b/Marlin/pins_ELEFU_3.h @@ -0,0 +1,110 @@ +/** + * Elefu RA Board Pin Assignments + */ + +#ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define X_STEP_PIN 49 +#define X_DIR_PIN 13 +#define X_ENABLE_PIN 48 +#define X_MIN_PIN 35 +#define X_MAX_PIN 34 + +#define Y_STEP_PIN 11 +#define Y_DIR_PIN 9 +#define Y_ENABLE_PIN 12 +#define Y_MIN_PIN 33 +#define Y_MAX_PIN 32 + +#define Z_STEP_PIN 7 +#define Z_DIR_PIN 6 +#define Z_ENABLE_PIN 8 +#define Z_MIN_PIN 31 +#define Z_MAX_PIN 30 + +#define E2_STEP_PIN 43 +#define E2_DIR_PIN 47 +#define E2_ENABLE_PIN 42 + +#define E1_STEP_PIN 18 +#define E1_DIR_PIN 19 +#define E1_ENABLE_PIN 38 + +#define E0_STEP_PIN 40 +#define E0_DIR_PIN 41 +#define E0_ENABLE_PIN 37 + +#define SDPOWER -1 +#define LED_PIN -1 //Use +12V Aux port for LED Ring + +#define FAN_PIN 16 //5V PWM + +#define PS_ON_PIN 10 //Set to -1 if using a manual switch on the PWRSW Connector +#define SLEEP_WAKE_PIN 26 //This feature still needs work + +#define HEATER_0_PIN 45 //12V PWM1 +#define HEATER_1_PIN 46 //12V PWM2 +#define HEATER_2_PIN 17 //12V PWM3 +#define HEATER_BED_PIN 44 //DOUBLE 12V PWM +#define TEMP_0_PIN 3 //ANALOG NUMBERING +#define TEMP_1_PIN 2 //ANALOG NUMBERING +#define TEMP_2_PIN 1 //ANALOG NUMBERING +#define TEMP_BED_PIN 0 //ANALOG NUMBERING + +#define BEEPER 36 + +#define KILL_PIN -1 + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +#define PHOTOGRAPH_PIN 29 + +#ifdef RA_CONTROL_PANEL + + #define SDSS 53 + #define SDCARDDETECT 28 + + #define BTN_EN1 14 + #define BTN_EN2 39 + #define BTN_ENC 15 //the click + + #define BLEN_C 2 + #define BLEN_B 1 + #define BLEN_A 0 + +#endif // RA_CONTROL_PANEL + +#ifdef RA_DISCO + //variables for which pins the TLC5947 is using + #define TLC_CLOCK_PIN 25 + #define TLC_BLANK_PIN 23 + #define TLC_XLAT_PIN 22 + #define TLC_DATA_PIN 24 + + //We also need to define pin to port number mapping for the 2560 to match the pins listed above. If you change the TLC pins, update this as well per the 2560 datasheet! + //This currently only works with the RA Board. + #define TLC_CLOCK_BIT 3 //bit 3 on port A + #define TLC_CLOCK_PORT &PORTA //bit 3 on port A + + #define TLC_BLANK_BIT 1 //bit 1 on port A + #define TLC_BLANK_PORT &PORTA //bit 1 on port A + + #define TLC_DATA_BIT 2 //bit 2 on port A + #define TLC_DATA_PORT &PORTA //bit 2 on port A + + #define TLC_XLAT_BIT 0 //bit 0 on port A + #define TLC_XLAT_PORT &PORTA //bit 0 on port A + + //change this to match your situation. Lots of TLCs takes up the arduino SRAM very quickly, so be careful + //Leave it at at least 1 if you have enabled RA_LIGHTING + //The number of TLC5947 boards chained together for use with the animation, additional ones will repeat the animation on them, but are not individually addressable and mimic those before them. You can leave the default at 2 even if you only have 1 TLC5947 module. + #define NUM_TLCS 2 + + //These TRANS_ARRAY values let you change the order the LEDs on the lighting modules will animate for chase functions. + //Modify them according to your specific situation. + //NOTE: the array should be 8 long for every TLC you have. These defaults assume (2) TLCs. + #define TRANS_ARRAY {0, 1, 2, 3, 4, 5, 6, 7, 15, 14, 13, 12, 11, 10, 9, 8} //forwards + //#define TRANS_ARRAY {7, 6, 5, 4, 3, 2, 1, 0, 8, 9, 10, 11, 12, 13, 14, 15} //backwards +#endif // RA_DISCO diff --git a/Marlin/pins_GEN3_MONOLITHIC.h b/Marlin/pins_GEN3_MONOLITHIC.h new file mode 100644 index 000000000..17a76883b --- /dev/null +++ b/Marlin/pins_GEN3_MONOLITHIC.h @@ -0,0 +1,61 @@ +/** + * Gen3 Monolithic Electronics pin assignments + */ + +#ifndef __AVR_ATmega644P__ + #error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. +#endif + +#define DEBUG_PIN 0 + +// x axis +#define X_STEP_PIN 15 +#define X_DIR_PIN 18 +#define X_MIN_PIN 20 +// Alex Checar #define X_STOP_PIN 20 +#define X_ENABLE_PIN 24 // actually uses Y_enable_pin +#define X_MAX_PIN -1 + +// y axis +#define Y_STEP_PIN 23 +#define Y_DIR_PIN 22 +#define Y_MIN_PIN 25 +// Alex Checar #define Y_STOP_PIN 25 +#define Y_ENABLE_PIN 24 // shared with X_enable_pin +#define Y_MAX_PIN -1 + +// z axis +#define Z_STEP_PIN 27 +#define Z_DIR_PIN 28 +#define Z_MIN_PIN 30 +// Alex Checar #define Z_STOP_PIN 30 +#define Z_ENABLE_PIN 29 +#define Z_MAX_PIN -1 + +// extruder pins +#define E0_STEP_PIN 12 +#define E0_DIR_PIN 17 +#define E0_ENABLE_PIN 3 + +#define HEATER_0_PIN 16 +#define TEMP_0_PIN 0 + +#define FAN_PIN -1 + +// bed pins +#define HEATER_BED_PIN -1 +#define TEMP_BED_PIN -1 + + +#define SDSS -1 +#define SDPOWER -1 +#define LED_PIN -1 + +// pin for controlling the PSU. +#define PS_ON_PIN 14 // Alex, Do this work on the card? + +// Alex extras from Gen3+ +#define KILL_PIN -1 +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define HEATER_2_PIN -1 diff --git a/Marlin/pins_GEN3_PLUS.h b/Marlin/pins_GEN3_PLUS.h new file mode 100644 index 000000000..4d216bb8c --- /dev/null +++ b/Marlin/pins_GEN3_PLUS.h @@ -0,0 +1,45 @@ +/** + * Gen3+ pin assignments + */ + +#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega1284P__) + #error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. +#endif + +#define X_STEP_PIN 15 +#define X_DIR_PIN 18 +#define X_STOP_PIN 20 + +#define Y_STEP_PIN 23 +#define Y_DIR_PIN 22 +#define Y_STOP_PIN 25 + +#define Z_STEP_PIN 27 +#define Z_DIR_PIN 28 +#define Z_STOP_PIN 30 + +#define E0_STEP_PIN 17 +#define E0_DIR_PIN 21 + +#define LED_PIN -1 + +#define FAN_PIN -1 + +#define PS_ON_PIN 14 +#define KILL_PIN -1 + +#define HEATER_0_PIN 12 // (extruder) + +#define HEATER_BED_PIN 16 // (bed) +#define X_ENABLE_PIN 19 +#define Y_ENABLE_PIN 24 +#define Z_ENABLE_PIN 29 +#define E0_ENABLE_PIN 13 + +#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder) +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 5 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) +#define SDPOWER -1 +#define SDSS 4 +#define HEATER_2_PIN -1 diff --git a/Marlin/pins_GEN6.h b/Marlin/pins_GEN6.h new file mode 100644 index 000000000..ebbf3237c --- /dev/null +++ b/Marlin/pins_GEN6.h @@ -0,0 +1,62 @@ +/** + * Gen6 pin assignments + */ + +#ifndef __AVR_ATmega644P__ + #ifndef __AVR_ATmega1284P__ + #error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. + #endif +#endif + +//x axis pins +#define X_STEP_PIN 15 +#define X_DIR_PIN 18 +#define X_ENABLE_PIN 19 +#define X_STOP_PIN 20 + +//y axis pins +#define Y_STEP_PIN 23 +#define Y_DIR_PIN 22 +#define Y_ENABLE_PIN 24 +#define Y_STOP_PIN 25 + +//z axis pins +#define Z_STEP_PIN 27 +#define Z_DIR_PIN 28 +#define Z_ENABLE_PIN 29 +#define Z_STOP_PIN 30 + +//extruder pins +#define E0_STEP_PIN 4 //Edited @ EJE Electronics 20100715 +#define E0_DIR_PIN 2 //Edited @ EJE Electronics 20100715 +#define E0_ENABLE_PIN 3 //Added @ EJE Electronics 20100715 +#define TEMP_0_PIN 5 //changed @ rkoeppl 20110410 +#define TEMP_1_PIN -1 //changed @ rkoeppl 20110410 + + +#define TEMP_2_PIN -1 //changed @ rkoeppl 20110410 +#define HEATER_0_PIN 14 //changed @ rkoeppl 20110410 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 + +#if MB(GEN6) + #define HEATER_BED_PIN -1 //changed @ rkoeppl 20110410 + #define TEMP_BED_PIN -1 //changed @ rkoeppl 20110410 +#else + #define HEATER_BED_PIN 1 //changed @ rkoeppl 20110410 + #define TEMP_BED_PIN 0 //changed @ rkoeppl 20110410 +#endif + +#define SDPOWER -1 +#define SDSS 17 +#define LED_PIN -1 //changed @ rkoeppl 20110410 +#define FAN_PIN -1 //changed @ rkoeppl 20110410 +#define PS_ON_PIN -1 //changed @ rkoeppl 20110410 +#define KILL_PIN -1 //changed @ drakelive 20120830 +//our pin for debugging. + +#define DEBUG_PIN 0 + +//our RS485 pins +#define TX_ENABLE_PIN 12 +#define RX_ENABLE_PIN 13 diff --git a/Marlin/pins_GEN6_DELUXE.h b/Marlin/pins_GEN6_DELUXE.h new file mode 100644 index 000000000..c1ffc3801 --- /dev/null +++ b/Marlin/pins_GEN6_DELUXE.h @@ -0,0 +1,5 @@ +/** + * Gen6 Deluxe pin assignments + */ + +#include "pins_GEN6.h" diff --git a/Marlin/pins_GEN7_12.h b/Marlin/pins_GEN7_12.h new file mode 100644 index 000000000..b2e9c7906 --- /dev/null +++ b/Marlin/pins_GEN7_12.h @@ -0,0 +1,72 @@ +/** + * Gen7 v1.1, v1.2, v1.3 pin assignments + */ + +#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) + #error Oops! Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu. +#endif + +#ifndef GEN7_VERSION + #define GEN7_VERSION 12 // v1.x +#endif + +//x axis pins +#define X_STEP_PIN 19 +#define X_DIR_PIN 18 +#define X_ENABLE_PIN 24 +#define X_STOP_PIN 7 + +//y axis pins +#define Y_STEP_PIN 23 +#define Y_DIR_PIN 22 +#define Y_ENABLE_PIN 24 +#define Y_STOP_PIN 5 + +//z axis pins +#define Z_STEP_PIN 26 +#define Z_DIR_PIN 25 +#define Z_ENABLE_PIN 24 +#define Z_MIN_PIN 1 +#define Z_MAX_PIN 0 + +//extruder pins +#define E0_STEP_PIN 28 +#define E0_DIR_PIN 27 +#define E0_ENABLE_PIN 24 + +#define TEMP_0_PIN 1 +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 2 + +#define HEATER_0_PIN 4 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 3 + +#define KILL_PIN -1 + +#define SDPOWER -1 +#define SDSS -1 // SCL pin of I2C header +#define LED_PIN -1 + +#if (GEN7_VERSION >= 13) + // Gen7 v1.3 removed the fan pin + #define FAN_PIN -1 +#else + #define FAN_PIN 31 +#endif + +#define PS_ON_PIN 15 + +//All these generations of Gen7 supply thermistor power +//via PS_ON, so ignore bad thermistor readings +#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + +//our pin for debugging. +#define DEBUG_PIN 0 + +//our RS485 pins +#define TX_ENABLE_PIN 12 +#define RX_ENABLE_PIN 13 + diff --git a/Marlin/pins_GEN7_13.h b/Marlin/pins_GEN7_13.h new file mode 100644 index 000000000..4acca7566 --- /dev/null +++ b/Marlin/pins_GEN7_13.h @@ -0,0 +1,8 @@ +/** + * Gen7 v1.3 pin assignments + */ + +#define MOTHERBOARD BOARD_GEN7_12 +#define GEN7_VERSION 13 // v1.3 + +#include "pins_GEN7_12.h" diff --git a/Marlin/pins_GEN7_14.h b/Marlin/pins_GEN7_14.h new file mode 100644 index 000000000..41e1ac79a --- /dev/null +++ b/Marlin/pins_GEN7_14.h @@ -0,0 +1,60 @@ +/** + * Gen7 v1.4 pin assignments + */ + +#define GEN7_VERSION 14 // v1.4 + +#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) + #error Oops! Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu. +#endif + +//x axis pins +#define X_STEP_PIN 29 +#define X_DIR_PIN 28 +#define X_ENABLE_PIN 25 +#define X_STOP_PIN 0 + +//y axis pins +#define Y_STEP_PIN 27 +#define Y_DIR_PIN 26 +#define Y_ENABLE_PIN 25 +#define Y_STOP_PIN 1 + +//z axis pins +#define Z_STEP_PIN 23 +#define Z_DIR_PIN 22 +#define Z_ENABLE_PIN 25 +#define Z_STOP_PIN 2 + +//extruder pins +#define E0_STEP_PIN 19 +#define E0_DIR_PIN 18 +#define E0_ENABLE_PIN 25 + +#define TEMP_0_PIN 1 +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 0 + +#define HEATER_0_PIN 4 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 3 + +#define KILL_PIN -1 + +#define SDPOWER -1 +#define SDSS -1 // SCL pin of I2C header +#define LED_PIN -1 + +#define FAN_PIN -1 + +#define PS_ON_PIN 15 + +//our pin for debugging. +#define DEBUG_PIN 0 + +//our RS485 pins +#define TX_ENABLE_PIN 12 +#define RX_ENABLE_PIN 13 + diff --git a/Marlin/pins_GEN7_CUSTOM.h b/Marlin/pins_GEN7_CUSTOM.h new file mode 100644 index 000000000..a8626ecef --- /dev/null +++ b/Marlin/pins_GEN7_CUSTOM.h @@ -0,0 +1,76 @@ +/** + * Gen7 Alfons3 board pin assignments + * + * These Pins are assigned for the modified GEN7 Board from Alfons3. + * Please review the pins and adjust them for your needs. + */ + +#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) + #error Oops! Make sure you have 'Gen7' selected from the 'Tools -> Boards' menu. +#endif + +//x axis pins +#define X_STEP_PIN 21 // different from standard GEN7 +#define X_DIR_PIN 20 // different from standard GEN7 +#define X_ENABLE_PIN 24 +#define X_STOP_PIN 0 + +//y axis pins +#define Y_STEP_PIN 23 +#define Y_DIR_PIN 22 +#define Y_ENABLE_PIN 24 +#define Y_STOP_PIN 1 + +//z axis pins +#define Z_STEP_PIN 26 +#define Z_DIR_PIN 25 +#define Z_ENABLE_PIN 24 +#define Z_STOP_PIN 2 + +//extruder pins +#define E0_STEP_PIN 28 +#define E0_DIR_PIN 27 +#define E0_ENABLE_PIN 24 + +#define TEMP_0_PIN 2 +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) + +#define HEATER_0_PIN 4 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 3 // (bed) + +#define SDPOWER -1 +#define SDSS 31 // SCL pin of I2C header || CS Pin for SD Card support +#define LED_PIN -1 + +#define FAN_PIN -1 +#define PS_ON_PIN 19 +//our pin for debugging. + +#define DEBUG_PIN -1 + +//our RS485 pins +//#define TX_ENABLE_PIN 12 +//#define RX_ENABLE_PIN 13 + +#define BEEPER -1 +#define SDCARDDETECT -1 +#define SUICIDE_PIN -1 //has to be defined; otherwise Power_off doesn't work + +#define KILL_PIN -1 +//Pins for 4bit LCD Support +#define LCD_PINS_RS 18 +#define LCD_PINS_ENABLE 17 +#define LCD_PINS_D4 16 +#define LCD_PINS_D5 15 +#define LCD_PINS_D6 13 +#define LCD_PINS_D7 14 + +//buttons are directly attached +#define BTN_EN1 11 +#define BTN_EN2 10 +#define BTN_ENC 12 //the click + diff --git a/Marlin/pins_HEPHESTOS.h b/Marlin/pins_HEPHESTOS.h new file mode 100644 index 000000000..8fc5ba643 --- /dev/null +++ b/Marlin/pins_HEPHESTOS.h @@ -0,0 +1,8 @@ +/** + * bq Prusa i3 Hephestos – Arduino Mega with RAMPS v1.3/1.4 pin assignments + */ + +#include "pins_RAMPS_13.h" + +#define FAN_PIN 9 // (Sprinter config) +#define HEATER_1_PIN -1 diff --git a/Marlin/pins_K8200.h b/Marlin/pins_K8200.h new file mode 100644 index 000000000..1d34547ad --- /dev/null +++ b/Marlin/pins_K8200.h @@ -0,0 +1,6 @@ +/** + * K8200 Arduino Mega with RAMPS v1.3 pin assignments + * Identical to 3DRAG + */ + +#include "pins_3DRAG.h" diff --git a/Marlin/pins_LEAPFROG.h b/Marlin/pins_LEAPFROG.h new file mode 100644 index 000000000..52ca61939 --- /dev/null +++ b/Marlin/pins_LEAPFROG.h @@ -0,0 +1,62 @@ +/** + * Leapfrog Driver board pin assignments + */ + +#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define X_STEP_PIN 28 +#define X_DIR_PIN 63 +#define X_ENABLE_PIN 29 +#define X_MIN_PIN 47 +#define X_MAX_PIN 2 //Max endstops default to disabled "-1", set to commented value to enable. + +#define Y_STEP_PIN 14 // A6 +#define Y_DIR_PIN 15 // A0 +#define Y_ENABLE_PIN 39 +#define Y_MIN_PIN 48 +#define Y_MAX_PIN 15 + +#define Z_STEP_PIN 31 // A2 +#define Z_DIR_PIN 32 // A6 +#define Z_ENABLE_PIN 30 // A1 +#define Z_MIN_PIN 49 +#define Z_MAX_PIN -1 + +#define E0_STEP_PIN 34 //34 +#define E0_DIR_PIN 35 //35 +#define E0_ENABLE_PIN 33 //33 + +#define E1_STEP_PIN 37 //37 +#define E1_DIR_PIN 40 //40 +#define E1_ENABLE_PIN 36 //36 + +#define Y2_STEP_PIN 37 +#define Y2_DIR_PIN 40 +#define Y2_ENABLE_PIN 36 + +#define Z2_STEP_PIN 37 +#define Z2_DIR_PIN 40 +#define Z2_ENABLE_PIN 36 + +#define SDPOWER -1 +#define SDSS 11 +#define SDCARDDETECT -1 // 10 optional also used as mode pin +#define LED_PIN 13 +#define FAN_PIN 7 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define SOL1_PIN 16 +#define SOL2_PIN 17 + +#define HEATER_0_PIN 9 +#define HEATER_1_PIN 8 // 12 +#define HEATER_2_PIN 11 //-1 // 13 +#define TEMP_0_PIN 13 //D27 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#define TEMP_1_PIN 15 // 1 +#define TEMP_2_PIN -1 // 2 +#define HEATER_BED_PIN 10 // 14/15 +#define TEMP_BED_PIN 14 // 1,2 or I2C +/* Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31) */ + diff --git a/Marlin/pins_MEGATRONICS.h b/Marlin/pins_MEGATRONICS.h new file mode 100644 index 000000000..413906eef --- /dev/null +++ b/Marlin/pins_MEGATRONICS.h @@ -0,0 +1,86 @@ +/** + * MegaTronics pin assignments + */ + +#ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +#define X_STEP_PIN 26 +#define X_DIR_PIN 28 +#define X_ENABLE_PIN 24 +#define X_MIN_PIN 41 +#define X_MAX_PIN 37 + +#define Y_STEP_PIN 60 // A6 +#define Y_DIR_PIN 61 // A7 +#define Y_ENABLE_PIN 22 +#define Y_MIN_PIN 14 +#define Y_MAX_PIN 15 + +#define Z_STEP_PIN 54 // A0 +#define Z_DIR_PIN 55 // A1 +#define Z_ENABLE_PIN 56 // A2 +#define Z_MIN_PIN 18 +#define Z_MAX_PIN 19 + +#define E0_STEP_PIN 31 +#define E0_DIR_PIN 32 +#define E0_ENABLE_PIN 38 + +#define E1_STEP_PIN 34 +#define E1_DIR_PIN 36 +#define E1_ENABLE_PIN 30 + +#define SDPOWER -1 +#define SDSS 53 +#define LED_PIN 13 + + +#define FAN_PIN 7 // IO pin. Buffer needed +#define PS_ON_PIN 12 +#define KILL_PIN -1 + +#define HEATER_0_PIN 9 // EXTRUDER 1 +#define HEATER_1_PIN 8 // EXTRUDER 2 (FAN On Sprinter) +#define HEATER_2_PIN -1 + +#if TEMP_SENSOR_0 == -1 +#define TEMP_0_PIN 8 // ANALOG NUMBERING +#else +#define TEMP_0_PIN 13 // ANALOG NUMBERING + +#endif + +#define TEMP_1_PIN 15 // ANALOG NUMBERING +#define TEMP_2_PIN -1 // ANALOG NUMBERING +#define HEATER_BED_PIN 10 // BED +#define TEMP_BED_PIN 14 // ANALOG NUMBERING + +#define BEEPER 33 // Beeper on AUX-4 + + +#if defined(ULTRA_LCD) && defined(NEWPANEL) + //arduino pin which triggers an piezzo beeper + + #define LCD_PINS_RS 16 + #define LCD_PINS_ENABLE 17 + #define LCD_PINS_D4 23 + #define LCD_PINS_D5 25 + #define LCD_PINS_D6 27 + #define LCD_PINS_D7 29 + + //buttons are directly attached using AUX-2 + #define BTN_EN1 59 + #define BTN_EN2 64 + #define BTN_ENC 43 //the click + + #define BLEN_C 2 + #define BLEN_B 1 + #define BLEN_A 0 + + #define SDCARDDETECT -1 // Ramps does not use this port + +#endif // ULTRA_LCD && NEWPANEL diff --git a/Marlin/pins_MEGATRONICS_1.h b/Marlin/pins_MEGATRONICS_1.h new file mode 100644 index 000000000..1592dfe42 --- /dev/null +++ b/Marlin/pins_MEGATRONICS_1.h @@ -0,0 +1,82 @@ +/** + * Minitronics v1.0 pin assignments + */ + +#ifndef __AVR_ATmega1281__ + #error Oops! Make sure you have 'Minitronics' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +#define X_STEP_PIN 48 +#define X_DIR_PIN 47 +#define X_ENABLE_PIN 49 +#define X_MIN_PIN 5 +#define X_MAX_PIN 2 + +#define Y_STEP_PIN 39 // A6 +#define Y_DIR_PIN 40 // A0 +#define Y_ENABLE_PIN 38 +#define Y_MIN_PIN 2 +#define Y_MAX_PIN 15 + +#define Z_STEP_PIN 42 // A2 +#define Z_DIR_PIN 43 // A6 +#define Z_ENABLE_PIN 41 // A1 +#define Z_MIN_PIN 6 +#define Z_MAX_PIN -1 + +#define E0_STEP_PIN 45 +#define E0_DIR_PIN 44 +#define E0_ENABLE_PIN 27 + +#define E1_STEP_PIN 36 +#define E1_DIR_PIN 35 +#define E1_ENABLE_PIN 37 + +#define E2_STEP_PIN -1 +#define E2_DIR_PIN -1 +#define E2_ENABLE_PIN -1 + +#define SDPOWER -1 +#define SDSS 16 +#define LED_PIN 46 + +#define FAN_PIN 9 +#define FAN2_PIN -1 +#define PS_ON_PIN -1 +#define KILL_PIN -1 + +#define HEATER_0_PIN 7 // EXTRUDER 1 +#define HEATER_1_PIN 8 // EXTRUDER 2 +#define HEATER_2_PIN -1 + + +#define TEMP_0_PIN 7 // ANALOG NUMBERING +#define TEMP_1_PIN 6 // ANALOG NUMBERING +#define TEMP_2_PIN -1 // ANALOG NUMBERING + +#define HEATER_BED_PIN 3 // BED +#define TEMP_BED_PIN 6 // ANALOG NUMBERING + +#define BEEPER -1 + + +#define LCD_PINS_RS -1 +#define LCD_PINS_ENABLE -1 +#define LCD_PINS_D4 -1 +#define LCD_PINS_D5 -1 +#define LCD_PINS_D6 -1 +#define LCD_PINS_D7 -1 + + +// Buttons are directly attached using keypad +#define BTN_EN1 -1 +#define BTN_EN2 -1 +#define BTN_ENC -1 // the click + +#define BLEN_C 2 +#define BLEN_B 1 +#define BLEN_A 0 + +#define SDCARDDETECT -1 // Megatronics does not use this port diff --git a/Marlin/pins_MEGATRONICS_2.h b/Marlin/pins_MEGATRONICS_2.h new file mode 100644 index 000000000..b05eaaa7a --- /dev/null +++ b/Marlin/pins_MEGATRONICS_2.h @@ -0,0 +1,97 @@ +/** + * MegaTronics v2.0 pin assignments + */ + +#ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +#define X_STEP_PIN 26 +#define X_DIR_PIN 27 +#define X_ENABLE_PIN 25 +#define X_MIN_PIN 37 +#define X_MAX_PIN 40 + +#define Y_STEP_PIN 4 // A6 +#define Y_DIR_PIN 54 // A0 +#define Y_ENABLE_PIN 5 +#define Y_MIN_PIN 41 +#define Y_MAX_PIN 38 + +#define Z_STEP_PIN 56 // A2 +#define Z_DIR_PIN 60 // A6 +#define Z_ENABLE_PIN 55 // A1 +#define Z_MIN_PIN 18 +#define Z_MAX_PIN 19 + +#define E0_STEP_PIN 35 +#define E0_DIR_PIN 36 +#define E0_ENABLE_PIN 34 + +#define E1_STEP_PIN 29 +#define E1_DIR_PIN 39 +#define E1_ENABLE_PIN 28 + +#define E2_STEP_PIN 23 +#define E2_DIR_PIN 24 +#define E2_ENABLE_PIN 22 + +#define SDPOWER -1 +#define SDSS 53 +#define LED_PIN 13 + +#define FAN_PIN 7 +#define FAN2_PIN 6 +#define PS_ON_PIN 12 +#define KILL_PIN -1 + +#define HEATER_0_PIN 9 // EXTRUDER 1 +#define HEATER_1_PIN 8 // EXTRUDER 2 +#define HEATER_2_PIN -1 + +#if TEMP_SENSOR_0 == -1 + #define TEMP_0_PIN 4 // ANALOG NUMBERING +#else + #define TEMP_0_PIN 13 // ANALOG NUMBERING +#endif + + +#if TEMP_SENSOR_1 == -1 + #define TEMP_1_PIN 8 // ANALOG NUMBERING +#else + #define TEMP_1_PIN 15 // ANALOG NUMBERING +#endif + +#define TEMP_2_PIN -1 // ANALOG NUMBERING + +#define HEATER_BED_PIN 10 // BED + +#if TEMP_SENSOR_BED == -1 + #define TEMP_BED_PIN 8 // ANALOG NUMBERING +#else + #define TEMP_BED_PIN 14 // ANALOG NUMBERING +#endif + +#define BEEPER 64 + + +#define LCD_PINS_RS 14 +#define LCD_PINS_ENABLE 15 +#define LCD_PINS_D4 30 +#define LCD_PINS_D5 31 +#define LCD_PINS_D6 32 +#define LCD_PINS_D7 33 + + +// Buttons are directly attached using keypad +#define BTN_EN1 61 +#define BTN_EN2 59 +#define BTN_ENC 43 //the click + +#define BLEN_C 2 +#define BLEN_B 1 +#define BLEN_A 0 + +#define SDCARDDETECT -1 // Megatronics does not use this port diff --git a/Marlin/pins_MEGATRONICS_3.h b/Marlin/pins_MEGATRONICS_3.h new file mode 100644 index 000000000..04a730670 --- /dev/null +++ b/Marlin/pins_MEGATRONICS_3.h @@ -0,0 +1,97 @@ +/** + * MegaTronics v3.0 pin assignments + */ + +#ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +// Servo support +#ifdef NUM_SERVOS + #define SERVO0_PIN 46 //AUX3-6 + #if NUM_SERVOS > 1 + #define SERVO1_PIN 47 //AUX3-5 + #if NUM_SERVOS > 2 + #define SERVO2_PIN 48 //AUX3-4 + #if NUM_SERVOS > 3 + #define SERVO2_PIN 49 //AUX3-3 + #endif + #endif + #endif +#endif + +#define X_STEP_PIN 58 +#define X_DIR_PIN 57 +#define X_ENABLE_PIN 59 +#define X_MIN_PIN 37 +#define X_MAX_PIN 40 // 2 // Max endstops default to disabled "-1", set to commented value to enable. + +#define Y_STEP_PIN 5 // A6 +#define Y_DIR_PIN 17 // A0 +#define Y_ENABLE_PIN 4 +#define Y_MIN_PIN 41 +#define Y_MAX_PIN 38 // 15 + +#define Z_STEP_PIN 16 // A2 +#define Z_DIR_PIN 11 // A6 +#define Z_ENABLE_PIN 3 // A1 +#define Z_MIN_PIN 18 +#define Z_MAX_PIN 19 + +#define E0_STEP_PIN 28 +#define E0_DIR_PIN 27 +#define E0_ENABLE_PIN 29 + +#define E1_STEP_PIN 25 +#define E1_DIR_PIN 24 +#define E1_ENABLE_PIN 26 + +#define E2_STEP_PIN 22 +#define E2_DIR_PIN 60 +#define E2_ENABLE_PIN 23 + +#define SDPOWER -1 +#define SDSS 53 +#define LED_PIN 13 + +#define PS_ON_PIN 12 +#define KILL_PIN -1 + +#define HEATER_0_PIN 2 +#define HEATER_1_PIN 9 +#define HEATER_2_PIN 8 +#define HEATER_BED_PIN 10 +#define FAN_PIN 6 +#define FAN2_PIN 7 + +#define TEMP_0_PIN (TEMP_SENSOR_0 == -1 ? 11 : 15) // ANALOG NUMBERING +#define TEMP_1_PIN (TEMP_SENSOR_1 == -1 ? 10 : 13) // ANALOG NUMBERING +#define TEMP_2_PIN (TEMP_SENSOR_2 == -1 ? 9 : 12) // ANALOG NUMBERING +#define TEMP_BED_PIN (TEMP_SENSOR_BED == -1 ? 8 : 14) // ANALOG NUMBERING + +#define BEEPER 61 + +#define LCD_PINS_RS 32 +#define LCD_PINS_ENABLE 31 +#define LCD_PINS_D4 14 +#define LCD_PINS_D5 30 +#define LCD_PINS_D6 39 +#define LCD_PINS_D7 15 + +#define SHIFT_CLK 43 +#define SHIFT_LD 35 +#define SHIFT_OUT 34 +#define SHIFT_EN 44 + +// Buttons are directly attached using keypad +#define BTN_EN1 44 +#define BTN_EN2 45 +#define BTN_ENC 33 // the click + +#define BLEN_C 2 +#define BLEN_B 1 +#define BLEN_A 0 + +#define SDCARDDETECT -1 // Megatronics does not use this port diff --git a/Marlin/pins_MELZI.h b/Marlin/pins_MELZI.h new file mode 100644 index 000000000..71c9fa913 --- /dev/null +++ b/Marlin/pins_MELZI.h @@ -0,0 +1,11 @@ +/** + * Melzi pin assignments + */ + +#define SANGUINOLOLU_V_1_2 + +#if defined(__AVR_ATmega1284P__) + #define LARGE_FLASH true +#endif + +#include "pins_SANGUINOLOLU_11.h" diff --git a/Marlin/pins_MELZI_1284.h b/Marlin/pins_MELZI_1284.h new file mode 100644 index 000000000..2c1866672 --- /dev/null +++ b/Marlin/pins_MELZI_1284.h @@ -0,0 +1,15 @@ +/** + * Melzi with ATmega1284 (MaKr3d version) pin assignments + */ + +#define MELZI + +#undef MOTHERBOARD +#define MOTHERBOARD BOARD_SANGUINOLOLU_11 +#define SANGUINOLOLU_V_1_2 + +#if defined(__AVR_ATmega1284P__) + #define LARGE_FLASH true +#endif + +#include "pins_SANGUINOLOLU_11.h" diff --git a/Marlin/pins_OMCA.h b/Marlin/pins_OMCA.h new file mode 100644 index 000000000..26a797362 --- /dev/null +++ b/Marlin/pins_OMCA.h @@ -0,0 +1,91 @@ +/** + * Open Motion controller with enable based extruders (Final!) + * + * ATMega644 + * + * +---\/---+ + * (D 0) PB0 1| |40 PA0 (AI 0 / D31) + * (D 1) PB1 2| |39 PA1 (AI 1 / D30) + * INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) + * PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) + * PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) + * MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) + * MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) + * SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) + * RST 9| |32 AREF + * VCC 10| |31 GND + * GND 11| |30 AVCC + * XTAL2 12| |29 PC7 (D 23) + * XTAL1 13| |28 PC6 (D 22) + * RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI + * TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO + * INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS + * INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK + * PWM (D 12) PD4 18| |23 PC1 (D 17) SDA + * PWM (D 13) PD5 19| |22 PC0 (D 16) SCL + * PWM (D 14) PD6 20| |21 PD7 (D 15) PWM + * +--------+ + * + * REF http://sanguino.cc/hardware + */ + +#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) + #error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. (Final OMCA board) +#endif + +#define X_STEP_PIN 26 +#define X_DIR_PIN 25 +#define X_ENABLE_PIN 10 +#define X_STOP_PIN 0 + +#define Y_STEP_PIN 28 +#define Y_DIR_PIN 27 +#define Y_ENABLE_PIN 10 +#define Y_STOP_PIN 1 + +#define Z_STEP_PIN 23 +#define Z_DIR_PIN 22 +#define Z_ENABLE_PIN 10 +#define Z_STOP_PIN 2 + +#define E0_STEP_PIN 24 +#define E0_DIR_PIN 21 +#define E0_ENABLE_PIN 10 + +// future proofing +#define __FS 20 +#define __FD 19 +#define __GS 18 +#define __GD 13 + +#define UNUSED_PWM 14 // PWM on LEFT connector + +#define E1_STEP_PIN -1 // 21 +#define E1_DIR_PIN -1 // 20 +#define E1_ENABLE_PIN -1 // 19 + +#define E2_STEP_PIN -1 // 21 +#define E2_DIR_PIN -1 // 20 +#define E2_ENABLE_PIN -1 // 18 + +#define SDPOWER -1 +#define SDSS 11 +#define SDCARDDETECT -1 // 10 optional also used as mode pin +#define LED_PIN -1 +#define FAN_PIN 14 // PWM on MIDDLE connector +#define PS_ON_PIN -1 +#define KILL_PIN -1 + +#define HEATER_0_PIN 3 // DONE PWM on RIGHT connector +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define TEMP_0_PIN 0 // ANALOG INPUT NUMBERING +#define TEMP_1_PIN 1 // ANALOG +#define TEMP_2_PIN -1 // 2 +#define HEATER_BED_PIN 4 +#define TEMP_BED_PIN 2 // 1,2 or I2C + +#define I2C_SCL 16 +#define I2C_SDA 17 diff --git a/Marlin/pins_OMCA_A.h b/Marlin/pins_OMCA_A.h new file mode 100644 index 000000000..857ff7752 --- /dev/null +++ b/Marlin/pins_OMCA_A.h @@ -0,0 +1,78 @@ +/** + * Open Motion controller with enable based extruders (Alpha!) + * + * ATMega644 + * + * +---\/---+ + * (D 0) PB0 1| |40 PA0 (AI 0 / D31) + * (D 1) PB1 2| |39 PA1 (AI 1 / D30) + * INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29) + * PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28) + * PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27) + * MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26) + * MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25) + * SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24) + * RST 9| |32 AREF + * VCC 10| |31 GND + * GND 11| |30 AVCC + * XTAL2 12| |29 PC7 (D 23) + * XTAL1 13| |28 PC6 (D 22) + * RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI + * TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO + * INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS + * INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK + * PWM (D 12) PD4 18| |23 PC1 (D 17) SDA + * PWM (D 13) PD5 19| |22 PC0 (D 16) SCL + * PWM (D 14) PD6 20| |21 PD7 (D 15) PWM + * +--------+ + * + */ + +#ifndef __AVR_ATmega644__ + #error Oops! Make sure you have 'SanguinoA' selected from the 'Tools -> Boards' menu. +#endif + +#define X_STEP_PIN 21 +#define X_DIR_PIN 20 +#define X_ENABLE_PIN 24 +#define X_STOP_PIN 0 + +#define Y_STEP_PIN 23 +#define Y_DIR_PIN 22 +#define Y_ENABLE_PIN 24 +#define Y_STOP_PIN 1 + +#define Z_STEP_PIN 26 +#define Z_DIR_PIN 25 +#define Z_ENABLE_PIN 24 +#define Z_STOP_PIN 2 + +#define E0_STEP_PIN 28 +#define E0_DIR_PIN 27 +#define E0_ENABLE_PIN 24 + +#define E1_STEP_PIN -1 // 19 +#define E1_DIR_PIN -1 // 18 +#define E1_ENABLE_PIN 24 + +#define E2_STEP_PIN -1 // 17 +#define E2_DIR_PIN -1 // 16 +#define E2_ENABLE_PIN 24 + +#define SDPOWER -1 +#define SDSS 11 +#define SDCARDDETECT -1 // 10 optional also used as mode pin +#define LED_PIN -1 +#define FAN_PIN 3 +#define PS_ON_PIN -1 +#define KILL_PIN -1 + +#define HEATER_0_PIN 4 +#define HEATER_1_PIN -1 // 12 +#define HEATER_2_PIN -1 // 13 +#define TEMP_0_PIN 0 //D27 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#define TEMP_1_PIN -1 // 1 +#define TEMP_2_PIN -1 // 2 +#define HEATER_BED_PIN -1 // 14/15 +#define TEMP_BED_PIN -1 // 1,2 or I2C +/* Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31) */ diff --git a/Marlin/pins_PRINTRBOARD.h b/Marlin/pins_PRINTRBOARD.h new file mode 100644 index 000000000..2bf6efd14 --- /dev/null +++ b/Marlin/pins_PRINTRBOARD.h @@ -0,0 +1,88 @@ +/** + * Printrboard pin assignments (AT90USB1286) + * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! + * http://www.pjrc.com/teensy/teensyduino.html + * See http://reprap.org/wiki/Printrboard for more info + */ + +#ifndef __AVR_AT90USB1286__ + #error Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu. +#endif + +#ifdef AT90USBxx_TEENSYPP_ASSIGNMENTS // use Teensyduino Teensy++2.0 pin assignments instead of Marlin traditional. + #error These Printrboard assignments depend on traditional Marlin assignments, not AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h +#endif + +#define AT90USB 1286 // Disable MarlinSerial etc. + +#define LARGE_FLASH true + +#define X_STEP_PIN 0 +#define X_DIR_PIN 1 +#define X_ENABLE_PIN 39 + +#define Y_STEP_PIN 2 +#define Y_DIR_PIN 3 +#define Y_ENABLE_PIN 38 + +#define Z_STEP_PIN 4 +#define Z_DIR_PIN 5 +#define Z_ENABLE_PIN 23 + +#define E0_STEP_PIN 6 +#define E0_DIR_PIN 7 +#define E0_ENABLE_PIN 19 + +#define HEATER_0_PIN 21 // Extruder +#define HEATER_1_PIN 46 +#define HEATER_2_PIN 47 +#define HEATER_BED_PIN 20 + +// If soft or fast PWM is off then use Teensyduino pin numbering, Marlin +// fastio pin numbering otherwise +#ifdef FAN_SOFT_PWM || FAST_PWM_FAN + #define FAN_PIN 22 +#else + #define FAN_PIN 16 +#endif + +#define X_STOP_PIN 35 +#define Y_STOP_PIN 8 +#define Z_STOP_PIN 36 +#define TEMP_0_PIN 1 // Extruder / Analog pin numbering +#define TEMP_BED_PIN 0 // Bed / Analog pin numbering + +#ifdef FILAMENT_SENSOR + #define FILWIDTH_PIN 2 +#endif + +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 + +#define SDPOWER -1 +#define SDSS 8 +#define LED_PIN -1 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define ALARM_PIN -1 + +#ifndef SDSUPPORT +// these pins are defined in the SD library if building with SD support + #define SCK_PIN 9 + #define MISO_PIN 11 + #define MOSI_PIN 10 +#endif + +#if defined(ULTRA_LCD) && defined(NEWPANEL) + //we have no buzzer installed + #define BEEPER -1 + //LCD Pins + #ifdef LCD_I2C_PANELOLU2 + #define BTN_EN1 27 //RX1 - fastio.h pin mapping 27 + #define BTN_EN2 26 //TX1 - fastio.h pin mapping 26 + #define BTN_ENC 43 //A3 - fastio.h pin mapping 43 + #define SDSS 40 //use SD card on Panelolu2 (Teensyduino pin mapping) + #endif // LCD_I2C_PANELOLU2 + //not connected to a pin + #define SDCARDDETECT -1 +#endif // ULTRA_LCD && NEWPANEL diff --git a/Marlin/pins_RAMBO.h b/Marlin/pins_RAMBO.h new file mode 100644 index 000000000..3849e2948 --- /dev/null +++ b/Marlin/pins_RAMBO.h @@ -0,0 +1,154 @@ +/** + * Rambo pin assignments + */ + +#ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega 2560' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +// Servo support +#ifdef NUM_SERVOS + #define SERVO0_PIN 22 //motor header MX1 + #if NUM_SERVOS > 1 + #define SERVO1_PIN 23 //Motor header MX2 + #if NUM_SERVOS > 2 + #define SERVO2_PIN 24 //Motor header MX3 + #if NUM_SERVOS > 3 + #define SERVO2_PIN 5 //pwm header pin 5 + #endif + #endif + #endif +#endif + +#define X_STEP_PIN 37 +#define X_DIR_PIN 48 +#define X_MIN_PIN 12 +#define X_MAX_PIN 24 +#define X_ENABLE_PIN 29 +#define X_MS1_PIN 40 +#define X_MS2_PIN 41 + +#define Y_STEP_PIN 36 +#define Y_DIR_PIN 49 +#define Y_MIN_PIN 11 +#define Y_MAX_PIN 23 +#define Y_ENABLE_PIN 28 +#define Y_MS1_PIN 69 +#define Y_MS2_PIN 39 + +#define Z_STEP_PIN 35 +#define Z_DIR_PIN 47 +#define Z_MIN_PIN 10 +#define Z_MAX_PIN 30 +#define Z_ENABLE_PIN 27 +#define Z_MS1_PIN 68 +#define Z_MS2_PIN 67 + +#define HEATER_BED_PIN 3 +#define TEMP_BED_PIN 2 + +#define HEATER_0_PIN 9 +#define TEMP_0_PIN 0 + +#define HEATER_1_PIN 7 +#define TEMP_1_PIN 1 + +#ifdef BARICUDA + #define HEATER_2_PIN 6 +#else + #define HEATER_2_PIN -1 +#endif + +#define TEMP_2_PIN -1 + +#define E0_STEP_PIN 34 +#define E0_DIR_PIN 43 +#define E0_ENABLE_PIN 26 +#define E0_MS1_PIN 65 +#define E0_MS2_PIN 66 + +#define E1_STEP_PIN 33 +#define E1_DIR_PIN 42 +#define E1_ENABLE_PIN 25 +#define E1_MS1_PIN 63 +#define E1_MS2_PIN 64 + +#define DIGIPOTSS_PIN 38 +#define DIGIPOT_CHANNELS {4,5,3,0,1} // X Y Z E0 E1 digipot channels to stepper driver mapping + +#define SDPOWER -1 +#define SDSS 53 +#define LED_PIN 13 +#define FAN_PIN 8 + +/********************************************************** + Fan Pins + Fan_0 8 + Fan_1 6 + Fan_2 2 +***********************************************************/ +#define PS_ON_PIN 4 +#define KILL_PIN -1 //80 with Smart Controller LCD +#define SUICIDE_PIN -1 //PIN that has to be turned on right after start, to keep power flowing. + +#ifdef ULTRA_LCD + #define KILL_PIN 80 + #ifdef NEWPANEL + //arduino pin which triggers an piezzo beeper + #define BEEPER 79 // Beeper on AUX-4 + #define LCD_PINS_RS 70 + #define LCD_PINS_ENABLE 71 + #define LCD_PINS_D4 72 + #define LCD_PINS_D5 73 + #define LCD_PINS_D6 74 + #define LCD_PINS_D7 75 + + //buttons are directly attached using AUX-2 + #define BTN_EN1 76 + #define BTN_EN2 77 + #define BTN_ENC 78 //the click + + #define BLEN_C 2 + #define BLEN_B 1 + #define BLEN_A 0 + + #define SDCARDDETECT 81 // Ramps does not use this port + + #else //!NEWPANEL - old style panel with shift register + //arduino pin witch triggers an piezzo beeper + #define BEEPER 33 No Beeper added + //buttons are attached to a shift register + // Not wired this yet + // #define SHIFT_CLK 38 + // #define SHIFT_LD 42 + // #define SHIFT_OUT 40 + // #define SHIFT_EN 17 + + #define LCD_PINS_RS 75 + #define LCD_PINS_ENABLE 17 + #define LCD_PINS_D4 23 + #define LCD_PINS_D5 25 + #define LCD_PINS_D6 27 + #define LCD_PINS_D7 29 + + //bits in the shift register that carry the buttons for: + // left up center down right red + #define BL_LE 7 + #define BL_UP 6 + #define BL_MI 5 + #define BL_DW 4 + #define BL_RI 3 + #define BL_ST 2 + #define BLEN_B 1 + #define BLEN_A 0 + + #endif // !NEWPANEL + +#endif // ULTRA_LCD + +#ifdef FILAMENT_SENSOR + //Filip added pin for Filament sensor analog input + #define FILWIDTH_PIN 3 +#endif diff --git a/Marlin/pins_RAMPS_13.h b/Marlin/pins_RAMPS_13.h new file mode 100644 index 000000000..d85b77865 --- /dev/null +++ b/Marlin/pins_RAMPS_13.h @@ -0,0 +1,225 @@ +/** + * Arduino Mega with RAMPS v1.3 pin assignments + * + * Applies to the following boards: + * + * RAMPS_13_EFB (Extruder, Fan, Bed) + * RAMPS_13_EEB (Extruder, Extruder, Bed) + * RAMPS_13_EFF (Extruder, Fan, Fan) + * RAMPS_13_EEF (Extruder, Extruder, Fan) + * + * Other pins_MYBOARD.h files may override these defaults + */ + +#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +#define X_STEP_PIN 54 +#define X_DIR_PIN 55 +#define X_ENABLE_PIN 38 +#define X_MIN_PIN 3 +#define X_MAX_PIN 2 + +#define Y_STEP_PIN 60 +#define Y_DIR_PIN 61 +#define Y_ENABLE_PIN 56 +#define Y_MIN_PIN 14 +#define Y_MAX_PIN 15 + +#define Z_STEP_PIN 46 +#define Z_DIR_PIN 48 +#define Z_ENABLE_PIN 62 +#define Z_MIN_PIN 18 +#define Z_MAX_PIN 19 + +#define Y2_STEP_PIN 36 +#define Y2_DIR_PIN 34 +#define Y2_ENABLE_PIN 30 + +#define Z2_STEP_PIN 36 +#define Z2_DIR_PIN 34 +#define Z2_ENABLE_PIN 30 + +#define E0_STEP_PIN 26 +#define E0_DIR_PIN 28 +#define E0_ENABLE_PIN 24 + +#define E1_STEP_PIN 36 +#define E1_DIR_PIN 34 +#define E1_ENABLE_PIN 30 + +#define SDPOWER -1 +#define SDSS 53 +#define LED_PIN 13 + +#if MB(RAMPS_13_EEB) && defined(FILAMENT_SENSOR) // FMM added for Filament Extruder + // define analog pin for the filament width sensor input + // Use the RAMPS 1.4 Analog input 5 on the AUX2 connector + #define FILWIDTH_PIN 5 +#endif + +#if MB(RAMPS_13_EFB) || MB(RAMPS_13_EFF) + #define FAN_PIN 9 // (Sprinter config) + #if MB(RAMPS_13_EFF) + #define CONTROLLERFAN_PIN -1 // Pin used for the fan to cool controller + #endif +#elif MB(RAMPS_13_EEF) + #define FAN_PIN 8 +#else + #define FAN_PIN 4 // IO pin. Buffer needed +#endif + +#define PS_ON_PIN 12 + +#if defined(REPRAP_DISCOUNT_SMART_CONTROLLER) || defined(G3D_PANEL) + #define KILL_PIN 41 +#else + #define KILL_PIN -1 +#endif + +#if MB(RAMPS_13_EFF) + #define HEATER_0_PIN 8 +#else + #define HEATER_0_PIN 10 // EXTRUDER 1 +#endif + +#if MB(RAMPS_13_EFB) + #define HEATER_1_PIN -1 +#else + #define HEATER_1_PIN 9 // EXTRUDER 2 (FAN On Sprinter) +#endif + +#define HEATER_2_PIN -1 + +#define TEMP_0_PIN 13 // ANALOG NUMBERING +#define TEMP_1_PIN 15 // ANALOG NUMBERING +#define TEMP_2_PIN -1 // ANALOG NUMBERING + +#if MB(RAMPS_13_EFF) || MB(RAMPS_13_EEF) + #define HEATER_BED_PIN -1 // NO BED +#else + #define HEATER_BED_PIN 8 // BED +#endif + +#define TEMP_BED_PIN 14 // ANALOG NUMBERING + +#ifdef NUM_SERVOS + #define SERVO0_PIN 11 + #if NUM_SERVOS > 1 + #define SERVO1_PIN 6 + #if NUM_SERVOS > 2 + #define SERVO2_PIN 5 + #if NUM_SERVOS > 3 + #define SERVO3_PIN 4 + #endif + #endif + #endif +#endif + +#ifdef ULTRA_LCD + + #ifdef NEWPANEL + #ifdef PANEL_ONE + #define LCD_PINS_RS 40 + #define LCD_PINS_ENABLE 42 + #define LCD_PINS_D4 65 + #define LCD_PINS_D5 66 + #define LCD_PINS_D6 44 + #define LCD_PINS_D7 64 + #else + #define LCD_PINS_RS 16 + #define LCD_PINS_ENABLE 17 + #define LCD_PINS_D4 23 + #define LCD_PINS_D5 25 + #define LCD_PINS_D6 27 + #define LCD_PINS_D7 29 + #endif + + + #ifdef REPRAP_DISCOUNT_SMART_CONTROLLER + #define BEEPER 37 + + #define BTN_EN1 31 + #define BTN_EN2 33 + #define BTN_ENC 35 + + #define SDCARDDETECT 49 + #elif defined(LCD_I2C_PANELOLU2) + #define BTN_EN1 47 // reverse if the encoder turns the wrong way. + #define BTN_EN2 43 + #define BTN_ENC 32 + #define LCD_SDSS 53 + #define SDCARDDETECT -1 + #define KILL_PIN 41 + #elif defined(LCD_I2C_VIKI) + #define BTN_EN1 22 // reverse if the encoder turns the wrong way. + #define BTN_EN2 7 + #define BTN_ENC -1 + #define LCD_SDSS 53 + #define SDCARDDETECT 49 + #else + // arduino pin which triggers an piezzo beeper + #define BEEPER 33 // Beeper on AUX-4 + + // buttons are directly attached using AUX-2 + #ifdef REPRAPWORLD_KEYPAD + #define BTN_EN1 64 // encoder + #define BTN_EN2 59 // encoder + #define BTN_ENC 63 // enter button + #define SHIFT_OUT 40 // shift register + #define SHIFT_CLK 44 // shift register + #define SHIFT_LD 42 // shift register + #elif defined(PANEL_ONE) + #define BTN_EN1 59 // AUX2 PIN 3 + #define BTN_EN2 63 // AUX2 PIN 4 + #define BTN_ENC 49 // AUX3 PIN 7 + #else + #define BTN_EN1 37 + #define BTN_EN2 35 + #define BTN_ENC 31 // the click + #endif + + #ifdef G3D_PANEL + #define SDCARDDETECT 49 + #else + #define SDCARDDETECT -1 // Ramps does not use this port + #endif + + #endif + + #else // Old-style panel with shift register + // Arduino pin witch triggers an piezzo beeper + #define BEEPER 33 // No Beeper added + + // Buttons are attached to a shift register + // Not wired yet + // #define SHIFT_CLK 38 + // #define SHIFT_LD 42 + // #define SHIFT_OUT 40 + // #define SHIFT_EN 17 + + #define LCD_PINS_RS 16 + #define LCD_PINS_ENABLE 17 + #define LCD_PINS_D4 23 + #define LCD_PINS_D5 25 + #define LCD_PINS_D6 27 + #define LCD_PINS_D7 29 + #endif +#endif // ULTRA_LCD + +// SPI for Max6675 Thermocouple +#ifndef SDSUPPORT + #define MAX6675_SS 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card +#else + #define MAX6675_SS 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present +#endif + +#ifndef SDSUPPORT + // these pins are defined in the SD library if building with SD support + #define SCK_PIN 52 + #define MISO_PIN 50 + #define MOSI_PIN 51 +#endif diff --git a/Marlin/pins_RAMPS_OLD.h b/Marlin/pins_RAMPS_OLD.h new file mode 100644 index 000000000..6b3454ac8 --- /dev/null +++ b/Marlin/pins_RAMPS_OLD.h @@ -0,0 +1,69 @@ +/** + * Arduino Mega with RAMPS v1.0, v1.1, v1.2 pin assignments + */ + +#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +// Uncomment the following line for RAMPS v1.0 +//#define RAMPS_V_1_0 + +#define X_STEP_PIN 26 +#define X_DIR_PIN 28 +#define X_ENABLE_PIN 24 +#define X_MIN_PIN 3 +#define X_MAX_PIN 2 + +#define Y_STEP_PIN 38 +#define Y_DIR_PIN 40 +#define Y_ENABLE_PIN 36 +#define Y_MIN_PIN 16 +#define Y_MAX_PIN 17 + +#define Z_STEP_PIN 44 +#define Z_DIR_PIN 46 +#define Z_ENABLE_PIN 42 +#define Z_MIN_PIN 18 +#define Z_MAX_PIN 19 + +#define E0_STEP_PIN 32 +#define E0_DIR_PIN 34 +#define E0_ENABLE_PIN 30 + +#define SDPOWER 48 +#define SDSS 53 +#define LED_PIN 13 +#define PS_ON_PIN -1 +#define KILL_PIN -1 + +#ifdef RAMPS_V_1_0 // RAMPS_V_1_0 + #define HEATER_0_PIN 12 // RAMPS 1.0 + #define HEATER_BED_PIN -1 // RAMPS 1.0 + #define FAN_PIN 11 // RAMPS 1.0 +#else // RAMPS_V_1_1 or RAMPS_V_1_2 + #define HEATER_0_PIN 10 // RAMPS 1.1 + #define HEATER_BED_PIN 8 // RAMPS 1.1 + #define FAN_PIN 9 // RAMPS 1.1 +#endif + +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define TEMP_0_PIN 2 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! + +// SPI for Max6675 Thermocouple +#ifndef SDSUPPORT + #define MAX6675_SS 66// Do not use pin 53 if there is even the remote possibility of using Display/SD card +#else + #define MAX6675_SS 66// Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present +#endif + +#ifndef SDSUPPORT + // these pins are defined in the SD library if building with SD support + #define SCK_PIN 52 + #define MISO_PIN 50 + #define MOSI_PIN 51 +#endif diff --git a/Marlin/pins_RUMBA.h b/Marlin/pins_RUMBA.h new file mode 100644 index 000000000..ce96d750d --- /dev/null +++ b/Marlin/pins_RUMBA.h @@ -0,0 +1,117 @@ +/** + * RUMBA pin assignments + */ + +#ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#if EXTRUDERS > 3 + #error RUMBA supports up to 3 extruders. Comment this line to keep going. +#endif + +#define X_STEP_PIN 17 +#define X_DIR_PIN 16 +#define X_ENABLE_PIN 48 +#define X_MIN_PIN 37 +#define X_MAX_PIN 36 + +#define Y_STEP_PIN 54 +#define Y_DIR_PIN 47 +#define Y_ENABLE_PIN 55 +#define Y_MIN_PIN 35 +#define Y_MAX_PIN 34 + +#define Z_STEP_PIN 57 +#define Z_DIR_PIN 56 +#define Z_ENABLE_PIN 62 +#define Z_MIN_PIN 33 +#define Z_MAX_PIN 32 + +#define E0_STEP_PIN 23 +#define E0_DIR_PIN 22 +#define E0_ENABLE_PIN 24 + +#define E1_STEP_PIN 26 +#define E1_DIR_PIN 25 +#define E1_ENABLE_PIN 27 + +#define E2_STEP_PIN 29 +#define E2_DIR_PIN 28 +#define E2_ENABLE_PIN 39 + +#define LED_PIN 13 + +#define FAN_PIN 7 +#define FAN1_PIN 8 + +#define PS_ON_PIN 45 +#define KILL_PIN 46 + +#if (TEMP_SENSOR_0==0) + #define TEMP_0_PIN -1 + #define HEATER_0_PIN -1 +#else + #define HEATER_0_PIN 2 // EXTRUDER 1 + #if (TEMP_SENSOR_0==-1) + #define TEMP_0_PIN 6 // ANALOG NUMBERING - connector *K1* on RUMBA thermocouple ADD ON is used + #else + #define TEMP_0_PIN 15 // ANALOG NUMBERING - default connector for thermistor *T0* on rumba board is used + #endif +#endif + +#if (TEMP_SENSOR_1==0) + #define TEMP_1_PIN -1 + #define HEATER_1_PIN -1 +#else + #define HEATER_1_PIN 3 // EXTRUDER 2 + #if (TEMP_SENSOR_1==-1) + #define TEMP_1_PIN 5 // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used + #else + #define TEMP_1_PIN 14 // ANALOG NUMBERING - default connector for thermistor *T1* on rumba board is used + #endif +#endif + +#if (TEMP_SENSOR_2==0) + #define TEMP_2_PIN -1 + #define HEATER_2_PIN -1 +#else + #define HEATER_2_PIN 6 // EXTRUDER 3 + #if (TEMP_SENSOR_2==-1) + #define TEMP_2_PIN 7 // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_BED is defined as thermocouple + #else + #define TEMP_2_PIN 13 // ANALOG NUMBERING - default connector for thermistor *T2* on rumba board is used + #endif +#endif + +//optional for extruder 4 or chamber: #define TEMP_X_PIN 12 // ANALOG NUMBERING - default connector for thermistor *T3* on rumba board is used +//optional FAN1 can be used as 4th heater output: #define HEATER_3_PIN 8 // EXTRUDER 4 + +#if (TEMP_SENSOR_BED==0) + #define TEMP_BED_PIN -1 + #define HEATER_BED_PIN -1 +#else + #define HEATER_BED_PIN 9 // BED + #if (TEMP_SENSOR_BED==-1) + #define TEMP_BED_PIN 7 // ANALOG NUMBERING - connector *K3* on RUMBA thermocouple ADD ON is used <-- this can not be used when TEMP_SENSOR_2 is defined as thermocouple + #else + #define TEMP_BED_PIN 11 // ANALOG NUMBERING - default connector for thermistor *THB* on rumba board is used + #endif +#endif + +#define SDPOWER -1 +#define SDSS 53 +#define SDCARDDETECT 49 +#define BEEPER 44 +#define LCD_PINS_RS 19 +#define LCD_PINS_ENABLE 42 +#define LCD_PINS_D4 18 +#define LCD_PINS_D5 38 +#define LCD_PINS_D6 41 +#define LCD_PINS_D7 40 +#define BTN_EN1 11 +#define BTN_EN2 12 +#define BTN_ENC 43 + +#define SERVO0_PIN 5 + diff --git a/Marlin/pins_SANGUINOLOLU_11.h b/Marlin/pins_SANGUINOLOLU_11.h new file mode 100644 index 000000000..e7bdd974e --- /dev/null +++ b/Marlin/pins_SANGUINOLOLU_11.h @@ -0,0 +1,172 @@ +/** + * Sanguinololu board pin assignments + */ + +#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega1284P__) + #error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu. +#endif + +#define X_STEP_PIN 15 +#define X_DIR_PIN 21 +#define X_STOP_PIN 18 + +#define Y_STEP_PIN 22 +#define Y_DIR_PIN 23 +#define Y_STOP_PIN 19 + +#define Z_STEP_PIN 3 +#define Z_DIR_PIN 2 +#define Z_STOP_PIN 20 + +#define E0_STEP_PIN 1 +#define E0_DIR_PIN 0 + +#define LED_PIN -1 + +#define FAN_PIN -1 + +// #if FAN_PIN == 12 || FAN_PIN ==13 +// #define FAN_SOFT_PWM +// #endif + +#if MB(MELZI) + #define LED_PIN 27 /* On some broken versions of the Sanguino libraries the pin definitions are wrong, which then needs LED_PIN as pin 28. But you better upgrade your Sanguino libraries! See #368. */ + #define FAN_PIN 4 // Works for Panelolu2 too +#endif + +#if MB(STB_11) + #define FAN_PIN 4 + // Uncomment this if you have the first generation (V1.10) of STBs board + #define LCD_PIN_BL 17 // LCD backlight LED +#endif + +#if MB(AZTEEG_X1) + #define FAN_PIN 4 +#endif + +#ifdef NUM_SERVOS + #define SERVO0_PIN -1 + + #if NUM_SERVOS > 1 + #define SERVO1_PIN -1 + #endif + + #if NUM_SERVOS > 2 + #define SERVO2_PIN -1 + #endif + + #if NUM_SERVOS > 3 + #define SERVO3_PIN -1 + #endif +#endif + +#define PS_ON_PIN -1 +#define KILL_PIN -1 + +#define HEATER_0_PIN 13 // (extruder) +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 + +#ifdef SANGUINOLOLU_V_1_2 + + #define HEATER_BED_PIN 12 // (bed) + #define X_ENABLE_PIN 14 + #define Y_ENABLE_PIN 14 + #define Z_ENABLE_PIN 26 + #define E0_ENABLE_PIN 14 + + #ifdef LCD_I2C_PANELOLU2 + #define FAN_PIN 4 // Uses Transistor1 (PWM) on Panelolu2's Sanguino Adapter Board to drive the fan + #endif + +#else + + #define HEATER_BED_PIN 14 // (bed) + #define X_ENABLE_PIN -1 + #define Y_ENABLE_PIN -1 + #define Z_ENABLE_PIN -1 + #define E0_ENABLE_PIN -1 + +#endif + +#define TEMP_0_PIN 7 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder) +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 6 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed) +#define SDPOWER -1 +#define SDSS 31 + +/* On some broken versions of the Sanguino libraries the pin definitions are wrong, which then needs SDSS as pin 24. But you better upgrade your Sanguino libraries! See #368. */ +//#define SDSS 24 + +#ifdef ULTRA_LCD + #ifdef NEWPANEL + //we have no buzzer installed + #define BEEPER -1 + //LCD Pins + #ifdef DOGLCD + #ifdef U8GLIB_ST7920 //SPI GLCD 12864 ST7920 ( like [www.digole.com] ) For Melzi V2.0 + #define LCD_PINS_RS 30 //CS chip select /SS chip slave select + #define LCD_PINS_ENABLE 29 //SID (MOSI) + #define LCD_PINS_D4 17 //SCK (CLK) clock + #define BEEPER 27 // Pin 27 is take by LED_Pin, but Melzi LED do nothing with Marlin and I take this pin for BEEPER.... See here > [github.com] , If you want use this pin with Gcode M42 instead BEEPER + #else + // Pins for DOGM SPI LCD Support + #define DOGLCD_A0 30 + #define DOGLCD_CS 29 + #define LCD_CONTRAST 1 + #endif + // Uncomment screen orientation + #define LCD_SCREEN_ROT_0 + // #define LCD_SCREEN_ROT_90 + // #define LCD_SCREEN_ROT_180 + // #define LCD_SCREEN_ROT_270 + #else // standard Hitachi LCD controller + #define LCD_PINS_RS 4 + #define LCD_PINS_ENABLE 17 + #define LCD_PINS_D4 30 + #define LCD_PINS_D5 29 + #define LCD_PINS_D6 28 + #define LCD_PINS_D7 27 + #endif + //The encoder and click button + #define BTN_EN1 11 + #define BTN_EN2 10 + #ifdef LCD_I2C_PANELOLU2 + #if MB(MELZI) + #define BTN_ENC 29 //the click switch + #define LCD_SDSS 30 //to use the SD card reader on the Panelolu2 rather than the melzi board + #else + #define BTN_ENC 30 //the click switch + #endif + #else + #define BTN_ENC 16 //the click switch + #define LCD_SDSS 28 //to use the SD card reader on the smart controller rather than the melzi board + #endif //Panelolu2 + //not connected to a pin + #define SDCARDDETECT -1 + + #endif //NEWPANEL +#endif //ULTRA_LCD + +#ifdef MAKRPANEL + #define BEEPER 29 + // Pins for DOGM SPI LCD Support + #define DOGLCD_A0 30 + #define DOGLCD_CS 17 + #define LCD_PIN_BL 28 // backlight LED on PA3 + // GLCD features + #define LCD_CONTRAST 1 + // Uncomment screen orientation + #define LCD_SCREEN_ROT_0 + // #define LCD_SCREEN_ROT_90 + // #define LCD_SCREEN_ROT_180 + // #define LCD_SCREEN_ROT_270 + //The encoder and click button + #define BTN_EN1 11 + #define BTN_EN2 10 + #define BTN_ENC 16 //the click switch + //not connected to a pin + #define SDCARDDETECT -1 +#endif //Makrpanel + diff --git a/Marlin/pins_SANGUINOLOLU_12.h b/Marlin/pins_SANGUINOLOLU_12.h new file mode 100644 index 000000000..d92cff732 --- /dev/null +++ b/Marlin/pins_SANGUINOLOLU_12.h @@ -0,0 +1,19 @@ +/** + * Sanguinololu V1.2 pin assignments + * + * Applies to the following boards: + * + * AZTEEG_X1 + * MELZI + * MELZI_1284 + * SANGUINOLOLU_12 + * STB_11 + */ + +#define SANGUINOLOLU_V_1_2 + +#if defined(__AVR_ATmega1284P__) + #define LARGE_FLASH true +#endif + +#include "pins_SANGUINOLOLU_11.h" diff --git a/Marlin/pins_SAV_MKI.h b/Marlin/pins_SAV_MKI.h new file mode 100644 index 000000000..e898c9f28 --- /dev/null +++ b/Marlin/pins_SAV_MKI.h @@ -0,0 +1,88 @@ +/** + * SAV MkI pin assignments (AT90USB1286) + * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! + * http://www.pjrc.com/teensy/teensyduino.html + * RepRap Clone Wars project board. + */ + +#ifndef __AVR_AT90USB1286__ + #error Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu. +#endif + +#define AT90USB 1286 // Disable MarlinSerial etc. + +#define LARGE_FLASH true + +#define X_STEP_PIN 0 +#define X_DIR_PIN 1 +#define X_ENABLE_PIN 39 + +#define Y_STEP_PIN 2 +#define Y_DIR_PIN 3 +#define Y_ENABLE_PIN 38 + +#define Z_STEP_PIN 4 +#define Z_DIR_PIN 5 +#define Z_ENABLE_PIN 23 + +#define E0_STEP_PIN 6 +#define E0_DIR_PIN 7 +#define E0_ENABLE_PIN 19 + +#define HEATER_0_PIN 21 // Extruder +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 20 // Bed +#define FAN_PIN 16 // Fan -- from Teensyduino environment. + // For the fan and Teensyduino uses a different pin mapping. + +#define X_STOP_PIN 13 +#define Y_STOP_PIN 14 +#define Z_STOP_PIN 15 +//#define Z_STOP_PIN 36 // For inductive sensor. + +#define TEMP_0_PIN 7 // Extruder / Analog pin numbering +#define TEMP_BED_PIN 6 // Bed / Analog pin numbering + +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 + +#define SDPOWER -1 +#define SDSS 20 // PB0 - 8 in marlin env. +#define LED_PIN -1 +#define PS_ON_PIN -1 +#define ALARM_PIN -1 +#define SDCARDDETECT -1 + +#ifndef SDSUPPORT + // these pins are defined in the SD library if building with SD support + #define SCK_PIN 9 + #define MISO_PIN 11 + #define MOSI_PIN 10 +#endif + +#define BEEPER -1 +#define LCD_PINS_RS -1 +#define LCD_PINS_ENABLE -1 +#define LCD_PINS_D4 -1 +#define LCD_PINS_D5 -1 +#define LCD_PINS_D6 -1 +#define LCD_PINS_D7 -1 + +#ifdef SAV_3DLCD + // For LCD SHIFT register LCD + #define SR_DATA_PIN 1 + #define SR_CLK_PIN 0 + + #define BTN_EN1 41 + #define BTN_EN2 40 + #define BTN_ENC 12 + + #define KILL_PIN 42 // A2 = 42 - teensy = 40 + #define HOME_PIN -1 // A4 = marlin 44 - teensy = 42 + + #ifdef NUM_SERVOS + #define SERVO0_PIN 41 // In teensy's pin definition for pinMode (in Servo.cpp) + #endif + +#endif // SAV_3DLCD diff --git a/Marlin/pins_SETHI.h b/Marlin/pins_SETHI.h new file mode 100644 index 000000000..c2e43594f --- /dev/null +++ b/Marlin/pins_SETHI.h @@ -0,0 +1,71 @@ +/** + * Sethi 3D_1 pin assignments - www.sethi3d.com.br + */ + +#if !defined(__AVR_ATmega644P__) && !defined(__AVR_ATmega644__) && !defined(__AVR_ATmega1284P__) + #error Oops! Make sure you have 'Sethi 3D' selected from the 'Tools -> Boards' menu. +#endif + +#ifndef GEN7_VERSION + #define GEN7_VERSION 12 // v1.x +#endif + +//x axis pins +#define X_STEP_PIN 19 +#define X_DIR_PIN 18 +#define X_ENABLE_PIN 24 +#define X_STOP_PIN 2 + +//y axis pins +#define Y_STEP_PIN 23 +#define Y_DIR_PIN 22 +#define Y_ENABLE_PIN 24 +#define Y_STOP_PIN 0 + +//z axis pins +#define Z_STEP_PIN 26 +#define Z_DIR_PIN 25 +#define Z_ENABLE_PIN 24 +#define Z_MIN_PIN 1 +#define Z_MAX_PIN 0 + +//extruder pins +#define E0_STEP_PIN 28 +#define E0_DIR_PIN 27 +#define E0_ENABLE_PIN 24 + +#define TEMP_0_PIN 1 +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 2 + +#define HEATER_0_PIN 4 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 3 + +#define KILL_PIN -1 + +#define SDPOWER -1 +#define SDSS -1 // SCL pin of I2C header +#define LED_PIN -1 + +#if (GEN7_VERSION >= 13) + // Gen7 v1.3 removed the fan pin + #define FAN_PIN -1 +#else + #define FAN_PIN 31 +#endif + +#define PS_ON_PIN 15 + +//All these generations of Gen7 supply thermistor power +//via PS_ON, so ignore bad thermistor readings +#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + +//our pin for debugging. +#define DEBUG_PIN 0 + +//our RS485 pins +#define TX_ENABLE_PIN 12 +#define RX_ENABLE_PIN 13 diff --git a/Marlin/pins_STB_11.h b/Marlin/pins_STB_11.h new file mode 100644 index 000000000..ae06101d0 --- /dev/null +++ b/Marlin/pins_STB_11.h @@ -0,0 +1,11 @@ +/** + * STB V1.1 pin assignments + */ + +#define SANGUINOLOLU_V_1_2 + +#if defined(__AVR_ATmega1284P__) + #define LARGE_FLASH true +#endif + +#include "pins_SANGUINOLOLU_11.h" diff --git a/Marlin/pins_TEENSY2.h b/Marlin/pins_TEENSY2.h new file mode 100644 index 000000000..c7144266b --- /dev/null +++ b/Marlin/pins_TEENSY2.h @@ -0,0 +1,115 @@ +/** + * Teensy++ 2.0 Breadboard pin assignments (AT90USB1286) + * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! + * http://www.pjrc.com/teensy/teensyduino.html + * See http://reprap.org/wiki/Printrboard for more info + * + * CLI build: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make + * + * DaveX plan for Teensylu/printrboard-type pinouts for a TeensyBreadboard: + * (ref teensylu & sprinter) + * + * USB + * GND GND |-----#####-----| +5V ATX +5SB + * ATX PS_ON PWM 27 |b7 ##### b6| 26 PWM* Stepper Enable + * PWM 0 |d0 b5| 25 PWM* + * PWM 1 |d1 b4| 24 PWM + * X_MIN 2 |d2 b3| 23 MISO_PIN + * Y_MIN 3 |d3 b2| 22 MOSI_PIN + * Z_MIN 4 |d4 * * b1| 21 SCK_PIN + * 5 |d5 e e b0| 20 SDSS + * LED 6 |d6 5 4 e7| 19 + * 7 |d7 e6| 18 + * LCD RS 8 |e0 | GND + * LCD EN 9 |e1 a4 a0 R| AREF + * LCD D4 10 |c0 a5 a1 f0| 38 A0 ENC_1 + * LCD D5 11 |c1 a6 a2 f1| 39 A1 ENC_2 + * LCD D6 12 |c2 a7 a3 f2| 40 A2 ENC_CLK + * LCD D6 13 |c3 f3| 41 A3 + * Bed Heat PWM 14 |c4 V G R f4| 42 A4 + * Extruder Heat PWM 15 |c5 c n S f5| 43 A5 + * Fan PWM 16 |c6 c d T f6| 44 A6 Bed TC + * 17 |c7 * * * f7| 45 A7 Extruder TC * 4.7k * +5 + * ----------------- + * + * Interior E4: 36, INT4 + * Interior E5: 37, INT5 + * Interior PA0-7: 28-35 -- Printrboard and Teensylu use these pins for step & direction: + * T++ PA Signal Marlin + * + * Z STEP 32 a4 a0 28 X STEP + * Z DIR 33 a5 a1 29 X DIR + * E STEP 34 a6 a2 30 Y STEP + * E DIR 35 a7 a3 31 Y DIR + */ + +#ifndef __AVR_AT90USB1286__ + #error Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu. +#endif + +#ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // use Teensyduino Teensy++2.0 pin assignments instead of Marlin alphabetical. + #error Uncomment #define AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h for this config + // (or build from command line) +#endif + +#define AT90USB 1286 // Disable MarlinSerial etc. + +#define LARGE_FLASH true + +#define X_STEP_PIN 28 // 0 Marlin +#define X_DIR_PIN 29 // 1 Marlin +#define X_ENABLE_PIN 26 + +#define Y_STEP_PIN 30 // 2 Marlin +#define Y_DIR_PIN 31 // 3 +#define Y_ENABLE_PIN 26 // Shared w/x + +#define Z_STEP_PIN 32 // 4 +#define Z_DIR_PIN 33 // 5 +#define Z_ENABLE_PIN 26 // Shared w/x + +#define E0_STEP_PIN 34 // 6 +#define E0_DIR_PIN 35 // 7 +#define E0_ENABLE_PIN 26 // Shared w/x + +#define HEATER_0_PIN 15 // 21 // Extruder +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 14 // 20 // Bed +#define FAN_PIN 16 // 22 // Fan + +#define X_STOP_PIN 2 +#define Y_STOP_PIN 3 +#define Z_STOP_PIN 4 + +#define TEMP_0_PIN 7 // Extruder / Analog pin numbering +#define TEMP_BED_PIN 6 // Bed / Analog pin numbering +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 + +#define SDPOWER -1 +#define SDCARDDETECT -1 +#define SDSS 20 // 8 +#define LED_PIN 6 +#define PS_ON_PIN 27 +#define KILL_PIN -1 +#define ALARM_PIN -1 + +#ifndef SDSUPPORT +// these pins are defined in the SD library if building with SD support + #define SCK_PIN 21 // 9 + #define MISO_PIN 23 // 11 + #define MOSI_PIN 22 // 10 +#endif + +#ifdef ULTIPANEL + #define LCD_PINS_RS 8 + #define LCD_PINS_ENABLE 9 + #define LCD_PINS_D4 10 + #define LCD_PINS_D5 11 + #define LCD_PINS_D6 12 + #define LCD_PINS_D7 13 + #define BTN_EN1 38 + #define BTN_EN2 39 + #define BTN_ENC 40 +#endif diff --git a/Marlin/pins_TEENSYLU.h b/Marlin/pins_TEENSYLU.h new file mode 100644 index 000000000..46da7d299 --- /dev/null +++ b/Marlin/pins_TEENSYLU.h @@ -0,0 +1,85 @@ +/** + * Teensylu 0.7 pin assignments (AT90USB1286) + * Requires the Teensyduino software with Teensy++ 2.0 selected in Arduino IDE! + * http://www.pjrc.com/teensy/teensyduino.html + * See http://reprap.org/wiki/Printrboard for more info + */ + +#ifndef __AVR_AT90USB1286__ + #error Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu. +#endif + +#ifdef AT90USBxx_TEENSYPP_ASSIGNMENTS // use Teensyduino Teensy++2.0 pin assignments instead of Marlin traditional. + #error These Teensylu assignments depend on traditional Marlin assignments, not AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h +#endif + +#define AT90USB 1286 // Disable MarlinSerial etc. + +#define LARGE_FLASH true + +#define X_STEP_PIN 0 +#define X_DIR_PIN 1 +#define X_ENABLE_PIN 39 + +#define Y_STEP_PIN 2 +#define Y_DIR_PIN 3 +#define Y_ENABLE_PIN 38 + +#define Z_STEP_PIN 4 +#define Z_DIR_PIN 5 +#define Z_ENABLE_PIN 23 + +#define E0_STEP_PIN 6 +#define E0_DIR_PIN 7 +#define E0_ENABLE_PIN 19 + +#define HEATER_0_PIN 21 // Extruder +#define HEATER_1_PIN 46 +#define HEATER_2_PIN 47 +#define HEATER_BED_PIN 20 + +// If soft or fast PWM is off then use Teensyduino pin numbering, Marlin +// fastio pin numbering otherwise +#ifdef FAN_SOFT_PWM || FAST_PWM_FAN + #define FAN_PIN 22 +#else + #define FAN_PIN 16 +#endif + +#define X_STOP_PIN 13 +#define Y_STOP_PIN 14 +#define Z_STOP_PIN 15 +#define TEMP_0_PIN 7 // Extruder / Analog pin numbering +#define TEMP_BED_PIN 6 // Bed / Analog pin numbering + +#define TEMP_1_PIN -1 +#define TEMP_2_PIN -1 + +#define SDPOWER -1 +#define SDSS 8 +#define LED_PIN -1 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define ALARM_PIN -1 + +#ifndef SDSUPPORT +// these pins are defined in the SD library if building with SD support + #define SCK_PIN 9 + #define MISO_PIN 11 + #define MOSI_PIN 10 +#endif + +#if defined(ULTRA_LCD) && defined(NEWPANEL) + //we have no buzzer installed + #define BEEPER -1 + //LCD Pins + #ifdef LCD_I2C_PANELOLU2 + #define BTN_EN1 27 //RX1 - fastio.h pin mapping 27 + #define BTN_EN2 26 //TX1 - fastio.h pin mapping 26 + #define BTN_ENC 43 //A3 - fastio.h pin mapping 43 + #define SDSS 40 //use SD card on Panelolu2 (Teensyduino pin mapping) + #endif // LCD_I2C_PANELOLU2 + //not connected to a pin + #define SDCARDDETECT -1 +#endif // ULTRA_LCD && NEWPANEL + diff --git a/Marlin/pins_ULTIMAIN_2.h b/Marlin/pins_ULTIMAIN_2.h new file mode 100644 index 000000000..7c03f6b2b --- /dev/null +++ b/Marlin/pins_ULTIMAIN_2.h @@ -0,0 +1,80 @@ +/** + * Ultiboard v2.0 pin assignments + */ + +#ifndef __AVR_ATmega2560__ + #error Oops! Make sure you have 'Arduino Mega 2560' selected from the 'Tools -> Boards' menu. +#endif + +#define X_STEP_PIN 25 +#define X_DIR_PIN 23 +#define X_STOP_PIN 22 +#define X_ENABLE_PIN 27 + +#define Y_STEP_PIN 32 +#define Y_DIR_PIN 33 +#define Y_STOP_PIN 26 +#define Y_ENABLE_PIN 31 + +#define Z_STEP_PIN 35 +#define Z_DIR_PIN 36 +#define Z_STOP_PIN 29 +#define Z_ENABLE_PIN 34 + +#define HEATER_BED_PIN 4 +#define TEMP_BED_PIN 10 + +#define HEATER_0_PIN 2 +#define TEMP_0_PIN 8 + +#define HEATER_1_PIN 3 +#define TEMP_1_PIN 9 + +#define HEATER_2_PIN -1 +#define TEMP_2_PIN -1 + +#define E0_STEP_PIN 42 +#define E0_DIR_PIN 43 +#define E0_ENABLE_PIN 37 + +#define E1_STEP_PIN 49 +#define E1_DIR_PIN 47 +#define E1_ENABLE_PIN 48 + +#define SDPOWER -1 +#define SDSS 53 +#define LED_PIN 8 +#define FAN_PIN 7 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define SUICIDE_PIN -1 //PIN that has to be turned on right after start, to keep power flowing. +#define SAFETY_TRIGGERED_PIN 28 //PIN to detect the safety circuit has triggered +#define MAIN_VOLTAGE_MEASURE_PIN 14 //Analogue PIN to measure the main voltage, with a 100k - 4k7 resitor divider. + +#define MOTOR_CURRENT_PWM_XY_PIN 44 +#define MOTOR_CURRENT_PWM_Z_PIN 45 +#define MOTOR_CURRENT_PWM_E_PIN 46 +//Motor current PWM conversion, PWM value = MotorCurrentSetting * 255 / range +#define MOTOR_CURRENT_PWM_RANGE 2000 +#define DEFAULT_PWM_MOTOR_CURRENT {1300, 1300, 1250} + +//arduino pin witch triggers an piezzo beeper +#define BEEPER 18 + +#define LCD_PINS_RS 20 +#define LCD_PINS_ENABLE 15 +#define LCD_PINS_D4 14 +#define LCD_PINS_D5 21 +#define LCD_PINS_D6 5 +#define LCD_PINS_D7 6 + +//buttons are directly attached +#define BTN_EN1 40 +#define BTN_EN2 41 +#define BTN_ENC 19 //the click + +#define BLEN_C 2 +#define BLEN_B 1 +#define BLEN_A 0 + +#define SDCARDDETECT 39 diff --git a/Marlin/pins_ULTIMAKER.h b/Marlin/pins_ULTIMAKER.h new file mode 100644 index 000000000..649ea595e --- /dev/null +++ b/Marlin/pins_ULTIMAKER.h @@ -0,0 +1,100 @@ +/** + * Ultimaker pin assignments + */ + +#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +#define X_STEP_PIN 25 +#define X_DIR_PIN 23 +#define X_MIN_PIN 22 +#define X_MAX_PIN 24 +#define X_ENABLE_PIN 27 + +#define Y_STEP_PIN 31 +#define Y_DIR_PIN 33 +#define Y_MIN_PIN 26 +#define Y_MAX_PIN 28 +#define Y_ENABLE_PIN 29 + +#define Z_STEP_PIN 37 +#define Z_DIR_PIN 39 +#define Z_MIN_PIN 30 +#define Z_MAX_PIN 32 +#define Z_ENABLE_PIN 35 + +#define HEATER_BED_PIN 4 +#define TEMP_BED_PIN 10 + +#define HEATER_0_PIN 2 +#define TEMP_0_PIN 8 + +#define HEATER_1_PIN 3 +#define TEMP_1_PIN 9 + +#define HEATER_2_PIN -1 +#define TEMP_2_PIN -1 + +#define E0_STEP_PIN 43 +#define E0_DIR_PIN 45 +#define E0_ENABLE_PIN 41 + +#define E1_STEP_PIN 49 +#define E1_DIR_PIN 47 +#define E1_ENABLE_PIN 48 + +#define SDPOWER -1 +#define SDSS 53 +#define LED_PIN 13 +#define FAN_PIN 7 +#define PS_ON_PIN 12 +#define KILL_PIN -1 +#define SUICIDE_PIN 54 //PIN that has to be turned on right after start, to keep power flowing. +#define SERVO0_PIN 13 // untested + +#ifdef ULTRA_LCD + + #ifdef NEWPANEL + //arduino pin witch triggers an piezzo beeper + #define BEEPER 18 + + #define LCD_PINS_RS 20 + #define LCD_PINS_ENABLE 17 + #define LCD_PINS_D4 16 + #define LCD_PINS_D5 21 + #define LCD_PINS_D6 5 + #define LCD_PINS_D7 6 + + //buttons are directly attached + #define BTN_EN1 40 + #define BTN_EN2 42 + #define BTN_ENC 19 //the click + + #define SDCARDDETECT 38 + + #else //!NEWPANEL - Old style panel with shift register + + //arduino pin witch triggers an piezzo beeper + #define BEEPER 18 + + //buttons are attached to a shift register + #define SHIFT_CLK 38 + #define SHIFT_LD 42 + #define SHIFT_OUT 40 + #define SHIFT_EN 17 + + #define LCD_PINS_RS 16 + #define LCD_PINS_ENABLE 5 + #define LCD_PINS_D4 6 + #define LCD_PINS_D5 21 + #define LCD_PINS_D6 20 + #define LCD_PINS_D7 19 + + #define SDCARDDETECT -1 + + #endif // !NEWPANEL + +#endif // ULTRA_LCD diff --git a/Marlin/pins_ULTIMAKER_OLD.h b/Marlin/pins_ULTIMAKER_OLD.h new file mode 100644 index 000000000..571ea1600 --- /dev/null +++ b/Marlin/pins_ULTIMAKER_OLD.h @@ -0,0 +1,62 @@ +/** + * Ultimaker pin assignments (Old electronics) + */ + +#if !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega2560__) + #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu. +#endif + +#define LARGE_FLASH true + +#define X_STEP_PIN 25 +#define X_DIR_PIN 23 +#define X_MIN_PIN 15 +#define X_MAX_PIN 14 +#define X_ENABLE_PIN 27 + +#define Y_STEP_PIN 31 +#define Y_DIR_PIN 33 +#define Y_MIN_PIN 17 +#define Y_MAX_PIN 16 +#define Y_ENABLE_PIN 29 + +#define Z_STEP_PIN 37 +#define Z_DIR_PIN 39 +#define Z_MIN_PIN 19 +#define Z_MAX_PIN 18 +#define Z_ENABLE_PIN 35 + +#define HEATER_BED_PIN -1 +#define TEMP_BED_PIN -1 + +#define HEATER_0_PIN 2 +#define TEMP_0_PIN 8 + +#define HEATER_1_PIN 1 +#define TEMP_1_PIN 1 + +#define HEATER_2_PIN -1 +#define TEMP_2_PIN -1 + +#define E0_STEP_PIN 43 +#define E0_DIR_PIN 45 +#define E0_ENABLE_PIN 41 + +#define E1_STEP_PIN -1 +#define E1_DIR_PIN -1 +#define E1_ENABLE_PIN -1 + +#define SDPOWER -1 +#define SDSS -1 +#define LED_PIN -1 +#define FAN_PIN -1 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define SUICIDE_PIN -1 //PIN that has to be turned on right after start, to keep power flowing. + +#define LCD_PINS_RS 24 +#define LCD_PINS_ENABLE 22 +#define LCD_PINS_D4 36 +#define LCD_PINS_D5 34 +#define LCD_PINS_D6 32 +#define LCD_PINS_D7 30 diff --git a/Marlin/pins_WITBOX.h b/Marlin/pins_WITBOX.h new file mode 100644 index 000000000..a4eb0e313 --- /dev/null +++ b/Marlin/pins_WITBOX.h @@ -0,0 +1,8 @@ +/** + * bq WITBOX Arduino Mega with RAMPS v1.3/1.4 pin assignments + */ + +#include "pins_RAMPS_13.h" + +#define FAN_PIN 9 // (Sprinter config) +#define HEATER_1_PIN -1 diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp new file mode 100644 index 000000000..cee1981bc --- /dev/null +++ b/Marlin/planner.cpp @@ -0,0 +1,1121 @@ +/* + planner.c - buffers movement commands and manages the acceleration profile plan + Part of Grbl + + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . + */ + +/* The ring buffer implementation gleaned from the wiring_serial library by David A. Mellis. */ + +/* + Reasoning behind the mathematics in this module (in the key of 'Mathematica'): + + s == speed, a == acceleration, t == time, d == distance + + Basic definitions: + + Speed[s_, a_, t_] := s + (a*t) + Travel[s_, a_, t_] := Integrate[Speed[s, a, t], t] + + Distance to reach a specific speed with a constant acceleration: + + Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, d, t] + d -> (m^2 - s^2)/(2 a) --> estimate_acceleration_distance() + + Speed after a given distance of travel with constant acceleration: + + Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, m, t] + m -> Sqrt[2 a d + s^2] + + DestinationSpeed[s_, a_, d_] := Sqrt[2 a d + s^2] + + When to start braking (di) to reach a specified destionation speed (s2) after accelerating + from initial speed s1 without ever stopping at a plateau: + + Solve[{DestinationSpeed[s1, a, di] == DestinationSpeed[s2, a, d - di]}, di] + di -> (2 a d - s1^2 + s2^2)/(4 a) --> intersection_distance() + + IntersectionDistance[s1_, s2_, a_, d_] := (2 a d - s1^2 + s2^2)/(4 a) + */ + +#include "Marlin.h" +#include "planner.h" +#include "stepper.h" +#include "temperature.h" +#include "ultralcd.h" +#include "language.h" + +//=========================================================================== +//=============================public variables ============================ +//=========================================================================== + +unsigned long minsegmenttime; +float max_feedrate[NUM_AXIS]; // set the max speeds +float axis_steps_per_unit[NUM_AXIS]; +unsigned long max_acceleration_units_per_sq_second[NUM_AXIS]; // Use M201 to override by software +float minimumfeedrate; +float acceleration; // Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX +float retract_acceleration; // mm/s^2 filament pull-pack and push-forward while standing still in the other axis M204 TXXXX +float max_xy_jerk; //speed than can be stopped at once, if i understand correctly. +float max_z_jerk; +float max_e_jerk; +float mintravelfeedrate; +unsigned long axis_steps_per_sqr_second[NUM_AXIS]; + +#ifdef ENABLE_AUTO_BED_LEVELING +// this holds the required transform to compensate for bed level +matrix_3x3 plan_bed_level_matrix = { + 1.0, 0.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 0.0, 1.0 +}; +#endif // #ifdef ENABLE_AUTO_BED_LEVELING + +// The current position of the tool in absolute steps +long position[NUM_AXIS]; //rescaled from extern when axis_steps_per_unit are changed by gcode +static float previous_speed[NUM_AXIS]; // Speed of previous path line segment +static float previous_nominal_speed; // Nominal speed of previous path line segment + +#ifdef AUTOTEMP +float autotemp_max=250; +float autotemp_min=210; +float autotemp_factor=0.1; +bool autotemp_enabled=false; +#endif + +unsigned char g_uc_extruder_last_move[4] = {0,0,0,0}; + +//=========================================================================== +//=================semi-private variables, used in inline functions ===== +//=========================================================================== +block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instfructions +volatile unsigned char block_buffer_head; // Index of the next block to be pushed +volatile unsigned char block_buffer_tail; // Index of the block to process now + +//=========================================================================== +//=============================private variables ============================ +//=========================================================================== +#ifdef PREVENT_DANGEROUS_EXTRUDE +float extrude_min_temp=EXTRUDE_MINTEMP; +#endif +#ifdef XY_FREQUENCY_LIMIT +#define MAX_FREQ_TIME (1000000.0/XY_FREQUENCY_LIMIT) +// Used for the frequency limit +static unsigned char old_direction_bits = 0; // Old direction bits. Used for speed calculations +static long x_segment_time[3]={MAX_FREQ_TIME + 1,0,0}; // Segment times (in us). Used for speed calculations +static long y_segment_time[3]={MAX_FREQ_TIME + 1,0,0}; +#endif + +#ifdef FILAMENT_SENSOR + static char meas_sample; //temporary variable to hold filament measurement sample +#endif + +// Returns the index of the next block in the ring buffer +// NOTE: Removed modulo (%) operator, which uses an expensive divide and multiplication. +static int8_t next_block_index(int8_t block_index) { + block_index++; + if (block_index == BLOCK_BUFFER_SIZE) { + block_index = 0; + } + return(block_index); +} + + +// Returns the index of the previous block in the ring buffer +static int8_t prev_block_index(int8_t block_index) { + if (block_index == 0) { + block_index = BLOCK_BUFFER_SIZE; + } + block_index--; + return(block_index); +} + +//=========================================================================== +//=============================functions ============================ +//=========================================================================== + +// Calculates the distance (not time) it takes to accelerate from initial_rate to target_rate using the +// given acceleration: +FORCE_INLINE float estimate_acceleration_distance(float initial_rate, float target_rate, float acceleration) +{ + if (acceleration!=0) { + return((target_rate*target_rate-initial_rate*initial_rate)/ + (2.0*acceleration)); + } + else { + return 0.0; // acceleration was 0, set acceleration distance to 0 + } +} + +// This function gives you the point at which you must start braking (at the rate of -acceleration) if +// you started at speed initial_rate and accelerated until this point and want to end at the final_rate after +// a total travel of distance. This can be used to compute the intersection point between acceleration and +// deceleration in the cases where the trapezoid has no plateau (i.e. never reaches maximum speed) + +FORCE_INLINE float intersection_distance(float initial_rate, float final_rate, float acceleration, float distance) +{ + if (acceleration!=0) { + return((2.0*acceleration*distance-initial_rate*initial_rate+final_rate*final_rate)/ + (4.0*acceleration) ); + } + else { + return 0.0; // acceleration was 0, set intersection distance to 0 + } +} + +// Calculates trapezoid parameters so that the entry- and exit-speed is compensated by the provided factors. + +void calculate_trapezoid_for_block(block_t *block, float entry_factor, float exit_factor) { + unsigned long initial_rate = ceil(block->nominal_rate*entry_factor); // (step/min) + unsigned long final_rate = ceil(block->nominal_rate*exit_factor); // (step/min) + + // Limit minimal step rate (Otherwise the timer will overflow.) + if(initial_rate <120) { + initial_rate=120; + } + if(final_rate < 120) { + final_rate=120; + } + + long acceleration = block->acceleration_st; + int32_t accelerate_steps = + ceil(estimate_acceleration_distance(initial_rate, block->nominal_rate, acceleration)); + int32_t decelerate_steps = + floor(estimate_acceleration_distance(block->nominal_rate, final_rate, -acceleration)); + + // Calculate the size of Plateau of Nominal Rate. + int32_t plateau_steps = block->step_event_count-accelerate_steps-decelerate_steps; + + // Is the Plateau of Nominal Rate smaller than nothing? That means no cruising, and we will + // have to use intersection_distance() to calculate when to abort acceleration and start braking + // in order to reach the final_rate exactly at the end of this block. + if (plateau_steps < 0) { + accelerate_steps = ceil(intersection_distance(initial_rate, final_rate, acceleration, block->step_event_count)); + accelerate_steps = max(accelerate_steps,0); // Check limits due to numerical round-off + accelerate_steps = min((uint32_t)accelerate_steps,block->step_event_count);//(We can cast here to unsigned, because the above line ensures that we are above zero) + plateau_steps = 0; + } + +#ifdef ADVANCE + volatile long initial_advance = block->advance*entry_factor*entry_factor; + volatile long final_advance = block->advance*exit_factor*exit_factor; +#endif // ADVANCE + + // block->accelerate_until = accelerate_steps; + // block->decelerate_after = accelerate_steps+plateau_steps; + CRITICAL_SECTION_START; // Fill variables used by the stepper in a critical section + if(block->busy == false) { // Don't update variables if block is busy. + block->accelerate_until = accelerate_steps; + block->decelerate_after = accelerate_steps+plateau_steps; + block->initial_rate = initial_rate; + block->final_rate = final_rate; +#ifdef ADVANCE + block->initial_advance = initial_advance; + block->final_advance = final_advance; +#endif //ADVANCE + } + CRITICAL_SECTION_END; +} + +// Calculates the maximum allowable speed at this point when you must be able to reach target_velocity using the +// acceleration within the allotted distance. +FORCE_INLINE float max_allowable_speed(float acceleration, float target_velocity, float distance) { + return sqrt(target_velocity*target_velocity-2*acceleration*distance); +} + +// "Junction jerk" in this context is the immediate change in speed at the junction of two blocks. +// This method will calculate the junction jerk as the euclidean distance between the nominal +// velocities of the respective blocks. +//inline float junction_jerk(block_t *before, block_t *after) { +// return sqrt( +// pow((before->speed_x-after->speed_x), 2)+pow((before->speed_y-after->speed_y), 2)); +//} + + +// The kernel called by planner_recalculate() when scanning the plan from last to first entry. +void planner_reverse_pass_kernel(block_t *previous, block_t *current, block_t *next) { + if(!current) { + return; + } + + if (next) { + // If entry speed is already at the maximum entry speed, no need to recheck. Block is cruising. + // If not, block in state of acceleration or deceleration. Reset entry speed to maximum and + // check for maximum allowable speed reductions to ensure maximum possible planned speed. + if (current->entry_speed != current->max_entry_speed) { + + // If nominal length true, max junction speed is guaranteed to be reached. Only compute + // for max allowable speed if block is decelerating and nominal length is false. + if ((!current->nominal_length_flag) && (current->max_entry_speed > next->entry_speed)) { + current->entry_speed = min( current->max_entry_speed, + max_allowable_speed(-current->acceleration,next->entry_speed,current->millimeters)); + } + else { + current->entry_speed = current->max_entry_speed; + } + current->recalculate_flag = true; + + } + } // Skip last block. Already initialized and set for recalculation. +} + +// planner_recalculate() needs to go over the current plan twice. Once in reverse and once forward. This +// implements the reverse pass. +void planner_reverse_pass() { + uint8_t block_index = block_buffer_head; + + //Make a local copy of block_buffer_tail, because the interrupt can alter it + CRITICAL_SECTION_START; + unsigned char tail = block_buffer_tail; + CRITICAL_SECTION_END + + if(((block_buffer_head-tail + BLOCK_BUFFER_SIZE) & (BLOCK_BUFFER_SIZE - 1)) > 3) { + block_index = (block_buffer_head - 3) & (BLOCK_BUFFER_SIZE - 1); + block_t *block[3] = { + NULL, NULL, NULL }; + while(block_index != tail) { + block_index = prev_block_index(block_index); + block[2]= block[1]; + block[1]= block[0]; + block[0] = &block_buffer[block_index]; + planner_reverse_pass_kernel(block[0], block[1], block[2]); + } + } +} + +// The kernel called by planner_recalculate() when scanning the plan from first to last entry. +void planner_forward_pass_kernel(block_t *previous, block_t *current, block_t *next) { + if(!previous) { + return; + } + + // If the previous block is an acceleration block, but it is not long enough to complete the + // full speed change within the block, we need to adjust the entry speed accordingly. Entry + // speeds have already been reset, maximized, and reverse planned by reverse planner. + // If nominal length is true, max junction speed is guaranteed to be reached. No need to recheck. + if (!previous->nominal_length_flag) { + if (previous->entry_speed < current->entry_speed) { + double entry_speed = min( current->entry_speed, + max_allowable_speed(-previous->acceleration,previous->entry_speed,previous->millimeters) ); + + // Check for junction speed change + if (current->entry_speed != entry_speed) { + current->entry_speed = entry_speed; + current->recalculate_flag = true; + } + } + } +} + +// planner_recalculate() needs to go over the current plan twice. Once in reverse and once forward. This +// implements the forward pass. +void planner_forward_pass() { + uint8_t block_index = block_buffer_tail; + block_t *block[3] = { + NULL, NULL, NULL }; + + while(block_index != block_buffer_head) { + block[0] = block[1]; + block[1] = block[2]; + block[2] = &block_buffer[block_index]; + planner_forward_pass_kernel(block[0],block[1],block[2]); + block_index = next_block_index(block_index); + } + planner_forward_pass_kernel(block[1], block[2], NULL); +} + +// Recalculates the trapezoid speed profiles for all blocks in the plan according to the +// entry_factor for each junction. Must be called by planner_recalculate() after +// updating the blocks. +void planner_recalculate_trapezoids() { + int8_t block_index = block_buffer_tail; + block_t *current; + block_t *next = NULL; + + while(block_index != block_buffer_head) { + current = next; + next = &block_buffer[block_index]; + if (current) { + // Recalculate if current block entry or exit junction speed has changed. + if (current->recalculate_flag || next->recalculate_flag) { + // NOTE: Entry and exit factors always > 0 by all previous logic operations. + calculate_trapezoid_for_block(current, current->entry_speed/current->nominal_speed, + next->entry_speed/current->nominal_speed); + current->recalculate_flag = false; // Reset current only to ensure next trapezoid is computed + } + } + block_index = next_block_index( block_index ); + } + // Last/newest block in buffer. Exit speed is set with MINIMUM_PLANNER_SPEED. Always recalculated. + if(next != NULL) { + calculate_trapezoid_for_block(next, next->entry_speed/next->nominal_speed, + MINIMUM_PLANNER_SPEED/next->nominal_speed); + next->recalculate_flag = false; + } +} + +// Recalculates the motion plan according to the following algorithm: +// +// 1. Go over every block in reverse order and calculate a junction speed reduction (i.e. block_t.entry_factor) +// so that: +// a. The junction jerk is within the set limit +// b. No speed reduction within one block requires faster deceleration than the one, true constant +// acceleration. +// 2. Go over every block in chronological order and dial down junction speed reduction values if +// a. The speed increase within one block would require faster accelleration than the one, true +// constant acceleration. +// +// When these stages are complete all blocks have an entry_factor that will allow all speed changes to +// be performed using only the one, true constant acceleration, and where no junction jerk is jerkier than +// the set limit. Finally it will: +// +// 3. Recalculate trapezoids for all blocks. + +void planner_recalculate() { + planner_reverse_pass(); + planner_forward_pass(); + planner_recalculate_trapezoids(); +} + +void plan_init() { + block_buffer_head = 0; + block_buffer_tail = 0; + memset(position, 0, sizeof(position)); // clear position + previous_speed[0] = 0.0; + previous_speed[1] = 0.0; + previous_speed[2] = 0.0; + previous_speed[3] = 0.0; + previous_nominal_speed = 0.0; +} + + + + +#ifdef AUTOTEMP +void getHighESpeed() +{ + static float oldt=0; + if(!autotemp_enabled){ + return; + } + if(degTargetHotend0()+2high) + { + high=se; + } + } + block_index = (block_index+1) & (BLOCK_BUFFER_SIZE - 1); + } + + float g=autotemp_min+high*autotemp_factor; + float t=g; + if(tautotemp_max) + t=autotemp_max; + if(oldt>t) + { + t=AUTOTEMP_OLDWEIGHT*oldt+(1-AUTOTEMP_OLDWEIGHT)*t; + } + oldt=t; + setTargetHotend0(t); +} +#endif + +void check_axes_activity() +{ + unsigned char x_active = 0; + unsigned char y_active = 0; + unsigned char z_active = 0; + unsigned char e_active = 0; + unsigned char tail_fan_speed = fanSpeed; + #ifdef BARICUDA + unsigned char tail_valve_pressure = ValvePressure; + unsigned char tail_e_to_p_pressure = EtoPPressure; + #endif + block_t *block; + + if(block_buffer_tail != block_buffer_head) + { + uint8_t block_index = block_buffer_tail; + tail_fan_speed = block_buffer[block_index].fan_speed; + #ifdef BARICUDA + tail_valve_pressure = block_buffer[block_index].valve_pressure; + tail_e_to_p_pressure = block_buffer[block_index].e_to_p_pressure; + #endif + while(block_index != block_buffer_head) + { + block = &block_buffer[block_index]; + if(block->steps_x != 0) x_active++; + if(block->steps_y != 0) y_active++; + if(block->steps_z != 0) z_active++; + if(block->steps_e != 0) e_active++; + block_index = (block_index+1) & (BLOCK_BUFFER_SIZE - 1); + } + } + if((DISABLE_X) && (x_active == 0)) disable_x(); + if((DISABLE_Y) && (y_active == 0)) disable_y(); + if((DISABLE_Z) && (z_active == 0)) disable_z(); + if((DISABLE_E) && (e_active == 0)) + { + disable_e0(); + disable_e1(); + disable_e2(); + disable_e3(); + } +#if defined(FAN_PIN) && FAN_PIN > -1 + #ifdef FAN_KICKSTART_TIME + static unsigned long fan_kick_end; + if (tail_fan_speed) { + if (fan_kick_end == 0) { + // Just starting up fan - run at full power. + fan_kick_end = millis() + FAN_KICKSTART_TIME; + tail_fan_speed = 255; + } else if (fan_kick_end > millis()) + // Fan still spinning up. + tail_fan_speed = 255; + } else { + fan_kick_end = 0; + } + #endif//FAN_KICKSTART_TIME + #ifdef FAN_SOFT_PWM + fanSpeedSoftPwm = tail_fan_speed; + #else + analogWrite(FAN_PIN,tail_fan_speed); + #endif//!FAN_SOFT_PWM +#endif//FAN_PIN > -1 +#ifdef AUTOTEMP + getHighESpeed(); +#endif + +#ifdef BARICUDA + #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1 + analogWrite(HEATER_1_PIN,tail_valve_pressure); + #endif + + #if defined(HEATER_2_PIN) && HEATER_2_PIN > -1 + analogWrite(HEATER_2_PIN,tail_e_to_p_pressure); + #endif +#endif +} + + +float junction_deviation = 0.1; +// Add a new linear movement to the buffer. steps_x, _y and _z is the absolute position in +// mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration +// calculation the caller must also provide the physical length of the line in millimeters. +#ifdef ENABLE_AUTO_BED_LEVELING +void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder) +#else +void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder) +#endif //ENABLE_AUTO_BED_LEVELING +{ + // Calculate the buffer head after we push this byte + int next_buffer_head = next_block_index(block_buffer_head); + + // If the buffer is full: good! That means we are well ahead of the robot. + // Rest here until there is room in the buffer. + while(block_buffer_tail == next_buffer_head) + { + manage_heater(); + manage_inactivity(); + lcd_update(); + } + +#ifdef ENABLE_AUTO_BED_LEVELING + apply_rotation_xyz(plan_bed_level_matrix, x, y, z); +#endif // ENABLE_AUTO_BED_LEVELING + + // The target position of the tool in absolute steps + // Calculate target position in absolute steps + //this should be done after the wait, because otherwise a M92 code within the gcode disrupts this calculation somehow + long target[4]; + target[X_AXIS] = lround(x*axis_steps_per_unit[X_AXIS]); + target[Y_AXIS] = lround(y*axis_steps_per_unit[Y_AXIS]); + target[Z_AXIS] = lround(z*axis_steps_per_unit[Z_AXIS]); + target[E_AXIS] = lround(e*axis_steps_per_unit[E_AXIS]); + + #ifdef PREVENT_DANGEROUS_EXTRUDE + if(target[E_AXIS]!=position[E_AXIS]) + { + if(degHotend(active_extruder)axis_steps_per_unit[E_AXIS]*EXTRUDE_MAXLENGTH) + { + position[E_AXIS]=target[E_AXIS]; //behave as if the move really took place, but ignore E part + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_ERR_LONG_EXTRUDE_STOP); + } + #endif + } + #endif + + // Prepare to set up new block + block_t *block = &block_buffer[block_buffer_head]; + + // Mark block as not busy (Not executed by the stepper interrupt) + block->busy = false; + + // Number of steps for each axis +#ifndef COREXY +// default non-h-bot planning +block->steps_x = labs(target[X_AXIS]-position[X_AXIS]); +block->steps_y = labs(target[Y_AXIS]-position[Y_AXIS]); +#else +// corexy planning +// these equations follow the form of the dA and dB equations on http://www.corexy.com/theory.html +block->steps_x = labs((target[X_AXIS]-position[X_AXIS]) + (target[Y_AXIS]-position[Y_AXIS])); +block->steps_y = labs((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-position[Y_AXIS])); +#endif + block->steps_z = labs(target[Z_AXIS]-position[Z_AXIS]); + block->steps_e = labs(target[E_AXIS]-position[E_AXIS]); + block->steps_e *= volumetric_multiplier[active_extruder]; + block->steps_e *= extrudemultiply; + block->steps_e /= 100; + block->step_event_count = max(block->steps_x, max(block->steps_y, max(block->steps_z, block->steps_e))); + + // Bail if this is a zero-length block + if (block->step_event_count <= dropsegments) + { + return; + } + + block->fan_speed = fanSpeed; + #ifdef BARICUDA + block->valve_pressure = ValvePressure; + block->e_to_p_pressure = EtoPPressure; + #endif + + // Compute direction bits for this block + block->direction_bits = 0; +#ifndef COREXY + if (target[X_AXIS] < position[X_AXIS]) + { + block->direction_bits |= (1<direction_bits |= (1<direction_bits |= (1<direction_bits |= (1<direction_bits |= (1<direction_bits |= (1<direction_bits |= (1<direction_bits |= (1<active_extruder = extruder; + + //enable active axes + #ifdef COREXY + if((block->steps_x != 0) || (block->steps_y != 0)) + { + enable_x(); + enable_y(); + } + #else + if(block->steps_x != 0) enable_x(); + if(block->steps_y != 0) enable_y(); + #endif +#ifndef Z_LATE_ENABLE + if(block->steps_z != 0) enable_z(); +#endif + + // Enable extruder(s) + if(block->steps_e != 0) + { + if (DISABLE_INACTIVE_EXTRUDER) //enable only selected extruder + { + + if(g_uc_extruder_last_move[0] > 0) g_uc_extruder_last_move[0]--; + if(g_uc_extruder_last_move[1] > 0) g_uc_extruder_last_move[1]--; + if(g_uc_extruder_last_move[2] > 0) g_uc_extruder_last_move[2]--; + if(g_uc_extruder_last_move[3] > 0) g_uc_extruder_last_move[3]--; + + switch(extruder) + { + case 0: + enable_e0(); + g_uc_extruder_last_move[0] = BLOCK_BUFFER_SIZE*2; + + if(g_uc_extruder_last_move[1] == 0) disable_e1(); + if(g_uc_extruder_last_move[2] == 0) disable_e2(); + if(g_uc_extruder_last_move[3] == 0) disable_e3(); + break; + case 1: + enable_e1(); + g_uc_extruder_last_move[1] = BLOCK_BUFFER_SIZE*2; + + if(g_uc_extruder_last_move[0] == 0) disable_e0(); + if(g_uc_extruder_last_move[2] == 0) disable_e2(); + if(g_uc_extruder_last_move[3] == 0) disable_e3(); + break; + case 2: + enable_e2(); + g_uc_extruder_last_move[2] = BLOCK_BUFFER_SIZE*2; + + if(g_uc_extruder_last_move[0] == 0) disable_e0(); + if(g_uc_extruder_last_move[1] == 0) disable_e1(); + if(g_uc_extruder_last_move[3] == 0) disable_e3(); + break; + case 3: + enable_e3(); + g_uc_extruder_last_move[3] = BLOCK_BUFFER_SIZE*2; + + if(g_uc_extruder_last_move[0] == 0) disable_e0(); + if(g_uc_extruder_last_move[1] == 0) disable_e1(); + if(g_uc_extruder_last_move[2] == 0) disable_e2(); + break; + } + } + else //enable all + { + enable_e0(); + enable_e1(); + enable_e2(); + enable_e3(); + } + } + + if (block->steps_e == 0) + { + if(feed_ratesteps_x <=dropsegments && block->steps_y <=dropsegments && block->steps_z <=dropsegments ) + { + block->millimeters = fabs(delta_mm[E_AXIS]); + } + else + { + #ifndef COREXY + block->millimeters = sqrt(square(delta_mm[X_AXIS]) + square(delta_mm[Y_AXIS]) + square(delta_mm[Z_AXIS])); + #else + block->millimeters = sqrt(square(delta_mm[X_HEAD]) + square(delta_mm[Y_HEAD]) + square(delta_mm[Z_AXIS])); + #endif + } + float inverse_millimeters = 1.0/block->millimeters; // Inverse millimeters to remove multiple divides + + // Calculate speed in mm/second for each axis. No divide by zero due to previous checks. + float inverse_second = feed_rate * inverse_millimeters; + + int moves_queued=(block_buffer_head-block_buffer_tail + BLOCK_BUFFER_SIZE) & (BLOCK_BUFFER_SIZE - 1); + + // slow down when de buffer starts to empty, rather than wait at the corner for a buffer refill +#ifdef OLD_SLOWDOWN + if(moves_queued < (BLOCK_BUFFER_SIZE * 0.5) && moves_queued > 1) + feed_rate = feed_rate*moves_queued / (BLOCK_BUFFER_SIZE * 0.5); +#endif + +#ifdef SLOWDOWN + // segment time im micro seconds + unsigned long segment_time = lround(1000000.0/inverse_second); + if ((moves_queued > 1) && (moves_queued < (BLOCK_BUFFER_SIZE * 0.5))) + { + if (segment_time < minsegmenttime) + { // buffer is draining, add extra time. The amount of time added increases if the buffer is still emptied more. + inverse_second=1000000.0/(segment_time+lround(2*(minsegmenttime-segment_time)/moves_queued)); + #ifdef XY_FREQUENCY_LIMIT + segment_time = lround(1000000.0/inverse_second); + #endif + } + } +#endif + // END OF SLOW DOWN SECTION + + + block->nominal_speed = block->millimeters * inverse_second; // (mm/sec) Always > 0 + block->nominal_rate = ceil(block->step_event_count * inverse_second); // (step/sec) Always > 0 + +#ifdef FILAMENT_SENSOR + //FMM update ring buffer used for delay with filament measurements + + + if((extruder==FILAMENT_SENSOR_EXTRUDER_NUM) && (delay_index2 > -1)) //only for extruder with filament sensor and if ring buffer is initialized + { + delay_dist = delay_dist + delta_mm[E_AXIS]; //increment counter with next move in e axis + + while (delay_dist >= (10*(MAX_MEASUREMENT_DELAY+1))) //check if counter is over max buffer size in mm + delay_dist = delay_dist - 10*(MAX_MEASUREMENT_DELAY+1); //loop around the buffer + while (delay_dist<0) + delay_dist = delay_dist + 10*(MAX_MEASUREMENT_DELAY+1); //loop around the buffer + + delay_index1=delay_dist/10.0; //calculate index + + //ensure the number is within range of the array after converting from floating point + if(delay_index1<0) + delay_index1=0; + else if (delay_index1>MAX_MEASUREMENT_DELAY) + delay_index1=MAX_MEASUREMENT_DELAY; + + if(delay_index1 != delay_index2) //moved index + { + meas_sample=widthFil_to_size_ratio()-100; //subtract off 100 to reduce magnitude - to store in a signed char + } + while( delay_index1 != delay_index2) + { + delay_index2 = delay_index2 + 1; + if(delay_index2>MAX_MEASUREMENT_DELAY) + delay_index2=delay_index2-(MAX_MEASUREMENT_DELAY+1); //loop around buffer when incrementing + if(delay_index2<0) + delay_index2=0; + else if (delay_index2>MAX_MEASUREMENT_DELAY) + delay_index2=MAX_MEASUREMENT_DELAY; + + measurement_delay[delay_index2]=meas_sample; + } + + + } +#endif + + + // Calculate and limit speed in mm/sec for each axis + float current_speed[4]; + float speed_factor = 1.0; //factor <=1 do decrease speed + for(int i=0; i < 4; i++) + { + current_speed[i] = delta_mm[i] * inverse_second; + if(fabs(current_speed[i]) > max_feedrate[i]) + speed_factor = min(speed_factor, max_feedrate[i] / fabs(current_speed[i])); + } + + // Max segement time in us. +#ifdef XY_FREQUENCY_LIMIT +#define MAX_FREQ_TIME (1000000.0/XY_FREQUENCY_LIMIT) + // Check and limit the xy direction change frequency + unsigned char direction_change = block->direction_bits ^ old_direction_bits; + old_direction_bits = block->direction_bits; + segment_time = lround((float)segment_time / speed_factor); + + if((direction_change & (1<nominal_speed *= speed_factor; + block->nominal_rate *= speed_factor; + } + + // Compute and limit the acceleration rate for the trapezoid generator. + float steps_per_mm = block->step_event_count/block->millimeters; + if(block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0) + { + block->acceleration_st = ceil(retract_acceleration * steps_per_mm); // convert to: acceleration steps/sec^2 + } + else + { + block->acceleration_st = ceil(acceleration * steps_per_mm); // convert to: acceleration steps/sec^2 + // Limit acceleration per axis + if(((float)block->acceleration_st * (float)block->steps_x / (float)block->step_event_count) > axis_steps_per_sqr_second[X_AXIS]) + block->acceleration_st = axis_steps_per_sqr_second[X_AXIS]; + if(((float)block->acceleration_st * (float)block->steps_y / (float)block->step_event_count) > axis_steps_per_sqr_second[Y_AXIS]) + block->acceleration_st = axis_steps_per_sqr_second[Y_AXIS]; + if(((float)block->acceleration_st * (float)block->steps_e / (float)block->step_event_count) > axis_steps_per_sqr_second[E_AXIS]) + block->acceleration_st = axis_steps_per_sqr_second[E_AXIS]; + if(((float)block->acceleration_st * (float)block->steps_z / (float)block->step_event_count ) > axis_steps_per_sqr_second[Z_AXIS]) + block->acceleration_st = axis_steps_per_sqr_second[Z_AXIS]; + } + block->acceleration = block->acceleration_st / steps_per_mm; + block->acceleration_rate = (long)((float)block->acceleration_st * (16777216.0 / (F_CPU / 8.0))); + +#if 0 // Use old jerk for now + // Compute path unit vector + double unit_vec[3]; + + unit_vec[X_AXIS] = delta_mm[X_AXIS]*inverse_millimeters; + unit_vec[Y_AXIS] = delta_mm[Y_AXIS]*inverse_millimeters; + unit_vec[Z_AXIS] = delta_mm[Z_AXIS]*inverse_millimeters; + + // Compute maximum allowable entry speed at junction by centripetal acceleration approximation. + // Let a circle be tangent to both previous and current path line segments, where the junction + // deviation is defined as the distance from the junction to the closest edge of the circle, + // colinear with the circle center. The circular segment joining the two paths represents the + // path of centripetal acceleration. Solve for max velocity based on max acceleration about the + // radius of the circle, defined indirectly by junction deviation. This may be also viewed as + // path width or max_jerk in the previous grbl version. This approach does not actually deviate + // from path, but used as a robust way to compute cornering speeds, as it takes into account the + // nonlinearities of both the junction angle and junction velocity. + double vmax_junction = MINIMUM_PLANNER_SPEED; // Set default max junction speed + + // Skip first block or when previous_nominal_speed is used as a flag for homing and offset cycles. + if ((block_buffer_head != block_buffer_tail) && (previous_nominal_speed > 0.0)) { + // Compute cosine of angle between previous and current path. (prev_unit_vec is negative) + // NOTE: Max junction velocity is computed without sin() or acos() by trig half angle identity. + double cos_theta = - previous_unit_vec[X_AXIS] * unit_vec[X_AXIS] + - previous_unit_vec[Y_AXIS] * unit_vec[Y_AXIS] + - previous_unit_vec[Z_AXIS] * unit_vec[Z_AXIS] ; + + // Skip and use default max junction speed for 0 degree acute junction. + if (cos_theta < 0.95) { + vmax_junction = min(previous_nominal_speed,block->nominal_speed); + // Skip and avoid divide by zero for straight junctions at 180 degrees. Limit to min() of nominal speeds. + if (cos_theta > -0.95) { + // Compute maximum junction velocity based on maximum acceleration and junction deviation + double sin_theta_d2 = sqrt(0.5*(1.0-cos_theta)); // Trig half angle identity. Always positive. + vmax_junction = min(vmax_junction, + sqrt(block->acceleration * junction_deviation * sin_theta_d2/(1.0-sin_theta_d2)) ); + } + } + } +#endif + // Start with a safe speed + float vmax_junction = max_xy_jerk/2; + float vmax_junction_factor = 1.0; + if(fabs(current_speed[Z_AXIS]) > max_z_jerk/2) + vmax_junction = min(vmax_junction, max_z_jerk/2); + if(fabs(current_speed[E_AXIS]) > max_e_jerk/2) + vmax_junction = min(vmax_junction, max_e_jerk/2); + vmax_junction = min(vmax_junction, block->nominal_speed); + float safe_speed = vmax_junction; + + if ((moves_queued > 1) && (previous_nominal_speed > 0.0001)) { + float jerk = sqrt(pow((current_speed[X_AXIS]-previous_speed[X_AXIS]), 2)+pow((current_speed[Y_AXIS]-previous_speed[Y_AXIS]), 2)); + // if((fabs(previous_speed[X_AXIS]) > 0.0001) || (fabs(previous_speed[Y_AXIS]) > 0.0001)) { + vmax_junction = block->nominal_speed; + // } + if (jerk > max_xy_jerk) { + vmax_junction_factor = (max_xy_jerk/jerk); + } + if(fabs(current_speed[Z_AXIS] - previous_speed[Z_AXIS]) > max_z_jerk) { + vmax_junction_factor= min(vmax_junction_factor, (max_z_jerk/fabs(current_speed[Z_AXIS] - previous_speed[Z_AXIS]))); + } + if(fabs(current_speed[E_AXIS] - previous_speed[E_AXIS]) > max_e_jerk) { + vmax_junction_factor = min(vmax_junction_factor, (max_e_jerk/fabs(current_speed[E_AXIS] - previous_speed[E_AXIS]))); + } + vmax_junction = min(previous_nominal_speed, vmax_junction * vmax_junction_factor); // Limit speed to max previous speed + } + block->max_entry_speed = vmax_junction; + + // Initialize block entry speed. Compute based on deceleration to user-defined MINIMUM_PLANNER_SPEED. + double v_allowable = max_allowable_speed(-block->acceleration,MINIMUM_PLANNER_SPEED,block->millimeters); + block->entry_speed = min(vmax_junction, v_allowable); + + // Initialize planner efficiency flags + // Set flag if block will always reach maximum junction speed regardless of entry/exit speeds. + // If a block can de/ac-celerate from nominal speed to zero within the length of the block, then + // the current block and next block junction speeds are guaranteed to always be at their maximum + // junction speeds in deceleration and acceleration, respectively. This is due to how the current + // block nominal speed limits both the current and next maximum junction speeds. Hence, in both + // the reverse and forward planners, the corresponding block junction speed will always be at the + // the maximum junction speed and may always be ignored for any speed reduction checks. + if (block->nominal_speed <= v_allowable) { + block->nominal_length_flag = true; + } + else { + block->nominal_length_flag = false; + } + block->recalculate_flag = true; // Always calculate trapezoid for new block + + // Update previous path unit_vector and nominal speed + memcpy(previous_speed, current_speed, sizeof(previous_speed)); // previous_speed[] = current_speed[] + previous_nominal_speed = block->nominal_speed; + + +#ifdef ADVANCE + // Calculate advance rate + if((block->steps_e == 0) || (block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0)) { + block->advance_rate = 0; + block->advance = 0; + } + else { + long acc_dist = estimate_acceleration_distance(0, block->nominal_rate, block->acceleration_st); + float advance = (STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K) * + (current_speed[E_AXIS] * current_speed[E_AXIS] * EXTRUSION_AREA * EXTRUSION_AREA)*256; + block->advance = advance; + if(acc_dist == 0) { + block->advance_rate = 0; + } + else { + block->advance_rate = advance / (float)acc_dist; + } + } + /* + SERIAL_ECHO_START; + SERIAL_ECHOPGM("advance :"); + SERIAL_ECHO(block->advance/256.0); + SERIAL_ECHOPGM("advance rate :"); + SERIAL_ECHOLN(block->advance_rate/256.0); + */ +#endif // ADVANCE + + calculate_trapezoid_for_block(block, block->entry_speed/block->nominal_speed, + safe_speed/block->nominal_speed); + + // Move buffer head + block_buffer_head = next_buffer_head; + + // Update position + memcpy(position, target, sizeof(target)); // position[] = target[] + + planner_recalculate(); + + st_wake_up(); +} + +#ifdef ENABLE_AUTO_BED_LEVELING +vector_3 plan_get_position() { + vector_3 position = vector_3(st_get_position_mm(X_AXIS), st_get_position_mm(Y_AXIS), st_get_position_mm(Z_AXIS)); + + //position.debug("in plan_get position"); + //plan_bed_level_matrix.debug("in plan_get bed_level"); + matrix_3x3 inverse = matrix_3x3::transpose(plan_bed_level_matrix); + //inverse.debug("in plan_get inverse"); + position.apply_rotation(inverse); + //position.debug("after rotation"); + + return position; +} +#endif // ENABLE_AUTO_BED_LEVELING + +#ifdef ENABLE_AUTO_BED_LEVELING +void plan_set_position(float x, float y, float z, const float &e) +{ + apply_rotation_xyz(plan_bed_level_matrix, x, y, z); +#else +void plan_set_position(const float &x, const float &y, const float &z, const float &e) +{ +#endif // ENABLE_AUTO_BED_LEVELING + + position[X_AXIS] = lround(x*axis_steps_per_unit[X_AXIS]); + position[Y_AXIS] = lround(y*axis_steps_per_unit[Y_AXIS]); + position[Z_AXIS] = lround(z*axis_steps_per_unit[Z_AXIS]); + position[E_AXIS] = lround(e*axis_steps_per_unit[E_AXIS]); + st_set_position(position[X_AXIS], position[Y_AXIS], position[Z_AXIS], position[E_AXIS]); + previous_nominal_speed = 0.0; // Resets planner junction speeds. Assumes start from rest. + previous_speed[0] = 0.0; + previous_speed[1] = 0.0; + previous_speed[2] = 0.0; + previous_speed[3] = 0.0; +} + +void plan_set_e_position(const float &e) +{ + position[E_AXIS] = lround(e*axis_steps_per_unit[E_AXIS]); + st_set_e_position(position[E_AXIS]); +} + +uint8_t movesplanned() +{ + return (block_buffer_head-block_buffer_tail + BLOCK_BUFFER_SIZE) & (BLOCK_BUFFER_SIZE - 1); +} + +#ifdef PREVENT_DANGEROUS_EXTRUDE +void set_extrude_min_temp(float temp) +{ + extrude_min_temp=temp; +} +#endif + +// Calculate the steps/s^2 acceleration rates, based on the mm/s^s +void reset_acceleration_rates() +{ + for(int8_t i=0; i < NUM_AXIS; i++) + { + axis_steps_per_sqr_second[i] = max_acceleration_units_per_sq_second[i] * axis_steps_per_unit[i]; + } +} diff --git a/Marlin/planner.h b/Marlin/planner.h new file mode 100644 index 000000000..0952b9dd3 --- /dev/null +++ b/Marlin/planner.h @@ -0,0 +1,162 @@ +/* + planner.h - buffers movement commands and manages the acceleration profile plan + Part of Grbl + + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +// This module is to be considered a sub-module of stepper.c. Please don't include +// this file from any other module. + +#ifndef planner_h +#define planner_h + +#include "Marlin.h" + +#ifdef ENABLE_AUTO_BED_LEVELING +#include "vector_3.h" +#endif // ENABLE_AUTO_BED_LEVELING + +// This struct is used when buffering the setup for each linear movement "nominal" values are as specified in +// the source g-code and may never actually be reached if acceleration management is active. +typedef struct { + // Fields used by the bresenham algorithm for tracing the line + long steps_x, steps_y, steps_z, steps_e; // Step count along each axis + unsigned long step_event_count; // The number of step events required to complete this block + long accelerate_until; // The index of the step event on which to stop acceleration + long decelerate_after; // The index of the step event on which to start decelerating + long acceleration_rate; // The acceleration rate used for acceleration calculation + unsigned char direction_bits; // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h) + unsigned char active_extruder; // Selects the active extruder + #ifdef ADVANCE + long advance_rate; + volatile long initial_advance; + volatile long final_advance; + float advance; + #endif + + // Fields used by the motion planner to manage acceleration +// float speed_x, speed_y, speed_z, speed_e; // Nominal mm/sec for each axis + float nominal_speed; // The nominal speed for this block in mm/sec + float entry_speed; // Entry speed at previous-current junction in mm/sec + float max_entry_speed; // Maximum allowable junction entry speed in mm/sec + float millimeters; // The total travel of this block in mm + float acceleration; // acceleration mm/sec^2 + unsigned char recalculate_flag; // Planner flag to recalculate trapezoids on entry junction + unsigned char nominal_length_flag; // Planner flag for nominal speed always reached + + // Settings for the trapezoid generator + unsigned long nominal_rate; // The nominal step rate for this block in step_events/sec + unsigned long initial_rate; // The jerk-adjusted step rate at start of block + unsigned long final_rate; // The minimal rate at exit + unsigned long acceleration_st; // acceleration steps/sec^2 + unsigned long fan_speed; + #ifdef BARICUDA + unsigned long valve_pressure; + unsigned long e_to_p_pressure; + #endif + volatile char busy; +} block_t; + +#ifdef ENABLE_AUTO_BED_LEVELING +// this holds the required transform to compensate for bed level +extern matrix_3x3 plan_bed_level_matrix; +#endif // #ifdef ENABLE_AUTO_BED_LEVELING + +// Initialize the motion plan subsystem +void plan_init(); + +// Add a new linear movement to the buffer. x, y and z is the signed, absolute target position in +// millimaters. Feed rate specifies the speed of the motion. + +#ifdef ENABLE_AUTO_BED_LEVELING +void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder); + +// Get the position applying the bed level matrix if enabled +vector_3 plan_get_position(); +#else +void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder); +#endif // ENABLE_AUTO_BED_LEVELING + +// Set position. Used for G92 instructions. +#ifdef ENABLE_AUTO_BED_LEVELING +void plan_set_position(float x, float y, float z, const float &e); +#else +void plan_set_position(const float &x, const float &y, const float &z, const float &e); +#endif // ENABLE_AUTO_BED_LEVELING + +void plan_set_e_position(const float &e); + + + +void check_axes_activity(); +uint8_t movesplanned(); //return the nr of buffered moves + +extern unsigned long minsegmenttime; +extern float max_feedrate[NUM_AXIS]; // set the max speeds +extern float axis_steps_per_unit[NUM_AXIS]; +extern unsigned long max_acceleration_units_per_sq_second[NUM_AXIS]; // Use M201 to override by software +extern float minimumfeedrate; +extern float acceleration; // Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX +extern float retract_acceleration; // mm/s^2 filament pull-pack and push-forward while standing still in the other axis M204 TXXXX +extern float max_xy_jerk; //speed than can be stopped at once, if i understand correctly. +extern float max_z_jerk; +extern float max_e_jerk; +extern float mintravelfeedrate; +extern unsigned long axis_steps_per_sqr_second[NUM_AXIS]; + +#ifdef AUTOTEMP + extern bool autotemp_enabled; + extern float autotemp_max; + extern float autotemp_min; + extern float autotemp_factor; +#endif + + + + +extern block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instfructions +extern volatile unsigned char block_buffer_head; // Index of the next block to be pushed +extern volatile unsigned char block_buffer_tail; +// Called when the current block is no longer needed. Discards the block and makes the memory +// availible for new blocks. +FORCE_INLINE void plan_discard_current_block() +{ + if (block_buffer_head != block_buffer_tail) { + block_buffer_tail = (block_buffer_tail + 1) & (BLOCK_BUFFER_SIZE - 1); + } +} + +// Gets the current block. Returns NULL if buffer empty +FORCE_INLINE block_t *plan_get_current_block() +{ + if (block_buffer_head == block_buffer_tail) { + return(NULL); + } + block_t *block = &block_buffer[block_buffer_tail]; + block->busy = true; + return(block); +} + +// Returns true if the buffer has a queued block, false otherwise +FORCE_INLINE bool blocks_queued() { return (block_buffer_head != block_buffer_tail); } + +#ifdef PREVENT_DANGEROUS_EXTRUDE +void set_extrude_min_temp(float temp); +#endif + +void reset_acceleration_rates(); +#endif diff --git a/Marlin/qr_solve.cpp b/Marlin/qr_solve.cpp new file mode 100644 index 000000000..f19d989d4 --- /dev/null +++ b/Marlin/qr_solve.cpp @@ -0,0 +1,1930 @@ +#include "qr_solve.h" + +#ifdef AUTO_BED_LEVELING_GRID + +#include +#include + +//# include "r8lib.h" + +int i4_min ( int i1, int i2 ) + +/******************************************************************************/ +/* + Purpose: + + I4_MIN returns the smaller of two I4's. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 29 August 2006 + + Author: + + John Burkardt + + Parameters: + + Input, int I1, I2, two integers to be compared. + + Output, int I4_MIN, the smaller of I1 and I2. +*/ +{ + int value; + + if ( i1 < i2 ) + { + value = i1; + } + else + { + value = i2; + } + return value; +} + +double r8_epsilon ( void ) + +/******************************************************************************/ +/* + Purpose: + + R8_EPSILON returns the R8 round off unit. + + Discussion: + + R8_EPSILON is a number R which is a power of 2 with the property that, + to the precision of the computer's arithmetic, + 1 < 1 + R + but + 1 = ( 1 + R / 2 ) + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 01 September 2012 + + Author: + + John Burkardt + + Parameters: + + Output, double R8_EPSILON, the R8 round-off unit. +*/ +{ + const double value = 2.220446049250313E-016; + + return value; +} + +double r8_max ( double x, double y ) + +/******************************************************************************/ +/* + Purpose: + + R8_MAX returns the maximum of two R8's. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 07 May 2006 + + Author: + + John Burkardt + + Parameters: + + Input, double X, Y, the quantities to compare. + + Output, double R8_MAX, the maximum of X and Y. +*/ +{ + double value; + + if ( y < x ) + { + value = x; + } + else + { + value = y; + } + return value; +} + +double r8_abs ( double x ) + +/******************************************************************************/ +/* + Purpose: + + R8_ABS returns the absolute value of an R8. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 07 May 2006 + + Author: + + John Burkardt + + Parameters: + + Input, double X, the quantity whose absolute value is desired. + + Output, double R8_ABS, the absolute value of X. +*/ +{ + double value; + + if ( 0.0 <= x ) + { + value = + x; + } + else + { + value = - x; + } + return value; +} + +double r8_sign ( double x ) + +/******************************************************************************/ +/* + Purpose: + + R8_SIGN returns the sign of an R8. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 08 May 2006 + + Author: + + John Burkardt + + Parameters: + + Input, double X, the number whose sign is desired. + + Output, double R8_SIGN, the sign of X. +*/ +{ + double value; + + if ( x < 0.0 ) + { + value = - 1.0; + } + else + { + value = + 1.0; + } + return value; +} + +double r8mat_amax ( int m, int n, double a[] ) + +/******************************************************************************/ +/* + Purpose: + + R8MAT_AMAX returns the maximum absolute value entry of an R8MAT. + + Discussion: + + An R8MAT is a doubly dimensioned array of R8 values, stored as a vector + in column-major order. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 07 September 2012 + + Author: + + John Burkardt + + Parameters: + + Input, int M, the number of rows in A. + + Input, int N, the number of columns in A. + + Input, double A[M*N], the M by N matrix. + + Output, double R8MAT_AMAX, the maximum absolute value entry of A. +*/ +{ + int i; + int j; + double value; + + value = r8_abs ( a[0+0*m] ); + + for ( j = 0; j < n; j++ ) + { + for ( i = 0; i < m; i++ ) + { + if ( value < r8_abs ( a[i+j*m] ) ) + { + value = r8_abs ( a[i+j*m] ); + } + } + } + return value; +} + +double *r8mat_copy_new ( int m, int n, double a1[] ) + +/******************************************************************************/ +/* + Purpose: + + R8MAT_COPY_NEW copies one R8MAT to a "new" R8MAT. + + Discussion: + + An R8MAT is a doubly dimensioned array of R8 values, stored as a vector + in column-major order. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 26 July 2008 + + Author: + + John Burkardt + + Parameters: + + Input, int M, N, the number of rows and columns. + + Input, double A1[M*N], the matrix to be copied. + + Output, double R8MAT_COPY_NEW[M*N], the copy of A1. +*/ +{ + double *a2; + int i; + int j; + + a2 = ( double * ) malloc ( m * n * sizeof ( double ) ); + + for ( j = 0; j < n; j++ ) + { + for ( i = 0; i < m; i++ ) + { + a2[i+j*m] = a1[i+j*m]; + } + } + + return a2; +} + +/******************************************************************************/ + +void daxpy ( int n, double da, double dx[], int incx, double dy[], int incy ) + +/******************************************************************************/ +/* + Purpose: + + DAXPY computes constant times a vector plus a vector. + + Discussion: + + This routine uses unrolled loops for increments equal to one. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 30 March 2007 + + Author: + + C version by John Burkardt + + Reference: + + Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, + LINPACK User's Guide, + SIAM, 1979. + + Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, + Basic Linear Algebra Subprograms for Fortran Usage, + Algorithm 539, + ACM Transactions on Mathematical Software, + Volume 5, Number 3, September 1979, pages 308-323. + + Parameters: + + Input, int N, the number of elements in DX and DY. + + Input, double DA, the multiplier of DX. + + Input, double DX[*], the first vector. + + Input, int INCX, the increment between successive entries of DX. + + Input/output, double DY[*], the second vector. + On output, DY[*] has been replaced by DY[*] + DA * DX[*]. + + Input, int INCY, the increment between successive entries of DY. +*/ +{ + int i; + int ix; + int iy; + int m; + + if ( n <= 0 ) + { + return; + } + + if ( da == 0.0 ) + { + return; + } +/* + Code for unequal increments or equal increments + not equal to 1. +*/ + if ( incx != 1 || incy != 1 ) + { + if ( 0 <= incx ) + { + ix = 0; + } + else + { + ix = ( - n + 1 ) * incx; + } + + if ( 0 <= incy ) + { + iy = 0; + } + else + { + iy = ( - n + 1 ) * incy; + } + + for ( i = 0; i < n; i++ ) + { + dy[iy] = dy[iy] + da * dx[ix]; + ix = ix + incx; + iy = iy + incy; + } + } +/* + Code for both increments equal to 1. +*/ + else + { + m = n % 4; + + for ( i = 0; i < m; i++ ) + { + dy[i] = dy[i] + da * dx[i]; + } + + for ( i = m; i < n; i = i + 4 ) + { + dy[i ] = dy[i ] + da * dx[i ]; + dy[i+1] = dy[i+1] + da * dx[i+1]; + dy[i+2] = dy[i+2] + da * dx[i+2]; + dy[i+3] = dy[i+3] + da * dx[i+3]; + } + } + return; +} +/******************************************************************************/ + +double ddot ( int n, double dx[], int incx, double dy[], int incy ) + +/******************************************************************************/ +/* + Purpose: + + DDOT forms the dot product of two vectors. + + Discussion: + + This routine uses unrolled loops for increments equal to one. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 30 March 2007 + + Author: + + C version by John Burkardt + + Reference: + + Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, + LINPACK User's Guide, + SIAM, 1979. + + Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, + Basic Linear Algebra Subprograms for Fortran Usage, + Algorithm 539, + ACM Transactions on Mathematical Software, + Volume 5, Number 3, September 1979, pages 308-323. + + Parameters: + + Input, int N, the number of entries in the vectors. + + Input, double DX[*], the first vector. + + Input, int INCX, the increment between successive entries in DX. + + Input, double DY[*], the second vector. + + Input, int INCY, the increment between successive entries in DY. + + Output, double DDOT, the sum of the product of the corresponding + entries of DX and DY. +*/ +{ + double dtemp; + int i; + int ix; + int iy; + int m; + + dtemp = 0.0; + + if ( n <= 0 ) + { + return dtemp; + } +/* + Code for unequal increments or equal increments + not equal to 1. +*/ + if ( incx != 1 || incy != 1 ) + { + if ( 0 <= incx ) + { + ix = 0; + } + else + { + ix = ( - n + 1 ) * incx; + } + + if ( 0 <= incy ) + { + iy = 0; + } + else + { + iy = ( - n + 1 ) * incy; + } + + for ( i = 0; i < n; i++ ) + { + dtemp = dtemp + dx[ix] * dy[iy]; + ix = ix + incx; + iy = iy + incy; + } + } +/* + Code for both increments equal to 1. +*/ + else + { + m = n % 5; + + for ( i = 0; i < m; i++ ) + { + dtemp = dtemp + dx[i] * dy[i]; + } + + for ( i = m; i < n; i = i + 5 ) + { + dtemp = dtemp + dx[i ] * dy[i ] + + dx[i+1] * dy[i+1] + + dx[i+2] * dy[i+2] + + dx[i+3] * dy[i+3] + + dx[i+4] * dy[i+4]; + } + } + return dtemp; +} +/******************************************************************************/ + +double dnrm2 ( int n, double x[], int incx ) + +/******************************************************************************/ +/* + Purpose: + + DNRM2 returns the euclidean norm of a vector. + + Discussion: + + DNRM2 ( X ) = sqrt ( X' * X ) + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 30 March 2007 + + Author: + + C version by John Burkardt + + Reference: + + Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, + LINPACK User's Guide, + SIAM, 1979. + + Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, + Basic Linear Algebra Subprograms for Fortran Usage, + Algorithm 539, + ACM Transactions on Mathematical Software, + Volume 5, Number 3, September 1979, pages 308-323. + + Parameters: + + Input, int N, the number of entries in the vector. + + Input, double X[*], the vector whose norm is to be computed. + + Input, int INCX, the increment between successive entries of X. + + Output, double DNRM2, the Euclidean norm of X. +*/ +{ + double absxi; + int i; + int ix; + double norm; + double scale; + double ssq; + double value; + + if ( n < 1 || incx < 1 ) + { + norm = 0.0; + } + else if ( n == 1 ) + { + norm = r8_abs ( x[0] ); + } + else + { + scale = 0.0; + ssq = 1.0; + ix = 0; + + for ( i = 0; i < n; i++ ) + { + if ( x[ix] != 0.0 ) + { + absxi = r8_abs ( x[ix] ); + if ( scale < absxi ) + { + ssq = 1.0 + ssq * ( scale / absxi ) * ( scale / absxi ); + scale = absxi; + } + else + { + ssq = ssq + ( absxi / scale ) * ( absxi / scale ); + } + } + ix = ix + incx; + } + + norm = scale * sqrt ( ssq ); + } + + return norm; +} +/******************************************************************************/ + +void dqrank ( double a[], int lda, int m, int n, double tol, int *kr, + int jpvt[], double qraux[] ) + +/******************************************************************************/ +/* + Purpose: + + DQRANK computes the QR factorization of a rectangular matrix. + + Discussion: + + This routine is used in conjunction with DQRLSS to solve + overdetermined, underdetermined and singular linear systems + in a least squares sense. + + DQRANK uses the LINPACK subroutine DQRDC to compute the QR + factorization, with column pivoting, of an M by N matrix A. + The numerical rank is determined using the tolerance TOL. + + Note that on output, ABS ( A(1,1) ) / ABS ( A(KR,KR) ) is an estimate + of the condition number of the matrix of independent columns, + and of R. This estimate will be <= 1/TOL. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 21 April 2012 + + Author: + + C version by John Burkardt. + + Reference: + + Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, + LINPACK User's Guide, + SIAM, 1979, + ISBN13: 978-0-898711-72-1, + LC: QA214.L56. + + Parameters: + + Input/output, double A[LDA*N]. On input, the matrix whose + decomposition is to be computed. On output, the information from DQRDC. + The triangular matrix R of the QR factorization is contained in the + upper triangle and information needed to recover the orthogonal + matrix Q is stored below the diagonal in A and in the vector QRAUX. + + Input, int LDA, the leading dimension of A, which must + be at least M. + + Input, int M, the number of rows of A. + + Input, int N, the number of columns of A. + + Input, double TOL, a relative tolerance used to determine the + numerical rank. The problem should be scaled so that all the elements + of A have roughly the same absolute accuracy, EPS. Then a reasonable + value for TOL is roughly EPS divided by the magnitude of the largest + element. + + Output, int *KR, the numerical rank. + + Output, int JPVT[N], the pivot information from DQRDC. + Columns JPVT(1), ..., JPVT(KR) of the original matrix are linearly + independent to within the tolerance TOL and the remaining columns + are linearly dependent. + + Output, double QRAUX[N], will contain extra information defining + the QR factorization. +*/ +{ + int i; + int j; + int job; + int k; + double *work; + + for ( i = 0; i < n; i++ ) + { + jpvt[i] = 0; + } + + work = ( double * ) malloc ( n * sizeof ( double ) ); + job = 1; + + dqrdc ( a, lda, m, n, qraux, jpvt, work, job ); + + *kr = 0; + k = i4_min ( m, n ); + + for ( j = 0; j < k; j++ ) + { + if ( r8_abs ( a[j+j*lda] ) <= tol * r8_abs ( a[0+0*lda] ) ) + { + return; + } + *kr = j + 1; + } + + free ( work ); + + return; +} +/******************************************************************************/ + +void dqrdc ( double a[], int lda, int n, int p, double qraux[], int jpvt[], + double work[], int job ) + +/******************************************************************************/ +/* + Purpose: + + DQRDC computes the QR factorization of a real rectangular matrix. + + Discussion: + + DQRDC uses Householder transformations. + + Column pivoting based on the 2-norms of the reduced columns may be + performed at the user's option. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 07 June 2005 + + Author: + + C version by John Burkardt. + + Reference: + + Jack Dongarra, Cleve Moler, Jim Bunch and Pete Stewart, + LINPACK User's Guide, + SIAM, (Society for Industrial and Applied Mathematics), + 3600 University City Science Center, + Philadelphia, PA, 19104-2688. + ISBN 0-89871-172-X + + Parameters: + + Input/output, double A(LDA,P). On input, the N by P matrix + whose decomposition is to be computed. On output, A contains in + its upper triangle the upper triangular matrix R of the QR + factorization. Below its diagonal A contains information from + which the orthogonal part of the decomposition can be recovered. + Note that if pivoting has been requested, the decomposition is not that + of the original matrix A but that of A with its columns permuted + as described by JPVT. + + Input, int LDA, the leading dimension of the array A. LDA must + be at least N. + + Input, int N, the number of rows of the matrix A. + + Input, int P, the number of columns of the matrix A. + + Output, double QRAUX[P], contains further information required + to recover the orthogonal part of the decomposition. + + Input/output, integer JPVT[P]. On input, JPVT contains integers that + control the selection of the pivot columns. The K-th column A(*,K) of A + is placed in one of three classes according to the value of JPVT(K). + > 0, then A(K) is an initial column. + = 0, then A(K) is a free column. + < 0, then A(K) is a final column. + Before the decomposition is computed, initial columns are moved to + the beginning of the array A and final columns to the end. Both + initial and final columns are frozen in place during the computation + and only free columns are moved. At the K-th stage of the + reduction, if A(*,K) is occupied by a free column it is interchanged + with the free column of largest reduced norm. JPVT is not referenced + if JOB == 0. On output, JPVT(K) contains the index of the column of the + original matrix that has been interchanged into the K-th column, if + pivoting was requested. + + Workspace, double WORK[P]. WORK is not referenced if JOB == 0. + + Input, int JOB, initiates column pivoting. + 0, no pivoting is done. + nonzero, pivoting is done. +*/ +{ + int j; + int jp; + int l; + int lup; + int maxj; + double maxnrm; + double nrmxl; + int pl; + int pu; + int swapj; + double t; + double tt; + + pl = 1; + pu = 0; +/* + If pivoting is requested, rearrange the columns. +*/ + if ( job != 0 ) + { + for ( j = 1; j <= p; j++ ) + { + swapj = ( 0 < jpvt[j-1] ); + + if ( jpvt[j-1] < 0 ) + { + jpvt[j-1] = -j; + } + else + { + jpvt[j-1] = j; + } + + if ( swapj ) + { + if ( j != pl ) + { + dswap ( n, a+0+(pl-1)*lda, 1, a+0+(j-1), 1 ); + } + jpvt[j-1] = jpvt[pl-1]; + jpvt[pl-1] = j; + pl = pl + 1; + } + } + pu = p; + + for ( j = p; 1 <= j; j-- ) + { + if ( jpvt[j-1] < 0 ) + { + jpvt[j-1] = -jpvt[j-1]; + + if ( j != pu ) + { + dswap ( n, a+0+(pu-1)*lda, 1, a+0+(j-1)*lda, 1 ); + jp = jpvt[pu-1]; + jpvt[pu-1] = jpvt[j-1]; + jpvt[j-1] = jp; + } + pu = pu - 1; + } + } + } +/* + Compute the norms of the free columns. +*/ + for ( j = pl; j <= pu; j++ ) + { + qraux[j-1] = dnrm2 ( n, a+0+(j-1)*lda, 1 ); + } + + for ( j = pl; j <= pu; j++ ) + { + work[j-1] = qraux[j-1]; + } +/* + Perform the Householder reduction of A. +*/ + lup = i4_min ( n, p ); + + for ( l = 1; l <= lup; l++ ) + { +/* + Bring the column of largest norm into the pivot position. +*/ + if ( pl <= l && l < pu ) + { + maxnrm = 0.0; + maxj = l; + for ( j = l; j <= pu; j++ ) + { + if ( maxnrm < qraux[j-1] ) + { + maxnrm = qraux[j-1]; + maxj = j; + } + } + + if ( maxj != l ) + { + dswap ( n, a+0+(l-1)*lda, 1, a+0+(maxj-1)*lda, 1 ); + qraux[maxj-1] = qraux[l-1]; + work[maxj-1] = work[l-1]; + jp = jpvt[maxj-1]; + jpvt[maxj-1] = jpvt[l-1]; + jpvt[l-1] = jp; + } + } +/* + Compute the Householder transformation for column L. +*/ + qraux[l-1] = 0.0; + + if ( l != n ) + { + nrmxl = dnrm2 ( n-l+1, a+l-1+(l-1)*lda, 1 ); + + if ( nrmxl != 0.0 ) + { + if ( a[l-1+(l-1)*lda] != 0.0 ) + { + nrmxl = nrmxl * r8_sign ( a[l-1+(l-1)*lda] ); + } + + dscal ( n-l+1, 1.0 / nrmxl, a+l-1+(l-1)*lda, 1 ); + a[l-1+(l-1)*lda] = 1.0 + a[l-1+(l-1)*lda]; +/* + Apply the transformation to the remaining columns, updating the norms. +*/ + for ( j = l + 1; j <= p; j++ ) + { + t = -ddot ( n-l+1, a+l-1+(l-1)*lda, 1, a+l-1+(j-1)*lda, 1 ) + / a[l-1+(l-1)*lda]; + daxpy ( n-l+1, t, a+l-1+(l-1)*lda, 1, a+l-1+(j-1)*lda, 1 ); + + if ( pl <= j && j <= pu ) + { + if ( qraux[j-1] != 0.0 ) + { + tt = 1.0 - pow ( r8_abs ( a[l-1+(j-1)*lda] ) / qraux[j-1], 2 ); + tt = r8_max ( tt, 0.0 ); + t = tt; + tt = 1.0 + 0.05 * tt * pow ( qraux[j-1] / work[j-1], 2 ); + + if ( tt != 1.0 ) + { + qraux[j-1] = qraux[j-1] * sqrt ( t ); + } + else + { + qraux[j-1] = dnrm2 ( n-l, a+l+(j-1)*lda, 1 ); + work[j-1] = qraux[j-1]; + } + } + } + } +/* + Save the transformation. +*/ + qraux[l-1] = a[l-1+(l-1)*lda]; + a[l-1+(l-1)*lda] = -nrmxl; + } + } + } + return; +} +/******************************************************************************/ + +int dqrls ( double a[], int lda, int m, int n, double tol, int *kr, double b[], + double x[], double rsd[], int jpvt[], double qraux[], int itask ) + +/******************************************************************************/ +/* + Purpose: + + DQRLS factors and solves a linear system in the least squares sense. + + Discussion: + + The linear system may be overdetermined, underdetermined or singular. + The solution is obtained using a QR factorization of the + coefficient matrix. + + DQRLS can be efficiently used to solve several least squares + problems with the same matrix A. The first system is solved + with ITASK = 1. The subsequent systems are solved with + ITASK = 2, to avoid the recomputation of the matrix factors. + The parameters KR, JPVT, and QRAUX must not be modified + between calls to DQRLS. + + DQRLS is used to solve in a least squares sense + overdetermined, underdetermined and singular linear systems. + The system is A*X approximates B where A is M by N. + B is a given M-vector, and X is the N-vector to be computed. + A solution X is found which minimimzes the sum of squares (2-norm) + of the residual, A*X - B. + + The numerical rank of A is determined using the tolerance TOL. + + DQRLS uses the LINPACK subroutine DQRDC to compute the QR + factorization, with column pivoting, of an M by N matrix A. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 10 September 2012 + + Author: + + C version by John Burkardt. + + Reference: + + David Kahaner, Cleve Moler, Steven Nash, + Numerical Methods and Software, + Prentice Hall, 1989, + ISBN: 0-13-627258-4, + LC: TA345.K34. + + Parameters: + + Input/output, double A[LDA*N], an M by N matrix. + On input, the matrix whose decomposition is to be computed. + In a least squares data fitting problem, A(I,J) is the + value of the J-th basis (model) function at the I-th data point. + On output, A contains the output from DQRDC. The triangular matrix R + of the QR factorization is contained in the upper triangle and + information needed to recover the orthogonal matrix Q is stored + below the diagonal in A and in the vector QRAUX. + + Input, int LDA, the leading dimension of A. + + Input, int M, the number of rows of A. + + Input, int N, the number of columns of A. + + Input, double TOL, a relative tolerance used to determine the + numerical rank. The problem should be scaled so that all the elements + of A have roughly the same absolute accuracy EPS. Then a reasonable + value for TOL is roughly EPS divided by the magnitude of the largest + element. + + Output, int *KR, the numerical rank. + + Input, double B[M], the right hand side of the linear system. + + Output, double X[N], a least squares solution to the linear + system. + + Output, double RSD[M], the residual, B - A*X. RSD may + overwrite B. + + Workspace, int JPVT[N], required if ITASK = 1. + Columns JPVT(1), ..., JPVT(KR) of the original matrix are linearly + independent to within the tolerance TOL and the remaining columns + are linearly dependent. ABS ( A(1,1) ) / ABS ( A(KR,KR) ) is an estimate + of the condition number of the matrix of independent columns, + and of R. This estimate will be <= 1/TOL. + + Workspace, double QRAUX[N], required if ITASK = 1. + + Input, int ITASK. + 1, DQRLS factors the matrix A and solves the least squares problem. + 2, DQRLS assumes that the matrix A was factored with an earlier + call to DQRLS, and only solves the least squares problem. + + Output, int DQRLS, error code. + 0: no error + -1: LDA < M (fatal error) + -2: N < 1 (fatal error) + -3: ITASK < 1 (fatal error) +*/ +{ + int ind; + + if ( lda < m ) + { + /*fprintf ( stderr, "\n" ); + fprintf ( stderr, "DQRLS - Fatal error!\n" ); + fprintf ( stderr, " LDA < M.\n" );*/ + ind = -1; + return ind; + } + + if ( n <= 0 ) + { + /*fprintf ( stderr, "\n" ); + fprintf ( stderr, "DQRLS - Fatal error!\n" ); + fprintf ( stderr, " N <= 0.\n" );*/ + ind = -2; + return ind; + } + + if ( itask < 1 ) + { + /*fprintf ( stderr, "\n" ); + fprintf ( stderr, "DQRLS - Fatal error!\n" ); + fprintf ( stderr, " ITASK < 1.\n" );*/ + ind = -3; + return ind; + } + + ind = 0; +/* + Factor the matrix. +*/ + if ( itask == 1 ) + { + dqrank ( a, lda, m, n, tol, kr, jpvt, qraux ); + } +/* + Solve the least-squares problem. +*/ + dqrlss ( a, lda, m, n, *kr, b, x, rsd, jpvt, qraux ); + + return ind; +} +/******************************************************************************/ + +void dqrlss ( double a[], int lda, int m, int n, int kr, double b[], double x[], + double rsd[], int jpvt[], double qraux[] ) + +/******************************************************************************/ +/* + Purpose: + + DQRLSS solves a linear system in a least squares sense. + + Discussion: + + DQRLSS must be preceded by a call to DQRANK. + + The system is to be solved is + A * X = B + where + A is an M by N matrix with rank KR, as determined by DQRANK, + B is a given M-vector, + X is the N-vector to be computed. + + A solution X, with at most KR nonzero components, is found which + minimizes the 2-norm of the residual (A*X-B). + + Once the matrix A has been formed, DQRANK should be + called once to decompose it. Then, for each right hand + side B, DQRLSS should be called once to obtain the + solution and residual. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 10 September 2012 + + Author: + + C version by John Burkardt + + Parameters: + + Input, double A[LDA*N], the QR factorization information + from DQRANK. The triangular matrix R of the QR factorization is + contained in the upper triangle and information needed to recover + the orthogonal matrix Q is stored below the diagonal in A and in + the vector QRAUX. + + Input, int LDA, the leading dimension of A, which must + be at least M. + + Input, int M, the number of rows of A. + + Input, int N, the number of columns of A. + + Input, int KR, the rank of the matrix, as estimated by DQRANK. + + Input, double B[M], the right hand side of the linear system. + + Output, double X[N], a least squares solution to the + linear system. + + Output, double RSD[M], the residual, B - A*X. RSD may + overwrite B. + + Input, int JPVT[N], the pivot information from DQRANK. + Columns JPVT[0], ..., JPVT[KR-1] of the original matrix are linearly + independent to within the tolerance TOL and the remaining columns + are linearly dependent. + + Input, double QRAUX[N], auxiliary information from DQRANK + defining the QR factorization. +*/ +{ + int i; + int info; + int j; + int job; + int k; + double t; + + if ( kr != 0 ) + { + job = 110; + info = dqrsl ( a, lda, m, kr, qraux, b, rsd, rsd, x, rsd, rsd, job ); + } + + for ( i = 0; i < n; i++ ) + { + jpvt[i] = - jpvt[i]; + } + + for ( i = kr; i < n; i++ ) + { + x[i] = 0.0; + } + + for ( j = 1; j <= n; j++ ) + { + if ( jpvt[j-1] <= 0 ) + { + k = - jpvt[j-1]; + jpvt[j-1] = k; + + while ( k != j ) + { + t = x[j-1]; + x[j-1] = x[k-1]; + x[k-1] = t; + jpvt[k-1] = -jpvt[k-1]; + k = jpvt[k-1]; + } + } + } + return; +} +/******************************************************************************/ + +int dqrsl ( double a[], int lda, int n, int k, double qraux[], double y[], + double qy[], double qty[], double b[], double rsd[], double ab[], int job ) + +/******************************************************************************/ +/* + Purpose: + + DQRSL computes transformations, projections, and least squares solutions. + + Discussion: + + DQRSL requires the output of DQRDC. + + For K <= min(N,P), let AK be the matrix + + AK = ( A(JPVT[0]), A(JPVT(2)), ..., A(JPVT(K)) ) + + formed from columns JPVT[0], ..., JPVT(K) of the original + N by P matrix A that was input to DQRDC. If no pivoting was + done, AK consists of the first K columns of A in their + original order. DQRDC produces a factored orthogonal matrix Q + and an upper triangular matrix R such that + + AK = Q * (R) + (0) + + This information is contained in coded form in the arrays + A and QRAUX. + + The parameters QY, QTY, B, RSD, and AB are not referenced + if their computation is not requested and in this case + can be replaced by dummy variables in the calling program. + To save storage, the user may in some cases use the same + array for different parameters in the calling sequence. A + frequently occurring example is when one wishes to compute + any of B, RSD, or AB and does not need Y or QTY. In this + case one may identify Y, QTY, and one of B, RSD, or AB, while + providing separate arrays for anything else that is to be + computed. + + Thus the calling sequence + + dqrsl ( a, lda, n, k, qraux, y, dum, y, b, y, dum, 110, info ) + + will result in the computation of B and RSD, with RSD + overwriting Y. More generally, each item in the following + list contains groups of permissible identifications for + a single calling sequence. + + 1. (Y,QTY,B) (RSD) (AB) (QY) + + 2. (Y,QTY,RSD) (B) (AB) (QY) + + 3. (Y,QTY,AB) (B) (RSD) (QY) + + 4. (Y,QY) (QTY,B) (RSD) (AB) + + 5. (Y,QY) (QTY,RSD) (B) (AB) + + 6. (Y,QY) (QTY,AB) (B) (RSD) + + In any group the value returned in the array allocated to + the group corresponds to the last member of the group. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 07 June 2005 + + Author: + + C version by John Burkardt. + + Reference: + + Jack Dongarra, Cleve Moler, Jim Bunch and Pete Stewart, + LINPACK User's Guide, + SIAM, (Society for Industrial and Applied Mathematics), + 3600 University City Science Center, + Philadelphia, PA, 19104-2688. + ISBN 0-89871-172-X + + Parameters: + + Input, double A[LDA*P], contains the output of DQRDC. + + Input, int LDA, the leading dimension of the array A. + + Input, int N, the number of rows of the matrix AK. It must + have the same value as N in DQRDC. + + Input, int K, the number of columns of the matrix AK. K + must not be greater than min(N,P), where P is the same as in the + calling sequence to DQRDC. + + Input, double QRAUX[P], the auxiliary output from DQRDC. + + Input, double Y[N], a vector to be manipulated by DQRSL. + + Output, double QY[N], contains Q * Y, if requested. + + Output, double QTY[N], contains Q' * Y, if requested. + + Output, double B[K], the solution of the least squares problem + minimize norm2 ( Y - AK * B), + if its computation has been requested. Note that if pivoting was + requested in DQRDC, the J-th component of B will be associated with + column JPVT(J) of the original matrix A that was input into DQRDC. + + Output, double RSD[N], the least squares residual Y - AK * B, + if its computation has been requested. RSD is also the orthogonal + projection of Y onto the orthogonal complement of the column space + of AK. + + Output, double AB[N], the least squares approximation Ak * B, + if its computation has been requested. AB is also the orthogonal + projection of Y onto the column space of A. + + Input, integer JOB, specifies what is to be computed. JOB has + the decimal expansion ABCDE, with the following meaning: + + if A != 0, compute QY. + if B != 0, compute QTY. + if C != 0, compute QTY and B. + if D != 0, compute QTY and RSD. + if E != 0, compute QTY and AB. + + Note that a request to compute B, RSD, or AB automatically triggers + the computation of QTY, for which an array must be provided in the + calling sequence. + + Output, int DQRSL, is zero unless the computation of B has + been requested and R is exactly singular. In this case, INFO is the + index of the first zero diagonal element of R, and B is left unaltered. +*/ +{ + int cab; + int cb; + int cqty; + int cqy; + int cr; + int i; + int info; + int j; + int jj; + int ju; + double t; + double temp; +/* + Set INFO flag. +*/ + info = 0; +/* + Determine what is to be computed. +*/ + cqy = ( job / 10000 != 0 ); + cqty = ( ( job % 10000 ) != 0 ); + cb = ( ( job % 1000 ) / 100 != 0 ); + cr = ( ( job % 100 ) / 10 != 0 ); + cab = ( ( job % 10 ) != 0 ); + + ju = i4_min ( k, n-1 ); +/* + Special action when N = 1. +*/ + if ( ju == 0 ) + { + if ( cqy ) + { + qy[0] = y[0]; + } + + if ( cqty ) + { + qty[0] = y[0]; + } + + if ( cab ) + { + ab[0] = y[0]; + } + + if ( cb ) + { + if ( a[0+0*lda] == 0.0 ) + { + info = 1; + } + else + { + b[0] = y[0] / a[0+0*lda]; + } + } + + if ( cr ) + { + rsd[0] = 0.0; + } + return info; + } +/* + Set up to compute QY or QTY. +*/ + if ( cqy ) + { + for ( i = 1; i <= n; i++ ) + { + qy[i-1] = y[i-1]; + } + } + + if ( cqty ) + { + for ( i = 1; i <= n; i++ ) + { + qty[i-1] = y[i-1]; + } + } +/* + Compute QY. +*/ + if ( cqy ) + { + for ( jj = 1; jj <= ju; jj++ ) + { + j = ju - jj + 1; + + if ( qraux[j-1] != 0.0 ) + { + temp = a[j-1+(j-1)*lda]; + a[j-1+(j-1)*lda] = qraux[j-1]; + t = -ddot ( n-j+1, a+j-1+(j-1)*lda, 1, qy+j-1, 1 ) / a[j-1+(j-1)*lda]; + daxpy ( n-j+1, t, a+j-1+(j-1)*lda, 1, qy+j-1, 1 ); + a[j-1+(j-1)*lda] = temp; + } + } + } +/* + Compute Q'*Y. +*/ + if ( cqty ) + { + for ( j = 1; j <= ju; j++ ) + { + if ( qraux[j-1] != 0.0 ) + { + temp = a[j-1+(j-1)*lda]; + a[j-1+(j-1)*lda] = qraux[j-1]; + t = -ddot ( n-j+1, a+j-1+(j-1)*lda, 1, qty+j-1, 1 ) / a[j-1+(j-1)*lda]; + daxpy ( n-j+1, t, a+j-1+(j-1)*lda, 1, qty+j-1, 1 ); + a[j-1+(j-1)*lda] = temp; + } + } + } +/* + Set up to compute B, RSD, or AB. +*/ + if ( cb ) + { + for ( i = 1; i <= k; i++ ) + { + b[i-1] = qty[i-1]; + } + } + + if ( cab ) + { + for ( i = 1; i <= k; i++ ) + { + ab[i-1] = qty[i-1]; + } + } + + if ( cr && k < n ) + { + for ( i = k+1; i <= n; i++ ) + { + rsd[i-1] = qty[i-1]; + } + } + + if ( cab && k+1 <= n ) + { + for ( i = k+1; i <= n; i++ ) + { + ab[i-1] = 0.0; + } + } + + if ( cr ) + { + for ( i = 1; i <= k; i++ ) + { + rsd[i-1] = 0.0; + } + } +/* + Compute B. +*/ + if ( cb ) + { + for ( jj = 1; jj <= k; jj++ ) + { + j = k - jj + 1; + + if ( a[j-1+(j-1)*lda] == 0.0 ) + { + info = j; + break; + } + + b[j-1] = b[j-1] / a[j-1+(j-1)*lda]; + + if ( j != 1 ) + { + t = -b[j-1]; + daxpy ( j-1, t, a+0+(j-1)*lda, 1, b, 1 ); + } + } + } +/* + Compute RSD or AB as required. +*/ + if ( cr || cab ) + { + for ( jj = 1; jj <= ju; jj++ ) + { + j = ju - jj + 1; + + if ( qraux[j-1] != 0.0 ) + { + temp = a[j-1+(j-1)*lda]; + a[j-1+(j-1)*lda] = qraux[j-1]; + + if ( cr ) + { + t = -ddot ( n-j+1, a+j-1+(j-1)*lda, 1, rsd+j-1, 1 ) + / a[j-1+(j-1)*lda]; + daxpy ( n-j+1, t, a+j-1+(j-1)*lda, 1, rsd+j-1, 1 ); + } + + if ( cab ) + { + t = -ddot ( n-j+1, a+j-1+(j-1)*lda, 1, ab+j-1, 1 ) + / a[j-1+(j-1)*lda]; + daxpy ( n-j+1, t, a+j-1+(j-1)*lda, 1, ab+j-1, 1 ); + } + a[j-1+(j-1)*lda] = temp; + } + } + } + + return info; +} +/******************************************************************************/ + +/******************************************************************************/ + +void dscal ( int n, double sa, double x[], int incx ) + +/******************************************************************************/ +/* + Purpose: + + DSCAL scales a vector by a constant. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 30 March 2007 + + Author: + + C version by John Burkardt + + Reference: + + Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, + LINPACK User's Guide, + SIAM, 1979. + + Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, + Basic Linear Algebra Subprograms for Fortran Usage, + Algorithm 539, + ACM Transactions on Mathematical Software, + Volume 5, Number 3, September 1979, pages 308-323. + + Parameters: + + Input, int N, the number of entries in the vector. + + Input, double SA, the multiplier. + + Input/output, double X[*], the vector to be scaled. + + Input, int INCX, the increment between successive entries of X. +*/ +{ + int i; + int ix; + int m; + + if ( n <= 0 ) + { + } + else if ( incx == 1 ) + { + m = n % 5; + + for ( i = 0; i < m; i++ ) + { + x[i] = sa * x[i]; + } + + for ( i = m; i < n; i = i + 5 ) + { + x[i] = sa * x[i]; + x[i+1] = sa * x[i+1]; + x[i+2] = sa * x[i+2]; + x[i+3] = sa * x[i+3]; + x[i+4] = sa * x[i+4]; + } + } + else + { + if ( 0 <= incx ) + { + ix = 0; + } + else + { + ix = ( - n + 1 ) * incx; + } + + for ( i = 0; i < n; i++ ) + { + x[ix] = sa * x[ix]; + ix = ix + incx; + } + } + return; +} +/******************************************************************************/ + + +void dswap ( int n, double x[], int incx, double y[], int incy ) + +/******************************************************************************/ +/* + Purpose: + + DSWAP interchanges two vectors. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 30 March 2007 + + Author: + + C version by John Burkardt + + Reference: + + Jack Dongarra, Cleve Moler, Jim Bunch, Pete Stewart, + LINPACK User's Guide, + SIAM, 1979. + + Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh, + Basic Linear Algebra Subprograms for Fortran Usage, + Algorithm 539, + ACM Transactions on Mathematical Software, + Volume 5, Number 3, September 1979, pages 308-323. + + Parameters: + + Input, int N, the number of entries in the vectors. + + Input/output, double X[*], one of the vectors to swap. + + Input, int INCX, the increment between successive entries of X. + + Input/output, double Y[*], one of the vectors to swap. + + Input, int INCY, the increment between successive elements of Y. +*/ +{ + int i; + int ix; + int iy; + int m; + double temp; + + if ( n <= 0 ) + { + } + else if ( incx == 1 && incy == 1 ) + { + m = n % 3; + + for ( i = 0; i < m; i++ ) + { + temp = x[i]; + x[i] = y[i]; + y[i] = temp; + } + + for ( i = m; i < n; i = i + 3 ) + { + temp = x[i]; + x[i] = y[i]; + y[i] = temp; + + temp = x[i+1]; + x[i+1] = y[i+1]; + y[i+1] = temp; + + temp = x[i+2]; + x[i+2] = y[i+2]; + y[i+2] = temp; + } + } + else + { + if ( 0 <= incx ) + { + ix = 0; + } + else + { + ix = ( - n + 1 ) * incx; + } + + if ( 0 <= incy ) + { + iy = 0; + } + else + { + iy = ( - n + 1 ) * incy; + } + + for ( i = 0; i < n; i++ ) + { + temp = x[ix]; + x[ix] = y[iy]; + y[iy] = temp; + ix = ix + incx; + iy = iy + incy; + } + + } + + return; +} +/******************************************************************************/ + +/******************************************************************************/ + +double *qr_solve ( int m, int n, double a[], double b[] ) + +/******************************************************************************/ +/* + Purpose: + + QR_SOLVE solves a linear system in the least squares sense. + + Discussion: + + If the matrix A has full column rank, then the solution X should be the + unique vector that minimizes the Euclidean norm of the residual. + + If the matrix A does not have full column rank, then the solution is + not unique; the vector X will minimize the residual norm, but so will + various other vectors. + + Licensing: + + This code is distributed under the GNU LGPL license. + + Modified: + + 11 September 2012 + + Author: + + John Burkardt + + Reference: + + David Kahaner, Cleve Moler, Steven Nash, + Numerical Methods and Software, + Prentice Hall, 1989, + ISBN: 0-13-627258-4, + LC: TA345.K34. + + Parameters: + + Input, int M, the number of rows of A. + + Input, int N, the number of columns of A. + + Input, double A[M*N], the matrix. + + Input, double B[M], the right hand side. + + Output, double QR_SOLVE[N], the least squares solution. +*/ +{ + double *a_qr; + int ind; + int itask; + int *jpvt; + int kr; + int lda; + double *qraux; + double *r; + double tol; + double *x; + + a_qr = r8mat_copy_new ( m, n, a ); + lda = m; + tol = r8_epsilon ( ) / r8mat_amax ( m, n, a_qr ); + x = ( double * ) malloc ( n * sizeof ( double ) ); + jpvt = ( int * ) malloc ( n * sizeof ( int ) ); + qraux = ( double * ) malloc ( n * sizeof ( double ) ); + r = ( double * ) malloc ( m * sizeof ( double ) ); + itask = 1; + + ind = dqrls ( a_qr, lda, m, n, tol, &kr, b, x, r, jpvt, qraux, itask ); + + free ( a_qr ); + free ( jpvt ); + free ( qraux ); + free ( r ); + + return x; +} +/******************************************************************************/ + +#endif diff --git a/Marlin/qr_solve.h b/Marlin/qr_solve.h new file mode 100644 index 000000000..b38086aad --- /dev/null +++ b/Marlin/qr_solve.h @@ -0,0 +1,22 @@ +#include "Configuration.h" + +#ifdef AUTO_BED_LEVELING_GRID + +void daxpy ( int n, double da, double dx[], int incx, double dy[], int incy ); +double ddot ( int n, double dx[], int incx, double dy[], int incy ); +double dnrm2 ( int n, double x[], int incx ); +void dqrank ( double a[], int lda, int m, int n, double tol, int *kr, + int jpvt[], double qraux[] ); +void dqrdc ( double a[], int lda, int n, int p, double qraux[], int jpvt[], + double work[], int job ); +int dqrls ( double a[], int lda, int m, int n, double tol, int *kr, double b[], + double x[], double rsd[], int jpvt[], double qraux[], int itask ); +void dqrlss ( double a[], int lda, int m, int n, int kr, double b[], double x[], + double rsd[], int jpvt[], double qraux[] ); +int dqrsl ( double a[], int lda, int n, int k, double qraux[], double y[], + double qy[], double qty[], double b[], double rsd[], double ab[], int job ); +void dscal ( int n, double sa, double x[], int incx ); +void dswap ( int n, double x[], int incx, double y[], int incy ); +double *qr_solve ( int m, int n, double a[], double b[] ); + +#endif diff --git a/Marlin/scripts/createSpeedLookupTable.py b/Marlin/scripts/createSpeedLookupTable.py new file mode 100755 index 000000000..13ed92d52 --- /dev/null +++ b/Marlin/scripts/createSpeedLookupTable.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +""" Generate the stepper delay lookup table for Marlin firmware. """ + +import argparse + +__author__ = "Ben Gamari " +__copyright__ = "Copyright 2012, Ben Gamari" +__license__ = "GPL" + +parser = argparse.ArgumentParser(description=__doc__) +parser.add_argument('-f', '--cpu-freq', type=int, default=16, help='CPU clockrate in MHz (default=16)') +parser.add_argument('-d', '--divider', type=int, default=8, help='Timer/counter pre-scale divider (default=8)') +args = parser.parse_args() + +cpu_freq = args.cpu_freq * 1000000 +timer_freq = cpu_freq / args.divider + +print "#ifndef SPEED_LOOKUPTABLE_H" +print "#define SPEED_LOOKUPTABLE_H" +print +print '#include "Marlin.h"' +print + +print "const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {" +a = [ timer_freq / ((i*256)+(args.cpu_freq*2)) for i in range(256) ] +b = [ a[i] - a[i+1] for i in range(255) ] +b.append(b[-1]) +for i in range(32): + print " ", + for j in range(8): + print "{%d, %d}," % (a[8*i+j], b[8*i+j]), + print +print "};" +print + +print "const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {" +a = [ timer_freq / ((i*8)+(args.cpu_freq*2)) for i in range(256) ] +b = [ a[i] - a[i+1] for i in range(255) ] +b.append(b[-1]) +for i in range(32): + print " ", + for j in range(8): + print "{%d, %d}," % (a[8*i+j], b[8*i+j]), + print +print "};" +print + +print "#endif" + diff --git a/Marlin/scripts/createTemperatureLookupMarlin.py b/Marlin/scripts/createTemperatureLookupMarlin.py new file mode 100755 index 000000000..4f54c2833 --- /dev/null +++ b/Marlin/scripts/createTemperatureLookupMarlin.py @@ -0,0 +1,156 @@ +#!/usr/bin/python +"""Thermistor Value Lookup Table Generator + +Generates lookup to temperature values for use in a microcontroller in C format based on: +http://en.wikipedia.org/wiki/Steinhart-Hart_equation + +The main use is for Arduino programs that read data from the circuit board described here: +http://make.rrrf.org/ts-1.0 + +Usage: python createTemperatureLookup.py [options] + +Options: + -h, --help show this help + --rp=... pull-up resistor + --t1=ttt:rrr low temperature temperature:resistance point (around 25 degC) + --t2=ttt:rrr middle temperature temperature:resistance point (around 150 degC) + --t3=ttt:rrr high temperature temperature:resistance point (around 250 degC) + --num-temps=... the number of temperature points to calculate (default: 36) +""" + +from math import * +import sys +import getopt + +"Constants" +ZERO = 273.15 # zero point of Kelvin scale +VADC = 5 # ADC voltage +VCC = 5 # supply voltage +ARES = 2**10 # 10 Bit ADC resolution +VSTEP = VADC / ARES # ADC voltage resolution +TMIN = 0 # lowest temperature in table +TMAX = 350 # highest temperature in table + +class Thermistor: + "Class to do the thermistor maths" + def __init__(self, rp, t1, r1, t2, r2, t3, r3): + l1 = log(r1) + l2 = log(r2) + l3 = log(r3) + y1 = 1.0 / (t1 + ZERO) # adjust scale + y2 = 1.0 / (t2 + ZERO) + y3 = 1.0 / (t3 + ZERO) + x = (y2 - y1) / (l2 - l1) + y = (y3 - y1) / (l3 - l1) + c = (y - x) / ((l3 - l2) * (l1 + l2 + l3)) + b = x - c * (l1**2 + l2**2 + l1*l2) + a = y1 - (b + l1**2 *c)*l1 + + if c < 0: + print "//////////////////////////////////////////////////////////////////////////////////////" + print "// WARNING: negative coefficient 'c'! Something may be wrong with the measurements! //" + print "//////////////////////////////////////////////////////////////////////////////////////" + c = -c + self.c1 = a # Steinhart-Hart coefficients + self.c2 = b + self.c3 = c + self.rp = rp # pull-up resistance + + def resol(self, adc): + "Convert ADC reading into a resolution" + res = self.temp(adc)-self.temp(adc+1) + return res + + def voltage(self, adc): + "Convert ADC reading into a Voltage" + return adc * VSTEP # convert the 10 bit ADC value to a voltage + + def resist(self, adc): + "Convert ADC reading into a resistance in Ohms" + r = self.rp * self.voltage(adc) / (VCC - self.voltage(adc)) # resistance of thermistor + return r + + def temp(self, adc): + "Convert ADC reading into a temperature in Celcius" + l = log(self.resist(adc)) + Tinv = self.c1 + self.c2*l + self.c3* l**3) # inverse temperature + return (1/Tinv) - ZERO # temperature + + def adc(self, temp): + "Convert temperature into a ADC reading" + x = (self.c1 - (1.0 / (temp+ZERO))) / (2*self.c3) + y = sqrt((self.c2 / (3*self.c3)**3 + x**2) + r = exp((y-x)**(1.0/3) - (y+x)**(1.0/3)) + return (r / (self.rp + r)) * ARES + +def main(argv): + "Default values" + t1 = 25 # low temperature in Kelvin (25 degC) + r1 = 100000 # resistance at low temperature (10 kOhm) + t2 = 150 # middle temperature in Kelvin (150 degC) + r2 = 1641.9 # resistance at middle temperature (1.6 KOhm) + t3 = 250 # high temperature in Kelvin (250 degC) + r3 = 226.15 # resistance at high temperature (226.15 Ohm) + rp = 4700; # pull-up resistor (4.7 kOhm) + num_temps = 36; # number of entries for look-up table + + try: + opts, args = getopt.getopt(argv, "h", ["help", "rp=", "t1=", "t2=", "t3=", "num-temps="]) + except getopt.GetoptError as err: + print str(err) + usage() + sys.exit(2) + + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit() + elif opt == "--rp": + rp = int(arg) + elif opt == "--t1": + arg = arg.split(':') + t1 = float(arg[0]) + r1 = float(arg[1]) + elif opt == "--t2": + arg = arg.split(':') + t2 = float(arg[0]) + r2 = float(arg[1]) + elif opt == "--t3": + arg = arg.split(':') + t3 = float(arg[0]) + r3 = float(arg[1]) + elif opt == "--num-temps": + num_temps = int(arg) + + t = Thermistor(rp, t1, r1, t2, r2, t3, r3) + increment = int((ARES-1)/(num_temps-1)); + step = (TMIN-TMAX) / (num_temps-1) + low_bound = t.temp(ARES-1); + up_bound = t.temp(1); + min_temp = int(TMIN if TMIN > low_bound else low_bound) + max_temp = int(TMAX if TMAX < up_bound else up_bound) + temps = range(max_temp, TMIN+step, step); + + print "// Thermistor lookup table for Marlin" + print "// ./createTemperatureLookupMarlin.py --rp=%s --t1=%s:%s --t2=%s:%s --t3=%s:%s --num-temps=%s" % (rp, t1, r1, t2, r2, t3, r3, num_temps) + print "// Steinhart-Hart Coefficients: a=%.15g, b=%.15g, c=%.15g " % (t.c1, t.c2, t.c3) + print "// Theoretical limits of termistor: %.2f to %.2f degC" % (low_bound, up_bound) + print + print "#define NUMTEMPS %s" % (len(temps)) + print "const short temptable[NUMTEMPS][2] PROGMEM = {" + + for temp in temps: + adc = t.adc(temp) + print " { (short) (%7.2f * OVERSAMPLENR ), %4s }%s // v=%.3f\tr=%.3f\tres=%.3f degC/count" % (adc , temp, \ + ',' if temp != temps[-1] else ' ', \ + t.voltage(adc), \ + t.resist( adc), \ + t.resol( adc) \ + ) + print "};" + +def usage(): + print __doc__ + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/Marlin/speed_lookuptable.h b/Marlin/speed_lookuptable.h index 5c54a08d1..b7c00f1ae 100644 --- a/Marlin/speed_lookuptable.h +++ b/Marlin/speed_lookuptable.h @@ -1,9 +1,11 @@ #ifndef SPEED_LOOKUPTABLE_H #define SPEED_LOOKUPTABLE_H -#include +#include "Marlin.h" -uint16_t speed_lookuptable_fast[256][2] PROGMEM = { +#if F_CPU == 16000000 + +const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {\ { 62500, 55556}, { 6944, 3268}, { 3676, 1176}, { 2500, 607}, { 1893, 369}, { 1524, 249}, { 1275, 179}, { 1096, 135}, { 961, 105}, { 856, 85}, { 771, 69}, { 702, 58}, { 644, 49}, { 595, 42}, { 553, 37}, { 516, 32}, { 484, 28}, { 456, 25}, { 431, 23}, { 408, 20}, { 388, 19}, { 369, 16}, { 353, 16}, { 337, 14}, @@ -35,9 +37,10 @@ uint16_t speed_lookuptable_fast[256][2] PROGMEM = { { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 1}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 1}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 1}, { 31, 0}, { 31, 0}, { 31, 0}, -{ 31, 0}, { 31, 0}, { 31, 0}, { 31, 1}, { 30, 0}, { 30, 0}, { 30, 0}, { 30, 0}, +{ 31, 0}, { 31, 0}, { 31, 0}, { 31, 1}, { 30, 0}, { 30, 0}, { 30, 0}, { 30, 0} }; -uint16_t speed_lookuptable_slow[256][2] PROGMEM = { + +const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {\ { 62500, 12500}, { 50000, 8334}, { 41666, 5952}, { 35714, 4464}, { 31250, 3473}, { 27777, 2777}, { 25000, 2273}, { 22727, 1894}, { 20833, 1603}, { 19230, 1373}, { 17857, 1191}, { 16666, 1041}, { 15625, 920}, { 14705, 817}, { 13888, 731}, { 13157, 657}, { 12500, 596}, { 11904, 541}, { 11363, 494}, { 10869, 453}, { 10416, 416}, { 10000, 385}, { 9615, 356}, { 9259, 331}, @@ -69,7 +72,81 @@ uint16_t speed_lookuptable_slow[256][2] PROGMEM = { { 1096, 5}, { 1091, 5}, { 1086, 4}, { 1082, 5}, { 1077, 5}, { 1072, 4}, { 1068, 5}, { 1063, 4}, { 1059, 5}, { 1054, 4}, { 1050, 4}, { 1046, 5}, { 1041, 4}, { 1037, 4}, { 1033, 5}, { 1028, 4}, { 1024, 4}, { 1020, 4}, { 1016, 4}, { 1012, 4}, { 1008, 4}, { 1004, 4}, { 1000, 4}, { 996, 4}, -{ 992, 4}, { 988, 4}, { 984, 4}, { 980, 4}, { 976, 4}, { 972, 4}, { 968, 3}, { 965, 3}, +{ 992, 4}, { 988, 4}, { 984, 4}, { 980, 4}, { 976, 4}, { 972, 4}, { 968, 3}, { 965, 3} +}; + +#elif F_CPU == 20000000 + +const uint16_t speed_lookuptable_fast[256][2] PROGMEM = { + {62500, 54055}, {8445, 3917}, {4528, 1434}, {3094, 745}, {2349, 456}, {1893, 307}, {1586, 222}, {1364, 167}, + {1197, 131}, {1066, 105}, {961, 86}, {875, 72}, {803, 61}, {742, 53}, {689, 45}, {644, 40}, + {604, 35}, {569, 32}, {537, 28}, {509, 25}, {484, 23}, {461, 21}, {440, 19}, {421, 17}, + {404, 16}, {388, 15}, {373, 14}, {359, 13}, {346, 12}, {334, 11}, {323, 10}, {313, 10}, + {303, 9}, {294, 9}, {285, 8}, {277, 7}, {270, 8}, {262, 7}, {255, 6}, {249, 6}, + {243, 6}, {237, 6}, {231, 5}, {226, 5}, {221, 5}, {216, 5}, {211, 4}, {207, 5}, + {202, 4}, {198, 4}, {194, 4}, {190, 3}, {187, 4}, {183, 3}, {180, 3}, {177, 4}, + {173, 3}, {170, 3}, {167, 2}, {165, 3}, {162, 3}, {159, 2}, {157, 3}, {154, 2}, + {152, 3}, {149, 2}, {147, 2}, {145, 2}, {143, 2}, {141, 2}, {139, 2}, {137, 2}, + {135, 2}, {133, 2}, {131, 2}, {129, 1}, {128, 2}, {126, 2}, {124, 1}, {123, 2}, + {121, 1}, {120, 2}, {118, 1}, {117, 1}, {116, 2}, {114, 1}, {113, 1}, {112, 2}, + {110, 1}, {109, 1}, {108, 1}, {107, 2}, {105, 1}, {104, 1}, {103, 1}, {102, 1}, + {101, 1}, {100, 1}, {99, 1}, {98, 1}, {97, 1}, {96, 1}, {95, 1}, {94, 1}, + {93, 1}, {92, 1}, {91, 0}, {91, 1}, {90, 1}, {89, 1}, {88, 1}, {87, 0}, + {87, 1}, {86, 1}, {85, 1}, {84, 0}, {84, 1}, {83, 1}, {82, 1}, {81, 0}, + {81, 1}, {80, 1}, {79, 0}, {79, 1}, {78, 0}, {78, 1}, {77, 1}, {76, 0}, + {76, 1}, {75, 0}, {75, 1}, {74, 1}, {73, 0}, {73, 1}, {72, 0}, {72, 1}, + {71, 0}, {71, 1}, {70, 0}, {70, 1}, {69, 0}, {69, 1}, {68, 0}, {68, 1}, + {67, 0}, {67, 1}, {66, 0}, {66, 1}, {65, 0}, {65, 0}, {65, 1}, {64, 0}, + {64, 1}, {63, 0}, {63, 1}, {62, 0}, {62, 0}, {62, 1}, {61, 0}, {61, 1}, + {60, 0}, {60, 0}, {60, 1}, {59, 0}, {59, 0}, {59, 1}, {58, 0}, {58, 0}, + {58, 1}, {57, 0}, {57, 0}, {57, 1}, {56, 0}, {56, 0}, {56, 1}, {55, 0}, + {55, 0}, {55, 1}, {54, 0}, {54, 0}, {54, 1}, {53, 0}, {53, 0}, {53, 0}, + {53, 1}, {52, 0}, {52, 0}, {52, 1}, {51, 0}, {51, 0}, {51, 0}, {51, 1}, + {50, 0}, {50, 0}, {50, 0}, {50, 1}, {49, 0}, {49, 0}, {49, 0}, {49, 1}, + {48, 0}, {48, 0}, {48, 0}, {48, 1}, {47, 0}, {47, 0}, {47, 0}, {47, 1}, + {46, 0}, {46, 0}, {46, 0}, {46, 0}, {46, 1}, {45, 0}, {45, 0}, {45, 0}, + {45, 1}, {44, 0}, {44, 0}, {44, 0}, {44, 0}, {44, 1}, {43, 0}, {43, 0}, + {43, 0}, {43, 0}, {43, 1}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, + {42, 1}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 1}, {40, 0}, + {40, 0}, {40, 0}, {40, 0}, {40, 1}, {39, 0}, {39, 0}, {39, 0}, {39, 0}, + {39, 0}, {39, 0}, {39, 1}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, +}; + +const uint16_t speed_lookuptable_slow[256][2] PROGMEM = { + {62500, 10417}, {52083, 7441}, {44642, 5580}, {39062, 4340}, {34722, 3472}, {31250, 2841}, {28409, 2368}, {26041, 2003}, + {24038, 1717}, {22321, 1488}, {20833, 1302}, {19531, 1149}, {18382, 1021}, {17361, 914}, {16447, 822}, {15625, 745}, + {14880, 676}, {14204, 618}, {13586, 566}, {13020, 520}, {12500, 481}, {12019, 445}, {11574, 414}, {11160, 385}, + {10775, 359}, {10416, 336}, {10080, 315}, {9765, 296}, {9469, 278}, {9191, 263}, {8928, 248}, {8680, 235}, + {8445, 222}, {8223, 211}, {8012, 200}, {7812, 191}, {7621, 181}, {7440, 173}, {7267, 165}, {7102, 158}, + {6944, 151}, {6793, 145}, {6648, 138}, {6510, 133}, {6377, 127}, {6250, 123}, {6127, 118}, {6009, 113}, + {5896, 109}, {5787, 106}, {5681, 101}, {5580, 98}, {5482, 95}, {5387, 91}, {5296, 88}, {5208, 86}, + {5122, 82}, {5040, 80}, {4960, 78}, {4882, 75}, {4807, 73}, {4734, 70}, {4664, 69}, {4595, 67}, + {4528, 64}, {4464, 63}, {4401, 61}, {4340, 60}, {4280, 58}, {4222, 56}, {4166, 55}, {4111, 53}, + {4058, 52}, {4006, 51}, {3955, 49}, {3906, 48}, {3858, 48}, {3810, 45}, {3765, 45}, {3720, 44}, + {3676, 43}, {3633, 42}, {3591, 40}, {3551, 40}, {3511, 39}, {3472, 38}, {3434, 38}, {3396, 36}, + {3360, 36}, {3324, 35}, {3289, 34}, {3255, 34}, {3221, 33}, {3188, 32}, {3156, 31}, {3125, 31}, + {3094, 31}, {3063, 30}, {3033, 29}, {3004, 28}, {2976, 28}, {2948, 28}, {2920, 27}, {2893, 27}, + {2866, 26}, {2840, 25}, {2815, 25}, {2790, 25}, {2765, 24}, {2741, 24}, {2717, 24}, {2693, 23}, + {2670, 22}, {2648, 22}, {2626, 22}, {2604, 22}, {2582, 21}, {2561, 21}, {2540, 20}, {2520, 20}, + {2500, 20}, {2480, 20}, {2460, 19}, {2441, 19}, {2422, 19}, {2403, 18}, {2385, 18}, {2367, 18}, + {2349, 17}, {2332, 18}, {2314, 17}, {2297, 16}, {2281, 17}, {2264, 16}, {2248, 16}, {2232, 16}, + {2216, 16}, {2200, 15}, {2185, 15}, {2170, 15}, {2155, 15}, {2140, 15}, {2125, 14}, {2111, 14}, + {2097, 14}, {2083, 14}, {2069, 14}, {2055, 13}, {2042, 13}, {2029, 13}, {2016, 13}, {2003, 13}, + {1990, 13}, {1977, 12}, {1965, 12}, {1953, 13}, {1940, 11}, {1929, 12}, {1917, 12}, {1905, 12}, + {1893, 11}, {1882, 11}, {1871, 11}, {1860, 11}, {1849, 11}, {1838, 11}, {1827, 11}, {1816, 10}, + {1806, 11}, {1795, 10}, {1785, 10}, {1775, 10}, {1765, 10}, {1755, 10}, {1745, 9}, {1736, 10}, + {1726, 9}, {1717, 10}, {1707, 9}, {1698, 9}, {1689, 9}, {1680, 9}, {1671, 9}, {1662, 9}, + {1653, 9}, {1644, 8}, {1636, 9}, {1627, 8}, {1619, 9}, {1610, 8}, {1602, 8}, {1594, 8}, + {1586, 8}, {1578, 8}, {1570, 8}, {1562, 8}, {1554, 7}, {1547, 8}, {1539, 8}, {1531, 7}, + {1524, 8}, {1516, 7}, {1509, 7}, {1502, 7}, {1495, 7}, {1488, 7}, {1481, 7}, {1474, 7}, + {1467, 7}, {1460, 7}, {1453, 7}, {1446, 6}, {1440, 7}, {1433, 7}, {1426, 6}, {1420, 6}, + {1414, 7}, {1407, 6}, {1401, 6}, {1395, 7}, {1388, 6}, {1382, 6}, {1376, 6}, {1370, 6}, + {1364, 6}, {1358, 6}, {1352, 6}, {1346, 5}, {1341, 6}, {1335, 6}, {1329, 5}, {1324, 6}, + {1318, 5}, {1313, 6}, {1307, 5}, {1302, 6}, {1296, 5}, {1291, 5}, {1286, 6}, {1280, 5}, + {1275, 5}, {1270, 5}, {1265, 5}, {1260, 5}, {1255, 5}, {1250, 5}, {1245, 5}, {1240, 5}, + {1235, 5}, {1230, 5}, {1225, 5}, {1220, 5}, {1215, 4}, {1211, 5}, {1206, 5}, {1201, 5}, }; #endif + +#endif diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp new file mode 100644 index 000000000..375a86f82 --- /dev/null +++ b/Marlin/stepper.cpp @@ -0,0 +1,1373 @@ +/* + stepper.c - stepper motor driver: executes motion plans using stepper motors + Part of Grbl + + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +/* The timer calculations of this module informed by the 'RepRap cartesian firmware' by Zack Smith + and Philipp Tiefenbacher. */ + +#include "Marlin.h" +#include "stepper.h" +#include "planner.h" +#include "temperature.h" +#include "ultralcd.h" +#include "language.h" +#include "cardreader.h" +#include "speed_lookuptable.h" +#if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 +#include +#endif + + +//=========================================================================== +//=============================public variables ============================ +//=========================================================================== +block_t *current_block; // A pointer to the block currently being traced + + +//=========================================================================== +//=============================private variables ============================ +//=========================================================================== +//static makes it impossible to be called from outside of this file by extern.! + +// Variables used by The Stepper Driver Interrupt +static unsigned char out_bits; // The next stepping-bits to be output +static long counter_x, // Counter variables for the bresenham line tracer + counter_y, + counter_z, + counter_e; +volatile static unsigned long step_events_completed; // The number of step events executed in the current block +#ifdef ADVANCE + static long advance_rate, advance, final_advance = 0; + static long old_advance = 0; + static long e_steps[4]; +#endif +static long acceleration_time, deceleration_time; +//static unsigned long accelerate_until, decelerate_after, acceleration_rate, initial_rate, final_rate, nominal_rate; +static unsigned short acc_step_rate; // needed for deccelaration start point +static char step_loops; +static unsigned short OCR1A_nominal; +static unsigned short step_loops_nominal; + +volatile long endstops_trigsteps[3]={0,0,0}; +volatile long endstops_stepsTotal,endstops_stepsDone; +static volatile bool endstop_x_hit=false; +static volatile bool endstop_y_hit=false; +static volatile bool endstop_z_hit=false; +#ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED +bool abort_on_endstop_hit = false; +#endif +#ifdef MOTOR_CURRENT_PWM_XY_PIN + int motor_current_setting[3] = DEFAULT_PWM_MOTOR_CURRENT; +#endif + +static bool old_x_min_endstop=false; +static bool old_x_max_endstop=false; +static bool old_y_min_endstop=false; +static bool old_y_max_endstop=false; +static bool old_z_min_endstop=false; +static bool old_z_max_endstop=false; + +static bool check_endstops = true; + +volatile long count_position[NUM_AXIS] = { 0, 0, 0, 0}; +volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1}; + +//=========================================================================== +//=============================functions ============================ +//=========================================================================== + +#define CHECK_ENDSTOPS if(check_endstops) + +// intRes = intIn1 * intIn2 >> 16 +// uses: +// r26 to store 0 +// r27 to store the byte 1 of the 24 bit result +#define MultiU16X8toH16(intRes, charIn1, intIn2) \ +asm volatile ( \ +"clr r26 \n\t" \ +"mul %A1, %B2 \n\t" \ +"movw %A0, r0 \n\t" \ +"mul %A1, %A2 \n\t" \ +"add %A0, r1 \n\t" \ +"adc %B0, r26 \n\t" \ +"lsr r0 \n\t" \ +"adc %A0, r26 \n\t" \ +"adc %B0, r26 \n\t" \ +"clr r1 \n\t" \ +: \ +"=&r" (intRes) \ +: \ +"d" (charIn1), \ +"d" (intIn2) \ +: \ +"r26" \ +) + +// intRes = longIn1 * longIn2 >> 24 +// uses: +// r26 to store 0 +// r27 to store the byte 1 of the 48bit result +#define MultiU24X24toH16(intRes, longIn1, longIn2) \ +asm volatile ( \ +"clr r26 \n\t" \ +"mul %A1, %B2 \n\t" \ +"mov r27, r1 \n\t" \ +"mul %B1, %C2 \n\t" \ +"movw %A0, r0 \n\t" \ +"mul %C1, %C2 \n\t" \ +"add %B0, r0 \n\t" \ +"mul %C1, %B2 \n\t" \ +"add %A0, r0 \n\t" \ +"adc %B0, r1 \n\t" \ +"mul %A1, %C2 \n\t" \ +"add r27, r0 \n\t" \ +"adc %A0, r1 \n\t" \ +"adc %B0, r26 \n\t" \ +"mul %B1, %B2 \n\t" \ +"add r27, r0 \n\t" \ +"adc %A0, r1 \n\t" \ +"adc %B0, r26 \n\t" \ +"mul %C1, %A2 \n\t" \ +"add r27, r0 \n\t" \ +"adc %A0, r1 \n\t" \ +"adc %B0, r26 \n\t" \ +"mul %B1, %A2 \n\t" \ +"add r27, r1 \n\t" \ +"adc %A0, r26 \n\t" \ +"adc %B0, r26 \n\t" \ +"lsr r27 \n\t" \ +"adc %A0, r26 \n\t" \ +"adc %B0, r26 \n\t" \ +"clr r1 \n\t" \ +: \ +"=&r" (intRes) \ +: \ +"d" (longIn1), \ +"d" (longIn2) \ +: \ +"r26" , "r27" \ +) + +// Some useful constants + +#define ENABLE_STEPPER_DRIVER_INTERRUPT() TIMSK1 |= (1< +// +// The trapezoid is the shape the speed curve over time. It starts at block->initial_rate, accelerates +// first block->accelerate_until step_events_completed, then keeps going at constant speed until +// step_events_completed reaches block->decelerate_after after which it decelerates until the trapezoid generator is reset. +// The slope of acceleration is calculated with the leib ramp alghorithm. + +void st_wake_up() { + // TCNT1 = 0; + ENABLE_STEPPER_DRIVER_INTERRUPT(); +} + +FORCE_INLINE unsigned short calc_timer(unsigned short step_rate) { + unsigned short timer; + if(step_rate > MAX_STEP_FREQUENCY) step_rate = MAX_STEP_FREQUENCY; + + if(step_rate > 20000) { // If steprate > 20kHz >> step 4 times + step_rate = (step_rate >> 2)&0x3fff; + step_loops = 4; + } + else if(step_rate > 10000) { // If steprate > 10kHz >> step 2 times + step_rate = (step_rate >> 1)&0x7fff; + step_loops = 2; + } + else { + step_loops = 1; + } + + if(step_rate < (F_CPU/500000)) step_rate = (F_CPU/500000); + step_rate -= (F_CPU/500000); // Correct for minimal speed + if(step_rate >= (8*256)){ // higher step rate + unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate>>8)][0]; + unsigned char tmp_step_rate = (step_rate & 0x00ff); + unsigned short gain = (unsigned short)pgm_read_word_near(table_address+2); + MultiU16X8toH16(timer, tmp_step_rate, gain); + timer = (unsigned short)pgm_read_word_near(table_address) - timer; + } + else { // lower step rates + unsigned short table_address = (unsigned short)&speed_lookuptable_slow[0][0]; + table_address += ((step_rate)>>1) & 0xfffc; + timer = (unsigned short)pgm_read_word_near(table_address); + timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3); + } + if(timer < 100) { timer = 100; MYSERIAL.print(MSG_STEPPER_TOO_HIGH); MYSERIAL.println(step_rate); }//(20kHz this should never happen) + return timer; +} + +// Initializes the trapezoid generator from the current block. Called whenever a new +// block begins. +FORCE_INLINE void trapezoid_generator_reset() { + #ifdef ADVANCE + advance = current_block->initial_advance; + final_advance = current_block->final_advance; + // Do E steps + advance steps + e_steps[current_block->active_extruder] += ((advance >>8) - old_advance); + old_advance = advance >>8; + #endif + deceleration_time = 0; + // step_rate to timer interval + OCR1A_nominal = calc_timer(current_block->nominal_rate); + // make a note of the number of step loops required at nominal speed + step_loops_nominal = step_loops; + acc_step_rate = current_block->initial_rate; + acceleration_time = calc_timer(acc_step_rate); + OCR1A = acceleration_time; + +// SERIAL_ECHO_START; +// SERIAL_ECHOPGM("advance :"); +// SERIAL_ECHO(current_block->advance/256.0); +// SERIAL_ECHOPGM("advance rate :"); +// SERIAL_ECHO(current_block->advance_rate/256.0); +// SERIAL_ECHOPGM("initial advance :"); +// SERIAL_ECHO(current_block->initial_advance/256.0); +// SERIAL_ECHOPGM("final advance :"); +// SERIAL_ECHOLN(current_block->final_advance/256.0); + +} + +// "The Stepper Driver Interrupt" - This timer interrupt is the workhorse. +// It pops blocks from the block_buffer and executes them by pulsing the stepper pins appropriately. +ISR(TIMER1_COMPA_vect) +{ + // If there is no current block, attempt to pop one from the buffer + if (current_block == NULL) { + // Anything in the buffer? + current_block = plan_get_current_block(); + if (current_block != NULL) { + current_block->busy = true; + trapezoid_generator_reset(); + counter_x = -(current_block->step_event_count >> 1); + counter_y = counter_x; + counter_z = counter_x; + counter_e = counter_x; + step_events_completed = 0; + + #ifdef Z_LATE_ENABLE + if(current_block->steps_z > 0) { + enable_z(); + OCR1A = 2000; //1ms wait + return; + } + #endif + +// #ifdef ADVANCE +// e_steps[current_block->active_extruder] = 0; +// #endif + } + else { + OCR1A=2000; // 1kHz. + } + } + + if (current_block != NULL) { + // Set directions TO DO This should be done once during init of trapezoid. Endstops -> interrupt + out_bits = current_block->direction_bits; + + + // Set the direction bits (X_AXIS=A_AXIS and Y_AXIS=B_AXIS for COREXY) + if((out_bits & (1<active_extruder != 0) + WRITE(X2_DIR_PIN, INVERT_X_DIR); + else + WRITE(X_DIR_PIN, INVERT_X_DIR); + } + #else + WRITE(X_DIR_PIN, INVERT_X_DIR); + #endif + count_direction[X_AXIS]=-1; + } + else{ + #ifdef DUAL_X_CARRIAGE + if (extruder_duplication_enabled){ + WRITE(X_DIR_PIN, !INVERT_X_DIR); + WRITE(X2_DIR_PIN, !INVERT_X_DIR); + } + else{ + if (current_block->active_extruder != 0) + WRITE(X2_DIR_PIN, !INVERT_X_DIR); + else + WRITE(X_DIR_PIN, !INVERT_X_DIR); + } + #else + WRITE(X_DIR_PIN, !INVERT_X_DIR); + #endif + count_direction[X_AXIS]=1; + } + if((out_bits & (1<steps_x == current_block->steps_y) && ((out_bits & (1<>X_AXIS != (out_bits & (1<>Y_AXIS))) // AlexBorro: If DeltaX == -DeltaY, the movement is only in Y axis + if ((out_bits & (1<active_extruder == 0 && X_HOME_DIR == -1) || (current_block->active_extruder != 0 && X2_HOME_DIR == -1)) + #endif + { + #if defined(X_MIN_PIN) && X_MIN_PIN > -1 + bool x_min_endstop=(READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING); + if(x_min_endstop && old_x_min_endstop && (current_block->steps_x > 0)) + { + endstops_trigsteps[X_AXIS] = count_position[X_AXIS]; + endstop_x_hit=true; + step_events_completed = current_block->step_event_count; + } + old_x_min_endstop = x_min_endstop; + #endif + } + } + else + { // +direction + #ifdef DUAL_X_CARRIAGE + // with 2 x-carriages, endstops are only checked in the homing direction for the active extruder + if ((current_block->active_extruder == 0 && X_HOME_DIR == 1) || (current_block->active_extruder != 0 && X2_HOME_DIR == 1)) + #endif + { + #if defined(X_MAX_PIN) && X_MAX_PIN > -1 + bool x_max_endstop=(READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING); + if(x_max_endstop && old_x_max_endstop && (current_block->steps_x > 0)) + { + endstops_trigsteps[X_AXIS] = count_position[X_AXIS]; + endstop_x_hit=true; + step_events_completed = current_block->step_event_count; + } + old_x_max_endstop = x_max_endstop; + #endif + } + } + + #ifndef COREXY + if ((out_bits & (1<steps_x == current_block->steps_y) && ((out_bits & (1<>X_AXIS == (out_bits & (1<>Y_AXIS))) // AlexBorro: If DeltaX == DeltaY, the movement is only in X axis + if ((out_bits & (1< -1 + bool y_min_endstop=(READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING); + if(y_min_endstop && old_y_min_endstop && (current_block->steps_y > 0)) + { + endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS]; + endstop_y_hit=true; + step_events_completed = current_block->step_event_count; + } + old_y_min_endstop = y_min_endstop; + #endif + } + else + { // +direction + #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1 + bool y_max_endstop=(READ(Y_MAX_PIN) != Y_MAX_ENDSTOP_INVERTING); + if(y_max_endstop && old_y_max_endstop && (current_block->steps_y > 0)) + { + endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS]; + endstop_y_hit=true; + step_events_completed = current_block->step_event_count; + } + old_y_max_endstop = y_max_endstop; + #endif + + } + } + + if ((out_bits & (1< -1 + bool z_min_endstop=(READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING); + if(z_min_endstop && old_z_min_endstop && (current_block->steps_z > 0)) { + endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; + endstop_z_hit=true; + step_events_completed = current_block->step_event_count; + } + old_z_min_endstop = z_min_endstop; + #endif + } + } + else { // +direction + WRITE(Z_DIR_PIN,!INVERT_Z_DIR); + + #ifdef Z_DUAL_STEPPER_DRIVERS + WRITE(Z2_DIR_PIN,!INVERT_Z_DIR); + #endif + + count_direction[Z_AXIS]=1; + CHECK_ENDSTOPS + { + #if defined(Z_MAX_PIN) && Z_MAX_PIN > -1 + bool z_max_endstop=(READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING); + if(z_max_endstop && old_z_max_endstop && (current_block->steps_z > 0)) { + endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; + endstop_z_hit=true; + step_events_completed = current_block->step_event_count; + } + old_z_max_endstop = z_max_endstop; + #endif + } + } + + #ifndef ADVANCE + if ((out_bits & (1<steps_e; + if (counter_e > 0) { + counter_e -= current_block->step_event_count; + if ((out_bits & (1<active_extruder]--; + } + else { + e_steps[current_block->active_extruder]++; + } + } + #endif //ADVANCE + + counter_x += current_block->steps_x; +#ifdef CONFIG_STEPPERS_TOSHIBA + /* The toshiba stepper controller require much longer pulses + * tjerfore we 'stage' decompose the pulses between high, and + * low instead of doing each in turn. The extra tests add enough + * lag to allow it work with without needing NOPs */ + if (counter_x > 0) { + WRITE(X_STEP_PIN, HIGH); + } + + counter_y += current_block->steps_y; + if (counter_y > 0) { + WRITE(Y_STEP_PIN, HIGH); + } + + counter_z += current_block->steps_z; + if (counter_z > 0) { + WRITE(Z_STEP_PIN, HIGH); + } + + #ifndef ADVANCE + counter_e += current_block->steps_e; + if (counter_e > 0) { + WRITE_E_STEP(HIGH); + } + #endif //!ADVANCE + + if (counter_x > 0) { + counter_x -= current_block->step_event_count; + count_position[X_AXIS]+=count_direction[X_AXIS]; + WRITE(X_STEP_PIN, LOW); + } + + if (counter_y > 0) { + counter_y -= current_block->step_event_count; + count_position[Y_AXIS]+=count_direction[Y_AXIS]; + WRITE(Y_STEP_PIN, LOW); + } + + if (counter_z > 0) { + counter_z -= current_block->step_event_count; + count_position[Z_AXIS]+=count_direction[Z_AXIS]; + WRITE(Z_STEP_PIN, LOW); + } + + #ifndef ADVANCE + if (counter_e > 0) { + counter_e -= current_block->step_event_count; + count_position[E_AXIS]+=count_direction[E_AXIS]; + WRITE_E_STEP(LOW); + } + #endif //!ADVANCE +#else + if (counter_x > 0) { + #ifdef DUAL_X_CARRIAGE + if (extruder_duplication_enabled){ + WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); + WRITE(X2_STEP_PIN, !INVERT_X_STEP_PIN); + } + else { + if (current_block->active_extruder != 0) + WRITE(X2_STEP_PIN, !INVERT_X_STEP_PIN); + else + WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); + } + #else + WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN); + #endif + counter_x -= current_block->step_event_count; + count_position[X_AXIS]+=count_direction[X_AXIS]; + #ifdef DUAL_X_CARRIAGE + if (extruder_duplication_enabled){ + WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); + WRITE(X2_STEP_PIN, INVERT_X_STEP_PIN); + } + else { + if (current_block->active_extruder != 0) + WRITE(X2_STEP_PIN, INVERT_X_STEP_PIN); + else + WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); + } + #else + WRITE(X_STEP_PIN, INVERT_X_STEP_PIN); + #endif + } + + counter_y += current_block->steps_y; + if (counter_y > 0) { + WRITE(Y_STEP_PIN, !INVERT_Y_STEP_PIN); + + #ifdef Y_DUAL_STEPPER_DRIVERS + WRITE(Y2_STEP_PIN, !INVERT_Y_STEP_PIN); + #endif + + counter_y -= current_block->step_event_count; + count_position[Y_AXIS]+=count_direction[Y_AXIS]; + WRITE(Y_STEP_PIN, INVERT_Y_STEP_PIN); + + #ifdef Y_DUAL_STEPPER_DRIVERS + WRITE(Y2_STEP_PIN, INVERT_Y_STEP_PIN); + #endif + } + + counter_z += current_block->steps_z; + if (counter_z > 0) { + WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN); + + #ifdef Z_DUAL_STEPPER_DRIVERS + WRITE(Z2_STEP_PIN, !INVERT_Z_STEP_PIN); + #endif + + counter_z -= current_block->step_event_count; + count_position[Z_AXIS]+=count_direction[Z_AXIS]; + WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN); + + #ifdef Z_DUAL_STEPPER_DRIVERS + WRITE(Z2_STEP_PIN, INVERT_Z_STEP_PIN); + #endif + } + + #ifndef ADVANCE + counter_e += current_block->steps_e; + if (counter_e > 0) { + WRITE_E_STEP(!INVERT_E_STEP_PIN); + counter_e -= current_block->step_event_count; + count_position[E_AXIS]+=count_direction[E_AXIS]; + WRITE_E_STEP(INVERT_E_STEP_PIN); + } + #endif //!ADVANCE +#endif // CONFIG_STEPPERS_TOSHIBA + step_events_completed += 1; + if(step_events_completed >= current_block->step_event_count) break; + } + // Calculare new timer value + unsigned short timer; + unsigned short step_rate; + if (step_events_completed <= (unsigned long int)current_block->accelerate_until) { + + MultiU24X24toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate); + acc_step_rate += current_block->initial_rate; + + // upper limit + if(acc_step_rate > current_block->nominal_rate) + acc_step_rate = current_block->nominal_rate; + + // step_rate to timer interval + timer = calc_timer(acc_step_rate); + OCR1A = timer; + acceleration_time += timer; + #ifdef ADVANCE + for(int8_t i=0; i < step_loops; i++) { + advance += advance_rate; + } + //if(advance > current_block->advance) advance = current_block->advance; + // Do E steps + advance steps + e_steps[current_block->active_extruder] += ((advance >>8) - old_advance); + old_advance = advance >>8; + + #endif + } + else if (step_events_completed > (unsigned long int)current_block->decelerate_after) { + MultiU24X24toH16(step_rate, deceleration_time, current_block->acceleration_rate); + + if(step_rate > acc_step_rate) { // Check step_rate stays positive + step_rate = current_block->final_rate; + } + else { + step_rate = acc_step_rate - step_rate; // Decelerate from aceleration end point. + } + + // lower limit + if(step_rate < current_block->final_rate) + step_rate = current_block->final_rate; + + // step_rate to timer interval + timer = calc_timer(step_rate); + OCR1A = timer; + deceleration_time += timer; + #ifdef ADVANCE + for(int8_t i=0; i < step_loops; i++) { + advance -= advance_rate; + } + if(advance < final_advance) advance = final_advance; + // Do E steps + advance steps + e_steps[current_block->active_extruder] += ((advance >>8) - old_advance); + old_advance = advance >>8; + #endif //ADVANCE + } + else { + OCR1A = OCR1A_nominal; + // ensure we're running at the correct step rate, even if we just came off an acceleration + step_loops = step_loops_nominal; + } + + // If current block is finished, reset pointer + if (step_events_completed >= current_block->step_event_count) { + current_block = NULL; + plan_discard_current_block(); + } + } +} + +#ifdef ADVANCE + unsigned char old_OCR0A; + // Timer interrupt for E. e_steps is set in the main routine; + // Timer 0 is shared with millies + ISR(TIMER0_COMPA_vect) + { + old_OCR0A += 52; // ~10kHz interrupt (250000 / 26 = 9615kHz) + OCR0A = old_OCR0A; + // Set E direction (Depends on E direction + advance) + for(unsigned char i=0; i<4;i++) { + if (e_steps[0] != 0) { + WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN); + if (e_steps[0] < 0) { + WRITE(E0_DIR_PIN, INVERT_E0_DIR); + e_steps[0]++; + WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN); + } + else if (e_steps[0] > 0) { + WRITE(E0_DIR_PIN, !INVERT_E0_DIR); + e_steps[0]--; + WRITE(E0_STEP_PIN, !INVERT_E_STEP_PIN); + } + } + #if EXTRUDERS > 1 + if (e_steps[1] != 0) { + WRITE(E1_STEP_PIN, INVERT_E_STEP_PIN); + if (e_steps[1] < 0) { + WRITE(E1_DIR_PIN, INVERT_E1_DIR); + e_steps[1]++; + WRITE(E1_STEP_PIN, !INVERT_E_STEP_PIN); + } + else if (e_steps[1] > 0) { + WRITE(E1_DIR_PIN, !INVERT_E1_DIR); + e_steps[1]--; + WRITE(E1_STEP_PIN, !INVERT_E_STEP_PIN); + } + } + #endif + #if EXTRUDERS > 2 + if (e_steps[2] != 0) { + WRITE(E2_STEP_PIN, INVERT_E_STEP_PIN); + if (e_steps[2] < 0) { + WRITE(E2_DIR_PIN, INVERT_E2_DIR); + e_steps[2]++; + WRITE(E2_STEP_PIN, !INVERT_E_STEP_PIN); + } + else if (e_steps[2] > 0) { + WRITE(E2_DIR_PIN, !INVERT_E2_DIR); + e_steps[2]--; + WRITE(E2_STEP_PIN, !INVERT_E_STEP_PIN); + } + } + #endif + #if EXTRUDERS > 3 + if (e_steps[3] != 0) { + WRITE(E3_STEP_PIN, INVERT_E_STEP_PIN); + if (e_steps[3] < 0) { + WRITE(E3_DIR_PIN, INVERT_E3_DIR); + e_steps[3]++; + WRITE(E3_STEP_PIN, !INVERT_E_STEP_PIN); + } + else if (e_steps[3] > 0) { + WRITE(E3_DIR_PIN, !INVERT_E3_DIR); + e_steps[3]--; + WRITE(E3_STEP_PIN, !INVERT_E_STEP_PIN); + } + } + #endif + + } + } +#endif // ADVANCE + +void st_init() +{ + digipot_init(); //Initialize Digipot Motor Current + microstep_init(); //Initialize Microstepping Pins + + //Initialize Dir Pins + #if defined(X_DIR_PIN) && X_DIR_PIN > -1 + SET_OUTPUT(X_DIR_PIN); + #endif + #if defined(X2_DIR_PIN) && X2_DIR_PIN > -1 + SET_OUTPUT(X2_DIR_PIN); + #endif + #if defined(Y_DIR_PIN) && Y_DIR_PIN > -1 + SET_OUTPUT(Y_DIR_PIN); + + #if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_DIR_PIN) && (Y2_DIR_PIN > -1) + SET_OUTPUT(Y2_DIR_PIN); + #endif + #endif + #if defined(Z_DIR_PIN) && Z_DIR_PIN > -1 + SET_OUTPUT(Z_DIR_PIN); + + #if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Z2_DIR_PIN) && (Z2_DIR_PIN > -1) + SET_OUTPUT(Z2_DIR_PIN); + #endif + #endif + #if defined(E0_DIR_PIN) && E0_DIR_PIN > -1 + SET_OUTPUT(E0_DIR_PIN); + #endif + #if defined(E1_DIR_PIN) && (E1_DIR_PIN > -1) + SET_OUTPUT(E1_DIR_PIN); + #endif + #if defined(E2_DIR_PIN) && (E2_DIR_PIN > -1) + SET_OUTPUT(E2_DIR_PIN); + #endif + #if defined(E3_DIR_PIN) && (E3_DIR_PIN > -1) + SET_OUTPUT(E3_DIR_PIN); + #endif + + //Initialize Enable Pins - steppers default to disabled. + + #if defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1 + SET_OUTPUT(X_ENABLE_PIN); + if(!X_ENABLE_ON) WRITE(X_ENABLE_PIN,HIGH); + #endif + #if defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1 + SET_OUTPUT(X2_ENABLE_PIN); + if(!X_ENABLE_ON) WRITE(X2_ENABLE_PIN,HIGH); + #endif + #if defined(Y_ENABLE_PIN) && Y_ENABLE_PIN > -1 + SET_OUTPUT(Y_ENABLE_PIN); + if(!Y_ENABLE_ON) WRITE(Y_ENABLE_PIN,HIGH); + + #if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_ENABLE_PIN) && (Y2_ENABLE_PIN > -1) + SET_OUTPUT(Y2_ENABLE_PIN); + if(!Y_ENABLE_ON) WRITE(Y2_ENABLE_PIN,HIGH); + #endif + #endif + #if defined(Z_ENABLE_PIN) && Z_ENABLE_PIN > -1 + SET_OUTPUT(Z_ENABLE_PIN); + if(!Z_ENABLE_ON) WRITE(Z_ENABLE_PIN,HIGH); + + #if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Z2_ENABLE_PIN) && (Z2_ENABLE_PIN > -1) + SET_OUTPUT(Z2_ENABLE_PIN); + if(!Z_ENABLE_ON) WRITE(Z2_ENABLE_PIN,HIGH); + #endif + #endif + #if defined(E0_ENABLE_PIN) && (E0_ENABLE_PIN > -1) + SET_OUTPUT(E0_ENABLE_PIN); + if(!E_ENABLE_ON) WRITE(E0_ENABLE_PIN,HIGH); + #endif + #if defined(E1_ENABLE_PIN) && (E1_ENABLE_PIN > -1) + SET_OUTPUT(E1_ENABLE_PIN); + if(!E_ENABLE_ON) WRITE(E1_ENABLE_PIN,HIGH); + #endif + #if defined(E2_ENABLE_PIN) && (E2_ENABLE_PIN > -1) + SET_OUTPUT(E2_ENABLE_PIN); + if(!E_ENABLE_ON) WRITE(E2_ENABLE_PIN,HIGH); + #endif + #if defined(E3_ENABLE_PIN) && (E3_ENABLE_PIN > -1) + SET_OUTPUT(E3_ENABLE_PIN); + if(!E_ENABLE_ON) WRITE(E3_ENABLE_PIN,HIGH); + #endif + + //endstops and pullups + + #if defined(X_MIN_PIN) && X_MIN_PIN > -1 + SET_INPUT(X_MIN_PIN); + #ifdef ENDSTOPPULLUP_XMIN + WRITE(X_MIN_PIN,HIGH); + #endif + #endif + + #if defined(Y_MIN_PIN) && Y_MIN_PIN > -1 + SET_INPUT(Y_MIN_PIN); + #ifdef ENDSTOPPULLUP_YMIN + WRITE(Y_MIN_PIN,HIGH); + #endif + #endif + + #if defined(Z_MIN_PIN) && Z_MIN_PIN > -1 + SET_INPUT(Z_MIN_PIN); + #ifdef ENDSTOPPULLUP_ZMIN + WRITE(Z_MIN_PIN,HIGH); + #endif + #endif + + #if defined(X_MAX_PIN) && X_MAX_PIN > -1 + SET_INPUT(X_MAX_PIN); + #ifdef ENDSTOPPULLUP_XMAX + WRITE(X_MAX_PIN,HIGH); + #endif + #endif + + #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1 + SET_INPUT(Y_MAX_PIN); + #ifdef ENDSTOPPULLUP_YMAX + WRITE(Y_MAX_PIN,HIGH); + #endif + #endif + + #if defined(Z_MAX_PIN) && Z_MAX_PIN > -1 + SET_INPUT(Z_MAX_PIN); + #ifdef ENDSTOPPULLUP_ZMAX + WRITE(Z_MAX_PIN,HIGH); + #endif + #endif + + + //Initialize Step Pins + #if defined(X_STEP_PIN) && (X_STEP_PIN > -1) + OUT_WRITE(X_STEP_PIN,INVERT_X_STEP_PIN); + disable_x(); + #endif + #if defined(X2_STEP_PIN) && (X2_STEP_PIN > -1) + OUT_WRITE(X2_STEP_PIN,INVERT_X_STEP_PIN); + disable_x(); + #endif + #if defined(Y_STEP_PIN) && (Y_STEP_PIN > -1) + OUT_WRITE(Y_STEP_PIN,INVERT_Y_STEP_PIN); + #if defined(Y_DUAL_STEPPER_DRIVERS) && defined(Y2_STEP_PIN) && (Y2_STEP_PIN > -1) + OUT_WRITE(Y2_STEP_PIN,INVERT_Y_STEP_PIN); + #endif + disable_y(); + #endif + #if defined(Z_STEP_PIN) && (Z_STEP_PIN > -1) + OUT_WRITE(Z_STEP_PIN,INVERT_Z_STEP_PIN); + #if defined(Z_DUAL_STEPPER_DRIVERS) && defined(Z2_STEP_PIN) && (Z2_STEP_PIN > -1) + OUT_WRITE(Z2_STEP_PIN,INVERT_Z_STEP_PIN); + #endif + disable_z(); + #endif + #if defined(E0_STEP_PIN) && (E0_STEP_PIN > -1) + OUT_WRITE(E0_STEP_PIN,INVERT_E_STEP_PIN); + disable_e0(); + #endif + #if defined(E1_STEP_PIN) && (E1_STEP_PIN > -1) + OUT_WRITE(E1_STEP_PIN,INVERT_E_STEP_PIN); + disable_e1(); + #endif + #if defined(E2_STEP_PIN) && (E2_STEP_PIN > -1) + OUT_WRITE(E2_STEP_PIN,INVERT_E_STEP_PIN); + disable_e2(); + #endif + #if defined(E3_STEP_PIN) && (E3_STEP_PIN > -1) + OUT_WRITE(E3_STEP_PIN,INVERT_E_STEP_PIN); + disable_e3(); + #endif + + // waveform generation = 0100 = CTC + TCCR1B &= ~(1< -1 + digitalWrite(DIGIPOTSS_PIN,LOW); // take the SS pin low to select the chip + SPI.transfer(address); // send in the address and value via SPI: + SPI.transfer(value); + digitalWrite(DIGIPOTSS_PIN,HIGH); // take the SS pin high to de-select the chip: + //delay(10); + #endif +} + +void digipot_init() //Initialize Digipot Motor Current +{ + #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 + const uint8_t digipot_motor_current[] = DIGIPOT_MOTOR_CURRENT; + + SPI.begin(); + pinMode(DIGIPOTSS_PIN, OUTPUT); + for(int i=0;i<=4;i++) + //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]); + digipot_current(i,digipot_motor_current[i]); + #endif + #ifdef MOTOR_CURRENT_PWM_XY_PIN + pinMode(MOTOR_CURRENT_PWM_XY_PIN, OUTPUT); + pinMode(MOTOR_CURRENT_PWM_Z_PIN, OUTPUT); + pinMode(MOTOR_CURRENT_PWM_E_PIN, OUTPUT); + digipot_current(0, motor_current_setting[0]); + digipot_current(1, motor_current_setting[1]); + digipot_current(2, motor_current_setting[2]); + //Set timer5 to 31khz so the PWM of the motor power is as constant as possible. (removes a buzzing noise) + TCCR5B = (TCCR5B & ~(_BV(CS50) | _BV(CS51) | _BV(CS52))) | _BV(CS50); + #endif +} + +void digipot_current(uint8_t driver, int current) +{ + #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 + const uint8_t digipot_ch[] = DIGIPOT_CHANNELS; + digitalPotWrite(digipot_ch[driver], current); + #endif + #ifdef MOTOR_CURRENT_PWM_XY_PIN + if (driver == 0) analogWrite(MOTOR_CURRENT_PWM_XY_PIN, (long)current * 255L / (long)MOTOR_CURRENT_PWM_RANGE); + if (driver == 1) analogWrite(MOTOR_CURRENT_PWM_Z_PIN, (long)current * 255L / (long)MOTOR_CURRENT_PWM_RANGE); + if (driver == 2) analogWrite(MOTOR_CURRENT_PWM_E_PIN, (long)current * 255L / (long)MOTOR_CURRENT_PWM_RANGE); + #endif +} + +void microstep_init() +{ + const uint8_t microstep_modes[] = MICROSTEP_MODES; + + #if defined(E1_MS1_PIN) && E1_MS1_PIN > -1 + pinMode(E1_MS1_PIN,OUTPUT); + pinMode(E1_MS2_PIN,OUTPUT); + #endif + + #if defined(X_MS1_PIN) && X_MS1_PIN > -1 + pinMode(X_MS1_PIN,OUTPUT); + pinMode(X_MS2_PIN,OUTPUT); + pinMode(Y_MS1_PIN,OUTPUT); + pinMode(Y_MS2_PIN,OUTPUT); + pinMode(Z_MS1_PIN,OUTPUT); + pinMode(Z_MS2_PIN,OUTPUT); + pinMode(E0_MS1_PIN,OUTPUT); + pinMode(E0_MS2_PIN,OUTPUT); + for(int i=0;i<=4;i++) microstep_mode(i,microstep_modes[i]); + #endif +} + +void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2) +{ + if(ms1 > -1) switch(driver) + { + case 0: digitalWrite( X_MS1_PIN,ms1); break; + case 1: digitalWrite( Y_MS1_PIN,ms1); break; + case 2: digitalWrite( Z_MS1_PIN,ms1); break; + case 3: digitalWrite(E0_MS1_PIN,ms1); break; + #if defined(E1_MS1_PIN) && E1_MS1_PIN > -1 + case 4: digitalWrite(E1_MS1_PIN,ms1); break; + #endif + } + if(ms2 > -1) switch(driver) + { + case 0: digitalWrite( X_MS2_PIN,ms2); break; + case 1: digitalWrite( Y_MS2_PIN,ms2); break; + case 2: digitalWrite( Z_MS2_PIN,ms2); break; + case 3: digitalWrite(E0_MS2_PIN,ms2); break; + #if defined(E1_MS2_PIN) && E1_MS2_PIN > -1 + case 4: digitalWrite(E1_MS2_PIN,ms2); break; + #endif + } +} + +void microstep_mode(uint8_t driver, uint8_t stepping_mode) +{ + switch(stepping_mode) + { + case 1: microstep_ms(driver,MICROSTEP1); break; + case 2: microstep_ms(driver,MICROSTEP2); break; + case 4: microstep_ms(driver,MICROSTEP4); break; + case 8: microstep_ms(driver,MICROSTEP8); break; + case 16: microstep_ms(driver,MICROSTEP16); break; + } +} + +void microstep_readings() +{ + SERIAL_PROTOCOLPGM("MS1,MS2 Pins\n"); + SERIAL_PROTOCOLPGM("X: "); + SERIAL_PROTOCOL( digitalRead(X_MS1_PIN)); + SERIAL_PROTOCOLLN( digitalRead(X_MS2_PIN)); + SERIAL_PROTOCOLPGM("Y: "); + SERIAL_PROTOCOL( digitalRead(Y_MS1_PIN)); + SERIAL_PROTOCOLLN( digitalRead(Y_MS2_PIN)); + SERIAL_PROTOCOLPGM("Z: "); + SERIAL_PROTOCOL( digitalRead(Z_MS1_PIN)); + SERIAL_PROTOCOLLN( digitalRead(Z_MS2_PIN)); + SERIAL_PROTOCOLPGM("E0: "); + SERIAL_PROTOCOL( digitalRead(E0_MS1_PIN)); + SERIAL_PROTOCOLLN( digitalRead(E0_MS2_PIN)); + #if defined(E1_MS1_PIN) && E1_MS1_PIN > -1 + SERIAL_PROTOCOLPGM("E1: "); + SERIAL_PROTOCOL( digitalRead(E1_MS1_PIN)); + SERIAL_PROTOCOLLN( digitalRead(E1_MS2_PIN)); + #endif +} + diff --git a/Marlin/stepper.h b/Marlin/stepper.h new file mode 100644 index 000000000..0a5a433e7 --- /dev/null +++ b/Marlin/stepper.h @@ -0,0 +1,105 @@ +/* + stepper.h - stepper motor driver: executes motion plans of planner.c using the stepper motors + Part of Grbl + + Copyright (c) 2009-2011 Simen Svale Skogsrud + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef stepper_h +#define stepper_h + +#include "planner.h" + +#if EXTRUDERS > 3 + #define WRITE_E_STEP(v) { if(current_block->active_extruder == 3) { WRITE(E3_STEP_PIN, v); } else { if(current_block->active_extruder == 2) { WRITE(E2_STEP_PIN, v); } else { if(current_block->active_extruder == 1) { WRITE(E1_STEP_PIN, v); } else { WRITE(E0_STEP_PIN, v); }}}} + #define NORM_E_DIR() { if(current_block->active_extruder == 3) { WRITE(E3_DIR_PIN, !INVERT_E3_DIR); } else { if(current_block->active_extruder == 2) { WRITE(E2_DIR_PIN, !INVERT_E2_DIR); } else { if(current_block->active_extruder == 1) { WRITE(E1_DIR_PIN, !INVERT_E1_DIR); } else { WRITE(E0_DIR_PIN, !INVERT_E0_DIR); }}}} + #define REV_E_DIR() { if(current_block->active_extruder == 3) { WRITE(E3_DIR_PIN, INVERT_E3_DIR); } else { if(current_block->active_extruder == 2) { WRITE(E2_DIR_PIN, INVERT_E2_DIR); } else { if(current_block->active_extruder == 1) { WRITE(E1_DIR_PIN, INVERT_E1_DIR); } else { WRITE(E0_DIR_PIN, INVERT_E0_DIR); }}}} +#elif EXTRUDERS > 2 + #define WRITE_E_STEP(v) { if(current_block->active_extruder == 2) { WRITE(E2_STEP_PIN, v); } else { if(current_block->active_extruder == 1) { WRITE(E1_STEP_PIN, v); } else { WRITE(E0_STEP_PIN, v); }}} + #define NORM_E_DIR() { if(current_block->active_extruder == 2) { WRITE(E2_DIR_PIN, !INVERT_E2_DIR); } else { if(current_block->active_extruder == 1) { WRITE(E1_DIR_PIN, !INVERT_E1_DIR); } else { WRITE(E0_DIR_PIN, !INVERT_E0_DIR); }}} + #define REV_E_DIR() { if(current_block->active_extruder == 2) { WRITE(E2_DIR_PIN, INVERT_E2_DIR); } else { if(current_block->active_extruder == 1) { WRITE(E1_DIR_PIN, INVERT_E1_DIR); } else { WRITE(E0_DIR_PIN, INVERT_E0_DIR); }}} +#elif EXTRUDERS > 1 + #ifndef DUAL_X_CARRIAGE + #define WRITE_E_STEP(v) { if(current_block->active_extruder == 1) { WRITE(E1_STEP_PIN, v); } else { WRITE(E0_STEP_PIN, v); }} + #define NORM_E_DIR() { if(current_block->active_extruder == 1) { WRITE(E1_DIR_PIN, !INVERT_E1_DIR); } else { WRITE(E0_DIR_PIN, !INVERT_E0_DIR); }} + #define REV_E_DIR() { if(current_block->active_extruder == 1) { WRITE(E1_DIR_PIN, INVERT_E1_DIR); } else { WRITE(E0_DIR_PIN, INVERT_E0_DIR); }} + #else + extern bool extruder_duplication_enabled; + #define WRITE_E_STEP(v) { if(extruder_duplication_enabled) { WRITE(E0_STEP_PIN, v); WRITE(E1_STEP_PIN, v); } else if(current_block->active_extruder == 1) { WRITE(E1_STEP_PIN, v); } else { WRITE(E0_STEP_PIN, v); }} + #define NORM_E_DIR() { if(extruder_duplication_enabled) { WRITE(E0_DIR_PIN, !INVERT_E0_DIR); WRITE(E1_DIR_PIN, !INVERT_E1_DIR); } else if(current_block->active_extruder == 1) { WRITE(E1_DIR_PIN, !INVERT_E1_DIR); } else { WRITE(E0_DIR_PIN, !INVERT_E0_DIR); }} + #define REV_E_DIR() { if(extruder_duplication_enabled) { WRITE(E0_DIR_PIN, INVERT_E0_DIR); WRITE(E1_DIR_PIN, INVERT_E1_DIR); } else if(current_block->active_extruder == 1) { WRITE(E1_DIR_PIN, INVERT_E1_DIR); } else { WRITE(E0_DIR_PIN, INVERT_E0_DIR); }} + #endif +#else + #define WRITE_E_STEP(v) WRITE(E0_STEP_PIN, v) + #define NORM_E_DIR() WRITE(E0_DIR_PIN, !INVERT_E0_DIR) + #define REV_E_DIR() WRITE(E0_DIR_PIN, INVERT_E0_DIR) +#endif + +#ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED +extern bool abort_on_endstop_hit; +#endif + +// Initialize and start the stepper motor subsystem +void st_init(); + +// Block until all buffered steps are executed +void st_synchronize(); + +// Set current position in steps +void st_set_position(const long &x, const long &y, const long &z, const long &e); +void st_set_e_position(const long &e); + +// Get current position in steps +long st_get_position(uint8_t axis); + +#ifdef ENABLE_AUTO_BED_LEVELING +// Get current position in mm +float st_get_position_mm(uint8_t axis); +#endif //ENABLE_AUTO_BED_LEVELING + +// The stepper subsystem goes to sleep when it runs out of things to execute. Call this +// to notify the subsystem that it is time to go to work. +void st_wake_up(); + + +void checkHitEndstops(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered +void endstops_hit_on_purpose(); //avoid creation of the message, i.e. after homing and before a routine call of checkHitEndstops(); + +void enable_endstops(bool check); // Enable/disable endstop checking + +void checkStepperErrors(); //Print errors detected by the stepper + +void finishAndDisableSteppers(); + +extern block_t *current_block; // A pointer to the block currently being traced + +void quickStop(); + +void digitalPotWrite(int address, int value); +void microstep_ms(uint8_t driver, int8_t ms1, int8_t ms2); +void microstep_mode(uint8_t driver, uint8_t stepping); +void digipot_init(); +void digipot_current(uint8_t driver, int current); +void microstep_init(); +void microstep_readings(); + +#ifdef BABYSTEPPING + void babystep(const uint8_t axis,const bool direction); // perform a short step with a single stepper motor, outside of any convention +#endif + + + +#endif diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp new file mode 100644 index 000000000..ae9e5f411 --- /dev/null +++ b/Marlin/temperature.cpp @@ -0,0 +1,1635 @@ +/* + temperature.c - temperature control + Part of Marlin + + Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +/* + This firmware is a mashup between Sprinter and grbl. + (https://github.com/kliment/Sprinter) + (https://github.com/simen/grbl/tree) + + It has preliminary support for Matthew Roberts advance algorithm + http://reprap.org/pipermail/reprap-dev/2011-May/003323.html + + */ + + +#include "Marlin.h" +#include "ultralcd.h" +#include "temperature.h" +#include "watchdog.h" +#include "language.h" + +#include "Sd2PinMap.h" + +//=========================================================================== +//================================== macros ================================= +//=========================================================================== + +#if EXTRUDERS > 4 + #error Unsupported number of extruders +#elif EXTRUDERS > 3 + #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3, v4 } +#elif EXTRUDERS > 2 + #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2, v3 } +#elif EXTRUDERS > 1 + #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1, v2 } +#else + #define ARRAY_BY_EXTRUDERS(v1, v2, v3, v4) { v1 } +#endif + +#define HAS_TEMP_0 (defined(TEMP_0_PIN) && TEMP_0_PIN >= 0) +#define HAS_TEMP_1 (defined(TEMP_1_PIN) && TEMP_1_PIN >= 0) +#define HAS_TEMP_2 (defined(TEMP_2_PIN) && TEMP_2_PIN >= 0) +#define HAS_TEMP_3 (defined(TEMP_3_PIN) && TEMP_3_PIN >= 0) +#define HAS_TEMP_BED (defined(TEMP_BED_PIN) && TEMP_BED_PIN >= 0) +#define HAS_FILAMENT_SENSOR (defined(FILAMENT_SENSOR) && defined(FILWIDTH_PIN) && FILWIDTH_PIN >= 0) +#define HAS_HEATER_0 (defined(HEATER_0_PIN) && HEATER_0_PIN >= 0) +#define HAS_HEATER_1 (defined(HEATER_1_PIN) && HEATER_1_PIN >= 0) +#define HAS_HEATER_2 (defined(HEATER_2_PIN) && HEATER_2_PIN >= 0) +#define HAS_HEATER_3 (defined(HEATER_3_PIN) && HEATER_3_PIN >= 0) +#define HAS_HEATER_BED (defined(HEATER_BED_PIN) && HEATER_BED_PIN >= 0) +#define HAS_AUTO_FAN_0 (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN >= 0) +#define HAS_AUTO_FAN_1 (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN >= 0) +#define HAS_AUTO_FAN_2 (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN >= 0) +#define HAS_AUTO_FAN_3 (defined(EXTRUDER_3_AUTO_FAN_PIN) && EXTRUDER_3_AUTO_FAN_PIN >= 0) +#define HAS_AUTO_FAN HAS_AUTO_FAN_0 || HAS_AUTO_FAN_1 || HAS_AUTO_FAN_2 || HAS_AUTO_FAN_3 +#define HAS_FAN (defined(FAN_PIN) && FAN_PIN >= 0) + +//=========================================================================== +//============================= public variables ============================ +//=========================================================================== + +// Sampling period of the temperature routine +#ifdef PID_dT + #undef PID_dT +#endif +#define PID_dT ((OVERSAMPLENR * 12.0)/(F_CPU / 64.0 / 256.0)) + +int target_temperature[EXTRUDERS] = { 0 }; +int target_temperature_bed = 0; +int current_temperature_raw[EXTRUDERS] = { 0 }; +float current_temperature[EXTRUDERS] = { 0.0 }; +int current_temperature_bed_raw = 0; +float current_temperature_bed = 0.0; +#ifdef TEMP_SENSOR_1_AS_REDUNDANT + int redundant_temperature_raw = 0; + float redundant_temperature = 0.0; +#endif + +#ifdef PIDTEMPBED + float bedKp=DEFAULT_bedKp; + float bedKi=(DEFAULT_bedKi*PID_dT); + float bedKd=(DEFAULT_bedKd/PID_dT); +#endif //PIDTEMPBED + +#ifdef FAN_SOFT_PWM + unsigned char fanSpeedSoftPwm; +#endif + +unsigned char soft_pwm_bed; + +#ifdef BABYSTEPPING + volatile int babystepsTodo[3] = { 0 }; +#endif + +#ifdef FILAMENT_SENSOR + int current_raw_filwidth = 0; //Holds measured filament diameter - one extruder only +#endif +//=========================================================================== +//=============================private variables============================ +//=========================================================================== +static volatile bool temp_meas_ready = false; + +#ifdef PIDTEMP + //static cannot be external: + static float temp_iState[EXTRUDERS] = { 0 }; + static float temp_dState[EXTRUDERS] = { 0 }; + static float pTerm[EXTRUDERS]; + static float iTerm[EXTRUDERS]; + static float dTerm[EXTRUDERS]; + //int output; + static float pid_error[EXTRUDERS]; + static float temp_iState_min[EXTRUDERS]; + static float temp_iState_max[EXTRUDERS]; + // static float pid_input[EXTRUDERS]; + // static float pid_output[EXTRUDERS]; + static bool pid_reset[EXTRUDERS]; +#endif //PIDTEMP +#ifdef PIDTEMPBED + //static cannot be external: + static float temp_iState_bed = { 0 }; + static float temp_dState_bed = { 0 }; + static float pTerm_bed; + static float iTerm_bed; + static float dTerm_bed; + //int output; + static float pid_error_bed; + static float temp_iState_min_bed; + static float temp_iState_max_bed; +#else //PIDTEMPBED + static unsigned long previous_millis_bed_heater; +#endif //PIDTEMPBED + static unsigned char soft_pwm[EXTRUDERS]; + +#ifdef FAN_SOFT_PWM + static unsigned char soft_pwm_fan; +#endif +#if HAS_AUTO_FAN + static unsigned long extruder_autofan_last_check; +#endif + +#ifdef PIDTEMP + #ifdef PID_PARAMS_PER_EXTRUDER + float Kp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kp, DEFAULT_Kp, DEFAULT_Kp, DEFAULT_Kp); + float Ki[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Ki*PID_dT, DEFAULT_Ki*PID_dT, DEFAULT_Ki*PID_dT, DEFAULT_Ki*PID_dT); + float Kd[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kd / PID_dT, DEFAULT_Kd / PID_dT, DEFAULT_Kd / PID_dT, DEFAULT_Kd / PID_dT); + #ifdef PID_ADD_EXTRUSION_RATE + float Kc[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kc, DEFAULT_Kc, DEFAULT_Kc, DEFAULT_Kc); + #endif // PID_ADD_EXTRUSION_RATE + #else //PID_PARAMS_PER_EXTRUDER + float Kp = DEFAULT_Kp; + float Ki = DEFAULT_Ki * PID_dT; + float Kd = DEFAULT_Kd / PID_dT; + #ifdef PID_ADD_EXTRUSION_RATE + float Kc = DEFAULT_Kc; + #endif // PID_ADD_EXTRUSION_RATE + #endif // PID_PARAMS_PER_EXTRUDER +#endif //PIDTEMP + +// Init min and max temp with extreme values to prevent false errors during startup +static int minttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_RAW_LO_TEMP , HEATER_1_RAW_LO_TEMP , HEATER_2_RAW_LO_TEMP, HEATER_3_RAW_LO_TEMP); +static int maxttemp_raw[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_RAW_HI_TEMP , HEATER_1_RAW_HI_TEMP , HEATER_2_RAW_HI_TEMP, HEATER_3_RAW_HI_TEMP); +static int minttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS( 0, 0, 0, 0 ); +static int maxttemp[EXTRUDERS] = ARRAY_BY_EXTRUDERS( 16383, 16383, 16383, 16383 ); +//static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP; /* No bed mintemp error implemented?!? */ +#ifdef BED_MAXTEMP + static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP; +#endif + +#ifdef TEMP_SENSOR_1_AS_REDUNDANT + static void *heater_ttbl_map[2] = {(void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE }; + static uint8_t heater_ttbllen_map[2] = { HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN }; +#else + static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE, (void *)HEATER_3_TEMPTABLE ); + static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN, HEATER_3_TEMPTABLE_LEN ); +#endif + +static float analog2temp(int raw, uint8_t e); +static float analog2tempBed(int raw); +static void updateTemperaturesFromRawValues(); + +#ifdef WATCH_TEMP_PERIOD + int watch_start_temp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0,0); + unsigned long watchmillis[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0,0); +#endif //WATCH_TEMP_PERIOD + +#ifndef SOFT_PWM_SCALE + #define SOFT_PWM_SCALE 0 +#endif + +#ifdef FILAMENT_SENSOR + static int meas_shift_index; //used to point to a delayed sample in buffer for filament width sensor +#endif + +#ifdef HEATER_0_USES_MAX6675 + static int read_max6675(); +#endif + +//=========================================================================== +//============================= functions ============================ +//=========================================================================== + +void PID_autotune(float temp, int extruder, int ncycles) +{ + float input = 0.0; + int cycles = 0; + bool heating = true; + + unsigned long temp_millis = millis(), t1 = temp_millis, t2 = temp_millis; + long t_high = 0, t_low = 0; + + long bias, d; + float Ku, Tu; + float Kp, Ki, Kd; + float max = 0, min = 10000; + + #if HAS_AUTO_FAN + unsigned long extruder_autofan_last_check = temp_millis; + #endif + + if (extruder >= EXTRUDERS + #if !HAS_TEMP_BED + || extruder < 0 + #endif + ) { + SERIAL_ECHOLN(MSG_PID_BAD_EXTRUDER_NUM); + return; + } + + SERIAL_ECHOLN(MSG_PID_AUTOTUNE_START); + + disable_heater(); // switch off all heaters. + + if (extruder < 0) + soft_pwm_bed = bias = d = MAX_BED_POWER / 2; + else + soft_pwm[extruder] = bias = d = PID_MAX / 2; + + // PID Tuning loop + for(;;) { + + unsigned long ms = millis(); + + if (temp_meas_ready == true) { // temp sample ready + updateTemperaturesFromRawValues(); + + input = (extruder<0)?current_temperature_bed:current_temperature[extruder]; + + max = max(max, input); + min = min(min, input); + + #if HAS_AUTO_FAN + if (ms > extruder_autofan_last_check + 2500) { + checkExtruderAutoFans(); + extruder_autofan_last_check = ms; + } + #endif + + if (heating == true && input > temp) { + if (ms - t2 > 5000) { + heating = false; + if (extruder < 0) + soft_pwm_bed = (bias - d) >> 1; + else + soft_pwm[extruder] = (bias - d) >> 1; + t1 = ms; + t_high = t1 - t2; + max = temp; + } + } + if (heating == false && input < temp) { + if (ms - t1 > 5000) { + heating = true; + t2 = ms; + t_low = t2 - t1; + if (cycles > 0) { + long max_pow = extruder < 0 ? MAX_BED_POWER : PID_MAX; + bias += (d*(t_high - t_low))/(t_low + t_high); + bias = constrain(bias, 20, max_pow - 20); + d = (bias > max_pow / 2) ? max_pow - 1 - bias : bias; + + SERIAL_PROTOCOLPGM(MSG_BIAS); SERIAL_PROTOCOL(bias); + SERIAL_PROTOCOLPGM(MSG_D); SERIAL_PROTOCOL(d); + SERIAL_PROTOCOLPGM(MSG_MIN); SERIAL_PROTOCOL(min); + SERIAL_PROTOCOLPGM(MSG_MAX); SERIAL_PROTOCOLLN(max); + if (cycles > 2) { + Ku = (4.0 * d) / (3.14159265 * (max - min) / 2.0); + Tu = ((float)(t_low + t_high) / 1000.0); + SERIAL_PROTOCOLPGM(MSG_KU); SERIAL_PROTOCOL(Ku); + SERIAL_PROTOCOLPGM(MSG_TU); SERIAL_PROTOCOLLN(Tu); + Kp = 0.6 * Ku; + Ki = 2 * Kp / Tu; + Kd = Kp * Tu / 8; + SERIAL_PROTOCOLLNPGM(MSG_CLASSIC_PID); + SERIAL_PROTOCOLPGM(MSG_KP); SERIAL_PROTOCOLLN(Kp); + SERIAL_PROTOCOLPGM(MSG_KI); SERIAL_PROTOCOLLN(Ki); + SERIAL_PROTOCOLPGM(MSG_KD); SERIAL_PROTOCOLLN(Kd); + /* + Kp = 0.33*Ku; + Ki = Kp/Tu; + Kd = Kp*Tu/3; + SERIAL_PROTOCOLLNPGM(" Some overshoot "); + SERIAL_PROTOCOLPGM(" Kp: "); SERIAL_PROTOCOLLN(Kp); + SERIAL_PROTOCOLPGM(" Ki: "); SERIAL_PROTOCOLLN(Ki); + SERIAL_PROTOCOLPGM(" Kd: "); SERIAL_PROTOCOLLN(Kd); + Kp = 0.2*Ku; + Ki = 2*Kp/Tu; + Kd = Kp*Tu/3; + SERIAL_PROTOCOLLNPGM(" No overshoot "); + SERIAL_PROTOCOLPGM(" Kp: "); SERIAL_PROTOCOLLN(Kp); + SERIAL_PROTOCOLPGM(" Ki: "); SERIAL_PROTOCOLLN(Ki); + SERIAL_PROTOCOLPGM(" Kd: "); SERIAL_PROTOCOLLN(Kd); + */ + } + } + if (extruder < 0) + soft_pwm_bed = (bias + d) >> 1; + else + soft_pwm[extruder] = (bias + d) >> 1; + cycles++; + min = temp; + } + } + } + if (input > temp + 20) { + SERIAL_PROTOCOLLNPGM(MSG_PID_TEMP_TOO_HIGH); + return; + } + // Every 2 seconds... + if (ms > temp_millis + 2000) { + int p; + if (extruder < 0) { + p = soft_pwm_bed; + SERIAL_PROTOCOLPGM(MSG_OK_B); + } + else { + p = soft_pwm[extruder]; + SERIAL_PROTOCOLPGM(MSG_OK_T); + } + + SERIAL_PROTOCOL(input); + SERIAL_PROTOCOLPGM(MSG_AT); + SERIAL_PROTOCOLLN(p); + + temp_millis = ms; + } // every 2 seconds + // Over 2 minutes? + if (((ms - t1) + (ms - t2)) > (10L*60L*1000L*2L)) { + SERIAL_PROTOCOLLNPGM(MSG_PID_TIMEOUT); + return; + } + if (cycles > ncycles) { + SERIAL_PROTOCOLLNPGM(MSG_PID_AUTOTUNE_FINISHED); + return; + } + lcd_update(); + } +} + +void updatePID() { + #ifdef PIDTEMP + for (int e = 0; e < EXTRUDERS; e++) { + temp_iState_max[e] = PID_INTEGRAL_DRIVE_MAX / PID_PARAM(Ki,e); + } + #endif + #ifdef PIDTEMPBED + temp_iState_max_bed = PID_INTEGRAL_DRIVE_MAX / bedKi; + #endif +} + +int getHeaterPower(int heater) { + return heater < 0 ? soft_pwm_bed : soft_pwm[heater]; +} + +#if HAS_AUTO_FAN + + #if HAS_FAN + #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN + #error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN" + #endif + #if EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN + #error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN" + #endif + #if EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN + #error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN" + #endif + #if EXTRUDER_3_AUTO_FAN_PIN == FAN_PIN + #error "You cannot set EXTRUDER_3_AUTO_FAN_PIN equal to FAN_PIN" + #endif + #endif + +void setExtruderAutoFanState(int pin, bool state) +{ + unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0; + // this idiom allows both digital and PWM fan outputs (see M42 handling). + pinMode(pin, OUTPUT); + digitalWrite(pin, newFanSpeed); + analogWrite(pin, newFanSpeed); +} + +void checkExtruderAutoFans() +{ + uint8_t fanState = 0; + + // which fan pins need to be turned on? + #if HAS_AUTO_FAN_0 + if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE) + fanState |= 1; + #endif + #if HAS_AUTO_FAN_1 + if (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE) + { + if (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN) + fanState |= 1; + else + fanState |= 2; + } + #endif + #if HAS_AUTO_FAN_2 + if (current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE) + { + if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN) + fanState |= 1; + else if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN) + fanState |= 2; + else + fanState |= 4; + } + #endif + #if HAS_AUTO_FAN_3 + if (current_temperature[3] > EXTRUDER_AUTO_FAN_TEMPERATURE) + { + if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN) + fanState |= 1; + else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN) + fanState |= 2; + else if (EXTRUDER_3_AUTO_FAN_PIN == EXTRUDER_2_AUTO_FAN_PIN) + fanState |= 4; + else + fanState |= 8; + } + #endif + + // update extruder auto fan states + #if HAS_AUTO_FAN_0 + setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, (fanState & 1) != 0); + #endif + #if HAS_AUTO_FAN_1 + if (EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN) + setExtruderAutoFanState(EXTRUDER_1_AUTO_FAN_PIN, (fanState & 2) != 0); + #endif + #if HAS_AUTO_FAN_2 + if (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN + && EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN) + setExtruderAutoFanState(EXTRUDER_2_AUTO_FAN_PIN, (fanState & 4) != 0); + #endif + #if HAS_AUTO_FAN_3 + if (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN + && EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN + && EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_2_AUTO_FAN_PIN) + setExtruderAutoFanState(EXTRUDER_3_AUTO_FAN_PIN, (fanState & 8) != 0); + #endif +} + +#endif // any extruder auto fan pins set + +// +// Error checking and Write Routines +// +#if !HAS_HEATER_0 + #error HEATER_0_PIN not defined for this board +#endif +#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v) +#if EXTRUDERS > 1 || defined(HEATERS_PARALLEL) + #if !HAS_HEATER_1 + #error HEATER_1_PIN not defined for this board + #endif + #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v) + #if EXTRUDERS > 2 + #if !HAS_HEATER_2 + #error HEATER_2_PIN not defined for this board + #endif + #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v) + #if EXTRUDERS > 3 + #if !HAS_HEATER_3 + #error HEATER_3_PIN not defined for this board + #endif + #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v) + #endif + #endif +#endif +#ifdef HEATERS_PARALLEL + #define WRITE_HEATER_0(v) { WRITE_HEATER_0P(v); WRITE_HEATER_1(v); } +#else + #define WRITE_HEATER_0(v) WRITE_HEATER_0P(v) +#endif +#if HAS_HEATER_BED + #define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, v) +#endif +#if HAS_FAN + #define WRITE_FAN(v) WRITE(FAN_PIN, v) +#endif + +void manage_heater() { + + if (!temp_meas_ready) return; + + float pid_input, pid_output; + + updateTemperaturesFromRawValues(); + + #ifdef HEATER_0_USES_MAX6675 + float ct = current_temperature[0]; + if (ct > min(HEATER_0_MAXTEMP, 1023)) max_temp_error(0); + if (ct < max(HEATER_0_MINTEMP, 0.01)) min_temp_error(0); + #endif //HEATER_0_USES_MAX6675 + + unsigned long ms = millis(); + + // Loop through all extruders + for (int e = 0; e < EXTRUDERS; e++) { + + #if defined (THERMAL_RUNAWAY_PROTECTION_PERIOD) && THERMAL_RUNAWAY_PROTECTION_PERIOD > 0 + thermal_runaway_protection(&thermal_runaway_state_machine[e], &thermal_runaway_timer[e], current_temperature[e], target_temperature[e], e, THERMAL_RUNAWAY_PROTECTION_PERIOD, THERMAL_RUNAWAY_PROTECTION_HYSTERESIS); + #endif + + #ifdef PIDTEMP + pid_input = current_temperature[e]; + + #ifndef PID_OPENLOOP + pid_error[e] = target_temperature[e] - pid_input; + if (pid_error[e] > PID_FUNCTIONAL_RANGE) { + pid_output = BANG_MAX; + pid_reset[e] = true; + } + else if (pid_error[e] < -PID_FUNCTIONAL_RANGE || target_temperature[e] == 0) { + pid_output = 0; + pid_reset[e] = true; + } + else { + if (pid_reset[e] == true) { + temp_iState[e] = 0.0; + pid_reset[e] = false; + } + pTerm[e] = PID_PARAM(Kp,e) * pid_error[e]; + temp_iState[e] += pid_error[e]; + temp_iState[e] = constrain(temp_iState[e], temp_iState_min[e], temp_iState_max[e]); + iTerm[e] = PID_PARAM(Ki,e) * temp_iState[e]; + + //K1 defined in Configuration.h in the PID settings + #define K2 (1.0-K1) + dTerm[e] = (PID_PARAM(Kd,e) * (pid_input - temp_dState[e])) * K2 + (K1 * dTerm[e]); + pid_output = pTerm[e] + iTerm[e] - dTerm[e]; + if (pid_output > PID_MAX) { + if (pid_error[e] > 0) temp_iState[e] -= pid_error[e]; // conditional un-integration + pid_output = PID_MAX; + } + else if (pid_output < 0) { + if (pid_error[e] < 0) temp_iState[e] -= pid_error[e]; // conditional un-integration + pid_output = 0; + } + } + temp_dState[e] = pid_input; + #else + pid_output = constrain(target_temperature[e], 0, PID_MAX); + #endif //PID_OPENLOOP + + #ifdef PID_DEBUG + SERIAL_ECHO_START; + SERIAL_ECHO(MSG_PID_DEBUG); + SERIAL_ECHO(e); + SERIAL_ECHO(MSG_PID_DEBUG_INPUT); + SERIAL_ECHO(pid_input); + SERIAL_ECHO(MSG_PID_DEBUG_OUTPUT); + SERIAL_ECHO(pid_output); + SERIAL_ECHO(MSG_PID_DEBUG_PTERM); + SERIAL_ECHO(pTerm[e]); + SERIAL_ECHO(MSG_PID_DEBUG_ITERM); + SERIAL_ECHO(iTerm[e]); + SERIAL_ECHO(MSG_PID_DEBUG_DTERM); + SERIAL_ECHOLN(dTerm[e]); + #endif //PID_DEBUG + + #else /* PID off */ + + pid_output = 0; + if (current_temperature[e] < target_temperature[e]) pid_output = PID_MAX; + + #endif + + // Check if temperature is within the correct range + soft_pwm[e] = current_temperature[e] > minttemp[e] && current_temperature[e] < maxttemp[e] ? (int)pid_output >> 1 : 0; + + #ifdef WATCH_TEMP_PERIOD + if (watchmillis[e] && ms > watchmillis[e] + WATCH_TEMP_PERIOD) { + if (degHotend(e) < watch_start_temp[e] + WATCH_TEMP_INCREASE) { + setTargetHotend(0, e); + LCD_MESSAGEPGM(MSG_HEATING_FAILED_LCD); // translatable + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_HEATING_FAILED); + } + else { + watchmillis[e] = 0; + } + } + #endif //WATCH_TEMP_PERIOD + + #ifdef TEMP_SENSOR_1_AS_REDUNDANT + if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) { + disable_heater(); + if (IsStopped() == false) { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_EXTRUDER_SWITCHED_OFF); + LCD_ALERTMESSAGEPGM(MSG_ERR_REDUNDANT_TEMP); // translatable + } + #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + Stop(); + #endif + } + #endif //TEMP_SENSOR_1_AS_REDUNDANT + + } // Extruders Loop + + #if HAS_AUTO_FAN + if (ms > extruder_autofan_last_check + 2500) { // only need to check fan state very infrequently + checkExtruderAutoFans(); + extruder_autofan_last_check = ms; + } + #endif + + #ifndef PIDTEMPBED + if (ms < previous_millis_bed_heater + BED_CHECK_INTERVAL) return; + previous_millis_bed_heater = ms; + #endif //PIDTEMPBED + + #if TEMP_SENSOR_BED != 0 + + #if defined(THERMAL_RUNAWAY_PROTECTION_BED_PERIOD) && THERMAL_RUNAWAY_PROTECTION_BED_PERIOD > 0 + thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, 9, THERMAL_RUNAWAY_PROTECTION_BED_PERIOD, THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS); + #endif + + #ifdef PIDTEMPBED + pid_input = current_temperature_bed; + + #ifndef PID_OPENLOOP + pid_error_bed = target_temperature_bed - pid_input; + pTerm_bed = bedKp * pid_error_bed; + temp_iState_bed += pid_error_bed; + temp_iState_bed = constrain(temp_iState_bed, temp_iState_min_bed, temp_iState_max_bed); + iTerm_bed = bedKi * temp_iState_bed; + + //K1 defined in Configuration.h in the PID settings + #define K2 (1.0-K1) + dTerm_bed = (bedKd * (pid_input - temp_dState_bed))*K2 + (K1 * dTerm_bed); + temp_dState_bed = pid_input; + + pid_output = pTerm_bed + iTerm_bed - dTerm_bed; + if (pid_output > MAX_BED_POWER) { + if (pid_error_bed > 0) temp_iState_bed -= pid_error_bed; // conditional un-integration + pid_output = MAX_BED_POWER; + } + else if (pid_output < 0) { + if (pid_error_bed < 0) temp_iState_bed -= pid_error_bed; // conditional un-integration + pid_output = 0; + } + + #else + pid_output = constrain(target_temperature_bed, 0, MAX_BED_POWER); + #endif //PID_OPENLOOP + + soft_pwm_bed = current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP ? (int)pid_output >> 1 : 0; + + #elif !defined(BED_LIMIT_SWITCHING) + // Check if temperature is within the correct range + if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) { + soft_pwm_bed = current_temperature_bed < target_temperature_bed ? MAX_BED_POWER >> 1 : 0; + } + else { + soft_pwm_bed = 0; + WRITE_HEATER_BED(LOW); + } + #else //#ifdef BED_LIMIT_SWITCHING + // Check if temperature is within the correct band + if (current_temperature_bed > BED_MINTEMP && current_temperature_bed < BED_MAXTEMP) { + if (current_temperature_bed >= target_temperature_bed + BED_HYSTERESIS) + soft_pwm_bed = 0; + else if (current_temperature_bed <= target_temperature_bed - BED_HYSTERESIS) + soft_pwm_bed = MAX_BED_POWER >> 1; + } + else { + soft_pwm_bed = 0; + WRITE_HEATER_BED(LOW); + } + #endif + #endif //TEMP_SENSOR_BED != 0 + + // Control the extruder rate based on the width sensor + #ifdef FILAMENT_SENSOR + if (filament_sensor) { + meas_shift_index = delay_index1 - meas_delay_cm; + if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1; //loop around buffer if needed + + // Get the delayed info and add 100 to reconstitute to a percent of + // the nominal filament diameter then square it to get an area + meas_shift_index = constrain(meas_shift_index, 0, MAX_MEASUREMENT_DELAY); + float vm = pow((measurement_delay[meas_shift_index] + 100.0) / 100.0, 2); + if (vm < 0.01) vm = 0.01; + volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM] = vm; + } + #endif //FILAMENT_SENSOR +} + +#define PGM_RD_W(x) (short)pgm_read_word(&x) +// Derived from RepRap FiveD extruder::getTemperature() +// For hot end temperature measurement. +static float analog2temp(int raw, uint8_t e) { +#ifdef TEMP_SENSOR_1_AS_REDUNDANT + if (e > EXTRUDERS) +#else + if (e >= EXTRUDERS) +#endif + { + SERIAL_ERROR_START; + SERIAL_ERROR((int)e); + SERIAL_ERRORLNPGM(MSG_INVALID_EXTRUDER_NUM); + kill(); + return 0.0; + } + #ifdef HEATER_0_USES_MAX6675 + if (e == 0) + { + return 0.25 * raw; + } + #endif + + if(heater_ttbl_map[e] != NULL) + { + float celsius = 0; + uint8_t i; + short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]); + + for (i=1; i raw) + { + celsius = PGM_RD_W((*tt)[i-1][1]) + + (raw - PGM_RD_W((*tt)[i-1][0])) * + (float)(PGM_RD_W((*tt)[i][1]) - PGM_RD_W((*tt)[i-1][1])) / + (float)(PGM_RD_W((*tt)[i][0]) - PGM_RD_W((*tt)[i-1][0])); + break; + } + } + + // Overflow: Set to last value in the table + if (i == heater_ttbllen_map[e]) celsius = PGM_RD_W((*tt)[i-1][1]); + + return celsius; + } + return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET; +} + +// Derived from RepRap FiveD extruder::getTemperature() +// For bed temperature measurement. +static float analog2tempBed(int raw) { + #ifdef BED_USES_THERMISTOR + float celsius = 0; + byte i; + + for (i=1; i raw) + { + celsius = PGM_RD_W(BEDTEMPTABLE[i-1][1]) + + (raw - PGM_RD_W(BEDTEMPTABLE[i-1][0])) * + (float)(PGM_RD_W(BEDTEMPTABLE[i][1]) - PGM_RD_W(BEDTEMPTABLE[i-1][1])) / + (float)(PGM_RD_W(BEDTEMPTABLE[i][0]) - PGM_RD_W(BEDTEMPTABLE[i-1][0])); + break; + } + } + + // Overflow: Set to last value in the table + if (i == BEDTEMPTABLE_LEN) celsius = PGM_RD_W(BEDTEMPTABLE[i-1][1]); + + return celsius; + #elif defined BED_USES_AD595 + return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET; + #else + return 0; + #endif +} + +/* Called to get the raw values into the the actual temperatures. The raw values are created in interrupt context, + and this function is called from normal context as it is too slow to run in interrupts and will block the stepper routine otherwise */ +static void updateTemperaturesFromRawValues() { + #ifdef HEATER_0_USES_MAX6675 + current_temperature_raw[0] = read_max6675(); + #endif + for(uint8_t e = 0; e < EXTRUDERS; e++) { + current_temperature[e] = analog2temp(current_temperature_raw[e], e); + } + current_temperature_bed = analog2tempBed(current_temperature_bed_raw); + #ifdef TEMP_SENSOR_1_AS_REDUNDANT + redundant_temperature = analog2temp(redundant_temperature_raw, 1); + #endif + #if HAS_FILAMENT_SENSOR + filament_width_meas = analog2widthFil(); + #endif + //Reset the watchdog after we know we have a temperature measurement. + watchdog_reset(); + + CRITICAL_SECTION_START; + temp_meas_ready = false; + CRITICAL_SECTION_END; +} + + +#ifdef FILAMENT_SENSOR + + // Convert raw Filament Width to millimeters + float analog2widthFil() { + return current_raw_filwidth / 16383.0 * 5.0; + //return current_raw_filwidth; + } + + // Convert raw Filament Width to a ratio + int widthFil_to_size_ratio() { + float temp = filament_width_meas; + if (temp < MEASURED_LOWER_LIMIT) temp = filament_width_nominal; //assume sensor cut out + else if (temp > MEASURED_UPPER_LIMIT) temp = MEASURED_UPPER_LIMIT; + return filament_width_nominal / temp * 100; + } + +#endif + + + + + +void tp_init() +{ + #if MB(RUMBA) && ((TEMP_SENSOR_0==-1)||(TEMP_SENSOR_1==-1)||(TEMP_SENSOR_2==-1)||(TEMP_SENSOR_BED==-1)) + //disable RUMBA JTAG in case the thermocouple extension is plugged on top of JTAG connector + MCUCR=(1< HEATER_ ## NR ## _MAXTEMP) { \ + if (HEATER_ ## NR ## _RAW_LO_TEMP < HEATER_ ## NR ## _RAW_HI_TEMP) \ + maxttemp_raw[NR] -= OVERSAMPLENR; \ + else \ + maxttemp_raw[NR] += OVERSAMPLENR; \ + } + + #ifdef HEATER_0_MINTEMP + TEMP_MIN_ROUTINE(0); + #endif + #ifdef HEATER_0_MAXTEMP + TEMP_MAX_ROUTINE(0); + #endif + #if EXTRUDERS > 1 + #ifdef HEATER_1_MINTEMP + TEMP_MIN_ROUTINE(1); + #endif + #ifdef HEATER_1_MAXTEMP + TEMP_MAX_ROUTINE(1); + #endif + #if EXTRUDERS > 2 + #ifdef HEATER_2_MINTEMP + TEMP_MIN_ROUTINE(2); + #endif + #ifdef HEATER_2_MAXTEMP + TEMP_MAX_ROUTINE(2); + #endif + #if EXTRUDERS > 3 + #ifdef HEATER_3_MINTEMP + TEMP_MIN_ROUTINE(3); + #endif + #ifdef HEATER_3_MAXTEMP + TEMP_MAX_ROUTINE(3); + #endif + #endif // EXTRUDERS > 3 + #endif // EXTRUDERS > 2 + #endif // EXTRUDERS > 1 + + #ifdef BED_MINTEMP + /* No bed MINTEMP error implemented?!? */ /* + while(analog2tempBed(bed_minttemp_raw) < BED_MINTEMP) { + #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP + bed_minttemp_raw += OVERSAMPLENR; + #else + bed_minttemp_raw -= OVERSAMPLENR; + #endif + } + */ + #endif //BED_MINTEMP + #ifdef BED_MAXTEMP + while(analog2tempBed(bed_maxttemp_raw) > BED_MAXTEMP) { + #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP + bed_maxttemp_raw -= OVERSAMPLENR; + #else + bed_maxttemp_raw += OVERSAMPLENR; + #endif + } + #endif //BED_MAXTEMP +} + +void setWatch() { + #ifdef WATCH_TEMP_PERIOD + unsigned long ms = millis(); + for (int e = 0; e < EXTRUDERS; e++) { + if (degHotend(e) < degTargetHotend(e) - (WATCH_TEMP_INCREASE * 2)) { + watch_start_temp[e] = degHotend(e); + watchmillis[e] = ms; + } + } + #endif +} + +#if defined(THERMAL_RUNAWAY_PROTECTION_PERIOD) && THERMAL_RUNAWAY_PROTECTION_PERIOD > 0 +void thermal_runaway_protection(int *state, unsigned long *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) +{ +/* + SERIAL_ECHO_START; + SERIAL_ECHO("Thermal Thermal Runaway Running. Heater ID:"); + SERIAL_ECHO(heater_id); + SERIAL_ECHO(" ; State:"); + SERIAL_ECHO(*state); + SERIAL_ECHO(" ; Timer:"); + SERIAL_ECHO(*timer); + SERIAL_ECHO(" ; Temperature:"); + SERIAL_ECHO(temperature); + SERIAL_ECHO(" ; Target Temp:"); + SERIAL_ECHO(target_temperature); + SERIAL_ECHOLN(""); +*/ + if ((target_temperature == 0) || thermal_runaway) + { + *state = 0; + *timer = 0; + return; + } + switch (*state) + { + case 0: // "Heater Inactive" state + if (target_temperature > 0) *state = 1; + break; + case 1: // "First Heating" state + if (temperature >= target_temperature) *state = 2; + break; + case 2: // "Temperature Stable" state + { + unsigned long ms = millis(); + if (temperature >= (target_temperature - hysteresis_degc)) + { + *timer = ms; + } + else if ( (ms - *timer) > ((unsigned long) period_seconds) * 1000) + { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_THERMAL_RUNAWAY_STOP); + SERIAL_ERRORLN((int)heater_id); + LCD_ALERTMESSAGEPGM(MSG_THERMAL_RUNAWAY); // translatable + thermal_runaway = true; + while(1) + { + disable_heater(); + disable_x(); + disable_y(); + disable_z(); + disable_e0(); + disable_e1(); + disable_e2(); + disable_e3(); + manage_heater(); + lcd_update(); + } + } + } break; + } +} +#endif //THERMAL_RUNAWAY_PROTECTION_PERIOD + + +void disable_heater() { + for (int i=0; i 1 && HAS_TEMP_1 + target_temperature[1] = 0; + soft_pwm[1] = 0; + WRITE_HEATER_1(LOW); + #endif + + #if EXTRUDERS > 2 && HAS_TEMP_2 + target_temperature[2] = 0; + soft_pwm[2] = 0; + WRITE_HEATER_2(LOW); + #endif + + #if EXTRUDERS > 3 && HAS_TEMP_3 + target_temperature[3] = 0; + soft_pwm[3] = 0; + WRITE_HEATER_3(LOW); + #endif + + #if HAS_TEMP_BED + target_temperature_bed = 0; + soft_pwm_bed = 0; + #if HAS_HEATER_BED + WRITE_HEATER_BED(LOW); + #endif + #endif +} + +void max_temp_error(uint8_t e) { + disable_heater(); + if(IsStopped() == false) { + SERIAL_ERROR_START; + SERIAL_ERRORLN((int)e); + SERIAL_ERRORLNPGM(MSG_MAXTEMP_EXTRUDER_OFF); + LCD_ALERTMESSAGEPGM(MSG_ERR_MAXTEMP); // translatable + } + #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + Stop(); + #endif +} + +void min_temp_error(uint8_t e) { + disable_heater(); + if(IsStopped() == false) { + SERIAL_ERROR_START; + SERIAL_ERRORLN((int)e); + SERIAL_ERRORLNPGM(MSG_MINTEMP_EXTRUDER_OFF); + LCD_ALERTMESSAGEPGM(MSG_ERR_MINTEMP); // translatable + } + #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + Stop(); + #endif +} + +void bed_max_temp_error(void) { + #if HAS_HEATER_BED + WRITE_HEATER_BED(0); + #endif + if (IsStopped() == false) { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_MAXTEMP_BED_OFF); + LCD_ALERTMESSAGEPGM(MSG_ERR_MAXTEMP_BED); // translatable + } + #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE + Stop(); + #endif +} + +#ifdef HEATER_0_USES_MAX6675 + #define MAX6675_HEAT_INTERVAL 250 + long max6675_previous_millis = MAX6675_HEAT_INTERVAL; + int max6675_temp = 2000; + + static int read_max6675() { + + unsigned long ms = millis(); + if (ms < max6675_previous_millis + MAX6675_HEAT_INTERVAL) + return max6675_temp; + + max6675_previous_millis = ms; + max6675_temp = 0; + + #ifdef PRR + PRR &= ~(1<> 3; + } + + return max6675_temp; + } + +#endif //HEATER_0_USES_MAX6675 + +/** + * Stages in the ISR loop + */ +enum TempState { + PrepareTemp_0, + MeasureTemp_0, + PrepareTemp_BED, + MeasureTemp_BED, + PrepareTemp_1, + MeasureTemp_1, + PrepareTemp_2, + MeasureTemp_2, + PrepareTemp_3, + MeasureTemp_3, + Prepare_FILWIDTH, + Measure_FILWIDTH, + StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle +}; + +// +// Timer 0 is shared with millies +// +ISR(TIMER0_COMPB_vect) { + //these variables are only accesible from the ISR, but static, so they don't lose their value + static unsigned char temp_count = 0; + static unsigned long raw_temp_0_value = 0; + static unsigned long raw_temp_1_value = 0; + static unsigned long raw_temp_2_value = 0; + static unsigned long raw_temp_3_value = 0; + static unsigned long raw_temp_bed_value = 0; + static TempState temp_state = StartupDelay; + static unsigned char pwm_count = (1 << SOFT_PWM_SCALE); + + // Static members for each heater + #ifdef SLOW_PWM_HEATERS + static unsigned char slow_pwm_count = 0; + #define ISR_STATICS(n) \ + static unsigned char soft_pwm_ ## n; \ + static unsigned char state_heater_ ## n = 0; \ + static unsigned char state_timer_heater_ ## n = 0 + #else + #define ISR_STATICS(n) static unsigned char soft_pwm_ ## n + #endif + + // Statics per heater + ISR_STATICS(0); + #if (EXTRUDERS > 1) || defined(HEATERS_PARALLEL) + ISR_STATICS(1); + #if EXTRUDERS > 2 + ISR_STATICS(2); + #if EXTRUDERS > 3 + ISR_STATICS(3); + #endif + #endif + #endif + #if HAS_HEATER_BED + ISR_STATICS(BED); + #endif + + #if HAS_FILAMENT_SENSOR + static unsigned long raw_filwidth_value = 0; + #endif + + #ifndef SLOW_PWM_HEATERS + /** + * standard PWM modulation + */ + if (pwm_count == 0) { + soft_pwm_0 = soft_pwm[0]; + if (soft_pwm_0 > 0) { + WRITE_HEATER_0(1); + } + else WRITE_HEATER_0P(0); // If HEATERS_PARALLEL should apply, change to WRITE_HEATER_0 + + #if EXTRUDERS > 1 + soft_pwm_1 = soft_pwm[1]; + WRITE_HEATER_1(soft_pwm_1 > 0 ? 1 : 0); + #if EXTRUDERS > 2 + soft_pwm_2 = soft_pwm[2]; + WRITE_HEATER_2(soft_pwm_2 > 0 ? 1 : 0); + #if EXTRUDERS > 3 + soft_pwm_3 = soft_pwm[3]; + WRITE_HEATER_3(soft_pwm_3 > 0 ? 1 : 0); + #endif + #endif + #endif + + #if HAS_HEATER_BED + soft_pwm_BED = soft_pwm_bed; + WRITE_HEATER_BED(soft_pwm_BED > 0 ? 1 : 0); + #endif + #ifdef FAN_SOFT_PWM + soft_pwm_fan = fanSpeedSoftPwm / 2; + WRITE_FAN(soft_pwm_fan > 0 ? 1 : 0); + #endif + } + + if (soft_pwm_0 < pwm_count) { WRITE_HEATER_0(0); } + #if EXTRUDERS > 1 + if (soft_pwm_1 < pwm_count) WRITE_HEATER_1(0); + #if EXTRUDERS > 2 + if (soft_pwm_2 < pwm_count) WRITE_HEATER_2(0); + #if EXTRUDERS > 3 + if (soft_pwm_3 < pwm_count) WRITE_HEATER_3(0); + #endif + #endif + #endif + + #if HAS_HEATER_BED + if (soft_pwm_BED < pwm_count) WRITE_HEATER_BED(0); + #endif + + #ifdef FAN_SOFT_PWM + if (soft_pwm_fan < pwm_count) WRITE_FAN(0); + #endif + + pwm_count += (1 << SOFT_PWM_SCALE); + pwm_count &= 0x7f; + + #else // SLOW_PWM_HEATERS + /* + * SLOW PWM HEATERS + * + * for heaters drived by relay + */ + #ifndef MIN_STATE_TIME + #define MIN_STATE_TIME 16 // MIN_STATE_TIME * 65.5 = time in milliseconds + #endif + + // Macros for Slow PWM timer logic - HEATERS_PARALLEL applies + #define _SLOW_PWM_ROUTINE(NR, src) \ + soft_pwm_ ## NR = src; \ + if (soft_pwm_ ## NR > 0) { \ + if (state_timer_heater_ ## NR == 0) { \ + if (state_heater_ ## NR == 0) state_timer_heater_ ## NR = MIN_STATE_TIME; \ + state_heater_ ## NR = 1; \ + WRITE_HEATER_ ## NR(1); \ + } \ + } \ + else { \ + if (state_timer_heater_ ## NR == 0) { \ + if (state_heater_ ## NR == 1) state_timer_heater_ ## NR = MIN_STATE_TIME; \ + state_heater_ ## NR = 0; \ + WRITE_HEATER_ ## NR(0); \ + } \ + } + #define SLOW_PWM_ROUTINE(n) _SLOW_PWM_ROUTINE(n, soft_pwm[n]) + + #define PWM_OFF_ROUTINE(NR) \ + if (soft_pwm_ ## NR < slow_pwm_count) { \ + if (state_timer_heater_ ## NR == 0) { \ + if (state_heater_ ## NR == 1) state_timer_heater_ ## NR = MIN_STATE_TIME; \ + state_heater_ ## NR = 0; \ + WRITE_HEATER_ ## NR (0); \ + } \ + } + + if (slow_pwm_count == 0) { + + SLOW_PWM_ROUTINE(0); // EXTRUDER 0 + #if EXTRUDERS > 1 + SLOW_PWM_ROUTINE(1); // EXTRUDER 1 + #if EXTRUDERS > 2 + SLOW_PWM_ROUTINE(2); // EXTRUDER 2 + #if EXTRUDERS > 3 + SLOW_PWM_ROUTINE(3); // EXTRUDER 3 + #endif + #endif + #endif + #if HAS_HEATER_BED + _SLOW_PWM_ROUTINE(BED, soft_pwm_bed); // BED + #endif + + } // slow_pwm_count == 0 + + PWM_OFF_ROUTINE(0); // EXTRUDER 0 + #if EXTRUDERS > 1 + PWM_OFF_ROUTINE(1); // EXTRUDER 1 + #if EXTRUDERS > 2 + PWM_OFF_ROUTINE(2); // EXTRUDER 2 + #if EXTRUDERS > 3 + PWM_OFF_ROUTINE(3); // EXTRUDER 3 + #endif + #endif + #endif + #if HAS_HEATER_BED + PWM_OFF_ROUTINE(BED); // BED + #endif + + #ifdef FAN_SOFT_PWM + if (pwm_count == 0) { + soft_pwm_fan = fanSpeedSoftPwm / 2; + WRITE_FAN(soft_pwm_fan > 0 ? 1 : 0); + } + if (soft_pwm_fan < pwm_count) WRITE_FAN(0); + #endif //FAN_SOFT_PWM + + pwm_count += (1 << SOFT_PWM_SCALE); + pwm_count &= 0x7f; + + // increment slow_pwm_count only every 64 pwm_count circa 65.5ms + if ((pwm_count % 64) == 0) { + slow_pwm_count++; + slow_pwm_count &= 0x7f; + + // EXTRUDER 0 + if (state_timer_heater_0 > 0) state_timer_heater_0--; + #if EXTRUDERS > 1 // EXTRUDER 1 + if (state_timer_heater_1 > 0) state_timer_heater_1--; + #if EXTRUDERS > 2 // EXTRUDER 2 + if (state_timer_heater_2 > 0) state_timer_heater_2--; + #if EXTRUDERS > 3 // EXTRUDER 3 + if (state_timer_heater_3 > 0) state_timer_heater_3--; + #endif + #endif + #endif + #if HAS_HEATER_BED + if (state_timer_heater_BED > 0) state_timer_heater_BED--; + #endif + } // (pwm_count % 64) == 0 + + #endif // SLOW_PWM_HEATERS + + #define SET_ADMUX_ADCSRA(pin) ADMUX = (1 << REFS0) | (pin & 0x07); ADCSRA |= 1< 7) ADCSRB = 1 << MUX5; else ADCSRB = 0; SET_ADMUX_ADCSRA(pin) + #else + #define START_ADC(pin) ADCSRB = 0; SET_ADMUX_ADCSRA(pin) + #endif + + switch(temp_state) { + case PrepareTemp_0: + #if HAS_TEMP_0 + START_ADC(TEMP_0_PIN); + #endif + lcd_buttons_update(); + temp_state = MeasureTemp_0; + break; + case MeasureTemp_0: + #if HAS_TEMP_0 + raw_temp_0_value += ADC; + #endif + temp_state = PrepareTemp_BED; + break; + case PrepareTemp_BED: + #if HAS_TEMP_BED + START_ADC(TEMP_BED_PIN); + #endif + lcd_buttons_update(); + temp_state = MeasureTemp_BED; + break; + case MeasureTemp_BED: + #if HAS_TEMP_BED + raw_temp_bed_value += ADC; + #endif + temp_state = PrepareTemp_1; + break; + case PrepareTemp_1: + #if HAS_TEMP_1 + START_ADC(TEMP_1_PIN); + #endif + lcd_buttons_update(); + temp_state = MeasureTemp_1; + break; + case MeasureTemp_1: + #if HAS_TEMP_1 + raw_temp_1_value += ADC; + #endif + temp_state = PrepareTemp_2; + break; + case PrepareTemp_2: + #if HAS_TEMP_2 + START_ADC(TEMP_2_PIN); + #endif + lcd_buttons_update(); + temp_state = MeasureTemp_2; + break; + case MeasureTemp_2: + #if HAS_TEMP_2 + raw_temp_2_value += ADC; + #endif + temp_state = PrepareTemp_3; + break; + case PrepareTemp_3: + #if HAS_TEMP_3 + START_ADC(TEMP_3_PIN); + #endif + lcd_buttons_update(); + temp_state = MeasureTemp_3; + break; + case MeasureTemp_3: + #if HAS_TEMP_3 + raw_temp_3_value += ADC; + #endif + temp_state = Prepare_FILWIDTH; + break; + case Prepare_FILWIDTH: + #if HAS_FILAMENT_SENSOR + START_ADC(FILWIDTH_PIN); + #endif + lcd_buttons_update(); + temp_state = Measure_FILWIDTH; + break; + case Measure_FILWIDTH: + #if HAS_FILAMENT_SENSOR + // raw_filwidth_value += ADC; //remove to use an IIR filter approach + if (ADC > 102) { //check that ADC is reading a voltage > 0.5 volts, otherwise don't take in the data. + raw_filwidth_value -= (raw_filwidth_value>>7); //multiply raw_filwidth_value by 127/128 + raw_filwidth_value += ((unsigned long)ADC<<7); //add new ADC reading + } + #endif + temp_state = PrepareTemp_0; + temp_count++; + break; + case StartupDelay: + temp_state = PrepareTemp_0; + break; + + // default: + // SERIAL_ERROR_START; + // SERIAL_ERRORLNPGM("Temp measurement error!"); + // break; + } // switch(temp_state) + + if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256) = 164ms. + if (!temp_meas_ready) { //Only update the raw values if they have been read. Else we could be updating them during reading. + #ifndef HEATER_0_USES_MAX6675 + current_temperature_raw[0] = raw_temp_0_value; + #endif + #if EXTRUDERS > 1 + current_temperature_raw[1] = raw_temp_1_value; + #if EXTRUDERS > 2 + current_temperature_raw[2] = raw_temp_2_value; + #if EXTRUDERS > 3 + current_temperature_raw[3] = raw_temp_3_value; + #endif + #endif + #endif + #ifdef TEMP_SENSOR_1_AS_REDUNDANT + redundant_temperature_raw = raw_temp_1_value; + #endif + current_temperature_bed_raw = raw_temp_bed_value; + } //!temp_meas_ready + + // Filament Sensor - can be read any time since IIR filtering is used + #if HAS_FILAMENT_SENSOR + current_raw_filwidth = raw_filwidth_value >> 10; // Divide to get to 0-16384 range since we used 1/128 IIR filter approach + #endif + + temp_meas_ready = true; + temp_count = 0; + raw_temp_0_value = 0; + raw_temp_1_value = 0; + raw_temp_2_value = 0; + raw_temp_3_value = 0; + raw_temp_bed_value = 0; + + #if HEATER_0_RAW_LO_TEMP > HEATER_0_RAW_HI_TEMP + #define MAXTEST <= + #define MINTEST >= + #else + #define MAXTEST >= + #define MINTEST <= + #endif + + for (int i=0; i= OVERSAMPLENR + + #ifdef BABYSTEPPING + for (uint8_t axis=X_AXIS; axis<=Z_AXIS; axis++) { + int curTodo=babystepsTodo[axis]; //get rid of volatile for performance + + if (curTodo > 0) { + babystep(axis,/*fwd*/true); + babystepsTodo[axis]--; //less to do next time + } + else if(curTodo < 0) { + babystep(axis,/*fwd*/false); + babystepsTodo[axis]++; //less to do next time + } + } + #endif //BABYSTEPPING +} + +#ifdef PIDTEMP + // Apply the scale factors to the PID values + float scalePID_i(float i) { return i * PID_dT; } + float unscalePID_i(float i) { return i / PID_dT; } + float scalePID_d(float d) { return d / PID_dT; } + float unscalePID_d(float d) { return d * PID_dT; } +#endif //PIDTEMP diff --git a/Marlin/temperature.h b/Marlin/temperature.h new file mode 100644 index 000000000..b29fc2b57 --- /dev/null +++ b/Marlin/temperature.h @@ -0,0 +1,175 @@ +/* + temperature.h - temperature controller + Part of Marlin + + Copyright (c) 2011 Erik van der Zalm + + Grbl is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Grbl is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Grbl. If not, see . +*/ + +#ifndef temperature_h +#define temperature_h + +#include "Marlin.h" +#include "planner.h" +#ifdef PID_ADD_EXTRUSION_RATE + #include "stepper.h" +#endif + +// public functions +void tp_init(); //initialize the heating +void manage_heater(); //it is critical that this is called periodically. + +#ifdef FILAMENT_SENSOR +// For converting raw Filament Width to milimeters + float analog2widthFil(); + +// For converting raw Filament Width to an extrusion ratio + int widthFil_to_size_ratio(); +#endif + +// low level conversion routines +// do not use these routines and variables outside of temperature.cpp +extern int target_temperature[EXTRUDERS]; +extern float current_temperature[EXTRUDERS]; +#ifdef SHOW_TEMP_ADC_VALUES + extern int current_temperature_raw[EXTRUDERS]; + extern int current_temperature_bed_raw; +#endif +extern int target_temperature_bed; +extern float current_temperature_bed; +#ifdef TEMP_SENSOR_1_AS_REDUNDANT + extern float redundant_temperature; +#endif + +#if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1 + extern unsigned char soft_pwm_bed; +#endif + +#ifdef PIDTEMP + + #ifdef PID_PARAMS_PER_EXTRUDER + extern float Kp[EXTRUDERS], Ki[EXTRUDERS], Kd[EXTRUDERS], Kc[EXTRUDERS]; // one param per extruder + #define PID_PARAM(param,e) param[e] // use macro to point to array value + #else + extern float Kp, Ki, Kd, Kc; // one param per extruder - saves 20 or 36 bytes of ram (inc array pointer) + #define PID_PARAM(param, e) param // use macro to point directly to value + #endif // PID_PARAMS_PER_EXTRUDER + float scalePID_i(float i); + float scalePID_d(float d); + float unscalePID_i(float i); + float unscalePID_d(float d); + +#endif +#ifdef PIDTEMPBED + extern float bedKp,bedKi,bedKd; +#endif + + +#ifdef BABYSTEPPING + extern volatile int babystepsTodo[3]; +#endif + +//high level conversion routines, for use outside of temperature.cpp +//inline so that there is no performance decrease. +//deg=degreeCelsius + +FORCE_INLINE float degHotend(uint8_t extruder) { return current_temperature[extruder]; } +FORCE_INLINE float degBed() { return current_temperature_bed; } + +#ifdef SHOW_TEMP_ADC_VALUES + FORCE_INLINE float rawHotendTemp(uint8_t extruder) { return current_temperature_raw[extruder]; } + FORCE_INLINE float rawBedTemp() { return current_temperature_bed_raw; } +#endif + +FORCE_INLINE float degTargetHotend(uint8_t extruder) { return target_temperature[extruder]; } +FORCE_INLINE float degTargetBed() { return target_temperature_bed; } + +FORCE_INLINE void setTargetHotend(const float &celsius, uint8_t extruder) { target_temperature[extruder] = celsius; } +FORCE_INLINE void setTargetBed(const float &celsius) { target_temperature_bed = celsius; } + +FORCE_INLINE bool isHeatingHotend(uint8_t extruder) { return target_temperature[extruder] > current_temperature[extruder]; } +FORCE_INLINE bool isHeatingBed() { return target_temperature_bed > current_temperature_bed; } + +FORCE_INLINE bool isCoolingHotend(uint8_t extruder) { return target_temperature[extruder] < current_temperature[extruder]; } +FORCE_INLINE bool isCoolingBed() { return target_temperature_bed < current_temperature_bed; } + +#define degHotend0() degHotend(0) +#define degTargetHotend0() degTargetHotend(0) +#define setTargetHotend0(_celsius) setTargetHotend((_celsius), 0) +#define isHeatingHotend0() isHeatingHotend(0) +#define isCoolingHotend0() isCoolingHotend(0) +#if EXTRUDERS > 1 + #define degHotend1() degHotend(1) + #define degTargetHotend1() degTargetHotend(1) + #define setTargetHotend1(_celsius) setTargetHotend((_celsius), 1) + #define isHeatingHotend1() isHeatingHotend(1) + #define isCoolingHotend1() isCoolingHotend(1) +#else + #define setTargetHotend1(_celsius) do{}while(0) +#endif +#if EXTRUDERS > 2 + #define degHotend2() degHotend(2) + #define degTargetHotend2() degTargetHotend(2) + #define setTargetHotend2(_celsius) setTargetHotend((_celsius), 2) + #define isHeatingHotend2() isHeatingHotend(2) + #define isCoolingHotend2() isCoolingHotend(2) +#else + #define setTargetHotend2(_celsius) do{}while(0) +#endif +#if EXTRUDERS > 3 + #define degHotend3() degHotend(3) + #define degTargetHotend3() degTargetHotend(3) + #define setTargetHotend3(_celsius) setTargetHotend((_celsius), 3) + #define isHeatingHotend3() isHeatingHotend(3) + #define isCoolingHotend3() isCoolingHotend(3) +#else + #define setTargetHotend3(_celsius) do{}while(0) +#endif +#if EXTRUDERS > 4 + #error Invalid number of extruders +#endif + +int getHeaterPower(int heater); +void disable_heater(); +void setWatch(); +void updatePID(); + +#if defined (THERMAL_RUNAWAY_PROTECTION_PERIOD) && THERMAL_RUNAWAY_PROTECTION_PERIOD > 0 +void thermal_runaway_protection(int *state, unsigned long *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc); +static int thermal_runaway_state_machine[4]; // = {0,0,0,0}; +static unsigned long thermal_runaway_timer[4]; // = {0,0,0,0}; +static bool thermal_runaway = false; +#if TEMP_SENSOR_BED != 0 + static int thermal_runaway_bed_state_machine; + static unsigned long thermal_runaway_bed_timer; +#endif +#endif + +FORCE_INLINE void autotempShutdown() { + #ifdef AUTOTEMP + if (autotemp_enabled) { + autotemp_enabled = false; + if (degTargetHotend(active_extruder) > autotemp_min) + setTargetHotend(0, active_extruder); + } + #endif +} + +void PID_autotune(float temp, int extruder, int ncycles); + +void setExtruderAutoFanState(int pin, bool state); +void checkExtruderAutoFans(); + +#endif diff --git a/Marlin/thermistortables.h b/Marlin/thermistortables.h index 1c780020b..61092f005 100644 --- a/Marlin/thermistortables.h +++ b/Marlin/thermistortables.h @@ -1,148 +1,1236 @@ #ifndef THERMISTORTABLES_H_ #define THERMISTORTABLES_H_ -#if (THERMISTORHEATER == 1) || (THERMISTORBED == 1) //100k bed thermistor +#include "Marlin.h" +#define OVERSAMPLENR 16 -#define NUMTEMPS_1 61 -const short temptable_1[NUMTEMPS_1][2] = { -{ (23*16) , 300 }, -{ (25*16) , 295 }, -{ (27*16) , 290 }, -{ (28*16) , 285 }, -{ (31*16) , 280 }, -{ (33*16) , 275 }, -{ (35*16) , 270 }, -{ (38*16) , 265 }, -{ (41*16) , 260 }, -{ (44*16) , 255 }, -{ (48*16) , 250 }, -{ (52*16) , 245 }, -{ (56*16) , 240 }, -{ (61*16) , 235 }, -{ (66*16) , 230 }, -{ (71*16) , 225 }, -{ (78*16) , 220 }, -{ (84*16) , 215 }, -{ (92*16) , 210 }, -{ (100*16), 205 }, -{ (109*16), 200 }, -{ (120*16), 195 }, -{ (131*16), 190 }, -{ (143*16), 185 }, -{ (156*16), 180 }, -{ (171*16), 175 }, -{ (187*16), 170 }, -{ (205*16), 165 }, -{ (224*16), 160 }, -{ (245*16), 155 }, -{ (268*16), 150 }, -{ (293*16), 145 }, -{ (320*16), 140 }, -{ (348*16), 135 }, -{ (379*16), 130 }, -{ (411*16), 125 }, -{ (445*16), 120 }, -{ (480*16), 115 }, -{ (516*16), 110 }, -{ (553*16), 105 }, -{ (591*16), 100 }, -{ (628*16), 95 }, -{ (665*16), 90 }, -{ (702*16), 85 }, -{ (737*16), 80 }, -{ (770*16), 75 }, -{ (801*16), 70 }, -{ (830*16), 65 }, -{ (857*16), 60 }, -{ (881*16), 55 }, -{ (903*16), 50 }, -{ (922*16), 45 }, -{ (939*16), 40 }, -{ (954*16), 35 }, -{ (966*16), 30 }, -{ (977*16), 25 }, -{ (985*16), 20 }, -{ (993*16), 15 }, -{ (999*16), 10 }, -{ (1004*16), 5 }, -{ (1008*16), 0 } //safety +#if (THERMISTORHEATER_0 == 1) || (THERMISTORHEATER_1 == 1) || (THERMISTORHEATER_2 == 1) || (THERMISTORHEATER_3 == 1) || (THERMISTORBED == 1) //100k bed thermistor + +const short temptable_1[][2] PROGMEM = { +{ 23*OVERSAMPLENR , 300 }, +{ 25*OVERSAMPLENR , 295 }, +{ 27*OVERSAMPLENR , 290 }, +{ 28*OVERSAMPLENR , 285 }, +{ 31*OVERSAMPLENR , 280 }, +{ 33*OVERSAMPLENR , 275 }, +{ 35*OVERSAMPLENR , 270 }, +{ 38*OVERSAMPLENR , 265 }, +{ 41*OVERSAMPLENR , 260 }, +{ 44*OVERSAMPLENR , 255 }, +{ 48*OVERSAMPLENR , 250 }, +{ 52*OVERSAMPLENR , 245 }, +{ 56*OVERSAMPLENR , 240 }, +{ 61*OVERSAMPLENR , 235 }, +{ 66*OVERSAMPLENR , 230 }, +{ 71*OVERSAMPLENR , 225 }, +{ 78*OVERSAMPLENR , 220 }, +{ 84*OVERSAMPLENR , 215 }, +{ 92*OVERSAMPLENR , 210 }, +{ 100*OVERSAMPLENR , 205 }, +{ 109*OVERSAMPLENR , 200 }, +{ 120*OVERSAMPLENR , 195 }, +{ 131*OVERSAMPLENR , 190 }, +{ 143*OVERSAMPLENR , 185 }, +{ 156*OVERSAMPLENR , 180 }, +{ 171*OVERSAMPLENR , 175 }, +{ 187*OVERSAMPLENR , 170 }, +{ 205*OVERSAMPLENR , 165 }, +{ 224*OVERSAMPLENR , 160 }, +{ 245*OVERSAMPLENR , 155 }, +{ 268*OVERSAMPLENR , 150 }, +{ 293*OVERSAMPLENR , 145 }, +{ 320*OVERSAMPLENR , 140 }, +{ 348*OVERSAMPLENR , 135 }, +{ 379*OVERSAMPLENR , 130 }, +{ 411*OVERSAMPLENR , 125 }, +{ 445*OVERSAMPLENR , 120 }, +{ 480*OVERSAMPLENR , 115 }, +{ 516*OVERSAMPLENR , 110 }, +{ 553*OVERSAMPLENR , 105 }, +{ 591*OVERSAMPLENR , 100 }, +{ 628*OVERSAMPLENR , 95 }, +{ 665*OVERSAMPLENR , 90 }, +{ 702*OVERSAMPLENR , 85 }, +{ 737*OVERSAMPLENR , 80 }, +{ 770*OVERSAMPLENR , 75 }, +{ 801*OVERSAMPLENR , 70 }, +{ 830*OVERSAMPLENR , 65 }, +{ 857*OVERSAMPLENR , 60 }, +{ 881*OVERSAMPLENR , 55 }, +{ 903*OVERSAMPLENR , 50 }, +{ 922*OVERSAMPLENR , 45 }, +{ 939*OVERSAMPLENR , 40 }, +{ 954*OVERSAMPLENR , 35 }, +{ 966*OVERSAMPLENR , 30 }, +{ 977*OVERSAMPLENR , 25 }, +{ 985*OVERSAMPLENR , 20 }, +{ 993*OVERSAMPLENR , 15 }, +{ 999*OVERSAMPLENR , 10 }, +{ 1004*OVERSAMPLENR , 5 }, +{ 1008*OVERSAMPLENR , 0 } //safety }; #endif -#if (THERMISTORHEATER == 2) || (THERMISTORBED == 2) //200k bed thermistor -#define NUMTEMPS_2 21 -const short temptable_2[NUMTEMPS_2][2] = { - {(1*16), 848}, - {(54*16), 275}, - {(107*16), 228}, - {(160*16), 202}, - {(213*16), 185}, - {(266*16), 171}, - {(319*16), 160}, - {(372*16), 150}, - {(425*16), 141}, - {(478*16), 133}, - {(531*16), 125}, - {(584*16), 118}, - {(637*16), 110}, - {(690*16), 103}, - {(743*16), 95}, - {(796*16), 86}, - {(849*16), 77}, - {(902*16), 65}, - {(955*16), 49}, - {(1008*16), 17}, - {(1020*16), 0} //safety +#if (THERMISTORHEATER_0 == 2) || (THERMISTORHEATER_1 == 2) || (THERMISTORHEATER_2 == 2) || (THERMISTORHEATER_3 == 2) || (THERMISTORBED == 2) //200k bed thermistor +const short temptable_2[][2] PROGMEM = { +//200k ATC Semitec 204GT-2 +//Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf +// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance + {1*OVERSAMPLENR, 848}, + {30*OVERSAMPLENR, 300}, //top rating 300C + {34*OVERSAMPLENR, 290}, + {39*OVERSAMPLENR, 280}, + {46*OVERSAMPLENR, 270}, + {53*OVERSAMPLENR, 260}, + {63*OVERSAMPLENR, 250}, + {74*OVERSAMPLENR, 240}, + {87*OVERSAMPLENR, 230}, + {104*OVERSAMPLENR, 220}, + {124*OVERSAMPLENR, 210}, + {148*OVERSAMPLENR, 200}, + {176*OVERSAMPLENR, 190}, + {211*OVERSAMPLENR, 180}, + {252*OVERSAMPLENR, 170}, + {301*OVERSAMPLENR, 160}, + {357*OVERSAMPLENR, 150}, + {420*OVERSAMPLENR, 140}, + {489*OVERSAMPLENR, 130}, + {562*OVERSAMPLENR, 120}, + {636*OVERSAMPLENR, 110}, + {708*OVERSAMPLENR, 100}, + {775*OVERSAMPLENR, 90}, + {835*OVERSAMPLENR, 80}, + {884*OVERSAMPLENR, 70}, + {924*OVERSAMPLENR, 60}, + {955*OVERSAMPLENR, 50}, + {977*OVERSAMPLENR, 40}, + {993*OVERSAMPLENR, 30}, + {1004*OVERSAMPLENR, 20}, + {1012*OVERSAMPLENR, 10}, + {1016*OVERSAMPLENR, 0}, }; #endif -#if (THERMISTORHEATER == 3) || (THERMISTORBED == 3) //mendel-parts -#define NUMTEMPS_3 28 -const short temptable_3[NUMTEMPS_3][2] = { - {(1*16),864}, - {(21*16),300}, - {(25*16),290}, - {(29*16),280}, - {(33*16),270}, - {(39*16),260}, - {(46*16),250}, - {(54*16),240}, - {(64*16),230}, - {(75*16),220}, - {(90*16),210}, - {(107*16),200}, - {(128*16),190}, - {(154*16),180}, - {(184*16),170}, - {(221*16),160}, - {(265*16),150}, - {(316*16),140}, - {(375*16),130}, - {(441*16),120}, - {(513*16),110}, - {(588*16),100}, - {(734*16),80}, - {(856*16),60}, - {(938*16),40}, - {(986*16),20}, - {(1008*16),0}, - {(1018*16),-20} - }; +#if (THERMISTORHEATER_0 == 3) || (THERMISTORHEATER_1 == 3) || (THERMISTORHEATER_2 == 3) || (THERMISTORHEATER_3 == 3) || (THERMISTORBED == 3) //mendel-parts +const short temptable_3[][2] PROGMEM = { + {1*OVERSAMPLENR,864}, + {21*OVERSAMPLENR,300}, + {25*OVERSAMPLENR,290}, + {29*OVERSAMPLENR,280}, + {33*OVERSAMPLENR,270}, + {39*OVERSAMPLENR,260}, + {46*OVERSAMPLENR,250}, + {54*OVERSAMPLENR,240}, + {64*OVERSAMPLENR,230}, + {75*OVERSAMPLENR,220}, + {90*OVERSAMPLENR,210}, + {107*OVERSAMPLENR,200}, + {128*OVERSAMPLENR,190}, + {154*OVERSAMPLENR,180}, + {184*OVERSAMPLENR,170}, + {221*OVERSAMPLENR,160}, + {265*OVERSAMPLENR,150}, + {316*OVERSAMPLENR,140}, + {375*OVERSAMPLENR,130}, + {441*OVERSAMPLENR,120}, + {513*OVERSAMPLENR,110}, + {588*OVERSAMPLENR,100}, + {734*OVERSAMPLENR,80}, + {856*OVERSAMPLENR,60}, + {938*OVERSAMPLENR,40}, + {986*OVERSAMPLENR,20}, + {1008*OVERSAMPLENR,0}, + {1018*OVERSAMPLENR,-20} + }; #endif +#if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 4) || (THERMISTORHEATER_3 == 4) || (THERMISTORBED == 4) //10k thermistor +const short temptable_4[][2] PROGMEM = { + {1*OVERSAMPLENR, 430}, + {54*OVERSAMPLENR, 137}, + {107*OVERSAMPLENR, 107}, + {160*OVERSAMPLENR, 91}, + {213*OVERSAMPLENR, 80}, + {266*OVERSAMPLENR, 71}, + {319*OVERSAMPLENR, 64}, + {372*OVERSAMPLENR, 57}, + {425*OVERSAMPLENR, 51}, + {478*OVERSAMPLENR, 46}, + {531*OVERSAMPLENR, 41}, + {584*OVERSAMPLENR, 35}, + {637*OVERSAMPLENR, 30}, + {690*OVERSAMPLENR, 25}, + {743*OVERSAMPLENR, 20}, + {796*OVERSAMPLENR, 14}, + {849*OVERSAMPLENR, 7}, + {902*OVERSAMPLENR, 0}, + {955*OVERSAMPLENR, -11}, + {1008*OVERSAMPLENR, -35} +}; +#endif -#if THERMISTORHEATER == 1 -#define NUMTEMPS NUMTEMPS_1 -#define temptable temptable_1 -#elif THERMISTORHEATER == 2 -#define NUMTEMPS NUMTEMPS_2 -#define temptable temptable_2 -#elif THERMISTORHEATER == 3 -#define NUMTEMPS NUMTEMPS_3 -#define temptable temptable_3 +#if (THERMISTORHEATER_0 == 5) || (THERMISTORHEATER_1 == 5) || (THERMISTORHEATER_2 == 5) || (THERMISTORHEATER_3 == 5) || (THERMISTORBED == 5) //100k ParCan thermistor (104GT-2) +const short temptable_5[][2] PROGMEM = { +// ATC Semitec 104GT-2 (Used in ParCan) +// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf +// Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance + {1*OVERSAMPLENR, 713}, + {17*OVERSAMPLENR, 300}, //top rating 300C + {20*OVERSAMPLENR, 290}, + {23*OVERSAMPLENR, 280}, + {27*OVERSAMPLENR, 270}, + {31*OVERSAMPLENR, 260}, + {37*OVERSAMPLENR, 250}, + {43*OVERSAMPLENR, 240}, + {51*OVERSAMPLENR, 230}, + {61*OVERSAMPLENR, 220}, + {73*OVERSAMPLENR, 210}, + {87*OVERSAMPLENR, 200}, + {106*OVERSAMPLENR, 190}, + {128*OVERSAMPLENR, 180}, + {155*OVERSAMPLENR, 170}, + {189*OVERSAMPLENR, 160}, + {230*OVERSAMPLENR, 150}, + {278*OVERSAMPLENR, 140}, + {336*OVERSAMPLENR, 130}, + {402*OVERSAMPLENR, 120}, + {476*OVERSAMPLENR, 110}, + {554*OVERSAMPLENR, 100}, + {635*OVERSAMPLENR, 90}, + {713*OVERSAMPLENR, 80}, + {784*OVERSAMPLENR, 70}, + {846*OVERSAMPLENR, 60}, + {897*OVERSAMPLENR, 50}, + {937*OVERSAMPLENR, 40}, + {966*OVERSAMPLENR, 30}, + {986*OVERSAMPLENR, 20}, + {1000*OVERSAMPLENR, 10}, + {1010*OVERSAMPLENR, 0} +}; +#endif + +#if (THERMISTORHEATER_0 == 6) || (THERMISTORHEATER_1 == 6) || (THERMISTORHEATER_2 == 6) || (THERMISTORHEATER_3 == 6) || (THERMISTORBED == 6) // 100k Epcos thermistor +const short temptable_6[][2] PROGMEM = { + {1*OVERSAMPLENR, 350}, + {28*OVERSAMPLENR, 250}, //top rating 250C + {31*OVERSAMPLENR, 245}, + {35*OVERSAMPLENR, 240}, + {39*OVERSAMPLENR, 235}, + {42*OVERSAMPLENR, 230}, + {44*OVERSAMPLENR, 225}, + {49*OVERSAMPLENR, 220}, + {53*OVERSAMPLENR, 215}, + {62*OVERSAMPLENR, 210}, + {71*OVERSAMPLENR, 205}, //fitted graphically + {78*OVERSAMPLENR, 200}, //fitted graphically + {94*OVERSAMPLENR, 190}, + {102*OVERSAMPLENR, 185}, + {116*OVERSAMPLENR, 170}, + {143*OVERSAMPLENR, 160}, + {183*OVERSAMPLENR, 150}, + {223*OVERSAMPLENR, 140}, + {270*OVERSAMPLENR, 130}, + {318*OVERSAMPLENR, 120}, + {383*OVERSAMPLENR, 110}, + {413*OVERSAMPLENR, 105}, + {439*OVERSAMPLENR, 100}, + {484*OVERSAMPLENR, 95}, + {513*OVERSAMPLENR, 90}, + {607*OVERSAMPLENR, 80}, + {664*OVERSAMPLENR, 70}, + {781*OVERSAMPLENR, 60}, + {810*OVERSAMPLENR, 55}, + {849*OVERSAMPLENR, 50}, + {914*OVERSAMPLENR, 45}, + {914*OVERSAMPLENR, 40}, + {935*OVERSAMPLENR, 35}, + {954*OVERSAMPLENR, 30}, + {970*OVERSAMPLENR, 25}, + {978*OVERSAMPLENR, 22}, + {1008*OVERSAMPLENR, 3}, + {1023*OVERSAMPLENR, 0} //to allow internal 0 degrees C +}; +#endif + +#if (THERMISTORHEATER_0 == 7) || (THERMISTORHEATER_1 == 7) || (THERMISTORHEATER_2 == 7) || (THERMISTORHEATER_3 == 7) || (THERMISTORBED == 7) // 100k Honeywell 135-104LAG-J01 +const short temptable_7[][2] PROGMEM = { + {1*OVERSAMPLENR, 941}, + {19*OVERSAMPLENR, 362}, + {37*OVERSAMPLENR, 299}, //top rating 300C + {55*OVERSAMPLENR, 266}, + {73*OVERSAMPLENR, 245}, + {91*OVERSAMPLENR, 229}, + {109*OVERSAMPLENR, 216}, + {127*OVERSAMPLENR, 206}, + {145*OVERSAMPLENR, 197}, + {163*OVERSAMPLENR, 190}, + {181*OVERSAMPLENR, 183}, + {199*OVERSAMPLENR, 177}, + {217*OVERSAMPLENR, 171}, + {235*OVERSAMPLENR, 166}, + {253*OVERSAMPLENR, 162}, + {271*OVERSAMPLENR, 157}, + {289*OVERSAMPLENR, 153}, + {307*OVERSAMPLENR, 149}, + {325*OVERSAMPLENR, 146}, + {343*OVERSAMPLENR, 142}, + {361*OVERSAMPLENR, 139}, + {379*OVERSAMPLENR, 135}, + {397*OVERSAMPLENR, 132}, + {415*OVERSAMPLENR, 129}, + {433*OVERSAMPLENR, 126}, + {451*OVERSAMPLENR, 123}, + {469*OVERSAMPLENR, 121}, + {487*OVERSAMPLENR, 118}, + {505*OVERSAMPLENR, 115}, + {523*OVERSAMPLENR, 112}, + {541*OVERSAMPLENR, 110}, + {559*OVERSAMPLENR, 107}, + {577*OVERSAMPLENR, 105}, + {595*OVERSAMPLENR, 102}, + {613*OVERSAMPLENR, 99}, + {631*OVERSAMPLENR, 97}, + {649*OVERSAMPLENR, 94}, + {667*OVERSAMPLENR, 92}, + {685*OVERSAMPLENR, 89}, + {703*OVERSAMPLENR, 86}, + {721*OVERSAMPLENR, 84}, + {739*OVERSAMPLENR, 81}, + {757*OVERSAMPLENR, 78}, + {775*OVERSAMPLENR, 75}, + {793*OVERSAMPLENR, 72}, + {811*OVERSAMPLENR, 69}, + {829*OVERSAMPLENR, 66}, + {847*OVERSAMPLENR, 62}, + {865*OVERSAMPLENR, 59}, + {883*OVERSAMPLENR, 55}, + {901*OVERSAMPLENR, 51}, + {919*OVERSAMPLENR, 46}, + {937*OVERSAMPLENR, 41}, + {955*OVERSAMPLENR, 35}, + {973*OVERSAMPLENR, 27}, + {991*OVERSAMPLENR, 17}, + {1009*OVERSAMPLENR, 1}, + {1023*OVERSAMPLENR, 0} //to allow internal 0 degrees C +}; +#endif + +#if (THERMISTORHEATER_0 == 71) || (THERMISTORHEATER_1 == 71) || (THERMISTORHEATER_2 == 71) || (THERMISTORHEATER_3 == 71) || (THERMISTORBED == 71) // 100k Honeywell 135-104LAF-J01 +// R0 = 100000 Ohm +// T0 = 25 °C +// Beta = 3974 +// R1 = 0 Ohm +// R2 = 4700 Ohm +const short temptable_71[][2] PROGMEM = { + {35*OVERSAMPLENR, 300}, + {51*OVERSAMPLENR, 270}, + {54*OVERSAMPLENR, 265}, + {58*OVERSAMPLENR, 260}, + {59*OVERSAMPLENR, 258}, + {61*OVERSAMPLENR, 256}, + {63*OVERSAMPLENR, 254}, + {64*OVERSAMPLENR, 252}, + {66*OVERSAMPLENR, 250}, + {67*OVERSAMPLENR, 249}, + {68*OVERSAMPLENR, 248}, + {69*OVERSAMPLENR, 247}, + {70*OVERSAMPLENR, 246}, + {71*OVERSAMPLENR, 245}, + {72*OVERSAMPLENR, 244}, + {73*OVERSAMPLENR, 243}, + {74*OVERSAMPLENR, 242}, + {75*OVERSAMPLENR, 241}, + {76*OVERSAMPLENR, 240}, + {77*OVERSAMPLENR, 239}, + {78*OVERSAMPLENR, 238}, + {79*OVERSAMPLENR, 237}, + {80*OVERSAMPLENR, 236}, + {81*OVERSAMPLENR, 235}, + {82*OVERSAMPLENR, 234}, + {84*OVERSAMPLENR, 233}, + {85*OVERSAMPLENR, 232}, + {86*OVERSAMPLENR, 231}, + {87*OVERSAMPLENR, 230}, + {89*OVERSAMPLENR, 229}, + {90*OVERSAMPLENR, 228}, + {91*OVERSAMPLENR, 227}, + {92*OVERSAMPLENR, 226}, + {94*OVERSAMPLENR, 225}, + {95*OVERSAMPLENR, 224}, + {97*OVERSAMPLENR, 223}, + {98*OVERSAMPLENR, 222}, + {99*OVERSAMPLENR, 221}, + {101*OVERSAMPLENR, 220}, + {102*OVERSAMPLENR, 219}, + {104*OVERSAMPLENR, 218}, + {106*OVERSAMPLENR, 217}, + {107*OVERSAMPLENR, 216}, + {109*OVERSAMPLENR, 215}, + {110*OVERSAMPLENR, 214}, + {112*OVERSAMPLENR, 213}, + {114*OVERSAMPLENR, 212}, + {115*OVERSAMPLENR, 211}, + {117*OVERSAMPLENR, 210}, + {119*OVERSAMPLENR, 209}, + {121*OVERSAMPLENR, 208}, + {123*OVERSAMPLENR, 207}, + {125*OVERSAMPLENR, 206}, + {126*OVERSAMPLENR, 205}, + {128*OVERSAMPLENR, 204}, + {130*OVERSAMPLENR, 203}, + {132*OVERSAMPLENR, 202}, + {134*OVERSAMPLENR, 201}, + {136*OVERSAMPLENR, 200}, + {139*OVERSAMPLENR, 199}, + {141*OVERSAMPLENR, 198}, + {143*OVERSAMPLENR, 197}, + {145*OVERSAMPLENR, 196}, + {147*OVERSAMPLENR, 195}, + {150*OVERSAMPLENR, 194}, + {152*OVERSAMPLENR, 193}, + {154*OVERSAMPLENR, 192}, + {157*OVERSAMPLENR, 191}, + {159*OVERSAMPLENR, 190}, + {162*OVERSAMPLENR, 189}, + {164*OVERSAMPLENR, 188}, + {167*OVERSAMPLENR, 187}, + {170*OVERSAMPLENR, 186}, + {172*OVERSAMPLENR, 185}, + {175*OVERSAMPLENR, 184}, + {178*OVERSAMPLENR, 183}, + {181*OVERSAMPLENR, 182}, + {184*OVERSAMPLENR, 181}, + {187*OVERSAMPLENR, 180}, + {190*OVERSAMPLENR, 179}, + {193*OVERSAMPLENR, 178}, + {196*OVERSAMPLENR, 177}, + {199*OVERSAMPLENR, 176}, + {202*OVERSAMPLENR, 175}, + {205*OVERSAMPLENR, 174}, + {208*OVERSAMPLENR, 173}, + {212*OVERSAMPLENR, 172}, + {215*OVERSAMPLENR, 171}, + {219*OVERSAMPLENR, 170}, + {237*OVERSAMPLENR, 165}, + {256*OVERSAMPLENR, 160}, + {300*OVERSAMPLENR, 150}, + {351*OVERSAMPLENR, 140}, + {470*OVERSAMPLENR, 120}, + {504*OVERSAMPLENR, 115}, + {538*OVERSAMPLENR, 110}, + {552*OVERSAMPLENR, 108}, + {566*OVERSAMPLENR, 106}, + {580*OVERSAMPLENR, 104}, + {594*OVERSAMPLENR, 102}, + {608*OVERSAMPLENR, 100}, + {622*OVERSAMPLENR, 98}, + {636*OVERSAMPLENR, 96}, + {650*OVERSAMPLENR, 94}, + {664*OVERSAMPLENR, 92}, + {678*OVERSAMPLENR, 90}, + {712*OVERSAMPLENR, 85}, + {745*OVERSAMPLENR, 80}, + {758*OVERSAMPLENR, 78}, + {770*OVERSAMPLENR, 76}, + {783*OVERSAMPLENR, 74}, + {795*OVERSAMPLENR, 72}, + {806*OVERSAMPLENR, 70}, + {818*OVERSAMPLENR, 68}, + {829*OVERSAMPLENR, 66}, + {840*OVERSAMPLENR, 64}, + {850*OVERSAMPLENR, 62}, + {860*OVERSAMPLENR, 60}, + {870*OVERSAMPLENR, 58}, + {879*OVERSAMPLENR, 56}, + {888*OVERSAMPLENR, 54}, + {897*OVERSAMPLENR, 52}, + {905*OVERSAMPLENR, 50}, + {924*OVERSAMPLENR, 45}, + {940*OVERSAMPLENR, 40}, + {955*OVERSAMPLENR, 35}, + {967*OVERSAMPLENR, 30}, + {970*OVERSAMPLENR, 29}, + {972*OVERSAMPLENR, 28}, + {974*OVERSAMPLENR, 27}, + {976*OVERSAMPLENR, 26}, + {978*OVERSAMPLENR, 25}, + {980*OVERSAMPLENR, 24}, + {982*OVERSAMPLENR, 23}, + {984*OVERSAMPLENR, 22}, + {985*OVERSAMPLENR, 21}, + {987*OVERSAMPLENR, 20}, + {995*OVERSAMPLENR, 15}, + {1001*OVERSAMPLENR, 10}, + {1006*OVERSAMPLENR, 5}, + {1010*OVERSAMPLENR, 0}, +}; +#endif + +#if (THERMISTORHEATER_0 == 8) || (THERMISTORHEATER_1 == 8) || (THERMISTORHEATER_2 == 8) || (THERMISTORHEATER_3 == 8) || (THERMISTORBED == 8) +// 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +const short temptable_8[][2] PROGMEM = { + {1*OVERSAMPLENR, 704}, + {54*OVERSAMPLENR, 216}, + {107*OVERSAMPLENR, 175}, + {160*OVERSAMPLENR, 152}, + {213*OVERSAMPLENR, 137}, + {266*OVERSAMPLENR, 125}, + {319*OVERSAMPLENR, 115}, + {372*OVERSAMPLENR, 106}, + {425*OVERSAMPLENR, 99}, + {478*OVERSAMPLENR, 91}, + {531*OVERSAMPLENR, 85}, + {584*OVERSAMPLENR, 78}, + {637*OVERSAMPLENR, 71}, + {690*OVERSAMPLENR, 65}, + {743*OVERSAMPLENR, 58}, + {796*OVERSAMPLENR, 50}, + {849*OVERSAMPLENR, 42}, + {902*OVERSAMPLENR, 31}, + {955*OVERSAMPLENR, 17}, + {1008*OVERSAMPLENR, 0} +}; +#endif +#if (THERMISTORHEATER_0 == 9) || (THERMISTORHEATER_1 == 9) || (THERMISTORHEATER_2 == 9) || (THERMISTORHEATER_3 == 9) || (THERMISTORBED == 9) +// 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +const short temptable_9[][2] PROGMEM = { + {1*OVERSAMPLENR, 936}, + {36*OVERSAMPLENR, 300}, + {71*OVERSAMPLENR, 246}, + {106*OVERSAMPLENR, 218}, + {141*OVERSAMPLENR, 199}, + {176*OVERSAMPLENR, 185}, + {211*OVERSAMPLENR, 173}, + {246*OVERSAMPLENR, 163}, + {281*OVERSAMPLENR, 155}, + {316*OVERSAMPLENR, 147}, + {351*OVERSAMPLENR, 140}, + {386*OVERSAMPLENR, 134}, + {421*OVERSAMPLENR, 128}, + {456*OVERSAMPLENR, 122}, + {491*OVERSAMPLENR, 117}, + {526*OVERSAMPLENR, 112}, + {561*OVERSAMPLENR, 107}, + {596*OVERSAMPLENR, 102}, + {631*OVERSAMPLENR, 97}, + {666*OVERSAMPLENR, 92}, + {701*OVERSAMPLENR, 87}, + {736*OVERSAMPLENR, 81}, + {771*OVERSAMPLENR, 76}, + {806*OVERSAMPLENR, 70}, + {841*OVERSAMPLENR, 63}, + {876*OVERSAMPLENR, 56}, + {911*OVERSAMPLENR, 48}, + {946*OVERSAMPLENR, 38}, + {981*OVERSAMPLENR, 23}, + {1005*OVERSAMPLENR, 5}, + {1016*OVERSAMPLENR, 0} +}; +#endif +#if (THERMISTORHEATER_0 == 10) || (THERMISTORHEATER_1 == 10) || (THERMISTORHEATER_2 == 10) || (THERMISTORHEATER_3 == 10) || (THERMISTORBED == 10) +// 100k RS thermistor 198-961 (4.7k pullup) +const short temptable_10[][2] PROGMEM = { + {1*OVERSAMPLENR, 929}, + {36*OVERSAMPLENR, 299}, + {71*OVERSAMPLENR, 246}, + {106*OVERSAMPLENR, 217}, + {141*OVERSAMPLENR, 198}, + {176*OVERSAMPLENR, 184}, + {211*OVERSAMPLENR, 173}, + {246*OVERSAMPLENR, 163}, + {281*OVERSAMPLENR, 154}, + {316*OVERSAMPLENR, 147}, + {351*OVERSAMPLENR, 140}, + {386*OVERSAMPLENR, 134}, + {421*OVERSAMPLENR, 128}, + {456*OVERSAMPLENR, 122}, + {491*OVERSAMPLENR, 117}, + {526*OVERSAMPLENR, 112}, + {561*OVERSAMPLENR, 107}, + {596*OVERSAMPLENR, 102}, + {631*OVERSAMPLENR, 97}, + {666*OVERSAMPLENR, 91}, + {701*OVERSAMPLENR, 86}, + {736*OVERSAMPLENR, 81}, + {771*OVERSAMPLENR, 76}, + {806*OVERSAMPLENR, 70}, + {841*OVERSAMPLENR, 63}, + {876*OVERSAMPLENR, 56}, + {911*OVERSAMPLENR, 48}, + {946*OVERSAMPLENR, 38}, + {981*OVERSAMPLENR, 23}, + {1005*OVERSAMPLENR, 5}, + {1016*OVERSAMPLENR, 0} +}; +#endif + +#if (THERMISTORHEATER_0 == 11) || (THERMISTORHEATER_1 == 11) || (THERMISTORHEATER_2 == 11) || (THERMISTORHEATER_3 == 11) || (THERMISTORBED == 11) +// QU-BD silicone bed QWG-104F-3950 thermistor + +const short temptable_11[][2] PROGMEM = { + {1*OVERSAMPLENR, 938}, + {31*OVERSAMPLENR, 314}, + {41*OVERSAMPLENR, 290}, + {51*OVERSAMPLENR, 272}, + {61*OVERSAMPLENR, 258}, + {71*OVERSAMPLENR, 247}, + {81*OVERSAMPLENR, 237}, + {91*OVERSAMPLENR, 229}, + {101*OVERSAMPLENR, 221}, + {111*OVERSAMPLENR, 215}, + {121*OVERSAMPLENR, 209}, + {131*OVERSAMPLENR, 204}, + {141*OVERSAMPLENR, 199}, + {151*OVERSAMPLENR, 195}, + {161*OVERSAMPLENR, 190}, + {171*OVERSAMPLENR, 187}, + {181*OVERSAMPLENR, 183}, + {191*OVERSAMPLENR, 179}, + {201*OVERSAMPLENR, 176}, + {221*OVERSAMPLENR, 170}, + {241*OVERSAMPLENR, 165}, + {261*OVERSAMPLENR, 160}, + {281*OVERSAMPLENR, 155}, + {301*OVERSAMPLENR, 150}, + {331*OVERSAMPLENR, 144}, + {361*OVERSAMPLENR, 139}, + {391*OVERSAMPLENR, 133}, + {421*OVERSAMPLENR, 128}, + {451*OVERSAMPLENR, 123}, + {491*OVERSAMPLENR, 117}, + {531*OVERSAMPLENR, 111}, + {571*OVERSAMPLENR, 105}, + {611*OVERSAMPLENR, 100}, + {641*OVERSAMPLENR, 95}, + {681*OVERSAMPLENR, 90}, + {711*OVERSAMPLENR, 85}, + {751*OVERSAMPLENR, 79}, + {791*OVERSAMPLENR, 72}, + {811*OVERSAMPLENR, 69}, + {831*OVERSAMPLENR, 65}, + {871*OVERSAMPLENR, 57}, + {881*OVERSAMPLENR, 55}, + {901*OVERSAMPLENR, 51}, + {921*OVERSAMPLENR, 45}, + {941*OVERSAMPLENR, 39}, + {971*OVERSAMPLENR, 28}, + {981*OVERSAMPLENR, 23}, + {991*OVERSAMPLENR, 17}, + {1001*OVERSAMPLENR, 9}, + {1021*OVERSAMPLENR, -27} +}; +#endif + +#if (THERMISTORHEATER_0 == 13) || (THERMISTORHEATER_1 == 13) || (THERMISTORHEATER_2 == 13) || (THERMISTORHEATER_3 == 13) || (THERMISTORBED == 13) +// Hisens thermistor B25/50 =3950 +/-1% + +const short temptable_13[][2] PROGMEM = { + { 22.5*OVERSAMPLENR, 300 }, +{ 24.125*OVERSAMPLENR, 295 }, +{ 25.875*OVERSAMPLENR, 290 }, +{ 27.8125*OVERSAMPLENR, 285 }, +{ 29.9375*OVERSAMPLENR, 280 }, +{ 32.25*OVERSAMPLENR, 275 }, +{ 34.8125*OVERSAMPLENR, 270 }, +{ 37.625*OVERSAMPLENR, 265 }, +{ 40.6875*OVERSAMPLENR, 260 }, +{ 44.0625*OVERSAMPLENR, 255 }, +{ 47.75*OVERSAMPLENR, 250 }, +{ 51.8125*OVERSAMPLENR, 245 }, +{ 56.3125*OVERSAMPLENR, 240 }, +{ 61.25*OVERSAMPLENR, 235 }, +{ 66.75*OVERSAMPLENR, 230 }, +{ 72.8125*OVERSAMPLENR, 225 }, +{ 79.5*OVERSAMPLENR, 220 }, +{ 87*OVERSAMPLENR, 215 }, +{ 95.3125*OVERSAMPLENR, 210 }, +{ 104.1875*OVERSAMPLENR, 205 }, +{ 112.75*OVERSAMPLENR, 200 }, +{ 123.125*OVERSAMPLENR, 195 }, +{ 135.75*OVERSAMPLENR, 190 }, +{ 148.3125*OVERSAMPLENR, 185 }, +{ 163.8125*OVERSAMPLENR, 180 }, +{ 179*OVERSAMPLENR, 175 }, +{ 211.125*OVERSAMPLENR, 170 }, +{ 216.125*OVERSAMPLENR, 165 }, +{ 236.5625*OVERSAMPLENR, 160 }, +{ 258.5*OVERSAMPLENR, 155 }, +{ 279.875*OVERSAMPLENR, 150 }, +{ 305.375*OVERSAMPLENR, 145 }, +{ 333.25*OVERSAMPLENR, 140 }, +{ 362.5625*OVERSAMPLENR, 135 }, +{ 393.6875*OVERSAMPLENR, 130 }, +{ 425*OVERSAMPLENR, 125 }, +{ 460.625*OVERSAMPLENR, 120 }, +{ 495.1875*OVERSAMPLENR, 115 }, +{ 530.875*OVERSAMPLENR, 110 }, +{ 567.25*OVERSAMPLENR, 105 }, +{ 601.625*OVERSAMPLENR, 100 }, +{ 637.875*OVERSAMPLENR, 95 }, +{ 674.5625*OVERSAMPLENR, 90 }, +{ 710*OVERSAMPLENR, 85 }, +{ 744.125*OVERSAMPLENR, 80 }, +{ 775.9375*OVERSAMPLENR, 75 }, +{ 806.875*OVERSAMPLENR, 70 }, +{ 835.1875*OVERSAMPLENR, 65 }, +{ 861.125*OVERSAMPLENR, 60 }, +{ 884.375*OVERSAMPLENR, 55 }, +{ 904.5625*OVERSAMPLENR, 50 }, +{ 923.8125*OVERSAMPLENR, 45 }, +{ 940.375*OVERSAMPLENR, 40 }, +{ 954.625*OVERSAMPLENR, 35 }, +{ 966.875*OVERSAMPLENR, 30 }, +{ 977.0625*OVERSAMPLENR, 25 }, +{ 986*OVERSAMPLENR, 20 }, +{ 993.375*OVERSAMPLENR, 15 }, +{ 999.5*OVERSAMPLENR, 10 }, +{ 1004.5*OVERSAMPLENR, 5 }, +{ 1008.5*OVERSAMPLENR, 0 } + + }; +#endif + +#if (THERMISTORHEATER_0 == 20) || (THERMISTORHEATER_1 == 20) || (THERMISTORHEATER_2 == 20) || (THERMISTORBED == 20) // PT100 with INA826 amp on Ultimaker v2.0 electronics +/* The PT100 in the Ultimaker v2.0 electronics has a high sample value for a high temperature. +This does not match the normal thermistor behaviour so we need to set the following defines */ +#if (THERMISTORHEATER_0 == 20) +# define HEATER_0_RAW_HI_TEMP 16383 +# define HEATER_0_RAW_LO_TEMP 0 +#endif +#if (THERMISTORHEATER_1 == 20) +# define HEATER_1_RAW_HI_TEMP 16383 +# define HEATER_1_RAW_LO_TEMP 0 +#endif +#if (THERMISTORHEATER_2 == 20) +# define HEATER_2_RAW_HI_TEMP 16383 +# define HEATER_2_RAW_LO_TEMP 0 +#endif +#if (THERMISTORHEATER_3 == 20) +# define HEATER_3_RAW_HI_TEMP 16383 +# define HEATER_3_RAW_LO_TEMP 0 +#endif +#if (THERMISTORBED == 20) +# define HEATER_BED_RAW_HI_TEMP 16383 +# define HEATER_BED_RAW_LO_TEMP 0 +#endif +const short temptable_20[][2] PROGMEM = { +{ 0*OVERSAMPLENR , 0 }, +{ 227*OVERSAMPLENR , 1 }, +{ 236*OVERSAMPLENR , 10 }, +{ 245*OVERSAMPLENR , 20 }, +{ 253*OVERSAMPLENR , 30 }, +{ 262*OVERSAMPLENR , 40 }, +{ 270*OVERSAMPLENR , 50 }, +{ 279*OVERSAMPLENR , 60 }, +{ 287*OVERSAMPLENR , 70 }, +{ 295*OVERSAMPLENR , 80 }, +{ 304*OVERSAMPLENR , 90 }, +{ 312*OVERSAMPLENR , 100 }, +{ 320*OVERSAMPLENR , 110 }, +{ 329*OVERSAMPLENR , 120 }, +{ 337*OVERSAMPLENR , 130 }, +{ 345*OVERSAMPLENR , 140 }, +{ 353*OVERSAMPLENR , 150 }, +{ 361*OVERSAMPLENR , 160 }, +{ 369*OVERSAMPLENR , 170 }, +{ 377*OVERSAMPLENR , 180 }, +{ 385*OVERSAMPLENR , 190 }, +{ 393*OVERSAMPLENR , 200 }, +{ 401*OVERSAMPLENR , 210 }, +{ 409*OVERSAMPLENR , 220 }, +{ 417*OVERSAMPLENR , 230 }, +{ 424*OVERSAMPLENR , 240 }, +{ 432*OVERSAMPLENR , 250 }, +{ 440*OVERSAMPLENR , 260 }, +{ 447*OVERSAMPLENR , 270 }, +{ 455*OVERSAMPLENR , 280 }, +{ 463*OVERSAMPLENR , 290 }, +{ 470*OVERSAMPLENR , 300 }, +{ 478*OVERSAMPLENR , 310 }, +{ 485*OVERSAMPLENR , 320 }, +{ 493*OVERSAMPLENR , 330 }, +{ 500*OVERSAMPLENR , 340 }, +{ 507*OVERSAMPLENR , 350 }, +{ 515*OVERSAMPLENR , 360 }, +{ 522*OVERSAMPLENR , 370 }, +{ 529*OVERSAMPLENR , 380 }, +{ 537*OVERSAMPLENR , 390 }, +{ 544*OVERSAMPLENR , 400 }, +{ 614*OVERSAMPLENR , 500 }, +{ 681*OVERSAMPLENR , 600 }, +{ 744*OVERSAMPLENR , 700 }, +{ 805*OVERSAMPLENR , 800 }, +{ 862*OVERSAMPLENR , 900 }, +{ 917*OVERSAMPLENR , 1000 }, +{ 968*OVERSAMPLENR , 1100 } +}; +#endif + +#if (THERMISTORHEATER_0 == 51) || (THERMISTORHEATER_1 == 51) || (THERMISTORHEATER_2 == 51) || (THERMISTORHEATER_3 == 51) || (THERMISTORBED == 51) +// 100k EPCOS (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) +// Verified by linagee. +// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance +// Advantage: Twice the resolution and better linearity from 150C to 200C +const short temptable_51[][2] PROGMEM = { + {1*OVERSAMPLENR, 350}, + {190*OVERSAMPLENR, 250}, //top rating 250C + {203*OVERSAMPLENR, 245}, + {217*OVERSAMPLENR, 240}, + {232*OVERSAMPLENR, 235}, + {248*OVERSAMPLENR, 230}, + {265*OVERSAMPLENR, 225}, + {283*OVERSAMPLENR, 220}, + {302*OVERSAMPLENR, 215}, + {322*OVERSAMPLENR, 210}, + {344*OVERSAMPLENR, 205}, + {366*OVERSAMPLENR, 200}, + {390*OVERSAMPLENR, 195}, + {415*OVERSAMPLENR, 190}, + {440*OVERSAMPLENR, 185}, + {467*OVERSAMPLENR, 180}, + {494*OVERSAMPLENR, 175}, + {522*OVERSAMPLENR, 170}, + {551*OVERSAMPLENR, 165}, + {580*OVERSAMPLENR, 160}, + {609*OVERSAMPLENR, 155}, + {638*OVERSAMPLENR, 150}, + {666*OVERSAMPLENR, 145}, + {695*OVERSAMPLENR, 140}, + {722*OVERSAMPLENR, 135}, + {749*OVERSAMPLENR, 130}, + {775*OVERSAMPLENR, 125}, + {800*OVERSAMPLENR, 120}, + {823*OVERSAMPLENR, 115}, + {845*OVERSAMPLENR, 110}, + {865*OVERSAMPLENR, 105}, + {884*OVERSAMPLENR, 100}, + {901*OVERSAMPLENR, 95}, + {917*OVERSAMPLENR, 90}, + {932*OVERSAMPLENR, 85}, + {944*OVERSAMPLENR, 80}, + {956*OVERSAMPLENR, 75}, + {966*OVERSAMPLENR, 70}, + {975*OVERSAMPLENR, 65}, + {982*OVERSAMPLENR, 60}, + {989*OVERSAMPLENR, 55}, + {995*OVERSAMPLENR, 50}, + {1000*OVERSAMPLENR, 45}, + {1004*OVERSAMPLENR, 40}, + {1007*OVERSAMPLENR, 35}, + {1010*OVERSAMPLENR, 30}, + {1013*OVERSAMPLENR, 25}, + {1015*OVERSAMPLENR, 20}, + {1017*OVERSAMPLENR, 15}, + {1018*OVERSAMPLENR, 10}, + {1019*OVERSAMPLENR, 5}, + {1020*OVERSAMPLENR, 0}, + {1021*OVERSAMPLENR, -5} +}; +#endif + +#if (THERMISTORHEATER_0 == 52) || (THERMISTORHEATER_1 == 52) || (THERMISTORHEATER_2 == 52) || (THERMISTORHEATER_3 == 52) || (THERMISTORBED == 52) +// 200k ATC Semitec 204GT-2 (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) +// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf +// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance +// Advantage: More resolution and better linearity from 150C to 200C +const short temptable_52[][2] PROGMEM = { + {1*OVERSAMPLENR, 500}, + {125*OVERSAMPLENR, 300}, //top rating 300C + {142*OVERSAMPLENR, 290}, + {162*OVERSAMPLENR, 280}, + {185*OVERSAMPLENR, 270}, + {211*OVERSAMPLENR, 260}, + {240*OVERSAMPLENR, 250}, + {274*OVERSAMPLENR, 240}, + {312*OVERSAMPLENR, 230}, + {355*OVERSAMPLENR, 220}, + {401*OVERSAMPLENR, 210}, + {452*OVERSAMPLENR, 200}, + {506*OVERSAMPLENR, 190}, + {563*OVERSAMPLENR, 180}, + {620*OVERSAMPLENR, 170}, + {677*OVERSAMPLENR, 160}, + {732*OVERSAMPLENR, 150}, + {783*OVERSAMPLENR, 140}, + {830*OVERSAMPLENR, 130}, + {871*OVERSAMPLENR, 120}, + {906*OVERSAMPLENR, 110}, + {935*OVERSAMPLENR, 100}, + {958*OVERSAMPLENR, 90}, + {976*OVERSAMPLENR, 80}, + {990*OVERSAMPLENR, 70}, + {1000*OVERSAMPLENR, 60}, + {1008*OVERSAMPLENR, 50}, + {1013*OVERSAMPLENR, 40}, + {1017*OVERSAMPLENR, 30}, + {1019*OVERSAMPLENR, 20}, + {1021*OVERSAMPLENR, 10}, + {1022*OVERSAMPLENR, 0} +}; +#endif + +#if (THERMISTORHEATER_0 == 55) || (THERMISTORHEATER_1 == 55) || (THERMISTORHEATER_2 == 55) || (THERMISTORHEATER_3 == 55) || (THERMISTORBED == 55) +// 100k ATC Semitec 104GT-2 (Used on ParCan) (WITH 1kohm RESISTOR FOR PULLUP, R9 ON SANGUINOLOLU! NOT FOR 4.7kohm PULLUP! THIS IS NOT NORMAL!) +// Verified by linagee. Source: http://shop.arcol.hu/static/datasheets/thermistors.pdf +// Calculated using 1kohm pullup, voltage divider math, and manufacturer provided temp/resistance +// Advantage: More resolution and better linearity from 150C to 200C +const short temptable_55[][2] PROGMEM = { + {1*OVERSAMPLENR, 500}, + {76*OVERSAMPLENR, 300}, + {87*OVERSAMPLENR, 290}, + {100*OVERSAMPLENR, 280}, + {114*OVERSAMPLENR, 270}, + {131*OVERSAMPLENR, 260}, + {152*OVERSAMPLENR, 250}, + {175*OVERSAMPLENR, 240}, + {202*OVERSAMPLENR, 230}, + {234*OVERSAMPLENR, 220}, + {271*OVERSAMPLENR, 210}, + {312*OVERSAMPLENR, 200}, + {359*OVERSAMPLENR, 190}, + {411*OVERSAMPLENR, 180}, + {467*OVERSAMPLENR, 170}, + {527*OVERSAMPLENR, 160}, + {590*OVERSAMPLENR, 150}, + {652*OVERSAMPLENR, 140}, + {713*OVERSAMPLENR, 130}, + {770*OVERSAMPLENR, 120}, + {822*OVERSAMPLENR, 110}, + {867*OVERSAMPLENR, 100}, + {905*OVERSAMPLENR, 90}, + {936*OVERSAMPLENR, 80}, + {961*OVERSAMPLENR, 70}, + {979*OVERSAMPLENR, 60}, + {993*OVERSAMPLENR, 50}, + {1003*OVERSAMPLENR, 40}, + {1010*OVERSAMPLENR, 30}, + {1015*OVERSAMPLENR, 20}, + {1018*OVERSAMPLENR, 10}, + {1020*OVERSAMPLENR, 0} +}; +#endif + +#if (THERMISTORHEATER_0 == 60) || (THERMISTORHEATER_1 == 60) || (THERMISTORHEATER_2 == 60) || (THERMISTORHEATER_3 == 60) || (THERMISTORBED == 60) // Maker's Tool Works Kapton Bed Thermister +// ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=3950 +// r0: 100000 +// t0: 25 +// r1: 0 (parallel with rTherm) +// r2: 4700 (series with rTherm) +// beta: 3950 +// min adc: 1 at 0.0048828125 V +// max adc: 1023 at 4.9951171875 V +const short temptable_60[][2] PROGMEM = { + {51*OVERSAMPLENR, 272}, + {61*OVERSAMPLENR, 258}, + {71*OVERSAMPLENR, 247}, + {81*OVERSAMPLENR, 237}, + {91*OVERSAMPLENR, 229}, + {101*OVERSAMPLENR, 221}, + {131*OVERSAMPLENR, 204}, + {161*OVERSAMPLENR, 190}, + {191*OVERSAMPLENR, 179}, + {231*OVERSAMPLENR, 167}, + {271*OVERSAMPLENR, 157}, + {311*OVERSAMPLENR, 148}, + {351*OVERSAMPLENR, 140}, + {381*OVERSAMPLENR, 135}, + {411*OVERSAMPLENR, 130}, + {441*OVERSAMPLENR, 125}, + {451*OVERSAMPLENR, 123}, + {461*OVERSAMPLENR, 122}, + {471*OVERSAMPLENR, 120}, + {481*OVERSAMPLENR, 119}, + {491*OVERSAMPLENR, 117}, + {501*OVERSAMPLENR, 116}, + {511*OVERSAMPLENR, 114}, + {521*OVERSAMPLENR, 113}, + {531*OVERSAMPLENR, 111}, + {541*OVERSAMPLENR, 110}, + {551*OVERSAMPLENR, 108}, + {561*OVERSAMPLENR, 107}, + {571*OVERSAMPLENR, 105}, + {581*OVERSAMPLENR, 104}, + {591*OVERSAMPLENR, 102}, + {601*OVERSAMPLENR, 101}, + {611*OVERSAMPLENR, 100}, + {621*OVERSAMPLENR, 98}, + {631*OVERSAMPLENR, 97}, + {641*OVERSAMPLENR, 95}, + {651*OVERSAMPLENR, 94}, + {661*OVERSAMPLENR, 92}, + {671*OVERSAMPLENR, 91}, + {681*OVERSAMPLENR, 90}, + {691*OVERSAMPLENR, 88}, + {701*OVERSAMPLENR, 87}, + {711*OVERSAMPLENR, 85}, + {721*OVERSAMPLENR, 84}, + {731*OVERSAMPLENR, 82}, + {741*OVERSAMPLENR, 81}, + {751*OVERSAMPLENR, 79}, + {761*OVERSAMPLENR, 77}, + {771*OVERSAMPLENR, 76}, + {781*OVERSAMPLENR, 74}, + {791*OVERSAMPLENR, 72}, + {801*OVERSAMPLENR, 71}, + {811*OVERSAMPLENR, 69}, + {821*OVERSAMPLENR, 67}, + {831*OVERSAMPLENR, 65}, + {841*OVERSAMPLENR, 63}, + {851*OVERSAMPLENR, 62}, + {861*OVERSAMPLENR, 60}, + {871*OVERSAMPLENR, 57}, + {881*OVERSAMPLENR, 55}, + {891*OVERSAMPLENR, 53}, + {901*OVERSAMPLENR, 51}, + {911*OVERSAMPLENR, 48}, + {921*OVERSAMPLENR, 45}, + {931*OVERSAMPLENR, 42}, + {941*OVERSAMPLENR, 39}, + {951*OVERSAMPLENR, 36}, + {961*OVERSAMPLENR, 32}, + {981*OVERSAMPLENR, 23}, + {991*OVERSAMPLENR, 17}, + {1001*OVERSAMPLENR, 9}, + {1008*OVERSAMPLENR, 0}, +}; +#endif +#if (THERMISTORBED == 12) +//100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +const short temptable_12[][2] PROGMEM = { + {35*OVERSAMPLENR, 180}, //top rating 180C + {211*OVERSAMPLENR, 140}, + {233*OVERSAMPLENR, 135}, + {261*OVERSAMPLENR, 130}, + {290*OVERSAMPLENR, 125}, + {328*OVERSAMPLENR, 120}, + {362*OVERSAMPLENR, 115}, + {406*OVERSAMPLENR, 110}, + {446*OVERSAMPLENR, 105}, + {496*OVERSAMPLENR, 100}, + {539*OVERSAMPLENR, 95}, + {585*OVERSAMPLENR, 90}, + {629*OVERSAMPLENR, 85}, + {675*OVERSAMPLENR, 80}, + {718*OVERSAMPLENR, 75}, + {758*OVERSAMPLENR, 70}, + {793*OVERSAMPLENR, 65}, + {822*OVERSAMPLENR, 60}, + {841*OVERSAMPLENR, 55}, + {875*OVERSAMPLENR, 50}, + {899*OVERSAMPLENR, 45}, + {926*OVERSAMPLENR, 40}, + {946*OVERSAMPLENR, 35}, + {962*OVERSAMPLENR, 30}, + {977*OVERSAMPLENR, 25}, + {987*OVERSAMPLENR, 20}, + {995*OVERSAMPLENR, 15}, + {1001*OVERSAMPLENR, 10}, + {1010*OVERSAMPLENR, 0}, + {1023*OVERSAMPLENR, -40}, +}; +#endif + +// Pt1000 and Pt100 handling +// +// Rt=R0*(1+a*T+b*T*T) [for T>0] +// a=3.9083E-3, b=-5.775E-7 + +#define PtA 3.9083E-3 +#define PtB -5.775E-7 +#define PtRt(T,R0) ((R0)*(1.0+(PtA)*(T)+(PtB)*(T)*(T))) +#define PtAdVal(T,R0,Rup) (short)(1024/(Rup/PtRt(T,R0)+1)) +#define PtLine(T,R0,Rup) { PtAdVal(T,R0,Rup)*OVERSAMPLENR, T }, + +#if (THERMISTORHEATER_0 == 110) || (THERMISTORHEATER_1 == 110) || (THERMISTORHEATER_2 == 110) || (THERMISTORHEATER_3 == 110) || (THERMISTORBED == 110) // Pt100 with 1k0 pullup +const short temptable_110[][2] PROGMEM = { +// only few values are needed as the curve is very flat + PtLine(0,100,1000) + PtLine(50,100,1000) + PtLine(100,100,1000) + PtLine(150,100,1000) + PtLine(200,100,1000) + PtLine(250,100,1000) + PtLine(300,100,1000) +}; +#endif +#if (THERMISTORHEATER_0 == 147) || (THERMISTORHEATER_1 == 147) || (THERMISTORHEATER_2 == 147) || (THERMISTORHEATER_3 == 147) || (THERMISTORBED == 147) // Pt100 with 4k7 pullup +const short temptable_147[][2] PROGMEM = { +// only few values are needed as the curve is very flat + PtLine(0,100,4700) + PtLine(50,100,4700) + PtLine(100,100,4700) + PtLine(150,100,4700) + PtLine(200,100,4700) + PtLine(250,100,4700) + PtLine(300,100,4700) +}; +#endif +#if (THERMISTORHEATER_0 == 1010) || (THERMISTORHEATER_1 == 1010) || (THERMISTORHEATER_2 == 1010) || (THERMISTORHEATER_3 == 1010) || (THERMISTORBED == 1010) // Pt1000 with 1k0 pullup +const short temptable_1010[][2] PROGMEM = { + PtLine(0,1000,1000) + PtLine(25,1000,1000) + PtLine(50,1000,1000) + PtLine(75,1000,1000) + PtLine(100,1000,1000) + PtLine(125,1000,1000) + PtLine(150,1000,1000) + PtLine(175,1000,1000) + PtLine(200,1000,1000) + PtLine(225,1000,1000) + PtLine(250,1000,1000) + PtLine(275,1000,1000) + PtLine(300,1000,1000) +}; +#endif +#if (THERMISTORHEATER_0 == 1047) || (THERMISTORHEATER_1 == 1047) || (THERMISTORHEATER_2 == 1047) || (THERMISTORHEATER_3 == 1047) || (THERMISTORBED == 1047) // Pt1000 with 4k7 pullup +const short temptable_1047[][2] PROGMEM = { +// only few values are needed as the curve is very flat + PtLine(0,1000,4700) + PtLine(50,1000,4700) + PtLine(100,1000,4700) + PtLine(150,1000,4700) + PtLine(200,1000,4700) + PtLine(250,1000,4700) + PtLine(300,1000,4700) +}; +#endif + +#if (THERMISTORHEATER_0 == 999) || (THERMISTORHEATER_1 == 999) || (THERMISTORHEATER_2 == 999) || (THERMISTORHEATER_3 == 999) || (THERMISTORBED == 999) //User defined table + // Dummy Thermistor table.. It will ALWAYS read a fixed value. + #ifndef DUMMY_THERMISTOR_999_VALUE + #define DUMMY_THERMISTOR_999_VALUE 25 + #endif + const short temptable_999[][2] PROGMEM = { + {1*OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE}, + {1023*OVERSAMPLENR, DUMMY_THERMISTOR_999_VALUE} +}; +#endif + +#if (THERMISTORHEATER_0 == 998) || (THERMISTORHEATER_1 == 998) || (THERMISTORHEATER_2 == 998) || (THERMISTORHEATER_3 == 998) || (THERMISTORBED == 998) //User defined table + // Dummy Thermistor table.. It will ALWAYS read a fixed value. + #ifndef DUMMY_THERMISTOR_998_VALUE + #define DUMMY_THERMISTOR_998_VALUE 25 + #endif + const short temptable_998[][2] PROGMEM = { + {1*OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE}, + {1023*OVERSAMPLENR, DUMMY_THERMISTOR_998_VALUE} +}; +#endif + + +#define _TT_NAME(_N) temptable_ ## _N +#define TT_NAME(_N) _TT_NAME(_N) + +#ifdef THERMISTORHEATER_0 +# define HEATER_0_TEMPTABLE TT_NAME(THERMISTORHEATER_0) +# define HEATER_0_TEMPTABLE_LEN (sizeof(HEATER_0_TEMPTABLE)/sizeof(*HEATER_0_TEMPTABLE)) #else -#error No heater thermistor table specified +# ifdef HEATER_0_USES_THERMISTOR +# error No heater 0 thermistor table specified +# else // HEATER_0_USES_THERMISTOR +# define HEATER_0_TEMPTABLE NULL +# define HEATER_0_TEMPTABLE_LEN 0 +# endif // HEATER_0_USES_THERMISTOR #endif +//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature +#ifndef HEATER_0_RAW_HI_TEMP +# ifdef HEATER_0_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value +# define HEATER_0_RAW_HI_TEMP 0 +# define HEATER_0_RAW_LO_TEMP 16383 +# else //In case of an thermocouple the highest temperature results in the highest ADC value +# define HEATER_0_RAW_HI_TEMP 16383 +# define HEATER_0_RAW_LO_TEMP 0 +# endif +#endif + +#ifdef THERMISTORHEATER_1 +# define HEATER_1_TEMPTABLE TT_NAME(THERMISTORHEATER_1) +# define HEATER_1_TEMPTABLE_LEN (sizeof(HEATER_1_TEMPTABLE)/sizeof(*HEATER_1_TEMPTABLE)) +#else +# ifdef HEATER_1_USES_THERMISTOR +# error No heater 1 thermistor table specified +# else // HEATER_1_USES_THERMISTOR +# define HEATER_1_TEMPTABLE NULL +# define HEATER_1_TEMPTABLE_LEN 0 +# endif // HEATER_1_USES_THERMISTOR +#endif + +//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature +#ifndef HEATER_1_RAW_HI_TEMP +# ifdef HEATER_1_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value +# define HEATER_1_RAW_HI_TEMP 0 +# define HEATER_1_RAW_LO_TEMP 16383 +# else //In case of an thermocouple the highest temperature results in the highest ADC value +# define HEATER_1_RAW_HI_TEMP 16383 +# define HEATER_1_RAW_LO_TEMP 0 +# endif +#endif + +#ifdef THERMISTORHEATER_2 +# define HEATER_2_TEMPTABLE TT_NAME(THERMISTORHEATER_2) +# define HEATER_2_TEMPTABLE_LEN (sizeof(HEATER_2_TEMPTABLE)/sizeof(*HEATER_2_TEMPTABLE)) +#else +# ifdef HEATER_2_USES_THERMISTOR +# error No heater 2 thermistor table specified +# else // HEATER_2_USES_THERMISTOR +# define HEATER_2_TEMPTABLE NULL +# define HEATER_2_TEMPTABLE_LEN 0 +# endif // HEATER_2_USES_THERMISTOR +#endif + +//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature +#ifndef HEATER_2_RAW_HI_TEMP +# ifdef HEATER_2_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value +# define HEATER_2_RAW_HI_TEMP 0 +# define HEATER_2_RAW_LO_TEMP 16383 +# else //In case of an thermocouple the highest temperature results in the highest ADC value +# define HEATER_2_RAW_HI_TEMP 16383 +# define HEATER_2_RAW_LO_TEMP 0 +# endif +#endif + +#ifdef THERMISTORHEATER_3 +# define HEATER_3_TEMPTABLE TT_NAME(THERMISTORHEATER_3) +# define HEATER_3_TEMPTABLE_LEN (sizeof(HEATER_3_TEMPTABLE)/sizeof(*HEATER_3_TEMPTABLE)) +#else +# ifdef HEATER_3_USES_THERMISTOR +# error No heater 3 thermistor table specified +# else // HEATER_3_USES_THERMISTOR +# define HEATER_3_TEMPTABLE NULL +# define HEATER_3_TEMPTABLE_LEN 0 +# endif // HEATER_3_USES_THERMISTOR +#endif + +//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature +#ifndef HEATER_3_RAW_HI_TEMP +# ifdef HEATER_3_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value +# define HEATER_3_RAW_HI_TEMP 0 +# define HEATER_3_RAW_LO_TEMP 16383 +# else //In case of an thermocouple the highest temperature results in the highest ADC value +# define HEATER_3_RAW_HI_TEMP 16383 +# define HEATER_3_RAW_LO_TEMP 0 +# endif +#endif + +#ifdef THERMISTORBED +# define BEDTEMPTABLE TT_NAME(THERMISTORBED) +# define BEDTEMPTABLE_LEN (sizeof(BEDTEMPTABLE)/sizeof(*BEDTEMPTABLE)) +#else +# ifdef BED_USES_THERMISTOR +# error No bed thermistor table specified +# endif // BED_USES_THERMISTOR +#endif + +//Set the high and low raw values for the heater, this indicates which raw value is a high or low temperature +#ifndef HEATER_BED_RAW_HI_TEMP +# ifdef BED_USES_THERMISTOR //In case of a thermistor the highest temperature results in the lowest ADC value +# define HEATER_BED_RAW_HI_TEMP 0 +# define HEATER_BED_RAW_LO_TEMP 16383 +# else //In case of an thermocouple the highest temperature results in the highest ADC value +# define HEATER_BED_RAW_HI_TEMP 16383 +# define HEATER_BED_RAW_LO_TEMP 0 +# endif +#endif #endif //THERMISTORTABLES_H_ diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp new file mode 100644 index 000000000..2f83afe2d --- /dev/null +++ b/Marlin/ultralcd.cpp @@ -0,0 +1,1747 @@ +#include "temperature.h" +#include "ultralcd.h" +#ifdef ULTRA_LCD +#include "Marlin.h" +#include "language.h" +#include "cardreader.h" +#include "temperature.h" +#include "stepper.h" +#include "ConfigurationStore.h" + +int8_t encoderDiff; /* encoderDiff is updated from interrupt context and added to encoderPosition every LCD update */ + +bool encoderRateMultiplierEnabled; +int32_t lastEncoderMovementMillis; + +/* Configuration settings */ +int plaPreheatHotendTemp; +int plaPreheatHPBTemp; +int plaPreheatFanSpeed; + +int absPreheatHotendTemp; +int absPreheatHPBTemp; +int absPreheatFanSpeed; + +#ifdef FILAMENT_LCD_DISPLAY + unsigned long message_millis = 0; +#endif + +#ifdef ULTIPANEL + static float manual_feedrate[] = MANUAL_FEEDRATE; +#endif // ULTIPANEL + +/* !Configuration settings */ + +//Function pointer to menu functions. +typedef void (*menuFunc_t)(); + +uint8_t lcd_status_message_level; +char lcd_status_message[LCD_WIDTH+1] = WELCOME_MSG; + +#ifdef DOGLCD +#include "dogm_lcd_implementation.h" +#else +#include "ultralcd_implementation_hitachi_HD44780.h" +#endif + +/* Different menus */ +static void lcd_status_screen(); +#ifdef ULTIPANEL +extern bool powersupply; +static void lcd_main_menu(); +static void lcd_tune_menu(); +static void lcd_prepare_menu(); +static void lcd_move_menu(); +static void lcd_control_menu(); +static void lcd_control_temperature_menu(); +static void lcd_control_temperature_preheat_pla_settings_menu(); +static void lcd_control_temperature_preheat_abs_settings_menu(); +static void lcd_control_motion_menu(); +static void lcd_control_volumetric_menu(); +#ifdef DOGLCD +static void lcd_set_contrast(); +#endif +static void lcd_control_retract_menu(); +static void lcd_sdcard_menu(); + +#ifdef DELTA_CALIBRATION_MENU +static void lcd_delta_calibrate_menu(); +#endif // DELTA_CALIBRATION_MENU + +static void lcd_quick_feedback();//Cause an LCD refresh, and give the user visual or audible feedback that something has happened + +/* Different types of actions that can be used in menu items. */ +static void menu_action_back(menuFunc_t data); +static void menu_action_submenu(menuFunc_t data); +static void menu_action_gcode(const char* pgcode); +static void menu_action_function(menuFunc_t data); +static void menu_action_sdfile(const char* filename, char* longFilename); +static void menu_action_sddirectory(const char* filename, char* longFilename); +static void menu_action_setting_edit_bool(const char* pstr, bool* ptr); +static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); +static void menu_action_setting_edit_float3(const char* pstr, float* ptr, float minValue, float maxValue); +static void menu_action_setting_edit_float32(const char* pstr, float* ptr, float minValue, float maxValue); +static void menu_action_setting_edit_float43(const char* pstr, float* ptr, float minValue, float maxValue); +static void menu_action_setting_edit_float5(const char* pstr, float* ptr, float minValue, float maxValue); +static void menu_action_setting_edit_float51(const char* pstr, float* ptr, float minValue, float maxValue); +static void menu_action_setting_edit_float52(const char* pstr, float* ptr, float minValue, float maxValue); +static void menu_action_setting_edit_long5(const char* pstr, unsigned long* ptr, unsigned long minValue, unsigned long maxValue); +static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_int3(const char* pstr, int* ptr, int minValue, int maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_float3(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_float32(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_float43(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_float5(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_float51(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_float52(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned long* ptr, unsigned long minValue, unsigned long maxValue, menuFunc_t callbackFunc); + +#define ENCODER_FEEDRATE_DEADZONE 10 + +#if !defined(LCD_I2C_VIKI) + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 5 + #endif + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 1 + #endif +#else + #ifndef ENCODER_STEPS_PER_MENU_ITEM + #define ENCODER_STEPS_PER_MENU_ITEM 2 // VIKI LCD rotary encoder uses a different number of steps per rotation + #endif + #ifndef ENCODER_PULSES_PER_STEP + #define ENCODER_PULSES_PER_STEP 1 + #endif +#endif + + +/* Helper macros for menus */ +#define START_MENU() do { \ + encoderRateMultiplierEnabled = false; \ + if (encoderPosition > 0x8000) encoderPosition = 0; \ + if (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM < currentMenuViewOffset) currentMenuViewOffset = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM;\ + uint8_t _lineNr = currentMenuViewOffset, _menuItemNr; \ + bool wasClicked = LCD_CLICKED;\ + for(uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \ + _menuItemNr = 0; +#define MENU_ITEM(type, label, args...) do { \ + if (_menuItemNr == _lineNr) { \ + if (lcdDrawUpdate) { \ + const char* _label_pstr = PSTR(label); \ + if ((encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) == _menuItemNr) { \ + lcd_implementation_drawmenu_ ## type ## _selected (_drawLineNr, _label_pstr , ## args ); \ + }else{\ + lcd_implementation_drawmenu_ ## type (_drawLineNr, _label_pstr , ## args ); \ + }\ + }\ + if (wasClicked && (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) == _menuItemNr) {\ + lcd_quick_feedback(); \ + menu_action_ ## type ( args ); \ + return;\ + }\ + }\ + _menuItemNr++;\ +} while(0) +#ifdef ENCODER_RATE_MULTIPLIER + #define MENU_MULTIPLIER_ITEM(type, label, args...) do { \ + if (_menuItemNr == _lineNr) { \ + if (lcdDrawUpdate) { \ + const char* _label_pstr = PSTR(label); \ + if ((encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) == _menuItemNr) { \ + lcd_implementation_drawmenu_ ## type ## _selected (_drawLineNr, _label_pstr , ## args ); \ + } \ + else { \ + lcd_implementation_drawmenu_ ## type (_drawLineNr, _label_pstr , ## args ); \ + } \ + } \ + if (wasClicked && (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) == _menuItemNr) { \ + lcd_quick_feedback(); \ + encoderRateMultiplierEnabled = true; \ + lastEncoderMovementMillis = 0; \ + menu_action_ ## type ( args ); \ + return; \ + } \ + } \ + _menuItemNr++; \ + } while(0) +#endif //ENCODER_RATE_MULTIPLIER +#define MENU_ITEM_DUMMY() do { _menuItemNr++; } while(0) +#define MENU_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label) , ## args ) +#define MENU_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label) , ## args ) +#ifdef ENCODER_RATE_MULTIPLIER + #define MENU_MULTIPLIER_ITEM_EDIT(type, label, args...) MENU_MULTIPLIER_ITEM(setting_edit_ ## type, label, PSTR(label) , ## args ) + #define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_MULTIPLIER_ITEM(setting_edit_callback_ ## type, label, PSTR(label) , ## args ) +#else //!ENCODER_RATE_MULTIPLIER + #define MENU_MULTIPLIER_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label) , ## args ) + #define MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(type, label, args...) MENU_ITEM(setting_edit_callback_ ## type, label, PSTR(label) , ## args ) +#endif //!ENCODER_RATE_MULTIPLIER +#define END_MENU() \ + if (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM >= _menuItemNr) encoderPosition = _menuItemNr * ENCODER_STEPS_PER_MENU_ITEM - 1; \ + if ((uint8_t)(encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) >= currentMenuViewOffset + LCD_HEIGHT) { currentMenuViewOffset = (encoderPosition / ENCODER_STEPS_PER_MENU_ITEM) - LCD_HEIGHT + 1; lcdDrawUpdate = 1; _lineNr = currentMenuViewOffset - 1; _drawLineNr = -1; } \ + } } while(0) + +/** Used variables to keep track of the menu */ +#ifndef REPRAPWORLD_KEYPAD +volatile uint8_t buttons;//Contains the bits of the currently pressed buttons. +#else +volatile uint8_t buttons_reprapworld_keypad; // to store the reprapworld_keypad shift register values +#endif +#ifdef LCD_HAS_SLOW_BUTTONS +volatile uint8_t slow_buttons;//Contains the bits of the currently pressed buttons. +#endif +uint8_t currentMenuViewOffset; /* scroll offset in the current menu */ +uint32_t blocking_enc; +uint8_t lastEncoderBits; +uint32_t encoderPosition; +#if (SDCARDDETECT > 0) +bool lcd_oldcardstatus; +#endif +#endif //ULTIPANEL + +menuFunc_t currentMenu = lcd_status_screen; /* function pointer to the currently active menu */ +uint32_t lcd_next_update_millis; +uint8_t lcd_status_update_delay; +bool ignore_click = false; +bool wait_for_unclick; +uint8_t lcdDrawUpdate = 2; /* Set to none-zero when the LCD needs to draw, decreased after every draw. Set to 2 in LCD routines so the LCD gets at least 1 full redraw (first redraw is partial) */ + +//prevMenu and prevEncoderPosition are used to store the previous menu location when editing settings. +menuFunc_t prevMenu = NULL; +uint16_t prevEncoderPosition; +//Variables used when editing values. +const char* editLabel; +void* editValue; +int32_t minEditValue, maxEditValue; +menuFunc_t callbackFunc; + +// place-holders for Ki and Kd edits +float raw_Ki, raw_Kd; + +static void lcd_goto_menu(menuFunc_t menu, const uint32_t encoder=0, const bool feedback=true) { + if (currentMenu != menu) { + currentMenu = menu; + encoderPosition = encoder; + if (feedback) lcd_quick_feedback(); + + // For LCD_PROGRESS_BAR re-initialize the custom characters + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD) + lcd_set_custom_characters(menu == lcd_status_screen); + #endif + } +} + +/* Main status screen. It's up to the implementation specific part to show what is needed. As this is very display dependent */ +static void lcd_status_screen() +{ + encoderRateMultiplierEnabled = false; + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD) + uint16_t mil = millis(); + #ifndef PROGRESS_MSG_ONCE + if (mil > progressBarTick + PROGRESS_BAR_MSG_TIME + PROGRESS_BAR_BAR_TIME) { + progressBarTick = mil; + } + #endif + #if PROGRESS_MSG_EXPIRE > 0 + // keep the message alive if paused, count down otherwise + if (messageTick > 0) { + if (card.isFileOpen()) { + if (IS_SD_PRINTING) { + if ((mil-messageTick) >= PROGRESS_MSG_EXPIRE) { + lcd_status_message[0] = '\0'; + messageTick = 0; + } + } + else { + messageTick += LCD_UPDATE_INTERVAL; + } + } + else { + messageTick = 0; + } + } + #endif + #endif //LCD_PROGRESS_BAR + + if (lcd_status_update_delay) + lcd_status_update_delay--; + else + lcdDrawUpdate = 1; + + if (lcdDrawUpdate) { + lcd_implementation_status_screen(); + lcd_status_update_delay = 10; /* redraw the main screen every second. This is easier then trying keep track of all things that change on the screen */ + } + +#ifdef ULTIPANEL + + bool current_click = LCD_CLICKED; + + if (ignore_click) { + if (wait_for_unclick) { + if (!current_click) { + ignore_click = wait_for_unclick = false; + } + else { + current_click = false; + } + } + else if (current_click) { + lcd_quick_feedback(); + wait_for_unclick = true; + current_click = false; + } + } + + if (current_click) + { + lcd_goto_menu(lcd_main_menu); + lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD) + currentMenu == lcd_status_screen + #endif + ); + #ifdef FILAMENT_LCD_DISPLAY + message_millis = millis(); // get status message to show up for a while + #endif + } + +#ifdef ULTIPANEL_FEEDMULTIPLY + // Dead zone at 100% feedrate + if ((feedmultiply < 100 && (feedmultiply + int(encoderPosition)) > 100) || + (feedmultiply > 100 && (feedmultiply + int(encoderPosition)) < 100)) + { + encoderPosition = 0; + feedmultiply = 100; + } + + if (feedmultiply == 100 && int(encoderPosition) > ENCODER_FEEDRATE_DEADZONE) + { + feedmultiply += int(encoderPosition) - ENCODER_FEEDRATE_DEADZONE; + encoderPosition = 0; + } + else if (feedmultiply == 100 && int(encoderPosition) < -ENCODER_FEEDRATE_DEADZONE) + { + feedmultiply += int(encoderPosition) + ENCODER_FEEDRATE_DEADZONE; + encoderPosition = 0; + } + else if (feedmultiply != 100) + { + feedmultiply += int(encoderPosition); + encoderPosition = 0; + } +#endif //ULTIPANEL_FEEDMULTIPLY + + if (feedmultiply < 10) + feedmultiply = 10; + else if (feedmultiply > 999) + feedmultiply = 999; +#endif //ULTIPANEL +} + +#ifdef ULTIPANEL + +static void lcd_return_to_status() { lcd_goto_menu(lcd_status_screen, 0, false); } + +static void lcd_sdcard_pause() { card.pauseSDPrint(); } + +static void lcd_sdcard_resume() { card.startFileprint(); } + +static void lcd_sdcard_stop() { + card.sdprinting = false; + card.closefile(); + quickStop(); + if (SD_FINISHED_STEPPERRELEASE) { + enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND)); + } + autotempShutdown(); + + cancel_heatup = true; + + lcd_setstatus(MSG_PRINT_ABORTED); +} + +/* Menu implementation */ +static void lcd_main_menu() { + START_MENU(); + MENU_ITEM(back, MSG_WATCH, lcd_status_screen); + if (movesplanned() || IS_SD_PRINTING) { + MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu); + } + else { + MENU_ITEM(submenu, MSG_PREPARE, lcd_prepare_menu); + #ifdef DELTA_CALIBRATION_MENU + MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); + #endif + } + MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu); + + #ifdef SDSUPPORT + if (card.cardOK) { + if (card.isFileOpen()) { + if (card.sdprinting) + MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause); + else + MENU_ITEM(function, MSG_RESUME_PRINT, lcd_sdcard_resume); + MENU_ITEM(function, MSG_STOP_PRINT, lcd_sdcard_stop); + } + else { + MENU_ITEM(submenu, MSG_CARD_MENU, lcd_sdcard_menu); + #if SDCARDDETECT < 1 + MENU_ITEM(gcode, MSG_CNG_SDCARD, PSTR("M21")); // SD-card changed by user + #endif + } + } + else { + MENU_ITEM(submenu, MSG_NO_CARD, lcd_sdcard_menu); + #if SDCARDDETECT < 1 + MENU_ITEM(gcode, MSG_INIT_SDCARD, PSTR("M21")); // Manually initialize the SD-card via user interface + #endif + } + #endif //SDSUPPORT + + END_MENU(); +} + +#ifdef SDSUPPORT + static void lcd_autostart_sd() { + card.autostart_index = 0; + card.setroot(); + card.checkautostart(true); + } +#endif + +void lcd_set_home_offsets() { + for(int8_t i=0; i < NUM_AXIS; i++) { + if (i != E_AXIS) { + add_homing[i] -= current_position[i]; + current_position[i] = 0.0; + } + } + plan_set_position(0.0, 0.0, 0.0, current_position[E_AXIS]); + + // Audio feedback + enquecommands_P(PSTR("M300 S659 P200\nM300 S698 P200")); + lcd_return_to_status(); +} + + +#ifdef BABYSTEPPING + + static void _lcd_babystep(int axis, const char *msg) { + if (encoderPosition != 0) { + babystepsTodo[axis] += (int)encoderPosition; + encoderPosition = 0; + lcdDrawUpdate = 1; + } + if (lcdDrawUpdate) lcd_implementation_drawedit(msg, ""); + if (LCD_CLICKED) lcd_goto_menu(lcd_tune_menu); + } + static void lcd_babystep_x() { _lcd_babystep(X_AXIS, PSTR(MSG_BABYSTEPPING_X)); } + static void lcd_babystep_y() { _lcd_babystep(Y_AXIS, PSTR(MSG_BABYSTEPPING_Y)); } + static void lcd_babystep_z() { _lcd_babystep(Z_AXIS, PSTR(MSG_BABYSTEPPING_Z)); } + +#endif //BABYSTEPPING + +static void lcd_tune_menu() { + START_MENU(); + MENU_ITEM(back, MSG_MAIN, lcd_main_menu); + MENU_ITEM_EDIT(int3, MSG_SPEED, &feedmultiply, 10, 999); + #if TEMP_SENSOR_0 != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15); + #endif + #if TEMP_SENSOR_1 != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N2, &target_temperature[1], 0, HEATER_1_MAXTEMP - 15); + #endif + #if TEMP_SENSOR_2 != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N3, &target_temperature[2], 0, HEATER_2_MAXTEMP - 15); + #endif + #if TEMP_SENSOR_3 != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N4, &target_temperature[3], 0, HEATER_3_MAXTEMP - 15); + #endif + #if TEMP_SENSOR_BED != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15); + #endif + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255); + MENU_ITEM_EDIT(int3, MSG_FLOW, &extrudemultiply, 10, 999); + MENU_ITEM_EDIT(int3, MSG_FLOW MSG_F0, &extruder_multiply[0], 10, 999); + #if TEMP_SENSOR_1 != 0 + MENU_ITEM_EDIT(int3, MSG_FLOW MSG_F1, &extruder_multiply[1], 10, 999); + #endif + #if TEMP_SENSOR_2 != 0 + MENU_ITEM_EDIT(int3, MSG_FLOW MSG_F2, &extruder_multiply[2], 10, 999); + #endif + #if TEMP_SENSOR_3 != 0 + MENU_ITEM_EDIT(int3, MSG_FLOW MSG_F3, &extruder_multiply[3], 10, 999); + #endif + + #ifdef BABYSTEPPING + #ifdef BABYSTEP_XY + MENU_ITEM(submenu, MSG_BABYSTEP_X, lcd_babystep_x); + MENU_ITEM(submenu, MSG_BABYSTEP_Y, lcd_babystep_y); + #endif //BABYSTEP_XY + MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z); + #endif + #ifdef FILAMENTCHANGEENABLE + MENU_ITEM(gcode, MSG_FILAMENTCHANGE, PSTR("M600")); + #endif + END_MENU(); +} + +void _lcd_preheat(int endnum, const float temph, const float tempb, const int fan) { + if (temph > 0) setTargetHotend(temph, endnum); + setTargetBed(tempb); + fanSpeed = fan; + lcd_return_to_status(); + setWatch(); // heater sanity check timer +} +void lcd_preheat_pla0() { _lcd_preheat(0, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); } +void lcd_preheat_abs0() { _lcd_preheat(0, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); } + +#if TEMP_SENSOR_1 != 0 //2nd extruder preheat + void lcd_preheat_pla1() { _lcd_preheat(1, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); } + void lcd_preheat_abs1() { _lcd_preheat(1, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); } +#endif //2nd extruder preheat + +#if TEMP_SENSOR_2 != 0 //3 extruder preheat + void lcd_preheat_pla2() { _lcd_preheat(2, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); } + void lcd_preheat_abs2() { _lcd_preheat(2, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); } +#endif //3 extruder preheat + +#if TEMP_SENSOR_3 != 0 //4 extruder preheat + void lcd_preheat_pla3() { _lcd_preheat(3, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); } + void lcd_preheat_abs3() { _lcd_preheat(3, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); } +#endif //4 extruder preheat + +#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //more than one extruder present + void lcd_preheat_pla0123() { + setTargetHotend0(plaPreheatHotendTemp); + setTargetHotend1(plaPreheatHotendTemp); + setTargetHotend2(plaPreheatHotendTemp); + _lcd_preheat(3, plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed); + } + void lcd_preheat_abs0123() { + setTargetHotend0(absPreheatHotendTemp); + setTargetHotend1(absPreheatHotendTemp); + setTargetHotend2(absPreheatHotendTemp); + _lcd_preheat(3, absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed); + } +#endif //more than one extruder present + +void lcd_preheat_pla_bedonly() { _lcd_preheat(0, 0, plaPreheatHPBTemp, plaPreheatFanSpeed); } +void lcd_preheat_abs_bedonly() { _lcd_preheat(0, 0, absPreheatHPBTemp, absPreheatFanSpeed); } + +static void lcd_preheat_pla_menu() { + START_MENU(); + MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu); + MENU_ITEM(function, MSG_PREHEAT_PLA_N MSG_H1, lcd_preheat_pla0); + #if TEMP_SENSOR_1 != 0 //2 extruder preheat + MENU_ITEM(function, MSG_PREHEAT_PLA_N MSG_H2, lcd_preheat_pla1); + #endif //2 extruder preheat + #if TEMP_SENSOR_2 != 0 //3 extruder preheat + MENU_ITEM(function, MSG_PREHEAT_PLA_N MSG_H3, lcd_preheat_pla2); + #endif //3 extruder preheat + #if TEMP_SENSOR_3 != 0 //4 extruder preheat + MENU_ITEM(function, MSG_PREHEAT_PLA_N MSG_H4, lcd_preheat_pla3); + #endif //4 extruder preheat + #if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat + MENU_ITEM(function, MSG_PREHEAT_PLA_ALL, lcd_preheat_pla0123); + #endif //all extruder preheat + #if TEMP_SENSOR_BED != 0 + MENU_ITEM(function, MSG_PREHEAT_PLA_BEDONLY, lcd_preheat_pla_bedonly); + #endif + END_MENU(); +} + +static void lcd_preheat_abs_menu() { + START_MENU(); + MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu); + MENU_ITEM(function, MSG_PREHEAT_ABS_N MSG_H1, lcd_preheat_abs0); + #if TEMP_SENSOR_1 != 0 //2 extruder preheat + MENU_ITEM(function, MSG_PREHEAT_ABS_N MSG_H2, lcd_preheat_abs1); + #endif //2 extruder preheat + #if TEMP_SENSOR_2 != 0 //3 extruder preheat + MENU_ITEM(function, MSG_PREHEAT_ABS_N MSG_H3, lcd_preheat_abs2); + #endif //3 extruder preheat + #if TEMP_SENSOR_3 != 0 //4 extruder preheat + MENU_ITEM(function, MSG_PREHEAT_ABS_N MSG_H4, lcd_preheat_abs3); + #endif //4 extruder preheat + #if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 //all extruder preheat + MENU_ITEM(function, MSG_PREHEAT_ABS_ALL, lcd_preheat_abs0123); + #endif //all extruder preheat + #if TEMP_SENSOR_BED != 0 + MENU_ITEM(function, MSG_PREHEAT_ABS_BEDONLY, lcd_preheat_abs_bedonly); + #endif + END_MENU(); +} + +void lcd_cooldown() { + setTargetHotend0(0); + setTargetHotend1(0); + setTargetHotend2(0); + setTargetHotend3(0); + setTargetBed(0); + fanSpeed = 0; + lcd_return_to_status(); +} + +static void lcd_prepare_menu() { + START_MENU(); + MENU_ITEM(back, MSG_MAIN, lcd_main_menu); + #ifdef SDSUPPORT + #ifdef MENU_ADDAUTOSTART + MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); + #endif + #endif + MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); + MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); + MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets); + //MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0")); + #if TEMP_SENSOR_0 != 0 + #if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_BED != 0 + MENU_ITEM(submenu, MSG_PREHEAT_PLA, lcd_preheat_pla_menu); + MENU_ITEM(submenu, MSG_PREHEAT_ABS, lcd_preheat_abs_menu); + #else + MENU_ITEM(function, MSG_PREHEAT_PLA, lcd_preheat_pla0); + MENU_ITEM(function, MSG_PREHEAT_ABS, lcd_preheat_abs0); + #endif + #endif + MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown); + #if defined(POWER_SUPPLY) && POWER_SUPPLY > 0 && defined(PS_ON_PIN) && PS_ON_PIN > -1 + if (powersupply) { + MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81")); + } + else { + MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80")); + } + #endif + MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu); + + END_MENU(); +} + +#ifdef DELTA_CALIBRATION_MENU +static void lcd_delta_calibrate_menu() +{ + START_MENU(); + MENU_ITEM(back, MSG_MAIN, lcd_main_menu); + MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); + MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_X, PSTR("G0 F8000 X-77.94 Y-45 Z0")); + MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_Y, PSTR("G0 F8000 X77.94 Y-45 Z0")); + MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_Z, PSTR("G0 F8000 X0 Y90 Z0")); + MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_CENTER, PSTR("G0 F8000 X0 Y0 Z0")); + END_MENU(); +} +#endif // DELTA_CALIBRATION_MENU + +float move_menu_scale; +static void lcd_move_menu_axis(); + +static void _lcd_move(const char *name, int axis, int min, int max) { + if (encoderPosition != 0) { + refresh_cmd_timeout(); + current_position[axis] += float((int)encoderPosition) * move_menu_scale; + if (min_software_endstops && current_position[axis] < min) current_position[axis] = min; + if (max_software_endstops && current_position[axis] > max) current_position[axis] = max; + encoderPosition = 0; + #ifdef DELTA + calculate_delta(current_position); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis]/60, active_extruder); + #else + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis]/60, active_extruder); + #endif + lcdDrawUpdate = 1; + } + if (lcdDrawUpdate) lcd_implementation_drawedit(name, ftostr31(current_position[axis])); + if (LCD_CLICKED) lcd_goto_menu(lcd_move_menu_axis); +} +static void lcd_move_x() { _lcd_move(PSTR("X"), X_AXIS, X_MIN_POS, X_MAX_POS); } +static void lcd_move_y() { _lcd_move(PSTR("Y"), Y_AXIS, Y_MIN_POS, Y_MAX_POS); } +static void lcd_move_z() { _lcd_move(PSTR("Z"), Z_AXIS, Z_MIN_POS, Z_MAX_POS); } + +static void lcd_move_e() { + if (encoderPosition != 0) { + current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale; + encoderPosition = 0; + #ifdef DELTA + calculate_delta(current_position); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], manual_feedrate[E_AXIS]/60, active_extruder); + #else + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[E_AXIS]/60, active_extruder); + #endif + lcdDrawUpdate = 1; + } + if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("Extruder"), ftostr31(current_position[E_AXIS])); + if (LCD_CLICKED) lcd_goto_menu(lcd_move_menu_axis); +} + +static void lcd_move_menu_axis() { + START_MENU(); + MENU_ITEM(back, MSG_MOVE_AXIS, lcd_move_menu); + MENU_ITEM(submenu, MSG_MOVE_X, lcd_move_x); + MENU_ITEM(submenu, MSG_MOVE_Y, lcd_move_y); + if (move_menu_scale < 10.0) { + MENU_ITEM(submenu, MSG_MOVE_Z, lcd_move_z); + MENU_ITEM(submenu, MSG_MOVE_E, lcd_move_e); + } + END_MENU(); +} + +static void lcd_move_menu_10mm() { + move_menu_scale = 10.0; + lcd_move_menu_axis(); +} +static void lcd_move_menu_1mm() { + move_menu_scale = 1.0; + lcd_move_menu_axis(); +} +static void lcd_move_menu_01mm() { + move_menu_scale = 0.1; + lcd_move_menu_axis(); +} + +static void lcd_move_menu() { + START_MENU(); + MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu); + MENU_ITEM(submenu, MSG_MOVE_10MM, lcd_move_menu_10mm); + MENU_ITEM(submenu, MSG_MOVE_1MM, lcd_move_menu_1mm); + MENU_ITEM(submenu, MSG_MOVE_01MM, lcd_move_menu_01mm); + //TODO:X,Y,Z,E + END_MENU(); +} + +static void lcd_control_menu() { + START_MENU(); + MENU_ITEM(back, MSG_MAIN, lcd_main_menu); + MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); + MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu); + MENU_ITEM(submenu, MSG_VOLUMETRIC, lcd_control_volumetric_menu); + + #ifdef DOGLCD + //MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63); + MENU_ITEM(submenu, MSG_CONTRAST, lcd_set_contrast); + #endif + #ifdef FWRETRACT + MENU_ITEM(submenu, MSG_RETRACT, lcd_control_retract_menu); + #endif + #ifdef EEPROM_SETTINGS + MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings); + MENU_ITEM(function, MSG_LOAD_EPROM, Config_RetrieveSettings); + #endif + MENU_ITEM(function, MSG_RESTORE_FAILSAFE, Config_ResetDefault); + END_MENU(); +} + +#ifdef PIDTEMP + + // Helpers for editing PID Ki & Kd values + // grab the PID value out of the temp variable; scale it; then update the PID driver + void copy_and_scalePID_i(int e) { + PID_PARAM(Ki, e) = scalePID_i(raw_Ki); + updatePID(); + } + void copy_and_scalePID_d(int e) { + PID_PARAM(Kd, e) = scalePID_d(raw_Kd); + updatePID(); + } + void copy_and_scalePID_i_E1() { copy_and_scalePID_i(0); } + void copy_and_scalePID_d_E1() { copy_and_scalePID_d(0); } + #ifdef PID_PARAMS_PER_EXTRUDER + #if EXTRUDERS > 1 + void copy_and_scalePID_i_E2() { copy_and_scalePID_i(1); } + void copy_and_scalePID_d_E2() { copy_and_scalePID_d(1); } + #if EXTRUDERS > 2 + void copy_and_scalePID_i_E3() { copy_and_scalePID_i(2); } + void copy_and_scalePID_d_E3() { copy_and_scalePID_d(2); } + #if EXTRUDERS > 3 + void copy_and_scalePID_i_E4() { copy_and_scalePID_i(3); } + void copy_and_scalePID_d_E4() { copy_and_scalePID_d(3); } + #endif //EXTRUDERS > 3 + #endif //EXTRUDERS > 2 + #endif //EXTRUDERS > 1 + #endif //PID_PARAMS_PER_EXTRUDER + +#endif //PIDTEMP + +static void lcd_control_temperature_menu() { + START_MENU(); + MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); + #if TEMP_SENSOR_0 != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15); + #endif + #if EXTRUDERS > 1 + #if TEMP_SENSOR_1 != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N2, &target_temperature[1], 0, HEATER_1_MAXTEMP - 15); + #endif + #if EXTRUDERS > 2 + #if TEMP_SENSOR_2 != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N3, &target_temperature[2], 0, HEATER_2_MAXTEMP - 15); + #endif + #if EXTRUDERS > 3 + #if TEMP_SENSOR_3 != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N4, &target_temperature[3], 0, HEATER_3_MAXTEMP - 15); + #endif + #endif // EXTRUDERS > 3 + #endif // EXTRUDERS > 2 + #endif // EXTRUDERS > 1 + #if TEMP_SENSOR_BED != 0 + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15); + #endif + MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255); + #if defined(AUTOTEMP) && (TEMP_SENSOR_0 != 0) + MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled); + MENU_ITEM_EDIT(float3, MSG_MIN, &autotemp_min, 0, HEATER_0_MAXTEMP - 15); + MENU_ITEM_EDIT(float3, MSG_MAX, &autotemp_max, 0, HEATER_0_MAXTEMP - 15); + MENU_ITEM_EDIT(float32, MSG_FACTOR, &autotemp_factor, 0.0, 1.0); + #endif + #ifdef PIDTEMP + // set up temp variables - undo the default scaling + raw_Ki = unscalePID_i(PID_PARAM(Ki,0)); + raw_Kd = unscalePID_d(PID_PARAM(Kd,0)); + MENU_ITEM_EDIT(float52, MSG_PID_P, &PID_PARAM(Kp,0), 1, 9990); + // i is typically a small value so allows values below 1 + MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E1); + MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D, &raw_Kd, 1, 9990, copy_and_scalePID_d_E1); + #ifdef PID_ADD_EXTRUSION_RATE + MENU_ITEM_EDIT(float3, MSG_PID_C, &PID_PARAM(Kc,0), 1, 9990); + #endif//PID_ADD_EXTRUSION_RATE + #ifdef PID_PARAMS_PER_EXTRUDER + #if EXTRUDERS > 1 + // set up temp variables - undo the default scaling + raw_Ki = unscalePID_i(PID_PARAM(Ki,1)); + raw_Kd = unscalePID_d(PID_PARAM(Kd,1)); + MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E2, &PID_PARAM(Kp,1), 1, 9990); + // i is typically a small value so allows values below 1 + MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E2, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E2); + MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E2, &raw_Kd, 1, 9990, copy_and_scalePID_d_E2); + #ifdef PID_ADD_EXTRUSION_RATE + MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E2, &PID_PARAM(Kc,1), 1, 9990); + #endif//PID_ADD_EXTRUSION_RATE + + #if EXTRUDERS > 2 + // set up temp variables - undo the default scaling + raw_Ki = unscalePID_i(PID_PARAM(Ki,2)); + raw_Kd = unscalePID_d(PID_PARAM(Kd,2)); + MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E3, &PID_PARAM(Kp,2), 1, 9990); + // i is typically a small value so allows values below 1 + MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E3, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E3); + MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E3, &raw_Kd, 1, 9990, copy_and_scalePID_d_E3); + #ifdef PID_ADD_EXTRUSION_RATE + MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E3, &PID_PARAM(Kc,2), 1, 9990); + #endif//PID_ADD_EXTRUSION_RATE + + #if EXTRUDERS > 3 + // set up temp variables - undo the default scaling + raw_Ki = unscalePID_i(PID_PARAM(Ki,3)); + raw_Kd = unscalePID_d(PID_PARAM(Kd,3)); + MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E4, &PID_PARAM(Kp,3), 1, 9990); + // i is typically a small value so allows values below 1 + MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E4, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E4); + MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E4, &raw_Kd, 1, 9990, copy_and_scalePID_d_E4); + #ifdef PID_ADD_EXTRUSION_RATE + MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E4, &PID_PARAM(Kc,3), 1, 9990); + #endif//PID_ADD_EXTRUSION_RATE + #endif//EXTRUDERS > 3 + #endif//EXTRUDERS > 2 + #endif//EXTRUDERS > 1 + #endif //PID_PARAMS_PER_EXTRUDER + #endif//PIDTEMP + MENU_ITEM(submenu, MSG_PREHEAT_PLA_SETTINGS, lcd_control_temperature_preheat_pla_settings_menu); + MENU_ITEM(submenu, MSG_PREHEAT_ABS_SETTINGS, lcd_control_temperature_preheat_abs_settings_menu); + END_MENU(); +} + +static void lcd_control_temperature_preheat_pla_settings_menu() { + START_MENU(); + MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu); + MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &plaPreheatFanSpeed, 0, 255); + #if TEMP_SENSOR_0 != 0 + MENU_ITEM_EDIT(int3, MSG_NOZZLE, &plaPreheatHotendTemp, 0, HEATER_0_MAXTEMP - 15); + #endif + #if TEMP_SENSOR_BED != 0 + MENU_ITEM_EDIT(int3, MSG_BED, &plaPreheatHPBTemp, 0, BED_MAXTEMP - 15); + #endif + #ifdef EEPROM_SETTINGS + MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings); + #endif + END_MENU(); +} + +static void lcd_control_temperature_preheat_abs_settings_menu() { + START_MENU(); + MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu); + MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &absPreheatFanSpeed, 0, 255); + #if TEMP_SENSOR_0 != 0 + MENU_ITEM_EDIT(int3, MSG_NOZZLE, &absPreheatHotendTemp, 0, HEATER_0_MAXTEMP - 15); + #endif + #if TEMP_SENSOR_BED != 0 + MENU_ITEM_EDIT(int3, MSG_BED, &absPreheatHPBTemp, 0, BED_MAXTEMP - 15); + #endif + #ifdef EEPROM_SETTINGS + MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings); + #endif + END_MENU(); +} + +static void lcd_control_motion_menu() { + START_MENU(); + MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); + #ifdef ENABLE_AUTO_BED_LEVELING + MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, 0.5, 50); + #endif + MENU_ITEM_EDIT(float5, MSG_ACC, &acceleration, 500, 99000); + MENU_ITEM_EDIT(float3, MSG_VXY_JERK, &max_xy_jerk, 1, 990); + MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &max_z_jerk, 0.1, 990); + MENU_ITEM_EDIT(float3, MSG_VE_JERK, &max_e_jerk, 1, 990); + MENU_ITEM_EDIT(float3, MSG_VMAX MSG_X, &max_feedrate[X_AXIS], 1, 999); + MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Y, &max_feedrate[Y_AXIS], 1, 999); + MENU_ITEM_EDIT(float3, MSG_VMAX MSG_Z, &max_feedrate[Z_AXIS], 1, 999); + MENU_ITEM_EDIT(float3, MSG_VMAX MSG_E, &max_feedrate[E_AXIS], 1, 999); + MENU_ITEM_EDIT(float3, MSG_VMIN, &minimumfeedrate, 0, 999); + MENU_ITEM_EDIT(float3, MSG_VTRAV_MIN, &mintravelfeedrate, 0, 999); + MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_X, &max_acceleration_units_per_sq_second[X_AXIS], 100, 99000, reset_acceleration_rates); + MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Y, &max_acceleration_units_per_sq_second[Y_AXIS], 100, 99000, reset_acceleration_rates); + MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_Z, &max_acceleration_units_per_sq_second[Z_AXIS], 100, 99000, reset_acceleration_rates); + MENU_ITEM_EDIT_CALLBACK(long5, MSG_AMAX MSG_E, &max_acceleration_units_per_sq_second[E_AXIS], 100, 99000, reset_acceleration_rates); + MENU_ITEM_EDIT(float5, MSG_A_RETRACT, &retract_acceleration, 100, 99000); + MENU_ITEM_EDIT(float52, MSG_XSTEPS, &axis_steps_per_unit[X_AXIS], 5, 9999); + MENU_ITEM_EDIT(float52, MSG_YSTEPS, &axis_steps_per_unit[Y_AXIS], 5, 9999); + MENU_ITEM_EDIT(float51, MSG_ZSTEPS, &axis_steps_per_unit[Z_AXIS], 5, 9999); + MENU_ITEM_EDIT(float51, MSG_ESTEPS, &axis_steps_per_unit[E_AXIS], 5, 9999); + #ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + MENU_ITEM_EDIT(bool, MSG_ENDSTOP_ABORT, &abort_on_endstop_hit); + #endif + #ifdef SCARA + MENU_ITEM_EDIT(float74, MSG_XSCALE, &axis_scaling[X_AXIS],0.5,2); + MENU_ITEM_EDIT(float74, MSG_YSCALE, &axis_scaling[Y_AXIS],0.5,2); + #endif + END_MENU(); +} + +static void lcd_control_volumetric_menu() { + START_MENU(); + MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); + + MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers); + + if (volumetric_enabled) { + MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_0, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers); + #if EXTRUDERS > 1 + MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_1, &filament_size[1], 1.5, 3.25, calculate_volumetric_multipliers); + #if EXTRUDERS > 2 + MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_2, &filament_size[2], 1.5, 3.25, calculate_volumetric_multipliers); + #if EXTRUDERS > 3 + MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_3, &filament_size[3], 1.5, 3.25, calculate_volumetric_multipliers); + #endif //EXTRUDERS > 3 + #endif //EXTRUDERS > 2 + #endif //EXTRUDERS > 1 + } + + END_MENU(); +} + +#ifdef DOGLCD + +static void lcd_set_contrast() { + if (encoderPosition != 0) { + lcd_contrast -= encoderPosition; + if (lcd_contrast < 0) lcd_contrast = 0; + else if (lcd_contrast > 63) lcd_contrast = 63; + encoderPosition = 0; + lcdDrawUpdate = 1; + u8g.setContrast(lcd_contrast); + } + if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_CONTRAST), itostr2(lcd_contrast)); + if (LCD_CLICKED) lcd_goto_menu(lcd_control_menu); +} + +#endif //DOGLCD + +#ifdef FWRETRACT + +static void lcd_control_retract_menu() { + START_MENU(); + MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); + MENU_ITEM_EDIT(bool, MSG_AUTORETRACT, &autoretract_enabled); + MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT, &retract_length, 0, 100); + #if EXTRUDERS > 1 + MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_SWAP, &retract_length_swap, 0, 100); + #endif + MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACTF, &retract_feedrate, 1, 999); + MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_ZLIFT, &retract_zlift, 0, 999); + MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER, &retract_recover_length, 0, 100); + #if EXTRUDERS > 1 + MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER_SWAP, &retract_recover_length_swap, 0, 100); + #endif + MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACT_RECOVERF, &retract_recover_feedrate, 1, 999); + END_MENU(); +} + +#endif //FWRETRACT + +#if SDCARDDETECT == -1 + static void lcd_sd_refresh() { + card.initsd(); + currentMenuViewOffset = 0; + } +#endif + +static void lcd_sd_updir() { + card.updir(); + currentMenuViewOffset = 0; +} + +void lcd_sdcard_menu() { + if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card) + uint16_t fileCnt = card.getnrfilenames(); + START_MENU(); + MENU_ITEM(back, MSG_MAIN, lcd_main_menu); + card.getWorkDirName(); + if (card.filename[0] == '/') { + #if SDCARDDETECT == -1 + MENU_ITEM(function, LCD_STR_REFRESH MSG_REFRESH, lcd_sd_refresh); + #endif + } + else { + MENU_ITEM(function, LCD_STR_FOLDER "..", lcd_sd_updir); + } + + for(uint16_t i = 0; i < fileCnt; i++) { + if (_menuItemNr == _lineNr) { + #ifndef SDCARD_RATHERRECENTFIRST + card.getfilename(i); + #else + card.getfilename(fileCnt-1-i); + #endif + if (card.filenameIsDir) + MENU_ITEM(sddirectory, MSG_CARD_MENU, card.filename, card.longFilename); + else + MENU_ITEM(sdfile, MSG_CARD_MENU, card.filename, card.longFilename); + } + else { + MENU_ITEM_DUMMY(); + } + } + END_MENU(); +} + +#define menu_edit_type(_type, _name, _strFunc, scale) \ + bool _menu_edit_ ## _name () { \ + bool isClicked = LCD_CLICKED; \ + if ((int32_t)encoderPosition < 0) encoderPosition = 0; \ + if ((int32_t)encoderPosition > maxEditValue) encoderPosition = maxEditValue; \ + if (lcdDrawUpdate) \ + lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \ + if (isClicked) { \ + *((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \ + lcd_goto_menu(prevMenu, prevEncoderPosition); \ + } \ + return isClicked; \ + } \ + void menu_edit_ ## _name () { _menu_edit_ ## _name(); } \ + void menu_edit_callback_ ## _name () { if (_menu_edit_ ## _name ()) (*callbackFunc)(); } \ + static void _menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \ + prevMenu = currentMenu; \ + prevEncoderPosition = encoderPosition; \ + \ + lcdDrawUpdate = 2; \ + currentMenu = menu_edit_ ## _name; \ + \ + editLabel = pstr; \ + editValue = ptr; \ + minEditValue = minValue * scale; \ + maxEditValue = maxValue * scale - minEditValue; \ + encoderPosition = (*ptr) * scale - minEditValue; \ + } \ + static void menu_action_setting_edit_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue) { \ + _menu_action_setting_edit_ ## _name(pstr, ptr, minValue, maxValue); \ + currentMenu = menu_edit_ ## _name; \ + }\ + static void menu_action_setting_edit_callback_ ## _name (const char* pstr, _type* ptr, _type minValue, _type maxValue, menuFunc_t callback) { \ + _menu_action_setting_edit_ ## _name(pstr, ptr, minValue, maxValue); \ + currentMenu = menu_edit_callback_ ## _name; \ + callbackFunc = callback; \ + } +menu_edit_type(int, int3, itostr3, 1) +menu_edit_type(float, float3, ftostr3, 1) +menu_edit_type(float, float32, ftostr32, 100) +menu_edit_type(float, float43, ftostr43, 1000) +menu_edit_type(float, float5, ftostr5, 0.01) +menu_edit_type(float, float51, ftostr51, 10) +menu_edit_type(float, float52, ftostr52, 100) +menu_edit_type(unsigned long, long5, ftostr5, 0.01) + +#ifdef REPRAPWORLD_KEYPAD + static void reprapworld_keypad_move_z_up() { + encoderPosition = 1; + move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; + lcd_move_z(); + } + static void reprapworld_keypad_move_z_down() { + encoderPosition = -1; + move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; + lcd_move_z(); + } + static void reprapworld_keypad_move_x_left() { + encoderPosition = -1; + move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; + lcd_move_x(); + } + static void reprapworld_keypad_move_x_right() { + encoderPosition = 1; + move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; + lcd_move_x(); + } + static void reprapworld_keypad_move_y_down() { + encoderPosition = 1; + move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; + lcd_move_y(); + } + static void reprapworld_keypad_move_y_up() { + encoderPosition = -1; + move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; + lcd_move_y(); + } + static void reprapworld_keypad_move_home() { + enquecommands_P((PSTR("G28"))); // move all axis home + } +#endif //REPRAPWORLD_KEYPAD + +/** End of menus **/ + +static void lcd_quick_feedback() { + lcdDrawUpdate = 2; + blocking_enc = millis() + 500; + lcd_implementation_quick_feedback(); +} + +/** Menu action functions **/ +static void menu_action_back(menuFunc_t data) { lcd_goto_menu(data); } +static void menu_action_submenu(menuFunc_t data) { lcd_goto_menu(data); } +static void menu_action_gcode(const char* pgcode) { enquecommands_P(pgcode); } +static void menu_action_function(menuFunc_t data) { (*data)(); } +static void menu_action_sdfile(const char* filename, char* longFilename) { + char cmd[30]; + char* c; + sprintf_P(cmd, PSTR("M23 %s"), filename); + for(c = &cmd[4]; *c; c++) *c = tolower(*c); + enquecommand(cmd); + enquecommands_P(PSTR("M24")); + lcd_return_to_status(); +} +static void menu_action_sddirectory(const char* filename, char* longFilename) { + card.chdir(filename); + encoderPosition = 0; +} +static void menu_action_setting_edit_bool(const char* pstr, bool* ptr) { *ptr = !(*ptr); } +static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, menuFunc_t callback) { + menu_action_setting_edit_bool(pstr, ptr); + (*callback)(); +} + +#endif //ULTIPANEL + +/** LCD API **/ +void lcd_init() { + lcd_implementation_init(); + + #ifdef NEWPANEL + + SET_INPUT(BTN_EN1); + SET_INPUT(BTN_EN2); + WRITE(BTN_EN1,HIGH); + WRITE(BTN_EN2,HIGH); + #if BTN_ENC > 0 + SET_INPUT(BTN_ENC); + WRITE(BTN_ENC,HIGH); + #endif + #ifdef REPRAPWORLD_KEYPAD + pinMode(SHIFT_CLK,OUTPUT); + pinMode(SHIFT_LD,OUTPUT); + pinMode(SHIFT_OUT,INPUT); + WRITE(SHIFT_OUT,HIGH); + WRITE(SHIFT_LD,HIGH); + #endif +#else // Not NEWPANEL + #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register + pinMode (SR_DATA_PIN, OUTPUT); + pinMode (SR_CLK_PIN, OUTPUT); + #elif defined(SHIFT_CLK) + pinMode(SHIFT_CLK,OUTPUT); + pinMode(SHIFT_LD,OUTPUT); + pinMode(SHIFT_EN,OUTPUT); + pinMode(SHIFT_OUT,INPUT); + WRITE(SHIFT_OUT,HIGH); + WRITE(SHIFT_LD,HIGH); + WRITE(SHIFT_EN,LOW); + #else + #ifdef ULTIPANEL + #error ULTIPANEL requires an encoder + #endif + #endif // SR_LCD_2W_NL +#endif//!NEWPANEL + + #if defined(SDSUPPORT) && defined(SDCARDDETECT) && (SDCARDDETECT > 0) + pinMode(SDCARDDETECT, INPUT); + WRITE(SDCARDDETECT, HIGH); + lcd_oldcardstatus = IS_SD_INSERTED; + #endif //(SDCARDDETECT > 0) + + #ifdef LCD_HAS_SLOW_BUTTONS + slow_buttons = 0; + #endif + + lcd_buttons_update(); + + #ifdef ULTIPANEL + encoderDiff = 0; + #endif +} + +int lcd_strlen(char *s) { + int i = 0, j = 0; + while (s[i]) { + if ((s[i] & 0xc0) != 0x80) j++; + i++; + } + return j; +} + +int lcd_strlen_P(const char *s) { + int j = 0; + while (pgm_read_byte(s)) { + if ((pgm_read_byte(s) & 0xc0) != 0x80) j++; + s++; + } + return j; +} + +void lcd_update() { + static unsigned long timeoutToStatus = 0; + + #ifdef LCD_HAS_SLOW_BUTTONS + slow_buttons = lcd_implementation_read_slow_buttons(); // buttons which take too long to read in interrupt context + #endif + + lcd_buttons_update(); + + #if (SDCARDDETECT > 0) + if (IS_SD_INSERTED != lcd_oldcardstatus && lcd_detected()) { + lcdDrawUpdate = 2; + lcd_oldcardstatus = IS_SD_INSERTED; + lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD) + currentMenu == lcd_status_screen + #endif + ); + + if (lcd_oldcardstatus) { + card.initsd(); + LCD_MESSAGEPGM(MSG_SD_INSERTED); + } + else { + card.release(); + LCD_MESSAGEPGM(MSG_SD_REMOVED); + } + } + #endif//CARDINSERTED + + long ms = millis(); + if (ms > lcd_next_update_millis) { + + #ifdef ULTIPANEL + + #ifdef REPRAPWORLD_KEYPAD + if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) reprapworld_keypad_move_z_up(); + if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) reprapworld_keypad_move_z_down(); + if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) reprapworld_keypad_move_x_left(); + if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) reprapworld_keypad_move_x_right(); + if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) reprapworld_keypad_move_y_down(); + if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) reprapworld_keypad_move_y_up(); + if (REPRAPWORLD_KEYPAD_MOVE_HOME) reprapworld_keypad_move_home(); + #endif + + bool encoderPastThreshold = (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP); + if (encoderPastThreshold || LCD_CLICKED) { + if (encoderPastThreshold) { + int32_t encoderMultiplier = 1; + + #ifdef ENCODER_RATE_MULTIPLIER + + if (encoderRateMultiplierEnabled) { + int32_t encoderMovementSteps = abs(encoderDiff) / ENCODER_PULSES_PER_STEP; + + if (lastEncoderMovementMillis != 0) { + // Note that the rate is always calculated between to passes through the + // loop and that the abs of the encoderDiff value is tracked. + float encoderStepRate = (float)(encoderMovementSteps) / ((float)(ms - lastEncoderMovementMillis)) * 1000.0; + + if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100; + else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10; + + #ifdef ENCODER_RATE_MULTIPLIER_DEBUG + SERIAL_ECHO_START; + SERIAL_ECHO("Enc Step Rate: "); + SERIAL_ECHO(encoderStepRate); + SERIAL_ECHO(" Multiplier: "); + SERIAL_ECHO(encoderMultiplier); + SERIAL_ECHO(" ENCODER_10X_STEPS_PER_SEC: "); + SERIAL_ECHO(ENCODER_10X_STEPS_PER_SEC); + SERIAL_ECHO(" ENCODER_100X_STEPS_PER_SEC: "); + SERIAL_ECHOLN(ENCODER_100X_STEPS_PER_SEC); + #endif //ENCODER_RATE_MULTIPLIER_DEBUG + } + + lastEncoderMovementMillis = ms; + } + #endif //ENCODER_RATE_MULTIPLIER + + lcdDrawUpdate = 1; + encoderPosition += (encoderDiff * encoderMultiplier) / ENCODER_PULSES_PER_STEP; + encoderDiff = 0; + } + timeoutToStatus = ms + LCD_TIMEOUT_TO_STATUS; + } + + #endif //ULTIPANEL + + #ifdef DOGLCD // Changes due to different driver architecture of the DOGM display + blink++; // Variable for fan animation and alive dot + u8g.firstPage(); + do { + u8g.setFont(FONT_MENU); + u8g.setPrintPos(125, 0); + if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot + u8g.drawPixel(127, 63); // draw alive dot + u8g.setColorIndex(1); // black on white + (*currentMenu)(); + if (!lcdDrawUpdate) break; // Terminate display update, when nothing new to draw. This must be done before the last dogm.next() + } while( u8g.nextPage() ); + #else + (*currentMenu)(); + #endif + + #ifdef LCD_HAS_STATUS_INDICATORS + lcd_implementation_update_indicators(); + #endif + + #ifdef ULTIPANEL + if (currentMenu != lcd_status_screen && millis() > timeoutToStatus) { + lcd_return_to_status(); + lcdDrawUpdate = 2; + } + #endif //ULTIPANEL + + if (lcdDrawUpdate == 2) lcd_implementation_clear(); + if (lcdDrawUpdate) lcdDrawUpdate--; + lcd_next_update_millis = millis() + LCD_UPDATE_INTERVAL; + } +} + +void lcd_ignore_click(bool b) { + ignore_click = b; + wait_for_unclick = false; +} + +void lcd_finishstatus() { + int len = lcd_strlen(lcd_status_message); + if (len > 0) { + while (len < LCD_WIDTH) { + lcd_status_message[len++] = ' '; + } + } + lcd_status_message[LCD_WIDTH] = '\0'; + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) && !defined(DOGLCD) + #if PROGRESS_MSG_EXPIRE > 0 + messageTick = + #endif + progressBarTick = millis(); + #endif + lcdDrawUpdate = 2; + + #ifdef FILAMENT_LCD_DISPLAY + message_millis = millis(); //get status message to show up for a while + #endif +} + +void lcd_setstatus(const char* message) { + if (lcd_status_message_level > 0) return; + strncpy(lcd_status_message, message, LCD_WIDTH); + lcd_finishstatus(); +} + +void lcd_setstatuspgm(const char* message) { + if (lcd_status_message_level > 0) return; + strncpy_P(lcd_status_message, message, LCD_WIDTH); + lcd_finishstatus(); +} + +void lcd_setalertstatuspgm(const char* message) { + lcd_setstatuspgm(message); + lcd_status_message_level = 1; + #ifdef ULTIPANEL + lcd_return_to_status(); + #endif +} + +void lcd_reset_alert_level() { lcd_status_message_level = 0; } + +#ifdef DOGLCD + void lcd_setcontrast(uint8_t value) { + lcd_contrast = value & 63; + u8g.setContrast(lcd_contrast); + } +#endif + +#ifdef ULTIPANEL + +//////////////////////// +// Setup Rotary Encoder Bit Values (for two pin encoders to indicate movement) +// These values are independent of which pins are used for EN_A and EN_B indications +// The rotary encoder part is also independent to the chipset used for the LCD +#if defined(EN_A) && defined(EN_B) + #define encrot0 0 + #define encrot1 2 + #define encrot2 3 + #define encrot3 1 +#endif + +/* Warning: This function is called from interrupt context */ +void lcd_buttons_update() { + #ifdef NEWPANEL + uint8_t newbutton = 0; + if (READ(BTN_EN1) == 0) newbutton |= EN_A; + if (READ(BTN_EN2) == 0) newbutton |= EN_B; + #if BTN_ENC > 0 + if (millis() > blocking_enc && READ(BTN_ENC) == 0) newbutton |= EN_C; + #endif + buttons = newbutton; + #ifdef LCD_HAS_SLOW_BUTTONS + buttons |= slow_buttons; + #endif + #ifdef REPRAPWORLD_KEYPAD + // for the reprapworld_keypad + uint8_t newbutton_reprapworld_keypad=0; + WRITE(SHIFT_LD, LOW); + WRITE(SHIFT_LD, HIGH); + for(int8_t i = 0; i < 8; i++) { + newbutton_reprapworld_keypad >>= 1; + if (READ(SHIFT_OUT)) newbutton_reprapworld_keypad |= (1 << 7); + WRITE(SHIFT_CLK, HIGH); + WRITE(SHIFT_CLK, LOW); + } + buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0 + #endif + #else //read it from the shift register + uint8_t newbutton = 0; + WRITE(SHIFT_LD, LOW); + WRITE(SHIFT_LD, HIGH); + unsigned char tmp_buttons = 0; + for(int8_t i=0; i<8; i++) { + newbutton >>= 1; + if (READ(SHIFT_OUT)) newbutton |= (1 << 7); + WRITE(SHIFT_CLK, HIGH); + WRITE(SHIFT_CLK, LOW); + } + buttons = ~newbutton; //invert it, because a pressed switch produces a logical 0 + #endif //!NEWPANEL + + //manage encoder rotation + uint8_t enc=0; + if (buttons & EN_A) enc |= B01; + if (buttons & EN_B) enc |= B10; + if (enc != lastEncoderBits) { + switch(enc) { + case encrot0: + if (lastEncoderBits==encrot3) encoderDiff++; + else if (lastEncoderBits==encrot1) encoderDiff--; + break; + case encrot1: + if (lastEncoderBits==encrot0) encoderDiff++; + else if (lastEncoderBits==encrot2) encoderDiff--; + break; + case encrot2: + if (lastEncoderBits==encrot1) encoderDiff++; + else if (lastEncoderBits==encrot3) encoderDiff--; + break; + case encrot3: + if (lastEncoderBits==encrot2) encoderDiff++; + else if (lastEncoderBits==encrot0) encoderDiff--; + break; + } + } + lastEncoderBits = enc; +} + +bool lcd_detected(void) { + #if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE) + return lcd.LcdDetected() == 1; + #else + return true; + #endif +} + +void lcd_buzz(long duration, uint16_t freq) { + #ifdef LCD_USE_I2C_BUZZER + lcd.buzz(duration,freq); + #endif +} + +bool lcd_clicked() { return LCD_CLICKED; } + +#endif //ULTIPANEL + +/********************************/ +/** Float conversion utilities **/ +/********************************/ +// convert float to string with +123.4 format +char conv[8]; +char *ftostr3(const float &x) +{ + return itostr3((int)x); +} + +char *itostr2(const uint8_t &x) +{ + //sprintf(conv,"%5.1f",x); + int xx=x; + conv[0]=(xx/10)%10+'0'; + conv[1]=(xx)%10+'0'; + conv[2]=0; + return conv; +} + +// Convert float to string with 123.4 format, dropping sign +char *ftostr31(const float &x) +{ + int xx=x*10; + conv[0]=(xx>=0)?'+':'-'; + xx=abs(xx); + conv[1]=(xx/1000)%10+'0'; + conv[2]=(xx/100)%10+'0'; + conv[3]=(xx/10)%10+'0'; + conv[4]='.'; + conv[5]=(xx)%10+'0'; + conv[6]=0; + return conv; +} + +// Convert float to string with 123.4 format +char *ftostr31ns(const float &x) +{ + int xx=x*10; + //conv[0]=(xx>=0)?'+':'-'; + xx=abs(xx); + conv[0]=(xx/1000)%10+'0'; + conv[1]=(xx/100)%10+'0'; + conv[2]=(xx/10)%10+'0'; + conv[3]='.'; + conv[4]=(xx)%10+'0'; + conv[5]=0; + return conv; +} + +char *ftostr32(const float &x) +{ + long xx=x*100; + if (xx >= 0) + conv[0]=(xx/10000)%10+'0'; + else + conv[0]='-'; + xx=abs(xx); + conv[1]=(xx/1000)%10+'0'; + conv[2]=(xx/100)%10+'0'; + conv[3]='.'; + conv[4]=(xx/10)%10+'0'; + conv[5]=(xx)%10+'0'; + conv[6]=0; + return conv; +} + +// Convert float to string with 1.234 format +char *ftostr43(const float &x) +{ + long xx = x * 1000; + if (xx >= 0) + conv[0] = (xx / 1000) % 10 + '0'; + else + conv[0] = '-'; + xx = abs(xx); + conv[1] = '.'; + conv[2] = (xx / 100) % 10 + '0'; + conv[3] = (xx / 10) % 10 + '0'; + conv[4] = (xx) % 10 + '0'; + conv[5] = 0; + return conv; +} + +//Float to string with 1.23 format +char *ftostr12ns(const float &x) +{ + long xx=x*100; + + xx=abs(xx); + conv[0]=(xx/100)%10+'0'; + conv[1]='.'; + conv[2]=(xx/10)%10+'0'; + conv[3]=(xx)%10+'0'; + conv[4]=0; + return conv; +} + +// convert float to space-padded string with -_23.4_ format +char *ftostr32sp(const float &x) { + long xx = abs(x * 100); + uint8_t dig; + + if (x < 0) { // negative val = -_0 + conv[0] = '-'; + dig = (xx / 1000) % 10; + conv[1] = dig ? '0' + dig : ' '; + } + else { // positive val = __0 + dig = (xx / 10000) % 10; + if (dig) { + conv[0] = '0' + dig; + conv[1] = '0' + (xx / 1000) % 10; + } + else { + conv[0] = ' '; + dig = (xx / 1000) % 10; + conv[1] = dig ? '0' + dig : ' '; + } + } + + conv[2] = '0' + (xx / 100) % 10; // lsd always + + dig = xx % 10; + if (dig) { // 2 decimal places + conv[5] = '0' + dig; + conv[4] = '0' + (xx / 10) % 10; + conv[3] = '.'; + } + else { // 1 or 0 decimal place + dig = (xx / 10) % 10; + if (dig) { + conv[4] = '0' + dig; + conv[3] = '.'; + } + else { + conv[3] = conv[4] = ' '; + } + conv[5] = ' '; + } + conv[6] = '\0'; + return conv; +} + +char *itostr31(const int &xx) +{ + conv[0]=(xx>=0)?'+':'-'; + conv[1]=(xx/1000)%10+'0'; + conv[2]=(xx/100)%10+'0'; + conv[3]=(xx/10)%10+'0'; + conv[4]='.'; + conv[5]=(xx)%10+'0'; + conv[6]=0; + return conv; +} + +// Convert int to rj string with 123 or -12 format +char *itostr3(const int &x) +{ + int xx = x; + if (xx < 0) { + conv[0]='-'; + xx = -xx; + } else if (xx >= 100) + conv[0]=(xx/100)%10+'0'; + else + conv[0]=' '; + if (xx >= 10) + conv[1]=(xx/10)%10+'0'; + else + conv[1]=' '; + conv[2]=(xx)%10+'0'; + conv[3]=0; + return conv; +} + +// Convert int to lj string with 123 format +char *itostr3left(const int &xx) +{ + if (xx >= 100) + { + conv[0]=(xx/100)%10+'0'; + conv[1]=(xx/10)%10+'0'; + conv[2]=(xx)%10+'0'; + conv[3]=0; + } + else if (xx >= 10) + { + conv[0]=(xx/10)%10+'0'; + conv[1]=(xx)%10+'0'; + conv[2]=0; + } + else + { + conv[0]=(xx)%10+'0'; + conv[1]=0; + } + return conv; +} + +// Convert int to rj string with 1234 format +char *itostr4(const int &xx) { + conv[0] = xx >= 1000 ? (xx / 1000) % 10 + '0' : ' '; + conv[1] = xx >= 100 ? (xx / 100) % 10 + '0' : ' '; + conv[2] = xx >= 10 ? (xx / 10) % 10 + '0' : ' '; + conv[3] = xx % 10 + '0'; + conv[4] = 0; + return conv; +} + +// Convert float to rj string with 12345 format +char *ftostr5(const float &x) { + long xx = abs(x); + conv[0] = xx >= 10000 ? (xx / 10000) % 10 + '0' : ' '; + conv[1] = xx >= 1000 ? (xx / 1000) % 10 + '0' : ' '; + conv[2] = xx >= 100 ? (xx / 100) % 10 + '0' : ' '; + conv[3] = xx >= 10 ? (xx / 10) % 10 + '0' : ' '; + conv[4] = xx % 10 + '0'; + conv[5] = 0; + return conv; +} + +// Convert float to string with +1234.5 format +char *ftostr51(const float &x) +{ + long xx=x*10; + conv[0]=(xx>=0)?'+':'-'; + xx=abs(xx); + conv[1]=(xx/10000)%10+'0'; + conv[2]=(xx/1000)%10+'0'; + conv[3]=(xx/100)%10+'0'; + conv[4]=(xx/10)%10+'0'; + conv[5]='.'; + conv[6]=(xx)%10+'0'; + conv[7]=0; + return conv; +} + +// Convert float to string with +123.45 format +char *ftostr52(const float &x) +{ + long xx=x*100; + conv[0]=(xx>=0)?'+':'-'; + xx=abs(xx); + conv[1]=(xx/10000)%10+'0'; + conv[2]=(xx/1000)%10+'0'; + conv[3]=(xx/100)%10+'0'; + conv[4]='.'; + conv[5]=(xx/10)%10+'0'; + conv[6]=(xx)%10+'0'; + conv[7]=0; + return conv; +} + +#endif //ULTRA_LCD diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h new file mode 100644 index 000000000..d861e9d73 --- /dev/null +++ b/Marlin/ultralcd.h @@ -0,0 +1,129 @@ +#ifndef ULTRALCD_H +#define ULTRALCD_H + +#include "Marlin.h" + +#ifdef ULTRA_LCD + int lcd_strlen(char *s); + int lcd_strlen_P(const char *s); + void lcd_update(); + void lcd_init(); + void lcd_setstatus(const char* message); + void lcd_setstatuspgm(const char* message); + void lcd_setalertstatuspgm(const char* message); + void lcd_reset_alert_level(); + bool lcd_detected(void); + +#ifdef DOGLCD + extern int lcd_contrast; + void lcd_setcontrast(uint8_t value); +#endif + + static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD + + #define LCD_MESSAGEPGM(x) lcd_setstatuspgm(PSTR(x)) + #define LCD_ALERTMESSAGEPGM(x) lcd_setalertstatuspgm(PSTR(x)) + + #define LCD_UPDATE_INTERVAL 100 + #define LCD_TIMEOUT_TO_STATUS 15000 + + #ifdef ULTIPANEL + void lcd_buttons_update(); + extern volatile uint8_t buttons; //the last checked buttons in a bit array. + #ifdef REPRAPWORLD_KEYPAD + extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values + #endif + #else + FORCE_INLINE void lcd_buttons_update() {} + #endif + + extern int plaPreheatHotendTemp; + extern int plaPreheatHPBTemp; + extern int plaPreheatFanSpeed; + + extern int absPreheatHotendTemp; + extern int absPreheatHPBTemp; + extern int absPreheatFanSpeed; + + extern bool cancel_heatup; + + #ifdef FILAMENT_LCD_DISPLAY + extern unsigned long message_millis; + #endif + + void lcd_buzz(long duration,uint16_t freq); + bool lcd_clicked(); + + void lcd_ignore_click(bool b=true); + + #ifdef NEWPANEL + #define EN_C (1< -1 + // encoder click is directly connected + #define BLEN_C 2 + #define EN_C (1< -1 + // the pause/stop/restart button is connected to BTN_ENC when used + #define B_ST (EN_C) // Map the pause/stop/resume button into its normalized functional name + #define LCD_CLICKED (buttons&(B_MI|B_RI|B_ST)) // pause/stop button also acts as click until we implement proper pause/stop. + #else + #define LCD_CLICKED (buttons&(B_MI|B_RI)) + #endif + + // I2C buttons take too long to read inside an interrupt context and so we read them during lcd_update + #define LCD_HAS_SLOW_BUTTONS + +#elif defined(LCD_I2C_PANELOLU2) + // encoder click can be read through I2C if not directly connected + #if BTN_ENC <= 0 + #define B_I2C_BTN_OFFSET 3 // (the first three bit positions reserved for EN_A, EN_B, EN_C) + + #define B_MI (PANELOLU2_ENCODER_C< + #include + #include + #define LCD_CLASS LiquidCrystal_I2C + LCD_CLASS lcd(LCD_I2C_ADDRESS,LCD_I2C_PIN_EN,LCD_I2C_PIN_RW,LCD_I2C_PIN_RS,LCD_I2C_PIN_D4,LCD_I2C_PIN_D5,LCD_I2C_PIN_D6,LCD_I2C_PIN_D7); + +#elif defined(LCD_I2C_TYPE_MCP23017) + //for the LED indicators (which maybe mapped to different things in lcd_implementation_update_indicators()) + #define LED_A 0x04 //100 + #define LED_B 0x02 //010 + #define LED_C 0x01 //001 + + #define LCD_HAS_STATUS_INDICATORS + + #include + #include + #define LCD_CLASS LiquidTWI2 + #if defined(DETECT_DEVICE) + LCD_CLASS lcd(LCD_I2C_ADDRESS, 1); + #else + LCD_CLASS lcd(LCD_I2C_ADDRESS); + #endif + +#elif defined(LCD_I2C_TYPE_MCP23008) + #include + #include + #define LCD_CLASS LiquidTWI2 + #if defined(DETECT_DEVICE) + LCD_CLASS lcd(LCD_I2C_ADDRESS, 1); + #else + LCD_CLASS lcd(LCD_I2C_ADDRESS); + #endif + +#elif defined(LCD_I2C_TYPE_PCA8574) + #include + #define LCD_CLASS LiquidCrystal_I2C + LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_WIDTH, LCD_HEIGHT); + +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection +#elif defined(SR_LCD_2W_NL) + + extern "C" void __cxa_pure_virtual() { while (1); } + #include + #include + #define LCD_CLASS LiquidCrystal_SR + LCD_CLASS lcd(SR_DATA_PIN, SR_CLK_PIN); + +#else + // Standard directly connected LCD implementations + #ifdef LANGUAGE_RU + #include "LiquidCrystalRus.h" + #define LCD_CLASS LiquidCrystalRus + #else + #include + #define LCD_CLASS LiquidCrystal + #endif + LCD_CLASS lcd(LCD_PINS_RS, LCD_PINS_ENABLE, LCD_PINS_D4, LCD_PINS_D5,LCD_PINS_D6,LCD_PINS_D7); //RS,Enable,D4,D5,D6,D7 +#endif + +#if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) + static uint16_t progressBarTick = 0; + #if PROGRESS_MSG_EXPIRE > 0 + static uint16_t messageTick = 0; + #endif + #define LCD_STR_PROGRESS "\x03\x04\x05" +#endif + +/* Custom characters defined in the first 8 characters of the LCD */ +#define LCD_STR_BEDTEMP "\x00" +#define LCD_STR_DEGREE "\x01" +#define LCD_STR_THERMOMETER "\x02" +#define LCD_STR_UPLEVEL "\x03" +#define LCD_STR_REFRESH "\x04" +#define LCD_STR_FOLDER "\x05" +#define LCD_STR_FEEDRATE "\x06" +#define LCD_STR_CLOCK "\x07" +#define LCD_STR_ARROW_RIGHT "\x7E" /* from the default character set */ + +static void lcd_set_custom_characters( + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) + bool progress_bar_set=true + #endif +) { + byte bedTemp[8] = { + B00000, + B11111, + B10101, + B10001, + B10101, + B11111, + B00000, + B00000 + }; //thanks Sonny Mounicou + byte degree[8] = { + B01100, + B10010, + B10010, + B01100, + B00000, + B00000, + B00000, + B00000 + }; + byte thermometer[8] = { + B00100, + B01010, + B01010, + B01010, + B01010, + B10001, + B10001, + B01110 + }; + byte uplevel[8] = { + B00100, + B01110, + B11111, + B00100, + B11100, + B00000, + B00000, + B00000 + }; //thanks joris + byte refresh[8] = { + B00000, + B00110, + B11001, + B11000, + B00011, + B10011, + B01100, + B00000, + }; //thanks joris + byte folder[8] = { + B00000, + B11100, + B11111, + B10001, + B10001, + B11111, + B00000, + B00000 + }; //thanks joris + byte feedrate[8] = { + B11100, + B10000, + B11000, + B10111, + B00101, + B00110, + B00101, + B00000 + }; //thanks Sonny Mounicou + byte clock[8] = { + B00000, + B01110, + B10011, + B10101, + B10001, + B01110, + B00000, + B00000 + }; //thanks Sonny Mounicou + + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) + static bool char_mode = false; + byte progress[3][8] = { { + B00000, + B10000, + B10000, + B10000, + B10000, + B10000, + B10000, + B00000 + }, { + B00000, + B10100, + B10100, + B10100, + B10100, + B10100, + B10100, + B00000 + }, { + B00000, + B10101, + B10101, + B10101, + B10101, + B10101, + B10101, + B00000 + } }; + if (progress_bar_set != char_mode) { + char_mode = progress_bar_set; + lcd.createChar(LCD_STR_BEDTEMP[0], bedTemp); + lcd.createChar(LCD_STR_DEGREE[0], degree); + lcd.createChar(LCD_STR_THERMOMETER[0], thermometer); + lcd.createChar(LCD_STR_FEEDRATE[0], feedrate); + lcd.createChar(LCD_STR_CLOCK[0], clock); + if (progress_bar_set) { + // Progress bar characters for info screen + for (int i=3; i--;) lcd.createChar(LCD_STR_PROGRESS[i], progress[i]); + } + else { + // Custom characters for submenus + lcd.createChar(LCD_STR_UPLEVEL[0], uplevel); + lcd.createChar(LCD_STR_REFRESH[0], refresh); + lcd.createChar(LCD_STR_FOLDER[0], folder); + } + } + #else + lcd.createChar(LCD_STR_BEDTEMP[0], bedTemp); + lcd.createChar(LCD_STR_DEGREE[0], degree); + lcd.createChar(LCD_STR_THERMOMETER[0], thermometer); + lcd.createChar(LCD_STR_UPLEVEL[0], uplevel); + lcd.createChar(LCD_STR_REFRESH[0], refresh); + lcd.createChar(LCD_STR_FOLDER[0], folder); + lcd.createChar(LCD_STR_FEEDRATE[0], feedrate); + lcd.createChar(LCD_STR_CLOCK[0], clock); + #endif +} + +static void lcd_implementation_init( + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) + bool progress_bar_set=true + #endif +) { + +#if defined(LCD_I2C_TYPE_PCF8575) + lcd.begin(LCD_WIDTH, LCD_HEIGHT); + #ifdef LCD_I2C_PIN_BL + lcd.setBacklightPin(LCD_I2C_PIN_BL,POSITIVE); + lcd.setBacklight(HIGH); + #endif + +#elif defined(LCD_I2C_TYPE_MCP23017) + lcd.setMCPType(LTI_TYPE_MCP23017); + lcd.begin(LCD_WIDTH, LCD_HEIGHT); + lcd.setBacklight(0); //set all the LEDs off to begin with + +#elif defined(LCD_I2C_TYPE_MCP23008) + lcd.setMCPType(LTI_TYPE_MCP23008); + lcd.begin(LCD_WIDTH, LCD_HEIGHT); + +#elif defined(LCD_I2C_TYPE_PCA8574) + lcd.init(); + lcd.backlight(); + +#else + lcd.begin(LCD_WIDTH, LCD_HEIGHT); +#endif + + lcd_set_custom_characters( + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) + progress_bar_set + #endif + ); + + lcd.clear(); +} +static void lcd_implementation_clear() +{ + lcd.clear(); +} +/* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */ +static void lcd_printPGM(const char* str) +{ + char c; + while((c = pgm_read_byte(str++)) != '\0') + { + lcd.write(c); + } +} +/* +Possible status screens: +16x2 |0123456789012345| + |000/000 B000/000| + |Status line.....| + +16x4 |0123456789012345| + |000/000 B000/000| + |SD100% Z000.0| + |F100% T--:--| + |Status line.....| + +20x2 |01234567890123456789| + |T000/000D B000/000D | + |Status line.........| + +20x4 |01234567890123456789| + |T000/000D B000/000D | + |X+000.0 Y+000.0 Z+000.0| + |F100% SD100% T--:--| + |Status line.........| + +20x4 |01234567890123456789| + |T000/000D B000/000D | + |T000/000D Z000.0| + |F100% SD100% T--:--| + |Status line.........| +*/ +static void lcd_implementation_status_screen() +{ + int tHotend=int(degHotend(0) + 0.5); + int tTarget=int(degTargetHotend(0) + 0.5); + +#if LCD_WIDTH < 20 + lcd.setCursor(0, 0); + lcd.print(itostr3(tHotend)); + lcd.print('/'); + lcd.print(itostr3left(tTarget)); + +# if EXTRUDERS > 1 || TEMP_SENSOR_BED != 0 + //If we have an 2nd extruder or heated bed, show that in the top right corner + lcd.setCursor(8, 0); +# if EXTRUDERS > 1 + tHotend = int(degHotend(1) + 0.5); + tTarget = int(degTargetHotend(1) + 0.5); + lcd.print(LCD_STR_THERMOMETER[0]); +# else//Heated bed + tHotend=int(degBed() + 0.5); + tTarget=int(degTargetBed() + 0.5); + lcd.print(LCD_STR_BEDTEMP[0]); +# endif + lcd.print(itostr3(tHotend)); + lcd.print('/'); + lcd.print(itostr3left(tTarget)); +# endif//EXTRUDERS > 1 || TEMP_SENSOR_BED != 0 + +#else//LCD_WIDTH > 19 + lcd.setCursor(0, 0); + lcd.print(LCD_STR_THERMOMETER[0]); + lcd.print(itostr3(tHotend)); + lcd.print('/'); + lcd.print(itostr3left(tTarget)); + lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); + if (tTarget < 10) + lcd.print(' '); + +# if EXTRUDERS > 1 || TEMP_SENSOR_BED != 0 + //If we have an 2nd extruder or heated bed, show that in the top right corner + lcd.setCursor(10, 0); +# if EXTRUDERS > 1 + tHotend = int(degHotend(1) + 0.5); + tTarget = int(degTargetHotend(1) + 0.5); + lcd.print(LCD_STR_THERMOMETER[0]); +# else//Heated bed + tHotend=int(degBed() + 0.5); + tTarget=int(degTargetBed() + 0.5); + lcd.print(LCD_STR_BEDTEMP[0]); +# endif + lcd.print(itostr3(tHotend)); + lcd.print('/'); + lcd.print(itostr3left(tTarget)); + lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); + if (tTarget < 10) + lcd.print(' '); +# endif//EXTRUDERS > 1 || TEMP_SENSOR_BED != 0 +#endif//LCD_WIDTH > 19 + +#if LCD_HEIGHT > 2 +//Lines 2 for 4 line LCD +# if LCD_WIDTH < 20 +# ifdef SDSUPPORT + lcd.setCursor(0, 2); + lcd_printPGM(PSTR("SD")); + if (IS_SD_PRINTING) + lcd.print(itostr3(card.percentDone())); + else + lcd_printPGM(PSTR("---")); + lcd.print('%'); +# endif//SDSUPPORT +# else//LCD_WIDTH > 19 +# if EXTRUDERS > 1 && TEMP_SENSOR_BED != 0 + //If we both have a 2nd extruder and a heated bed, show the heated bed temp on the 2nd line on the left, as the first line is filled with extruder temps + tHotend=int(degBed() + 0.5); + tTarget=int(degTargetBed() + 0.5); + + lcd.setCursor(0, 1); + lcd.print(LCD_STR_BEDTEMP[0]); + lcd.print(itostr3(tHotend)); + lcd.print('/'); + lcd.print(itostr3left(tTarget)); + lcd_printPGM(PSTR(LCD_STR_DEGREE " ")); + if (tTarget < 10) + lcd.print(' '); +# else + lcd.setCursor(0,1); + lcd.print('X'); + lcd.print(ftostr3(current_position[X_AXIS])); + lcd_printPGM(PSTR(" Y")); + lcd.print(ftostr3(current_position[Y_AXIS])); +# endif//EXTRUDERS > 1 || TEMP_SENSOR_BED != 0 +# endif//LCD_WIDTH > 19 + lcd.setCursor(LCD_WIDTH - 8, 1); + lcd.print('Z'); + lcd.print(ftostr32sp(current_position[Z_AXIS] + 0.00001)); +#endif//LCD_HEIGHT > 2 + +#if LCD_HEIGHT > 3 + lcd.setCursor(0, 2); + lcd.print(LCD_STR_FEEDRATE[0]); + lcd.print(itostr3(feedmultiply)); + lcd.print('%'); +# if LCD_WIDTH > 19 +# ifdef SDSUPPORT + lcd.setCursor(7, 2); + lcd_printPGM(PSTR("SD")); + if (IS_SD_PRINTING) + lcd.print(itostr3(card.percentDone())); + else + lcd_printPGM(PSTR("---")); + lcd.print('%'); +# endif//SDSUPPORT +# endif//LCD_WIDTH > 19 + lcd.setCursor(LCD_WIDTH - 6, 2); + lcd.print(LCD_STR_CLOCK[0]); + if(starttime != 0) + { + uint16_t time = millis()/60000 - starttime/60000; + lcd.print(itostr2(time/60)); + lcd.print(':'); + lcd.print(itostr2(time%60)); + }else{ + lcd_printPGM(PSTR("--:--")); + } +#endif + + // Status message line at the bottom + lcd.setCursor(0, LCD_HEIGHT - 1); + + #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) + + if (card.isFileOpen()) { + uint16_t mil = millis(), diff = mil - progressBarTick; + if (diff >= PROGRESS_BAR_MSG_TIME || !lcd_status_message[0]) { + // draw the progress bar + int tix = (int)(card.percentDone() * LCD_WIDTH * 3) / 100, + cel = tix / 3, rem = tix % 3, i = LCD_WIDTH; + char msg[LCD_WIDTH+1], b = ' '; + msg[i] = '\0'; + while (i--) { + if (i == cel - 1) + b = LCD_STR_PROGRESS[2]; + else if (i == cel && rem != 0) + b = LCD_STR_PROGRESS[rem-1]; + msg[i] = b; + } + lcd.print(msg); + return; + } + } //card.isFileOpen + + #endif //LCD_PROGRESS_BAR + + //Display both Status message line and Filament display on the last line + #ifdef FILAMENT_LCD_DISPLAY + if (message_millis + 5000 <= millis()) { //display any status for the first 5 sec after screen is initiated + lcd_printPGM(PSTR("Dia ")); + lcd.print(ftostr12ns(filament_width_meas)); + lcd_printPGM(PSTR(" V")); + lcd.print(itostr3(100.0*volumetric_multiplier[FILAMENT_SENSOR_EXTRUDER_NUM])); + lcd.print('%'); + return; + } + #endif //FILAMENT_LCD_DISPLAY + + lcd.print(lcd_status_message); +} +static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, char pre_char, char post_char) +{ + char c; + //Use all characters in narrow LCDs + #if LCD_WIDTH < 20 + uint8_t n = LCD_WIDTH - 1 - 1; + #else + uint8_t n = LCD_WIDTH - 1 - 2; + #endif + lcd.setCursor(0, row); + lcd.print(pre_char); + while( ((c = pgm_read_byte(pstr)) != '\0') && (n>0) ) + { + lcd.print(c); + pstr++; + if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--; + } + while(n--) + lcd.print(' '); + lcd.print(post_char); + lcd.print(' '); +} +static void lcd_implementation_drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, char* data) +{ + char c; + //Use all characters in narrow LCDs + #if LCD_WIDTH < 20 + uint8_t n = LCD_WIDTH - 1 - 1 - lcd_strlen(data); + #else + uint8_t n = LCD_WIDTH - 1 - 2 - lcd_strlen(data); + #endif + lcd.setCursor(0, row); + lcd.print(pre_char); + while( ((c = pgm_read_byte(pstr)) != '\0') && (n>0) ) + { + lcd.print(c); + pstr++; + if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--; + } + lcd.print(':'); + while(n--) + lcd.print(' '); + lcd.print(data); +} +static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, const char* pstr, char pre_char, const char* data) +{ + char c; + //Use all characters in narrow LCDs + #if LCD_WIDTH < 20 + uint8_t n = LCD_WIDTH - 1 - 1 - lcd_strlen_P(data); + #else + uint8_t n = LCD_WIDTH - 1 - 2 - lcd_strlen_P(data); + #endif + lcd.setCursor(0, row); + lcd.print(pre_char); + while( ((c = pgm_read_byte(pstr)) != '\0') && (n>0) ) + { + lcd.print(c); + pstr++; + if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--; + } + lcd.print(':'); + while(n--) + lcd.print(' '); + lcd_printPGM(data); +} +#define lcd_implementation_drawmenu_setting_edit_int3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_int3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float32_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float32(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float52_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float52(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr52(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float51_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr51(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float51(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr51(*(data))) +#define lcd_implementation_drawmenu_setting_edit_long5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_long5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_bool_selected(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) +#define lcd_implementation_drawmenu_setting_edit_bool(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) + +//Add version for callback functions +#define lcd_implementation_drawmenu_setting_edit_callback_int3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_int3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float32_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float32(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float52_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float52(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr52(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float51_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr51(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float51(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr51(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_long5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_long5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_bool_selected(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) +#define lcd_implementation_drawmenu_setting_edit_callback_bool(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF)) + + +void lcd_implementation_drawedit(const char* pstr, char* value) +{ + lcd.setCursor(1, 1); + lcd_printPGM(pstr); + lcd.print(':'); + #if LCD_WIDTH < 20 + lcd.setCursor(LCD_WIDTH - lcd_strlen(value), 1); + #else + lcd.setCursor(LCD_WIDTH -1 - lcd_strlen(value), 1); + #endif + lcd.print(value); +} +static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char* pstr, const char* filename, char* longFilename) +{ + char c; + uint8_t n = LCD_WIDTH - 1; + lcd.setCursor(0, row); + lcd.print('>'); + if (longFilename[0] != '\0') + { + filename = longFilename; + longFilename[LCD_WIDTH-1] = '\0'; + } + while( ((c = *filename) != '\0') && (n>0) ) + { + lcd.print(c); + filename++; + n--; + } + while(n--) + lcd.print(' '); +} +static void lcd_implementation_drawmenu_sdfile(uint8_t row, const char* pstr, const char* filename, char* longFilename) +{ + char c; + uint8_t n = LCD_WIDTH - 1; + lcd.setCursor(0, row); + lcd.print(' '); + if (longFilename[0] != '\0') + { + filename = longFilename; + longFilename[LCD_WIDTH-1] = '\0'; + } + while( ((c = *filename) != '\0') && (n>0) ) + { + lcd.print(c); + filename++; + n--; + } + while(n--) + lcd.print(' '); +} +static void lcd_implementation_drawmenu_sddirectory_selected(uint8_t row, const char* pstr, const char* filename, char* longFilename) +{ + char c; + uint8_t n = LCD_WIDTH - 2; + lcd.setCursor(0, row); + lcd.print('>'); + lcd.print(LCD_STR_FOLDER[0]); + if (longFilename[0] != '\0') + { + filename = longFilename; + longFilename[LCD_WIDTH-2] = '\0'; + } + while( ((c = *filename) != '\0') && (n>0) ) + { + lcd.print(c); + filename++; + n--; + } + while(n--) + lcd.print(' '); +} +static void lcd_implementation_drawmenu_sddirectory(uint8_t row, const char* pstr, const char* filename, char* longFilename) +{ + char c; + uint8_t n = LCD_WIDTH - 2; + lcd.setCursor(0, row); + lcd.print(' '); + lcd.print(LCD_STR_FOLDER[0]); + if (longFilename[0] != '\0') + { + filename = longFilename; + longFilename[LCD_WIDTH-2] = '\0'; + } + while( ((c = *filename) != '\0') && (n>0) ) + { + lcd.print(c); + filename++; + n--; + } + while(n--) + lcd.print(' '); +} +#define lcd_implementation_drawmenu_back_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0]) +#define lcd_implementation_drawmenu_back(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', LCD_STR_UPLEVEL[0]) +#define lcd_implementation_drawmenu_submenu_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', LCD_STR_ARROW_RIGHT[0]) +#define lcd_implementation_drawmenu_submenu(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', LCD_STR_ARROW_RIGHT[0]) +#define lcd_implementation_drawmenu_gcode_selected(row, pstr, gcode) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ') +#define lcd_implementation_drawmenu_gcode(row, pstr, gcode) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ') +#define lcd_implementation_drawmenu_function_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ') +#define lcd_implementation_drawmenu_function(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ') + +static void lcd_implementation_quick_feedback() +{ + #ifdef LCD_USE_I2C_BUZZER + #if defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS) && defined(LCD_FEEDBACK_FREQUENCY_HZ) + lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ); + #else + lcd_buzz(1000/6, 100); + #endif + #elif defined(BEEPER) && BEEPER > -1 + SET_OUTPUT(BEEPER); + #if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS) + const unsigned int delay = 100; + uint8_t i = 10; + #else + const unsigned int delay = 1000000 / LCD_FEEDBACK_FREQUENCY_HZ / 2; + int8_t i = LCD_FEEDBACK_FREQUENCY_DURATION_MS * LCD_FEEDBACK_FREQUENCY_HZ / 1000; + #endif + while (i--) { + WRITE(BEEPER,HIGH); + delayMicroseconds(delay); + WRITE(BEEPER,LOW); + delayMicroseconds(delay); + } + #endif +} + +#ifdef LCD_HAS_STATUS_INDICATORS +static void lcd_implementation_update_indicators() +{ + #if defined(LCD_I2C_PANELOLU2) || defined(LCD_I2C_VIKI) + //set the LEDS - referred to as backlights by the LiquidTWI2 library + static uint8_t ledsprev = 0; + uint8_t leds = 0; + if (target_temperature_bed > 0) leds |= LED_A; + if (target_temperature[0] > 0) leds |= LED_B; + if (fanSpeed) leds |= LED_C; + #if EXTRUDERS > 1 + if (target_temperature[1] > 0) leds |= LED_C; + #endif + if (leds != ledsprev) { + lcd.setBacklight(leds); + ledsprev = leds; + } + #endif +} +#endif + +#ifdef LCD_HAS_SLOW_BUTTONS +extern uint32_t blocking_enc; + +static uint8_t lcd_implementation_read_slow_buttons() +{ + #ifdef LCD_I2C_TYPE_MCP23017 + uint8_t slow_buttons; + // Reading these buttons this is likely to be too slow to call inside interrupt context + // so they are called during normal lcd_update + slow_buttons = lcd.readButtons() << B_I2C_BTN_OFFSET; + #if defined(LCD_I2C_VIKI) + if(slow_buttons & (B_MI|B_RI)) { //LCD clicked + if(blocking_enc > millis()) { + slow_buttons &= ~(B_MI|B_RI); // Disable LCD clicked buttons if screen is updated + } + } + #endif + return slow_buttons; + #endif +} +#endif + +#endif //__ULTRALCD_IMPLEMENTATION_HITACHI_HD44780_H diff --git a/Marlin/ultralcd_st7920_u8glib_rrd.h b/Marlin/ultralcd_st7920_u8glib_rrd.h new file mode 100644 index 000000000..f95431a25 --- /dev/null +++ b/Marlin/ultralcd_st7920_u8glib_rrd.h @@ -0,0 +1,128 @@ +#ifndef ULCDST7920_H +#define ULCDST7920_H + +#include "Marlin.h" + +#ifdef U8GLIB_ST7920 + +//set optimization so ARDUINO optimizes this file +#pragma GCC optimize (3) + +#define ST7920_CLK_PIN LCD_PINS_D4 +#define ST7920_DAT_PIN LCD_PINS_ENABLE +#define ST7920_CS_PIN LCD_PINS_RS + +//#define PAGE_HEIGHT 8 //128 byte framebuffer +//#define PAGE_HEIGHT 16 //256 byte framebuffer +#define PAGE_HEIGHT 32 //512 byte framebuffer + +#define WIDTH 128 +#define HEIGHT 64 + +#include + +static void ST7920_SWSPI_SND_8BIT(uint8_t val) +{ + uint8_t i; + for( i=0; i<8; i++ ) + { + WRITE(ST7920_CLK_PIN,0); + WRITE(ST7920_DAT_PIN,val&0x80); + val<<=1; + WRITE(ST7920_CLK_PIN,1); + } +} + +#define ST7920_CS() {WRITE(ST7920_CS_PIN,1);u8g_10MicroDelay();} +#define ST7920_NCS() {WRITE(ST7920_CS_PIN,0);} +#define ST7920_SET_CMD() {ST7920_SWSPI_SND_8BIT(0xf8);u8g_10MicroDelay();} +#define ST7920_SET_DAT() {ST7920_SWSPI_SND_8BIT(0xfa);u8g_10MicroDelay();} +#define ST7920_WRITE_BYTE(a) {ST7920_SWSPI_SND_8BIT((a)&0xf0);ST7920_SWSPI_SND_8BIT((a)<<4);u8g_10MicroDelay();} +#define ST7920_WRITE_BYTES(p,l) {uint8_t i;for(i=0;idev_mem); + y = pb->p.page_y0; + ptr = (uint8_t*)pb->buf; + + ST7920_CS(); + for( i = 0; i < PAGE_HEIGHT; i ++ ) + { + ST7920_SET_CMD(); + if ( y < 32 ) + { + ST7920_WRITE_BYTE(0x80 | y); //y + ST7920_WRITE_BYTE(0x80); //x=0 + } + else + { + ST7920_WRITE_BYTE(0x80 | (y-32)); //y + ST7920_WRITE_BYTE(0x80 | 8); //x=64 + } + + ST7920_SET_DAT(); + ST7920_WRITE_BYTES(ptr,WIDTH/8); //ptr is incremented inside of macro + y++; + } + ST7920_NCS(); + } + break; + } +#if PAGE_HEIGHT == 8 + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +#elif PAGE_HEIGHT == 16 + return u8g_dev_pb16h1_base_fn(u8g, dev, msg, arg); +#else + return u8g_dev_pb32h1_base_fn(u8g, dev, msg, arg); +#endif +} + +uint8_t u8g_dev_st7920_128x64_rrd_buf[WIDTH*(PAGE_HEIGHT/8)] U8G_NOCOMMON; +u8g_pb_t u8g_dev_st7920_128x64_rrd_pb = {{PAGE_HEIGHT,HEIGHT,0,0,0},WIDTH,u8g_dev_st7920_128x64_rrd_buf}; +u8g_dev_t u8g_dev_st7920_128x64_rrd_sw_spi = {u8g_dev_rrd_st7920_128x64_fn,&u8g_dev_st7920_128x64_rrd_pb,&u8g_com_null_fn}; + +class U8GLIB_ST7920_128X64_RRD : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_RRD(uint8_t dummy) : U8GLIB(&u8g_dev_st7920_128x64_rrd_sw_spi) {} +}; + + +#endif //U8GLIB_ST7920 +#endif //ULCDST7920_H diff --git a/Marlin/vector_3.cpp b/Marlin/vector_3.cpp new file mode 100644 index 000000000..5f1c294ed --- /dev/null +++ b/Marlin/vector_3.cpp @@ -0,0 +1,167 @@ +/* + vector_3.cpp - Vector library for bed leveling + Copyright (c) 2012 Lars Brubaker. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include +#include "Marlin.h" + +#ifdef ENABLE_AUTO_BED_LEVELING +#include "vector_3.h" + +vector_3::vector_3() : x(0), y(0), z(0) { } + +vector_3::vector_3(float x_, float y_, float z_) : x(x_), y(y_), z(z_) { } + +vector_3 vector_3::cross(vector_3 left, vector_3 right) +{ + return vector_3(left.y * right.z - left.z * right.y, + left.z * right.x - left.x * right.z, + left.x * right.y - left.y * right.x); +} + +vector_3 vector_3::operator+(vector_3 v) +{ + return vector_3((x + v.x), (y + v.y), (z + v.z)); +} + +vector_3 vector_3::operator-(vector_3 v) +{ + return vector_3((x - v.x), (y - v.y), (z - v.z)); +} + +vector_3 vector_3::get_normal() +{ + vector_3 normalized = vector_3(x, y, z); + normalized.normalize(); + return normalized; +} + +float vector_3::get_length() +{ + float length = sqrt((x * x) + (y * y) + (z * z)); + return length; +} + +void vector_3::normalize() +{ + float length = get_length(); + x /= length; + y /= length; + z /= length; +} + +void vector_3::apply_rotation(matrix_3x3 matrix) +{ + float resultX = x * matrix.matrix[3*0+0] + y * matrix.matrix[3*1+0] + z * matrix.matrix[3*2+0]; + float resultY = x * matrix.matrix[3*0+1] + y * matrix.matrix[3*1+1] + z * matrix.matrix[3*2+1]; + float resultZ = x * matrix.matrix[3*0+2] + y * matrix.matrix[3*1+2] + z * matrix.matrix[3*2+2]; + + x = resultX; + y = resultY; + z = resultZ; +} + +void vector_3::debug(char* title) +{ + SERIAL_PROTOCOL(title); + SERIAL_PROTOCOLPGM(" x: "); + SERIAL_PROTOCOL(x); + SERIAL_PROTOCOLPGM(" y: "); + SERIAL_PROTOCOL(y); + SERIAL_PROTOCOLPGM(" z: "); + SERIAL_PROTOCOL(z); + SERIAL_PROTOCOLPGM("\n"); +} + +void apply_rotation_xyz(matrix_3x3 matrix, float &x, float& y, float& z) +{ + vector_3 vector = vector_3(x, y, z); + vector.apply_rotation(matrix); + x = vector.x; + y = vector.y; + z = vector.z; +} + +matrix_3x3 matrix_3x3::create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2) +{ + //row_0.debug("row_0"); + //row_1.debug("row_1"); + //row_2.debug("row_2"); + matrix_3x3 new_matrix; + new_matrix.matrix[0] = row_0.x; new_matrix.matrix[1] = row_0.y; new_matrix.matrix[2] = row_0.z; + new_matrix.matrix[3] = row_1.x; new_matrix.matrix[4] = row_1.y; new_matrix.matrix[5] = row_1.z; + new_matrix.matrix[6] = row_2.x; new_matrix.matrix[7] = row_2.y; new_matrix.matrix[8] = row_2.z; + //new_matrix.debug("new_matrix"); + + return new_matrix; +} + +void matrix_3x3::set_to_identity() +{ + matrix[0] = 1; matrix[1] = 0; matrix[2] = 0; + matrix[3] = 0; matrix[4] = 1; matrix[5] = 0; + matrix[6] = 0; matrix[7] = 0; matrix[8] = 1; +} + +matrix_3x3 matrix_3x3::create_look_at(vector_3 target) +{ + vector_3 z_row = target.get_normal(); + vector_3 x_row = vector_3(1, 0, -target.x/target.z).get_normal(); + vector_3 y_row = vector_3::cross(z_row, x_row).get_normal(); + + // x_row.debug("x_row"); + // y_row.debug("y_row"); + // z_row.debug("z_row"); + + + // create the matrix already correctly transposed + matrix_3x3 rot = matrix_3x3::create_from_rows(x_row, y_row, z_row); + + // rot.debug("rot"); + return rot; +} + + +matrix_3x3 matrix_3x3::transpose(matrix_3x3 original) +{ + matrix_3x3 new_matrix; + new_matrix.matrix[0] = original.matrix[0]; new_matrix.matrix[1] = original.matrix[3]; new_matrix.matrix[2] = original.matrix[6]; + new_matrix.matrix[3] = original.matrix[1]; new_matrix.matrix[4] = original.matrix[4]; new_matrix.matrix[5] = original.matrix[7]; + new_matrix.matrix[6] = original.matrix[2]; new_matrix.matrix[7] = original.matrix[5]; new_matrix.matrix[8] = original.matrix[8]; + return new_matrix; +} + +void matrix_3x3::debug(char* title) +{ + SERIAL_PROTOCOL(title); + SERIAL_PROTOCOL("\n"); + int count = 0; + for(int i=0; i<3; i++) + { + for(int j=0; j<3; j++) + { + SERIAL_PROTOCOL(matrix[count]); + SERIAL_PROTOCOLPGM(" "); + count++; + } + + SERIAL_PROTOCOLPGM("\n"); + } +} + +#endif // #ifdef ENABLE_AUTO_BED_LEVELING + diff --git a/Marlin/vector_3.h b/Marlin/vector_3.h new file mode 100644 index 000000000..0b9decafa --- /dev/null +++ b/Marlin/vector_3.h @@ -0,0 +1,62 @@ +/* + vector_3.cpp - Vector library for bed leveling + Copyright (c) 2012 Lars Brubaker. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#ifndef VECTOR_3_H +#define VECTOR_3_H + +#ifdef ENABLE_AUTO_BED_LEVELING +class matrix_3x3; + +struct vector_3 +{ + float x, y, z; + + vector_3(); + vector_3(float x, float y, float z); + + static vector_3 cross(vector_3 a, vector_3 b); + + vector_3 operator+(vector_3 v); + vector_3 operator-(vector_3 v); + void normalize(); + float get_length(); + vector_3 get_normal(); + + void debug(char* title); + + void apply_rotation(matrix_3x3 matrix); +}; + +struct matrix_3x3 +{ + float matrix[9]; + + static matrix_3x3 create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2); + static matrix_3x3 create_look_at(vector_3 target); + static matrix_3x3 transpose(matrix_3x3 original); + + void set_to_identity(); + + void debug(char* title); +}; + + +void apply_rotation_xyz(matrix_3x3 rotationMatrix, float &x, float& y, float& z); +#endif // ENABLE_AUTO_BED_LEVELING + +#endif // VECTOR_3_H diff --git a/Marlin/watchdog.cpp b/Marlin/watchdog.cpp new file mode 100644 index 000000000..b378ca706 --- /dev/null +++ b/Marlin/watchdog.cpp @@ -0,0 +1,56 @@ +#include "Marlin.h" + +#ifdef USE_WATCHDOG +#include + +#include "watchdog.h" +#include "ultralcd.h" + +//=========================================================================== +//=============================private variables ============================ +//=========================================================================== + +//=========================================================================== +//=============================functinos ============================ +//=========================================================================== + + +/// intialise watch dog with a 4 sec interrupt time +void watchdog_init() +{ +#ifdef WATCHDOG_RESET_MANUAL + //We enable the watchdog timer, but only for the interrupt. + //Take care, as this requires the correct order of operation, with interrupts disabled. See the datasheet of any AVR chip for details. + wdt_reset(); + _WD_CONTROL_REG = _BV(_WD_CHANGE_BIT) | _BV(WDE); + _WD_CONTROL_REG = _BV(WDIE) | WDTO_4S; +#else + wdt_enable(WDTO_4S); +#endif +} + +/// reset watchdog. MUST be called every 1s after init or avr will reset. +void watchdog_reset() +{ + wdt_reset(); +} + +//=========================================================================== +//=============================ISR ============================ +//=========================================================================== + +//Watchdog timer interrupt, called if main program blocks >1sec and manual reset is enabled. +#ifdef WATCHDOG_RESET_MANUAL +ISR(WDT_vect) +{ + //TODO: This message gets overwritten by the kill() call + LCD_ALERTMESSAGEPGM("ERR:Please Reset");//16 characters so it fits on a 16x2 display + lcd_update(); + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM("Something is wrong, please turn off the printer."); + kill(); //kill blocks + while(1); //wait for user or serial reset +} +#endif//RESET_MANUAL + +#endif//USE_WATCHDOG diff --git a/Marlin/watchdog.h b/Marlin/watchdog.h new file mode 100644 index 000000000..a73f3a846 --- /dev/null +++ b/Marlin/watchdog.h @@ -0,0 +1,17 @@ +#ifndef WATCHDOG_H +#define WATCHDOG_H + +#include "Marlin.h" + +#ifdef USE_WATCHDOG + // initialize watch dog with a 1 sec interrupt time + void watchdog_init(); + // pad the dog/reset watchdog. MUST be called at least every second after the first watchdog_init or AVR will go into emergency procedures.. + void watchdog_reset(); +#else + //If we do not have a watchdog, then we can have empty functions which are optimized away. + FORCE_INLINE void watchdog_init() {}; + FORCE_INLINE void watchdog_reset() {}; +#endif + +#endif diff --git a/README b/README deleted file mode 100644 index f93900133..000000000 --- a/README +++ /dev/null @@ -1,87 +0,0 @@ -A new beta version is avaiable. -Look under the Marlin_v1 branch. We also made a tag that you can download. - - - - - - - - - - - - - - - -This firmware is a mashup between Sprinter, grbl and many original parts. - (https://github.com/kliment/Sprinter) - (https://github.com/simen/grbl/tree) - -Features: - - Interrupt based movement with real linear acceleration - - High steprate - - Look ahead (Keep the speed high when possible. High cornering speed) - - Interrupt based temperature protection - - preliminary support for Matthew Roberts advance algorithm - For more info see: http://reprap.org/pipermail/reprap-dev/2011-May/003323.html - -This firmware is optimized for gen6 electronics. - -The default baudrate is 250000. -This gives less communication errors then regular baudrates. - -======================================================================================== - -Configuring and compilation - - -Install the arduino software version 0018 - http://www.arduino.cc/en/Main/Software - -Install the sanguino software, version 0018 - http://sanguino.cc/useit - -Install pronterface - https://github.com/kliment/Printrun - -Copy the Marlin firmware - https:/github.com/ErikZalm/Marlin - (Use the download button) - -Start the arduino IDE. -Select Tools -> Board -> Sanguino -Select the correct serial port in Tools ->Serial Port -Open Marlin.pde - -Change the printer specific setting in Configuration.h to the correct values. - -The following values are the most important: - - float axis_steps_per_unit[].... // Set the correct steps / mm in the corresponding field - - const bool ENDSTOPS_INVERTING = false; // Change if only positive moves are executed - - #define INVERT_x_DIR true // Change if the motor direction is wrong - -Click the Upload button -If all goes well the firmware is uploading - -Start pronterface - -Select the correct Serial Port. Type 250000 in the baudrate field. -Press the Connect button - -=============================================================================================== -Known issues - -On some systems we get compilation errors. - -This is caused by the "wiring_serial.c" and "wiring.c". -The simple fix is to delete these files but this may have a performance impact. - -The best workaround is to move these files to sanguino directory. -(".../arduino-0018/hardware/Sanguino/cores/arduino/" on windows systems) - - - - - diff --git a/README.md b/README.md new file mode 100644 index 000000000..c804d53b0 --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ +# Marlin 3D Printer Firmware + + + * [Configuration & Compilation](/Documentation/Compilation.md) + * Supported + * [Features](/Documentation/Features.md) + * [Hardware](/Documentation/Hardware.md) + * [GCodes](/Documentation/GCodes.md) + * Notes + * [Auto Bed Leveling](/Documentation/BedLeveling.md) + * [Filament Sensor](/Documentation/FilamentSensor.md) + * [Ramps Servo Power](/Documentation/RampsServoPower.md) + +##### [RepRap.org Wiki Page](http://reprap.org/wiki/Marlin) + +## Quick Information + +This is a firmware for reprap single-processor electronics setups. +It also works on the Ultimaker PCB. It supports printing from SD card+Folders, and look-ahead trajectory planning. +This firmware is a mashup between [Sprinter](https://github.com/kliment/Sprinter), [grbl](https://github.com/simen/grbl) and many original parts. + +## Current Status: Bug Fixing + +The Marlin development is currently revived. There's a long list of reported issues and pull requests, which we are working on currently. +We are actively looking for testers. So please try the current development version and report new issues and feedback. + +[![Coverity Scan Build Status](https://scan.coverity.com/projects/2224/badge.svg)](https://scan.coverity.com/projects/2224) +[![Travis Build Status](https://travis-ci.org/MarlinFirmware/Marlin.svg)](https://travis-ci.org/MarlinFirmware/Marlin) + +What bugs are we working on: [Bug Fixing Round 2](https://github.com/MarlinFirmware/Marlin/milestones/Bug%20Fixing%20Round%202) + +## Contact + +__IRC:__ #marlin-firmware @freenode ([WebChat Client](https://webchat.freenode.net/?channels=marlin-firmware), [Archive](http://energymonitor-dk.dns4e.net/marlin-firmware-log/)) + +__Mailing List:__ marlin@lists.0l.de ([Subscribe](http://lists.0l.de/mailman/listinfo/marlin), [Archive](http://lists.0l.de/pipermail/marlin/)) + +## Credits + +The current Marlin dev team consists of: + + - Erik van der Zalm ([@ErikZalm](https://github.com/ErikZalm)) + - [@daid](https://github.com/daid) + +Sprinters lead developers are Kliment and caru. +Grbls lead developer is Simen Svale Skogsrud. +Sonney Jeon (Chamnit) improved some parts of grbl +A fork by bkubicek for the Ultimaker was merged. + +More features have been added by: + - Lampmaker, + - Bradley Feldman, + - and others... + +## Licence + +Marlin is published unde the [GPL license](/Documentation/COPYING.md) because I believe in open development. +Please do not use this code in products (3D printers, CNC etc) that are closed source or are crippled by a patent. + +[![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software)